From 3a921df015573f03469596d3d1ebf740f70a2ce3 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 11 Feb 2019 01:14:28 +0100 Subject: [PATCH] Upgrade to v0.17.9 --- riot/bundles/c2932262ed6106cd4535/0.js | 2 + riot/bundles/c2932262ed6106cd4535/0.js.map | 1 + riot/bundles/c2932262ed6106cd4535/1.js | 3 + riot/bundles/c2932262ed6106cd4535/1.js.map | 1 + riot/bundles/c2932262ed6106cd4535/10.js | 2 + riot/bundles/c2932262ed6106cd4535/10.js.map | 1 + riot/bundles/c2932262ed6106cd4535/11.js | 2 + riot/bundles/c2932262ed6106cd4535/11.js.map | 1 + riot/bundles/c2932262ed6106cd4535/12.js | 2 + riot/bundles/c2932262ed6106cd4535/12.js.map | 1 + riot/bundles/c2932262ed6106cd4535/13.js | 2 + riot/bundles/c2932262ed6106cd4535/13.js.map | 1 + riot/bundles/c2932262ed6106cd4535/2.js | 3 + riot/bundles/c2932262ed6106cd4535/2.js.map | 1 + riot/bundles/c2932262ed6106cd4535/3.js | 2 + riot/bundles/c2932262ed6106cd4535/3.js.map | 1 + .../bundle.css | 0 .../bundle.css.map | 2 +- riot/bundles/c2932262ed6106cd4535/bundle.js | 115 + .../bundle.js.map | 2 +- .../c2932262ed6106cd4535/indexeddb-worker.js | 2 + .../indexeddb-worker.js.map | 1 + .../c2932262ed6106cd4535/mobileguide.js | 2 + .../c2932262ed6106cd4535/mobileguide.js.map | 1 + .../theme-dark.css | 1809 ++++++++-------- .../theme-dark.css.map | 2 +- .../theme-dark.js | 2 +- .../theme-dark.js.map | 2 +- .../theme-light.css | 1797 ++++++++-------- .../theme-light.css.map | 2 +- .../theme-light.js | 2 +- .../theme-light.js.map | 2 +- .../theme-status.css | 1888 ++++++++--------- .../theme-status.css.map | 2 +- .../theme-status.js | 2 +- .../theme-status.js.map | 2 +- riot/bundles/f5c70ee9a294f6e4590e/7.js | 2 - riot/bundles/f5c70ee9a294f6e4590e/7.js.map | 1 - riot/bundles/f5c70ee9a294f6e4590e/8.js | 2 - riot/bundles/f5c70ee9a294f6e4590e/8.js.map | 1 - riot/bundles/f5c70ee9a294f6e4590e/bundle.js | 115 - .../f5c70ee9a294f6e4590e/indexeddb-worker.js | 2 - .../indexeddb-worker.js.map | 1 - .../f5c70ee9a294f6e4590e/mobileguide.js | 2 - .../f5c70ee9a294f6e4590e/mobileguide.js.map | 1 - riot/bundles/f5c70ee9a294f6e4590e/olm.js | 2 - riot/bundles/f5c70ee9a294f6e4590e/olm.js.map | 1 - .../vendors~e2e-export.js | 3 - .../vendors~e2e-export.js.map | 1 - riot/i18n/bg.json | 8 + riot/i18n/de_DE.json | 64 + riot/i18n/en_EN.json | 246 ++- riot/i18n/en_US.json | 42 + riot/i18n/eo.json | 21 +- riot/i18n/eu.json | 86 + riot/i18n/fr.json | 142 +- riot/i18n/hu.json | 115 + riot/i18n/it.json | 7 + riot/i18n/ja.json | 1387 ++++++++++++ riot/i18n/languages.json | 4 + riot/i18n/pl.json | 75 +- riot/i18n/sv.json | 27 + riot/i18n/te.json | 32 +- riot/i18n/zh_Hans.json | 18 +- riot/i18n/zh_Hant.json | 114 + riot/img/e2e/lock-warning.svg | 1 + riot/img/icons-checkmark.svg | 17 + riot/index.html | 25 +- riot/mobile_guide/index.html | 2 +- riot/olm.wasm | Bin 0 -> 169535 bytes riot/olm_legacy.js | 143 ++ riot/themes/dark/css/_dark.scss | 14 + riot/themes/light/css/_base.scss | 14 + riot/themes/status/css/_status.scss | 1 + riot/version | 2 +- 75 files changed, 5320 insertions(+), 3084 deletions(-) create mode 100644 riot/bundles/c2932262ed6106cd4535/0.js create mode 100644 riot/bundles/c2932262ed6106cd4535/0.js.map create mode 100644 riot/bundles/c2932262ed6106cd4535/1.js create mode 100644 riot/bundles/c2932262ed6106cd4535/1.js.map create mode 100644 riot/bundles/c2932262ed6106cd4535/10.js create mode 100644 riot/bundles/c2932262ed6106cd4535/10.js.map create mode 100644 riot/bundles/c2932262ed6106cd4535/11.js create mode 100644 riot/bundles/c2932262ed6106cd4535/11.js.map create mode 100644 riot/bundles/c2932262ed6106cd4535/12.js create mode 100644 riot/bundles/c2932262ed6106cd4535/12.js.map create mode 100644 riot/bundles/c2932262ed6106cd4535/13.js create mode 100644 riot/bundles/c2932262ed6106cd4535/13.js.map create mode 100644 riot/bundles/c2932262ed6106cd4535/2.js create mode 100644 riot/bundles/c2932262ed6106cd4535/2.js.map create mode 100644 riot/bundles/c2932262ed6106cd4535/3.js create mode 100644 riot/bundles/c2932262ed6106cd4535/3.js.map rename riot/bundles/{f5c70ee9a294f6e4590e => c2932262ed6106cd4535}/bundle.css (100%) rename riot/bundles/{f5c70ee9a294f6e4590e => c2932262ed6106cd4535}/bundle.css.map (55%) create mode 100644 riot/bundles/c2932262ed6106cd4535/bundle.js rename riot/bundles/{f5c70ee9a294f6e4590e => c2932262ed6106cd4535}/bundle.js.map (61%) create mode 100644 riot/bundles/c2932262ed6106cd4535/indexeddb-worker.js create mode 100644 riot/bundles/c2932262ed6106cd4535/indexeddb-worker.js.map create mode 100644 riot/bundles/c2932262ed6106cd4535/mobileguide.js create mode 100644 riot/bundles/c2932262ed6106cd4535/mobileguide.js.map rename riot/bundles/{f5c70ee9a294f6e4590e => c2932262ed6106cd4535}/theme-dark.css (88%) rename riot/bundles/{f5c70ee9a294f6e4590e => c2932262ed6106cd4535}/theme-dark.css.map (53%) rename riot/bundles/{f5c70ee9a294f6e4590e => c2932262ed6106cd4535}/theme-dark.js (91%) rename riot/bundles/{f5c70ee9a294f6e4590e => c2932262ed6106cd4535}/theme-dark.js.map (96%) rename riot/bundles/{f5c70ee9a294f6e4590e => c2932262ed6106cd4535}/theme-light.css (89%) rename riot/bundles/{f5c70ee9a294f6e4590e => c2932262ed6106cd4535}/theme-light.css.map (52%) rename riot/bundles/{f5c70ee9a294f6e4590e => c2932262ed6106cd4535}/theme-light.js (91%) rename riot/bundles/{f5c70ee9a294f6e4590e => c2932262ed6106cd4535}/theme-light.js.map (96%) rename riot/bundles/{f5c70ee9a294f6e4590e => c2932262ed6106cd4535}/theme-status.css (89%) rename riot/bundles/{f5c70ee9a294f6e4590e => c2932262ed6106cd4535}/theme-status.css.map (52%) rename riot/bundles/{f5c70ee9a294f6e4590e => c2932262ed6106cd4535}/theme-status.js (91%) rename riot/bundles/{f5c70ee9a294f6e4590e => c2932262ed6106cd4535}/theme-status.js.map (96%) delete mode 100644 riot/bundles/f5c70ee9a294f6e4590e/7.js delete mode 100644 riot/bundles/f5c70ee9a294f6e4590e/7.js.map delete mode 100644 riot/bundles/f5c70ee9a294f6e4590e/8.js delete mode 100644 riot/bundles/f5c70ee9a294f6e4590e/8.js.map delete mode 100644 riot/bundles/f5c70ee9a294f6e4590e/bundle.js delete mode 100644 riot/bundles/f5c70ee9a294f6e4590e/indexeddb-worker.js delete mode 100644 riot/bundles/f5c70ee9a294f6e4590e/indexeddb-worker.js.map delete mode 100644 riot/bundles/f5c70ee9a294f6e4590e/mobileguide.js delete mode 100644 riot/bundles/f5c70ee9a294f6e4590e/mobileguide.js.map delete mode 100644 riot/bundles/f5c70ee9a294f6e4590e/olm.js delete mode 100644 riot/bundles/f5c70ee9a294f6e4590e/olm.js.map delete mode 100644 riot/bundles/f5c70ee9a294f6e4590e/vendors~e2e-export.js delete mode 100644 riot/bundles/f5c70ee9a294f6e4590e/vendors~e2e-export.js.map create mode 100644 riot/i18n/ja.json create mode 100644 riot/img/e2e/lock-warning.svg create mode 100644 riot/img/icons-checkmark.svg create mode 100644 riot/olm.wasm create mode 100644 riot/olm_legacy.js diff --git a/riot/bundles/c2932262ed6106cd4535/0.js b/riot/bundles/c2932262ed6106cd4535/0.js new file mode 100644 index 0000000..e67c941 --- /dev/null +++ b/riot/bundles/c2932262ed6106cd4535/0.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{486:function(e,r,t){"use strict";function n(e,r,t){return r<=e&&e<=t}function i(e){if(void 0===e)return{};if(e===Object(e))return e;throw TypeError("Could not convert argument to dictionary")}t.r(r),t.d(r,"TextEncoder",function(){return l}),t.d(r,"TextDecoder",function(){return c});var o=-1;function a(e){this.tokens=[].slice.call(e)}a.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.shift():o},prepend:function(e){if(Array.isArray(e))for(var r=e;r.length;)this.tokens.unshift(r.pop());else this.tokens.unshift(e)},push:function(e){if(Array.isArray(e))for(var r=e;r.length;)this.tokens.push(r.shift());else this.tokens.push(e)}};var s=-1;function u(e,r){if(e)throw TypeError("Decoder error");return r||65533}var f="utf-8";function c(e,r){if(!(this instanceof c))return new c(e,r);if((e=void 0!==e?String(e).toLowerCase():f)!==f)throw new Error("Encoding not supported. Only utf-8 is supported");r=i(r),this._streaming=!1,this._BOMseen=!1,this._decoder=null,this._fatal=Boolean(r.fatal),this._ignoreBOM=Boolean(r.ignoreBOM),Object.defineProperty(this,"encoding",{value:"utf-8"}),Object.defineProperty(this,"fatal",{value:this._fatal}),Object.defineProperty(this,"ignoreBOM",{value:this._ignoreBOM})}function l(e,r){if(!(this instanceof l))return new l(e,r);if((e=void 0!==e?String(e).toLowerCase():f)!==f)throw new Error("Encoding not supported. Only utf-8 is supported");r=i(r),this._streaming=!1,this._encoder=null,this._options={fatal:Boolean(r.fatal)},Object.defineProperty(this,"encoding",{value:"utf-8"})}c.prototype={decode:function(e,r){var t;t="object"==typeof e&&e instanceof ArrayBuffer?new Uint8Array(e):"object"==typeof e&&"buffer"in e&&e.buffer instanceof ArrayBuffer?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(0),r=i(r),this._streaming||(this._decoder=new function(e){var r=e.fatal,t=0,i=0,a=0,f=128,c=191;this.handler=function(e,l){if(l===o&&0!==a)return a=0,u(r);if(l===o)return s;if(0===a){if(n(l,0,127))return l;if(n(l,194,223))a=1,t=l-192;else if(n(l,224,239))224===l&&(f=160),237===l&&(c=159),a=2,t=l-224;else{if(!n(l,240,244))return u(r);240===l&&(f=144),244===l&&(c=143),a=3,t=l-240}return t<<=6*a,null}if(!n(l,f,c))return t=a=i=0,f=128,c=191,e.prepend(l),u(r);if(f=128,c=191,t+=l-128<<6*(a-(i+=1)),i!==a)return null;var h=t;return t=a=i=0,h}}({fatal:this._fatal}),this._BOMseen=!1),this._streaming=Boolean(r.stream);for(var f,c=new a(t),l=[];!c.endOfStream()&&(f=this._decoder.handler(c,c.read()))!==s;)null!==f&&(Array.isArray(f)?l.push.apply(l,f):l.push(f));if(!this._streaming){do{if((f=this._decoder.handler(c,c.read()))===s)break;null!==f&&(Array.isArray(f)?l.push.apply(l,f):l.push(f))}while(!c.endOfStream());this._decoder=null}return l.length&&(-1===["utf-8"].indexOf(this.encoding)||this._ignoreBOM||this._BOMseen||(65279===l[0]?(this._BOMseen=!0,l.shift()):this._BOMseen=!0)),function(e){for(var r="",t=0;t>10),56320+(1023&n)))}return r}(l)}},l.prototype={encode:function(e,r){e=e?String(e):"",r=i(r),this._streaming||(this._encoder=new function(e){e.fatal;this.handler=function(e,r){if(r===o)return s;if(n(r,0,127))return r;var t,i;n(r,128,2047)?(t=1,i=192):n(r,2048,65535)?(t=2,i=224):n(r,65536,1114111)&&(t=3,i=240);for(var a=[(r>>6*t)+i];t>0;){var u=r>>6*(t-1);a.push(128|63&u),t-=1}return a}}(this._options)),this._streaming=Boolean(r.stream);for(var t,u=[],f=new a(function(e){for(var r=String(e),t=r.length,n=0,i=[];n57343)i.push(o);else if(56320<=o&&o<=57343)i.push(65533);else if(55296<=o&&o<=56319)if(n===t-1)i.push(65533);else{var a=e.charCodeAt(n+1);if(56320<=a&&a<=57343){var s=1023&o,u=1023&a;i.push(65536+(s<<10)+u),n+=1}else i.push(65533)}n+=1}return i}(e));!f.endOfStream()&&(t=this._encoder.handler(f,f.read()))!==s;)Array.isArray(t)?u.push.apply(u,t):u.push(t);if(!this._streaming){for(;(t=this._encoder.handler(f,f.read()))!==s;)Array.isArray(t)?u.push.apply(u,t):u.push(t);this._encoder=null}return new Uint8Array(u)}}},493:function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.encryptMegolmKeyFile=r.decryptMegolmKeyFile=void 0;var n=c(t(61)),i=c(t(17)),o=c(t(118)),a=t(9),s=(r.decryptMegolmKeyFile=function(){var e=(0,a.coroutine)(i.default.mark(function e(r,t){var n,u,c,l,v,w,b,m,A,_,k,x,O,C;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!((n=g(r)).length<1)){e.next=3;break}throw p("Invalid file: too short",(0,f._t)("Not a valid Riot keyfile"));case 3:if(1===n[0]){e.next=6;break}throw p("Unsupported version",(0,f._t)("Not a valid Riot keyfile"));case 6:if(!((u=n.length-69)<0)){e.next=9;break}throw p("Invalid file: too short",(0,f._t)("Not a valid Riot keyfile"));case 9:return c=n.subarray(1,17),l=n.subarray(17,33),v=n[33]<<24|n[34]<<16|n[35]<<8|n[36],w=n.subarray(37,37+u),b=n.subarray(-32),e.next=16,(0,a.resolve)(s(c,v,t));case 16:return m=e.sent,A=(0,o.default)(m,2),_=A[0],k=A[1],x=n.subarray(0,-32),O=void 0,e.prev=22,e.next=25,(0,a.resolve)(d.verify({name:"HMAC"},k,b,x));case 25:O=e.sent,e.next=31;break;case 28:throw e.prev=28,e.t0=e.catch(22),p("subtleCrypto.verify failed: "+e.t0,y());case 31:if(O){e.next=33;break}throw p("hmac mismatch",(0,f._t)("Authentication check failed: incorrect password?"));case 33:return C=void 0,e.prev=34,e.next=37,(0,a.resolve)(d.decrypt({name:"AES-CTR",counter:l,length:64},_,w));case 37:C=e.sent,e.next=43;break;case 40:throw e.prev=40,e.t1=e.catch(34),p("subtleCrypto.decrypt failed: "+e.t1,y());case 43:return e.abrupt("return",(new h).decode(new Uint8Array(C)));case 44:case"end":return e.stop()}},e,this,[[22,28],[34,40]])}));return function(r,t){return e.apply(this,arguments)}}(),r.encryptMegolmKeyFile=function(){var e=(0,a.coroutine)(i.default.mark(function e(r,t,n){var u,f,c,h,v,w,g,m,A,_,k,x,O,C,M,S;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return u=(n=n||{}).kdf_rounds||5e5,f=new Uint8Array(16),window.crypto.getRandomValues(f),c=new Uint8Array(16),window.crypto.getRandomValues(c),c[9]&=127,e.next=9,(0,a.resolve)(s(f,u,t));case 9:return h=e.sent,v=(0,o.default)(h,2),w=v[0],g=v[1],m=(new l).encode(r),A=void 0,e.prev=15,e.next=18,(0,a.resolve)(d.encrypt({name:"AES-CTR",counter:c,length:64},w,m));case 18:A=e.sent,e.next=24;break;case 21:throw e.prev=21,e.t0=e.catch(15),p("subtleCrypto.encrypt failed: "+e.t0,y());case 24:return _=new Uint8Array(A),k=1+f.length+c.length+4+_.length+32,x=new Uint8Array(k),O=0,x[O++]=1,x.set(f,O),O+=f.length,x.set(c,O),O+=c.length,x[O++]=u>>24,x[O++]=u>>16&255,x[O++]=u>>8&255,x[O++]=255&u,x.set(_,O),O+=_.length,C=x.subarray(0,O),M=void 0,e.prev=41,e.next=44,(0,a.resolve)(d.sign({name:"HMAC"},g,C));case 44:M=e.sent,e.next=50;break;case 47:throw e.prev=47,e.t1=e.catch(41),p("subtleCrypto.sign failed: "+e.t1,y());case 50:return S=new Uint8Array(M),x.set(S,O),e.abrupt("return",b(x));case 53:case"end":return e.stop()}},e,this,[[15,21],[41,47]])}));return function(r,t,n){return e.apply(this,arguments)}}(),function(){var e=(0,a.coroutine)(i.default.mark(function e(r,t,o){var s,u,f,c,h,v,w,g;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s=new Date,u=void 0,e.prev=2,e.next=5,(0,a.resolve)(d.importKey("raw",(new l).encode(o),{name:"PBKDF2"},!1,["deriveBits"]));case 5:u=e.sent,e.next=11;break;case 8:throw e.prev=8,e.t0=e.catch(2),p("subtleCrypto.importKey failed: "+e.t0,y());case 11:return f=void 0,e.prev=12,e.next=15,(0,a.resolve)(d.deriveBits({name:"PBKDF2",salt:r,iterations:t,hash:"SHA-512"},u,512));case 15:f=e.sent,e.next=21;break;case 18:throw e.prev=18,e.t1=e.catch(12),p("subtleCrypto.deriveBits failed: "+e.t1,y());case 21:return c=new Date,console.log("E2e import/export: deriveKeys took "+(c-s)+"ms"),h=f.slice(0,32),v=f.slice(32),w=d.importKey("raw",h,{name:"AES-CTR"},!1,["encrypt","decrypt"]).catch(function(e){throw p("subtleCrypto.importKey failed for AES key: "+e,y())}),g=d.importKey("raw",v,{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign","verify"]).catch(function(e){throw p("subtleCrypto.importKey failed for HMAC key: "+e,y())}),e.next=29,(0,a.resolve)(n.default.all([w,g]));case 29:return e.abrupt("return",e.sent);case 30:case"end":return e.stop()}},e,this,[[2,8],[12,18]])}));return function(r,t,n){return e.apply(this,arguments)}}()),u=function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t]);return r.default=e,r}(t(486)),f=t(2);function c(e){return e&&e.__esModule?e:{default:e}}var l=window.TextEncoder;l||(l=u.TextEncoder);var h=window.TextDecoder;h||(h=u.TextDecoder);var d=window.crypto.subtle||window.crypto.webkitSubtle;function p(e,r){var t=new Error(e);return t.friendlyText=r,t}function y(){return(0,f._t)("Your browser does not support the required cryptography extensions")}var v="-----BEGIN MEGOLM SESSION DATA-----",w="-----END MEGOLM SESSION DATA-----";function g(e){for(var r=(new h).decode(new Uint8Array(e)),t=0;;){var n=r.indexOf("\n",t);if(n<0)throw new Error("Header line not found");var i=r.slice(t,n).trim();if(t=n+1,i===v)break}for(var o=t;;){var a=r.indexOf("\n",t);if(r.slice(t,a<0?void 0:a).trim()===w)break;if(a<0)throw new Error("Trailer line not found");t=a+1}var s=t;return function(e){for(var r=window.atob(e),t=new Uint8Array(r.length),n=0;n= min and a <= max.\n */\nfunction inRange(a, min, max) {\n return min <= a && a <= max;\n}\n\n/**\n * @param {*} o\n * @return {Object}\n */\nfunction ToDictionary(o) {\n if (o === undefined) return {};\n if (o === Object(o)) return o;\n throw TypeError('Could not convert argument to dictionary');\n}\n\n/**\n * @param {string} string Input string of UTF-16 code units.\n * @return {!Array.} Code points.\n */\nfunction stringToCodePoints(string) {\n // https://heycam.github.io/webidl/#dfn-obtain-unicode\n\n // 1. Let S be the DOMString value.\n var s = String(string);\n\n // 2. Let n be the length of S.\n var n = s.length;\n\n // 3. Initialize i to 0.\n var i = 0;\n\n // 4. Initialize U to be an empty sequence of Unicode characters.\n var u = [];\n\n // 5. While i < n:\n while (i < n) {\n\n // 1. Let c be the code unit in S at index i.\n var c = s.charCodeAt(i);\n\n // 2. Depending on the value of c:\n\n // c < 0xD800 or c > 0xDFFF\n if (c < 0xD800 || c > 0xDFFF) {\n // Append to U the Unicode character with code point c.\n u.push(c);\n }\n\n // 0xDC00 ≤ c ≤ 0xDFFF\n else if (0xDC00 <= c && c <= 0xDFFF) {\n // Append to U a U+FFFD REPLACEMENT CHARACTER.\n u.push(0xFFFD);\n }\n\n // 0xD800 ≤ c ≤ 0xDBFF\n else if (0xD800 <= c && c <= 0xDBFF) {\n // 1. If i = n−1, then append to U a U+FFFD REPLACEMENT\n // CHARACTER.\n if (i === n - 1) {\n u.push(0xFFFD);\n }\n // 2. Otherwise, i < n−1:\n else {\n // 1. Let d be the code unit in S at index i+1.\n var d = string.charCodeAt(i + 1);\n\n // 2. If 0xDC00 ≤ d ≤ 0xDFFF, then:\n if (0xDC00 <= d && d <= 0xDFFF) {\n // 1. Let a be c & 0x3FF.\n var a = c & 0x3FF;\n\n // 2. Let b be d & 0x3FF.\n var b = d & 0x3FF;\n\n // 3. Append to U the Unicode character with code point\n // 2^16+2^10*a+b.\n u.push(0x10000 + (a << 10) + b);\n\n // 4. Set i to i+1.\n i += 1;\n }\n\n // 3. Otherwise, d < 0xDC00 or d > 0xDFFF. Append to U a\n // U+FFFD REPLACEMENT CHARACTER.\n else {\n u.push(0xFFFD);\n }\n }\n }\n\n // 3. Set i to i+1.\n i += 1;\n }\n\n // 6. Return U.\n return u;\n}\n\n/**\n * @param {!Array.} code_points Array of code points.\n * @return {string} string String of UTF-16 code units.\n */\nfunction codePointsToString(code_points) {\n var s = '';\n for (var i = 0; i < code_points.length; ++i) {\n var cp = code_points[i];\n if (cp <= 0xFFFF) {\n s += String.fromCharCode(cp);\n } else {\n cp -= 0x10000;\n s += String.fromCharCode((cp >> 10) + 0xD800,\n (cp & 0x3FF) + 0xDC00);\n }\n }\n return s;\n}\n\n\n//\n// Implementation of Encoding specification\n// https://encoding.spec.whatwg.org/\n//\n\n//\n// 3. Terminology\n//\n\n/**\n * End-of-stream is a special token that signifies no more tokens\n * are in the stream.\n * @const\n */ var end_of_stream = -1;\n\n/**\n * A stream represents an ordered sequence of tokens.\n *\n * @constructor\n * @param {!(Array.|Uint8Array)} tokens Array of tokens that provide the\n * stream.\n */\nfunction Stream(tokens) {\n /** @type {!Array.} */\n this.tokens = [].slice.call(tokens);\n}\n\nStream.prototype = {\n /**\n * @return {boolean} True if end-of-stream has been hit.\n */\n endOfStream: function() {\n return !this.tokens.length;\n },\n\n /**\n * When a token is read from a stream, the first token in the\n * stream must be returned and subsequently removed, and\n * end-of-stream must be returned otherwise.\n *\n * @return {number} Get the next token from the stream, or\n * end_of_stream.\n */\n read: function() {\n if (!this.tokens.length)\n return end_of_stream;\n return this.tokens.shift();\n },\n\n /**\n * When one or more tokens are prepended to a stream, those tokens\n * must be inserted, in given order, before the first token in the\n * stream.\n *\n * @param {(number|!Array.)} token The token(s) to prepend to the stream.\n */\n prepend: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/(token);\n while (tokens.length)\n this.tokens.unshift(tokens.pop());\n } else {\n this.tokens.unshift(token);\n }\n },\n\n /**\n * When one or more tokens are pushed to a stream, those tokens\n * must be inserted, in given order, after the last token in the\n * stream.\n *\n * @param {(number|!Array.)} token The tokens(s) to prepend to the stream.\n */\n push: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/(token);\n while (tokens.length)\n this.tokens.push(tokens.shift());\n } else {\n this.tokens.push(token);\n }\n }\n};\n\n//\n// 4. Encodings\n//\n\n// 4.1 Encoders and decoders\n\n/** @const */\nvar finished = -1;\n\n/**\n * @param {boolean} fatal If true, decoding errors raise an exception.\n * @param {number=} opt_code_point Override the standard fallback code point.\n * @return {number} The code point to insert on a decoding error.\n */\nfunction decoderError(fatal, opt_code_point) {\n if (fatal)\n throw TypeError('Decoder error');\n return opt_code_point || 0xFFFD;\n}\n\n/** @interface */\nfunction Decoder() {}\nDecoder.prototype = {\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point, or |finished|.\n */\n handler: function(stream, bite) {}\n};\n\n/** @interface */\nfunction Encoder() {}\nEncoder.prototype = {\n /**\n * @param {Stream} stream The stream of code points being encoded.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit, or |finished|.\n */\n handler: function(stream, code_point) {}\n};\n\n//\n// 7. API\n//\n\n/** @const */ var DEFAULT_ENCODING = 'utf-8';\n\n// 7.1 Interface TextDecoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextDecoder(encoding, options) {\n if (!(this instanceof TextDecoder)) {\n return new TextDecoder(encoding, options);\n }\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {boolean} */\n this._BOMseen = false;\n /** @private @type {?Decoder} */\n this._decoder = null;\n /** @private @type {boolean} */\n this._fatal = Boolean(options['fatal']);\n /** @private @type {boolean} */\n this._ignoreBOM = Boolean(options['ignoreBOM']);\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n Object.defineProperty(this, 'fatal', {value: this._fatal});\n Object.defineProperty(this, 'ignoreBOM', {value: this._ignoreBOM});\n}\n\nTextDecoder.prototype = {\n /**\n * @param {ArrayBufferView=} input The buffer of bytes to decode.\n * @param {Object=} options\n * @return {string} The decoded string.\n */\n decode: function decode(input, options) {\n var bytes;\n if (typeof input === 'object' && input instanceof ArrayBuffer) {\n bytes = new Uint8Array(input);\n } else if (typeof input === 'object' && 'buffer' in input &&\n input.buffer instanceof ArrayBuffer) {\n bytes = new Uint8Array(input.buffer,\n input.byteOffset,\n input.byteLength);\n } else {\n bytes = new Uint8Array(0);\n }\n\n options = ToDictionary(options);\n\n if (!this._streaming) {\n this._decoder = new UTF8Decoder({fatal: this._fatal});\n this._BOMseen = false;\n }\n this._streaming = Boolean(options['stream']);\n\n var input_stream = new Stream(bytes);\n\n var code_points = [];\n\n /** @type {?(number|!Array.)} */\n var result;\n\n while (!input_stream.endOfStream()) {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.}*/(result));\n else\n code_points.push(result);\n }\n if (!this._streaming) {\n do {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.}*/(result));\n else\n code_points.push(result);\n } while (!input_stream.endOfStream());\n this._decoder = null;\n }\n\n if (code_points.length) {\n // If encoding is one of utf-8, utf-16be, and utf-16le, and\n // ignore BOM flag and BOM seen flag are unset, run these\n // subsubsteps:\n if (['utf-8'].indexOf(this.encoding) !== -1 &&\n !this._ignoreBOM && !this._BOMseen) {\n // If token is U+FEFF, set BOM seen flag.\n if (code_points[0] === 0xFEFF) {\n this._BOMseen = true;\n code_points.shift();\n } else {\n // Otherwise, if token is not end-of-stream, set BOM seen\n // flag and append token to output.\n this._BOMseen = true;\n }\n }\n }\n\n return codePointsToString(code_points);\n }\n};\n\n// 7.2 Interface TextEncoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextEncoder(encoding, options) {\n if (!(this instanceof TextEncoder))\n return new TextEncoder(encoding, options);\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {?Encoder} */\n this._encoder = null;\n /** @private @type {{fatal: boolean}} */\n this._options = {fatal: Boolean(options['fatal'])};\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n}\n\nTextEncoder.prototype = {\n /**\n * @param {string=} opt_string The string to encode.\n * @param {Object=} options\n * @return {Uint8Array} Encoded bytes, as a Uint8Array.\n */\n encode: function encode(opt_string, options) {\n opt_string = opt_string ? String(opt_string) : '';\n options = ToDictionary(options);\n\n // NOTE: This option is nonstandard. None of the encodings\n // permitted for encoding (i.e. UTF-8, UTF-16) are stateful,\n // so streaming is not necessary.\n if (!this._streaming)\n this._encoder = new UTF8Encoder(this._options);\n this._streaming = Boolean(options['stream']);\n\n var bytes = [];\n var input_stream = new Stream(stringToCodePoints(opt_string));\n /** @type {?(number|!Array.)} */\n var result;\n while (!input_stream.endOfStream()) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.}*/(result));\n else\n bytes.push(result);\n }\n if (!this._streaming) {\n while (true) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.}*/(result));\n else\n bytes.push(result);\n }\n this._encoder = null;\n }\n return new Uint8Array(bytes);\n }\n};\n\n//\n// 8. The encoding\n//\n\n// 8.1 utf-8\n\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Decoder(options) {\n var fatal = options.fatal;\n\n // utf-8's decoder's has an associated utf-8 code point, utf-8\n // bytes seen, and utf-8 bytes needed (all initially 0), a utf-8\n // lower boundary (initially 0x80), and a utf-8 upper boundary\n // (initially 0xBF).\n var /** @type {number} */ utf8_code_point = 0,\n /** @type {number} */ utf8_bytes_seen = 0,\n /** @type {number} */ utf8_bytes_needed = 0,\n /** @type {number} */ utf8_lower_boundary = 0x80,\n /** @type {number} */ utf8_upper_boundary = 0xBF;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function(stream, bite) {\n // 1. If byte is end-of-stream and utf-8 bytes needed is not 0,\n // set utf-8 bytes needed to 0 and return error.\n if (bite === end_of_stream && utf8_bytes_needed !== 0) {\n utf8_bytes_needed = 0;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream, return finished.\n if (bite === end_of_stream)\n return finished;\n\n // 3. If utf-8 bytes needed is 0, based on byte:\n if (utf8_bytes_needed === 0) {\n\n // 0x00 to 0x7F\n if (inRange(bite, 0x00, 0x7F)) {\n // Return a code point whose value is byte.\n return bite;\n }\n\n // 0xC2 to 0xDF\n if (inRange(bite, 0xC2, 0xDF)) {\n // Set utf-8 bytes needed to 1 and utf-8 code point to byte\n // − 0xC0.\n utf8_bytes_needed = 1;\n utf8_code_point = bite - 0xC0;\n }\n\n // 0xE0 to 0xEF\n else if (inRange(bite, 0xE0, 0xEF)) {\n // 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.\n if (bite === 0xE0)\n utf8_lower_boundary = 0xA0;\n // 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.\n if (bite === 0xED)\n utf8_upper_boundary = 0x9F;\n // 3. Set utf-8 bytes needed to 2 and utf-8 code point to\n // byte − 0xE0.\n utf8_bytes_needed = 2;\n utf8_code_point = bite - 0xE0;\n }\n\n // 0xF0 to 0xF4\n else if (inRange(bite, 0xF0, 0xF4)) {\n // 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.\n if (bite === 0xF0)\n utf8_lower_boundary = 0x90;\n // 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.\n if (bite === 0xF4)\n utf8_upper_boundary = 0x8F;\n // 3. Set utf-8 bytes needed to 3 and utf-8 code point to\n // byte − 0xF0.\n utf8_bytes_needed = 3;\n utf8_code_point = bite - 0xF0;\n }\n\n // Otherwise\n else {\n // Return error.\n return decoderError(fatal);\n }\n\n // Then (byte is in the range 0xC2 to 0xF4) set utf-8 code\n // point to utf-8 code point << (6 × utf-8 bytes needed) and\n // return continue.\n utf8_code_point = utf8_code_point << (6 * utf8_bytes_needed);\n return null;\n }\n\n // 4. If byte is not in the range utf-8 lower boundary to utf-8\n // upper boundary, run these substeps:\n if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {\n\n // 1. Set utf-8 code point, utf-8 bytes needed, and utf-8\n // bytes seen to 0, set utf-8 lower boundary to 0x80, and set\n // utf-8 upper boundary to 0xBF.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 2. Prepend byte to stream.\n stream.prepend(bite);\n\n // 3. Return error.\n return decoderError(fatal);\n }\n\n // 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary\n // to 0xBF.\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 6. Increase utf-8 bytes seen by one and set utf-8 code point\n // to utf-8 code point + (byte − 0x80) << (6 × (utf-8 bytes\n // needed − utf-8 bytes seen)).\n utf8_bytes_seen += 1;\n utf8_code_point += (bite - 0x80) << (6 * (utf8_bytes_needed - utf8_bytes_seen));\n\n // 7. If utf-8 bytes seen is not equal to utf-8 bytes needed,\n // continue.\n if (utf8_bytes_seen !== utf8_bytes_needed)\n return null;\n\n // 8. Let code point be utf-8 code point.\n var code_point = utf8_code_point;\n\n // 9. Set utf-8 code point, utf-8 bytes needed, and utf-8 bytes\n // seen to 0.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n\n // 10. Return a code point whose value is code point.\n return code_point;\n };\n}\n\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Encoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function(stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream)\n return finished;\n\n // 2. If code point is in the range U+0000 to U+007F, return a\n // byte whose value is code point.\n if (inRange(code_point, 0x0000, 0x007f))\n return code_point;\n\n // 3. Set count and offset based on the range code point is in:\n var count, offset;\n // U+0080 to U+07FF: 1 and 0xC0\n if (inRange(code_point, 0x0080, 0x07FF)) {\n count = 1;\n offset = 0xC0;\n }\n // U+0800 to U+FFFF: 2 and 0xE0\n else if (inRange(code_point, 0x0800, 0xFFFF)) {\n count = 2;\n offset = 0xE0;\n }\n // U+10000 to U+10FFFF: 3 and 0xF0\n else if (inRange(code_point, 0x10000, 0x10FFFF)) {\n count = 3;\n offset = 0xF0;\n }\n\n // 4.Let bytes be a byte sequence whose first byte is (code\n // point >> (6 × count)) + offset.\n var bytes = [(code_point >> (6 * count)) + offset];\n\n // 5. Run these substeps while count is greater than 0:\n while (count > 0) {\n\n // 1. Set temp to code point >> (6 × (count − 1)).\n var temp = code_point >> (6 * (count - 1));\n\n // 2. Append to bytes 0x80 | (temp & 0x3F).\n bytes.push(0x80 | (temp & 0x3F));\n\n // 3. Decrease count by one.\n count -= 1;\n }\n\n // 6. Return bytes bytes, in order.\n return bytes;\n };\n}\n\nexport {TextEncoder, TextDecoder};\n","/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n\"use strict\";\n\n// polyfill textencoder if necessary\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.encryptMegolmKeyFile = exports.decryptMegolmKeyFile = undefined;\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _bluebird = require('bluebird');\n\n/**\n * Decrypt a megolm key file\n *\n * @param {ArrayBuffer} data file to decrypt\n * @param {String} password\n * @return {Promise} promise for decrypted output\n *\n *\n */\nvar decryptMegolmKeyFile = exports.decryptMegolmKeyFile = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(data, password) {\n var body, version, ciphertextLength, salt, iv, iterations, ciphertext, hmac, _ref2, _ref3, aesKey, hmacKey, toVerify, isValid, plaintext;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n body = unpackMegolmKeyFile(data);\n\n // check we have a version byte\n\n if (!(body.length < 1)) {\n _context.next = 3;\n break;\n }\n\n throw friendlyError('Invalid file: too short', (0, _languageHandler._t)('Not a valid Riot keyfile'));\n\n case 3:\n version = body[0];\n\n if (!(version !== 1)) {\n _context.next = 6;\n break;\n }\n\n throw friendlyError('Unsupported version', (0, _languageHandler._t)('Not a valid Riot keyfile'));\n\n case 6:\n ciphertextLength = body.length - (1 + 16 + 16 + 4 + 32);\n\n if (!(ciphertextLength < 0)) {\n _context.next = 9;\n break;\n }\n\n throw friendlyError('Invalid file: too short', (0, _languageHandler._t)('Not a valid Riot keyfile'));\n\n case 9:\n salt = body.subarray(1, 1 + 16);\n iv = body.subarray(17, 17 + 16);\n iterations = body[33] << 24 | body[34] << 16 | body[35] << 8 | body[36];\n ciphertext = body.subarray(37, 37 + ciphertextLength);\n hmac = body.subarray(-32);\n _context.next = 16;\n return (0, _bluebird.resolve)(deriveKeys(salt, iterations, password));\n\n case 16:\n _ref2 = _context.sent;\n _ref3 = (0, _slicedToArray3.default)(_ref2, 2);\n aesKey = _ref3[0];\n hmacKey = _ref3[1];\n toVerify = body.subarray(0, -32);\n isValid = void 0;\n _context.prev = 22;\n _context.next = 25;\n return (0, _bluebird.resolve)(subtleCrypto.verify({ name: 'HMAC' }, hmacKey, hmac, toVerify));\n\n case 25:\n isValid = _context.sent;\n _context.next = 31;\n break;\n\n case 28:\n _context.prev = 28;\n _context.t0 = _context['catch'](22);\n throw friendlyError('subtleCrypto.verify failed: ' + _context.t0, cryptoFailMsg());\n\n case 31:\n if (isValid) {\n _context.next = 33;\n break;\n }\n\n throw friendlyError('hmac mismatch', (0, _languageHandler._t)('Authentication check failed: incorrect password?'));\n\n case 33:\n plaintext = void 0;\n _context.prev = 34;\n _context.next = 37;\n return (0, _bluebird.resolve)(subtleCrypto.decrypt({\n name: \"AES-CTR\",\n counter: iv,\n length: 64\n }, aesKey, ciphertext));\n\n case 37:\n plaintext = _context.sent;\n _context.next = 43;\n break;\n\n case 40:\n _context.prev = 40;\n _context.t1 = _context['catch'](34);\n throw friendlyError('subtleCrypto.decrypt failed: ' + _context.t1, cryptoFailMsg());\n\n case 43:\n return _context.abrupt('return', new TextDecoder().decode(new Uint8Array(plaintext)));\n\n case 44:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[22, 28], [34, 40]]);\n }));\n\n return function decryptMegolmKeyFile(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Encrypt a megolm key file\n *\n * @param {String} data\n * @param {String} password\n * @param {Object=} options\n * @param {Nunber=} options.kdf_rounds Number of iterations to perform of the\n * key-derivation function.\n * @return {Promise} promise for encrypted output\n */\n\n\nvar encryptMegolmKeyFile = exports.encryptMegolmKeyFile = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(data, password, options) {\n var kdfRounds, salt, iv, _ref5, _ref6, aesKey, hmacKey, encodedData, ciphertext, cipherArray, bodyLength, resultBuffer, idx, toSign, hmac, hmacArray;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n options = options || {};\n kdfRounds = options.kdf_rounds || 500000;\n salt = new Uint8Array(16);\n\n window.crypto.getRandomValues(salt);\n\n iv = new Uint8Array(16);\n\n window.crypto.getRandomValues(iv);\n\n // clear bit 63 of the IV to stop us hitting the 64-bit counter boundary\n // (which would mean we wouldn't be able to decrypt on Android). The loss\n // of a single bit of iv is a price we have to pay.\n iv[9] &= 0x7f;\n\n _context2.next = 9;\n return (0, _bluebird.resolve)(deriveKeys(salt, kdfRounds, password));\n\n case 9:\n _ref5 = _context2.sent;\n _ref6 = (0, _slicedToArray3.default)(_ref5, 2);\n aesKey = _ref6[0];\n hmacKey = _ref6[1];\n encodedData = new TextEncoder().encode(data);\n ciphertext = void 0;\n _context2.prev = 15;\n _context2.next = 18;\n return (0, _bluebird.resolve)(subtleCrypto.encrypt({\n name: \"AES-CTR\",\n counter: iv,\n length: 64\n }, aesKey, encodedData));\n\n case 18:\n ciphertext = _context2.sent;\n _context2.next = 24;\n break;\n\n case 21:\n _context2.prev = 21;\n _context2.t0 = _context2['catch'](15);\n throw friendlyError('subtleCrypto.encrypt failed: ' + _context2.t0, cryptoFailMsg());\n\n case 24:\n cipherArray = new Uint8Array(ciphertext);\n bodyLength = 1 + salt.length + iv.length + 4 + cipherArray.length + 32;\n resultBuffer = new Uint8Array(bodyLength);\n idx = 0;\n\n resultBuffer[idx++] = 1; // version\n resultBuffer.set(salt, idx);idx += salt.length;\n resultBuffer.set(iv, idx);idx += iv.length;\n resultBuffer[idx++] = kdfRounds >> 24;\n resultBuffer[idx++] = kdfRounds >> 16 & 0xff;\n resultBuffer[idx++] = kdfRounds >> 8 & 0xff;\n resultBuffer[idx++] = kdfRounds & 0xff;\n resultBuffer.set(cipherArray, idx);idx += cipherArray.length;\n\n toSign = resultBuffer.subarray(0, idx);\n hmac = void 0;\n _context2.prev = 41;\n _context2.next = 44;\n return (0, _bluebird.resolve)(subtleCrypto.sign({ name: 'HMAC' }, hmacKey, toSign));\n\n case 44:\n hmac = _context2.sent;\n _context2.next = 50;\n break;\n\n case 47:\n _context2.prev = 47;\n _context2.t1 = _context2['catch'](41);\n throw friendlyError('subtleCrypto.sign failed: ' + _context2.t1, cryptoFailMsg());\n\n case 50:\n hmacArray = new Uint8Array(hmac);\n\n resultBuffer.set(hmacArray, idx);\n return _context2.abrupt('return', packMegolmKeyFile(resultBuffer));\n\n case 53:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[15, 21], [41, 47]]);\n }));\n\n return function encryptMegolmKeyFile(_x3, _x4, _x5) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * Derive the AES and HMAC-SHA-256 keys for the file\n *\n * @param {Unit8Array} salt salt for pbkdf\n * @param {Number} iterations number of pbkdf iterations\n * @param {String} password password\n * @return {Promise<[CryptoKey, CryptoKey]>} promise for [aes key, hmac key]\n */\n\n\nvar deriveKeys = function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(salt, iterations, password) {\n var start, key, keybits, now, aesKey, hmacKey, aesProm, hmacProm;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n start = new Date();\n key = void 0;\n _context3.prev = 2;\n _context3.next = 5;\n return (0, _bluebird.resolve)(subtleCrypto.importKey('raw', new TextEncoder().encode(password), { name: 'PBKDF2' }, false, ['deriveBits']));\n\n case 5:\n key = _context3.sent;\n _context3.next = 11;\n break;\n\n case 8:\n _context3.prev = 8;\n _context3.t0 = _context3['catch'](2);\n throw friendlyError('subtleCrypto.importKey failed: ' + _context3.t0, cryptoFailMsg());\n\n case 11:\n keybits = void 0;\n _context3.prev = 12;\n _context3.next = 15;\n return (0, _bluebird.resolve)(subtleCrypto.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: 'SHA-512'\n }, key, 512));\n\n case 15:\n keybits = _context3.sent;\n _context3.next = 21;\n break;\n\n case 18:\n _context3.prev = 18;\n _context3.t1 = _context3['catch'](12);\n throw friendlyError('subtleCrypto.deriveBits failed: ' + _context3.t1, cryptoFailMsg());\n\n case 21:\n now = new Date();\n\n console.log(\"E2e import/export: deriveKeys took \" + (now - start) + \"ms\");\n\n aesKey = keybits.slice(0, 32);\n hmacKey = keybits.slice(32);\n aesProm = subtleCrypto.importKey('raw', aesKey, { name: 'AES-CTR' }, false, ['encrypt', 'decrypt']).catch(function (e) {\n throw friendlyError('subtleCrypto.importKey failed for AES key: ' + e, cryptoFailMsg());\n });\n hmacProm = subtleCrypto.importKey('raw', hmacKey, {\n name: 'HMAC',\n hash: { name: 'SHA-256' }\n }, false, ['sign', 'verify']).catch(function (e) {\n throw friendlyError('subtleCrypto.importKey failed for HMAC key: ' + e, cryptoFailMsg());\n });\n _context3.next = 29;\n return (0, _bluebird.resolve)(_promise2.default.all([aesProm, hmacProm]));\n\n case 29:\n return _context3.abrupt('return', _context3.sent);\n\n case 30:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this, [[2, 8], [12, 18]]);\n }));\n\n return function deriveKeys(_x6, _x7, _x8) {\n return _ref7.apply(this, arguments);\n };\n}();\n\nvar _textEncodingUtf = require('text-encoding-utf-8');\n\nvar TextEncodingUtf8 = _interopRequireWildcard(_textEncodingUtf);\n\nvar _languageHandler = require('../languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TextEncoder = window.TextEncoder;\nif (!TextEncoder) {\n TextEncoder = TextEncodingUtf8.TextEncoder;\n}\nvar TextDecoder = window.TextDecoder;\nif (!TextDecoder) {\n TextDecoder = TextEncodingUtf8.TextDecoder;\n}\n\nvar subtleCrypto = window.crypto.subtle || window.crypto.webkitSubtle;\n\n/**\n * Make an Error object which has a friendlyText property which is already\n * translated and suitable for showing to the user.\n *\n * @param {string} msg message for the exception\n * @param {string} friendlyText\n * @returns {Error}\n */\nfunction friendlyError(msg, friendlyText) {\n var e = new Error(msg);\n e.friendlyText = friendlyText;\n return e;\n}\n\nfunction cryptoFailMsg() {\n return (0, _languageHandler._t)('Your browser does not support the required cryptography extensions');\n}\n\nvar HEADER_LINE = '-----BEGIN MEGOLM SESSION DATA-----';\nvar TRAILER_LINE = '-----END MEGOLM SESSION DATA-----';\n\n/**\n * Unbase64 an ascii-armoured megolm key file\n *\n * Strips the header and trailer lines, and unbase64s the content\n *\n * @param {ArrayBuffer} data input file\n * @return {Uint8Array} unbase64ed content\n */\nfunction unpackMegolmKeyFile(data) {\n // parse the file as a great big String. This should be safe, because there\n // should be no non-ASCII characters, and it means that we can do string\n // comparisons to find the header and footer, and feed it into window.atob.\n var fileStr = new TextDecoder().decode(new Uint8Array(data));\n\n // look for the start line\n var lineStart = 0;\n while (1) {\n var lineEnd = fileStr.indexOf('\\n', lineStart);\n if (lineEnd < 0) {\n throw new Error('Header line not found');\n }\n var line = fileStr.slice(lineStart, lineEnd).trim();\n\n // start the next line after the newline\n lineStart = lineEnd + 1;\n\n if (line === HEADER_LINE) {\n break;\n }\n }\n\n var dataStart = lineStart;\n\n // look for the end line\n while (1) {\n var _lineEnd = fileStr.indexOf('\\n', lineStart);\n var _line = fileStr.slice(lineStart, _lineEnd < 0 ? undefined : _lineEnd).trim();\n if (_line === TRAILER_LINE) {\n break;\n }\n\n if (_lineEnd < 0) {\n throw new Error('Trailer line not found');\n }\n\n // start the next line after the newline\n lineStart = _lineEnd + 1;\n }\n\n var dataEnd = lineStart;\n return decodeBase64(fileStr.slice(dataStart, dataEnd));\n}\n\n/**\n * ascii-armour a megolm key file\n *\n * base64s the content, and adds header and trailer lines\n *\n * @param {Uint8Array} data raw data\n * @return {ArrayBuffer} formatted file\n */\nfunction packMegolmKeyFile(data) {\n // we split into lines before base64ing, because encodeBase64 doesn't deal\n // terribly well with large arrays.\n var LINE_LENGTH = 72 * 4 / 3;\n var nLines = Math.ceil(data.length / LINE_LENGTH);\n var lines = new Array(nLines + 3);\n lines[0] = HEADER_LINE;\n var o = 0;\n var i = void 0;\n for (i = 1; i <= nLines; i++) {\n lines[i] = encodeBase64(data.subarray(o, o + LINE_LENGTH));\n o += LINE_LENGTH;\n }\n lines[i++] = TRAILER_LINE;\n lines[i] = '';\n return new TextEncoder().encode(lines.join('\\n')).buffer;\n}\n\n/**\n * Encode a typed array of uint8 as base64.\n * @param {Uint8Array} uint8Array The data to encode.\n * @return {string} The base64.\n */\nfunction encodeBase64(uint8Array) {\n // Misinterpt the Uint8Array as Latin-1.\n // window.btoa expects a unicode string with codepoints in the range 0-255.\n var latin1String = String.fromCharCode.apply(null, uint8Array);\n // Use the builtin base64 encoder.\n return window.btoa(latin1String);\n}\n\n/**\n * Decode a base64 string to a typed array of uint8.\n * @param {string} base64 The base64 to decode.\n * @return {Uint8Array} The decoded data.\n */\nfunction decodeBase64(base64) {\n // window.atob returns a unicode string with codepoints in the range 0-255.\n var latin1String = window.atob(base64);\n // Encode the string as a Uint8Array\n var uint8Array = new Uint8Array(latin1String.length);\n for (var i = 0; i < latin1String.length; i++) {\n uint8Array[i] = latin1String.charCodeAt(i);\n }\n return uint8Array;\n}\n//# sourceMappingURL=MegolmExportEncryption.js.map"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/c2932262ed6106cd4535/1.js b/riot/bundles/c2932262ed6106cd4535/1.js new file mode 100644 index 0000000..8a9327c --- /dev/null +++ b/riot/bundles/c2932262ed6106cd4535/1.js @@ -0,0 +1,3 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{326:function(e,a,i){var r,n,s,o;r=i(494),n=function(e){var a,i,r,n,s;for(r in a=0,e)s=e[r],a+=function(){var e,a,i;for(i=[],a=0,e=s.length;ae)return 0;if(0===a)return 1;for(n=1,i=r=1,s=a;1<=s?r<=s:r>=s;i=1<=s?++r:--r)n*=e,n/=i,e-=1;return n},log10:function(e){return Math.log(e)/Math.log(10)},log2:function(e){return Math.log(e)/Math.log(2)},factorial:function(e){var a,i,r,n;if(e<2)return 1;for(a=1,i=r=2,n=e;2<=n?r<=n:r>=n;i=2<=n?++r:--r)a*=i;return a},most_guessable_match_sequence:function(e,a,i){var r,n,s,o,t,l,c,d,u,m,h,g,p,b,y,k,f,v,w,z,j,x;for(null==i&&(i=!1),h=e.length,m=function(){var e,a,i;for(i=[],e=0,a=h;0<=a?ea;0<=a?++e:--e)i.push([]);return i}(),g=0,t=a.length;ge;0<=e?++i:--i)a.push({});return a}(),pi:function(){var e,a,i;for(a=[],i=0,e=h;0<=e?ie;0<=e?++i:--i)a.push({});return a}(),g:function(){var e,a,i;for(a=[],i=0,e=h;0<=e?ie;0<=e?++i:--i)a.push({});return a}()},j=function(a){return function(r,n){var s,o,t,l,c,d;for(o in l=r.j,c=a.estimate_guesses(r,e),n>1&&(c*=p.pi[r.i-1][n-1]),t=a.factorial(n)*c,i||(t+=Math.pow(1e4,n-1)),d=p.g[l])if(s=d[o],!(o>n)&&s<=t)return;return p.g[l][n]=t,p.m[l][n]=r,p.pi[l][n]=c}}(this),r=function(e){var a,i,r,n,s,o;for(d=u(0,e),j(d,1),s=[],a=o=1,n=e;1<=n?o<=n:o>=n;a=1<=n?++o:--o)d=u(a,e),s.push(function(){var e,n;for(i in n=[],e=p.m[a-1])r=e[i],i=parseInt(i),"bruteforce"!==r.pattern&&n.push(j(d,i+1));return n}());return s},u=function(a,i){return{pattern:"bruteforce",token:e.slice(a,+i+1||9e9),i:a,j:i}},z=function(e){var a,i,r,n,s,o,t;for(i in o=[],n=e-1,s=void 0,r=1/0,t=p.g[n])(a=t[i])=0;)d=p.m[n][s],o.unshift(d),n=d.i-1,s--;return o},s=w=0,f=h;0<=f?wf;s=0<=f?++w:--w){for(x=0,c=(v=m[s]).length;x0)for(o in p.m[d.i-1])o=parseInt(o),j(d,o+1);else j(d,1);r(s)}return b=(y=z(h)).length,n=0===e.length?1:p.g[h-1][b],{password:e,guesses:n,guesses_log10:this.log10(n),sequence:y}},estimate_guesses:function(e,a){var i,r;return null!=e.guesses?e.guesses:(r=1,e.token.length=u;o=2<=u?++l:--l)for(t=c=1,m=Math.min(b,o-1);1<=m?c<=m:c>=m;t=1<=m?++c:--c)s+=this.nCk(o-1,t-1)*g*Math.pow(n,t);if(e.shifted_count)if(i=e.shifted_count,r=e.token.length-e.shifted_count,0===i||0===r)s*=2;else{for(p=0,o=y=1,h=Math.min(i,r);1<=h?y<=h:y>=h;o=1<=h?++y:--y)p+=this.nCk(i+r,o);s*=p}return s},dictionary_guesses:function(e){var a;return e.base_guesses=e.rank,e.uppercase_variations=this.uppercase_variations(e),e.l33t_variations=this.l33t_variations(e),a=e.reversed?2:1,e.base_guesses*e.uppercase_variations*e.l33t_variations*a},START_UPPER:/^[A-Z][^A-Z]+$/,END_UPPER:/^[^A-Z]+[A-Z]$/,ALL_UPPER:/^[^a-z]+$/,ALL_LOWER:/^[^A-Z]+$/,uppercase_variations:function(e){var a,i,r,n,s,o,t,l,c,d,u,m;if((m=e.token).match(this.ALL_LOWER)||m.toLowerCase()===m)return 1;for(o=0,s=(l=[this.START_UPPER,this.END_UPPER,this.ALL_UPPER]).length;o=c;n=1<=c?++t:--t)u+=this.nCk(i+a,n);return u},l33t_variations:function(e){var a,i,r,n,s,o,t,l,c,d,u,m;if(!e.l33t)return 1;for(d in m=1,l=e.sub)if(u=l[d],n=e.token.toLowerCase().split(""),a=function(){var e,a,i;for(i=[],a=0,e=n.length;a=c;s=1<=c?++o:--o)t+=this.nCk(i+a,s);m*=t}return m}},e.exports=o},329:function(e,a,i){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var r=u(i(17)),n=i(9),s=u(i(0)),o=u(i(3)),t=u(i(8)),l=i(740),c=u(i(487)),d=i(2);function u(e){return e&&e.__esModule?e:{default:e}}var m=5;a.default=s.default.createClass({displayName:"CreateKeyBackupDialog",getInitialState:function(){return{phase:0,passPhrase:"",passPhraseConfirm:"",copied:!1,downloaded:!1,zxcvbnResult:null,setPassPhrase:!1}},componentWillMount:function(){this._recoveryKeyNode=null,this._keyBackupInfo=null},_collectRecoveryKeyNode:function(e){this._recoveryKeyNode=e},_onCopyClick:function(){!function(e){var a=document.createRange();a.selectNodeContents(e);var i=window.getSelection();i.removeAllRanges(),i.addRange(a)}(this._recoveryKeyNode),document.execCommand("copy")&&this.setState({copied:!0,phase:3})},_onDownloadClick:function(){var e=new Blob([this._keyBackupInfo.recovery_key],{type:"text/plain;charset=us-ascii"});c.default.saveAs(e,"recovery-key.txt"),this.setState({downloaded:!0,phase:3})},_createBackup:function(){var e=(0,n.coroutine)(r.default.mark(function e(){var a;return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this.setState({phase:4,error:null}),a=void 0,e.prev=2,e.next=5,(0,n.resolve)(t.default.get().createKeyBackupVersion(this._keyBackupInfo));case 5:return a=e.sent,e.next=8,(0,n.resolve)(t.default.get().backupAllGroupSessions(a.version));case 8:this.setState({phase:m}),e.next=16;break;case 11:e.prev=11,e.t0=e.catch(2),console.log("Error creating key backup",e.t0),a&&t.default.get().deleteKeyBackupVersion(a.version),this.setState({error:e.t0});case 16:case"end":return e.stop()}},e,this,[[2,11]])}));return function(){return e.apply(this,arguments)}}(),_onCancel:function(){this.props.onFinished(!1)},_onDone:function(){this.props.onFinished(!0)},_onOptOutClick:function(){this.setState({phase:6})},_onSetUpClick:function(){this.setState({phase:0})},_onSkipPassPhraseClick:function(){var e=(0,n.coroutine)(r.default.mark(function e(){return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,n.resolve)(t.default.get().prepareKeyBackupVersion());case 2:this._keyBackupInfo=e.sent,this.setState({copied:!1,downloaded:!1,phase:2});case 4:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),_onPassPhraseNextClick:function(){this.setState({phase:1})},_onPassPhraseKeyPress:function(e){"Enter"===e.key&&this._passPhraseIsValid()&&this._onPassPhraseNextClick()},_onPassPhraseConfirmNextClick:function(){var e=(0,n.coroutine)(r.default.mark(function e(){return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,n.resolve)(t.default.get().prepareKeyBackupVersion(this.state.passPhrase));case 2:this._keyBackupInfo=e.sent,this.setState({setPassPhrase:!0,copied:!1,downloaded:!1,phase:2});case 4:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),_onPassPhraseConfirmKeyPress:function(e){"Enter"===e.key&&this.state.passPhrase===this.state.passPhraseConfirm&&this._onPassPhraseConfirmNextClick()},_onSetAgainClick:function(){this.setState({passPhrase:"",passPhraseConfirm:"",phase:0})},_onKeepItSafeGotItClick:function(){this.setState({phase:2})},_onPassPhraseChange:function(e){this.setState({passPhrase:e.target.value,zxcvbnResult:(0,l.scorePassword)(e.target.value)})},_onPassPhraseConfirmChange:function(e){this.setState({passPhraseConfirm:e.target.value})},_passPhraseIsValid:function(){return this.state.zxcvbnResult&&this.state.zxcvbnResult.score>=4},_renderPhasePassPhrase:function(){var e=this,a=o.default.getComponent("views.elements.DialogButtons"),i=o.default.getComponent("elements.AccessibleButton"),r=void 0,n=void 0;if(this.state.zxcvbnResult){if(this.state.zxcvbnResult.score>=4)n=(0,d._t)("Great! This passphrase looks strong enough.");else{for(var t=[],l=0;l0?s.default.createElement("div",null,t):null;n=s.default.createElement("div",null,this.state.zxcvbnResult.feedback.warning,c)}r=s.default.createElement("div",null,s.default.createElement("progress",{max:4,value:this.state.zxcvbnResult.score}))}return s.default.createElement("div",null,s.default.createElement("p",null,(0,d._t)("Secure your encrypted message history with a Recovery Passphrase.")),s.default.createElement("p",null,(0,d._t)("You'll need it if you log out or lose access to this device.")),s.default.createElement("div",{className:"mx_CreateKeyBackupDialog_primaryContainer"},s.default.createElement("div",{className:"mx_CreateKeyBackupDialog_passPhraseContainer"},s.default.createElement("input",{type:"password",onChange:this._onPassPhraseChange,onKeyPress:this._onPassPhraseKeyPress,value:this.state.passPhrase,className:"mx_CreateKeyBackupDialog_passPhraseInput",placeholder:(0,d._t)("Enter a passphrase...")}),s.default.createElement("div",{className:"mx_CreateKeyBackupDialog_passPhraseHelp"},r,n))),s.default.createElement(a,{primaryButton:(0,d._t)("Next"),onPrimaryButtonClick:this._onPassPhraseNextClick,hasCancel:!1,disabled:!this._passPhraseIsValid()}),s.default.createElement("p",null,(0,d._t)("If you don't want encrypted message history to be available on other devices, .",{},{button:function(a){return s.default.createElement(i,{element:"span",className:"mx_linkButton",onClick:e._onOptOutClick},a)}})),s.default.createElement("p",null,(0,d._t)("Or, if you don't want to create a Recovery Passphrase, skip this step and .",{},{button:function(a){return s.default.createElement(i,{element:"span",className:"mx_linkButton",onClick:e._onSkipPassPhraseClick},a)}})))},_renderPhasePassPhraseConfirm:function(){var e=o.default.getComponent("elements.AccessibleButton"),a=null;if(this.state.passPhraseConfirm.length>0){var i=void 0;i=this.state.passPhraseConfirm===this.state.passPhrase?(0,d._t)("That matches!"):(0,d._t)("That doesn't match."),a=s.default.createElement("div",{className:"mx_CreateKeyBackupDialog_passPhraseMatch"},s.default.createElement("div",null,i),s.default.createElement("div",null,s.default.createElement(e,{element:"span",className:"mx_linkButton",onClick:this._onSetAgainClick},(0,d._t)("Go back to set it again."))))}var r=o.default.getComponent("views.elements.DialogButtons");return s.default.createElement("div",null,s.default.createElement("p",null,(0,d._t)("Type in your Recovery Passphrase to confirm you remember it. If it helps, add it to your password manager or store it somewhere safe.")),s.default.createElement("div",{className:"mx_CreateKeyBackupDialog_primaryContainer"},s.default.createElement("div",{className:"mx_CreateKeyBackupDialog_passPhraseContainer"},s.default.createElement("div",null,s.default.createElement("input",{type:"password",onChange:this._onPassPhraseConfirmChange,onKeyPress:this._onPassPhraseConfirmKeyPress,value:this.state.passPhraseConfirm,className:"mx_CreateKeyBackupDialog_passPhraseInput",placeholder:(0,d._t)("Repeat your passphrase..."),autoFocus:!0})),a)),s.default.createElement(r,{primaryButton:(0,d._t)("Next"),onPrimaryButtonClick:this._onPassPhraseConfirmNextClick,hasCancel:!1,disabled:this.state.passPhrase!==this.state.passPhraseConfirm}))},_renderPhaseShowKey:function(){var e=o.default.getComponent("views.elements.DialogButtons"),a=void 0;return a=this.state.setPassPhrase?(0,d._t)("As a safety net, you can use it to restore your encrypted message history if you forget your Recovery Passphrase."):(0,d._t)("As a safety net, you can use it to restore your encrypted message history."),s.default.createElement("div",null,s.default.createElement("p",null,(0,d._t)("Make a copy of this Recovery Key and keep it safe.")),s.default.createElement("p",null,a),s.default.createElement("p",{className:"mx_CreateKeyBackupDialog_primaryContainer"},s.default.createElement("div",{className:"mx_CreateKeyBackupDialog_recoveryKeyHeader"},(0,d._t)("Your Recovery Key")),s.default.createElement("div",{className:"mx_CreateKeyBackupDialog_recoveryKeyContainer"},s.default.createElement("div",{className:"mx_CreateKeyBackupDialog_recoveryKey"},s.default.createElement("code",{ref:this._collectRecoveryKeyNode},this._keyBackupInfo.recovery_key)),s.default.createElement("div",{className:"mx_CreateKeyBackupDialog_recoveryKeyButtons"},s.default.createElement("button",{className:"mx_Dialog_primary",onClick:this._onCopyClick},(0,d._t)("Copy to clipboard")),s.default.createElement("button",{className:"mx_Dialog_primary",onClick:this._onDownloadClick},(0,d._t)("Download"))))),s.default.createElement("br",null),s.default.createElement(e,{primaryButton:(0,d._t)("I've made a copy"),onPrimaryButtonClick:this._createBackup,hasCancel:!1,disabled:!this.state.copied&&!this.state.downloaded}))},_renderPhaseKeepItSafe:function(){var e=void 0;this.state.copied?e=(0,d._t)("Your Recovery Key has been copied to your clipboard, paste it to:",{},{b:function(e){return s.default.createElement("b",null,e)}}):this.state.downloaded&&(e=(0,d._t)("Your Recovery Key is in your Downloads folder.",{},{b:function(e){return s.default.createElement("b",null,e)}}));var a=o.default.getComponent("views.elements.DialogButtons");return s.default.createElement("div",null,e,s.default.createElement("ul",null,s.default.createElement("li",null,(0,d._t)("Print it and store it somewhere safe",{},{b:function(e){return s.default.createElement("b",null,e)}})),s.default.createElement("li",null,(0,d._t)("Save it on a USB key or backup drive",{},{b:function(e){return s.default.createElement("b",null,e)}})),s.default.createElement("li",null,(0,d._t)("Copy it to your personal cloud storage",{},{b:function(e){return s.default.createElement("b",null,e)}}))),s.default.createElement(a,{primaryButton:(0,d._t)("Got it"),onPrimaryButtonClick:this._onKeepItSafeGotItClick,hasCancel:!1}))},_renderBusyPhase:function(e){var a=o.default.getComponent("views.elements.Spinner");return s.default.createElement("div",null,s.default.createElement("p",null,(0,d._t)(e)),s.default.createElement(a,null))},_renderPhaseDone:function(){var e=o.default.getComponent("views.elements.DialogButtons");return s.default.createElement("div",null,s.default.createElement("p",null,(0,d._t)("Backup created")),s.default.createElement("p",null,(0,d._t)("Your encryption keys are now being backed up to your Homeserver.")),s.default.createElement(e,{primaryButton:(0,d._t)("Close"),onPrimaryButtonClick:this._onDone,hasCancel:!1}))},_renderPhaseOptOutConfirm:function(){var e=o.default.getComponent("views.elements.DialogButtons");return s.default.createElement("div",null,(0,d._t)("Without setting up Secure Message Recovery, you won't be able to restore your encrypted message history if you log out or use another device."),s.default.createElement(e,{primaryButton:(0,d._t)("Set up Secure Message Recovery"),onPrimaryButtonClick:this._onSetUpClick,hasCancel:!1},s.default.createElement("button",{onClick:this._onCancel},"I understand, continue without")))},_titleForPhase:function(e){switch(e){case 0:return(0,d._t)("Create a Recovery Passphrase");case 1:return(0,d._t)("Confirm Recovery Passphrase");case 6:return(0,d._t)("Warning!");case 2:return(0,d._t)("Recovery Key");case 3:return(0,d._t)("Keep it safe");case 4:return(0,d._t)("Backing up...");default:return(0,d._t)("Create Key Backup")}},render:function(){var e=o.default.getComponent("views.dialogs.BaseDialog"),a=void 0;if(this.state.error){var i=o.default.getComponent("views.elements.DialogButtons");a=s.default.createElement("div",null,s.default.createElement("p",null,(0,d._t)("Unable to create key backup")),s.default.createElement("div",{className:"mx_Dialog_buttons"},s.default.createElement(i,{primaryButton:(0,d._t)("Retry"),onPrimaryButtonClick:this._createBackup,hasCancel:!0,onCancel:this._onCancel})))}else switch(this.state.phase){case 0:a=this._renderPhasePassPhrase();break;case 1:a=this._renderPhasePassPhraseConfirm();break;case 2:a=this._renderPhaseShowKey();break;case 3:a=this._renderPhaseKeepItSafe();break;case 4:a=this._renderBusyPhase((0,d._td)("Backing up..."));break;case m:a=this._renderPhaseDone();break;case 6:a=this._renderPhaseOptOutConfirm()}return s.default.createElement(e,{className:"mx_CreateKeyBackupDialog",onFinished:this.props.onFinished,title:this._titleForPhase(this.state.phase),hasCancel:[m].includes(this.state.phase)},s.default.createElement("div",null,a))}}),e.exports=a.default},487:function(e,a,i){var r,n=n||function(e){"use strict";if(!(void 0===e||"undefined"!=typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent))){var a=function(){return e.URL||e.webkitURL||e},i=e.document.createElementNS("http://www.w3.org/1999/xhtml","a"),r="download"in i,n=/constructor/i.test(e.HTMLElement)||e.safari,s=/CriOS\/[\d]+/.test(navigator.userAgent),o=function(a){(e.setImmediate||e.setTimeout)(function(){throw a},0)},t=function(e){setTimeout(function(){"string"==typeof e?a().revokeObjectURL(e):e.remove()},4e4)},l=function(e){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e},c=function(c,d,u){u||(c=l(c));var m,h=this,g="application/octet-stream"===c.type,p=function(){!function(e,a,i){for(var r=(a=[].concat(a)).length;r--;){var n=e["on"+a[r]];if("function"==typeof n)try{n.call(e,i||e)}catch(e){o(e)}}}(h,"writestart progress write writeend".split(" "))};if(h.readyState=h.INIT,r)return m=a().createObjectURL(c),void setTimeout(function(){i.href=m,i.download=d,function(e){var a=new MouseEvent("click");e.dispatchEvent(a)}(i),p(),t(m),h.readyState=h.DONE});!function(){if((s||g&&n)&&e.FileReader){var i=new FileReader;return i.onloadend=function(){var a=s?i.result:i.result.replace(/^data:[^;]*;/,"data:attachment/file;");e.open(a,"_blank")||(e.location.href=a),a=void 0,h.readyState=h.DONE,p()},i.readAsDataURL(c),void(h.readyState=h.INIT)}m||(m=a().createObjectURL(c)),g?e.location.href=m:e.open(m,"_blank")||(e.location.href=m);h.readyState=h.DONE,p(),t(m)}()},d=c.prototype;return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,a,i){return a=a||e.name||"download",i||(e=l(e)),navigator.msSaveOrOpenBlob(e,a)}:(d.abort=function(){},d.readyState=d.INIT=0,d.WRITING=1,d.DONE=2,d.error=d.onwritestart=d.onprogress=d.onwrite=d.onabort=d.onerror=d.onwriteend=null,function(e,a,i){return new c(e,a||e.name||"download",i)})}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content); +/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */e.exports?e.exports.saveAs=n:null!==i(730)&&null!==i(495)&&(void 0===(r=function(){return n}.call(a,i,a,e))||(e.exports=r))},494:function(e,a){var i;i={qwerty:{"!":["`~",null,null,"2@","qQ",null],'"':[";:","[{","]}",null,null,"/?"],"#":["2@",null,null,"4$","eE","wW"],$:["3#",null,null,"5%","rR","eE"],"%":["4$",null,null,"6^","tT","rR"],"&":["6^",null,null,"8*","uU","yY"],"'":[";:","[{","]}",null,null,"/?"],"(":["8*",null,null,"0)","oO","iI"],")":["9(",null,null,"-_","pP","oO"],"*":["7&",null,null,"9(","iI","uU"],"+":["-_",null,null,null,"]}","[{"],",":["mM","kK","lL",".>",null,null],"-":["0)",null,null,"=+","[{","pP"],".":[",<","lL",";:","/?",null,null],"/":[".>",";:","'\"",null,null,null],0:["9(",null,null,"-_","pP","oO"],1:["`~",null,null,"2@","qQ",null],2:["1!",null,null,"3#","wW","qQ"],3:["2@",null,null,"4$","eE","wW"],4:["3#",null,null,"5%","rR","eE"],5:["4$",null,null,"6^","tT","rR"],6:["5%",null,null,"7&","yY","tT"],7:["6^",null,null,"8*","uU","yY"],8:["7&",null,null,"9(","iI","uU"],9:["8*",null,null,"0)","oO","iI"],":":["lL","pP","[{","'\"","/?",".>"],";":["lL","pP","[{","'\"","/?",".>"],"<":["mM","kK","lL",".>",null,null],"=":["-_",null,null,null,"]}","[{"],">":[",<","lL",";:","/?",null,null],"?":[".>",";:","'\"",null,null,null],"@":["1!",null,null,"3#","wW","qQ"],A:[null,"qQ","wW","sS","zZ",null],B:["vV","gG","hH","nN",null,null],C:["xX","dD","fF","vV",null,null],D:["sS","eE","rR","fF","cC","xX"],E:["wW","3#","4$","rR","dD","sS"],F:["dD","rR","tT","gG","vV","cC"],G:["fF","tT","yY","hH","bB","vV"],H:["gG","yY","uU","jJ","nN","bB"],I:["uU","8*","9(","oO","kK","jJ"],J:["hH","uU","iI","kK","mM","nN"],K:["jJ","iI","oO","lL",",<","mM"],L:["kK","oO","pP",";:",".>",",<"],M:["nN","jJ","kK",",<",null,null],N:["bB","hH","jJ","mM",null,null],O:["iI","9(","0)","pP","lL","kK"],P:["oO","0)","-_","[{",";:","lL"],Q:[null,"1!","2@","wW","aA",null],R:["eE","4$","5%","tT","fF","dD"],S:["aA","wW","eE","dD","xX","zZ"],T:["rR","5%","6^","yY","gG","fF"],U:["yY","7&","8*","iI","jJ","hH"],V:["cC","fF","gG","bB",null,null],W:["qQ","2@","3#","eE","sS","aA"],X:["zZ","sS","dD","cC",null,null],Y:["tT","6^","7&","uU","hH","gG"],Z:[null,"aA","sS","xX",null,null],"[":["pP","-_","=+","]}","'\"",";:"],"\\":["]}",null,null,null,null,null],"]":["[{","=+",null,"\\|",null,"'\""],"^":["5%",null,null,"7&","yY","tT"],_:["0)",null,null,"=+","[{","pP"],"`":[null,null,null,"1!",null,null],a:[null,"qQ","wW","sS","zZ",null],b:["vV","gG","hH","nN",null,null],c:["xX","dD","fF","vV",null,null],d:["sS","eE","rR","fF","cC","xX"],e:["wW","3#","4$","rR","dD","sS"],f:["dD","rR","tT","gG","vV","cC"],g:["fF","tT","yY","hH","bB","vV"],h:["gG","yY","uU","jJ","nN","bB"],i:["uU","8*","9(","oO","kK","jJ"],j:["hH","uU","iI","kK","mM","nN"],k:["jJ","iI","oO","lL",",<","mM"],l:["kK","oO","pP",";:",".>",",<"],m:["nN","jJ","kK",",<",null,null],n:["bB","hH","jJ","mM",null,null],o:["iI","9(","0)","pP","lL","kK"],p:["oO","0)","-_","[{",";:","lL"],q:[null,"1!","2@","wW","aA",null],r:["eE","4$","5%","tT","fF","dD"],s:["aA","wW","eE","dD","xX","zZ"],t:["rR","5%","6^","yY","gG","fF"],u:["yY","7&","8*","iI","jJ","hH"],v:["cC","fF","gG","bB",null,null],w:["qQ","2@","3#","eE","sS","aA"],x:["zZ","sS","dD","cC",null,null],y:["tT","6^","7&","uU","hH","gG"],z:[null,"aA","sS","xX",null,null],"{":["pP","-_","=+","]}","'\"",";:"],"|":["]}",null,null,null,null,null],"}":["[{","=+",null,"\\|",null,"'\""],"~":[null,null,null,"1!",null,null]},dvorak:{"!":["`~",null,null,"2@","'\"",null],'"':[null,"1!","2@",",<","aA",null],"#":["2@",null,null,"4$",".>",",<"],$:["3#",null,null,"5%","pP",".>"],"%":["4$",null,null,"6^","yY","pP"],"&":["6^",null,null,"8*","gG","fF"],"'":[null,"1!","2@",",<","aA",null],"(":["8*",null,null,"0)","rR","cC"],")":["9(",null,null,"[{","lL","rR"],"*":["7&",null,null,"9(","cC","gG"],"+":["/?","]}",null,"\\|",null,"-_"],",":["'\"","2@","3#",".>","oO","aA"],"-":["sS","/?","=+",null,null,"zZ"],".":[",<","3#","4$","pP","eE","oO"],"/":["lL","[{","]}","=+","-_","sS"],0:["9(",null,null,"[{","lL","rR"],1:["`~",null,null,"2@","'\"",null],2:["1!",null,null,"3#",",<","'\""],3:["2@",null,null,"4$",".>",",<"],4:["3#",null,null,"5%","pP",".>"],5:["4$",null,null,"6^","yY","pP"],6:["5%",null,null,"7&","fF","yY"],7:["6^",null,null,"8*","gG","fF"],8:["7&",null,null,"9(","cC","gG"],9:["8*",null,null,"0)","rR","cC"],":":[null,"aA","oO","qQ",null,null],";":[null,"aA","oO","qQ",null,null],"<":["'\"","2@","3#",".>","oO","aA"],"=":["/?","]}",null,"\\|",null,"-_"],">":[",<","3#","4$","pP","eE","oO"],"?":["lL","[{","]}","=+","-_","sS"],"@":["1!",null,null,"3#",",<","'\""],A:[null,"'\"",",<","oO",";:",null],B:["xX","dD","hH","mM",null,null],C:["gG","8*","9(","rR","tT","hH"],D:["iI","fF","gG","hH","bB","xX"],E:["oO",".>","pP","uU","jJ","qQ"],F:["yY","6^","7&","gG","dD","iI"],G:["fF","7&","8*","cC","hH","dD"],H:["dD","gG","cC","tT","mM","bB"],I:["uU","yY","fF","dD","xX","kK"],J:["qQ","eE","uU","kK",null,null],K:["jJ","uU","iI","xX",null,null],L:["rR","0)","[{","/?","sS","nN"],M:["bB","hH","tT","wW",null,null],N:["tT","rR","lL","sS","vV","wW"],O:["aA",",<",".>","eE","qQ",";:"],P:[".>","4$","5%","yY","uU","eE"],Q:[";:","oO","eE","jJ",null,null],R:["cC","9(","0)","lL","nN","tT"],S:["nN","lL","/?","-_","zZ","vV"],T:["hH","cC","rR","nN","wW","mM"],U:["eE","pP","yY","iI","kK","jJ"],V:["wW","nN","sS","zZ",null,null],W:["mM","tT","nN","vV",null,null],X:["kK","iI","dD","bB",null,null],Y:["pP","5%","6^","fF","iI","uU"],Z:["vV","sS","-_",null,null,null],"[":["0)",null,null,"]}","/?","lL"],"\\":["=+",null,null,null,null,null],"]":["[{",null,null,null,"=+","/?"],"^":["5%",null,null,"7&","fF","yY"],_:["sS","/?","=+",null,null,"zZ"],"`":[null,null,null,"1!",null,null],a:[null,"'\"",",<","oO",";:",null],b:["xX","dD","hH","mM",null,null],c:["gG","8*","9(","rR","tT","hH"],d:["iI","fF","gG","hH","bB","xX"],e:["oO",".>","pP","uU","jJ","qQ"],f:["yY","6^","7&","gG","dD","iI"],g:["fF","7&","8*","cC","hH","dD"],h:["dD","gG","cC","tT","mM","bB"],i:["uU","yY","fF","dD","xX","kK"],j:["qQ","eE","uU","kK",null,null],k:["jJ","uU","iI","xX",null,null],l:["rR","0)","[{","/?","sS","nN"],m:["bB","hH","tT","wW",null,null],n:["tT","rR","lL","sS","vV","wW"],o:["aA",",<",".>","eE","qQ",";:"],p:[".>","4$","5%","yY","uU","eE"],q:[";:","oO","eE","jJ",null,null],r:["cC","9(","0)","lL","nN","tT"],s:["nN","lL","/?","-_","zZ","vV"],t:["hH","cC","rR","nN","wW","mM"],u:["eE","pP","yY","iI","kK","jJ"],v:["wW","nN","sS","zZ",null,null],w:["mM","tT","nN","vV",null,null],x:["kK","iI","dD","bB",null,null],y:["pP","5%","6^","fF","iI","uU"],z:["vV","sS","-_",null,null,null],"{":["0)",null,null,"]}","/?","lL"],"|":["=+",null,null,null,null,null],"}":["[{",null,null,null,"=+","/?"],"~":[null,null,null,"1!",null,null]},keypad:{"*":["/",null,null,null,"-","+","9","8"],"+":["9","*","-",null,null,null,null,"6"],"-":["*",null,null,null,null,null,"+","9"],".":["0","2","3",null,null,null,null,null],"/":[null,null,null,null,"*","9","8","7"],0:[null,"1","2","3",".",null,null,null],1:[null,null,"4","5","2","0",null,null],2:["1","4","5","6","3",".","0",null],3:["2","5","6",null,null,null,".","0"],4:[null,null,"7","8","5","2","1",null],5:["4","7","8","9","6","3","2","1"],6:["5","8","9","+",null,null,"3","2"],7:[null,null,null,"/","8","5","4",null],8:["7",null,"/","*","9","6","5","4"],9:["8","/","*","-","+",null,"6","5"]},mac_keypad:{"*":["/",null,null,null,null,null,"-","9"],"+":["6","9","-",null,null,null,null,"3"],"-":["9","/","*",null,null,null,"+","6"],".":["0","2","3",null,null,null,null,null],"/":["=",null,null,null,"*","-","9","8"],0:[null,"1","2","3",".",null,null,null],1:[null,null,"4","5","2","0",null,null],2:["1","4","5","6","3",".","0",null],3:["2","5","6","+",null,null,".","0"],4:[null,null,"7","8","5","2","1",null],5:["4","7","8","9","6","3","2","1"],6:["5","8","9","-","+",null,"3","2"],7:[null,null,null,"=","8","5","4",null],8:["7",null,"=","/","9","6","5","4"],9:["8","=","/","*","-","+","6","5"],"=":[null,null,null,null,"/","9","8","7"]}},e.exports=i},730:function(e,a){e.exports=function(){throw new Error("define cannot be used indirect")}},740:function(e,a,i){"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.scorePassword=function(e){if(0===e.length)return null;var a=t.slice();a.push(n.default.get().getUserIdLocalpart());var i=(0,r.default)(e,a);if(e.includes(" ")){var o=(0,r.default)(e.replace(/ /g,""),a);o.scoreh;r=0<=h?++l:--l)for(n=c=g=r,p=s;g<=p?cp;n=g<=p?++c:--c)d.slice(r,+n+1||9e9)in m&&(u=m[b=d.slice(r,+n+1||9e9)],t.push({pattern:"dictionary",i:r,j:n,token:e.slice(r,+n+1||9e9),matched_word:b,rank:u,dictionary_name:i,reversed:!1,l33t:!1}));return this.sorted(t)},reverse_dictionary_match:function(e,a){var i,r,n,s,t,l;for(null==a&&(a=o),l=e.split("").reverse().join(""),s=0,i=(n=this.dictionary_match(l,a)).length;s0&&(u[n]=l);return u},enumerate_l33t_subs:function(e){var a,i,r,n,s,o,t,l,c,d,u,m,h,g,p;for(s=function(){var a;for(n in a=[],e)a.push(n);return a}(),p=[[]],i=function(e){var a,i,r,s,o,t,l,c;for(i=[],o={},t=0,s=e.length;tb;o=0<=b?++h:--h)if(k[o][0]===t){n=o;break}-1===n?(v=k.concat([[t,s]]),d.push(v)):((f=k.slice(0)).splice(n,1),f.push([t,s]),d.push(k),d.push(f))}return p=i(d),r(y)}})(s),g=[],c=0,t=p.length;c "+v);return e}().join(", "),u.push(c)}return this.sorted(u.filter(function(e){return e.token.length>1}))},spatial_match:function(e,a){var i,r,s;for(r in null==a&&(a=n),s=[],a)i=a[r],this.extend(s,this.spatial_match_helper(e,i,r));return this.sorted(s)},SHIFTED_RX:/[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?]/,spatial_match_helper:function(e,a,i){var r,n,s,o,t,l,c,d,u,m,h,g,p,b;for(h=[],c=0;c2&&h.push({pattern:"spatial",i:c,j:d-1,token:e.slice(c,d),graph:i,turns:b,shifted_count:p}),c=d;break}d+=1}return h},repeat_match:function(e){var a,i,r,n,s,o,t,l,c,d,u,m,h,p,b;for(p=[],s=/(.+)\1+/g,d=/(.+?)\1+/g,u=/^(.+?)\1+$/,c=0;cm[0].length?(h=o,n=u.exec(h[0])[1]):n=(h=m)[1],t=(b=[h.index,h.index+h[0].length-1])[0],l=b[1],r=(a=g.most_guessable_match_sequence(n,this.omnimatch(n))).sequence,i=a.guesses,p.push({pattern:"repeat",i:t,j:l,token:h[0],base_token:n,base_guesses:i,base_matches:r,repeat_count:h[0].length/n.length}),c=l+1;return p},MAX_DELTA:5,sequence_match:function(e){var a,i,r,n,s,o,t,l,c;if(1===e.length)return[];for(c=function(a){return function(i,r,n){var s,o,t,c;if((r-i>1||1===Math.abs(n))&&0<(s=Math.abs(n))&&s<=a.MAX_DELTA)return c=e.slice(i,+r+1||9e9),/^[a-z]+$/.test(c)?(o="lower",t=26):/^[A-Z]+$/.test(c)?(o="upper",t=26):/^\d+$/.test(c)?(o="digits",t=10):(o="unicode",t=26),l.push({pattern:"sequence",i:i,j:r,token:e.slice(i,+r+1||9e9),sequence_name:o,sequence_space:t,ascending:n>0})}}(this),l=[],i=0,s=null,n=o=1,t=e.length;1<=t?ot;n=1<=t?++o:--o)a=e.charCodeAt(n)-e.charCodeAt(n-1),null==s&&(s=a),a!==s&&(c(i,r=n-1,s),i=r,s=a);return c(i,e.length-1,s),l},regex_match:function(e,a){var i,r,n,s;for(h in null==a&&(a=t),i=[],a)for((r=a[h]).lastIndex=0;n=r.exec(e);)s=n[0],i.push({pattern:"regex",token:s,i:n.index,j:n.index+n[0].length-1,regex_name:h,regex_match:n});return this.sorted(i)},date_match:function(e){var a,i,n,s,o,t,l,c,d,u,m,h,p,b,y,k,f,v,w,z,j,x,q,_,E,P,C,R,A,S,I,N,B,D;for(h=[],p=/^\d{4,8}$/,b=/^(\d{1,4})([\s\/\\_.-])(\d{1,2})\2(\d{1,4})$/,t=f=0,j=e.length-4;0<=j?f<=j:f>=j;t=0<=j?++f:--f)for(l=v=x=t+3,q=t+7;(x<=q?v<=q:v>=q)&&!(l>=e.length);l=x<=q?++v:--v)if(D=e.slice(t,+l+1||9e9),p.exec(D)){for(n=[],w=0,u=(_=r[D.length]).length;w0){for(a=n[0],k=(y=function(e){return Math.abs(e.year-g.REFERENCE_YEAR)})(n[0]),z=0,m=(P=n.slice(1)).length;z=R;t=0<=R?++N:--N)for(l=B=A=t+5,S=t+9;(A<=S?B<=S:B>=S)&&!(l>=e.length);l=A<=S?++B:--B)D=e.slice(t,+l+1||9e9),null!=(I=b.exec(D))&&null!=(o=this.map_ints_to_dmy([parseInt(I[1]),parseInt(I[3]),parseInt(I[4])]))&&h.push({pattern:"date",token:D,i:t,j:l,separator:I[2],year:o.year,month:o.month,day:o.day});return this.sorted(h.filter(function(e){var a,i,r,n;for(a=!1,n=0,i=h.length;n=e.j){a=!0;break}return!a}))},map_ints_to_dmy:function(e){var a,i,r,n,s,o,t,l,c,d,u,m,h,g,p,b;if(!(e[1]>31||e[1]<=0)){for(t=0,l=0,p=0,o=0,r=e.length;o2050)return;i>31&&(l+=1),i>12&&(t+=1),i<=0&&(p+=1)}if(!(l>=2||3===t||p>=2)){for(c=0,n=(d=[[e[2],e.slice(0,2)],[e[0],e.slice(1,3)]]).length;c99?e:e>50?e+1900:e+2e3}},e.exports=m},743:function(e,a){var i;i={passwords:"123456,password,12345678,qwerty,123456789,12345,1234,111111,1234567,dragon,123123,baseball,abc123,football,monkey,letmein,shadow,master,696969,mustang,666666,qwertyuiop,123321,1234567890,pussy,superman,654321,1qaz2wsx,7777777,fuckyou,qazwsx,jordan,123qwe,000000,killer,trustno1,hunter,harley,zxcvbnm,asdfgh,buster,batman,soccer,tigger,charlie,sunshine,iloveyou,fuckme,ranger,hockey,computer,starwars,asshole,pepper,klaster,112233,zxcvbn,freedom,princess,maggie,pass,ginger,11111111,131313,fuck,love,cheese,159753,summer,chelsea,dallas,biteme,matrix,yankees,6969,corvette,austin,access,thunder,merlin,secret,diamond,hello,hammer,fucker,1234qwer,silver,gfhjkm,internet,samantha,golfer,scooter,test,orange,cookie,q1w2e3r4t5,maverick,sparky,phoenix,mickey,bigdog,snoopy,guitar,whatever,chicken,camaro,mercedes,peanut,ferrari,falcon,cowboy,welcome,sexy,samsung,steelers,smokey,dakota,arsenal,boomer,eagles,tigers,marina,nascar,booboo,gateway,yellow,porsche,monster,spider,diablo,hannah,bulldog,junior,london,purple,compaq,lakers,iceman,qwer1234,hardcore,cowboys,money,banana,ncc1701,boston,tennis,q1w2e3r4,coffee,scooby,123654,nikita,yamaha,mother,barney,brandy,chester,fuckoff,oliver,player,forever,rangers,midnight,chicago,bigdaddy,redsox,angel,badboy,fender,jasper,slayer,rabbit,natasha,marine,bigdick,wizard,marlboro,raiders,prince,casper,fishing,flower,jasmine,iwantu,panties,adidas,winter,winner,gandalf,password1,enter,ghbdtn,1q2w3e4r,golden,cocacola,jordan23,winston,madison,angels,panther,blowme,sexsex,bigtits,spanky,bitch,sophie,asdfasdf,horny,thx1138,toyota,tiger,dick,canada,12344321,blowjob,8675309,muffin,liverpoo,apples,qwerty123,passw0rd,abcd1234,pokemon,123abc,slipknot,qazxsw,123456a,scorpion,qwaszx,butter,startrek,rainbow,asdfghjkl,razz,newyork,redskins,gemini,cameron,qazwsxedc,florida,liverpool,turtle,sierra,viking,booger,butthead,doctor,rocket,159357,dolphins,captain,bandit,jaguar,packers,pookie,peaches,789456,asdf,dolphin,helpme,blue,theman,maxwell,qwertyui,shithead,lovers,maddog,giants,nirvana,metallic,hotdog,rosebud,mountain,warrior,stupid,elephant,suckit,success,bond007,jackass,alexis,porn,lucky,scorpio,samson,q1w2e3,azerty,rush2112,driver,freddy,1q2w3e4r5t,sydney,gators,dexter,red123,123456q,12345a,bubba,creative,voodoo,golf,trouble,america,nissan,gunner,garfield,bullshit,asdfghjk,5150,fucking,apollo,1qazxsw2,2112,eminem,legend,airborne,bear,beavis,apple,brooklyn,godzilla,skippy,4815162342,buddy,qwert,kitten,magic,shelby,beaver,phantom,asdasd,xavier,braves,darkness,blink182,copper,platinum,qweqwe,tomcat,01012011,girls,bigboy,102030,animal,police,online,11223344,voyager,lifehack,12qwaszx,fish,sniper,315475,trinity,blazer,heaven,lover,snowball,playboy,loveme,bubbles,hooters,cricket,willow,donkey,topgun,nintendo,saturn,destiny,pakistan,pumpkin,digital,sergey,redwings,explorer,tits,private,runner,therock,guinness,lasvegas,beatles,789456123,fire,cassie,christin,qwerty1,celtic,asdf1234,andrey,broncos,007007,babygirl,eclipse,fluffy,cartman,michigan,carolina,testing,alexande,birdie,pantera,cherry,vampire,mexico,dickhead,buffalo,genius,montana,beer,minecraft,maximus,flyers,lovely,stalker,metallica,doggie,snickers,speedy,bronco,lol123,paradise,yankee,horses,magnum,dreams,147258369,lacrosse,ou812,goober,enigma,qwertyu,scotty,pimpin,bollocks,surfer,cock,poohbear,genesis,star,asd123,qweasdzxc,racing,hello1,hawaii,eagle1,viper,poopoo,einstein,boobies,12345q,bitches,drowssap,simple,badger,alaska,action,jester,drummer,111222,spitfire,forest,maryjane,champion,diesel,svetlana,friday,hotrod,147258,chevy,lucky1,westside,security,google,badass,tester,shorty,thumper,hitman,mozart,zaq12wsx,boobs,reddog,010203,lizard,a123456,123456789a,ruslan,eagle,1232323q,scarface,qwerty12,147852,a12345,buddha,porno,420420,spirit,money1,stargate,qwe123,naruto,mercury,liberty,12345qwert,semperfi,suzuki,popcorn,spooky,marley,scotland,kitty,cherokee,vikings,simpsons,rascal,qweasd,hummer,loveyou,michael1,patches,russia,jupiter,penguin,passion,cumshot,vfhbyf,honda,vladimir,sandman,passport,raider,bastard,123789,infinity,assman,bulldogs,fantasy,sucker,1234554321,horney,domino,budlight,disney,ironman,usuckballz1,softball,brutus,redrum,bigred,mnbvcxz,fktrcfylh,karina,marines,digger,kawasaki,cougar,fireman,oksana,monday,cunt,justice,nigger,super,wildcats,tinker,logitech,dancer,swordfis,avalon,everton,alexandr,motorola,patriots,hentai,madonna,pussy1,ducati,colorado,connor,juventus,galore,smooth,freeuser,warcraft,boogie,titanic,wolverin,elizabet,arizona,valentin,saints,asdfg,accord,test123,password123,christ,yfnfif,stinky,slut,spiderma,naughty,chopper,hello123,ncc1701d,extreme,skyline,poop,zombie,pearljam,123qweasd,froggy,awesome,vision,pirate,fylhtq,dreamer,bullet,predator,empire,123123a,kirill,charlie1,panthers,penis,skipper,nemesis,rasdzv3,peekaboo,rolltide,cardinal,psycho,danger,mookie,happy1,wanker,chevelle,manutd,goblue,9379992,hobbes,vegeta,fyfcnfcbz,852456,picard,159951,windows,loverboy,victory,vfrcbv,bambam,serega,123654789,turkey,tweety,galina,hiphop,rooster,changeme,berlin,taurus,suckme,polina,electric,avatar,134679,maksim,raptor,alpha1,hendrix,newport,bigcock,brazil,spring,a1b2c3,madmax,alpha,britney,sublime,darkside,bigman,wolfpack,classic,hercules,ronaldo,letmein1,1q2w3e,741852963,spiderman,blizzard,123456789q,cheyenne,cjkysirj,tiger1,wombat,bubba1,pandora,zxc123,holiday,wildcat,devils,horse,alabama,147852369,caesar,12312,buddy1,bondage,pussycat,pickle,shaggy,catch22,leather,chronic,a1b2c3d4,admin,qqq111,qaz123,airplane,kodiak,freepass,billybob,sunset,katana,phpbb,chocolat,snowman,angel1,stingray,firebird,wolves,zeppelin,detroit,pontiac,gundam,panzer,vagina,outlaw,redhead,tarheels,greenday,nastya,01011980,hardon,engineer,dragon1,hellfire,serenity,cobra,fireball,lickme,darkstar,1029384756,01011,mustang1,flash,124578,strike,beauty,pavilion,01012000,bobafett,dbrnjhbz,bigmac,bowling,chris1,ytrewq,natali,pyramid,rulez,welcome1,dodgers,apache,swimming,whynot,teens,trooper,fuckit,defender,precious,135790,packard,weasel,popeye,lucifer,cancer,icecream,142536,raven,swordfish,presario,viktor,rockstar,blonde,james1,wutang,spike,pimp,atlanta,airforce,thailand,casino,lennon,mouse,741852,hacker,bluebird,hawkeye,456123,theone,catfish,sailor,goldfish,nfnmzyf,tattoo,pervert,barbie,maxima,nipples,machine,trucks,wrangler,rocks,tornado,lights,cadillac,bubble,pegasus,madman,longhorn,browns,target,666999,eatme,qazwsx123,microsoft,dilbert,christia,baller,lesbian,shooter,xfiles,seattle,qazqaz,cthutq,amateur,prelude,corona,freaky,malibu,123qweasdzxc,assassin,246810,atlantis,integra,pussies,iloveu,lonewolf,dragons,monkey1,unicorn,software,bobcat,stealth,peewee,openup,753951,srinivas,zaqwsx,valentina,shotgun,trigger,veronika,bruins,coyote,babydoll,joker,dollar,lestat,rocky1,hottie,random,butterfly,wordpass,smiley,sweety,snake,chipper,woody,samurai,devildog,gizmo,maddie,soso123aljg,mistress,freedom1,flipper,express,hjvfirf,moose,cessna,piglet,polaris,teacher,montreal,cookies,wolfgang,scully,fatboy,wicked,balls,tickle,bunny,dfvgbh,foobar,transam,pepsi,fetish,oicu812,basketba,toshiba,hotstuff,sunday,booty,gambit,31415926,impala,stephani,jessica1,hooker,lancer,knicks,shamrock,fuckyou2,stinger,314159,redneck,deftones,squirt,siemens,blaster,trucker,subaru,renegade,ibanez,manson,swinger,reaper,blondie,mylove,galaxy,blahblah,enterpri,travel,1234abcd,babylon5,indiana,skeeter,master1,sugar,ficken,smoke,bigone,sweetpea,fucked,trfnthbyf,marino,escort,smitty,bigfoot,babes,larisa,trumpet,spartan,valera,babylon,asdfghj,yankees1,bigboobs,stormy,mister,hamlet,aardvark,butterfl,marathon,paladin,cavalier,manchester,skater,indigo,hornet,buckeyes,01011990,indians,karate,hesoyam,toronto,diamonds,chiefs,buckeye,1qaz2wsx3edc,highland,hotsex,charger,redman,passwor,maiden,drpepper,storm,pornstar,garden,12345678910,pencil,sherlock,timber,thuglife,insane,pizza,jungle,jesus1,aragorn,1a2b3c,hamster,david1,triumph,techno,lollol,pioneer,catdog,321654,fktrctq,morpheus,141627,pascal,shadow1,hobbit,wetpussy,erotic,consumer,blabla,justme,stones,chrissy,spartak,goforit,burger,pitbull,adgjmptw,italia,barcelona,hunting,colors,kissme,virgin,overlord,pebbles,sundance,emerald,doggy,racecar,irina,element,1478963,zipper,alpine,basket,goddess,poison,nipple,sakura,chichi,huskers,13579,pussys,q12345,ultimate,ncc1701e,blackie,nicola,rommel,matthew1,caserta,omega,geronimo,sammy1,trojan,123qwe123,philips,nugget,tarzan,chicks,aleksandr,bassman,trixie,portugal,anakin,dodger,bomber,superfly,madness,q1w2e3r4t5y6,loser,123asd,fatcat,ybrbnf,soldier,warlock,wrinkle1,desire,sexual,babe,seminole,alejandr,951753,11235813,westham,andrei,concrete,access14,weed,letmein2,ladybug,naked,christop,trombone,tintin,bluesky,rhbcnbyf,qazxswedc,onelove,cdtnkfyf,whore,vfvjxrf,titans,stallion,truck,hansolo,blue22,smiles,beagle,panama,kingkong,flatron,inferno,mongoose,connect,poiuyt,snatch,qawsed,juice,blessed,rocker,snakes,turbo,bluemoon,sex4me,finger,jamaica,a1234567,mulder,beetle,fuckyou1,passat,immortal,plastic,123454321,anthony1,whiskey,dietcoke,suck,spunky,magic1,monitor,cactus,exigen,planet,ripper,teen,spyder,apple1,nolimit,hollywoo,sluts,sticky,trunks,1234321,14789632,pickles,sailing,bonehead,ghbdtnbr,delta,charlott,rubber,911911,112358,molly1,yomama,hongkong,jumper,william1,ilovesex,faster,unreal,cumming,memphis,1123581321,nylons,legion,sebastia,shalom,pentium,geheim,werewolf,funtime,ferret,orion,curious,555666,niners,cantona,sprite,philly,pirates,abgrtyu,lollipop,eternity,boeing,super123,sweets,cooldude,tottenha,green1,jackoff,stocking,7895123,moomoo,martini,biscuit,drizzt,colt45,fossil,makaveli,snapper,satan666,maniac,salmon,patriot,verbatim,nasty,shasta,asdzxc,shaved,blackcat,raistlin,qwerty12345,punkrock,cjkywt,01012010,4128,waterloo,crimson,twister,oxford,musicman,seinfeld,biggie,condor,ravens,megadeth,wolfman,cosmos,sharks,banshee,keeper,foxtrot,gn56gn56,skywalke,velvet,black1,sesame,dogs,squirrel,privet,sunrise,wolverine,sucks,legolas,grendel,ghost,cats,carrot,frosty,lvbnhbq,blades,stardust,frog,qazwsxed,121314,coolio,brownie,groovy,twilight,daytona,vanhalen,pikachu,peanuts,licker,hershey,jericho,intrepid,ninja,1234567a,zaq123,lobster,goblin,punisher,strider,shogun,kansas,amadeus,seven7,jason1,neptune,showtime,muscle,oldman,ekaterina,rfrfirf,getsome,showme,111222333,obiwan,skittles,danni,tanker,maestro,tarheel,anubis,hannibal,anal,newlife,gothic,shark,fighter,blue123,blues,123456z,princes,slick,chaos,thunder1,sabine,1q2w3e4r5t6y,python,test1,mirage,devil,clover,tequila,chelsea1,surfing,delete,potato,chubby,panasonic,sandiego,portland,baggins,fusion,sooners,blackdog,buttons,californ,moscow,playtime,mature,1a2b3c4d,dagger,dima,stimpy,asdf123,gangster,warriors,iverson,chargers,byteme,swallow,liquid,lucky7,dingdong,nymets,cracker,mushroom,456852,crusader,bigguy,miami,dkflbvbh,bugger,nimrod,tazman,stranger,newpass,doodle,powder,gotcha,guardian,dublin,slapshot,septembe,147896325,pepsi1,milano,grizzly,woody1,knights,photos,2468,nookie,charly,rammstein,brasil,123321123,scruffy,munchkin,poopie,123098,kittycat,latino,walnut,1701,thegame,viper1,1passwor,kolobok,picasso,robert1,barcelon,bananas,trance,auburn,coltrane,eatshit,goodluck,starcraft,wheels,parrot,postal,blade,wisdom,pink,gorilla,katerina,pass123,andrew1,shaney14,dumbass,osiris,fuck_inside,oakland,discover,ranger1,spanking,lonestar,bingo,meridian,ping,heather1,dookie,stonecol,megaman,192837465,rjntyjr,ledzep,lowrider,25802580,richard1,firefly,griffey,racerx,paradox,ghjcnj,gangsta,zaq1xsw2,tacobell,weezer,sirius,halflife,buffett,shiloh,123698745,vertigo,sergei,aliens,sobaka,keyboard,kangaroo,sinner,soccer1,0.0.000,bonjour,socrates,chucky,hotboy,sprint,0007,sarah1,scarlet,celica,shazam,formula1,sommer,trebor,qwerasdf,jeep,mailcreated5240,bollox,asshole1,fuckface,honda1,rebels,vacation,lexmark,penguins,12369874,ragnarok,formula,258456,tempest,vfhecz,tacoma,qwertz,colombia,flames,rockon,duck,prodigy,wookie,dodgeram,mustangs,123qaz,sithlord,smoker,server,bang,incubus,scoobydo,oblivion,molson,kitkat,titleist,rescue,zxcv1234,carpet,1122,bigballs,tardis,jimbob,xanadu,blueeyes,shaman,mersedes,pooper,pussy69,golfing,hearts,mallard,12312312,kenwood,patrick1,dogg,cowboys1,oracle,123zxc,nuttertools,102938,topper,1122334455,shemale,sleepy,gremlin,yourmom,123987,gateway1,printer,monkeys,peterpan,mikey,kingston,cooler,analsex,jimbo,pa55word,asterix,freckles,birdman,frank1,defiant,aussie,stud,blondes,tatyana,445566,aspirine,mariners,jackal,deadhead,katrin,anime,rootbeer,frogger,polo,scooter1,hallo,noodles,thomas1,parola,shaolin,celine,11112222,plymouth,creampie,justdoit,ohyeah,fatass,assfuck,amazon,1234567q,kisses,magnus,camel,nopass,bosco,987456,6751520,harley1,putter,champs,massive,spidey,lightnin,camelot,letsgo,gizmodo,aezakmi,bones,caliente,12121,goodtime,thankyou,raiders1,brucelee,redalert,aquarius,456654,catherin,smokin,pooh,mypass,astros,roller,porkchop,sapphire,qwert123,kevin1,a1s2d3f4,beckham,atomic,rusty1,vanilla,qazwsxedcrfv,hunter1,kaktus,cxfcnmt,blacky,753159,elvis1,aggies,blackjac,bangkok,scream,123321q,iforgot,power1,kasper,abc12,buster1,slappy,shitty,veritas,chevrole,amber1,01012001,vader,amsterdam,jammer,primus,spectrum,eduard,granny,horny1,sasha1,clancy,usa123,satan,diamond1,hitler,avenger,1221,spankme,123456qwerty,simba,smudge,scrappy,labrador,john316,syracuse,front242,falcons,husker,candyman,commando,gator,pacman,delta1,pancho,krishna,fatman,clitoris,pineappl,lesbians,8j4ye3uz,barkley,vulcan,punkin,boner,celtics,monopoly,flyboy,romashka,hamburg,123456aa,lick,gangbang,223344,area51,spartans,aaa111,tricky,snuggles,drago,homerun,vectra,homer1,hermes,topcat,cuddles,infiniti,1234567890q,cosworth,goose,phoenix1,killer1,ivanov,bossman,qawsedrf,peugeot,exigent,doberman,durango,brandon1,plumber,telefon,horndog,laguna,rbhbkk,dawg,webmaster,breeze,beast,porsche9,beefcake,leopard,redbull,oscar1,topdog,godsmack,theking,pics,omega1,speaker,viktoria,fuckers,bowler,starbuck,gjkbyf,valhalla,anarchy,blacks,herbie,kingpin,starfish,nokia,loveit,achilles,906090,labtec,ncc1701a,fitness,jordan1,brando,arsenal1,bull,kicker,napass,desert,sailboat,bohica,tractor,hidden,muppet,jackson1,jimmy1,terminator,phillies,pa55w0rd,terror,farside,swingers,legacy,frontier,butthole,doughboy,jrcfyf,tuesday,sabbath,daniel1,nebraska,homers,qwertyuio,azamat,fallen,agent007,striker,camels,iguana,looker,pinkfloy,moloko,qwerty123456,dannyboy,luckydog,789654,pistol,whocares,charmed,skiing,select,franky,puppy,daniil,vladik,vette,vfrcbvrf,ihateyou,nevada,moneys,vkontakte,mandingo,puppies,666777,mystic,zidane,kotenok,dilligaf,budman,bunghole,zvezda,123457,triton,golfball,technics,trojans,panda,laptop,rookie,01011991,15426378,aberdeen,gustav,jethro,enterprise,igor,stripper,filter,hurrican,rfnthbyf,lespaul,gizmo1,butch,132435,dthjybrf,1366613,excalibu,963852,nofear,momoney,possum,cutter,oilers,moocow,cupcake,gbpltw,batman1,splash,svetik,super1,soleil,bogdan,melissa1,vipers,babyboy,tdutybq,lancelot,ccbill,keystone,passwort,flamingo,firefox,dogman,vortex,rebel,noodle,raven1,zaphod,killme,pokemon1,coolman,danila,designer,skinny,kamikaze,deadman,gopher,doobie,warhammer,deeznuts,freaks,engage,chevy1,steve1,apollo13,poncho,hammers,azsxdc,dracula,000007,sassy,bitch1,boots,deskjet,12332,macdaddy,mighty,rangers1,manchest,sterlin,casey1,meatball,mailman,sinatra,cthulhu,summer1,bubbas,cartoon,bicycle,eatpussy,truelove,sentinel,tolkien,breast,capone,lickit,summit,123456k,peter1,daisy1,kitty1,123456789z,crazy1,jamesbon,texas1,sexygirl,362436,sonic,billyboy,redhot,microsof,microlab,daddy1,rockets,iloveyo,fernand,gordon24,danie,cutlass,polska,star69,titties,pantyhos,01011985,thekid,aikido,gofish,mayday,1234qwe,coke,anfield,sony,lansing,smut,scotch,sexx,catman,73501505,hustler,saun,dfkthbz,passwor1,jenny1,azsxdcfv,cheers,irish1,gabrie,tinman,orioles,1225,charlton,fortuna,01011970,airbus,rustam,xtreme,bigmoney,zxcasd,retard,grumpy,huskies,boxing,4runner,kelly1,ultima,warlord,fordf150,oranges,rotten,asdfjkl,superstar,denali,sultan,bikini,saratoga,thor,figaro,sixers,wildfire,vladislav,128500,sparta,mayhem,greenbay,chewie,music1,number1,cancun,fabie,mellon,poiuytrewq,cloud9,crunch,bigtime,chicken1,piccolo,bigbird,321654987,billy1,mojo,01011981,maradona,sandro,chester1,bizkit,rjirfrgbde,789123,rightnow,jasmine1,hyperion,treasure,meatloaf,armani,rovers,jarhead,01011986,cruise,coconut,dragoon,utopia,davids,cosmo,rfhbyf,reebok,1066,charli,giorgi,sticks,sayang,pass1234,exodus,anaconda,zaqxsw,illini,woofwoof,emily1,sandy1,packer,poontang,govols,jedi,tomato,beaner,cooter,creamy,lionking,happy123,albatros,poodle,kenworth,dinosaur,greens,goku,happyday,eeyore,tsunami,cabbage,holyshit,turkey50,memorex,chaser,bogart,orgasm,tommy1,volley,whisper,knopka,ericsson,walleye,321123,pepper1,katie1,chickens,tyler1,corrado,twisted,100000,zorro,clemson,zxcasdqwe,tootsie,milana,zenith,fktrcfylhf,shania,frisco,polniypizdec0211,crazybab,junebug,fugazi,rereirf,vfvekz,1001,sausage,vfczyz,koshka,clapton,justin1,anhyeuem,condom,fubar,hardrock,skywalker,tundra,cocks,gringo,150781,canon,vitalik,aspire,stocks,samsung1,applepie,abc12345,arjay,gandalf1,boob,pillow,sparkle,gmoney,rockhard,lucky13,samiam,everest,hellyeah,bigsexy,skorpion,rfrnec,hedgehog,australi,candle,slacker,dicks,voyeur,jazzman,america1,bobby1,br0d3r,wolfie,vfksirf,1qa2ws3ed,13243546,fright,yosemite,temp,karolina,fart,barsik,surf,cheetah,baddog,deniska,starship,bootie,milena,hithere,kume,greatone,dildo,50cent,0.0.0.000,albion,amanda1,midget,lion,maxell,football1,cyclone,freeporn,nikola,bonsai,kenshin,slider,balloon,roadkill,killbill,222333,jerkoff,78945612,dinamo,tekken,rambler,goliath,cinnamon,malaka,backdoor,fiesta,packers1,rastaman,fletch,sojdlg123aljg,stefano,artemis,calico,nyjets,damnit,robotech,duchess,rctybz,hooter,keywest,18436572,hal9000,mechanic,pingpong,operator,presto,sword,rasputin,spank,bristol,faggot,shado,963852741,amsterda,321456,wibble,carrera,alibaba,majestic,ramses,duster,route66,trident,clipper,steeler,wrestlin,divine,kipper,gotohell,kingfish,snake1,passwords,buttman,pompey,viagra,zxcvbnm1,spurs,332211,slutty,lineage2,oleg,macross,pooter,brian1,qwert1,charles1,slave,jokers,yzerman,swimmer,ne1469,nwo4life,solnce,seamus,lolipop,pupsik,moose1,ivanova,secret1,matador,love69,420247,ktyjxrf,subway,cinder,vermont,pussie,chico,florian,magick,guiness,allsop,ghetto,flash1,a123456789,typhoon,dfkthf,depeche,skydive,dammit,seeker,fuckthis,crysis,kcj9wx5n,umbrella,r2d2c3po,123123q,snoopdog,critter,theboss,ding,162534,splinter,kinky,cyclops,jayhawk,456321,caramel,qwer123,underdog,caveman,onlyme,grapes,feather,hotshot,fuckher,renault,george1,sex123,pippen,000001,789987,floppy,cunts,megapass,1000,pornos,usmc,kickass,great1,quattro,135246,wassup,helloo,p0015123,nicole1,chivas,shannon1,bullseye,java,fishes,blackhaw,jamesbond,tunafish,juggalo,dkflbckfd,123789456,dallas1,translator,122333,beanie,alucard,gfhjkm123,supersta,magicman,ashley1,cohiba,xbox360,caligula,12131415,facial,7753191,dfktynbyf,cobra1,cigars,fang,klingon,bob123,safari,looser,10203,deepthroat,malina,200000,tazmania,gonzo,goalie,jacob1,monaco,cruiser,misfit,vh5150,tommyboy,marino13,yousuck,sharky,vfhufhbnf,horizon,absolut,brighton,123456r,death1,kungfu,maxx,forfun,mamapapa,enter1,budweise,banker,getmoney,kostya,qazwsx12,bigbear,vector,fallout,nudist,gunners,royals,chainsaw,scania,trader,blueboy,walrus,eastside,kahuna,qwerty1234,love123,steph,01011989,cypress,champ,undertaker,ybrjkfq,europa,snowboar,sabres,moneyman,chrisbln,minime,nipper,groucho,whitey,viewsonic,penthous,wolf359,fabric,flounder,coolguy,whitesox,passme,smegma,skidoo,thanatos,fucku2,snapple,dalejr,mondeo,thesims,mybaby,panasoni,sinbad,thecat,topher,frodo,sneakers,q123456,z1x2c3,alfa,chicago1,taylor1,ghjcnjnfr,cat123,olivier,cyber,titanium,0420,madison1,jabroni,dang,hambone,intruder,holly1,gargoyle,sadie1,static,poseidon,studly,newcastl,sexxxx,poppy,johannes,danzig,beastie,musica,buckshot,sunnyday,adonis,bluedog,bonkers,2128506,chrono,compute,spawn,01011988,turbo1,smelly,wapbbs,goldstar,ferrari1,778899,quantum,pisces,boomboom,gunnar,1024,test1234,florida1,nike,superman1,multiplelo,custom,motherlode,1qwerty,westwood,usnavy,apple123,daewoo,korn,stereo,sasuke,sunflowe,watcher,dharma,555777,mouse1,assholes,babyblue,123qwerty,marius,walmart,snoop,starfire,tigger1,paintbal,knickers,aaliyah,lokomotiv,theend,winston1,sapper,rover,erotica,scanner,racer,zeus,sexy69,doogie,bayern,joshua1,newbie,scott1,losers,droopy,outkast,martin1,dodge1,wasser,ufkbyf,rjycnfynby,thirteen,12345z,112211,hotred,deejay,hotpussy,192837,jessic,philippe,scout,panther1,cubbies,havefun,magpie,fghtkm,avalanch,newyork1,pudding,leonid,harry1,cbr600,audia4,bimmer,fucku,01011984,idontknow,vfvfgfgf,1357,aleksey,builder,01011987,zerocool,godfather,mylife,donuts,allmine,redfish,777888,sascha,nitram,bounce,333666,smokes,1x2zkg8w,rodman,stunner,zxasqw12,hoosier,hairy,beretta,insert,123456s,rtyuehe,francesc,tights,cheese1,micron,quartz,hockey1,gegcbr,searay,jewels,bogey,paintball,celeron,padres,bing,syncmaster,ziggy,simon1,beaches,prissy,diehard,orange1,mittens,aleksandra,queens,02071986,biggles,thongs,southpark,artur,twinkle,gretzky,rabota,cambiami,monalisa,gollum,chuckles,spike1,gladiator,whisky,spongebob,sexy1,03082006,mazafaka,meathead,4121,ou8122,barefoot,12345678q,cfitymrf,bigass,a1s2d3,kosmos,blessing,titty,clevelan,terrapin,ginger1,johnboy,maggot,clarinet,deeznutz,336699,stumpy,stoney,footbal,traveler,volvo,bucket,snapon,pianoman,hawkeyes,futbol,casanova,tango,goodboy,scuba,honey1,sexyman,warthog,mustard,abc1234,nickel,10203040,meowmeow,1012,boricua,prophet,sauron,12qwas,reefer,andromeda,crystal1,joker1,90210,goofy,loco,lovesex,triangle,whatsup,mellow,bengals,monster1,maste,01011910,lover1,love1,123aaa,sunshin,smeghead,hokies,sting,welder,rambo,cerberus,bunny1,rockford,monke,1q2w3e4r5,goldwing,gabriell,buzzard,crjhgbjy,james007,rainman,groove,tiberius,purdue,nokia6300,hayabusa,shou,jagger,diver,zigzag,poochie,usarmy,phish,redwood,redwing,12345679,salamander,silver1,abcd123,sputnik,boobie,ripple,eternal,12qw34er,thegreat,allstar,slinky,gesperrt,mishka,whiskers,pinhead,overkill,sweet1,rhfcjnrf,montgom240,sersolution,jamie1,starman,proxy,swords,nikolay,bacardi,rasta,badgirl,rebecca1,wildman,penny1,spaceman,1007,10101,logan1,hacked,bulldog1,helmet,windsor,buffy1,runescape,trapper,123451,banane,dbrnjh,ripken,12345qwe,frisky,shun,fester,oasis,lightning,ib6ub9,cicero,kool,pony,thedog,784512,01011992,megatron,illusion,edward1,napster,11223,squash,roadking,woohoo,19411945,hoosiers,01091989,tracker,bagira,midway,leavemealone,br549,14725836,235689,menace,rachel1,feng,laser,stoned,realmadrid,787898,balloons,tinkerbell,5551212,maria1,pobeda,heineken,sonics,moonlight,optimus,comet,orchid,02071982,jaybird,kashmir,12345678a,chuang,chunky,peach,mortgage,rulezzz,saleen,chuckie,zippy,fishing1,gsxr750,doghouse,maxim,reader,shai,buddah,benfica,chou,salomon,meister,eraser,blackbir,bigmike,starter,pissing,angus,deluxe,eagles1,hardcock,135792468,mian,seahawks,godfathe,bookworm,gregor,intel,talisman,blackjack,babyface,hawaiian,dogfood,zhong,01011975,sancho,ludmila,medusa,mortimer,123456654321,roadrunn,just4me,stalin,01011993,handyman,alphabet,pizzas,calgary,clouds,password2,cgfhnfr,f**k,cubswin,gong,lexus,max123,xxx123,digital1,gfhjkm1,7779311,missy1,michae,beautifu,gator1,1005,pacers,buddie,chinook,heckfy,dutchess,sally1,breasts,beowulf,darkman,jenn,tiffany1,zhei,quan,qazwsx1,satana,shang,idontkno,smiths,puddin,nasty1,teddybea,valkyrie,passwd,chao,boxster,killers,yoda,cheater,inuyasha,beast1,wareagle,foryou,dragonball,mermaid,bhbirf,teddy1,dolphin1,misty1,delphi,gromit,sponge,qazzaq,fytxrf,gameover,diao,sergi,beamer,beemer,kittykat,rancid,manowar,adam12,diggler,assword,austin1,wishbone,gonavy,sparky1,fisting,thedude,sinister,1213,venera,novell,salsero,jayden,fuckoff1,linda1,vedder,02021987,1pussy,redline,lust,jktymrf,02011985,dfcbkbq,dragon12,chrome,gamecube,titten,cong,bella1,leng,02081988,eureka,bitchass,147369,banner,lakota,123321a,mustafa,preacher,hotbox,02041986,z1x2c3v4,playstation,01011977,claymore,electra,checkers,zheng,qing,armagedon,02051986,wrestle,svoboda,bulls,nimbus,alenka,madina,newpass6,onetime,aa123456,bartman,02091987,silverad,electron,12345t,devil666,oliver1,skylar,rhtdtlrj,gobucks,johann,12011987,milkman,02101985,camper,thunderb,bigbutt,jammin,davide,cheeks,goaway,lighter,claudi,thumbs,pissoff,ghostrider,cocaine,teng,squall,lotus,hootie,blackout,doitnow,subzero,02031986,marine1,02021988,pothead,123456qw,skate,1369,peng,antoni,neng,miao,bcfields,1492,marika,794613,musashi,tulips,nong,piao,chai,ruan,southpar,02061985,nude,mandarin,654123,ninjas,cannabis,jetski,xerxes,zhuang,kleopatra,dickie,bilbo,pinky,morgan1,1020,1017,dieter,baseball1,tottenham,quest,yfnfkmz,dirtbike,1234567890a,mango,jackson5,ipswich,iamgod,02011987,tdutybz,modena,qiao,slippery,qweasd123,bluefish,samtron,toon,111333,iscool,02091986,petrov,fuzzy,zhou,1357924680,mollydog,deng,02021986,1236987,pheonix,zhun,ghblehjr,othello,starcraf,000111,sanfran,a11111,cameltoe,badman,vasilisa,jiang,1qaz2ws,luan,sveta,12qw12,akira,chuai,369963,cheech,beatle,pickup,paloma,01011983,caravan,elizaveta,gawker,banzai,pussey,mullet,seng,bingo1,bearcat,flexible,farscape,borussia,zhuai,templar,guitar1,toolman,yfcntymrf,chloe1,xiang,slave1,guai,nuggets,02081984,mantis,slim,scorpio1,fyutkbyf,thedoors,02081987,02061986,123qq123,zappa,fergie,7ugd5hip2j,huai,asdfzxcv,sunflower,pussyman,deadpool,bigtit,01011982,love12,lassie,skyler,gatorade,carpedie,jockey,mancity,spectre,02021984,cameron1,artemka,reng,02031984,iomega,jing,moritz,spice,rhino,spinner,heater,zhai,hover,talon,grease,qiong,corleone,ltybcrf,tian,cowboy1,hippie,chimera,ting,alex123,02021985,mickey1,corsair,sonoma,aaron1,xxxpass,bacchus,webmaste,chuo,xyz123,chrysler,spurs1,artem,shei,cosmic,01020304,deutsch,gabriel1,123455,oceans,987456321,binladen,latinas,a12345678,speedo,buttercu,02081989,21031988,merlot,millwall,ceng,kotaku,jiong,dragonba,2580,stonecold,snuffy,01011999,02011986,hellos,blaze,maggie1,slapper,istanbul,bonjovi,babylove,mazda,bullfrog,phoeni,meng,porsche1,nomore,02061989,bobdylan,capslock,orion1,zaraza,teddybear,ntktajy,myname,rong,wraith,mets,niao,02041984,smokie,chevrolet,dialog,gfhjkmgfhjkm,dotcom,vadim,monarch,athlon,mikey1,hamish,pian,liang,coolness,chui,thoma,ramones,ciccio,chippy,eddie1,house1,ning,marker,cougars,jackpot,barbados,reds,pdtplf,knockers,cobalt,amateurs,dipshit,napoli,kilroy,pulsar,jayhawks,daemon,alexey,weng,shuang,9293709b13,shiner,eldorado,soulmate,mclaren,golfer1,andromed,duan,50spanks,sexyboy,dogshit,02021983,shuo,kakashka,syzygy,111111a,yeahbaby,qiang,netscape,fulham,120676,gooner,zhui,rainbow6,laurent,dog123,halifax,freeway,carlitos,147963,eastwood,microphone,monkey12,1123,persik,coldbeer,geng,nuan,danny1,fgtkmcby,entropy,gadget,just4fun,sophi,baggio,carlito,1234567891,02021989,02041983,specialk,piramida,suan,bigblue,salasana,hopeful,mephisto,bailey1,hack,annie1,generic,violetta,spencer1,arcadia,02051983,hondas,9562876,trainer,jones1,smashing,liao,159632,iceberg,rebel1,snooker,temp123,zang,matteo,fastball,q2w3e4r5,bamboo,fuckyo,shutup,astro,buddyboy,nikitos,redbird,maxxxx,shitface,02031987,kuai,kissmyass,sahara,radiohea,1234asdf,wildcard,maxwell1,patric,plasma,heynow,bruno1,shao,bigfish,misfits,sassy1,sheng,02011988,02081986,testpass,nanook,cygnus,licking,slavik,pringles,xing,1022,ninja1,submit,dundee,tiburon,pinkfloyd,yummy,shuai,guang,chopin,obelix,insomnia,stroker,1a2s3d4f,1223,playboy1,lazarus,jorda,spider1,homerj,sleeper,02041982,darklord,cang,02041988,02041987,tripod,magician,jelly,telephon,15975,vsjasnel12,pasword,iverson3,pavlov,homeboy,gamecock,amigo,brodie,budapest,yjdsqgfhjkm,reckless,02011980,pang,tiger123,2469,mason1,orient,01011979,zong,cdtnbr,maksimka,1011,bushido,taxman,giorgio,sphinx,kazantip,02101984,concorde,verizon,lovebug,georg,sam123,seadoo,qazwsxedc123,jiao,jezebel,pharmacy,abnormal,jellybea,maxime,puffy,islander,bunnies,jiggaman,drakon,010180,pluto,zhjckfd,12365,classics,crusher,mordor,hooligan,strawberry,02081985,scrabble,hawaii50,1224,wg8e3wjf,cthtuf,premium,arrow,123456qwe,mazda626,ramrod,tootie,rhjrjlbk,ghost1,1211,bounty,niang,02071984,goat,killer12,sweetnes,porno1,masamune,426hemi,corolla,mariposa,hjccbz,doomsday,bummer,blue12,zhao,bird33,excalibur,samsun,kirsty,buttfuck,kfhbcf,zhuo,marcello,ozzy,02021982,dynamite,655321,master12,123465,lollypop,stepan,1qa2ws,spiker,goirish,callum,michael2,moonbeam,attila,henry1,lindros,andrea1,sporty,lantern,12365478,nextel,violin,volcom,998877,water1,imation,inspiron,dynamo,citadel,placebo,clowns,tiao,02061988,tripper,dabears,haggis,merlin1,02031985,anthrax,amerika,iloveme,vsegda,burrito,bombers,snowboard,forsaken,katarina,a1a2a3,woofer,tigger2,fullmoon,tiger2,spock,hannah1,snoopy1,sexxxy,sausages,stanislav,cobain,robotics,exotic,green123,mobydick,senators,pumpkins,fergus,asddsa,147741,258852,windsurf,reddevil,vfitymrf,nevermind,nang,woodland,4417,mick,shui,q1q2q3,wingman,69696,superb,zuan,ganesh,pecker,zephyr,anastasiya,icu812,larry1,02081982,broker,zalupa,mihail,vfibyf,dogger,7007,paddle,varvara,schalke,1z2x3c,presiden,yankees2,tuning,poopy,02051982,concord,vanguard,stiffy,rjhjktdf,felix1,wrench,firewall,boxer,bubba69,popper,02011984,temppass,gobears,cuan,tipper,fuckme1,kamila,thong,puss,bigcat,drummer1,02031982,sowhat,digimon,tigers1,rang,jingle,bian,uranus,soprano,mandy1,dusty1,fandango,aloha,pumpkin1,postman,02061980,dogcat,bombay,pussy123,onetwo,highheel,pippo,julie1,laura1,pepito,beng,smokey1,stylus,stratus,reload,duckie,karen1,jimbo1,225588,369258,krusty,snappy,asdf12,electro,111qqq,kuang,fishin,clit,abstr,christma,qqqqq1,1234560,carnage,guyver,boxers,kittens,zeng,1000000,qwerty11,toaster,cramps,yugioh,02061987,icehouse,zxcvbnm123,pineapple,namaste,harrypotter,mygirl,falcon1,earnhard,fender1,spikes,nutmeg,01081989,dogboy,02091983,369852,softail,mypassword,prowler,bigboss,1112,harvest,heng,jubilee,killjoy,basset,keng,zaqxswcde,redsox1,biao,titan,misfit99,robot,wifey,kidrock,02101987,gameboy,enrico,1z2x3c4v,broncos1,arrows,havana,banger,cookie1,chriss,123qw,platypus,cindy1,lumber,pinball,foxy,london1,1023,05051987,02041985,password12,superma,longbow,radiohead,nigga,12051988,spongebo,qwert12345,abrakadabra,dodgers1,02101989,chillin,niceguy,pistons,hookup,santafe,bigben,jets,1013,vikings1,mankind,viktoriya,beardog,hammer1,02071980,reddwarf,magelan,longjohn,jennife,gilles,carmex2,02071987,stasik,bumper,doofus,slamdunk,pixies,garion,steffi,alessandro,beerman,niceass,warrior1,honolulu,134679852,visa,johndeer,mother1,windmill,boozer,oatmeal,aptiva,busty,delight,tasty,slick1,bergkamp,badgers,guitars,puffin,02091981,nikki1,irishman,miller1,zildjian,123000,airwolf,magnet,anai,install,02041981,02061983,astra,romans,megan1,mudvayne,freebird,muscles,dogbert,02091980,02091984,snowflak,01011900,mang,joseph1,nygiants,playstat,junior1,vjcrdf,qwer12,webhompas,giraffe,pelican,jefferso,comanche,bruiser,monkeybo,kjkszpj,123456l,micro,albany,02051987,angel123,epsilon,aladin,death666,hounddog,josephin,altima,chilly,02071988,78945,ultra,02041979,gasman,thisisit,pavel,idunno,kimmie,05051985,paulie,ballin,medion,moondog,manolo,pallmall,climber,fishbone,genesis1,153624,toffee,tbone,clippers,krypton,jerry1,picturs,compass,111111q,02051988,1121,02081977,sairam,getout,333777,cobras,22041987,bigblock,severin,booster,norwich,whiteout,ctrhtn,123456m,02061984,hewlett,shocker,fuckinside,02031981,chase1,white1,versace,123456789s,basebal,iloveyou2,bluebell,08031986,anthon,stubby,foreve,undertak,werder,saiyan,mama123,medic,chipmunk,mike123,mazdarx7,qwe123qwe,bowwow,kjrjvjnbd,celeb,choochoo,demo,lovelife,02051984,colnago,lithium,02051989,15051981,zzzxxx,welcom,anastasi,fidelio,franc,26061987,roadster,stone55,drifter,hookem,hellboy,1234qw,cbr900rr,sinned,good123654,storm1,gypsy,zebra,zachary1,toejam,buceta,02021979,testing1,redfox,lineage,mike1,highbury,koroleva,nathan1,washingt,02061982,02091985,vintage,redbaron,dalshe,mykids,11051987,macbeth,julien,james123,krasotka,111000,10011986,987123,pipeline,tatarin,sensei,codered,komodo,frogman,7894561230,nascar24,juicy,01031988,redrose,mydick,pigeon,tkbpfdtnf,smirnoff,1215,spam,winner1,flyfish,moskva,81fukkc,21031987,olesya,starligh,summer99,13041988,fishhead,freesex,super12,06061986,azazel,scoobydoo,02021981,cabron,yogibear,sheba1,konstantin,tranny,chilli,terminat,ghbywtccf,slowhand,soccer12,cricket1,fuckhead,1002,seagull,achtung,blam,bigbob,bdsm,nostromo,survivor,cnfybckfd,lemonade,boomer1,rainbow1,rober,irinka,cocksuck,peaches1,itsme,sugar1,zodiac,upyours,dinara,135791,sunny1,chiara,johnson1,02041989,solitude,habibi,sushi,markiz,smoke1,rockies,catwoman,johnny1,qwerty7,bearcats,username,01011978,wanderer,ohshit,02101986,sigma,stephen1,paradigm,02011989,flanker,sanity,jsbach,spotty,bologna,fantasia,chevys,borabora,cocker,74108520,123ewq,12021988,01061990,gtnhjdbx,02071981,01011960,sundevil,3000gt,mustang6,gagging,maggi,armstron,yfnfkb,13041987,revolver,02021976,trouble1,madcat,jeremy1,jackass1,volkswag,30051985,corndog,pool6123,marines1,03041991,pizza1,piggy,sissy,02031979,sunfire,angelus,undead,24061986,14061991,wildbill,shinobi,45m2do5bs,123qwer,21011989,cleopatr,lasvega,hornets,amorcit,11081989,coventry,nirvana1,destin,sidekick,20061988,02081983,gbhfvblf,sneaky,bmw325,22021989,nfytxrf,sekret,kalina,zanzibar,hotone,qazws,wasabi,heidi1,highlander,blues1,hitachi,paolo,23041987,slayer1,simba1,02011981,tinkerbe,kieran,01121986,172839,boiler,1125,bluesman,waffle,asdfgh01,threesom,conan,1102,reflex,18011987,nautilus,everlast,fatty,vader1,01071986,cyborg,ghbdtn123,birddog,rubble,02071983,suckers,02021973,skyhawk,12qw12qw,dakota1,joebob,nokia6233,woodie,longdong,lamer,troll,ghjcnjgfhjkm,420000,boating,nitro,armada,messiah,1031,penguin1,02091989,americ,02071989,redeye,asdqwe123,07071987,monty1,goten,spikey,sonata,635241,tokiohotel,sonyericsson,citroen,compaq1,1812,umpire,belmont,jonny,pantera1,nudes,palmtree,14111986,fenway,bighead,razor,gryphon,andyod22,aaaaa1,taco,10031988,enterme,malachi,dogface,reptile,01041985,dindom,handball,marseille,candy1,19101987,torino,tigge,matthias,viewsoni,13031987,stinker,evangelion,24011985,123456123,rampage,sandrine,02081980,thecrow,astral,28041987,sprinter,private1,seabee,shibby,02101988,25081988,fearless,junkie,01091987,aramis,antelope,draven,fuck1,mazda6,eggman,02021990,barselona,buddy123,19061987,fyfnjkbq,nancy1,12121990,10071987,sluggo,kille,hotties,irishka,zxcasdqwe123,shamus,fairlane,honeybee,soccer10,13061986,fantomas,17051988,10051987,20111986,gladiato,karachi,gambler,gordo,01011995,biatch,matthe,25800852,papito,excite,buffalo1,bobdole,cheshire,player1,28021992,thewho,10101986,pinky1,mentor,tomahawk,brown1,03041986,bismillah,bigpoppa,ijrjkfl,01121988,runaway,08121986,skibum,studman,helper,squeak,holycow,manfred,harlem,glock,gideon,987321,14021985,yellow1,wizard1,margarit,success1,medved,sf49ers,lambda,pasadena,johngalt,quasar,1776,02031980,coldplay,amand,playa,bigpimp,04041991,capricorn,elefant,sweetness,bruce1,luca,dominik,10011990,biker,09051945,datsun,elcamino,trinitro,malice,audi,voyager1,02101983,joe123,carpente,spartan1,mario1,glamour,diaper,12121985,22011988,winter1,asimov,callisto,nikolai,pebble,02101981,vendetta,david123,boytoy,11061985,02031989,iloveyou1,stupid1,cayman,casper1,zippo,yamahar1,wildwood,foxylady,calibra,02041980,27061988,dungeon,leedsutd,30041986,11051990,bestbuy,antares,dominion,24680,01061986,skillet,enforcer,derparol,01041988,196969,29071983,f00tball,purple1,mingus,25031987,21031990,remingto,giggles,klaste,3x7pxr,01011994,coolcat,29051989,megane,20031987,02051980,04041988,synergy,0000007,macman,iforget,adgjmp,vjqgfhjkm,28011987,rfvfcenhf,16051989,25121987,16051987,rogue,mamamia,08051990,20091991,1210,carnival,bolitas,paris1,dmitriy,dimas,05051989,papillon,knuckles,29011985,hola,tophat,28021990,100500,cutiepie,devo,415263,ducks,ghjuhfvvf,asdqwe,22021986,freefall,parol,02011983,zarina,buste,vitamin,warez,bigones,17061988,baritone,jamess,twiggy,mischief,bitchy,hetfield,1003,dontknow,grinch,sasha_007,18061990,12031985,12031987,calimero,224466,letmei,15011987,acmilan,alexandre,02031977,08081988,whiteboy,21051991,barney1,02071978,money123,18091985,bigdawg,02031988,cygnusx1,zoloto,31011987,firefigh,blowfish,screamer,lfybbk,20051988,chelse,11121986,01031989,harddick,sexylady,30031988,02041974,auditt,pizdec,kojak,kfgjxrf,20091988,123456ru,wp2003wp,1204,15051990,slugger,kordell1,03031986,swinging,01011974,02071979,rockie,dimples,1234123,1dragon,trucking,rusty2,roger1,marijuana,kerouac,02051978,08031985,paco,thecure,keepout,kernel,noname123,13121985,francisc,bozo,02011982,22071986,02101979,obsidian,12345qw,spud,tabasco,02051985,jaguars,dfktynby,kokomo,popova,notused,sevens,4200,magneto,02051976,roswell,15101986,21101986,lakeside,bigbang,aspen,little1,14021986,loki,suckmydick,strawber,carlos1,nokian73,dirty1,joshu,25091987,16121987,02041975,advent,17011987,slimshady,whistler,10101990,stryker,22031984,15021985,01031985,blueball,26031988,ksusha,bahamut,robocop,w_pass,chris123,impreza,prozac,bookie,bricks,13021990,alice1,cassandr,11111q,john123,4ever,korova,02051973,142857,25041988,paramedi,eclipse1,salope,07091990,1124,darkangel,23021986,999666,nomad,02051981,smackdow,01021990,yoyoma,argentin,moonligh,57chevy,bootys,hardone,capricor,galant,spanker,dkflbr,24111989,magpies,krolik,21051988,cevthrb,cheddar,22041988,bigbooty,scuba1,qwedsa,duffman,bukkake,acura,johncena,sexxy,p@ssw0rd,258369,cherries,12345s,asgard,leopold,fuck123,mopar,lalakers,dogpound,matrix1,crusty,spanner,kestrel,fenris,universa,peachy,assasin,lemmein,eggplant,hejsan,canucks,wendy1,doggy1,aikman,tupac,turnip,godlike,fussball,golden1,19283746,april1,django,petrova,captain1,vincent1,ratman,taekwondo,chocha,serpent,perfect1,capetown,vampir,amore,gymnast,timeout,nbvjatq,blue32,ksenia,k.lvbkf,nazgul,budweiser,clutch,mariya,sylveste,02051972,beaker,cartman1,q11111,sexxx,forever1,loser1,marseill,magellan,vehpbr,sexgod,jktxrf,hallo123,132456,liverpool1,southpaw,seneca,camden,357159,camero,tenchi,johndoe,145236,roofer,741963,vlad,02041978,fktyrf,zxcv123,wingnut,wolfpac,notebook,pufunga7782,brandy1,biteme1,goodgirl,redhat,02031978,challeng,millenium,hoops,maveric,noname,angus1,gaell,onion,olympus,sabrina1,ricard,sixpack,gratis,gagged,camaross,hotgirls,flasher,02051977,bubba123,goldfing,moonshin,gerrard,volkov,sonyfuck,mandrake,258963,tracer,lakers1,asians,susan1,money12,helmut,boater,diablo2,1234zxcv,dogwood,bubbles1,happy2,randy1,aries,beach1,marcius2,navigator,goodie,hellokitty,fkbyjxrf,earthlink,lookout,jumbo,opendoor,stanley1,marie1,12345m,07071977,ashle,wormix,murzik,02081976,lakewood,bluejays,loveya,commande,gateway2,peppe,01011976,7896321,goth,oreo,slammer,rasmus,faith1,knight1,stone1,redskin,ironmaiden,gotmilk,destiny1,dejavu,1master,midnite,timosha,espresso,delfin,toriamos,oberon,ceasar,markie,1a2s3d,ghhh47hj7649,vjkjrj,daddyo,dougie,disco,auggie,lekker,therock1,ou8123,start1,noway,p4ssw0rd,shadow12,333444,saigon,2fast4u,capecod,23skidoo,qazxcv,beater,bremen,aaasss,roadrunner,peace1,12345qwer,02071975,platon,bordeaux,vbkfirf,135798642,test12,supernov,beatles1,qwert40,optimist,vanessa1,prince1,ilovegod,nightwish,natasha1,alchemy,bimbo,blue99,patches1,gsxr1000,richar,hattrick,hott,solaris,proton,nevets,enternow,beavis1,amigos,159357a,ambers,lenochka,147896,suckdick,shag,intercourse,blue1234,spiral,02061977,tosser,ilove,02031975,cowgirl,canuck,q2w3e4,munch,spoons,waterboy,123567,evgeniy,savior,zasada,redcar,mamacita,terefon,globus,doggies,htubcnhfwbz,1008,cuervo,suslik,azertyui,limewire,houston1,stratfor,steaua,coors,tennis1,12345qwerty,stigmata,derf,klondike,patrici,marijuan,hardball,odyssey,nineinch,boston1,pass1,beezer,sandr,charon,power123,a1234,vauxhall,875421,awesome1,reggae,boulder,funstuff,iriska,krokodil,rfntymrf,sterva,champ1,bball,peeper,m123456,toolbox,cabernet,sheepdog,magic32,pigpen,02041977,holein1,lhfrjy,banan,dabomb,natalie1,jennaj,montana1,joecool,funky,steven1,ringo,junio,sammy123,qqqwww,baltimor,footjob,geezer,357951,mash4077,cashmone,pancake,monic,grandam,bongo,yessir,gocubs,nastia,vancouve,barley,dragon69,watford,ilikepie,02071976,laddie,123456789m,hairball,toonarmy,pimpdadd,cvthnm,hunte,davinci,lback,sophie1,firenze,q1234567,admin1,bonanza,elway7,daman,strap,azert,wxcvbn,afrika,theforce,123456t,idefix,wolfen,houdini,scheisse,default,beech,maserati,02061976,sigmachi,dylan1,bigdicks,eskimo,mizzou,02101976,riccardo,egghead,111777,kronos,ghbrjk,chaos1,jomama,rfhnjirf,rodeo,dolemite,cafc91,nittany,pathfind,mikael,password9,vqsablpzla,purpl,gabber,modelsne,myxworld,hellsing,punker,rocknrol,fishon,fuck69,02041976,lolol,twinkie,tripleh,cirrus,redbone,killer123,biggun,allegro,gthcbr,smith1,wanking,bootsy,barry1,mohawk,koolaid,5329,futurama,samoht,klizma,996633,lobo,honeys,peanut1,556677,zxasqw,joemama,javelin,samm,223322,sandra1,flicks,montag,nataly,3006,tasha1,1235789,dogbone,poker1,p0o9i8u7,goodday,smoothie,toocool,max333,metroid,archange,vagabond,billabon,22061941,tyson1,02031973,darkange,skateboard,evolutio,morrowind,wizards,frodo1,rockin,cumslut,plastics,zaqwsxcde,5201314,doit,outback,bumble,dominiqu,persona,nevermore,alinka,02021971,forgetit,sexo,all4one,c2h5oh,petunia,sheeba,kenny1,elisabet,aolsucks,woodstoc,pumper,02011975,fabio,granada,scrapper,123459,minimoni,q123456789,breaker,1004,02091976,ncc74656,slimshad,friendster,austin31,wiseguy,donner,dilbert1,132465,blackbird,buffet,jellybean,barfly,behappy,01011971,carebear,fireblad,02051975,boxcar,cheeky,kiteboy,hello12,panda1,elvisp,opennow,doktor,alex12,02101977,pornking,flamengo,02091975,snowbird,lonesome,robin1,11111a,weed420,baracuda,bleach,12345abc,nokia1,metall,singapor,mariner,herewego,dingo,tycoon,cubs,blunts,proview,123456789d,kamasutra,lagnaf,vipergts,navyseal,starwar,masterbate,wildone,peterbil,cucumber,butkus,123qwert,climax,deniro,gotribe,cement,scooby1,summer69,harrier,shodan,newyear,02091977,starwars1,romeo1,sedona,harald,doubled,sasha123,bigguns,salami,awnyce,kiwi,homemade,pimping,azzer,bradley1,warhamme,linkin,dudeman,qwe321,pinnacle,maxdog,flipflop,lfitymrf,fucker1,acidburn,esquire,sperma,fellatio,jeepster,thedon,sexybitch,pookey,spliff,widget,vfntvfnbrf,trinity1,mutant,samuel1,meliss,gohome,1q2q3q,mercede,comein,grin,cartoons,paragon,henrik,rainyday,pacino,senna,bigdog1,alleycat,12345qaz,narnia,mustang2,tanya1,gianni,apollo11,wetter,clovis,escalade,rainbows,freddy1,smart1,daisydog,s123456,cocksucker,pushkin,lefty,sambo,fyutkjxtr,hiziad,boyz,whiplash,orchard,newark,adrenalin,1598753,bootsie,chelle,trustme,chewy,golfgti,tuscl,ambrosia,5wr2i7h8,penetration,shonuf,jughead,payday,stickman,gotham,kolokol,johnny5,kolbasa,stang,puppydog,charisma,gators1,mone,jakarta,draco,nightmar,01011973,inlove,laetitia,02091973,tarpon,nautica,meadow,0192837465,luckyone,14881488,chessie,goldeney,tarakan,69camaro,bungle,wordup,interne,fuckme2,515000,dragonfl,sprout,02081974,gerbil,bandit1,02071971,melanie1,phialpha,camber,kathy1,adriano,gonzo1,10293847,bigjohn,bismarck,7777777a,scamper,12348765,rabbits,222777,bynthytn,dima123,alexander1,mallorca,dragster,favorite6,beethove,burner,cooper1,fosters,hello2,normandy,777999,sebring,1michael,lauren1,blake1,killa,02091971,nounours,trumpet1,thumper1,playball,xantia,rugby1,rocknroll,guillaum,angela1,strelok,prosper,buttercup,masterp,dbnfkbr,cambridg,venom,treefrog,lumina,1234566,supra,sexybabe,freee,shen,frogs,driller,pavement,grace1,dicky,checker,smackdown,pandas,cannibal,asdffdsa,blue42,zyjxrf,nthvbyfnjh,melrose,neon,jabber,gamma,369258147,aprilia,atticus,benessere,catcher,skipper1,azertyuiop,sixty9,thierry,treetop,jello,melons,123456789qwe,tantra,buzzer,catnip,bouncer,computer1,sexyone,ananas,young1,olenka,sexman,mooses,kittys,sephiroth,contra,hallowee,skylark,sparkles,777333,1qazxsw23edc,lucas1,q1w2e3r,gofast,hannes,amethyst,ploppy,flower2,hotass,amatory,volleyba,dixie1,bettyboo,ticklish,02061974,frenchy,phish1,murphy1,trustno,02061972,leinad,mynameis,spooge,jupiter1,hyundai,frosch,junkmail,abacab,marbles,32167,casio,sunshine1,wayne1,longhair,caster,snicker,02101973,gannibal,skinhead,hansol,gatsby,segblue2,montecar,plato,gumby,kaboom,matty,bosco1,888999,jazzy,panter,jesus123,charlie2,giulia,candyass,sex69,travis1,farmboy,special1,02041973,letsdoit,password01,allison1,abcdefg1,notredam,ilikeit,789654123,liberty1,rugger,uptown,alcatraz,123456w,airman,007bond,navajo,kenobi,terrier,stayout,grisha,frankie1,fluff,1qazzaq1,1234561,virginie,1234568,tango1,werdna,octopus,fitter,dfcbkbcf,blacklab,115599,montrose,allen1,supernova,frederik,ilovepussy,justice1,radeon,playboy2,blubber,sliver,swoosh,motocros,lockdown,pearls,thebear,istheman,pinetree,biit,1234rewq,rustydog,tampabay,titts,babycake,jehovah,vampire1,streaming,collie,camil,fidelity,calvin1,stitch,gatit,restart,puppy1,budgie,grunt,capitals,hiking,dreamcas,zorro1,321678,riffraff,makaka,playmate,napalm,rollin,amstel,zxcvb123,samanth,rumble,fuckme69,jimmys,951357,pizzaman,1234567899,tralala,delpiero,alexi,yamato,itisme,1million,vfndtq,kahlua,londo,wonderboy,carrots,tazz,ratboy,rfgecnf,02081973,nico,fujitsu,tujhrf,sergbest,blobby,02051970,sonic1,1357911,smirnov,video1,panhead,bucky,02031974,44332211,duffer,cashmoney,left4dead,bagpuss,salman,01011972,titfuck,66613666,england1,malish,dresden,lemans,darina,zapper,123456as,123456qqq,met2002,02041972,redstar,blue23,1234509876,pajero,booyah,please1,tetsuo,semper,finder,hanuman,sunlight,123456n,02061971,treble,cupoi,password99,dimitri,3ip76k2,popcorn1,lol12345,stellar,nympho,shark1,keith1,saskia,bigtruck,revoluti,rambo1,asd222,feelgood,phat,gogators,bismark,cola,puck,furball,burnout,slonik,bowtie,mommy1,icecube,fabienn,mouser,papamama,rolex,giants1,blue11,trooper1,momdad,iklo,morten,rhubarb,gareth,123456d,blitz,canada1,r2d2,brest,tigercat,usmarine,lilbit,benny1,azrael,lebowski,12345r,madagaskar,begemot,loverman,dragonballz,italiano,mazda3,naughty1,onions,diver1,cyrano,capcom,asdfg123,forlife,fisherman,weare138,requiem,mufasa,alpha123,piercing,hellas,abracadabra,duckman,caracas,macintos,02011971,jordan2,crescent,fduecn,hogtied,eatmenow,ramjet,18121812,kicksass,whatthe,discus,rfhfvtkmrf,rufus1,sqdwfe,mantle,vegitto,trek,dan123,paladin1,rudeboy,liliya,lunchbox,riversid,acapulco,libero,dnsadm,maison,toomuch,boobear,hemlock,sextoy,pugsley,misiek,athome,migue,altoids,marcin,123450,rhfcfdbwf,jeter2,rhinos,rjhjkm,mercury1,ronaldinho,shampoo,makayla,kamilla,masterbating,tennesse,holger,john1,matchbox,hores,poptart,parlament,goodyear,asdfgh1,02081970,hardwood,alain,erection,hfytnrb,highlife,implants,benjami,dipper,jeeper,bendover,supersonic,babybear,laserjet,gotenks,bama,natedogg,aol123,pokemo,rabbit1,raduga,sopranos,cashflow,menthol,pharao,hacking,334455,ghjcnbnenrf,lizzy,muffin1,pooky,penis1,flyer,gramma,dipset,becca,ireland1,diana1,donjuan,pong,ziggy1,alterego,simple1,cbr900,logger,111555,claudia1,cantona7,matisse,ljxtymrf,victori,harle,mamas,encore,mangos,iceman1,diamon,alexxx,tiamat,5000,desktop,mafia,smurf,princesa,shojou,blueberr,welkom,maximka,123890,123q123,tammy1,bobmarley,clips,demon666,ismail,termite,laser1,missie,altair,donna1,bauhaus,trinitron,mogwai,flyers88,juniper,nokia5800,boroda,jingles,qwerasdfzxcv,shakur,777666,legos,mallrats,1qazxsw,goldeneye,tamerlan,julia1,backbone,spleen,49ers,shady,darkone,medic1,justi,giggle,cloudy,aisan,douche,parkour,bluejay,huskers1,redwine,1qw23er4,satchmo,1231234,nineball,stewart1,ballsack,probes,kappa,amiga,flipper1,dortmund,963258,trigun,1237895,homepage,blinky,screwy,gizzmo,belkin,chemist,coolhand,chachi,braves1,thebest,greedisgood,pro100,banana1,101091m,123456g,wonderfu,barefeet,8inches,1111qqqq,kcchiefs,qweasdzxc123,metal1,jennifer1,xian,asdasd123,pollux,cheerleaers,fruity,mustang5,turbos,shopper,photon,espana,hillbill,oyster,macaroni,gigabyte,jesper,motown,tuxedo,buster12,triplex,cyclones,estrell,mortis,holla,456987,fiddle,sapphic,jurassic,thebeast,ghjcnjq,baura,spock1,metallica1,karaoke,nemrac58,love1234,02031970,flvbybcnhfnjh,frisbee,diva,ajax,feathers,flower1,soccer11,allday,mierda,pearl1,amature,marauder,333555,redheads,womans,egorka,godbless,159263,nimitz,aaaa1111,sashka,madcow,socce,greywolf,baboon,pimpdaddy,123456789r,reloaded,lancia,rfhfylfi,dicker,placid,grimace,22446688,olemiss,whores,culinary,wannabe,maxi,1234567aa,amelie,riley1,trample,phantom1,baberuth,bramble,asdfqwer,vides,4you,abc123456,taichi,aztnm,smother,outsider,hakr,blackhawk,bigblack,girlie,spook,valeriya,gianluca,freedo,1q2q3q4q,handbag,lavalamp,cumm,pertinant,whatup,nokia123,redlight,patrik,111aaa,poppy1,dfytxrf,aviator,sweeps,kristin1,cypher,elway,yinyang,access1,poophead,tucson,noles1,monterey,waterfal,dank,dougal,918273,suede,minnesot,legman,bukowski,ganja,mammoth,riverrat,asswipe,daredevi,lian,arizona1,kamikadze,alex1234,smile1,angel2,55bgates,bellagio,0001,wanrltw,stiletto,lipton,arsena,biohazard,bbking,chappy,tetris,as123456,darthvad,lilwayne,nopassword,7412369,123456789987654321,natchez,glitter,14785236,mytime,rubicon,moto,pyon,wazzup,tbird,shane1,nightowl,getoff,beckham7,trueblue,hotgirl,nevermin,deathnote,13131,taffy,bigal,copenhag,apricot,gallaries,dtkjcbgtl,totoro,onlyone,civicsi,jesse1,baby123,sierra1,festus,abacus,sickboy,fishtank,fungus,charle,golfpro,teensex,mario66,seaside,aleksei,rosewood,blackberry,1020304050,bedlam,schumi,deerhunt,contour,darkelf,surveyor,deltas,pitchers,741258963,dipstick,funny1,lizzard,112233445566,jupiter2,softtail,titman,greenman,z1x2c3v4b5,smartass,12345677,notnow,myworld,nascar1,chewbacc,nosferatu,downhill,dallas22,kuan,blazers,whales,soldat,craving,powerman,yfcntyf,hotrats,cfvceyu,qweasdzx,princess1,feline,qqwwee,chitown,1234qaz,mastermind,114477,dingbat,care1839,standby,kismet,atreides,dogmeat,icarus,monkeyboy,alex1,mouses,nicetits,sealteam,chopper1,crispy,winter99,rrpass1,myporn,myspace1,corazo,topolino,ass123,lawman,muffy,orgy,1love,passord,hooyah,ekmzyf,pretzel,amonra,nestle,01011950,jimbeam,happyman,z12345,stonewal,helios,manunited,harcore,dick1,gaymen,2hot4u,light1,qwerty13,kakashi,pjkjnj,alcatel,taylo,allah,buddydog,ltkmaby,mongo,blonds,start123,audia6,123456v,civilwar,bellaco,turtles,mustan,deadspin,aaa123,fynjirf,lucky123,tortoise,amor,summe,waterski,zulu,drag0n,dtxyjcnm,gizmos,strife,interacial,pusyy,goose1,bear1,equinox,matri,jaguar1,tobydog,sammys,nachos,traktor,bryan1,morgoth,444555,dasani,miami1,mashka,xxxxxx1,ownage,nightwin,hotlips,passmast,cool123,skolko,eldiablo,manu,1357908642,screwyou,badabing,foreplay,hydro,kubrick,seductive,demon1,comeon,galileo,aladdin,metoo,happines,902100,mizuno,caddy,bizzare,girls1,redone,ohmygod,sable,bonovox,girlies,hamper,opus,gizmodo1,aaabbb,pizzahut,999888,rocky2,anton1,kikimora,peavey,ocelot,a1a2a3a4,2wsx3edc,jackie1,solace,sprocket,galary,chuck1,volvo1,shurik,poop123,locutus,virago,wdtnjxtr,tequier,bisexual,doodles,makeitso,fishy,789632145,nothing1,fishcake,sentry,libertad,oaktree,fivestar,adidas1,vegitta,mississi,spiffy,carme,neutron,vantage,agassi,boners,123456789v,hilltop,taipan,barrage,kenneth1,fister,martian,willem,lfybkf,bluestar,moonman,ntktdbpjh,paperino,bikers,daffy,benji,quake,dragonfly,suckcock,danilka,lapochka,belinea,calypso,asshol,camero1,abraxas,mike1234,womam,q1q2q3q4q5,youknow,maxpower,pic's,audi80,sonora,raymond1,tickler,tadpole,belair,crazyman,finalfantasy,999000,jonatha,paisley,kissmyas,morgana,monste,mantra,spunk,magic123,jonesy,mark1,alessand,741258,baddest,ghbdtnrfrltkf,zxccxz,tictac,augustin,racers,7grout,foxfire,99762000,openit,nathanie,1z2x3c4v5b,seadog,gangbanged,lovehate,hondacbr,harpoon,mamochka,fisherma,bismilla,locust,wally1,spiderman1,saffron,utjhubq,123456987,20spanks,safeway,pisser,bdfyjd,kristen1,bigdick1,magenta,vfhujif,anfisa,friday13,qaz123wsx,0987654321q,tyrant,guan,meggie,kontol,nurlan,ayanami,rocket1,yaroslav,websol76,mutley,hugoboss,websolutions,elpaso,gagarin,badboys,sephirot,918273645,newuser,qian,edcrfv,booger1,852258,lockout,timoxa94,mazda323,firedog,sokolova,skydiver,jesus777,1234567890z,soulfly,canary,malinka,guillerm,hookers,dogfart,surfer1,osprey,india123,rhjkbr,stoppedby,nokia5530,123456789o,blue1,werter,divers,3000,123456f,alpina,cali,whoknows,godspeed,986532,foreskin,fuzzy1,heyyou,didier,slapnuts,fresno,rosebud1,sandman1,bears1,blade1,honeybun,queen1,baronn,pakista,philipp,9111961,topsecret,sniper1,214365,slipper,letsfuck,pippen33,godawgs,mousey,qw123456,scrotum,loveis,lighthou,bp2002,nancy123,jeffrey1,susieq,buddy2,ralphie,trout1,willi,antonov,sluttey,rehbwf,marty1,darian,losangeles,letme1n,12345d,pusssy,godiva,ender,golfnut,leonidas,a1b2c3d4e5,puffer,general1,wizzard,lehjxrf,racer1,bigbucks,cool12,buddys,zinger,esprit,vbienrf,josep,tickling,froggie,987654321a,895623,daddys,crumbs,gucci,mikkel,opiate,tracy1,christophe,came11,777555,petrovich,humbug,dirtydog,allstate,horatio,wachtwoord,creepers,squirts,rotary,bigd,georgia1,fujifilm,2sweet,dasha,yorkie,slimjim,wiccan,kenzie,system1,skunk,b12345,getit,pommes,daredevil,sugars,bucker,piston,lionheart,1bitch,515051,catfight,recon,icecold,fantom,vodafone,kontakt,boris1,vfcnth,canine,01011961,valleywa,faraon,chickenwing101,qq123456,livewire,livelife,roosters,jeepers,ilya1234,coochie,pavlik,dewalt,dfhdfhf,architec,blackops,1qaz2wsx3edc4rfv,rhfcjnf,wsxedc,teaser,sebora,25252,rhino1,ankara,swifty,decimal,redleg,shanno,nermal,candies,smirnova,dragon01,photo1,ranetki,a1s2d3f4g5,axio,wertzu,maurizio,6uldv8,zxcvasdf,punkass,flowe,graywolf,peddler,3rjs1la7qe,mpegs,seawolf,ladyboy,pianos,piggies,vixen,alexus,orpheus,gdtrfb,z123456,macgyver,hugetits,ralph1,flathead,maurici,mailru,goofball,nissan1,nikon,stopit,odin,big1,smooch,reboot,famil,bullit,anthony7,gerhard,methos,124038,morena,eagle2,jessica2,zebras,getlost,gfynthf,123581321,sarajevo,indon,comets,tatjana,rfgbnjirf,joystick,batman12,123456c,sabre,beerme,victory1,kitties,1475369,badboy1,booboo1,comcast,slava,squid,saxophon,lionhear,qaywsx,bustle,nastena,roadway,loader,hillside,starlight,24681012,niggers,access99,bazooka,molly123,blackice,bandi,cocacol,nfhfrfy,timur,muschi,horse1,quant4307s,squerting,oscars,mygirls,flashman,tangerin,goofy1,p0o9i8,housewifes,newness,monkey69,escorpio,password11,hippo,warcraft3,qazxsw123,qpalzm,ribbit,ghbdtndctv,bogota,star123,258000,lincoln1,bigjim,lacoste,firestorm,legenda,indain,ludacris,milamber,1009,evangeli,letmesee,a111111,hooters1,bigred1,shaker,husky,a4tech,cnfkrth,argyle,rjhjdf,nataha,0o9i8u7y,gibson1,sooners1,glendale,archery,hoochie,stooge,aaaaaa1,scorpions,school1,vegas1,rapier,mike23,bassoon,groupd2013,macaco,baker1,labia,freewill,santiag,silverado,butch1,vflfufcrfh,monica1,rugrat,cornhole,aerosmit,bionicle,gfgfvfvf,daniel12,virgo,fmale,favorite2,detroit1,pokey,shredder,baggies,wednesda,cosmo1,mimosa,sparhawk,firehawk,romario,911turbo,funtimes,fhntvrf,nexus6,159753456,timothy1,bajingan,terry1,frenchie,raiden,1mustang,babemagnet,74123698,nadejda,truffles,rapture,douglas1,lamborghini,motocross,rjcvjc,748596,skeeter1,dante1,angel666,telecom,carsten,pietro,bmw318,astro1,carpediem,samir,orang,helium,scirocco,fuzzball,rushmore,rebelz,hotspur,lacrimosa,chevys10,madonna1,domenico,yfnfirf,jachin,shelby1,bloke,dawgs,dunhill,atlanta1,service1,mikado,devilman,angelit,reznor,euphoria,lesbain,checkmat,browndog,phreak,blaze1,crash1,farida,mutter,luckyme,horsemen,vgirl,jediknig,asdas,cesare,allnight,rockey,starlite,truck1,passfan,close-up,samue,cazzo,wrinkles,homely,eatme1,sexpot,snapshot,dima1995,asthma,thetruth,ducky,blender,priyanka,gaucho,dutchman,sizzle,kakarot,651550,passcode,justinbieber,666333,elodie,sanjay,110442,alex01,lotus1,2300mj,lakshmi,zoomer,quake3,12349876,teapot,12345687,ramada,pennywis,striper,pilot1,chingon,optima,nudity,ethan1,euclid,beeline,loyola,biguns,zaq12345,bravo1,disney1,buffa,assmunch,vivid,6661313,wellingt,aqwzsx,madala11,9874123,sigmar,pictere,tiptop,bettyboop,dinero,tahiti,gregory1,bionic,speed1,fubar1,lexus1,denis1,hawthorn,saxman,suntzu,bernhard,dominika,camaro1,hunter12,balboa,bmw2002,seville,diablo1,vfhbyjxrf,1234abc,carling,lockerroom,punani,darth,baron1,vaness,1password,libido,picher,232425,karamba,futyn007,daydream,11001001,dragon123,friends1,bopper,rocky123,chooch,asslover,shimmer,riddler,openme,tugboat,sexy123,midori,gulnara,christo,swatch,laker,offroad,puddles,hackers,mannheim,manager1,horseman,roman1,dancer1,komputer,pictuers,nokia5130,ejaculation,lioness,123456y,evilone,nastenka,pushok,javie,lilman,3141592,mjolnir,toulouse,pussy2,bigworm,smoke420,fullback,extensa,dreamcast,belize,delboy,willie1,casablanca,csyjxtr,ricky1,bonghit,salvator,basher,pussylover,rosie1,963258741,vivitron,cobra427,meonly,armageddon,myfriend,zardoz,qwedsazxc,kraken,fzappa,starfox,333999,illmatic,capoeira,weenie,ramzes,freedom2,toasty,pupkin,shinigami,fhvfutljy,nocturne,churchil,thumbnils,tailgate,neworder,sexymama,goarmy,cerebus,michelle1,vbifyz,surfsup,earthlin,dabulls,basketbal,aligator,mojojojo,saibaba,welcome2,wifes,wdtnjr,12345w,slasher,papabear,terran,footman,hocke,153759,texans,tom123,sfgiants,billabong,aassdd,monolith,xxx777,l3tm31n,ticktock,newone,hellno,japanees,contortionist,admin123,scout1,alabama1,divx1,rochard,privat,radar1,bigdad,fhctybq,tortuga,citrus,avanti,fantasy1,woodstock,s12345,fireman1,embalmer,woodwork,bonzai,konyor,newstart,jigga,panorama,goats,smithy,rugrats,hotmama,daedalus,nonstop,fruitbat,lisenok,quaker,violator,12345123,my3sons,cajun,fraggle,gayboy,oldfart,vulva,knickerless,orgasms,undertow,binky,litle,kfcnjxrf,masturbation,bunnie,alexis1,planner,transexual,sparty,leeloo,monies,fozzie,stinger1,landrove,anakonda,scoobie,yamaha1,henti,star12,rfhlbyfk,beyonce,catfood,cjytxrf,zealots,strat,fordtruc,archangel,silvi,sativa,boogers,miles1,bigjoe,tulip,petite,greentea,shitter,jonboy,voltron,morticia,evanescence,3edc4rfv,longshot,windows1,serge,aabbcc,starbucks,sinful,drywall,prelude1,www123,camel1,homebrew,marlins,123412,letmeinn,domini,swampy,plokij,fordf350,webcam,michele1,bolivi,27731828,wingzero,qawsedrftg,shinji,sverige,jasper1,piper1,cummer,iiyama,gocats,amour,alfarome,jumanji,mike69,fantasti,1monkey,w00t88,shawn1,lorien,1a2s3d4f5g,koleso,murph,natascha,sunkist,kennwort,emine,grinder,m12345,q1q2q3q4,cheeba,money2,qazwsxedc1,diamante,prosto,pdiddy,stinky1,gabby1,luckys,franci,pornographic,moochie,gfhjdjp,samdog,empire1,comicbookdb,emili,motdepasse,iphone,braveheart,reeses,nebula,sanjose,bubba2,kickflip,arcangel,superbow,porsche911,xyzzy,nigger1,dagobert,devil1,alatam,monkey2,barbara1,12345v,vfpfafrf,alessio,babemagn,aceman,arrakis,kavkaz,987789,jasons,berserk,sublime1,rogue1,myspace,buckwhea,csyekz,pussy4me,vette1,boots1,boingo,arnaud,budlite,redstorm,paramore,becky1,imtheman,chango,marley1,milkyway,666555,giveme,mahalo,lux2000,lucian,paddy,praxis,shimano,bigpenis,creeper,newproject2004,rammstei,j3qq4h7h2v,hfljcnm,lambchop,anthony2,bugman,gfhjkm12,dreamer1,stooges,cybersex,diamant,cowboyup,maximus1,sentra,615243,goethe,manhatta,fastcar,selmer,1213141516,yfnfitymrf,denni,chewey,yankee1,elektra,123456789p,trousers,fishface,topspin,orwell,vorona,sodapop,motherfu,ibilltes,forall,kookie,ronald1,balrog,maximilian,mypasswo,sonny1,zzxxcc,tkfkdg,magoo,mdogg,heeled,gitara,lesbos,marajade,tippy,morozova,enter123,lesbean,pounded,asd456,fialka,scarab,sharpie,spanky1,gstring,sachin,12345asd,princeto,hellohel,ursitesux,billows,1234kekc,kombat,cashew,duracell,kseniya,sevenof9,kostik,arthur1,corvet07,rdfhnbhf,songoku,tiberian,needforspeed,1qwert,dropkick,kevin123,panache,libra,a123456a,kjiflm,vfhnsirf,cntgfy,iamcool,narut,buffer,sk8ordie,urlaub,fireblade,blanked,marishka,gemini1,altec,gorillaz,chief1,revival47,ironman1,space1,ramstein,doorknob,devilmaycry,nemesis1,sosiska,pennstat,monday1,pioner,shevchenko,detectiv,evildead,blessed1,aggie,coffees,tical,scotts,bullwink,marsel,krypto,adrock,rjitxrf,asmodeus,rapunzel,theboys,hotdogs,deepthro,maxpayne,veronic,fyyeirf,otter,cheste,abbey1,thanos,bedrock,bartok,google1,xxxzzz,rodent,montecarlo,hernande,mikayla,123456789l,bravehea,12locked,ltymub,pegasus1,ameteur,saltydog,faisal,milfnew,momsuck,everques,ytngfhjkz,m0nkey,businessbabe,cooki,custard,123456ab,lbvjxrf,outlaws,753357,qwerty78,udacha,insider,chees,fuckmehard,shotokan,katya,seahorse,vtldtlm,turtle1,mike12,beebop,heathe,everton1,darknes,barnie,rbcekz,alisher,toohot,theduke,555222,reddog1,breezy,bulldawg,monkeyman,baylee,losangel,mastermi,apollo1,aurelie,zxcvb12345,cayenne,bastet,wsxzaq,geibcnbr,yello,fucmy69,redwall,ladybird,bitchs,cccccc1,rktjgfnhf,ghjdthrf,quest1,oedipus,linus,impalass,fartman,12345k,fokker,159753a,optiplex,bbbbbb1,realtor,slipkno,santacru,rowdy,jelena,smeller,3984240,ddddd1,sexyme,janet1,3698741,eatme69,cazzone,today1,poobear,ignatius,master123,newpass1,heather2,snoopdogg,blondinka,pass12,honeydew,fuckthat,890098890,lovem,goldrush,gecko,biker1,llama,pendejo,avalanche,fremont,snowman1,gandolf,chowder,1a2b3c4d5e,flyguy,magadan,1fuck,pingvin,nokia5230,ab1234,lothar,lasers,bignuts,renee1,royboy,skynet,12340987,1122334,dragrace,lovely1,22334455,booter,12345612,corvett,123456qq,capital1,videoes,funtik,wyvern,flange,sammydog,hulkster,13245768,not4you,vorlon,omegared,l58jkdjp!,filippo,123mudar,samadams,petrus,chris12,charlie123,123456789123,icetea,sunderla,adrian1,123qweas,kazanova,aslan,monkey123,fktyeirf,goodsex,123ab,lbtest,banaan,bluenose,837519,asd12345,waffenss,whateve,1a2a3a4a,trailers,vfhbirf,bhbcrf,klaatu,turk182,monsoon,beachbum,sunbeam,succes,clyde1,viking1,rawhide,bubblegum,princ,mackenzi,hershey1,222555,dima55,niggaz,manatee,aquila,anechka,pamel,bugsbunn,lovel,sestra,newport1,althor,hornyman,wakeup,zzz111,phishy,cerber,torrent,thething,solnishko,babel,buckeye1,peanu,ethernet,uncencored,baraka,665544,chris2,rb26dett,willy1,choppers,texaco,biggirl,123456b,anna2614,sukebe,caralho,callofduty,rt6ytere,jesus7,angel12,1money,timelord,allblack,pavlova,romanov,tequiero,yitbos,lookup,bulls23,snowflake,dickweed,barks,lever,irisha,firestar,fred1234,ghjnjnbg,danman,gatito,betty1,milhouse,kbctyjr,masterbaiting,delsol,papit,doggys,123698741,bdfyjdf,invictus,bloods,kayla1,yourmama,apple2,angelok,bigboy1,pontiac1,verygood,yeshua,twins2,porn4me,141516,rasta69,james2,bosshog,candys,adventur,stripe,djkjlz,dokken,austin316,skins,hogwarts,vbhevbh,navigato,desperado,xxx666,cneltyn,vasiliy,hazmat,daytek,eightbal,fred1,four20,74227422,fabia,aerosmith,manue,wingchun,boohoo,hombre,sanity72,goatboy,fuckm,partizan,avrora,utahjazz,submarin,pussyeat,heinlein,control1,costaric,smarty,chuan,triplets,snowy,snafu,teacher1,vangogh,vandal,evergree,cochise,qwerty99,pyramid1,saab900,sniffer,qaz741,lebron23,mark123,wolvie,blackbelt,yoshi,feeder,janeway,nutella,fuking,asscock,deepak,poppie,bigshow,housewife,grils,tonto,cynthia1,temptress,irakli,belle1,russell1,manders,frank123,seabass,gforce,songbird,zippy1,naught,brenda1,chewy1,hotshit,topaz,43046721,girfriend,marinka,jakester,thatsme,planeta,falstaff,patrizia,reborn,riptide,cherry1,shuan,nogard,chino,oasis1,qwaszx12,goodlife,davis1,1911a1,harrys,shitfuck,12345678900,russian7,007700,bulls1,porshe,danil,dolphi,river1,sabaka,gobigred,deborah1,volkswagen,miamo,alkaline,muffdive,1letmein,fkbyrf,goodguy,hallo1,nirvan,ozzie,cannonda,cvbhyjdf,marmite,germany1,joeblow,radio1,love11,raindrop,159852,jacko,newday,fathead,elvis123,caspe,citibank,sports1,deuce,boxter,fakepass,golfman,snowdog,birthday4,nonmembe,niklas,parsifal,krasota,theshit,1235813,maganda,nikita1,omicron,cassie1,columbo,buick,sigma1,thistle,bassin,rickster,apteka,sienna,skulls,miamor,coolgirl,gravis,1qazxc,virgini,hunter2,akasha,batma,motorcyc,bambino,tenerife,fordf250,zhuan,iloveporn,markiza,hotbabes,becool,fynjybyf,wapapapa,forme,mamont,pizda,dragonz,sharon1,scrooge,mrbill,pfloyd,leeroy,natedog,ishmael,777111,tecumseh,carajo,nfy.irf,0000000000o,blackcock,fedorov,antigone,feanor,novikova,bobert,peregrin,spartan117,pumkin,rayman,manuals,tooltime,555333,bonethug,marina1,bonnie1,tonyhawk,laracroft,mahalkita,18273645,terriers,gamer,hoser,littlema,molotok,glennwei,lemon1,caboose,tater,12345654321,brians,fritz1,mistral,jigsaw,fuckshit,hornyguy,southside,edthom,antonio1,bobmarle,pitures,ilikesex,crafty,nexus,boarder,fulcrum,astonvil,yanks1,yngwie,account1,zooropa,hotlegs,sammi,gumbo,rover1,perkele,maurolarastefy,lampard,357753,barracud,dmband,abcxyz,pathfinder,335577,yuliya,micky,jayman,asdfg12345,1596321,halcyon,rerfhtre,feniks,zaxscd,gotyoass,jaycee,samson1,jamesb,vibrate,grandpri,camino,colossus,davidb,mamo4ka,nicky1,homer123,pinguin,watermelon,shadow01,lasttime,glider,823762,helen1,pyramids,tulane,osama,rostov,john12,scoote,bhbyrf,gohan,galeries,joyful,bigpussy,tonka,mowgli,astalavista,zzz123,leafs,dalejr8,unicorn1,777000,primal,bigmama,okmijn,killzone,qaz12345,snookie,zxcvvcxz,davidc,epson,rockman,ceaser,beanbag,katten,3151020,duckhunt,segreto,matros,ragnar,699669,sexsexse,123123z,fuckyeah,bigbutts,gbcmrf,element1,marketin,saratov,elbereth,blaster1,yamahar6,grime,masha,juneau,1230123,pappy,lindsay1,mooner,seattle1,katzen,lucent,polly1,lagwagon,pixie,misiaczek,666666a,smokedog,lakers24,eyeball,ironhors,ametuer,volkodav,vepsrf,kimmy,gumby1,poi098,ovation,1q2w3,drinker,penetrating,summertime,1dallas,prima,modles,takamine,hardwork,macintosh,tahoe,passthie,chiks,sundown,flowers1,boromir,music123,phaedrus,albert1,joung,malakas,gulliver,parker1,balder,sonne,jessie1,domainlock2005,express1,vfkbyf,youandme,raketa,koala,dhjnvytyjub,nhfrnjh,testibil,ybrbnjc,987654321q,axeman,pintail,pokemon123,dogggg,shandy,thesaint,11122233,x72jhhu3z,theclash,raptors,zappa1,djdjxrf,hell666,friday1,vivaldi,pluto1,lance1,guesswho,jeadmi,corgan,skillz,skippy1,mango1,gymnastic,satori,362514,theedge,cxfcnkbdfz,sparkey,deicide,bagels,lololol,lemmings,r4e3w2q1,silve,staind,schnuffi,dazzle,basebal1,leroy1,bilbo1,luckie,qwerty2,goodfell,hermione,peaceout,davidoff,yesterda,killah,flippy,chrisb,zelda1,headless,muttley,fuckof,tittys,catdaddy,photog,beeker,reaver,ram1500,yorktown,bolero,tryagain,arman,chicco,learjet,alexei,jenna1,go2hell,12s3t4p55,momsanaladventure,mustang9,protoss,rooter,ginola,dingo1,mojave,erica1,1qazse4,marvin1,redwolf,sunbird,dangerou,maciek,girsl,hawks1,packard1,excellen,dashka,soleda,toonces,acetate,nacked,jbond007,alligator,debbie1,wellhung,monkeyma,supers,rigger,larsson,vaseline,rjnzhf,maripos,123456asd,cbr600rr,doggydog,cronic,jason123,trekker,flipmode,druid,sonyvaio,dodges,mayfair,mystuff,fun4me,samanta,sofiya,magics,1ranger,arcane,sixtynin,222444,omerta,luscious,gbyudby,bobcats,envision,chance1,seaweed,holdem,tomate,mensch,slicer,acura1,goochi,qweewq,punter,repoman,tomboy,never1,cortina,gomets,147896321,369852147,dogma,bhjxrf,loglatin,eragon,strato,gazelle,growler,885522,klaudia,payton34,fuckem,butchie,scorpi,lugano,123456789k,nichola,chipper1,spide,uhbujhbq,rsalinas,vfylfhby,longhorns,bugatti,everquest,!qaz2wsx,blackass,999111,snakeman,p455w0rd,fanatic,family1,pfqxbr,777vlad,mysecret,marat,phoenix2,october1,genghis,panties1,cooker,citron,ace123,1234569,gramps,blackcoc,kodiak1,hickory,ivanhoe,blackboy,escher,sincity,beaks,meandyou,spaniel,canon1,timmy1,lancaste,polaroid,edinburg,fuckedup,hotman,cueball,golfclub,gopack,bookcase,worldcup,dkflbvbhjdbx,twostep,17171717aa,letsplay,zolushka,stella1,pfkegf,kingtut,67camaro,barracuda,wiggles,gjhjkm,prancer,patata,kjifhf,theman1,romanova,sexyass,copper1,dobber,sokolov,pomidor,algernon,cadman,amoremio,william2,silly1,bobbys,hercule,hd764nw5d7e1vb1,defcon,deutschland,robinhood,alfalfa,machoman,lesbens,pandora1,easypay,tomservo,nadezhda,goonies,saab9000,jordyn,f15eagle,dbrecz,12qwerty,greatsex,thrawn,blunted,baywatch,doggystyle,loloxx,chevy2,january1,kodak,bushel,78963214,ub6ib9,zz8807zpl,briefs,hawker,224488,first1,bonzo,brent1,erasure,69213124,sidewind,soccer13,622521,mentos,kolibri,onepiece,united1,ponyboy,keksa12,wayer,mypussy,andrej,mischa,mille,bruno123,garter,bigpun,talgat,familia,jazzy1,mustang8,newjob,747400,bobber,blackbel,hatteras,ginge,asdfjkl;,camelot1,blue44,rebbyt34,ebony1,vegas123,myboys,aleksander,ijrjkflrf,lopata,pilsner,lotus123,m0nk3y,andreev,freiheit,balls1,drjynfrnt,mazda1,waterpolo,shibumi,852963,123bbb,cezer121,blondie1,volkova,rattler,kleenex,ben123,sanane,happydog,satellit,qazplm,qazwsxedcrfvtgb,meowmix,badguy,facefuck,spice1,blondy,major1,25000,anna123,654321a,sober1,deathrow,patterso,china1,naruto1,hawkeye1,waldo1,butchy,crayon,5tgb6yhn,klopik,crocodil,mothra,imhorny,pookie1,splatter,slippy,lizard1,router,buratino,yahweh,123698,dragon11,123qwe456,peepers,trucker1,ganjaman,1hxboqg2,cheyanne,storys,sebastie,zztop,maddison,4rfv3edc,darthvader,jeffro,iloveit,victor1,hotty,delphin,lifeisgood,gooseman,shifty,insertions,dude123,abrupt,123masha,boogaloo,chronos,stamford,pimpster,kthjxrf,getmein,amidala,flubber,fettish,grapeape,dantes,oralsex,jack1,foxcg33,winchest,francis1,getin,archon,cliffy,blueman,1basebal,sport1,emmitt22,porn123,bignasty,morga,123hfjdk147,ferrar,juanito,fabiol,caseydog,steveo,peternorth,paroll,kimchi,bootleg,gaijin,secre,acacia,eatme2,amarillo,monkey11,rfhfgep,tylers,a1a2a3a4a5,sweetass,blower,rodina,babushka,camilo,cimbom,tiffan,vfnbkmlf,ohbaby,gotigers,lindsey1,dragon13,romulus,qazxsw12,zxcvbn1,dropdead,hitman47,snuggle,eleven11,bloopers,357mag,avangard,bmw320,ginscoot,dshade,masterkey,voodoo1,rootedit,caramba,leahcim,hannover,8phrowz622,tim123,cassius,000000a,angelito,zzzzz1,badkarma,star1,malaga,glenwood,footlove,golf1,summer12,helpme1,fastcars,titan1,police1,polinka,k.jdm,marusya,augusto,shiraz,pantyhose,donald1,blaise,arabella,brigada,c3por2d2,peter01,marco1,hellow,dillweed,uzumymw,geraldin,loveyou2,toyota1,088011,gophers,indy500,slainte,5hsu75kpot,teejay,renat,racoon,sabrin,angie1,shiznit,harpua,sexyred,latex,tucker1,alexandru,wahoo,teamwork,deepblue,goodison,rundmc,r2d2c3p0,puppys,samba,ayrton,boobed,999777,topsecre,blowme1,123321z,loudog,random1,pantie,drevil,mandolin,121212q,hottub,brother1,failsafe,spade1,matvey,open1234,carmen1,priscill,schatzi,kajak,gooddog,trojans1,gordon1,kayak,calamity,argent,ufhvjybz,seviyi,penfold,assface,dildos,hawkwind,crowbar,yanks,ruffles,rastus,luv2epus,open123,aquafina,dawns,jared1,teufel,12345c,vwgolf,pepsi123,amores,passwerd,01478520,boliva,smutty,headshot,password3,davidd,zydfhm,gbgbcmrf,pornpass,insertion,ceckbr,test2,car123,checkit,dbnfkbq,niggas,nyyankee,muskrat,nbuhtyjr,gunner1,ocean1,fabienne,chrissy1,wendys,loveme89,batgirl,cerveza,igorek,steel1,ragman,boris123,novifarm,sexy12,qwerty777,mike01,giveitup,123456abc,fuckall,crevice,hackerz,gspot,eight8,assassins,texass,swallows,123458,baldur,moonshine,labatt,modem,sydney1,voland,dbnfkz,hotchick,jacker,princessa,dawgs1,holiday1,booper,reliant,miranda1,jamaica1,andre1,badnaamhere,barnaby,tiger7,david12,margaux,corsica,085tzzqi,universi,thewall,nevermor,martin6,qwerty77,cipher,apples1,0102030405,seraphim,black123,imzadi,gandon,ducati99,1shadow,dkflbvbhjdyf,44magnum,bigbad,feedme,samantha1,ultraman,redneck1,jackdog,usmc0311,fresh1,monique1,tigre,alphaman,cool1,greyhoun,indycar,crunchy,55chevy,carefree,willow1,063dyjuy,xrated,assclown,federica,hilfiger,trivia,bronco1,mamita,100200300,simcity,lexingky,akatsuki,retsam,johndeere,abudfv,raster,elgato,businka,satanas,mattingl,redwing1,shamil,patate,mannn,moonstar,evil666,b123456,bowl300,tanechka,34523452,carthage,babygir,santino,bondarenko,jesuss,chico1,numlock,shyguy,sound1,kirby1,needit,mostwanted,427900,funky1,steve123,passions,anduril,kermit1,prospero,lusty,barakuda,dream1,broodwar,porky,christy1,mahal,yyyyyy1,allan1,1sexy,flintsto,capri,cumeater,heretic,robert2,hippos,blindax,marykay,collecti,kasumi,1qaz!qaz,112233q,123258,chemistr,coolboy,0o9i8u,kabuki,righton,tigress,nessie,sergej,andrew12,yfafyz,ytrhjvfyn,angel7,victo,mobbdeep,lemming,transfor,1725782,myhouse,aeynbr,muskie,leno4ka,westham1,cvbhyjd,daffodil,pussylicker,pamela1,stuffer,warehous,tinker1,2w3e4r,pluton,louise1,polarbea,253634,prime1,anatoliy,januar,wysiwyg,cobraya,ralphy,whaler,xterra,cableguy,112233a,porn69,jamesd,aqualung,jimmy123,lumpy,luckyman,kingsize,golfing1,alpha7,leeds1,marigold,lol1234,teabag,alex11,10sne1,saopaulo,shanny,roland1,basser,3216732167,carol1,year2005,morozov,saturn1,joseluis,bushed,redrock,memnoch,lalaland,indiana1,lovegod,gulnaz,buffalos,loveyou1,anteater,pattaya,jaydee,redshift,bartek,summerti,coffee1,ricochet,incest,schastie,rakkaus,h2opolo,suikoden,perro,dance1,loveme1,whoopass,vladvlad,boober,flyers1,alessia,gfcgjhn,pipers,papaya,gunsling,coolone,blackie1,gonads,gfhjkzytn,foxhound,qwert12,gangrel,ghjvtntq,bluedevi,mywife,summer01,hangman,licorice,patter,vfr750,thorsten,515253,ninguna,dakine,strange1,mexic,vergeten,12345432,8phrowz624,stampede,floyd1,sailfish,raziel,ananda,giacomo,freeme,crfprf,74185296,allstars,master01,solrac,gfnhbjn,bayliner,bmw525,3465xxx,catter,single1,michael3,pentium4,nitrox,mapet123456,halibut,killroy,xxxxx1,phillip1,poopsie,arsenalfc,buffys,kosova,all4me,32165498,arslan,opensesame,brutis,charles2,pochta,nadegda,backspac,mustang0,invis,gogeta,654321q,adam25,niceday,truckin,gfdkbr,biceps,sceptre,bigdave,lauras,user345,sandys,shabba,ratdog,cristiano,natha,march13,gumball,getsdown,wasdwasd,redhead1,dddddd1,longlegs,13572468,starsky,ducksoup,bunnys,omsairam,whoami,fred123,danmark,flapper,swanky,lakings,yfhenj,asterios,rainier,searcher,dapper,ltdjxrf,horsey,seahawk,shroom,tkfkdgo,aquaman,tashkent,number9,messi10,1asshole,milenium,illumina,vegita,jodeci,buster01,bareback,goldfinger,fire1,33rjhjds,sabian,thinkpad,smooth1,sully,bonghits,sushi1,magnavox,colombi,voiture,limpone,oldone,aruba,rooster1,zhenya,nomar5,touchdow,limpbizkit,rhfcfdxbr,baphomet,afrodita,bball1,madiso,ladles,lovefeet,matthew2,theworld,thunderbird,dolly1,123rrr,forklift,alfons,berkut,speedy1,saphire,oilman,creatine,pussylov,bastard1,456258,wicked1,filimon,skyline1,fucing,yfnfkbz,hot123,abdulla,nippon,nolimits,billiard,booty1,buttplug,westlife,coolbean,aloha1,lopas,asasin,1212121,october2,whodat,good4u,d12345,kostas,ilya1992,regal,pioneer1,volodya,focus1,bastos,nbvjif,fenix,anita1,vadimka,nickle,jesusc,123321456,teste,christ1,essendon,evgenii,celticfc,adam1,forumwp,lovesme,26exkp,chillout,burly,thelast1,marcus1,metalgear,test11,ronaldo7,socrate,world1,franki,mommie,vicecity,postov1000,charlie3,oldschool,333221,legoland,antoshka,counterstrike,buggy,mustang3,123454,qwertzui,toons,chesty,bigtoe,tigger12,limpopo,rerehepf,diddle,nokia3250,solidsnake,conan1,rockroll,963369,titanic1,qwezxc,cloggy,prashant,katharin,maxfli,takashi,cumonme,michael9,mymother,pennstate,khalid,48151623,fightclub,showboat,mateusz,elrond,teenie,arrow1,mammamia,dustydog,dominator,erasmus,zxcvb1,1a2a3a,bones1,dennis1,galaxie,pleaseme,whatever1,junkyard,galadriel,charlies,2wsxzaq1,crimson1,behemoth,teres,master11,fairway,shady1,pass99,1batman,joshua12,baraban,apelsin,mousepad,melon,twodogs,123321qwe,metalica,ryjgrf,pipiska,rerfhfxf,lugnut,cretin,iloveu2,powerade,aaaaaaa1,omanko,kovalenko,isabe,chobits,151nxjmt,shadow11,zcxfcnkbdf,gy3yt2rgls,vfhbyrf,159753123,bladerunner,goodone,wonton,doodie,333666999,fuckyou123,kitty123,chisox,orlando1,skateboa,red12345,destroye,snoogans,satan1,juancarlo,goheels,jetson,scottt,fuckup,aleksa,gfhfljrc,passfind,oscar123,derrick1,hateme,viper123,pieman,audi100,tuffy,andover,shooter1,10000,makarov,grant1,nighthaw,13576479,browneye,batigol,nfvfhf,chocolate1,7hrdnw23,petter,bantam,morlii,jediknight,brenden,argonaut,goodstuf,wisconsi,315920,abigail1,dirtbag,splurge,k123456,lucky777,valdepen,gsxr600,322223,ghjnjrjk,zaq1xsw2cde3,schwanz,walter1,letmein22,nomads,124356,codeblue,nokian70,fucke,footbal1,agyvorc,aztecs,passw0r,smuggles,femmes,ballgag,krasnodar,tamuna,schule,sixtynine,empires,erfolg,dvader,ladygaga,elite1,venezuel,nitrous,kochamcie,olivia1,trustn01,arioch,sting1,131415,tristar,555000,maroon,135799,marsik,555556,fomoco,natalka,cwoui,tartan,davecole,nosferat,hotsauce,dmitry,horus,dimasik,skazka,boss302,bluebear,vesper,ultras,tarantul,asd123asd,azteca,theflash,8ball,1footbal,titlover,lucas123,number6,sampson1,789852,party1,dragon99,adonai,carwash,metropol,psychnau,vthctltc,hounds,firework,blink18,145632,wildcat1,satchel,rice80,ghtktcnm,sailor1,cubano,anderso,rocks1,mike11,famili,dfghjc,besiktas,roygbiv,nikko,bethan,minotaur,rakesh,orange12,hfleuf,jackel,myangel,favorite7,1478520,asssss,agnieszka,haley1,raisin,htubyf,1buster,cfiekz,derevo,1a2a3a4a5a,baltika,raffles,scruffy1,clitlick,louis1,buddha1,fy.nrf,walker1,makoto,shadow2,redbeard,vfvfvskfhfve,mycock,sandydog,lineman,network1,favorite8,longdick,mustangg,mavericks,indica,1killer,cisco1,angelofwar,blue69,brianna1,bubbaa,slayer666,level42,baldrick,brutus1,lowdown,haribo,lovesexy,500000,thissuck,picker,stephy,1fuckme,characte,telecast,1bigdog,repytwjdf,thematrix,hammerhe,chucha,ganesha,gunsmoke,georgi,sheltie,1harley,knulla,sallas,westie,dragon7,conker,crappie,margosha,lisboa,3e2w1q,shrike,grifter,ghjcnjghjcnj,asdfg1,mnbvcxz1,myszka,posture,boggie,rocketman,flhtyfkby,twiztid,vostok,pi314159,force1,televizor,gtkmvtym,samhain,imcool,jadzia,dreamers,strannik,k2trix,steelhea,nikitin,commodor,brian123,chocobo,whopper,ibilljpf,megafon,ararat,thomas12,ghbrjkbcn,q1234567890,hibernia,kings1,jim123,redfive,68camaro,iawgk2,xavier1,1234567u,d123456,ndirish,airborn,halfmoon,fluffy1,ranchero,sneaker,soccer2,passion1,cowman,birthday1,johnn,razzle,glock17,wsxqaz,nubian,lucky2,jelly1,henderso,eric1,123123e,boscoe01,fuck0ff,simpson1,sassie,rjyjgkz,nascar3,watashi,loredana,janus,wilso,conman,david2,mothe,iloveher,snikers,davidj,fkmnthyfnbdf,mettss,ratfink,123456h,lostsoul,sweet16,brabus,wobble,petra1,fuckfest,otters,sable1,svetka,spartacu,bigstick,milashka,1lover,pasport,champagn,papichul,hrvatska,hondacivic,kevins,tacit,moneybag,gohogs,rasta1,246813579,ytyfdbcnm,gubber,darkmoon,vitaliy,233223,playboys,tristan1,joyce1,oriflame,mugwump,access2,autocad,thematri,qweqwe123,lolwut,ibill01,multisyn,1233211,pelikan,rob123,chacal,1234432,griffon,pooch,dagestan,geisha,satriani,anjali,rocketma,gixxer,pendrago,vincen,hellokit,killyou,ruger,doodah,bumblebe,badlands,galactic,emachines,foghorn,jackso,jerem,avgust,frontera,123369,daisymae,hornyboy,welcome123,tigger01,diabl,angel13,interex,iwantsex,rockydog,kukolka,sawdust,online1,3234412,bigpapa,jewboy,3263827,dave123,riches,333222,tony1,toggle,farter,124816,tities,balle,brasilia,southsid,micke,ghbdtn12,patit,ctdfcnjgjkm,olds442,zzzzzz1,nelso,gremlins,gypsy1,carter1,slut69,farcry,7415963,michael8,birdie1,charl,123456789abc,100001,aztec,sinjin,bigpimpi,closeup,atlas1,nvidia,doggone,classic1,manana,malcolm1,rfkbyf,hotbabe,rajesh,dimebag,ganjubas,rodion,jagr68,seren,syrinx,funnyman,karapuz,123456789n,bloomin,admin18533362,biggdogg,ocarina,poopy1,hellome,internet1,booties,blowjobs,matt1,donkey1,swede,1jennife,evgeniya,lfhbyf,coach1,444777,green12,patryk,pinewood,justin12,271828,89600506779,notredame,tuborg,lemond,sk8ter,million1,wowser,pablo1,st0n3,jeeves,funhouse,hiroshi,gobucs,angeleye,bereza,winter12,catalin,qazedc,andros,ramazan,vampyre,sweethea,imperium,murat,jamest,flossy,sandeep,morgen,salamandra,bigdogg,stroller,njdevils,nutsack,vittorio,%%passwo,playful,rjyatnrf,tookie,ubnfhf,michi,777444,shadow13,devils1,radiance,toshiba1,beluga,amormi,dandfa,trust1,killemall,smallville,polgara,billyb,landscap,steves,exploite,zamboni,damage11,dzxtckfd,trader12,pokey1,kobe08,damager,egorov,dragon88,ckfdbr,lisa69,blade2,audis4,nelson1,nibbles,23176djivanfros,mutabor,artofwar,matvei,metal666,hrfzlz,schwinn,poohbea,seven77,thinker,123456789qwerty,sobriety,jakers,karamelka,vbkfyf,volodin,iddqd,dale03,roberto1,lizaveta,qqqqqq1,cathy1,08154711,davidm,quixote,bluenote,tazdevil,katrina1,bigfoot1,bublik,marma,olechka,fatpussy,marduk,arina,nonrev67,qqqq1111,camill,wtpfhm,truffle,fairview,mashina,voltaire,qazxswedcvfr,dickface,grassy,lapdance,bosstone,crazy8,yackwin,mobil,danielit,mounta1n,player69,bluegill,mewtwo,reverb,cnthdf,pablito,a123321,elena1,warcraft1,orland,ilovemyself,rfntyjr,joyride,schoo,dthjxrf,thetachi,goodtimes,blacksun,humpty,chewbacca,guyute,123xyz,lexicon,blue45,qwe789,galatasaray,centrino,hendrix1,deimos,saturn5,craig1,vlad1996,sarah123,tupelo,ljrnjh,hotwife,bingos,1231231,nicholas1,flamer,pusher,1233210,heart1,hun999,jiggy,giddyup,oktober,123456zxc,budda,galahad,glamur,samwise,oneton,bugsbunny,dominic1,scooby2,freetime,internat,159753852,sc00ter,wantit,mazinger,inflames,laracrof,greedo,014789,godofwar,repytwjd,water123,fishnet,venus1,wallace1,tenpin,paula1,1475963,mania,novikov,qwertyasdfgh,goldmine,homies,777888999,8balls,holeinon,paper1,samael,013579,mansur,nikit,ak1234,blueline,polska1,hotcock,laredo,windstar,vbkbwbz,raider1,newworld,lfybkrf,catfish1,shorty1,piranha,treacle,royale,2234562,smurfs,minion,cadence,flapjack,123456p,sydne,135531,robinhoo,nasdaq,decatur,cyberonline,newage,gemstone,jabba,touchme,hooch,pigdog,indahous,fonzie,zebra1,juggle,patrick2,nihongo,hitomi,oldnavy,qwerfdsa,ukraina,shakti,allure,kingrich,diane1,canad,piramide,hottie1,clarion,college1,5641110,connect1,therion,clubber,velcro,dave1,astra1,13579-,astroboy,skittle,isgreat,photoes,cvzefh1gkc,001100,2cool4u,7555545,ginger12,2wsxcde3,camaro69,invader,domenow,asd1234,colgate,qwertasdfg,jack123,pass01,maxman,bronte,whkzyc,peter123,bogie,yecgaa,abc321,1qay2wsx,enfield,camaroz2,trashman,bonefish,system32,azsxdcfvgb,peterose,iwantyou,dick69,temp1234,blastoff,capa200,connie1,blazin,12233445,sexybaby,123456j,brentfor,pheasant,hommer,jerryg,thunders,august1,lager,kapusta,boobs1,nokia5300,rocco1,xytfu7,stars1,tugger,123sas,blingbling,1bubba,0wnsyo0,1george,baile,richard2,habana,1diamond,sensatio,1golfer,maverick1,1chris,clinton1,michael7,dragons1,sunrise1,pissant,fatim,mopar1,levani,rostik,pizzapie,987412365,oceans11,748159263,cum4me,palmetto,4r3e2w1q,paige1,muncher,arsehole,kratos,gaffer,banderas,billys,prakash,crabby,bungie,silver12,caddis,spawn1,xboxlive,sylvania,littlebi,524645,futura,valdemar,isacs155,prettygirl,big123,555444,slimer,chicke,newstyle,skypilot,sailormoon,fatluvr69,jetaime,sitruc,jesuschrist,sameer,bear12,hellion,yendor,country1,etnies,conejo,jedimast,darkknight,toobad,yxcvbn,snooks,porn4life,calvary,alfaromeo,ghostman,yannick,fnkfynblf,vatoloco,homebase,5550666,barret,1111111111zz,odysseus,edwardss,favre4,jerrys,crybaby,xsw21qaz,firestor,spanks,indians1,squish,kingair,babycakes,haters,sarahs,212223,teddyb,xfactor,cumload,rhapsody,death123,three3,raccoon,thomas2,slayer66,1q2q3q4q5q,thebes,mysterio,thirdeye,orkiox.,nodoubt,bugsy,schweiz,dima1996,angels1,darkwing,jeronimo,moonpie,ronaldo9,peaches2,mack10,manish,denise1,fellowes,carioca,taylor12,epaulson,makemoney,oc247ngucz,kochanie,3edcvfr4,vulture,1qw23e,1234567z,munchie,picard1,xthtgfirf,sportste,psycho1,tahoe1,creativ,perils,slurred,hermit,scoob,diesel1,cards1,wipeout,weeble,integra1,out3xf,powerpc,chrism,kalle,ariadne,kailua,phatty,dexter1,fordman,bungalow,paul123,compa,train1,thejoker,jys6wz,pussyeater,eatmee,sludge,dominus,denisa,tagheuer,yxcvbnm,bill1,ghfdlf,300zx,nikita123,carcass,semaj,ramone,muenchen,animal1,greeny,annemari,dbrf134,jeepcj7,mollys,garten,sashok,ironmaid,coyotes,astoria,george12,westcoast,primetim,123456o,panchito,rafae,japan1,framer,auralo,tooshort,egorova,qwerty22,callme,medicina,warhawk,w1w2w3w4,cristia,merli,alex22,kawaii,chatte,wargames,utvols,muaddib,trinket,andreas1,jjjjj1,cleric,scooters,cuntlick,gggggg1,slipknot1,235711,handcuff,stussy,guess1,leiceste,ppppp1,passe,lovegun,chevyman,hugecock,driver1,buttsex,psychnaut1,cyber1,black2,alpha12,melbourn,man123,metalman,yjdsqujl,blondi,bungee,freak1,stomper,caitlin1,nikitina,flyaway,prikol,begood,desperad,aurelius,john1234,whosyourdaddy,slimed123,bretagne,den123,hotwheel,king123,roodypoo,izzicam,save13tx,warpten,nokia3310,samolet,ready1,coopers,scott123,bonito,1aaaaa,yomomma,dawg1,rache,itworks,asecret,fencer,451236,polka,olivetti,sysadmin,zepplin,sanjuan,479373,lickem,hondacrx,pulamea,future1,naked1,sexyguy,w4g8at,lollol1,declan,runner1,rumple,daddy123,4snz9g,grandprix,calcio,whatthefuck,nagrom,asslick,pennst,negrit,squiggy,1223334444,police22,giovann,toronto1,tweet,yardbird,seagate,truckers,554455,scimitar,pescator,slydog,gaysex,dogfish,fuck777,12332112,qazxswed,morkovka,daniela1,imback,horny69,789123456,123456789w,jimmy2,bagger,ilove69,nikolaus,atdhfkm,rebirth,1111aaaa,pervasive,gjgeufq,dte4uw,gfhnbpfy,skeletor,whitney1,walkman,delorean,disco1,555888,as1234,ishikawa,fuck12,reaper1,dmitrii,bigshot,morrisse,purgen,qwer4321,itachi,willys,123123qwe,kisska,roma123,trafford,sk84life,326159487,pedros,idiom,plover,bebop,159875321,jailbird,arrowhea,qwaszx123,zaxscdvf,catlover,bakers,13579246,bones69,vermont1,helloyou,simeon,chevyz71,funguy,stargaze,parolparol,steph1,bubby,apathy,poppet,laxman,kelly123,goodnews,741236,boner1,gaetano,astonvilla,virtua,luckyboy,rocheste,hello2u,elohim,trigger1,cstrike,pepsicola,miroslav,96385274,fistfuck,cheval,magyar,svetlanka,lbfyjxrf,mamedov,123123123q,ronaldo1,scotty1,1nicole,pittbull,fredd,bbbbb1,dagwood,gfhkfvtyn,ghblehrb,logan5,1jordan,sexbomb,omega2,montauk,258741,dtythf,gibbon,winamp,thebomb,millerli,852654,gemin,baldy,halflife2,dragon22,mulberry,morrigan,hotel6,zorglub,surfin,951159,excell,arhangel,emachine,moses1,968574,reklama,bulldog2,cuties,barca,twingo,saber,elite11,redtruck,casablan,ashish,moneyy,pepper12,cnhtktw,rjcnbr,arschloch,phenix,cachorro,sunita,madoka,joselui,adams1,mymoney,hemicuda,fyutkjr,jake12,chicas,eeeee1,sonnyboy,smarties,birdy,kitten1,cnfcbr,island1,kurosaki,taekwond,konfetka,bennett1,omega3,jackson2,fresca,minako,octavian,kban667,feyenoord,muaythai,jakedog,fktrcfylhjdyf,1357911q,phuket,sexslave,fktrcfylhjdbx,asdfjk,89015173454,qwerty00,kindbud,eltoro,sex6969,nyknicks,12344321q,caballo,evenflow,hoddle,love22,metro1,mahalko,lawdog,tightass,manitou,buckie,whiskey1,anton123,335533,password4,primo,ramair,timbo,brayden,stewie,pedro1,yorkshir,ganster,hellothe,tippy1,direwolf,genesi,rodrig,enkeli,vaz21099,sorcerer,winky,oneshot,boggle,serebro,badger1,japanes,comicbook,kamehame,alcat,denis123,echo45,sexboy,gr8ful,hondo,voetbal,blue33,2112rush,geneviev,danni1,moosey,polkmn,matthew7,ironhead,hot2trot,ashley12,sweeper,imogen,blue21,retep,stealth1,guitarra,bernard1,tatian,frankfur,vfnhbwf,slacking,haha123,963741,asdasdas,katenok,airforce1,123456789qaz,shotgun1,12qwasz,reggie1,sharo,976431,pacifica,dhip6a,neptun,kardon,spooky1,beaut,555555a,toosweet,tiedup,11121314,startac,lover69,rediska,pirata,vfhrbp,1234qwerty,energize,hansolo1,playbo,larry123,oemdlg,cnjvfnjkju,a123123,alexan,gohawks,antonius,fcbayern,mambo,yummy1,kremlin,ellen1,tremere,vfiekz,bellevue,charlie9,izabella,malishka,fermat,rotterda,dawggy,becket,chasey,kramer1,21125150,lolit,cabrio,schlong,arisha,verity,3some,favorit,maricon,travelle,hotpants,red1234,garrett1,home123,knarf,seven777,figment,asdewq,canseco,good2go,warhol,thomas01,pionee,al9agd,panacea,chevy454,brazzers,oriole,azerty123,finalfan,patricio,northsta,rebelde,bulldo,stallone,boogie1,7uftyx,cfhfnjd,compusa,cornholi,config,deere,hoopster,sepultura,grasshop,babygurl,lesbo,diceman,proverbs,reddragon,nurbek,tigerwoo,superdup,buzzsaw,kakaroto,golgo13,edwar,123qaz123,butter1,sssss1,texas2,respekt,ou812ic,123456qaz,55555a,doctor1,mcgwire,maria123,aol999,cinders,aa1234,joness,ghbrjkmyj,makemone,sammyboy,567765,380zliki,theraven,testme,mylene,elvira26,indiglo,tiramisu,shannara,baby1,123666,gfhreh,papercut,johnmish,orange8,bogey1,mustang7,bagpipes,dimarik,vsijyjr,4637324,ravage,cogito,seven11,natashka,warzone,hr3ytm,4free,bigdee,000006,243462536,bigboi,123333,trouts,sandy123,szevasz,monica2,guderian,newlife1,ratchet,r12345,razorbac,12345i,piazza31,oddjob,beauty1,fffff1,anklet,nodrog,pepit,olivi,puravida,robert12,transam1,portman,bubbadog,steelers1,wilson1,eightball,mexico1,superboy,4rfv5tgb,mzepab,samurai1,fuckslut,colleen1,girdle,vfrcbvec,q1w2e3r4t,soldier1,19844891,alyssa1,a12345a,fidelis,skelter,nolove,mickeymouse,frehley,password69,watermel,aliska,soccer15,12345e,ladybug1,abulafia,adagio,tigerlil,takehana,hecate,bootneck,junfan,arigato,wonkette,bobby123,trustnoone,phantasm,132465798,brianjo,w12345,t34vfrc1991,deadeye,1robert,1daddy,adida,check1,grimlock,muffi,airwalk,prizrak,onclick,longbeac,ernie1,eadgbe,moore1,geniu,shadow123,bugaga,jonathan1,cjrjkjdf,orlova,buldog,talon1,westport,aenima,541233432442,barsuk,chicago2,kellys,hellbent,toughguy,iskander,skoal,whatisit,jake123,scooter2,fgjrfkbgcbc,ghandi,love13,adelphia,vjhrjdrf,adrenali,niunia,jemoeder,rainbo,all4u8,anime1,freedom7,seraph,789321,tommys,antman,firetruc,neogeo,natas,bmwm3,froggy1,paul1,mamit,bayview,gateways,kusanagi,ihateu,frederi,rock1,centurion,grizli,biggin,fish1,stalker1,3girls,ilovepor,klootzak,lollo,redsox04,kirill123,jake1,pampers,vasya,hammers1,teacup,towing,celtic1,ishtar,yingyang,4904s677075,dahc1,patriot1,patrick9,redbirds,doremi,rebecc,yoohoo,makarova,epiphone,rfgbnfy,milesd,blister,chelseafc,katana1,blackrose,1james,primrose,shock5,hard1,scooby12,c6h12o6,dustoff,boing,chisel,kamil,1william,defiant1,tyvugq,mp8o6d,aaa340,nafets,sonnet,flyhigh,242526,crewcom,love23,strike1,stairway,katusha,salamand,cupcake1,password0,007james,sunnie,multisync,harley01,tequila1,fred12,driver8,q8zo8wzq,hunter01,mozzer,temporar,eatmeraw,mrbrownxx,kailey,sycamore,flogger,tincup,rahasia,ganymede,bandera,slinger,1111122222,vander,woodys,1cowboy,khaled,jamies,london12,babyboo,tzpvaw,diogenes,budice,mavrick,135797531,cheeta,macros,squonk,blackber,topfuel,apache1,falcon16,darkjedi,cheeze,vfhvtkfl,sparco,change1,gfhfif,freestyl,kukuruza,loveme2,12345f,kozlov,sherpa,marbella,44445555,bocephus,1winner,alvar,hollydog,gonefish,iwantin,barman,godislove,amanda18,rfpfynbg,eugen,abcdef1,redhawk,thelema,spoonman,baller1,harry123,475869,tigerman,cdtnjxrf,marillio,scribble,elnino,carguy,hardhead,l2g7k3,troopers,selen,dragon76,antigua,ewtosi,ulysse,astana,paroli,cristo,carmex,marjan,bassfish,letitbe,kasparov,jay123,19933991,blue13,eyecandy,scribe,mylord,ukflbjkec,ellie1,beaver1,destro,neuken,halfpint,ameli,lilly1,satanic,xngwoj,12345trewq,asdf1,bulldogg,asakura,jesucrist,flipside,packers4,biggy,kadett,biteme69,bobdog,silverfo,saint1,bobbo,packman,knowledg,foolio,fussbal,12345g,kozerog,westcoas,minidisc,nbvcxw,martini1,alastair,rasengan,superbee,memento,porker,lena123,florenc,kakadu,bmw123,getalife,bigsky,monkee,people1,schlampe,red321,memyself,0147896325,12345678900987654321,soccer14,realdeal,gfgjxrf,bella123,juggs,doritos,celtics1,peterbilt,ghbdtnbrb,gnusmas,xcountry,ghbdtn1,batman99,deusex,gtnhjdf,blablabl,juster,marimba,love2,rerjkrf,alhambra,micros,siemens1,assmaste,moonie,dashadasha,atybrc,eeeeee1,wildrose,blue55,davidl,xrp23q,skyblue,leo123,ggggg1,bestfriend,franny,1234rmvb,fun123,rules1,sebastien,chester2,hakeem,winston2,fartripper,atlant,07831505,iluvsex,q1a2z3,larrys,009900,ghjkju,capitan,rider1,qazxsw21,belochka,andy123,hellya,chicca,maximal,juergen,password1234,howard1,quetzal,daniel123,qpwoeiruty,123555,bharat,ferrari3,numbnuts,savant,ladydog,phipsi,lovepussy,etoile,power2,mitten,britneys,chilidog,08522580,2fchbg,kinky1,bluerose,loulo,ricardo1,doqvq3,kswbdu,013cpfza,timoha,ghbdtnghbdtn,3stooges,gearhead,browns1,g00ber,super7,greenbud,kitty2,pootie,toolshed,gamers,coffe,ibill123,freelove,anasazi,sister1,jigger,natash,stacy1,weronika,luzern,soccer7,hoopla,dmoney,valerie1,canes,razdvatri,washere,greenwoo,rfhjkbyf,anselm,pkxe62,maribe,daniel2,maxim1,faceoff,carbine,xtkjdtr,buddy12,stratos,jumpman,buttocks,aqswdefr,pepsis,sonechka,steeler1,lanman,nietzsch,ballz,biscuit1,wrxsti,goodfood,juventu,federic,mattman,vika123,strelec,jledfyxbr,sideshow,4life,fredderf,bigwilly,12347890,12345671,sharik,bmw325i,fylhtqrf,dannon4,marky,mrhappy,drdoom,maddog1,pompier,cerbera,goobers,howler,jenny69,evely,letitrid,cthuttdyf,felip,shizzle,golf12,t123456,yamah,bluearmy,squishy,roxan,10inches,dollface,babygirl1,blacksta,kaneda,lexingto,canadien,222888,kukushka,sistema,224422,shadow69,ppspankp,mellons,barbie1,free4all,alfa156,lostone,2w3e4r5t,painkiller,robbie1,binger,8dihc6,jaspe,rellik,quark,sogood,hoopstar,number2,snowy1,dad2ownu,cresta,qwe123asd,hjvfyjdf,gibsonsg,qbg26i,dockers,grunge,duckling,lfiekz,cuntsoup,kasia1,1tigger,woaini,reksio,tmoney,firefighter,neuron,audia3,woogie,powerboo,powermac,fatcock,12345666,upnfmc,lustful,porn1,gotlove,amylee,kbytqrf,11924704,25251325,sarasota,sexme,ozzie1,berliner,nigga1,guatemal,seagulls,iloveyou!,chicken2,qwerty21,010203040506,1pillow,libby1,vodoley,backlash,piglets,teiubesc,019283,vonnegut,perico,thunde,buckey,gtxtymrf,manunite,iiiii1,lost4815162342,madonn,270873_,britney1,kevlar,piano1,boondock,colt1911,salamat,doma77ns,anuradha,cnhjqrf,rottweil,newmoon,topgun1,mauser,fightclu,birthday21,reviewpa,herons,aassddff,lakers32,melissa2,vredina,jiujitsu,mgoblue,shakey,moss84,12345zxcvb,funsex,benji1,garci,113322,chipie,windex,nokia5310,pwxd5x,bluemax,cosita,chalupa,trotsky,new123,g3ujwg,newguy,canabis,gnaget,happydays,felixx,1patrick,cumface,sparkie,kozlova,123234,newports,broncos7,golf18,recycle,hahah,harrypot,cachondo,open4me,miria,guessit,pepsione,knocker,usmc1775,countach,playe,wiking,landrover,cracksevi,drumline,a7777777,smile123,manzana,panty,liberta,pimp69,dolfan,quality1,schnee,superson,elaine22,webhompass,mrbrownx,deepsea,4wheel,mamasita,rockport,rollie,myhome,jordan12,kfvgjxrf,hockey12,seagrave,ford1,chelsea2,samsara,marissa1,lamesa,mobil1,piotrek,tommygun,yyyyy1,wesley1,billy123,homersim,julies,amanda12,shaka,maldini,suzenet,springst,iiiiii1,yakuza,111111aa,westwind,helpdesk,annamari,bringit,hopefull,hhhhhhh1,saywhat,mazdarx8,bulova,jennife1,baikal,gfhjkmxbr,victoria1,gizmo123,alex99,defjam,2girls,sandrock,positivo,shingo,syncmast,opensesa,silicone,fuckina,senna1,karlos,duffbeer,montagne,gehrig,thetick,pepino,hamburge,paramedic,scamp,smokeweed,fabregas,phantoms,venom121293,2583458,badone,porno69,manwhore,vfvf123,notagain,vbktyf,rfnthbyrf,wildblue,kelly001,dragon66,camell,curtis1,frolova,1212123,dothedew,tyler123,reddrago,planetx,promethe,gigolo,1001001,thisone,eugeni,blackshe,cruzazul,incognito,puller,joonas,quick1,spirit1,gazza,zealot,gordito,hotrod1,mitch1,pollito,hellcat,mythos,duluth,383pdjvl,easy123,hermos,binkie,its420,lovecraf,darien,romina,doraemon,19877891,syclone,hadoken,transpor,ichiro,intell,gargamel,dragon2,wavpzt,557744,rjw7x4,jennys,kickit,rjynfrn,likeit,555111,corvus,nec3520,133113,mookie1,bochum,samsung2,locoman0,154ugeiu,vfvfbgfgf,135792,[start],tenni,20001,vestax,hufmqw,neveragain,wizkid,kjgfnf,nokia6303,tristen,saltanat,louie1,gandalf2,sinfonia,alpha3,tolstoy,ford150,f00bar,1hello,alici,lol12,riker1,hellou,333888,1hunter,qw1234,vibrator,mets86,43211234,gonzale,cookies1,sissy1,john11,bubber,blue01,cup2006,gtkmvtyb,nazareth,heybaby,suresh,teddie,mozilla,rodeo1,madhouse,gamera,123123321,naresh,dominos,foxtrot1,taras,powerup,kipling,jasonb,fidget,galena,meatman,alpacino,bookmark,farting,humper,titsnass,gorgon,castaway,dianka,anutka,gecko1,fucklove,connery,wings1,erika1,peoria,moneymaker,ichabod,heaven1,paperboy,phaser,breakers,nurse1,westbrom,alex13,brendan1,123asd123,almera,grubber,clarkie,thisisme,welkom01,51051051051,crypto,freenet,pflybwf,black12,testme2,changeit,autobahn,attica,chaoss,denver1,tercel,gnasher23,master2,vasilii,sherman1,gomer,bigbuck,derek1,qwerzxcv,jumble,dragon23,art131313,numark,beasty,cxfcnmttcnm,updown,starion,glist,sxhq65,ranger99,monkey7,shifter,wolves1,4r5t6y,phone1,favorite5,skytommy,abracada,1martin,102030405060,gatech,giulio,blacktop,cheer1,africa1,grizzly1,inkjet,shemales,durango1,booner,11223344q,supergirl,vanyarespekt,dickless,srilanka,weaponx,6string,nashvill,spicey,boxer1,fabien,2sexy2ho,bowhunt,jerrylee,acrobat,tawnee,ulisse,nolimit8,l8g3bkde,pershing,gordo1,allover,gobrowns,123432,123444,321456987,spoon1,hhhhh1,sailing1,gardenia,teache,sexmachine,tratata,pirate1,niceone,jimbos,314159265,qsdfgh,bobbyy,ccccc1,carla1,vjkjltw,savana,biotech,frigid,123456789g,dragon10,yesiam,alpha06,oakwood,tooter,winsto,radioman,vavilon,asnaeb,google123,nariman,kellyb,dthyjcnm,password6,parol1,golf72,skate1,lthtdj,1234567890s,kennet,rossia,lindas,nataliya,perfecto,eminem1,kitana,aragorn1,rexona,arsenalf,planot,coope,testing123,timex,blackbox,bullhead,barbarian,dreamon,polaris1,cfvjktn,frdfhbev,gametime,slipknot666,nomad1,hfgcjlbz,happy69,fiddler,brazil1,joeboy,indianali,113355,obelisk,telemark,ghostrid,preston1,anonim,wellcome,verizon1,sayangku,censor,timeport,dummies,adult1,nbnfybr,donger,thales,iamgay,sexy1234,deadlift,pidaras,doroga,123qwe321,portuga,asdfgh12,happys,cadr14nu,pi3141,maksik,dribble,cortland,darken,stepanova,bommel,tropic,sochi2014,bluegras,shahid,merhaba,nacho,2580456,orange44,kongen,3cudjz,78girl,my3kids,marcopol,deadmeat,gabbie,saruman,jeepman,freddie1,katie123,master99,ronal,ballbag,centauri,killer7,xqgann,pinecone,jdeere,geirby,aceshigh,55832811,pepsimax,rayden,razor1,tallyho,ewelina,coldfire,florid,glotest,999333,sevenup,bluefin,limaperu,apostol,bobbins,charmed1,michelin,sundin,centaur,alphaone,christof,trial1,lions1,45645,just4you,starflee,vicki1,cougar1,green2,jellyfis,batman69,games1,hihje863,crazyzil,w0rm1,oklick,dogbite,yssup,sunstar,paprika,postov10,124578963,x24ik3,kanada,buckster,iloveamy,bear123,smiler,nx74205,ohiostat,spacey,bigbill,doudo,nikolaeva,hcleeb,sex666,mindy1,buster11,deacons,boness,njkcnsq,candy2,cracker1,turkey1,qwertyu1,gogreen,tazzzz,edgewise,ranger01,qwerty6,blazer1,arian,letmeinnow,cigar1,jjjjjj1,grigio,frien,tenchu,f9lmwd,imissyou,filipp,heathers,coolie,salem1,woodduck,scubadiv,123kat,raffaele,nikolaev,dapzu455,skooter,9inches,lthgfhjkm,gr8one,ffffff1,zujlrf,amanda69,gldmeo,m5wkqf,rfrltkf,televisi,bonjou,paleale,stuff1,cumalot,fuckmenow,climb7,mark1234,t26gn4,oneeye,george2,utyyflbq,hunting1,tracy71,ready2go,hotguy,accessno,charger1,rudedog,kmfdm,goober1,sweetie1,wtpmjgda,dimensio,ollie1,pickles1,hellraiser,mustdie,123zzz,99887766,stepanov,verdun,tokenbad,anatol,bartende,cidkid86,onkelz,timmie,mooseman,patch1,12345678c,marta1,dummy1,bethany1,myfamily,history1,178500,lsutiger,phydeaux,moren,dbrnjhjdbx,gnbxrf,uniden,drummers,abpbrf,godboy,daisy123,hogan1,ratpack,irland,tangerine,greddy,flore,sqrunch,billyjoe,q55555,clemson1,98745632,marios,ishot,angelin,access12,naruto12,lolly,scxakv,austin12,sallad,cool99,rockit,mongo1,mark22,ghbynth,ariadna,senha,docto,tyler2,mobius,hammarby,192168,anna12,claire1,pxx3eftp,secreto,greeneye,stjabn,baguvix,satana666,rhbcnbyjxrf,dallastx,garfiel,michaelj,1summer,montan,1234ab,filbert,squids,fastback,lyudmila,chucho,eagleone,kimberle,ar3yuk3,jake01,nokids,soccer22,1066ad,ballon,cheeto,review69,madeira,taylor2,sunny123,chubbs,lakeland,striker1,porche,qwertyu8,digiview,go1234,ferari,lovetits,aditya,minnow,green3,matman,cellphon,fortytwo,minni,pucara,69a20a,roman123,fuente,12e3e456,paul12,jacky,demian,littleman,jadakiss,vlad1997,franca,282860,midian,nunzio,xaccess2,colibri,jessica0,revilo,654456,harvey1,wolf1,macarena,corey1,husky1,arsen,milleniu,852147,crowes,redcat,combat123654,hugger,psalms,quixtar,ilovemom,toyot,ballss,ilovekim,serdar,james23,avenger1,serendip,malamute,nalgas,teflon,shagger,letmein6,vyjujnjxbt,assa1234,student1,dixiedog,gznybwf13,fuckass,aq1sw2de3,robroy,hosehead,sosa21,123345,ias100,teddy123,poppin,dgl70460,zanoza,farhan,quicksilver,1701d,tajmahal,depechemode,paulchen,angler,tommy2,recoil,megamanx,scarecro,nicole2,152535,rfvtgb,skunky,fatty1,saturno,wormwood,milwauke,udbwsk,sexlover,stefa,7bgiqk,gfnhbr,omar10,bratan,lbyfvj,slyfox,forest1,jambo,william3,tempus,solitari,lucydog,murzilka,qweasdzxc1,vehpbkrf,12312345,fixit,woobie,andre123,123456789x,lifter,zinaida,soccer17,andone,foxbat,torsten,apple12,teleport,123456i,leglover,bigcocks,vologda,dodger1,martyn,d6o8pm,naciona,eagleeye,maria6,rimshot,bentley1,octagon,barbos,masaki,gremio,siemen,s1107d,mujeres,bigtits1,cherr,saints1,mrpink,simran,ghzybr,ferrari2,secret12,tornado1,kocham,picolo,deneme,onelove1,rolan,fenster,1fuckyou,cabbie,pegaso,nastyboy,password5,aidana,mine2306,mike13,wetone,tigger69,ytreza,bondage1,myass,golova,tolik,happyboy,poilkj,nimda2k,rammer,rubies,hardcore1,jetset,hoops1,jlaudio,misskitt,1charlie,google12,theone1,phred,porsch,aalborg,luft4,charlie5,password7,gnosis,djgabbab,1daniel,vinny,borris,cumulus,member1,trogdor,darthmau,andrew2,ktjybl,relisys,kriste,rasta220,chgobndg,weener,qwerty66,fritter,followme,freeman1,ballen,blood1,peache,mariso,trevor1,biotch,gtfullam,chamonix,friendste,alligato,misha1,1soccer,18821221,venkat,superd,molotov,bongos,mpower,acun3t1x,dfcmrf,h4x3d,rfhfufylf,tigran,booyaa,plastic1,monstr,rfnhby,lookatme,anabolic,tiesto,simon123,soulman,canes1,skyking,tomcat1,madona,bassline,dasha123,tarheel1,dutch1,xsw23edc,qwerty123456789,imperator,slaveboy,bateau,paypal,house123,pentax,wolf666,drgonzo,perros,digger1,juninho,hellomoto,bladerun,zzzzzzz1,keebler,take8422,fffffff1,ginuwine,israe,caesar1,crack1,precious1,garand,magda1,zigazaga,321ewq,johnpaul,mama1234,iceman69,sanjeev,treeman,elric,rebell,1thunder,cochon,deamon,zoltan,straycat,uhbyuj,luvfur,mugsy,primer,wonder1,teetime,candycan,pfchfytw,fromage,gitler,salvatio,piggy1,23049307,zafira,chicky,sergeev,katze,bangers,andriy,jailbait,vaz2107,ghbhjlf,dbjktnnf,aqswde,zaratustra,asroma,1pepper,alyss,kkkkk1,ryan1,radish,cozumel,waterpol,pentium1,rosebowl,farmall,steinway,dbrekz,baranov,jkmuf,another1,chinacat,qqqqqqq1,hadrian,devilmaycry4,ratbag,teddy2,love21,pullings,packrat,robyn1,boobo,qw12er34,tribe1,rosey,celestia,nikkie,fortune12,olga123,danthema,gameon,vfrfhjys,dilshod,henry14,jenova,redblue,chimaera,pennywise,sokrates,danimal,qqaazz,fuaqz4,killer2,198200,tbone1,kolyan,wabbit,lewis1,maxtor,egoist,asdfas,spyglass,omegas,jack12,nikitka,esperanz,doozer,matematika,wwwww1,ssssss1,poiu0987,suchka,courtney1,gungho,alpha2,fktyjxrf,summer06,bud420,devildriver,heavyd,saracen,foucault,choclate,rjdfktyrj,goblue1,monaro,jmoney,dcpugh,efbcapa201,qqh92r,pepsicol,bbb747,ch5nmk,honeyb,beszoptad,tweeter,intheass,iseedeadpeople,123dan,89231243658s,farside1,findme,smiley1,55556666,sartre,ytcnjh,kacper,costarica,134679258,mikeys,nolimit9,vova123,withyou,5rxypn,love143,freebie,rescue1,203040,michael6,12monkey,redgreen,steff,itstime,naveen,good12345,acidrain,1dawg,miramar,playas,daddio,orion2,852741,studmuff,kobe24,senha123,stephe,mehmet,allalone,scarface1,helloworld,smith123,blueyes,vitali,memphis1,mybitch,colin1,159874,1dick,podaria,d6wnro,brahms,f3gh65,dfcbkmtd,xxxman,corran,ugejvp,qcfmtz,marusia,totem,arachnid,matrix2,antonell,fgntrf,zemfira,christos,surfing1,naruto123,plato1,56qhxs,madzia,vanille,043aaa,asq321,mutton,ohiostate,golde,cdznjckfd,rhfcysq,green5,elephan,superdog,jacqueli,bollock,lolitas,nick12,1orange,maplelea,july23,argento,waldorf,wolfer,pokemon12,zxcvbnmm,flicka,drexel,outlawz,harrie,atrain,juice2,falcons1,charlie6,19391945,tower1,dragon21,hotdamn,dirtyboy,love4ever,1ginger,thunder2,virgo1,alien1,bubblegu,4wwvte,123456789qqq,realtime,studio54,passss,vasilek,awsome,giorgia,bigbass,2002tii,sunghile,mosdef,simbas,count0,uwrl7c,summer05,lhepmz,ranger21,sugarbea,principe,5550123,tatanka,9638v,cheerios,majere,nomercy,jamesbond007,bh90210,7550055,jobber,karaganda,pongo,trickle,defamer,6chid8,1q2a3z,tuscan,nick123,.adgjm,loveyo,hobbes1,note1234,shootme,171819,loveporn,9788960,monty123,fabrice,macduff,monkey13,shadowfa,tweeker,hanna1,madball,telnet,loveu2,qwedcxzas,thatsit,vfhcbr,ptfe3xxp,gblfhfcs,ddddddd1,hakkinen,liverune,deathsta,misty123,suka123,recon1,inferno1,232629,polecat,sanibel,grouch,hitech,hamradio,rkfdbfnehf,vandam,nadin,fastlane,shlong,iddqdidkfa,ledzeppelin,sexyfeet,098123,stacey1,negras,roofing,lucifer1,ikarus,tgbyhn,melnik,barbaria,montego,twisted1,bigal1,jiggle,darkwolf,acerview,silvio,treetops,bishop1,iwanna,pornsite,happyme,gfccdjhl,114411,veritech,batterse,casey123,yhntgb,mailto,milli,guster,q12345678,coronet,sleuth,fuckmeha,armadill,kroshka,geordie,lastochka,pynchon,killall,tommy123,sasha1996,godslove,hikaru,clticic,cornbrea,vfkmdbyf,passmaster,123123123a,souris,nailer,diabolo,skipjack,martin12,hinata,mof6681,brookie,dogfight,johnso,karpov,326598,rfvbrflpt,travesti,caballer,galaxy1,wotan,antoha,art123,xakep1234,ricflair,pervert1,p00kie,ambulanc,santosh,berserker,larry33,bitch123,a987654321,dogstar,angel22,cjcbcrf,redhouse,toodles,gold123,hotspot,kennedy1,glock21,chosen1,schneide,mainman,taffy1,3ki42x,4zqauf,ranger2,4meonly,year2000,121212a,kfylsi,netzwerk,diese,picasso1,rerecz,225522,dastan,swimmer1,brooke1,blackbea,oneway,ruslana,dont4get,phidelt,chrisp,gjyxbr,xwing,kickme,shimmy,kimmy1,4815162342lost,qwerty5,fcporto,jazzbo,mierd,252627,basses,sr20det,00133,florin,howdy1,kryten,goshen,koufax,cichlid,imhotep,andyman,wrest666,saveme,dutchy,anonymou,semprini,siempre,mocha1,forest11,wildroid,aspen1,sesam,kfgekz,cbhbec,a55555,sigmanu,slash1,giggs11,vatech,marias,candy123,jericho1,kingme,123a123,drakula,cdjkjxm,mercur,oneman,hoseman,plumper,ilovehim,lancers,sergey1,takeshi,goodtogo,cranberr,ghjcnj123,harvick,qazxs,1972chev,horsesho,freedom3,letmein7,saitek,anguss,vfvfgfgfz,300000,elektro,toonporn,999111999q,mamuka,q9umoz,edelweis,subwoofer,bayside,disturbe,volition,lucky3,12345678z,3mpz4r,march1,atlantida,strekoza,seagrams,090909t,yy5rbfsc,jack1234,sammy12,sampras,mark12,eintrach,chaucer,lllll1,nochance,whitepower,197000,lbvekz,passer,torana,12345as,pallas,koolio,12qw34,nokia8800,findout,1thomas,mmmmm1,654987,mihaela,chinaman,superduper,donnas,ringo1,jeroen,gfdkjdf,professo,cdtnrf,tranmere,tanstaaf,himera,ukflbfnjh,667788,alex32,joschi,w123456,okidoki,flatline,papercli,super8,doris1,2good4u,4z34l0ts,pedigree,freeride,gsxr1100,wulfgar,benjie,ferdinan,king1,charlie7,djdxbr,fhntvbq,ripcurl,2wsx1qaz,kingsx,desade,sn00py,loveboat,rottie,evgesha,4money,dolittle,adgjmpt,buzzers,brett1,makita,123123qweqwe,rusalka,sluts1,123456e,jameson1,bigbaby,1z2z3z,ckjybr,love4u,fucker69,erhfbyf,jeanluc,farhad,fishfood,merkin,giant1,golf69,rfnfcnhjaf,camera1,stromb,smoothy,774411,nylon,juice1,rfn.irf,newyor,123456789t,marmot,star11,jennyff,jester1,hisashi,kumquat,alex777,helicopt,merkur,dehpye,cummin,zsmj2v,kristjan,april12,englan,honeypot,badgirls,uzumaki,keines,p12345,guita,quake1,duncan1,juicer,milkbone,hurtme,123456789b,qq123456789,schwein,p3wqaw,54132442,qwertyytrewq,andreeva,ruffryde,punkie,abfkrf,kristinka,anna1987,ooooo1,335533aa,umberto,amber123,456123789,456789123,beelch,manta,peeker,1112131415,3141592654,gipper,wrinkle5,katies,asd123456,james11,78n3s5af,michael0,daboss,jimmyb,hotdog1,david69,852123,blazed,sickan,eljefe,2n6wvq,gobills,rfhfcm,squeaker,cabowabo,luebri,karups,test01,melkor,angel777,smallvil,modano,olorin,4rkpkt,leslie1,koffie,shadows1,littleon,amiga1,topeka,summer20,asterix1,pitstop,aloysius,k12345,magazin,joker69,panocha,pass1word,1233214,ironpony,368ejhih,88keys,pizza123,sonali,57np39,quake2,1234567890qw,1020304,sword1,fynjif,abcde123,dfktyjr,rockys,grendel1,harley12,kokakola,super2,azathoth,lisa123,shelley1,girlss,ibragim,seven1,jeff24,1bigdick,dragan,autobot,t4nvp7,omega123,900000,hecnfv,889988,nitro1,doggie1,fatjoe,811pahc,tommyt,savage1,pallino,smitty1,jg3h4hfn,jamielee,1qazwsx,zx123456,machine1,asdfgh123,guinnes,789520,sharkman,jochen,legend1,sonic2,extreme1,dima12,photoman,123459876,nokian95,775533,vaz2109,april10,becks,repmvf,pooker,qwer12345,themaster,nabeel,monkey10,gogetit,hockey99,bbbbbbb1,zinedine,dolphin2,anelka,1superma,winter01,muggsy,horny2,669966,kuleshov,jesusis,calavera,bullet1,87t5hdf,sleepers,winkie,vespa,lightsab,carine,magister,1spider,shitbird,salavat,becca1,wc18c2,shirak,galactus,zaskar,barkley1,reshma,dogbreat,fullsail,asasa,boeder,12345ta,zxcvbnm12,lepton,elfquest,tony123,vkaxcs,savatage,sevilia1,badkitty,munkey,pebbles1,diciembr,qapmoc,gabriel2,1qa2ws3e,cbcmrb,welldone,nfyufh,kaizen,jack11,manisha,grommit,g12345,maverik,chessman,heythere,mixail,jjjjjjj1,sylvia1,fairmont,harve,skully,global1,youwish,pikachu1,badcat,zombie1,49527843,ultra1,redrider,offsprin,lovebird,153426,stymie,aq1sw2,sorrento,0000001,r3ady41t,webster1,95175,adam123,coonass,159487,slut1,gerasim,monkey99,slutwife,159963,1pass1page,hobiecat,bigtymer,all4you,maggie2,olamide,comcast1,infinit,bailee,vasileva,.ktxrf,asdfghjkl1,12345678912,setter,fuckyou7,nnagqx,lifesuck,draken,austi,feb2000,cable1,1234qwerasdf,hax0red,zxcv12,vlad7788,nosaj,lenovo,underpar,huskies1,lovegirl,feynman,suerte,babaloo,alskdjfhg,oldsmobi,bomber1,redrover,pupuce,methodman,phenom,cutegirl,countyli,gretsch,godisgood,bysunsu,hardhat,mironova,123qwe456rty,rusty123,salut,187211,555666777,11111z,mahesh,rjntyjxtr,br00klyn,dunce1,timebomb,bovine,makelove,littlee,shaven,rizwan,patrick7,42042042,bobbijo,rustem,buttmunc,dongle,tiger69,bluecat,blackhol,shirin,peaces,cherub,cubase,longwood,lotus7,gwju3g,bruin,pzaiu8,green11,uyxnyd,seventee,dragon5,tinkerbel,bluess,bomba,fedorova,joshua2,bodyshop,peluche,gbpacker,shelly1,d1i2m3a4,ghtpbltyn,talons,sergeevna,misato,chrisc,sexmeup,brend,olddog,davros,hazelnut,bridget1,hzze929b,readme,brethart,wild1,ghbdtnbr1,nortel,kinger,royal1,bucky1,allah1,drakkar,emyeuanh,gallaghe,hardtime,jocker,tanman,flavio,abcdef123,leviatha,squid1,skeet,sexse,123456x,mom4u4mm,lilred,djljktq,ocean11,cadaver,baxter1,808state,fighton,primavera,1andrew,moogle,limabean,goddess1,vitalya,blue56,258025,bullride,cicci,1234567d,connor1,gsxr11,oliveoil,leonard1,legsex,gavrik,rjnjgtc,mexicano,2bad4u,goodfellas,ornw6d,mancheste,hawkmoon,zlzfrh,schorsch,g9zns4,bashful,rossi46,stephie,rfhfntkm,sellout,123fuck,stewar1,solnze,00007,thor5200,compaq12,didit,bigdeal,hjlbyf,zebulon,wpf8eu,kamran,emanuele,197500,carvin,ozlq6qwm,3syqo15hil,pennys,epvjb6,asdfghjkl123,198000,nfbcbz,jazzer,asfnhg66,zoloft,albundy,aeiou,getlaid,planet1,gjkbyjxrf,alex2000,brianb,moveon,maggie11,eieio,vcradq,shaggy1,novartis,cocoloco,dunamis,554uzpad,sundrop,1qwertyu,alfie,feliks,briand,123www,red456,addams,fhntv1998,goodhead,theway,javaman,angel01,stratoca,lonsdale,15987532,bigpimpin,skater1,issue43,muffie,yasmina,slowride,crm114,sanity729,himmel,carolcox,bustanut,parabola,masterlo,computador,crackhea,dynastar,rockbott,doggysty,wantsome,bigten,gaelle,juicy1,alaska1,etower,sixnine,suntan,froggies,nokia7610,hunter11,njnets,alicante,buttons1,diosesamo,elizabeth1,chiron,trustnoo,amatuers,tinytim,mechta,sammy2,cthulu,trs8f7,poonam,m6cjy69u35,cookie12,blue25,jordans,santa1,kalinka,mikey123,lebedeva,12345689,kissss,queenbee,vjybnjh,ghostdog,cuckold,bearshare,rjcntyrj,alinochka,ghjcnjrdfibyj,aggie1,teens1,3qvqod,dauren,tonino,hpk2qc,iqzzt580,bears85,nascar88,theboy,njqcw4,masyanya,pn5jvw,intranet,lollone,shadow99,00096462,techie,cvtifhbrb,redeemed,gocanes,62717315,topman,intj3a,cobrajet,antivirus,whyme,berserke,ikilz083,airedale,brandon2,hopkig,johanna1,danil8098,gojira,arthu,vision1,pendragon,milen,chrissie,vampiro,mudder,chris22,blowme69,omega7,surfers,goterps,italy1,baseba11,diego1,gnatsum,birdies,semenov,joker123,zenit2011,wojtek,cab4ma99,watchmen,damia,forgotte,fdm7ed,strummer,freelanc,cingular,orange77,mcdonalds,vjhjpjdf,kariya,tombston,starlet,hawaii1,dantheman,megabyte,nbvjirf,anjing,ybrjkftdbx,hotmom,kazbek,pacific1,sashimi,asd12,coorslig,yvtte545,kitte,elysium,klimenko,cobblers,kamehameha,only4me,redriver,triforce,sidorov,vittoria,fredi,dank420,m1234567,fallout2,989244342a,crazy123,crapola,servus,volvos,1scooter,griffin1,autopass,ownzyou,deviant,george01,2kgwai,boeing74,simhrq,hermosa,hardcor,griffy,rolex1,hackme,cuddles1,master3,bujhtr,aaron123,popolo,blader,1sexyred,gerry1,cronos,ffvdj474,yeehaw,bob1234,carlos2,mike77,buckwheat,ramesh,acls2h,monster2,montess,11qq22ww,lazer,zx123456789,chimpy,masterch,sargon,lochness,archana,1234qwert,hbxfhl,sarahb,altoid,zxcvbn12,dakot,caterham,dolomite,chazz,r29hqq,longone,pericles,grand1,sherbert,eagle3,pudge,irontree,synapse,boome,nogood,summer2,pooki,gangsta1,mahalkit,elenka,lbhtrnjh,dukedog,19922991,hopkins1,evgenia,domino1,x123456,manny1,tabbycat,drake1,jerico,drahcir,kelly2,708090a,facesit,11c645df,mac123,boodog,kalani,hiphop1,critters,hellothere,tbirds,valerka,551scasi,love777,paloalto,mrbrown,duke3d,killa1,arcturus,spider12,dizzy1,smudger,goddog,75395,spammy,1357997531,78678,datalife,zxcvbn123,1122112211,london22,23dp4x,rxmtkp,biggirls,ownsu,lzbs2twz,sharps,geryfe,237081a,golakers,nemesi,sasha1995,pretty1,mittens1,d1lakiss,speedrac,gfhjkmm,sabbat,hellrais,159753258,qwertyuiop123,playgirl,crippler,salma,strat1,celest,hello5,omega5,cheese12,ndeyl5,edward12,soccer3,cheerio,davido,vfrcbr,gjhjctyjr,boscoe,inessa,shithole,ibill,qwepoi,201jedlz,asdlkj,davidk,spawn2,ariel1,michael4,jamie123,romantik,micro1,pittsbur,canibus,katja,muhtar,thomas123,studboy,masahiro,rebrov,patrick8,hotboys,sarge1,1hammer,nnnnn1,eistee,datalore,jackdani,sasha2010,mwq6qlzo,cmfnpu,klausi,cnhjbntkm,andrzej,ilovejen,lindaa,hunter123,vvvvv1,novembe,hamster1,x35v8l,lacey1,1silver,iluvporn,valter,herson,alexsandr,cojones,backhoe,womens,777angel,beatit,klingon1,ta8g4w,luisito,benedikt,maxwel,inspecto,zaq12ws,wladimir,bobbyd,peterj,asdfg12,hellspawn,bitch69,nick1234,golfer23,sony123,jello1,killie,chubby1,kodaira52,yanochka,buckfast,morris1,roaddogg,snakeeye,sex1234,mike22,mmouse,fucker11,dantist,brittan,vfrfhjdf,doc123,plokijuh,emerald1,batman01,serafim,elementa,soccer9,footlong,cthuttdbx,hapkido,eagle123,getsmart,getiton,batman2,masons,mastiff,098890,cfvfhf,james7,azalea,sherif,saun24865709,123red,cnhtrjpf,martina1,pupper,michael5,alan12,shakir,devin1,ha8fyp,palom,mamulya,trippy,deerhunter,happyone,monkey77,3mta3,123456789f,crownvic,teodor,natusik,0137485,vovchik,strutter,triumph1,cvetok,moremone,sonnen,screwbal,akira1,sexnow,pernille,independ,poopies,samapi,kbcbxrf,master22,swetlana,urchin,viper2,magica,slurpee,postit,gilgames,kissarmy,clubpenguin,limpbizk,timber1,celin,lilkim,fuckhard,lonely1,mom123,goodwood,extasy,sdsadee23,foxglove,malibog,clark1,casey2,shell1,odense,balefire,dcunited,cubbie,pierr,solei,161718,bowling1,areyukesc,batboy,r123456,1pionee,marmelad,maynard1,cn42qj,cfvehfq,heathrow,qazxcvbn,connecti,secret123,newfie,xzsawq21,tubitzen,nikusha,enigma1,yfcnz123,1austin,michaelc,splunge,wanger,phantom2,jason2,pain4me,primetime21,babes1,liberte,sugarray,undergro,zonker,labatts,djhjyf,watch1,eagle5,madison2,cntgfirf,sasha2,masterca,fiction7,slick50,bruins1,sagitari,12481632,peniss,insuranc,2b8riedt,12346789,mrclean,ssptx452,tissot,q1w2e3r4t5y6u7,avatar1,comet1,spacer,vbrjkf,pass11,wanker1,14vbqk9p,noshit,money4me,sayana,fish1234,seaways,pipper,romeo123,karens,wardog,ab123456,gorilla1,andrey123,lifesucks,jamesr,4wcqjn,bearman,glock22,matt11,dflbvrf,barbi,maine1,dima1997,sunnyboy,6bjvpe,bangkok1,666666q,rafiki,letmein0,0raziel0,dalla,london99,wildthin,patrycja,skydog,qcactw,tmjxn151,yqlgr667,jimmyd,stripclub,deadwood,863abgsg,horses1,qn632o,scatman,sonia1,subrosa,woland,kolya,charlie4,moleman,j12345,summer11,angel11,blasen,sandal,mynewpas,retlaw,cambria,mustang4,nohack04,kimber45,fatdog,maiden1,bigload,necron,dupont24,ghost123,turbo2,.ktymrf,radagast,balzac,vsevolod,pankaj,argentum,2bigtits,mamabear,bumblebee,mercury7,maddie1,chomper,jq24nc,snooky,pussylic,1lovers,taltos,warchild,diablo66,jojo12,sumerki,aventura,gagger,annelies,drumset,cumshots,azimut,123580,clambake,bmw540,birthday54,psswrd,paganini,wildwest,filibert,teaseme,1test,scampi,thunder5,antosha,purple12,supersex,hhhhhh1,brujah,111222333a,13579a,bvgthfnjh,4506802a,killians,choco,qqqwwweee,raygun,1grand,koetsu13,sharp1,mimi92139,fastfood,idontcare,bluered,chochoz,4z3al0ts,target1,sheffiel,labrat,stalingrad,147123,cubfan,corvett1,holden1,snapper1,4071505,amadeo,pollo,desperados,lovestory,marcopolo,mumbles,familyguy,kimchee,marcio,support1,tekila,shygirl1,trekkie,submissi,ilaria,salam,loveu,wildstar,master69,sales1,netware,homer2,arseniy,gerrity1,raspberr,atreyu,stick1,aldric,tennis12,matahari,alohomora,dicanio,michae1,michaeld,666111,luvbug,boyscout,esmerald,mjordan,admiral1,steamboa,616913,ybhdfyf,557711,555999,sunray,apokalipsis,theroc,bmw330,buzzy,chicos,lenusik,shadowma,eagles05,444222,peartree,qqq123,sandmann,spring1,430799,phatass,andi03,binky1,arsch,bamba,kenny123,fabolous,loser123,poop12,maman,phobos,tecate,myxworld4,metros,cocorico,nokia6120,johnny69,hater,spanked,313233,markos,love2011,mozart1,viktoriy,reccos,331234,hornyone,vitesse,1um83z,55555q,proline,v12345,skaven,alizee,bimini,fenerbahce,543216,zaqqaz,poi123,stabilo,brownie1,1qwerty1,dinesh,baggins1,1234567t,davidkin,friend1,lietuva,octopuss,spooks,12345qq,myshit,buttface,paradoxx,pop123,golfin,sweet69,rfghbp,sambuca,kayak1,bogus1,girlz,dallas12,millers,123456zx,operatio,pravda,eternal1,chase123,moroni,proust,blueduck,harris1,redbarch,996699,1010101,mouche,millenni,1123456,score1,1234565,1234576,eae21157,dave12,pussyy,gfif1991,1598741,hoppy,darrian,snoogins,fartface,ichbins,vfkbyrf,rusrap,2741001,fyfrjylf,aprils,favre,thisis,bannana,serval,wiggum,satsuma,matt123,ivan123,gulmira,123zxc123,oscar2,acces,annie2,dragon0,emiliano,allthat,pajaro,amandine,rawiswar,sinead,tassie,karma1,piggys,nokias,orions,origami,type40,mondo,ferrets,monker,biteme2,gauntlet,arkham,ascona,ingram01,klem1,quicksil,bingo123,blue66,plazma,onfire,shortie,spjfet,123963,thered,fire777,lobito,vball,1chicken,moosehea,elefante,babe23,jesus12,parallax,elfstone,number5,shrooms,freya,hacker1,roxette,snoops,number7,fellini,dtlmvf,chigger,mission1,mitsubis,kannan,whitedog,james01,ghjgecr,rfnfgekmnf,everythi,getnaked,prettybo,sylvan,chiller,carrera4,cowbo,biochem,azbuka,qwertyuiop1,midnight1,informat,audio1,alfred1,0range,sucker1,scott2,russland,1eagle,torben,djkrjlfd,rocky6,maddy1,bonobo,portos,chrissi,xjznq5,dexte,vdlxuc,teardrop,pktmxr,iamtheone,danijela,eyphed,suzuki1,etvww4,redtail,ranger11,mowerman,asshole2,coolkid,adriana1,bootcamp,longcut,evets,npyxr5,bighurt,bassman1,stryder,giblet,nastja,blackadd,topflite,wizar,cumnow,technolo,bassboat,bullitt,kugm7b,maksimus,wankers,mine12,sunfish,pimpin1,shearer9,user1,vjzgjxnf,tycobb,80070633pc,stanly,vitaly,shirley1,cinzia,carolyn1,angeliqu,teamo,qdarcv,aa123321,ragdoll,bonit,ladyluck,wiggly,vitara,jetbalance,12345600,ozzman,dima12345,mybuddy,shilo,satan66,erebus,warrio,090808qwe,stupi,bigdan,paul1234,chiapet,brooks1,philly1,dually,gowest,farmer1,1qa2ws3ed4rf,alberto1,beachboy,barne,aa12345,aliyah,radman,benson1,dfkthbq,highball,bonou2,i81u812,workit,darter,redhook,csfbr5yy,buttlove,episode1,ewyuza,porthos,lalal,abcd12,papero,toosexy,keeper1,silver7,jujitsu,corset,pilot123,simonsay,pinggolf,katerinka,kender,drunk1,fylhjvtlf,rashmi,nighthawk,maggy,juggernaut,larryb,cabibble,fyabcf,247365,gangstar,jaybee,verycool,123456789qw,forbidde,prufrock,12345zxc,malaika,blackbur,docker,filipe,koshechka,gemma1,djamaal,dfcbkmtdf,gangst,9988aa,ducks1,pthrfkj,puertorico,muppets,griffins,whippet,sauber,timofey,larinso,123456789zxc,quicken,qsefth,liteon,headcase,bigdadd,zxc321,maniak,jamesc,bassmast,bigdogs,1girls,123xxx,trajan,lerochka,noggin,mtndew,04975756,domin,wer123,fumanchu,lambada,thankgod,june22,kayaking,patchy,summer10,timepass,poiu1234,kondor,kakka,lament,zidane10,686xqxfg,l8v53x,caveman1,nfvthkfy,holymoly,pepita,alex1996,mifune,fighter1,asslicker,jack22,abc123abc,zaxxon,midnigh,winni,psalm23,punky,monkey22,password13,mymusic,justyna,annushka,lucky5,briann,495rus19,withlove,almaz,supergir,miata,bingbong,bradpitt,kamasutr,yfgjktjy,vanman,pegleg,amsterdam1,123a321,letmein9,shivan,korona,bmw520,annette1,scotsman,gandal,welcome12,sc00by,qpwoei,fred69,m1sf1t,hamburg1,1access,dfkmrbhbz,excalibe,boobies1,fuckhole,karamel,starfuck,star99,breakfas,georgiy,ywvxpz,smasher,fatcat1,allanon,12345n,coondog,whacko,avalon1,scythe,saab93,timon,khorne,atlast,nemisis,brady12,blenheim,52678677,mick7278,9skw5g,fleetwoo,ruger1,kissass,pussy7,scruff,12345l,bigfun,vpmfsz,yxkck878,evgeny,55667788,lickher,foothill,alesis,poppies,77777778,californi,mannie,bartjek,qhxbij,thehulk,xirt2k,angelo4ek,rfkmrekznjh,tinhorse,1david,sparky12,night1,luojianhua,bobble,nederland,rosemari,travi,minou,ciscokid,beehive,565hlgqo,alpine1,samsung123,trainman,xpress,logistic,vw198m2n,hanter,zaqwsx123,qwasz,mariachi,paska,kmg365,kaulitz,sasha12,north1,polarbear,mighty1,makeksa11,123456781,one4all,gladston,notoriou,polniypizdec110211,gosia,grandad,xholes,timofei,invalidp,speaker1,zaharov,maggiema,loislane,gonoles,br5499,discgolf,kaskad,snooper,newman1,belial,demigod,vicky1,pridurok,alex1990,tardis1,cruzer,hornie,sacramen,babycat,burunduk,mark69,oakland1,me1234,gmctruck,extacy,sexdog,putang,poppen,billyd,1qaz2w,loveable,gimlet,azwebitalia,ragtop,198500,qweas,mirela,rock123,11bravo,sprewell,tigrenok,jaredleto,vfhbif,blue2,rimjob,catwalk,sigsauer,loqse,doromich,jack01,lasombra,jonny5,newpassword,profesor,garcia1,123as123,croucher,demeter,4_life,rfhfvtkm,superman2,rogues,assword1,russia1,jeff1,mydream,z123456789,rascal1,darre,kimberl,pickle1,ztmfcq,ponchik,lovesporn,hikari,gsgba368,pornoman,chbjun,choppy,diggity,nightwolf,viktori,camar,vfhecmrf,alisa1,minstrel,wishmaster,mulder1,aleks,gogirl,gracelan,8womys,highwind,solstice,dbrnjhjdyf,nightman,pimmel,beertje,ms6nud,wwfwcw,fx3tuo,poopface,asshat,dirtyd,jiminy,luv2fuck,ptybnxtvgbjy,dragnet,pornogra,10inch,scarlet1,guido1,raintree,v123456,1aaaaaaa,maxim1935,hotwater,gadzooks,playaz,harri,brando1,defcon1,ivanna,123654a,arsenal2,candela,nt5d27,jaime1,duke1,burton1,allstar1,dragos,newpoint,albacore,1236987z,verygoodbot,1wildcat,fishy1,ptktysq,chris11,puschel,itdxtyrj,7kbe9d,serpico,jazzie,1zzzzz,kindbuds,wenef45313,1compute,tatung,sardor,gfyfcjybr,test99,toucan,meteora,lysander,asscrack,jowgnx,hevnm4,suckthis,masha123,karinka,marit,oqglh565,dragon00,vvvbbb,cheburashka,vfrfrf,downlow,unforgiven,p3e85tr,kim123,sillyboy,gold1,golfvr6,quicksan,irochka,froglegs,shortsto,caleb1,tishka,bigtitts,smurfy,bosto,dropzone,nocode,jazzbass,digdug,green7,saltlake,therat,dmitriev,lunita,deaddog,summer0,1212qq,bobbyg,mty3rh,isaac1,gusher,helloman,sugarbear,corvair,extrem,teatime,tujazopi,titanik,efyreg,jo9k2jw2,counchac,tivoli,utjvtnhbz,bebit,jacob6,clayton1,incubus1,flash123,squirter,dima2010,cock1,rawks,komatsu,forty2,98741236,cajun1,madelein,mudhoney,magomed,q111111,qaswed,consense,12345b,bakayaro,silencer,zoinks,bigdic,werwolf,pinkpuss,96321478,alfie1,ali123,sarit,minette,musics,chato,iaapptfcor,cobaka,strumpf,datnigga,sonic123,yfnecbr,vjzctvmz,pasta1,tribbles,crasher,htlbcrf,1tiger,shock123,bearshar,syphon,a654321,cubbies1,jlhanes,eyespy,fucktheworld,carrie1,bmw325is,suzuk,mander,dorina,mithril,hondo1,vfhnbyb,sachem,newton1,12345x,7777755102q,230857z,xxxsex,scubapro,hayastan,spankit,delasoul,searock6,fallout3,nilrem,24681357,pashka,voluntee,pharoh,willo,india1,badboy69,roflmao,gunslinger,lovergir,mama12,melange,640xwfkv,chaton,darkknig,bigman1,aabbccdd,harleyd,birdhouse,giggsy,hiawatha,tiberium,joker7,hello1234,sloopy,tm371855,greendog,solar1,bignose,djohn11,espanol,oswego,iridium,kavitha,pavell,mirjam,cyjdsvujljv,alpha5,deluge,hamme,luntik,turismo,stasya,kjkbnf,caeser,schnecke,tweety1,tralfaz,lambrett,prodigy1,trstno1,pimpshit,werty1,karman,bigboob,pastel,blackmen,matthew8,moomin,q1w2e,gilly,primaver,jimmyg,house2,elviss,15975321,1jessica,monaliza,salt55,vfylfhbyrf,harley11,tickleme,murder1,nurgle,kickass1,theresa1,fordtruck,pargolf,managua,inkognito,sherry1,gotit,friedric,metro2033,slk230,freeport,cigarett,492529,vfhctkm,thebeach,twocats,bakugan,yzerman1,charlieb,motoko,skiman,1234567w,pussy3,love77,asenna,buffie,260zntpc,kinkos,access20,mallard1,fuckyou69,monami,rrrrr1,bigdog69,mikola,1boomer,godzila,ginger2,dima2000,skorpion39,dima1234,hawkdog79,warrior2,ltleirf,supra1,jerusale,monkey01,333z333,666888,kelsey1,w8gkz2x1,fdfnfh,msnxbi,qwe123rty,mach1,monkey3,123456789qq,c123456,nezabudka,barclays,nisse,dasha1,12345678987654321,dima1993,oldspice,frank2,rabbitt,prettyboy,ov3ajy,iamthema,kawasak,banjo1,gtivr6,collants,gondor,hibees,cowboys2,codfish,buster2,purzel,rubyred,kayaker,bikerboy,qguvyt,masher,sseexx,kenshiro,moonglow,semenova,rosari,eduard1,deltaforce,grouper,bongo1,tempgod,1taylor,goldsink,qazxsw1,1jesus,m69fg2w,maximili,marysia,husker1,kokanee,sideout,googl,south1,plumber1,trillian,00001,1357900,farkle,1xxxxx,pascha,emanuela,bagheera,hound1,mylov,newjersey,swampfox,sakic19,torey,geforce,wu4etd,conrail,pigman,martin2,ber02,nascar2,angel69,barty,kitsune,cornet,yes90125,goomba,daking,anthea,sivart,weather1,ndaswf,scoubidou,masterchief,rectum,3364068,oranges1,copter,1samanth,eddies,mimoza,ahfywbz,celtic88,86mets,applemac,amanda11,taliesin,1angel,imhere,london11,bandit12,killer666,beer1,06225930,psylocke,james69,schumach,24pnz6kc,endymion,wookie1,poiu123,birdland,smoochie,lastone,rclaki,olive1,pirat,thunder7,chris69,rocko,151617,djg4bb4b,lapper,ajcuivd289,colole57,shadow7,dallas21,ajtdmw,executiv,dickies,omegaman,jason12,newhaven,aaaaaas,pmdmscts,s456123789,beatri,applesauce,levelone,strapon,benladen,creaven,ttttt1,saab95,f123456,pitbul,54321a,sex12345,robert3,atilla,mevefalkcakk,1johnny,veedub,lilleke,nitsuj,5t6y7u8i,teddys,bluefox,nascar20,vwjetta,buffy123,playstation3,loverr,qweasd12,lover2,telekom,benjamin1,alemania,neutrino,rockz,valjean,testicle,trinity3,realty,firestarter,794613852,ardvark,guadalup,philmont,arnold1,holas,zw6syj,birthday299,dover1,sexxy1,gojets,741236985,cance,blue77,xzibit,qwerty88,komarova,qweszxc,footer,rainger,silverst,ghjcnb,catmando,tatooine,31217221027711,amalgam,69dude,qwerty321,roscoe1,74185,cubby,alfa147,perry1,darock,katmandu,darknight,knicks1,freestuff,45454,kidman,4tlved,axlrose,cutie1,quantum1,joseph10,ichigo,pentium3,rfhectkm,rowdy1,woodsink,justforfun,sveta123,pornografia,mrbean,bigpig,tujheirf,delta9,portsmou,hotbod,kartal,10111213,fkbyf001,pavel1,pistons1,necromancer,verga,c7lrwu,doober,thegame1,hatesyou,sexisfun,1melissa,tuczno18,bowhunte,gobama,scorch,campeon,bruce2,fudge1,herpderp,bacon1,redsky,blackeye,19966991,19992000,ripken8,masturba,34524815,primax,paulina1,vp6y38,427cobra,4dwvjj,dracon,fkg7h4f3v6,longview,arakis,panama1,honda2,lkjhgfdsaz,razors,steels,fqkw5m,dionysus,mariajos,soroka,enriqu,nissa,barolo,king1234,hshfd4n279,holland1,flyer1,tbones,343104ky,modems,tk421,ybrbnrf,pikapp,sureshot,wooddoor,florida2,mrbungle,vecmrf,catsdogs,axolotl,nowayout,francoi,chris21,toenail,hartland,asdjkl,nikkii,onlyyou,buckskin,fnord,flutie,holen1,rincewind,lefty1,ducky1,199000,fvthbrf,redskin1,ryno23,lostlove,19mtpgam19,abercrom,benhur,jordan11,roflcopter,ranma,phillesh,avondale,igromania,p4ssword,jenny123,tttttt1,spycams,cardigan,2112yyz,sleepy1,paris123,mopars,lakers34,hustler1,james99,matrix3,popimp,12pack,eggbert,medvedev,testit,performa,logitec,marija,sexybeast,supermanboy,iwantit,rjktcj,jeffer,svarog,halo123,whdbtp,nokia3230,heyjoe,marilyn1,speeder,ibxnsm,prostock,bennyboy,charmin,codydog,parol999,ford9402,jimmer,crayola,159357258,alex77,joey1,cayuga,phish420,poligon,specops,tarasova,caramelo,draconis,dimon,cyzkhw,june29,getbent,1guitar,jimjam,dictiona,shammy,flotsam,0okm9ijn,crapper,technic,fwsadn,rhfdxtyrj,zaq11qaz,anfield1,159753q,curious1,hip-hop,1iiiii,gfhjkm2,cocteau,liveevil,friskie,crackhead,b1afra,elektrik,lancer1,b0ll0cks,jasond,z1234567,tempest1,alakazam,asdfasd,duffy1,oneday,dinkle,qazedctgb,kasimir,happy7,salama,hondaciv,nadezda,andretti,cannondale,sparticu,znbvjd,blueice,money01,finster,eldar,moosie,pappa,delta123,neruda,bmw330ci,jeanpaul,malibu1,alevtina,sobeit,travolta,fullmetal,enamorad,mausi,boston12,greggy,smurf1,ratrace,ichiban,ilovepus,davidg,wolf69,villa1,cocopuff,football12,starfury,zxc12345,forfree,fairfiel,dreams1,tayson,mike2,dogday,hej123,oldtimer,sanpedro,clicker,mollycat,roadstar,golfe,lvbnhbq1,topdevice,a1b2c,sevastopol,calli,milosc,fire911,pink123,team3x,nolimit5,snickers1,annies,09877890,jewel1,steve69,justin11,autechre,killerbe,browncow,slava1,christer,fantomen,redcloud,elenberg,beautiful1,passw0rd1,nazira,advantag,cockring,chaka,rjpzdrf,99941,az123456,biohazar,energie,bubble1,bmw323,tellme,printer1,glavine,1starwar,coolbeans,april17,carly1,quagmire,admin2,djkujuhfl,pontoon,texmex,carlos12,thermo,vaz2106,nougat,bob666,1hockey,1john,cricke,qwerty10,twinz,totalwar,underwoo,tijger,lildevil,123q321,germania,freddd,1scott,beefy,5t4r3e2w1q,fishbait,nobby,hogger,dnstuff,jimmyc,redknapp,flame1,tinfloor,balla,nfnfhby,yukon1,vixens,batata,danny123,1zxcvbnm,gaetan,homewood,greats,tester1,green99,1fucker,sc0tland,starss,glori,arnhem,goatman,1234asd,supertra,bill123,elguapo,sexylegs,jackryan,usmc69,innow,roaddog,alukard,winter11,crawler,gogiants,rvd420,alessandr,homegrow,gobbler,esteba,valeriy,happy12,1joshua,hawking,sicnarf,waynes,iamhappy,bayadera,august2,sashas,gotti,dragonfire,pencil1,halogen,borisov,bassingw,15975346,zachar,sweetp,soccer99,sky123,flipyou,spots3,xakepy,cyclops1,dragon77,rattolo58,motorhea,piligrim,helloween,dmb2010,supermen,shad0w,eatcum,sandokan,pinga,ufkfrnbrf,roksana,amista,pusser,sony1234,azerty1,1qasw2,ghbdt,q1w2e3r4t5y6u7i8,ktutylf,brehznev,zaebali,shitass,creosote,gjrtvjy,14938685,naughtyboy,pedro123,21crack,maurice1,joesakic,nicolas1,matthew9,lbyfhf,elocin,hfcgbplzq,pepper123,tiktak,mycroft,ryan11,firefly1,arriva,cyecvevhbr,loreal,peedee,jessica8,lisa01,anamari,pionex,ipanema,airbag,frfltvbz,123456789aa,epwr49,casper12,sweethear,sanandreas,wuschel,cocodog,france1,119911,redroses,erevan,xtvgbjy,bigfella,geneve,volvo850,evermore,amy123,moxie,celebs,geeman,underwor,haslo1,joy123,hallow,chelsea0,12435687,abarth,12332145,tazman1,roshan,yummie,genius1,chrisd,ilovelife,seventy7,qaz1wsx2,rocket88,gaurav,bobbyboy,tauchen,roberts1,locksmit,masterof,www111,d9ungl,volvos40,asdasd1,golfers,jillian1,7xm5rq,arwpls4u,gbhcf2,elloco,football2,muerte,bob101,sabbath1,strider1,killer66,notyou,lawnboy,de7mdf,johnnyb,voodoo2,sashaa,homedepo,bravos,nihao123,braindea,weedhead,rajeev,artem1,camille1,rockss,bobbyb,aniston,frnhbcf,oakridge,biscayne,cxfcnm,dressage,jesus3,kellyann,king69,juillet,holliste,h00ters,ripoff,123645,1999ar,eric12,123777,tommi,dick12,bilder,chris99,rulezz,getpaid,chicubs,ender1,byajhvfnbrf,milkshak,sk8board,freakshow,antonella,monolit,shelb,hannah01,masters1,pitbull1,1matthew,luvpussy,agbdlcid,panther2,alphas,euskadi,8318131,ronnie1,7558795,sweetgirl,cookie59,sequoia,5552555,ktyxbr,4500455,money7,severus,shinobu,dbityrf,phisig,rogue2,fractal,redfred,sebastian1,nelli,b00mer,cyberman,zqjphsyf6ctifgu,oldsmobile,redeemer,pimpi,lovehurts,1slayer,black13,rtynfdh,airmax,g00gle,1panther,artemon,nopasswo,fuck1234,luke1,trinit,666000,ziadma,oscardog,davex,hazel1,isgood,demond,james5,construc,555551,january2,m1911a1,flameboy,merda,nathan12,nicklaus,dukester,hello99,scorpio7,leviathan,dfcbktr,pourquoi,vfrcbv123,shlomo,rfcgth,rocky3,ignatz,ajhneyf,roger123,squeek,4815162342a,biskit,mossimo,soccer21,gridlock,lunker,popstar,ghhh47hj764,chutney,nitehawk,vortec,gamma1,codeman,dragula,kappasig,rainbow2,milehigh,blueballs,ou8124me,rulesyou,collingw,mystere,aster,astrovan,firetruck,fische,crawfish,hornydog,morebeer,tigerpaw,radost,144000,1chance,1234567890qwe,gracie1,myopia,oxnard,seminoles,evgeni,edvard,partytim,domani,tuffy1,jaimatadi,blackmag,kzueirf,peternor,mathew1,maggie12,henrys,k1234567,fasted,pozitiv,cfdtkbq,jessica7,goleafs,bandito,girl78,sharingan,skyhigh,bigrob,zorros,poopers,oldschoo,pentium2,gripper,norcal,kimba,artiller,moneymak,00197400,272829,shadow1212,thebull,handbags,all4u2c,bigman2,civics,godisgoo,section8,bandaid,suzanne1,zorba,159123,racecars,i62gbq,rambo123,ironroad,johnson2,knobby,twinboys,sausage1,kelly69,enter2,rhjirf,yessss,james12,anguilla,boutit,iggypop,vovochka,06060,budwiser,romuald,meditate,good1,sandrin,herkules,lakers8,honeybea,11111111a,miche,rangers9,lobster1,seiko,belova,midcon,mackdadd,bigdaddy1,daddie,sepultur,freddy12,damon1,stormy1,hockey2,bailey12,hedimaptfcor,dcowboys,sadiedog,thuggin,horny123,josie1,nikki2,beaver69,peewee1,mateus,viktorija,barrys,cubswin1,matt1234,timoxa,rileydog,sicilia,luckycat,candybar,julian1,abc456,pussylip,phase1,acadia,catty,246800,evertonf,bojangle,qzwxec,nikolaj,fabrizi,kagome,noncapa0,marle,popol,hahaha1,cossie,carla10,diggers,spankey,sangeeta,cucciolo,breezer,starwar1,cornholio,rastafari,spring99,yyyyyyy1,webstar,72d5tn,sasha1234,inhouse,gobuffs,civic1,redstone,234523,minnie1,rivaldo,angel5,sti2000,xenocide,11qq11,1phoenix,herman1,holly123,tallguy,sharks1,madri,superbad,ronin,jalal123,hardbody,1234567r,assman1,vivahate,buddylee,38972091,bonds25,40028922,qrhmis,wp2005,ceejay,pepper01,51842543,redrum1,renton,varadero,tvxtjk7r,vetteman,djhvbrc,curly1,fruitcak,jessicas,maduro,popmart,acuari,dirkpitt,buick1,bergerac,golfcart,pdtpljxrf,hooch1,dudelove,d9ebk7,123452000,afdjhbn,greener,123455432,parachut,mookie12,123456780,jeepcj5,potatoe,sanya,qwerty2010,waqw3p,gotika,freaky1,chihuahu,buccanee,ecstacy,crazyboy,slickric,blue88,fktdnbyf,2004rj,delta4,333222111,calient,ptbdhw,1bailey,blitz1,sheila1,master23,hoagie,pyf8ah,orbita,daveyboy,prono1,delta2,heman,1horny,tyrik123,ostrov,md2020,herve,rockfish,el546218,rfhbyjxrf,chessmaster,redmoon,lenny1,215487,tomat,guppy,amekpass,amoeba,my3girls,nottingh,kavita,natalia1,puccini,fabiana,8letters,romeos,netgear,casper2,taters,gowings,iforgot1,pokesmot,pollit,lawrun,petey1,rosebuds,007jr,gthtcnhjqrf,k9dls02a,neener,azertyu,duke11,manyak,tiger01,petros,supermar,mangas,twisty,spotter,takagi,dlanod,qcmfd454,tusymo,zz123456,chach,navyblue,gilbert1,2kash6zq,avemaria,1hxboqg2s,viviane,lhbjkjubz2957704,nowwowtg,1a2b3c4,m0rn3,kqigb7,superpuper,juehtw,gethigh,theclown,makeme,pradeep,sergik,deion21,nurik,devo2706,nbvibt,roman222,kalima,nevaeh,martin7,anathema,florian1,tamwsn3sja,dinmamma,133159,123654q,slicks,pnp0c08,yojimbo,skipp,kiran,pussyfuck,teengirl,apples12,myballs,angeli,1234a,125678,opelastra,blind1,armagedd,fish123,pitufo,chelseaf,thedevil,nugget1,cunt69,beetle1,carter15,apolon,collant,password00,fishboy,djkrjdf,deftone,celti,three11,cyrus1,lefthand,skoal1,ferndale,aries1,fred01,roberta1,chucks,cornbread,lloyd1,icecrea,cisco123,newjerse,vfhrbpf,passio,volcom1,rikimaru,yeah11,djembe,facile,a1l2e3x4,batman7,nurbol,lorenzo1,monica69,blowjob1,998899,spank1,233391,n123456,1bear,bellsout,999998,celtic67,sabre1,putas,y9enkj,alfabeta,heatwave,honey123,hard4u,insane1,xthysq,magnum1,lightsaber,123qweqwe,fisher1,pixie1,precios,benfic,thegirls,bootsman,4321rewq,nabokov,hightime,djghjc,1chelsea,junglist,august16,t3fkvkmj,1232123,lsdlsd12,chuckie1,pescado,granit,toogood,cathouse,natedawg,bmw530,123kid,hajime,198400,engine1,wessonnn,kingdom1,novembre,1rocks,kingfisher,qwerty89,jordan22,zasranec,megat,sucess,installutil,fetish01,yanshi1982,1313666,1314520,clemence,wargod,time1,newzealand,snaker,13324124,cfrehf,hepcat,mazahaka,bigjay,denisov,eastwest,1yellow,mistydog,cheetos,1596357,ginger11,mavrik,bubby1,bhbyf,pyramide,giusepp,luthien,honda250,andrewjackie,kentavr,lampoon,zaq123wsx,sonicx,davidh,1ccccc,gorodok,windsong,programm,blunt420,vlad1995,zxcvfdsa,tarasov,mrskin,sachas,mercedes1,koteczek,rawdog,honeybear,stuart1,kaktys,richard7,55555n,azalia,hockey10,scouter,francy,1xxxxxx,julie456,tequilla,penis123,schmoe,tigerwoods,1ferrari,popov,snowdrop,matthieu,smolensk,cornflak,jordan01,love2000,23wesdxc,kswiss,anna2000,geniusnet,baby2000,33ds5x,waverly,onlyone4,networkingpe,raven123,blesse,gocards,wow123,pjflkork,juicey,poorboy,freeee,billybo,shaheen,zxcvbnm.,berlit,truth1,gepard,ludovic,gunther1,bobby2,bob12345,sunmoon,septembr,bigmac1,bcnjhbz,seaking,all4u,12qw34er56ty,bassie,nokia5228,7355608,sylwia,charvel,billgate,davion,chablis,catsmeow,kjiflrf,amylynn,rfvbkkf,mizredhe,handjob,jasper12,erbol,solara,bagpipe,biffer,notime,erlan,8543852,sugaree,oshkosh,fedora,bangbus,5lyedn,longball,teresa1,bootyman,aleksand,qazwsxedc12,nujbhc,tifosi,zpxvwy,lights1,slowpoke,tiger12,kstate,password10,alex69,collins1,9632147,doglover,baseball2,security1,grunts,orange2,godloves,213qwe879,julieb,1qazxsw23edcvfr4,noidea,8uiazp,betsy1,junior2,parol123,123456zz,piehonkii,kanker,bunky,hingis,reese1,qaz123456,sidewinder,tonedup,footsie,blackpoo,jalapeno,mummy1,always1,josh1,rockyboy,plucky,chicag,nadroj,blarney,blood123,wheaties,packer1,ravens1,mrjones,gfhjkm007,anna2010,awatar,guitar12,hashish,scale1,tomwaits,amrita,fantasma,rfpfym,pass2,tigris,bigair,slicker,sylvi,shilpa,cindylou,archie1,bitches1,poppys,ontime,horney1,camaroz28,alladin,bujhm,cq2kph,alina1,wvj5np,1211123a,tetons,scorelan,concordi,morgan2,awacs,shanty,tomcat14,andrew123,bear69,vitae,fred99,chingy,octane,belgario,fatdaddy,rhodan,password23,sexxes,boomtown,joshua01,war3demo,my2kids,buck1,hot4you,monamour,12345aa,yumiko,parool,carlton1,neverland,rose12,right1,sociald,grouse,brandon0,cat222,alex00,civicex,bintang,malkav,arschloc,dodgeviper,qwerty666,goduke,dante123,boss1,ontheroc,corpsman,love14,uiegu451,hardtail,irondoor,ghjrehfnehf,36460341,konijn,h2slca,kondom25,123456ss,cfytxrf,btnjey,nando,freemail,comander,natas666,siouxsie,hummer1,biomed,dimsum,yankees0,diablo666,lesbian1,pot420,jasonm,glock23,jennyb,itsmine,lena2010,whattheh,beandip,abaddon,kishore,signup,apogee,biteme12,suzieq,vgfun4,iseeyou,rifleman,qwerta,4pussy,hawkman,guest1,june17,dicksuck,bootay,cash12,bassale,ktybyuhfl,leetch,nescafe,7ovtgimc,clapton1,auror,boonie,tracker1,john69,bellas,cabinboy,yonkers,silky1,ladyffesta,drache,kamil1,davidp,bad123,snoopy12,sanche,werthvfy,achille,nefertiti,gerald1,slage33,warszawa,macsan26,mason123,kotopes,welcome8,nascar99,kiril,77778888,hairy1,monito,comicsans,81726354,killabee,arclight,yuo67,feelme,86753099,nnssnn,monday12,88351132,88889999,websters,subito,asdf12345,vaz2108,zvbxrpl,159753456852,rezeda,multimed,noaccess,henrique,tascam,captiva,zadrot,hateyou,sophie12,123123456,snoop1,charlie8,birmingh,hardline,libert,azsxdcf,89172735872,rjpthju,bondar,philips1,olegnaruto,myword,yakman,stardog,banana12,1234567890w,farout,annick,duke01,rfj422,billard,glock19,shaolin1,master10,cinderel,deltaone,manning1,biggreen,sidney1,patty1,goforit1,766rglqy,sevendus,aristotl,armagedo,blumen,gfhfyjz,kazakov,lekbyxxx,accord1,idiota,soccer16,texas123,victoire,ololo,chris01,bobbbb,299792458,eeeeeee1,confiden,07070,clarks,techno1,kayley,stang1,wwwwww1,uuuuu1,neverdie,jasonr,cavscout,481516234,mylove1,shaitan,1qazxcvb,barbaros,123456782000,123wer,thissucks,7seven,227722,faerie,hayduke,dbacks,snorkel,zmxncbv,tiger99,unknown1,melmac,polo1234,sssssss1,1fire,369147,bandung,bluejean,nivram,stanle,ctcnhf,soccer20,blingbli,dirtball,alex2112,183461,skylin,boobman,geronto,brittany1,yyz2112,gizmo69,ktrcec,dakota12,chiken,sexy11,vg08k714,bernadet,1bulldog,beachs,hollyb,maryjoy,margo1,danielle1,chakra,alexand,hullcity,matrix12,sarenna,pablos,antler,supercar,chomsky,german1,airjordan,545ettvy,camaron,flight1,netvideo,tootall,valheru,481516,1234as,skimmer,redcross,inuyash,uthvfy,1012nw,edoardo,bjhgfi,golf11,9379992a,lagarto,socball,boopie,krazy,.adgjmptw,gaydar,kovalev,geddylee,firstone,turbodog,loveee,135711,badbo,trapdoor,opopop11,danny2,max2000,526452,kerry1,leapfrog,daisy2,134kzbip,1andrea,playa1,peekab00,heskey,pirrello,gsewfmck,dimon4ik,puppie,chelios,554433,hypnodanny,fantik,yhwnqc,ghbdtngjrf,anchorag,buffett1,fanta,sappho,024680,vialli,chiva,lucylu,hashem,exbntkm,thema,23jordan,jake11,wildside,smartie,emerica,2wj2k9oj,ventrue,timoth,lamers,baerchen,suspende,boobis,denman85,1adam12,otello,king12,dzakuni,qsawbbs,isgay,porno123,jam123,daytona1,tazzie,bunny123,amaterasu,jeffre,crocus,mastercard,bitchedup,chicago7,aynrand,intel1,tamila,alianza,mulch,merlin12,rose123,alcapone,mircea,loveher,joseph12,chelsea6,dorothy1,wolfgar,unlimite,arturik,qwerty3,paddy1,piramid,linda123,cooool,millie1,warlock1,forgotit,tort02,ilikeyou,avensis,loveislife,dumbass1,clint1,2110se,drlove,olesia,kalinina,sergey123,123423,alicia1,markova,tri5a3,media1,willia1,xxxxxxx1,beercan,smk7366,jesusislord,motherfuck,smacker,birthday5,jbaby,harley2,hyper1,a9387670a,honey2,corvet,gjmptw,rjhjkmbien,apollon,madhuri,3a5irt,cessna17,saluki,digweed,tamia1,yja3vo,cfvlehfr,1111111q,martyna,stimpy1,anjana,yankeemp,jupiler,idkfa,1blue,fromv,afric,3xbobobo,liverp00l,nikon1,amadeus1,acer123,napoleo,david7,vbhjckfdf,mojo69,percy1,pirates1,grunt1,alenushka,finbar,zsxdcf,mandy123,1fred,timewarp,747bbb,druids,julia123,123321qq,spacebar,dreads,fcbarcelona,angela12,anima,christopher1,stargazer,123123s,hockey11,brewski,marlbor,blinker,motorhead,damngood,werthrf,letmein3,moremoney,killer99,anneke,eatit,pilatus,andrew01,fiona1,maitai,blucher,zxgdqn,e5pftu,nagual,panic1,andron,openwide,alphabeta,alison1,chelsea8,fende,mmm666,1shot2,a19l1980,123456@,1black,m1chael,vagner,realgood,maxxx,vekmnbr,stifler,2509mmh,tarkan,sherzod,1234567b,gunners1,artem2010,shooby,sammie1,p123456,piggie,abcde12345,nokia6230,moldir,piter,1qaz3edc,frequenc,acuransx,1star,nikeair,alex21,dapimp,ranjan,ilovegirls,anastasiy,berbatov,manso,21436587,leafs1,106666,angelochek,ingodwetrust,123456aaa,deano,korsar,pipetka,thunder9,minka,himura,installdevic,1qqqqq,digitalprodu,suckmeoff,plonker,headers,vlasov,ktr1996,windsor1,mishanya,garfield1,korvin,littlebit,azaz09,vandamme,scripto,s4114d,passward,britt1,r1chard,ferrari5,running1,7xswzaq,falcon2,pepper76,trademan,ea53g5,graham1,volvos80,reanimator,micasa,1234554321q,kairat,escorpion,sanek94,karolina1,kolovrat,karen2,1qaz@wsx,racing1,splooge,sarah2,deadman1,creed1,nooner,minicoop,oceane,room112,charme,12345ab,summer00,wetcunt,drewman,nastyman,redfire,appels,merlin69,dolfin,bornfree,diskette,ohwell,12345678qwe,jasont,madcap,cobra2,dolemit1,whatthehell,juanit,voldemar,rocke,bianc,elendil,vtufgjkbc,hotwheels,spanis,sukram,pokerface,k1ller,freakout,dontae,realmadri,drumss,gorams,258789,snakey,jasonn,whitewolf,befree,johnny99,pooka,theghost,kennys,vfvektxrf,toby1,jumpman23,deadlock,barbwire,stellina,alexa1,dalamar,mustanggt,northwes,tesoro,chameleo,sigtau,satoshi,george11,hotcum,cornell1,golfer12,geek01d,trololo,kellym,megapolis,pepsi2,hea666,monkfish,blue52,sarajane,bowler1,skeets,ddgirls,hfccbz,bailey01,isabella1,dreday,moose123,baobab,crushme,000009,veryhot,roadie,meanone,mike18,henriett,dohcvtec,moulin,gulnur,adastra,angel9,western1,natura,sweetpe,dtnfkm,marsbar,daisys,frogger1,virus1,redwood1,streetball,fridolin,d78unhxq,midas,michelob,cantik,sk2000,kikker,macanudo,rambone,fizzle,20000,peanuts1,cowpie,stone32,astaroth,dakota01,redso,mustard1,sexylove,giantess,teaparty,bobbin,beerbong,monet1,charles3,anniedog,anna1988,cameleon,longbeach,tamere,qpful542,mesquite,waldemar,12345zx,iamhere,lowboy,canard,granp,daisymay,love33,moosejaw,nivek,ninjaman,shrike01,aaa777,88002000600,vodolei,bambush,falcor,harley69,alphaomega,severine,grappler,bosox,twogirls,gatorman,vettes,buttmunch,chyna,excelsio,crayfish,birillo,megumi,lsia9dnb9y,littlebo,stevek,hiroyuki,firehous,master5,briley2,gangste,chrisk,camaleon,bulle,troyboy,froinlaven,mybutt,sandhya,rapala,jagged,crazycat,lucky12,jetman,wavmanuk,1heather,beegee,negril,mario123,funtime1,conehead,abigai,mhorgan,patagoni,travel1,backspace,frenchfr,mudcat,dashenka,baseball3,rustys,741852kk,dickme,baller23,griffey1,suckmycock,fuhrfzgc,jenny2,spuds,berlin1,justfun,icewind,bumerang,pavlusha,minecraft123,shasta1,ranger12,123400,twisters,buthead,miked,finance1,dignity7,hello9,lvjdp383,jgthfnjh,dalmatio,paparoach,miller31,2bornot2b,fathe,monterre,theblues,satans,schaap,jasmine2,sibelius,manon,heslo,jcnhjd,shane123,natasha2,pierrot,bluecar,iloveass,harriso,red12,london20,job314,beholder,reddawg,fuckyou!,pussylick,bologna1,austintx,ole4ka,blotto,onering,jearly,balbes,lightbul,bighorn,crossfir,lee123,prapor,1ashley,gfhjkm22,wwe123,09090,sexsite,marina123,jagua,witch1,schmoo,parkview,dragon3,chilango,ultimo,abramova,nautique,2bornot2,duende,1arthur,nightwing,surfboar,quant4307,15s9pu03,karina1,shitball,walleye1,wildman1,whytesha,1morgan,my2girls,polic,baranova,berezuckiy,kkkkkk1,forzima,fornow,qwerty02,gokart,suckit69,davidlee,whatnow,edgard,tits1,bayshore,36987412,ghbphfr,daddyy,explore1,zoidberg,5qnzjx,morgane,danilov,blacksex,mickey12,balsam,83y6pv,sarahc,slaye,all4u2,slayer69,nadia1,rlzwp503,4cranker,kaylie,numberon,teremok,wolf12,deeppurple,goodbeer,aaa555,66669999,whatif,harmony1,ue8fpw,3tmnej,254xtpss,dusty197,wcksdypk,zerkalo,dfnheirf,motorol,digita,whoareyou,darksoul,manics,rounders,killer11,d2000lb,cegthgfhjkm,catdog1,beograd,pepsico,julius1,123654987,softbal,killer23,weasel1,lifeson,q123456q,444555666,bunches,andy1,darby1,service01,bear11,jordan123,amega,duncan21,yensid,lerxst,rassvet,bronco2,fortis,pornlove,paiste,198900,asdflkjh,1236547890,futur,eugene1,winnipeg261,fk8bhydb,seanjohn,brimston,matthe1,bitchedu,crisco,302731,roxydog,woodlawn,volgograd,ace1210,boy4u2ownnyc,laura123,pronger,parker12,z123456z,andrew13,longlife,sarang,drogba,gobruins,soccer4,holida,espace,almira,murmansk,green22,safina,wm00022,1chevy,schlumpf,doroth,ulises,golf99,hellyes,detlef,mydog,erkina,bastardo,mashenka,sucram,wehttam,generic1,195000,spaceboy,lopas123,scammer,skynyrd,daddy2,titani,ficker,cr250r,kbnthfnehf,takedown,sticky1,davidruiz,desant,nremtp,painter1,bogies,agamemno,kansas1,smallfry,archi,2b4dnvsx,1player,saddie,peapod,6458zn7a,qvw6n2,gfxqx686,twice2,sh4d0w3d,mayfly,375125,phitau,yqmbevgk,89211375759,kumar1,pfhfpf,toyboy,way2go,7pvn4t,pass69,chipster,spoony,buddycat,diamond3,rincewin,hobie,david01,billbo,hxp4life,matild,pokemon2,dimochka,clown1,148888,jenmt3,cuxldv,cqnwhy,cde34rfv,simone1,verynice,toobig,pasha123,mike00,maria2,lolpop,firewire,dragon9,martesana,a1234567890,birthday3,providen,kiska,pitbulls,556655,misawa,damned69,martin11,goldorak,gunship,glory1,winxclub,sixgun,splodge,agent1,splitter,dome69,ifghjb,eliza1,snaiper,wutang36,phoenix7,666425,arshavin,paulaner,namron,m69fg1w,qwert1234,terrys,zesyrmvu,joeman,scoots,dwml9f,625vrobg,sally123,gostoso,symow8,pelota,c43qpul5rz,majinbuu,lithium1,bigstuff,horndog1,kipelov,kringle,1beavis,loshara,octobe,jmzacf,12342000,qw12qw,runescape1,chargers1,krokus,piknik,jessy,778811,gjvbljh,474jdvff,pleaser,misskitty,breaker1,7f4df451,dayan,twinky,yakumo,chippers,matia,tanith,len2ski1,manni,nichol1,f00b4r,nokia3110,standart,123456789i,shami,steffie,larrywn,chucker,john99,chamois,jjjkkk,penmouse,ktnj2010,gooners,hemmelig,rodney1,merlin01,bearcat1,1yyyyy,159753z,1fffff,1ddddd,thomas11,gjkbyrf,ivanka,f1f2f3,petrovna,phunky,conair,brian2,creative1,klipsch,vbitymrf,freek,breitlin,cecili,westwing,gohabsgo,tippmann,1steve,quattro6,fatbob,sp00ky,rastas,1123581,redsea,rfnmrf,jerky1,1aaaaaa,spk666,simba123,qwert54321,123abcd,beavis69,fyfyfc,starr1,1236547,peanutbutter,sintra,12345abcde,1357246,abcde1,climbon,755dfx,mermaids,monte1,serkan,geilesau,777win,jasonc,parkside,imagine1,rockhead,producti,playhard,principa,spammer,gagher,escada,tsv1860,dbyjuhfl,cruiser1,kennyg,montgome,2481632,pompano,cum123,angel6,sooty,bear01,april6,bodyhamm,pugsly,getrich,mikes,pelusa,fosgate,jasonp,rostislav,kimberly1,128mo,dallas11,gooner1,manuel1,cocacola1,imesh,5782790,password8,daboys,1jones,intheend,e3w2q1,whisper1,madone,pjcgujrat,1p2o3i,jamesp,felicida,nemrac,phikap,firecat,jrcfyjxrf,matt12,bigfan,doedel,005500,jasonx,1234567k,badfish,goosey,utjuhfabz,wilco,artem123,igor123,spike123,jor23dan,dga9la,v2jmsz,morgan12,avery1,dogstyle,natasa,221195ws,twopac,oktober7,karthik,poop1,mightymo,davidr,zermatt,jehova,aezakmi1,dimwit,monkey5,serega123,qwerty111,blabl,casey22,boy123,1clutch,asdfjkl1,hariom,bruce10,jeep95,1smith,sm9934,karishma,bazzzz,aristo,669e53e1,nesterov,kill666,fihdfv,1abc2,anna1,silver11,mojoman,telefono,goeagles,sd3lpgdr,rfhfynby,melinda1,llcoolj,idteul,bigchief,rocky13,timberwo,ballers,gatekeep,kashif,hardass,anastasija,max777,vfuyjkbz,riesling,agent99,kappas,dalglish,tincan,orange3,turtoise,abkbvjy,mike24,hugedick,alabala,geolog,aziza,devilboy,habanero,waheguru,funboy,freedom5,natwest,seashore,impaler,qwaszx1,pastas,bmw535,tecktonik,mika00,jobsearc,pinche,puntang,aw96b6,1corvett,skorpio,foundati,zzr1100,gembird,vfnhjcrby,soccer18,vaz2110,peterp,archer1,cross1,samedi,dima1992,hunter99,lipper,hotbody,zhjckfdf,ducati1,trailer1,04325956,cheryl1,benetton,kononenko,sloneczko,rfgtkmrf,nashua,balalaika,ampere,eliston,dorsai,digge,flyrod,oxymoron,minolta,ironmike,majortom,karimov,fortun,putaria,an83546921an13,blade123,franchis,mxaigtg5,dynxyu,devlt4,brasi,terces,wqmfuh,nqdgxz,dale88,minchia,seeyou,housepen,1apple,1buddy,mariusz,bighouse,tango2,flimflam,nicola1,qwertyasd,tomek1,shumaher,kartoshka,bassss,canaries,redman1,123456789as,preciosa,allblacks,navidad,tommaso,beaudog,forrest1,green23,ryjgjxrf,go4it,ironman2,badnews,butterba,1grizzly,isaeva,rembrand,toront,1richard,bigjon,yfltymrf,1kitty,4ng62t,littlejo,wolfdog,ctvtyjd,spain1,megryan,tatertot,raven69,4809594q,tapout,stuntman,a131313,lagers,hotstuf,lfdbl11,stanley2,advokat,boloto,7894561,dooker,adxel187,cleodog,4play,0p9o8i,masterb,bimota,charlee,toystory,6820055,6666667,crevette,6031769,corsa,bingoo,dima1990,tennis11,samuri,avocado,melissa6,unicor,habari,metart,needsex,cockman,hernan,3891576,3334444,amigo1,gobuffs2,mike21,allianz,2835493,179355,midgard,joey123,oneluv,ellis1,towncar,shonuff,scouse,tool69,thomas19,chorizo,jblaze,lisa1,dima1999,sophia1,anna1989,vfvekbxrf,krasavica,redlegs,jason25,tbontb,katrine,eumesmo,vfhufhbnrf,1654321,asdfghj1,motdepas,booga,doogle,1453145,byron1,158272,kardinal,tanne,fallen1,abcd12345,ufyljy,n12345,kucing,burberry,bodger,1234578,februar,1234512,nekkid,prober,harrison1,idlewild,rfnz90,foiegras,pussy21,bigstud,denzel,tiffany2,bigwill,1234567890zzz,hello69,compute1,viper9,hellspaw,trythis,gococks,dogballs,delfi,lupine,millenia,newdelhi,charlest,basspro,1mike,joeblack,975310,1rosebud,batman11,misterio,fucknut,charlie0,august11,juancho,ilonka,jigei743ks,adam1234,889900,goonie,alicat,ggggggg1,1zzzzzzz,sexywife,northstar,chris23,888111,containe,trojan1,jason5,graikos,1ggggg,1eeeee,tigers01,indigo1,hotmale,jacob123,mishima,richard3,cjxb2014,coco123,meagain,thaman,wallst,edgewood,bundas,1power,matilda1,maradon,hookedup,jemima,r3vi3wpass,2004-10-,mudman,taz123,xswzaq,emerson1,anna21,warlord1,toering,pelle,tgwdvu,masterb8,wallstre,moppel,priora,ghjcnjrdfif,yoland,12332100,1j9e7f6f,jazzzz,yesman,brianm,42qwerty42,12345698,darkmanx,nirmal,john31,bb123456,neuspeed,billgates,moguls,fj1200,hbhlair,shaun1,ghbdfn,305pwzlr,nbu3cd,susanb,pimpdad,mangust6403,joedog,dawidek,gigante,708090,703751,700007,ikalcr,tbivbn,697769,marvi,iyaayas,karen123,jimmyboy,dozer1,e6z8jh,bigtime1,getdown,kevin12,brookly,zjduc3,nolan1,cobber,yr8wdxcq,liebe,m1garand,blah123,616879,action1,600000,sumitomo,albcaz,asian1,557799,dave69,556699,sasa123,streaker,michel1,karate1,buddy7,daulet,koks888,roadtrip,wapiti,oldguy,illini1,1234qq,mrspock,kwiatek,buterfly,august31,jibxhq,jackin,taxicab,tristram,talisker,446655,444666,chrisa,freespace,vfhbfyyf,chevell,444333,notyours,442244,christian1,seemore,sniper12,marlin1,joker666,multik,devilish,crf450,cdfoli,eastern1,asshead,duhast,voyager2,cyberia,1wizard,cybernet,iloveme1,veterok,karandash,392781,looksee,diddy,diabolic,foofight,missey,herbert1,bmw318i,premier1,zsfmpv,eric1234,dun6sm,fuck11,345543,spudman,lurker,bitem,lizzy1,ironsink,minami,339311,s7fhs127,sterne,332233,plankton,galax,azuywe,changepa,august25,mouse123,sikici,killer69,xswqaz,quovadis,gnomik,033028pw,777777a,barrakuda,spawn666,goodgod,slurp,morbius,yelnats,cujo31,norman1,fastone,earwig,aureli,wordlife,bnfkbz,yasmi,austin123,timberla,missy2,legalize,netcom,liljon,takeit,georgin,987654321z,warbird,vitalina,all4u3,mmmmmm1,bichon,ellobo,wahoos,fcazmj,aksarben,lodoss,satnam,vasili,197800,maarten,sam138989,0u812,ankita,walte,prince12,anvils,bestia,hoschi,198300,univer,jack10,ktyecbr,gr00vy,hokie,wolfman1,fuckwit,geyser,emmanue,ybrjkftd,qwerty33,karat,dblock,avocat,bobbym,womersle,1please,nostra,dayana,billyray,alternat,iloveu1,qwerty69,rammstein1,mystikal,winne,drawde,executor,craxxxs,ghjcnjnf,999888777,welshman,access123,963214785,951753852,babe69,fvcnthlfv,****me,666999666,testing2,199200,nintendo64,oscarr,guido8,zhanna,gumshoe,jbird,159357456,pasca,123452345,satan6,mithrand,fhbirf,aa1111aa,viggen,ficktjuv,radial9,davids1,rainbow7,futuro,hipho,platin,poppy123,rhenjq,fulle,rosit,chicano,scrumpy,lumpy1,seifer,uvmrysez,autumn1,xenon,susie1,7u8i9o0p,gamer1,sirene,muffy1,monkeys1,kalinin,olcrackmaster,hotmove,uconn,gshock,merson,lthtdyz,pizzaboy,peggy1,pistache,pinto1,fishka,ladydi,pandor,baileys,hungwell,redboy,rookie1,amanda01,passwrd,clean1,matty1,tarkus,jabba1,bobster,beer30,solomon1,moneymon,sesamo,fred11,sunnysid,jasmine5,thebears,putamadre,workhard,flashbac,counter1,liefde,magnat,corky1,green6,abramov,lordik,univers,shortys,david3,vip123,gnarly,1234567s,billy2,honkey,deathstar,grimmy,govinda,direktor,12345678s,linus1,shoppin,rekbrjdf,santeria,prett,berty75,mohican,daftpunk,uekmyfhf,chupa,strats,ironbird,giants56,salisbur,koldun,summer04,pondscum,jimmyj,miata1,george3,redshoes,weezie,bartman1,0p9o8i7u,s1lver,dorkus,125478,omega9,sexisgood,mancow,patric1,jetta1,074401,ghjuhtcc,gfhjk,bibble,terry2,123213,medicin,rebel2,hen3ry,4freedom,aldrin,lovesyou,browny,renwod,winnie1,belladon,1house,tyghbn,blessme,rfhfrfnbwf,haylee,deepdive,booya,phantasy,gansta,cock69,4mnveh,gazza1,redapple,structur,anakin1,manolito,steve01,poolman,chloe123,vlad1998,qazwsxe,pushit,random123,ontherocks,o236nq,brain1,dimedrol,agape,rovnogod,1balls,knigh,alliso,love01,wolf01,flintstone,beernuts,tuffguy,isengard,highfive,alex23,casper99,rubina,getreal,chinita,italian1,airsoft,qwerty23,muffdiver,willi1,grace123,orioles1,redbull1,chino1,ziggy123,breadman,estefan,ljcneg,gotoit,logan123,wideglid,mancity1,treess,qwe123456,kazumi,qweasdqwe,oddworld,naveed,protos,towson,a801016,godislov,at_asp,bambam1,soccer5,dark123,67vette,carlos123,hoser1,scouser,wesdxc,pelus,dragon25,pflhjn,abdula,1freedom,policema,tarkin,eduardo1,mackdad,gfhjkm11,lfplhfgthvf,adilet,zzzzxxxx,childre,samarkand,cegthgegth,shama,fresher,silvestr,greaser,allout,plmokn,sexdrive,nintendo1,fantasy7,oleander,fe126fd,crumpet,pingzing,dionis,hipster,yfcnz,requin,calliope,jerome1,housecat,abc123456789,doghot,snake123,augus,brillig,chronic1,gfhjkbot,expediti,noisette,master7,caliban,whitetai,favorite3,lisamari,educatio,ghjhjr,saber1,zcegth,1958proman,vtkrbq,milkdud,imajica,thehip,bailey10,hockey19,dkflbdjcnjr,j123456,bernar,aeiouy,gamlet,deltachi,endzone,conni,bcgfybz,brandi1,auckland2010,7653ajl1,mardigra,testuser,bunko18,camaro67,36936,greenie,454dfmcq,6xe8j2z4,mrgreen,ranger5,headhunt,banshee1,moonunit,zyltrc,hello3,pussyboy,stoopid,tigger11,yellow12,drums1,blue02,kils123,junkman,banyan,jimmyjam,tbbucs,sportster,badass1,joshie,braves10,lajolla,1amanda,antani,78787,antero,19216801,chich,rhett32,sarahm,beloit,sucker69,corkey,nicosnn,rccola,caracol,daffyduc,bunny2,mantas,monkies,hedonist,cacapipi,ashton1,sid123,19899891,patche,greekgod,cbr1000,leader1,19977991,ettore,chongo,113311,picass,cfif123,rhtfnbd,frances1,andy12,minnette,bigboy12,green69,alices,babcia,partyboy,javabean,freehand,qawsed123,xxx111,harold1,passwo,jonny1,kappa1,w2dlww3v5p,1merlin,222999,tomjones,jakeman,franken,markhegarty,john01,carole1,daveman,caseys,apeman,mookey,moon123,claret,titans1,residentevil,campari,curitiba,dovetail,aerostar,jackdaniels,basenji,zaq12w,glencoe,biglove,goober12,ncc170,far7766,monkey21,eclipse9,1234567v,vanechka,aristote,grumble,belgorod,abhishek,neworleans,pazzword,dummie,sashadog,diablo11,mst3000,koala1,maureen1,jake99,isaiah1,funkster,gillian1,ekaterina20,chibears,astra123,4me2no,winte,skippe,necro,windows9,vinograd,demolay,vika2010,quiksilver,19371ayj,dollar1,shecky,qzwxecrv,butterfly1,merrill1,scoreland,1crazy,megastar,mandragora,track1,dedhed,jacob2,newhope,qawsedrftgyh,shack1,samvel,gatita,shyster,clara1,telstar,office1,crickett,truls,nirmala,joselito,chrisl,lesnik,aaaabbbb,austin01,leto2010,bubbie,aaa12345,widder,234432,salinger,mrsmith,qazsedcft,newshoes,skunks,yt1300,bmw316,arbeit,smoove,123321qweewq,123qazwsx,22221111,seesaw,0987654321a,peach1,1029384756q,sereda,gerrard8,shit123,batcave,energy1,peterb,mytruck,peter12,alesya,tomato1,spirou,laputaxx,magoo1,omgkremidia,knight12,norton1,vladislava,shaddy,austin11,jlbyjxrf,kbdthgekm,punheta,fetish69,exploiter,roger2,manstein,gtnhjd,32615948worms,dogbreath,ujkjdjkjvrf,vodka1,ripcord,fatrat,kotek1,tiziana,larrybir,thunder3,nbvfnb,9kyq6fge,remembe,likemike,gavin1,shinigam,yfcnfcmz,13245678,jabbar,vampyr,ane4ka,lollipo,ashwin,scuderia,limpdick,deagle,3247562,vishenka,fdhjhf,alex02,volvov70,mandys,bioshock,caraca,tombraider,matrix69,jeff123,13579135,parazit,black3,noway1,diablos,hitmen,garden1,aminor,decembe,august12,b00ger,006900,452073t,schach,hitman1,mariner1,vbnmrf,paint1,742617000027,bitchboy,pfqxjyjr,5681392,marryher,sinnet,malik1,muffin12,aninha,piolin,lady12,traffic1,cbvjyf,6345789,june21,ivan2010,ryan123,honda99,gunny,coorslight,asd321,hunter69,7224763,sonofgod,dolphins1,1dolphin,pavlenko,woodwind,lovelov,pinkpant,gblfhfcbyf,hotel1,justinbiebe,vinter,jeff1234,mydogs,1pizza,boats1,parrothe,shawshan,brooklyn1,cbrown,1rocky,hemi426,dragon64,redwings1,porsches,ghostly,hubbahub,buttnut,b929ezzh,sorokina,flashg,fritos,b7mguk,metatron,treehous,vorpal,8902792,marcu,free123,labamba,chiefs1,zxc123zxc,keli_14,hotti,1steeler,money4,rakker,foxwoods,free1,ahjkjd,sidorova,snowwhit,neptune1,mrlover,trader1,nudelamb,baloo,power7,deltasig,bills1,trevo,7gorwell,nokia6630,nokia5320,madhatte,1cowboys,manga1,namtab,sanjar,fanny1,birdman1,adv12775,carlo1,dude1998,babyhuey,nicole11,madmike,ubvyfpbz,qawsedr,lifetec,skyhook,stalker123,toolong,robertso,ripazha,zippy123,1111111a,manol,dirtyman,analslut,jason3,dutches,minhasenha,cerise,fenrir,jayjay1,flatbush,franka,bhbyjxrf,26429vadim,lawntrax,198700,fritzy,nikhil,ripper1,harami,truckman,nemvxyheqdd5oqxyxyzi,gkfytnf,bugaboo,cableman,hairpie,xplorer,movado,hotsex69,mordred,ohyeah1,patrick3,frolov,katieh,4311111q,mochaj,presari,bigdo,753951852,freedom4,kapitan,tomas1,135795,sweet123,pokers,shagme,tane4ka,sentinal,ufgyndmv,jonnyb,skate123,123456798,123456788,very1,gerrit,damocles,dollarbi,caroline1,lloyds,pizdets,flatland,92702689,dave13,meoff,ajnjuhfabz,achmed,madison9,744744z,amonte,avrillavigne,elaine1,norma1,asseater,everlong,buddy23,cmgang1,trash1,mitsu,flyman,ulugbek,june27,magistr,fittan,sebora64,dingos,sleipnir,caterpil,cindys,212121qaz,partys,dialer,gjytltkmybr,qweqaz,janvier,rocawear,lostboy,aileron,sweety1,everest1,pornman,boombox,potter1,blackdic,44448888,eric123,112233aa,2502557i,novass,nanotech,yourname,x12345,indian1,15975300,1234567l,carla51,chicago0,coleta,cxzdsaewq,qqwweerr,marwan,deltic,hollys,qwerasd,pon32029,rainmake,nathan0,matveeva,legioner,kevink,riven,tombraid,blitzen,a54321,jackyl,chinese1,shalimar,oleg1995,beaches1,tommylee,eknock,berli,monkey23,badbob,pugwash,likewhoa,jesus2,yujyd360,belmar,shadow22,utfp5e,angelo1,minimax,pooder,cocoa1,moresex,tortue,lesbia,panthe,snoopy2,drumnbass,alway,gmcz71,6jhwmqku,leppard,dinsdale,blair1,boriqua,money111,virtuagirl,267605,rattlesn,1sunshin,monica12,veritas1,newmexic,millertime,turandot,rfvxfnrf,jaydog,kakawka,bowhunter,booboo12,deerpark,erreway,taylorma,rfkbybyf,wooglin,weegee,rexdog,iamhorny,cazzo1,vhou812,bacardi1,dctktyyfz,godpasi,peanut12,bertha1,fuckyoubitch,ghosty,altavista,jertoot,smokeit,ghjcnbvtyz,fhnehxbr,rolsen,qazxcdews,maddmaxx,redrocke,qazokm,spencer2,thekiller,asdf11,123sex,tupac1,p1234567,dbrown,1biteme,tgo4466,316769,sunghi,shakespe,frosty1,gucci1,arcana,bandit01,lyubov,poochy,dartmout,magpies1,sunnyd,mouseman,summer07,chester7,shalini,danbury,pigboy,dave99,deniss,harryb,ashley11,pppppp1,01081988m,balloon1,tkachenko,bucks1,master77,pussyca,tricky1,zzxxccvv,zoulou,doomer,mukesh,iluv69,supermax,todays,thefox,don123,dontask,diplom,piglett,shiney,fahbrf,qaz12wsx,temitope,reggin,project1,buffy2,inside1,lbpfqyth,vanilla1,lovecock,u4slpwra,fylh.irf,123211,7ertu3ds,necroman,chalky,artist1,simpso,4x7wjr,chaos666,lazyacres,harley99,ch33s3,marusa,eagle7,dilligas,computadora,lucky69,denwer,nissan350z,unforgiv,oddball,schalke0,aztec1,borisova,branden1,parkave,marie123,germa,lafayett,878kckxy,405060,cheeseca,bigwave,fred22,andreea,poulet,mercutio,psycholo,andrew88,o4izdmxu,sanctuar,newhome,milion,suckmydi,rjvgm.nth,warior,goodgame,1qwertyuiop,6339cndh,scorpio2,macker,southbay,crabcake,toadie,paperclip,fatkid,maddo,cliff1,rastafar,maries,twins1,geujdrf,anjela,wc4fun,dolina,mpetroff,rollout,zydeco,shadow3,pumpki,steeda,volvo240,terras,blowjo,blue2000,incognit,badmojo,gambit1,zhukov,station1,aaronb,graci,duke123,clipper1,qazxsw2,ledzeppe,kukareku,sexkitte,cinco,007008,lakers12,a1234b,acmilan1,afhfjy,starrr,slutty3,phoneman,kostyan,bonzo1,sintesi07,ersatz,cloud1,nephilim,nascar03,rey619,kairos,123456789e,hardon1,boeing1,juliya,hfccdtn,vgfun8,polizei,456838,keithb,minouche,ariston,savag,213141,clarkken,microwav,london2,santacla,campeo,qr5mx7,464811,mynuts,bombo,1mickey,lucky8,danger1,ironside,carter12,wyatt1,borntorun,iloveyou123,jose1,pancake1,tadmichaels,monsta,jugger,hunnie,triste,heat7777,ilovejesus,queeny,luckycharm,lieben,gordolee85,jtkirk,forever21,jetlag,skylane,taucher,neworlea,holera,000005,anhnhoem,melissa7,mumdad,massimiliano,dima1994,nigel1,madison3,slicky,shokolad,serenit,jmh1978,soccer123,chris3,drwho,rfpzdrf,1qasw23ed,free4me,wonka,sasquatc,sanan,maytag,verochka,bankone,molly12,monopoli,xfqybr,lamborgini,gondolin,candycane,needsome,jb007,scottie1,brigit,0147258369,kalamazo,lololyo123,bill1234,ilovejes,lol123123,popkorn,april13,567rntvm,downunde,charle1,angelbab,guildwars,homeworld,qazxcvbnm,superma1,dupa123,kryptoni,happyy,artyom,stormie,cool11,calvin69,saphir,konovalov,jansport,october8,liebling,druuna,susans,megans,tujhjdf,wmegrfux,jumbo1,ljb4dt7n,012345678910,kolesnik,speculum,at4gftlw,kurgan,93pn75,cahek0980,dallas01,godswill,fhifdby,chelsea4,jump23,barsoom,catinhat,urlacher,angel99,vidadi1,678910,lickme69,topaz1,westend,loveone,c12345,gold12,alex1959,mamon,barney12,1maggie,alex12345,lp2568cskt,s1234567,gjikbdctyf,anthony0,browns99,chips1,sunking,widespre,lalala1,tdutif,fucklife,master00,alino4ka,stakan,blonde1,phoebus,tenore,bvgthbz,brunos,suzjv8,uvdwgt,revenant,1banana,veroniqu,sexfun,sp1der,4g3izhox,isakov,shiva1,scooba,bluefire,wizard12,dimitris,funbags,perseus,hoodoo,keving,malboro,157953,a32tv8ls,latics,animate,mossad,yejntb,karting,qmpq39zr,busdrive,jtuac3my,jkne9y,sr20dett,4gxrzemq,keylargo,741147,rfktylfhm,toast1,skins1,xcalibur,gattone,seether,kameron,glock9mm,julio1,delenn,gameday,tommyd,str8edge,bulls123,66699,carlsberg,woodbird,adnama,45auto,codyman,truck2,1w2w3w4w,pvjegu,method1,luetdi,41d8cd98f00b,bankai,5432112345,94rwpe,reneee,chrisx,melvins,775577,sam2000,scrappy1,rachid,grizzley,margare,morgan01,winstons,gevorg,gonzal,crawdad,gfhfdjp,babilon,noneya,pussy11,barbell,easyride,c00li0,777771,311music,karla1,golions,19866891,peejay,leadfoot,hfvbkm,kr9z40sy,cobra123,isotwe,grizz,sallys,****you,aaa123a,dembel,foxs14,hillcres,webman,mudshark,alfredo1,weeded,lester1,hovepark,ratface,000777fffa,huskie,wildthing,elbarto,waikiki,masami,call911,goose2,regin,dovajb,agricola,cjytxrj,andy11,penny123,family01,a121212,1braves,upupa68,happy100,824655,cjlove,firsttim,kalel,redhair,dfhtymt,sliders,bananna,loverbo,fifa2008,crouton,chevy350,panties2,kolya1,alyona,hagrid,spagetti,q2w3e4r,867530,narkoman,nhfdvfnjkju123,1ccccccc,napolean,0072563,allay,w8sted,wigwam,jamesk,state1,parovoz,beach69,kevinb,rossella,logitech1,celula,gnocca,canucks1,loginova,marlboro1,aaaa1,kalleanka,mester,mishutka,milenko,alibek,jersey1,peterc,1mouse,nedved,blackone,ghfplybr,682regkh,beejay,newburgh,ruffian,clarets,noreaga,xenophon,hummerh2,tenshi,smeagol,soloyo,vfhnby,ereiamjh,ewq321,goomie,sportin,cellphone,sonnie,jetblack,saudan,gblfhfc,matheus,uhfvjnf,alicja,jayman1,devon1,hexagon,bailey2,vtufajy,yankees7,salty1,908070,killemal,gammas,eurocard,sydney12,tuesday1,antietam,wayfarer,beast666,19952009sa,aq12ws,eveli,hockey21,haloreach,dontcare,xxxx1,andrea11,karlmarx,jelszo,tylerb,protools,timberwolf,ruffneck,pololo,1bbbbb,waleed,sasami,twinss,fairlady,illuminati,alex007,sucks1,homerjay,scooter7,tarbaby,barmaley,amistad,vanes,randers,tigers12,dreamer2,goleafsg,googie,bernie1,as12345,godeep,james3,phanto,gwbush,cumlover,2196dc,studioworks,995511,golf56,titova,kaleka,itali,socks1,kurwamac,daisuke,hevonen,woody123,daisie,wouter,henry123,gostosa,guppie,porpoise,iamsexy,276115,paula123,1020315,38gjgeuftd,rjrfrjkf,knotty,idiot1,sasha12345,matrix13,securit,radical1,ag764ks,jsmith,coolguy1,secretar,juanas,sasha1988,itout,00000001,tiger11,1butthea,putain,cavalo,basia1,kobebryant,1232323,12345asdfg,sunsh1ne,cyfqgth,tomkat,dorota,dashit,pelmen,5t6y7u,whipit,smokeone,helloall,bonjour1,snowshoe,nilknarf,x1x2x3,lammas,1234599,lol123456,atombomb,ironchef,noclue,alekseev,gwbush1,silver2,12345678m,yesican,fahjlbnf,chapstic,alex95,open1,tiger200,lisichka,pogiako,cbr929,searchin,tanya123,alex1973,phil413,alex1991,dominati,geckos,freddi,silenthill,egroeg,vorobey,antoxa,dark666,shkola,apple22,rebellio,shamanking,7f8srt,cumsucker,partagas,bill99,22223333,arnster55,fucknuts,proxima,silversi,goblues,parcells,vfrcbvjdf,piloto,avocet,emily2,1597530,miniskir,himitsu,pepper2,juiceman,venom1,bogdana,jujube,quatro,botafogo,mama2010,junior12,derrickh,asdfrewq,miller2,chitarra,silverfox,napol,prestigio,devil123,mm111qm,ara123,max33484,sex2000,primo1,sephan,anyuta,alena2010,viborg,verysexy,hibiscus,terps,josefin,oxcart,spooker,speciali,raffaello,partyon,vfhvtkflrf,strela,a123456z,worksuck,glasss,lomonosov,dusty123,dukeblue,1winter,sergeeva,lala123,john22,cmc09,sobolev,bettylou,dannyb,gjkrjdybr,hagakure,iecnhbr,awsedr,pmdmsctsk,costco,alekseeva,fktrcttd,bazuka,flyingv,garuda,buffy16,gutierre,beer12,stomatolog,ernies,palmeiras,golf123,love269,n.kmgfy,gjkysqgbpltw,youare,joeboo,baksik,lifeguar,111a111,nascar8,mindgame,dude1,neopets,frdfkfyu,june24,phoenix8,penelopa,merlin99,mercenar,badluck,mishel,bookert,deadsexy,power9,chinchil,1234567m,alex10,skunk1,rfhkcjy,sammycat,wright1,randy2,marakesh,temppassword,elmer251,mooki,patrick0,bonoedge,1tits,chiar,kylie1,graffix,milkman1,cornel,mrkitty,nicole12,ticketmaster,beatles4,number20,ffff1,terps1,superfre,yfdbufnjh,jake1234,flblfc,1111qq,zanuda,jmol01,wpoolejr,polopol,nicolett,omega13,cannonba,123456789.,sandy69,ribeye,bo243ns,marilena,bogdan123,milla,redskins1,19733791,alias1,movie1,ducat,marzena,shadowru,56565,coolman1,pornlover,teepee,spiff,nafanya,gateway3,fuckyou0,hasher,34778,booboo69,staticx,hang10,qq12345,garnier,bosco123,1234567qw,carson1,samso,1xrg4kcq,cbr929rr,allan123,motorbik,andrew22,pussy101,miroslava,cytujdbr,camp0017,cobweb,snusmumrik,salmon1,cindy2,aliya,serendipity,co437at,tincouch,timmy123,hunter22,st1100,vvvvvv1,blanka,krondor,sweeti,nenit,kuzmich,gustavo1,bmw320i,alex2010,trees1,kyliem,essayons,april26,kumari,sprin,fajita,appletre,fghbjhb,1green,katieb,steven2,corrado1,satelite,1michell,123456789c,cfkfvfylhf,acurarsx,slut543,inhere,bob2000,pouncer,k123456789,fishie,aliso,audia8,bluetick,soccer69,jordan99,fromhell,mammoth1,fighting54,mike25,pepper11,extra1,worldwid,chaise,vfr800,sordfish,almat,nofate,listopad,hellgate,dctvghbdf,jeremia,qantas,lokiju,honker,sprint1,maral,triniti,compaq3,sixsix6,married1,loveman,juggalo1,repvtyrj,zxcasdqw,123445,whore1,123678,monkey6,west123,warcraf,pwnage,mystery1,creamyou,ant123,rehjgfnrf,corona1,coleman1,steve121,alderaan,barnaul,celeste1,junebug1,bombshel,gretzky9,tankist,targa,cachou,vaz2101,playgolf,boneyard,strateg,romawka,iforgotit,pullup,garbage1,irock,archmage,shaft1,oceano,sadies,alvin1,135135ab,psalm69,lmfao,ranger02,zaharova,33334444,perkman,realman,salguod,cmoney,astonmartin,glock1,greyfox,viper99,helpm,blackdick,46775575,family5,shazbot,dewey1,qwertyas,shivani,black22,mailman1,greenday1,57392632,red007,stanky,sanchez1,tysons,daruma,altosax,krayzie,85852008,1forever,98798798,irock.,123456654,142536789,ford22,brick1,michela,preciou,crazy4u,01telemike01,nolife,concac,safety1,annie123,brunswic,destini,123456qwer,madison0,snowball1,137946,1133557799,jarule,scout2,songohan,thedead,00009999,murphy01,spycam,hirsute,aurinko,associat,1miller,baklan,hermes1,2183rm,martie,kangoo,shweta,yvonne1,westsid,jackpot1,rotciv,maratik,fabrika,claude1,nursultan,noentry,ytnhjufnm,electra1,ghjcnjnfr1,puneet,smokey01,integrit,bugeye,trouble2,14071789,paul01,omgwtf,dmh415,ekilpool,yourmom1,moimeme,sparky11,boludo,ruslan123,kissme1,demetrio,appelsin,asshole3,raiders2,bunns,fynjybj,billygoa,p030710p$e4o,macdonal,248ujnfk,acorns,schmidt1,sparrow1,vinbylrj,weasle,jerom,ycwvrxxh,skywalk,gerlinde,solidus,postal1,poochie1,1charles,rhianna,terorist,rehnrf,omgwtfbbq,assfucke,deadend,zidan,jimboy,vengence,maroon5,7452tr,dalejr88,sombra,anatole,elodi,amazonas,147789,q12345q,gawker1,juanma,kassidy,greek1,bruces,bilbob,mike44,0o9i8u7y6t,kaligula,agentx,familie,anders1,pimpjuice,0128um,birthday10,lawncare,hownow,grandorgue,juggerna,scarfac,kensai,swatteam,123four,motorbike,repytxbr,other1,celicagt,pleomax,gen0303,godisgreat,icepick,lucifer666,heavy1,tea4two,forsure,02020,shortdog,webhead,chris13,palenque,3techsrl,knights1,orenburg,prong,nomarg,wutang1,80637852730,laika,iamfree,12345670,pillow1,12343412,bigears,peterg,stunna,rocky5,12123434,damir,feuerwehr,7418529630,danone,yanina,valenci,andy69,111222q,silvia1,1jjjjj,loveforever,passwo1,stratocaster,8928190a,motorolla,lateralu,ujujkm,chubba,ujkjdf,signon,123456789zx,serdce,stevo,wifey200,ololo123,popeye1,1pass,central1,melena,luxor,nemezida,poker123,ilovemusic,qaz1234,noodles1,lakeshow,amarill,ginseng,billiam,trento,321cba,fatback,soccer33,master13,marie2,newcar,bigtop,dark1,camron,nosgoth,155555,biglou,redbud,jordan7,159789,diversio,actros,dazed,drizzit,hjcnjd,wiktoria,justic,gooses,luzifer,darren1,chynna,tanuki,11335577,icculus,boobss,biggi,firstson,ceisi123,gatewa,hrothgar,jarhead1,happyjoy,felipe1,bebop1,medman,athena1,boneman,keiths,djljgfl,dicklick,russ120,mylady,zxcdsa,rock12,bluesea,kayaks,provista,luckies,smile4me,bootycal,enduro,123123f,heartbre,ern3sto,apple13,bigpappa,fy.njxrf,bigtom,cool69,perrito,quiet1,puszek,cious,cruella,temp1,david26,alemap,aa123123,teddies,tricolor,smokey12,kikiriki,mickey01,robert01,super5,ranman,stevenso,deliciou,money777,degauss,mozar,susanne1,asdasd12,shitbag,mommy123,wrestle1,imfree,fuckyou12,barbaris,florent,ujhijr,f8yruxoj,tefjps,anemone,toltec,2gether,left4dead2,ximen,gfkmvf,dunca,emilys,diana123,16473a,mark01,bigbro,annarbor,nikita2000,11aa11,tigres,llllll1,loser2,fbi11213,jupite,qwaszxqw,macabre,123ert,rev2000,mooooo,klapaucius,bagel1,chiquit,iyaoyas,bear101,irocz28,vfktymrfz,smokey2,love99,rfhnbyf,dracul,keith123,slicko,peacock1,orgasmic,thesnake,solder,wetass,doofer,david5,rhfcyjlfh,swanny,tammys,turkiye,tubaman,estefani,firehose,funnyguy,servo,grace17,pippa1,arbiter,jimmy69,nfymrf,asdf67nm,rjcnzy,demon123,thicknes,sexysex,kristall,michail,encarta,banderos,minty,marchenko,de1987ma,mo5kva,aircav,naomi1,bonni,tatoo,cronaldo,49ers1,mama1963,1truck,telecaster,punksnotdead,erotik,1eagles,1fender,luv269,acdeehan,tanner1,freema,1q3e5t7u,linksys,tiger6,megaman1,neophyte,australia1,mydaddy,1jeffrey,fgdfgdfg,gfgekz,1986irachka,keyman,m0b1l3,dfcz123,mikeyg,playstation2,abc125,slacker1,110491g,lordsoth,bhavani,ssecca,dctvghbdtn,niblick,hondacar,baby01,worldcom,4034407,51094didi,3657549,3630000,3578951,sweetpussy,majick,supercoo,robert11,abacabb,panda123,gfhjkm13,ford4x4,zippo1,lapin,1726354,lovesong,dude11,moebius,paravoz,1357642,matkhau,solnyshko,daniel4,multiplelog,starik,martusia,iamtheman,greentre,jetblue,motorrad,vfrcbvev,redoak,dogma1,gnorman,komlos,tonka1,1010220,666satan,losenord,lateralus,absinthe,command1,jigga1,iiiiiii1,pants1,jungfrau,926337,ufhhbgjnnth,yamakasi,888555,sunny7,gemini69,alone1,zxcvbnmz,cabezon,skyblues,zxc1234,456123a,zero00,caseih,azzurra,legolas1,menudo,murcielago,785612,779977,benidorm,viperman,dima1985,piglet1,hemligt,hotfeet,7elephants,hardup,gamess,a000000,267ksyjf,kaitlynn,sharkie,sisyphus,yellow22,667766,redvette,666420,mets69,ac2zxdty,hxxrvwcy,cdavis,alan1,noddy,579300,druss,eatshit1,555123,appleseed,simpleplan,kazak,526282,fynfyfyfhbde,birthday6,dragon6,1pookie,bluedevils,omg123,hj8z6e,x5dxwp,455445,batman23,termin,chrisbrown,animals1,lucky9,443322,kzktxrf,takayuki,fermer,assembler,zomu9q,sissyboy,sergant,felina,nokia6230i,eminem12,croco,hunt4red,festina,darknigh,cptnz062,ndshnx4s,twizzler,wnmaz7sd,aamaax,gfhfcjkmrf,alabama123,barrynov,happy5,punt0it,durandal,8xuuobe4,cmu9ggzh,bruno12,316497,crazyfrog,vfvfktyf,apple3,kasey1,mackdaddy,anthon1,sunnys,angel3,cribbage,moon1,donal,bryce1,pandabear,mwss474,whitesta,freaker,197100,bitche,p2ssw0rd,turnb,tiktonik,moonlite,ferret1,jackas,ferrum,bearclaw,liberty2,1diablo,caribe,snakeeyes,janbam,azonic,rainmaker,vetalik,bigeasy,baby1234,sureno13,blink1,kluivert,calbears,lavanda,198600,dhtlbyf,medvedeva,fox123,whirling,bonscott,freedom9,october3,manoman,segredo,cerulean,robinso,bsmith,flatus,dannon,password21,rrrrrr1,callista,romai,rainman1,trantor,mickeymo,bulldog7,g123456,pavlin,pass22,snowie,hookah,7ofnine,bubba22,cabible,nicerack,moomoo1,summer98,yoyo123,milan1,lieve27,mustang69,jackster,exocet,nadege,qaz12,bahama,watson1,libras,eclipse2,bahram,bapezm,up9x8rww,ghjcnjz,themaste,deflep27,ghost16,gattaca,fotograf,junior123,gilber,gbjyth,8vjzus,rosco1,begonia,aldebara,flower12,novastar,buzzman,manchild,lopez1,mama11,william7,yfcnz1,blackstar,spurs123,moom4242,1amber,iownyou,tightend,07931505,paquito,1johnson,smokepot,pi31415,snowmass,ayacdc,jessicam,giuliana,5tgbnhy6,harlee,giuli,bigwig,tentacle,scoubidou2,benelli,vasilina,nimda,284655,jaihind,lero4ka,1tommy,reggi,ididit,jlbyjxtcndj,mike26,qbert,wweraw,lukasz,loosee123,palantir,flint1,mapper,baldie,saturne,virgin1,meeeee,elkcit,iloveme2,blue15,themoon,radmir,number3,shyanne,missle,hannelor,jasmina,karin1,lewie622,ghjcnjqgfhjkm,blasters,oiseau,sheela,grinders,panget,rapido,positiv,twink,fltkbyf,kzsfj874,daniel01,enjoyit,nofags,doodad,rustler,squealer,fortunat,peace123,khushi,devils2,7inches,candlebo,topdawg,armen,soundman,zxcqweasd,april7,gazeta,netman,hoppers,bear99,ghbjhbntn,mantle7,bigbo,harpo,jgordon,bullshi,vinny1,krishn,star22,thunderc,galinka,phish123,tintable,nightcrawler,tigerboy,rbhgbx,messi,basilisk,masha1998,nina123,yomamma,kayla123,geemoney,0000000000d,motoman,a3jtni,ser123,owen10,italien,vintelok,12345rewq,nightime,jeepin,ch1tt1ck,mxyzptlk,bandido,ohboy,doctorj,hussar,superted,parfilev,grundle,1jack,livestrong,chrisj,matthew3,access22,moikka,fatone,miguelit,trivium,glenn1,smooches,heiko,dezember,spaghett,stason,molokai,bossdog,guitarma,waderh,boriska,photosho,path13,hfrtnf,audre,junior24,monkey24,silke,vaz21093,bigblue1,trident1,candide,arcanum,klinker,orange99,bengals1,rosebu,mjujuj,nallepuh,mtwapa1a,ranger69,level1,bissjop,leica,1tiffany,rutabega,elvis77,kellie1,sameas,barada,karabas,frank12,queenb,toutoune,surfcity,samanth1,monitor1,littledo,kazakova,fodase,mistral1,april22,carlit,shakal,batman123,fuckoff2,alpha01,5544332211,buddy3,towtruck,kenwood1,vfiekmrf,jkl123,pypsik,ranger75,sitges,toyman,bartek1,ladygirl,booman,boeing77,installsqlst,222666,gosling,bigmack,223311,bogos,kevin2,gomez1,xohzi3g4,kfnju842,klubnika,cubalibr,123456789101,kenpo,0147852369,raptor1,tallulah,boobys,jjones,1q2s3c,moogie,vid2600,almas,wombat1,extra300,xfiles1,green77,sexsex1,heyjude,sammyy,missy123,maiyeuem,nccpl25282,thicluv,sissie,raven3,fldjrfn,buster22,broncos2,laurab,letmein4,harrydog,solovey,fishlips,asdf4321,ford123,superjet,norwegen,movieman,psw333333,intoit,postbank,deepwate,ola123,geolog323,murphys,eshort,a3eilm2s2y,kimota,belous,saurus,123321qaz,i81b4u,aaa12,monkey20,buckwild,byabybnb,mapleleafs,yfcnzyfcnz,baby69,summer03,twista,246890,246824,ltcnhjth,z1z2z3,monika1,sad123,uto29321,bathory,villan,funkey,poptarts,spam967888,705499fh,sebast,porn1234,earn381,1porsche,whatthef,123456789y,polo12,brillo,soreilly,waters1,eudora,allochka,is_a_bot,winter00,bassplay,531879fiz,onemore,bjarne,red911,kot123,artur1,qazxdr,c0rvette,diamond7,matematica,klesko,beaver12,2enter,seashell,panam,chaching,edward2,browni,xenogear,cornfed,aniram,chicco22,darwin1,ancella2,sophie2,vika1998,anneli,shawn41,babie,resolute,pandora2,william8,twoone,coors1,jesusis1,teh012,cheerlea,renfield,tessa1,anna1986,madness1,bkmlfh,19719870,liebherr,ck6znp42,gary123,123654z,alsscan,eyedoc,matrix7,metalgea,chinito,4iter,falcon11,7jokx7b9du,bigfeet,tassadar,retnuh,muscle1,klimova,darion,batistuta,bigsur,1herbier,noonie,ghjrehjh,karimova,faustus,snowwhite,1manager,dasboot,michael12,analfuck,inbed,dwdrums,jaysoncj,maranell,bsheep75,164379,rolodex,166666,rrrrrrr1,almaz666,167943,russel1,negrito,alianz,goodpussy,veronik,1w2q3r4e,efremov,emb377,sdpass,william6,alanfahy,nastya1995,panther5,automag,123qwe12,vfvf2011,fishe,1peanut,speedie,qazwsx1234,pass999,171204j,ketamine,sheena1,energizer,usethis1,123abc123,buster21,thechamp,flvbhfk,frank69,chane,hopeful1,claybird,pander,anusha,bigmaxxx,faktor,housebed,dimidrol,bigball,shashi,derby1,fredy,dervish,bootycall,80988218126,killerb,cheese2,pariss,mymail,dell123,catbert,christa1,chevytru,gjgjdf,00998877,overdriv,ratten,golf01,nyyanks,dinamite,bloembol,gismo,magnus1,march2,twinkles,ryan22,duckey,118a105b,kitcat,brielle,poussin,lanzarot,youngone,ssvegeta,hero63,battle1,kiler,fktrcfylh1,newera,vika1996,dynomite,oooppp,beer4me,foodie,ljhjuf,sonshine,godess,doug1,constanc,thinkbig,steve2,damnyou,autogod,www333,kyle1,ranger7,roller1,harry2,dustin1,hopalong,tkachuk,b00bies,bill2,deep111,stuffit,fire69,redfish1,andrei123,graphix,1fishing,kimbo1,mlesp31,ifufkbyf,gurkan,44556,emily123,busman,and123,8546404,paladine,1world,bulgakov,4294967296,bball23,1wwwww,mycats,elain,delta6,36363,emilyb,color1,6060842,cdtnkfyrf,hedonism,gfgfrfhkj,5551298,scubad,gostate,sillyme,hdbiker,beardown,fishers,sektor,00000007,newbaby,rapid1,braves95,gator2,nigge,anthony3,sammmy,oou812,heffer,phishin,roxanne1,yourass,hornet1,albator,2521659,underwat,tanusha,dianas,3f3fpht7op,dragon20,bilbobag,cheroke,radiatio,dwarf1,majik,33st33,dochka,garibald,robinh,sham69,temp01,wakeboar,violet1,1w2w3w,registr,tonite,maranello,1593570,parolamea,galatasara,loranthos,1472583,asmodean,1362840,scylla,doneit,jokerr,porkypig,kungen,mercator,koolhaas,come2me,debbie69,calbear,liverpoolfc,yankees4,12344321a,kennyb,madma,85200258,dustin23,thomas13,tooling,mikasa,mistic,crfnbyf,112233445,sofia1,heinz57,colts1,price1,snowey,joakim,mark11,963147,cnhfcnm,kzinti,1bbbbbbb,rubberdu,donthate,rupert1,sasha1992,regis1,nbuhbwf,fanboy,sundial,sooner1,wayout,vjnjhjkf,deskpro,arkangel,willie12,mikeyb,celtic1888,luis1,buddy01,duane1,grandma1,aolcom,weeman,172839456,basshead,hornball,magnu,pagedown,molly2,131517,rfvtgbyhn,astonmar,mistery,madalina,cash1,1happy,shenlong,matrix01,nazarova,369874125,800500,webguy,rse2540,ashley2,briank,789551,786110,chunli,j0nathan,greshnik,courtne,suckmyco,mjollnir,789632147,asdfg1234,754321,odelay,ranma12,zebedee,artem777,bmw318is,butt1,rambler1,yankees9,alabam,5w76rnqp,rosies,mafioso,studio1,babyruth,tranzit,magical123,gfhjkm135,12345$,soboleva,709394,ubique,drizzt1,elmers,teamster,pokemons,1472583690,1597532486,shockers,merckx,melanie2,ttocs,clarisse,earth1,dennys,slobber,flagman,farfalla,troika,4fa82hyx,hakan,x4ww5qdr,cumsuck,leather1,forum1,july20,barbel,zodiak,samuel12,ford01,rushfan,bugsy1,invest1,tumadre,screwme,a666666,money5,henry8,tiddles,sailaway,starburs,100years,killer01,comando,hiromi,ranetka,thordog,blackhole,palmeira,verboten,solidsna,q1w1e1,humme,kevinc,gbrfxe,gevaudan,hannah11,peter2,vangar,sharky7,talktome,jesse123,chuchi,pammy,!qazxsw2,siesta,twenty1,wetwilly,477041,natural1,sun123,daniel3,intersta,shithead1,hellyea,bonethugs,solitair,bubbles2,father1,nick01,444000,adidas12,dripik,cameron2,442200,a7nz8546,respublika,fkojn6gb,428054,snoppy,rulez1,haslo,rachael1,purple01,zldej102,ab12cd34,cytuehjxrf,madhu,astroman,preteen,handsoff,mrblonde,biggio,testin,vfdhif,twolves,unclesam,asmara,kpydskcw,lg2wmgvr,grolsch,biarritz,feather1,williamm,s62i93,bone1,penske,337733,336633,taurus1,334433,billet,diamondd,333000,nukem,fishhook,godogs,thehun,lena1982,blue00,smelly1,unb4g9ty,65pjv22,applegat,mikehunt,giancarlo,krillin,felix123,december1,soapy,46doris,nicole23,bigsexy1,justin10,pingu,bambou,falcon12,dgthtl,1surfer,qwerty01,estrellit,nfqcjy,easygo,konica,qazqwe,1234567890m,stingers,nonrev,3e4r5t,champio,bbbbbb99,196400,allen123,seppel,simba2,rockme,zebra3,tekken3,endgame,sandy2,197300,fitte,monkey00,eldritch,littleone,rfyfgkz,1member,66chevy,oohrah,cormac,hpmrbm41,197600,grayfox,elvis69,celebrit,maxwell7,rodders,krist,1camaro,broken1,kendall1,silkcut,katenka,angrick,maruni,17071994a,tktyf,kruemel,snuffles,iro4ka,baby12,alexis01,marryme,vlad1994,forward1,culero,badaboom,malvin,hardtoon,hatelove,molley,knopo4ka,duchess1,mensuck,cba321,kickbutt,zastava,wayner,fuckyou6,eddie123,cjkysir,john33,dragonfi,cody1,jabell,cjhjrf,badseed,sweden1,marihuana,brownlov,elland,nike1234,kwiettie,jonnyboy,togepi,billyk,robert123,bb334,florenci,ssgoku,198910,bristol1,bob007,allister,yjdujhjl,gauloise,198920,bellaboo,9lives,aguilas,wltfg4ta,foxyroxy,rocket69,fifty50,babalu,master21,malinois,kaluga,gogosox,obsessio,yeahrigh,panthers1,capstan,liza2000,leigh1,paintball1,blueskie,cbr600f3,bagdad,jose98,mandreki,shark01,wonderbo,muledeer,xsvnd4b2,hangten,200001,grenden,anaell,apa195,model1,245lufpq,zip100,ghjcgtrn,wert1234,misty2,charro,juanjose,fkbcrf,frostbit,badminto,buddyy,1doctor,vanya,archibal,parviz,spunky1,footboy,dm6tzsgp,legola,samadhi,poopee,ytdxz2ca,hallowboy,dposton,gautie,theworm,guilherme,dopehead,iluvtits,bobbob1,ranger6,worldwar,lowkey,chewbaca,oooooo99,ducttape,dedalus,celular,8i9o0p,borisenko,taylor01,111111z,arlingto,p3nnywiz,rdgpl3ds,boobless,kcmfwesg,blacksab,mother2,markus1,leachim,secret2,s123456789,1derful,espero,russell2,tazzer,marykate,freakme,mollyb,lindros8,james00,gofaster,stokrotka,kilbosik,aquamann,pawel1,shedevil,mousie,slot2009,october6,146969,mm259up,brewcrew,choucho,uliana,sexfiend,fktirf,pantss,vladimi,starz,sheeps,12341234q,bigun,tiggers,crjhjcnm,libtech,pudge1,home12,zircon,klaus1,jerry2,pink1,lingus,monkey66,dumass,polopolo09,feuerweh,rjyatnf,chessy,beefer,shamen,poohbear1,4jjcho,bennevis,fatgirls,ujnbrf,cdexswzaq,9noize9,rich123,nomoney,racecar1,hacke,clahay,acuario,getsum,hondacrv,william0,cheyenn,techdeck,atljhjdf,wtcacq,suger,fallenangel,bammer,tranquil,carla123,relayer,lespaul1,portvale,idontno,bycnbnen,trooper2,gennadiy,pompon,billbob,amazonka,akitas,chinatow,atkbrc,busters,fitness1,cateye,selfok2013,1murphy,fullhous,mucker,bajskorv,nectarin,littlebitch,love24,feyenoor,bigal37,lambo1,pussybitch,icecube1,biged,kyocera,ltybcjdf,boodle,theking1,gotrice,sunset1,abm1224,fromme,sexsells,inheat,kenya1,swinger1,aphrodit,kurtcobain,rhind101,poidog,poiulkjh,kuzmina,beantown,tony88,stuttgar,drumer,joaqui,messenge,motorman,amber2,nicegirl,rachel69,andreia,faith123,studmuffin,jaiden,red111,vtkmybr,gamecocks,gumper,bosshogg,4me2know,tokyo1,kleaner,roadhog,fuckmeno,phoenix3,seeme,buttnutt,boner69,andreyka,myheart,katerin,rugburn,jvtuepip,dc3ubn,chile1,ashley69,happy99,swissair,balls2,fylhttdf,jimboo,55555d,mickey11,voronin,m7hsqstm,stufff,merete,weihnachte,dowjones,baloo1,freeones,bears34,auburn1,beverl,timberland,1elvis,guinness1,bombadil,flatron1,logging7,telefoon,merl1n,masha1,andrei1,cowabung,yousuck1,1matrix,peopl,asd123qwe,sweett,mirror1,torrente,joker12,diamond6,jackaroo,00000a,millerlite,ironhorse,2twins,stryke,gggg1,zzzxxxccc,roosevel,8363eddy,angel21,depeche1,d0ct0r,blue14,areyou,veloce,grendal,frederiksberg,cbcntvf,cb207sl,sasha2000,was.here,fritzz,rosedale,spinoza,cokeisit,gandalf3,skidmark,ashley01,12345j,1234567890qaz,sexxxxxx,beagles,lennart,12345789,pass10,politic,max007,gcheckou,12345611,tiffy,lightman,mushin,velosiped,brucewayne,gauthie,elena123,greenegg,h2oski,clocker,nitemare,123321s,megiddo,cassidy1,david13,boywonde,flori,peggy12,pgszt6md,batterie,redlands,scooter6,bckhere,trueno,bailey11,maxwell2,bandana,timoth1,startnow,ducati74,tiern,maxine1,blackmetal,suzyq,balla007,phatfarm,kirsten1,titmouse,benhogan,culito,forbin,chess1,warren1,panman,mickey7,24lover,dascha,speed2,redlion,andrew10,johnwayn,nike23,chacha1,bendog,bullyboy,goldtree,spookie,tigger99,1cookie,poutine,cyclone1,woodpony,camaleun,bluesky1,dfadan,eagles20,lovergirl,peepshow,mine1,dima1989,rjdfkmxer,11111aaaaa,machina,august17,1hhhhh,0773417k,1monster,freaksho,jazzmin,davidw,kurupt,chumly,huggies,sashenka,ccccccc1,bridge1,giggalo,cincinna,pistol1,hello22,david77,lightfoo,lucky6,jimmy12,261397,lisa12,tabaluga,mysite,belo4ka,greenn,eagle99,punkrawk,salvado,slick123,wichsen,knight99,dummys,fefolico,contrera,kalle1,anna1984,delray,robert99,garena,pretende,racefan,alons,serenada,ludmilla,cnhtkjr,l0swf9gx,hankster,dfktynbyrf,sheep1,john23,cv141ab,kalyani,944turbo,crystal2,blackfly,zrjdktdf,eus1sue1,mario5,riverplate,harddriv,melissa3,elliott1,sexybitc,cnhfyybr,jimdavis,bollix,beta1,amberlee,skywalk1,natala,1blood,brattax,shitty1,gb15kv99,ronjon,rothmans,thedoc,joey21,hotboi,firedawg,bimbo38,jibber,aftermat,nomar,01478963,phishing,domodo,anna13,materia,martha1,budman1,gunblade,exclusiv,sasha1997,anastas,rebecca2,fackyou,kallisti,fuckmyass,norseman,ipswich1,151500,1edward,intelinside,darcy1,bcrich,yjdjcnbf,failte,buzzzz,cream1,tatiana1,7eleven,green8,153351,1a2s3d4f5g6h,154263,milano1,bambi1,bruins77,rugby2,jamal1,bolita,sundaypunch,bubba12,realmadr,vfyxtcnth,iwojima,notlob,black666,valkiria,nexus1,millerti,birthday100,swiss1,appollo,gefest,greeneyes,celebrat,tigerr,slava123,izumrud,bubbabub,legoman,joesmith,katya123,sweetdream,john44,wwwwwww1,oooooo1,socal,lovespor,s5r8ed67s,258147,heidis,cowboy22,wachovia,michaelb,qwe1234567,i12345,255225,goldie1,alfa155,45colt,safeu851,antonova,longtong,1sparky,gfvznm,busen,hjlbjy,whateva,rocky4,cokeman,joshua3,kekskek1,sirocco,jagman,123456qwert,phinupi,thomas10,loller,sakur,vika2011,fullred,mariska,azucar,ncstate,glenn74,halima,aleshka,ilovemylife,verlaat,baggie,scoubidou6,phatboy,jbruton,scoop1,barney11,blindman,def456,maximus2,master55,nestea,11223355,diego123,sexpistols,sniffy,philip1,f12345,prisonbreak,nokia2700,ajnjuhfa,yankees3,colfax,ak470000,mtnman,bdfyeirf,fotball,ichbin,trebla,ilusha,riobravo,beaner1,thoradin,polkaudi,kurosawa,honda123,ladybu,valerik,poltava,saviola,fuckyouguys,754740g0,anallove,microlab1,juris01,ncc1864,garfild,shania1,qagsud,makarenko,cindy69,lebedev,andrew11,johnnybo,groovy1,booster1,sanders1,tommyb,johnson4,kd189nlcih,hondaman,vlasova,chick1,sokada,sevisgur,bear2327,chacho,sexmania,roma1993,hjcnbckfd,valley1,howdie,tuppence,jimandanne,strike3,y4kuz4,nhfnfnf,tsubasa,19955991,scabby,quincunx,dima1998,uuuuuu1,logica,skinner1,pinguino,lisa1234,xpressmusic,getfucked,qqqq1,bbbb1,matulino,ulyana,upsman,johnsmith,123579,co2000,spanner1,todiefor,mangoes,isabel1,123852,negra,snowdon,nikki123,bronx1,booom,ram2500,chuck123,fireboy,creek1,batman13,princesse,az12345,maksat,1knight,28infern,241455,r7112s,muselman,mets1986,katydid,vlad777,playme,kmfdm1,asssex,1prince,iop890,bigbroth,mollymoo,waitron,lizottes,125412,juggler,quinta,0sister0,zanardi,nata123,heckfyxbr,22q04w90e,engine2,nikita95,zamira,hammer22,lutscher,carolina1,zz6319,sanman,vfuflfy,buster99,rossco,kourniko,aggarwal,tattoo1,janice1,finger1,125521,19911992,shdwlnds,rudenko,vfvfgfgf123,galatea,monkeybu,juhani,premiumcash,classact,devilmay,helpme2,knuddel,hardpack,ramil,perrit,basil1,zombie13,stockcar,tos8217,honeypie,nowayman,alphadog,melon1,talula,125689,tiribon12,tornike,haribol,telefone,tiger22,sucka,lfytxrf,chicken123,muggins,a23456,b1234567,lytdybr,otter1,pippa,vasilisk,cooking1,helter,78978,bestboy,viper7,ahmed1,whitewol,mommys,apple5,shazam1,chelsea7,kumiko,masterma,rallye,bushmast,jkz123,entrar,andrew6,nathan01,alaric,tavasz,heimdall,gravy1,jimmy99,cthlwt,powerr,gthtrhtcnjr,canesfan,sasha11,ybrbnf_25,august9,brucie,artichok,arnie1,superdude,tarelka,mickey22,dooper,luners,holeshot,good123,gettysbu,bicho,hammer99,divine5,1zxcvbn,stronzo,q22222,disne,bmw750il,godhead,hallodu,aerith,nastik,differen,cestmoi,amber69,5string,pornosta,dirtygirl,ginger123,formel1,scott12,honda200,hotspurs,johnatha,firstone123,lexmark1,msconfig,karlmasc,l123456,123qweasdzx,baldman,sungod,furka,retsub,9811020,ryder1,tcglyued,astron,lbvfcbr,minddoc,dirt49,baseball12,tbear,simpl,schuey,artimus,bikman,plat1num,quantex,gotyou,hailey1,justin01,ellada,8481068,000002,manimal,dthjybxrf,buck123,dick123,6969696,nospam,strong1,kodeord,bama12,123321w,superman123,gladiolus,nintend,5792076,dreamgirl,spankme1,gautam,arianna1,titti,tetas,cool1234,belladog,importan,4206969,87e5nclizry,teufelo7,doller,yfl.irf,quaresma,3440172,melis,bradle,nnmaster,fast1,iverso,blargh,lucas12,chrisg,iamsam,123321az,tomjerry,kawika,2597174,standrew,billyg,muskan,gizmodo2,rz93qpmq,870621345,sathya,qmezrxg4,januari,marthe,moom4261,cum2me,hkger286,lou1988,suckit1,croaker,klaudia1,753951456,aidan1,fsunoles,romanenko,abbydog,isthebes,akshay,corgi,fuck666,walkman555,ranger98,scorpian,hardwareid,bluedragon,fastman,2305822q,iddqdiddqd,1597532,gopokes,zvfrfcb,w1234567,sputnik1,tr1993,pa$$w0rd,2i5fdruv,havvoc,1357913,1313131,bnm123,cowd00d,flexscan,thesims2,boogiema,bigsexxy,powerstr,ngc4565,joshman,babyboy1,123jlb,funfunfu,qwe456,honor1,puttana,bobbyj,daniel21,pussy12,shmuck,1232580,123578951,maxthedo,hithere1,bond0007,gehenna,nomames,blueone,r1234567,bwana,gatinho,1011111,torrents,cinta,123451234,tiger25,money69,edibey,pointman,mmcm19,wales1,caffreys,phaedra,bloodlus,321ret32,rufuss,tarbit,joanna1,102030405,stickboy,lotrfotr34,jamshid,mclarenf1,ataman,99ford,yarrak,logan2,ironlung,pushistik,dragoon1,unclebob,tigereye,pinokio,tylerj,mermaid1,stevie1,jaylen,888777,ramana,roman777,brandon7,17711771s,thiago,luigi1,edgar1,brucey,videogam,classi,birder,faramir,twiddle,cubalibre,grizzy,fucky,jjvwd4,august15,idinahui,ranita,nikita1998,123342,w1w2w3,78621323,4cancel,789963,(null,vassago,jaydog472,123452,timt42,canada99,123589,rebenok,htyfnf,785001,osipov,maks123,neverwinter,love2010,777222,67390436,eleanor1,bykemo,aquemini,frogg,roboto,thorny,shipmate,logcabin,66005918,nokian,gonzos,louisian,1abcdefg,triathlo,ilovemar,couger,letmeino,supera,runvs,fibonacci,muttly,58565254,5thgbqi,vfnehsv,electr,jose12,artemis1,newlove,thd1shr,hawkey,grigoryan,saisha,tosca,redder,lifesux,temple1,bunnyman,thekids,sabbeth,tarzan1,182838,158uefas,dell50,1super,666222,47ds8x,jackhamm,mineonly,rfnfhbyf,048ro,665259,kristina1,bombero,52545856,secure1,bigloser,peterk,alex2,51525354,anarchy1,superx,teenslut,money23,sigmapi,sanfrancisco,acme34,private5,eclips,qwerttrewq,axelle,kokain,hardguy,peter69,jesuschr,dyanna,dude69,sarah69,toyota91,amberr,45645645,bugmenot,bigted,44556677,556644,wwr8x9pu,alphaome,harley13,kolia123,wejrpfpu,revelati,nairda,sodoff,cityboy,pinkpussy,dkalis,miami305,wow12345,triplet,tannenbau,asdfasdf1,darkhors,527952,retired1,soxfan,nfyz123,37583867,goddes,515069,gxlmxbewym,1warrior,36925814,dmb2011,topten,karpova,89876065093rax,naturals,gateway9,cepseoun,turbot,493949,cock22,italia1,sasafras,gopnik,stalke,1qazxdr5,wm2006,ace1062,alieva,blue28,aracel,sandia,motoguzz,terri1,emmajane,conej,recoba,alex1995,jerkyboy,cowboy12,arenrone,precisio,31415927,scsa316,panzer1,studly1,powerhou,bensam,mashoutq,billee,eeyore1,reape,thebeatl,rul3z,montesa,doodle1,cvzefh1gk,424365,a159753,zimmerma,gumdrop,ashaman,grimreap,icandoit,borodina,branca,dima2009,keywest1,vaders,bubluk,diavolo,assss,goleta,eatass,napster1,382436,369741,5411pimo,lenchik,pikach,gilgamesh,kalimera,singer1,gordon2,rjycnbnewbz,maulwurf,joker13,2much4u,bond00,alice123,robotec,fuckgirl,zgjybz,redhorse,margaret1,brady1,pumpkin2,chinky,fourplay,1booger,roisin,1brandon,sandan,blackheart,cheez,blackfin,cntgfyjdf,mymoney1,09080706,goodboss,sebring1,rose1,kensingt,bigboner,marcus12,ym3cautj,struppi,thestone,lovebugs,stater,silver99,forest99,qazwsx12345,vasile,longboar,mkonji,huligan,rhfcbdfz,airmail,porn11,1ooooo,sofun,snake2,msouthwa,dougla,1iceman,shahrukh,sharona,dragon666,france98,196800,196820,ps253535,zjses9evpa,sniper01,design1,konfeta,jack99,drum66,good4you,station2,brucew,regedit,school12,mvtnr765,pub113,fantas,tiburon1,king99,ghjcnjgbpltw,checkito,308win,1ladybug,corneliu,svetasveta,197430,icicle,imaccess,ou81269,jjjdsl,brandon6,bimbo1,smokee,piccolo1,3611jcmg,children2,cookie2,conor1,darth1,margera,aoi856,paully,ou812345,sklave,eklhigcz,30624700,amazing1,wahooo,seau55,1beer,apples2,chulo,dolphin9,heather6,198206,198207,hergood,miracle1,njhyflj,4real,milka,silverfi,fabfive,spring12,ermine,mammy,jumpjet,adilbek,toscana,caustic,hotlove,sammy69,lolita1,byoung,whipme,barney01,mistys,tree1,buster3,kaylin,gfccgjhn,132333,aishiteru,pangaea,fathead1,smurph,198701,ryslan,gasto,xexeylhf,anisimov,chevyss,saskatoo,brandy12,tweaker,irish123,music2,denny1,palpatin,outlaw1,lovesuck,woman1,mrpibb,diadora,hfnfneq,poulette,harlock,mclaren1,cooper12,newpass3,bobby12,rfgecnfcerf,alskdjfh,mini14,dukers,raffael,199103,cleo123,1234567qwertyu,mossberg,scoopy,dctulf,starline,hjvjxrf,misfits1,rangers2,bilbos,blackhea,pappnase,atwork,purple2,daywalker,summoner,1jjjjjjj,swansong,chris10,laluna,12345qqq,charly1,lionsden,money99,silver33,hoghead,bdaddy,199430,saisg002,nosaints,tirpitz,1gggggg,jason13,kingss,ernest1,0cdh0v99ue,pkunzip,arowana,spiri,deskjet1,armine,lances,magic2,thetaxi,14159265,cacique,14142135,orange10,richard0,backdraf,255ooo,humtum,kohsamui,c43dae874d,wrestling1,cbhtym,sorento,megha,pepsiman,qweqwe12,bliss7,mario64,korolev,balls123,schlange,gordit,optiquest,fatdick,fish99,richy,nottoday,dianne1,armyof1,1234qwerasdfzxcv,bbonds,aekara,lidiya,baddog1,yellow5,funkie,ryan01,greentree,gcheckout,marshal1,liliput,000000z,rfhbyrf,gtogto43,rumpole,tarado,marcelit,aqwzsxedc,kenshin1,sassydog,system12,belly1,zilla,kissfan,tools1,desember,donsdad,nick11,scorpio6,poopoo1,toto99,steph123,dogfuck,rocket21,thx113,dude12,sanek,sommar,smacky,pimpsta,letmego,k1200rs,lytghjgtnhjdcr,abigale,buddog,deles,baseball9,roofus,carlsbad,hamzah,hereiam,genial,schoolgirlie,yfz450,breads,piesek,washear,chimay,apocalyp,nicole18,gfgf1234,gobulls,dnevnik,wonderwall,beer1234,1moose,beer69,maryann1,adpass,mike34,birdcage,hottuna,gigant,penquin,praveen,donna123,123lol123,thesame,fregat,adidas11,selrahc,pandoras,test3,chasmo,111222333000,pecos,daniel11,ingersol,shana1,mama12345,cessna15,myhero,1simpson,nazarenko,cognit,seattle2,irina1,azfpc310,rfycthdf,hardy1,jazmyn,sl1200,hotlanta,jason22,kumar123,sujatha,fsd9shtyu,highjump,changer,entertai,kolding,mrbig,sayuri,eagle21,qwertzu,jorge1,0101dd,bigdong,ou812a,sinatra1,htcnjhfy,oleg123,videoman,pbyfblf,tv612se,bigbird1,kenaidog,gunite,silverma,ardmore,123123qq,hotbot,cascada,cbr600f4,harakiri,chico123,boscos,aaron12,glasgow1,kmn5hc,lanfear,1light,liveoak,fizika,ybrjkftdyf,surfside,intermilan,multipas,redcard,72chevy,balata,coolio1,schroede,kanat,testerer,camion,kierra,hejmeddig,antonio2,tornados,isidor,pinkey,n8skfswa,ginny1,houndog,1bill,chris25,hastur,1marine,greatdan,french1,hatman,123qqq,z1z2z3z4,kicker1,katiedog,usopen,smith22,mrmagoo,1234512i,assa123,7seven7,monster7,june12,bpvtyf,149521,guenter,alex1985,voronina,mbkugegs,zaqwsxcderfv,rusty5,mystic1,master0,abcdef12,jndfkb,r4zpm3,cheesey,skripka,blackwhite,sharon69,dro8smwq,lektor,techman,boognish,deidara,heckfyf,quietkey,authcode,monkey4,jayboy,pinkerto,merengue,chulita,bushwick,turambar,kittykit,joseph2,dad123,kristo,pepote,scheiss,hambone1,bigballa,restaura,tequil,111luzer,euro2000,motox,denhaag,chelsi,flaco1,preeti,lillo,1001sin,passw,august24,beatoff,555555d,willis1,kissthis,qwertyz,rvgmw2gl,iloveboobies,timati,kimbo,msinfo,dewdrop,sdbaker,fcc5nky2,messiah1,catboy,small1,chode,beastie1,star77,hvidovre,short1,xavie,dagobah,alex1987,papageno,dakota2,toonami,fuerte,jesus33,lawina,souppp,dirtybir,chrish,naturist,channel1,peyote,flibble,gutentag,lactate,killem,zucchero,robinho,ditka,grumpy1,avr7000,boxxer,topcop,berry1,mypass1,beverly1,deuce1,9638527410,cthuttdf,kzkmrf,lovethem,band1t,cantona1,purple11,apples123,wonderwo,123a456,fuzzie,lucky99,dancer2,hoddling,rockcity,winner12,spooty,mansfiel,aimee1,287hf71h,rudiger,culebra,god123,agent86,daniel0,bunky1,notmine,9ball,goofus,puffy1,xyh28af4,kulikov,bankshot,vurdf5i2,kevinm,ercole,sexygirls,razvan,october7,goater,lollie,raissa,thefrog,mdmaiwa3,mascha,jesussaves,union1,anthony9,crossroa,brother2,areyuke,rodman91,toonsex,dopeman,gericom,vaz2115,cockgobbler,12356789,12345699,signatur,alexandra1,coolwhip,erwin1,awdrgyjilp,pens66,ghjrjgtyrj,linkinpark,emergenc,psych0,blood666,bootmort,wetworks,piroca,johnd,iamthe1,supermario,homer69,flameon,image1,bebert,fylhtq1,annapoli,apple11,hockey22,10048,indahouse,mykiss,1penguin,markp,misha123,foghat,march11,hank1,santorin,defcon4,tampico,vbnhjafy,robert22,bunkie,athlon64,sex777,nextdoor,koskesh,lolnoob,seemnemaailm,black23,march15,yeehaa,chiqui,teagan,siegheil,monday2,cornhusk,mamusia,chilis,sthgrtst,feldspar,scottm,pugdog,rfghjy,micmac,gtnhjdyf,terminato,1jackson,kakosja,bogomol,123321aa,rkbvtyrj,tresor,tigertig,fuckitall,vbkkbjy,caramon,zxc12,balin,dildo1,soccer09,avata,abby123,cheetah1,marquise,jennyc,hondavfr,tinti,anna1985,dennis2,jorel,mayflowe,icema,hal2000,nikkis,bigmouth,greenery,nurjan,leonov,liberty7,fafnir,larionov,sat321321,byteme1,nausicaa,hjvfynbrf,everto,zebra123,sergio1,titone,wisdom1,kahala,104328q,marcin1,salima,pcitra,1nnnnn,nalini,galvesto,neeraj,rick1,squeeky,agnes1,jitterbu,agshar,maria12,0112358,traxxas,stivone,prophet1,bananza,sommer1,canoneos,hotfun,redsox11,1bigmac,dctdjkjl,legion1,everclea,valenok,black9,danny001,roxie1,1theman,mudslide,july16,lechef,chula,glamis,emilka,canbeef,ioanna,cactus1,rockshox,im2cool,ninja9,thvfrjdf,june28,milo17,missyou,micky1,nbibyf,nokiaa,goldi,mattias,fuckthem,asdzxc123,ironfist,junior01,nesta,crazzy,killswit,hygge,zantac,kazama,melvin1,allston,maandag,hiccup,prototyp,specboot,dwl610,hello6,159456,baldhead,redwhite,calpoly,whitetail,agile1,cousteau,matt01,aust1n,malcolmx,gjlfhjr,semperf1,ferarri,a1b2c3d,vangelis,mkvdari,bettis36,andzia,comand,tazzman,morgaine,pepluv,anna1990,inandout,anetka,anna1997,wallpape,moonrake,huntress,hogtie,cameron7,sammy7,singe11,clownboy,newzeala,wilmar,safrane,rebeld,poopi,granat,hammertime,nermin,11251422,xyzzy1,bogeys,jkmxbr,fktrcfyl,11223311,nfyrbcn,11223300,powerpla,zoedog,ybrbnbyf,zaphod42,tarawa,jxfhjdfirf,dude1234,g5wks9,goobe,czekolada,blackros,amaranth,medical1,thereds,julija,nhecsyfujkjdt,promopas,buddy4,marmalad,weihnachten,tronic,letici,passthief,67mustan,ds7zamnw,morri,w8woord,cheops,pinarell,sonofsam,av473dv,sf161pn,5c92v5h6,purple13,tango123,plant1,1baby,xufrgemw,fitta,1rangers,spawns,kenned,taratata,19944991,11111118,coronas,4ebouux8,roadrash,corvette1,dfyjdf846,marley12,qwaszxerdfcv,68stang,67stang,racin,ellehcim,sofiko,nicetry,seabass1,jazzman1,zaqwsx1,laz2937,uuuuuuu1,vlad123,rafale,j1234567,223366,nnnnnn1,226622,junkfood,asilas,cer980,daddymac,persepho,neelam,00700,shithappens,255555,qwertyy,xbox36,19755791,qweasd1,bearcub,jerryb,a1b1c1,polkaudio,basketball1,456rty,1loveyou,marcus2,mama1961,palace1,transcend,shuriken,sudhakar,teenlove,anabelle,matrix99,pogoda,notme,bartend,jordana,nihaoma,ataris,littlegi,ferraris,redarmy,giallo,fastdraw,accountbloc,peludo,pornostar,pinoyako,cindee,glassjaw,dameon,johnnyd,finnland,saudade,losbravo,slonko,toplay,smalltit,nicksfun,stockhol,penpal,caraj,divedeep,cannibus,poppydog,pass88,viktory,walhalla,arisia,lucozade,goldenbo,tigers11,caball,ownage123,tonna,handy1,johny,capital5,faith2,stillher,brandan,pooky1,antananarivu,hotdick,1justin,lacrimos,goathead,bobrik,cgtwbfkbcn,maywood,kamilek,gbplf123,gulnar,beanhead,vfvjyn,shash,viper69,ttttttt1,hondacr,kanako,muffer,dukies,justin123,agapov58,mushka,bad11bad,muleman,jojo123,andreika,makeit,vanill,boomers,bigals,merlin11,quacker,aurelien,spartak1922,ligeti,diana2,lawnmowe,fortune1,awesom,rockyy,anna1994,oinker,love88,eastbay,ab55484,poker0,ozzy666,papasmurf,antihero,photogra,ktm250,painkill,jegr2d2,p3orion,canman,dextur,qwest123,samboy,yomismo,sierra01,herber,vfrcbvvfrcbv,gloria1,llama1,pie123,bobbyjoe,buzzkill,skidrow,grabber,phili,javier1,9379992q,geroin,oleg1994,sovereig,rollover,zaq12qaz,battery1,killer13,alina123,groucho1,mario12,peter22,butterbean,elise1,lucycat,neo123,ferdi,golfer01,randie,gfhfyjbr,ventura1,chelsea3,pinoy,mtgox,yrrim7,shoeman,mirko,ffggyyo,65mustan,ufdibyjd,john55,suckfuck,greatgoo,fvfnjhb,mmmnnn,love20,1bullshi,sucesso,easy1234,robin123,rockets1,diamondb,wolfee,nothing0,joker777,glasnost,richar1,guille,sayan,koresh,goshawk,alexx,batman21,a123456b,hball,243122,rockandr,coolfool,isaia,mary1,yjdbrjdf,lolopc,cleocat,cimbo,lovehina,8vfhnf,passking,bonapart,diamond2,bigboys,kreator,ctvtyjdf,sassy123,shellac,table54781,nedkelly,philbert,sux2bu,nomis,sparky99,python1,littlebear,numpty,silmaril,sweeet,jamesw,cbufhtnf,peggysue,wodahs,luvsex,wizardry,venom123,love4you,bama1,samat,reviewpass,ned467,cjkjdtq,mamula,gijoe,amersham,devochka,redhill,gisel,preggo,polock,cando,rewster,greenlantern,panasonik,dave1234,mikeee,1carlos,miledi,darkness1,p0o9i8u7y6,kathryn1,happyguy,dcp500,assmaster,sambuka,sailormo,antonio3,logans,18254288,nokiax2,qwertzuiop,zavilov,totti,xenon1,edward11,targa1,something1,tony_t,q1w2e3r4t5y6u7i8o9p0,02551670,vladimir1,monkeybutt,greenda,neel21,craiger,saveliy,dei008,honda450,fylhtq95,spike2,fjnq8915,passwordstandard,vova12345,talonesi,richi,gigemags,pierre1,westin,trevoga,dorothee,bastogne,25563o,brandon3,truegrit,krimml,iamgreat,servis,a112233,paulinka,azimuth,corperfmonsy,358hkyp,homerun1,dogbert1,eatmyass,cottage1,savina,baseball7,bigtex,gimmesum,asdcxz,lennon1,a159357,1bastard,413276191q,pngfilt,pchealth,netsnip,bodiroga,1matt,webtvs,ravers,adapters,siddis,mashamasha,coffee2,myhoney,anna1982,marcia1,fairchil,maniek,iloveluc,batmonh,wildon,bowie1,netnwlnk,fancy1,tom204,olga1976,vfif123,queens1,ajax01,lovess,mockba,icam4usb,triada,odinthor,rstlne,exciter,sundog,anchorat,girls69,nfnmzyrf,soloma,gti16v,shadowman,ottom,rataros,tonchin,vishal,chicken0,pornlo,christiaan,volante,likesit,mariupol,runfast,gbpltw123,missys,villevalo,kbpjxrf,ghibli,calla,cessna172,kinglear,dell11,swift1,walera,1cricket,pussy5,turbo911,tucke,maprchem56458,rosehill,thekiwi1,ygfxbkgt,mandarinka,98xa29,magnit,cjfrf,paswoord,grandam1,shenmue,leedsuni,hatrick,zagadka,angeldog,michaell,dance123,koichi,bballs,29palms,xanth,228822,ppppppp1,1kkkkk,1lllll,mynewbots,spurss,madmax1,224455,city1,mmmmmmm1,nnnnnnn1,biedronka,thebeatles,elessar,f14tomcat,jordan18,bobo123,ayi000,tedbear,86chevyx,user123,bobolink,maktub,elmer1,flyfishi,franco1,gandalf0,traxdata,david21,enlighte,dmitrij,beckys,1giants,flippe,12345678w,jossie,rugbyman,snowcat,rapeme,peanut11,gemeni,udders,techn9ne,armani1,chappie,war123,vakantie,maddawg,sewanee,jake5253,tautt1,anthony5,letterma,jimbo2,kmdtyjr,hextall,jessica6,amiga500,hotcunt,phoenix9,veronda,saqartvelo,scubas,sixer3,williamj,nightfal,shihan,melnikova,kosssss,handily,killer77,jhrl0821,march17,rushman,6gcf636i,metoyou,irina123,mine11,primus1,formatters,matthew5,infotech,gangster1,jordan45,moose69,kompas,motoxxx,greatwhi,cobra12,kirpich,weezer1,hello23,montse,tracy123,connecte,cjymrf,hemingwa,azreal,gundam00,mobila,boxman,slayers1,ravshan,june26,fktrcfylhjd,bermuda1,tylerd,maersk,qazwsx11,eybdthcbntn,ash123,camelo,kat123,backd00r,cheyenne1,1king,jerkin,tnt123,trabant,warhammer40k,rambos,punto,home77,pedrito,1frank,brille,guitarman,george13,rakas,tgbxtcrbq,flute1,bananas1,lovezp1314,thespot,postie,buster69,sexytime,twistys,zacharia,sportage,toccata,denver7,terry123,bogdanova,devil69,higgins1,whatluck,pele10,kkk666,jeffery1,1qayxsw2,riptide1,chevy11,munchy,lazer1,hooker1,ghfgjh,vergesse,playgrou,4077mash,gusev,humpin,oneputt,hydepark,monster9,tiger8,tangsoo,guy123,hesoyam1,uhtqneyu,thanku,lomond,ortezza,kronik,geetha,rabbit66,killas,qazxswe,alabaste,1234567890qwerty,capone1,andrea12,geral,beatbox,slutfuck,booyaka,jasmine7,ostsee,maestro1,beatme,tracey1,buster123,donaldduck,ironfish,happy6,konnichi,gintonic,momoney1,dugan1,today2,enkidu,destiny2,trim7gun,katuha,fractals,morganstanley,polkadot,gotime,prince11,204060,fifa2010,bobbyt,seemee,amanda10,airbrush,bigtitty,heidie,layla1,cotton1,5speed,fyfnjkmtdyf,flynavy,joxury8f,meeko,akuma,dudley1,flyboy1,moondog1,trotters,mariami,signin,chinna,legs11,pussy4,1s1h1e1f1,felici,optimus1,iluvu,marlins1,gavaec,balance1,glock40,london01,kokot,southwes,comfort1,sammy11,rockbottom,brianc,litebeer,homero,chopsuey,greenlan,charit,freecell,hampster,smalldog,viper12,blofeld,1234567890987654321,realsex,romann,cartman2,cjdthitycndj,nelly1,bmw528,zwezda,masterba,jeep99,turtl,america2,sunburst,sanyco,auntjudy,125wm,blue10,qwsazx,cartma,toby12,robbob,red222,ilovecock,losfix16,1explore,helge,vaz2114,whynotme,baba123,mugen,1qazwsxedc,albertjr,0101198,sextime,supras,nicolas2,wantsex,pussy6,checkm8,winam,24gordon,misterme,curlew,gbljhfcs,medtech,franzi,butthea,voivod,blackhat,egoiste,pjkeirf,maddog69,pakalolo,hockey4,igor1234,rouges,snowhite,homefree,sexfreak,acer12,dsmith,blessyou,199410,vfrcbvjd,falco02,belinda1,yaglasph,april21,groundho,jasmin1,nevergiveup,elvir,gborv526,c00kie,emma01,awesome2,larina,mike12345,maximu,anupam,bltynbabrfwbz,tanushka,sukkel,raptor22,josh12,schalke04,cosmodog,fuckyou8,busybee,198800,bijoux,frame1,blackmor,giveit,issmall,bear13,123-123,bladez,littlegirl,ultra123,fletch1,flashnet,loploprock,rkelly,12step,lukas1,littlewhore,cuntfinger,stinkyfinger,laurenc,198020,n7td4bjl,jackie69,camel123,ben1234,1gateway,adelheid,fatmike,thuglove,zzaaqq,chivas1,4815162342q,mamadou,nadano,james22,benwin,andrea99,rjirf,michou,abkbgg,d50gnn,aaazzz,a123654,blankman,booboo11,medicus,bigbone,197200,justine1,bendix,morphius,njhvjp,44mag,zsecyus56,goodbye1,nokiadermo,a333444,waratsea,4rzp8ab7,fevral,brillian,kirbys,minim,erathia,grazia,zxcvb1234,dukey,snaggle,poppi,hymen,1video,dune2000,jpthjdf,cvbn123,zcxfcnkbdfz,astonv,ginnie,316271,engine3,pr1ncess,64chevy,glass1,laotzu,hollyy,comicbooks,assasins,nuaddn9561,scottsda,hfcnfvfy,accobra,7777777z,werty123,metalhead,romanson,redsand,365214,shalo,arsenii,1989cc,sissi,duramax,382563,petera,414243,mamapap,jollymon,field1,fatgirl,janets,trompete,matchbox20,rambo2,nepenthe,441232,qwertyuiop10,bozo123,phezc419hv,romantika,lifestyl,pengui,decembre,demon6,panther6,444888,scanman,ghjcnjabkz,pachanga,buzzword,indianer,spiderman3,tony12,startre,frog1,fyutk,483422,tupacshakur,albert12,1drummer,bmw328i,green17,aerdna,invisibl,summer13,calimer,mustaine,lgnu9d,morefun,hesoyam123,escort1,scrapland,stargat,barabbas,dead13,545645,mexicali,sierr,gfhfpbn,gonchar,moonstafa,searock,counte,foster1,jayhawk1,floren,maremma,nastya2010,softball1,adaptec,halloo,barrabas,zxcasd123,hunny,mariana1,kafedra,freedom0,green420,vlad1234,method7,665566,tooting,hallo12,davinchi,conducto,medias,666444,invernes,madhatter,456asd,12345678i,687887,le33px,spring00,help123,bellybut,billy5,vitalik1,river123,gorila,bendis,power666,747200,footslav,acehigh,qazxswedc123,q1a1z1,richard9,peterburg,tabletop,gavrilov,123qwe1,kolosov,fredrau,run4fun,789056,jkbvgbflf,chitra,87654321q,steve22,wideopen,access88,surfe,tdfyutkbjy,impossib,kevin69,880888,cantina,887766,wxcvb,dontforg,qwer1209,asslicke,mamma123,indig,arkasha,scrapp,morelia,vehxbr,jones2,scratch1,cody11,cassie12,gerbera,dontgotm,underhil,maks2010,hollywood1,hanibal,elena2010,jason11,1010321,stewar,elaman,fireplug,goodby,sacrific,babyphat,bobcat12,bruce123,1233215,tony45,tiburo,love15,bmw750,wallstreet,2h0t4me,1346795,lamerz,munkee,134679q,granvill,1512198,armastus,aiden1,pipeutvj,g1234567,angeleyes,usmc1,102030q,putangina,brandnew,shadowfax,eagles12,1falcon,brianw,lokomoti,2022958,scooper,pegas,jabroni1,2121212,buffal,siffredi,wewiz,twotone,rosebudd,nightwis,carpet1,mickey2,2525252,sleddog,red333,jamesm,2797349,jeff12,onizuka,felixxxx,rf6666,fine1,ohlala,forplay,chicago5,muncho,scooby11,ptichka,johnnn,19851985p,dogphil3650,totenkopf,monitor2,macross7,3816778,dudder,semaj1,bounder,racerx1,5556633,7085506,ofclr278,brody1,7506751,nantucke,hedj2n4q,drew1,aessedai,trekbike,pussykat,samatron,imani,9124852,wiley1,dukenukem,iampurehaha2,9556035,obvious1,mccool24,apache64,kravchenko,justforf,basura,jamese,s0ccer,safado,darksta,surfer69,damian1,gjpbnbd,gunny1,wolley,sananton,zxcvbn123456,odt4p6sv8,sergei1,modem1,mansikka,zzzz1,rifraf,dima777,mary69,looking4,donttell,red100,ninjutsu,uaeuaeman,bigbri,brasco,queenas8151,demetri,angel007,bubbl,kolort,conny,antonia1,avtoritet,kaka22,kailayu,sassy2,wrongway,chevy3,1nascar,patriots1,chrisrey,mike99,sexy22,chkdsk,sd3utre7,padawan,a6pihd,doming,mesohorny,tamada,donatello,emma22,eather,susan69,pinky123,stud69,fatbitch,pilsbury,thc420,lovepuss,1creativ,golf1234,hurryup,1honda,huskerdu,marino1,gowron,girl1,fucktoy,gtnhjpfdjlcr,dkjfghdk,pinkfl,loreli,7777777s,donkeykong,rockytop,staples1,sone4ka,xxxjay,flywheel,toppdogg,bigbubba,aaa123456,2letmein,shavkat,paule,dlanor,adamas,0147852,aassaa,dixon1,bmw328,mother12,ilikepussy,holly2,tsmith,excaliber,fhutynbyf,nicole3,tulipan,emanue,flyvholm,currahee,godsgift,antonioj,torito,dinky1,sanna,yfcnzvjz,june14,anime123,123321456654,hanswurst,bandman,hello101,xxxyyy,chevy69,technica,tagada,arnol,v00d00,lilone,filles,drumandbass,dinamit,a1234a,eatmeat,elway07,inout,james6,dawid1,thewolf,diapason,yodaddy,qscwdv,fuckit1,liljoe,sloeber,simbacat,sascha1,qwe1234,1badger,prisca,angel17,gravedig,jakeyboy,longboard,truskawka,golfer11,pyramid7,highspee,pistola,theriver,hammer69,1packers,dannyd,alfonse,qwertgfdsa,11119999,basket1,ghjtrn,saralee,12inches,paolo1,zse4xdr5,taproot,sophieh6,grizzlie,hockey69,danang,biggums,hotbitch,5alive,beloved1,bluewave,dimon95,koketka,multiscan,littleb,leghorn,poker2,delite,skyfir,bigjake,persona1,amberdog,hannah12,derren,ziffle,1sarah,1assword,sparky01,seymur,tomtom1,123321qw,goskins,soccer19,luvbekki,bumhole,2balls,1muffin,borodin,monkey9,yfeiybrb,1alex,betmen,freder,nigger123,azizbek,gjkzrjdf,lilmike,1bigdadd,1rock,taganrog,snappy1,andrey1,kolonka,bunyan,gomango,vivia,clarkkent,satur,gaudeamus,mantaray,1month,whitehea,fargus,andrew99,ray123,redhawks,liza2009,qw12345,den12345,vfhnsyjdf,147258369a,mazepa,newyorke,1arsenal,hondas2000,demona,fordgt,steve12,birthday2,12457896,dickster,edcwsxqaz,sahalin,pantyman,skinny1,hubertus,cumshot1,chiro,kappaman,mark3434,canada12,lichking,bonkers1,ivan1985,sybase,valmet,doors1,deedlit,kyjelly,bdfysx,ford11,throatfuck,backwood,fylhsq,lalit,boss429,kotova,bricky,steveh,joshua19,kissa,imladris,star1234,lubimka,partyman,crazyd,tobias1,ilike69,imhome,whome,fourstar,scanner1,ujhjl312,anatoli,85bears,jimbo69,5678ytr,potapova,nokia7070,sunday1,kalleank,1996gta,refinnej,july1,molodec,nothanks,enigm,12play,sugardog,nhfkbdfkb,larousse,cannon1,144444,qazxcdew,stimorol,jhereg,spawn7,143000,fearme,hambur,merlin21,dobie,is3yeusc,partner1,dekal,varsha,478jfszk,flavi,hippo1,9hmlpyjd,july21,7imjfstw,lexxus,truelov,nokia5200,carlos6,anais,mudbone,anahit,taylorc,tashas,larkspur,animal2000,nibiru,jan123,miyvarxar,deflep,dolore,communit,ifoptfcor,laura2,anadrol,mamaliga,mitzi1,blue92,april15,matveev,kajlas,wowlook1,1flowers,shadow14,alucard1,1golf,bantha,scotlan,singapur,mark13,manchester1,telus01,superdav,jackoff1,madnes,bullnuts,world123,clitty,palmer1,david10,spider10,sargsyan,rattlers,david4,windows2,sony12,visigoth,qqqaaa,penfloor,cabledog,camilla1,natasha123,eagleman,softcore,bobrov,dietmar,divad,sss123,d1234567,tlbyjhju,1q1q1q1,paraiso,dav123,lfiekmrf,drachen,lzhan16889,tplate,gfghbrf,casio1,123boots1,123test,sys64738,heavymetal,andiamo,meduza,soarer,coco12,negrita,amigas,heavymet,bespin,1asdfghj,wharfrat,wetsex,tight1,janus1,sword123,ladeda,dragon98,austin2,atep1,jungle1,12345abcd,lexus300,pheonix1,alex1974,123qw123,137955,bigtim,shadow88,igor1994,goodjob,arzen,champ123,121ebay,changeme1,brooksie,frogman1,buldozer,morrowin,achim,trish1,lasse,festiva,bubbaman,scottb,kramit,august22,tyson123,passsword,oompah,al123456,fucking1,green45,noodle1,looking1,ashlynn,al1716,stang50,coco11,greese,bob111,brennan1,jasonj,1cherry,1q2345,1xxxxxxx,fifa2011,brondby,zachar1,satyam,easy1,magic7,1rainbow,cheezit,1eeeeeee,ashley123,assass1,amanda123,jerbear,1bbbbbb,azerty12,15975391,654321z,twinturb,onlyone1,denis1988,6846kg3r,jumbos,pennydog,dandelion,haileris,epervier,snoopy69,afrodite,oldpussy,green55,poopypan,verymuch,katyusha,recon7,mine69,tangos,contro,blowme2,jade1,skydive1,fiveiron,dimo4ka,bokser,stargirl,fordfocus,tigers2,platina,baseball11,raque,pimper,jawbreak,buster88,walter34,chucko,penchair,horizon1,thecure1,scc1975,adrianna1,kareta,duke12,krille,dumbfuck,cunt1,aldebaran,laverda,harumi,knopfler,pongo1,pfhbyf,dogman1,rossigno,1hardon,scarlets,nuggets1,ibelieve,akinfeev,xfhkbr,athene,falcon69,happie,billly,nitsua,fiocco,qwerty09,gizmo2,slava2,125690,doggy123,craigs,vader123,silkeborg,124365,peterm,123978,krakatoa,123699,123592,kgvebmqy,pensacol,d1d2d3,snowstor,goldenboy,gfg65h7,ev700,church1,orange11,g0dz1ll4,chester3,acheron,cynthi,hotshot1,jesuschris,motdepass,zymurgy,one2one,fietsbel,harryp,wisper,pookster,nn527hp,dolla,milkmaid,rustyboy,terrell1,epsilon1,lillian1,dale3,crhbgrf,maxsim,selecta,mamada,fatman1,ufkjxrf,shinchan,fuckuall,women1,000008,bossss,greta1,rbhjxrf,mamasboy,purple69,felicidade,sexy21,cathay,hunglow,splatt,kahless,shopping1,1gandalf,themis,delta7,moon69,blue24,parliame,mamma1,miyuki,2500hd,jackmeof,razer,rocker1,juvis123,noremac,boing747,9z5ve9rrcz,icewater,titania,alley1,moparman,christo1,oliver2,vinicius,tigerfan,chevyy,joshua99,doda99,matrixx,ekbnrf,jackfrost,viper01,kasia,cnfhsq,triton1,ssbt8ae2,rugby8,ramman,1lucky,barabash,ghtlfntkm,junaid,apeshit,enfant,kenpo1,shit12,007000,marge1,shadow10,qwerty789,richard8,vbitkm,lostboys,jesus4me,richard4,hifive,kolawole,damilola,prisma,paranoya,prince2,lisaann,happyness,cardss,methodma,supercop,a8kd47v5,gamgee,polly123,irene1,number8,hoyasaxa,1digital,matthew0,dclxvi,lisica,roy123,2468013579,sparda,queball,vaffanculo,pass1wor,repmvbx,999666333,freedom8,botanik,777555333,marcos1,lubimaya,flash2,einstei,08080,123456789j,159951159,159357123,carrot1,alina1995,sanjos,dilara,mustang67,wisteria,jhnjgtl12,98766789,darksun,arxangel,87062134,creativ1,malyshka,fuckthemall,barsic,rocksta,2big4u,5nizza,genesis2,romance1,ofcourse,1horse,latenite,cubana,sactown,789456123a,milliona,61808861,57699434,imperia,bubba11,yellow3,change12,55495746,flappy,jimbo123,19372846,19380018,cutlass1,craig123,klepto,beagle1,solus,51502112,pasha1,19822891,46466452,19855891,petshop,nikolaevna,119966,nokia6131,evenpar,hoosier1,contrasena,jawa350,gonzo123,mouse2,115511,eetfuk,gfhfvgfvgfv,1crystal,sofaking,coyote1,kwiatuszek,fhrflbq,valeria1,anthro,0123654789,alltheway,zoltar,maasikas,wildchil,fredonia,earlgrey,gtnhjczy,matrix123,solid1,slavko,12monkeys,fjdksl,inter1,nokia6500,59382113kevinp,spuddy,cachero,coorslit,password!,kiba1z,karizma,vova1994,chicony,english1,bondra12,1rocket,hunden,jimbob1,zpflhjn1,th0mas,deuce22,meatwad,fatfree,congas,sambora,cooper2,janne,clancy1,stonie,busta,kamaz,speedy2,jasmine3,fahayek,arsenal0,beerss,trixie1,boobs69,luansantana,toadman,control2,ewing33,maxcat,mama1964,diamond4,tabaco,joshua0,piper2,music101,guybrush,reynald,pincher,katiebug,starrs,pimphard,frontosa,alex97,cootie,clockwor,belluno,skyeseth,booty69,chaparra,boochie,green4,bobcat1,havok,saraann,pipeman,aekdb,jumpshot,wintermu,chaika,1chester,rjnjatq,emokid,reset1,regal1,j0shua,134679a,asmodey,sarahh,zapidoo,ciccione,sosexy,beckham23,hornets1,alex1971,delerium,manageme,connor11,1rabbit,sane4ek,caseyboy,cbljhjdf,redsox20,tttttt99,haustool,ander,pantera6,passwd1,journey1,9988776655,blue135,writerspace,xiaoyua123,justice2,niagra,cassis,scorpius,bpgjldsgjldthnf,gamemaster,bloody1,retrac,stabbin,toybox,fight1,ytpyf.,glasha,va2001,taylor11,shameles,ladylove,10078,karmann,rodeos,eintritt,lanesra,tobasco,jnrhjqcz,navyman,pablit,leshka,jessica3,123vika,alena1,platinu,ilford,storm7,undernet,sasha777,1legend,anna2002,kanmax1994,porkpie,thunder0,gundog,pallina,easypass,duck1,supermom,roach1,twincam,14028,tiziano,qwerty32,123654789a,evropa,shampoo1,yfxfkmybr,cubby1,tsunami1,fktrcttdf,yasacrac,17098,happyhap,bullrun,rodder,oaktown,holde,isbest,taylor9,reeper,hammer11,julias,rolltide1,compaq123,fourx4,subzero1,hockey9,7mary3,busines,ybrbnjcbr,wagoneer,danniash,portishead,digitex,alex1981,david11,infidel,1snoopy,free30,jaden,tonto1,redcar27,footie,moskwa,thomas21,hammer12,burzum,cosmo123,50000,burltree,54343,54354,vwpassat,jack5225,cougars1,burlpony,blackhorse,alegna,petert,katemoss,ram123,nels0n,ferrina,angel77,cstock,1christi,dave55,abc123a,alex1975,av626ss,flipoff,folgore,max1998,science1,si711ne,yams7,wifey1,sveiks,cabin1,volodia,ox3ford,cartagen,platini,picture1,sparkle1,tiedomi,service321,wooody,christi1,gnasher,brunob,hammie,iraffert,bot2010,dtcyeirf,1234567890p,cooper11,alcoholi,savchenko,adam01,chelsea5,niewiem,icebear,lllooottt,ilovedick,sweetpus,money8,cookie13,rfnthbyf1988,booboo2,angus123,blockbus,david9,chica1,nazaret,samsung9,smile4u,daystar,skinnass,john10,thegirl,sexybeas,wasdwasd1,sigge1,1qa2ws3ed4rf5tg,czarny,ripley1,chris5,ashley19,anitha,pokerman,prevert,trfnthby,tony69,georgia2,stoppedb,qwertyuiop12345,miniclip,franky1,durdom,cabbages,1234567890o,delta5,liudmila,nhfycajhvths,court1,josiew,abcd1,doghead,diman,masiania,songline,boogle,triston,deepika,sexy4me,grapple,spacebal,ebonee,winter0,smokewee,nargiza,dragonla,sassys,andy2000,menards,yoshio,massive1,suckmy1k,passat99,sexybo,nastya1996,isdead,stratcat,hokuto,infix,pidoras,daffyduck,cumhard,baldeagl,kerberos,yardman,shibainu,guitare,cqub6553,tommyy,bk.irf,bigfoo,hecto,july27,james4,biggus,esbjerg,isgod,1irish,phenmarr,jamaic,roma1990,diamond0,yjdbrjd,girls4me,tampa1,kabuto,vaduz,hanse,spieng,dianochka,csm101,lorna1,ogoshi,plhy6hql,2wsx4rfv,cameron0,adebayo,oleg1996,sharipov,bouboule,hollister1,frogss,yeababy,kablam,adelante,memem,howies,thering,cecilia1,onetwo12,ojp123456,jordan9,msorcloledbr,neveraga,evh5150,redwin,1august,canno,1mercede,moody1,mudbug,chessmas,tiikeri,stickdaddy77,alex15,kvartira,7654321a,lollol123,qwaszxedc,algore,solana,vfhbyfvfhbyf,blue72,misha1111,smoke20,junior13,mogli,threee,shannon2,fuckmylife,kevinh,saransk,karenw,isolde,sekirarr,orion123,thomas0,debra1,laketaho,alondra,curiva,jazz1234,1tigers,jambos,lickme2,suomi,gandalf7,028526,zygote,brett123,br1ttany,supafly,159000,kingrat,luton1,cool-ca,bocman,thomasd,skiller,katter,mama777,chanc,tomass,1rachel,oldno7,rfpfyjdf,bigkev,yelrah,primas,osito,kipper1,msvcr71,bigboy11,thesun,noskcaj,chicc,sonja1,lozinka,mobile1,1vader,ummagumma,waves1,punter12,tubgtn,server1,irina1991,magic69,dak001,pandemonium,dead1,berlingo,cherrypi,1montana,lohotron,chicklet,asdfgh123456,stepside,ikmvw103,icebaby,trillium,1sucks,ukrnet,glock9,ab12345,thepower,robert8,thugstools,hockey13,buffon,livefree,sexpics,dessar,ja0000,rosenrot,james10,1fish,svoloch,mykitty,muffin11,evbukb,shwing,artem1992,andrey1992,sheldon1,passpage,nikita99,fubar123,vannasx,eight888,marial,max2010,express2,violentj,2ykn5ccf,spartan11,brenda69,jackiech,abagail,robin2,grass1,andy76,bell1,taison,superme,vika1995,xtr451,fred20,89032073168,denis1984,2000jeep,weetabix,199020,daxter,tevion,panther8,h9iymxmc,bigrig,kalambur,tsalagi,12213443,racecar02,jeffrey4,nataxa,bigsam,purgator,acuracl,troutbum,potsmoke,jimmyz,manutd1,nytimes,pureevil,bearss,cool22,dragonage,nodnarb,dbrbyu,4seasons,freude,elric1,werule,hockey14,12758698,corkie,yeahright,blademan,tafkap,clave,liziko,hofner,jeffhardy,nurich,runne,stanisla,lucy1,monk3y,forzaroma,eric99,bonaire,blackwoo,fengshui,1qaz0okm,newmoney,pimpin69,07078,anonymer,laptop1,cherry12,ace111,salsa1,wilbur1,doom12,diablo23,jgtxzbhr,under1,honda01,breadfan,megan2,juancarlos,stratus1,ackbar,love5683,happytim,lambert1,cbljhtyrj,komarov,spam69,nfhtkrf,brownn,sarmat,ifiksr,spike69,hoangen,angelz,economia,tanzen,avogadro,1vampire,spanners,mazdarx,queequeg,oriana,hershil,sulaco,joseph11,8seconds,aquariu,cumberla,heather9,anthony8,burton12,crystal0,maria3,qazwsxc,snow123,notgood,198520,raindog,heehaw,consulta,dasein,miller01,cthulhu1,dukenuke,iubire,baytown,hatebree,198505,sistem,lena12,welcome01,maraca,middleto,sindhu,mitsou,phoenix5,vovan,donaldo,dylandog,domovoy,lauren12,byrjuybnj,123llll,stillers,sanchin,tulpan,smallvill,1mmmmm,patti1,folgers,mike31,colts18,123456rrr,njkmrjz,phoenix0,biene,ironcity,kasperok,password22,fitnes,matthew6,spotligh,bujhm123,tommycat,hazel5,guitar11,145678,vfcmrf,compass1,willee,1barney,jack2000,littleminge,shemp,derrek,xxx12345,littlefuck,spuds1,karolinka,camneely,qwertyu123,142500,brandon00,munson15,falcon3,passssap,z3cn2erv,goahead,baggio10,141592,denali1,37kazoo,copernic,123456789asd,orange88,bravada,rush211,197700,pablo123,uptheass,samsam1,demoman,mattylad10,heydude,mister2,werken,13467985,marantz,a22222,f1f2f3f4,fm12mn12,gerasimova,burrito1,sony1,glenny,baldeagle,rmfidd,fenomen,verbati,forgetme,5element,wer138,chanel1,ooicu812,10293847qp,minicooper,chispa,myturn,deisel,vthrehbq,boredboi4u,filatova,anabe,poiuyt1,barmalei,yyyy1,fourkids,naumenko,bangbros,pornclub,okaykk,euclid90,warrior3,kornet,palevo,patatina,gocart,antanta,jed1054,clock1,111111w,dewars,mankind1,peugeot406,liten,tahira,howlin,naumov,rmracing,corone,cunthole,passit,rock69,jaguarxj,bumsen,197101,sweet2,197010,whitecat,sawadee,money100,yfhrjnbrb,andyboy,9085603566,trace1,fagget,robot1,angel20,6yhn7ujm,specialinsta,kareena,newblood,chingada,boobies2,bugger1,squad51,133andre,call06,ashes1,ilovelucy,success2,kotton,cavalla,philou,deebee,theband,nine09,artefact,196100,kkkkkkk1,nikolay9,onelov,basia,emilyann,sadman,fkrjujkbr,teamomuch,david777,padrino,money21,firdaus,orion3,chevy01,albatro,erdfcv,2legit,sarah7,torock,kevinn,holio,soloy,enron714,starfleet,qwer11,neverman,doctorwh,lucy11,dino12,trinity7,seatleon,o123456,pimpman,1asdfgh,snakebit,chancho,prorok,bleacher,ramire,darkseed,warhorse,michael123,1spanky,1hotdog,34erdfcv,n0th1ng,dimanche,repmvbyf,michaeljackson,login1,icequeen,toshiro,sperme,racer2,veget,birthday26,daniel9,lbvekmrf,charlus,bryan123,wspanic,schreibe,1andonly,dgoins,kewell,apollo12,egypt1,fernie,tiger21,aa123456789,blowj,spandau,bisquit,12345678d,deadmau5,fredie,311420,happyface,samant,gruppa,filmstar,andrew17,bakesale,sexy01,justlook,cbarkley,paul11,bloodred,rideme,birdbath,nfkbcvfy,jaxson,sirius1,kristof,virgos,nimrod1,hardc0re,killerbee,1abcdef,pitcher1,justonce,vlada,dakota99,vespucci,wpass,outside1,puertori,rfvbkf,teamlosi,vgfun2,porol777,empire11,20091989q,jasong,webuivalidat,escrima,lakers08,trigger2,addpass,342500,mongini,dfhtybr,horndogg,palermo1,136900,babyblu,alla98,dasha2010,jkelly,kernow,yfnecz,rockhopper,toeman,tlaloc,silver77,dave01,kevinr,1234567887654321,135642,me2you,8096468644q,remmus,spider7,jamesa,jilly,samba1,drongo,770129ji,supercat,juntas,tema1234,esthe,1234567892000,drew11,qazqaz123,beegees,blome,rattrace,howhigh,tallboy,rufus2,sunny2,sou812,miller12,indiana7,irnbru,patch123,letmeon,welcome5,nabisco,9hotpoin,hpvteb,lovinit,stormin,assmonke,trill,atlanti,money1234,cubsfan,mello1,stars2,ueptkm,agate,dannym88,lover123,wordz,worldnet,julemand,chaser1,s12345678,pissword,cinemax,woodchuc,point1,hotchkis,packers2,bananana,kalender,420666,penguin8,awo8rx3wa8t,hoppie,metlife,ilovemyfamily,weihnachtsbau,pudding1,luckystr,scully1,fatboy1,amizade,dedham,jahbless,blaat,surrende,****er,1panties,bigasses,ghjuhfvbcn,asshole123,dfktyrb,likeme,nickers,plastik,hektor,deeman,muchacha,cerebro,santana5,testdrive,dracula1,canalc,l1750sq,savannah1,murena,1inside,pokemon00,1iiiiiii,jordan20,sexual1,mailliw,calipso,014702580369,1zzzzzz,1jjjjjj,break1,15253545,yomama1,katinka,kevin11,1ffffff,martijn,sslazio,daniel5,porno2,nosmas,leolion,jscript,15975312,pundai,kelli1,kkkddd,obafgkm,marmaris,lilmama,london123,rfhfnt,elgordo,talk87,daniel7,thesims3,444111,bishkek,afrika2002,toby22,1speedy,daishi,2children,afroman,qqqqwwww,oldskool,hawai,v55555,syndicat,pukimak,fanatik,tiger5,parker01,bri5kev6,timexx,wartburg,love55,ecosse,yelena03,madinina,highway1,uhfdbwfgf,karuna,buhjvfybz,wallie,46and2,khalif,europ,qaz123wsx456,bobbybob,wolfone,falloutboy,manning18,scuba10,schnuff,ihateyou1,lindam,sara123,popcor,fallengun,divine1,montblanc,qwerty8,rooney10,roadrage,bertie1,latinus,lexusis,rhfvfnjhcr,opelgt,hitme,agatka,1yamaha,dmfxhkju,imaloser,michell1,sb211st,silver22,lockedup,andrew9,monica01,sassycat,dsobwick,tinroof,ctrhtnyj,bultaco,rhfcyjzhcr,aaaassss,14ss88,joanne1,momanddad,ahjkjdf,yelhsa,zipdrive,telescop,500600,1sexsex,facial1,motaro,511647,stoner1,temujin,elephant1,greatman,honey69,kociak,ukqmwhj6,altezza,cumquat,zippos,kontiki,123max,altec1,bibigon,tontos,qazsew,nopasaran,militar,supratt,oglala,kobayash,agathe,yawetag,dogs1,cfiekmrf,megan123,jamesdea,porosenok,tiger23,berger1,hello11,seemann,stunner1,walker2,imissu,jabari,minfd,lollol12,hjvfy,1-oct,stjohns,2278124q,123456789qwer,alex1983,glowworm,chicho,mallards,bluedevil,explorer1,543211,casita,1time,lachesis,alex1982,airborn1,dubesor,changa,lizzie1,captaink,socool,bidule,march23,1861brr,k.ljxrf,watchout,fotze,1brian,keksa2,aaaa1122,matrim,providian,privado,dreame,merry1,aregdone,davidt,nounour,twenty2,play2win,artcast2,zontik,552255,shit1,sluggy,552861,dr8350,brooze,alpha69,thunder6,kamelia2011,caleb123,mmxxmm,jamesh,lfybkjd,125267,125000,124536,bliss1,dddsss,indonesi,bob69,123888,tgkbxfgy,gerar,themack,hijodeputa,good4now,ddd123,clk430,kalash,tolkien1,132forever,blackb,whatis,s1s2s3s4,lolkin09,yamahar,48n25rcc,djtiesto,111222333444555,bigbull,blade55,coolbree,kelse,ichwill,yamaha12,sakic,bebeto,katoom,donke,sahar,wahine,645202,god666,berni,starwood,june15,sonoio,time123,llbean,deadsoul,lazarev,cdtnf,ksyusha,madarchod,technik,jamesy,4speed,tenorsax,legshow,yoshi1,chrisbl,44e3ebda,trafalga,heather7,serafima,favorite4,havefun1,wolve,55555r,james13,nosredna,bodean,jlettier,borracho,mickael,marinus,brutu,sweet666,kiborg,rollrock,jackson6,macross1,ousooner,9085084232,takeme,123qwaszx,firedept,vfrfhjd,jackfros,123456789000,briane,cookie11,baby22,bobby18,gromova,systemofadown,martin01,silver01,pimaou,darthmaul,hijinx,commo,chech,skyman,sunse,2vrd6,vladimirovna,uthvfybz,nicole01,kreker,bobo1,v123456789,erxtgb,meetoo,drakcap,vfvf12,misiek1,butane,network2,flyers99,riogrand,jennyk,e12345,spinne,avalon11,lovejone,studen,maint,porsche2,qwerty100,chamberl,bluedog1,sungam,just4u,andrew23,summer22,ludic,musiclover,aguil,beardog1,libertin,pippo1,joselit,patito,bigberth,digler,sydnee,jockstra,poopo,jas4an,nastya123,profil,fuesse,default1,titan2,mendoz,kpcofgs,anamika,brillo021,bomberman,guitar69,latching,69pussy,blues2,phelge,ninja123,m7n56xo,qwertasd,alex1976,cunningh,estrela,gladbach,marillion,mike2000,258046,bypop,muffinman,kd5396b,zeratul,djkxbwf,john77,sigma2,1linda,selur,reppep,quartz1,teen1,freeclus,spook1,kudos4ever,clitring,sexiness,blumpkin,macbook,tileman,centra,escaflowne,pentable,shant,grappa,zverev,1albert,lommerse,coffee11,777123,polkilo,muppet1,alex74,lkjhgfdsazx,olesica,april14,ba25547,souths,jasmi,arashi,smile2,2401pedro,mybabe,alex111,quintain,pimp1,tdeir8b2,makenna,122333444455555,%e2%82%ac,tootsie1,pass111,zaqxsw123,gkfdfybt,cnfnbcnbrf,usermane,iloveyou12,hard69,osasuna,firegod,arvind,babochka,kiss123,cookie123,julie123,kamakazi,dylan2,223355,tanguy,nbhtqa,tigger13,tubby1,makavel,asdflkj,sambo1,mononoke,mickeys,gayguy,win123,green33,wcrfxtvgbjy,bigsmall,1newlife,clove,babyfac,bigwaves,mama1970,shockwav,1friday,bassey,yarddog,codered1,victory7,bigrick,kracker,gulfstre,chris200,sunbanna,bertuzzi,begemotik,kuolema,pondus,destinee,123456789zz,abiodun,flopsy,amadeusptfcor,geronim,yggdrasi,contex,daniel6,suck1,adonis1,moorea,el345612,f22raptor,moviebuf,raunchy,6043dkf,zxcvbnm123456789,eric11,deadmoin,ratiug,nosliw,fannies,danno,888889,blank1,mikey2,gullit,thor99,mamiya,ollieb,thoth,dagger1,websolutionssu,bonker,prive,1346798520,03038,q1234q,mommy2,contax,zhipo,gwendoli,gothic1,1234562000,lovedick,gibso,digital2,space199,b26354,987654123,golive,serious1,pivkoo,better1,824358553,794613258,nata1980,logout,fishpond,buttss,squidly,good4me,redsox19,jhonny,zse45rdx,matrixxx,honey12,ramina,213546879,motzart,fall99,newspape,killit,gimpy,photowiz,olesja,thebus,marco123,147852963,bedbug,147369258,hellbound,gjgjxrf,123987456,lovehurt,five55,hammer01,1234554321a,alina2011,peppino,ang238,questor,112358132,alina1994,alina1998,money77,bobjones,aigerim,cressida,madalena,420smoke,tinchair,raven13,mooser,mauric,lovebu,adidas69,krypton1,1111112,loveline,divin,voshod,michaelm,cocotte,gbkbuhbv,76689295,kellyj,rhonda1,sweetu70,steamforums,geeque,nothere,124c41,quixotic,steam181,1169900,rfcgthcrbq,rfvbkm,sexstuff,1231230,djctvm,rockstar1,fulhamfc,bhecbr,rfntyf,quiksilv,56836803,jedimaster,pangit,gfhjkm777,tocool,1237654,stella12,55378008,19216811,potte,fender12,mortalkombat,ball1,nudegirl,palace22,rattrap,debeers,lickpussy,jimmy6,not4u2c,wert12,bigjuggs,sadomaso,1357924,312mas,laser123,arminia,branford,coastie,mrmojo,19801982,scott11,banaan123,ingres,300zxtt,hooters6,sweeties,19821983,19831985,19833891,sinnfein,welcome4,winner69,killerman,tachyon,tigre1,nymets1,kangol,martinet,sooty1,19921993,789qwe,harsingh,1597535,thecount,phantom3,36985214,lukas123,117711,pakistan1,madmax11,willow01,19932916,fucker12,flhrci,opelagila,theword,ashley24,tigger3,crazyj,rapide,deadfish,allana,31359092,sasha1993,sanders2,discman,zaq!2wsx,boilerma,mickey69,jamesg,babybo,jackson9,orion7,alina2010,indien,breeze1,atease,warspite,bazongaz,1celtic,asguard,mygal,fitzgera,1secret,duke33,cyklone,dipascuc,potapov,1escobar2,c0l0rad0,kki177hk,1little,macondo,victoriya,peter7,red666,winston6,kl?benhavn,muneca,jackme,jennan,happylife,am4h39d8nh,bodybuil,201980,dutchie,biggame,lapo4ka,rauchen,black10,flaquit,water12,31021364,command2,lainth88,mazdamx5,typhon,colin123,rcfhlfc,qwaszx11,g0away,ramir,diesirae,hacked1,cessna1,woodfish,enigma2,pqnr67w5,odgez8j3,grisou,hiheels,5gtgiaxm,2580258,ohotnik,transits,quackers,serjik,makenzie,mdmgatew,bryana,superman12,melly,lokit,thegod,slickone,fun4all,netpass,penhorse,1cooper,nsync,asdasd22,otherside,honeydog,herbie1,chiphi,proghouse,l0nd0n,shagg,select1,frost1996,casper123,countr,magichat,greatzyo,jyothi,3bears,thefly,nikkita,fgjcnjk,nitros,hornys,san123,lightspe,maslova,kimber1,newyork2,spammm,mikejone,pumpk1n,bruiser1,bacons,prelude9,boodie,dragon4,kenneth2,love98,power5,yodude,pumba,thinline,blue30,sexxybj,2dumb2live,matt21,forsale,1carolin,innova,ilikeporn,rbgtkjd,a1s2d3f,wu9942,ruffus,blackboo,qwerty999,draco1,marcelin,hideki,gendalf,trevon,saraha,cartmen,yjhbkmcr,time2go,fanclub,ladder1,chinni,6942987,united99,lindac,quadra,paolit,mainstre,beano002,lincoln7,bellend,anomie,8520456,bangalor,goodstuff,chernov,stepashka,gulla,mike007,frasse,harley03,omnislash,8538622,maryjan,sasha2011,gineok,8807031,hornier,gopinath,princesit,bdr529,godown,bosslady,hakaone,1qwe2,madman1,joshua11,lovegame,bayamon,jedi01,stupid12,sport123,aaa666,tony44,collect1,charliem,chimaira,cx18ka,trrim777,chuckd,thedream,redsox99,goodmorning,delta88,iloveyou11,newlife2,figvam,chicago3,jasonk,12qwer,9875321,lestat1,satcom,conditio,capri50,sayaka,9933162,trunks1,chinga,snooch,alexand1,findus,poekie,cfdbyf,kevind,mike1969,fire13,leftie,bigtuna,chinnu,silence1,celos1,blackdra,alex24,gfgfif,2boobs,happy8,enolagay,sataniv1993,turner1,dylans,peugeo,sasha1994,hoppel,conno,moonshot,santa234,meister1,008800,hanako,tree123,qweras,gfitymrf,reggie31,august29,supert,joshua10,akademia,gbljhfc,zorro123,nathalia,redsox12,hfpdjl,mishmash,nokiae51,nyyankees,tu190022,strongbo,none1,not4u2no,katie2,popart,harlequi,santan,michal1,1therock,screwu,csyekmrf,olemiss1,tyrese,hoople,sunshin1,cucina,starbase,topshelf,fostex,california1,castle1,symantec,pippolo,babare,turntabl,1angela,moo123,ipvteb,gogolf,alex88,cycle1,maxie1,phase2,selhurst,furnitur,samfox,fromvermine,shaq34,gators96,captain2,delonge,tomatoe,bisous,zxcvbnma,glacius,pineapple1,cannelle,ganibal,mko09ijn,paraklast1974,hobbes12,petty43,artema,junior8,mylover,1234567890d,fatal1ty,prostreet,peruan,10020,nadya,caution1,marocas,chanel5,summer08,metal123,111lox,scrapy,thatguy,eddie666,washingto,yannis,minnesota_hp,lucky4,playboy6,naumova,azzurro,patat,dale33,pa55wd,speedster,zemanova,saraht,newto,tony22,qscesz,arkady,1oliver,death6,vkfwx046,antiflag,stangs,jzf7qf2e,brianp,fozzy,cody123,startrek1,yoda123,murciela,trabajo,lvbnhbtdf,canario,fliper,adroit,henry5,goducks,papirus,alskdj,soccer6,88mike,gogetter,tanelorn,donking,marky1,leedsu,badmofo,al1916,wetdog,akmaral,pallet,april24,killer00,nesterova,rugby123,coffee12,browseui,ralliart,paigow,calgary1,armyman,vtldtltd,frodo2,frxtgb,iambigal,benno,jaytee,2hot4you,askar,bigtee,brentwoo,palladin,eddie2,al1916w,horosho,entrada,ilovetits,venture1,dragon19,jayde,chuvak,jamesl,fzr600,brandon8,vjqvbh,snowbal,snatch1,bg6njokf,pudder,karolin,candoo,pfuflrf,satchel1,manteca,khongbiet,critter1,partridg,skyclad,bigdon,ginger69,brave1,anthony4,spinnake,chinadol,passout,cochino,nipples1,15058,lopesk,sixflags,lloo999,parkhead,breakdance,cia123,fidodido,yuitre12,fooey,artem1995,gayathri,medin,nondriversig,l12345,bravo7,happy13,kazuya,camster,alex1998,luckyy,zipcode,dizzle,boating1,opusone,newpassw,movies23,kamikazi,zapato,bart316,cowboys0,corsair1,kingshit,hotdog12,rolyat,h200svrm,qwerty4,boofer,rhtyltkm,chris999,vaz21074,simferopol,pitboss,love3,britania,tanyshka,brause,123qwerty123,abeille,moscow1,ilkaev,manut,process1,inetcfg,dragon05,fortknox,castill,rynner,mrmike,koalas,jeebus,stockpor,longman,juanpabl,caiman,roleplay,jeremi,26058,prodojo,002200,magical1,black5,bvlgari,doogie1,cbhtqa,mahina,a1s2d3f4g5h6,jblpro,usmc01,bismilah,guitar01,april9,santana1,1234aa,monkey14,sorokin,evan1,doohan,animalsex,pfqxtyjr,dimitry,catchme,chello,silverch,glock45,dogleg,litespee,nirvana9,peyton18,alydar,warhamer,iluvme,sig229,minotavr,lobzik,jack23,bushwack,onlin,football123,joshua5,federov,winter2,bigmax,fufnfrhbcnb,hfpldfnhb,1dakota,f56307,chipmonk,4nick8,praline,vbhjh123,king11,22tango,gemini12,street1,77879,doodlebu,homyak,165432,chuluthu,trixi,karlito,salom,reisen,cdtnkzxjr,pookie11,tremendo,shazaam,welcome0,00000ty,peewee51,pizzle,gilead,bydand,sarvar,upskirt,legends1,freeway1,teenfuck,ranger9,darkfire,dfymrf,hunt0802,justme1,buffy1ma,1harry,671fsa75yt,burrfoot,budster,pa437tu,jimmyp,alina2006,malacon,charlize,elway1,free12,summer02,gadina,manara,gomer1,1cassie,sanja,kisulya,money3,pujols,ford50,midiland,turga,orange6,demetriu,freakboy,orosie1,radio123,open12,vfufpby,mustek,chris33,animes,meiling,nthtvjr,jasmine9,gfdkjd,oligarh,marimar,chicago9,.kzirf,bugssgub,samuraix,jackie01,pimpjuic,macdad,cagiva,vernost,willyboy,fynjyjdf,tabby1,privet123,torres9,retype,blueroom,raven11,q12we3,alex1989,bringiton,ridered,kareltje,ow8jtcs8t,ciccia,goniners,countryb,24688642,covingto,24861793,beyblade,vikin,badboyz,wlafiga,walstib,mirand,needajob,chloes,balaton,kbpfdtnf,freyja,bond9007,gabriel12,stormbri,hollage,love4eve,fenomeno,darknite,dragstar,kyle123,milfhunter,ma123123123,samia,ghislain,enrique1,ferien12,xjy6721,natalie2,reglisse,wilson2,wesker,rosebud7,amazon1,robertr,roykeane,xtcnth,mamatata,crazyc,mikie,savanah,blowjob69,jackie2,forty1,1coffee,fhbyjxrf,bubbah,goteam,hackedit,risky1,logoff,h397pnvr,buck13,robert23,bronc,st123st,godflesh,pornog,iamking,cisco69,septiembr,dale38,zhongguo,tibbar,panther9,buffa1,bigjohn1,mypuppy,vehvfycr,april16,shippo,fire1234,green15,q123123,gungadin,steveg,olivier1,chinaski,magnoli,faithy,storm12,toadfrog,paul99,78791,august20,automati,squirtle,cheezy,positano,burbon,nunya,llebpmac,kimmi,turtle2,alan123,prokuror,violin1,durex,pussygal,visionar,trick1,chicken6,29024,plowboy,rfybreks,imbue,sasha13,wagner1,vitalogy,cfymrf,thepro,26028,gorbunov,dvdcom,letmein5,duder,fastfun,pronin,libra1,conner1,harley20,stinker1,20068,20038,amitech,syoung,dugway,18068,welcome7,jimmypag,anastaci,kafka1,pfhfnecnhf,catsss,campus100,shamal,nacho1,fire12,vikings2,brasil1,rangerover,mohamma,peresvet,14058,cocomo,aliona,14038,qwaser,vikes,cbkmdf,skyblue1,ou81234,goodlove,dfkmltvfh,108888,roamer,pinky2,static1,zxcv4321,barmen,rock22,shelby2,morgans,1junior,pasword1,logjam,fifty5,nhfrnjhbcn,chaddy,philli,nemesis2,ingenier,djkrjd,ranger3,aikman8,knothead,daddy69,love007,vsythb,ford350,tiger00,renrut,owen11,energy12,march14,alena123,robert19,carisma,orange22,murphy11,podarok,prozak,kfgeirf,wolf13,lydia1,shazza,parasha,akimov,tobbie,pilote,heather4,baster,leones,gznfxjr,megama,987654321g,bullgod,boxster1,minkey,wombats,vergil,colegiata,lincol,smoothe,pride1,carwash1,latrell,bowling3,fylhtq123,pickwick,eider,bubblebox,bunnies1,loquit,slipper1,nutsac,purina,xtutdfhf,plokiju,1qazxs,uhjpysq,zxcvbasdfg,enjoy1,1pumpkin,phantom7,mama22,swordsma,wonderbr,dogdays,milker,u23456,silvan,dfkthbr,slagelse,yeahman,twothree,boston11,wolf100,dannyg,troll1,fynjy123,ghbcnfd,bftest,ballsdeep,bobbyorr,alphasig,cccdemo,fire123,norwest,claire2,august10,lth1108,problemas,sapito,alex06,1rusty,maccom,goirish1,ohyes,bxdumb,nabila,boobear1,rabbit69,princip,alexsander,travail,chantal1,dogggy,greenpea,diablo69,alex2009,bergen09,petticoa,classe,ceilidh,vlad2011,kamakiri,lucidity,qaz321,chileno,cexfhf,99ranger,mcitra,estoppel,volvos60,carter80,webpass,temp12,touareg,fcgbhby,bubba8,sunitha,200190ru,bitch2,shadow23,iluvit,nicole0,ruben1,nikki69,butttt,shocker1,souschef,lopotok01,kantot,corsano,cfnfyf,riverat,makalu,swapna,all4u9,cdtnkfy,ntktgepbr,ronaldo99,thomasj,bmw540i,chrisw,boomba,open321,z1x2c3v4b5n6m7,gaviota,iceman44,frosya,chris100,chris24,cosette,clearwat,micael,boogyman,pussy9,camus1,chumpy,heccrbq,konoplya,chester8,scooter5,ghjgfufylf,giotto,koolkat,zero000,bonita1,ckflrbq,j1964,mandog,18n28n24a,renob,head1,shergar,ringo123,tanita,sex4free,johnny12,halberd,reddevils,biolog,dillinge,fatb0y,c00per,hyperlit,wallace2,spears1,vitamine,buheirf,sloboda,alkash,mooman,marion1,arsenal7,sunder,nokia5610,edifier,pippone,fyfnjkmtdbx,fujimo,pepsi12,kulikova,bolat,duetto,daimon,maddog01,timoshka,ezmoney,desdemon,chesters,aiden,hugues,patrick5,aikman08,robert4,roenick,nyranger,writer1,36169544,foxmulder,118801,kutter,shashank,jamjar,118811,119955,aspirina,dinkus,1sailor,nalgene,19891959,snarf,allie1,cracky,resipsa,45678912,kemerovo,19841989,netware1,alhimik,19801984,nicole123,19761977,51501984,malaka1,montella,peachfuz,jethro1,cypress1,henkie,holdon,esmith,55443322,1friend,quique,bandicoot,statistika,great123,death13,ucht36,master4,67899876,bobsmith,nikko1,jr1234,hillary1,78978978,rsturbo,lzlzdfcz,bloodlust,shadow00,skagen,bambina,yummies,88887777,91328378,matthew4,itdoes,98256518,102938475,alina2002,123123789,fubared,dannys,123456321,nikifor,suck69,newmexico,scubaman,rhbcnb,fifnfy,puffdadd,159357852,dtheyxbr,theman22,212009164,prohor,shirle,nji90okm,newmedia,goose5,roma1995,letssee,iceman11,aksana,wirenut,pimpdady,1212312121,tamplier,pelican1,domodedovo,1928374655,fiction6,duckpond,ybrecz,thwack,onetwo34,gunsmith,murphydo,fallout1,spectre1,jabberwo,jgjesq,turbo6,bobo12,redryder,blackpus,elena1971,danilova,antoin,bobo1234,bobob,bobbobbo,dean1,222222a,jesusgod,matt23,musical1,darkmage,loppol,werrew,josepha,rebel12,toshka,gadfly,hawkwood,alina12,dnomyar,sexaddict,dangit,cool23,yocrack,archimed,farouk,nhfkzkz,lindalou,111zzzzz,ghjatccjh,wethepeople,m123456789,wowsers,kbkbxrf,bulldog5,m_roesel,sissinit,yamoon6,123ewqasd,dangel,miruvor79,kaytee,falcon7,bandit11,dotnet,dannii,arsenal9,miatamx5,1trouble,strip4me,dogpile,sexyred1,rjdfktdf,google10,shortman,crystal7,awesome123,cowdog,haruka,birthday28,jitter,diabolik,boomer12,dknight,bluewate,hockey123,crm0624,blueboys,willy123,jumpup,google2,cobra777,llabesab,vicelord,hopper1,gerryber,remmah,j10e5d4,qqqqqqw,agusti,fre_ak8yj,nahlik,redrobin,scott3,epson1,dumpy,bundao,aniolek,hola123,jergens,itsasecret,maxsam,bluelight,mountai1,bongwater,1london,pepper14,freeuse,dereks,qweqw,fordgt40,rfhfdfy,raider12,hunnybun,compac,splicer,megamon,tuffgong,gymnast1,butter11,modaddy,wapbbs_1,dandelio,soccer77,ghjnbdjcnjzybt,123xyi2,fishead,x002tp00,whodaman,555aaa,oussama,brunodog,technici,pmtgjnbl,qcxdw8ry,schweden,redsox3,throbber,collecto,japan10,dbm123dm,hellhoun,tech1,deadzone,kahlan,wolf123,dethklok,xzsawq,bigguy1,cybrthc,chandle,buck01,qq123123,secreta,williams1,c32649135,delta12,flash33,123joker,spacejam,polopo,holycrap,daman1,tummybed,financia,nusrat,euroline,magicone,jimkirk,ameritec,daniel26,sevenn,topazz,kingpins,dima1991,macdog,spencer5,oi812,geoffre,music11,baffle,123569,usagi,cassiope,polla,lilcrowe,thecakeisalie,vbhjndjhtw,vthokies,oldmans,sophie01,ghoster,penny2,129834,locutus1,meesha,magik,jerry69,daddysgirl,irondesk,andrey12,jasmine123,vepsrfyn,likesdick,1accord,jetboat,grafix,tomuch,showit,protozoa,mosias98,taburetka,blaze420,esenin,anal69,zhv84kv,puissant,charles0,aishwarya,babylon6,bitter1,lenina,raleigh1,lechat,access01,kamilka,fynjy,sparkplu,daisy3112,choppe,zootsuit,1234567j,rubyrose,gorilla9,nightshade,alternativa,cghfdjxybr,snuggles1,10121v,vova1992,leonardo1,dave2,matthewd,vfhfnbr,1986mets,nobull,bacall,mexican1,juanjo,mafia1,boomer22,soylent,edwards1,jordan10,blackwid,alex86,gemini13,lunar2,dctvcjcfnm,malaki,plugger,eagles11,snafu2,1shelly,cintaku,hannah22,tbird1,maks5843,irish88,homer22,amarok,fktrcfylhjdf,lincoln2,acess,gre69kik,need4speed,hightech,core2duo,blunt1,ublhjgjybrf,dragon33,1autopas,autopas1,wwww1,15935746,daniel20,2500aa,massim,1ggggggg,96ford,hardcor1,cobra5,blackdragon,vovan_lt,orochimaru,hjlbntkb,qwertyuiop12,tallen,paradoks,frozenfish,ghjuhfvvbcn,gerri1,nuggett,camilit,doright,trans1,serena1,catch2,bkmyeh,fireston,afhvfwtdn,purple3,figure8,fuckya,scamp1,laranja,ontheoutside,louis123,yellow7,moonwalk,mercury2,tolkein,raide,amenra,a13579,dranreb,5150vh,harish,tracksta,sexking,ozzmosis,katiee,alomar,matrix19,headroom,jahlove,ringding,apollo8,132546,132613,12345672000,saretta,135798,136666,thomas7,136913,onetwothree,hockey33,calida,nefertit,bitwise,tailhook,boop4,kfgecbr,bujhmbujhm,metal69,thedark,meteoro,felicia1,house12,tinuviel,istina,vaz2105,pimp13,toolfan,nina1,tuesday2,maxmotives,lgkp500,locksley,treech,darling1,kurama,aminka,ramin,redhed,dazzler,jager1,stpiliot,cardman,rfvtym,cheeser,14314314,paramoun,samcat,plumpy,stiffie,vsajyjr,panatha,qqq777,car12345,098poi,asdzx,keegan1,furelise,kalifornia,vbhjckfd,beast123,zcfvfzkexifz,harry5,1birdie,96328i,escola,extra330,henry12,gfhfyjqz,14u2nv,max1234,templar1,1dave,02588520,catrin,pangolin,marhaba,latin1,amorcito,dave22,escape1,advance1,yasuhiro,grepw,meetme,orange01,ernes,erdna,zsergn,nautica1,justinb,soundwav,miasma,greg78,nadine1,sexmad,lovebaby,promo1,excel1,babys,dragonma,camry1,sonnenschein,farooq,wazzkaprivet,magal,katinas,elvis99,redsox24,rooney1,chiefy,peggys,aliev,pilsung,mudhen,dontdoit,dennis12,supercal,energia,ballsout,funone,claudiu,brown2,amoco,dabl1125,philos,gjdtkbntkm,servette,13571113,whizzer,nollie,13467982,upiter,12string,bluejay1,silkie,william4,kosta1,143333,connor12,sustanon,06068,corporat,ssnake,laurita,king10,tahoes,arsenal123,sapato,charless,jeanmarc,levent,algerie,marine21,jettas,winsome,dctvgbplf,1701ab,xxxp455w0rd5,lllllll1,ooooooo1,monalis,koufax32,anastasya,debugger,sarita2,jason69,ufkxjyjr,gjlcnfdf,1jerry,daniel10,balinor,sexkitten,death2,qwertasdfgzxcvb,s9te949f,vegeta1,sysman,maxxam,dimabilan,mooose,ilovetit,june23,illest,doesit,mamou,abby12,longjump,transalp,moderato,littleguy,magritte,dilnoza,hawaiiguy,winbig,nemiroff,kokaine,admira,myemail,dream2,browneyes,destiny7,dragonss,suckme1,asa123,andranik,suckem,fleshbot,dandie,timmys,scitra,timdog,hasbeen,guesss,smellyfe,arachne,deutschl,harley88,birthday27,nobody1,papasmur,home1,jonass,bunia3,epatb1,embalm,vfvekmrf,apacer,12345656,estreet,weihnachtsbaum,mrwhite,admin12,kristie1,kelebek,yoda69,socken,tima123,bayern1,fktrcfylth,tamiya,99strenght,andy01,denis2011,19delta,stokecit,aotearoa,stalker2,nicnac,conrad1,popey,agusta,bowl36,1bigfish,mossyoak,1stunner,getinnow,jessejames,gkfnjy,drako,1nissan,egor123,hotness,1hawaii,zxc123456,cantstop,1peaches,madlen,west1234,jeter1,markis,judit,attack1,artemi,silver69,153246,crazy2,green9,yoshimi,1vette,chief123,jasper2,1sierra,twentyon,drstrang,aspirant,yannic,jenna123,bongtoke,slurpy,1sugar,civic97,rusty21,shineon,james19,anna12345,wonderwoman,1kevin,karol1,kanabis,wert21,fktif6115,evil1,kakaha,54gv768,826248s,tyrone1,1winston,sugar2,falcon01,adelya,mopar440,zasxcd,leecher,kinkysex,mercede1,travka,11234567,rebon,geekboy".split(","),english_wikipedia:"the,of,and,in,was,is,for,as,on,with,by,he,at,from,his,an,were,are,which,doc,https,also,or,has,had,first,one,their,its,after,new,who,they,two,her,she,been,other,when,time,during,there,into,school,more,may,years,over,only,year,most,would,world,city,some,where,between,later,three,state,such,then,national,used,made,known,under,many,university,united,while,part,season,team,these,american,than,film,second,born,south,became,states,war,through,being,including,both,before,north,high,however,people,family,early,history,album,area,them,series,against,until,since,district,county,name,work,life,group,music,following,number,company,several,four,called,played,released,career,league,game,government,house,each,based,day,same,won,use,station,club,international,town,located,population,general,college,east,found,age,march,end,september,began,home,public,church,line,june,river,member,system,place,century,band,july,york,january,october,song,august,best,former,british,party,named,held,village,show,local,november,took,service,december,built,another,major,within,along,members,five,single,due,although,small,old,left,final,large,include,building,served,president,received,games,death,february,main,third,set,children,own,order,species,park,law,air,published,road,died,book,men,women,army,often,according,education,central,country,division,english,top,included,development,french,community,among,water,play,side,list,times,near,late,form,original,different,center,power,led,students,german,moved,court,six,land,council,island,u.s.,record,million,research,art,established,award,street,military,television,given,region,support,western,production,non,political,point,cup,period,business,title,started,various,election,using,england,role,produced,become,program,works,field,total,office,class,written,association,radio,union,level,championship,director,few,force,created,department,founded,services,married,though,per,n't,site,open,act,short,society,version,royal,present,northern,worked,professional,full,returned,joined,story,france,european,currently,language,social,california,india,days,design,st.,further,round,australia,wrote,san,project,control,southern,railway,board,popular,continued,free,battle,considered,video,common,position,living,half,playing,recorded,red,post,described,average,records,special,modern,appeared,announced,areas,rock,release,elected,others,example,term,opened,similar,formed,route,census,current,schools,originally,lake,developed,race,himself,forces,addition,information,upon,province,match,event,songs,result,events,win,eastern,track,lead,teams,science,human,construction,minister,germany,awards,available,throughout,training,style,body,museum,australian,health,seven,signed,chief,eventually,appointed,sea,centre,debut,tour,points,media,light,range,character,across,features,families,largest,indian,network,less,performance,players,refer,europe,sold,festival,usually,taken,despite,designed,committee,process,return,official,episode,institute,stage,followed,performed,japanese,personal,thus,arts,space,low,months,includes,china,study,middle,magazine,leading,japan,groups,aircraft,featured,federal,civil,rights,model,coach,canadian,books,remained,eight,type,independent,completed,capital,academy,instead,kingdom,organization,countries,studies,competition,sports,size,above,section,finished,gold,involved,reported,management,systems,industry,directed,market,fourth,movement,technology,bank,ground,campaign,base,lower,sent,rather,added,provided,coast,grand,historic,valley,conference,bridge,winning,approximately,films,chinese,awarded,degree,russian,shows,native,female,replaced,municipality,square,studio,medical,data,african,successful,mid,bay,attack,previous,operations,spanish,theatre,student,republic,beginning,provide,ship,primary,owned,writing,tournament,culture,introduced,texas,related,natural,parts,governor,reached,ireland,units,senior,decided,italian,whose,higher,africa,standard,income,professor,placed,regional,los,buildings,championships,active,novel,energy,generally,interest,via,economic,previously,stated,itself,channel,below,operation,leader,traditional,trade,structure,limited,runs,prior,regular,famous,saint,navy,foreign,listed,artist,catholic,airport,results,parliament,collection,unit,officer,goal,attended,command,staff,commission,lived,location,plays,commercial,places,foundation,significant,older,medal,self,scored,companies,highway,activities,programs,wide,musical,notable,library,numerous,paris,towards,individual,allowed,plant,property,annual,contract,whom,highest,initially,required,earlier,assembly,artists,rural,seat,practice,defeated,ended,soviet,length,spent,manager,press,associated,author,issues,additional,characters,lord,zealand,policy,engine,township,noted,historical,complete,financial,religious,mission,contains,nine,recent,represented,pennsylvania,administration,opening,secretary,lines,report,executive,youth,closed,theory,writer,italy,angeles,appearance,feature,queen,launched,legal,terms,entered,issue,edition,singer,greek,majority,background,source,anti,cultural,complex,changes,recording,stadium,islands,operated,particularly,basketball,month,uses,port,castle,mostly,names,fort,selected,increased,status,earth,subsequently,pacific,cover,variety,certain,goals,remains,upper,congress,becoming,studied,irish,nature,particular,loss,caused,chart,dr.,forced,create,era,retired,material,review,rate,singles,referred,larger,individuals,shown,provides,products,speed,democratic,poland,parish,olympics,cities,themselves,temple,wing,genus,households,serving,cost,wales,stations,passed,supported,view,cases,forms,actor,male,matches,males,stars,tracks,females,administrative,median,effect,biography,train,engineering,camp,offered,chairman,houses,mainly,19th,surface,therefore,nearly,score,ancient,subject,prime,seasons,claimed,experience,specific,jewish,failed,overall,believed,plot,troops,greater,spain,consists,broadcast,heavy,increase,raised,separate,campus,1980s,appears,presented,lies,composed,recently,influence,fifth,nations,creek,references,elections,britain,double,cast,meaning,earned,carried,producer,latter,housing,brothers,attempt,article,response,border,remaining,nearby,direct,ships,value,workers,politician,academic,label,1970s,commander,rule,fellow,residents,authority,editor,transport,dutch,projects,responsible,covered,territory,flight,races,defense,tower,emperor,albums,facilities,daily,stories,assistant,managed,primarily,quality,function,proposed,distribution,conditions,prize,journal,code,vice,newspaper,corps,highly,constructed,mayor,critical,secondary,corporation,rugby,regiment,ohio,appearances,serve,allow,nation,multiple,discovered,directly,scene,levels,growth,elements,acquired,1990s,officers,physical,20th,latin,host,jersey,graduated,arrived,issued,literature,metal,estate,vote,immediately,quickly,asian,competed,extended,produce,urban,1960s,promoted,contemporary,global,formerly,appear,industrial,types,opera,ministry,soldiers,commonly,mass,formation,smaller,typically,drama,shortly,density,senate,effects,iran,polish,prominent,naval,settlement,divided,basis,republican,languages,distance,treatment,continue,product,mile,sources,footballer,format,clubs,leadership,initial,offers,operating,avenue,officially,columbia,grade,squadron,fleet,percent,farm,leaders,agreement,likely,equipment,website,mount,grew,method,transferred,intended,renamed,iron,asia,reserve,capacity,politics,widely,activity,advanced,relations,scottish,dedicated,crew,founder,episodes,lack,amount,build,efforts,concept,follows,ordered,leaves,positive,economy,entertainment,affairs,memorial,ability,illinois,communities,color,text,railroad,scientific,focus,comedy,serves,exchange,environment,cars,direction,organized,firm,description,agency,analysis,purpose,destroyed,reception,planned,revealed,infantry,architecture,growing,featuring,household,candidate,removed,situated,models,knowledge,solo,technical,organizations,assigned,conducted,participated,largely,purchased,register,gained,combined,headquarters,adopted,potential,protection,scale,approach,spread,independence,mountains,titled,geography,applied,safety,mixed,accepted,continues,captured,rail,defeat,principal,recognized,lieutenant,mentioned,semi,owner,joint,liberal,actress,traffic,creation,basic,notes,unique,supreme,declared,simply,plants,sales,massachusetts,designated,parties,jazz,compared,becomes,resources,titles,concert,learning,remain,teaching,versions,content,alongside,revolution,sons,block,premier,impact,champions,districts,generation,estimated,volume,image,sites,account,roles,sport,quarter,providing,zone,yard,scoring,classes,presence,performances,representatives,hosted,split,taught,origin,olympic,claims,critics,facility,occurred,suffered,municipal,damage,defined,resulted,respectively,expanded,platform,draft,opposition,expected,educational,ontario,climate,reports,atlantic,surrounding,performing,reduced,ranked,allows,birth,nominated,younger,newly,kong,positions,theater,philadelphia,heritage,finals,disease,sixth,laws,reviews,constitution,tradition,swedish,theme,fiction,rome,medicine,trains,resulting,existing,deputy,environmental,labour,classical,develop,fans,granted,receive,alternative,begins,nuclear,fame,buried,connected,identified,palace,falls,letters,combat,sciences,effort,villages,inspired,regions,towns,conservative,chosen,animals,labor,attacks,materials,yards,steel,representative,orchestra,peak,entitled,officials,returning,reference,northwest,imperial,convention,examples,ocean,publication,painting,subsequent,frequently,religion,brigade,fully,sides,acts,cemetery,relatively,oldest,suggested,succeeded,achieved,application,programme,cells,votes,promotion,graduate,armed,supply,flying,communist,figures,literary,netherlands,korea,worldwide,citizens,1950s,faculty,draw,stock,seats,occupied,methods,unknown,articles,claim,holds,authorities,audience,sweden,interview,obtained,covers,settled,transfer,marked,allowing,funding,challenge,southeast,unlike,crown,rise,portion,transportation,sector,phase,properties,edge,tropical,standards,institutions,philosophy,legislative,hills,brand,fund,conflict,unable,founding,refused,attempts,metres,permanent,starring,applications,creating,effective,aired,extensive,employed,enemy,expansion,billboard,rank,battalion,multi,vehicle,fought,alliance,category,perform,federation,poetry,bronze,bands,entry,vehicles,bureau,maximum,billion,trees,intelligence,greatest,screen,refers,commissioned,gallery,injury,confirmed,setting,treaty,adult,americans,broadcasting,supporting,pilot,mobile,writers,programming,existence,squad,minnesota,copies,korean,provincial,sets,defence,offices,agricultural,internal,core,northeast,retirement,factory,actions,prevent,communications,ending,weekly,containing,functions,attempted,interior,weight,bowl,recognition,incorporated,increasing,ultimately,documentary,derived,attacked,lyrics,mexican,external,churches,centuries,metropolitan,selling,opposed,personnel,mill,visited,presidential,roads,pieces,norwegian,controlled,18th,rear,influenced,wrestling,weapons,launch,composer,locations,developing,circuit,specifically,studios,shared,canal,wisconsin,publishing,approved,domestic,consisted,determined,comic,establishment,exhibition,southwest,fuel,electronic,cape,converted,educated,melbourne,hits,wins,producing,norway,slightly,occur,surname,identity,represent,constituency,funds,proved,links,structures,athletic,birds,contest,users,poet,institution,display,receiving,rare,contained,guns,motion,piano,temperature,publications,passenger,contributed,toward,cathedral,inhabitants,architect,exist,athletics,muslim,courses,abandoned,signal,successfully,disambiguation,tennessee,dynasty,heavily,maryland,jews,representing,budget,weather,missouri,introduction,faced,pair,chapel,reform,height,vietnam,occurs,motor,cambridge,lands,focused,sought,patients,shape,invasion,chemical,importance,communication,selection,regarding,homes,voivodeship,maintained,borough,failure,aged,passing,agriculture,oregon,teachers,flow,philippines,trail,seventh,portuguese,resistance,reaching,negative,fashion,scheduled,downtown,universities,trained,skills,scenes,views,notably,typical,incident,candidates,engines,decades,composition,commune,chain,inc.,austria,sale,values,employees,chamber,regarded,winners,registered,task,investment,colonial,swiss,user,entirely,flag,stores,closely,entrance,laid,journalist,coal,equal,causes,turkish,quebec,techniques,promote,junction,easily,dates,kentucky,singapore,residence,violence,advance,survey,humans,expressed,passes,streets,distinguished,qualified,folk,establish,egypt,artillery,visual,improved,actual,finishing,medium,protein,switzerland,productions,operate,poverty,neighborhood,organisation,consisting,consecutive,sections,partnership,extension,reaction,factor,costs,bodies,device,ethnic,racial,flat,objects,chapter,improve,musicians,courts,controversy,membership,merged,wars,expedition,interests,arab,comics,gain,describes,mining,bachelor,crisis,joining,decade,1930s,distributed,habitat,routes,arena,cycle,divisions,briefly,vocals,directors,degrees,object,recordings,installed,adjacent,demand,voted,causing,businesses,ruled,grounds,starred,drawn,opposite,stands,formal,operates,persons,counties,compete,wave,israeli,ncaa,resigned,brief,greece,combination,demographics,historian,contain,commonwealth,musician,collected,argued,louisiana,session,cabinet,parliamentary,electoral,loan,profit,regularly,conservation,islamic,purchase,17th,charts,residential,earliest,designs,paintings,survived,moth,items,goods,grey,anniversary,criticism,images,discovery,observed,underground,progress,additionally,participate,thousands,reduce,elementary,owners,stating,iraq,resolution,capture,tank,rooms,hollywood,finance,queensland,reign,maintain,iowa,landing,broad,outstanding,circle,path,manufacturing,assistance,sequence,gmina,crossing,leads,universal,shaped,kings,attached,medieval,ages,metro,colony,affected,scholars,oklahoma,coastal,soundtrack,painted,attend,definition,meanwhile,purposes,trophy,require,marketing,popularity,cable,mathematics,mississippi,represents,scheme,appeal,distinct,factors,acid,subjects,roughly,terminal,economics,senator,diocese,prix,contrast,argentina,czech,wings,relief,stages,duties,16th,novels,accused,whilst,equivalent,charged,measure,documents,couples,request,danish,defensive,guide,devices,statistics,credited,tries,passengers,allied,frame,puerto,peninsula,concluded,instruments,wounded,differences,associate,forests,afterwards,replace,requirements,aviation,solution,offensive,ownership,inner,legislation,hungarian,contributions,actors,translated,denmark,steam,depending,aspects,assumed,injured,severe,admitted,determine,shore,technique,arrival,measures,translation,debuted,delivered,returns,rejected,separated,visitors,damaged,storage,accompanied,markets,industries,losses,gulf,charter,strategy,corporate,socialist,somewhat,significantly,physics,mounted,satellite,experienced,constant,relative,pattern,restored,belgium,connecticut,partners,harvard,retained,networks,protected,mode,artistic,parallel,collaboration,debate,involving,journey,linked,salt,authors,components,context,occupation,requires,occasionally,policies,tamil,ottoman,revolutionary,hungary,poem,versus,gardens,amongst,audio,makeup,frequency,meters,orthodox,continuing,suggests,legislature,coalition,guitarist,eighth,classification,practices,soil,tokyo,instance,limit,coverage,considerable,ranking,colleges,cavalry,centers,daughters,twin,equipped,broadway,narrow,hosts,rates,domain,boundary,arranged,12th,whereas,brazilian,forming,rating,strategic,competitions,trading,covering,baltimore,commissioner,infrastructure,origins,replacement,praised,disc,collections,expression,ukraine,driven,edited,austrian,solar,ensure,premiered,successor,wooden,operational,hispanic,concerns,rapid,prisoners,childhood,meets,influential,tunnel,employment,tribe,qualifying,adapted,temporary,celebrated,appearing,increasingly,depression,adults,cinema,entering,laboratory,script,flows,romania,accounts,fictional,pittsburgh,achieve,monastery,franchise,formally,tools,newspapers,revival,sponsored,processes,vienna,springs,missions,classified,13th,annually,branches,lakes,gender,manner,advertising,normally,maintenance,adding,characteristics,integrated,decline,modified,strongly,critic,victims,malaysia,arkansas,nazi,restoration,powered,monument,hundreds,depth,15th,controversial,admiral,criticized,brick,honorary,initiative,output,visiting,birmingham,progressive,existed,carbon,1920s,credits,colour,rising,hence,defeating,superior,filmed,listing,column,surrounded,orleans,principles,territories,struck,participation,indonesia,movements,index,commerce,conduct,constitutional,spiritual,ambassador,vocal,completion,edinburgh,residing,tourism,finland,bears,medals,resident,themes,visible,indigenous,involvement,basin,electrical,ukrainian,concerts,boats,styles,processing,rival,drawing,vessels,experimental,declined,touring,supporters,compilation,coaching,cited,dated,roots,string,explained,transit,traditionally,poems,minimum,representation,14th,releases,effectively,architectural,triple,indicated,greatly,elevation,clinical,printed,10th,proposal,peaked,producers,romanized,rapidly,stream,innings,meetings,counter,householder,honour,lasted,agencies,document,exists,surviving,experiences,honors,landscape,hurricane,harbor,panel,competing,profile,vessel,farmers,lists,revenue,exception,customers,11th,participants,wildlife,utah,bible,gradually,preserved,replacing,symphony,begun,longest,siege,provinces,mechanical,genre,transmission,agents,executed,videos,benefits,funded,rated,instrumental,ninth,similarly,dominated,destruction,passage,technologies,thereafter,outer,facing,affiliated,opportunities,instrument,governments,scholar,evolution,channels,shares,sessions,widespread,occasions,engineers,scientists,signing,battery,competitive,alleged,eliminated,supplies,judges,hampshire,regime,portrayed,penalty,taiwan,denied,submarine,scholarship,substantial,transition,victorian,http,nevertheless,filed,supports,continental,tribes,ratio,doubles,useful,honours,blocks,principle,retail,departure,ranks,patrol,yorkshire,vancouver,inter,extent,afghanistan,strip,railways,component,organ,symbol,categories,encouraged,abroad,civilian,periods,traveled,writes,struggle,immediate,recommended,adaptation,egyptian,graduating,assault,drums,nomination,historically,voting,allies,detailed,achievement,percentage,arabic,assist,frequent,toured,apply,and/or,intersection,maine,touchdown,throne,produces,contribution,emerged,obtain,archbishop,seek,researchers,remainder,populations,clan,finnish,overseas,fifa,licensed,chemistry,festivals,mediterranean,injuries,animated,seeking,publisher,volumes,limits,venue,jerusalem,generated,trials,islam,youngest,ruling,glasgow,germans,songwriter,persian,municipalities,donated,viewed,belgian,cooperation,posted,tech,dual,volunteer,settlers,commanded,claiming,approval,delhi,usage,terminus,partly,electricity,locally,editions,premiere,absence,belief,traditions,statue,indicate,manor,stable,attributed,possession,managing,viewers,chile,overview,seed,regulations,essential,minority,cargo,segment,endemic,forum,deaths,monthly,playoffs,erected,practical,machines,suburb,relation,mrs.,descent,indoor,continuous,characterized,solutions,caribbean,rebuilt,serbian,summary,contested,psychology,pitch,attending,muhammad,tenure,drivers,diameter,assets,venture,punk,airlines,concentration,athletes,volunteers,pages,mines,influences,sculpture,protest,ferry,behalf,drafted,apparent,furthermore,ranging,romanian,democracy,lanka,significance,linear,d.c.,certified,voters,recovered,tours,demolished,boundaries,assisted,identify,grades,elsewhere,mechanism,1940s,reportedly,aimed,conversion,suspended,photography,departments,beijing,locomotives,publicly,dispute,magazines,resort,conventional,platforms,internationally,capita,settlements,dramatic,derby,establishing,involves,statistical,implementation,immigrants,exposed,diverse,layer,vast,ceased,connections,belonged,interstate,uefa,organised,abuse,deployed,cattle,partially,filming,mainstream,reduction,automatic,rarely,subsidiary,decides,merger,comprehensive,displayed,amendment,guinea,exclusively,manhattan,concerning,commons,radical,serbia,baptist,buses,initiated,portrait,harbour,choir,citizen,sole,unsuccessful,manufactured,enforcement,connecting,increases,patterns,sacred,muslims,clothing,hindu,unincorporated,sentenced,advisory,tanks,campaigns,fled,repeated,remote,rebellion,implemented,texts,fitted,tribute,writings,sufficient,ministers,21st,devoted,jurisdiction,coaches,interpretation,pole,businessman,peru,sporting,prices,cuba,relocated,opponent,arrangement,elite,manufacturer,responded,suitable,distinction,calendar,dominant,tourist,earning,prefecture,ties,preparation,anglo,pursue,worship,archaeological,chancellor,bangladesh,scores,traded,lowest,horror,outdoor,biology,commented,specialized,loop,arriving,farming,housed,historians,'the,patent,pupils,christianity,opponents,athens,northwestern,maps,promoting,reveals,flights,exclusive,lions,norfolk,hebrew,extensively,eldest,shops,acquisition,virtual,renowned,margin,ongoing,essentially,iranian,alternate,sailed,reporting,conclusion,originated,temperatures,exposure,secured,landed,rifle,framework,identical,martial,focuses,topics,ballet,fighters,belonging,wealthy,negotiations,evolved,bases,oriented,acres,democrat,heights,restricted,vary,graduation,aftermath,chess,illness,participating,vertical,collective,immigration,demonstrated,leaf,completing,organic,missile,leeds,eligible,grammar,confederate,improvement,congressional,wealth,cincinnati,spaces,indicates,corresponding,reaches,repair,isolated,taxes,congregation,ratings,leagues,diplomatic,submitted,winds,awareness,photographs,maritime,nigeria,accessible,animation,restaurants,philippine,inaugural,dismissed,armenian,illustrated,reservoir,speakers,programmes,resource,genetic,interviews,camps,regulation,computers,preferred,travelled,comparison,distinctive,recreation,requested,southeastern,dependent,brisbane,breeding,playoff,expand,bonus,gauge,departed,qualification,inspiration,shipping,slaves,variations,shield,theories,munich,recognised,emphasis,favour,variable,seeds,undergraduate,territorial,intellectual,qualify,mini,banned,pointed,democrats,assessment,judicial,examination,attempting,objective,partial,characteristic,hardware,pradesh,execution,ottawa,metre,drum,exhibitions,withdrew,attendance,phrase,journalism,logo,measured,error,christians,trio,protestant,theology,respective,atmosphere,buddhist,substitute,curriculum,fundamental,outbreak,rabbi,intermediate,designation,globe,liberation,simultaneously,diseases,experiments,locomotive,difficulties,mainland,nepal,relegated,contributing,database,developments,veteran,carries,ranges,instruction,lodge,protests,obama,newcastle,experiment,physician,describing,challenges,corruption,delaware,adventures,ensemble,succession,renaissance,tenth,altitude,receives,approached,crosses,syria,croatia,warsaw,professionals,improvements,worn,airline,compound,permitted,preservation,reducing,printing,scientist,activist,comprises,sized,societies,enters,ruler,gospel,earthquake,extend,autonomous,croatian,serial,decorated,relevant,ideal,grows,grass,tier,towers,wider,welfare,columns,alumni,descendants,interface,reserves,banking,colonies,manufacturers,magnetic,closure,pitched,vocalist,preserve,enrolled,cancelled,equation,2000s,nickname,bulgaria,heroes,exile,mathematical,demands,input,structural,tube,stem,approaches,argentine,axis,manuscript,inherited,depicted,targets,visits,veterans,regard,removal,efficiency,organisations,concepts,lebanon,manga,petersburg,rally,supplied,amounts,yale,tournaments,broadcasts,signals,pilots,azerbaijan,architects,enzyme,literacy,declaration,placing,batting,incumbent,bulgarian,consistent,poll,defended,landmark,southwestern,raid,resignation,travels,casualties,prestigious,namely,aims,recipient,warfare,readers,collapse,coached,controls,volleyball,coup,lesser,verse,pairs,exhibited,proteins,molecular,abilities,integration,consist,aspect,advocate,administered,governing,hospitals,commenced,coins,lords,variation,resumed,canton,artificial,elevated,palm,difficulty,civic,efficient,northeastern,inducted,radiation,affiliate,boards,stakes,byzantine,consumption,freight,interaction,oblast,numbered,seminary,contracts,extinct,predecessor,bearing,cultures,functional,neighboring,revised,cylinder,grants,narrative,reforms,athlete,tales,reflect,presidency,compositions,specialist,cricketer,founders,sequel,widow,disbanded,associations,backed,thereby,pitcher,commanding,boulevard,singers,crops,militia,reviewed,centres,waves,consequently,fortress,tributary,portions,bombing,excellence,nest,payment,mars,plaza,unity,victories,scotia,farms,nominations,variant,attacking,suspension,installation,graphics,estates,comments,acoustic,destination,venues,surrender,retreat,libraries,quarterback,customs,berkeley,collaborated,gathered,syndrome,dialogue,recruited,shanghai,neighbouring,psychological,saudi,moderate,exhibit,innovation,depot,binding,brunswick,situations,certificate,actively,shakespeare,editorial,presentation,ports,relay,nationalist,methodist,archives,experts,maintains,collegiate,bishops,maintaining,temporarily,embassy,essex,wellington,connects,reformed,bengal,recalled,inches,doctrine,deemed,legendary,reconstruction,statements,palestinian,meter,achievements,riders,interchange,spots,auto,accurate,chorus,dissolved,missionary,thai,operators,e.g.,generations,failing,delayed,cork,nashville,perceived,venezuela,cult,emerging,tomb,abolished,documented,gaining,canyon,episcopal,stored,assists,compiled,kerala,kilometers,mosque,grammy,theorem,unions,segments,glacier,arrives,theatrical,circulation,conferences,chapters,displays,circular,authored,conductor,fewer,dimensional,nationwide,liga,yugoslavia,peer,vietnamese,fellowship,armies,regardless,relating,dynamic,politicians,mixture,serie,somerset,imprisoned,posts,beliefs,beta,layout,independently,electronics,provisions,fastest,logic,headquartered,creates,challenged,beaten,appeals,plains,protocol,graphic,accommodate,iraqi,midfielder,span,commentary,freestyle,reflected,palestine,lighting,burial,virtually,backing,prague,tribal,heir,identification,prototype,criteria,dame,arch,tissue,footage,extending,procedures,predominantly,updated,rhythm,preliminary,cafe,disorder,prevented,suburbs,discontinued,retiring,oral,followers,extends,massacre,journalists,conquest,larvae,pronounced,behaviour,diversity,sustained,addressed,geographic,restrictions,voiced,milwaukee,dialect,quoted,grid,nationally,nearest,roster,twentieth,separation,indies,manages,citing,intervention,guidance,severely,migration,artwork,focusing,rivals,trustees,varied,enabled,committees,centered,skating,slavery,cardinals,forcing,tasks,auckland,youtube,argues,colored,advisor,mumbai,requiring,theological,registration,refugees,nineteenth,survivors,runners,colleagues,priests,contribute,variants,workshop,concentrated,creator,lectures,temples,exploration,requirement,interactive,navigation,companion,perth,allegedly,releasing,citizenship,observation,stationed,ph.d.,sheep,breed,discovers,encourage,kilometres,journals,performers,isle,saskatchewan,hybrid,hotels,lancashire,dubbed,airfield,anchor,suburban,theoretical,sussex,anglican,stockholm,permanently,upcoming,privately,receiver,optical,highways,congo,colours,aggregate,authorized,repeatedly,varies,fluid,innovative,transformed,praise,convoy,demanded,discography,attraction,export,audiences,ordained,enlisted,occasional,westminster,syrian,heavyweight,bosnia,consultant,eventual,improving,aires,wickets,epic,reactions,scandal,i.e.,discrimination,buenos,patron,investors,conjunction,testament,construct,encountered,celebrity,expanding,georgian,brands,retain,underwent,algorithm,foods,provision,orbit,transformation,associates,tactical,compact,varieties,stability,refuge,gathering,moreover,manila,configuration,gameplay,discipline,entity,comprising,composers,skill,monitoring,ruins,museums,sustainable,aerial,altered,codes,voyage,friedrich,conflicts,storyline,travelling,conducting,merit,indicating,referendum,currency,encounter,particles,automobile,workshops,acclaimed,inhabited,doctorate,cuban,phenomenon,dome,enrollment,tobacco,governance,trend,equally,manufacture,hydrogen,grande,compensation,download,pianist,grain,shifted,neutral,evaluation,define,cycling,seized,array,relatives,motors,firms,varying,automatically,restore,nicknamed,findings,governed,investigate,manitoba,administrator,vital,integral,indonesian,confusion,publishers,enable,geographical,inland,naming,civilians,reconnaissance,indianapolis,lecturer,deer,tourists,exterior,rhode,bassist,symbols,scope,ammunition,yuan,poets,punjab,nursing,cent,developers,estimates,presbyterian,nasa,holdings,generate,renewed,computing,cyprus,arabia,duration,compounds,gastropod,permit,valid,touchdowns,facade,interactions,mineral,practiced,allegations,consequence,goalkeeper,baronet,copyright,uprising,carved,targeted,competitors,mentions,sanctuary,fees,pursued,tampa,chronicle,capabilities,specified,specimens,toll,accounting,limestone,staged,upgraded,philosophical,streams,guild,revolt,rainfall,supporter,princeton,terrain,hometown,probability,assembled,paulo,surrey,voltage,developer,destroyer,floors,lineup,curve,prevention,potentially,onwards,trips,imposed,hosting,striking,strict,admission,apartments,solely,utility,proceeded,observations,euro,incidents,vinyl,profession,haven,distant,expelled,rivalry,runway,torpedo,zones,shrine,dimensions,investigations,lithuania,idaho,pursuit,copenhagen,considerably,locality,wireless,decrease,genes,thermal,deposits,hindi,habitats,withdrawn,biblical,monuments,casting,plateau,thesis,managers,flooding,assassination,acknowledged,interim,inscription,guided,pastor,finale,insects,transported,activists,marshal,intensity,airing,cardiff,proposals,lifestyle,prey,herald,capitol,aboriginal,measuring,lasting,interpreted,occurring,desired,drawings,healthcare,panels,elimination,oslo,ghana,blog,sabha,intent,superintendent,governors,bankruptcy,p.m.,equity,disk,layers,slovenia,prussia,quartet,mechanics,graduates,politically,monks,screenplay,nato,absorbed,topped,petition,bold,morocco,exhibits,canterbury,publish,rankings,crater,dominican,enhanced,planes,lutheran,governmental,joins,collecting,brussels,unified,streak,strategies,flagship,surfaces,oval,archive,etymology,imprisonment,instructor,noting,remix,opposing,servant,rotation,width,trans,maker,synthesis,excess,tactics,snail,ltd.,lighthouse,sequences,cornwall,plantation,mythology,performs,foundations,populated,horizontal,speedway,activated,performer,diving,conceived,edmonton,subtropical,environments,prompted,semifinals,caps,bulk,treasury,recreational,telegraph,continent,portraits,relegation,catholics,graph,velocity,rulers,endangered,secular,observer,learns,inquiry,idol,dictionary,certification,estimate,cluster,armenia,observatory,revived,nadu,consumers,hypothesis,manuscripts,contents,arguments,editing,trails,arctic,essays,belfast,acquire,promotional,undertaken,corridor,proceedings,antarctic,millennium,labels,delegates,vegetation,acclaim,directing,substance,outcome,diploma,philosopher,malta,albanian,vicinity,degc,legends,regiments,consent,terrorist,scattered,presidents,gravity,orientation,deployment,duchy,refuses,estonia,crowned,separately,renovation,rises,wilderness,objectives,agreements,empress,slopes,inclusion,equality,decree,ballot,criticised,rochester,recurring,struggled,disabled,henri,poles,prussian,convert,bacteria,poorly,sudan,geological,wyoming,consistently,minimal,withdrawal,interviewed,proximity,repairs,initiatives,pakistani,republicans,propaganda,viii,abstract,commercially,availability,mechanisms,naples,discussions,underlying,lens,proclaimed,advised,spelling,auxiliary,attract,lithuanian,editors,o'brien,accordance,measurement,novelist,ussr,formats,councils,contestants,indie,facebook,parishes,barrier,battalions,sponsor,consulting,terrorism,implement,uganda,crucial,unclear,notion,distinguish,collector,attractions,filipino,ecology,investments,capability,renovated,iceland,albania,accredited,scouts,armor,sculptor,cognitive,errors,gaming,condemned,successive,consolidated,baroque,entries,regulatory,reserved,treasurer,variables,arose,technological,rounded,provider,rhine,agrees,accuracy,genera,decreased,frankfurt,ecuador,edges,particle,rendered,calculated,careers,faction,rifles,americas,gaelic,portsmouth,resides,merchants,fiscal,premises,coin,draws,presenter,acceptance,ceremonies,pollution,consensus,membrane,brigadier,nonetheless,genres,supervision,predicted,magnitude,finite,differ,ancestry,vale,delegation,removing,proceeds,placement,emigrated,siblings,molecules,payments,considers,demonstration,proportion,newer,valve,achieving,confederation,continuously,luxury,notre,introducing,coordinates,charitable,squadrons,disorders,geometry,winnipeg,ulster,loans,longtime,receptor,preceding,belgrade,mandate,wrestler,neighbourhood,factories,buddhism,imported,sectors,protagonist,steep,elaborate,prohibited,artifacts,prizes,pupil,cooperative,sovereign,subspecies,carriers,allmusic,nationals,settings,autobiography,neighborhoods,analog,facilitate,voluntary,jointly,newfoundland,organizing,raids,exercises,nobel,machinery,baltic,crop,granite,dense,websites,mandatory,seeks,surrendered,anthology,comedian,bombs,slot,synopsis,critically,arcade,marking,equations,halls,indo,inaugurated,embarked,speeds,clause,invention,premiership,likewise,presenting,demonstrate,designers,organize,examined,km/h,bavaria,troop,referee,detection,zurich,prairie,rapper,wingspan,eurovision,luxembourg,slovakia,inception,disputed,mammals,entrepreneur,makers,evangelical,yield,clergy,trademark,defunct,allocated,depicting,volcanic,batted,conquered,sculptures,providers,reflects,armoured,locals,walt,herzegovina,contracted,entities,sponsorship,prominence,flowing,ethiopia,marketed,corporations,withdraw,carnegie,induced,investigated,portfolio,flowering,opinions,viewing,classroom,donations,bounded,perception,leicester,fruits,charleston,academics,statute,complaints,smallest,deceased,petroleum,resolved,commanders,algebra,southampton,modes,cultivation,transmitter,spelled,obtaining,sizes,acre,pageant,bats,abbreviated,correspondence,barracks,feast,tackles,raja,derives,geology,disputes,translations,counted,constantinople,seating,macedonia,preventing,accommodation,homeland,explored,invaded,provisional,transform,sphere,unsuccessfully,missionaries,conservatives,highlights,traces,organisms,openly,dancers,fossils,absent,monarchy,combining,lanes,stint,dynamics,chains,missiles,screening,module,tribune,generating,miners,nottingham,seoul,unofficial,owing,linking,rehabilitation,citation,louisville,mollusk,depicts,differential,zimbabwe,kosovo,recommendations,responses,pottery,scorer,aided,exceptions,dialects,telecommunications,defines,elderly,lunar,coupled,flown,25th,espn,formula_1,bordered,fragments,guidelines,gymnasium,valued,complexity,papal,presumably,maternal,challenging,reunited,advancing,comprised,uncertain,favorable,twelfth,correspondent,nobility,livestock,expressway,chilean,tide,researcher,emissions,profits,lengths,accompanying,witnessed,itunes,drainage,slope,reinforced,feminist,sanskrit,develops,physicians,outlets,isbn,coordinator,averaged,termed,occupy,diagnosed,yearly,humanitarian,prospect,spacecraft,stems,enacted,linux,ancestors,karnataka,constitute,immigrant,thriller,ecclesiastical,generals,celebrations,enhance,heating,advocated,evident,advances,bombardment,watershed,shuttle,wicket,twitter,adds,branded,teaches,schemes,pension,advocacy,conservatory,cairo,varsity,freshwater,providence,seemingly,shells,cuisine,specially,peaks,intensive,publishes,trilogy,skilled,nacional,unemployment,destinations,parameters,verses,trafficking,determination,infinite,savings,alignment,linguistic,countryside,dissolution,measurements,advantages,licence,subfamily,highlands,modest,regent,algeria,crest,teachings,knockout,brewery,combine,conventions,descended,chassis,primitive,fiji,explicitly,cumberland,uruguay,laboratories,bypass,elect,informal,preceded,holocaust,tackle,minneapolis,quantity,securities,console,doctoral,religions,commissioners,expertise,unveiled,precise,diplomat,standings,infant,disciplines,sicily,endorsed,systematic,charted,armored,mild,lateral,townships,hurling,prolific,invested,wartime,compatible,galleries,moist,battlefield,decoration,convent,tubes,terrestrial,nominee,requests,delegate,leased,dubai,polar,applying,addresses,munster,sings,commercials,teamed,dances,eleventh,midland,cedar,flee,sandstone,snails,inspection,divide,asset,themed,comparable,paramount,dairy,archaeology,intact,institutes,rectangular,instances,phases,reflecting,substantially,applies,vacant,lacked,copa,coloured,encounters,sponsors,encoded,possess,revenues,ucla,chaired,a.m.,enabling,playwright,stoke,sociology,tibetan,frames,motto,financing,illustrations,gibraltar,chateau,bolivia,transmitted,enclosed,persuaded,urged,folded,suffolk,regulated,bros.,submarines,myth,oriental,malaysian,effectiveness,narrowly,acute,sunk,replied,utilized,tasmania,consortium,quantities,gains,parkway,enlarged,sided,employers,adequate,accordingly,assumption,ballad,mascot,distances,peaking,saxony,projected,affiliation,limitations,metals,guatemala,scots,theaters,kindergarten,verb,employer,differs,discharge,controller,seasonal,marching,guru,campuses,avoided,vatican,maori,excessive,chartered,modifications,caves,monetary,sacramento,mixing,institutional,celebrities,irrigation,shapes,broadcaster,anthem,attributes,demolition,offshore,specification,surveys,yugoslav,contributor,auditorium,lebanese,capturing,airports,classrooms,chennai,paths,tendency,determining,lacking,upgrade,sailors,detected,kingdoms,sovereignty,freely,decorative,momentum,scholarly,georges,gandhi,speculation,transactions,undertook,interact,similarities,cove,teammate,constituted,painters,tends,madagascar,partnerships,afghan,personalities,attained,rebounds,masses,synagogue,reopened,asylum,embedded,imaging,catalogue,defenders,taxonomy,fiber,afterward,appealed,communists,lisbon,rica,judaism,adviser,batsman,ecological,commands,lgbt,cooling,accessed,wards,shiva,employs,thirds,scenic,worcester,tallest,contestant,humanities,economist,textile,constituencies,motorway,tram,percussion,cloth,leisure,1880s,baden,flags,resemble,riots,coined,sitcom,composite,implies,daytime,tanzania,penalties,optional,competitor,excluded,steering,reversed,autonomy,reviewer,breakthrough,professionally,damages,pomeranian,deputies,valleys,ventures,highlighted,electorate,mapping,shortened,executives,tertiary,specimen,launching,bibliography,sank,pursuing,binary,descendant,marched,natives,ideology,turks,adolf,archdiocese,tribunal,exceptional,nigerian,preference,fails,loading,comeback,vacuum,favored,alter,remnants,consecrated,spectators,trends,patriarch,feedback,paved,sentences,councillor,astronomy,advocates,broader,commentator,commissions,identifying,revealing,theatres,incomplete,enables,constituent,reformation,tract,haiti,atmospheric,screened,explosive,czechoslovakia,acids,symbolic,subdivision,liberals,incorporate,challenger,erie,filmmaker,laps,kazakhstan,organizational,evolutionary,chemicals,dedication,riverside,fauna,moths,maharashtra,annexed,gen.,resembles,underwater,garnered,timeline,remake,suited,educator,hectares,automotive,feared,latvia,finalist,narrator,portable,airways,plaque,designing,villagers,licensing,flank,statues,struggles,deutsche,migrated,cellular,jacksonville,wimbledon,defining,highlight,preparatory,planets,cologne,employ,frequencies,detachment,readily,libya,resign,halt,helicopters,reef,landmarks,collaborative,irregular,retaining,helsinki,folklore,weakened,viscount,interred,professors,memorable,mega,repertoire,rowing,dorsal,albeit,progressed,operative,coronation,liner,telugu,domains,philharmonic,detect,bengali,synthetic,tensions,atlas,dramatically,paralympics,xbox,shire,kiev,lengthy,sued,notorious,seas,screenwriter,transfers,aquatic,pioneers,unesco,radius,abundant,tunnels,syndicated,inventor,accreditation,janeiro,exeter,ceremonial,omaha,cadet,predators,resided,prose,slavic,precision,abbot,deity,engaging,cambodia,estonian,compliance,demonstrations,protesters,reactor,commodore,successes,chronicles,mare,extant,listings,minerals,tonnes,parody,cultivated,traders,pioneering,supplement,slovak,preparations,collision,partnered,vocational,atoms,malayalam,welcomed,documentation,curved,functioning,presently,formations,incorporates,nazis,botanical,nucleus,ethical,greeks,metric,automated,whereby,stance,europeans,duet,disability,purchasing,email,telescope,displaced,sodium,comparative,processor,inning,precipitation,aesthetic,import,coordination,feud,alternatively,mobility,tibet,regained,succeeding,hierarchy,apostolic,catalog,reproduction,inscriptions,vicar,clusters,posthumously,rican,loosely,additions,photographic,nowadays,selective,derivative,keyboards,guides,collectively,affecting,combines,operas,networking,decisive,terminated,continuity,finishes,ancestor,consul,heated,simulation,leipzig,incorporating,georgetown,formula_2,circa,forestry,portrayal,councillors,advancement,complained,forewings,confined,transaction,definitions,reduces,televised,1890s,rapids,phenomena,belarus,alps,landscapes,quarterly,specifications,commemorate,continuation,isolation,antenna,downstream,patents,ensuing,tended,saga,lifelong,columnist,labeled,gymnastics,papua,anticipated,demise,encompasses,madras,antarctica,interval,icon,rams,midlands,ingredients,priory,strengthen,rouge,explicit,gaza,aging,securing,anthropology,listeners,adaptations,underway,vista,malay,fortified,lightweight,violations,concerto,financed,jesuit,observers,trustee,descriptions,nordic,resistant,opted,accepts,prohibition,andhra,inflation,negro,wholly,imagery,spur,instructed,gloucester,cycles,middlesex,destroyers,statewide,evacuated,hyderabad,peasants,mice,shipyard,coordinate,pitching,colombian,exploring,numbering,compression,countess,hiatus,exceed,raced,archipelago,traits,soils,o'connor,vowel,android,facto,angola,amino,holders,logistics,circuits,emergence,kuwait,partition,emeritus,outcomes,submission,promotes,barack,negotiated,loaned,stripped,50th,excavations,treatments,fierce,participant,exports,decommissioned,cameo,remarked,residences,fuselage,mound,undergo,quarry,node,midwest,specializing,occupies,etc.,showcase,molecule,offs,modules,salon,exposition,revision,peers,positioned,hunters,competes,algorithms,reside,zagreb,calcium,uranium,silicon,airs,counterpart,outlet,collectors,sufficiently,canberra,inmates,anatomy,ensuring,curves,aviv,firearms,basque,volcano,thrust,sheikh,extensions,installations,aluminum,darker,sacked,emphasized,aligned,asserted,pseudonym,spanning,decorations,eighteenth,orbital,spatial,subdivided,notation,decay,macedonian,amended,declining,cyclist,feat,unusually,commuter,birthplace,latitude,activation,overhead,30th,finalists,whites,encyclopedia,tenor,qatar,survives,complement,concentrations,uncommon,astronomical,bangalore,pius,genome,memoir,recruit,prosecutor,modification,paired,container,basilica,arlington,displacement,germanic,mongolia,proportional,debates,matched,calcutta,rows,tehran,aerospace,prevalent,arise,lowland,24th,spokesman,supervised,advertisements,clash,tunes,revelation,wanderers,quarterfinals,fisheries,steadily,memoirs,pastoral,renewable,confluence,acquiring,strips,slogan,upstream,scouting,analyst,practitioners,turbine,strengthened,heavier,prehistoric,plural,excluding,isles,persecution,turin,rotating,villain,hemisphere,unaware,arabs,corpus,relied,singular,unanimous,schooling,passive,angles,dominance,instituted,aria,outskirts,balanced,beginnings,financially,structured,parachute,viewer,attitudes,subjected,escapes,derbyshire,erosion,addressing,styled,declaring,originating,colts,adjusted,stained,occurrence,fortifications,baghdad,nitrogen,localities,yemen,galway,debris,lodz,victorious,pharmaceutical,substances,unnamed,dwelling,atop,developmental,activism,voter,refugee,forested,relates,overlooking,genocide,kannada,insufficient,oversaw,partisan,dioxide,recipients,factions,mortality,capped,expeditions,receptors,reorganized,prominently,atom,flooded,flute,orchestral,scripts,mathematician,airplay,detached,rebuilding,dwarf,brotherhood,salvation,expressions,arabian,cameroon,poetic,recruiting,bundesliga,inserted,scrapped,disabilities,evacuation,pasha,undefeated,crafts,rituals,aluminium,norm,pools,submerged,occupying,pathway,exams,prosperity,wrestlers,promotions,basal,permits,nationalism,trim,merge,gazette,tributaries,transcription,caste,porto,emerge,modeled,adjoining,counterparts,paraguay,redevelopment,renewal,unreleased,equilibrium,similarity,minorities,soviets,comprise,nodes,tasked,unrelated,expired,johan,precursor,examinations,electrons,socialism,exiled,admiralty,floods,wigan,nonprofit,lacks,brigades,screens,repaired,hanover,fascist,labs,osaka,delays,judged,statutory,colt,col.,offspring,solving,bred,assisting,retains,somalia,grouped,corresponds,tunisia,chaplain,eminent,chord,22nd,spans,viral,innovations,possessions,mikhail,kolkata,icelandic,implications,introduces,racism,workforce,alto,compulsory,admits,censorship,onset,reluctant,inferior,iconic,progression,liability,turnout,satellites,behavioral,coordinated,exploitation,posterior,averaging,fringe,krakow,mountainous,greenwich,para,plantations,reinforcements,offerings,famed,intervals,constraints,individually,nutrition,1870s,taxation,threshold,tomatoes,fungi,contractor,ethiopian,apprentice,diabetes,wool,gujarat,honduras,norse,bucharest,23rd,arguably,accompany,prone,teammates,perennial,vacancy,polytechnic,deficit,okinawa,functionality,reminiscent,tolerance,transferring,myanmar,concludes,neighbours,hydraulic,economically,slower,plots,charities,synod,investor,catholicism,identifies,bronx,interpretations,adverse,judiciary,hereditary,nominal,sensor,symmetry,cubic,triangular,tenants,divisional,outreach,representations,passages,undergoing,cartridge,testified,exceeded,impacts,limiting,railroads,defeats,regain,rendering,humid,retreated,reliability,governorate,antwerp,infamous,implied,packaging,lahore,trades,billed,extinction,ecole,rejoined,recognizes,projection,qualifications,stripes,forts,socially,lexington,accurately,sexuality,westward,wikipedia,pilgrimage,abolition,choral,stuttgart,nests,expressing,strikeouts,assessed,monasteries,reconstructed,humorous,marxist,fertile,consort,urdu,patronage,peruvian,devised,lyric,baba,nassau,communism,extraction,popularly,markings,inability,litigation,accounted,processed,emirates,tempo,cadets,eponymous,contests,broadly,oxide,courtyard,frigate,directory,apex,outline,regency,chiefly,patrols,secretariat,cliffs,residency,privy,armament,australians,dorset,geometric,genetics,scholarships,fundraising,flats,demographic,multimedia,captained,documentaries,updates,canvas,blockade,guerrilla,songwriting,administrators,intake,drought,implementing,fraction,cannes,refusal,inscribed,meditation,announcing,exported,ballots,formula_3,curator,basel,arches,flour,subordinate,confrontation,gravel,simplified,berkshire,patriotic,tuition,employing,servers,castile,posting,combinations,discharged,miniature,mutations,constellation,incarnation,ideals,necessity,granting,ancestral,crowds,pioneered,mormon,methodology,rama,indirect,complexes,bavarian,patrons,uttar,skeleton,bollywood,flemish,viable,bloc,breeds,triggered,sustainability,tailed,referenced,comply,takeover,latvian,homestead,platoon,communal,nationality,excavated,targeting,sundays,posed,physicist,turret,endowment,marginal,dispatched,commentators,renovations,attachment,collaborations,ridges,barriers,obligations,shareholders,prof.,defenses,presided,rite,backgrounds,arbitrary,affordable,gloucestershire,thirteenth,inlet,miniseries,possesses,detained,pressures,subscription,realism,solidarity,proto,postgraduate,noun,burmese,abundance,homage,reasoning,anterior,robust,fencing,shifting,vowels,garde,profitable,loch,anchored,coastline,samoa,terminology,prostitution,magistrate,venezuelan,speculated,regulate,fixture,colonists,digit,induction,manned,expeditionary,computational,centennial,principally,vein,preserving,engineered,numerical,cancellation,conferred,continually,borne,seeded,advertisement,unanimously,treaties,infections,ions,sensors,lowered,amphibious,lava,fourteenth,bahrain,niagara,nicaragua,squares,congregations,26th,periodic,proprietary,1860s,contributors,seller,overs,emission,procession,presumed,illustrator,zinc,gases,tens,applicable,stretches,reproductive,sixteenth,apparatus,accomplishments,canoe,guam,oppose,recruitment,accumulated,limerick,namibia,staging,remixes,ordnance,uncertainty,pedestrian,temperate,treason,deposited,registry,cerambycidae,attracting,lankan,reprinted,shipbuilding,homosexuality,neurons,eliminating,1900s,resume,ministries,beneficial,blackpool,surplus,northampton,licenses,constructing,announcer,standardized,alternatives,taipei,inadequate,failures,yields,medalist,titular,obsolete,torah,burlington,predecessors,lublin,retailers,castles,depiction,issuing,gubernatorial,propulsion,tiles,damascus,discs,alternating,pomerania,peasant,tavern,redesignated,27th,illustration,focal,mans,codex,specialists,productivity,antiquity,controversies,promoter,pits,companions,behaviors,lyrical,prestige,creativity,swansea,dramas,approximate,feudal,tissues,crude,campaigned,unprecedented,chancel,amendments,surroundings,allegiance,exchanges,align,firmly,optimal,commenting,reigning,landings,obscure,1850s,contemporaries,paternal,devi,endurance,communes,incorporation,denominations,exchanged,routing,resorts,amnesty,slender,explores,suppression,heats,pronunciation,centred,coupe,stirling,freelance,treatise,linguistics,laos,informs,discovering,pillars,encourages,halted,robots,definitive,maturity,tuberculosis,venetian,silesian,unchanged,originates,mali,lincolnshire,quotes,seniors,premise,contingent,distribute,danube,gorge,logging,dams,curling,seventeenth,specializes,wetlands,deities,assess,thickness,rigid,culminated,utilities,substrate,insignia,nile,assam,shri,currents,suffrage,canadians,mortar,asteroid,bosnian,discoveries,enzymes,sanctioned,replica,hymn,investigators,tidal,dominate,derivatives,converting,leinster,verbs,honoured,criticisms,dismissal,discrete,masculine,reorganization,unlimited,wurttemberg,sacks,allocation,bahn,jurisdictions,participates,lagoon,famine,communion,culminating,surveyed,shortage,cables,intersects,cassette,foremost,adopting,solicitor,outright,bihar,reissued,farmland,dissertation,turnpike,baton,photographed,christchurch,kyoto,finances,rails,histories,linebacker,kilkenny,accelerated,dispersed,handicap,absorption,rancho,ceramic,captivity,cites,font,weighed,mater,utilize,bravery,extract,validity,slovenian,seminars,discourse,ranged,duel,ironically,warships,sega,temporal,surpassed,prolonged,recruits,northumberland,greenland,contributes,patented,eligibility,unification,discusses,reply,translates,beirut,relies,torque,northward,reviewers,monastic,accession,neural,tramway,heirs,sikh,subscribers,amenities,taliban,audit,rotterdam,wagons,kurdish,favoured,combustion,meanings,persia,browser,diagnostic,niger,formula_4,denomination,dividing,parameter,branding,badminton,leningrad,sparked,hurricanes,beetles,propeller,mozambique,refined,diagram,exhaust,vacated,readings,markers,reconciliation,determines,concurrent,imprint,primera,organism,demonstrating,filmmakers,vanderbilt,affiliates,traction,evaluated,defendants,megachile,investigative,zambia,assassinated,rewarded,probable,staffordshire,foreigners,directorate,nominees,consolidation,commandant,reddish,differing,unrest,drilling,bohemia,resembling,instrumentation,considerations,haute,promptly,variously,dwellings,clans,tablet,enforced,cockpit,semifinal,hussein,prisons,ceylon,emblem,monumental,phrases,correspond,crossover,outlined,characterised,acceleration,caucus,crusade,protested,composing,rajasthan,habsburg,rhythmic,interception,inherent,cooled,ponds,spokesperson,gradual,consultation,kuala,globally,suppressed,builders,avengers,suffix,integer,enforce,fibers,unionist,proclamation,uncovered,infrared,adapt,eisenhower,utilizing,captains,stretched,observing,assumes,prevents,analyses,saxophone,caucasus,notices,villains,dartmouth,mongol,hostilities,stretching,veterinary,lenses,texture,prompting,overthrow,excavation,islanders,masovian,battleship,biographer,replay,degradation,departing,luftwaffe,fleeing,oversight,immigrated,serbs,fishermen,strengthening,respiratory,italians,denotes,radial,escorted,motif,wiltshire,expresses,accessories,reverted,establishments,inequality,protocols,charting,famously,satirical,entirety,trench,friction,atletico,sampling,subset,weekday,upheld,sharply,correlation,incorrect,mughal,travelers,hasan,earnings,offset,evaluate,specialised,recognizing,flexibility,nagar,postseason,algebraic,capitalism,crystals,melodies,polynomial,racecourse,defences,austro,wembley,attracts,anarchist,resurrection,reviewing,decreasing,prefix,ratified,mutation,displaying,separating,restoring,assemblies,ordinance,priesthood,cruisers,appoint,moldova,imports,directive,epidemic,militant,senegal,signaling,restriction,critique,retrospective,nationalists,undertake,sioux,canals,algerian,redesigned,philanthropist,depict,conceptual,turbines,intellectuals,eastward,applicants,contractors,vendors,undergone,namesake,ensured,tones,substituted,hindwings,arrests,tombs,transitional,principality,reelection,taiwanese,cavity,manifesto,broadcasters,spawned,thoroughbred,identities,generators,proposes,hydroelectric,johannesburg,cortex,scandinavian,killings,aggression,boycott,catalyst,physiology,fifteenth,waterfront,chromosome,organist,costly,calculation,cemeteries,flourished,recognise,juniors,merging,disciples,ashore,workplace,enlightenment,diminished,debated,hailed,podium,educate,mandated,distributor,litre,electromagnetic,flotilla,estuary,peterborough,staircase,selections,melodic,confronts,wholesale,integrate,intercepted,catalonia,unite,immense,palatinate,switches,earthquakes,occupational,successors,praising,concluding,faculties,firstly,overhaul,empirical,metacritic,inauguration,evergreen,laden,winged,philosophers,amalgamated,geoff,centimeters,napoleonic,upright,planting,brewing,fined,sensory,migrants,wherein,inactive,headmaster,warwickshire,siberia,terminals,denounced,academia,divinity,bilateral,clive,omitted,peerage,relics,apartheid,syndicate,fearing,fixtures,desirable,dismantled,ethnicity,valves,biodiversity,aquarium,ideological,visibility,creators,analyzed,tenant,balkan,postwar,supplier,smithsonian,risen,morphology,digits,bohemian,wilmington,vishnu,demonstrates,aforementioned,biographical,mapped,khorasan,phosphate,presentations,ecosystem,processors,calculations,mosaic,clashes,penned,recalls,coding,angular,lattice,macau,accountability,extracted,pollen,therapeutic,overlap,violinist,deposed,candidacy,infants,covenant,bacterial,restructuring,dungeons,ordination,conducts,builds,invasive,customary,concurrently,relocation,cello,statutes,borneo,entrepreneurs,sanctions,packet,rockefeller,piedmont,comparisons,waterfall,receptions,glacial,surge,signatures,alterations,advertised,enduring,somali,botanist,100th,canonical,motifs,longitude,circulated,alloy,indirectly,margins,preserves,internally,besieged,shale,peripheral,drained,baseman,reassigned,tobago,soloist,socio,grazing,contexts,roofs,portraying,ottomans,shrewsbury,noteworthy,lamps,supplying,beams,qualifier,portray,greenhouse,stronghold,hitter,rites,cretaceous,urging,derive,nautical,aiming,fortunes,verde,donors,reliance,exceeding,exclusion,exercised,simultaneous,continents,guiding,pillar,gradient,poznan,eruption,clinics,moroccan,indicator,trams,piers,parallels,fragment,teatro,potassium,satire,compressed,businessmen,influx,seine,perspectives,shelters,decreases,mounting,formula_5,confederacy,equestrian,expulsion,mayors,liberia,resisted,affinity,shrub,unexpectedly,stimulus,amtrak,deported,perpendicular,statesman,wharf,storylines,romanesque,weights,surfaced,interceptions,dhaka,crambidae,orchestras,rwanda,conclude,constitutes,subsidiaries,admissions,prospective,shear,bilingual,campaigning,presiding,domination,commemorative,trailing,confiscated,petrol,acquisitions,polymer,onlyinclude,chloride,elevations,resolutions,hurdles,pledged,likelihood,objected,erect,encoding,databases,aristotle,hindus,marshes,bowled,ministerial,grange,acronym,annexation,squads,ambient,pilgrims,botany,sofla,astronomer,planetary,descending,bestowed,ceramics,diplomacy,metabolism,colonization,potomac,africans,engraved,recycling,commitments,resonance,disciplinary,jamaican,narrated,spectral,tipperary,waterford,stationary,arbitration,transparency,threatens,crossroads,slalom,oversee,centenary,incidence,economies,livery,moisture,newsletter,autobiographical,bhutan,propelled,dependence,moderately,adobe,barrels,subdivisions,outlook,labelled,stratford,arising,diaspora,barony,automobiles,ornamental,slated,norms,primetime,generalized,analysts,vectors,libyan,yielded,certificates,rooted,vernacular,belarusian,marketplace,prediction,fairfax,malawi,viruses,wooded,demos,mauritius,prosperous,coincided,liberties,huddersfield,ascent,warnings,hinduism,glucose,pulitzer,unused,filters,illegitimate,acquitted,protestants,canopy,staple,psychedelic,winding,abbas,pathways,cheltenham,lagos,niche,invaders,proponents,barred,conversely,doncaster,recession,embraced,rematch,concession,emigration,upgrades,bowls,tablets,remixed,loops,kensington,shootout,monarchs,organizers,harmful,punjabi,broadband,exempt,neolithic,profiles,portrays,parma,cyrillic,quasi,attested,regimental,revive,torpedoes,heidelberg,rhythms,spherical,denote,hymns,icons,theologian,qaeda,exceptionally,reinstated,comune,playhouse,lobbying,grossing,viceroy,delivers,visually,armistice,utrecht,syllable,vertices,analogous,annex,refurbished,entrants,knighted,disciple,rhetoric,detailing,inactivated,ballads,algae,intensified,favourable,sanitation,receivers,pornography,commemorated,cannons,entrusted,manifold,photographers,pueblo,textiles,steamer,myths,marquess,onward,liturgical,romney,uzbekistan,consistency,denoted,hertfordshire,convex,hearings,sulfur,universidad,podcast,selecting,emperors,arises,justices,1840s,mongolian,exploited,termination,digitally,infectious,sedan,symmetric,penal,illustrate,formulation,attribute,problematic,modular,inverse,berth,searches,rutgers,leicestershire,enthusiasts,lockheed,upwards,transverse,accolades,backward,archaeologists,crusaders,nuremberg,defects,ferries,vogue,containers,openings,transporting,separates,lumpur,purchases,attain,wichita,topology,woodlands,deleted,periodically,syntax,overturned,musicals,corp.,strasbourg,instability,nationale,prevailing,cache,marathi,versailles,unmarried,grains,straits,antagonist,segregation,assistants,d'etat,contention,dictatorship,unpopular,motorcycles,criterion,analytical,salzburg,militants,hanged,worcestershire,emphasize,paralympic,erupted,convinces,offences,oxidation,nouns,populace,atari,spanned,hazardous,educators,playable,births,baha'i,preseason,generates,invites,meteorological,handbook,foothills,enclosure,diffusion,mirza,convergence,geelong,coefficient,connector,formula_6,cylindrical,disasters,pleaded,knoxville,contamination,compose,libertarian,arrondissement,franciscan,intercontinental,susceptible,initiation,malaria,unbeaten,consonants,waived,saloon,popularized,estadio,pseudo,interdisciplinary,transports,transformers,carriages,bombings,revolves,ceded,collaborator,celestial,exemption,colchester,maltese,oceanic,ligue,crete,shareholder,routed,depictions,ridden,advisors,calculate,lending,guangzhou,simplicity,newscast,scheduling,snout,eliot,undertaking,armenians,nottinghamshire,whitish,consulted,deficiency,salle,cinemas,superseded,rigorous,kerman,convened,landowners,modernization,evenings,pitches,conditional,scandinavia,differed,formulated,cyclists,swami,guyana,dunes,electrified,appalachian,abdomen,scenarios,prototypes,sindh,consonant,adaptive,boroughs,wolverhampton,modelling,cylinders,amounted,minimize,ambassadors,lenin,settler,coincide,approximation,grouping,murals,bullying,registers,rumours,engagements,energetic,vertex,annals,bordering,geologic,yellowish,runoff,converts,allegheny,facilitated,saturdays,colliery,monitored,rainforest,interfaces,geographically,impaired,prevalence,joachim,paperback,slowed,shankar,distinguishing,seminal,categorized,authorised,auspices,bandwidth,asserts,rebranded,balkans,supplemented,seldom,weaving,capsule,apostles,populous,monmouth,payload,symphonic,densely,shoreline,managerial,masonry,antioch,averages,textbooks,royalist,coliseum,tandem,brewers,diocesan,posthumous,walled,incorrectly,distributions,ensued,reasonably,graffiti,propagation,automation,harmonic,augmented,middleweight,limbs,elongated,landfall,comparatively,literal,grossed,koppen,wavelength,1830s,cerebral,boasts,congestion,physiological,practitioner,coasts,cartoonist,undisclosed,frontal,launches,burgundy,qualifiers,imposing,stade,flanked,assyrian,raided,multiplayer,montane,chesapeake,pathology,drains,vineyards,intercollegiate,semiconductor,grassland,convey,citations,predominant,rejects,benefited,yahoo,graphs,busiest,encompassing,hamlets,explorers,suppress,minors,graphical,calculus,sediment,intends,diverted,mainline,unopposed,cottages,initiate,alumnus,towed,autism,forums,darlington,modernist,oxfordshire,lectured,capitalist,suppliers,panchayat,actresses,foundry,southbound,commodity,wesleyan,divides,palestinians,luton,caretaker,nobleman,mutiny,organizer,preferences,nomenclature,splits,unwilling,offenders,timor,relying,halftime,semitic,arithmetic,milestone,jesuits,arctiidae,retrieved,consuming,contender,edged,plagued,inclusive,transforming,khmer,federally,insurgents,distributing,amherst,rendition,prosecutors,viaduct,disqualified,kabul,liturgy,prevailed,reelected,instructors,swimmers,aperture,churchyard,interventions,totals,darts,metropolis,fuels,fluent,northbound,correctional,inflicted,barrister,realms,culturally,aristocratic,collaborating,emphasizes,choreographer,inputs,ensembles,humboldt,practised,endowed,strains,infringement,archaeologist,congregational,magna,relativity,efficiently,proliferation,mixtape,abruptly,regeneration,commissioning,yukon,archaic,reluctantly,retailer,northamptonshire,universally,crossings,boilers,nickelodeon,revue,abbreviation,retaliation,scripture,routinely,medicinal,benedictine,kenyan,retention,deteriorated,glaciers,apprenticeship,coupling,researched,topography,entrances,anaheim,pivotal,compensate,arched,modify,reinforce,dusseldorf,journeys,motorsport,conceded,sumatra,spaniards,quantitative,loire,cinematography,discarded,botswana,morale,engined,zionist,philanthropy,sainte,fatalities,cypriot,motorsports,indicators,pricing,institut,bethlehem,implicated,gravitational,differentiation,rotor,thriving,precedent,ambiguous,concessions,forecast,conserved,fremantle,asphalt,landslide,middlesbrough,formula_7,humidity,overseeing,chronological,diaries,multinational,crimean,turnover,improvised,youths,declares,tasmanian,canadiens,fumble,refinery,weekdays,unconstitutional,upward,guardians,brownish,imminent,hamas,endorsement,naturalist,martyrs,caledonia,chords,yeshiva,reptiles,severity,mitsubishi,fairs,installment,substitution,repertory,keyboardist,interpreter,silesia,noticeable,rhineland,transmit,inconsistent,booklet,academies,epithet,pertaining,progressively,aquatics,scrutiny,prefect,toxicity,rugged,consume,o'donnell,evolve,uniquely,cabaret,mediated,landowner,transgender,palazzo,compilations,albuquerque,induce,sinai,remastered,efficacy,underside,analogue,specify,possessing,advocating,compatibility,liberated,greenville,mecklenburg,header,memorials,sewage,rhodesia,1800s,salaries,atoll,coordinating,partisans,repealed,amidst,subjective,optimization,nectar,evolving,exploits,madhya,styling,accumulation,raion,postage,responds,buccaneers,frontman,brunei,choreography,coated,kinetic,sampled,inflammatory,complementary,eclectic,norte,vijay,a.k.a,mainz,casualty,connectivity,laureate,franchises,yiddish,reputed,unpublished,economical,periodicals,vertically,bicycles,brethren,capacities,unitary,archeological,tehsil,domesday,wehrmacht,justification,angered,mysore,fielded,abuses,nutrients,ambitions,taluk,battleships,symbolism,superiority,neglect,attendees,commentaries,collaborators,predictions,yorker,breeders,investing,libretto,informally,coefficients,memorandum,pounder,collingwood,tightly,envisioned,arbor,mistakenly,captures,nesting,conflicting,enhancing,streetcar,manufactures,buckinghamshire,rewards,commemorating,stony,expenditure,tornadoes,semantic,relocate,weimar,iberian,sighted,intending,ensign,beverages,expectation,differentiate,centro,utilizes,saxophonist,catchment,transylvania,ecosystems,shortest,sediments,socialists,ineffective,kapoor,formidable,heroine,guantanamo,prepares,scattering,pamphlet,verified,elector,barons,totaling,shrubs,pyrenees,amalgamation,mutually,longitudinal,comte,negatively,masonic,envoy,sexes,akbar,mythical,tonga,bishopric,assessments,malaya,warns,interiors,reefs,reflections,neutrality,musically,nomadic,waterways,provence,collaborate,scaled,adulthood,emerges,euros,optics,incentives,overland,periodical,liege,awarding,realization,slang,affirmed,schooner,hokkaido,czechoslovak,protectorate,undrafted,disagreed,commencement,electors,spruce,swindon,fueled,equatorial,inventions,suites,slovene,backdrop,adjunct,energies,remnant,inhabit,alliances,simulcast,reactors,mosques,travellers,outfielder,plumage,migratory,benin,experimented,fibre,projecting,drafting,laude,evidenced,northernmost,indicted,directional,replication,croydon,comedies,jailed,organizes,devotees,reservoirs,turrets,originate,economists,songwriters,junta,trenches,mounds,proportions,comedic,apostle,azerbaijani,farmhouse,resembled,disrupted,playback,mixes,diagonal,relevance,govern,programmer,gdansk,maize,soundtracks,tendencies,mastered,impacted,believers,kilometre,intervene,chairperson,aerodrome,sails,subsidies,ensures,aesthetics,congresses,ratios,sardinia,southernmost,functioned,controllers,downward,randomly,distortion,regents,palatine,disruption,spirituality,vidhan,tracts,compiler,ventilation,anchorage,symposium,assert,pistols,excelled,avenues,convoys,moniker,constructions,proponent,phased,spines,organising,schleswig,policing,campeonato,mined,hourly,croix,lucrative,authenticity,haitian,stimulation,burkina,espionage,midfield,manually,staffed,awakening,metabolic,biographies,entrepreneurship,conspicuous,guangdong,preface,subgroup,mythological,adjutant,feminism,vilnius,oversees,honourable,tripoli,stylized,kinase,societe,notoriety,altitudes,configurations,outward,transmissions,announces,auditor,ethanol,clube,nanjing,mecca,haifa,blogs,postmaster,paramilitary,depart,positioning,potent,recognizable,spire,brackets,remembrance,overlapping,turkic,articulated,scientology,operatic,deploy,readiness,biotechnology,restrict,cinematographer,inverted,synonymous,administratively,westphalia,commodities,replaces,downloads,centralized,munitions,preached,sichuan,fashionable,implementations,matrices,hiv/aids,loyalist,luzon,celebrates,hazards,heiress,mercenaries,synonym,creole,ljubljana,technician,auditioned,technicians,viewpoint,wetland,mongols,princely,sharif,coating,dynasties,southward,doubling,formula_8,mayoral,harvesting,conjecture,goaltender,oceania,spokane,welterweight,bracket,gatherings,weighted,newscasts,mussolini,affiliations,disadvantage,vibrant,spheres,sultanate,distributors,disliked,establishes,marches,drastically,yielding,jewellery,yokohama,vascular,airlift,canons,subcommittee,repression,strengths,graded,outspoken,fused,pembroke,filmography,redundant,fatigue,repeal,threads,reissue,pennant,edible,vapor,corrections,stimuli,commemoration,dictator,anand,secession,amassed,orchards,pontifical,experimentation,greeted,bangor,forwards,decomposition,quran,trolley,chesterfield,traverse,sermons,burials,skier,climbs,consultants,petitioned,reproduce,parted,illuminated,kurdistan,reigned,occupants,packaged,geometridae,woven,regulating,protagonists,crafted,affluent,clergyman,consoles,migrant,supremacy,attackers,caliph,defect,convection,rallies,huron,resin,segunda,quota,warship,overseen,criticizing,shrines,glamorgan,lowering,beaux,hampered,invasions,conductors,collects,bluegrass,surrounds,substrates,perpetual,chronology,pulmonary,executions,crimea,compiling,noctuidae,battled,tumors,minsk,novgorod,serviced,yeast,computation,swamps,theodor,baronetcy,salford,uruguayan,shortages,odisha,siberian,novelty,cinematic,invitational,decks,dowager,oppression,bandits,appellate,state-of-the-art,clade,palaces,signalling,galaxies,industrialist,tensor,learnt,incurred,magistrates,binds,orbits,ciudad,willingness,peninsular,basins,biomedical,shafts,marlborough,bournemouth,withstand,fitzroy,dunedin,variance,steamship,integrating,muscular,fines,akron,bulbophyllum,malmo,disclosed,cornerstone,runways,medicines,twenty20,gettysburg,progresses,frigates,bodied,transformations,transforms,helens,modelled,versatile,regulator,pursuits,legitimacy,amplifier,scriptures,voyages,examines,presenters,octagonal,poultry,formula_9,anatolia,computed,migrate,directorial,hybrids,localized,preferring,guggenheim,persisted,grassroots,inflammation,fishery,otago,vigorous,professions,instructional,inexpensive,insurgency,legislators,sequels,surnames,agrarian,stainless,nairobi,minas,forerunner,aristocracy,transitions,sicilian,showcased,doses,hiroshima,summarized,gearbox,emancipation,limitation,nuclei,seismic,abandonment,dominating,appropriations,occupations,electrification,hilly,contracting,exaggerated,entertainer,kazan,oricon,cartridges,characterization,parcel,maharaja,exceeds,aspiring,obituary,flattened,contrasted,narration,replies,oblique,outpost,fronts,arranger,talmud,keynes,doctrines,endured,confesses,fortification,supervisors,kilometer,academie,jammu,bathurst,piracy,prostitutes,navarre,cumulative,cruises,lifeboat,twinned,radicals,interacting,expenditures,wexford,libre,futsal,curated,clockwise,colloquially,procurement,immaculate,lyricist,enhancement,porcelain,alzheimer,highlighting,judah,disagreements,storytelling,sheltered,wroclaw,vaudeville,contrasts,neoclassical,compares,contrasting,deciduous,francaise,descriptive,cyclic,reactive,antiquities,meiji,repeats,creditors,forcibly,newmarket,picturesque,impending,uneven,bison,raceway,solvent,ecumenical,optic,professorship,harvested,waterway,banjo,pharaoh,geologist,scanning,dissent,recycled,unmanned,retreating,gospels,aqueduct,branched,tallinn,groundbreaking,syllables,hangar,designations,procedural,craters,cabins,encryption,anthropologist,montevideo,outgoing,inverness,chattanooga,fascism,calais,chapels,groundwater,downfall,misleading,robotic,tortricidae,pixel,handel,prohibit,crewe,renaming,reprised,kickoff,leftist,spaced,integers,causeway,pines,authorship,organise,ptolemy,accessibility,virtues,lesions,iroquois,qur'an,atheist,synthesized,biennial,confederates,dietary,skaters,stresses,tariff,koreans,intercity,republics,quintet,baroness,naive,amplitude,insistence,tbilisi,residues,grammatical,diversified,egyptians,accompaniment,vibration,repository,mandal,topological,distinctions,coherent,invariant,batters,nuevo,internationals,implements,follower,bahia,widened,independents,cantonese,totaled,guadalajara,wolverines,befriended,muzzle,surveying,hungarians,medici,deportation,rayon,approx,recounts,attends,clerical,hellenic,furnished,alleging,soluble,systemic,gallantry,bolshevik,intervened,hostel,gunpowder,specialising,stimulate,leiden,removes,thematic,floral,bafta,printers,conglomerate,eroded,analytic,successively,lehigh,thessaloniki,kilda,clauses,ascended,nehru,scripted,tokugawa,competence,diplomats,exclude,consecration,freedoms,assaults,revisions,blacksmith,textual,sparse,concacaf,slain,uploaded,enraged,whaling,guise,stadiums,debuting,dormitory,cardiovascular,yunnan,dioceses,consultancy,notions,lordship,archdeacon,collided,medial,airfields,garment,wrestled,adriatic,reversal,refueling,verification,jakob,horseshoe,intricate,veracruz,sarawak,syndication,synthesizer,anthologies,stature,feasibility,guillaume,narratives,publicized,antrim,intermittent,constituents,grimsby,filmmaking,doping,unlawful,nominally,transmitting,documenting,seater,internationale,ejected,steamboat,alsace,boise,ineligible,geared,vassal,mustered,ville,inline,pairing,eurasian,kyrgyzstan,barnsley,reprise,stereotypes,rushes,conform,firefighters,deportivo,revolutionaries,rabbis,concurrency,charters,sustaining,aspirations,algiers,chichester,falkland,morphological,systematically,volcanoes,designate,artworks,reclaimed,jurist,anglia,resurrected,chaotic,feasible,circulating,simulated,environmentally,confinement,adventist,harrisburg,laborers,ostensibly,universiade,pensions,influenza,bratislava,octave,refurbishment,gothenburg,putin,barangay,annapolis,breaststroke,illustrates,distorted,choreographed,promo,emphasizing,stakeholders,descends,exhibiting,intrinsic,invertebrates,evenly,roundabout,salts,formula_10,strata,inhibition,branching,stylistic,rumored,realises,mitochondrial,commuted,adherents,logos,bloomberg,telenovela,guineas,charcoal,engages,winery,reflective,siena,cambridgeshire,ventral,flashback,installing,engraving,grasses,traveller,rotated,proprietor,nationalities,precedence,sourced,trainers,cambodian,reductions,depleted,saharan,classifications,biochemistry,plaintiffs,arboretum,humanist,fictitious,aleppo,climates,bazaar,his/her,homogeneous,multiplication,moines,indexed,linguist,skeletal,foliage,societal,differentiated,informing,mammal,infancy,archival,cafes,malls,graeme,musee,schizophrenia,fargo,pronouns,derivation,descend,ascending,terminating,deviation,recaptured,confessions,weakening,tajikistan,bahadur,pasture,b/hip,donegal,supervising,sikhs,thinkers,euclidean,reinforcement,friars,portage,fuscous,lucknow,synchronized,assertion,choirs,privatization,corrosion,multitude,skyscraper,royalties,ligament,usable,spores,directs,clashed,stockport,fronted,dependency,contiguous,biologist,backstroke,powerhouse,frescoes,phylogenetic,welding,kildare,gabon,conveyed,augsburg,severn,continuum,sahib,lille,injuring,passeriformesfamily,succeeds,translating,unitarian,startup,turbulent,outlying,philanthropic,stanislaw,idols,claremont,conical,haryana,armagh,blended,implicit,conditioned,modulation,rochdale,labourers,coinage,shortstop,potsdam,gears,obesity,bestseller,advisers,bouts,comedians,jozef,lausanne,taxonomic,correlated,columbian,marne,indications,psychologists,libel,edict,beaufort,disadvantages,renal,finalized,racehorse,unconventional,disturbances,falsely,zoology,adorned,redesign,executing,narrower,commended,appliances,stalls,resurgence,saskatoon,miscellaneous,permitting,epoch,formula_11,cumbria,forefront,vedic,eastenders,disposed,supermarkets,rower,inhibitor,magnesium,colourful,yusuf,harrow,formulas,centrally,balancing,ionic,nocturnal,consolidate,ornate,raiding,charismatic,accelerate,nominate,residual,dhabi,commemorates,attribution,uninhabited,mindanao,atrocities,genealogical,romani,applicant,enactment,abstraction,trough,pulpit,minuscule,misconduct,grenades,timely,supplements,messaging,curvature,ceasefire,telangana,susquehanna,braking,redistribution,shreveport,neighbourhoods,gregorian,widowed,khuzestan,empowerment,scholastic,evangelist,peptide,topical,theorist,historia,thence,sudanese,museo,jurisprudence,masurian,frankish,headlined,recounted,netball,petitions,tolerant,hectare,truncated,southend,methane,captives,reigns,massif,subunit,acidic,weightlifting,footballers,sabah,britannia,tunisian,segregated,sawmill,withdrawing,unpaid,weaponry,somme,perceptions,unicode,alcoholism,durban,wrought,waterfalls,jihad,auschwitz,upland,eastbound,adjective,anhalt,evaluating,regimes,guildford,reproduced,pamphlets,hierarchical,maneuvers,hanoi,fabricated,repetition,enriched,arterial,replacements,tides,globalization,adequately,westbound,satisfactory,fleets,phosphorus,lastly,neuroscience,anchors,xinjiang,membranes,improvisation,shipments,orthodoxy,submissions,bolivian,mahmud,ramps,leyte,pastures,outlines,flees,transmitters,fares,sequential,stimulated,novice,alternately,symmetrical,breakaway,layered,baronets,lizards,blackish,edouard,horsepower,penang,principals,mercantile,maldives,overwhelmingly,hawke,rallied,prostate,conscription,juveniles,maccabi,carvings,strikers,sudbury,spurred,improves,lombardy,macquarie,parisian,elastic,distillery,shetland,humane,brentford,wrexham,warehouses,routines,encompassed,introductory,isfahan,instituto,palais,revolutions,sporadic,impoverished,portico,fellowships,speculative,enroll,dormant,adhere,fundamentally,sculpted,meritorious,template,upgrading,reformer,rectory,uncredited,indicative,creeks,galveston,radically,hezbollah,firearm,educating,prohibits,trondheim,locus,refit,headwaters,screenings,lowlands,wasps,coarse,attaining,sedimentary,perished,pitchfork,interned,cerro,stagecoach,aeronautical,liter,transitioned,haydn,inaccurate,legislatures,bromwich,knesset,spectroscopy,butte,asiatic,degraded,concordia,catastrophic,lobes,wellness,pensacola,periphery,hapoel,theta,horizontally,freiburg,liberalism,pleas,durable,warmian,offenses,mesopotamia,shandong,unsuitable,hospitalized,appropriately,phonetic,encompass,conversions,observes,illnesses,breakout,assigns,crowns,inhibitors,nightly,manifestation,fountains,maximize,alphabetical,sloop,expands,newtown,widening,gaddafi,commencing,camouflage,footprint,tyrol,barangays,universite,highlanders,budgets,query,lobbied,westchester,equator,stipulated,pointe,distinguishes,allotted,embankment,advises,storing,loyalists,fourier,rehearsals,starvation,gland,rihanna,tubular,expressive,baccalaureate,intersections,revered,carbonate,eritrea,craftsmen,cosmopolitan,sequencing,corridors,shortlisted,bangladeshi,persians,mimic,parades,repetitive,recommends,flanks,promoters,incompatible,teaming,ammonia,greyhound,solos,improper,legislator,newsweek,recurrent,vitro,cavendish,eireann,crises,prophets,mandir,strategically,guerrillas,formula_12,ghent,contenders,equivalence,drone,sociological,hamid,castes,statehood,aland,clinched,relaunched,tariffs,simulations,williamsburg,rotate,mediation,smallpox,harmonica,lodges,lavish,restrictive,o'sullivan,detainees,polynomials,echoes,intersecting,learners,elects,charlemagne,defiance,epsom,liszt,facilitating,absorbing,revelations,padua,pieter,pious,penultimate,mammalian,montenegrin,supplementary,widows,aromatic,croats,roanoke,trieste,legions,subdistrict,babylonian,grasslands,volga,violently,sparsely,oldies,telecommunication,respondents,quarries,downloadable,commandos,taxpayer,catalytic,malabar,afforded,copying,declines,nawab,junctions,assessing,filtering,classed,disused,compliant,christoph,gottingen,civilizations,hermitage,caledonian,whereupon,ethnically,springsteen,mobilization,terraces,indus,excel,zoological,enrichment,simulate,guitarists,registrar,cappella,invoked,reused,manchu,configured,uppsala,genealogy,mergers,casts,curricular,rebelled,subcontinent,horticultural,parramatta,orchestrated,dockyard,claudius,decca,prohibiting,turkmenistan,brahmin,clandestine,obligatory,elaborated,parasitic,helix,constraint,spearheaded,rotherham,eviction,adapting,albans,rescues,sociologist,guiana,convicts,occurrences,kamen,antennas,asturias,wheeled,sanitary,deterioration,trier,theorists,baseline,announcements,valea,planners,factual,serialized,serials,bilbao,demoted,fission,jamestown,cholera,alleviate,alteration,indefinite,sulfate,paced,climatic,valuation,artisans,proficiency,aegean,regulators,fledgling,sealing,influencing,servicemen,frequented,cancers,tambon,narayan,bankers,clarified,embodied,engraver,reorganisation,dissatisfied,dictated,supplemental,temperance,ratification,puget,nutrient,pretoria,papyrus,uniting,ascribed,cores,coptic,schoolhouse,barrio,1910s,armory,defected,transatlantic,regulates,ported,artefacts,specifies,boasted,scorers,mollusks,emitted,navigable,quakers,projective,dialogues,reunification,exponential,vastly,banners,unsigned,dissipated,halves,coincidentally,leasing,purported,escorting,estimation,foxes,lifespan,inflorescence,assimilation,showdown,staunch,prologue,ligand,superliga,telescopes,northwards,keynote,heaviest,taunton,redeveloped,vocalists,podlaskie,soyuz,rodents,azores,moravian,outset,parentheses,apparel,domestically,authoritative,polymers,monterrey,inhibit,launcher,jordanian,folds,taxis,mandates,singled,liechtenstein,subsistence,marxism,ousted,governorship,servicing,offseason,modernism,prism,devout,translators,islamist,chromosomes,pitted,bedfordshire,fabrication,authoritarian,javanese,leaflets,transient,substantive,predatory,sigismund,assassinate,diagrams,arrays,rediscovered,reclamation,spawning,fjord,peacekeeping,strands,fabrics,highs,regulars,tirana,ultraviolet,athenian,filly,barnet,naacp,nueva,favourites,terminates,showcases,clones,inherently,interpreting,bjorn,finely,lauded,unspecified,chola,pleistocene,insulation,antilles,donetsk,funnel,nutritional,biennale,reactivated,southport,primate,cavaliers,austrians,interspersed,restarted,suriname,amplifiers,wladyslaw,blockbuster,sportsman,minogue,brightness,benches,bridgeport,initiating,israelis,orbiting,newcomers,externally,scaling,transcribed,impairment,luxurious,longevity,impetus,temperament,ceilings,tchaikovsky,spreads,pantheon,bureaucracy,1820s,heraldic,villas,formula_13,galician,meath,avoidance,corresponded,headlining,connacht,seekers,rappers,solids,monograph,scoreless,opole,isotopes,himalayas,parodies,garments,microscopic,republished,havilland,orkney,demonstrators,pathogen,saturated,hellenistic,facilitates,aerodynamic,relocating,indochina,laval,astronomers,bequeathed,administrations,extracts,nagoya,torquay,demography,medicare,ambiguity,renumbered,pursuant,concave,syriac,electrode,dispersal,henan,bialystok,walsall,crystalline,puebla,janata,illumination,tianjin,enslaved,coloration,championed,defamation,grille,johor,rejoin,caspian,fatally,planck,workings,appointing,institutionalized,wessex,modernized,exemplified,regatta,jacobite,parochial,programmers,blending,eruptions,insurrection,regression,indices,sited,dentistry,mobilized,furnishings,levant,primaries,ardent,nagasaki,conqueror,dorchester,opined,heartland,amman,mortally,wellesley,bowlers,outputs,coveted,orthography,immersion,disrepair,disadvantaged,curate,childless,condensed,codice_1,remodeled,resultant,bolsheviks,superfamily,saxons,2010s,contractual,rivalries,malacca,oaxaca,magnate,vertebrae,quezon,olympiad,yucatan,tyres,macro,specialization,commendation,caliphate,gunnery,exiles,excerpts,fraudulent,adjustable,aramaic,interceptor,drumming,standardization,reciprocal,adolescents,federalist,aeronautics,favorably,enforcing,reintroduced,zhejiang,refining,biplane,banknotes,accordion,intersect,illustrating,summits,classmate,militias,biomass,massacres,epidemiology,reworked,wrestlemania,nantes,auditory,taxon,elliptical,chemotherapy,asserting,avoids,proficient,airmen,yellowstone,multicultural,alloys,utilization,seniority,kuyavian,huntsville,orthogonal,bloomington,cultivars,casimir,internment,repulsed,impedance,revolving,fermentation,parana,shutout,partnering,empowered,islamabad,polled,classify,amphibians,greyish,obedience,4x100,projectile,khyber,halfback,relational,d'ivoire,synonyms,endeavour,padma,customized,mastery,defenceman,berber,purge,interestingly,covent,promulgated,restricting,condemnation,hillsborough,walkers,privateer,intra,captaincy,naturalized,huffington,detecting,hinted,migrating,bayou,counterattack,anatomical,foraging,unsafe,swiftly,outdated,paraguayan,attire,masjid,endeavors,jerseys,triassic,quechua,growers,axial,accumulate,wastewater,cognition,fungal,animator,pagoda,kochi,uniformly,antibody,yerevan,hypotheses,combatants,italianate,draining,fragmentation,snowfall,formative,inversion,kitchener,identifier,additive,lucha,selects,ashland,cambrian,racetrack,trapping,congenital,primates,wavelengths,expansions,yeomanry,harcourt,wealthiest,awaited,punta,intervening,aggressively,vichy,piloted,midtown,tailored,heyday,metadata,guadalcanal,inorganic,hadith,pulses,francais,tangent,scandals,erroneously,tractors,pigment,constabulary,jiangsu,landfill,merton,basalt,astor,forbade,debuts,collisions,exchequer,stadion,roofed,flavour,sculptors,conservancy,dissemination,electrically,undeveloped,existent,surpassing,pentecostal,manifested,amend,formula_14,superhuman,barges,tunis,analytics,argyll,liquids,mechanized,domes,mansions,himalayan,indexing,reuters,nonlinear,purification,exiting,timbers,triangles,decommissioning,departmental,causal,fonts,americana,sept.,seasonally,incomes,razavi,sheds,memorabilia,rotational,terre,sutra,protege,yarmouth,grandmaster,annum,looted,imperialism,variability,liquidation,baptised,isotope,showcasing,milling,rationale,hammersmith,austen,streamlined,acknowledging,contentious,qaleh,breadth,turing,referees,feral,toulon,unofficially,identifiable,standout,labeling,dissatisfaction,jurgen,angrily,featherweight,cantons,constrained,dominates,standalone,relinquished,theologians,markedly,italics,downed,nitrate,likened,gules,craftsman,singaporean,pixels,mandela,moray,parity,departement,antigen,academically,burgh,brahma,arranges,wounding,triathlon,nouveau,vanuatu,banded,acknowledges,unearthed,stemming,authentication,byzantines,converge,nepali,commonplace,deteriorating,recalling,palette,mathematicians,greenish,pictorial,ahmedabad,rouen,validation,u.s.a.,'best,malvern,archers,converter,undergoes,fluorescent,logistical,notification,transvaal,illicit,symphonies,stabilization,worsened,fukuoka,decrees,enthusiast,seychelles,blogger,louvre,dignitaries,burundi,wreckage,signage,pinyin,bursts,federer,polarization,urbana,lazio,schism,nietzsche,venerable,administers,seton,kilograms,invariably,kathmandu,farmed,disqualification,earldom,appropriated,fluctuations,kermanshah,deployments,deformation,wheelbase,maratha,psalm,bytes,methyl,engravings,skirmish,fayette,vaccines,ideally,astrology,breweries,botanic,opposes,harmonies,irregularities,contended,gaulle,prowess,constants,aground,filipinos,fresco,ochreous,jaipur,willamette,quercus,eastwards,mortars,champaign,braille,reforming,horned,hunan,spacious,agitation,draught,specialties,flourishing,greensboro,necessitated,swedes,elemental,whorls,hugely,structurally,plurality,synthesizers,embassies,assad,contradictory,inference,discontent,recreated,inspectors,unicef,commuters,embryo,modifying,stints,numerals,communicated,boosted,trumpeter,brightly,adherence,remade,leases,restrained,eucalyptus,dwellers,planar,grooves,gainesville,daimler,anzac,szczecin,cornerback,prized,peking,mauritania,khalifa,motorized,lodging,instrumentalist,fortresses,cervical,formula_15,passerine,sectarian,researches,apprenticed,reliefs,disclose,gliding,repairing,queue,kyushu,literate,canoeing,sacrament,separatist,calabria,parkland,flowed,investigates,statistically,visionary,commits,dragoons,scrolls,premieres,revisited,subdued,censored,patterned,elective,outlawed,orphaned,leyland,richly,fujian,miniatures,heresy,plaques,countered,nonfiction,exponent,moravia,dispersion,marylebone,midwestern,enclave,ithaca,federated,electronically,handheld,microscopy,tolls,arrivals,climbers,continual,cossacks,moselle,deserts,ubiquitous,gables,forecasts,deforestation,vertebrates,flanking,drilled,superstructure,inspected,consultative,bypassed,ballast,subsidy,socioeconomic,relic,grenada,journalistic,administering,accommodated,collapses,appropriation,reclassified,foreword,porte,assimilated,observance,fragmented,arundel,thuringia,gonzaga,shenzhen,shipyards,sectional,ayrshire,sloping,dependencies,promenade,ecuadorian,mangrove,constructs,goalscorer,heroism,iteration,transistor,omnibus,hampstead,cochin,overshadowed,chieftain,scalar,finishers,ghanaian,abnormalities,monoplane,encyclopaedia,characterize,travancore,baronetage,bearers,biking,distributes,paving,christened,inspections,banco,humber,corinth,quadratic,albanians,lineages,majored,roadside,inaccessible,inclination,darmstadt,fianna,epilepsy,propellers,papacy,montagu,bhutto,sugarcane,optimized,pilasters,contend,batsmen,brabant,housemates,sligo,ascot,aquinas,supervisory,accorded,gerais,echoed,nunavut,conservatoire,carniola,quartermaster,gminas,impeachment,aquitaine,reformers,quarterfinal,karlsruhe,accelerator,coeducational,archduke,gelechiidae,seaplane,dissident,frenchman,palau,depots,hardcover,aachen,darreh,denominational,groningen,parcels,reluctance,drafts,elliptic,counters,decreed,airship,devotional,contradiction,formula_16,undergraduates,qualitative,guatemalan,slavs,southland,blackhawks,detrimental,abolish,chechen,manifestations,arthritis,perch,fated,hebei,peshawar,palin,immensely,havre,totalling,rampant,ferns,concourse,triples,elites,olympian,larva,herds,lipid,karabakh,distal,monotypic,vojvodina,batavia,multiplied,spacing,spellings,pedestrians,parchment,glossy,industrialization,dehydrogenase,patriotism,abolitionist,mentoring,elizabethan,figurative,dysfunction,abyss,constantin,middletown,stigma,mondays,gambia,gaius,israelites,renounced,nepalese,overcoming,buren,sulphur,divergence,predation,looting,iberia,futuristic,shelved,anthropological,innsbruck,escalated,clermont,entrepreneurial,benchmark,mechanically,detachments,populist,apocalyptic,exited,embryonic,stanza,readership,chiba,landlords,expansive,boniface,therapies,perpetrators,whitehall,kassel,masts,carriageway,clinch,pathogens,mazandaran,undesirable,teutonic,miocene,nagpur,juris,cantata,compile,diffuse,dynastic,reopening,comptroller,o'neal,flourish,electing,scientifically,departs,welded,modal,cosmology,fukushima,libertadores,chang'an,asean,generalization,localization,afrikaans,cricketers,accompanies,emigrants,esoteric,southwards,shutdown,prequel,fittings,innate,wrongly,equitable,dictionaries,senatorial,bipolar,flashbacks,semitism,walkway,lyrically,legality,sorbonne,vigorously,durga,samoan,karel,interchanges,patna,decider,registering,electrodes,anarchists,excursion,overthrown,gilan,recited,michelangelo,advertiser,kinship,taboo,cessation,formula_17,premiers,traversed,madurai,poorest,torneo,exerted,replicate,spelt,sporadically,horde,landscaping,razed,hindered,esperanto,manchuria,propellant,jalan,baha'is,sikkim,linguists,pandit,racially,ligands,dowry,francophone,escarpment,behest,magdeburg,mainstay,villiers,yangtze,grupo,conspirators,martyrdom,noticeably,lexical,kazakh,unrestricted,utilised,sired,inhabits,proofs,joseon,pliny,minted,buddhists,cultivate,interconnected,reuse,viability,australasian,derelict,resolving,overlooks,menon,stewardship,playwrights,thwarted,filmfare,disarmament,protections,bundles,sidelined,hypothesized,singer/songwriter,forage,netted,chancery,townshend,restructured,quotation,hyperbolic,succumbed,parliaments,shenandoah,apical,kibbutz,storeys,pastors,lettering,ukrainians,hardships,chihuahua,avail,aisles,taluka,antisemitism,assent,ventured,banksia,seamen,hospice,faroe,fearful,woreda,outfield,chlorine,transformer,tatar,panoramic,pendulum,haarlem,styria,cornice,importing,catalyzes,subunits,enamel,bakersfield,realignment,sorties,subordinates,deanery,townland,gunmen,tutelage,evaluations,allahabad,thrace,veneto,mennonite,sharia,subgenus,satisfies,puritan,unequal,gastrointestinal,ordinances,bacterium,horticulture,argonauts,adjectives,arable,duets,visualization,woolwich,revamped,euroleague,thorax,completes,originality,vasco,freighter,sardar,oratory,sects,extremes,signatories,exporting,arisen,exacerbated,departures,saipan,furlongs,d'italia,goring,dakar,conquests,docked,offshoot,okrug,referencing,disperse,netting,summed,rewritten,articulation,humanoid,spindle,competitiveness,preventive,facades,westinghouse,wycombe,synthase,emulate,fostering,abdel,hexagonal,myriad,caters,arjun,dismay,axiom,psychotherapy,colloquial,complemented,martinique,fractures,culmination,erstwhile,atrium,electronica,anarchism,nadal,montpellier,algebras,submitting,adopts,stemmed,overcame,internacional,asymmetric,gallipoli,gliders,flushing,extermination,hartlepool,tesla,interwar,patriarchal,hitherto,ganges,combatant,marred,philology,glastonbury,reversible,isthmus,undermined,southwark,gateshead,andalusia,remedies,hastily,optimum,smartphone,evade,patrolled,beheaded,dopamine,waivers,ugandan,gujarati,densities,predicting,intestinal,tentative,interstellar,kolonia,soloists,penetrated,rebellions,qeshlaq,prospered,colegio,deficits,konigsberg,deficient,accessing,relays,kurds,politburo,codified,incarnations,occupancy,cossack,metaphysical,deprivation,chopra,piccadilly,formula_18,makeshift,protestantism,alaskan,frontiers,faiths,tendon,dunkirk,durability,autobots,bonuses,coinciding,emails,gunboat,stucco,magma,neutrons,vizier,subscriptions,visuals,envisaged,carpets,smoky,schema,parliamentarian,immersed,domesticated,parishioners,flinders,diminutive,mahabharata,ballarat,falmouth,vacancies,gilded,twigs,mastering,clerics,dalmatia,islington,slogans,compressor,iconography,congolese,sanction,blends,bulgarians,moderator,outflow,textures,safeguard,trafalgar,tramways,skopje,colonialism,chimneys,jazeera,organisers,denoting,motivations,ganga,longstanding,deficiencies,gwynedd,palladium,holistic,fascia,preachers,embargo,sidings,busan,ignited,artificially,clearwater,cemented,northerly,salim,equivalents,crustaceans,oberliga,quadrangle,historiography,romanians,vaults,fiercely,incidental,peacetime,tonal,bhopal,oskar,radha,pesticides,timeslot,westerly,cathedrals,roadways,aldershot,connectors,brahmins,paler,aqueous,gustave,chromatic,linkage,lothian,specialises,aggregation,tributes,insurgent,enact,hampden,ghulam,federations,instigated,lyceum,fredrik,chairmanship,floated,consequent,antagonists,intimidation,patriarchate,warbler,heraldry,entrenched,expectancy,habitation,partitions,widest,launchers,nascent,ethos,wurzburg,lycee,chittagong,mahatma,merseyside,asteroids,yokosuka,cooperatives,quorum,redistricting,bureaucratic,yachts,deploying,rustic,phonology,chorale,cellist,stochastic,crucifixion,surmounted,confucian,portfolios,geothermal,crested,calibre,tropics,deferred,nasir,iqbal,persistence,essayist,chengdu,aborigines,fayetteville,bastion,interchangeable,burlesque,kilmarnock,specificity,tankers,colonels,fijian,quotations,enquiry,quito,palmerston,delle,multidisciplinary,polynesian,iodine,antennae,emphasised,manganese,baptists,galilee,jutland,latent,excursions,skepticism,tectonic,precursors,negligible,musique,misuse,vitoria,expressly,veneration,sulawesi,footed,mubarak,chongqing,chemically,midday,ravaged,facets,varma,yeovil,ethnographic,discounted,physicists,attache,disbanding,essen,shogunate,cooperated,waikato,realising,motherwell,pharmacology,sulfide,inward,expatriate,devoid,cultivar,monde,andean,groupings,goran,unaffected,moldovan,postdoctoral,coleophora,delegated,pronoun,conductivity,coleridge,disapproval,reappeared,microbial,campground,olsztyn,fostered,vaccination,rabbinical,champlain,milestones,viewership,caterpillar,effected,eupithecia,financier,inferred,uzbek,bundled,bandar,balochistan,mysticism,biosphere,holotype,symbolizes,lovecraft,photons,abkhazia,swaziland,subgroups,measurable,falkirk,valparaiso,ashok,discriminatory,rarity,tabernacle,flyweight,jalisco,westernmost,antiquarian,extracellular,margrave,colspan=9,midsummer,digestive,reversing,burgeoning,substitutes,medallist,khrushchev,guerre,folio,detonated,partido,plentiful,aggregator,medallion,infiltration,shaded,santander,fared,auctioned,permian,ramakrishna,andorra,mentors,diffraction,bukit,potentials,translucent,feminists,tiers,protracted,coburg,wreath,guelph,adventurer,he/she,vertebrate,pipelines,celsius,outbreaks,australasia,deccan,garibaldi,unionists,buildup,biochemical,reconstruct,boulders,stringent,barbed,wording,furnaces,pests,befriends,organises,popes,rizal,tentacles,cadre,tallahassee,punishments,occidental,formatted,mitigation,rulings,rubens,cascades,inducing,choctaw,volta,synagogues,movable,altarpiece,mitigate,practise,intermittently,encountering,memberships,earns,signify,retractable,amounting,pragmatic,wilfrid,dissenting,divergent,kanji,reconstituted,devonian,constitutions,levied,hendrik,starch,costal,honduran,ditches,polygon,eindhoven,superstars,salient,argus,punitive,purana,alluvial,flaps,inefficient,retracted,advantageous,quang,andersson,danville,binghamton,symbolize,conclave,shaanxi,silica,interpersonal,adept,frans,pavilions,lubbock,equip,sunken,limburg,activates,prosecutions,corinthian,venerated,shootings,retreats,parapet,orissa,riviere,animations,parodied,offline,metaphysics,bluffs,plume,piety,fruition,subsidized,steeplechase,shanxi,eurasia,angled,forecasting,suffragan,ashram,larval,labyrinth,chronicler,summaries,trailed,merges,thunderstorms,filtered,formula_19,advertisers,alpes,informatics,parti,constituting,undisputed,certifications,javascript,molten,sclerosis,rumoured,boulogne,hmong,lewes,breslau,notts,bantu,ducal,messengers,radars,nightclubs,bantamweight,carnatic,kaunas,fraternal,triggering,controversially,londonderry,visas,scarcity,offaly,uprisings,repelled,corinthians,pretext,kuomintang,kielce,empties,matriculated,pneumatic,expos,agile,treatises,midpoint,prehistory,oncology,subsets,hydra,hypertension,axioms,wabash,reiterated,swapped,achieves,premio,ageing,overture,curricula,challengers,subic,selangor,liners,frontline,shutter,validated,normalized,entertainers,molluscs,maharaj,allegation,youngstown,synth,thoroughfare,regionally,pillai,transcontinental,pedagogical,riemann,colonia,easternmost,tentatively,profiled,herefordshire,nativity,meuse,nucleotide,inhibits,huntingdon,throughput,recorders,conceding,domed,homeowners,centric,gabled,canoes,fringes,breeder,subtitled,fluoride,haplogroup,zionism,izmir,phylogeny,kharkiv,romanticism,adhesion,usaaf,delegations,lorestan,whalers,biathlon,vaulted,mathematically,pesos,skirmishes,heisman,kalamazoo,gesellschaft,launceston,interacts,quadruple,kowloon,psychoanalysis,toothed,ideologies,navigational,valence,induces,lesotho,frieze,rigging,undercarriage,explorations,spoof,eucharist,profitability,virtuoso,recitals,subterranean,sizeable,herodotus,subscriber,huxley,pivot,forewing,warring,boleslaw,bharatiya,suffixes,trois,percussionist,downturn,garrisons,philosophies,chants,mersin,mentored,dramatist,guilds,frameworks,thermodynamic,venomous,mehmed,assembling,rabbinic,hegemony,replicas,enlargement,claimant,retitled,utica,dumfries,metis,deter,assortment,tubing,afflicted,weavers,rupture,ornamentation,transept,salvaged,upkeep,callsign,rajput,stevenage,trimmed,intracellular,synchronization,consular,unfavorable,royalists,goldwyn,fasting,hussars,doppler,obscurity,currencies,amiens,acorn,tagore,townsville,gaussian,migrations,porta,anjou,graphite,seaport,monographs,gladiators,metrics,calligraphy,sculptural,swietokrzyskie,tolombeh,eredivisie,shoals,queries,carts,exempted,fiberglass,mirrored,bazar,progeny,formalized,mukherjee,professed,amazon.com,cathode,moreton,removable,mountaineers,nagano,transplantation,augustinian,steeply,epilogue,adapter,decisively,accelerating,mediaeval,substituting,tasman,devonshire,litres,enhancements,himmler,nephews,bypassing,imperfect,argentinian,reims,integrates,sochi,ascii,licences,niches,surgeries,fables,versatility,indra,footpath,afonso,crore,evaporation,encodes,shelling,conformity,simplify,updating,quotient,overt,firmware,umpires,architectures,eocene,conservatism,secretion,embroidery,f.c..,tuvalu,mosaics,shipwreck,prefectural,cohort,grievances,garnering,centerpiece,apoptosis,djibouti,bethesda,formula_20,shonen,richland,justinian,dormitories,meteorite,reliably,obtains,pedagogy,hardness,cupola,manifolds,amplification,steamers,familial,dumbarton,jerzy,genital,maidstone,salinity,grumman,signifies,presbytery,meteorology,procured,aegis,streamed,deletion,nuestra,mountaineering,accords,neuronal,khanate,grenoble,axles,dispatches,tokens,turku,auctions,propositions,planters,proclaiming,recommissioned,stravinsky,obverse,bombarded,waged,saviour,massacred,reformist,purportedly,resettlement,ravenna,embroiled,minden,revitalization,hikers,bridging,torpedoed,depletion,nizam,affectionately,latitudes,lubeck,spore,polymerase,aarhus,nazism,101st,buyout,galerie,diets,overflow,motivational,renown,brevet,deriving,melee,goddesses,demolish,amplified,tamworth,retake,brokerage,beneficiaries,henceforth,reorganised,silhouette,browsers,pollutants,peron,lichfield,encircled,defends,bulge,dubbing,flamenco,coimbatore,refinement,enshrined,grizzlies,capacitor,usefulness,evansville,interscholastic,rhodesian,bulletins,diamondbacks,rockers,platted,medalists,formosa,transporter,slabs,guadeloupe,disparate,concertos,violins,regaining,mandible,untitled,agnostic,issuance,hamiltonian,brampton,srpska,homology,downgraded,florentine,epitaph,kanye,rallying,analysed,grandstand,infinitely,antitrust,plundered,modernity,colspan=3|total,amphitheatre,doric,motorists,yemeni,carnivorous,probabilities,prelate,struts,scrapping,bydgoszcz,pancreatic,signings,predicts,compendium,ombudsman,apertura,appoints,rebbe,stereotypical,valladolid,clustered,touted,plywood,inertial,kettering,curving,d'honneur,housewives,grenadier,vandals,barbarossa,necked,waltham,reputedly,jharkhand,cistercian,pursues,viscosity,organiser,cloister,islet,stardom,moorish,himachal,strives,scripps,staggered,blasts,westwards,millimeters,angolan,hubei,agility,admirals,mordellistena,coincides,platte,vehicular,cordillera,riffs,schoolteacher,canaan,acoustics,tinged,reinforcing,concentrates,daleks,monza,selectively,musik,polynesia,exporter,reviving,macclesfield,bunkers,ballets,manors,caudal,microbiology,primes,unbroken,outcry,flocks,pakhtunkhwa,abelian,toowoomba,luminous,mould,appraisal,leuven,experimentally,interoperability,hideout,perak,specifying,knighthood,vasily,excerpt,computerized,niels,networked,byzantium,reaffirmed,geographer,obscured,fraternities,mixtures,allusion,accra,lengthened,inquest,panhandle,pigments,revolts,bluetooth,conjugate,overtaken,foray,coils,breech,streaks,impressionist,mendelssohn,intermediary,panned,suggestive,nevis,upazila,rotunda,mersey,linnaeus,anecdotes,gorbachev,viennese,exhaustive,moldavia,arcades,irrespective,orator,diminishing,predictive,cohesion,polarized,montage,avian,alienation,conus,jaffna,urbanization,seawater,extremity,editorials,scrolling,dreyfus,traverses,topographic,gunboats,extratropical,normans,correspondents,recognises,millennia,filtration,ammonium,voicing,complied,prefixes,diplomas,figurines,weakly,gated,oscillator,lucerne,embroidered,outpatient,airframe,fractional,disobedience,quarterbacks,formula_21,shinto,chiapas,epistle,leakage,pacifist,avignon,penrith,renders,mantua,screenplays,gustaf,tesco,alphabetically,rations,discharges,headland,tapestry,manipur,boolean,mediator,ebenezer,subchannel,fable,bestselling,ateneo,trademarks,recurrence,dwarfs,britannica,signifying,vikram,mediate,condensation,censuses,verbandsgemeinde,cartesian,sprang,surat,britons,chelmsford,courtenay,statistic,retina,abortions,liabilities,closures,mississauga,skyscrapers,saginaw,compounded,aristocrat,msnbc,stavanger,septa,interpretive,hinder,visibly,seeding,shutouts,irregularly,quebecois,footbridge,hydroxide,implicitly,lieutenants,simplex,persuades,midshipman,heterogeneous,officiated,crackdown,lends,tartu,altars,fractions,dissidents,tapered,modernisation,scripting,blazon,aquaculture,thermodynamics,sistan,hasidic,bellator,pavia,propagated,theorized,bedouin,transnational,mekong,chronicled,declarations,kickstarter,quotas,runtime,duquesne,broadened,clarendon,brownsville,saturation,tatars,electorates,malayan,replicated,observable,amphitheater,endorsements,referral,allentown,mormons,pantomime,eliminates,typeface,allegorical,varna,conduction,evoke,interviewer,subordinated,uyghur,landscaped,conventionally,ascend,edifice,postulated,hanja,whitewater,embarking,musicologist,tagalog,frontage,paratroopers,hydrocarbons,transliterated,nicolae,viewpoints,surrealist,asheville,falklands,hacienda,glide,opting,zimbabwean,discal,mortgages,nicaraguan,yadav,ghosh,abstracted,castilian,compositional,cartilage,intergovernmental,forfeited,importation,rapping,artes,republika,narayana,condominium,frisian,bradman,duality,marche,extremist,phosphorylation,genomes,allusions,valencian,habeas,ironworks,multiplex,harpsichord,emigrate,alternated,breda,waffen,smartphones,familiarity,regionalliga,herbaceous,piping,dilapidated,carboniferous,xviii,critiques,carcinoma,sagar,chippewa,postmodern,neapolitan,excludes,notoriously,distillation,tungsten,richness,installments,monoxide,chand,privatisation,molded,maths,projectiles,luoyang,epirus,lemma,concentric,incline,erroneous,sideline,gazetted,leopards,fibres,renovate,corrugated,unilateral,repatriation,orchestration,saeed,rockingham,loughborough,formula_22,bandleader,appellation,openness,nanotechnology,massively,tonnage,dunfermline,exposes,moored,ridership,motte,eurobasket,majoring,feats,silla,laterally,playlist,downwards,methodologies,eastbourne,daimyo,cellulose,leyton,norwalk,oblong,hibernian,opaque,insular,allegory,camogie,inactivation,favoring,masterpieces,rinpoche,serotonin,portrayals,waverley,airliner,longford,minimalist,outsourcing,excise,meyrick,qasim,organisational,synaptic,farmington,gorges,scunthorpe,zoned,tohoku,librarians,davao,decor,theatrically,brentwood,pomona,acquires,planter,capacitors,synchronous,skateboarding,coatings,turbocharged,ephraim,capitulation,scoreboard,hebrides,ensues,cereals,ailing,counterpoint,duplication,antisemitic,clique,aichi,oppressive,transcendental,incursions,rename,renumbering,powys,vestry,bitterly,neurology,supplanted,affine,susceptibility,orbiter,activating,overlaps,ecoregion,raman,canoer,darfur,microorganisms,precipitated,protruding,torun,anthropologists,rennes,kangaroos,parliamentarians,edits,littoral,archived,begum,rensselaer,microphones,ypres,empower,etruscan,wisden,montfort,calibration,isomorphic,rioting,kingship,verbally,smyrna,cohesive,canyons,fredericksburg,rahul,relativistic,micropolitan,maroons,industrialized,henchmen,uplift,earthworks,mahdi,disparity,cultured,transliteration,spiny,fragmentary,extinguished,atypical,inventors,biosynthesis,heralded,curacao,anomalies,aeroplane,surya,mangalore,maastricht,ashkenazi,fusiliers,hangzhou,emitting,monmouthshire,schwarzenegger,ramayana,peptides,thiruvananthapuram,alkali,coimbra,budding,reasoned,epithelial,harbors,rudimentary,classically,parque,ealing,crusades,rotations,riparian,pygmy,inertia,revolted,microprocessor,calendars,solvents,kriegsmarine,accademia,cheshmeh,yoruba,ardabil,mitra,genomic,notables,propagate,narrates,univision,outposts,polio,birkenhead,urinary,crocodiles,pectoral,barrymore,deadliest,rupees,chaim,protons,comical,astrophysics,unifying,formula_23,vassals,cortical,audubon,pedals,tenders,resorted,geophysical,lenders,recognising,tackling,lanarkshire,doctrinal,annan,combating,guangxi,estimating,selectors,tribunals,chambered,inhabiting,exemptions,curtailed,abbasid,kandahar,boron,bissau,150th,codenamed,wearer,whorl,adhered,subversive,famer,smelting,inserting,mogadishu,zoologist,mosul,stumps,almanac,olympiacos,stamens,participatory,cults,honeycomb,geologists,dividend,recursive,skiers,reprint,pandemic,liber,percentages,adversely,stoppage,chieftains,tubingen,southerly,overcrowding,unorganized,hangars,fulfil,hails,cantilever,woodbridge,pinus,wiesbaden,fertilization,fluorescence,enhances,plenary,troublesome,episodic,thrissur,kickboxing,allele,staffing,garda,televisions,philatelic,spacetime,bullpen,oxides,leninist,enrolling,inventive,truro,compatriot,ruskin,normative,assay,gotha,murad,illawarra,gendarmerie,strasse,mazraeh,rebounded,fanfare,liaoning,rembrandt,iranians,emirate,governs,latency,waterfowl,chairmen,katowice,aristocrats,eclipsed,sentient,sonatas,interplay,sacking,decepticons,dynamical,arbitrarily,resonant,petar,velocities,alludes,wastes,prefectures,belleville,sensibility,salvadoran,consolidating,medicaid,trainees,vivekananda,molar,porous,upload,youngster,infused,doctorates,wuhan,annihilation,enthusiastically,gamespot,kanpur,accumulating,monorail,operetta,tiling,sapporo,finns,calvinist,hydrocarbon,sparrows,orienteering,cornelis,minster,vuelta,plebiscite,embraces,panchayats,focussed,remediation,brahman,olfactory,reestablished,uniqueness,northumbria,rwandan,predominately,abode,ghats,balances,californian,uptake,bruges,inert,westerns,reprints,cairn,yarra,resurfaced,audible,rossini,regensburg,italiana,fleshy,irrigated,alerts,yahya,varanasi,marginalized,expatriates,cantonment,normandie,sahitya,directives,rounder,hulls,fictionalized,constables,inserts,hipped,potosi,navies,biologists,canteen,husbandry,augment,fortnight,assamese,kampala,o'keefe,paleolithic,bluish,promontory,consecutively,striving,niall,reuniting,dipole,friendlies,disapproved,thrived,netflix,liberian,dielectric,medway,strategist,sankt,pickups,hitters,encode,rerouted,claimants,anglesey,partitioned,cavan,flutes,reared,repainted,armaments,bowed,thoracic,balliol,piero,chaplains,dehestan,sender,junkers,sindhi,sickle,dividends,metallurgy,honorific,berths,namco,springboard,resettled,gansu,copyrighted,criticizes,utopian,bendigo,ovarian,binomial,spaceflight,oratorio,proprietors,supergroup,duplicated,foreground,strongholds,revolved,optimize,layouts,westland,hurler,anthropomorphic,excelsior,merchandising,reeds,vetoed,cryptography,hollyoaks,monash,flooring,ionian,resilience,johnstown,resolves,lawmakers,alegre,wildcards,intolerance,subculture,selector,slums,formulate,bayonet,istvan,restitution,interchangeably,awakens,rostock,serpentine,oscillation,reichstag,phenotype,recessed,piotr,annotated,preparedness,consultations,clausura,preferential,euthanasia,genoese,outcrops,freemasonry,geometrical,genesee,islets,prometheus,panamanian,thunderbolt,terraced,stara,shipwrecks,futebol,faroese,sharqi,aldermen,zeitung,unify,formula_24,humanism,syntactic,earthen,blyth,taxed,rescinded,suleiman,cymru,dwindled,vitality,superieure,resupply,adolphe,ardennes,rajiv,profiling,olympique,gestation,interfaith,milosevic,tagline,funerary,druze,silvery,plough,shrubland,relaunch,disband,nunatak,minimizing,excessively,waned,attaching,luminosity,bugle,encampment,electrostatic,minesweeper,dubrovnik,rufous,greenock,hochschule,assyrians,extracting,malnutrition,priya,attainment,anhui,connotations,predicate,seabirds,deduced,pseudonyms,gopal,plovdiv,refineries,imitated,kwazulu,terracotta,tenets,discourses,brandeis,whigs,dominions,pulmonate,landslides,tutors,determinant,richelieu,farmstead,tubercles,technicolor,hegel,redundancy,greenpeace,shortening,mules,distilled,xxiii,fundamentalist,acrylic,outbuildings,lighted,corals,signaled,transistors,cavite,austerity,76ers,exposures,dionysius,outlining,commutative,permissible,knowledgeable,howrah,assemblage,inhibited,crewmen,mbit/s,pyramidal,aberdeenshire,bering,rotates,atheism,howitzer,saone,lancet,fermented,contradicted,materiel,ofsted,numeric,uniformity,josephus,nazarene,kuwaiti,noblemen,pediment,emergent,campaigner,akademi,murcia,perugia,gallen,allsvenskan,finned,cavities,matriculation,rosters,twickenham,signatory,propel,readable,contends,artisan,flamboyant,reggio,italo,fumbles,widescreen,rectangle,centimetres,collaborates,envoys,rijeka,phonological,thinly,refractive,civilisation,reductase,cognate,dalhousie,monticello,lighthouses,jitsu,luneburg,socialite,fermi,collectible,optioned,marquee,jokingly,architecturally,kabir,concubine,nationalisation,watercolor,wicklow,acharya,pooja,leibniz,rajendra,nationalized,stalemate,bloggers,glutamate,uplands,shivaji,carolingian,bucuresti,dasht,reappears,muscat,functionally,formulations,hinged,hainan,catechism,autosomal,incremental,asahi,coeur,diversification,multilateral,fewest,recombination,finisher,harrogate,hangul,feasts,photovoltaic,paget,liquidity,alluded,incubation,applauded,choruses,malagasy,hispanics,bequest,underparts,cassava,kazimierz,gastric,eradication,mowtowr,tyrosine,archbishopric,e9e9e9,unproductive,uxbridge,hydrolysis,harbours,officio,deterministic,devonport,kanagawa,breaches,freetown,rhinoceros,chandigarh,janos,sanatorium,liberator,inequalities,agonist,hydrophobic,constructors,nagorno,snowboarding,welcomes,subscribed,iloilo,resuming,catalysts,stallions,jawaharlal,harriers,definitively,roughriders,hertford,inhibiting,elgar,randomized,incumbents,episcopate,rainforests,yangon,improperly,kemal,interpreters,diverged,uttarakhand,umayyad,phnom,panathinaikos,shabbat,diode,jiangxi,forbidding,nozzle,artistry,licensee,processions,staffs,decimated,expressionism,shingle,palsy,ontology,mahayana,maribor,sunil,hostels,edwardian,jetty,freehold,overthrew,eukaryotic,schuylkill,rawalpindi,sheath,recessive,ferenc,mandibles,berlusconi,confessor,convergent,ababa,slugging,rentals,sephardic,equivalently,collagen,markov,dynamically,hailing,depressions,sprawling,fairgrounds,indistinguishable,plutarch,pressurized,banff,coldest,braunschweig,mackintosh,sociedad,wittgenstein,tromso,airbase,lecturers,subtitle,attaches,purified,contemplated,dreamworks,telephony,prophetic,rockland,aylesbury,biscay,coherence,aleksandar,judoka,pageants,theses,homelessness,luthor,sitcoms,hinterland,fifths,derwent,privateers,enigmatic,nationalistic,instructs,superimposed,conformation,tricycle,dusan,attributable,unbeknownst,laptops,etching,archbishops,ayatollah,cranial,gharbi,interprets,lackawanna,abingdon,saltwater,tories,lender,minaj,ancillary,ranching,pembrokeshire,topographical,plagiarism,murong,marque,chameleon,assertions,infiltrated,guildhall,reverence,schenectady,formula_25,kollam,notary,mexicana,initiates,abdication,basra,theorems,ionization,dismantling,eared,censors,budgetary,numeral,verlag,excommunicated,distinguishable,quarried,cagliari,hindustan,symbolizing,watertown,descartes,relayed,enclosures,militarily,sault,devolved,dalian,djokovic,filaments,staunton,tumour,curia,villainous,decentralized,galapagos,moncton,quartets,onscreen,necropolis,brasileiro,multipurpose,alamos,comarca,jorgen,concise,mercia,saitama,billiards,entomologist,montserrat,lindbergh,commuting,lethbridge,phoenician,deviations,anaerobic,denouncing,redoubt,fachhochschule,principalities,negros,announcers,seconded,parrots,konami,revivals,approving,devotee,riyadh,overtook,morecambe,lichen,expressionist,waterline,silverstone,geffen,sternites,aspiration,behavioural,grenville,tripura,mediums,genders,pyotr,charlottesville,sacraments,programmable,ps100,shackleton,garonne,sumerian,surpass,authorizing,interlocking,lagoons,voiceless,advert,steeple,boycotted,alouettes,yosef,oxidative,sassanid,benefiting,sayyid,nauru,predetermined,idealism,maxillary,polymerization,semesters,munchen,conor,outfitted,clapham,progenitor,gheorghe,observational,recognitions,numerically,colonized,hazrat,indore,contaminants,fatality,eradicate,assyria,convocation,cameos,skillful,skoda,corfu,confucius,overtly,ramadan,wollongong,placements,d.c..,permutation,contemporaneous,voltages,elegans,universitat,samar,plunder,dwindling,neuter,antonin,sinhala,campania,solidified,stanzas,fibrous,marburg,modernize,sorcery,deutscher,florets,thakur,disruptive,infielder,disintegration,internazionale,vicariate,effigy,tripartite,corrective,klamath,environs,leavenworth,sandhurst,workmen,compagnie,hoseynabad,strabo,palisades,ordovician,sigurd,grandsons,defection,viacom,sinhalese,innovator,uncontrolled,slavonic,indexes,refrigeration,aircrew,superbike,resumption,neustadt,confrontations,arras,hindenburg,ripon,embedding,isomorphism,dwarves,matchup,unison,lofty,argos,louth,constitutionally,transitive,newington,facelift,degeneration,perceptual,aviators,enclosing,igneous,symbolically,academician,constitutionality,iso/iec,sacrificial,maturation,apprentices,enzymology,naturalistic,hajji,arthropods,abbess,vistula,scuttled,gradients,pentathlon,etudes,freedmen,melaleuca,thrice,conductive,sackville,franciscans,stricter,golds,kites,worshiped,monsignor,trios,orally,tiered,primacy,bodywork,castleford,epidemics,alveolar,chapelle,chemists,hillsboro,soulful,warlords,ngati,huguenot,diurnal,remarking,luger,motorways,gauss,jahan,cutoff,proximal,bandai,catchphrase,jonubi,ossetia,codename,codice_2,throated,itinerant,chechnya,riverfront,leela,evoked,entailed,zamboanga,rejoining,circuitry,haymarket,khartoum,feuds,braced,miyazaki,mirren,lubusz,caricature,buttresses,attrition,characterizes,widnes,evanston,materialism,contradictions,marist,midrash,gainsborough,ulithi,turkmen,vidya,escuela,patrician,inspirations,reagent,premierships,humanistic,euphrates,transitioning,belfry,zedong,adaption,kaliningrad,lobos,epics,waiver,coniferous,polydor,inductee,refitted,moraine,unsatisfactory,worsening,polygamy,rajya,nested,subgenre,broadside,stampeders,lingua,incheon,pretender,peloton,persuading,excitation,multan,predates,tonne,brackish,autoimmune,insulated,podcasts,iraqis,bodybuilding,condominiums,midlothian,delft,debtor,asymmetrical,lycaenidae,forcefully,pathogenic,tamaulipas,andaman,intravenous,advancements,senegalese,chronologically,realigned,inquirer,eusebius,dekalb,additives,shortlist,goldwater,hindustani,auditing,caterpillars,pesticide,nakhon,ingestion,lansdowne,traditionalist,northland,thunderbirds,josip,nominating,locale,ventricular,animators,verandah,epistles,surveyors,anthems,dredd,upheaval,passaic,anatolian,svalbard,associative,floodplain,taranaki,estuaries,irreducible,beginners,hammerstein,allocate,coursework,secreted,counteract,handwritten,foundational,passover,discoverer,decoding,wares,bourgeoisie,playgrounds,nazionale,abbreviations,seanad,golan,mishra,godavari,rebranding,attendances,backstory,interrupts,lettered,hasbro,ultralight,hormozgan,armee,moderne,subdue,disuse,improvisational,enrolment,persists,moderated,carinthia,hatchback,inhibitory,capitalized,anatoly,abstracts,albemarle,bergamo,insolvency,sentai,cellars,walloon,joked,kashmiri,dirac,materialized,renomination,homologous,gusts,eighteens,centrifugal,storied,baluchestan,formula_26,poincare,vettel,infuriated,gauges,streetcars,vedanta,stately,liquidated,goguryeo,swifts,accountancy,levee,acadian,hydropower,eustace,comintern,allotment,designating,torsion,molding,irritation,aerobic,halen,concerted,plantings,garrisoned,gramophone,cytoplasm,onslaught,requisitioned,relieving,genitive,centrist,jeong,espanola,dissolving,chatterjee,sparking,connaught,varese,arjuna,carpathian,empowering,meteorologist,decathlon,opioid,hohenzollern,fenced,ibiza,avionics,footscray,scrum,discounts,filament,directories,a.f.c,stiffness,quaternary,adventurers,transmits,harmonious,taizong,radiating,germantown,ejection,projectors,gaseous,nahuatl,vidyalaya,nightlife,redefined,refuted,destitute,arista,potters,disseminated,distanced,jamboree,kaohsiung,tilted,lakeshore,grained,inflicting,kreis,novelists,descendents,mezzanine,recast,fatah,deregulation,ac/dc,australis,kohgiluyeh,boreal,goths,authoring,intoxicated,nonpartisan,theodosius,pyongyang,shree,boyhood,sanfl,plenipotentiary,photosynthesis,presidium,sinaloa,honshu,texan,avenida,transmembrane,malays,acropolis,catalunya,vases,inconsistencies,methodists,quell,suisse,banat,simcoe,cercle,zealanders,discredited,equine,sages,parthian,fascists,interpolation,classifying,spinoff,yehuda,cruised,gypsum,foaled,wallachia,saraswati,imperialist,seabed,footnotes,nakajima,locales,schoolmaster,drosophila,bridgehead,immanuel,courtier,bookseller,niccolo,stylistically,portmanteau,superleague,konkani,millimetres,arboreal,thanjavur,emulation,sounders,decompression,commoners,infusion,methodological,osage,rococo,anchoring,bayreuth,formula_27,abstracting,symbolized,bayonne,electrolyte,rowed,corvettes,traversing,editorship,sampler,presidio,curzon,adirondack,swahili,rearing,bladed,lemur,pashtun,behaviours,bottling,zaire,recognisable,systematics,leeward,formulae,subdistricts,smithfield,vijaya,buoyancy,boosting,cantonal,rishi,airflow,kamakura,adana,emblems,aquifer,clustering,husayn,woolly,wineries,montessori,turntable,exponentially,caverns,espoused,pianists,vorpommern,vicenza,latterly,o'rourke,williamstown,generale,kosice,duisburg,poirot,marshy,mismanagement,mandalay,dagenham,universes,chiral,radiated,stewards,vegan,crankshaft,kyrgyz,amphibian,cymbals,infrequently,offenbach,environmentalist,repatriated,permutations,midshipmen,loudoun,refereed,bamberg,ornamented,nitric,selim,translational,dorsum,annunciation,gippsland,reflector,informational,regia,reactionary,ahmet,weathering,erlewine,legalized,berne,occupant,divas,manifests,analyzes,disproportionate,mitochondria,totalitarian,paulista,interscope,anarcho,correlate,brookfield,elongate,brunel,ordinal,precincts,volatility,equaliser,hittite,somaliland,ticketing,monochrome,ubuntu,chhattisgarh,titleholder,ranches,referendums,blooms,accommodates,merthyr,religiously,ryukyu,tumultuous,checkpoints,anode,mi'kmaq,cannonball,punctuation,remodelled,assassinations,criminology,alternates,yonge,pixar,namibian,piraeus,trondelag,hautes,lifeboats,shoal,atelier,vehemently,sadat,postcode,jainism,lycoming,undisturbed,lutherans,genomics,popmatters,tabriz,isthmian,notched,autistic,horsham,mites,conseil,bloomsbury,seung,cybertron,idris,overhauled,disbandment,idealized,goldfields,worshippers,lobbyist,ailments,paganism,herbarium,athenians,messerschmitt,faraday,entangled,'olya,untreated,criticising,howitzers,parvati,lobed,debussy,atonement,tadeusz,permeability,mueang,sepals,degli,optionally,fuelled,follies,asterisk,pristina,lewiston,congested,overpass,affixed,pleads,telecasts,stanislaus,cryptographic,friesland,hamstring,selkirk,antisubmarine,inundated,overlay,aggregates,fleur,trolleybus,sagan,ibsen,inductees,beltway,tiled,ladders,cadbury,laplace,ascetic,micronesia,conveying,bellingham,cleft,batches,usaid,conjugation,macedon,assisi,reappointed,brine,jinnah,prairies,screenwriting,oxidized,despatches,linearly,fertilizers,brazilians,absorbs,wagga,modernised,scorsese,ashraf,charlestown,esque,habitable,nizhny,lettres,tuscaloosa,esplanade,coalitions,carbohydrates,legate,vermilion,standardised,galleria,psychoanalytic,rearrangement,substation,competency,nationalised,reshuffle,reconstructions,mehdi,bougainville,receivership,contraception,enlistment,conducive,aberystwyth,solicitors,dismisses,fibrosis,montclair,homeowner,surrealism,s.h.i.e.l.d,peregrine,compilers,1790s,parentage,palmas,rzeszow,worldview,eased,svenska,housemate,bundestag,originator,enlisting,outwards,reciprocity,formula_28,carbohydrate,democratically,firefighting,romagna,acknowledgement,khomeini,carbide,quests,vedas,characteristically,guwahati,brixton,unintended,brothels,parietal,namur,sherbrooke,moldavian,baruch,milieu,undulating,laurier,entre,dijon,ethylene,abilene,heracles,paralleling,ceres,dundalk,falun,auspicious,chisinau,polarity,foreclosure,templates,ojibwe,punic,eriksson,biden,bachchan,glaciation,spitfires,norsk,nonviolent,heidegger,algonquin,capacitance,cassettes,balconies,alleles,airdate,conveys,replays,classifies,infrequent,amine,cuttings,rarer,woking,olomouc,amritsar,rockabilly,illyrian,maoist,poignant,tempore,stalinist,segmented,bandmate,mollusc,muhammed,totalled,byrds,tendered,endogenous,kottayam,aisne,oxidase,overhears,illustrators,verve,commercialization,purplish,directv,moulded,lyttelton,baptismal,captors,saracens,georgios,shorten,polity,grids,fitzwilliam,sculls,impurities,confederations,akhtar,intangible,oscillations,parabolic,harlequin,maulana,ovate,tanzanian,singularity,confiscation,qazvin,speyer,phonemes,overgrown,vicarage,gurion,undocumented,niigata,thrones,preamble,stave,interment,liiga,ataturk,aphrodite,groupe,indentured,habsburgs,caption,utilitarian,ozark,slovenes,reproductions,plasticity,serbo,dulwich,castel,barbuda,salons,feuding,lenape,wikileaks,swamy,breuning,shedding,afield,superficially,operationally,lamented,okanagan,hamadan,accolade,furthering,adolphus,fyodor,abridged,cartoonists,pinkish,suharto,cytochrome,methylation,debit,colspan=9|,refine,taoist,signalled,herding,leaved,bayan,fatherland,rampart,sequenced,negation,storyteller,occupiers,barnabas,pelicans,nadir,conscripted,railcars,prerequisite,furthered,columba,carolinas,markup,gwalior,franche,chaco,eglinton,ramparts,rangoon,metabolites,pollination,croat,televisa,holyoke,testimonial,setlist,safavid,sendai,georgians,shakespearean,galleys,regenerative,krzysztof,overtones,estado,barbary,cherbourg,obispo,sayings,composites,sainsbury,deliberation,cosmological,mahalleh,embellished,ascap,biala,pancras,calumet,grands,canvases,antigens,marianas,defenseman,approximated,seedlings,soren,stele,nuncio,immunology,testimonies,glossary,recollections,suitability,tampere,venous,cohomology,methanol,echoing,ivanovich,warmly,sterilization,imran,multiplying,whitechapel,undersea,xuanzong,tacitus,bayesian,roundhouse,correlations,rioters,molds,fiorentina,bandmates,mezzo,thani,guerilla,200th,premiums,tamils,deepwater,chimpanzees,tribesmen,selwyn,globo,turnovers,punctuated,erode,nouvelle,banbury,exponents,abolishing,helical,maimonides,endothelial,goteborg,infield,encroachment,cottonwood,mazowiecki,parable,saarbrucken,reliever,epistemology,artistes,enrich,rationing,formula_29,palmyra,subfamilies,kauai,zoran,fieldwork,arousal,creditor,friuli,celts,comoros,equated,escalation,negev,tallied,inductive,anion,netanyahu,mesoamerican,lepidoptera,aspirated,remit,westmorland,italic,crosse,vaclav,fuego,owain,balmain,venetians,ethnicities,deflected,ticino,apulia,austere,flycatcher,reprising,repressive,hauptbahnhof,subtype,ophthalmology,summarizes,eniwetok,colonisation,subspace,nymphalidae,earmarked,tempe,burnet,crests,abbots,norwegians,enlarge,ashoka,frankfort,livorno,malware,renters,singly,iliad,moresby,rookies,gustavus,affirming,alleges,legume,chekhov,studded,abdicated,suzhou,isidore,townsite,repayment,quintus,yankovic,amorphous,constructor,narrowing,industrialists,tanganyika,capitalization,connective,mughals,rarities,aerodynamics,worthing,antalya,diagnostics,shaftesbury,thracian,obstetrics,benghazi,multiplier,orbitals,livonia,roscommon,intensify,ravel,oaths,overseer,locomotion,necessities,chickasaw,strathclyde,treviso,erfurt,aortic,contemplation,accrington,markazi,predeceased,hippocampus,whitecaps,assemblyman,incursion,ethnography,extraliga,reproducing,directorship,benzene,byway,stupa,taxable,scottsdale,onondaga,favourably,countermeasures,lithuanians,thatched,deflection,tarsus,consuls,annuity,paralleled,contextual,anglian,klang,hoisted,multilingual,enacting,samaj,taoiseach,carthaginian,apologised,hydrology,entrant,seamless,inflorescences,mugabe,westerners,seminaries,wintering,penzance,mitre,sergeants,unoccupied,delimitation,discriminate,upriver,abortive,nihon,bessarabia,calcareous,buffaloes,patil,daegu,streamline,berks,chaparral,laity,conceptions,typified,kiribati,threaded,mattel,eccentricity,signified,patagonia,slavonia,certifying,adnan,astley,sedition,minimally,enumerated,nikos,goalless,walid,narendra,causa,missoula,coolant,dalek,outcrop,hybridization,schoolchildren,peasantry,afghans,confucianism,shahr,gallic,tajik,kierkegaard,sauvignon,commissar,patriarchs,tuskegee,prussians,laois,ricans,talmudic,officiating,aesthetically,baloch,antiochus,separatists,suzerainty,arafat,shading,u.s.c,chancellors,inc..,toolkit,nepenthes,erebidae,solicited,pratap,kabbalah,alchemist,caltech,darjeeling,biopic,spillway,kaiserslautern,nijmegen,bolstered,neath,pahlavi,eugenics,bureaus,retook,northfield,instantaneous,deerfield,humankind,selectivity,putative,boarders,cornhuskers,marathas,raikkonen,aliabad,mangroves,garages,gulch,karzai,poitiers,chernobyl,thane,alexios,belgrano,scion,solubility,urbanized,executable,guizhou,nucleic,tripled,equalled,harare,houseguests,potency,ghazi,repeater,overarching,regrouped,broward,ragtime,d'art,nandi,regalia,campsites,mamluk,plating,wirral,presumption,zenit,archivist,emmerdale,decepticon,carabidae,kagoshima,franconia,guarani,formalism,diagonally,submarginal,denys,walkways,punts,metrolink,hydrographic,droplets,upperside,martyred,hummingbird,antebellum,curiously,mufti,friary,chabad,czechs,shaykh,reactivity,berklee,turbonilla,tongan,sultans,woodville,unlicensed,enmity,dominicans,operculum,quarrying,watercolour,catalyzed,gatwick,'what,mesozoic,auditors,shizuoka,footballing,haldane,telemundo,appended,deducted,disseminate,o'shea,pskov,abrasive,entente,gauteng,calicut,lemurs,elasticity,suffused,scopula,staining,upholding,excesses,shostakovich,loanwords,naidu,championnat,chromatography,boasting,goaltenders,engulfed,salah,kilogram,morristown,shingles,shi'a,labourer,renditions,frantisek,jekyll,zonal,nanda,sheriffs,eigenvalues,divisione,endorsing,ushered,auvergne,cadres,repentance,freemasons,utilising,laureates,diocletian,semiconductors,o'grady,vladivostok,sarkozy,trackage,masculinity,hydroxyl,mervyn,muskets,speculations,gridiron,opportunistic,mascots,aleutian,fillies,sewerage,excommunication,borrowers,capillary,trending,sydenham,synthpop,rajah,cagayan,deportes,kedah,faure,extremism,michoacan,levski,culminates,occitan,bioinformatics,unknowingly,inciting,emulated,footpaths,piacenza,dreadnought,viceroyalty,oceanographic,scouted,combinatorial,ornithologist,cannibalism,mujahideen,independiente,cilicia,hindwing,minimized,odeon,gyorgy,rubles,purchaser,collieries,kickers,interurban,coiled,lynchburg,respondent,plzen,detractors,etchings,centering,intensification,tomography,ranjit,warblers,retelling,reinstatement,cauchy,modulus,redirected,evaluates,beginner,kalateh,perforated,manoeuvre,scrimmage,internships,megawatts,mottled,haakon,tunbridge,kalyan,summarised,sukarno,quetta,canonized,henryk,agglomeration,coahuila,diluted,chiropractic,yogyakarta,talladega,sheik,cation,halting,reprisals,sulfuric,musharraf,sympathizers,publicised,arles,lectionary,fracturing,startups,sangha,latrobe,rideau,ligaments,blockading,cremona,lichens,fabaceae,modulated,evocative,embodies,battersea,indistinct,altai,subsystem,acidity,somatic,formula_30,tariq,rationality,sortie,ashlar,pokal,cytoplasmic,valour,bangla,displacing,hijacking,spectrometry,westmeath,weill,charing,goias,revolvers,individualized,tenured,nawaz,piquet,chanted,discard,bernd,phalanx,reworking,unilaterally,subclass,yitzhak,piloting,circumvent,disregarded,semicircular,viscous,tibetans,endeavours,retaliated,cretan,vienne,workhouse,sufficiency,aurangzeb,legalization,lipids,expanse,eintracht,sanjak,megas,125th,bahraini,yakima,eukaryotes,thwart,affirmation,peloponnese,retailing,carbonyl,chairwoman,macedonians,dentate,rockaway,correctness,wealthier,metamorphic,aragonese,fermanagh,pituitary,schrodinger,evokes,spoiler,chariots,akita,genitalia,combe,confectionery,desegregation,experiential,commodores,persepolis,viejo,restorations,virtualization,hispania,printmaking,stipend,yisrael,theravada,expended,radium,tweeted,polygonal,lippe,charente,leveraged,cutaneous,fallacy,fragrant,bypasses,elaborately,rigidity,majid,majorca,kongo,plasmodium,skits,audiovisual,eerste,staircases,prompts,coulthard,northwestward,riverdale,beatrix,copyrights,prudential,communicates,mated,obscenity,asynchronous,analyse,hansa,searchlight,farnborough,patras,asquith,qarah,contours,fumbled,pasteur,redistributed,almeria,sanctuaries,jewry,israelite,clinicians,koblenz,bookshop,affective,goulburn,panelist,sikorsky,cobham,mimics,ringed,portraiture,probabilistic,girolamo,intelligible,andalusian,jalal,athenaeum,eritrean,auxiliaries,pittsburg,devolution,sangam,isolating,anglers,cronulla,annihilated,kidderminster,synthesize,popularised,theophilus,bandstand,innumerable,chagrin,retroactively,weser,multiples,birdlife,goryeo,pawnee,grosser,grappling,tactile,ahmadinejad,turboprop,erdogan,matchday,proletarian,adhering,complements,austronesian,adverts,luminaries,archeology,impressionism,conifer,sodomy,interracial,platoons,lessen,postings,pejorative,registrations,cookery,persecutions,microbes,audits,idiosyncratic,subsp,suspensions,restricts,colouring,ratify,instrumentals,nucleotides,sulla,posits,bibliotheque,diameters,oceanography,instigation,subsumed,submachine,acceptor,legation,borrows,sedge,discriminated,loaves,insurers,highgate,detectable,abandons,kilns,sportscaster,harwich,iterations,preakness,arduous,tensile,prabhu,shortwave,philologist,shareholding,vegetative,complexities,councilors,distinctively,revitalize,automaton,amassing,montreux,khanh,surabaya,nurnberg,pernambuco,cuisines,charterhouse,firsts,tercera,inhabitant,homophobia,naturalism,einar,powerplant,coruna,entertainments,whedon,rajputs,raton,democracies,arunachal,oeuvre,wallonia,jeddah,trolleybuses,evangelism,vosges,kiowa,minimise,encirclement,undertakes,emigrant,beacons,deepened,grammars,publius,preeminent,seyyed,repechage,crafting,headingley,osteopathic,lithography,hotly,bligh,inshore,betrothed,olympians,formula_31,dissociation,trivandrum,arran,petrovic,stettin,disembarked,simplification,bronzes,philo,acrobatic,jonsson,conjectured,supercharged,kanto,detects,cheeses,correlates,harmonics,lifecycle,sudamericana,reservists,decayed,elitserien,parametric,113th,dusky,hogarth,modulo,symbiotic,monopolies,discontinuation,converges,southerners,tucuman,eclipses,enclaves,emits,famicom,caricatures,artistically,levelled,mussels,erecting,mouthparts,cunard,octaves,crucible,guardia,unusable,lagrangian,droughts,ephemeral,pashto,canis,tapering,sasebo,silurian,metallurgical,outscored,evolves,reissues,sedentary,homotopy,greyhawk,reagents,inheriting,onshore,tilting,rebuffed,reusable,naturalists,basingstoke,insofar,offensives,dravidian,curators,planks,rajan,isoforms,flagstaff,preside,globular,egalitarian,linkages,biographers,goalscorers,molybdenum,centralised,nordland,jurists,ellesmere,rosberg,hideyoshi,restructure,biases,borrower,scathing,redress,tunnelling,workflow,magnates,mahendra,dissenters,plethora,transcriptions,handicrafts,keyword,xi'an,petrograd,unser,prokofiev,90deg,madan,bataan,maronite,kearny,carmarthen,termini,consulates,disallowed,rockville,bowery,fanzine,docklands,bests,prohibitions,yeltsin,selassie,naturalization,realisation,dispensary,tribeca,abdulaziz,pocahontas,stagnation,pamplona,cuneiform,propagating,subsurface,christgau,epithelium,schwerin,lynching,routledge,hanseatic,upanishad,glebe,yugoslavian,complicity,endowments,girona,mynetworktv,entomology,plinth,ba'ath,supercup,torus,akkadian,salted,englewood,commandery,belgaum,prefixed,colorless,dartford,enthroned,caesarea,nominative,sandown,safeguards,hulled,formula_32,leamington,dieppe,spearhead,generalizations,demarcation,llanelli,masque,brickwork,recounting,sufism,strikingly,petrochemical,onslow,monologues,emigrating,anderlecht,sturt,hossein,sakhalin,subduction,novices,deptford,zanjan,airstrikes,coalfield,reintroduction,timbaland,hornby,messianic,stinging,universalist,situational,radiocarbon,strongman,rowling,saloons,traffickers,overran,fribourg,cambrai,gravesend,discretionary,finitely,archetype,assessor,pilipinas,exhumed,invocation,interacted,digitized,timisoara,smelter,teton,sexism,precepts,srinagar,pilsudski,carmelite,hanau,scoreline,hernando,trekking,blogging,fanbase,wielded,vesicles,nationalization,banja,rafts,motoring,luang,takeda,girder,stimulates,histone,sunda,nanoparticles,attains,jumpers,catalogued,alluding,pontus,ancients,examiners,shinkansen,ribbentrop,reimbursement,pharmacological,ramat,stringed,imposes,cheaply,transplanted,taiping,mizoram,looms,wallabies,sideman,kootenay,encased,sportsnet,revolutionized,tangier,benthic,runic,pakistanis,heatseekers,shyam,mishnah,presbyterians,stadt,sutras,straddles,zoroastrian,infer,fueling,gymnasts,ofcom,gunfight,journeyman,tracklist,oshawa,ps500,pa'in,mackinac,xiongnu,mississippian,breckinridge,freemason,bight,autoroute,liberalization,distantly,thrillers,solomons,presumptive,romanization,anecdotal,bohemians,unpaved,milder,concurred,spinners,alphabets,strenuous,rivieres,kerrang,mistreatment,dismounted,intensively,carlist,dancehall,shunting,pluralism,trafficked,brokered,bonaventure,bromide,neckar,designates,malian,reverses,sotheby,sorghum,serine,environmentalists,languedoc,consulship,metering,bankstown,handlers,militiamen,conforming,regularity,pondicherry,armin,capsized,consejo,capitalists,drogheda,granular,purged,acadians,endocrine,intramural,elicit,terns,orientations,miklos,omitting,apocryphal,slapstick,brecon,pliocene,affords,typography,emigre,tsarist,tomasz,beset,nishi,necessitating,encyclical,roleplaying,journeyed,inflow,sprints,progressives,novosibirsk,cameroonian,ephesus,speckled,kinshasa,freiherr,burnaby,dalmatian,torrential,rigor,renegades,bhakti,nurburgring,cosimo,convincingly,reverting,visayas,lewisham,charlottetown,charadriiformesfamily,transferable,jodhpur,converters,deepening,camshaft,underdeveloped,protease,polonia,uterine,quantify,tobruk,dealerships,narasimha,fortran,inactivity,1780s,victors,categorised,naxos,workstation,skink,sardinian,chalice,precede,dammed,sondheim,phineas,tutored,sourcing,uncompromising,placer,tyneside,courtiers,proclaims,pharmacies,hyogo,booksellers,sengoku,kursk,spectrometer,countywide,wielkopolski,bobsleigh,shetty,llywelyn,consistory,heretics,guinean,cliches,individualism,monolithic,imams,usability,bursa,deliberations,railings,torchwood,inconsistency,balearic,stabilizer,demonstrator,facet,radioactivity,outboard,educates,d'oyly,heretical,handover,jurisdictional,shockwave,hispaniola,conceptually,routers,unaffiliated,trentino,formula_33,cypriots,intervenes,neuchatel,formulating,maggiore,delisted,alcohols,thessaly,potable,estimator,suborder,fluency,mimicry,clergymen,infrastructures,rivals.com,baroda,subplot,majlis,plano,clinching,connotation,carinae,savile,intercultural,transcriptional,sandstones,ailerons,annotations,impresario,heinkel,scriptural,intermodal,astrological,ribbed,northeastward,posited,boers,utilise,kalmar,phylum,breakwater,skype,textured,guideline,azeri,rimini,massed,subsidence,anomalous,wolfsburg,polyphonic,accrediting,vodacom,kirov,captaining,kelantan,logie,fervent,eamon,taper,bundeswehr,disproportionately,divination,slobodan,pundits,hispano,kinetics,reunites,makati,ceasing,statistician,amending,chiltern,eparchy,riverine,melanoma,narragansett,pagans,raged,toppled,breaching,zadar,holby,dacian,ochre,velodrome,disparities,amphoe,sedans,webpage,williamsport,lachlan,groton,baring,swastika,heliport,unwillingness,razorbacks,exhibitors,foodstuffs,impacting,tithe,appendages,dermot,subtypes,nurseries,balinese,simulating,stary,remakes,mundi,chautauqua,geologically,stockade,hakka,dilute,kalimantan,pahang,overlapped,fredericton,baha'u'llah,jahangir,damping,benefactors,shomali,triumphal,cieszyn,paradigms,shielded,reggaeton,maharishi,zambian,shearing,golestan,mirroring,partitioning,flyover,songbook,incandescent,merrimack,huguenots,sangeet,vulnerabilities,trademarked,drydock,tantric,honoris,queenstown,labelling,iterative,enlists,statesmen,anglicans,herge,qinghai,burgundian,islami,delineated,zhuge,aggregated,banknote,qatari,suitably,tapestries,asymptotic,charleroi,majorities,pyramidellidae,leanings,climactic,tahir,ramsar,suppressor,revisionist,trawler,ernakulam,penicillium,categorization,slits,entitlement,collegium,earths,benefice,pinochet,puritans,loudspeaker,stockhausen,eurocup,roskilde,alois,jaroslav,rhondda,boutiques,vigor,neurotransmitter,ansar,malden,ferdinando,sported,relented,intercession,camberwell,wettest,thunderbolts,positional,oriel,cloverleaf,penalized,shoshone,rajkumar,completeness,sharjah,chromosomal,belgians,woolen,ultrasonic,sequentially,boleyn,mordella,microsystems,initiator,elachista,mineralogy,rhododendron,integrals,compostela,hamza,sawmills,stadio,berlioz,maidens,stonework,yachting,tappeh,myocardial,laborer,workstations,costumed,nicaea,lanark,roundtable,mashhad,nablus,algonquian,stuyvesant,sarkar,heroines,diwan,laments,intonation,intrigues,almaty,feuded,grandes,algarve,rehabilitate,macrophages,cruciate,dismayed,heuristic,eliezer,kozhikode,covalent,finalised,dimorphism,yaroslavl,overtaking,leverkusen,middlebury,feeders,brookings,speculates,insoluble,lodgings,jozsef,cysteine,shenyang,habilitation,spurious,brainchild,mtdna,comique,albedo,recife,partick,broadening,shahi,orientated,himalaya,swabia,palme,mennonites,spokeswoman,conscripts,sepulchre,chartres,eurozone,scaffold,invertebrate,parishad,bagan,heian,watercolors,basse,supercomputer,commences,tarragona,plainfield,arthurian,functor,identically,murex,chronicling,pressings,burrowing,histoire,guayaquil,goalkeeping,differentiable,warburg,machining,aeneas,kanawha,holocene,ramesses,reprisal,qingdao,avatars,turkestan,cantatas,besieging,repudiated,teamsters,equipping,hydride,ahmadiyya,euston,bottleneck,computations,terengganu,kalinga,stela,rediscovery,'this,azhar,stylised,karelia,polyethylene,kansai,motorised,lounges,normalization,calculators,1700s,goalkeepers,unfolded,commissary,cubism,vignettes,multiverse,heaters,briton,sparingly,childcare,thorium,plock,riksdag,eunuchs,catalysis,limassol,perce,uncensored,whitlam,ulmus,unites,mesopotamian,refraction,biodiesel,forza,fulda,unseated,mountbatten,shahrak,selenium,osijek,mimicking,antimicrobial,axons,simulcasting,donizetti,swabian,sportsmen,hafiz,neared,heraclius,locates,evaded,subcarpathian,bhubaneswar,negeri,jagannath,thaksin,aydin,oromo,lateran,goldsmiths,multiculturalism,cilia,mihai,evangelists,lorient,qajar,polygons,vinod,mechanised,anglophone,prefabricated,mosses,supervillain,airliners,biofuels,iodide,innovators,valais,wilberforce,logarithm,intelligentsia,dissipation,sanctioning,duchies,aymara,porches,simulators,mostar,telepathic,coaxial,caithness,burghs,fourths,stratification,joaquim,scribes,meteorites,monarchist,germination,vries,desiring,replenishment,istria,winemaking,tammany,troupes,hetman,lanceolate,pelagic,triptych,primeira,scant,outbound,hyphae,denser,bentham,basie,normale,executes,ladislaus,kontinental,herat,cruiserweight,activision,customization,manoeuvres,inglewood,northwood,waveform,investiture,inpatient,alignments,kiryat,rabat,archimedes,ustad,monsanto,archetypal,kirkby,sikhism,correspondingly,catskill,overlaid,petrels,widowers,unicameral,federalists,metalcore,gamerankings,mussel,formula_34,lymphocytes,cystic,southgate,vestiges,immortals,kalam,strove,amazons,pocono,sociologists,sopwith,adheres,laurens,caregivers,inspecting,transylvanian,rebroadcast,rhenish,miserables,pyrams,blois,newtonian,carapace,redshirt,gotland,nazir,unilever,distortions,linebackers,federalism,mombasa,lumen,bernoulli,favouring,aligarh,denounce,steamboats,dnieper,stratigraphic,synths,bernese,umass,icebreaker,guanajuato,heisenberg,boldly,diodes,ladakh,dogmatic,scriptwriter,maritimes,battlestar,symposia,adaptable,toluca,bhavan,nanking,ieyasu,picardy,soybean,adalbert,brompton,deutsches,brezhnev,glandular,laotian,hispanicized,ibadan,personification,dalit,yamuna,regio,dispensed,yamagata,zweibrucken,revising,fandom,stances,participle,flavours,khitan,vertebral,crores,mayaguez,dispensation,guntur,undefined,harpercollins,unionism,meena,leveling,philippa,refractory,telstra,judea,attenuation,pylons,elaboration,elegy,edging,gracillariidae,residencies,absentia,reflexive,deportations,dichotomy,stoves,sanremo,shimon,menachem,corneal,conifers,mordellidae,facsimile,diagnoses,cowper,citta,viticulture,divisive,riverview,foals,mystics,polyhedron,plazas,airspeed,redgrave,motherland,impede,multiplicity,barrichello,airships,pharmacists,harvester,clays,payloads,differentiating,popularize,caesars,tunneling,stagnant,circadian,indemnity,sensibilities,musicology,prefects,serfs,metra,lillehammer,carmarthenshire,kiosks,welland,barbican,alkyl,tillandsia,gatherers,asociacion,showings,bharati,brandywine,subversion,scalable,pfizer,dawla,barium,dardanelles,nsdap,konig,ayutthaya,hodgkin,sedimentation,completions,purchasers,sponsorships,maximizing,banked,taoism,minot,enrolls,fructose,aspired,capuchin,outages,artois,carrollton,totality,osceola,pawtucket,fontainebleau,converged,queretaro,competencies,botha,allotments,sheaf,shastri,obliquely,banding,catharines,outwardly,monchengladbach,driest,contemplative,cassini,ranga,pundit,kenilworth,tiananmen,disulfide,formula_35,townlands,codice_3,looping,caravans,rachmaninoff,segmentation,fluorine,anglicised,gnostic,dessau,discern,reconfigured,altrincham,rebounding,battlecruiser,ramblers,1770s,convective,triomphe,miyagi,mourners,instagram,aloft,breastfeeding,courtyards,folkestone,changsha,kumamoto,saarland,grayish,provisionally,appomattox,uncial,classicism,mahindra,elapsed,supremes,monophyletic,cautioned,formula_36,noblewoman,kernels,sucre,swaps,bengaluru,grenfell,epicenter,rockhampton,worshipful,licentiate,metaphorical,malankara,amputated,wattle,palawan,tankobon,nobunaga,polyhedra,transduction,jilin,syrians,affinities,fluently,emanating,anglicized,sportscar,botanists,altona,dravida,chorley,allocations,kunming,luanda,premiering,outlived,mesoamerica,lingual,dissipating,impairments,attenborough,balustrade,emulator,bakhsh,cladding,increments,ascents,workington,qal'eh,winless,categorical,petrel,emphasise,dormer,toros,hijackers,telescopic,solidly,jankovic,cession,gurus,madoff,newry,subsystems,northside,talib,englishmen,farnese,holographic,electives,argonne,scrivener,predated,brugge,nauvoo,catalyses,soared,siddeley,graphically,powerlifting,funicular,sungai,coercive,fusing,uncertainties,locos,acetic,diverge,wedgwood,dressings,tiebreaker,didactic,vyacheslav,acreage,interplanetary,battlecruisers,sunbury,alkaloids,hairpin,automata,wielkie,interdiction,plugins,monkees,nudibranch,esporte,approximations,disabling,powering,characterisation,ecologically,martinsville,termen,perpetuated,lufthansa,ascendancy,motherboard,bolshoi,athanasius,prunus,dilution,invests,nonzero,mendocino,charan,banque,shaheed,counterculture,unita,voivode,hospitalization,vapour,supermarine,resistor,steppes,osnabruck,intermediates,benzodiazepines,sunnyside,privatized,geopolitical,ponta,beersheba,kievan,embody,theoretic,sangh,cartographer,blige,rotors,thruway,battlefields,discernible,demobilized,broodmare,colouration,sagas,policymakers,serialization,augmentation,hoare,frankfurter,transnistria,kinases,detachable,generational,converging,antiaircraft,khaki,bimonthly,coadjutor,arkhangelsk,kannur,buffers,livonian,northwich,enveloped,cysts,yokozuna,herne,beeching,enron,virginian,woollen,excepting,competitively,outtakes,recombinant,hillcrest,clearances,pathe,cumbersome,brasov,u.s.a,likud,christiania,cruciform,hierarchies,wandsworth,lupin,resins,voiceover,sitar,electrochemical,mediacorp,typhus,grenadiers,hepatic,pompeii,weightlifter,bosniak,oxidoreductase,undersecretary,rescuers,ranji,seleucid,analysing,exegesis,tenancy,toure,kristiansand,110th,carillon,minesweepers,poitou,acceded,palladian,redevelop,naismith,rifled,proletariat,shojo,hackensack,harvests,endpoint,kuban,rosenborg,stonehenge,authorisation,jacobean,revocation,compatriots,colliding,undetermined,okayama,acknowledgment,angelou,fresnel,chahar,ethereal,mg/kg,emmet,mobilised,unfavourable,cultura,characterizing,parsonage,skeptics,expressways,rabaul,medea,guardsmen,visakhapatnam,caddo,homophobic,elmwood,encircling,coexistence,contending,seljuk,mycologist,infertility,moliere,insolvent,covenants,underpass,holme,landesliga,workplaces,delinquency,methamphetamine,contrived,tableau,tithes,overlying,usurped,contingents,spares,oligocene,molde,beatification,mordechai,balloting,pampanga,navigators,flowered,debutant,codec,orogeny,newsletters,solon,ambivalent,ubisoft,archdeaconry,harpers,kirkus,jabal,castings,kazhagam,sylhet,yuwen,barnstaple,amidships,causative,isuzu,watchtower,granules,canaveral,remuneration,insurer,payout,horizonte,integrative,attributing,kiwis,skanderbeg,asymmetry,gannett,urbanism,disassembled,unaltered,precluded,melodifestivalen,ascends,plugin,gurkha,bisons,stakeholder,industrialisation,abbotsford,sextet,bustling,uptempo,slavia,choreographers,midwives,haram,javed,gazetteer,subsection,natively,weighting,lysine,meera,redbridge,muchmusic,abruzzo,adjoins,unsustainable,foresters,kbit/s,cosmopterigidae,secularism,poetics,causality,phonograph,estudiantes,ceausescu,universitario,adjoint,applicability,gastropods,nagaland,kentish,mechelen,atalanta,woodpeckers,lombards,gatineau,romansh,avraham,acetylcholine,perturbation,galois,wenceslaus,fuzhou,meandering,dendritic,sacristy,accented,katha,therapeutics,perceives,unskilled,greenhouses,analogues,chaldean,timbre,sloped,volodymyr,sadiq,maghreb,monogram,rearguard,caucuses,mures,metabolite,uyezd,determinism,theosophical,corbet,gaels,disruptions,bicameral,ribosomal,wolseley,clarksville,watersheds,tarsi,radon,milanese,discontinuous,aristotelian,whistleblower,representational,hashim,modestly,localised,atrial,hazara,ravana,troyes,appointees,rubus,morningside,amity,aberdare,ganglia,wests,zbigniew,aerobatic,depopulated,corsican,introspective,twinning,hardtop,shallower,cataract,mesolithic,emblematic,graced,lubrication,republicanism,voronezh,bastions,meissen,irkutsk,oboes,hokkien,sprites,tenet,individualist,capitulated,oakville,dysentery,orientalist,hillsides,keywords,elicited,incised,lagging,apoel,lengthening,attractiveness,marauders,sportswriter,decentralization,boltzmann,contradicts,draftsman,precipitate,solihull,norske,consorts,hauptmann,riflemen,adventists,syndromes,demolishing,customize,continuo,peripherals,seamlessly,linguistically,bhushan,orphanages,paraul,lessened,devanagari,quarto,responders,patronymic,riemannian,altoona,canonization,honouring,geodetic,exemplifies,republica,enzymatic,porters,fairmount,pampa,sufferers,kamchatka,conjugated,coachella,uthman,repositories,copious,headteacher,awami,phoneme,homomorphism,franconian,moorland,davos,quantified,kamloops,quarks,mayoralty,weald,peacekeepers,valerian,particulate,insiders,perthshire,caches,guimaraes,piped,grenadines,kosciuszko,trombonist,artemisia,covariance,intertidal,soybeans,beatified,ellipse,fruiting,deafness,dnipropetrovsk,accrued,zealous,mandala,causation,junius,kilowatt,bakeries,montpelier,airdrie,rectified,bungalows,toleration,debian,pylon,trotskyist,posteriorly,two-and-a-half,herbivorous,islamists,poetical,donne,wodehouse,frome,allium,assimilate,phonemic,minaret,unprofitable,darpa,untenable,leaflet,bitcoin,zahir,thresholds,argentino,jacopo,bespoke,stratified,wellbeing,shiite,basaltic,timberwolves,secrete,taunts,marathons,isomers,carre,consecrators,penobscot,pitcairn,sakha,crosstown,inclusions,impassable,fenders,indre,uscgc,jordi,retinue,logarithmic,pilgrimages,railcar,cashel,blackrock,macroscopic,aligning,tabla,trestle,certify,ronson,palps,dissolves,thickened,silicate,taman,walsingham,hausa,lowestoft,rondo,oleksandr,cuyahoga,retardation,countering,cricketing,holborn,identifiers,hells,geophysics,infighting,sculpting,balaji,webbed,irradiation,runestone,trusses,oriya,sojourn,forfeiture,colonize,exclaimed,eucharistic,lackluster,glazing,northridge,gutenberg,stipulates,macroeconomic,priori,outermost,annular,udinese,insulating,headliner,godel,polytope,megalithic,salix,sharapova,derided,muskegon,braintree,plateaus,confers,autocratic,isomer,interstitial,stamping,omits,kirtland,hatchery,evidences,intifada,111th,podgorica,capua,motivating,nuneaton,jakub,korsakov,amitabh,mundial,monrovia,gluten,predictor,marshalling,d'orleans,levers,touchscreen,brantford,fricative,banishment,descendent,antagonism,ludovico,loudspeakers,formula_37,livelihoods,manassas,steamships,dewsbury,uppermost,humayun,lures,pinnacles,dependents,lecce,clumps,observatories,paleozoic,dedicating,samiti,draughtsman,gauls,incite,infringing,nepean,pythagorean,convents,triumvirate,seigneur,gaiman,vagrant,fossa,byproduct,serrated,renfrewshire,sheltering,achaemenid,dukedom,catchers,sampdoria,platelet,bielefeld,fluctuating,phenomenology,strikeout,ethnology,prospectors,woodworking,tatra,wildfires,meditations,agrippa,fortescue,qureshi,wojciech,methyltransferase,accusative,saatchi,amerindian,volcanism,zeeland,toyama,vladimirovich,allege,polygram,redox,budgeted,advisories,nematode,chipset,starscream,tonbridge,hardening,shales,accompanist,paraded,phonographic,whitefish,sportive,audiobook,kalisz,hibernation,latif,duels,ps200,coxeter,nayak,safeguarding,cantabria,minesweeping,zeiss,dunams,catholicos,sawtooth,ontological,nicobar,bridgend,unclassified,intrinsically,hanoverian,rabbitohs,kenseth,alcalde,northumbrian,raritan,septuagint,presse,sevres,origen,dandenong,peachtree,intersected,impeded,usages,hippodrome,novara,trajectories,customarily,yardage,inflected,yanow,kalan,taverns,liguria,librettist,intermarriage,1760s,courant,gambier,infanta,ptolemaic,ukulele,haganah,sceptical,manchukuo,plexus,implantation,hilal,intersex,efficiencies,arbroath,hagerstown,adelphi,diario,marais,matti,lifes,coining,modalities,divya,bletchley,conserving,ivorian,mithridates,generative,strikeforce,laymen,toponymy,pogrom,satya,meticulously,agios,dufferin,yaakov,fortnightly,cargoes,deterrence,prefrontal,przemysl,mitterrand,commemorations,chatsworth,gurdwara,abuja,chakraborty,badajoz,geometries,artiste,diatonic,ganglion,presides,marymount,nanak,cytokines,feudalism,storks,rowers,widens,politico,evangelicals,assailants,pittsfield,allowable,bijapur,telenovelas,dichomeris,glenelg,herbivores,keita,inked,radom,fundraisers,constantius,boheme,portability,komnenos,crystallography,derrida,moderates,tavistock,fateh,spacex,disjoint,bristles,commercialized,interwoven,empirically,regius,bulacan,newsday,showa,radicalism,yarrow,pleura,sayed,structuring,cotes,reminiscences,acetyl,edicts,escalators,aomori,encapsulated,legacies,bunbury,placings,fearsome,postscript,powerfully,keighley,hildesheim,amicus,crevices,deserters,benelux,aurangabad,freeware,ioannis,carpathians,chirac,seceded,prepaid,landlocked,naturalised,yanukovych,soundscan,blotch,phenotypic,determinants,twente,dictatorial,giessen,composes,recherche,pathophysiology,inventories,ayurveda,elevating,gravestone,degeneres,vilayet,popularizing,spartanburg,bloemfontein,previewed,renunciation,genotype,ogilvy,tracery,blacklisted,emissaries,diploid,disclosures,tupolev,shinjuku,antecedents,pennine,braganza,bhattacharya,countable,spectroscopic,ingolstadt,theseus,corroborated,compounding,thrombosis,extremadura,medallions,hasanabad,lambton,perpetuity,glycol,besancon,palaiologos,pandey,caicos,antecedent,stratum,laserdisc,novitiate,crowdfunding,palatal,sorceress,dassault,toughness,celle,cezanne,vientiane,tioga,hander,crossbar,gisborne,cursor,inspectorate,serif,praia,sphingidae,nameplate,psalter,ivanovic,sitka,equalised,mutineers,sergius,outgrowth,creationism,haredi,rhizomes,predominate,undertakings,vulgate,hydrothermal,abbeville,geodesic,kampung,physiotherapy,unauthorised,asteraceae,conservationist,minoan,supersport,mohammadabad,cranbrook,mentorship,legitimately,marshland,datuk,louvain,potawatomi,carnivores,levies,lyell,hymnal,regionals,tinto,shikoku,conformal,wanganui,beira,lleida,standstill,deloitte,formula_40,corbusier,chancellery,mixtapes,airtime,muhlenberg,formula_39,bracts,thrashers,prodigious,gironde,chickamauga,uyghurs,substitutions,pescara,batangas,gregarious,gijon,paleo,mathura,pumas,proportionally,hawkesbury,yucca,kristiania,funimation,fluted,eloquence,mohun,aftermarket,chroniclers,futurist,nonconformist,branko,mannerisms,lesnar,opengl,altos,retainers,ashfield,shelbourne,sulaiman,divisie,gwent,locarno,lieder,minkowski,bivalve,redeployed,cartography,seaway,bookings,decays,ostend,antiquaries,pathogenesis,formula_38,chrysalis,esperance,valli,motogp,homelands,bridged,bloor,ghazal,vulgaris,baekje,prospector,calculates,debtors,hesperiidae,titian,returner,landgrave,frontenac,kelowna,pregame,castelo,caius,canoeist,watercolours,winterthur,superintendents,dissonance,dubstep,adorn,matic,salih,hillel,swordsman,flavoured,emitter,assays,monongahela,deeded,brazzaville,sufferings,babylonia,fecal,umbria,astrologer,gentrification,frescos,phasing,zielona,ecozone,candido,manoj,quadrilateral,gyula,falsetto,prewar,puntland,infinitive,contraceptive,bakhtiari,ohrid,socialization,tailplane,evoking,havelock,macapagal,plundering,104th,keynesian,templars,phrasing,morphologically,czestochowa,humorously,catawba,burgas,chiswick,ellipsoid,kodansha,inwards,gautama,katanga,orthopaedic,heilongjiang,sieges,outsourced,subterminal,vijayawada,hares,oration,leitrim,ravines,manawatu,cryogenic,tracklisting,about.com,ambedkar,degenerated,hastened,venturing,lobbyists,shekhar,typefaces,northcote,rugen,'good,ornithology,asexual,hemispheres,unsupported,glyphs,spoleto,epigenetic,musicianship,donington,diogo,kangxi,bisected,polymorphism,megawatt,salta,embossed,cheetahs,cruzeiro,unhcr,aristide,rayleigh,maturing,indonesians,noire,llano,ffffff,camus,purges,annales,convair,apostasy,algol,phage,apaches,marketers,aldehyde,pompidou,kharkov,forgeries,praetorian,divested,retrospectively,gornji,scutellum,bitumen,pausanias,magnification,imitations,nyasaland,geographers,floodlights,athlone,hippolyte,expositions,clarinetist,razak,neutrinos,rotax,sheykh,plush,interconnect,andalus,cladogram,rudyard,resonator,granby,blackfriars,placido,windscreen,sahel,minamoto,haida,cations,emden,blackheath,thematically,blacklist,pawel,disseminating,academical,undamaged,raytheon,harsher,powhatan,ramachandran,saddles,paderborn,capping,zahra,prospecting,glycine,chromatin,profane,banska,helmand,okinawan,dislocation,oscillators,insectivorous,foyle,gilgit,autonomic,tuareg,sluice,pollinated,multiplexed,granary,narcissus,ranchi,staines,nitra,goalscoring,midwifery,pensioners,algorithmic,meetinghouse,biblioteca,besar,narva,angkor,predate,lohan,cyclical,detainee,occipital,eventing,faisalabad,dartmoor,kublai,courtly,resigns,radii,megachilidae,cartels,shortfall,xhosa,unregistered,benchmarks,dystopian,bulkhead,ponsonby,jovanovic,accumulates,papuan,bhutanese,intuitively,gotaland,headliners,recursion,dejan,novellas,diphthongs,imbued,withstood,analgesic,amplify,powertrain,programing,maidan,alstom,affirms,eradicated,summerslam,videogame,molla,severing,foundered,gallium,atmospheres,desalination,shmuel,howmeh,catolica,bossier,reconstructing,isolates,lyase,tweets,unconnected,tidewater,divisible,cohorts,orebro,presov,furnishing,folklorist,simplifying,centrale,notations,factorization,monarchies,deepen,macomb,facilitation,hennepin,declassified,redrawn,microprocessors,preliminaries,enlarging,timeframe,deutschen,shipbuilders,patiala,ferrous,aquariums,genealogies,vieux,unrecognized,bridgwater,tetrahedral,thule,resignations,gondwana,registries,agder,dataset,felled,parva,analyzer,worsen,coleraine,columella,blockaded,polytechnique,reassembled,reentry,narvik,greys,nigra,knockouts,bofors,gniezno,slotted,hamasaki,ferrers,conferring,thirdly,domestication,photojournalist,universality,preclude,ponting,halved,thereupon,photosynthetic,ostrava,mismatch,pangasinan,intermediaries,abolitionists,transited,headings,ustase,radiological,interconnection,dabrowa,invariants,honorius,preferentially,chantilly,marysville,dialectical,antioquia,abstained,gogol,dirichlet,muricidae,symmetries,reproduces,brazos,fatwa,bacillus,ketone,paribas,chowk,multiplicative,dermatitis,mamluks,devotes,adenosine,newbery,meditative,minefields,inflection,oxfam,conwy,bystrica,imprints,pandavas,infinitesimal,conurbation,amphetamine,reestablish,furth,edessa,injustices,frankston,serjeant,4x200,khazar,sihanouk,longchamp,stags,pogroms,coups,upperparts,endpoints,infringed,nuanced,summing,humorist,pacification,ciaran,jamaat,anteriorly,roddick,springboks,faceted,hypoxia,rigorously,cleves,fatimid,ayurvedic,tabled,ratna,senhora,maricopa,seibu,gauguin,holomorphic,campgrounds,amboy,coordinators,ponderosa,casemates,ouachita,nanaimo,mindoro,zealander,rimsky,cluny,tomaszow,meghalaya,caetano,tilak,roussillon,landtag,gravitation,dystrophy,cephalopods,trombones,glens,killarney,denominated,anthropogenic,pssas,roubaix,carcasses,montmorency,neotropical,communicative,rabindranath,ordinated,separable,overriding,surged,sagebrush,conciliation,codice_4,durrani,phosphatase,qadir,votive,revitalized,taiyuan,tyrannosaurus,graze,slovaks,nematodes,environmentalism,blockhouse,illiteracy,schengen,ecotourism,alternation,conic,wields,hounslow,blackfoot,kwame,ambulatory,volhynia,hordaland,croton,piedras,rohit,drava,conceptualized,birla,illustrative,gurgaon,barisal,tutsi,dezong,nasional,polje,chanson,clarinets,krasnoyarsk,aleksandrovich,cosmonaut,d'este,palliative,midseason,silencing,wardens,durer,girders,salamanders,torrington,supersonics,lauda,farid,circumnavigation,embankments,funnels,bajnoksag,lorries,cappadocia,jains,warringah,retirees,burgesses,equalization,cusco,ganesan,algal,amazonian,lineups,allocating,conquerors,usurper,mnemonic,predating,brahmaputra,ahmadabad,maidenhead,numismatic,subregion,encamped,reciprocating,freebsd,irgun,tortoises,governorates,zionists,airfoil,collated,ajmer,fiennes,etymological,polemic,chadian,clerestory,nordiques,fluctuated,calvados,oxidizing,trailhead,massena,quarrels,dordogne,tirunelveli,pyruvate,pulsed,athabasca,sylar,appointee,serer,japonica,andronikos,conferencing,nicolaus,chemin,ascertained,incited,woodbine,helices,hospitalised,emplacements,to/from,orchestre,tyrannical,pannonia,methodism,pop/rock,shibuya,berbers,despot,seaward,westpac,separator,perpignan,alamein,judeo,publicize,quantization,ethniki,gracilis,menlo,offside,oscillating,unregulated,succumbing,finnmark,metrical,suleyman,raith,sovereigns,bundesstrasse,kartli,fiduciary,darshan,foramen,curler,concubines,calvinism,larouche,bukhara,sophomores,mohanlal,lutheranism,monomer,eamonn,'black,uncontested,immersive,tutorials,beachhead,bindings,permeable,postulates,comite,transformative,indiscriminate,hofstra,associacao,amarna,dermatology,lapland,aosta,babur,unambiguous,formatting,schoolboys,gwangju,superconducting,replayed,adherent,aureus,compressors,forcible,spitsbergen,boulevards,budgeting,nossa,annandale,perumal,interregnum,sassoon,kwajalein,greenbrier,caldas,triangulation,flavius,increment,shakhtar,nullified,pinfall,nomen,microfinance,depreciation,cubist,steeper,splendour,gruppe,everyman,chasers,campaigners,bridle,modality,percussive,darkly,capes,velar,picton,triennial,factional,padang,toponym,betterment,norepinephrine,112th,estuarine,diemen,warehousing,morphism,ideologically,pairings,immunization,crassus,exporters,sefer,flocked,bulbous,deseret,booms,calcite,bohol,elven,groot,pulau,citigroup,wyeth,modernizing,layering,pastiche,complies,printmaker,condenser,theropod,cassino,oxyrhynchus,akademie,trainings,lowercase,coxae,parte,chetniks,pentagonal,keselowski,monocoque,morsi,reticulum,meiosis,clapboard,recoveries,tinge,an/fps,revista,sidon,livre,epidermis,conglomerates,kampong,congruent,harlequins,tergum,simplifies,epidemiological,underwriting,tcp/ip,exclusivity,multidimensional,mysql,columbine,ecologist,hayat,sicilies,levees,handset,aesop,usenet,pacquiao,archiving,alexandrian,compensatory,broadsheet,annotation,bahamian,d'affaires,interludes,phraya,shamans,marmara,customizable,immortalized,ambushes,chlorophyll,diesels,emulsion,rheumatoid,voluminous,screenwriters,tailoring,sedis,runcorn,democratization,bushehr,anacostia,constanta,antiquary,sixtus,radiate,advaita,antimony,acumen,barristers,reichsbahn,ronstadt,symbolist,pasig,cursive,secessionist,afrikaner,munnetra,inversely,adsorption,syllabic,moltke,idioms,midline,olimpico,diphosphate,cautions,radziwill,mobilisation,copelatus,trawlers,unicron,bhaskar,financiers,minimalism,derailment,marxists,oireachtas,abdicate,eigenvalue,zafar,vytautas,ganguly,chelyabinsk,telluride,subordination,ferried,dived,vendee,pictish,dimitrov,expiry,carnation,cayley,magnitudes,lismore,gretna,sandwiched,unmasked,sandomierz,swarthmore,tetra,nanyang,pevsner,dehradun,mormonism,rashi,complying,seaplanes,ningbo,cooperates,strathcona,mornington,mestizo,yulia,edgbaston,palisade,ethno,polytopes,espirito,tymoshenko,pronunciations,paradoxical,taichung,chipmunks,erhard,maximise,accretion,kanda,`abdu'l,narrowest,umpiring,mycenaean,divisor,geneticist,ceredigion,barque,hobbyists,equates,auxerre,spinose,cheil,sweetwater,guano,carboxylic,archiv,tannery,cormorant,agonists,fundacion,anbar,tunku,hindrance,meerut,concordat,secunderabad,kachin,achievable,murfreesboro,comprehensively,forges,broadest,synchronised,speciation,scapa,aliyev,conmebol,tirelessly,subjugated,pillaged,udaipur,defensively,lakhs,stateless,haasan,headlamps,patterning,podiums,polyphony,mcmurdo,mujer,vocally,storeyed,mucosa,multivariate,scopus,minimizes,formalised,certiorari,bourges,populate,overhanging,gaiety,unreserved,borromeo,woolworths,isotopic,bashar,purify,vertebra,medan,juxtaposition,earthwork,elongation,chaudhary,schematic,piast,steeped,nanotubes,fouls,achaea,legionnaires,abdur,qmjhl,embraer,hardback,centerville,ilocos,slovan,whitehorse,mauritian,moulding,mapuche,donned,provisioning,gazprom,jonesboro,audley,lightest,calyx,coldwater,trigonometric,petroglyphs,psychoanalyst,congregate,zambezi,fissure,supervises,bexley,etobicoke,wairarapa,tectonics,emphasises,formula_41,debugging,linfield,spatially,ionizing,ungulates,orinoco,clades,erlangen,news/talk,vols.,ceara,yakovlev,finsbury,entanglement,fieldhouse,graphene,intensifying,grigory,keyong,zacatecas,ninian,allgemeine,keswick,societa,snorri,femininity,najib,monoclonal,guyanese,postulate,huntly,abbeys,machinist,yunus,emphasising,ishaq,urmia,bremerton,pretenders,lumiere,thoroughfares,chikara,dramatized,metathorax,taiko,transcendence,wycliffe,retrieves,umpired,steuben,racehorses,taylors,kuznetsov,montezuma,precambrian,canopies,gaozong,propodeum,disestablished,retroactive,shoreham,rhizome,doubleheader,clinician,diwali,quartzite,shabaab,agassiz,despatched,stormwater,luxemburg,callao,universidade,courland,skane,glyph,dormers,witwatersrand,curacy,qualcomm,nansen,entablature,lauper,hausdorff,lusaka,ruthenian,360deg,cityscape,douai,vaishnava,spars,vaulting,rationalist,gygax,sequestration,typology,pollinates,accelerators,leben,colonials,cenotaph,imparted,carthaginians,equaled,rostrum,gobind,bodhisattva,oberst,bicycling,arabi,sangre,biophysics,hainaut,vernal,lunenburg,apportioned,finches,lajos,nenad,repackaged,zayed,nikephoros,r.e.m,swaminarayan,gestalt,unplaced,crags,grohl,sialkot,unsaturated,gwinnett,linemen,forays,palakkad,writs,instrumentalists,aircrews,badged,terrapins,180deg,oneness,commissariat,changi,pupation,circumscribed,contador,isotropic,administrated,fiefs,nimes,intrusions,minoru,geschichte,nadph,tainan,changchun,carbondale,frisia,swapo,evesham,hawai'i,encyclopedic,transporters,dysplasia,formula_42,onsite,jindal,guetta,judgements,narbonne,permissions,paleogene,rationalism,vilna,isometric,subtracted,chattahoochee,lamina,missa,greville,pervez,lattices,persistently,crystallization,timbered,hawaiians,fouling,interrelated,masood,ripening,stasi,gamal,visigothic,warlike,cybernetics,tanjung,forfar,cybernetic,karelian,brooklands,belfort,greifswald,campeche,inexplicably,refereeing,understory,uninterested,prius,collegiately,sefid,sarsfield,categorize,biannual,elsevier,eisteddfod,declension,autonoma,procuring,misrepresentation,novelization,bibliographic,shamanism,vestments,potash,eastleigh,ionized,turan,lavishly,scilly,balanchine,importers,parlance,'that,kanyakumari,synods,mieszko,crossovers,serfdom,conformational,legislated,exclave,heathland,sadar,differentiates,propositional,konstantinos,photoshop,manche,vellore,appalachia,orestes,taiga,exchanger,grozny,invalidated,baffin,spezia,staunchly,eisenach,robustness,virtuosity,ciphers,inlets,bolagh,understandings,bosniaks,parser,typhoons,sinan,luzerne,webcomic,subtraction,jhelum,businessweek,ceske,refrained,firebox,mitigated,helmholtz,dilip,eslamabad,metalwork,lucan,apportionment,provident,gdynia,schooners,casement,danse,hajjiabad,benazir,buttress,anthracite,newsreel,wollaston,dispatching,cadastral,riverboat,provincetown,nantwich,missal,irreverent,juxtaposed,darya,ennobled,electropop,stereoscopic,maneuverability,laban,luhansk,udine,collectibles,haulage,holyrood,materially,supercharger,gorizia,shkoder,townhouses,pilate,layoffs,folkloric,dialectic,exuberant,matures,malla,ceuta,citizenry,crewed,couplet,stopover,transposition,tradesmen,antioxidant,amines,utterance,grahame,landless,isere,diction,appellant,satirist,urbino,intertoto,subiaco,antonescu,nehemiah,ubiquitin,emcee,stourbridge,fencers,103rd,wranglers,monteverdi,watertight,expounded,xiamen,manmohan,pirie,threefold,antidepressant,sheboygan,grieg,cancerous,diverging,bernini,polychrome,fundamentalism,bihari,critiqued,cholas,villers,tendulkar,dafydd,vastra,fringed,evangelization,episcopalian,maliki,sana'a,ashburton,trianon,allegany,heptathlon,insufficiently,panelists,pharrell,hexham,amharic,fertilized,plumes,cistern,stratigraphy,akershus,catalans,karoo,rupee,minuteman,quantification,wigmore,leutnant,metanotum,weeknights,iridescent,extrasolar,brechin,deuterium,kuching,lyricism,astrakhan,brookhaven,euphorbia,hradec,bhagat,vardar,aylmer,positron,amygdala,speculators,unaccompanied,debrecen,slurry,windhoek,disaffected,rapporteur,mellitus,blockers,fronds,yatra,sportsperson,precession,physiologist,weeknight,pidgin,pharma,condemns,standardize,zetian,tibor,glycoprotein,emporia,cormorants,amalie,accesses,leonhard,denbighshire,roald,116th,will.i.am,symbiosis,privatised,meanders,chemnitz,jabalpur,shing,secede,ludvig,krajina,homegrown,snippets,sasanian,euripides,peder,cimarron,streaked,graubunden,kilimanjaro,mbeki,middleware,flensburg,bukovina,lindwall,marsalis,profited,abkhaz,polis,camouflaged,amyloid,morgantown,ovoid,bodleian,morte,quashed,gamelan,juventud,natchitoches,storyboard,freeview,enumeration,cielo,preludes,bulawayo,1600s,olympiads,multicast,faunal,asura,reinforces,puranas,ziegfeld,handicraft,seamount,kheil,noche,hallmarks,dermal,colorectal,encircle,hessen,umbilicus,sunnis,leste,unwin,disclosing,superfund,montmartre,refuelling,subprime,kolhapur,etiology,bismuth,laissez,vibrational,mazar,alcoa,rumsfeld,recurve,ticonderoga,lionsgate,onlookers,homesteads,filesystem,barometric,kingswood,biofuel,belleza,moshav,occidentalis,asymptomatic,northeasterly,leveson,huygens,numan,kingsway,primogeniture,toyotomi,yazoo,limpets,greenbelt,booed,concurrence,dihedral,ventrites,raipur,sibiu,plotters,kitab,109th,trackbed,skilful,berthed,effendi,fairing,sephardi,mikhailovich,lockyer,wadham,invertible,paperbacks,alphabetic,deuteronomy,constitutive,leathery,greyhounds,estoril,beechcraft,poblacion,cossidae,excreted,flamingos,singha,olmec,neurotransmitters,ascoli,nkrumah,forerunners,dualism,disenchanted,benefitted,centrum,undesignated,noida,o'donoghue,collages,egrets,egmont,wuppertal,cleave,montgomerie,pseudomonas,srinivasa,lymphatic,stadia,resold,minima,evacuees,consumerism,ronde,biochemist,automorphism,hollows,smuts,improvisations,vespasian,bream,pimlico,eglin,colne,melancholic,berhad,ousting,saale,notaulices,ouest,hunslet,tiberias,abdomina,ramsgate,stanislas,donbass,pontefract,sucrose,halts,drammen,chelm,l'arc,taming,trolleys,konin,incertae,licensees,scythian,giorgos,dative,tanglewood,farmlands,o'keeffe,caesium,romsdal,amstrad,corte,oglethorpe,huntingdonshire,magnetization,adapts,zamosc,shooto,cuttack,centrepiece,storehouse,winehouse,morbidity,woodcuts,ryazan,buddleja,buoyant,bodmin,estero,austral,verifiable,periyar,christendom,curtail,shura,kaifeng,cotswold,invariance,seafaring,gorica,androgen,usman,seabird,forecourt,pekka,juridical,audacious,yasser,cacti,qianlong,polemical,d'amore,espanyol,distrito,cartographers,pacifism,serpents,backa,nucleophilic,overturning,duplicates,marksman,oriente,vuitton,oberleutnant,gielgud,gesta,swinburne,transfiguration,1750s,retaken,celje,fredrikstad,asuka,cropping,mansard,donates,blacksmiths,vijayanagara,anuradhapura,germinate,betis,foreshore,jalandhar,bayonets,devaluation,frazione,ablaze,abidjan,approvals,homeostasis,corollary,auden,superfast,redcliffe,luxembourgish,datum,geraldton,printings,ludhiana,honoree,synchrotron,invercargill,hurriedly,108th,three-and-a-half,colonist,bexar,limousin,bessemer,ossetian,nunataks,buddhas,rebuked,thais,tilburg,verdicts,interleukin,unproven,dordrecht,solent,acclamation,muammar,dahomey,operettas,4x400,arrears,negotiators,whitehaven,apparitions,armoury,psychoactive,worshipers,sculptured,elphinstone,airshow,kjell,o'callaghan,shrank,professorships,predominance,subhash,coulomb,sekolah,retrofitted,samos,overthrowing,vibrato,resistors,palearctic,datasets,doordarshan,subcutaneous,compiles,immorality,patchwork,trinidadian,glycogen,pronged,zohar,visigoths,freres,akram,justo,agora,intakes,craiova,playwriting,bukhari,militarism,iwate,petitioners,harun,wisla,inefficiency,vendome,ledges,schopenhauer,kashi,entombed,assesses,tenn.,noumea,baguio,carex,o'donovan,filings,hillsdale,conjectures,blotches,annuals,lindisfarne,negated,vivek,angouleme,trincomalee,cofactor,verkhovna,backfield,twofold,automaker,rudra,freighters,darul,gharana,busway,formula_43,plattsburgh,portuguesa,showrunner,roadmap,valenciennes,erdos,biafra,spiritualism,transactional,modifies,carne,107th,cocos,gcses,tiverton,radiotherapy,meadowlands,gunma,srebrenica,foxtel,authenticated,enslavement,classicist,klaipeda,minstrels,searchable,infantrymen,incitement,shiga,nadp+,urals,guilders,banquets,exteriors,counterattacks,visualized,diacritics,patrimony,svensson,transepts,prizren,telegraphy,najaf,emblazoned,coupes,effluent,ragam,omani,greensburg,taino,flintshire,cd/dvd,lobbies,narrating,cacao,seafarers,bicolor,collaboratively,suraj,floodlit,sacral,puppetry,tlingit,malwa,login,motionless,thien,overseers,vihar,golem,specializations,bathhouse,priming,overdubs,winningest,archetypes,uniao,acland,creamery,slovakian,lithographs,maryborough,confidently,excavating,stillborn,ramallah,audiencia,alava,ternary,hermits,rostam,bauxite,gawain,lothair,captions,gulfstream,timelines,receded,mediating,petain,bastia,rudbar,bidders,disclaimer,shrews,tailings,trilobites,yuriy,jamil,demotion,gynecology,rajinikanth,madrigals,ghazni,flycatchers,vitebsk,bizet,computationally,kashgar,refinements,frankford,heralds,europe/africa,levante,disordered,sandringham,queues,ransacked,trebizond,verdes,comedie,primitives,figurine,organists,culminate,gosport,coagulation,ferrying,hoyas,polyurethane,prohibitive,midfielders,ligase,progesterone,defectors,sweetened,backcountry,diodorus,waterside,nieuport,khwaja,jurong,decried,gorkha,ismaili,300th,octahedral,kindergartens,paseo,codification,notifications,disregarding,risque,reconquista,shortland,atolls,texarkana,perceval,d'etudes,kanal,herbicides,tikva,nuova,gatherer,dissented,soweto,dexterity,enver,bacharach,placekicker,carnivals,automate,maynooth,symplectic,chetnik,militaire,upanishads,distributive,strafing,championing,moiety,miliband,blackadder,enforceable,maung,dimer,stadtbahn,diverges,obstructions,coleophoridae,disposals,shamrocks,aural,banca,bahru,coxed,grierson,vanadium,watermill,radiative,ecoregions,berets,hariri,bicarbonate,evacuations,mallee,nairn,rushden,loggia,slupsk,satisfactorily,milliseconds,cariboo,reine,cyclo,pigmentation,postmodernism,aqueducts,vasari,bourgogne,dilemmas,liquefied,fluminense,alloa,ibaraki,tenements,kumasi,humerus,raghu,labours,putsch,soundcloud,bodybuilder,rakyat,domitian,pesaro,translocation,sembilan,homeric,enforcers,tombstones,lectureship,rotorua,salamis,nikolaos,inferences,superfortress,lithgow,surmised,undercard,tarnow,barisan,stingrays,federacion,coldstream,haverford,ornithological,heerenveen,eleazar,jyoti,murali,bamako,riverbed,subsidised,theban,conspicuously,vistas,conservatorium,madrasa,kingfishers,arnulf,credential,syndicalist,sheathed,discontinuity,prisms,tsushima,coastlines,escapees,vitis,optimizing,megapixel,overground,embattled,halide,sprinters,buoys,mpumalanga,peculiarities,106th,roamed,menezes,macao,prelates,papyri,freemen,dissertations,irishmen,pooled,sverre,reconquest,conveyance,subjectivity,asturian,circassian,formula_45,comdr,thickets,unstressed,monro,passively,harmonium,moveable,dinar,carlsson,elysees,chairing,b'nai,confusingly,kaoru,convolution,godolphin,facilitator,saxophones,eelam,jebel,copulation,anions,livres,licensure,pontypridd,arakan,controllable,alessandria,propelling,stellenbosch,tiber,wolka,liberators,yarns,d'azur,tsinghua,semnan,amhara,ablation,melies,tonality,historique,beeston,kahne,intricately,sonoran,robespierre,gyrus,boycotts,defaulted,infill,maranhao,emigres,framingham,paraiba,wilhelmshaven,tritium,skyway,labial,supplementation,possessor,underserved,motets,maldivian,marrakech,quays,wikimedia,turbojet,demobilization,petrarch,encroaching,sloops,masted,karbala,corvallis,agribusiness,seaford,stenosis,hieronymus,irani,superdraft,baronies,cortisol,notability,veena,pontic,cyclin,archeologists,newham,culled,concurring,aeolian,manorial,shouldered,fords,philanthropists,105th,siddharth,gotthard,halim,rajshahi,jurchen,detritus,practicable,earthenware,discarding,travelogue,neuromuscular,elkhart,raeder,zygmunt,metastasis,internees,102nd,vigour,upmarket,summarizing,subjunctive,offsets,elizabethtown,udupi,pardubice,repeaters,instituting,archaea,substandard,technische,linga,anatomist,flourishes,velika,tenochtitlan,evangelistic,fitchburg,springbok,cascading,hydrostatic,avars,occasioned,filipina,perceiving,shimbun,africanus,consternation,tsing,optically,beitar,45deg,abutments,roseville,monomers,huelva,lotteries,hypothalamus,internationalist,electromechanical,hummingbirds,fibreglass,salaried,dramatists,uncovers,invokes,earners,excretion,gelding,ancien,aeronautica,haverhill,stour,ittihad,abramoff,yakov,ayodhya,accelerates,industrially,aeroplanes,deleterious,dwelt,belvoir,harpalus,atpase,maluku,alasdair,proportionality,taran,epistemological,interferometer,polypeptide,adjudged,villager,metastatic,marshalls,madhavan,archduchess,weizmann,kalgoorlie,balan,predefined,sessile,sagaing,brevity,insecticide,psychosocial,africana,steelworks,aether,aquifers,belem,mineiro,almagro,radiators,cenozoic,solute,turbocharger,invicta,guested,buccaneer,idolatry,unmatched,paducah,sinestro,dispossessed,conforms,responsiveness,cyanobacteria,flautist,procurator,complementing,semifinalist,rechargeable,permafrost,cytokine,refuges,boomed,gelderland,franchised,jinan,burnie,doubtless,randomness,colspan=12,angra,ginebra,famers,nuestro,declarative,roughness,lauenburg,motile,rekha,issuer,piney,interceptors,napoca,gipsy,formulaic,formula_44,viswanathan,ebrahim,thessalonica,galeria,muskogee,unsold,html5,taito,mobutu,icann,carnarvon,fairtrade,morphisms,upsilon,nozzles,fabius,meander,murugan,strontium,episcopacy,sandinista,parasol,attenuated,bhima,primeval,panay,ordinator,negara,osteoporosis,glossop,ebook,paradoxically,grevillea,modoc,equating,phonetically,legumes,covariant,dorje,quatre,bruxelles,pyroclastic,shipbuilder,zhaozong,obscuring,sveriges,tremolo,extensible,barrack,multnomah,hakon,chaharmahal,parsing,volumetric,astrophysical,glottal,combinatorics,freestanding,encoder,paralysed,cavalrymen,taboos,heilbronn,orientalis,lockport,marvels,ozawa,dispositions,waders,incurring,saltire,modulate,papilio,phenol,intermedia,rappahannock,plasmid,fortify,phenotypes,transiting,correspondences,leaguer,larnaca,incompatibility,mcenroe,deeming,endeavoured,aboriginals,helmed,salar,arginine,werke,ferrand,expropriated,delimited,couplets,phoenicians,petioles,ouster,anschluss,protectionist,plessis,urchins,orquesta,castleton,juniata,bittorrent,fulani,donji,mykola,rosemont,chandos,scepticism,signer,chalukya,wicketkeeper,coquitlam,programmatic,o'brian,carteret,urology,steelhead,paleocene,konkan,bettered,venkatesh,surfacing,longitudinally,centurions,popularization,yazid,douro,widths,premios,leonards,gristmill,fallujah,arezzo,leftists,ecliptic,glycerol,inaction,disenfranchised,acrimonious,depositing,parashah,cockatoo,marechal,bolzano,chios,cablevision,impartiality,pouches,thickly,equities,bentinck,emotive,boson,ashdown,conquistadors,parsi,conservationists,reductive,newlands,centerline,ornithologists,waveguide,nicene,philological,hemel,setanta,masala,aphids,convening,casco,matrilineal,chalcedon,orthographic,hythe,replete,damming,bolivarian,admixture,embarks,borderlands,conformed,nagarjuna,blenny,chaitanya,suwon,shigeru,tatarstan,lingayen,rejoins,grodno,merovingian,hardwicke,puducherry,prototyping,laxmi,upheavals,headquarter,pollinators,bromine,transom,plantagenet,arbuthnot,chidambaram,woburn,osamu,panelling,coauthored,zhongshu,hyaline,omissions,aspergillus,offensively,electrolytic,woodcut,sodom,intensities,clydebank,piotrkow,supplementing,quipped,focke,harbinger,positivism,parklands,wolfenbuttel,cauca,tryptophan,taunus,curragh,tsonga,remand,obscura,ashikaga,eltham,forelimbs,analogs,trnava,observances,kailash,antithesis,ayumi,abyssinia,dorsally,tralee,pursuers,misadventures,padova,perot,mahadev,tarim,granth,licenced,compania,patuxent,baronial,korda,cochabamba,codices,karna,memorialized,semaphore,playlists,mandibular,halal,sivaji,scherzinger,stralsund,foundries,ribosome,mindfulness,nikolayevich,paraphyletic,newsreader,catalyze,ioannina,thalamus,gbit/s,paymaster,sarab,500th,replenished,gamepro,cracow,formula_46,gascony,reburied,lessing,easement,transposed,meurthe,satires,proviso,balthasar,unbound,cuckoos,durbar,louisbourg,cowes,wholesalers,manet,narita,xiaoping,mohamad,illusory,cathal,reuptake,alkaloid,tahrir,mmorpg,underlies,anglicanism,repton,aharon,exogenous,buchenwald,indigent,odostomia,milled,santorum,toungoo,nevsky,steyr,urbanisation,darkseid,subsonic,canaanite,akiva,eglise,dentition,mediators,cirencester,peloponnesian,malmesbury,durres,oerlikon,tabulated,saens,canaria,ischemic,esterhazy,ringling,centralization,walthamstow,nalanda,lignite,takht,leninism,expiring,circe,phytoplankton,promulgation,integrable,breeches,aalto,menominee,borgo,scythians,skrull,galleon,reinvestment,raglan,reachable,liberec,airframes,electrolysis,geospatial,rubiaceae,interdependence,symmetrically,simulcasts,keenly,mauna,adipose,zaidi,fairport,vestibular,actuators,monochromatic,literatures,congestive,sacramental,atholl,skytrain,tycho,tunings,jamia,catharina,modifier,methuen,tapings,infiltrating,colima,grafting,tauranga,halides,pontificate,phonetics,koper,hafez,grooved,kintetsu,extrajudicial,linkoping,cyberpunk,repetitions,laurentian,parnu,bretton,darko,sverdlovsk,foreshadowed,akhenaten,rehnquist,gosford,coverts,pragmatism,broadleaf,ethiopians,instated,mediates,sodra,opulent,descriptor,enugu,shimla,leesburg,officership,giffard,refectory,lusitania,cybermen,fiume,corus,tydfil,lawrenceville,ocala,leviticus,burghers,ataxia,richthofen,amicably,acoustical,watling,inquired,tiempo,multiracial,parallelism,trenchard,tokyopop,germanium,usisl,philharmonia,shapur,jacobites,latinized,sophocles,remittances,o'farrell,adder,dimitrios,peshwa,dimitar,orlov,outstretched,musume,satish,dimensionless,serialised,baptisms,pagasa,antiviral,1740s,quine,arapaho,bombardments,stratosphere,ophthalmic,injunctions,carbonated,nonviolence,asante,creoles,sybra,boilermakers,abington,bipartite,permissive,cardinality,anheuser,carcinogenic,hohenlohe,surinam,szeged,infanticide,generically,floorball,'white,automakers,cerebellar,homozygous,remoteness,effortlessly,allude,'great,headmasters,minting,manchurian,kinabalu,wemyss,seditious,widgets,marbled,almshouses,bards,subgenres,tetsuya,faulting,kickboxer,gaulish,hoseyn,malton,fluvial,questionnaires,mondale,downplayed,traditionalists,vercelli,sumatran,landfills,gamesradar,exerts,franciszek,unlawfully,huesca,diderot,libertarians,professorial,laane,piecemeal,conidae,taiji,curatorial,perturbations,abstractions,szlachta,watercraft,mullah,zoroastrianism,segmental,khabarovsk,rectors,affordability,scuola,diffused,stena,cyclonic,workpiece,romford,'little,jhansi,stalag,zhongshan,skipton,maracaibo,bernadotte,thanet,groening,waterville,encloses,sahrawi,nuffield,moorings,chantry,annenberg,islay,marchers,tenses,wahid,siegen,furstenberg,basques,resuscitation,seminarians,tympanum,gentiles,vegetarianism,tufted,venkata,fantastical,pterophoridae,machined,superposition,glabrous,kaveri,chicane,executors,phyllonorycter,bidirectional,jasta,undertones,touristic,majapahit,navratilova,unpopularity,barbadian,tinian,webcast,hurdler,rigidly,jarrah,staphylococcus,igniting,irrawaddy,stabilised,airstrike,ragas,wakayama,energetically,ekstraklasa,minibus,largemouth,cultivators,leveraging,waitangi,carnaval,weaves,turntables,heydrich,sextus,excavate,govind,ignaz,pedagogue,uriah,borrowings,gemstones,infractions,mycobacterium,batavian,massing,praetor,subalpine,massoud,passers,geostationary,jalil,trainsets,barbus,impair,budejovice,denbigh,pertain,historicity,fortaleza,nederlandse,lamenting,masterchef,doubs,gemara,conductance,ploiesti,cetaceans,courthouses,bhagavad,mihailovic,occlusion,bremerhaven,bulwark,morava,kaine,drapery,maputo,conquistador,kaduna,famagusta,first-past-the-post,erudite,galton,undated,tangential,filho,dismembered,dashes,criterium,darwen,metabolized,blurring,everard,randwick,mohave,impurity,acuity,ansbach,chievo,surcharge,plantain,algoma,porosity,zirconium,selva,sevenoaks,venizelos,gwynne,golgi,imparting,separatism,courtesan,idiopathic,gravestones,hydroelectricity,babar,orford,purposeful,acutely,shard,ridgewood,viterbo,manohar,expropriation,placenames,brevis,cosine,unranked,richfield,newnham,recoverable,flightless,dispersing,clearfield,abu'l,stranraer,kempe,streamlining,goswami,epidermal,pieta,conciliatory,distilleries,electrophoresis,bonne,tiago,curiosities,candidature,picnicking,perihelion,lintel,povoa,gullies,configure,excision,facies,signers,1730s,insufficiency,semiotics,streatham,deactivation,entomological,skippers,albacete,parodying,escherichia,honorees,singaporeans,counterterrorism,tiruchirappalli,omnivorous,metropole,globalisation,athol,unbounded,codice_5,landforms,classifier,farmhouses,reaffirming,reparation,yomiuri,technologists,mitte,medica,viewable,steampunk,konya,kshatriya,repelling,edgewater,lamiinae,devas,potteries,llandaff,engendered,submits,virulence,uplifted,educationist,metropolitans,frontrunner,dunstable,forecastle,frets,methodius,exmouth,linnean,bouchet,repulsion,computable,equalling,liceo,tephritidae,agave,hydrological,azarenka,fairground,l'homme,enforces,xinhua,cinematographers,cooperstown,sa'id,paiute,christianization,tempos,chippenham,insulator,kotor,stereotyped,dello,cours,hisham,d'souza,eliminations,supercars,passau,rebrand,natures,coote,persephone,rededicated,cleaved,plenum,blistering,indiscriminately,cleese,safed,recursively,compacted,revues,hydration,shillong,echelons,garhwal,pedimented,grower,zwolle,wildflower,annexing,methionine,petah,valens,famitsu,petiole,specialities,nestorian,shahin,tokaido,shearwater,barberini,kinsmen,experimenter,alumnae,cloisters,alumina,pritzker,hardiness,soundgarden,julich,ps300,watercourse,cementing,wordplay,olivet,demesne,chasseurs,amide,zapotec,gaozu,porphyry,absorbers,indium,analogies,devotions,engravers,limestones,catapulted,surry,brickworks,gotra,rodham,landline,paleontologists,shankara,islip,raucous,trollope,arpad,embarkation,morphemes,recites,picardie,nakhchivan,tolerances,formula_47,khorramabad,nichiren,adrianople,kirkuk,assemblages,collider,bikaner,bushfires,roofline,coverings,reredos,bibliotheca,mantras,accentuated,commedia,rashtriya,fluctuation,serhiy,referential,fittipaldi,vesicle,geeta,iraklis,immediacy,chulalongkorn,hunsruck,bingen,dreadnoughts,stonemason,meenakshi,lebesgue,undergrowth,baltistan,paradoxes,parlement,articled,tiflis,dixieland,meriden,tejano,underdogs,barnstable,exemplify,venter,tropes,wielka,kankakee,iskandar,zilina,pharyngeal,spotify,materialised,picts,atlantique,theodoric,prepositions,paramilitaries,pinellas,attlee,actuated,piedmontese,grayling,thucydides,multifaceted,unedited,autonomously,universelle,utricularia,mooted,preto,incubated,underlie,brasenose,nootka,bushland,sensu,benzodiazepine,esteghlal,seagoing,amenhotep,azusa,sappers,culpeper,smokeless,thoroughbreds,dargah,gorda,alumna,mankato,zdroj,deleting,culvert,formula_49,punting,wushu,hindering,immunoglobulin,standardisation,birger,oilfield,quadrangular,ulama,recruiters,netanya,1630s,communaute,istituto,maciej,pathan,meher,vikas,characterizations,playmaker,interagency,intercepts,assembles,horthy,introspection,narada,matra,testes,radnicki,estonians,csiro,instar,mitford,adrenergic,crewmembers,haaretz,wasatch,lisburn,rangefinder,ordre,condensate,reforestation,corregidor,spvgg,modulator,mannerist,faulted,aspires,maktoum,squarepants,aethelred,piezoelectric,mulatto,dacre,progressions,jagiellonian,norge,samaria,sukhoi,effingham,coxless,hermetic,humanists,centrality,litters,stirlingshire,beaconsfield,sundanese,geometrically,caretakers,habitually,bandra,pashtuns,bradenton,arequipa,laminar,brickyard,hitchin,sustains,shipboard,ploughing,trechus,wheelers,bracketed,ilyushin,subotica,d'hondt,reappearance,bridgestone,intermarried,fulfilment,aphasia,birkbeck,transformational,strathmore,hornbill,millstone,lacan,voids,solothurn,gymnasiums,laconia,viaducts,peduncle,teachta,edgware,shinty,supernovae,wilfried,exclaim,parthia,mithun,flashpoint,moksha,cumbia,metternich,avalanches,militancy,motorist,rivadavia,chancellorsville,federals,gendered,bounding,footy,gauri,caliphs,lingam,watchmaker,unrecorded,riverina,unmodified,seafloor,droit,pfalz,chrysostom,gigabit,overlordship,besiege,espn2,oswestry,anachronistic,ballymena,reactivation,duchovny,ghani,abacetus,duller,legio,watercourses,nord-pas-de-calais,leiber,optometry,swarms,installer,sancti,adverbs,iheartmedia,meiningen,zeljko,kakheti,notional,circuses,patrilineal,acrobatics,infrastructural,sheva,oregonian,adjudication,aamir,wloclawek,overfishing,obstructive,subtracting,aurobindo,archeologist,newgate,'cause,secularization,tehsils,abscess,fingal,janacek,elkhorn,trims,kraftwerk,mandating,irregulars,faintly,congregationalist,sveti,kasai,mishaps,kennebec,provincially,durkheim,scotties,aicte,rapperswil,imphal,surrenders,morphs,nineveh,hoxha,cotabato,thuringian,metalworking,retold,shogakukan,anthers,proteasome,tippeligaen,disengagement,mockumentary,palatial,erupts,flume,corrientes,masthead,jaroslaw,rereleased,bharti,labors,distilling,tusks,varzim,refounded,enniskillen,melkite,semifinalists,vadodara,bermudian,capstone,grasse,origination,populus,alesi,arrondissements,semigroup,verein,opossum,messrs.,portadown,bulbul,tirupati,mulhouse,tetrahedron,roethlisberger,nonverbal,connexion,warangal,deprecated,gneiss,octet,vukovar,hesketh,chambre,despatch,claes,kargil,hideo,gravelly,tyndale,aquileia,tuners,defensible,tutte,theotokos,constructivist,ouvrage,dukla,polisario,monasticism,proscribed,commutation,testers,nipissing,codon,mesto,olivine,concomitant,exoskeleton,purports,coromandel,eyalet,dissension,hippocrates,purebred,yaounde,composting,oecophoridae,procopius,o'day,angiogenesis,sheerness,intelligencer,articular,felixstowe,aegon,endocrinology,trabzon,licinius,pagodas,zooplankton,hooghly,satie,drifters,sarthe,mercian,neuilly,tumours,canal+,scheldt,inclinations,counteroffensive,roadrunners,tuzla,shoreditch,surigao,predicates,carnot,algeciras,militaries,generalize,bulkheads,gawler,pollutant,celta,rundgren,microrna,gewog,olimpija,placental,lubelski,roxburgh,discerned,verano,kikuchi,musicale,l'enfant,ferocity,dimorphic,antigonus,erzurum,prebendary,recitative,discworld,cyrenaica,stigmella,totnes,sutta,pachuca,ulsan,downton,landshut,castellan,pleural,siedlce,siecle,catamaran,cottbus,utilises,trophic,freeholders,holyhead,u.s.s,chansons,responder,waziristan,suzuka,birding,shogi,asker,acetone,beautification,cytotoxic,dixit,hunterdon,cobblestone,formula_48,kossuth,devizes,sokoto,interlaced,shuttered,kilowatts,assiniboine,isaak,salto,alderney,sugarloaf,franchising,aggressiveness,toponyms,plaintext,antimatter,henin,equidistant,salivary,bilingualism,mountings,obligate,extirpated,irenaeus,misused,pastoralists,aftab,immigrating,warping,tyrolean,seaforth,teesside,soundwave,oligarchy,stelae,pairwise,iupac,tezuka,posht,orchestrations,landmass,ironstone,gallia,hjalmar,carmelites,strafford,elmhurst,palladio,fragility,teleplay,gruffudd,karoly,yerba,potok,espoo,inductance,macaque,nonprofits,pareto,rock'n'roll,spiritualist,shadowed,skateboarder,utterances,generality,congruence,prostrate,deterred,yellowknife,albarn,maldon,battlements,mohsen,insecticides,khulna,avellino,menstruation,glutathione,springdale,parlophone,confraternity,korps,countrywide,bosphorus,preexisting,damodar,astride,alexandrovich,sprinting,crystallized,botev,leaching,interstates,veers,angevin,undaunted,yevgeni,nishapur,northerners,alkmaar,bethnal,grocers,sepia,tornus,exemplar,trobe,charcot,gyeonggi,larne,tournai,lorain,voided,genji,enactments,maxilla,adiabatic,eifel,nazim,transducer,thelonious,pyrite,deportiva,dialectal,bengt,rosettes,labem,sergeyevich,synoptic,conservator,statuette,biweekly,adhesives,bifurcation,rajapaksa,mammootty,republique,yusef,waseda,marshfield,yekaterinburg,minnelli,fundy,fenian,matchups,dungannon,supremacist,panelled,drenthe,iyengar,fibula,narmada,homeport,oceanside,precept,antibacterial,altarpieces,swath,ospreys,lillooet,legnica,lossless,formula_50,galvatron,iorga,stormont,rsfsr,loggers,kutno,phenomenological,medallists,cuatro,soissons,homeopathy,bituminous,injures,syndicates,typesetting,displacements,dethroned,makassar,lucchese,abergavenny,targu,alborz,akb48,boldface,gastronomy,sacra,amenity,accumulator,myrtaceae,cornices,mourinho,denunciation,oxbow,diddley,aargau,arbitrage,bedchamber,gruffydd,zamindar,klagenfurt,caernarfon,slowdown,stansted,abrasion,tamaki,suetonius,dukakis,individualistic,ventrally,hotham,perestroika,ketones,fertilisation,sobriquet,couplings,renderings,misidentified,rundfunk,sarcastically,braniff,concours,dismissals,elegantly,modifiers,crediting,combos,crucially,seafront,lieut,ischemia,manchus,derivations,proteases,aristophanes,adenauer,porting,hezekiah,sante,trulli,hornblower,foreshadowing,ypsilanti,dharwad,khani,hohenstaufen,distillers,cosmodrome,intracranial,turki,salesian,gorzow,jihlava,yushchenko,leichhardt,venables,cassia,eurogamer,airtel,curative,bestsellers,timeform,sortied,grandview,massillon,ceding,pilbara,chillicothe,heredity,elblag,rogaland,ronne,millennial,batley,overuse,bharata,fille,campbelltown,abeyance,counterclockwise,250cc,neurodegenerative,consigned,electromagnetism,sunnah,saheb,exons,coxswain,gleaned,bassoons,worksop,prismatic,immigrate,pickets,takeo,bobsledder,stosur,fujimori,merchantmen,stiftung,forli,endorses,taskforce,thermally,atman,gurps,floodplains,enthalpy,extrinsic,setubal,kennesaw,grandis,scalability,durations,showrooms,prithvi,outro,overruns,andalucia,amanita,abitur,hipper,mozambican,sustainment,arsene,chesham,palaeolithic,reportage,criminality,knowsley,haploid,atacama,shueisha,ridgefield,astern,getafe,lineal,timorese,restyled,hollies,agincourt,unter,justly,tannins,mataram,industrialised,tarnovo,mumtaz,mustapha,stretton,synthetase,condita,allround,putra,stjepan,troughs,aechmea,specialisation,wearable,kadokawa,uralic,aeros,messiaen,existentialism,jeweller,effigies,gametes,fjordane,cochlear,interdependent,demonstrative,unstructured,emplacement,famines,spindles,amplitudes,actuator,tantalum,psilocybe,apnea,monogatari,expulsions,seleucus,tsuen,hospitaller,kronstadt,eclipsing,olympiakos,clann,canadensis,inverter,helio,egyptologist,squamous,resonate,munir,histology,torbay,khans,jcpenney,veterinarians,aintree,microscopes,colonised,reflectors,phosphorylated,pristimantis,tulare,corvinus,multiplexing,midweek,demosthenes,transjordan,ecija,tengku,vlachs,anamorphic,counterweight,radnor,trinitarian,armidale,maugham,njsiaa,futurism,stairways,avicenna,montebello,bridgetown,wenatchee,lyonnais,amass,surinamese,streptococcus,m*a*s*h,hydrogenation,frazioni,proscenium,kalat,pennsylvanian,huracan,tallying,kralove,nucleolar,phrygian,seaports,hyacinthe,ignace,donning,instalment,regnal,fonds,prawn,carell,folktales,goaltending,bracknell,vmware,patriarchy,mitsui,kragujevac,pythagoras,soult,thapa,disproved,suwalki,secures,somoza,l'ecole,divizia,chroma,herders,technologist,deduces,maasai,rampur,paraphrase,raimi,imaged,magsaysay,ivano,turmeric,formula_51,subcommittees,axillary,ionosphere,organically,indented,refurbishing,pequot,violinists,bearn,colle,contralto,silverton,mechanization,etruscans,wittelsbach,pasir,redshirted,marrakesh,scarp,plein,wafers,qareh,teotihuacan,frobenius,sinensis,rehoboth,bundaberg,newbridge,hydrodynamic,traore,abubakar,adjusts,storytellers,dynamos,verbandsliga,concertmaster,exxonmobil,appreciable,sieradz,marchioness,chaplaincy,rechristened,cunxu,overpopulation,apolitical,sequencer,beaked,nemanja,binaries,intendant,absorber,filamentous,indebtedness,nusra,nashik,reprises,psychedelia,abwehr,ligurian,isoform,resistive,pillaging,mahathir,reformatory,lusatia,allerton,ajaccio,tepals,maturin,njcaa,abyssinian,objector,fissures,sinuous,ecclesiastic,dalits,caching,deckers,phosphates,wurlitzer,navigated,trofeo,berea,purefoods,solway,unlockable,grammys,kostroma,vocalizations,basilan,rebuke,abbasi,douala,helsingborg,ambon,bakar,runestones,cenel,tomislav,pigmented,northgate,excised,seconda,kirke,determinations,dedicates,vilas,pueblos,reversion,unexploded,overprinted,ekiti,deauville,masato,anaesthesia,endoplasmic,transponders,aguascalientes,hindley,celluloid,affording,bayeux,piaget,rickshaws,eishockey,camarines,zamalek,undersides,hardwoods,hermitian,mutinied,monotone,blackmails,affixes,jpmorgan,habermas,mitrovica,paleontological,polystyrene,thana,manas,conformist,turbofan,decomposes,logano,castration,metamorphoses,patroness,herbicide,mikolaj,rapprochement,macroeconomics,barranquilla,matsudaira,lintels,femina,hijab,spotsylvania,morpheme,bitola,baluchistan,kurukshetra,otway,extrusion,waukesha,menswear,helder,trung,bingley,protester,boars,overhang,differentials,exarchate,hejaz,kumara,unjustified,timings,sharpness,nuovo,taisho,sundar,etc..,jehan,unquestionably,muscovy,daltrey,canute,paneled,amedeo,metroplex,elaborates,telus,tetrapods,dragonflies,epithets,saffir,parthenon,lucrezia,refitting,pentateuch,hanshin,montparnasse,lumberjacks,sanhedrin,erectile,odors,greenstone,resurgent,leszek,amory,substituents,prototypical,viewfinder,monck,universiteit,joffre,revives,chatillon,seedling,scherzo,manukau,ashdod,gympie,homolog,stalwarts,ruinous,weibo,tochigi,wallenberg,gayatri,munda,satyagraha,storefronts,heterogeneity,tollway,sportswriters,binocular,gendarmes,ladysmith,tikal,ortsgemeinde,ja'far,osmotic,linlithgow,bramley,telecoms,pugin,repose,rupaul,sieur,meniscus,garmisch,reintroduce,400th,shoten,poniatowski,drome,kazakhstani,changeover,astronautics,husserl,herzl,hypertext,katakana,polybius,antananarivo,seong,breguet,reliquary,utada,aggregating,liangshan,sivan,tonawanda,audiobooks,shankill,coulee,phenolic,brockton,bookmakers,handsets,boaters,wylde,commonality,mappings,silhouettes,pennines,maurya,pratchett,singularities,eschewed,pretensions,vitreous,ibero,totalitarianism,poulenc,lingered,directx,seasoning,deputation,interdict,illyria,feedstock,counterbalance,muzik,buganda,parachuted,violist,homogeneity,comix,fjords,corsairs,punted,verandahs,equilateral,laoghaire,magyars,117th,alesund,televoting,mayotte,eateries,refurbish,nswrl,yukio,caragiale,zetas,dispel,codecs,inoperable,outperformed,rejuvenation,elstree,modernise,contributory,pictou,tewkesbury,chechens,ashina,psionic,refutation,medico,overdubbed,nebulae,sandefjord,personages,eccellenza,businessperson,placename,abenaki,perryville,threshing,reshaped,arecibo,burslem,colspan=3|turnout,rebadged,lumia,erinsborough,interactivity,bitmap,indefatigable,theosophy,excitatory,gleizes,edsel,bermondsey,korce,saarinen,wazir,diyarbakir,cofounder,liberalisation,onsen,nighthawks,siting,retirements,semyon,d'histoire,114th,redditch,venetia,praha,'round,valdosta,hieroglyphic,postmedial,edirne,miscellany,savona,cockpits,minimization,coupler,jacksonian,appeasement,argentines,saurashtra,arkwright,hesiod,folios,fitzalan,publica,rivaled,civitas,beermen,constructivism,ribeira,zeitschrift,solanum,todos,deformities,chilliwack,verdean,meagre,bishoprics,gujrat,yangzhou,reentered,inboard,mythologies,virtus,unsurprisingly,rusticated,museu,symbolise,proportionate,thesaban,symbian,aeneid,mitotic,veliki,compressive,cisterns,abies,winemaker,massenet,bertolt,ahmednagar,triplemania,armorial,administracion,tenures,smokehouse,hashtag,fuerza,regattas,gennady,kanazawa,mahmudabad,crustal,asaph,valentinian,ilaiyaraaja,honeyeater,trapezoidal,cooperatively,unambiguously,mastodon,inhospitable,harnesses,riverton,renewables,djurgardens,haitians,airings,humanoids,boatswain,shijiazhuang,faints,veera,punjabis,steepest,narain,karlovy,serre,sulcus,collectives,1500m,arion,subarctic,liberally,apollonius,ostia,droplet,headstones,norra,robusta,maquis,veronese,imola,primers,luminance,escadrille,mizuki,irreconcilable,stalybridge,temur,paraffin,stuccoed,parthians,counsels,fundamentalists,vivendi,polymath,sugababes,mikko,yonne,fermions,vestfold,pastoralist,kigali,unseeded,glarus,cusps,amasya,northwesterly,minorca,astragalus,verney,trevelyan,antipathy,wollstonecraft,bivalves,boulez,royle,divisao,quranic,bareilly,coronal,deviates,lulea,erectus,petronas,chandan,proxies,aeroflot,postsynaptic,memoriam,moyne,gounod,kuznetsova,pallava,ordinating,reigate,'first,lewisburg,exploitative,danby,academica,bailiwick,brahe,injective,stipulations,aeschylus,computes,gulden,hydroxylase,liveries,somalis,underpinnings,muscovite,kongsberg,domus,overlain,shareware,variegated,jalalabad,agence,ciphertext,insectivores,dengeki,menuhin,cladistic,baerum,betrothal,tokushima,wavelet,expansionist,pottsville,siyuan,prerequisites,carpi,nemzeti,nazar,trialled,eliminator,irrorated,homeward,redwoods,undeterred,strayed,lutyens,multicellular,aurelian,notated,lordships,alsatian,idents,foggia,garros,chalukyas,lillestrom,podlaski,pessimism,hsien,demilitarized,whitewashed,willesden,kirkcaldy,sanctorum,lamia,relaying,escondido,paediatric,contemplates,demarcated,bluestone,betula,penarol,capitalise,kreuznach,kenora,115th,hold'em,reichswehr,vaucluse,m.i.a,windings,boys/girls,cajon,hisar,predictably,flemington,ysgol,mimicked,clivina,grahamstown,ionia,glyndebourne,patrese,aquaria,sleaford,dayal,sportscenter,malappuram,m.b.a.,manoa,carbines,solvable,designator,ramanujan,linearity,academicians,sayid,lancastrian,factorial,strindberg,vashem,delos,comyn,condensing,superdome,merited,kabaddi,intransitive,bideford,neuroimaging,duopoly,scorecards,ziggler,heriot,boyars,virology,marblehead,microtubules,westphalian,anticipates,hingham,searchers,harpist,rapides,morricone,convalescent,mises,nitride,metrorail,matterhorn,bicol,drivetrain,marketer,snippet,winemakers,muban,scavengers,halberstadt,herkimer,peten,laborious,stora,montgomeryshire,booklist,shamir,herault,eurostar,anhydrous,spacewalk,ecclesia,calliostoma,highschool,d'oro,suffusion,imparts,overlords,tagus,rectifier,counterinsurgency,ministered,eilean,milecastle,contre,micromollusk,okhotsk,bartoli,matroid,hasidim,thirunal,terme,tarlac,lashkar,presque,thameslink,flyby,troopship,renouncing,fatih,messrs,vexillum,bagration,magnetite,bornholm,androgynous,vehement,tourette,philosophic,gianfranco,tuileries,codice_6,radially,flexion,hants,reprocessing,setae,burne,palaeographically,infantryman,shorebirds,tamarind,moderna,threading,militaristic,crohn,norrkoping,125cc,stadtholder,troms,klezmer,alphanumeric,brome,emmanuelle,tiwari,alchemical,formula_52,onassis,bleriot,bipedal,colourless,hermeneutics,hosni,precipitating,turnstiles,hallucinogenic,panhellenic,wyandotte,elucidated,chita,ehime,generalised,hydrophilic,biota,niobium,rnzaf,gandhara,longueuil,logics,sheeting,bielsko,cuvier,kagyu,trefoil,docent,pancrase,stalinism,postures,encephalopathy,monckton,imbalances,epochs,leaguers,anzio,diminishes,pataki,nitrite,amuro,nabil,maybach,l'aquila,babbler,bacolod,thutmose,evora,gaudi,breakage,recur,preservative,60deg,mendip,functionaries,columnar,maccabiah,chert,verden,bromsgrove,clijsters,dengue,pastorate,phuoc,principia,viareggio,kharagpur,scharnhorst,anyang,bosons,l'art,criticises,ennio,semarang,brownian,mirabilis,asperger,calibers,typographical,cartooning,minos,disembark,supranational,undescribed,etymologically,alappuzha,vilhelm,lanao,pakenham,bhagavata,rakoczi,clearings,astrologers,manitowoc,bunuel,acetylene,scheduler,defamatory,trabzonspor,leaded,scioto,pentathlete,abrahamic,minigames,aldehydes,peerages,legionary,1640s,masterworks,loudness,bryansk,likeable,genocidal,vegetated,towpath,declination,pyrrhus,divinely,vocations,rosebery,associazione,loaders,biswas,oeste,tilings,xianzong,bhojpuri,annuities,relatedness,idolator,psers,constriction,chuvash,choristers,hanafi,fielders,grammarian,orpheum,asylums,millbrook,gyatso,geldof,stabilise,tableaux,diarist,kalahari,panini,cowdenbeath,melanin,4x100m,resonances,pinar,atherosclerosis,sheringham,castlereagh,aoyama,larks,pantograph,protrude,natak,gustafsson,moribund,cerevisiae,cleanly,polymeric,holkar,cosmonauts,underpinning,lithosphere,firuzabad,languished,mingled,citrate,spadina,lavas,daejeon,fibrillation,porgy,pineville,ps1000,cobbled,emamzadeh,mukhtar,dampers,indelible,salonika,nanoscale,treblinka,eilat,purporting,fluctuate,mesic,hagiography,cutscenes,fondation,barrens,comically,accrue,ibrox,makerere,defections,'there,hollandia,skene,grosseto,reddit,objectors,inoculation,rowdies,playfair,calligrapher,namor,sibenik,abbottabad,propellants,hydraulically,chloroplasts,tablelands,tecnico,schist,klasse,shirvan,bashkortostan,bullfighting,north/south,polski,hanns,woodblock,kilmore,ejecta,ignacy,nanchang,danubian,commendations,snohomish,samaritans,argumentation,vasconcelos,hedgehogs,vajrayana,barents,kulkarni,kumbakonam,identifications,hillingdon,weirs,nayanar,beauvoir,messe,divisors,atlantiques,broods,affluence,tegucigalpa,unsuited,autodesk,akash,princeps,culprits,kingstown,unassuming,goole,visayan,asceticism,blagojevich,irises,paphos,unsound,maurier,pontchartrain,desertification,sinfonietta,latins,especial,limpet,valerenga,glial,brainstem,mitral,parables,sauropod,judean,iskcon,sarcoma,venlo,justifications,zhuhai,blavatsky,alleviated,usafe,steppenwolf,inversions,janko,chagall,secretory,basildon,saguenay,pergamon,hemispherical,harmonized,reloading,franjo,domaine,extravagance,relativism,metamorphosed,labuan,baloncesto,gmail,byproducts,calvinists,counterattacked,vitus,bubonic,120th,strachey,ritually,brookwood,selectable,savinja,incontinence,meltwater,jinja,1720s,brahmi,morgenthau,sheaves,sleeved,stratovolcano,wielki,utilisation,avoca,fluxus,panzergrenadier,philately,deflation,podlaska,prerogatives,kuroda,theophile,zhongzong,gascoyne,magus,takao,arundell,fylde,merdeka,prithviraj,venkateswara,liepaja,daigo,dreamland,reflux,sunnyvale,coalfields,seacrest,soldering,flexor,structuralism,alnwick,outweighed,unaired,mangeshkar,batons,glaad,banshees,irradiated,organelles,biathlete,cabling,chairlift,lollapalooza,newsnight,capacitive,succumbs,flatly,miramichi,burwood,comedienne,charteris,biotic,workspace,aficionados,sokolka,chatelet,o'shaughnessy,prosthesis,neoliberal,refloated,oppland,hatchlings,econometrics,loess,thieu,androids,appalachians,jenin,pterostichinae,downsized,foils,chipsets,stencil,danza,narrate,maginot,yemenite,bisects,crustacean,prescriptive,melodious,alleviation,empowers,hansson,autodromo,obasanjo,osmosis,daugava,rheumatism,moraes,leucine,etymologies,chepstow,delaunay,bramall,bajaj,flavoring,approximates,marsupials,incisive,microcomputer,tactically,waals,wilno,fisichella,ursus,hindmarsh,mazarin,lomza,xenophobia,lawlessness,annecy,wingers,gornja,gnaeus,superieur,tlaxcala,clasps,symbolises,slats,rightist,effector,blighted,permanence,divan,progenitors,kunsthalle,anointing,excelling,coenzyme,indoctrination,dnipro,landholdings,adriaan,liturgies,cartan,ethmia,attributions,sanctus,trichy,chronicon,tancred,affinis,kampuchea,gantry,pontypool,membered,distrusted,fissile,dairies,hyposmocoma,craigie,adarsh,martinsburg,taxiway,30deg,geraint,vellum,bencher,khatami,formula_53,zemun,teruel,endeavored,palmares,pavements,u.s..,internationalization,satirized,carers,attainable,wraparound,muang,parkersburg,extinctions,birkenfeld,wildstorm,payers,cohabitation,unitas,culloden,capitalizing,clwyd,daoist,campinas,emmylou,orchidaceae,halakha,orientales,fealty,domnall,chiefdom,nigerians,ladislav,dniester,avowed,ergonomics,newsmagazine,kitsch,cantilevered,benchmarking,remarriage,alekhine,coldfield,taupo,almirante,substations,apprenticeships,seljuq,levelling,eponym,symbolising,salyut,opioids,underscore,ethnologue,mohegan,marikina,libro,bassano,parse,semantically,disjointed,dugdale,padraig,tulsi,modulating,xfinity,headlands,mstislav,earthworms,bourchier,lgbtq,embellishments,pennants,rowntree,betel,motet,mulla,catenary,washoe,mordaunt,dorking,colmar,girardeau,glentoran,grammatically,samad,recreations,technion,staccato,mikoyan,spoilers,lyndhurst,victimization,chertsey,belafonte,tondo,tonsberg,narrators,subcultures,malformations,edina,augmenting,attests,euphemia,cabriolet,disguising,1650s,navarrese,demoralized,cardiomyopathy,welwyn,wallachian,smoothness,planktonic,voles,issuers,sardasht,survivability,cuauhtemoc,thetis,extruded,signet,raghavan,lombok,eliyahu,crankcase,dissonant,stolberg,trencin,desktops,bursary,collectivization,charlottenburg,triathlete,curvilinear,involuntarily,mired,wausau,invades,sundaram,deletions,bootstrap,abellio,axiomatic,noguchi,setups,malawian,visalia,materialist,kartuzy,wenzong,plotline,yeshivas,parganas,tunica,citric,conspecific,idlib,superlative,reoccupied,blagoevgrad,masterton,immunological,hatta,courbet,vortices,swallowtail,delves,haridwar,diptera,boneh,bahawalpur,angering,mardin,equipments,deployable,guanine,normality,rimmed,artisanal,boxset,chandrasekhar,jools,chenar,tanakh,carcassonne,belatedly,millville,anorthosis,reintegration,velde,surfactant,kanaan,busoni,glyphipterix,personas,fullness,rheims,tisza,stabilizers,bharathi,joost,spinola,mouldings,perching,esztergom,afzal,apostate,lustre,s.league,motorboat,monotheistic,armature,barat,asistencia,bloomsburg,hippocampal,fictionalised,defaults,broch,hexadecimal,lusignan,ryanair,boccaccio,breisgau,southbank,bskyb,adjoined,neurobiology,aforesaid,sadhu,langue,headship,wozniacki,hangings,regulus,prioritized,dynamism,allier,hannity,shimin,antoninus,gymnopilus,caledon,preponderance,melayu,electrodynamics,syncopated,ibises,krosno,mechanistic,morpeth,harbored,albini,monotheism,'real,hyperactivity,haveli,writer/director,minato,nimoy,caerphilly,chitral,amirabad,fanshawe,l'oreal,lorde,mukti,authoritarianism,valuing,spyware,hanbury,restarting,stato,embed,suiza,empiricism,stabilisation,stari,castlemaine,orbis,manufactory,mauritanian,shoji,taoyuan,prokaryotes,oromia,ambiguities,embodying,slims,frente,innovate,ojibwa,powdery,gaeltacht,argentinos,quatermass,detergents,fijians,adaptor,tokai,chileans,bulgars,oxidoreductases,bezirksliga,conceicao,myosin,nellore,500cc,supercomputers,approximating,glyndwr,polypropylene,haugesund,cockerell,tudman,ashbourne,hindemith,bloodlines,rigveda,etruria,romanos,steyn,oradea,deceleration,manhunter,laryngeal,fraudulently,janez,wendover,haplotype,janaki,naoki,belizean,mellencamp,cartographic,sadhana,tricolour,pseudoscience,satara,bytow,s.p.a.,jagdgeschwader,arcot,omagh,sverdrup,masterplan,surtees,apocrypha,ahvaz,d'amato,socratic,leumit,unnumbered,nandini,witold,marsupial,coalesced,interpolated,gimnasia,karadzic,keratin,mamoru,aldeburgh,speculator,escapement,irfan,kashyap,satyajit,haddington,solver,rothko,ashkelon,kickapoo,yeomen,superbly,bloodiest,greenlandic,lithic,autofocus,yardbirds,poona,keble,javan,sufis,expandable,tumblr,ursuline,swimwear,winwood,counsellors,aberrations,marginalised,befriending,workouts,predestination,varietal,siddhartha,dunkeld,judaic,esquimalt,shabab,ajith,telefonica,stargard,hoysala,radhakrishnan,sinusoidal,strada,hiragana,cebuano,monoid,independencia,floodwaters,mildura,mudflats,ottokar,translit,radix,wigner,philosophically,tephritid,synthesizing,castletown,installs,stirner,resettle,bushfire,choirmaster,kabbalistic,shirazi,lightship,rebus,colonizers,centrifuge,leonean,kristofferson,thymus,clackamas,ratnam,rothesay,municipally,centralia,thurrock,gulfport,bilinear,desirability,merite,psoriasis,macaw,erigeron,consignment,mudstone,distorting,karlheinz,ramen,tailwheel,vitor,reinsurance,edifices,superannuation,dormancy,contagion,cobden,rendezvoused,prokaryotic,deliberative,patricians,feigned,degrades,starlings,sopot,viticultural,beaverton,overflowed,convener,garlands,michiel,ternopil,naturelle,biplanes,bagot,gamespy,ventspils,disembodied,flattening,profesional,londoners,arusha,scapular,forestall,pyridine,ulema,eurodance,aruna,callus,periodontal,coetzee,immobilized,o'meara,maharani,katipunan,reactants,zainab,microgravity,saintes,britpop,carrefour,constrain,adversarial,firebirds,brahmo,kashima,simca,surety,surpluses,superconductivity,gipuzkoa,cumans,tocantins,obtainable,humberside,roosting,'king,formula_54,minelayer,bessel,sulayman,cycled,biomarkers,annealing,shusha,barda,cassation,djing,polemics,tuple,directorates,indomitable,obsolescence,wilhelmine,pembina,bojan,tambo,dioecious,pensioner,magnificat,1660s,estrellas,southeasterly,immunodeficiency,railhead,surreptitiously,codeine,encores,religiosity,tempera,camberley,efendi,boardings,malleable,hagia,input/output,lucasfilm,ujjain,polymorphisms,creationist,berners,mickiewicz,irvington,linkedin,endures,kinect,munition,apologetics,fairlie,predicated,reprinting,ethnographer,variances,levantine,mariinsky,jadid,jarrow,asia/oceania,trinamool,waveforms,bisexuality,preselection,pupae,buckethead,hieroglyph,lyricists,marionette,dunbartonshire,restorer,monarchical,pazar,kickoffs,cabildo,savannas,gliese,dench,spoonbills,novelette,diliman,hypersensitivity,authorising,montefiore,mladen,qu'appelle,theistic,maruti,laterite,conestoga,saare,californica,proboscis,carrickfergus,imprecise,hadassah,baghdadi,jolgeh,deshmukh,amusements,heliopolis,berle,adaptability,partenkirchen,separations,baikonur,cardamom,southeastward,southfield,muzaffar,adequacy,metropolitana,rajkot,kiyoshi,metrobus,evictions,reconciles,librarianship,upsurge,knightley,badakhshan,proliferated,spirituals,burghley,electroacoustic,professing,featurette,reformists,skylab,descriptors,oddity,greyfriars,injects,salmond,lanzhou,dauntless,subgenera,underpowered,transpose,mahinda,gatos,aerobatics,seaworld,blocs,waratahs,joris,giggs,perfusion,koszalin,mieczyslaw,ayyubid,ecologists,modernists,sant'angelo,quicktime,him/her,staves,sanyo,melaka,acrocercops,qigong,iterated,generalizes,recuperation,vihara,circassians,psychical,chavo,memoires,infiltrates,notaries,pelecaniformesfamily,strident,chivalric,pierrepont,alleviating,broadsides,centipede,b.tech,reinterpreted,sudetenland,hussite,covenanters,radhika,ironclads,gainsbourg,testis,penarth,plantar,azadegan,beano,espn.com,leominster,autobiographies,nbcuniversal,eliade,khamenei,montferrat,undistinguished,ethnological,wenlock,fricatives,polymorphic,biome,joule,sheaths,astrophysicist,salve,neoclassicism,lovat,downwind,belisarius,forma,usurpation,freie,depopulation,backbench,ascenso,'high,aagpbl,gdanski,zalman,mouvement,encapsulation,bolshevism,statny,voyageurs,hywel,vizcaya,mazra'eh,narthex,azerbaijanis,cerebrospinal,mauretania,fantail,clearinghouse,bolingbroke,pequeno,ansett,remixing,microtubule,wrens,jawahar,palembang,gambian,hillsong,fingerboard,repurposed,sundry,incipient,veolia,theologically,ulaanbaatar,atsushi,foundling,resistivity,myeloma,factbook,mazowiecka,diacritic,urumqi,clontarf,provokes,intelsat,professes,materialise,portobello,benedictines,panionios,introverted,reacquired,bridport,mammary,kripke,oratorios,vlore,stoning,woredas,unreported,antti,togolese,fanzines,heuristics,conservatories,carburetors,clitheroe,cofounded,formula_57,erupting,quinnipiac,bootle,ghostface,sittings,aspinall,sealift,transferase,boldklub,siskiyou,predominated,francophonie,ferruginous,castrum,neogene,sakya,madama,precipitous,'love,posix,bithynia,uttara,avestan,thrushes,seiji,memorably,septimius,libri,cibernetico,hyperinflation,dissuaded,cuddalore,peculiarity,vaslui,grojec,albumin,thurles,casks,fasteners,fluidity,buble,casals,terek,gnosticism,cognates,ulnar,radwanska,babylonians,majuro,oxidizer,excavators,rhythmically,liffey,gorakhpur,eurydice,underscored,arborea,lumumba,tuber,catholique,grama,galilei,scrope,centreville,jacobin,bequests,ardeche,polygamous,montauban,terai,weatherboard,readability,attainder,acraea,transversely,rivets,winterbottom,reassures,bacteriology,vriesea,chera,andesite,dedications,homogenous,reconquered,bandon,forrestal,ukiyo,gurdjieff,tethys,sparc,muscogee,grebes,belchatow,mansa,blantyre,palliser,sokolow,fibroblasts,exmoor,misaki,soundscapes,housatonic,middelburg,convenor,leyla,antipope,histidine,okeechobee,alkenes,sombre,alkene,rubik,macaques,calabar,trophee,pinchot,'free,frusciante,chemins,falaise,vasteras,gripped,schwarzenberg,cumann,kanchipuram,acoustically,silverbacks,fangio,inset,plympton,kuril,vaccinations,recep,theropods,axils,stavropol,encroached,apoptotic,papandreou,wailers,moonstone,assizes,micrometers,hornchurch,truncation,annapurna,egyptologists,rheumatic,promiscuity,satiric,fleche,caloptilia,anisotropy,quaternions,gruppo,viscounts,awardees,aftershocks,sigint,concordance,oblasts,gaumont,stent,commissars,kesteven,hydroxy,vijayanagar,belorussian,fabricius,watermark,tearfully,mamet,leukaemia,sorkh,milepost,tattooing,vosta,abbasids,uncompleted,hedong,woodwinds,extinguishing,malus,multiplexes,francoist,pathet,responsa,bassists,'most,postsecondary,ossory,grampian,saakashvili,alito,strasberg,impressionistic,volador,gelatinous,vignette,underwing,campanian,abbasabad,albertville,hopefuls,nieuwe,taxiways,reconvened,recumbent,pathologists,unionized,faversham,asymptotically,romulo,culling,donja,constricted,annesley,duomo,enschede,lovech,sharpshooter,lansky,dhamma,papillae,alanine,mowat,delius,wrest,mcluhan,podkarpackie,imitators,bilaspur,stunting,pommel,casemate,handicaps,nagas,testaments,hemings,necessitate,rearward,locative,cilla,klitschko,lindau,merion,consequential,antic,soong,copula,berthing,chevrons,rostral,sympathizer,budokan,ranulf,beria,stilt,replying,conflated,alcibiades,painstaking,yamanashi,calif.,arvid,ctesiphon,xizong,rajas,caxton,downbeat,resurfacing,rudders,miscegenation,deathmatch,foregoing,arthropod,attestation,karts,reapportionment,harnessing,eastlake,schola,dosing,postcolonial,imtiaz,formula_55,insulators,gunung,accumulations,pampas,llewelyn,bahnhof,cytosol,grosjean,teaneck,briarcliff,arsenio,canara,elaborating,passchendaele,searchlights,holywell,mohandas,preventable,gehry,mestizos,ustinov,cliched,'national,heidfeld,tertullian,jihadist,tourer,miletus,semicircle,outclassed,bouillon,cardinalate,clarifies,dakshina,bilayer,pandyan,unrwa,chandragupta,formula_56,portola,sukumaran,lactation,islamia,heikki,couplers,misappropriation,catshark,montt,ploughs,carib,stator,leaderboard,kenrick,dendrites,scape,tillamook,molesworth,mussorgsky,melanesia,restated,troon,glycoside,truckee,headwater,mashup,sectoral,gangwon,docudrama,skirting,psychopathology,dramatised,ostroleka,infestations,thabo,depolarization,wideroe,eisenbahn,thomond,kumaon,upendra,foreland,acronyms,yaqui,retaking,raphaelite,specie,dupage,villars,lucasarts,chloroplast,werribee,balsa,ascribe,havant,flava,khawaja,tyumen,subtract,interrogators,reshaping,buzzcocks,eesti,campanile,potemkin,apertures,snowboarder,registrars,handbooks,boyar,contaminant,depositors,proximate,jeunesse,zagora,pronouncements,mists,nihilism,deified,margraviate,pietersen,moderators,amalfi,adjectival,copepods,magnetosphere,pallets,clemenceau,castra,perforation,granitic,troilus,grzegorz,luthier,dockyards,antofagasta,ffestiniog,subroutine,afterword,waterwheel,druce,nitin,undifferentiated,emacs,readmitted,barneveld,tapers,hittites,infomercials,infirm,braathens,heligoland,carpark,geomagnetic,musculoskeletal,nigerien,machinima,harmonize,repealing,indecency,muskoka,verite,steubenville,suffixed,cytoskeleton,surpasses,harmonia,imereti,ventricles,heterozygous,envisions,otsego,ecoles,warrnambool,burgenland,seria,rawat,capistrano,welby,kirin,enrollments,caricom,dragonlance,schaffhausen,expanses,photojournalism,brienne,etude,referent,jamtland,schemas,xianbei,cleburne,bicester,maritima,shorelines,diagonals,bjelke,nonpublic,aliasing,m.f.a,ovals,maitreya,skirmishing,grothendieck,sukhothai,angiotensin,bridlington,durgapur,contras,gakuen,skagit,rabbinate,tsunamis,haphazard,tyldesley,microcontroller,discourages,hialeah,compressing,septimus,larvik,condoleezza,psilocybin,protectionism,songbirds,clandestinely,selectmen,wargame,cinemascope,khazars,agronomy,melzer,latifah,cherokees,recesses,assemblymen,basescu,banaras,bioavailability,subchannels,adenine,o'kelly,prabhakar,leonese,dimethyl,testimonials,geoffroy,oxidant,universiti,gheorghiu,bohdan,reversals,zamorin,herbivore,jarre,sebastiao,infanterie,dolmen,teddington,radomsko,spaceships,cuzco,recapitulation,mahoning,bainimarama,myelin,aykroyd,decals,tokelau,nalgonda,rajasthani,121st,quelled,tambov,illyrians,homilies,illuminations,hypertrophy,grodzisk,inundation,incapacity,equilibria,combats,elihu,steinitz,berengar,gowda,canwest,khosrau,maculata,houten,kandinsky,onside,leatherhead,heritable,belvidere,federative,chukchi,serling,eruptive,patan,entitlements,suffragette,evolutions,migrates,demobilisation,athleticism,trope,sarpsborg,kensal,translink,squamish,concertgebouw,energon,timestamp,competences,zalgiris,serviceman,codice_7,spoofing,assange,mahadevan,skien,suceava,augustan,revisionism,unconvincing,hollande,drina,gottlob,lippi,broglie,darkening,tilapia,eagerness,nacht,kolmogorov,photometric,leeuwarden,jrotc,haemorrhage,almanack,cavalli,repudiation,galactose,zwickau,cetinje,houbraken,heavyweights,gabonese,ordinals,noticias,museveni,steric,charaxes,amjad,resection,joinville,leczyca,anastasius,purbeck,subtribe,dalles,leadoff,monoamine,jettisoned,kaori,anthologized,alfreton,indic,bayezid,tottori,colonizing,assassinating,unchanging,eusebian,d'estaing,tsingtao,toshio,transferases,peronist,metrology,equus,mirpur,libertarianism,kovil,indole,'green,abstention,quantitatively,icebreakers,tribals,mainstays,dryandra,eyewear,nilgiri,chrysanthemum,inositol,frenetic,merchantman,hesar,physiotherapist,transceiver,dancefloor,rankine,neisse,marginalization,lengthen,unaided,rework,pageantry,savio,striated,funen,witton,illuminates,frass,hydrolases,akali,bistrita,copywriter,firings,handballer,tachinidae,dmytro,coalesce,neretva,menem,moraines,coatbridge,crossrail,spoofed,drosera,ripen,protour,kikuyu,boleslav,edwardes,troubadours,haplogroups,wrasse,educationalist,sroda,khaneh,dagbladet,apennines,neuroscientist,deplored,terje,maccabees,daventry,spaceport,lessening,ducats,singer/guitarist,chambersburg,yeong,configurable,ceremonially,unrelenting,caffe,graaf,denizens,kingsport,ingush,panhard,synthesised,tumulus,homeschooled,bozorg,idiomatic,thanhouser,queensway,radek,hippolytus,inking,banovina,peacocks,piaui,handsworth,pantomimes,abalone,thera,kurzweil,bandura,augustinians,bocelli,ferrol,jiroft,quadrature,contravention,saussure,rectification,agrippina,angelis,matanzas,nidaros,palestrina,latium,coriolis,clostridium,ordain,uttering,lanchester,proteolytic,ayacucho,merseburg,holbein,sambalpur,algebraically,inchon,ostfold,savoia,calatrava,lahiri,judgeship,ammonite,masaryk,meyerbeer,hemorrhagic,superspeedway,ningxia,panicles,encircles,khmelnytsky,profusion,esher,babol,inflationary,anhydride,gaspe,mossy,periodicity,nacion,meteorologists,mahjong,interventional,sarin,moult,enderby,modell,palgrave,warners,montcalm,siddha,functionalism,rilke,politicized,broadmoor,kunste,orden,brasileira,araneta,eroticism,colquhoun,mamba,blacktown,tubercle,seagrass,manoel,camphor,neoregelia,llandudno,annexe,enplanements,kamien,plovers,statisticians,iturbide,madrasah,nontrivial,publican,landholders,manama,uninhabitable,revivalist,trunkline,friendliness,gurudwara,rocketry,unido,tripos,besant,braque,evolutionarily,abkhazian,staffel,ratzinger,brockville,bohemond,intercut,djurgarden,utilitarianism,deploys,sastri,absolutism,subhas,asghar,fictions,sepinwall,proportionately,titleholders,thereon,foursquare,machinegun,knightsbridge,siauliai,aqaba,gearboxes,castaways,weakens,phallic,strzelce,buoyed,ruthenia,pharynx,intractable,neptunes,koine,leakey,netherlandish,preempted,vinay,terracing,instigating,alluvium,prosthetics,vorarlberg,politiques,joinery,reduplication,nebuchadnezzar,lenticular,banka,seaborne,pattinson,helpline,aleph,beckenham,californians,namgyal,franziska,aphid,branagh,transcribe,appropriateness,surakarta,takings,propagates,juraj,b0d3fb,brera,arrayed,tailback,falsehood,hazleton,prosody,egyptology,pinnate,tableware,ratan,camperdown,ethnologist,tabari,classifiers,biogas,126th,kabila,arbitron,apuestas,membranous,kincardine,oceana,glories,natick,populism,synonymy,ghalib,mobiles,motherboards,stationers,germinal,patronised,formula_58,gaborone,torts,jeezy,interleague,novaya,batticaloa,offshoots,wilbraham,filename,nswrfl,'well,trilobite,pythons,optimally,scientologists,rhesus,pilsen,backdrops,batang,unionville,hermanos,shrikes,fareham,outlawing,discontinuing,boisterous,shamokin,scanty,southwestward,exchangers,unexpired,mewar,h.m.s,saldanha,pawan,condorcet,turbidity,donau,indulgences,coincident,cliques,weeklies,bardhaman,violators,kenai,caspase,xperia,kunal,fistula,epistemic,cammell,nephi,disestablishment,rotator,germaniawerft,pyaar,chequered,jigme,perlis,anisotropic,popstars,kapil,appendices,berat,defecting,shacks,wrangel,panchayath,gorna,suckling,aerosols,sponheim,talal,borehole,encodings,enlai,subduing,agong,nadar,kitsap,syrmia,majumdar,pichilemu,charleville,embryology,booting,literati,abutting,basalts,jussi,repubblica,hertogenbosch,digitization,relents,hillfort,wiesenthal,kirche,bhagwan,bactrian,oases,phyla,neutralizing,helsing,ebooks,spearheading,margarine,'golden,phosphor,picea,stimulants,outliers,timescale,gynaecology,integrator,skyrocketed,bridgnorth,senecio,ramachandra,suffragist,arrowheads,aswan,inadvertent,microelectronics,118th,sofer,kubica,melanesian,tuanku,balkh,vyborg,crystallographic,initiators,metamorphism,ginzburg,looters,unimproved,finistere,newburyport,norges,immunities,franchisees,asterism,kortrijk,camorra,komsomol,fleurs,draughts,patagonian,voracious,artin,collaborationist,revolucion,revitalizing,xaver,purifying,antipsychotic,disjunct,pompeius,dreamwave,juvenal,beinn,adiyaman,antitank,allama,boletus,melanogaster,dumitru,caproni,aligns,athabaskan,stobart,phallus,veikkausliiga,hornsey,buffering,bourbons,dobruja,marga,borax,electrics,gangnam,motorcyclist,whidbey,draconian,lodger,galilean,sanctification,imitates,boldness,underboss,wheatland,cantabrian,terceira,maumee,redefining,uppercase,ostroda,characterise,universalism,equalized,syndicalism,haringey,masovia,deleuze,funkadelic,conceals,thuan,minsky,pluralistic,ludendorff,beekeeping,bonfires,endoscopic,abuts,prebend,jonkoping,amami,tribunes,yup'ik,awadh,gasification,pforzheim,reforma,antiwar,vaishnavism,maryville,inextricably,margrethe,empresa,neutrophils,sanctified,ponca,elachistidae,curiae,quartier,mannar,hyperplasia,wimax,busing,neologism,florins,underrepresented,digitised,nieuw,cooch,howards,frege,hughie,plied,swale,kapellmeister,vajpayee,quadrupled,aeronautique,dushanbe,custos,saltillo,kisan,tigray,manaus,epigrams,shamanic,peppered,frosts,promotion/relegation,concedes,zwingli,charentes,whangarei,hyung,spring/summer,sobre,eretz,initialization,sawai,ephemera,grandfathered,arnaldo,customised,permeated,parapets,growths,visegrad,estudios,altamont,provincia,apologises,stoppard,carburettor,rifts,kinematic,zhengzhou,eschatology,prakrit,folate,yvelines,scapula,stupas,rishon,reconfiguration,flutist,1680s,apostolate,proudhon,lakshman,articulating,stortford,faithfull,bitterns,upwelling,qur'anic,lidar,interferometry,waterlogged,koirala,ditton,wavefunction,fazal,babbage,antioxidants,lemberg,deadlocked,tolled,ramapo,mathematica,leiria,topologies,khali,photonic,balti,1080p,corrects,recommenced,polyglot,friezes,tiebreak,copacabana,cholmondeley,armband,abolishment,sheamus,buttes,glycolysis,cataloged,warrenton,sassari,kishan,foodservice,cryptanalysis,holmenkollen,cosplay,machi,yousuf,mangal,allying,fertiliser,otomi,charlevoix,metallurg,parisians,bottlenose,oakleigh,debug,cidade,accede,ligation,madhava,pillboxes,gatefold,aveyron,sorin,thirsk,immemorial,menelik,mehra,domingos,underpinned,fleshed,harshness,diphthong,crestwood,miskolc,dupri,pyrausta,muskingum,tuoba,prodi,incidences,waynesboro,marquesas,heydar,artesian,calinescu,nucleation,funders,covalently,compaction,derbies,seaters,sodor,tabular,amadou,peckinpah,o'halloran,zechariah,libyans,kartik,daihatsu,chandran,erzhu,heresies,superheated,yarder,dorde,tanjore,abusers,xuanwu,juniperus,moesia,trusteeship,birdwatching,beatz,moorcock,harbhajan,sanga,choreographic,photonics,boylston,amalgamate,prawns,electrifying,sarath,inaccurately,exclaims,powerpoint,chaining,cpusa,adulterous,saccharomyces,glogow,vfl/afl,syncretic,simla,persisting,functors,allosteric,euphorbiaceae,juryo,mlada,moana,gabala,thornycroft,kumanovo,ostrovsky,sitio,tutankhamun,sauropods,kardzhali,reinterpretation,sulpice,rosyth,originators,halesowen,delineation,asesoria,abatement,gardai,elytra,taillights,overlays,monsoons,sandpipers,ingmar,henrico,inaccuracy,irwell,arenabowl,elche,pressburg,signalman,interviewees,sinkhole,pendle,ecommerce,cellos,nebria,organometallic,surrealistic,propagandist,interlaken,canandaigua,aerials,coutinho,pascagoula,tonopah,letterkenny,gropius,carbons,hammocks,childe,polities,hosiery,donitz,suppresses,diaghilev,stroudsburg,bagram,pistoia,regenerating,unitarians,takeaway,offstage,vidin,glorification,bakunin,yavapai,lutzow,sabercats,witney,abrogated,gorlitz,validating,dodecahedron,stubbornly,telenor,glaxosmithkline,solapur,undesired,jellicoe,dramatization,four-and-a-half,seawall,waterpark,artaxerxes,vocalization,typographic,byung,sachsenhausen,shepparton,kissimmee,konnan,belsen,dhawan,khurd,mutagenesis,vejle,perrot,estradiol,formula_60,saros,chiloe,misiones,lamprey,terrains,speke,miasto,eigenvectors,haydock,reservist,corticosteroids,savitri,shinawatra,developmentally,yehudi,berates,janissaries,recapturing,rancheria,subplots,gresley,nikkatsu,oryol,cosmas,boavista,formula_59,playfully,subsections,commentated,kathakali,dorid,vilaine,seepage,hylidae,keiji,kazakhs,triphosphate,1620s,supersede,monarchists,falla,miyako,notching,bhumibol,polarizing,secularized,shingled,bronislaw,lockerbie,soleyman,bundesbahn,latakia,redoubts,boult,inwardly,invents,ondrej,minangkabau,newquay,permanente,alhaji,madhav,malini,ellice,bookmaker,mankiewicz,etihad,o'dea,interrogative,mikawa,wallsend,canisius,bluesy,vitruvius,noord,ratifying,mixtec,gujranwala,subprefecture,keelung,goiania,nyssa,shi'ite,semitone,ch'uan,computerised,pertuan,catapults,nepomuk,shruti,millstones,buskerud,acolytes,tredegar,sarum,armia,dell'arte,devises,custodians,upturned,gallaudet,disembarking,thrashed,sagrada,myeon,undeclared,qumran,gaiden,tepco,janesville,showground,condense,chalon,unstaffed,pasay,undemocratic,hauts,viridis,uninjured,escutcheon,gymkhana,petaling,hammam,dislocations,tallaght,rerum,shias,indios,guaranty,simplicial,benares,benediction,tajiri,prolifically,huawei,onerous,grantee,ferencvaros,otranto,carbonates,conceit,digipak,qadri,masterclasses,swamiji,cradock,plunket,helmsman,119th,salutes,tippecanoe,murshidabad,intelligibility,mittal,diversifying,bidar,asansol,crowdsourcing,rovere,karakoram,grindcore,skylights,tulagi,furrows,ligne,stuka,sumer,subgraph,amata,regionalist,bulkeley,teletext,glorify,readied,lexicographer,sabadell,predictability,quilmes,phenylalanine,bandaranaike,pyrmont,marksmen,quisling,viscountess,sociopolitical,afoul,pediments,swazi,martyrology,nullify,panagiotis,superconductors,veldenz,jujuy,l'isle,hematopoietic,shafi,subsea,hattiesburg,jyvaskyla,kebir,myeloid,landmine,derecho,amerindians,birkenau,scriabin,milhaud,mucosal,nikaya,freikorps,theoretician,proconsul,o'hanlon,clerked,bactria,houma,macular,topologically,shrubby,aryeh,ghazali,afferent,magalhaes,moduli,ashtabula,vidarbha,securitate,ludwigsburg,adoor,varun,shuja,khatun,chengde,bushels,lascelles,professionnelle,elfman,rangpur,unpowered,citytv,chojnice,quaternion,stokowski,aschaffenburg,commutes,subramaniam,methylene,satrap,gharb,namesakes,rathore,helier,gestational,heraklion,colliers,giannis,pastureland,evocation,krefeld,mahadeva,churchmen,egret,yilmaz,galeazzo,pudukkottai,artigas,generalitat,mudslides,frescoed,enfeoffed,aphorisms,melilla,montaigne,gauliga,parkdale,mauboy,linings,prema,sapir,xylophone,kushan,rockne,sequoyah,vasyl,rectilinear,vidyasagar,microcosm,san'a,carcinogen,thicknesses,aleut,farcical,moderating,detested,hegemonic,instalments,vauban,verwaltungsgemeinschaft,picayune,razorback,magellanic,moluccas,pankhurst,exportation,waldegrave,sufferer,bayswater,1up.com,rearmament,orangutans,varazdin,b.o.b,elucidate,harlingen,erudition,brankovic,lapis,slipway,urraca,shinde,unwell,elwes,euboea,colwyn,srivijaya,grandstands,hortons,generalleutnant,fluxes,peterhead,gandhian,reals,alauddin,maximized,fairhaven,endow,ciechanow,perforations,darters,panellist,manmade,litigants,exhibitor,tirol,caracalla,conformance,hotelier,stabaek,hearths,borac,frisians,ident,veliko,emulators,schoharie,uzbeks,samarra,prestwick,wadia,universita,tanah,bucculatrix,predominates,genotypes,denounces,roadsides,ganassi,keokuk,philatelist,tomic,ingots,conduits,samplers,abdus,johar,allegories,timaru,wolfpacks,secunda,smeaton,sportivo,inverting,contraindications,whisperer,moradabad,calamities,bakufu,soundscape,smallholders,nadeem,crossroad,xenophobic,zakir,nationalliga,glazes,retroflex,schwyz,moroder,rubra,quraysh,theodoros,endemol,infidels,km/hr,repositioned,portraitist,lluis,answerable,arges,mindedness,coarser,eyewall,teleported,scolds,uppland,vibraphone,ricoh,isenburg,bricklayer,cuttlefish,abstentions,communicable,cephalopod,stockyards,balto,kinston,armbar,bandini,elphaba,maxims,bedouins,sachsen,friedkin,tractate,pamir,ivanovo,mohini,kovalainen,nambiar,melvyn,orthonormal,matsuyama,cuernavaca,veloso,overstated,streamer,dravid,informers,analyte,sympathized,streetscape,gosta,thomasville,grigore,futuna,depleting,whelks,kiedis,armadale,earner,wynyard,dothan,animating,tridentine,sabri,immovable,rivoli,ariege,parley,clinker,circulates,junagadh,fraunhofer,congregants,180th,buducnost,formula_62,olmert,dedekind,karnak,bayernliga,mazes,sandpiper,ecclestone,yuvan,smallmouth,decolonization,lemmy,adjudicated,retiro,legia,benue,posit,acidification,wahab,taconic,floatplane,perchlorate,atria,wisbech,divestment,dallara,phrygia,palustris,cybersecurity,rebates,facie,mineralogical,substituent,proteges,fowey,mayenne,smoothbore,cherwell,schwarzschild,junin,murrumbidgee,smalltalk,d'orsay,emirati,calaveras,titusville,theremin,vikramaditya,wampanoag,burra,plaines,onegin,emboldened,whampoa,langa,soderbergh,arnaz,sowerby,arendal,godunov,pathanamthitta,damselfly,bestowing,eurosport,iconoclasm,outfitters,acquiesced,badawi,hypotension,ebbsfleet,annulus,sohrab,thenceforth,chagatai,necessitates,aulus,oddities,toynbee,uniontown,innervation,populaire,indivisible,rossellini,minuet,cyrene,gyeongju,chania,cichlids,harrods,1690s,plunges,abdullahi,gurkhas,homebuilt,sortable,bangui,rediff,incrementally,demetrios,medaille,sportif,svend,guttenberg,tubules,carthusian,pleiades,torii,hoppus,phenyl,hanno,conyngham,teschen,cronenberg,wordless,melatonin,distinctiveness,autos,freising,xuanzang,dunwich,satanism,sweyn,predrag,contractually,pavlovic,malaysians,micrometres,expertly,pannonian,abstaining,capensis,southwesterly,catchphrases,commercialize,frankivsk,normanton,hibernate,verso,deportees,dubliners,codice_8,condors,zagros,glosses,leadville,conscript,morrisons,usury,ossian,oulton,vaccinium,civet,ayman,codrington,hadron,nanometers,geochemistry,extractor,grigori,tyrrhenian,neocollyris,drooping,falsification,werft,courtauld,brigantine,orhan,chapultepec,supercopa,federalized,praga,havering,encampments,infallibility,sardis,pawar,undirected,reconstructionist,ardrossan,varuna,pastimes,archdiocesan,fledging,shenhua,molise,secondarily,stagnated,replicates,ciencias,duryodhana,marauding,ruislip,ilyich,intermixed,ravenswood,shimazu,mycorrhizal,icosahedral,consents,dunblane,follicular,pekin,suffield,muromachi,kinsale,gauche,businesspeople,thereto,watauga,exaltation,chelmno,gorse,proliferate,drainages,burdwan,kangra,transducers,inductor,duvalier,maguindanao,moslem,uncaf,givenchy,plantarum,liturgics,telegraphs,lukashenko,chenango,andante,novae,ironwood,faubourg,torme,chinensis,ambala,pietermaritzburg,virginians,landform,bottlenecks,o'driscoll,darbhanga,baptistery,ameer,needlework,naperville,auditoriums,mullingar,starrer,animatronic,topsoil,madura,cannock,vernet,santurce,catocala,ozeki,pontevedra,multichannel,sundsvall,strategists,medio,135th,halil,afridi,trelawny,caloric,ghraib,allendale,hameed,ludwigshafen,spurned,pavlo,palmar,strafed,catamarca,aveiro,harmonization,surah,predictors,solvay,mande,omnipresent,parenthesis,echolocation,equaling,experimenters,acyclic,lithographic,sepoys,katarzyna,sridevi,impoundment,khosrow,caesarean,nacogdoches,rockdale,lawmaker,caucasians,bahman,miyan,rubric,exuberance,bombastic,ductile,snowdonia,inlays,pinyon,anemones,hurries,hospitallers,tayyip,pulleys,treme,photovoltaics,testbed,polonium,ryszard,osgoode,profiting,ironwork,unsurpassed,nepticulidae,makai,lumbini,preclassic,clarksburg,egremont,videography,rehabilitating,ponty,sardonic,geotechnical,khurasan,solzhenitsyn,henna,phoenicia,rhyolite,chateaux,retorted,tomar,deflections,repressions,harborough,renan,brumbies,vandross,storia,vodou,clerkenwell,decking,universo,salon.com,imprisoning,sudwest,ghaziabad,subscribing,pisgah,sukhumi,econometric,clearest,pindar,yildirim,iulia,atlases,cements,remaster,dugouts,collapsible,resurrecting,batik,unreliability,thiers,conjunctions,colophon,marcher,placeholder,flagella,wolds,kibaki,viviparous,twelver,screenshots,aroostook,khadr,iconographic,itasca,jaume,basti,propounded,varro,be'er,jeevan,exacted,shrublands,creditable,brocade,boras,bittern,oneonta,attentional,herzliya,comprehensible,lakeville,discards,caxias,frankland,camerata,satoru,matlab,commutator,interprovincial,yorkville,benefices,nizami,edwardsville,amigaos,cannabinoid,indianola,amateurliga,pernicious,ubiquity,anarchic,novelties,precondition,zardari,symington,sargodha,headphone,thermopylae,mashonaland,zindagi,thalberg,loewe,surfactants,dobro,crocodilians,samhita,diatoms,haileybury,berwickshire,supercritical,sofie,snorna,slatina,intramolecular,agung,osteoarthritis,obstetric,teochew,vakhtang,connemara,deformations,diadem,ferruccio,mainichi,qualitatively,refrigerant,rerecorded,methylated,karmapa,krasinski,restatement,rouvas,cubitt,seacoast,schwarzkopf,homonymous,shipowner,thiamine,approachable,xiahou,160th,ecumenism,polistes,internazionali,fouad,berar,biogeography,texting,inadequately,'when,4kids,hymenoptera,emplaced,cognomen,bellefonte,supplant,michaelmas,uriel,tafsir,morazan,schweinfurt,chorister,ps400,nscaa,petipa,resolutely,ouagadougou,mascarene,supercell,konstanz,bagrat,harmonix,bergson,shrimps,resonators,veneta,camas,mynydd,rumford,generalmajor,khayyam,web.com,pappus,halfdan,tanana,suomen,yutaka,bibliographical,traian,silat,noailles,contrapuntal,agaricus,'special,minibuses,1670s,obadiah,deepa,rorschach,malolos,lymington,valuations,imperials,caballeros,ambroise,judicature,elegiac,sedaka,shewa,checksum,gosforth,legionaries,corneille,microregion,friedrichshafen,antonis,surnamed,mycelium,cantus,educations,topmost,outfitting,ivica,nankai,gouda,anthemic,iosif,supercontinent,antifungal,belarusians,mudaliar,mohawks,caversham,glaciated,basemen,stevan,clonmel,loughton,deventer,positivist,manipuri,tensors,panipat,changeup,impermeable,dubbo,elfsborg,maritimo,regimens,bikram,bromeliad,substratum,norodom,gaultier,queanbeyan,pompeo,redacted,eurocopter,mothballed,centaurs,borno,copra,bemidji,'home,sopron,neuquen,passo,cineplex,alexandrov,wysokie,mammoths,yossi,sarcophagi,congreve,petkovic,extraneous,waterbirds,slurs,indias,phaeton,discontented,prefaced,abhay,prescot,interoperable,nordisk,bicyclists,validly,sejong,litovsk,zanesville,kapitanleutnant,kerch,changeable,mcclatchy,celebi,attesting,maccoll,sepahan,wayans,veined,gaudens,markt,dansk,soane,quantized,petersham,forebears,nayarit,frenzied,queuing,bygone,viggo,ludwik,tanka,hanssen,brythonic,cornhill,primorsky,stockpiles,conceptualization,lampeter,hinsdale,mesoderm,bielsk,rosenheim,ultron,joffrey,stanwyck,khagan,tiraspol,pavelic,ascendant,empoli,metatarsal,descentralizado,masada,ligier,huseyin,ramadi,waratah,tampines,ruthenium,statoil,mladost,liger,grecian,multiparty,digraph,maglev,reconsideration,radiography,cartilaginous,taizu,wintered,anabaptist,peterhouse,shoghi,assessors,numerator,paulet,painstakingly,halakhic,rocroi,motorcycling,gimel,kryptonian,emmeline,cheeked,drawdown,lelouch,dacians,brahmana,reminiscence,disinfection,optimizations,golders,extensor,tsugaru,tolling,liman,gulzar,unconvinced,crataegus,oppositional,dvina,pyrolysis,mandan,alexius,prion,stressors,loomed,moated,dhivehi,recyclable,relict,nestlings,sarandon,kosovar,solvers,czeslaw,kenta,maneuverable,middens,berkhamsted,comilla,folkways,loxton,beziers,batumi,petrochemicals,optimised,sirjan,rabindra,musicality,rationalisation,drillers,subspaces,'live,bbwaa,outfielders,tsung,danske,vandalised,norristown,striae,kanata,gastroenterology,steadfastly,equalising,bootlegging,mannerheim,notodontidae,lagoa,commentating,peninsulas,chishti,seismology,modigliani,preceptor,canonically,awardee,boyaca,hsinchu,stiffened,nacelle,bogor,dryness,unobstructed,yaqub,scindia,peeters,irritant,ammonites,ferromagnetic,speechwriter,oxygenated,walesa,millais,canarian,faience,calvinistic,discriminant,rasht,inker,annexes,howth,allocates,conditionally,roused,regionalism,regionalbahn,functionary,nitrates,bicentenary,recreates,saboteurs,koshi,plasmids,thinned,124th,plainview,kardashian,neuville,victorians,radiates,127th,vieques,schoolmates,petru,tokusatsu,keying,sunaina,flamethrower,'bout,demersal,hosokawa,corelli,omniscient,o'doherty,niksic,reflectivity,transdev,cavour,metronome,temporally,gabba,nsaids,geert,mayport,hematite,boeotia,vaudreuil,torshavn,sailplane,mineralogist,eskisehir,practises,gallifrey,takumi,unease,slipstream,hedmark,paulinus,ailsa,wielkopolska,filmworks,adamantly,vinaya,facelifted,franchisee,augustana,toppling,velvety,crispa,stonington,histological,genealogist,tactician,tebow,betjeman,nyingma,overwinter,oberoi,rampal,overwinters,petaluma,lactarius,stanmore,balikpapan,vasant,inclines,laminate,munshi,sociedade,rabbah,septal,boyband,ingrained,faltering,inhumans,nhtsa,affix,l'ordre,kazuki,rossendale,mysims,latvians,slaveholders,basilicata,neuburg,assize,manzanillo,scrobipalpa,formula_61,belgique,pterosaurs,privateering,vaasa,veria,northport,pressurised,hobbyist,austerlitz,sahih,bhadra,siliguri,bistrica,bursaries,wynton,corot,lepidus,lully,libor,libera,olusegun,choline,mannerism,lymphocyte,chagos,duxbury,parasitism,ecowas,morotai,cancion,coniston,aggrieved,sputnikmusic,parle,ammonian,civilisations,malformation,cattaraugus,skyhawks,d'arc,demerara,bronfman,midwinter,piscataway,jogaila,threonine,matins,kohlberg,hubli,pentatonic,camillus,nigam,potro,unchained,chauvel,orangeville,cistercians,redeployment,xanthi,manju,carabinieri,pakeha,nikolaevich,kantakouzenos,sesquicentennial,gunships,symbolised,teramo,ballo,crusading,l'oeil,bharatpur,lazier,gabrovo,hysteresis,rothbard,chaumont,roundel,ma'mun,sudhir,queried,newts,shimane,presynaptic,playfield,taxonomists,sensitivities,freleng,burkinabe,orfeo,autovia,proselytizing,bhangra,pasok,jujutsu,heung,pivoting,hominid,commending,formula_64,epworth,christianized,oresund,hantuchova,rajputana,hilversum,masoretic,dayak,bakri,assen,magog,macromolecules,waheed,qaida,spassky,rumped,protrudes,preminger,misogyny,glencairn,salafi,lacunae,grilles,racemes,areva,alighieri,inari,epitomized,photoshoot,one-of-a-kind,tring,muralist,tincture,backwaters,weaned,yeasts,analytically,smaland,caltrans,vysocina,jamuna,mauthausen,175th,nouvelles,censoring,reggina,christology,gilad,amplifying,mehmood,johnsons,redirects,eastgate,sacrum,meteoric,riverbanks,guidebooks,ascribes,scoparia,iconoclastic,telegraphic,chine,merah,mistico,lectern,sheung,aethelstan,capablanca,anant,uspto,albatrosses,mymensingh,antiretroviral,clonal,coorg,vaillant,liquidator,gigas,yokai,eradicating,motorcyclists,waitakere,tandon,nears,montenegrins,250th,tatsuya,yassin,atheistic,syncretism,nahum,berisha,transcended,owensboro,lakshmana,abteilung,unadorned,nyack,overflows,harrisonburg,complainant,uematsu,frictional,worsens,sangguniang,abutment,bulwer,sarma,apollinaire,shippers,lycia,alentejo,porpoises,optus,trawling,augustow,blackwall,workbench,westmount,leaped,sikandar,conveniences,stornoway,culverts,zoroastrians,hristo,ansgar,assistive,reassert,fanned,compasses,delgada,maisons,arima,plonsk,verlaine,starstruck,rakhine,befell,spirally,wyclef,expend,colloquium,formula_63,albertus,bellarmine,handedness,holon,introns,movimiento,profitably,lohengrin,discoverers,awash,erste,pharisees,dwarka,oghuz,hashing,heterodox,uloom,vladikavkaz,linesman,rehired,nucleophile,germanicus,gulshan,songz,bayerische,paralympian,crumlin,enjoined,khanum,prahran,penitent,amersfoort,saranac,semisimple,vagrants,compositing,tualatin,oxalate,lavra,ironi,ilkeston,umpqua,calum,stretford,zakat,guelders,hydrazine,birkin,spurring,modularity,aspartate,sodermanland,hopital,bellary,legazpi,clasico,cadfael,hypersonic,volleys,pharmacokinetics,carotene,orientale,pausini,bataille,lunga,retailed,m.phil,mazowieckie,vijayan,rawal,sublimation,promissory,estimators,ploughed,conflagration,penda,segregationist,otley,amputee,coauthor,sopra,pellew,wreckers,tollywood,circumscription,permittivity,strabane,landward,articulates,beaverbrook,rutherglen,coterminous,whistleblowers,colloidal,surbiton,atlante,oswiecim,bhasa,lampooned,chanter,saarc,landkreis,tribulation,tolerates,daiichi,hatun,cowries,dyschirius,abercromby,attock,aldwych,inflows,absolutist,l'histoire,committeeman,vanbrugh,headstock,westbourne,appenzell,hoxton,oculus,westfalen,roundabouts,nickelback,trovatore,quenching,summarises,conservators,transmutation,talleyrand,barzani,unwillingly,axonal,'blue,opining,enveloping,fidesz,rafah,colborne,flickr,lozenge,dulcimer,ndebele,swaraj,oxidize,gonville,resonated,gilani,superiore,endeared,janakpur,shepperton,solidifying,memoranda,sochaux,kurnool,rewari,emirs,kooning,bruford,unavailability,kayseri,judicious,negating,pterosaur,cytosolic,chernihiv,variational,sabretooth,seawolves,devalued,nanded,adverb,volunteerism,sealers,nemours,smederevo,kashubian,bartin,animax,vicomte,polotsk,polder,archiepiscopal,acceptability,quidditch,tussock,seminaire,immolation,belge,coves,wellingborough,khaganate,mckellen,nayaka,brega,kabhi,pontoons,bascule,newsreels,injectors,cobol,weblog,diplo,biggar,wheatbelt,erythrocytes,pedra,showgrounds,bogdanovich,eclecticism,toluene,elegies,formalize,andromedae,airworthiness,springville,mainframes,overexpression,magadha,bijelo,emlyn,glutamine,accenture,uhuru,metairie,arabidopsis,patanjali,peruvians,berezovsky,accion,astrolabe,jayanti,earnestly,sausalito,recurved,1500s,ramla,incineration,galleons,laplacian,shiki,smethwick,isomerase,dordevic,janow,jeffersonville,internationalism,penciled,styrene,ashur,nucleoside,peristome,horsemanship,sedges,bachata,medes,kristallnacht,schneerson,reflectance,invalided,strutt,draupadi,destino,partridges,tejas,quadrennial,aurel,halych,ethnomusicology,autonomist,radyo,rifting,shi'ar,crvena,telefilm,zawahiri,plana,sultanates,theodorus,subcontractors,pavle,seneschal,teleports,chernivtsi,buccal,brattleboro,stankovic,safar,dunhuang,electrocution,chastised,ergonomic,midsomer,130th,zomba,nongovernmental,escapist,localize,xuzhou,kyrie,carinthian,karlovac,nisan,kramnik,pilipino,digitisation,khasi,andronicus,highwayman,maior,misspelling,sebastopol,socon,rhaetian,archimandrite,partway,positivity,otaku,dingoes,tarski,geopolitics,disciplinarian,zulfikar,kenzo,globose,electrophilic,modele,storekeeper,pohang,wheldon,washers,interconnecting,digraphs,intrastate,campy,helvetic,frontispiece,ferrocarril,anambra,petraeus,midrib,endometrial,dwarfism,mauryan,endocytosis,brigs,percussionists,furtherance,synergistic,apocynaceae,krona,berthier,circumvented,casal,siltstone,precast,ethnikos,realists,geodesy,zarzuela,greenback,tripathi,persevered,interments,neutralization,olbermann,departements,supercomputing,demobilised,cassavetes,dunder,ministering,veszprem,barbarism,'world,pieve,apologist,frentzen,sulfides,firewalls,pronotum,staatsoper,hachette,makhachkala,oberland,phonon,yoshihiro,instars,purnima,winslet,mutsu,ergative,sajid,nizamuddin,paraphrased,ardeidae,kodagu,monooxygenase,skirmishers,sportiva,o'byrne,mykolaiv,ophir,prieta,gyllenhaal,kantian,leche,copan,herero,ps250,gelsenkirchen,shalit,sammarinese,chetwynd,wftda,travertine,warta,sigmaringen,concerti,namespace,ostergotland,biomarker,universals,collegio,embarcadero,wimborne,fiddlers,likening,ransomed,stifled,unabated,kalakaua,khanty,gongs,goodrem,countermeasure,publicizing,geomorphology,swedenborg,undefended,catastrophes,diverts,storyboards,amesbury,contactless,placentia,festivity,authorise,terrane,thallium,stradivarius,antonine,consortia,estimations,consecrate,supergiant,belichick,pendants,butyl,groza,univac,afire,kavala,studi,teletoon,paucity,gonbad,koninklijke,128th,stoichiometric,multimodal,facundo,anatomic,melamine,creuse,altan,brigands,mcguinty,blomfield,tsvangirai,protrusion,lurgan,warminster,tenzin,russellville,discursive,definable,scotrail,lignin,reincorporated,o'dell,outperform,redland,multicolored,evaporates,dimitrie,limbic,patapsco,interlingua,surrogacy,cutty,potrero,masud,cahiers,jintao,ardashir,centaurus,plagiarized,minehead,musings,statuettes,logarithms,seaview,prohibitively,downforce,rivington,tomorrowland,microbiologist,ferric,morag,capsid,kucinich,clairvaux,demotic,seamanship,cicada,painterly,cromarty,carbonic,tupou,oconee,tehuantepec,typecast,anstruther,internalized,underwriters,tetrahedra,flagrant,quakes,pathologies,ulrik,nahal,tarquini,dongguan,parnassus,ryoko,senussi,seleucia,airasia,einer,sashes,d'amico,matriculating,arabesque,honved,biophysical,hardinge,kherson,mommsen,diels,icbms,reshape,brasiliensis,palmach,netaji,oblate,functionalities,grigor,blacksburg,recoilless,melanchthon,reales,astrodome,handcrafted,memes,theorizes,isma'il,aarti,pirin,maatschappij,stabilizes,honiara,ashbury,copts,rootes,defensed,queiroz,mantegna,galesburg,coraciiformesfamily,cabrillo,tokio,antipsychotics,kanon,173rd,apollonia,finial,lydian,hadamard,rangi,dowlatabad,monolingual,platformer,subclasses,chiranjeevi,mirabeau,newsgroup,idmanyurdu,kambojas,walkover,zamoyski,generalist,khedive,flanges,knowle,bande,157th,alleyn,reaffirm,pininfarina,zuckerberg,hakodate,131st,aditi,bellinzona,vaulter,planking,boscombe,colombians,lysis,toppers,metered,nahyan,queensryche,minho,nagercoil,firebrand,foundress,bycatch,mendota,freeform,antena,capitalisation,martinus,overijssel,purists,interventionist,zgierz,burgundians,hippolyta,trompe,umatilla,moroccans,dictionnaire,hydrography,changers,chota,rimouski,aniline,bylaw,grandnephew,neamt,lemnos,connoisseurs,tractive,rearrangements,fetishism,finnic,apalachicola,landowning,calligraphic,circumpolar,mansfeld,legible,orientalism,tannhauser,blamey,maximization,noinclude,blackbirds,angara,ostersund,pancreatitis,glabra,acleris,juried,jungian,triumphantly,singlet,plasmas,synesthesia,yellowhead,unleashes,choiseul,quanzhong,brookville,kaskaskia,igcse,skatepark,jatin,jewellers,scaritinae,techcrunch,tellurium,lachaise,azuma,codeshare,dimensionality,unidirectional,scolaire,macdill,camshafts,unassisted,verband,kahlo,eliya,prelature,chiefdoms,saddleback,sockers,iommi,coloratura,llangollen,biosciences,harshest,maithili,k'iche,plical,multifunctional,andreu,tuskers,confounding,sambre,quarterdeck,ascetics,berdych,transversal,tuolumne,sagami,petrobras,brecker,menxia,instilling,stipulating,korra,oscillate,deadpan,v/line,pyrotechnic,stoneware,prelims,intracoastal,retraining,ilija,berwyn,encrypt,achievers,zulfiqar,glycoproteins,khatib,farmsteads,occultist,saman,fionn,derulo,khilji,obrenovic,argosy,toowong,dementieva,sociocultural,iconostasis,craigslist,festschrift,taifa,intercalated,tanjong,penticton,sharad,marxian,extrapolation,guises,wettin,prabang,exclaiming,kosta,famas,conakry,wanderings,'aliabad,macleay,exoplanet,bancorp,besiegers,surmounting,checkerboard,rajab,vliet,tarek,operable,wargaming,haldimand,fukuyama,uesugi,aggregations,erbil,brachiopods,tokyu,anglais,unfavorably,ujpest,escorial,armagnac,nagara,funafuti,ridgeline,cocking,o'gorman,compactness,retardant,krajowa,barua,coking,bestows,thampi,chicagoland,variably,o'loughlin,minnows,schwa,shaukat,polycarbonate,chlorinated,godalming,gramercy,delved,banqueting,enlil,sarada,prasanna,domhnall,decadal,regressive,lipoprotein,collectable,surendra,zaporizhia,cycliste,suchet,offsetting,formula_65,pudong,d'arte,blyton,quonset,osmania,tientsin,manorama,proteomics,bille,jalpaiguri,pertwee,barnegat,inventiveness,gollancz,euthanized,henricus,shortfalls,wuxia,chlorides,cerrado,polyvinyl,folktale,straddled,bioengineering,eschewing,greendale,recharged,olave,ceylonese,autocephalous,peacebuilding,wrights,guyed,rosamund,abitibi,bannockburn,gerontology,scutari,souness,seagram,codice_9,'open,xhtml,taguig,purposed,darbar,orthopedics,unpopulated,kisumu,tarrytown,feodor,polyhedral,monadnock,gottorp,priam,redesigning,gasworks,elfin,urquiza,homologation,filipovic,bohun,manningham,gornik,soundness,shorea,lanus,gelder,darke,sandgate,criticality,paranaense,153rd,vieja,lithograph,trapezoid,tiebreakers,convalescence,yan'an,actuaries,balad,altimeter,thermoelectric,trailblazer,previn,tenryu,ancaster,endoscopy,nicolet,discloses,fracking,plaine,salado,americanism,placards,absurdist,propylene,breccia,jirga,documenta,ismailis,161st,brentano,dallas/fort,embellishment,calipers,subscribes,mahavidyalaya,wednesbury,barnstormers,miwok,schembechler,minigame,unterberger,dopaminergic,inacio,nizamabad,overridden,monotype,cavernous,stichting,sassafras,sotho,argentinean,myrrh,rapidity,flatts,gowrie,dejected,kasaragod,cyprinidae,interlinked,arcseconds,degeneracy,infamously,incubate,substructure,trigeminal,sectarianism,marshlands,hooliganism,hurlers,isolationist,urania,burrard,switchover,lecco,wilts,interrogator,strived,ballooning,volterra,raciborz,relegating,gilding,cybele,dolomites,parachutist,lochaber,orators,raeburn,backend,benaud,rallycross,facings,banga,nuclides,defencemen,futurity,emitters,yadkin,eudonia,zambales,manasseh,sirte,meshes,peculiarly,mcminnville,roundly,boban,decrypt,icelanders,sanam,chelan,jovian,grudgingly,penalised,subscript,gambrinus,poaceae,infringements,maleficent,runciman,148th,supersymmetry,granites,liskeard,eliciting,involution,hallstatt,kitzbuhel,shankly,sandhills,inefficiencies,yishuv,psychotropic,nightjars,wavell,sangamon,vaikundar,choshu,retrospectives,pitesti,gigantea,hashemi,bosna,gakuin,siochana,arrangers,baronetcies,narayani,temecula,creston,koscierzyna,autochthonous,wyandot,anniston,igreja,mobilise,buzau,dunster,musselburgh,wenzhou,khattak,detoxification,decarboxylase,manlius,campbells,coleoptera,copyist,sympathisers,suisun,eminescu,defensor,transshipment,thurgau,somerton,fluctuates,ambika,weierstrass,lukow,giambattista,volcanics,romanticized,innovated,matabeleland,scotiabank,garwolin,purine,d'auvergne,borderland,maozhen,pricewaterhousecoopers,testator,pallium,scout.com,mv/pi,nazca,curacies,upjohn,sarasvati,monegasque,ketrzyn,malory,spikelets,biomechanics,haciendas,rapped,dwarfed,stews,nijinsky,subjection,matsu,perceptible,schwarzburg,midsection,entertains,circuitous,epiphytic,wonsan,alpini,bluefield,sloths,transportable,braunfels,dictum,szczecinek,jukka,wielun,wejherowo,hucknall,grameen,duodenum,ribose,deshpande,shahar,nexstar,injurious,dereham,lithographer,dhoni,structuralist,progreso,deschutes,christus,pulteney,quoins,yitzchak,gyeongsang,breviary,makkah,chiyoda,jutting,vineland,angiosperms,necrotic,novelisation,redistribute,tirumala,140th,featureless,mafic,rivaling,toyline,2/1st,martius,saalfeld,monthan,texian,kathak,melodramas,mithila,regierungsbezirk,509th,fermenting,schoolmate,virtuosic,briain,kokoda,heliocentric,handpicked,kilwinning,sonically,dinars,kasim,parkways,bogdanov,luxembourgian,halland,avesta,bardic,daugavpils,excavator,qwest,frustrate,physiographic,majoris,'ndrangheta,unrestrained,firmness,montalban,abundances,preservationists,adare,executioners,guardsman,bonnaroo,neglects,nazrul,pro12,hoorn,abercorn,refuting,kabud,cationic,parapsychology,troposphere,venezuelans,malignancy,khoja,unhindered,accordionist,medak,visby,ejercito,laparoscopic,dinas,umayyads,valmiki,o'dowd,saplings,stranding,incisions,illusionist,avocets,buccleuch,amazonia,fourfold,turboprops,roosts,priscus,turnstile,areal,certifies,pocklington,spoofs,viseu,commonalities,dabrowka,annam,homesteaders,daredevils,mondrian,negotiates,fiestas,perennials,maximizes,lubavitch,ravindra,scrapers,finials,kintyre,violas,snoqualmie,wilders,openbsd,mlawa,peritoneal,devarajan,congke,leszno,mercurial,fakir,joannes,bognor,overloading,unbuilt,gurung,scuttle,temperaments,bautzen,jardim,tradesman,visitations,barbet,sagamore,graaff,forecasters,wilsons,assis,l'air,shariah,sochaczew,russa,dirge,biliary,neuve,heartbreakers,strathearn,jacobian,overgrazing,edrich,anticline,parathyroid,petula,lepanto,decius,channelled,parvathi,puppeteers,communicators,francorchamps,kahane,longus,panjang,intron,traite,xxvii,matsuri,amrit,katyn,disheartened,cacak,omonia,alexandrine,partaking,wrangling,adjuvant,haskovo,tendrils,greensand,lammermoor,otherworld,volusia,stabling,one-and-a-half,bresson,zapatista,eotvos,ps150,webisodes,stepchildren,microarray,braganca,quanta,dolne,superoxide,bellona,delineate,ratha,lindenwood,bruhl,cingulate,tallies,bickerton,helgi,bevin,takoma,tsukuba,statuses,changeling,alister,bytom,dibrugarh,magnesia,duplicating,outlier,abated,goncalo,strelitz,shikai,mardan,musculature,ascomycota,springhill,tumuli,gabaa,odenwald,reformatted,autocracy,theresienstadt,suplex,chattopadhyay,mencken,congratulatory,weatherfield,systema,solemnity,projekt,quanzhou,kreuzberg,postbellum,nobuo,mediaworks,finisterre,matchplay,bangladeshis,kothen,oocyte,hovered,aromas,afshar,browed,teases,chorlton,arshad,cesaro,backbencher,iquique,vulcans,padmini,unabridged,cyclase,despotic,kirilenko,achaean,queensberry,debre,octahedron,iphigenia,curbing,karimnagar,sagarmatha,smelters,surrealists,sanada,shrestha,turridae,leasehold,jiedushi,eurythmics,appropriating,correze,thimphu,amery,musicomh,cyborgs,sandwell,pushcart,retorts,ameliorate,deteriorates,stojanovic,spline,entrenchments,bourse,chancellorship,pasolini,lendl,personage,reformulated,pubescens,loiret,metalurh,reinvention,nonhuman,eilema,tarsal,complutense,magne,broadview,metrodome,outtake,stouffville,seinen,bataillon,phosphoric,ostensible,opatow,aristides,beefheart,glorifying,banten,romsey,seamounts,fushimi,prophylaxis,sibylla,ranjith,goslar,balustrades,georgiev,caird,lafitte,peano,canso,bankura,halfpenny,segregate,caisson,bizerte,jamshedpur,euromaidan,philosophie,ridged,cheerfully,reclassification,aemilius,visionaries,samoans,wokingham,chemung,wolof,unbranched,cinerea,bhosle,ourense,immortalised,cornerstones,sourcebook,khufu,archimedean,universitatea,intermolecular,fiscally,suffices,metacomet,adjudicator,stablemate,specks,glace,inowroclaw,patristic,muharram,agitating,ashot,neurologic,didcot,gamla,ilves,putouts,siraj,laski,coaling,diarmuid,ratnagiri,rotulorum,liquefaction,morbihan,harel,aftershock,gruiformesfamily,bonnier,falconiformesfamily,adorns,wikis,maastrichtian,stauffenberg,bishopsgate,fakhr,sevenfold,ponders,quantifying,castiel,opacity,depredations,lenten,gravitated,o'mahony,modulates,inuktitut,paston,kayfabe,vagus,legalised,balked,arianism,tendering,sivas,birthdate,awlaki,khvajeh,shahab,samtgemeinde,bridgeton,amalgamations,biogenesis,recharging,tsukasa,mythbusters,chamfered,enthronement,freelancers,maharana,constantia,sutil,messines,monkton,okanogan,reinvigorated,apoplexy,tanahashi,neues,valiants,harappan,russes,carding,volkoff,funchal,statehouse,imitative,intrepidity,mellotron,samaras,turkana,besting,longitudes,exarch,diarrhoea,transcending,zvonareva,darna,ramblin,disconnection,137th,refocused,diarmait,agricole,ba'athist,turenne,contrabass,communis,daviess,fatimids,frosinone,fittingly,polyphyletic,qanat,theocratic,preclinical,abacha,toorak,marketplaces,conidia,seiya,contraindicated,retford,bundesautobahn,rebuilds,climatology,seaworthy,starfighter,qamar,categoria,malai,hellinsia,newstead,airworthy,catenin,avonmouth,arrhythmias,ayyavazhi,downgrade,ashburnham,ejector,kinematics,petworth,rspca,filmation,accipitridae,chhatrapati,g/mol,bacau,agama,ringtone,yudhoyono,orchestrator,arbitrators,138th,powerplants,cumbernauld,alderley,misamis,hawai`i,cuando,meistriliiga,jermyn,alans,pedigrees,ottavio,approbation,omnium,purulia,prioress,rheinland,lymphoid,lutsk,oscilloscope,ballina,iliac,motorbikes,modernising,uffizi,phylloxera,kalevala,bengalis,amravati,syntheses,interviewers,inflectional,outflank,maryhill,unhurt,profiler,nacelles,heseltine,personalised,guarda,herpetologist,airpark,pigot,margaretha,dinos,peleliu,breakbeat,kastamonu,shaivism,delamere,kingsville,epigram,khlong,phospholipids,journeying,lietuvos,congregated,deviance,celebes,subsoil,stroma,kvitova,lubricating,layoff,alagoas,olafur,doron,interuniversity,raycom,agonopterix,uzice,nanna,springvale,raimundo,wrested,pupal,talat,skinheads,vestige,unpainted,handan,odawara,ammar,attendee,lapped,myotis,gusty,ciconiiformesfamily,traversal,subfield,vitaphone,prensa,hasidism,inwood,carstairs,kropotkin,turgenev,dobra,remittance,purim,tannin,adige,tabulation,lethality,pacha,micronesian,dhruva,defensemen,tibeto,siculus,radioisotope,sodertalje,phitsanulok,euphonium,oxytocin,overhangs,skinks,fabrica,reinterred,emulates,bioscience,paragliding,raekwon,perigee,plausibility,frolunda,erroll,aznar,vyasa,albinus,trevally,confederacion,terse,sixtieth,1530s,kendriya,skateboarders,frontieres,muawiyah,easements,shehu,conservatively,keystones,kasem,brutalist,peekskill,cowry,orcas,syllabary,paltz,elisabetta,denticles,hampering,dolni,eidos,aarau,lermontov,yankton,shahbaz,barrages,kongsvinger,reestablishment,acetyltransferase,zulia,mrnas,slingsby,eucalypt,efficacious,weybridge,gradation,cinematheque,malthus,bampton,coexisted,cisse,hamdi,cupertino,saumarez,chionodes,libertine,formers,sakharov,pseudonymous,vol.1,mcduck,gopalakrishnan,amberley,jorhat,grandmasters,rudiments,dwindle,param,bukidnon,menander,americanus,multipliers,pulawy,homoerotic,pillbox,cd+dvd,epigraph,aleksandrow,extrapolated,horseshoes,contemporain,angiography,hasselt,shawinigan,memorization,legitimized,cyclades,outsold,rodolphe,kelis,powerball,dijkstra,analyzers,incompressible,sambar,orangeburg,osten,reauthorization,adamawa,sphagnum,hypermarket,millipedes,zoroaster,madea,ossuary,murrayfield,pronominal,gautham,resellers,ethers,quarrelled,dolna,stragglers,asami,tangut,passos,educacion,sharaf,texel,berio,bethpage,bezalel,marfa,noronha,36ers,genteel,avram,shilton,compensates,sweetener,reinstalled,disables,noether,1590s,balakrishnan,kotaro,northallerton,cataclysm,gholam,cancellara,schiphol,commends,longinus,albinism,gemayel,hamamatsu,volos,islamism,sidereal,pecuniary,diggings,townsquare,neosho,lushan,chittoor,akhil,disputation,desiccation,cambodians,thwarting,deliberated,ellipsis,bahini,susumu,separators,kohneh,plebeians,kultur,ogaden,pissarro,trypeta,latur,liaodong,vetting,datong,sohail,alchemists,lengthwise,unevenly,masterly,microcontrollers,occupier,deviating,farringdon,baccalaureat,theocracy,chebyshev,archivists,jayaram,ineffectiveness,scandinavians,jacobins,encomienda,nambu,g/cm3,catesby,paavo,heeded,rhodium,idealised,10deg,infective,mecyclothorax,halevy,sheared,minbari,audax,lusatian,rebuffs,hitfix,fastener,subjugate,tarun,binet,compuserve,synthesiser,keisuke,amalric,ligatures,tadashi,ignazio,abramovich,groundnut,otomo,maeve,mortlake,ostrogoths,antillean,todor,recto,millimetre,espousing,inaugurate,paracetamol,galvanic,harpalinae,jedrzejow,reassessment,langlands,civita,mikan,stikine,bijar,imamate,istana,kaiserliche,erastus,federale,cytosine,expansionism,hommes,norrland,smriti,snapdragon,gulab,taleb,lossy,khattab,urbanised,sesto,rekord,diffuser,desam,morganatic,silting,pacts,extender,beauharnais,purley,bouches,halfpipe,discontinuities,houthi,farmville,animism,horni,saadi,interpretative,blockades,symeon,biogeographic,transcaucasian,jetties,landrieu,astrocytes,conjunto,stumpings,weevils,geysers,redux,arching,romanus,tazeh,marcellinus,casein,opava,misrata,anare,sattar,declarer,dreux,oporto,venta,vallis,icosahedron,cortona,lachine,mohammedan,sandnes,zynga,clarin,diomedes,tsuyoshi,pribram,gulbarga,chartist,superettan,boscawen,altus,subang,gating,epistolary,vizianagaram,ogdensburg,panna,thyssen,tarkovsky,dzogchen,biograph,seremban,unscientific,nightjar,legco,deism,n.w.a,sudha,siskel,sassou,flintlock,jovial,montbeliard,pallida,formula_66,tranquillity,nisei,adornment,'people,yamhill,hockeyallsvenskan,adopters,appian,lowicz,haplotypes,succinctly,starogard,presidencies,kheyrabad,sobibor,kinesiology,cowichan,militum,cromwellian,leiningen,ps1.5,concourses,dalarna,goldfield,brzeg,faeces,aquarii,matchless,harvesters,181st,numismatics,korfball,sectioned,transpires,facultative,brandishing,kieron,forages,menai,glutinous,debarge,heathfield,1580s,malang,photoelectric,froome,semiotic,alwar,grammophon,chiaroscuro,mentalist,maramures,flacco,liquors,aleutians,marvell,sutlej,patnaik,qassam,flintoff,bayfield,haeckel,sueno,avicii,exoplanets,hoshi,annibale,vojislav,honeycombs,celebrant,rendsburg,veblen,quails,141st,carronades,savar,narrations,jeeva,ontologies,hedonistic,marinette,godot,munna,bessarabian,outrigger,thame,gravels,hoshino,falsifying,stereochemistry,nacionalista,medially,radula,ejecting,conservatorio,odile,ceiba,jaina,essonne,isometry,allophones,recidivism,iveco,ganda,grammarians,jagan,signposted,uncompressed,facilitators,constancy,ditko,propulsive,impaling,interbank,botolph,amlaib,intergroup,sorbus,cheka,debye,praca,adorning,presbyteries,dormition,strategos,qarase,pentecostals,beehives,hashemite,goldust,euronext,egress,arpanet,soames,jurchens,slovenska,copse,kazim,appraisals,marischal,mineola,sharada,caricaturist,sturluson,galba,faizabad,overwintering,grete,uyezds,didsbury,libreville,ablett,microstructure,anadolu,belenenses,elocution,cloaks,timeslots,halden,rashidun,displaces,sympatric,germanus,tuples,ceska,equalize,disassembly,krautrock,babangida,memel,deild,gopala,hematology,underclass,sangli,wawrinka,assur,toshack,refrains,nicotinic,bhagalpur,badami,racetracks,pocatello,walgreens,nazarbayev,occultation,spinnaker,geneon,josias,hydrolyzed,dzong,corregimiento,waistcoat,thermoplastic,soldered,anticancer,lactobacillus,shafi'i,carabus,adjournment,schlumberger,triceratops,despotate,mendicant,krishnamurti,bahasa,earthworm,lavoisier,noetherian,kalki,fervently,bhawan,saanich,coquille,gannet,motagua,kennels,mineralization,fitzherbert,svein,bifurcated,hairdressing,felis,abounded,dimers,fervour,hebdo,bluffton,aetna,corydon,clevedon,carneiro,subjectively,deutz,gastropoda,overshot,concatenation,varman,carolla,maharshi,mujib,inelastic,riverhead,initialized,safavids,rohini,caguas,bulges,fotbollforbund,hefei,spithead,westville,maronites,lytham,americo,gediminas,stephanus,chalcolithic,hijra,gnu/linux,predilection,rulership,sterility,haidar,scarlatti,saprissa,sviatoslav,pointedly,sunroof,guarantor,thevar,airstrips,pultusk,sture,129th,divinities,daizong,dolichoderus,cobourg,maoists,swordsmanship,uprated,bohme,tashi,largs,chandi,bluebeard,householders,richardsonian,drepanidae,antigonish,elbasan,occultism,marca,hypergeometric,oirat,stiglitz,ignites,dzungar,miquelon,pritam,d'automne,ulidiid,niamey,vallecano,fondo,billiton,incumbencies,raceme,chambery,cadell,barenaked,kagame,summerside,haussmann,hatshepsut,apothecaries,criollo,feint,nasals,timurid,feltham,plotinus,oxygenation,marginata,officinalis,salat,participations,ising,downe,izumo,unguided,pretence,coursed,haruna,viscountcy,mainstage,justicia,powiat,takara,capitoline,implacable,farben,stopford,cosmopterix,tuberous,kronecker,galatians,kweli,dogmas,exhorted,trebinje,skanda,newlyn,ablative,basidia,bhiwani,encroachments,stranglers,regrouping,tubal,shoestring,wawel,anionic,mesenchymal,creationists,pyrophosphate,moshi,despotism,powerbook,fatehpur,rupiah,segre,ternate,jessore,b.i.g,shevardnadze,abounds,gliwice,densest,memoria,suborbital,vietcong,ratepayers,karunanidhi,toolbar,descents,rhymney,exhortation,zahedan,carcinomas,hyperbaric,botvinnik,billets,neuropsychological,tigranes,hoards,chater,biennially,thistles,scotus,wataru,flotillas,hungama,monopolistic,payouts,vetch,generalissimo,caries,naumburg,piran,blizzards,escalates,reactant,shinya,theorize,rizzoli,transitway,ecclesiae,streptomyces,cantal,nisibis,superconductor,unworkable,thallus,roehampton,scheckter,viceroys,makuuchi,ilkley,superseding,takuya,klodzko,borbon,raspberries,operand,w.a.k.o,sarabande,factionalism,egalitarianism,temasek,torbat,unscripted,jorma,westerner,perfective,vrije,underlain,goldfrapp,blaenau,jomon,barthes,drivetime,bassa,bannock,umaga,fengxiang,zulus,sreenivasan,farces,codice_10,freeholder,poddebice,imperialists,deregulated,wingtip,o'hagan,pillared,overtone,hofstadter,149th,kitano,saybrook,standardizing,aldgate,staveley,o'flaherty,hundredths,steerable,soltan,empted,cruyff,intramuros,taluks,cotonou,marae,karur,figueres,barwon,lucullus,niobe,zemlya,lathes,homeported,chaux,amyotrophic,opines,exemplars,bhamo,homomorphisms,gauleiter,ladin,mafiosi,airdrieonians,b/soul,decal,transcaucasia,solti,defecation,deaconess,numidia,sampradaya,normalised,wingless,schwaben,alnus,cinerama,yakutsk,ketchikan,orvieto,unearned,monferrato,rotem,aacsb,loong,decoders,skerries,cardiothoracic,repositioning,pimpernel,yohannan,tenebrionoidea,nargis,nouvel,costliest,interdenominational,noize,redirecting,zither,morcha,radiometric,frequenting,irtysh,gbagbo,chakri,litvinenko,infotainment,ravensbruck,harith,corbels,maegashira,jousting,natan,novus,falcao,minis,railed,decile,rauma,ramaswamy,cavitation,paranaque,berchtesgaden,reanimated,schomberg,polysaccharides,exclusionary,cleon,anurag,ravaging,dhanush,mitchells,granule,contemptuous,keisei,rolleston,atlantean,yorkist,daraa,wapping,micrometer,keeneland,comparably,baranja,oranje,schlafli,yogic,dinajpur,unimpressive,masashi,recreativo,alemannic,petersfield,naoko,vasudeva,autosport,rajat,marella,busko,wethersfield,ssris,soulcalibur,kobani,wildland,rookery,hoffenheim,kauri,aliphatic,balaclava,ferrite,publicise,victorias,theism,quimper,chapbook,functionalist,roadbed,ulyanovsk,cupen,purpurea,calthorpe,teofilo,mousavi,cochlea,linotype,detmold,ellerslie,gakkai,telkom,southsea,subcontractor,inguinal,philatelists,zeebrugge,piave,trochidae,dempo,spoilt,saharanpur,mihrab,parasympathetic,barbarous,chartering,antiqua,katsina,bugis,categorizes,altstadt,kandyan,pambansa,overpasses,miters,assimilating,finlandia,uneconomic,am/fm,harpsichordist,dresdner,luminescence,authentically,overpowers,magmatic,cliftonville,oilfields,skirted,berthe,cuman,oakham,frelimo,glockenspiel,confection,saxophonists,piaseczno,multilevel,antipater,levying,maltreatment,velho,opoczno,harburg,pedophilia,unfunded,palettes,plasterwork,breve,dharmendra,auchinleck,nonesuch,blackmun,libretti,rabbani,145th,hasselbeck,kinnock,malate,vanden,cloverdale,ashgabat,nares,radians,steelworkers,sabor,possums,catterick,hemispheric,ostra,outpaced,dungeness,almshouse,penryn,texians,1000m,franchitti,incumbency,texcoco,newar,tramcars,toroidal,meitetsu,spellbound,agronomist,vinifera,riata,bunko,pinas,ba'al,github,vasilyevich,obsolescent,geodesics,ancestries,tujue,capitalised,unassigned,throng,unpaired,psychometric,skegness,exothermic,buffered,kristiansund,tongued,berenger,basho,alitalia,prolongation,archaeologically,fractionation,cyprinid,echinoderms,agriculturally,justiciar,sonam,ilium,baits,danceable,grazer,ardahan,grassed,preemption,glassworks,hasina,ugric,umbra,wahhabi,vannes,tinnitus,capitaine,tikrit,lisieux,scree,hormuz,despenser,jagiellon,maisonneuve,gandaki,santarem,basilicas,lancing,landskrona,weilburg,fireside,elysian,isleworth,krishnamurthy,filton,cynon,tecmo,subcostal,scalars,triglycerides,hyperplane,farmingdale,unione,meydan,pilings,mercosur,reactivate,akiba,fecundity,jatra,natsume,zarqawi,preta,masao,presbyter,oakenfold,rhodri,ferran,ruizong,cloyne,nelvana,epiphanius,borde,scutes,strictures,troughton,whitestone,sholom,toyah,shingon,kutuzov,abelard,passant,lipno,cafeterias,residuals,anabaptists,paratransit,criollos,pleven,radiata,destabilizing,hadiths,bazaars,mannose,taiyo,crookes,welbeck,baoding,archelaus,nguesso,alberni,wingtips,herts,viasat,lankans,evreux,wigram,fassbinder,ryuichi,storting,reducible,olesnica,znojmo,hyannis,theophanes,flatiron,mustering,rajahmundry,kadir,wayang,prome,lethargy,zubin,illegality,conall,dramedy,beerbohm,hipparchus,ziarat,ryuji,shugo,glenorchy,microarchitecture,morne,lewinsky,cauvery,battenberg,hyksos,wayanad,hamilcar,buhari,brazo,bratianu,solms,aksaray,elamite,chilcotin,bloodstock,sagara,dolny,reunified,umlaut,proteaceae,camborne,calabrian,dhanbad,vaxjo,cookware,potez,rediffusion,semitones,lamentations,allgau,guernica,suntory,pleated,stationing,urgell,gannets,bertelsmann,entryway,raphitomidae,acetaldehyde,nephrology,categorizing,beiyang,permeate,tourney,geosciences,khana,masayuki,crucis,universitaria,slaskie,khaimah,finno,advani,astonishingly,tubulin,vampiric,jeolla,sociale,cleethorpes,badri,muridae,suzong,debater,decimation,kenyans,mutualism,pontifex,middlemen,insee,halevi,lamentation,psychopathy,brassey,wenders,kavya,parabellum,prolactin,inescapable,apses,malignancies,rinzai,stigmatized,menahem,comox,ateliers,welshpool,setif,centimetre,truthfulness,downfield,drusus,woden,glycosylation,emanated,agulhas,dalkeith,jazira,nucky,unifil,jobim,operon,oryzomys,heroically,seances,supernumerary,backhouse,hashanah,tatler,imago,invert,hayato,clockmaker,kingsmill,swiecie,analogously,golconda,poste,tacitly,decentralised,ge'ez,diplomatically,fossiliferous,linseed,mahavira,pedestals,archpriest,byelection,domiciled,jeffersonian,bombus,winegrowing,waukegan,uncultivated,haverfordwest,saumur,communally,disbursed,cleeve,zeljeznicar,speciosa,vacationers,sigur,vaishali,zlatko,iftikhar,cropland,transkei,incompleteness,bohra,subantarctic,slieve,physiologic,similis,klerk,replanted,'right,chafee,reproducible,bayburt,regicide,muzaffarpur,plurals,hanyu,orthologs,diouf,assailed,kamui,tarik,dodecanese,gorne,on/off,179th,shimoga,granaries,carlists,valar,tripolitania,sherds,simmern,dissociated,isambard,polytechnical,yuvraj,brabazon,antisense,pubmed,glans,minutely,masaaki,raghavendra,savoury,podcasting,tachi,bienville,gongsun,ridgely,deform,yuichi,binders,canna,carcetti,llobregat,implored,berri,njegos,intermingled,offload,athenry,motherhouse,corpora,kakinada,dannebrog,imperio,prefaces,musicologists,aerospatiale,shirai,nagapattinam,servius,cristoforo,pomfret,reviled,entebbe,stane,east/west,thermometers,matriarchal,siglo,bodil,legionnaire,ze'ev,theorizing,sangeetha,horticulturist,uncountable,lookalike,anoxic,ionospheric,genealogists,chicopee,imprinting,popish,crematoria,diamondback,cyathea,hanzhong,cameramen,halogaland,naklo,waclaw,storehouses,flexed,comuni,frits,glauca,nilgiris,compresses,nainital,continuations,albay,hypoxic,samajwadi,dunkerque,nanticoke,sarwar,interchanged,jubal,corba,jalgaon,derleth,deathstroke,magny,vinnytsia,hyphenated,rimfire,sawan,boehner,disrepute,normalize,aromanian,dualistic,approximant,chama,karimabad,barnacles,sanok,stipends,dyfed,rijksmuseum,reverberation,suncorp,fungicides,reverie,spectrograph,stereophonic,niazi,ordos,alcan,karaite,lautrec,tableland,lamellar,rieti,langmuir,russula,webern,tweaks,hawick,southerner,morphy,naturalisation,enantiomer,michinoku,barbettes,relieves,carburettors,redruth,oblates,vocabularies,mogilev,bagmati,galium,reasserted,extolled,symon,eurosceptic,inflections,tirtha,recompense,oruro,roping,gouverneur,pared,yayoi,watermills,retooled,leukocytes,jubilant,mazhar,nicolau,manheim,touraine,bedser,hambledon,kohat,powerhouses,tlemcen,reuven,sympathetically,afrikaners,interes,handcrafts,etcher,baddeley,wodonga,amaury,155th,vulgarity,pompadour,automorphisms,1540s,oppositions,prekmurje,deryni,fortifying,arcuate,mahila,bocage,uther,nozze,slashes,atlantica,hadid,rhizomatous,azeris,'with,osmena,lewisville,innervated,bandmaster,outcropping,parallelogram,dominicana,twang,ingushetia,extensional,ladino,sastry,zinoviev,relatable,nobilis,cbeebies,hitless,eulima,sporangia,synge,longlisted,criminalized,penitential,weyden,tubule,volyn,priestesses,glenbrook,kibbutzim,windshaft,canadair,falange,zsolt,bonheur,meine,archangels,safeguarded,jamaicans,malarial,teasers,badging,merseyrail,operands,pulsars,gauchos,biotin,bambara,necaxa,egmond,tillage,coppi,anxiolytic,preah,mausoleums,plautus,feroz,debunked,187th,belediyespor,mujibur,wantage,carboxyl,chettiar,murnau,vagueness,racemic,backstretch,courtland,municipio,palpatine,dezful,hyperbola,sreekumar,chalons,altay,arapahoe,tudors,sapieha,quilon,burdensome,kanya,xxviii,recension,generis,siphuncle,repressor,bitrate,mandals,midhurst,dioxin,democratique,upholds,rodez,cinematographic,epoque,jinping,rabelais,zhytomyr,glenview,rebooted,khalidi,reticulata,122nd,monnaie,passersby,ghazals,europaea,lippmann,earthbound,tadic,andorran,artvin,angelicum,banksy,epicentre,resemblances,shuttled,rathaus,bernt,stonemasons,balochi,siang,tynemouth,cygni,biosynthetic,precipitates,sharecroppers,d'annunzio,softbank,shiji,apeldoorn,polycyclic,wenceslas,wuchang,samnites,tamarack,silmarillion,madinah,palaeontology,kirchberg,sculpin,rohtak,aquabats,oviparous,thynne,caney,blimps,minimalistic,whatcom,palatalization,bardstown,direct3d,paramagnetic,kamboja,khash,globemaster,lengua,matej,chernigov,swanage,arsenals,cascadia,cundinamarca,tusculum,leavers,organics,warplanes,'three,exertions,arminius,gandharva,inquires,comercio,kuopio,chabahar,plotlines,mersenne,anquetil,paralytic,buckminster,ambit,acrolophus,quantifiers,clacton,ciliary,ansaldo,fergana,egoism,thracians,chicoutimi,northbrook,analgesia,brotherhoods,hunza,adriaen,fluoridation,snowfalls,soundboard,fangoria,cannibalistic,orthogonius,chukotka,dindigul,manzoni,chainz,macromedia,beltline,muruga,schistura,provable,litex,initio,pneumoniae,infosys,cerium,boonton,cannonballs,d'une,solvency,mandurah,houthis,dolmens,apologists,radioisotopes,blaxploitation,poroshenko,stawell,coosa,maximilien,tempelhof,espouse,declaratory,hambro,xalapa,outmoded,mihiel,benefitting,desirous,archeparchy,repopulated,telescoping,captor,mackaye,disparaged,ramanathan,crowne,tumbled,technetium,silted,chedi,nievre,hyeon,cartoonish,interlock,infocom,rediff.com,dioramas,timekeeping,concertina,kutaisi,cesky,lubomirski,unapologetic,epigraphic,stalactites,sneha,biofilm,falconry,miraflores,catena,'outstanding,prospekt,apotheosis,o'odham,pacemakers,arabica,gandhinagar,reminisces,iroquoian,ornette,tilling,neoliberalism,chameleons,pandava,prefontaine,haiyan,gneisenau,utama,bando,reconstitution,azaria,canola,paratroops,ayckbourn,manistee,stourton,manifestos,lympne,denouement,tractatus,rakim,bellflower,nanometer,sassanids,turlough,presbyterianism,varmland,20deg,phool,nyerere,almohad,manipal,vlaanderen,quickness,removals,makow,circumflex,eatery,morane,fondazione,alkylation,unenforceable,galliano,silkworm,junior/senior,abducts,phlox,konskie,lofoten,buuren,glyphosate,faired,naturae,cobbles,taher,skrulls,dostoevsky,walkout,wagnerian,orbited,methodically,denzil,sarat,extraterritorial,kohima,d'armor,brinsley,rostropovich,fengtian,comitatus,aravind,moche,wrangell,giscard,vantaa,viljandi,hakoah,seabees,muscatine,ballade,camanachd,sothern,mullioned,durad,margraves,maven,arete,chandni,garifuna,142nd,reading/literature,thickest,intensifies,trygve,khaldun,perinatal,asana,powerline,acetylation,nureyev,omiya,montesquieu,riverwalk,marly,correlating,intermountain,bulgar,hammerheads,underscores,wiretapping,quatrain,ruisseau,newsagent,tuticorin,polygyny,hemsworth,partisanship,banna,istrian,evaporator".split(","),female_names:"mary,patricia,linda,barbara,elizabeth,jennifer,maria,susan,margaret,dorothy,lisa,nancy,karen,betty,helen,sandra,donna,carol,ruth,sharon,michelle,laura,sarah,kimberly,deborah,jessica,shirley,cynthia,angela,melissa,brenda,amy,anna,rebecca,virginia,kathleen,pamela,martha,debra,amanda,stephanie,carolyn,christine,marie,janet,catherine,frances,ann,joyce,diane,alice,julie,heather,teresa,doris,gloria,evelyn,jean,cheryl,mildred,katherine,joan,ashley,judith,rose,janice,kelly,nicole,judy,christina,kathy,theresa,beverly,denise,tammy,irene,jane,lori,rachel,marilyn,andrea,kathryn,louise,sara,anne,jacqueline,wanda,bonnie,julia,ruby,lois,tina,phyllis,norma,paula,diana,annie,lillian,emily,robin,peggy,crystal,gladys,rita,dawn,connie,florence,tracy,edna,tiffany,carmen,rosa,cindy,grace,wendy,victoria,edith,kim,sherry,sylvia,josephine,thelma,shannon,sheila,ethel,ellen,elaine,marjorie,carrie,charlotte,monica,esther,pauline,emma,juanita,anita,rhonda,hazel,amber,eva,debbie,april,leslie,clara,lucille,jamie,joanne,eleanor,valerie,danielle,megan,alicia,suzanne,michele,gail,bertha,darlene,veronica,jill,erin,geraldine,lauren,cathy,joann,lorraine,lynn,sally,regina,erica,beatrice,dolores,bernice,audrey,yvonne,annette,marion,dana,stacy,ana,renee,ida,vivian,roberta,holly,brittany,melanie,loretta,yolanda,jeanette,laurie,katie,kristen,vanessa,alma,sue,elsie,beth,jeanne,vicki,carla,tara,rosemary,eileen,terri,gertrude,lucy,tonya,ella,stacey,wilma,gina,kristin,jessie,natalie,agnes,vera,charlene,bessie,delores,melinda,pearl,arlene,maureen,colleen,allison,tamara,joy,georgia,constance,lillie,claudia,jackie,marcia,tanya,nellie,minnie,marlene,heidi,glenda,lydia,viola,courtney,marian,stella,caroline,dora,vickie,mattie,maxine,irma,mabel,marsha,myrtle,lena,christy,deanna,patsy,hilda,gwendolyn,jennie,nora,margie,nina,cassandra,leah,penny,kay,priscilla,naomi,carole,olga,billie,dianne,tracey,leona,jenny,felicia,sonia,miriam,velma,becky,bobbie,violet,kristina,toni,misty,mae,shelly,daisy,ramona,sherri,erika,katrina,claire,lindsey,lindsay,geneva,guadalupe,belinda,margarita,sheryl,cora,faye,ada,sabrina,isabel,marguerite,hattie,harriet,molly,cecilia,kristi,brandi,blanche,sandy,rosie,joanna,iris,eunice,angie,inez,lynda,madeline,amelia,alberta,genevieve,monique,jodi,janie,kayla,sonya,jan,kristine,candace,fannie,maryann,opal,alison,yvette,melody,luz,susie,olivia,flora,shelley,kristy,mamie,lula,lola,verna,beulah,antoinette,candice,juana,jeannette,pam,kelli,whitney,bridget,karla,celia,latoya,patty,shelia,gayle,della,vicky,lynne,sheri,marianne,kara,jacquelyn,erma,blanca,myra,leticia,pat,krista,roxanne,angelica,robyn,adrienne,rosalie,alexandra,brooke,bethany,sadie,bernadette,traci,jody,kendra,nichole,rachael,mable,ernestine,muriel,marcella,elena,krystal,angelina,nadine,kari,estelle,dianna,paulette,lora,mona,doreen,rosemarie,desiree,antonia,janis,betsy,christie,freda,meredith,lynette,teri,cristina,eula,leigh,meghan,sophia,eloise,rochelle,gretchen,cecelia,raquel,henrietta,alyssa,jana,gwen,jenna,tricia,laverne,olive,tasha,silvia,elvira,delia,kate,patti,lorena,kellie,sonja,lila,lana,darla,mindy,essie,mandy,lorene,elsa,josefina,jeannie,miranda,dixie,lucia,marta,faith,lela,johanna,shari,camille,tami,shawna,elisa,ebony,melba,ora,nettie,tabitha,ollie,winifred,kristie,alisha,aimee,rena,myrna,marla,tammie,latasha,bonita,patrice,ronda,sherrie,addie,francine,deloris,stacie,adriana,cheri,abigail,celeste,jewel,cara,adele,rebekah,lucinda,dorthy,effie,trina,reba,sallie,aurora,lenora,etta,lottie,kerri,trisha,nikki,estella,francisca,josie,tracie,marissa,karin,brittney,janelle,lourdes,laurel,helene,fern,elva,corinne,kelsey,ina,bettie,elisabeth,aida,caitlin,ingrid,iva,eugenia,christa,goldie,maude,jenifer,therese,dena,lorna,janette,latonya,candy,consuelo,tamika,rosetta,debora,cherie,polly,dina,jewell,fay,jillian,dorothea,nell,trudy,esperanza,patrica,kimberley,shanna,helena,cleo,stefanie,rosario,ola,janine,mollie,lupe,alisa,lou,maribel,susanne,bette,susana,elise,cecile,isabelle,lesley,jocelyn,paige,joni,rachelle,leola,daphne,alta,ester,petra,graciela,imogene,jolene,keisha,lacey,glenna,gabriela,keri,ursula,lizzie,kirsten,shana,adeline,mayra,jayne,jaclyn,gracie,sondra,carmela,marisa,rosalind,charity,tonia,beatriz,marisol,clarice,jeanine,sheena,angeline,frieda,lily,shauna,millie,claudette,cathleen,angelia,gabrielle,autumn,katharine,jodie,staci,lea,christi,justine,elma,luella,margret,dominique,socorro,martina,margo,mavis,callie,bobbi,maritza,lucile,leanne,jeannine,deana,aileen,lorie,ladonna,willa,manuela,gale,selma,dolly,sybil,abby,ivy,dee,winnie,marcy,luisa,jeri,magdalena,ofelia,meagan,audra,matilda,leila,cornelia,bianca,simone,bettye,randi,virgie,latisha,barbra,georgina,eliza,leann,bridgette,rhoda,haley,adela,nola,bernadine,flossie,ila,greta,ruthie,nelda,minerva,lilly,terrie,letha,hilary,estela,valarie,brianna,rosalyn,earline,catalina,ava,mia,clarissa,lidia,corrine,alexandria,concepcion,tia,sharron,rae,dona,ericka,jami,elnora,chandra,lenore,neva,marylou,melisa,tabatha,serena,avis,allie,sofia,jeanie,odessa,nannie,harriett,loraine,penelope,milagros,emilia,benita,allyson,ashlee,tania,esmeralda,eve,pearlie,zelma,malinda,noreen,tameka,saundra,hillary,amie,althea,rosalinda,lilia,alana,clare,alejandra,elinor,lorrie,jerri,darcy,earnestine,carmella,noemi,marcie,liza,annabelle,louisa,earlene,mallory,carlene,nita,selena,tanisha,katy,julianne,lakisha,edwina,maricela,margery,kenya,dollie,roxie,roslyn,kathrine,nanette,charmaine,lavonne,ilene,tammi,suzette,corine,kaye,chrystal,lina,deanne,lilian,juliana,aline,luann,kasey,maryanne,evangeline,colette,melva,lawanda,yesenia,nadia,madge,kathie,ophelia,valeria,nona,mitzi,mari,georgette,claudine,fran,alissa,roseann,lakeisha,susanna,reva,deidre,chasity,sheree,elvia,alyce,deirdre,gena,briana,araceli,katelyn,rosanne,wendi,tessa,berta,marva,imelda,marietta,marci,leonor,arline,sasha,madelyn,janna,juliette,deena,aurelia,josefa,augusta,liliana,lessie,amalia,savannah,anastasia,vilma,natalia,rosella,lynnette,corina,alfreda,leanna,amparo,coleen,tamra,aisha,wilda,karyn,maura,mai,evangelina,rosanna,hallie,erna,enid,mariana,lacy,juliet,jacklyn,freida,madeleine,mara,cathryn,lelia,casandra,bridgett,angelita,jannie,dionne,annmarie,katina,beryl,millicent,katheryn,diann,carissa,maryellen,liz,lauri,helga,gilda,rhea,marquita,hollie,tisha,tamera,angelique,francesca,kaitlin,lolita,florine,rowena,reyna,twila,fanny,janell,ines,concetta,bertie,alba,brigitte,alyson,vonda,pansy,elba,noelle,letitia,deann,brandie,louella,leta,felecia,sharlene,lesa,beverley,isabella,herminia,terra,celina,tori,octavia,jade,denice,germaine,michell,cortney,nelly,doretha,deidra,monika,lashonda,judi,chelsey,antionette,margot,adelaide,leeann,elisha,dessie,libby,kathi,gayla,latanya,mina,mellisa,kimberlee,jasmin,renae,zelda,elda,justina,gussie,emilie,camilla,abbie,rocio,kaitlyn,edythe,ashleigh,selina,lakesha,geri,allene,pamala,michaela,dayna,caryn,rosalia,jacquline,rebeca,marybeth,krystle,iola,dottie,belle,griselda,ernestina,elida,adrianne,demetria,delma,jaqueline,arleen,virgina,retha,fatima,tillie,eleanore,cari,treva,wilhelmina,rosalee,maurine,latrice,jena,taryn,elia,debby,maudie,jeanna,delilah,catrina,shonda,hortencia,theodora,teresita,robbin,danette,delphine,brianne,nilda,danna,cindi,bess,iona,winona,vida,rosita,marianna,racheal,guillermina,eloisa,celestine,caren,malissa,lona,chantel,shellie,marisela,leora,agatha,soledad,migdalia,ivette,christen,athena,janel,veda,pattie,tessie,tera,marilynn,lucretia,karrie,dinah,daniela,alecia,adelina,vernice,shiela,portia,merry,lashawn,dara,tawana,verda,alene,zella,sandi,rafaela,maya,kira,candida,alvina,suzan,shayla,lettie,samatha,oralia,matilde,larissa,vesta,renita,delois,shanda,phillis,lorri,erlinda,cathrine,barb,isabell,ione,gisela,roxanna,mayme,kisha,ellie,mellissa,dorris,dalia,bella,annetta,zoila,reta,reina,lauretta,kylie,christal,pilar,charla,elissa,tiffani,tana,paulina,leota,breanna,jayme,carmel,vernell,tomasa,mandi,dominga,santa,melodie,lura,alexa,tamela,mirna,kerrie,venus,felicita,cristy,carmelita,berniece,annemarie,tiara,roseanne,missy,cori,roxana,pricilla,kristal,jung,elyse,haydee,aletha,bettina,marge,gillian,filomena,zenaida,harriette,caridad,vada,aretha,pearline,marjory,marcela,flor,evette,elouise,alina,damaris,catharine,belva,nakia,marlena,luanne,lorine,karon,dorene,danita,brenna,tatiana,louann,julianna,andria,philomena,lucila,leonora,dovie,romona,mimi,jacquelin,gaye,tonja,misti,chastity,stacia,roxann,micaela,velda,marlys,johnna,aura,ivonne,hayley,nicki,majorie,herlinda,yadira,perla,gregoria,antonette,shelli,mozelle,mariah,joelle,cordelia,josette,chiquita,trista,laquita,georgiana,candi,shanon,hildegard,stephany,magda,karol,gabriella,tiana,roma,richelle,oleta,jacque,idella,alaina,suzanna,jovita,tosha,nereida,marlyn,kyla,delfina,tena,stephenie,sabina,nathalie,marcelle,gertie,darleen,thea,sharonda,shantel,belen,venessa,rosalina,genoveva,clementine,rosalba,renate,renata,georgianna,floy,dorcas,ariana,tyra,theda,mariam,juli,jesica,vikki,verla,roselyn,melvina,jannette,ginny,debrah,corrie,violeta,myrtis,latricia,collette,charleen,anissa,viviana,twyla,nedra,latonia,hellen,fabiola,annamarie,adell,sharyn,chantal,niki,maud,lizette,lindy,kesha,jeana,danelle,charline,chanel,valorie,dortha,cristal,sunny,leone,leilani,gerri,debi,andra,keshia,eulalia,easter,dulce,natividad,linnie,kami,georgie,catina,brook,alda,winnifred,sharla,ruthann,meaghan,magdalene,lissette,adelaida,venita,trena,shirlene,shameka,elizebeth,dian,shanta,latosha,carlotta,windy,rosina,mariann,leisa,jonnie,dawna,cathie,astrid,laureen,janeen,holli,fawn,vickey,teressa,shante,rubye,marcelina,chanda,terese,scarlett,marnie,lulu,lisette,jeniffer,elenor,dorinda,donita,carman,bernita,altagracia,aleta,adrianna,zoraida,lyndsey,janina,starla,phylis,phuong,kyra,charisse,blanch,sanjuanita,rona,nanci,marilee,maranda,brigette,sanjuana,marita,kassandra,joycelyn,felipa,chelsie,bonny,mireya,lorenza,kyong,ileana,candelaria,sherie,lucie,leatrice,lakeshia,gerda,edie,bambi,marylin,lavon,hortense,garnet,evie,tressa,shayna,lavina,kyung,jeanetta,sherrill,shara,phyliss,mittie,anabel,alesia,thuy,tawanda,joanie,tiffanie,lashanda,karissa,enriqueta,daria,daniella,corinna,alanna,abbey,roxane,roseanna,magnolia,lida,joellen,coral,carleen,tresa,peggie,novella,nila,maybelle,jenelle,carina,nova,melina,marquerite,margarette,josephina,evonne,cinthia,albina,toya,tawnya,sherita,myriam,lizabeth,lise,keely,jenni,giselle,cheryle,ardith,ardis,alesha,adriane,shaina,linnea,karolyn,felisha,dori,darci,artie,armida,zola,xiomara,vergie,shamika,nena,nannette,maxie,lovie,jeane,jaimie,inge,farrah,elaina,caitlyn,felicitas,cherly,caryl,yolonda,yasmin,teena,prudence,pennie,nydia,mackenzie,orpha,marvel,lizbeth,laurette,jerrie,hermelinda,carolee,tierra,mirian,meta,melony,kori,jennette,jamila,yoshiko,susannah,salina,rhiannon,joleen,cristine,ashton,aracely,tomeka,shalonda,marti,lacie,kala,jada,ilse,hailey,brittani,zona,syble,sherryl,nidia,marlo,kandice,kandi,alycia,ronna,norene,mercy,ingeborg,giovanna,gemma,christel,audry,zora,vita,trish,stephaine,shirlee,shanika,melonie,mazie,jazmin,inga,hettie,geralyn,fonda,estrella,adella,sarita,rina,milissa,maribeth,golda,evon,ethelyn,enedina,cherise,chana,velva,tawanna,sade,mirta,karie,jacinta,elna,davina,cierra,ashlie,albertha,tanesha,nelle,mindi,lorinda,larue,florene,demetra,dedra,ciara,chantelle,ashly,suzy,rosalva,noelia,lyda,leatha,krystyna,kristan,karri,darline,darcie,cinda,cherrie,awilda,almeda,rolanda,lanette,jerilyn,gisele,evalyn,cyndi,cleta,carin,zina,zena,velia,tanika,charissa,talia,margarete,lavonda,kaylee,kathlene,jonna,irena,ilona,idalia,candis,candance,brandee,anitra,alida,sigrid,nicolette,maryjo,linette,hedwig,christiana,alexia,tressie,modesta,lupita,lita,gladis,evelia,davida,cherri,cecily,ashely,annabel,agustina,wanita,shirly,rosaura,hulda,yetta,verona,thomasina,sibyl,shannan,mechelle,leandra,lani,kylee,kandy,jolynn,ferne,eboni,corene,alysia,zula,nada,moira,lyndsay,lorretta,jammie,hortensia,gaynell,adria,vina,vicenta,tangela,stephine,norine,nella,liana,leslee,kimberely,iliana,glory,felica,emogene,elfriede,eden,eartha,carma,ocie,lennie,kiara,jacalyn,carlota,arielle,otilia,kirstin,kacey,johnetta,joetta,jeraldine,jaunita,elana,dorthea,cami,amada,adelia,vernita,tamar,siobhan,renea,rashida,ouida,nilsa,meryl,kristyn,julieta,danica,breanne,aurea,anglea,sherron,odette,malia,lorelei,leesa,kenna,kathlyn,fiona,charlette,suzie,shantell,sabra,racquel,myong,mira,martine,lucienne,lavada,juliann,elvera,delphia,christiane,charolette,carri,asha,angella,paola,ninfa,leda,stefani,shanell,palma,machelle,lissa,kecia,kathryne,karlene,julissa,jettie,jenniffer,corrina,carolann,alena,rosaria,myrtice,marylee,liane,kenyatta,judie,janey,elmira,eldora,denna,cristi,cathi,zaida,vonnie,viva,vernie,rosaline,mariela,luciana,lesli,karan,felice,deneen,adina,wynona,tarsha,sheron,shanita,shani,shandra,randa,pinkie,nelida,marilou,lyla,laurene,laci,janene,dorotha,daniele,dani,carolynn,carlyn,berenice,ayesha,anneliese,alethea,thersa,tamiko,rufina,oliva,mozell,marylyn,kristian,kathyrn,kasandra,kandace,janae,domenica,debbra,dannielle,chun,arcelia,zenobia,sharen,sharee,lavinia,kacie,jackeline,huong,felisa,emelia,eleanora,cythia,cristin,claribel,anastacia,zulma,zandra,yoko,tenisha,susann,sherilyn,shay,shawanda,romana,mathilda,linsey,keiko,joana,isela,gretta,georgetta,eugenie,desirae,delora,corazon,antonina,anika,willene,tracee,tamatha,nichelle,mickie,maegan,luana,lanita,kelsie,edelmira,bree,afton,teodora,tamie,shena,linh,keli,kaci,danyelle,arlette,albertine,adelle,tiffiny,simona,nicolasa,nichol,nakisha,maira,loreen,kizzy,fallon,christene,bobbye,ying,vincenza,tanja,rubie,roni,queenie,margarett,kimberli,irmgard,idell,hilma,evelina,esta,emilee,dennise,dania,carie,risa,rikki,particia,masako,luvenia,loree,loni,lien,gigi,florencia,denita,billye,tomika,sharita,rana,nikole,neoma,margarite,madalyn,lucina,laila,kali,jenette,gabriele,evelyne,elenora,clementina,alejandrina,zulema,violette,vannessa,thresa,retta,patience,noella,nickie,jonell,chaya,camelia,bethel,anya,suzann,mila,lilla,laverna,keesha,kattie,georgene,eveline,estell,elizbeth,vivienne,vallie,trudie,stephane,magaly,madie,kenyetta,karren,janetta,hermine,drucilla,debbi,celestina,candie,britni,beckie,amina,zita,yolande,vivien,vernetta,trudi,pearle,patrina,ossie,nicolle,loyce,letty,katharina,joselyn,jonelle,jenell,iesha,heide,florinda,florentina,elodia,dorine,brunilda,brigid,ashli,ardella,twana,tarah,shavon,serina,rayna,ramonita,margurite,lucrecia,kourtney,kati,jesenia,crista,ayana,alica,alia,vinnie,suellen,romelia,rachell,olympia,michiko,kathaleen,jolie,jessi,janessa,hana,elease,carletta,britany,shona,salome,rosamond,regena,raina,ngoc,nelia,louvenia,lesia,latrina,laticia,larhonda,jina,jacki,emmy,deeann,coretta,arnetta,thalia,shanice,neta,mikki,micki,lonna,leana,lashunda,kiley,joye,jacqulyn,ignacia,hyun,hiroko,henriette,elayne,delinda,dahlia,coreen,consuela,conchita,babette,ayanna,anette,albertina,shawnee,shaneka,quiana,pamelia,merri,merlene,margit,kiesha,kiera,kaylene,jodee,jenise,erlene,emmie,dalila,daisey,casie,belia,babara,versie,vanesa,shelba,shawnda,nikia,naoma,marna,margeret,madaline,lawana,kindra,jutta,jazmine,janett,hannelore,glendora,gertrud,garnett,freeda,frederica,florance,flavia,carline,beverlee,anjanette,valda,tamala,shonna,sarina,oneida,merilyn,marleen,lurline,lenna,katherin,jeni,gracia,glady,farah,enola,dominque,devona,delana,cecila,caprice,alysha,alethia,vena,theresia,tawny,shakira,samara,sachiko,rachele,pamella,marni,mariel,maren,malisa,ligia,lera,latoria,larae,kimber,kathern,karey,jennefer,janeth,halina,fredia,delisa,debroah,ciera,angelika,andree,altha,vivan,terresa,tanna,sudie,signe,salena,ronni,rebbecca,myrtie,malika,maida,leonarda,kayleigh,ethyl,ellyn,dayle,cammie,brittni,birgit,avelina,asuncion,arianna,akiko,venice,tyesha,tonie,tiesha,takisha,steffanie,sindy,meghann,manda,macie,kellye,kellee,joslyn,inger,indira,glinda,glennis,fernanda,faustina,eneida,elicia,digna,dell,arletta,willia,tammara,tabetha,sherrell,sari,rebbeca,pauletta,natosha,nakita,mammie,kenisha,kazuko,kassie,earlean,daphine,corliss,clotilde,carolyne,bernetta,augustina,audrea,annis,annabell,tennille,tamica,selene,rosana,regenia,qiana,markita,macy,leeanne,laurine,jessenia,janita,georgine,genie,emiko,elvie,deandra,dagmar,corie,collen,cherish,romaine,porsha,pearlene,micheline,merna,margorie,margaretta,lore,jenine,hermina,fredericka,elke,drusilla,dorathy,dione,celena,brigida,allegra,tamekia,synthia,sook,slyvia,rosann,reatha,raye,marquetta,margart,ling,layla,kymberly,kiana,kayleen,katlyn,karmen,joella,emelda,eleni,detra,clemmie,cheryll,chantell,cathey,arnita,arla,angle,angelic,alyse,zofia,thomasine,tennie,sherly,sherley,sharyl,remedios,petrina,nickole,myung,myrle,mozella,louanne,lisha,latia,krysta,julienne,jeanene,jacqualine,isaura,gwenda,earleen,cleopatra,carlie,audie,antonietta,alise,verdell,tomoko,thao,talisha,shemika,savanna,santina,rosia,raeann,odilia,nana,minna,magan,lynelle,karma,joeann,ivana,inell,ilana,gudrun,dreama,crissy,chante,carmelina,arvilla,annamae,alvera,aleida,yanira,vanda,tianna,stefania,shira,nicol,nancie,monserrate,melynda,melany,lovella,laure,kacy,jacquelynn,hyon,gertha,eliana,christena,christeen,charise,caterina,carley,candyce,arlena,ammie,willette,vanita,tuyet,syreeta,penney,nyla,maryam,marya,magen,ludie,loma,livia,lanell,kimberlie,julee,donetta,diedra,denisha,deane,dawne,clarine,cherryl,bronwyn,alla,valery,tonda,sueann,soraya,shoshana,shela,sharleen,shanelle,nerissa,meridith,mellie,maye,maple,magaret,lili,leonila,leonie,leeanna,lavonia,lavera,kristel,kathey,kathe,jann,ilda,hildred,hildegarde,genia,fumiko,evelin,ermelinda,elly,dung,doloris,dionna,danae,berneice,annice,alix,verena,verdie,shawnna,shawana,shaunna,rozella,randee,ranae,milagro,lynell,luise,loida,lisbeth,karleen,junita,jona,isis,hyacinth,hedy,gwenn,ethelene,erline,donya,domonique,delicia,dannette,cicely,branda,blythe,bethann,ashlyn,annalee,alline,yuko,vella,trang,towanda,tesha,sherlyn,narcisa,miguelina,meri,maybell,marlana,marguerita,madlyn,lory,loriann,leonore,leighann,laurice,latesha,laronda,katrice,kasie,kaley,jadwiga,glennie,gearldine,francina,epifania,dyan,dorie,diedre,denese,demetrice,delena,cristie,cleora,catarina,carisa,barbera,almeta,trula,tereasa,solange,sheilah,shavonne,sanora,rochell,mathilde,margareta,maia,lynsey,lawanna,launa,kena,keena,katia,glynda,gaylene,elvina,elanor,danuta,danika,cristen,cordie,coletta,clarita,carmon,brynn,azucena,aundrea,angele,verlie,verlene,tamesha,silvana,sebrina,samira,reda,raylene,penni,norah,noma,mireille,melissia,maryalice,laraine,kimbery,karyl,karine,jolanda,johana,jesusa,jaleesa,jacquelyne,iluminada,hilaria,hanh,gennie,francie,floretta,exie,edda,drema,delpha,barbar,assunta,ardell,annalisa,alisia,yukiko,yolando,wonda,waltraud,veta,temeka,tameika,shirleen,shenita,piedad,ozella,mirtha,marilu,kimiko,juliane,jenice,janay,jacquiline,hilde,elois,echo,devorah,chau,brinda,betsey,arminda,aracelis,apryl,annett,alishia,veola,usha,toshiko,theola,tashia,talitha,shery,renetta,reiko,rasheeda,obdulia,mika,melaine,meggan,marlen,marget,marceline,mana,magdalen,librada,lezlie,latashia,lasandra,kelle,isidra,inocencia,gwyn,francoise,erminia,erinn,dimple,devora,criselda,armanda,arie,ariane,angelena,aliza,adriene,adaline,xochitl,twanna,tomiko,tamisha,taisha,susy,rutha,rhona,noriko,natashia,merrie,marinda,mariko,margert,loris,lizzette,leisha,kaila,joannie,jerrica,jene,jannet,janee,jacinda,herta,elenore,doretta,delaine,daniell,claudie,britta,apolonia,amberly,alease,yuri,waneta,tomi,sharri,sandie,roselle,reynalda,raguel,phylicia,patria,olimpia,odelia,mitzie,minda,mignon,mica,mendy,marivel,maile,lynetta,lavette,lauryn,latrisha,lakiesha,kiersten,kary,josphine,jolyn,jetta,janise,jacquie,ivelisse,glynis,gianna,gaynelle,danyell,danille,dacia,coralee,cher,ceola,arianne,aleshia,yung,williemae,trinh,thora,sherika,shemeka,shaunda,roseline,ricki,melda,mallie,lavonna,latina,laquanda,lala,lachelle,klara,kandis,johna,jeanmarie,jaye,grayce,gertude,emerita,ebonie,clorinda,ching,chery,carola,breann,blossom,bernardine,becki,arletha,argelia,alita,yulanda,yessenia,tobi,tasia,sylvie,shirl,shirely,shella,shantelle,sacha,rebecka,providencia,paulene,misha,miki,marline,marica,lorita,latoyia,lasonya,kerstin,kenda,keitha,kathrin,jaymie,gricelda,ginette,eryn,elina,elfrieda,danyel,cheree,chanelle,barrie,aurore,annamaria,alleen,ailene,aide,yasmine,vashti,treasa,tiffaney,sheryll,sharie,shanae,raisa,neda,mitsuko,mirella,milda,maryanna,maragret,mabelle,luetta,lorina,letisha,latarsha,lanelle,lajuana,krissy,karly,karena,jessika,jerica,jeanelle,jalisa,jacelyn,izola,euna,etha,domitila,dominica,daina,creola,carli,camie,brittny,ashanti,anisha,aleen,adah,yasuko,valrie,tona,tinisha,terisa,taneka,simonne,shalanda,serita,ressie,refugia,olene,margherita,mandie,maire,lyndia,luci,lorriane,loreta,leonia,lavona,lashawnda,lakia,kyoko,krystina,krysten,kenia,kelsi,jeanice,isobel,georgiann,genny,felicidad,eilene,deloise,deedee,conception,clora,cherilyn,calandra,armandina,anisa,tiera,theressa,stephania,sima,shyla,shonta,shera,shaquita,shala,rossana,nohemi,nery,moriah,melita,melida,melani,marylynn,marisha,mariette,malorie,madelene,ludivina,loria,lorette,loralee,lianne,lavenia,laurinda,lashon,kimi,keila,katelynn,jone,joane,jayna,janella,hertha,francene,elinore,despina,delsie,deedra,clemencia,carolin,bulah,brittanie,blondell,bibi,beaulah,beata,annita,agripina,virgen,valene,twanda,tommye,tarra,tari,tammera,shakia,sadye,ruthanne,rochel,rivka,pura,nenita,natisha,ming,merrilee,melodee,marvis,lucilla,leena,laveta,larita,lanie,keren,ileen,georgeann,genna,frida,eufemia,emely,edyth,deonna,deadra,darlena,chanell,cathern,cassondra,cassaundra,bernarda,berna,arlinda,anamaria,vertie,valeri,torri,stasia,sherise,sherill,sanda,ruthe,rosy,robbi,ranee,quyen,pearly,palmira,onita,nisha,niesha,nida,merlyn,mayola,marylouise,marth,margene,madelaine,londa,leontine,leoma,leia,lauralee,lanora,lakita,kiyoko,keturah,katelin,kareen,jonie,johnette,jenee,jeanett,izetta,hiedi,heike,hassie,giuseppina,georgann,fidela,fernande,elwanda,ellamae,eliz,dusti,dotty,cyndy,coralie,celesta,alverta,xenia,wava,vanetta,torrie,tashina,tandy,tambra,tama,stepanie,shila,shaunta,sharan,shaniqua,shae,setsuko,serafina,sandee,rosamaria,priscila,olinda,nadene,muoi,michelina,mercedez,maryrose,marcene,magali,mafalda,lannie,kayce,karoline,kamilah,kamala,justa,joline,jennine,jacquetta,iraida,georgeanna,franchesca,emeline,elane,ehtel,earlie,dulcie,dalene,classie,chere,charis,caroyln,carmina,carita,bethanie,ayako,arica,alysa,alessandra,akilah,adrien,zetta,youlanda,yelena,yahaira,xuan,wendolyn,tijuana,terina,teresia,suzi,sherell,shavonda,shaunte,sharda,shakita,sena,ryann,rubi,riva,reginia,rachal,parthenia,pamula,monnie,monet,michaele,melia,malka,maisha,lisandra,lekisha,lean,lakendra,krystin,kortney,kizzie,kittie,kera,kendal,kemberly,kanisha,julene,jule,johanne,jamee,halley,gidget,fredricka,fleta,fatimah,eusebia,elza,eleonore,dorthey,doria,donella,dinorah,delorse,claretha,christinia,charlyn,bong,belkis,azzie,andera,aiko,adena,yajaira,vania,ulrike,toshia,tifany,stefany,shizue,shenika,shawanna,sharolyn,sharilyn,shaquana,shantay,rozanne,roselee,remona,reanna,raelene,phung,petronila,natacha,nancey,myrl,miyoko,miesha,merideth,marvella,marquitta,marhta,marchelle,lizeth,libbie,lahoma,ladawn,kina,katheleen,katharyn,karisa,kaleigh,junie,julieann,johnsie,janean,jaimee,jackqueline,hisako,herma,helaine,gwyneth,gita,eustolia,emelina,elin,edris,donnette,donnetta,dierdre,denae,darcel,clarisa,cinderella,chia,charlesetta,charita,celsa,cassy,cassi,carlee,bruna,brittaney,brande,billi,antonetta,angla,angelyn,analisa,alane,wenona,wendie,veronique,vannesa,tobie,tempie,sumiko,sulema,somer,sheba,sharice,shanel,shalon,rosio,roselia,renay,rema,reena,ozie,oretha,oralee,ngan,nakesha,milly,marybelle,margrett,maragaret,manie,lurlene,lillia,lieselotte,lavelle,lashaunda,lakeesha,kaycee,kalyn,joya,joette,jenae,janiece,illa,grisel,glayds,genevie,gala,fredda,eleonor,debera,deandrea,corrinne,cordia,contessa,colene,cleotilde,chantay,cecille,beatris,azalee,arlean,ardath,anjelica,anja,alfredia,aleisha,zada,yuonne,xiao,willodean,vennie,vanna,tyisha,tova,torie,tonisha,tilda,tien,sirena,sherril,shanti,shan,senaida,samella,robbyn,renda,reita,phebe,paulita,nobuko,nguyet,neomi,mikaela,melania,maximina,marg,maisie,lynna,lilli,lashaun,lakenya,lael,kirstie,kathline,kasha,karlyn,karima,jovan,josefine,jennell,jacqui,jackelyn,hien,grazyna,florrie,floria,eleonora,dwana,dorla,delmy,deja,dede,dann,crysta,clelia,claris,chieko,cherlyn,cherelle,charmain,chara,cammy,arnette,ardelle,annika,amiee,amee,allena,yvone,yuki,yoshie,yevette,yael,willetta,voncile,venetta,tula,tonette,timika,temika,telma,teisha,taren,stacee,shawnta,saturnina,ricarda,pasty,onie,nubia,marielle,mariella,marianela,mardell,luanna,loise,lisabeth,lindsy,lilliana,lilliam,lelah,leigha,leanora,kristeen,khalilah,keeley,kandra,junko,joaquina,jerlene,jani,jamika,hsiu,hermila,genevive,evia,eugena,emmaline,elfreda,elene,donette,delcie,deeanna,darcey,clarinda,cira,chae,celinda,catheryn,casimira,carmelia,camellia,breana,bobette,bernardina,bebe,basilia,arlyne,amal,alayna,zonia,zenia,yuriko,yaeko,wynell,willena,vernia,tora,terrilyn,terica,tenesha,tawna,tajuana,taina,stephnie,sona,sina,shondra,shizuko,sherlene,sherice,sharika,rossie,rosena,rima,rheba,renna,natalya,nancee,melodi,meda,matha,marketta,maricruz,marcelene,malvina,luba,louetta,leida,lecia,lauran,lashawna,laine,khadijah,katerine,kasi,kallie,julietta,jesusita,jestine,jessia,jeffie,janyce,isadora,georgianne,fidelia,evita,eura,eulah,estefana,elsy,eladia,dodie,denisse,deloras,delila,daysi,crystle,concha,claretta,charlsie,charlena,carylon,bettyann,asley,ashlea,amira,agueda,agnus,yuette,vinita,victorina,tynisha,treena,toccara,tish,thomasena,tegan,soila,shenna,sharmaine,shantae,shandi,saran,sarai,sana,rosette,rolande,regine,otelia,olevia,nicholle,necole,naida,myrta,myesha,mitsue,minta,mertie,margy,mahalia,madalene,loura,lorean,lesha,leonida,lenita,lavone,lashell,lashandra,lamonica,kimbra,katherina,karry,kanesha,jong,jeneva,jaquelyn,gilma,ghislaine,gertrudis,fransisca,fermina,ettie,etsuko,ellan,elidia,edra,dorethea,doreatha,denyse,deetta,daine,cyrstal,corrin,cayla,carlita,camila,burma,bula,buena,barabara,avril,alaine,zana,wilhemina,wanetta,verline,vasiliki,tonita,tisa,teofila,tayna,taunya,tandra,takako,sunni,suanne,sixta,sharell,seema,rosenda,robena,raymonde,pamila,ozell,neida,mistie,micha,merissa,maurita,maryln,maryetta,marcell,malena,makeda,lovetta,lourie,lorrine,lorilee,laurena,lashay,larraine,laree,lacresha,kristle,keva,keira,karole,joie,jinny,jeannetta,jama,heidy,gilberte,gema,faviola,evelynn,enda,elli,ellena,divina,dagny,collene,codi,cindie,chassidy,chasidy,catrice,catherina,cassey,caroll,carlena,candra,calista,bryanna,britteny,beula,bari,audrie,audria,ardelia,annelle,angila,alona,allyn".split(","),surnames:"smith,johnson,williams,jones,brown,davis,miller,wilson,moore,taylor,anderson,jackson,white,harris,martin,thompson,garcia,martinez,robinson,clark,rodriguez,lewis,lee,walker,hall,allen,young,hernandez,king,wright,lopez,hill,green,adams,baker,gonzalez,nelson,carter,mitchell,perez,roberts,turner,phillips,campbell,parker,evans,edwards,collins,stewart,sanchez,morris,rogers,reed,cook,morgan,bell,murphy,bailey,rivera,cooper,richardson,cox,howard,ward,torres,peterson,gray,ramirez,watson,brooks,sanders,price,bennett,wood,barnes,ross,henderson,coleman,jenkins,perry,powell,long,patterson,hughes,flores,washington,butler,simmons,foster,gonzales,bryant,alexander,griffin,diaz,hayes,myers,ford,hamilton,graham,sullivan,wallace,woods,cole,west,owens,reynolds,fisher,ellis,harrison,gibson,mcdonald,cruz,marshall,ortiz,gomez,murray,freeman,wells,webb,simpson,stevens,tucker,porter,hicks,crawford,boyd,mason,morales,kennedy,warren,dixon,ramos,reyes,burns,gordon,shaw,holmes,rice,robertson,hunt,black,daniels,palmer,mills,nichols,grant,knight,ferguson,stone,hawkins,dunn,perkins,hudson,spencer,gardner,stephens,payne,pierce,berry,matthews,arnold,wagner,willis,watkins,olson,carroll,duncan,snyder,hart,cunningham,lane,andrews,ruiz,harper,fox,riley,armstrong,carpenter,weaver,greene,elliott,chavez,sims,peters,kelley,franklin,lawson,fields,gutierrez,schmidt,carr,vasquez,castillo,wheeler,chapman,montgomery,richards,williamson,johnston,banks,meyer,bishop,mccoy,howell,alvarez,morrison,hansen,fernandez,garza,harvey,burton,nguyen,jacobs,reid,fuller,lynch,garrett,romero,welch,larson,frazier,burke,hanson,mendoza,moreno,bowman,medina,fowler,brewer,hoffman,carlson,silva,pearson,holland,fleming,jensen,vargas,byrd,davidson,hopkins,herrera,wade,soto,walters,neal,caldwell,lowe,jennings,barnett,graves,jimenez,horton,shelton,barrett,obrien,castro,sutton,mckinney,lucas,miles,rodriquez,chambers,holt,lambert,fletcher,watts,bates,hale,rhodes,pena,beck,newman,haynes,mcdaniel,mendez,bush,vaughn,parks,dawson,santiago,norris,hardy,steele,curry,powers,schultz,barker,guzman,page,munoz,ball,keller,chandler,weber,walsh,lyons,ramsey,wolfe,schneider,mullins,benson,sharp,bowen,barber,cummings,hines,baldwin,griffith,valdez,hubbard,salazar,reeves,warner,stevenson,burgess,santos,tate,cross,garner,mann,mack,moss,thornton,mcgee,farmer,delgado,aguilar,vega,glover,manning,cohen,harmon,rodgers,robbins,newton,blair,higgins,ingram,reese,cannon,strickland,townsend,potter,goodwin,walton,rowe,hampton,ortega,patton,swanson,goodman,maldonado,yates,becker,erickson,hodges,rios,conner,adkins,webster,malone,hammond,flowers,cobb,moody,quinn,pope,osborne,mccarthy,guerrero,estrada,sandoval,gibbs,gross,fitzgerald,stokes,doyle,saunders,wise,colon,gill,alvarado,greer,padilla,waters,nunez,ballard,schwartz,mcbride,houston,christensen,klein,pratt,briggs,parsons,mclaughlin,zimmerman,buchanan,moran,copeland,pittman,brady,mccormick,holloway,brock,poole,logan,bass,marsh,drake,wong,jefferson,morton,abbott,sparks,norton,huff,massey,figueroa,carson,bowers,roberson,barton,tran,lamb,harrington,boone,cortez,clarke,mathis,singleton,wilkins,cain,underwood,hogan,mckenzie,collier,luna,phelps,mcguire,bridges,wilkerson,nash,summers,atkins,wilcox,pitts,conley,marquez,burnett,cochran,chase,davenport,hood,gates,ayala,sawyer,vazquez,dickerson,hodge,acosta,flynn,espinoza,nicholson,monroe,wolf,morrow,whitaker,oconnor,skinner,ware,molina,kirby,huffman,gilmore,dominguez,oneal,lang,combs,kramer,hancock,gallagher,gaines,shaffer,wiggins,mathews,mcclain,fischer,wall,melton,hensley,bond,dyer,grimes,contreras,wyatt,baxter,snow,mosley,shepherd,larsen,hoover,beasley,petersen,whitehead,meyers,garrison,shields,horn,savage,olsen,schroeder,hartman,woodard,mueller,kemp,deleon,booth,patel,calhoun,wiley,eaton,cline,navarro,harrell,humphrey,parrish,duran,hutchinson,hess,dorsey,bullock,robles,beard,dalton,avila,rich,blackwell,johns,blankenship,trevino,salinas,campos,pruitt,callahan,montoya,hardin,guerra,mcdowell,stafford,gallegos,henson,wilkinson,booker,merritt,atkinson,orr,decker,hobbs,tanner,knox,pacheco,stephenson,glass,rojas,serrano,marks,hickman,sweeney,strong,mcclure,conway,roth,maynard,farrell,lowery,hurst,nixon,weiss,trujillo,ellison,sloan,juarez,winters,mclean,boyer,villarreal,mccall,gentry,carrillo,ayers,lara,sexton,pace,hull,leblanc,browning,velasquez,leach,chang,sellers,herring,noble,foley,bartlett,mercado,landry,durham,walls,barr,mckee,bauer,rivers,bradshaw,pugh,velez,rush,estes,dodson,morse,sheppard,weeks,camacho,bean,barron,livingston,middleton,spears,branch,blevins,chen,kerr,mcconnell,hatfield,harding,solis,frost,giles,blackburn,pennington,woodward,finley,mcintosh,koch,mccullough,blanchard,rivas,brennan,mejia,kane,benton,buckley,valentine,maddox,russo,mcknight,buck,moon,mcmillan,crosby,berg,dotson,mays,roach,chan,richmond,meadows,faulkner,oneill,knapp,kline,ochoa,jacobson,gay,hendricks,horne,shepard,hebert,cardenas,mcintyre,waller,holman,donaldson,cantu,morin,gillespie,fuentes,tillman,bentley,peck,key,salas,rollins,gamble,dickson,santana,cabrera,cervantes,howe,hinton,hurley,spence,zamora,yang,mcneil,suarez,petty,gould,mcfarland,sampson,carver,bray,macdonald,stout,hester,melendez,dillon,farley,hopper,galloway,potts,joyner,stein,aguirre,osborn,mercer,bender,franco,rowland,sykes,pickett,sears,mayo,dunlap,hayden,wilder,mckay,coffey,mccarty,ewing,cooley,vaughan,bonner,cotton,holder,stark,ferrell,cantrell,fulton,lott,calderon,pollard,hooper,burch,mullen,fry,riddle,levy,duke,odonnell,britt,daugherty,berger,dillard,alston,frye,riggs,chaney,odom,duffy,fitzpatrick,valenzuela,mayer,alford,mcpherson,acevedo,barrera,cote,reilly,compton,mooney,mcgowan,craft,clemons,wynn,nielsen,baird,stanton,snider,rosales,bright,witt,hays,holden,rutledge,kinney,clements,castaneda,slater,hahn,burks,delaney,pate,lancaster,sharpe,whitfield,talley,macias,burris,ratliff,mccray,madden,kaufman,beach,goff,cash,bolton,mcfadden,levine,byers,kirkland,kidd,workman,carney,mcleod,holcomb,finch,sosa,haney,franks,sargent,nieves,downs,rasmussen,bird,hewitt,foreman,valencia,oneil,delacruz,vinson,dejesus,hyde,forbes,gilliam,guthrie,wooten,huber,barlow,boyle,mcmahon,buckner,rocha,puckett,langley,knowles,cooke,velazquez,whitley,vang,shea,rouse,hartley,mayfield,elder,rankin,hanna,cowan,lucero,arroyo,slaughter,haas,oconnell,minor,boucher,archer,boggs,dougherty,andersen,newell,crowe,wang,friedman,bland,swain,holley,pearce,childs,yarbrough,galvan,proctor,meeks,lozano,mora,rangel,bacon,villanueva,schaefer,rosado,helms,boyce,goss,stinson,ibarra,hutchins,covington,crowley,hatcher,mackey,bunch,womack,polk,dodd,childress,childers,villa,springer,mahoney,dailey,belcher,lockhart,griggs,costa,brandt,walden,moser,tatum,mccann,akers,lutz,pryor,orozco,mcallister,lugo,davies,shoemaker,rutherford,newsome,magee,chamberlain,blanton,simms,godfrey,flanagan,crum,cordova,escobar,downing,sinclair,donahue,krueger,mcginnis,gore,farris,webber,corbett,andrade,starr,lyon,yoder,hastings,mcgrath,spivey,krause,harden,crabtree,kirkpatrick,arrington,ritter,mcghee,bolden,maloney,gagnon,dunbar,ponce,pike,mayes,beatty,mobley,kimball,butts,montes,eldridge,braun,hamm,gibbons,moyer,manley,herron,plummer,elmore,cramer,rucker,pierson,fontenot,rubio,goldstein,elkins,wills,novak,hickey,worley,gorman,katz,dickinson,broussard,woodruff,crow,britton,nance,lehman,bingham,zuniga,whaley,shafer,coffman,steward,delarosa,neely,mata,davila,mccabe,kessler,hinkle,welsh,pagan,goldberg,goins,crouch,cuevas,quinones,mcdermott,hendrickson,samuels,denton,bergeron,ivey,locke,haines,snell,hoskins,byrne,arias,corbin,beltran,chappell,downey,dooley,tuttle,couch,payton,mcelroy,crockett,groves,cartwright,dickey,mcgill,dubois,muniz,tolbert,dempsey,cisneros,sewell,latham,vigil,tapia,rainey,norwood,stroud,meade,tipton,kuhn,hilliard,bonilla,teague,gunn,greenwood,correa,reece,pineda,phipps,frey,kaiser,ames,gunter,schmitt,milligan,espinosa,bowden,vickers,lowry,pritchard,costello,piper,mcclellan,lovell,sheehan,hatch,dobson,singh,jeffries,hollingsworth,sorensen,meza,fink,donnelly,burrell,tomlinson,colbert,billings,ritchie,helton,sutherland,peoples,mcqueen,thomason,givens,crocker,vogel,robison,dunham,coker,swartz,keys,ladner,richter,hargrove,edmonds,brantley,albright,murdock,boswell,muller,quintero,padgett,kenney,daly,connolly,inman,quintana,lund,barnard,villegas,simons,huggins,tidwell,sanderson,bullard,mcclendon,duarte,draper,marrero,dwyer,abrams,stover,goode,fraser,crews,bernal,godwin,conklin,mcneal,baca,esparza,crowder,bower,brewster,mcneill,rodrigues,leal,coates,raines,mccain,mccord,miner,holbrook,swift,dukes,carlisle,aldridge,ackerman,starks,ricks,holliday,ferris,hairston,sheffield,lange,fountain,doss,betts,kaplan,carmichael,bloom,ruffin,penn,kern,bowles,sizemore,larkin,dupree,seals,metcalf,hutchison,henley,farr,mccauley,hankins,gustafson,curran,waddell,ramey,cates,pollock,cummins,messer,heller,funk,cornett,palacios,galindo,cano,hathaway,pham,enriquez,salgado,pelletier,painter,wiseman,blount,feliciano,houser,doherty,mead,mcgraw,swan,capps,blanco,blackmon,thomson,mcmanus,burkett,gleason,dickens,cormier,voss,rushing,rosenberg,hurd,dumas,benitez,arellano,marin,caudill,bragg,jaramillo,huerta,gipson,colvin,biggs,vela,platt,cassidy,tompkins,mccollum,dolan,daley,crump,sneed,kilgore,grove,grimm,davison,brunson,prater,marcum,devine,dodge,stratton,rosas,choi,tripp,ledbetter,hightower,feldman,epps,yeager,posey,scruggs,cope,stubbs,richey,overton,trotter,sprague,cordero,butcher,stiles,burgos,woodson,horner,bassett,purcell,haskins,akins,ziegler,spaulding,hadley,grubbs,sumner,murillo,zavala,shook,lockwood,driscoll,dahl,thorpe,redmond,putnam,mcwilliams,mcrae,romano,joiner,sadler,hedrick,hager,hagen,fitch,coulter,thacker,mansfield,langston,guidry,ferreira,corley,conn,rossi,lackey,baez,saenz,mcnamara,mcmullen,mckenna,mcdonough,link,engel,browne,roper,peacock,eubanks,drummond,stringer,pritchett,parham,mims,landers,grayson,schafer,egan,timmons,ohara,keen,hamlin,finn,cortes,mcnair,nadeau,moseley,michaud,rosen,oakes,kurtz,jeffers,calloway,beal,bautista,winn,suggs,stern,stapleton,lyles,laird,montano,dawkins,hagan,goldman,bryson,barajas,lovett,segura,metz,lockett,langford,hinson,eastman,hooks,smallwood,shapiro,crowell,whalen,triplett,chatman,aldrich,cahill,youngblood,ybarra,stallings,sheets,reeder,connelly,bateman,abernathy,winkler,wilkes,masters,hackett,granger,gillis,schmitz,sapp,napier,souza,lanier,gomes,weir,otero,ledford,burroughs,babcock,ventura,siegel,dugan,bledsoe,atwood,wray,varner,spangler,anaya,staley,kraft,fournier,belanger,wolff,thorne,bynum,burnette,boykin,swenson,purvis,pina,khan,duvall,darby,xiong,kauffman,healy,engle,benoit,valle,steiner,spicer,shaver,randle,lundy,chin,calvert,staton,neff,kearney,darden,oakley,medeiros,mccracken,crenshaw,perdue,dill,whittaker,tobin,washburn,hogue,goodrich,easley,bravo,dennison,shipley,kerns,jorgensen,crain,villalobos,maurer,longoria,keene,coon,witherspoon,staples,pettit,kincaid,eason,madrid,echols,lusk,stahl,currie,thayer,shultz,mcnally,seay,maher,gagne,barrow,nava,moreland,honeycutt,hearn,diggs,caron,whitten,westbrook,stovall,ragland,munson,meier,looney,kimble,jolly,hobson,goddard,culver,burr,presley,negron,connell,tovar,huddleston,ashby,salter,root,pendleton,oleary,nickerson,myrick,judd,jacobsen,bain,adair,starnes,matos,busby,herndon,hanley,bellamy,doty,bartley,yazzie,rowell,parson,gifford,cullen,christiansen,benavides,barnhart,talbot,mock,crandall,connors,bonds,whitt,gage,bergman,arredondo,addison,lujan,dowdy,jernigan,huynh,bouchard,dutton,rhoades,ouellette,kiser,herrington,hare,blackman,babb,allred,rudd,paulson,ogden,koenig,geiger,begay,parra,lassiter,hawk,esposito,waldron,ransom,prather,chacon,vick,sands,roark,parr,mayberry,greenberg,coley,bruner,whitman,skaggs,shipman,leary,hutton,romo,medrano,ladd,kruse,askew,schulz,alfaro,tabor,mohr,gallo,bermudez,pereira,bliss,reaves,flint,comer,woodall,naquin,guevara,delong,carrier,pickens,tilley,schaffer,knutson,fenton,doran,vogt,vann,prescott,mclain,landis,corcoran,zapata,hyatt,hemphill,faulk,dove,boudreaux,aragon,whitlock,trejo,tackett,shearer,saldana,hanks,mckinnon,koehler,bourgeois,keyes,goodson,foote,lunsford,goldsmith,flood,winslow,sams,reagan,mccloud,hough,esquivel,naylor,loomis,coronado,ludwig,braswell,bearden,huang,fagan,ezell,edmondson,cronin,nunn,lemon,guillory,grier,dubose,traylor,ryder,dobbins,coyle,aponte,whitmore,smalls,rowan,malloy,cardona,braxton,borden,humphries,carrasco,ruff,metzger,huntley,hinojosa,finney,madsen,ernst,dozier,burkhart,bowser,peralta,daigle,whittington,sorenson,saucedo,roche,redding,fugate,avalos,waite,lind,huston,hawthorne,hamby,boyles,boles,regan,faust,crook,beam,barger,hinds,gallardo,willoughby,willingham,eckert,busch,zepeda,worthington,tinsley,hoff,hawley,carmona,varela,rector,newcomb,kinsey,dube,whatley,ragsdale,bernstein,becerra,yost,mattson,felder,cheek,handy,grossman,gauthier,escobedo,braden,beckman,mott,hillman,flaherty,dykes,stockton,stearns,lofton,coats,cavazos,beavers,barrios,tang,mosher,cardwell,coles,burnham,weller,lemons,beebe,aguilera,parnell,harman,couture,alley,schumacher,redd,dobbs,blum,blalock,merchant,ennis,denson,cottrell,brannon,bagley,aviles,watt,sousa,rosenthal,rooney,dietz,blank,paquette,mcclelland,duff,velasco,lentz,grubb,burrows,barbour,ulrich,shockley,rader,beyer,mixon,layton,altman,weathers,stoner,squires,shipp,priest,lipscomb,cutler,caballero,zimmer,willett,thurston,storey,medley,epperson,shah,mcmillian,baggett,torrez,hirsch,dent,poirier,peachey,farrar,creech,barth,trimble,dupre,albrecht,sample,lawler,crisp,conroy,wetzel,nesbitt,murry,jameson,wilhelm,patten,minton,matson,kimbrough,guinn,croft,toth,pulliam,nugent,newby,littlejohn,dias,canales,bernier,baron,singletary,renteria,pruett,mchugh,mabry,landrum,brower,stoddard,cagle,stjohn,scales,kohler,kellogg,hopson,gant,tharp,gann,zeigler,pringle,hammons,fairchild,deaton,chavis,carnes,rowley,matlock,kearns,irizarry,carrington,starkey,lopes,jarrell,craven,baum,littlefield,linn,humphreys,etheridge,cuellar,chastain,bundy,speer,skelton,quiroz,pyle,portillo,ponder,moulton,machado,killian,hutson,hitchcock,dowling,cloud,burdick,spann,pedersen,levin,leggett,hayward,dietrich,beaulieu,barksdale,wakefield,snowden,briscoe,bowie,berman,ogle,mcgregor,laughlin,helm,burden,wheatley,schreiber,pressley,parris,alaniz,agee,swann,snodgrass,schuster,radford,monk,mattingly,harp,girard,cheney,yancey,wagoner,ridley,lombardo,hudgins,gaskins,duckworth,coburn,willey,prado,newberry,magana,hammonds,elam,whipple,slade,serna,ojeda,liles,dorman,diehl,upton,reardon,michaels,goetz,eller,bauman,baer,layne,hummel,brenner,amaya,adamson,ornelas,dowell,cloutier,castellanos,wellman,saylor,orourke,moya,montalvo,kilpatrick,durbin,shell,oldham,kang,garvin,foss,branham,bartholomew,templeton,maguire,holton,rider,monahan,mccormack,beaty,anders,streeter,nieto,nielson,moffett,lankford,keating,heck,gatlin,delatorre,callaway,adcock,worrell,unger,robinette,nowak,jeter,brunner,steen,parrott,overstreet,nobles,montanez,clevenger,brinkley,trahan,quarles,pickering,pederson,jansen,grantham,gilchrist,crespo,aiken,schell,schaeffer,lorenz,leyva,harms,dyson,wallis,pease,leavitt,cheng,cavanaugh,batts,warden,seaman,rockwell,quezada,paxton,linder,houck,fontaine,durant,caruso,adler,pimentel,mize,lytle,cleary,cason,acker,switzer,isaacs,higginbotham,waterman,vandyke,stamper,sisk,shuler,riddick,mcmahan,levesque,hatton,bronson,bollinger,arnett,okeefe,gerber,gannon,farnsworth,baughman,silverman,satterfield,mccrary,kowalski,grigsby,greco,cabral,trout,rinehart,mahon,linton,gooden,curley,baugh,wyman,weiner,schwab,schuler,morrissey,mahan,bunn,thrasher,spear,waggoner,qualls,purdy,mcwhorter,mauldin,gilman,perryman,newsom,menard,martino,graf,billingsley,artis,simpkins,salisbury,quintanilla,gilliland,fraley,foust,crouse,scarborough,grissom,fultz,marlow,markham,madrigal,lawton,barfield,whiting,varney,schwarz,gooch,arce,wheat,truong,poulin,hurtado,selby,gaither,fortner,culpepper,coughlin,brinson,boudreau,bales,stepp,holm,schilling,morrell,kahn,heaton,gamez,causey,turpin,shanks,schrader,meek,isom,hardison,carranza,yanez,scroggins,schofield,runyon,ratcliff,murrell,moeller,irby,currier,butterfield,ralston,pullen,pinson,estep,carbone,hawks,ellington,casillas,spurlock,sikes,motley,mccartney,kruger,isbell,houle,burk,tomlin,quigley,neumann,lovelace,fennell,cheatham,bustamante,skidmore,hidalgo,forman,culp,bowens,betancourt,aquino,robb,milner,martel,gresham,wiles,ricketts,dowd,collazo,bostic,blakely,sherrod,kenyon,gandy,ebert,deloach,allard,sauer,robins,olivares,gillette,chestnut,bourque,paine,hite,hauser,devore,crawley,chapa,talbert,poindexter,meador,mcduffie,mattox,kraus,harkins,choate,wren,sledge,sanborn,kinder,geary,cornwell,barclay,abney,seward,rhoads,howland,fortier,benner,vines,tubbs,troutman,rapp,mccurdy,deluca,westmoreland,havens,guajardo,clary,seal,meehan,herzog,guillen,ashcraft,waugh,renner,milam,elrod,churchill,breaux,bolin,asher,windham,tirado,pemberton,nolen,noland,knott,emmons,cornish,christenson,brownlee,barbee,waldrop,pitt,olvera,lombardi,gruber,gaffney,eggleston,banda,archuleta,slone,prewitt,pfeiffer,nettles,mena,mcadams,henning,gardiner,cromwell,chisholm,burleson,vest,oglesby,mccarter,lumpkin,wofford,vanhorn,thorn,teel,swafford,stclair,stanfield,ocampo,herrmann,hannon,arsenault,roush,mcalister,hiatt,gunderson,forsythe,duggan,delvalle,cintron,wilks,weinstein,uribe,rizzo,noyes,mclendon,gurley,bethea,winstead,maples,guyton,giordano,alderman,valdes,polanco,pappas,lively,grogan,griffiths,bobo,arevalo,whitson,sowell,rendon,fernandes,farrow,benavidez,ayres,alicea,stump,smalley,seitz,schulte,gilley,gallant,canfield,wolford,omalley,mcnutt,mcnulty,mcgovern,hardman,harbin,cowart,chavarria,brink,beckett,bagwell,armstead,anglin,abreu,reynoso,krebs,jett,hoffmann,greenfield,forte,burney,broome,sisson,trammell,partridge,mace,lomax,lemieux,gossett,frantz,fogle,cooney,broughton,pence,paulsen,muncy,mcarthur,hollins,beauchamp,withers,osorio,mulligan,hoyle,dockery,cockrell,begley,amador,roby,rains,lindquist,gentile,everhart,bohannon,wylie,sommers,purnell,fortin,dunning,breeden,vail,phelan,phan,marx,cosby,colburn,boling,biddle,ledesma,gaddis,denney,chow,bueno,berrios,wicker,tolliver,thibodeaux,nagle,lavoie,fisk,crist,barbosa,reedy,locklear,kolb,himes,behrens,beckwith,weems,wahl,shorter,shackelford,rees,muse,cerda,valadez,thibodeau,saavedra,ridgeway,reiter,mchenry,majors,lachance,keaton,ferrara,clemens,blocker,applegate,needham,mojica,kuykendall,hamel,escamilla,doughty,burchett,ainsworth,vidal,upchurch,thigpen,strauss,spruill,sowers,riggins,ricker,mccombs,harlow,buffington,sotelo,olivas,negrete,morey,macon,logsdon,lapointe,bigelow,bello,westfall,stubblefield,lindley,hein,hawes,farrington,breen,birch,wilde,steed,sepulveda,reinhardt,proffitt,minter,messina,mcnabb,maier,keeler,gamboa,donohue,basham,shinn,crooks,cota,borders,bills,bachman,tisdale,tavares,schmid,pickard,gulley,fonseca,delossantos,condon,batista,wicks,wadsworth,martell,littleton,ison,haag,folsom,brumfield,broyles,brito,mireles,mcdonnell,leclair,hamblin,gough,fanning,binder,winfield,whitworth,soriano,palumbo,newkirk,mangum,hutcherson,comstock,carlin,beall,bair,wendt,watters,walling,putman,otoole,morley,mares,lemus,keener,hundley,dial,damico,billups,strother,mcfarlane,lamm,eaves,crutcher,caraballo,canty,atwell,taft,siler,rust,rawls,rawlings,prieto,mcneely,mcafee,hulsey,hackney,galvez,escalante,delagarza,crider,bandy,wilbanks,stowe,steinberg,renfro,masterson,massie,lanham,haskell,hamrick,dehart,burdette,branson,bourne,babin,aleman,worthy,tibbs,smoot,slack,paradis,mull,luce,houghton,gantt,furman,danner,christianson,burge,ashford,arndt,almeida,stallworth,shade,searcy,sager,noonan,mclemore,mcintire,maxey,lavigne,jobe,ferrer,falk,coffin,byrnes,aranda,apodaca,stamps,rounds,peek,olmstead,lewandowski,kaminski,dunaway,bruns,brackett,amato,reich,mcclung,lacroix,koontz,herrick,hardesty,flanders,cousins,cato,cade,vickery,shank,nagel,dupuis,croteau,cotter,stuckey,stine,porterfield,pauley,moffitt,knudsen,hardwick,goforth,dupont,blunt,barrows,barnhill,shull,rash,loftis,lemay,kitchens,horvath,grenier,fuchs,fairbanks,culbertson,calkins,burnside,beattie,ashworth,albertson,wertz,vaught,vallejo,turk,tuck,tijerina,sage,peterman,marroquin,marr,lantz,hoang,demarco,cone,berube,barnette,wharton,stinnett,slocum,scanlon,sander,pinto,mancuso,lima,headley,epstein,counts,clarkson,carnahan,boren,arteaga,adame,zook,whittle,whitehurst,wenzel,saxton,reddick,puente,handley,haggerty,earley,devlin,chaffin,cady,acuna,solano,sigler,pollack,pendergrass,ostrander,janes,francois,crutchfield,chamberlin,brubaker,baptiste,willson,reis,neeley,mullin,mercier,lira,layman,keeling,higdon,espinal,chapin,warfield,toledo,pulido,peebles,nagy,montague,mello,lear,jaeger,hogg,graff,furr,soliz,poore,mendenhall,mclaurin,maestas,gable,barraza,tillery,snead,pond,neill,mcculloch,mccorkle,lightfoot,hutchings,holloman,harness,dorn,bock,zielinski,turley,treadwell,stpierre,starling,somers,oswald,merrick,easterling,bivens,truitt,poston,parry,ontiveros,olivarez,moreau,medlin,lenz,knowlton,fairley,cobbs,chisolm,bannister,woodworth,toler,ocasio,noriega,neuman,moye,milburn,mcclanahan,lilley,hanes,flannery,dellinger,danielson,conti,blodgett,beers,weatherford,strain,karr,hitt,denham,custer,coble,clough,casteel,bolduc,batchelor,ammons,whitlow,tierney,staten,sibley,seifert,schubert,salcedo,mattison,laney,haggard,grooms,dees,cromer,cooks,colson,caswell,zarate,swisher,shin,ragan,pridgen,mcvey,matheny,lafleur,franz,ferraro,dugger,whiteside,rigsby,mcmurray,lehmann,jacoby,hildebrand,hendrick,headrick,goad,fincher,drury,borges,archibald,albers,woodcock,trapp,soares,seaton,monson,luckett,lindberg,kopp,keeton,healey,garvey,gaddy,fain,burchfield,wentworth,strand,stack,spooner,saucier,ricci,plunkett,pannell,ness,leger,freitas,fong,elizondo,duval,beaudoin,urbina,rickard,partin,mcgrew,mcclintock,ledoux,forsyth,faison,devries,bertrand,wasson,tilton,scarbrough,leung,irvine,garber,denning,corral,colley,castleberry,bowlin,bogan,beale,baines,trice,rayburn,parkinson,nunes,mcmillen,leahy,kimmel,higgs,fulmer,carden,bedford,taggart,spearman,prichard,morrill,koonce,heinz,hedges,guenther,grice,findley,dover,creighton,boothe,bayer,arreola,vitale,valles,raney,osgood,hanlon,burley,bounds,worden,weatherly,vetter,tanaka,stiltner,nevarez,mosby,montero,melancon,harter,hamer,goble,gladden,gist,ginn,akin,zaragoza,tarver,sammons,royster,oreilly,muir,morehead,luster,kingsley,kelso,grisham,glynn,baumann,alves,yount,tamayo,paterson,oates,menendez,longo,hargis,gillen,desantis,conover,breedlove,sumpter,scherer,rupp,reichert,heredia,creel,cohn,clemmons,casas,bickford,belton,bach,williford,whitcomb,tennant,sutter,stull,mccallum,langlois,keel,keegan,dangelo,dancy,damron,clapp,clanton,bankston,oliveira,mintz,mcinnis,martens,mabe,laster,jolley,hildreth,hefner,glaser,duckett,demers,brockman,blais,alcorn,agnew,toliver,tice,seeley,najera,musser,mcfall,laplante,galvin,fajardo,doan,coyne,copley,clawson,cheung,barone,wynne,woodley,tremblay,stoll,sparrow,sparkman,schweitzer,sasser,samples,roney,legg,heim,farias,colwell,christman,bratcher,winchester,upshaw,southerland,sorrell,sells,mccloskey,martindale,luttrell,loveless,lovejoy,linares,latimer,embry,coombs,bratton,bostick,venable,tuggle,toro,staggs,sandlin,jefferies,heckman,griffis,crayton,clem,browder,thorton,sturgill,sprouse,royer,rousseau,ridenour,pogue,perales,peeples,metzler,mesa,mccutcheon,mcbee,hornsby,heffner,corrigan,armijo,plante,peyton,paredes,macklin,hussey,hodgson,granados,frias,becnel,batten,almanza,turney,teal,sturgeon,meeker,mcdaniels,limon,keeney,hutto,holguin,gorham,fishman,fierro,blanchette,rodrigue,reddy,osburn,oden,lerma,kirkwood,keefer,haugen,hammett,chalmers,brinkman,baumgartner,zhang,valerio,tellez,steffen,shumate,sauls,ripley,kemper,guffey,evers,craddock,carvalho,blaylock,banuelos,balderas,wheaton,turnbull,shuman,pointer,mosier,mccue,ligon,kozlowski,johansen,ingle,herr,briones,snipes,rickman,pipkin,pantoja,orosco,moniz,lawless,kunkel,hibbard,galarza,enos,bussey,schott,salcido,perreault,mcdougal,mccool,haight,garris,easton,conyers,atherton,wimberly,utley,spellman,smithson,slagle,ritchey,rand,petit,osullivan,oaks,nutt,mcvay,mccreary,mayhew,knoll,jewett,harwood,cardoza,ashe,arriaga,zeller,wirth,whitmire,stauffer,rountree,redden,mccaffrey,martz,larose,langdon,humes,gaskin,faber,devito,cass,almond,wingfield,wingate,villareal,tyner,smothers,severson,reno,pennell,maupin,leighton,janssen,hassell,hallman,halcomb,folse,fitzsimmons,fahey,cranford,bolen,battles,battaglia,wooldridge,trask,rosser,regalado,mcewen,keefe,fuqua,echevarria,caro,boynton,andrus,viera,vanmeter,taber,spradlin,seibert,provost,prentice,oliphant,laporte,hwang,hatchett,hass,greiner,freedman,covert,chilton,byars,wiese,venegas,swank,shrader,roberge,mullis,mortensen,mccune,marlowe,kirchner,keck,isaacson,hostetler,halverson,gunther,griswold,fenner,durden,blackwood,ahrens,sawyers,savoy,nabors,mcswain,mackay,lavender,lash,labbe,jessup,fullerton,cruse,crittenden,correia,centeno,caudle,canady,callender,alarcon,ahern,winfrey,tribble,salley,roden,musgrove,minnick,fortenberry,carrion,bunting,batiste,whited,underhill,stillwell,rauch,pippin,perrin,messenger,mancini,lister,kinard,hartmann,fleck,wilt,treadway,thornhill,spalding,rafferty,pitre,patino,ordonez,linkous,kelleher,homan,galbraith,feeney,curtin,coward,camarillo,buss,bunnell,bolt,beeler,autry,alcala,witte,wentz,stidham,shively,nunley,meacham,martins,lemke,lefebvre,hynes,horowitz,hoppe,holcombe,dunne,derr,cochrane,brittain,bedard,beauregard,torrence,strunk,soria,simonson,shumaker,scoggins,oconner,moriarty,kuntz,ives,hutcheson,horan,hales,garmon,fitts,bohn,atchison,wisniewski,vanwinkle,sturm,sallee,prosser,moen,lundberg,kunz,kohl,keane,jorgenson,jaynes,funderburk,freed,durr,creamer,cosgrove,batson,vanhoose,thomsen,teeter,smyth,redmon,orellana,maness,heflin,goulet,frick,forney,bunker,asbury,aguiar,talbott,southard,mowery,mears,lemmon,krieger,hickson,elston,duong,delgadillo,dayton,dasilva,conaway,catron,bruton,bradbury,bordelon,bivins,bittner,bergstrom,beals,abell,whelan,tejada,pulley,pino,norfleet,nealy,maes,loper,gatewood,frierson,freund,finnegan,cupp,covey,catalano,boehm,bader,yoon,walston,tenney,sipes,rawlins,medlock,mccaskill,mccallister,marcotte,maclean,hughey,henke,harwell,gladney,gilson,chism,caskey,brandenburg,baylor,villasenor,veal,thatcher,stegall,petrie,nowlin,navarrete,lombard,loftin,lemaster,kroll,kovach,kimbrell,kidwell,hershberger,fulcher,cantwell,bustos,boland,bobbitt,binkley,wester,weis,verdin,tong,tiller,sisco,sharkey,seymore,rosenbaum,rohr,quinonez,pinkston,malley,logue,lessard,lerner,lebron,krauss,klinger,halstead,haller,getz,burrow,alger,shores,pfeifer,perron,nelms,munn,mcmaster,mckenney,manns,knudson,hutchens,huskey,goebel,flagg,cushman,click,castellano,carder,bumgarner,wampler,spinks,robson,neel,mcreynolds,mathias,maas,loera,jenson,florez,coons,buckingham,brogan,berryman,wilmoth,wilhite,thrash,shephard,seidel,schulze,roldan,pettis,obryan,maki,mackie,hatley,frazer,fiore,chesser,bottoms,bisson,benefield,allman,wilke,trudeau,timm,shifflett,mundy,milliken,mayers,leake,kohn,huntington,horsley,hermann,guerin,fryer,frizzell,foret,flemming,fife,criswell,carbajal,bozeman,boisvert,angulo,wallen,tapp,silvers,ramsay,oshea,orta,moll,mckeever,mcgehee,linville,kiefer,ketchum,howerton,groce,gass,fusco,corbitt,betz,bartels,amaral,aiello,weddle,sperry,seiler,runyan,raley,overby,osteen,olds,mckeown,matney,lauer,lattimore,hindman,hartwell,fredrickson,fredericks,espino,clegg,carswell,cambell,burkholder,woodbury,welker,totten,thornburg,theriault,stitt,stamm,stackhouse,scholl,saxon,rife,razo,quinlan,pinkerton,olivo,nesmith,nall,mattos,lafferty,justus,giron,geer,fielder,drayton,dortch,conners,conger,boatwright,billiot,barden,armenta,tibbetts,steadman,slattery,rinaldi,raynor,pinckney,pettigrew,milne,matteson,halsey,gonsalves,fellows,durand,desimone,cowley,cowles,brill,barham,barela,barba,ashmore,withrow,valenti,tejeda,spriggs,sayre,salerno,peltier,peel,merriman,matheson,lowman,lindstrom,hyland,giroux,earls,dugas,dabney,collado,briseno,baxley,whyte,wenger,vanover,vanburen,thiel,schindler,schiller,rigby,pomeroy,passmore,marble,manzo,mahaffey,lindgren,laflamme,greathouse,fite,calabrese,bayne,yamamoto,wick,townes,thames,reinhart,peeler,naranjo,montez,mcdade,mast,markley,marchand,leeper,kellum,hudgens,hennessey,hadden,gainey,coppola,borrego,bolling,beane,ault,slaton,pape,null,mulkey,lightner,langer,hillard,ethridge,enright,derosa,baskin,weinberg,turman,somerville,pardo,noll,lashley,ingraham,hiller,hendon,glaze,cothran,cooksey,conte,carrico,abner,wooley,swope,summerlin,sturgis,sturdivant,stott,spurgeon,spillman,speight,roussel,popp,nutter,mckeon,mazza,magnuson,lanning,kozak,jankowski,heyward,forster,corwin,callaghan,bays,wortham,usher,theriot,sayers,sabo,poling,loya,lieberman,laroche,labelle,howes,harr,garay,fogarty,everson,durkin,dominquez,chaves,chambliss,witcher,vieira,vandiver,terrill,stoker,schreiner,moorman,liddell,lawhorn,krug,irons,hylton,hollenbeck,herrin,hembree,goolsby,goodin,gilmer,foltz,dinkins,daughtry,caban,brim,briley,bilodeau,wyant,vergara,tallent,swearingen,stroup,scribner,quillen,pitman,mccants,maxfield,martinson,holtz,flournoy,brookins,brody,baumgardner,straub,sills,roybal,roundtree,oswalt,mcgriff,mcdougall,mccleary,maggard,gragg,gooding,godinez,doolittle,donato,cowell,cassell,bracken,appel,zambrano,reuter,perea,nakamura,monaghan,mickens,mcclinton,mcclary,marler,kish,judkins,gilbreath,freese,flanigan,felts,erdmann,dodds,chew,brownell,boatright,barreto,slayton,sandberg,saldivar,pettway,odum,narvaez,moultrie,montemayor,merrell,lees,keyser,hoke,hardaway,hannan,gilbertson,fogg,dumont,deberry,coggins,buxton,bucher,broadnax,beeson,araujo,appleton,amundson,aguayo,ackley,yocum,worsham,shivers,sanches,sacco,robey,rhoden,pender,ochs,mccurry,madera,luong,knotts,jackman,heinrich,hargrave,gault,comeaux,chitwood,caraway,boettcher,bernhardt,barrientos,zink,wickham,whiteman,thorp,stillman,settles,schoonover,roque,riddell,pilcher,phifer,novotny,macleod,hardee,haase,grider,doucette,clausen,bevins,beamon,badillo,tolley,tindall,soule,snook,seale,pinkney,pellegrino,nowell,nemeth,mondragon,mclane,lundgren,ingalls,hudspeth,hixson,gearhart,furlong,downes,dibble,deyoung,cornejo,camara,brookshire,boyette,wolcott,surratt,sellars,segal,salyer,reeve,rausch,labonte,haro,gower,freeland,fawcett,eads,driggers,donley,collett,bromley,boatman,ballinger,baldridge,volz,trombley,stonge,shanahan,rivard,rhyne,pedroza,matias,jamieson,hedgepeth,hartnett,estevez,eskridge,denman,chiu,chinn,catlett,carmack,buie,bechtel,beardsley,bard,ballou,ulmer,skeen,robledo,rincon,reitz,piazza,munger,moten,mcmichael,loftus,ledet,kersey,groff,fowlkes,crumpton,clouse,bettis,villagomez,timmerman,strom,santoro,roddy,penrod,musselman,macpherson,leboeuf,harless,haddad,guido,golding,fulkerson,fannin,dulaney,dowdell,cottle,ceja,cate,bosley,benge,albritton,voigt,trowbridge,soileau,seely,rohde,pearsall,paulk,orth,nason,mota,mcmullin,marquardt,madigan,hoag,gillum,gabbard,fenwick,danforth,cushing,cress,creed,cazares,bettencourt,barringer,baber,stansberry,schramm,rutter,rivero,oquendo,necaise,mouton,montenegro,miley,mcgough,marra,macmillan,lamontagne,jasso,horst,hetrick,heilman,gaytan,gall,fortney,dingle,desjardins,dabbs,burbank,brigham,breland,beaman,arriola,yarborough,wallin,toscano,stowers,reiss,pichardo,orton,michels,mcnamee,mccrory,leatherman,kell,keister,horning,hargett,guay,ferro,deboer,dagostino,carper,blanks,beaudry,towle,tafoya,stricklin,strader,soper,sonnier,sigmon,schenk,saddler,pedigo,mendes,lunn,lohr,lahr,kingsbury,jarman,hume,holliman,hofmann,haworth,harrelson,hambrick,flick,edmunds,dacosta,crossman,colston,chaplin,carrell,budd,weiler,waits,valentino,trantham,tarr,solorio,roebuck,powe,plank,pettus,pagano,mink,luker,leathers,joslin,hartzell,gambrell,cepeda,carty,caputo,brewington,bedell,ballew,applewhite,warnock,walz,urena,tudor,reel,pigg,parton,mickelson,meagher,mclellan,mcculley,mandel,leech,lavallee,kraemer,kling,kipp,kehoe,hochstetler,harriman,gregoire,grabowski,gosselin,gammon,fancher,edens,desai,brannan,armendariz,woolsey,whitehouse,whetstone,ussery,towne,testa,tallman,studer,strait,steinmetz,sorrells,sauceda,rolfe,paddock,mitchem,mcginn,mccrea,lovato,hazen,gilpin,gaynor,fike,devoe,delrio,curiel,burkhardt,bode,backus,zinn,watanabe,wachter,vanpelt,turnage,shaner,schroder,sato,riordan,quimby,portis,natale,mckoy,mccown,kilmer,hotchkiss,hesse,halbert,gwinn,godsey,delisle,chrisman,canter,arbogast,angell,acree,yancy,woolley,wesson,weatherspoon,trainor,stockman,spiller,sipe,rooks,reavis,propst,porras,neilson,mullens,loucks,llewellyn,kumar,koester,klingensmith,kirsch,kester,honaker,hodson,hennessy,helmick,garrity,garibay,drain,casarez,callis,botello,aycock,avant,wingard,wayman,tully,theisen,szymanski,stansbury,segovia,rainwater,preece,pirtle,padron,mincey,mckelvey,mathes,larrabee,kornegay,klug,ingersoll,hecht,germain,eggers,dykstra,deering,decoteau,deason,dearing,cofield,carrigan,bonham,bahr,aucoin,appleby,almonte,yager,womble,wimmer,weimer,vanderpool,stancil,sprinkle,romine,remington,pfaff,peckham,olivera,meraz,maze,lathrop,koehn,hazelton,halvorson,hallock,haddock,ducharme,dehaven,caruthers,brehm,bosworth,bost,bias,beeman,basile,bane,aikens,wold,walther,tabb,suber,strawn,stocker,shirey,schlosser,riedel,rembert,reimer,pyles,peele,merriweather,letourneau,latta,kidder,hixon,hillis,hight,herbst,henriquez,haygood,hamill,gabel,fritts,eubank,dawes,correll,bushey,buchholz,brotherton,botts,barnwell,auger,atchley,westphal,veilleux,ulloa,stutzman,shriver,ryals,pilkington,moyers,marrs,mangrum,maddux,lockard,laing,kuhl,harney,hammock,hamlett,felker,doerr,depriest,carrasquillo,carothers,bogle,bischoff,bergen,albanese,wyckoff,vermillion,vansickle,thibault,tetreault,stickney,shoemake,ruggiero,rawson,racine,philpot,paschal,mcelhaney,mathison,legrand,lapierre,kwan,kremer,jiles,hilbert,geyer,faircloth,ehlers,egbert,desrosiers,dalrymple,cotten,cashman,cadena,boardman,alcaraz,wyrick,therrien,tankersley,strickler,puryear,plourde,pattison,pardue,mcginty,mcevoy,landreth,kuhns,koon,hewett,giddens,emerick,eades,deangelis,cosme,ceballos,birdsong,benham,bemis,armour,anguiano,welborn,tsosie,storms,shoup,sessoms,samaniego,rood,rojo,rhinehart,raby,northcutt,myer,munguia,morehouse,mcdevitt,mallett,lozada,lemoine,kuehn,hallett,grim,gillard,gaylor,garman,gallaher,feaster,faris,darrow,dardar,coney,carreon,braithwaite,boylan,boyett,bixler,bigham,benford,barragan,barnum,zuber,wyche,westcott,vining,stoltzfus,simonds,shupe,sabin,ruble,rittenhouse,richman,perrone,mulholland,millan,lomeli,kite,jemison,hulett,holler,hickerson,herold,hazelwood,griffen,gause,forde,eisenberg,dilworth,charron,chaisson,bristow,breunig,brace,boutwell,bentz,belk,bayless,batchelder,baran,baeza,zimmermann,weathersby,volk,toole,theis,tedesco,searle,schenck,satterwhite,ruelas,rankins,partida,nesbit,morel,menchaca,levasseur,kaylor,johnstone,hulse,hollar,hersey,harrigan,harbison,guyer,gish,giese,gerlach,geller,geisler,falcone,elwell,doucet,deese,darr,corder,chafin,byler,bussell,burdett,brasher,bowe,bellinger,bastian,barner,alleyne,wilborn,weil,wegner,tatro,spitzer,smithers,schoen,resendez,parisi,overman,obrian,mudd,mahler,maggio,lindner,lalonde,lacasse,laboy,killion,kahl,jessen,jamerson,houk,henshaw,gustin,graber,durst,duenas,davey,cundiff,conlon,colunga,coakley,chiles,capers,buell,bricker,bissonnette,bartz,bagby,zayas,volpe,treece,toombs,thom,terrazas,swinney,skiles,silveira,shouse,senn,ramage,moua,langham,kyles,holston,hoagland,herd,feller,denison,carraway,burford,bickel,ambriz,abercrombie,yamada,weidner,waddle,verduzco,thurmond,swindle,schrock,sanabria,rosenberger,probst,peabody,olinger,nazario,mccafferty,mcbroom,mcabee,mazur,matherne,mapes,leverett,killingsworth,heisler,griego,gosnell,frankel,franke,ferrante,fenn,ehrlich,christopherso,chasse,caton,brunelle,bloomfield,babbitt,azevedo,abramson,ables,abeyta,youmans,wozniak,wainwright,stowell,smitherman,samuelson,runge,rothman,rosenfeld,peake,owings,olmos,munro,moreira,leatherwood,larkins,krantz,kovacs,kizer,kindred,karnes,jaffe,hubbell,hosey,hauck,goodell,erdman,dvorak,doane,cureton,cofer,buehler,bierman,berndt,banta,abdullah,warwick,waltz,turcotte,torrey,stith,seger,sachs,quesada,pinder,peppers,pascual,paschall,parkhurst,ozuna,oster,nicholls,lheureux,lavalley,kimura,jablonski,haun,gourley,gilligan,croy,cotto,cargill,burwell,burgett,buckman,booher,adorno,wrenn,whittemore,urias,szabo,sayles,saiz,rutland,rael,pharr,pelkey,ogrady,nickell,musick,moats,mather,massa,kirschner,kieffer,kellar,hendershot,gott,godoy,gadson,furtado,fiedler,erskine,dutcher,dever,daggett,chevalier,brake,ballesteros,amerson,wingo,waldon,trott,silvey,showers,schlegel,ritz,pepin,pelayo,parsley,palermo,moorehead,mchale,lett,kocher,kilburn,iglesias,humble,hulbert,huckaby,hartford,hardiman,gurney,grigg,grasso,goings,fillmore,farber,depew,dandrea,cowen,covarrubias,burrus,bracy,ardoin,thompkins,standley,radcliffe,pohl,persaud,parenteau,pabon,newson,newhouse,napolitano,mulcahy,malave,keim,hooten,hernandes,heffernan,hearne,greenleaf,glick,fuhrman,fetter,faria,dishman,dickenson,crites,criss,clapper,chenault,castor,casto,bugg,bove,bonney,anderton,allgood,alderson,woodman,warrick,toomey,tooley,tarrant,summerville,stebbins,sokol,searles,schutz,schumann,scheer,remillard,raper,proulx,palmore,monroy,messier,melo,melanson,mashburn,manzano,lussier,jenks,huneycutt,hartwig,grimsley,fulk,fielding,fidler,engstrom,eldred,dantzler,crandell,calder,brumley,breton,brann,bramlett,boykins,bianco,bancroft,almaraz,alcantar,whitmer,whitener,welton,vineyard,rahn,paquin,mizell,mcmillin,mckean,marston,maciel,lundquist,liggins,lampkin,kranz,koski,kirkham,jiminez,hazzard,harrod,graziano,grammer,gendron,garrido,fordham,englert,dryden,demoss,deluna,crabb,comeau,brummett,blume,benally,wessel,vanbuskirk,thorson,stumpf,stockwell,reams,radtke,rackley,pelton,niemi,newland,nelsen,morrissette,miramontes,mcginley,mccluskey,marchant,luevano,lampe,lail,jeffcoat,infante,hinman,gaona,eady,desmarais,decosta,dansby,cisco,choe,breckenridge,bostwick,borg,bianchi,alberts,wilkie,whorton,vargo,tait,soucy,schuman,ousley,mumford,lippert,leath,lavergne,laliberte,kirksey,kenner,johnsen,izzo,hiles,gullett,greenwell,gaspar,galbreath,gaitan,ericson,delapaz,croom,cottingham,clift,bushnell,bice,beason,arrowood,waring,voorhees,truax,shreve,shockey,schatz,sandifer,rubino,rozier,roseberry,pieper,peden,nester,nave,murphey,malinowski,macgregor,lafrance,kunkle,kirkman,hipp,hasty,haddix,gervais,gerdes,gamache,fouts,fitzwater,dillingham,deming,deanda,cedeno,cannady,burson,bouldin,arceneaux,woodhouse,whitford,wescott,welty,weigel,torgerson,toms,surber,sunderland,sterner,setzer,riojas,pumphrey,puga,metts,mcgarry,mccandless,magill,lupo,loveland,llamas,leclerc,koons,kahler,huss,holbert,heintz,haupt,grimmett,gaskill,ellingson,dorr,dingess,deweese,desilva,crossley,cordeiro,converse,conde,caldera,cairns,burmeister,burkhalter,brawner,bott,youngs,vierra,valladares,shrum,shropshire,sevilla,rusk,rodarte,pedraza,nino,merino,mcminn,markle,mapp,lajoie,koerner,kittrell,kato,hyder,hollifield,heiser,hazlett,greenwald,fant,eldredge,dreher,delafuente,cravens,claypool,beecher,aronson,alanis,worthen,wojcik,winger,whitacre,valverde,valdivia,troupe,thrower,swindell,suttles,stroman,spires,slate,shealy,sarver,sartin,sadowski,rondeau,rolon,rascon,priddy,paulino,nolte,munroe,molloy,mciver,lykins,loggins,lenoir,klotz,kempf,hupp,hollowell,hollander,haynie,harkness,harker,gottlieb,frith,eddins,driskell,doggett,densmore,charette,cassady,byrum,burcham,buggs,benn,whitted,warrington,vandusen,vaillancourt,steger,siebert,scofield,quirk,purser,plumb,orcutt,nordstrom,mosely,michalski,mcphail,mcdavid,mccraw,marchese,mannino,lefevre,largent,lanza,kress,isham,hunsaker,hoch,hildebrandt,guarino,grijalva,graybill,fick,ewell,ewald,cusick,crumley,coston,cathcart,carruthers,bullington,bowes,blain,blackford,barboza,yingling,wert,weiland,varga,silverstein,sievers,shuster,shumway,runnels,rumsey,renfroe,provencher,polley,mohler,middlebrooks,kutz,koster,groth,glidden,fazio,deen,chipman,chenoweth,champlin,cedillo,carrero,carmody,buckles,brien,boutin,bosch,berkowitz,altamirano,wilfong,wiegand,waites,truesdale,toussaint,tobey,tedder,steelman,sirois,schnell,robichaud,richburg,plumley,pizarro,piercy,ortego,oberg,neace,mertz,mcnew,matta,lapp,lair,kibler,howlett,hollister,hofer,hatten,hagler,falgoust,engelhardt,eberle,dombrowski,dinsmore,daye,casares,braud,balch,autrey,wendel,tyndall,strobel,stoltz,spinelli,serrato,reber,rathbone,palomino,nickels,mayle,mathers,mach,loeffler,littrell,levinson,leong,lemire,lejeune,lazo,lasley,koller,kennard,hoelscher,hintz,hagerman,greaves,fore,eudy,engler,corrales,cordes,brunet,bidwell,bennet,tyrrell,tharpe,swinton,stribling,southworth,sisneros,savoie,samons,ruvalcaba,ries,ramer,omara,mosqueda,millar,mcpeak,macomber,luckey,litton,lehr,lavin,hubbs,hoard,hibbs,hagans,futrell,exum,evenson,culler,carbaugh,callen,brashear,bloomer,blakeney,bigler,addington,woodford,unruh,tolentino,sumrall,stgermain,smock,sherer,rayner,pooler,oquinn,nero,mcglothlin,linden,kowal,kerrigan,ibrahim,harvell,hanrahan,goodall,geist,fussell,fung,ferebee,eley,eggert,dorsett,dingman,destefano,colucci,clemmer,burnell,brumbaugh,boddie,berryhill,avelar,alcantara,winder,winchell,vandenberg,trotman,thurber,thibeault,stlouis,stilwell,sperling,shattuck,sarmiento,ruppert,rumph,renaud,randazzo,rademacher,quiles,pearman,palomo,mercurio,lowrey,lindeman,lawlor,larosa,lander,labrecque,hovis,holifield,henninger,hawkes,hartfield,hann,hague,genovese,garrick,fudge,frink,eddings,dinh,cribbs,calvillo,bunton,brodeur,bolding,blanding,agosto,zahn,wiener,trussell,tello,teixeira,speck,sharma,shanklin,sealy,scanlan,santamaria,roundy,robichaux,ringer,rigney,prevost,polson,nord,moxley,medford,mccaslin,mcardle,macarthur,lewin,lasher,ketcham,keiser,heine,hackworth,grose,grizzle,gillman,gartner,frazee,fleury,edson,edmonson,derry,cronk,conant,burress,burgin,broom,brockington,bolick,boger,birchfield,billington,baily,bahena,armbruster,anson,yoho,wilcher,tinney,timberlake,thielen,sutphin,stultz,sikora,serra,schulman,scheffler,santillan,rego,preciado,pinkham,mickle,lomas,lizotte,lent,kellerman,keil,johanson,hernadez,hartsfield,haber,gorski,farkas,eberhardt,duquette,delano,cropper,cozart,cockerham,chamblee,cartagena,cahoon,buzzell,brister,brewton,blackshear,benfield,aston,ashburn,arruda,wetmore,weise,vaccaro,tucci,sudduth,stromberg,stoops,showalter,shears,runion,rowden,rosenblum,riffle,renfrow,peres,obryant,leftwich,lark,landeros,kistler,killough,kerley,kastner,hoggard,hartung,guertin,govan,gatling,gailey,fullmer,fulford,flatt,esquibel,endicott,edmiston,edelstein,dufresne,dressler,dickman,chee,busse,bonnett,berard,yoshida,velarde,veach,vanhouten,vachon,tolson,tolman,tennyson,stites,soler,shutt,ruggles,rhone,pegues,neese,muro,moncrief,mefford,mcphee,mcmorris,mceachern,mcclurg,mansour,mader,leija,lecompte,lafountain,labrie,jaquez,heald,hash,hartle,gainer,frisby,farina,eidson,edgerton,dyke,durrett,duhon,cuomo,cobos,cervantez,bybee,brockway,borowski,binion,beery,arguello,amaro,acton,yuen,winton,wigfall,weekley,vidrine,vannoy,tardiff,shoop,shilling,schick,safford,prendergast,pilgrim,pellerin,osuna,nissen,nalley,moller,messner,messick,merrifield,mcguinness,matherly,marcano,mahone,lemos,lebrun,jara,hoffer,herren,hecker,haws,haug,gwin,gober,gilliard,fredette,favela,echeverria,downer,donofrio,desrochers,crozier,corson,bechtold,argueta,aparicio,zamudio,westover,westerman,utter,troyer,thies,tapley,slavin,shirk,sandler,roop,rimmer,raymer,radcliff,otten,moorer,millet,mckibben,mccutchen,mcavoy,mcadoo,mayorga,mastin,martineau,marek,madore,leflore,kroeger,kennon,jimerson,hostetter,hornback,hendley,hance,guardado,granado,gowen,goodale,flinn,fleetwood,fitz,durkee,duprey,dipietro,dilley,clyburn,brawley,beckley,arana,weatherby,vollmer,vestal,tunnell,trigg,tingle,takahashi,sweatt,storer,snapp,shiver,rooker,rathbun,poisson,perrine,perri,parmer,parke,pare,papa,palmieri,midkiff,mecham,mccomas,mcalpine,lovelady,lillard,lally,knopp,kile,kiger,haile,gupta,goldsberry,gilreath,fulks,friesen,franzen,flack,findlay,ferland,dreyer,dore,dennard,deckard,debose,crim,coulombe,chancey,cantor,branton,bissell,barns,woolard,witham,wasserman,spiegel,shoffner,scholz,ruch,rossman,petry,palacio,paez,neary,mortenson,millsap,miele,menke,mckim,mcanally,martines,lemley,larochelle,klaus,klatt,kaufmann,kapp,helmer,hedge,halloran,glisson,frechette,fontana,eagan,distefano,danley,creekmore,chartier,chaffee,carillo,burg,bolinger,berkley,benz,basso,bash,zelaya,woodring,witkowski,wilmot,wilkens,wieland,verdugo,urquhart,tsai,timms,swiger,swaim,sussman,pires,molnar,mcatee,lowder,loos,linker,landes,kingery,hufford,higa,hendren,hammack,hamann,gillam,gerhardt,edelman,delk,deans,curl,constantine,cleaver,claar,casiano,carruth,carlyle,brophy,bolanos,bibbs,bessette,beggs,baugher,bartel,averill,andresen,amin,adames,valente,turnbow,swink,sublett,stroh,stringfellow,ridgway,pugliese,poteat,ohare,neubauer,murchison,mingo,lemmons,kwon,kellam,kean,jarmon,hyden,hudak,hollinger,henkel,hemingway,hasson,hansel,halter,haire,ginsberg,gillispie,fogel,flory,etter,elledge,eckman,deas,currin,crafton,coomer,colter,claxton,bulter,braddock,bowyer,binns,bellows,baskerville,barros,ansley,woolf,wight,waldman,wadley,tull,trull,tesch,stouffer,stadler,slay,shubert,sedillo,santacruz,reinke,poynter,neri,neale,mowry,moralez,monger,mitchum,merryman,manion,macdougall,litchfield,levitt,lepage,lasalle,khoury,kavanagh,karns,ivie,huebner,hodgkins,halpin,garica,eversole,dutra,dunagan,duffey,dillman,dillion,deville,dearborn,damato,courson,coulson,burdine,bousquet,bonin,bish,atencio,westbrooks,wages,vaca,toner,tillis,swett,struble,stanfill,solorzano,slusher,sipple,silvas,shults,schexnayder,saez,rodas,rager,pulver,penton,paniagua,meneses,mcfarlin,mcauley,matz,maloy,magruder,lohman,landa,lacombe,jaimes,holzer,holst,heil,hackler,grundy,gilkey,farnham,durfee,dunton,dunston,duda,dews,craver,corriveau,conwell,colella,chambless,bremer,boutte,bourassa,blaisdell,backman,babineaux,audette,alleman,towner,taveras,tarango,sullins,suiter,stallard,solberg,schlueter,poulos,pimental,owsley,okelley,moffatt,metcalfe,meekins,medellin,mcglynn,mccowan,marriott,marable,lennox,lamoureux,koss,kerby,karp,isenberg,howze,hockenberry,highsmith,hallmark,gusman,greeley,giddings,gaudet,gallup,fleenor,eicher,edington,dimaggio,dement,demello,decastro,bushman,brundage,brooker,bourg,blackstock,bergmann,beaton,banister,argo,appling,wortman,watterson,villalpando,tillotson,tighe,sundberg,sternberg,stamey,shipe,seeger,scarberry,sattler,sain,rothstein,poteet,plowman,pettiford,penland,partain,pankey,oyler,ogletree,ogburn,moton,merkel,lucier,lakey,kratz,kinser,kershaw,josephson,imhoff,hendry,hammon,frisbie,frawley,fraga,forester,eskew,emmert,drennan,doyon,dandridge,cawley,carvajal,bracey,belisle,batey,ahner,wysocki,weiser,veliz,tincher,sansone,sankey,sandstrom,rohrer,risner,pridemore,pfeffer,persinger,peery,oubre,nowicki,musgrave,murdoch,mullinax,mccary,mathieu,livengood,kyser,klink,kimes,kellner,kavanaugh,kasten,imes,hoey,hinshaw,hake,gurule,grube,grillo,geter,gatto,garver,garretson,farwell,eiland,dunford,decarlo,corso,colman,collard,cleghorn,chasteen,cavender,carlile,calvo,byerly,brogdon,broadwater,breault,bono,bergin,behr,ballenger,amick,tamez,stiffler,steinke,simmon,shankle,schaller,salmons,sackett,saad,rideout,ratcliffe,ranson,plascencia,petterson,olszewski,olney,olguin,nilsson,nevels,morelli,montiel,monge,michaelson,mertens,mcchesney,mcalpin,mathewson,loudermilk,lineberry,liggett,kinlaw,kight,jost,hereford,hardeman,halpern,halliday,hafer,gaul,friel,freitag,forsberg,evangelista,doering,dicarlo,dendy,delp,deguzman,dameron,curtiss,cosper,cauthen,bradberry,bouton,bonnell,bixby,bieber,beveridge,bedwell,barhorst,bannon,baltazar,baier,ayotte,attaway,arenas,abrego,turgeon,tunstall,thaxton,tenorio,stotts,sthilaire,shedd,seabolt,scalf,salyers,ruhl,rowlett,robinett,pfister,perlman,pepe,parkman,nunnally,norvell,napper,modlin,mckellar,mcclean,mascarenas,leibowitz,ledezma,kuhlman,kobayashi,hunley,holmquist,hinkley,hazard,hartsell,gribble,gravely,fifield,eliason,doak,crossland,carleton,bridgeman,bojorquez,boggess,auten,woosley,whiteley,wexler,twomey,tullis,townley,standridge,santoyo,rueda,riendeau,revell,pless,ottinger,nigro,nickles,mulvey,menefee,mcshane,mcloughlin,mckinzie,markey,lockridge,lipsey,knisley,knepper,kitts,kiel,jinks,hathcock,godin,gallego,fikes,fecteau,estabrook,ellinger,dunlop,dudek,countryman,chauvin,chatham,bullins,brownfield,boughton,bloodworth,bibb,baucom,barbieri,aubin,armitage,alessi,absher,abbate,zito,woolery,wiggs,wacker,tynes,tolle,telles,tarter,swarey,strode,stockdale,stalnaker,spina,schiff,saari,risley,rameriz,rakes,pettaway,penner,paulus,palladino,omeara,montelongo,melnick,mehta,mcgary,mccourt,mccollough,marchetti,manzanares,lowther,leiva,lauderdale,lafontaine,kowalczyk,knighton,joubert,jaworski,huth,hurdle,housley,hackman,gulick,gordy,gilstrap,gehrke,gebhart,gaudette,foxworth,endres,dunkle,cimino,caddell,brauer,braley,bodine,blackmore,belden,backer,ayer,andress,wisner,vuong,valliere,twigg,tavarez,strahan,steib,staub,sowder,seiber,schutt,scharf,schade,rodriques,risinger,renshaw,rahman,presnell,piatt,nieman,nevins,mcilwain,mcgaha,mccully,mccomb,massengale,macedo,lesher,kearse,jauregui,husted,hudnall,holmberg,hertel,hardie,glidewell,frausto,fassett,dalessandro,dahlgren,corum,constantino,conlin,colquitt,colombo,claycomb,cardin,buller,boney,bocanegra,biggers,benedetto,araiza,andino,albin,zorn,werth,weisman,walley,vanegas,ulibarri,towe,tedford,teasley,suttle,steffens,stcyr,squire,singley,sifuentes,shuck,schram,sass,rieger,ridenhour,rickert,richerson,rayborn,rabe,raab,pendley,pastore,ordway,moynihan,mellott,mckissick,mcgann,mccready,mauney,marrufo,lenhart,lazar,lafave,keele,kautz,jardine,jahnke,jacobo,hord,hardcastle,hageman,giglio,gehring,fortson,duque,duplessis,dicken,derosier,deitz,dalessio,cram,castleman,candelario,callison,caceres,bozarth,biles,bejarano,bashaw,avina,armentrout,alverez,acord,waterhouse,vereen,vanlandingham,strawser,shotwell,severance,seltzer,schoonmaker,schock,schaub,schaffner,roeder,rodrigez,riffe,rasberry,rancourt,railey,quade,pursley,prouty,perdomo,oxley,osterman,nickens,murphree,mounts,merida,maus,mattern,masse,martinelli,mangan,lutes,ludwick,loney,laureano,lasater,knighten,kissinger,kimsey,kessinger,honea,hollingshead,hockett,heyer,heron,gurrola,gove,glasscock,gillett,galan,featherstone,eckhardt,duron,dunson,dasher,culbreth,cowden,cowans,claypoole,churchwell,chabot,caviness,cater,caston,callan,byington,burkey,boden,beckford,atwater,archambault,alvey,alsup,whisenant,weese,voyles,verret,tsang,tessier,sweitzer,sherwin,shaughnessy,revis,remy,prine,philpott,peavy,paynter,parmenter,ovalle,offutt,nightingale,newlin,nakano,myatt,muth,mohan,mcmillon,mccarley,mccaleb,maxson,marinelli,maley,liston,letendre,kain,huntsman,hirst,hagerty,gulledge,greenway,grajeda,gorton,goines,gittens,frederickson,fanelli,embree,eichelberger,dunkin,dixson,dillow,defelice,chumley,burleigh,borkowski,binette,biggerstaff,berglund,beller,audet,arbuckle,allain,alfano,youngman,wittman,weintraub,vanzant,vaden,twitty,stollings,standifer,sines,shope,scalise,saville,posada,pisano,otte,nolasco,mier,merkle,mendiola,melcher,mejias,mcmurry,mccalla,markowitz,manis,mallette,macfarlane,lough,looper,landin,kittle,kinsella,kinnard,hobart,helman,hellman,hartsock,halford,hage,gordan,glasser,gayton,gattis,gastelum,gaspard,frisch,fitzhugh,eckstein,eberly,dowden,despain,crumpler,crotty,cornelison,chouinard,chamness,catlin,cann,bumgardner,budde,branum,bradfield,braddy,borst,birdwell,bazan,banas,bade,arango,ahearn,addis,zumwalt,wurth,wilk,widener,wagstaff,urrutia,terwilliger,tart,steinman,staats,sloat,rives,riggle,revels,reichard,prickett,poff,pitzer,petro,pell,northrup,nicks,moline,mielke,maynor,mallon,magness,lingle,lindell,lieb,lesko,lebeau,lammers,lafond,kiernan,ketron,jurado,holmgren,hilburn,hayashi,hashimoto,harbaugh,guillot,gard,froehlich,feinberg,falco,dufour,drees,doney,diep,delao,daves,dail,crowson,coss,congdon,carner,camarena,butterworth,burlingame,bouffard,bloch,bilyeu,barta,bakke,baillargeon,avent,aquilar,zeringue,yarber,wolfson,vogler,voelker,truss,troxell,thrift,strouse,spielman,sistrunk,sevigny,schuller,schaaf,ruffner,routh,roseman,ricciardi,peraza,pegram,overturf,olander,odaniel,millner,melchor,maroney,machuca,macaluso,livesay,layfield,laskowski,kwiatkowski,kilby,hovey,heywood,hayman,havard,harville,haigh,hagood,grieco,glassman,gebhardt,fleischer,fann,elson,eccles,cunha,crumb,blakley,bardwell,abshire,woodham,wines,welter,wargo,varnado,tutt,traynor,swaney,stricker,stoffel,stambaugh,sickler,shackleford,selman,seaver,sansom,sanmiguel,royston,rourke,rockett,rioux,puleo,pitchford,nardi,mulvaney,middaugh,malek,leos,lathan,kujawa,kimbro,killebrew,houlihan,hinckley,herod,hepler,hamner,hammel,hallowell,gonsalez,gingerich,gambill,funkhouser,fricke,fewell,falkner,endsley,dulin,drennen,deaver,dambrosio,chadwell,castanon,burkes,brune,brisco,brinker,bowker,boldt,berner,beaumont,beaird,bazemore,barrick,albano,younts,wunderlich,weidman,vanness,toland,theobald,stickler,steiger,stanger,spies,spector,sollars,smedley,seibel,scoville,saito,rummel,rowles,rouleau,roos,rogan,roemer,ream,raya,purkey,priester,perreira,penick,paulin,parkins,overcash,oleson,neves,muldrow,minard,midgett,michalak,melgar,mcentire,mcauliffe,marte,lydon,lindholm,leyba,langevin,lagasse,lafayette,kesler,kelton,kaminsky,jaggers,humbert,huck,howarth,hinrichs,higley,gupton,guimond,gravois,giguere,fretwell,fontes,feeley,faucher,eichhorn,ecker,earp,dole,dinger,derryberry,demars,deel,copenhaver,collinsworth,colangelo,cloyd,claiborne,caulfield,carlsen,calzada,caffey,broadus,brenneman,bouie,bodnar,blaney,blanc,beltz,behling,barahona,yockey,winkle,windom,wimer,villatoro,trexler,teran,taliaferro,sydnor,swinson,snelling,smtih,simonton,simoneaux,simoneau,sherrer,seavey,scheel,rushton,rupe,ruano,rippy,reiner,reiff,rabinowitz,quach,penley,odle,nock,minnich,mckown,mccarver,mcandrew,longley,laux,lamothe,lafreniere,kropp,krick,kates,jepson,huie,howse,howie,henriques,haydon,haught,hatter,hartzog,harkey,grimaldo,goshorn,gormley,gluck,gilroy,gillenwater,giffin,fluker,feder,eyre,eshelman,eakins,detwiler,delrosario,davisson,catalan,canning,calton,brammer,botelho,blakney,bartell,averett,askins,aker,witmer,winkelman,widmer,whittier,weitzel,wardell,wagers,ullman,tupper,tingley,tilghman,talton,simard,seda,scheller,sala,rundell,rost,ribeiro,rabideau,primm,pinon,peart,ostrom,ober,nystrom,nussbaum,naughton,murr,moorhead,monti,monteiro,melson,meissner,mclin,mcgruder,marotta,makowski,majewski,madewell,lunt,lukens,leininger,lebel,lakin,kepler,jaques,hunnicutt,hungerford,hoopes,hertz,heins,halliburton,grosso,gravitt,glasper,gallman,gallaway,funke,fulbright,falgout,eakin,dostie,dorado,dewberry,derose,cutshall,crampton,costanzo,colletti,cloninger,claytor,chiang,campagna,burd,brokaw,broaddus,bretz,brainard,binford,bilbrey,alpert,aitken,ahlers,zajac,woolfolk,witten,windle,wayland,tramel,tittle,talavera,suter,straley,specht,sommerville,soloman,skeens,sigman,sibert,shavers,schuck,schmit,sartain,sabol,rosenblatt,rollo,rashid,rabb,polston,nyberg,northrop,navarra,muldoon,mikesell,mcdougald,mcburney,mariscal,lozier,lingerfelt,legere,latour,lagunas,lacour,kurth,killen,kiely,kayser,kahle,isley,huertas,hower,hinz,haugh,gumm,galicia,fortunato,flake,dunleavy,duggins,doby,digiovanni,devaney,deltoro,cribb,corpuz,coronel,coen,charbonneau,caine,burchette,blakey,blakemore,bergquist,beene,beaudette,bayles,ballance,bakker,bailes,asberry,arwood,zucker,willman,whitesell,wald,walcott,vancleave,trump,strasser,simas,shick,schleicher,schaal,saleh,rotz,resnick,rainer,partee,ollis,oller,oday,noles,munday,mong,millican,merwin,mazzola,mansell,magallanes,llanes,lewellen,lepore,kisner,keesee,jeanlouis,ingham,hornbeck,hawn,hartz,harber,haffner,gutshall,guth,grays,gowan,finlay,finkelstein,eyler,enloe,dungan,diez,dearman,cull,crosson,chronister,cassity,campion,callihan,butz,breazeale,blumenthal,berkey,batty,batton,arvizu,alderete,aldana,albaugh,abernethy,wolter,wille,tweed,tollefson,thomasson,teter,testerman,sproul,spates,southwick,soukup,skelly,senter,sealey,sawicki,sargeant,rossiter,rosemond,repp,pifer,ormsby,nickelson,naumann,morabito,monzon,millsaps,millen,mcelrath,marcoux,mantooth,madson,macneil,mackinnon,louque,leister,lampley,kushner,krouse,kirwan,jessee,janson,jahn,jacquez,islas,hutt,holladay,hillyer,hepburn,hensel,harrold,gingrich,geis,gales,fults,finnell,ferri,featherston,epley,ebersole,eames,dunigan,drye,dismuke,devaughn,delorenzo,damiano,confer,collum,clower,clow,claussen,clack,caylor,cawthon,casias,carreno,bluhm,bingaman,bewley,belew,beckner,auld,amey,wolfenbarger,wilkey,wicklund,waltman,villalba,valero,valdovinos,ullrich,tyus,twyman,trost,tardif,tanguay,stripling,steinbach,shumpert,sasaki,sappington,sandusky,reinhold,reinert,quijano,placencia,pinkard,phinney,perrotta,pernell,parrett,oxendine,owensby,orman,nuno,mori,mcroberts,mcneese,mckamey,mccullum,markel,mardis,maines,lueck,lubin,lefler,leffler,larios,labarbera,kershner,josey,jeanbaptiste,izaguirre,hermosillo,haviland,hartshorn,hafner,ginter,getty,franck,fiske,dufrene,doody,davie,dangerfield,dahlberg,cuthbertson,crone,coffelt,chidester,chesson,cauley,caudell,cantara,campo,caines,bullis,bucci,brochu,bogard,bickerstaff,benning,arzola,antonelli,adkinson,zellers,wulf,worsley,woolridge,whitton,westerfield,walczak,vassar,truett,trueblood,trawick,townsley,topping,tobar,telford,steverson,stagg,sitton,sill,sergent,schoenfeld,sarabia,rutkowski,rubenstein,rigdon,prentiss,pomerleau,plumlee,philbrick,patnode,oloughlin,obregon,nuss,morell,mikell,mele,mcinerney,mcguigan,mcbrayer,lollar,kuehl,kinzer,kamp,joplin,jacobi,howells,holstein,hedden,hassler,harty,halle,greig,gouge,goodrum,gerhart,geier,geddes,gast,forehand,ferree,fendley,feltner,esqueda,encarnacion,eichler,egger,edmundson,eatmon,doud,donohoe,donelson,dilorenzo,digiacomo,diggins,delozier,dejong,danford,crippen,coppage,cogswell,clardy,cioffi,cabe,brunette,bresnahan,blomquist,blackstone,biller,bevis,bevan,bethune,benbow,baty,basinger,balcom,andes,aman,aguero,adkisson,yandell,wilds,whisenhunt,weigand,weeden,voight,villar,trottier,tillett,suazo,setser,scurry,schuh,schreck,schauer,samora,roane,rinker,reimers,ratchford,popovich,parkin,natal,melville,mcbryde,magdaleno,loehr,lockman,lingo,leduc,larocca,lamere,laclair,krall,korte,koger,jalbert,hughs,higbee,henton,heaney,haith,gump,greeson,goodloe,gholston,gasper,gagliardi,fregoso,farthing,fabrizio,ensor,elswick,elgin,eklund,eaddy,drouin,dorton,dizon,derouen,deherrera,davy,dampier,cullum,culley,cowgill,cardoso,cardinale,brodsky,broadbent,brimmer,briceno,branscum,bolyard,boley,bennington,beadle,baur,ballentine,azure,aultman,arciniega,aguila,aceves,yepez,woodrum,wethington,weissman,veloz,trusty,troup,trammel,tarpley,stivers,steck,sprayberry,spraggins,spitler,spiers,sohn,seagraves,schiffman,rudnick,rizo,riccio,rennie,quackenbush,puma,plott,pearcy,parada,paiz,munford,moskowitz,mease,mcnary,mccusker,lozoya,longmire,loesch,lasky,kuhlmann,krieg,koziol,kowalewski,konrad,kindle,jowers,jolin,jaco,horgan,hine,hileman,hepner,heise,heady,hawkinson,hannigan,haberman,guilford,grimaldi,garton,gagliano,fruge,follett,fiscus,ferretti,ebner,easterday,eanes,dirks,dimarco,depalma,deforest,cruce,craighead,christner,candler,cadwell,burchell,buettner,brinton,brazier,brannen,brame,bova,bomar,blakeslee,belknap,bangs,balzer,athey,armes,alvis,alverson,alvardo,yeung,wheelock,westlund,wessels,volkman,threadgill,thelen,tague,symons,swinford,sturtevant,straka,stier,stagner,segarra,seawright,rutan,roux,ringler,riker,ramsdell,quattlebaum,purifoy,poulson,permenter,peloquin,pasley,pagel,osman,obannon,nygaard,newcomer,munos,motta,meadors,mcquiston,mcniel,mcmann,mccrae,mayne,matte,legault,lechner,kucera,krohn,kratzer,koopman,jeske,horrocks,hock,hibbler,hesson,hersh,harvin,halvorsen,griner,grindle,gladstone,garofalo,frampton,forbis,eddington,diorio,dingus,dewar,desalvo,curcio,creasy,cortese,cordoba,connally,cluff,cascio,capuano,canaday,calabro,bussard,brayton,borja,bigley,arnone,arguelles,acuff,zamarripa,wooton,widner,wideman,threatt,thiele,templin,teeters,synder,swint,swick,sturges,stogner,stedman,spratt,siegfried,shetler,scull,savino,sather,rothwell,rook,rone,rhee,quevedo,privett,pouliot,poche,pickel,petrillo,pellegrini,peaslee,partlow,otey,nunnery,morelock,morello,meunier,messinger,mckie,mccubbin,mccarron,lerch,lavine,laverty,lariviere,lamkin,kugler,krol,kissel,keeter,hubble,hickox,hetzel,hayner,hagy,hadlock,groh,gottschalk,goodsell,gassaway,garrard,galligan,firth,fenderson,feinstein,etienne,engleman,emrick,ellender,drews,doiron,degraw,deegan,dart,crissman,corr,cookson,coil,cleaves,charest,chapple,chaparro,castano,carpio,byer,bufford,bridgewater,bridgers,brandes,borrero,bonanno,aube,ancheta,abarca,abad,wooster,wimbush,willhite,willams,wigley,weisberg,wardlaw,vigue,vanhook,unknow,torre,tasker,tarbox,strachan,slover,shamblin,semple,schuyler,schrimsher,sayer,salzman,rubalcava,riles,reneau,reichel,rayfield,rabon,pyatt,prindle,poss,polito,plemmons,pesce,perrault,pereyra,ostrowski,nilsen,niemeyer,munsey,mundell,moncada,miceli,meader,mcmasters,mckeehan,matsumoto,marron,marden,lizarraga,lingenfelter,lewallen,langan,lamanna,kovac,kinsler,kephart,keown,kass,kammerer,jeffreys,hysell,hosmer,hardnett,hanner,guyette,greening,glazer,ginder,fromm,fluellen,finkle,fessler,essary,eisele,duren,dittmer,crochet,cosentino,cogan,coelho,cavin,carrizales,campuzano,brough,bopp,bookman,bobb,blouin,beesley,battista,bascom,bakken,badgett,arneson,anselmo,albino,ahumada,woodyard,wolters,wireman,willison,warman,waldrup,vowell,vantassel,twombly,toomer,tennison,teets,tedeschi,swanner,stutz,stelly,sheehy,schermerhorn,scala,sandidge,salters,salo,saechao,roseboro,rolle,ressler,renz,renn,redford,raposa,rainbolt,pelfrey,orndorff,oney,nolin,nimmons,nardone,myhre,morman,menjivar,mcglone,mccammon,maxon,marciano,manus,lowrance,lorenzen,lonergan,lollis,littles,lindahl,lamas,lach,kuster,krawczyk,knuth,knecht,kirkendall,keitt,keever,kantor,jarboe,hoye,houchens,holter,holsinger,hickok,helwig,helgeson,hassett,harner,hamman,hames,hadfield,goree,goldfarb,gaughan,gaudreau,gantz,gallion,frady,foti,flesher,ferrin,faught,engram,donegan,desouza,degroot,cutright,crowl,criner,coan,clinkscales,chewning,chavira,catchings,carlock,bulger,buenrostro,bramblett,brack,boulware,bookout,bitner,birt,baranowski,baisden,allmon,acklin,yoakum,wilbourn,whisler,weinberger,washer,vasques,vanzandt,vanatta,troxler,tomes,tindle,tims,throckmorton,thach,stpeter,stlaurent,stenson,spry,spitz,songer,snavely,shroyer,shortridge,shenk,sevier,seabrook,scrivner,saltzman,rosenberry,rockwood,robeson,roan,reiser,ramires,raber,posner,popham,piotrowski,pinard,peterkin,pelham,peiffer,peay,nadler,musso,millett,mestas,mcgowen,marques,marasco,manriquez,manos,mair,lipps,leiker,krumm,knorr,kinslow,kessel,kendricks,kelm,irick,ickes,hurlburt,horta,hoekstra,heuer,helmuth,heatherly,hampson,hagar,haga,greenlaw,grau,godbey,gingras,gillies,gibb,gayden,gauvin,garrow,fontanez,florio,finke,fasano,ezzell,ewers,eveland,eckenrode,duclos,drumm,dimmick,delancey,defazio,dashiell,cusack,crowther,crigger,cray,coolidge,coldiron,cleland,chalfant,cassel,camire,cabrales,broomfield,brittingham,brisson,brickey,braziel,brazell,bragdon,boulanger,boman,bohannan,beem,barre,azar,ashbaugh,armistead,almazan,adamski,zendejas,winburn,willaims,wilhoit,westberry,wentzel,wendling,visser,vanscoy,vankirk,vallee,tweedy,thornberry,sweeny,spradling,spano,smelser,shim,sechrist,schall,scaife,rugg,rothrock,roesler,riehl,ridings,render,ransdell,radke,pinero,petree,pendergast,peluso,pecoraro,pascoe,panek,oshiro,navarrette,murguia,moores,moberg,michaelis,mcwhirter,mcsweeney,mcquade,mccay,mauk,mariani,marceau,mandeville,maeda,lunde,ludlow,loeb,lindo,linderman,leveille,leith,larock,lambrecht,kulp,kinsley,kimberlin,kesterson,hoyos,helfrich,hanke,grisby,goyette,gouveia,glazier,gile,gerena,gelinas,gasaway,funches,fujimoto,flynt,fenske,fellers,fehr,eslinger,escalera,enciso,duley,dittman,dineen,diller,devault,collings,clymer,clowers,chavers,charland,castorena,castello,camargo,bunce,bullen,boyes,borchers,borchardt,birnbaum,birdsall,billman,benites,bankhead,ange,ammerman,adkison,winegar,wickman,warr,warnke,villeneuve,veasey,vassallo,vannatta,vadnais,twilley,towery,tomblin,tippett,theiss,talkington,talamantes,swart,swanger,streit,stines,stabler,spurling,sobel,sine,simmers,shippy,shiflett,shearin,sauter,sanderlin,rusch,runkle,ruckman,rorie,roesch,richert,rehm,randel,ragin,quesenberry,puentes,plyler,plotkin,paugh,oshaughnessy,ohalloran,norsworthy,niemann,nader,moorefield,mooneyham,modica,miyamoto,mickel,mebane,mckinnie,mazurek,mancilla,lukas,lovins,loughlin,lotz,lindsley,liddle,levan,lederman,leclaire,lasseter,lapoint,lamoreaux,lafollette,kubiak,kirtley,keffer,kaczmarek,housman,hiers,hibbert,herrod,hegarty,hathorn,greenhaw,grafton,govea,futch,furst,franko,forcier,foran,flickinger,fairfield,eure,emrich,embrey,edgington,ecklund,eckard,durante,deyo,delvecchio,dade,currey,creswell,cottrill,casavant,cartier,cargile,capel,cammack,calfee,burse,burruss,brust,brousseau,bridwell,braaten,borkholder,bloomquist,bjork,bartelt,amburgey,yeary,whitefield,vinyard,vanvalkenburg,twitchell,timmins,tapper,stringham,starcher,spotts,slaugh,simonsen,sheffer,sequeira,rosati,rhymes,quint,pollak,peirce,patillo,parkerson,paiva,nilson,nevin,narcisse,mitton,merriam,merced,meiners,mckain,mcelveen,mcbeth,marsden,marez,manke,mahurin,mabrey,luper,krull,hunsicker,hornbuckle,holtzclaw,hinnant,heston,hering,hemenway,hegwood,hearns,halterman,guiterrez,grote,granillo,grainger,glasco,gilder,garren,garlock,garey,fryar,fredricks,fraizer,foshee,ferrel,felty,everitt,evens,esser,elkin,eberhart,durso,duguay,driskill,doster,dewall,deveau,demps,demaio,delreal,deleo,darrah,cumberbatch,culberson,cranmer,cordle,colgan,chesley,cavallo,castellon,castelli,carreras,carnell,carlucci,bontrager,blumberg,blasingame,becton,artrip,andujar,alkire,alder,zukowski,zuckerman,wroblewski,wrigley,woodside,wigginton,westman,westgate,werts,washam,wardlow,walser,waiters,tadlock,stringfield,stimpson,stickley,standish,spurlin,spindler,speller,spaeth,sotomayor,sluder,shryock,shepardson,shatley,scannell,santistevan,rosner,resto,reinhard,rathburn,prisco,poulsen,pinney,phares,pennock,pastrana,oviedo,ostler,nauman,mulford,moise,moberly,mirabal,metoyer,metheny,mentzer,meldrum,mcinturff,mcelyea,mcdougle,massaro,lumpkins,loveday,lofgren,lirette,lesperance,lefkowitz,ledger,lauzon,lachapelle,klassen,keough,kempton,kaelin,jeffords,hsieh,hoyer,horwitz,hoeft,hennig,haskin,gourdine,golightly,girouard,fulgham,fritsch,freer,frasher,foulk,firestone,fiorentino,fedor,ensley,englehart,eells,dunphy,donahoe,dileo,dibenedetto,dabrowski,crick,coonrod,conder,coddington,chunn,chaput,cerna,carreiro,calahan,braggs,bourdon,bollman,bittle,bauder,barreras,aubuchon,anzalone,adamo,zerbe,willcox,westberg,weikel,waymire,vroman,vinci,vallejos,truesdell,troutt,trotta,tollison,toles,tichenor,symonds,surles,strayer,stgeorge,sroka,sorrentino,solares,snelson,silvestri,sikorski,shawver,schumaker,schorr,schooley,scates,satterlee,satchell,rymer,roselli,robitaille,riegel,regis,reames,provenzano,priestley,plaisance,pettey,palomares,nowakowski,monette,minyard,mclamb,mchone,mccarroll,masson,magoon,maddy,lundin,licata,leonhardt,landwehr,kircher,kinch,karpinski,johannsen,hussain,houghtaling,hoskinson,hollaway,holeman,hobgood,hiebert,goggin,geissler,gadbois,gabaldon,fleshman,flannigan,fairman,eilers,dycus,dunmire,duffield,dowler,deloatch,dehaan,deemer,clayborn,christofferso,chilson,chesney,chatfield,carron,canale,brigman,branstetter,bosse,borton,bonar,biron,barroso,arispe,zacharias,zabel,yaeger,woolford,whetzel,weakley,veatch,vandeusen,tufts,troxel,troche,traver,townsel,talarico,swilley,sterrett,stenger,speakman,sowards,sours,souders,souder,soles,sobers,snoddy,smither,shute,shoaf,shahan,schuetz,scaggs,santini,rosson,rolen,robidoux,rentas,recio,pixley,pawlowski,pawlak,paull,overbey,orear,oliveri,oldenburg,nutting,naugle,mossman,misner,milazzo,michelson,mcentee,mccullar,mccree,mcaleer,mazzone,mandell,manahan,malott,maisonet,mailloux,lumley,lowrie,louviere,lipinski,lindemann,leppert,leasure,labarge,kubik,knisely,knepp,kenworthy,kennelly,kelch,kanter,houchin,hosley,hosler,hollon,holleman,heitman,haggins,gwaltney,goulding,gorden,geraci,gathers,frison,feagin,falconer,espada,erving,erikson,eisenhauer,ebeling,durgin,dowdle,dinwiddie,delcastillo,dedrick,crimmins,covell,cournoyer,coria,cohan,cataldo,carpentier,canas,campa,brode,brashears,blaser,bicknell,bednar,barwick,ascencio,althoff,almodovar,alamo,zirkle,zabala,wolverton,winebrenner,wetherell,westlake,wegener,weddington,tuten,trosclair,tressler,theroux,teske,swinehart,swensen,sundquist,southall,socha,sizer,silverberg,shortt,shimizu,sherrard,shaeffer,scheid,scheetz,saravia,sanner,rubinstein,rozell,romer,rheaume,reisinger,randles,pullum,petrella,payan,nordin,norcross,nicoletti,nicholes,newbold,nakagawa,monteith,milstead,milliner,mellen,mccardle,liptak,leitch,latimore,larrison,landau,laborde,koval,izquierdo,hymel,hoskin,holte,hoefer,hayworth,hausman,harrill,harrel,hardt,gully,groover,grinnell,greenspan,graver,grandberry,gorrell,goldenberg,goguen,gilleland,fuson,feldmann,everly,dyess,dunnigan,downie,dolby,deatherage,cosey,cheever,celaya,caver,cashion,caplinger,cansler,byrge,bruder,breuer,breslin,brazelton,botkin,bonneau,bondurant,bohanan,bogue,bodner,boatner,blatt,bickley,belliveau,beiler,beier,beckstead,bachmann,atkin,altizer,alloway,allaire,albro,abron,zellmer,yetter,yelverton,wiens,whidden,viramontes,vanwormer,tarantino,tanksley,sumlin,strauch,strang,stice,spahn,sosebee,sigala,shrout,seamon,schrum,schneck,schantz,ruddy,romig,roehl,renninger,reding,polak,pohlman,pasillas,oldfield,oldaker,ohanlon,ogilvie,norberg,nolette,neufeld,nellis,mummert,mulvihill,mullaney,monteleone,mendonca,meisner,mcmullan,mccluney,mattis,massengill,manfredi,luedtke,lounsbury,liberatore,lamphere,laforge,jourdan,iorio,iniguez,ikeda,hubler,hodgdon,hocking,heacock,haslam,haralson,hanshaw,hannum,hallam,haden,garnes,garces,gammage,gambino,finkel,faucett,ehrhardt,eggen,dusek,durrant,dubay,dones,depasquale,delucia,degraff,decamp,davalos,cullins,conard,clouser,clontz,cifuentes,chappel,chaffins,celis,carwile,byram,bruggeman,bressler,brathwaite,brasfield,bradburn,boose,bodie,blosser,bertsch,bernardi,bernabe,bengtson,barrette,astorga,alday,albee,abrahamson,yarnell,wiltse,wiebe,waguespack,vasser,upham,turek,traxler,torain,tomaszewski,tinnin,tiner,tindell,styron,stahlman,staab,skiba,sheperd,seidl,secor,schutte,sanfilippo,ruder,rondon,rearick,procter,prochaska,pettengill,pauly,neilsen,nally,mullenax,morano,meads,mcnaughton,mcmurtry,mcmath,mckinsey,matthes,massenburg,marlar,margolis,malin,magallon,mackin,lovette,loughran,loring,longstreet,loiselle,lenihan,kunze,koepke,kerwin,kalinowski,kagan,innis,innes,holtzman,heinemann,harshman,haider,haack,grondin,grissett,greenawalt,goudy,goodlett,goldston,gokey,gardea,galaviz,gafford,gabrielson,furlow,fritch,fordyce,folger,elizalde,ehlert,eckhoff,eccleston,ealey,dubin,diemer,deschamps,delapena,decicco,debolt,cullinan,crittendon,crase,cossey,coppock,coots,colyer,cluck,chamberland,burkhead,bumpus,buchan,borman,birkholz,berardi,benda,behnke,barter,amezquita,wotring,wirtz,wingert,wiesner,whitesides,weyant,wainscott,venezia,varnell,tussey,thurlow,tabares,stiver,stell,starke,stanhope,stanek,sisler,sinnott,siciliano,shehan,selph,seager,scurlock,scranton,santucci,santangelo,saltsman,rogge,rettig,renwick,reidy,reider,redfield,premo,parente,paolucci,palmquist,ohler,netherton,mutchler,morita,mistretta,minnis,middendorf,menzel,mendosa,mendelson,meaux,mcspadden,mcquaid,mcnatt,manigault,maney,mager,lukes,lopresti,liriano,letson,lechuga,lazenby,lauria,larimore,krupp,krupa,kopec,kinchen,kifer,kerney,kerner,kennison,kegley,karcher,justis,johson,jellison,janke,huskins,holzman,hinojos,hefley,hatmaker,harte,halloway,hallenbeck,goodwyn,glaspie,geise,fullwood,fryman,frakes,fraire,farrer,enlow,engen,ellzey,eckles,earles,dunkley,drinkard,dreiling,draeger,dinardo,dills,desroches,desantiago,curlee,crumbley,critchlow,coury,courtright,coffield,cleek,charpentier,cardone,caples,cantin,buntin,bugbee,brinkerhoff,brackin,bourland,blassingame,beacham,banning,auguste,andreasen,amann,almon,alejo,adelman,abston,yerger,wymer,woodberry,windley,whiteaker,westfield,weibel,wanner,waldrep,villani,vanarsdale,utterback,updike,triggs,topete,tolar,tigner,thoms,tauber,tarvin,tally,swiney,sweatman,studebaker,stennett,starrett,stannard,stalvey,sonnenberg,smithey,sieber,sickles,shinault,segars,sanger,salmeron,rothe,rizzi,restrepo,ralls,ragusa,quiroga,papenfuss,oropeza,okane,mudge,mozingo,molinaro,mcvicker,mcgarvey,mcfalls,mccraney,matus,magers,llanos,livermore,linehan,leitner,laymon,lawing,lacourse,kwong,kollar,kneeland,kennett,kellett,kangas,janzen,hutter,huling,hofmeister,hewes,harjo,habib,guice,grullon,greggs,grayer,granier,grable,gowdy,giannini,getchell,gartman,garnica,ganey,gallimore,fetters,fergerson,farlow,fagundes,exley,esteves,enders,edenfield,easterwood,drakeford,dipasquale,desousa,deshields,deeter,dedmon,debord,daughtery,cutts,courtemanche,coursey,copple,coomes,collis,cogburn,clopton,choquette,chaidez,castrejon,calhoon,burbach,bulloch,buchman,bruhn,bohon,blough,baynes,barstow,zeman,zackery,yardley,yamashita,wulff,wilken,wiliams,wickersham,wible,whipkey,wedgeworth,walmsley,walkup,vreeland,verrill,umana,traub,swingle,summey,stroupe,stockstill,steffey,stefanski,statler,stapp,speights,solari,soderberg,shunk,shorey,shewmaker,sheilds,schiffer,schank,schaff,sagers,rochon,riser,rickett,reale,raglin,polen,plata,pitcock,percival,palen,orona,oberle,nocera,navas,nault,mullings,montejano,monreal,minick,middlebrook,meece,mcmillion,mccullen,mauck,marshburn,maillet,mahaney,magner,maclin,lucey,litteral,lippincott,leite,leaks,lamarre,jurgens,jerkins,jager,hurwitz,hughley,hotaling,horstman,hohman,hocker,hively,hipps,hessler,hermanson,hepworth,helland,hedlund,harkless,haigler,gutierez,grindstaff,glantz,giardina,gerken,gadsden,finnerty,farnum,encinas,drakes,dennie,cutlip,curtsinger,couto,cortinas,corby,chiasson,carle,carballo,brindle,borum,bober,blagg,berthiaume,beahm,batres,basnight,backes,axtell,atterberry,alvares,alegria,woodell,wojciechowski,winfree,winbush,wiest,wesner,wamsley,wakeman,verner,truex,trafton,toman,thorsen,theus,tellier,tallant,szeto,strope,stills,simkins,shuey,shaul,servin,serio,serafin,salguero,ryerson,rudder,ruark,rother,rohrbaugh,rohrbach,rohan,rogerson,risher,reeser,pryce,prokop,prins,priebe,prejean,pinheiro,petrone,petri,penson,pearlman,parikh,natoli,murakami,mullikin,mullane,motes,morningstar,mcveigh,mcgrady,mcgaughey,mccurley,marchan,manske,lusby,linde,likens,licon,leroux,lemaire,legette,laskey,laprade,laplant,kolar,kittredge,kinley,kerber,kanagy,jetton,janik,ippolito,inouye,hunsinger,howley,howery,horrell,holthaus,hiner,hilson,hilderbrand,hartzler,harnish,harada,hansford,halligan,hagedorn,gwynn,gudino,greenstein,greear,gracey,goudeau,goodner,ginsburg,gerth,gerner,fujii,frier,frenette,folmar,fleisher,fleischmann,fetzer,eisenman,earhart,dupuy,dunkelberger,drexler,dillinger,dilbeck,dewald,demby,deford,craine,chesnut,casady,carstens,carrick,carino,carignan,canchola,bushong,burman,buono,brownlow,broach,britten,brickhouse,boyden,boulton,borland,bohrer,blubaugh,bever,berggren,benevides,arocho,arends,amezcua,almendarez,zalewski,witzel,winkfield,wilhoite,vangundy,vanfleet,vanetten,vandergriff,urbanski,troiano,thibodaux,straus,stoneking,stjean,stillings,stange,speicher,speegle,smeltzer,slawson,simmonds,shuttleworth,serpa,senger,seidman,schweiger,schloss,schimmel,schechter,sayler,sabatini,ronan,rodiguez,riggleman,richins,reamer,prunty,porath,plunk,piland,philbrook,pettitt,perna,peralez,pascale,padula,oboyle,nivens,nickols,mundt,munden,montijo,mcmanis,mcgrane,mccrimmon,manzi,mangold,malick,mahar,maddock,losey,litten,leedy,leavell,ladue,krahn,kluge,junker,iversen,imler,hurtt,huizar,hubbert,howington,hollomon,holdren,hoisington,heiden,hauge,hartigan,gutirrez,griffie,greenhill,gratton,granata,gottfried,gertz,gautreaux,furry,furey,funderburg,flippen,fitzgibbon,drucker,donoghue,dildy,devers,detweiler,despres,denby,degeorge,cueto,cranston,courville,clukey,cirillo,chivers,caudillo,butera,bulluck,buckmaster,braunstein,bracamonte,bourdeau,bonnette".split(","),us_tv_and_film:"you,i,to,that,it,me,what,this,know,i'm,no,have,my,don't,just,not,do,be,your,we,it's,so,but,all,well,oh,about,right,you're,get,here,out,going,like,yeah,if,can,up,want,think,that's,now,go,him,how,got,did,why,see,come,good,really,look,will,okay,back,can't,mean,tell,i'll,hey,he's,could,didn't,yes,something,because,say,take,way,little,make,need,gonna,never,we're,too,she's,i've,sure,our,sorry,what's,let,thing,maybe,down,man,very,there's,should,anything,said,much,any,even,off,please,doing,thank,give,thought,help,talk,god,still,wait,find,nothing,again,things,let's,doesn't,call,told,great,better,ever,night,away,believe,feel,everything,you've,fine,last,keep,does,put,around,stop,they're,i'd,guy,isn't,always,listen,wanted,guys,huh,those,big,lot,happened,thanks,won't,trying,kind,wrong,talking,guess,care,bad,mom,remember,getting,we'll,together,dad,leave,understand,wouldn't,actually,hear,baby,nice,father,else,stay,done,wasn't,course,might,mind,every,enough,try,hell,came,someone,you'll,whole,yourself,idea,ask,must,coming,looking,woman,room,knew,tonight,real,son,hope,went,hmm,happy,pretty,saw,girl,sir,friend,already,saying,next,job,problem,minute,thinking,haven't,heard,honey,matter,myself,couldn't,exactly,having,probably,happen,we've,hurt,boy,dead,gotta,alone,excuse,start,kill,hard,you'd,today,car,ready,without,wants,hold,wanna,yet,seen,deal,once,gone,morning,supposed,friends,head,stuff,worry,live,truth,face,forget,true,cause,soon,knows,telling,wife,who's,chance,run,move,anyone,person,bye,somebody,heart,miss,making,meet,anyway,phone,reason,damn,lost,looks,bring,case,turn,wish,tomorrow,kids,trust,check,change,anymore,least,aren't,working,makes,taking,means,brother,hate,ago,says,beautiful,gave,fact,crazy,sit,afraid,important,rest,fun,kid,word,watch,glad,everyone,sister,minutes,everybody,bit,couple,whoa,either,mrs,feeling,daughter,wow,gets,asked,break,promise,door,close,hand,easy,question,tried,far,walk,needs,mine,killed,hospital,anybody,alright,wedding,shut,able,die,perfect,stand,comes,hit,waiting,dinner,funny,husband,almost,pay,answer,cool,eyes,news,child,shouldn't,yours,moment,sleep,read,where's,sounds,sonny,pick,sometimes,bed,date,plan,hours,lose,hands,serious,shit,behind,inside,ahead,week,wonderful,fight,past,cut,quite,he'll,sick,it'll,eat,nobody,goes,save,seems,finally,lives,worried,upset,carly,met,brought,seem,sort,safe,weren't,leaving,front,shot,loved,asking,running,clear,figure,hot,felt,parents,drink,absolutely,how's,daddy,sweet,alive,sense,meant,happens,bet,blood,ain't,kidding,lie,meeting,dear,seeing,sound,fault,ten,buy,hour,speak,lady,jen,thinks,christmas,outside,hang,possible,worse,mistake,ooh,handle,spend,totally,giving,here's,marriage,realize,unless,sex,send,needed,scared,picture,talked,ass,hundred,changed,completely,explain,certainly,sign,boys,relationship,loves,hair,lying,choice,anywhere,future,weird,luck,she'll,turned,touch,kiss,crane,questions,obviously,wonder,pain,calling,somewhere,throw,straight,cold,fast,words,food,none,drive,feelings,they'll,marry,drop,cannot,dream,protect,twenty,surprise,sweetheart,poor,looked,mad,except,gun,y'know,dance,takes,appreciate,especially,situation,besides,pull,hasn't,worth,sheridan,amazing,expect,swear,piece,busy,happening,movie,we'd,catch,perhaps,step,fall,watching,kept,darling,dog,honor,moving,till,admit,problems,murder,he'd,evil,definitely,feels,honest,eye,broke,missed,longer,dollars,tired,evening,starting,entire,trip,niles,suppose,calm,imagine,fair,caught,blame,sitting,favor,apartment,terrible,clean,learn,frasier,relax,accident,wake,prove,smart,message,missing,forgot,interested,table,nbsp,mouth,pregnant,ring,careful,shall,dude,ride,figured,wear,shoot,stick,follow,angry,write,stopped,ran,standing,forgive,jail,wearing,ladies,kinda,lunch,cristian,greenlee,gotten,hoping,phoebe,thousand,ridge,paper,tough,tape,count,boyfriend,proud,agree,birthday,they've,share,offer,hurry,feet,wondering,decision,ones,finish,voice,herself,would've,mess,deserve,evidence,cute,dress,interesting,hotel,enjoy,quiet,concerned,staying,beat,sweetie,mention,clothes,fell,neither,mmm,fix,respect,prison,attention,holding,calls,surprised,bar,keeping,gift,hadn't,putting,dark,owe,ice,helping,normal,aunt,lawyer,apart,plans,jax,girlfriend,floor,whether,everything's,box,judge,upstairs,sake,mommy,possibly,worst,acting,accept,blow,strange,saved,conversation,plane,mama,yesterday,lied,quick,lately,stuck,difference,store,she'd,bought,doubt,listening,walking,cops,deep,dangerous,buffy,sleeping,chloe,rafe,join,card,crime,gentlemen,willing,window,walked,guilty,likes,fighting,difficult,soul,joke,favorite,uncle,promised,bother,seriously,cell,knowing,broken,advice,somehow,paid,losing,push,helped,killing,boss,liked,innocent,rules,learned,thirty,risk,letting,speaking,ridiculous,afternoon,apologize,nervous,charge,patient,boat,how'd,hide,detective,planning,huge,breakfast,horrible,awful,pleasure,driving,hanging,picked,sell,quit,apparently,dying,notice,congratulations,visit,could've,c'mon,letter,decide,forward,fool,showed,smell,seemed,spell,memory,pictures,slow,seconds,hungry,hearing,kitchen,ma'am,should've,realized,kick,grab,discuss,fifty,reading,idiot,suddenly,agent,destroy,bucks,shoes,peace,arms,demon,livvie,consider,papers,incredible,witch,drunk,attorney,tells,knock,ways,gives,nose,skye,turns,keeps,jealous,drug,sooner,cares,plenty,extra,outta,weekend,matters,gosh,opportunity,impossible,waste,pretend,jump,eating,proof,slept,arrest,breathe,perfectly,warm,pulled,twice,easier,goin,dating,suit,romantic,drugs,comfortable,finds,checked,divorce,begin,ourselves,closer,ruin,smile,laugh,treat,fear,what'd,otherwise,excited,mail,hiding,stole,pacey,noticed,fired,excellent,bringing,bottom,note,sudden,bathroom,honestly,sing,foot,remind,charges,witness,finding,tree,dare,hardly,that'll,steal,silly,contact,teach,shop,plus,colonel,fresh,trial,invited,roll,reach,dirty,choose,emergency,dropped,butt,credit,obvious,locked,loving,nuts,agreed,prue,goodbye,condition,guard,fuckin,grow,cake,mood,crap,crying,belong,partner,trick,pressure,dressed,taste,neck,nurse,raise,lots,carry,whoever,drinking,they'd,breaking,file,lock,wine,spot,paying,assume,asleep,turning,viki,bedroom,shower,nikolas,camera,fill,reasons,forty,bigger,nope,breath,doctors,pants,freak,movies,folks,cream,wild,truly,desk,convince,client,threw,hurts,spending,answers,shirt,chair,rough,doin,sees,ought,empty,wind,aware,dealing,pack,tight,hurting,guest,arrested,salem,confused,surgery,expecting,deacon,unfortunately,goddamn,bottle,beyond,whenever,pool,opinion,starts,jerk,secrets,falling,necessary,barely,dancing,tests,copy,cousin,ahem,twelve,tess,skin,fifteen,speech,orders,complicated,nowhere,escape,biggest,restaurant,grateful,usual,burn,address,someplace,screw,everywhere,regret,goodness,mistakes,details,responsibility,suspect,corner,hero,dumb,terrific,whoo,hole,memories,o'clock,teeth,ruined,bite,stenbeck,liar,showing,cards,desperate,search,pathetic,spoke,scare,marah,afford,settle,stayed,checking,hired,heads,concern,blew,alcazar,champagne,connection,tickets,happiness,saving,kissing,hated,personally,suggest,prepared,onto,downstairs,ticket,it'd,loose,holy,duty,convinced,throwing,kissed,legs,loud,saturday,babies,where'd,warning,miracle,carrying,blind,ugly,shopping,hates,sight,bride,coat,clearly,celebrate,brilliant,wanting,forrester,lips,custody,screwed,buying,toast,thoughts,reality,lexie,attitude,advantage,grandfather,sami,grandma,someday,roof,marrying,powerful,grown,grandmother,fake,must've,ideas,exciting,familiar,bomb,bout,harmony,schedule,capable,practically,correct,clue,forgotten,appointment,deserves,threat,bloody,lonely,shame,jacket,hook,scary,investigation,invite,shooting,lesson,criminal,victim,funeral,considering,burning,strength,harder,sisters,pushed,shock,pushing,heat,chocolate,miserable,corinthos,nightmare,brings,zander,crash,chances,sending,recognize,healthy,boring,feed,engaged,headed,treated,knife,drag,badly,hire,paint,pardon,behavior,closet,warn,gorgeous,milk,survive,ends,dump,rent,remembered,thanksgiving,rain,revenge,prefer,spare,pray,disappeared,aside,statement,sometime,meat,fantastic,breathing,laughing,stood,affair,ours,depends,protecting,jury,brave,fingers,murdered,explanation,picking,blah,stronger,handsome,unbelievable,anytime,shake,oakdale,wherever,pulling,facts,waited,lousy,circumstances,disappointed,weak,trusted,license,nothin,trash,understanding,slip,sounded,awake,friendship,stomach,weapon,threatened,mystery,vegas,understood,basically,switch,frankly,cheap,lifetime,deny,clock,garbage,why'd,tear,ears,indeed,changing,singing,tiny,decent,avoid,messed,filled,touched,disappear,exact,pills,kicked,harm,fortune,pretending,insurance,fancy,drove,cared,belongs,nights,lorelai,lift,timing,guarantee,chest,woke,burned,watched,heading,selfish,drinks,doll,committed,elevator,freeze,noise,wasting,ceremony,uncomfortable,staring,files,bike,stress,permission,thrown,possibility,borrow,fabulous,doors,screaming,bone,xander,what're,meal,apology,anger,honeymoon,bail,parking,fixed,wash,stolen,sensitive,stealing,photo,chose,lets,comfort,worrying,pocket,mateo,bleeding,shoulder,ignore,talent,tied,garage,dies,demons,dumped,witches,rude,crack,bothering,radar,soft,meantime,gimme,kinds,fate,concentrate,throat,prom,messages,intend,ashamed,somethin,manage,guilt,interrupt,guts,tongue,shoe,basement,sentence,purse,glasses,cabin,universe,repeat,mirror,wound,travers,tall,engagement,therapy,emotional,jeez,decisions,soup,thrilled,stake,chef,moves,extremely,moments,expensive,counting,shots,kidnapped,cleaning,shift,plate,impressed,smells,trapped,aidan,knocked,charming,attractive,argue,puts,whip,embarrassed,package,hitting,bust,stairs,alarm,pure,nail,nerve,incredibly,walks,dirt,stamp,terribly,friendly,damned,jobs,suffering,disgusting,stopping,deliver,riding,helps,disaster,bars,crossed,trap,talks,eggs,chick,threatening,spoken,introduce,confession,embarrassing,bags,impression,gate,reputation,presents,chat,suffer,argument,talkin,crowd,homework,coincidence,cancel,pride,solve,hopefully,pounds,pine,mate,illegal,generous,outfit,maid,bath,punch,freaked,begging,recall,enjoying,prepare,wheel,defend,signs,painful,yourselves,maris,that'd,suspicious,cooking,button,warned,sixty,pity,yelling,awhile,confidence,offering,pleased,panic,hers,gettin,refuse,grandpa,testify,choices,cruel,mental,gentleman,coma,cutting,proteus,guests,expert,benefit,faces,jumped,toilet,sneak,halloween,privacy,smoking,reminds,twins,swing,solid,options,commitment,crush,ambulance,wallet,gang,eleven,option,laundry,assure,stays,skip,fail,discussion,clinic,betrayed,sticking,bored,mansion,soda,sheriff,suite,handled,busted,load,happier,studying,romance,procedure,commit,assignment,suicide,minds,swim,yell,llanview,chasing,proper,believes,humor,hopes,lawyers,giant,latest,escaped,parent,tricks,insist,dropping,cheer,medication,flesh,routine,sandwich,handed,false,beating,warrant,awfully,odds,treating,thin,suggesting,fever,sweat,silent,clever,sweater,mall,sharing,assuming,judgment,goodnight,divorced,surely,steps,confess,math,listened,comin,answered,vulnerable,bless,dreaming,chip,zero,pissed,nate,kills,tears,knees,chill,brains,unusual,packed,dreamed,cure,lookin,grave,cheating,breaks,locker,gifts,awkward,thursday,joking,reasonable,dozen,curse,quartermaine,millions,dessert,rolling,detail,alien,delicious,closing,vampires,wore,tail,secure,salad,murderer,spit,offense,dust,conscience,bread,answering,lame,invitation,grief,smiling,pregnancy,prisoner,delivery,guards,virus,shrink,freezing,wreck,massimo,wire,technically,blown,anxious,cave,holidays,cleared,wishes,caring,candles,bound,charm,pulse,jumping,jokes,boom,occasion,silence,nonsense,frightened,slipped,dimera,blowing,relationships,kidnapping,spin,tool,roxy,packing,blaming,wrap,obsessed,fruit,torture,personality,there'll,fairy,necessarily,seventy,print,motel,underwear,grams,exhausted,believing,freaking,carefully,trace,touching,messing,recovery,intention,consequences,belt,sacrifice,courage,enjoyed,attracted,remove,testimony,intense,heal,defending,unfair,relieved,loyal,slowly,buzz,alcohol,surprises,psychiatrist,plain,attic,who'd,uniform,terrified,cleaned,zach,threaten,fella,enemies,satisfied,imagination,hooked,headache,forgetting,counselor,andie,acted,badge,naturally,frozen,sakes,appropriate,trunk,dunno,costume,sixteen,impressive,kicking,junk,grabbed,understands,describe,clients,owns,affect,witnesses,starving,instincts,happily,discussing,deserved,strangers,surveillance,admire,questioning,dragged,barn,deeply,wrapped,wasted,tense,hoped,fellas,roommate,mortal,fascinating,stops,arrangements,agenda,literally,propose,honesty,underneath,sauce,promises,lecture,eighty,torn,shocked,backup,differently,ninety,deck,biological,pheebs,ease,creep,waitress,telephone,ripped,raising,scratch,rings,prints,thee,arguing,ephram,asks,oops,diner,annoying,taggert,sergeant,blast,towel,clown,habit,creature,bermuda,snap,react,paranoid,handling,eaten,therapist,comment,sink,reporter,nurses,beats,priority,interrupting,warehouse,loyalty,inspector,pleasant,excuses,threats,guessing,tend,praying,motive,unconscious,mysterious,unhappy,tone,switched,rappaport,sookie,neighbor,loaded,swore,piss,balance,toss,misery,thief,squeeze,lobby,goa'uld,geez,exercise,forth,booked,sandburg,poker,eighteen,d'you,bury,everyday,digging,creepy,wondered,liver,hmmm,magical,fits,discussed,moral,helpful,searching,flew,depressed,aisle,cris,amen,vows,neighbors,darn,cents,arrange,annulment,useless,adventure,resist,fourteen,celebrating,inch,debt,violent,sand,teal'c,celebration,reminded,phones,paperwork,emotions,stubborn,pound,tension,stroke,steady,overnight,chips,beef,suits,boxes,cassadine,collect,tragedy,spoil,realm,wipe,surgeon,stretch,stepped,nephew,neat,limo,confident,perspective,climb,punishment,finest,springfield,hint,furniture,blanket,twist,proceed,fries,worries,niece,gloves,soap,signature,disappoint,crawl,convicted,flip,counsel,doubts,crimes,accusing,shaking,remembering,hallway,halfway,bothered,madam,gather,cameras,blackmail,symptoms,rope,ordinary,imagined,cigarette,supportive,explosion,trauma,ouch,furious,cheat,avoiding,whew,thick,oooh,boarding,approve,urgent,shhh,misunderstanding,drawer,phony,interfere,catching,bargain,tragic,respond,punish,penthouse,thou,rach,ohhh,insult,bugs,beside,begged,absolute,strictly,socks,senses,sneaking,reward,polite,checks,tale,physically,instructions,fooled,blows,tabby,bitter,adorable,y'all,tested,suggestion,jewelry,alike,jacks,distracted,shelter,lessons,constable,circus,audition,tune,shoulders,mask,helpless,feeding,explains,sucked,robbery,objection,behave,valuable,shadows,courtroom,confusing,talented,smarter,mistaken,customer,bizarre,scaring,motherfucker,alert,vecchio,reverend,foolish,compliment,bastards,worker,wheelchair,protective,gentle,reverse,picnic,knee,cage,wives,wednesday,voices,toes,stink,scares,pour,cheated,slide,ruining,filling,exit,cottage,upside,proves,parked,diary,complaining,confessed,pipe,merely,massage,chop,spill,prayer,betray,waiter,scam,rats,fraud,brush,tables,sympathy,pill,filthy,seventeen,employee,bracelet,pays,fairly,deeper,arrive,tracking,spite,shed,recommend,oughta,nanny,menu,diet,corn,roses,patch,dime,devastated,subtle,bullets,beans,pile,confirm,strings,parade,borrowed,toys,straighten,steak,premonition,planted,honored,exam,convenient,traveling,laying,insisted,dish,aitoro,kindly,grandson,donor,temper,teenager,proven,mothers,denial,backwards,tent,swell,noon,happiest,drives,thinkin,spirits,potion,holes,fence,whatsoever,rehearsal,overheard,lemme,hostage,bench,tryin,taxi,shove,moron,impress,needle,intelligent,instant,disagree,stinks,rianna,recover,groom,gesture,constantly,bartender,suspects,sealed,legally,hears,dresses,sheet,psychic,teenage,knocking,judging,accidentally,waking,rumor,manners,homeless,hollow,desperately,tapes,referring,item,genoa,gear,majesty,cried,tons,spells,instinct,quote,motorcycle,convincing,fashioned,aids,accomplished,grip,bump,upsetting,needing,invisible,forgiveness,feds,compare,bothers,tooth,inviting,earn,compromise,cocktail,tramp,jabot,intimate,dignity,dealt,souls,informed,gods,dressing,cigarettes,alistair,leak,fond,corky,seduce,liquor,fingerprints,enchantment,butters,stuffed,stavros,emotionally,transplant,tips,oxygen,nicely,lunatic,drill,complain,announcement,unfortunate,slap,prayers,plug,opens,oath,o'neill,mutual,yacht,remembers,fried,extraordinary,bait,warton,sworn,stare,safely,reunion,burst,might've,dive,aboard,expose,buddies,trusting,booze,sweep,sore,scudder,properly,parole,ditch,canceled,speaks,glow,wears,thirsty,skull,ringing,dorm,dining,bend,unexpected,pancakes,harsh,flattered,ahhh,troubles,fights,favourite,eats,rage,undercover,spoiled,sloane,shine,destroying,deliberately,conspiracy,thoughtful,sandwiches,plates,nails,miracles,fridge,drank,contrary,beloved,allergic,washed,stalking,solved,sack,misses,forgiven,bent,maciver,involve,dragging,cooked,pointing,foul,dull,beneath,heels,faking,deaf,stunt,jealousy,hopeless,fears,cuts,scenario,necklace,crashed,accuse,restraining,homicide,helicopter,firing,safer,auction,videotape,tore,reservations,pops,appetite,wounds,vanquish,ironic,fathers,excitement,anyhow,tearing,sends,rape,laughed,belly,dealer,cooperate,accomplish,wakes,spotted,sorts,reservation,ashes,tastes,supposedly,loft,intentions,integrity,wished,towels,suspected,investigating,inappropriate,lipstick,lawn,compassion,cafeteria,scarf,precisely,obsession,loses,lighten,infection,granddaughter,explode,balcony,this'll,spying,publicity,depend,cracked,conscious,ally,absurd,vicious,invented,forbid,directions,defendant,bare,announce,screwing,salesman,robbed,leap,lakeview,insanity,reveal,possibilities,kidnap,gown,chairs,wishing,setup,punished,criminals,regrets,raped,quarters,lamp,dentist,anyways,anonymous,semester,risks,owes,lungs,explaining,delicate,tricked,eager,doomed,adoption,stab,sickness,scum,floating,envelope,vault,sorel,pretended,potatoes,plea,photograph,payback,misunderstood,kiddo,healing,cascade,capeside,stabbed,remarkable,brat,privilege,passionate,nerves,lawsuit,kidney,disturbed,cozy,tire,shirts,oven,ordering,delay,risky,monsters,honorable,grounded,closest,breakdown,bald,abandon,scar,collar,worthless,sucking,enormous,disturbing,disturb,distract,deals,conclusions,vodka,dishes,crawling,briefcase,wiped,whistle,sits,roast,rented,pigs,flirting,deposit,bottles,topic,riot,overreacting,logical,hostile,embarrass,casual,beacon,amusing,altar,claus,survival,skirt,shave,porch,ghosts,favors,drops,dizzy,chili,advise,strikes,rehab,photographer,peaceful,leery,heavens,fortunately,fooling,expectations,cigar,weakness,ranch,practicing,examine,cranes,bribe,sail,prescription,hush,fragile,forensics,expense,drugged,cows,bells,visitor,suitcase,sorta,scan,manticore,insecure,imagining,hardest,clerk,wrist,what'll,starters,silk,pump,pale,nicer,haul,flies,boot,thumb,there'd,how're,elders,quietly,pulls,idiots,erase,denying,ankle,amnesia,accepting,heartbeat,devane,confront,minus,legitimate,fixing,arrogant,tuna,supper,slightest,sins,sayin,recipe,pier,paternity,humiliating,genuine,snack,rational,minded,guessed,weddings,tumor,humiliated,aspirin,spray,picks,eyed,drowning,contacts,ritual,perfume,hiring,hating,docks,creatures,visions,thanking,thankful,sock,nineteen,fork,throws,teenagers,stressed,slice,rolls,plead,ladder,kicks,detectives,assured,tellin,shallow,responsibilities,repay,howdy,girlfriends,deadly,comforting,ceiling,verdict,insensitive,spilled,respected,messy,interrupted,halliwell,blond,bleed,wardrobe,takin,murders,backs,underestimate,justify,harmless,frustrated,fold,enzo,communicate,bugging,arson,whack,salary,rumors,obligation,liking,dearest,congratulate,vengeance,rack,puzzle,fires,courtesy,caller,blamed,tops,quiz,prep,curiosity,circles,barbecue,sunnydale,spinning,psychotic,cough,accusations,resent,laughs,freshman,envy,drown,bartlet,asses,sofa,poster,highness,dock,apologies,theirs,stat,stall,realizes,psych,mmmm,fools,understandable,treats,succeed,stir,relaxed,makin,gratitude,faithful,accent,witter,wandering,locate,inevitable,gretel,deed,crushed,controlling,smelled,robe,gossip,gambling,cosmetics,accidents,surprising,stiff,sincere,rushed,refrigerator,preparing,nightmares,mijo,ignoring,hunch,fireworks,drowned,brass,whispering,sophisticated,luggage,hike,explore,emotion,crashing,contacted,complications,shining,rolled,righteous,reconsider,goody,geek,frightening,ethics,creeps,courthouse,camping,affection,smythe,haircut,essay,baked,apologized,vibe,respects,receipt,mami,hats,destructive,adore,adopt,tracked,shorts,reminding,dough,creations,cabot,barrel,snuck,slight,reporters,pressing,magnificent,madame,lazy,glorious,fiancee,bits,visitation,sane,kindness,shoulda,rescued,mattress,lounge,lifted,importantly,glove,enterprises,disappointment,condo,beings,admitting,yelled,waving,spoon,screech,satisfaction,reads,nailed,worm,tick,resting,marvelous,fuss,cortlandt,chased,pockets,luckily,lilith,filing,conversations,consideration,consciousness,worlds,innocence,forehead,aggressive,trailer,slam,quitting,inform,delighted,daylight,danced,confidential,aunts,washing,tossed,spectra,marrow,lined,implying,hatred,grill,corpse,clues,sober,offended,morgue,infected,humanity,distraction,cart,wired,violation,promising,harassment,glue,d'angelo,cursed,brutal,warlocks,wagon,unpleasant,proving,priorities,mustn't,lease,flame,disappearance,depressing,thrill,sitter,ribs,flush,earrings,deadline,corporal,collapsed,update,snapped,smack,melt,figuring,delusional,coulda,burnt,tender,sperm,realise,pork,popped,interrogation,esteem,choosing,undo,pres,prayed,plague,manipulate,insulting,detention,delightful,coffeehouse,betrayal,apologizing,adjust,wrecked,wont,whipped,rides,reminder,monsieur,faint,bake,distress,correctly,complaint,blocked,tortured,risking,pointless,handing,dumping,cups,alibi,struggling,shiny,risked,mummy,mint,hose,hobby,fortunate,fleischman,fitting,curtain,counseling,rode,puppet,modeling,memo,irresponsible,humiliation,hiya,freakin,felony,choke,blackmailing,appreciated,tabloid,suspicion,recovering,pledge,panicked,nursery,louder,jeans,investigator,homecoming,frustrating,buys,busting,buff,sleeve,irony,dope,declare,autopsy,workin,torch,prick,limb,hysterical,goddamnit,fetch,dimension,crowded,clip,climbing,bonding,woah,trusts,negotiate,lethal,iced,fantasies,deeds,bore,babysitter,questioned,outrageous,kiriakis,insulted,grudge,driveway,deserted,definite,beep,wires,suggestions,searched,owed,lend,drunken,demanding,costanza,conviction,bumped,weigh,touches,tempted,shout,resolve,relate,poisoned,meals,invitations,haunted,bogus,autograph,affects,tolerate,stepping,spontaneous,sleeps,probation,manny,fist,spectacular,hostages,heroin,havin,habits,encouraging,consult,burgers,boyfriends,bailed,baggage,watches,troubled,torturing,teasing,sweetest,qualities,postpone,overwhelmed,malkovich,impulse,classy,charging,amazed,policeman,hypocrite,humiliate,hideous,d'ya,costumes,bluffing,betting,bein,bedtime,alcoholic,vegetable,tray,suspicions,spreading,splendid,shrimp,shouting,pressed,nooo,grieving,gladly,fling,eliminate,cereal,aaah,sonofabitch,paralyzed,lotta,locks,guaranteed,dummy,despise,dental,briefing,bluff,batteries,whatta,sounding,servants,presume,handwriting,fainted,dried,allright,acknowledge,whacked,toxic,reliable,quicker,overwhelming,lining,harassing,fatal,endless,dolls,convict,whatcha,unlikely,shutting,positively,overcome,goddam,essence,dose,diagnosis,cured,bully,ahold,yearbook,tempting,shelf,prosecution,pouring,possessed,greedy,wonders,thorough,spine,rath,psychiatric,meaningless,latte,jammed,ignored,fiance,evidently,contempt,compromised,cans,weekends,urge,theft,suing,shipment,scissors,responding,proposition,noises,matching,hormones,hail,grandchildren,gently,smashed,sexually,sentimental,nicest,manipulated,intern,handcuffs,framed,errands,entertaining,crib,carriage,barge,spends,slipping,seated,rubbing,rely,reject,recommendation,reckon,headaches,float,embrace,corners,whining,sweating,skipped,mountie,motives,listens,cristobel,cleaner,cheerleader,balsom,unnecessary,stunning,scent,quartermaines,pose,montega,loosen,info,hottest,haunt,gracious,forgiving,errand,cakes,blames,abortion,sketch,shifts,plotting,perimeter,pals,mere,mattered,lonigan,interference,eyewitness,enthusiasm,diapers,strongest,shaken,punched,portal,catches,backyard,terrorists,sabotage,organs,needy,cuff,civilization,woof,who'll,prank,obnoxious,mates,hereby,gabby,faked,cellar,whitelighter,void,strangle,sour,muffins,interfering,demonic,clearing,boutique,barrington,terrace,smoked,righty,quack,petey,pact,knot,ketchup,disappearing,cordy,uptight,ticking,terrifying,tease,swamp,secretly,rejection,reflection,realizing,rays,mentally,marone,doubted,deception,congressman,cheesy,toto,stalling,scoop,ribbon,immune,expects,destined,bets,bathing,appreciation,accomplice,wander,shoved,sewer,scroll,retire,lasts,fugitive,freezer,discount,cranky,crank,clearance,bodyguard,anxiety,accountant,whoops,volunteered,talents,stinking,remotely,garlic,decency,cord,beds,altogether,uniforms,tremendous,popping,outa,observe,lung,hangs,feelin,dudes,donation,disguise,curb,bites,antique,toothbrush,realistic,predict,landlord,hourglass,hesitate,consolation,babbling,tipped,stranded,smartest,repeating,puke,psst,paycheck,overreacted,macho,juvenile,grocery,freshen,disposal,cuffs,caffeine,vanished,unfinished,ripping,pinch,flattering,expenses,dinners,colleague,ciao,belthazor,attorneys,woulda,whereabouts,waitin,truce,tripped,tasted,steer,poisoning,manipulative,immature,husbands,heel,granddad,delivering,condoms,addict,trashed,raining,pasta,needles,leaning,detector,coolest,batch,appointments,almighty,vegetables,spark,perfection,pains,momma,mole,meow,hairs,getaway,cracking,compliments,behold,verge,tougher,timer,tapped,taped,specialty,snooping,shoots,rendezvous,pentagon,leverage,jeopardize,janitor,grandparents,forbidden,clueless,bidding,ungrateful,unacceptable,tutor,serum,scuse,pajamas,mouths,lure,irrational,doom,cries,beautifully,arresting,approaching,traitor,sympathetic,smug,smash,rental,prostitute,premonitions,jumps,inventory,darlin,committing,banging,asap,worms,violated,vent,traumatic,traced,sweaty,shaft,overboard,insight,healed,grasp,experiencing,crappy,crab,chunk,awww,stain,shack,reacted,pronounce,poured,moms,marriages,jabez,handful,flipped,fireplace,embarrassment,disappears,concussion,bruises,brakes,twisting,swept,summon,splitting,sloppy,settling,reschedule,notch,hooray,grabbing,exquisite,disrespect,thornhart,straw,slapped,shipped,shattered,ruthless,refill,payroll,numb,mourning,manly,hunk,entertain,drift,dreadful,doorstep,confirmation,chops,appreciates,vague,tires,stressful,stashed,stash,sensed,preoccupied,predictable,noticing,madly,gunshot,dozens,dork,confuse,cleaners,charade,chalk,cappuccino,bouquet,amulet,addiction,who've,warming,unlock,satisfy,sacrificed,relaxing,lone,blocking,blend,blankets,addicted,yuck,hunger,hamburger,greeting,greet,gravy,gram,dreamt,dice,caution,backpack,agreeing,whale,taller,supervisor,sacrifices,phew,ounce,irrelevant,gran,felon,favorites,farther,fade,erased,easiest,convenience,compassionate,cane,backstage,agony,adores,veins,tweek,thieves,surgical,strangely,stetson,recital,proposing,productive,meaningful,immunity,hassle,goddamned,frighten,dearly,cease,ambition,wage,unstable,salvage,richer,refusing,raging,pumping,pressuring,mortals,lowlife,intimidated,intentionally,inspire,forgave,devotion,despicable,deciding,dash,comfy,breach,bark,aaaah,switching,swallowed,stove,screamed,scars,russians,pounding,poof,pipes,pawn,legit,invest,farewell,curtains,civilized,caviar,boost,token,superstition,supernatural,sadness,recorder,psyched,motivated,microwave,hallelujah,fraternity,dryer,cocoa,chewing,acceptable,unbelievably,smiled,smelling,simpler,respectable,remarks,khasinau,indication,gutter,grabs,fulfill,flashlight,ellenor,blooded,blink,blessings,beware,uhhh,turf,swings,slips,shovel,shocking,puff,mirrors,locking,heartless,fras,childish,cardiac,utterly,tuscany,ticked,stunned,statesville,sadly,purely,kiddin,jerks,hitch,flirt,fare,equals,dismiss,christening,casket,c'mere,breakup,biting,antibiotics,accusation,abducted,witchcraft,thread,runnin,punching,paramedics,newest,murdering,masks,lawndale,initials,grampa,choking,charms,careless,bushes,buns,bummed,shred,saves,saddle,rethink,regards,precinct,persuade,meds,manipulating,llanfair,leash,hearted,guarantees,fucks,disgrace,deposition,bookstore,boil,vitals,veil,trespassing,sidewalk,sensible,punishing,overtime,optimistic,obsessing,notify,mornin,jeopardy,jaffa,injection,hilarious,desires,confide,cautious,yada,where're,vindictive,vial,teeny,stroll,sittin,scrub,rebuild,posters,ordeal,nuns,intimacy,inheritance,exploded,donate,distracting,despair,crackers,wildwind,virtue,thoroughly,tails,spicy,sketches,sights,sheer,shaving,seize,scarecrow,refreshing,prosecute,platter,napkin,misplaced,merchandise,loony,jinx,heroic,frankenstein,ambitious,syrup,solitary,resemblance,reacting,premature,lavery,flashes,cheque,awright,acquainted,wrapping,untie,salute,realised,priceless,partying,lightly,lifting,kasnoff,insisting,glowing,generator,explosives,cutie,confronted,buts,blouse,ballistic,antidote,analyze,allowance,adjourned,unto,understatement,tucked,touchy,subconscious,screws,sarge,roommates,rambaldi,offend,nerd,knives,irresistible,incapable,hostility,goddammit,fuse,frat,curfew,blackmailed,walkin,starve,sleigh,sarcastic,recess,rebound,pinned,parlor,outfits,livin,heartache,haired,fundraiser,doorman,discreet,dilucca,cracks,considerate,climbed,catering,apophis,zoey,urine,strung,stitches,sordid,sark,protector,phoned,pets,hostess,flaw,flavor,deveraux,consumed,confidentiality,bourbon,straightened,specials,spaghetti,prettier,powerless,playin,playground,paranoia,instantly,havoc,exaggerating,eavesdropping,doughnuts,diversion,deepest,cutest,comb,bela,behaving,anyplace,accessory,workout,translate,stuffing,speeding,slime,royalty,polls,marital,lurking,lottery,imaginary,greetings,fairwinds,elegant,elbow,credibility,credentials,claws,chopped,bridal,bedside,babysitting,witty,unforgivable,underworld,tempt,tabs,sophomore,selfless,secrecy,restless,okey,movin,metaphor,messes,meltdown,lecter,incoming,gasoline,diefenbaker,buckle,admired,adjustment,warmth,throats,seduced,queer,parenting,noses,luckiest,graveyard,gifted,footsteps,dimeras,cynical,wedded,verbal,unpredictable,tuned,stoop,slides,sinking,rigged,plumbing,lingerie,hankey,greed,everwood,elope,dresser,chauffeur,bulletin,bugged,bouncing,temptation,strangest,slammed,sarcasm,pending,packages,orderly,obsessive,murderers,meteor,inconvenience,glimpse,froze,execute,courageous,consulate,closes,bosses,bees,amends,wuss,wolfram,wacky,unemployed,testifying,syringe,stew,startled,sorrow,sleazy,shaky,screams,rsquo,remark,poke,nutty,mentioning,mend,inspiring,impulsive,housekeeper,foam,fingernails,conditioning,baking,whine,thug,starved,sniffing,sedative,programmed,picket,paged,hound,homosexual,homo,hips,forgets,flipping,flea,flatter,dwell,dumpster,choo,assignments,ants,vile,unreasonable,tossing,thanked,steals,souvenir,scratched,psychopath,outs,obstruction,obey,lump,insists,harass,gloat,filth,edgy,didn,coroner,confessing,bruise,betraying,bailing,appealing,adebisi,wrath,wandered,waist,vain,traps,stepfather,poking,obligated,heavenly,dilemma,crazed,contagious,coaster,cheering,bundle,vomit,thingy,speeches,robbing,raft,pumped,pillows,peep,packs,neglected,m'kay,loneliness,intrude,helluva,gardener,forresters,drooling,betcha,vase,supermarket,squat,spitting,rhyme,relieve,receipts,racket,pictured,pause,overdue,motivation,morgendorffer,kidnapper,insect,horns,feminine,eyeballs,dumps,disappointing,crock,convertible,claw,clamp,canned,cambias,bathtub,avanya,artery,weep,warmer,suspense,summoned,spiders,reiber,raving,pushy,postponed,ohhhh,noooo,mold,laughter,incompetent,hugging,groceries,drip,communicating,auntie,adios,wraps,wiser,willingly,weirdest,timmih,thinner,swelling,swat,steroids,sensitivity,scrape,rehearse,prophecy,ledge,justified,insults,hateful,handles,doorway,chatting,buyer,buckaroo,bedrooms,askin,ammo,tutoring,subpoena,scratching,privileges,pager,mart,intriguing,idiotic,grape,enlighten,corrupt,brunch,bridesmaid,barking,applause,acquaintance,wretched,superficial,soak,smoothly,sensing,restraint,posing,pleading,payoff,oprah,nemo,morals,loaf,jumpy,ignorant,herbal,hangin,germs,generosity,flashing,doughnut,clumsy,chocolates,captive,behaved,apologise,vanity,stumbled,preview,poisonous,perjury,parental,onboard,mugged,minding,linen,knots,interviewing,humour,grind,greasy,goons,drastic,coop,comparing,cocky,clearer,bruised,brag,bind,worthwhile,whoop,vanquishing,tabloids,sprung,spotlight,sentencing,racist,provoke,pining,overly,locket,imply,impatient,hovering,hotter,fest,endure,dots,doren,debts,crawled,chained,brit,breaths,weirdo,warmed,wand,troubling,tok'ra,strapped,soaked,skipping,scrambled,rattle,profound,musta,mocking,misunderstand,limousine,kacl,hustle,forensic,enthusiastic,duct,drawers,devastating,conquer,clarify,chores,cheerleaders,cheaper,callin,blushing,barging,abused,yoga,wrecking,wits,waffles,virginity,vibes,uninvited,unfaithful,teller,strangled,scheming,ropes,rescuing,rave,postcard,o'reily,morphine,lotion,lads,kidneys,judgement,itch,indefinitely,grenade,glamorous,genetically,freud,discretion,delusions,crate,competent,bakery,argh,ahhhh,wedge,wager,unfit,tripping,torment,superhero,stirring,spinal,sorority,seminar,scenery,rabble,pneumonia,perks,override,ooooh,mija,manslaughter,mailed,lime,lettuce,intimidate,guarded,grieve,grad,frustration,doorbell,chinatown,authentic,arraignment,annulled,allergies,wanta,verify,vegetarian,tighter,telegram,stalk,spared,shoo,satisfying,saddam,requesting,pens,overprotective,obstacles,notified,nasedo,grandchild,genuinely,flushed,fluids,floss,escaping,ditched,cramp,corny,bunk,bitten,billions,bankrupt,yikes,wrists,ultrasound,ultimatum,thirst,sniff,shakes,salsa,retrieve,reassuring,pumps,neurotic,negotiating,needn't,monitors,millionaire,lydecker,limp,incriminating,hatchet,gracias,gordie,fills,feeds,doubting,decaf,biopsy,whiz,voluntarily,ventilator,unpack,unload,toad,spooked,snitch,schillinger,reassure,persuasive,mystical,mysteries,matrimony,mails,jock,headline,explanations,dispatch,curly,cupid,condolences,comrade,cassadines,bulb,bragging,awaits,assaulted,ambush,adolescent,abort,yank,whit,vaguely,undermine,tying,swamped,stabbing,slippers,slash,sincerely,sigh,setback,secondly,rotting,precaution,pcpd,melting,liaison,hots,hooking,headlines,haha,ganz,fury,felicity,fangs,encouragement,earring,dreidel,dory,donut,dictate,decorating,cocktails,bumps,blueberry,believable,backfired,backfire,apron,adjusting,vous,vouch,vitamins,ummm,tattoos,slimy,sibling,shhhh,renting,peculiar,parasite,paddington,marries,mailbox,magically,lovebirds,knocks,informant,exits,drazen,distractions,disconnected,dinosaurs,dashwood,crooked,conveniently,wink,warped,underestimated,tacky,shoving,seizure,reset,pushes,opener,mornings,mash,invent,indulge,horribly,hallucinating,festive,eyebrows,enjoys,desperation,dealers,darkest,daph,boragora,belts,bagel,authorization,auditions,agitated,wishful,wimp,vanish,unbearable,tonic,suffice,suction,slaying,safest,rocking,relive,puttin,prettiest,noisy,newlyweds,nauseous,misguided,mildly,midst,liable,judgmental,indy,hunted,givin,fascinated,elephants,dislike,deluded,decorate,crummy,contractions,carve,bottled,bonded,bahamas,unavailable,twenties,trustworthy,surgeons,stupidity,skies,remorse,preferably,pies,nausea,napkins,mule,mourn,melted,mashed,inherit,greatness,golly,excused,dumbo,drifting,delirious,damaging,cubicle,compelled,comm,chooses,checkup,boredom,bandages,alarms,windshield,who're,whaddya,transparent,surprisingly,sunglasses,slit,roar,reade,prognosis,probe,pitiful,persistent,peas,nosy,nagging,morons,masterpiece,martinis,limbo,liars,irritating,inclined,hump,hoynes,fiasco,eatin,cubans,concentrating,colorful,clam,cider,brochure,barto,bargaining,wiggle,welcoming,weighing,vanquished,stains,sooo,snacks,smear,sire,resentment,psychologist,pint,overhear,morality,landingham,kisser,hoot,holling,handshake,grilled,formality,elevators,depths,confirms,boathouse,accidental,westbridge,wacko,ulterior,thugs,thighs,tangled,stirred,snag,sling,sleaze,rumour,ripe,remarried,puddle,pins,perceptive,miraculous,longing,lockup,librarian,impressions,immoral,hypothetically,guarding,gourmet,gabe,faxed,extortion,downright,digest,cranberry,bygones,buzzing,burying,bikes,weary,taping,takeout,sweeping,stepmother,stale,senor,seaborn,pros,pepperoni,newborn,ludicrous,injected,geeks,forged,faults,drue,dire,dief,desi,deceiving,caterer,calmed,budge,ankles,vending,typing,tribbiani,there're,squared,snowing,shades,sexist,rewrite,regretted,raises,picky,orphan,mural,misjudged,miscarriage,memorize,leaking,jitters,invade,interruption,illegally,handicapped,glitch,gittes,finer,distraught,dispose,dishonest,digs,dads,cruelty,circling,canceling,butterflies,belongings,barbrady,amusement,alias,zombies,where've,unborn,swearing,stables,squeezed,sensational,resisting,radioactive,questionable,privileged,portofino,owning,overlook,orson,oddly,interrogate,imperative,impeccable,hurtful,hors,heap,graders,glance,disgust,devious,destruct,crazier,countdown,chump,cheeseburger,burglar,berries,ballroom,assumptions,annoyed,allergy,admirer,admirable,activate,underpants,twit,tack,strokes,stool,sham,scrap,retarded,resourceful,remarkably,refresh,pressured,precautions,pointy,nightclub,mustache,maui,lace,hunh,hubby,flare,dont,dokey,dangerously,crushing,clinging,choked,chem,cheerleading,checkbook,cashmere,calmly,blush,believer,amazingly,alas,what've,toilets,tacos,stairwell,spirited,sewing,rubbed,punches,protects,nuisance,motherfuckers,mingle,kynaston,knack,kinkle,impose,gullible,godmother,funniest,friggin,folding,fashions,eater,dysfunctional,drool,dripping,ditto,cruising,criticize,conceive,clone,cedars,caliber,brighter,blinded,birthdays,banquet,anticipate,annoy,whim,whichever,volatile,veto,vested,shroud,rests,reindeer,quarantine,pleases,painless,orphans,orphanage,offence,obliged,negotiation,narcotics,mistletoe,meddling,manifest,lookit,lilah,intrigued,injustice,homicidal,gigantic,exposing,elves,disturbance,disastrous,depended,demented,correction,cooped,cheerful,buyers,brownies,beverage,basics,arvin,weighs,upsets,unethical,swollen,sweaters,stupidest,sensation,scalpel,props,prescribed,pompous,objections,mushrooms,mulwray,manipulation,lured,internship,insignificant,inmate,incentive,fulfilled,disagreement,crypt,cornered,copied,brightest,beethoven,attendant,amaze,yogurt,wyndemere,vocabulary,tulsa,tactic,stuffy,respirator,pretends,polygraph,pennies,ordinarily,olives,necks,morally,martyr,leftovers,joints,hopping,homey,hints,heartbroken,forge,florist,firsthand,fiend,dandy,crippled,corrected,conniving,conditioner,clears,chemo,bubbly,bladder,beeper,baptism,wiring,wench,weaknesses,volunteering,violating,unlocked,tummy,surrogate,subid,stray,startle,specifics,slowing,scoot,robbers,rightful,richest,qfxmjrie,puffs,pierced,pencils,paralysis,makeover,luncheon,linksynergy,jerky,jacuzzi,hitched,hangover,fracture,flock,firemen,disgusted,darned,clams,borrowing,banged,wildest,weirder,unauthorized,stunts,sleeves,sixties,shush,shalt,retro,quits,pegged,painfully,paging,omelet,memorized,lawfully,jackets,intercept,ingredient,grownup,glued,fulfilling,enchanted,delusion,daring,compelling,carton,bridesmaids,bribed,boiling,bathrooms,bandage,awaiting,assign,arrogance,antiques,ainsley,turkeys,trashing,stockings,stalked,stabilized,skates,sedated,robes,respecting,psyche,presumptuous,prejudice,paragraph,mocha,mints,mating,mantan,lorne,loads,listener,itinerary,hepatitis,heave,guesses,fading,examining,dumbest,dishwasher,deceive,cunning,cripple,convictions,confided,compulsive,compromising,burglary,bumpy,brainwashed,benes,arnie,affirmative,adrenaline,adamant,watchin,waitresses,transgenic,toughest,tainted,surround,stormed,spree,spilling,spectacle,soaking,shreds,sewers,severed,scarce,scamming,scalp,rewind,rehearsing,pretentious,potions,overrated,obstacle,nerds,meems,mcmurphy,maternity,maneuver,loathe,fertility,eloping,ecstatic,ecstasy,divorcing,dignan,costing,clubhouse,clocks,candid,bursting,breather,braces,bending,arsonist,adored,absorb,valiant,uphold,unarmed,topolsky,thrilling,thigh,terminate,sustain,spaceship,snore,sneeze,smuggling,salty,quaint,patronize,patio,morbid,mamma,kettle,joyous,invincible,interpret,insecurities,impulses,illusions,holed,exploit,drivin,defenseless,dedicate,cradle,coupon,countless,conjure,cardboard,booking,backseat,accomplishment,wordsworth,wisely,valet,vaccine,urges,unnatural,unlucky,truths,traumatized,tasting,swears,strawberries,steaks,stats,skank,seducing,secretive,scumbag,screwdriver,schedules,rooting,rightfully,rattled,qualifies,puppets,prospects,pronto,posse,polling,pedestal,palms,muddy,morty,microscope,merci,lecturing,inject,incriminate,hygiene,grapefruit,gazebo,funnier,cuter,bossy,booby,aides,zende,winthrop,warrants,valentines,undressed,underage,truthfully,tampered,suffers,speechless,sparkling,sidelines,shrek,railing,puberty,pesky,outrage,outdoors,motions,moods,lunches,litter,kidnappers,itching,intuition,imitation,humility,hassling,gallons,drugstore,dosage,disrupt,dipping,deranged,debating,cuckoo,cremated,craziness,cooperating,circumstantial,chimney,blinking,biscuits,admiring,weeping,triad,trashy,soothing,slumber,slayers,skirts,siren,shindig,sentiment,rosco,riddance,quaid,purity,proceeding,pretzels,panicking,mckechnie,lovin,leaked,intruding,impersonating,ignorance,hamburgers,footprints,fluke,fleas,festivities,fences,feisty,evacuate,emergencies,deceived,creeping,craziest,corpses,conned,coincidences,bounced,bodyguards,blasted,bitterness,baloney,ashtray,apocalypse,zillion,watergate,wallpaper,telesave,sympathize,sweeter,startin,spades,sodas,snowed,sleepover,signor,seein,retainer,restroom,rested,repercussions,reliving,reconcile,prevail,preaching,overreact,o'neil,noose,moustache,manicure,maids,landlady,hypothetical,hopped,homesick,hives,hesitation,herbs,hectic,heartbreak,haunting,gangs,frown,fingerprint,exhausting,everytime,disregard,cling,chevron,chaperone,blinding,bitty,beads,battling,badgering,anticipation,upstanding,unprofessional,unhealthy,turmoil,truthful,toothpaste,tippin,thoughtless,tagataya,shooters,senseless,rewarding,propane,preposterous,pigeons,pastry,overhearing,obscene,negotiable,loner,jogging,itchy,insinuating,insides,hospitality,hormone,hearst,forthcoming,fists,fifties,etiquette,endings,destroys,despises,deprived,cuddy,crust,cloak,circumstance,chewed,casserole,bidder,bearer,artoo,applaud,appalling,vowed,virgins,vigilante,undone,throttle,testosterone,tailor,symptom,swoop,suitcases,stomp,sticker,stakeout,spoiling,snatched,smoochy,smitten,shameless,restraints,researching,renew,refund,reclaim,raoul,puzzles,purposely,punks,prosecuted,plaid,picturing,pickin,parasites,mysteriously,multiply,mascara,jukebox,interruptions,gunfire,furnace,elbows,duplicate,drapes,deliberate,decoy,cryptic,coupla,condemn,complicate,colossal,clerks,clarity,brushed,banished,argon,alarmed,worships,versa,uncanny,technicality,sundae,stumble,stripping,shuts,schmuck,satin,saliva,robber,relentless,reconnect,recipes,rearrange,rainy,psychiatrists,policemen,plunge,plugged,patched,overload,o'malley,mindless,menus,lullaby,lotte,leavin,killin,karinsky,invalid,hides,grownups,griff,flaws,flashy,flaming,fettes,evicted,dread,degrassi,dealings,dangers,cushion,bowel,barged,abide,abandoning,wonderfully,wait'll,violate,suicidal,stayin,sorted,slamming,sketchy,shoplifting,raiser,quizmaster,prefers,needless,motherhood,momentarily,migraine,lifts,leukemia,leftover,keepin,hinks,hellhole,gowns,goodies,gallon,futures,entertained,eighties,conspiring,cheery,benign,apiece,adjustments,abusive,abduction,wiping,whipping,welles,unspeakable,unidentified,trivial,transcripts,textbook,supervise,superstitious,stricken,stimulating,spielberg,slices,shelves,scratches,sabotaged,retrieval,repressed,rejecting,quickie,ponies,peeking,outraged,o'connell,moping,moaning,mausoleum,licked,kovich,klutz,interrogating,interfered,insulin,infested,incompetence,hyper,horrified,handedly,gekko,fraid,fractured,examiner,eloped,disoriented,dashing,crashdown,courier,cockroach,chipped,brushing,bombed,bolts,baths,baptized,astronaut,assurance,anemia,abuela,abiding,withholding,weave,wearin,weaker,suffocating,straws,straightforward,stench,steamed,starboard,sideways,shrinks,shortcut,scram,roasted,roaming,riviera,respectfully,repulsive,psychiatry,provoked,penitentiary,painkillers,ninotchka,mitzvah,milligrams,midge,marshmallows,looky,lapse,kubelik,intellect,improvise,implant,goa'ulds,giddy,geniuses,fruitcake,footing,fightin,drinkin,doork,detour,cuddle,crashes,combo,colonnade,cheats,cetera,bailiff,auditioning,assed,amused,alienate,aiding,aching,unwanted,topless,tongues,tiniest,superiors,soften,sheldrake,rawley,raisins,presses,plaster,nessa,narrowed,minions,merciful,lawsuits,intimidating,infirmary,inconvenient,imposter,hugged,honoring,holdin,hades,godforsaken,fumes,forgery,foolproof,folder,flattery,fingertips,exterminator,explodes,eccentric,dodging,disguised,crave,constructive,concealed,compartment,chute,chinpokomon,bodily,astronauts,alimony,accustomed,abdominal,wrinkle,wallow,valium,untrue,uncover,trembling,treasures,torched,toenails,timed,termites,telly,taunting,taransky,talker,succubus,smarts,sliding,sighting,semen,seizures,scarred,savvy,sauna,saddest,sacrificing,rubbish,riled,ratted,rationally,provenance,phonse,perky,pedal,overdose,nasal,nanites,mushy,movers,missus,midterm,merits,melodramatic,manure,knitting,invading,interpol,incapacitated,hotline,hauling,gunpoint,grail,ganza,framing,flannel,faded,eavesdrop,desserts,calories,breathtaking,bleak,blacked,batter,aggravated,yanked,wigand,whoah,unwind,undoubtedly,unattractive,twitch,trimester,torrance,timetable,taxpayers,strained,stared,slapping,sincerity,siding,shenanigans,shacking,sappy,samaritan,poorer,politely,paste,oysters,overruled,nightcap,mosquito,millimeter,merrier,manhood,lucked,kilos,ignition,hauled,harmed,goodwill,freshmen,fenmore,fasten,farce,exploding,erratic,drunks,ditching,d'artagnan,cramped,contacting,closets,clientele,chimp,bargained,arranging,anesthesia,amuse,altering,afternoons,accountable,abetting,wolek,waved,uneasy,toddy,tattooed,spauldings,sliced,sirens,schibetta,scatter,rinse,remedy,redemption,pleasures,optimism,oblige,mmmmm,masked,malicious,mailing,kosher,kiddies,judas,isolate,insecurity,incidentally,heals,headlights,growl,grilling,glazed,flunk,floats,fiery,fairness,exercising,excellency,disclosure,cupboard,counterfeit,condescending,conclusive,clicked,cleans,cholesterol,cashed,broccoli,brats,blueprints,blindfold,billing,attach,appalled,alrighty,wynant,unsolved,unreliable,toots,tighten,sweatshirt,steinbrenner,steamy,spouse,sonogram,slots,sleepless,shines,retaliate,rephrase,redeem,rambling,quilt,quarrel,prying,proverbial,priced,prescribe,prepped,pranks,possessive,plaintiff,pediatrics,overlooked,outcast,nightgown,mumbo,mediocre,mademoiselle,lunchtime,lifesaver,leaned,lambs,interns,hounding,hellmouth,hahaha,goner,ghoul,gardening,frenzy,foyer,extras,exaggerate,everlasting,enlightened,dialed,devote,deceitful,d'oeuvres,cosmetic,contaminated,conspired,conning,cavern,carving,butting,boiled,blurry,babysit,ascension,aaaaah,wildly,whoopee,whiny,weiskopf,walkie,vultures,vacations,upfront,unresolved,tampering,stockholders,snaps,sleepwalking,shrunk,sermon,seduction,scams,revolve,phenomenal,patrolling,paranormal,ounces,omigod,nightfall,lashing,innocents,infierno,incision,humming,haunts,gloss,gloating,frannie,fetal,feeny,entrapment,discomfort,detonator,dependable,concede,complication,commotion,commence,chulak,caucasian,casually,brainer,bolie,ballpark,anwar,analyzing,accommodations,youse,wring,wallowing,transgenics,thrive,tedious,stylish,strippers,sterile,squeezing,squeaky,sprained,solemn,snoring,shattering,shabby,seams,scrawny,revoked,residue,reeks,recite,ranting,quoting,predicament,plugs,pinpoint,petrified,pathological,passports,oughtta,nighter,navigate,kippie,intrigue,intentional,insufferable,hunky,how've,horrifying,hearty,hamptons,grazie,funerals,forks,fetched,excruciating,enjoyable,endanger,dumber,drying,diabolical,crossword,corry,comprehend,clipped,classmates,candlelight,brutally,brutality,boarded,bathrobe,authorize,assemble,aerobics,wholesome,whiff,vermin,trophies,trait,tragically,toying,testy,tasteful,stocked,spinach,sipping,sidetracked,scrubbing,scraping,sanctity,robberies,ridin,retribution,refrain,realities,radiant,protesting,projector,plutonium,payin,parting,o'reilly,nooooo,motherfucking,measly,manic,lalita,juggling,jerking,intro,inevitably,hypnosis,huddle,horrendous,hobbies,heartfelt,harlin,hairdresser,gonorrhea,fussing,furtwangler,fleeting,flawless,flashed,fetus,eulogy,distinctly,disrespectful,denies,crossbow,cregg,crabs,cowardly,contraction,contingency,confirming,condone,coffins,cleansing,cheesecake,certainty,cages,c'est,briefed,bravest,bosom,boils,binoculars,bachelorette,appetizer,ambushed,alerted,woozy,withhold,vulgar,utmost,unleashed,unholy,unhappiness,unconditional,typewriter,typed,twists,supermodel,subpoenaed,stringing,skeptical,schoolgirl,romantically,rocked,revoir,reopen,puncture,preach,polished,planetarium,penicillin,peacefully,nurturing,more'n,mmhmm,midgets,marklar,lodged,lifeline,jellyfish,infiltrate,hutch,horseback,heist,gents,frickin,freezes,forfeit,flakes,flair,fathered,eternally,epiphany,disgruntled,discouraged,delinquent,decipher,danvers,cubes,credible,coping,chills,cherished,catastrophe,bombshell,birthright,billionaire,ample,affections,admiration,abbotts,whatnot,watering,vinegar,unthinkable,unseen,unprepared,unorthodox,underhanded,uncool,timeless,thump,thermometer,theoretically,tapping,tagged,swung,stares,spiked,solves,smuggle,scarier,saucer,quitter,prudent,powdered,poked,pointers,peril,penetrate,penance,opium,nudge,nostrils,neurological,mockery,mobster,medically,loudly,insights,implicate,hypocritical,humanly,holiness,healthier,hammered,haldeman,gunman,gloom,freshly,francs,flunked,flawed,emptiness,drugging,dozer,derevko,deprive,deodorant,cryin,crocodile,coloring,colder,cognac,clocked,clippings,charades,chanting,certifiable,caterers,brute,brochures,botched,blinders,bitchin,banter,woken,ulcer,tread,thankfully,swine,swimsuit,swans,stressing,steaming,stamped,stabilize,squirm,snooze,shuffle,shredded,seafood,scratchy,savor,sadistic,rhetorical,revlon,realist,prosecuting,prophecies,polyester,petals,persuasion,paddles,o'leary,nuthin,neighbour,negroes,muster,meningitis,matron,lockers,letterman,legged,indictment,hypnotized,housekeeping,hopelessly,hallucinations,grader,goldilocks,girly,flask,envelopes,downside,doves,dissolve,discourage,disapprove,diabetic,deliveries,decorator,crossfire,criminally,containment,comrades,complimentary,chatter,catchy,cashier,cartel,caribou,cardiologist,brawl,booted,barbershop,aryan,angst,administer,zellie,wreak,whistles,vandalism,vamps,uterus,upstate,unstoppable,understudy,tristin,transcript,tranquilizer,toxins,tonsils,stempel,spotting,spectator,spatula,softer,snotty,slinging,showered,sexiest,sensual,sadder,rimbaud,restrain,resilient,remission,reinstate,rehash,recollection,rabies,popsicle,plausible,pediatric,patronizing,ostrich,ortolani,oooooh,omelette,mistrial,marseilles,loophole,laughin,kevvy,irritated,infidelity,hypothermia,horrific,groupie,grinding,graceful,goodspeed,gestures,frantic,extradition,echelon,disks,dawnie,dared,damsel,curled,collateral,collage,chant,calculating,bumping,bribes,boardwalk,blinds,blindly,bleeds,bickering,beasts,backside,avenge,apprehended,anguish,abusing,youthful,yells,yanking,whomever,when'd,vomiting,vengeful,unpacking,unfamiliar,undying,tumble,trolls,treacherous,tipping,tantrum,tanked,summons,straps,stomped,stinkin,stings,staked,squirrels,sprinkles,speculate,sorting,skinned,sicko,sicker,shootin,shatter,seeya,schnapps,s'posed,ronee,respectful,regroup,regretting,reeling,reckoned,ramifications,puddy,projections,preschool,plissken,platonic,permalash,outdone,outburst,mutants,mugging,misfortune,miserably,miraculously,medications,margaritas,manpower,lovemaking,logically,leeches,latrine,kneel,inflict,impostor,hypocrisy,hippies,heterosexual,heightened,hecuba,healer,gunned,grooming,groin,gooey,gloomy,frying,friendships,fredo,firepower,fathom,exhaustion,evils,endeavor,eggnog,dreaded,d'arcy,crotch,coughing,coronary,cookin,consummate,congrats,companionship,caved,caspar,bulletproof,brilliance,breakin,brash,blasting,aloud,airtight,advising,advertise,adultery,aches,wronged,upbeat,trillion,thingies,tending,tarts,surreal,specs,specialize,spade,shrew,shaping,selves,schoolwork,roomie,recuperating,rabid,quart,provocative,proudly,pretenses,prenatal,pharmaceuticals,pacing,overworked,originals,nicotine,murderous,mileage,mayonnaise,massages,losin,interrogated,injunction,impartial,homing,heartbreaker,hacks,glands,giver,fraizh,flips,flaunt,englishman,electrocuted,dusting,ducking,drifted,donating,cylon,crutches,crates,cowards,comfortably,chummy,chitchat,childbirth,businesswoman,brood,blatant,bethy,barring,bagged,awakened,asbestos,airplanes,worshipped,winnings,why're,visualize,unprotected,unleash,trays,thicker,therapists,takeoff,streisand,storeroom,stethoscope,stacked,spiteful,sneaks,snapping,slaughtered,slashed,simplest,silverware,shits,secluded,scruples,scrubs,scraps,ruptured,roaring,receptionist,recap,raditch,radiator,pushover,plastered,pharmacist,perverse,perpetrator,ornament,ointment,nineties,napping,nannies,mousse,moors,momentary,misunderstandings,manipulator,malfunction,laced,kivar,kickin,infuriating,impressionable,holdup,hires,hesitated,headphones,hammering,groundwork,grotesque,graces,gauze,gangsters,frivolous,freeing,fours,forwarding,ferrars,faulty,fantasizing,extracurricular,empathy,divorces,detonate,depraved,demeaning,deadlines,dalai,cursing,cufflink,crows,coupons,comforted,claustrophobic,casinos,camped,busboy,bluth,bennetts,baskets,attacker,aplastic,angrier,affectionate,zapped,wormhole,weaken,unrealistic,unravel,unimportant,unforgettable,twain,suspend,superbowl,stutter,stewardess,stepson,standin,spandex,souvenirs,sociopath,skeletons,shivering,sexier,selfishness,scrapbook,ritalin,ribbons,reunite,remarry,relaxation,rattling,rapist,psychosis,prepping,poses,pleasing,pisses,piling,persecuted,padded,operatives,negotiator,natty,menopause,mennihan,martimmys,loyalties,laynie,lando,justifies,intimately,inexperienced,impotent,immortality,horrors,hooky,hinges,heartbreaking,handcuffed,gypsies,guacamole,grovel,graziella,goggles,gestapo,fussy,ferragamo,feeble,eyesight,explosions,experimenting,enchanting,doubtful,dizziness,dismantle,detectors,deserving,defective,dangling,dancin,crumble,creamed,cramping,conceal,clockwork,chrissakes,chrissake,chopping,cabinets,brooding,bonfire,blurt,bloated,blackmailer,beforehand,bathed,bathe,barcode,banish,badges,babble,await,attentive,aroused,antibodies,animosity,ya'll,wrinkled,wonderland,willed,whisk,waltzing,waitressing,vigilant,upbringing,unselfish,uncles,trendy,trajectory,striped,stamina,stalled,staking,stacks,spoils,snuff,snooty,snide,shrinking,senora,secretaries,scoundrel,saline,salads,rundown,riddles,relapse,recommending,raspberry,plight,pecan,pantry,overslept,ornaments,niner,negligent,negligence,nailing,mucho,mouthed,monstrous,malpractice,lowly,loitering,logged,lingering,lettin,lattes,kamal,juror,jillefsky,jacked,irritate,intrusion,insatiable,infect,impromptu,icing,hmmmm,hefty,gasket,frightens,flapping,firstborn,faucet,estranged,envious,dopey,doesn,disposition,disposable,disappointments,dipped,dignified,deceit,dealership,deadbeat,curses,coven,counselors,concierge,clutches,casbah,callous,cahoots,brotherly,britches,brides,bethie,beige,autographed,attendants,attaboy,astonishing,appreciative,antibiotic,aneurysm,afterlife,affidavit,zoning,whats,whaddaya,vasectomy,unsuspecting,toula,topanga,tonio,toasted,tiring,terrorized,tenderness,tailing,sweats,suffocated,sucky,subconsciously,starvin,sprouts,spineless,sorrows,snowstorm,smirk,slicery,sledding,slander,simmer,signora,sigmund,seventies,sedate,scented,sandals,rollers,retraction,resigning,recuperate,receptive,racketeering,queasy,provoking,priors,prerogative,premed,pinched,pendant,outsiders,orbing,opportunist,olanov,neurologist,nanobot,mommies,molested,misread,mannered,laundromat,intercom,inspect,insanely,infatuation,indulgent,indiscretion,inconsiderate,hurrah,howling,herpes,hasta,harassed,hanukkah,groveling,groosalug,gander,galactica,futile,fridays,flier,fixes,exploiting,exorcism,evasive,endorse,emptied,dreary,dreamy,downloaded,dodged,doctored,disobeyed,disneyland,disable,dehydrated,contemplating,coconuts,cockroaches,clogged,chilling,chaperon,cameraman,bulbs,bucklands,bribing,brava,bracelets,bowels,bluepoint,appetizers,appendix,antics,anointed,analogy,almonds,yammering,winch,weirdness,wangler,vibrations,vendor,unmarked,unannounced,twerp,trespass,travesty,transfusion,trainee,towelie,tiresome,straightening,staggering,sonar,socializing,sinus,sinners,shambles,serene,scraped,scones,scepter,sarris,saberhagen,ridiculously,ridicule,rents,reconciled,radios,publicist,pubes,prune,prude,precrime,postponing,pluck,perish,peppermint,peeled,overdo,nutshell,nostalgic,mulan,mouthing,mistook,meddle,maybourne,martimmy,lobotomy,livelihood,lippman,likeness,kindest,kaffee,jocks,jerked,jeopardizing,jazzed,insured,inquisition,inhale,ingenious,holier,helmets,heirloom,heinous,haste,harmsway,hardship,hanky,gutters,gruesome,groping,goofing,godson,glare,finesse,figuratively,ferrie,endangerment,dreading,dozed,dorky,dmitri,divert,discredit,dialing,cufflinks,crutch,craps,corrupted,cocoon,cleavage,cannery,bystander,brushes,bruising,bribery,brainstorm,bolted,binge,ballistics,astute,arroway,adventurous,adoptive,addicts,addictive,yadda,whitelighters,wematanye,weeds,wedlock,wallets,vulnerability,vroom,vents,upped,unsettling,unharmed,trippin,trifle,tracing,tormenting,thats,syphilis,subtext,stickin,spices,sores,smacked,slumming,sinks,signore,shitting,shameful,shacked,septic,seedy,righteousness,relish,rectify,ravishing,quickest,phoebs,perverted,peeing,pedicure,pastrami,passionately,ozone,outnumbered,oregano,offender,nukes,nosed,nighty,nifty,mounties,motivate,moons,misinterpreted,mercenary,mentality,marsellus,lupus,lumbar,lovesick,lobsters,leaky,laundering,latch,jafar,instinctively,inspires,indoors,incarcerated,hundredth,handkerchief,gynecologist,guittierez,groundhog,grinning,goodbyes,geese,fullest,eyelashes,eyelash,enquirer,endlessly,elusive,disarm,detest,deluding,dangle,cotillion,corsage,conjugal,confessional,cones,commandment,coded,coals,chuckle,christmastime,cheeseburgers,chardonnay,celery,campfire,calming,burritos,brundle,broflovski,brighten,borderline,blinked,bling,beauties,bauers,battered,articulate,alienated,ahhhhh,agamemnon,accountants,y'see,wrongful,wrapper,workaholic,winnebago,whispered,warts,vacate,unworthy,unanswered,tonane,tolerated,throwin,throbbing,thrills,thorns,thereof,there've,tarot,sunscreen,stretcher,stereotype,soggy,sobbing,sizable,sightings,shucks,shrapnel,sever,senile,seaboard,scorned,saver,rebellious,rained,putty,prenup,pores,pinching,pertinent,peeping,paints,ovulating,opposites,occult,nutcracker,nutcase,newsstand,newfound,mocked,midterms,marshmallow,marbury,maclaren,leans,krudski,knowingly,keycard,junkies,juilliard,jolinar,irritable,invaluable,inuit,intoxicating,instruct,insolent,inexcusable,incubator,illustrious,hunsecker,houseguest,homosexuals,homeroom,hernia,harming,handgun,hallways,hallucination,gunshots,groupies,groggy,goiter,gingerbread,giggling,frigging,fledged,fedex,fairies,exchanging,exaggeration,esteemed,enlist,drags,dispense,disloyal,disconnect,desks,dentists,delacroix,degenerate,daydreaming,cushions,cuddly,corroborate,complexion,compensated,cobbler,closeness,chilled,checkmate,channing,carousel,calms,bylaws,benefactor,ballgame,baiting,backstabbing,artifact,airspace,adversary,actin,accuses,accelerant,abundantly,abstinence,zissou,zandt,yapping,witchy,willows,whadaya,vilandra,veiled,undress,undivided,underestimating,ultimatums,twirl,truckload,tremble,toasting,tingling,tents,tempered,sulking,stunk,sponges,spills,softly,snipers,scourge,rooftop,riana,revolting,revisit,refreshments,redecorating,recapture,raysy,pretense,prejudiced,precogs,pouting,poofs,pimple,piles,pediatrician,padre,packets,paces,orvelle,oblivious,objectivity,nighttime,nervosa,mexicans,meurice,melts,matchmaker,maeby,lugosi,lipnik,leprechaun,kissy,kafka,introductions,intestines,inspirational,insightful,inseparable,injections,inadvertently,hussy,huckabees,hittin,hemorrhaging,headin,haystack,hallowed,grudges,granilith,grandkids,grading,gracefully,godsend,gobbles,fragrance,fliers,finchley,farts,eyewitnesses,expendable,existential,dorms,delaying,degrading,deduction,darlings,danes,cylons,counsellor,contraire,consciously,conjuring,congratulating,cokes,buffay,brooch,bitching,bistro,bijou,bewitched,benevolent,bends,bearings,barren,aptitude,amish,amazes,abomination,worldly,whispers,whadda,wayward,wailing,vanishing,upscale,untouchable,unspoken,uncontrollable,unavoidable,unattended,trite,transvestite,toupee,timid,timers,terrorizing,swana,stumped,strolling,storybook,storming,stomachs,stoked,stationery,springtime,spontaneity,spits,spins,soaps,sentiments,scramble,scone,rooftops,retract,reflexes,rawdon,ragged,quirky,quantico,psychologically,prodigal,pounce,potty,pleasantries,pints,petting,perceive,onstage,notwithstanding,nibble,newmans,neutralize,mutilated,millionaires,mayflower,masquerade,mangy,macreedy,lunatics,lovable,locating,limping,lasagna,kwang,keepers,juvie,jaded,ironing,intuitive,intensely,insure,incantation,hysteria,hypnotize,humping,happenin,griet,grasping,glorified,ganging,g'night,focker,flunking,flimsy,flaunting,fixated,fitzwallace,fainting,eyebrow,exonerated,ether,electrician,egotistical,earthly,dusted,dignify,detonation,debrief,dazzling,dan'l,damnedest,daisies,crushes,crucify,contraband,confronting,collapsing,cocked,clicks,cliche,circled,chandelier,carburetor,callers,broads,breathes,bloodshed,blindsided,blabbing,bialystock,bashing,ballerina,aviva,arteries,anomaly,airstrip,agonizing,adjourn,aaaaa,yearning,wrecker,witnessing,whence,warhead,unsure,unheard,unfreeze,unfold,unbalanced,ugliest,troublemaker,toddler,tiptoe,threesome,thirties,thermostat,swipe,surgically,subtlety,stung,stumbling,stubs,stride,strangling,sprayed,socket,smuggled,showering,shhhhh,sabotaging,rumson,rounding,risotto,repairman,rehearsed,ratty,ragging,radiology,racquetball,racking,quieter,quicksand,prowl,prompt,premeditated,prematurely,prancing,porcupine,plated,pinocchio,peeked,peddle,panting,overweight,overrun,outing,outgrown,obsess,nursed,nodding,negativity,negatives,musketeers,mugger,motorcade,merrily,matured,masquerading,marvellous,maniacs,lovey,louse,linger,lilies,lawful,kudos,knuckle,juices,judgments,itches,intolerable,intermission,inept,incarceration,implication,imaginative,huckleberry,holster,heartburn,gunna,groomed,graciously,fulfillment,fugitives,forsaking,forgives,foreseeable,flavors,flares,fixation,fickle,fantasize,famished,fades,expiration,exclamation,erasing,eiffel,eerie,earful,duped,dulles,dissing,dissect,dispenser,dilated,detergent,desdemona,debriefing,damper,curing,crispina,crackpot,courting,cordial,conflicted,comprehension,commie,cleanup,chiropractor,charmer,chariot,cauldron,catatonic,bullied,buckets,brilliantly,breathed,booths,boardroom,blowout,blindness,blazing,biologically,bibles,biased,beseech,barbaric,balraj,audacity,anticipating,alcoholics,airhead,agendas,admittedly,absolution,youre,yippee,wittlesey,withheld,willful,whammy,weakest,washes,virtuous,videotapes,vials,unplugged,unpacked,unfairly,turbulence,tumbling,tricking,tremendously,traitors,torches,tinga,thyroid,teased,tawdry,taker,sympathies,swiped,sundaes,suave,strut,stepdad,spewing,spasm,socialize,slither,simulator,shutters,shrewd,shocks,semantics,schizophrenic,scans,savages,rya'c,runny,ruckus,royally,roadblocks,rewriting,revoke,repent,redecorate,recovers,recourse,ratched,ramali,racquet,quince,quiche,puppeteer,puking,puffed,problemo,praises,pouch,postcards,pooped,poised,piled,phoney,phobia,patching,parenthood,pardner,oozing,ohhhhh,numbing,nostril,nosey,neatly,nappa,nameless,mortuary,moronic,modesty,midwife,mcclane,matuka,maitre,lumps,lucid,loosened,loins,lawnmower,lamotta,kroehner,jinxy,jessep,jamming,jailhouse,jacking,intruders,inhuman,infatuated,indigestion,implore,implanted,hormonal,hoboken,hillbilly,heartwarming,headway,hatched,hartmans,harping,grapevine,gnome,forties,flyin,flirted,fingernail,exhilarating,enjoyment,embark,dumper,dubious,drell,docking,disillusioned,dishonor,disbarred,dicey,custodial,counterproductive,corned,cords,contemplate,concur,conceivable,cobblepot,chickened,checkout,carpe,cap'n,campers,buyin,bullies,braid,boxed,bouncy,blueberries,blubbering,bloodstream,bigamy,beeped,bearable,autographs,alarming,wretch,wimps,widower,whirlwind,whirl,warms,vandelay,unveiling,undoing,unbecoming,turnaround,touche,togetherness,tickles,ticker,teensy,taunt,sweethearts,stitched,standpoint,staffers,spotless,soothe,smothered,sickening,shouted,shepherds,shawl,seriousness,schooled,schoolboy,s'mores,roped,reminders,raggedy,preemptive,plucked,pheromones,particulars,pardoned,overpriced,overbearing,outrun,ohmigod,nosing,nicked,neanderthal,mosquitoes,mortified,milky,messin,mecha,markinson,marivellas,mannequin,manderley,madder,macready,lookie,locusts,lifetimes,lanna,lakhi,kholi,impersonate,hyperdrive,horrid,hopin,hogging,hearsay,harpy,harboring,hairdo,hafta,grasshopper,gobble,gatehouse,foosball,floozy,fished,firewood,finalize,felons,euphemism,entourage,elitist,elegance,drokken,drier,dredge,dossier,diseased,diarrhea,diagnose,despised,defuse,d'amour,contesting,conserve,conscientious,conjured,collars,clogs,chenille,chatty,chamomile,casing,calculator,brittle,breached,blurted,birthing,bikinis,astounding,assaulting,aroma,appliance,antsy,amnio,alienating,aliases,adolescence,xerox,wrongs,workload,willona,whistling,werewolves,wallaby,unwelcome,unseemly,unplug,undermining,ugliness,tyranny,tuesdays,trumpets,transference,ticks,tangible,tagging,swallowing,superheroes,studs,strep,stowed,stomping,steffy,sprain,spouting,sponsoring,sneezing,smeared,slink,shakin,sewed,seatbelt,scariest,scammed,sanctimonious,roasting,rightly,retinal,rethinking,resented,reruns,remover,racks,purest,progressing,presidente,preeclampsia,postponement,portals,poppa,pliers,pinning,pelvic,pampered,padding,overjoyed,ooooo,one'll,octavius,nonono,nicknames,neurosurgeon,narrows,misled,mislead,mishap,milltown,milking,meticulous,mediocrity,meatballs,machete,lurch,layin,knockin,khruschev,jurors,jumpin,jugular,jeweler,intellectually,inquiries,indulging,indestructible,indebted,imitate,ignores,hyperventilating,hyenas,hurrying,hermano,hellish,heheh,harshly,handout,grunemann,glances,giveaway,getup,gerome,furthest,frosting,frail,forwarded,forceful,flavored,flammable,flaky,fingered,fatherly,ethic,embezzlement,duffel,dotted,distressed,disobey,disappearances,dinky,diminish,diaphragm,deuces,creme,courteous,comforts,coerced,clots,clarification,chunks,chickie,chases,chaperoning,cartons,caper,calves,caged,bustin,bulging,bringin,boomhauer,blowin,blindfolded,biscotti,ballplayer,bagging,auster,assurances,aschen,arraigned,anonymity,alters,albatross,agreeable,adoring,abduct,wolfi,weirded,watchers,washroom,warheads,vincennes,urgency,understandably,uncomplicated,uhhhh,twitching,treadmill,thermos,tenorman,tangle,talkative,swarm,surrendering,summoning,strive,stilts,stickers,squashed,spraying,sparring,soaring,snort,sneezed,slaps,skanky,singin,sidle,shreck,shortness,shorthand,sharper,shamed,sadist,rydell,rusik,roulette,resumes,respiration,recount,reacts,purgatory,princesses,presentable,ponytail,plotted,pinot,pigtails,phillippe,peddling,paroled,orbed,offends,o'hara,moonlit,minefield,metaphors,malignant,mainframe,magicks,maggots,maclaine,loathing,leper,leaps,leaping,lashed,larch,larceny,lapses,ladyship,juncture,jiffy,jakov,invoke,infantile,inadmissible,horoscope,hinting,hideaway,hesitating,heddy,heckles,hairline,gripe,gratifying,governess,goebbels,freddo,foresee,fascination,exemplary,executioner,etcetera,escorts,endearing,eaters,earplugs,draped,disrupting,disagrees,dimes,devastate,detain,depositions,delicacy,darklighter,cynicism,cyanide,cutters,cronus,continuance,conquering,confiding,compartments,combing,cofell,clingy,cleanse,christmases,cheered,cheekbones,buttle,burdened,bruenell,broomstick,brained,bozos,bontecou,bluntman,blazes,blameless,bizarro,bellboy,beaucoup,barkeep,awaken,astray,assailant,appease,aphrodisiac,alleys,yesss,wrecks,woodpecker,wondrous,wimpy,willpower,wheeling,weepy,waxing,waive,videotaped,veritable,untouched,unlisted,unfounded,unforeseen,twinge,triggers,traipsing,toxin,tombstone,thumping,therein,testicles,telephones,tarmac,talby,tackled,swirling,suicides,suckered,subtitles,sturdy,strangler,stockbroker,stitching,steered,standup,squeal,sprinkler,spontaneously,splendor,spiking,spender,snipe,snagged,skimming,siddown,showroom,shovels,shotguns,shoelaces,shitload,shellfish,sharpest,shadowy,seizing,scrounge,scapegoat,sayonara,saddled,rummaging,roomful,renounce,reconsidered,recharge,realistically,radioed,quirks,quadrant,punctual,practising,pours,poolhouse,poltergeist,pocketbook,plainly,picnics,pesto,pawing,passageway,partied,oneself,numero,nostalgia,nitwit,neuro,mixer,meanest,mcbeal,matinee,margate,marce,manipulations,manhunt,manger,magicians,loafers,litvack,lightheaded,lifeguard,lawns,laughingstock,ingested,indignation,inconceivable,imposition,impersonal,imbecile,huddled,housewarming,horizons,homicides,hiccups,hearse,hardened,gushing,gushie,greased,goddamit,freelancer,forging,fondue,flustered,flung,flinch,flicker,fixin,festivus,fertilizer,farted,faggots,exonerate,evict,enormously,encrypted,emdash,embracing,duress,dupres,dowser,doormat,disfigured,disciplined,dibbs,depository,deathbed,dazzled,cuttin,cures,crowding,crepe,crammed,copycat,contradict,confidant,condemning,conceited,commute,comatose,clapping,circumference,chuppah,chore,choksondik,chestnuts,briault,bottomless,bonnet,blokes,berluti,beret,beggars,bankroll,bania,athos,arsenic,apperantly,ahhhhhh,afloat,accents,zipped,zeros,zeroes,zamir,yuppie,youngsters,yorkers,wisest,wipes,wield,whyn't,weirdos,wednesdays,vicksburg,upchuck,untraceable,unsupervised,unpleasantness,unhook,unconscionable,uncalled,trappings,tragedies,townie,thurgood,things'll,thine,tetanus,terrorize,temptations,tanning,tampons,swarming,straitjacket,steroid,startling,starry,squander,speculating,sollozzo,sneaked,slugs,skedaddle,sinker,silky,shortcomings,sellin,seasoned,scrubbed,screwup,scrapes,scarves,sandbox,salesmen,rooming,romances,revere,reproach,reprieve,rearranging,ravine,rationalize,raffle,punchy,psychobabble,provocation,profoundly,prescriptions,preferable,polishing,poached,pledges,pirelli,perverts,oversized,overdressed,outdid,nuptials,nefarious,mouthpiece,motels,mopping,mongrel,missin,metaphorically,mertin,memos,melodrama,melancholy,measles,meaner,mantel,maneuvering,mailroom,luring,listenin,lifeless,licks,levon,legwork,kneecaps,kippur,kiddie,kaput,justifiable,insistent,insidious,innuendo,innit,indecent,imaginable,horseshit,hemorrhoid,hella,healthiest,haywire,hamsters,hairbrush,grouchy,grisly,gratuitous,glutton,glimmer,gibberish,ghastly,gentler,generously,geeky,fuhrer,fronting,foolin,faxes,faceless,extinguisher,expel,etched,endangering,ducked,dodgeball,dives,dislocated,discrepancy,devour,derail,dementia,daycare,cynic,crumbling,cowardice,covet,cornwallis,corkscrew,cookbook,commandments,coincidental,cobwebs,clouded,clogging,clicking,clasp,chopsticks,chefs,chaps,cashing,carat,calmer,brazen,brainwashing,bradys,bowing,boned,bloodsucking,bleachers,bleached,bedpan,bearded,barrenger,bachelors,awwww,assures,assigning,asparagus,apprehend,anecdote,amoral,aggravation,afoot,acquaintances,accommodating,yakking,worshipping,wladek,willya,willies,wigged,whoosh,whisked,watered,warpath,volts,violates,valuables,uphill,unwise,untimely,unsavory,unresponsive,unpunished,unexplained,tubby,trolling,toxicology,tormented,toothache,tingly,timmiihh,thursdays,thoreau,terrifies,temperamental,telegrams,talkie,takers,symbiote,swirl,suffocate,stupider,strapping,steckler,springing,someway,sleepyhead,sledgehammer,slant,slams,showgirl,shoveling,shmoopy,sharkbait,shan't,scrambling,schematics,sandeman,sabbatical,rummy,reykjavik,revert,responsive,rescheduled,requisition,relinquish,rejoice,reckoning,recant,rebadow,reassurance,rattlesnake,ramble,primed,pricey,prance,pothole,pocus,persist,perpetrated,pekar,peeling,pastime,parmesan,pacemaker,overdrive,ominous,observant,nothings,noooooo,nonexistent,nodded,nieces,neglecting,nauseating,mutated,musket,mumbling,mowing,mouthful,mooseport,monologue,mistrust,meetin,masseuse,mantini,mailer,madre,lowlifes,locksmith,livid,liven,limos,liberating,lhasa,leniency,leering,laughable,lashes,lasagne,laceration,korben,katan,kalen,jittery,jammies,irreplaceable,intubate,intolerant,inhaler,inhaled,indifferent,indifference,impound,impolite,humbly,heroics,heigh,guillotine,guesthouse,grounding,grips,gossiping,goatee,gnomes,gellar,frutt,frobisher,freudian,foolishness,flagged,femme,fatso,fatherhood,fantasized,fairest,faintest,eyelids,extravagant,extraterrestrial,extraordinarily,escalator,elevate,drivel,dissed,dismal,disarray,dinnertime,devastation,dermatologist,delicately,defrost,debutante,debacle,damone,dainty,cuvee,culpa,crucified,creeped,crayons,courtship,convene,congresswoman,concocted,compromises,comprende,comma,coleslaw,clothed,clinically,chickenshit,checkin,cesspool,caskets,calzone,brothel,boomerang,bodega,blasphemy,bitsy,bicentennial,berlini,beatin,beards,barbas,barbarians,backpacking,arrhythmia,arousing,arbitrator,antagonize,angling,anesthetic,altercation,aggressor,adversity,acathla,aaahhh,wreaking,workup,wonderin,wither,wielding,what'm,what'cha,waxed,vibrating,veterinarian,venting,vasey,valor,validate,upholstery,untied,unscathed,uninterrupted,unforgiving,undies,uncut,twinkies,tucking,treatable,treasured,tranquility,townspeople,torso,tomei,tipsy,tinsel,tidings,thirtieth,tantrums,tamper,talky,swayed,swapping,suitor,stylist,stirs,standoff,sprinklers,sparkly,snobby,snatcher,smoother,sleepin,shrug,shoebox,sheesh,shackles,setbacks,sedatives,screeching,scorched,scanned,satyr,roadblock,riverbank,ridiculed,resentful,repellent,recreate,reconvene,rebuttal,realmedia,quizzes,questionnaire,punctured,pucker,prolong,professionalism,pleasantly,pigsty,penniless,paychecks,patiently,parading,overactive,ovaries,orderlies,oracles,oiled,offending,nudie,neonatal,neighborly,moops,moonlighting,mobilize,mmmmmm,milkshake,menial,meats,mayan,maxed,mangled,magua,lunacy,luckier,liters,lansbury,kooky,knowin,jeopardized,inkling,inhalation,inflated,infecting,incense,inbound,impractical,impenetrable,idealistic,i'mma,hypocrites,hurtin,humbled,hologram,hokey,hocus,hitchhiking,hemorrhoids,headhunter,hassled,harts,hardworking,haircuts,hacksaw,genitals,gazillion,gammy,gamesphere,fugue,footwear,folly,flashlights,fives,filet,extenuating,estrogen,entails,embezzled,eloquent,egomaniac,ducts,drowsy,drones,doree,donovon,disguises,diggin,deserting,depriving,defying,deductible,decorum,decked,daylights,daybreak,dashboard,damnation,cuddling,crunching,crickets,crazies,councilman,coughed,conundrum,complimented,cohaagen,clutching,clued,clader,cheques,checkpoint,chats,channeling,ceases,carasco,capisce,cantaloupe,cancelling,campsite,burglars,breakfasts,bra'tac,blueprint,bleedin,blabbed,beneficiary,basing,avert,atone,arlyn,approves,apothecary,antiseptic,aleikuum,advisement,zadir,wobbly,withnail,whattaya,whacking,wedged,wanders,vaginal,unimaginable,undeniable,unconditionally,uncharted,unbridled,tweezers,tvmegasite,trumped,triumphant,trimming,treading,tranquilizers,toontown,thunk,suture,suppressing,strays,stonewall,stogie,stepdaughter,stace,squint,spouses,splashed,speakin,sounder,sorrier,sorrel,sombrero,solemnly,softened,snobs,snippy,snare,smoothing,slump,slimeball,slaving,silently,shiller,shakedown,sensations,scrying,scrumptious,screamin,saucy,santoses,roundup,roughed,rosary,robechaux,retrospect,rescind,reprehensible,repel,remodeling,reconsidering,reciprocate,railroaded,psychics,promos,prob'ly,pristine,printout,priestess,prenuptial,precedes,pouty,phoning,peppy,pariah,parched,panes,overloaded,overdoing,nymphs,nother,notebooks,nearing,nearer,monstrosity,milady,mieke,mephesto,medicated,marshals,manilow,mammogram,m'lady,lotsa,loopy,lesion,lenient,learner,laszlo,kross,kinks,jinxed,involuntary,insubordination,ingrate,inflatable,incarnate,inane,hypoglycemia,huntin,humongous,hoodlum,honking,hemorrhage,helpin,hathor,hatching,grotto,grandmama,gorillas,godless,girlish,ghouls,gershwin,frosted,flutter,flagpole,fetching,fatter,faithfully,exert,evasion,escalate,enticing,enchantress,elopement,drills,downtime,downloading,dorks,doorways,divulge,dissociative,disgraceful,disconcerting,deteriorate,destinies,depressive,dented,denim,decruz,decidedly,deactivate,daydreams,curls,culprit,cruelest,crippling,cranberries,corvis,copped,commend,coastguard,cloning,cirque,churning,chock,chivalry,catalogues,cartwheels,carols,canister,buttered,bundt,buljanoff,bubbling,brokers,broaden,brimstone,brainless,bores,badmouthing,autopilot,ascertain,aorta,ampata,allenby,accosted,absolve,aborted,aaagh,aaaaaah,yonder,yellin,wyndham,wrongdoing,woodsboro,wigging,wasteland,warranty,waltzed,walnuts,vividly,veggie,unnecessarily,unloaded,unicorns,understated,unclean,umbrellas,twirling,turpentine,tupperware,triage,treehouse,tidbit,tickled,threes,thousandth,thingie,terminally,teething,tassel,talkies,swoon,switchboard,swerved,suspiciously,subsequentlyne,subscribe,strudel,stroking,strictest,stensland,starin,stannart,squirming,squealing,sorely,softie,snookums,sniveling,smidge,sloth,skulking,simian,sightseeing,siamese,shudder,shoppers,sharpen,shannen,semtex,secondhand,seance,scowl,scorn,safekeeping,russe,rummage,roshman,roomies,roaches,rinds,retrace,retires,resuscitate,rerun,reputations,rekall,refreshment,reenactment,recluse,ravioli,raves,raking,purses,punishable,punchline,puked,prosky,previews,poughkeepsie,poppins,polluted,placenta,pissy,petulant,perseverance,pears,pawns,pastries,partake,panky,palate,overzealous,orchids,obstructing,objectively,obituaries,obedient,nothingness,musty,motherly,mooning,momentous,mistaking,minutemen,milos,microchip,meself,merciless,menelaus,mazel,masturbate,mahogany,lysistrata,lillienfield,likable,liberate,leveled,letdown,larynx,lardass,lainey,lagged,klorel,kidnappings,keyed,karmic,jeebies,irate,invulnerable,intrusive,insemination,inquire,injecting,informative,informants,impure,impasse,imbalance,illiterate,hurled,hunts,hematoma,headstrong,handmade,handiwork,growling,gorky,getcha,gesundheit,gazing,galley,foolishly,fondness,floris,ferocious,feathered,fateful,fancies,fakes,faker,expire,ever'body,essentials,eskimos,enlightening,enchilada,emissary,embolism,elsinore,ecklie,drenched,drazi,doped,dogging,doable,dislikes,dishonesty,disengage,discouraging,derailed,deformed,deflect,defer,deactivated,crips,constellations,congressmen,complimenting,clubbing,clawing,chromium,chimes,chews,cheatin,chaste,cellblock,caving,catered,catacombs,calamari,bucking,brulee,brits,brisk,breezes,bounces,boudoir,binks,better'n,bellied,behrani,behaves,bedding,balmy,badmouth,backers,avenging,aromatherapy,armpit,armoire,anythin,anonymously,anniversaries,aftershave,affliction,adrift,admissible,adieu,acquittal,yucky,yearn,whitter,whirlpool,wendigo,watchdog,wannabes,wakey,vomited,voicemail,valedictorian,uttered,unwed,unrequited,unnoticed,unnerving,unkind,unjust,uniformed,unconfirmed,unadulterated,unaccounted,uglier,turnoff,trampled,tramell,toads,timbuktu,throwback,thimble,tasteless,tarantula,tamale,takeovers,swish,supposing,streaking,stargher,stanzi,stabs,squeamish,splattered,spiritually,spilt,speciality,smacking,skywire,skips,skaara,simpatico,shredding,showin,shortcuts,shite,shielding,shamelessly,serafine,sentimentality,seasick,schemer,scandalous,sainted,riedenschneider,rhyming,revel,retractor,retards,resurrect,remiss,reminiscing,remanded,reiben,regains,refuel,refresher,redoing,redheaded,reassured,rearranged,rapport,qumar,prowling,prejudices,precarious,powwow,pondering,plunger,plunged,pleasantville,playpen,phlegm,perfected,pancreas,paley,ovary,outbursts,oppressed,ooohhh,omoroca,offed,o'toole,nurture,nursemaid,nosebleed,necktie,muttering,munchies,mucking,mogul,mitosis,misdemeanor,miscarried,millionth,migraines,midler,manicurist,mandelbaum,manageable,malfunctioned,magnanimous,loudmouth,longed,lifestyles,liddy,lickety,leprechauns,komako,klute,kennel,justifying,irreversible,inventing,intergalactic,insinuate,inquiring,ingenuity,inconclusive,incessant,improv,impersonation,hyena,humperdinck,hubba,housework,hoffa,hither,hissy,hippy,hijacked,heparin,hellooo,hearth,hassles,hairstyle,hahahaha,hadda,guys'll,gutted,gulls,gritty,grievous,graft,gossamer,gooder,gambled,gadgets,fundamentals,frustrations,frolicking,frock,frilly,foreseen,footloose,fondly,flirtation,flinched,flatten,farthest,exposer,evading,escrow,empathize,embryos,embodiment,ellsberg,ebola,dulcinea,dreamin,drawbacks,doting,doose,doofy,disturbs,disorderly,disgusts,detox,denominator,demeanor,deliriously,decode,debauchery,croissant,cravings,cranked,coworkers,councilor,confuses,confiscate,confines,conduit,compress,combed,clouding,clamps,cinch,chinnery,celebratory,catalogs,carpenters,carnal,canin,bundys,bulldozer,buggers,bueller,brainy,booming,bookstores,bloodbath,bittersweet,bellhop,beeping,beanstalk,beady,baudelaire,bartenders,bargains,averted,armadillo,appreciating,appraised,antlers,aloof,allowances,alleyway,affleck,abject,zilch,youore,xanax,wrenching,wouldn,witted,wicca,whorehouse,whooo,whips,vouchers,victimized,vicodin,untested,unsolicited,unfocused,unfettered,unfeeling,unexplainable,understaffed,underbelly,tutorial,tryst,trampoline,towering,tirade,thieving,thang,swimmin,swayzak,suspecting,superstitions,stubbornness,streamers,strattman,stonewalling,stiffs,stacking,spout,splice,sonrisa,smarmy,slows,slicing,sisterly,shrill,shined,seeming,sedley,seatbelts,scour,scold,schoolyard,scarring,salieri,rustling,roxbury,rewire,revved,retriever,reputable,remodel,reins,reincarnation,rance,rafters,rackets,quail,pumbaa,proclaim,probing,privates,pried,prewedding,premeditation,posturing,posterity,pleasurable,pizzeria,pimps,penmanship,penchant,pelvis,overturn,overstepped,overcoat,ovens,outsmart,outed,ooohh,oncologist,omission,offhand,odour,nyazian,notarized,nobody'll,nightie,navel,nabbed,mystique,mover,mortician,morose,moratorium,mockingbird,mobsters,mingling,methinks,messengered,merde,masochist,martouf,martians,marinara,manray,majorly,magnifying,mackerel,lurid,lugging,lonnegan,loathsome,llantano,liberace,leprosy,latinos,lanterns,lamest,laferette,kraut,intestine,innocencia,inhibitions,ineffectual,indisposed,incurable,inconvenienced,inanimate,improbable,implode,hydrant,hustling,hustled,huevos,how'm,hooey,hoods,honcho,hinge,hijack,heimlich,hamunaptra,haladki,haiku,haggle,gutsy,grunting,grueling,gribbs,greevy,grandstanding,godparents,glows,glistening,gimmick,gaping,fraiser,formalities,foreigner,folders,foggy,fitty,fiends,fe'nos,favours,eyeing,extort,expedite,escalating,epinephrine,entitles,entice,eminence,eights,earthlings,eagerly,dunville,dugout,doublemeat,doling,dispensing,dispatcher,discoloration,diners,diddly,dictates,diazepam,derogatory,delights,defies,decoder,dealio,danson,cutthroat,crumbles,croissants,crematorium,craftsmanship,could'a,cordless,cools,conked,confine,concealing,complicates,communique,cockamamie,coasters,clobbered,clipping,clipboard,clemenza,cleanser,circumcision,chanukah,certainaly,cellmate,cancels,cadmium,buzzed,bumstead,bucko,browsing,broth,braver,boggling,bobbing,blurred,birkhead,benet,belvedere,bellies,begrudge,beckworth,banky,baldness,baggy,babysitters,aversion,astonished,assorted,appetites,angina,amiss,ambulances,alibis,airway,admires,adhesive,yoyou,xxxxxx,wreaked,wracking,woooo,wooing,wised,wilshire,wedgie,waging,violets,vincey,uplifting,untrustworthy,unmitigated,uneventful,undressing,underprivileged,unburden,umbilical,tweaking,turquoise,treachery,tosses,torching,toothpick,toasts,thickens,tereza,tenacious,teldar,taint,swill,sweatin,subtly,subdural,streep,stopwatch,stockholder,stillwater,stalkers,squished,squeegee,splinters,spliced,splat,spied,spackle,sophistication,snapshots,smite,sluggish,slithered,skeeters,sidewalks,sickly,shrugs,shrubbery,shrieking,shitless,settin,sentinels,selfishly,scarcely,sangria,sanctum,sahjhan,rustle,roving,rousing,rosomorf,riddled,responsibly,renoir,remoray,remedial,refundable,redirect,recheck,ravenwood,rationalizing,ramus,ramelle,quivering,pyjamas,psychos,provocations,prouder,protestors,prodded,proctologist,primordial,pricks,prickly,precedents,pentangeli,pathetically,parka,parakeet,panicky,overthruster,outsmarted,orthopedic,oncoming,offing,nutritious,nuthouse,nourishment,nibbling,newlywed,narcissist,mutilation,mundane,mummies,mumble,mowed,morvern,mortem,mopes,molasses,misplace,miscommunication,miney,midlife,menacing,memorizing,massaging,masking,magnets,luxuries,lounging,lothario,liposuction,lidocaine,libbets,levitate,leeway,launcelot,larek,lackeys,kumbaya,kryptonite,knapsack,keyhole,katarangura,juiced,jakey,ironclad,invoice,intertwined,interlude,interferes,injure,infernal,indeedy,incur,incorrigible,incantations,impediment,igloo,hysterectomy,hounded,hollering,hindsight,heebie,havesham,hasenfuss,hankering,hangers,hakuna,gutless,gusto,grubbing,grrrr,grazed,gratification,grandeur,gorak,godammit,gnawing,glanced,frostbite,frees,frazzled,fraulein,fraternizing,fortuneteller,formaldehyde,followup,foggiest,flunky,flickering,firecrackers,figger,fetuses,fates,eyeliner,extremities,extradited,expires,exceedingly,evaporate,erupt,epileptic,entrails,emporium,egregious,eggshells,easing,duwayne,droll,dreyfuss,dovey,doubly,doozy,donkeys,donde,distrust,distressing,disintegrate,discreetly,decapitated,dealin,deader,dashed,darkroom,dares,daddies,dabble,cushy,cupcakes,cuffed,croupier,croak,crapped,coursing,coolers,contaminate,consummated,construed,condos,concoction,compulsion,commish,coercion,clemency,clairvoyant,circulate,chesterton,checkered,charlatan,chaperones,categorically,cataracts,carano,capsules,capitalize,burdon,bullshitting,brewed,breathless,breasted,brainstorming,bossing,borealis,bonsoir,bobka,boast,blimp,bleep,bleeder,blackouts,bisque,billboards,beatings,bayberry,bashed,bamboozled,balding,baklava,baffled,backfires,babak,awkwardness,attest,attachments,apologizes,anyhoo,antiquated,alcante,advisable,aahhh,aaahh,zatarc,yearbooks,wuddya,wringing,womanhood,witless,winging,whatsa,wetting,waterproof,wastin,vogelman,vocation,vindicated,vigilance,vicariously,venza,vacuuming,utensils,uplink,unveil,unloved,unloading,uninhibited,unattached,tweaked,turnips,trinkets,toughen,toting,topside,terrors,terrify,technologically,tarnish,tagliati,szpilman,surly,supple,summation,suckin,stepmom,squeaking,splashmore,souffle,solitaire,solicitation,solarium,smokers,slugged,slobbering,skylight,skimpy,sinuses,silenced,sideburns,shrinkage,shoddy,shhhhhh,shelled,shareef,shangri,seuss,serenade,scuffle,scoff,scanners,sauerkraut,sardines,sarcophagus,salvy,rusted,russells,rowboat,rolfsky,ringside,respectability,reparations,renegotiate,reminisce,reimburse,regimen,raincoat,quibble,puzzled,purposefully,pubic,proofing,prescribing,prelim,poisons,poaching,personalized,personable,peroxide,pentonville,payphone,payoffs,paleontology,overflowing,oompa,oddest,objecting,o'hare,o'daniel,notches,nobody'd,nightstand,neutralized,nervousness,nerdy,needlessly,naquadah,nappy,nantucket,nambla,mountaineer,motherfuckin,morrie,monopolizing,mohel,mistreated,misreading,misbehave,miramax,minivan,milligram,milkshakes,metamorphosis,medics,mattresses,mathesar,matchbook,matata,marys,malucci,magilla,lymphoma,lowers,lordy,linens,lindenmeyer,limelight,leapt,laxative,lather,lapel,lamppost,laguardia,kindling,kegger,kawalsky,juries,jokin,jesminder,interning,innermost,injun,infallible,industrious,indulgence,incinerator,impossibility,impart,illuminate,iguanas,hypnotic,hyped,hospitable,hoses,homemaker,hirschmuller,helpers,headset,guardianship,guapo,grubby,granola,granddaddy,goren,goblet,gluttony,globes,giorno,getter,geritol,gassed,gaggle,foxhole,fouled,foretold,floorboards,flippers,flaked,fireflies,feedings,fashionably,farragut,fallback,facials,exterminate,excites,everything'll,evenin,ethically,ensue,enema,empath,eluded,eloquently,eject,edema,dumpling,droppings,dolled,distasteful,disputing,displeasure,disdain,deterrent,dehydration,defied,decomposing,dawned,dailies,custodian,crusts,crucifix,crowning,crier,crept,craze,crawls,couldn,correcting,corkmaster,copperfield,cooties,contraption,consumes,conspire,consenting,consented,conquers,congeniality,complains,communicator,commendable,collide,coladas,colada,clout,clooney,classifieds,clammy,civility,cirrhosis,chink,catskills,carvers,carpool,carelessness,cardio,carbs,capades,butabi,busmalis,burping,burdens,bunks,buncha,bulldozers,browse,brockovich,breakthroughs,bravado,boogety,blossoms,blooming,bloodsucker,blight,betterton,betrayer,belittle,beeps,bawling,barts,bartending,bankbooks,babish,atropine,assertive,armbrust,anyanka,annoyance,anemic,anago,airwaves,aimlessly,aaargh,aaand,yoghurt,writhing,workable,winking,winded,widen,whooping,whiter,whatya,wazoo,voila,virile,vests,vestibule,versed,vanishes,urkel,uproot,unwarranted,unscheduled,unparalleled,undergrad,tweedle,turtleneck,turban,trickery,transponder,toyed,townhouse,thyself,thunderstorm,thinning,thawed,tether,technicalities,tau'ri,tarnished,taffeta,tacked,systolic,swerve,sweepstakes,swabs,suspenders,superwoman,sunsets,succulent,subpoenas,stumper,stosh,stomachache,stewed,steppin,stepatech,stateside,spicoli,sparing,soulless,sonnets,sockets,snatching,smothering,slush,sloman,slashing,sitters,simpleton,sighs,sidra,sickens,shunned,shrunken,showbiz,shopped,shimmering,shagging,semblance,segue,sedation,scuzzlebutt,scumbags,screwin,scoundrels,scarsdale,scabs,saucers,saintly,saddened,runaways,runaround,rheya,resenting,rehashing,rehabilitated,regrettable,refreshed,redial,reconnecting,ravenous,raping,rafting,quandary,pylea,putrid,puffing,psychopathic,prunes,probate,prayin,pomegranate,plummeting,planing,plagues,pinata,pithy,perversion,personals,perched,peeps,peckish,pavarotti,pajama,packin,pacifier,overstepping,okama,obstetrician,nutso,nuance,normalcy,nonnegotiable,nomak,ninny,nines,nicey,newsflash,neutered,nether,negligee,necrosis,navigating,narcissistic,mylie,muses,momento,moisturizer,moderation,misinformed,misconception,minnifield,mikkos,methodical,mebbe,meager,maybes,matchmaking,masry,markovic,malakai,luzhin,lusting,lumberjack,loopholes,loaning,lightening,leotard,launder,lamaze,kubla,kneeling,kibosh,jumpsuit,joliet,jogger,janover,jakovasaurs,irreparable,innocently,inigo,infomercial,inexplicable,indispensable,impregnated,impossibly,imitating,hunches,hummus,houmfort,hothead,hostiles,hooves,hooligans,homos,homie,hisself,heyyy,hesitant,hangout,handsomest,handouts,hairless,gwennie,guzzling,guinevere,grungy,goading,glaring,gavel,gardino,gangrene,fruitful,friendlier,freckle,freakish,forthright,forearm,footnote,flops,fixer,firecracker,finito,figgered,fezzik,fastened,farfetched,fanciful,familiarize,faire,fahrenheit,extravaganza,exploratory,explanatory,everglades,eunuch,estas,escapade,erasers,emptying,embarassing,dweeb,dutiful,dumplings,dries,drafty,dollhouse,dismissing,disgraced,discrepancies,disbelief,disagreeing,digestion,didnt,deviled,deviated,demerol,delectable,decaying,decadent,dears,dateless,d'algout,cultivating,cryto,crumpled,crumbled,cronies,crease,craves,cozying,corduroy,congratulated,confidante,compressions,complicating,compadre,coerce,classier,chums,chumash,chivalrous,chinpoko,charred,chafing,celibacy,carted,carryin,carpeting,carotid,cannibals,candor,butterscotch,busts,busier,bullcrap,buggin,brookside,brodski,brassiere,brainwash,brainiac,botrelle,bonbon,boatload,blimey,blaring,blackness,bipartisan,bimbos,bigamist,biebe,biding,betrayals,bestow,bellerophon,bedpans,bassinet,basking,barzini,barnyard,barfed,backups,audited,asinine,asalaam,arouse,applejack,annoys,anchovies,ampule,alameida,aggravate,adage,accomplices,yokel,y'ever,wringer,witwer,withdrawals,windward,willfully,whorfin,whimsical,whimpering,weddin,weathered,warmest,wanton,volant,visceral,vindication,veggies,urinate,uproar,unwritten,unwrap,unsung,unsubstantiated,unspeakably,unscrupulous,unraveling,unquote,unqualified,unfulfilled,undetectable,underlined,unattainable,unappreciated,ummmm,ulcers,tylenol,tweak,turnin,tuatha,tropez,trellis,toppings,tootin,toodle,tinkering,thrives,thespis,theatrics,thatherton,tempers,tavington,tartar,tampon,swelled,sutures,sustenance,sunflowers,sublet,stubbins,strutting,strewn,stowaway,stoic,sternin,stabilizing,spiraling,spinster,speedometer,speakeasy,soooo,soiled,sneakin,smithereens,smelt,smacks,slaughterhouse,slacks,skids,sketching,skateboards,sizzling,sixes,sirree,simplistic,shouts,shorted,shoelace,sheeit,shards,shackled,sequestered,selmak,seduces,seclusion,seamstress,seabeas,scoops,scooped,scavenger,satch,s'more,rudeness,romancing,rioja,rifkin,rieper,revise,reunions,repugnant,replicating,repaid,renewing,relaxes,rekindle,regrettably,regenerate,reels,reciting,reappear,readin,ratting,rapes,rancher,rammed,rainstorm,railroading,queers,punxsutawney,punishes,pssst,prudy,proudest,protectors,procrastinating,proactive,priss,postmortem,pompoms,poise,pickings,perfectionist,peretti,people'll,pecking,patrolman,paralegal,paragraphs,paparazzi,pankot,pampering,overstep,overpower,outweigh,omnipotent,odious,nuwanda,nurtured,newsroom,neeson,needlepoint,necklaces,neato,muggers,muffler,mousy,mourned,mosey,mopey,mongolians,moldy,misinterpret,minibar,microfilm,mendola,mended,melissande,masturbating,masbath,manipulates,maimed,mailboxes,magnetism,m'lord,m'honey,lymph,lunge,lovelier,lefferts,leezak,ledgers,larraby,laloosh,kundun,kozinski,knockoff,kissin,kiosk,kennedys,kellman,karlo,kaleidoscope,jeffy,jaywalking,instructing,infraction,informer,infarction,impulsively,impressing,impersonated,impeach,idiocy,hyperbole,hurray,humped,huhuh,hsing,hordes,hoodlums,honky,hitchhiker,hideously,heaving,heathcliff,headgear,headboard,hazing,harem,handprint,hairspray,gutiurrez,goosebumps,gondola,glitches,gasping,frolic,freeways,frayed,fortitude,forgetful,forefathers,fonder,foiled,foaming,flossing,flailing,fitzgeralds,firehouse,finders,fiftieth,fellah,fawning,farquaad,faraway,fancied,extremists,exorcist,exhale,ethros,entrust,ennui,energized,encephalitis,embezzling,elster,elixir,electrolytes,duplex,dryers,drexl,dredging,drawback,don'ts,dobisch,divorcee,disrespected,disprove,disobeying,disinfectant,dingy,digress,dieting,dictating,devoured,devise,detonators,desist,deserter,derriere,deron,deceptive,debilitating,deathwok,daffodils,curtsy,cursory,cuppa,cumin,cronkite,cremation,credence,cranking,coverup,courted,countin,counselling,cornball,contentment,consensual,compost,cluett,cleverly,cleansed,cleanliness,chopec,chomp,chins,chime,cheswick,chessler,cheapest,chatted,cauliflower,catharsis,catchin,caress,camcorder,calorie,cackling,bystanders,buttoned,buttering,butted,buries,burgel,buffoon,brogna,bragged,boutros,bogeyman,blurting,blurb,blowup,bloodhound,blissful,birthmark,bigot,bestest,belted,belligerent,beggin,befall,beeswax,beatnik,beaming,barricade,baggoli,badness,awoke,artsy,artful,aroun,armpits,arming,annihilate,anise,angiogram,anaesthetic,amorous,ambiance,alligators,adoration,admittance,adama,abydos,zonked,zhivago,yorkin,wrongfully,writin,wrappers,worrywart,woops,wonderfalls,womanly,wickedness,whoopie,wholeheartedly,whimper,which'll,wheelchairs,what'ya,warranted,wallop,wading,wacked,virginal,vermouth,vermeil,verger,ventriss,veneer,vampira,utero,ushers,urgently,untoward,unshakable,unsettled,unruly,unlocks,ungodly,undue,uncooperative,uncontrollably,unbeatable,twitchy,tumbler,truest,triumphs,triplicate,tribbey,tortures,tongaree,tightening,thorazine,theres,testifies,teenaged,tearful,taxing,taldor,syllabus,swoops,swingin,suspending,sunburn,stuttering,stupor,strides,strategize,strangulation,stooped,stipulation,stingy,stapled,squeaks,squawking,spoilsport,splicing,spiel,spencers,spasms,spaniard,softener,sodding,soapbox,smoldering,smithbauer,skittish,sifting,sickest,sicilians,shuffling,shrivel,segretti,seeping,securely,scurrying,scrunch,scrote,screwups,schenkman,sawing,savin,satine,sapiens,salvaging,salmonella,sacrilege,rumpus,ruffle,roughing,rotted,rondall,ridding,rickshaw,rialto,rhinestone,restrooms,reroute,requisite,repress,rednecks,redeeming,rayed,ravell,raked,raincheck,raffi,racked,pushin,profess,prodding,procure,presuming,preppy,prednisone,potted,posttraumatic,poorhouse,podiatrist,plowed,pledging,playroom,plait,placate,pinback,picketing,photographing,pharoah,petrak,petal,persecuting,perchance,pellets,peeved,peerless,payable,pauses,pathologist,pagliacci,overwrought,overreaction,overqualified,overheated,outcasts,otherworldly,opinionated,oodles,oftentimes,occured,obstinate,nutritionist,numbness,nubile,nooooooo,nobodies,nepotism,neanderthals,mushu,mucus,mothering,mothballs,monogrammed,molesting,misspoke,misspelled,misconstrued,miscalculated,minimums,mince,mildew,mighta,middleman,mementos,mellowed,mayol,mauled,massaged,marmalade,mardi,makings,lundegaard,lovingly,loudest,lotto,loosing,loompa,looming,longs,loathes,littlest,littering,lifelike,legalities,laundered,lapdog,lacerations,kopalski,knobs,knitted,kittridge,kidnaps,kerosene,karras,jungles,jockeys,iranoff,invoices,invigorating,insolence,insincere,insectopia,inhumane,inhaling,ingrates,infestation,individuality,indeterminate,incomprehensible,inadequacy,impropriety,importer,imaginations,illuminating,ignite,hysterics,hypodermic,hyperventilate,hyperactive,humoring,honeymooning,honed,hoist,hoarding,hitching,hiker,hightail,hemoglobin,hell'd,heinie,growin,grasped,grandparent,granddaughters,gouged,goblins,gleam,glades,gigantor,get'em,geriatric,gatekeeper,gargoyles,gardenias,garcon,garbo,gallows,gabbing,futon,fulla,frightful,freshener,fortuitous,forceps,fogged,fodder,foamy,flogging,flaun,flared,fireplaces,feverish,favell,fattest,fattening,fallow,extraordinaire,evacuating,errant,envied,enchant,enamored,egocentric,dussander,dunwitty,dullest,dropout,dredged,dorsia,doornail,donot,dongs,dogged,dodgy,ditty,dishonorable,discriminating,discontinue,dings,dilly,dictation,dialysis,delly,delightfully,daryll,dandruff,cruddy,croquet,cringe,crimp,credo,crackling,courtside,counteroffer,counterfeiting,corrupting,copping,conveyor,contusions,contusion,conspirator,consoling,connoisseur,confetti,composure,compel,colic,coddle,cocksuckers,coattails,cloned,claustrophobia,clamoring,churn,chugga,chirping,chasin,chapped,chalkboard,centimeter,caymans,catheter,casings,caprica,capelli,cannolis,cannoli,camogli,camembert,butchers,butchered,busboys,bureaucrats,buckled,bubbe,brownstone,bravely,brackley,bouquets,botox,boozing,boosters,bodhi,blunders,blunder,blockage,biocyte,betrays,bested,beryllium,beheading,beggar,begbie,beamed,bastille,barstool,barricades,barbecues,barbecued,bandwagon,backfiring,bacarra,avenged,autopsies,aunties,associating,artichoke,arrowhead,appendage,apostrophe,antacid,ansel,annul,amuses,amped,amicable,amberg,alluring,adversaries,admirers,adlai,acupuncture,abnormality,aaaahhhh,zooming,zippity,zipping,zeroed,yuletide,yoyodyne,yengeese,yeahhh,wrinkly,wracked,withered,winks,windmills,whopping,wendle,weigart,waterworks,waterbed,watchful,wantin,wagging,waaah,vying,ventricle,varnish,vacuumed,unreachable,unprovoked,unmistakable,unfriendly,unfolding,underpaid,uncuff,unappealing,unabomber,typhoid,tuxedos,tushie,turds,tumnus,troubadour,trinium,treaters,treads,transpired,transgression,tought,thready,thins,thinners,techs,teary,tattaglia,tassels,tarzana,tanking,tablecloths,synchronize,symptomatic,sycophant,swimmingly,sweatshop,surfboard,superpowers,sunroom,sunblock,sugarplum,stupidly,strumpet,strapless,stooping,stools,stealthy,stalks,stairmaster,staffer,sshhh,squatting,squatters,spectacularly,sorbet,socked,sociable,snubbed,snorting,sniffles,snazzy,snakebite,smuggler,smorgasbord,smooching,slurping,slouch,slingshot,slaved,skimmed,sisterhood,silliest,sidarthur,sheraton,shebang,sharpening,shanghaied,shakers,sendoff,scurvy,scoliosis,scaredy,scagnetti,sawchuk,saugus,sasquatch,sandbag,saltines,s'pose,roston,rostle,riveting,ristle,rifling,revulsion,reverently,retrograde,restful,resents,reptilian,reorganize,renovating,reiterate,reinvent,reinmar,reibers,reechard,recuse,reconciling,recognizance,reclaiming,recitation,recieved,rebate,reacquainted,rascals,railly,quintuplets,quahog,pygmies,puzzling,punctuality,prosthetic,proms,probie,preys,preserver,preppie,poachers,plummet,plumbers,plannin,pitying,pitfalls,piqued,pinecrest,pinches,pillage,pigheaded,physique,pessimistic,persecute,perjure,percentile,pentothal,pensky,penises,peini,pazzi,pastels,parlour,paperweight,pamper,pained,overwhelm,overalls,outrank,outpouring,outhouse,outage,ouija,obstructed,obsessions,obeying,obese,o'riley,o'higgins,nosebleeds,norad,noooooooo,nononono,nonchalant,nippy,neurosis,nekhorvich,necronomicon,naquada,n'est,mystik,mystified,mumps,muddle,mothership,moped,monumentally,monogamous,mondesi,misogynistic,misinterpreting,mindlock,mending,megaphone,meeny,medicating,meanie,masseur,markstrom,marklars,margueritas,manifesting,maharajah,lukewarm,loveliest,loran,lizardo,liquored,lipped,lingers,limey,lemkin,leisurely,lathe,latched,lapping,ladle,krevlorneswath,kosygin,khakis,kenaru,keats,kaitlan,julliard,jollies,jaundice,jargon,jackals,invisibility,insipid,inflamed,inferiority,inexperience,incinerated,incinerate,incendiary,incan,inbred,implicating,impersonator,hunks,horsing,hooded,hippopotamus,hiked,hetson,hetero,hessian,henslowe,hendler,hellstrom,headstone,hayloft,harbucks,handguns,hallucinate,haldol,haggling,gynaecologist,gulag,guilder,guaranteeing,groundskeeper,grindstone,grimoir,grievance,griddle,gribbit,greystone,graceland,gooders,goeth,gentlemanly,gelatin,gawking,ganged,fukes,fromby,frenchmen,foursome,forsley,forbids,footwork,foothold,floater,flinging,flicking,fittest,fistfight,fireballs,fillings,fiddling,fennyman,felonious,felonies,feces,favoritism,fatten,fanatics,faceman,excusing,excepted,entwined,entree,ensconced,eladio,ehrlichman,easterland,dueling,dribbling,drape,downtrodden,doused,dosed,dorleen,dokie,distort,displeased,disown,dismount,disinherited,disarmed,disapproves,diperna,dined,diligent,dicaprio,depress,decoded,debatable,dealey,darsh,damsels,damning,dad'll,d'oeuvre,curlers,curie,cubed,crikey,crepes,countrymen,cornfield,coppers,copilot,copier,cooing,conspiracies,consigliere,condoning,commoner,commies,combust,comas,colds,clawed,clamped,choosy,chomping,chimps,chigorin,chianti,cheep,checkups,cheaters,celibate,cautiously,cautionary,castell,carpentry,caroling,carjacking,caritas,caregiver,cardiology,candlesticks,canasta,cain't,burro,burnin,bunking,bumming,bullwinkle,brummel,brooms,brews,breathin,braslow,bracing,botulism,boorish,bloodless,blayne,blatantly,blankie,bedbugs,becuase,barmaid,bared,baracus,banal,bakes,backpacks,attentions,atrocious,ativan,athame,asunder,astound,assuring,aspirins,asphyxiation,ashtrays,aryans,arnon,apprehension,applauding,anvil,antiquing,antidepressants,annoyingly,amputate,altruistic,alotta,alerting,afterthought,affront,affirm,actuality,abysmal,absentee,yeller,yakushova,wuzzy,wriggle,worrier,woogyman,womanizer,windpipe,windbag,willin,whisking,whimsy,wendall,weeny,weensy,weasels,watery,watcha,wasteful,waski,washcloth,waaay,vouched,viznick,ventriloquist,vendettas,veils,vayhue,vamanos,vadimus,upstage,uppity,unsaid,unlocking,unintentionally,undetected,undecided,uncaring,unbearably,tween,tryout,trotting,trini,trimmings,trickier,treatin,treadstone,trashcan,transcendent,tramps,townsfolk,torturous,torrid,toothpicks,tolerable,tireless,tiptoeing,timmay,tillinghouse,tidying,tibia,thumbing,thrusters,thrashing,these'll,thatos,testicular,teriyaki,tenors,tenacity,tellers,telemetry,tarragon,switchblade,swicker,swells,sweatshirts,swatches,surging,supremely,sump'n,succumb,subsidize,stumbles,stuffs,stoppin,stipulate,stenographer,steamroll,stasis,stagger,squandered,splint,splendidly,splashy,splashing,specter,sorcerers,somewheres,somber,snuggled,snowmobile,sniffed,snags,smugglers,smudged,smirking,smearing,slings,sleet,sleepovers,sleek,slackers,siree,siphoning,singed,sincerest,sickened,shuffled,shriveled,shorthanded,shittin,shish,shipwrecked,shins,sheetrock,shawshank,shamu,sha're,servitude,sequins,seascape,scrapings,scoured,scorching,sandpaper,saluting,salud,ruffled,roughnecks,rougher,rosslyn,rosses,roost,roomy,romping,revolutionize,reprimanded,refute,refrigerated,reeled,redundancies,rectal,recklessly,receding,reassignment,reapers,readout,ration,raring,ramblings,raccoons,quarantined,purging,punters,psychically,premarital,pregnancies,predisposed,precautionary,pollute,podunk,plums,plaything,pixilated,pitting,piranhas,pieced,piddles,pickled,photogenic,phosphorous,pffft,pestilence,pessimist,perspiration,perps,penticoff,passageways,pardons,panics,pancamo,paleontologist,overwhelms,overstating,overpaid,overdid,outlive,orthodontist,orgies,oreos,ordover,ordinates,ooooooh,oooohhh,omelettes,officiate,obtuse,obits,nymph,novocaine,noooooooooo,nipping,nilly,nightstick,negate,neatness,natured,narcotic,narcissism,namun,nakatomi,murky,muchacho,mouthwash,motzah,morsel,morph,morlocks,mooch,moloch,molest,mohra,modus,modicum,mockolate,misdemeanors,miscalculation,middies,meringue,mercilessly,meditating,mayakovsky,maximillian,marlee,markovski,maniacal,maneuvered,magnificence,maddening,lutze,lunged,lovelies,lorry,loosening,lookee,littered,lilac,lightened,laces,kurzon,kurtzweil,kind've,kimono,kenji,kembu,keanu,kazuo,jonesing,jilted,jiggling,jewelers,jewbilee,jacqnoud,jacksons,ivories,insurmountable,innocuous,innkeeper,infantery,indulged,indescribable,incoherent,impervious,impertinent,imperfections,hunnert,huffy,horsies,horseradish,hollowed,hogwash,hockley,hissing,hiromitsu,hidin,hereafter,helpmann,hehehe,haughty,happenings,hankie,handsomely,halliwells,haklar,haise,gunsights,grossly,grope,grocer,grits,gripping,grabby,glorificus,gizzard,gilardi,gibarian,geminon,gasses,garnish,galloping,gairwyn,futterman,futility,fumigated,fruitless,friendless,freon,foregone,forego,floored,flighty,flapjacks,fizzled,ficus,festering,farbman,fabricate,eyghon,extricate,exalted,eventful,esophagus,enterprising,entail,endor,emphatically,embarrasses,electroshock,easel,duffle,drumsticks,dissection,dissected,disposing,disparaging,disorientation,disintegrated,disarming,devoting,dessaline,deprecating,deplorable,delve,degenerative,deduct,decomposed,deathly,dearie,daunting,dankova,cyclotron,cyberspace,cutbacks,culpable,cuddled,crumpets,cruelly,crouching,cranium,cramming,cowering,couric,cordesh,conversational,conclusively,clung,clotting,cleanest,chipping,chimpanzee,chests,cheapen,chainsaws,censure,catapult,caravaggio,carats,captivating,calrissian,butlers,busybody,bussing,bunion,bulimic,budging,brung,browbeat,brokenhearted,brecher,breakdowns,bracebridge,boning,blowhard,blisters,blackboard,bigotry,bialy,bhamra,bended,begat,battering,baste,basquiat,barricaded,barometer,balled,baited,badenweiler,backhand,ascenscion,argumentative,appendicitis,apparition,anxiously,antagonistic,angora,anacott,amniotic,ambience,alonna,aleck,akashic,ageless,abouts,aawwww,aaaaarrrrrrggghhh,aaaaaa,zendi,yuppies,yodel,y'hear,wrangle,wombosi,wittle,withstanding,wisecracks,wiggling,wierd,whittlesley,whipper,whattya,whatsamatter,whatchamacallit,whassup,whad'ya,weakling,warfarin,waponis,wampum,wadn't,vorash,vizzini,virtucon,viridiana,veracity,ventilated,varicose,varcon,vandalized,vamos,vamoose,vaccinated,vacationing,usted,urinal,uppers,unwittingly,unsealed,unplanned,unhinged,unhand,unfathomable,unequivocally,unbreakable,unadvisedly,udall,tynacorp,tuxes,tussle,turati,tunic,tsavo,trussed,troublemakers,trollop,tremors,transsexual,transfusions,toothbrushes,toned,toddlers,tinted,tightened,thundering,thorpey,this'd,thespian,thaddius,tenuous,tenths,tenement,telethon,teleprompter,teaspoon,taunted,tattle,tardiness,taraka,tappy,tapioca,tapeworm,talcum,tacks,swivel,swaying,superpower,summarize,sumbitch,sultry,suburbia,styrofoam,stylings,strolls,strobe,stockpile,stewardesses,sterilized,sterilize,stealin,stakeouts,squawk,squalor,squabble,sprinkled,sportsmanship,spokes,spiritus,sparklers,spareribs,sowing,sororities,sonovabitch,solicit,softy,softness,softening,snuggling,snatchers,snarling,snarky,snacking,smears,slumped,slowest,slithering,sleazebag,slayed,slaughtering,skidded,skated,sivapathasundaram,sissies,silliness,silences,sidecar,sicced,shylock,shtick,shrugged,shriek,shoves,should'a,shortcake,shockingly,shirking,shaves,shatner,sharpener,shapely,shafted,sexless,septum,selflessness,seabea,scuff,screwball,scoping,scooch,scolding,schnitzel,schemed,scalper,santy,sankara,sanest,salesperson,sakulos,safehouse,sabers,runes,rumblings,rumbling,ruijven,ringers,righto,rhinestones,retrieving,reneging,remodelling,relentlessly,regurgitate,refills,reeking,reclusive,recklessness,recanted,ranchers,rafer,quaking,quacks,prophesied,propensity,profusely,problema,prided,prays,postmark,popsicles,poodles,pollyanna,polaroids,pokes,poconos,pocketful,plunging,plugging,pleeease,platters,pitied,pinetti,piercings,phooey,phonies,pestering,periscope,pentagram,pelts,patronized,paramour,paralyze,parachutes,pales,paella,paducci,owatta,overdone,overcrowded,overcompensating,ostracized,ordinate,optometrist,operandi,omens,okayed,oedipal,nuttier,nuptial,nunheim,noxious,nourish,notepad,nitroglycerin,nibblet,neuroses,nanosecond,nabbit,mythic,munchkins,multimillion,mulroney,mucous,muchas,mountaintop,morlin,mongorians,moneybags,mom'll,molto,mixup,misgivings,mindset,michalchuk,mesmerized,merman,mensa,meaty,mbwun,materialize,materialistic,masterminded,marginally,mapuhe,malfunctioning,magnify,macnamara,macinerney,machinations,macadamia,lysol,lurks,lovelorn,lopsided,locator,litback,litany,linea,limousines,limes,lighters,liebkind,levity,levelheaded,letterhead,lesabre,leron,lepers,lefts,leftenant,laziness,layaway,laughlan,lascivious,laryngitis,lapsed,landok,laminated,kurten,kobol,knucklehead,knowed,knotted,kirkeby,kinsa,karnovsky,jolla,jimson,jettison,jeric,jawed,jankis,janitors,jango,jalopy,jailbreak,jackers,jackasses,invalidate,intercepting,intercede,insinuations,infertile,impetuous,impaled,immerse,immaterial,imbeciles,imagines,idyllic,idolized,icebox,i'd've,hypochondriac,hyphen,hurtling,hurried,hunchback,hullo,horsting,hoooo,homeboys,hollandaise,hoity,hijinks,hesitates,herrero,herndorff,helplessly,heeyy,heathen,hearin,headband,harrassment,harpies,halstrom,hahahahaha,hacer,grumbling,grimlocks,grift,greets,grandmothers,grander,grafts,gordievsky,gondorff,godorsky,glscripts,gaudy,gardeners,gainful,fuses,fukienese,frizzy,freshness,freshening,fraught,frantically,foxbooks,fortieth,forked,foibles,flunkies,fleece,flatbed,fisted,firefight,fingerpaint,filibuster,fhloston,fenceline,femur,fatigues,fanucci,fantastically,familiars,falafel,fabulously,eyesore,expedient,ewwww,eviscerated,erogenous,epidural,enchante,embarassed,embarass,embalming,elude,elspeth,electrocute,eigth,eggshell,echinacea,eases,earpiece,earlobe,dumpsters,dumbshit,dumbasses,duloc,duisberg,drummed,drinkers,dressy,dorma,doily,divvy,diverting,dissuade,disrespecting,displace,disorganized,disgustingly,discord,disapproving,diligence,didja,diced,devouring,detach,destructing,desolate,demerits,delude,delirium,degrade,deevak,deemesa,deductions,deduce,debriefed,deadbeats,dateline,darndest,damnable,dalliance,daiquiri,d'agosta,cussing,cryss,cripes,cretins,crackerjack,cower,coveting,couriers,countermission,cotswolds,convertibles,conversationalist,consorting,consoled,consarn,confides,confidentially,commited,commiserate,comme,comforter,comeuppance,combative,comanches,colosseum,colling,coexist,coaxing,cliffside,chutes,chucked,chokes,childlike,childhoods,chickening,chenowith,charmingly,changin,catsup,captioning,capsize,cappucino,capiche,candlewell,cakewalk,cagey,caddie,buxley,bumbling,bulky,buggered,brussel,brunettes,brumby,brotha,bronck,brisket,bridegroom,braided,bovary,bookkeeper,bluster,bloodline,blissfully,blase,billionaires,bicker,berrisford,bereft,berating,berate,bendy,belive,belated,beikoku,beens,bedspread,bawdy,barreling,baptize,banya,balthazar,balmoral,bakshi,bails,badgered,backstreet,awkwardly,auras,attuned,atheists,astaire,assuredly,arrivederci,appetit,appendectomy,apologetic,antihistamine,anesthesiologist,amulets,albie,alarmist,aiight,adstream,admirably,acquaint,abound,abominable,aaaaaaah,zekes,zatunica,wussy,worded,wooed,woodrell,wiretap,windowsill,windjammer,windfall,whisker,whims,whatiya,whadya,weirdly,weenies,waunt,washout,wanto,waning,victimless,verdad,veranda,vandaley,vancomycin,valise,vaguest,upshot,unzip,unwashed,untrained,unstuck,unprincipled,unmentionables,unjustly,unfolds,unemployable,uneducated,unduly,undercut,uncovering,unconsciousness,unconsciously,tyndareus,turncoat,turlock,tulle,tryouts,trouper,triplette,trepkos,tremor,treeger,trapeze,traipse,tradeoff,trach,torin,tommorow,tollan,toity,timpani,thumbprint,thankless,tell'em,telepathy,telemarketing,telekinesis,teevee,teeming,tarred,tambourine,talentless,swooped,switcheroo,swirly,sweatpants,sunstroke,suitors,sugarcoat,subways,subterfuge,subservient,subletting,stunningly,strongbox,striptease,stravanavitch,stradling,stoolie,stodgy,stocky,stifle,stealer,squeezes,squatter,squarely,sprouted,spool,spindly,speedos,soups,soundly,soulmates,somebody'll,soliciting,solenoid,sobering,snowflakes,snowballs,snores,slung,slimming,skulk,skivvies,skewered,skewer,sizing,sistine,sidebar,sickos,shushing,shunt,shugga,shone,shol'va,sharpened,shapeshifter,shadowing,shadoe,selectman,sefelt,seared,scrounging,scribbling,scooping,scintillating,schmoozing,scallops,sapphires,sanitarium,sanded,safes,rudely,roust,rosebush,rosasharn,rondell,roadhouse,riveted,rewrote,revamp,retaliatory,reprimand,replicators,replaceable,remedied,relinquishing,rejoicing,reincarnated,reimbursed,reevaluate,redid,redefine,recreating,reconnected,rebelling,reassign,rearview,rayne,ravings,ratso,rambunctious,radiologist,quiver,quiero,queef,qualms,pyrotechnics,pulsating,psychosomatic,proverb,promiscuous,profanity,prioritize,preying,predisposition,precocious,precludes,prattling,prankster,povich,potting,postpartum,porridge,polluting,plowing,pistachio,pissin,pickpocket,physicals,peruse,pertains,personified,personalize,perjured,perfecting,pepys,pepperdine,pembry,peering,peels,pedophile,patties,passkey,paratrooper,paraphernalia,paralyzing,pandering,paltry,palpable,pagers,pachyderm,overstay,overestimated,overbite,outwit,outgrow,outbid,ooops,oomph,oohhh,oldie,obliterate,objectionable,nygma,notting,noches,nitty,nighters,newsstands,newborns,neurosurgery,nauseated,nastiest,narcolepsy,mutilate,muscled,murmur,mulva,mulling,mukada,muffled,morgues,moonbeams,monogamy,molester,molestation,molars,moans,misprint,mismatched,mirth,mindful,mimosas,millander,mescaline,menstrual,menage,mellowing,medevac,meddlesome,matey,manicures,malevolent,madmen,macaroons,lydell,lycra,lunchroom,lunching,lozenges,looped,litigious,liquidate,linoleum,lingk,limitless,limber,lilacs,ligature,liftoff,lemmiwinks,leggo,learnin,lazarre,lawyered,lactose,knelt,kenosha,kemosabe,jussy,junky,jordy,jimmies,jeriko,jakovasaur,issacs,isabela,irresponsibility,ironed,intoxication,insinuated,inherits,ingest,ingenue,inflexible,inflame,inevitability,inedible,inducement,indignant,indictments,indefensible,incomparable,incommunicado,improvising,impounded,illogical,ignoramus,hydrochloric,hydrate,hungover,humorless,humiliations,hugest,hoverdrone,hovel,hmmph,hitchhike,hibernating,henchman,helloooo,heirlooms,heartsick,headdress,hatches,harebrained,hapless,hanen,handsomer,hallows,habitual,guten,gummy,guiltier,guidebook,gstaad,gruff,griss,grieved,grata,gorignak,goosed,goofed,glowed,glitz,glimpses,glancing,gilmores,gianelli,geraniums,garroway,gangbusters,gamblers,galls,fuddy,frumpy,frowning,frothy,fro'tak,frere,fragrances,forgettin,follicles,flowery,flophouse,floatin,flirts,flings,flatfoot,fingerprinting,fingerprinted,fingering,finald,fillet,fianc,femoral,federales,fawkes,fascinates,farfel,fambly,falsified,fabricating,exterminators,expectant,excusez,excrement,excercises,evian,etins,esophageal,equivalency,equate,equalizer,entrees,enquire,endearment,empathetic,emailed,eggroll,earmuffs,dyslexic,duper,duesouth,drunker,druggie,dreadfully,dramatics,dragline,downplay,downers,dominatrix,doers,docket,docile,diversify,distracts,disloyalty,disinterested,discharging,disagreeable,dirtier,dinghy,dimwitted,dimoxinil,dimmy,diatribe,devising,deviate,detriment,desertion,depressants,depravity,deniability,delinquents,defiled,deepcore,deductive,decimate,deadbolt,dauthuille,dastardly,daiquiris,daggers,dachau,curiouser,curdled,cucamonga,cruller,cruces,crosswalk,crinkle,crescendo,cremate,counseled,couches,cornea,corday,copernicus,contrition,contemptible,constipated,conjoined,confounded,condescend,concoct,conch,compensating,committment,commandeered,comely,coddled,cockfight,cluttered,clunky,clownfish,cloaked,clenched,cleanin,civilised,circumcised,cimmeria,cilantro,chutzpah,chucking,chiseled,chicka,chattering,cervix,carrey,carpal,carnations,cappuccinos,candied,calluses,calisthenics,bushy,burners,budington,buchanans,brimming,braids,boycotting,bouncers,botticelli,botherin,bookkeeping,bogyman,bogged,bloodthirsty,blintzes,blanky,binturong,billable,bigboote,bewildered,betas,bequeath,behoove,befriend,bedpost,bedded,baudelaires,barreled,barboni,barbeque,bangin,baltus,bailout,backstabber,baccarat,awning,augie,arguillo,archway,apricots,apologising,annyong,anchorman,amenable,amazement,allspice,alannis,airfare,airbags,ahhhhhhhhh,ahhhhhhhh,ahhhhhhh,agitator,adrenal,acidosis,achoo,accessorizing,accentuate,abrasions,abductor,aaaahhh,aaaaaaaa,aaaaaaa,zeroing,zelner,zeldy,yevgeny,yeska,yellows,yeesh,yeahh,yamuri,wouldn't've,workmanship,woodsman,winnin,winked,wildness,whoring,whitewash,whiney,when're,wheezer,wheelman,wheelbarrow,westerburg,weeding,watermelons,washboard,waltzes,wafting,voulez,voluptuous,vitone,vigilantes,videotaping,viciously,vices,veruca,vermeer,verifying,vasculitis,valets,upholstered,unwavering,untold,unsympathetic,unromantic,unrecognizable,unpredictability,unmask,unleashing,unintentional,unglued,unequivocal,underrated,underfoot,unchecked,unbutton,unbind,unbiased,unagi,uhhhhh,tugging,triads,trespasses,treehorn,traviata,trappers,transplants,trannie,tramping,tracheotomy,tourniquet,tooty,toothless,tomarrow,toasters,thruster,thoughtfulness,thornwood,tengo,tenfold,telltale,telephoto,telephoned,telemarketer,tearin,tastic,tastefully,tasking,taser,tamed,tallow,taketh,taillight,tadpoles,tachibana,syringes,sweated,swarthy,swagger,surges,supermodels,superhighway,sunup,sun'll,sulfa,sugarless,sufficed,subside,strolled,stringy,strengthens,straightest,straightens,storefront,stopper,stockpiling,stimulant,stiffed,steyne,sternum,stepladder,stepbrother,steers,steelheads,steakhouse,stathis,stankylecartmankennymr,standoffish,stalwart,squirted,spritz,sprig,sprawl,spousal,sphincter,spenders,spearmint,spatter,spangled,southey,soured,sonuvabitch,somethng,snuffed,sniffs,smokescreen,smilin,slobs,sleepwalker,sleds,slays,slayage,skydiving,sketched,skanks,sixed,siphoned,siphon,simpering,sigfried,sidearm,siddons,sickie,shuteye,shuffleboard,shrubberies,shrouded,showmanship,shouldn't've,shoplift,shiatsu,sentries,sentance,sensuality,seething,secretions,searing,scuttlebutt,sculpt,scowling,scouring,scorecard,schoolers,schmucks,scepters,scaly,scalps,scaffolding,sauces,sartorius,santen,salivating,sainthood,saget,saddens,rygalski,rusting,ruination,rueland,rudabaga,rottweiler,roofies,romantics,rollerblading,roldy,roadshow,rickets,rible,rheza,revisiting,retentive,resurface,restores,respite,resounding,resorting,resists,repulse,repressing,repaying,reneged,refunds,rediscover,redecorated,reconstructive,recommitted,recollect,receptacle,reassess,reanimation,realtors,razinin,rationalization,ratatouille,rashum,rasczak,rancheros,rampler,quizzing,quips,quartered,purring,pummeling,puede,proximo,prospectus,pronouncing,prolonging,procreation,proclamations,principled,prides,preoccupation,prego,precog,prattle,pounced,potshots,potpourri,porque,pomegranates,polenta,plying,pluie,plesac,playmates,plantains,pillowcase,piddle,pickers,photocopied,philistine,perpetuate,perpetually,perilous,pawned,pausing,pauper,parter,parlez,parlay,pally,ovulation,overtake,overstate,overpowering,overpowered,overconfident,overbooked,ovaltine,outweighs,outings,ottos,orrin,orifice,orangutan,oopsy,ooooooooh,oooooo,ooohhhh,ocular,obstruct,obscenely,o'dwyer,nutjob,nunur,notifying,nostrand,nonny,nonfat,noblest,nimble,nikes,nicht,newsworthy,nestled,nearsighted,ne'er,nastier,narco,nakedness,muted,mummified,mudda,mozzarella,moxica,motivator,motility,mothafucka,mortmain,mortgaged,mores,mongers,mobbed,mitigating,mistah,misrepresented,mishke,misfortunes,misdirection,mischievous,mineshaft,millaney,microwaves,metzenbaum,mccovey,masterful,masochistic,marliston,marijawana,manya,mantumbi,malarkey,magnifique,madrona,madox,machida,m'hidi,lullabies,loveliness,lotions,looka,lompoc,litterbug,litigator,lithe,liquorice,linds,limericks,lightbulb,lewises,letch,lemec,layover,lavatory,laurels,lateness,laparotomy,laboring,kuato,kroff,krispy,krauts,knuckleheads,kitschy,kippers,kimbrow,keypad,keepsake,kebab,karloff,junket,judgemental,jointed,jezzie,jetting,jeeze,jeeter,jeesus,jeebs,janeane,jails,jackhammer,ixnay,irritates,irritability,irrevocable,irrefutable,irked,invoking,intricacies,interferon,intents,insubordinate,instructive,instinctive,inquisitive,inlay,injuns,inebriated,indignity,indecisive,incisors,incacha,inalienable,impresses,impregnate,impregnable,implosion,idolizes,hypothyroidism,hypoglycemic,huseni,humvee,huddling,honing,hobnobbing,hobnob,histrionics,histamine,hirohito,hippocratic,hindquarters,hikita,hikes,hightailed,hieroglyphics,heretofore,herbalist,hehey,hedriks,heartstrings,headmistress,headlight,hardheaded,happend,handlebars,hagitha,habla,gyroscope,guys'd,guy'd,guttersnipe,grump,growed,grovelling,groan,greenbacks,gravedigger,grating,grasshoppers,grandiose,grandest,grafted,gooood,goood,gooks,godsakes,goaded,glamorama,giveth,gingham,ghostbusters,germane,georgy,gazzo,gazelles,gargle,garbled,galgenstein,gaffe,g'day,fyarl,furnish,furies,fulfills,frowns,frowned,frighteningly,freebies,freakishly,forewarned,foreclose,forearms,fordson,fonics,flushes,flitting,flemmer,flabby,fishbowl,fidgeting,fevers,feigning,faxing,fatigued,fathoms,fatherless,fancier,fanatical,factored,eyelid,eyeglasses,expresso,expletive,expectin,excruciatingly,evidentiary,ever'thing,eurotrash,eubie,estrangement,erlich,epitome,entrap,enclose,emphysema,embers,emasculating,eighths,eardrum,dyslexia,duplicitous,dumpty,dumbledore,dufus,duddy,duchamp,drunkenness,drumlin,drowns,droid,drinky,drifts,drawbridge,dramamine,douggie,douchebag,dostoyevsky,doodling,don'tcha,domineering,doings,dogcatcher,doctoring,ditzy,dissimilar,dissecting,disparage,disliking,disintegrating,dishwalla,dishonored,dishing,disengaged,disavowed,dippy,diorama,dimmed,dilate,digitalis,diggory,dicing,diagnosing,devola,desolation,dennings,denials,deliverance,deliciously,delicacies,degenerates,degas,deflector,defile,deference,decrepit,deciphered,dawdle,dauphine,daresay,dangles,dampen,damndest,cucumbers,cucaracha,cryogenically,croaks,croaked,criticise,crisper,creepiest,creams,crackle,crackin,covertly,counterintelligence,corrosive,cordially,cops'll,convulsions,convoluted,conversing,conga,confrontational,confab,condolence,condiments,complicit,compiegne,commodus,comings,cometh,collusion,collared,cockeyed,clobber,clemonds,clarithromycin,cienega,christmasy,christmassy,chloroform,chippie,chested,cheeco,checklist,chauvinist,chandlers,chambermaid,chakras,cellophane,caveat,cataloguing,cartmanland,carples,carny,carded,caramels,cappy,caped,canvassing,callback,calibrated,calamine,buttermilk,butterfingers,bunsen,bulimia,bukatari,buildin,budged,brobich,bringer,brendell,brawling,bratty,braised,boyish,boundless,botch,boosh,bookies,bonbons,bodes,bobunk,bluntly,blossoming,bloomers,bloodstains,bloodhounds,blech,biter,biometric,bioethics,bijan,bigoted,bicep,bereaved,bellowing,belching,beholden,beached,batmobile,barcodes,barch,barbecuing,bandanna,backwater,backtrack,backdraft,augustino,atrophy,atrocity,atley,atchoo,asthmatic,assoc,armchair,arachnids,aptly,appetizing,antisocial,antagonizing,anorexia,anini,andersons,anagram,amputation,alleluia,airlock,aimless,agonized,agitate,aggravating,aerosol,acing,accomplishing,accidently,abuser,abstain,abnormally,aberration,aaaaahh,zlotys,zesty,zerzura,zapruder,zantopia,yelburton,yeess,y'knowwhati'msayin,wwhat,wussies,wrenched,would'a,worryin,wormser,wooooo,wookiee,wolchek,wishin,wiseguys,windbreaker,wiggy,wieners,wiedersehen,whoopin,whittled,wherefore,wharvey,welts,wellstone,wedges,wavered,watchit,wastebasket,wango,waken,waitressed,wacquiem,vrykolaka,voula,vitally,visualizing,viciousness,vespers,vertes,verily,vegetarians,vater,vaporize,vannacutt,vallens,ussher,urinating,upping,unwitting,untangle,untamed,unsanitary,unraveled,unopened,unisex,uninvolved,uninteresting,unintelligible,unimaginative,undeserving,undermines,undergarments,unconcerned,tyrants,typist,tykes,tybalt,twosome,twits,tutti,turndown,tularemia,tuberculoma,tsimshian,truffaut,truer,truant,trove,triumphed,tripe,trigonometry,trifled,trifecta,tribulations,tremont,tremoille,transcends,trafficker,touchin,tomfoolery,tinkered,tinfoil,tightrope,thousan,thoracotomy,thesaurus,thawing,thatta,tessio,temps,taxidermist,tator,tachycardia,t'akaya,swelco,sweetbreads,swatting,supercollider,sunbathing,summarily,suffocation,sueleen,succinct,subsided,submissive,subjecting,subbing,subatomic,stupendous,stunted,stubble,stubbed,streetwalker,strategizing,straining,straightaway,stoli,stiffer,stickup,stens,steamroller,steadwell,steadfast,stateroom,stans,sshhhh,squishing,squinting,squealed,sprouting,sprimp,spreadsheets,sprawled,spotlights,spooning,spirals,speedboat,spectacles,speakerphone,southglen,souse,soundproof,soothsayer,sommes,somethings,solidify,soars,snorted,snorkeling,snitches,sniping,snifter,sniffin,snickering,sneer,snarl,smila,slinking,slanted,slanderous,slammin,skimp,skilosh,siteid,sirloin,singe,sighing,sidekicks,sicken,showstopper,shoplifter,shimokawa,sherborne,shavadai,sharpshooters,sharking,shagged,shaddup,senorita,sesterces,sensuous,seahaven,scullery,scorcher,schotzie,schnoz,schmooze,schlep,schizo,scents,scalping,scalped,scallop,scalding,sayeth,saybrooke,sawed,savoring,sardine,sandstorm,sandalwood,salutations,sagman,s'okay,rsvp'd,rousted,rootin,romper,romanovs,rollercoaster,rolfie,robinsons,ritzy,ritualistic,ringwald,rhymed,rheingold,rewrites,revoking,reverts,retrofit,retort,retinas,respirations,reprobate,replaying,repaint,renquist,renege,relapsing,rekindled,rejuvenating,rejuvenated,reinstating,recriminations,rechecked,reassemble,rears,reamed,reacquaint,rayanne,ravish,rathole,raspail,rarest,rapists,rants,racketeer,quittin,quitters,quintessential,queremos,quellek,quelle,quasimodo,pyromaniac,puttanesca,puritanical,purer,puree,pungent,pummel,puedo,psychotherapist,prosecutorial,prosciutto,propositioning,procrastination,probationary,primping,preventative,prevails,preservatives,preachy,praetorians,practicality,powders,potus,postop,positives,poser,portolano,portokalos,poolside,poltergeists,pocketed,poach,plummeted,plucking,plimpton,playthings,plastique,plainclothes,pinpointed,pinkus,pinks,pigskin,piffle,pictionary,piccata,photocopy,phobias,perignon,perfumes,pecks,pecked,patently,passable,parasailing,paramus,papier,paintbrush,pacer,paaiint,overtures,overthink,overstayed,overrule,overestimate,overcooked,outlandish,outgrew,outdoorsy,outdo,orchestrate,oppress,opposable,oooohh,oomupwah,okeydokey,okaaay,ohashi,of'em,obscenities,oakie,o'gar,nurection,nostradamus,norther,norcom,nooch,nonsensical,nipped,nimbala,nervously,neckline,nebbleman,narwhal,nametag,n'n't,mycenae,muzak,muumuu,mumbled,mulvehill,muggings,muffet,mouthy,motivates,motaba,moocher,mongi,moley,moisturize,mohair,mocky,mmkay,mistuh,missis,misdeeds,mincemeat,miggs,miffed,methadone,messieur,menopausal,menagerie,mcgillicuddy,mayflowers,matrimonial,matick,masai,marzipan,maplewood,manzelle,mannequins,manhole,manhandle,malfunctions,madwoman,machiavelli,lynley,lynched,lurconis,lujack,lubricant,looove,loons,loofah,lonelyhearts,lollipops,lineswoman,lifers,lexter,lepner,lemony,leggy,leafy,leadeth,lazerus,lazare,lawford,languishing,lagoda,ladman,kundera,krinkle,krendler,kreigel,kowolski,knockdown,knifed,kneed,kneecap,kids'll,kennie,kenmore,keeled,kazootie,katzenmoyer,kasdan,karak,kapowski,kakistos,julyan,jockstrap,jobless,jiggly,jaunt,jarring,jabbering,irrigate,irrevocably,irrationally,ironies,invitro,intimated,intently,intentioned,intelligently,instill,instigator,instep,inopportune,innuendoes,inflate,infects,infamy,indiscretions,indiscreet,indio,indignities,indict,indecision,inconspicuous,inappropriately,impunity,impudent,impotence,implicates,implausible,imperfection,impatience,immutable,immobilize,idealist,iambic,hysterically,hyperspace,hygienist,hydraulics,hydrated,huzzah,husks,hunched,huffed,hubris,hubbub,hovercraft,houngan,hosed,horoscopes,hopelessness,hoodwinked,honorably,honeysuckle,homegirl,holiest,hippity,hildie,hieroglyphs,hexton,herein,heckle,heaping,healthilizer,headfirst,hatsue,harlot,hardwired,halothane,hairstyles,haagen,haaaaa,gutting,gummi,groundless,groaning,gristle,grills,graynamore,grabbin,goodes,goggle,glittering,glint,gleaming,glassy,girth,gimbal,giblets,gellers,geezers,geeze,garshaw,gargantuan,garfunkel,gangway,gandarium,gamut,galoshes,gallivanting,gainfully,gachnar,fusionlips,fusilli,furiously,frugal,fricking,frederika,freckling,frauds,fountainhead,forthwith,forgo,forgettable,foresight,foresaw,fondling,fondled,fondle,folksy,fluttering,fluffing,floundering,flirtatious,flexing,flatterer,flaring,fixating,finchy,figurehead,fiendish,fertilize,ferment,fending,fellahs,feelers,fascinate,fantabulous,falsify,fallopian,faithless,fairer,fainter,failings,facetious,eyepatch,exxon,extraterrestrials,extradite,extracurriculars,extinguish,expunged,expelling,exorbitant,exhilarated,exertion,exerting,excercise,everbody,evaporated,escargot,escapee,erases,epizootics,epithelials,ephrum,entanglements,enslave,engrossed,emphatic,emeralds,ember,emancipated,elevates,ejaculate,effeminate,eccentricities,easygoing,earshot,dunks,dullness,dulli,dulled,drumstick,dropper,driftwood,dregs,dreck,dreamboat,draggin,downsizing,donowitz,dominoes,diversions,distended,dissipate,disraeli,disqualify,disowned,dishwashing,disciplining,discerning,disappoints,dinged,digested,dicking,detonating,despising,depressor,depose,deport,dents,defused,deflecting,decryption,decoys,decoupage,decompress,decibel,decadence,deafening,dawning,dater,darkened,dappy,dallying,dagon,czechoslovakians,cuticles,cuteness,cupboards,culottes,cruisin,crosshairs,cronyn,criminalistics,creatively,creaming,crapping,cranny,cowed,contradicting,constipation,confining,confidences,conceiving,conceivably,concealment,compulsively,complainin,complacent,compels,communing,commode,comming,commensurate,columnists,colonoscopy,colchicine,coddling,clump,clubbed,clowning,cliffhanger,clang,cissy,choosers,choker,chiffon,channeled,chalet,cellmates,cathartic,caseload,carjack,canvass,canisters,candlestick,candlelit,camry,calzones,calitri,caldy,byline,butterball,bustier,burlap,bureaucrat,buffoons,buenas,brookline,bronzed,broiled,broda,briss,brioche,briar,breathable,brays,brassieres,boysenberry,bowline,boooo,boonies,booklets,bookish,boogeyman,boogey,bogas,boardinghouse,bluuch,blundering,bluer,blowed,blotchy,blossomed,bloodwork,bloodied,blithering,blinks,blathering,blasphemous,blacking,birdson,bings,bfmid,bfast,bettin,berkshires,benjamins,benevolence,benched,benatar,bellybutton,belabor,behooves,beddy,beaujolais,beattle,baxworth,baseless,barfing,bannish,bankrolled,banek,ballsy,ballpoint,baffling,badder,badda,bactine,backgammon,baako,aztreonam,authoritah,auctioning,arachtoids,apropos,aprons,apprised,apprehensive,anythng,antivenin,antichrist,anorexic,anoint,anguished,angioplasty,angio,amply,ampicillin,amphetamines,alternator,alcove,alabaster,airlifted,agrabah,affidavits,admonished,admonish,addled,addendum,accuser,accompli,absurdity,absolved,abrusso,abreast,aboot,abductions,abducting,aback,ababwa,aaahhhh,zorin,zinthar,zinfandel,zillions,zephyrs,zatarcs,zacks,youuu,yokels,yardstick,yammer,y'understand,wynette,wrung,wreaths,wowed,wouldn'ta,worming,wormed,workday,woodsy,woodshed,woodchuck,wojadubakowski,withering,witching,wiseass,wiretaps,wining,willoby,wiccaning,whupped,whoopi,whoomp,wholesaler,whiteness,whiner,whatchya,wharves,wenus,weirdoes,weaning,watusi,waponi,waistband,wackos,vouching,votre,vivica,viveca,vivant,vivacious,visor,visitin,visage,vicrum,vetted,ventriloquism,venison,varnsen,vaporized,vapid,vanstock,uuuuh,ushering,urologist,urination,upstart,uprooted,unsubtitled,unspoiled,unseat,unseasonably,unseal,unsatisfying,unnerve,unlikable,unleaded,uninsured,uninspired,unicycle,unhooked,unfunny,unfreezing,unflattering,unfairness,unexpressed,unending,unencumbered,unearth,undiscovered,undisciplined,understan,undershirt,underlings,underline,undercurrent,uncivilized,uncharacteristic,umpteenth,uglies,tuney,trumps,truckasaurus,trubshaw,trouser,tringle,trifling,trickster,trespassers,trespasser,traumas,trattoria,trashes,transgressions,trampling,tp'ed,toxoplasmosis,tounge,tortillas,topsy,topple,topnotch,tonsil,tions,timmuh,timithious,tilney,tighty,tightness,tightens,tidbits,ticketed,thyme,threepio,thoughtfully,thorkel,thommo,thing'll,thefts,that've,thanksgivings,tetherball,testikov,terraforming,tepid,tendonitis,tenboom,telex,teenybopper,tattered,tattaglias,tanneke,tailspin,tablecloth,swooping,swizzle,swiping,swindled,swilling,swerving,sweatshops,swaddling,swackhammer,svetkoff,supossed,superdad,sumptuous,sugary,sugai,subvert,substantiate,submersible,sublimating,subjugation,stymied,strychnine,streetlights,strassmans,stranglehold,strangeness,straddling,straddle,stowaways,stotch,stockbrokers,stifling,stepford,steerage,steena,statuary,starlets,staggeringly,ssshhh,squaw,spurt,spungeon,spritzer,sprightly,sprays,sportswear,spoonful,splittin,splitsville,speedily,specialise,spastic,sparrin,souvlaki,southie,sourpuss,soupy,soundstage,soothes,somebody'd,softest,sociopathic,socialized,snyders,snowmobiles,snowballed,snatches,smugness,smoothest,smashes,sloshed,sleight,skyrocket,skied,skewed,sixpence,sipowicz,singling,simulates,shyness,shuvanis,showoff,shortsighted,shopkeeper,shoehorn,shithouse,shirtless,shipshape,shifu,shelve,shelbyville,sheepskin,sharpens,shaquille,shanshu,servings,sequined,seizes,seashells,scrambler,scopes,schnauzer,schmo,schizoid,scampered,savagely,saudis,santas,sandovals,sanding,saleswoman,sagging,s'cuse,rutting,ruthlessly,runneth,ruffians,rubes,rosalita,rollerblades,rohypnol,roasts,roadies,ritten,rippling,ripples,rigoletto,richardo,rethought,reshoot,reserving,reseda,rescuer,reread,requisitions,repute,reprogram,replenish,repetitious,reorganizing,reinventing,reinvented,reheat,refrigerators,reenter,recruiter,recliner,rawdy,rashes,rajeski,raison,raisers,rages,quinine,questscape,queller,pygmalion,pushers,pusan,purview,pumpin,pubescent,prudes,provolone,propriety,propped,procrastinate,processional,preyed,pretrial,portent,pooling,poofy,polloi,policia,poacher,pluses,pleasuring,platitudes,plateaued,plaguing,pittance,pinheads,pincushion,pimply,pimped,piggyback,piecing,phillipe,philipse,philby,pharaohs,petyr,petitioner,peshtigo,pesaram,persnickety,perpetrate,percolating,pepto,penne,penell,pemmican,peeks,pedaling,peacemaker,pawnshop,patting,pathologically,patchouli,pasts,pasties,passin,parlors,paltrow,palamon,padlock,paddling,oversleep,overheating,overdosed,overcharge,overblown,outrageously,ornery,opportune,oooooooooh,oohhhh,ohhhhhh,ogres,odorless,obliterated,nyong,nymphomaniac,ntozake,novocain,nough,nonnie,nonissue,nodules,nightmarish,nightline,niceties,newsman,needra,nedry,necking,navour,nauseam,nauls,narim,namath,nagged,naboo,n'sync,myslexia,mutator,mustafi,musketeer,murtaugh,murderess,munching,mumsy,muley,mouseville,mortifying,morgendorffers,moola,montel,mongoloid,molestered,moldings,mocarbies,mo'ss,mixers,misrell,misnomer,misheard,mishandled,miscreant,misconceptions,miniscule,millgate,mettle,metricconverter,meteors,menorah,mengele,melding,meanness,mcgruff,mcarnold,matzoh,matted,mastectomy,massager,marveling,marooned,marmaduke,marick,manhandled,manatees,man'll,maltin,maliciously,malfeasance,malahide,maketh,makeovers,maiming,machismo,lumpectomy,lumbering,lucci,lording,lorca,lookouts,loogie,loners,loathed,lissen,lighthearted,lifer,lickin,lewen,levitation,lestercorp,lessee,lentils,legislate,legalizing,lederhosen,lawmen,lasskopf,lardner,lambeau,lamagra,ladonn,lactic,lacquer,labatier,krabappel,kooks,knickknacks,klutzy,kleynach,klendathu,kinross,kinkaid,kind'a,ketch,kesher,karikos,karenina,kanamits,junshi,jumbled,joust,jotted,jobson,jingling,jigalong,jerries,jellies,jeeps,javna,irresistable,internist,intercranial,inseminated,inquisitor,infuriate,inflating,infidelities,incessantly,incensed,incase,incapacitate,inasmuch,inaccuracies,imploding,impeding,impediments,immaturity,illegible,iditarod,icicles,ibuprofen,i'i'm,hymie,hydrolase,hunker,humps,humons,humidor,humdinger,humbling,huggin,huffing,housecleaning,hothouse,hotcakes,hosty,hootenanny,hootchie,hoosegow,honks,honeymooners,homily,homeopathic,hitchhikers,hissed,hillnigger,hexavalent,hewwo,hershe,hermey,hergott,henny,hennigans,henhouse,hemolytic,helipad,heifer,hebrews,hebbing,heaved,headlock,harrowing,harnessed,hangovers,handi,handbasket,halfrek,hacene,gyges,guys're,gundersons,gumption,gruntmaster,grubs,grossie,groped,grins,greaseball,gravesite,gratuity,granma,grandfathers,grandbaby,gradski,gracing,gossips,gooble,goners,golitsyn,gofer,godsake,goddaughter,gnats,gluing,glares,givers,ginza,gimmie,gimmee,gennero,gemme,gazpacho,gazed,gassy,gargling,gandhiji,galvanized,gallbladder,gaaah,furtive,fumigation,fucka,fronkonsteen,frills,freezin,freewald,freeloader,frailty,forger,foolhardy,fondest,fomin,followin,follicle,flotation,flopping,floodgates,flogged,flicked,flenders,fleabag,fixings,fixable,fistful,firewater,firelight,fingerbang,finalizing,fillin,filipov,fiderer,felling,feldberg,feign,faunia,fatale,farkus,fallible,faithfulness,factoring,eyeful,extramarital,exterminated,exhume,exasperated,eviscerate,estoy,esmerelda,escapades,epoxy,enticed,enthused,entendre,engrossing,endorphins,emptive,emmys,eminently,embezzler,embarressed,embarrassingly,embalmed,eludes,eling,elated,eirie,egotitis,effecting,eerily,eecom,eczema,earthy,earlobes,eally,dyeing,dwells,duvet,duncans,dulcet,droves,droppin,drools,drey'auc,downriver,domesticity,dollop,doesnt,dobler,divulged,diversionary,distancing,dispensers,disorienting,disneyworld,dismissive,disingenuous,disheveled,disfiguring,dinning,dimming,diligently,dilettante,dilation,dickensian,diaphragms,devastatingly,destabilize,desecrate,deposing,deniece,demony,delving,delicates,deigned,defraud,deflower,defibrillator,defiantly,defenceless,defacing,deconstruction,decompose,deciphering,decibels,deceptively,deceptions,decapitation,debutantes,debonair,deadlier,dawdling,davic,darwinism,darnit,darks,danke,danieljackson,dangled,cytoxan,cutout,cutlery,curveball,curfews,cummerbund,crunches,crouched,crisps,cripples,crilly,cribs,crewman,creepin,creeds,credenza,creak,crawly,crawlin,crawlers,crated,crackheads,coworker,couldn't've,corwins,coriander,copiously,convenes,contraceptives,contingencies,contaminating,conniption,condiment,concocting,comprehending,complacency,commendatore,comebacks,com'on,collarbone,colitis,coldly,coiffure,coffers,coeds,codependent,cocksucking,cockney,cockles,clutched,closeted,cloistered,cleve,cleats,clarifying,clapped,cinnabar,chunnel,chumps,cholinesterase,choirboy,chocolatey,chlamydia,chigliak,cheesie,chauvinistic,chasm,chartreuse,charo,charnier,chapil,chalked,chadway,certifiably,cellulite,celled,cavalcade,cataloging,castrated,cassio,cashews,cartouche,carnivore,carcinogens,capulet,captivated,capt'n,cancellations,campin,callate,callar,caffeinated,cadavers,cacophony,cackle,buzzes,buttoning,busload,burglaries,burbs,buona,bunions,bullheaded,buffs,bucyk,buckling,bruschetta,browbeating,broomsticks,broody,bromly,brolin,briefings,brewskies,breathalyzer,breakups,bratwurst,brania,braiding,brags,braggin,bradywood,bottomed,bossa,bordello,bookshelf,boogida,bondsman,bolder,boggles,bludgeoned,blowtorch,blotter,blips,blemish,bleaching,blainetologists,blading,blabbermouth,birdseed,bimmel,biloxi,biggly,bianchinni,betadine,berenson,belus,belloq,begets,befitting,beepers,beelzebub,beefed,bedridden,bedevere,beckons,beaded,baubles,bauble,battleground,bathrobes,basketballs,basements,barroom,barnacle,barkin,barked,baretta,bangles,bangler,banality,bambang,baltar,ballplayers,bagman,baffles,backroom,babysat,baboons,averse,audiotape,auctioneer,atten,atcha,astonishment,arugula,arroz,antihistamines,annoyances,anesthesiology,anatomically,anachronism,amiable,amaretto,allahu,alight,aimin,ailment,afterglow,affronte,advil,adrenals,actualization,acrost,ached,accursed,accoutrements,absconded,aboveboard,abetted,aargh,aaaahh,zuwicky,zolda,ziploc,zakamatak,youve,yippie,yesterdays,yella,yearns,yearnings,yearned,yawning,yalta,yahtzee,y'mean,y'are,wuthering,wreaks,worrisome,workiiing,wooooooo,wonky,womanizing,wolodarsky,wiwith,withdraws,wishy,wisht,wipers,wiper,winos,windthorne,windsurfing,windermere,wiggled,wiggen,whwhat,whodunit,whoaaa,whittling,whitesnake,whereof,wheezing,wheeze,whatd'ya,whataya,whammo,whackin,wellll,weightless,weevil,wedgies,webbing,weasly,wayside,waxes,waturi,washy,washrooms,wandell,waitaminute,waddya,waaaah,vornac,vishnoor,virulent,vindictiveness,vinceres,villier,vigeous,vestigial,ventilate,vented,venereal,veering,veered,veddy,vaslova,valosky,vailsburg,vaginas,vagas,urethra,upstaged,uploading,unwrapping,unwieldy,untapped,unsatisfied,unquenchable,unnerved,unmentionable,unlovable,unknowns,uninformed,unimpressed,unhappily,unguarded,unexplored,undergarment,undeniably,unclench,unclaimed,uncharacteristically,unbuttoned,unblemished,ululd,uhhhm,tweeze,tutsami,tushy,tuscarora,turkle,turghan,turbinium,tubers,trucoat,troxa,tropicana,triquetra,trimmers,triceps,trespassed,traya,traumatizing,transvestites,trainors,tradin,trackers,townies,tourelles,toucha,tossin,tortious,topshop,topes,tonics,tongs,tomsk,tomorrows,toiling,toddle,tizzy,tippers,timmi,thwap,thusly,ththe,thrusts,throwers,throwed,throughway,thickening,thermonuclear,thelwall,thataway,terrifically,tendons,teleportation,telepathically,telekinetic,teetering,teaspoons,tarantulas,tapas,tanned,tangling,tamales,tailors,tahitian,tactful,tachy,tablespoon,syrah,synchronicity,synch,synapses,swooning,switchman,swimsuits,sweltering,sweetly,suvolte,suslov,surfed,supposition,suppertime,supervillains,superfluous,superego,sunspots,sunning,sunless,sundress,suckah,succotash,sublevel,subbasement,studious,striping,strenuously,straights,stonewalled,stillness,stilettos,stevesy,steno,steenwyck,stargates,stammering,staedert,squiggly,squiggle,squashing,squaring,spreadsheet,spramp,spotters,sporto,spooking,splendido,spittin,spirulina,spiky,spate,spartacus,spacerun,soonest,something'll,someth,somepin,someone'll,sofas,soberly,sobered,snowmen,snowbank,snowballing,snivelling,sniffling,snakeskin,snagging,smush,smooter,smidgen,smackers,slumlord,slossum,slimmer,slighted,sleepwalk,sleazeball,skokie,skeptic,sitarides,sistah,sipped,sindell,simpletons,simony,silkwood,silks,silken,sightless,sideboard,shuttles,shrugging,shrouds,showy,shoveled,shouldn'ta,shoplifters,shitstorm,sheeny,shapetype,shaming,shallows,shackle,shabbily,shabbas,seppuku,senility,semite,semiautomatic,selznick,secretarial,sebacio,scuzzy,scummy,scrutinized,scrunchie,scribbled,scotches,scolded,scissor,schlub,scavenging,scarin,scarfing,scallions,scald,savour,savored,saute,sarcoidosis,sandbar,saluted,salish,saith,sailboats,sagittarius,sacre,saccharine,sacamano,rushdie,rumpled,rumba,rulebook,rubbers,roughage,rotisserie,rootie,roofy,roofie,romanticize,rittle,ristorante,rippin,rinsing,ringin,rincess,rickety,reveling,retest,retaliating,restorative,reston,restaurateur,reshoots,resetting,resentments,reprogramming,repossess,repartee,renzo,remore,remitting,remeber,relaxants,rejuvenate,rejections,regenerated,refocus,referrals,reeno,recycles,recrimination,reclining,recanting,reattach,reassigning,razgul,raved,rattlesnakes,rattles,rashly,raquetball,ransack,raisinettes,raheem,radisson,radishes,raban,quoth,qumari,quints,quilts,quilting,quien,quarreled,purty,purblind,punchbowl,publically,psychotics,psychopaths,psychoanalyze,pruning,provasik,protectin,propping,proportioned,prophylactic,proofed,prompter,procreate,proclivities,prioritizing,prinze,pricked,press'll,presets,prescribes,preocupe,prejudicial,prefex,preconceived,precipice,pralines,pragmatist,powerbar,pottie,pottersville,potsie,potholes,posses,posies,portkey,porterhouse,pornographers,poring,poppycock,poppers,pomponi,pokin,poitier,podiatry,pleeze,pleadings,playbook,platelets,plane'arium,placebos,place'll,pistachios,pirated,pinochle,pineapples,pinafore,pimples,piggly,piddling,picon,pickpockets,picchu,physiologically,physic,phobic,philandering,phenomenally,pheasants,pewter,petticoat,petronis,petitioning,perturbed,perpetuating,permutat,perishable,perimeters,perfumed,percocet,per'sus,pepperjack,penalize,pelting,pellet,peignoir,pedicures,peckers,pecans,pawning,paulsson,pattycake,patrolmen,patois,pathos,pasted,parishioner,parcheesi,parachuting,papayas,pantaloons,palpitations,palantine,paintballing,overtired,overstress,oversensitive,overnights,overexcited,overanxious,overachiever,outwitted,outvoted,outnumber,outlast,outlander,out've,orphey,orchestrating,openers,ooooooo,okies,ohhhhhhhhh,ohhhhhhhh,ogling,offbeat,obsessively,obeyed,o'hana,o'bannon,o'bannion,numpce,nummy,nuked,nuances,nourishing,nosedive,norbu,nomlies,nomine,nixed,nihilist,nightshift,newmeat,neglectful,neediness,needin,naphthalene,nanocytes,nanite,naivete,n'yeah,mystifying,myhnegon,mutating,musing,mulled,muggy,muerto,muckraker,muchachos,mountainside,motherless,mosquitos,morphed,mopped,moodoo,moncho,mollem,moisturiser,mohicans,mocks,mistresses,misspent,misinterpretation,miscarry,minuses,mindee,mimes,millisecond,milked,mightn't,mightier,mierzwiak,microchips,meyerling,mesmerizing,mershaw,meecrob,medicate,meddled,mckinnons,mcgewan,mcdunnough,mcats,mbien,matzah,matriarch,masturbated,masselin,martialed,marlboros,marksmanship,marinate,marchin,manicured,malnourished,malign,majorek,magnon,magnificently,macking,machiavellian,macdougal,macchiato,macaws,macanaw,m'self,lydells,lusts,lucite,lubricants,lopper,lopped,loneliest,lonelier,lomez,lojack,loath,liquefy,lippy,limps,likin,lightness,liesl,liebchen,licious,libris,libation,lhamo,leotards,leanin,laxatives,lavished,latka,lanyard,lanky,landmines,lameness,laddies,lacerated,labored,l'amour,kreskin,kovitch,kournikova,kootchy,konoss,knknow,knickety,knackety,kmart,klicks,kiwanis,kissable,kindergartners,kilter,kidnet,kid'll,kicky,kickbacks,kickback,kholokov,kewpie,kendo,katra,kareoke,kafelnikov,kabob,junjun,jumba,julep,jordie,jondy,jolson,jenoff,jawbone,janitorial,janiro,ipecac,invigorated,intruded,intros,intravenously,interruptus,interrogations,interject,interfacing,interestin,insuring,instilled,insensitivity,inscrutable,inroads,innards,inlaid,injector,ingratitude,infuriates,infra,infliction,indelicate,incubators,incrimination,inconveniencing,inconsolable,incestuous,incas,incarcerate,inbreeding,impudence,impressionists,impeached,impassioned,imipenem,idling,idiosyncrasies,icebergs,hypotensive,hydrochloride,hushed,humus,humph,hummm,hulking,hubcaps,hubald,howya,howbout,how'll,housebroken,hotwire,hotspots,hotheaded,horrace,hopsfield,honto,honkin,honeymoons,homewrecker,hombres,hollers,hollerin,hoedown,hoboes,hobbling,hobble,hoarse,hinky,highlighters,hexes,heru'ur,hernias,heppleman,hell're,heighten,heheheheheh,heheheh,hedging,heckling,heckled,heavyset,heatshield,heathens,heartthrob,headpiece,hayseed,haveo,hauls,hasten,harridan,harpoons,hardens,harcesis,harbouring,hangouts,halkein,haleh,halberstam,hairnet,hairdressers,hacky,haaaa,h'yah,gusta,gushy,gurgling,guilted,gruel,grudging,grrrrrr,grosses,groomsmen,griping,gravest,gratified,grated,goulash,goopy,goona,goodly,godliness,godawful,godamn,glycerin,glutes,glowy,globetrotters,glimpsed,glenville,glaucoma,girlscout,giraffes,gilbey,gigglepuss,ghora,gestating,gelato,geishas,gearshift,gayness,gasped,gaslighting,garretts,garba,gablyczyck,g'head,fumigating,fumbling,fudged,fuckwad,fuck're,fuchsia,fretting,freshest,frenchies,freezers,fredrica,fraziers,fraidy,foxholes,fourty,fossilized,forsake,forfeits,foreclosed,foreal,footsies,florists,flopped,floorshow,floorboard,flinching,flecks,flaubert,flatware,flatulence,flatlined,flashdance,flail,flagging,fiver,fitzy,fishsticks,finetti,finelli,finagle,filko,fieldstone,fibber,ferrini,feedin,feasting,favore,fathering,farrouhk,farmin,fairytale,fairservice,factoid,facedown,fabled,eyeballin,extortionist,exquisitely,expedited,exorcise,existentialist,execs,exculpatory,exacerbate,everthing,eventuality,evander,euphoric,euphemisms,estamos,erred,entitle,enquiries,enormity,enfants,endive,encyclopedias,emulating,embittered,effortless,ectopic,ecirc,easely,earphones,earmarks,dweller,durslar,durned,dunois,dunking,dunked,dumdum,dullard,dudleys,druthers,druggist,drossos,drooled,driveways,drippy,dreamless,drawstring,drang,drainpipe,dozing,dotes,dorkface,doorknobs,doohickey,donnatella,doncha,domicile,dokos,dobermans,dizzying,divola,ditsy,distaste,disservice,dislodged,dislodge,disinherit,disinformation,discounting,dinka,dimly,digesting,diello,diddling,dictatorships,dictators,diagnostician,devours,devilishly,detract,detoxing,detours,detente,destructs,desecrated,derris,deplore,deplete,demure,demolitions,demean,delish,delbruck,delaford,degaulle,deftly,deformity,deflate,definatly,defector,decrypted,decontamination,decapitate,decanter,dardis,dampener,damme,daddy'll,dabbling,dabbled,d'etre,d'argent,d'alene,d'agnasti,czechoslovakian,cymbal,cyberdyne,cutoffs,cuticle,curvaceous,curiousity,crowing,crowed,croutons,cropped,criminy,crescentis,crashers,cranwell,coverin,courtrooms,countenance,cosmically,cosign,corroboration,coroners,cornflakes,copperpot,copperhead,copacetic,coordsize,convulsing,consults,conjures,congenial,concealer,compactor,commercialism,cokey,cognizant,clunkers,clumsily,clucking,cloves,cloven,cloths,clothe,clods,clocking,clings,clavicle,classless,clashing,clanking,clanging,clamping,civvies,citywide,circulatory,circuited,chronisters,chromic,choos,chloroformed,chillun,cheesed,chatterbox,chaperoned,channukah,cerebellum,centerpieces,centerfold,ceecee,ccedil,cavorting,cavemen,cauterized,cauldwell,catting,caterine,cassiopeia,carves,cartwheel,carpeted,carob,caressing,carelessly,careening,capricious,capitalistic,capillaries,candidly,camaraderie,callously,calfskin,caddies,buttholes,busywork,busses,burps,burgomeister,bunkhouse,bungchow,bugler,buffets,buffed,brutish,brusque,bronchitis,bromden,brolly,broached,brewskis,brewin,brean,breadwinner,brana,bountiful,bouncin,bosoms,borgnine,bopping,bootlegs,booing,bombosity,bolting,boilerplate,bluey,blowback,blouses,bloodsuckers,bloodstained,bloat,bleeth,blackface,blackest,blackened,blacken,blackballed,blabs,blabbering,birdbrain,bipartisanship,biodegradable,biltmore,bilked,big'uns,bidet,besotted,bernheim,benegas,bendiga,belushi,bellboys,belittling,behinds,begone,bedsheets,beckoning,beaute,beaudine,beastly,beachfront,bathes,batak,baser,baseballs,barbella,bankrolling,bandaged,baerly,backlog,backin,babying,azkaban,awwwww,aviary,authorizes,austero,aunty,attics,atreus,astounded,astonish,artemus,arses,arintero,appraiser,apathetic,anybody'd,anxieties,anticlimactic,antar,anglos,angleman,anesthetist,androscoggin,andolini,andale,amway,amuck,amniocentesis,amnesiac,americano,amara,alvah,altruism,alternapalooza,alphabetize,alpaca,allus,allergist,alexandros,alaikum,akimbo,agoraphobia,agides,aggrhh,aftertaste,adoptions,adjuster,addictions,adamantium,activator,accomplishes,aberrant,aaaaargh,aaaaaaaaaaaaa,a'ight,zzzzzzz,zucchini,zookeeper,zirconia,zippers,zequiel,zellary,zeitgeist,zanuck,zagat,you'n,ylang,yes'm,yenta,yecchh,yecch,yawns,yankin,yahdah,yaaah,y'got,xeroxed,wwooww,wristwatch,wrangled,wouldst,worthiness,worshiping,wormy,wormtail,wormholes,woosh,wollsten,wolfing,woefully,wobbling,wintry,wingding,windstorm,windowtext,wiluna,wilting,wilted,willick,willenholly,wildflowers,wildebeest,whyyy,whoppers,whoaa,whizzing,whizz,whitest,whistled,whist,whinny,wheelies,whazzup,whatwhatwhaaat,whato,whatdya,what'dya,whacks,wewell,wetsuit,welluh,weeps,waylander,wavin,wassail,wasnt,warneford,warbucks,waltons,wallbanger,waiving,waitwait,vowing,voucher,vornoff,vorhees,voldemort,vivre,vittles,vindaloo,videogames,vichyssoise,vicarious,vesuvius,verguenza,ven't,velveteen,velour,velociraptor,vastness,vasectomies,vapors,vanderhof,valmont,validates,valiantly,vacuums,usurp,usernum,us'll,urinals,unyielding,unvarnished,unturned,untouchables,untangled,unsecured,unscramble,unreturned,unremarkable,unpretentious,unnerstand,unmade,unimpeachable,unfashionable,underwrite,underlining,underling,underestimates,underappreciated,uncouth,uncork,uncommonly,unclog,uncircumcised,unchallenged,uncas,unbuttoning,unapproved,unamerican,unafraid,umpteen,umhmm,uhwhy,ughuh,typewriters,twitches,twitched,twirly,twinkling,twinges,twiddling,turners,turnabout,tumblin,tryed,trowel,trousseau,trivialize,trifles,tribianni,trenchcoat,trembled,traumatize,transitory,transients,transfuse,transcribing,tranq,trampy,traipsed,trainin,trachea,traceable,touristy,toughie,toscanini,tortola,tortilla,torreon,toreador,tommorrow,tollbooth,tollans,toidy,togas,tofurkey,toddling,toddies,toasties,toadstool,to've,tingles,timin,timey,timetables,tightest,thuggee,thrusting,thrombus,throes,thrifty,thornharts,thinnest,thicket,thetas,thesulac,tethered,testaburger,tersenadine,terrif,terdlington,tepui,temping,tector,taxidermy,tastebuds,tartlets,tartabull,tar'd,tantamount,tangy,tangles,tamer,tabula,tabletops,tabithia,szechwan,synthedyne,svenjolly,svengali,survivalists,surmise,surfboards,surefire,suprise,supremacists,suppositories,superstore,supercilious,suntac,sunburned,summercliff,sullied,sugared,suckle,subtleties,substantiated,subsides,subliminal,subhuman,strowman,stroked,stroganoff,streetlight,straying,strainer,straighter,straightener,stoplight,stirrups,stewing,stereotyping,stepmommy,stephano,stashing,starshine,stairwells,squatsie,squandering,squalid,squabbling,squab,sprinkling,spreader,spongy,spokesmen,splintered,spittle,spitter,spiced,spews,spendin,spect,spearchucker,spatulas,southtown,soused,soshi,sorter,sorrowful,sooth,some'in,soliloquy,soiree,sodomized,sobriki,soaping,snows,snowcone,snitching,snitched,sneering,snausages,snaking,smoothed,smoochies,smarten,smallish,slushy,slurring,sluman,slithers,slippin,sleuthing,sleeveless,skinless,skillfully,sketchbook,skagnetti,sista,sinning,singularly,sinewy,silverlake,siguto,signorina,sieve,sidearms,shying,shunning,shtud,shrieks,shorting,shortbread,shopkeepers,shmancy,shizzit,shitheads,shitfaced,shipmates,shiftless,shelving,shedlow,shavings,shatters,sharifa,shampoos,shallots,shafter,sha'nauc,sextant,serviceable,sepsis,senores,sendin,semis,semanski,selflessly,seinfelds,seers,seeps,seductress,secaucus,sealant,scuttling,scusa,scrunched,scissorhands,schreber,schmancy,scamps,scalloped,savoir,savagery,sarong,sarnia,santangel,samool,sallow,salino,safecracker,sadism,sacrilegious,sabrini,sabath,s'aright,ruttheimer,rudest,rubbery,rousting,rotarian,roslin,roomed,romari,romanica,rolltop,rolfski,rockettes,roared,ringleader,riffing,ribcage,rewired,retrial,reting,resuscitated,restock,resale,reprogrammed,replicant,repentant,repellant,repays,repainting,renegotiating,rendez,remem,relived,relinquishes,relearn,relaxant,rekindling,rehydrate,refueled,refreshingly,refilling,reexamine,reeseman,redness,redeemable,redcoats,rectangles,recoup,reciprocated,reassessing,realy,realer,reachin,re'kali,rawlston,ravages,rappaports,ramoray,ramming,raindrops,rahesh,radials,racists,rabartu,quiches,quench,quarreling,quaintly,quadrants,putumayo,put'em,purifier,pureed,punitis,pullout,pukin,pudgy,puddings,puckering,pterodactyl,psychodrama,psats,protestations,protectee,prosaic,propositioned,proclivity,probed,printouts,prevision,pressers,preset,preposition,preempt,preemie,preconceptions,prancan,powerpuff,potties,potpie,poseur,porthole,poops,pooping,pomade,polyps,polymerized,politeness,polisher,polack,pocketknife,poatia,plebeian,playgroup,platonically,platitude,plastering,plasmapheresis,plaids,placemats,pizzazz,pintauro,pinstripes,pinpoints,pinkner,pincer,pimento,pileup,pilates,pigmen,pieeee,phrased,photocopies,phoebes,philistines,philanderer,pheromone,phasers,pfeffernuesse,pervs,perspire,personify,perservere,perplexed,perpetrating,perkiness,perjurer,periodontist,perfunctory,perdido,percodan,pentameter,pentacle,pensive,pensione,pennybaker,pennbrooke,penhall,pengin,penetti,penetrates,pegnoir,peeve,peephole,pectorals,peckin,peaky,peaksville,paxcow,paused,patted,parkishoff,parkers,pardoning,paraplegic,paraphrasing,paperers,papered,pangs,paneling,palooza,palmed,palmdale,palatable,pacify,pacified,owwwww,oversexed,overrides,overpaying,overdrawn,overcompensate,overcomes,overcharged,outmaneuver,outfoxed,oughtn't,ostentatious,oshun,orthopedist,or'derves,ophthalmologist,operagirl,oozes,oooooooh,onesie,omnis,omelets,oktoberfest,okeydoke,ofthe,ofher,obstetrical,obeys,obeah,o'henry,nyquil,nyanyanyanyah,nuttin,nutsy,nutball,nurhachi,numbskull,nullifies,nullification,nucking,nubbin,nourished,nonspecific,noing,noinch,nohoho,nobler,nitwits,newsprint,newspaperman,newscaster,neuropathy,netherworld,neediest,navasky,narcissists,napped,nafta,mache,mykonos,mutilating,mutherfucker,mutha,mutates,mutate,musn't,murchy,multitasking,mujeeb,mudslinging,muckraking,mousetrap,mourns,mournful,motherf,mostro,morphing,morphate,moralistic,moochy,mooching,monotonous,monopolize,monocle,molehill,moland,mofet,mockup,mobilizing,mmmmmmm,mitzvahs,mistreating,misstep,misjudge,misinformation,misdirected,miscarriages,miniskirt,mindwarped,minced,milquetoast,miguelito,mightily,midstream,midriff,mideast,microbe,methuselah,mesdames,mescal,men'll,memma,megaton,megara,megalomaniac,meeee,medulla,medivac,meaninglessness,mcnuggets,mccarthyism,maypole,may've,mauve,mateys,marshack,markles,marketable,mansiere,manservant,manse,manhandling,mallomars,malcontent,malaise,majesties,mainsail,mailmen,mahandra,magnolias,magnified,magev,maelstrom,machu,macado,m'boy,m'appelle,lustrous,lureen,lunges,lumped,lumberyard,lulled,luego,lucks,lubricated,loveseat,loused,lounger,loski,lorre,loora,looong,loonies,loincloth,lofts,lodgers,lobbing,loaner,livered,liqueur,ligourin,lifesaving,lifeguards,lifeblood,liaisons,let'em,lesbianism,lence,lemonlyman,legitimize,leadin,lazars,lazarro,lawyering,laugher,laudanum,latrines,lations,laters,lapels,lakefront,lahit,lafortunata,lachrymose,l'italien,kwaini,kruczynski,kramerica,kowtow,kovinsky,korsekov,kopek,knowakowski,knievel,knacks,kiowas,killington,kickball,keyworth,keymaster,kevie,keveral,kenyons,keggers,keepsakes,kechner,keaty,kavorka,karajan,kamerev,kaggs,jujyfruit,jostled,jonestown,jokey,joists,jocko,jimmied,jiggled,jests,jenzen,jenko,jellyman,jedediah,jealitosis,jaunty,jarmel,jankle,jagoff,jagielski,jackrabbits,jabbing,jabberjaw,izzat,irresponsibly,irrepressible,irregularity,irredeemable,inuvik,intuitions,intubated,intimates,interminable,interloper,intercostal,instyle,instigate,instantaneously,ining,ingrown,ingesting,infusing,infringe,infinitum,infact,inequities,indubitably,indisputable,indescribably,indentation,indefinable,incontrovertible,inconsequential,incompletes,incoherently,inclement,incidentals,inarticulate,inadequacies,imprudent,improprieties,imprison,imprinted,impressively,impostors,importante,imperious,impale,immodest,immobile,imbedded,imbecilic,illegals,idn't,hysteric,hypotenuse,hygienic,hyeah,hushpuppies,hunhh,humpback,humored,hummed,humiliates,humidifier,huggy,huggers,huckster,hotbed,hosing,hosers,horsehair,homebody,homebake,holing,holies,hoisting,hogwallop,hocks,hobbits,hoaxes,hmmmmm,hisses,hippest,hillbillies,hilarity,heurh,herniated,hermaphrodite,hennifer,hemlines,hemline,hemery,helplessness,helmsley,hellhound,heheheheh,heeey,hedda,heartbeats,heaped,healers,headstart,headsets,headlong,hawkland,havta,haulin,harvey'll,hanta,hansom,hangnail,handstand,handrail,handoff,hallucinogen,hallor,halitosis,haberdashery,gypped,guy'll,gumbel,guerillas,guava,guardrail,grunther,grunick,groppi,groomer,grodin,gripes,grinds,grifters,gretch,greevey,greasing,graveyards,grandkid,grainy,gouging,gooney,googly,goldmuff,goldenrod,goingo,godly,gobbledygook,gobbledegook,glues,gloriously,glengarry,glassware,glamor,gimmicks,giggly,giambetti,ghoulish,ghettos,ghali,gether,geriatrics,gerbils,geosynchronous,georgio,gente,gendarme,gelbman,gazillionth,gayest,gauging,gastro,gaslight,gasbag,garters,garish,garas,gantu,gangy,gangly,gangland,galling,gadda,furrowed,funnies,funkytown,fugimotto,fudging,fuckeen,frustrates,froufrou,froot,fromberge,frizzies,fritters,frightfully,friendliest,freeloading,freelancing,freakazoid,fraternization,framers,fornication,fornicating,forethought,footstool,foisting,focussing,focking,flurries,fluffed,flintstones,fledermaus,flayed,flawlessly,flatters,flashbang,flapped,fishies,firmer,fireproof,firebug,fingerpainting,finessed,findin,financials,finality,fillets,fiercest,fiefdom,fibbing,fervor,fentanyl,fenelon,fedorchuk,feckless,feathering,faucets,farewells,fantasyland,fanaticism,faltered,faggy,faberge,extorting,extorted,exterminating,exhumation,exhilaration,exhausts,exfoliate,excels,exasperating,exacting,everybody'd,evasions,espressos,esmail,errrr,erratically,eroding,ernswiler,epcot,enthralled,ensenada,enriching,enrage,enhancer,endear,encrusted,encino,empathic,embezzle,emanates,electricians,eking,egomaniacal,egging,effacing,ectoplasm,eavesdropped,dummkopf,dugray,duchaisne,drunkard,drudge,droop,droids,drips,dripped,dribbles,drazens,downy,downsize,downpour,dosages,doppelganger,dopes,doohicky,dontcha,doneghy,divining,divest,diuretics,diuretic,distrustful,disrupts,dismemberment,dismember,disinfect,disillusionment,disheartening,discourteous,discotheque,discolored,dirtiest,diphtheria,dinks,dimpled,didya,dickwad,diatribes,diathesis,diabetics,deviants,detonates,detests,detestable,detaining,despondent,desecration,derision,derailing,deputized,depressors,dependant,dentures,denominators,demur,demonology,delts,dellarte,delacour,deflated,defib,defaced,decorators,deaqon,davola,datin,darwinian,darklighters,dandelions,dampened,damaskinos,dalrimple,d'peshu,d'hoffryn,d'astier,cynics,cutesy,cutaway,curmudgeon,curdle,culpability,cuisinart,cuffing,crypts,cryptid,crunched,crumblers,crudely,crosscheck,croon,crissake,crevasse,creswood,creepo,creases,creased,creaky,cranks,crabgrass,coveralls,couple'a,coughs,coslaw,corporeal,cornucopia,cornering,corks,cordoned,coolly,coolin,cookbooks,contrite,contented,constrictor,confound,confit,confiscating,condoned,conditioners,concussions,comprendo,comers,combustible,combusted,collingswood,coldness,coitus,codicil,coasting,clydesdale,cluttering,clunker,clunk,clumsiness,clotted,clothesline,clinches,clincher,cleverness,clench,clein,cleanses,claymores,clammed,chugging,chronically,christsakes,choque,chompers,chiseling,chirpy,chirp,chinks,chingachgook,chickenpox,chickadee,chewin,chessboard,chargin,chanteuse,chandeliers,chamdo,chagrined,chaff,certs,certainties,cerreno,cerebrum,censured,cemetary,caterwauling,cataclysmic,casitas,cased,carvel,carting,carrear,carolling,carolers,carnie,cardiogram,carbuncle,capulets,canines,candaules,canape,caldecott,calamitous,cadillacs,cachet,cabeza,cabdriver,buzzards,butai,businesswomen,bungled,bumpkins,bummers,bulldoze,buffybot,bubut,bubbies,brrrrr,brownout,brouhaha,bronzing,bronchial,broiler,briskly,briefcases,bricked,breezing,breeher,breakable,breadstick,bravenet,braved,brandies,brainwaves,brainiest,braggart,bradlee,boys're,boys'll,boys'd,boutonniere,bossed,bosomy,borans,boosts,bookshelves,bookends,boneless,bombarding,bollo,boinked,boink,bluest,bluebells,bloodshot,blockhead,blockbusters,blithely,blather,blankly,bladders,blackbeard,bitte,bippy,biogenetics,bilge,bigglesworth,bicuspids,beususe,betaseron,besmirch,bernece,bereavement,bentonville,benchley,benching,bembe,bellyaching,bellhops,belie,beleaguered,behrle,beginnin,begining,beenie,beefs,beechwood,becau,beaverhausen,beakers,bazillion,baudouin,barrytown,barringtons,barneys,barbs,barbers,barbatus,bankrupted,bailiffs,backslide,baby'd,baaad,b'fore,awwwk,aways,awakes,automatics,authenticate,aught,aubyn,attired,attagirl,atrophied,asystole,astroturf,assertiveness,artichokes,arquillians,aright,archenemy,appraise,appeased,antin,anspaugh,anesthetics,anaphylactic,amscray,ambivalence,amalio,alriiight,alphabetized,alpena,alouette,allora,alliteration,allenwood,allegiances,algerians,alcerro,alastor,ahaha,agitators,aforethought,advertises,admonition,adirondacks,adenoids,acupuncturist,acula,actuarial,activators,actionable,achingly,accusers,acclimated,acclimate,absurdly,absorbent,absolvo,absolutes,absences,abdomenizer,aaaaaaaaah,aaaaaaaaaa,a'right".split(","),male_names:"james,john,robert,michael,william,david,richard,charles,joseph,thomas,christopher,daniel,paul,mark,donald,george,kenneth,steven,edward,brian,ronald,anthony,kevin,jason,matthew,gary,timothy,jose,larry,jeffrey,frank,scott,eric,stephen,andrew,raymond,gregory,joshua,jerry,dennis,walter,patrick,peter,harold,douglas,henry,carl,arthur,ryan,roger,joe,juan,jack,albert,jonathan,justin,terry,gerald,keith,samuel,willie,ralph,lawrence,nicholas,roy,benjamin,bruce,brandon,adam,harry,fred,wayne,billy,steve,louis,jeremy,aaron,randy,eugene,carlos,russell,bobby,victor,ernest,phillip,todd,jesse,craig,alan,shawn,clarence,sean,philip,chris,johnny,earl,jimmy,antonio,danny,bryan,tony,luis,mike,stanley,leonard,nathan,dale,manuel,rodney,curtis,norman,marvin,vincent,glenn,jeffery,travis,jeff,chad,jacob,melvin,alfred,kyle,francis,bradley,jesus,herbert,frederick,ray,joel,edwin,don,eddie,ricky,troy,randall,barry,bernard,mario,leroy,francisco,marcus,micheal,theodore,clifford,miguel,oscar,jay,jim,tom,calvin,alex,jon,ronnie,bill,lloyd,tommy,leon,derek,darrell,jerome,floyd,leo,alvin,tim,wesley,dean,greg,jorge,dustin,pedro,derrick,dan,zachary,corey,herman,maurice,vernon,roberto,clyde,glen,hector,shane,ricardo,sam,rick,lester,brent,ramon,tyler,gilbert,gene,marc,reginald,ruben,brett,nathaniel,rafael,edgar,milton,raul,ben,cecil,duane,andre,elmer,brad,gabriel,ron,roland,jared,adrian,karl,cory,claude,erik,darryl,neil,christian,javier,fernando,clinton,ted,mathew,tyrone,darren,lonnie,lance,cody,julio,kurt,allan,clayton,hugh,max,dwayne,dwight,armando,felix,jimmie,everett,ian,ken,bob,jaime,casey,alfredo,alberto,dave,ivan,johnnie,sidney,byron,julian,isaac,clifton,willard,daryl,virgil,andy,salvador,kirk,sergio,seth,kent,terrance,rene,eduardo,terrence,enrique,freddie,stuart,fredrick,arturo,alejandro,joey,nick,luther,wendell,jeremiah,evan,julius,donnie,otis,trevor,luke,homer,gerard,doug,kenny,hubert,angelo,shaun,lyle,matt,alfonso,orlando,rex,carlton,ernesto,pablo,lorenzo,omar,wilbur,blake,horace,roderick,kerry,abraham,rickey,ira,andres,cesar,johnathan,malcolm,rudolph,damon,kelvin,rudy,preston,alton,archie,marco,pete,randolph,garry,geoffrey,jonathon,felipe,bennie,gerardo,dominic,loren,delbert,colin,guillermo,earnest,benny,noel,rodolfo,myron,edmund,salvatore,cedric,lowell,gregg,sherman,devin,sylvester,roosevelt,israel,jermaine,forrest,wilbert,leland,simon,irving,owen,rufus,woodrow,sammy,kristopher,levi,marcos,gustavo,jake,lionel,marty,gilberto,clint,nicolas,laurence,ismael,orville,drew,ervin,dewey,wilfred,josh,hugo,ignacio,caleb,tomas,sheldon,erick,frankie,darrel,rogelio,terence,alonzo,elias,bert,elbert,ramiro,conrad,noah,grady,phil,cornelius,lamar,rolando,clay,percy,bradford,merle,darin,amos,terrell,moses,irvin,saul,roman,darnell,randal,tommie,timmy,darrin,brendan,toby,van,abel,dominick,emilio,elijah,cary,domingo,aubrey,emmett,marlon,emanuel,jerald,edmond,emil,dewayne,otto,teddy,reynaldo,bret,jess,trent,humberto,emmanuel,stephan,louie,vicente,lamont,garland,micah,efrain,heath,rodger,demetrius,ethan,eldon,rocky,pierre,eli,bryce,antoine,robbie,kendall,royce,sterling,grover,elton,cleveland,dylan,chuck,damian,reuben,stan,leonardo,russel,erwin,benito,hans,monte,blaine,ernie,curt,quentin,agustin,jamal,devon,adolfo,tyson,wilfredo,bart,jarrod,vance,denis,damien,joaquin,harlan,desmond,elliot,darwin,gregorio,kermit,roscoe,esteban,anton,solomon,norbert,elvin,nolan,carey,rod,quinton,hal,brain,rob,elwood,kendrick,darius,moises,marlin,fidel,thaddeus,cliff,marcel,ali,raphael,bryon,armand,alvaro,jeffry,dane,joesph,thurman,ned,sammie,rusty,michel,monty,rory,fabian,reggie,kris,isaiah,gus,avery,loyd,diego,adolph,millard,rocco,gonzalo,derick,rodrigo,gerry,rigoberto,alphonso,rickie,noe,vern,elvis,bernardo,mauricio,hiram,donovan,basil,nickolas,scot,vince,quincy,eddy,sebastian,federico,ulysses,heriberto,donnell,denny,gavin,emery,romeo,jayson,dion,dante,clement,coy,odell,jarvis,bruno,issac,dudley,sanford,colby,carmelo,nestor,hollis,stefan,donny,linwood,beau,weldon,galen,isidro,truman,delmar,johnathon,silas,frederic,irwin,merrill,charley,marcelino,carlo,trenton,kurtis,aurelio,winfred,vito,collin,denver,leonel,emory,pasquale,mohammad,mariano,danial,landon,dirk,branden,adan,numbers,clair,buford,bernie,wilmer,emerson,zachery,jacques,errol,josue,edwardo,wilford,theron,raymundo,daren,tristan,robby,lincoln,jame,genaro,octavio,cornell,hung,arron,antony,herschel,alva,giovanni,garth,cyrus,cyril,ronny,stevie,lon,kennith,carmine,augustine,erich,chadwick,wilburn,russ,myles,jonas,mitchel,mervin,zane,jamel,lazaro,alphonse,randell,johnie,jarrett,ariel,abdul,dusty,luciano,seymour,scottie,eugenio,mohammed,arnulfo,lucien,ferdinand,thad,ezra,aldo,rubin,mitch,earle,abe,marquis,lanny,kareem,jamar,boris,isiah,emile,elmo,aron,leopoldo,everette,josef,eloy,dorian,rodrick,reinaldo,lucio,jerrod,weston,hershel,lemuel,lavern,burt,jules,gil,eliseo,ahmad,nigel,efren,antwan,alden,margarito,refugio,dino,osvaldo,les,deandre,normand,kieth,ivory,trey,norberto,napoleon,jerold,fritz,rosendo,milford,sang,deon,christoper,alfonzo,lyman,josiah,brant,wilton,rico,jamaal,dewitt,brenton,yong,olin,faustino,claudio,judson,gino,edgardo,alec,jarred,donn,trinidad,tad,porfirio,odis,lenard,chauncey,tod,mel,marcelo,kory,augustus,keven,hilario,bud,sal,orval,mauro,dannie,zachariah,olen,anibal,milo,jed,thanh,amado,lenny,tory,richie,horacio,brice,mohamed,delmer,dario,mac,jonah,jerrold,robt,hank,sung,rupert,rolland,kenton,damion,chi,antone,waldo,fredric,bradly,kip,burl,tyree,jefferey,ahmed,willy,stanford,oren,moshe,mikel,enoch,brendon,quintin,jamison,florencio,darrick,tobias,minh,hassan,giuseppe,demarcus,cletus,tyrell,lyndon,keenan,werner,theo,geraldo,columbus,chet,bertram,markus,huey,hilton,dwain,donte,tyron,omer,isaias,hipolito,fermin,chung,adalberto,jamey,teodoro,mckinley,maximo,raleigh,lawerence,abram,rashad,emmitt,daron,chong,samual,otha,miquel,eusebio,dong,domenic,darron,wilber,renato,hoyt,haywood,ezekiel,chas,florentino,elroy,clemente,arden,neville,edison,deshawn,carrol,shayne,nathanial,jordon,danilo,claud,sherwood,raymon,rayford,cristobal,ambrose,titus,hyman,felton,ezequiel,erasmo,lonny,milan,lino,jarod,herb,andreas,rhett,jude,douglass,cordell,oswaldo,ellsworth,virgilio,toney,nathanael,benedict,mose,hong,isreal,garret,fausto,arlen,zack,modesto,francesco,manual,gaylord,gaston,filiberto,deangelo,michale,granville,malik,zackary,tuan,nicky,cristopher,antione,malcom,korey,jospeh,colton,waylon,hosea,shad,santo,rudolf,rolf,renaldo,marcellus,lucius,kristofer,harland,arnoldo,rueben,leandro,kraig,jerrell,jeromy,hobert,cedrick,arlie,winford,wally,luigi,keneth,jacinto,graig,franklyn,edmundo,leif,jeramy,willian,vincenzo,shon,michal,lynwood,jere,elden,darell,broderick,alonso".split(",")},e.exports=i},744:function(e,a){var i;i={estimate_attack_times:function(e){var a,i,r,n;for(r in a={},i={online_throttling_100_per_hour:e/(100/3600),online_no_throttling_10_per_second:e/10,offline_slow_hashing_1e4_per_second:e/1e4,offline_fast_hashing_1e10_per_second:e/1e10})n=i[r],a[r]=this.display_time(n);return{crack_times_seconds:i,crack_times_display:a,score:this.guesses_to_score(e)}},guesses_to_score:function(e){return 5,e<1005?0:e<1e6+5?1:e<1e8+5?2:e<1e10+5?3:4},display_time:function(e){var a,i,r,n,s;return 60,3600,86400,2678400,s=32140800,321408e4,r=(n=e<1?[null,"less than a second"]:e<60?[a=Math.round(e),a+" second"]:e<3600?[a=Math.round(e/60),a+" minute"]:e<86400?[a=Math.round(e/3600),a+" hour"]:e<2678400?[a=Math.round(e/86400),a+" day"]:e2)return{warning:"",suggestions:[]};for(o=a[0],n=0,s=(l=a.slice(1)).length;no.token.length&&(o=t);return i="Add another word or two. Uncommon words are better.",null!=(r=this.get_match_feedback(o,1===a.length))?(r.suggestions.unshift(i),null==r.warning&&(r.warning="")):r={warning:"",suggestions:[i]},r},get_match_feedback:function(e,a){switch(e.pattern){case"dictionary":return this.get_dictionary_match_feedback(e,a);case"spatial":return e.graph.toUpperCase(),{warning:1===e.turns?"Straight rows of keys are easy to guess":"Short keyboard patterns are easy to guess",suggestions:["Use a longer keyboard pattern with more turns"]};case"repeat":return{warning:1===e.base_token.length?'Repeats like "aaa" are easy to guess':'Repeats like "abcabcabc" are only slightly harder to guess than "abc"',suggestions:["Avoid repeated words and characters"]};case"sequence":return{warning:"Sequences like abc or 6543 are easy to guess",suggestions:["Avoid sequences"]};case"regex":if("recent_year"===e.regex_name)return{warning:"Recent years are easy to guess",suggestions:["Avoid recent years","Avoid years that are associated with you"]};break;case"date":return{warning:"Dates are often easy to guess",suggestions:["Avoid dates and years that are associated with you"]}}},get_dictionary_match_feedback:function(e,a){var i,r,s,o;return s="passwords"===e.dictionary_name?!a||e.l33t||e.reversed?e.guesses_log10<=4?"This is similar to a commonly used password":void 0:e.rank<=10?"This is a top-10 common password":e.rank<=100?"This is a top-100 common password":"This is a very common password":"english_wikipedia"===e.dictionary_name?a?"A word by itself is easy to guess":void 0:"surnames"===(i=e.dictionary_name)||"male_names"===i||"female_names"===i?a?"Names and surnames by themselves are easy to guess":"Common names and surnames are easy to guess":"",r=[],(o=e.token).match(n.START_UPPER)?r.push("Capitalization doesn't help very much"):o.match(n.ALL_UPPER)&&o.toLowerCase()!==o&&r.push("All-uppercase is almost as easy to guess as all-lowercase"),e.reversed&&e.token.length>=4&&r.push("Reversed words aren't much harder to guess"),e.l33t&&r.push("Predictable substitutions like '@' instead of 'a' don't help very much"),{warning:s,suggestions:r}}},e.exports=r}}]); +//# sourceMappingURL=1.js.map \ No newline at end of file diff --git a/riot/bundles/c2932262ed6106cd4535/1.js.map b/riot/bundles/c2932262ed6106cd4535/1.js.map new file mode 100644 index 0000000..4e38335 --- /dev/null +++ b/riot/bundles/c2932262ed6106cd4535/1.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["node_modules/zxcvbn/lib/scoring.js","node_modules/matrix-react-sdk/lib/async-components/views/dialogs/keybackup/CreateKeyBackupDialog.js","node_modules/file-saver/FileSaver.js","node_modules/zxcvbn/lib/adjacency_graphs.js","(webpack)/buildin/amd-define.js","node_modules/matrix-react-sdk/lib/utils/PasswordScorer.js","node_modules/zxcvbn/lib/main.js","node_modules/zxcvbn/lib/matching.js","node_modules/zxcvbn/lib/frequency_lists.js","node_modules/zxcvbn/lib/time_estimates.js","node_modules/zxcvbn/lib/feedback.js"],"names":["adjacency_graphs","calc_average_degree","k","scoring","__webpack_require__","graph","average","key","n","neighbors","len","o","results","length","push","nCk","d","r","ref","log10","Math","log","log2","factorial","f","i","most_guessable_match_sequence","password","matches","_exclude_additive","bruteforce_update","guesses","l","len1","len2","m","make_bruteforce_match","matches_by_j","optimal","optimal_l","optimal_match_sequence","q","ref1","u","unwind","update","w","j","sort","m1","m2","pi","g","_this","competing_g","competing_l","estimate_guesses","pow","this","last_m","results1","parseInt","pattern","token","slice","candidate_g","candidate_l","Infinity","unshift","guesses_log10","sequence","match","min_guesses","bruteforce","bruteforce_guesses","dictionary","dictionary_guesses","spatial","spatial_guesses","repeat","repeat_guesses","sequence_guesses","regex","regex_guesses","date","date_guesses","call","max","Number","POSITIVE_INFINITY","MAX_VALUE","MIN_SUBMATCH_GUESSES_SINGLE_CHAR","MIN_SUBMATCH_GUESSES_MULTI_CHAR","base_guesses","repeat_count","first_chr","charAt","ascending","MIN_YEAR_SPACE","REFERENCE_YEAR","Date","getFullYear","char_class_bases","year_space","alpha_lower","alpha_upper","alpha","alphanumeric","digits","symbols","regex_name","abs","regex_match","year","separator","KEYBOARD_AVERAGE_DEGREE","qwerty","KEYPAD_AVERAGE_DEGREE","keypad","KEYBOARD_STARTING_POSITIONS","KEYPAD_STARTING_POSITIONS","L","S","U","ref2","ref3","s","shifted_variations","t","turns","min","shifted_count","reversed_variations","rank","uppercase_variations","l33t_variations","reversed","START_UPPER","END_UPPER","ALL_UPPER","ALL_LOWER","chr","variations","word","toLowerCase","split","chrs","possibilities","subbed","unsubbed","l33t","sub","module","exports","Object","defineProperty","value","_regenerator2","_interopRequireDefault","_bluebird","_react2","_index2","_MatrixClientPeg2","_PasswordScorer","_fileSaver2","_languageHandler","obj","__esModule","default","PHASE_DONE","createClass","displayName","getInitialState","phase","passPhrase","passPhraseConfirm","copied","downloaded","zxcvbnResult","setPassPhrase","componentWillMount","_recoveryKeyNode","_keyBackupInfo","_collectRecoveryKeyNode","_onCopyClick","target","range","document","createRange","selectNodeContents","selection","window","getSelection","removeAllRanges","addRange","selectText","execCommand","setState","_onDownloadClick","blob","Blob","recovery_key","type","saveAs","_createBackup","_ref","coroutine","mark","_callee","info","wrap","_context","prev","next","error","resolve","get","createKeyBackupVersion","sent","backupAllGroupSessions","version","t0","console","deleteKeyBackupVersion","stop","apply","arguments","_onCancel","props","onFinished","_onDone","_onOptOutClick","_onSetUpClick","_onSkipPassPhraseClick","_ref2","_callee2","_context2","prepareKeyBackupVersion","_onPassPhraseNextClick","_onPassPhraseKeyPress","e","_passPhraseIsValid","_onPassPhraseConfirmNextClick","_ref3","_callee3","_context3","state","_onPassPhraseConfirmKeyPress","_onSetAgainClick","_onKeepItSafeGotItClick","_onPassPhraseChange","scorePassword","_onPassPhraseConfirmChange","score","_renderPhasePassPhrase","DialogButtons","getComponent","AccessibleButton","strengthMeter","helpText","_t","suggestions","feedback","createElement","suggestionBlock","warning","className","onChange","onKeyPress","placeholder","primaryButton","onPrimaryButtonClick","hasCancel","disabled","button","element","onClick","_renderPhasePassPhraseConfirm","passPhraseMatch","matchText","autoFocus","_renderPhaseShowKey","bodyText","_renderPhaseKeepItSafe","introText","b","_renderBusyPhase","text","Spinner","_renderPhaseDone","_renderPhaseOptOutConfirm","_titleForPhase","render","BaseDialog","content","onCancel","_td","title","includes","__WEBPACK_AMD_DEFINE_RESULT__","view","navigator","test","userAgent","get_URL","URL","webkitURL","save_link","createElementNS","can_use_save_link","is_safari","HTMLElement","safari","is_chrome_ios","throw_outside","ex","setImmediate","setTimeout","revoke","file","revokeObjectURL","remove","auto_bom","String","fromCharCode","FileSaver","name","no_auto_bom","object_url","filesaver","force","dispatch_all","event_types","event","concat","listener","dispatch","readyState","INIT","createObjectURL","href","download","node","MouseEvent","dispatchEvent","click","DONE","FileReader","reader","onloadend","url","result","replace","open","location","undefined","readAsDataURL","fs_error","FS_proto","prototype","msSaveOrOpenBlob","abort","WRITING","onwritestart","onprogress","onwrite","onabort","onerror","onwriteend","self","!","\"","#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","M","N","O","P","Q","R","T","V","W","X","Y","Z","[","\\","]","^","_","`","a","c","h","p","v","x","y","z","{","|","}","~","dvorak","mac_keypad","Error","userInputs","ZXCVBN_USER_INPUTS","getUserIdLocalpart","_zxcvbn2","resultNoSpaces","matching","time","time_estimates","zxcvbn","getTime","user_inputs","arg","attack_times","prop","sanitized_inputs","start","val","toString","set_user_input_dictionary","omnimatch","calc_time","estimate_attack_times","get_feedback","DATE_SPLITS","GRAPHS","L33T_TABLE","RANKED_DICTIONARIES","REGEXEN","build_ranked_dict","frequency_lists","lst","ordered_list","recent_year","empty","extend","lst2","translate","string","chr_map","join","mod","sorted","matcher","matchers","dictionary_match","reverse_dictionary_match","l33t_match","spatial_match","repeat_match","sequence_match","date_match","_ranked_dictionaries","dictionary_name","password_lower","ranked_dict","matched_word","reversed_password","reverse","relevant_l33t_subtable","table","letter","password_chars","relevant_subs","subs","subtable","enumerate_l33t_subs","dedup","helper","keys","l33t_chr","sub_dict","sub_dicts","assoc","deduped","label","members","dup_l33t_index","first_key","next_subs","rest_keys","sub_alternative","sub_extension","splice","_l33t_table","match_sub","subbed_chr","subbed_password","indexOf","sub_display","filter","_graphs","graph_name","spatial_match_helper","SHIFTED_RX","adj","adjacents","cur_char","cur_direction","found","found_direction","last_direction","exec","base_analysis","base_matches","base_token","greedy","greedy_match","lastIndex","lazy","lazy_anchored","lazy_match","index","MAX_DELTA","delta","last_delta","sequence_name","sequence_space","charCodeAt","_regexen","rx_match","best_candidate","candidate","candidates","distance","dmy","maybe_date_no_separator","maybe_date_with_separator","metric","min_distance","ref4","ref5","ref6","ref7","ref8","ref9","map_ints_to_dmy","month","day","is_submatch","len3","other_match","ints","dm","int","over_12","over_31","possible_year_splits","rest","under_1","map_ints_to_dm","two_to_four_digit_year","passwords","english_wikipedia","female_names","surnames","us_tv_and_film","male_names","crack_times_display","crack_times_seconds","scenario","seconds","online_throttling_100_per_hour","online_no_throttling_10_per_second","offline_slow_hashing_1e4_per_second","offline_fast_hashing_1e10_per_second","display_time","guesses_to_score","base","display_num","display_str","minute","hour","round","default_feedback","extra_feedback","longest_match","get_match_feedback","is_sole_match","get_dictionary_match_feedback","toUpperCase"],"mappings":"6EACA,IAAAA,EAAAC,EAAAC,EAAAC,EAEAH,EAAmBI,EAAQ,KAE3BH,EAAA,SAAAI,GACA,IAAAC,EAAAJ,EAAAK,EAAAC,EAAAC,EAEA,IAAAF,KADAD,EAAA,EACAD,EACAI,EAAAJ,EAAAE,GACAD,GAAA,WACA,IAAAI,EAAAC,EAAAC,EAEA,IADAA,KACAD,EAAA,EAAAD,EAAAD,EAAAI,OAAyCF,EAAAD,EAASC,KAClDH,EAAAC,EAAAE,KAEAC,EAAAE,KAAAN,GAGA,OAAAI,EATA,GAUKC,OAWL,OATAP,GAAA,WACA,IAAAM,EAEA,IAAAV,KADAU,KACAP,EACAA,EAAAH,GACAU,EAAAE,KAAAZ,GAEA,OAAAU,EAPA,GAQGC,QAYHV,GACAY,IAAA,SAAAP,EAAAN,GACA,IAAAc,EAAAL,EAAAM,EAAAC,EACA,GAAAhB,EAAAM,EACA,SAEA,OAAAN,EACA,SAGA,IADAe,EAAA,EACAD,EAAAL,EAAA,EAAAO,EAAAhB,EAA4B,GAAAgB,EAAAP,GAAAO,EAAAP,GAAAO,EAAgCF,EAAA,GAAAE,IAAAP,MAC5DM,GAAAT,EACAS,GAAAD,EACAR,GAAA,EAEA,OAAAS,GAEAE,MAAA,SAAAX,GACA,OAAAY,KAAAC,IAAAb,GAAAY,KAAAC,IAAA,KAEAC,KAAA,SAAAd,GACA,OAAAY,KAAAC,IAAAb,GAAAY,KAAAC,IAAA,IAEAE,UAAA,SAAAf,GACA,IAAAgB,EAAAC,EAAAd,EAAAO,EACA,GAAAV,EAAA,EACA,SAGA,IADAgB,EAAA,EACAC,EAAAd,EAAA,EAAAO,EAAAV,EAA4B,GAAAU,EAAAP,GAAAO,EAAAP,GAAAO,EAAgCO,EAAA,GAAAP,IAAAP,MAC5Da,GAAAC,EAEA,OAAAD,GAEAE,8BAAA,SAAAC,EAAAC,EAAAC,GACA,IAAAC,EAAAC,EAAA7B,EAAA8B,EAAAtB,EAAAuB,EAAAC,EAAAC,EAAAC,EAAAC,EAAA7B,EAAAG,EAAA2B,EAAAC,EAAAC,EAAAC,EAAAvB,EAAAwB,EAAAC,EAAAC,EAAAC,EAAAC,EAaA,IAZA,MAAAjB,IACAA,GAAA,GAEArB,EAAAmB,EAAAd,OACAwB,EAAA,WACA,IAAA1B,EAAAO,EAAAN,EAEA,IADAA,KACAD,EAAA,EAAAO,EAAAV,EAA8B,GAAAU,EAAAP,EAAAO,EAAAP,EAAAO,EAA8B,GAAAA,IAAAP,MAC5DC,EAAAE,SAEA,OAAAF,EANA,GAQAD,EAAA,EAAAD,EAAAkB,EAAAf,OAAqCF,EAAAD,EAASC,IAE9C0B,GADAF,EAAAP,EAAAjB,IACAoC,GAAAjC,KAAAqB,GAEA,IAAAM,EAAA,EAAAR,EAAAI,EAAAxB,OAA2C4B,EAAAR,EAAUQ,IACrDJ,EAAAI,GACAO,KAAA,SAAAC,EAAAC,GACA,OAAAD,EAAAxB,EAAAyB,EAAAzB,IAoHA,IAjHAa,GACAH,EAAA,WACA,IAAAjB,EAAAN,EAAA+B,EAEA,IADA/B,KACA+B,EAAA,EAAAzB,EAAAV,EAAgC,GAAAU,EAAAyB,EAAAzB,EAAAyB,EAAAzB,EAA8B,GAAAA,IAAAyB,MAC9D/B,EAAAE,SAEA,OAAAF,EANA,GAQAuC,GAAA,WACA,IAAAjC,EAAAN,EAAA+B,EAEA,IADA/B,KACA+B,EAAA,EAAAzB,EAAAV,EAAgC,GAAAU,EAAAyB,EAAAzB,EAAAyB,EAAAzB,EAA8B,GAAAA,IAAAyB,MAC9D/B,EAAAE,SAEA,OAAAF,EANA,GAQAwC,EAAA,WACA,IAAAlC,EAAAN,EAAA+B,EAEA,IADA/B,KACA+B,EAAA,EAAAzB,EAAAV,EAAgC,GAAAU,EAAAyB,EAAAzB,EAAAyB,EAAAzB,EAA8B,GAAAA,IAAAyB,MAC9D/B,EAAAE,SAEA,OAAAF,EANA,IASAiC,EAAA,SAAAQ,GACA,gBAAAlB,EAAAH,GACA,IAAAsB,EAAAC,EAAAH,EAAAlD,EAAAiD,EAAAjC,EAWA,IAAAqC,KAVArD,EAAAiC,EAAAY,EACAI,EAAAE,EAAAG,iBAAArB,EAAAR,GACAK,EAAA,IACAmB,GAAAb,EAAAa,GAAAhB,EAAAV,EAAA,GAAAO,EAAA,IAEAoB,EAAAC,EAAA9B,UAAAS,GAAAmB,EACAtB,IACAuB,GAAAhC,KAAAqC,IApGA,IAoGAzB,EAAA,IAEAd,EAAAoB,EAAAc,EAAAlD,GAGA,GADAoD,EAAApC,EAAAqC,KACAA,EAAAvB,IAGAsB,GAAAF,EACA,OAKA,OAFAd,EAAAc,EAAAlD,GAAA8B,GAAAoB,EACAd,EAAAH,EAAAjC,GAAA8B,GAAAG,EACAG,EAAAa,GAAAjD,GAAA8B,GAAAmB,GAxBA,CA0BKO,MACL5B,EACA,SAAA5B,GACA,IAAAuB,EAAAO,EAAA2B,EAAAzC,EAAAN,EAAA+B,EAIA,IAHAR,EAAAC,EAAA,EAAAlC,GACA2C,EAAAV,EAAA,GACAvB,KACAa,EAAAkB,EAAA,EAAAzB,EAAAhB,EAAgC,GAAAgB,EAAAyB,GAAAzB,EAAAyB,GAAAzB,EAAgCO,EAAA,GAAAP,IAAAyB,MAChER,EAAAC,EAAAX,EAAAvB,GACAU,EAAAE,KAAA,WACA,IAAA4B,EAAAkB,EAGA,IAAA5B,KADA4B,KADAlB,EAAAJ,EAAAH,EAAAV,EAAA,GAGAkC,EAAAjB,EAAAV,GACAA,EAAA6B,SAAA7B,GACA,eAAA2B,EAAAG,SAGAF,EAAA9C,KAAA+B,EAAAV,EAAAH,EAAA,IAEA,OAAA4B,EAZA,IAeA,OAAAhD,GAGAwB,EACA,SAAAX,EAAAsB,GACA,OACAe,QAAA,aACAC,MAAApC,EAAAqC,MAAAvC,GAAAsB,EAAA,QACAtB,IACAsB,MAIAH,EACA,SAAApC,GACA,IAAAyD,EAAAC,EAAAd,EAAAlD,EAAA8B,EAAAQ,EAAAtB,EAMA,IAAAgD,KALA1B,KACAtC,EAAAM,EAAA,EACAwB,OAAA,EACAoB,EAAAe,IACAjD,EAAAoB,EAAAc,EAAAlD,IAEA+D,EAAA/C,EAAAgD,IACAd,IACApB,EAAAkC,EACAd,EAAAa,GAGA,KAAA/D,GAAA,GACAiC,EAAAG,EAAAH,EAAAjC,GAAA8B,GACAQ,EAAA4B,QAAAjC,GACAjC,EAAAiC,EAAAV,EAAA,EACAO,IAEA,OAAAQ,GAGAtC,EAAAyC,EAAA,EAAAzB,EAAAV,EAA4B,GAAAU,EAAAyB,EAAAzB,EAAAyB,EAAAzB,EAA8BhB,EAAA,GAAAgB,IAAAyB,MAAA,CAE1D,IAAAG,EAAA,EAAAZ,GADAQ,EAAAL,EAAAnC,IACAW,OAAqCiC,EAAAZ,EAAUY,IAE/C,IADAX,EAAAO,EAAAI,IACArB,EAAA,EACA,IAAAO,KAAAM,EAAAH,IAAAV,EAAA,GACAO,EAAA6B,SAAA7B,GACAa,EAAAV,EAAAH,EAAA,QAGAa,EAAAV,EAAA,GAGAL,EAAA5B,GASA,OANAqC,GADAC,EAAAI,EAAApC,IACAK,OAEAkB,EADA,IAAAJ,EAAAd,OACA,EAEAyB,EAAAc,EAAA5C,EAAA,GAAA+B,IAGAZ,WACAI,UACAsC,cAAAX,KAAAvC,MAAAY,GACAuC,SAAA9B,IAGAgB,iBAAA,SAAAe,EAAA5C,GACA,IAAAI,EAAAyC,EACA,aAAAD,EAAAxC,QACAwC,EAAAxC,SAEAyC,EAAA,EACAD,EAAAR,MAAAlD,OAAAc,EAAAd,SACA2D,EAAA,IAAAD,EAAAR,MAAAlD,OAnNA,GAEA,IA4NAkB,GARA0C,WAAAf,KAAAgB,mBACAC,WAAAjB,KAAAkB,mBACAC,QAAAnB,KAAAoB,gBACAC,OAAArB,KAAAsB,eACAV,SAAAZ,KAAAuB,iBACAC,MAAAxB,KAAAyB,cACAC,KAAA1B,KAAA2B,cAEAd,EAAAT,SAAAwB,KAAA5B,KAAAa,GACAA,EAAAxC,QAAAX,KAAAmE,IAAAxD,EAAAyC,GACAD,EAAAF,cAAAX,KAAAvC,MAAAoD,EAAAxC,SACAwC,EAAAxC,UAEA2C,mBAAA,SAAAH,GACA,IAAAxC,EAAAyC,EAMA,OALAzC,EAAAX,KAAAqC,IAzOA,GAyOAc,EAAAR,MAAAlD,WACA2E,OAAAC,oBACA1D,EAAAyD,OAAAE,WAEAlB,EAAA,IAAAD,EAAAR,MAAAlD,OAAA8E,GAAAC,GACAxE,KAAAmE,IAAAxD,EAAAyC,IAEAQ,eAAA,SAAAT,GACA,OAAAA,EAAAsB,aAAAtB,EAAAuB,cAEAb,iBAAA,SAAAV,GACA,IAAAsB,EAAAE,EAcA,OAXAF,EADA,OADAE,EAAAxB,EAAAR,MAAAiC,OAAA,KACA,MAAAD,GAAA,MAAAA,GAAA,MAAAA,GAAA,MAAAA,GAAA,MAAAA,GAAA,MAAAA,EACA,EAEAA,EAAAxB,MAAA,MACA,GAEA,GAGAA,EAAA0B,YACAJ,GAAA,GAEAA,EAAAtB,EAAAR,MAAAlD,QAEAqF,eAAA,GACAC,gBAAA,IAAAC,MAAAC,cACAlB,cAAA,SAAAZ,GACA,IAAA+B,EAAAC,EASA,GARAD,GACAE,YAAA,GACAC,YAAA,GACAC,MAAA,GACAC,aAAA,GACAC,OAAA,GACAC,QAAA,IAEAtC,EAAAuC,cAAAR,EACA,OAAAlF,KAAAqC,IAAA6C,EAAA/B,EAAAuC,YAAAvC,EAAAR,MAAAlD,QAEA,OAAA0D,EAAAuC,YACA,kBAGA,OAFAP,EAAAnF,KAAA2F,IAAAlD,SAAAU,EAAAyC,YAAA,IAAAtD,KAAAyC,gBACAI,EAAAnF,KAAAmE,IAAAgB,EAAA7C,KAAAwC,kBAKAb,aAAA,SAAAd,GACA,IAAAxC,EAMA,OAJAA,EAAA,IADAX,KAAAmE,IAAAnE,KAAA2F,IAAAxC,EAAA0C,KAAAvD,KAAAyC,gBAAAzC,KAAAwC,gBAEA3B,EAAA2C,YACAnF,GAAA,GAEAA,GAEAoF,wBAAAlH,EAAAD,EAAAoH,QACAC,sBAAApH,EAAAD,EAAAsH,QACAC,4BAAA,WACA,IAAArG,EAAAN,EAGA,IAAAV,KADAU,KADAM,EAAAlB,EAAAoH,OAGAlG,EAAAhB,GACAU,EAAAE,KAAAZ,GAEA,OAAAU,EARA,GASGC,OACH2G,0BAAA,WACA,IAAAtG,EAAAN,EAGA,IAAAV,KADAU,KADAM,EAAAlB,EAAAsH,OAGApG,EAAAhB,GACAU,EAAAE,KAAAZ,GAEA,OAAAU,EARA,GASGC,OACHiE,gBAAA,SAAAP,GACA,IAAAkD,EAAAC,EAAAC,EAAA3G,EAAAe,EAAAN,EAAAsB,EAAApC,EAAA8B,EAAAvB,EAAAwB,EAAAkF,EAAAC,EAAAC,EAAAC,EAAAC,EAAArF,EAWA,IAVA,YAAAzB,EAAAqD,EAAAlE,QAAA,WAAAa,GACA4G,EAAApE,KAAA6D,4BACAvG,EAAA0C,KAAAyD,0BAEAW,EAAApE,KAAA8D,0BACAxG,EAAA0C,KAAA2D,uBAEAtF,EAAA,EACA0F,EAAAlD,EAAAR,MAAAlD,OACAmH,EAAAzD,EAAA0D,MACAxG,EAAAd,EAAA,EAAA+B,EAAA+E,EAA6B,GAAA/E,EAAA/B,GAAA+B,EAAA/B,GAAA+B,EAAmCjB,EAAA,GAAAiB,IAAA/B,MAEhE,IAAAoC,EAAAN,EAAA,EAAAmF,EADAxG,KAAA8G,IAAAF,EAAAvG,EAAA,GAC4C,GAAAmG,EAAAnF,GAAAmF,EAAAnF,GAAAmF,EAAmC7E,EAAA,GAAA6E,IAAAnF,MAC/EV,GAAA2B,KAAA3C,IAAAU,EAAA,EAAAsB,EAAA,GAAA+E,EAAA1G,KAAAqC,IAAAzC,EAAA+B,GAGA,GAAAwB,EAAA4D,cAGA,GAFAT,EAAAnD,EAAA4D,cACAR,EAAApD,EAAAR,MAAAlD,OAAA0D,EAAA4D,cACA,IAAAT,GAAA,IAAAC,EACA5F,GAAA,MACO,CAEP,IADAgG,EAAA,EACAtG,EAAAkB,EAAA,EAAAkF,EAAAzG,KAAA8G,IAAAR,EAAAC,GAA8C,GAAAE,EAAAlF,GAAAkF,EAAAlF,GAAAkF,EAAmCpG,EAAA,GAAAoG,IAAAlF,MACjFoF,GAAArE,KAAA3C,IAAA2G,EAAAC,EAAAlG,GAEAM,GAAAgG,EAGA,OAAAhG,GAEA6C,mBAAA,SAAAL,GACA,IAAA6D,EAKA,OAJA7D,EAAAsB,aAAAtB,EAAA8D,KACA9D,EAAA+D,qBAAA5E,KAAA4E,qBAAA/D,GACAA,EAAAgE,gBAAA7E,KAAA6E,gBAAAhE,GACA6D,EAAA7D,EAAAiE,SAAA,IACAjE,EAAAsB,aAAAtB,EAAA+D,qBAAA/D,EAAAgE,gBAAAH,GAEAK,YAAA,iBACAC,UAAA,iBACAC,UAAA,YACAC,UAAA,YACAN,qBAAA,SAAA/D,GACA,IAAAkD,EAAAE,EAAAkB,EAAApH,EAAAf,EAAAC,EAAA8B,EAAAvB,EAAAwB,EAAAwC,EAAA4D,EAAAC,EAEA,IADAA,EAAAxE,EAAAR,OACAQ,MAAAb,KAAAkF,YAAAG,EAAAC,gBAAAD,EACA,SAGA,IAAApI,EAAA,EAAAD,GADAQ,GAAAwC,KAAA+E,YAAA/E,KAAAgF,UAAAhF,KAAAiF,YACA9H,OAAiCF,EAAAD,EAASC,IAE1C,GADAuE,EAAAhE,EAAAP,GACAoI,EAAAxE,MAAAW,GACA,SA4BA,IAzBAyC,EAAA,WACA,IAAA1F,EAAAQ,EAAAC,EAAA9B,EAGA,IADAA,KACA6B,EAAA,EAAAR,GAFAS,EAAAqG,EAAAE,MAAA,KAEApI,OAAqC4B,EAAAR,EAAUQ,KAC/CoG,EAAAnG,EAAAD,IACA8B,MAAA,UACA3D,EAAAE,KAAA+H,GAGA,OAAAjI,EAVA,GAWKC,OACL4G,EAAA,WACA,IAAAxF,EAAAQ,EAAAC,EAAA9B,EAGA,IADAA,KACA6B,EAAA,EAAAR,GAFAS,EAAAqG,EAAAE,MAAA,KAEApI,OAAqC4B,EAAAR,EAAUQ,KAC/CoG,EAAAnG,EAAAD,IACA8B,MAAA,UACA3D,EAAAE,KAAA+H,GAGA,OAAAjI,EAVA,GAWKC,OACLiI,EAAA,EACArH,EAAAgB,EAAA,EAAAC,EAAAtB,KAAA8G,IAAAP,EAAAF,GAA0C,GAAA/E,EAAAD,GAAAC,EAAAD,GAAAC,EAAmCjB,EAAA,GAAAiB,IAAAD,MAC7EqG,GAAApF,KAAA3C,IAAA4G,EAAAF,EAAAhG,GAEA,OAAAqH,GAEAP,gBAAA,SAAAhE,GACA,IAAAmD,EAAAC,EAAAkB,EAAAK,EAAAzH,EAAAd,EAAAwI,EAAAjI,EAAAwB,EAAA0G,EAAAC,EAAAP,EACA,IAAAvE,EAAA+E,KACA,SAIA,IAAAF,KAFAN,EAAA,EACA5H,EAAAqD,EAAAgF,IA0BA,GAxBAF,EAAAnI,EAAAkI,GACAF,EAAA3E,EAAAR,MAAAiF,cAAAC,MAAA,IACAvB,EAAA,WACA,IAAAhH,EAAAC,EAAAC,EAEA,IADAA,KACAD,EAAA,EAAAD,EAAAwI,EAAArI,OAAsCF,EAAAD,EAASC,KAC/CkI,EAAAK,EAAAvI,MACAyI,GACAxI,EAAAE,KAAA+H,GAGA,OAAAjI,EATA,GAUOC,OACP8G,EAAA,WACA,IAAAjH,EAAAC,EAAAC,EAEA,IADAA,KACAD,EAAA,EAAAD,EAAAwI,EAAArI,OAAsCF,EAAAD,EAASC,KAC/CkI,EAAAK,EAAAvI,MACA0I,GACAzI,EAAAE,KAAA+H,GAGA,OAAAjI,EATA,GAUOC,OACP,IAAA6G,GAAA,IAAAC,EACAmB,GAAA,MACO,CAGP,IADAK,EAAA,EACA1H,EAAAd,EAAA,EAAA+B,EAFAtB,KAAA8G,IAAAP,EAAAD,GAEiC,GAAAhF,EAAA/B,GAAA+B,EAAA/B,GAAA+B,EAAmCjB,EAAA,GAAAiB,IAAA/B,MACpEwI,GAAAzF,KAAA3C,IAAA4G,EAAAD,EAAAjG,GAEAqH,GAAAK,EAGA,OAAAL,IAIAU,EAAAC,QAAAtJ,oCCjeAuJ,OAAAC,eAAAF,EAAA,cACAG,OAAA,IAGA,IAEAC,EAAAC,EAFmB1J,EAAQ,KAI3B2J,EAAgB3J,EAAQ,GAIxB4J,EAAAF,EAFa1J,EAAQ,IAMrB6J,EAAAH,EAFa1J,EAAQ,IAMrB8J,EAAAJ,EAFuB1J,EAAQ,IAI/B+J,EAAsB/J,EAAQ,KAI9BgK,EAAAN,EAFiB1J,EAAQ,MAIzBiK,EAAuBjK,EAAQ,GAE/B,SAAA0J,EAAAQ,GAAsC,OAAAA,KAAAC,WAAAD,GAAuCE,QAAAF,GAkB7E,IAKAG,EAAA,EAmBAhB,EAAAe,QAAAR,EAAAQ,QAAAE,aACAC,YAAA,wBAEAC,gBAAA,WACA,OACAC,MA7BA,EA8BAC,WAAA,GACAC,kBAAA,GACAC,QAAA,EACAC,YAAA,EACAC,aAAA,KACAC,eAAA,IAIAC,mBAAA,WACA1H,KAAA2H,iBAAA,KACA3H,KAAA4H,eAAA,MAGAC,wBAAA,SAAA/K,GACAkD,KAAA2H,iBAAA7K,GAGAgL,aAAA,YArCA,SAAAC,GACA,IAAAC,EAAAC,SAAAC,cACAF,EAAAG,mBAAAJ,GAEA,IAAAK,EAAAC,OAAAC,eACAF,EAAAG,kBACAH,EAAAI,SAAAR,GAgCAS,CAAAzI,KAAA2H,kBACAM,SAAAS,YAAA,SAEA1I,KAAA2I,UACArB,QAAA,EACAH,MAnDA,KAwDAyB,iBAAA,WACA,IAAAC,EAAA,IAAAC,MAAA9I,KAAA4H,eAAAmB,eACAC,KAAA,gCAEAtC,EAAAI,QAAAmC,OAAAJ,EAAA,oBAEA7I,KAAA2I,UACApB,YAAA,EACAJ,MAhEA,KAoEA+B,cAAA,WACA,IAAAC,GAAA,EAAA9C,EAAA+C,WAAAjD,EAAAW,QAAAuC,KAAA,SAAAC,IACA,IAAAC,EACA,OAAApD,EAAAW,QAAA0C,KAAA,SAAAC,GACA,OACA,OAAAA,EAAAC,KAAAD,EAAAE,MACA,OAQA,OAPA3J,KAAA2I,UACAxB,MA3EA,EA4EAyC,MAAA,OAEAL,OAAA,EACAE,EAAAC,KAAA,EACAD,EAAAE,KAAA,GACA,EAAAtD,EAAAwD,SAAArD,EAAAM,QAAAgD,MAAAC,uBAAA/J,KAAA4H,iBAEA,OAGA,OAFA2B,EAAAE,EAAAO,KACAP,EAAAE,KAAA,GACA,EAAAtD,EAAAwD,SAAArD,EAAAM,QAAAgD,MAAAG,uBAAAV,EAAAW,UAEA,OACAlK,KAAA2I,UACAxB,MAAAJ,IAEA0C,EAAAE,KAAA,GACA,MAEA,QACAF,EAAAC,KAAA,GACAD,EAAAU,GAAAV,EAAA,SAEAW,QAAAzM,IAAA,4BAAA8L,EAAAU,IAKAZ,GACA/C,EAAAM,QAAAgD,MAAAO,uBAAAd,EAAAW,SAEAlK,KAAA2I,UACAiB,MAAAH,EAAAU,KAGA,QACA,UACA,OAAAV,EAAAa,SAGahB,EAAAtJ,OAAA,WAOb,OAJA,WACA,OAAAmJ,EAAAoB,MAAAvK,KAAAwK,YArDA,GA2DAC,UAAA,WACAzK,KAAA0K,MAAAC,YAAA,IAGAC,QAAA,WACA5K,KAAA0K,MAAAC,YAAA,IAGAE,eAAA,WACA7K,KAAA2I,UAAuBxB,MArIvB,KAwIA2D,cAAA,WACA9K,KAAA2I,UAAuBxB,MA/IvB,KAkJA4D,uBAAA,WACA,IAAAC,GAAA,EAAA3E,EAAA+C,WAAAjD,EAAAW,QAAAuC,KAAA,SAAA4B,IACA,OAAA9E,EAAAW,QAAA0C,KAAA,SAAA0B,GACA,OACA,OAAAA,EAAAxB,KAAAwB,EAAAvB,MACA,OAEA,OADAuB,EAAAvB,KAAA,GACA,EAAAtD,EAAAwD,SAAArD,EAAAM,QAAAgD,MAAAqB,2BAEA,OACAnL,KAAA4H,eAAAsD,EAAAlB,KAEAhK,KAAA2I,UACArB,QAAA,EACAC,YAAA,EACAJ,MA/JA,IAkKA,OACA,UACA,OAAA+D,EAAAZ,SAGaW,EAAAjL,SAOb,OAJA,WACA,OAAAgL,EAAAT,MAAAvK,KAAAwK,YA3BA,GAiCAY,uBAAA,WACApL,KAAA2I,UAAuBxB,MAnLvB,KAsLAkE,sBAAA,SAAAC,GACA,UAAAA,EAAAzO,KAAAmD,KAAAuL,sBACAvL,KAAAoL,0BAIAI,8BAAA,WACA,IAAAC,GAAA,EAAApF,EAAA+C,WAAAjD,EAAAW,QAAAuC,KAAA,SAAAqC,IACA,OAAAvF,EAAAW,QAAA0C,KAAA,SAAAmC,GACA,OACA,OAAAA,EAAAjC,KAAAiC,EAAAhC,MACA,OAEA,OADAgC,EAAAhC,KAAA,GACA,EAAAtD,EAAAwD,SAAArD,EAAAM,QAAAgD,MAAAqB,wBAAAnL,KAAA4L,MAAAxE,aAEA,OACApH,KAAA4H,eAAA+D,EAAA3B,KAEAhK,KAAA2I,UACAlB,eAAA,EACAH,QAAA,EACAC,YAAA,EACAJ,MA3MA,IA8MA,OACA,UACA,OAAAwE,EAAArB,SAGaoB,EAAA1L,SAOb,OAJA,WACA,OAAAyL,EAAAlB,MAAAvK,KAAAwK,YA5BA,GAkCAqB,6BAAA,SAAAP,GACA,UAAAA,EAAAzO,KAAAmD,KAAA4L,MAAAxE,aAAApH,KAAA4L,MAAAvE,mBACArH,KAAAwL,iCAIAM,iBAAA,WACA9L,KAAA2I,UACAvB,WAAA,GACAC,kBAAA,GACAF,MAzOA,KA6OA4E,wBAAA,WACA/L,KAAA2I,UACAxB,MA7OA,KAiPA6E,oBAAA,SAAAV,GACAtL,KAAA2I,UACAvB,WAAAkE,EAAAvD,OAAA7B,MAIAsB,cAAA,EAAAf,EAAAwF,eAAAX,EAAAvD,OAAA7B,UAIAgG,2BAAA,SAAAZ,GACAtL,KAAA2I,UACAtB,kBAAAiE,EAAAvD,OAAA7B,SAIAqF,mBAAA,WACA,OAAAvL,KAAA4L,MAAApE,cAAAxH,KAAA4L,MAAApE,aAAA2E,OA5PA,GA+PAC,uBAAA,WACA,IAAAzM,EAAAK,KAEAqM,EAAA9F,EAAAO,QAAAwF,aAAA,gCACAC,EAAAhG,EAAAO,QAAAwF,aAAA,6BAEAE,OAAA,EACAC,OAAA,EACA,GAAAzM,KAAA4L,MAAApE,aAAA,CACA,GAAAxH,KAAA4L,MAAApE,aAAA2E,OAxQA,EAyQAM,GAAA,EAAA9F,EAAA+F,IAAA,mDACa,CAEb,IADA,IAAAC,KACA5O,EAAA,EAA+BA,EAAAiC,KAAA4L,MAAApE,aAAAoF,SAAAD,YAAAxP,SAAyDY,EACxF4O,EAAAvP,KAAAkJ,EAAAQ,QAAA+F,cACA,OACyBhQ,IAAAkB,GACzBiC,KAAA4L,MAAApE,aAAAoF,SAAAD,YAAA5O,KAGA,IAAA+O,EAAAH,EAAAxP,OAAA,EAAAmJ,EAAAQ,QAAA+F,cACA,MACA,KACAF,GACA,KAEAF,EAAAnG,EAAAQ,QAAA+F,cACA,MACA,KACA7M,KAAA4L,MAAApE,aAAAoF,SAAAG,QACAD,GAGAN,EAAAlG,EAAAQ,QAAA+F,cACA,MACA,KACAvG,EAAAQ,QAAA+F,cAAA,YAA2DhL,IAnS3D,EAmS2DqE,MAAAlG,KAAA4L,MAAApE,aAAA2E,SAI3D,OAAA7F,EAAAQ,QAAA+F,cACA,MACA,KACAvG,EAAAQ,QAAA+F,cACA,IACA,MACA,EAAAlG,EAAA+F,IAAA,sEAEApG,EAAAQ,QAAA+F,cACA,IACA,MACA,EAAAlG,EAAA+F,IAAA,iEAEApG,EAAAQ,QAAA+F,cACA,OACiBG,UAAA,6CACjB1G,EAAAQ,QAAA+F,cACA,OACqBG,UAAA,gDACrB1G,EAAAQ,QAAA+F,cAAA,SAA4D7D,KAAA,WAC5DiE,SAAAjN,KAAAgM,oBACAkB,WAAAlN,KAAAqL,sBACAnF,MAAAlG,KAAA4L,MAAAxE,WACA4F,UAAA,2CACAG,aAAA,EAAAxG,EAAA+F,IAAA,2BAEApG,EAAAQ,QAAA+F,cACA,OACyBG,UAAA,2CACzBR,EACAC,KAIAnG,EAAAQ,QAAA+F,cAAAR,GAA0De,eAAA,EAAAzG,EAAA+F,IAAA,QAC1DW,qBAAArN,KAAAoL,uBACAkC,WAAA,EACAC,UAAAvN,KAAAuL,uBAEAjF,EAAAQ,QAAA+F,cACA,IACA,MACA,EAAAlG,EAAA+F,IAAA,8GACAc,OAAA,SAAA3H,GACA,OAAAS,EAAAQ,QAAA+F,cACAN,GAEAkB,QAAA,OACAT,UAAA,gBACAU,QAAA/N,EAAAkL,gBAEAhF,OAKAS,EAAAQ,QAAA+F,cACA,IACA,MACA,EAAAlG,EAAA+F,IAAA,0HACAc,OAAA,SAAA3H,GACA,OAAAS,EAAAQ,QAAA+F,cACAN,GAEAkB,QAAA,OACAT,UAAA,gBACAU,QAAA/N,EAAAoL,wBAEAlF,SAQA8H,8BAAA,WACA,IAAApB,EAAAhG,EAAAO,QAAAwF,aAAA,6BAEAsB,EAAA,KACA,GAAA5N,KAAA4L,MAAAvE,kBAAAlK,OAAA,GACA,IAAA0Q,OAAA,EAEAA,EADA7N,KAAA4L,MAAAvE,oBAAArH,KAAA4L,MAAAxE,YACA,EAAAT,EAAA+F,IAAA,kBAEA,EAAA/F,EAAA+F,IAAA,uBAEAkB,EAAAtH,EAAAQ,QAAA+F,cACA,OACiBG,UAAA,4CACjB1G,EAAAQ,QAAA+F,cACA,MACA,KACAgB,GAEAvH,EAAAQ,QAAA+F,cACA,MACA,KACAvG,EAAAQ,QAAA+F,cACAN,GACyBkB,QAAA,OAAAT,UAAA,gBAAAU,QAAA1N,KAAA8L,mBACzB,EAAAnF,EAAA+F,IAAA,+BAKA,IAAAL,EAAA9F,EAAAO,QAAAwF,aAAA,gCACA,OAAAhG,EAAAQ,QAAA+F,cACA,MACA,KACAvG,EAAAQ,QAAA+F,cACA,IACA,MACA,EAAAlG,EAAA+F,IAAA,0IAEApG,EAAAQ,QAAA+F,cACA,OACiBG,UAAA,6CACjB1G,EAAAQ,QAAA+F,cACA,OACqBG,UAAA,gDACrB1G,EAAAQ,QAAA+F,cACA,MACA,KACAvG,EAAAQ,QAAA+F,cAAA,SAAgE7D,KAAA,WAChEiE,SAAAjN,KAAAkM,2BACAgB,WAAAlN,KAAA6L,6BACA3F,MAAAlG,KAAA4L,MAAAvE,kBACA2F,UAAA,2CACAG,aAAA,EAAAxG,EAAA+F,IAAA,6BACAoB,WAAA,KAGAF,IAGAtH,EAAAQ,QAAA+F,cAAAR,GAA0De,eAAA,EAAAzG,EAAA+F,IAAA,QAC1DW,qBAAArN,KAAAwL,8BACA8B,WAAA,EACAC,SAAAvN,KAAA4L,MAAAxE,aAAApH,KAAA4L,MAAAvE,sBAKA0G,oBAAA,WACA,IAAA1B,EAAA9F,EAAAO,QAAAwF,aAAA,gCAEA0B,OAAA,EAOA,OALAA,EADAhO,KAAA4L,MAAAnE,eACA,EAAAd,EAAA+F,IAAA,sHAEA,EAAA/F,EAAA+F,IAAA,8EAGApG,EAAAQ,QAAA+F,cACA,MACA,KACAvG,EAAAQ,QAAA+F,cACA,IACA,MACA,EAAAlG,EAAA+F,IAAA,uDAEApG,EAAAQ,QAAA+F,cACA,IACA,KACAmB,GAEA1H,EAAAQ,QAAA+F,cACA,KACiBG,UAAA,6CACjB1G,EAAAQ,QAAA+F,cACA,OACqBG,UAAA,+CACrB,EAAArG,EAAA+F,IAAA,sBAEApG,EAAAQ,QAAA+F,cACA,OACqBG,UAAA,iDACrB1G,EAAAQ,QAAA+F,cACA,OACyBG,UAAA,wCACzB1G,EAAAQ,QAAA+F,cACA,QAC6BrP,IAAAwC,KAAA6H,yBAC7B7H,KAAA4H,eAAAmB,eAGAzC,EAAAQ,QAAA+F,cACA,OACyBG,UAAA,+CACzB1G,EAAAQ,QAAA+F,cACA,UAC6BG,UAAA,oBAAAU,QAAA1N,KAAA8H,eAC7B,EAAAnB,EAAA+F,IAAA,sBAEApG,EAAAQ,QAAA+F,cACA,UAC6BG,UAAA,oBAAAU,QAAA1N,KAAA4I,mBAC7B,EAAAjC,EAAA+F,IAAA,gBAKApG,EAAAQ,QAAA+F,cAAA,WACAvG,EAAAQ,QAAA+F,cAAAR,GAA0De,eAAA,EAAAzG,EAAA+F,IAAA,oBAC1DW,qBAAArN,KAAAkJ,cACAoE,WAAA,EACAC,UAAAvN,KAAA4L,MAAAtE,SAAAtH,KAAA4L,MAAArE,eAKA0G,uBAAA,WACA,IAAAC,OAAA,EACAlO,KAAA4L,MAAAtE,OACA4G,GAAA,EAAAvH,EAAA+F,IAAA,+EAAkIyB,EAAA,SAAA/J,GAClI,OAAAkC,EAAAQ,QAAA+F,cACA,IACA,KACAzI,MAGSpE,KAAA4L,MAAArE,aACT2G,GAAA,EAAAvH,EAAA+F,IAAA,4DAA+GyB,EAAA,SAAA/J,GAC/G,OAAAkC,EAAAQ,QAAA+F,cACA,IACA,KACAzI,OAIA,IAAAiI,EAAA9F,EAAAO,QAAAwF,aAAA,gCACA,OAAAhG,EAAAQ,QAAA+F,cACA,MACA,KACAqB,EACA5H,EAAAQ,QAAA+F,cACA,KACA,KACAvG,EAAAQ,QAAA+F,cACA,KACA,MACA,EAAAlG,EAAA+F,IAAA,kDAAiGyB,EAAA,SAAA/J,GACjG,OAAAkC,EAAAQ,QAAA+F,cACA,IACA,KACAzI,OAIAkC,EAAAQ,QAAA+F,cACA,KACA,MACA,EAAAlG,EAAA+F,IAAA,kDAAiGyB,EAAA,SAAA/J,GACjG,OAAAkC,EAAAQ,QAAA+F,cACA,IACA,KACAzI,OAIAkC,EAAAQ,QAAA+F,cACA,KACA,MACA,EAAAlG,EAAA+F,IAAA,oDAAmGyB,EAAA,SAAA/J,GACnG,OAAAkC,EAAAQ,QAAA+F,cACA,IACA,KACAzI,QAKAkC,EAAAQ,QAAA+F,cAAAR,GAA0De,eAAA,EAAAzG,EAAA+F,IAAA,UAC1DW,qBAAArN,KAAA+L,wBACAuB,WAAA,MAKAc,iBAAA,SAAAC,GACA,IAAAC,EAAA/H,EAAAO,QAAAwF,aAAA,0BACA,OAAAhG,EAAAQ,QAAA+F,cACA,MACA,KACAvG,EAAAQ,QAAA+F,cACA,IACA,MACA,EAAAlG,EAAA+F,IAAA2B,IAEA/H,EAAAQ,QAAA+F,cAAAyB,EAAA,QAIAC,iBAAA,WACA,IAAAlC,EAAA9F,EAAAO,QAAAwF,aAAA,gCACA,OAAAhG,EAAAQ,QAAA+F,cACA,MACA,KACAvG,EAAAQ,QAAA+F,cACA,IACA,MACA,EAAAlG,EAAA+F,IAAA,mBAEApG,EAAAQ,QAAA+F,cACA,IACA,MACA,EAAAlG,EAAA+F,IAAA,qEAEApG,EAAAQ,QAAA+F,cAAAR,GAA0De,eAAA,EAAAzG,EAAA+F,IAAA,SAC1DW,qBAAArN,KAAA4K,QACA0C,WAAA,MAKAkB,0BAAA,WACA,IAAAnC,EAAA9F,EAAAO,QAAAwF,aAAA,gCACA,OAAAhG,EAAAQ,QAAA+F,cACA,MACA,MACA,EAAAlG,EAAA+F,IAAA,iJACApG,EAAAQ,QAAA+F,cACAR,GACiBe,eAAA,EAAAzG,EAAA+F,IAAA,kCACjBW,qBAAArN,KAAA8K,cACAwC,WAAA,GAEAhH,EAAAQ,QAAA+F,cACA,UACqBa,QAAA1N,KAAAyK,WACrB,qCAMAgE,eAAA,SAAAtH,GACA,OAAAA,GACA,KAloBA,EAmoBA,SAAAR,EAAA+F,IAAA,gCACA,KAnoBA,EAooBA,SAAA/F,EAAA+F,IAAA,+BACA,KAhoBA,EAioBA,SAAA/F,EAAA+F,IAAA,YACA,KAtoBA,EAuoBA,SAAA/F,EAAA+F,IAAA,gBACA,KAvoBA,EAwoBA,SAAA/F,EAAA+F,IAAA,gBACA,KAxoBA,EAyoBA,SAAA/F,EAAA+F,IAAA,iBACA,QACA,SAAA/F,EAAA+F,IAAA,uBAIAgC,OAAA,WACA,IAAAC,EAAApI,EAAAO,QAAAwF,aAAA,4BAEAsC,OAAA,EACA,GAAA5O,KAAA4L,MAAAhC,MAAA,CACA,IAAAyC,EAAA9F,EAAAO,QAAAwF,aAAA,gCACAsC,EAAAtI,EAAAQ,QAAA+F,cACA,MACA,KACAvG,EAAAQ,QAAA+F,cACA,IACA,MACA,EAAAlG,EAAA+F,IAAA,gCAEApG,EAAAQ,QAAA+F,cACA,OACqBG,UAAA,qBACrB1G,EAAAQ,QAAA+F,cAAAR,GAAkEe,eAAA,EAAAzG,EAAA+F,IAAA,SAClEW,qBAAArN,KAAAkJ,cACAoE,WAAA,EACAuB,SAAA7O,KAAAyK,mBAKA,OAAAzK,KAAA4L,MAAAzE,OACA,KA7qBA,EA8qBAyH,EAAA5O,KAAAoM,yBACA,MACA,KA/qBA,EAgrBAwC,EAAA5O,KAAA2N,gCACA,MACA,KAjrBA,EAkrBAiB,EAAA5O,KAAA+N,sBACA,MACA,KAnrBA,EAorBAa,EAAA5O,KAAAiO,yBACA,MACA,KArrBA,EAsrBAW,EAAA5O,KAAAoO,kBAAA,EAAAzH,EAAAmI,KAAA,kBACA,MACA,KAAA/H,EACA6H,EAAA5O,KAAAuO,mBACA,MACA,KAzrBA,EA0rBAK,EAAA5O,KAAAwO,4BAKA,OAAAlI,EAAAQ,QAAA+F,cACA8B,GACa3B,UAAA,2BACbrC,WAAA3K,KAAA0K,MAAAC,WACAoE,MAAA/O,KAAAyO,eAAAzO,KAAA4L,MAAAzE,OACAmG,WAAAvG,GAAAiI,SAAAhP,KAAA4L,MAAAzE,QAEAb,EAAAQ,QAAA+F,cACA,MACA,KACA+B,OAKA9I,EAAAC,UAAA,6BCtwBA,IAAAkJ,EAeAhG,KAAA,SAAAiG,GACA,aAEA,cAAAA,GAAA,oBAAAC,WAAA,eAAAC,KAAAD,UAAAE,YAAA,CAGA,IAGAC,EAAA,WACA,OAAAJ,EAAAK,KAAAL,EAAAM,WAAAN,GAEAO,EALAP,EAAAjH,SAKAyH,gBAAA,oCACAC,EAAA,aAAAF,EAKAG,EAAA,eAAAR,KAAAF,EAAAW,cAAAX,EAAAY,OACAC,EAAA,eAAAX,KAAAD,UAAAE,WACAW,EAAA,SAAAC,IACAf,EAAAgB,cAAAhB,EAAAiB,YAAA,WACA,MAAAF,GACI,IAKJG,EAAA,SAAAC,GAQAF,WAPA,WACA,iBAAAE,EACAf,IAAAgB,gBAAAD,GAEAA,EAAAE,UANA,MAyBAC,EAAA,SAAA3H,GAGA,mFAA4DuG,KAAAvG,EAAAG,MAC5D,IAAAF,MAAA2H,OAAAC,aAAA,OAAA7H,IAA0DG,KAAAH,EAAAG,OAE1DH,GAEA8H,EAAA,SAAA9H,EAAA+H,EAAAC,GACAA,IACAhI,EAAA2H,EAAA3H,IAGA,IAIAiI,EAHAC,EAAA/Q,KAEAgR,EA3CA,6BA0CAnI,EAAAG,KAGAiI,EAAA,YAhCA,SAAAF,EAAAG,EAAAC,GAGA,IADA,IAAApT,GADAmT,KAAAE,OAAAF,IACA/T,OACAY,KAAA,CACA,IAAAsT,EAAAN,EAAA,KAAAG,EAAAnT,IACA,sBAAAsT,EACA,IACAA,EAAAzP,KAAAmP,EAAAI,GAAAJ,GACM,MAAAd,GACND,EAAAC,KAwBAqB,CAAAP,EAAA,qCAAAxL,MAAA,OAuCA,GAFAwL,EAAAQ,WAAAR,EAAAS,KAEA7B,EAUA,OATAmB,EAAAxB,IAAAmC,gBAAA5I,QACAsH,WAAA,WACAV,EAAAiC,KAAAZ,EACArB,EAAAkC,SAAAf,EApGA,SAAAgB,GACA,IAAAT,EAAA,IAAAU,WAAA,SACAD,EAAAE,cAAAX,GAmGAY,CAAAtC,GACAwB,IACAb,EAAAU,GACAC,EAAAQ,WAAAR,EAAAiB,QA5CA,WACA,IAAAjC,GAAAiB,GAAApB,IAAAV,EAAA+C,WAAA,CAEA,IAAAC,EAAA,IAAAD,WAWA,OAVAC,EAAAC,UAAA,WACA,IAAAC,EAAArC,EAAAmC,EAAAG,OAAAH,EAAAG,OAAAC,QAAA,eAAoF,yBACpFpD,EAAAqD,KAAAH,EAAA,YACAlD,EAAAsD,SAAAd,KAAAU,GACAA,OAAAK,EACA1B,EAAAQ,WAAAR,EAAAiB,KACAf,KAEAiB,EAAAQ,cAAA7J,QACAkI,EAAAQ,WAAAR,EAAAS,MAIAV,IACAA,EAAAxB,IAAAmC,gBAAA5I,IAEAmI,EACA9B,EAAAsD,SAAAd,KAAAZ,EAEA5B,EAAAqD,KAAAzB,EAAA,YAGA5B,EAAAsD,SAAAd,KAAAZ,GAGAC,EAAAQ,WAAAR,EAAAiB,KACAf,IACAb,EAAAU,GAkBA6B,IAEAC,EAAAjC,EAAAkC,UAMA,0BAAA1D,qBAAA2D,iBACA,SAAAjK,EAAA+H,EAAAC,GAMA,OALAD,KAAA/H,EAAA+H,MAAA,WAEAC,IACAhI,EAAA2H,EAAA3H,IAEAsG,UAAA2D,iBAAAjK,EAAA+H,KAIAgC,EAAAG,MAAA,aACAH,EAAArB,WAAAqB,EAAApB,KAAA,EACAoB,EAAAI,QAAA,EACAJ,EAAAZ,KAAA,EAEAY,EAAAhJ,MACAgJ,EAAAK,aACAL,EAAAM,WACAN,EAAAO,QACAP,EAAAQ,QACAR,EAAAS,QACAT,EAAAU,WACA,KA5BA,SAAAzK,EAAA+H,EAAAC,GACA,WAAAF,EAAA9H,EAAA+H,GAAA/H,EAAA+H,MAAA,WAAAC,MA/HA,CA8JA,oBAAA0C,YACA,oBAAAlL,gBACArI,KAAA4O;mFAMiC9I,EAAAC,QACjCD,EAAAC,QAAAkD,SACmD,OAANvM,EAAA,MAA+B,OAAVA,EAAA,YAG/D+V,KAFDxD,EAAA,WACF,OAAAhG,GACGrH,KAAAmE,EAAArJ,EAAAqJ,EAAAD,QAAAC,QAAAkJ,uBCzLH,IAAA3S,EAEAA,GACAoH,QACA8P,KAAA,+BACAC,KAAA,KAAa,KAAO,KAAM,gBAC1BC,KAAA,+BACAC,GAAA,+BACAC,KAAA,+BACAC,KAAA,+BACAC,KAAA,KAAY,KAAO,KAAM,gBACzBC,KAAA,+BACAC,KAAA,+BACAC,KAAA,+BACAC,KAAA,yBAAqC,MACrCC,KAAA,+BACAC,KAAA,yBAAqC,MACrCC,KAAA,eAAwB,gBACxBC,KAAA,UAAkB,sBAClBC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,KAAA,eAAyB,iBACzBC,KAAM,eAAmB,iBACzBC,KAAA,+BACAC,KAAA,yBAAqC,MACrCC,KAAA,eAAwB,gBACxBC,KAAA,UAAkB,sBAClBC,KAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAnS,GAAA,oBAA8B,WAC9BoS,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,oBAA+B,KAAK,MACpCC,GAAA,+BACAC,GAAA,+BACAxS,GAAA,+BACAyS,GAAA,+BACAxS,GAAA,+BACAyS,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,KAAA,oBAA+B,YAC/BC,MAAA,KAAc,0BACdC,KAAA,KAAa,4BACbC,KAAA,+BACAC,GAAA,yBAAqC,MACrCC,KAAA,+BACAC,GAAA,+BACAlJ,GAAA,+BACAmJ,GAAA,+BACAha,GAAA,+BACAgO,GAAA,+BACAxN,GAAA,+BACA4B,GAAA,+BACA6X,GAAA,+BACAxZ,GAAA,+BACAsB,GAAA,+BACA7C,GAAA,+BACA8B,GAAA,oBAA8B,WAC9BG,GAAA,+BACA3B,GAAA,+BACAG,GAAA,+BACAua,GAAA,oBAA+B,KAAK,MACpCzY,GAAA,+BACAxB,GAAA,+BACA6G,GAAA,+BACAE,GAAA,+BACArF,GAAA,+BACAwY,GAAA,+BACArY,GAAA,+BACAsY,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,KAAM,oBAAyB,YAC/BC,KAAA,KAAa,0BACbC,KAAM,KAAO,4BACbC,KAAA,gCAEAC,QACAzE,KAAA,gCACAC,KAAA,+BACAC,KAAA,+BACAC,GAAA,+BACAC,KAAA,+BACAC,KAAA,+BACAC,KAAA,+BACAC,KAAA,+BACAC,KAAA,oBAA+B,WAC/BC,KAAA,+BACAC,KAAA,UAAmB,sBACnBC,KAAA,gCACAC,KAAA,+BACAC,KAAA,+BACAC,KAAA,UAAmB,KAAM,gBACzBC,GAAA,oBAA+B,WAC/BC,GAAA,gCACAC,GAAA,gCACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,KAAA,+BACAC,KAAM,+BACNC,KAAA,gCACAC,KAAA,UAAmB,sBACnBC,KAAA,+BACAC,KAAA,UAAmB,KAAM,gBACzBC,KAAA,gCACAC,GAAA,0BAAqC,MACrCC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAnS,GAAA,eAAyB,gBACzBoS,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,KAAY,0BACZC,GAAA,+BACAxS,GAAA,+BACAyS,GAAA,+BACAxS,GAAA,+BACAyS,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,KAAA,oBAA+B,WAC/BC,MAAA,+BACAC,KAAA,KAAa,0BACbC,KAAA,+BACAC,GAAA,+BACAC,KAAA,+BACAC,GAAA,0BAAqC,MACrClJ,GAAA,+BACAmJ,GAAA,+BACAha,GAAA,+BACAgO,GAAA,+BACAxN,GAAA,+BACA4B,GAAA,+BACA6X,GAAA,+BACAxZ,GAAA,+BACAsB,GAAA,+BACA7C,GAAA,+BACA8B,GAAA,eAAyB,gBACzBG,GAAA,+BACA3B,GAAA,+BACAG,GAAA,+BACAua,GAAA,+BACAzY,GAAA,KAAY,0BACZxB,GAAA,+BACA6G,GAAA,+BACAE,GAAA,+BACArF,GAAA,+BACAwY,GAAA,+BACArY,GAAA,+BACAsY,GAAA,+BACAC,GAAA,+BACAC,GAAA,+BACAC,KAAM,oBAAyB,WAC/BC,KAAA,+BACAC,KAAM,KAAO,0BACbC,KAAA,gCAEApU,QACAqQ,KAAA,oCACAC,KAAA,qCACAE,KAAA,sCACAC,KAAA,sCACAC,KAAA,qCACAC,GAAA,qCACAC,GAAA,qCACAC,GAAA,kCACAC,GAAA,oCACAC,GAAA,oCACAC,GAAA,iCACAC,GAAA,mCACAC,GAAA,qCACAC,GAAA,kCACAC,GAAA,mCAEAkD,YACAjE,KAAA,sCACAC,KAAA,qCACAE,KAAA,oCACAC,KAAA,sCACAC,KAAA,oCACAC,GAAA,qCACAC,GAAA,qCACAC,GAAA,kCACAC,GAAA,mCACAC,GAAA,oCACAC,GAAA,iCACAC,GAAA,kCACAC,GAAA,qCACAC,GAAA,kCACAC,GAAA,iCACAI,KAAA,uCAIAtP,EAAAC,QAAAzJ,qBCzOAwJ,EAAAC,QAAA,WACA,UAAAoS,MAAA,qECCAnS,OAAAC,eAAAF,EAAA,cACAG,OAAA,IAEAH,EAAAkG,cAoEA,SAAAhO,GACA,OAAAA,EAAAd,OAAA,YAEA,IAAAib,EAAAC,EAAA/X,QACA8X,EAAAhb,KAAAoJ,EAAAM,QAAAgD,MAAAwO,sBAEA,IAAA9Q,GAAA,EAAA+Q,EAAAzR,SAAA7I,EAAAma,GAEA,GAAAna,EAAA+Q,SAAA,MACA,IAAAwJ,GAAA,EAAAD,EAAAzR,SAAA7I,EAAAqU,QAAA,SAAA8F,GACAI,EAAArM,MAAA3E,EAAA2E,QAAA3E,EAAAgR,GAGA,QAAAza,EAAA,EAAmBA,EAAAyJ,EAAAoF,SAAAD,YAAAxP,SAA8CY,EAEjEyJ,EAAAoF,SAAAD,YAAA5O,IAAA,EAAA4I,EAAA+F,IAAAlF,EAAAoF,SAAAD,YAAA5O,IAGAyJ,EAAAoF,SAAAG,UACAvF,EAAAoF,SAAAG,SAAA,EAAApG,EAAA+F,IAAAlF,EAAAoF,SAAAG,UAGA,OAAAvF,GAxFA,IAEA+Q,EAAAnS,EAFc1J,EAAQ,MAMtB8J,EAAAJ,EAFuB1J,EAAQ,IAI/BiK,EAAuBjK,EAAQ,GAE/B,SAAA0J,EAAAQ,GAAsC,OAAAA,KAAAC,WAAAD,GAAuCE,QAAAF,GAE7E,IAAAyR,GAAA,kBAmBA,EAAA1R,EAAAmI,KAAA,0CACA,EAAAnI,EAAAmI,KAAA,sDACA,EAAAnI,EAAAmI,KAAA,kDACA,EAAAnI,EAAAmI,KAAA,wCACA,EAAAnI,EAAAmI,KAAA,oBACA,EAAAnI,EAAAmI,KAAA,uBACA,EAAAnI,EAAAmI,KAAA,6CACA,EAAAnI,EAAAmI,KAAA,uDACA,EAAAnI,EAAAmI,KAAA,0CACA,EAAAnI,EAAAmI,KAAA,8DACA,EAAAnI,EAAAmI,KAAA,+CACA,EAAAnI,EAAAmI,KAAA,2EACA,EAAAnI,EAAAmI,KAAA,wDAGA,EAAAnI,EAAAmI,KAAA,yCACA,EAAAnI,EAAAmI,KAAA,0EACA,EAAAnI,EAAAmI,KAAA,iDACA,EAAAnI,EAAAmI,KAAA,mCACA,EAAAnI,EAAAmI,KAAA,kCACA,EAAAnI,EAAAmI,KAAA,qCACA,EAAAnI,EAAAmI,KAAA,sCACA,EAAAnI,EAAAmI,KAAA,mCACA,EAAAnI,EAAAmI,KAAA,gDACA,EAAAnI,EAAAmI,KAAA,sCACA,EAAAnI,EAAAmI,KAAA,uDACA,EAAAnI,EAAAmI,KAAA,gDACA,EAAAnI,EAAAmI,KAAA,4CACA,EAAAnI,EAAAmI,KAAA,kECjEA,IAAAlC,EAAA6L,EAAAhc,EAAAic,EAAAC,EAAAC,EAEAH,EAAW/b,EAAQ,KAEnBD,EAAUC,EAAQ,KAElBic,EAAiBjc,EAAQ,KAEzBkQ,EAAWlQ,EAAQ,KAEnBgc,EAAA,WACA,WAAAhW,MAAAmW,WAGAD,EAAA,SAAA3a,EAAA6a,GACA,IAAAC,EAAAC,EAAAjb,EAAAf,EAAAkB,EAAA+a,EAAAzb,EAAA6U,EAAA6G,EAAAC,EAAAC,EAMA,IALA,MAAAN,IACAA,MAEAK,EAAAT,IACAQ,KACAnb,EAAA,EAAAf,EAAA8b,EAAA3b,OAAuCY,EAAAf,EAASe,IAEhD,WAAAP,SADAub,EAAAD,EAAA/a,MACA,WAAAP,GAAA,YAAAA,GACA0b,EAAA9b,KAAA2b,EAAAM,WAAA/T,eAQA,IAAA2T,KALAR,EAAAa,0BAAAJ,GACAhb,EAAAua,EAAAc,UAAAtb,IACAoU,EAAA5V,EAAAuB,8BAAAC,EAAAC,IACAsb,UAAAd,IAAAS,EACAH,EAAAL,EAAAc,sBAAApH,EAAAhU,SAEA+a,EAAAJ,EAAAC,GACA5G,EAAA4G,GAAAG,EAGA,OADA/G,EAAAzF,WAAA8M,aAAArH,EAAAlG,MAAAkG,EAAAzR,UACAyR,GAGAvM,EAAAC,QAAA6S,uBCxCA,IAAAe,EAAAC,EAAAC,EAAAC,EAAAC,EAAAzd,EAAA0d,EAAAC,EAAAC,EAAAzB,EAAA7H,EAAAnU,EAsBA,IAAAmU,KApBAqJ,EAAkBvd,EAAQ,KAE1BJ,EAAmBI,EAAQ,KAE3BD,EAAUC,EAAQ,KAElBsd,EAAA,SAAAG,GACA,IAAApc,EAAAQ,EAAAtB,EAAAoV,EAGA,IAFAA,KACAtU,EAAA,EACAd,EAAA,EAAAsB,EAAA4b,EAAAhd,OAAyCF,EAAAsB,EAAUtB,IAEnDoV,EADA8H,EAAAld,IACAc,EACAA,GAAA,EAEA,OAAAsU,GAGAyH,KAEAG,EACAC,EAAAD,EAAArJ,GACAkJ,EAAAlJ,GAAAoJ,EAAAE,GAGAN,GACAlW,OAAApH,EAAAoH,OACAuU,OAAA3b,EAAA2b,OACArU,OAAAtH,EAAAsH,OACAsU,WAAA5b,EAAA4b,YAGA2B,GACAxC,GAAA,SACAlJ,GAAA,KACAmJ,GAAA,QAAa,SACbhM,GAAA,KACA5L,GAAA,SACA3B,GAAA,aACAO,GAAA,aACArB,GAAA,KACAmH,GAAA,SACAE,GAAA,SACAoT,GAAA,KACAE,GAAA,MAGAmC,GACAK,YAAA,uBAOAT,GACAhF,IAAA,YACAC,IAAA,YACAC,IAAA,kBACAC,IAAA,wBACAC,IAAA,aAGA0D,GACA4B,MAAA,SAAAzT,GACA,IAAApK,EACA,OAOK,IAPL,WACA,IAAAU,EAEA,IAAAV,KADAU,KACA0J,EACA1J,EAAAE,KAAAZ,GAEA,OAAAU,EANA,GAOKC,QAELmd,OAAA,SAAAJ,EAAAK,GACA,OAAAL,EAAA9c,KAAAmN,MAAA2P,EAAAK,IAEAC,UAAA,SAAAC,EAAAC,GACA,IAAAvV,EACA,kBACA,IAAA5G,EAAAtB,EAAAO,EAAAN,EAGA,IADAA,KACAD,EAAA,EAAAsB,GAFAf,EAAAid,EAAAlV,MAAA,KAEApI,OAAoCF,EAAAsB,EAAUtB,IAC9CkI,EAAA3H,EAAAP,GACAC,EAAAE,KAAAsd,EAAAvV,OAEA,OAAAjI,EARA,GASKyd,KAAA,KAELC,IAAA,SAAA9d,EAAA2B,GACA,OAAA3B,EAAA2B,QAEAoc,OAAA,SAAA3c,GACA,OAAAA,EAAAoB,KAAA,SAAAC,EAAAC,GACA,OAAAD,EAAAxB,EAAAyB,EAAAzB,GAAAwB,EAAAF,EAAAG,EAAAH,KAGAka,UAAA,SAAAtb,GACA,IAAAM,EAAAuc,EAAAC,EAAA7c,EAAAjB,EAGA,IAFAiB,KAEAjB,EAAA,EAAAsB,GADAwc,GAAA/a,KAAAgb,iBAAAhb,KAAAib,yBAAAjb,KAAAkb,WAAAlb,KAAAmb,cAAAnb,KAAAob,aAAApb,KAAAqb,eAAArb,KAAAsD,YAAAtD,KAAAsb,aACAne,OAAuCF,EAAAsB,EAAUtB,IACjD6d,EAAAC,EAAA9d,GACA+C,KAAAsa,OAAApc,EAAA4c,EAAAlZ,KAAA5B,KAAA/B,IAEA,OAAA+B,KAAA6a,OAAA3c,IAEA8c,iBAAA,SAAA/c,EAAAsd,GACA,IAAAC,EAAAzd,EAAAsB,EAAArC,EAAAkB,EAAAjB,EAAAua,EAAAiE,EAAA9W,EAAA+W,EAAAle,EAAAwB,EAAAkF,EAAAmB,EAOA,IAAAmW,KANA,MAAAD,IACAA,EAAAzB,GAEA5b,KACAlB,EAAAiB,EAAAd,OACAse,EAAAxd,EAAAqH,cACAiW,EAEA,IADAG,EAAAH,EAAAC,GACAzd,EAAAd,EAAA,EAAAO,EAAAR,EAAgC,GAAAQ,EAAAP,EAAAO,EAAAP,EAAAO,EAA8BO,EAAA,GAAAP,IAAAP,MAC9D,IAAAoC,EAAAmY,EAAAxY,EAAAjB,EAAAmG,EAAAlH,EAA0CgC,GAAAkF,EAAAsT,EAAAtT,EAAAsT,EAAAtT,EAAoC7E,EAAAL,GAAAkF,IAAAsT,MAC9EiE,EAAAnb,MAAAvC,GAAAsB,EAAA,UAAAqc,IAEA/W,EAAA+W,EADArW,EAAAoW,EAAAnb,MAAAvC,GAAAsB,EAAA,SAEAnB,EAAAd,MACAgD,QAAA,aACArC,IACAsB,IACAgB,MAAApC,EAAAqC,MAAAvC,GAAAsB,EAAA,QACAsc,aAAAtW,EACAV,OACA6W,kBACA1W,UAAA,EACAc,MAAA,KAMA,OAAA5F,KAAA6a,OAAA3c,IAEA+c,yBAAA,SAAAhd,EAAAsd,GACA,IAAAhd,EAAAsC,EAAA3C,EAAAjB,EAAAO,EAAAoe,EAMA,IALA,MAAAL,IACAA,EAAAzB,GAEA8B,EAAA3d,EAAAsH,MAAA,IAAAsW,UAAAlB,KAAA,IAEA1d,EAAA,EAAAsB,GADAL,EAAA8B,KAAAgb,iBAAAY,EAAAL,IACApe,OAAsCF,EAAAsB,EAAUtB,KAChD4D,EAAA3C,EAAAjB,IACAoD,MAAAQ,EAAAR,MAAAkF,MAAA,IAAAsW,UAAAlB,KAAA,IACA9Z,EAAAiE,UAAA,EACAtH,GAAAS,EAAAd,OAAA,EAAA0D,EAAAxB,EAAApB,EAAAd,OAAA,EAAA0D,EAAA9C,GAAA8C,EAAA9C,EAAAP,EAAA,GAAAqD,EAAAxB,EAAA7B,EAAA,GAEA,OAAAwC,KAAA6a,OAAA3c,IAEAob,0BAAA,SAAAa,GACA,OAAAL,EAAA,YAAAE,EAAAG,EAAA7Z,UAEAwb,uBAAA,SAAA7d,EAAA8d,GACA,IAAA5W,EAAA5G,EAAAyd,EAAA/e,EAAAgf,EAAAze,EAAA0e,EAAArW,EAAAsW,EAAAC,EAGA,IAFAH,KAEAhf,EAAA,EAAAsB,GADAf,EAAAS,EAAAsH,MAAA,KACApI,OAAkCF,EAAAsB,EAAUtB,IAC5CkI,EAAA3H,EAAAP,GACAgf,EAAA9W,IAAA,EAGA,IAAA6W,KADAI,KACAL,EACAI,EAAAJ,EAAAC,IACAE,EAAA,WACA,IAAA1d,EAAAgZ,EAAAta,EAEA,IADAA,KACAsa,EAAA,EAAAhZ,EAAA2d,EAAAhf,OAAuCqa,EAAAhZ,EAAUgZ,KACjD3R,EAAAsW,EAAA3E,MACAyE,GACA/e,EAAAE,KAAAyI,GAGA,OAAA3I,EATA,IAWAC,OAAA,IACAif,EAAAJ,GAAAE,GAGA,OAAAE,GAEAC,oBAAA,SAAAN,GACA,IAAA5W,EAAAmX,EAAAC,EAAA/f,EAAAggB,EAAAC,EAAAle,EAAAC,EAAAvB,EAAAua,EAAAha,EAAAqI,EAAA6W,EAAAC,EAAAR,EA+EA,IA9EAK,EAAA,WACA,IAAAtf,EAEA,IAAAV,KADAU,KACA6e,EACA7e,EAAAE,KAAAZ,GAEA,OAAAU,EANA,GAQAif,OACAG,EAAA,SAAAH,GACA,IAAAS,EAAAC,EAAAC,EAAAve,EAAAwe,EAAA9f,EAAA4I,EAAA4R,EAGA,IAFAoF,KACAE,KACA9f,EAAA,EAAAsB,EAAA4d,EAAAhf,OAAqCF,EAAAsB,EAAUtB,IAC/C4I,EAAAsW,EAAAlf,IACA2f,EAAA,WACA,IAAApe,EAAAgZ,EAAAta,EAEA,IADAA,KACAua,EAAAD,EAAA,EAAAhZ,EAAAqH,EAAA1I,OAA4Cqa,EAAAhZ,EAAUiZ,IAAAD,EACtDhb,EAAAqJ,EAAA4R,GACAva,EAAAE,MAAAZ,EAAAib,IAEA,OAAAva,EAPA,IASAoC,QACAwd,EAAA,WACA,IAAAte,EAAAgZ,EAAAta,EAEA,IADAA,KACAua,EAAAD,EAAA,EAAAhZ,EAAAoe,EAAAzf,OAA8Cqa,EAAAhZ,EAAUiZ,IAAAD,EACxDhb,EAAAogB,EAAAnF,GACAva,EAAAE,KAAAZ,EAAA,IAAAib,GAEA,OAAAva,EAPA,GAQSyd,KAAA,QACToC,IACAA,EAAAD,IAAA,EACAD,EAAAzf,KAAAyI,IAGA,OAAAgX,IAEAN,EAAA,SAAAC,GACA,IAAAQ,EAAAC,EAAAlf,EAAA0e,EAAAle,EAAAC,EAAA0e,EAAAjgB,EAAAua,EAAAzY,EAAAvB,EAAAwB,EAAAme,EAAAtX,EAAAuX,EAAAC,EACA,GAAAb,EAAArf,OAAA,CAOA,IAJA8f,EAAAT,EAAA,GACAW,EAAAX,EAAAlc,MAAA,GACA4c,KAEAjgB,EAAA,EAAAsB,GADAf,EAAAue,EAAAkB,IACA9f,OAAoCF,EAAAsB,EAAUtB,IAE9C,IADAwf,EAAAjf,EAAAP,GACAua,EAAA,EAAAhZ,EAAA2d,EAAAhf,OAAuCqa,EAAAhZ,EAAUgZ,IAAA,CAGjD,IADAwF,GAAA,EACAjf,EAAAgB,EAAA,EAAAC,GAFA6G,EAAAsW,EAAA3E,IAEAra,OAA4C,GAAA6B,EAAAD,EAAAC,EAAAD,EAAAC,EAAiCjB,EAAA,GAAAiB,IAAAD,MAC7E,GAAA8G,EAAA9H,GAAA,KAAA0e,EAAA,CACAO,EAAAjf,EACA,OAGA,IAAAif,GACAK,EAAAxX,EAAAuL,SAAAqL,EAAAQ,KACAC,EAAA9f,KAAAigB,MAEAD,EAAAvX,EAAAvF,MAAA,IACAgd,OAAAN,EAAA,GACAI,EAAAhgB,MAAAqf,EAAAQ,IACAC,EAAA9f,KAAAyI,GACAqX,EAAA9f,KAAAggB,IAKA,OADAjB,EAAAG,EAAAY,GACAX,EAAAY,MAEAX,GACAG,KACA1f,EAAA,EAAAsB,EAAA4d,EAAAhf,OAAmCF,EAAAsB,EAAUtB,IAAA,CAG7C,IADAyf,KACAlF,EAAA,EAAAhZ,GAFAqH,EAAAsW,EAAAlf,IAEAE,OAAoCqa,EAAAhZ,EAAUgZ,IAC9CiF,GAAAjf,EAAAqI,EAAA2R,IAAA,GAAArS,EAAA3H,EAAA,GACAkf,EAAAD,GAAAtX,EAEAwX,EAAAvf,KAAAsf,GAEA,OAAAC,GAEAzB,WAAA,SAAAjd,EAAAsd,EAAAgC,GACA,IAAApY,EAAA3I,EAAA+B,EAAAC,EAAAqC,EAAA2c,EAAAtf,EAAAjB,EAAAua,EAAAha,EAAAwB,EAAA6G,EAAA4X,EAAAC,EAAArd,EAAAoX,EASA,IARA,MAAA8D,IACAA,EAAAzB,GAEA,MAAAyD,IACAA,EAAA1D,GAEA3b,KAEAjB,EAAA,EAAAsB,GADAf,EAAAwC,KAAAqc,oBAAArc,KAAA8b,uBAAA7d,EAAAsf,KACApgB,OAAkCF,EAAAsB,IAClCsH,EAAArI,EAAAP,IACA+C,KAAAqa,MAAAxU,IAF4C5I,IAO5C,IAFAygB,EAAA1d,KAAAwa,UAAAvc,EAAA4H,GAEA2R,EAAA,EAAAhZ,GADAQ,EAAAgB,KAAAgb,iBAAA0C,EAAAnC,IACApe,OAAqCqa,EAAAhZ,EAAUgZ,IAG/C,GAFA3W,EAAA7B,EAAAwY,IACAnX,EAAApC,EAAAqC,MAAAO,EAAA9C,GAAA8C,EAAAxB,EAAA,SACAiG,gBAAAzE,EAAA8a,aAAA,CAIA,IAAA8B,KADAD,KACA3X,EACAV,EAAAU,EAAA4X,IACA,IAAApd,EAAAsd,QAAAF,KACAD,EAAAC,GAAAtY,GAGAtE,EAAA+E,MAAA,EACA/E,EAAAR,QACAQ,EAAAgF,IAAA2X,EACA3c,EAAA+c,YAAA,WACA,IAAA1gB,EAEA,IAAAV,KADAU,KACAsgB,EACA/F,EAAA+F,EAAAhhB,GACAU,EAAAE,KAAAZ,EAAA,OAAAib,GAEA,OAAAva,EAPA,GAQSyd,KAAA,MACTzc,EAAAd,KAAAyD,GAGA,OAAAb,KAAA6a,OAAA3c,EAAA2f,OAAA,SAAAhd,GACA,OAAAA,EAAAR,MAAAlD,OAAA,MAGAge,cAAA,SAAAld,EAAA6f,GACA,IAAAnhB,EAAAohB,EAAA7f,EAKA,IAAA6f,KAJA,MAAAD,IACAA,EAAAlE,GAEA1b,KACA4f,EACAnhB,EAAAmhB,EAAAC,GACA/d,KAAAsa,OAAApc,EAAA8B,KAAAge,qBAAA/f,EAAAtB,EAAAohB,IAEA,OAAA/d,KAAA6a,OAAA3c,IAEA+f,WAAA,oDACAD,qBAAA,SAAA/f,EAAAtB,EAAAohB,GACA,IAAAG,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAxgB,EAAAsB,EAAAmf,EAAAjgB,EAAAL,EAAAjB,EAAAwH,EAAAF,EAGA,IAFArG,KACAH,EAAA,EACAA,EAAAE,EAAAd,OAAA,GASA,IARAkC,EAAAtB,EAAA,EACAygB,EAAA,KACAja,EAAA,EAIAE,EAHA,WAAAsZ,GAAA,WAAAA,IAAA/d,KAAAie,WAAAQ,KAAAxgB,EAAAqE,OAAAvE,IAGA,EAFA,IAIA,CAMA,GAJAugB,GAAA,EACAC,GAAA,EACAF,GAAA,EACAF,EAAAxhB,EAJAsB,EAAAqE,OAAAjD,EAAA,QAKAA,EAAApB,EAAAd,OAEA,IADAihB,EAAAngB,EAAAqE,OAAAjD,GACApC,EAAA,EAAAsB,EAAA4f,EAAAhhB,OAA8CF,EAAAsB,EAAUtB,IAGxD,GADAohB,GAAA,GADAH,EAAAC,EAAAlhB,MAEA,IAAAihB,EAAAP,QAAAS,GAAA,CACAE,GAAA,EACAC,EAAAF,EACA,IAAAH,EAAAP,QAAAS,KACA3Z,GAAA,GAEA+Z,IAAAD,IACAha,GAAA,EACAia,EAAAD,GAEA,MAIA,IAAAD,EAES,CACTjf,EAAAtB,EAAA,GACAG,EAAAd,MACAgD,QAAA,UACArC,IACAsB,IAAA,EACAgB,MAAApC,EAAAqC,MAAAvC,EAAAsB,GACA1C,MAAAohB,EACAxZ,QACAE,kBAGA1G,EAAAsB,EACA,MAdAA,GAAA,EAkBA,OAAAnB,GAEAkd,aAAA,SAAAnd,GACA,IAAAygB,EAAAvc,EAAAwc,EAAAC,EAAAC,EAAAC,EAAA/gB,EAAAsB,EAAA0f,EAAAC,EAAAC,EAAAC,EAAAre,EAAA3C,EAAAV,EAMA,IALAU,KACA2gB,EAAA,WACAG,EAAA,YACAC,EAAA,aACAF,EAAA,EACAA,EAAA9gB,EAAAd,SACA0hB,EAAAE,UAAAC,EAAAD,YACAD,EAAAD,EAAAJ,KAAAxgB,GACAihB,EAAAF,EAAAP,KAAAxgB,GACA,MAAA6gB,IAGAA,EAAA,GAAA3hB,OAAA+hB,EAAA,GAAA/hB,QACA0D,EAAAie,EACAF,EAAAK,EAAAR,KAAA5d,EAAA,QAGA+d,GADA/d,EAAAqe,GACA,GAEAnhB,GAAAP,GAAAqD,EAAAse,MAAAte,EAAAse,MAAAte,EAAA,GAAA1D,OAAA,OAAAkC,EAAA7B,EAAA,GAEAmhB,GADAD,EAAAjiB,EAAAuB,8BAAA4gB,EAAA5e,KAAAuZ,UAAAqF,KACAhe,SACAuB,EAAAuc,EAAArgB,QACAH,EAAAd,MACAgD,QAAA,SACArC,IACAsB,IACAgB,MAAAQ,EAAA,GACA+d,aACAzc,eACAwc,eACAvc,aAAAvB,EAAA,GAAA1D,OAAAyhB,EAAAzhB,SAEA4hB,EAAA1f,EAAA,EAEA,OAAAnB,GAEAkhB,UAAA,EACA/D,eAAA,SAAApd,GACA,IAAAohB,EAAAthB,EAAAsB,EAAA7C,EAAA8iB,EAAAriB,EAAAO,EAAA6U,EAAAlT,EACA,OAAAlB,EAAAd,OACA,SAqCA,IAnCAgC,EAAA,SAAAQ,GACA,gBAAA5B,EAAAsB,EAAAggB,GACA,IAAA7hB,EAAA+hB,EAAAC,EAAAnf,EACA,IAAAhB,EAAAtB,EAAA,OAAAL,KAAA2F,IAAAgc,KACA,GAAA7hB,EAAAE,KAAA2F,IAAAgc,KAAA7hB,GAAAmC,EAAAyf,UAeA,OAdA/e,EAAApC,EAAAqC,MAAAvC,GAAAsB,EAAA,QACA,WAAA+P,KAAA/O,IACAkf,EAAA,QACAC,EAAA,IACa,WAAApQ,KAAA/O,IACbkf,EAAA,QACAC,EAAA,IACa,QAAApQ,KAAA/O,IACbkf,EAAA,SACAC,EAAA,KAEAD,EAAA,UACAC,EAAA,IAEAnN,EAAAjV,MACAgD,QAAA,WACArC,IACAsB,IACAgB,MAAApC,EAAAqC,MAAAvC,GAAAsB,EAAA,QACAkgB,gBACAC,iBACAjd,UAAA8c,EAAA,KA1BA,CA+BKrf,MACLqS,KACAtU,EAAA,EACAuhB,EAAA,KACA9iB,EAAAS,EAAA,EAAAO,EAAAS,EAAAd,OAA0C,GAAAK,EAAAP,EAAAO,EAAAP,EAAAO,EAA8BhB,EAAA,GAAAgB,IAAAP,MACxEoiB,EAAAphB,EAAAwhB,WAAAjjB,GAAAyB,EAAAwhB,WAAAjjB,EAAA,GACA,MAAA8iB,IACAA,EAAAD,GAEAA,IAAAC,IAIAngB,EAAApB,EADAsB,EAAA7C,EAAA,EACA8iB,GACAvhB,EAAAsB,EACAigB,EAAAD,GAGA,OADAlgB,EAAApB,EAAAE,EAAAd,OAAA,EAAAmiB,GACAjN,GAEA/O,YAAA,SAAArF,EAAAyhB,GACA,IAAAxhB,EAAAsD,EAAAme,EAAAtf,EAKA,IAAAuQ,KAJA,MAAA8O,IACAA,EAAA3F,GAEA7b,KACAwhB,EAGA,KAFAle,EAAAke,EAAA9O,IACAmO,UAAA,EACAY,EAAAne,EAAAid,KAAAxgB,IACAoC,EAAAsf,EAAA,GACAzhB,EAAAd,MACAgD,QAAA,QACAC,QACAtC,EAAA4hB,EAAAR,MACA9f,EAAAsgB,EAAAR,MAAAQ,EAAA,GAAAxiB,OAAA,EACAiG,WAAAwN,EACAtN,YAAAqc,IAIA,OAAA3f,KAAA6a,OAAA3c,IAEAod,WAAA,SAAArd,GACA,IAAA2hB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAjiB,EAAAsB,EAAA7C,EAAA8B,EAAAC,EAAAC,EAAAN,EAAA+hB,EAAAC,EAAAC,EAAAC,EAAAnjB,EAAAua,EAAAzY,EAAAxB,EAAAC,EAAAwB,EAAAkF,EAAAC,EAAAkc,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAf,EAAAvb,EAAAE,EAAAjE,EAIA,IAHAnC,KACA+hB,EAAA,YACAC,EAAA,+CACAniB,EAAAd,EAAA,EAAAO,EAAAS,EAAAd,OAAA,EAA8C,GAAAK,EAAAP,GAAAO,EAAAP,GAAAO,EAAgCO,EAAA,GAAAP,IAAAP,MAC9E,IAAAoC,EAAAmY,EAAAxY,EAAAjB,EAAA,EAAAmG,EAAAnG,EAAA,GAA8CiB,GAAAkF,EAAAsT,GAAAtT,EAAAsT,GAAAtT,MAC9C7E,GAAApB,EAAAd,QADoFkC,EAAAL,GAAAkF,IAAAsT,MAKpF,GADAnX,EAAApC,EAAAqC,MAAAvC,GAAAsB,EAAA,QACA4gB,EAAAxB,KAAApe,GAAA,CAKA,IAFAyf,KAEA/gB,EAAA,EAAAR,GADA4F,EAAAwV,EAAAtZ,EAAAlD,SACAA,OAAuC4B,EAAAR,EAAUQ,IACjDvC,GAAA6jB,EAAAlc,EAAApF,IAAA,GAAAT,EAAA+hB,EAAA,GAEA,OADAL,EAAAhgB,KAAA2gB,iBAAAxgB,SAAAE,EAAAC,MAAA,EAAA9D,IAAA2D,SAAAE,EAAAC,MAAA9D,EAAA8B,IAAA6B,SAAAE,EAAAC,MAAAhC,QAEAwhB,EAAA1iB,KAAA4iB,GAGA,GAAAF,EAAA3iB,OAAA,GASA,IANAyiB,EAAAE,EAAA,GAIAM,GAHAD,EAAA,SAAAN,GACA,OAAAniB,KAAA2F,IAAAwc,EAAAtc,KAAA9G,EAAAgG,kBAEAqd,EAAA,IAEAviB,EAAA,EAAAiB,GADA8hB,EAAAR,EAAAxf,MAAA,IACAnD,OAAuCI,EAAAiB,EAAUjB,KAEjDwiB,EAAAI,EADAN,EAAAS,EAAA/iB,KAEA6iB,IACAR,GAAAW,GAAAV,EAAAE,IAAA,GAAAK,EAAAG,EAAA,IAGAriB,EAAAd,MACAgD,QAAA,OACAC,QACAtC,IACAsB,IACAmE,UAAA,GACAD,KAAAqc,EAAArc,KACAqd,MAAAhB,EAAAgB,MACAC,IAAAjB,EAAAiB,OAIA,IAAA9iB,EAAAqG,EAAA,EAAAoc,EAAAviB,EAAAd,OAAA,EAA+C,GAAAqjB,EAAApc,GAAAoc,EAAApc,GAAAoc,EAAmCziB,EAAA,GAAAyiB,IAAApc,MAClF,IAAA/E,EAAAiF,EAAAmc,EAAA1iB,EAAA,EAAA2iB,EAAA3iB,EAAA,GAA8C0iB,GAAAC,EAAApc,GAAAoc,EAAApc,GAAAoc,MAC9CrhB,GAAApB,EAAAd,QADoFkC,EAAAohB,GAAAC,IAAApc,MAIpFjE,EAAApC,EAAAqC,MAAAvC,GAAAsB,EAAA,QAEA,OADAsgB,EAAAO,EAAAzB,KAAApe,KAKA,OADA2f,EAAAhgB,KAAA2gB,iBAAAxgB,SAAAwf,EAAA,IAAAxf,SAAAwf,EAAA,IAAAxf,SAAAwf,EAAA,QAIAzhB,EAAAd,MACAgD,QAAA,OACAC,QACAtC,IACAsB,IACAmE,UAAAmc,EAAA,GACApc,KAAAyc,EAAAzc,KACAqd,MAAAZ,EAAAY,MACAC,IAAAb,EAAAa,MAIA,OAAA7gB,KAAA6a,OAAA3c,EAAA2f,OAAA,SAAAhd,GACA,IAAAigB,EAAAC,EAAAC,EAAA/hB,EAEA,IADA6hB,GAAA,EACA7hB,EAAA,EAAA8hB,EAAA7iB,EAAAf,OAAwC8B,EAAA8hB,EAAU9hB,IAElD,GAAA4B,KADAmgB,EAAA9iB,EAAAe,KAIA+hB,EAAAjjB,GAAA8C,EAAA9C,GAAAijB,EAAA3hB,GAAAwB,EAAAxB,EAAA,CACAyhB,GAAA,EACA,MAGA,OAAAA,MAGAH,gBAAA,SAAAM,GACA,IAAAC,EAAAC,EAAA5iB,EAAAC,EAAAuiB,EAAA9jB,EAAAmkB,EAAAC,EAAA7J,EAAA8J,EAAAviB,EAAAvB,EAAAwB,EAAAuiB,EAAAC,EAAA7J,EACA,KAAAsJ,EAAA,OAAAA,EAAA,QAMA,IAHAG,EAAA,EACAC,EAAA,EACAG,EAAA,EACAvkB,EAAA,EAAAsB,EAAA0iB,EAAA9jB,OAAmCF,EAAAsB,EAAUtB,IAAA,CAE7C,OADAkkB,EAAAF,EAAAhkB,KACAkkB,EAxjBA,KAwjBAA,EA1jBA,KA2jBA,OAEAA,EAAA,KACAE,GAAA,GAEAF,EAAA,KACAC,GAAA,GAEAD,GAAA,IACAK,GAAA,GAGA,KAAAH,GAAA,OAAAD,GAAAI,GAAA,IAIA,IAAAhK,EAAA,EAAAhZ,GADA8iB,IAAAL,EAAA,GAAAA,EAAA3gB,MAAA,OAAA2gB,EAAA,GAAAA,EAAA3gB,MAAA,QACAnD,OAAmDqa,EAAAhZ,EAAUgZ,IAE7D,GADAG,GAAAna,EAAA8jB,EAAA9J,IAAA,GAAA+J,EAAA/jB,EAAA,GA1kBA,KA2kBAma,MA7kBA,KA+kBA,cADAuJ,EAAAlhB,KAAAyhB,eAAAF,KAGAhe,KAAAoU,EACAiJ,MAAAM,EAAAN,MACAC,IAAAK,EAAAL,UAGA,EAIA,IAAA9hB,EAAA,EAAAgiB,EAAAO,EAAAnkB,OAAmD4B,EAAAgiB,EAAUhiB,IAG7D,GAFA4Y,GAAA3Y,EAAAsiB,EAAAviB,IAAA,GAAAwiB,EAAAviB,EAAA,GAEA,OADAkiB,EAAAlhB,KAAAyhB,eAAAF,IAGA,OACAhe,KAFAoU,EAAA3X,KAAA0hB,uBAAA/J,GAGAiJ,MAAAM,EAAAN,MACAC,IAAAK,EAAAL,QAKAY,eAAA,SAAAR,GACA,IAAA3jB,EAAAiB,EAAAE,EAAAxB,EAAAO,EAAAwB,EAEA,IAAA/B,EAAA,EAAAsB,GADAf,GAAAyjB,IAAA3gB,QAAAub,YACA1e,OAAkCF,EAAAsB,EAAUtB,IAE5C,GADAK,GAAA0B,EAAAxB,EAAAP,IAAA,GAAAwB,EAAAO,EAAA,GACA,GAAA1B,MAAA,OAAAmB,MAAA,GACA,OACAoiB,IAAAvjB,EACAsjB,MAAAniB,IAKAijB,uBAAA,SAAAne,GACA,OAAAA,EAAA,GACAA,EACKA,EAAA,GACLA,EAAA,KAEAA,EAAA,MAKAuC,EAAAC,QAAA0S,qBCprBA,IAAAwB,EAEAA,GACA0H,UAAA,gy4OAAi0jEpc,MAAA,KACj0jEqc,kBAAA,yh9QAAArc,MAAA,KACAsc,aAAA,sl0BAAAtc,MAAA,KACAuc,SAAA,4y0EAAAvc,MAAA,KACAwc,eAAA,o8gKAAAxc,MAAA,KACAyc,WAAA,2gNAAAzc,MAAA,MAGAO,EAAAC,QAAAkU,qBCXA,IAAAtB,EAEAA,GACAc,sBAAA,SAAApb,GACA,IAAA4jB,EAAAC,EAAAC,EAAAC,EAQA,IAAAD,KADAF,KANAC,GACAG,+BAAAhkB,GAAA,UACAikB,mCAAAjkB,EAAA,GACAkkB,oCAAAlkB,EAAA,IACAmkB,qCAAAnkB,EAAA,MAIA+jB,EAAAF,EAAAC,GACAF,EAAAE,GAAAniB,KAAAyiB,aAAAL,GAEA,OACAF,sBACAD,sBACA9V,MAAAnM,KAAA0iB,iBAAArkB,KAGAqkB,iBAAA,SAAArkB,GAGA,OADA,EACAA,EAAA,KACA,EACKA,EAAA,IAHL,EAIA,EACKA,EAAA,IALL,EAMA,EACKA,EAAA,KAPL,EAQA,EAEA,GAGAokB,aAAA,SAAAL,GACA,IAAAO,EAAAC,EAAAC,EAAArlB,EAAA+F,EAWA,OAVA,GACAuf,KACAC,MACAlC,QACAtd,EAAAqd,SACArd,SACAsf,GAAArlB,EAAA4kB,EAAA,8BAAAA,EANA,IAMAO,EAAAjlB,KAAAslB,MAAAZ,GAAAO,EAAA,WAAAP,EALAU,MAKAH,EAAAjlB,KAAAslB,MAAAZ,EANA,IAMAO,EAAA,WAAAP,EAJAW,OAIAJ,EAAAjlB,KAAAslB,MAAAZ,EALAU,MAKAH,EAAA,SAAAP,EAHAvB,SAGA8B,EAAAjlB,KAAAslB,MAAAZ,EAJAW,OAIAJ,EAAA,QAAAP,EAAA7e,GAAAof,EAAAjlB,KAAAslB,MAAAZ,EAHAvB,SAGA8B,EAAA,UAAAP,EADA7e,UACAof,EAAAjlB,KAAAslB,MAAAZ,EAAA7e,GAAAof,EAAA,gCACA,OADAC,EAAAplB,EAAA,KACA,IAAAolB,IACAC,GAAA,KAEAA,IAIA/c,EAAAC,QAAA4S,uBCrDA,IAAA/L,EAAAnQ,EAEAA,EAAUC,EAAQ,KAElBkQ,GACAqW,kBACAlW,QAAA,GACAJ,aAAA,8FAEA+M,aAAA,SAAAvN,EAAAvL,GACA,IAAAsiB,EAAAnlB,EAAAf,EAAAmmB,EAAAtiB,EAAArD,EACA,OAAAoD,EAAAzD,OACA,OAAA6C,KAAAijB,iBAEA,GAAA9W,EAAA,EACA,OACAY,QAAA,GACAJ,gBAKA,IAFAwW,EAAAviB,EAAA,GAEA7C,EAAA,EAAAf,GADAQ,EAAAoD,EAAAN,MAAA,IACAnD,OAAiCY,EAAAf,EAASe,KAC1C8C,EAAArD,EAAAO,IACAsC,MAAAlD,OAAAgmB,EAAA9iB,MAAAlD,SACAgmB,EAAAtiB,GAgBA,OAZAqiB,EAAA,sDACA,OAFAtW,EAAA5M,KAAAojB,mBAAAD,EAAA,IAAAviB,EAAAzD,UAGAyP,EAAAD,YAAAjM,QAAAwiB,GACA,MAAAtW,EAAAG,UACAH,EAAAG,QAAA,KAGAH,GACAG,QAAA,GACAJ,aAAAuW,IAGAtW,GAEAwW,mBAAA,SAAAviB,EAAAwiB,GAEA,OAAAxiB,EAAAT,SACA,iBACA,OAAAJ,KAAAsjB,8BAAAziB,EAAAwiB,GACA,cAGA,OAFAxiB,EAAAlE,MAAA4mB,eAGAxW,QAFA,IAAAlM,EAAA0D,MAAA,sFAGAoI,aAAA,kDAEA,aAEA,OACAI,QAFA,IAAAlM,EAAA+d,WAAAzhB,OAAA,+GAGAwP,aAAA,wCAEA,eACA,OACAI,QAAA,+CACAJ,aAAA,oBAEA,YACA,mBAAA9L,EAAAuC,WACA,OACA2J,QAAA,iCACAJ,aAAA,kEAGA,MACA,WACA,OACAI,QAAA,gCACAJ,aAAA,yDAIA2W,8BAAA,SAAAziB,EAAAwiB,GACA,IAAA7lB,EAAAmP,EAAAI,EAAA1H,EAmBA,OAlBA0H,EAAA,cAAAlM,EAAA2a,iBAAA6H,GAAAxiB,EAAA+E,MAAA/E,EAAAiE,SAAAjE,EAAAF,eAAA,uDAAAE,EAAA8D,MAAA,sCAAA9D,EAAA8D,MAAA,+FAAA9D,EAAA2a,gBAAA6H,EAAA,yDAAA7lB,EAAAqD,EAAA2a,kBAAA,eAAAhe,GAAA,iBAAAA,EAAA6lB,EAAA,sGACA1W,MACAtH,EAAAxE,EAAAR,OACAQ,MAAApE,EAAAsI,aACA4H,EAAAvP,KAAA,yCACKiI,EAAAxE,MAAApE,EAAAwI,YAAAI,EAAAC,gBAAAD,GACLsH,EAAAvP,KAAA,6DAEAyD,EAAAiE,UAAAjE,EAAAR,MAAAlD,QAAA,GACAwP,EAAAvP,KAAA,8CAEAyD,EAAA+E,MACA+G,EAAAvP,KAAA,2EAGA2P,UACAJ,iBAMA7G,EAAAC,QAAA6G","file":"bundles/c2932262ed6106cd4535/1.js","sourcesContent":["// Generated by CoffeeScript 1.10.0\nvar BRUTEFORCE_CARDINALITY, MIN_GUESSES_BEFORE_GROWING_SEQUENCE, MIN_SUBMATCH_GUESSES_MULTI_CHAR, MIN_SUBMATCH_GUESSES_SINGLE_CHAR, adjacency_graphs, calc_average_degree, k, scoring, v;\n\nadjacency_graphs = require('./adjacency_graphs');\n\ncalc_average_degree = function(graph) {\n var average, k, key, n, neighbors, v;\n average = 0;\n for (key in graph) {\n neighbors = graph[key];\n average += ((function() {\n var len, o, results;\n results = [];\n for (o = 0, len = neighbors.length; o < len; o++) {\n n = neighbors[o];\n if (n) {\n results.push(n);\n }\n }\n return results;\n })()).length;\n }\n average /= ((function() {\n var results;\n results = [];\n for (k in graph) {\n v = graph[k];\n results.push(k);\n }\n return results;\n })()).length;\n return average;\n};\n\nBRUTEFORCE_CARDINALITY = 10;\n\nMIN_GUESSES_BEFORE_GROWING_SEQUENCE = 10000;\n\nMIN_SUBMATCH_GUESSES_SINGLE_CHAR = 10;\n\nMIN_SUBMATCH_GUESSES_MULTI_CHAR = 50;\n\nscoring = {\n nCk: function(n, k) {\n var d, o, r, ref;\n if (k > n) {\n return 0;\n }\n if (k === 0) {\n return 1;\n }\n r = 1;\n for (d = o = 1, ref = k; 1 <= ref ? o <= ref : o >= ref; d = 1 <= ref ? ++o : --o) {\n r *= n;\n r /= d;\n n -= 1;\n }\n return r;\n },\n log10: function(n) {\n return Math.log(n) / Math.log(10);\n },\n log2: function(n) {\n return Math.log(n) / Math.log(2);\n },\n factorial: function(n) {\n var f, i, o, ref;\n if (n < 2) {\n return 1;\n }\n f = 1;\n for (i = o = 2, ref = n; 2 <= ref ? o <= ref : o >= ref; i = 2 <= ref ? ++o : --o) {\n f *= i;\n }\n return f;\n },\n most_guessable_match_sequence: function(password, matches, _exclude_additive) {\n var _, bruteforce_update, guesses, k, l, len, len1, len2, lst, m, make_bruteforce_match, matches_by_j, n, o, optimal, optimal_l, optimal_match_sequence, q, ref, ref1, u, unwind, update, w;\n if (_exclude_additive == null) {\n _exclude_additive = false;\n }\n n = password.length;\n matches_by_j = (function() {\n var o, ref, results;\n results = [];\n for (_ = o = 0, ref = n; 0 <= ref ? o < ref : o > ref; _ = 0 <= ref ? ++o : --o) {\n results.push([]);\n }\n return results;\n })();\n for (o = 0, len = matches.length; o < len; o++) {\n m = matches[o];\n matches_by_j[m.j].push(m);\n }\n for (q = 0, len1 = matches_by_j.length; q < len1; q++) {\n lst = matches_by_j[q];\n lst.sort(function(m1, m2) {\n return m1.i - m2.i;\n });\n }\n optimal = {\n m: (function() {\n var ref, results, u;\n results = [];\n for (_ = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; _ = 0 <= ref ? ++u : --u) {\n results.push({});\n }\n return results;\n })(),\n pi: (function() {\n var ref, results, u;\n results = [];\n for (_ = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; _ = 0 <= ref ? ++u : --u) {\n results.push({});\n }\n return results;\n })(),\n g: (function() {\n var ref, results, u;\n results = [];\n for (_ = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; _ = 0 <= ref ? ++u : --u) {\n results.push({});\n }\n return results;\n })()\n };\n update = (function(_this) {\n return function(m, l) {\n var competing_g, competing_l, g, k, pi, ref;\n k = m.j;\n pi = _this.estimate_guesses(m, password);\n if (l > 1) {\n pi *= optimal.pi[m.i - 1][l - 1];\n }\n g = _this.factorial(l) * pi;\n if (!_exclude_additive) {\n g += Math.pow(MIN_GUESSES_BEFORE_GROWING_SEQUENCE, l - 1);\n }\n ref = optimal.g[k];\n for (competing_l in ref) {\n competing_g = ref[competing_l];\n if (competing_l > l) {\n continue;\n }\n if (competing_g <= g) {\n return;\n }\n }\n optimal.g[k][l] = g;\n optimal.m[k][l] = m;\n return optimal.pi[k][l] = pi;\n };\n })(this);\n bruteforce_update = (function(_this) {\n return function(k) {\n var i, l, last_m, ref, results, u;\n m = make_bruteforce_match(0, k);\n update(m, 1);\n results = [];\n for (i = u = 1, ref = k; 1 <= ref ? u <= ref : u >= ref; i = 1 <= ref ? ++u : --u) {\n m = make_bruteforce_match(i, k);\n results.push((function() {\n var ref1, results1;\n ref1 = optimal.m[i - 1];\n results1 = [];\n for (l in ref1) {\n last_m = ref1[l];\n l = parseInt(l);\n if (last_m.pattern === 'bruteforce') {\n continue;\n }\n results1.push(update(m, l + 1));\n }\n return results1;\n })());\n }\n return results;\n };\n })(this);\n make_bruteforce_match = (function(_this) {\n return function(i, j) {\n return {\n pattern: 'bruteforce',\n token: password.slice(i, +j + 1 || 9e9),\n i: i,\n j: j\n };\n };\n })(this);\n unwind = (function(_this) {\n return function(n) {\n var candidate_g, candidate_l, g, k, l, optimal_match_sequence, ref;\n optimal_match_sequence = [];\n k = n - 1;\n l = void 0;\n g = Infinity;\n ref = optimal.g[k];\n for (candidate_l in ref) {\n candidate_g = ref[candidate_l];\n if (candidate_g < g) {\n l = candidate_l;\n g = candidate_g;\n }\n }\n while (k >= 0) {\n m = optimal.m[k][l];\n optimal_match_sequence.unshift(m);\n k = m.i - 1;\n l--;\n }\n return optimal_match_sequence;\n };\n })(this);\n for (k = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; k = 0 <= ref ? ++u : --u) {\n ref1 = matches_by_j[k];\n for (w = 0, len2 = ref1.length; w < len2; w++) {\n m = ref1[w];\n if (m.i > 0) {\n for (l in optimal.m[m.i - 1]) {\n l = parseInt(l);\n update(m, l + 1);\n }\n } else {\n update(m, 1);\n }\n }\n bruteforce_update(k);\n }\n optimal_match_sequence = unwind(n);\n optimal_l = optimal_match_sequence.length;\n if (password.length === 0) {\n guesses = 1;\n } else {\n guesses = optimal.g[n - 1][optimal_l];\n }\n return {\n password: password,\n guesses: guesses,\n guesses_log10: this.log10(guesses),\n sequence: optimal_match_sequence\n };\n },\n estimate_guesses: function(match, password) {\n var estimation_functions, guesses, min_guesses;\n if (match.guesses != null) {\n return match.guesses;\n }\n min_guesses = 1;\n if (match.token.length < password.length) {\n min_guesses = match.token.length === 1 ? MIN_SUBMATCH_GUESSES_SINGLE_CHAR : MIN_SUBMATCH_GUESSES_MULTI_CHAR;\n }\n estimation_functions = {\n bruteforce: this.bruteforce_guesses,\n dictionary: this.dictionary_guesses,\n spatial: this.spatial_guesses,\n repeat: this.repeat_guesses,\n sequence: this.sequence_guesses,\n regex: this.regex_guesses,\n date: this.date_guesses\n };\n guesses = estimation_functions[match.pattern].call(this, match);\n match.guesses = Math.max(guesses, min_guesses);\n match.guesses_log10 = this.log10(match.guesses);\n return match.guesses;\n },\n bruteforce_guesses: function(match) {\n var guesses, min_guesses;\n guesses = Math.pow(BRUTEFORCE_CARDINALITY, match.token.length);\n if (guesses === Number.POSITIVE_INFINITY) {\n guesses = Number.MAX_VALUE;\n }\n min_guesses = match.token.length === 1 ? MIN_SUBMATCH_GUESSES_SINGLE_CHAR + 1 : MIN_SUBMATCH_GUESSES_MULTI_CHAR + 1;\n return Math.max(guesses, min_guesses);\n },\n repeat_guesses: function(match) {\n return match.base_guesses * match.repeat_count;\n },\n sequence_guesses: function(match) {\n var base_guesses, first_chr;\n first_chr = match.token.charAt(0);\n if (first_chr === 'a' || first_chr === 'A' || first_chr === 'z' || first_chr === 'Z' || first_chr === '0' || first_chr === '1' || first_chr === '9') {\n base_guesses = 4;\n } else {\n if (first_chr.match(/\\d/)) {\n base_guesses = 10;\n } else {\n base_guesses = 26;\n }\n }\n if (!match.ascending) {\n base_guesses *= 2;\n }\n return base_guesses * match.token.length;\n },\n MIN_YEAR_SPACE: 20,\n REFERENCE_YEAR: new Date().getFullYear(),\n regex_guesses: function(match) {\n var char_class_bases, year_space;\n char_class_bases = {\n alpha_lower: 26,\n alpha_upper: 26,\n alpha: 52,\n alphanumeric: 62,\n digits: 10,\n symbols: 33\n };\n if (match.regex_name in char_class_bases) {\n return Math.pow(char_class_bases[match.regex_name], match.token.length);\n } else {\n switch (match.regex_name) {\n case 'recent_year':\n year_space = Math.abs(parseInt(match.regex_match[0]) - this.REFERENCE_YEAR);\n year_space = Math.max(year_space, this.MIN_YEAR_SPACE);\n return year_space;\n }\n }\n },\n date_guesses: function(match) {\n var guesses, year_space;\n year_space = Math.max(Math.abs(match.year - this.REFERENCE_YEAR), this.MIN_YEAR_SPACE);\n guesses = year_space * 365;\n if (match.separator) {\n guesses *= 4;\n }\n return guesses;\n },\n KEYBOARD_AVERAGE_DEGREE: calc_average_degree(adjacency_graphs.qwerty),\n KEYPAD_AVERAGE_DEGREE: calc_average_degree(adjacency_graphs.keypad),\n KEYBOARD_STARTING_POSITIONS: ((function() {\n var ref, results;\n ref = adjacency_graphs.qwerty;\n results = [];\n for (k in ref) {\n v = ref[k];\n results.push(k);\n }\n return results;\n })()).length,\n KEYPAD_STARTING_POSITIONS: ((function() {\n var ref, results;\n ref = adjacency_graphs.keypad;\n results = [];\n for (k in ref) {\n v = ref[k];\n results.push(k);\n }\n return results;\n })()).length,\n spatial_guesses: function(match) {\n var L, S, U, d, guesses, i, j, o, possible_turns, q, ref, ref1, ref2, ref3, s, shifted_variations, t, u;\n if ((ref = match.graph) === 'qwerty' || ref === 'dvorak') {\n s = this.KEYBOARD_STARTING_POSITIONS;\n d = this.KEYBOARD_AVERAGE_DEGREE;\n } else {\n s = this.KEYPAD_STARTING_POSITIONS;\n d = this.KEYPAD_AVERAGE_DEGREE;\n }\n guesses = 0;\n L = match.token.length;\n t = match.turns;\n for (i = o = 2, ref1 = L; 2 <= ref1 ? o <= ref1 : o >= ref1; i = 2 <= ref1 ? ++o : --o) {\n possible_turns = Math.min(t, i - 1);\n for (j = q = 1, ref2 = possible_turns; 1 <= ref2 ? q <= ref2 : q >= ref2; j = 1 <= ref2 ? ++q : --q) {\n guesses += this.nCk(i - 1, j - 1) * s * Math.pow(d, j);\n }\n }\n if (match.shifted_count) {\n S = match.shifted_count;\n U = match.token.length - match.shifted_count;\n if (S === 0 || U === 0) {\n guesses *= 2;\n } else {\n shifted_variations = 0;\n for (i = u = 1, ref3 = Math.min(S, U); 1 <= ref3 ? u <= ref3 : u >= ref3; i = 1 <= ref3 ? ++u : --u) {\n shifted_variations += this.nCk(S + U, i);\n }\n guesses *= shifted_variations;\n }\n }\n return guesses;\n },\n dictionary_guesses: function(match) {\n var reversed_variations;\n match.base_guesses = match.rank;\n match.uppercase_variations = this.uppercase_variations(match);\n match.l33t_variations = this.l33t_variations(match);\n reversed_variations = match.reversed && 2 || 1;\n return match.base_guesses * match.uppercase_variations * match.l33t_variations * reversed_variations;\n },\n START_UPPER: /^[A-Z][^A-Z]+$/,\n END_UPPER: /^[^A-Z]+[A-Z]$/,\n ALL_UPPER: /^[^a-z]+$/,\n ALL_LOWER: /^[^A-Z]+$/,\n uppercase_variations: function(match) {\n var L, U, chr, i, len, o, q, ref, ref1, regex, variations, word;\n word = match.token;\n if (word.match(this.ALL_LOWER) || word.toLowerCase() === word) {\n return 1;\n }\n ref = [this.START_UPPER, this.END_UPPER, this.ALL_UPPER];\n for (o = 0, len = ref.length; o < len; o++) {\n regex = ref[o];\n if (word.match(regex)) {\n return 2;\n }\n }\n U = ((function() {\n var len1, q, ref1, results;\n ref1 = word.split('');\n results = [];\n for (q = 0, len1 = ref1.length; q < len1; q++) {\n chr = ref1[q];\n if (chr.match(/[A-Z]/)) {\n results.push(chr);\n }\n }\n return results;\n })()).length;\n L = ((function() {\n var len1, q, ref1, results;\n ref1 = word.split('');\n results = [];\n for (q = 0, len1 = ref1.length; q < len1; q++) {\n chr = ref1[q];\n if (chr.match(/[a-z]/)) {\n results.push(chr);\n }\n }\n return results;\n })()).length;\n variations = 0;\n for (i = q = 1, ref1 = Math.min(U, L); 1 <= ref1 ? q <= ref1 : q >= ref1; i = 1 <= ref1 ? ++q : --q) {\n variations += this.nCk(U + L, i);\n }\n return variations;\n },\n l33t_variations: function(match) {\n var S, U, chr, chrs, i, o, p, possibilities, ref, ref1, subbed, unsubbed, variations;\n if (!match.l33t) {\n return 1;\n }\n variations = 1;\n ref = match.sub;\n for (subbed in ref) {\n unsubbed = ref[subbed];\n chrs = match.token.toLowerCase().split('');\n S = ((function() {\n var len, o, results;\n results = [];\n for (o = 0, len = chrs.length; o < len; o++) {\n chr = chrs[o];\n if (chr === subbed) {\n results.push(chr);\n }\n }\n return results;\n })()).length;\n U = ((function() {\n var len, o, results;\n results = [];\n for (o = 0, len = chrs.length; o < len; o++) {\n chr = chrs[o];\n if (chr === unsubbed) {\n results.push(chr);\n }\n }\n return results;\n })()).length;\n if (S === 0 || U === 0) {\n variations *= 2;\n } else {\n p = Math.min(U, S);\n possibilities = 0;\n for (i = o = 1, ref1 = p; 1 <= ref1 ? o <= ref1 : o >= ref1; i = 1 <= ref1 ? ++o : --o) {\n possibilities += this.nCk(U + S, i);\n }\n variations *= possibilities;\n }\n }\n return variations;\n }\n};\n\nmodule.exports = scoring;\n\n//# sourceMappingURL=scoring.js.map\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _PasswordScorer = require('../../../../utils/PasswordScorer');\n\nvar _fileSaver = require('file-saver');\n\nvar _fileSaver2 = _interopRequireDefault(_fileSaver);\n\nvar _languageHandler = require('../../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar PHASE_PASSPHRASE = 0;\nvar PHASE_PASSPHRASE_CONFIRM = 1;\nvar PHASE_SHOWKEY = 2;\nvar PHASE_KEEPITSAFE = 3;\nvar PHASE_BACKINGUP = 4;\nvar PHASE_DONE = 5;\nvar PHASE_OPTOUT_CONFIRM = 6;\n\nvar PASSWORD_MIN_SCORE = 4; // So secure, many characters, much complex, wow, etc, etc.\n\n// XXX: copied from ShareDialog: factor out into utils\nfunction selectText(target) {\n var range = document.createRange();\n range.selectNodeContents(target);\n\n var selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n}\n\n/**\n * Walks the user through the process of creating an e2e key backup\n * on the server.\n */\nexports.default = _react2.default.createClass({\n displayName: 'CreateKeyBackupDialog',\n\n getInitialState: function getInitialState() {\n return {\n phase: PHASE_PASSPHRASE,\n passPhrase: '',\n passPhraseConfirm: '',\n copied: false,\n downloaded: false,\n zxcvbnResult: null,\n setPassPhrase: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._recoveryKeyNode = null;\n this._keyBackupInfo = null;\n },\n\n _collectRecoveryKeyNode: function _collectRecoveryKeyNode(n) {\n this._recoveryKeyNode = n;\n },\n\n _onCopyClick: function _onCopyClick() {\n selectText(this._recoveryKeyNode);\n var successful = document.execCommand('copy');\n if (successful) {\n this.setState({\n copied: true,\n phase: PHASE_KEEPITSAFE\n });\n }\n },\n\n _onDownloadClick: function _onDownloadClick() {\n var blob = new Blob([this._keyBackupInfo.recovery_key], {\n type: 'text/plain;charset=us-ascii'\n });\n _fileSaver2.default.saveAs(blob, 'recovery-key.txt');\n\n this.setState({\n downloaded: true,\n phase: PHASE_KEEPITSAFE\n });\n },\n\n _createBackup: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var info;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.setState({\n phase: PHASE_BACKINGUP,\n error: null\n });\n info = void 0;\n _context.prev = 2;\n _context.next = 5;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().createKeyBackupVersion(this._keyBackupInfo));\n\n case 5:\n info = _context.sent;\n _context.next = 8;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().backupAllGroupSessions(info.version));\n\n case 8:\n this.setState({\n phase: PHASE_DONE\n });\n _context.next = 16;\n break;\n\n case 11:\n _context.prev = 11;\n _context.t0 = _context['catch'](2);\n\n console.log(\"Error creating key backup\", _context.t0);\n // TODO: If creating a version succeeds, but backup fails, should we\n // delete the version, disable backup, or do nothing? If we just\n // disable without deleting, we'll enable on next app reload since\n // it is trusted.\n if (info) {\n _MatrixClientPeg2.default.get().deleteKeyBackupVersion(info.version);\n }\n this.setState({\n error: _context.t0\n });\n\n case 16:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[2, 11]]);\n }));\n\n function _createBackup() {\n return _ref.apply(this, arguments);\n }\n\n return _createBackup;\n }(),\n\n _onCancel: function _onCancel() {\n this.props.onFinished(false);\n },\n\n _onDone: function _onDone() {\n this.props.onFinished(true);\n },\n\n _onOptOutClick: function _onOptOutClick() {\n this.setState({ phase: PHASE_OPTOUT_CONFIRM });\n },\n\n _onSetUpClick: function _onSetUpClick() {\n this.setState({ phase: PHASE_PASSPHRASE });\n },\n\n _onSkipPassPhraseClick: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().prepareKeyBackupVersion());\n\n case 2:\n this._keyBackupInfo = _context2.sent;\n\n this.setState({\n copied: false,\n downloaded: false,\n phase: PHASE_SHOWKEY\n });\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function _onSkipPassPhraseClick() {\n return _ref2.apply(this, arguments);\n }\n\n return _onSkipPassPhraseClick;\n }(),\n\n _onPassPhraseNextClick: function _onPassPhraseNextClick() {\n this.setState({ phase: PHASE_PASSPHRASE_CONFIRM });\n },\n\n _onPassPhraseKeyPress: function _onPassPhraseKeyPress(e) {\n if (e.key === 'Enter' && this._passPhraseIsValid()) {\n this._onPassPhraseNextClick();\n }\n },\n\n _onPassPhraseConfirmNextClick: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().prepareKeyBackupVersion(this.state.passPhrase));\n\n case 2:\n this._keyBackupInfo = _context3.sent;\n\n this.setState({\n setPassPhrase: true,\n copied: false,\n downloaded: false,\n phase: PHASE_SHOWKEY\n });\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function _onPassPhraseConfirmNextClick() {\n return _ref3.apply(this, arguments);\n }\n\n return _onPassPhraseConfirmNextClick;\n }(),\n\n _onPassPhraseConfirmKeyPress: function _onPassPhraseConfirmKeyPress(e) {\n if (e.key === 'Enter' && this.state.passPhrase === this.state.passPhraseConfirm) {\n this._onPassPhraseConfirmNextClick();\n }\n },\n\n _onSetAgainClick: function _onSetAgainClick() {\n this.setState({\n passPhrase: '',\n passPhraseConfirm: '',\n phase: PHASE_PASSPHRASE\n });\n },\n\n _onKeepItSafeGotItClick: function _onKeepItSafeGotItClick() {\n this.setState({\n phase: PHASE_SHOWKEY\n });\n },\n\n _onPassPhraseChange: function _onPassPhraseChange(e) {\n this.setState({\n passPhrase: e.target.value,\n // precompute this and keep it in state: zxcvbn is fast but\n // we use it in a couple of different places so no point recomputing\n // it unnecessarily.\n zxcvbnResult: (0, _PasswordScorer.scorePassword)(e.target.value)\n });\n },\n\n _onPassPhraseConfirmChange: function _onPassPhraseConfirmChange(e) {\n this.setState({\n passPhraseConfirm: e.target.value\n });\n },\n\n _passPhraseIsValid: function _passPhraseIsValid() {\n return this.state.zxcvbnResult && this.state.zxcvbnResult.score >= PASSWORD_MIN_SCORE;\n },\n\n _renderPhasePassPhrase: function _renderPhasePassPhrase() {\n var _this = this;\n\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n\n var strengthMeter = void 0;\n var helpText = void 0;\n if (this.state.zxcvbnResult) {\n if (this.state.zxcvbnResult.score >= PASSWORD_MIN_SCORE) {\n helpText = (0, _languageHandler._t)(\"Great! This passphrase looks strong enough.\");\n } else {\n var suggestions = [];\n for (var i = 0; i < this.state.zxcvbnResult.feedback.suggestions.length; ++i) {\n suggestions.push(_react2.default.createElement(\n 'div',\n { key: i },\n this.state.zxcvbnResult.feedback.suggestions[i]\n ));\n }\n var suggestionBlock = suggestions.length > 0 ? _react2.default.createElement(\n 'div',\n null,\n suggestions\n ) : null;\n\n helpText = _react2.default.createElement(\n 'div',\n null,\n this.state.zxcvbnResult.feedback.warning,\n suggestionBlock\n );\n }\n strengthMeter = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('progress', { max: PASSWORD_MIN_SCORE, value: this.state.zxcvbnResult.score })\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Secure your encrypted message history with a Recovery Passphrase.\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"You'll need it if you log out or lose access to this device.\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateKeyBackupDialog_primaryContainer' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateKeyBackupDialog_passPhraseContainer' },\n _react2.default.createElement('input', { type: 'password',\n onChange: this._onPassPhraseChange,\n onKeyPress: this._onPassPhraseKeyPress,\n value: this.state.passPhrase,\n className: 'mx_CreateKeyBackupDialog_passPhraseInput',\n placeholder: (0, _languageHandler._t)(\"Enter a passphrase...\")\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateKeyBackupDialog_passPhraseHelp' },\n strengthMeter,\n helpText\n )\n )\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: (0, _languageHandler._t)('Next'),\n onPrimaryButtonClick: this._onPassPhraseNextClick,\n hasCancel: false,\n disabled: !this._passPhraseIsValid()\n }),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"If you don't want encrypted message history to be available on other devices, \" + \".\", {}, {\n button: function button(sub) {\n return _react2.default.createElement(\n AccessibleButton,\n {\n element: 'span',\n className: 'mx_linkButton',\n onClick: _this._onOptOutClick\n },\n sub\n );\n }\n })\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Or, if you don't want to create a Recovery Passphrase, skip this step and \" + \".\", {}, {\n button: function button(sub) {\n return _react2.default.createElement(\n AccessibleButton,\n {\n element: 'span',\n className: 'mx_linkButton',\n onClick: _this._onSkipPassPhraseClick\n },\n sub\n );\n }\n })\n )\n );\n },\n\n _renderPhasePassPhraseConfirm: function _renderPhasePassPhraseConfirm() {\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n\n var passPhraseMatch = null;\n if (this.state.passPhraseConfirm.length > 0) {\n var matchText = void 0;\n if (this.state.passPhraseConfirm === this.state.passPhrase) {\n matchText = (0, _languageHandler._t)(\"That matches!\");\n } else {\n matchText = (0, _languageHandler._t)(\"That doesn't match.\");\n }\n passPhraseMatch = _react2.default.createElement(\n 'div',\n { className: 'mx_CreateKeyBackupDialog_passPhraseMatch' },\n _react2.default.createElement(\n 'div',\n null,\n matchText\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n AccessibleButton,\n { element: 'span', className: 'mx_linkButton', onClick: this._onSetAgainClick },\n (0, _languageHandler._t)(\"Go back to set it again.\")\n )\n )\n );\n }\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Type in your Recovery Passphrase to confirm you remember it. \" + \"If it helps, add it to your password manager or store it \" + \"somewhere safe.\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateKeyBackupDialog_primaryContainer' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateKeyBackupDialog_passPhraseContainer' },\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { type: 'password',\n onChange: this._onPassPhraseConfirmChange,\n onKeyPress: this._onPassPhraseConfirmKeyPress,\n value: this.state.passPhraseConfirm,\n className: 'mx_CreateKeyBackupDialog_passPhraseInput',\n placeholder: (0, _languageHandler._t)(\"Repeat your passphrase...\"),\n autoFocus: true\n })\n ),\n passPhraseMatch\n )\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: (0, _languageHandler._t)('Next'),\n onPrimaryButtonClick: this._onPassPhraseConfirmNextClick,\n hasCancel: false,\n disabled: this.state.passPhrase !== this.state.passPhraseConfirm\n })\n );\n },\n\n _renderPhaseShowKey: function _renderPhaseShowKey() {\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n\n var bodyText = void 0;\n if (this.state.setPassPhrase) {\n bodyText = (0, _languageHandler._t)(\"As a safety net, you can use it to restore your encrypted message history if you forget your Recovery Passphrase.\");\n } else {\n bodyText = (0, _languageHandler._t)(\"As a safety net, you can use it to restore your encrypted message history.\");\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Make a copy of this Recovery Key and keep it safe.\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n bodyText\n ),\n _react2.default.createElement(\n 'p',\n { className: 'mx_CreateKeyBackupDialog_primaryContainer' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateKeyBackupDialog_recoveryKeyHeader' },\n (0, _languageHandler._t)(\"Your Recovery Key\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateKeyBackupDialog_recoveryKeyContainer' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateKeyBackupDialog_recoveryKey' },\n _react2.default.createElement(\n 'code',\n { ref: this._collectRecoveryKeyNode },\n this._keyBackupInfo.recovery_key\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateKeyBackupDialog_recoveryKeyButtons' },\n _react2.default.createElement(\n 'button',\n { className: 'mx_Dialog_primary', onClick: this._onCopyClick },\n (0, _languageHandler._t)(\"Copy to clipboard\")\n ),\n _react2.default.createElement(\n 'button',\n { className: 'mx_Dialog_primary', onClick: this._onDownloadClick },\n (0, _languageHandler._t)(\"Download\")\n )\n )\n )\n ),\n _react2.default.createElement('br', null),\n _react2.default.createElement(DialogButtons, { primaryButton: (0, _languageHandler._t)(\"I've made a copy\"),\n onPrimaryButtonClick: this._createBackup,\n hasCancel: false,\n disabled: !this.state.copied && !this.state.downloaded\n })\n );\n },\n\n _renderPhaseKeepItSafe: function _renderPhaseKeepItSafe() {\n var introText = void 0;\n if (this.state.copied) {\n introText = (0, _languageHandler._t)(\"Your Recovery Key has been copied to your clipboard, paste it to:\", {}, { b: function b(s) {\n return _react2.default.createElement(\n 'b',\n null,\n s\n );\n } });\n } else if (this.state.downloaded) {\n introText = (0, _languageHandler._t)(\"Your Recovery Key is in your Downloads folder.\", {}, { b: function b(s) {\n return _react2.default.createElement(\n 'b',\n null,\n s\n );\n } });\n }\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n return _react2.default.createElement(\n 'div',\n null,\n introText,\n _react2.default.createElement(\n 'ul',\n null,\n _react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)(\"Print it and store it somewhere safe\", {}, { b: function b(s) {\n return _react2.default.createElement(\n 'b',\n null,\n s\n );\n } })\n ),\n _react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)(\"Save it on a USB key or backup drive\", {}, { b: function b(s) {\n return _react2.default.createElement(\n 'b',\n null,\n s\n );\n } })\n ),\n _react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)(\"Copy it to your personal cloud storage\", {}, { b: function b(s) {\n return _react2.default.createElement(\n 'b',\n null,\n s\n );\n } })\n )\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: (0, _languageHandler._t)(\"Got it\"),\n onPrimaryButtonClick: this._onKeepItSafeGotItClick,\n hasCancel: false\n })\n );\n },\n\n _renderBusyPhase: function _renderBusyPhase(text) {\n var Spinner = _index2.default.getComponent('views.elements.Spinner');\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(text)\n ),\n _react2.default.createElement(Spinner, null)\n );\n },\n\n _renderPhaseDone: function _renderPhaseDone() {\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Backup created\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Your encryption keys are now being backed up to your Homeserver.\")\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: (0, _languageHandler._t)('Close'),\n onPrimaryButtonClick: this._onDone,\n hasCancel: false\n })\n );\n },\n\n _renderPhaseOptOutConfirm: function _renderPhaseOptOutConfirm() {\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n return _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Without setting up Secure Message Recovery, you won't be able to restore your \" + \"encrypted message history if you log out or use another device.\"),\n _react2.default.createElement(\n DialogButtons,\n { primaryButton: (0, _languageHandler._t)('Set up Secure Message Recovery'),\n onPrimaryButtonClick: this._onSetUpClick,\n hasCancel: false\n },\n _react2.default.createElement(\n 'button',\n { onClick: this._onCancel },\n 'I understand, continue without'\n )\n )\n );\n },\n\n _titleForPhase: function _titleForPhase(phase) {\n switch (phase) {\n case PHASE_PASSPHRASE:\n return (0, _languageHandler._t)('Create a Recovery Passphrase');\n case PHASE_PASSPHRASE_CONFIRM:\n return (0, _languageHandler._t)('Confirm Recovery Passphrase');\n case PHASE_OPTOUT_CONFIRM:\n return (0, _languageHandler._t)('Warning!');\n case PHASE_SHOWKEY:\n return (0, _languageHandler._t)('Recovery Key');\n case PHASE_KEEPITSAFE:\n return (0, _languageHandler._t)('Keep it safe');\n case PHASE_BACKINGUP:\n return (0, _languageHandler._t)('Backing up...');\n default:\n return (0, _languageHandler._t)(\"Create Key Backup\");\n }\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n\n var content = void 0;\n if (this.state.error) {\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n content = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Unable to create key backup\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(DialogButtons, { primaryButton: (0, _languageHandler._t)('Retry'),\n onPrimaryButtonClick: this._createBackup,\n hasCancel: true,\n onCancel: this._onCancel\n })\n )\n );\n } else {\n switch (this.state.phase) {\n case PHASE_PASSPHRASE:\n content = this._renderPhasePassPhrase();\n break;\n case PHASE_PASSPHRASE_CONFIRM:\n content = this._renderPhasePassPhraseConfirm();\n break;\n case PHASE_SHOWKEY:\n content = this._renderPhaseShowKey();\n break;\n case PHASE_KEEPITSAFE:\n content = this._renderPhaseKeepItSafe();\n break;\n case PHASE_BACKINGUP:\n content = this._renderBusyPhase((0, _languageHandler._td)(\"Backing up...\"));\n break;\n case PHASE_DONE:\n content = this._renderPhaseDone();\n break;\n case PHASE_OPTOUT_CONFIRM:\n content = this._renderPhaseOptOutConfirm();\n break;\n }\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_CreateKeyBackupDialog',\n onFinished: this.props.onFinished,\n title: this._titleForPhase(this.state.phase),\n hasCancel: [PHASE_DONE].includes(this.state.phase)\n },\n _react2.default.createElement(\n 'div',\n null,\n content\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=CreateKeyBackupDialog.js.map","/* FileSaver.js\n * A saveAs() FileSaver implementation.\n * 1.3.2\n * 2016-06-16 18:25:19\n *\n * By Eli Grey, http://eligrey.com\n * License: MIT\n * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n */\n\n/*global self */\n/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */\n\n/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */\n\nvar saveAs = saveAs || (function(view) {\n\t\"use strict\";\n\t// IE <10 is explicitly unsupported\n\tif (typeof view === \"undefined\" || typeof navigator !== \"undefined\" && /MSIE [1-9]\\./.test(navigator.userAgent)) {\n\t\treturn;\n\t}\n\tvar\n\t\t doc = view.document\n\t\t // only get URL when necessary in case Blob.js hasn't overridden it yet\n\t\t, get_URL = function() {\n\t\t\treturn view.URL || view.webkitURL || view;\n\t\t}\n\t\t, save_link = doc.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\")\n\t\t, can_use_save_link = \"download\" in save_link\n\t\t, click = function(node) {\n\t\t\tvar event = new MouseEvent(\"click\");\n\t\t\tnode.dispatchEvent(event);\n\t\t}\n\t\t, is_safari = /constructor/i.test(view.HTMLElement) || view.safari\n\t\t, is_chrome_ios =/CriOS\\/[\\d]+/.test(navigator.userAgent)\n\t\t, throw_outside = function(ex) {\n\t\t\t(view.setImmediate || view.setTimeout)(function() {\n\t\t\t\tthrow ex;\n\t\t\t}, 0);\n\t\t}\n\t\t, force_saveable_type = \"application/octet-stream\"\n\t\t// the Blob API is fundamentally broken as there is no \"downloadfinished\" event to subscribe to\n\t\t, arbitrary_revoke_timeout = 1000 * 40 // in ms\n\t\t, revoke = function(file) {\n\t\t\tvar revoker = function() {\n\t\t\t\tif (typeof file === \"string\") { // file is an object URL\n\t\t\t\t\tget_URL().revokeObjectURL(file);\n\t\t\t\t} else { // file is a File\n\t\t\t\t\tfile.remove();\n\t\t\t\t}\n\t\t\t};\n\t\t\tsetTimeout(revoker, arbitrary_revoke_timeout);\n\t\t}\n\t\t, dispatch = function(filesaver, event_types, event) {\n\t\t\tevent_types = [].concat(event_types);\n\t\t\tvar i = event_types.length;\n\t\t\twhile (i--) {\n\t\t\t\tvar listener = filesaver[\"on\" + event_types[i]];\n\t\t\t\tif (typeof listener === \"function\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlistener.call(filesaver, event || filesaver);\n\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\tthrow_outside(ex);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t, auto_bom = function(blob) {\n\t\t\t// prepend BOM for UTF-8 XML and text/* types (including HTML)\n\t\t\t// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n\t\t\tif (/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n\t\t\t\treturn new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});\n\t\t\t}\n\t\t\treturn blob;\n\t\t}\n\t\t, FileSaver = function(blob, name, no_auto_bom) {\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\t// First try a.download, then web filesystem, then object URLs\n\t\t\tvar\n\t\t\t\t filesaver = this\n\t\t\t\t, type = blob.type\n\t\t\t\t, force = type === force_saveable_type\n\t\t\t\t, object_url\n\t\t\t\t, dispatch_all = function() {\n\t\t\t\t\tdispatch(filesaver, \"writestart progress write writeend\".split(\" \"));\n\t\t\t\t}\n\t\t\t\t// on any filesys errors revert to saving with object URLs\n\t\t\t\t, fs_error = function() {\n\t\t\t\t\tif ((is_chrome_ios || (force && is_safari)) && view.FileReader) {\n\t\t\t\t\t\t// Safari doesn't allow downloading of blob urls\n\t\t\t\t\t\tvar reader = new FileReader();\n\t\t\t\t\t\treader.onloadend = function() {\n\t\t\t\t\t\t\tvar url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');\n\t\t\t\t\t\t\tvar popup = view.open(url, '_blank');\n\t\t\t\t\t\t\tif(!popup) view.location.href = url;\n\t\t\t\t\t\t\turl=undefined; // release reference before dispatching\n\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\tdispatch_all();\n\t\t\t\t\t\t};\n\t\t\t\t\t\treader.readAsDataURL(blob);\n\t\t\t\t\t\tfilesaver.readyState = filesaver.INIT;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// don't create more object URLs than needed\n\t\t\t\t\tif (!object_url) {\n\t\t\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t\t}\n\t\t\t\t\tif (force) {\n\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar opened = view.open(object_url, \"_blank\");\n\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html\n\t\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t}\n\t\t\t;\n\t\t\tfilesaver.readyState = filesaver.INIT;\n\n\t\t\tif (can_use_save_link) {\n\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tsave_link.href = object_url;\n\t\t\t\t\tsave_link.download = name;\n\t\t\t\t\tclick(save_link);\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfs_error();\n\t\t}\n\t\t, FS_proto = FileSaver.prototype\n\t\t, saveAs = function(blob, name, no_auto_bom) {\n\t\t\treturn new FileSaver(blob, name || blob.name || \"download\", no_auto_bom);\n\t\t}\n\t;\n\t// IE 10+ (native saveAs)\n\tif (typeof navigator !== \"undefined\" && navigator.msSaveOrOpenBlob) {\n\t\treturn function(blob, name, no_auto_bom) {\n\t\t\tname = name || blob.name || \"download\";\n\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\treturn navigator.msSaveOrOpenBlob(blob, name);\n\t\t};\n\t}\n\n\tFS_proto.abort = function(){};\n\tFS_proto.readyState = FS_proto.INIT = 0;\n\tFS_proto.WRITING = 1;\n\tFS_proto.DONE = 2;\n\n\tFS_proto.error =\n\tFS_proto.onwritestart =\n\tFS_proto.onprogress =\n\tFS_proto.onwrite =\n\tFS_proto.onabort =\n\tFS_proto.onerror =\n\tFS_proto.onwriteend =\n\t\tnull;\n\n\treturn saveAs;\n}(\n\t typeof self !== \"undefined\" && self\n\t|| typeof window !== \"undefined\" && window\n\t|| this.content\n));\n// `self` is undefined in Firefox for Android content script context\n// while `this` is nsIContentFrameMessageManager\n// with an attribute `content` that corresponds to the window\n\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports.saveAs = saveAs;\n} else if ((typeof define !== \"undefined\" && define !== null) && (define.amd !== null)) {\n define(\"FileSaver.js\", function() {\n return saveAs;\n });\n}\n","// Generated by CoffeeScript 1.10.0\nvar adjacency_graphs;\n\nadjacency_graphs = {\n qwerty: {\n \"!\": [\"`~\", null, null, \"2@\", \"qQ\", null],\n \"\\\"\": [\";:\", \"[{\", \"]}\", null, null, \"/?\"],\n \"#\": [\"2@\", null, null, \"4$\", \"eE\", \"wW\"],\n \"$\": [\"3#\", null, null, \"5%\", \"rR\", \"eE\"],\n \"%\": [\"4$\", null, null, \"6^\", \"tT\", \"rR\"],\n \"&\": [\"6^\", null, null, \"8*\", \"uU\", \"yY\"],\n \"'\": [\";:\", \"[{\", \"]}\", null, null, \"/?\"],\n \"(\": [\"8*\", null, null, \"0)\", \"oO\", \"iI\"],\n \")\": [\"9(\", null, null, \"-_\", \"pP\", \"oO\"],\n \"*\": [\"7&\", null, null, \"9(\", \"iI\", \"uU\"],\n \"+\": [\"-_\", null, null, null, \"]}\", \"[{\"],\n \",\": [\"mM\", \"kK\", \"lL\", \".>\", null, null],\n \"-\": [\"0)\", null, null, \"=+\", \"[{\", \"pP\"],\n \".\": [\",<\", \"lL\", \";:\", \"/?\", null, null],\n \"/\": [\".>\", \";:\", \"'\\\"\", null, null, null],\n \"0\": [\"9(\", null, null, \"-_\", \"pP\", \"oO\"],\n \"1\": [\"`~\", null, null, \"2@\", \"qQ\", null],\n \"2\": [\"1!\", null, null, \"3#\", \"wW\", \"qQ\"],\n \"3\": [\"2@\", null, null, \"4$\", \"eE\", \"wW\"],\n \"4\": [\"3#\", null, null, \"5%\", \"rR\", \"eE\"],\n \"5\": [\"4$\", null, null, \"6^\", \"tT\", \"rR\"],\n \"6\": [\"5%\", null, null, \"7&\", \"yY\", \"tT\"],\n \"7\": [\"6^\", null, null, \"8*\", \"uU\", \"yY\"],\n \"8\": [\"7&\", null, null, \"9(\", \"iI\", \"uU\"],\n \"9\": [\"8*\", null, null, \"0)\", \"oO\", \"iI\"],\n \":\": [\"lL\", \"pP\", \"[{\", \"'\\\"\", \"/?\", \".>\"],\n \";\": [\"lL\", \"pP\", \"[{\", \"'\\\"\", \"/?\", \".>\"],\n \"<\": [\"mM\", \"kK\", \"lL\", \".>\", null, null],\n \"=\": [\"-_\", null, null, null, \"]}\", \"[{\"],\n \">\": [\",<\", \"lL\", \";:\", \"/?\", null, null],\n \"?\": [\".>\", \";:\", \"'\\\"\", null, null, null],\n \"@\": [\"1!\", null, null, \"3#\", \"wW\", \"qQ\"],\n \"A\": [null, \"qQ\", \"wW\", \"sS\", \"zZ\", null],\n \"B\": [\"vV\", \"gG\", \"hH\", \"nN\", null, null],\n \"C\": [\"xX\", \"dD\", \"fF\", \"vV\", null, null],\n \"D\": [\"sS\", \"eE\", \"rR\", \"fF\", \"cC\", \"xX\"],\n \"E\": [\"wW\", \"3#\", \"4$\", \"rR\", \"dD\", \"sS\"],\n \"F\": [\"dD\", \"rR\", \"tT\", \"gG\", \"vV\", \"cC\"],\n \"G\": [\"fF\", \"tT\", \"yY\", \"hH\", \"bB\", \"vV\"],\n \"H\": [\"gG\", \"yY\", \"uU\", \"jJ\", \"nN\", \"bB\"],\n \"I\": [\"uU\", \"8*\", \"9(\", \"oO\", \"kK\", \"jJ\"],\n \"J\": [\"hH\", \"uU\", \"iI\", \"kK\", \"mM\", \"nN\"],\n \"K\": [\"jJ\", \"iI\", \"oO\", \"lL\", \",<\", \"mM\"],\n \"L\": [\"kK\", \"oO\", \"pP\", \";:\", \".>\", \",<\"],\n \"M\": [\"nN\", \"jJ\", \"kK\", \",<\", null, null],\n \"N\": [\"bB\", \"hH\", \"jJ\", \"mM\", null, null],\n \"O\": [\"iI\", \"9(\", \"0)\", \"pP\", \"lL\", \"kK\"],\n \"P\": [\"oO\", \"0)\", \"-_\", \"[{\", \";:\", \"lL\"],\n \"Q\": [null, \"1!\", \"2@\", \"wW\", \"aA\", null],\n \"R\": [\"eE\", \"4$\", \"5%\", \"tT\", \"fF\", \"dD\"],\n \"S\": [\"aA\", \"wW\", \"eE\", \"dD\", \"xX\", \"zZ\"],\n \"T\": [\"rR\", \"5%\", \"6^\", \"yY\", \"gG\", \"fF\"],\n \"U\": [\"yY\", \"7&\", \"8*\", \"iI\", \"jJ\", \"hH\"],\n \"V\": [\"cC\", \"fF\", \"gG\", \"bB\", null, null],\n \"W\": [\"qQ\", \"2@\", \"3#\", \"eE\", \"sS\", \"aA\"],\n \"X\": [\"zZ\", \"sS\", \"dD\", \"cC\", null, null],\n \"Y\": [\"tT\", \"6^\", \"7&\", \"uU\", \"hH\", \"gG\"],\n \"Z\": [null, \"aA\", \"sS\", \"xX\", null, null],\n \"[\": [\"pP\", \"-_\", \"=+\", \"]}\", \"'\\\"\", \";:\"],\n \"\\\\\": [\"]}\", null, null, null, null, null],\n \"]\": [\"[{\", \"=+\", null, \"\\\\|\", null, \"'\\\"\"],\n \"^\": [\"5%\", null, null, \"7&\", \"yY\", \"tT\"],\n \"_\": [\"0)\", null, null, \"=+\", \"[{\", \"pP\"],\n \"`\": [null, null, null, \"1!\", null, null],\n \"a\": [null, \"qQ\", \"wW\", \"sS\", \"zZ\", null],\n \"b\": [\"vV\", \"gG\", \"hH\", \"nN\", null, null],\n \"c\": [\"xX\", \"dD\", \"fF\", \"vV\", null, null],\n \"d\": [\"sS\", \"eE\", \"rR\", \"fF\", \"cC\", \"xX\"],\n \"e\": [\"wW\", \"3#\", \"4$\", \"rR\", \"dD\", \"sS\"],\n \"f\": [\"dD\", \"rR\", \"tT\", \"gG\", \"vV\", \"cC\"],\n \"g\": [\"fF\", \"tT\", \"yY\", \"hH\", \"bB\", \"vV\"],\n \"h\": [\"gG\", \"yY\", \"uU\", \"jJ\", \"nN\", \"bB\"],\n \"i\": [\"uU\", \"8*\", \"9(\", \"oO\", \"kK\", \"jJ\"],\n \"j\": [\"hH\", \"uU\", \"iI\", \"kK\", \"mM\", \"nN\"],\n \"k\": [\"jJ\", \"iI\", \"oO\", \"lL\", \",<\", \"mM\"],\n \"l\": [\"kK\", \"oO\", \"pP\", \";:\", \".>\", \",<\"],\n \"m\": [\"nN\", \"jJ\", \"kK\", \",<\", null, null],\n \"n\": [\"bB\", \"hH\", \"jJ\", \"mM\", null, null],\n \"o\": [\"iI\", \"9(\", \"0)\", \"pP\", \"lL\", \"kK\"],\n \"p\": [\"oO\", \"0)\", \"-_\", \"[{\", \";:\", \"lL\"],\n \"q\": [null, \"1!\", \"2@\", \"wW\", \"aA\", null],\n \"r\": [\"eE\", \"4$\", \"5%\", \"tT\", \"fF\", \"dD\"],\n \"s\": [\"aA\", \"wW\", \"eE\", \"dD\", \"xX\", \"zZ\"],\n \"t\": [\"rR\", \"5%\", \"6^\", \"yY\", \"gG\", \"fF\"],\n \"u\": [\"yY\", \"7&\", \"8*\", \"iI\", \"jJ\", \"hH\"],\n \"v\": [\"cC\", \"fF\", \"gG\", \"bB\", null, null],\n \"w\": [\"qQ\", \"2@\", \"3#\", \"eE\", \"sS\", \"aA\"],\n \"x\": [\"zZ\", \"sS\", \"dD\", \"cC\", null, null],\n \"y\": [\"tT\", \"6^\", \"7&\", \"uU\", \"hH\", \"gG\"],\n \"z\": [null, \"aA\", \"sS\", \"xX\", null, null],\n \"{\": [\"pP\", \"-_\", \"=+\", \"]}\", \"'\\\"\", \";:\"],\n \"|\": [\"]}\", null, null, null, null, null],\n \"}\": [\"[{\", \"=+\", null, \"\\\\|\", null, \"'\\\"\"],\n \"~\": [null, null, null, \"1!\", null, null]\n },\n dvorak: {\n \"!\": [\"`~\", null, null, \"2@\", \"'\\\"\", null],\n \"\\\"\": [null, \"1!\", \"2@\", \",<\", \"aA\", null],\n \"#\": [\"2@\", null, null, \"4$\", \".>\", \",<\"],\n \"$\": [\"3#\", null, null, \"5%\", \"pP\", \".>\"],\n \"%\": [\"4$\", null, null, \"6^\", \"yY\", \"pP\"],\n \"&\": [\"6^\", null, null, \"8*\", \"gG\", \"fF\"],\n \"'\": [null, \"1!\", \"2@\", \",<\", \"aA\", null],\n \"(\": [\"8*\", null, null, \"0)\", \"rR\", \"cC\"],\n \")\": [\"9(\", null, null, \"[{\", \"lL\", \"rR\"],\n \"*\": [\"7&\", null, null, \"9(\", \"cC\", \"gG\"],\n \"+\": [\"/?\", \"]}\", null, \"\\\\|\", null, \"-_\"],\n \",\": [\"'\\\"\", \"2@\", \"3#\", \".>\", \"oO\", \"aA\"],\n \"-\": [\"sS\", \"/?\", \"=+\", null, null, \"zZ\"],\n \".\": [\",<\", \"3#\", \"4$\", \"pP\", \"eE\", \"oO\"],\n \"/\": [\"lL\", \"[{\", \"]}\", \"=+\", \"-_\", \"sS\"],\n \"0\": [\"9(\", null, null, \"[{\", \"lL\", \"rR\"],\n \"1\": [\"`~\", null, null, \"2@\", \"'\\\"\", null],\n \"2\": [\"1!\", null, null, \"3#\", \",<\", \"'\\\"\"],\n \"3\": [\"2@\", null, null, \"4$\", \".>\", \",<\"],\n \"4\": [\"3#\", null, null, \"5%\", \"pP\", \".>\"],\n \"5\": [\"4$\", null, null, \"6^\", \"yY\", \"pP\"],\n \"6\": [\"5%\", null, null, \"7&\", \"fF\", \"yY\"],\n \"7\": [\"6^\", null, null, \"8*\", \"gG\", \"fF\"],\n \"8\": [\"7&\", null, null, \"9(\", \"cC\", \"gG\"],\n \"9\": [\"8*\", null, null, \"0)\", \"rR\", \"cC\"],\n \":\": [null, \"aA\", \"oO\", \"qQ\", null, null],\n \";\": [null, \"aA\", \"oO\", \"qQ\", null, null],\n \"<\": [\"'\\\"\", \"2@\", \"3#\", \".>\", \"oO\", \"aA\"],\n \"=\": [\"/?\", \"]}\", null, \"\\\\|\", null, \"-_\"],\n \">\": [\",<\", \"3#\", \"4$\", \"pP\", \"eE\", \"oO\"],\n \"?\": [\"lL\", \"[{\", \"]}\", \"=+\", \"-_\", \"sS\"],\n \"@\": [\"1!\", null, null, \"3#\", \",<\", \"'\\\"\"],\n \"A\": [null, \"'\\\"\", \",<\", \"oO\", \";:\", null],\n \"B\": [\"xX\", \"dD\", \"hH\", \"mM\", null, null],\n \"C\": [\"gG\", \"8*\", \"9(\", \"rR\", \"tT\", \"hH\"],\n \"D\": [\"iI\", \"fF\", \"gG\", \"hH\", \"bB\", \"xX\"],\n \"E\": [\"oO\", \".>\", \"pP\", \"uU\", \"jJ\", \"qQ\"],\n \"F\": [\"yY\", \"6^\", \"7&\", \"gG\", \"dD\", \"iI\"],\n \"G\": [\"fF\", \"7&\", \"8*\", \"cC\", \"hH\", \"dD\"],\n \"H\": [\"dD\", \"gG\", \"cC\", \"tT\", \"mM\", \"bB\"],\n \"I\": [\"uU\", \"yY\", \"fF\", \"dD\", \"xX\", \"kK\"],\n \"J\": [\"qQ\", \"eE\", \"uU\", \"kK\", null, null],\n \"K\": [\"jJ\", \"uU\", \"iI\", \"xX\", null, null],\n \"L\": [\"rR\", \"0)\", \"[{\", \"/?\", \"sS\", \"nN\"],\n \"M\": [\"bB\", \"hH\", \"tT\", \"wW\", null, null],\n \"N\": [\"tT\", \"rR\", \"lL\", \"sS\", \"vV\", \"wW\"],\n \"O\": [\"aA\", \",<\", \".>\", \"eE\", \"qQ\", \";:\"],\n \"P\": [\".>\", \"4$\", \"5%\", \"yY\", \"uU\", \"eE\"],\n \"Q\": [\";:\", \"oO\", \"eE\", \"jJ\", null, null],\n \"R\": [\"cC\", \"9(\", \"0)\", \"lL\", \"nN\", \"tT\"],\n \"S\": [\"nN\", \"lL\", \"/?\", \"-_\", \"zZ\", \"vV\"],\n \"T\": [\"hH\", \"cC\", \"rR\", \"nN\", \"wW\", \"mM\"],\n \"U\": [\"eE\", \"pP\", \"yY\", \"iI\", \"kK\", \"jJ\"],\n \"V\": [\"wW\", \"nN\", \"sS\", \"zZ\", null, null],\n \"W\": [\"mM\", \"tT\", \"nN\", \"vV\", null, null],\n \"X\": [\"kK\", \"iI\", \"dD\", \"bB\", null, null],\n \"Y\": [\"pP\", \"5%\", \"6^\", \"fF\", \"iI\", \"uU\"],\n \"Z\": [\"vV\", \"sS\", \"-_\", null, null, null],\n \"[\": [\"0)\", null, null, \"]}\", \"/?\", \"lL\"],\n \"\\\\\": [\"=+\", null, null, null, null, null],\n \"]\": [\"[{\", null, null, null, \"=+\", \"/?\"],\n \"^\": [\"5%\", null, null, \"7&\", \"fF\", \"yY\"],\n \"_\": [\"sS\", \"/?\", \"=+\", null, null, \"zZ\"],\n \"`\": [null, null, null, \"1!\", null, null],\n \"a\": [null, \"'\\\"\", \",<\", \"oO\", \";:\", null],\n \"b\": [\"xX\", \"dD\", \"hH\", \"mM\", null, null],\n \"c\": [\"gG\", \"8*\", \"9(\", \"rR\", \"tT\", \"hH\"],\n \"d\": [\"iI\", \"fF\", \"gG\", \"hH\", \"bB\", \"xX\"],\n \"e\": [\"oO\", \".>\", \"pP\", \"uU\", \"jJ\", \"qQ\"],\n \"f\": [\"yY\", \"6^\", \"7&\", \"gG\", \"dD\", \"iI\"],\n \"g\": [\"fF\", \"7&\", \"8*\", \"cC\", \"hH\", \"dD\"],\n \"h\": [\"dD\", \"gG\", \"cC\", \"tT\", \"mM\", \"bB\"],\n \"i\": [\"uU\", \"yY\", \"fF\", \"dD\", \"xX\", \"kK\"],\n \"j\": [\"qQ\", \"eE\", \"uU\", \"kK\", null, null],\n \"k\": [\"jJ\", \"uU\", \"iI\", \"xX\", null, null],\n \"l\": [\"rR\", \"0)\", \"[{\", \"/?\", \"sS\", \"nN\"],\n \"m\": [\"bB\", \"hH\", \"tT\", \"wW\", null, null],\n \"n\": [\"tT\", \"rR\", \"lL\", \"sS\", \"vV\", \"wW\"],\n \"o\": [\"aA\", \",<\", \".>\", \"eE\", \"qQ\", \";:\"],\n \"p\": [\".>\", \"4$\", \"5%\", \"yY\", \"uU\", \"eE\"],\n \"q\": [\";:\", \"oO\", \"eE\", \"jJ\", null, null],\n \"r\": [\"cC\", \"9(\", \"0)\", \"lL\", \"nN\", \"tT\"],\n \"s\": [\"nN\", \"lL\", \"/?\", \"-_\", \"zZ\", \"vV\"],\n \"t\": [\"hH\", \"cC\", \"rR\", \"nN\", \"wW\", \"mM\"],\n \"u\": [\"eE\", \"pP\", \"yY\", \"iI\", \"kK\", \"jJ\"],\n \"v\": [\"wW\", \"nN\", \"sS\", \"zZ\", null, null],\n \"w\": [\"mM\", \"tT\", \"nN\", \"vV\", null, null],\n \"x\": [\"kK\", \"iI\", \"dD\", \"bB\", null, null],\n \"y\": [\"pP\", \"5%\", \"6^\", \"fF\", \"iI\", \"uU\"],\n \"z\": [\"vV\", \"sS\", \"-_\", null, null, null],\n \"{\": [\"0)\", null, null, \"]}\", \"/?\", \"lL\"],\n \"|\": [\"=+\", null, null, null, null, null],\n \"}\": [\"[{\", null, null, null, \"=+\", \"/?\"],\n \"~\": [null, null, null, \"1!\", null, null]\n },\n keypad: {\n \"*\": [\"/\", null, null, null, \"-\", \"+\", \"9\", \"8\"],\n \"+\": [\"9\", \"*\", \"-\", null, null, null, null, \"6\"],\n \"-\": [\"*\", null, null, null, null, null, \"+\", \"9\"],\n \".\": [\"0\", \"2\", \"3\", null, null, null, null, null],\n \"/\": [null, null, null, null, \"*\", \"9\", \"8\", \"7\"],\n \"0\": [null, \"1\", \"2\", \"3\", \".\", null, null, null],\n \"1\": [null, null, \"4\", \"5\", \"2\", \"0\", null, null],\n \"2\": [\"1\", \"4\", \"5\", \"6\", \"3\", \".\", \"0\", null],\n \"3\": [\"2\", \"5\", \"6\", null, null, null, \".\", \"0\"],\n \"4\": [null, null, \"7\", \"8\", \"5\", \"2\", \"1\", null],\n \"5\": [\"4\", \"7\", \"8\", \"9\", \"6\", \"3\", \"2\", \"1\"],\n \"6\": [\"5\", \"8\", \"9\", \"+\", null, null, \"3\", \"2\"],\n \"7\": [null, null, null, \"/\", \"8\", \"5\", \"4\", null],\n \"8\": [\"7\", null, \"/\", \"*\", \"9\", \"6\", \"5\", \"4\"],\n \"9\": [\"8\", \"/\", \"*\", \"-\", \"+\", null, \"6\", \"5\"]\n },\n mac_keypad: {\n \"*\": [\"/\", null, null, null, null, null, \"-\", \"9\"],\n \"+\": [\"6\", \"9\", \"-\", null, null, null, null, \"3\"],\n \"-\": [\"9\", \"/\", \"*\", null, null, null, \"+\", \"6\"],\n \".\": [\"0\", \"2\", \"3\", null, null, null, null, null],\n \"/\": [\"=\", null, null, null, \"*\", \"-\", \"9\", \"8\"],\n \"0\": [null, \"1\", \"2\", \"3\", \".\", null, null, null],\n \"1\": [null, null, \"4\", \"5\", \"2\", \"0\", null, null],\n \"2\": [\"1\", \"4\", \"5\", \"6\", \"3\", \".\", \"0\", null],\n \"3\": [\"2\", \"5\", \"6\", \"+\", null, null, \".\", \"0\"],\n \"4\": [null, null, \"7\", \"8\", \"5\", \"2\", \"1\", null],\n \"5\": [\"4\", \"7\", \"8\", \"9\", \"6\", \"3\", \"2\", \"1\"],\n \"6\": [\"5\", \"8\", \"9\", \"-\", \"+\", null, \"3\", \"2\"],\n \"7\": [null, null, null, \"=\", \"8\", \"5\", \"4\", null],\n \"8\": [\"7\", null, \"=\", \"/\", \"9\", \"6\", \"5\", \"4\"],\n \"9\": [\"8\", \"=\", \"/\", \"*\", \"-\", \"+\", \"6\", \"5\"],\n \"=\": [null, null, null, null, \"/\", \"9\", \"8\", \"7\"]\n }\n};\n\nmodule.exports = adjacency_graphs;\n\n//# sourceMappingURL=adjacency_graphs.js.map\n","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.scorePassword = scorePassword;\n\nvar _zxcvbn = require('zxcvbn');\n\nvar _zxcvbn2 = _interopRequireDefault(_zxcvbn);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ZXCVBN_USER_INPUTS = ['riot', 'matrix'];\n\n// Translations for zxcvbn's suggestion strings\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n(0, _languageHandler._td)(\"Use a few words, avoid common phrases\");\n(0, _languageHandler._td)(\"No need for symbols, digits, or uppercase letters\");\n(0, _languageHandler._td)(\"Use a longer keyboard pattern with more turns\");\n(0, _languageHandler._td)(\"Avoid repeated words and characters\");\n(0, _languageHandler._td)(\"Avoid sequences\");\n(0, _languageHandler._td)(\"Avoid recent years\");\n(0, _languageHandler._td)(\"Avoid years that are associated with you\");\n(0, _languageHandler._td)(\"Avoid dates and years that are associated with you\");\n(0, _languageHandler._td)(\"Capitalization doesn't help very much\");\n(0, _languageHandler._td)(\"All-uppercase is almost as easy to guess as all-lowercase\");\n(0, _languageHandler._td)(\"Reversed words aren't much harder to guess\");\n(0, _languageHandler._td)(\"Predictable substitutions like '@' instead of 'a' don't help very much\");\n(0, _languageHandler._td)(\"Add another word or two. Uncommon words are better.\");\n\n// and warnings\n(0, _languageHandler._td)(\"Repeats like \\\"aaa\\\" are easy to guess\");\n(0, _languageHandler._td)(\"Repeats like \\\"abcabcabc\\\" are only slightly harder to guess than \\\"abc\\\"\");\n(0, _languageHandler._td)(\"Sequences like abc or 6543 are easy to guess\");\n(0, _languageHandler._td)(\"Recent years are easy to guess\");\n(0, _languageHandler._td)(\"Dates are often easy to guess\");\n(0, _languageHandler._td)(\"This is a top-10 common password\");\n(0, _languageHandler._td)(\"This is a top-100 common password\");\n(0, _languageHandler._td)(\"This is a very common password\");\n(0, _languageHandler._td)(\"This is similar to a commonly used password\");\n(0, _languageHandler._td)(\"A word by itself is easy to guess\");\n(0, _languageHandler._td)(\"Names and surnames by themselves are easy to guess\");\n(0, _languageHandler._td)(\"Common names and surnames are easy to guess\");\n(0, _languageHandler._td)(\"Straight rows of keys are easy to guess\");\n(0, _languageHandler._td)(\"Short keyboard patterns are easy to guess\");\n\n/**\n * Wrapper around zxcvbn password strength estimation\n * Include this only from async components: it pulls in zxcvbn\n * (obviously) which is large.\n */\nfunction scorePassword(password) {\n if (password.length === 0) return null;\n\n var userInputs = ZXCVBN_USER_INPUTS.slice();\n userInputs.push(_MatrixClientPeg2.default.get().getUserIdLocalpart());\n\n var zxcvbnResult = (0, _zxcvbn2.default)(password, userInputs);\n // Work around https://github.com/dropbox/zxcvbn/issues/216\n if (password.includes(' ')) {\n var resultNoSpaces = (0, _zxcvbn2.default)(password.replace(/ /g, ''), userInputs);\n if (resultNoSpaces.score < zxcvbnResult.score) zxcvbnResult = resultNoSpaces;\n }\n\n for (var i = 0; i < zxcvbnResult.feedback.suggestions.length; ++i) {\n // translate suggestions\n zxcvbnResult.feedback.suggestions[i] = (0, _languageHandler._t)(zxcvbnResult.feedback.suggestions[i]);\n }\n // and warning, if any\n if (zxcvbnResult.feedback.warning) {\n zxcvbnResult.feedback.warning = (0, _languageHandler._t)(zxcvbnResult.feedback.warning);\n }\n\n return zxcvbnResult;\n}\n//# sourceMappingURL=PasswordScorer.js.map","// Generated by CoffeeScript 1.10.0\nvar feedback, matching, scoring, time, time_estimates, zxcvbn;\n\nmatching = require('./matching');\n\nscoring = require('./scoring');\n\ntime_estimates = require('./time_estimates');\n\nfeedback = require('./feedback');\n\ntime = function() {\n return (new Date()).getTime();\n};\n\nzxcvbn = function(password, user_inputs) {\n var arg, attack_times, i, len, matches, prop, ref, result, sanitized_inputs, start, val;\n if (user_inputs == null) {\n user_inputs = [];\n }\n start = time();\n sanitized_inputs = [];\n for (i = 0, len = user_inputs.length; i < len; i++) {\n arg = user_inputs[i];\n if ((ref = typeof arg) === \"string\" || ref === \"number\" || ref === \"boolean\") {\n sanitized_inputs.push(arg.toString().toLowerCase());\n }\n }\n matching.set_user_input_dictionary(sanitized_inputs);\n matches = matching.omnimatch(password);\n result = scoring.most_guessable_match_sequence(password, matches);\n result.calc_time = time() - start;\n attack_times = time_estimates.estimate_attack_times(result.guesses);\n for (prop in attack_times) {\n val = attack_times[prop];\n result[prop] = val;\n }\n result.feedback = feedback.get_feedback(result.score, result.sequence);\n return result;\n};\n\nmodule.exports = zxcvbn;\n\n//# sourceMappingURL=main.js.map\n","// Generated by CoffeeScript 1.10.0\nvar DATE_MAX_YEAR, DATE_MIN_YEAR, DATE_SPLITS, GRAPHS, L33T_TABLE, RANKED_DICTIONARIES, REGEXEN, adjacency_graphs, build_ranked_dict, frequency_lists, lst, matching, name, scoring;\n\nfrequency_lists = require('./frequency_lists');\n\nadjacency_graphs = require('./adjacency_graphs');\n\nscoring = require('./scoring');\n\nbuild_ranked_dict = function(ordered_list) {\n var i, len1, o, result, word;\n result = {};\n i = 1;\n for (o = 0, len1 = ordered_list.length; o < len1; o++) {\n word = ordered_list[o];\n result[word] = i;\n i += 1;\n }\n return result;\n};\n\nRANKED_DICTIONARIES = {};\n\nfor (name in frequency_lists) {\n lst = frequency_lists[name];\n RANKED_DICTIONARIES[name] = build_ranked_dict(lst);\n}\n\nGRAPHS = {\n qwerty: adjacency_graphs.qwerty,\n dvorak: adjacency_graphs.dvorak,\n keypad: adjacency_graphs.keypad,\n mac_keypad: adjacency_graphs.mac_keypad\n};\n\nL33T_TABLE = {\n a: ['4', '@'],\n b: ['8'],\n c: ['(', '{', '[', '<'],\n e: ['3'],\n g: ['6', '9'],\n i: ['1', '!', '|'],\n l: ['1', '|', '7'],\n o: ['0'],\n s: ['$', '5'],\n t: ['+', '7'],\n x: ['%'],\n z: ['2']\n};\n\nREGEXEN = {\n recent_year: /19\\d\\d|200\\d|201\\d/g\n};\n\nDATE_MAX_YEAR = 2050;\n\nDATE_MIN_YEAR = 1000;\n\nDATE_SPLITS = {\n 4: [[1, 2], [2, 3]],\n 5: [[1, 3], [2, 3]],\n 6: [[1, 2], [2, 4], [4, 5]],\n 7: [[1, 3], [2, 3], [4, 5], [4, 6]],\n 8: [[2, 4], [4, 6]]\n};\n\nmatching = {\n empty: function(obj) {\n var k;\n return ((function() {\n var results;\n results = [];\n for (k in obj) {\n results.push(k);\n }\n return results;\n })()).length === 0;\n },\n extend: function(lst, lst2) {\n return lst.push.apply(lst, lst2);\n },\n translate: function(string, chr_map) {\n var chr;\n return ((function() {\n var len1, o, ref, results;\n ref = string.split('');\n results = [];\n for (o = 0, len1 = ref.length; o < len1; o++) {\n chr = ref[o];\n results.push(chr_map[chr] || chr);\n }\n return results;\n })()).join('');\n },\n mod: function(n, m) {\n return ((n % m) + m) % m;\n },\n sorted: function(matches) {\n return matches.sort(function(m1, m2) {\n return (m1.i - m2.i) || (m1.j - m2.j);\n });\n },\n omnimatch: function(password) {\n var len1, matcher, matchers, matches, o;\n matches = [];\n matchers = [this.dictionary_match, this.reverse_dictionary_match, this.l33t_match, this.spatial_match, this.repeat_match, this.sequence_match, this.regex_match, this.date_match];\n for (o = 0, len1 = matchers.length; o < len1; o++) {\n matcher = matchers[o];\n this.extend(matches, matcher.call(this, password));\n }\n return this.sorted(matches);\n },\n dictionary_match: function(password, _ranked_dictionaries) {\n var dictionary_name, i, j, len, matches, o, p, password_lower, rank, ranked_dict, ref, ref1, ref2, word;\n if (_ranked_dictionaries == null) {\n _ranked_dictionaries = RANKED_DICTIONARIES;\n }\n matches = [];\n len = password.length;\n password_lower = password.toLowerCase();\n for (dictionary_name in _ranked_dictionaries) {\n ranked_dict = _ranked_dictionaries[dictionary_name];\n for (i = o = 0, ref = len; 0 <= ref ? o < ref : o > ref; i = 0 <= ref ? ++o : --o) {\n for (j = p = ref1 = i, ref2 = len; ref1 <= ref2 ? p < ref2 : p > ref2; j = ref1 <= ref2 ? ++p : --p) {\n if (password_lower.slice(i, +j + 1 || 9e9) in ranked_dict) {\n word = password_lower.slice(i, +j + 1 || 9e9);\n rank = ranked_dict[word];\n matches.push({\n pattern: 'dictionary',\n i: i,\n j: j,\n token: password.slice(i, +j + 1 || 9e9),\n matched_word: word,\n rank: rank,\n dictionary_name: dictionary_name,\n reversed: false,\n l33t: false\n });\n }\n }\n }\n }\n return this.sorted(matches);\n },\n reverse_dictionary_match: function(password, _ranked_dictionaries) {\n var len1, match, matches, o, ref, reversed_password;\n if (_ranked_dictionaries == null) {\n _ranked_dictionaries = RANKED_DICTIONARIES;\n }\n reversed_password = password.split('').reverse().join('');\n matches = this.dictionary_match(reversed_password, _ranked_dictionaries);\n for (o = 0, len1 = matches.length; o < len1; o++) {\n match = matches[o];\n match.token = match.token.split('').reverse().join('');\n match.reversed = true;\n ref = [password.length - 1 - match.j, password.length - 1 - match.i], match.i = ref[0], match.j = ref[1];\n }\n return this.sorted(matches);\n },\n set_user_input_dictionary: function(ordered_list) {\n return RANKED_DICTIONARIES['user_inputs'] = build_ranked_dict(ordered_list.slice());\n },\n relevant_l33t_subtable: function(password, table) {\n var chr, len1, letter, o, password_chars, ref, relevant_subs, sub, subs, subtable;\n password_chars = {};\n ref = password.split('');\n for (o = 0, len1 = ref.length; o < len1; o++) {\n chr = ref[o];\n password_chars[chr] = true;\n }\n subtable = {};\n for (letter in table) {\n subs = table[letter];\n relevant_subs = (function() {\n var len2, p, results;\n results = [];\n for (p = 0, len2 = subs.length; p < len2; p++) {\n sub = subs[p];\n if (sub in password_chars) {\n results.push(sub);\n }\n }\n return results;\n })();\n if (relevant_subs.length > 0) {\n subtable[letter] = relevant_subs;\n }\n }\n return subtable;\n },\n enumerate_l33t_subs: function(table) {\n var chr, dedup, helper, k, keys, l33t_chr, len1, len2, o, p, ref, sub, sub_dict, sub_dicts, subs;\n keys = (function() {\n var results;\n results = [];\n for (k in table) {\n results.push(k);\n }\n return results;\n })();\n subs = [[]];\n dedup = function(subs) {\n var assoc, deduped, label, len1, members, o, sub, v;\n deduped = [];\n members = {};\n for (o = 0, len1 = subs.length; o < len1; o++) {\n sub = subs[o];\n assoc = (function() {\n var len2, p, results;\n results = [];\n for (v = p = 0, len2 = sub.length; p < len2; v = ++p) {\n k = sub[v];\n results.push([k, v]);\n }\n return results;\n })();\n assoc.sort();\n label = ((function() {\n var len2, p, results;\n results = [];\n for (v = p = 0, len2 = assoc.length; p < len2; v = ++p) {\n k = assoc[v];\n results.push(k + ',' + v);\n }\n return results;\n })()).join('-');\n if (!(label in members)) {\n members[label] = true;\n deduped.push(sub);\n }\n }\n return deduped;\n };\n helper = function(keys) {\n var dup_l33t_index, first_key, i, l33t_chr, len1, len2, next_subs, o, p, q, ref, ref1, rest_keys, sub, sub_alternative, sub_extension;\n if (!keys.length) {\n return;\n }\n first_key = keys[0];\n rest_keys = keys.slice(1);\n next_subs = [];\n ref = table[first_key];\n for (o = 0, len1 = ref.length; o < len1; o++) {\n l33t_chr = ref[o];\n for (p = 0, len2 = subs.length; p < len2; p++) {\n sub = subs[p];\n dup_l33t_index = -1;\n for (i = q = 0, ref1 = sub.length; 0 <= ref1 ? q < ref1 : q > ref1; i = 0 <= ref1 ? ++q : --q) {\n if (sub[i][0] === l33t_chr) {\n dup_l33t_index = i;\n break;\n }\n }\n if (dup_l33t_index === -1) {\n sub_extension = sub.concat([[l33t_chr, first_key]]);\n next_subs.push(sub_extension);\n } else {\n sub_alternative = sub.slice(0);\n sub_alternative.splice(dup_l33t_index, 1);\n sub_alternative.push([l33t_chr, first_key]);\n next_subs.push(sub);\n next_subs.push(sub_alternative);\n }\n }\n }\n subs = dedup(next_subs);\n return helper(rest_keys);\n };\n helper(keys);\n sub_dicts = [];\n for (o = 0, len1 = subs.length; o < len1; o++) {\n sub = subs[o];\n sub_dict = {};\n for (p = 0, len2 = sub.length; p < len2; p++) {\n ref = sub[p], l33t_chr = ref[0], chr = ref[1];\n sub_dict[l33t_chr] = chr;\n }\n sub_dicts.push(sub_dict);\n }\n return sub_dicts;\n },\n l33t_match: function(password, _ranked_dictionaries, _l33t_table) {\n var chr, k, len1, len2, match, match_sub, matches, o, p, ref, ref1, sub, subbed_chr, subbed_password, token, v;\n if (_ranked_dictionaries == null) {\n _ranked_dictionaries = RANKED_DICTIONARIES;\n }\n if (_l33t_table == null) {\n _l33t_table = L33T_TABLE;\n }\n matches = [];\n ref = this.enumerate_l33t_subs(this.relevant_l33t_subtable(password, _l33t_table));\n for (o = 0, len1 = ref.length; o < len1; o++) {\n sub = ref[o];\n if (this.empty(sub)) {\n break;\n }\n subbed_password = this.translate(password, sub);\n ref1 = this.dictionary_match(subbed_password, _ranked_dictionaries);\n for (p = 0, len2 = ref1.length; p < len2; p++) {\n match = ref1[p];\n token = password.slice(match.i, +match.j + 1 || 9e9);\n if (token.toLowerCase() === match.matched_word) {\n continue;\n }\n match_sub = {};\n for (subbed_chr in sub) {\n chr = sub[subbed_chr];\n if (token.indexOf(subbed_chr) !== -1) {\n match_sub[subbed_chr] = chr;\n }\n }\n match.l33t = true;\n match.token = token;\n match.sub = match_sub;\n match.sub_display = ((function() {\n var results;\n results = [];\n for (k in match_sub) {\n v = match_sub[k];\n results.push(k + \" -> \" + v);\n }\n return results;\n })()).join(', ');\n matches.push(match);\n }\n }\n return this.sorted(matches.filter(function(match) {\n return match.token.length > 1;\n }));\n },\n spatial_match: function(password, _graphs) {\n var graph, graph_name, matches;\n if (_graphs == null) {\n _graphs = GRAPHS;\n }\n matches = [];\n for (graph_name in _graphs) {\n graph = _graphs[graph_name];\n this.extend(matches, this.spatial_match_helper(password, graph, graph_name));\n }\n return this.sorted(matches);\n },\n SHIFTED_RX: /[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:\"ZXCVBNM<>?]/,\n spatial_match_helper: function(password, graph, graph_name) {\n var adj, adjacents, cur_char, cur_direction, found, found_direction, i, j, last_direction, len1, matches, o, prev_char, shifted_count, turns;\n matches = [];\n i = 0;\n while (i < password.length - 1) {\n j = i + 1;\n last_direction = null;\n turns = 0;\n if ((graph_name === 'qwerty' || graph_name === 'dvorak') && this.SHIFTED_RX.exec(password.charAt(i))) {\n shifted_count = 1;\n } else {\n shifted_count = 0;\n }\n while (true) {\n prev_char = password.charAt(j - 1);\n found = false;\n found_direction = -1;\n cur_direction = -1;\n adjacents = graph[prev_char] || [];\n if (j < password.length) {\n cur_char = password.charAt(j);\n for (o = 0, len1 = adjacents.length; o < len1; o++) {\n adj = adjacents[o];\n cur_direction += 1;\n if (adj && adj.indexOf(cur_char) !== -1) {\n found = true;\n found_direction = cur_direction;\n if (adj.indexOf(cur_char) === 1) {\n shifted_count += 1;\n }\n if (last_direction !== found_direction) {\n turns += 1;\n last_direction = found_direction;\n }\n break;\n }\n }\n }\n if (found) {\n j += 1;\n } else {\n if (j - i > 2) {\n matches.push({\n pattern: 'spatial',\n i: i,\n j: j - 1,\n token: password.slice(i, j),\n graph: graph_name,\n turns: turns,\n shifted_count: shifted_count\n });\n }\n i = j;\n break;\n }\n }\n }\n return matches;\n },\n repeat_match: function(password) {\n var base_analysis, base_guesses, base_matches, base_token, greedy, greedy_match, i, j, lastIndex, lazy, lazy_anchored, lazy_match, match, matches, ref;\n matches = [];\n greedy = /(.+)\\1+/g;\n lazy = /(.+?)\\1+/g;\n lazy_anchored = /^(.+?)\\1+$/;\n lastIndex = 0;\n while (lastIndex < password.length) {\n greedy.lastIndex = lazy.lastIndex = lastIndex;\n greedy_match = greedy.exec(password);\n lazy_match = lazy.exec(password);\n if (greedy_match == null) {\n break;\n }\n if (greedy_match[0].length > lazy_match[0].length) {\n match = greedy_match;\n base_token = lazy_anchored.exec(match[0])[1];\n } else {\n match = lazy_match;\n base_token = match[1];\n }\n ref = [match.index, match.index + match[0].length - 1], i = ref[0], j = ref[1];\n base_analysis = scoring.most_guessable_match_sequence(base_token, this.omnimatch(base_token));\n base_matches = base_analysis.sequence;\n base_guesses = base_analysis.guesses;\n matches.push({\n pattern: 'repeat',\n i: i,\n j: j,\n token: match[0],\n base_token: base_token,\n base_guesses: base_guesses,\n base_matches: base_matches,\n repeat_count: match[0].length / base_token.length\n });\n lastIndex = j + 1;\n }\n return matches;\n },\n MAX_DELTA: 5,\n sequence_match: function(password) {\n var delta, i, j, k, last_delta, o, ref, result, update;\n if (password.length === 1) {\n return [];\n }\n update = (function(_this) {\n return function(i, j, delta) {\n var ref, sequence_name, sequence_space, token;\n if (j - i > 1 || Math.abs(delta) === 1) {\n if ((0 < (ref = Math.abs(delta)) && ref <= _this.MAX_DELTA)) {\n token = password.slice(i, +j + 1 || 9e9);\n if (/^[a-z]+$/.test(token)) {\n sequence_name = 'lower';\n sequence_space = 26;\n } else if (/^[A-Z]+$/.test(token)) {\n sequence_name = 'upper';\n sequence_space = 26;\n } else if (/^\\d+$/.test(token)) {\n sequence_name = 'digits';\n sequence_space = 10;\n } else {\n sequence_name = 'unicode';\n sequence_space = 26;\n }\n return result.push({\n pattern: 'sequence',\n i: i,\n j: j,\n token: password.slice(i, +j + 1 || 9e9),\n sequence_name: sequence_name,\n sequence_space: sequence_space,\n ascending: delta > 0\n });\n }\n }\n };\n })(this);\n result = [];\n i = 0;\n last_delta = null;\n for (k = o = 1, ref = password.length; 1 <= ref ? o < ref : o > ref; k = 1 <= ref ? ++o : --o) {\n delta = password.charCodeAt(k) - password.charCodeAt(k - 1);\n if (last_delta == null) {\n last_delta = delta;\n }\n if (delta === last_delta) {\n continue;\n }\n j = k - 1;\n update(i, j, last_delta);\n i = j;\n last_delta = delta;\n }\n update(i, password.length - 1, last_delta);\n return result;\n },\n regex_match: function(password, _regexen) {\n var matches, regex, rx_match, token;\n if (_regexen == null) {\n _regexen = REGEXEN;\n }\n matches = [];\n for (name in _regexen) {\n regex = _regexen[name];\n regex.lastIndex = 0;\n while (rx_match = regex.exec(password)) {\n token = rx_match[0];\n matches.push({\n pattern: 'regex',\n token: token,\n i: rx_match.index,\n j: rx_match.index + rx_match[0].length - 1,\n regex_name: name,\n regex_match: rx_match\n });\n }\n }\n return this.sorted(matches);\n },\n date_match: function(password) {\n var best_candidate, candidate, candidates, distance, dmy, i, j, k, l, len1, len2, matches, maybe_date_no_separator, maybe_date_with_separator, metric, min_distance, o, p, q, r, ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9, rx_match, s, t, token;\n matches = [];\n maybe_date_no_separator = /^\\d{4,8}$/;\n maybe_date_with_separator = /^(\\d{1,4})([\\s\\/\\\\_.-])(\\d{1,2})\\2(\\d{1,4})$/;\n for (i = o = 0, ref = password.length - 4; 0 <= ref ? o <= ref : o >= ref; i = 0 <= ref ? ++o : --o) {\n for (j = p = ref1 = i + 3, ref2 = i + 7; ref1 <= ref2 ? p <= ref2 : p >= ref2; j = ref1 <= ref2 ? ++p : --p) {\n if (j >= password.length) {\n break;\n }\n token = password.slice(i, +j + 1 || 9e9);\n if (!maybe_date_no_separator.exec(token)) {\n continue;\n }\n candidates = [];\n ref3 = DATE_SPLITS[token.length];\n for (q = 0, len1 = ref3.length; q < len1; q++) {\n ref4 = ref3[q], k = ref4[0], l = ref4[1];\n dmy = this.map_ints_to_dmy([parseInt(token.slice(0, k)), parseInt(token.slice(k, l)), parseInt(token.slice(l))]);\n if (dmy != null) {\n candidates.push(dmy);\n }\n }\n if (!(candidates.length > 0)) {\n continue;\n }\n best_candidate = candidates[0];\n metric = function(candidate) {\n return Math.abs(candidate.year - scoring.REFERENCE_YEAR);\n };\n min_distance = metric(candidates[0]);\n ref5 = candidates.slice(1);\n for (r = 0, len2 = ref5.length; r < len2; r++) {\n candidate = ref5[r];\n distance = metric(candidate);\n if (distance < min_distance) {\n ref6 = [candidate, distance], best_candidate = ref6[0], min_distance = ref6[1];\n }\n }\n matches.push({\n pattern: 'date',\n token: token,\n i: i,\n j: j,\n separator: '',\n year: best_candidate.year,\n month: best_candidate.month,\n day: best_candidate.day\n });\n }\n }\n for (i = s = 0, ref7 = password.length - 6; 0 <= ref7 ? s <= ref7 : s >= ref7; i = 0 <= ref7 ? ++s : --s) {\n for (j = t = ref8 = i + 5, ref9 = i + 9; ref8 <= ref9 ? t <= ref9 : t >= ref9; j = ref8 <= ref9 ? ++t : --t) {\n if (j >= password.length) {\n break;\n }\n token = password.slice(i, +j + 1 || 9e9);\n rx_match = maybe_date_with_separator.exec(token);\n if (rx_match == null) {\n continue;\n }\n dmy = this.map_ints_to_dmy([parseInt(rx_match[1]), parseInt(rx_match[3]), parseInt(rx_match[4])]);\n if (dmy == null) {\n continue;\n }\n matches.push({\n pattern: 'date',\n token: token,\n i: i,\n j: j,\n separator: rx_match[2],\n year: dmy.year,\n month: dmy.month,\n day: dmy.day\n });\n }\n }\n return this.sorted(matches.filter(function(match) {\n var is_submatch, len3, other_match, u;\n is_submatch = false;\n for (u = 0, len3 = matches.length; u < len3; u++) {\n other_match = matches[u];\n if (match === other_match) {\n continue;\n }\n if (other_match.i <= match.i && other_match.j >= match.j) {\n is_submatch = true;\n break;\n }\n }\n return !is_submatch;\n }));\n },\n map_ints_to_dmy: function(ints) {\n var dm, int, len1, len2, len3, o, over_12, over_31, p, possible_year_splits, q, ref, ref1, rest, under_1, y;\n if (ints[1] > 31 || ints[1] <= 0) {\n return;\n }\n over_12 = 0;\n over_31 = 0;\n under_1 = 0;\n for (o = 0, len1 = ints.length; o < len1; o++) {\n int = ints[o];\n if ((99 < int && int < DATE_MIN_YEAR) || int > DATE_MAX_YEAR) {\n return;\n }\n if (int > 31) {\n over_31 += 1;\n }\n if (int > 12) {\n over_12 += 1;\n }\n if (int <= 0) {\n under_1 += 1;\n }\n }\n if (over_31 >= 2 || over_12 === 3 || under_1 >= 2) {\n return;\n }\n possible_year_splits = [[ints[2], ints.slice(0, 2)], [ints[0], ints.slice(1, 3)]];\n for (p = 0, len2 = possible_year_splits.length; p < len2; p++) {\n ref = possible_year_splits[p], y = ref[0], rest = ref[1];\n if ((DATE_MIN_YEAR <= y && y <= DATE_MAX_YEAR)) {\n dm = this.map_ints_to_dm(rest);\n if (dm != null) {\n return {\n year: y,\n month: dm.month,\n day: dm.day\n };\n } else {\n return;\n }\n }\n }\n for (q = 0, len3 = possible_year_splits.length; q < len3; q++) {\n ref1 = possible_year_splits[q], y = ref1[0], rest = ref1[1];\n dm = this.map_ints_to_dm(rest);\n if (dm != null) {\n y = this.two_to_four_digit_year(y);\n return {\n year: y,\n month: dm.month,\n day: dm.day\n };\n }\n }\n },\n map_ints_to_dm: function(ints) {\n var d, len1, m, o, ref, ref1;\n ref = [ints, ints.slice().reverse()];\n for (o = 0, len1 = ref.length; o < len1; o++) {\n ref1 = ref[o], d = ref1[0], m = ref1[1];\n if ((1 <= d && d <= 31) && (1 <= m && m <= 12)) {\n return {\n day: d,\n month: m\n };\n }\n }\n },\n two_to_four_digit_year: function(year) {\n if (year > 99) {\n return year;\n } else if (year > 50) {\n return year + 1900;\n } else {\n return year + 2000;\n }\n }\n};\n\nmodule.exports = matching;\n\n//# sourceMappingURL=matching.js.map\n","// Generated by CoffeeScript 1.10.0\nvar frequency_lists;\n\nfrequency_lists = {\n passwords: \"123456,password,12345678,qwerty,123456789,12345,1234,111111,1234567,dragon,123123,baseball,abc123,football,monkey,letmein,shadow,master,696969,mustang,666666,qwertyuiop,123321,1234567890,pussy,superman,654321,1qaz2wsx,7777777,fuckyou,qazwsx,jordan,123qwe,000000,killer,trustno1,hunter,harley,zxcvbnm,asdfgh,buster,batman,soccer,tigger,charlie,sunshine,iloveyou,fuckme,ranger,hockey,computer,starwars,asshole,pepper,klaster,112233,zxcvbn,freedom,princess,maggie,pass,ginger,11111111,131313,fuck,love,cheese,159753,summer,chelsea,dallas,biteme,matrix,yankees,6969,corvette,austin,access,thunder,merlin,secret,diamond,hello,hammer,fucker,1234qwer,silver,gfhjkm,internet,samantha,golfer,scooter,test,orange,cookie,q1w2e3r4t5,maverick,sparky,phoenix,mickey,bigdog,snoopy,guitar,whatever,chicken,camaro,mercedes,peanut,ferrari,falcon,cowboy,welcome,sexy,samsung,steelers,smokey,dakota,arsenal,boomer,eagles,tigers,marina,nascar,booboo,gateway,yellow,porsche,monster,spider,diablo,hannah,bulldog,junior,london,purple,compaq,lakers,iceman,qwer1234,hardcore,cowboys,money,banana,ncc1701,boston,tennis,q1w2e3r4,coffee,scooby,123654,nikita,yamaha,mother,barney,brandy,chester,fuckoff,oliver,player,forever,rangers,midnight,chicago,bigdaddy,redsox,angel,badboy,fender,jasper,slayer,rabbit,natasha,marine,bigdick,wizard,marlboro,raiders,prince,casper,fishing,flower,jasmine,iwantu,panties,adidas,winter,winner,gandalf,password1,enter,ghbdtn,1q2w3e4r,golden,cocacola,jordan23,winston,madison,angels,panther,blowme,sexsex,bigtits,spanky,bitch,sophie,asdfasdf,horny,thx1138,toyota,tiger,dick,canada,12344321,blowjob,8675309,muffin,liverpoo,apples,qwerty123,passw0rd,abcd1234,pokemon,123abc,slipknot,qazxsw,123456a,scorpion,qwaszx,butter,startrek,rainbow,asdfghjkl,razz,newyork,redskins,gemini,cameron,qazwsxedc,florida,liverpool,turtle,sierra,viking,booger,butthead,doctor,rocket,159357,dolphins,captain,bandit,jaguar,packers,pookie,peaches,789456,asdf,dolphin,helpme,blue,theman,maxwell,qwertyui,shithead,lovers,maddog,giants,nirvana,metallic,hotdog,rosebud,mountain,warrior,stupid,elephant,suckit,success,bond007,jackass,alexis,porn,lucky,scorpio,samson,q1w2e3,azerty,rush2112,driver,freddy,1q2w3e4r5t,sydney,gators,dexter,red123,123456q,12345a,bubba,creative,voodoo,golf,trouble,america,nissan,gunner,garfield,bullshit,asdfghjk,5150,fucking,apollo,1qazxsw2,2112,eminem,legend,airborne,bear,beavis,apple,brooklyn,godzilla,skippy,4815162342,buddy,qwert,kitten,magic,shelby,beaver,phantom,asdasd,xavier,braves,darkness,blink182,copper,platinum,qweqwe,tomcat,01012011,girls,bigboy,102030,animal,police,online,11223344,voyager,lifehack,12qwaszx,fish,sniper,315475,trinity,blazer,heaven,lover,snowball,playboy,loveme,bubbles,hooters,cricket,willow,donkey,topgun,nintendo,saturn,destiny,pakistan,pumpkin,digital,sergey,redwings,explorer,tits,private,runner,therock,guinness,lasvegas,beatles,789456123,fire,cassie,christin,qwerty1,celtic,asdf1234,andrey,broncos,007007,babygirl,eclipse,fluffy,cartman,michigan,carolina,testing,alexande,birdie,pantera,cherry,vampire,mexico,dickhead,buffalo,genius,montana,beer,minecraft,maximus,flyers,lovely,stalker,metallica,doggie,snickers,speedy,bronco,lol123,paradise,yankee,horses,magnum,dreams,147258369,lacrosse,ou812,goober,enigma,qwertyu,scotty,pimpin,bollocks,surfer,cock,poohbear,genesis,star,asd123,qweasdzxc,racing,hello1,hawaii,eagle1,viper,poopoo,einstein,boobies,12345q,bitches,drowssap,simple,badger,alaska,action,jester,drummer,111222,spitfire,forest,maryjane,champion,diesel,svetlana,friday,hotrod,147258,chevy,lucky1,westside,security,google,badass,tester,shorty,thumper,hitman,mozart,zaq12wsx,boobs,reddog,010203,lizard,a123456,123456789a,ruslan,eagle,1232323q,scarface,qwerty12,147852,a12345,buddha,porno,420420,spirit,money1,stargate,qwe123,naruto,mercury,liberty,12345qwert,semperfi,suzuki,popcorn,spooky,marley,scotland,kitty,cherokee,vikings,simpsons,rascal,qweasd,hummer,loveyou,michael1,patches,russia,jupiter,penguin,passion,cumshot,vfhbyf,honda,vladimir,sandman,passport,raider,bastard,123789,infinity,assman,bulldogs,fantasy,sucker,1234554321,horney,domino,budlight,disney,ironman,usuckballz1,softball,brutus,redrum,bigred,mnbvcxz,fktrcfylh,karina,marines,digger,kawasaki,cougar,fireman,oksana,monday,cunt,justice,nigger,super,wildcats,tinker,logitech,dancer,swordfis,avalon,everton,alexandr,motorola,patriots,hentai,madonna,pussy1,ducati,colorado,connor,juventus,galore,smooth,freeuser,warcraft,boogie,titanic,wolverin,elizabet,arizona,valentin,saints,asdfg,accord,test123,password123,christ,yfnfif,stinky,slut,spiderma,naughty,chopper,hello123,ncc1701d,extreme,skyline,poop,zombie,pearljam,123qweasd,froggy,awesome,vision,pirate,fylhtq,dreamer,bullet,predator,empire,123123a,kirill,charlie1,panthers,penis,skipper,nemesis,rasdzv3,peekaboo,rolltide,cardinal,psycho,danger,mookie,happy1,wanker,chevelle,manutd,goblue,9379992,hobbes,vegeta,fyfcnfcbz,852456,picard,159951,windows,loverboy,victory,vfrcbv,bambam,serega,123654789,turkey,tweety,galina,hiphop,rooster,changeme,berlin,taurus,suckme,polina,electric,avatar,134679,maksim,raptor,alpha1,hendrix,newport,bigcock,brazil,spring,a1b2c3,madmax,alpha,britney,sublime,darkside,bigman,wolfpack,classic,hercules,ronaldo,letmein1,1q2w3e,741852963,spiderman,blizzard,123456789q,cheyenne,cjkysirj,tiger1,wombat,bubba1,pandora,zxc123,holiday,wildcat,devils,horse,alabama,147852369,caesar,12312,buddy1,bondage,pussycat,pickle,shaggy,catch22,leather,chronic,a1b2c3d4,admin,qqq111,qaz123,airplane,kodiak,freepass,billybob,sunset,katana,phpbb,chocolat,snowman,angel1,stingray,firebird,wolves,zeppelin,detroit,pontiac,gundam,panzer,vagina,outlaw,redhead,tarheels,greenday,nastya,01011980,hardon,engineer,dragon1,hellfire,serenity,cobra,fireball,lickme,darkstar,1029384756,01011,mustang1,flash,124578,strike,beauty,pavilion,01012000,bobafett,dbrnjhbz,bigmac,bowling,chris1,ytrewq,natali,pyramid,rulez,welcome1,dodgers,apache,swimming,whynot,teens,trooper,fuckit,defender,precious,135790,packard,weasel,popeye,lucifer,cancer,icecream,142536,raven,swordfish,presario,viktor,rockstar,blonde,james1,wutang,spike,pimp,atlanta,airforce,thailand,casino,lennon,mouse,741852,hacker,bluebird,hawkeye,456123,theone,catfish,sailor,goldfish,nfnmzyf,tattoo,pervert,barbie,maxima,nipples,machine,trucks,wrangler,rocks,tornado,lights,cadillac,bubble,pegasus,madman,longhorn,browns,target,666999,eatme,qazwsx123,microsoft,dilbert,christia,baller,lesbian,shooter,xfiles,seattle,qazqaz,cthutq,amateur,prelude,corona,freaky,malibu,123qweasdzxc,assassin,246810,atlantis,integra,pussies,iloveu,lonewolf,dragons,monkey1,unicorn,software,bobcat,stealth,peewee,openup,753951,srinivas,zaqwsx,valentina,shotgun,trigger,veronika,bruins,coyote,babydoll,joker,dollar,lestat,rocky1,hottie,random,butterfly,wordpass,smiley,sweety,snake,chipper,woody,samurai,devildog,gizmo,maddie,soso123aljg,mistress,freedom1,flipper,express,hjvfirf,moose,cessna,piglet,polaris,teacher,montreal,cookies,wolfgang,scully,fatboy,wicked,balls,tickle,bunny,dfvgbh,foobar,transam,pepsi,fetish,oicu812,basketba,toshiba,hotstuff,sunday,booty,gambit,31415926,impala,stephani,jessica1,hooker,lancer,knicks,shamrock,fuckyou2,stinger,314159,redneck,deftones,squirt,siemens,blaster,trucker,subaru,renegade,ibanez,manson,swinger,reaper,blondie,mylove,galaxy,blahblah,enterpri,travel,1234abcd,babylon5,indiana,skeeter,master1,sugar,ficken,smoke,bigone,sweetpea,fucked,trfnthbyf,marino,escort,smitty,bigfoot,babes,larisa,trumpet,spartan,valera,babylon,asdfghj,yankees1,bigboobs,stormy,mister,hamlet,aardvark,butterfl,marathon,paladin,cavalier,manchester,skater,indigo,hornet,buckeyes,01011990,indians,karate,hesoyam,toronto,diamonds,chiefs,buckeye,1qaz2wsx3edc,highland,hotsex,charger,redman,passwor,maiden,drpepper,storm,pornstar,garden,12345678910,pencil,sherlock,timber,thuglife,insane,pizza,jungle,jesus1,aragorn,1a2b3c,hamster,david1,triumph,techno,lollol,pioneer,catdog,321654,fktrctq,morpheus,141627,pascal,shadow1,hobbit,wetpussy,erotic,consumer,blabla,justme,stones,chrissy,spartak,goforit,burger,pitbull,adgjmptw,italia,barcelona,hunting,colors,kissme,virgin,overlord,pebbles,sundance,emerald,doggy,racecar,irina,element,1478963,zipper,alpine,basket,goddess,poison,nipple,sakura,chichi,huskers,13579,pussys,q12345,ultimate,ncc1701e,blackie,nicola,rommel,matthew1,caserta,omega,geronimo,sammy1,trojan,123qwe123,philips,nugget,tarzan,chicks,aleksandr,bassman,trixie,portugal,anakin,dodger,bomber,superfly,madness,q1w2e3r4t5y6,loser,123asd,fatcat,ybrbnf,soldier,warlock,wrinkle1,desire,sexual,babe,seminole,alejandr,951753,11235813,westham,andrei,concrete,access14,weed,letmein2,ladybug,naked,christop,trombone,tintin,bluesky,rhbcnbyf,qazxswedc,onelove,cdtnkfyf,whore,vfvjxrf,titans,stallion,truck,hansolo,blue22,smiles,beagle,panama,kingkong,flatron,inferno,mongoose,connect,poiuyt,snatch,qawsed,juice,blessed,rocker,snakes,turbo,bluemoon,sex4me,finger,jamaica,a1234567,mulder,beetle,fuckyou1,passat,immortal,plastic,123454321,anthony1,whiskey,dietcoke,suck,spunky,magic1,monitor,cactus,exigen,planet,ripper,teen,spyder,apple1,nolimit,hollywoo,sluts,sticky,trunks,1234321,14789632,pickles,sailing,bonehead,ghbdtnbr,delta,charlott,rubber,911911,112358,molly1,yomama,hongkong,jumper,william1,ilovesex,faster,unreal,cumming,memphis,1123581321,nylons,legion,sebastia,shalom,pentium,geheim,werewolf,funtime,ferret,orion,curious,555666,niners,cantona,sprite,philly,pirates,abgrtyu,lollipop,eternity,boeing,super123,sweets,cooldude,tottenha,green1,jackoff,stocking,7895123,moomoo,martini,biscuit,drizzt,colt45,fossil,makaveli,snapper,satan666,maniac,salmon,patriot,verbatim,nasty,shasta,asdzxc,shaved,blackcat,raistlin,qwerty12345,punkrock,cjkywt,01012010,4128,waterloo,crimson,twister,oxford,musicman,seinfeld,biggie,condor,ravens,megadeth,wolfman,cosmos,sharks,banshee,keeper,foxtrot,gn56gn56,skywalke,velvet,black1,sesame,dogs,squirrel,privet,sunrise,wolverine,sucks,legolas,grendel,ghost,cats,carrot,frosty,lvbnhbq,blades,stardust,frog,qazwsxed,121314,coolio,brownie,groovy,twilight,daytona,vanhalen,pikachu,peanuts,licker,hershey,jericho,intrepid,ninja,1234567a,zaq123,lobster,goblin,punisher,strider,shogun,kansas,amadeus,seven7,jason1,neptune,showtime,muscle,oldman,ekaterina,rfrfirf,getsome,showme,111222333,obiwan,skittles,danni,tanker,maestro,tarheel,anubis,hannibal,anal,newlife,gothic,shark,fighter,blue123,blues,123456z,princes,slick,chaos,thunder1,sabine,1q2w3e4r5t6y,python,test1,mirage,devil,clover,tequila,chelsea1,surfing,delete,potato,chubby,panasonic,sandiego,portland,baggins,fusion,sooners,blackdog,buttons,californ,moscow,playtime,mature,1a2b3c4d,dagger,dima,stimpy,asdf123,gangster,warriors,iverson,chargers,byteme,swallow,liquid,lucky7,dingdong,nymets,cracker,mushroom,456852,crusader,bigguy,miami,dkflbvbh,bugger,nimrod,tazman,stranger,newpass,doodle,powder,gotcha,guardian,dublin,slapshot,septembe,147896325,pepsi1,milano,grizzly,woody1,knights,photos,2468,nookie,charly,rammstein,brasil,123321123,scruffy,munchkin,poopie,123098,kittycat,latino,walnut,1701,thegame,viper1,1passwor,kolobok,picasso,robert1,barcelon,bananas,trance,auburn,coltrane,eatshit,goodluck,starcraft,wheels,parrot,postal,blade,wisdom,pink,gorilla,katerina,pass123,andrew1,shaney14,dumbass,osiris,fuck_inside,oakland,discover,ranger1,spanking,lonestar,bingo,meridian,ping,heather1,dookie,stonecol,megaman,192837465,rjntyjr,ledzep,lowrider,25802580,richard1,firefly,griffey,racerx,paradox,ghjcnj,gangsta,zaq1xsw2,tacobell,weezer,sirius,halflife,buffett,shiloh,123698745,vertigo,sergei,aliens,sobaka,keyboard,kangaroo,sinner,soccer1,0.0.000,bonjour,socrates,chucky,hotboy,sprint,0007,sarah1,scarlet,celica,shazam,formula1,sommer,trebor,qwerasdf,jeep,mailcreated5240,bollox,asshole1,fuckface,honda1,rebels,vacation,lexmark,penguins,12369874,ragnarok,formula,258456,tempest,vfhecz,tacoma,qwertz,colombia,flames,rockon,duck,prodigy,wookie,dodgeram,mustangs,123qaz,sithlord,smoker,server,bang,incubus,scoobydo,oblivion,molson,kitkat,titleist,rescue,zxcv1234,carpet,1122,bigballs,tardis,jimbob,xanadu,blueeyes,shaman,mersedes,pooper,pussy69,golfing,hearts,mallard,12312312,kenwood,patrick1,dogg,cowboys1,oracle,123zxc,nuttertools,102938,topper,1122334455,shemale,sleepy,gremlin,yourmom,123987,gateway1,printer,monkeys,peterpan,mikey,kingston,cooler,analsex,jimbo,pa55word,asterix,freckles,birdman,frank1,defiant,aussie,stud,blondes,tatyana,445566,aspirine,mariners,jackal,deadhead,katrin,anime,rootbeer,frogger,polo,scooter1,hallo,noodles,thomas1,parola,shaolin,celine,11112222,plymouth,creampie,justdoit,ohyeah,fatass,assfuck,amazon,1234567q,kisses,magnus,camel,nopass,bosco,987456,6751520,harley1,putter,champs,massive,spidey,lightnin,camelot,letsgo,gizmodo,aezakmi,bones,caliente,12121,goodtime,thankyou,raiders1,brucelee,redalert,aquarius,456654,catherin,smokin,pooh,mypass,astros,roller,porkchop,sapphire,qwert123,kevin1,a1s2d3f4,beckham,atomic,rusty1,vanilla,qazwsxedcrfv,hunter1,kaktus,cxfcnmt,blacky,753159,elvis1,aggies,blackjac,bangkok,scream,123321q,iforgot,power1,kasper,abc12,buster1,slappy,shitty,veritas,chevrole,amber1,01012001,vader,amsterdam,jammer,primus,spectrum,eduard,granny,horny1,sasha1,clancy,usa123,satan,diamond1,hitler,avenger,1221,spankme,123456qwerty,simba,smudge,scrappy,labrador,john316,syracuse,front242,falcons,husker,candyman,commando,gator,pacman,delta1,pancho,krishna,fatman,clitoris,pineappl,lesbians,8j4ye3uz,barkley,vulcan,punkin,boner,celtics,monopoly,flyboy,romashka,hamburg,123456aa,lick,gangbang,223344,area51,spartans,aaa111,tricky,snuggles,drago,homerun,vectra,homer1,hermes,topcat,cuddles,infiniti,1234567890q,cosworth,goose,phoenix1,killer1,ivanov,bossman,qawsedrf,peugeot,exigent,doberman,durango,brandon1,plumber,telefon,horndog,laguna,rbhbkk,dawg,webmaster,breeze,beast,porsche9,beefcake,leopard,redbull,oscar1,topdog,godsmack,theking,pics,omega1,speaker,viktoria,fuckers,bowler,starbuck,gjkbyf,valhalla,anarchy,blacks,herbie,kingpin,starfish,nokia,loveit,achilles,906090,labtec,ncc1701a,fitness,jordan1,brando,arsenal1,bull,kicker,napass,desert,sailboat,bohica,tractor,hidden,muppet,jackson1,jimmy1,terminator,phillies,pa55w0rd,terror,farside,swingers,legacy,frontier,butthole,doughboy,jrcfyf,tuesday,sabbath,daniel1,nebraska,homers,qwertyuio,azamat,fallen,agent007,striker,camels,iguana,looker,pinkfloy,moloko,qwerty123456,dannyboy,luckydog,789654,pistol,whocares,charmed,skiing,select,franky,puppy,daniil,vladik,vette,vfrcbvrf,ihateyou,nevada,moneys,vkontakte,mandingo,puppies,666777,mystic,zidane,kotenok,dilligaf,budman,bunghole,zvezda,123457,triton,golfball,technics,trojans,panda,laptop,rookie,01011991,15426378,aberdeen,gustav,jethro,enterprise,igor,stripper,filter,hurrican,rfnthbyf,lespaul,gizmo1,butch,132435,dthjybrf,1366613,excalibu,963852,nofear,momoney,possum,cutter,oilers,moocow,cupcake,gbpltw,batman1,splash,svetik,super1,soleil,bogdan,melissa1,vipers,babyboy,tdutybq,lancelot,ccbill,keystone,passwort,flamingo,firefox,dogman,vortex,rebel,noodle,raven1,zaphod,killme,pokemon1,coolman,danila,designer,skinny,kamikaze,deadman,gopher,doobie,warhammer,deeznuts,freaks,engage,chevy1,steve1,apollo13,poncho,hammers,azsxdc,dracula,000007,sassy,bitch1,boots,deskjet,12332,macdaddy,mighty,rangers1,manchest,sterlin,casey1,meatball,mailman,sinatra,cthulhu,summer1,bubbas,cartoon,bicycle,eatpussy,truelove,sentinel,tolkien,breast,capone,lickit,summit,123456k,peter1,daisy1,kitty1,123456789z,crazy1,jamesbon,texas1,sexygirl,362436,sonic,billyboy,redhot,microsof,microlab,daddy1,rockets,iloveyo,fernand,gordon24,danie,cutlass,polska,star69,titties,pantyhos,01011985,thekid,aikido,gofish,mayday,1234qwe,coke,anfield,sony,lansing,smut,scotch,sexx,catman,73501505,hustler,saun,dfkthbz,passwor1,jenny1,azsxdcfv,cheers,irish1,gabrie,tinman,orioles,1225,charlton,fortuna,01011970,airbus,rustam,xtreme,bigmoney,zxcasd,retard,grumpy,huskies,boxing,4runner,kelly1,ultima,warlord,fordf150,oranges,rotten,asdfjkl,superstar,denali,sultan,bikini,saratoga,thor,figaro,sixers,wildfire,vladislav,128500,sparta,mayhem,greenbay,chewie,music1,number1,cancun,fabie,mellon,poiuytrewq,cloud9,crunch,bigtime,chicken1,piccolo,bigbird,321654987,billy1,mojo,01011981,maradona,sandro,chester1,bizkit,rjirfrgbde,789123,rightnow,jasmine1,hyperion,treasure,meatloaf,armani,rovers,jarhead,01011986,cruise,coconut,dragoon,utopia,davids,cosmo,rfhbyf,reebok,1066,charli,giorgi,sticks,sayang,pass1234,exodus,anaconda,zaqxsw,illini,woofwoof,emily1,sandy1,packer,poontang,govols,jedi,tomato,beaner,cooter,creamy,lionking,happy123,albatros,poodle,kenworth,dinosaur,greens,goku,happyday,eeyore,tsunami,cabbage,holyshit,turkey50,memorex,chaser,bogart,orgasm,tommy1,volley,whisper,knopka,ericsson,walleye,321123,pepper1,katie1,chickens,tyler1,corrado,twisted,100000,zorro,clemson,zxcasdqwe,tootsie,milana,zenith,fktrcfylhf,shania,frisco,polniypizdec0211,crazybab,junebug,fugazi,rereirf,vfvekz,1001,sausage,vfczyz,koshka,clapton,justin1,anhyeuem,condom,fubar,hardrock,skywalker,tundra,cocks,gringo,150781,canon,vitalik,aspire,stocks,samsung1,applepie,abc12345,arjay,gandalf1,boob,pillow,sparkle,gmoney,rockhard,lucky13,samiam,everest,hellyeah,bigsexy,skorpion,rfrnec,hedgehog,australi,candle,slacker,dicks,voyeur,jazzman,america1,bobby1,br0d3r,wolfie,vfksirf,1qa2ws3ed,13243546,fright,yosemite,temp,karolina,fart,barsik,surf,cheetah,baddog,deniska,starship,bootie,milena,hithere,kume,greatone,dildo,50cent,0.0.0.000,albion,amanda1,midget,lion,maxell,football1,cyclone,freeporn,nikola,bonsai,kenshin,slider,balloon,roadkill,killbill,222333,jerkoff,78945612,dinamo,tekken,rambler,goliath,cinnamon,malaka,backdoor,fiesta,packers1,rastaman,fletch,sojdlg123aljg,stefano,artemis,calico,nyjets,damnit,robotech,duchess,rctybz,hooter,keywest,18436572,hal9000,mechanic,pingpong,operator,presto,sword,rasputin,spank,bristol,faggot,shado,963852741,amsterda,321456,wibble,carrera,alibaba,majestic,ramses,duster,route66,trident,clipper,steeler,wrestlin,divine,kipper,gotohell,kingfish,snake1,passwords,buttman,pompey,viagra,zxcvbnm1,spurs,332211,slutty,lineage2,oleg,macross,pooter,brian1,qwert1,charles1,slave,jokers,yzerman,swimmer,ne1469,nwo4life,solnce,seamus,lolipop,pupsik,moose1,ivanova,secret1,matador,love69,420247,ktyjxrf,subway,cinder,vermont,pussie,chico,florian,magick,guiness,allsop,ghetto,flash1,a123456789,typhoon,dfkthf,depeche,skydive,dammit,seeker,fuckthis,crysis,kcj9wx5n,umbrella,r2d2c3po,123123q,snoopdog,critter,theboss,ding,162534,splinter,kinky,cyclops,jayhawk,456321,caramel,qwer123,underdog,caveman,onlyme,grapes,feather,hotshot,fuckher,renault,george1,sex123,pippen,000001,789987,floppy,cunts,megapass,1000,pornos,usmc,kickass,great1,quattro,135246,wassup,helloo,p0015123,nicole1,chivas,shannon1,bullseye,java,fishes,blackhaw,jamesbond,tunafish,juggalo,dkflbckfd,123789456,dallas1,translator,122333,beanie,alucard,gfhjkm123,supersta,magicman,ashley1,cohiba,xbox360,caligula,12131415,facial,7753191,dfktynbyf,cobra1,cigars,fang,klingon,bob123,safari,looser,10203,deepthroat,malina,200000,tazmania,gonzo,goalie,jacob1,monaco,cruiser,misfit,vh5150,tommyboy,marino13,yousuck,sharky,vfhufhbnf,horizon,absolut,brighton,123456r,death1,kungfu,maxx,forfun,mamapapa,enter1,budweise,banker,getmoney,kostya,qazwsx12,bigbear,vector,fallout,nudist,gunners,royals,chainsaw,scania,trader,blueboy,walrus,eastside,kahuna,qwerty1234,love123,steph,01011989,cypress,champ,undertaker,ybrjkfq,europa,snowboar,sabres,moneyman,chrisbln,minime,nipper,groucho,whitey,viewsonic,penthous,wolf359,fabric,flounder,coolguy,whitesox,passme,smegma,skidoo,thanatos,fucku2,snapple,dalejr,mondeo,thesims,mybaby,panasoni,sinbad,thecat,topher,frodo,sneakers,q123456,z1x2c3,alfa,chicago1,taylor1,ghjcnjnfr,cat123,olivier,cyber,titanium,0420,madison1,jabroni,dang,hambone,intruder,holly1,gargoyle,sadie1,static,poseidon,studly,newcastl,sexxxx,poppy,johannes,danzig,beastie,musica,buckshot,sunnyday,adonis,bluedog,bonkers,2128506,chrono,compute,spawn,01011988,turbo1,smelly,wapbbs,goldstar,ferrari1,778899,quantum,pisces,boomboom,gunnar,1024,test1234,florida1,nike,superman1,multiplelo,custom,motherlode,1qwerty,westwood,usnavy,apple123,daewoo,korn,stereo,sasuke,sunflowe,watcher,dharma,555777,mouse1,assholes,babyblue,123qwerty,marius,walmart,snoop,starfire,tigger1,paintbal,knickers,aaliyah,lokomotiv,theend,winston1,sapper,rover,erotica,scanner,racer,zeus,sexy69,doogie,bayern,joshua1,newbie,scott1,losers,droopy,outkast,martin1,dodge1,wasser,ufkbyf,rjycnfynby,thirteen,12345z,112211,hotred,deejay,hotpussy,192837,jessic,philippe,scout,panther1,cubbies,havefun,magpie,fghtkm,avalanch,newyork1,pudding,leonid,harry1,cbr600,audia4,bimmer,fucku,01011984,idontknow,vfvfgfgf,1357,aleksey,builder,01011987,zerocool,godfather,mylife,donuts,allmine,redfish,777888,sascha,nitram,bounce,333666,smokes,1x2zkg8w,rodman,stunner,zxasqw12,hoosier,hairy,beretta,insert,123456s,rtyuehe,francesc,tights,cheese1,micron,quartz,hockey1,gegcbr,searay,jewels,bogey,paintball,celeron,padres,bing,syncmaster,ziggy,simon1,beaches,prissy,diehard,orange1,mittens,aleksandra,queens,02071986,biggles,thongs,southpark,artur,twinkle,gretzky,rabota,cambiami,monalisa,gollum,chuckles,spike1,gladiator,whisky,spongebob,sexy1,03082006,mazafaka,meathead,4121,ou8122,barefoot,12345678q,cfitymrf,bigass,a1s2d3,kosmos,blessing,titty,clevelan,terrapin,ginger1,johnboy,maggot,clarinet,deeznutz,336699,stumpy,stoney,footbal,traveler,volvo,bucket,snapon,pianoman,hawkeyes,futbol,casanova,tango,goodboy,scuba,honey1,sexyman,warthog,mustard,abc1234,nickel,10203040,meowmeow,1012,boricua,prophet,sauron,12qwas,reefer,andromeda,crystal1,joker1,90210,goofy,loco,lovesex,triangle,whatsup,mellow,bengals,monster1,maste,01011910,lover1,love1,123aaa,sunshin,smeghead,hokies,sting,welder,rambo,cerberus,bunny1,rockford,monke,1q2w3e4r5,goldwing,gabriell,buzzard,crjhgbjy,james007,rainman,groove,tiberius,purdue,nokia6300,hayabusa,shou,jagger,diver,zigzag,poochie,usarmy,phish,redwood,redwing,12345679,salamander,silver1,abcd123,sputnik,boobie,ripple,eternal,12qw34er,thegreat,allstar,slinky,gesperrt,mishka,whiskers,pinhead,overkill,sweet1,rhfcjnrf,montgom240,sersolution,jamie1,starman,proxy,swords,nikolay,bacardi,rasta,badgirl,rebecca1,wildman,penny1,spaceman,1007,10101,logan1,hacked,bulldog1,helmet,windsor,buffy1,runescape,trapper,123451,banane,dbrnjh,ripken,12345qwe,frisky,shun,fester,oasis,lightning,ib6ub9,cicero,kool,pony,thedog,784512,01011992,megatron,illusion,edward1,napster,11223,squash,roadking,woohoo,19411945,hoosiers,01091989,tracker,bagira,midway,leavemealone,br549,14725836,235689,menace,rachel1,feng,laser,stoned,realmadrid,787898,balloons,tinkerbell,5551212,maria1,pobeda,heineken,sonics,moonlight,optimus,comet,orchid,02071982,jaybird,kashmir,12345678a,chuang,chunky,peach,mortgage,rulezzz,saleen,chuckie,zippy,fishing1,gsxr750,doghouse,maxim,reader,shai,buddah,benfica,chou,salomon,meister,eraser,blackbir,bigmike,starter,pissing,angus,deluxe,eagles1,hardcock,135792468,mian,seahawks,godfathe,bookworm,gregor,intel,talisman,blackjack,babyface,hawaiian,dogfood,zhong,01011975,sancho,ludmila,medusa,mortimer,123456654321,roadrunn,just4me,stalin,01011993,handyman,alphabet,pizzas,calgary,clouds,password2,cgfhnfr,f**k,cubswin,gong,lexus,max123,xxx123,digital1,gfhjkm1,7779311,missy1,michae,beautifu,gator1,1005,pacers,buddie,chinook,heckfy,dutchess,sally1,breasts,beowulf,darkman,jenn,tiffany1,zhei,quan,qazwsx1,satana,shang,idontkno,smiths,puddin,nasty1,teddybea,valkyrie,passwd,chao,boxster,killers,yoda,cheater,inuyasha,beast1,wareagle,foryou,dragonball,mermaid,bhbirf,teddy1,dolphin1,misty1,delphi,gromit,sponge,qazzaq,fytxrf,gameover,diao,sergi,beamer,beemer,kittykat,rancid,manowar,adam12,diggler,assword,austin1,wishbone,gonavy,sparky1,fisting,thedude,sinister,1213,venera,novell,salsero,jayden,fuckoff1,linda1,vedder,02021987,1pussy,redline,lust,jktymrf,02011985,dfcbkbq,dragon12,chrome,gamecube,titten,cong,bella1,leng,02081988,eureka,bitchass,147369,banner,lakota,123321a,mustafa,preacher,hotbox,02041986,z1x2c3v4,playstation,01011977,claymore,electra,checkers,zheng,qing,armagedon,02051986,wrestle,svoboda,bulls,nimbus,alenka,madina,newpass6,onetime,aa123456,bartman,02091987,silverad,electron,12345t,devil666,oliver1,skylar,rhtdtlrj,gobucks,johann,12011987,milkman,02101985,camper,thunderb,bigbutt,jammin,davide,cheeks,goaway,lighter,claudi,thumbs,pissoff,ghostrider,cocaine,teng,squall,lotus,hootie,blackout,doitnow,subzero,02031986,marine1,02021988,pothead,123456qw,skate,1369,peng,antoni,neng,miao,bcfields,1492,marika,794613,musashi,tulips,nong,piao,chai,ruan,southpar,02061985,nude,mandarin,654123,ninjas,cannabis,jetski,xerxes,zhuang,kleopatra,dickie,bilbo,pinky,morgan1,1020,1017,dieter,baseball1,tottenham,quest,yfnfkmz,dirtbike,1234567890a,mango,jackson5,ipswich,iamgod,02011987,tdutybz,modena,qiao,slippery,qweasd123,bluefish,samtron,toon,111333,iscool,02091986,petrov,fuzzy,zhou,1357924680,mollydog,deng,02021986,1236987,pheonix,zhun,ghblehjr,othello,starcraf,000111,sanfran,a11111,cameltoe,badman,vasilisa,jiang,1qaz2ws,luan,sveta,12qw12,akira,chuai,369963,cheech,beatle,pickup,paloma,01011983,caravan,elizaveta,gawker,banzai,pussey,mullet,seng,bingo1,bearcat,flexible,farscape,borussia,zhuai,templar,guitar1,toolman,yfcntymrf,chloe1,xiang,slave1,guai,nuggets,02081984,mantis,slim,scorpio1,fyutkbyf,thedoors,02081987,02061986,123qq123,zappa,fergie,7ugd5hip2j,huai,asdfzxcv,sunflower,pussyman,deadpool,bigtit,01011982,love12,lassie,skyler,gatorade,carpedie,jockey,mancity,spectre,02021984,cameron1,artemka,reng,02031984,iomega,jing,moritz,spice,rhino,spinner,heater,zhai,hover,talon,grease,qiong,corleone,ltybcrf,tian,cowboy1,hippie,chimera,ting,alex123,02021985,mickey1,corsair,sonoma,aaron1,xxxpass,bacchus,webmaste,chuo,xyz123,chrysler,spurs1,artem,shei,cosmic,01020304,deutsch,gabriel1,123455,oceans,987456321,binladen,latinas,a12345678,speedo,buttercu,02081989,21031988,merlot,millwall,ceng,kotaku,jiong,dragonba,2580,stonecold,snuffy,01011999,02011986,hellos,blaze,maggie1,slapper,istanbul,bonjovi,babylove,mazda,bullfrog,phoeni,meng,porsche1,nomore,02061989,bobdylan,capslock,orion1,zaraza,teddybear,ntktajy,myname,rong,wraith,mets,niao,02041984,smokie,chevrolet,dialog,gfhjkmgfhjkm,dotcom,vadim,monarch,athlon,mikey1,hamish,pian,liang,coolness,chui,thoma,ramones,ciccio,chippy,eddie1,house1,ning,marker,cougars,jackpot,barbados,reds,pdtplf,knockers,cobalt,amateurs,dipshit,napoli,kilroy,pulsar,jayhawks,daemon,alexey,weng,shuang,9293709b13,shiner,eldorado,soulmate,mclaren,golfer1,andromed,duan,50spanks,sexyboy,dogshit,02021983,shuo,kakashka,syzygy,111111a,yeahbaby,qiang,netscape,fulham,120676,gooner,zhui,rainbow6,laurent,dog123,halifax,freeway,carlitos,147963,eastwood,microphone,monkey12,1123,persik,coldbeer,geng,nuan,danny1,fgtkmcby,entropy,gadget,just4fun,sophi,baggio,carlito,1234567891,02021989,02041983,specialk,piramida,suan,bigblue,salasana,hopeful,mephisto,bailey1,hack,annie1,generic,violetta,spencer1,arcadia,02051983,hondas,9562876,trainer,jones1,smashing,liao,159632,iceberg,rebel1,snooker,temp123,zang,matteo,fastball,q2w3e4r5,bamboo,fuckyo,shutup,astro,buddyboy,nikitos,redbird,maxxxx,shitface,02031987,kuai,kissmyass,sahara,radiohea,1234asdf,wildcard,maxwell1,patric,plasma,heynow,bruno1,shao,bigfish,misfits,sassy1,sheng,02011988,02081986,testpass,nanook,cygnus,licking,slavik,pringles,xing,1022,ninja1,submit,dundee,tiburon,pinkfloyd,yummy,shuai,guang,chopin,obelix,insomnia,stroker,1a2s3d4f,1223,playboy1,lazarus,jorda,spider1,homerj,sleeper,02041982,darklord,cang,02041988,02041987,tripod,magician,jelly,telephon,15975,vsjasnel12,pasword,iverson3,pavlov,homeboy,gamecock,amigo,brodie,budapest,yjdsqgfhjkm,reckless,02011980,pang,tiger123,2469,mason1,orient,01011979,zong,cdtnbr,maksimka,1011,bushido,taxman,giorgio,sphinx,kazantip,02101984,concorde,verizon,lovebug,georg,sam123,seadoo,qazwsxedc123,jiao,jezebel,pharmacy,abnormal,jellybea,maxime,puffy,islander,bunnies,jiggaman,drakon,010180,pluto,zhjckfd,12365,classics,crusher,mordor,hooligan,strawberry,02081985,scrabble,hawaii50,1224,wg8e3wjf,cthtuf,premium,arrow,123456qwe,mazda626,ramrod,tootie,rhjrjlbk,ghost1,1211,bounty,niang,02071984,goat,killer12,sweetnes,porno1,masamune,426hemi,corolla,mariposa,hjccbz,doomsday,bummer,blue12,zhao,bird33,excalibur,samsun,kirsty,buttfuck,kfhbcf,zhuo,marcello,ozzy,02021982,dynamite,655321,master12,123465,lollypop,stepan,1qa2ws,spiker,goirish,callum,michael2,moonbeam,attila,henry1,lindros,andrea1,sporty,lantern,12365478,nextel,violin,volcom,998877,water1,imation,inspiron,dynamo,citadel,placebo,clowns,tiao,02061988,tripper,dabears,haggis,merlin1,02031985,anthrax,amerika,iloveme,vsegda,burrito,bombers,snowboard,forsaken,katarina,a1a2a3,woofer,tigger2,fullmoon,tiger2,spock,hannah1,snoopy1,sexxxy,sausages,stanislav,cobain,robotics,exotic,green123,mobydick,senators,pumpkins,fergus,asddsa,147741,258852,windsurf,reddevil,vfitymrf,nevermind,nang,woodland,4417,mick,shui,q1q2q3,wingman,69696,superb,zuan,ganesh,pecker,zephyr,anastasiya,icu812,larry1,02081982,broker,zalupa,mihail,vfibyf,dogger,7007,paddle,varvara,schalke,1z2x3c,presiden,yankees2,tuning,poopy,02051982,concord,vanguard,stiffy,rjhjktdf,felix1,wrench,firewall,boxer,bubba69,popper,02011984,temppass,gobears,cuan,tipper,fuckme1,kamila,thong,puss,bigcat,drummer1,02031982,sowhat,digimon,tigers1,rang,jingle,bian,uranus,soprano,mandy1,dusty1,fandango,aloha,pumpkin1,postman,02061980,dogcat,bombay,pussy123,onetwo,highheel,pippo,julie1,laura1,pepito,beng,smokey1,stylus,stratus,reload,duckie,karen1,jimbo1,225588,369258,krusty,snappy,asdf12,electro,111qqq,kuang,fishin,clit,abstr,christma,qqqqq1,1234560,carnage,guyver,boxers,kittens,zeng,1000000,qwerty11,toaster,cramps,yugioh,02061987,icehouse,zxcvbnm123,pineapple,namaste,harrypotter,mygirl,falcon1,earnhard,fender1,spikes,nutmeg,01081989,dogboy,02091983,369852,softail,mypassword,prowler,bigboss,1112,harvest,heng,jubilee,killjoy,basset,keng,zaqxswcde,redsox1,biao,titan,misfit99,robot,wifey,kidrock,02101987,gameboy,enrico,1z2x3c4v,broncos1,arrows,havana,banger,cookie1,chriss,123qw,platypus,cindy1,lumber,pinball,foxy,london1,1023,05051987,02041985,password12,superma,longbow,radiohead,nigga,12051988,spongebo,qwert12345,abrakadabra,dodgers1,02101989,chillin,niceguy,pistons,hookup,santafe,bigben,jets,1013,vikings1,mankind,viktoriya,beardog,hammer1,02071980,reddwarf,magelan,longjohn,jennife,gilles,carmex2,02071987,stasik,bumper,doofus,slamdunk,pixies,garion,steffi,alessandro,beerman,niceass,warrior1,honolulu,134679852,visa,johndeer,mother1,windmill,boozer,oatmeal,aptiva,busty,delight,tasty,slick1,bergkamp,badgers,guitars,puffin,02091981,nikki1,irishman,miller1,zildjian,123000,airwolf,magnet,anai,install,02041981,02061983,astra,romans,megan1,mudvayne,freebird,muscles,dogbert,02091980,02091984,snowflak,01011900,mang,joseph1,nygiants,playstat,junior1,vjcrdf,qwer12,webhompas,giraffe,pelican,jefferso,comanche,bruiser,monkeybo,kjkszpj,123456l,micro,albany,02051987,angel123,epsilon,aladin,death666,hounddog,josephin,altima,chilly,02071988,78945,ultra,02041979,gasman,thisisit,pavel,idunno,kimmie,05051985,paulie,ballin,medion,moondog,manolo,pallmall,climber,fishbone,genesis1,153624,toffee,tbone,clippers,krypton,jerry1,picturs,compass,111111q,02051988,1121,02081977,sairam,getout,333777,cobras,22041987,bigblock,severin,booster,norwich,whiteout,ctrhtn,123456m,02061984,hewlett,shocker,fuckinside,02031981,chase1,white1,versace,123456789s,basebal,iloveyou2,bluebell,08031986,anthon,stubby,foreve,undertak,werder,saiyan,mama123,medic,chipmunk,mike123,mazdarx7,qwe123qwe,bowwow,kjrjvjnbd,celeb,choochoo,demo,lovelife,02051984,colnago,lithium,02051989,15051981,zzzxxx,welcom,anastasi,fidelio,franc,26061987,roadster,stone55,drifter,hookem,hellboy,1234qw,cbr900rr,sinned,good123654,storm1,gypsy,zebra,zachary1,toejam,buceta,02021979,testing1,redfox,lineage,mike1,highbury,koroleva,nathan1,washingt,02061982,02091985,vintage,redbaron,dalshe,mykids,11051987,macbeth,julien,james123,krasotka,111000,10011986,987123,pipeline,tatarin,sensei,codered,komodo,frogman,7894561230,nascar24,juicy,01031988,redrose,mydick,pigeon,tkbpfdtnf,smirnoff,1215,spam,winner1,flyfish,moskva,81fukkc,21031987,olesya,starligh,summer99,13041988,fishhead,freesex,super12,06061986,azazel,scoobydoo,02021981,cabron,yogibear,sheba1,konstantin,tranny,chilli,terminat,ghbywtccf,slowhand,soccer12,cricket1,fuckhead,1002,seagull,achtung,blam,bigbob,bdsm,nostromo,survivor,cnfybckfd,lemonade,boomer1,rainbow1,rober,irinka,cocksuck,peaches1,itsme,sugar1,zodiac,upyours,dinara,135791,sunny1,chiara,johnson1,02041989,solitude,habibi,sushi,markiz,smoke1,rockies,catwoman,johnny1,qwerty7,bearcats,username,01011978,wanderer,ohshit,02101986,sigma,stephen1,paradigm,02011989,flanker,sanity,jsbach,spotty,bologna,fantasia,chevys,borabora,cocker,74108520,123ewq,12021988,01061990,gtnhjdbx,02071981,01011960,sundevil,3000gt,mustang6,gagging,maggi,armstron,yfnfkb,13041987,revolver,02021976,trouble1,madcat,jeremy1,jackass1,volkswag,30051985,corndog,pool6123,marines1,03041991,pizza1,piggy,sissy,02031979,sunfire,angelus,undead,24061986,14061991,wildbill,shinobi,45m2do5bs,123qwer,21011989,cleopatr,lasvega,hornets,amorcit,11081989,coventry,nirvana1,destin,sidekick,20061988,02081983,gbhfvblf,sneaky,bmw325,22021989,nfytxrf,sekret,kalina,zanzibar,hotone,qazws,wasabi,heidi1,highlander,blues1,hitachi,paolo,23041987,slayer1,simba1,02011981,tinkerbe,kieran,01121986,172839,boiler,1125,bluesman,waffle,asdfgh01,threesom,conan,1102,reflex,18011987,nautilus,everlast,fatty,vader1,01071986,cyborg,ghbdtn123,birddog,rubble,02071983,suckers,02021973,skyhawk,12qw12qw,dakota1,joebob,nokia6233,woodie,longdong,lamer,troll,ghjcnjgfhjkm,420000,boating,nitro,armada,messiah,1031,penguin1,02091989,americ,02071989,redeye,asdqwe123,07071987,monty1,goten,spikey,sonata,635241,tokiohotel,sonyericsson,citroen,compaq1,1812,umpire,belmont,jonny,pantera1,nudes,palmtree,14111986,fenway,bighead,razor,gryphon,andyod22,aaaaa1,taco,10031988,enterme,malachi,dogface,reptile,01041985,dindom,handball,marseille,candy1,19101987,torino,tigge,matthias,viewsoni,13031987,stinker,evangelion,24011985,123456123,rampage,sandrine,02081980,thecrow,astral,28041987,sprinter,private1,seabee,shibby,02101988,25081988,fearless,junkie,01091987,aramis,antelope,draven,fuck1,mazda6,eggman,02021990,barselona,buddy123,19061987,fyfnjkbq,nancy1,12121990,10071987,sluggo,kille,hotties,irishka,zxcasdqwe123,shamus,fairlane,honeybee,soccer10,13061986,fantomas,17051988,10051987,20111986,gladiato,karachi,gambler,gordo,01011995,biatch,matthe,25800852,papito,excite,buffalo1,bobdole,cheshire,player1,28021992,thewho,10101986,pinky1,mentor,tomahawk,brown1,03041986,bismillah,bigpoppa,ijrjkfl,01121988,runaway,08121986,skibum,studman,helper,squeak,holycow,manfred,harlem,glock,gideon,987321,14021985,yellow1,wizard1,margarit,success1,medved,sf49ers,lambda,pasadena,johngalt,quasar,1776,02031980,coldplay,amand,playa,bigpimp,04041991,capricorn,elefant,sweetness,bruce1,luca,dominik,10011990,biker,09051945,datsun,elcamino,trinitro,malice,audi,voyager1,02101983,joe123,carpente,spartan1,mario1,glamour,diaper,12121985,22011988,winter1,asimov,callisto,nikolai,pebble,02101981,vendetta,david123,boytoy,11061985,02031989,iloveyou1,stupid1,cayman,casper1,zippo,yamahar1,wildwood,foxylady,calibra,02041980,27061988,dungeon,leedsutd,30041986,11051990,bestbuy,antares,dominion,24680,01061986,skillet,enforcer,derparol,01041988,196969,29071983,f00tball,purple1,mingus,25031987,21031990,remingto,giggles,klaste,3x7pxr,01011994,coolcat,29051989,megane,20031987,02051980,04041988,synergy,0000007,macman,iforget,adgjmp,vjqgfhjkm,28011987,rfvfcenhf,16051989,25121987,16051987,rogue,mamamia,08051990,20091991,1210,carnival,bolitas,paris1,dmitriy,dimas,05051989,papillon,knuckles,29011985,hola,tophat,28021990,100500,cutiepie,devo,415263,ducks,ghjuhfvvf,asdqwe,22021986,freefall,parol,02011983,zarina,buste,vitamin,warez,bigones,17061988,baritone,jamess,twiggy,mischief,bitchy,hetfield,1003,dontknow,grinch,sasha_007,18061990,12031985,12031987,calimero,224466,letmei,15011987,acmilan,alexandre,02031977,08081988,whiteboy,21051991,barney1,02071978,money123,18091985,bigdawg,02031988,cygnusx1,zoloto,31011987,firefigh,blowfish,screamer,lfybbk,20051988,chelse,11121986,01031989,harddick,sexylady,30031988,02041974,auditt,pizdec,kojak,kfgjxrf,20091988,123456ru,wp2003wp,1204,15051990,slugger,kordell1,03031986,swinging,01011974,02071979,rockie,dimples,1234123,1dragon,trucking,rusty2,roger1,marijuana,kerouac,02051978,08031985,paco,thecure,keepout,kernel,noname123,13121985,francisc,bozo,02011982,22071986,02101979,obsidian,12345qw,spud,tabasco,02051985,jaguars,dfktynby,kokomo,popova,notused,sevens,4200,magneto,02051976,roswell,15101986,21101986,lakeside,bigbang,aspen,little1,14021986,loki,suckmydick,strawber,carlos1,nokian73,dirty1,joshu,25091987,16121987,02041975,advent,17011987,slimshady,whistler,10101990,stryker,22031984,15021985,01031985,blueball,26031988,ksusha,bahamut,robocop,w_pass,chris123,impreza,prozac,bookie,bricks,13021990,alice1,cassandr,11111q,john123,4ever,korova,02051973,142857,25041988,paramedi,eclipse1,salope,07091990,1124,darkangel,23021986,999666,nomad,02051981,smackdow,01021990,yoyoma,argentin,moonligh,57chevy,bootys,hardone,capricor,galant,spanker,dkflbr,24111989,magpies,krolik,21051988,cevthrb,cheddar,22041988,bigbooty,scuba1,qwedsa,duffman,bukkake,acura,johncena,sexxy,p@ssw0rd,258369,cherries,12345s,asgard,leopold,fuck123,mopar,lalakers,dogpound,matrix1,crusty,spanner,kestrel,fenris,universa,peachy,assasin,lemmein,eggplant,hejsan,canucks,wendy1,doggy1,aikman,tupac,turnip,godlike,fussball,golden1,19283746,april1,django,petrova,captain1,vincent1,ratman,taekwondo,chocha,serpent,perfect1,capetown,vampir,amore,gymnast,timeout,nbvjatq,blue32,ksenia,k.lvbkf,nazgul,budweiser,clutch,mariya,sylveste,02051972,beaker,cartman1,q11111,sexxx,forever1,loser1,marseill,magellan,vehpbr,sexgod,jktxrf,hallo123,132456,liverpool1,southpaw,seneca,camden,357159,camero,tenchi,johndoe,145236,roofer,741963,vlad,02041978,fktyrf,zxcv123,wingnut,wolfpac,notebook,pufunga7782,brandy1,biteme1,goodgirl,redhat,02031978,challeng,millenium,hoops,maveric,noname,angus1,gaell,onion,olympus,sabrina1,ricard,sixpack,gratis,gagged,camaross,hotgirls,flasher,02051977,bubba123,goldfing,moonshin,gerrard,volkov,sonyfuck,mandrake,258963,tracer,lakers1,asians,susan1,money12,helmut,boater,diablo2,1234zxcv,dogwood,bubbles1,happy2,randy1,aries,beach1,marcius2,navigator,goodie,hellokitty,fkbyjxrf,earthlink,lookout,jumbo,opendoor,stanley1,marie1,12345m,07071977,ashle,wormix,murzik,02081976,lakewood,bluejays,loveya,commande,gateway2,peppe,01011976,7896321,goth,oreo,slammer,rasmus,faith1,knight1,stone1,redskin,ironmaiden,gotmilk,destiny1,dejavu,1master,midnite,timosha,espresso,delfin,toriamos,oberon,ceasar,markie,1a2s3d,ghhh47hj7649,vjkjrj,daddyo,dougie,disco,auggie,lekker,therock1,ou8123,start1,noway,p4ssw0rd,shadow12,333444,saigon,2fast4u,capecod,23skidoo,qazxcv,beater,bremen,aaasss,roadrunner,peace1,12345qwer,02071975,platon,bordeaux,vbkfirf,135798642,test12,supernov,beatles1,qwert40,optimist,vanessa1,prince1,ilovegod,nightwish,natasha1,alchemy,bimbo,blue99,patches1,gsxr1000,richar,hattrick,hott,solaris,proton,nevets,enternow,beavis1,amigos,159357a,ambers,lenochka,147896,suckdick,shag,intercourse,blue1234,spiral,02061977,tosser,ilove,02031975,cowgirl,canuck,q2w3e4,munch,spoons,waterboy,123567,evgeniy,savior,zasada,redcar,mamacita,terefon,globus,doggies,htubcnhfwbz,1008,cuervo,suslik,azertyui,limewire,houston1,stratfor,steaua,coors,tennis1,12345qwerty,stigmata,derf,klondike,patrici,marijuan,hardball,odyssey,nineinch,boston1,pass1,beezer,sandr,charon,power123,a1234,vauxhall,875421,awesome1,reggae,boulder,funstuff,iriska,krokodil,rfntymrf,sterva,champ1,bball,peeper,m123456,toolbox,cabernet,sheepdog,magic32,pigpen,02041977,holein1,lhfrjy,banan,dabomb,natalie1,jennaj,montana1,joecool,funky,steven1,ringo,junio,sammy123,qqqwww,baltimor,footjob,geezer,357951,mash4077,cashmone,pancake,monic,grandam,bongo,yessir,gocubs,nastia,vancouve,barley,dragon69,watford,ilikepie,02071976,laddie,123456789m,hairball,toonarmy,pimpdadd,cvthnm,hunte,davinci,lback,sophie1,firenze,q1234567,admin1,bonanza,elway7,daman,strap,azert,wxcvbn,afrika,theforce,123456t,idefix,wolfen,houdini,scheisse,default,beech,maserati,02061976,sigmachi,dylan1,bigdicks,eskimo,mizzou,02101976,riccardo,egghead,111777,kronos,ghbrjk,chaos1,jomama,rfhnjirf,rodeo,dolemite,cafc91,nittany,pathfind,mikael,password9,vqsablpzla,purpl,gabber,modelsne,myxworld,hellsing,punker,rocknrol,fishon,fuck69,02041976,lolol,twinkie,tripleh,cirrus,redbone,killer123,biggun,allegro,gthcbr,smith1,wanking,bootsy,barry1,mohawk,koolaid,5329,futurama,samoht,klizma,996633,lobo,honeys,peanut1,556677,zxasqw,joemama,javelin,samm,223322,sandra1,flicks,montag,nataly,3006,tasha1,1235789,dogbone,poker1,p0o9i8u7,goodday,smoothie,toocool,max333,metroid,archange,vagabond,billabon,22061941,tyson1,02031973,darkange,skateboard,evolutio,morrowind,wizards,frodo1,rockin,cumslut,plastics,zaqwsxcde,5201314,doit,outback,bumble,dominiqu,persona,nevermore,alinka,02021971,forgetit,sexo,all4one,c2h5oh,petunia,sheeba,kenny1,elisabet,aolsucks,woodstoc,pumper,02011975,fabio,granada,scrapper,123459,minimoni,q123456789,breaker,1004,02091976,ncc74656,slimshad,friendster,austin31,wiseguy,donner,dilbert1,132465,blackbird,buffet,jellybean,barfly,behappy,01011971,carebear,fireblad,02051975,boxcar,cheeky,kiteboy,hello12,panda1,elvisp,opennow,doktor,alex12,02101977,pornking,flamengo,02091975,snowbird,lonesome,robin1,11111a,weed420,baracuda,bleach,12345abc,nokia1,metall,singapor,mariner,herewego,dingo,tycoon,cubs,blunts,proview,123456789d,kamasutra,lagnaf,vipergts,navyseal,starwar,masterbate,wildone,peterbil,cucumber,butkus,123qwert,climax,deniro,gotribe,cement,scooby1,summer69,harrier,shodan,newyear,02091977,starwars1,romeo1,sedona,harald,doubled,sasha123,bigguns,salami,awnyce,kiwi,homemade,pimping,azzer,bradley1,warhamme,linkin,dudeman,qwe321,pinnacle,maxdog,flipflop,lfitymrf,fucker1,acidburn,esquire,sperma,fellatio,jeepster,thedon,sexybitch,pookey,spliff,widget,vfntvfnbrf,trinity1,mutant,samuel1,meliss,gohome,1q2q3q,mercede,comein,grin,cartoons,paragon,henrik,rainyday,pacino,senna,bigdog1,alleycat,12345qaz,narnia,mustang2,tanya1,gianni,apollo11,wetter,clovis,escalade,rainbows,freddy1,smart1,daisydog,s123456,cocksucker,pushkin,lefty,sambo,fyutkjxtr,hiziad,boyz,whiplash,orchard,newark,adrenalin,1598753,bootsie,chelle,trustme,chewy,golfgti,tuscl,ambrosia,5wr2i7h8,penetration,shonuf,jughead,payday,stickman,gotham,kolokol,johnny5,kolbasa,stang,puppydog,charisma,gators1,mone,jakarta,draco,nightmar,01011973,inlove,laetitia,02091973,tarpon,nautica,meadow,0192837465,luckyone,14881488,chessie,goldeney,tarakan,69camaro,bungle,wordup,interne,fuckme2,515000,dragonfl,sprout,02081974,gerbil,bandit1,02071971,melanie1,phialpha,camber,kathy1,adriano,gonzo1,10293847,bigjohn,bismarck,7777777a,scamper,12348765,rabbits,222777,bynthytn,dima123,alexander1,mallorca,dragster,favorite6,beethove,burner,cooper1,fosters,hello2,normandy,777999,sebring,1michael,lauren1,blake1,killa,02091971,nounours,trumpet1,thumper1,playball,xantia,rugby1,rocknroll,guillaum,angela1,strelok,prosper,buttercup,masterp,dbnfkbr,cambridg,venom,treefrog,lumina,1234566,supra,sexybabe,freee,shen,frogs,driller,pavement,grace1,dicky,checker,smackdown,pandas,cannibal,asdffdsa,blue42,zyjxrf,nthvbyfnjh,melrose,neon,jabber,gamma,369258147,aprilia,atticus,benessere,catcher,skipper1,azertyuiop,sixty9,thierry,treetop,jello,melons,123456789qwe,tantra,buzzer,catnip,bouncer,computer1,sexyone,ananas,young1,olenka,sexman,mooses,kittys,sephiroth,contra,hallowee,skylark,sparkles,777333,1qazxsw23edc,lucas1,q1w2e3r,gofast,hannes,amethyst,ploppy,flower2,hotass,amatory,volleyba,dixie1,bettyboo,ticklish,02061974,frenchy,phish1,murphy1,trustno,02061972,leinad,mynameis,spooge,jupiter1,hyundai,frosch,junkmail,abacab,marbles,32167,casio,sunshine1,wayne1,longhair,caster,snicker,02101973,gannibal,skinhead,hansol,gatsby,segblue2,montecar,plato,gumby,kaboom,matty,bosco1,888999,jazzy,panter,jesus123,charlie2,giulia,candyass,sex69,travis1,farmboy,special1,02041973,letsdoit,password01,allison1,abcdefg1,notredam,ilikeit,789654123,liberty1,rugger,uptown,alcatraz,123456w,airman,007bond,navajo,kenobi,terrier,stayout,grisha,frankie1,fluff,1qazzaq1,1234561,virginie,1234568,tango1,werdna,octopus,fitter,dfcbkbcf,blacklab,115599,montrose,allen1,supernova,frederik,ilovepussy,justice1,radeon,playboy2,blubber,sliver,swoosh,motocros,lockdown,pearls,thebear,istheman,pinetree,biit,1234rewq,rustydog,tampabay,titts,babycake,jehovah,vampire1,streaming,collie,camil,fidelity,calvin1,stitch,gatit,restart,puppy1,budgie,grunt,capitals,hiking,dreamcas,zorro1,321678,riffraff,makaka,playmate,napalm,rollin,amstel,zxcvb123,samanth,rumble,fuckme69,jimmys,951357,pizzaman,1234567899,tralala,delpiero,alexi,yamato,itisme,1million,vfndtq,kahlua,londo,wonderboy,carrots,tazz,ratboy,rfgecnf,02081973,nico,fujitsu,tujhrf,sergbest,blobby,02051970,sonic1,1357911,smirnov,video1,panhead,bucky,02031974,44332211,duffer,cashmoney,left4dead,bagpuss,salman,01011972,titfuck,66613666,england1,malish,dresden,lemans,darina,zapper,123456as,123456qqq,met2002,02041972,redstar,blue23,1234509876,pajero,booyah,please1,tetsuo,semper,finder,hanuman,sunlight,123456n,02061971,treble,cupoi,password99,dimitri,3ip76k2,popcorn1,lol12345,stellar,nympho,shark1,keith1,saskia,bigtruck,revoluti,rambo1,asd222,feelgood,phat,gogators,bismark,cola,puck,furball,burnout,slonik,bowtie,mommy1,icecube,fabienn,mouser,papamama,rolex,giants1,blue11,trooper1,momdad,iklo,morten,rhubarb,gareth,123456d,blitz,canada1,r2d2,brest,tigercat,usmarine,lilbit,benny1,azrael,lebowski,12345r,madagaskar,begemot,loverman,dragonballz,italiano,mazda3,naughty1,onions,diver1,cyrano,capcom,asdfg123,forlife,fisherman,weare138,requiem,mufasa,alpha123,piercing,hellas,abracadabra,duckman,caracas,macintos,02011971,jordan2,crescent,fduecn,hogtied,eatmenow,ramjet,18121812,kicksass,whatthe,discus,rfhfvtkmrf,rufus1,sqdwfe,mantle,vegitto,trek,dan123,paladin1,rudeboy,liliya,lunchbox,riversid,acapulco,libero,dnsadm,maison,toomuch,boobear,hemlock,sextoy,pugsley,misiek,athome,migue,altoids,marcin,123450,rhfcfdbwf,jeter2,rhinos,rjhjkm,mercury1,ronaldinho,shampoo,makayla,kamilla,masterbating,tennesse,holger,john1,matchbox,hores,poptart,parlament,goodyear,asdfgh1,02081970,hardwood,alain,erection,hfytnrb,highlife,implants,benjami,dipper,jeeper,bendover,supersonic,babybear,laserjet,gotenks,bama,natedogg,aol123,pokemo,rabbit1,raduga,sopranos,cashflow,menthol,pharao,hacking,334455,ghjcnbnenrf,lizzy,muffin1,pooky,penis1,flyer,gramma,dipset,becca,ireland1,diana1,donjuan,pong,ziggy1,alterego,simple1,cbr900,logger,111555,claudia1,cantona7,matisse,ljxtymrf,victori,harle,mamas,encore,mangos,iceman1,diamon,alexxx,tiamat,5000,desktop,mafia,smurf,princesa,shojou,blueberr,welkom,maximka,123890,123q123,tammy1,bobmarley,clips,demon666,ismail,termite,laser1,missie,altair,donna1,bauhaus,trinitron,mogwai,flyers88,juniper,nokia5800,boroda,jingles,qwerasdfzxcv,shakur,777666,legos,mallrats,1qazxsw,goldeneye,tamerlan,julia1,backbone,spleen,49ers,shady,darkone,medic1,justi,giggle,cloudy,aisan,douche,parkour,bluejay,huskers1,redwine,1qw23er4,satchmo,1231234,nineball,stewart1,ballsack,probes,kappa,amiga,flipper1,dortmund,963258,trigun,1237895,homepage,blinky,screwy,gizzmo,belkin,chemist,coolhand,chachi,braves1,thebest,greedisgood,pro100,banana1,101091m,123456g,wonderfu,barefeet,8inches,1111qqqq,kcchiefs,qweasdzxc123,metal1,jennifer1,xian,asdasd123,pollux,cheerleaers,fruity,mustang5,turbos,shopper,photon,espana,hillbill,oyster,macaroni,gigabyte,jesper,motown,tuxedo,buster12,triplex,cyclones,estrell,mortis,holla,456987,fiddle,sapphic,jurassic,thebeast,ghjcnjq,baura,spock1,metallica1,karaoke,nemrac58,love1234,02031970,flvbybcnhfnjh,frisbee,diva,ajax,feathers,flower1,soccer11,allday,mierda,pearl1,amature,marauder,333555,redheads,womans,egorka,godbless,159263,nimitz,aaaa1111,sashka,madcow,socce,greywolf,baboon,pimpdaddy,123456789r,reloaded,lancia,rfhfylfi,dicker,placid,grimace,22446688,olemiss,whores,culinary,wannabe,maxi,1234567aa,amelie,riley1,trample,phantom1,baberuth,bramble,asdfqwer,vides,4you,abc123456,taichi,aztnm,smother,outsider,hakr,blackhawk,bigblack,girlie,spook,valeriya,gianluca,freedo,1q2q3q4q,handbag,lavalamp,cumm,pertinant,whatup,nokia123,redlight,patrik,111aaa,poppy1,dfytxrf,aviator,sweeps,kristin1,cypher,elway,yinyang,access1,poophead,tucson,noles1,monterey,waterfal,dank,dougal,918273,suede,minnesot,legman,bukowski,ganja,mammoth,riverrat,asswipe,daredevi,lian,arizona1,kamikadze,alex1234,smile1,angel2,55bgates,bellagio,0001,wanrltw,stiletto,lipton,arsena,biohazard,bbking,chappy,tetris,as123456,darthvad,lilwayne,nopassword,7412369,123456789987654321,natchez,glitter,14785236,mytime,rubicon,moto,pyon,wazzup,tbird,shane1,nightowl,getoff,beckham7,trueblue,hotgirl,nevermin,deathnote,13131,taffy,bigal,copenhag,apricot,gallaries,dtkjcbgtl,totoro,onlyone,civicsi,jesse1,baby123,sierra1,festus,abacus,sickboy,fishtank,fungus,charle,golfpro,teensex,mario66,seaside,aleksei,rosewood,blackberry,1020304050,bedlam,schumi,deerhunt,contour,darkelf,surveyor,deltas,pitchers,741258963,dipstick,funny1,lizzard,112233445566,jupiter2,softtail,titman,greenman,z1x2c3v4b5,smartass,12345677,notnow,myworld,nascar1,chewbacc,nosferatu,downhill,dallas22,kuan,blazers,whales,soldat,craving,powerman,yfcntyf,hotrats,cfvceyu,qweasdzx,princess1,feline,qqwwee,chitown,1234qaz,mastermind,114477,dingbat,care1839,standby,kismet,atreides,dogmeat,icarus,monkeyboy,alex1,mouses,nicetits,sealteam,chopper1,crispy,winter99,rrpass1,myporn,myspace1,corazo,topolino,ass123,lawman,muffy,orgy,1love,passord,hooyah,ekmzyf,pretzel,amonra,nestle,01011950,jimbeam,happyman,z12345,stonewal,helios,manunited,harcore,dick1,gaymen,2hot4u,light1,qwerty13,kakashi,pjkjnj,alcatel,taylo,allah,buddydog,ltkmaby,mongo,blonds,start123,audia6,123456v,civilwar,bellaco,turtles,mustan,deadspin,aaa123,fynjirf,lucky123,tortoise,amor,summe,waterski,zulu,drag0n,dtxyjcnm,gizmos,strife,interacial,pusyy,goose1,bear1,equinox,matri,jaguar1,tobydog,sammys,nachos,traktor,bryan1,morgoth,444555,dasani,miami1,mashka,xxxxxx1,ownage,nightwin,hotlips,passmast,cool123,skolko,eldiablo,manu,1357908642,screwyou,badabing,foreplay,hydro,kubrick,seductive,demon1,comeon,galileo,aladdin,metoo,happines,902100,mizuno,caddy,bizzare,girls1,redone,ohmygod,sable,bonovox,girlies,hamper,opus,gizmodo1,aaabbb,pizzahut,999888,rocky2,anton1,kikimora,peavey,ocelot,a1a2a3a4,2wsx3edc,jackie1,solace,sprocket,galary,chuck1,volvo1,shurik,poop123,locutus,virago,wdtnjxtr,tequier,bisexual,doodles,makeitso,fishy,789632145,nothing1,fishcake,sentry,libertad,oaktree,fivestar,adidas1,vegitta,mississi,spiffy,carme,neutron,vantage,agassi,boners,123456789v,hilltop,taipan,barrage,kenneth1,fister,martian,willem,lfybkf,bluestar,moonman,ntktdbpjh,paperino,bikers,daffy,benji,quake,dragonfly,suckcock,danilka,lapochka,belinea,calypso,asshol,camero1,abraxas,mike1234,womam,q1q2q3q4q5,youknow,maxpower,pic\\'s,audi80,sonora,raymond1,tickler,tadpole,belair,crazyman,finalfantasy,999000,jonatha,paisley,kissmyas,morgana,monste,mantra,spunk,magic123,jonesy,mark1,alessand,741258,baddest,ghbdtnrfrltkf,zxccxz,tictac,augustin,racers,7grout,foxfire,99762000,openit,nathanie,1z2x3c4v5b,seadog,gangbanged,lovehate,hondacbr,harpoon,mamochka,fisherma,bismilla,locust,wally1,spiderman1,saffron,utjhubq,123456987,20spanks,safeway,pisser,bdfyjd,kristen1,bigdick1,magenta,vfhujif,anfisa,friday13,qaz123wsx,0987654321q,tyrant,guan,meggie,kontol,nurlan,ayanami,rocket1,yaroslav,websol76,mutley,hugoboss,websolutions,elpaso,gagarin,badboys,sephirot,918273645,newuser,qian,edcrfv,booger1,852258,lockout,timoxa94,mazda323,firedog,sokolova,skydiver,jesus777,1234567890z,soulfly,canary,malinka,guillerm,hookers,dogfart,surfer1,osprey,india123,rhjkbr,stoppedby,nokia5530,123456789o,blue1,werter,divers,3000,123456f,alpina,cali,whoknows,godspeed,986532,foreskin,fuzzy1,heyyou,didier,slapnuts,fresno,rosebud1,sandman1,bears1,blade1,honeybun,queen1,baronn,pakista,philipp,9111961,topsecret,sniper1,214365,slipper,letsfuck,pippen33,godawgs,mousey,qw123456,scrotum,loveis,lighthou,bp2002,nancy123,jeffrey1,susieq,buddy2,ralphie,trout1,willi,antonov,sluttey,rehbwf,marty1,darian,losangeles,letme1n,12345d,pusssy,godiva,ender,golfnut,leonidas,a1b2c3d4e5,puffer,general1,wizzard,lehjxrf,racer1,bigbucks,cool12,buddys,zinger,esprit,vbienrf,josep,tickling,froggie,987654321a,895623,daddys,crumbs,gucci,mikkel,opiate,tracy1,christophe,came11,777555,petrovich,humbug,dirtydog,allstate,horatio,wachtwoord,creepers,squirts,rotary,bigd,georgia1,fujifilm,2sweet,dasha,yorkie,slimjim,wiccan,kenzie,system1,skunk,b12345,getit,pommes,daredevil,sugars,bucker,piston,lionheart,1bitch,515051,catfight,recon,icecold,fantom,vodafone,kontakt,boris1,vfcnth,canine,01011961,valleywa,faraon,chickenwing101,qq123456,livewire,livelife,roosters,jeepers,ilya1234,coochie,pavlik,dewalt,dfhdfhf,architec,blackops,1qaz2wsx3edc4rfv,rhfcjnf,wsxedc,teaser,sebora,25252,rhino1,ankara,swifty,decimal,redleg,shanno,nermal,candies,smirnova,dragon01,photo1,ranetki,a1s2d3f4g5,axio,wertzu,maurizio,6uldv8,zxcvasdf,punkass,flowe,graywolf,peddler,3rjs1la7qe,mpegs,seawolf,ladyboy,pianos,piggies,vixen,alexus,orpheus,gdtrfb,z123456,macgyver,hugetits,ralph1,flathead,maurici,mailru,goofball,nissan1,nikon,stopit,odin,big1,smooch,reboot,famil,bullit,anthony7,gerhard,methos,124038,morena,eagle2,jessica2,zebras,getlost,gfynthf,123581321,sarajevo,indon,comets,tatjana,rfgbnjirf,joystick,batman12,123456c,sabre,beerme,victory1,kitties,1475369,badboy1,booboo1,comcast,slava,squid,saxophon,lionhear,qaywsx,bustle,nastena,roadway,loader,hillside,starlight,24681012,niggers,access99,bazooka,molly123,blackice,bandi,cocacol,nfhfrfy,timur,muschi,horse1,quant4307s,squerting,oscars,mygirls,flashman,tangerin,goofy1,p0o9i8,housewifes,newness,monkey69,escorpio,password11,hippo,warcraft3,qazxsw123,qpalzm,ribbit,ghbdtndctv,bogota,star123,258000,lincoln1,bigjim,lacoste,firestorm,legenda,indain,ludacris,milamber,1009,evangeli,letmesee,a111111,hooters1,bigred1,shaker,husky,a4tech,cnfkrth,argyle,rjhjdf,nataha,0o9i8u7y,gibson1,sooners1,glendale,archery,hoochie,stooge,aaaaaa1,scorpions,school1,vegas1,rapier,mike23,bassoon,groupd2013,macaco,baker1,labia,freewill,santiag,silverado,butch1,vflfufcrfh,monica1,rugrat,cornhole,aerosmit,bionicle,gfgfvfvf,daniel12,virgo,fmale,favorite2,detroit1,pokey,shredder,baggies,wednesda,cosmo1,mimosa,sparhawk,firehawk,romario,911turbo,funtimes,fhntvrf,nexus6,159753456,timothy1,bajingan,terry1,frenchie,raiden,1mustang,babemagnet,74123698,nadejda,truffles,rapture,douglas1,lamborghini,motocross,rjcvjc,748596,skeeter1,dante1,angel666,telecom,carsten,pietro,bmw318,astro1,carpediem,samir,orang,helium,scirocco,fuzzball,rushmore,rebelz,hotspur,lacrimosa,chevys10,madonna1,domenico,yfnfirf,jachin,shelby1,bloke,dawgs,dunhill,atlanta1,service1,mikado,devilman,angelit,reznor,euphoria,lesbain,checkmat,browndog,phreak,blaze1,crash1,farida,mutter,luckyme,horsemen,vgirl,jediknig,asdas,cesare,allnight,rockey,starlite,truck1,passfan,close-up,samue,cazzo,wrinkles,homely,eatme1,sexpot,snapshot,dima1995,asthma,thetruth,ducky,blender,priyanka,gaucho,dutchman,sizzle,kakarot,651550,passcode,justinbieber,666333,elodie,sanjay,110442,alex01,lotus1,2300mj,lakshmi,zoomer,quake3,12349876,teapot,12345687,ramada,pennywis,striper,pilot1,chingon,optima,nudity,ethan1,euclid,beeline,loyola,biguns,zaq12345,bravo1,disney1,buffa,assmunch,vivid,6661313,wellingt,aqwzsx,madala11,9874123,sigmar,pictere,tiptop,bettyboop,dinero,tahiti,gregory1,bionic,speed1,fubar1,lexus1,denis1,hawthorn,saxman,suntzu,bernhard,dominika,camaro1,hunter12,balboa,bmw2002,seville,diablo1,vfhbyjxrf,1234abc,carling,lockerroom,punani,darth,baron1,vaness,1password,libido,picher,232425,karamba,futyn007,daydream,11001001,dragon123,friends1,bopper,rocky123,chooch,asslover,shimmer,riddler,openme,tugboat,sexy123,midori,gulnara,christo,swatch,laker,offroad,puddles,hackers,mannheim,manager1,horseman,roman1,dancer1,komputer,pictuers,nokia5130,ejaculation,lioness,123456y,evilone,nastenka,pushok,javie,lilman,3141592,mjolnir,toulouse,pussy2,bigworm,smoke420,fullback,extensa,dreamcast,belize,delboy,willie1,casablanca,csyjxtr,ricky1,bonghit,salvator,basher,pussylover,rosie1,963258741,vivitron,cobra427,meonly,armageddon,myfriend,zardoz,qwedsazxc,kraken,fzappa,starfox,333999,illmatic,capoeira,weenie,ramzes,freedom2,toasty,pupkin,shinigami,fhvfutljy,nocturne,churchil,thumbnils,tailgate,neworder,sexymama,goarmy,cerebus,michelle1,vbifyz,surfsup,earthlin,dabulls,basketbal,aligator,mojojojo,saibaba,welcome2,wifes,wdtnjr,12345w,slasher,papabear,terran,footman,hocke,153759,texans,tom123,sfgiants,billabong,aassdd,monolith,xxx777,l3tm31n,ticktock,newone,hellno,japanees,contortionist,admin123,scout1,alabama1,divx1,rochard,privat,radar1,bigdad,fhctybq,tortuga,citrus,avanti,fantasy1,woodstock,s12345,fireman1,embalmer,woodwork,bonzai,konyor,newstart,jigga,panorama,goats,smithy,rugrats,hotmama,daedalus,nonstop,fruitbat,lisenok,quaker,violator,12345123,my3sons,cajun,fraggle,gayboy,oldfart,vulva,knickerless,orgasms,undertow,binky,litle,kfcnjxrf,masturbation,bunnie,alexis1,planner,transexual,sparty,leeloo,monies,fozzie,stinger1,landrove,anakonda,scoobie,yamaha1,henti,star12,rfhlbyfk,beyonce,catfood,cjytxrf,zealots,strat,fordtruc,archangel,silvi,sativa,boogers,miles1,bigjoe,tulip,petite,greentea,shitter,jonboy,voltron,morticia,evanescence,3edc4rfv,longshot,windows1,serge,aabbcc,starbucks,sinful,drywall,prelude1,www123,camel1,homebrew,marlins,123412,letmeinn,domini,swampy,plokij,fordf350,webcam,michele1,bolivi,27731828,wingzero,qawsedrftg,shinji,sverige,jasper1,piper1,cummer,iiyama,gocats,amour,alfarome,jumanji,mike69,fantasti,1monkey,w00t88,shawn1,lorien,1a2s3d4f5g,koleso,murph,natascha,sunkist,kennwort,emine,grinder,m12345,q1q2q3q4,cheeba,money2,qazwsxedc1,diamante,prosto,pdiddy,stinky1,gabby1,luckys,franci,pornographic,moochie,gfhjdjp,samdog,empire1,comicbookdb,emili,motdepasse,iphone,braveheart,reeses,nebula,sanjose,bubba2,kickflip,arcangel,superbow,porsche911,xyzzy,nigger1,dagobert,devil1,alatam,monkey2,barbara1,12345v,vfpfafrf,alessio,babemagn,aceman,arrakis,kavkaz,987789,jasons,berserk,sublime1,rogue1,myspace,buckwhea,csyekz,pussy4me,vette1,boots1,boingo,arnaud,budlite,redstorm,paramore,becky1,imtheman,chango,marley1,milkyway,666555,giveme,mahalo,lux2000,lucian,paddy,praxis,shimano,bigpenis,creeper,newproject2004,rammstei,j3qq4h7h2v,hfljcnm,lambchop,anthony2,bugman,gfhjkm12,dreamer1,stooges,cybersex,diamant,cowboyup,maximus1,sentra,615243,goethe,manhatta,fastcar,selmer,1213141516,yfnfitymrf,denni,chewey,yankee1,elektra,123456789p,trousers,fishface,topspin,orwell,vorona,sodapop,motherfu,ibilltes,forall,kookie,ronald1,balrog,maximilian,mypasswo,sonny1,zzxxcc,tkfkdg,magoo,mdogg,heeled,gitara,lesbos,marajade,tippy,morozova,enter123,lesbean,pounded,asd456,fialka,scarab,sharpie,spanky1,gstring,sachin,12345asd,princeto,hellohel,ursitesux,billows,1234kekc,kombat,cashew,duracell,kseniya,sevenof9,kostik,arthur1,corvet07,rdfhnbhf,songoku,tiberian,needforspeed,1qwert,dropkick,kevin123,panache,libra,a123456a,kjiflm,vfhnsirf,cntgfy,iamcool,narut,buffer,sk8ordie,urlaub,fireblade,blanked,marishka,gemini1,altec,gorillaz,chief1,revival47,ironman1,space1,ramstein,doorknob,devilmaycry,nemesis1,sosiska,pennstat,monday1,pioner,shevchenko,detectiv,evildead,blessed1,aggie,coffees,tical,scotts,bullwink,marsel,krypto,adrock,rjitxrf,asmodeus,rapunzel,theboys,hotdogs,deepthro,maxpayne,veronic,fyyeirf,otter,cheste,abbey1,thanos,bedrock,bartok,google1,xxxzzz,rodent,montecarlo,hernande,mikayla,123456789l,bravehea,12locked,ltymub,pegasus1,ameteur,saltydog,faisal,milfnew,momsuck,everques,ytngfhjkz,m0nkey,businessbabe,cooki,custard,123456ab,lbvjxrf,outlaws,753357,qwerty78,udacha,insider,chees,fuckmehard,shotokan,katya,seahorse,vtldtlm,turtle1,mike12,beebop,heathe,everton1,darknes,barnie,rbcekz,alisher,toohot,theduke,555222,reddog1,breezy,bulldawg,monkeyman,baylee,losangel,mastermi,apollo1,aurelie,zxcvb12345,cayenne,bastet,wsxzaq,geibcnbr,yello,fucmy69,redwall,ladybird,bitchs,cccccc1,rktjgfnhf,ghjdthrf,quest1,oedipus,linus,impalass,fartman,12345k,fokker,159753a,optiplex,bbbbbb1,realtor,slipkno,santacru,rowdy,jelena,smeller,3984240,ddddd1,sexyme,janet1,3698741,eatme69,cazzone,today1,poobear,ignatius,master123,newpass1,heather2,snoopdogg,blondinka,pass12,honeydew,fuckthat,890098890,lovem,goldrush,gecko,biker1,llama,pendejo,avalanche,fremont,snowman1,gandolf,chowder,1a2b3c4d5e,flyguy,magadan,1fuck,pingvin,nokia5230,ab1234,lothar,lasers,bignuts,renee1,royboy,skynet,12340987,1122334,dragrace,lovely1,22334455,booter,12345612,corvett,123456qq,capital1,videoes,funtik,wyvern,flange,sammydog,hulkster,13245768,not4you,vorlon,omegared,l58jkdjp!,filippo,123mudar,samadams,petrus,chris12,charlie123,123456789123,icetea,sunderla,adrian1,123qweas,kazanova,aslan,monkey123,fktyeirf,goodsex,123ab,lbtest,banaan,bluenose,837519,asd12345,waffenss,whateve,1a2a3a4a,trailers,vfhbirf,bhbcrf,klaatu,turk182,monsoon,beachbum,sunbeam,succes,clyde1,viking1,rawhide,bubblegum,princ,mackenzi,hershey1,222555,dima55,niggaz,manatee,aquila,anechka,pamel,bugsbunn,lovel,sestra,newport1,althor,hornyman,wakeup,zzz111,phishy,cerber,torrent,thething,solnishko,babel,buckeye1,peanu,ethernet,uncencored,baraka,665544,chris2,rb26dett,willy1,choppers,texaco,biggirl,123456b,anna2614,sukebe,caralho,callofduty,rt6ytere,jesus7,angel12,1money,timelord,allblack,pavlova,romanov,tequiero,yitbos,lookup,bulls23,snowflake,dickweed,barks,lever,irisha,firestar,fred1234,ghjnjnbg,danman,gatito,betty1,milhouse,kbctyjr,masterbaiting,delsol,papit,doggys,123698741,bdfyjdf,invictus,bloods,kayla1,yourmama,apple2,angelok,bigboy1,pontiac1,verygood,yeshua,twins2,porn4me,141516,rasta69,james2,bosshog,candys,adventur,stripe,djkjlz,dokken,austin316,skins,hogwarts,vbhevbh,navigato,desperado,xxx666,cneltyn,vasiliy,hazmat,daytek,eightbal,fred1,four20,74227422,fabia,aerosmith,manue,wingchun,boohoo,hombre,sanity72,goatboy,fuckm,partizan,avrora,utahjazz,submarin,pussyeat,heinlein,control1,costaric,smarty,chuan,triplets,snowy,snafu,teacher1,vangogh,vandal,evergree,cochise,qwerty99,pyramid1,saab900,sniffer,qaz741,lebron23,mark123,wolvie,blackbelt,yoshi,feeder,janeway,nutella,fuking,asscock,deepak,poppie,bigshow,housewife,grils,tonto,cynthia1,temptress,irakli,belle1,russell1,manders,frank123,seabass,gforce,songbird,zippy1,naught,brenda1,chewy1,hotshit,topaz,43046721,girfriend,marinka,jakester,thatsme,planeta,falstaff,patrizia,reborn,riptide,cherry1,shuan,nogard,chino,oasis1,qwaszx12,goodlife,davis1,1911a1,harrys,shitfuck,12345678900,russian7,007700,bulls1,porshe,danil,dolphi,river1,sabaka,gobigred,deborah1,volkswagen,miamo,alkaline,muffdive,1letmein,fkbyrf,goodguy,hallo1,nirvan,ozzie,cannonda,cvbhyjdf,marmite,germany1,joeblow,radio1,love11,raindrop,159852,jacko,newday,fathead,elvis123,caspe,citibank,sports1,deuce,boxter,fakepass,golfman,snowdog,birthday4,nonmembe,niklas,parsifal,krasota,theshit,1235813,maganda,nikita1,omicron,cassie1,columbo,buick,sigma1,thistle,bassin,rickster,apteka,sienna,skulls,miamor,coolgirl,gravis,1qazxc,virgini,hunter2,akasha,batma,motorcyc,bambino,tenerife,fordf250,zhuan,iloveporn,markiza,hotbabes,becool,fynjybyf,wapapapa,forme,mamont,pizda,dragonz,sharon1,scrooge,mrbill,pfloyd,leeroy,natedog,ishmael,777111,tecumseh,carajo,nfy.irf,0000000000o,blackcock,fedorov,antigone,feanor,novikova,bobert,peregrin,spartan117,pumkin,rayman,manuals,tooltime,555333,bonethug,marina1,bonnie1,tonyhawk,laracroft,mahalkita,18273645,terriers,gamer,hoser,littlema,molotok,glennwei,lemon1,caboose,tater,12345654321,brians,fritz1,mistral,jigsaw,fuckshit,hornyguy,southside,edthom,antonio1,bobmarle,pitures,ilikesex,crafty,nexus,boarder,fulcrum,astonvil,yanks1,yngwie,account1,zooropa,hotlegs,sammi,gumbo,rover1,perkele,maurolarastefy,lampard,357753,barracud,dmband,abcxyz,pathfinder,335577,yuliya,micky,jayman,asdfg12345,1596321,halcyon,rerfhtre,feniks,zaxscd,gotyoass,jaycee,samson1,jamesb,vibrate,grandpri,camino,colossus,davidb,mamo4ka,nicky1,homer123,pinguin,watermelon,shadow01,lasttime,glider,823762,helen1,pyramids,tulane,osama,rostov,john12,scoote,bhbyrf,gohan,galeries,joyful,bigpussy,tonka,mowgli,astalavista,zzz123,leafs,dalejr8,unicorn1,777000,primal,bigmama,okmijn,killzone,qaz12345,snookie,zxcvvcxz,davidc,epson,rockman,ceaser,beanbag,katten,3151020,duckhunt,segreto,matros,ragnar,699669,sexsexse,123123z,fuckyeah,bigbutts,gbcmrf,element1,marketin,saratov,elbereth,blaster1,yamahar6,grime,masha,juneau,1230123,pappy,lindsay1,mooner,seattle1,katzen,lucent,polly1,lagwagon,pixie,misiaczek,666666a,smokedog,lakers24,eyeball,ironhors,ametuer,volkodav,vepsrf,kimmy,gumby1,poi098,ovation,1q2w3,drinker,penetrating,summertime,1dallas,prima,modles,takamine,hardwork,macintosh,tahoe,passthie,chiks,sundown,flowers1,boromir,music123,phaedrus,albert1,joung,malakas,gulliver,parker1,balder,sonne,jessie1,domainlock2005,express1,vfkbyf,youandme,raketa,koala,dhjnvytyjub,nhfrnjh,testibil,ybrbnjc,987654321q,axeman,pintail,pokemon123,dogggg,shandy,thesaint,11122233,x72jhhu3z,theclash,raptors,zappa1,djdjxrf,hell666,friday1,vivaldi,pluto1,lance1,guesswho,jeadmi,corgan,skillz,skippy1,mango1,gymnastic,satori,362514,theedge,cxfcnkbdfz,sparkey,deicide,bagels,lololol,lemmings,r4e3w2q1,silve,staind,schnuffi,dazzle,basebal1,leroy1,bilbo1,luckie,qwerty2,goodfell,hermione,peaceout,davidoff,yesterda,killah,flippy,chrisb,zelda1,headless,muttley,fuckof,tittys,catdaddy,photog,beeker,reaver,ram1500,yorktown,bolero,tryagain,arman,chicco,learjet,alexei,jenna1,go2hell,12s3t4p55,momsanaladventure,mustang9,protoss,rooter,ginola,dingo1,mojave,erica1,1qazse4,marvin1,redwolf,sunbird,dangerou,maciek,girsl,hawks1,packard1,excellen,dashka,soleda,toonces,acetate,nacked,jbond007,alligator,debbie1,wellhung,monkeyma,supers,rigger,larsson,vaseline,rjnzhf,maripos,123456asd,cbr600rr,doggydog,cronic,jason123,trekker,flipmode,druid,sonyvaio,dodges,mayfair,mystuff,fun4me,samanta,sofiya,magics,1ranger,arcane,sixtynin,222444,omerta,luscious,gbyudby,bobcats,envision,chance1,seaweed,holdem,tomate,mensch,slicer,acura1,goochi,qweewq,punter,repoman,tomboy,never1,cortina,gomets,147896321,369852147,dogma,bhjxrf,loglatin,eragon,strato,gazelle,growler,885522,klaudia,payton34,fuckem,butchie,scorpi,lugano,123456789k,nichola,chipper1,spide,uhbujhbq,rsalinas,vfylfhby,longhorns,bugatti,everquest,!qaz2wsx,blackass,999111,snakeman,p455w0rd,fanatic,family1,pfqxbr,777vlad,mysecret,marat,phoenix2,october1,genghis,panties1,cooker,citron,ace123,1234569,gramps,blackcoc,kodiak1,hickory,ivanhoe,blackboy,escher,sincity,beaks,meandyou,spaniel,canon1,timmy1,lancaste,polaroid,edinburg,fuckedup,hotman,cueball,golfclub,gopack,bookcase,worldcup,dkflbvbhjdbx,twostep,17171717aa,letsplay,zolushka,stella1,pfkegf,kingtut,67camaro,barracuda,wiggles,gjhjkm,prancer,patata,kjifhf,theman1,romanova,sexyass,copper1,dobber,sokolov,pomidor,algernon,cadman,amoremio,william2,silly1,bobbys,hercule,hd764nw5d7e1vb1,defcon,deutschland,robinhood,alfalfa,machoman,lesbens,pandora1,easypay,tomservo,nadezhda,goonies,saab9000,jordyn,f15eagle,dbrecz,12qwerty,greatsex,thrawn,blunted,baywatch,doggystyle,loloxx,chevy2,january1,kodak,bushel,78963214,ub6ib9,zz8807zpl,briefs,hawker,224488,first1,bonzo,brent1,erasure,69213124,sidewind,soccer13,622521,mentos,kolibri,onepiece,united1,ponyboy,keksa12,wayer,mypussy,andrej,mischa,mille,bruno123,garter,bigpun,talgat,familia,jazzy1,mustang8,newjob,747400,bobber,blackbel,hatteras,ginge,asdfjkl;,camelot1,blue44,rebbyt34,ebony1,vegas123,myboys,aleksander,ijrjkflrf,lopata,pilsner,lotus123,m0nk3y,andreev,freiheit,balls1,drjynfrnt,mazda1,waterpolo,shibumi,852963,123bbb,cezer121,blondie1,volkova,rattler,kleenex,ben123,sanane,happydog,satellit,qazplm,qazwsxedcrfvtgb,meowmix,badguy,facefuck,spice1,blondy,major1,25000,anna123,654321a,sober1,deathrow,patterso,china1,naruto1,hawkeye1,waldo1,butchy,crayon,5tgb6yhn,klopik,crocodil,mothra,imhorny,pookie1,splatter,slippy,lizard1,router,buratino,yahweh,123698,dragon11,123qwe456,peepers,trucker1,ganjaman,1hxboqg2,cheyanne,storys,sebastie,zztop,maddison,4rfv3edc,darthvader,jeffro,iloveit,victor1,hotty,delphin,lifeisgood,gooseman,shifty,insertions,dude123,abrupt,123masha,boogaloo,chronos,stamford,pimpster,kthjxrf,getmein,amidala,flubber,fettish,grapeape,dantes,oralsex,jack1,foxcg33,winchest,francis1,getin,archon,cliffy,blueman,1basebal,sport1,emmitt22,porn123,bignasty,morga,123hfjdk147,ferrar,juanito,fabiol,caseydog,steveo,peternorth,paroll,kimchi,bootleg,gaijin,secre,acacia,eatme2,amarillo,monkey11,rfhfgep,tylers,a1a2a3a4a5,sweetass,blower,rodina,babushka,camilo,cimbom,tiffan,vfnbkmlf,ohbaby,gotigers,lindsey1,dragon13,romulus,qazxsw12,zxcvbn1,dropdead,hitman47,snuggle,eleven11,bloopers,357mag,avangard,bmw320,ginscoot,dshade,masterkey,voodoo1,rootedit,caramba,leahcim,hannover,8phrowz622,tim123,cassius,000000a,angelito,zzzzz1,badkarma,star1,malaga,glenwood,footlove,golf1,summer12,helpme1,fastcars,titan1,police1,polinka,k.jdm,marusya,augusto,shiraz,pantyhose,donald1,blaise,arabella,brigada,c3por2d2,peter01,marco1,hellow,dillweed,uzumymw,geraldin,loveyou2,toyota1,088011,gophers,indy500,slainte,5hsu75kpot,teejay,renat,racoon,sabrin,angie1,shiznit,harpua,sexyred,latex,tucker1,alexandru,wahoo,teamwork,deepblue,goodison,rundmc,r2d2c3p0,puppys,samba,ayrton,boobed,999777,topsecre,blowme1,123321z,loudog,random1,pantie,drevil,mandolin,121212q,hottub,brother1,failsafe,spade1,matvey,open1234,carmen1,priscill,schatzi,kajak,gooddog,trojans1,gordon1,kayak,calamity,argent,ufhvjybz,seviyi,penfold,assface,dildos,hawkwind,crowbar,yanks,ruffles,rastus,luv2epus,open123,aquafina,dawns,jared1,teufel,12345c,vwgolf,pepsi123,amores,passwerd,01478520,boliva,smutty,headshot,password3,davidd,zydfhm,gbgbcmrf,pornpass,insertion,ceckbr,test2,car123,checkit,dbnfkbq,niggas,nyyankee,muskrat,nbuhtyjr,gunner1,ocean1,fabienne,chrissy1,wendys,loveme89,batgirl,cerveza,igorek,steel1,ragman,boris123,novifarm,sexy12,qwerty777,mike01,giveitup,123456abc,fuckall,crevice,hackerz,gspot,eight8,assassins,texass,swallows,123458,baldur,moonshine,labatt,modem,sydney1,voland,dbnfkz,hotchick,jacker,princessa,dawgs1,holiday1,booper,reliant,miranda1,jamaica1,andre1,badnaamhere,barnaby,tiger7,david12,margaux,corsica,085tzzqi,universi,thewall,nevermor,martin6,qwerty77,cipher,apples1,0102030405,seraphim,black123,imzadi,gandon,ducati99,1shadow,dkflbvbhjdyf,44magnum,bigbad,feedme,samantha1,ultraman,redneck1,jackdog,usmc0311,fresh1,monique1,tigre,alphaman,cool1,greyhoun,indycar,crunchy,55chevy,carefree,willow1,063dyjuy,xrated,assclown,federica,hilfiger,trivia,bronco1,mamita,100200300,simcity,lexingky,akatsuki,retsam,johndeere,abudfv,raster,elgato,businka,satanas,mattingl,redwing1,shamil,patate,mannn,moonstar,evil666,b123456,bowl300,tanechka,34523452,carthage,babygir,santino,bondarenko,jesuss,chico1,numlock,shyguy,sound1,kirby1,needit,mostwanted,427900,funky1,steve123,passions,anduril,kermit1,prospero,lusty,barakuda,dream1,broodwar,porky,christy1,mahal,yyyyyy1,allan1,1sexy,flintsto,capri,cumeater,heretic,robert2,hippos,blindax,marykay,collecti,kasumi,1qaz!qaz,112233q,123258,chemistr,coolboy,0o9i8u,kabuki,righton,tigress,nessie,sergej,andrew12,yfafyz,ytrhjvfyn,angel7,victo,mobbdeep,lemming,transfor,1725782,myhouse,aeynbr,muskie,leno4ka,westham1,cvbhyjd,daffodil,pussylicker,pamela1,stuffer,warehous,tinker1,2w3e4r,pluton,louise1,polarbea,253634,prime1,anatoliy,januar,wysiwyg,cobraya,ralphy,whaler,xterra,cableguy,112233a,porn69,jamesd,aqualung,jimmy123,lumpy,luckyman,kingsize,golfing1,alpha7,leeds1,marigold,lol1234,teabag,alex11,10sne1,saopaulo,shanny,roland1,basser,3216732167,carol1,year2005,morozov,saturn1,joseluis,bushed,redrock,memnoch,lalaland,indiana1,lovegod,gulnaz,buffalos,loveyou1,anteater,pattaya,jaydee,redshift,bartek,summerti,coffee1,ricochet,incest,schastie,rakkaus,h2opolo,suikoden,perro,dance1,loveme1,whoopass,vladvlad,boober,flyers1,alessia,gfcgjhn,pipers,papaya,gunsling,coolone,blackie1,gonads,gfhjkzytn,foxhound,qwert12,gangrel,ghjvtntq,bluedevi,mywife,summer01,hangman,licorice,patter,vfr750,thorsten,515253,ninguna,dakine,strange1,mexic,vergeten,12345432,8phrowz624,stampede,floyd1,sailfish,raziel,ananda,giacomo,freeme,crfprf,74185296,allstars,master01,solrac,gfnhbjn,bayliner,bmw525,3465xxx,catter,single1,michael3,pentium4,nitrox,mapet123456,halibut,killroy,xxxxx1,phillip1,poopsie,arsenalfc,buffys,kosova,all4me,32165498,arslan,opensesame,brutis,charles2,pochta,nadegda,backspac,mustang0,invis,gogeta,654321q,adam25,niceday,truckin,gfdkbr,biceps,sceptre,bigdave,lauras,user345,sandys,shabba,ratdog,cristiano,natha,march13,gumball,getsdown,wasdwasd,redhead1,dddddd1,longlegs,13572468,starsky,ducksoup,bunnys,omsairam,whoami,fred123,danmark,flapper,swanky,lakings,yfhenj,asterios,rainier,searcher,dapper,ltdjxrf,horsey,seahawk,shroom,tkfkdgo,aquaman,tashkent,number9,messi10,1asshole,milenium,illumina,vegita,jodeci,buster01,bareback,goldfinger,fire1,33rjhjds,sabian,thinkpad,smooth1,sully,bonghits,sushi1,magnavox,colombi,voiture,limpone,oldone,aruba,rooster1,zhenya,nomar5,touchdow,limpbizkit,rhfcfdxbr,baphomet,afrodita,bball1,madiso,ladles,lovefeet,matthew2,theworld,thunderbird,dolly1,123rrr,forklift,alfons,berkut,speedy1,saphire,oilman,creatine,pussylov,bastard1,456258,wicked1,filimon,skyline1,fucing,yfnfkbz,hot123,abdulla,nippon,nolimits,billiard,booty1,buttplug,westlife,coolbean,aloha1,lopas,asasin,1212121,october2,whodat,good4u,d12345,kostas,ilya1992,regal,pioneer1,volodya,focus1,bastos,nbvjif,fenix,anita1,vadimka,nickle,jesusc,123321456,teste,christ1,essendon,evgenii,celticfc,adam1,forumwp,lovesme,26exkp,chillout,burly,thelast1,marcus1,metalgear,test11,ronaldo7,socrate,world1,franki,mommie,vicecity,postov1000,charlie3,oldschool,333221,legoland,antoshka,counterstrike,buggy,mustang3,123454,qwertzui,toons,chesty,bigtoe,tigger12,limpopo,rerehepf,diddle,nokia3250,solidsnake,conan1,rockroll,963369,titanic1,qwezxc,cloggy,prashant,katharin,maxfli,takashi,cumonme,michael9,mymother,pennstate,khalid,48151623,fightclub,showboat,mateusz,elrond,teenie,arrow1,mammamia,dustydog,dominator,erasmus,zxcvb1,1a2a3a,bones1,dennis1,galaxie,pleaseme,whatever1,junkyard,galadriel,charlies,2wsxzaq1,crimson1,behemoth,teres,master11,fairway,shady1,pass99,1batman,joshua12,baraban,apelsin,mousepad,melon,twodogs,123321qwe,metalica,ryjgrf,pipiska,rerfhfxf,lugnut,cretin,iloveu2,powerade,aaaaaaa1,omanko,kovalenko,isabe,chobits,151nxjmt,shadow11,zcxfcnkbdf,gy3yt2rgls,vfhbyrf,159753123,bladerunner,goodone,wonton,doodie,333666999,fuckyou123,kitty123,chisox,orlando1,skateboa,red12345,destroye,snoogans,satan1,juancarlo,goheels,jetson,scottt,fuckup,aleksa,gfhfljrc,passfind,oscar123,derrick1,hateme,viper123,pieman,audi100,tuffy,andover,shooter1,10000,makarov,grant1,nighthaw,13576479,browneye,batigol,nfvfhf,chocolate1,7hrdnw23,petter,bantam,morlii,jediknight,brenden,argonaut,goodstuf,wisconsi,315920,abigail1,dirtbag,splurge,k123456,lucky777,valdepen,gsxr600,322223,ghjnjrjk,zaq1xsw2cde3,schwanz,walter1,letmein22,nomads,124356,codeblue,nokian70,fucke,footbal1,agyvorc,aztecs,passw0r,smuggles,femmes,ballgag,krasnodar,tamuna,schule,sixtynine,empires,erfolg,dvader,ladygaga,elite1,venezuel,nitrous,kochamcie,olivia1,trustn01,arioch,sting1,131415,tristar,555000,maroon,135799,marsik,555556,fomoco,natalka,cwoui,tartan,davecole,nosferat,hotsauce,dmitry,horus,dimasik,skazka,boss302,bluebear,vesper,ultras,tarantul,asd123asd,azteca,theflash,8ball,1footbal,titlover,lucas123,number6,sampson1,789852,party1,dragon99,adonai,carwash,metropol,psychnau,vthctltc,hounds,firework,blink18,145632,wildcat1,satchel,rice80,ghtktcnm,sailor1,cubano,anderso,rocks1,mike11,famili,dfghjc,besiktas,roygbiv,nikko,bethan,minotaur,rakesh,orange12,hfleuf,jackel,myangel,favorite7,1478520,asssss,agnieszka,haley1,raisin,htubyf,1buster,cfiekz,derevo,1a2a3a4a5a,baltika,raffles,scruffy1,clitlick,louis1,buddha1,fy.nrf,walker1,makoto,shadow2,redbeard,vfvfvskfhfve,mycock,sandydog,lineman,network1,favorite8,longdick,mustangg,mavericks,indica,1killer,cisco1,angelofwar,blue69,brianna1,bubbaa,slayer666,level42,baldrick,brutus1,lowdown,haribo,lovesexy,500000,thissuck,picker,stephy,1fuckme,characte,telecast,1bigdog,repytwjdf,thematrix,hammerhe,chucha,ganesha,gunsmoke,georgi,sheltie,1harley,knulla,sallas,westie,dragon7,conker,crappie,margosha,lisboa,3e2w1q,shrike,grifter,ghjcnjghjcnj,asdfg1,mnbvcxz1,myszka,posture,boggie,rocketman,flhtyfkby,twiztid,vostok,pi314159,force1,televizor,gtkmvtym,samhain,imcool,jadzia,dreamers,strannik,k2trix,steelhea,nikitin,commodor,brian123,chocobo,whopper,ibilljpf,megafon,ararat,thomas12,ghbrjkbcn,q1234567890,hibernia,kings1,jim123,redfive,68camaro,iawgk2,xavier1,1234567u,d123456,ndirish,airborn,halfmoon,fluffy1,ranchero,sneaker,soccer2,passion1,cowman,birthday1,johnn,razzle,glock17,wsxqaz,nubian,lucky2,jelly1,henderso,eric1,123123e,boscoe01,fuck0ff,simpson1,sassie,rjyjgkz,nascar3,watashi,loredana,janus,wilso,conman,david2,mothe,iloveher,snikers,davidj,fkmnthyfnbdf,mettss,ratfink,123456h,lostsoul,sweet16,brabus,wobble,petra1,fuckfest,otters,sable1,svetka,spartacu,bigstick,milashka,1lover,pasport,champagn,papichul,hrvatska,hondacivic,kevins,tacit,moneybag,gohogs,rasta1,246813579,ytyfdbcnm,gubber,darkmoon,vitaliy,233223,playboys,tristan1,joyce1,oriflame,mugwump,access2,autocad,thematri,qweqwe123,lolwut,ibill01,multisyn,1233211,pelikan,rob123,chacal,1234432,griffon,pooch,dagestan,geisha,satriani,anjali,rocketma,gixxer,pendrago,vincen,hellokit,killyou,ruger,doodah,bumblebe,badlands,galactic,emachines,foghorn,jackso,jerem,avgust,frontera,123369,daisymae,hornyboy,welcome123,tigger01,diabl,angel13,interex,iwantsex,rockydog,kukolka,sawdust,online1,3234412,bigpapa,jewboy,3263827,dave123,riches,333222,tony1,toggle,farter,124816,tities,balle,brasilia,southsid,micke,ghbdtn12,patit,ctdfcnjgjkm,olds442,zzzzzz1,nelso,gremlins,gypsy1,carter1,slut69,farcry,7415963,michael8,birdie1,charl,123456789abc,100001,aztec,sinjin,bigpimpi,closeup,atlas1,nvidia,doggone,classic1,manana,malcolm1,rfkbyf,hotbabe,rajesh,dimebag,ganjubas,rodion,jagr68,seren,syrinx,funnyman,karapuz,123456789n,bloomin,admin18533362,biggdogg,ocarina,poopy1,hellome,internet1,booties,blowjobs,matt1,donkey1,swede,1jennife,evgeniya,lfhbyf,coach1,444777,green12,patryk,pinewood,justin12,271828,89600506779,notredame,tuborg,lemond,sk8ter,million1,wowser,pablo1,st0n3,jeeves,funhouse,hiroshi,gobucs,angeleye,bereza,winter12,catalin,qazedc,andros,ramazan,vampyre,sweethea,imperium,murat,jamest,flossy,sandeep,morgen,salamandra,bigdogg,stroller,njdevils,nutsack,vittorio,%%passwo,playful,rjyatnrf,tookie,ubnfhf,michi,777444,shadow13,devils1,radiance,toshiba1,beluga,amormi,dandfa,trust1,killemall,smallville,polgara,billyb,landscap,steves,exploite,zamboni,damage11,dzxtckfd,trader12,pokey1,kobe08,damager,egorov,dragon88,ckfdbr,lisa69,blade2,audis4,nelson1,nibbles,23176djivanfros,mutabor,artofwar,matvei,metal666,hrfzlz,schwinn,poohbea,seven77,thinker,123456789qwerty,sobriety,jakers,karamelka,vbkfyf,volodin,iddqd,dale03,roberto1,lizaveta,qqqqqq1,cathy1,08154711,davidm,quixote,bluenote,tazdevil,katrina1,bigfoot1,bublik,marma,olechka,fatpussy,marduk,arina,nonrev67,qqqq1111,camill,wtpfhm,truffle,fairview,mashina,voltaire,qazxswedcvfr,dickface,grassy,lapdance,bosstone,crazy8,yackwin,mobil,danielit,mounta1n,player69,bluegill,mewtwo,reverb,cnthdf,pablito,a123321,elena1,warcraft1,orland,ilovemyself,rfntyjr,joyride,schoo,dthjxrf,thetachi,goodtimes,blacksun,humpty,chewbacca,guyute,123xyz,lexicon,blue45,qwe789,galatasaray,centrino,hendrix1,deimos,saturn5,craig1,vlad1996,sarah123,tupelo,ljrnjh,hotwife,bingos,1231231,nicholas1,flamer,pusher,1233210,heart1,hun999,jiggy,giddyup,oktober,123456zxc,budda,galahad,glamur,samwise,oneton,bugsbunny,dominic1,scooby2,freetime,internat,159753852,sc00ter,wantit,mazinger,inflames,laracrof,greedo,014789,godofwar,repytwjd,water123,fishnet,venus1,wallace1,tenpin,paula1,1475963,mania,novikov,qwertyasdfgh,goldmine,homies,777888999,8balls,holeinon,paper1,samael,013579,mansur,nikit,ak1234,blueline,polska1,hotcock,laredo,windstar,vbkbwbz,raider1,newworld,lfybkrf,catfish1,shorty1,piranha,treacle,royale,2234562,smurfs,minion,cadence,flapjack,123456p,sydne,135531,robinhoo,nasdaq,decatur,cyberonline,newage,gemstone,jabba,touchme,hooch,pigdog,indahous,fonzie,zebra1,juggle,patrick2,nihongo,hitomi,oldnavy,qwerfdsa,ukraina,shakti,allure,kingrich,diane1,canad,piramide,hottie1,clarion,college1,5641110,connect1,therion,clubber,velcro,dave1,astra1,13579-,astroboy,skittle,isgreat,photoes,cvzefh1gkc,001100,2cool4u,7555545,ginger12,2wsxcde3,camaro69,invader,domenow,asd1234,colgate,qwertasdfg,jack123,pass01,maxman,bronte,whkzyc,peter123,bogie,yecgaa,abc321,1qay2wsx,enfield,camaroz2,trashman,bonefish,system32,azsxdcfvgb,peterose,iwantyou,dick69,temp1234,blastoff,capa200,connie1,blazin,12233445,sexybaby,123456j,brentfor,pheasant,hommer,jerryg,thunders,august1,lager,kapusta,boobs1,nokia5300,rocco1,xytfu7,stars1,tugger,123sas,blingbling,1bubba,0wnsyo0,1george,baile,richard2,habana,1diamond,sensatio,1golfer,maverick1,1chris,clinton1,michael7,dragons1,sunrise1,pissant,fatim,mopar1,levani,rostik,pizzapie,987412365,oceans11,748159263,cum4me,palmetto,4r3e2w1q,paige1,muncher,arsehole,kratos,gaffer,banderas,billys,prakash,crabby,bungie,silver12,caddis,spawn1,xboxlive,sylvania,littlebi,524645,futura,valdemar,isacs155,prettygirl,big123,555444,slimer,chicke,newstyle,skypilot,sailormoon,fatluvr69,jetaime,sitruc,jesuschrist,sameer,bear12,hellion,yendor,country1,etnies,conejo,jedimast,darkknight,toobad,yxcvbn,snooks,porn4life,calvary,alfaromeo,ghostman,yannick,fnkfynblf,vatoloco,homebase,5550666,barret,1111111111zz,odysseus,edwardss,favre4,jerrys,crybaby,xsw21qaz,firestor,spanks,indians1,squish,kingair,babycakes,haters,sarahs,212223,teddyb,xfactor,cumload,rhapsody,death123,three3,raccoon,thomas2,slayer66,1q2q3q4q5q,thebes,mysterio,thirdeye,orkiox.,nodoubt,bugsy,schweiz,dima1996,angels1,darkwing,jeronimo,moonpie,ronaldo9,peaches2,mack10,manish,denise1,fellowes,carioca,taylor12,epaulson,makemoney,oc247ngucz,kochanie,3edcvfr4,vulture,1qw23e,1234567z,munchie,picard1,xthtgfirf,sportste,psycho1,tahoe1,creativ,perils,slurred,hermit,scoob,diesel1,cards1,wipeout,weeble,integra1,out3xf,powerpc,chrism,kalle,ariadne,kailua,phatty,dexter1,fordman,bungalow,paul123,compa,train1,thejoker,jys6wz,pussyeater,eatmee,sludge,dominus,denisa,tagheuer,yxcvbnm,bill1,ghfdlf,300zx,nikita123,carcass,semaj,ramone,muenchen,animal1,greeny,annemari,dbrf134,jeepcj7,mollys,garten,sashok,ironmaid,coyotes,astoria,george12,westcoast,primetim,123456o,panchito,rafae,japan1,framer,auralo,tooshort,egorova,qwerty22,callme,medicina,warhawk,w1w2w3w4,cristia,merli,alex22,kawaii,chatte,wargames,utvols,muaddib,trinket,andreas1,jjjjj1,cleric,scooters,cuntlick,gggggg1,slipknot1,235711,handcuff,stussy,guess1,leiceste,ppppp1,passe,lovegun,chevyman,hugecock,driver1,buttsex,psychnaut1,cyber1,black2,alpha12,melbourn,man123,metalman,yjdsqujl,blondi,bungee,freak1,stomper,caitlin1,nikitina,flyaway,prikol,begood,desperad,aurelius,john1234,whosyourdaddy,slimed123,bretagne,den123,hotwheel,king123,roodypoo,izzicam,save13tx,warpten,nokia3310,samolet,ready1,coopers,scott123,bonito,1aaaaa,yomomma,dawg1,rache,itworks,asecret,fencer,451236,polka,olivetti,sysadmin,zepplin,sanjuan,479373,lickem,hondacrx,pulamea,future1,naked1,sexyguy,w4g8at,lollol1,declan,runner1,rumple,daddy123,4snz9g,grandprix,calcio,whatthefuck,nagrom,asslick,pennst,negrit,squiggy,1223334444,police22,giovann,toronto1,tweet,yardbird,seagate,truckers,554455,scimitar,pescator,slydog,gaysex,dogfish,fuck777,12332112,qazxswed,morkovka,daniela1,imback,horny69,789123456,123456789w,jimmy2,bagger,ilove69,nikolaus,atdhfkm,rebirth,1111aaaa,pervasive,gjgeufq,dte4uw,gfhnbpfy,skeletor,whitney1,walkman,delorean,disco1,555888,as1234,ishikawa,fuck12,reaper1,dmitrii,bigshot,morrisse,purgen,qwer4321,itachi,willys,123123qwe,kisska,roma123,trafford,sk84life,326159487,pedros,idiom,plover,bebop,159875321,jailbird,arrowhea,qwaszx123,zaxscdvf,catlover,bakers,13579246,bones69,vermont1,helloyou,simeon,chevyz71,funguy,stargaze,parolparol,steph1,bubby,apathy,poppet,laxman,kelly123,goodnews,741236,boner1,gaetano,astonvilla,virtua,luckyboy,rocheste,hello2u,elohim,trigger1,cstrike,pepsicola,miroslav,96385274,fistfuck,cheval,magyar,svetlanka,lbfyjxrf,mamedov,123123123q,ronaldo1,scotty1,1nicole,pittbull,fredd,bbbbb1,dagwood,gfhkfvtyn,ghblehrb,logan5,1jordan,sexbomb,omega2,montauk,258741,dtythf,gibbon,winamp,thebomb,millerli,852654,gemin,baldy,halflife2,dragon22,mulberry,morrigan,hotel6,zorglub,surfin,951159,excell,arhangel,emachine,moses1,968574,reklama,bulldog2,cuties,barca,twingo,saber,elite11,redtruck,casablan,ashish,moneyy,pepper12,cnhtktw,rjcnbr,arschloch,phenix,cachorro,sunita,madoka,joselui,adams1,mymoney,hemicuda,fyutkjr,jake12,chicas,eeeee1,sonnyboy,smarties,birdy,kitten1,cnfcbr,island1,kurosaki,taekwond,konfetka,bennett1,omega3,jackson2,fresca,minako,octavian,kban667,feyenoord,muaythai,jakedog,fktrcfylhjdyf,1357911q,phuket,sexslave,fktrcfylhjdbx,asdfjk,89015173454,qwerty00,kindbud,eltoro,sex6969,nyknicks,12344321q,caballo,evenflow,hoddle,love22,metro1,mahalko,lawdog,tightass,manitou,buckie,whiskey1,anton123,335533,password4,primo,ramair,timbo,brayden,stewie,pedro1,yorkshir,ganster,hellothe,tippy1,direwolf,genesi,rodrig,enkeli,vaz21099,sorcerer,winky,oneshot,boggle,serebro,badger1,japanes,comicbook,kamehame,alcat,denis123,echo45,sexboy,gr8ful,hondo,voetbal,blue33,2112rush,geneviev,danni1,moosey,polkmn,matthew7,ironhead,hot2trot,ashley12,sweeper,imogen,blue21,retep,stealth1,guitarra,bernard1,tatian,frankfur,vfnhbwf,slacking,haha123,963741,asdasdas,katenok,airforce1,123456789qaz,shotgun1,12qwasz,reggie1,sharo,976431,pacifica,dhip6a,neptun,kardon,spooky1,beaut,555555a,toosweet,tiedup,11121314,startac,lover69,rediska,pirata,vfhrbp,1234qwerty,energize,hansolo1,playbo,larry123,oemdlg,cnjvfnjkju,a123123,alexan,gohawks,antonius,fcbayern,mambo,yummy1,kremlin,ellen1,tremere,vfiekz,bellevue,charlie9,izabella,malishka,fermat,rotterda,dawggy,becket,chasey,kramer1,21125150,lolit,cabrio,schlong,arisha,verity,3some,favorit,maricon,travelle,hotpants,red1234,garrett1,home123,knarf,seven777,figment,asdewq,canseco,good2go,warhol,thomas01,pionee,al9agd,panacea,chevy454,brazzers,oriole,azerty123,finalfan,patricio,northsta,rebelde,bulldo,stallone,boogie1,7uftyx,cfhfnjd,compusa,cornholi,config,deere,hoopster,sepultura,grasshop,babygurl,lesbo,diceman,proverbs,reddragon,nurbek,tigerwoo,superdup,buzzsaw,kakaroto,golgo13,edwar,123qaz123,butter1,sssss1,texas2,respekt,ou812ic,123456qaz,55555a,doctor1,mcgwire,maria123,aol999,cinders,aa1234,joness,ghbrjkmyj,makemone,sammyboy,567765,380zliki,theraven,testme,mylene,elvira26,indiglo,tiramisu,shannara,baby1,123666,gfhreh,papercut,johnmish,orange8,bogey1,mustang7,bagpipes,dimarik,vsijyjr,4637324,ravage,cogito,seven11,natashka,warzone,hr3ytm,4free,bigdee,000006,243462536,bigboi,123333,trouts,sandy123,szevasz,monica2,guderian,newlife1,ratchet,r12345,razorbac,12345i,piazza31,oddjob,beauty1,fffff1,anklet,nodrog,pepit,olivi,puravida,robert12,transam1,portman,bubbadog,steelers1,wilson1,eightball,mexico1,superboy,4rfv5tgb,mzepab,samurai1,fuckslut,colleen1,girdle,vfrcbvec,q1w2e3r4t,soldier1,19844891,alyssa1,a12345a,fidelis,skelter,nolove,mickeymouse,frehley,password69,watermel,aliska,soccer15,12345e,ladybug1,abulafia,adagio,tigerlil,takehana,hecate,bootneck,junfan,arigato,wonkette,bobby123,trustnoone,phantasm,132465798,brianjo,w12345,t34vfrc1991,deadeye,1robert,1daddy,adida,check1,grimlock,muffi,airwalk,prizrak,onclick,longbeac,ernie1,eadgbe,moore1,geniu,shadow123,bugaga,jonathan1,cjrjkjdf,orlova,buldog,talon1,westport,aenima,541233432442,barsuk,chicago2,kellys,hellbent,toughguy,iskander,skoal,whatisit,jake123,scooter2,fgjrfkbgcbc,ghandi,love13,adelphia,vjhrjdrf,adrenali,niunia,jemoeder,rainbo,all4u8,anime1,freedom7,seraph,789321,tommys,antman,firetruc,neogeo,natas,bmwm3,froggy1,paul1,mamit,bayview,gateways,kusanagi,ihateu,frederi,rock1,centurion,grizli,biggin,fish1,stalker1,3girls,ilovepor,klootzak,lollo,redsox04,kirill123,jake1,pampers,vasya,hammers1,teacup,towing,celtic1,ishtar,yingyang,4904s677075,dahc1,patriot1,patrick9,redbirds,doremi,rebecc,yoohoo,makarova,epiphone,rfgbnfy,milesd,blister,chelseafc,katana1,blackrose,1james,primrose,shock5,hard1,scooby12,c6h12o6,dustoff,boing,chisel,kamil,1william,defiant1,tyvugq,mp8o6d,aaa340,nafets,sonnet,flyhigh,242526,crewcom,love23,strike1,stairway,katusha,salamand,cupcake1,password0,007james,sunnie,multisync,harley01,tequila1,fred12,driver8,q8zo8wzq,hunter01,mozzer,temporar,eatmeraw,mrbrownxx,kailey,sycamore,flogger,tincup,rahasia,ganymede,bandera,slinger,1111122222,vander,woodys,1cowboy,khaled,jamies,london12,babyboo,tzpvaw,diogenes,budice,mavrick,135797531,cheeta,macros,squonk,blackber,topfuel,apache1,falcon16,darkjedi,cheeze,vfhvtkfl,sparco,change1,gfhfif,freestyl,kukuruza,loveme2,12345f,kozlov,sherpa,marbella,44445555,bocephus,1winner,alvar,hollydog,gonefish,iwantin,barman,godislove,amanda18,rfpfynbg,eugen,abcdef1,redhawk,thelema,spoonman,baller1,harry123,475869,tigerman,cdtnjxrf,marillio,scribble,elnino,carguy,hardhead,l2g7k3,troopers,selen,dragon76,antigua,ewtosi,ulysse,astana,paroli,cristo,carmex,marjan,bassfish,letitbe,kasparov,jay123,19933991,blue13,eyecandy,scribe,mylord,ukflbjkec,ellie1,beaver1,destro,neuken,halfpint,ameli,lilly1,satanic,xngwoj,12345trewq,asdf1,bulldogg,asakura,jesucrist,flipside,packers4,biggy,kadett,biteme69,bobdog,silverfo,saint1,bobbo,packman,knowledg,foolio,fussbal,12345g,kozerog,westcoas,minidisc,nbvcxw,martini1,alastair,rasengan,superbee,memento,porker,lena123,florenc,kakadu,bmw123,getalife,bigsky,monkee,people1,schlampe,red321,memyself,0147896325,12345678900987654321,soccer14,realdeal,gfgjxrf,bella123,juggs,doritos,celtics1,peterbilt,ghbdtnbrb,gnusmas,xcountry,ghbdtn1,batman99,deusex,gtnhjdf,blablabl,juster,marimba,love2,rerjkrf,alhambra,micros,siemens1,assmaste,moonie,dashadasha,atybrc,eeeeee1,wildrose,blue55,davidl,xrp23q,skyblue,leo123,ggggg1,bestfriend,franny,1234rmvb,fun123,rules1,sebastien,chester2,hakeem,winston2,fartripper,atlant,07831505,iluvsex,q1a2z3,larrys,009900,ghjkju,capitan,rider1,qazxsw21,belochka,andy123,hellya,chicca,maximal,juergen,password1234,howard1,quetzal,daniel123,qpwoeiruty,123555,bharat,ferrari3,numbnuts,savant,ladydog,phipsi,lovepussy,etoile,power2,mitten,britneys,chilidog,08522580,2fchbg,kinky1,bluerose,loulo,ricardo1,doqvq3,kswbdu,013cpfza,timoha,ghbdtnghbdtn,3stooges,gearhead,browns1,g00ber,super7,greenbud,kitty2,pootie,toolshed,gamers,coffe,ibill123,freelove,anasazi,sister1,jigger,natash,stacy1,weronika,luzern,soccer7,hoopla,dmoney,valerie1,canes,razdvatri,washere,greenwoo,rfhjkbyf,anselm,pkxe62,maribe,daniel2,maxim1,faceoff,carbine,xtkjdtr,buddy12,stratos,jumpman,buttocks,aqswdefr,pepsis,sonechka,steeler1,lanman,nietzsch,ballz,biscuit1,wrxsti,goodfood,juventu,federic,mattman,vika123,strelec,jledfyxbr,sideshow,4life,fredderf,bigwilly,12347890,12345671,sharik,bmw325i,fylhtqrf,dannon4,marky,mrhappy,drdoom,maddog1,pompier,cerbera,goobers,howler,jenny69,evely,letitrid,cthuttdyf,felip,shizzle,golf12,t123456,yamah,bluearmy,squishy,roxan,10inches,dollface,babygirl1,blacksta,kaneda,lexingto,canadien,222888,kukushka,sistema,224422,shadow69,ppspankp,mellons,barbie1,free4all,alfa156,lostone,2w3e4r5t,painkiller,robbie1,binger,8dihc6,jaspe,rellik,quark,sogood,hoopstar,number2,snowy1,dad2ownu,cresta,qwe123asd,hjvfyjdf,gibsonsg,qbg26i,dockers,grunge,duckling,lfiekz,cuntsoup,kasia1,1tigger,woaini,reksio,tmoney,firefighter,neuron,audia3,woogie,powerboo,powermac,fatcock,12345666,upnfmc,lustful,porn1,gotlove,amylee,kbytqrf,11924704,25251325,sarasota,sexme,ozzie1,berliner,nigga1,guatemal,seagulls,iloveyou!,chicken2,qwerty21,010203040506,1pillow,libby1,vodoley,backlash,piglets,teiubesc,019283,vonnegut,perico,thunde,buckey,gtxtymrf,manunite,iiiii1,lost4815162342,madonn,270873_,britney1,kevlar,piano1,boondock,colt1911,salamat,doma77ns,anuradha,cnhjqrf,rottweil,newmoon,topgun1,mauser,fightclu,birthday21,reviewpa,herons,aassddff,lakers32,melissa2,vredina,jiujitsu,mgoblue,shakey,moss84,12345zxcvb,funsex,benji1,garci,113322,chipie,windex,nokia5310,pwxd5x,bluemax,cosita,chalupa,trotsky,new123,g3ujwg,newguy,canabis,gnaget,happydays,felixx,1patrick,cumface,sparkie,kozlova,123234,newports,broncos7,golf18,recycle,hahah,harrypot,cachondo,open4me,miria,guessit,pepsione,knocker,usmc1775,countach,playe,wiking,landrover,cracksevi,drumline,a7777777,smile123,manzana,panty,liberta,pimp69,dolfan,quality1,schnee,superson,elaine22,webhompass,mrbrownx,deepsea,4wheel,mamasita,rockport,rollie,myhome,jordan12,kfvgjxrf,hockey12,seagrave,ford1,chelsea2,samsara,marissa1,lamesa,mobil1,piotrek,tommygun,yyyyy1,wesley1,billy123,homersim,julies,amanda12,shaka,maldini,suzenet,springst,iiiiii1,yakuza,111111aa,westwind,helpdesk,annamari,bringit,hopefull,hhhhhhh1,saywhat,mazdarx8,bulova,jennife1,baikal,gfhjkmxbr,victoria1,gizmo123,alex99,defjam,2girls,sandrock,positivo,shingo,syncmast,opensesa,silicone,fuckina,senna1,karlos,duffbeer,montagne,gehrig,thetick,pepino,hamburge,paramedic,scamp,smokeweed,fabregas,phantoms,venom121293,2583458,badone,porno69,manwhore,vfvf123,notagain,vbktyf,rfnthbyrf,wildblue,kelly001,dragon66,camell,curtis1,frolova,1212123,dothedew,tyler123,reddrago,planetx,promethe,gigolo,1001001,thisone,eugeni,blackshe,cruzazul,incognito,puller,joonas,quick1,spirit1,gazza,zealot,gordito,hotrod1,mitch1,pollito,hellcat,mythos,duluth,383pdjvl,easy123,hermos,binkie,its420,lovecraf,darien,romina,doraemon,19877891,syclone,hadoken,transpor,ichiro,intell,gargamel,dragon2,wavpzt,557744,rjw7x4,jennys,kickit,rjynfrn,likeit,555111,corvus,nec3520,133113,mookie1,bochum,samsung2,locoman0,154ugeiu,vfvfbgfgf,135792,[start],tenni,20001,vestax,hufmqw,neveragain,wizkid,kjgfnf,nokia6303,tristen,saltanat,louie1,gandalf2,sinfonia,alpha3,tolstoy,ford150,f00bar,1hello,alici,lol12,riker1,hellou,333888,1hunter,qw1234,vibrator,mets86,43211234,gonzale,cookies1,sissy1,john11,bubber,blue01,cup2006,gtkmvtyb,nazareth,heybaby,suresh,teddie,mozilla,rodeo1,madhouse,gamera,123123321,naresh,dominos,foxtrot1,taras,powerup,kipling,jasonb,fidget,galena,meatman,alpacino,bookmark,farting,humper,titsnass,gorgon,castaway,dianka,anutka,gecko1,fucklove,connery,wings1,erika1,peoria,moneymaker,ichabod,heaven1,paperboy,phaser,breakers,nurse1,westbrom,alex13,brendan1,123asd123,almera,grubber,clarkie,thisisme,welkom01,51051051051,crypto,freenet,pflybwf,black12,testme2,changeit,autobahn,attica,chaoss,denver1,tercel,gnasher23,master2,vasilii,sherman1,gomer,bigbuck,derek1,qwerzxcv,jumble,dragon23,art131313,numark,beasty,cxfcnmttcnm,updown,starion,glist,sxhq65,ranger99,monkey7,shifter,wolves1,4r5t6y,phone1,favorite5,skytommy,abracada,1martin,102030405060,gatech,giulio,blacktop,cheer1,africa1,grizzly1,inkjet,shemales,durango1,booner,11223344q,supergirl,vanyarespekt,dickless,srilanka,weaponx,6string,nashvill,spicey,boxer1,fabien,2sexy2ho,bowhunt,jerrylee,acrobat,tawnee,ulisse,nolimit8,l8g3bkde,pershing,gordo1,allover,gobrowns,123432,123444,321456987,spoon1,hhhhh1,sailing1,gardenia,teache,sexmachine,tratata,pirate1,niceone,jimbos,314159265,qsdfgh,bobbyy,ccccc1,carla1,vjkjltw,savana,biotech,frigid,123456789g,dragon10,yesiam,alpha06,oakwood,tooter,winsto,radioman,vavilon,asnaeb,google123,nariman,kellyb,dthyjcnm,password6,parol1,golf72,skate1,lthtdj,1234567890s,kennet,rossia,lindas,nataliya,perfecto,eminem1,kitana,aragorn1,rexona,arsenalf,planot,coope,testing123,timex,blackbox,bullhead,barbarian,dreamon,polaris1,cfvjktn,frdfhbev,gametime,slipknot666,nomad1,hfgcjlbz,happy69,fiddler,brazil1,joeboy,indianali,113355,obelisk,telemark,ghostrid,preston1,anonim,wellcome,verizon1,sayangku,censor,timeport,dummies,adult1,nbnfybr,donger,thales,iamgay,sexy1234,deadlift,pidaras,doroga,123qwe321,portuga,asdfgh12,happys,cadr14nu,pi3141,maksik,dribble,cortland,darken,stepanova,bommel,tropic,sochi2014,bluegras,shahid,merhaba,nacho,2580456,orange44,kongen,3cudjz,78girl,my3kids,marcopol,deadmeat,gabbie,saruman,jeepman,freddie1,katie123,master99,ronal,ballbag,centauri,killer7,xqgann,pinecone,jdeere,geirby,aceshigh,55832811,pepsimax,rayden,razor1,tallyho,ewelina,coldfire,florid,glotest,999333,sevenup,bluefin,limaperu,apostol,bobbins,charmed1,michelin,sundin,centaur,alphaone,christof,trial1,lions1,45645,just4you,starflee,vicki1,cougar1,green2,jellyfis,batman69,games1,hihje863,crazyzil,w0rm1,oklick,dogbite,yssup,sunstar,paprika,postov10,124578963,x24ik3,kanada,buckster,iloveamy,bear123,smiler,nx74205,ohiostat,spacey,bigbill,doudo,nikolaeva,hcleeb,sex666,mindy1,buster11,deacons,boness,njkcnsq,candy2,cracker1,turkey1,qwertyu1,gogreen,tazzzz,edgewise,ranger01,qwerty6,blazer1,arian,letmeinnow,cigar1,jjjjjj1,grigio,frien,tenchu,f9lmwd,imissyou,filipp,heathers,coolie,salem1,woodduck,scubadiv,123kat,raffaele,nikolaev,dapzu455,skooter,9inches,lthgfhjkm,gr8one,ffffff1,zujlrf,amanda69,gldmeo,m5wkqf,rfrltkf,televisi,bonjou,paleale,stuff1,cumalot,fuckmenow,climb7,mark1234,t26gn4,oneeye,george2,utyyflbq,hunting1,tracy71,ready2go,hotguy,accessno,charger1,rudedog,kmfdm,goober1,sweetie1,wtpmjgda,dimensio,ollie1,pickles1,hellraiser,mustdie,123zzz,99887766,stepanov,verdun,tokenbad,anatol,bartende,cidkid86,onkelz,timmie,mooseman,patch1,12345678c,marta1,dummy1,bethany1,myfamily,history1,178500,lsutiger,phydeaux,moren,dbrnjhjdbx,gnbxrf,uniden,drummers,abpbrf,godboy,daisy123,hogan1,ratpack,irland,tangerine,greddy,flore,sqrunch,billyjoe,q55555,clemson1,98745632,marios,ishot,angelin,access12,naruto12,lolly,scxakv,austin12,sallad,cool99,rockit,mongo1,mark22,ghbynth,ariadna,senha,docto,tyler2,mobius,hammarby,192168,anna12,claire1,pxx3eftp,secreto,greeneye,stjabn,baguvix,satana666,rhbcnbyjxrf,dallastx,garfiel,michaelj,1summer,montan,1234ab,filbert,squids,fastback,lyudmila,chucho,eagleone,kimberle,ar3yuk3,jake01,nokids,soccer22,1066ad,ballon,cheeto,review69,madeira,taylor2,sunny123,chubbs,lakeland,striker1,porche,qwertyu8,digiview,go1234,ferari,lovetits,aditya,minnow,green3,matman,cellphon,fortytwo,minni,pucara,69a20a,roman123,fuente,12e3e456,paul12,jacky,demian,littleman,jadakiss,vlad1997,franca,282860,midian,nunzio,xaccess2,colibri,jessica0,revilo,654456,harvey1,wolf1,macarena,corey1,husky1,arsen,milleniu,852147,crowes,redcat,combat123654,hugger,psalms,quixtar,ilovemom,toyot,ballss,ilovekim,serdar,james23,avenger1,serendip,malamute,nalgas,teflon,shagger,letmein6,vyjujnjxbt,assa1234,student1,dixiedog,gznybwf13,fuckass,aq1sw2de3,robroy,hosehead,sosa21,123345,ias100,teddy123,poppin,dgl70460,zanoza,farhan,quicksilver,1701d,tajmahal,depechemode,paulchen,angler,tommy2,recoil,megamanx,scarecro,nicole2,152535,rfvtgb,skunky,fatty1,saturno,wormwood,milwauke,udbwsk,sexlover,stefa,7bgiqk,gfnhbr,omar10,bratan,lbyfvj,slyfox,forest1,jambo,william3,tempus,solitari,lucydog,murzilka,qweasdzxc1,vehpbkrf,12312345,fixit,woobie,andre123,123456789x,lifter,zinaida,soccer17,andone,foxbat,torsten,apple12,teleport,123456i,leglover,bigcocks,vologda,dodger1,martyn,d6o8pm,naciona,eagleeye,maria6,rimshot,bentley1,octagon,barbos,masaki,gremio,siemen,s1107d,mujeres,bigtits1,cherr,saints1,mrpink,simran,ghzybr,ferrari2,secret12,tornado1,kocham,picolo,deneme,onelove1,rolan,fenster,1fuckyou,cabbie,pegaso,nastyboy,password5,aidana,mine2306,mike13,wetone,tigger69,ytreza,bondage1,myass,golova,tolik,happyboy,poilkj,nimda2k,rammer,rubies,hardcore1,jetset,hoops1,jlaudio,misskitt,1charlie,google12,theone1,phred,porsch,aalborg,luft4,charlie5,password7,gnosis,djgabbab,1daniel,vinny,borris,cumulus,member1,trogdor,darthmau,andrew2,ktjybl,relisys,kriste,rasta220,chgobndg,weener,qwerty66,fritter,followme,freeman1,ballen,blood1,peache,mariso,trevor1,biotch,gtfullam,chamonix,friendste,alligato,misha1,1soccer,18821221,venkat,superd,molotov,bongos,mpower,acun3t1x,dfcmrf,h4x3d,rfhfufylf,tigran,booyaa,plastic1,monstr,rfnhby,lookatme,anabolic,tiesto,simon123,soulman,canes1,skyking,tomcat1,madona,bassline,dasha123,tarheel1,dutch1,xsw23edc,qwerty123456789,imperator,slaveboy,bateau,paypal,house123,pentax,wolf666,drgonzo,perros,digger1,juninho,hellomoto,bladerun,zzzzzzz1,keebler,take8422,fffffff1,ginuwine,israe,caesar1,crack1,precious1,garand,magda1,zigazaga,321ewq,johnpaul,mama1234,iceman69,sanjeev,treeman,elric,rebell,1thunder,cochon,deamon,zoltan,straycat,uhbyuj,luvfur,mugsy,primer,wonder1,teetime,candycan,pfchfytw,fromage,gitler,salvatio,piggy1,23049307,zafira,chicky,sergeev,katze,bangers,andriy,jailbait,vaz2107,ghbhjlf,dbjktnnf,aqswde,zaratustra,asroma,1pepper,alyss,kkkkk1,ryan1,radish,cozumel,waterpol,pentium1,rosebowl,farmall,steinway,dbrekz,baranov,jkmuf,another1,chinacat,qqqqqqq1,hadrian,devilmaycry4,ratbag,teddy2,love21,pullings,packrat,robyn1,boobo,qw12er34,tribe1,rosey,celestia,nikkie,fortune12,olga123,danthema,gameon,vfrfhjys,dilshod,henry14,jenova,redblue,chimaera,pennywise,sokrates,danimal,qqaazz,fuaqz4,killer2,198200,tbone1,kolyan,wabbit,lewis1,maxtor,egoist,asdfas,spyglass,omegas,jack12,nikitka,esperanz,doozer,matematika,wwwww1,ssssss1,poiu0987,suchka,courtney1,gungho,alpha2,fktyjxrf,summer06,bud420,devildriver,heavyd,saracen,foucault,choclate,rjdfktyrj,goblue1,monaro,jmoney,dcpugh,efbcapa201,qqh92r,pepsicol,bbb747,ch5nmk,honeyb,beszoptad,tweeter,intheass,iseedeadpeople,123dan,89231243658s,farside1,findme,smiley1,55556666,sartre,ytcnjh,kacper,costarica,134679258,mikeys,nolimit9,vova123,withyou,5rxypn,love143,freebie,rescue1,203040,michael6,12monkey,redgreen,steff,itstime,naveen,good12345,acidrain,1dawg,miramar,playas,daddio,orion2,852741,studmuff,kobe24,senha123,stephe,mehmet,allalone,scarface1,helloworld,smith123,blueyes,vitali,memphis1,mybitch,colin1,159874,1dick,podaria,d6wnro,brahms,f3gh65,dfcbkmtd,xxxman,corran,ugejvp,qcfmtz,marusia,totem,arachnid,matrix2,antonell,fgntrf,zemfira,christos,surfing1,naruto123,plato1,56qhxs,madzia,vanille,043aaa,asq321,mutton,ohiostate,golde,cdznjckfd,rhfcysq,green5,elephan,superdog,jacqueli,bollock,lolitas,nick12,1orange,maplelea,july23,argento,waldorf,wolfer,pokemon12,zxcvbnmm,flicka,drexel,outlawz,harrie,atrain,juice2,falcons1,charlie6,19391945,tower1,dragon21,hotdamn,dirtyboy,love4ever,1ginger,thunder2,virgo1,alien1,bubblegu,4wwvte,123456789qqq,realtime,studio54,passss,vasilek,awsome,giorgia,bigbass,2002tii,sunghile,mosdef,simbas,count0,uwrl7c,summer05,lhepmz,ranger21,sugarbea,principe,5550123,tatanka,9638v,cheerios,majere,nomercy,jamesbond007,bh90210,7550055,jobber,karaganda,pongo,trickle,defamer,6chid8,1q2a3z,tuscan,nick123,.adgjm,loveyo,hobbes1,note1234,shootme,171819,loveporn,9788960,monty123,fabrice,macduff,monkey13,shadowfa,tweeker,hanna1,madball,telnet,loveu2,qwedcxzas,thatsit,vfhcbr,ptfe3xxp,gblfhfcs,ddddddd1,hakkinen,liverune,deathsta,misty123,suka123,recon1,inferno1,232629,polecat,sanibel,grouch,hitech,hamradio,rkfdbfnehf,vandam,nadin,fastlane,shlong,iddqdidkfa,ledzeppelin,sexyfeet,098123,stacey1,negras,roofing,lucifer1,ikarus,tgbyhn,melnik,barbaria,montego,twisted1,bigal1,jiggle,darkwolf,acerview,silvio,treetops,bishop1,iwanna,pornsite,happyme,gfccdjhl,114411,veritech,batterse,casey123,yhntgb,mailto,milli,guster,q12345678,coronet,sleuth,fuckmeha,armadill,kroshka,geordie,lastochka,pynchon,killall,tommy123,sasha1996,godslove,hikaru,clticic,cornbrea,vfkmdbyf,passmaster,123123123a,souris,nailer,diabolo,skipjack,martin12,hinata,mof6681,brookie,dogfight,johnso,karpov,326598,rfvbrflpt,travesti,caballer,galaxy1,wotan,antoha,art123,xakep1234,ricflair,pervert1,p00kie,ambulanc,santosh,berserker,larry33,bitch123,a987654321,dogstar,angel22,cjcbcrf,redhouse,toodles,gold123,hotspot,kennedy1,glock21,chosen1,schneide,mainman,taffy1,3ki42x,4zqauf,ranger2,4meonly,year2000,121212a,kfylsi,netzwerk,diese,picasso1,rerecz,225522,dastan,swimmer1,brooke1,blackbea,oneway,ruslana,dont4get,phidelt,chrisp,gjyxbr,xwing,kickme,shimmy,kimmy1,4815162342lost,qwerty5,fcporto,jazzbo,mierd,252627,basses,sr20det,00133,florin,howdy1,kryten,goshen,koufax,cichlid,imhotep,andyman,wrest666,saveme,dutchy,anonymou,semprini,siempre,mocha1,forest11,wildroid,aspen1,sesam,kfgekz,cbhbec,a55555,sigmanu,slash1,giggs11,vatech,marias,candy123,jericho1,kingme,123a123,drakula,cdjkjxm,mercur,oneman,hoseman,plumper,ilovehim,lancers,sergey1,takeshi,goodtogo,cranberr,ghjcnj123,harvick,qazxs,1972chev,horsesho,freedom3,letmein7,saitek,anguss,vfvfgfgfz,300000,elektro,toonporn,999111999q,mamuka,q9umoz,edelweis,subwoofer,bayside,disturbe,volition,lucky3,12345678z,3mpz4r,march1,atlantida,strekoza,seagrams,090909t,yy5rbfsc,jack1234,sammy12,sampras,mark12,eintrach,chaucer,lllll1,nochance,whitepower,197000,lbvekz,passer,torana,12345as,pallas,koolio,12qw34,nokia8800,findout,1thomas,mmmmm1,654987,mihaela,chinaman,superduper,donnas,ringo1,jeroen,gfdkjdf,professo,cdtnrf,tranmere,tanstaaf,himera,ukflbfnjh,667788,alex32,joschi,w123456,okidoki,flatline,papercli,super8,doris1,2good4u,4z34l0ts,pedigree,freeride,gsxr1100,wulfgar,benjie,ferdinan,king1,charlie7,djdxbr,fhntvbq,ripcurl,2wsx1qaz,kingsx,desade,sn00py,loveboat,rottie,evgesha,4money,dolittle,adgjmpt,buzzers,brett1,makita,123123qweqwe,rusalka,sluts1,123456e,jameson1,bigbaby,1z2z3z,ckjybr,love4u,fucker69,erhfbyf,jeanluc,farhad,fishfood,merkin,giant1,golf69,rfnfcnhjaf,camera1,stromb,smoothy,774411,nylon,juice1,rfn.irf,newyor,123456789t,marmot,star11,jennyff,jester1,hisashi,kumquat,alex777,helicopt,merkur,dehpye,cummin,zsmj2v,kristjan,april12,englan,honeypot,badgirls,uzumaki,keines,p12345,guita,quake1,duncan1,juicer,milkbone,hurtme,123456789b,qq123456789,schwein,p3wqaw,54132442,qwertyytrewq,andreeva,ruffryde,punkie,abfkrf,kristinka,anna1987,ooooo1,335533aa,umberto,amber123,456123789,456789123,beelch,manta,peeker,1112131415,3141592654,gipper,wrinkle5,katies,asd123456,james11,78n3s5af,michael0,daboss,jimmyb,hotdog1,david69,852123,blazed,sickan,eljefe,2n6wvq,gobills,rfhfcm,squeaker,cabowabo,luebri,karups,test01,melkor,angel777,smallvil,modano,olorin,4rkpkt,leslie1,koffie,shadows1,littleon,amiga1,topeka,summer20,asterix1,pitstop,aloysius,k12345,magazin,joker69,panocha,pass1word,1233214,ironpony,368ejhih,88keys,pizza123,sonali,57np39,quake2,1234567890qw,1020304,sword1,fynjif,abcde123,dfktyjr,rockys,grendel1,harley12,kokakola,super2,azathoth,lisa123,shelley1,girlss,ibragim,seven1,jeff24,1bigdick,dragan,autobot,t4nvp7,omega123,900000,hecnfv,889988,nitro1,doggie1,fatjoe,811pahc,tommyt,savage1,pallino,smitty1,jg3h4hfn,jamielee,1qazwsx,zx123456,machine1,asdfgh123,guinnes,789520,sharkman,jochen,legend1,sonic2,extreme1,dima12,photoman,123459876,nokian95,775533,vaz2109,april10,becks,repmvf,pooker,qwer12345,themaster,nabeel,monkey10,gogetit,hockey99,bbbbbbb1,zinedine,dolphin2,anelka,1superma,winter01,muggsy,horny2,669966,kuleshov,jesusis,calavera,bullet1,87t5hdf,sleepers,winkie,vespa,lightsab,carine,magister,1spider,shitbird,salavat,becca1,wc18c2,shirak,galactus,zaskar,barkley1,reshma,dogbreat,fullsail,asasa,boeder,12345ta,zxcvbnm12,lepton,elfquest,tony123,vkaxcs,savatage,sevilia1,badkitty,munkey,pebbles1,diciembr,qapmoc,gabriel2,1qa2ws3e,cbcmrb,welldone,nfyufh,kaizen,jack11,manisha,grommit,g12345,maverik,chessman,heythere,mixail,jjjjjjj1,sylvia1,fairmont,harve,skully,global1,youwish,pikachu1,badcat,zombie1,49527843,ultra1,redrider,offsprin,lovebird,153426,stymie,aq1sw2,sorrento,0000001,r3ady41t,webster1,95175,adam123,coonass,159487,slut1,gerasim,monkey99,slutwife,159963,1pass1page,hobiecat,bigtymer,all4you,maggie2,olamide,comcast1,infinit,bailee,vasileva,.ktxrf,asdfghjkl1,12345678912,setter,fuckyou7,nnagqx,lifesuck,draken,austi,feb2000,cable1,1234qwerasdf,hax0red,zxcv12,vlad7788,nosaj,lenovo,underpar,huskies1,lovegirl,feynman,suerte,babaloo,alskdjfhg,oldsmobi,bomber1,redrover,pupuce,methodman,phenom,cutegirl,countyli,gretsch,godisgood,bysunsu,hardhat,mironova,123qwe456rty,rusty123,salut,187211,555666777,11111z,mahesh,rjntyjxtr,br00klyn,dunce1,timebomb,bovine,makelove,littlee,shaven,rizwan,patrick7,42042042,bobbijo,rustem,buttmunc,dongle,tiger69,bluecat,blackhol,shirin,peaces,cherub,cubase,longwood,lotus7,gwju3g,bruin,pzaiu8,green11,uyxnyd,seventee,dragon5,tinkerbel,bluess,bomba,fedorova,joshua2,bodyshop,peluche,gbpacker,shelly1,d1i2m3a4,ghtpbltyn,talons,sergeevna,misato,chrisc,sexmeup,brend,olddog,davros,hazelnut,bridget1,hzze929b,readme,brethart,wild1,ghbdtnbr1,nortel,kinger,royal1,bucky1,allah1,drakkar,emyeuanh,gallaghe,hardtime,jocker,tanman,flavio,abcdef123,leviatha,squid1,skeet,sexse,123456x,mom4u4mm,lilred,djljktq,ocean11,cadaver,baxter1,808state,fighton,primavera,1andrew,moogle,limabean,goddess1,vitalya,blue56,258025,bullride,cicci,1234567d,connor1,gsxr11,oliveoil,leonard1,legsex,gavrik,rjnjgtc,mexicano,2bad4u,goodfellas,ornw6d,mancheste,hawkmoon,zlzfrh,schorsch,g9zns4,bashful,rossi46,stephie,rfhfntkm,sellout,123fuck,stewar1,solnze,00007,thor5200,compaq12,didit,bigdeal,hjlbyf,zebulon,wpf8eu,kamran,emanuele,197500,carvin,ozlq6qwm,3syqo15hil,pennys,epvjb6,asdfghjkl123,198000,nfbcbz,jazzer,asfnhg66,zoloft,albundy,aeiou,getlaid,planet1,gjkbyjxrf,alex2000,brianb,moveon,maggie11,eieio,vcradq,shaggy1,novartis,cocoloco,dunamis,554uzpad,sundrop,1qwertyu,alfie,feliks,briand,123www,red456,addams,fhntv1998,goodhead,theway,javaman,angel01,stratoca,lonsdale,15987532,bigpimpin,skater1,issue43,muffie,yasmina,slowride,crm114,sanity729,himmel,carolcox,bustanut,parabola,masterlo,computador,crackhea,dynastar,rockbott,doggysty,wantsome,bigten,gaelle,juicy1,alaska1,etower,sixnine,suntan,froggies,nokia7610,hunter11,njnets,alicante,buttons1,diosesamo,elizabeth1,chiron,trustnoo,amatuers,tinytim,mechta,sammy2,cthulu,trs8f7,poonam,m6cjy69u35,cookie12,blue25,jordans,santa1,kalinka,mikey123,lebedeva,12345689,kissss,queenbee,vjybnjh,ghostdog,cuckold,bearshare,rjcntyrj,alinochka,ghjcnjrdfibyj,aggie1,teens1,3qvqod,dauren,tonino,hpk2qc,iqzzt580,bears85,nascar88,theboy,njqcw4,masyanya,pn5jvw,intranet,lollone,shadow99,00096462,techie,cvtifhbrb,redeemed,gocanes,62717315,topman,intj3a,cobrajet,antivirus,whyme,berserke,ikilz083,airedale,brandon2,hopkig,johanna1,danil8098,gojira,arthu,vision1,pendragon,milen,chrissie,vampiro,mudder,chris22,blowme69,omega7,surfers,goterps,italy1,baseba11,diego1,gnatsum,birdies,semenov,joker123,zenit2011,wojtek,cab4ma99,watchmen,damia,forgotte,fdm7ed,strummer,freelanc,cingular,orange77,mcdonalds,vjhjpjdf,kariya,tombston,starlet,hawaii1,dantheman,megabyte,nbvjirf,anjing,ybrjkftdbx,hotmom,kazbek,pacific1,sashimi,asd12,coorslig,yvtte545,kitte,elysium,klimenko,cobblers,kamehameha,only4me,redriver,triforce,sidorov,vittoria,fredi,dank420,m1234567,fallout2,989244342a,crazy123,crapola,servus,volvos,1scooter,griffin1,autopass,ownzyou,deviant,george01,2kgwai,boeing74,simhrq,hermosa,hardcor,griffy,rolex1,hackme,cuddles1,master3,bujhtr,aaron123,popolo,blader,1sexyred,gerry1,cronos,ffvdj474,yeehaw,bob1234,carlos2,mike77,buckwheat,ramesh,acls2h,monster2,montess,11qq22ww,lazer,zx123456789,chimpy,masterch,sargon,lochness,archana,1234qwert,hbxfhl,sarahb,altoid,zxcvbn12,dakot,caterham,dolomite,chazz,r29hqq,longone,pericles,grand1,sherbert,eagle3,pudge,irontree,synapse,boome,nogood,summer2,pooki,gangsta1,mahalkit,elenka,lbhtrnjh,dukedog,19922991,hopkins1,evgenia,domino1,x123456,manny1,tabbycat,drake1,jerico,drahcir,kelly2,708090a,facesit,11c645df,mac123,boodog,kalani,hiphop1,critters,hellothere,tbirds,valerka,551scasi,love777,paloalto,mrbrown,duke3d,killa1,arcturus,spider12,dizzy1,smudger,goddog,75395,spammy,1357997531,78678,datalife,zxcvbn123,1122112211,london22,23dp4x,rxmtkp,biggirls,ownsu,lzbs2twz,sharps,geryfe,237081a,golakers,nemesi,sasha1995,pretty1,mittens1,d1lakiss,speedrac,gfhjkmm,sabbat,hellrais,159753258,qwertyuiop123,playgirl,crippler,salma,strat1,celest,hello5,omega5,cheese12,ndeyl5,edward12,soccer3,cheerio,davido,vfrcbr,gjhjctyjr,boscoe,inessa,shithole,ibill,qwepoi,201jedlz,asdlkj,davidk,spawn2,ariel1,michael4,jamie123,romantik,micro1,pittsbur,canibus,katja,muhtar,thomas123,studboy,masahiro,rebrov,patrick8,hotboys,sarge1,1hammer,nnnnn1,eistee,datalore,jackdani,sasha2010,mwq6qlzo,cmfnpu,klausi,cnhjbntkm,andrzej,ilovejen,lindaa,hunter123,vvvvv1,novembe,hamster1,x35v8l,lacey1,1silver,iluvporn,valter,herson,alexsandr,cojones,backhoe,womens,777angel,beatit,klingon1,ta8g4w,luisito,benedikt,maxwel,inspecto,zaq12ws,wladimir,bobbyd,peterj,asdfg12,hellspawn,bitch69,nick1234,golfer23,sony123,jello1,killie,chubby1,kodaira52,yanochka,buckfast,morris1,roaddogg,snakeeye,sex1234,mike22,mmouse,fucker11,dantist,brittan,vfrfhjdf,doc123,plokijuh,emerald1,batman01,serafim,elementa,soccer9,footlong,cthuttdbx,hapkido,eagle123,getsmart,getiton,batman2,masons,mastiff,098890,cfvfhf,james7,azalea,sherif,saun24865709,123red,cnhtrjpf,martina1,pupper,michael5,alan12,shakir,devin1,ha8fyp,palom,mamulya,trippy,deerhunter,happyone,monkey77,3mta3,123456789f,crownvic,teodor,natusik,0137485,vovchik,strutter,triumph1,cvetok,moremone,sonnen,screwbal,akira1,sexnow,pernille,independ,poopies,samapi,kbcbxrf,master22,swetlana,urchin,viper2,magica,slurpee,postit,gilgames,kissarmy,clubpenguin,limpbizk,timber1,celin,lilkim,fuckhard,lonely1,mom123,goodwood,extasy,sdsadee23,foxglove,malibog,clark1,casey2,shell1,odense,balefire,dcunited,cubbie,pierr,solei,161718,bowling1,areyukesc,batboy,r123456,1pionee,marmelad,maynard1,cn42qj,cfvehfq,heathrow,qazxcvbn,connecti,secret123,newfie,xzsawq21,tubitzen,nikusha,enigma1,yfcnz123,1austin,michaelc,splunge,wanger,phantom2,jason2,pain4me,primetime21,babes1,liberte,sugarray,undergro,zonker,labatts,djhjyf,watch1,eagle5,madison2,cntgfirf,sasha2,masterca,fiction7,slick50,bruins1,sagitari,12481632,peniss,insuranc,2b8riedt,12346789,mrclean,ssptx452,tissot,q1w2e3r4t5y6u7,avatar1,comet1,spacer,vbrjkf,pass11,wanker1,14vbqk9p,noshit,money4me,sayana,fish1234,seaways,pipper,romeo123,karens,wardog,ab123456,gorilla1,andrey123,lifesucks,jamesr,4wcqjn,bearman,glock22,matt11,dflbvrf,barbi,maine1,dima1997,sunnyboy,6bjvpe,bangkok1,666666q,rafiki,letmein0,0raziel0,dalla,london99,wildthin,patrycja,skydog,qcactw,tmjxn151,yqlgr667,jimmyd,stripclub,deadwood,863abgsg,horses1,qn632o,scatman,sonia1,subrosa,woland,kolya,charlie4,moleman,j12345,summer11,angel11,blasen,sandal,mynewpas,retlaw,cambria,mustang4,nohack04,kimber45,fatdog,maiden1,bigload,necron,dupont24,ghost123,turbo2,.ktymrf,radagast,balzac,vsevolod,pankaj,argentum,2bigtits,mamabear,bumblebee,mercury7,maddie1,chomper,jq24nc,snooky,pussylic,1lovers,taltos,warchild,diablo66,jojo12,sumerki,aventura,gagger,annelies,drumset,cumshots,azimut,123580,clambake,bmw540,birthday54,psswrd,paganini,wildwest,filibert,teaseme,1test,scampi,thunder5,antosha,purple12,supersex,hhhhhh1,brujah,111222333a,13579a,bvgthfnjh,4506802a,killians,choco,qqqwwweee,raygun,1grand,koetsu13,sharp1,mimi92139,fastfood,idontcare,bluered,chochoz,4z3al0ts,target1,sheffiel,labrat,stalingrad,147123,cubfan,corvett1,holden1,snapper1,4071505,amadeo,pollo,desperados,lovestory,marcopolo,mumbles,familyguy,kimchee,marcio,support1,tekila,shygirl1,trekkie,submissi,ilaria,salam,loveu,wildstar,master69,sales1,netware,homer2,arseniy,gerrity1,raspberr,atreyu,stick1,aldric,tennis12,matahari,alohomora,dicanio,michae1,michaeld,666111,luvbug,boyscout,esmerald,mjordan,admiral1,steamboa,616913,ybhdfyf,557711,555999,sunray,apokalipsis,theroc,bmw330,buzzy,chicos,lenusik,shadowma,eagles05,444222,peartree,qqq123,sandmann,spring1,430799,phatass,andi03,binky1,arsch,bamba,kenny123,fabolous,loser123,poop12,maman,phobos,tecate,myxworld4,metros,cocorico,nokia6120,johnny69,hater,spanked,313233,markos,love2011,mozart1,viktoriy,reccos,331234,hornyone,vitesse,1um83z,55555q,proline,v12345,skaven,alizee,bimini,fenerbahce,543216,zaqqaz,poi123,stabilo,brownie1,1qwerty1,dinesh,baggins1,1234567t,davidkin,friend1,lietuva,octopuss,spooks,12345qq,myshit,buttface,paradoxx,pop123,golfin,sweet69,rfghbp,sambuca,kayak1,bogus1,girlz,dallas12,millers,123456zx,operatio,pravda,eternal1,chase123,moroni,proust,blueduck,harris1,redbarch,996699,1010101,mouche,millenni,1123456,score1,1234565,1234576,eae21157,dave12,pussyy,gfif1991,1598741,hoppy,darrian,snoogins,fartface,ichbins,vfkbyrf,rusrap,2741001,fyfrjylf,aprils,favre,thisis,bannana,serval,wiggum,satsuma,matt123,ivan123,gulmira,123zxc123,oscar2,acces,annie2,dragon0,emiliano,allthat,pajaro,amandine,rawiswar,sinead,tassie,karma1,piggys,nokias,orions,origami,type40,mondo,ferrets,monker,biteme2,gauntlet,arkham,ascona,ingram01,klem1,quicksil,bingo123,blue66,plazma,onfire,shortie,spjfet,123963,thered,fire777,lobito,vball,1chicken,moosehea,elefante,babe23,jesus12,parallax,elfstone,number5,shrooms,freya,hacker1,roxette,snoops,number7,fellini,dtlmvf,chigger,mission1,mitsubis,kannan,whitedog,james01,ghjgecr,rfnfgekmnf,everythi,getnaked,prettybo,sylvan,chiller,carrera4,cowbo,biochem,azbuka,qwertyuiop1,midnight1,informat,audio1,alfred1,0range,sucker1,scott2,russland,1eagle,torben,djkrjlfd,rocky6,maddy1,bonobo,portos,chrissi,xjznq5,dexte,vdlxuc,teardrop,pktmxr,iamtheone,danijela,eyphed,suzuki1,etvww4,redtail,ranger11,mowerman,asshole2,coolkid,adriana1,bootcamp,longcut,evets,npyxr5,bighurt,bassman1,stryder,giblet,nastja,blackadd,topflite,wizar,cumnow,technolo,bassboat,bullitt,kugm7b,maksimus,wankers,mine12,sunfish,pimpin1,shearer9,user1,vjzgjxnf,tycobb,80070633pc,stanly,vitaly,shirley1,cinzia,carolyn1,angeliqu,teamo,qdarcv,aa123321,ragdoll,bonit,ladyluck,wiggly,vitara,jetbalance,12345600,ozzman,dima12345,mybuddy,shilo,satan66,erebus,warrio,090808qwe,stupi,bigdan,paul1234,chiapet,brooks1,philly1,dually,gowest,farmer1,1qa2ws3ed4rf,alberto1,beachboy,barne,aa12345,aliyah,radman,benson1,dfkthbq,highball,bonou2,i81u812,workit,darter,redhook,csfbr5yy,buttlove,episode1,ewyuza,porthos,lalal,abcd12,papero,toosexy,keeper1,silver7,jujitsu,corset,pilot123,simonsay,pinggolf,katerinka,kender,drunk1,fylhjvtlf,rashmi,nighthawk,maggy,juggernaut,larryb,cabibble,fyabcf,247365,gangstar,jaybee,verycool,123456789qw,forbidde,prufrock,12345zxc,malaika,blackbur,docker,filipe,koshechka,gemma1,djamaal,dfcbkmtdf,gangst,9988aa,ducks1,pthrfkj,puertorico,muppets,griffins,whippet,sauber,timofey,larinso,123456789zxc,quicken,qsefth,liteon,headcase,bigdadd,zxc321,maniak,jamesc,bassmast,bigdogs,1girls,123xxx,trajan,lerochka,noggin,mtndew,04975756,domin,wer123,fumanchu,lambada,thankgod,june22,kayaking,patchy,summer10,timepass,poiu1234,kondor,kakka,lament,zidane10,686xqxfg,l8v53x,caveman1,nfvthkfy,holymoly,pepita,alex1996,mifune,fighter1,asslicker,jack22,abc123abc,zaxxon,midnigh,winni,psalm23,punky,monkey22,password13,mymusic,justyna,annushka,lucky5,briann,495rus19,withlove,almaz,supergir,miata,bingbong,bradpitt,kamasutr,yfgjktjy,vanman,pegleg,amsterdam1,123a321,letmein9,shivan,korona,bmw520,annette1,scotsman,gandal,welcome12,sc00by,qpwoei,fred69,m1sf1t,hamburg1,1access,dfkmrbhbz,excalibe,boobies1,fuckhole,karamel,starfuck,star99,breakfas,georgiy,ywvxpz,smasher,fatcat1,allanon,12345n,coondog,whacko,avalon1,scythe,saab93,timon,khorne,atlast,nemisis,brady12,blenheim,52678677,mick7278,9skw5g,fleetwoo,ruger1,kissass,pussy7,scruff,12345l,bigfun,vpmfsz,yxkck878,evgeny,55667788,lickher,foothill,alesis,poppies,77777778,californi,mannie,bartjek,qhxbij,thehulk,xirt2k,angelo4ek,rfkmrekznjh,tinhorse,1david,sparky12,night1,luojianhua,bobble,nederland,rosemari,travi,minou,ciscokid,beehive,565hlgqo,alpine1,samsung123,trainman,xpress,logistic,vw198m2n,hanter,zaqwsx123,qwasz,mariachi,paska,kmg365,kaulitz,sasha12,north1,polarbear,mighty1,makeksa11,123456781,one4all,gladston,notoriou,polniypizdec110211,gosia,grandad,xholes,timofei,invalidp,speaker1,zaharov,maggiema,loislane,gonoles,br5499,discgolf,kaskad,snooper,newman1,belial,demigod,vicky1,pridurok,alex1990,tardis1,cruzer,hornie,sacramen,babycat,burunduk,mark69,oakland1,me1234,gmctruck,extacy,sexdog,putang,poppen,billyd,1qaz2w,loveable,gimlet,azwebitalia,ragtop,198500,qweas,mirela,rock123,11bravo,sprewell,tigrenok,jaredleto,vfhbif,blue2,rimjob,catwalk,sigsauer,loqse,doromich,jack01,lasombra,jonny5,newpassword,profesor,garcia1,123as123,croucher,demeter,4_life,rfhfvtkm,superman2,rogues,assword1,russia1,jeff1,mydream,z123456789,rascal1,darre,kimberl,pickle1,ztmfcq,ponchik,lovesporn,hikari,gsgba368,pornoman,chbjun,choppy,diggity,nightwolf,viktori,camar,vfhecmrf,alisa1,minstrel,wishmaster,mulder1,aleks,gogirl,gracelan,8womys,highwind,solstice,dbrnjhjdyf,nightman,pimmel,beertje,ms6nud,wwfwcw,fx3tuo,poopface,asshat,dirtyd,jiminy,luv2fuck,ptybnxtvgbjy,dragnet,pornogra,10inch,scarlet1,guido1,raintree,v123456,1aaaaaaa,maxim1935,hotwater,gadzooks,playaz,harri,brando1,defcon1,ivanna,123654a,arsenal2,candela,nt5d27,jaime1,duke1,burton1,allstar1,dragos,newpoint,albacore,1236987z,verygoodbot,1wildcat,fishy1,ptktysq,chris11,puschel,itdxtyrj,7kbe9d,serpico,jazzie,1zzzzz,kindbuds,wenef45313,1compute,tatung,sardor,gfyfcjybr,test99,toucan,meteora,lysander,asscrack,jowgnx,hevnm4,suckthis,masha123,karinka,marit,oqglh565,dragon00,vvvbbb,cheburashka,vfrfrf,downlow,unforgiven,p3e85tr,kim123,sillyboy,gold1,golfvr6,quicksan,irochka,froglegs,shortsto,caleb1,tishka,bigtitts,smurfy,bosto,dropzone,nocode,jazzbass,digdug,green7,saltlake,therat,dmitriev,lunita,deaddog,summer0,1212qq,bobbyg,mty3rh,isaac1,gusher,helloman,sugarbear,corvair,extrem,teatime,tujazopi,titanik,efyreg,jo9k2jw2,counchac,tivoli,utjvtnhbz,bebit,jacob6,clayton1,incubus1,flash123,squirter,dima2010,cock1,rawks,komatsu,forty2,98741236,cajun1,madelein,mudhoney,magomed,q111111,qaswed,consense,12345b,bakayaro,silencer,zoinks,bigdic,werwolf,pinkpuss,96321478,alfie1,ali123,sarit,minette,musics,chato,iaapptfcor,cobaka,strumpf,datnigga,sonic123,yfnecbr,vjzctvmz,pasta1,tribbles,crasher,htlbcrf,1tiger,shock123,bearshar,syphon,a654321,cubbies1,jlhanes,eyespy,fucktheworld,carrie1,bmw325is,suzuk,mander,dorina,mithril,hondo1,vfhnbyb,sachem,newton1,12345x,7777755102q,230857z,xxxsex,scubapro,hayastan,spankit,delasoul,searock6,fallout3,nilrem,24681357,pashka,voluntee,pharoh,willo,india1,badboy69,roflmao,gunslinger,lovergir,mama12,melange,640xwfkv,chaton,darkknig,bigman1,aabbccdd,harleyd,birdhouse,giggsy,hiawatha,tiberium,joker7,hello1234,sloopy,tm371855,greendog,solar1,bignose,djohn11,espanol,oswego,iridium,kavitha,pavell,mirjam,cyjdsvujljv,alpha5,deluge,hamme,luntik,turismo,stasya,kjkbnf,caeser,schnecke,tweety1,tralfaz,lambrett,prodigy1,trstno1,pimpshit,werty1,karman,bigboob,pastel,blackmen,matthew8,moomin,q1w2e,gilly,primaver,jimmyg,house2,elviss,15975321,1jessica,monaliza,salt55,vfylfhbyrf,harley11,tickleme,murder1,nurgle,kickass1,theresa1,fordtruck,pargolf,managua,inkognito,sherry1,gotit,friedric,metro2033,slk230,freeport,cigarett,492529,vfhctkm,thebeach,twocats,bakugan,yzerman1,charlieb,motoko,skiman,1234567w,pussy3,love77,asenna,buffie,260zntpc,kinkos,access20,mallard1,fuckyou69,monami,rrrrr1,bigdog69,mikola,1boomer,godzila,ginger2,dima2000,skorpion39,dima1234,hawkdog79,warrior2,ltleirf,supra1,jerusale,monkey01,333z333,666888,kelsey1,w8gkz2x1,fdfnfh,msnxbi,qwe123rty,mach1,monkey3,123456789qq,c123456,nezabudka,barclays,nisse,dasha1,12345678987654321,dima1993,oldspice,frank2,rabbitt,prettyboy,ov3ajy,iamthema,kawasak,banjo1,gtivr6,collants,gondor,hibees,cowboys2,codfish,buster2,purzel,rubyred,kayaker,bikerboy,qguvyt,masher,sseexx,kenshiro,moonglow,semenova,rosari,eduard1,deltaforce,grouper,bongo1,tempgod,1taylor,goldsink,qazxsw1,1jesus,m69fg2w,maximili,marysia,husker1,kokanee,sideout,googl,south1,plumber1,trillian,00001,1357900,farkle,1xxxxx,pascha,emanuela,bagheera,hound1,mylov,newjersey,swampfox,sakic19,torey,geforce,wu4etd,conrail,pigman,martin2,ber02,nascar2,angel69,barty,kitsune,cornet,yes90125,goomba,daking,anthea,sivart,weather1,ndaswf,scoubidou,masterchief,rectum,3364068,oranges1,copter,1samanth,eddies,mimoza,ahfywbz,celtic88,86mets,applemac,amanda11,taliesin,1angel,imhere,london11,bandit12,killer666,beer1,06225930,psylocke,james69,schumach,24pnz6kc,endymion,wookie1,poiu123,birdland,smoochie,lastone,rclaki,olive1,pirat,thunder7,chris69,rocko,151617,djg4bb4b,lapper,ajcuivd289,colole57,shadow7,dallas21,ajtdmw,executiv,dickies,omegaman,jason12,newhaven,aaaaaas,pmdmscts,s456123789,beatri,applesauce,levelone,strapon,benladen,creaven,ttttt1,saab95,f123456,pitbul,54321a,sex12345,robert3,atilla,mevefalkcakk,1johnny,veedub,lilleke,nitsuj,5t6y7u8i,teddys,bluefox,nascar20,vwjetta,buffy123,playstation3,loverr,qweasd12,lover2,telekom,benjamin1,alemania,neutrino,rockz,valjean,testicle,trinity3,realty,firestarter,794613852,ardvark,guadalup,philmont,arnold1,holas,zw6syj,birthday299,dover1,sexxy1,gojets,741236985,cance,blue77,xzibit,qwerty88,komarova,qweszxc,footer,rainger,silverst,ghjcnb,catmando,tatooine,31217221027711,amalgam,69dude,qwerty321,roscoe1,74185,cubby,alfa147,perry1,darock,katmandu,darknight,knicks1,freestuff,45454,kidman,4tlved,axlrose,cutie1,quantum1,joseph10,ichigo,pentium3,rfhectkm,rowdy1,woodsink,justforfun,sveta123,pornografia,mrbean,bigpig,tujheirf,delta9,portsmou,hotbod,kartal,10111213,fkbyf001,pavel1,pistons1,necromancer,verga,c7lrwu,doober,thegame1,hatesyou,sexisfun,1melissa,tuczno18,bowhunte,gobama,scorch,campeon,bruce2,fudge1,herpderp,bacon1,redsky,blackeye,19966991,19992000,ripken8,masturba,34524815,primax,paulina1,vp6y38,427cobra,4dwvjj,dracon,fkg7h4f3v6,longview,arakis,panama1,honda2,lkjhgfdsaz,razors,steels,fqkw5m,dionysus,mariajos,soroka,enriqu,nissa,barolo,king1234,hshfd4n279,holland1,flyer1,tbones,343104ky,modems,tk421,ybrbnrf,pikapp,sureshot,wooddoor,florida2,mrbungle,vecmrf,catsdogs,axolotl,nowayout,francoi,chris21,toenail,hartland,asdjkl,nikkii,onlyyou,buckskin,fnord,flutie,holen1,rincewind,lefty1,ducky1,199000,fvthbrf,redskin1,ryno23,lostlove,19mtpgam19,abercrom,benhur,jordan11,roflcopter,ranma,phillesh,avondale,igromania,p4ssword,jenny123,tttttt1,spycams,cardigan,2112yyz,sleepy1,paris123,mopars,lakers34,hustler1,james99,matrix3,popimp,12pack,eggbert,medvedev,testit,performa,logitec,marija,sexybeast,supermanboy,iwantit,rjktcj,jeffer,svarog,halo123,whdbtp,nokia3230,heyjoe,marilyn1,speeder,ibxnsm,prostock,bennyboy,charmin,codydog,parol999,ford9402,jimmer,crayola,159357258,alex77,joey1,cayuga,phish420,poligon,specops,tarasova,caramelo,draconis,dimon,cyzkhw,june29,getbent,1guitar,jimjam,dictiona,shammy,flotsam,0okm9ijn,crapper,technic,fwsadn,rhfdxtyrj,zaq11qaz,anfield1,159753q,curious1,hip-hop,1iiiii,gfhjkm2,cocteau,liveevil,friskie,crackhead,b1afra,elektrik,lancer1,b0ll0cks,jasond,z1234567,tempest1,alakazam,asdfasd,duffy1,oneday,dinkle,qazedctgb,kasimir,happy7,salama,hondaciv,nadezda,andretti,cannondale,sparticu,znbvjd,blueice,money01,finster,eldar,moosie,pappa,delta123,neruda,bmw330ci,jeanpaul,malibu1,alevtina,sobeit,travolta,fullmetal,enamorad,mausi,boston12,greggy,smurf1,ratrace,ichiban,ilovepus,davidg,wolf69,villa1,cocopuff,football12,starfury,zxc12345,forfree,fairfiel,dreams1,tayson,mike2,dogday,hej123,oldtimer,sanpedro,clicker,mollycat,roadstar,golfe,lvbnhbq1,topdevice,a1b2c,sevastopol,calli,milosc,fire911,pink123,team3x,nolimit5,snickers1,annies,09877890,jewel1,steve69,justin11,autechre,killerbe,browncow,slava1,christer,fantomen,redcloud,elenberg,beautiful1,passw0rd1,nazira,advantag,cockring,chaka,rjpzdrf,99941,az123456,biohazar,energie,bubble1,bmw323,tellme,printer1,glavine,1starwar,coolbeans,april17,carly1,quagmire,admin2,djkujuhfl,pontoon,texmex,carlos12,thermo,vaz2106,nougat,bob666,1hockey,1john,cricke,qwerty10,twinz,totalwar,underwoo,tijger,lildevil,123q321,germania,freddd,1scott,beefy,5t4r3e2w1q,fishbait,nobby,hogger,dnstuff,jimmyc,redknapp,flame1,tinfloor,balla,nfnfhby,yukon1,vixens,batata,danny123,1zxcvbnm,gaetan,homewood,greats,tester1,green99,1fucker,sc0tland,starss,glori,arnhem,goatman,1234asd,supertra,bill123,elguapo,sexylegs,jackryan,usmc69,innow,roaddog,alukard,winter11,crawler,gogiants,rvd420,alessandr,homegrow,gobbler,esteba,valeriy,happy12,1joshua,hawking,sicnarf,waynes,iamhappy,bayadera,august2,sashas,gotti,dragonfire,pencil1,halogen,borisov,bassingw,15975346,zachar,sweetp,soccer99,sky123,flipyou,spots3,xakepy,cyclops1,dragon77,rattolo58,motorhea,piligrim,helloween,dmb2010,supermen,shad0w,eatcum,sandokan,pinga,ufkfrnbrf,roksana,amista,pusser,sony1234,azerty1,1qasw2,ghbdt,q1w2e3r4t5y6u7i8,ktutylf,brehznev,zaebali,shitass,creosote,gjrtvjy,14938685,naughtyboy,pedro123,21crack,maurice1,joesakic,nicolas1,matthew9,lbyfhf,elocin,hfcgbplzq,pepper123,tiktak,mycroft,ryan11,firefly1,arriva,cyecvevhbr,loreal,peedee,jessica8,lisa01,anamari,pionex,ipanema,airbag,frfltvbz,123456789aa,epwr49,casper12,sweethear,sanandreas,wuschel,cocodog,france1,119911,redroses,erevan,xtvgbjy,bigfella,geneve,volvo850,evermore,amy123,moxie,celebs,geeman,underwor,haslo1,joy123,hallow,chelsea0,12435687,abarth,12332145,tazman1,roshan,yummie,genius1,chrisd,ilovelife,seventy7,qaz1wsx2,rocket88,gaurav,bobbyboy,tauchen,roberts1,locksmit,masterof,www111,d9ungl,volvos40,asdasd1,golfers,jillian1,7xm5rq,arwpls4u,gbhcf2,elloco,football2,muerte,bob101,sabbath1,strider1,killer66,notyou,lawnboy,de7mdf,johnnyb,voodoo2,sashaa,homedepo,bravos,nihao123,braindea,weedhead,rajeev,artem1,camille1,rockss,bobbyb,aniston,frnhbcf,oakridge,biscayne,cxfcnm,dressage,jesus3,kellyann,king69,juillet,holliste,h00ters,ripoff,123645,1999ar,eric12,123777,tommi,dick12,bilder,chris99,rulezz,getpaid,chicubs,ender1,byajhvfnbrf,milkshak,sk8board,freakshow,antonella,monolit,shelb,hannah01,masters1,pitbull1,1matthew,luvpussy,agbdlcid,panther2,alphas,euskadi,8318131,ronnie1,7558795,sweetgirl,cookie59,sequoia,5552555,ktyxbr,4500455,money7,severus,shinobu,dbityrf,phisig,rogue2,fractal,redfred,sebastian1,nelli,b00mer,cyberman,zqjphsyf6ctifgu,oldsmobile,redeemer,pimpi,lovehurts,1slayer,black13,rtynfdh,airmax,g00gle,1panther,artemon,nopasswo,fuck1234,luke1,trinit,666000,ziadma,oscardog,davex,hazel1,isgood,demond,james5,construc,555551,january2,m1911a1,flameboy,merda,nathan12,nicklaus,dukester,hello99,scorpio7,leviathan,dfcbktr,pourquoi,vfrcbv123,shlomo,rfcgth,rocky3,ignatz,ajhneyf,roger123,squeek,4815162342a,biskit,mossimo,soccer21,gridlock,lunker,popstar,ghhh47hj764,chutney,nitehawk,vortec,gamma1,codeman,dragula,kappasig,rainbow2,milehigh,blueballs,ou8124me,rulesyou,collingw,mystere,aster,astrovan,firetruck,fische,crawfish,hornydog,morebeer,tigerpaw,radost,144000,1chance,1234567890qwe,gracie1,myopia,oxnard,seminoles,evgeni,edvard,partytim,domani,tuffy1,jaimatadi,blackmag,kzueirf,peternor,mathew1,maggie12,henrys,k1234567,fasted,pozitiv,cfdtkbq,jessica7,goleafs,bandito,girl78,sharingan,skyhigh,bigrob,zorros,poopers,oldschoo,pentium2,gripper,norcal,kimba,artiller,moneymak,00197400,272829,shadow1212,thebull,handbags,all4u2c,bigman2,civics,godisgoo,section8,bandaid,suzanne1,zorba,159123,racecars,i62gbq,rambo123,ironroad,johnson2,knobby,twinboys,sausage1,kelly69,enter2,rhjirf,yessss,james12,anguilla,boutit,iggypop,vovochka,06060,budwiser,romuald,meditate,good1,sandrin,herkules,lakers8,honeybea,11111111a,miche,rangers9,lobster1,seiko,belova,midcon,mackdadd,bigdaddy1,daddie,sepultur,freddy12,damon1,stormy1,hockey2,bailey12,hedimaptfcor,dcowboys,sadiedog,thuggin,horny123,josie1,nikki2,beaver69,peewee1,mateus,viktorija,barrys,cubswin1,matt1234,timoxa,rileydog,sicilia,luckycat,candybar,julian1,abc456,pussylip,phase1,acadia,catty,246800,evertonf,bojangle,qzwxec,nikolaj,fabrizi,kagome,noncapa0,marle,popol,hahaha1,cossie,carla10,diggers,spankey,sangeeta,cucciolo,breezer,starwar1,cornholio,rastafari,spring99,yyyyyyy1,webstar,72d5tn,sasha1234,inhouse,gobuffs,civic1,redstone,234523,minnie1,rivaldo,angel5,sti2000,xenocide,11qq11,1phoenix,herman1,holly123,tallguy,sharks1,madri,superbad,ronin,jalal123,hardbody,1234567r,assman1,vivahate,buddylee,38972091,bonds25,40028922,qrhmis,wp2005,ceejay,pepper01,51842543,redrum1,renton,varadero,tvxtjk7r,vetteman,djhvbrc,curly1,fruitcak,jessicas,maduro,popmart,acuari,dirkpitt,buick1,bergerac,golfcart,pdtpljxrf,hooch1,dudelove,d9ebk7,123452000,afdjhbn,greener,123455432,parachut,mookie12,123456780,jeepcj5,potatoe,sanya,qwerty2010,waqw3p,gotika,freaky1,chihuahu,buccanee,ecstacy,crazyboy,slickric,blue88,fktdnbyf,2004rj,delta4,333222111,calient,ptbdhw,1bailey,blitz1,sheila1,master23,hoagie,pyf8ah,orbita,daveyboy,prono1,delta2,heman,1horny,tyrik123,ostrov,md2020,herve,rockfish,el546218,rfhbyjxrf,chessmaster,redmoon,lenny1,215487,tomat,guppy,amekpass,amoeba,my3girls,nottingh,kavita,natalia1,puccini,fabiana,8letters,romeos,netgear,casper2,taters,gowings,iforgot1,pokesmot,pollit,lawrun,petey1,rosebuds,007jr,gthtcnhjqrf,k9dls02a,neener,azertyu,duke11,manyak,tiger01,petros,supermar,mangas,twisty,spotter,takagi,dlanod,qcmfd454,tusymo,zz123456,chach,navyblue,gilbert1,2kash6zq,avemaria,1hxboqg2s,viviane,lhbjkjubz2957704,nowwowtg,1a2b3c4,m0rn3,kqigb7,superpuper,juehtw,gethigh,theclown,makeme,pradeep,sergik,deion21,nurik,devo2706,nbvibt,roman222,kalima,nevaeh,martin7,anathema,florian1,tamwsn3sja,dinmamma,133159,123654q,slicks,pnp0c08,yojimbo,skipp,kiran,pussyfuck,teengirl,apples12,myballs,angeli,1234a,125678,opelastra,blind1,armagedd,fish123,pitufo,chelseaf,thedevil,nugget1,cunt69,beetle1,carter15,apolon,collant,password00,fishboy,djkrjdf,deftone,celti,three11,cyrus1,lefthand,skoal1,ferndale,aries1,fred01,roberta1,chucks,cornbread,lloyd1,icecrea,cisco123,newjerse,vfhrbpf,passio,volcom1,rikimaru,yeah11,djembe,facile,a1l2e3x4,batman7,nurbol,lorenzo1,monica69,blowjob1,998899,spank1,233391,n123456,1bear,bellsout,999998,celtic67,sabre1,putas,y9enkj,alfabeta,heatwave,honey123,hard4u,insane1,xthysq,magnum1,lightsaber,123qweqwe,fisher1,pixie1,precios,benfic,thegirls,bootsman,4321rewq,nabokov,hightime,djghjc,1chelsea,junglist,august16,t3fkvkmj,1232123,lsdlsd12,chuckie1,pescado,granit,toogood,cathouse,natedawg,bmw530,123kid,hajime,198400,engine1,wessonnn,kingdom1,novembre,1rocks,kingfisher,qwerty89,jordan22,zasranec,megat,sucess,installutil,fetish01,yanshi1982,1313666,1314520,clemence,wargod,time1,newzealand,snaker,13324124,cfrehf,hepcat,mazahaka,bigjay,denisov,eastwest,1yellow,mistydog,cheetos,1596357,ginger11,mavrik,bubby1,bhbyf,pyramide,giusepp,luthien,honda250,andrewjackie,kentavr,lampoon,zaq123wsx,sonicx,davidh,1ccccc,gorodok,windsong,programm,blunt420,vlad1995,zxcvfdsa,tarasov,mrskin,sachas,mercedes1,koteczek,rawdog,honeybear,stuart1,kaktys,richard7,55555n,azalia,hockey10,scouter,francy,1xxxxxx,julie456,tequilla,penis123,schmoe,tigerwoods,1ferrari,popov,snowdrop,matthieu,smolensk,cornflak,jordan01,love2000,23wesdxc,kswiss,anna2000,geniusnet,baby2000,33ds5x,waverly,onlyone4,networkingpe,raven123,blesse,gocards,wow123,pjflkork,juicey,poorboy,freeee,billybo,shaheen,zxcvbnm.,berlit,truth1,gepard,ludovic,gunther1,bobby2,bob12345,sunmoon,septembr,bigmac1,bcnjhbz,seaking,all4u,12qw34er56ty,bassie,nokia5228,7355608,sylwia,charvel,billgate,davion,chablis,catsmeow,kjiflrf,amylynn,rfvbkkf,mizredhe,handjob,jasper12,erbol,solara,bagpipe,biffer,notime,erlan,8543852,sugaree,oshkosh,fedora,bangbus,5lyedn,longball,teresa1,bootyman,aleksand,qazwsxedc12,nujbhc,tifosi,zpxvwy,lights1,slowpoke,tiger12,kstate,password10,alex69,collins1,9632147,doglover,baseball2,security1,grunts,orange2,godloves,213qwe879,julieb,1qazxsw23edcvfr4,noidea,8uiazp,betsy1,junior2,parol123,123456zz,piehonkii,kanker,bunky,hingis,reese1,qaz123456,sidewinder,tonedup,footsie,blackpoo,jalapeno,mummy1,always1,josh1,rockyboy,plucky,chicag,nadroj,blarney,blood123,wheaties,packer1,ravens1,mrjones,gfhjkm007,anna2010,awatar,guitar12,hashish,scale1,tomwaits,amrita,fantasma,rfpfym,pass2,tigris,bigair,slicker,sylvi,shilpa,cindylou,archie1,bitches1,poppys,ontime,horney1,camaroz28,alladin,bujhm,cq2kph,alina1,wvj5np,1211123a,tetons,scorelan,concordi,morgan2,awacs,shanty,tomcat14,andrew123,bear69,vitae,fred99,chingy,octane,belgario,fatdaddy,rhodan,password23,sexxes,boomtown,joshua01,war3demo,my2kids,buck1,hot4you,monamour,12345aa,yumiko,parool,carlton1,neverland,rose12,right1,sociald,grouse,brandon0,cat222,alex00,civicex,bintang,malkav,arschloc,dodgeviper,qwerty666,goduke,dante123,boss1,ontheroc,corpsman,love14,uiegu451,hardtail,irondoor,ghjrehfnehf,36460341,konijn,h2slca,kondom25,123456ss,cfytxrf,btnjey,nando,freemail,comander,natas666,siouxsie,hummer1,biomed,dimsum,yankees0,diablo666,lesbian1,pot420,jasonm,glock23,jennyb,itsmine,lena2010,whattheh,beandip,abaddon,kishore,signup,apogee,biteme12,suzieq,vgfun4,iseeyou,rifleman,qwerta,4pussy,hawkman,guest1,june17,dicksuck,bootay,cash12,bassale,ktybyuhfl,leetch,nescafe,7ovtgimc,clapton1,auror,boonie,tracker1,john69,bellas,cabinboy,yonkers,silky1,ladyffesta,drache,kamil1,davidp,bad123,snoopy12,sanche,werthvfy,achille,nefertiti,gerald1,slage33,warszawa,macsan26,mason123,kotopes,welcome8,nascar99,kiril,77778888,hairy1,monito,comicsans,81726354,killabee,arclight,yuo67,feelme,86753099,nnssnn,monday12,88351132,88889999,websters,subito,asdf12345,vaz2108,zvbxrpl,159753456852,rezeda,multimed,noaccess,henrique,tascam,captiva,zadrot,hateyou,sophie12,123123456,snoop1,charlie8,birmingh,hardline,libert,azsxdcf,89172735872,rjpthju,bondar,philips1,olegnaruto,myword,yakman,stardog,banana12,1234567890w,farout,annick,duke01,rfj422,billard,glock19,shaolin1,master10,cinderel,deltaone,manning1,biggreen,sidney1,patty1,goforit1,766rglqy,sevendus,aristotl,armagedo,blumen,gfhfyjz,kazakov,lekbyxxx,accord1,idiota,soccer16,texas123,victoire,ololo,chris01,bobbbb,299792458,eeeeeee1,confiden,07070,clarks,techno1,kayley,stang1,wwwwww1,uuuuu1,neverdie,jasonr,cavscout,481516234,mylove1,shaitan,1qazxcvb,barbaros,123456782000,123wer,thissucks,7seven,227722,faerie,hayduke,dbacks,snorkel,zmxncbv,tiger99,unknown1,melmac,polo1234,sssssss1,1fire,369147,bandung,bluejean,nivram,stanle,ctcnhf,soccer20,blingbli,dirtball,alex2112,183461,skylin,boobman,geronto,brittany1,yyz2112,gizmo69,ktrcec,dakota12,chiken,sexy11,vg08k714,bernadet,1bulldog,beachs,hollyb,maryjoy,margo1,danielle1,chakra,alexand,hullcity,matrix12,sarenna,pablos,antler,supercar,chomsky,german1,airjordan,545ettvy,camaron,flight1,netvideo,tootall,valheru,481516,1234as,skimmer,redcross,inuyash,uthvfy,1012nw,edoardo,bjhgfi,golf11,9379992a,lagarto,socball,boopie,krazy,.adgjmptw,gaydar,kovalev,geddylee,firstone,turbodog,loveee,135711,badbo,trapdoor,opopop11,danny2,max2000,526452,kerry1,leapfrog,daisy2,134kzbip,1andrea,playa1,peekab00,heskey,pirrello,gsewfmck,dimon4ik,puppie,chelios,554433,hypnodanny,fantik,yhwnqc,ghbdtngjrf,anchorag,buffett1,fanta,sappho,024680,vialli,chiva,lucylu,hashem,exbntkm,thema,23jordan,jake11,wildside,smartie,emerica,2wj2k9oj,ventrue,timoth,lamers,baerchen,suspende,boobis,denman85,1adam12,otello,king12,dzakuni,qsawbbs,isgay,porno123,jam123,daytona1,tazzie,bunny123,amaterasu,jeffre,crocus,mastercard,bitchedup,chicago7,aynrand,intel1,tamila,alianza,mulch,merlin12,rose123,alcapone,mircea,loveher,joseph12,chelsea6,dorothy1,wolfgar,unlimite,arturik,qwerty3,paddy1,piramid,linda123,cooool,millie1,warlock1,forgotit,tort02,ilikeyou,avensis,loveislife,dumbass1,clint1,2110se,drlove,olesia,kalinina,sergey123,123423,alicia1,markova,tri5a3,media1,willia1,xxxxxxx1,beercan,smk7366,jesusislord,motherfuck,smacker,birthday5,jbaby,harley2,hyper1,a9387670a,honey2,corvet,gjmptw,rjhjkmbien,apollon,madhuri,3a5irt,cessna17,saluki,digweed,tamia1,yja3vo,cfvlehfr,1111111q,martyna,stimpy1,anjana,yankeemp,jupiler,idkfa,1blue,fromv,afric,3xbobobo,liverp00l,nikon1,amadeus1,acer123,napoleo,david7,vbhjckfdf,mojo69,percy1,pirates1,grunt1,alenushka,finbar,zsxdcf,mandy123,1fred,timewarp,747bbb,druids,julia123,123321qq,spacebar,dreads,fcbarcelona,angela12,anima,christopher1,stargazer,123123s,hockey11,brewski,marlbor,blinker,motorhead,damngood,werthrf,letmein3,moremoney,killer99,anneke,eatit,pilatus,andrew01,fiona1,maitai,blucher,zxgdqn,e5pftu,nagual,panic1,andron,openwide,alphabeta,alison1,chelsea8,fende,mmm666,1shot2,a19l1980,123456@,1black,m1chael,vagner,realgood,maxxx,vekmnbr,stifler,2509mmh,tarkan,sherzod,1234567b,gunners1,artem2010,shooby,sammie1,p123456,piggie,abcde12345,nokia6230,moldir,piter,1qaz3edc,frequenc,acuransx,1star,nikeair,alex21,dapimp,ranjan,ilovegirls,anastasiy,berbatov,manso,21436587,leafs1,106666,angelochek,ingodwetrust,123456aaa,deano,korsar,pipetka,thunder9,minka,himura,installdevic,1qqqqq,digitalprodu,suckmeoff,plonker,headers,vlasov,ktr1996,windsor1,mishanya,garfield1,korvin,littlebit,azaz09,vandamme,scripto,s4114d,passward,britt1,r1chard,ferrari5,running1,7xswzaq,falcon2,pepper76,trademan,ea53g5,graham1,volvos80,reanimator,micasa,1234554321q,kairat,escorpion,sanek94,karolina1,kolovrat,karen2,1qaz@wsx,racing1,splooge,sarah2,deadman1,creed1,nooner,minicoop,oceane,room112,charme,12345ab,summer00,wetcunt,drewman,nastyman,redfire,appels,merlin69,dolfin,bornfree,diskette,ohwell,12345678qwe,jasont,madcap,cobra2,dolemit1,whatthehell,juanit,voldemar,rocke,bianc,elendil,vtufgjkbc,hotwheels,spanis,sukram,pokerface,k1ller,freakout,dontae,realmadri,drumss,gorams,258789,snakey,jasonn,whitewolf,befree,johnny99,pooka,theghost,kennys,vfvektxrf,toby1,jumpman23,deadlock,barbwire,stellina,alexa1,dalamar,mustanggt,northwes,tesoro,chameleo,sigtau,satoshi,george11,hotcum,cornell1,golfer12,geek01d,trololo,kellym,megapolis,pepsi2,hea666,monkfish,blue52,sarajane,bowler1,skeets,ddgirls,hfccbz,bailey01,isabella1,dreday,moose123,baobab,crushme,000009,veryhot,roadie,meanone,mike18,henriett,dohcvtec,moulin,gulnur,adastra,angel9,western1,natura,sweetpe,dtnfkm,marsbar,daisys,frogger1,virus1,redwood1,streetball,fridolin,d78unhxq,midas,michelob,cantik,sk2000,kikker,macanudo,rambone,fizzle,20000,peanuts1,cowpie,stone32,astaroth,dakota01,redso,mustard1,sexylove,giantess,teaparty,bobbin,beerbong,monet1,charles3,anniedog,anna1988,cameleon,longbeach,tamere,qpful542,mesquite,waldemar,12345zx,iamhere,lowboy,canard,granp,daisymay,love33,moosejaw,nivek,ninjaman,shrike01,aaa777,88002000600,vodolei,bambush,falcor,harley69,alphaomega,severine,grappler,bosox,twogirls,gatorman,vettes,buttmunch,chyna,excelsio,crayfish,birillo,megumi,lsia9dnb9y,littlebo,stevek,hiroyuki,firehous,master5,briley2,gangste,chrisk,camaleon,bulle,troyboy,froinlaven,mybutt,sandhya,rapala,jagged,crazycat,lucky12,jetman,wavmanuk,1heather,beegee,negril,mario123,funtime1,conehead,abigai,mhorgan,patagoni,travel1,backspace,frenchfr,mudcat,dashenka,baseball3,rustys,741852kk,dickme,baller23,griffey1,suckmycock,fuhrfzgc,jenny2,spuds,berlin1,justfun,icewind,bumerang,pavlusha,minecraft123,shasta1,ranger12,123400,twisters,buthead,miked,finance1,dignity7,hello9,lvjdp383,jgthfnjh,dalmatio,paparoach,miller31,2bornot2b,fathe,monterre,theblues,satans,schaap,jasmine2,sibelius,manon,heslo,jcnhjd,shane123,natasha2,pierrot,bluecar,iloveass,harriso,red12,london20,job314,beholder,reddawg,fuckyou!,pussylick,bologna1,austintx,ole4ka,blotto,onering,jearly,balbes,lightbul,bighorn,crossfir,lee123,prapor,1ashley,gfhjkm22,wwe123,09090,sexsite,marina123,jagua,witch1,schmoo,parkview,dragon3,chilango,ultimo,abramova,nautique,2bornot2,duende,1arthur,nightwing,surfboar,quant4307,15s9pu03,karina1,shitball,walleye1,wildman1,whytesha,1morgan,my2girls,polic,baranova,berezuckiy,kkkkkk1,forzima,fornow,qwerty02,gokart,suckit69,davidlee,whatnow,edgard,tits1,bayshore,36987412,ghbphfr,daddyy,explore1,zoidberg,5qnzjx,morgane,danilov,blacksex,mickey12,balsam,83y6pv,sarahc,slaye,all4u2,slayer69,nadia1,rlzwp503,4cranker,kaylie,numberon,teremok,wolf12,deeppurple,goodbeer,aaa555,66669999,whatif,harmony1,ue8fpw,3tmnej,254xtpss,dusty197,wcksdypk,zerkalo,dfnheirf,motorol,digita,whoareyou,darksoul,manics,rounders,killer11,d2000lb,cegthgfhjkm,catdog1,beograd,pepsico,julius1,123654987,softbal,killer23,weasel1,lifeson,q123456q,444555666,bunches,andy1,darby1,service01,bear11,jordan123,amega,duncan21,yensid,lerxst,rassvet,bronco2,fortis,pornlove,paiste,198900,asdflkjh,1236547890,futur,eugene1,winnipeg261,fk8bhydb,seanjohn,brimston,matthe1,bitchedu,crisco,302731,roxydog,woodlawn,volgograd,ace1210,boy4u2ownnyc,laura123,pronger,parker12,z123456z,andrew13,longlife,sarang,drogba,gobruins,soccer4,holida,espace,almira,murmansk,green22,safina,wm00022,1chevy,schlumpf,doroth,ulises,golf99,hellyes,detlef,mydog,erkina,bastardo,mashenka,sucram,wehttam,generic1,195000,spaceboy,lopas123,scammer,skynyrd,daddy2,titani,ficker,cr250r,kbnthfnehf,takedown,sticky1,davidruiz,desant,nremtp,painter1,bogies,agamemno,kansas1,smallfry,archi,2b4dnvsx,1player,saddie,peapod,6458zn7a,qvw6n2,gfxqx686,twice2,sh4d0w3d,mayfly,375125,phitau,yqmbevgk,89211375759,kumar1,pfhfpf,toyboy,way2go,7pvn4t,pass69,chipster,spoony,buddycat,diamond3,rincewin,hobie,david01,billbo,hxp4life,matild,pokemon2,dimochka,clown1,148888,jenmt3,cuxldv,cqnwhy,cde34rfv,simone1,verynice,toobig,pasha123,mike00,maria2,lolpop,firewire,dragon9,martesana,a1234567890,birthday3,providen,kiska,pitbulls,556655,misawa,damned69,martin11,goldorak,gunship,glory1,winxclub,sixgun,splodge,agent1,splitter,dome69,ifghjb,eliza1,snaiper,wutang36,phoenix7,666425,arshavin,paulaner,namron,m69fg1w,qwert1234,terrys,zesyrmvu,joeman,scoots,dwml9f,625vrobg,sally123,gostoso,symow8,pelota,c43qpul5rz,majinbuu,lithium1,bigstuff,horndog1,kipelov,kringle,1beavis,loshara,octobe,jmzacf,12342000,qw12qw,runescape1,chargers1,krokus,piknik,jessy,778811,gjvbljh,474jdvff,pleaser,misskitty,breaker1,7f4df451,dayan,twinky,yakumo,chippers,matia,tanith,len2ski1,manni,nichol1,f00b4r,nokia3110,standart,123456789i,shami,steffie,larrywn,chucker,john99,chamois,jjjkkk,penmouse,ktnj2010,gooners,hemmelig,rodney1,merlin01,bearcat1,1yyyyy,159753z,1fffff,1ddddd,thomas11,gjkbyrf,ivanka,f1f2f3,petrovna,phunky,conair,brian2,creative1,klipsch,vbitymrf,freek,breitlin,cecili,westwing,gohabsgo,tippmann,1steve,quattro6,fatbob,sp00ky,rastas,1123581,redsea,rfnmrf,jerky1,1aaaaaa,spk666,simba123,qwert54321,123abcd,beavis69,fyfyfc,starr1,1236547,peanutbutter,sintra,12345abcde,1357246,abcde1,climbon,755dfx,mermaids,monte1,serkan,geilesau,777win,jasonc,parkside,imagine1,rockhead,producti,playhard,principa,spammer,gagher,escada,tsv1860,dbyjuhfl,cruiser1,kennyg,montgome,2481632,pompano,cum123,angel6,sooty,bear01,april6,bodyhamm,pugsly,getrich,mikes,pelusa,fosgate,jasonp,rostislav,kimberly1,128mo,dallas11,gooner1,manuel1,cocacola1,imesh,5782790,password8,daboys,1jones,intheend,e3w2q1,whisper1,madone,pjcgujrat,1p2o3i,jamesp,felicida,nemrac,phikap,firecat,jrcfyjxrf,matt12,bigfan,doedel,005500,jasonx,1234567k,badfish,goosey,utjuhfabz,wilco,artem123,igor123,spike123,jor23dan,dga9la,v2jmsz,morgan12,avery1,dogstyle,natasa,221195ws,twopac,oktober7,karthik,poop1,mightymo,davidr,zermatt,jehova,aezakmi1,dimwit,monkey5,serega123,qwerty111,blabl,casey22,boy123,1clutch,asdfjkl1,hariom,bruce10,jeep95,1smith,sm9934,karishma,bazzzz,aristo,669e53e1,nesterov,kill666,fihdfv,1abc2,anna1,silver11,mojoman,telefono,goeagles,sd3lpgdr,rfhfynby,melinda1,llcoolj,idteul,bigchief,rocky13,timberwo,ballers,gatekeep,kashif,hardass,anastasija,max777,vfuyjkbz,riesling,agent99,kappas,dalglish,tincan,orange3,turtoise,abkbvjy,mike24,hugedick,alabala,geolog,aziza,devilboy,habanero,waheguru,funboy,freedom5,natwest,seashore,impaler,qwaszx1,pastas,bmw535,tecktonik,mika00,jobsearc,pinche,puntang,aw96b6,1corvett,skorpio,foundati,zzr1100,gembird,vfnhjcrby,soccer18,vaz2110,peterp,archer1,cross1,samedi,dima1992,hunter99,lipper,hotbody,zhjckfdf,ducati1,trailer1,04325956,cheryl1,benetton,kononenko,sloneczko,rfgtkmrf,nashua,balalaika,ampere,eliston,dorsai,digge,flyrod,oxymoron,minolta,ironmike,majortom,karimov,fortun,putaria,an83546921an13,blade123,franchis,mxaigtg5,dynxyu,devlt4,brasi,terces,wqmfuh,nqdgxz,dale88,minchia,seeyou,housepen,1apple,1buddy,mariusz,bighouse,tango2,flimflam,nicola1,qwertyasd,tomek1,shumaher,kartoshka,bassss,canaries,redman1,123456789as,preciosa,allblacks,navidad,tommaso,beaudog,forrest1,green23,ryjgjxrf,go4it,ironman2,badnews,butterba,1grizzly,isaeva,rembrand,toront,1richard,bigjon,yfltymrf,1kitty,4ng62t,littlejo,wolfdog,ctvtyjd,spain1,megryan,tatertot,raven69,4809594q,tapout,stuntman,a131313,lagers,hotstuf,lfdbl11,stanley2,advokat,boloto,7894561,dooker,adxel187,cleodog,4play,0p9o8i,masterb,bimota,charlee,toystory,6820055,6666667,crevette,6031769,corsa,bingoo,dima1990,tennis11,samuri,avocado,melissa6,unicor,habari,metart,needsex,cockman,hernan,3891576,3334444,amigo1,gobuffs2,mike21,allianz,2835493,179355,midgard,joey123,oneluv,ellis1,towncar,shonuff,scouse,tool69,thomas19,chorizo,jblaze,lisa1,dima1999,sophia1,anna1989,vfvekbxrf,krasavica,redlegs,jason25,tbontb,katrine,eumesmo,vfhufhbnrf,1654321,asdfghj1,motdepas,booga,doogle,1453145,byron1,158272,kardinal,tanne,fallen1,abcd12345,ufyljy,n12345,kucing,burberry,bodger,1234578,februar,1234512,nekkid,prober,harrison1,idlewild,rfnz90,foiegras,pussy21,bigstud,denzel,tiffany2,bigwill,1234567890zzz,hello69,compute1,viper9,hellspaw,trythis,gococks,dogballs,delfi,lupine,millenia,newdelhi,charlest,basspro,1mike,joeblack,975310,1rosebud,batman11,misterio,fucknut,charlie0,august11,juancho,ilonka,jigei743ks,adam1234,889900,goonie,alicat,ggggggg1,1zzzzzzz,sexywife,northstar,chris23,888111,containe,trojan1,jason5,graikos,1ggggg,1eeeee,tigers01,indigo1,hotmale,jacob123,mishima,richard3,cjxb2014,coco123,meagain,thaman,wallst,edgewood,bundas,1power,matilda1,maradon,hookedup,jemima,r3vi3wpass,2004-10-,mudman,taz123,xswzaq,emerson1,anna21,warlord1,toering,pelle,tgwdvu,masterb8,wallstre,moppel,priora,ghjcnjrdfif,yoland,12332100,1j9e7f6f,jazzzz,yesman,brianm,42qwerty42,12345698,darkmanx,nirmal,john31,bb123456,neuspeed,billgates,moguls,fj1200,hbhlair,shaun1,ghbdfn,305pwzlr,nbu3cd,susanb,pimpdad,mangust6403,joedog,dawidek,gigante,708090,703751,700007,ikalcr,tbivbn,697769,marvi,iyaayas,karen123,jimmyboy,dozer1,e6z8jh,bigtime1,getdown,kevin12,brookly,zjduc3,nolan1,cobber,yr8wdxcq,liebe,m1garand,blah123,616879,action1,600000,sumitomo,albcaz,asian1,557799,dave69,556699,sasa123,streaker,michel1,karate1,buddy7,daulet,koks888,roadtrip,wapiti,oldguy,illini1,1234qq,mrspock,kwiatek,buterfly,august31,jibxhq,jackin,taxicab,tristram,talisker,446655,444666,chrisa,freespace,vfhbfyyf,chevell,444333,notyours,442244,christian1,seemore,sniper12,marlin1,joker666,multik,devilish,crf450,cdfoli,eastern1,asshead,duhast,voyager2,cyberia,1wizard,cybernet,iloveme1,veterok,karandash,392781,looksee,diddy,diabolic,foofight,missey,herbert1,bmw318i,premier1,zsfmpv,eric1234,dun6sm,fuck11,345543,spudman,lurker,bitem,lizzy1,ironsink,minami,339311,s7fhs127,sterne,332233,plankton,galax,azuywe,changepa,august25,mouse123,sikici,killer69,xswqaz,quovadis,gnomik,033028pw,777777a,barrakuda,spawn666,goodgod,slurp,morbius,yelnats,cujo31,norman1,fastone,earwig,aureli,wordlife,bnfkbz,yasmi,austin123,timberla,missy2,legalize,netcom,liljon,takeit,georgin,987654321z,warbird,vitalina,all4u3,mmmmmm1,bichon,ellobo,wahoos,fcazmj,aksarben,lodoss,satnam,vasili,197800,maarten,sam138989,0u812,ankita,walte,prince12,anvils,bestia,hoschi,198300,univer,jack10,ktyecbr,gr00vy,hokie,wolfman1,fuckwit,geyser,emmanue,ybrjkftd,qwerty33,karat,dblock,avocat,bobbym,womersle,1please,nostra,dayana,billyray,alternat,iloveu1,qwerty69,rammstein1,mystikal,winne,drawde,executor,craxxxs,ghjcnjnf,999888777,welshman,access123,963214785,951753852,babe69,fvcnthlfv,****me,666999666,testing2,199200,nintendo64,oscarr,guido8,zhanna,gumshoe,jbird,159357456,pasca,123452345,satan6,mithrand,fhbirf,aa1111aa,viggen,ficktjuv,radial9,davids1,rainbow7,futuro,hipho,platin,poppy123,rhenjq,fulle,rosit,chicano,scrumpy,lumpy1,seifer,uvmrysez,autumn1,xenon,susie1,7u8i9o0p,gamer1,sirene,muffy1,monkeys1,kalinin,olcrackmaster,hotmove,uconn,gshock,merson,lthtdyz,pizzaboy,peggy1,pistache,pinto1,fishka,ladydi,pandor,baileys,hungwell,redboy,rookie1,amanda01,passwrd,clean1,matty1,tarkus,jabba1,bobster,beer30,solomon1,moneymon,sesamo,fred11,sunnysid,jasmine5,thebears,putamadre,workhard,flashbac,counter1,liefde,magnat,corky1,green6,abramov,lordik,univers,shortys,david3,vip123,gnarly,1234567s,billy2,honkey,deathstar,grimmy,govinda,direktor,12345678s,linus1,shoppin,rekbrjdf,santeria,prett,berty75,mohican,daftpunk,uekmyfhf,chupa,strats,ironbird,giants56,salisbur,koldun,summer04,pondscum,jimmyj,miata1,george3,redshoes,weezie,bartman1,0p9o8i7u,s1lver,dorkus,125478,omega9,sexisgood,mancow,patric1,jetta1,074401,ghjuhtcc,gfhjk,bibble,terry2,123213,medicin,rebel2,hen3ry,4freedom,aldrin,lovesyou,browny,renwod,winnie1,belladon,1house,tyghbn,blessme,rfhfrfnbwf,haylee,deepdive,booya,phantasy,gansta,cock69,4mnveh,gazza1,redapple,structur,anakin1,manolito,steve01,poolman,chloe123,vlad1998,qazwsxe,pushit,random123,ontherocks,o236nq,brain1,dimedrol,agape,rovnogod,1balls,knigh,alliso,love01,wolf01,flintstone,beernuts,tuffguy,isengard,highfive,alex23,casper99,rubina,getreal,chinita,italian1,airsoft,qwerty23,muffdiver,willi1,grace123,orioles1,redbull1,chino1,ziggy123,breadman,estefan,ljcneg,gotoit,logan123,wideglid,mancity1,treess,qwe123456,kazumi,qweasdqwe,oddworld,naveed,protos,towson,a801016,godislov,at_asp,bambam1,soccer5,dark123,67vette,carlos123,hoser1,scouser,wesdxc,pelus,dragon25,pflhjn,abdula,1freedom,policema,tarkin,eduardo1,mackdad,gfhjkm11,lfplhfgthvf,adilet,zzzzxxxx,childre,samarkand,cegthgegth,shama,fresher,silvestr,greaser,allout,plmokn,sexdrive,nintendo1,fantasy7,oleander,fe126fd,crumpet,pingzing,dionis,hipster,yfcnz,requin,calliope,jerome1,housecat,abc123456789,doghot,snake123,augus,brillig,chronic1,gfhjkbot,expediti,noisette,master7,caliban,whitetai,favorite3,lisamari,educatio,ghjhjr,saber1,zcegth,1958proman,vtkrbq,milkdud,imajica,thehip,bailey10,hockey19,dkflbdjcnjr,j123456,bernar,aeiouy,gamlet,deltachi,endzone,conni,bcgfybz,brandi1,auckland2010,7653ajl1,mardigra,testuser,bunko18,camaro67,36936,greenie,454dfmcq,6xe8j2z4,mrgreen,ranger5,headhunt,banshee1,moonunit,zyltrc,hello3,pussyboy,stoopid,tigger11,yellow12,drums1,blue02,kils123,junkman,banyan,jimmyjam,tbbucs,sportster,badass1,joshie,braves10,lajolla,1amanda,antani,78787,antero,19216801,chich,rhett32,sarahm,beloit,sucker69,corkey,nicosnn,rccola,caracol,daffyduc,bunny2,mantas,monkies,hedonist,cacapipi,ashton1,sid123,19899891,patche,greekgod,cbr1000,leader1,19977991,ettore,chongo,113311,picass,cfif123,rhtfnbd,frances1,andy12,minnette,bigboy12,green69,alices,babcia,partyboy,javabean,freehand,qawsed123,xxx111,harold1,passwo,jonny1,kappa1,w2dlww3v5p,1merlin,222999,tomjones,jakeman,franken,markhegarty,john01,carole1,daveman,caseys,apeman,mookey,moon123,claret,titans1,residentevil,campari,curitiba,dovetail,aerostar,jackdaniels,basenji,zaq12w,glencoe,biglove,goober12,ncc170,far7766,monkey21,eclipse9,1234567v,vanechka,aristote,grumble,belgorod,abhishek,neworleans,pazzword,dummie,sashadog,diablo11,mst3000,koala1,maureen1,jake99,isaiah1,funkster,gillian1,ekaterina20,chibears,astra123,4me2no,winte,skippe,necro,windows9,vinograd,demolay,vika2010,quiksilver,19371ayj,dollar1,shecky,qzwxecrv,butterfly1,merrill1,scoreland,1crazy,megastar,mandragora,track1,dedhed,jacob2,newhope,qawsedrftgyh,shack1,samvel,gatita,shyster,clara1,telstar,office1,crickett,truls,nirmala,joselito,chrisl,lesnik,aaaabbbb,austin01,leto2010,bubbie,aaa12345,widder,234432,salinger,mrsmith,qazsedcft,newshoes,skunks,yt1300,bmw316,arbeit,smoove,123321qweewq,123qazwsx,22221111,seesaw,0987654321a,peach1,1029384756q,sereda,gerrard8,shit123,batcave,energy1,peterb,mytruck,peter12,alesya,tomato1,spirou,laputaxx,magoo1,omgkremidia,knight12,norton1,vladislava,shaddy,austin11,jlbyjxrf,kbdthgekm,punheta,fetish69,exploiter,roger2,manstein,gtnhjd,32615948worms,dogbreath,ujkjdjkjvrf,vodka1,ripcord,fatrat,kotek1,tiziana,larrybir,thunder3,nbvfnb,9kyq6fge,remembe,likemike,gavin1,shinigam,yfcnfcmz,13245678,jabbar,vampyr,ane4ka,lollipo,ashwin,scuderia,limpdick,deagle,3247562,vishenka,fdhjhf,alex02,volvov70,mandys,bioshock,caraca,tombraider,matrix69,jeff123,13579135,parazit,black3,noway1,diablos,hitmen,garden1,aminor,decembe,august12,b00ger,006900,452073t,schach,hitman1,mariner1,vbnmrf,paint1,742617000027,bitchboy,pfqxjyjr,5681392,marryher,sinnet,malik1,muffin12,aninha,piolin,lady12,traffic1,cbvjyf,6345789,june21,ivan2010,ryan123,honda99,gunny,coorslight,asd321,hunter69,7224763,sonofgod,dolphins1,1dolphin,pavlenko,woodwind,lovelov,pinkpant,gblfhfcbyf,hotel1,justinbiebe,vinter,jeff1234,mydogs,1pizza,boats1,parrothe,shawshan,brooklyn1,cbrown,1rocky,hemi426,dragon64,redwings1,porsches,ghostly,hubbahub,buttnut,b929ezzh,sorokina,flashg,fritos,b7mguk,metatron,treehous,vorpal,8902792,marcu,free123,labamba,chiefs1,zxc123zxc,keli_14,hotti,1steeler,money4,rakker,foxwoods,free1,ahjkjd,sidorova,snowwhit,neptune1,mrlover,trader1,nudelamb,baloo,power7,deltasig,bills1,trevo,7gorwell,nokia6630,nokia5320,madhatte,1cowboys,manga1,namtab,sanjar,fanny1,birdman1,adv12775,carlo1,dude1998,babyhuey,nicole11,madmike,ubvyfpbz,qawsedr,lifetec,skyhook,stalker123,toolong,robertso,ripazha,zippy123,1111111a,manol,dirtyman,analslut,jason3,dutches,minhasenha,cerise,fenrir,jayjay1,flatbush,franka,bhbyjxrf,26429vadim,lawntrax,198700,fritzy,nikhil,ripper1,harami,truckman,nemvxyheqdd5oqxyxyzi,gkfytnf,bugaboo,cableman,hairpie,xplorer,movado,hotsex69,mordred,ohyeah1,patrick3,frolov,katieh,4311111q,mochaj,presari,bigdo,753951852,freedom4,kapitan,tomas1,135795,sweet123,pokers,shagme,tane4ka,sentinal,ufgyndmv,jonnyb,skate123,123456798,123456788,very1,gerrit,damocles,dollarbi,caroline1,lloyds,pizdets,flatland,92702689,dave13,meoff,ajnjuhfabz,achmed,madison9,744744z,amonte,avrillavigne,elaine1,norma1,asseater,everlong,buddy23,cmgang1,trash1,mitsu,flyman,ulugbek,june27,magistr,fittan,sebora64,dingos,sleipnir,caterpil,cindys,212121qaz,partys,dialer,gjytltkmybr,qweqaz,janvier,rocawear,lostboy,aileron,sweety1,everest1,pornman,boombox,potter1,blackdic,44448888,eric123,112233aa,2502557i,novass,nanotech,yourname,x12345,indian1,15975300,1234567l,carla51,chicago0,coleta,cxzdsaewq,qqwweerr,marwan,deltic,hollys,qwerasd,pon32029,rainmake,nathan0,matveeva,legioner,kevink,riven,tombraid,blitzen,a54321,jackyl,chinese1,shalimar,oleg1995,beaches1,tommylee,eknock,berli,monkey23,badbob,pugwash,likewhoa,jesus2,yujyd360,belmar,shadow22,utfp5e,angelo1,minimax,pooder,cocoa1,moresex,tortue,lesbia,panthe,snoopy2,drumnbass,alway,gmcz71,6jhwmqku,leppard,dinsdale,blair1,boriqua,money111,virtuagirl,267605,rattlesn,1sunshin,monica12,veritas1,newmexic,millertime,turandot,rfvxfnrf,jaydog,kakawka,bowhunter,booboo12,deerpark,erreway,taylorma,rfkbybyf,wooglin,weegee,rexdog,iamhorny,cazzo1,vhou812,bacardi1,dctktyyfz,godpasi,peanut12,bertha1,fuckyoubitch,ghosty,altavista,jertoot,smokeit,ghjcnbvtyz,fhnehxbr,rolsen,qazxcdews,maddmaxx,redrocke,qazokm,spencer2,thekiller,asdf11,123sex,tupac1,p1234567,dbrown,1biteme,tgo4466,316769,sunghi,shakespe,frosty1,gucci1,arcana,bandit01,lyubov,poochy,dartmout,magpies1,sunnyd,mouseman,summer07,chester7,shalini,danbury,pigboy,dave99,deniss,harryb,ashley11,pppppp1,01081988m,balloon1,tkachenko,bucks1,master77,pussyca,tricky1,zzxxccvv,zoulou,doomer,mukesh,iluv69,supermax,todays,thefox,don123,dontask,diplom,piglett,shiney,fahbrf,qaz12wsx,temitope,reggin,project1,buffy2,inside1,lbpfqyth,vanilla1,lovecock,u4slpwra,fylh.irf,123211,7ertu3ds,necroman,chalky,artist1,simpso,4x7wjr,chaos666,lazyacres,harley99,ch33s3,marusa,eagle7,dilligas,computadora,lucky69,denwer,nissan350z,unforgiv,oddball,schalke0,aztec1,borisova,branden1,parkave,marie123,germa,lafayett,878kckxy,405060,cheeseca,bigwave,fred22,andreea,poulet,mercutio,psycholo,andrew88,o4izdmxu,sanctuar,newhome,milion,suckmydi,rjvgm.nth,warior,goodgame,1qwertyuiop,6339cndh,scorpio2,macker,southbay,crabcake,toadie,paperclip,fatkid,maddo,cliff1,rastafar,maries,twins1,geujdrf,anjela,wc4fun,dolina,mpetroff,rollout,zydeco,shadow3,pumpki,steeda,volvo240,terras,blowjo,blue2000,incognit,badmojo,gambit1,zhukov,station1,aaronb,graci,duke123,clipper1,qazxsw2,ledzeppe,kukareku,sexkitte,cinco,007008,lakers12,a1234b,acmilan1,afhfjy,starrr,slutty3,phoneman,kostyan,bonzo1,sintesi07,ersatz,cloud1,nephilim,nascar03,rey619,kairos,123456789e,hardon1,boeing1,juliya,hfccdtn,vgfun8,polizei,456838,keithb,minouche,ariston,savag,213141,clarkken,microwav,london2,santacla,campeo,qr5mx7,464811,mynuts,bombo,1mickey,lucky8,danger1,ironside,carter12,wyatt1,borntorun,iloveyou123,jose1,pancake1,tadmichaels,monsta,jugger,hunnie,triste,heat7777,ilovejesus,queeny,luckycharm,lieben,gordolee85,jtkirk,forever21,jetlag,skylane,taucher,neworlea,holera,000005,anhnhoem,melissa7,mumdad,massimiliano,dima1994,nigel1,madison3,slicky,shokolad,serenit,jmh1978,soccer123,chris3,drwho,rfpzdrf,1qasw23ed,free4me,wonka,sasquatc,sanan,maytag,verochka,bankone,molly12,monopoli,xfqybr,lamborgini,gondolin,candycane,needsome,jb007,scottie1,brigit,0147258369,kalamazo,lololyo123,bill1234,ilovejes,lol123123,popkorn,april13,567rntvm,downunde,charle1,angelbab,guildwars,homeworld,qazxcvbnm,superma1,dupa123,kryptoni,happyy,artyom,stormie,cool11,calvin69,saphir,konovalov,jansport,october8,liebling,druuna,susans,megans,tujhjdf,wmegrfux,jumbo1,ljb4dt7n,012345678910,kolesnik,speculum,at4gftlw,kurgan,93pn75,cahek0980,dallas01,godswill,fhifdby,chelsea4,jump23,barsoom,catinhat,urlacher,angel99,vidadi1,678910,lickme69,topaz1,westend,loveone,c12345,gold12,alex1959,mamon,barney12,1maggie,alex12345,lp2568cskt,s1234567,gjikbdctyf,anthony0,browns99,chips1,sunking,widespre,lalala1,tdutif,fucklife,master00,alino4ka,stakan,blonde1,phoebus,tenore,bvgthbz,brunos,suzjv8,uvdwgt,revenant,1banana,veroniqu,sexfun,sp1der,4g3izhox,isakov,shiva1,scooba,bluefire,wizard12,dimitris,funbags,perseus,hoodoo,keving,malboro,157953,a32tv8ls,latics,animate,mossad,yejntb,karting,qmpq39zr,busdrive,jtuac3my,jkne9y,sr20dett,4gxrzemq,keylargo,741147,rfktylfhm,toast1,skins1,xcalibur,gattone,seether,kameron,glock9mm,julio1,delenn,gameday,tommyd,str8edge,bulls123,66699,carlsberg,woodbird,adnama,45auto,codyman,truck2,1w2w3w4w,pvjegu,method1,luetdi,41d8cd98f00b,bankai,5432112345,94rwpe,reneee,chrisx,melvins,775577,sam2000,scrappy1,rachid,grizzley,margare,morgan01,winstons,gevorg,gonzal,crawdad,gfhfdjp,babilon,noneya,pussy11,barbell,easyride,c00li0,777771,311music,karla1,golions,19866891,peejay,leadfoot,hfvbkm,kr9z40sy,cobra123,isotwe,grizz,sallys,****you,aaa123a,dembel,foxs14,hillcres,webman,mudshark,alfredo1,weeded,lester1,hovepark,ratface,000777fffa,huskie,wildthing,elbarto,waikiki,masami,call911,goose2,regin,dovajb,agricola,cjytxrj,andy11,penny123,family01,a121212,1braves,upupa68,happy100,824655,cjlove,firsttim,kalel,redhair,dfhtymt,sliders,bananna,loverbo,fifa2008,crouton,chevy350,panties2,kolya1,alyona,hagrid,spagetti,q2w3e4r,867530,narkoman,nhfdvfnjkju123,1ccccccc,napolean,0072563,allay,w8sted,wigwam,jamesk,state1,parovoz,beach69,kevinb,rossella,logitech1,celula,gnocca,canucks1,loginova,marlboro1,aaaa1,kalleanka,mester,mishutka,milenko,alibek,jersey1,peterc,1mouse,nedved,blackone,ghfplybr,682regkh,beejay,newburgh,ruffian,clarets,noreaga,xenophon,hummerh2,tenshi,smeagol,soloyo,vfhnby,ereiamjh,ewq321,goomie,sportin,cellphone,sonnie,jetblack,saudan,gblfhfc,matheus,uhfvjnf,alicja,jayman1,devon1,hexagon,bailey2,vtufajy,yankees7,salty1,908070,killemal,gammas,eurocard,sydney12,tuesday1,antietam,wayfarer,beast666,19952009sa,aq12ws,eveli,hockey21,haloreach,dontcare,xxxx1,andrea11,karlmarx,jelszo,tylerb,protools,timberwolf,ruffneck,pololo,1bbbbb,waleed,sasami,twinss,fairlady,illuminati,alex007,sucks1,homerjay,scooter7,tarbaby,barmaley,amistad,vanes,randers,tigers12,dreamer2,goleafsg,googie,bernie1,as12345,godeep,james3,phanto,gwbush,cumlover,2196dc,studioworks,995511,golf56,titova,kaleka,itali,socks1,kurwamac,daisuke,hevonen,woody123,daisie,wouter,henry123,gostosa,guppie,porpoise,iamsexy,276115,paula123,1020315,38gjgeuftd,rjrfrjkf,knotty,idiot1,sasha12345,matrix13,securit,radical1,ag764ks,jsmith,coolguy1,secretar,juanas,sasha1988,itout,00000001,tiger11,1butthea,putain,cavalo,basia1,kobebryant,1232323,12345asdfg,sunsh1ne,cyfqgth,tomkat,dorota,dashit,pelmen,5t6y7u,whipit,smokeone,helloall,bonjour1,snowshoe,nilknarf,x1x2x3,lammas,1234599,lol123456,atombomb,ironchef,noclue,alekseev,gwbush1,silver2,12345678m,yesican,fahjlbnf,chapstic,alex95,open1,tiger200,lisichka,pogiako,cbr929,searchin,tanya123,alex1973,phil413,alex1991,dominati,geckos,freddi,silenthill,egroeg,vorobey,antoxa,dark666,shkola,apple22,rebellio,shamanking,7f8srt,cumsucker,partagas,bill99,22223333,arnster55,fucknuts,proxima,silversi,goblues,parcells,vfrcbvjdf,piloto,avocet,emily2,1597530,miniskir,himitsu,pepper2,juiceman,venom1,bogdana,jujube,quatro,botafogo,mama2010,junior12,derrickh,asdfrewq,miller2,chitarra,silverfox,napol,prestigio,devil123,mm111qm,ara123,max33484,sex2000,primo1,sephan,anyuta,alena2010,viborg,verysexy,hibiscus,terps,josefin,oxcart,spooker,speciali,raffaello,partyon,vfhvtkflrf,strela,a123456z,worksuck,glasss,lomonosov,dusty123,dukeblue,1winter,sergeeva,lala123,john22,cmc09,sobolev,bettylou,dannyb,gjkrjdybr,hagakure,iecnhbr,awsedr,pmdmsctsk,costco,alekseeva,fktrcttd,bazuka,flyingv,garuda,buffy16,gutierre,beer12,stomatolog,ernies,palmeiras,golf123,love269,n.kmgfy,gjkysqgbpltw,youare,joeboo,baksik,lifeguar,111a111,nascar8,mindgame,dude1,neopets,frdfkfyu,june24,phoenix8,penelopa,merlin99,mercenar,badluck,mishel,bookert,deadsexy,power9,chinchil,1234567m,alex10,skunk1,rfhkcjy,sammycat,wright1,randy2,marakesh,temppassword,elmer251,mooki,patrick0,bonoedge,1tits,chiar,kylie1,graffix,milkman1,cornel,mrkitty,nicole12,ticketmaster,beatles4,number20,ffff1,terps1,superfre,yfdbufnjh,jake1234,flblfc,1111qq,zanuda,jmol01,wpoolejr,polopol,nicolett,omega13,cannonba,123456789.,sandy69,ribeye,bo243ns,marilena,bogdan123,milla,redskins1,19733791,alias1,movie1,ducat,marzena,shadowru,56565,coolman1,pornlover,teepee,spiff,nafanya,gateway3,fuckyou0,hasher,34778,booboo69,staticx,hang10,qq12345,garnier,bosco123,1234567qw,carson1,samso,1xrg4kcq,cbr929rr,allan123,motorbik,andrew22,pussy101,miroslava,cytujdbr,camp0017,cobweb,snusmumrik,salmon1,cindy2,aliya,serendipity,co437at,tincouch,timmy123,hunter22,st1100,vvvvvv1,blanka,krondor,sweeti,nenit,kuzmich,gustavo1,bmw320i,alex2010,trees1,kyliem,essayons,april26,kumari,sprin,fajita,appletre,fghbjhb,1green,katieb,steven2,corrado1,satelite,1michell,123456789c,cfkfvfylhf,acurarsx,slut543,inhere,bob2000,pouncer,k123456789,fishie,aliso,audia8,bluetick,soccer69,jordan99,fromhell,mammoth1,fighting54,mike25,pepper11,extra1,worldwid,chaise,vfr800,sordfish,almat,nofate,listopad,hellgate,dctvghbdf,jeremia,qantas,lokiju,honker,sprint1,maral,triniti,compaq3,sixsix6,married1,loveman,juggalo1,repvtyrj,zxcasdqw,123445,whore1,123678,monkey6,west123,warcraf,pwnage,mystery1,creamyou,ant123,rehjgfnrf,corona1,coleman1,steve121,alderaan,barnaul,celeste1,junebug1,bombshel,gretzky9,tankist,targa,cachou,vaz2101,playgolf,boneyard,strateg,romawka,iforgotit,pullup,garbage1,irock,archmage,shaft1,oceano,sadies,alvin1,135135ab,psalm69,lmfao,ranger02,zaharova,33334444,perkman,realman,salguod,cmoney,astonmartin,glock1,greyfox,viper99,helpm,blackdick,46775575,family5,shazbot,dewey1,qwertyas,shivani,black22,mailman1,greenday1,57392632,red007,stanky,sanchez1,tysons,daruma,altosax,krayzie,85852008,1forever,98798798,irock.,123456654,142536789,ford22,brick1,michela,preciou,crazy4u,01telemike01,nolife,concac,safety1,annie123,brunswic,destini,123456qwer,madison0,snowball1,137946,1133557799,jarule,scout2,songohan,thedead,00009999,murphy01,spycam,hirsute,aurinko,associat,1miller,baklan,hermes1,2183rm,martie,kangoo,shweta,yvonne1,westsid,jackpot1,rotciv,maratik,fabrika,claude1,nursultan,noentry,ytnhjufnm,electra1,ghjcnjnfr1,puneet,smokey01,integrit,bugeye,trouble2,14071789,paul01,omgwtf,dmh415,ekilpool,yourmom1,moimeme,sparky11,boludo,ruslan123,kissme1,demetrio,appelsin,asshole3,raiders2,bunns,fynjybj,billygoa,p030710p$e4o,macdonal,248ujnfk,acorns,schmidt1,sparrow1,vinbylrj,weasle,jerom,ycwvrxxh,skywalk,gerlinde,solidus,postal1,poochie1,1charles,rhianna,terorist,rehnrf,omgwtfbbq,assfucke,deadend,zidan,jimboy,vengence,maroon5,7452tr,dalejr88,sombra,anatole,elodi,amazonas,147789,q12345q,gawker1,juanma,kassidy,greek1,bruces,bilbob,mike44,0o9i8u7y6t,kaligula,agentx,familie,anders1,pimpjuice,0128um,birthday10,lawncare,hownow,grandorgue,juggerna,scarfac,kensai,swatteam,123four,motorbike,repytxbr,other1,celicagt,pleomax,gen0303,godisgreat,icepick,lucifer666,heavy1,tea4two,forsure,02020,shortdog,webhead,chris13,palenque,3techsrl,knights1,orenburg,prong,nomarg,wutang1,80637852730,laika,iamfree,12345670,pillow1,12343412,bigears,peterg,stunna,rocky5,12123434,damir,feuerwehr,7418529630,danone,yanina,valenci,andy69,111222q,silvia1,1jjjjj,loveforever,passwo1,stratocaster,8928190a,motorolla,lateralu,ujujkm,chubba,ujkjdf,signon,123456789zx,serdce,stevo,wifey200,ololo123,popeye1,1pass,central1,melena,luxor,nemezida,poker123,ilovemusic,qaz1234,noodles1,lakeshow,amarill,ginseng,billiam,trento,321cba,fatback,soccer33,master13,marie2,newcar,bigtop,dark1,camron,nosgoth,155555,biglou,redbud,jordan7,159789,diversio,actros,dazed,drizzit,hjcnjd,wiktoria,justic,gooses,luzifer,darren1,chynna,tanuki,11335577,icculus,boobss,biggi,firstson,ceisi123,gatewa,hrothgar,jarhead1,happyjoy,felipe1,bebop1,medman,athena1,boneman,keiths,djljgfl,dicklick,russ120,mylady,zxcdsa,rock12,bluesea,kayaks,provista,luckies,smile4me,bootycal,enduro,123123f,heartbre,ern3sto,apple13,bigpappa,fy.njxrf,bigtom,cool69,perrito,quiet1,puszek,cious,cruella,temp1,david26,alemap,aa123123,teddies,tricolor,smokey12,kikiriki,mickey01,robert01,super5,ranman,stevenso,deliciou,money777,degauss,mozar,susanne1,asdasd12,shitbag,mommy123,wrestle1,imfree,fuckyou12,barbaris,florent,ujhijr,f8yruxoj,tefjps,anemone,toltec,2gether,left4dead2,ximen,gfkmvf,dunca,emilys,diana123,16473a,mark01,bigbro,annarbor,nikita2000,11aa11,tigres,llllll1,loser2,fbi11213,jupite,qwaszxqw,macabre,123ert,rev2000,mooooo,klapaucius,bagel1,chiquit,iyaoyas,bear101,irocz28,vfktymrfz,smokey2,love99,rfhnbyf,dracul,keith123,slicko,peacock1,orgasmic,thesnake,solder,wetass,doofer,david5,rhfcyjlfh,swanny,tammys,turkiye,tubaman,estefani,firehose,funnyguy,servo,grace17,pippa1,arbiter,jimmy69,nfymrf,asdf67nm,rjcnzy,demon123,thicknes,sexysex,kristall,michail,encarta,banderos,minty,marchenko,de1987ma,mo5kva,aircav,naomi1,bonni,tatoo,cronaldo,49ers1,mama1963,1truck,telecaster,punksnotdead,erotik,1eagles,1fender,luv269,acdeehan,tanner1,freema,1q3e5t7u,linksys,tiger6,megaman1,neophyte,australia1,mydaddy,1jeffrey,fgdfgdfg,gfgekz,1986irachka,keyman,m0b1l3,dfcz123,mikeyg,playstation2,abc125,slacker1,110491g,lordsoth,bhavani,ssecca,dctvghbdtn,niblick,hondacar,baby01,worldcom,4034407,51094didi,3657549,3630000,3578951,sweetpussy,majick,supercoo,robert11,abacabb,panda123,gfhjkm13,ford4x4,zippo1,lapin,1726354,lovesong,dude11,moebius,paravoz,1357642,matkhau,solnyshko,daniel4,multiplelog,starik,martusia,iamtheman,greentre,jetblue,motorrad,vfrcbvev,redoak,dogma1,gnorman,komlos,tonka1,1010220,666satan,losenord,lateralus,absinthe,command1,jigga1,iiiiiii1,pants1,jungfrau,926337,ufhhbgjnnth,yamakasi,888555,sunny7,gemini69,alone1,zxcvbnmz,cabezon,skyblues,zxc1234,456123a,zero00,caseih,azzurra,legolas1,menudo,murcielago,785612,779977,benidorm,viperman,dima1985,piglet1,hemligt,hotfeet,7elephants,hardup,gamess,a000000,267ksyjf,kaitlynn,sharkie,sisyphus,yellow22,667766,redvette,666420,mets69,ac2zxdty,hxxrvwcy,cdavis,alan1,noddy,579300,druss,eatshit1,555123,appleseed,simpleplan,kazak,526282,fynfyfyfhbde,birthday6,dragon6,1pookie,bluedevils,omg123,hj8z6e,x5dxwp,455445,batman23,termin,chrisbrown,animals1,lucky9,443322,kzktxrf,takayuki,fermer,assembler,zomu9q,sissyboy,sergant,felina,nokia6230i,eminem12,croco,hunt4red,festina,darknigh,cptnz062,ndshnx4s,twizzler,wnmaz7sd,aamaax,gfhfcjkmrf,alabama123,barrynov,happy5,punt0it,durandal,8xuuobe4,cmu9ggzh,bruno12,316497,crazyfrog,vfvfktyf,apple3,kasey1,mackdaddy,anthon1,sunnys,angel3,cribbage,moon1,donal,bryce1,pandabear,mwss474,whitesta,freaker,197100,bitche,p2ssw0rd,turnb,tiktonik,moonlite,ferret1,jackas,ferrum,bearclaw,liberty2,1diablo,caribe,snakeeyes,janbam,azonic,rainmaker,vetalik,bigeasy,baby1234,sureno13,blink1,kluivert,calbears,lavanda,198600,dhtlbyf,medvedeva,fox123,whirling,bonscott,freedom9,october3,manoman,segredo,cerulean,robinso,bsmith,flatus,dannon,password21,rrrrrr1,callista,romai,rainman1,trantor,mickeymo,bulldog7,g123456,pavlin,pass22,snowie,hookah,7ofnine,bubba22,cabible,nicerack,moomoo1,summer98,yoyo123,milan1,lieve27,mustang69,jackster,exocet,nadege,qaz12,bahama,watson1,libras,eclipse2,bahram,bapezm,up9x8rww,ghjcnjz,themaste,deflep27,ghost16,gattaca,fotograf,junior123,gilber,gbjyth,8vjzus,rosco1,begonia,aldebara,flower12,novastar,buzzman,manchild,lopez1,mama11,william7,yfcnz1,blackstar,spurs123,moom4242,1amber,iownyou,tightend,07931505,paquito,1johnson,smokepot,pi31415,snowmass,ayacdc,jessicam,giuliana,5tgbnhy6,harlee,giuli,bigwig,tentacle,scoubidou2,benelli,vasilina,nimda,284655,jaihind,lero4ka,1tommy,reggi,ididit,jlbyjxtcndj,mike26,qbert,wweraw,lukasz,loosee123,palantir,flint1,mapper,baldie,saturne,virgin1,meeeee,elkcit,iloveme2,blue15,themoon,radmir,number3,shyanne,missle,hannelor,jasmina,karin1,lewie622,ghjcnjqgfhjkm,blasters,oiseau,sheela,grinders,panget,rapido,positiv,twink,fltkbyf,kzsfj874,daniel01,enjoyit,nofags,doodad,rustler,squealer,fortunat,peace123,khushi,devils2,7inches,candlebo,topdawg,armen,soundman,zxcqweasd,april7,gazeta,netman,hoppers,bear99,ghbjhbntn,mantle7,bigbo,harpo,jgordon,bullshi,vinny1,krishn,star22,thunderc,galinka,phish123,tintable,nightcrawler,tigerboy,rbhgbx,messi,basilisk,masha1998,nina123,yomamma,kayla123,geemoney,0000000000d,motoman,a3jtni,ser123,owen10,italien,vintelok,12345rewq,nightime,jeepin,ch1tt1ck,mxyzptlk,bandido,ohboy,doctorj,hussar,superted,parfilev,grundle,1jack,livestrong,chrisj,matthew3,access22,moikka,fatone,miguelit,trivium,glenn1,smooches,heiko,dezember,spaghett,stason,molokai,bossdog,guitarma,waderh,boriska,photosho,path13,hfrtnf,audre,junior24,monkey24,silke,vaz21093,bigblue1,trident1,candide,arcanum,klinker,orange99,bengals1,rosebu,mjujuj,nallepuh,mtwapa1a,ranger69,level1,bissjop,leica,1tiffany,rutabega,elvis77,kellie1,sameas,barada,karabas,frank12,queenb,toutoune,surfcity,samanth1,monitor1,littledo,kazakova,fodase,mistral1,april22,carlit,shakal,batman123,fuckoff2,alpha01,5544332211,buddy3,towtruck,kenwood1,vfiekmrf,jkl123,pypsik,ranger75,sitges,toyman,bartek1,ladygirl,booman,boeing77,installsqlst,222666,gosling,bigmack,223311,bogos,kevin2,gomez1,xohzi3g4,kfnju842,klubnika,cubalibr,123456789101,kenpo,0147852369,raptor1,tallulah,boobys,jjones,1q2s3c,moogie,vid2600,almas,wombat1,extra300,xfiles1,green77,sexsex1,heyjude,sammyy,missy123,maiyeuem,nccpl25282,thicluv,sissie,raven3,fldjrfn,buster22,broncos2,laurab,letmein4,harrydog,solovey,fishlips,asdf4321,ford123,superjet,norwegen,movieman,psw333333,intoit,postbank,deepwate,ola123,geolog323,murphys,eshort,a3eilm2s2y,kimota,belous,saurus,123321qaz,i81b4u,aaa12,monkey20,buckwild,byabybnb,mapleleafs,yfcnzyfcnz,baby69,summer03,twista,246890,246824,ltcnhjth,z1z2z3,monika1,sad123,uto29321,bathory,villan,funkey,poptarts,spam967888,705499fh,sebast,porn1234,earn381,1porsche,whatthef,123456789y,polo12,brillo,soreilly,waters1,eudora,allochka,is_a_bot,winter00,bassplay,531879fiz,onemore,bjarne,red911,kot123,artur1,qazxdr,c0rvette,diamond7,matematica,klesko,beaver12,2enter,seashell,panam,chaching,edward2,browni,xenogear,cornfed,aniram,chicco22,darwin1,ancella2,sophie2,vika1998,anneli,shawn41,babie,resolute,pandora2,william8,twoone,coors1,jesusis1,teh012,cheerlea,renfield,tessa1,anna1986,madness1,bkmlfh,19719870,liebherr,ck6znp42,gary123,123654z,alsscan,eyedoc,matrix7,metalgea,chinito,4iter,falcon11,7jokx7b9du,bigfeet,tassadar,retnuh,muscle1,klimova,darion,batistuta,bigsur,1herbier,noonie,ghjrehjh,karimova,faustus,snowwhite,1manager,dasboot,michael12,analfuck,inbed,dwdrums,jaysoncj,maranell,bsheep75,164379,rolodex,166666,rrrrrrr1,almaz666,167943,russel1,negrito,alianz,goodpussy,veronik,1w2q3r4e,efremov,emb377,sdpass,william6,alanfahy,nastya1995,panther5,automag,123qwe12,vfvf2011,fishe,1peanut,speedie,qazwsx1234,pass999,171204j,ketamine,sheena1,energizer,usethis1,123abc123,buster21,thechamp,flvbhfk,frank69,chane,hopeful1,claybird,pander,anusha,bigmaxxx,faktor,housebed,dimidrol,bigball,shashi,derby1,fredy,dervish,bootycall,80988218126,killerb,cheese2,pariss,mymail,dell123,catbert,christa1,chevytru,gjgjdf,00998877,overdriv,ratten,golf01,nyyanks,dinamite,bloembol,gismo,magnus1,march2,twinkles,ryan22,duckey,118a105b,kitcat,brielle,poussin,lanzarot,youngone,ssvegeta,hero63,battle1,kiler,fktrcfylh1,newera,vika1996,dynomite,oooppp,beer4me,foodie,ljhjuf,sonshine,godess,doug1,constanc,thinkbig,steve2,damnyou,autogod,www333,kyle1,ranger7,roller1,harry2,dustin1,hopalong,tkachuk,b00bies,bill2,deep111,stuffit,fire69,redfish1,andrei123,graphix,1fishing,kimbo1,mlesp31,ifufkbyf,gurkan,44556,emily123,busman,and123,8546404,paladine,1world,bulgakov,4294967296,bball23,1wwwww,mycats,elain,delta6,36363,emilyb,color1,6060842,cdtnkfyrf,hedonism,gfgfrfhkj,5551298,scubad,gostate,sillyme,hdbiker,beardown,fishers,sektor,00000007,newbaby,rapid1,braves95,gator2,nigge,anthony3,sammmy,oou812,heffer,phishin,roxanne1,yourass,hornet1,albator,2521659,underwat,tanusha,dianas,3f3fpht7op,dragon20,bilbobag,cheroke,radiatio,dwarf1,majik,33st33,dochka,garibald,robinh,sham69,temp01,wakeboar,violet1,1w2w3w,registr,tonite,maranello,1593570,parolamea,galatasara,loranthos,1472583,asmodean,1362840,scylla,doneit,jokerr,porkypig,kungen,mercator,koolhaas,come2me,debbie69,calbear,liverpoolfc,yankees4,12344321a,kennyb,madma,85200258,dustin23,thomas13,tooling,mikasa,mistic,crfnbyf,112233445,sofia1,heinz57,colts1,price1,snowey,joakim,mark11,963147,cnhfcnm,kzinti,1bbbbbbb,rubberdu,donthate,rupert1,sasha1992,regis1,nbuhbwf,fanboy,sundial,sooner1,wayout,vjnjhjkf,deskpro,arkangel,willie12,mikeyb,celtic1888,luis1,buddy01,duane1,grandma1,aolcom,weeman,172839456,basshead,hornball,magnu,pagedown,molly2,131517,rfvtgbyhn,astonmar,mistery,madalina,cash1,1happy,shenlong,matrix01,nazarova,369874125,800500,webguy,rse2540,ashley2,briank,789551,786110,chunli,j0nathan,greshnik,courtne,suckmyco,mjollnir,789632147,asdfg1234,754321,odelay,ranma12,zebedee,artem777,bmw318is,butt1,rambler1,yankees9,alabam,5w76rnqp,rosies,mafioso,studio1,babyruth,tranzit,magical123,gfhjkm135,12345$,soboleva,709394,ubique,drizzt1,elmers,teamster,pokemons,1472583690,1597532486,shockers,merckx,melanie2,ttocs,clarisse,earth1,dennys,slobber,flagman,farfalla,troika,4fa82hyx,hakan,x4ww5qdr,cumsuck,leather1,forum1,july20,barbel,zodiak,samuel12,ford01,rushfan,bugsy1,invest1,tumadre,screwme,a666666,money5,henry8,tiddles,sailaway,starburs,100years,killer01,comando,hiromi,ranetka,thordog,blackhole,palmeira,verboten,solidsna,q1w1e1,humme,kevinc,gbrfxe,gevaudan,hannah11,peter2,vangar,sharky7,talktome,jesse123,chuchi,pammy,!qazxsw2,siesta,twenty1,wetwilly,477041,natural1,sun123,daniel3,intersta,shithead1,hellyea,bonethugs,solitair,bubbles2,father1,nick01,444000,adidas12,dripik,cameron2,442200,a7nz8546,respublika,fkojn6gb,428054,snoppy,rulez1,haslo,rachael1,purple01,zldej102,ab12cd34,cytuehjxrf,madhu,astroman,preteen,handsoff,mrblonde,biggio,testin,vfdhif,twolves,unclesam,asmara,kpydskcw,lg2wmgvr,grolsch,biarritz,feather1,williamm,s62i93,bone1,penske,337733,336633,taurus1,334433,billet,diamondd,333000,nukem,fishhook,godogs,thehun,lena1982,blue00,smelly1,unb4g9ty,65pjv22,applegat,mikehunt,giancarlo,krillin,felix123,december1,soapy,46doris,nicole23,bigsexy1,justin10,pingu,bambou,falcon12,dgthtl,1surfer,qwerty01,estrellit,nfqcjy,easygo,konica,qazqwe,1234567890m,stingers,nonrev,3e4r5t,champio,bbbbbb99,196400,allen123,seppel,simba2,rockme,zebra3,tekken3,endgame,sandy2,197300,fitte,monkey00,eldritch,littleone,rfyfgkz,1member,66chevy,oohrah,cormac,hpmrbm41,197600,grayfox,elvis69,celebrit,maxwell7,rodders,krist,1camaro,broken1,kendall1,silkcut,katenka,angrick,maruni,17071994a,tktyf,kruemel,snuffles,iro4ka,baby12,alexis01,marryme,vlad1994,forward1,culero,badaboom,malvin,hardtoon,hatelove,molley,knopo4ka,duchess1,mensuck,cba321,kickbutt,zastava,wayner,fuckyou6,eddie123,cjkysir,john33,dragonfi,cody1,jabell,cjhjrf,badseed,sweden1,marihuana,brownlov,elland,nike1234,kwiettie,jonnyboy,togepi,billyk,robert123,bb334,florenci,ssgoku,198910,bristol1,bob007,allister,yjdujhjl,gauloise,198920,bellaboo,9lives,aguilas,wltfg4ta,foxyroxy,rocket69,fifty50,babalu,master21,malinois,kaluga,gogosox,obsessio,yeahrigh,panthers1,capstan,liza2000,leigh1,paintball1,blueskie,cbr600f3,bagdad,jose98,mandreki,shark01,wonderbo,muledeer,xsvnd4b2,hangten,200001,grenden,anaell,apa195,model1,245lufpq,zip100,ghjcgtrn,wert1234,misty2,charro,juanjose,fkbcrf,frostbit,badminto,buddyy,1doctor,vanya,archibal,parviz,spunky1,footboy,dm6tzsgp,legola,samadhi,poopee,ytdxz2ca,hallowboy,dposton,gautie,theworm,guilherme,dopehead,iluvtits,bobbob1,ranger6,worldwar,lowkey,chewbaca,oooooo99,ducttape,dedalus,celular,8i9o0p,borisenko,taylor01,111111z,arlingto,p3nnywiz,rdgpl3ds,boobless,kcmfwesg,blacksab,mother2,markus1,leachim,secret2,s123456789,1derful,espero,russell2,tazzer,marykate,freakme,mollyb,lindros8,james00,gofaster,stokrotka,kilbosik,aquamann,pawel1,shedevil,mousie,slot2009,october6,146969,mm259up,brewcrew,choucho,uliana,sexfiend,fktirf,pantss,vladimi,starz,sheeps,12341234q,bigun,tiggers,crjhjcnm,libtech,pudge1,home12,zircon,klaus1,jerry2,pink1,lingus,monkey66,dumass,polopolo09,feuerweh,rjyatnf,chessy,beefer,shamen,poohbear1,4jjcho,bennevis,fatgirls,ujnbrf,cdexswzaq,9noize9,rich123,nomoney,racecar1,hacke,clahay,acuario,getsum,hondacrv,william0,cheyenn,techdeck,atljhjdf,wtcacq,suger,fallenangel,bammer,tranquil,carla123,relayer,lespaul1,portvale,idontno,bycnbnen,trooper2,gennadiy,pompon,billbob,amazonka,akitas,chinatow,atkbrc,busters,fitness1,cateye,selfok2013,1murphy,fullhous,mucker,bajskorv,nectarin,littlebitch,love24,feyenoor,bigal37,lambo1,pussybitch,icecube1,biged,kyocera,ltybcjdf,boodle,theking1,gotrice,sunset1,abm1224,fromme,sexsells,inheat,kenya1,swinger1,aphrodit,kurtcobain,rhind101,poidog,poiulkjh,kuzmina,beantown,tony88,stuttgar,drumer,joaqui,messenge,motorman,amber2,nicegirl,rachel69,andreia,faith123,studmuffin,jaiden,red111,vtkmybr,gamecocks,gumper,bosshogg,4me2know,tokyo1,kleaner,roadhog,fuckmeno,phoenix3,seeme,buttnutt,boner69,andreyka,myheart,katerin,rugburn,jvtuepip,dc3ubn,chile1,ashley69,happy99,swissair,balls2,fylhttdf,jimboo,55555d,mickey11,voronin,m7hsqstm,stufff,merete,weihnachte,dowjones,baloo1,freeones,bears34,auburn1,beverl,timberland,1elvis,guinness1,bombadil,flatron1,logging7,telefoon,merl1n,masha1,andrei1,cowabung,yousuck1,1matrix,peopl,asd123qwe,sweett,mirror1,torrente,joker12,diamond6,jackaroo,00000a,millerlite,ironhorse,2twins,stryke,gggg1,zzzxxxccc,roosevel,8363eddy,angel21,depeche1,d0ct0r,blue14,areyou,veloce,grendal,frederiksberg,cbcntvf,cb207sl,sasha2000,was.here,fritzz,rosedale,spinoza,cokeisit,gandalf3,skidmark,ashley01,12345j,1234567890qaz,sexxxxxx,beagles,lennart,12345789,pass10,politic,max007,gcheckou,12345611,tiffy,lightman,mushin,velosiped,brucewayne,gauthie,elena123,greenegg,h2oski,clocker,nitemare,123321s,megiddo,cassidy1,david13,boywonde,flori,peggy12,pgszt6md,batterie,redlands,scooter6,bckhere,trueno,bailey11,maxwell2,bandana,timoth1,startnow,ducati74,tiern,maxine1,blackmetal,suzyq,balla007,phatfarm,kirsten1,titmouse,benhogan,culito,forbin,chess1,warren1,panman,mickey7,24lover,dascha,speed2,redlion,andrew10,johnwayn,nike23,chacha1,bendog,bullyboy,goldtree,spookie,tigger99,1cookie,poutine,cyclone1,woodpony,camaleun,bluesky1,dfadan,eagles20,lovergirl,peepshow,mine1,dima1989,rjdfkmxer,11111aaaaa,machina,august17,1hhhhh,0773417k,1monster,freaksho,jazzmin,davidw,kurupt,chumly,huggies,sashenka,ccccccc1,bridge1,giggalo,cincinna,pistol1,hello22,david77,lightfoo,lucky6,jimmy12,261397,lisa12,tabaluga,mysite,belo4ka,greenn,eagle99,punkrawk,salvado,slick123,wichsen,knight99,dummys,fefolico,contrera,kalle1,anna1984,delray,robert99,garena,pretende,racefan,alons,serenada,ludmilla,cnhtkjr,l0swf9gx,hankster,dfktynbyrf,sheep1,john23,cv141ab,kalyani,944turbo,crystal2,blackfly,zrjdktdf,eus1sue1,mario5,riverplate,harddriv,melissa3,elliott1,sexybitc,cnhfyybr,jimdavis,bollix,beta1,amberlee,skywalk1,natala,1blood,brattax,shitty1,gb15kv99,ronjon,rothmans,thedoc,joey21,hotboi,firedawg,bimbo38,jibber,aftermat,nomar,01478963,phishing,domodo,anna13,materia,martha1,budman1,gunblade,exclusiv,sasha1997,anastas,rebecca2,fackyou,kallisti,fuckmyass,norseman,ipswich1,151500,1edward,intelinside,darcy1,bcrich,yjdjcnbf,failte,buzzzz,cream1,tatiana1,7eleven,green8,153351,1a2s3d4f5g6h,154263,milano1,bambi1,bruins77,rugby2,jamal1,bolita,sundaypunch,bubba12,realmadr,vfyxtcnth,iwojima,notlob,black666,valkiria,nexus1,millerti,birthday100,swiss1,appollo,gefest,greeneyes,celebrat,tigerr,slava123,izumrud,bubbabub,legoman,joesmith,katya123,sweetdream,john44,wwwwwww1,oooooo1,socal,lovespor,s5r8ed67s,258147,heidis,cowboy22,wachovia,michaelb,qwe1234567,i12345,255225,goldie1,alfa155,45colt,safeu851,antonova,longtong,1sparky,gfvznm,busen,hjlbjy,whateva,rocky4,cokeman,joshua3,kekskek1,sirocco,jagman,123456qwert,phinupi,thomas10,loller,sakur,vika2011,fullred,mariska,azucar,ncstate,glenn74,halima,aleshka,ilovemylife,verlaat,baggie,scoubidou6,phatboy,jbruton,scoop1,barney11,blindman,def456,maximus2,master55,nestea,11223355,diego123,sexpistols,sniffy,philip1,f12345,prisonbreak,nokia2700,ajnjuhfa,yankees3,colfax,ak470000,mtnman,bdfyeirf,fotball,ichbin,trebla,ilusha,riobravo,beaner1,thoradin,polkaudi,kurosawa,honda123,ladybu,valerik,poltava,saviola,fuckyouguys,754740g0,anallove,microlab1,juris01,ncc1864,garfild,shania1,qagsud,makarenko,cindy69,lebedev,andrew11,johnnybo,groovy1,booster1,sanders1,tommyb,johnson4,kd189nlcih,hondaman,vlasova,chick1,sokada,sevisgur,bear2327,chacho,sexmania,roma1993,hjcnbckfd,valley1,howdie,tuppence,jimandanne,strike3,y4kuz4,nhfnfnf,tsubasa,19955991,scabby,quincunx,dima1998,uuuuuu1,logica,skinner1,pinguino,lisa1234,xpressmusic,getfucked,qqqq1,bbbb1,matulino,ulyana,upsman,johnsmith,123579,co2000,spanner1,todiefor,mangoes,isabel1,123852,negra,snowdon,nikki123,bronx1,booom,ram2500,chuck123,fireboy,creek1,batman13,princesse,az12345,maksat,1knight,28infern,241455,r7112s,muselman,mets1986,katydid,vlad777,playme,kmfdm1,asssex,1prince,iop890,bigbroth,mollymoo,waitron,lizottes,125412,juggler,quinta,0sister0,zanardi,nata123,heckfyxbr,22q04w90e,engine2,nikita95,zamira,hammer22,lutscher,carolina1,zz6319,sanman,vfuflfy,buster99,rossco,kourniko,aggarwal,tattoo1,janice1,finger1,125521,19911992,shdwlnds,rudenko,vfvfgfgf123,galatea,monkeybu,juhani,premiumcash,classact,devilmay,helpme2,knuddel,hardpack,ramil,perrit,basil1,zombie13,stockcar,tos8217,honeypie,nowayman,alphadog,melon1,talula,125689,tiribon12,tornike,haribol,telefone,tiger22,sucka,lfytxrf,chicken123,muggins,a23456,b1234567,lytdybr,otter1,pippa,vasilisk,cooking1,helter,78978,bestboy,viper7,ahmed1,whitewol,mommys,apple5,shazam1,chelsea7,kumiko,masterma,rallye,bushmast,jkz123,entrar,andrew6,nathan01,alaric,tavasz,heimdall,gravy1,jimmy99,cthlwt,powerr,gthtrhtcnjr,canesfan,sasha11,ybrbnf_25,august9,brucie,artichok,arnie1,superdude,tarelka,mickey22,dooper,luners,holeshot,good123,gettysbu,bicho,hammer99,divine5,1zxcvbn,stronzo,q22222,disne,bmw750il,godhead,hallodu,aerith,nastik,differen,cestmoi,amber69,5string,pornosta,dirtygirl,ginger123,formel1,scott12,honda200,hotspurs,johnatha,firstone123,lexmark1,msconfig,karlmasc,l123456,123qweasdzx,baldman,sungod,furka,retsub,9811020,ryder1,tcglyued,astron,lbvfcbr,minddoc,dirt49,baseball12,tbear,simpl,schuey,artimus,bikman,plat1num,quantex,gotyou,hailey1,justin01,ellada,8481068,000002,manimal,dthjybxrf,buck123,dick123,6969696,nospam,strong1,kodeord,bama12,123321w,superman123,gladiolus,nintend,5792076,dreamgirl,spankme1,gautam,arianna1,titti,tetas,cool1234,belladog,importan,4206969,87e5nclizry,teufelo7,doller,yfl.irf,quaresma,3440172,melis,bradle,nnmaster,fast1,iverso,blargh,lucas12,chrisg,iamsam,123321az,tomjerry,kawika,2597174,standrew,billyg,muskan,gizmodo2,rz93qpmq,870621345,sathya,qmezrxg4,januari,marthe,moom4261,cum2me,hkger286,lou1988,suckit1,croaker,klaudia1,753951456,aidan1,fsunoles,romanenko,abbydog,isthebes,akshay,corgi,fuck666,walkman555,ranger98,scorpian,hardwareid,bluedragon,fastman,2305822q,iddqdiddqd,1597532,gopokes,zvfrfcb,w1234567,sputnik1,tr1993,pa$$w0rd,2i5fdruv,havvoc,1357913,1313131,bnm123,cowd00d,flexscan,thesims2,boogiema,bigsexxy,powerstr,ngc4565,joshman,babyboy1,123jlb,funfunfu,qwe456,honor1,puttana,bobbyj,daniel21,pussy12,shmuck,1232580,123578951,maxthedo,hithere1,bond0007,gehenna,nomames,blueone,r1234567,bwana,gatinho,1011111,torrents,cinta,123451234,tiger25,money69,edibey,pointman,mmcm19,wales1,caffreys,phaedra,bloodlus,321ret32,rufuss,tarbit,joanna1,102030405,stickboy,lotrfotr34,jamshid,mclarenf1,ataman,99ford,yarrak,logan2,ironlung,pushistik,dragoon1,unclebob,tigereye,pinokio,tylerj,mermaid1,stevie1,jaylen,888777,ramana,roman777,brandon7,17711771s,thiago,luigi1,edgar1,brucey,videogam,classi,birder,faramir,twiddle,cubalibre,grizzy,fucky,jjvwd4,august15,idinahui,ranita,nikita1998,123342,w1w2w3,78621323,4cancel,789963,(null,vassago,jaydog472,123452,timt42,canada99,123589,rebenok,htyfnf,785001,osipov,maks123,neverwinter,love2010,777222,67390436,eleanor1,bykemo,aquemini,frogg,roboto,thorny,shipmate,logcabin,66005918,nokian,gonzos,louisian,1abcdefg,triathlo,ilovemar,couger,letmeino,supera,runvs,fibonacci,muttly,58565254,5thgbqi,vfnehsv,electr,jose12,artemis1,newlove,thd1shr,hawkey,grigoryan,saisha,tosca,redder,lifesux,temple1,bunnyman,thekids,sabbeth,tarzan1,182838,158uefas,dell50,1super,666222,47ds8x,jackhamm,mineonly,rfnfhbyf,048ro,665259,kristina1,bombero,52545856,secure1,bigloser,peterk,alex2,51525354,anarchy1,superx,teenslut,money23,sigmapi,sanfrancisco,acme34,private5,eclips,qwerttrewq,axelle,kokain,hardguy,peter69,jesuschr,dyanna,dude69,sarah69,toyota91,amberr,45645645,bugmenot,bigted,44556677,556644,wwr8x9pu,alphaome,harley13,kolia123,wejrpfpu,revelati,nairda,sodoff,cityboy,pinkpussy,dkalis,miami305,wow12345,triplet,tannenbau,asdfasdf1,darkhors,527952,retired1,soxfan,nfyz123,37583867,goddes,515069,gxlmxbewym,1warrior,36925814,dmb2011,topten,karpova,89876065093rax,naturals,gateway9,cepseoun,turbot,493949,cock22,italia1,sasafras,gopnik,stalke,1qazxdr5,wm2006,ace1062,alieva,blue28,aracel,sandia,motoguzz,terri1,emmajane,conej,recoba,alex1995,jerkyboy,cowboy12,arenrone,precisio,31415927,scsa316,panzer1,studly1,powerhou,bensam,mashoutq,billee,eeyore1,reape,thebeatl,rul3z,montesa,doodle1,cvzefh1gk,424365,a159753,zimmerma,gumdrop,ashaman,grimreap,icandoit,borodina,branca,dima2009,keywest1,vaders,bubluk,diavolo,assss,goleta,eatass,napster1,382436,369741,5411pimo,lenchik,pikach,gilgamesh,kalimera,singer1,gordon2,rjycnbnewbz,maulwurf,joker13,2much4u,bond00,alice123,robotec,fuckgirl,zgjybz,redhorse,margaret1,brady1,pumpkin2,chinky,fourplay,1booger,roisin,1brandon,sandan,blackheart,cheez,blackfin,cntgfyjdf,mymoney1,09080706,goodboss,sebring1,rose1,kensingt,bigboner,marcus12,ym3cautj,struppi,thestone,lovebugs,stater,silver99,forest99,qazwsx12345,vasile,longboar,mkonji,huligan,rhfcbdfz,airmail,porn11,1ooooo,sofun,snake2,msouthwa,dougla,1iceman,shahrukh,sharona,dragon666,france98,196800,196820,ps253535,zjses9evpa,sniper01,design1,konfeta,jack99,drum66,good4you,station2,brucew,regedit,school12,mvtnr765,pub113,fantas,tiburon1,king99,ghjcnjgbpltw,checkito,308win,1ladybug,corneliu,svetasveta,197430,icicle,imaccess,ou81269,jjjdsl,brandon6,bimbo1,smokee,piccolo1,3611jcmg,children2,cookie2,conor1,darth1,margera,aoi856,paully,ou812345,sklave,eklhigcz,30624700,amazing1,wahooo,seau55,1beer,apples2,chulo,dolphin9,heather6,198206,198207,hergood,miracle1,njhyflj,4real,milka,silverfi,fabfive,spring12,ermine,mammy,jumpjet,adilbek,toscana,caustic,hotlove,sammy69,lolita1,byoung,whipme,barney01,mistys,tree1,buster3,kaylin,gfccgjhn,132333,aishiteru,pangaea,fathead1,smurph,198701,ryslan,gasto,xexeylhf,anisimov,chevyss,saskatoo,brandy12,tweaker,irish123,music2,denny1,palpatin,outlaw1,lovesuck,woman1,mrpibb,diadora,hfnfneq,poulette,harlock,mclaren1,cooper12,newpass3,bobby12,rfgecnfcerf,alskdjfh,mini14,dukers,raffael,199103,cleo123,1234567qwertyu,mossberg,scoopy,dctulf,starline,hjvjxrf,misfits1,rangers2,bilbos,blackhea,pappnase,atwork,purple2,daywalker,summoner,1jjjjjjj,swansong,chris10,laluna,12345qqq,charly1,lionsden,money99,silver33,hoghead,bdaddy,199430,saisg002,nosaints,tirpitz,1gggggg,jason13,kingss,ernest1,0cdh0v99ue,pkunzip,arowana,spiri,deskjet1,armine,lances,magic2,thetaxi,14159265,cacique,14142135,orange10,richard0,backdraf,255ooo,humtum,kohsamui,c43dae874d,wrestling1,cbhtym,sorento,megha,pepsiman,qweqwe12,bliss7,mario64,korolev,balls123,schlange,gordit,optiquest,fatdick,fish99,richy,nottoday,dianne1,armyof1,1234qwerasdfzxcv,bbonds,aekara,lidiya,baddog1,yellow5,funkie,ryan01,greentree,gcheckout,marshal1,liliput,000000z,rfhbyrf,gtogto43,rumpole,tarado,marcelit,aqwzsxedc,kenshin1,sassydog,system12,belly1,zilla,kissfan,tools1,desember,donsdad,nick11,scorpio6,poopoo1,toto99,steph123,dogfuck,rocket21,thx113,dude12,sanek,sommar,smacky,pimpsta,letmego,k1200rs,lytghjgtnhjdcr,abigale,buddog,deles,baseball9,roofus,carlsbad,hamzah,hereiam,genial,schoolgirlie,yfz450,breads,piesek,washear,chimay,apocalyp,nicole18,gfgf1234,gobulls,dnevnik,wonderwall,beer1234,1moose,beer69,maryann1,adpass,mike34,birdcage,hottuna,gigant,penquin,praveen,donna123,123lol123,thesame,fregat,adidas11,selrahc,pandoras,test3,chasmo,111222333000,pecos,daniel11,ingersol,shana1,mama12345,cessna15,myhero,1simpson,nazarenko,cognit,seattle2,irina1,azfpc310,rfycthdf,hardy1,jazmyn,sl1200,hotlanta,jason22,kumar123,sujatha,fsd9shtyu,highjump,changer,entertai,kolding,mrbig,sayuri,eagle21,qwertzu,jorge1,0101dd,bigdong,ou812a,sinatra1,htcnjhfy,oleg123,videoman,pbyfblf,tv612se,bigbird1,kenaidog,gunite,silverma,ardmore,123123qq,hotbot,cascada,cbr600f4,harakiri,chico123,boscos,aaron12,glasgow1,kmn5hc,lanfear,1light,liveoak,fizika,ybrjkftdyf,surfside,intermilan,multipas,redcard,72chevy,balata,coolio1,schroede,kanat,testerer,camion,kierra,hejmeddig,antonio2,tornados,isidor,pinkey,n8skfswa,ginny1,houndog,1bill,chris25,hastur,1marine,greatdan,french1,hatman,123qqq,z1z2z3z4,kicker1,katiedog,usopen,smith22,mrmagoo,1234512i,assa123,7seven7,monster7,june12,bpvtyf,149521,guenter,alex1985,voronina,mbkugegs,zaqwsxcderfv,rusty5,mystic1,master0,abcdef12,jndfkb,r4zpm3,cheesey,skripka,blackwhite,sharon69,dro8smwq,lektor,techman,boognish,deidara,heckfyf,quietkey,authcode,monkey4,jayboy,pinkerto,merengue,chulita,bushwick,turambar,kittykit,joseph2,dad123,kristo,pepote,scheiss,hambone1,bigballa,restaura,tequil,111luzer,euro2000,motox,denhaag,chelsi,flaco1,preeti,lillo,1001sin,passw,august24,beatoff,555555d,willis1,kissthis,qwertyz,rvgmw2gl,iloveboobies,timati,kimbo,msinfo,dewdrop,sdbaker,fcc5nky2,messiah1,catboy,small1,chode,beastie1,star77,hvidovre,short1,xavie,dagobah,alex1987,papageno,dakota2,toonami,fuerte,jesus33,lawina,souppp,dirtybir,chrish,naturist,channel1,peyote,flibble,gutentag,lactate,killem,zucchero,robinho,ditka,grumpy1,avr7000,boxxer,topcop,berry1,mypass1,beverly1,deuce1,9638527410,cthuttdf,kzkmrf,lovethem,band1t,cantona1,purple11,apples123,wonderwo,123a456,fuzzie,lucky99,dancer2,hoddling,rockcity,winner12,spooty,mansfiel,aimee1,287hf71h,rudiger,culebra,god123,agent86,daniel0,bunky1,notmine,9ball,goofus,puffy1,xyh28af4,kulikov,bankshot,vurdf5i2,kevinm,ercole,sexygirls,razvan,october7,goater,lollie,raissa,thefrog,mdmaiwa3,mascha,jesussaves,union1,anthony9,crossroa,brother2,areyuke,rodman91,toonsex,dopeman,gericom,vaz2115,cockgobbler,12356789,12345699,signatur,alexandra1,coolwhip,erwin1,awdrgyjilp,pens66,ghjrjgtyrj,linkinpark,emergenc,psych0,blood666,bootmort,wetworks,piroca,johnd,iamthe1,supermario,homer69,flameon,image1,bebert,fylhtq1,annapoli,apple11,hockey22,10048,indahouse,mykiss,1penguin,markp,misha123,foghat,march11,hank1,santorin,defcon4,tampico,vbnhjafy,robert22,bunkie,athlon64,sex777,nextdoor,koskesh,lolnoob,seemnemaailm,black23,march15,yeehaa,chiqui,teagan,siegheil,monday2,cornhusk,mamusia,chilis,sthgrtst,feldspar,scottm,pugdog,rfghjy,micmac,gtnhjdyf,terminato,1jackson,kakosja,bogomol,123321aa,rkbvtyrj,tresor,tigertig,fuckitall,vbkkbjy,caramon,zxc12,balin,dildo1,soccer09,avata,abby123,cheetah1,marquise,jennyc,hondavfr,tinti,anna1985,dennis2,jorel,mayflowe,icema,hal2000,nikkis,bigmouth,greenery,nurjan,leonov,liberty7,fafnir,larionov,sat321321,byteme1,nausicaa,hjvfynbrf,everto,zebra123,sergio1,titone,wisdom1,kahala,104328q,marcin1,salima,pcitra,1nnnnn,nalini,galvesto,neeraj,rick1,squeeky,agnes1,jitterbu,agshar,maria12,0112358,traxxas,stivone,prophet1,bananza,sommer1,canoneos,hotfun,redsox11,1bigmac,dctdjkjl,legion1,everclea,valenok,black9,danny001,roxie1,1theman,mudslide,july16,lechef,chula,glamis,emilka,canbeef,ioanna,cactus1,rockshox,im2cool,ninja9,thvfrjdf,june28,milo17,missyou,micky1,nbibyf,nokiaa,goldi,mattias,fuckthem,asdzxc123,ironfist,junior01,nesta,crazzy,killswit,hygge,zantac,kazama,melvin1,allston,maandag,hiccup,prototyp,specboot,dwl610,hello6,159456,baldhead,redwhite,calpoly,whitetail,agile1,cousteau,matt01,aust1n,malcolmx,gjlfhjr,semperf1,ferarri,a1b2c3d,vangelis,mkvdari,bettis36,andzia,comand,tazzman,morgaine,pepluv,anna1990,inandout,anetka,anna1997,wallpape,moonrake,huntress,hogtie,cameron7,sammy7,singe11,clownboy,newzeala,wilmar,safrane,rebeld,poopi,granat,hammertime,nermin,11251422,xyzzy1,bogeys,jkmxbr,fktrcfyl,11223311,nfyrbcn,11223300,powerpla,zoedog,ybrbnbyf,zaphod42,tarawa,jxfhjdfirf,dude1234,g5wks9,goobe,czekolada,blackros,amaranth,medical1,thereds,julija,nhecsyfujkjdt,promopas,buddy4,marmalad,weihnachten,tronic,letici,passthief,67mustan,ds7zamnw,morri,w8woord,cheops,pinarell,sonofsam,av473dv,sf161pn,5c92v5h6,purple13,tango123,plant1,1baby,xufrgemw,fitta,1rangers,spawns,kenned,taratata,19944991,11111118,coronas,4ebouux8,roadrash,corvette1,dfyjdf846,marley12,qwaszxerdfcv,68stang,67stang,racin,ellehcim,sofiko,nicetry,seabass1,jazzman1,zaqwsx1,laz2937,uuuuuuu1,vlad123,rafale,j1234567,223366,nnnnnn1,226622,junkfood,asilas,cer980,daddymac,persepho,neelam,00700,shithappens,255555,qwertyy,xbox36,19755791,qweasd1,bearcub,jerryb,a1b1c1,polkaudio,basketball1,456rty,1loveyou,marcus2,mama1961,palace1,transcend,shuriken,sudhakar,teenlove,anabelle,matrix99,pogoda,notme,bartend,jordana,nihaoma,ataris,littlegi,ferraris,redarmy,giallo,fastdraw,accountbloc,peludo,pornostar,pinoyako,cindee,glassjaw,dameon,johnnyd,finnland,saudade,losbravo,slonko,toplay,smalltit,nicksfun,stockhol,penpal,caraj,divedeep,cannibus,poppydog,pass88,viktory,walhalla,arisia,lucozade,goldenbo,tigers11,caball,ownage123,tonna,handy1,johny,capital5,faith2,stillher,brandan,pooky1,antananarivu,hotdick,1justin,lacrimos,goathead,bobrik,cgtwbfkbcn,maywood,kamilek,gbplf123,gulnar,beanhead,vfvjyn,shash,viper69,ttttttt1,hondacr,kanako,muffer,dukies,justin123,agapov58,mushka,bad11bad,muleman,jojo123,andreika,makeit,vanill,boomers,bigals,merlin11,quacker,aurelien,spartak1922,ligeti,diana2,lawnmowe,fortune1,awesom,rockyy,anna1994,oinker,love88,eastbay,ab55484,poker0,ozzy666,papasmurf,antihero,photogra,ktm250,painkill,jegr2d2,p3orion,canman,dextur,qwest123,samboy,yomismo,sierra01,herber,vfrcbvvfrcbv,gloria1,llama1,pie123,bobbyjoe,buzzkill,skidrow,grabber,phili,javier1,9379992q,geroin,oleg1994,sovereig,rollover,zaq12qaz,battery1,killer13,alina123,groucho1,mario12,peter22,butterbean,elise1,lucycat,neo123,ferdi,golfer01,randie,gfhfyjbr,ventura1,chelsea3,pinoy,mtgox,yrrim7,shoeman,mirko,ffggyyo,65mustan,ufdibyjd,john55,suckfuck,greatgoo,fvfnjhb,mmmnnn,love20,1bullshi,sucesso,easy1234,robin123,rockets1,diamondb,wolfee,nothing0,joker777,glasnost,richar1,guille,sayan,koresh,goshawk,alexx,batman21,a123456b,hball,243122,rockandr,coolfool,isaia,mary1,yjdbrjdf,lolopc,cleocat,cimbo,lovehina,8vfhnf,passking,bonapart,diamond2,bigboys,kreator,ctvtyjdf,sassy123,shellac,table54781,nedkelly,philbert,sux2bu,nomis,sparky99,python1,littlebear,numpty,silmaril,sweeet,jamesw,cbufhtnf,peggysue,wodahs,luvsex,wizardry,venom123,love4you,bama1,samat,reviewpass,ned467,cjkjdtq,mamula,gijoe,amersham,devochka,redhill,gisel,preggo,polock,cando,rewster,greenlantern,panasonik,dave1234,mikeee,1carlos,miledi,darkness1,p0o9i8u7y6,kathryn1,happyguy,dcp500,assmaster,sambuka,sailormo,antonio3,logans,18254288,nokiax2,qwertzuiop,zavilov,totti,xenon1,edward11,targa1,something1,tony_t,q1w2e3r4t5y6u7i8o9p0,02551670,vladimir1,monkeybutt,greenda,neel21,craiger,saveliy,dei008,honda450,fylhtq95,spike2,fjnq8915,passwordstandard,vova12345,talonesi,richi,gigemags,pierre1,westin,trevoga,dorothee,bastogne,25563o,brandon3,truegrit,krimml,iamgreat,servis,a112233,paulinka,azimuth,corperfmonsy,358hkyp,homerun1,dogbert1,eatmyass,cottage1,savina,baseball7,bigtex,gimmesum,asdcxz,lennon1,a159357,1bastard,413276191q,pngfilt,pchealth,netsnip,bodiroga,1matt,webtvs,ravers,adapters,siddis,mashamasha,coffee2,myhoney,anna1982,marcia1,fairchil,maniek,iloveluc,batmonh,wildon,bowie1,netnwlnk,fancy1,tom204,olga1976,vfif123,queens1,ajax01,lovess,mockba,icam4usb,triada,odinthor,rstlne,exciter,sundog,anchorat,girls69,nfnmzyrf,soloma,gti16v,shadowman,ottom,rataros,tonchin,vishal,chicken0,pornlo,christiaan,volante,likesit,mariupol,runfast,gbpltw123,missys,villevalo,kbpjxrf,ghibli,calla,cessna172,kinglear,dell11,swift1,walera,1cricket,pussy5,turbo911,tucke,maprchem56458,rosehill,thekiwi1,ygfxbkgt,mandarinka,98xa29,magnit,cjfrf,paswoord,grandam1,shenmue,leedsuni,hatrick,zagadka,angeldog,michaell,dance123,koichi,bballs,29palms,xanth,228822,ppppppp1,1kkkkk,1lllll,mynewbots,spurss,madmax1,224455,city1,mmmmmmm1,nnnnnnn1,biedronka,thebeatles,elessar,f14tomcat,jordan18,bobo123,ayi000,tedbear,86chevyx,user123,bobolink,maktub,elmer1,flyfishi,franco1,gandalf0,traxdata,david21,enlighte,dmitrij,beckys,1giants,flippe,12345678w,jossie,rugbyman,snowcat,rapeme,peanut11,gemeni,udders,techn9ne,armani1,chappie,war123,vakantie,maddawg,sewanee,jake5253,tautt1,anthony5,letterma,jimbo2,kmdtyjr,hextall,jessica6,amiga500,hotcunt,phoenix9,veronda,saqartvelo,scubas,sixer3,williamj,nightfal,shihan,melnikova,kosssss,handily,killer77,jhrl0821,march17,rushman,6gcf636i,metoyou,irina123,mine11,primus1,formatters,matthew5,infotech,gangster1,jordan45,moose69,kompas,motoxxx,greatwhi,cobra12,kirpich,weezer1,hello23,montse,tracy123,connecte,cjymrf,hemingwa,azreal,gundam00,mobila,boxman,slayers1,ravshan,june26,fktrcfylhjd,bermuda1,tylerd,maersk,qazwsx11,eybdthcbntn,ash123,camelo,kat123,backd00r,cheyenne1,1king,jerkin,tnt123,trabant,warhammer40k,rambos,punto,home77,pedrito,1frank,brille,guitarman,george13,rakas,tgbxtcrbq,flute1,bananas1,lovezp1314,thespot,postie,buster69,sexytime,twistys,zacharia,sportage,toccata,denver7,terry123,bogdanova,devil69,higgins1,whatluck,pele10,kkk666,jeffery1,1qayxsw2,riptide1,chevy11,munchy,lazer1,hooker1,ghfgjh,vergesse,playgrou,4077mash,gusev,humpin,oneputt,hydepark,monster9,tiger8,tangsoo,guy123,hesoyam1,uhtqneyu,thanku,lomond,ortezza,kronik,geetha,rabbit66,killas,qazxswe,alabaste,1234567890qwerty,capone1,andrea12,geral,beatbox,slutfuck,booyaka,jasmine7,ostsee,maestro1,beatme,tracey1,buster123,donaldduck,ironfish,happy6,konnichi,gintonic,momoney1,dugan1,today2,enkidu,destiny2,trim7gun,katuha,fractals,morganstanley,polkadot,gotime,prince11,204060,fifa2010,bobbyt,seemee,amanda10,airbrush,bigtitty,heidie,layla1,cotton1,5speed,fyfnjkmtdyf,flynavy,joxury8f,meeko,akuma,dudley1,flyboy1,moondog1,trotters,mariami,signin,chinna,legs11,pussy4,1s1h1e1f1,felici,optimus1,iluvu,marlins1,gavaec,balance1,glock40,london01,kokot,southwes,comfort1,sammy11,rockbottom,brianc,litebeer,homero,chopsuey,greenlan,charit,freecell,hampster,smalldog,viper12,blofeld,1234567890987654321,realsex,romann,cartman2,cjdthitycndj,nelly1,bmw528,zwezda,masterba,jeep99,turtl,america2,sunburst,sanyco,auntjudy,125wm,blue10,qwsazx,cartma,toby12,robbob,red222,ilovecock,losfix16,1explore,helge,vaz2114,whynotme,baba123,mugen,1qazwsxedc,albertjr,0101198,sextime,supras,nicolas2,wantsex,pussy6,checkm8,winam,24gordon,misterme,curlew,gbljhfcs,medtech,franzi,butthea,voivod,blackhat,egoiste,pjkeirf,maddog69,pakalolo,hockey4,igor1234,rouges,snowhite,homefree,sexfreak,acer12,dsmith,blessyou,199410,vfrcbvjd,falco02,belinda1,yaglasph,april21,groundho,jasmin1,nevergiveup,elvir,gborv526,c00kie,emma01,awesome2,larina,mike12345,maximu,anupam,bltynbabrfwbz,tanushka,sukkel,raptor22,josh12,schalke04,cosmodog,fuckyou8,busybee,198800,bijoux,frame1,blackmor,giveit,issmall,bear13,123-123,bladez,littlegirl,ultra123,fletch1,flashnet,loploprock,rkelly,12step,lukas1,littlewhore,cuntfinger,stinkyfinger,laurenc,198020,n7td4bjl,jackie69,camel123,ben1234,1gateway,adelheid,fatmike,thuglove,zzaaqq,chivas1,4815162342q,mamadou,nadano,james22,benwin,andrea99,rjirf,michou,abkbgg,d50gnn,aaazzz,a123654,blankman,booboo11,medicus,bigbone,197200,justine1,bendix,morphius,njhvjp,44mag,zsecyus56,goodbye1,nokiadermo,a333444,waratsea,4rzp8ab7,fevral,brillian,kirbys,minim,erathia,grazia,zxcvb1234,dukey,snaggle,poppi,hymen,1video,dune2000,jpthjdf,cvbn123,zcxfcnkbdfz,astonv,ginnie,316271,engine3,pr1ncess,64chevy,glass1,laotzu,hollyy,comicbooks,assasins,nuaddn9561,scottsda,hfcnfvfy,accobra,7777777z,werty123,metalhead,romanson,redsand,365214,shalo,arsenii,1989cc,sissi,duramax,382563,petera,414243,mamapap,jollymon,field1,fatgirl,janets,trompete,matchbox20,rambo2,nepenthe,441232,qwertyuiop10,bozo123,phezc419hv,romantika,lifestyl,pengui,decembre,demon6,panther6,444888,scanman,ghjcnjabkz,pachanga,buzzword,indianer,spiderman3,tony12,startre,frog1,fyutk,483422,tupacshakur,albert12,1drummer,bmw328i,green17,aerdna,invisibl,summer13,calimer,mustaine,lgnu9d,morefun,hesoyam123,escort1,scrapland,stargat,barabbas,dead13,545645,mexicali,sierr,gfhfpbn,gonchar,moonstafa,searock,counte,foster1,jayhawk1,floren,maremma,nastya2010,softball1,adaptec,halloo,barrabas,zxcasd123,hunny,mariana1,kafedra,freedom0,green420,vlad1234,method7,665566,tooting,hallo12,davinchi,conducto,medias,666444,invernes,madhatter,456asd,12345678i,687887,le33px,spring00,help123,bellybut,billy5,vitalik1,river123,gorila,bendis,power666,747200,footslav,acehigh,qazxswedc123,q1a1z1,richard9,peterburg,tabletop,gavrilov,123qwe1,kolosov,fredrau,run4fun,789056,jkbvgbflf,chitra,87654321q,steve22,wideopen,access88,surfe,tdfyutkbjy,impossib,kevin69,880888,cantina,887766,wxcvb,dontforg,qwer1209,asslicke,mamma123,indig,arkasha,scrapp,morelia,vehxbr,jones2,scratch1,cody11,cassie12,gerbera,dontgotm,underhil,maks2010,hollywood1,hanibal,elena2010,jason11,1010321,stewar,elaman,fireplug,goodby,sacrific,babyphat,bobcat12,bruce123,1233215,tony45,tiburo,love15,bmw750,wallstreet,2h0t4me,1346795,lamerz,munkee,134679q,granvill,1512198,armastus,aiden1,pipeutvj,g1234567,angeleyes,usmc1,102030q,putangina,brandnew,shadowfax,eagles12,1falcon,brianw,lokomoti,2022958,scooper,pegas,jabroni1,2121212,buffal,siffredi,wewiz,twotone,rosebudd,nightwis,carpet1,mickey2,2525252,sleddog,red333,jamesm,2797349,jeff12,onizuka,felixxxx,rf6666,fine1,ohlala,forplay,chicago5,muncho,scooby11,ptichka,johnnn,19851985p,dogphil3650,totenkopf,monitor2,macross7,3816778,dudder,semaj1,bounder,racerx1,5556633,7085506,ofclr278,brody1,7506751,nantucke,hedj2n4q,drew1,aessedai,trekbike,pussykat,samatron,imani,9124852,wiley1,dukenukem,iampurehaha2,9556035,obvious1,mccool24,apache64,kravchenko,justforf,basura,jamese,s0ccer,safado,darksta,surfer69,damian1,gjpbnbd,gunny1,wolley,sananton,zxcvbn123456,odt4p6sv8,sergei1,modem1,mansikka,zzzz1,rifraf,dima777,mary69,looking4,donttell,red100,ninjutsu,uaeuaeman,bigbri,brasco,queenas8151,demetri,angel007,bubbl,kolort,conny,antonia1,avtoritet,kaka22,kailayu,sassy2,wrongway,chevy3,1nascar,patriots1,chrisrey,mike99,sexy22,chkdsk,sd3utre7,padawan,a6pihd,doming,mesohorny,tamada,donatello,emma22,eather,susan69,pinky123,stud69,fatbitch,pilsbury,thc420,lovepuss,1creativ,golf1234,hurryup,1honda,huskerdu,marino1,gowron,girl1,fucktoy,gtnhjpfdjlcr,dkjfghdk,pinkfl,loreli,7777777s,donkeykong,rockytop,staples1,sone4ka,xxxjay,flywheel,toppdogg,bigbubba,aaa123456,2letmein,shavkat,paule,dlanor,adamas,0147852,aassaa,dixon1,bmw328,mother12,ilikepussy,holly2,tsmith,excaliber,fhutynbyf,nicole3,tulipan,emanue,flyvholm,currahee,godsgift,antonioj,torito,dinky1,sanna,yfcnzvjz,june14,anime123,123321456654,hanswurst,bandman,hello101,xxxyyy,chevy69,technica,tagada,arnol,v00d00,lilone,filles,drumandbass,dinamit,a1234a,eatmeat,elway07,inout,james6,dawid1,thewolf,diapason,yodaddy,qscwdv,fuckit1,liljoe,sloeber,simbacat,sascha1,qwe1234,1badger,prisca,angel17,gravedig,jakeyboy,longboard,truskawka,golfer11,pyramid7,highspee,pistola,theriver,hammer69,1packers,dannyd,alfonse,qwertgfdsa,11119999,basket1,ghjtrn,saralee,12inches,paolo1,zse4xdr5,taproot,sophieh6,grizzlie,hockey69,danang,biggums,hotbitch,5alive,beloved1,bluewave,dimon95,koketka,multiscan,littleb,leghorn,poker2,delite,skyfir,bigjake,persona1,amberdog,hannah12,derren,ziffle,1sarah,1assword,sparky01,seymur,tomtom1,123321qw,goskins,soccer19,luvbekki,bumhole,2balls,1muffin,borodin,monkey9,yfeiybrb,1alex,betmen,freder,nigger123,azizbek,gjkzrjdf,lilmike,1bigdadd,1rock,taganrog,snappy1,andrey1,kolonka,bunyan,gomango,vivia,clarkkent,satur,gaudeamus,mantaray,1month,whitehea,fargus,andrew99,ray123,redhawks,liza2009,qw12345,den12345,vfhnsyjdf,147258369a,mazepa,newyorke,1arsenal,hondas2000,demona,fordgt,steve12,birthday2,12457896,dickster,edcwsxqaz,sahalin,pantyman,skinny1,hubertus,cumshot1,chiro,kappaman,mark3434,canada12,lichking,bonkers1,ivan1985,sybase,valmet,doors1,deedlit,kyjelly,bdfysx,ford11,throatfuck,backwood,fylhsq,lalit,boss429,kotova,bricky,steveh,joshua19,kissa,imladris,star1234,lubimka,partyman,crazyd,tobias1,ilike69,imhome,whome,fourstar,scanner1,ujhjl312,anatoli,85bears,jimbo69,5678ytr,potapova,nokia7070,sunday1,kalleank,1996gta,refinnej,july1,molodec,nothanks,enigm,12play,sugardog,nhfkbdfkb,larousse,cannon1,144444,qazxcdew,stimorol,jhereg,spawn7,143000,fearme,hambur,merlin21,dobie,is3yeusc,partner1,dekal,varsha,478jfszk,flavi,hippo1,9hmlpyjd,july21,7imjfstw,lexxus,truelov,nokia5200,carlos6,anais,mudbone,anahit,taylorc,tashas,larkspur,animal2000,nibiru,jan123,miyvarxar,deflep,dolore,communit,ifoptfcor,laura2,anadrol,mamaliga,mitzi1,blue92,april15,matveev,kajlas,wowlook1,1flowers,shadow14,alucard1,1golf,bantha,scotlan,singapur,mark13,manchester1,telus01,superdav,jackoff1,madnes,bullnuts,world123,clitty,palmer1,david10,spider10,sargsyan,rattlers,david4,windows2,sony12,visigoth,qqqaaa,penfloor,cabledog,camilla1,natasha123,eagleman,softcore,bobrov,dietmar,divad,sss123,d1234567,tlbyjhju,1q1q1q1,paraiso,dav123,lfiekmrf,drachen,lzhan16889,tplate,gfghbrf,casio1,123boots1,123test,sys64738,heavymetal,andiamo,meduza,soarer,coco12,negrita,amigas,heavymet,bespin,1asdfghj,wharfrat,wetsex,tight1,janus1,sword123,ladeda,dragon98,austin2,atep1,jungle1,12345abcd,lexus300,pheonix1,alex1974,123qw123,137955,bigtim,shadow88,igor1994,goodjob,arzen,champ123,121ebay,changeme1,brooksie,frogman1,buldozer,morrowin,achim,trish1,lasse,festiva,bubbaman,scottb,kramit,august22,tyson123,passsword,oompah,al123456,fucking1,green45,noodle1,looking1,ashlynn,al1716,stang50,coco11,greese,bob111,brennan1,jasonj,1cherry,1q2345,1xxxxxxx,fifa2011,brondby,zachar1,satyam,easy1,magic7,1rainbow,cheezit,1eeeeeee,ashley123,assass1,amanda123,jerbear,1bbbbbb,azerty12,15975391,654321z,twinturb,onlyone1,denis1988,6846kg3r,jumbos,pennydog,dandelion,haileris,epervier,snoopy69,afrodite,oldpussy,green55,poopypan,verymuch,katyusha,recon7,mine69,tangos,contro,blowme2,jade1,skydive1,fiveiron,dimo4ka,bokser,stargirl,fordfocus,tigers2,platina,baseball11,raque,pimper,jawbreak,buster88,walter34,chucko,penchair,horizon1,thecure1,scc1975,adrianna1,kareta,duke12,krille,dumbfuck,cunt1,aldebaran,laverda,harumi,knopfler,pongo1,pfhbyf,dogman1,rossigno,1hardon,scarlets,nuggets1,ibelieve,akinfeev,xfhkbr,athene,falcon69,happie,billly,nitsua,fiocco,qwerty09,gizmo2,slava2,125690,doggy123,craigs,vader123,silkeborg,124365,peterm,123978,krakatoa,123699,123592,kgvebmqy,pensacol,d1d2d3,snowstor,goldenboy,gfg65h7,ev700,church1,orange11,g0dz1ll4,chester3,acheron,cynthi,hotshot1,jesuschris,motdepass,zymurgy,one2one,fietsbel,harryp,wisper,pookster,nn527hp,dolla,milkmaid,rustyboy,terrell1,epsilon1,lillian1,dale3,crhbgrf,maxsim,selecta,mamada,fatman1,ufkjxrf,shinchan,fuckuall,women1,000008,bossss,greta1,rbhjxrf,mamasboy,purple69,felicidade,sexy21,cathay,hunglow,splatt,kahless,shopping1,1gandalf,themis,delta7,moon69,blue24,parliame,mamma1,miyuki,2500hd,jackmeof,razer,rocker1,juvis123,noremac,boing747,9z5ve9rrcz,icewater,titania,alley1,moparman,christo1,oliver2,vinicius,tigerfan,chevyy,joshua99,doda99,matrixx,ekbnrf,jackfrost,viper01,kasia,cnfhsq,triton1,ssbt8ae2,rugby8,ramman,1lucky,barabash,ghtlfntkm,junaid,apeshit,enfant,kenpo1,shit12,007000,marge1,shadow10,qwerty789,richard8,vbitkm,lostboys,jesus4me,richard4,hifive,kolawole,damilola,prisma,paranoya,prince2,lisaann,happyness,cardss,methodma,supercop,a8kd47v5,gamgee,polly123,irene1,number8,hoyasaxa,1digital,matthew0,dclxvi,lisica,roy123,2468013579,sparda,queball,vaffanculo,pass1wor,repmvbx,999666333,freedom8,botanik,777555333,marcos1,lubimaya,flash2,einstei,08080,123456789j,159951159,159357123,carrot1,alina1995,sanjos,dilara,mustang67,wisteria,jhnjgtl12,98766789,darksun,arxangel,87062134,creativ1,malyshka,fuckthemall,barsic,rocksta,2big4u,5nizza,genesis2,romance1,ofcourse,1horse,latenite,cubana,sactown,789456123a,milliona,61808861,57699434,imperia,bubba11,yellow3,change12,55495746,flappy,jimbo123,19372846,19380018,cutlass1,craig123,klepto,beagle1,solus,51502112,pasha1,19822891,46466452,19855891,petshop,nikolaevna,119966,nokia6131,evenpar,hoosier1,contrasena,jawa350,gonzo123,mouse2,115511,eetfuk,gfhfvgfvgfv,1crystal,sofaking,coyote1,kwiatuszek,fhrflbq,valeria1,anthro,0123654789,alltheway,zoltar,maasikas,wildchil,fredonia,earlgrey,gtnhjczy,matrix123,solid1,slavko,12monkeys,fjdksl,inter1,nokia6500,59382113kevinp,spuddy,cachero,coorslit,password!,kiba1z,karizma,vova1994,chicony,english1,bondra12,1rocket,hunden,jimbob1,zpflhjn1,th0mas,deuce22,meatwad,fatfree,congas,sambora,cooper2,janne,clancy1,stonie,busta,kamaz,speedy2,jasmine3,fahayek,arsenal0,beerss,trixie1,boobs69,luansantana,toadman,control2,ewing33,maxcat,mama1964,diamond4,tabaco,joshua0,piper2,music101,guybrush,reynald,pincher,katiebug,starrs,pimphard,frontosa,alex97,cootie,clockwor,belluno,skyeseth,booty69,chaparra,boochie,green4,bobcat1,havok,saraann,pipeman,aekdb,jumpshot,wintermu,chaika,1chester,rjnjatq,emokid,reset1,regal1,j0shua,134679a,asmodey,sarahh,zapidoo,ciccione,sosexy,beckham23,hornets1,alex1971,delerium,manageme,connor11,1rabbit,sane4ek,caseyboy,cbljhjdf,redsox20,tttttt99,haustool,ander,pantera6,passwd1,journey1,9988776655,blue135,writerspace,xiaoyua123,justice2,niagra,cassis,scorpius,bpgjldsgjldthnf,gamemaster,bloody1,retrac,stabbin,toybox,fight1,ytpyf.,glasha,va2001,taylor11,shameles,ladylove,10078,karmann,rodeos,eintritt,lanesra,tobasco,jnrhjqcz,navyman,pablit,leshka,jessica3,123vika,alena1,platinu,ilford,storm7,undernet,sasha777,1legend,anna2002,kanmax1994,porkpie,thunder0,gundog,pallina,easypass,duck1,supermom,roach1,twincam,14028,tiziano,qwerty32,123654789a,evropa,shampoo1,yfxfkmybr,cubby1,tsunami1,fktrcttdf,yasacrac,17098,happyhap,bullrun,rodder,oaktown,holde,isbest,taylor9,reeper,hammer11,julias,rolltide1,compaq123,fourx4,subzero1,hockey9,7mary3,busines,ybrbnjcbr,wagoneer,danniash,portishead,digitex,alex1981,david11,infidel,1snoopy,free30,jaden,tonto1,redcar27,footie,moskwa,thomas21,hammer12,burzum,cosmo123,50000,burltree,54343,54354,vwpassat,jack5225,cougars1,burlpony,blackhorse,alegna,petert,katemoss,ram123,nels0n,ferrina,angel77,cstock,1christi,dave55,abc123a,alex1975,av626ss,flipoff,folgore,max1998,science1,si711ne,yams7,wifey1,sveiks,cabin1,volodia,ox3ford,cartagen,platini,picture1,sparkle1,tiedomi,service321,wooody,christi1,gnasher,brunob,hammie,iraffert,bot2010,dtcyeirf,1234567890p,cooper11,alcoholi,savchenko,adam01,chelsea5,niewiem,icebear,lllooottt,ilovedick,sweetpus,money8,cookie13,rfnthbyf1988,booboo2,angus123,blockbus,david9,chica1,nazaret,samsung9,smile4u,daystar,skinnass,john10,thegirl,sexybeas,wasdwasd1,sigge1,1qa2ws3ed4rf5tg,czarny,ripley1,chris5,ashley19,anitha,pokerman,prevert,trfnthby,tony69,georgia2,stoppedb,qwertyuiop12345,miniclip,franky1,durdom,cabbages,1234567890o,delta5,liudmila,nhfycajhvths,court1,josiew,abcd1,doghead,diman,masiania,songline,boogle,triston,deepika,sexy4me,grapple,spacebal,ebonee,winter0,smokewee,nargiza,dragonla,sassys,andy2000,menards,yoshio,massive1,suckmy1k,passat99,sexybo,nastya1996,isdead,stratcat,hokuto,infix,pidoras,daffyduck,cumhard,baldeagl,kerberos,yardman,shibainu,guitare,cqub6553,tommyy,bk.irf,bigfoo,hecto,july27,james4,biggus,esbjerg,isgod,1irish,phenmarr,jamaic,roma1990,diamond0,yjdbrjd,girls4me,tampa1,kabuto,vaduz,hanse,spieng,dianochka,csm101,lorna1,ogoshi,plhy6hql,2wsx4rfv,cameron0,adebayo,oleg1996,sharipov,bouboule,hollister1,frogss,yeababy,kablam,adelante,memem,howies,thering,cecilia1,onetwo12,ojp123456,jordan9,msorcloledbr,neveraga,evh5150,redwin,1august,canno,1mercede,moody1,mudbug,chessmas,tiikeri,stickdaddy77,alex15,kvartira,7654321a,lollol123,qwaszxedc,algore,solana,vfhbyfvfhbyf,blue72,misha1111,smoke20,junior13,mogli,threee,shannon2,fuckmylife,kevinh,saransk,karenw,isolde,sekirarr,orion123,thomas0,debra1,laketaho,alondra,curiva,jazz1234,1tigers,jambos,lickme2,suomi,gandalf7,028526,zygote,brett123,br1ttany,supafly,159000,kingrat,luton1,cool-ca,bocman,thomasd,skiller,katter,mama777,chanc,tomass,1rachel,oldno7,rfpfyjdf,bigkev,yelrah,primas,osito,kipper1,msvcr71,bigboy11,thesun,noskcaj,chicc,sonja1,lozinka,mobile1,1vader,ummagumma,waves1,punter12,tubgtn,server1,irina1991,magic69,dak001,pandemonium,dead1,berlingo,cherrypi,1montana,lohotron,chicklet,asdfgh123456,stepside,ikmvw103,icebaby,trillium,1sucks,ukrnet,glock9,ab12345,thepower,robert8,thugstools,hockey13,buffon,livefree,sexpics,dessar,ja0000,rosenrot,james10,1fish,svoloch,mykitty,muffin11,evbukb,shwing,artem1992,andrey1992,sheldon1,passpage,nikita99,fubar123,vannasx,eight888,marial,max2010,express2,violentj,2ykn5ccf,spartan11,brenda69,jackiech,abagail,robin2,grass1,andy76,bell1,taison,superme,vika1995,xtr451,fred20,89032073168,denis1984,2000jeep,weetabix,199020,daxter,tevion,panther8,h9iymxmc,bigrig,kalambur,tsalagi,12213443,racecar02,jeffrey4,nataxa,bigsam,purgator,acuracl,troutbum,potsmoke,jimmyz,manutd1,nytimes,pureevil,bearss,cool22,dragonage,nodnarb,dbrbyu,4seasons,freude,elric1,werule,hockey14,12758698,corkie,yeahright,blademan,tafkap,clave,liziko,hofner,jeffhardy,nurich,runne,stanisla,lucy1,monk3y,forzaroma,eric99,bonaire,blackwoo,fengshui,1qaz0okm,newmoney,pimpin69,07078,anonymer,laptop1,cherry12,ace111,salsa1,wilbur1,doom12,diablo23,jgtxzbhr,under1,honda01,breadfan,megan2,juancarlos,stratus1,ackbar,love5683,happytim,lambert1,cbljhtyrj,komarov,spam69,nfhtkrf,brownn,sarmat,ifiksr,spike69,hoangen,angelz,economia,tanzen,avogadro,1vampire,spanners,mazdarx,queequeg,oriana,hershil,sulaco,joseph11,8seconds,aquariu,cumberla,heather9,anthony8,burton12,crystal0,maria3,qazwsxc,snow123,notgood,198520,raindog,heehaw,consulta,dasein,miller01,cthulhu1,dukenuke,iubire,baytown,hatebree,198505,sistem,lena12,welcome01,maraca,middleto,sindhu,mitsou,phoenix5,vovan,donaldo,dylandog,domovoy,lauren12,byrjuybnj,123llll,stillers,sanchin,tulpan,smallvill,1mmmmm,patti1,folgers,mike31,colts18,123456rrr,njkmrjz,phoenix0,biene,ironcity,kasperok,password22,fitnes,matthew6,spotligh,bujhm123,tommycat,hazel5,guitar11,145678,vfcmrf,compass1,willee,1barney,jack2000,littleminge,shemp,derrek,xxx12345,littlefuck,spuds1,karolinka,camneely,qwertyu123,142500,brandon00,munson15,falcon3,passssap,z3cn2erv,goahead,baggio10,141592,denali1,37kazoo,copernic,123456789asd,orange88,bravada,rush211,197700,pablo123,uptheass,samsam1,demoman,mattylad10,heydude,mister2,werken,13467985,marantz,a22222,f1f2f3f4,fm12mn12,gerasimova,burrito1,sony1,glenny,baldeagle,rmfidd,fenomen,verbati,forgetme,5element,wer138,chanel1,ooicu812,10293847qp,minicooper,chispa,myturn,deisel,vthrehbq,boredboi4u,filatova,anabe,poiuyt1,barmalei,yyyy1,fourkids,naumenko,bangbros,pornclub,okaykk,euclid90,warrior3,kornet,palevo,patatina,gocart,antanta,jed1054,clock1,111111w,dewars,mankind1,peugeot406,liten,tahira,howlin,naumov,rmracing,corone,cunthole,passit,rock69,jaguarxj,bumsen,197101,sweet2,197010,whitecat,sawadee,money100,yfhrjnbrb,andyboy,9085603566,trace1,fagget,robot1,angel20,6yhn7ujm,specialinsta,kareena,newblood,chingada,boobies2,bugger1,squad51,133andre,call06,ashes1,ilovelucy,success2,kotton,cavalla,philou,deebee,theband,nine09,artefact,196100,kkkkkkk1,nikolay9,onelov,basia,emilyann,sadman,fkrjujkbr,teamomuch,david777,padrino,money21,firdaus,orion3,chevy01,albatro,erdfcv,2legit,sarah7,torock,kevinn,holio,soloy,enron714,starfleet,qwer11,neverman,doctorwh,lucy11,dino12,trinity7,seatleon,o123456,pimpman,1asdfgh,snakebit,chancho,prorok,bleacher,ramire,darkseed,warhorse,michael123,1spanky,1hotdog,34erdfcv,n0th1ng,dimanche,repmvbyf,michaeljackson,login1,icequeen,toshiro,sperme,racer2,veget,birthday26,daniel9,lbvekmrf,charlus,bryan123,wspanic,schreibe,1andonly,dgoins,kewell,apollo12,egypt1,fernie,tiger21,aa123456789,blowj,spandau,bisquit,12345678d,deadmau5,fredie,311420,happyface,samant,gruppa,filmstar,andrew17,bakesale,sexy01,justlook,cbarkley,paul11,bloodred,rideme,birdbath,nfkbcvfy,jaxson,sirius1,kristof,virgos,nimrod1,hardc0re,killerbee,1abcdef,pitcher1,justonce,vlada,dakota99,vespucci,wpass,outside1,puertori,rfvbkf,teamlosi,vgfun2,porol777,empire11,20091989q,jasong,webuivalidat,escrima,lakers08,trigger2,addpass,342500,mongini,dfhtybr,horndogg,palermo1,136900,babyblu,alla98,dasha2010,jkelly,kernow,yfnecz,rockhopper,toeman,tlaloc,silver77,dave01,kevinr,1234567887654321,135642,me2you,8096468644q,remmus,spider7,jamesa,jilly,samba1,drongo,770129ji,supercat,juntas,tema1234,esthe,1234567892000,drew11,qazqaz123,beegees,blome,rattrace,howhigh,tallboy,rufus2,sunny2,sou812,miller12,indiana7,irnbru,patch123,letmeon,welcome5,nabisco,9hotpoin,hpvteb,lovinit,stormin,assmonke,trill,atlanti,money1234,cubsfan,mello1,stars2,ueptkm,agate,dannym88,lover123,wordz,worldnet,julemand,chaser1,s12345678,pissword,cinemax,woodchuc,point1,hotchkis,packers2,bananana,kalender,420666,penguin8,awo8rx3wa8t,hoppie,metlife,ilovemyfamily,weihnachtsbau,pudding1,luckystr,scully1,fatboy1,amizade,dedham,jahbless,blaat,surrende,****er,1panties,bigasses,ghjuhfvbcn,asshole123,dfktyrb,likeme,nickers,plastik,hektor,deeman,muchacha,cerebro,santana5,testdrive,dracula1,canalc,l1750sq,savannah1,murena,1inside,pokemon00,1iiiiiii,jordan20,sexual1,mailliw,calipso,014702580369,1zzzzzz,1jjjjjj,break1,15253545,yomama1,katinka,kevin11,1ffffff,martijn,sslazio,daniel5,porno2,nosmas,leolion,jscript,15975312,pundai,kelli1,kkkddd,obafgkm,marmaris,lilmama,london123,rfhfnt,elgordo,talk87,daniel7,thesims3,444111,bishkek,afrika2002,toby22,1speedy,daishi,2children,afroman,qqqqwwww,oldskool,hawai,v55555,syndicat,pukimak,fanatik,tiger5,parker01,bri5kev6,timexx,wartburg,love55,ecosse,yelena03,madinina,highway1,uhfdbwfgf,karuna,buhjvfybz,wallie,46and2,khalif,europ,qaz123wsx456,bobbybob,wolfone,falloutboy,manning18,scuba10,schnuff,ihateyou1,lindam,sara123,popcor,fallengun,divine1,montblanc,qwerty8,rooney10,roadrage,bertie1,latinus,lexusis,rhfvfnjhcr,opelgt,hitme,agatka,1yamaha,dmfxhkju,imaloser,michell1,sb211st,silver22,lockedup,andrew9,monica01,sassycat,dsobwick,tinroof,ctrhtnyj,bultaco,rhfcyjzhcr,aaaassss,14ss88,joanne1,momanddad,ahjkjdf,yelhsa,zipdrive,telescop,500600,1sexsex,facial1,motaro,511647,stoner1,temujin,elephant1,greatman,honey69,kociak,ukqmwhj6,altezza,cumquat,zippos,kontiki,123max,altec1,bibigon,tontos,qazsew,nopasaran,militar,supratt,oglala,kobayash,agathe,yawetag,dogs1,cfiekmrf,megan123,jamesdea,porosenok,tiger23,berger1,hello11,seemann,stunner1,walker2,imissu,jabari,minfd,lollol12,hjvfy,1-oct,stjohns,2278124q,123456789qwer,alex1983,glowworm,chicho,mallards,bluedevil,explorer1,543211,casita,1time,lachesis,alex1982,airborn1,dubesor,changa,lizzie1,captaink,socool,bidule,march23,1861brr,k.ljxrf,watchout,fotze,1brian,keksa2,aaaa1122,matrim,providian,privado,dreame,merry1,aregdone,davidt,nounour,twenty2,play2win,artcast2,zontik,552255,shit1,sluggy,552861,dr8350,brooze,alpha69,thunder6,kamelia2011,caleb123,mmxxmm,jamesh,lfybkjd,125267,125000,124536,bliss1,dddsss,indonesi,bob69,123888,tgkbxfgy,gerar,themack,hijodeputa,good4now,ddd123,clk430,kalash,tolkien1,132forever,blackb,whatis,s1s2s3s4,lolkin09,yamahar,48n25rcc,djtiesto,111222333444555,bigbull,blade55,coolbree,kelse,ichwill,yamaha12,sakic,bebeto,katoom,donke,sahar,wahine,645202,god666,berni,starwood,june15,sonoio,time123,llbean,deadsoul,lazarev,cdtnf,ksyusha,madarchod,technik,jamesy,4speed,tenorsax,legshow,yoshi1,chrisbl,44e3ebda,trafalga,heather7,serafima,favorite4,havefun1,wolve,55555r,james13,nosredna,bodean,jlettier,borracho,mickael,marinus,brutu,sweet666,kiborg,rollrock,jackson6,macross1,ousooner,9085084232,takeme,123qwaszx,firedept,vfrfhjd,jackfros,123456789000,briane,cookie11,baby22,bobby18,gromova,systemofadown,martin01,silver01,pimaou,darthmaul,hijinx,commo,chech,skyman,sunse,2vrd6,vladimirovna,uthvfybz,nicole01,kreker,bobo1,v123456789,erxtgb,meetoo,drakcap,vfvf12,misiek1,butane,network2,flyers99,riogrand,jennyk,e12345,spinne,avalon11,lovejone,studen,maint,porsche2,qwerty100,chamberl,bluedog1,sungam,just4u,andrew23,summer22,ludic,musiclover,aguil,beardog1,libertin,pippo1,joselit,patito,bigberth,digler,sydnee,jockstra,poopo,jas4an,nastya123,profil,fuesse,default1,titan2,mendoz,kpcofgs,anamika,brillo021,bomberman,guitar69,latching,69pussy,blues2,phelge,ninja123,m7n56xo,qwertasd,alex1976,cunningh,estrela,gladbach,marillion,mike2000,258046,bypop,muffinman,kd5396b,zeratul,djkxbwf,john77,sigma2,1linda,selur,reppep,quartz1,teen1,freeclus,spook1,kudos4ever,clitring,sexiness,blumpkin,macbook,tileman,centra,escaflowne,pentable,shant,grappa,zverev,1albert,lommerse,coffee11,777123,polkilo,muppet1,alex74,lkjhgfdsazx,olesica,april14,ba25547,souths,jasmi,arashi,smile2,2401pedro,mybabe,alex111,quintain,pimp1,tdeir8b2,makenna,122333444455555,%e2%82%ac,tootsie1,pass111,zaqxsw123,gkfdfybt,cnfnbcnbrf,usermane,iloveyou12,hard69,osasuna,firegod,arvind,babochka,kiss123,cookie123,julie123,kamakazi,dylan2,223355,tanguy,nbhtqa,tigger13,tubby1,makavel,asdflkj,sambo1,mononoke,mickeys,gayguy,win123,green33,wcrfxtvgbjy,bigsmall,1newlife,clove,babyfac,bigwaves,mama1970,shockwav,1friday,bassey,yarddog,codered1,victory7,bigrick,kracker,gulfstre,chris200,sunbanna,bertuzzi,begemotik,kuolema,pondus,destinee,123456789zz,abiodun,flopsy,amadeusptfcor,geronim,yggdrasi,contex,daniel6,suck1,adonis1,moorea,el345612,f22raptor,moviebuf,raunchy,6043dkf,zxcvbnm123456789,eric11,deadmoin,ratiug,nosliw,fannies,danno,888889,blank1,mikey2,gullit,thor99,mamiya,ollieb,thoth,dagger1,websolutionssu,bonker,prive,1346798520,03038,q1234q,mommy2,contax,zhipo,gwendoli,gothic1,1234562000,lovedick,gibso,digital2,space199,b26354,987654123,golive,serious1,pivkoo,better1,824358553,794613258,nata1980,logout,fishpond,buttss,squidly,good4me,redsox19,jhonny,zse45rdx,matrixxx,honey12,ramina,213546879,motzart,fall99,newspape,killit,gimpy,photowiz,olesja,thebus,marco123,147852963,bedbug,147369258,hellbound,gjgjxrf,123987456,lovehurt,five55,hammer01,1234554321a,alina2011,peppino,ang238,questor,112358132,alina1994,alina1998,money77,bobjones,aigerim,cressida,madalena,420smoke,tinchair,raven13,mooser,mauric,lovebu,adidas69,krypton1,1111112,loveline,divin,voshod,michaelm,cocotte,gbkbuhbv,76689295,kellyj,rhonda1,sweetu70,steamforums,geeque,nothere,124c41,quixotic,steam181,1169900,rfcgthcrbq,rfvbkm,sexstuff,1231230,djctvm,rockstar1,fulhamfc,bhecbr,rfntyf,quiksilv,56836803,jedimaster,pangit,gfhjkm777,tocool,1237654,stella12,55378008,19216811,potte,fender12,mortalkombat,ball1,nudegirl,palace22,rattrap,debeers,lickpussy,jimmy6,not4u2c,wert12,bigjuggs,sadomaso,1357924,312mas,laser123,arminia,branford,coastie,mrmojo,19801982,scott11,banaan123,ingres,300zxtt,hooters6,sweeties,19821983,19831985,19833891,sinnfein,welcome4,winner69,killerman,tachyon,tigre1,nymets1,kangol,martinet,sooty1,19921993,789qwe,harsingh,1597535,thecount,phantom3,36985214,lukas123,117711,pakistan1,madmax11,willow01,19932916,fucker12,flhrci,opelagila,theword,ashley24,tigger3,crazyj,rapide,deadfish,allana,31359092,sasha1993,sanders2,discman,zaq!2wsx,boilerma,mickey69,jamesg,babybo,jackson9,orion7,alina2010,indien,breeze1,atease,warspite,bazongaz,1celtic,asguard,mygal,fitzgera,1secret,duke33,cyklone,dipascuc,potapov,1escobar2,c0l0rad0,kki177hk,1little,macondo,victoriya,peter7,red666,winston6,kl?benhavn,muneca,jackme,jennan,happylife,am4h39d8nh,bodybuil,201980,dutchie,biggame,lapo4ka,rauchen,black10,flaquit,water12,31021364,command2,lainth88,mazdamx5,typhon,colin123,rcfhlfc,qwaszx11,g0away,ramir,diesirae,hacked1,cessna1,woodfish,enigma2,pqnr67w5,odgez8j3,grisou,hiheels,5gtgiaxm,2580258,ohotnik,transits,quackers,serjik,makenzie,mdmgatew,bryana,superman12,melly,lokit,thegod,slickone,fun4all,netpass,penhorse,1cooper,nsync,asdasd22,otherside,honeydog,herbie1,chiphi,proghouse,l0nd0n,shagg,select1,frost1996,casper123,countr,magichat,greatzyo,jyothi,3bears,thefly,nikkita,fgjcnjk,nitros,hornys,san123,lightspe,maslova,kimber1,newyork2,spammm,mikejone,pumpk1n,bruiser1,bacons,prelude9,boodie,dragon4,kenneth2,love98,power5,yodude,pumba,thinline,blue30,sexxybj,2dumb2live,matt21,forsale,1carolin,innova,ilikeporn,rbgtkjd,a1s2d3f,wu9942,ruffus,blackboo,qwerty999,draco1,marcelin,hideki,gendalf,trevon,saraha,cartmen,yjhbkmcr,time2go,fanclub,ladder1,chinni,6942987,united99,lindac,quadra,paolit,mainstre,beano002,lincoln7,bellend,anomie,8520456,bangalor,goodstuff,chernov,stepashka,gulla,mike007,frasse,harley03,omnislash,8538622,maryjan,sasha2011,gineok,8807031,hornier,gopinath,princesit,bdr529,godown,bosslady,hakaone,1qwe2,madman1,joshua11,lovegame,bayamon,jedi01,stupid12,sport123,aaa666,tony44,collect1,charliem,chimaira,cx18ka,trrim777,chuckd,thedream,redsox99,goodmorning,delta88,iloveyou11,newlife2,figvam,chicago3,jasonk,12qwer,9875321,lestat1,satcom,conditio,capri50,sayaka,9933162,trunks1,chinga,snooch,alexand1,findus,poekie,cfdbyf,kevind,mike1969,fire13,leftie,bigtuna,chinnu,silence1,celos1,blackdra,alex24,gfgfif,2boobs,happy8,enolagay,sataniv1993,turner1,dylans,peugeo,sasha1994,hoppel,conno,moonshot,santa234,meister1,008800,hanako,tree123,qweras,gfitymrf,reggie31,august29,supert,joshua10,akademia,gbljhfc,zorro123,nathalia,redsox12,hfpdjl,mishmash,nokiae51,nyyankees,tu190022,strongbo,none1,not4u2no,katie2,popart,harlequi,santan,michal1,1therock,screwu,csyekmrf,olemiss1,tyrese,hoople,sunshin1,cucina,starbase,topshelf,fostex,california1,castle1,symantec,pippolo,babare,turntabl,1angela,moo123,ipvteb,gogolf,alex88,cycle1,maxie1,phase2,selhurst,furnitur,samfox,fromvermine,shaq34,gators96,captain2,delonge,tomatoe,bisous,zxcvbnma,glacius,pineapple1,cannelle,ganibal,mko09ijn,paraklast1974,hobbes12,petty43,artema,junior8,mylover,1234567890d,fatal1ty,prostreet,peruan,10020,nadya,caution1,marocas,chanel5,summer08,metal123,111lox,scrapy,thatguy,eddie666,washingto,yannis,minnesota_hp,lucky4,playboy6,naumova,azzurro,patat,dale33,pa55wd,speedster,zemanova,saraht,newto,tony22,qscesz,arkady,1oliver,death6,vkfwx046,antiflag,stangs,jzf7qf2e,brianp,fozzy,cody123,startrek1,yoda123,murciela,trabajo,lvbnhbtdf,canario,fliper,adroit,henry5,goducks,papirus,alskdj,soccer6,88mike,gogetter,tanelorn,donking,marky1,leedsu,badmofo,al1916,wetdog,akmaral,pallet,april24,killer00,nesterova,rugby123,coffee12,browseui,ralliart,paigow,calgary1,armyman,vtldtltd,frodo2,frxtgb,iambigal,benno,jaytee,2hot4you,askar,bigtee,brentwoo,palladin,eddie2,al1916w,horosho,entrada,ilovetits,venture1,dragon19,jayde,chuvak,jamesl,fzr600,brandon8,vjqvbh,snowbal,snatch1,bg6njokf,pudder,karolin,candoo,pfuflrf,satchel1,manteca,khongbiet,critter1,partridg,skyclad,bigdon,ginger69,brave1,anthony4,spinnake,chinadol,passout,cochino,nipples1,15058,lopesk,sixflags,lloo999,parkhead,breakdance,cia123,fidodido,yuitre12,fooey,artem1995,gayathri,medin,nondriversig,l12345,bravo7,happy13,kazuya,camster,alex1998,luckyy,zipcode,dizzle,boating1,opusone,newpassw,movies23,kamikazi,zapato,bart316,cowboys0,corsair1,kingshit,hotdog12,rolyat,h200svrm,qwerty4,boofer,rhtyltkm,chris999,vaz21074,simferopol,pitboss,love3,britania,tanyshka,brause,123qwerty123,abeille,moscow1,ilkaev,manut,process1,inetcfg,dragon05,fortknox,castill,rynner,mrmike,koalas,jeebus,stockpor,longman,juanpabl,caiman,roleplay,jeremi,26058,prodojo,002200,magical1,black5,bvlgari,doogie1,cbhtqa,mahina,a1s2d3f4g5h6,jblpro,usmc01,bismilah,guitar01,april9,santana1,1234aa,monkey14,sorokin,evan1,doohan,animalsex,pfqxtyjr,dimitry,catchme,chello,silverch,glock45,dogleg,litespee,nirvana9,peyton18,alydar,warhamer,iluvme,sig229,minotavr,lobzik,jack23,bushwack,onlin,football123,joshua5,federov,winter2,bigmax,fufnfrhbcnb,hfpldfnhb,1dakota,f56307,chipmonk,4nick8,praline,vbhjh123,king11,22tango,gemini12,street1,77879,doodlebu,homyak,165432,chuluthu,trixi,karlito,salom,reisen,cdtnkzxjr,pookie11,tremendo,shazaam,welcome0,00000ty,peewee51,pizzle,gilead,bydand,sarvar,upskirt,legends1,freeway1,teenfuck,ranger9,darkfire,dfymrf,hunt0802,justme1,buffy1ma,1harry,671fsa75yt,burrfoot,budster,pa437tu,jimmyp,alina2006,malacon,charlize,elway1,free12,summer02,gadina,manara,gomer1,1cassie,sanja,kisulya,money3,pujols,ford50,midiland,turga,orange6,demetriu,freakboy,orosie1,radio123,open12,vfufpby,mustek,chris33,animes,meiling,nthtvjr,jasmine9,gfdkjd,oligarh,marimar,chicago9,.kzirf,bugssgub,samuraix,jackie01,pimpjuic,macdad,cagiva,vernost,willyboy,fynjyjdf,tabby1,privet123,torres9,retype,blueroom,raven11,q12we3,alex1989,bringiton,ridered,kareltje,ow8jtcs8t,ciccia,goniners,countryb,24688642,covingto,24861793,beyblade,vikin,badboyz,wlafiga,walstib,mirand,needajob,chloes,balaton,kbpfdtnf,freyja,bond9007,gabriel12,stormbri,hollage,love4eve,fenomeno,darknite,dragstar,kyle123,milfhunter,ma123123123,samia,ghislain,enrique1,ferien12,xjy6721,natalie2,reglisse,wilson2,wesker,rosebud7,amazon1,robertr,roykeane,xtcnth,mamatata,crazyc,mikie,savanah,blowjob69,jackie2,forty1,1coffee,fhbyjxrf,bubbah,goteam,hackedit,risky1,logoff,h397pnvr,buck13,robert23,bronc,st123st,godflesh,pornog,iamking,cisco69,septiembr,dale38,zhongguo,tibbar,panther9,buffa1,bigjohn1,mypuppy,vehvfycr,april16,shippo,fire1234,green15,q123123,gungadin,steveg,olivier1,chinaski,magnoli,faithy,storm12,toadfrog,paul99,78791,august20,automati,squirtle,cheezy,positano,burbon,nunya,llebpmac,kimmi,turtle2,alan123,prokuror,violin1,durex,pussygal,visionar,trick1,chicken6,29024,plowboy,rfybreks,imbue,sasha13,wagner1,vitalogy,cfymrf,thepro,26028,gorbunov,dvdcom,letmein5,duder,fastfun,pronin,libra1,conner1,harley20,stinker1,20068,20038,amitech,syoung,dugway,18068,welcome7,jimmypag,anastaci,kafka1,pfhfnecnhf,catsss,campus100,shamal,nacho1,fire12,vikings2,brasil1,rangerover,mohamma,peresvet,14058,cocomo,aliona,14038,qwaser,vikes,cbkmdf,skyblue1,ou81234,goodlove,dfkmltvfh,108888,roamer,pinky2,static1,zxcv4321,barmen,rock22,shelby2,morgans,1junior,pasword1,logjam,fifty5,nhfrnjhbcn,chaddy,philli,nemesis2,ingenier,djkrjd,ranger3,aikman8,knothead,daddy69,love007,vsythb,ford350,tiger00,renrut,owen11,energy12,march14,alena123,robert19,carisma,orange22,murphy11,podarok,prozak,kfgeirf,wolf13,lydia1,shazza,parasha,akimov,tobbie,pilote,heather4,baster,leones,gznfxjr,megama,987654321g,bullgod,boxster1,minkey,wombats,vergil,colegiata,lincol,smoothe,pride1,carwash1,latrell,bowling3,fylhtq123,pickwick,eider,bubblebox,bunnies1,loquit,slipper1,nutsac,purina,xtutdfhf,plokiju,1qazxs,uhjpysq,zxcvbasdfg,enjoy1,1pumpkin,phantom7,mama22,swordsma,wonderbr,dogdays,milker,u23456,silvan,dfkthbr,slagelse,yeahman,twothree,boston11,wolf100,dannyg,troll1,fynjy123,ghbcnfd,bftest,ballsdeep,bobbyorr,alphasig,cccdemo,fire123,norwest,claire2,august10,lth1108,problemas,sapito,alex06,1rusty,maccom,goirish1,ohyes,bxdumb,nabila,boobear1,rabbit69,princip,alexsander,travail,chantal1,dogggy,greenpea,diablo69,alex2009,bergen09,petticoa,classe,ceilidh,vlad2011,kamakiri,lucidity,qaz321,chileno,cexfhf,99ranger,mcitra,estoppel,volvos60,carter80,webpass,temp12,touareg,fcgbhby,bubba8,sunitha,200190ru,bitch2,shadow23,iluvit,nicole0,ruben1,nikki69,butttt,shocker1,souschef,lopotok01,kantot,corsano,cfnfyf,riverat,makalu,swapna,all4u9,cdtnkfy,ntktgepbr,ronaldo99,thomasj,bmw540i,chrisw,boomba,open321,z1x2c3v4b5n6m7,gaviota,iceman44,frosya,chris100,chris24,cosette,clearwat,micael,boogyman,pussy9,camus1,chumpy,heccrbq,konoplya,chester8,scooter5,ghjgfufylf,giotto,koolkat,zero000,bonita1,ckflrbq,j1964,mandog,18n28n24a,renob,head1,shergar,ringo123,tanita,sex4free,johnny12,halberd,reddevils,biolog,dillinge,fatb0y,c00per,hyperlit,wallace2,spears1,vitamine,buheirf,sloboda,alkash,mooman,marion1,arsenal7,sunder,nokia5610,edifier,pippone,fyfnjkmtdbx,fujimo,pepsi12,kulikova,bolat,duetto,daimon,maddog01,timoshka,ezmoney,desdemon,chesters,aiden,hugues,patrick5,aikman08,robert4,roenick,nyranger,writer1,36169544,foxmulder,118801,kutter,shashank,jamjar,118811,119955,aspirina,dinkus,1sailor,nalgene,19891959,snarf,allie1,cracky,resipsa,45678912,kemerovo,19841989,netware1,alhimik,19801984,nicole123,19761977,51501984,malaka1,montella,peachfuz,jethro1,cypress1,henkie,holdon,esmith,55443322,1friend,quique,bandicoot,statistika,great123,death13,ucht36,master4,67899876,bobsmith,nikko1,jr1234,hillary1,78978978,rsturbo,lzlzdfcz,bloodlust,shadow00,skagen,bambina,yummies,88887777,91328378,matthew4,itdoes,98256518,102938475,alina2002,123123789,fubared,dannys,123456321,nikifor,suck69,newmexico,scubaman,rhbcnb,fifnfy,puffdadd,159357852,dtheyxbr,theman22,212009164,prohor,shirle,nji90okm,newmedia,goose5,roma1995,letssee,iceman11,aksana,wirenut,pimpdady,1212312121,tamplier,pelican1,domodedovo,1928374655,fiction6,duckpond,ybrecz,thwack,onetwo34,gunsmith,murphydo,fallout1,spectre1,jabberwo,jgjesq,turbo6,bobo12,redryder,blackpus,elena1971,danilova,antoin,bobo1234,bobob,bobbobbo,dean1,222222a,jesusgod,matt23,musical1,darkmage,loppol,werrew,josepha,rebel12,toshka,gadfly,hawkwood,alina12,dnomyar,sexaddict,dangit,cool23,yocrack,archimed,farouk,nhfkzkz,lindalou,111zzzzz,ghjatccjh,wethepeople,m123456789,wowsers,kbkbxrf,bulldog5,m_roesel,sissinit,yamoon6,123ewqasd,dangel,miruvor79,kaytee,falcon7,bandit11,dotnet,dannii,arsenal9,miatamx5,1trouble,strip4me,dogpile,sexyred1,rjdfktdf,google10,shortman,crystal7,awesome123,cowdog,haruka,birthday28,jitter,diabolik,boomer12,dknight,bluewate,hockey123,crm0624,blueboys,willy123,jumpup,google2,cobra777,llabesab,vicelord,hopper1,gerryber,remmah,j10e5d4,qqqqqqw,agusti,fre_ak8yj,nahlik,redrobin,scott3,epson1,dumpy,bundao,aniolek,hola123,jergens,itsasecret,maxsam,bluelight,mountai1,bongwater,1london,pepper14,freeuse,dereks,qweqw,fordgt40,rfhfdfy,raider12,hunnybun,compac,splicer,megamon,tuffgong,gymnast1,butter11,modaddy,wapbbs_1,dandelio,soccer77,ghjnbdjcnjzybt,123xyi2,fishead,x002tp00,whodaman,555aaa,oussama,brunodog,technici,pmtgjnbl,qcxdw8ry,schweden,redsox3,throbber,collecto,japan10,dbm123dm,hellhoun,tech1,deadzone,kahlan,wolf123,dethklok,xzsawq,bigguy1,cybrthc,chandle,buck01,qq123123,secreta,williams1,c32649135,delta12,flash33,123joker,spacejam,polopo,holycrap,daman1,tummybed,financia,nusrat,euroline,magicone,jimkirk,ameritec,daniel26,sevenn,topazz,kingpins,dima1991,macdog,spencer5,oi812,geoffre,music11,baffle,123569,usagi,cassiope,polla,lilcrowe,thecakeisalie,vbhjndjhtw,vthokies,oldmans,sophie01,ghoster,penny2,129834,locutus1,meesha,magik,jerry69,daddysgirl,irondesk,andrey12,jasmine123,vepsrfyn,likesdick,1accord,jetboat,grafix,tomuch,showit,protozoa,mosias98,taburetka,blaze420,esenin,anal69,zhv84kv,puissant,charles0,aishwarya,babylon6,bitter1,lenina,raleigh1,lechat,access01,kamilka,fynjy,sparkplu,daisy3112,choppe,zootsuit,1234567j,rubyrose,gorilla9,nightshade,alternativa,cghfdjxybr,snuggles1,10121v,vova1992,leonardo1,dave2,matthewd,vfhfnbr,1986mets,nobull,bacall,mexican1,juanjo,mafia1,boomer22,soylent,edwards1,jordan10,blackwid,alex86,gemini13,lunar2,dctvcjcfnm,malaki,plugger,eagles11,snafu2,1shelly,cintaku,hannah22,tbird1,maks5843,irish88,homer22,amarok,fktrcfylhjdf,lincoln2,acess,gre69kik,need4speed,hightech,core2duo,blunt1,ublhjgjybrf,dragon33,1autopas,autopas1,wwww1,15935746,daniel20,2500aa,massim,1ggggggg,96ford,hardcor1,cobra5,blackdragon,vovan_lt,orochimaru,hjlbntkb,qwertyuiop12,tallen,paradoks,frozenfish,ghjuhfvvbcn,gerri1,nuggett,camilit,doright,trans1,serena1,catch2,bkmyeh,fireston,afhvfwtdn,purple3,figure8,fuckya,scamp1,laranja,ontheoutside,louis123,yellow7,moonwalk,mercury2,tolkein,raide,amenra,a13579,dranreb,5150vh,harish,tracksta,sexking,ozzmosis,katiee,alomar,matrix19,headroom,jahlove,ringding,apollo8,132546,132613,12345672000,saretta,135798,136666,thomas7,136913,onetwothree,hockey33,calida,nefertit,bitwise,tailhook,boop4,kfgecbr,bujhmbujhm,metal69,thedark,meteoro,felicia1,house12,tinuviel,istina,vaz2105,pimp13,toolfan,nina1,tuesday2,maxmotives,lgkp500,locksley,treech,darling1,kurama,aminka,ramin,redhed,dazzler,jager1,stpiliot,cardman,rfvtym,cheeser,14314314,paramoun,samcat,plumpy,stiffie,vsajyjr,panatha,qqq777,car12345,098poi,asdzx,keegan1,furelise,kalifornia,vbhjckfd,beast123,zcfvfzkexifz,harry5,1birdie,96328i,escola,extra330,henry12,gfhfyjqz,14u2nv,max1234,templar1,1dave,02588520,catrin,pangolin,marhaba,latin1,amorcito,dave22,escape1,advance1,yasuhiro,grepw,meetme,orange01,ernes,erdna,zsergn,nautica1,justinb,soundwav,miasma,greg78,nadine1,sexmad,lovebaby,promo1,excel1,babys,dragonma,camry1,sonnenschein,farooq,wazzkaprivet,magal,katinas,elvis99,redsox24,rooney1,chiefy,peggys,aliev,pilsung,mudhen,dontdoit,dennis12,supercal,energia,ballsout,funone,claudiu,brown2,amoco,dabl1125,philos,gjdtkbntkm,servette,13571113,whizzer,nollie,13467982,upiter,12string,bluejay1,silkie,william4,kosta1,143333,connor12,sustanon,06068,corporat,ssnake,laurita,king10,tahoes,arsenal123,sapato,charless,jeanmarc,levent,algerie,marine21,jettas,winsome,dctvgbplf,1701ab,xxxp455w0rd5,lllllll1,ooooooo1,monalis,koufax32,anastasya,debugger,sarita2,jason69,ufkxjyjr,gjlcnfdf,1jerry,daniel10,balinor,sexkitten,death2,qwertasdfgzxcvb,s9te949f,vegeta1,sysman,maxxam,dimabilan,mooose,ilovetit,june23,illest,doesit,mamou,abby12,longjump,transalp,moderato,littleguy,magritte,dilnoza,hawaiiguy,winbig,nemiroff,kokaine,admira,myemail,dream2,browneyes,destiny7,dragonss,suckme1,asa123,andranik,suckem,fleshbot,dandie,timmys,scitra,timdog,hasbeen,guesss,smellyfe,arachne,deutschl,harley88,birthday27,nobody1,papasmur,home1,jonass,bunia3,epatb1,embalm,vfvekmrf,apacer,12345656,estreet,weihnachtsbaum,mrwhite,admin12,kristie1,kelebek,yoda69,socken,tima123,bayern1,fktrcfylth,tamiya,99strenght,andy01,denis2011,19delta,stokecit,aotearoa,stalker2,nicnac,conrad1,popey,agusta,bowl36,1bigfish,mossyoak,1stunner,getinnow,jessejames,gkfnjy,drako,1nissan,egor123,hotness,1hawaii,zxc123456,cantstop,1peaches,madlen,west1234,jeter1,markis,judit,attack1,artemi,silver69,153246,crazy2,green9,yoshimi,1vette,chief123,jasper2,1sierra,twentyon,drstrang,aspirant,yannic,jenna123,bongtoke,slurpy,1sugar,civic97,rusty21,shineon,james19,anna12345,wonderwoman,1kevin,karol1,kanabis,wert21,fktif6115,evil1,kakaha,54gv768,826248s,tyrone1,1winston,sugar2,falcon01,adelya,mopar440,zasxcd,leecher,kinkysex,mercede1,travka,11234567,rebon,geekboy\".split(\",\"),\n english_wikipedia: \"the,of,and,in,was,is,for,as,on,with,by,he,at,from,his,an,were,are,which,doc,https,also,or,has,had,first,one,their,its,after,new,who,they,two,her,she,been,other,when,time,during,there,into,school,more,may,years,over,only,year,most,would,world,city,some,where,between,later,three,state,such,then,national,used,made,known,under,many,university,united,while,part,season,team,these,american,than,film,second,born,south,became,states,war,through,being,including,both,before,north,high,however,people,family,early,history,album,area,them,series,against,until,since,district,county,name,work,life,group,music,following,number,company,several,four,called,played,released,career,league,game,government,house,each,based,day,same,won,use,station,club,international,town,located,population,general,college,east,found,age,march,end,september,began,home,public,church,line,june,river,member,system,place,century,band,july,york,january,october,song,august,best,former,british,party,named,held,village,show,local,november,took,service,december,built,another,major,within,along,members,five,single,due,although,small,old,left,final,large,include,building,served,president,received,games,death,february,main,third,set,children,own,order,species,park,law,air,published,road,died,book,men,women,army,often,according,education,central,country,division,english,top,included,development,french,community,among,water,play,side,list,times,near,late,form,original,different,center,power,led,students,german,moved,court,six,land,council,island,u.s.,record,million,research,art,established,award,street,military,television,given,region,support,western,production,non,political,point,cup,period,business,title,started,various,election,using,england,role,produced,become,program,works,field,total,office,class,written,association,radio,union,level,championship,director,few,force,created,department,founded,services,married,though,per,n't,site,open,act,short,society,version,royal,present,northern,worked,professional,full,returned,joined,story,france,european,currently,language,social,california,india,days,design,st.,further,round,australia,wrote,san,project,control,southern,railway,board,popular,continued,free,battle,considered,video,common,position,living,half,playing,recorded,red,post,described,average,records,special,modern,appeared,announced,areas,rock,release,elected,others,example,term,opened,similar,formed,route,census,current,schools,originally,lake,developed,race,himself,forces,addition,information,upon,province,match,event,songs,result,events,win,eastern,track,lead,teams,science,human,construction,minister,germany,awards,available,throughout,training,style,body,museum,australian,health,seven,signed,chief,eventually,appointed,sea,centre,debut,tour,points,media,light,range,character,across,features,families,largest,indian,network,less,performance,players,refer,europe,sold,festival,usually,taken,despite,designed,committee,process,return,official,episode,institute,stage,followed,performed,japanese,personal,thus,arts,space,low,months,includes,china,study,middle,magazine,leading,japan,groups,aircraft,featured,federal,civil,rights,model,coach,canadian,books,remained,eight,type,independent,completed,capital,academy,instead,kingdom,organization,countries,studies,competition,sports,size,above,section,finished,gold,involved,reported,management,systems,industry,directed,market,fourth,movement,technology,bank,ground,campaign,base,lower,sent,rather,added,provided,coast,grand,historic,valley,conference,bridge,winning,approximately,films,chinese,awarded,degree,russian,shows,native,female,replaced,municipality,square,studio,medical,data,african,successful,mid,bay,attack,previous,operations,spanish,theatre,student,republic,beginning,provide,ship,primary,owned,writing,tournament,culture,introduced,texas,related,natural,parts,governor,reached,ireland,units,senior,decided,italian,whose,higher,africa,standard,income,professor,placed,regional,los,buildings,championships,active,novel,energy,generally,interest,via,economic,previously,stated,itself,channel,below,operation,leader,traditional,trade,structure,limited,runs,prior,regular,famous,saint,navy,foreign,listed,artist,catholic,airport,results,parliament,collection,unit,officer,goal,attended,command,staff,commission,lived,location,plays,commercial,places,foundation,significant,older,medal,self,scored,companies,highway,activities,programs,wide,musical,notable,library,numerous,paris,towards,individual,allowed,plant,property,annual,contract,whom,highest,initially,required,earlier,assembly,artists,rural,seat,practice,defeated,ended,soviet,length,spent,manager,press,associated,author,issues,additional,characters,lord,zealand,policy,engine,township,noted,historical,complete,financial,religious,mission,contains,nine,recent,represented,pennsylvania,administration,opening,secretary,lines,report,executive,youth,closed,theory,writer,italy,angeles,appearance,feature,queen,launched,legal,terms,entered,issue,edition,singer,greek,majority,background,source,anti,cultural,complex,changes,recording,stadium,islands,operated,particularly,basketball,month,uses,port,castle,mostly,names,fort,selected,increased,status,earth,subsequently,pacific,cover,variety,certain,goals,remains,upper,congress,becoming,studied,irish,nature,particular,loss,caused,chart,dr.,forced,create,era,retired,material,review,rate,singles,referred,larger,individuals,shown,provides,products,speed,democratic,poland,parish,olympics,cities,themselves,temple,wing,genus,households,serving,cost,wales,stations,passed,supported,view,cases,forms,actor,male,matches,males,stars,tracks,females,administrative,median,effect,biography,train,engineering,camp,offered,chairman,houses,mainly,19th,surface,therefore,nearly,score,ancient,subject,prime,seasons,claimed,experience,specific,jewish,failed,overall,believed,plot,troops,greater,spain,consists,broadcast,heavy,increase,raised,separate,campus,1980s,appears,presented,lies,composed,recently,influence,fifth,nations,creek,references,elections,britain,double,cast,meaning,earned,carried,producer,latter,housing,brothers,attempt,article,response,border,remaining,nearby,direct,ships,value,workers,politician,academic,label,1970s,commander,rule,fellow,residents,authority,editor,transport,dutch,projects,responsible,covered,territory,flight,races,defense,tower,emperor,albums,facilities,daily,stories,assistant,managed,primarily,quality,function,proposed,distribution,conditions,prize,journal,code,vice,newspaper,corps,highly,constructed,mayor,critical,secondary,corporation,rugby,regiment,ohio,appearances,serve,allow,nation,multiple,discovered,directly,scene,levels,growth,elements,acquired,1990s,officers,physical,20th,latin,host,jersey,graduated,arrived,issued,literature,metal,estate,vote,immediately,quickly,asian,competed,extended,produce,urban,1960s,promoted,contemporary,global,formerly,appear,industrial,types,opera,ministry,soldiers,commonly,mass,formation,smaller,typically,drama,shortly,density,senate,effects,iran,polish,prominent,naval,settlement,divided,basis,republican,languages,distance,treatment,continue,product,mile,sources,footballer,format,clubs,leadership,initial,offers,operating,avenue,officially,columbia,grade,squadron,fleet,percent,farm,leaders,agreement,likely,equipment,website,mount,grew,method,transferred,intended,renamed,iron,asia,reserve,capacity,politics,widely,activity,advanced,relations,scottish,dedicated,crew,founder,episodes,lack,amount,build,efforts,concept,follows,ordered,leaves,positive,economy,entertainment,affairs,memorial,ability,illinois,communities,color,text,railroad,scientific,focus,comedy,serves,exchange,environment,cars,direction,organized,firm,description,agency,analysis,purpose,destroyed,reception,planned,revealed,infantry,architecture,growing,featuring,household,candidate,removed,situated,models,knowledge,solo,technical,organizations,assigned,conducted,participated,largely,purchased,register,gained,combined,headquarters,adopted,potential,protection,scale,approach,spread,independence,mountains,titled,geography,applied,safety,mixed,accepted,continues,captured,rail,defeat,principal,recognized,lieutenant,mentioned,semi,owner,joint,liberal,actress,traffic,creation,basic,notes,unique,supreme,declared,simply,plants,sales,massachusetts,designated,parties,jazz,compared,becomes,resources,titles,concert,learning,remain,teaching,versions,content,alongside,revolution,sons,block,premier,impact,champions,districts,generation,estimated,volume,image,sites,account,roles,sport,quarter,providing,zone,yard,scoring,classes,presence,performances,representatives,hosted,split,taught,origin,olympic,claims,critics,facility,occurred,suffered,municipal,damage,defined,resulted,respectively,expanded,platform,draft,opposition,expected,educational,ontario,climate,reports,atlantic,surrounding,performing,reduced,ranked,allows,birth,nominated,younger,newly,kong,positions,theater,philadelphia,heritage,finals,disease,sixth,laws,reviews,constitution,tradition,swedish,theme,fiction,rome,medicine,trains,resulting,existing,deputy,environmental,labour,classical,develop,fans,granted,receive,alternative,begins,nuclear,fame,buried,connected,identified,palace,falls,letters,combat,sciences,effort,villages,inspired,regions,towns,conservative,chosen,animals,labor,attacks,materials,yards,steel,representative,orchestra,peak,entitled,officials,returning,reference,northwest,imperial,convention,examples,ocean,publication,painting,subsequent,frequently,religion,brigade,fully,sides,acts,cemetery,relatively,oldest,suggested,succeeded,achieved,application,programme,cells,votes,promotion,graduate,armed,supply,flying,communist,figures,literary,netherlands,korea,worldwide,citizens,1950s,faculty,draw,stock,seats,occupied,methods,unknown,articles,claim,holds,authorities,audience,sweden,interview,obtained,covers,settled,transfer,marked,allowing,funding,challenge,southeast,unlike,crown,rise,portion,transportation,sector,phase,properties,edge,tropical,standards,institutions,philosophy,legislative,hills,brand,fund,conflict,unable,founding,refused,attempts,metres,permanent,starring,applications,creating,effective,aired,extensive,employed,enemy,expansion,billboard,rank,battalion,multi,vehicle,fought,alliance,category,perform,federation,poetry,bronze,bands,entry,vehicles,bureau,maximum,billion,trees,intelligence,greatest,screen,refers,commissioned,gallery,injury,confirmed,setting,treaty,adult,americans,broadcasting,supporting,pilot,mobile,writers,programming,existence,squad,minnesota,copies,korean,provincial,sets,defence,offices,agricultural,internal,core,northeast,retirement,factory,actions,prevent,communications,ending,weekly,containing,functions,attempted,interior,weight,bowl,recognition,incorporated,increasing,ultimately,documentary,derived,attacked,lyrics,mexican,external,churches,centuries,metropolitan,selling,opposed,personnel,mill,visited,presidential,roads,pieces,norwegian,controlled,18th,rear,influenced,wrestling,weapons,launch,composer,locations,developing,circuit,specifically,studios,shared,canal,wisconsin,publishing,approved,domestic,consisted,determined,comic,establishment,exhibition,southwest,fuel,electronic,cape,converted,educated,melbourne,hits,wins,producing,norway,slightly,occur,surname,identity,represent,constituency,funds,proved,links,structures,athletic,birds,contest,users,poet,institution,display,receiving,rare,contained,guns,motion,piano,temperature,publications,passenger,contributed,toward,cathedral,inhabitants,architect,exist,athletics,muslim,courses,abandoned,signal,successfully,disambiguation,tennessee,dynasty,heavily,maryland,jews,representing,budget,weather,missouri,introduction,faced,pair,chapel,reform,height,vietnam,occurs,motor,cambridge,lands,focused,sought,patients,shape,invasion,chemical,importance,communication,selection,regarding,homes,voivodeship,maintained,borough,failure,aged,passing,agriculture,oregon,teachers,flow,philippines,trail,seventh,portuguese,resistance,reaching,negative,fashion,scheduled,downtown,universities,trained,skills,scenes,views,notably,typical,incident,candidates,engines,decades,composition,commune,chain,inc.,austria,sale,values,employees,chamber,regarded,winners,registered,task,investment,colonial,swiss,user,entirely,flag,stores,closely,entrance,laid,journalist,coal,equal,causes,turkish,quebec,techniques,promote,junction,easily,dates,kentucky,singapore,residence,violence,advance,survey,humans,expressed,passes,streets,distinguished,qualified,folk,establish,egypt,artillery,visual,improved,actual,finishing,medium,protein,switzerland,productions,operate,poverty,neighborhood,organisation,consisting,consecutive,sections,partnership,extension,reaction,factor,costs,bodies,device,ethnic,racial,flat,objects,chapter,improve,musicians,courts,controversy,membership,merged,wars,expedition,interests,arab,comics,gain,describes,mining,bachelor,crisis,joining,decade,1930s,distributed,habitat,routes,arena,cycle,divisions,briefly,vocals,directors,degrees,object,recordings,installed,adjacent,demand,voted,causing,businesses,ruled,grounds,starred,drawn,opposite,stands,formal,operates,persons,counties,compete,wave,israeli,ncaa,resigned,brief,greece,combination,demographics,historian,contain,commonwealth,musician,collected,argued,louisiana,session,cabinet,parliamentary,electoral,loan,profit,regularly,conservation,islamic,purchase,17th,charts,residential,earliest,designs,paintings,survived,moth,items,goods,grey,anniversary,criticism,images,discovery,observed,underground,progress,additionally,participate,thousands,reduce,elementary,owners,stating,iraq,resolution,capture,tank,rooms,hollywood,finance,queensland,reign,maintain,iowa,landing,broad,outstanding,circle,path,manufacturing,assistance,sequence,gmina,crossing,leads,universal,shaped,kings,attached,medieval,ages,metro,colony,affected,scholars,oklahoma,coastal,soundtrack,painted,attend,definition,meanwhile,purposes,trophy,require,marketing,popularity,cable,mathematics,mississippi,represents,scheme,appeal,distinct,factors,acid,subjects,roughly,terminal,economics,senator,diocese,prix,contrast,argentina,czech,wings,relief,stages,duties,16th,novels,accused,whilst,equivalent,charged,measure,documents,couples,request,danish,defensive,guide,devices,statistics,credited,tries,passengers,allied,frame,puerto,peninsula,concluded,instruments,wounded,differences,associate,forests,afterwards,replace,requirements,aviation,solution,offensive,ownership,inner,legislation,hungarian,contributions,actors,translated,denmark,steam,depending,aspects,assumed,injured,severe,admitted,determine,shore,technique,arrival,measures,translation,debuted,delivered,returns,rejected,separated,visitors,damaged,storage,accompanied,markets,industries,losses,gulf,charter,strategy,corporate,socialist,somewhat,significantly,physics,mounted,satellite,experienced,constant,relative,pattern,restored,belgium,connecticut,partners,harvard,retained,networks,protected,mode,artistic,parallel,collaboration,debate,involving,journey,linked,salt,authors,components,context,occupation,requires,occasionally,policies,tamil,ottoman,revolutionary,hungary,poem,versus,gardens,amongst,audio,makeup,frequency,meters,orthodox,continuing,suggests,legislature,coalition,guitarist,eighth,classification,practices,soil,tokyo,instance,limit,coverage,considerable,ranking,colleges,cavalry,centers,daughters,twin,equipped,broadway,narrow,hosts,rates,domain,boundary,arranged,12th,whereas,brazilian,forming,rating,strategic,competitions,trading,covering,baltimore,commissioner,infrastructure,origins,replacement,praised,disc,collections,expression,ukraine,driven,edited,austrian,solar,ensure,premiered,successor,wooden,operational,hispanic,concerns,rapid,prisoners,childhood,meets,influential,tunnel,employment,tribe,qualifying,adapted,temporary,celebrated,appearing,increasingly,depression,adults,cinema,entering,laboratory,script,flows,romania,accounts,fictional,pittsburgh,achieve,monastery,franchise,formally,tools,newspapers,revival,sponsored,processes,vienna,springs,missions,classified,13th,annually,branches,lakes,gender,manner,advertising,normally,maintenance,adding,characteristics,integrated,decline,modified,strongly,critic,victims,malaysia,arkansas,nazi,restoration,powered,monument,hundreds,depth,15th,controversial,admiral,criticized,brick,honorary,initiative,output,visiting,birmingham,progressive,existed,carbon,1920s,credits,colour,rising,hence,defeating,superior,filmed,listing,column,surrounded,orleans,principles,territories,struck,participation,indonesia,movements,index,commerce,conduct,constitutional,spiritual,ambassador,vocal,completion,edinburgh,residing,tourism,finland,bears,medals,resident,themes,visible,indigenous,involvement,basin,electrical,ukrainian,concerts,boats,styles,processing,rival,drawing,vessels,experimental,declined,touring,supporters,compilation,coaching,cited,dated,roots,string,explained,transit,traditionally,poems,minimum,representation,14th,releases,effectively,architectural,triple,indicated,greatly,elevation,clinical,printed,10th,proposal,peaked,producers,romanized,rapidly,stream,innings,meetings,counter,householder,honour,lasted,agencies,document,exists,surviving,experiences,honors,landscape,hurricane,harbor,panel,competing,profile,vessel,farmers,lists,revenue,exception,customers,11th,participants,wildlife,utah,bible,gradually,preserved,replacing,symphony,begun,longest,siege,provinces,mechanical,genre,transmission,agents,executed,videos,benefits,funded,rated,instrumental,ninth,similarly,dominated,destruction,passage,technologies,thereafter,outer,facing,affiliated,opportunities,instrument,governments,scholar,evolution,channels,shares,sessions,widespread,occasions,engineers,scientists,signing,battery,competitive,alleged,eliminated,supplies,judges,hampshire,regime,portrayed,penalty,taiwan,denied,submarine,scholarship,substantial,transition,victorian,http,nevertheless,filed,supports,continental,tribes,ratio,doubles,useful,honours,blocks,principle,retail,departure,ranks,patrol,yorkshire,vancouver,inter,extent,afghanistan,strip,railways,component,organ,symbol,categories,encouraged,abroad,civilian,periods,traveled,writes,struggle,immediate,recommended,adaptation,egyptian,graduating,assault,drums,nomination,historically,voting,allies,detailed,achievement,percentage,arabic,assist,frequent,toured,apply,and/or,intersection,maine,touchdown,throne,produces,contribution,emerged,obtain,archbishop,seek,researchers,remainder,populations,clan,finnish,overseas,fifa,licensed,chemistry,festivals,mediterranean,injuries,animated,seeking,publisher,volumes,limits,venue,jerusalem,generated,trials,islam,youngest,ruling,glasgow,germans,songwriter,persian,municipalities,donated,viewed,belgian,cooperation,posted,tech,dual,volunteer,settlers,commanded,claiming,approval,delhi,usage,terminus,partly,electricity,locally,editions,premiere,absence,belief,traditions,statue,indicate,manor,stable,attributed,possession,managing,viewers,chile,overview,seed,regulations,essential,minority,cargo,segment,endemic,forum,deaths,monthly,playoffs,erected,practical,machines,suburb,relation,mrs.,descent,indoor,continuous,characterized,solutions,caribbean,rebuilt,serbian,summary,contested,psychology,pitch,attending,muhammad,tenure,drivers,diameter,assets,venture,punk,airlines,concentration,athletes,volunteers,pages,mines,influences,sculpture,protest,ferry,behalf,drafted,apparent,furthermore,ranging,romanian,democracy,lanka,significance,linear,d.c.,certified,voters,recovered,tours,demolished,boundaries,assisted,identify,grades,elsewhere,mechanism,1940s,reportedly,aimed,conversion,suspended,photography,departments,beijing,locomotives,publicly,dispute,magazines,resort,conventional,platforms,internationally,capita,settlements,dramatic,derby,establishing,involves,statistical,implementation,immigrants,exposed,diverse,layer,vast,ceased,connections,belonged,interstate,uefa,organised,abuse,deployed,cattle,partially,filming,mainstream,reduction,automatic,rarely,subsidiary,decides,merger,comprehensive,displayed,amendment,guinea,exclusively,manhattan,concerning,commons,radical,serbia,baptist,buses,initiated,portrait,harbour,choir,citizen,sole,unsuccessful,manufactured,enforcement,connecting,increases,patterns,sacred,muslims,clothing,hindu,unincorporated,sentenced,advisory,tanks,campaigns,fled,repeated,remote,rebellion,implemented,texts,fitted,tribute,writings,sufficient,ministers,21st,devoted,jurisdiction,coaches,interpretation,pole,businessman,peru,sporting,prices,cuba,relocated,opponent,arrangement,elite,manufacturer,responded,suitable,distinction,calendar,dominant,tourist,earning,prefecture,ties,preparation,anglo,pursue,worship,archaeological,chancellor,bangladesh,scores,traded,lowest,horror,outdoor,biology,commented,specialized,loop,arriving,farming,housed,historians,'the,patent,pupils,christianity,opponents,athens,northwestern,maps,promoting,reveals,flights,exclusive,lions,norfolk,hebrew,extensively,eldest,shops,acquisition,virtual,renowned,margin,ongoing,essentially,iranian,alternate,sailed,reporting,conclusion,originated,temperatures,exposure,secured,landed,rifle,framework,identical,martial,focuses,topics,ballet,fighters,belonging,wealthy,negotiations,evolved,bases,oriented,acres,democrat,heights,restricted,vary,graduation,aftermath,chess,illness,participating,vertical,collective,immigration,demonstrated,leaf,completing,organic,missile,leeds,eligible,grammar,confederate,improvement,congressional,wealth,cincinnati,spaces,indicates,corresponding,reaches,repair,isolated,taxes,congregation,ratings,leagues,diplomatic,submitted,winds,awareness,photographs,maritime,nigeria,accessible,animation,restaurants,philippine,inaugural,dismissed,armenian,illustrated,reservoir,speakers,programmes,resource,genetic,interviews,camps,regulation,computers,preferred,travelled,comparison,distinctive,recreation,requested,southeastern,dependent,brisbane,breeding,playoff,expand,bonus,gauge,departed,qualification,inspiration,shipping,slaves,variations,shield,theories,munich,recognised,emphasis,favour,variable,seeds,undergraduate,territorial,intellectual,qualify,mini,banned,pointed,democrats,assessment,judicial,examination,attempting,objective,partial,characteristic,hardware,pradesh,execution,ottawa,metre,drum,exhibitions,withdrew,attendance,phrase,journalism,logo,measured,error,christians,trio,protestant,theology,respective,atmosphere,buddhist,substitute,curriculum,fundamental,outbreak,rabbi,intermediate,designation,globe,liberation,simultaneously,diseases,experiments,locomotive,difficulties,mainland,nepal,relegated,contributing,database,developments,veteran,carries,ranges,instruction,lodge,protests,obama,newcastle,experiment,physician,describing,challenges,corruption,delaware,adventures,ensemble,succession,renaissance,tenth,altitude,receives,approached,crosses,syria,croatia,warsaw,professionals,improvements,worn,airline,compound,permitted,preservation,reducing,printing,scientist,activist,comprises,sized,societies,enters,ruler,gospel,earthquake,extend,autonomous,croatian,serial,decorated,relevant,ideal,grows,grass,tier,towers,wider,welfare,columns,alumni,descendants,interface,reserves,banking,colonies,manufacturers,magnetic,closure,pitched,vocalist,preserve,enrolled,cancelled,equation,2000s,nickname,bulgaria,heroes,exile,mathematical,demands,input,structural,tube,stem,approaches,argentine,axis,manuscript,inherited,depicted,targets,visits,veterans,regard,removal,efficiency,organisations,concepts,lebanon,manga,petersburg,rally,supplied,amounts,yale,tournaments,broadcasts,signals,pilots,azerbaijan,architects,enzyme,literacy,declaration,placing,batting,incumbent,bulgarian,consistent,poll,defended,landmark,southwestern,raid,resignation,travels,casualties,prestigious,namely,aims,recipient,warfare,readers,collapse,coached,controls,volleyball,coup,lesser,verse,pairs,exhibited,proteins,molecular,abilities,integration,consist,aspect,advocate,administered,governing,hospitals,commenced,coins,lords,variation,resumed,canton,artificial,elevated,palm,difficulty,civic,efficient,northeastern,inducted,radiation,affiliate,boards,stakes,byzantine,consumption,freight,interaction,oblast,numbered,seminary,contracts,extinct,predecessor,bearing,cultures,functional,neighboring,revised,cylinder,grants,narrative,reforms,athlete,tales,reflect,presidency,compositions,specialist,cricketer,founders,sequel,widow,disbanded,associations,backed,thereby,pitcher,commanding,boulevard,singers,crops,militia,reviewed,centres,waves,consequently,fortress,tributary,portions,bombing,excellence,nest,payment,mars,plaza,unity,victories,scotia,farms,nominations,variant,attacking,suspension,installation,graphics,estates,comments,acoustic,destination,venues,surrender,retreat,libraries,quarterback,customs,berkeley,collaborated,gathered,syndrome,dialogue,recruited,shanghai,neighbouring,psychological,saudi,moderate,exhibit,innovation,depot,binding,brunswick,situations,certificate,actively,shakespeare,editorial,presentation,ports,relay,nationalist,methodist,archives,experts,maintains,collegiate,bishops,maintaining,temporarily,embassy,essex,wellington,connects,reformed,bengal,recalled,inches,doctrine,deemed,legendary,reconstruction,statements,palestinian,meter,achievements,riders,interchange,spots,auto,accurate,chorus,dissolved,missionary,thai,operators,e.g.,generations,failing,delayed,cork,nashville,perceived,venezuela,cult,emerging,tomb,abolished,documented,gaining,canyon,episcopal,stored,assists,compiled,kerala,kilometers,mosque,grammy,theorem,unions,segments,glacier,arrives,theatrical,circulation,conferences,chapters,displays,circular,authored,conductor,fewer,dimensional,nationwide,liga,yugoslavia,peer,vietnamese,fellowship,armies,regardless,relating,dynamic,politicians,mixture,serie,somerset,imprisoned,posts,beliefs,beta,layout,independently,electronics,provisions,fastest,logic,headquartered,creates,challenged,beaten,appeals,plains,protocol,graphic,accommodate,iraqi,midfielder,span,commentary,freestyle,reflected,palestine,lighting,burial,virtually,backing,prague,tribal,heir,identification,prototype,criteria,dame,arch,tissue,footage,extending,procedures,predominantly,updated,rhythm,preliminary,cafe,disorder,prevented,suburbs,discontinued,retiring,oral,followers,extends,massacre,journalists,conquest,larvae,pronounced,behaviour,diversity,sustained,addressed,geographic,restrictions,voiced,milwaukee,dialect,quoted,grid,nationally,nearest,roster,twentieth,separation,indies,manages,citing,intervention,guidance,severely,migration,artwork,focusing,rivals,trustees,varied,enabled,committees,centered,skating,slavery,cardinals,forcing,tasks,auckland,youtube,argues,colored,advisor,mumbai,requiring,theological,registration,refugees,nineteenth,survivors,runners,colleagues,priests,contribute,variants,workshop,concentrated,creator,lectures,temples,exploration,requirement,interactive,navigation,companion,perth,allegedly,releasing,citizenship,observation,stationed,ph.d.,sheep,breed,discovers,encourage,kilometres,journals,performers,isle,saskatchewan,hybrid,hotels,lancashire,dubbed,airfield,anchor,suburban,theoretical,sussex,anglican,stockholm,permanently,upcoming,privately,receiver,optical,highways,congo,colours,aggregate,authorized,repeatedly,varies,fluid,innovative,transformed,praise,convoy,demanded,discography,attraction,export,audiences,ordained,enlisted,occasional,westminster,syrian,heavyweight,bosnia,consultant,eventual,improving,aires,wickets,epic,reactions,scandal,i.e.,discrimination,buenos,patron,investors,conjunction,testament,construct,encountered,celebrity,expanding,georgian,brands,retain,underwent,algorithm,foods,provision,orbit,transformation,associates,tactical,compact,varieties,stability,refuge,gathering,moreover,manila,configuration,gameplay,discipline,entity,comprising,composers,skill,monitoring,ruins,museums,sustainable,aerial,altered,codes,voyage,friedrich,conflicts,storyline,travelling,conducting,merit,indicating,referendum,currency,encounter,particles,automobile,workshops,acclaimed,inhabited,doctorate,cuban,phenomenon,dome,enrollment,tobacco,governance,trend,equally,manufacture,hydrogen,grande,compensation,download,pianist,grain,shifted,neutral,evaluation,define,cycling,seized,array,relatives,motors,firms,varying,automatically,restore,nicknamed,findings,governed,investigate,manitoba,administrator,vital,integral,indonesian,confusion,publishers,enable,geographical,inland,naming,civilians,reconnaissance,indianapolis,lecturer,deer,tourists,exterior,rhode,bassist,symbols,scope,ammunition,yuan,poets,punjab,nursing,cent,developers,estimates,presbyterian,nasa,holdings,generate,renewed,computing,cyprus,arabia,duration,compounds,gastropod,permit,valid,touchdowns,facade,interactions,mineral,practiced,allegations,consequence,goalkeeper,baronet,copyright,uprising,carved,targeted,competitors,mentions,sanctuary,fees,pursued,tampa,chronicle,capabilities,specified,specimens,toll,accounting,limestone,staged,upgraded,philosophical,streams,guild,revolt,rainfall,supporter,princeton,terrain,hometown,probability,assembled,paulo,surrey,voltage,developer,destroyer,floors,lineup,curve,prevention,potentially,onwards,trips,imposed,hosting,striking,strict,admission,apartments,solely,utility,proceeded,observations,euro,incidents,vinyl,profession,haven,distant,expelled,rivalry,runway,torpedo,zones,shrine,dimensions,investigations,lithuania,idaho,pursuit,copenhagen,considerably,locality,wireless,decrease,genes,thermal,deposits,hindi,habitats,withdrawn,biblical,monuments,casting,plateau,thesis,managers,flooding,assassination,acknowledged,interim,inscription,guided,pastor,finale,insects,transported,activists,marshal,intensity,airing,cardiff,proposals,lifestyle,prey,herald,capitol,aboriginal,measuring,lasting,interpreted,occurring,desired,drawings,healthcare,panels,elimination,oslo,ghana,blog,sabha,intent,superintendent,governors,bankruptcy,p.m.,equity,disk,layers,slovenia,prussia,quartet,mechanics,graduates,politically,monks,screenplay,nato,absorbed,topped,petition,bold,morocco,exhibits,canterbury,publish,rankings,crater,dominican,enhanced,planes,lutheran,governmental,joins,collecting,brussels,unified,streak,strategies,flagship,surfaces,oval,archive,etymology,imprisonment,instructor,noting,remix,opposing,servant,rotation,width,trans,maker,synthesis,excess,tactics,snail,ltd.,lighthouse,sequences,cornwall,plantation,mythology,performs,foundations,populated,horizontal,speedway,activated,performer,diving,conceived,edmonton,subtropical,environments,prompted,semifinals,caps,bulk,treasury,recreational,telegraph,continent,portraits,relegation,catholics,graph,velocity,rulers,endangered,secular,observer,learns,inquiry,idol,dictionary,certification,estimate,cluster,armenia,observatory,revived,nadu,consumers,hypothesis,manuscripts,contents,arguments,editing,trails,arctic,essays,belfast,acquire,promotional,undertaken,corridor,proceedings,antarctic,millennium,labels,delegates,vegetation,acclaim,directing,substance,outcome,diploma,philosopher,malta,albanian,vicinity,degc,legends,regiments,consent,terrorist,scattered,presidents,gravity,orientation,deployment,duchy,refuses,estonia,crowned,separately,renovation,rises,wilderness,objectives,agreements,empress,slopes,inclusion,equality,decree,ballot,criticised,rochester,recurring,struggled,disabled,henri,poles,prussian,convert,bacteria,poorly,sudan,geological,wyoming,consistently,minimal,withdrawal,interviewed,proximity,repairs,initiatives,pakistani,republicans,propaganda,viii,abstract,commercially,availability,mechanisms,naples,discussions,underlying,lens,proclaimed,advised,spelling,auxiliary,attract,lithuanian,editors,o'brien,accordance,measurement,novelist,ussr,formats,councils,contestants,indie,facebook,parishes,barrier,battalions,sponsor,consulting,terrorism,implement,uganda,crucial,unclear,notion,distinguish,collector,attractions,filipino,ecology,investments,capability,renovated,iceland,albania,accredited,scouts,armor,sculptor,cognitive,errors,gaming,condemned,successive,consolidated,baroque,entries,regulatory,reserved,treasurer,variables,arose,technological,rounded,provider,rhine,agrees,accuracy,genera,decreased,frankfurt,ecuador,edges,particle,rendered,calculated,careers,faction,rifles,americas,gaelic,portsmouth,resides,merchants,fiscal,premises,coin,draws,presenter,acceptance,ceremonies,pollution,consensus,membrane,brigadier,nonetheless,genres,supervision,predicted,magnitude,finite,differ,ancestry,vale,delegation,removing,proceeds,placement,emigrated,siblings,molecules,payments,considers,demonstration,proportion,newer,valve,achieving,confederation,continuously,luxury,notre,introducing,coordinates,charitable,squadrons,disorders,geometry,winnipeg,ulster,loans,longtime,receptor,preceding,belgrade,mandate,wrestler,neighbourhood,factories,buddhism,imported,sectors,protagonist,steep,elaborate,prohibited,artifacts,prizes,pupil,cooperative,sovereign,subspecies,carriers,allmusic,nationals,settings,autobiography,neighborhoods,analog,facilitate,voluntary,jointly,newfoundland,organizing,raids,exercises,nobel,machinery,baltic,crop,granite,dense,websites,mandatory,seeks,surrendered,anthology,comedian,bombs,slot,synopsis,critically,arcade,marking,equations,halls,indo,inaugurated,embarked,speeds,clause,invention,premiership,likewise,presenting,demonstrate,designers,organize,examined,km/h,bavaria,troop,referee,detection,zurich,prairie,rapper,wingspan,eurovision,luxembourg,slovakia,inception,disputed,mammals,entrepreneur,makers,evangelical,yield,clergy,trademark,defunct,allocated,depicting,volcanic,batted,conquered,sculptures,providers,reflects,armoured,locals,walt,herzegovina,contracted,entities,sponsorship,prominence,flowing,ethiopia,marketed,corporations,withdraw,carnegie,induced,investigated,portfolio,flowering,opinions,viewing,classroom,donations,bounded,perception,leicester,fruits,charleston,academics,statute,complaints,smallest,deceased,petroleum,resolved,commanders,algebra,southampton,modes,cultivation,transmitter,spelled,obtaining,sizes,acre,pageant,bats,abbreviated,correspondence,barracks,feast,tackles,raja,derives,geology,disputes,translations,counted,constantinople,seating,macedonia,preventing,accommodation,homeland,explored,invaded,provisional,transform,sphere,unsuccessfully,missionaries,conservatives,highlights,traces,organisms,openly,dancers,fossils,absent,monarchy,combining,lanes,stint,dynamics,chains,missiles,screening,module,tribune,generating,miners,nottingham,seoul,unofficial,owing,linking,rehabilitation,citation,louisville,mollusk,depicts,differential,zimbabwe,kosovo,recommendations,responses,pottery,scorer,aided,exceptions,dialects,telecommunications,defines,elderly,lunar,coupled,flown,25th,espn,formula_1,bordered,fragments,guidelines,gymnasium,valued,complexity,papal,presumably,maternal,challenging,reunited,advancing,comprised,uncertain,favorable,twelfth,correspondent,nobility,livestock,expressway,chilean,tide,researcher,emissions,profits,lengths,accompanying,witnessed,itunes,drainage,slope,reinforced,feminist,sanskrit,develops,physicians,outlets,isbn,coordinator,averaged,termed,occupy,diagnosed,yearly,humanitarian,prospect,spacecraft,stems,enacted,linux,ancestors,karnataka,constitute,immigrant,thriller,ecclesiastical,generals,celebrations,enhance,heating,advocated,evident,advances,bombardment,watershed,shuttle,wicket,twitter,adds,branded,teaches,schemes,pension,advocacy,conservatory,cairo,varsity,freshwater,providence,seemingly,shells,cuisine,specially,peaks,intensive,publishes,trilogy,skilled,nacional,unemployment,destinations,parameters,verses,trafficking,determination,infinite,savings,alignment,linguistic,countryside,dissolution,measurements,advantages,licence,subfamily,highlands,modest,regent,algeria,crest,teachings,knockout,brewery,combine,conventions,descended,chassis,primitive,fiji,explicitly,cumberland,uruguay,laboratories,bypass,elect,informal,preceded,holocaust,tackle,minneapolis,quantity,securities,console,doctoral,religions,commissioners,expertise,unveiled,precise,diplomat,standings,infant,disciplines,sicily,endorsed,systematic,charted,armored,mild,lateral,townships,hurling,prolific,invested,wartime,compatible,galleries,moist,battlefield,decoration,convent,tubes,terrestrial,nominee,requests,delegate,leased,dubai,polar,applying,addresses,munster,sings,commercials,teamed,dances,eleventh,midland,cedar,flee,sandstone,snails,inspection,divide,asset,themed,comparable,paramount,dairy,archaeology,intact,institutes,rectangular,instances,phases,reflecting,substantially,applies,vacant,lacked,copa,coloured,encounters,sponsors,encoded,possess,revenues,ucla,chaired,a.m.,enabling,playwright,stoke,sociology,tibetan,frames,motto,financing,illustrations,gibraltar,chateau,bolivia,transmitted,enclosed,persuaded,urged,folded,suffolk,regulated,bros.,submarines,myth,oriental,malaysian,effectiveness,narrowly,acute,sunk,replied,utilized,tasmania,consortium,quantities,gains,parkway,enlarged,sided,employers,adequate,accordingly,assumption,ballad,mascot,distances,peaking,saxony,projected,affiliation,limitations,metals,guatemala,scots,theaters,kindergarten,verb,employer,differs,discharge,controller,seasonal,marching,guru,campuses,avoided,vatican,maori,excessive,chartered,modifications,caves,monetary,sacramento,mixing,institutional,celebrities,irrigation,shapes,broadcaster,anthem,attributes,demolition,offshore,specification,surveys,yugoslav,contributor,auditorium,lebanese,capturing,airports,classrooms,chennai,paths,tendency,determining,lacking,upgrade,sailors,detected,kingdoms,sovereignty,freely,decorative,momentum,scholarly,georges,gandhi,speculation,transactions,undertook,interact,similarities,cove,teammate,constituted,painters,tends,madagascar,partnerships,afghan,personalities,attained,rebounds,masses,synagogue,reopened,asylum,embedded,imaging,catalogue,defenders,taxonomy,fiber,afterward,appealed,communists,lisbon,rica,judaism,adviser,batsman,ecological,commands,lgbt,cooling,accessed,wards,shiva,employs,thirds,scenic,worcester,tallest,contestant,humanities,economist,textile,constituencies,motorway,tram,percussion,cloth,leisure,1880s,baden,flags,resemble,riots,coined,sitcom,composite,implies,daytime,tanzania,penalties,optional,competitor,excluded,steering,reversed,autonomy,reviewer,breakthrough,professionally,damages,pomeranian,deputies,valleys,ventures,highlighted,electorate,mapping,shortened,executives,tertiary,specimen,launching,bibliography,sank,pursuing,binary,descendant,marched,natives,ideology,turks,adolf,archdiocese,tribunal,exceptional,nigerian,preference,fails,loading,comeback,vacuum,favored,alter,remnants,consecrated,spectators,trends,patriarch,feedback,paved,sentences,councillor,astronomy,advocates,broader,commentator,commissions,identifying,revealing,theatres,incomplete,enables,constituent,reformation,tract,haiti,atmospheric,screened,explosive,czechoslovakia,acids,symbolic,subdivision,liberals,incorporate,challenger,erie,filmmaker,laps,kazakhstan,organizational,evolutionary,chemicals,dedication,riverside,fauna,moths,maharashtra,annexed,gen.,resembles,underwater,garnered,timeline,remake,suited,educator,hectares,automotive,feared,latvia,finalist,narrator,portable,airways,plaque,designing,villagers,licensing,flank,statues,struggles,deutsche,migrated,cellular,jacksonville,wimbledon,defining,highlight,preparatory,planets,cologne,employ,frequencies,detachment,readily,libya,resign,halt,helicopters,reef,landmarks,collaborative,irregular,retaining,helsinki,folklore,weakened,viscount,interred,professors,memorable,mega,repertoire,rowing,dorsal,albeit,progressed,operative,coronation,liner,telugu,domains,philharmonic,detect,bengali,synthetic,tensions,atlas,dramatically,paralympics,xbox,shire,kiev,lengthy,sued,notorious,seas,screenwriter,transfers,aquatic,pioneers,unesco,radius,abundant,tunnels,syndicated,inventor,accreditation,janeiro,exeter,ceremonial,omaha,cadet,predators,resided,prose,slavic,precision,abbot,deity,engaging,cambodia,estonian,compliance,demonstrations,protesters,reactor,commodore,successes,chronicles,mare,extant,listings,minerals,tonnes,parody,cultivated,traders,pioneering,supplement,slovak,preparations,collision,partnered,vocational,atoms,malayalam,welcomed,documentation,curved,functioning,presently,formations,incorporates,nazis,botanical,nucleus,ethical,greeks,metric,automated,whereby,stance,europeans,duet,disability,purchasing,email,telescope,displaced,sodium,comparative,processor,inning,precipitation,aesthetic,import,coordination,feud,alternatively,mobility,tibet,regained,succeeding,hierarchy,apostolic,catalog,reproduction,inscriptions,vicar,clusters,posthumously,rican,loosely,additions,photographic,nowadays,selective,derivative,keyboards,guides,collectively,affecting,combines,operas,networking,decisive,terminated,continuity,finishes,ancestor,consul,heated,simulation,leipzig,incorporating,georgetown,formula_2,circa,forestry,portrayal,councillors,advancement,complained,forewings,confined,transaction,definitions,reduces,televised,1890s,rapids,phenomena,belarus,alps,landscapes,quarterly,specifications,commemorate,continuation,isolation,antenna,downstream,patents,ensuing,tended,saga,lifelong,columnist,labeled,gymnastics,papua,anticipated,demise,encompasses,madras,antarctica,interval,icon,rams,midlands,ingredients,priory,strengthen,rouge,explicit,gaza,aging,securing,anthropology,listeners,adaptations,underway,vista,malay,fortified,lightweight,violations,concerto,financed,jesuit,observers,trustee,descriptions,nordic,resistant,opted,accepts,prohibition,andhra,inflation,negro,wholly,imagery,spur,instructed,gloucester,cycles,middlesex,destroyers,statewide,evacuated,hyderabad,peasants,mice,shipyard,coordinate,pitching,colombian,exploring,numbering,compression,countess,hiatus,exceed,raced,archipelago,traits,soils,o'connor,vowel,android,facto,angola,amino,holders,logistics,circuits,emergence,kuwait,partition,emeritus,outcomes,submission,promotes,barack,negotiated,loaned,stripped,50th,excavations,treatments,fierce,participant,exports,decommissioned,cameo,remarked,residences,fuselage,mound,undergo,quarry,node,midwest,specializing,occupies,etc.,showcase,molecule,offs,modules,salon,exposition,revision,peers,positioned,hunters,competes,algorithms,reside,zagreb,calcium,uranium,silicon,airs,counterpart,outlet,collectors,sufficiently,canberra,inmates,anatomy,ensuring,curves,aviv,firearms,basque,volcano,thrust,sheikh,extensions,installations,aluminum,darker,sacked,emphasized,aligned,asserted,pseudonym,spanning,decorations,eighteenth,orbital,spatial,subdivided,notation,decay,macedonian,amended,declining,cyclist,feat,unusually,commuter,birthplace,latitude,activation,overhead,30th,finalists,whites,encyclopedia,tenor,qatar,survives,complement,concentrations,uncommon,astronomical,bangalore,pius,genome,memoir,recruit,prosecutor,modification,paired,container,basilica,arlington,displacement,germanic,mongolia,proportional,debates,matched,calcutta,rows,tehran,aerospace,prevalent,arise,lowland,24th,spokesman,supervised,advertisements,clash,tunes,revelation,wanderers,quarterfinals,fisheries,steadily,memoirs,pastoral,renewable,confluence,acquiring,strips,slogan,upstream,scouting,analyst,practitioners,turbine,strengthened,heavier,prehistoric,plural,excluding,isles,persecution,turin,rotating,villain,hemisphere,unaware,arabs,corpus,relied,singular,unanimous,schooling,passive,angles,dominance,instituted,aria,outskirts,balanced,beginnings,financially,structured,parachute,viewer,attitudes,subjected,escapes,derbyshire,erosion,addressing,styled,declaring,originating,colts,adjusted,stained,occurrence,fortifications,baghdad,nitrogen,localities,yemen,galway,debris,lodz,victorious,pharmaceutical,substances,unnamed,dwelling,atop,developmental,activism,voter,refugee,forested,relates,overlooking,genocide,kannada,insufficient,oversaw,partisan,dioxide,recipients,factions,mortality,capped,expeditions,receptors,reorganized,prominently,atom,flooded,flute,orchestral,scripts,mathematician,airplay,detached,rebuilding,dwarf,brotherhood,salvation,expressions,arabian,cameroon,poetic,recruiting,bundesliga,inserted,scrapped,disabilities,evacuation,pasha,undefeated,crafts,rituals,aluminium,norm,pools,submerged,occupying,pathway,exams,prosperity,wrestlers,promotions,basal,permits,nationalism,trim,merge,gazette,tributaries,transcription,caste,porto,emerge,modeled,adjoining,counterparts,paraguay,redevelopment,renewal,unreleased,equilibrium,similarity,minorities,soviets,comprise,nodes,tasked,unrelated,expired,johan,precursor,examinations,electrons,socialism,exiled,admiralty,floods,wigan,nonprofit,lacks,brigades,screens,repaired,hanover,fascist,labs,osaka,delays,judged,statutory,colt,col.,offspring,solving,bred,assisting,retains,somalia,grouped,corresponds,tunisia,chaplain,eminent,chord,22nd,spans,viral,innovations,possessions,mikhail,kolkata,icelandic,implications,introduces,racism,workforce,alto,compulsory,admits,censorship,onset,reluctant,inferior,iconic,progression,liability,turnout,satellites,behavioral,coordinated,exploitation,posterior,averaging,fringe,krakow,mountainous,greenwich,para,plantations,reinforcements,offerings,famed,intervals,constraints,individually,nutrition,1870s,taxation,threshold,tomatoes,fungi,contractor,ethiopian,apprentice,diabetes,wool,gujarat,honduras,norse,bucharest,23rd,arguably,accompany,prone,teammates,perennial,vacancy,polytechnic,deficit,okinawa,functionality,reminiscent,tolerance,transferring,myanmar,concludes,neighbours,hydraulic,economically,slower,plots,charities,synod,investor,catholicism,identifies,bronx,interpretations,adverse,judiciary,hereditary,nominal,sensor,symmetry,cubic,triangular,tenants,divisional,outreach,representations,passages,undergoing,cartridge,testified,exceeded,impacts,limiting,railroads,defeats,regain,rendering,humid,retreated,reliability,governorate,antwerp,infamous,implied,packaging,lahore,trades,billed,extinction,ecole,rejoined,recognizes,projection,qualifications,stripes,forts,socially,lexington,accurately,sexuality,westward,wikipedia,pilgrimage,abolition,choral,stuttgart,nests,expressing,strikeouts,assessed,monasteries,reconstructed,humorous,marxist,fertile,consort,urdu,patronage,peruvian,devised,lyric,baba,nassau,communism,extraction,popularly,markings,inability,litigation,accounted,processed,emirates,tempo,cadets,eponymous,contests,broadly,oxide,courtyard,frigate,directory,apex,outline,regency,chiefly,patrols,secretariat,cliffs,residency,privy,armament,australians,dorset,geometric,genetics,scholarships,fundraising,flats,demographic,multimedia,captained,documentaries,updates,canvas,blockade,guerrilla,songwriting,administrators,intake,drought,implementing,fraction,cannes,refusal,inscribed,meditation,announcing,exported,ballots,formula_3,curator,basel,arches,flour,subordinate,confrontation,gravel,simplified,berkshire,patriotic,tuition,employing,servers,castile,posting,combinations,discharged,miniature,mutations,constellation,incarnation,ideals,necessity,granting,ancestral,crowds,pioneered,mormon,methodology,rama,indirect,complexes,bavarian,patrons,uttar,skeleton,bollywood,flemish,viable,bloc,breeds,triggered,sustainability,tailed,referenced,comply,takeover,latvian,homestead,platoon,communal,nationality,excavated,targeting,sundays,posed,physicist,turret,endowment,marginal,dispatched,commentators,renovations,attachment,collaborations,ridges,barriers,obligations,shareholders,prof.,defenses,presided,rite,backgrounds,arbitrary,affordable,gloucestershire,thirteenth,inlet,miniseries,possesses,detained,pressures,subscription,realism,solidarity,proto,postgraduate,noun,burmese,abundance,homage,reasoning,anterior,robust,fencing,shifting,vowels,garde,profitable,loch,anchored,coastline,samoa,terminology,prostitution,magistrate,venezuelan,speculated,regulate,fixture,colonists,digit,induction,manned,expeditionary,computational,centennial,principally,vein,preserving,engineered,numerical,cancellation,conferred,continually,borne,seeded,advertisement,unanimously,treaties,infections,ions,sensors,lowered,amphibious,lava,fourteenth,bahrain,niagara,nicaragua,squares,congregations,26th,periodic,proprietary,1860s,contributors,seller,overs,emission,procession,presumed,illustrator,zinc,gases,tens,applicable,stretches,reproductive,sixteenth,apparatus,accomplishments,canoe,guam,oppose,recruitment,accumulated,limerick,namibia,staging,remixes,ordnance,uncertainty,pedestrian,temperate,treason,deposited,registry,cerambycidae,attracting,lankan,reprinted,shipbuilding,homosexuality,neurons,eliminating,1900s,resume,ministries,beneficial,blackpool,surplus,northampton,licenses,constructing,announcer,standardized,alternatives,taipei,inadequate,failures,yields,medalist,titular,obsolete,torah,burlington,predecessors,lublin,retailers,castles,depiction,issuing,gubernatorial,propulsion,tiles,damascus,discs,alternating,pomerania,peasant,tavern,redesignated,27th,illustration,focal,mans,codex,specialists,productivity,antiquity,controversies,promoter,pits,companions,behaviors,lyrical,prestige,creativity,swansea,dramas,approximate,feudal,tissues,crude,campaigned,unprecedented,chancel,amendments,surroundings,allegiance,exchanges,align,firmly,optimal,commenting,reigning,landings,obscure,1850s,contemporaries,paternal,devi,endurance,communes,incorporation,denominations,exchanged,routing,resorts,amnesty,slender,explores,suppression,heats,pronunciation,centred,coupe,stirling,freelance,treatise,linguistics,laos,informs,discovering,pillars,encourages,halted,robots,definitive,maturity,tuberculosis,venetian,silesian,unchanged,originates,mali,lincolnshire,quotes,seniors,premise,contingent,distribute,danube,gorge,logging,dams,curling,seventeenth,specializes,wetlands,deities,assess,thickness,rigid,culminated,utilities,substrate,insignia,nile,assam,shri,currents,suffrage,canadians,mortar,asteroid,bosnian,discoveries,enzymes,sanctioned,replica,hymn,investigators,tidal,dominate,derivatives,converting,leinster,verbs,honoured,criticisms,dismissal,discrete,masculine,reorganization,unlimited,wurttemberg,sacks,allocation,bahn,jurisdictions,participates,lagoon,famine,communion,culminating,surveyed,shortage,cables,intersects,cassette,foremost,adopting,solicitor,outright,bihar,reissued,farmland,dissertation,turnpike,baton,photographed,christchurch,kyoto,finances,rails,histories,linebacker,kilkenny,accelerated,dispersed,handicap,absorption,rancho,ceramic,captivity,cites,font,weighed,mater,utilize,bravery,extract,validity,slovenian,seminars,discourse,ranged,duel,ironically,warships,sega,temporal,surpassed,prolonged,recruits,northumberland,greenland,contributes,patented,eligibility,unification,discusses,reply,translates,beirut,relies,torque,northward,reviewers,monastic,accession,neural,tramway,heirs,sikh,subscribers,amenities,taliban,audit,rotterdam,wagons,kurdish,favoured,combustion,meanings,persia,browser,diagnostic,niger,formula_4,denomination,dividing,parameter,branding,badminton,leningrad,sparked,hurricanes,beetles,propeller,mozambique,refined,diagram,exhaust,vacated,readings,markers,reconciliation,determines,concurrent,imprint,primera,organism,demonstrating,filmmakers,vanderbilt,affiliates,traction,evaluated,defendants,megachile,investigative,zambia,assassinated,rewarded,probable,staffordshire,foreigners,directorate,nominees,consolidation,commandant,reddish,differing,unrest,drilling,bohemia,resembling,instrumentation,considerations,haute,promptly,variously,dwellings,clans,tablet,enforced,cockpit,semifinal,hussein,prisons,ceylon,emblem,monumental,phrases,correspond,crossover,outlined,characterised,acceleration,caucus,crusade,protested,composing,rajasthan,habsburg,rhythmic,interception,inherent,cooled,ponds,spokesperson,gradual,consultation,kuala,globally,suppressed,builders,avengers,suffix,integer,enforce,fibers,unionist,proclamation,uncovered,infrared,adapt,eisenhower,utilizing,captains,stretched,observing,assumes,prevents,analyses,saxophone,caucasus,notices,villains,dartmouth,mongol,hostilities,stretching,veterinary,lenses,texture,prompting,overthrow,excavation,islanders,masovian,battleship,biographer,replay,degradation,departing,luftwaffe,fleeing,oversight,immigrated,serbs,fishermen,strengthening,respiratory,italians,denotes,radial,escorted,motif,wiltshire,expresses,accessories,reverted,establishments,inequality,protocols,charting,famously,satirical,entirety,trench,friction,atletico,sampling,subset,weekday,upheld,sharply,correlation,incorrect,mughal,travelers,hasan,earnings,offset,evaluate,specialised,recognizing,flexibility,nagar,postseason,algebraic,capitalism,crystals,melodies,polynomial,racecourse,defences,austro,wembley,attracts,anarchist,resurrection,reviewing,decreasing,prefix,ratified,mutation,displaying,separating,restoring,assemblies,ordinance,priesthood,cruisers,appoint,moldova,imports,directive,epidemic,militant,senegal,signaling,restriction,critique,retrospective,nationalists,undertake,sioux,canals,algerian,redesigned,philanthropist,depict,conceptual,turbines,intellectuals,eastward,applicants,contractors,vendors,undergone,namesake,ensured,tones,substituted,hindwings,arrests,tombs,transitional,principality,reelection,taiwanese,cavity,manifesto,broadcasters,spawned,thoroughbred,identities,generators,proposes,hydroelectric,johannesburg,cortex,scandinavian,killings,aggression,boycott,catalyst,physiology,fifteenth,waterfront,chromosome,organist,costly,calculation,cemeteries,flourished,recognise,juniors,merging,disciples,ashore,workplace,enlightenment,diminished,debated,hailed,podium,educate,mandated,distributor,litre,electromagnetic,flotilla,estuary,peterborough,staircase,selections,melodic,confronts,wholesale,integrate,intercepted,catalonia,unite,immense,palatinate,switches,earthquakes,occupational,successors,praising,concluding,faculties,firstly,overhaul,empirical,metacritic,inauguration,evergreen,laden,winged,philosophers,amalgamated,geoff,centimeters,napoleonic,upright,planting,brewing,fined,sensory,migrants,wherein,inactive,headmaster,warwickshire,siberia,terminals,denounced,academia,divinity,bilateral,clive,omitted,peerage,relics,apartheid,syndicate,fearing,fixtures,desirable,dismantled,ethnicity,valves,biodiversity,aquarium,ideological,visibility,creators,analyzed,tenant,balkan,postwar,supplier,smithsonian,risen,morphology,digits,bohemian,wilmington,vishnu,demonstrates,aforementioned,biographical,mapped,khorasan,phosphate,presentations,ecosystem,processors,calculations,mosaic,clashes,penned,recalls,coding,angular,lattice,macau,accountability,extracted,pollen,therapeutic,overlap,violinist,deposed,candidacy,infants,covenant,bacterial,restructuring,dungeons,ordination,conducts,builds,invasive,customary,concurrently,relocation,cello,statutes,borneo,entrepreneurs,sanctions,packet,rockefeller,piedmont,comparisons,waterfall,receptions,glacial,surge,signatures,alterations,advertised,enduring,somali,botanist,100th,canonical,motifs,longitude,circulated,alloy,indirectly,margins,preserves,internally,besieged,shale,peripheral,drained,baseman,reassigned,tobago,soloist,socio,grazing,contexts,roofs,portraying,ottomans,shrewsbury,noteworthy,lamps,supplying,beams,qualifier,portray,greenhouse,stronghold,hitter,rites,cretaceous,urging,derive,nautical,aiming,fortunes,verde,donors,reliance,exceeding,exclusion,exercised,simultaneous,continents,guiding,pillar,gradient,poznan,eruption,clinics,moroccan,indicator,trams,piers,parallels,fragment,teatro,potassium,satire,compressed,businessmen,influx,seine,perspectives,shelters,decreases,mounting,formula_5,confederacy,equestrian,expulsion,mayors,liberia,resisted,affinity,shrub,unexpectedly,stimulus,amtrak,deported,perpendicular,statesman,wharf,storylines,romanesque,weights,surfaced,interceptions,dhaka,crambidae,orchestras,rwanda,conclude,constitutes,subsidiaries,admissions,prospective,shear,bilingual,campaigning,presiding,domination,commemorative,trailing,confiscated,petrol,acquisitions,polymer,onlyinclude,chloride,elevations,resolutions,hurdles,pledged,likelihood,objected,erect,encoding,databases,aristotle,hindus,marshes,bowled,ministerial,grange,acronym,annexation,squads,ambient,pilgrims,botany,sofla,astronomer,planetary,descending,bestowed,ceramics,diplomacy,metabolism,colonization,potomac,africans,engraved,recycling,commitments,resonance,disciplinary,jamaican,narrated,spectral,tipperary,waterford,stationary,arbitration,transparency,threatens,crossroads,slalom,oversee,centenary,incidence,economies,livery,moisture,newsletter,autobiographical,bhutan,propelled,dependence,moderately,adobe,barrels,subdivisions,outlook,labelled,stratford,arising,diaspora,barony,automobiles,ornamental,slated,norms,primetime,generalized,analysts,vectors,libyan,yielded,certificates,rooted,vernacular,belarusian,marketplace,prediction,fairfax,malawi,viruses,wooded,demos,mauritius,prosperous,coincided,liberties,huddersfield,ascent,warnings,hinduism,glucose,pulitzer,unused,filters,illegitimate,acquitted,protestants,canopy,staple,psychedelic,winding,abbas,pathways,cheltenham,lagos,niche,invaders,proponents,barred,conversely,doncaster,recession,embraced,rematch,concession,emigration,upgrades,bowls,tablets,remixed,loops,kensington,shootout,monarchs,organizers,harmful,punjabi,broadband,exempt,neolithic,profiles,portrays,parma,cyrillic,quasi,attested,regimental,revive,torpedoes,heidelberg,rhythms,spherical,denote,hymns,icons,theologian,qaeda,exceptionally,reinstated,comune,playhouse,lobbying,grossing,viceroy,delivers,visually,armistice,utrecht,syllable,vertices,analogous,annex,refurbished,entrants,knighted,disciple,rhetoric,detailing,inactivated,ballads,algae,intensified,favourable,sanitation,receivers,pornography,commemorated,cannons,entrusted,manifold,photographers,pueblo,textiles,steamer,myths,marquess,onward,liturgical,romney,uzbekistan,consistency,denoted,hertfordshire,convex,hearings,sulfur,universidad,podcast,selecting,emperors,arises,justices,1840s,mongolian,exploited,termination,digitally,infectious,sedan,symmetric,penal,illustrate,formulation,attribute,problematic,modular,inverse,berth,searches,rutgers,leicestershire,enthusiasts,lockheed,upwards,transverse,accolades,backward,archaeologists,crusaders,nuremberg,defects,ferries,vogue,containers,openings,transporting,separates,lumpur,purchases,attain,wichita,topology,woodlands,deleted,periodically,syntax,overturned,musicals,corp.,strasbourg,instability,nationale,prevailing,cache,marathi,versailles,unmarried,grains,straits,antagonist,segregation,assistants,d'etat,contention,dictatorship,unpopular,motorcycles,criterion,analytical,salzburg,militants,hanged,worcestershire,emphasize,paralympic,erupted,convinces,offences,oxidation,nouns,populace,atari,spanned,hazardous,educators,playable,births,baha'i,preseason,generates,invites,meteorological,handbook,foothills,enclosure,diffusion,mirza,convergence,geelong,coefficient,connector,formula_6,cylindrical,disasters,pleaded,knoxville,contamination,compose,libertarian,arrondissement,franciscan,intercontinental,susceptible,initiation,malaria,unbeaten,consonants,waived,saloon,popularized,estadio,pseudo,interdisciplinary,transports,transformers,carriages,bombings,revolves,ceded,collaborator,celestial,exemption,colchester,maltese,oceanic,ligue,crete,shareholder,routed,depictions,ridden,advisors,calculate,lending,guangzhou,simplicity,newscast,scheduling,snout,eliot,undertaking,armenians,nottinghamshire,whitish,consulted,deficiency,salle,cinemas,superseded,rigorous,kerman,convened,landowners,modernization,evenings,pitches,conditional,scandinavia,differed,formulated,cyclists,swami,guyana,dunes,electrified,appalachian,abdomen,scenarios,prototypes,sindh,consonant,adaptive,boroughs,wolverhampton,modelling,cylinders,amounted,minimize,ambassadors,lenin,settler,coincide,approximation,grouping,murals,bullying,registers,rumours,engagements,energetic,vertex,annals,bordering,geologic,yellowish,runoff,converts,allegheny,facilitated,saturdays,colliery,monitored,rainforest,interfaces,geographically,impaired,prevalence,joachim,paperback,slowed,shankar,distinguishing,seminal,categorized,authorised,auspices,bandwidth,asserts,rebranded,balkans,supplemented,seldom,weaving,capsule,apostles,populous,monmouth,payload,symphonic,densely,shoreline,managerial,masonry,antioch,averages,textbooks,royalist,coliseum,tandem,brewers,diocesan,posthumous,walled,incorrectly,distributions,ensued,reasonably,graffiti,propagation,automation,harmonic,augmented,middleweight,limbs,elongated,landfall,comparatively,literal,grossed,koppen,wavelength,1830s,cerebral,boasts,congestion,physiological,practitioner,coasts,cartoonist,undisclosed,frontal,launches,burgundy,qualifiers,imposing,stade,flanked,assyrian,raided,multiplayer,montane,chesapeake,pathology,drains,vineyards,intercollegiate,semiconductor,grassland,convey,citations,predominant,rejects,benefited,yahoo,graphs,busiest,encompassing,hamlets,explorers,suppress,minors,graphical,calculus,sediment,intends,diverted,mainline,unopposed,cottages,initiate,alumnus,towed,autism,forums,darlington,modernist,oxfordshire,lectured,capitalist,suppliers,panchayat,actresses,foundry,southbound,commodity,wesleyan,divides,palestinians,luton,caretaker,nobleman,mutiny,organizer,preferences,nomenclature,splits,unwilling,offenders,timor,relying,halftime,semitic,arithmetic,milestone,jesuits,arctiidae,retrieved,consuming,contender,edged,plagued,inclusive,transforming,khmer,federally,insurgents,distributing,amherst,rendition,prosecutors,viaduct,disqualified,kabul,liturgy,prevailed,reelected,instructors,swimmers,aperture,churchyard,interventions,totals,darts,metropolis,fuels,fluent,northbound,correctional,inflicted,barrister,realms,culturally,aristocratic,collaborating,emphasizes,choreographer,inputs,ensembles,humboldt,practised,endowed,strains,infringement,archaeologist,congregational,magna,relativity,efficiently,proliferation,mixtape,abruptly,regeneration,commissioning,yukon,archaic,reluctantly,retailer,northamptonshire,universally,crossings,boilers,nickelodeon,revue,abbreviation,retaliation,scripture,routinely,medicinal,benedictine,kenyan,retention,deteriorated,glaciers,apprenticeship,coupling,researched,topography,entrances,anaheim,pivotal,compensate,arched,modify,reinforce,dusseldorf,journeys,motorsport,conceded,sumatra,spaniards,quantitative,loire,cinematography,discarded,botswana,morale,engined,zionist,philanthropy,sainte,fatalities,cypriot,motorsports,indicators,pricing,institut,bethlehem,implicated,gravitational,differentiation,rotor,thriving,precedent,ambiguous,concessions,forecast,conserved,fremantle,asphalt,landslide,middlesbrough,formula_7,humidity,overseeing,chronological,diaries,multinational,crimean,turnover,improvised,youths,declares,tasmanian,canadiens,fumble,refinery,weekdays,unconstitutional,upward,guardians,brownish,imminent,hamas,endorsement,naturalist,martyrs,caledonia,chords,yeshiva,reptiles,severity,mitsubishi,fairs,installment,substitution,repertory,keyboardist,interpreter,silesia,noticeable,rhineland,transmit,inconsistent,booklet,academies,epithet,pertaining,progressively,aquatics,scrutiny,prefect,toxicity,rugged,consume,o'donnell,evolve,uniquely,cabaret,mediated,landowner,transgender,palazzo,compilations,albuquerque,induce,sinai,remastered,efficacy,underside,analogue,specify,possessing,advocating,compatibility,liberated,greenville,mecklenburg,header,memorials,sewage,rhodesia,1800s,salaries,atoll,coordinating,partisans,repealed,amidst,subjective,optimization,nectar,evolving,exploits,madhya,styling,accumulation,raion,postage,responds,buccaneers,frontman,brunei,choreography,coated,kinetic,sampled,inflammatory,complementary,eclectic,norte,vijay,a.k.a,mainz,casualty,connectivity,laureate,franchises,yiddish,reputed,unpublished,economical,periodicals,vertically,bicycles,brethren,capacities,unitary,archeological,tehsil,domesday,wehrmacht,justification,angered,mysore,fielded,abuses,nutrients,ambitions,taluk,battleships,symbolism,superiority,neglect,attendees,commentaries,collaborators,predictions,yorker,breeders,investing,libretto,informally,coefficients,memorandum,pounder,collingwood,tightly,envisioned,arbor,mistakenly,captures,nesting,conflicting,enhancing,streetcar,manufactures,buckinghamshire,rewards,commemorating,stony,expenditure,tornadoes,semantic,relocate,weimar,iberian,sighted,intending,ensign,beverages,expectation,differentiate,centro,utilizes,saxophonist,catchment,transylvania,ecosystems,shortest,sediments,socialists,ineffective,kapoor,formidable,heroine,guantanamo,prepares,scattering,pamphlet,verified,elector,barons,totaling,shrubs,pyrenees,amalgamation,mutually,longitudinal,comte,negatively,masonic,envoy,sexes,akbar,mythical,tonga,bishopric,assessments,malaya,warns,interiors,reefs,reflections,neutrality,musically,nomadic,waterways,provence,collaborate,scaled,adulthood,emerges,euros,optics,incentives,overland,periodical,liege,awarding,realization,slang,affirmed,schooner,hokkaido,czechoslovak,protectorate,undrafted,disagreed,commencement,electors,spruce,swindon,fueled,equatorial,inventions,suites,slovene,backdrop,adjunct,energies,remnant,inhabit,alliances,simulcast,reactors,mosques,travellers,outfielder,plumage,migratory,benin,experimented,fibre,projecting,drafting,laude,evidenced,northernmost,indicted,directional,replication,croydon,comedies,jailed,organizes,devotees,reservoirs,turrets,originate,economists,songwriters,junta,trenches,mounds,proportions,comedic,apostle,azerbaijani,farmhouse,resembled,disrupted,playback,mixes,diagonal,relevance,govern,programmer,gdansk,maize,soundtracks,tendencies,mastered,impacted,believers,kilometre,intervene,chairperson,aerodrome,sails,subsidies,ensures,aesthetics,congresses,ratios,sardinia,southernmost,functioned,controllers,downward,randomly,distortion,regents,palatine,disruption,spirituality,vidhan,tracts,compiler,ventilation,anchorage,symposium,assert,pistols,excelled,avenues,convoys,moniker,constructions,proponent,phased,spines,organising,schleswig,policing,campeonato,mined,hourly,croix,lucrative,authenticity,haitian,stimulation,burkina,espionage,midfield,manually,staffed,awakening,metabolic,biographies,entrepreneurship,conspicuous,guangdong,preface,subgroup,mythological,adjutant,feminism,vilnius,oversees,honourable,tripoli,stylized,kinase,societe,notoriety,altitudes,configurations,outward,transmissions,announces,auditor,ethanol,clube,nanjing,mecca,haifa,blogs,postmaster,paramilitary,depart,positioning,potent,recognizable,spire,brackets,remembrance,overlapping,turkic,articulated,scientology,operatic,deploy,readiness,biotechnology,restrict,cinematographer,inverted,synonymous,administratively,westphalia,commodities,replaces,downloads,centralized,munitions,preached,sichuan,fashionable,implementations,matrices,hiv/aids,loyalist,luzon,celebrates,hazards,heiress,mercenaries,synonym,creole,ljubljana,technician,auditioned,technicians,viewpoint,wetland,mongols,princely,sharif,coating,dynasties,southward,doubling,formula_8,mayoral,harvesting,conjecture,goaltender,oceania,spokane,welterweight,bracket,gatherings,weighted,newscasts,mussolini,affiliations,disadvantage,vibrant,spheres,sultanate,distributors,disliked,establishes,marches,drastically,yielding,jewellery,yokohama,vascular,airlift,canons,subcommittee,repression,strengths,graded,outspoken,fused,pembroke,filmography,redundant,fatigue,repeal,threads,reissue,pennant,edible,vapor,corrections,stimuli,commemoration,dictator,anand,secession,amassed,orchards,pontifical,experimentation,greeted,bangor,forwards,decomposition,quran,trolley,chesterfield,traverse,sermons,burials,skier,climbs,consultants,petitioned,reproduce,parted,illuminated,kurdistan,reigned,occupants,packaged,geometridae,woven,regulating,protagonists,crafted,affluent,clergyman,consoles,migrant,supremacy,attackers,caliph,defect,convection,rallies,huron,resin,segunda,quota,warship,overseen,criticizing,shrines,glamorgan,lowering,beaux,hampered,invasions,conductors,collects,bluegrass,surrounds,substrates,perpetual,chronology,pulmonary,executions,crimea,compiling,noctuidae,battled,tumors,minsk,novgorod,serviced,yeast,computation,swamps,theodor,baronetcy,salford,uruguayan,shortages,odisha,siberian,novelty,cinematic,invitational,decks,dowager,oppression,bandits,appellate,state-of-the-art,clade,palaces,signalling,galaxies,industrialist,tensor,learnt,incurred,magistrates,binds,orbits,ciudad,willingness,peninsular,basins,biomedical,shafts,marlborough,bournemouth,withstand,fitzroy,dunedin,variance,steamship,integrating,muscular,fines,akron,bulbophyllum,malmo,disclosed,cornerstone,runways,medicines,twenty20,gettysburg,progresses,frigates,bodied,transformations,transforms,helens,modelled,versatile,regulator,pursuits,legitimacy,amplifier,scriptures,voyages,examines,presenters,octagonal,poultry,formula_9,anatolia,computed,migrate,directorial,hybrids,localized,preferring,guggenheim,persisted,grassroots,inflammation,fishery,otago,vigorous,professions,instructional,inexpensive,insurgency,legislators,sequels,surnames,agrarian,stainless,nairobi,minas,forerunner,aristocracy,transitions,sicilian,showcased,doses,hiroshima,summarized,gearbox,emancipation,limitation,nuclei,seismic,abandonment,dominating,appropriations,occupations,electrification,hilly,contracting,exaggerated,entertainer,kazan,oricon,cartridges,characterization,parcel,maharaja,exceeds,aspiring,obituary,flattened,contrasted,narration,replies,oblique,outpost,fronts,arranger,talmud,keynes,doctrines,endured,confesses,fortification,supervisors,kilometer,academie,jammu,bathurst,piracy,prostitutes,navarre,cumulative,cruises,lifeboat,twinned,radicals,interacting,expenditures,wexford,libre,futsal,curated,clockwise,colloquially,procurement,immaculate,lyricist,enhancement,porcelain,alzheimer,highlighting,judah,disagreements,storytelling,sheltered,wroclaw,vaudeville,contrasts,neoclassical,compares,contrasting,deciduous,francaise,descriptive,cyclic,reactive,antiquities,meiji,repeats,creditors,forcibly,newmarket,picturesque,impending,uneven,bison,raceway,solvent,ecumenical,optic,professorship,harvested,waterway,banjo,pharaoh,geologist,scanning,dissent,recycled,unmanned,retreating,gospels,aqueduct,branched,tallinn,groundbreaking,syllables,hangar,designations,procedural,craters,cabins,encryption,anthropologist,montevideo,outgoing,inverness,chattanooga,fascism,calais,chapels,groundwater,downfall,misleading,robotic,tortricidae,pixel,handel,prohibit,crewe,renaming,reprised,kickoff,leftist,spaced,integers,causeway,pines,authorship,organise,ptolemy,accessibility,virtues,lesions,iroquois,qur'an,atheist,synthesized,biennial,confederates,dietary,skaters,stresses,tariff,koreans,intercity,republics,quintet,baroness,naive,amplitude,insistence,tbilisi,residues,grammatical,diversified,egyptians,accompaniment,vibration,repository,mandal,topological,distinctions,coherent,invariant,batters,nuevo,internationals,implements,follower,bahia,widened,independents,cantonese,totaled,guadalajara,wolverines,befriended,muzzle,surveying,hungarians,medici,deportation,rayon,approx,recounts,attends,clerical,hellenic,furnished,alleging,soluble,systemic,gallantry,bolshevik,intervened,hostel,gunpowder,specialising,stimulate,leiden,removes,thematic,floral,bafta,printers,conglomerate,eroded,analytic,successively,lehigh,thessaloniki,kilda,clauses,ascended,nehru,scripted,tokugawa,competence,diplomats,exclude,consecration,freedoms,assaults,revisions,blacksmith,textual,sparse,concacaf,slain,uploaded,enraged,whaling,guise,stadiums,debuting,dormitory,cardiovascular,yunnan,dioceses,consultancy,notions,lordship,archdeacon,collided,medial,airfields,garment,wrestled,adriatic,reversal,refueling,verification,jakob,horseshoe,intricate,veracruz,sarawak,syndication,synthesizer,anthologies,stature,feasibility,guillaume,narratives,publicized,antrim,intermittent,constituents,grimsby,filmmaking,doping,unlawful,nominally,transmitting,documenting,seater,internationale,ejected,steamboat,alsace,boise,ineligible,geared,vassal,mustered,ville,inline,pairing,eurasian,kyrgyzstan,barnsley,reprise,stereotypes,rushes,conform,firefighters,deportivo,revolutionaries,rabbis,concurrency,charters,sustaining,aspirations,algiers,chichester,falkland,morphological,systematically,volcanoes,designate,artworks,reclaimed,jurist,anglia,resurrected,chaotic,feasible,circulating,simulated,environmentally,confinement,adventist,harrisburg,laborers,ostensibly,universiade,pensions,influenza,bratislava,octave,refurbishment,gothenburg,putin,barangay,annapolis,breaststroke,illustrates,distorted,choreographed,promo,emphasizing,stakeholders,descends,exhibiting,intrinsic,invertebrates,evenly,roundabout,salts,formula_10,strata,inhibition,branching,stylistic,rumored,realises,mitochondrial,commuted,adherents,logos,bloomberg,telenovela,guineas,charcoal,engages,winery,reflective,siena,cambridgeshire,ventral,flashback,installing,engraving,grasses,traveller,rotated,proprietor,nationalities,precedence,sourced,trainers,cambodian,reductions,depleted,saharan,classifications,biochemistry,plaintiffs,arboretum,humanist,fictitious,aleppo,climates,bazaar,his/her,homogeneous,multiplication,moines,indexed,linguist,skeletal,foliage,societal,differentiated,informing,mammal,infancy,archival,cafes,malls,graeme,musee,schizophrenia,fargo,pronouns,derivation,descend,ascending,terminating,deviation,recaptured,confessions,weakening,tajikistan,bahadur,pasture,b/hip,donegal,supervising,sikhs,thinkers,euclidean,reinforcement,friars,portage,fuscous,lucknow,synchronized,assertion,choirs,privatization,corrosion,multitude,skyscraper,royalties,ligament,usable,spores,directs,clashed,stockport,fronted,dependency,contiguous,biologist,backstroke,powerhouse,frescoes,phylogenetic,welding,kildare,gabon,conveyed,augsburg,severn,continuum,sahib,lille,injuring,passeriformesfamily,succeeds,translating,unitarian,startup,turbulent,outlying,philanthropic,stanislaw,idols,claremont,conical,haryana,armagh,blended,implicit,conditioned,modulation,rochdale,labourers,coinage,shortstop,potsdam,gears,obesity,bestseller,advisers,bouts,comedians,jozef,lausanne,taxonomic,correlated,columbian,marne,indications,psychologists,libel,edict,beaufort,disadvantages,renal,finalized,racehorse,unconventional,disturbances,falsely,zoology,adorned,redesign,executing,narrower,commended,appliances,stalls,resurgence,saskatoon,miscellaneous,permitting,epoch,formula_11,cumbria,forefront,vedic,eastenders,disposed,supermarkets,rower,inhibitor,magnesium,colourful,yusuf,harrow,formulas,centrally,balancing,ionic,nocturnal,consolidate,ornate,raiding,charismatic,accelerate,nominate,residual,dhabi,commemorates,attribution,uninhabited,mindanao,atrocities,genealogical,romani,applicant,enactment,abstraction,trough,pulpit,minuscule,misconduct,grenades,timely,supplements,messaging,curvature,ceasefire,telangana,susquehanna,braking,redistribution,shreveport,neighbourhoods,gregorian,widowed,khuzestan,empowerment,scholastic,evangelist,peptide,topical,theorist,historia,thence,sudanese,museo,jurisprudence,masurian,frankish,headlined,recounted,netball,petitions,tolerant,hectare,truncated,southend,methane,captives,reigns,massif,subunit,acidic,weightlifting,footballers,sabah,britannia,tunisian,segregated,sawmill,withdrawing,unpaid,weaponry,somme,perceptions,unicode,alcoholism,durban,wrought,waterfalls,jihad,auschwitz,upland,eastbound,adjective,anhalt,evaluating,regimes,guildford,reproduced,pamphlets,hierarchical,maneuvers,hanoi,fabricated,repetition,enriched,arterial,replacements,tides,globalization,adequately,westbound,satisfactory,fleets,phosphorus,lastly,neuroscience,anchors,xinjiang,membranes,improvisation,shipments,orthodoxy,submissions,bolivian,mahmud,ramps,leyte,pastures,outlines,flees,transmitters,fares,sequential,stimulated,novice,alternately,symmetrical,breakaway,layered,baronets,lizards,blackish,edouard,horsepower,penang,principals,mercantile,maldives,overwhelmingly,hawke,rallied,prostate,conscription,juveniles,maccabi,carvings,strikers,sudbury,spurred,improves,lombardy,macquarie,parisian,elastic,distillery,shetland,humane,brentford,wrexham,warehouses,routines,encompassed,introductory,isfahan,instituto,palais,revolutions,sporadic,impoverished,portico,fellowships,speculative,enroll,dormant,adhere,fundamentally,sculpted,meritorious,template,upgrading,reformer,rectory,uncredited,indicative,creeks,galveston,radically,hezbollah,firearm,educating,prohibits,trondheim,locus,refit,headwaters,screenings,lowlands,wasps,coarse,attaining,sedimentary,perished,pitchfork,interned,cerro,stagecoach,aeronautical,liter,transitioned,haydn,inaccurate,legislatures,bromwich,knesset,spectroscopy,butte,asiatic,degraded,concordia,catastrophic,lobes,wellness,pensacola,periphery,hapoel,theta,horizontally,freiburg,liberalism,pleas,durable,warmian,offenses,mesopotamia,shandong,unsuitable,hospitalized,appropriately,phonetic,encompass,conversions,observes,illnesses,breakout,assigns,crowns,inhibitors,nightly,manifestation,fountains,maximize,alphabetical,sloop,expands,newtown,widening,gaddafi,commencing,camouflage,footprint,tyrol,barangays,universite,highlanders,budgets,query,lobbied,westchester,equator,stipulated,pointe,distinguishes,allotted,embankment,advises,storing,loyalists,fourier,rehearsals,starvation,gland,rihanna,tubular,expressive,baccalaureate,intersections,revered,carbonate,eritrea,craftsmen,cosmopolitan,sequencing,corridors,shortlisted,bangladeshi,persians,mimic,parades,repetitive,recommends,flanks,promoters,incompatible,teaming,ammonia,greyhound,solos,improper,legislator,newsweek,recurrent,vitro,cavendish,eireann,crises,prophets,mandir,strategically,guerrillas,formula_12,ghent,contenders,equivalence,drone,sociological,hamid,castes,statehood,aland,clinched,relaunched,tariffs,simulations,williamsburg,rotate,mediation,smallpox,harmonica,lodges,lavish,restrictive,o'sullivan,detainees,polynomials,echoes,intersecting,learners,elects,charlemagne,defiance,epsom,liszt,facilitating,absorbing,revelations,padua,pieter,pious,penultimate,mammalian,montenegrin,supplementary,widows,aromatic,croats,roanoke,trieste,legions,subdistrict,babylonian,grasslands,volga,violently,sparsely,oldies,telecommunication,respondents,quarries,downloadable,commandos,taxpayer,catalytic,malabar,afforded,copying,declines,nawab,junctions,assessing,filtering,classed,disused,compliant,christoph,gottingen,civilizations,hermitage,caledonian,whereupon,ethnically,springsteen,mobilization,terraces,indus,excel,zoological,enrichment,simulate,guitarists,registrar,cappella,invoked,reused,manchu,configured,uppsala,genealogy,mergers,casts,curricular,rebelled,subcontinent,horticultural,parramatta,orchestrated,dockyard,claudius,decca,prohibiting,turkmenistan,brahmin,clandestine,obligatory,elaborated,parasitic,helix,constraint,spearheaded,rotherham,eviction,adapting,albans,rescues,sociologist,guiana,convicts,occurrences,kamen,antennas,asturias,wheeled,sanitary,deterioration,trier,theorists,baseline,announcements,valea,planners,factual,serialized,serials,bilbao,demoted,fission,jamestown,cholera,alleviate,alteration,indefinite,sulfate,paced,climatic,valuation,artisans,proficiency,aegean,regulators,fledgling,sealing,influencing,servicemen,frequented,cancers,tambon,narayan,bankers,clarified,embodied,engraver,reorganisation,dissatisfied,dictated,supplemental,temperance,ratification,puget,nutrient,pretoria,papyrus,uniting,ascribed,cores,coptic,schoolhouse,barrio,1910s,armory,defected,transatlantic,regulates,ported,artefacts,specifies,boasted,scorers,mollusks,emitted,navigable,quakers,projective,dialogues,reunification,exponential,vastly,banners,unsigned,dissipated,halves,coincidentally,leasing,purported,escorting,estimation,foxes,lifespan,inflorescence,assimilation,showdown,staunch,prologue,ligand,superliga,telescopes,northwards,keynote,heaviest,taunton,redeveloped,vocalists,podlaskie,soyuz,rodents,azores,moravian,outset,parentheses,apparel,domestically,authoritative,polymers,monterrey,inhibit,launcher,jordanian,folds,taxis,mandates,singled,liechtenstein,subsistence,marxism,ousted,governorship,servicing,offseason,modernism,prism,devout,translators,islamist,chromosomes,pitted,bedfordshire,fabrication,authoritarian,javanese,leaflets,transient,substantive,predatory,sigismund,assassinate,diagrams,arrays,rediscovered,reclamation,spawning,fjord,peacekeeping,strands,fabrics,highs,regulars,tirana,ultraviolet,athenian,filly,barnet,naacp,nueva,favourites,terminates,showcases,clones,inherently,interpreting,bjorn,finely,lauded,unspecified,chola,pleistocene,insulation,antilles,donetsk,funnel,nutritional,biennale,reactivated,southport,primate,cavaliers,austrians,interspersed,restarted,suriname,amplifiers,wladyslaw,blockbuster,sportsman,minogue,brightness,benches,bridgeport,initiating,israelis,orbiting,newcomers,externally,scaling,transcribed,impairment,luxurious,longevity,impetus,temperament,ceilings,tchaikovsky,spreads,pantheon,bureaucracy,1820s,heraldic,villas,formula_13,galician,meath,avoidance,corresponded,headlining,connacht,seekers,rappers,solids,monograph,scoreless,opole,isotopes,himalayas,parodies,garments,microscopic,republished,havilland,orkney,demonstrators,pathogen,saturated,hellenistic,facilitates,aerodynamic,relocating,indochina,laval,astronomers,bequeathed,administrations,extracts,nagoya,torquay,demography,medicare,ambiguity,renumbered,pursuant,concave,syriac,electrode,dispersal,henan,bialystok,walsall,crystalline,puebla,janata,illumination,tianjin,enslaved,coloration,championed,defamation,grille,johor,rejoin,caspian,fatally,planck,workings,appointing,institutionalized,wessex,modernized,exemplified,regatta,jacobite,parochial,programmers,blending,eruptions,insurrection,regression,indices,sited,dentistry,mobilized,furnishings,levant,primaries,ardent,nagasaki,conqueror,dorchester,opined,heartland,amman,mortally,wellesley,bowlers,outputs,coveted,orthography,immersion,disrepair,disadvantaged,curate,childless,condensed,codice_1,remodeled,resultant,bolsheviks,superfamily,saxons,2010s,contractual,rivalries,malacca,oaxaca,magnate,vertebrae,quezon,olympiad,yucatan,tyres,macro,specialization,commendation,caliphate,gunnery,exiles,excerpts,fraudulent,adjustable,aramaic,interceptor,drumming,standardization,reciprocal,adolescents,federalist,aeronautics,favorably,enforcing,reintroduced,zhejiang,refining,biplane,banknotes,accordion,intersect,illustrating,summits,classmate,militias,biomass,massacres,epidemiology,reworked,wrestlemania,nantes,auditory,taxon,elliptical,chemotherapy,asserting,avoids,proficient,airmen,yellowstone,multicultural,alloys,utilization,seniority,kuyavian,huntsville,orthogonal,bloomington,cultivars,casimir,internment,repulsed,impedance,revolving,fermentation,parana,shutout,partnering,empowered,islamabad,polled,classify,amphibians,greyish,obedience,4x100,projectile,khyber,halfback,relational,d'ivoire,synonyms,endeavour,padma,customized,mastery,defenceman,berber,purge,interestingly,covent,promulgated,restricting,condemnation,hillsborough,walkers,privateer,intra,captaincy,naturalized,huffington,detecting,hinted,migrating,bayou,counterattack,anatomical,foraging,unsafe,swiftly,outdated,paraguayan,attire,masjid,endeavors,jerseys,triassic,quechua,growers,axial,accumulate,wastewater,cognition,fungal,animator,pagoda,kochi,uniformly,antibody,yerevan,hypotheses,combatants,italianate,draining,fragmentation,snowfall,formative,inversion,kitchener,identifier,additive,lucha,selects,ashland,cambrian,racetrack,trapping,congenital,primates,wavelengths,expansions,yeomanry,harcourt,wealthiest,awaited,punta,intervening,aggressively,vichy,piloted,midtown,tailored,heyday,metadata,guadalcanal,inorganic,hadith,pulses,francais,tangent,scandals,erroneously,tractors,pigment,constabulary,jiangsu,landfill,merton,basalt,astor,forbade,debuts,collisions,exchequer,stadion,roofed,flavour,sculptors,conservancy,dissemination,electrically,undeveloped,existent,surpassing,pentecostal,manifested,amend,formula_14,superhuman,barges,tunis,analytics,argyll,liquids,mechanized,domes,mansions,himalayan,indexing,reuters,nonlinear,purification,exiting,timbers,triangles,decommissioning,departmental,causal,fonts,americana,sept.,seasonally,incomes,razavi,sheds,memorabilia,rotational,terre,sutra,protege,yarmouth,grandmaster,annum,looted,imperialism,variability,liquidation,baptised,isotope,showcasing,milling,rationale,hammersmith,austen,streamlined,acknowledging,contentious,qaleh,breadth,turing,referees,feral,toulon,unofficially,identifiable,standout,labeling,dissatisfaction,jurgen,angrily,featherweight,cantons,constrained,dominates,standalone,relinquished,theologians,markedly,italics,downed,nitrate,likened,gules,craftsman,singaporean,pixels,mandela,moray,parity,departement,antigen,academically,burgh,brahma,arranges,wounding,triathlon,nouveau,vanuatu,banded,acknowledges,unearthed,stemming,authentication,byzantines,converge,nepali,commonplace,deteriorating,recalling,palette,mathematicians,greenish,pictorial,ahmedabad,rouen,validation,u.s.a.,'best,malvern,archers,converter,undergoes,fluorescent,logistical,notification,transvaal,illicit,symphonies,stabilization,worsened,fukuoka,decrees,enthusiast,seychelles,blogger,louvre,dignitaries,burundi,wreckage,signage,pinyin,bursts,federer,polarization,urbana,lazio,schism,nietzsche,venerable,administers,seton,kilograms,invariably,kathmandu,farmed,disqualification,earldom,appropriated,fluctuations,kermanshah,deployments,deformation,wheelbase,maratha,psalm,bytes,methyl,engravings,skirmish,fayette,vaccines,ideally,astrology,breweries,botanic,opposes,harmonies,irregularities,contended,gaulle,prowess,constants,aground,filipinos,fresco,ochreous,jaipur,willamette,quercus,eastwards,mortars,champaign,braille,reforming,horned,hunan,spacious,agitation,draught,specialties,flourishing,greensboro,necessitated,swedes,elemental,whorls,hugely,structurally,plurality,synthesizers,embassies,assad,contradictory,inference,discontent,recreated,inspectors,unicef,commuters,embryo,modifying,stints,numerals,communicated,boosted,trumpeter,brightly,adherence,remade,leases,restrained,eucalyptus,dwellers,planar,grooves,gainesville,daimler,anzac,szczecin,cornerback,prized,peking,mauritania,khalifa,motorized,lodging,instrumentalist,fortresses,cervical,formula_15,passerine,sectarian,researches,apprenticed,reliefs,disclose,gliding,repairing,queue,kyushu,literate,canoeing,sacrament,separatist,calabria,parkland,flowed,investigates,statistically,visionary,commits,dragoons,scrolls,premieres,revisited,subdued,censored,patterned,elective,outlawed,orphaned,leyland,richly,fujian,miniatures,heresy,plaques,countered,nonfiction,exponent,moravia,dispersion,marylebone,midwestern,enclave,ithaca,federated,electronically,handheld,microscopy,tolls,arrivals,climbers,continual,cossacks,moselle,deserts,ubiquitous,gables,forecasts,deforestation,vertebrates,flanking,drilled,superstructure,inspected,consultative,bypassed,ballast,subsidy,socioeconomic,relic,grenada,journalistic,administering,accommodated,collapses,appropriation,reclassified,foreword,porte,assimilated,observance,fragmented,arundel,thuringia,gonzaga,shenzhen,shipyards,sectional,ayrshire,sloping,dependencies,promenade,ecuadorian,mangrove,constructs,goalscorer,heroism,iteration,transistor,omnibus,hampstead,cochin,overshadowed,chieftain,scalar,finishers,ghanaian,abnormalities,monoplane,encyclopaedia,characterize,travancore,baronetage,bearers,biking,distributes,paving,christened,inspections,banco,humber,corinth,quadratic,albanians,lineages,majored,roadside,inaccessible,inclination,darmstadt,fianna,epilepsy,propellers,papacy,montagu,bhutto,sugarcane,optimized,pilasters,contend,batsmen,brabant,housemates,sligo,ascot,aquinas,supervisory,accorded,gerais,echoed,nunavut,conservatoire,carniola,quartermaster,gminas,impeachment,aquitaine,reformers,quarterfinal,karlsruhe,accelerator,coeducational,archduke,gelechiidae,seaplane,dissident,frenchman,palau,depots,hardcover,aachen,darreh,denominational,groningen,parcels,reluctance,drafts,elliptic,counters,decreed,airship,devotional,contradiction,formula_16,undergraduates,qualitative,guatemalan,slavs,southland,blackhawks,detrimental,abolish,chechen,manifestations,arthritis,perch,fated,hebei,peshawar,palin,immensely,havre,totalling,rampant,ferns,concourse,triples,elites,olympian,larva,herds,lipid,karabakh,distal,monotypic,vojvodina,batavia,multiplied,spacing,spellings,pedestrians,parchment,glossy,industrialization,dehydrogenase,patriotism,abolitionist,mentoring,elizabethan,figurative,dysfunction,abyss,constantin,middletown,stigma,mondays,gambia,gaius,israelites,renounced,nepalese,overcoming,buren,sulphur,divergence,predation,looting,iberia,futuristic,shelved,anthropological,innsbruck,escalated,clermont,entrepreneurial,benchmark,mechanically,detachments,populist,apocalyptic,exited,embryonic,stanza,readership,chiba,landlords,expansive,boniface,therapies,perpetrators,whitehall,kassel,masts,carriageway,clinch,pathogens,mazandaran,undesirable,teutonic,miocene,nagpur,juris,cantata,compile,diffuse,dynastic,reopening,comptroller,o'neal,flourish,electing,scientifically,departs,welded,modal,cosmology,fukushima,libertadores,chang'an,asean,generalization,localization,afrikaans,cricketers,accompanies,emigrants,esoteric,southwards,shutdown,prequel,fittings,innate,wrongly,equitable,dictionaries,senatorial,bipolar,flashbacks,semitism,walkway,lyrically,legality,sorbonne,vigorously,durga,samoan,karel,interchanges,patna,decider,registering,electrodes,anarchists,excursion,overthrown,gilan,recited,michelangelo,advertiser,kinship,taboo,cessation,formula_17,premiers,traversed,madurai,poorest,torneo,exerted,replicate,spelt,sporadically,horde,landscaping,razed,hindered,esperanto,manchuria,propellant,jalan,baha'is,sikkim,linguists,pandit,racially,ligands,dowry,francophone,escarpment,behest,magdeburg,mainstay,villiers,yangtze,grupo,conspirators,martyrdom,noticeably,lexical,kazakh,unrestricted,utilised,sired,inhabits,proofs,joseon,pliny,minted,buddhists,cultivate,interconnected,reuse,viability,australasian,derelict,resolving,overlooks,menon,stewardship,playwrights,thwarted,filmfare,disarmament,protections,bundles,sidelined,hypothesized,singer/songwriter,forage,netted,chancery,townshend,restructured,quotation,hyperbolic,succumbed,parliaments,shenandoah,apical,kibbutz,storeys,pastors,lettering,ukrainians,hardships,chihuahua,avail,aisles,taluka,antisemitism,assent,ventured,banksia,seamen,hospice,faroe,fearful,woreda,outfield,chlorine,transformer,tatar,panoramic,pendulum,haarlem,styria,cornice,importing,catalyzes,subunits,enamel,bakersfield,realignment,sorties,subordinates,deanery,townland,gunmen,tutelage,evaluations,allahabad,thrace,veneto,mennonite,sharia,subgenus,satisfies,puritan,unequal,gastrointestinal,ordinances,bacterium,horticulture,argonauts,adjectives,arable,duets,visualization,woolwich,revamped,euroleague,thorax,completes,originality,vasco,freighter,sardar,oratory,sects,extremes,signatories,exporting,arisen,exacerbated,departures,saipan,furlongs,d'italia,goring,dakar,conquests,docked,offshoot,okrug,referencing,disperse,netting,summed,rewritten,articulation,humanoid,spindle,competitiveness,preventive,facades,westinghouse,wycombe,synthase,emulate,fostering,abdel,hexagonal,myriad,caters,arjun,dismay,axiom,psychotherapy,colloquial,complemented,martinique,fractures,culmination,erstwhile,atrium,electronica,anarchism,nadal,montpellier,algebras,submitting,adopts,stemmed,overcame,internacional,asymmetric,gallipoli,gliders,flushing,extermination,hartlepool,tesla,interwar,patriarchal,hitherto,ganges,combatant,marred,philology,glastonbury,reversible,isthmus,undermined,southwark,gateshead,andalusia,remedies,hastily,optimum,smartphone,evade,patrolled,beheaded,dopamine,waivers,ugandan,gujarati,densities,predicting,intestinal,tentative,interstellar,kolonia,soloists,penetrated,rebellions,qeshlaq,prospered,colegio,deficits,konigsberg,deficient,accessing,relays,kurds,politburo,codified,incarnations,occupancy,cossack,metaphysical,deprivation,chopra,piccadilly,formula_18,makeshift,protestantism,alaskan,frontiers,faiths,tendon,dunkirk,durability,autobots,bonuses,coinciding,emails,gunboat,stucco,magma,neutrons,vizier,subscriptions,visuals,envisaged,carpets,smoky,schema,parliamentarian,immersed,domesticated,parishioners,flinders,diminutive,mahabharata,ballarat,falmouth,vacancies,gilded,twigs,mastering,clerics,dalmatia,islington,slogans,compressor,iconography,congolese,sanction,blends,bulgarians,moderator,outflow,textures,safeguard,trafalgar,tramways,skopje,colonialism,chimneys,jazeera,organisers,denoting,motivations,ganga,longstanding,deficiencies,gwynedd,palladium,holistic,fascia,preachers,embargo,sidings,busan,ignited,artificially,clearwater,cemented,northerly,salim,equivalents,crustaceans,oberliga,quadrangle,historiography,romanians,vaults,fiercely,incidental,peacetime,tonal,bhopal,oskar,radha,pesticides,timeslot,westerly,cathedrals,roadways,aldershot,connectors,brahmins,paler,aqueous,gustave,chromatic,linkage,lothian,specialises,aggregation,tributes,insurgent,enact,hampden,ghulam,federations,instigated,lyceum,fredrik,chairmanship,floated,consequent,antagonists,intimidation,patriarchate,warbler,heraldry,entrenched,expectancy,habitation,partitions,widest,launchers,nascent,ethos,wurzburg,lycee,chittagong,mahatma,merseyside,asteroids,yokosuka,cooperatives,quorum,redistricting,bureaucratic,yachts,deploying,rustic,phonology,chorale,cellist,stochastic,crucifixion,surmounted,confucian,portfolios,geothermal,crested,calibre,tropics,deferred,nasir,iqbal,persistence,essayist,chengdu,aborigines,fayetteville,bastion,interchangeable,burlesque,kilmarnock,specificity,tankers,colonels,fijian,quotations,enquiry,quito,palmerston,delle,multidisciplinary,polynesian,iodine,antennae,emphasised,manganese,baptists,galilee,jutland,latent,excursions,skepticism,tectonic,precursors,negligible,musique,misuse,vitoria,expressly,veneration,sulawesi,footed,mubarak,chongqing,chemically,midday,ravaged,facets,varma,yeovil,ethnographic,discounted,physicists,attache,disbanding,essen,shogunate,cooperated,waikato,realising,motherwell,pharmacology,sulfide,inward,expatriate,devoid,cultivar,monde,andean,groupings,goran,unaffected,moldovan,postdoctoral,coleophora,delegated,pronoun,conductivity,coleridge,disapproval,reappeared,microbial,campground,olsztyn,fostered,vaccination,rabbinical,champlain,milestones,viewership,caterpillar,effected,eupithecia,financier,inferred,uzbek,bundled,bandar,balochistan,mysticism,biosphere,holotype,symbolizes,lovecraft,photons,abkhazia,swaziland,subgroups,measurable,falkirk,valparaiso,ashok,discriminatory,rarity,tabernacle,flyweight,jalisco,westernmost,antiquarian,extracellular,margrave,colspan=9,midsummer,digestive,reversing,burgeoning,substitutes,medallist,khrushchev,guerre,folio,detonated,partido,plentiful,aggregator,medallion,infiltration,shaded,santander,fared,auctioned,permian,ramakrishna,andorra,mentors,diffraction,bukit,potentials,translucent,feminists,tiers,protracted,coburg,wreath,guelph,adventurer,he/she,vertebrate,pipelines,celsius,outbreaks,australasia,deccan,garibaldi,unionists,buildup,biochemical,reconstruct,boulders,stringent,barbed,wording,furnaces,pests,befriends,organises,popes,rizal,tentacles,cadre,tallahassee,punishments,occidental,formatted,mitigation,rulings,rubens,cascades,inducing,choctaw,volta,synagogues,movable,altarpiece,mitigate,practise,intermittently,encountering,memberships,earns,signify,retractable,amounting,pragmatic,wilfrid,dissenting,divergent,kanji,reconstituted,devonian,constitutions,levied,hendrik,starch,costal,honduran,ditches,polygon,eindhoven,superstars,salient,argus,punitive,purana,alluvial,flaps,inefficient,retracted,advantageous,quang,andersson,danville,binghamton,symbolize,conclave,shaanxi,silica,interpersonal,adept,frans,pavilions,lubbock,equip,sunken,limburg,activates,prosecutions,corinthian,venerated,shootings,retreats,parapet,orissa,riviere,animations,parodied,offline,metaphysics,bluffs,plume,piety,fruition,subsidized,steeplechase,shanxi,eurasia,angled,forecasting,suffragan,ashram,larval,labyrinth,chronicler,summaries,trailed,merges,thunderstorms,filtered,formula_19,advertisers,alpes,informatics,parti,constituting,undisputed,certifications,javascript,molten,sclerosis,rumoured,boulogne,hmong,lewes,breslau,notts,bantu,ducal,messengers,radars,nightclubs,bantamweight,carnatic,kaunas,fraternal,triggering,controversially,londonderry,visas,scarcity,offaly,uprisings,repelled,corinthians,pretext,kuomintang,kielce,empties,matriculated,pneumatic,expos,agile,treatises,midpoint,prehistory,oncology,subsets,hydra,hypertension,axioms,wabash,reiterated,swapped,achieves,premio,ageing,overture,curricula,challengers,subic,selangor,liners,frontline,shutter,validated,normalized,entertainers,molluscs,maharaj,allegation,youngstown,synth,thoroughfare,regionally,pillai,transcontinental,pedagogical,riemann,colonia,easternmost,tentatively,profiled,herefordshire,nativity,meuse,nucleotide,inhibits,huntingdon,throughput,recorders,conceding,domed,homeowners,centric,gabled,canoes,fringes,breeder,subtitled,fluoride,haplogroup,zionism,izmir,phylogeny,kharkiv,romanticism,adhesion,usaaf,delegations,lorestan,whalers,biathlon,vaulted,mathematically,pesos,skirmishes,heisman,kalamazoo,gesellschaft,launceston,interacts,quadruple,kowloon,psychoanalysis,toothed,ideologies,navigational,valence,induces,lesotho,frieze,rigging,undercarriage,explorations,spoof,eucharist,profitability,virtuoso,recitals,subterranean,sizeable,herodotus,subscriber,huxley,pivot,forewing,warring,boleslaw,bharatiya,suffixes,trois,percussionist,downturn,garrisons,philosophies,chants,mersin,mentored,dramatist,guilds,frameworks,thermodynamic,venomous,mehmed,assembling,rabbinic,hegemony,replicas,enlargement,claimant,retitled,utica,dumfries,metis,deter,assortment,tubing,afflicted,weavers,rupture,ornamentation,transept,salvaged,upkeep,callsign,rajput,stevenage,trimmed,intracellular,synchronization,consular,unfavorable,royalists,goldwyn,fasting,hussars,doppler,obscurity,currencies,amiens,acorn,tagore,townsville,gaussian,migrations,porta,anjou,graphite,seaport,monographs,gladiators,metrics,calligraphy,sculptural,swietokrzyskie,tolombeh,eredivisie,shoals,queries,carts,exempted,fiberglass,mirrored,bazar,progeny,formalized,mukherjee,professed,amazon.com,cathode,moreton,removable,mountaineers,nagano,transplantation,augustinian,steeply,epilogue,adapter,decisively,accelerating,mediaeval,substituting,tasman,devonshire,litres,enhancements,himmler,nephews,bypassing,imperfect,argentinian,reims,integrates,sochi,ascii,licences,niches,surgeries,fables,versatility,indra,footpath,afonso,crore,evaporation,encodes,shelling,conformity,simplify,updating,quotient,overt,firmware,umpires,architectures,eocene,conservatism,secretion,embroidery,f.c..,tuvalu,mosaics,shipwreck,prefectural,cohort,grievances,garnering,centerpiece,apoptosis,djibouti,bethesda,formula_20,shonen,richland,justinian,dormitories,meteorite,reliably,obtains,pedagogy,hardness,cupola,manifolds,amplification,steamers,familial,dumbarton,jerzy,genital,maidstone,salinity,grumman,signifies,presbytery,meteorology,procured,aegis,streamed,deletion,nuestra,mountaineering,accords,neuronal,khanate,grenoble,axles,dispatches,tokens,turku,auctions,propositions,planters,proclaiming,recommissioned,stravinsky,obverse,bombarded,waged,saviour,massacred,reformist,purportedly,resettlement,ravenna,embroiled,minden,revitalization,hikers,bridging,torpedoed,depletion,nizam,affectionately,latitudes,lubeck,spore,polymerase,aarhus,nazism,101st,buyout,galerie,diets,overflow,motivational,renown,brevet,deriving,melee,goddesses,demolish,amplified,tamworth,retake,brokerage,beneficiaries,henceforth,reorganised,silhouette,browsers,pollutants,peron,lichfield,encircled,defends,bulge,dubbing,flamenco,coimbatore,refinement,enshrined,grizzlies,capacitor,usefulness,evansville,interscholastic,rhodesian,bulletins,diamondbacks,rockers,platted,medalists,formosa,transporter,slabs,guadeloupe,disparate,concertos,violins,regaining,mandible,untitled,agnostic,issuance,hamiltonian,brampton,srpska,homology,downgraded,florentine,epitaph,kanye,rallying,analysed,grandstand,infinitely,antitrust,plundered,modernity,colspan=3|total,amphitheatre,doric,motorists,yemeni,carnivorous,probabilities,prelate,struts,scrapping,bydgoszcz,pancreatic,signings,predicts,compendium,ombudsman,apertura,appoints,rebbe,stereotypical,valladolid,clustered,touted,plywood,inertial,kettering,curving,d'honneur,housewives,grenadier,vandals,barbarossa,necked,waltham,reputedly,jharkhand,cistercian,pursues,viscosity,organiser,cloister,islet,stardom,moorish,himachal,strives,scripps,staggered,blasts,westwards,millimeters,angolan,hubei,agility,admirals,mordellistena,coincides,platte,vehicular,cordillera,riffs,schoolteacher,canaan,acoustics,tinged,reinforcing,concentrates,daleks,monza,selectively,musik,polynesia,exporter,reviving,macclesfield,bunkers,ballets,manors,caudal,microbiology,primes,unbroken,outcry,flocks,pakhtunkhwa,abelian,toowoomba,luminous,mould,appraisal,leuven,experimentally,interoperability,hideout,perak,specifying,knighthood,vasily,excerpt,computerized,niels,networked,byzantium,reaffirmed,geographer,obscured,fraternities,mixtures,allusion,accra,lengthened,inquest,panhandle,pigments,revolts,bluetooth,conjugate,overtaken,foray,coils,breech,streaks,impressionist,mendelssohn,intermediary,panned,suggestive,nevis,upazila,rotunda,mersey,linnaeus,anecdotes,gorbachev,viennese,exhaustive,moldavia,arcades,irrespective,orator,diminishing,predictive,cohesion,polarized,montage,avian,alienation,conus,jaffna,urbanization,seawater,extremity,editorials,scrolling,dreyfus,traverses,topographic,gunboats,extratropical,normans,correspondents,recognises,millennia,filtration,ammonium,voicing,complied,prefixes,diplomas,figurines,weakly,gated,oscillator,lucerne,embroidered,outpatient,airframe,fractional,disobedience,quarterbacks,formula_21,shinto,chiapas,epistle,leakage,pacifist,avignon,penrith,renders,mantua,screenplays,gustaf,tesco,alphabetically,rations,discharges,headland,tapestry,manipur,boolean,mediator,ebenezer,subchannel,fable,bestselling,ateneo,trademarks,recurrence,dwarfs,britannica,signifying,vikram,mediate,condensation,censuses,verbandsgemeinde,cartesian,sprang,surat,britons,chelmsford,courtenay,statistic,retina,abortions,liabilities,closures,mississauga,skyscrapers,saginaw,compounded,aristocrat,msnbc,stavanger,septa,interpretive,hinder,visibly,seeding,shutouts,irregularly,quebecois,footbridge,hydroxide,implicitly,lieutenants,simplex,persuades,midshipman,heterogeneous,officiated,crackdown,lends,tartu,altars,fractions,dissidents,tapered,modernisation,scripting,blazon,aquaculture,thermodynamics,sistan,hasidic,bellator,pavia,propagated,theorized,bedouin,transnational,mekong,chronicled,declarations,kickstarter,quotas,runtime,duquesne,broadened,clarendon,brownsville,saturation,tatars,electorates,malayan,replicated,observable,amphitheater,endorsements,referral,allentown,mormons,pantomime,eliminates,typeface,allegorical,varna,conduction,evoke,interviewer,subordinated,uyghur,landscaped,conventionally,ascend,edifice,postulated,hanja,whitewater,embarking,musicologist,tagalog,frontage,paratroopers,hydrocarbons,transliterated,nicolae,viewpoints,surrealist,asheville,falklands,hacienda,glide,opting,zimbabwean,discal,mortgages,nicaraguan,yadav,ghosh,abstracted,castilian,compositional,cartilage,intergovernmental,forfeited,importation,rapping,artes,republika,narayana,condominium,frisian,bradman,duality,marche,extremist,phosphorylation,genomes,allusions,valencian,habeas,ironworks,multiplex,harpsichord,emigrate,alternated,breda,waffen,smartphones,familiarity,regionalliga,herbaceous,piping,dilapidated,carboniferous,xviii,critiques,carcinoma,sagar,chippewa,postmodern,neapolitan,excludes,notoriously,distillation,tungsten,richness,installments,monoxide,chand,privatisation,molded,maths,projectiles,luoyang,epirus,lemma,concentric,incline,erroneous,sideline,gazetted,leopards,fibres,renovate,corrugated,unilateral,repatriation,orchestration,saeed,rockingham,loughborough,formula_22,bandleader,appellation,openness,nanotechnology,massively,tonnage,dunfermline,exposes,moored,ridership,motte,eurobasket,majoring,feats,silla,laterally,playlist,downwards,methodologies,eastbourne,daimyo,cellulose,leyton,norwalk,oblong,hibernian,opaque,insular,allegory,camogie,inactivation,favoring,masterpieces,rinpoche,serotonin,portrayals,waverley,airliner,longford,minimalist,outsourcing,excise,meyrick,qasim,organisational,synaptic,farmington,gorges,scunthorpe,zoned,tohoku,librarians,davao,decor,theatrically,brentwood,pomona,acquires,planter,capacitors,synchronous,skateboarding,coatings,turbocharged,ephraim,capitulation,scoreboard,hebrides,ensues,cereals,ailing,counterpoint,duplication,antisemitic,clique,aichi,oppressive,transcendental,incursions,rename,renumbering,powys,vestry,bitterly,neurology,supplanted,affine,susceptibility,orbiter,activating,overlaps,ecoregion,raman,canoer,darfur,microorganisms,precipitated,protruding,torun,anthropologists,rennes,kangaroos,parliamentarians,edits,littoral,archived,begum,rensselaer,microphones,ypres,empower,etruscan,wisden,montfort,calibration,isomorphic,rioting,kingship,verbally,smyrna,cohesive,canyons,fredericksburg,rahul,relativistic,micropolitan,maroons,industrialized,henchmen,uplift,earthworks,mahdi,disparity,cultured,transliteration,spiny,fragmentary,extinguished,atypical,inventors,biosynthesis,heralded,curacao,anomalies,aeroplane,surya,mangalore,maastricht,ashkenazi,fusiliers,hangzhou,emitting,monmouthshire,schwarzenegger,ramayana,peptides,thiruvananthapuram,alkali,coimbra,budding,reasoned,epithelial,harbors,rudimentary,classically,parque,ealing,crusades,rotations,riparian,pygmy,inertia,revolted,microprocessor,calendars,solvents,kriegsmarine,accademia,cheshmeh,yoruba,ardabil,mitra,genomic,notables,propagate,narrates,univision,outposts,polio,birkenhead,urinary,crocodiles,pectoral,barrymore,deadliest,rupees,chaim,protons,comical,astrophysics,unifying,formula_23,vassals,cortical,audubon,pedals,tenders,resorted,geophysical,lenders,recognising,tackling,lanarkshire,doctrinal,annan,combating,guangxi,estimating,selectors,tribunals,chambered,inhabiting,exemptions,curtailed,abbasid,kandahar,boron,bissau,150th,codenamed,wearer,whorl,adhered,subversive,famer,smelting,inserting,mogadishu,zoologist,mosul,stumps,almanac,olympiacos,stamens,participatory,cults,honeycomb,geologists,dividend,recursive,skiers,reprint,pandemic,liber,percentages,adversely,stoppage,chieftains,tubingen,southerly,overcrowding,unorganized,hangars,fulfil,hails,cantilever,woodbridge,pinus,wiesbaden,fertilization,fluorescence,enhances,plenary,troublesome,episodic,thrissur,kickboxing,allele,staffing,garda,televisions,philatelic,spacetime,bullpen,oxides,leninist,enrolling,inventive,truro,compatriot,ruskin,normative,assay,gotha,murad,illawarra,gendarmerie,strasse,mazraeh,rebounded,fanfare,liaoning,rembrandt,iranians,emirate,governs,latency,waterfowl,chairmen,katowice,aristocrats,eclipsed,sentient,sonatas,interplay,sacking,decepticons,dynamical,arbitrarily,resonant,petar,velocities,alludes,wastes,prefectures,belleville,sensibility,salvadoran,consolidating,medicaid,trainees,vivekananda,molar,porous,upload,youngster,infused,doctorates,wuhan,annihilation,enthusiastically,gamespot,kanpur,accumulating,monorail,operetta,tiling,sapporo,finns,calvinist,hydrocarbon,sparrows,orienteering,cornelis,minster,vuelta,plebiscite,embraces,panchayats,focussed,remediation,brahman,olfactory,reestablished,uniqueness,northumbria,rwandan,predominately,abode,ghats,balances,californian,uptake,bruges,inert,westerns,reprints,cairn,yarra,resurfaced,audible,rossini,regensburg,italiana,fleshy,irrigated,alerts,yahya,varanasi,marginalized,expatriates,cantonment,normandie,sahitya,directives,rounder,hulls,fictionalized,constables,inserts,hipped,potosi,navies,biologists,canteen,husbandry,augment,fortnight,assamese,kampala,o'keefe,paleolithic,bluish,promontory,consecutively,striving,niall,reuniting,dipole,friendlies,disapproved,thrived,netflix,liberian,dielectric,medway,strategist,sankt,pickups,hitters,encode,rerouted,claimants,anglesey,partitioned,cavan,flutes,reared,repainted,armaments,bowed,thoracic,balliol,piero,chaplains,dehestan,sender,junkers,sindhi,sickle,dividends,metallurgy,honorific,berths,namco,springboard,resettled,gansu,copyrighted,criticizes,utopian,bendigo,ovarian,binomial,spaceflight,oratorio,proprietors,supergroup,duplicated,foreground,strongholds,revolved,optimize,layouts,westland,hurler,anthropomorphic,excelsior,merchandising,reeds,vetoed,cryptography,hollyoaks,monash,flooring,ionian,resilience,johnstown,resolves,lawmakers,alegre,wildcards,intolerance,subculture,selector,slums,formulate,bayonet,istvan,restitution,interchangeably,awakens,rostock,serpentine,oscillation,reichstag,phenotype,recessed,piotr,annotated,preparedness,consultations,clausura,preferential,euthanasia,genoese,outcrops,freemasonry,geometrical,genesee,islets,prometheus,panamanian,thunderbolt,terraced,stara,shipwrecks,futebol,faroese,sharqi,aldermen,zeitung,unify,formula_24,humanism,syntactic,earthen,blyth,taxed,rescinded,suleiman,cymru,dwindled,vitality,superieure,resupply,adolphe,ardennes,rajiv,profiling,olympique,gestation,interfaith,milosevic,tagline,funerary,druze,silvery,plough,shrubland,relaunch,disband,nunatak,minimizing,excessively,waned,attaching,luminosity,bugle,encampment,electrostatic,minesweeper,dubrovnik,rufous,greenock,hochschule,assyrians,extracting,malnutrition,priya,attainment,anhui,connotations,predicate,seabirds,deduced,pseudonyms,gopal,plovdiv,refineries,imitated,kwazulu,terracotta,tenets,discourses,brandeis,whigs,dominions,pulmonate,landslides,tutors,determinant,richelieu,farmstead,tubercles,technicolor,hegel,redundancy,greenpeace,shortening,mules,distilled,xxiii,fundamentalist,acrylic,outbuildings,lighted,corals,signaled,transistors,cavite,austerity,76ers,exposures,dionysius,outlining,commutative,permissible,knowledgeable,howrah,assemblage,inhibited,crewmen,mbit/s,pyramidal,aberdeenshire,bering,rotates,atheism,howitzer,saone,lancet,fermented,contradicted,materiel,ofsted,numeric,uniformity,josephus,nazarene,kuwaiti,noblemen,pediment,emergent,campaigner,akademi,murcia,perugia,gallen,allsvenskan,finned,cavities,matriculation,rosters,twickenham,signatory,propel,readable,contends,artisan,flamboyant,reggio,italo,fumbles,widescreen,rectangle,centimetres,collaborates,envoys,rijeka,phonological,thinly,refractive,civilisation,reductase,cognate,dalhousie,monticello,lighthouses,jitsu,luneburg,socialite,fermi,collectible,optioned,marquee,jokingly,architecturally,kabir,concubine,nationalisation,watercolor,wicklow,acharya,pooja,leibniz,rajendra,nationalized,stalemate,bloggers,glutamate,uplands,shivaji,carolingian,bucuresti,dasht,reappears,muscat,functionally,formulations,hinged,hainan,catechism,autosomal,incremental,asahi,coeur,diversification,multilateral,fewest,recombination,finisher,harrogate,hangul,feasts,photovoltaic,paget,liquidity,alluded,incubation,applauded,choruses,malagasy,hispanics,bequest,underparts,cassava,kazimierz,gastric,eradication,mowtowr,tyrosine,archbishopric,e9e9e9,unproductive,uxbridge,hydrolysis,harbours,officio,deterministic,devonport,kanagawa,breaches,freetown,rhinoceros,chandigarh,janos,sanatorium,liberator,inequalities,agonist,hydrophobic,constructors,nagorno,snowboarding,welcomes,subscribed,iloilo,resuming,catalysts,stallions,jawaharlal,harriers,definitively,roughriders,hertford,inhibiting,elgar,randomized,incumbents,episcopate,rainforests,yangon,improperly,kemal,interpreters,diverged,uttarakhand,umayyad,phnom,panathinaikos,shabbat,diode,jiangxi,forbidding,nozzle,artistry,licensee,processions,staffs,decimated,expressionism,shingle,palsy,ontology,mahayana,maribor,sunil,hostels,edwardian,jetty,freehold,overthrew,eukaryotic,schuylkill,rawalpindi,sheath,recessive,ferenc,mandibles,berlusconi,confessor,convergent,ababa,slugging,rentals,sephardic,equivalently,collagen,markov,dynamically,hailing,depressions,sprawling,fairgrounds,indistinguishable,plutarch,pressurized,banff,coldest,braunschweig,mackintosh,sociedad,wittgenstein,tromso,airbase,lecturers,subtitle,attaches,purified,contemplated,dreamworks,telephony,prophetic,rockland,aylesbury,biscay,coherence,aleksandar,judoka,pageants,theses,homelessness,luthor,sitcoms,hinterland,fifths,derwent,privateers,enigmatic,nationalistic,instructs,superimposed,conformation,tricycle,dusan,attributable,unbeknownst,laptops,etching,archbishops,ayatollah,cranial,gharbi,interprets,lackawanna,abingdon,saltwater,tories,lender,minaj,ancillary,ranching,pembrokeshire,topographical,plagiarism,murong,marque,chameleon,assertions,infiltrated,guildhall,reverence,schenectady,formula_25,kollam,notary,mexicana,initiates,abdication,basra,theorems,ionization,dismantling,eared,censors,budgetary,numeral,verlag,excommunicated,distinguishable,quarried,cagliari,hindustan,symbolizing,watertown,descartes,relayed,enclosures,militarily,sault,devolved,dalian,djokovic,filaments,staunton,tumour,curia,villainous,decentralized,galapagos,moncton,quartets,onscreen,necropolis,brasileiro,multipurpose,alamos,comarca,jorgen,concise,mercia,saitama,billiards,entomologist,montserrat,lindbergh,commuting,lethbridge,phoenician,deviations,anaerobic,denouncing,redoubt,fachhochschule,principalities,negros,announcers,seconded,parrots,konami,revivals,approving,devotee,riyadh,overtook,morecambe,lichen,expressionist,waterline,silverstone,geffen,sternites,aspiration,behavioural,grenville,tripura,mediums,genders,pyotr,charlottesville,sacraments,programmable,ps100,shackleton,garonne,sumerian,surpass,authorizing,interlocking,lagoons,voiceless,advert,steeple,boycotted,alouettes,yosef,oxidative,sassanid,benefiting,sayyid,nauru,predetermined,idealism,maxillary,polymerization,semesters,munchen,conor,outfitted,clapham,progenitor,gheorghe,observational,recognitions,numerically,colonized,hazrat,indore,contaminants,fatality,eradicate,assyria,convocation,cameos,skillful,skoda,corfu,confucius,overtly,ramadan,wollongong,placements,d.c..,permutation,contemporaneous,voltages,elegans,universitat,samar,plunder,dwindling,neuter,antonin,sinhala,campania,solidified,stanzas,fibrous,marburg,modernize,sorcery,deutscher,florets,thakur,disruptive,infielder,disintegration,internazionale,vicariate,effigy,tripartite,corrective,klamath,environs,leavenworth,sandhurst,workmen,compagnie,hoseynabad,strabo,palisades,ordovician,sigurd,grandsons,defection,viacom,sinhalese,innovator,uncontrolled,slavonic,indexes,refrigeration,aircrew,superbike,resumption,neustadt,confrontations,arras,hindenburg,ripon,embedding,isomorphism,dwarves,matchup,unison,lofty,argos,louth,constitutionally,transitive,newington,facelift,degeneration,perceptual,aviators,enclosing,igneous,symbolically,academician,constitutionality,iso/iec,sacrificial,maturation,apprentices,enzymology,naturalistic,hajji,arthropods,abbess,vistula,scuttled,gradients,pentathlon,etudes,freedmen,melaleuca,thrice,conductive,sackville,franciscans,stricter,golds,kites,worshiped,monsignor,trios,orally,tiered,primacy,bodywork,castleford,epidemics,alveolar,chapelle,chemists,hillsboro,soulful,warlords,ngati,huguenot,diurnal,remarking,luger,motorways,gauss,jahan,cutoff,proximal,bandai,catchphrase,jonubi,ossetia,codename,codice_2,throated,itinerant,chechnya,riverfront,leela,evoked,entailed,zamboanga,rejoining,circuitry,haymarket,khartoum,feuds,braced,miyazaki,mirren,lubusz,caricature,buttresses,attrition,characterizes,widnes,evanston,materialism,contradictions,marist,midrash,gainsborough,ulithi,turkmen,vidya,escuela,patrician,inspirations,reagent,premierships,humanistic,euphrates,transitioning,belfry,zedong,adaption,kaliningrad,lobos,epics,waiver,coniferous,polydor,inductee,refitted,moraine,unsatisfactory,worsening,polygamy,rajya,nested,subgenre,broadside,stampeders,lingua,incheon,pretender,peloton,persuading,excitation,multan,predates,tonne,brackish,autoimmune,insulated,podcasts,iraqis,bodybuilding,condominiums,midlothian,delft,debtor,asymmetrical,lycaenidae,forcefully,pathogenic,tamaulipas,andaman,intravenous,advancements,senegalese,chronologically,realigned,inquirer,eusebius,dekalb,additives,shortlist,goldwater,hindustani,auditing,caterpillars,pesticide,nakhon,ingestion,lansdowne,traditionalist,northland,thunderbirds,josip,nominating,locale,ventricular,animators,verandah,epistles,surveyors,anthems,dredd,upheaval,passaic,anatolian,svalbard,associative,floodplain,taranaki,estuaries,irreducible,beginners,hammerstein,allocate,coursework,secreted,counteract,handwritten,foundational,passover,discoverer,decoding,wares,bourgeoisie,playgrounds,nazionale,abbreviations,seanad,golan,mishra,godavari,rebranding,attendances,backstory,interrupts,lettered,hasbro,ultralight,hormozgan,armee,moderne,subdue,disuse,improvisational,enrolment,persists,moderated,carinthia,hatchback,inhibitory,capitalized,anatoly,abstracts,albemarle,bergamo,insolvency,sentai,cellars,walloon,joked,kashmiri,dirac,materialized,renomination,homologous,gusts,eighteens,centrifugal,storied,baluchestan,formula_26,poincare,vettel,infuriated,gauges,streetcars,vedanta,stately,liquidated,goguryeo,swifts,accountancy,levee,acadian,hydropower,eustace,comintern,allotment,designating,torsion,molding,irritation,aerobic,halen,concerted,plantings,garrisoned,gramophone,cytoplasm,onslaught,requisitioned,relieving,genitive,centrist,jeong,espanola,dissolving,chatterjee,sparking,connaught,varese,arjuna,carpathian,empowering,meteorologist,decathlon,opioid,hohenzollern,fenced,ibiza,avionics,footscray,scrum,discounts,filament,directories,a.f.c,stiffness,quaternary,adventurers,transmits,harmonious,taizong,radiating,germantown,ejection,projectors,gaseous,nahuatl,vidyalaya,nightlife,redefined,refuted,destitute,arista,potters,disseminated,distanced,jamboree,kaohsiung,tilted,lakeshore,grained,inflicting,kreis,novelists,descendents,mezzanine,recast,fatah,deregulation,ac/dc,australis,kohgiluyeh,boreal,goths,authoring,intoxicated,nonpartisan,theodosius,pyongyang,shree,boyhood,sanfl,plenipotentiary,photosynthesis,presidium,sinaloa,honshu,texan,avenida,transmembrane,malays,acropolis,catalunya,vases,inconsistencies,methodists,quell,suisse,banat,simcoe,cercle,zealanders,discredited,equine,sages,parthian,fascists,interpolation,classifying,spinoff,yehuda,cruised,gypsum,foaled,wallachia,saraswati,imperialist,seabed,footnotes,nakajima,locales,schoolmaster,drosophila,bridgehead,immanuel,courtier,bookseller,niccolo,stylistically,portmanteau,superleague,konkani,millimetres,arboreal,thanjavur,emulation,sounders,decompression,commoners,infusion,methodological,osage,rococo,anchoring,bayreuth,formula_27,abstracting,symbolized,bayonne,electrolyte,rowed,corvettes,traversing,editorship,sampler,presidio,curzon,adirondack,swahili,rearing,bladed,lemur,pashtun,behaviours,bottling,zaire,recognisable,systematics,leeward,formulae,subdistricts,smithfield,vijaya,buoyancy,boosting,cantonal,rishi,airflow,kamakura,adana,emblems,aquifer,clustering,husayn,woolly,wineries,montessori,turntable,exponentially,caverns,espoused,pianists,vorpommern,vicenza,latterly,o'rourke,williamstown,generale,kosice,duisburg,poirot,marshy,mismanagement,mandalay,dagenham,universes,chiral,radiated,stewards,vegan,crankshaft,kyrgyz,amphibian,cymbals,infrequently,offenbach,environmentalist,repatriated,permutations,midshipmen,loudoun,refereed,bamberg,ornamented,nitric,selim,translational,dorsum,annunciation,gippsland,reflector,informational,regia,reactionary,ahmet,weathering,erlewine,legalized,berne,occupant,divas,manifests,analyzes,disproportionate,mitochondria,totalitarian,paulista,interscope,anarcho,correlate,brookfield,elongate,brunel,ordinal,precincts,volatility,equaliser,hittite,somaliland,ticketing,monochrome,ubuntu,chhattisgarh,titleholder,ranches,referendums,blooms,accommodates,merthyr,religiously,ryukyu,tumultuous,checkpoints,anode,mi'kmaq,cannonball,punctuation,remodelled,assassinations,criminology,alternates,yonge,pixar,namibian,piraeus,trondelag,hautes,lifeboats,shoal,atelier,vehemently,sadat,postcode,jainism,lycoming,undisturbed,lutherans,genomics,popmatters,tabriz,isthmian,notched,autistic,horsham,mites,conseil,bloomsbury,seung,cybertron,idris,overhauled,disbandment,idealized,goldfields,worshippers,lobbyist,ailments,paganism,herbarium,athenians,messerschmitt,faraday,entangled,'olya,untreated,criticising,howitzers,parvati,lobed,debussy,atonement,tadeusz,permeability,mueang,sepals,degli,optionally,fuelled,follies,asterisk,pristina,lewiston,congested,overpass,affixed,pleads,telecasts,stanislaus,cryptographic,friesland,hamstring,selkirk,antisubmarine,inundated,overlay,aggregates,fleur,trolleybus,sagan,ibsen,inductees,beltway,tiled,ladders,cadbury,laplace,ascetic,micronesia,conveying,bellingham,cleft,batches,usaid,conjugation,macedon,assisi,reappointed,brine,jinnah,prairies,screenwriting,oxidized,despatches,linearly,fertilizers,brazilians,absorbs,wagga,modernised,scorsese,ashraf,charlestown,esque,habitable,nizhny,lettres,tuscaloosa,esplanade,coalitions,carbohydrates,legate,vermilion,standardised,galleria,psychoanalytic,rearrangement,substation,competency,nationalised,reshuffle,reconstructions,mehdi,bougainville,receivership,contraception,enlistment,conducive,aberystwyth,solicitors,dismisses,fibrosis,montclair,homeowner,surrealism,s.h.i.e.l.d,peregrine,compilers,1790s,parentage,palmas,rzeszow,worldview,eased,svenska,housemate,bundestag,originator,enlisting,outwards,reciprocity,formula_28,carbohydrate,democratically,firefighting,romagna,acknowledgement,khomeini,carbide,quests,vedas,characteristically,guwahati,brixton,unintended,brothels,parietal,namur,sherbrooke,moldavian,baruch,milieu,undulating,laurier,entre,dijon,ethylene,abilene,heracles,paralleling,ceres,dundalk,falun,auspicious,chisinau,polarity,foreclosure,templates,ojibwe,punic,eriksson,biden,bachchan,glaciation,spitfires,norsk,nonviolent,heidegger,algonquin,capacitance,cassettes,balconies,alleles,airdate,conveys,replays,classifies,infrequent,amine,cuttings,rarer,woking,olomouc,amritsar,rockabilly,illyrian,maoist,poignant,tempore,stalinist,segmented,bandmate,mollusc,muhammed,totalled,byrds,tendered,endogenous,kottayam,aisne,oxidase,overhears,illustrators,verve,commercialization,purplish,directv,moulded,lyttelton,baptismal,captors,saracens,georgios,shorten,polity,grids,fitzwilliam,sculls,impurities,confederations,akhtar,intangible,oscillations,parabolic,harlequin,maulana,ovate,tanzanian,singularity,confiscation,qazvin,speyer,phonemes,overgrown,vicarage,gurion,undocumented,niigata,thrones,preamble,stave,interment,liiga,ataturk,aphrodite,groupe,indentured,habsburgs,caption,utilitarian,ozark,slovenes,reproductions,plasticity,serbo,dulwich,castel,barbuda,salons,feuding,lenape,wikileaks,swamy,breuning,shedding,afield,superficially,operationally,lamented,okanagan,hamadan,accolade,furthering,adolphus,fyodor,abridged,cartoonists,pinkish,suharto,cytochrome,methylation,debit,colspan=9|,refine,taoist,signalled,herding,leaved,bayan,fatherland,rampart,sequenced,negation,storyteller,occupiers,barnabas,pelicans,nadir,conscripted,railcars,prerequisite,furthered,columba,carolinas,markup,gwalior,franche,chaco,eglinton,ramparts,rangoon,metabolites,pollination,croat,televisa,holyoke,testimonial,setlist,safavid,sendai,georgians,shakespearean,galleys,regenerative,krzysztof,overtones,estado,barbary,cherbourg,obispo,sayings,composites,sainsbury,deliberation,cosmological,mahalleh,embellished,ascap,biala,pancras,calumet,grands,canvases,antigens,marianas,defenseman,approximated,seedlings,soren,stele,nuncio,immunology,testimonies,glossary,recollections,suitability,tampere,venous,cohomology,methanol,echoing,ivanovich,warmly,sterilization,imran,multiplying,whitechapel,undersea,xuanzong,tacitus,bayesian,roundhouse,correlations,rioters,molds,fiorentina,bandmates,mezzo,thani,guerilla,200th,premiums,tamils,deepwater,chimpanzees,tribesmen,selwyn,globo,turnovers,punctuated,erode,nouvelle,banbury,exponents,abolishing,helical,maimonides,endothelial,goteborg,infield,encroachment,cottonwood,mazowiecki,parable,saarbrucken,reliever,epistemology,artistes,enrich,rationing,formula_29,palmyra,subfamilies,kauai,zoran,fieldwork,arousal,creditor,friuli,celts,comoros,equated,escalation,negev,tallied,inductive,anion,netanyahu,mesoamerican,lepidoptera,aspirated,remit,westmorland,italic,crosse,vaclav,fuego,owain,balmain,venetians,ethnicities,deflected,ticino,apulia,austere,flycatcher,reprising,repressive,hauptbahnhof,subtype,ophthalmology,summarizes,eniwetok,colonisation,subspace,nymphalidae,earmarked,tempe,burnet,crests,abbots,norwegians,enlarge,ashoka,frankfort,livorno,malware,renters,singly,iliad,moresby,rookies,gustavus,affirming,alleges,legume,chekhov,studded,abdicated,suzhou,isidore,townsite,repayment,quintus,yankovic,amorphous,constructor,narrowing,industrialists,tanganyika,capitalization,connective,mughals,rarities,aerodynamics,worthing,antalya,diagnostics,shaftesbury,thracian,obstetrics,benghazi,multiplier,orbitals,livonia,roscommon,intensify,ravel,oaths,overseer,locomotion,necessities,chickasaw,strathclyde,treviso,erfurt,aortic,contemplation,accrington,markazi,predeceased,hippocampus,whitecaps,assemblyman,incursion,ethnography,extraliga,reproducing,directorship,benzene,byway,stupa,taxable,scottsdale,onondaga,favourably,countermeasures,lithuanians,thatched,deflection,tarsus,consuls,annuity,paralleled,contextual,anglian,klang,hoisted,multilingual,enacting,samaj,taoiseach,carthaginian,apologised,hydrology,entrant,seamless,inflorescences,mugabe,westerners,seminaries,wintering,penzance,mitre,sergeants,unoccupied,delimitation,discriminate,upriver,abortive,nihon,bessarabia,calcareous,buffaloes,patil,daegu,streamline,berks,chaparral,laity,conceptions,typified,kiribati,threaded,mattel,eccentricity,signified,patagonia,slavonia,certifying,adnan,astley,sedition,minimally,enumerated,nikos,goalless,walid,narendra,causa,missoula,coolant,dalek,outcrop,hybridization,schoolchildren,peasantry,afghans,confucianism,shahr,gallic,tajik,kierkegaard,sauvignon,commissar,patriarchs,tuskegee,prussians,laois,ricans,talmudic,officiating,aesthetically,baloch,antiochus,separatists,suzerainty,arafat,shading,u.s.c,chancellors,inc..,toolkit,nepenthes,erebidae,solicited,pratap,kabbalah,alchemist,caltech,darjeeling,biopic,spillway,kaiserslautern,nijmegen,bolstered,neath,pahlavi,eugenics,bureaus,retook,northfield,instantaneous,deerfield,humankind,selectivity,putative,boarders,cornhuskers,marathas,raikkonen,aliabad,mangroves,garages,gulch,karzai,poitiers,chernobyl,thane,alexios,belgrano,scion,solubility,urbanized,executable,guizhou,nucleic,tripled,equalled,harare,houseguests,potency,ghazi,repeater,overarching,regrouped,broward,ragtime,d'art,nandi,regalia,campsites,mamluk,plating,wirral,presumption,zenit,archivist,emmerdale,decepticon,carabidae,kagoshima,franconia,guarani,formalism,diagonally,submarginal,denys,walkways,punts,metrolink,hydrographic,droplets,upperside,martyred,hummingbird,antebellum,curiously,mufti,friary,chabad,czechs,shaykh,reactivity,berklee,turbonilla,tongan,sultans,woodville,unlicensed,enmity,dominicans,operculum,quarrying,watercolour,catalyzed,gatwick,'what,mesozoic,auditors,shizuoka,footballing,haldane,telemundo,appended,deducted,disseminate,o'shea,pskov,abrasive,entente,gauteng,calicut,lemurs,elasticity,suffused,scopula,staining,upholding,excesses,shostakovich,loanwords,naidu,championnat,chromatography,boasting,goaltenders,engulfed,salah,kilogram,morristown,shingles,shi'a,labourer,renditions,frantisek,jekyll,zonal,nanda,sheriffs,eigenvalues,divisione,endorsing,ushered,auvergne,cadres,repentance,freemasons,utilising,laureates,diocletian,semiconductors,o'grady,vladivostok,sarkozy,trackage,masculinity,hydroxyl,mervyn,muskets,speculations,gridiron,opportunistic,mascots,aleutian,fillies,sewerage,excommunication,borrowers,capillary,trending,sydenham,synthpop,rajah,cagayan,deportes,kedah,faure,extremism,michoacan,levski,culminates,occitan,bioinformatics,unknowingly,inciting,emulated,footpaths,piacenza,dreadnought,viceroyalty,oceanographic,scouted,combinatorial,ornithologist,cannibalism,mujahideen,independiente,cilicia,hindwing,minimized,odeon,gyorgy,rubles,purchaser,collieries,kickers,interurban,coiled,lynchburg,respondent,plzen,detractors,etchings,centering,intensification,tomography,ranjit,warblers,retelling,reinstatement,cauchy,modulus,redirected,evaluates,beginner,kalateh,perforated,manoeuvre,scrimmage,internships,megawatts,mottled,haakon,tunbridge,kalyan,summarised,sukarno,quetta,canonized,henryk,agglomeration,coahuila,diluted,chiropractic,yogyakarta,talladega,sheik,cation,halting,reprisals,sulfuric,musharraf,sympathizers,publicised,arles,lectionary,fracturing,startups,sangha,latrobe,rideau,ligaments,blockading,cremona,lichens,fabaceae,modulated,evocative,embodies,battersea,indistinct,altai,subsystem,acidity,somatic,formula_30,tariq,rationality,sortie,ashlar,pokal,cytoplasmic,valour,bangla,displacing,hijacking,spectrometry,westmeath,weill,charing,goias,revolvers,individualized,tenured,nawaz,piquet,chanted,discard,bernd,phalanx,reworking,unilaterally,subclass,yitzhak,piloting,circumvent,disregarded,semicircular,viscous,tibetans,endeavours,retaliated,cretan,vienne,workhouse,sufficiency,aurangzeb,legalization,lipids,expanse,eintracht,sanjak,megas,125th,bahraini,yakima,eukaryotes,thwart,affirmation,peloponnese,retailing,carbonyl,chairwoman,macedonians,dentate,rockaway,correctness,wealthier,metamorphic,aragonese,fermanagh,pituitary,schrodinger,evokes,spoiler,chariots,akita,genitalia,combe,confectionery,desegregation,experiential,commodores,persepolis,viejo,restorations,virtualization,hispania,printmaking,stipend,yisrael,theravada,expended,radium,tweeted,polygonal,lippe,charente,leveraged,cutaneous,fallacy,fragrant,bypasses,elaborately,rigidity,majid,majorca,kongo,plasmodium,skits,audiovisual,eerste,staircases,prompts,coulthard,northwestward,riverdale,beatrix,copyrights,prudential,communicates,mated,obscenity,asynchronous,analyse,hansa,searchlight,farnborough,patras,asquith,qarah,contours,fumbled,pasteur,redistributed,almeria,sanctuaries,jewry,israelite,clinicians,koblenz,bookshop,affective,goulburn,panelist,sikorsky,cobham,mimics,ringed,portraiture,probabilistic,girolamo,intelligible,andalusian,jalal,athenaeum,eritrean,auxiliaries,pittsburg,devolution,sangam,isolating,anglers,cronulla,annihilated,kidderminster,synthesize,popularised,theophilus,bandstand,innumerable,chagrin,retroactively,weser,multiples,birdlife,goryeo,pawnee,grosser,grappling,tactile,ahmadinejad,turboprop,erdogan,matchday,proletarian,adhering,complements,austronesian,adverts,luminaries,archeology,impressionism,conifer,sodomy,interracial,platoons,lessen,postings,pejorative,registrations,cookery,persecutions,microbes,audits,idiosyncratic,subsp,suspensions,restricts,colouring,ratify,instrumentals,nucleotides,sulla,posits,bibliotheque,diameters,oceanography,instigation,subsumed,submachine,acceptor,legation,borrows,sedge,discriminated,loaves,insurers,highgate,detectable,abandons,kilns,sportscaster,harwich,iterations,preakness,arduous,tensile,prabhu,shortwave,philologist,shareholding,vegetative,complexities,councilors,distinctively,revitalize,automaton,amassing,montreux,khanh,surabaya,nurnberg,pernambuco,cuisines,charterhouse,firsts,tercera,inhabitant,homophobia,naturalism,einar,powerplant,coruna,entertainments,whedon,rajputs,raton,democracies,arunachal,oeuvre,wallonia,jeddah,trolleybuses,evangelism,vosges,kiowa,minimise,encirclement,undertakes,emigrant,beacons,deepened,grammars,publius,preeminent,seyyed,repechage,crafting,headingley,osteopathic,lithography,hotly,bligh,inshore,betrothed,olympians,formula_31,dissociation,trivandrum,arran,petrovic,stettin,disembarked,simplification,bronzes,philo,acrobatic,jonsson,conjectured,supercharged,kanto,detects,cheeses,correlates,harmonics,lifecycle,sudamericana,reservists,decayed,elitserien,parametric,113th,dusky,hogarth,modulo,symbiotic,monopolies,discontinuation,converges,southerners,tucuman,eclipses,enclaves,emits,famicom,caricatures,artistically,levelled,mussels,erecting,mouthparts,cunard,octaves,crucible,guardia,unusable,lagrangian,droughts,ephemeral,pashto,canis,tapering,sasebo,silurian,metallurgical,outscored,evolves,reissues,sedentary,homotopy,greyhawk,reagents,inheriting,onshore,tilting,rebuffed,reusable,naturalists,basingstoke,insofar,offensives,dravidian,curators,planks,rajan,isoforms,flagstaff,preside,globular,egalitarian,linkages,biographers,goalscorers,molybdenum,centralised,nordland,jurists,ellesmere,rosberg,hideyoshi,restructure,biases,borrower,scathing,redress,tunnelling,workflow,magnates,mahendra,dissenters,plethora,transcriptions,handicrafts,keyword,xi'an,petrograd,unser,prokofiev,90deg,madan,bataan,maronite,kearny,carmarthen,termini,consulates,disallowed,rockville,bowery,fanzine,docklands,bests,prohibitions,yeltsin,selassie,naturalization,realisation,dispensary,tribeca,abdulaziz,pocahontas,stagnation,pamplona,cuneiform,propagating,subsurface,christgau,epithelium,schwerin,lynching,routledge,hanseatic,upanishad,glebe,yugoslavian,complicity,endowments,girona,mynetworktv,entomology,plinth,ba'ath,supercup,torus,akkadian,salted,englewood,commandery,belgaum,prefixed,colorless,dartford,enthroned,caesarea,nominative,sandown,safeguards,hulled,formula_32,leamington,dieppe,spearhead,generalizations,demarcation,llanelli,masque,brickwork,recounting,sufism,strikingly,petrochemical,onslow,monologues,emigrating,anderlecht,sturt,hossein,sakhalin,subduction,novices,deptford,zanjan,airstrikes,coalfield,reintroduction,timbaland,hornby,messianic,stinging,universalist,situational,radiocarbon,strongman,rowling,saloons,traffickers,overran,fribourg,cambrai,gravesend,discretionary,finitely,archetype,assessor,pilipinas,exhumed,invocation,interacted,digitized,timisoara,smelter,teton,sexism,precepts,srinagar,pilsudski,carmelite,hanau,scoreline,hernando,trekking,blogging,fanbase,wielded,vesicles,nationalization,banja,rafts,motoring,luang,takeda,girder,stimulates,histone,sunda,nanoparticles,attains,jumpers,catalogued,alluding,pontus,ancients,examiners,shinkansen,ribbentrop,reimbursement,pharmacological,ramat,stringed,imposes,cheaply,transplanted,taiping,mizoram,looms,wallabies,sideman,kootenay,encased,sportsnet,revolutionized,tangier,benthic,runic,pakistanis,heatseekers,shyam,mishnah,presbyterians,stadt,sutras,straddles,zoroastrian,infer,fueling,gymnasts,ofcom,gunfight,journeyman,tracklist,oshawa,ps500,pa'in,mackinac,xiongnu,mississippian,breckinridge,freemason,bight,autoroute,liberalization,distantly,thrillers,solomons,presumptive,romanization,anecdotal,bohemians,unpaved,milder,concurred,spinners,alphabets,strenuous,rivieres,kerrang,mistreatment,dismounted,intensively,carlist,dancehall,shunting,pluralism,trafficked,brokered,bonaventure,bromide,neckar,designates,malian,reverses,sotheby,sorghum,serine,environmentalists,languedoc,consulship,metering,bankstown,handlers,militiamen,conforming,regularity,pondicherry,armin,capsized,consejo,capitalists,drogheda,granular,purged,acadians,endocrine,intramural,elicit,terns,orientations,miklos,omitting,apocryphal,slapstick,brecon,pliocene,affords,typography,emigre,tsarist,tomasz,beset,nishi,necessitating,encyclical,roleplaying,journeyed,inflow,sprints,progressives,novosibirsk,cameroonian,ephesus,speckled,kinshasa,freiherr,burnaby,dalmatian,torrential,rigor,renegades,bhakti,nurburgring,cosimo,convincingly,reverting,visayas,lewisham,charlottetown,charadriiformesfamily,transferable,jodhpur,converters,deepening,camshaft,underdeveloped,protease,polonia,uterine,quantify,tobruk,dealerships,narasimha,fortran,inactivity,1780s,victors,categorised,naxos,workstation,skink,sardinian,chalice,precede,dammed,sondheim,phineas,tutored,sourcing,uncompromising,placer,tyneside,courtiers,proclaims,pharmacies,hyogo,booksellers,sengoku,kursk,spectrometer,countywide,wielkopolski,bobsleigh,shetty,llywelyn,consistory,heretics,guinean,cliches,individualism,monolithic,imams,usability,bursa,deliberations,railings,torchwood,inconsistency,balearic,stabilizer,demonstrator,facet,radioactivity,outboard,educates,d'oyly,heretical,handover,jurisdictional,shockwave,hispaniola,conceptually,routers,unaffiliated,trentino,formula_33,cypriots,intervenes,neuchatel,formulating,maggiore,delisted,alcohols,thessaly,potable,estimator,suborder,fluency,mimicry,clergymen,infrastructures,rivals.com,baroda,subplot,majlis,plano,clinching,connotation,carinae,savile,intercultural,transcriptional,sandstones,ailerons,annotations,impresario,heinkel,scriptural,intermodal,astrological,ribbed,northeastward,posited,boers,utilise,kalmar,phylum,breakwater,skype,textured,guideline,azeri,rimini,massed,subsidence,anomalous,wolfsburg,polyphonic,accrediting,vodacom,kirov,captaining,kelantan,logie,fervent,eamon,taper,bundeswehr,disproportionately,divination,slobodan,pundits,hispano,kinetics,reunites,makati,ceasing,statistician,amending,chiltern,eparchy,riverine,melanoma,narragansett,pagans,raged,toppled,breaching,zadar,holby,dacian,ochre,velodrome,disparities,amphoe,sedans,webpage,williamsport,lachlan,groton,baring,swastika,heliport,unwillingness,razorbacks,exhibitors,foodstuffs,impacting,tithe,appendages,dermot,subtypes,nurseries,balinese,simulating,stary,remakes,mundi,chautauqua,geologically,stockade,hakka,dilute,kalimantan,pahang,overlapped,fredericton,baha'u'llah,jahangir,damping,benefactors,shomali,triumphal,cieszyn,paradigms,shielded,reggaeton,maharishi,zambian,shearing,golestan,mirroring,partitioning,flyover,songbook,incandescent,merrimack,huguenots,sangeet,vulnerabilities,trademarked,drydock,tantric,honoris,queenstown,labelling,iterative,enlists,statesmen,anglicans,herge,qinghai,burgundian,islami,delineated,zhuge,aggregated,banknote,qatari,suitably,tapestries,asymptotic,charleroi,majorities,pyramidellidae,leanings,climactic,tahir,ramsar,suppressor,revisionist,trawler,ernakulam,penicillium,categorization,slits,entitlement,collegium,earths,benefice,pinochet,puritans,loudspeaker,stockhausen,eurocup,roskilde,alois,jaroslav,rhondda,boutiques,vigor,neurotransmitter,ansar,malden,ferdinando,sported,relented,intercession,camberwell,wettest,thunderbolts,positional,oriel,cloverleaf,penalized,shoshone,rajkumar,completeness,sharjah,chromosomal,belgians,woolen,ultrasonic,sequentially,boleyn,mordella,microsystems,initiator,elachista,mineralogy,rhododendron,integrals,compostela,hamza,sawmills,stadio,berlioz,maidens,stonework,yachting,tappeh,myocardial,laborer,workstations,costumed,nicaea,lanark,roundtable,mashhad,nablus,algonquian,stuyvesant,sarkar,heroines,diwan,laments,intonation,intrigues,almaty,feuded,grandes,algarve,rehabilitate,macrophages,cruciate,dismayed,heuristic,eliezer,kozhikode,covalent,finalised,dimorphism,yaroslavl,overtaking,leverkusen,middlebury,feeders,brookings,speculates,insoluble,lodgings,jozsef,cysteine,shenyang,habilitation,spurious,brainchild,mtdna,comique,albedo,recife,partick,broadening,shahi,orientated,himalaya,swabia,palme,mennonites,spokeswoman,conscripts,sepulchre,chartres,eurozone,scaffold,invertebrate,parishad,bagan,heian,watercolors,basse,supercomputer,commences,tarragona,plainfield,arthurian,functor,identically,murex,chronicling,pressings,burrowing,histoire,guayaquil,goalkeeping,differentiable,warburg,machining,aeneas,kanawha,holocene,ramesses,reprisal,qingdao,avatars,turkestan,cantatas,besieging,repudiated,teamsters,equipping,hydride,ahmadiyya,euston,bottleneck,computations,terengganu,kalinga,stela,rediscovery,'this,azhar,stylised,karelia,polyethylene,kansai,motorised,lounges,normalization,calculators,1700s,goalkeepers,unfolded,commissary,cubism,vignettes,multiverse,heaters,briton,sparingly,childcare,thorium,plock,riksdag,eunuchs,catalysis,limassol,perce,uncensored,whitlam,ulmus,unites,mesopotamian,refraction,biodiesel,forza,fulda,unseated,mountbatten,shahrak,selenium,osijek,mimicking,antimicrobial,axons,simulcasting,donizetti,swabian,sportsmen,hafiz,neared,heraclius,locates,evaded,subcarpathian,bhubaneswar,negeri,jagannath,thaksin,aydin,oromo,lateran,goldsmiths,multiculturalism,cilia,mihai,evangelists,lorient,qajar,polygons,vinod,mechanised,anglophone,prefabricated,mosses,supervillain,airliners,biofuels,iodide,innovators,valais,wilberforce,logarithm,intelligentsia,dissipation,sanctioning,duchies,aymara,porches,simulators,mostar,telepathic,coaxial,caithness,burghs,fourths,stratification,joaquim,scribes,meteorites,monarchist,germination,vries,desiring,replenishment,istria,winemaking,tammany,troupes,hetman,lanceolate,pelagic,triptych,primeira,scant,outbound,hyphae,denser,bentham,basie,normale,executes,ladislaus,kontinental,herat,cruiserweight,activision,customization,manoeuvres,inglewood,northwood,waveform,investiture,inpatient,alignments,kiryat,rabat,archimedes,ustad,monsanto,archetypal,kirkby,sikhism,correspondingly,catskill,overlaid,petrels,widowers,unicameral,federalists,metalcore,gamerankings,mussel,formula_34,lymphocytes,cystic,southgate,vestiges,immortals,kalam,strove,amazons,pocono,sociologists,sopwith,adheres,laurens,caregivers,inspecting,transylvanian,rebroadcast,rhenish,miserables,pyrams,blois,newtonian,carapace,redshirt,gotland,nazir,unilever,distortions,linebackers,federalism,mombasa,lumen,bernoulli,favouring,aligarh,denounce,steamboats,dnieper,stratigraphic,synths,bernese,umass,icebreaker,guanajuato,heisenberg,boldly,diodes,ladakh,dogmatic,scriptwriter,maritimes,battlestar,symposia,adaptable,toluca,bhavan,nanking,ieyasu,picardy,soybean,adalbert,brompton,deutsches,brezhnev,glandular,laotian,hispanicized,ibadan,personification,dalit,yamuna,regio,dispensed,yamagata,zweibrucken,revising,fandom,stances,participle,flavours,khitan,vertebral,crores,mayaguez,dispensation,guntur,undefined,harpercollins,unionism,meena,leveling,philippa,refractory,telstra,judea,attenuation,pylons,elaboration,elegy,edging,gracillariidae,residencies,absentia,reflexive,deportations,dichotomy,stoves,sanremo,shimon,menachem,corneal,conifers,mordellidae,facsimile,diagnoses,cowper,citta,viticulture,divisive,riverview,foals,mystics,polyhedron,plazas,airspeed,redgrave,motherland,impede,multiplicity,barrichello,airships,pharmacists,harvester,clays,payloads,differentiating,popularize,caesars,tunneling,stagnant,circadian,indemnity,sensibilities,musicology,prefects,serfs,metra,lillehammer,carmarthenshire,kiosks,welland,barbican,alkyl,tillandsia,gatherers,asociacion,showings,bharati,brandywine,subversion,scalable,pfizer,dawla,barium,dardanelles,nsdap,konig,ayutthaya,hodgkin,sedimentation,completions,purchasers,sponsorships,maximizing,banked,taoism,minot,enrolls,fructose,aspired,capuchin,outages,artois,carrollton,totality,osceola,pawtucket,fontainebleau,converged,queretaro,competencies,botha,allotments,sheaf,shastri,obliquely,banding,catharines,outwardly,monchengladbach,driest,contemplative,cassini,ranga,pundit,kenilworth,tiananmen,disulfide,formula_35,townlands,codice_3,looping,caravans,rachmaninoff,segmentation,fluorine,anglicised,gnostic,dessau,discern,reconfigured,altrincham,rebounding,battlecruiser,ramblers,1770s,convective,triomphe,miyagi,mourners,instagram,aloft,breastfeeding,courtyards,folkestone,changsha,kumamoto,saarland,grayish,provisionally,appomattox,uncial,classicism,mahindra,elapsed,supremes,monophyletic,cautioned,formula_36,noblewoman,kernels,sucre,swaps,bengaluru,grenfell,epicenter,rockhampton,worshipful,licentiate,metaphorical,malankara,amputated,wattle,palawan,tankobon,nobunaga,polyhedra,transduction,jilin,syrians,affinities,fluently,emanating,anglicized,sportscar,botanists,altona,dravida,chorley,allocations,kunming,luanda,premiering,outlived,mesoamerica,lingual,dissipating,impairments,attenborough,balustrade,emulator,bakhsh,cladding,increments,ascents,workington,qal'eh,winless,categorical,petrel,emphasise,dormer,toros,hijackers,telescopic,solidly,jankovic,cession,gurus,madoff,newry,subsystems,northside,talib,englishmen,farnese,holographic,electives,argonne,scrivener,predated,brugge,nauvoo,catalyses,soared,siddeley,graphically,powerlifting,funicular,sungai,coercive,fusing,uncertainties,locos,acetic,diverge,wedgwood,dressings,tiebreaker,didactic,vyacheslav,acreage,interplanetary,battlecruisers,sunbury,alkaloids,hairpin,automata,wielkie,interdiction,plugins,monkees,nudibranch,esporte,approximations,disabling,powering,characterisation,ecologically,martinsville,termen,perpetuated,lufthansa,ascendancy,motherboard,bolshoi,athanasius,prunus,dilution,invests,nonzero,mendocino,charan,banque,shaheed,counterculture,unita,voivode,hospitalization,vapour,supermarine,resistor,steppes,osnabruck,intermediates,benzodiazepines,sunnyside,privatized,geopolitical,ponta,beersheba,kievan,embody,theoretic,sangh,cartographer,blige,rotors,thruway,battlefields,discernible,demobilized,broodmare,colouration,sagas,policymakers,serialization,augmentation,hoare,frankfurter,transnistria,kinases,detachable,generational,converging,antiaircraft,khaki,bimonthly,coadjutor,arkhangelsk,kannur,buffers,livonian,northwich,enveloped,cysts,yokozuna,herne,beeching,enron,virginian,woollen,excepting,competitively,outtakes,recombinant,hillcrest,clearances,pathe,cumbersome,brasov,u.s.a,likud,christiania,cruciform,hierarchies,wandsworth,lupin,resins,voiceover,sitar,electrochemical,mediacorp,typhus,grenadiers,hepatic,pompeii,weightlifter,bosniak,oxidoreductase,undersecretary,rescuers,ranji,seleucid,analysing,exegesis,tenancy,toure,kristiansand,110th,carillon,minesweepers,poitou,acceded,palladian,redevelop,naismith,rifled,proletariat,shojo,hackensack,harvests,endpoint,kuban,rosenborg,stonehenge,authorisation,jacobean,revocation,compatriots,colliding,undetermined,okayama,acknowledgment,angelou,fresnel,chahar,ethereal,mg/kg,emmet,mobilised,unfavourable,cultura,characterizing,parsonage,skeptics,expressways,rabaul,medea,guardsmen,visakhapatnam,caddo,homophobic,elmwood,encircling,coexistence,contending,seljuk,mycologist,infertility,moliere,insolvent,covenants,underpass,holme,landesliga,workplaces,delinquency,methamphetamine,contrived,tableau,tithes,overlying,usurped,contingents,spares,oligocene,molde,beatification,mordechai,balloting,pampanga,navigators,flowered,debutant,codec,orogeny,newsletters,solon,ambivalent,ubisoft,archdeaconry,harpers,kirkus,jabal,castings,kazhagam,sylhet,yuwen,barnstaple,amidships,causative,isuzu,watchtower,granules,canaveral,remuneration,insurer,payout,horizonte,integrative,attributing,kiwis,skanderbeg,asymmetry,gannett,urbanism,disassembled,unaltered,precluded,melodifestivalen,ascends,plugin,gurkha,bisons,stakeholder,industrialisation,abbotsford,sextet,bustling,uptempo,slavia,choreographers,midwives,haram,javed,gazetteer,subsection,natively,weighting,lysine,meera,redbridge,muchmusic,abruzzo,adjoins,unsustainable,foresters,kbit/s,cosmopterigidae,secularism,poetics,causality,phonograph,estudiantes,ceausescu,universitario,adjoint,applicability,gastropods,nagaland,kentish,mechelen,atalanta,woodpeckers,lombards,gatineau,romansh,avraham,acetylcholine,perturbation,galois,wenceslaus,fuzhou,meandering,dendritic,sacristy,accented,katha,therapeutics,perceives,unskilled,greenhouses,analogues,chaldean,timbre,sloped,volodymyr,sadiq,maghreb,monogram,rearguard,caucuses,mures,metabolite,uyezd,determinism,theosophical,corbet,gaels,disruptions,bicameral,ribosomal,wolseley,clarksville,watersheds,tarsi,radon,milanese,discontinuous,aristotelian,whistleblower,representational,hashim,modestly,localised,atrial,hazara,ravana,troyes,appointees,rubus,morningside,amity,aberdare,ganglia,wests,zbigniew,aerobatic,depopulated,corsican,introspective,twinning,hardtop,shallower,cataract,mesolithic,emblematic,graced,lubrication,republicanism,voronezh,bastions,meissen,irkutsk,oboes,hokkien,sprites,tenet,individualist,capitulated,oakville,dysentery,orientalist,hillsides,keywords,elicited,incised,lagging,apoel,lengthening,attractiveness,marauders,sportswriter,decentralization,boltzmann,contradicts,draftsman,precipitate,solihull,norske,consorts,hauptmann,riflemen,adventists,syndromes,demolishing,customize,continuo,peripherals,seamlessly,linguistically,bhushan,orphanages,paraul,lessened,devanagari,quarto,responders,patronymic,riemannian,altoona,canonization,honouring,geodetic,exemplifies,republica,enzymatic,porters,fairmount,pampa,sufferers,kamchatka,conjugated,coachella,uthman,repositories,copious,headteacher,awami,phoneme,homomorphism,franconian,moorland,davos,quantified,kamloops,quarks,mayoralty,weald,peacekeepers,valerian,particulate,insiders,perthshire,caches,guimaraes,piped,grenadines,kosciuszko,trombonist,artemisia,covariance,intertidal,soybeans,beatified,ellipse,fruiting,deafness,dnipropetrovsk,accrued,zealous,mandala,causation,junius,kilowatt,bakeries,montpelier,airdrie,rectified,bungalows,toleration,debian,pylon,trotskyist,posteriorly,two-and-a-half,herbivorous,islamists,poetical,donne,wodehouse,frome,allium,assimilate,phonemic,minaret,unprofitable,darpa,untenable,leaflet,bitcoin,zahir,thresholds,argentino,jacopo,bespoke,stratified,wellbeing,shiite,basaltic,timberwolves,secrete,taunts,marathons,isomers,carre,consecrators,penobscot,pitcairn,sakha,crosstown,inclusions,impassable,fenders,indre,uscgc,jordi,retinue,logarithmic,pilgrimages,railcar,cashel,blackrock,macroscopic,aligning,tabla,trestle,certify,ronson,palps,dissolves,thickened,silicate,taman,walsingham,hausa,lowestoft,rondo,oleksandr,cuyahoga,retardation,countering,cricketing,holborn,identifiers,hells,geophysics,infighting,sculpting,balaji,webbed,irradiation,runestone,trusses,oriya,sojourn,forfeiture,colonize,exclaimed,eucharistic,lackluster,glazing,northridge,gutenberg,stipulates,macroeconomic,priori,outermost,annular,udinese,insulating,headliner,godel,polytope,megalithic,salix,sharapova,derided,muskegon,braintree,plateaus,confers,autocratic,isomer,interstitial,stamping,omits,kirtland,hatchery,evidences,intifada,111th,podgorica,capua,motivating,nuneaton,jakub,korsakov,amitabh,mundial,monrovia,gluten,predictor,marshalling,d'orleans,levers,touchscreen,brantford,fricative,banishment,descendent,antagonism,ludovico,loudspeakers,formula_37,livelihoods,manassas,steamships,dewsbury,uppermost,humayun,lures,pinnacles,dependents,lecce,clumps,observatories,paleozoic,dedicating,samiti,draughtsman,gauls,incite,infringing,nepean,pythagorean,convents,triumvirate,seigneur,gaiman,vagrant,fossa,byproduct,serrated,renfrewshire,sheltering,achaemenid,dukedom,catchers,sampdoria,platelet,bielefeld,fluctuating,phenomenology,strikeout,ethnology,prospectors,woodworking,tatra,wildfires,meditations,agrippa,fortescue,qureshi,wojciech,methyltransferase,accusative,saatchi,amerindian,volcanism,zeeland,toyama,vladimirovich,allege,polygram,redox,budgeted,advisories,nematode,chipset,starscream,tonbridge,hardening,shales,accompanist,paraded,phonographic,whitefish,sportive,audiobook,kalisz,hibernation,latif,duels,ps200,coxeter,nayak,safeguarding,cantabria,minesweeping,zeiss,dunams,catholicos,sawtooth,ontological,nicobar,bridgend,unclassified,intrinsically,hanoverian,rabbitohs,kenseth,alcalde,northumbrian,raritan,septuagint,presse,sevres,origen,dandenong,peachtree,intersected,impeded,usages,hippodrome,novara,trajectories,customarily,yardage,inflected,yanow,kalan,taverns,liguria,librettist,intermarriage,1760s,courant,gambier,infanta,ptolemaic,ukulele,haganah,sceptical,manchukuo,plexus,implantation,hilal,intersex,efficiencies,arbroath,hagerstown,adelphi,diario,marais,matti,lifes,coining,modalities,divya,bletchley,conserving,ivorian,mithridates,generative,strikeforce,laymen,toponymy,pogrom,satya,meticulously,agios,dufferin,yaakov,fortnightly,cargoes,deterrence,prefrontal,przemysl,mitterrand,commemorations,chatsworth,gurdwara,abuja,chakraborty,badajoz,geometries,artiste,diatonic,ganglion,presides,marymount,nanak,cytokines,feudalism,storks,rowers,widens,politico,evangelicals,assailants,pittsfield,allowable,bijapur,telenovelas,dichomeris,glenelg,herbivores,keita,inked,radom,fundraisers,constantius,boheme,portability,komnenos,crystallography,derrida,moderates,tavistock,fateh,spacex,disjoint,bristles,commercialized,interwoven,empirically,regius,bulacan,newsday,showa,radicalism,yarrow,pleura,sayed,structuring,cotes,reminiscences,acetyl,edicts,escalators,aomori,encapsulated,legacies,bunbury,placings,fearsome,postscript,powerfully,keighley,hildesheim,amicus,crevices,deserters,benelux,aurangabad,freeware,ioannis,carpathians,chirac,seceded,prepaid,landlocked,naturalised,yanukovych,soundscan,blotch,phenotypic,determinants,twente,dictatorial,giessen,composes,recherche,pathophysiology,inventories,ayurveda,elevating,gravestone,degeneres,vilayet,popularizing,spartanburg,bloemfontein,previewed,renunciation,genotype,ogilvy,tracery,blacklisted,emissaries,diploid,disclosures,tupolev,shinjuku,antecedents,pennine,braganza,bhattacharya,countable,spectroscopic,ingolstadt,theseus,corroborated,compounding,thrombosis,extremadura,medallions,hasanabad,lambton,perpetuity,glycol,besancon,palaiologos,pandey,caicos,antecedent,stratum,laserdisc,novitiate,crowdfunding,palatal,sorceress,dassault,toughness,celle,cezanne,vientiane,tioga,hander,crossbar,gisborne,cursor,inspectorate,serif,praia,sphingidae,nameplate,psalter,ivanovic,sitka,equalised,mutineers,sergius,outgrowth,creationism,haredi,rhizomes,predominate,undertakings,vulgate,hydrothermal,abbeville,geodesic,kampung,physiotherapy,unauthorised,asteraceae,conservationist,minoan,supersport,mohammadabad,cranbrook,mentorship,legitimately,marshland,datuk,louvain,potawatomi,carnivores,levies,lyell,hymnal,regionals,tinto,shikoku,conformal,wanganui,beira,lleida,standstill,deloitte,formula_40,corbusier,chancellery,mixtapes,airtime,muhlenberg,formula_39,bracts,thrashers,prodigious,gironde,chickamauga,uyghurs,substitutions,pescara,batangas,gregarious,gijon,paleo,mathura,pumas,proportionally,hawkesbury,yucca,kristiania,funimation,fluted,eloquence,mohun,aftermarket,chroniclers,futurist,nonconformist,branko,mannerisms,lesnar,opengl,altos,retainers,ashfield,shelbourne,sulaiman,divisie,gwent,locarno,lieder,minkowski,bivalve,redeployed,cartography,seaway,bookings,decays,ostend,antiquaries,pathogenesis,formula_38,chrysalis,esperance,valli,motogp,homelands,bridged,bloor,ghazal,vulgaris,baekje,prospector,calculates,debtors,hesperiidae,titian,returner,landgrave,frontenac,kelowna,pregame,castelo,caius,canoeist,watercolours,winterthur,superintendents,dissonance,dubstep,adorn,matic,salih,hillel,swordsman,flavoured,emitter,assays,monongahela,deeded,brazzaville,sufferings,babylonia,fecal,umbria,astrologer,gentrification,frescos,phasing,zielona,ecozone,candido,manoj,quadrilateral,gyula,falsetto,prewar,puntland,infinitive,contraceptive,bakhtiari,ohrid,socialization,tailplane,evoking,havelock,macapagal,plundering,104th,keynesian,templars,phrasing,morphologically,czestochowa,humorously,catawba,burgas,chiswick,ellipsoid,kodansha,inwards,gautama,katanga,orthopaedic,heilongjiang,sieges,outsourced,subterminal,vijayawada,hares,oration,leitrim,ravines,manawatu,cryogenic,tracklisting,about.com,ambedkar,degenerated,hastened,venturing,lobbyists,shekhar,typefaces,northcote,rugen,'good,ornithology,asexual,hemispheres,unsupported,glyphs,spoleto,epigenetic,musicianship,donington,diogo,kangxi,bisected,polymorphism,megawatt,salta,embossed,cheetahs,cruzeiro,unhcr,aristide,rayleigh,maturing,indonesians,noire,llano,ffffff,camus,purges,annales,convair,apostasy,algol,phage,apaches,marketers,aldehyde,pompidou,kharkov,forgeries,praetorian,divested,retrospectively,gornji,scutellum,bitumen,pausanias,magnification,imitations,nyasaland,geographers,floodlights,athlone,hippolyte,expositions,clarinetist,razak,neutrinos,rotax,sheykh,plush,interconnect,andalus,cladogram,rudyard,resonator,granby,blackfriars,placido,windscreen,sahel,minamoto,haida,cations,emden,blackheath,thematically,blacklist,pawel,disseminating,academical,undamaged,raytheon,harsher,powhatan,ramachandran,saddles,paderborn,capping,zahra,prospecting,glycine,chromatin,profane,banska,helmand,okinawan,dislocation,oscillators,insectivorous,foyle,gilgit,autonomic,tuareg,sluice,pollinated,multiplexed,granary,narcissus,ranchi,staines,nitra,goalscoring,midwifery,pensioners,algorithmic,meetinghouse,biblioteca,besar,narva,angkor,predate,lohan,cyclical,detainee,occipital,eventing,faisalabad,dartmoor,kublai,courtly,resigns,radii,megachilidae,cartels,shortfall,xhosa,unregistered,benchmarks,dystopian,bulkhead,ponsonby,jovanovic,accumulates,papuan,bhutanese,intuitively,gotaland,headliners,recursion,dejan,novellas,diphthongs,imbued,withstood,analgesic,amplify,powertrain,programing,maidan,alstom,affirms,eradicated,summerslam,videogame,molla,severing,foundered,gallium,atmospheres,desalination,shmuel,howmeh,catolica,bossier,reconstructing,isolates,lyase,tweets,unconnected,tidewater,divisible,cohorts,orebro,presov,furnishing,folklorist,simplifying,centrale,notations,factorization,monarchies,deepen,macomb,facilitation,hennepin,declassified,redrawn,microprocessors,preliminaries,enlarging,timeframe,deutschen,shipbuilders,patiala,ferrous,aquariums,genealogies,vieux,unrecognized,bridgwater,tetrahedral,thule,resignations,gondwana,registries,agder,dataset,felled,parva,analyzer,worsen,coleraine,columella,blockaded,polytechnique,reassembled,reentry,narvik,greys,nigra,knockouts,bofors,gniezno,slotted,hamasaki,ferrers,conferring,thirdly,domestication,photojournalist,universality,preclude,ponting,halved,thereupon,photosynthetic,ostrava,mismatch,pangasinan,intermediaries,abolitionists,transited,headings,ustase,radiological,interconnection,dabrowa,invariants,honorius,preferentially,chantilly,marysville,dialectical,antioquia,abstained,gogol,dirichlet,muricidae,symmetries,reproduces,brazos,fatwa,bacillus,ketone,paribas,chowk,multiplicative,dermatitis,mamluks,devotes,adenosine,newbery,meditative,minefields,inflection,oxfam,conwy,bystrica,imprints,pandavas,infinitesimal,conurbation,amphetamine,reestablish,furth,edessa,injustices,frankston,serjeant,4x200,khazar,sihanouk,longchamp,stags,pogroms,coups,upperparts,endpoints,infringed,nuanced,summing,humorist,pacification,ciaran,jamaat,anteriorly,roddick,springboks,faceted,hypoxia,rigorously,cleves,fatimid,ayurvedic,tabled,ratna,senhora,maricopa,seibu,gauguin,holomorphic,campgrounds,amboy,coordinators,ponderosa,casemates,ouachita,nanaimo,mindoro,zealander,rimsky,cluny,tomaszow,meghalaya,caetano,tilak,roussillon,landtag,gravitation,dystrophy,cephalopods,trombones,glens,killarney,denominated,anthropogenic,pssas,roubaix,carcasses,montmorency,neotropical,communicative,rabindranath,ordinated,separable,overriding,surged,sagebrush,conciliation,codice_4,durrani,phosphatase,qadir,votive,revitalized,taiyuan,tyrannosaurus,graze,slovaks,nematodes,environmentalism,blockhouse,illiteracy,schengen,ecotourism,alternation,conic,wields,hounslow,blackfoot,kwame,ambulatory,volhynia,hordaland,croton,piedras,rohit,drava,conceptualized,birla,illustrative,gurgaon,barisal,tutsi,dezong,nasional,polje,chanson,clarinets,krasnoyarsk,aleksandrovich,cosmonaut,d'este,palliative,midseason,silencing,wardens,durer,girders,salamanders,torrington,supersonics,lauda,farid,circumnavigation,embankments,funnels,bajnoksag,lorries,cappadocia,jains,warringah,retirees,burgesses,equalization,cusco,ganesan,algal,amazonian,lineups,allocating,conquerors,usurper,mnemonic,predating,brahmaputra,ahmadabad,maidenhead,numismatic,subregion,encamped,reciprocating,freebsd,irgun,tortoises,governorates,zionists,airfoil,collated,ajmer,fiennes,etymological,polemic,chadian,clerestory,nordiques,fluctuated,calvados,oxidizing,trailhead,massena,quarrels,dordogne,tirunelveli,pyruvate,pulsed,athabasca,sylar,appointee,serer,japonica,andronikos,conferencing,nicolaus,chemin,ascertained,incited,woodbine,helices,hospitalised,emplacements,to/from,orchestre,tyrannical,pannonia,methodism,pop/rock,shibuya,berbers,despot,seaward,westpac,separator,perpignan,alamein,judeo,publicize,quantization,ethniki,gracilis,menlo,offside,oscillating,unregulated,succumbing,finnmark,metrical,suleyman,raith,sovereigns,bundesstrasse,kartli,fiduciary,darshan,foramen,curler,concubines,calvinism,larouche,bukhara,sophomores,mohanlal,lutheranism,monomer,eamonn,'black,uncontested,immersive,tutorials,beachhead,bindings,permeable,postulates,comite,transformative,indiscriminate,hofstra,associacao,amarna,dermatology,lapland,aosta,babur,unambiguous,formatting,schoolboys,gwangju,superconducting,replayed,adherent,aureus,compressors,forcible,spitsbergen,boulevards,budgeting,nossa,annandale,perumal,interregnum,sassoon,kwajalein,greenbrier,caldas,triangulation,flavius,increment,shakhtar,nullified,pinfall,nomen,microfinance,depreciation,cubist,steeper,splendour,gruppe,everyman,chasers,campaigners,bridle,modality,percussive,darkly,capes,velar,picton,triennial,factional,padang,toponym,betterment,norepinephrine,112th,estuarine,diemen,warehousing,morphism,ideologically,pairings,immunization,crassus,exporters,sefer,flocked,bulbous,deseret,booms,calcite,bohol,elven,groot,pulau,citigroup,wyeth,modernizing,layering,pastiche,complies,printmaker,condenser,theropod,cassino,oxyrhynchus,akademie,trainings,lowercase,coxae,parte,chetniks,pentagonal,keselowski,monocoque,morsi,reticulum,meiosis,clapboard,recoveries,tinge,an/fps,revista,sidon,livre,epidermis,conglomerates,kampong,congruent,harlequins,tergum,simplifies,epidemiological,underwriting,tcp/ip,exclusivity,multidimensional,mysql,columbine,ecologist,hayat,sicilies,levees,handset,aesop,usenet,pacquiao,archiving,alexandrian,compensatory,broadsheet,annotation,bahamian,d'affaires,interludes,phraya,shamans,marmara,customizable,immortalized,ambushes,chlorophyll,diesels,emulsion,rheumatoid,voluminous,screenwriters,tailoring,sedis,runcorn,democratization,bushehr,anacostia,constanta,antiquary,sixtus,radiate,advaita,antimony,acumen,barristers,reichsbahn,ronstadt,symbolist,pasig,cursive,secessionist,afrikaner,munnetra,inversely,adsorption,syllabic,moltke,idioms,midline,olimpico,diphosphate,cautions,radziwill,mobilisation,copelatus,trawlers,unicron,bhaskar,financiers,minimalism,derailment,marxists,oireachtas,abdicate,eigenvalue,zafar,vytautas,ganguly,chelyabinsk,telluride,subordination,ferried,dived,vendee,pictish,dimitrov,expiry,carnation,cayley,magnitudes,lismore,gretna,sandwiched,unmasked,sandomierz,swarthmore,tetra,nanyang,pevsner,dehradun,mormonism,rashi,complying,seaplanes,ningbo,cooperates,strathcona,mornington,mestizo,yulia,edgbaston,palisade,ethno,polytopes,espirito,tymoshenko,pronunciations,paradoxical,taichung,chipmunks,erhard,maximise,accretion,kanda,`abdu'l,narrowest,umpiring,mycenaean,divisor,geneticist,ceredigion,barque,hobbyists,equates,auxerre,spinose,cheil,sweetwater,guano,carboxylic,archiv,tannery,cormorant,agonists,fundacion,anbar,tunku,hindrance,meerut,concordat,secunderabad,kachin,achievable,murfreesboro,comprehensively,forges,broadest,synchronised,speciation,scapa,aliyev,conmebol,tirelessly,subjugated,pillaged,udaipur,defensively,lakhs,stateless,haasan,headlamps,patterning,podiums,polyphony,mcmurdo,mujer,vocally,storeyed,mucosa,multivariate,scopus,minimizes,formalised,certiorari,bourges,populate,overhanging,gaiety,unreserved,borromeo,woolworths,isotopic,bashar,purify,vertebra,medan,juxtaposition,earthwork,elongation,chaudhary,schematic,piast,steeped,nanotubes,fouls,achaea,legionnaires,abdur,qmjhl,embraer,hardback,centerville,ilocos,slovan,whitehorse,mauritian,moulding,mapuche,donned,provisioning,gazprom,jonesboro,audley,lightest,calyx,coldwater,trigonometric,petroglyphs,psychoanalyst,congregate,zambezi,fissure,supervises,bexley,etobicoke,wairarapa,tectonics,emphasises,formula_41,debugging,linfield,spatially,ionizing,ungulates,orinoco,clades,erlangen,news/talk,vols.,ceara,yakovlev,finsbury,entanglement,fieldhouse,graphene,intensifying,grigory,keyong,zacatecas,ninian,allgemeine,keswick,societa,snorri,femininity,najib,monoclonal,guyanese,postulate,huntly,abbeys,machinist,yunus,emphasising,ishaq,urmia,bremerton,pretenders,lumiere,thoroughfares,chikara,dramatized,metathorax,taiko,transcendence,wycliffe,retrieves,umpired,steuben,racehorses,taylors,kuznetsov,montezuma,precambrian,canopies,gaozong,propodeum,disestablished,retroactive,shoreham,rhizome,doubleheader,clinician,diwali,quartzite,shabaab,agassiz,despatched,stormwater,luxemburg,callao,universidade,courland,skane,glyph,dormers,witwatersrand,curacy,qualcomm,nansen,entablature,lauper,hausdorff,lusaka,ruthenian,360deg,cityscape,douai,vaishnava,spars,vaulting,rationalist,gygax,sequestration,typology,pollinates,accelerators,leben,colonials,cenotaph,imparted,carthaginians,equaled,rostrum,gobind,bodhisattva,oberst,bicycling,arabi,sangre,biophysics,hainaut,vernal,lunenburg,apportioned,finches,lajos,nenad,repackaged,zayed,nikephoros,r.e.m,swaminarayan,gestalt,unplaced,crags,grohl,sialkot,unsaturated,gwinnett,linemen,forays,palakkad,writs,instrumentalists,aircrews,badged,terrapins,180deg,oneness,commissariat,changi,pupation,circumscribed,contador,isotropic,administrated,fiefs,nimes,intrusions,minoru,geschichte,nadph,tainan,changchun,carbondale,frisia,swapo,evesham,hawai'i,encyclopedic,transporters,dysplasia,formula_42,onsite,jindal,guetta,judgements,narbonne,permissions,paleogene,rationalism,vilna,isometric,subtracted,chattahoochee,lamina,missa,greville,pervez,lattices,persistently,crystallization,timbered,hawaiians,fouling,interrelated,masood,ripening,stasi,gamal,visigothic,warlike,cybernetics,tanjung,forfar,cybernetic,karelian,brooklands,belfort,greifswald,campeche,inexplicably,refereeing,understory,uninterested,prius,collegiately,sefid,sarsfield,categorize,biannual,elsevier,eisteddfod,declension,autonoma,procuring,misrepresentation,novelization,bibliographic,shamanism,vestments,potash,eastleigh,ionized,turan,lavishly,scilly,balanchine,importers,parlance,'that,kanyakumari,synods,mieszko,crossovers,serfdom,conformational,legislated,exclave,heathland,sadar,differentiates,propositional,konstantinos,photoshop,manche,vellore,appalachia,orestes,taiga,exchanger,grozny,invalidated,baffin,spezia,staunchly,eisenach,robustness,virtuosity,ciphers,inlets,bolagh,understandings,bosniaks,parser,typhoons,sinan,luzerne,webcomic,subtraction,jhelum,businessweek,ceske,refrained,firebox,mitigated,helmholtz,dilip,eslamabad,metalwork,lucan,apportionment,provident,gdynia,schooners,casement,danse,hajjiabad,benazir,buttress,anthracite,newsreel,wollaston,dispatching,cadastral,riverboat,provincetown,nantwich,missal,irreverent,juxtaposed,darya,ennobled,electropop,stereoscopic,maneuverability,laban,luhansk,udine,collectibles,haulage,holyrood,materially,supercharger,gorizia,shkoder,townhouses,pilate,layoffs,folkloric,dialectic,exuberant,matures,malla,ceuta,citizenry,crewed,couplet,stopover,transposition,tradesmen,antioxidant,amines,utterance,grahame,landless,isere,diction,appellant,satirist,urbino,intertoto,subiaco,antonescu,nehemiah,ubiquitin,emcee,stourbridge,fencers,103rd,wranglers,monteverdi,watertight,expounded,xiamen,manmohan,pirie,threefold,antidepressant,sheboygan,grieg,cancerous,diverging,bernini,polychrome,fundamentalism,bihari,critiqued,cholas,villers,tendulkar,dafydd,vastra,fringed,evangelization,episcopalian,maliki,sana'a,ashburton,trianon,allegany,heptathlon,insufficiently,panelists,pharrell,hexham,amharic,fertilized,plumes,cistern,stratigraphy,akershus,catalans,karoo,rupee,minuteman,quantification,wigmore,leutnant,metanotum,weeknights,iridescent,extrasolar,brechin,deuterium,kuching,lyricism,astrakhan,brookhaven,euphorbia,hradec,bhagat,vardar,aylmer,positron,amygdala,speculators,unaccompanied,debrecen,slurry,windhoek,disaffected,rapporteur,mellitus,blockers,fronds,yatra,sportsperson,precession,physiologist,weeknight,pidgin,pharma,condemns,standardize,zetian,tibor,glycoprotein,emporia,cormorants,amalie,accesses,leonhard,denbighshire,roald,116th,will.i.am,symbiosis,privatised,meanders,chemnitz,jabalpur,shing,secede,ludvig,krajina,homegrown,snippets,sasanian,euripides,peder,cimarron,streaked,graubunden,kilimanjaro,mbeki,middleware,flensburg,bukovina,lindwall,marsalis,profited,abkhaz,polis,camouflaged,amyloid,morgantown,ovoid,bodleian,morte,quashed,gamelan,juventud,natchitoches,storyboard,freeview,enumeration,cielo,preludes,bulawayo,1600s,olympiads,multicast,faunal,asura,reinforces,puranas,ziegfeld,handicraft,seamount,kheil,noche,hallmarks,dermal,colorectal,encircle,hessen,umbilicus,sunnis,leste,unwin,disclosing,superfund,montmartre,refuelling,subprime,kolhapur,etiology,bismuth,laissez,vibrational,mazar,alcoa,rumsfeld,recurve,ticonderoga,lionsgate,onlookers,homesteads,filesystem,barometric,kingswood,biofuel,belleza,moshav,occidentalis,asymptomatic,northeasterly,leveson,huygens,numan,kingsway,primogeniture,toyotomi,yazoo,limpets,greenbelt,booed,concurrence,dihedral,ventrites,raipur,sibiu,plotters,kitab,109th,trackbed,skilful,berthed,effendi,fairing,sephardi,mikhailovich,lockyer,wadham,invertible,paperbacks,alphabetic,deuteronomy,constitutive,leathery,greyhounds,estoril,beechcraft,poblacion,cossidae,excreted,flamingos,singha,olmec,neurotransmitters,ascoli,nkrumah,forerunners,dualism,disenchanted,benefitted,centrum,undesignated,noida,o'donoghue,collages,egrets,egmont,wuppertal,cleave,montgomerie,pseudomonas,srinivasa,lymphatic,stadia,resold,minima,evacuees,consumerism,ronde,biochemist,automorphism,hollows,smuts,improvisations,vespasian,bream,pimlico,eglin,colne,melancholic,berhad,ousting,saale,notaulices,ouest,hunslet,tiberias,abdomina,ramsgate,stanislas,donbass,pontefract,sucrose,halts,drammen,chelm,l'arc,taming,trolleys,konin,incertae,licensees,scythian,giorgos,dative,tanglewood,farmlands,o'keeffe,caesium,romsdal,amstrad,corte,oglethorpe,huntingdonshire,magnetization,adapts,zamosc,shooto,cuttack,centrepiece,storehouse,winehouse,morbidity,woodcuts,ryazan,buddleja,buoyant,bodmin,estero,austral,verifiable,periyar,christendom,curtail,shura,kaifeng,cotswold,invariance,seafaring,gorica,androgen,usman,seabird,forecourt,pekka,juridical,audacious,yasser,cacti,qianlong,polemical,d'amore,espanyol,distrito,cartographers,pacifism,serpents,backa,nucleophilic,overturning,duplicates,marksman,oriente,vuitton,oberleutnant,gielgud,gesta,swinburne,transfiguration,1750s,retaken,celje,fredrikstad,asuka,cropping,mansard,donates,blacksmiths,vijayanagara,anuradhapura,germinate,betis,foreshore,jalandhar,bayonets,devaluation,frazione,ablaze,abidjan,approvals,homeostasis,corollary,auden,superfast,redcliffe,luxembourgish,datum,geraldton,printings,ludhiana,honoree,synchrotron,invercargill,hurriedly,108th,three-and-a-half,colonist,bexar,limousin,bessemer,ossetian,nunataks,buddhas,rebuked,thais,tilburg,verdicts,interleukin,unproven,dordrecht,solent,acclamation,muammar,dahomey,operettas,4x400,arrears,negotiators,whitehaven,apparitions,armoury,psychoactive,worshipers,sculptured,elphinstone,airshow,kjell,o'callaghan,shrank,professorships,predominance,subhash,coulomb,sekolah,retrofitted,samos,overthrowing,vibrato,resistors,palearctic,datasets,doordarshan,subcutaneous,compiles,immorality,patchwork,trinidadian,glycogen,pronged,zohar,visigoths,freres,akram,justo,agora,intakes,craiova,playwriting,bukhari,militarism,iwate,petitioners,harun,wisla,inefficiency,vendome,ledges,schopenhauer,kashi,entombed,assesses,tenn.,noumea,baguio,carex,o'donovan,filings,hillsdale,conjectures,blotches,annuals,lindisfarne,negated,vivek,angouleme,trincomalee,cofactor,verkhovna,backfield,twofold,automaker,rudra,freighters,darul,gharana,busway,formula_43,plattsburgh,portuguesa,showrunner,roadmap,valenciennes,erdos,biafra,spiritualism,transactional,modifies,carne,107th,cocos,gcses,tiverton,radiotherapy,meadowlands,gunma,srebrenica,foxtel,authenticated,enslavement,classicist,klaipeda,minstrels,searchable,infantrymen,incitement,shiga,nadp+,urals,guilders,banquets,exteriors,counterattacks,visualized,diacritics,patrimony,svensson,transepts,prizren,telegraphy,najaf,emblazoned,coupes,effluent,ragam,omani,greensburg,taino,flintshire,cd/dvd,lobbies,narrating,cacao,seafarers,bicolor,collaboratively,suraj,floodlit,sacral,puppetry,tlingit,malwa,login,motionless,thien,overseers,vihar,golem,specializations,bathhouse,priming,overdubs,winningest,archetypes,uniao,acland,creamery,slovakian,lithographs,maryborough,confidently,excavating,stillborn,ramallah,audiencia,alava,ternary,hermits,rostam,bauxite,gawain,lothair,captions,gulfstream,timelines,receded,mediating,petain,bastia,rudbar,bidders,disclaimer,shrews,tailings,trilobites,yuriy,jamil,demotion,gynecology,rajinikanth,madrigals,ghazni,flycatchers,vitebsk,bizet,computationally,kashgar,refinements,frankford,heralds,europe/africa,levante,disordered,sandringham,queues,ransacked,trebizond,verdes,comedie,primitives,figurine,organists,culminate,gosport,coagulation,ferrying,hoyas,polyurethane,prohibitive,midfielders,ligase,progesterone,defectors,sweetened,backcountry,diodorus,waterside,nieuport,khwaja,jurong,decried,gorkha,ismaili,300th,octahedral,kindergartens,paseo,codification,notifications,disregarding,risque,reconquista,shortland,atolls,texarkana,perceval,d'etudes,kanal,herbicides,tikva,nuova,gatherer,dissented,soweto,dexterity,enver,bacharach,placekicker,carnivals,automate,maynooth,symplectic,chetnik,militaire,upanishads,distributive,strafing,championing,moiety,miliband,blackadder,enforceable,maung,dimer,stadtbahn,diverges,obstructions,coleophoridae,disposals,shamrocks,aural,banca,bahru,coxed,grierson,vanadium,watermill,radiative,ecoregions,berets,hariri,bicarbonate,evacuations,mallee,nairn,rushden,loggia,slupsk,satisfactorily,milliseconds,cariboo,reine,cyclo,pigmentation,postmodernism,aqueducts,vasari,bourgogne,dilemmas,liquefied,fluminense,alloa,ibaraki,tenements,kumasi,humerus,raghu,labours,putsch,soundcloud,bodybuilder,rakyat,domitian,pesaro,translocation,sembilan,homeric,enforcers,tombstones,lectureship,rotorua,salamis,nikolaos,inferences,superfortress,lithgow,surmised,undercard,tarnow,barisan,stingrays,federacion,coldstream,haverford,ornithological,heerenveen,eleazar,jyoti,murali,bamako,riverbed,subsidised,theban,conspicuously,vistas,conservatorium,madrasa,kingfishers,arnulf,credential,syndicalist,sheathed,discontinuity,prisms,tsushima,coastlines,escapees,vitis,optimizing,megapixel,overground,embattled,halide,sprinters,buoys,mpumalanga,peculiarities,106th,roamed,menezes,macao,prelates,papyri,freemen,dissertations,irishmen,pooled,sverre,reconquest,conveyance,subjectivity,asturian,circassian,formula_45,comdr,thickets,unstressed,monro,passively,harmonium,moveable,dinar,carlsson,elysees,chairing,b'nai,confusingly,kaoru,convolution,godolphin,facilitator,saxophones,eelam,jebel,copulation,anions,livres,licensure,pontypridd,arakan,controllable,alessandria,propelling,stellenbosch,tiber,wolka,liberators,yarns,d'azur,tsinghua,semnan,amhara,ablation,melies,tonality,historique,beeston,kahne,intricately,sonoran,robespierre,gyrus,boycotts,defaulted,infill,maranhao,emigres,framingham,paraiba,wilhelmshaven,tritium,skyway,labial,supplementation,possessor,underserved,motets,maldivian,marrakech,quays,wikimedia,turbojet,demobilization,petrarch,encroaching,sloops,masted,karbala,corvallis,agribusiness,seaford,stenosis,hieronymus,irani,superdraft,baronies,cortisol,notability,veena,pontic,cyclin,archeologists,newham,culled,concurring,aeolian,manorial,shouldered,fords,philanthropists,105th,siddharth,gotthard,halim,rajshahi,jurchen,detritus,practicable,earthenware,discarding,travelogue,neuromuscular,elkhart,raeder,zygmunt,metastasis,internees,102nd,vigour,upmarket,summarizing,subjunctive,offsets,elizabethtown,udupi,pardubice,repeaters,instituting,archaea,substandard,technische,linga,anatomist,flourishes,velika,tenochtitlan,evangelistic,fitchburg,springbok,cascading,hydrostatic,avars,occasioned,filipina,perceiving,shimbun,africanus,consternation,tsing,optically,beitar,45deg,abutments,roseville,monomers,huelva,lotteries,hypothalamus,internationalist,electromechanical,hummingbirds,fibreglass,salaried,dramatists,uncovers,invokes,earners,excretion,gelding,ancien,aeronautica,haverhill,stour,ittihad,abramoff,yakov,ayodhya,accelerates,industrially,aeroplanes,deleterious,dwelt,belvoir,harpalus,atpase,maluku,alasdair,proportionality,taran,epistemological,interferometer,polypeptide,adjudged,villager,metastatic,marshalls,madhavan,archduchess,weizmann,kalgoorlie,balan,predefined,sessile,sagaing,brevity,insecticide,psychosocial,africana,steelworks,aether,aquifers,belem,mineiro,almagro,radiators,cenozoic,solute,turbocharger,invicta,guested,buccaneer,idolatry,unmatched,paducah,sinestro,dispossessed,conforms,responsiveness,cyanobacteria,flautist,procurator,complementing,semifinalist,rechargeable,permafrost,cytokine,refuges,boomed,gelderland,franchised,jinan,burnie,doubtless,randomness,colspan=12,angra,ginebra,famers,nuestro,declarative,roughness,lauenburg,motile,rekha,issuer,piney,interceptors,napoca,gipsy,formulaic,formula_44,viswanathan,ebrahim,thessalonica,galeria,muskogee,unsold,html5,taito,mobutu,icann,carnarvon,fairtrade,morphisms,upsilon,nozzles,fabius,meander,murugan,strontium,episcopacy,sandinista,parasol,attenuated,bhima,primeval,panay,ordinator,negara,osteoporosis,glossop,ebook,paradoxically,grevillea,modoc,equating,phonetically,legumes,covariant,dorje,quatre,bruxelles,pyroclastic,shipbuilder,zhaozong,obscuring,sveriges,tremolo,extensible,barrack,multnomah,hakon,chaharmahal,parsing,volumetric,astrophysical,glottal,combinatorics,freestanding,encoder,paralysed,cavalrymen,taboos,heilbronn,orientalis,lockport,marvels,ozawa,dispositions,waders,incurring,saltire,modulate,papilio,phenol,intermedia,rappahannock,plasmid,fortify,phenotypes,transiting,correspondences,leaguer,larnaca,incompatibility,mcenroe,deeming,endeavoured,aboriginals,helmed,salar,arginine,werke,ferrand,expropriated,delimited,couplets,phoenicians,petioles,ouster,anschluss,protectionist,plessis,urchins,orquesta,castleton,juniata,bittorrent,fulani,donji,mykola,rosemont,chandos,scepticism,signer,chalukya,wicketkeeper,coquitlam,programmatic,o'brian,carteret,urology,steelhead,paleocene,konkan,bettered,venkatesh,surfacing,longitudinally,centurions,popularization,yazid,douro,widths,premios,leonards,gristmill,fallujah,arezzo,leftists,ecliptic,glycerol,inaction,disenfranchised,acrimonious,depositing,parashah,cockatoo,marechal,bolzano,chios,cablevision,impartiality,pouches,thickly,equities,bentinck,emotive,boson,ashdown,conquistadors,parsi,conservationists,reductive,newlands,centerline,ornithologists,waveguide,nicene,philological,hemel,setanta,masala,aphids,convening,casco,matrilineal,chalcedon,orthographic,hythe,replete,damming,bolivarian,admixture,embarks,borderlands,conformed,nagarjuna,blenny,chaitanya,suwon,shigeru,tatarstan,lingayen,rejoins,grodno,merovingian,hardwicke,puducherry,prototyping,laxmi,upheavals,headquarter,pollinators,bromine,transom,plantagenet,arbuthnot,chidambaram,woburn,osamu,panelling,coauthored,zhongshu,hyaline,omissions,aspergillus,offensively,electrolytic,woodcut,sodom,intensities,clydebank,piotrkow,supplementing,quipped,focke,harbinger,positivism,parklands,wolfenbuttel,cauca,tryptophan,taunus,curragh,tsonga,remand,obscura,ashikaga,eltham,forelimbs,analogs,trnava,observances,kailash,antithesis,ayumi,abyssinia,dorsally,tralee,pursuers,misadventures,padova,perot,mahadev,tarim,granth,licenced,compania,patuxent,baronial,korda,cochabamba,codices,karna,memorialized,semaphore,playlists,mandibular,halal,sivaji,scherzinger,stralsund,foundries,ribosome,mindfulness,nikolayevich,paraphyletic,newsreader,catalyze,ioannina,thalamus,gbit/s,paymaster,sarab,500th,replenished,gamepro,cracow,formula_46,gascony,reburied,lessing,easement,transposed,meurthe,satires,proviso,balthasar,unbound,cuckoos,durbar,louisbourg,cowes,wholesalers,manet,narita,xiaoping,mohamad,illusory,cathal,reuptake,alkaloid,tahrir,mmorpg,underlies,anglicanism,repton,aharon,exogenous,buchenwald,indigent,odostomia,milled,santorum,toungoo,nevsky,steyr,urbanisation,darkseid,subsonic,canaanite,akiva,eglise,dentition,mediators,cirencester,peloponnesian,malmesbury,durres,oerlikon,tabulated,saens,canaria,ischemic,esterhazy,ringling,centralization,walthamstow,nalanda,lignite,takht,leninism,expiring,circe,phytoplankton,promulgation,integrable,breeches,aalto,menominee,borgo,scythians,skrull,galleon,reinvestment,raglan,reachable,liberec,airframes,electrolysis,geospatial,rubiaceae,interdependence,symmetrically,simulcasts,keenly,mauna,adipose,zaidi,fairport,vestibular,actuators,monochromatic,literatures,congestive,sacramental,atholl,skytrain,tycho,tunings,jamia,catharina,modifier,methuen,tapings,infiltrating,colima,grafting,tauranga,halides,pontificate,phonetics,koper,hafez,grooved,kintetsu,extrajudicial,linkoping,cyberpunk,repetitions,laurentian,parnu,bretton,darko,sverdlovsk,foreshadowed,akhenaten,rehnquist,gosford,coverts,pragmatism,broadleaf,ethiopians,instated,mediates,sodra,opulent,descriptor,enugu,shimla,leesburg,officership,giffard,refectory,lusitania,cybermen,fiume,corus,tydfil,lawrenceville,ocala,leviticus,burghers,ataxia,richthofen,amicably,acoustical,watling,inquired,tiempo,multiracial,parallelism,trenchard,tokyopop,germanium,usisl,philharmonia,shapur,jacobites,latinized,sophocles,remittances,o'farrell,adder,dimitrios,peshwa,dimitar,orlov,outstretched,musume,satish,dimensionless,serialised,baptisms,pagasa,antiviral,1740s,quine,arapaho,bombardments,stratosphere,ophthalmic,injunctions,carbonated,nonviolence,asante,creoles,sybra,boilermakers,abington,bipartite,permissive,cardinality,anheuser,carcinogenic,hohenlohe,surinam,szeged,infanticide,generically,floorball,'white,automakers,cerebellar,homozygous,remoteness,effortlessly,allude,'great,headmasters,minting,manchurian,kinabalu,wemyss,seditious,widgets,marbled,almshouses,bards,subgenres,tetsuya,faulting,kickboxer,gaulish,hoseyn,malton,fluvial,questionnaires,mondale,downplayed,traditionalists,vercelli,sumatran,landfills,gamesradar,exerts,franciszek,unlawfully,huesca,diderot,libertarians,professorial,laane,piecemeal,conidae,taiji,curatorial,perturbations,abstractions,szlachta,watercraft,mullah,zoroastrianism,segmental,khabarovsk,rectors,affordability,scuola,diffused,stena,cyclonic,workpiece,romford,'little,jhansi,stalag,zhongshan,skipton,maracaibo,bernadotte,thanet,groening,waterville,encloses,sahrawi,nuffield,moorings,chantry,annenberg,islay,marchers,tenses,wahid,siegen,furstenberg,basques,resuscitation,seminarians,tympanum,gentiles,vegetarianism,tufted,venkata,fantastical,pterophoridae,machined,superposition,glabrous,kaveri,chicane,executors,phyllonorycter,bidirectional,jasta,undertones,touristic,majapahit,navratilova,unpopularity,barbadian,tinian,webcast,hurdler,rigidly,jarrah,staphylococcus,igniting,irrawaddy,stabilised,airstrike,ragas,wakayama,energetically,ekstraklasa,minibus,largemouth,cultivators,leveraging,waitangi,carnaval,weaves,turntables,heydrich,sextus,excavate,govind,ignaz,pedagogue,uriah,borrowings,gemstones,infractions,mycobacterium,batavian,massing,praetor,subalpine,massoud,passers,geostationary,jalil,trainsets,barbus,impair,budejovice,denbigh,pertain,historicity,fortaleza,nederlandse,lamenting,masterchef,doubs,gemara,conductance,ploiesti,cetaceans,courthouses,bhagavad,mihailovic,occlusion,bremerhaven,bulwark,morava,kaine,drapery,maputo,conquistador,kaduna,famagusta,first-past-the-post,erudite,galton,undated,tangential,filho,dismembered,dashes,criterium,darwen,metabolized,blurring,everard,randwick,mohave,impurity,acuity,ansbach,chievo,surcharge,plantain,algoma,porosity,zirconium,selva,sevenoaks,venizelos,gwynne,golgi,imparting,separatism,courtesan,idiopathic,gravestones,hydroelectricity,babar,orford,purposeful,acutely,shard,ridgewood,viterbo,manohar,expropriation,placenames,brevis,cosine,unranked,richfield,newnham,recoverable,flightless,dispersing,clearfield,abu'l,stranraer,kempe,streamlining,goswami,epidermal,pieta,conciliatory,distilleries,electrophoresis,bonne,tiago,curiosities,candidature,picnicking,perihelion,lintel,povoa,gullies,configure,excision,facies,signers,1730s,insufficiency,semiotics,streatham,deactivation,entomological,skippers,albacete,parodying,escherichia,honorees,singaporeans,counterterrorism,tiruchirappalli,omnivorous,metropole,globalisation,athol,unbounded,codice_5,landforms,classifier,farmhouses,reaffirming,reparation,yomiuri,technologists,mitte,medica,viewable,steampunk,konya,kshatriya,repelling,edgewater,lamiinae,devas,potteries,llandaff,engendered,submits,virulence,uplifted,educationist,metropolitans,frontrunner,dunstable,forecastle,frets,methodius,exmouth,linnean,bouchet,repulsion,computable,equalling,liceo,tephritidae,agave,hydrological,azarenka,fairground,l'homme,enforces,xinhua,cinematographers,cooperstown,sa'id,paiute,christianization,tempos,chippenham,insulator,kotor,stereotyped,dello,cours,hisham,d'souza,eliminations,supercars,passau,rebrand,natures,coote,persephone,rededicated,cleaved,plenum,blistering,indiscriminately,cleese,safed,recursively,compacted,revues,hydration,shillong,echelons,garhwal,pedimented,grower,zwolle,wildflower,annexing,methionine,petah,valens,famitsu,petiole,specialities,nestorian,shahin,tokaido,shearwater,barberini,kinsmen,experimenter,alumnae,cloisters,alumina,pritzker,hardiness,soundgarden,julich,ps300,watercourse,cementing,wordplay,olivet,demesne,chasseurs,amide,zapotec,gaozu,porphyry,absorbers,indium,analogies,devotions,engravers,limestones,catapulted,surry,brickworks,gotra,rodham,landline,paleontologists,shankara,islip,raucous,trollope,arpad,embarkation,morphemes,recites,picardie,nakhchivan,tolerances,formula_47,khorramabad,nichiren,adrianople,kirkuk,assemblages,collider,bikaner,bushfires,roofline,coverings,reredos,bibliotheca,mantras,accentuated,commedia,rashtriya,fluctuation,serhiy,referential,fittipaldi,vesicle,geeta,iraklis,immediacy,chulalongkorn,hunsruck,bingen,dreadnoughts,stonemason,meenakshi,lebesgue,undergrowth,baltistan,paradoxes,parlement,articled,tiflis,dixieland,meriden,tejano,underdogs,barnstable,exemplify,venter,tropes,wielka,kankakee,iskandar,zilina,pharyngeal,spotify,materialised,picts,atlantique,theodoric,prepositions,paramilitaries,pinellas,attlee,actuated,piedmontese,grayling,thucydides,multifaceted,unedited,autonomously,universelle,utricularia,mooted,preto,incubated,underlie,brasenose,nootka,bushland,sensu,benzodiazepine,esteghlal,seagoing,amenhotep,azusa,sappers,culpeper,smokeless,thoroughbreds,dargah,gorda,alumna,mankato,zdroj,deleting,culvert,formula_49,punting,wushu,hindering,immunoglobulin,standardisation,birger,oilfield,quadrangular,ulama,recruiters,netanya,1630s,communaute,istituto,maciej,pathan,meher,vikas,characterizations,playmaker,interagency,intercepts,assembles,horthy,introspection,narada,matra,testes,radnicki,estonians,csiro,instar,mitford,adrenergic,crewmembers,haaretz,wasatch,lisburn,rangefinder,ordre,condensate,reforestation,corregidor,spvgg,modulator,mannerist,faulted,aspires,maktoum,squarepants,aethelred,piezoelectric,mulatto,dacre,progressions,jagiellonian,norge,samaria,sukhoi,effingham,coxless,hermetic,humanists,centrality,litters,stirlingshire,beaconsfield,sundanese,geometrically,caretakers,habitually,bandra,pashtuns,bradenton,arequipa,laminar,brickyard,hitchin,sustains,shipboard,ploughing,trechus,wheelers,bracketed,ilyushin,subotica,d'hondt,reappearance,bridgestone,intermarried,fulfilment,aphasia,birkbeck,transformational,strathmore,hornbill,millstone,lacan,voids,solothurn,gymnasiums,laconia,viaducts,peduncle,teachta,edgware,shinty,supernovae,wilfried,exclaim,parthia,mithun,flashpoint,moksha,cumbia,metternich,avalanches,militancy,motorist,rivadavia,chancellorsville,federals,gendered,bounding,footy,gauri,caliphs,lingam,watchmaker,unrecorded,riverina,unmodified,seafloor,droit,pfalz,chrysostom,gigabit,overlordship,besiege,espn2,oswestry,anachronistic,ballymena,reactivation,duchovny,ghani,abacetus,duller,legio,watercourses,nord-pas-de-calais,leiber,optometry,swarms,installer,sancti,adverbs,iheartmedia,meiningen,zeljko,kakheti,notional,circuses,patrilineal,acrobatics,infrastructural,sheva,oregonian,adjudication,aamir,wloclawek,overfishing,obstructive,subtracting,aurobindo,archeologist,newgate,'cause,secularization,tehsils,abscess,fingal,janacek,elkhorn,trims,kraftwerk,mandating,irregulars,faintly,congregationalist,sveti,kasai,mishaps,kennebec,provincially,durkheim,scotties,aicte,rapperswil,imphal,surrenders,morphs,nineveh,hoxha,cotabato,thuringian,metalworking,retold,shogakukan,anthers,proteasome,tippeligaen,disengagement,mockumentary,palatial,erupts,flume,corrientes,masthead,jaroslaw,rereleased,bharti,labors,distilling,tusks,varzim,refounded,enniskillen,melkite,semifinalists,vadodara,bermudian,capstone,grasse,origination,populus,alesi,arrondissements,semigroup,verein,opossum,messrs.,portadown,bulbul,tirupati,mulhouse,tetrahedron,roethlisberger,nonverbal,connexion,warangal,deprecated,gneiss,octet,vukovar,hesketh,chambre,despatch,claes,kargil,hideo,gravelly,tyndale,aquileia,tuners,defensible,tutte,theotokos,constructivist,ouvrage,dukla,polisario,monasticism,proscribed,commutation,testers,nipissing,codon,mesto,olivine,concomitant,exoskeleton,purports,coromandel,eyalet,dissension,hippocrates,purebred,yaounde,composting,oecophoridae,procopius,o'day,angiogenesis,sheerness,intelligencer,articular,felixstowe,aegon,endocrinology,trabzon,licinius,pagodas,zooplankton,hooghly,satie,drifters,sarthe,mercian,neuilly,tumours,canal+,scheldt,inclinations,counteroffensive,roadrunners,tuzla,shoreditch,surigao,predicates,carnot,algeciras,militaries,generalize,bulkheads,gawler,pollutant,celta,rundgren,microrna,gewog,olimpija,placental,lubelski,roxburgh,discerned,verano,kikuchi,musicale,l'enfant,ferocity,dimorphic,antigonus,erzurum,prebendary,recitative,discworld,cyrenaica,stigmella,totnes,sutta,pachuca,ulsan,downton,landshut,castellan,pleural,siedlce,siecle,catamaran,cottbus,utilises,trophic,freeholders,holyhead,u.s.s,chansons,responder,waziristan,suzuka,birding,shogi,asker,acetone,beautification,cytotoxic,dixit,hunterdon,cobblestone,formula_48,kossuth,devizes,sokoto,interlaced,shuttered,kilowatts,assiniboine,isaak,salto,alderney,sugarloaf,franchising,aggressiveness,toponyms,plaintext,antimatter,henin,equidistant,salivary,bilingualism,mountings,obligate,extirpated,irenaeus,misused,pastoralists,aftab,immigrating,warping,tyrolean,seaforth,teesside,soundwave,oligarchy,stelae,pairwise,iupac,tezuka,posht,orchestrations,landmass,ironstone,gallia,hjalmar,carmelites,strafford,elmhurst,palladio,fragility,teleplay,gruffudd,karoly,yerba,potok,espoo,inductance,macaque,nonprofits,pareto,rock'n'roll,spiritualist,shadowed,skateboarder,utterances,generality,congruence,prostrate,deterred,yellowknife,albarn,maldon,battlements,mohsen,insecticides,khulna,avellino,menstruation,glutathione,springdale,parlophone,confraternity,korps,countrywide,bosphorus,preexisting,damodar,astride,alexandrovich,sprinting,crystallized,botev,leaching,interstates,veers,angevin,undaunted,yevgeni,nishapur,northerners,alkmaar,bethnal,grocers,sepia,tornus,exemplar,trobe,charcot,gyeonggi,larne,tournai,lorain,voided,genji,enactments,maxilla,adiabatic,eifel,nazim,transducer,thelonious,pyrite,deportiva,dialectal,bengt,rosettes,labem,sergeyevich,synoptic,conservator,statuette,biweekly,adhesives,bifurcation,rajapaksa,mammootty,republique,yusef,waseda,marshfield,yekaterinburg,minnelli,fundy,fenian,matchups,dungannon,supremacist,panelled,drenthe,iyengar,fibula,narmada,homeport,oceanside,precept,antibacterial,altarpieces,swath,ospreys,lillooet,legnica,lossless,formula_50,galvatron,iorga,stormont,rsfsr,loggers,kutno,phenomenological,medallists,cuatro,soissons,homeopathy,bituminous,injures,syndicates,typesetting,displacements,dethroned,makassar,lucchese,abergavenny,targu,alborz,akb48,boldface,gastronomy,sacra,amenity,accumulator,myrtaceae,cornices,mourinho,denunciation,oxbow,diddley,aargau,arbitrage,bedchamber,gruffydd,zamindar,klagenfurt,caernarfon,slowdown,stansted,abrasion,tamaki,suetonius,dukakis,individualistic,ventrally,hotham,perestroika,ketones,fertilisation,sobriquet,couplings,renderings,misidentified,rundfunk,sarcastically,braniff,concours,dismissals,elegantly,modifiers,crediting,combos,crucially,seafront,lieut,ischemia,manchus,derivations,proteases,aristophanes,adenauer,porting,hezekiah,sante,trulli,hornblower,foreshadowing,ypsilanti,dharwad,khani,hohenstaufen,distillers,cosmodrome,intracranial,turki,salesian,gorzow,jihlava,yushchenko,leichhardt,venables,cassia,eurogamer,airtel,curative,bestsellers,timeform,sortied,grandview,massillon,ceding,pilbara,chillicothe,heredity,elblag,rogaland,ronne,millennial,batley,overuse,bharata,fille,campbelltown,abeyance,counterclockwise,250cc,neurodegenerative,consigned,electromagnetism,sunnah,saheb,exons,coxswain,gleaned,bassoons,worksop,prismatic,immigrate,pickets,takeo,bobsledder,stosur,fujimori,merchantmen,stiftung,forli,endorses,taskforce,thermally,atman,gurps,floodplains,enthalpy,extrinsic,setubal,kennesaw,grandis,scalability,durations,showrooms,prithvi,outro,overruns,andalucia,amanita,abitur,hipper,mozambican,sustainment,arsene,chesham,palaeolithic,reportage,criminality,knowsley,haploid,atacama,shueisha,ridgefield,astern,getafe,lineal,timorese,restyled,hollies,agincourt,unter,justly,tannins,mataram,industrialised,tarnovo,mumtaz,mustapha,stretton,synthetase,condita,allround,putra,stjepan,troughs,aechmea,specialisation,wearable,kadokawa,uralic,aeros,messiaen,existentialism,jeweller,effigies,gametes,fjordane,cochlear,interdependent,demonstrative,unstructured,emplacement,famines,spindles,amplitudes,actuator,tantalum,psilocybe,apnea,monogatari,expulsions,seleucus,tsuen,hospitaller,kronstadt,eclipsing,olympiakos,clann,canadensis,inverter,helio,egyptologist,squamous,resonate,munir,histology,torbay,khans,jcpenney,veterinarians,aintree,microscopes,colonised,reflectors,phosphorylated,pristimantis,tulare,corvinus,multiplexing,midweek,demosthenes,transjordan,ecija,tengku,vlachs,anamorphic,counterweight,radnor,trinitarian,armidale,maugham,njsiaa,futurism,stairways,avicenna,montebello,bridgetown,wenatchee,lyonnais,amass,surinamese,streptococcus,m*a*s*h,hydrogenation,frazioni,proscenium,kalat,pennsylvanian,huracan,tallying,kralove,nucleolar,phrygian,seaports,hyacinthe,ignace,donning,instalment,regnal,fonds,prawn,carell,folktales,goaltending,bracknell,vmware,patriarchy,mitsui,kragujevac,pythagoras,soult,thapa,disproved,suwalki,secures,somoza,l'ecole,divizia,chroma,herders,technologist,deduces,maasai,rampur,paraphrase,raimi,imaged,magsaysay,ivano,turmeric,formula_51,subcommittees,axillary,ionosphere,organically,indented,refurbishing,pequot,violinists,bearn,colle,contralto,silverton,mechanization,etruscans,wittelsbach,pasir,redshirted,marrakesh,scarp,plein,wafers,qareh,teotihuacan,frobenius,sinensis,rehoboth,bundaberg,newbridge,hydrodynamic,traore,abubakar,adjusts,storytellers,dynamos,verbandsliga,concertmaster,exxonmobil,appreciable,sieradz,marchioness,chaplaincy,rechristened,cunxu,overpopulation,apolitical,sequencer,beaked,nemanja,binaries,intendant,absorber,filamentous,indebtedness,nusra,nashik,reprises,psychedelia,abwehr,ligurian,isoform,resistive,pillaging,mahathir,reformatory,lusatia,allerton,ajaccio,tepals,maturin,njcaa,abyssinian,objector,fissures,sinuous,ecclesiastic,dalits,caching,deckers,phosphates,wurlitzer,navigated,trofeo,berea,purefoods,solway,unlockable,grammys,kostroma,vocalizations,basilan,rebuke,abbasi,douala,helsingborg,ambon,bakar,runestones,cenel,tomislav,pigmented,northgate,excised,seconda,kirke,determinations,dedicates,vilas,pueblos,reversion,unexploded,overprinted,ekiti,deauville,masato,anaesthesia,endoplasmic,transponders,aguascalientes,hindley,celluloid,affording,bayeux,piaget,rickshaws,eishockey,camarines,zamalek,undersides,hardwoods,hermitian,mutinied,monotone,blackmails,affixes,jpmorgan,habermas,mitrovica,paleontological,polystyrene,thana,manas,conformist,turbofan,decomposes,logano,castration,metamorphoses,patroness,herbicide,mikolaj,rapprochement,macroeconomics,barranquilla,matsudaira,lintels,femina,hijab,spotsylvania,morpheme,bitola,baluchistan,kurukshetra,otway,extrusion,waukesha,menswear,helder,trung,bingley,protester,boars,overhang,differentials,exarchate,hejaz,kumara,unjustified,timings,sharpness,nuovo,taisho,sundar,etc..,jehan,unquestionably,muscovy,daltrey,canute,paneled,amedeo,metroplex,elaborates,telus,tetrapods,dragonflies,epithets,saffir,parthenon,lucrezia,refitting,pentateuch,hanshin,montparnasse,lumberjacks,sanhedrin,erectile,odors,greenstone,resurgent,leszek,amory,substituents,prototypical,viewfinder,monck,universiteit,joffre,revives,chatillon,seedling,scherzo,manukau,ashdod,gympie,homolog,stalwarts,ruinous,weibo,tochigi,wallenberg,gayatri,munda,satyagraha,storefronts,heterogeneity,tollway,sportswriters,binocular,gendarmes,ladysmith,tikal,ortsgemeinde,ja'far,osmotic,linlithgow,bramley,telecoms,pugin,repose,rupaul,sieur,meniscus,garmisch,reintroduce,400th,shoten,poniatowski,drome,kazakhstani,changeover,astronautics,husserl,herzl,hypertext,katakana,polybius,antananarivo,seong,breguet,reliquary,utada,aggregating,liangshan,sivan,tonawanda,audiobooks,shankill,coulee,phenolic,brockton,bookmakers,handsets,boaters,wylde,commonality,mappings,silhouettes,pennines,maurya,pratchett,singularities,eschewed,pretensions,vitreous,ibero,totalitarianism,poulenc,lingered,directx,seasoning,deputation,interdict,illyria,feedstock,counterbalance,muzik,buganda,parachuted,violist,homogeneity,comix,fjords,corsairs,punted,verandahs,equilateral,laoghaire,magyars,117th,alesund,televoting,mayotte,eateries,refurbish,nswrl,yukio,caragiale,zetas,dispel,codecs,inoperable,outperformed,rejuvenation,elstree,modernise,contributory,pictou,tewkesbury,chechens,ashina,psionic,refutation,medico,overdubbed,nebulae,sandefjord,personages,eccellenza,businessperson,placename,abenaki,perryville,threshing,reshaped,arecibo,burslem,colspan=3|turnout,rebadged,lumia,erinsborough,interactivity,bitmap,indefatigable,theosophy,excitatory,gleizes,edsel,bermondsey,korce,saarinen,wazir,diyarbakir,cofounder,liberalisation,onsen,nighthawks,siting,retirements,semyon,d'histoire,114th,redditch,venetia,praha,'round,valdosta,hieroglyphic,postmedial,edirne,miscellany,savona,cockpits,minimization,coupler,jacksonian,appeasement,argentines,saurashtra,arkwright,hesiod,folios,fitzalan,publica,rivaled,civitas,beermen,constructivism,ribeira,zeitschrift,solanum,todos,deformities,chilliwack,verdean,meagre,bishoprics,gujrat,yangzhou,reentered,inboard,mythologies,virtus,unsurprisingly,rusticated,museu,symbolise,proportionate,thesaban,symbian,aeneid,mitotic,veliki,compressive,cisterns,abies,winemaker,massenet,bertolt,ahmednagar,triplemania,armorial,administracion,tenures,smokehouse,hashtag,fuerza,regattas,gennady,kanazawa,mahmudabad,crustal,asaph,valentinian,ilaiyaraaja,honeyeater,trapezoidal,cooperatively,unambiguously,mastodon,inhospitable,harnesses,riverton,renewables,djurgardens,haitians,airings,humanoids,boatswain,shijiazhuang,faints,veera,punjabis,steepest,narain,karlovy,serre,sulcus,collectives,1500m,arion,subarctic,liberally,apollonius,ostia,droplet,headstones,norra,robusta,maquis,veronese,imola,primers,luminance,escadrille,mizuki,irreconcilable,stalybridge,temur,paraffin,stuccoed,parthians,counsels,fundamentalists,vivendi,polymath,sugababes,mikko,yonne,fermions,vestfold,pastoralist,kigali,unseeded,glarus,cusps,amasya,northwesterly,minorca,astragalus,verney,trevelyan,antipathy,wollstonecraft,bivalves,boulez,royle,divisao,quranic,bareilly,coronal,deviates,lulea,erectus,petronas,chandan,proxies,aeroflot,postsynaptic,memoriam,moyne,gounod,kuznetsova,pallava,ordinating,reigate,'first,lewisburg,exploitative,danby,academica,bailiwick,brahe,injective,stipulations,aeschylus,computes,gulden,hydroxylase,liveries,somalis,underpinnings,muscovite,kongsberg,domus,overlain,shareware,variegated,jalalabad,agence,ciphertext,insectivores,dengeki,menuhin,cladistic,baerum,betrothal,tokushima,wavelet,expansionist,pottsville,siyuan,prerequisites,carpi,nemzeti,nazar,trialled,eliminator,irrorated,homeward,redwoods,undeterred,strayed,lutyens,multicellular,aurelian,notated,lordships,alsatian,idents,foggia,garros,chalukyas,lillestrom,podlaski,pessimism,hsien,demilitarized,whitewashed,willesden,kirkcaldy,sanctorum,lamia,relaying,escondido,paediatric,contemplates,demarcated,bluestone,betula,penarol,capitalise,kreuznach,kenora,115th,hold'em,reichswehr,vaucluse,m.i.a,windings,boys/girls,cajon,hisar,predictably,flemington,ysgol,mimicked,clivina,grahamstown,ionia,glyndebourne,patrese,aquaria,sleaford,dayal,sportscenter,malappuram,m.b.a.,manoa,carbines,solvable,designator,ramanujan,linearity,academicians,sayid,lancastrian,factorial,strindberg,vashem,delos,comyn,condensing,superdome,merited,kabaddi,intransitive,bideford,neuroimaging,duopoly,scorecards,ziggler,heriot,boyars,virology,marblehead,microtubules,westphalian,anticipates,hingham,searchers,harpist,rapides,morricone,convalescent,mises,nitride,metrorail,matterhorn,bicol,drivetrain,marketer,snippet,winemakers,muban,scavengers,halberstadt,herkimer,peten,laborious,stora,montgomeryshire,booklist,shamir,herault,eurostar,anhydrous,spacewalk,ecclesia,calliostoma,highschool,d'oro,suffusion,imparts,overlords,tagus,rectifier,counterinsurgency,ministered,eilean,milecastle,contre,micromollusk,okhotsk,bartoli,matroid,hasidim,thirunal,terme,tarlac,lashkar,presque,thameslink,flyby,troopship,renouncing,fatih,messrs,vexillum,bagration,magnetite,bornholm,androgynous,vehement,tourette,philosophic,gianfranco,tuileries,codice_6,radially,flexion,hants,reprocessing,setae,burne,palaeographically,infantryman,shorebirds,tamarind,moderna,threading,militaristic,crohn,norrkoping,125cc,stadtholder,troms,klezmer,alphanumeric,brome,emmanuelle,tiwari,alchemical,formula_52,onassis,bleriot,bipedal,colourless,hermeneutics,hosni,precipitating,turnstiles,hallucinogenic,panhellenic,wyandotte,elucidated,chita,ehime,generalised,hydrophilic,biota,niobium,rnzaf,gandhara,longueuil,logics,sheeting,bielsko,cuvier,kagyu,trefoil,docent,pancrase,stalinism,postures,encephalopathy,monckton,imbalances,epochs,leaguers,anzio,diminishes,pataki,nitrite,amuro,nabil,maybach,l'aquila,babbler,bacolod,thutmose,evora,gaudi,breakage,recur,preservative,60deg,mendip,functionaries,columnar,maccabiah,chert,verden,bromsgrove,clijsters,dengue,pastorate,phuoc,principia,viareggio,kharagpur,scharnhorst,anyang,bosons,l'art,criticises,ennio,semarang,brownian,mirabilis,asperger,calibers,typographical,cartooning,minos,disembark,supranational,undescribed,etymologically,alappuzha,vilhelm,lanao,pakenham,bhagavata,rakoczi,clearings,astrologers,manitowoc,bunuel,acetylene,scheduler,defamatory,trabzonspor,leaded,scioto,pentathlete,abrahamic,minigames,aldehydes,peerages,legionary,1640s,masterworks,loudness,bryansk,likeable,genocidal,vegetated,towpath,declination,pyrrhus,divinely,vocations,rosebery,associazione,loaders,biswas,oeste,tilings,xianzong,bhojpuri,annuities,relatedness,idolator,psers,constriction,chuvash,choristers,hanafi,fielders,grammarian,orpheum,asylums,millbrook,gyatso,geldof,stabilise,tableaux,diarist,kalahari,panini,cowdenbeath,melanin,4x100m,resonances,pinar,atherosclerosis,sheringham,castlereagh,aoyama,larks,pantograph,protrude,natak,gustafsson,moribund,cerevisiae,cleanly,polymeric,holkar,cosmonauts,underpinning,lithosphere,firuzabad,languished,mingled,citrate,spadina,lavas,daejeon,fibrillation,porgy,pineville,ps1000,cobbled,emamzadeh,mukhtar,dampers,indelible,salonika,nanoscale,treblinka,eilat,purporting,fluctuate,mesic,hagiography,cutscenes,fondation,barrens,comically,accrue,ibrox,makerere,defections,'there,hollandia,skene,grosseto,reddit,objectors,inoculation,rowdies,playfair,calligrapher,namor,sibenik,abbottabad,propellants,hydraulically,chloroplasts,tablelands,tecnico,schist,klasse,shirvan,bashkortostan,bullfighting,north/south,polski,hanns,woodblock,kilmore,ejecta,ignacy,nanchang,danubian,commendations,snohomish,samaritans,argumentation,vasconcelos,hedgehogs,vajrayana,barents,kulkarni,kumbakonam,identifications,hillingdon,weirs,nayanar,beauvoir,messe,divisors,atlantiques,broods,affluence,tegucigalpa,unsuited,autodesk,akash,princeps,culprits,kingstown,unassuming,goole,visayan,asceticism,blagojevich,irises,paphos,unsound,maurier,pontchartrain,desertification,sinfonietta,latins,especial,limpet,valerenga,glial,brainstem,mitral,parables,sauropod,judean,iskcon,sarcoma,venlo,justifications,zhuhai,blavatsky,alleviated,usafe,steppenwolf,inversions,janko,chagall,secretory,basildon,saguenay,pergamon,hemispherical,harmonized,reloading,franjo,domaine,extravagance,relativism,metamorphosed,labuan,baloncesto,gmail,byproducts,calvinists,counterattacked,vitus,bubonic,120th,strachey,ritually,brookwood,selectable,savinja,incontinence,meltwater,jinja,1720s,brahmi,morgenthau,sheaves,sleeved,stratovolcano,wielki,utilisation,avoca,fluxus,panzergrenadier,philately,deflation,podlaska,prerogatives,kuroda,theophile,zhongzong,gascoyne,magus,takao,arundell,fylde,merdeka,prithviraj,venkateswara,liepaja,daigo,dreamland,reflux,sunnyvale,coalfields,seacrest,soldering,flexor,structuralism,alnwick,outweighed,unaired,mangeshkar,batons,glaad,banshees,irradiated,organelles,biathlete,cabling,chairlift,lollapalooza,newsnight,capacitive,succumbs,flatly,miramichi,burwood,comedienne,charteris,biotic,workspace,aficionados,sokolka,chatelet,o'shaughnessy,prosthesis,neoliberal,refloated,oppland,hatchlings,econometrics,loess,thieu,androids,appalachians,jenin,pterostichinae,downsized,foils,chipsets,stencil,danza,narrate,maginot,yemenite,bisects,crustacean,prescriptive,melodious,alleviation,empowers,hansson,autodromo,obasanjo,osmosis,daugava,rheumatism,moraes,leucine,etymologies,chepstow,delaunay,bramall,bajaj,flavoring,approximates,marsupials,incisive,microcomputer,tactically,waals,wilno,fisichella,ursus,hindmarsh,mazarin,lomza,xenophobia,lawlessness,annecy,wingers,gornja,gnaeus,superieur,tlaxcala,clasps,symbolises,slats,rightist,effector,blighted,permanence,divan,progenitors,kunsthalle,anointing,excelling,coenzyme,indoctrination,dnipro,landholdings,adriaan,liturgies,cartan,ethmia,attributions,sanctus,trichy,chronicon,tancred,affinis,kampuchea,gantry,pontypool,membered,distrusted,fissile,dairies,hyposmocoma,craigie,adarsh,martinsburg,taxiway,30deg,geraint,vellum,bencher,khatami,formula_53,zemun,teruel,endeavored,palmares,pavements,u.s..,internationalization,satirized,carers,attainable,wraparound,muang,parkersburg,extinctions,birkenfeld,wildstorm,payers,cohabitation,unitas,culloden,capitalizing,clwyd,daoist,campinas,emmylou,orchidaceae,halakha,orientales,fealty,domnall,chiefdom,nigerians,ladislav,dniester,avowed,ergonomics,newsmagazine,kitsch,cantilevered,benchmarking,remarriage,alekhine,coldfield,taupo,almirante,substations,apprenticeships,seljuq,levelling,eponym,symbolising,salyut,opioids,underscore,ethnologue,mohegan,marikina,libro,bassano,parse,semantically,disjointed,dugdale,padraig,tulsi,modulating,xfinity,headlands,mstislav,earthworms,bourchier,lgbtq,embellishments,pennants,rowntree,betel,motet,mulla,catenary,washoe,mordaunt,dorking,colmar,girardeau,glentoran,grammatically,samad,recreations,technion,staccato,mikoyan,spoilers,lyndhurst,victimization,chertsey,belafonte,tondo,tonsberg,narrators,subcultures,malformations,edina,augmenting,attests,euphemia,cabriolet,disguising,1650s,navarrese,demoralized,cardiomyopathy,welwyn,wallachian,smoothness,planktonic,voles,issuers,sardasht,survivability,cuauhtemoc,thetis,extruded,signet,raghavan,lombok,eliyahu,crankcase,dissonant,stolberg,trencin,desktops,bursary,collectivization,charlottenburg,triathlete,curvilinear,involuntarily,mired,wausau,invades,sundaram,deletions,bootstrap,abellio,axiomatic,noguchi,setups,malawian,visalia,materialist,kartuzy,wenzong,plotline,yeshivas,parganas,tunica,citric,conspecific,idlib,superlative,reoccupied,blagoevgrad,masterton,immunological,hatta,courbet,vortices,swallowtail,delves,haridwar,diptera,boneh,bahawalpur,angering,mardin,equipments,deployable,guanine,normality,rimmed,artisanal,boxset,chandrasekhar,jools,chenar,tanakh,carcassonne,belatedly,millville,anorthosis,reintegration,velde,surfactant,kanaan,busoni,glyphipterix,personas,fullness,rheims,tisza,stabilizers,bharathi,joost,spinola,mouldings,perching,esztergom,afzal,apostate,lustre,s.league,motorboat,monotheistic,armature,barat,asistencia,bloomsburg,hippocampal,fictionalised,defaults,broch,hexadecimal,lusignan,ryanair,boccaccio,breisgau,southbank,bskyb,adjoined,neurobiology,aforesaid,sadhu,langue,headship,wozniacki,hangings,regulus,prioritized,dynamism,allier,hannity,shimin,antoninus,gymnopilus,caledon,preponderance,melayu,electrodynamics,syncopated,ibises,krosno,mechanistic,morpeth,harbored,albini,monotheism,'real,hyperactivity,haveli,writer/director,minato,nimoy,caerphilly,chitral,amirabad,fanshawe,l'oreal,lorde,mukti,authoritarianism,valuing,spyware,hanbury,restarting,stato,embed,suiza,empiricism,stabilisation,stari,castlemaine,orbis,manufactory,mauritanian,shoji,taoyuan,prokaryotes,oromia,ambiguities,embodying,slims,frente,innovate,ojibwa,powdery,gaeltacht,argentinos,quatermass,detergents,fijians,adaptor,tokai,chileans,bulgars,oxidoreductases,bezirksliga,conceicao,myosin,nellore,500cc,supercomputers,approximating,glyndwr,polypropylene,haugesund,cockerell,tudman,ashbourne,hindemith,bloodlines,rigveda,etruria,romanos,steyn,oradea,deceleration,manhunter,laryngeal,fraudulently,janez,wendover,haplotype,janaki,naoki,belizean,mellencamp,cartographic,sadhana,tricolour,pseudoscience,satara,bytow,s.p.a.,jagdgeschwader,arcot,omagh,sverdrup,masterplan,surtees,apocrypha,ahvaz,d'amato,socratic,leumit,unnumbered,nandini,witold,marsupial,coalesced,interpolated,gimnasia,karadzic,keratin,mamoru,aldeburgh,speculator,escapement,irfan,kashyap,satyajit,haddington,solver,rothko,ashkelon,kickapoo,yeomen,superbly,bloodiest,greenlandic,lithic,autofocus,yardbirds,poona,keble,javan,sufis,expandable,tumblr,ursuline,swimwear,winwood,counsellors,aberrations,marginalised,befriending,workouts,predestination,varietal,siddhartha,dunkeld,judaic,esquimalt,shabab,ajith,telefonica,stargard,hoysala,radhakrishnan,sinusoidal,strada,hiragana,cebuano,monoid,independencia,floodwaters,mildura,mudflats,ottokar,translit,radix,wigner,philosophically,tephritid,synthesizing,castletown,installs,stirner,resettle,bushfire,choirmaster,kabbalistic,shirazi,lightship,rebus,colonizers,centrifuge,leonean,kristofferson,thymus,clackamas,ratnam,rothesay,municipally,centralia,thurrock,gulfport,bilinear,desirability,merite,psoriasis,macaw,erigeron,consignment,mudstone,distorting,karlheinz,ramen,tailwheel,vitor,reinsurance,edifices,superannuation,dormancy,contagion,cobden,rendezvoused,prokaryotic,deliberative,patricians,feigned,degrades,starlings,sopot,viticultural,beaverton,overflowed,convener,garlands,michiel,ternopil,naturelle,biplanes,bagot,gamespy,ventspils,disembodied,flattening,profesional,londoners,arusha,scapular,forestall,pyridine,ulema,eurodance,aruna,callus,periodontal,coetzee,immobilized,o'meara,maharani,katipunan,reactants,zainab,microgravity,saintes,britpop,carrefour,constrain,adversarial,firebirds,brahmo,kashima,simca,surety,surpluses,superconductivity,gipuzkoa,cumans,tocantins,obtainable,humberside,roosting,'king,formula_54,minelayer,bessel,sulayman,cycled,biomarkers,annealing,shusha,barda,cassation,djing,polemics,tuple,directorates,indomitable,obsolescence,wilhelmine,pembina,bojan,tambo,dioecious,pensioner,magnificat,1660s,estrellas,southeasterly,immunodeficiency,railhead,surreptitiously,codeine,encores,religiosity,tempera,camberley,efendi,boardings,malleable,hagia,input/output,lucasfilm,ujjain,polymorphisms,creationist,berners,mickiewicz,irvington,linkedin,endures,kinect,munition,apologetics,fairlie,predicated,reprinting,ethnographer,variances,levantine,mariinsky,jadid,jarrow,asia/oceania,trinamool,waveforms,bisexuality,preselection,pupae,buckethead,hieroglyph,lyricists,marionette,dunbartonshire,restorer,monarchical,pazar,kickoffs,cabildo,savannas,gliese,dench,spoonbills,novelette,diliman,hypersensitivity,authorising,montefiore,mladen,qu'appelle,theistic,maruti,laterite,conestoga,saare,californica,proboscis,carrickfergus,imprecise,hadassah,baghdadi,jolgeh,deshmukh,amusements,heliopolis,berle,adaptability,partenkirchen,separations,baikonur,cardamom,southeastward,southfield,muzaffar,adequacy,metropolitana,rajkot,kiyoshi,metrobus,evictions,reconciles,librarianship,upsurge,knightley,badakhshan,proliferated,spirituals,burghley,electroacoustic,professing,featurette,reformists,skylab,descriptors,oddity,greyfriars,injects,salmond,lanzhou,dauntless,subgenera,underpowered,transpose,mahinda,gatos,aerobatics,seaworld,blocs,waratahs,joris,giggs,perfusion,koszalin,mieczyslaw,ayyubid,ecologists,modernists,sant'angelo,quicktime,him/her,staves,sanyo,melaka,acrocercops,qigong,iterated,generalizes,recuperation,vihara,circassians,psychical,chavo,memoires,infiltrates,notaries,pelecaniformesfamily,strident,chivalric,pierrepont,alleviating,broadsides,centipede,b.tech,reinterpreted,sudetenland,hussite,covenanters,radhika,ironclads,gainsbourg,testis,penarth,plantar,azadegan,beano,espn.com,leominster,autobiographies,nbcuniversal,eliade,khamenei,montferrat,undistinguished,ethnological,wenlock,fricatives,polymorphic,biome,joule,sheaths,astrophysicist,salve,neoclassicism,lovat,downwind,belisarius,forma,usurpation,freie,depopulation,backbench,ascenso,'high,aagpbl,gdanski,zalman,mouvement,encapsulation,bolshevism,statny,voyageurs,hywel,vizcaya,mazra'eh,narthex,azerbaijanis,cerebrospinal,mauretania,fantail,clearinghouse,bolingbroke,pequeno,ansett,remixing,microtubule,wrens,jawahar,palembang,gambian,hillsong,fingerboard,repurposed,sundry,incipient,veolia,theologically,ulaanbaatar,atsushi,foundling,resistivity,myeloma,factbook,mazowiecka,diacritic,urumqi,clontarf,provokes,intelsat,professes,materialise,portobello,benedictines,panionios,introverted,reacquired,bridport,mammary,kripke,oratorios,vlore,stoning,woredas,unreported,antti,togolese,fanzines,heuristics,conservatories,carburetors,clitheroe,cofounded,formula_57,erupting,quinnipiac,bootle,ghostface,sittings,aspinall,sealift,transferase,boldklub,siskiyou,predominated,francophonie,ferruginous,castrum,neogene,sakya,madama,precipitous,'love,posix,bithynia,uttara,avestan,thrushes,seiji,memorably,septimius,libri,cibernetico,hyperinflation,dissuaded,cuddalore,peculiarity,vaslui,grojec,albumin,thurles,casks,fasteners,fluidity,buble,casals,terek,gnosticism,cognates,ulnar,radwanska,babylonians,majuro,oxidizer,excavators,rhythmically,liffey,gorakhpur,eurydice,underscored,arborea,lumumba,tuber,catholique,grama,galilei,scrope,centreville,jacobin,bequests,ardeche,polygamous,montauban,terai,weatherboard,readability,attainder,acraea,transversely,rivets,winterbottom,reassures,bacteriology,vriesea,chera,andesite,dedications,homogenous,reconquered,bandon,forrestal,ukiyo,gurdjieff,tethys,sparc,muscogee,grebes,belchatow,mansa,blantyre,palliser,sokolow,fibroblasts,exmoor,misaki,soundscapes,housatonic,middelburg,convenor,leyla,antipope,histidine,okeechobee,alkenes,sombre,alkene,rubik,macaques,calabar,trophee,pinchot,'free,frusciante,chemins,falaise,vasteras,gripped,schwarzenberg,cumann,kanchipuram,acoustically,silverbacks,fangio,inset,plympton,kuril,vaccinations,recep,theropods,axils,stavropol,encroached,apoptotic,papandreou,wailers,moonstone,assizes,micrometers,hornchurch,truncation,annapurna,egyptologists,rheumatic,promiscuity,satiric,fleche,caloptilia,anisotropy,quaternions,gruppo,viscounts,awardees,aftershocks,sigint,concordance,oblasts,gaumont,stent,commissars,kesteven,hydroxy,vijayanagar,belorussian,fabricius,watermark,tearfully,mamet,leukaemia,sorkh,milepost,tattooing,vosta,abbasids,uncompleted,hedong,woodwinds,extinguishing,malus,multiplexes,francoist,pathet,responsa,bassists,'most,postsecondary,ossory,grampian,saakashvili,alito,strasberg,impressionistic,volador,gelatinous,vignette,underwing,campanian,abbasabad,albertville,hopefuls,nieuwe,taxiways,reconvened,recumbent,pathologists,unionized,faversham,asymptotically,romulo,culling,donja,constricted,annesley,duomo,enschede,lovech,sharpshooter,lansky,dhamma,papillae,alanine,mowat,delius,wrest,mcluhan,podkarpackie,imitators,bilaspur,stunting,pommel,casemate,handicaps,nagas,testaments,hemings,necessitate,rearward,locative,cilla,klitschko,lindau,merion,consequential,antic,soong,copula,berthing,chevrons,rostral,sympathizer,budokan,ranulf,beria,stilt,replying,conflated,alcibiades,painstaking,yamanashi,calif.,arvid,ctesiphon,xizong,rajas,caxton,downbeat,resurfacing,rudders,miscegenation,deathmatch,foregoing,arthropod,attestation,karts,reapportionment,harnessing,eastlake,schola,dosing,postcolonial,imtiaz,formula_55,insulators,gunung,accumulations,pampas,llewelyn,bahnhof,cytosol,grosjean,teaneck,briarcliff,arsenio,canara,elaborating,passchendaele,searchlights,holywell,mohandas,preventable,gehry,mestizos,ustinov,cliched,'national,heidfeld,tertullian,jihadist,tourer,miletus,semicircle,outclassed,bouillon,cardinalate,clarifies,dakshina,bilayer,pandyan,unrwa,chandragupta,formula_56,portola,sukumaran,lactation,islamia,heikki,couplers,misappropriation,catshark,montt,ploughs,carib,stator,leaderboard,kenrick,dendrites,scape,tillamook,molesworth,mussorgsky,melanesia,restated,troon,glycoside,truckee,headwater,mashup,sectoral,gangwon,docudrama,skirting,psychopathology,dramatised,ostroleka,infestations,thabo,depolarization,wideroe,eisenbahn,thomond,kumaon,upendra,foreland,acronyms,yaqui,retaking,raphaelite,specie,dupage,villars,lucasarts,chloroplast,werribee,balsa,ascribe,havant,flava,khawaja,tyumen,subtract,interrogators,reshaping,buzzcocks,eesti,campanile,potemkin,apertures,snowboarder,registrars,handbooks,boyar,contaminant,depositors,proximate,jeunesse,zagora,pronouncements,mists,nihilism,deified,margraviate,pietersen,moderators,amalfi,adjectival,copepods,magnetosphere,pallets,clemenceau,castra,perforation,granitic,troilus,grzegorz,luthier,dockyards,antofagasta,ffestiniog,subroutine,afterword,waterwheel,druce,nitin,undifferentiated,emacs,readmitted,barneveld,tapers,hittites,infomercials,infirm,braathens,heligoland,carpark,geomagnetic,musculoskeletal,nigerien,machinima,harmonize,repealing,indecency,muskoka,verite,steubenville,suffixed,cytoskeleton,surpasses,harmonia,imereti,ventricles,heterozygous,envisions,otsego,ecoles,warrnambool,burgenland,seria,rawat,capistrano,welby,kirin,enrollments,caricom,dragonlance,schaffhausen,expanses,photojournalism,brienne,etude,referent,jamtland,schemas,xianbei,cleburne,bicester,maritima,shorelines,diagonals,bjelke,nonpublic,aliasing,m.f.a,ovals,maitreya,skirmishing,grothendieck,sukhothai,angiotensin,bridlington,durgapur,contras,gakuen,skagit,rabbinate,tsunamis,haphazard,tyldesley,microcontroller,discourages,hialeah,compressing,septimus,larvik,condoleezza,psilocybin,protectionism,songbirds,clandestinely,selectmen,wargame,cinemascope,khazars,agronomy,melzer,latifah,cherokees,recesses,assemblymen,basescu,banaras,bioavailability,subchannels,adenine,o'kelly,prabhakar,leonese,dimethyl,testimonials,geoffroy,oxidant,universiti,gheorghiu,bohdan,reversals,zamorin,herbivore,jarre,sebastiao,infanterie,dolmen,teddington,radomsko,spaceships,cuzco,recapitulation,mahoning,bainimarama,myelin,aykroyd,decals,tokelau,nalgonda,rajasthani,121st,quelled,tambov,illyrians,homilies,illuminations,hypertrophy,grodzisk,inundation,incapacity,equilibria,combats,elihu,steinitz,berengar,gowda,canwest,khosrau,maculata,houten,kandinsky,onside,leatherhead,heritable,belvidere,federative,chukchi,serling,eruptive,patan,entitlements,suffragette,evolutions,migrates,demobilisation,athleticism,trope,sarpsborg,kensal,translink,squamish,concertgebouw,energon,timestamp,competences,zalgiris,serviceman,codice_7,spoofing,assange,mahadevan,skien,suceava,augustan,revisionism,unconvincing,hollande,drina,gottlob,lippi,broglie,darkening,tilapia,eagerness,nacht,kolmogorov,photometric,leeuwarden,jrotc,haemorrhage,almanack,cavalli,repudiation,galactose,zwickau,cetinje,houbraken,heavyweights,gabonese,ordinals,noticias,museveni,steric,charaxes,amjad,resection,joinville,leczyca,anastasius,purbeck,subtribe,dalles,leadoff,monoamine,jettisoned,kaori,anthologized,alfreton,indic,bayezid,tottori,colonizing,assassinating,unchanging,eusebian,d'estaing,tsingtao,toshio,transferases,peronist,metrology,equus,mirpur,libertarianism,kovil,indole,'green,abstention,quantitatively,icebreakers,tribals,mainstays,dryandra,eyewear,nilgiri,chrysanthemum,inositol,frenetic,merchantman,hesar,physiotherapist,transceiver,dancefloor,rankine,neisse,marginalization,lengthen,unaided,rework,pageantry,savio,striated,funen,witton,illuminates,frass,hydrolases,akali,bistrita,copywriter,firings,handballer,tachinidae,dmytro,coalesce,neretva,menem,moraines,coatbridge,crossrail,spoofed,drosera,ripen,protour,kikuyu,boleslav,edwardes,troubadours,haplogroups,wrasse,educationalist,sroda,khaneh,dagbladet,apennines,neuroscientist,deplored,terje,maccabees,daventry,spaceport,lessening,ducats,singer/guitarist,chambersburg,yeong,configurable,ceremonially,unrelenting,caffe,graaf,denizens,kingsport,ingush,panhard,synthesised,tumulus,homeschooled,bozorg,idiomatic,thanhouser,queensway,radek,hippolytus,inking,banovina,peacocks,piaui,handsworth,pantomimes,abalone,thera,kurzweil,bandura,augustinians,bocelli,ferrol,jiroft,quadrature,contravention,saussure,rectification,agrippina,angelis,matanzas,nidaros,palestrina,latium,coriolis,clostridium,ordain,uttering,lanchester,proteolytic,ayacucho,merseburg,holbein,sambalpur,algebraically,inchon,ostfold,savoia,calatrava,lahiri,judgeship,ammonite,masaryk,meyerbeer,hemorrhagic,superspeedway,ningxia,panicles,encircles,khmelnytsky,profusion,esher,babol,inflationary,anhydride,gaspe,mossy,periodicity,nacion,meteorologists,mahjong,interventional,sarin,moult,enderby,modell,palgrave,warners,montcalm,siddha,functionalism,rilke,politicized,broadmoor,kunste,orden,brasileira,araneta,eroticism,colquhoun,mamba,blacktown,tubercle,seagrass,manoel,camphor,neoregelia,llandudno,annexe,enplanements,kamien,plovers,statisticians,iturbide,madrasah,nontrivial,publican,landholders,manama,uninhabitable,revivalist,trunkline,friendliness,gurudwara,rocketry,unido,tripos,besant,braque,evolutionarily,abkhazian,staffel,ratzinger,brockville,bohemond,intercut,djurgarden,utilitarianism,deploys,sastri,absolutism,subhas,asghar,fictions,sepinwall,proportionately,titleholders,thereon,foursquare,machinegun,knightsbridge,siauliai,aqaba,gearboxes,castaways,weakens,phallic,strzelce,buoyed,ruthenia,pharynx,intractable,neptunes,koine,leakey,netherlandish,preempted,vinay,terracing,instigating,alluvium,prosthetics,vorarlberg,politiques,joinery,reduplication,nebuchadnezzar,lenticular,banka,seaborne,pattinson,helpline,aleph,beckenham,californians,namgyal,franziska,aphid,branagh,transcribe,appropriateness,surakarta,takings,propagates,juraj,b0d3fb,brera,arrayed,tailback,falsehood,hazleton,prosody,egyptology,pinnate,tableware,ratan,camperdown,ethnologist,tabari,classifiers,biogas,126th,kabila,arbitron,apuestas,membranous,kincardine,oceana,glories,natick,populism,synonymy,ghalib,mobiles,motherboards,stationers,germinal,patronised,formula_58,gaborone,torts,jeezy,interleague,novaya,batticaloa,offshoots,wilbraham,filename,nswrfl,'well,trilobite,pythons,optimally,scientologists,rhesus,pilsen,backdrops,batang,unionville,hermanos,shrikes,fareham,outlawing,discontinuing,boisterous,shamokin,scanty,southwestward,exchangers,unexpired,mewar,h.m.s,saldanha,pawan,condorcet,turbidity,donau,indulgences,coincident,cliques,weeklies,bardhaman,violators,kenai,caspase,xperia,kunal,fistula,epistemic,cammell,nephi,disestablishment,rotator,germaniawerft,pyaar,chequered,jigme,perlis,anisotropic,popstars,kapil,appendices,berat,defecting,shacks,wrangel,panchayath,gorna,suckling,aerosols,sponheim,talal,borehole,encodings,enlai,subduing,agong,nadar,kitsap,syrmia,majumdar,pichilemu,charleville,embryology,booting,literati,abutting,basalts,jussi,repubblica,hertogenbosch,digitization,relents,hillfort,wiesenthal,kirche,bhagwan,bactrian,oases,phyla,neutralizing,helsing,ebooks,spearheading,margarine,'golden,phosphor,picea,stimulants,outliers,timescale,gynaecology,integrator,skyrocketed,bridgnorth,senecio,ramachandra,suffragist,arrowheads,aswan,inadvertent,microelectronics,118th,sofer,kubica,melanesian,tuanku,balkh,vyborg,crystallographic,initiators,metamorphism,ginzburg,looters,unimproved,finistere,newburyport,norges,immunities,franchisees,asterism,kortrijk,camorra,komsomol,fleurs,draughts,patagonian,voracious,artin,collaborationist,revolucion,revitalizing,xaver,purifying,antipsychotic,disjunct,pompeius,dreamwave,juvenal,beinn,adiyaman,antitank,allama,boletus,melanogaster,dumitru,caproni,aligns,athabaskan,stobart,phallus,veikkausliiga,hornsey,buffering,bourbons,dobruja,marga,borax,electrics,gangnam,motorcyclist,whidbey,draconian,lodger,galilean,sanctification,imitates,boldness,underboss,wheatland,cantabrian,terceira,maumee,redefining,uppercase,ostroda,characterise,universalism,equalized,syndicalism,haringey,masovia,deleuze,funkadelic,conceals,thuan,minsky,pluralistic,ludendorff,beekeeping,bonfires,endoscopic,abuts,prebend,jonkoping,amami,tribunes,yup'ik,awadh,gasification,pforzheim,reforma,antiwar,vaishnavism,maryville,inextricably,margrethe,empresa,neutrophils,sanctified,ponca,elachistidae,curiae,quartier,mannar,hyperplasia,wimax,busing,neologism,florins,underrepresented,digitised,nieuw,cooch,howards,frege,hughie,plied,swale,kapellmeister,vajpayee,quadrupled,aeronautique,dushanbe,custos,saltillo,kisan,tigray,manaus,epigrams,shamanic,peppered,frosts,promotion/relegation,concedes,zwingli,charentes,whangarei,hyung,spring/summer,sobre,eretz,initialization,sawai,ephemera,grandfathered,arnaldo,customised,permeated,parapets,growths,visegrad,estudios,altamont,provincia,apologises,stoppard,carburettor,rifts,kinematic,zhengzhou,eschatology,prakrit,folate,yvelines,scapula,stupas,rishon,reconfiguration,flutist,1680s,apostolate,proudhon,lakshman,articulating,stortford,faithfull,bitterns,upwelling,qur'anic,lidar,interferometry,waterlogged,koirala,ditton,wavefunction,fazal,babbage,antioxidants,lemberg,deadlocked,tolled,ramapo,mathematica,leiria,topologies,khali,photonic,balti,1080p,corrects,recommenced,polyglot,friezes,tiebreak,copacabana,cholmondeley,armband,abolishment,sheamus,buttes,glycolysis,cataloged,warrenton,sassari,kishan,foodservice,cryptanalysis,holmenkollen,cosplay,machi,yousuf,mangal,allying,fertiliser,otomi,charlevoix,metallurg,parisians,bottlenose,oakleigh,debug,cidade,accede,ligation,madhava,pillboxes,gatefold,aveyron,sorin,thirsk,immemorial,menelik,mehra,domingos,underpinned,fleshed,harshness,diphthong,crestwood,miskolc,dupri,pyrausta,muskingum,tuoba,prodi,incidences,waynesboro,marquesas,heydar,artesian,calinescu,nucleation,funders,covalently,compaction,derbies,seaters,sodor,tabular,amadou,peckinpah,o'halloran,zechariah,libyans,kartik,daihatsu,chandran,erzhu,heresies,superheated,yarder,dorde,tanjore,abusers,xuanwu,juniperus,moesia,trusteeship,birdwatching,beatz,moorcock,harbhajan,sanga,choreographic,photonics,boylston,amalgamate,prawns,electrifying,sarath,inaccurately,exclaims,powerpoint,chaining,cpusa,adulterous,saccharomyces,glogow,vfl/afl,syncretic,simla,persisting,functors,allosteric,euphorbiaceae,juryo,mlada,moana,gabala,thornycroft,kumanovo,ostrovsky,sitio,tutankhamun,sauropods,kardzhali,reinterpretation,sulpice,rosyth,originators,halesowen,delineation,asesoria,abatement,gardai,elytra,taillights,overlays,monsoons,sandpipers,ingmar,henrico,inaccuracy,irwell,arenabowl,elche,pressburg,signalman,interviewees,sinkhole,pendle,ecommerce,cellos,nebria,organometallic,surrealistic,propagandist,interlaken,canandaigua,aerials,coutinho,pascagoula,tonopah,letterkenny,gropius,carbons,hammocks,childe,polities,hosiery,donitz,suppresses,diaghilev,stroudsburg,bagram,pistoia,regenerating,unitarians,takeaway,offstage,vidin,glorification,bakunin,yavapai,lutzow,sabercats,witney,abrogated,gorlitz,validating,dodecahedron,stubbornly,telenor,glaxosmithkline,solapur,undesired,jellicoe,dramatization,four-and-a-half,seawall,waterpark,artaxerxes,vocalization,typographic,byung,sachsenhausen,shepparton,kissimmee,konnan,belsen,dhawan,khurd,mutagenesis,vejle,perrot,estradiol,formula_60,saros,chiloe,misiones,lamprey,terrains,speke,miasto,eigenvectors,haydock,reservist,corticosteroids,savitri,shinawatra,developmentally,yehudi,berates,janissaries,recapturing,rancheria,subplots,gresley,nikkatsu,oryol,cosmas,boavista,formula_59,playfully,subsections,commentated,kathakali,dorid,vilaine,seepage,hylidae,keiji,kazakhs,triphosphate,1620s,supersede,monarchists,falla,miyako,notching,bhumibol,polarizing,secularized,shingled,bronislaw,lockerbie,soleyman,bundesbahn,latakia,redoubts,boult,inwardly,invents,ondrej,minangkabau,newquay,permanente,alhaji,madhav,malini,ellice,bookmaker,mankiewicz,etihad,o'dea,interrogative,mikawa,wallsend,canisius,bluesy,vitruvius,noord,ratifying,mixtec,gujranwala,subprefecture,keelung,goiania,nyssa,shi'ite,semitone,ch'uan,computerised,pertuan,catapults,nepomuk,shruti,millstones,buskerud,acolytes,tredegar,sarum,armia,dell'arte,devises,custodians,upturned,gallaudet,disembarking,thrashed,sagrada,myeon,undeclared,qumran,gaiden,tepco,janesville,showground,condense,chalon,unstaffed,pasay,undemocratic,hauts,viridis,uninjured,escutcheon,gymkhana,petaling,hammam,dislocations,tallaght,rerum,shias,indios,guaranty,simplicial,benares,benediction,tajiri,prolifically,huawei,onerous,grantee,ferencvaros,otranto,carbonates,conceit,digipak,qadri,masterclasses,swamiji,cradock,plunket,helmsman,119th,salutes,tippecanoe,murshidabad,intelligibility,mittal,diversifying,bidar,asansol,crowdsourcing,rovere,karakoram,grindcore,skylights,tulagi,furrows,ligne,stuka,sumer,subgraph,amata,regionalist,bulkeley,teletext,glorify,readied,lexicographer,sabadell,predictability,quilmes,phenylalanine,bandaranaike,pyrmont,marksmen,quisling,viscountess,sociopolitical,afoul,pediments,swazi,martyrology,nullify,panagiotis,superconductors,veldenz,jujuy,l'isle,hematopoietic,shafi,subsea,hattiesburg,jyvaskyla,kebir,myeloid,landmine,derecho,amerindians,birkenau,scriabin,milhaud,mucosal,nikaya,freikorps,theoretician,proconsul,o'hanlon,clerked,bactria,houma,macular,topologically,shrubby,aryeh,ghazali,afferent,magalhaes,moduli,ashtabula,vidarbha,securitate,ludwigsburg,adoor,varun,shuja,khatun,chengde,bushels,lascelles,professionnelle,elfman,rangpur,unpowered,citytv,chojnice,quaternion,stokowski,aschaffenburg,commutes,subramaniam,methylene,satrap,gharb,namesakes,rathore,helier,gestational,heraklion,colliers,giannis,pastureland,evocation,krefeld,mahadeva,churchmen,egret,yilmaz,galeazzo,pudukkottai,artigas,generalitat,mudslides,frescoed,enfeoffed,aphorisms,melilla,montaigne,gauliga,parkdale,mauboy,linings,prema,sapir,xylophone,kushan,rockne,sequoyah,vasyl,rectilinear,vidyasagar,microcosm,san'a,carcinogen,thicknesses,aleut,farcical,moderating,detested,hegemonic,instalments,vauban,verwaltungsgemeinschaft,picayune,razorback,magellanic,moluccas,pankhurst,exportation,waldegrave,sufferer,bayswater,1up.com,rearmament,orangutans,varazdin,b.o.b,elucidate,harlingen,erudition,brankovic,lapis,slipway,urraca,shinde,unwell,elwes,euboea,colwyn,srivijaya,grandstands,hortons,generalleutnant,fluxes,peterhead,gandhian,reals,alauddin,maximized,fairhaven,endow,ciechanow,perforations,darters,panellist,manmade,litigants,exhibitor,tirol,caracalla,conformance,hotelier,stabaek,hearths,borac,frisians,ident,veliko,emulators,schoharie,uzbeks,samarra,prestwick,wadia,universita,tanah,bucculatrix,predominates,genotypes,denounces,roadsides,ganassi,keokuk,philatelist,tomic,ingots,conduits,samplers,abdus,johar,allegories,timaru,wolfpacks,secunda,smeaton,sportivo,inverting,contraindications,whisperer,moradabad,calamities,bakufu,soundscape,smallholders,nadeem,crossroad,xenophobic,zakir,nationalliga,glazes,retroflex,schwyz,moroder,rubra,quraysh,theodoros,endemol,infidels,km/hr,repositioned,portraitist,lluis,answerable,arges,mindedness,coarser,eyewall,teleported,scolds,uppland,vibraphone,ricoh,isenburg,bricklayer,cuttlefish,abstentions,communicable,cephalopod,stockyards,balto,kinston,armbar,bandini,elphaba,maxims,bedouins,sachsen,friedkin,tractate,pamir,ivanovo,mohini,kovalainen,nambiar,melvyn,orthonormal,matsuyama,cuernavaca,veloso,overstated,streamer,dravid,informers,analyte,sympathized,streetscape,gosta,thomasville,grigore,futuna,depleting,whelks,kiedis,armadale,earner,wynyard,dothan,animating,tridentine,sabri,immovable,rivoli,ariege,parley,clinker,circulates,junagadh,fraunhofer,congregants,180th,buducnost,formula_62,olmert,dedekind,karnak,bayernliga,mazes,sandpiper,ecclestone,yuvan,smallmouth,decolonization,lemmy,adjudicated,retiro,legia,benue,posit,acidification,wahab,taconic,floatplane,perchlorate,atria,wisbech,divestment,dallara,phrygia,palustris,cybersecurity,rebates,facie,mineralogical,substituent,proteges,fowey,mayenne,smoothbore,cherwell,schwarzschild,junin,murrumbidgee,smalltalk,d'orsay,emirati,calaveras,titusville,theremin,vikramaditya,wampanoag,burra,plaines,onegin,emboldened,whampoa,langa,soderbergh,arnaz,sowerby,arendal,godunov,pathanamthitta,damselfly,bestowing,eurosport,iconoclasm,outfitters,acquiesced,badawi,hypotension,ebbsfleet,annulus,sohrab,thenceforth,chagatai,necessitates,aulus,oddities,toynbee,uniontown,innervation,populaire,indivisible,rossellini,minuet,cyrene,gyeongju,chania,cichlids,harrods,1690s,plunges,abdullahi,gurkhas,homebuilt,sortable,bangui,rediff,incrementally,demetrios,medaille,sportif,svend,guttenberg,tubules,carthusian,pleiades,torii,hoppus,phenyl,hanno,conyngham,teschen,cronenberg,wordless,melatonin,distinctiveness,autos,freising,xuanzang,dunwich,satanism,sweyn,predrag,contractually,pavlovic,malaysians,micrometres,expertly,pannonian,abstaining,capensis,southwesterly,catchphrases,commercialize,frankivsk,normanton,hibernate,verso,deportees,dubliners,codice_8,condors,zagros,glosses,leadville,conscript,morrisons,usury,ossian,oulton,vaccinium,civet,ayman,codrington,hadron,nanometers,geochemistry,extractor,grigori,tyrrhenian,neocollyris,drooping,falsification,werft,courtauld,brigantine,orhan,chapultepec,supercopa,federalized,praga,havering,encampments,infallibility,sardis,pawar,undirected,reconstructionist,ardrossan,varuna,pastimes,archdiocesan,fledging,shenhua,molise,secondarily,stagnated,replicates,ciencias,duryodhana,marauding,ruislip,ilyich,intermixed,ravenswood,shimazu,mycorrhizal,icosahedral,consents,dunblane,follicular,pekin,suffield,muromachi,kinsale,gauche,businesspeople,thereto,watauga,exaltation,chelmno,gorse,proliferate,drainages,burdwan,kangra,transducers,inductor,duvalier,maguindanao,moslem,uncaf,givenchy,plantarum,liturgics,telegraphs,lukashenko,chenango,andante,novae,ironwood,faubourg,torme,chinensis,ambala,pietermaritzburg,virginians,landform,bottlenecks,o'driscoll,darbhanga,baptistery,ameer,needlework,naperville,auditoriums,mullingar,starrer,animatronic,topsoil,madura,cannock,vernet,santurce,catocala,ozeki,pontevedra,multichannel,sundsvall,strategists,medio,135th,halil,afridi,trelawny,caloric,ghraib,allendale,hameed,ludwigshafen,spurned,pavlo,palmar,strafed,catamarca,aveiro,harmonization,surah,predictors,solvay,mande,omnipresent,parenthesis,echolocation,equaling,experimenters,acyclic,lithographic,sepoys,katarzyna,sridevi,impoundment,khosrow,caesarean,nacogdoches,rockdale,lawmaker,caucasians,bahman,miyan,rubric,exuberance,bombastic,ductile,snowdonia,inlays,pinyon,anemones,hurries,hospitallers,tayyip,pulleys,treme,photovoltaics,testbed,polonium,ryszard,osgoode,profiting,ironwork,unsurpassed,nepticulidae,makai,lumbini,preclassic,clarksburg,egremont,videography,rehabilitating,ponty,sardonic,geotechnical,khurasan,solzhenitsyn,henna,phoenicia,rhyolite,chateaux,retorted,tomar,deflections,repressions,harborough,renan,brumbies,vandross,storia,vodou,clerkenwell,decking,universo,salon.com,imprisoning,sudwest,ghaziabad,subscribing,pisgah,sukhumi,econometric,clearest,pindar,yildirim,iulia,atlases,cements,remaster,dugouts,collapsible,resurrecting,batik,unreliability,thiers,conjunctions,colophon,marcher,placeholder,flagella,wolds,kibaki,viviparous,twelver,screenshots,aroostook,khadr,iconographic,itasca,jaume,basti,propounded,varro,be'er,jeevan,exacted,shrublands,creditable,brocade,boras,bittern,oneonta,attentional,herzliya,comprehensible,lakeville,discards,caxias,frankland,camerata,satoru,matlab,commutator,interprovincial,yorkville,benefices,nizami,edwardsville,amigaos,cannabinoid,indianola,amateurliga,pernicious,ubiquity,anarchic,novelties,precondition,zardari,symington,sargodha,headphone,thermopylae,mashonaland,zindagi,thalberg,loewe,surfactants,dobro,crocodilians,samhita,diatoms,haileybury,berwickshire,supercritical,sofie,snorna,slatina,intramolecular,agung,osteoarthritis,obstetric,teochew,vakhtang,connemara,deformations,diadem,ferruccio,mainichi,qualitatively,refrigerant,rerecorded,methylated,karmapa,krasinski,restatement,rouvas,cubitt,seacoast,schwarzkopf,homonymous,shipowner,thiamine,approachable,xiahou,160th,ecumenism,polistes,internazionali,fouad,berar,biogeography,texting,inadequately,'when,4kids,hymenoptera,emplaced,cognomen,bellefonte,supplant,michaelmas,uriel,tafsir,morazan,schweinfurt,chorister,ps400,nscaa,petipa,resolutely,ouagadougou,mascarene,supercell,konstanz,bagrat,harmonix,bergson,shrimps,resonators,veneta,camas,mynydd,rumford,generalmajor,khayyam,web.com,pappus,halfdan,tanana,suomen,yutaka,bibliographical,traian,silat,noailles,contrapuntal,agaricus,'special,minibuses,1670s,obadiah,deepa,rorschach,malolos,lymington,valuations,imperials,caballeros,ambroise,judicature,elegiac,sedaka,shewa,checksum,gosforth,legionaries,corneille,microregion,friedrichshafen,antonis,surnamed,mycelium,cantus,educations,topmost,outfitting,ivica,nankai,gouda,anthemic,iosif,supercontinent,antifungal,belarusians,mudaliar,mohawks,caversham,glaciated,basemen,stevan,clonmel,loughton,deventer,positivist,manipuri,tensors,panipat,changeup,impermeable,dubbo,elfsborg,maritimo,regimens,bikram,bromeliad,substratum,norodom,gaultier,queanbeyan,pompeo,redacted,eurocopter,mothballed,centaurs,borno,copra,bemidji,'home,sopron,neuquen,passo,cineplex,alexandrov,wysokie,mammoths,yossi,sarcophagi,congreve,petkovic,extraneous,waterbirds,slurs,indias,phaeton,discontented,prefaced,abhay,prescot,interoperable,nordisk,bicyclists,validly,sejong,litovsk,zanesville,kapitanleutnant,kerch,changeable,mcclatchy,celebi,attesting,maccoll,sepahan,wayans,veined,gaudens,markt,dansk,soane,quantized,petersham,forebears,nayarit,frenzied,queuing,bygone,viggo,ludwik,tanka,hanssen,brythonic,cornhill,primorsky,stockpiles,conceptualization,lampeter,hinsdale,mesoderm,bielsk,rosenheim,ultron,joffrey,stanwyck,khagan,tiraspol,pavelic,ascendant,empoli,metatarsal,descentralizado,masada,ligier,huseyin,ramadi,waratah,tampines,ruthenium,statoil,mladost,liger,grecian,multiparty,digraph,maglev,reconsideration,radiography,cartilaginous,taizu,wintered,anabaptist,peterhouse,shoghi,assessors,numerator,paulet,painstakingly,halakhic,rocroi,motorcycling,gimel,kryptonian,emmeline,cheeked,drawdown,lelouch,dacians,brahmana,reminiscence,disinfection,optimizations,golders,extensor,tsugaru,tolling,liman,gulzar,unconvinced,crataegus,oppositional,dvina,pyrolysis,mandan,alexius,prion,stressors,loomed,moated,dhivehi,recyclable,relict,nestlings,sarandon,kosovar,solvers,czeslaw,kenta,maneuverable,middens,berkhamsted,comilla,folkways,loxton,beziers,batumi,petrochemicals,optimised,sirjan,rabindra,musicality,rationalisation,drillers,subspaces,'live,bbwaa,outfielders,tsung,danske,vandalised,norristown,striae,kanata,gastroenterology,steadfastly,equalising,bootlegging,mannerheim,notodontidae,lagoa,commentating,peninsulas,chishti,seismology,modigliani,preceptor,canonically,awardee,boyaca,hsinchu,stiffened,nacelle,bogor,dryness,unobstructed,yaqub,scindia,peeters,irritant,ammonites,ferromagnetic,speechwriter,oxygenated,walesa,millais,canarian,faience,calvinistic,discriminant,rasht,inker,annexes,howth,allocates,conditionally,roused,regionalism,regionalbahn,functionary,nitrates,bicentenary,recreates,saboteurs,koshi,plasmids,thinned,124th,plainview,kardashian,neuville,victorians,radiates,127th,vieques,schoolmates,petru,tokusatsu,keying,sunaina,flamethrower,'bout,demersal,hosokawa,corelli,omniscient,o'doherty,niksic,reflectivity,transdev,cavour,metronome,temporally,gabba,nsaids,geert,mayport,hematite,boeotia,vaudreuil,torshavn,sailplane,mineralogist,eskisehir,practises,gallifrey,takumi,unease,slipstream,hedmark,paulinus,ailsa,wielkopolska,filmworks,adamantly,vinaya,facelifted,franchisee,augustana,toppling,velvety,crispa,stonington,histological,genealogist,tactician,tebow,betjeman,nyingma,overwinter,oberoi,rampal,overwinters,petaluma,lactarius,stanmore,balikpapan,vasant,inclines,laminate,munshi,sociedade,rabbah,septal,boyband,ingrained,faltering,inhumans,nhtsa,affix,l'ordre,kazuki,rossendale,mysims,latvians,slaveholders,basilicata,neuburg,assize,manzanillo,scrobipalpa,formula_61,belgique,pterosaurs,privateering,vaasa,veria,northport,pressurised,hobbyist,austerlitz,sahih,bhadra,siliguri,bistrica,bursaries,wynton,corot,lepidus,lully,libor,libera,olusegun,choline,mannerism,lymphocyte,chagos,duxbury,parasitism,ecowas,morotai,cancion,coniston,aggrieved,sputnikmusic,parle,ammonian,civilisations,malformation,cattaraugus,skyhawks,d'arc,demerara,bronfman,midwinter,piscataway,jogaila,threonine,matins,kohlberg,hubli,pentatonic,camillus,nigam,potro,unchained,chauvel,orangeville,cistercians,redeployment,xanthi,manju,carabinieri,pakeha,nikolaevich,kantakouzenos,sesquicentennial,gunships,symbolised,teramo,ballo,crusading,l'oeil,bharatpur,lazier,gabrovo,hysteresis,rothbard,chaumont,roundel,ma'mun,sudhir,queried,newts,shimane,presynaptic,playfield,taxonomists,sensitivities,freleng,burkinabe,orfeo,autovia,proselytizing,bhangra,pasok,jujutsu,heung,pivoting,hominid,commending,formula_64,epworth,christianized,oresund,hantuchova,rajputana,hilversum,masoretic,dayak,bakri,assen,magog,macromolecules,waheed,qaida,spassky,rumped,protrudes,preminger,misogyny,glencairn,salafi,lacunae,grilles,racemes,areva,alighieri,inari,epitomized,photoshoot,one-of-a-kind,tring,muralist,tincture,backwaters,weaned,yeasts,analytically,smaland,caltrans,vysocina,jamuna,mauthausen,175th,nouvelles,censoring,reggina,christology,gilad,amplifying,mehmood,johnsons,redirects,eastgate,sacrum,meteoric,riverbanks,guidebooks,ascribes,scoparia,iconoclastic,telegraphic,chine,merah,mistico,lectern,sheung,aethelstan,capablanca,anant,uspto,albatrosses,mymensingh,antiretroviral,clonal,coorg,vaillant,liquidator,gigas,yokai,eradicating,motorcyclists,waitakere,tandon,nears,montenegrins,250th,tatsuya,yassin,atheistic,syncretism,nahum,berisha,transcended,owensboro,lakshmana,abteilung,unadorned,nyack,overflows,harrisonburg,complainant,uematsu,frictional,worsens,sangguniang,abutment,bulwer,sarma,apollinaire,shippers,lycia,alentejo,porpoises,optus,trawling,augustow,blackwall,workbench,westmount,leaped,sikandar,conveniences,stornoway,culverts,zoroastrians,hristo,ansgar,assistive,reassert,fanned,compasses,delgada,maisons,arima,plonsk,verlaine,starstruck,rakhine,befell,spirally,wyclef,expend,colloquium,formula_63,albertus,bellarmine,handedness,holon,introns,movimiento,profitably,lohengrin,discoverers,awash,erste,pharisees,dwarka,oghuz,hashing,heterodox,uloom,vladikavkaz,linesman,rehired,nucleophile,germanicus,gulshan,songz,bayerische,paralympian,crumlin,enjoined,khanum,prahran,penitent,amersfoort,saranac,semisimple,vagrants,compositing,tualatin,oxalate,lavra,ironi,ilkeston,umpqua,calum,stretford,zakat,guelders,hydrazine,birkin,spurring,modularity,aspartate,sodermanland,hopital,bellary,legazpi,clasico,cadfael,hypersonic,volleys,pharmacokinetics,carotene,orientale,pausini,bataille,lunga,retailed,m.phil,mazowieckie,vijayan,rawal,sublimation,promissory,estimators,ploughed,conflagration,penda,segregationist,otley,amputee,coauthor,sopra,pellew,wreckers,tollywood,circumscription,permittivity,strabane,landward,articulates,beaverbrook,rutherglen,coterminous,whistleblowers,colloidal,surbiton,atlante,oswiecim,bhasa,lampooned,chanter,saarc,landkreis,tribulation,tolerates,daiichi,hatun,cowries,dyschirius,abercromby,attock,aldwych,inflows,absolutist,l'histoire,committeeman,vanbrugh,headstock,westbourne,appenzell,hoxton,oculus,westfalen,roundabouts,nickelback,trovatore,quenching,summarises,conservators,transmutation,talleyrand,barzani,unwillingly,axonal,'blue,opining,enveloping,fidesz,rafah,colborne,flickr,lozenge,dulcimer,ndebele,swaraj,oxidize,gonville,resonated,gilani,superiore,endeared,janakpur,shepperton,solidifying,memoranda,sochaux,kurnool,rewari,emirs,kooning,bruford,unavailability,kayseri,judicious,negating,pterosaur,cytosolic,chernihiv,variational,sabretooth,seawolves,devalued,nanded,adverb,volunteerism,sealers,nemours,smederevo,kashubian,bartin,animax,vicomte,polotsk,polder,archiepiscopal,acceptability,quidditch,tussock,seminaire,immolation,belge,coves,wellingborough,khaganate,mckellen,nayaka,brega,kabhi,pontoons,bascule,newsreels,injectors,cobol,weblog,diplo,biggar,wheatbelt,erythrocytes,pedra,showgrounds,bogdanovich,eclecticism,toluene,elegies,formalize,andromedae,airworthiness,springville,mainframes,overexpression,magadha,bijelo,emlyn,glutamine,accenture,uhuru,metairie,arabidopsis,patanjali,peruvians,berezovsky,accion,astrolabe,jayanti,earnestly,sausalito,recurved,1500s,ramla,incineration,galleons,laplacian,shiki,smethwick,isomerase,dordevic,janow,jeffersonville,internationalism,penciled,styrene,ashur,nucleoside,peristome,horsemanship,sedges,bachata,medes,kristallnacht,schneerson,reflectance,invalided,strutt,draupadi,destino,partridges,tejas,quadrennial,aurel,halych,ethnomusicology,autonomist,radyo,rifting,shi'ar,crvena,telefilm,zawahiri,plana,sultanates,theodorus,subcontractors,pavle,seneschal,teleports,chernivtsi,buccal,brattleboro,stankovic,safar,dunhuang,electrocution,chastised,ergonomic,midsomer,130th,zomba,nongovernmental,escapist,localize,xuzhou,kyrie,carinthian,karlovac,nisan,kramnik,pilipino,digitisation,khasi,andronicus,highwayman,maior,misspelling,sebastopol,socon,rhaetian,archimandrite,partway,positivity,otaku,dingoes,tarski,geopolitics,disciplinarian,zulfikar,kenzo,globose,electrophilic,modele,storekeeper,pohang,wheldon,washers,interconnecting,digraphs,intrastate,campy,helvetic,frontispiece,ferrocarril,anambra,petraeus,midrib,endometrial,dwarfism,mauryan,endocytosis,brigs,percussionists,furtherance,synergistic,apocynaceae,krona,berthier,circumvented,casal,siltstone,precast,ethnikos,realists,geodesy,zarzuela,greenback,tripathi,persevered,interments,neutralization,olbermann,departements,supercomputing,demobilised,cassavetes,dunder,ministering,veszprem,barbarism,'world,pieve,apologist,frentzen,sulfides,firewalls,pronotum,staatsoper,hachette,makhachkala,oberland,phonon,yoshihiro,instars,purnima,winslet,mutsu,ergative,sajid,nizamuddin,paraphrased,ardeidae,kodagu,monooxygenase,skirmishers,sportiva,o'byrne,mykolaiv,ophir,prieta,gyllenhaal,kantian,leche,copan,herero,ps250,gelsenkirchen,shalit,sammarinese,chetwynd,wftda,travertine,warta,sigmaringen,concerti,namespace,ostergotland,biomarker,universals,collegio,embarcadero,wimborne,fiddlers,likening,ransomed,stifled,unabated,kalakaua,khanty,gongs,goodrem,countermeasure,publicizing,geomorphology,swedenborg,undefended,catastrophes,diverts,storyboards,amesbury,contactless,placentia,festivity,authorise,terrane,thallium,stradivarius,antonine,consortia,estimations,consecrate,supergiant,belichick,pendants,butyl,groza,univac,afire,kavala,studi,teletoon,paucity,gonbad,koninklijke,128th,stoichiometric,multimodal,facundo,anatomic,melamine,creuse,altan,brigands,mcguinty,blomfield,tsvangirai,protrusion,lurgan,warminster,tenzin,russellville,discursive,definable,scotrail,lignin,reincorporated,o'dell,outperform,redland,multicolored,evaporates,dimitrie,limbic,patapsco,interlingua,surrogacy,cutty,potrero,masud,cahiers,jintao,ardashir,centaurus,plagiarized,minehead,musings,statuettes,logarithms,seaview,prohibitively,downforce,rivington,tomorrowland,microbiologist,ferric,morag,capsid,kucinich,clairvaux,demotic,seamanship,cicada,painterly,cromarty,carbonic,tupou,oconee,tehuantepec,typecast,anstruther,internalized,underwriters,tetrahedra,flagrant,quakes,pathologies,ulrik,nahal,tarquini,dongguan,parnassus,ryoko,senussi,seleucia,airasia,einer,sashes,d'amico,matriculating,arabesque,honved,biophysical,hardinge,kherson,mommsen,diels,icbms,reshape,brasiliensis,palmach,netaji,oblate,functionalities,grigor,blacksburg,recoilless,melanchthon,reales,astrodome,handcrafted,memes,theorizes,isma'il,aarti,pirin,maatschappij,stabilizes,honiara,ashbury,copts,rootes,defensed,queiroz,mantegna,galesburg,coraciiformesfamily,cabrillo,tokio,antipsychotics,kanon,173rd,apollonia,finial,lydian,hadamard,rangi,dowlatabad,monolingual,platformer,subclasses,chiranjeevi,mirabeau,newsgroup,idmanyurdu,kambojas,walkover,zamoyski,generalist,khedive,flanges,knowle,bande,157th,alleyn,reaffirm,pininfarina,zuckerberg,hakodate,131st,aditi,bellinzona,vaulter,planking,boscombe,colombians,lysis,toppers,metered,nahyan,queensryche,minho,nagercoil,firebrand,foundress,bycatch,mendota,freeform,antena,capitalisation,martinus,overijssel,purists,interventionist,zgierz,burgundians,hippolyta,trompe,umatilla,moroccans,dictionnaire,hydrography,changers,chota,rimouski,aniline,bylaw,grandnephew,neamt,lemnos,connoisseurs,tractive,rearrangements,fetishism,finnic,apalachicola,landowning,calligraphic,circumpolar,mansfeld,legible,orientalism,tannhauser,blamey,maximization,noinclude,blackbirds,angara,ostersund,pancreatitis,glabra,acleris,juried,jungian,triumphantly,singlet,plasmas,synesthesia,yellowhead,unleashes,choiseul,quanzhong,brookville,kaskaskia,igcse,skatepark,jatin,jewellers,scaritinae,techcrunch,tellurium,lachaise,azuma,codeshare,dimensionality,unidirectional,scolaire,macdill,camshafts,unassisted,verband,kahlo,eliya,prelature,chiefdoms,saddleback,sockers,iommi,coloratura,llangollen,biosciences,harshest,maithili,k'iche,plical,multifunctional,andreu,tuskers,confounding,sambre,quarterdeck,ascetics,berdych,transversal,tuolumne,sagami,petrobras,brecker,menxia,instilling,stipulating,korra,oscillate,deadpan,v/line,pyrotechnic,stoneware,prelims,intracoastal,retraining,ilija,berwyn,encrypt,achievers,zulfiqar,glycoproteins,khatib,farmsteads,occultist,saman,fionn,derulo,khilji,obrenovic,argosy,toowong,dementieva,sociocultural,iconostasis,craigslist,festschrift,taifa,intercalated,tanjong,penticton,sharad,marxian,extrapolation,guises,wettin,prabang,exclaiming,kosta,famas,conakry,wanderings,'aliabad,macleay,exoplanet,bancorp,besiegers,surmounting,checkerboard,rajab,vliet,tarek,operable,wargaming,haldimand,fukuyama,uesugi,aggregations,erbil,brachiopods,tokyu,anglais,unfavorably,ujpest,escorial,armagnac,nagara,funafuti,ridgeline,cocking,o'gorman,compactness,retardant,krajowa,barua,coking,bestows,thampi,chicagoland,variably,o'loughlin,minnows,schwa,shaukat,polycarbonate,chlorinated,godalming,gramercy,delved,banqueting,enlil,sarada,prasanna,domhnall,decadal,regressive,lipoprotein,collectable,surendra,zaporizhia,cycliste,suchet,offsetting,formula_65,pudong,d'arte,blyton,quonset,osmania,tientsin,manorama,proteomics,bille,jalpaiguri,pertwee,barnegat,inventiveness,gollancz,euthanized,henricus,shortfalls,wuxia,chlorides,cerrado,polyvinyl,folktale,straddled,bioengineering,eschewing,greendale,recharged,olave,ceylonese,autocephalous,peacebuilding,wrights,guyed,rosamund,abitibi,bannockburn,gerontology,scutari,souness,seagram,codice_9,'open,xhtml,taguig,purposed,darbar,orthopedics,unpopulated,kisumu,tarrytown,feodor,polyhedral,monadnock,gottorp,priam,redesigning,gasworks,elfin,urquiza,homologation,filipovic,bohun,manningham,gornik,soundness,shorea,lanus,gelder,darke,sandgate,criticality,paranaense,153rd,vieja,lithograph,trapezoid,tiebreakers,convalescence,yan'an,actuaries,balad,altimeter,thermoelectric,trailblazer,previn,tenryu,ancaster,endoscopy,nicolet,discloses,fracking,plaine,salado,americanism,placards,absurdist,propylene,breccia,jirga,documenta,ismailis,161st,brentano,dallas/fort,embellishment,calipers,subscribes,mahavidyalaya,wednesbury,barnstormers,miwok,schembechler,minigame,unterberger,dopaminergic,inacio,nizamabad,overridden,monotype,cavernous,stichting,sassafras,sotho,argentinean,myrrh,rapidity,flatts,gowrie,dejected,kasaragod,cyprinidae,interlinked,arcseconds,degeneracy,infamously,incubate,substructure,trigeminal,sectarianism,marshlands,hooliganism,hurlers,isolationist,urania,burrard,switchover,lecco,wilts,interrogator,strived,ballooning,volterra,raciborz,relegating,gilding,cybele,dolomites,parachutist,lochaber,orators,raeburn,backend,benaud,rallycross,facings,banga,nuclides,defencemen,futurity,emitters,yadkin,eudonia,zambales,manasseh,sirte,meshes,peculiarly,mcminnville,roundly,boban,decrypt,icelanders,sanam,chelan,jovian,grudgingly,penalised,subscript,gambrinus,poaceae,infringements,maleficent,runciman,148th,supersymmetry,granites,liskeard,eliciting,involution,hallstatt,kitzbuhel,shankly,sandhills,inefficiencies,yishuv,psychotropic,nightjars,wavell,sangamon,vaikundar,choshu,retrospectives,pitesti,gigantea,hashemi,bosna,gakuin,siochana,arrangers,baronetcies,narayani,temecula,creston,koscierzyna,autochthonous,wyandot,anniston,igreja,mobilise,buzau,dunster,musselburgh,wenzhou,khattak,detoxification,decarboxylase,manlius,campbells,coleoptera,copyist,sympathisers,suisun,eminescu,defensor,transshipment,thurgau,somerton,fluctuates,ambika,weierstrass,lukow,giambattista,volcanics,romanticized,innovated,matabeleland,scotiabank,garwolin,purine,d'auvergne,borderland,maozhen,pricewaterhousecoopers,testator,pallium,scout.com,mv/pi,nazca,curacies,upjohn,sarasvati,monegasque,ketrzyn,malory,spikelets,biomechanics,haciendas,rapped,dwarfed,stews,nijinsky,subjection,matsu,perceptible,schwarzburg,midsection,entertains,circuitous,epiphytic,wonsan,alpini,bluefield,sloths,transportable,braunfels,dictum,szczecinek,jukka,wielun,wejherowo,hucknall,grameen,duodenum,ribose,deshpande,shahar,nexstar,injurious,dereham,lithographer,dhoni,structuralist,progreso,deschutes,christus,pulteney,quoins,yitzchak,gyeongsang,breviary,makkah,chiyoda,jutting,vineland,angiosperms,necrotic,novelisation,redistribute,tirumala,140th,featureless,mafic,rivaling,toyline,2/1st,martius,saalfeld,monthan,texian,kathak,melodramas,mithila,regierungsbezirk,509th,fermenting,schoolmate,virtuosic,briain,kokoda,heliocentric,handpicked,kilwinning,sonically,dinars,kasim,parkways,bogdanov,luxembourgian,halland,avesta,bardic,daugavpils,excavator,qwest,frustrate,physiographic,majoris,'ndrangheta,unrestrained,firmness,montalban,abundances,preservationists,adare,executioners,guardsman,bonnaroo,neglects,nazrul,pro12,hoorn,abercorn,refuting,kabud,cationic,parapsychology,troposphere,venezuelans,malignancy,khoja,unhindered,accordionist,medak,visby,ejercito,laparoscopic,dinas,umayyads,valmiki,o'dowd,saplings,stranding,incisions,illusionist,avocets,buccleuch,amazonia,fourfold,turboprops,roosts,priscus,turnstile,areal,certifies,pocklington,spoofs,viseu,commonalities,dabrowka,annam,homesteaders,daredevils,mondrian,negotiates,fiestas,perennials,maximizes,lubavitch,ravindra,scrapers,finials,kintyre,violas,snoqualmie,wilders,openbsd,mlawa,peritoneal,devarajan,congke,leszno,mercurial,fakir,joannes,bognor,overloading,unbuilt,gurung,scuttle,temperaments,bautzen,jardim,tradesman,visitations,barbet,sagamore,graaff,forecasters,wilsons,assis,l'air,shariah,sochaczew,russa,dirge,biliary,neuve,heartbreakers,strathearn,jacobian,overgrazing,edrich,anticline,parathyroid,petula,lepanto,decius,channelled,parvathi,puppeteers,communicators,francorchamps,kahane,longus,panjang,intron,traite,xxvii,matsuri,amrit,katyn,disheartened,cacak,omonia,alexandrine,partaking,wrangling,adjuvant,haskovo,tendrils,greensand,lammermoor,otherworld,volusia,stabling,one-and-a-half,bresson,zapatista,eotvos,ps150,webisodes,stepchildren,microarray,braganca,quanta,dolne,superoxide,bellona,delineate,ratha,lindenwood,bruhl,cingulate,tallies,bickerton,helgi,bevin,takoma,tsukuba,statuses,changeling,alister,bytom,dibrugarh,magnesia,duplicating,outlier,abated,goncalo,strelitz,shikai,mardan,musculature,ascomycota,springhill,tumuli,gabaa,odenwald,reformatted,autocracy,theresienstadt,suplex,chattopadhyay,mencken,congratulatory,weatherfield,systema,solemnity,projekt,quanzhou,kreuzberg,postbellum,nobuo,mediaworks,finisterre,matchplay,bangladeshis,kothen,oocyte,hovered,aromas,afshar,browed,teases,chorlton,arshad,cesaro,backbencher,iquique,vulcans,padmini,unabridged,cyclase,despotic,kirilenko,achaean,queensberry,debre,octahedron,iphigenia,curbing,karimnagar,sagarmatha,smelters,surrealists,sanada,shrestha,turridae,leasehold,jiedushi,eurythmics,appropriating,correze,thimphu,amery,musicomh,cyborgs,sandwell,pushcart,retorts,ameliorate,deteriorates,stojanovic,spline,entrenchments,bourse,chancellorship,pasolini,lendl,personage,reformulated,pubescens,loiret,metalurh,reinvention,nonhuman,eilema,tarsal,complutense,magne,broadview,metrodome,outtake,stouffville,seinen,bataillon,phosphoric,ostensible,opatow,aristides,beefheart,glorifying,banten,romsey,seamounts,fushimi,prophylaxis,sibylla,ranjith,goslar,balustrades,georgiev,caird,lafitte,peano,canso,bankura,halfpenny,segregate,caisson,bizerte,jamshedpur,euromaidan,philosophie,ridged,cheerfully,reclassification,aemilius,visionaries,samoans,wokingham,chemung,wolof,unbranched,cinerea,bhosle,ourense,immortalised,cornerstones,sourcebook,khufu,archimedean,universitatea,intermolecular,fiscally,suffices,metacomet,adjudicator,stablemate,specks,glace,inowroclaw,patristic,muharram,agitating,ashot,neurologic,didcot,gamla,ilves,putouts,siraj,laski,coaling,diarmuid,ratnagiri,rotulorum,liquefaction,morbihan,harel,aftershock,gruiformesfamily,bonnier,falconiformesfamily,adorns,wikis,maastrichtian,stauffenberg,bishopsgate,fakhr,sevenfold,ponders,quantifying,castiel,opacity,depredations,lenten,gravitated,o'mahony,modulates,inuktitut,paston,kayfabe,vagus,legalised,balked,arianism,tendering,sivas,birthdate,awlaki,khvajeh,shahab,samtgemeinde,bridgeton,amalgamations,biogenesis,recharging,tsukasa,mythbusters,chamfered,enthronement,freelancers,maharana,constantia,sutil,messines,monkton,okanogan,reinvigorated,apoplexy,tanahashi,neues,valiants,harappan,russes,carding,volkoff,funchal,statehouse,imitative,intrepidity,mellotron,samaras,turkana,besting,longitudes,exarch,diarrhoea,transcending,zvonareva,darna,ramblin,disconnection,137th,refocused,diarmait,agricole,ba'athist,turenne,contrabass,communis,daviess,fatimids,frosinone,fittingly,polyphyletic,qanat,theocratic,preclinical,abacha,toorak,marketplaces,conidia,seiya,contraindicated,retford,bundesautobahn,rebuilds,climatology,seaworthy,starfighter,qamar,categoria,malai,hellinsia,newstead,airworthy,catenin,avonmouth,arrhythmias,ayyavazhi,downgrade,ashburnham,ejector,kinematics,petworth,rspca,filmation,accipitridae,chhatrapati,g/mol,bacau,agama,ringtone,yudhoyono,orchestrator,arbitrators,138th,powerplants,cumbernauld,alderley,misamis,hawai`i,cuando,meistriliiga,jermyn,alans,pedigrees,ottavio,approbation,omnium,purulia,prioress,rheinland,lymphoid,lutsk,oscilloscope,ballina,iliac,motorbikes,modernising,uffizi,phylloxera,kalevala,bengalis,amravati,syntheses,interviewers,inflectional,outflank,maryhill,unhurt,profiler,nacelles,heseltine,personalised,guarda,herpetologist,airpark,pigot,margaretha,dinos,peleliu,breakbeat,kastamonu,shaivism,delamere,kingsville,epigram,khlong,phospholipids,journeying,lietuvos,congregated,deviance,celebes,subsoil,stroma,kvitova,lubricating,layoff,alagoas,olafur,doron,interuniversity,raycom,agonopterix,uzice,nanna,springvale,raimundo,wrested,pupal,talat,skinheads,vestige,unpainted,handan,odawara,ammar,attendee,lapped,myotis,gusty,ciconiiformesfamily,traversal,subfield,vitaphone,prensa,hasidism,inwood,carstairs,kropotkin,turgenev,dobra,remittance,purim,tannin,adige,tabulation,lethality,pacha,micronesian,dhruva,defensemen,tibeto,siculus,radioisotope,sodertalje,phitsanulok,euphonium,oxytocin,overhangs,skinks,fabrica,reinterred,emulates,bioscience,paragliding,raekwon,perigee,plausibility,frolunda,erroll,aznar,vyasa,albinus,trevally,confederacion,terse,sixtieth,1530s,kendriya,skateboarders,frontieres,muawiyah,easements,shehu,conservatively,keystones,kasem,brutalist,peekskill,cowry,orcas,syllabary,paltz,elisabetta,denticles,hampering,dolni,eidos,aarau,lermontov,yankton,shahbaz,barrages,kongsvinger,reestablishment,acetyltransferase,zulia,mrnas,slingsby,eucalypt,efficacious,weybridge,gradation,cinematheque,malthus,bampton,coexisted,cisse,hamdi,cupertino,saumarez,chionodes,libertine,formers,sakharov,pseudonymous,vol.1,mcduck,gopalakrishnan,amberley,jorhat,grandmasters,rudiments,dwindle,param,bukidnon,menander,americanus,multipliers,pulawy,homoerotic,pillbox,cd+dvd,epigraph,aleksandrow,extrapolated,horseshoes,contemporain,angiography,hasselt,shawinigan,memorization,legitimized,cyclades,outsold,rodolphe,kelis,powerball,dijkstra,analyzers,incompressible,sambar,orangeburg,osten,reauthorization,adamawa,sphagnum,hypermarket,millipedes,zoroaster,madea,ossuary,murrayfield,pronominal,gautham,resellers,ethers,quarrelled,dolna,stragglers,asami,tangut,passos,educacion,sharaf,texel,berio,bethpage,bezalel,marfa,noronha,36ers,genteel,avram,shilton,compensates,sweetener,reinstalled,disables,noether,1590s,balakrishnan,kotaro,northallerton,cataclysm,gholam,cancellara,schiphol,commends,longinus,albinism,gemayel,hamamatsu,volos,islamism,sidereal,pecuniary,diggings,townsquare,neosho,lushan,chittoor,akhil,disputation,desiccation,cambodians,thwarting,deliberated,ellipsis,bahini,susumu,separators,kohneh,plebeians,kultur,ogaden,pissarro,trypeta,latur,liaodong,vetting,datong,sohail,alchemists,lengthwise,unevenly,masterly,microcontrollers,occupier,deviating,farringdon,baccalaureat,theocracy,chebyshev,archivists,jayaram,ineffectiveness,scandinavians,jacobins,encomienda,nambu,g/cm3,catesby,paavo,heeded,rhodium,idealised,10deg,infective,mecyclothorax,halevy,sheared,minbari,audax,lusatian,rebuffs,hitfix,fastener,subjugate,tarun,binet,compuserve,synthesiser,keisuke,amalric,ligatures,tadashi,ignazio,abramovich,groundnut,otomo,maeve,mortlake,ostrogoths,antillean,todor,recto,millimetre,espousing,inaugurate,paracetamol,galvanic,harpalinae,jedrzejow,reassessment,langlands,civita,mikan,stikine,bijar,imamate,istana,kaiserliche,erastus,federale,cytosine,expansionism,hommes,norrland,smriti,snapdragon,gulab,taleb,lossy,khattab,urbanised,sesto,rekord,diffuser,desam,morganatic,silting,pacts,extender,beauharnais,purley,bouches,halfpipe,discontinuities,houthi,farmville,animism,horni,saadi,interpretative,blockades,symeon,biogeographic,transcaucasian,jetties,landrieu,astrocytes,conjunto,stumpings,weevils,geysers,redux,arching,romanus,tazeh,marcellinus,casein,opava,misrata,anare,sattar,declarer,dreux,oporto,venta,vallis,icosahedron,cortona,lachine,mohammedan,sandnes,zynga,clarin,diomedes,tsuyoshi,pribram,gulbarga,chartist,superettan,boscawen,altus,subang,gating,epistolary,vizianagaram,ogdensburg,panna,thyssen,tarkovsky,dzogchen,biograph,seremban,unscientific,nightjar,legco,deism,n.w.a,sudha,siskel,sassou,flintlock,jovial,montbeliard,pallida,formula_66,tranquillity,nisei,adornment,'people,yamhill,hockeyallsvenskan,adopters,appian,lowicz,haplotypes,succinctly,starogard,presidencies,kheyrabad,sobibor,kinesiology,cowichan,militum,cromwellian,leiningen,ps1.5,concourses,dalarna,goldfield,brzeg,faeces,aquarii,matchless,harvesters,181st,numismatics,korfball,sectioned,transpires,facultative,brandishing,kieron,forages,menai,glutinous,debarge,heathfield,1580s,malang,photoelectric,froome,semiotic,alwar,grammophon,chiaroscuro,mentalist,maramures,flacco,liquors,aleutians,marvell,sutlej,patnaik,qassam,flintoff,bayfield,haeckel,sueno,avicii,exoplanets,hoshi,annibale,vojislav,honeycombs,celebrant,rendsburg,veblen,quails,141st,carronades,savar,narrations,jeeva,ontologies,hedonistic,marinette,godot,munna,bessarabian,outrigger,thame,gravels,hoshino,falsifying,stereochemistry,nacionalista,medially,radula,ejecting,conservatorio,odile,ceiba,jaina,essonne,isometry,allophones,recidivism,iveco,ganda,grammarians,jagan,signposted,uncompressed,facilitators,constancy,ditko,propulsive,impaling,interbank,botolph,amlaib,intergroup,sorbus,cheka,debye,praca,adorning,presbyteries,dormition,strategos,qarase,pentecostals,beehives,hashemite,goldust,euronext,egress,arpanet,soames,jurchens,slovenska,copse,kazim,appraisals,marischal,mineola,sharada,caricaturist,sturluson,galba,faizabad,overwintering,grete,uyezds,didsbury,libreville,ablett,microstructure,anadolu,belenenses,elocution,cloaks,timeslots,halden,rashidun,displaces,sympatric,germanus,tuples,ceska,equalize,disassembly,krautrock,babangida,memel,deild,gopala,hematology,underclass,sangli,wawrinka,assur,toshack,refrains,nicotinic,bhagalpur,badami,racetracks,pocatello,walgreens,nazarbayev,occultation,spinnaker,geneon,josias,hydrolyzed,dzong,corregimiento,waistcoat,thermoplastic,soldered,anticancer,lactobacillus,shafi'i,carabus,adjournment,schlumberger,triceratops,despotate,mendicant,krishnamurti,bahasa,earthworm,lavoisier,noetherian,kalki,fervently,bhawan,saanich,coquille,gannet,motagua,kennels,mineralization,fitzherbert,svein,bifurcated,hairdressing,felis,abounded,dimers,fervour,hebdo,bluffton,aetna,corydon,clevedon,carneiro,subjectively,deutz,gastropoda,overshot,concatenation,varman,carolla,maharshi,mujib,inelastic,riverhead,initialized,safavids,rohini,caguas,bulges,fotbollforbund,hefei,spithead,westville,maronites,lytham,americo,gediminas,stephanus,chalcolithic,hijra,gnu/linux,predilection,rulership,sterility,haidar,scarlatti,saprissa,sviatoslav,pointedly,sunroof,guarantor,thevar,airstrips,pultusk,sture,129th,divinities,daizong,dolichoderus,cobourg,maoists,swordsmanship,uprated,bohme,tashi,largs,chandi,bluebeard,householders,richardsonian,drepanidae,antigonish,elbasan,occultism,marca,hypergeometric,oirat,stiglitz,ignites,dzungar,miquelon,pritam,d'automne,ulidiid,niamey,vallecano,fondo,billiton,incumbencies,raceme,chambery,cadell,barenaked,kagame,summerside,haussmann,hatshepsut,apothecaries,criollo,feint,nasals,timurid,feltham,plotinus,oxygenation,marginata,officinalis,salat,participations,ising,downe,izumo,unguided,pretence,coursed,haruna,viscountcy,mainstage,justicia,powiat,takara,capitoline,implacable,farben,stopford,cosmopterix,tuberous,kronecker,galatians,kweli,dogmas,exhorted,trebinje,skanda,newlyn,ablative,basidia,bhiwani,encroachments,stranglers,regrouping,tubal,shoestring,wawel,anionic,mesenchymal,creationists,pyrophosphate,moshi,despotism,powerbook,fatehpur,rupiah,segre,ternate,jessore,b.i.g,shevardnadze,abounds,gliwice,densest,memoria,suborbital,vietcong,ratepayers,karunanidhi,toolbar,descents,rhymney,exhortation,zahedan,carcinomas,hyperbaric,botvinnik,billets,neuropsychological,tigranes,hoards,chater,biennially,thistles,scotus,wataru,flotillas,hungama,monopolistic,payouts,vetch,generalissimo,caries,naumburg,piran,blizzards,escalates,reactant,shinya,theorize,rizzoli,transitway,ecclesiae,streptomyces,cantal,nisibis,superconductor,unworkable,thallus,roehampton,scheckter,viceroys,makuuchi,ilkley,superseding,takuya,klodzko,borbon,raspberries,operand,w.a.k.o,sarabande,factionalism,egalitarianism,temasek,torbat,unscripted,jorma,westerner,perfective,vrije,underlain,goldfrapp,blaenau,jomon,barthes,drivetime,bassa,bannock,umaga,fengxiang,zulus,sreenivasan,farces,codice_10,freeholder,poddebice,imperialists,deregulated,wingtip,o'hagan,pillared,overtone,hofstadter,149th,kitano,saybrook,standardizing,aldgate,staveley,o'flaherty,hundredths,steerable,soltan,empted,cruyff,intramuros,taluks,cotonou,marae,karur,figueres,barwon,lucullus,niobe,zemlya,lathes,homeported,chaux,amyotrophic,opines,exemplars,bhamo,homomorphisms,gauleiter,ladin,mafiosi,airdrieonians,b/soul,decal,transcaucasia,solti,defecation,deaconess,numidia,sampradaya,normalised,wingless,schwaben,alnus,cinerama,yakutsk,ketchikan,orvieto,unearned,monferrato,rotem,aacsb,loong,decoders,skerries,cardiothoracic,repositioning,pimpernel,yohannan,tenebrionoidea,nargis,nouvel,costliest,interdenominational,noize,redirecting,zither,morcha,radiometric,frequenting,irtysh,gbagbo,chakri,litvinenko,infotainment,ravensbruck,harith,corbels,maegashira,jousting,natan,novus,falcao,minis,railed,decile,rauma,ramaswamy,cavitation,paranaque,berchtesgaden,reanimated,schomberg,polysaccharides,exclusionary,cleon,anurag,ravaging,dhanush,mitchells,granule,contemptuous,keisei,rolleston,atlantean,yorkist,daraa,wapping,micrometer,keeneland,comparably,baranja,oranje,schlafli,yogic,dinajpur,unimpressive,masashi,recreativo,alemannic,petersfield,naoko,vasudeva,autosport,rajat,marella,busko,wethersfield,ssris,soulcalibur,kobani,wildland,rookery,hoffenheim,kauri,aliphatic,balaclava,ferrite,publicise,victorias,theism,quimper,chapbook,functionalist,roadbed,ulyanovsk,cupen,purpurea,calthorpe,teofilo,mousavi,cochlea,linotype,detmold,ellerslie,gakkai,telkom,southsea,subcontractor,inguinal,philatelists,zeebrugge,piave,trochidae,dempo,spoilt,saharanpur,mihrab,parasympathetic,barbarous,chartering,antiqua,katsina,bugis,categorizes,altstadt,kandyan,pambansa,overpasses,miters,assimilating,finlandia,uneconomic,am/fm,harpsichordist,dresdner,luminescence,authentically,overpowers,magmatic,cliftonville,oilfields,skirted,berthe,cuman,oakham,frelimo,glockenspiel,confection,saxophonists,piaseczno,multilevel,antipater,levying,maltreatment,velho,opoczno,harburg,pedophilia,unfunded,palettes,plasterwork,breve,dharmendra,auchinleck,nonesuch,blackmun,libretti,rabbani,145th,hasselbeck,kinnock,malate,vanden,cloverdale,ashgabat,nares,radians,steelworkers,sabor,possums,catterick,hemispheric,ostra,outpaced,dungeness,almshouse,penryn,texians,1000m,franchitti,incumbency,texcoco,newar,tramcars,toroidal,meitetsu,spellbound,agronomist,vinifera,riata,bunko,pinas,ba'al,github,vasilyevich,obsolescent,geodesics,ancestries,tujue,capitalised,unassigned,throng,unpaired,psychometric,skegness,exothermic,buffered,kristiansund,tongued,berenger,basho,alitalia,prolongation,archaeologically,fractionation,cyprinid,echinoderms,agriculturally,justiciar,sonam,ilium,baits,danceable,grazer,ardahan,grassed,preemption,glassworks,hasina,ugric,umbra,wahhabi,vannes,tinnitus,capitaine,tikrit,lisieux,scree,hormuz,despenser,jagiellon,maisonneuve,gandaki,santarem,basilicas,lancing,landskrona,weilburg,fireside,elysian,isleworth,krishnamurthy,filton,cynon,tecmo,subcostal,scalars,triglycerides,hyperplane,farmingdale,unione,meydan,pilings,mercosur,reactivate,akiba,fecundity,jatra,natsume,zarqawi,preta,masao,presbyter,oakenfold,rhodri,ferran,ruizong,cloyne,nelvana,epiphanius,borde,scutes,strictures,troughton,whitestone,sholom,toyah,shingon,kutuzov,abelard,passant,lipno,cafeterias,residuals,anabaptists,paratransit,criollos,pleven,radiata,destabilizing,hadiths,bazaars,mannose,taiyo,crookes,welbeck,baoding,archelaus,nguesso,alberni,wingtips,herts,viasat,lankans,evreux,wigram,fassbinder,ryuichi,storting,reducible,olesnica,znojmo,hyannis,theophanes,flatiron,mustering,rajahmundry,kadir,wayang,prome,lethargy,zubin,illegality,conall,dramedy,beerbohm,hipparchus,ziarat,ryuji,shugo,glenorchy,microarchitecture,morne,lewinsky,cauvery,battenberg,hyksos,wayanad,hamilcar,buhari,brazo,bratianu,solms,aksaray,elamite,chilcotin,bloodstock,sagara,dolny,reunified,umlaut,proteaceae,camborne,calabrian,dhanbad,vaxjo,cookware,potez,rediffusion,semitones,lamentations,allgau,guernica,suntory,pleated,stationing,urgell,gannets,bertelsmann,entryway,raphitomidae,acetaldehyde,nephrology,categorizing,beiyang,permeate,tourney,geosciences,khana,masayuki,crucis,universitaria,slaskie,khaimah,finno,advani,astonishingly,tubulin,vampiric,jeolla,sociale,cleethorpes,badri,muridae,suzong,debater,decimation,kenyans,mutualism,pontifex,middlemen,insee,halevi,lamentation,psychopathy,brassey,wenders,kavya,parabellum,prolactin,inescapable,apses,malignancies,rinzai,stigmatized,menahem,comox,ateliers,welshpool,setif,centimetre,truthfulness,downfield,drusus,woden,glycosylation,emanated,agulhas,dalkeith,jazira,nucky,unifil,jobim,operon,oryzomys,heroically,seances,supernumerary,backhouse,hashanah,tatler,imago,invert,hayato,clockmaker,kingsmill,swiecie,analogously,golconda,poste,tacitly,decentralised,ge'ez,diplomatically,fossiliferous,linseed,mahavira,pedestals,archpriest,byelection,domiciled,jeffersonian,bombus,winegrowing,waukegan,uncultivated,haverfordwest,saumur,communally,disbursed,cleeve,zeljeznicar,speciosa,vacationers,sigur,vaishali,zlatko,iftikhar,cropland,transkei,incompleteness,bohra,subantarctic,slieve,physiologic,similis,klerk,replanted,'right,chafee,reproducible,bayburt,regicide,muzaffarpur,plurals,hanyu,orthologs,diouf,assailed,kamui,tarik,dodecanese,gorne,on/off,179th,shimoga,granaries,carlists,valar,tripolitania,sherds,simmern,dissociated,isambard,polytechnical,yuvraj,brabazon,antisense,pubmed,glans,minutely,masaaki,raghavendra,savoury,podcasting,tachi,bienville,gongsun,ridgely,deform,yuichi,binders,canna,carcetti,llobregat,implored,berri,njegos,intermingled,offload,athenry,motherhouse,corpora,kakinada,dannebrog,imperio,prefaces,musicologists,aerospatiale,shirai,nagapattinam,servius,cristoforo,pomfret,reviled,entebbe,stane,east/west,thermometers,matriarchal,siglo,bodil,legionnaire,ze'ev,theorizing,sangeetha,horticulturist,uncountable,lookalike,anoxic,ionospheric,genealogists,chicopee,imprinting,popish,crematoria,diamondback,cyathea,hanzhong,cameramen,halogaland,naklo,waclaw,storehouses,flexed,comuni,frits,glauca,nilgiris,compresses,nainital,continuations,albay,hypoxic,samajwadi,dunkerque,nanticoke,sarwar,interchanged,jubal,corba,jalgaon,derleth,deathstroke,magny,vinnytsia,hyphenated,rimfire,sawan,boehner,disrepute,normalize,aromanian,dualistic,approximant,chama,karimabad,barnacles,sanok,stipends,dyfed,rijksmuseum,reverberation,suncorp,fungicides,reverie,spectrograph,stereophonic,niazi,ordos,alcan,karaite,lautrec,tableland,lamellar,rieti,langmuir,russula,webern,tweaks,hawick,southerner,morphy,naturalisation,enantiomer,michinoku,barbettes,relieves,carburettors,redruth,oblates,vocabularies,mogilev,bagmati,galium,reasserted,extolled,symon,eurosceptic,inflections,tirtha,recompense,oruro,roping,gouverneur,pared,yayoi,watermills,retooled,leukocytes,jubilant,mazhar,nicolau,manheim,touraine,bedser,hambledon,kohat,powerhouses,tlemcen,reuven,sympathetically,afrikaners,interes,handcrafts,etcher,baddeley,wodonga,amaury,155th,vulgarity,pompadour,automorphisms,1540s,oppositions,prekmurje,deryni,fortifying,arcuate,mahila,bocage,uther,nozze,slashes,atlantica,hadid,rhizomatous,azeris,'with,osmena,lewisville,innervated,bandmaster,outcropping,parallelogram,dominicana,twang,ingushetia,extensional,ladino,sastry,zinoviev,relatable,nobilis,cbeebies,hitless,eulima,sporangia,synge,longlisted,criminalized,penitential,weyden,tubule,volyn,priestesses,glenbrook,kibbutzim,windshaft,canadair,falange,zsolt,bonheur,meine,archangels,safeguarded,jamaicans,malarial,teasers,badging,merseyrail,operands,pulsars,gauchos,biotin,bambara,necaxa,egmond,tillage,coppi,anxiolytic,preah,mausoleums,plautus,feroz,debunked,187th,belediyespor,mujibur,wantage,carboxyl,chettiar,murnau,vagueness,racemic,backstretch,courtland,municipio,palpatine,dezful,hyperbola,sreekumar,chalons,altay,arapahoe,tudors,sapieha,quilon,burdensome,kanya,xxviii,recension,generis,siphuncle,repressor,bitrate,mandals,midhurst,dioxin,democratique,upholds,rodez,cinematographic,epoque,jinping,rabelais,zhytomyr,glenview,rebooted,khalidi,reticulata,122nd,monnaie,passersby,ghazals,europaea,lippmann,earthbound,tadic,andorran,artvin,angelicum,banksy,epicentre,resemblances,shuttled,rathaus,bernt,stonemasons,balochi,siang,tynemouth,cygni,biosynthetic,precipitates,sharecroppers,d'annunzio,softbank,shiji,apeldoorn,polycyclic,wenceslas,wuchang,samnites,tamarack,silmarillion,madinah,palaeontology,kirchberg,sculpin,rohtak,aquabats,oviparous,thynne,caney,blimps,minimalistic,whatcom,palatalization,bardstown,direct3d,paramagnetic,kamboja,khash,globemaster,lengua,matej,chernigov,swanage,arsenals,cascadia,cundinamarca,tusculum,leavers,organics,warplanes,'three,exertions,arminius,gandharva,inquires,comercio,kuopio,chabahar,plotlines,mersenne,anquetil,paralytic,buckminster,ambit,acrolophus,quantifiers,clacton,ciliary,ansaldo,fergana,egoism,thracians,chicoutimi,northbrook,analgesia,brotherhoods,hunza,adriaen,fluoridation,snowfalls,soundboard,fangoria,cannibalistic,orthogonius,chukotka,dindigul,manzoni,chainz,macromedia,beltline,muruga,schistura,provable,litex,initio,pneumoniae,infosys,cerium,boonton,cannonballs,d'une,solvency,mandurah,houthis,dolmens,apologists,radioisotopes,blaxploitation,poroshenko,stawell,coosa,maximilien,tempelhof,espouse,declaratory,hambro,xalapa,outmoded,mihiel,benefitting,desirous,archeparchy,repopulated,telescoping,captor,mackaye,disparaged,ramanathan,crowne,tumbled,technetium,silted,chedi,nievre,hyeon,cartoonish,interlock,infocom,rediff.com,dioramas,timekeeping,concertina,kutaisi,cesky,lubomirski,unapologetic,epigraphic,stalactites,sneha,biofilm,falconry,miraflores,catena,'outstanding,prospekt,apotheosis,o'odham,pacemakers,arabica,gandhinagar,reminisces,iroquoian,ornette,tilling,neoliberalism,chameleons,pandava,prefontaine,haiyan,gneisenau,utama,bando,reconstitution,azaria,canola,paratroops,ayckbourn,manistee,stourton,manifestos,lympne,denouement,tractatus,rakim,bellflower,nanometer,sassanids,turlough,presbyterianism,varmland,20deg,phool,nyerere,almohad,manipal,vlaanderen,quickness,removals,makow,circumflex,eatery,morane,fondazione,alkylation,unenforceable,galliano,silkworm,junior/senior,abducts,phlox,konskie,lofoten,buuren,glyphosate,faired,naturae,cobbles,taher,skrulls,dostoevsky,walkout,wagnerian,orbited,methodically,denzil,sarat,extraterritorial,kohima,d'armor,brinsley,rostropovich,fengtian,comitatus,aravind,moche,wrangell,giscard,vantaa,viljandi,hakoah,seabees,muscatine,ballade,camanachd,sothern,mullioned,durad,margraves,maven,arete,chandni,garifuna,142nd,reading/literature,thickest,intensifies,trygve,khaldun,perinatal,asana,powerline,acetylation,nureyev,omiya,montesquieu,riverwalk,marly,correlating,intermountain,bulgar,hammerheads,underscores,wiretapping,quatrain,ruisseau,newsagent,tuticorin,polygyny,hemsworth,partisanship,banna,istrian,evaporator\".split(\",\"),\n female_names: \"mary,patricia,linda,barbara,elizabeth,jennifer,maria,susan,margaret,dorothy,lisa,nancy,karen,betty,helen,sandra,donna,carol,ruth,sharon,michelle,laura,sarah,kimberly,deborah,jessica,shirley,cynthia,angela,melissa,brenda,amy,anna,rebecca,virginia,kathleen,pamela,martha,debra,amanda,stephanie,carolyn,christine,marie,janet,catherine,frances,ann,joyce,diane,alice,julie,heather,teresa,doris,gloria,evelyn,jean,cheryl,mildred,katherine,joan,ashley,judith,rose,janice,kelly,nicole,judy,christina,kathy,theresa,beverly,denise,tammy,irene,jane,lori,rachel,marilyn,andrea,kathryn,louise,sara,anne,jacqueline,wanda,bonnie,julia,ruby,lois,tina,phyllis,norma,paula,diana,annie,lillian,emily,robin,peggy,crystal,gladys,rita,dawn,connie,florence,tracy,edna,tiffany,carmen,rosa,cindy,grace,wendy,victoria,edith,kim,sherry,sylvia,josephine,thelma,shannon,sheila,ethel,ellen,elaine,marjorie,carrie,charlotte,monica,esther,pauline,emma,juanita,anita,rhonda,hazel,amber,eva,debbie,april,leslie,clara,lucille,jamie,joanne,eleanor,valerie,danielle,megan,alicia,suzanne,michele,gail,bertha,darlene,veronica,jill,erin,geraldine,lauren,cathy,joann,lorraine,lynn,sally,regina,erica,beatrice,dolores,bernice,audrey,yvonne,annette,marion,dana,stacy,ana,renee,ida,vivian,roberta,holly,brittany,melanie,loretta,yolanda,jeanette,laurie,katie,kristen,vanessa,alma,sue,elsie,beth,jeanne,vicki,carla,tara,rosemary,eileen,terri,gertrude,lucy,tonya,ella,stacey,wilma,gina,kristin,jessie,natalie,agnes,vera,charlene,bessie,delores,melinda,pearl,arlene,maureen,colleen,allison,tamara,joy,georgia,constance,lillie,claudia,jackie,marcia,tanya,nellie,minnie,marlene,heidi,glenda,lydia,viola,courtney,marian,stella,caroline,dora,vickie,mattie,maxine,irma,mabel,marsha,myrtle,lena,christy,deanna,patsy,hilda,gwendolyn,jennie,nora,margie,nina,cassandra,leah,penny,kay,priscilla,naomi,carole,olga,billie,dianne,tracey,leona,jenny,felicia,sonia,miriam,velma,becky,bobbie,violet,kristina,toni,misty,mae,shelly,daisy,ramona,sherri,erika,katrina,claire,lindsey,lindsay,geneva,guadalupe,belinda,margarita,sheryl,cora,faye,ada,sabrina,isabel,marguerite,hattie,harriet,molly,cecilia,kristi,brandi,blanche,sandy,rosie,joanna,iris,eunice,angie,inez,lynda,madeline,amelia,alberta,genevieve,monique,jodi,janie,kayla,sonya,jan,kristine,candace,fannie,maryann,opal,alison,yvette,melody,luz,susie,olivia,flora,shelley,kristy,mamie,lula,lola,verna,beulah,antoinette,candice,juana,jeannette,pam,kelli,whitney,bridget,karla,celia,latoya,patty,shelia,gayle,della,vicky,lynne,sheri,marianne,kara,jacquelyn,erma,blanca,myra,leticia,pat,krista,roxanne,angelica,robyn,adrienne,rosalie,alexandra,brooke,bethany,sadie,bernadette,traci,jody,kendra,nichole,rachael,mable,ernestine,muriel,marcella,elena,krystal,angelina,nadine,kari,estelle,dianna,paulette,lora,mona,doreen,rosemarie,desiree,antonia,janis,betsy,christie,freda,meredith,lynette,teri,cristina,eula,leigh,meghan,sophia,eloise,rochelle,gretchen,cecelia,raquel,henrietta,alyssa,jana,gwen,jenna,tricia,laverne,olive,tasha,silvia,elvira,delia,kate,patti,lorena,kellie,sonja,lila,lana,darla,mindy,essie,mandy,lorene,elsa,josefina,jeannie,miranda,dixie,lucia,marta,faith,lela,johanna,shari,camille,tami,shawna,elisa,ebony,melba,ora,nettie,tabitha,ollie,winifred,kristie,alisha,aimee,rena,myrna,marla,tammie,latasha,bonita,patrice,ronda,sherrie,addie,francine,deloris,stacie,adriana,cheri,abigail,celeste,jewel,cara,adele,rebekah,lucinda,dorthy,effie,trina,reba,sallie,aurora,lenora,etta,lottie,kerri,trisha,nikki,estella,francisca,josie,tracie,marissa,karin,brittney,janelle,lourdes,laurel,helene,fern,elva,corinne,kelsey,ina,bettie,elisabeth,aida,caitlin,ingrid,iva,eugenia,christa,goldie,maude,jenifer,therese,dena,lorna,janette,latonya,candy,consuelo,tamika,rosetta,debora,cherie,polly,dina,jewell,fay,jillian,dorothea,nell,trudy,esperanza,patrica,kimberley,shanna,helena,cleo,stefanie,rosario,ola,janine,mollie,lupe,alisa,lou,maribel,susanne,bette,susana,elise,cecile,isabelle,lesley,jocelyn,paige,joni,rachelle,leola,daphne,alta,ester,petra,graciela,imogene,jolene,keisha,lacey,glenna,gabriela,keri,ursula,lizzie,kirsten,shana,adeline,mayra,jayne,jaclyn,gracie,sondra,carmela,marisa,rosalind,charity,tonia,beatriz,marisol,clarice,jeanine,sheena,angeline,frieda,lily,shauna,millie,claudette,cathleen,angelia,gabrielle,autumn,katharine,jodie,staci,lea,christi,justine,elma,luella,margret,dominique,socorro,martina,margo,mavis,callie,bobbi,maritza,lucile,leanne,jeannine,deana,aileen,lorie,ladonna,willa,manuela,gale,selma,dolly,sybil,abby,ivy,dee,winnie,marcy,luisa,jeri,magdalena,ofelia,meagan,audra,matilda,leila,cornelia,bianca,simone,bettye,randi,virgie,latisha,barbra,georgina,eliza,leann,bridgette,rhoda,haley,adela,nola,bernadine,flossie,ila,greta,ruthie,nelda,minerva,lilly,terrie,letha,hilary,estela,valarie,brianna,rosalyn,earline,catalina,ava,mia,clarissa,lidia,corrine,alexandria,concepcion,tia,sharron,rae,dona,ericka,jami,elnora,chandra,lenore,neva,marylou,melisa,tabatha,serena,avis,allie,sofia,jeanie,odessa,nannie,harriett,loraine,penelope,milagros,emilia,benita,allyson,ashlee,tania,esmeralda,eve,pearlie,zelma,malinda,noreen,tameka,saundra,hillary,amie,althea,rosalinda,lilia,alana,clare,alejandra,elinor,lorrie,jerri,darcy,earnestine,carmella,noemi,marcie,liza,annabelle,louisa,earlene,mallory,carlene,nita,selena,tanisha,katy,julianne,lakisha,edwina,maricela,margery,kenya,dollie,roxie,roslyn,kathrine,nanette,charmaine,lavonne,ilene,tammi,suzette,corine,kaye,chrystal,lina,deanne,lilian,juliana,aline,luann,kasey,maryanne,evangeline,colette,melva,lawanda,yesenia,nadia,madge,kathie,ophelia,valeria,nona,mitzi,mari,georgette,claudine,fran,alissa,roseann,lakeisha,susanna,reva,deidre,chasity,sheree,elvia,alyce,deirdre,gena,briana,araceli,katelyn,rosanne,wendi,tessa,berta,marva,imelda,marietta,marci,leonor,arline,sasha,madelyn,janna,juliette,deena,aurelia,josefa,augusta,liliana,lessie,amalia,savannah,anastasia,vilma,natalia,rosella,lynnette,corina,alfreda,leanna,amparo,coleen,tamra,aisha,wilda,karyn,maura,mai,evangelina,rosanna,hallie,erna,enid,mariana,lacy,juliet,jacklyn,freida,madeleine,mara,cathryn,lelia,casandra,bridgett,angelita,jannie,dionne,annmarie,katina,beryl,millicent,katheryn,diann,carissa,maryellen,liz,lauri,helga,gilda,rhea,marquita,hollie,tisha,tamera,angelique,francesca,kaitlin,lolita,florine,rowena,reyna,twila,fanny,janell,ines,concetta,bertie,alba,brigitte,alyson,vonda,pansy,elba,noelle,letitia,deann,brandie,louella,leta,felecia,sharlene,lesa,beverley,isabella,herminia,terra,celina,tori,octavia,jade,denice,germaine,michell,cortney,nelly,doretha,deidra,monika,lashonda,judi,chelsey,antionette,margot,adelaide,leeann,elisha,dessie,libby,kathi,gayla,latanya,mina,mellisa,kimberlee,jasmin,renae,zelda,elda,justina,gussie,emilie,camilla,abbie,rocio,kaitlyn,edythe,ashleigh,selina,lakesha,geri,allene,pamala,michaela,dayna,caryn,rosalia,jacquline,rebeca,marybeth,krystle,iola,dottie,belle,griselda,ernestina,elida,adrianne,demetria,delma,jaqueline,arleen,virgina,retha,fatima,tillie,eleanore,cari,treva,wilhelmina,rosalee,maurine,latrice,jena,taryn,elia,debby,maudie,jeanna,delilah,catrina,shonda,hortencia,theodora,teresita,robbin,danette,delphine,brianne,nilda,danna,cindi,bess,iona,winona,vida,rosita,marianna,racheal,guillermina,eloisa,celestine,caren,malissa,lona,chantel,shellie,marisela,leora,agatha,soledad,migdalia,ivette,christen,athena,janel,veda,pattie,tessie,tera,marilynn,lucretia,karrie,dinah,daniela,alecia,adelina,vernice,shiela,portia,merry,lashawn,dara,tawana,verda,alene,zella,sandi,rafaela,maya,kira,candida,alvina,suzan,shayla,lettie,samatha,oralia,matilde,larissa,vesta,renita,delois,shanda,phillis,lorri,erlinda,cathrine,barb,isabell,ione,gisela,roxanna,mayme,kisha,ellie,mellissa,dorris,dalia,bella,annetta,zoila,reta,reina,lauretta,kylie,christal,pilar,charla,elissa,tiffani,tana,paulina,leota,breanna,jayme,carmel,vernell,tomasa,mandi,dominga,santa,melodie,lura,alexa,tamela,mirna,kerrie,venus,felicita,cristy,carmelita,berniece,annemarie,tiara,roseanne,missy,cori,roxana,pricilla,kristal,jung,elyse,haydee,aletha,bettina,marge,gillian,filomena,zenaida,harriette,caridad,vada,aretha,pearline,marjory,marcela,flor,evette,elouise,alina,damaris,catharine,belva,nakia,marlena,luanne,lorine,karon,dorene,danita,brenna,tatiana,louann,julianna,andria,philomena,lucila,leonora,dovie,romona,mimi,jacquelin,gaye,tonja,misti,chastity,stacia,roxann,micaela,velda,marlys,johnna,aura,ivonne,hayley,nicki,majorie,herlinda,yadira,perla,gregoria,antonette,shelli,mozelle,mariah,joelle,cordelia,josette,chiquita,trista,laquita,georgiana,candi,shanon,hildegard,stephany,magda,karol,gabriella,tiana,roma,richelle,oleta,jacque,idella,alaina,suzanna,jovita,tosha,nereida,marlyn,kyla,delfina,tena,stephenie,sabina,nathalie,marcelle,gertie,darleen,thea,sharonda,shantel,belen,venessa,rosalina,genoveva,clementine,rosalba,renate,renata,georgianna,floy,dorcas,ariana,tyra,theda,mariam,juli,jesica,vikki,verla,roselyn,melvina,jannette,ginny,debrah,corrie,violeta,myrtis,latricia,collette,charleen,anissa,viviana,twyla,nedra,latonia,hellen,fabiola,annamarie,adell,sharyn,chantal,niki,maud,lizette,lindy,kesha,jeana,danelle,charline,chanel,valorie,dortha,cristal,sunny,leone,leilani,gerri,debi,andra,keshia,eulalia,easter,dulce,natividad,linnie,kami,georgie,catina,brook,alda,winnifred,sharla,ruthann,meaghan,magdalene,lissette,adelaida,venita,trena,shirlene,shameka,elizebeth,dian,shanta,latosha,carlotta,windy,rosina,mariann,leisa,jonnie,dawna,cathie,astrid,laureen,janeen,holli,fawn,vickey,teressa,shante,rubye,marcelina,chanda,terese,scarlett,marnie,lulu,lisette,jeniffer,elenor,dorinda,donita,carman,bernita,altagracia,aleta,adrianna,zoraida,lyndsey,janina,starla,phylis,phuong,kyra,charisse,blanch,sanjuanita,rona,nanci,marilee,maranda,brigette,sanjuana,marita,kassandra,joycelyn,felipa,chelsie,bonny,mireya,lorenza,kyong,ileana,candelaria,sherie,lucie,leatrice,lakeshia,gerda,edie,bambi,marylin,lavon,hortense,garnet,evie,tressa,shayna,lavina,kyung,jeanetta,sherrill,shara,phyliss,mittie,anabel,alesia,thuy,tawanda,joanie,tiffanie,lashanda,karissa,enriqueta,daria,daniella,corinna,alanna,abbey,roxane,roseanna,magnolia,lida,joellen,coral,carleen,tresa,peggie,novella,nila,maybelle,jenelle,carina,nova,melina,marquerite,margarette,josephina,evonne,cinthia,albina,toya,tawnya,sherita,myriam,lizabeth,lise,keely,jenni,giselle,cheryle,ardith,ardis,alesha,adriane,shaina,linnea,karolyn,felisha,dori,darci,artie,armida,zola,xiomara,vergie,shamika,nena,nannette,maxie,lovie,jeane,jaimie,inge,farrah,elaina,caitlyn,felicitas,cherly,caryl,yolonda,yasmin,teena,prudence,pennie,nydia,mackenzie,orpha,marvel,lizbeth,laurette,jerrie,hermelinda,carolee,tierra,mirian,meta,melony,kori,jennette,jamila,yoshiko,susannah,salina,rhiannon,joleen,cristine,ashton,aracely,tomeka,shalonda,marti,lacie,kala,jada,ilse,hailey,brittani,zona,syble,sherryl,nidia,marlo,kandice,kandi,alycia,ronna,norene,mercy,ingeborg,giovanna,gemma,christel,audry,zora,vita,trish,stephaine,shirlee,shanika,melonie,mazie,jazmin,inga,hettie,geralyn,fonda,estrella,adella,sarita,rina,milissa,maribeth,golda,evon,ethelyn,enedina,cherise,chana,velva,tawanna,sade,mirta,karie,jacinta,elna,davina,cierra,ashlie,albertha,tanesha,nelle,mindi,lorinda,larue,florene,demetra,dedra,ciara,chantelle,ashly,suzy,rosalva,noelia,lyda,leatha,krystyna,kristan,karri,darline,darcie,cinda,cherrie,awilda,almeda,rolanda,lanette,jerilyn,gisele,evalyn,cyndi,cleta,carin,zina,zena,velia,tanika,charissa,talia,margarete,lavonda,kaylee,kathlene,jonna,irena,ilona,idalia,candis,candance,brandee,anitra,alida,sigrid,nicolette,maryjo,linette,hedwig,christiana,alexia,tressie,modesta,lupita,lita,gladis,evelia,davida,cherri,cecily,ashely,annabel,agustina,wanita,shirly,rosaura,hulda,yetta,verona,thomasina,sibyl,shannan,mechelle,leandra,lani,kylee,kandy,jolynn,ferne,eboni,corene,alysia,zula,nada,moira,lyndsay,lorretta,jammie,hortensia,gaynell,adria,vina,vicenta,tangela,stephine,norine,nella,liana,leslee,kimberely,iliana,glory,felica,emogene,elfriede,eden,eartha,carma,ocie,lennie,kiara,jacalyn,carlota,arielle,otilia,kirstin,kacey,johnetta,joetta,jeraldine,jaunita,elana,dorthea,cami,amada,adelia,vernita,tamar,siobhan,renea,rashida,ouida,nilsa,meryl,kristyn,julieta,danica,breanne,aurea,anglea,sherron,odette,malia,lorelei,leesa,kenna,kathlyn,fiona,charlette,suzie,shantell,sabra,racquel,myong,mira,martine,lucienne,lavada,juliann,elvera,delphia,christiane,charolette,carri,asha,angella,paola,ninfa,leda,stefani,shanell,palma,machelle,lissa,kecia,kathryne,karlene,julissa,jettie,jenniffer,corrina,carolann,alena,rosaria,myrtice,marylee,liane,kenyatta,judie,janey,elmira,eldora,denna,cristi,cathi,zaida,vonnie,viva,vernie,rosaline,mariela,luciana,lesli,karan,felice,deneen,adina,wynona,tarsha,sheron,shanita,shani,shandra,randa,pinkie,nelida,marilou,lyla,laurene,laci,janene,dorotha,daniele,dani,carolynn,carlyn,berenice,ayesha,anneliese,alethea,thersa,tamiko,rufina,oliva,mozell,marylyn,kristian,kathyrn,kasandra,kandace,janae,domenica,debbra,dannielle,chun,arcelia,zenobia,sharen,sharee,lavinia,kacie,jackeline,huong,felisa,emelia,eleanora,cythia,cristin,claribel,anastacia,zulma,zandra,yoko,tenisha,susann,sherilyn,shay,shawanda,romana,mathilda,linsey,keiko,joana,isela,gretta,georgetta,eugenie,desirae,delora,corazon,antonina,anika,willene,tracee,tamatha,nichelle,mickie,maegan,luana,lanita,kelsie,edelmira,bree,afton,teodora,tamie,shena,linh,keli,kaci,danyelle,arlette,albertine,adelle,tiffiny,simona,nicolasa,nichol,nakisha,maira,loreen,kizzy,fallon,christene,bobbye,ying,vincenza,tanja,rubie,roni,queenie,margarett,kimberli,irmgard,idell,hilma,evelina,esta,emilee,dennise,dania,carie,risa,rikki,particia,masako,luvenia,loree,loni,lien,gigi,florencia,denita,billye,tomika,sharita,rana,nikole,neoma,margarite,madalyn,lucina,laila,kali,jenette,gabriele,evelyne,elenora,clementina,alejandrina,zulema,violette,vannessa,thresa,retta,patience,noella,nickie,jonell,chaya,camelia,bethel,anya,suzann,mila,lilla,laverna,keesha,kattie,georgene,eveline,estell,elizbeth,vivienne,vallie,trudie,stephane,magaly,madie,kenyetta,karren,janetta,hermine,drucilla,debbi,celestina,candie,britni,beckie,amina,zita,yolande,vivien,vernetta,trudi,pearle,patrina,ossie,nicolle,loyce,letty,katharina,joselyn,jonelle,jenell,iesha,heide,florinda,florentina,elodia,dorine,brunilda,brigid,ashli,ardella,twana,tarah,shavon,serina,rayna,ramonita,margurite,lucrecia,kourtney,kati,jesenia,crista,ayana,alica,alia,vinnie,suellen,romelia,rachell,olympia,michiko,kathaleen,jolie,jessi,janessa,hana,elease,carletta,britany,shona,salome,rosamond,regena,raina,ngoc,nelia,louvenia,lesia,latrina,laticia,larhonda,jina,jacki,emmy,deeann,coretta,arnetta,thalia,shanice,neta,mikki,micki,lonna,leana,lashunda,kiley,joye,jacqulyn,ignacia,hyun,hiroko,henriette,elayne,delinda,dahlia,coreen,consuela,conchita,babette,ayanna,anette,albertina,shawnee,shaneka,quiana,pamelia,merri,merlene,margit,kiesha,kiera,kaylene,jodee,jenise,erlene,emmie,dalila,daisey,casie,belia,babara,versie,vanesa,shelba,shawnda,nikia,naoma,marna,margeret,madaline,lawana,kindra,jutta,jazmine,janett,hannelore,glendora,gertrud,garnett,freeda,frederica,florance,flavia,carline,beverlee,anjanette,valda,tamala,shonna,sarina,oneida,merilyn,marleen,lurline,lenna,katherin,jeni,gracia,glady,farah,enola,dominque,devona,delana,cecila,caprice,alysha,alethia,vena,theresia,tawny,shakira,samara,sachiko,rachele,pamella,marni,mariel,maren,malisa,ligia,lera,latoria,larae,kimber,kathern,karey,jennefer,janeth,halina,fredia,delisa,debroah,ciera,angelika,andree,altha,vivan,terresa,tanna,sudie,signe,salena,ronni,rebbecca,myrtie,malika,maida,leonarda,kayleigh,ethyl,ellyn,dayle,cammie,brittni,birgit,avelina,asuncion,arianna,akiko,venice,tyesha,tonie,tiesha,takisha,steffanie,sindy,meghann,manda,macie,kellye,kellee,joslyn,inger,indira,glinda,glennis,fernanda,faustina,eneida,elicia,digna,dell,arletta,willia,tammara,tabetha,sherrell,sari,rebbeca,pauletta,natosha,nakita,mammie,kenisha,kazuko,kassie,earlean,daphine,corliss,clotilde,carolyne,bernetta,augustina,audrea,annis,annabell,tennille,tamica,selene,rosana,regenia,qiana,markita,macy,leeanne,laurine,jessenia,janita,georgine,genie,emiko,elvie,deandra,dagmar,corie,collen,cherish,romaine,porsha,pearlene,micheline,merna,margorie,margaretta,lore,jenine,hermina,fredericka,elke,drusilla,dorathy,dione,celena,brigida,allegra,tamekia,synthia,sook,slyvia,rosann,reatha,raye,marquetta,margart,ling,layla,kymberly,kiana,kayleen,katlyn,karmen,joella,emelda,eleni,detra,clemmie,cheryll,chantell,cathey,arnita,arla,angle,angelic,alyse,zofia,thomasine,tennie,sherly,sherley,sharyl,remedios,petrina,nickole,myung,myrle,mozella,louanne,lisha,latia,krysta,julienne,jeanene,jacqualine,isaura,gwenda,earleen,cleopatra,carlie,audie,antonietta,alise,verdell,tomoko,thao,talisha,shemika,savanna,santina,rosia,raeann,odilia,nana,minna,magan,lynelle,karma,joeann,ivana,inell,ilana,gudrun,dreama,crissy,chante,carmelina,arvilla,annamae,alvera,aleida,yanira,vanda,tianna,stefania,shira,nicol,nancie,monserrate,melynda,melany,lovella,laure,kacy,jacquelynn,hyon,gertha,eliana,christena,christeen,charise,caterina,carley,candyce,arlena,ammie,willette,vanita,tuyet,syreeta,penney,nyla,maryam,marya,magen,ludie,loma,livia,lanell,kimberlie,julee,donetta,diedra,denisha,deane,dawne,clarine,cherryl,bronwyn,alla,valery,tonda,sueann,soraya,shoshana,shela,sharleen,shanelle,nerissa,meridith,mellie,maye,maple,magaret,lili,leonila,leonie,leeanna,lavonia,lavera,kristel,kathey,kathe,jann,ilda,hildred,hildegarde,genia,fumiko,evelin,ermelinda,elly,dung,doloris,dionna,danae,berneice,annice,alix,verena,verdie,shawnna,shawana,shaunna,rozella,randee,ranae,milagro,lynell,luise,loida,lisbeth,karleen,junita,jona,isis,hyacinth,hedy,gwenn,ethelene,erline,donya,domonique,delicia,dannette,cicely,branda,blythe,bethann,ashlyn,annalee,alline,yuko,vella,trang,towanda,tesha,sherlyn,narcisa,miguelina,meri,maybell,marlana,marguerita,madlyn,lory,loriann,leonore,leighann,laurice,latesha,laronda,katrice,kasie,kaley,jadwiga,glennie,gearldine,francina,epifania,dyan,dorie,diedre,denese,demetrice,delena,cristie,cleora,catarina,carisa,barbera,almeta,trula,tereasa,solange,sheilah,shavonne,sanora,rochell,mathilde,margareta,maia,lynsey,lawanna,launa,kena,keena,katia,glynda,gaylene,elvina,elanor,danuta,danika,cristen,cordie,coletta,clarita,carmon,brynn,azucena,aundrea,angele,verlie,verlene,tamesha,silvana,sebrina,samira,reda,raylene,penni,norah,noma,mireille,melissia,maryalice,laraine,kimbery,karyl,karine,jolanda,johana,jesusa,jaleesa,jacquelyne,iluminada,hilaria,hanh,gennie,francie,floretta,exie,edda,drema,delpha,barbar,assunta,ardell,annalisa,alisia,yukiko,yolando,wonda,waltraud,veta,temeka,tameika,shirleen,shenita,piedad,ozella,mirtha,marilu,kimiko,juliane,jenice,janay,jacquiline,hilde,elois,echo,devorah,chau,brinda,betsey,arminda,aracelis,apryl,annett,alishia,veola,usha,toshiko,theola,tashia,talitha,shery,renetta,reiko,rasheeda,obdulia,mika,melaine,meggan,marlen,marget,marceline,mana,magdalen,librada,lezlie,latashia,lasandra,kelle,isidra,inocencia,gwyn,francoise,erminia,erinn,dimple,devora,criselda,armanda,arie,ariane,angelena,aliza,adriene,adaline,xochitl,twanna,tomiko,tamisha,taisha,susy,rutha,rhona,noriko,natashia,merrie,marinda,mariko,margert,loris,lizzette,leisha,kaila,joannie,jerrica,jene,jannet,janee,jacinda,herta,elenore,doretta,delaine,daniell,claudie,britta,apolonia,amberly,alease,yuri,waneta,tomi,sharri,sandie,roselle,reynalda,raguel,phylicia,patria,olimpia,odelia,mitzie,minda,mignon,mica,mendy,marivel,maile,lynetta,lavette,lauryn,latrisha,lakiesha,kiersten,kary,josphine,jolyn,jetta,janise,jacquie,ivelisse,glynis,gianna,gaynelle,danyell,danille,dacia,coralee,cher,ceola,arianne,aleshia,yung,williemae,trinh,thora,sherika,shemeka,shaunda,roseline,ricki,melda,mallie,lavonna,latina,laquanda,lala,lachelle,klara,kandis,johna,jeanmarie,jaye,grayce,gertude,emerita,ebonie,clorinda,ching,chery,carola,breann,blossom,bernardine,becki,arletha,argelia,alita,yulanda,yessenia,tobi,tasia,sylvie,shirl,shirely,shella,shantelle,sacha,rebecka,providencia,paulene,misha,miki,marline,marica,lorita,latoyia,lasonya,kerstin,kenda,keitha,kathrin,jaymie,gricelda,ginette,eryn,elina,elfrieda,danyel,cheree,chanelle,barrie,aurore,annamaria,alleen,ailene,aide,yasmine,vashti,treasa,tiffaney,sheryll,sharie,shanae,raisa,neda,mitsuko,mirella,milda,maryanna,maragret,mabelle,luetta,lorina,letisha,latarsha,lanelle,lajuana,krissy,karly,karena,jessika,jerica,jeanelle,jalisa,jacelyn,izola,euna,etha,domitila,dominica,daina,creola,carli,camie,brittny,ashanti,anisha,aleen,adah,yasuko,valrie,tona,tinisha,terisa,taneka,simonne,shalanda,serita,ressie,refugia,olene,margherita,mandie,maire,lyndia,luci,lorriane,loreta,leonia,lavona,lashawnda,lakia,kyoko,krystina,krysten,kenia,kelsi,jeanice,isobel,georgiann,genny,felicidad,eilene,deloise,deedee,conception,clora,cherilyn,calandra,armandina,anisa,tiera,theressa,stephania,sima,shyla,shonta,shera,shaquita,shala,rossana,nohemi,nery,moriah,melita,melida,melani,marylynn,marisha,mariette,malorie,madelene,ludivina,loria,lorette,loralee,lianne,lavenia,laurinda,lashon,kimi,keila,katelynn,jone,joane,jayna,janella,hertha,francene,elinore,despina,delsie,deedra,clemencia,carolin,bulah,brittanie,blondell,bibi,beaulah,beata,annita,agripina,virgen,valene,twanda,tommye,tarra,tari,tammera,shakia,sadye,ruthanne,rochel,rivka,pura,nenita,natisha,ming,merrilee,melodee,marvis,lucilla,leena,laveta,larita,lanie,keren,ileen,georgeann,genna,frida,eufemia,emely,edyth,deonna,deadra,darlena,chanell,cathern,cassondra,cassaundra,bernarda,berna,arlinda,anamaria,vertie,valeri,torri,stasia,sherise,sherill,sanda,ruthe,rosy,robbi,ranee,quyen,pearly,palmira,onita,nisha,niesha,nida,merlyn,mayola,marylouise,marth,margene,madelaine,londa,leontine,leoma,leia,lauralee,lanora,lakita,kiyoko,keturah,katelin,kareen,jonie,johnette,jenee,jeanett,izetta,hiedi,heike,hassie,giuseppina,georgann,fidela,fernande,elwanda,ellamae,eliz,dusti,dotty,cyndy,coralie,celesta,alverta,xenia,wava,vanetta,torrie,tashina,tandy,tambra,tama,stepanie,shila,shaunta,sharan,shaniqua,shae,setsuko,serafina,sandee,rosamaria,priscila,olinda,nadene,muoi,michelina,mercedez,maryrose,marcene,magali,mafalda,lannie,kayce,karoline,kamilah,kamala,justa,joline,jennine,jacquetta,iraida,georgeanna,franchesca,emeline,elane,ehtel,earlie,dulcie,dalene,classie,chere,charis,caroyln,carmina,carita,bethanie,ayako,arica,alysa,alessandra,akilah,adrien,zetta,youlanda,yelena,yahaira,xuan,wendolyn,tijuana,terina,teresia,suzi,sherell,shavonda,shaunte,sharda,shakita,sena,ryann,rubi,riva,reginia,rachal,parthenia,pamula,monnie,monet,michaele,melia,malka,maisha,lisandra,lekisha,lean,lakendra,krystin,kortney,kizzie,kittie,kera,kendal,kemberly,kanisha,julene,jule,johanne,jamee,halley,gidget,fredricka,fleta,fatimah,eusebia,elza,eleonore,dorthey,doria,donella,dinorah,delorse,claretha,christinia,charlyn,bong,belkis,azzie,andera,aiko,adena,yajaira,vania,ulrike,toshia,tifany,stefany,shizue,shenika,shawanna,sharolyn,sharilyn,shaquana,shantay,rozanne,roselee,remona,reanna,raelene,phung,petronila,natacha,nancey,myrl,miyoko,miesha,merideth,marvella,marquitta,marhta,marchelle,lizeth,libbie,lahoma,ladawn,kina,katheleen,katharyn,karisa,kaleigh,junie,julieann,johnsie,janean,jaimee,jackqueline,hisako,herma,helaine,gwyneth,gita,eustolia,emelina,elin,edris,donnette,donnetta,dierdre,denae,darcel,clarisa,cinderella,chia,charlesetta,charita,celsa,cassy,cassi,carlee,bruna,brittaney,brande,billi,antonetta,angla,angelyn,analisa,alane,wenona,wendie,veronique,vannesa,tobie,tempie,sumiko,sulema,somer,sheba,sharice,shanel,shalon,rosio,roselia,renay,rema,reena,ozie,oretha,oralee,ngan,nakesha,milly,marybelle,margrett,maragaret,manie,lurlene,lillia,lieselotte,lavelle,lashaunda,lakeesha,kaycee,kalyn,joya,joette,jenae,janiece,illa,grisel,glayds,genevie,gala,fredda,eleonor,debera,deandrea,corrinne,cordia,contessa,colene,cleotilde,chantay,cecille,beatris,azalee,arlean,ardath,anjelica,anja,alfredia,aleisha,zada,yuonne,xiao,willodean,vennie,vanna,tyisha,tova,torie,tonisha,tilda,tien,sirena,sherril,shanti,shan,senaida,samella,robbyn,renda,reita,phebe,paulita,nobuko,nguyet,neomi,mikaela,melania,maximina,marg,maisie,lynna,lilli,lashaun,lakenya,lael,kirstie,kathline,kasha,karlyn,karima,jovan,josefine,jennell,jacqui,jackelyn,hien,grazyna,florrie,floria,eleonora,dwana,dorla,delmy,deja,dede,dann,crysta,clelia,claris,chieko,cherlyn,cherelle,charmain,chara,cammy,arnette,ardelle,annika,amiee,amee,allena,yvone,yuki,yoshie,yevette,yael,willetta,voncile,venetta,tula,tonette,timika,temika,telma,teisha,taren,stacee,shawnta,saturnina,ricarda,pasty,onie,nubia,marielle,mariella,marianela,mardell,luanna,loise,lisabeth,lindsy,lilliana,lilliam,lelah,leigha,leanora,kristeen,khalilah,keeley,kandra,junko,joaquina,jerlene,jani,jamika,hsiu,hermila,genevive,evia,eugena,emmaline,elfreda,elene,donette,delcie,deeanna,darcey,clarinda,cira,chae,celinda,catheryn,casimira,carmelia,camellia,breana,bobette,bernardina,bebe,basilia,arlyne,amal,alayna,zonia,zenia,yuriko,yaeko,wynell,willena,vernia,tora,terrilyn,terica,tenesha,tawna,tajuana,taina,stephnie,sona,sina,shondra,shizuko,sherlene,sherice,sharika,rossie,rosena,rima,rheba,renna,natalya,nancee,melodi,meda,matha,marketta,maricruz,marcelene,malvina,luba,louetta,leida,lecia,lauran,lashawna,laine,khadijah,katerine,kasi,kallie,julietta,jesusita,jestine,jessia,jeffie,janyce,isadora,georgianne,fidelia,evita,eura,eulah,estefana,elsy,eladia,dodie,denisse,deloras,delila,daysi,crystle,concha,claretta,charlsie,charlena,carylon,bettyann,asley,ashlea,amira,agueda,agnus,yuette,vinita,victorina,tynisha,treena,toccara,tish,thomasena,tegan,soila,shenna,sharmaine,shantae,shandi,saran,sarai,sana,rosette,rolande,regine,otelia,olevia,nicholle,necole,naida,myrta,myesha,mitsue,minta,mertie,margy,mahalia,madalene,loura,lorean,lesha,leonida,lenita,lavone,lashell,lashandra,lamonica,kimbra,katherina,karry,kanesha,jong,jeneva,jaquelyn,gilma,ghislaine,gertrudis,fransisca,fermina,ettie,etsuko,ellan,elidia,edra,dorethea,doreatha,denyse,deetta,daine,cyrstal,corrin,cayla,carlita,camila,burma,bula,buena,barabara,avril,alaine,zana,wilhemina,wanetta,verline,vasiliki,tonita,tisa,teofila,tayna,taunya,tandra,takako,sunni,suanne,sixta,sharell,seema,rosenda,robena,raymonde,pamila,ozell,neida,mistie,micha,merissa,maurita,maryln,maryetta,marcell,malena,makeda,lovetta,lourie,lorrine,lorilee,laurena,lashay,larraine,laree,lacresha,kristle,keva,keira,karole,joie,jinny,jeannetta,jama,heidy,gilberte,gema,faviola,evelynn,enda,elli,ellena,divina,dagny,collene,codi,cindie,chassidy,chasidy,catrice,catherina,cassey,caroll,carlena,candra,calista,bryanna,britteny,beula,bari,audrie,audria,ardelia,annelle,angila,alona,allyn\".split(\",\"),\n surnames: \"smith,johnson,williams,jones,brown,davis,miller,wilson,moore,taylor,anderson,jackson,white,harris,martin,thompson,garcia,martinez,robinson,clark,rodriguez,lewis,lee,walker,hall,allen,young,hernandez,king,wright,lopez,hill,green,adams,baker,gonzalez,nelson,carter,mitchell,perez,roberts,turner,phillips,campbell,parker,evans,edwards,collins,stewart,sanchez,morris,rogers,reed,cook,morgan,bell,murphy,bailey,rivera,cooper,richardson,cox,howard,ward,torres,peterson,gray,ramirez,watson,brooks,sanders,price,bennett,wood,barnes,ross,henderson,coleman,jenkins,perry,powell,long,patterson,hughes,flores,washington,butler,simmons,foster,gonzales,bryant,alexander,griffin,diaz,hayes,myers,ford,hamilton,graham,sullivan,wallace,woods,cole,west,owens,reynolds,fisher,ellis,harrison,gibson,mcdonald,cruz,marshall,ortiz,gomez,murray,freeman,wells,webb,simpson,stevens,tucker,porter,hicks,crawford,boyd,mason,morales,kennedy,warren,dixon,ramos,reyes,burns,gordon,shaw,holmes,rice,robertson,hunt,black,daniels,palmer,mills,nichols,grant,knight,ferguson,stone,hawkins,dunn,perkins,hudson,spencer,gardner,stephens,payne,pierce,berry,matthews,arnold,wagner,willis,watkins,olson,carroll,duncan,snyder,hart,cunningham,lane,andrews,ruiz,harper,fox,riley,armstrong,carpenter,weaver,greene,elliott,chavez,sims,peters,kelley,franklin,lawson,fields,gutierrez,schmidt,carr,vasquez,castillo,wheeler,chapman,montgomery,richards,williamson,johnston,banks,meyer,bishop,mccoy,howell,alvarez,morrison,hansen,fernandez,garza,harvey,burton,nguyen,jacobs,reid,fuller,lynch,garrett,romero,welch,larson,frazier,burke,hanson,mendoza,moreno,bowman,medina,fowler,brewer,hoffman,carlson,silva,pearson,holland,fleming,jensen,vargas,byrd,davidson,hopkins,herrera,wade,soto,walters,neal,caldwell,lowe,jennings,barnett,graves,jimenez,horton,shelton,barrett,obrien,castro,sutton,mckinney,lucas,miles,rodriquez,chambers,holt,lambert,fletcher,watts,bates,hale,rhodes,pena,beck,newman,haynes,mcdaniel,mendez,bush,vaughn,parks,dawson,santiago,norris,hardy,steele,curry,powers,schultz,barker,guzman,page,munoz,ball,keller,chandler,weber,walsh,lyons,ramsey,wolfe,schneider,mullins,benson,sharp,bowen,barber,cummings,hines,baldwin,griffith,valdez,hubbard,salazar,reeves,warner,stevenson,burgess,santos,tate,cross,garner,mann,mack,moss,thornton,mcgee,farmer,delgado,aguilar,vega,glover,manning,cohen,harmon,rodgers,robbins,newton,blair,higgins,ingram,reese,cannon,strickland,townsend,potter,goodwin,walton,rowe,hampton,ortega,patton,swanson,goodman,maldonado,yates,becker,erickson,hodges,rios,conner,adkins,webster,malone,hammond,flowers,cobb,moody,quinn,pope,osborne,mccarthy,guerrero,estrada,sandoval,gibbs,gross,fitzgerald,stokes,doyle,saunders,wise,colon,gill,alvarado,greer,padilla,waters,nunez,ballard,schwartz,mcbride,houston,christensen,klein,pratt,briggs,parsons,mclaughlin,zimmerman,buchanan,moran,copeland,pittman,brady,mccormick,holloway,brock,poole,logan,bass,marsh,drake,wong,jefferson,morton,abbott,sparks,norton,huff,massey,figueroa,carson,bowers,roberson,barton,tran,lamb,harrington,boone,cortez,clarke,mathis,singleton,wilkins,cain,underwood,hogan,mckenzie,collier,luna,phelps,mcguire,bridges,wilkerson,nash,summers,atkins,wilcox,pitts,conley,marquez,burnett,cochran,chase,davenport,hood,gates,ayala,sawyer,vazquez,dickerson,hodge,acosta,flynn,espinoza,nicholson,monroe,wolf,morrow,whitaker,oconnor,skinner,ware,molina,kirby,huffman,gilmore,dominguez,oneal,lang,combs,kramer,hancock,gallagher,gaines,shaffer,wiggins,mathews,mcclain,fischer,wall,melton,hensley,bond,dyer,grimes,contreras,wyatt,baxter,snow,mosley,shepherd,larsen,hoover,beasley,petersen,whitehead,meyers,garrison,shields,horn,savage,olsen,schroeder,hartman,woodard,mueller,kemp,deleon,booth,patel,calhoun,wiley,eaton,cline,navarro,harrell,humphrey,parrish,duran,hutchinson,hess,dorsey,bullock,robles,beard,dalton,avila,rich,blackwell,johns,blankenship,trevino,salinas,campos,pruitt,callahan,montoya,hardin,guerra,mcdowell,stafford,gallegos,henson,wilkinson,booker,merritt,atkinson,orr,decker,hobbs,tanner,knox,pacheco,stephenson,glass,rojas,serrano,marks,hickman,sweeney,strong,mcclure,conway,roth,maynard,farrell,lowery,hurst,nixon,weiss,trujillo,ellison,sloan,juarez,winters,mclean,boyer,villarreal,mccall,gentry,carrillo,ayers,lara,sexton,pace,hull,leblanc,browning,velasquez,leach,chang,sellers,herring,noble,foley,bartlett,mercado,landry,durham,walls,barr,mckee,bauer,rivers,bradshaw,pugh,velez,rush,estes,dodson,morse,sheppard,weeks,camacho,bean,barron,livingston,middleton,spears,branch,blevins,chen,kerr,mcconnell,hatfield,harding,solis,frost,giles,blackburn,pennington,woodward,finley,mcintosh,koch,mccullough,blanchard,rivas,brennan,mejia,kane,benton,buckley,valentine,maddox,russo,mcknight,buck,moon,mcmillan,crosby,berg,dotson,mays,roach,chan,richmond,meadows,faulkner,oneill,knapp,kline,ochoa,jacobson,gay,hendricks,horne,shepard,hebert,cardenas,mcintyre,waller,holman,donaldson,cantu,morin,gillespie,fuentes,tillman,bentley,peck,key,salas,rollins,gamble,dickson,santana,cabrera,cervantes,howe,hinton,hurley,spence,zamora,yang,mcneil,suarez,petty,gould,mcfarland,sampson,carver,bray,macdonald,stout,hester,melendez,dillon,farley,hopper,galloway,potts,joyner,stein,aguirre,osborn,mercer,bender,franco,rowland,sykes,pickett,sears,mayo,dunlap,hayden,wilder,mckay,coffey,mccarty,ewing,cooley,vaughan,bonner,cotton,holder,stark,ferrell,cantrell,fulton,lott,calderon,pollard,hooper,burch,mullen,fry,riddle,levy,duke,odonnell,britt,daugherty,berger,dillard,alston,frye,riggs,chaney,odom,duffy,fitzpatrick,valenzuela,mayer,alford,mcpherson,acevedo,barrera,cote,reilly,compton,mooney,mcgowan,craft,clemons,wynn,nielsen,baird,stanton,snider,rosales,bright,witt,hays,holden,rutledge,kinney,clements,castaneda,slater,hahn,burks,delaney,pate,lancaster,sharpe,whitfield,talley,macias,burris,ratliff,mccray,madden,kaufman,beach,goff,cash,bolton,mcfadden,levine,byers,kirkland,kidd,workman,carney,mcleod,holcomb,finch,sosa,haney,franks,sargent,nieves,downs,rasmussen,bird,hewitt,foreman,valencia,oneil,delacruz,vinson,dejesus,hyde,forbes,gilliam,guthrie,wooten,huber,barlow,boyle,mcmahon,buckner,rocha,puckett,langley,knowles,cooke,velazquez,whitley,vang,shea,rouse,hartley,mayfield,elder,rankin,hanna,cowan,lucero,arroyo,slaughter,haas,oconnell,minor,boucher,archer,boggs,dougherty,andersen,newell,crowe,wang,friedman,bland,swain,holley,pearce,childs,yarbrough,galvan,proctor,meeks,lozano,mora,rangel,bacon,villanueva,schaefer,rosado,helms,boyce,goss,stinson,ibarra,hutchins,covington,crowley,hatcher,mackey,bunch,womack,polk,dodd,childress,childers,villa,springer,mahoney,dailey,belcher,lockhart,griggs,costa,brandt,walden,moser,tatum,mccann,akers,lutz,pryor,orozco,mcallister,lugo,davies,shoemaker,rutherford,newsome,magee,chamberlain,blanton,simms,godfrey,flanagan,crum,cordova,escobar,downing,sinclair,donahue,krueger,mcginnis,gore,farris,webber,corbett,andrade,starr,lyon,yoder,hastings,mcgrath,spivey,krause,harden,crabtree,kirkpatrick,arrington,ritter,mcghee,bolden,maloney,gagnon,dunbar,ponce,pike,mayes,beatty,mobley,kimball,butts,montes,eldridge,braun,hamm,gibbons,moyer,manley,herron,plummer,elmore,cramer,rucker,pierson,fontenot,rubio,goldstein,elkins,wills,novak,hickey,worley,gorman,katz,dickinson,broussard,woodruff,crow,britton,nance,lehman,bingham,zuniga,whaley,shafer,coffman,steward,delarosa,neely,mata,davila,mccabe,kessler,hinkle,welsh,pagan,goldberg,goins,crouch,cuevas,quinones,mcdermott,hendrickson,samuels,denton,bergeron,ivey,locke,haines,snell,hoskins,byrne,arias,corbin,beltran,chappell,downey,dooley,tuttle,couch,payton,mcelroy,crockett,groves,cartwright,dickey,mcgill,dubois,muniz,tolbert,dempsey,cisneros,sewell,latham,vigil,tapia,rainey,norwood,stroud,meade,tipton,kuhn,hilliard,bonilla,teague,gunn,greenwood,correa,reece,pineda,phipps,frey,kaiser,ames,gunter,schmitt,milligan,espinosa,bowden,vickers,lowry,pritchard,costello,piper,mcclellan,lovell,sheehan,hatch,dobson,singh,jeffries,hollingsworth,sorensen,meza,fink,donnelly,burrell,tomlinson,colbert,billings,ritchie,helton,sutherland,peoples,mcqueen,thomason,givens,crocker,vogel,robison,dunham,coker,swartz,keys,ladner,richter,hargrove,edmonds,brantley,albright,murdock,boswell,muller,quintero,padgett,kenney,daly,connolly,inman,quintana,lund,barnard,villegas,simons,huggins,tidwell,sanderson,bullard,mcclendon,duarte,draper,marrero,dwyer,abrams,stover,goode,fraser,crews,bernal,godwin,conklin,mcneal,baca,esparza,crowder,bower,brewster,mcneill,rodrigues,leal,coates,raines,mccain,mccord,miner,holbrook,swift,dukes,carlisle,aldridge,ackerman,starks,ricks,holliday,ferris,hairston,sheffield,lange,fountain,doss,betts,kaplan,carmichael,bloom,ruffin,penn,kern,bowles,sizemore,larkin,dupree,seals,metcalf,hutchison,henley,farr,mccauley,hankins,gustafson,curran,waddell,ramey,cates,pollock,cummins,messer,heller,funk,cornett,palacios,galindo,cano,hathaway,pham,enriquez,salgado,pelletier,painter,wiseman,blount,feliciano,houser,doherty,mead,mcgraw,swan,capps,blanco,blackmon,thomson,mcmanus,burkett,gleason,dickens,cormier,voss,rushing,rosenberg,hurd,dumas,benitez,arellano,marin,caudill,bragg,jaramillo,huerta,gipson,colvin,biggs,vela,platt,cassidy,tompkins,mccollum,dolan,daley,crump,sneed,kilgore,grove,grimm,davison,brunson,prater,marcum,devine,dodge,stratton,rosas,choi,tripp,ledbetter,hightower,feldman,epps,yeager,posey,scruggs,cope,stubbs,richey,overton,trotter,sprague,cordero,butcher,stiles,burgos,woodson,horner,bassett,purcell,haskins,akins,ziegler,spaulding,hadley,grubbs,sumner,murillo,zavala,shook,lockwood,driscoll,dahl,thorpe,redmond,putnam,mcwilliams,mcrae,romano,joiner,sadler,hedrick,hager,hagen,fitch,coulter,thacker,mansfield,langston,guidry,ferreira,corley,conn,rossi,lackey,baez,saenz,mcnamara,mcmullen,mckenna,mcdonough,link,engel,browne,roper,peacock,eubanks,drummond,stringer,pritchett,parham,mims,landers,grayson,schafer,egan,timmons,ohara,keen,hamlin,finn,cortes,mcnair,nadeau,moseley,michaud,rosen,oakes,kurtz,jeffers,calloway,beal,bautista,winn,suggs,stern,stapleton,lyles,laird,montano,dawkins,hagan,goldman,bryson,barajas,lovett,segura,metz,lockett,langford,hinson,eastman,hooks,smallwood,shapiro,crowell,whalen,triplett,chatman,aldrich,cahill,youngblood,ybarra,stallings,sheets,reeder,connelly,bateman,abernathy,winkler,wilkes,masters,hackett,granger,gillis,schmitz,sapp,napier,souza,lanier,gomes,weir,otero,ledford,burroughs,babcock,ventura,siegel,dugan,bledsoe,atwood,wray,varner,spangler,anaya,staley,kraft,fournier,belanger,wolff,thorne,bynum,burnette,boykin,swenson,purvis,pina,khan,duvall,darby,xiong,kauffman,healy,engle,benoit,valle,steiner,spicer,shaver,randle,lundy,chin,calvert,staton,neff,kearney,darden,oakley,medeiros,mccracken,crenshaw,perdue,dill,whittaker,tobin,washburn,hogue,goodrich,easley,bravo,dennison,shipley,kerns,jorgensen,crain,villalobos,maurer,longoria,keene,coon,witherspoon,staples,pettit,kincaid,eason,madrid,echols,lusk,stahl,currie,thayer,shultz,mcnally,seay,maher,gagne,barrow,nava,moreland,honeycutt,hearn,diggs,caron,whitten,westbrook,stovall,ragland,munson,meier,looney,kimble,jolly,hobson,goddard,culver,burr,presley,negron,connell,tovar,huddleston,ashby,salter,root,pendleton,oleary,nickerson,myrick,judd,jacobsen,bain,adair,starnes,matos,busby,herndon,hanley,bellamy,doty,bartley,yazzie,rowell,parson,gifford,cullen,christiansen,benavides,barnhart,talbot,mock,crandall,connors,bonds,whitt,gage,bergman,arredondo,addison,lujan,dowdy,jernigan,huynh,bouchard,dutton,rhoades,ouellette,kiser,herrington,hare,blackman,babb,allred,rudd,paulson,ogden,koenig,geiger,begay,parra,lassiter,hawk,esposito,waldron,ransom,prather,chacon,vick,sands,roark,parr,mayberry,greenberg,coley,bruner,whitman,skaggs,shipman,leary,hutton,romo,medrano,ladd,kruse,askew,schulz,alfaro,tabor,mohr,gallo,bermudez,pereira,bliss,reaves,flint,comer,woodall,naquin,guevara,delong,carrier,pickens,tilley,schaffer,knutson,fenton,doran,vogt,vann,prescott,mclain,landis,corcoran,zapata,hyatt,hemphill,faulk,dove,boudreaux,aragon,whitlock,trejo,tackett,shearer,saldana,hanks,mckinnon,koehler,bourgeois,keyes,goodson,foote,lunsford,goldsmith,flood,winslow,sams,reagan,mccloud,hough,esquivel,naylor,loomis,coronado,ludwig,braswell,bearden,huang,fagan,ezell,edmondson,cronin,nunn,lemon,guillory,grier,dubose,traylor,ryder,dobbins,coyle,aponte,whitmore,smalls,rowan,malloy,cardona,braxton,borden,humphries,carrasco,ruff,metzger,huntley,hinojosa,finney,madsen,ernst,dozier,burkhart,bowser,peralta,daigle,whittington,sorenson,saucedo,roche,redding,fugate,avalos,waite,lind,huston,hawthorne,hamby,boyles,boles,regan,faust,crook,beam,barger,hinds,gallardo,willoughby,willingham,eckert,busch,zepeda,worthington,tinsley,hoff,hawley,carmona,varela,rector,newcomb,kinsey,dube,whatley,ragsdale,bernstein,becerra,yost,mattson,felder,cheek,handy,grossman,gauthier,escobedo,braden,beckman,mott,hillman,flaherty,dykes,stockton,stearns,lofton,coats,cavazos,beavers,barrios,tang,mosher,cardwell,coles,burnham,weller,lemons,beebe,aguilera,parnell,harman,couture,alley,schumacher,redd,dobbs,blum,blalock,merchant,ennis,denson,cottrell,brannon,bagley,aviles,watt,sousa,rosenthal,rooney,dietz,blank,paquette,mcclelland,duff,velasco,lentz,grubb,burrows,barbour,ulrich,shockley,rader,beyer,mixon,layton,altman,weathers,stoner,squires,shipp,priest,lipscomb,cutler,caballero,zimmer,willett,thurston,storey,medley,epperson,shah,mcmillian,baggett,torrez,hirsch,dent,poirier,peachey,farrar,creech,barth,trimble,dupre,albrecht,sample,lawler,crisp,conroy,wetzel,nesbitt,murry,jameson,wilhelm,patten,minton,matson,kimbrough,guinn,croft,toth,pulliam,nugent,newby,littlejohn,dias,canales,bernier,baron,singletary,renteria,pruett,mchugh,mabry,landrum,brower,stoddard,cagle,stjohn,scales,kohler,kellogg,hopson,gant,tharp,gann,zeigler,pringle,hammons,fairchild,deaton,chavis,carnes,rowley,matlock,kearns,irizarry,carrington,starkey,lopes,jarrell,craven,baum,littlefield,linn,humphreys,etheridge,cuellar,chastain,bundy,speer,skelton,quiroz,pyle,portillo,ponder,moulton,machado,killian,hutson,hitchcock,dowling,cloud,burdick,spann,pedersen,levin,leggett,hayward,dietrich,beaulieu,barksdale,wakefield,snowden,briscoe,bowie,berman,ogle,mcgregor,laughlin,helm,burden,wheatley,schreiber,pressley,parris,alaniz,agee,swann,snodgrass,schuster,radford,monk,mattingly,harp,girard,cheney,yancey,wagoner,ridley,lombardo,hudgins,gaskins,duckworth,coburn,willey,prado,newberry,magana,hammonds,elam,whipple,slade,serna,ojeda,liles,dorman,diehl,upton,reardon,michaels,goetz,eller,bauman,baer,layne,hummel,brenner,amaya,adamson,ornelas,dowell,cloutier,castellanos,wellman,saylor,orourke,moya,montalvo,kilpatrick,durbin,shell,oldham,kang,garvin,foss,branham,bartholomew,templeton,maguire,holton,rider,monahan,mccormack,beaty,anders,streeter,nieto,nielson,moffett,lankford,keating,heck,gatlin,delatorre,callaway,adcock,worrell,unger,robinette,nowak,jeter,brunner,steen,parrott,overstreet,nobles,montanez,clevenger,brinkley,trahan,quarles,pickering,pederson,jansen,grantham,gilchrist,crespo,aiken,schell,schaeffer,lorenz,leyva,harms,dyson,wallis,pease,leavitt,cheng,cavanaugh,batts,warden,seaman,rockwell,quezada,paxton,linder,houck,fontaine,durant,caruso,adler,pimentel,mize,lytle,cleary,cason,acker,switzer,isaacs,higginbotham,waterman,vandyke,stamper,sisk,shuler,riddick,mcmahan,levesque,hatton,bronson,bollinger,arnett,okeefe,gerber,gannon,farnsworth,baughman,silverman,satterfield,mccrary,kowalski,grigsby,greco,cabral,trout,rinehart,mahon,linton,gooden,curley,baugh,wyman,weiner,schwab,schuler,morrissey,mahan,bunn,thrasher,spear,waggoner,qualls,purdy,mcwhorter,mauldin,gilman,perryman,newsom,menard,martino,graf,billingsley,artis,simpkins,salisbury,quintanilla,gilliland,fraley,foust,crouse,scarborough,grissom,fultz,marlow,markham,madrigal,lawton,barfield,whiting,varney,schwarz,gooch,arce,wheat,truong,poulin,hurtado,selby,gaither,fortner,culpepper,coughlin,brinson,boudreau,bales,stepp,holm,schilling,morrell,kahn,heaton,gamez,causey,turpin,shanks,schrader,meek,isom,hardison,carranza,yanez,scroggins,schofield,runyon,ratcliff,murrell,moeller,irby,currier,butterfield,ralston,pullen,pinson,estep,carbone,hawks,ellington,casillas,spurlock,sikes,motley,mccartney,kruger,isbell,houle,burk,tomlin,quigley,neumann,lovelace,fennell,cheatham,bustamante,skidmore,hidalgo,forman,culp,bowens,betancourt,aquino,robb,milner,martel,gresham,wiles,ricketts,dowd,collazo,bostic,blakely,sherrod,kenyon,gandy,ebert,deloach,allard,sauer,robins,olivares,gillette,chestnut,bourque,paine,hite,hauser,devore,crawley,chapa,talbert,poindexter,meador,mcduffie,mattox,kraus,harkins,choate,wren,sledge,sanborn,kinder,geary,cornwell,barclay,abney,seward,rhoads,howland,fortier,benner,vines,tubbs,troutman,rapp,mccurdy,deluca,westmoreland,havens,guajardo,clary,seal,meehan,herzog,guillen,ashcraft,waugh,renner,milam,elrod,churchill,breaux,bolin,asher,windham,tirado,pemberton,nolen,noland,knott,emmons,cornish,christenson,brownlee,barbee,waldrop,pitt,olvera,lombardi,gruber,gaffney,eggleston,banda,archuleta,slone,prewitt,pfeiffer,nettles,mena,mcadams,henning,gardiner,cromwell,chisholm,burleson,vest,oglesby,mccarter,lumpkin,wofford,vanhorn,thorn,teel,swafford,stclair,stanfield,ocampo,herrmann,hannon,arsenault,roush,mcalister,hiatt,gunderson,forsythe,duggan,delvalle,cintron,wilks,weinstein,uribe,rizzo,noyes,mclendon,gurley,bethea,winstead,maples,guyton,giordano,alderman,valdes,polanco,pappas,lively,grogan,griffiths,bobo,arevalo,whitson,sowell,rendon,fernandes,farrow,benavidez,ayres,alicea,stump,smalley,seitz,schulte,gilley,gallant,canfield,wolford,omalley,mcnutt,mcnulty,mcgovern,hardman,harbin,cowart,chavarria,brink,beckett,bagwell,armstead,anglin,abreu,reynoso,krebs,jett,hoffmann,greenfield,forte,burney,broome,sisson,trammell,partridge,mace,lomax,lemieux,gossett,frantz,fogle,cooney,broughton,pence,paulsen,muncy,mcarthur,hollins,beauchamp,withers,osorio,mulligan,hoyle,dockery,cockrell,begley,amador,roby,rains,lindquist,gentile,everhart,bohannon,wylie,sommers,purnell,fortin,dunning,breeden,vail,phelan,phan,marx,cosby,colburn,boling,biddle,ledesma,gaddis,denney,chow,bueno,berrios,wicker,tolliver,thibodeaux,nagle,lavoie,fisk,crist,barbosa,reedy,locklear,kolb,himes,behrens,beckwith,weems,wahl,shorter,shackelford,rees,muse,cerda,valadez,thibodeau,saavedra,ridgeway,reiter,mchenry,majors,lachance,keaton,ferrara,clemens,blocker,applegate,needham,mojica,kuykendall,hamel,escamilla,doughty,burchett,ainsworth,vidal,upchurch,thigpen,strauss,spruill,sowers,riggins,ricker,mccombs,harlow,buffington,sotelo,olivas,negrete,morey,macon,logsdon,lapointe,bigelow,bello,westfall,stubblefield,lindley,hein,hawes,farrington,breen,birch,wilde,steed,sepulveda,reinhardt,proffitt,minter,messina,mcnabb,maier,keeler,gamboa,donohue,basham,shinn,crooks,cota,borders,bills,bachman,tisdale,tavares,schmid,pickard,gulley,fonseca,delossantos,condon,batista,wicks,wadsworth,martell,littleton,ison,haag,folsom,brumfield,broyles,brito,mireles,mcdonnell,leclair,hamblin,gough,fanning,binder,winfield,whitworth,soriano,palumbo,newkirk,mangum,hutcherson,comstock,carlin,beall,bair,wendt,watters,walling,putman,otoole,morley,mares,lemus,keener,hundley,dial,damico,billups,strother,mcfarlane,lamm,eaves,crutcher,caraballo,canty,atwell,taft,siler,rust,rawls,rawlings,prieto,mcneely,mcafee,hulsey,hackney,galvez,escalante,delagarza,crider,bandy,wilbanks,stowe,steinberg,renfro,masterson,massie,lanham,haskell,hamrick,dehart,burdette,branson,bourne,babin,aleman,worthy,tibbs,smoot,slack,paradis,mull,luce,houghton,gantt,furman,danner,christianson,burge,ashford,arndt,almeida,stallworth,shade,searcy,sager,noonan,mclemore,mcintire,maxey,lavigne,jobe,ferrer,falk,coffin,byrnes,aranda,apodaca,stamps,rounds,peek,olmstead,lewandowski,kaminski,dunaway,bruns,brackett,amato,reich,mcclung,lacroix,koontz,herrick,hardesty,flanders,cousins,cato,cade,vickery,shank,nagel,dupuis,croteau,cotter,stuckey,stine,porterfield,pauley,moffitt,knudsen,hardwick,goforth,dupont,blunt,barrows,barnhill,shull,rash,loftis,lemay,kitchens,horvath,grenier,fuchs,fairbanks,culbertson,calkins,burnside,beattie,ashworth,albertson,wertz,vaught,vallejo,turk,tuck,tijerina,sage,peterman,marroquin,marr,lantz,hoang,demarco,cone,berube,barnette,wharton,stinnett,slocum,scanlon,sander,pinto,mancuso,lima,headley,epstein,counts,clarkson,carnahan,boren,arteaga,adame,zook,whittle,whitehurst,wenzel,saxton,reddick,puente,handley,haggerty,earley,devlin,chaffin,cady,acuna,solano,sigler,pollack,pendergrass,ostrander,janes,francois,crutchfield,chamberlin,brubaker,baptiste,willson,reis,neeley,mullin,mercier,lira,layman,keeling,higdon,espinal,chapin,warfield,toledo,pulido,peebles,nagy,montague,mello,lear,jaeger,hogg,graff,furr,soliz,poore,mendenhall,mclaurin,maestas,gable,barraza,tillery,snead,pond,neill,mcculloch,mccorkle,lightfoot,hutchings,holloman,harness,dorn,bock,zielinski,turley,treadwell,stpierre,starling,somers,oswald,merrick,easterling,bivens,truitt,poston,parry,ontiveros,olivarez,moreau,medlin,lenz,knowlton,fairley,cobbs,chisolm,bannister,woodworth,toler,ocasio,noriega,neuman,moye,milburn,mcclanahan,lilley,hanes,flannery,dellinger,danielson,conti,blodgett,beers,weatherford,strain,karr,hitt,denham,custer,coble,clough,casteel,bolduc,batchelor,ammons,whitlow,tierney,staten,sibley,seifert,schubert,salcedo,mattison,laney,haggard,grooms,dees,cromer,cooks,colson,caswell,zarate,swisher,shin,ragan,pridgen,mcvey,matheny,lafleur,franz,ferraro,dugger,whiteside,rigsby,mcmurray,lehmann,jacoby,hildebrand,hendrick,headrick,goad,fincher,drury,borges,archibald,albers,woodcock,trapp,soares,seaton,monson,luckett,lindberg,kopp,keeton,healey,garvey,gaddy,fain,burchfield,wentworth,strand,stack,spooner,saucier,ricci,plunkett,pannell,ness,leger,freitas,fong,elizondo,duval,beaudoin,urbina,rickard,partin,mcgrew,mcclintock,ledoux,forsyth,faison,devries,bertrand,wasson,tilton,scarbrough,leung,irvine,garber,denning,corral,colley,castleberry,bowlin,bogan,beale,baines,trice,rayburn,parkinson,nunes,mcmillen,leahy,kimmel,higgs,fulmer,carden,bedford,taggart,spearman,prichard,morrill,koonce,heinz,hedges,guenther,grice,findley,dover,creighton,boothe,bayer,arreola,vitale,valles,raney,osgood,hanlon,burley,bounds,worden,weatherly,vetter,tanaka,stiltner,nevarez,mosby,montero,melancon,harter,hamer,goble,gladden,gist,ginn,akin,zaragoza,tarver,sammons,royster,oreilly,muir,morehead,luster,kingsley,kelso,grisham,glynn,baumann,alves,yount,tamayo,paterson,oates,menendez,longo,hargis,gillen,desantis,conover,breedlove,sumpter,scherer,rupp,reichert,heredia,creel,cohn,clemmons,casas,bickford,belton,bach,williford,whitcomb,tennant,sutter,stull,mccallum,langlois,keel,keegan,dangelo,dancy,damron,clapp,clanton,bankston,oliveira,mintz,mcinnis,martens,mabe,laster,jolley,hildreth,hefner,glaser,duckett,demers,brockman,blais,alcorn,agnew,toliver,tice,seeley,najera,musser,mcfall,laplante,galvin,fajardo,doan,coyne,copley,clawson,cheung,barone,wynne,woodley,tremblay,stoll,sparrow,sparkman,schweitzer,sasser,samples,roney,legg,heim,farias,colwell,christman,bratcher,winchester,upshaw,southerland,sorrell,sells,mccloskey,martindale,luttrell,loveless,lovejoy,linares,latimer,embry,coombs,bratton,bostick,venable,tuggle,toro,staggs,sandlin,jefferies,heckman,griffis,crayton,clem,browder,thorton,sturgill,sprouse,royer,rousseau,ridenour,pogue,perales,peeples,metzler,mesa,mccutcheon,mcbee,hornsby,heffner,corrigan,armijo,plante,peyton,paredes,macklin,hussey,hodgson,granados,frias,becnel,batten,almanza,turney,teal,sturgeon,meeker,mcdaniels,limon,keeney,hutto,holguin,gorham,fishman,fierro,blanchette,rodrigue,reddy,osburn,oden,lerma,kirkwood,keefer,haugen,hammett,chalmers,brinkman,baumgartner,zhang,valerio,tellez,steffen,shumate,sauls,ripley,kemper,guffey,evers,craddock,carvalho,blaylock,banuelos,balderas,wheaton,turnbull,shuman,pointer,mosier,mccue,ligon,kozlowski,johansen,ingle,herr,briones,snipes,rickman,pipkin,pantoja,orosco,moniz,lawless,kunkel,hibbard,galarza,enos,bussey,schott,salcido,perreault,mcdougal,mccool,haight,garris,easton,conyers,atherton,wimberly,utley,spellman,smithson,slagle,ritchey,rand,petit,osullivan,oaks,nutt,mcvay,mccreary,mayhew,knoll,jewett,harwood,cardoza,ashe,arriaga,zeller,wirth,whitmire,stauffer,rountree,redden,mccaffrey,martz,larose,langdon,humes,gaskin,faber,devito,cass,almond,wingfield,wingate,villareal,tyner,smothers,severson,reno,pennell,maupin,leighton,janssen,hassell,hallman,halcomb,folse,fitzsimmons,fahey,cranford,bolen,battles,battaglia,wooldridge,trask,rosser,regalado,mcewen,keefe,fuqua,echevarria,caro,boynton,andrus,viera,vanmeter,taber,spradlin,seibert,provost,prentice,oliphant,laporte,hwang,hatchett,hass,greiner,freedman,covert,chilton,byars,wiese,venegas,swank,shrader,roberge,mullis,mortensen,mccune,marlowe,kirchner,keck,isaacson,hostetler,halverson,gunther,griswold,fenner,durden,blackwood,ahrens,sawyers,savoy,nabors,mcswain,mackay,lavender,lash,labbe,jessup,fullerton,cruse,crittenden,correia,centeno,caudle,canady,callender,alarcon,ahern,winfrey,tribble,salley,roden,musgrove,minnick,fortenberry,carrion,bunting,batiste,whited,underhill,stillwell,rauch,pippin,perrin,messenger,mancini,lister,kinard,hartmann,fleck,wilt,treadway,thornhill,spalding,rafferty,pitre,patino,ordonez,linkous,kelleher,homan,galbraith,feeney,curtin,coward,camarillo,buss,bunnell,bolt,beeler,autry,alcala,witte,wentz,stidham,shively,nunley,meacham,martins,lemke,lefebvre,hynes,horowitz,hoppe,holcombe,dunne,derr,cochrane,brittain,bedard,beauregard,torrence,strunk,soria,simonson,shumaker,scoggins,oconner,moriarty,kuntz,ives,hutcheson,horan,hales,garmon,fitts,bohn,atchison,wisniewski,vanwinkle,sturm,sallee,prosser,moen,lundberg,kunz,kohl,keane,jorgenson,jaynes,funderburk,freed,durr,creamer,cosgrove,batson,vanhoose,thomsen,teeter,smyth,redmon,orellana,maness,heflin,goulet,frick,forney,bunker,asbury,aguiar,talbott,southard,mowery,mears,lemmon,krieger,hickson,elston,duong,delgadillo,dayton,dasilva,conaway,catron,bruton,bradbury,bordelon,bivins,bittner,bergstrom,beals,abell,whelan,tejada,pulley,pino,norfleet,nealy,maes,loper,gatewood,frierson,freund,finnegan,cupp,covey,catalano,boehm,bader,yoon,walston,tenney,sipes,rawlins,medlock,mccaskill,mccallister,marcotte,maclean,hughey,henke,harwell,gladney,gilson,chism,caskey,brandenburg,baylor,villasenor,veal,thatcher,stegall,petrie,nowlin,navarrete,lombard,loftin,lemaster,kroll,kovach,kimbrell,kidwell,hershberger,fulcher,cantwell,bustos,boland,bobbitt,binkley,wester,weis,verdin,tong,tiller,sisco,sharkey,seymore,rosenbaum,rohr,quinonez,pinkston,malley,logue,lessard,lerner,lebron,krauss,klinger,halstead,haller,getz,burrow,alger,shores,pfeifer,perron,nelms,munn,mcmaster,mckenney,manns,knudson,hutchens,huskey,goebel,flagg,cushman,click,castellano,carder,bumgarner,wampler,spinks,robson,neel,mcreynolds,mathias,maas,loera,jenson,florez,coons,buckingham,brogan,berryman,wilmoth,wilhite,thrash,shephard,seidel,schulze,roldan,pettis,obryan,maki,mackie,hatley,frazer,fiore,chesser,bottoms,bisson,benefield,allman,wilke,trudeau,timm,shifflett,mundy,milliken,mayers,leake,kohn,huntington,horsley,hermann,guerin,fryer,frizzell,foret,flemming,fife,criswell,carbajal,bozeman,boisvert,angulo,wallen,tapp,silvers,ramsay,oshea,orta,moll,mckeever,mcgehee,linville,kiefer,ketchum,howerton,groce,gass,fusco,corbitt,betz,bartels,amaral,aiello,weddle,sperry,seiler,runyan,raley,overby,osteen,olds,mckeown,matney,lauer,lattimore,hindman,hartwell,fredrickson,fredericks,espino,clegg,carswell,cambell,burkholder,woodbury,welker,totten,thornburg,theriault,stitt,stamm,stackhouse,scholl,saxon,rife,razo,quinlan,pinkerton,olivo,nesmith,nall,mattos,lafferty,justus,giron,geer,fielder,drayton,dortch,conners,conger,boatwright,billiot,barden,armenta,tibbetts,steadman,slattery,rinaldi,raynor,pinckney,pettigrew,milne,matteson,halsey,gonsalves,fellows,durand,desimone,cowley,cowles,brill,barham,barela,barba,ashmore,withrow,valenti,tejeda,spriggs,sayre,salerno,peltier,peel,merriman,matheson,lowman,lindstrom,hyland,giroux,earls,dugas,dabney,collado,briseno,baxley,whyte,wenger,vanover,vanburen,thiel,schindler,schiller,rigby,pomeroy,passmore,marble,manzo,mahaffey,lindgren,laflamme,greathouse,fite,calabrese,bayne,yamamoto,wick,townes,thames,reinhart,peeler,naranjo,montez,mcdade,mast,markley,marchand,leeper,kellum,hudgens,hennessey,hadden,gainey,coppola,borrego,bolling,beane,ault,slaton,pape,null,mulkey,lightner,langer,hillard,ethridge,enright,derosa,baskin,weinberg,turman,somerville,pardo,noll,lashley,ingraham,hiller,hendon,glaze,cothran,cooksey,conte,carrico,abner,wooley,swope,summerlin,sturgis,sturdivant,stott,spurgeon,spillman,speight,roussel,popp,nutter,mckeon,mazza,magnuson,lanning,kozak,jankowski,heyward,forster,corwin,callaghan,bays,wortham,usher,theriot,sayers,sabo,poling,loya,lieberman,laroche,labelle,howes,harr,garay,fogarty,everson,durkin,dominquez,chaves,chambliss,witcher,vieira,vandiver,terrill,stoker,schreiner,moorman,liddell,lawhorn,krug,irons,hylton,hollenbeck,herrin,hembree,goolsby,goodin,gilmer,foltz,dinkins,daughtry,caban,brim,briley,bilodeau,wyant,vergara,tallent,swearingen,stroup,scribner,quillen,pitman,mccants,maxfield,martinson,holtz,flournoy,brookins,brody,baumgardner,straub,sills,roybal,roundtree,oswalt,mcgriff,mcdougall,mccleary,maggard,gragg,gooding,godinez,doolittle,donato,cowell,cassell,bracken,appel,zambrano,reuter,perea,nakamura,monaghan,mickens,mcclinton,mcclary,marler,kish,judkins,gilbreath,freese,flanigan,felts,erdmann,dodds,chew,brownell,boatright,barreto,slayton,sandberg,saldivar,pettway,odum,narvaez,moultrie,montemayor,merrell,lees,keyser,hoke,hardaway,hannan,gilbertson,fogg,dumont,deberry,coggins,buxton,bucher,broadnax,beeson,araujo,appleton,amundson,aguayo,ackley,yocum,worsham,shivers,sanches,sacco,robey,rhoden,pender,ochs,mccurry,madera,luong,knotts,jackman,heinrich,hargrave,gault,comeaux,chitwood,caraway,boettcher,bernhardt,barrientos,zink,wickham,whiteman,thorp,stillman,settles,schoonover,roque,riddell,pilcher,phifer,novotny,macleod,hardee,haase,grider,doucette,clausen,bevins,beamon,badillo,tolley,tindall,soule,snook,seale,pinkney,pellegrino,nowell,nemeth,mondragon,mclane,lundgren,ingalls,hudspeth,hixson,gearhart,furlong,downes,dibble,deyoung,cornejo,camara,brookshire,boyette,wolcott,surratt,sellars,segal,salyer,reeve,rausch,labonte,haro,gower,freeland,fawcett,eads,driggers,donley,collett,bromley,boatman,ballinger,baldridge,volz,trombley,stonge,shanahan,rivard,rhyne,pedroza,matias,jamieson,hedgepeth,hartnett,estevez,eskridge,denman,chiu,chinn,catlett,carmack,buie,bechtel,beardsley,bard,ballou,ulmer,skeen,robledo,rincon,reitz,piazza,munger,moten,mcmichael,loftus,ledet,kersey,groff,fowlkes,crumpton,clouse,bettis,villagomez,timmerman,strom,santoro,roddy,penrod,musselman,macpherson,leboeuf,harless,haddad,guido,golding,fulkerson,fannin,dulaney,dowdell,cottle,ceja,cate,bosley,benge,albritton,voigt,trowbridge,soileau,seely,rohde,pearsall,paulk,orth,nason,mota,mcmullin,marquardt,madigan,hoag,gillum,gabbard,fenwick,danforth,cushing,cress,creed,cazares,bettencourt,barringer,baber,stansberry,schramm,rutter,rivero,oquendo,necaise,mouton,montenegro,miley,mcgough,marra,macmillan,lamontagne,jasso,horst,hetrick,heilman,gaytan,gall,fortney,dingle,desjardins,dabbs,burbank,brigham,breland,beaman,arriola,yarborough,wallin,toscano,stowers,reiss,pichardo,orton,michels,mcnamee,mccrory,leatherman,kell,keister,horning,hargett,guay,ferro,deboer,dagostino,carper,blanks,beaudry,towle,tafoya,stricklin,strader,soper,sonnier,sigmon,schenk,saddler,pedigo,mendes,lunn,lohr,lahr,kingsbury,jarman,hume,holliman,hofmann,haworth,harrelson,hambrick,flick,edmunds,dacosta,crossman,colston,chaplin,carrell,budd,weiler,waits,valentino,trantham,tarr,solorio,roebuck,powe,plank,pettus,pagano,mink,luker,leathers,joslin,hartzell,gambrell,cepeda,carty,caputo,brewington,bedell,ballew,applewhite,warnock,walz,urena,tudor,reel,pigg,parton,mickelson,meagher,mclellan,mcculley,mandel,leech,lavallee,kraemer,kling,kipp,kehoe,hochstetler,harriman,gregoire,grabowski,gosselin,gammon,fancher,edens,desai,brannan,armendariz,woolsey,whitehouse,whetstone,ussery,towne,testa,tallman,studer,strait,steinmetz,sorrells,sauceda,rolfe,paddock,mitchem,mcginn,mccrea,lovato,hazen,gilpin,gaynor,fike,devoe,delrio,curiel,burkhardt,bode,backus,zinn,watanabe,wachter,vanpelt,turnage,shaner,schroder,sato,riordan,quimby,portis,natale,mckoy,mccown,kilmer,hotchkiss,hesse,halbert,gwinn,godsey,delisle,chrisman,canter,arbogast,angell,acree,yancy,woolley,wesson,weatherspoon,trainor,stockman,spiller,sipe,rooks,reavis,propst,porras,neilson,mullens,loucks,llewellyn,kumar,koester,klingensmith,kirsch,kester,honaker,hodson,hennessy,helmick,garrity,garibay,drain,casarez,callis,botello,aycock,avant,wingard,wayman,tully,theisen,szymanski,stansbury,segovia,rainwater,preece,pirtle,padron,mincey,mckelvey,mathes,larrabee,kornegay,klug,ingersoll,hecht,germain,eggers,dykstra,deering,decoteau,deason,dearing,cofield,carrigan,bonham,bahr,aucoin,appleby,almonte,yager,womble,wimmer,weimer,vanderpool,stancil,sprinkle,romine,remington,pfaff,peckham,olivera,meraz,maze,lathrop,koehn,hazelton,halvorson,hallock,haddock,ducharme,dehaven,caruthers,brehm,bosworth,bost,bias,beeman,basile,bane,aikens,wold,walther,tabb,suber,strawn,stocker,shirey,schlosser,riedel,rembert,reimer,pyles,peele,merriweather,letourneau,latta,kidder,hixon,hillis,hight,herbst,henriquez,haygood,hamill,gabel,fritts,eubank,dawes,correll,bushey,buchholz,brotherton,botts,barnwell,auger,atchley,westphal,veilleux,ulloa,stutzman,shriver,ryals,pilkington,moyers,marrs,mangrum,maddux,lockard,laing,kuhl,harney,hammock,hamlett,felker,doerr,depriest,carrasquillo,carothers,bogle,bischoff,bergen,albanese,wyckoff,vermillion,vansickle,thibault,tetreault,stickney,shoemake,ruggiero,rawson,racine,philpot,paschal,mcelhaney,mathison,legrand,lapierre,kwan,kremer,jiles,hilbert,geyer,faircloth,ehlers,egbert,desrosiers,dalrymple,cotten,cashman,cadena,boardman,alcaraz,wyrick,therrien,tankersley,strickler,puryear,plourde,pattison,pardue,mcginty,mcevoy,landreth,kuhns,koon,hewett,giddens,emerick,eades,deangelis,cosme,ceballos,birdsong,benham,bemis,armour,anguiano,welborn,tsosie,storms,shoup,sessoms,samaniego,rood,rojo,rhinehart,raby,northcutt,myer,munguia,morehouse,mcdevitt,mallett,lozada,lemoine,kuehn,hallett,grim,gillard,gaylor,garman,gallaher,feaster,faris,darrow,dardar,coney,carreon,braithwaite,boylan,boyett,bixler,bigham,benford,barragan,barnum,zuber,wyche,westcott,vining,stoltzfus,simonds,shupe,sabin,ruble,rittenhouse,richman,perrone,mulholland,millan,lomeli,kite,jemison,hulett,holler,hickerson,herold,hazelwood,griffen,gause,forde,eisenberg,dilworth,charron,chaisson,bristow,breunig,brace,boutwell,bentz,belk,bayless,batchelder,baran,baeza,zimmermann,weathersby,volk,toole,theis,tedesco,searle,schenck,satterwhite,ruelas,rankins,partida,nesbit,morel,menchaca,levasseur,kaylor,johnstone,hulse,hollar,hersey,harrigan,harbison,guyer,gish,giese,gerlach,geller,geisler,falcone,elwell,doucet,deese,darr,corder,chafin,byler,bussell,burdett,brasher,bowe,bellinger,bastian,barner,alleyne,wilborn,weil,wegner,tatro,spitzer,smithers,schoen,resendez,parisi,overman,obrian,mudd,mahler,maggio,lindner,lalonde,lacasse,laboy,killion,kahl,jessen,jamerson,houk,henshaw,gustin,graber,durst,duenas,davey,cundiff,conlon,colunga,coakley,chiles,capers,buell,bricker,bissonnette,bartz,bagby,zayas,volpe,treece,toombs,thom,terrazas,swinney,skiles,silveira,shouse,senn,ramage,moua,langham,kyles,holston,hoagland,herd,feller,denison,carraway,burford,bickel,ambriz,abercrombie,yamada,weidner,waddle,verduzco,thurmond,swindle,schrock,sanabria,rosenberger,probst,peabody,olinger,nazario,mccafferty,mcbroom,mcabee,mazur,matherne,mapes,leverett,killingsworth,heisler,griego,gosnell,frankel,franke,ferrante,fenn,ehrlich,christopherso,chasse,caton,brunelle,bloomfield,babbitt,azevedo,abramson,ables,abeyta,youmans,wozniak,wainwright,stowell,smitherman,samuelson,runge,rothman,rosenfeld,peake,owings,olmos,munro,moreira,leatherwood,larkins,krantz,kovacs,kizer,kindred,karnes,jaffe,hubbell,hosey,hauck,goodell,erdman,dvorak,doane,cureton,cofer,buehler,bierman,berndt,banta,abdullah,warwick,waltz,turcotte,torrey,stith,seger,sachs,quesada,pinder,peppers,pascual,paschall,parkhurst,ozuna,oster,nicholls,lheureux,lavalley,kimura,jablonski,haun,gourley,gilligan,croy,cotto,cargill,burwell,burgett,buckman,booher,adorno,wrenn,whittemore,urias,szabo,sayles,saiz,rutland,rael,pharr,pelkey,ogrady,nickell,musick,moats,mather,massa,kirschner,kieffer,kellar,hendershot,gott,godoy,gadson,furtado,fiedler,erskine,dutcher,dever,daggett,chevalier,brake,ballesteros,amerson,wingo,waldon,trott,silvey,showers,schlegel,ritz,pepin,pelayo,parsley,palermo,moorehead,mchale,lett,kocher,kilburn,iglesias,humble,hulbert,huckaby,hartford,hardiman,gurney,grigg,grasso,goings,fillmore,farber,depew,dandrea,cowen,covarrubias,burrus,bracy,ardoin,thompkins,standley,radcliffe,pohl,persaud,parenteau,pabon,newson,newhouse,napolitano,mulcahy,malave,keim,hooten,hernandes,heffernan,hearne,greenleaf,glick,fuhrman,fetter,faria,dishman,dickenson,crites,criss,clapper,chenault,castor,casto,bugg,bove,bonney,anderton,allgood,alderson,woodman,warrick,toomey,tooley,tarrant,summerville,stebbins,sokol,searles,schutz,schumann,scheer,remillard,raper,proulx,palmore,monroy,messier,melo,melanson,mashburn,manzano,lussier,jenks,huneycutt,hartwig,grimsley,fulk,fielding,fidler,engstrom,eldred,dantzler,crandell,calder,brumley,breton,brann,bramlett,boykins,bianco,bancroft,almaraz,alcantar,whitmer,whitener,welton,vineyard,rahn,paquin,mizell,mcmillin,mckean,marston,maciel,lundquist,liggins,lampkin,kranz,koski,kirkham,jiminez,hazzard,harrod,graziano,grammer,gendron,garrido,fordham,englert,dryden,demoss,deluna,crabb,comeau,brummett,blume,benally,wessel,vanbuskirk,thorson,stumpf,stockwell,reams,radtke,rackley,pelton,niemi,newland,nelsen,morrissette,miramontes,mcginley,mccluskey,marchant,luevano,lampe,lail,jeffcoat,infante,hinman,gaona,eady,desmarais,decosta,dansby,cisco,choe,breckenridge,bostwick,borg,bianchi,alberts,wilkie,whorton,vargo,tait,soucy,schuman,ousley,mumford,lippert,leath,lavergne,laliberte,kirksey,kenner,johnsen,izzo,hiles,gullett,greenwell,gaspar,galbreath,gaitan,ericson,delapaz,croom,cottingham,clift,bushnell,bice,beason,arrowood,waring,voorhees,truax,shreve,shockey,schatz,sandifer,rubino,rozier,roseberry,pieper,peden,nester,nave,murphey,malinowski,macgregor,lafrance,kunkle,kirkman,hipp,hasty,haddix,gervais,gerdes,gamache,fouts,fitzwater,dillingham,deming,deanda,cedeno,cannady,burson,bouldin,arceneaux,woodhouse,whitford,wescott,welty,weigel,torgerson,toms,surber,sunderland,sterner,setzer,riojas,pumphrey,puga,metts,mcgarry,mccandless,magill,lupo,loveland,llamas,leclerc,koons,kahler,huss,holbert,heintz,haupt,grimmett,gaskill,ellingson,dorr,dingess,deweese,desilva,crossley,cordeiro,converse,conde,caldera,cairns,burmeister,burkhalter,brawner,bott,youngs,vierra,valladares,shrum,shropshire,sevilla,rusk,rodarte,pedraza,nino,merino,mcminn,markle,mapp,lajoie,koerner,kittrell,kato,hyder,hollifield,heiser,hazlett,greenwald,fant,eldredge,dreher,delafuente,cravens,claypool,beecher,aronson,alanis,worthen,wojcik,winger,whitacre,valverde,valdivia,troupe,thrower,swindell,suttles,stroman,spires,slate,shealy,sarver,sartin,sadowski,rondeau,rolon,rascon,priddy,paulino,nolte,munroe,molloy,mciver,lykins,loggins,lenoir,klotz,kempf,hupp,hollowell,hollander,haynie,harkness,harker,gottlieb,frith,eddins,driskell,doggett,densmore,charette,cassady,byrum,burcham,buggs,benn,whitted,warrington,vandusen,vaillancourt,steger,siebert,scofield,quirk,purser,plumb,orcutt,nordstrom,mosely,michalski,mcphail,mcdavid,mccraw,marchese,mannino,lefevre,largent,lanza,kress,isham,hunsaker,hoch,hildebrandt,guarino,grijalva,graybill,fick,ewell,ewald,cusick,crumley,coston,cathcart,carruthers,bullington,bowes,blain,blackford,barboza,yingling,wert,weiland,varga,silverstein,sievers,shuster,shumway,runnels,rumsey,renfroe,provencher,polley,mohler,middlebrooks,kutz,koster,groth,glidden,fazio,deen,chipman,chenoweth,champlin,cedillo,carrero,carmody,buckles,brien,boutin,bosch,berkowitz,altamirano,wilfong,wiegand,waites,truesdale,toussaint,tobey,tedder,steelman,sirois,schnell,robichaud,richburg,plumley,pizarro,piercy,ortego,oberg,neace,mertz,mcnew,matta,lapp,lair,kibler,howlett,hollister,hofer,hatten,hagler,falgoust,engelhardt,eberle,dombrowski,dinsmore,daye,casares,braud,balch,autrey,wendel,tyndall,strobel,stoltz,spinelli,serrato,reber,rathbone,palomino,nickels,mayle,mathers,mach,loeffler,littrell,levinson,leong,lemire,lejeune,lazo,lasley,koller,kennard,hoelscher,hintz,hagerman,greaves,fore,eudy,engler,corrales,cordes,brunet,bidwell,bennet,tyrrell,tharpe,swinton,stribling,southworth,sisneros,savoie,samons,ruvalcaba,ries,ramer,omara,mosqueda,millar,mcpeak,macomber,luckey,litton,lehr,lavin,hubbs,hoard,hibbs,hagans,futrell,exum,evenson,culler,carbaugh,callen,brashear,bloomer,blakeney,bigler,addington,woodford,unruh,tolentino,sumrall,stgermain,smock,sherer,rayner,pooler,oquinn,nero,mcglothlin,linden,kowal,kerrigan,ibrahim,harvell,hanrahan,goodall,geist,fussell,fung,ferebee,eley,eggert,dorsett,dingman,destefano,colucci,clemmer,burnell,brumbaugh,boddie,berryhill,avelar,alcantara,winder,winchell,vandenberg,trotman,thurber,thibeault,stlouis,stilwell,sperling,shattuck,sarmiento,ruppert,rumph,renaud,randazzo,rademacher,quiles,pearman,palomo,mercurio,lowrey,lindeman,lawlor,larosa,lander,labrecque,hovis,holifield,henninger,hawkes,hartfield,hann,hague,genovese,garrick,fudge,frink,eddings,dinh,cribbs,calvillo,bunton,brodeur,bolding,blanding,agosto,zahn,wiener,trussell,tello,teixeira,speck,sharma,shanklin,sealy,scanlan,santamaria,roundy,robichaux,ringer,rigney,prevost,polson,nord,moxley,medford,mccaslin,mcardle,macarthur,lewin,lasher,ketcham,keiser,heine,hackworth,grose,grizzle,gillman,gartner,frazee,fleury,edson,edmonson,derry,cronk,conant,burress,burgin,broom,brockington,bolick,boger,birchfield,billington,baily,bahena,armbruster,anson,yoho,wilcher,tinney,timberlake,thielen,sutphin,stultz,sikora,serra,schulman,scheffler,santillan,rego,preciado,pinkham,mickle,lomas,lizotte,lent,kellerman,keil,johanson,hernadez,hartsfield,haber,gorski,farkas,eberhardt,duquette,delano,cropper,cozart,cockerham,chamblee,cartagena,cahoon,buzzell,brister,brewton,blackshear,benfield,aston,ashburn,arruda,wetmore,weise,vaccaro,tucci,sudduth,stromberg,stoops,showalter,shears,runion,rowden,rosenblum,riffle,renfrow,peres,obryant,leftwich,lark,landeros,kistler,killough,kerley,kastner,hoggard,hartung,guertin,govan,gatling,gailey,fullmer,fulford,flatt,esquibel,endicott,edmiston,edelstein,dufresne,dressler,dickman,chee,busse,bonnett,berard,yoshida,velarde,veach,vanhouten,vachon,tolson,tolman,tennyson,stites,soler,shutt,ruggles,rhone,pegues,neese,muro,moncrief,mefford,mcphee,mcmorris,mceachern,mcclurg,mansour,mader,leija,lecompte,lafountain,labrie,jaquez,heald,hash,hartle,gainer,frisby,farina,eidson,edgerton,dyke,durrett,duhon,cuomo,cobos,cervantez,bybee,brockway,borowski,binion,beery,arguello,amaro,acton,yuen,winton,wigfall,weekley,vidrine,vannoy,tardiff,shoop,shilling,schick,safford,prendergast,pilgrim,pellerin,osuna,nissen,nalley,moller,messner,messick,merrifield,mcguinness,matherly,marcano,mahone,lemos,lebrun,jara,hoffer,herren,hecker,haws,haug,gwin,gober,gilliard,fredette,favela,echeverria,downer,donofrio,desrochers,crozier,corson,bechtold,argueta,aparicio,zamudio,westover,westerman,utter,troyer,thies,tapley,slavin,shirk,sandler,roop,rimmer,raymer,radcliff,otten,moorer,millet,mckibben,mccutchen,mcavoy,mcadoo,mayorga,mastin,martineau,marek,madore,leflore,kroeger,kennon,jimerson,hostetter,hornback,hendley,hance,guardado,granado,gowen,goodale,flinn,fleetwood,fitz,durkee,duprey,dipietro,dilley,clyburn,brawley,beckley,arana,weatherby,vollmer,vestal,tunnell,trigg,tingle,takahashi,sweatt,storer,snapp,shiver,rooker,rathbun,poisson,perrine,perri,parmer,parke,pare,papa,palmieri,midkiff,mecham,mccomas,mcalpine,lovelady,lillard,lally,knopp,kile,kiger,haile,gupta,goldsberry,gilreath,fulks,friesen,franzen,flack,findlay,ferland,dreyer,dore,dennard,deckard,debose,crim,coulombe,chancey,cantor,branton,bissell,barns,woolard,witham,wasserman,spiegel,shoffner,scholz,ruch,rossman,petry,palacio,paez,neary,mortenson,millsap,miele,menke,mckim,mcanally,martines,lemley,larochelle,klaus,klatt,kaufmann,kapp,helmer,hedge,halloran,glisson,frechette,fontana,eagan,distefano,danley,creekmore,chartier,chaffee,carillo,burg,bolinger,berkley,benz,basso,bash,zelaya,woodring,witkowski,wilmot,wilkens,wieland,verdugo,urquhart,tsai,timms,swiger,swaim,sussman,pires,molnar,mcatee,lowder,loos,linker,landes,kingery,hufford,higa,hendren,hammack,hamann,gillam,gerhardt,edelman,delk,deans,curl,constantine,cleaver,claar,casiano,carruth,carlyle,brophy,bolanos,bibbs,bessette,beggs,baugher,bartel,averill,andresen,amin,adames,valente,turnbow,swink,sublett,stroh,stringfellow,ridgway,pugliese,poteat,ohare,neubauer,murchison,mingo,lemmons,kwon,kellam,kean,jarmon,hyden,hudak,hollinger,henkel,hemingway,hasson,hansel,halter,haire,ginsberg,gillispie,fogel,flory,etter,elledge,eckman,deas,currin,crafton,coomer,colter,claxton,bulter,braddock,bowyer,binns,bellows,baskerville,barros,ansley,woolf,wight,waldman,wadley,tull,trull,tesch,stouffer,stadler,slay,shubert,sedillo,santacruz,reinke,poynter,neri,neale,mowry,moralez,monger,mitchum,merryman,manion,macdougall,litchfield,levitt,lepage,lasalle,khoury,kavanagh,karns,ivie,huebner,hodgkins,halpin,garica,eversole,dutra,dunagan,duffey,dillman,dillion,deville,dearborn,damato,courson,coulson,burdine,bousquet,bonin,bish,atencio,westbrooks,wages,vaca,toner,tillis,swett,struble,stanfill,solorzano,slusher,sipple,silvas,shults,schexnayder,saez,rodas,rager,pulver,penton,paniagua,meneses,mcfarlin,mcauley,matz,maloy,magruder,lohman,landa,lacombe,jaimes,holzer,holst,heil,hackler,grundy,gilkey,farnham,durfee,dunton,dunston,duda,dews,craver,corriveau,conwell,colella,chambless,bremer,boutte,bourassa,blaisdell,backman,babineaux,audette,alleman,towner,taveras,tarango,sullins,suiter,stallard,solberg,schlueter,poulos,pimental,owsley,okelley,moffatt,metcalfe,meekins,medellin,mcglynn,mccowan,marriott,marable,lennox,lamoureux,koss,kerby,karp,isenberg,howze,hockenberry,highsmith,hallmark,gusman,greeley,giddings,gaudet,gallup,fleenor,eicher,edington,dimaggio,dement,demello,decastro,bushman,brundage,brooker,bourg,blackstock,bergmann,beaton,banister,argo,appling,wortman,watterson,villalpando,tillotson,tighe,sundberg,sternberg,stamey,shipe,seeger,scarberry,sattler,sain,rothstein,poteet,plowman,pettiford,penland,partain,pankey,oyler,ogletree,ogburn,moton,merkel,lucier,lakey,kratz,kinser,kershaw,josephson,imhoff,hendry,hammon,frisbie,frawley,fraga,forester,eskew,emmert,drennan,doyon,dandridge,cawley,carvajal,bracey,belisle,batey,ahner,wysocki,weiser,veliz,tincher,sansone,sankey,sandstrom,rohrer,risner,pridemore,pfeffer,persinger,peery,oubre,nowicki,musgrave,murdoch,mullinax,mccary,mathieu,livengood,kyser,klink,kimes,kellner,kavanaugh,kasten,imes,hoey,hinshaw,hake,gurule,grube,grillo,geter,gatto,garver,garretson,farwell,eiland,dunford,decarlo,corso,colman,collard,cleghorn,chasteen,cavender,carlile,calvo,byerly,brogdon,broadwater,breault,bono,bergin,behr,ballenger,amick,tamez,stiffler,steinke,simmon,shankle,schaller,salmons,sackett,saad,rideout,ratcliffe,ranson,plascencia,petterson,olszewski,olney,olguin,nilsson,nevels,morelli,montiel,monge,michaelson,mertens,mcchesney,mcalpin,mathewson,loudermilk,lineberry,liggett,kinlaw,kight,jost,hereford,hardeman,halpern,halliday,hafer,gaul,friel,freitag,forsberg,evangelista,doering,dicarlo,dendy,delp,deguzman,dameron,curtiss,cosper,cauthen,bradberry,bouton,bonnell,bixby,bieber,beveridge,bedwell,barhorst,bannon,baltazar,baier,ayotte,attaway,arenas,abrego,turgeon,tunstall,thaxton,tenorio,stotts,sthilaire,shedd,seabolt,scalf,salyers,ruhl,rowlett,robinett,pfister,perlman,pepe,parkman,nunnally,norvell,napper,modlin,mckellar,mcclean,mascarenas,leibowitz,ledezma,kuhlman,kobayashi,hunley,holmquist,hinkley,hazard,hartsell,gribble,gravely,fifield,eliason,doak,crossland,carleton,bridgeman,bojorquez,boggess,auten,woosley,whiteley,wexler,twomey,tullis,townley,standridge,santoyo,rueda,riendeau,revell,pless,ottinger,nigro,nickles,mulvey,menefee,mcshane,mcloughlin,mckinzie,markey,lockridge,lipsey,knisley,knepper,kitts,kiel,jinks,hathcock,godin,gallego,fikes,fecteau,estabrook,ellinger,dunlop,dudek,countryman,chauvin,chatham,bullins,brownfield,boughton,bloodworth,bibb,baucom,barbieri,aubin,armitage,alessi,absher,abbate,zito,woolery,wiggs,wacker,tynes,tolle,telles,tarter,swarey,strode,stockdale,stalnaker,spina,schiff,saari,risley,rameriz,rakes,pettaway,penner,paulus,palladino,omeara,montelongo,melnick,mehta,mcgary,mccourt,mccollough,marchetti,manzanares,lowther,leiva,lauderdale,lafontaine,kowalczyk,knighton,joubert,jaworski,huth,hurdle,housley,hackman,gulick,gordy,gilstrap,gehrke,gebhart,gaudette,foxworth,endres,dunkle,cimino,caddell,brauer,braley,bodine,blackmore,belden,backer,ayer,andress,wisner,vuong,valliere,twigg,tavarez,strahan,steib,staub,sowder,seiber,schutt,scharf,schade,rodriques,risinger,renshaw,rahman,presnell,piatt,nieman,nevins,mcilwain,mcgaha,mccully,mccomb,massengale,macedo,lesher,kearse,jauregui,husted,hudnall,holmberg,hertel,hardie,glidewell,frausto,fassett,dalessandro,dahlgren,corum,constantino,conlin,colquitt,colombo,claycomb,cardin,buller,boney,bocanegra,biggers,benedetto,araiza,andino,albin,zorn,werth,weisman,walley,vanegas,ulibarri,towe,tedford,teasley,suttle,steffens,stcyr,squire,singley,sifuentes,shuck,schram,sass,rieger,ridenhour,rickert,richerson,rayborn,rabe,raab,pendley,pastore,ordway,moynihan,mellott,mckissick,mcgann,mccready,mauney,marrufo,lenhart,lazar,lafave,keele,kautz,jardine,jahnke,jacobo,hord,hardcastle,hageman,giglio,gehring,fortson,duque,duplessis,dicken,derosier,deitz,dalessio,cram,castleman,candelario,callison,caceres,bozarth,biles,bejarano,bashaw,avina,armentrout,alverez,acord,waterhouse,vereen,vanlandingham,strawser,shotwell,severance,seltzer,schoonmaker,schock,schaub,schaffner,roeder,rodrigez,riffe,rasberry,rancourt,railey,quade,pursley,prouty,perdomo,oxley,osterman,nickens,murphree,mounts,merida,maus,mattern,masse,martinelli,mangan,lutes,ludwick,loney,laureano,lasater,knighten,kissinger,kimsey,kessinger,honea,hollingshead,hockett,heyer,heron,gurrola,gove,glasscock,gillett,galan,featherstone,eckhardt,duron,dunson,dasher,culbreth,cowden,cowans,claypoole,churchwell,chabot,caviness,cater,caston,callan,byington,burkey,boden,beckford,atwater,archambault,alvey,alsup,whisenant,weese,voyles,verret,tsang,tessier,sweitzer,sherwin,shaughnessy,revis,remy,prine,philpott,peavy,paynter,parmenter,ovalle,offutt,nightingale,newlin,nakano,myatt,muth,mohan,mcmillon,mccarley,mccaleb,maxson,marinelli,maley,liston,letendre,kain,huntsman,hirst,hagerty,gulledge,greenway,grajeda,gorton,goines,gittens,frederickson,fanelli,embree,eichelberger,dunkin,dixson,dillow,defelice,chumley,burleigh,borkowski,binette,biggerstaff,berglund,beller,audet,arbuckle,allain,alfano,youngman,wittman,weintraub,vanzant,vaden,twitty,stollings,standifer,sines,shope,scalise,saville,posada,pisano,otte,nolasco,mier,merkle,mendiola,melcher,mejias,mcmurry,mccalla,markowitz,manis,mallette,macfarlane,lough,looper,landin,kittle,kinsella,kinnard,hobart,helman,hellman,hartsock,halford,hage,gordan,glasser,gayton,gattis,gastelum,gaspard,frisch,fitzhugh,eckstein,eberly,dowden,despain,crumpler,crotty,cornelison,chouinard,chamness,catlin,cann,bumgardner,budde,branum,bradfield,braddy,borst,birdwell,bazan,banas,bade,arango,ahearn,addis,zumwalt,wurth,wilk,widener,wagstaff,urrutia,terwilliger,tart,steinman,staats,sloat,rives,riggle,revels,reichard,prickett,poff,pitzer,petro,pell,northrup,nicks,moline,mielke,maynor,mallon,magness,lingle,lindell,lieb,lesko,lebeau,lammers,lafond,kiernan,ketron,jurado,holmgren,hilburn,hayashi,hashimoto,harbaugh,guillot,gard,froehlich,feinberg,falco,dufour,drees,doney,diep,delao,daves,dail,crowson,coss,congdon,carner,camarena,butterworth,burlingame,bouffard,bloch,bilyeu,barta,bakke,baillargeon,avent,aquilar,zeringue,yarber,wolfson,vogler,voelker,truss,troxell,thrift,strouse,spielman,sistrunk,sevigny,schuller,schaaf,ruffner,routh,roseman,ricciardi,peraza,pegram,overturf,olander,odaniel,millner,melchor,maroney,machuca,macaluso,livesay,layfield,laskowski,kwiatkowski,kilby,hovey,heywood,hayman,havard,harville,haigh,hagood,grieco,glassman,gebhardt,fleischer,fann,elson,eccles,cunha,crumb,blakley,bardwell,abshire,woodham,wines,welter,wargo,varnado,tutt,traynor,swaney,stricker,stoffel,stambaugh,sickler,shackleford,selman,seaver,sansom,sanmiguel,royston,rourke,rockett,rioux,puleo,pitchford,nardi,mulvaney,middaugh,malek,leos,lathan,kujawa,kimbro,killebrew,houlihan,hinckley,herod,hepler,hamner,hammel,hallowell,gonsalez,gingerich,gambill,funkhouser,fricke,fewell,falkner,endsley,dulin,drennen,deaver,dambrosio,chadwell,castanon,burkes,brune,brisco,brinker,bowker,boldt,berner,beaumont,beaird,bazemore,barrick,albano,younts,wunderlich,weidman,vanness,toland,theobald,stickler,steiger,stanger,spies,spector,sollars,smedley,seibel,scoville,saito,rummel,rowles,rouleau,roos,rogan,roemer,ream,raya,purkey,priester,perreira,penick,paulin,parkins,overcash,oleson,neves,muldrow,minard,midgett,michalak,melgar,mcentire,mcauliffe,marte,lydon,lindholm,leyba,langevin,lagasse,lafayette,kesler,kelton,kaminsky,jaggers,humbert,huck,howarth,hinrichs,higley,gupton,guimond,gravois,giguere,fretwell,fontes,feeley,faucher,eichhorn,ecker,earp,dole,dinger,derryberry,demars,deel,copenhaver,collinsworth,colangelo,cloyd,claiborne,caulfield,carlsen,calzada,caffey,broadus,brenneman,bouie,bodnar,blaney,blanc,beltz,behling,barahona,yockey,winkle,windom,wimer,villatoro,trexler,teran,taliaferro,sydnor,swinson,snelling,smtih,simonton,simoneaux,simoneau,sherrer,seavey,scheel,rushton,rupe,ruano,rippy,reiner,reiff,rabinowitz,quach,penley,odle,nock,minnich,mckown,mccarver,mcandrew,longley,laux,lamothe,lafreniere,kropp,krick,kates,jepson,huie,howse,howie,henriques,haydon,haught,hatter,hartzog,harkey,grimaldo,goshorn,gormley,gluck,gilroy,gillenwater,giffin,fluker,feder,eyre,eshelman,eakins,detwiler,delrosario,davisson,catalan,canning,calton,brammer,botelho,blakney,bartell,averett,askins,aker,witmer,winkelman,widmer,whittier,weitzel,wardell,wagers,ullman,tupper,tingley,tilghman,talton,simard,seda,scheller,sala,rundell,rost,ribeiro,rabideau,primm,pinon,peart,ostrom,ober,nystrom,nussbaum,naughton,murr,moorhead,monti,monteiro,melson,meissner,mclin,mcgruder,marotta,makowski,majewski,madewell,lunt,lukens,leininger,lebel,lakin,kepler,jaques,hunnicutt,hungerford,hoopes,hertz,heins,halliburton,grosso,gravitt,glasper,gallman,gallaway,funke,fulbright,falgout,eakin,dostie,dorado,dewberry,derose,cutshall,crampton,costanzo,colletti,cloninger,claytor,chiang,campagna,burd,brokaw,broaddus,bretz,brainard,binford,bilbrey,alpert,aitken,ahlers,zajac,woolfolk,witten,windle,wayland,tramel,tittle,talavera,suter,straley,specht,sommerville,soloman,skeens,sigman,sibert,shavers,schuck,schmit,sartain,sabol,rosenblatt,rollo,rashid,rabb,polston,nyberg,northrop,navarra,muldoon,mikesell,mcdougald,mcburney,mariscal,lozier,lingerfelt,legere,latour,lagunas,lacour,kurth,killen,kiely,kayser,kahle,isley,huertas,hower,hinz,haugh,gumm,galicia,fortunato,flake,dunleavy,duggins,doby,digiovanni,devaney,deltoro,cribb,corpuz,coronel,coen,charbonneau,caine,burchette,blakey,blakemore,bergquist,beene,beaudette,bayles,ballance,bakker,bailes,asberry,arwood,zucker,willman,whitesell,wald,walcott,vancleave,trump,strasser,simas,shick,schleicher,schaal,saleh,rotz,resnick,rainer,partee,ollis,oller,oday,noles,munday,mong,millican,merwin,mazzola,mansell,magallanes,llanes,lewellen,lepore,kisner,keesee,jeanlouis,ingham,hornbeck,hawn,hartz,harber,haffner,gutshall,guth,grays,gowan,finlay,finkelstein,eyler,enloe,dungan,diez,dearman,cull,crosson,chronister,cassity,campion,callihan,butz,breazeale,blumenthal,berkey,batty,batton,arvizu,alderete,aldana,albaugh,abernethy,wolter,wille,tweed,tollefson,thomasson,teter,testerman,sproul,spates,southwick,soukup,skelly,senter,sealey,sawicki,sargeant,rossiter,rosemond,repp,pifer,ormsby,nickelson,naumann,morabito,monzon,millsaps,millen,mcelrath,marcoux,mantooth,madson,macneil,mackinnon,louque,leister,lampley,kushner,krouse,kirwan,jessee,janson,jahn,jacquez,islas,hutt,holladay,hillyer,hepburn,hensel,harrold,gingrich,geis,gales,fults,finnell,ferri,featherston,epley,ebersole,eames,dunigan,drye,dismuke,devaughn,delorenzo,damiano,confer,collum,clower,clow,claussen,clack,caylor,cawthon,casias,carreno,bluhm,bingaman,bewley,belew,beckner,auld,amey,wolfenbarger,wilkey,wicklund,waltman,villalba,valero,valdovinos,ullrich,tyus,twyman,trost,tardif,tanguay,stripling,steinbach,shumpert,sasaki,sappington,sandusky,reinhold,reinert,quijano,placencia,pinkard,phinney,perrotta,pernell,parrett,oxendine,owensby,orman,nuno,mori,mcroberts,mcneese,mckamey,mccullum,markel,mardis,maines,lueck,lubin,lefler,leffler,larios,labarbera,kershner,josey,jeanbaptiste,izaguirre,hermosillo,haviland,hartshorn,hafner,ginter,getty,franck,fiske,dufrene,doody,davie,dangerfield,dahlberg,cuthbertson,crone,coffelt,chidester,chesson,cauley,caudell,cantara,campo,caines,bullis,bucci,brochu,bogard,bickerstaff,benning,arzola,antonelli,adkinson,zellers,wulf,worsley,woolridge,whitton,westerfield,walczak,vassar,truett,trueblood,trawick,townsley,topping,tobar,telford,steverson,stagg,sitton,sill,sergent,schoenfeld,sarabia,rutkowski,rubenstein,rigdon,prentiss,pomerleau,plumlee,philbrick,patnode,oloughlin,obregon,nuss,morell,mikell,mele,mcinerney,mcguigan,mcbrayer,lollar,kuehl,kinzer,kamp,joplin,jacobi,howells,holstein,hedden,hassler,harty,halle,greig,gouge,goodrum,gerhart,geier,geddes,gast,forehand,ferree,fendley,feltner,esqueda,encarnacion,eichler,egger,edmundson,eatmon,doud,donohoe,donelson,dilorenzo,digiacomo,diggins,delozier,dejong,danford,crippen,coppage,cogswell,clardy,cioffi,cabe,brunette,bresnahan,blomquist,blackstone,biller,bevis,bevan,bethune,benbow,baty,basinger,balcom,andes,aman,aguero,adkisson,yandell,wilds,whisenhunt,weigand,weeden,voight,villar,trottier,tillett,suazo,setser,scurry,schuh,schreck,schauer,samora,roane,rinker,reimers,ratchford,popovich,parkin,natal,melville,mcbryde,magdaleno,loehr,lockman,lingo,leduc,larocca,lamere,laclair,krall,korte,koger,jalbert,hughs,higbee,henton,heaney,haith,gump,greeson,goodloe,gholston,gasper,gagliardi,fregoso,farthing,fabrizio,ensor,elswick,elgin,eklund,eaddy,drouin,dorton,dizon,derouen,deherrera,davy,dampier,cullum,culley,cowgill,cardoso,cardinale,brodsky,broadbent,brimmer,briceno,branscum,bolyard,boley,bennington,beadle,baur,ballentine,azure,aultman,arciniega,aguila,aceves,yepez,woodrum,wethington,weissman,veloz,trusty,troup,trammel,tarpley,stivers,steck,sprayberry,spraggins,spitler,spiers,sohn,seagraves,schiffman,rudnick,rizo,riccio,rennie,quackenbush,puma,plott,pearcy,parada,paiz,munford,moskowitz,mease,mcnary,mccusker,lozoya,longmire,loesch,lasky,kuhlmann,krieg,koziol,kowalewski,konrad,kindle,jowers,jolin,jaco,horgan,hine,hileman,hepner,heise,heady,hawkinson,hannigan,haberman,guilford,grimaldi,garton,gagliano,fruge,follett,fiscus,ferretti,ebner,easterday,eanes,dirks,dimarco,depalma,deforest,cruce,craighead,christner,candler,cadwell,burchell,buettner,brinton,brazier,brannen,brame,bova,bomar,blakeslee,belknap,bangs,balzer,athey,armes,alvis,alverson,alvardo,yeung,wheelock,westlund,wessels,volkman,threadgill,thelen,tague,symons,swinford,sturtevant,straka,stier,stagner,segarra,seawright,rutan,roux,ringler,riker,ramsdell,quattlebaum,purifoy,poulson,permenter,peloquin,pasley,pagel,osman,obannon,nygaard,newcomer,munos,motta,meadors,mcquiston,mcniel,mcmann,mccrae,mayne,matte,legault,lechner,kucera,krohn,kratzer,koopman,jeske,horrocks,hock,hibbler,hesson,hersh,harvin,halvorsen,griner,grindle,gladstone,garofalo,frampton,forbis,eddington,diorio,dingus,dewar,desalvo,curcio,creasy,cortese,cordoba,connally,cluff,cascio,capuano,canaday,calabro,bussard,brayton,borja,bigley,arnone,arguelles,acuff,zamarripa,wooton,widner,wideman,threatt,thiele,templin,teeters,synder,swint,swick,sturges,stogner,stedman,spratt,siegfried,shetler,scull,savino,sather,rothwell,rook,rone,rhee,quevedo,privett,pouliot,poche,pickel,petrillo,pellegrini,peaslee,partlow,otey,nunnery,morelock,morello,meunier,messinger,mckie,mccubbin,mccarron,lerch,lavine,laverty,lariviere,lamkin,kugler,krol,kissel,keeter,hubble,hickox,hetzel,hayner,hagy,hadlock,groh,gottschalk,goodsell,gassaway,garrard,galligan,firth,fenderson,feinstein,etienne,engleman,emrick,ellender,drews,doiron,degraw,deegan,dart,crissman,corr,cookson,coil,cleaves,charest,chapple,chaparro,castano,carpio,byer,bufford,bridgewater,bridgers,brandes,borrero,bonanno,aube,ancheta,abarca,abad,wooster,wimbush,willhite,willams,wigley,weisberg,wardlaw,vigue,vanhook,unknow,torre,tasker,tarbox,strachan,slover,shamblin,semple,schuyler,schrimsher,sayer,salzman,rubalcava,riles,reneau,reichel,rayfield,rabon,pyatt,prindle,poss,polito,plemmons,pesce,perrault,pereyra,ostrowski,nilsen,niemeyer,munsey,mundell,moncada,miceli,meader,mcmasters,mckeehan,matsumoto,marron,marden,lizarraga,lingenfelter,lewallen,langan,lamanna,kovac,kinsler,kephart,keown,kass,kammerer,jeffreys,hysell,hosmer,hardnett,hanner,guyette,greening,glazer,ginder,fromm,fluellen,finkle,fessler,essary,eisele,duren,dittmer,crochet,cosentino,cogan,coelho,cavin,carrizales,campuzano,brough,bopp,bookman,bobb,blouin,beesley,battista,bascom,bakken,badgett,arneson,anselmo,albino,ahumada,woodyard,wolters,wireman,willison,warman,waldrup,vowell,vantassel,twombly,toomer,tennison,teets,tedeschi,swanner,stutz,stelly,sheehy,schermerhorn,scala,sandidge,salters,salo,saechao,roseboro,rolle,ressler,renz,renn,redford,raposa,rainbolt,pelfrey,orndorff,oney,nolin,nimmons,nardone,myhre,morman,menjivar,mcglone,mccammon,maxon,marciano,manus,lowrance,lorenzen,lonergan,lollis,littles,lindahl,lamas,lach,kuster,krawczyk,knuth,knecht,kirkendall,keitt,keever,kantor,jarboe,hoye,houchens,holter,holsinger,hickok,helwig,helgeson,hassett,harner,hamman,hames,hadfield,goree,goldfarb,gaughan,gaudreau,gantz,gallion,frady,foti,flesher,ferrin,faught,engram,donegan,desouza,degroot,cutright,crowl,criner,coan,clinkscales,chewning,chavira,catchings,carlock,bulger,buenrostro,bramblett,brack,boulware,bookout,bitner,birt,baranowski,baisden,allmon,acklin,yoakum,wilbourn,whisler,weinberger,washer,vasques,vanzandt,vanatta,troxler,tomes,tindle,tims,throckmorton,thach,stpeter,stlaurent,stenson,spry,spitz,songer,snavely,shroyer,shortridge,shenk,sevier,seabrook,scrivner,saltzman,rosenberry,rockwood,robeson,roan,reiser,ramires,raber,posner,popham,piotrowski,pinard,peterkin,pelham,peiffer,peay,nadler,musso,millett,mestas,mcgowen,marques,marasco,manriquez,manos,mair,lipps,leiker,krumm,knorr,kinslow,kessel,kendricks,kelm,irick,ickes,hurlburt,horta,hoekstra,heuer,helmuth,heatherly,hampson,hagar,haga,greenlaw,grau,godbey,gingras,gillies,gibb,gayden,gauvin,garrow,fontanez,florio,finke,fasano,ezzell,ewers,eveland,eckenrode,duclos,drumm,dimmick,delancey,defazio,dashiell,cusack,crowther,crigger,cray,coolidge,coldiron,cleland,chalfant,cassel,camire,cabrales,broomfield,brittingham,brisson,brickey,braziel,brazell,bragdon,boulanger,boman,bohannan,beem,barre,azar,ashbaugh,armistead,almazan,adamski,zendejas,winburn,willaims,wilhoit,westberry,wentzel,wendling,visser,vanscoy,vankirk,vallee,tweedy,thornberry,sweeny,spradling,spano,smelser,shim,sechrist,schall,scaife,rugg,rothrock,roesler,riehl,ridings,render,ransdell,radke,pinero,petree,pendergast,peluso,pecoraro,pascoe,panek,oshiro,navarrette,murguia,moores,moberg,michaelis,mcwhirter,mcsweeney,mcquade,mccay,mauk,mariani,marceau,mandeville,maeda,lunde,ludlow,loeb,lindo,linderman,leveille,leith,larock,lambrecht,kulp,kinsley,kimberlin,kesterson,hoyos,helfrich,hanke,grisby,goyette,gouveia,glazier,gile,gerena,gelinas,gasaway,funches,fujimoto,flynt,fenske,fellers,fehr,eslinger,escalera,enciso,duley,dittman,dineen,diller,devault,collings,clymer,clowers,chavers,charland,castorena,castello,camargo,bunce,bullen,boyes,borchers,borchardt,birnbaum,birdsall,billman,benites,bankhead,ange,ammerman,adkison,winegar,wickman,warr,warnke,villeneuve,veasey,vassallo,vannatta,vadnais,twilley,towery,tomblin,tippett,theiss,talkington,talamantes,swart,swanger,streit,stines,stabler,spurling,sobel,sine,simmers,shippy,shiflett,shearin,sauter,sanderlin,rusch,runkle,ruckman,rorie,roesch,richert,rehm,randel,ragin,quesenberry,puentes,plyler,plotkin,paugh,oshaughnessy,ohalloran,norsworthy,niemann,nader,moorefield,mooneyham,modica,miyamoto,mickel,mebane,mckinnie,mazurek,mancilla,lukas,lovins,loughlin,lotz,lindsley,liddle,levan,lederman,leclaire,lasseter,lapoint,lamoreaux,lafollette,kubiak,kirtley,keffer,kaczmarek,housman,hiers,hibbert,herrod,hegarty,hathorn,greenhaw,grafton,govea,futch,furst,franko,forcier,foran,flickinger,fairfield,eure,emrich,embrey,edgington,ecklund,eckard,durante,deyo,delvecchio,dade,currey,creswell,cottrill,casavant,cartier,cargile,capel,cammack,calfee,burse,burruss,brust,brousseau,bridwell,braaten,borkholder,bloomquist,bjork,bartelt,amburgey,yeary,whitefield,vinyard,vanvalkenburg,twitchell,timmins,tapper,stringham,starcher,spotts,slaugh,simonsen,sheffer,sequeira,rosati,rhymes,quint,pollak,peirce,patillo,parkerson,paiva,nilson,nevin,narcisse,mitton,merriam,merced,meiners,mckain,mcelveen,mcbeth,marsden,marez,manke,mahurin,mabrey,luper,krull,hunsicker,hornbuckle,holtzclaw,hinnant,heston,hering,hemenway,hegwood,hearns,halterman,guiterrez,grote,granillo,grainger,glasco,gilder,garren,garlock,garey,fryar,fredricks,fraizer,foshee,ferrel,felty,everitt,evens,esser,elkin,eberhart,durso,duguay,driskill,doster,dewall,deveau,demps,demaio,delreal,deleo,darrah,cumberbatch,culberson,cranmer,cordle,colgan,chesley,cavallo,castellon,castelli,carreras,carnell,carlucci,bontrager,blumberg,blasingame,becton,artrip,andujar,alkire,alder,zukowski,zuckerman,wroblewski,wrigley,woodside,wigginton,westman,westgate,werts,washam,wardlow,walser,waiters,tadlock,stringfield,stimpson,stickley,standish,spurlin,spindler,speller,spaeth,sotomayor,sluder,shryock,shepardson,shatley,scannell,santistevan,rosner,resto,reinhard,rathburn,prisco,poulsen,pinney,phares,pennock,pastrana,oviedo,ostler,nauman,mulford,moise,moberly,mirabal,metoyer,metheny,mentzer,meldrum,mcinturff,mcelyea,mcdougle,massaro,lumpkins,loveday,lofgren,lirette,lesperance,lefkowitz,ledger,lauzon,lachapelle,klassen,keough,kempton,kaelin,jeffords,hsieh,hoyer,horwitz,hoeft,hennig,haskin,gourdine,golightly,girouard,fulgham,fritsch,freer,frasher,foulk,firestone,fiorentino,fedor,ensley,englehart,eells,dunphy,donahoe,dileo,dibenedetto,dabrowski,crick,coonrod,conder,coddington,chunn,chaput,cerna,carreiro,calahan,braggs,bourdon,bollman,bittle,bauder,barreras,aubuchon,anzalone,adamo,zerbe,willcox,westberg,weikel,waymire,vroman,vinci,vallejos,truesdell,troutt,trotta,tollison,toles,tichenor,symonds,surles,strayer,stgeorge,sroka,sorrentino,solares,snelson,silvestri,sikorski,shawver,schumaker,schorr,schooley,scates,satterlee,satchell,rymer,roselli,robitaille,riegel,regis,reames,provenzano,priestley,plaisance,pettey,palomares,nowakowski,monette,minyard,mclamb,mchone,mccarroll,masson,magoon,maddy,lundin,licata,leonhardt,landwehr,kircher,kinch,karpinski,johannsen,hussain,houghtaling,hoskinson,hollaway,holeman,hobgood,hiebert,goggin,geissler,gadbois,gabaldon,fleshman,flannigan,fairman,eilers,dycus,dunmire,duffield,dowler,deloatch,dehaan,deemer,clayborn,christofferso,chilson,chesney,chatfield,carron,canale,brigman,branstetter,bosse,borton,bonar,biron,barroso,arispe,zacharias,zabel,yaeger,woolford,whetzel,weakley,veatch,vandeusen,tufts,troxel,troche,traver,townsel,talarico,swilley,sterrett,stenger,speakman,sowards,sours,souders,souder,soles,sobers,snoddy,smither,shute,shoaf,shahan,schuetz,scaggs,santini,rosson,rolen,robidoux,rentas,recio,pixley,pawlowski,pawlak,paull,overbey,orear,oliveri,oldenburg,nutting,naugle,mossman,misner,milazzo,michelson,mcentee,mccullar,mccree,mcaleer,mazzone,mandell,manahan,malott,maisonet,mailloux,lumley,lowrie,louviere,lipinski,lindemann,leppert,leasure,labarge,kubik,knisely,knepp,kenworthy,kennelly,kelch,kanter,houchin,hosley,hosler,hollon,holleman,heitman,haggins,gwaltney,goulding,gorden,geraci,gathers,frison,feagin,falconer,espada,erving,erikson,eisenhauer,ebeling,durgin,dowdle,dinwiddie,delcastillo,dedrick,crimmins,covell,cournoyer,coria,cohan,cataldo,carpentier,canas,campa,brode,brashears,blaser,bicknell,bednar,barwick,ascencio,althoff,almodovar,alamo,zirkle,zabala,wolverton,winebrenner,wetherell,westlake,wegener,weddington,tuten,trosclair,tressler,theroux,teske,swinehart,swensen,sundquist,southall,socha,sizer,silverberg,shortt,shimizu,sherrard,shaeffer,scheid,scheetz,saravia,sanner,rubinstein,rozell,romer,rheaume,reisinger,randles,pullum,petrella,payan,nordin,norcross,nicoletti,nicholes,newbold,nakagawa,monteith,milstead,milliner,mellen,mccardle,liptak,leitch,latimore,larrison,landau,laborde,koval,izquierdo,hymel,hoskin,holte,hoefer,hayworth,hausman,harrill,harrel,hardt,gully,groover,grinnell,greenspan,graver,grandberry,gorrell,goldenberg,goguen,gilleland,fuson,feldmann,everly,dyess,dunnigan,downie,dolby,deatherage,cosey,cheever,celaya,caver,cashion,caplinger,cansler,byrge,bruder,breuer,breslin,brazelton,botkin,bonneau,bondurant,bohanan,bogue,bodner,boatner,blatt,bickley,belliveau,beiler,beier,beckstead,bachmann,atkin,altizer,alloway,allaire,albro,abron,zellmer,yetter,yelverton,wiens,whidden,viramontes,vanwormer,tarantino,tanksley,sumlin,strauch,strang,stice,spahn,sosebee,sigala,shrout,seamon,schrum,schneck,schantz,ruddy,romig,roehl,renninger,reding,polak,pohlman,pasillas,oldfield,oldaker,ohanlon,ogilvie,norberg,nolette,neufeld,nellis,mummert,mulvihill,mullaney,monteleone,mendonca,meisner,mcmullan,mccluney,mattis,massengill,manfredi,luedtke,lounsbury,liberatore,lamphere,laforge,jourdan,iorio,iniguez,ikeda,hubler,hodgdon,hocking,heacock,haslam,haralson,hanshaw,hannum,hallam,haden,garnes,garces,gammage,gambino,finkel,faucett,ehrhardt,eggen,dusek,durrant,dubay,dones,depasquale,delucia,degraff,decamp,davalos,cullins,conard,clouser,clontz,cifuentes,chappel,chaffins,celis,carwile,byram,bruggeman,bressler,brathwaite,brasfield,bradburn,boose,bodie,blosser,bertsch,bernardi,bernabe,bengtson,barrette,astorga,alday,albee,abrahamson,yarnell,wiltse,wiebe,waguespack,vasser,upham,turek,traxler,torain,tomaszewski,tinnin,tiner,tindell,styron,stahlman,staab,skiba,sheperd,seidl,secor,schutte,sanfilippo,ruder,rondon,rearick,procter,prochaska,pettengill,pauly,neilsen,nally,mullenax,morano,meads,mcnaughton,mcmurtry,mcmath,mckinsey,matthes,massenburg,marlar,margolis,malin,magallon,mackin,lovette,loughran,loring,longstreet,loiselle,lenihan,kunze,koepke,kerwin,kalinowski,kagan,innis,innes,holtzman,heinemann,harshman,haider,haack,grondin,grissett,greenawalt,goudy,goodlett,goldston,gokey,gardea,galaviz,gafford,gabrielson,furlow,fritch,fordyce,folger,elizalde,ehlert,eckhoff,eccleston,ealey,dubin,diemer,deschamps,delapena,decicco,debolt,cullinan,crittendon,crase,cossey,coppock,coots,colyer,cluck,chamberland,burkhead,bumpus,buchan,borman,birkholz,berardi,benda,behnke,barter,amezquita,wotring,wirtz,wingert,wiesner,whitesides,weyant,wainscott,venezia,varnell,tussey,thurlow,tabares,stiver,stell,starke,stanhope,stanek,sisler,sinnott,siciliano,shehan,selph,seager,scurlock,scranton,santucci,santangelo,saltsman,rogge,rettig,renwick,reidy,reider,redfield,premo,parente,paolucci,palmquist,ohler,netherton,mutchler,morita,mistretta,minnis,middendorf,menzel,mendosa,mendelson,meaux,mcspadden,mcquaid,mcnatt,manigault,maney,mager,lukes,lopresti,liriano,letson,lechuga,lazenby,lauria,larimore,krupp,krupa,kopec,kinchen,kifer,kerney,kerner,kennison,kegley,karcher,justis,johson,jellison,janke,huskins,holzman,hinojos,hefley,hatmaker,harte,halloway,hallenbeck,goodwyn,glaspie,geise,fullwood,fryman,frakes,fraire,farrer,enlow,engen,ellzey,eckles,earles,dunkley,drinkard,dreiling,draeger,dinardo,dills,desroches,desantiago,curlee,crumbley,critchlow,coury,courtright,coffield,cleek,charpentier,cardone,caples,cantin,buntin,bugbee,brinkerhoff,brackin,bourland,blassingame,beacham,banning,auguste,andreasen,amann,almon,alejo,adelman,abston,yerger,wymer,woodberry,windley,whiteaker,westfield,weibel,wanner,waldrep,villani,vanarsdale,utterback,updike,triggs,topete,tolar,tigner,thoms,tauber,tarvin,tally,swiney,sweatman,studebaker,stennett,starrett,stannard,stalvey,sonnenberg,smithey,sieber,sickles,shinault,segars,sanger,salmeron,rothe,rizzi,restrepo,ralls,ragusa,quiroga,papenfuss,oropeza,okane,mudge,mozingo,molinaro,mcvicker,mcgarvey,mcfalls,mccraney,matus,magers,llanos,livermore,linehan,leitner,laymon,lawing,lacourse,kwong,kollar,kneeland,kennett,kellett,kangas,janzen,hutter,huling,hofmeister,hewes,harjo,habib,guice,grullon,greggs,grayer,granier,grable,gowdy,giannini,getchell,gartman,garnica,ganey,gallimore,fetters,fergerson,farlow,fagundes,exley,esteves,enders,edenfield,easterwood,drakeford,dipasquale,desousa,deshields,deeter,dedmon,debord,daughtery,cutts,courtemanche,coursey,copple,coomes,collis,cogburn,clopton,choquette,chaidez,castrejon,calhoon,burbach,bulloch,buchman,bruhn,bohon,blough,baynes,barstow,zeman,zackery,yardley,yamashita,wulff,wilken,wiliams,wickersham,wible,whipkey,wedgeworth,walmsley,walkup,vreeland,verrill,umana,traub,swingle,summey,stroupe,stockstill,steffey,stefanski,statler,stapp,speights,solari,soderberg,shunk,shorey,shewmaker,sheilds,schiffer,schank,schaff,sagers,rochon,riser,rickett,reale,raglin,polen,plata,pitcock,percival,palen,orona,oberle,nocera,navas,nault,mullings,montejano,monreal,minick,middlebrook,meece,mcmillion,mccullen,mauck,marshburn,maillet,mahaney,magner,maclin,lucey,litteral,lippincott,leite,leaks,lamarre,jurgens,jerkins,jager,hurwitz,hughley,hotaling,horstman,hohman,hocker,hively,hipps,hessler,hermanson,hepworth,helland,hedlund,harkless,haigler,gutierez,grindstaff,glantz,giardina,gerken,gadsden,finnerty,farnum,encinas,drakes,dennie,cutlip,curtsinger,couto,cortinas,corby,chiasson,carle,carballo,brindle,borum,bober,blagg,berthiaume,beahm,batres,basnight,backes,axtell,atterberry,alvares,alegria,woodell,wojciechowski,winfree,winbush,wiest,wesner,wamsley,wakeman,verner,truex,trafton,toman,thorsen,theus,tellier,tallant,szeto,strope,stills,simkins,shuey,shaul,servin,serio,serafin,salguero,ryerson,rudder,ruark,rother,rohrbaugh,rohrbach,rohan,rogerson,risher,reeser,pryce,prokop,prins,priebe,prejean,pinheiro,petrone,petri,penson,pearlman,parikh,natoli,murakami,mullikin,mullane,motes,morningstar,mcveigh,mcgrady,mcgaughey,mccurley,marchan,manske,lusby,linde,likens,licon,leroux,lemaire,legette,laskey,laprade,laplant,kolar,kittredge,kinley,kerber,kanagy,jetton,janik,ippolito,inouye,hunsinger,howley,howery,horrell,holthaus,hiner,hilson,hilderbrand,hartzler,harnish,harada,hansford,halligan,hagedorn,gwynn,gudino,greenstein,greear,gracey,goudeau,goodner,ginsburg,gerth,gerner,fujii,frier,frenette,folmar,fleisher,fleischmann,fetzer,eisenman,earhart,dupuy,dunkelberger,drexler,dillinger,dilbeck,dewald,demby,deford,craine,chesnut,casady,carstens,carrick,carino,carignan,canchola,bushong,burman,buono,brownlow,broach,britten,brickhouse,boyden,boulton,borland,bohrer,blubaugh,bever,berggren,benevides,arocho,arends,amezcua,almendarez,zalewski,witzel,winkfield,wilhoite,vangundy,vanfleet,vanetten,vandergriff,urbanski,troiano,thibodaux,straus,stoneking,stjean,stillings,stange,speicher,speegle,smeltzer,slawson,simmonds,shuttleworth,serpa,senger,seidman,schweiger,schloss,schimmel,schechter,sayler,sabatini,ronan,rodiguez,riggleman,richins,reamer,prunty,porath,plunk,piland,philbrook,pettitt,perna,peralez,pascale,padula,oboyle,nivens,nickols,mundt,munden,montijo,mcmanis,mcgrane,mccrimmon,manzi,mangold,malick,mahar,maddock,losey,litten,leedy,leavell,ladue,krahn,kluge,junker,iversen,imler,hurtt,huizar,hubbert,howington,hollomon,holdren,hoisington,heiden,hauge,hartigan,gutirrez,griffie,greenhill,gratton,granata,gottfried,gertz,gautreaux,furry,furey,funderburg,flippen,fitzgibbon,drucker,donoghue,dildy,devers,detweiler,despres,denby,degeorge,cueto,cranston,courville,clukey,cirillo,chivers,caudillo,butera,bulluck,buckmaster,braunstein,bracamonte,bourdeau,bonnette\".split(\",\"),\n us_tv_and_film: \"you,i,to,that,it,me,what,this,know,i'm,no,have,my,don't,just,not,do,be,your,we,it's,so,but,all,well,oh,about,right,you're,get,here,out,going,like,yeah,if,can,up,want,think,that's,now,go,him,how,got,did,why,see,come,good,really,look,will,okay,back,can't,mean,tell,i'll,hey,he's,could,didn't,yes,something,because,say,take,way,little,make,need,gonna,never,we're,too,she's,i've,sure,our,sorry,what's,let,thing,maybe,down,man,very,there's,should,anything,said,much,any,even,off,please,doing,thank,give,thought,help,talk,god,still,wait,find,nothing,again,things,let's,doesn't,call,told,great,better,ever,night,away,believe,feel,everything,you've,fine,last,keep,does,put,around,stop,they're,i'd,guy,isn't,always,listen,wanted,guys,huh,those,big,lot,happened,thanks,won't,trying,kind,wrong,talking,guess,care,bad,mom,remember,getting,we'll,together,dad,leave,understand,wouldn't,actually,hear,baby,nice,father,else,stay,done,wasn't,course,might,mind,every,enough,try,hell,came,someone,you'll,whole,yourself,idea,ask,must,coming,looking,woman,room,knew,tonight,real,son,hope,went,hmm,happy,pretty,saw,girl,sir,friend,already,saying,next,job,problem,minute,thinking,haven't,heard,honey,matter,myself,couldn't,exactly,having,probably,happen,we've,hurt,boy,dead,gotta,alone,excuse,start,kill,hard,you'd,today,car,ready,without,wants,hold,wanna,yet,seen,deal,once,gone,morning,supposed,friends,head,stuff,worry,live,truth,face,forget,true,cause,soon,knows,telling,wife,who's,chance,run,move,anyone,person,bye,somebody,heart,miss,making,meet,anyway,phone,reason,damn,lost,looks,bring,case,turn,wish,tomorrow,kids,trust,check,change,anymore,least,aren't,working,makes,taking,means,brother,hate,ago,says,beautiful,gave,fact,crazy,sit,afraid,important,rest,fun,kid,word,watch,glad,everyone,sister,minutes,everybody,bit,couple,whoa,either,mrs,feeling,daughter,wow,gets,asked,break,promise,door,close,hand,easy,question,tried,far,walk,needs,mine,killed,hospital,anybody,alright,wedding,shut,able,die,perfect,stand,comes,hit,waiting,dinner,funny,husband,almost,pay,answer,cool,eyes,news,child,shouldn't,yours,moment,sleep,read,where's,sounds,sonny,pick,sometimes,bed,date,plan,hours,lose,hands,serious,shit,behind,inside,ahead,week,wonderful,fight,past,cut,quite,he'll,sick,it'll,eat,nobody,goes,save,seems,finally,lives,worried,upset,carly,met,brought,seem,sort,safe,weren't,leaving,front,shot,loved,asking,running,clear,figure,hot,felt,parents,drink,absolutely,how's,daddy,sweet,alive,sense,meant,happens,bet,blood,ain't,kidding,lie,meeting,dear,seeing,sound,fault,ten,buy,hour,speak,lady,jen,thinks,christmas,outside,hang,possible,worse,mistake,ooh,handle,spend,totally,giving,here's,marriage,realize,unless,sex,send,needed,scared,picture,talked,ass,hundred,changed,completely,explain,certainly,sign,boys,relationship,loves,hair,lying,choice,anywhere,future,weird,luck,she'll,turned,touch,kiss,crane,questions,obviously,wonder,pain,calling,somewhere,throw,straight,cold,fast,words,food,none,drive,feelings,they'll,marry,drop,cannot,dream,protect,twenty,surprise,sweetheart,poor,looked,mad,except,gun,y'know,dance,takes,appreciate,especially,situation,besides,pull,hasn't,worth,sheridan,amazing,expect,swear,piece,busy,happening,movie,we'd,catch,perhaps,step,fall,watching,kept,darling,dog,honor,moving,till,admit,problems,murder,he'd,evil,definitely,feels,honest,eye,broke,missed,longer,dollars,tired,evening,starting,entire,trip,niles,suppose,calm,imagine,fair,caught,blame,sitting,favor,apartment,terrible,clean,learn,frasier,relax,accident,wake,prove,smart,message,missing,forgot,interested,table,nbsp,mouth,pregnant,ring,careful,shall,dude,ride,figured,wear,shoot,stick,follow,angry,write,stopped,ran,standing,forgive,jail,wearing,ladies,kinda,lunch,cristian,greenlee,gotten,hoping,phoebe,thousand,ridge,paper,tough,tape,count,boyfriend,proud,agree,birthday,they've,share,offer,hurry,feet,wondering,decision,ones,finish,voice,herself,would've,mess,deserve,evidence,cute,dress,interesting,hotel,enjoy,quiet,concerned,staying,beat,sweetie,mention,clothes,fell,neither,mmm,fix,respect,prison,attention,holding,calls,surprised,bar,keeping,gift,hadn't,putting,dark,owe,ice,helping,normal,aunt,lawyer,apart,plans,jax,girlfriend,floor,whether,everything's,box,judge,upstairs,sake,mommy,possibly,worst,acting,accept,blow,strange,saved,conversation,plane,mama,yesterday,lied,quick,lately,stuck,difference,store,she'd,bought,doubt,listening,walking,cops,deep,dangerous,buffy,sleeping,chloe,rafe,join,card,crime,gentlemen,willing,window,walked,guilty,likes,fighting,difficult,soul,joke,favorite,uncle,promised,bother,seriously,cell,knowing,broken,advice,somehow,paid,losing,push,helped,killing,boss,liked,innocent,rules,learned,thirty,risk,letting,speaking,ridiculous,afternoon,apologize,nervous,charge,patient,boat,how'd,hide,detective,planning,huge,breakfast,horrible,awful,pleasure,driving,hanging,picked,sell,quit,apparently,dying,notice,congratulations,visit,could've,c'mon,letter,decide,forward,fool,showed,smell,seemed,spell,memory,pictures,slow,seconds,hungry,hearing,kitchen,ma'am,should've,realized,kick,grab,discuss,fifty,reading,idiot,suddenly,agent,destroy,bucks,shoes,peace,arms,demon,livvie,consider,papers,incredible,witch,drunk,attorney,tells,knock,ways,gives,nose,skye,turns,keeps,jealous,drug,sooner,cares,plenty,extra,outta,weekend,matters,gosh,opportunity,impossible,waste,pretend,jump,eating,proof,slept,arrest,breathe,perfectly,warm,pulled,twice,easier,goin,dating,suit,romantic,drugs,comfortable,finds,checked,divorce,begin,ourselves,closer,ruin,smile,laugh,treat,fear,what'd,otherwise,excited,mail,hiding,stole,pacey,noticed,fired,excellent,bringing,bottom,note,sudden,bathroom,honestly,sing,foot,remind,charges,witness,finding,tree,dare,hardly,that'll,steal,silly,contact,teach,shop,plus,colonel,fresh,trial,invited,roll,reach,dirty,choose,emergency,dropped,butt,credit,obvious,locked,loving,nuts,agreed,prue,goodbye,condition,guard,fuckin,grow,cake,mood,crap,crying,belong,partner,trick,pressure,dressed,taste,neck,nurse,raise,lots,carry,whoever,drinking,they'd,breaking,file,lock,wine,spot,paying,assume,asleep,turning,viki,bedroom,shower,nikolas,camera,fill,reasons,forty,bigger,nope,breath,doctors,pants,freak,movies,folks,cream,wild,truly,desk,convince,client,threw,hurts,spending,answers,shirt,chair,rough,doin,sees,ought,empty,wind,aware,dealing,pack,tight,hurting,guest,arrested,salem,confused,surgery,expecting,deacon,unfortunately,goddamn,bottle,beyond,whenever,pool,opinion,starts,jerk,secrets,falling,necessary,barely,dancing,tests,copy,cousin,ahem,twelve,tess,skin,fifteen,speech,orders,complicated,nowhere,escape,biggest,restaurant,grateful,usual,burn,address,someplace,screw,everywhere,regret,goodness,mistakes,details,responsibility,suspect,corner,hero,dumb,terrific,whoo,hole,memories,o'clock,teeth,ruined,bite,stenbeck,liar,showing,cards,desperate,search,pathetic,spoke,scare,marah,afford,settle,stayed,checking,hired,heads,concern,blew,alcazar,champagne,connection,tickets,happiness,saving,kissing,hated,personally,suggest,prepared,onto,downstairs,ticket,it'd,loose,holy,duty,convinced,throwing,kissed,legs,loud,saturday,babies,where'd,warning,miracle,carrying,blind,ugly,shopping,hates,sight,bride,coat,clearly,celebrate,brilliant,wanting,forrester,lips,custody,screwed,buying,toast,thoughts,reality,lexie,attitude,advantage,grandfather,sami,grandma,someday,roof,marrying,powerful,grown,grandmother,fake,must've,ideas,exciting,familiar,bomb,bout,harmony,schedule,capable,practically,correct,clue,forgotten,appointment,deserves,threat,bloody,lonely,shame,jacket,hook,scary,investigation,invite,shooting,lesson,criminal,victim,funeral,considering,burning,strength,harder,sisters,pushed,shock,pushing,heat,chocolate,miserable,corinthos,nightmare,brings,zander,crash,chances,sending,recognize,healthy,boring,feed,engaged,headed,treated,knife,drag,badly,hire,paint,pardon,behavior,closet,warn,gorgeous,milk,survive,ends,dump,rent,remembered,thanksgiving,rain,revenge,prefer,spare,pray,disappeared,aside,statement,sometime,meat,fantastic,breathing,laughing,stood,affair,ours,depends,protecting,jury,brave,fingers,murdered,explanation,picking,blah,stronger,handsome,unbelievable,anytime,shake,oakdale,wherever,pulling,facts,waited,lousy,circumstances,disappointed,weak,trusted,license,nothin,trash,understanding,slip,sounded,awake,friendship,stomach,weapon,threatened,mystery,vegas,understood,basically,switch,frankly,cheap,lifetime,deny,clock,garbage,why'd,tear,ears,indeed,changing,singing,tiny,decent,avoid,messed,filled,touched,disappear,exact,pills,kicked,harm,fortune,pretending,insurance,fancy,drove,cared,belongs,nights,lorelai,lift,timing,guarantee,chest,woke,burned,watched,heading,selfish,drinks,doll,committed,elevator,freeze,noise,wasting,ceremony,uncomfortable,staring,files,bike,stress,permission,thrown,possibility,borrow,fabulous,doors,screaming,bone,xander,what're,meal,apology,anger,honeymoon,bail,parking,fixed,wash,stolen,sensitive,stealing,photo,chose,lets,comfort,worrying,pocket,mateo,bleeding,shoulder,ignore,talent,tied,garage,dies,demons,dumped,witches,rude,crack,bothering,radar,soft,meantime,gimme,kinds,fate,concentrate,throat,prom,messages,intend,ashamed,somethin,manage,guilt,interrupt,guts,tongue,shoe,basement,sentence,purse,glasses,cabin,universe,repeat,mirror,wound,travers,tall,engagement,therapy,emotional,jeez,decisions,soup,thrilled,stake,chef,moves,extremely,moments,expensive,counting,shots,kidnapped,cleaning,shift,plate,impressed,smells,trapped,aidan,knocked,charming,attractive,argue,puts,whip,embarrassed,package,hitting,bust,stairs,alarm,pure,nail,nerve,incredibly,walks,dirt,stamp,terribly,friendly,damned,jobs,suffering,disgusting,stopping,deliver,riding,helps,disaster,bars,crossed,trap,talks,eggs,chick,threatening,spoken,introduce,confession,embarrassing,bags,impression,gate,reputation,presents,chat,suffer,argument,talkin,crowd,homework,coincidence,cancel,pride,solve,hopefully,pounds,pine,mate,illegal,generous,outfit,maid,bath,punch,freaked,begging,recall,enjoying,prepare,wheel,defend,signs,painful,yourselves,maris,that'd,suspicious,cooking,button,warned,sixty,pity,yelling,awhile,confidence,offering,pleased,panic,hers,gettin,refuse,grandpa,testify,choices,cruel,mental,gentleman,coma,cutting,proteus,guests,expert,benefit,faces,jumped,toilet,sneak,halloween,privacy,smoking,reminds,twins,swing,solid,options,commitment,crush,ambulance,wallet,gang,eleven,option,laundry,assure,stays,skip,fail,discussion,clinic,betrayed,sticking,bored,mansion,soda,sheriff,suite,handled,busted,load,happier,studying,romance,procedure,commit,assignment,suicide,minds,swim,yell,llanview,chasing,proper,believes,humor,hopes,lawyers,giant,latest,escaped,parent,tricks,insist,dropping,cheer,medication,flesh,routine,sandwich,handed,false,beating,warrant,awfully,odds,treating,thin,suggesting,fever,sweat,silent,clever,sweater,mall,sharing,assuming,judgment,goodnight,divorced,surely,steps,confess,math,listened,comin,answered,vulnerable,bless,dreaming,chip,zero,pissed,nate,kills,tears,knees,chill,brains,unusual,packed,dreamed,cure,lookin,grave,cheating,breaks,locker,gifts,awkward,thursday,joking,reasonable,dozen,curse,quartermaine,millions,dessert,rolling,detail,alien,delicious,closing,vampires,wore,tail,secure,salad,murderer,spit,offense,dust,conscience,bread,answering,lame,invitation,grief,smiling,pregnancy,prisoner,delivery,guards,virus,shrink,freezing,wreck,massimo,wire,technically,blown,anxious,cave,holidays,cleared,wishes,caring,candles,bound,charm,pulse,jumping,jokes,boom,occasion,silence,nonsense,frightened,slipped,dimera,blowing,relationships,kidnapping,spin,tool,roxy,packing,blaming,wrap,obsessed,fruit,torture,personality,there'll,fairy,necessarily,seventy,print,motel,underwear,grams,exhausted,believing,freaking,carefully,trace,touching,messing,recovery,intention,consequences,belt,sacrifice,courage,enjoyed,attracted,remove,testimony,intense,heal,defending,unfair,relieved,loyal,slowly,buzz,alcohol,surprises,psychiatrist,plain,attic,who'd,uniform,terrified,cleaned,zach,threaten,fella,enemies,satisfied,imagination,hooked,headache,forgetting,counselor,andie,acted,badge,naturally,frozen,sakes,appropriate,trunk,dunno,costume,sixteen,impressive,kicking,junk,grabbed,understands,describe,clients,owns,affect,witnesses,starving,instincts,happily,discussing,deserved,strangers,surveillance,admire,questioning,dragged,barn,deeply,wrapped,wasted,tense,hoped,fellas,roommate,mortal,fascinating,stops,arrangements,agenda,literally,propose,honesty,underneath,sauce,promises,lecture,eighty,torn,shocked,backup,differently,ninety,deck,biological,pheebs,ease,creep,waitress,telephone,ripped,raising,scratch,rings,prints,thee,arguing,ephram,asks,oops,diner,annoying,taggert,sergeant,blast,towel,clown,habit,creature,bermuda,snap,react,paranoid,handling,eaten,therapist,comment,sink,reporter,nurses,beats,priority,interrupting,warehouse,loyalty,inspector,pleasant,excuses,threats,guessing,tend,praying,motive,unconscious,mysterious,unhappy,tone,switched,rappaport,sookie,neighbor,loaded,swore,piss,balance,toss,misery,thief,squeeze,lobby,goa'uld,geez,exercise,forth,booked,sandburg,poker,eighteen,d'you,bury,everyday,digging,creepy,wondered,liver,hmmm,magical,fits,discussed,moral,helpful,searching,flew,depressed,aisle,cris,amen,vows,neighbors,darn,cents,arrange,annulment,useless,adventure,resist,fourteen,celebrating,inch,debt,violent,sand,teal'c,celebration,reminded,phones,paperwork,emotions,stubborn,pound,tension,stroke,steady,overnight,chips,beef,suits,boxes,cassadine,collect,tragedy,spoil,realm,wipe,surgeon,stretch,stepped,nephew,neat,limo,confident,perspective,climb,punishment,finest,springfield,hint,furniture,blanket,twist,proceed,fries,worries,niece,gloves,soap,signature,disappoint,crawl,convicted,flip,counsel,doubts,crimes,accusing,shaking,remembering,hallway,halfway,bothered,madam,gather,cameras,blackmail,symptoms,rope,ordinary,imagined,cigarette,supportive,explosion,trauma,ouch,furious,cheat,avoiding,whew,thick,oooh,boarding,approve,urgent,shhh,misunderstanding,drawer,phony,interfere,catching,bargain,tragic,respond,punish,penthouse,thou,rach,ohhh,insult,bugs,beside,begged,absolute,strictly,socks,senses,sneaking,reward,polite,checks,tale,physically,instructions,fooled,blows,tabby,bitter,adorable,y'all,tested,suggestion,jewelry,alike,jacks,distracted,shelter,lessons,constable,circus,audition,tune,shoulders,mask,helpless,feeding,explains,sucked,robbery,objection,behave,valuable,shadows,courtroom,confusing,talented,smarter,mistaken,customer,bizarre,scaring,motherfucker,alert,vecchio,reverend,foolish,compliment,bastards,worker,wheelchair,protective,gentle,reverse,picnic,knee,cage,wives,wednesday,voices,toes,stink,scares,pour,cheated,slide,ruining,filling,exit,cottage,upside,proves,parked,diary,complaining,confessed,pipe,merely,massage,chop,spill,prayer,betray,waiter,scam,rats,fraud,brush,tables,sympathy,pill,filthy,seventeen,employee,bracelet,pays,fairly,deeper,arrive,tracking,spite,shed,recommend,oughta,nanny,menu,diet,corn,roses,patch,dime,devastated,subtle,bullets,beans,pile,confirm,strings,parade,borrowed,toys,straighten,steak,premonition,planted,honored,exam,convenient,traveling,laying,insisted,dish,aitoro,kindly,grandson,donor,temper,teenager,proven,mothers,denial,backwards,tent,swell,noon,happiest,drives,thinkin,spirits,potion,holes,fence,whatsoever,rehearsal,overheard,lemme,hostage,bench,tryin,taxi,shove,moron,impress,needle,intelligent,instant,disagree,stinks,rianna,recover,groom,gesture,constantly,bartender,suspects,sealed,legally,hears,dresses,sheet,psychic,teenage,knocking,judging,accidentally,waking,rumor,manners,homeless,hollow,desperately,tapes,referring,item,genoa,gear,majesty,cried,tons,spells,instinct,quote,motorcycle,convincing,fashioned,aids,accomplished,grip,bump,upsetting,needing,invisible,forgiveness,feds,compare,bothers,tooth,inviting,earn,compromise,cocktail,tramp,jabot,intimate,dignity,dealt,souls,informed,gods,dressing,cigarettes,alistair,leak,fond,corky,seduce,liquor,fingerprints,enchantment,butters,stuffed,stavros,emotionally,transplant,tips,oxygen,nicely,lunatic,drill,complain,announcement,unfortunate,slap,prayers,plug,opens,oath,o'neill,mutual,yacht,remembers,fried,extraordinary,bait,warton,sworn,stare,safely,reunion,burst,might've,dive,aboard,expose,buddies,trusting,booze,sweep,sore,scudder,properly,parole,ditch,canceled,speaks,glow,wears,thirsty,skull,ringing,dorm,dining,bend,unexpected,pancakes,harsh,flattered,ahhh,troubles,fights,favourite,eats,rage,undercover,spoiled,sloane,shine,destroying,deliberately,conspiracy,thoughtful,sandwiches,plates,nails,miracles,fridge,drank,contrary,beloved,allergic,washed,stalking,solved,sack,misses,forgiven,bent,maciver,involve,dragging,cooked,pointing,foul,dull,beneath,heels,faking,deaf,stunt,jealousy,hopeless,fears,cuts,scenario,necklace,crashed,accuse,restraining,homicide,helicopter,firing,safer,auction,videotape,tore,reservations,pops,appetite,wounds,vanquish,ironic,fathers,excitement,anyhow,tearing,sends,rape,laughed,belly,dealer,cooperate,accomplish,wakes,spotted,sorts,reservation,ashes,tastes,supposedly,loft,intentions,integrity,wished,towels,suspected,investigating,inappropriate,lipstick,lawn,compassion,cafeteria,scarf,precisely,obsession,loses,lighten,infection,granddaughter,explode,balcony,this'll,spying,publicity,depend,cracked,conscious,ally,absurd,vicious,invented,forbid,directions,defendant,bare,announce,screwing,salesman,robbed,leap,lakeview,insanity,reveal,possibilities,kidnap,gown,chairs,wishing,setup,punished,criminals,regrets,raped,quarters,lamp,dentist,anyways,anonymous,semester,risks,owes,lungs,explaining,delicate,tricked,eager,doomed,adoption,stab,sickness,scum,floating,envelope,vault,sorel,pretended,potatoes,plea,photograph,payback,misunderstood,kiddo,healing,cascade,capeside,stabbed,remarkable,brat,privilege,passionate,nerves,lawsuit,kidney,disturbed,cozy,tire,shirts,oven,ordering,delay,risky,monsters,honorable,grounded,closest,breakdown,bald,abandon,scar,collar,worthless,sucking,enormous,disturbing,disturb,distract,deals,conclusions,vodka,dishes,crawling,briefcase,wiped,whistle,sits,roast,rented,pigs,flirting,deposit,bottles,topic,riot,overreacting,logical,hostile,embarrass,casual,beacon,amusing,altar,claus,survival,skirt,shave,porch,ghosts,favors,drops,dizzy,chili,advise,strikes,rehab,photographer,peaceful,leery,heavens,fortunately,fooling,expectations,cigar,weakness,ranch,practicing,examine,cranes,bribe,sail,prescription,hush,fragile,forensics,expense,drugged,cows,bells,visitor,suitcase,sorta,scan,manticore,insecure,imagining,hardest,clerk,wrist,what'll,starters,silk,pump,pale,nicer,haul,flies,boot,thumb,there'd,how're,elders,quietly,pulls,idiots,erase,denying,ankle,amnesia,accepting,heartbeat,devane,confront,minus,legitimate,fixing,arrogant,tuna,supper,slightest,sins,sayin,recipe,pier,paternity,humiliating,genuine,snack,rational,minded,guessed,weddings,tumor,humiliated,aspirin,spray,picks,eyed,drowning,contacts,ritual,perfume,hiring,hating,docks,creatures,visions,thanking,thankful,sock,nineteen,fork,throws,teenagers,stressed,slice,rolls,plead,ladder,kicks,detectives,assured,tellin,shallow,responsibilities,repay,howdy,girlfriends,deadly,comforting,ceiling,verdict,insensitive,spilled,respected,messy,interrupted,halliwell,blond,bleed,wardrobe,takin,murders,backs,underestimate,justify,harmless,frustrated,fold,enzo,communicate,bugging,arson,whack,salary,rumors,obligation,liking,dearest,congratulate,vengeance,rack,puzzle,fires,courtesy,caller,blamed,tops,quiz,prep,curiosity,circles,barbecue,sunnydale,spinning,psychotic,cough,accusations,resent,laughs,freshman,envy,drown,bartlet,asses,sofa,poster,highness,dock,apologies,theirs,stat,stall,realizes,psych,mmmm,fools,understandable,treats,succeed,stir,relaxed,makin,gratitude,faithful,accent,witter,wandering,locate,inevitable,gretel,deed,crushed,controlling,smelled,robe,gossip,gambling,cosmetics,accidents,surprising,stiff,sincere,rushed,refrigerator,preparing,nightmares,mijo,ignoring,hunch,fireworks,drowned,brass,whispering,sophisticated,luggage,hike,explore,emotion,crashing,contacted,complications,shining,rolled,righteous,reconsider,goody,geek,frightening,ethics,creeps,courthouse,camping,affection,smythe,haircut,essay,baked,apologized,vibe,respects,receipt,mami,hats,destructive,adore,adopt,tracked,shorts,reminding,dough,creations,cabot,barrel,snuck,slight,reporters,pressing,magnificent,madame,lazy,glorious,fiancee,bits,visitation,sane,kindness,shoulda,rescued,mattress,lounge,lifted,importantly,glove,enterprises,disappointment,condo,beings,admitting,yelled,waving,spoon,screech,satisfaction,reads,nailed,worm,tick,resting,marvelous,fuss,cortlandt,chased,pockets,luckily,lilith,filing,conversations,consideration,consciousness,worlds,innocence,forehead,aggressive,trailer,slam,quitting,inform,delighted,daylight,danced,confidential,aunts,washing,tossed,spectra,marrow,lined,implying,hatred,grill,corpse,clues,sober,offended,morgue,infected,humanity,distraction,cart,wired,violation,promising,harassment,glue,d'angelo,cursed,brutal,warlocks,wagon,unpleasant,proving,priorities,mustn't,lease,flame,disappearance,depressing,thrill,sitter,ribs,flush,earrings,deadline,corporal,collapsed,update,snapped,smack,melt,figuring,delusional,coulda,burnt,tender,sperm,realise,pork,popped,interrogation,esteem,choosing,undo,pres,prayed,plague,manipulate,insulting,detention,delightful,coffeehouse,betrayal,apologizing,adjust,wrecked,wont,whipped,rides,reminder,monsieur,faint,bake,distress,correctly,complaint,blocked,tortured,risking,pointless,handing,dumping,cups,alibi,struggling,shiny,risked,mummy,mint,hose,hobby,fortunate,fleischman,fitting,curtain,counseling,rode,puppet,modeling,memo,irresponsible,humiliation,hiya,freakin,felony,choke,blackmailing,appreciated,tabloid,suspicion,recovering,pledge,panicked,nursery,louder,jeans,investigator,homecoming,frustrating,buys,busting,buff,sleeve,irony,dope,declare,autopsy,workin,torch,prick,limb,hysterical,goddamnit,fetch,dimension,crowded,clip,climbing,bonding,woah,trusts,negotiate,lethal,iced,fantasies,deeds,bore,babysitter,questioned,outrageous,kiriakis,insulted,grudge,driveway,deserted,definite,beep,wires,suggestions,searched,owed,lend,drunken,demanding,costanza,conviction,bumped,weigh,touches,tempted,shout,resolve,relate,poisoned,meals,invitations,haunted,bogus,autograph,affects,tolerate,stepping,spontaneous,sleeps,probation,manny,fist,spectacular,hostages,heroin,havin,habits,encouraging,consult,burgers,boyfriends,bailed,baggage,watches,troubled,torturing,teasing,sweetest,qualities,postpone,overwhelmed,malkovich,impulse,classy,charging,amazed,policeman,hypocrite,humiliate,hideous,d'ya,costumes,bluffing,betting,bein,bedtime,alcoholic,vegetable,tray,suspicions,spreading,splendid,shrimp,shouting,pressed,nooo,grieving,gladly,fling,eliminate,cereal,aaah,sonofabitch,paralyzed,lotta,locks,guaranteed,dummy,despise,dental,briefing,bluff,batteries,whatta,sounding,servants,presume,handwriting,fainted,dried,allright,acknowledge,whacked,toxic,reliable,quicker,overwhelming,lining,harassing,fatal,endless,dolls,convict,whatcha,unlikely,shutting,positively,overcome,goddam,essence,dose,diagnosis,cured,bully,ahold,yearbook,tempting,shelf,prosecution,pouring,possessed,greedy,wonders,thorough,spine,rath,psychiatric,meaningless,latte,jammed,ignored,fiance,evidently,contempt,compromised,cans,weekends,urge,theft,suing,shipment,scissors,responding,proposition,noises,matching,hormones,hail,grandchildren,gently,smashed,sexually,sentimental,nicest,manipulated,intern,handcuffs,framed,errands,entertaining,crib,carriage,barge,spends,slipping,seated,rubbing,rely,reject,recommendation,reckon,headaches,float,embrace,corners,whining,sweating,skipped,mountie,motives,listens,cristobel,cleaner,cheerleader,balsom,unnecessary,stunning,scent,quartermaines,pose,montega,loosen,info,hottest,haunt,gracious,forgiving,errand,cakes,blames,abortion,sketch,shifts,plotting,perimeter,pals,mere,mattered,lonigan,interference,eyewitness,enthusiasm,diapers,strongest,shaken,punched,portal,catches,backyard,terrorists,sabotage,organs,needy,cuff,civilization,woof,who'll,prank,obnoxious,mates,hereby,gabby,faked,cellar,whitelighter,void,strangle,sour,muffins,interfering,demonic,clearing,boutique,barrington,terrace,smoked,righty,quack,petey,pact,knot,ketchup,disappearing,cordy,uptight,ticking,terrifying,tease,swamp,secretly,rejection,reflection,realizing,rays,mentally,marone,doubted,deception,congressman,cheesy,toto,stalling,scoop,ribbon,immune,expects,destined,bets,bathing,appreciation,accomplice,wander,shoved,sewer,scroll,retire,lasts,fugitive,freezer,discount,cranky,crank,clearance,bodyguard,anxiety,accountant,whoops,volunteered,talents,stinking,remotely,garlic,decency,cord,beds,altogether,uniforms,tremendous,popping,outa,observe,lung,hangs,feelin,dudes,donation,disguise,curb,bites,antique,toothbrush,realistic,predict,landlord,hourglass,hesitate,consolation,babbling,tipped,stranded,smartest,repeating,puke,psst,paycheck,overreacted,macho,juvenile,grocery,freshen,disposal,cuffs,caffeine,vanished,unfinished,ripping,pinch,flattering,expenses,dinners,colleague,ciao,belthazor,attorneys,woulda,whereabouts,waitin,truce,tripped,tasted,steer,poisoning,manipulative,immature,husbands,heel,granddad,delivering,condoms,addict,trashed,raining,pasta,needles,leaning,detector,coolest,batch,appointments,almighty,vegetables,spark,perfection,pains,momma,mole,meow,hairs,getaway,cracking,compliments,behold,verge,tougher,timer,tapped,taped,specialty,snooping,shoots,rendezvous,pentagon,leverage,jeopardize,janitor,grandparents,forbidden,clueless,bidding,ungrateful,unacceptable,tutor,serum,scuse,pajamas,mouths,lure,irrational,doom,cries,beautifully,arresting,approaching,traitor,sympathetic,smug,smash,rental,prostitute,premonitions,jumps,inventory,darlin,committing,banging,asap,worms,violated,vent,traumatic,traced,sweaty,shaft,overboard,insight,healed,grasp,experiencing,crappy,crab,chunk,awww,stain,shack,reacted,pronounce,poured,moms,marriages,jabez,handful,flipped,fireplace,embarrassment,disappears,concussion,bruises,brakes,twisting,swept,summon,splitting,sloppy,settling,reschedule,notch,hooray,grabbing,exquisite,disrespect,thornhart,straw,slapped,shipped,shattered,ruthless,refill,payroll,numb,mourning,manly,hunk,entertain,drift,dreadful,doorstep,confirmation,chops,appreciates,vague,tires,stressful,stashed,stash,sensed,preoccupied,predictable,noticing,madly,gunshot,dozens,dork,confuse,cleaners,charade,chalk,cappuccino,bouquet,amulet,addiction,who've,warming,unlock,satisfy,sacrificed,relaxing,lone,blocking,blend,blankets,addicted,yuck,hunger,hamburger,greeting,greet,gravy,gram,dreamt,dice,caution,backpack,agreeing,whale,taller,supervisor,sacrifices,phew,ounce,irrelevant,gran,felon,favorites,farther,fade,erased,easiest,convenience,compassionate,cane,backstage,agony,adores,veins,tweek,thieves,surgical,strangely,stetson,recital,proposing,productive,meaningful,immunity,hassle,goddamned,frighten,dearly,cease,ambition,wage,unstable,salvage,richer,refusing,raging,pumping,pressuring,mortals,lowlife,intimidated,intentionally,inspire,forgave,devotion,despicable,deciding,dash,comfy,breach,bark,aaaah,switching,swallowed,stove,screamed,scars,russians,pounding,poof,pipes,pawn,legit,invest,farewell,curtains,civilized,caviar,boost,token,superstition,supernatural,sadness,recorder,psyched,motivated,microwave,hallelujah,fraternity,dryer,cocoa,chewing,acceptable,unbelievably,smiled,smelling,simpler,respectable,remarks,khasinau,indication,gutter,grabs,fulfill,flashlight,ellenor,blooded,blink,blessings,beware,uhhh,turf,swings,slips,shovel,shocking,puff,mirrors,locking,heartless,fras,childish,cardiac,utterly,tuscany,ticked,stunned,statesville,sadly,purely,kiddin,jerks,hitch,flirt,fare,equals,dismiss,christening,casket,c'mere,breakup,biting,antibiotics,accusation,abducted,witchcraft,thread,runnin,punching,paramedics,newest,murdering,masks,lawndale,initials,grampa,choking,charms,careless,bushes,buns,bummed,shred,saves,saddle,rethink,regards,precinct,persuade,meds,manipulating,llanfair,leash,hearted,guarantees,fucks,disgrace,deposition,bookstore,boil,vitals,veil,trespassing,sidewalk,sensible,punishing,overtime,optimistic,obsessing,notify,mornin,jeopardy,jaffa,injection,hilarious,desires,confide,cautious,yada,where're,vindictive,vial,teeny,stroll,sittin,scrub,rebuild,posters,ordeal,nuns,intimacy,inheritance,exploded,donate,distracting,despair,crackers,wildwind,virtue,thoroughly,tails,spicy,sketches,sights,sheer,shaving,seize,scarecrow,refreshing,prosecute,platter,napkin,misplaced,merchandise,loony,jinx,heroic,frankenstein,ambitious,syrup,solitary,resemblance,reacting,premature,lavery,flashes,cheque,awright,acquainted,wrapping,untie,salute,realised,priceless,partying,lightly,lifting,kasnoff,insisting,glowing,generator,explosives,cutie,confronted,buts,blouse,ballistic,antidote,analyze,allowance,adjourned,unto,understatement,tucked,touchy,subconscious,screws,sarge,roommates,rambaldi,offend,nerd,knives,irresistible,incapable,hostility,goddammit,fuse,frat,curfew,blackmailed,walkin,starve,sleigh,sarcastic,recess,rebound,pinned,parlor,outfits,livin,heartache,haired,fundraiser,doorman,discreet,dilucca,cracks,considerate,climbed,catering,apophis,zoey,urine,strung,stitches,sordid,sark,protector,phoned,pets,hostess,flaw,flavor,deveraux,consumed,confidentiality,bourbon,straightened,specials,spaghetti,prettier,powerless,playin,playground,paranoia,instantly,havoc,exaggerating,eavesdropping,doughnuts,diversion,deepest,cutest,comb,bela,behaving,anyplace,accessory,workout,translate,stuffing,speeding,slime,royalty,polls,marital,lurking,lottery,imaginary,greetings,fairwinds,elegant,elbow,credibility,credentials,claws,chopped,bridal,bedside,babysitting,witty,unforgivable,underworld,tempt,tabs,sophomore,selfless,secrecy,restless,okey,movin,metaphor,messes,meltdown,lecter,incoming,gasoline,diefenbaker,buckle,admired,adjustment,warmth,throats,seduced,queer,parenting,noses,luckiest,graveyard,gifted,footsteps,dimeras,cynical,wedded,verbal,unpredictable,tuned,stoop,slides,sinking,rigged,plumbing,lingerie,hankey,greed,everwood,elope,dresser,chauffeur,bulletin,bugged,bouncing,temptation,strangest,slammed,sarcasm,pending,packages,orderly,obsessive,murderers,meteor,inconvenience,glimpse,froze,execute,courageous,consulate,closes,bosses,bees,amends,wuss,wolfram,wacky,unemployed,testifying,syringe,stew,startled,sorrow,sleazy,shaky,screams,rsquo,remark,poke,nutty,mentioning,mend,inspiring,impulsive,housekeeper,foam,fingernails,conditioning,baking,whine,thug,starved,sniffing,sedative,programmed,picket,paged,hound,homosexual,homo,hips,forgets,flipping,flea,flatter,dwell,dumpster,choo,assignments,ants,vile,unreasonable,tossing,thanked,steals,souvenir,scratched,psychopath,outs,obstruction,obey,lump,insists,harass,gloat,filth,edgy,didn,coroner,confessing,bruise,betraying,bailing,appealing,adebisi,wrath,wandered,waist,vain,traps,stepfather,poking,obligated,heavenly,dilemma,crazed,contagious,coaster,cheering,bundle,vomit,thingy,speeches,robbing,raft,pumped,pillows,peep,packs,neglected,m'kay,loneliness,intrude,helluva,gardener,forresters,drooling,betcha,vase,supermarket,squat,spitting,rhyme,relieve,receipts,racket,pictured,pause,overdue,motivation,morgendorffer,kidnapper,insect,horns,feminine,eyeballs,dumps,disappointing,crock,convertible,claw,clamp,canned,cambias,bathtub,avanya,artery,weep,warmer,suspense,summoned,spiders,reiber,raving,pushy,postponed,ohhhh,noooo,mold,laughter,incompetent,hugging,groceries,drip,communicating,auntie,adios,wraps,wiser,willingly,weirdest,timmih,thinner,swelling,swat,steroids,sensitivity,scrape,rehearse,prophecy,ledge,justified,insults,hateful,handles,doorway,chatting,buyer,buckaroo,bedrooms,askin,ammo,tutoring,subpoena,scratching,privileges,pager,mart,intriguing,idiotic,grape,enlighten,corrupt,brunch,bridesmaid,barking,applause,acquaintance,wretched,superficial,soak,smoothly,sensing,restraint,posing,pleading,payoff,oprah,nemo,morals,loaf,jumpy,ignorant,herbal,hangin,germs,generosity,flashing,doughnut,clumsy,chocolates,captive,behaved,apologise,vanity,stumbled,preview,poisonous,perjury,parental,onboard,mugged,minding,linen,knots,interviewing,humour,grind,greasy,goons,drastic,coop,comparing,cocky,clearer,bruised,brag,bind,worthwhile,whoop,vanquishing,tabloids,sprung,spotlight,sentencing,racist,provoke,pining,overly,locket,imply,impatient,hovering,hotter,fest,endure,dots,doren,debts,crawled,chained,brit,breaths,weirdo,warmed,wand,troubling,tok'ra,strapped,soaked,skipping,scrambled,rattle,profound,musta,mocking,misunderstand,limousine,kacl,hustle,forensic,enthusiastic,duct,drawers,devastating,conquer,clarify,chores,cheerleaders,cheaper,callin,blushing,barging,abused,yoga,wrecking,wits,waffles,virginity,vibes,uninvited,unfaithful,teller,strangled,scheming,ropes,rescuing,rave,postcard,o'reily,morphine,lotion,lads,kidneys,judgement,itch,indefinitely,grenade,glamorous,genetically,freud,discretion,delusions,crate,competent,bakery,argh,ahhhh,wedge,wager,unfit,tripping,torment,superhero,stirring,spinal,sorority,seminar,scenery,rabble,pneumonia,perks,override,ooooh,mija,manslaughter,mailed,lime,lettuce,intimidate,guarded,grieve,grad,frustration,doorbell,chinatown,authentic,arraignment,annulled,allergies,wanta,verify,vegetarian,tighter,telegram,stalk,spared,shoo,satisfying,saddam,requesting,pens,overprotective,obstacles,notified,nasedo,grandchild,genuinely,flushed,fluids,floss,escaping,ditched,cramp,corny,bunk,bitten,billions,bankrupt,yikes,wrists,ultrasound,ultimatum,thirst,sniff,shakes,salsa,retrieve,reassuring,pumps,neurotic,negotiating,needn't,monitors,millionaire,lydecker,limp,incriminating,hatchet,gracias,gordie,fills,feeds,doubting,decaf,biopsy,whiz,voluntarily,ventilator,unpack,unload,toad,spooked,snitch,schillinger,reassure,persuasive,mystical,mysteries,matrimony,mails,jock,headline,explanations,dispatch,curly,cupid,condolences,comrade,cassadines,bulb,bragging,awaits,assaulted,ambush,adolescent,abort,yank,whit,vaguely,undermine,tying,swamped,stabbing,slippers,slash,sincerely,sigh,setback,secondly,rotting,precaution,pcpd,melting,liaison,hots,hooking,headlines,haha,ganz,fury,felicity,fangs,encouragement,earring,dreidel,dory,donut,dictate,decorating,cocktails,bumps,blueberry,believable,backfired,backfire,apron,adjusting,vous,vouch,vitamins,ummm,tattoos,slimy,sibling,shhhh,renting,peculiar,parasite,paddington,marries,mailbox,magically,lovebirds,knocks,informant,exits,drazen,distractions,disconnected,dinosaurs,dashwood,crooked,conveniently,wink,warped,underestimated,tacky,shoving,seizure,reset,pushes,opener,mornings,mash,invent,indulge,horribly,hallucinating,festive,eyebrows,enjoys,desperation,dealers,darkest,daph,boragora,belts,bagel,authorization,auditions,agitated,wishful,wimp,vanish,unbearable,tonic,suffice,suction,slaying,safest,rocking,relive,puttin,prettiest,noisy,newlyweds,nauseous,misguided,mildly,midst,liable,judgmental,indy,hunted,givin,fascinated,elephants,dislike,deluded,decorate,crummy,contractions,carve,bottled,bonded,bahamas,unavailable,twenties,trustworthy,surgeons,stupidity,skies,remorse,preferably,pies,nausea,napkins,mule,mourn,melted,mashed,inherit,greatness,golly,excused,dumbo,drifting,delirious,damaging,cubicle,compelled,comm,chooses,checkup,boredom,bandages,alarms,windshield,who're,whaddya,transparent,surprisingly,sunglasses,slit,roar,reade,prognosis,probe,pitiful,persistent,peas,nosy,nagging,morons,masterpiece,martinis,limbo,liars,irritating,inclined,hump,hoynes,fiasco,eatin,cubans,concentrating,colorful,clam,cider,brochure,barto,bargaining,wiggle,welcoming,weighing,vanquished,stains,sooo,snacks,smear,sire,resentment,psychologist,pint,overhear,morality,landingham,kisser,hoot,holling,handshake,grilled,formality,elevators,depths,confirms,boathouse,accidental,westbridge,wacko,ulterior,thugs,thighs,tangled,stirred,snag,sling,sleaze,rumour,ripe,remarried,puddle,pins,perceptive,miraculous,longing,lockup,librarian,impressions,immoral,hypothetically,guarding,gourmet,gabe,faxed,extortion,downright,digest,cranberry,bygones,buzzing,burying,bikes,weary,taping,takeout,sweeping,stepmother,stale,senor,seaborn,pros,pepperoni,newborn,ludicrous,injected,geeks,forged,faults,drue,dire,dief,desi,deceiving,caterer,calmed,budge,ankles,vending,typing,tribbiani,there're,squared,snowing,shades,sexist,rewrite,regretted,raises,picky,orphan,mural,misjudged,miscarriage,memorize,leaking,jitters,invade,interruption,illegally,handicapped,glitch,gittes,finer,distraught,dispose,dishonest,digs,dads,cruelty,circling,canceling,butterflies,belongings,barbrady,amusement,alias,zombies,where've,unborn,swearing,stables,squeezed,sensational,resisting,radioactive,questionable,privileged,portofino,owning,overlook,orson,oddly,interrogate,imperative,impeccable,hurtful,hors,heap,graders,glance,disgust,devious,destruct,crazier,countdown,chump,cheeseburger,burglar,berries,ballroom,assumptions,annoyed,allergy,admirer,admirable,activate,underpants,twit,tack,strokes,stool,sham,scrap,retarded,resourceful,remarkably,refresh,pressured,precautions,pointy,nightclub,mustache,maui,lace,hunh,hubby,flare,dont,dokey,dangerously,crushing,clinging,choked,chem,cheerleading,checkbook,cashmere,calmly,blush,believer,amazingly,alas,what've,toilets,tacos,stairwell,spirited,sewing,rubbed,punches,protects,nuisance,motherfuckers,mingle,kynaston,knack,kinkle,impose,gullible,godmother,funniest,friggin,folding,fashions,eater,dysfunctional,drool,dripping,ditto,cruising,criticize,conceive,clone,cedars,caliber,brighter,blinded,birthdays,banquet,anticipate,annoy,whim,whichever,volatile,veto,vested,shroud,rests,reindeer,quarantine,pleases,painless,orphans,orphanage,offence,obliged,negotiation,narcotics,mistletoe,meddling,manifest,lookit,lilah,intrigued,injustice,homicidal,gigantic,exposing,elves,disturbance,disastrous,depended,demented,correction,cooped,cheerful,buyers,brownies,beverage,basics,arvin,weighs,upsets,unethical,swollen,sweaters,stupidest,sensation,scalpel,props,prescribed,pompous,objections,mushrooms,mulwray,manipulation,lured,internship,insignificant,inmate,incentive,fulfilled,disagreement,crypt,cornered,copied,brightest,beethoven,attendant,amaze,yogurt,wyndemere,vocabulary,tulsa,tactic,stuffy,respirator,pretends,polygraph,pennies,ordinarily,olives,necks,morally,martyr,leftovers,joints,hopping,homey,hints,heartbroken,forge,florist,firsthand,fiend,dandy,crippled,corrected,conniving,conditioner,clears,chemo,bubbly,bladder,beeper,baptism,wiring,wench,weaknesses,volunteering,violating,unlocked,tummy,surrogate,subid,stray,startle,specifics,slowing,scoot,robbers,rightful,richest,qfxmjrie,puffs,pierced,pencils,paralysis,makeover,luncheon,linksynergy,jerky,jacuzzi,hitched,hangover,fracture,flock,firemen,disgusted,darned,clams,borrowing,banged,wildest,weirder,unauthorized,stunts,sleeves,sixties,shush,shalt,retro,quits,pegged,painfully,paging,omelet,memorized,lawfully,jackets,intercept,ingredient,grownup,glued,fulfilling,enchanted,delusion,daring,compelling,carton,bridesmaids,bribed,boiling,bathrooms,bandage,awaiting,assign,arrogance,antiques,ainsley,turkeys,trashing,stockings,stalked,stabilized,skates,sedated,robes,respecting,psyche,presumptuous,prejudice,paragraph,mocha,mints,mating,mantan,lorne,loads,listener,itinerary,hepatitis,heave,guesses,fading,examining,dumbest,dishwasher,deceive,cunning,cripple,convictions,confided,compulsive,compromising,burglary,bumpy,brainwashed,benes,arnie,affirmative,adrenaline,adamant,watchin,waitresses,transgenic,toughest,tainted,surround,stormed,spree,spilling,spectacle,soaking,shreds,sewers,severed,scarce,scamming,scalp,rewind,rehearsing,pretentious,potions,overrated,obstacle,nerds,meems,mcmurphy,maternity,maneuver,loathe,fertility,eloping,ecstatic,ecstasy,divorcing,dignan,costing,clubhouse,clocks,candid,bursting,breather,braces,bending,arsonist,adored,absorb,valiant,uphold,unarmed,topolsky,thrilling,thigh,terminate,sustain,spaceship,snore,sneeze,smuggling,salty,quaint,patronize,patio,morbid,mamma,kettle,joyous,invincible,interpret,insecurities,impulses,illusions,holed,exploit,drivin,defenseless,dedicate,cradle,coupon,countless,conjure,cardboard,booking,backseat,accomplishment,wordsworth,wisely,valet,vaccine,urges,unnatural,unlucky,truths,traumatized,tasting,swears,strawberries,steaks,stats,skank,seducing,secretive,scumbag,screwdriver,schedules,rooting,rightfully,rattled,qualifies,puppets,prospects,pronto,posse,polling,pedestal,palms,muddy,morty,microscope,merci,lecturing,inject,incriminate,hygiene,grapefruit,gazebo,funnier,cuter,bossy,booby,aides,zende,winthrop,warrants,valentines,undressed,underage,truthfully,tampered,suffers,speechless,sparkling,sidelines,shrek,railing,puberty,pesky,outrage,outdoors,motions,moods,lunches,litter,kidnappers,itching,intuition,imitation,humility,hassling,gallons,drugstore,dosage,disrupt,dipping,deranged,debating,cuckoo,cremated,craziness,cooperating,circumstantial,chimney,blinking,biscuits,admiring,weeping,triad,trashy,soothing,slumber,slayers,skirts,siren,shindig,sentiment,rosco,riddance,quaid,purity,proceeding,pretzels,panicking,mckechnie,lovin,leaked,intruding,impersonating,ignorance,hamburgers,footprints,fluke,fleas,festivities,fences,feisty,evacuate,emergencies,deceived,creeping,craziest,corpses,conned,coincidences,bounced,bodyguards,blasted,bitterness,baloney,ashtray,apocalypse,zillion,watergate,wallpaper,telesave,sympathize,sweeter,startin,spades,sodas,snowed,sleepover,signor,seein,retainer,restroom,rested,repercussions,reliving,reconcile,prevail,preaching,overreact,o'neil,noose,moustache,manicure,maids,landlady,hypothetical,hopped,homesick,hives,hesitation,herbs,hectic,heartbreak,haunting,gangs,frown,fingerprint,exhausting,everytime,disregard,cling,chevron,chaperone,blinding,bitty,beads,battling,badgering,anticipation,upstanding,unprofessional,unhealthy,turmoil,truthful,toothpaste,tippin,thoughtless,tagataya,shooters,senseless,rewarding,propane,preposterous,pigeons,pastry,overhearing,obscene,negotiable,loner,jogging,itchy,insinuating,insides,hospitality,hormone,hearst,forthcoming,fists,fifties,etiquette,endings,destroys,despises,deprived,cuddy,crust,cloak,circumstance,chewed,casserole,bidder,bearer,artoo,applaud,appalling,vowed,virgins,vigilante,undone,throttle,testosterone,tailor,symptom,swoop,suitcases,stomp,sticker,stakeout,spoiling,snatched,smoochy,smitten,shameless,restraints,researching,renew,refund,reclaim,raoul,puzzles,purposely,punks,prosecuted,plaid,picturing,pickin,parasites,mysteriously,multiply,mascara,jukebox,interruptions,gunfire,furnace,elbows,duplicate,drapes,deliberate,decoy,cryptic,coupla,condemn,complicate,colossal,clerks,clarity,brushed,banished,argon,alarmed,worships,versa,uncanny,technicality,sundae,stumble,stripping,shuts,schmuck,satin,saliva,robber,relentless,reconnect,recipes,rearrange,rainy,psychiatrists,policemen,plunge,plugged,patched,overload,o'malley,mindless,menus,lullaby,lotte,leavin,killin,karinsky,invalid,hides,grownups,griff,flaws,flashy,flaming,fettes,evicted,dread,degrassi,dealings,dangers,cushion,bowel,barged,abide,abandoning,wonderfully,wait'll,violate,suicidal,stayin,sorted,slamming,sketchy,shoplifting,raiser,quizmaster,prefers,needless,motherhood,momentarily,migraine,lifts,leukemia,leftover,keepin,hinks,hellhole,gowns,goodies,gallon,futures,entertained,eighties,conspiring,cheery,benign,apiece,adjustments,abusive,abduction,wiping,whipping,welles,unspeakable,unidentified,trivial,transcripts,textbook,supervise,superstitious,stricken,stimulating,spielberg,slices,shelves,scratches,sabotaged,retrieval,repressed,rejecting,quickie,ponies,peeking,outraged,o'connell,moping,moaning,mausoleum,licked,kovich,klutz,interrogating,interfered,insulin,infested,incompetence,hyper,horrified,handedly,gekko,fraid,fractured,examiner,eloped,disoriented,dashing,crashdown,courier,cockroach,chipped,brushing,bombed,bolts,baths,baptized,astronaut,assurance,anemia,abuela,abiding,withholding,weave,wearin,weaker,suffocating,straws,straightforward,stench,steamed,starboard,sideways,shrinks,shortcut,scram,roasted,roaming,riviera,respectfully,repulsive,psychiatry,provoked,penitentiary,painkillers,ninotchka,mitzvah,milligrams,midge,marshmallows,looky,lapse,kubelik,intellect,improvise,implant,goa'ulds,giddy,geniuses,fruitcake,footing,fightin,drinkin,doork,detour,cuddle,crashes,combo,colonnade,cheats,cetera,bailiff,auditioning,assed,amused,alienate,aiding,aching,unwanted,topless,tongues,tiniest,superiors,soften,sheldrake,rawley,raisins,presses,plaster,nessa,narrowed,minions,merciful,lawsuits,intimidating,infirmary,inconvenient,imposter,hugged,honoring,holdin,hades,godforsaken,fumes,forgery,foolproof,folder,flattery,fingertips,exterminator,explodes,eccentric,dodging,disguised,crave,constructive,concealed,compartment,chute,chinpokomon,bodily,astronauts,alimony,accustomed,abdominal,wrinkle,wallow,valium,untrue,uncover,trembling,treasures,torched,toenails,timed,termites,telly,taunting,taransky,talker,succubus,smarts,sliding,sighting,semen,seizures,scarred,savvy,sauna,saddest,sacrificing,rubbish,riled,ratted,rationally,provenance,phonse,perky,pedal,overdose,nasal,nanites,mushy,movers,missus,midterm,merits,melodramatic,manure,knitting,invading,interpol,incapacitated,hotline,hauling,gunpoint,grail,ganza,framing,flannel,faded,eavesdrop,desserts,calories,breathtaking,bleak,blacked,batter,aggravated,yanked,wigand,whoah,unwind,undoubtedly,unattractive,twitch,trimester,torrance,timetable,taxpayers,strained,stared,slapping,sincerity,siding,shenanigans,shacking,sappy,samaritan,poorer,politely,paste,oysters,overruled,nightcap,mosquito,millimeter,merrier,manhood,lucked,kilos,ignition,hauled,harmed,goodwill,freshmen,fenmore,fasten,farce,exploding,erratic,drunks,ditching,d'artagnan,cramped,contacting,closets,clientele,chimp,bargained,arranging,anesthesia,amuse,altering,afternoons,accountable,abetting,wolek,waved,uneasy,toddy,tattooed,spauldings,sliced,sirens,schibetta,scatter,rinse,remedy,redemption,pleasures,optimism,oblige,mmmmm,masked,malicious,mailing,kosher,kiddies,judas,isolate,insecurity,incidentally,heals,headlights,growl,grilling,glazed,flunk,floats,fiery,fairness,exercising,excellency,disclosure,cupboard,counterfeit,condescending,conclusive,clicked,cleans,cholesterol,cashed,broccoli,brats,blueprints,blindfold,billing,attach,appalled,alrighty,wynant,unsolved,unreliable,toots,tighten,sweatshirt,steinbrenner,steamy,spouse,sonogram,slots,sleepless,shines,retaliate,rephrase,redeem,rambling,quilt,quarrel,prying,proverbial,priced,prescribe,prepped,pranks,possessive,plaintiff,pediatrics,overlooked,outcast,nightgown,mumbo,mediocre,mademoiselle,lunchtime,lifesaver,leaned,lambs,interns,hounding,hellmouth,hahaha,goner,ghoul,gardening,frenzy,foyer,extras,exaggerate,everlasting,enlightened,dialed,devote,deceitful,d'oeuvres,cosmetic,contaminated,conspired,conning,cavern,carving,butting,boiled,blurry,babysit,ascension,aaaaah,wildly,whoopee,whiny,weiskopf,walkie,vultures,vacations,upfront,unresolved,tampering,stockholders,snaps,sleepwalking,shrunk,sermon,seduction,scams,revolve,phenomenal,patrolling,paranormal,ounces,omigod,nightfall,lashing,innocents,infierno,incision,humming,haunts,gloss,gloating,frannie,fetal,feeny,entrapment,discomfort,detonator,dependable,concede,complication,commotion,commence,chulak,caucasian,casually,brainer,bolie,ballpark,anwar,analyzing,accommodations,youse,wring,wallowing,transgenics,thrive,tedious,stylish,strippers,sterile,squeezing,squeaky,sprained,solemn,snoring,shattering,shabby,seams,scrawny,revoked,residue,reeks,recite,ranting,quoting,predicament,plugs,pinpoint,petrified,pathological,passports,oughtta,nighter,navigate,kippie,intrigue,intentional,insufferable,hunky,how've,horrifying,hearty,hamptons,grazie,funerals,forks,fetched,excruciating,enjoyable,endanger,dumber,drying,diabolical,crossword,corry,comprehend,clipped,classmates,candlelight,brutally,brutality,boarded,bathrobe,authorize,assemble,aerobics,wholesome,whiff,vermin,trophies,trait,tragically,toying,testy,tasteful,stocked,spinach,sipping,sidetracked,scrubbing,scraping,sanctity,robberies,ridin,retribution,refrain,realities,radiant,protesting,projector,plutonium,payin,parting,o'reilly,nooooo,motherfucking,measly,manic,lalita,juggling,jerking,intro,inevitably,hypnosis,huddle,horrendous,hobbies,heartfelt,harlin,hairdresser,gonorrhea,fussing,furtwangler,fleeting,flawless,flashed,fetus,eulogy,distinctly,disrespectful,denies,crossbow,cregg,crabs,cowardly,contraction,contingency,confirming,condone,coffins,cleansing,cheesecake,certainty,cages,c'est,briefed,bravest,bosom,boils,binoculars,bachelorette,appetizer,ambushed,alerted,woozy,withhold,vulgar,utmost,unleashed,unholy,unhappiness,unconditional,typewriter,typed,twists,supermodel,subpoenaed,stringing,skeptical,schoolgirl,romantically,rocked,revoir,reopen,puncture,preach,polished,planetarium,penicillin,peacefully,nurturing,more'n,mmhmm,midgets,marklar,lodged,lifeline,jellyfish,infiltrate,hutch,horseback,heist,gents,frickin,freezes,forfeit,flakes,flair,fathered,eternally,epiphany,disgruntled,discouraged,delinquent,decipher,danvers,cubes,credible,coping,chills,cherished,catastrophe,bombshell,birthright,billionaire,ample,affections,admiration,abbotts,whatnot,watering,vinegar,unthinkable,unseen,unprepared,unorthodox,underhanded,uncool,timeless,thump,thermometer,theoretically,tapping,tagged,swung,stares,spiked,solves,smuggle,scarier,saucer,quitter,prudent,powdered,poked,pointers,peril,penetrate,penance,opium,nudge,nostrils,neurological,mockery,mobster,medically,loudly,insights,implicate,hypocritical,humanly,holiness,healthier,hammered,haldeman,gunman,gloom,freshly,francs,flunked,flawed,emptiness,drugging,dozer,derevko,deprive,deodorant,cryin,crocodile,coloring,colder,cognac,clocked,clippings,charades,chanting,certifiable,caterers,brute,brochures,botched,blinders,bitchin,banter,woken,ulcer,tread,thankfully,swine,swimsuit,swans,stressing,steaming,stamped,stabilize,squirm,snooze,shuffle,shredded,seafood,scratchy,savor,sadistic,rhetorical,revlon,realist,prosecuting,prophecies,polyester,petals,persuasion,paddles,o'leary,nuthin,neighbour,negroes,muster,meningitis,matron,lockers,letterman,legged,indictment,hypnotized,housekeeping,hopelessly,hallucinations,grader,goldilocks,girly,flask,envelopes,downside,doves,dissolve,discourage,disapprove,diabetic,deliveries,decorator,crossfire,criminally,containment,comrades,complimentary,chatter,catchy,cashier,cartel,caribou,cardiologist,brawl,booted,barbershop,aryan,angst,administer,zellie,wreak,whistles,vandalism,vamps,uterus,upstate,unstoppable,understudy,tristin,transcript,tranquilizer,toxins,tonsils,stempel,spotting,spectator,spatula,softer,snotty,slinging,showered,sexiest,sensual,sadder,rimbaud,restrain,resilient,remission,reinstate,rehash,recollection,rabies,popsicle,plausible,pediatric,patronizing,ostrich,ortolani,oooooh,omelette,mistrial,marseilles,loophole,laughin,kevvy,irritated,infidelity,hypothermia,horrific,groupie,grinding,graceful,goodspeed,gestures,frantic,extradition,echelon,disks,dawnie,dared,damsel,curled,collateral,collage,chant,calculating,bumping,bribes,boardwalk,blinds,blindly,bleeds,bickering,beasts,backside,avenge,apprehended,anguish,abusing,youthful,yells,yanking,whomever,when'd,vomiting,vengeful,unpacking,unfamiliar,undying,tumble,trolls,treacherous,tipping,tantrum,tanked,summons,straps,stomped,stinkin,stings,staked,squirrels,sprinkles,speculate,sorting,skinned,sicko,sicker,shootin,shatter,seeya,schnapps,s'posed,ronee,respectful,regroup,regretting,reeling,reckoned,ramifications,puddy,projections,preschool,plissken,platonic,permalash,outdone,outburst,mutants,mugging,misfortune,miserably,miraculously,medications,margaritas,manpower,lovemaking,logically,leeches,latrine,kneel,inflict,impostor,hypocrisy,hippies,heterosexual,heightened,hecuba,healer,gunned,grooming,groin,gooey,gloomy,frying,friendships,fredo,firepower,fathom,exhaustion,evils,endeavor,eggnog,dreaded,d'arcy,crotch,coughing,coronary,cookin,consummate,congrats,companionship,caved,caspar,bulletproof,brilliance,breakin,brash,blasting,aloud,airtight,advising,advertise,adultery,aches,wronged,upbeat,trillion,thingies,tending,tarts,surreal,specs,specialize,spade,shrew,shaping,selves,schoolwork,roomie,recuperating,rabid,quart,provocative,proudly,pretenses,prenatal,pharmaceuticals,pacing,overworked,originals,nicotine,murderous,mileage,mayonnaise,massages,losin,interrogated,injunction,impartial,homing,heartbreaker,hacks,glands,giver,fraizh,flips,flaunt,englishman,electrocuted,dusting,ducking,drifted,donating,cylon,crutches,crates,cowards,comfortably,chummy,chitchat,childbirth,businesswoman,brood,blatant,bethy,barring,bagged,awakened,asbestos,airplanes,worshipped,winnings,why're,visualize,unprotected,unleash,trays,thicker,therapists,takeoff,streisand,storeroom,stethoscope,stacked,spiteful,sneaks,snapping,slaughtered,slashed,simplest,silverware,shits,secluded,scruples,scrubs,scraps,ruptured,roaring,receptionist,recap,raditch,radiator,pushover,plastered,pharmacist,perverse,perpetrator,ornament,ointment,nineties,napping,nannies,mousse,moors,momentary,misunderstandings,manipulator,malfunction,laced,kivar,kickin,infuriating,impressionable,holdup,hires,hesitated,headphones,hammering,groundwork,grotesque,graces,gauze,gangsters,frivolous,freeing,fours,forwarding,ferrars,faulty,fantasizing,extracurricular,empathy,divorces,detonate,depraved,demeaning,deadlines,dalai,cursing,cufflink,crows,coupons,comforted,claustrophobic,casinos,camped,busboy,bluth,bennetts,baskets,attacker,aplastic,angrier,affectionate,zapped,wormhole,weaken,unrealistic,unravel,unimportant,unforgettable,twain,suspend,superbowl,stutter,stewardess,stepson,standin,spandex,souvenirs,sociopath,skeletons,shivering,sexier,selfishness,scrapbook,ritalin,ribbons,reunite,remarry,relaxation,rattling,rapist,psychosis,prepping,poses,pleasing,pisses,piling,persecuted,padded,operatives,negotiator,natty,menopause,mennihan,martimmys,loyalties,laynie,lando,justifies,intimately,inexperienced,impotent,immortality,horrors,hooky,hinges,heartbreaking,handcuffed,gypsies,guacamole,grovel,graziella,goggles,gestapo,fussy,ferragamo,feeble,eyesight,explosions,experimenting,enchanting,doubtful,dizziness,dismantle,detectors,deserving,defective,dangling,dancin,crumble,creamed,cramping,conceal,clockwork,chrissakes,chrissake,chopping,cabinets,brooding,bonfire,blurt,bloated,blackmailer,beforehand,bathed,bathe,barcode,banish,badges,babble,await,attentive,aroused,antibodies,animosity,ya'll,wrinkled,wonderland,willed,whisk,waltzing,waitressing,vigilant,upbringing,unselfish,uncles,trendy,trajectory,striped,stamina,stalled,staking,stacks,spoils,snuff,snooty,snide,shrinking,senora,secretaries,scoundrel,saline,salads,rundown,riddles,relapse,recommending,raspberry,plight,pecan,pantry,overslept,ornaments,niner,negligent,negligence,nailing,mucho,mouthed,monstrous,malpractice,lowly,loitering,logged,lingering,lettin,lattes,kamal,juror,jillefsky,jacked,irritate,intrusion,insatiable,infect,impromptu,icing,hmmmm,hefty,gasket,frightens,flapping,firstborn,faucet,estranged,envious,dopey,doesn,disposition,disposable,disappointments,dipped,dignified,deceit,dealership,deadbeat,curses,coven,counselors,concierge,clutches,casbah,callous,cahoots,brotherly,britches,brides,bethie,beige,autographed,attendants,attaboy,astonishing,appreciative,antibiotic,aneurysm,afterlife,affidavit,zoning,whats,whaddaya,vasectomy,unsuspecting,toula,topanga,tonio,toasted,tiring,terrorized,tenderness,tailing,sweats,suffocated,sucky,subconsciously,starvin,sprouts,spineless,sorrows,snowstorm,smirk,slicery,sledding,slander,simmer,signora,sigmund,seventies,sedate,scented,sandals,rollers,retraction,resigning,recuperate,receptive,racketeering,queasy,provoking,priors,prerogative,premed,pinched,pendant,outsiders,orbing,opportunist,olanov,neurologist,nanobot,mommies,molested,misread,mannered,laundromat,intercom,inspect,insanely,infatuation,indulgent,indiscretion,inconsiderate,hurrah,howling,herpes,hasta,harassed,hanukkah,groveling,groosalug,gander,galactica,futile,fridays,flier,fixes,exploiting,exorcism,evasive,endorse,emptied,dreary,dreamy,downloaded,dodged,doctored,disobeyed,disneyland,disable,dehydrated,contemplating,coconuts,cockroaches,clogged,chilling,chaperon,cameraman,bulbs,bucklands,bribing,brava,bracelets,bowels,bluepoint,appetizers,appendix,antics,anointed,analogy,almonds,yammering,winch,weirdness,wangler,vibrations,vendor,unmarked,unannounced,twerp,trespass,travesty,transfusion,trainee,towelie,tiresome,straightening,staggering,sonar,socializing,sinus,sinners,shambles,serene,scraped,scones,scepter,sarris,saberhagen,ridiculously,ridicule,rents,reconciled,radios,publicist,pubes,prune,prude,precrime,postponing,pluck,perish,peppermint,peeled,overdo,nutshell,nostalgic,mulan,mouthing,mistook,meddle,maybourne,martimmy,lobotomy,livelihood,lippman,likeness,kindest,kaffee,jocks,jerked,jeopardizing,jazzed,insured,inquisition,inhale,ingenious,holier,helmets,heirloom,heinous,haste,harmsway,hardship,hanky,gutters,gruesome,groping,goofing,godson,glare,finesse,figuratively,ferrie,endangerment,dreading,dozed,dorky,dmitri,divert,discredit,dialing,cufflinks,crutch,craps,corrupted,cocoon,cleavage,cannery,bystander,brushes,bruising,bribery,brainstorm,bolted,binge,ballistics,astute,arroway,adventurous,adoptive,addicts,addictive,yadda,whitelighters,wematanye,weeds,wedlock,wallets,vulnerability,vroom,vents,upped,unsettling,unharmed,trippin,trifle,tracing,tormenting,thats,syphilis,subtext,stickin,spices,sores,smacked,slumming,sinks,signore,shitting,shameful,shacked,septic,seedy,righteousness,relish,rectify,ravishing,quickest,phoebs,perverted,peeing,pedicure,pastrami,passionately,ozone,outnumbered,oregano,offender,nukes,nosed,nighty,nifty,mounties,motivate,moons,misinterpreted,mercenary,mentality,marsellus,lupus,lumbar,lovesick,lobsters,leaky,laundering,latch,jafar,instinctively,inspires,indoors,incarcerated,hundredth,handkerchief,gynecologist,guittierez,groundhog,grinning,goodbyes,geese,fullest,eyelashes,eyelash,enquirer,endlessly,elusive,disarm,detest,deluding,dangle,cotillion,corsage,conjugal,confessional,cones,commandment,coded,coals,chuckle,christmastime,cheeseburgers,chardonnay,celery,campfire,calming,burritos,brundle,broflovski,brighten,borderline,blinked,bling,beauties,bauers,battered,articulate,alienated,ahhhhh,agamemnon,accountants,y'see,wrongful,wrapper,workaholic,winnebago,whispered,warts,vacate,unworthy,unanswered,tonane,tolerated,throwin,throbbing,thrills,thorns,thereof,there've,tarot,sunscreen,stretcher,stereotype,soggy,sobbing,sizable,sightings,shucks,shrapnel,sever,senile,seaboard,scorned,saver,rebellious,rained,putty,prenup,pores,pinching,pertinent,peeping,paints,ovulating,opposites,occult,nutcracker,nutcase,newsstand,newfound,mocked,midterms,marshmallow,marbury,maclaren,leans,krudski,knowingly,keycard,junkies,juilliard,jolinar,irritable,invaluable,inuit,intoxicating,instruct,insolent,inexcusable,incubator,illustrious,hunsecker,houseguest,homosexuals,homeroom,hernia,harming,handgun,hallways,hallucination,gunshots,groupies,groggy,goiter,gingerbread,giggling,frigging,fledged,fedex,fairies,exchanging,exaggeration,esteemed,enlist,drags,dispense,disloyal,disconnect,desks,dentists,delacroix,degenerate,daydreaming,cushions,cuddly,corroborate,complexion,compensated,cobbler,closeness,chilled,checkmate,channing,carousel,calms,bylaws,benefactor,ballgame,baiting,backstabbing,artifact,airspace,adversary,actin,accuses,accelerant,abundantly,abstinence,zissou,zandt,yapping,witchy,willows,whadaya,vilandra,veiled,undress,undivided,underestimating,ultimatums,twirl,truckload,tremble,toasting,tingling,tents,tempered,sulking,stunk,sponges,spills,softly,snipers,scourge,rooftop,riana,revolting,revisit,refreshments,redecorating,recapture,raysy,pretense,prejudiced,precogs,pouting,poofs,pimple,piles,pediatrician,padre,packets,paces,orvelle,oblivious,objectivity,nighttime,nervosa,mexicans,meurice,melts,matchmaker,maeby,lugosi,lipnik,leprechaun,kissy,kafka,introductions,intestines,inspirational,insightful,inseparable,injections,inadvertently,hussy,huckabees,hittin,hemorrhaging,headin,haystack,hallowed,grudges,granilith,grandkids,grading,gracefully,godsend,gobbles,fragrance,fliers,finchley,farts,eyewitnesses,expendable,existential,dorms,delaying,degrading,deduction,darlings,danes,cylons,counsellor,contraire,consciously,conjuring,congratulating,cokes,buffay,brooch,bitching,bistro,bijou,bewitched,benevolent,bends,bearings,barren,aptitude,amish,amazes,abomination,worldly,whispers,whadda,wayward,wailing,vanishing,upscale,untouchable,unspoken,uncontrollable,unavoidable,unattended,trite,transvestite,toupee,timid,timers,terrorizing,swana,stumped,strolling,storybook,storming,stomachs,stoked,stationery,springtime,spontaneity,spits,spins,soaps,sentiments,scramble,scone,rooftops,retract,reflexes,rawdon,ragged,quirky,quantico,psychologically,prodigal,pounce,potty,pleasantries,pints,petting,perceive,onstage,notwithstanding,nibble,newmans,neutralize,mutilated,millionaires,mayflower,masquerade,mangy,macreedy,lunatics,lovable,locating,limping,lasagna,kwang,keepers,juvie,jaded,ironing,intuitive,intensely,insure,incantation,hysteria,hypnotize,humping,happenin,griet,grasping,glorified,ganging,g'night,focker,flunking,flimsy,flaunting,fixated,fitzwallace,fainting,eyebrow,exonerated,ether,electrician,egotistical,earthly,dusted,dignify,detonation,debrief,dazzling,dan'l,damnedest,daisies,crushes,crucify,contraband,confronting,collapsing,cocked,clicks,cliche,circled,chandelier,carburetor,callers,broads,breathes,bloodshed,blindsided,blabbing,bialystock,bashing,ballerina,aviva,arteries,anomaly,airstrip,agonizing,adjourn,aaaaa,yearning,wrecker,witnessing,whence,warhead,unsure,unheard,unfreeze,unfold,unbalanced,ugliest,troublemaker,toddler,tiptoe,threesome,thirties,thermostat,swipe,surgically,subtlety,stung,stumbling,stubs,stride,strangling,sprayed,socket,smuggled,showering,shhhhh,sabotaging,rumson,rounding,risotto,repairman,rehearsed,ratty,ragging,radiology,racquetball,racking,quieter,quicksand,prowl,prompt,premeditated,prematurely,prancing,porcupine,plated,pinocchio,peeked,peddle,panting,overweight,overrun,outing,outgrown,obsess,nursed,nodding,negativity,negatives,musketeers,mugger,motorcade,merrily,matured,masquerading,marvellous,maniacs,lovey,louse,linger,lilies,lawful,kudos,knuckle,juices,judgments,itches,intolerable,intermission,inept,incarceration,implication,imaginative,huckleberry,holster,heartburn,gunna,groomed,graciously,fulfillment,fugitives,forsaking,forgives,foreseeable,flavors,flares,fixation,fickle,fantasize,famished,fades,expiration,exclamation,erasing,eiffel,eerie,earful,duped,dulles,dissing,dissect,dispenser,dilated,detergent,desdemona,debriefing,damper,curing,crispina,crackpot,courting,cordial,conflicted,comprehension,commie,cleanup,chiropractor,charmer,chariot,cauldron,catatonic,bullied,buckets,brilliantly,breathed,booths,boardroom,blowout,blindness,blazing,biologically,bibles,biased,beseech,barbaric,balraj,audacity,anticipating,alcoholics,airhead,agendas,admittedly,absolution,youre,yippee,wittlesey,withheld,willful,whammy,weakest,washes,virtuous,videotapes,vials,unplugged,unpacked,unfairly,turbulence,tumbling,tricking,tremendously,traitors,torches,tinga,thyroid,teased,tawdry,taker,sympathies,swiped,sundaes,suave,strut,stepdad,spewing,spasm,socialize,slither,simulator,shutters,shrewd,shocks,semantics,schizophrenic,scans,savages,rya'c,runny,ruckus,royally,roadblocks,rewriting,revoke,repent,redecorate,recovers,recourse,ratched,ramali,racquet,quince,quiche,puppeteer,puking,puffed,problemo,praises,pouch,postcards,pooped,poised,piled,phoney,phobia,patching,parenthood,pardner,oozing,ohhhhh,numbing,nostril,nosey,neatly,nappa,nameless,mortuary,moronic,modesty,midwife,mcclane,matuka,maitre,lumps,lucid,loosened,loins,lawnmower,lamotta,kroehner,jinxy,jessep,jamming,jailhouse,jacking,intruders,inhuman,infatuated,indigestion,implore,implanted,hormonal,hoboken,hillbilly,heartwarming,headway,hatched,hartmans,harping,grapevine,gnome,forties,flyin,flirted,fingernail,exhilarating,enjoyment,embark,dumper,dubious,drell,docking,disillusioned,dishonor,disbarred,dicey,custodial,counterproductive,corned,cords,contemplate,concur,conceivable,cobblepot,chickened,checkout,carpe,cap'n,campers,buyin,bullies,braid,boxed,bouncy,blueberries,blubbering,bloodstream,bigamy,beeped,bearable,autographs,alarming,wretch,wimps,widower,whirlwind,whirl,warms,vandelay,unveiling,undoing,unbecoming,turnaround,touche,togetherness,tickles,ticker,teensy,taunt,sweethearts,stitched,standpoint,staffers,spotless,soothe,smothered,sickening,shouted,shepherds,shawl,seriousness,schooled,schoolboy,s'mores,roped,reminders,raggedy,preemptive,plucked,pheromones,particulars,pardoned,overpriced,overbearing,outrun,ohmigod,nosing,nicked,neanderthal,mosquitoes,mortified,milky,messin,mecha,markinson,marivellas,mannequin,manderley,madder,macready,lookie,locusts,lifetimes,lanna,lakhi,kholi,impersonate,hyperdrive,horrid,hopin,hogging,hearsay,harpy,harboring,hairdo,hafta,grasshopper,gobble,gatehouse,foosball,floozy,fished,firewood,finalize,felons,euphemism,entourage,elitist,elegance,drokken,drier,dredge,dossier,diseased,diarrhea,diagnose,despised,defuse,d'amour,contesting,conserve,conscientious,conjured,collars,clogs,chenille,chatty,chamomile,casing,calculator,brittle,breached,blurted,birthing,bikinis,astounding,assaulting,aroma,appliance,antsy,amnio,alienating,aliases,adolescence,xerox,wrongs,workload,willona,whistling,werewolves,wallaby,unwelcome,unseemly,unplug,undermining,ugliness,tyranny,tuesdays,trumpets,transference,ticks,tangible,tagging,swallowing,superheroes,studs,strep,stowed,stomping,steffy,sprain,spouting,sponsoring,sneezing,smeared,slink,shakin,sewed,seatbelt,scariest,scammed,sanctimonious,roasting,rightly,retinal,rethinking,resented,reruns,remover,racks,purest,progressing,presidente,preeclampsia,postponement,portals,poppa,pliers,pinning,pelvic,pampered,padding,overjoyed,ooooo,one'll,octavius,nonono,nicknames,neurosurgeon,narrows,misled,mislead,mishap,milltown,milking,meticulous,mediocrity,meatballs,machete,lurch,layin,knockin,khruschev,jurors,jumpin,jugular,jeweler,intellectually,inquiries,indulging,indestructible,indebted,imitate,ignores,hyperventilating,hyenas,hurrying,hermano,hellish,heheh,harshly,handout,grunemann,glances,giveaway,getup,gerome,furthest,frosting,frail,forwarded,forceful,flavored,flammable,flaky,fingered,fatherly,ethic,embezzlement,duffel,dotted,distressed,disobey,disappearances,dinky,diminish,diaphragm,deuces,creme,courteous,comforts,coerced,clots,clarification,chunks,chickie,chases,chaperoning,cartons,caper,calves,caged,bustin,bulging,bringin,boomhauer,blowin,blindfolded,biscotti,ballplayer,bagging,auster,assurances,aschen,arraigned,anonymity,alters,albatross,agreeable,adoring,abduct,wolfi,weirded,watchers,washroom,warheads,vincennes,urgency,understandably,uncomplicated,uhhhh,twitching,treadmill,thermos,tenorman,tangle,talkative,swarm,surrendering,summoning,strive,stilts,stickers,squashed,spraying,sparring,soaring,snort,sneezed,slaps,skanky,singin,sidle,shreck,shortness,shorthand,sharper,shamed,sadist,rydell,rusik,roulette,resumes,respiration,recount,reacts,purgatory,princesses,presentable,ponytail,plotted,pinot,pigtails,phillippe,peddling,paroled,orbed,offends,o'hara,moonlit,minefield,metaphors,malignant,mainframe,magicks,maggots,maclaine,loathing,leper,leaps,leaping,lashed,larch,larceny,lapses,ladyship,juncture,jiffy,jakov,invoke,infantile,inadmissible,horoscope,hinting,hideaway,hesitating,heddy,heckles,hairline,gripe,gratifying,governess,goebbels,freddo,foresee,fascination,exemplary,executioner,etcetera,escorts,endearing,eaters,earplugs,draped,disrupting,disagrees,dimes,devastate,detain,depositions,delicacy,darklighter,cynicism,cyanide,cutters,cronus,continuance,conquering,confiding,compartments,combing,cofell,clingy,cleanse,christmases,cheered,cheekbones,buttle,burdened,bruenell,broomstick,brained,bozos,bontecou,bluntman,blazes,blameless,bizarro,bellboy,beaucoup,barkeep,awaken,astray,assailant,appease,aphrodisiac,alleys,yesss,wrecks,woodpecker,wondrous,wimpy,willpower,wheeling,weepy,waxing,waive,videotaped,veritable,untouched,unlisted,unfounded,unforeseen,twinge,triggers,traipsing,toxin,tombstone,thumping,therein,testicles,telephones,tarmac,talby,tackled,swirling,suicides,suckered,subtitles,sturdy,strangler,stockbroker,stitching,steered,standup,squeal,sprinkler,spontaneously,splendor,spiking,spender,snipe,snagged,skimming,siddown,showroom,shovels,shotguns,shoelaces,shitload,shellfish,sharpest,shadowy,seizing,scrounge,scapegoat,sayonara,saddled,rummaging,roomful,renounce,reconsidered,recharge,realistically,radioed,quirks,quadrant,punctual,practising,pours,poolhouse,poltergeist,pocketbook,plainly,picnics,pesto,pawing,passageway,partied,oneself,numero,nostalgia,nitwit,neuro,mixer,meanest,mcbeal,matinee,margate,marce,manipulations,manhunt,manger,magicians,loafers,litvack,lightheaded,lifeguard,lawns,laughingstock,ingested,indignation,inconceivable,imposition,impersonal,imbecile,huddled,housewarming,horizons,homicides,hiccups,hearse,hardened,gushing,gushie,greased,goddamit,freelancer,forging,fondue,flustered,flung,flinch,flicker,fixin,festivus,fertilizer,farted,faggots,exonerate,evict,enormously,encrypted,emdash,embracing,duress,dupres,dowser,doormat,disfigured,disciplined,dibbs,depository,deathbed,dazzled,cuttin,cures,crowding,crepe,crammed,copycat,contradict,confidant,condemning,conceited,commute,comatose,clapping,circumference,chuppah,chore,choksondik,chestnuts,briault,bottomless,bonnet,blokes,berluti,beret,beggars,bankroll,bania,athos,arsenic,apperantly,ahhhhhh,afloat,accents,zipped,zeros,zeroes,zamir,yuppie,youngsters,yorkers,wisest,wipes,wield,whyn't,weirdos,wednesdays,vicksburg,upchuck,untraceable,unsupervised,unpleasantness,unhook,unconscionable,uncalled,trappings,tragedies,townie,thurgood,things'll,thine,tetanus,terrorize,temptations,tanning,tampons,swarming,straitjacket,steroid,startling,starry,squander,speculating,sollozzo,sneaked,slugs,skedaddle,sinker,silky,shortcomings,sellin,seasoned,scrubbed,screwup,scrapes,scarves,sandbox,salesmen,rooming,romances,revere,reproach,reprieve,rearranging,ravine,rationalize,raffle,punchy,psychobabble,provocation,profoundly,prescriptions,preferable,polishing,poached,pledges,pirelli,perverts,oversized,overdressed,outdid,nuptials,nefarious,mouthpiece,motels,mopping,mongrel,missin,metaphorically,mertin,memos,melodrama,melancholy,measles,meaner,mantel,maneuvering,mailroom,luring,listenin,lifeless,licks,levon,legwork,kneecaps,kippur,kiddie,kaput,justifiable,insistent,insidious,innuendo,innit,indecent,imaginable,horseshit,hemorrhoid,hella,healthiest,haywire,hamsters,hairbrush,grouchy,grisly,gratuitous,glutton,glimmer,gibberish,ghastly,gentler,generously,geeky,fuhrer,fronting,foolin,faxes,faceless,extinguisher,expel,etched,endangering,ducked,dodgeball,dives,dislocated,discrepancy,devour,derail,dementia,daycare,cynic,crumbling,cowardice,covet,cornwallis,corkscrew,cookbook,commandments,coincidental,cobwebs,clouded,clogging,clicking,clasp,chopsticks,chefs,chaps,cashing,carat,calmer,brazen,brainwashing,bradys,bowing,boned,bloodsucking,bleachers,bleached,bedpan,bearded,barrenger,bachelors,awwww,assures,assigning,asparagus,apprehend,anecdote,amoral,aggravation,afoot,acquaintances,accommodating,yakking,worshipping,wladek,willya,willies,wigged,whoosh,whisked,watered,warpath,volts,violates,valuables,uphill,unwise,untimely,unsavory,unresponsive,unpunished,unexplained,tubby,trolling,toxicology,tormented,toothache,tingly,timmiihh,thursdays,thoreau,terrifies,temperamental,telegrams,talkie,takers,symbiote,swirl,suffocate,stupider,strapping,steckler,springing,someway,sleepyhead,sledgehammer,slant,slams,showgirl,shoveling,shmoopy,sharkbait,shan't,scrambling,schematics,sandeman,sabbatical,rummy,reykjavik,revert,responsive,rescheduled,requisition,relinquish,rejoice,reckoning,recant,rebadow,reassurance,rattlesnake,ramble,primed,pricey,prance,pothole,pocus,persist,perpetrated,pekar,peeling,pastime,parmesan,pacemaker,overdrive,ominous,observant,nothings,noooooo,nonexistent,nodded,nieces,neglecting,nauseating,mutated,musket,mumbling,mowing,mouthful,mooseport,monologue,mistrust,meetin,masseuse,mantini,mailer,madre,lowlifes,locksmith,livid,liven,limos,liberating,lhasa,leniency,leering,laughable,lashes,lasagne,laceration,korben,katan,kalen,jittery,jammies,irreplaceable,intubate,intolerant,inhaler,inhaled,indifferent,indifference,impound,impolite,humbly,heroics,heigh,guillotine,guesthouse,grounding,grips,gossiping,goatee,gnomes,gellar,frutt,frobisher,freudian,foolishness,flagged,femme,fatso,fatherhood,fantasized,fairest,faintest,eyelids,extravagant,extraterrestrial,extraordinarily,escalator,elevate,drivel,dissed,dismal,disarray,dinnertime,devastation,dermatologist,delicately,defrost,debutante,debacle,damone,dainty,cuvee,culpa,crucified,creeped,crayons,courtship,convene,congresswoman,concocted,compromises,comprende,comma,coleslaw,clothed,clinically,chickenshit,checkin,cesspool,caskets,calzone,brothel,boomerang,bodega,blasphemy,bitsy,bicentennial,berlini,beatin,beards,barbas,barbarians,backpacking,arrhythmia,arousing,arbitrator,antagonize,angling,anesthetic,altercation,aggressor,adversity,acathla,aaahhh,wreaking,workup,wonderin,wither,wielding,what'm,what'cha,waxed,vibrating,veterinarian,venting,vasey,valor,validate,upholstery,untied,unscathed,uninterrupted,unforgiving,undies,uncut,twinkies,tucking,treatable,treasured,tranquility,townspeople,torso,tomei,tipsy,tinsel,tidings,thirtieth,tantrums,tamper,talky,swayed,swapping,suitor,stylist,stirs,standoff,sprinklers,sparkly,snobby,snatcher,smoother,sleepin,shrug,shoebox,sheesh,shackles,setbacks,sedatives,screeching,scorched,scanned,satyr,roadblock,riverbank,ridiculed,resentful,repellent,recreate,reconvene,rebuttal,realmedia,quizzes,questionnaire,punctured,pucker,prolong,professionalism,pleasantly,pigsty,penniless,paychecks,patiently,parading,overactive,ovaries,orderlies,oracles,oiled,offending,nudie,neonatal,neighborly,moops,moonlighting,mobilize,mmmmmm,milkshake,menial,meats,mayan,maxed,mangled,magua,lunacy,luckier,liters,lansbury,kooky,knowin,jeopardized,inkling,inhalation,inflated,infecting,incense,inbound,impractical,impenetrable,idealistic,i'mma,hypocrites,hurtin,humbled,hologram,hokey,hocus,hitchhiking,hemorrhoids,headhunter,hassled,harts,hardworking,haircuts,hacksaw,genitals,gazillion,gammy,gamesphere,fugue,footwear,folly,flashlights,fives,filet,extenuating,estrogen,entails,embezzled,eloquent,egomaniac,ducts,drowsy,drones,doree,donovon,disguises,diggin,deserting,depriving,defying,deductible,decorum,decked,daylights,daybreak,dashboard,damnation,cuddling,crunching,crickets,crazies,councilman,coughed,conundrum,complimented,cohaagen,clutching,clued,clader,cheques,checkpoint,chats,channeling,ceases,carasco,capisce,cantaloupe,cancelling,campsite,burglars,breakfasts,bra'tac,blueprint,bleedin,blabbed,beneficiary,basing,avert,atone,arlyn,approves,apothecary,antiseptic,aleikuum,advisement,zadir,wobbly,withnail,whattaya,whacking,wedged,wanders,vaginal,unimaginable,undeniable,unconditionally,uncharted,unbridled,tweezers,tvmegasite,trumped,triumphant,trimming,treading,tranquilizers,toontown,thunk,suture,suppressing,strays,stonewall,stogie,stepdaughter,stace,squint,spouses,splashed,speakin,sounder,sorrier,sorrel,sombrero,solemnly,softened,snobs,snippy,snare,smoothing,slump,slimeball,slaving,silently,shiller,shakedown,sensations,scrying,scrumptious,screamin,saucy,santoses,roundup,roughed,rosary,robechaux,retrospect,rescind,reprehensible,repel,remodeling,reconsidering,reciprocate,railroaded,psychics,promos,prob'ly,pristine,printout,priestess,prenuptial,precedes,pouty,phoning,peppy,pariah,parched,panes,overloaded,overdoing,nymphs,nother,notebooks,nearing,nearer,monstrosity,milady,mieke,mephesto,medicated,marshals,manilow,mammogram,m'lady,lotsa,loopy,lesion,lenient,learner,laszlo,kross,kinks,jinxed,involuntary,insubordination,ingrate,inflatable,incarnate,inane,hypoglycemia,huntin,humongous,hoodlum,honking,hemorrhage,helpin,hathor,hatching,grotto,grandmama,gorillas,godless,girlish,ghouls,gershwin,frosted,flutter,flagpole,fetching,fatter,faithfully,exert,evasion,escalate,enticing,enchantress,elopement,drills,downtime,downloading,dorks,doorways,divulge,dissociative,disgraceful,disconcerting,deteriorate,destinies,depressive,dented,denim,decruz,decidedly,deactivate,daydreams,curls,culprit,cruelest,crippling,cranberries,corvis,copped,commend,coastguard,cloning,cirque,churning,chock,chivalry,catalogues,cartwheels,carols,canister,buttered,bundt,buljanoff,bubbling,brokers,broaden,brimstone,brainless,bores,badmouthing,autopilot,ascertain,aorta,ampata,allenby,accosted,absolve,aborted,aaagh,aaaaaah,yonder,yellin,wyndham,wrongdoing,woodsboro,wigging,wasteland,warranty,waltzed,walnuts,vividly,veggie,unnecessarily,unloaded,unicorns,understated,unclean,umbrellas,twirling,turpentine,tupperware,triage,treehouse,tidbit,tickled,threes,thousandth,thingie,terminally,teething,tassel,talkies,swoon,switchboard,swerved,suspiciously,subsequentlyne,subscribe,strudel,stroking,strictest,stensland,starin,stannart,squirming,squealing,sorely,softie,snookums,sniveling,smidge,sloth,skulking,simian,sightseeing,siamese,shudder,shoppers,sharpen,shannen,semtex,secondhand,seance,scowl,scorn,safekeeping,russe,rummage,roshman,roomies,roaches,rinds,retrace,retires,resuscitate,rerun,reputations,rekall,refreshment,reenactment,recluse,ravioli,raves,raking,purses,punishable,punchline,puked,prosky,previews,poughkeepsie,poppins,polluted,placenta,pissy,petulant,perseverance,pears,pawns,pastries,partake,panky,palate,overzealous,orchids,obstructing,objectively,obituaries,obedient,nothingness,musty,motherly,mooning,momentous,mistaking,minutemen,milos,microchip,meself,merciless,menelaus,mazel,masturbate,mahogany,lysistrata,lillienfield,likable,liberate,leveled,letdown,larynx,lardass,lainey,lagged,klorel,kidnappings,keyed,karmic,jeebies,irate,invulnerable,intrusive,insemination,inquire,injecting,informative,informants,impure,impasse,imbalance,illiterate,hurled,hunts,hematoma,headstrong,handmade,handiwork,growling,gorky,getcha,gesundheit,gazing,galley,foolishly,fondness,floris,ferocious,feathered,fateful,fancies,fakes,faker,expire,ever'body,essentials,eskimos,enlightening,enchilada,emissary,embolism,elsinore,ecklie,drenched,drazi,doped,dogging,doable,dislikes,dishonesty,disengage,discouraging,derailed,deformed,deflect,defer,deactivated,crips,constellations,congressmen,complimenting,clubbing,clawing,chromium,chimes,chews,cheatin,chaste,cellblock,caving,catered,catacombs,calamari,bucking,brulee,brits,brisk,breezes,bounces,boudoir,binks,better'n,bellied,behrani,behaves,bedding,balmy,badmouth,backers,avenging,aromatherapy,armpit,armoire,anythin,anonymously,anniversaries,aftershave,affliction,adrift,admissible,adieu,acquittal,yucky,yearn,whitter,whirlpool,wendigo,watchdog,wannabes,wakey,vomited,voicemail,valedictorian,uttered,unwed,unrequited,unnoticed,unnerving,unkind,unjust,uniformed,unconfirmed,unadulterated,unaccounted,uglier,turnoff,trampled,tramell,toads,timbuktu,throwback,thimble,tasteless,tarantula,tamale,takeovers,swish,supposing,streaking,stargher,stanzi,stabs,squeamish,splattered,spiritually,spilt,speciality,smacking,skywire,skips,skaara,simpatico,shredding,showin,shortcuts,shite,shielding,shamelessly,serafine,sentimentality,seasick,schemer,scandalous,sainted,riedenschneider,rhyming,revel,retractor,retards,resurrect,remiss,reminiscing,remanded,reiben,regains,refuel,refresher,redoing,redheaded,reassured,rearranged,rapport,qumar,prowling,prejudices,precarious,powwow,pondering,plunger,plunged,pleasantville,playpen,phlegm,perfected,pancreas,paley,ovary,outbursts,oppressed,ooohhh,omoroca,offed,o'toole,nurture,nursemaid,nosebleed,necktie,muttering,munchies,mucking,mogul,mitosis,misdemeanor,miscarried,millionth,migraines,midler,manicurist,mandelbaum,manageable,malfunctioned,magnanimous,loudmouth,longed,lifestyles,liddy,lickety,leprechauns,komako,klute,kennel,justifying,irreversible,inventing,intergalactic,insinuate,inquiring,ingenuity,inconclusive,incessant,improv,impersonation,hyena,humperdinck,hubba,housework,hoffa,hither,hissy,hippy,hijacked,heparin,hellooo,hearth,hassles,hairstyle,hahahaha,hadda,guys'll,gutted,gulls,gritty,grievous,graft,gossamer,gooder,gambled,gadgets,fundamentals,frustrations,frolicking,frock,frilly,foreseen,footloose,fondly,flirtation,flinched,flatten,farthest,exposer,evading,escrow,empathize,embryos,embodiment,ellsberg,ebola,dulcinea,dreamin,drawbacks,doting,doose,doofy,disturbs,disorderly,disgusts,detox,denominator,demeanor,deliriously,decode,debauchery,croissant,cravings,cranked,coworkers,councilor,confuses,confiscate,confines,conduit,compress,combed,clouding,clamps,cinch,chinnery,celebratory,catalogs,carpenters,carnal,canin,bundys,bulldozer,buggers,bueller,brainy,booming,bookstores,bloodbath,bittersweet,bellhop,beeping,beanstalk,beady,baudelaire,bartenders,bargains,averted,armadillo,appreciating,appraised,antlers,aloof,allowances,alleyway,affleck,abject,zilch,youore,xanax,wrenching,wouldn,witted,wicca,whorehouse,whooo,whips,vouchers,victimized,vicodin,untested,unsolicited,unfocused,unfettered,unfeeling,unexplainable,understaffed,underbelly,tutorial,tryst,trampoline,towering,tirade,thieving,thang,swimmin,swayzak,suspecting,superstitions,stubbornness,streamers,strattman,stonewalling,stiffs,stacking,spout,splice,sonrisa,smarmy,slows,slicing,sisterly,shrill,shined,seeming,sedley,seatbelts,scour,scold,schoolyard,scarring,salieri,rustling,roxbury,rewire,revved,retriever,reputable,remodel,reins,reincarnation,rance,rafters,rackets,quail,pumbaa,proclaim,probing,privates,pried,prewedding,premeditation,posturing,posterity,pleasurable,pizzeria,pimps,penmanship,penchant,pelvis,overturn,overstepped,overcoat,ovens,outsmart,outed,ooohh,oncologist,omission,offhand,odour,nyazian,notarized,nobody'll,nightie,navel,nabbed,mystique,mover,mortician,morose,moratorium,mockingbird,mobsters,mingling,methinks,messengered,merde,masochist,martouf,martians,marinara,manray,majorly,magnifying,mackerel,lurid,lugging,lonnegan,loathsome,llantano,liberace,leprosy,latinos,lanterns,lamest,laferette,kraut,intestine,innocencia,inhibitions,ineffectual,indisposed,incurable,inconvenienced,inanimate,improbable,implode,hydrant,hustling,hustled,huevos,how'm,hooey,hoods,honcho,hinge,hijack,heimlich,hamunaptra,haladki,haiku,haggle,gutsy,grunting,grueling,gribbs,greevy,grandstanding,godparents,glows,glistening,gimmick,gaping,fraiser,formalities,foreigner,folders,foggy,fitty,fiends,fe'nos,favours,eyeing,extort,expedite,escalating,epinephrine,entitles,entice,eminence,eights,earthlings,eagerly,dunville,dugout,doublemeat,doling,dispensing,dispatcher,discoloration,diners,diddly,dictates,diazepam,derogatory,delights,defies,decoder,dealio,danson,cutthroat,crumbles,croissants,crematorium,craftsmanship,could'a,cordless,cools,conked,confine,concealing,complicates,communique,cockamamie,coasters,clobbered,clipping,clipboard,clemenza,cleanser,circumcision,chanukah,certainaly,cellmate,cancels,cadmium,buzzed,bumstead,bucko,browsing,broth,braver,boggling,bobbing,blurred,birkhead,benet,belvedere,bellies,begrudge,beckworth,banky,baldness,baggy,babysitters,aversion,astonished,assorted,appetites,angina,amiss,ambulances,alibis,airway,admires,adhesive,yoyou,xxxxxx,wreaked,wracking,woooo,wooing,wised,wilshire,wedgie,waging,violets,vincey,uplifting,untrustworthy,unmitigated,uneventful,undressing,underprivileged,unburden,umbilical,tweaking,turquoise,treachery,tosses,torching,toothpick,toasts,thickens,tereza,tenacious,teldar,taint,swill,sweatin,subtly,subdural,streep,stopwatch,stockholder,stillwater,stalkers,squished,squeegee,splinters,spliced,splat,spied,spackle,sophistication,snapshots,smite,sluggish,slithered,skeeters,sidewalks,sickly,shrugs,shrubbery,shrieking,shitless,settin,sentinels,selfishly,scarcely,sangria,sanctum,sahjhan,rustle,roving,rousing,rosomorf,riddled,responsibly,renoir,remoray,remedial,refundable,redirect,recheck,ravenwood,rationalizing,ramus,ramelle,quivering,pyjamas,psychos,provocations,prouder,protestors,prodded,proctologist,primordial,pricks,prickly,precedents,pentangeli,pathetically,parka,parakeet,panicky,overthruster,outsmarted,orthopedic,oncoming,offing,nutritious,nuthouse,nourishment,nibbling,newlywed,narcissist,mutilation,mundane,mummies,mumble,mowed,morvern,mortem,mopes,molasses,misplace,miscommunication,miney,midlife,menacing,memorizing,massaging,masking,magnets,luxuries,lounging,lothario,liposuction,lidocaine,libbets,levitate,leeway,launcelot,larek,lackeys,kumbaya,kryptonite,knapsack,keyhole,katarangura,juiced,jakey,ironclad,invoice,intertwined,interlude,interferes,injure,infernal,indeedy,incur,incorrigible,incantations,impediment,igloo,hysterectomy,hounded,hollering,hindsight,heebie,havesham,hasenfuss,hankering,hangers,hakuna,gutless,gusto,grubbing,grrrr,grazed,gratification,grandeur,gorak,godammit,gnawing,glanced,frostbite,frees,frazzled,fraulein,fraternizing,fortuneteller,formaldehyde,followup,foggiest,flunky,flickering,firecrackers,figger,fetuses,fates,eyeliner,extremities,extradited,expires,exceedingly,evaporate,erupt,epileptic,entrails,emporium,egregious,eggshells,easing,duwayne,droll,dreyfuss,dovey,doubly,doozy,donkeys,donde,distrust,distressing,disintegrate,discreetly,decapitated,dealin,deader,dashed,darkroom,dares,daddies,dabble,cushy,cupcakes,cuffed,croupier,croak,crapped,coursing,coolers,contaminate,consummated,construed,condos,concoction,compulsion,commish,coercion,clemency,clairvoyant,circulate,chesterton,checkered,charlatan,chaperones,categorically,cataracts,carano,capsules,capitalize,burdon,bullshitting,brewed,breathless,breasted,brainstorming,bossing,borealis,bonsoir,bobka,boast,blimp,bleep,bleeder,blackouts,bisque,billboards,beatings,bayberry,bashed,bamboozled,balding,baklava,baffled,backfires,babak,awkwardness,attest,attachments,apologizes,anyhoo,antiquated,alcante,advisable,aahhh,aaahh,zatarc,yearbooks,wuddya,wringing,womanhood,witless,winging,whatsa,wetting,waterproof,wastin,vogelman,vocation,vindicated,vigilance,vicariously,venza,vacuuming,utensils,uplink,unveil,unloved,unloading,uninhibited,unattached,tweaked,turnips,trinkets,toughen,toting,topside,terrors,terrify,technologically,tarnish,tagliati,szpilman,surly,supple,summation,suckin,stepmom,squeaking,splashmore,souffle,solitaire,solicitation,solarium,smokers,slugged,slobbering,skylight,skimpy,sinuses,silenced,sideburns,shrinkage,shoddy,shhhhhh,shelled,shareef,shangri,seuss,serenade,scuffle,scoff,scanners,sauerkraut,sardines,sarcophagus,salvy,rusted,russells,rowboat,rolfsky,ringside,respectability,reparations,renegotiate,reminisce,reimburse,regimen,raincoat,quibble,puzzled,purposefully,pubic,proofing,prescribing,prelim,poisons,poaching,personalized,personable,peroxide,pentonville,payphone,payoffs,paleontology,overflowing,oompa,oddest,objecting,o'hare,o'daniel,notches,nobody'd,nightstand,neutralized,nervousness,nerdy,needlessly,naquadah,nappy,nantucket,nambla,mountaineer,motherfuckin,morrie,monopolizing,mohel,mistreated,misreading,misbehave,miramax,minivan,milligram,milkshakes,metamorphosis,medics,mattresses,mathesar,matchbook,matata,marys,malucci,magilla,lymphoma,lowers,lordy,linens,lindenmeyer,limelight,leapt,laxative,lather,lapel,lamppost,laguardia,kindling,kegger,kawalsky,juries,jokin,jesminder,interning,innermost,injun,infallible,industrious,indulgence,incinerator,impossibility,impart,illuminate,iguanas,hypnotic,hyped,hospitable,hoses,homemaker,hirschmuller,helpers,headset,guardianship,guapo,grubby,granola,granddaddy,goren,goblet,gluttony,globes,giorno,getter,geritol,gassed,gaggle,foxhole,fouled,foretold,floorboards,flippers,flaked,fireflies,feedings,fashionably,farragut,fallback,facials,exterminate,excites,everything'll,evenin,ethically,ensue,enema,empath,eluded,eloquently,eject,edema,dumpling,droppings,dolled,distasteful,disputing,displeasure,disdain,deterrent,dehydration,defied,decomposing,dawned,dailies,custodian,crusts,crucifix,crowning,crier,crept,craze,crawls,couldn,correcting,corkmaster,copperfield,cooties,contraption,consumes,conspire,consenting,consented,conquers,congeniality,complains,communicator,commendable,collide,coladas,colada,clout,clooney,classifieds,clammy,civility,cirrhosis,chink,catskills,carvers,carpool,carelessness,cardio,carbs,capades,butabi,busmalis,burping,burdens,bunks,buncha,bulldozers,browse,brockovich,breakthroughs,bravado,boogety,blossoms,blooming,bloodsucker,blight,betterton,betrayer,belittle,beeps,bawling,barts,bartending,bankbooks,babish,atropine,assertive,armbrust,anyanka,annoyance,anemic,anago,airwaves,aimlessly,aaargh,aaand,yoghurt,writhing,workable,winking,winded,widen,whooping,whiter,whatya,wazoo,voila,virile,vests,vestibule,versed,vanishes,urkel,uproot,unwarranted,unscheduled,unparalleled,undergrad,tweedle,turtleneck,turban,trickery,transponder,toyed,townhouse,thyself,thunderstorm,thinning,thawed,tether,technicalities,tau'ri,tarnished,taffeta,tacked,systolic,swerve,sweepstakes,swabs,suspenders,superwoman,sunsets,succulent,subpoenas,stumper,stosh,stomachache,stewed,steppin,stepatech,stateside,spicoli,sparing,soulless,sonnets,sockets,snatching,smothering,slush,sloman,slashing,sitters,simpleton,sighs,sidra,sickens,shunned,shrunken,showbiz,shopped,shimmering,shagging,semblance,segue,sedation,scuzzlebutt,scumbags,screwin,scoundrels,scarsdale,scabs,saucers,saintly,saddened,runaways,runaround,rheya,resenting,rehashing,rehabilitated,regrettable,refreshed,redial,reconnecting,ravenous,raping,rafting,quandary,pylea,putrid,puffing,psychopathic,prunes,probate,prayin,pomegranate,plummeting,planing,plagues,pinata,pithy,perversion,personals,perched,peeps,peckish,pavarotti,pajama,packin,pacifier,overstepping,okama,obstetrician,nutso,nuance,normalcy,nonnegotiable,nomak,ninny,nines,nicey,newsflash,neutered,nether,negligee,necrosis,navigating,narcissistic,mylie,muses,momento,moisturizer,moderation,misinformed,misconception,minnifield,mikkos,methodical,mebbe,meager,maybes,matchmaking,masry,markovic,malakai,luzhin,lusting,lumberjack,loopholes,loaning,lightening,leotard,launder,lamaze,kubla,kneeling,kibosh,jumpsuit,joliet,jogger,janover,jakovasaurs,irreparable,innocently,inigo,infomercial,inexplicable,indispensable,impregnated,impossibly,imitating,hunches,hummus,houmfort,hothead,hostiles,hooves,hooligans,homos,homie,hisself,heyyy,hesitant,hangout,handsomest,handouts,hairless,gwennie,guzzling,guinevere,grungy,goading,glaring,gavel,gardino,gangrene,fruitful,friendlier,freckle,freakish,forthright,forearm,footnote,flops,fixer,firecracker,finito,figgered,fezzik,fastened,farfetched,fanciful,familiarize,faire,fahrenheit,extravaganza,exploratory,explanatory,everglades,eunuch,estas,escapade,erasers,emptying,embarassing,dweeb,dutiful,dumplings,dries,drafty,dollhouse,dismissing,disgraced,discrepancies,disbelief,disagreeing,digestion,didnt,deviled,deviated,demerol,delectable,decaying,decadent,dears,dateless,d'algout,cultivating,cryto,crumpled,crumbled,cronies,crease,craves,cozying,corduroy,congratulated,confidante,compressions,complicating,compadre,coerce,classier,chums,chumash,chivalrous,chinpoko,charred,chafing,celibacy,carted,carryin,carpeting,carotid,cannibals,candor,butterscotch,busts,busier,bullcrap,buggin,brookside,brodski,brassiere,brainwash,brainiac,botrelle,bonbon,boatload,blimey,blaring,blackness,bipartisan,bimbos,bigamist,biebe,biding,betrayals,bestow,bellerophon,bedpans,bassinet,basking,barzini,barnyard,barfed,backups,audited,asinine,asalaam,arouse,applejack,annoys,anchovies,ampule,alameida,aggravate,adage,accomplices,yokel,y'ever,wringer,witwer,withdrawals,windward,willfully,whorfin,whimsical,whimpering,weddin,weathered,warmest,wanton,volant,visceral,vindication,veggies,urinate,uproar,unwritten,unwrap,unsung,unsubstantiated,unspeakably,unscrupulous,unraveling,unquote,unqualified,unfulfilled,undetectable,underlined,unattainable,unappreciated,ummmm,ulcers,tylenol,tweak,turnin,tuatha,tropez,trellis,toppings,tootin,toodle,tinkering,thrives,thespis,theatrics,thatherton,tempers,tavington,tartar,tampon,swelled,sutures,sustenance,sunflowers,sublet,stubbins,strutting,strewn,stowaway,stoic,sternin,stabilizing,spiraling,spinster,speedometer,speakeasy,soooo,soiled,sneakin,smithereens,smelt,smacks,slaughterhouse,slacks,skids,sketching,skateboards,sizzling,sixes,sirree,simplistic,shouts,shorted,shoelace,sheeit,shards,shackled,sequestered,selmak,seduces,seclusion,seamstress,seabeas,scoops,scooped,scavenger,satch,s'more,rudeness,romancing,rioja,rifkin,rieper,revise,reunions,repugnant,replicating,repaid,renewing,relaxes,rekindle,regrettably,regenerate,reels,reciting,reappear,readin,ratting,rapes,rancher,rammed,rainstorm,railroading,queers,punxsutawney,punishes,pssst,prudy,proudest,protectors,procrastinating,proactive,priss,postmortem,pompoms,poise,pickings,perfectionist,peretti,people'll,pecking,patrolman,paralegal,paragraphs,paparazzi,pankot,pampering,overstep,overpower,outweigh,omnipotent,odious,nuwanda,nurtured,newsroom,neeson,needlepoint,necklaces,neato,muggers,muffler,mousy,mourned,mosey,mopey,mongolians,moldy,misinterpret,minibar,microfilm,mendola,mended,melissande,masturbating,masbath,manipulates,maimed,mailboxes,magnetism,m'lord,m'honey,lymph,lunge,lovelier,lefferts,leezak,ledgers,larraby,laloosh,kundun,kozinski,knockoff,kissin,kiosk,kennedys,kellman,karlo,kaleidoscope,jeffy,jaywalking,instructing,infraction,informer,infarction,impulsively,impressing,impersonated,impeach,idiocy,hyperbole,hurray,humped,huhuh,hsing,hordes,hoodlums,honky,hitchhiker,hideously,heaving,heathcliff,headgear,headboard,hazing,harem,handprint,hairspray,gutiurrez,goosebumps,gondola,glitches,gasping,frolic,freeways,frayed,fortitude,forgetful,forefathers,fonder,foiled,foaming,flossing,flailing,fitzgeralds,firehouse,finders,fiftieth,fellah,fawning,farquaad,faraway,fancied,extremists,exorcist,exhale,ethros,entrust,ennui,energized,encephalitis,embezzling,elster,elixir,electrolytes,duplex,dryers,drexl,dredging,drawback,don'ts,dobisch,divorcee,disrespected,disprove,disobeying,disinfectant,dingy,digress,dieting,dictating,devoured,devise,detonators,desist,deserter,derriere,deron,deceptive,debilitating,deathwok,daffodils,curtsy,cursory,cuppa,cumin,cronkite,cremation,credence,cranking,coverup,courted,countin,counselling,cornball,contentment,consensual,compost,cluett,cleverly,cleansed,cleanliness,chopec,chomp,chins,chime,cheswick,chessler,cheapest,chatted,cauliflower,catharsis,catchin,caress,camcorder,calorie,cackling,bystanders,buttoned,buttering,butted,buries,burgel,buffoon,brogna,bragged,boutros,bogeyman,blurting,blurb,blowup,bloodhound,blissful,birthmark,bigot,bestest,belted,belligerent,beggin,befall,beeswax,beatnik,beaming,barricade,baggoli,badness,awoke,artsy,artful,aroun,armpits,arming,annihilate,anise,angiogram,anaesthetic,amorous,ambiance,alligators,adoration,admittance,adama,abydos,zonked,zhivago,yorkin,wrongfully,writin,wrappers,worrywart,woops,wonderfalls,womanly,wickedness,whoopie,wholeheartedly,whimper,which'll,wheelchairs,what'ya,warranted,wallop,wading,wacked,virginal,vermouth,vermeil,verger,ventriss,veneer,vampira,utero,ushers,urgently,untoward,unshakable,unsettled,unruly,unlocks,ungodly,undue,uncooperative,uncontrollably,unbeatable,twitchy,tumbler,truest,triumphs,triplicate,tribbey,tortures,tongaree,tightening,thorazine,theres,testifies,teenaged,tearful,taxing,taldor,syllabus,swoops,swingin,suspending,sunburn,stuttering,stupor,strides,strategize,strangulation,stooped,stipulation,stingy,stapled,squeaks,squawking,spoilsport,splicing,spiel,spencers,spasms,spaniard,softener,sodding,soapbox,smoldering,smithbauer,skittish,sifting,sickest,sicilians,shuffling,shrivel,segretti,seeping,securely,scurrying,scrunch,scrote,screwups,schenkman,sawing,savin,satine,sapiens,salvaging,salmonella,sacrilege,rumpus,ruffle,roughing,rotted,rondall,ridding,rickshaw,rialto,rhinestone,restrooms,reroute,requisite,repress,rednecks,redeeming,rayed,ravell,raked,raincheck,raffi,racked,pushin,profess,prodding,procure,presuming,preppy,prednisone,potted,posttraumatic,poorhouse,podiatrist,plowed,pledging,playroom,plait,placate,pinback,picketing,photographing,pharoah,petrak,petal,persecuting,perchance,pellets,peeved,peerless,payable,pauses,pathologist,pagliacci,overwrought,overreaction,overqualified,overheated,outcasts,otherworldly,opinionated,oodles,oftentimes,occured,obstinate,nutritionist,numbness,nubile,nooooooo,nobodies,nepotism,neanderthals,mushu,mucus,mothering,mothballs,monogrammed,molesting,misspoke,misspelled,misconstrued,miscalculated,minimums,mince,mildew,mighta,middleman,mementos,mellowed,mayol,mauled,massaged,marmalade,mardi,makings,lundegaard,lovingly,loudest,lotto,loosing,loompa,looming,longs,loathes,littlest,littering,lifelike,legalities,laundered,lapdog,lacerations,kopalski,knobs,knitted,kittridge,kidnaps,kerosene,karras,jungles,jockeys,iranoff,invoices,invigorating,insolence,insincere,insectopia,inhumane,inhaling,ingrates,infestation,individuality,indeterminate,incomprehensible,inadequacy,impropriety,importer,imaginations,illuminating,ignite,hysterics,hypodermic,hyperventilate,hyperactive,humoring,honeymooning,honed,hoist,hoarding,hitching,hiker,hightail,hemoglobin,hell'd,heinie,growin,grasped,grandparent,granddaughters,gouged,goblins,gleam,glades,gigantor,get'em,geriatric,gatekeeper,gargoyles,gardenias,garcon,garbo,gallows,gabbing,futon,fulla,frightful,freshener,fortuitous,forceps,fogged,fodder,foamy,flogging,flaun,flared,fireplaces,feverish,favell,fattest,fattening,fallow,extraordinaire,evacuating,errant,envied,enchant,enamored,egocentric,dussander,dunwitty,dullest,dropout,dredged,dorsia,doornail,donot,dongs,dogged,dodgy,ditty,dishonorable,discriminating,discontinue,dings,dilly,dictation,dialysis,delly,delightfully,daryll,dandruff,cruddy,croquet,cringe,crimp,credo,crackling,courtside,counteroffer,counterfeiting,corrupting,copping,conveyor,contusions,contusion,conspirator,consoling,connoisseur,confetti,composure,compel,colic,coddle,cocksuckers,coattails,cloned,claustrophobia,clamoring,churn,chugga,chirping,chasin,chapped,chalkboard,centimeter,caymans,catheter,casings,caprica,capelli,cannolis,cannoli,camogli,camembert,butchers,butchered,busboys,bureaucrats,buckled,bubbe,brownstone,bravely,brackley,bouquets,botox,boozing,boosters,bodhi,blunders,blunder,blockage,biocyte,betrays,bested,beryllium,beheading,beggar,begbie,beamed,bastille,barstool,barricades,barbecues,barbecued,bandwagon,backfiring,bacarra,avenged,autopsies,aunties,associating,artichoke,arrowhead,appendage,apostrophe,antacid,ansel,annul,amuses,amped,amicable,amberg,alluring,adversaries,admirers,adlai,acupuncture,abnormality,aaaahhhh,zooming,zippity,zipping,zeroed,yuletide,yoyodyne,yengeese,yeahhh,wrinkly,wracked,withered,winks,windmills,whopping,wendle,weigart,waterworks,waterbed,watchful,wantin,wagging,waaah,vying,ventricle,varnish,vacuumed,unreachable,unprovoked,unmistakable,unfriendly,unfolding,underpaid,uncuff,unappealing,unabomber,typhoid,tuxedos,tushie,turds,tumnus,troubadour,trinium,treaters,treads,transpired,transgression,tought,thready,thins,thinners,techs,teary,tattaglia,tassels,tarzana,tanking,tablecloths,synchronize,symptomatic,sycophant,swimmingly,sweatshop,surfboard,superpowers,sunroom,sunblock,sugarplum,stupidly,strumpet,strapless,stooping,stools,stealthy,stalks,stairmaster,staffer,sshhh,squatting,squatters,spectacularly,sorbet,socked,sociable,snubbed,snorting,sniffles,snazzy,snakebite,smuggler,smorgasbord,smooching,slurping,slouch,slingshot,slaved,skimmed,sisterhood,silliest,sidarthur,sheraton,shebang,sharpening,shanghaied,shakers,sendoff,scurvy,scoliosis,scaredy,scagnetti,sawchuk,saugus,sasquatch,sandbag,saltines,s'pose,roston,rostle,riveting,ristle,rifling,revulsion,reverently,retrograde,restful,resents,reptilian,reorganize,renovating,reiterate,reinvent,reinmar,reibers,reechard,recuse,reconciling,recognizance,reclaiming,recitation,recieved,rebate,reacquainted,rascals,railly,quintuplets,quahog,pygmies,puzzling,punctuality,prosthetic,proms,probie,preys,preserver,preppie,poachers,plummet,plumbers,plannin,pitying,pitfalls,piqued,pinecrest,pinches,pillage,pigheaded,physique,pessimistic,persecute,perjure,percentile,pentothal,pensky,penises,peini,pazzi,pastels,parlour,paperweight,pamper,pained,overwhelm,overalls,outrank,outpouring,outhouse,outage,ouija,obstructed,obsessions,obeying,obese,o'riley,o'higgins,nosebleeds,norad,noooooooo,nononono,nonchalant,nippy,neurosis,nekhorvich,necronomicon,naquada,n'est,mystik,mystified,mumps,muddle,mothership,moped,monumentally,monogamous,mondesi,misogynistic,misinterpreting,mindlock,mending,megaphone,meeny,medicating,meanie,masseur,markstrom,marklars,margueritas,manifesting,maharajah,lukewarm,loveliest,loran,lizardo,liquored,lipped,lingers,limey,lemkin,leisurely,lathe,latched,lapping,ladle,krevlorneswath,kosygin,khakis,kenaru,keats,kaitlan,julliard,jollies,jaundice,jargon,jackals,invisibility,insipid,inflamed,inferiority,inexperience,incinerated,incinerate,incendiary,incan,inbred,implicating,impersonator,hunks,horsing,hooded,hippopotamus,hiked,hetson,hetero,hessian,henslowe,hendler,hellstrom,headstone,hayloft,harbucks,handguns,hallucinate,haldol,haggling,gynaecologist,gulag,guilder,guaranteeing,groundskeeper,grindstone,grimoir,grievance,griddle,gribbit,greystone,graceland,gooders,goeth,gentlemanly,gelatin,gawking,ganged,fukes,fromby,frenchmen,foursome,forsley,forbids,footwork,foothold,floater,flinging,flicking,fittest,fistfight,fireballs,fillings,fiddling,fennyman,felonious,felonies,feces,favoritism,fatten,fanatics,faceman,excusing,excepted,entwined,entree,ensconced,eladio,ehrlichman,easterland,dueling,dribbling,drape,downtrodden,doused,dosed,dorleen,dokie,distort,displeased,disown,dismount,disinherited,disarmed,disapproves,diperna,dined,diligent,dicaprio,depress,decoded,debatable,dealey,darsh,damsels,damning,dad'll,d'oeuvre,curlers,curie,cubed,crikey,crepes,countrymen,cornfield,coppers,copilot,copier,cooing,conspiracies,consigliere,condoning,commoner,commies,combust,comas,colds,clawed,clamped,choosy,chomping,chimps,chigorin,chianti,cheep,checkups,cheaters,celibate,cautiously,cautionary,castell,carpentry,caroling,carjacking,caritas,caregiver,cardiology,candlesticks,canasta,cain't,burro,burnin,bunking,bumming,bullwinkle,brummel,brooms,brews,breathin,braslow,bracing,botulism,boorish,bloodless,blayne,blatantly,blankie,bedbugs,becuase,barmaid,bared,baracus,banal,bakes,backpacks,attentions,atrocious,ativan,athame,asunder,astound,assuring,aspirins,asphyxiation,ashtrays,aryans,arnon,apprehension,applauding,anvil,antiquing,antidepressants,annoyingly,amputate,altruistic,alotta,alerting,afterthought,affront,affirm,actuality,abysmal,absentee,yeller,yakushova,wuzzy,wriggle,worrier,woogyman,womanizer,windpipe,windbag,willin,whisking,whimsy,wendall,weeny,weensy,weasels,watery,watcha,wasteful,waski,washcloth,waaay,vouched,viznick,ventriloquist,vendettas,veils,vayhue,vamanos,vadimus,upstage,uppity,unsaid,unlocking,unintentionally,undetected,undecided,uncaring,unbearably,tween,tryout,trotting,trini,trimmings,trickier,treatin,treadstone,trashcan,transcendent,tramps,townsfolk,torturous,torrid,toothpicks,tolerable,tireless,tiptoeing,timmay,tillinghouse,tidying,tibia,thumbing,thrusters,thrashing,these'll,thatos,testicular,teriyaki,tenors,tenacity,tellers,telemetry,tarragon,switchblade,swicker,swells,sweatshirts,swatches,surging,supremely,sump'n,succumb,subsidize,stumbles,stuffs,stoppin,stipulate,stenographer,steamroll,stasis,stagger,squandered,splint,splendidly,splashy,splashing,specter,sorcerers,somewheres,somber,snuggled,snowmobile,sniffed,snags,smugglers,smudged,smirking,smearing,slings,sleet,sleepovers,sleek,slackers,siree,siphoning,singed,sincerest,sickened,shuffled,shriveled,shorthanded,shittin,shish,shipwrecked,shins,sheetrock,shawshank,shamu,sha're,servitude,sequins,seascape,scrapings,scoured,scorching,sandpaper,saluting,salud,ruffled,roughnecks,rougher,rosslyn,rosses,roost,roomy,romping,revolutionize,reprimanded,refute,refrigerated,reeled,redundancies,rectal,recklessly,receding,reassignment,reapers,readout,ration,raring,ramblings,raccoons,quarantined,purging,punters,psychically,premarital,pregnancies,predisposed,precautionary,pollute,podunk,plums,plaything,pixilated,pitting,piranhas,pieced,piddles,pickled,photogenic,phosphorous,pffft,pestilence,pessimist,perspiration,perps,penticoff,passageways,pardons,panics,pancamo,paleontologist,overwhelms,overstating,overpaid,overdid,outlive,orthodontist,orgies,oreos,ordover,ordinates,ooooooh,oooohhh,omelettes,officiate,obtuse,obits,nymph,novocaine,noooooooooo,nipping,nilly,nightstick,negate,neatness,natured,narcotic,narcissism,namun,nakatomi,murky,muchacho,mouthwash,motzah,morsel,morph,morlocks,mooch,moloch,molest,mohra,modus,modicum,mockolate,misdemeanors,miscalculation,middies,meringue,mercilessly,meditating,mayakovsky,maximillian,marlee,markovski,maniacal,maneuvered,magnificence,maddening,lutze,lunged,lovelies,lorry,loosening,lookee,littered,lilac,lightened,laces,kurzon,kurtzweil,kind've,kimono,kenji,kembu,keanu,kazuo,jonesing,jilted,jiggling,jewelers,jewbilee,jacqnoud,jacksons,ivories,insurmountable,innocuous,innkeeper,infantery,indulged,indescribable,incoherent,impervious,impertinent,imperfections,hunnert,huffy,horsies,horseradish,hollowed,hogwash,hockley,hissing,hiromitsu,hidin,hereafter,helpmann,hehehe,haughty,happenings,hankie,handsomely,halliwells,haklar,haise,gunsights,grossly,grope,grocer,grits,gripping,grabby,glorificus,gizzard,gilardi,gibarian,geminon,gasses,garnish,galloping,gairwyn,futterman,futility,fumigated,fruitless,friendless,freon,foregone,forego,floored,flighty,flapjacks,fizzled,ficus,festering,farbman,fabricate,eyghon,extricate,exalted,eventful,esophagus,enterprising,entail,endor,emphatically,embarrasses,electroshock,easel,duffle,drumsticks,dissection,dissected,disposing,disparaging,disorientation,disintegrated,disarming,devoting,dessaline,deprecating,deplorable,delve,degenerative,deduct,decomposed,deathly,dearie,daunting,dankova,cyclotron,cyberspace,cutbacks,culpable,cuddled,crumpets,cruelly,crouching,cranium,cramming,cowering,couric,cordesh,conversational,conclusively,clung,clotting,cleanest,chipping,chimpanzee,chests,cheapen,chainsaws,censure,catapult,caravaggio,carats,captivating,calrissian,butlers,busybody,bussing,bunion,bulimic,budging,brung,browbeat,brokenhearted,brecher,breakdowns,bracebridge,boning,blowhard,blisters,blackboard,bigotry,bialy,bhamra,bended,begat,battering,baste,basquiat,barricaded,barometer,balled,baited,badenweiler,backhand,ascenscion,argumentative,appendicitis,apparition,anxiously,antagonistic,angora,anacott,amniotic,ambience,alonna,aleck,akashic,ageless,abouts,aawwww,aaaaarrrrrrggghhh,aaaaaa,zendi,yuppies,yodel,y'hear,wrangle,wombosi,wittle,withstanding,wisecracks,wiggling,wierd,whittlesley,whipper,whattya,whatsamatter,whatchamacallit,whassup,whad'ya,weakling,warfarin,waponis,wampum,wadn't,vorash,vizzini,virtucon,viridiana,veracity,ventilated,varicose,varcon,vandalized,vamos,vamoose,vaccinated,vacationing,usted,urinal,uppers,unwittingly,unsealed,unplanned,unhinged,unhand,unfathomable,unequivocally,unbreakable,unadvisedly,udall,tynacorp,tuxes,tussle,turati,tunic,tsavo,trussed,troublemakers,trollop,tremors,transsexual,transfusions,toothbrushes,toned,toddlers,tinted,tightened,thundering,thorpey,this'd,thespian,thaddius,tenuous,tenths,tenement,telethon,teleprompter,teaspoon,taunted,tattle,tardiness,taraka,tappy,tapioca,tapeworm,talcum,tacks,swivel,swaying,superpower,summarize,sumbitch,sultry,suburbia,styrofoam,stylings,strolls,strobe,stockpile,stewardesses,sterilized,sterilize,stealin,stakeouts,squawk,squalor,squabble,sprinkled,sportsmanship,spokes,spiritus,sparklers,spareribs,sowing,sororities,sonovabitch,solicit,softy,softness,softening,snuggling,snatchers,snarling,snarky,snacking,smears,slumped,slowest,slithering,sleazebag,slayed,slaughtering,skidded,skated,sivapathasundaram,sissies,silliness,silences,sidecar,sicced,shylock,shtick,shrugged,shriek,shoves,should'a,shortcake,shockingly,shirking,shaves,shatner,sharpener,shapely,shafted,sexless,septum,selflessness,seabea,scuff,screwball,scoping,scooch,scolding,schnitzel,schemed,scalper,santy,sankara,sanest,salesperson,sakulos,safehouse,sabers,runes,rumblings,rumbling,ruijven,ringers,righto,rhinestones,retrieving,reneging,remodelling,relentlessly,regurgitate,refills,reeking,reclusive,recklessness,recanted,ranchers,rafer,quaking,quacks,prophesied,propensity,profusely,problema,prided,prays,postmark,popsicles,poodles,pollyanna,polaroids,pokes,poconos,pocketful,plunging,plugging,pleeease,platters,pitied,pinetti,piercings,phooey,phonies,pestering,periscope,pentagram,pelts,patronized,paramour,paralyze,parachutes,pales,paella,paducci,owatta,overdone,overcrowded,overcompensating,ostracized,ordinate,optometrist,operandi,omens,okayed,oedipal,nuttier,nuptial,nunheim,noxious,nourish,notepad,nitroglycerin,nibblet,neuroses,nanosecond,nabbit,mythic,munchkins,multimillion,mulroney,mucous,muchas,mountaintop,morlin,mongorians,moneybags,mom'll,molto,mixup,misgivings,mindset,michalchuk,mesmerized,merman,mensa,meaty,mbwun,materialize,materialistic,masterminded,marginally,mapuhe,malfunctioning,magnify,macnamara,macinerney,machinations,macadamia,lysol,lurks,lovelorn,lopsided,locator,litback,litany,linea,limousines,limes,lighters,liebkind,levity,levelheaded,letterhead,lesabre,leron,lepers,lefts,leftenant,laziness,layaway,laughlan,lascivious,laryngitis,lapsed,landok,laminated,kurten,kobol,knucklehead,knowed,knotted,kirkeby,kinsa,karnovsky,jolla,jimson,jettison,jeric,jawed,jankis,janitors,jango,jalopy,jailbreak,jackers,jackasses,invalidate,intercepting,intercede,insinuations,infertile,impetuous,impaled,immerse,immaterial,imbeciles,imagines,idyllic,idolized,icebox,i'd've,hypochondriac,hyphen,hurtling,hurried,hunchback,hullo,horsting,hoooo,homeboys,hollandaise,hoity,hijinks,hesitates,herrero,herndorff,helplessly,heeyy,heathen,hearin,headband,harrassment,harpies,halstrom,hahahahaha,hacer,grumbling,grimlocks,grift,greets,grandmothers,grander,grafts,gordievsky,gondorff,godorsky,glscripts,gaudy,gardeners,gainful,fuses,fukienese,frizzy,freshness,freshening,fraught,frantically,foxbooks,fortieth,forked,foibles,flunkies,fleece,flatbed,fisted,firefight,fingerpaint,filibuster,fhloston,fenceline,femur,fatigues,fanucci,fantastically,familiars,falafel,fabulously,eyesore,expedient,ewwww,eviscerated,erogenous,epidural,enchante,embarassed,embarass,embalming,elude,elspeth,electrocute,eigth,eggshell,echinacea,eases,earpiece,earlobe,dumpsters,dumbshit,dumbasses,duloc,duisberg,drummed,drinkers,dressy,dorma,doily,divvy,diverting,dissuade,disrespecting,displace,disorganized,disgustingly,discord,disapproving,diligence,didja,diced,devouring,detach,destructing,desolate,demerits,delude,delirium,degrade,deevak,deemesa,deductions,deduce,debriefed,deadbeats,dateline,darndest,damnable,dalliance,daiquiri,d'agosta,cussing,cryss,cripes,cretins,crackerjack,cower,coveting,couriers,countermission,cotswolds,convertibles,conversationalist,consorting,consoled,consarn,confides,confidentially,commited,commiserate,comme,comforter,comeuppance,combative,comanches,colosseum,colling,coexist,coaxing,cliffside,chutes,chucked,chokes,childlike,childhoods,chickening,chenowith,charmingly,changin,catsup,captioning,capsize,cappucino,capiche,candlewell,cakewalk,cagey,caddie,buxley,bumbling,bulky,buggered,brussel,brunettes,brumby,brotha,bronck,brisket,bridegroom,braided,bovary,bookkeeper,bluster,bloodline,blissfully,blase,billionaires,bicker,berrisford,bereft,berating,berate,bendy,belive,belated,beikoku,beens,bedspread,bawdy,barreling,baptize,banya,balthazar,balmoral,bakshi,bails,badgered,backstreet,awkwardly,auras,attuned,atheists,astaire,assuredly,arrivederci,appetit,appendectomy,apologetic,antihistamine,anesthesiologist,amulets,albie,alarmist,aiight,adstream,admirably,acquaint,abound,abominable,aaaaaaah,zekes,zatunica,wussy,worded,wooed,woodrell,wiretap,windowsill,windjammer,windfall,whisker,whims,whatiya,whadya,weirdly,weenies,waunt,washout,wanto,waning,victimless,verdad,veranda,vandaley,vancomycin,valise,vaguest,upshot,unzip,unwashed,untrained,unstuck,unprincipled,unmentionables,unjustly,unfolds,unemployable,uneducated,unduly,undercut,uncovering,unconsciousness,unconsciously,tyndareus,turncoat,turlock,tulle,tryouts,trouper,triplette,trepkos,tremor,treeger,trapeze,traipse,tradeoff,trach,torin,tommorow,tollan,toity,timpani,thumbprint,thankless,tell'em,telepathy,telemarketing,telekinesis,teevee,teeming,tarred,tambourine,talentless,swooped,switcheroo,swirly,sweatpants,sunstroke,suitors,sugarcoat,subways,subterfuge,subservient,subletting,stunningly,strongbox,striptease,stravanavitch,stradling,stoolie,stodgy,stocky,stifle,stealer,squeezes,squatter,squarely,sprouted,spool,spindly,speedos,soups,soundly,soulmates,somebody'll,soliciting,solenoid,sobering,snowflakes,snowballs,snores,slung,slimming,skulk,skivvies,skewered,skewer,sizing,sistine,sidebar,sickos,shushing,shunt,shugga,shone,shol'va,sharpened,shapeshifter,shadowing,shadoe,selectman,sefelt,seared,scrounging,scribbling,scooping,scintillating,schmoozing,scallops,sapphires,sanitarium,sanded,safes,rudely,roust,rosebush,rosasharn,rondell,roadhouse,riveted,rewrote,revamp,retaliatory,reprimand,replicators,replaceable,remedied,relinquishing,rejoicing,reincarnated,reimbursed,reevaluate,redid,redefine,recreating,reconnected,rebelling,reassign,rearview,rayne,ravings,ratso,rambunctious,radiologist,quiver,quiero,queef,qualms,pyrotechnics,pulsating,psychosomatic,proverb,promiscuous,profanity,prioritize,preying,predisposition,precocious,precludes,prattling,prankster,povich,potting,postpartum,porridge,polluting,plowing,pistachio,pissin,pickpocket,physicals,peruse,pertains,personified,personalize,perjured,perfecting,pepys,pepperdine,pembry,peering,peels,pedophile,patties,passkey,paratrooper,paraphernalia,paralyzing,pandering,paltry,palpable,pagers,pachyderm,overstay,overestimated,overbite,outwit,outgrow,outbid,ooops,oomph,oohhh,oldie,obliterate,objectionable,nygma,notting,noches,nitty,nighters,newsstands,newborns,neurosurgery,nauseated,nastiest,narcolepsy,mutilate,muscled,murmur,mulva,mulling,mukada,muffled,morgues,moonbeams,monogamy,molester,molestation,molars,moans,misprint,mismatched,mirth,mindful,mimosas,millander,mescaline,menstrual,menage,mellowing,medevac,meddlesome,matey,manicures,malevolent,madmen,macaroons,lydell,lycra,lunchroom,lunching,lozenges,looped,litigious,liquidate,linoleum,lingk,limitless,limber,lilacs,ligature,liftoff,lemmiwinks,leggo,learnin,lazarre,lawyered,lactose,knelt,kenosha,kemosabe,jussy,junky,jordy,jimmies,jeriko,jakovasaur,issacs,isabela,irresponsibility,ironed,intoxication,insinuated,inherits,ingest,ingenue,inflexible,inflame,inevitability,inedible,inducement,indignant,indictments,indefensible,incomparable,incommunicado,improvising,impounded,illogical,ignoramus,hydrochloric,hydrate,hungover,humorless,humiliations,hugest,hoverdrone,hovel,hmmph,hitchhike,hibernating,henchman,helloooo,heirlooms,heartsick,headdress,hatches,harebrained,hapless,hanen,handsomer,hallows,habitual,guten,gummy,guiltier,guidebook,gstaad,gruff,griss,grieved,grata,gorignak,goosed,goofed,glowed,glitz,glimpses,glancing,gilmores,gianelli,geraniums,garroway,gangbusters,gamblers,galls,fuddy,frumpy,frowning,frothy,fro'tak,frere,fragrances,forgettin,follicles,flowery,flophouse,floatin,flirts,flings,flatfoot,fingerprinting,fingerprinted,fingering,finald,fillet,fianc,femoral,federales,fawkes,fascinates,farfel,fambly,falsified,fabricating,exterminators,expectant,excusez,excrement,excercises,evian,etins,esophageal,equivalency,equate,equalizer,entrees,enquire,endearment,empathetic,emailed,eggroll,earmuffs,dyslexic,duper,duesouth,drunker,druggie,dreadfully,dramatics,dragline,downplay,downers,dominatrix,doers,docket,docile,diversify,distracts,disloyalty,disinterested,discharging,disagreeable,dirtier,dinghy,dimwitted,dimoxinil,dimmy,diatribe,devising,deviate,detriment,desertion,depressants,depravity,deniability,delinquents,defiled,deepcore,deductive,decimate,deadbolt,dauthuille,dastardly,daiquiris,daggers,dachau,curiouser,curdled,cucamonga,cruller,cruces,crosswalk,crinkle,crescendo,cremate,counseled,couches,cornea,corday,copernicus,contrition,contemptible,constipated,conjoined,confounded,condescend,concoct,conch,compensating,committment,commandeered,comely,coddled,cockfight,cluttered,clunky,clownfish,cloaked,clenched,cleanin,civilised,circumcised,cimmeria,cilantro,chutzpah,chucking,chiseled,chicka,chattering,cervix,carrey,carpal,carnations,cappuccinos,candied,calluses,calisthenics,bushy,burners,budington,buchanans,brimming,braids,boycotting,bouncers,botticelli,botherin,bookkeeping,bogyman,bogged,bloodthirsty,blintzes,blanky,binturong,billable,bigboote,bewildered,betas,bequeath,behoove,befriend,bedpost,bedded,baudelaires,barreled,barboni,barbeque,bangin,baltus,bailout,backstabber,baccarat,awning,augie,arguillo,archway,apricots,apologising,annyong,anchorman,amenable,amazement,allspice,alannis,airfare,airbags,ahhhhhhhhh,ahhhhhhhh,ahhhhhhh,agitator,adrenal,acidosis,achoo,accessorizing,accentuate,abrasions,abductor,aaaahhh,aaaaaaaa,aaaaaaa,zeroing,zelner,zeldy,yevgeny,yeska,yellows,yeesh,yeahh,yamuri,wouldn't've,workmanship,woodsman,winnin,winked,wildness,whoring,whitewash,whiney,when're,wheezer,wheelman,wheelbarrow,westerburg,weeding,watermelons,washboard,waltzes,wafting,voulez,voluptuous,vitone,vigilantes,videotaping,viciously,vices,veruca,vermeer,verifying,vasculitis,valets,upholstered,unwavering,untold,unsympathetic,unromantic,unrecognizable,unpredictability,unmask,unleashing,unintentional,unglued,unequivocal,underrated,underfoot,unchecked,unbutton,unbind,unbiased,unagi,uhhhhh,tugging,triads,trespasses,treehorn,traviata,trappers,transplants,trannie,tramping,tracheotomy,tourniquet,tooty,toothless,tomarrow,toasters,thruster,thoughtfulness,thornwood,tengo,tenfold,telltale,telephoto,telephoned,telemarketer,tearin,tastic,tastefully,tasking,taser,tamed,tallow,taketh,taillight,tadpoles,tachibana,syringes,sweated,swarthy,swagger,surges,supermodels,superhighway,sunup,sun'll,sulfa,sugarless,sufficed,subside,strolled,stringy,strengthens,straightest,straightens,storefront,stopper,stockpiling,stimulant,stiffed,steyne,sternum,stepladder,stepbrother,steers,steelheads,steakhouse,stathis,stankylecartmankennymr,standoffish,stalwart,squirted,spritz,sprig,sprawl,spousal,sphincter,spenders,spearmint,spatter,spangled,southey,soured,sonuvabitch,somethng,snuffed,sniffs,smokescreen,smilin,slobs,sleepwalker,sleds,slays,slayage,skydiving,sketched,skanks,sixed,siphoned,siphon,simpering,sigfried,sidearm,siddons,sickie,shuteye,shuffleboard,shrubberies,shrouded,showmanship,shouldn't've,shoplift,shiatsu,sentries,sentance,sensuality,seething,secretions,searing,scuttlebutt,sculpt,scowling,scouring,scorecard,schoolers,schmucks,scepters,scaly,scalps,scaffolding,sauces,sartorius,santen,salivating,sainthood,saget,saddens,rygalski,rusting,ruination,rueland,rudabaga,rottweiler,roofies,romantics,rollerblading,roldy,roadshow,rickets,rible,rheza,revisiting,retentive,resurface,restores,respite,resounding,resorting,resists,repulse,repressing,repaying,reneged,refunds,rediscover,redecorated,reconstructive,recommitted,recollect,receptacle,reassess,reanimation,realtors,razinin,rationalization,ratatouille,rashum,rasczak,rancheros,rampler,quizzing,quips,quartered,purring,pummeling,puede,proximo,prospectus,pronouncing,prolonging,procreation,proclamations,principled,prides,preoccupation,prego,precog,prattle,pounced,potshots,potpourri,porque,pomegranates,polenta,plying,pluie,plesac,playmates,plantains,pillowcase,piddle,pickers,photocopied,philistine,perpetuate,perpetually,perilous,pawned,pausing,pauper,parter,parlez,parlay,pally,ovulation,overtake,overstate,overpowering,overpowered,overconfident,overbooked,ovaltine,outweighs,outings,ottos,orrin,orifice,orangutan,oopsy,ooooooooh,oooooo,ooohhhh,ocular,obstruct,obscenely,o'dwyer,nutjob,nunur,notifying,nostrand,nonny,nonfat,noblest,nimble,nikes,nicht,newsworthy,nestled,nearsighted,ne'er,nastier,narco,nakedness,muted,mummified,mudda,mozzarella,moxica,motivator,motility,mothafucka,mortmain,mortgaged,mores,mongers,mobbed,mitigating,mistah,misrepresented,mishke,misfortunes,misdirection,mischievous,mineshaft,millaney,microwaves,metzenbaum,mccovey,masterful,masochistic,marliston,marijawana,manya,mantumbi,malarkey,magnifique,madrona,madox,machida,m'hidi,lullabies,loveliness,lotions,looka,lompoc,litterbug,litigator,lithe,liquorice,linds,limericks,lightbulb,lewises,letch,lemec,layover,lavatory,laurels,lateness,laparotomy,laboring,kuato,kroff,krispy,krauts,knuckleheads,kitschy,kippers,kimbrow,keypad,keepsake,kebab,karloff,junket,judgemental,jointed,jezzie,jetting,jeeze,jeeter,jeesus,jeebs,janeane,jails,jackhammer,ixnay,irritates,irritability,irrevocable,irrefutable,irked,invoking,intricacies,interferon,intents,insubordinate,instructive,instinctive,inquisitive,inlay,injuns,inebriated,indignity,indecisive,incisors,incacha,inalienable,impresses,impregnate,impregnable,implosion,idolizes,hypothyroidism,hypoglycemic,huseni,humvee,huddling,honing,hobnobbing,hobnob,histrionics,histamine,hirohito,hippocratic,hindquarters,hikita,hikes,hightailed,hieroglyphics,heretofore,herbalist,hehey,hedriks,heartstrings,headmistress,headlight,hardheaded,happend,handlebars,hagitha,habla,gyroscope,guys'd,guy'd,guttersnipe,grump,growed,grovelling,groan,greenbacks,gravedigger,grating,grasshoppers,grandiose,grandest,grafted,gooood,goood,gooks,godsakes,goaded,glamorama,giveth,gingham,ghostbusters,germane,georgy,gazzo,gazelles,gargle,garbled,galgenstein,gaffe,g'day,fyarl,furnish,furies,fulfills,frowns,frowned,frighteningly,freebies,freakishly,forewarned,foreclose,forearms,fordson,fonics,flushes,flitting,flemmer,flabby,fishbowl,fidgeting,fevers,feigning,faxing,fatigued,fathoms,fatherless,fancier,fanatical,factored,eyelid,eyeglasses,expresso,expletive,expectin,excruciatingly,evidentiary,ever'thing,eurotrash,eubie,estrangement,erlich,epitome,entrap,enclose,emphysema,embers,emasculating,eighths,eardrum,dyslexia,duplicitous,dumpty,dumbledore,dufus,duddy,duchamp,drunkenness,drumlin,drowns,droid,drinky,drifts,drawbridge,dramamine,douggie,douchebag,dostoyevsky,doodling,don'tcha,domineering,doings,dogcatcher,doctoring,ditzy,dissimilar,dissecting,disparage,disliking,disintegrating,dishwalla,dishonored,dishing,disengaged,disavowed,dippy,diorama,dimmed,dilate,digitalis,diggory,dicing,diagnosing,devola,desolation,dennings,denials,deliverance,deliciously,delicacies,degenerates,degas,deflector,defile,deference,decrepit,deciphered,dawdle,dauphine,daresay,dangles,dampen,damndest,cucumbers,cucaracha,cryogenically,croaks,croaked,criticise,crisper,creepiest,creams,crackle,crackin,covertly,counterintelligence,corrosive,cordially,cops'll,convulsions,convoluted,conversing,conga,confrontational,confab,condolence,condiments,complicit,compiegne,commodus,comings,cometh,collusion,collared,cockeyed,clobber,clemonds,clarithromycin,cienega,christmasy,christmassy,chloroform,chippie,chested,cheeco,checklist,chauvinist,chandlers,chambermaid,chakras,cellophane,caveat,cataloguing,cartmanland,carples,carny,carded,caramels,cappy,caped,canvassing,callback,calibrated,calamine,buttermilk,butterfingers,bunsen,bulimia,bukatari,buildin,budged,brobich,bringer,brendell,brawling,bratty,braised,boyish,boundless,botch,boosh,bookies,bonbons,bodes,bobunk,bluntly,blossoming,bloomers,bloodstains,bloodhounds,blech,biter,biometric,bioethics,bijan,bigoted,bicep,bereaved,bellowing,belching,beholden,beached,batmobile,barcodes,barch,barbecuing,bandanna,backwater,backtrack,backdraft,augustino,atrophy,atrocity,atley,atchoo,asthmatic,assoc,armchair,arachnids,aptly,appetizing,antisocial,antagonizing,anorexia,anini,andersons,anagram,amputation,alleluia,airlock,aimless,agonized,agitate,aggravating,aerosol,acing,accomplishing,accidently,abuser,abstain,abnormally,aberration,aaaaahh,zlotys,zesty,zerzura,zapruder,zantopia,yelburton,yeess,y'knowwhati'msayin,wwhat,wussies,wrenched,would'a,worryin,wormser,wooooo,wookiee,wolchek,wishin,wiseguys,windbreaker,wiggy,wieners,wiedersehen,whoopin,whittled,wherefore,wharvey,welts,wellstone,wedges,wavered,watchit,wastebasket,wango,waken,waitressed,wacquiem,vrykolaka,voula,vitally,visualizing,viciousness,vespers,vertes,verily,vegetarians,vater,vaporize,vannacutt,vallens,ussher,urinating,upping,unwitting,untangle,untamed,unsanitary,unraveled,unopened,unisex,uninvolved,uninteresting,unintelligible,unimaginative,undeserving,undermines,undergarments,unconcerned,tyrants,typist,tykes,tybalt,twosome,twits,tutti,turndown,tularemia,tuberculoma,tsimshian,truffaut,truer,truant,trove,triumphed,tripe,trigonometry,trifled,trifecta,tribulations,tremont,tremoille,transcends,trafficker,touchin,tomfoolery,tinkered,tinfoil,tightrope,thousan,thoracotomy,thesaurus,thawing,thatta,tessio,temps,taxidermist,tator,tachycardia,t'akaya,swelco,sweetbreads,swatting,supercollider,sunbathing,summarily,suffocation,sueleen,succinct,subsided,submissive,subjecting,subbing,subatomic,stupendous,stunted,stubble,stubbed,streetwalker,strategizing,straining,straightaway,stoli,stiffer,stickup,stens,steamroller,steadwell,steadfast,stateroom,stans,sshhhh,squishing,squinting,squealed,sprouting,sprimp,spreadsheets,sprawled,spotlights,spooning,spirals,speedboat,spectacles,speakerphone,southglen,souse,soundproof,soothsayer,sommes,somethings,solidify,soars,snorted,snorkeling,snitches,sniping,snifter,sniffin,snickering,sneer,snarl,smila,slinking,slanted,slanderous,slammin,skimp,skilosh,siteid,sirloin,singe,sighing,sidekicks,sicken,showstopper,shoplifter,shimokawa,sherborne,shavadai,sharpshooters,sharking,shagged,shaddup,senorita,sesterces,sensuous,seahaven,scullery,scorcher,schotzie,schnoz,schmooze,schlep,schizo,scents,scalping,scalped,scallop,scalding,sayeth,saybrooke,sawed,savoring,sardine,sandstorm,sandalwood,salutations,sagman,s'okay,rsvp'd,rousted,rootin,romper,romanovs,rollercoaster,rolfie,robinsons,ritzy,ritualistic,ringwald,rhymed,rheingold,rewrites,revoking,reverts,retrofit,retort,retinas,respirations,reprobate,replaying,repaint,renquist,renege,relapsing,rekindled,rejuvenating,rejuvenated,reinstating,recriminations,rechecked,reassemble,rears,reamed,reacquaint,rayanne,ravish,rathole,raspail,rarest,rapists,rants,racketeer,quittin,quitters,quintessential,queremos,quellek,quelle,quasimodo,pyromaniac,puttanesca,puritanical,purer,puree,pungent,pummel,puedo,psychotherapist,prosecutorial,prosciutto,propositioning,procrastination,probationary,primping,preventative,prevails,preservatives,preachy,praetorians,practicality,powders,potus,postop,positives,poser,portolano,portokalos,poolside,poltergeists,pocketed,poach,plummeted,plucking,plimpton,playthings,plastique,plainclothes,pinpointed,pinkus,pinks,pigskin,piffle,pictionary,piccata,photocopy,phobias,perignon,perfumes,pecks,pecked,patently,passable,parasailing,paramus,papier,paintbrush,pacer,paaiint,overtures,overthink,overstayed,overrule,overestimate,overcooked,outlandish,outgrew,outdoorsy,outdo,orchestrate,oppress,opposable,oooohh,oomupwah,okeydokey,okaaay,ohashi,of'em,obscenities,oakie,o'gar,nurection,nostradamus,norther,norcom,nooch,nonsensical,nipped,nimbala,nervously,neckline,nebbleman,narwhal,nametag,n'n't,mycenae,muzak,muumuu,mumbled,mulvehill,muggings,muffet,mouthy,motivates,motaba,moocher,mongi,moley,moisturize,mohair,mocky,mmkay,mistuh,missis,misdeeds,mincemeat,miggs,miffed,methadone,messieur,menopausal,menagerie,mcgillicuddy,mayflowers,matrimonial,matick,masai,marzipan,maplewood,manzelle,mannequins,manhole,manhandle,malfunctions,madwoman,machiavelli,lynley,lynched,lurconis,lujack,lubricant,looove,loons,loofah,lonelyhearts,lollipops,lineswoman,lifers,lexter,lepner,lemony,leggy,leafy,leadeth,lazerus,lazare,lawford,languishing,lagoda,ladman,kundera,krinkle,krendler,kreigel,kowolski,knockdown,knifed,kneed,kneecap,kids'll,kennie,kenmore,keeled,kazootie,katzenmoyer,kasdan,karak,kapowski,kakistos,julyan,jockstrap,jobless,jiggly,jaunt,jarring,jabbering,irrigate,irrevocably,irrationally,ironies,invitro,intimated,intently,intentioned,intelligently,instill,instigator,instep,inopportune,innuendoes,inflate,infects,infamy,indiscretions,indiscreet,indio,indignities,indict,indecision,inconspicuous,inappropriately,impunity,impudent,impotence,implicates,implausible,imperfection,impatience,immutable,immobilize,idealist,iambic,hysterically,hyperspace,hygienist,hydraulics,hydrated,huzzah,husks,hunched,huffed,hubris,hubbub,hovercraft,houngan,hosed,horoscopes,hopelessness,hoodwinked,honorably,honeysuckle,homegirl,holiest,hippity,hildie,hieroglyphs,hexton,herein,heckle,heaping,healthilizer,headfirst,hatsue,harlot,hardwired,halothane,hairstyles,haagen,haaaaa,gutting,gummi,groundless,groaning,gristle,grills,graynamore,grabbin,goodes,goggle,glittering,glint,gleaming,glassy,girth,gimbal,giblets,gellers,geezers,geeze,garshaw,gargantuan,garfunkel,gangway,gandarium,gamut,galoshes,gallivanting,gainfully,gachnar,fusionlips,fusilli,furiously,frugal,fricking,frederika,freckling,frauds,fountainhead,forthwith,forgo,forgettable,foresight,foresaw,fondling,fondled,fondle,folksy,fluttering,fluffing,floundering,flirtatious,flexing,flatterer,flaring,fixating,finchy,figurehead,fiendish,fertilize,ferment,fending,fellahs,feelers,fascinate,fantabulous,falsify,fallopian,faithless,fairer,fainter,failings,facetious,eyepatch,exxon,extraterrestrials,extradite,extracurriculars,extinguish,expunged,expelling,exorbitant,exhilarated,exertion,exerting,excercise,everbody,evaporated,escargot,escapee,erases,epizootics,epithelials,ephrum,entanglements,enslave,engrossed,emphatic,emeralds,ember,emancipated,elevates,ejaculate,effeminate,eccentricities,easygoing,earshot,dunks,dullness,dulli,dulled,drumstick,dropper,driftwood,dregs,dreck,dreamboat,draggin,downsizing,donowitz,dominoes,diversions,distended,dissipate,disraeli,disqualify,disowned,dishwashing,disciplining,discerning,disappoints,dinged,digested,dicking,detonating,despising,depressor,depose,deport,dents,defused,deflecting,decryption,decoys,decoupage,decompress,decibel,decadence,deafening,dawning,dater,darkened,dappy,dallying,dagon,czechoslovakians,cuticles,cuteness,cupboards,culottes,cruisin,crosshairs,cronyn,criminalistics,creatively,creaming,crapping,cranny,cowed,contradicting,constipation,confining,confidences,conceiving,conceivably,concealment,compulsively,complainin,complacent,compels,communing,commode,comming,commensurate,columnists,colonoscopy,colchicine,coddling,clump,clubbed,clowning,cliffhanger,clang,cissy,choosers,choker,chiffon,channeled,chalet,cellmates,cathartic,caseload,carjack,canvass,canisters,candlestick,candlelit,camry,calzones,calitri,caldy,byline,butterball,bustier,burlap,bureaucrat,buffoons,buenas,brookline,bronzed,broiled,broda,briss,brioche,briar,breathable,brays,brassieres,boysenberry,bowline,boooo,boonies,booklets,bookish,boogeyman,boogey,bogas,boardinghouse,bluuch,blundering,bluer,blowed,blotchy,blossomed,bloodwork,bloodied,blithering,blinks,blathering,blasphemous,blacking,birdson,bings,bfmid,bfast,bettin,berkshires,benjamins,benevolence,benched,benatar,bellybutton,belabor,behooves,beddy,beaujolais,beattle,baxworth,baseless,barfing,bannish,bankrolled,banek,ballsy,ballpoint,baffling,badder,badda,bactine,backgammon,baako,aztreonam,authoritah,auctioning,arachtoids,apropos,aprons,apprised,apprehensive,anythng,antivenin,antichrist,anorexic,anoint,anguished,angioplasty,angio,amply,ampicillin,amphetamines,alternator,alcove,alabaster,airlifted,agrabah,affidavits,admonished,admonish,addled,addendum,accuser,accompli,absurdity,absolved,abrusso,abreast,aboot,abductions,abducting,aback,ababwa,aaahhhh,zorin,zinthar,zinfandel,zillions,zephyrs,zatarcs,zacks,youuu,yokels,yardstick,yammer,y'understand,wynette,wrung,wreaths,wowed,wouldn'ta,worming,wormed,workday,woodsy,woodshed,woodchuck,wojadubakowski,withering,witching,wiseass,wiretaps,wining,willoby,wiccaning,whupped,whoopi,whoomp,wholesaler,whiteness,whiner,whatchya,wharves,wenus,weirdoes,weaning,watusi,waponi,waistband,wackos,vouching,votre,vivica,viveca,vivant,vivacious,visor,visitin,visage,vicrum,vetted,ventriloquism,venison,varnsen,vaporized,vapid,vanstock,uuuuh,ushering,urologist,urination,upstart,uprooted,unsubtitled,unspoiled,unseat,unseasonably,unseal,unsatisfying,unnerve,unlikable,unleaded,uninsured,uninspired,unicycle,unhooked,unfunny,unfreezing,unflattering,unfairness,unexpressed,unending,unencumbered,unearth,undiscovered,undisciplined,understan,undershirt,underlings,underline,undercurrent,uncivilized,uncharacteristic,umpteenth,uglies,tuney,trumps,truckasaurus,trubshaw,trouser,tringle,trifling,trickster,trespassers,trespasser,traumas,trattoria,trashes,transgressions,trampling,tp'ed,toxoplasmosis,tounge,tortillas,topsy,topple,topnotch,tonsil,tions,timmuh,timithious,tilney,tighty,tightness,tightens,tidbits,ticketed,thyme,threepio,thoughtfully,thorkel,thommo,thing'll,thefts,that've,thanksgivings,tetherball,testikov,terraforming,tepid,tendonitis,tenboom,telex,teenybopper,tattered,tattaglias,tanneke,tailspin,tablecloth,swooping,swizzle,swiping,swindled,swilling,swerving,sweatshops,swaddling,swackhammer,svetkoff,supossed,superdad,sumptuous,sugary,sugai,subvert,substantiate,submersible,sublimating,subjugation,stymied,strychnine,streetlights,strassmans,stranglehold,strangeness,straddling,straddle,stowaways,stotch,stockbrokers,stifling,stepford,steerage,steena,statuary,starlets,staggeringly,ssshhh,squaw,spurt,spungeon,spritzer,sprightly,sprays,sportswear,spoonful,splittin,splitsville,speedily,specialise,spastic,sparrin,souvlaki,southie,sourpuss,soupy,soundstage,soothes,somebody'd,softest,sociopathic,socialized,snyders,snowmobiles,snowballed,snatches,smugness,smoothest,smashes,sloshed,sleight,skyrocket,skied,skewed,sixpence,sipowicz,singling,simulates,shyness,shuvanis,showoff,shortsighted,shopkeeper,shoehorn,shithouse,shirtless,shipshape,shifu,shelve,shelbyville,sheepskin,sharpens,shaquille,shanshu,servings,sequined,seizes,seashells,scrambler,scopes,schnauzer,schmo,schizoid,scampered,savagely,saudis,santas,sandovals,sanding,saleswoman,sagging,s'cuse,rutting,ruthlessly,runneth,ruffians,rubes,rosalita,rollerblades,rohypnol,roasts,roadies,ritten,rippling,ripples,rigoletto,richardo,rethought,reshoot,reserving,reseda,rescuer,reread,requisitions,repute,reprogram,replenish,repetitious,reorganizing,reinventing,reinvented,reheat,refrigerators,reenter,recruiter,recliner,rawdy,rashes,rajeski,raison,raisers,rages,quinine,questscape,queller,pygmalion,pushers,pusan,purview,pumpin,pubescent,prudes,provolone,propriety,propped,procrastinate,processional,preyed,pretrial,portent,pooling,poofy,polloi,policia,poacher,pluses,pleasuring,platitudes,plateaued,plaguing,pittance,pinheads,pincushion,pimply,pimped,piggyback,piecing,phillipe,philipse,philby,pharaohs,petyr,petitioner,peshtigo,pesaram,persnickety,perpetrate,percolating,pepto,penne,penell,pemmican,peeks,pedaling,peacemaker,pawnshop,patting,pathologically,patchouli,pasts,pasties,passin,parlors,paltrow,palamon,padlock,paddling,oversleep,overheating,overdosed,overcharge,overblown,outrageously,ornery,opportune,oooooooooh,oohhhh,ohhhhhh,ogres,odorless,obliterated,nyong,nymphomaniac,ntozake,novocain,nough,nonnie,nonissue,nodules,nightmarish,nightline,niceties,newsman,needra,nedry,necking,navour,nauseam,nauls,narim,namath,nagged,naboo,n'sync,myslexia,mutator,mustafi,musketeer,murtaugh,murderess,munching,mumsy,muley,mouseville,mortifying,morgendorffers,moola,montel,mongoloid,molestered,moldings,mocarbies,mo'ss,mixers,misrell,misnomer,misheard,mishandled,miscreant,misconceptions,miniscule,millgate,mettle,metricconverter,meteors,menorah,mengele,melding,meanness,mcgruff,mcarnold,matzoh,matted,mastectomy,massager,marveling,marooned,marmaduke,marick,manhandled,manatees,man'll,maltin,maliciously,malfeasance,malahide,maketh,makeovers,maiming,machismo,lumpectomy,lumbering,lucci,lording,lorca,lookouts,loogie,loners,loathed,lissen,lighthearted,lifer,lickin,lewen,levitation,lestercorp,lessee,lentils,legislate,legalizing,lederhosen,lawmen,lasskopf,lardner,lambeau,lamagra,ladonn,lactic,lacquer,labatier,krabappel,kooks,knickknacks,klutzy,kleynach,klendathu,kinross,kinkaid,kind'a,ketch,kesher,karikos,karenina,kanamits,junshi,jumbled,joust,jotted,jobson,jingling,jigalong,jerries,jellies,jeeps,javna,irresistable,internist,intercranial,inseminated,inquisitor,infuriate,inflating,infidelities,incessantly,incensed,incase,incapacitate,inasmuch,inaccuracies,imploding,impeding,impediments,immaturity,illegible,iditarod,icicles,ibuprofen,i'i'm,hymie,hydrolase,hunker,humps,humons,humidor,humdinger,humbling,huggin,huffing,housecleaning,hothouse,hotcakes,hosty,hootenanny,hootchie,hoosegow,honks,honeymooners,homily,homeopathic,hitchhikers,hissed,hillnigger,hexavalent,hewwo,hershe,hermey,hergott,henny,hennigans,henhouse,hemolytic,helipad,heifer,hebrews,hebbing,heaved,headlock,harrowing,harnessed,hangovers,handi,handbasket,halfrek,hacene,gyges,guys're,gundersons,gumption,gruntmaster,grubs,grossie,groped,grins,greaseball,gravesite,gratuity,granma,grandfathers,grandbaby,gradski,gracing,gossips,gooble,goners,golitsyn,gofer,godsake,goddaughter,gnats,gluing,glares,givers,ginza,gimmie,gimmee,gennero,gemme,gazpacho,gazed,gassy,gargling,gandhiji,galvanized,gallbladder,gaaah,furtive,fumigation,fucka,fronkonsteen,frills,freezin,freewald,freeloader,frailty,forger,foolhardy,fondest,fomin,followin,follicle,flotation,flopping,floodgates,flogged,flicked,flenders,fleabag,fixings,fixable,fistful,firewater,firelight,fingerbang,finalizing,fillin,filipov,fiderer,felling,feldberg,feign,faunia,fatale,farkus,fallible,faithfulness,factoring,eyeful,extramarital,exterminated,exhume,exasperated,eviscerate,estoy,esmerelda,escapades,epoxy,enticed,enthused,entendre,engrossing,endorphins,emptive,emmys,eminently,embezzler,embarressed,embarrassingly,embalmed,eludes,eling,elated,eirie,egotitis,effecting,eerily,eecom,eczema,earthy,earlobes,eally,dyeing,dwells,duvet,duncans,dulcet,droves,droppin,drools,drey'auc,downriver,domesticity,dollop,doesnt,dobler,divulged,diversionary,distancing,dispensers,disorienting,disneyworld,dismissive,disingenuous,disheveled,disfiguring,dinning,dimming,diligently,dilettante,dilation,dickensian,diaphragms,devastatingly,destabilize,desecrate,deposing,deniece,demony,delving,delicates,deigned,defraud,deflower,defibrillator,defiantly,defenceless,defacing,deconstruction,decompose,deciphering,decibels,deceptively,deceptions,decapitation,debutantes,debonair,deadlier,dawdling,davic,darwinism,darnit,darks,danke,danieljackson,dangled,cytoxan,cutout,cutlery,curveball,curfews,cummerbund,crunches,crouched,crisps,cripples,crilly,cribs,crewman,creepin,creeds,credenza,creak,crawly,crawlin,crawlers,crated,crackheads,coworker,couldn't've,corwins,coriander,copiously,convenes,contraceptives,contingencies,contaminating,conniption,condiment,concocting,comprehending,complacency,commendatore,comebacks,com'on,collarbone,colitis,coldly,coiffure,coffers,coeds,codependent,cocksucking,cockney,cockles,clutched,closeted,cloistered,cleve,cleats,clarifying,clapped,cinnabar,chunnel,chumps,cholinesterase,choirboy,chocolatey,chlamydia,chigliak,cheesie,chauvinistic,chasm,chartreuse,charo,charnier,chapil,chalked,chadway,certifiably,cellulite,celled,cavalcade,cataloging,castrated,cassio,cashews,cartouche,carnivore,carcinogens,capulet,captivated,capt'n,cancellations,campin,callate,callar,caffeinated,cadavers,cacophony,cackle,buzzes,buttoning,busload,burglaries,burbs,buona,bunions,bullheaded,buffs,bucyk,buckling,bruschetta,browbeating,broomsticks,broody,bromly,brolin,briefings,brewskies,breathalyzer,breakups,bratwurst,brania,braiding,brags,braggin,bradywood,bottomed,bossa,bordello,bookshelf,boogida,bondsman,bolder,boggles,bludgeoned,blowtorch,blotter,blips,blemish,bleaching,blainetologists,blading,blabbermouth,birdseed,bimmel,biloxi,biggly,bianchinni,betadine,berenson,belus,belloq,begets,befitting,beepers,beelzebub,beefed,bedridden,bedevere,beckons,beaded,baubles,bauble,battleground,bathrobes,basketballs,basements,barroom,barnacle,barkin,barked,baretta,bangles,bangler,banality,bambang,baltar,ballplayers,bagman,baffles,backroom,babysat,baboons,averse,audiotape,auctioneer,atten,atcha,astonishment,arugula,arroz,antihistamines,annoyances,anesthesiology,anatomically,anachronism,amiable,amaretto,allahu,alight,aimin,ailment,afterglow,affronte,advil,adrenals,actualization,acrost,ached,accursed,accoutrements,absconded,aboveboard,abetted,aargh,aaaahh,zuwicky,zolda,ziploc,zakamatak,youve,yippie,yesterdays,yella,yearns,yearnings,yearned,yawning,yalta,yahtzee,y'mean,y'are,wuthering,wreaks,worrisome,workiiing,wooooooo,wonky,womanizing,wolodarsky,wiwith,withdraws,wishy,wisht,wipers,wiper,winos,windthorne,windsurfing,windermere,wiggled,wiggen,whwhat,whodunit,whoaaa,whittling,whitesnake,whereof,wheezing,wheeze,whatd'ya,whataya,whammo,whackin,wellll,weightless,weevil,wedgies,webbing,weasly,wayside,waxes,waturi,washy,washrooms,wandell,waitaminute,waddya,waaaah,vornac,vishnoor,virulent,vindictiveness,vinceres,villier,vigeous,vestigial,ventilate,vented,venereal,veering,veered,veddy,vaslova,valosky,vailsburg,vaginas,vagas,urethra,upstaged,uploading,unwrapping,unwieldy,untapped,unsatisfied,unquenchable,unnerved,unmentionable,unlovable,unknowns,uninformed,unimpressed,unhappily,unguarded,unexplored,undergarment,undeniably,unclench,unclaimed,uncharacteristically,unbuttoned,unblemished,ululd,uhhhm,tweeze,tutsami,tushy,tuscarora,turkle,turghan,turbinium,tubers,trucoat,troxa,tropicana,triquetra,trimmers,triceps,trespassed,traya,traumatizing,transvestites,trainors,tradin,trackers,townies,tourelles,toucha,tossin,tortious,topshop,topes,tonics,tongs,tomsk,tomorrows,toiling,toddle,tizzy,tippers,timmi,thwap,thusly,ththe,thrusts,throwers,throwed,throughway,thickening,thermonuclear,thelwall,thataway,terrifically,tendons,teleportation,telepathically,telekinetic,teetering,teaspoons,tarantulas,tapas,tanned,tangling,tamales,tailors,tahitian,tactful,tachy,tablespoon,syrah,synchronicity,synch,synapses,swooning,switchman,swimsuits,sweltering,sweetly,suvolte,suslov,surfed,supposition,suppertime,supervillains,superfluous,superego,sunspots,sunning,sunless,sundress,suckah,succotash,sublevel,subbasement,studious,striping,strenuously,straights,stonewalled,stillness,stilettos,stevesy,steno,steenwyck,stargates,stammering,staedert,squiggly,squiggle,squashing,squaring,spreadsheet,spramp,spotters,sporto,spooking,splendido,spittin,spirulina,spiky,spate,spartacus,spacerun,soonest,something'll,someth,somepin,someone'll,sofas,soberly,sobered,snowmen,snowbank,snowballing,snivelling,sniffling,snakeskin,snagging,smush,smooter,smidgen,smackers,slumlord,slossum,slimmer,slighted,sleepwalk,sleazeball,skokie,skeptic,sitarides,sistah,sipped,sindell,simpletons,simony,silkwood,silks,silken,sightless,sideboard,shuttles,shrugging,shrouds,showy,shoveled,shouldn'ta,shoplifters,shitstorm,sheeny,shapetype,shaming,shallows,shackle,shabbily,shabbas,seppuku,senility,semite,semiautomatic,selznick,secretarial,sebacio,scuzzy,scummy,scrutinized,scrunchie,scribbled,scotches,scolded,scissor,schlub,scavenging,scarin,scarfing,scallions,scald,savour,savored,saute,sarcoidosis,sandbar,saluted,salish,saith,sailboats,sagittarius,sacre,saccharine,sacamano,rushdie,rumpled,rumba,rulebook,rubbers,roughage,rotisserie,rootie,roofy,roofie,romanticize,rittle,ristorante,rippin,rinsing,ringin,rincess,rickety,reveling,retest,retaliating,restorative,reston,restaurateur,reshoots,resetting,resentments,reprogramming,repossess,repartee,renzo,remore,remitting,remeber,relaxants,rejuvenate,rejections,regenerated,refocus,referrals,reeno,recycles,recrimination,reclining,recanting,reattach,reassigning,razgul,raved,rattlesnakes,rattles,rashly,raquetball,ransack,raisinettes,raheem,radisson,radishes,raban,quoth,qumari,quints,quilts,quilting,quien,quarreled,purty,purblind,punchbowl,publically,psychotics,psychopaths,psychoanalyze,pruning,provasik,protectin,propping,proportioned,prophylactic,proofed,prompter,procreate,proclivities,prioritizing,prinze,pricked,press'll,presets,prescribes,preocupe,prejudicial,prefex,preconceived,precipice,pralines,pragmatist,powerbar,pottie,pottersville,potsie,potholes,posses,posies,portkey,porterhouse,pornographers,poring,poppycock,poppers,pomponi,pokin,poitier,podiatry,pleeze,pleadings,playbook,platelets,plane'arium,placebos,place'll,pistachios,pirated,pinochle,pineapples,pinafore,pimples,piggly,piddling,picon,pickpockets,picchu,physiologically,physic,phobic,philandering,phenomenally,pheasants,pewter,petticoat,petronis,petitioning,perturbed,perpetuating,permutat,perishable,perimeters,perfumed,percocet,per'sus,pepperjack,penalize,pelting,pellet,peignoir,pedicures,peckers,pecans,pawning,paulsson,pattycake,patrolmen,patois,pathos,pasted,parishioner,parcheesi,parachuting,papayas,pantaloons,palpitations,palantine,paintballing,overtired,overstress,oversensitive,overnights,overexcited,overanxious,overachiever,outwitted,outvoted,outnumber,outlast,outlander,out've,orphey,orchestrating,openers,ooooooo,okies,ohhhhhhhhh,ohhhhhhhh,ogling,offbeat,obsessively,obeyed,o'hana,o'bannon,o'bannion,numpce,nummy,nuked,nuances,nourishing,nosedive,norbu,nomlies,nomine,nixed,nihilist,nightshift,newmeat,neglectful,neediness,needin,naphthalene,nanocytes,nanite,naivete,n'yeah,mystifying,myhnegon,mutating,musing,mulled,muggy,muerto,muckraker,muchachos,mountainside,motherless,mosquitos,morphed,mopped,moodoo,moncho,mollem,moisturiser,mohicans,mocks,mistresses,misspent,misinterpretation,miscarry,minuses,mindee,mimes,millisecond,milked,mightn't,mightier,mierzwiak,microchips,meyerling,mesmerizing,mershaw,meecrob,medicate,meddled,mckinnons,mcgewan,mcdunnough,mcats,mbien,matzah,matriarch,masturbated,masselin,martialed,marlboros,marksmanship,marinate,marchin,manicured,malnourished,malign,majorek,magnon,magnificently,macking,machiavellian,macdougal,macchiato,macaws,macanaw,m'self,lydells,lusts,lucite,lubricants,lopper,lopped,loneliest,lonelier,lomez,lojack,loath,liquefy,lippy,limps,likin,lightness,liesl,liebchen,licious,libris,libation,lhamo,leotards,leanin,laxatives,lavished,latka,lanyard,lanky,landmines,lameness,laddies,lacerated,labored,l'amour,kreskin,kovitch,kournikova,kootchy,konoss,knknow,knickety,knackety,kmart,klicks,kiwanis,kissable,kindergartners,kilter,kidnet,kid'll,kicky,kickbacks,kickback,kholokov,kewpie,kendo,katra,kareoke,kafelnikov,kabob,junjun,jumba,julep,jordie,jondy,jolson,jenoff,jawbone,janitorial,janiro,ipecac,invigorated,intruded,intros,intravenously,interruptus,interrogations,interject,interfacing,interestin,insuring,instilled,insensitivity,inscrutable,inroads,innards,inlaid,injector,ingratitude,infuriates,infra,infliction,indelicate,incubators,incrimination,inconveniencing,inconsolable,incestuous,incas,incarcerate,inbreeding,impudence,impressionists,impeached,impassioned,imipenem,idling,idiosyncrasies,icebergs,hypotensive,hydrochloride,hushed,humus,humph,hummm,hulking,hubcaps,hubald,howya,howbout,how'll,housebroken,hotwire,hotspots,hotheaded,horrace,hopsfield,honto,honkin,honeymoons,homewrecker,hombres,hollers,hollerin,hoedown,hoboes,hobbling,hobble,hoarse,hinky,highlighters,hexes,heru'ur,hernias,heppleman,hell're,heighten,heheheheheh,heheheh,hedging,heckling,heckled,heavyset,heatshield,heathens,heartthrob,headpiece,hayseed,haveo,hauls,hasten,harridan,harpoons,hardens,harcesis,harbouring,hangouts,halkein,haleh,halberstam,hairnet,hairdressers,hacky,haaaa,h'yah,gusta,gushy,gurgling,guilted,gruel,grudging,grrrrrr,grosses,groomsmen,griping,gravest,gratified,grated,goulash,goopy,goona,goodly,godliness,godawful,godamn,glycerin,glutes,glowy,globetrotters,glimpsed,glenville,glaucoma,girlscout,giraffes,gilbey,gigglepuss,ghora,gestating,gelato,geishas,gearshift,gayness,gasped,gaslighting,garretts,garba,gablyczyck,g'head,fumigating,fumbling,fudged,fuckwad,fuck're,fuchsia,fretting,freshest,frenchies,freezers,fredrica,fraziers,fraidy,foxholes,fourty,fossilized,forsake,forfeits,foreclosed,foreal,footsies,florists,flopped,floorshow,floorboard,flinching,flecks,flaubert,flatware,flatulence,flatlined,flashdance,flail,flagging,fiver,fitzy,fishsticks,finetti,finelli,finagle,filko,fieldstone,fibber,ferrini,feedin,feasting,favore,fathering,farrouhk,farmin,fairytale,fairservice,factoid,facedown,fabled,eyeballin,extortionist,exquisitely,expedited,exorcise,existentialist,execs,exculpatory,exacerbate,everthing,eventuality,evander,euphoric,euphemisms,estamos,erred,entitle,enquiries,enormity,enfants,endive,encyclopedias,emulating,embittered,effortless,ectopic,ecirc,easely,earphones,earmarks,dweller,durslar,durned,dunois,dunking,dunked,dumdum,dullard,dudleys,druthers,druggist,drossos,drooled,driveways,drippy,dreamless,drawstring,drang,drainpipe,dozing,dotes,dorkface,doorknobs,doohickey,donnatella,doncha,domicile,dokos,dobermans,dizzying,divola,ditsy,distaste,disservice,dislodged,dislodge,disinherit,disinformation,discounting,dinka,dimly,digesting,diello,diddling,dictatorships,dictators,diagnostician,devours,devilishly,detract,detoxing,detours,detente,destructs,desecrated,derris,deplore,deplete,demure,demolitions,demean,delish,delbruck,delaford,degaulle,deftly,deformity,deflate,definatly,defector,decrypted,decontamination,decapitate,decanter,dardis,dampener,damme,daddy'll,dabbling,dabbled,d'etre,d'argent,d'alene,d'agnasti,czechoslovakian,cymbal,cyberdyne,cutoffs,cuticle,curvaceous,curiousity,crowing,crowed,croutons,cropped,criminy,crescentis,crashers,cranwell,coverin,courtrooms,countenance,cosmically,cosign,corroboration,coroners,cornflakes,copperpot,copperhead,copacetic,coordsize,convulsing,consults,conjures,congenial,concealer,compactor,commercialism,cokey,cognizant,clunkers,clumsily,clucking,cloves,cloven,cloths,clothe,clods,clocking,clings,clavicle,classless,clashing,clanking,clanging,clamping,civvies,citywide,circulatory,circuited,chronisters,chromic,choos,chloroformed,chillun,cheesed,chatterbox,chaperoned,channukah,cerebellum,centerpieces,centerfold,ceecee,ccedil,cavorting,cavemen,cauterized,cauldwell,catting,caterine,cassiopeia,carves,cartwheel,carpeted,carob,caressing,carelessly,careening,capricious,capitalistic,capillaries,candidly,camaraderie,callously,calfskin,caddies,buttholes,busywork,busses,burps,burgomeister,bunkhouse,bungchow,bugler,buffets,buffed,brutish,brusque,bronchitis,bromden,brolly,broached,brewskis,brewin,brean,breadwinner,brana,bountiful,bouncin,bosoms,borgnine,bopping,bootlegs,booing,bombosity,bolting,boilerplate,bluey,blowback,blouses,bloodsuckers,bloodstained,bloat,bleeth,blackface,blackest,blackened,blacken,blackballed,blabs,blabbering,birdbrain,bipartisanship,biodegradable,biltmore,bilked,big'uns,bidet,besotted,bernheim,benegas,bendiga,belushi,bellboys,belittling,behinds,begone,bedsheets,beckoning,beaute,beaudine,beastly,beachfront,bathes,batak,baser,baseballs,barbella,bankrolling,bandaged,baerly,backlog,backin,babying,azkaban,awwwww,aviary,authorizes,austero,aunty,attics,atreus,astounded,astonish,artemus,arses,arintero,appraiser,apathetic,anybody'd,anxieties,anticlimactic,antar,anglos,angleman,anesthetist,androscoggin,andolini,andale,amway,amuck,amniocentesis,amnesiac,americano,amara,alvah,altruism,alternapalooza,alphabetize,alpaca,allus,allergist,alexandros,alaikum,akimbo,agoraphobia,agides,aggrhh,aftertaste,adoptions,adjuster,addictions,adamantium,activator,accomplishes,aberrant,aaaaargh,aaaaaaaaaaaaa,a'ight,zzzzzzz,zucchini,zookeeper,zirconia,zippers,zequiel,zellary,zeitgeist,zanuck,zagat,you'n,ylang,yes'm,yenta,yecchh,yecch,yawns,yankin,yahdah,yaaah,y'got,xeroxed,wwooww,wristwatch,wrangled,wouldst,worthiness,worshiping,wormy,wormtail,wormholes,woosh,wollsten,wolfing,woefully,wobbling,wintry,wingding,windstorm,windowtext,wiluna,wilting,wilted,willick,willenholly,wildflowers,wildebeest,whyyy,whoppers,whoaa,whizzing,whizz,whitest,whistled,whist,whinny,wheelies,whazzup,whatwhatwhaaat,whato,whatdya,what'dya,whacks,wewell,wetsuit,welluh,weeps,waylander,wavin,wassail,wasnt,warneford,warbucks,waltons,wallbanger,waiving,waitwait,vowing,voucher,vornoff,vorhees,voldemort,vivre,vittles,vindaloo,videogames,vichyssoise,vicarious,vesuvius,verguenza,ven't,velveteen,velour,velociraptor,vastness,vasectomies,vapors,vanderhof,valmont,validates,valiantly,vacuums,usurp,usernum,us'll,urinals,unyielding,unvarnished,unturned,untouchables,untangled,unsecured,unscramble,unreturned,unremarkable,unpretentious,unnerstand,unmade,unimpeachable,unfashionable,underwrite,underlining,underling,underestimates,underappreciated,uncouth,uncork,uncommonly,unclog,uncircumcised,unchallenged,uncas,unbuttoning,unapproved,unamerican,unafraid,umpteen,umhmm,uhwhy,ughuh,typewriters,twitches,twitched,twirly,twinkling,twinges,twiddling,turners,turnabout,tumblin,tryed,trowel,trousseau,trivialize,trifles,tribianni,trenchcoat,trembled,traumatize,transitory,transients,transfuse,transcribing,tranq,trampy,traipsed,trainin,trachea,traceable,touristy,toughie,toscanini,tortola,tortilla,torreon,toreador,tommorrow,tollbooth,tollans,toidy,togas,tofurkey,toddling,toddies,toasties,toadstool,to've,tingles,timin,timey,timetables,tightest,thuggee,thrusting,thrombus,throes,thrifty,thornharts,thinnest,thicket,thetas,thesulac,tethered,testaburger,tersenadine,terrif,terdlington,tepui,temping,tector,taxidermy,tastebuds,tartlets,tartabull,tar'd,tantamount,tangy,tangles,tamer,tabula,tabletops,tabithia,szechwan,synthedyne,svenjolly,svengali,survivalists,surmise,surfboards,surefire,suprise,supremacists,suppositories,superstore,supercilious,suntac,sunburned,summercliff,sullied,sugared,suckle,subtleties,substantiated,subsides,subliminal,subhuman,strowman,stroked,stroganoff,streetlight,straying,strainer,straighter,straightener,stoplight,stirrups,stewing,stereotyping,stepmommy,stephano,stashing,starshine,stairwells,squatsie,squandering,squalid,squabbling,squab,sprinkling,spreader,spongy,spokesmen,splintered,spittle,spitter,spiced,spews,spendin,spect,spearchucker,spatulas,southtown,soused,soshi,sorter,sorrowful,sooth,some'in,soliloquy,soiree,sodomized,sobriki,soaping,snows,snowcone,snitching,snitched,sneering,snausages,snaking,smoothed,smoochies,smarten,smallish,slushy,slurring,sluman,slithers,slippin,sleuthing,sleeveless,skinless,skillfully,sketchbook,skagnetti,sista,sinning,singularly,sinewy,silverlake,siguto,signorina,sieve,sidearms,shying,shunning,shtud,shrieks,shorting,shortbread,shopkeepers,shmancy,shizzit,shitheads,shitfaced,shipmates,shiftless,shelving,shedlow,shavings,shatters,sharifa,shampoos,shallots,shafter,sha'nauc,sextant,serviceable,sepsis,senores,sendin,semis,semanski,selflessly,seinfelds,seers,seeps,seductress,secaucus,sealant,scuttling,scusa,scrunched,scissorhands,schreber,schmancy,scamps,scalloped,savoir,savagery,sarong,sarnia,santangel,samool,sallow,salino,safecracker,sadism,sacrilegious,sabrini,sabath,s'aright,ruttheimer,rudest,rubbery,rousting,rotarian,roslin,roomed,romari,romanica,rolltop,rolfski,rockettes,roared,ringleader,riffing,ribcage,rewired,retrial,reting,resuscitated,restock,resale,reprogrammed,replicant,repentant,repellant,repays,repainting,renegotiating,rendez,remem,relived,relinquishes,relearn,relaxant,rekindling,rehydrate,refueled,refreshingly,refilling,reexamine,reeseman,redness,redeemable,redcoats,rectangles,recoup,reciprocated,reassessing,realy,realer,reachin,re'kali,rawlston,ravages,rappaports,ramoray,ramming,raindrops,rahesh,radials,racists,rabartu,quiches,quench,quarreling,quaintly,quadrants,putumayo,put'em,purifier,pureed,punitis,pullout,pukin,pudgy,puddings,puckering,pterodactyl,psychodrama,psats,protestations,protectee,prosaic,propositioned,proclivity,probed,printouts,prevision,pressers,preset,preposition,preempt,preemie,preconceptions,prancan,powerpuff,potties,potpie,poseur,porthole,poops,pooping,pomade,polyps,polymerized,politeness,polisher,polack,pocketknife,poatia,plebeian,playgroup,platonically,platitude,plastering,plasmapheresis,plaids,placemats,pizzazz,pintauro,pinstripes,pinpoints,pinkner,pincer,pimento,pileup,pilates,pigmen,pieeee,phrased,photocopies,phoebes,philistines,philanderer,pheromone,phasers,pfeffernuesse,pervs,perspire,personify,perservere,perplexed,perpetrating,perkiness,perjurer,periodontist,perfunctory,perdido,percodan,pentameter,pentacle,pensive,pensione,pennybaker,pennbrooke,penhall,pengin,penetti,penetrates,pegnoir,peeve,peephole,pectorals,peckin,peaky,peaksville,paxcow,paused,patted,parkishoff,parkers,pardoning,paraplegic,paraphrasing,paperers,papered,pangs,paneling,palooza,palmed,palmdale,palatable,pacify,pacified,owwwww,oversexed,overrides,overpaying,overdrawn,overcompensate,overcomes,overcharged,outmaneuver,outfoxed,oughtn't,ostentatious,oshun,orthopedist,or'derves,ophthalmologist,operagirl,oozes,oooooooh,onesie,omnis,omelets,oktoberfest,okeydoke,ofthe,ofher,obstetrical,obeys,obeah,o'henry,nyquil,nyanyanyanyah,nuttin,nutsy,nutball,nurhachi,numbskull,nullifies,nullification,nucking,nubbin,nourished,nonspecific,noing,noinch,nohoho,nobler,nitwits,newsprint,newspaperman,newscaster,neuropathy,netherworld,neediest,navasky,narcissists,napped,nafta,mache,mykonos,mutilating,mutherfucker,mutha,mutates,mutate,musn't,murchy,multitasking,mujeeb,mudslinging,muckraking,mousetrap,mourns,mournful,motherf,mostro,morphing,morphate,moralistic,moochy,mooching,monotonous,monopolize,monocle,molehill,moland,mofet,mockup,mobilizing,mmmmmmm,mitzvahs,mistreating,misstep,misjudge,misinformation,misdirected,miscarriages,miniskirt,mindwarped,minced,milquetoast,miguelito,mightily,midstream,midriff,mideast,microbe,methuselah,mesdames,mescal,men'll,memma,megaton,megara,megalomaniac,meeee,medulla,medivac,meaninglessness,mcnuggets,mccarthyism,maypole,may've,mauve,mateys,marshack,markles,marketable,mansiere,manservant,manse,manhandling,mallomars,malcontent,malaise,majesties,mainsail,mailmen,mahandra,magnolias,magnified,magev,maelstrom,machu,macado,m'boy,m'appelle,lustrous,lureen,lunges,lumped,lumberyard,lulled,luego,lucks,lubricated,loveseat,loused,lounger,loski,lorre,loora,looong,loonies,loincloth,lofts,lodgers,lobbing,loaner,livered,liqueur,ligourin,lifesaving,lifeguards,lifeblood,liaisons,let'em,lesbianism,lence,lemonlyman,legitimize,leadin,lazars,lazarro,lawyering,laugher,laudanum,latrines,lations,laters,lapels,lakefront,lahit,lafortunata,lachrymose,l'italien,kwaini,kruczynski,kramerica,kowtow,kovinsky,korsekov,kopek,knowakowski,knievel,knacks,kiowas,killington,kickball,keyworth,keymaster,kevie,keveral,kenyons,keggers,keepsakes,kechner,keaty,kavorka,karajan,kamerev,kaggs,jujyfruit,jostled,jonestown,jokey,joists,jocko,jimmied,jiggled,jests,jenzen,jenko,jellyman,jedediah,jealitosis,jaunty,jarmel,jankle,jagoff,jagielski,jackrabbits,jabbing,jabberjaw,izzat,irresponsibly,irrepressible,irregularity,irredeemable,inuvik,intuitions,intubated,intimates,interminable,interloper,intercostal,instyle,instigate,instantaneously,ining,ingrown,ingesting,infusing,infringe,infinitum,infact,inequities,indubitably,indisputable,indescribably,indentation,indefinable,incontrovertible,inconsequential,incompletes,incoherently,inclement,incidentals,inarticulate,inadequacies,imprudent,improprieties,imprison,imprinted,impressively,impostors,importante,imperious,impale,immodest,immobile,imbedded,imbecilic,illegals,idn't,hysteric,hypotenuse,hygienic,hyeah,hushpuppies,hunhh,humpback,humored,hummed,humiliates,humidifier,huggy,huggers,huckster,hotbed,hosing,hosers,horsehair,homebody,homebake,holing,holies,hoisting,hogwallop,hocks,hobbits,hoaxes,hmmmmm,hisses,hippest,hillbillies,hilarity,heurh,herniated,hermaphrodite,hennifer,hemlines,hemline,hemery,helplessness,helmsley,hellhound,heheheheh,heeey,hedda,heartbeats,heaped,healers,headstart,headsets,headlong,hawkland,havta,haulin,harvey'll,hanta,hansom,hangnail,handstand,handrail,handoff,hallucinogen,hallor,halitosis,haberdashery,gypped,guy'll,gumbel,guerillas,guava,guardrail,grunther,grunick,groppi,groomer,grodin,gripes,grinds,grifters,gretch,greevey,greasing,graveyards,grandkid,grainy,gouging,gooney,googly,goldmuff,goldenrod,goingo,godly,gobbledygook,gobbledegook,glues,gloriously,glengarry,glassware,glamor,gimmicks,giggly,giambetti,ghoulish,ghettos,ghali,gether,geriatrics,gerbils,geosynchronous,georgio,gente,gendarme,gelbman,gazillionth,gayest,gauging,gastro,gaslight,gasbag,garters,garish,garas,gantu,gangy,gangly,gangland,galling,gadda,furrowed,funnies,funkytown,fugimotto,fudging,fuckeen,frustrates,froufrou,froot,fromberge,frizzies,fritters,frightfully,friendliest,freeloading,freelancing,freakazoid,fraternization,framers,fornication,fornicating,forethought,footstool,foisting,focussing,focking,flurries,fluffed,flintstones,fledermaus,flayed,flawlessly,flatters,flashbang,flapped,fishies,firmer,fireproof,firebug,fingerpainting,finessed,findin,financials,finality,fillets,fiercest,fiefdom,fibbing,fervor,fentanyl,fenelon,fedorchuk,feckless,feathering,faucets,farewells,fantasyland,fanaticism,faltered,faggy,faberge,extorting,extorted,exterminating,exhumation,exhilaration,exhausts,exfoliate,excels,exasperating,exacting,everybody'd,evasions,espressos,esmail,errrr,erratically,eroding,ernswiler,epcot,enthralled,ensenada,enriching,enrage,enhancer,endear,encrusted,encino,empathic,embezzle,emanates,electricians,eking,egomaniacal,egging,effacing,ectoplasm,eavesdropped,dummkopf,dugray,duchaisne,drunkard,drudge,droop,droids,drips,dripped,dribbles,drazens,downy,downsize,downpour,dosages,doppelganger,dopes,doohicky,dontcha,doneghy,divining,divest,diuretics,diuretic,distrustful,disrupts,dismemberment,dismember,disinfect,disillusionment,disheartening,discourteous,discotheque,discolored,dirtiest,diphtheria,dinks,dimpled,didya,dickwad,diatribes,diathesis,diabetics,deviants,detonates,detests,detestable,detaining,despondent,desecration,derision,derailing,deputized,depressors,dependant,dentures,denominators,demur,demonology,delts,dellarte,delacour,deflated,defib,defaced,decorators,deaqon,davola,datin,darwinian,darklighters,dandelions,dampened,damaskinos,dalrimple,d'peshu,d'hoffryn,d'astier,cynics,cutesy,cutaway,curmudgeon,curdle,culpability,cuisinart,cuffing,crypts,cryptid,crunched,crumblers,crudely,crosscheck,croon,crissake,crevasse,creswood,creepo,creases,creased,creaky,cranks,crabgrass,coveralls,couple'a,coughs,coslaw,corporeal,cornucopia,cornering,corks,cordoned,coolly,coolin,cookbooks,contrite,contented,constrictor,confound,confit,confiscating,condoned,conditioners,concussions,comprendo,comers,combustible,combusted,collingswood,coldness,coitus,codicil,coasting,clydesdale,cluttering,clunker,clunk,clumsiness,clotted,clothesline,clinches,clincher,cleverness,clench,clein,cleanses,claymores,clammed,chugging,chronically,christsakes,choque,chompers,chiseling,chirpy,chirp,chinks,chingachgook,chickenpox,chickadee,chewin,chessboard,chargin,chanteuse,chandeliers,chamdo,chagrined,chaff,certs,certainties,cerreno,cerebrum,censured,cemetary,caterwauling,cataclysmic,casitas,cased,carvel,carting,carrear,carolling,carolers,carnie,cardiogram,carbuncle,capulets,canines,candaules,canape,caldecott,calamitous,cadillacs,cachet,cabeza,cabdriver,buzzards,butai,businesswomen,bungled,bumpkins,bummers,bulldoze,buffybot,bubut,bubbies,brrrrr,brownout,brouhaha,bronzing,bronchial,broiler,briskly,briefcases,bricked,breezing,breeher,breakable,breadstick,bravenet,braved,brandies,brainwaves,brainiest,braggart,bradlee,boys're,boys'll,boys'd,boutonniere,bossed,bosomy,borans,boosts,bookshelves,bookends,boneless,bombarding,bollo,boinked,boink,bluest,bluebells,bloodshot,blockhead,blockbusters,blithely,blather,blankly,bladders,blackbeard,bitte,bippy,biogenetics,bilge,bigglesworth,bicuspids,beususe,betaseron,besmirch,bernece,bereavement,bentonville,benchley,benching,bembe,bellyaching,bellhops,belie,beleaguered,behrle,beginnin,begining,beenie,beefs,beechwood,becau,beaverhausen,beakers,bazillion,baudouin,barrytown,barringtons,barneys,barbs,barbers,barbatus,bankrupted,bailiffs,backslide,baby'd,baaad,b'fore,awwwk,aways,awakes,automatics,authenticate,aught,aubyn,attired,attagirl,atrophied,asystole,astroturf,assertiveness,artichokes,arquillians,aright,archenemy,appraise,appeased,antin,anspaugh,anesthetics,anaphylactic,amscray,ambivalence,amalio,alriiight,alphabetized,alpena,alouette,allora,alliteration,allenwood,allegiances,algerians,alcerro,alastor,ahaha,agitators,aforethought,advertises,admonition,adirondacks,adenoids,acupuncturist,acula,actuarial,activators,actionable,achingly,accusers,acclimated,acclimate,absurdly,absorbent,absolvo,absolutes,absences,abdomenizer,aaaaaaaaah,aaaaaaaaaa,a'right\".split(\",\"),\n male_names: \"james,john,robert,michael,william,david,richard,charles,joseph,thomas,christopher,daniel,paul,mark,donald,george,kenneth,steven,edward,brian,ronald,anthony,kevin,jason,matthew,gary,timothy,jose,larry,jeffrey,frank,scott,eric,stephen,andrew,raymond,gregory,joshua,jerry,dennis,walter,patrick,peter,harold,douglas,henry,carl,arthur,ryan,roger,joe,juan,jack,albert,jonathan,justin,terry,gerald,keith,samuel,willie,ralph,lawrence,nicholas,roy,benjamin,bruce,brandon,adam,harry,fred,wayne,billy,steve,louis,jeremy,aaron,randy,eugene,carlos,russell,bobby,victor,ernest,phillip,todd,jesse,craig,alan,shawn,clarence,sean,philip,chris,johnny,earl,jimmy,antonio,danny,bryan,tony,luis,mike,stanley,leonard,nathan,dale,manuel,rodney,curtis,norman,marvin,vincent,glenn,jeffery,travis,jeff,chad,jacob,melvin,alfred,kyle,francis,bradley,jesus,herbert,frederick,ray,joel,edwin,don,eddie,ricky,troy,randall,barry,bernard,mario,leroy,francisco,marcus,micheal,theodore,clifford,miguel,oscar,jay,jim,tom,calvin,alex,jon,ronnie,bill,lloyd,tommy,leon,derek,darrell,jerome,floyd,leo,alvin,tim,wesley,dean,greg,jorge,dustin,pedro,derrick,dan,zachary,corey,herman,maurice,vernon,roberto,clyde,glen,hector,shane,ricardo,sam,rick,lester,brent,ramon,tyler,gilbert,gene,marc,reginald,ruben,brett,nathaniel,rafael,edgar,milton,raul,ben,cecil,duane,andre,elmer,brad,gabriel,ron,roland,jared,adrian,karl,cory,claude,erik,darryl,neil,christian,javier,fernando,clinton,ted,mathew,tyrone,darren,lonnie,lance,cody,julio,kurt,allan,clayton,hugh,max,dwayne,dwight,armando,felix,jimmie,everett,ian,ken,bob,jaime,casey,alfredo,alberto,dave,ivan,johnnie,sidney,byron,julian,isaac,clifton,willard,daryl,virgil,andy,salvador,kirk,sergio,seth,kent,terrance,rene,eduardo,terrence,enrique,freddie,stuart,fredrick,arturo,alejandro,joey,nick,luther,wendell,jeremiah,evan,julius,donnie,otis,trevor,luke,homer,gerard,doug,kenny,hubert,angelo,shaun,lyle,matt,alfonso,orlando,rex,carlton,ernesto,pablo,lorenzo,omar,wilbur,blake,horace,roderick,kerry,abraham,rickey,ira,andres,cesar,johnathan,malcolm,rudolph,damon,kelvin,rudy,preston,alton,archie,marco,pete,randolph,garry,geoffrey,jonathon,felipe,bennie,gerardo,dominic,loren,delbert,colin,guillermo,earnest,benny,noel,rodolfo,myron,edmund,salvatore,cedric,lowell,gregg,sherman,devin,sylvester,roosevelt,israel,jermaine,forrest,wilbert,leland,simon,irving,owen,rufus,woodrow,sammy,kristopher,levi,marcos,gustavo,jake,lionel,marty,gilberto,clint,nicolas,laurence,ismael,orville,drew,ervin,dewey,wilfred,josh,hugo,ignacio,caleb,tomas,sheldon,erick,frankie,darrel,rogelio,terence,alonzo,elias,bert,elbert,ramiro,conrad,noah,grady,phil,cornelius,lamar,rolando,clay,percy,bradford,merle,darin,amos,terrell,moses,irvin,saul,roman,darnell,randal,tommie,timmy,darrin,brendan,toby,van,abel,dominick,emilio,elijah,cary,domingo,aubrey,emmett,marlon,emanuel,jerald,edmond,emil,dewayne,otto,teddy,reynaldo,bret,jess,trent,humberto,emmanuel,stephan,louie,vicente,lamont,garland,micah,efrain,heath,rodger,demetrius,ethan,eldon,rocky,pierre,eli,bryce,antoine,robbie,kendall,royce,sterling,grover,elton,cleveland,dylan,chuck,damian,reuben,stan,leonardo,russel,erwin,benito,hans,monte,blaine,ernie,curt,quentin,agustin,jamal,devon,adolfo,tyson,wilfredo,bart,jarrod,vance,denis,damien,joaquin,harlan,desmond,elliot,darwin,gregorio,kermit,roscoe,esteban,anton,solomon,norbert,elvin,nolan,carey,rod,quinton,hal,brain,rob,elwood,kendrick,darius,moises,marlin,fidel,thaddeus,cliff,marcel,ali,raphael,bryon,armand,alvaro,jeffry,dane,joesph,thurman,ned,sammie,rusty,michel,monty,rory,fabian,reggie,kris,isaiah,gus,avery,loyd,diego,adolph,millard,rocco,gonzalo,derick,rodrigo,gerry,rigoberto,alphonso,rickie,noe,vern,elvis,bernardo,mauricio,hiram,donovan,basil,nickolas,scot,vince,quincy,eddy,sebastian,federico,ulysses,heriberto,donnell,denny,gavin,emery,romeo,jayson,dion,dante,clement,coy,odell,jarvis,bruno,issac,dudley,sanford,colby,carmelo,nestor,hollis,stefan,donny,linwood,beau,weldon,galen,isidro,truman,delmar,johnathon,silas,frederic,irwin,merrill,charley,marcelino,carlo,trenton,kurtis,aurelio,winfred,vito,collin,denver,leonel,emory,pasquale,mohammad,mariano,danial,landon,dirk,branden,adan,numbers,clair,buford,bernie,wilmer,emerson,zachery,jacques,errol,josue,edwardo,wilford,theron,raymundo,daren,tristan,robby,lincoln,jame,genaro,octavio,cornell,hung,arron,antony,herschel,alva,giovanni,garth,cyrus,cyril,ronny,stevie,lon,kennith,carmine,augustine,erich,chadwick,wilburn,russ,myles,jonas,mitchel,mervin,zane,jamel,lazaro,alphonse,randell,johnie,jarrett,ariel,abdul,dusty,luciano,seymour,scottie,eugenio,mohammed,arnulfo,lucien,ferdinand,thad,ezra,aldo,rubin,mitch,earle,abe,marquis,lanny,kareem,jamar,boris,isiah,emile,elmo,aron,leopoldo,everette,josef,eloy,dorian,rodrick,reinaldo,lucio,jerrod,weston,hershel,lemuel,lavern,burt,jules,gil,eliseo,ahmad,nigel,efren,antwan,alden,margarito,refugio,dino,osvaldo,les,deandre,normand,kieth,ivory,trey,norberto,napoleon,jerold,fritz,rosendo,milford,sang,deon,christoper,alfonzo,lyman,josiah,brant,wilton,rico,jamaal,dewitt,brenton,yong,olin,faustino,claudio,judson,gino,edgardo,alec,jarred,donn,trinidad,tad,porfirio,odis,lenard,chauncey,tod,mel,marcelo,kory,augustus,keven,hilario,bud,sal,orval,mauro,dannie,zachariah,olen,anibal,milo,jed,thanh,amado,lenny,tory,richie,horacio,brice,mohamed,delmer,dario,mac,jonah,jerrold,robt,hank,sung,rupert,rolland,kenton,damion,chi,antone,waldo,fredric,bradly,kip,burl,tyree,jefferey,ahmed,willy,stanford,oren,moshe,mikel,enoch,brendon,quintin,jamison,florencio,darrick,tobias,minh,hassan,giuseppe,demarcus,cletus,tyrell,lyndon,keenan,werner,theo,geraldo,columbus,chet,bertram,markus,huey,hilton,dwain,donte,tyron,omer,isaias,hipolito,fermin,chung,adalberto,jamey,teodoro,mckinley,maximo,raleigh,lawerence,abram,rashad,emmitt,daron,chong,samual,otha,miquel,eusebio,dong,domenic,darron,wilber,renato,hoyt,haywood,ezekiel,chas,florentino,elroy,clemente,arden,neville,edison,deshawn,carrol,shayne,nathanial,jordon,danilo,claud,sherwood,raymon,rayford,cristobal,ambrose,titus,hyman,felton,ezequiel,erasmo,lonny,milan,lino,jarod,herb,andreas,rhett,jude,douglass,cordell,oswaldo,ellsworth,virgilio,toney,nathanael,benedict,mose,hong,isreal,garret,fausto,arlen,zack,modesto,francesco,manual,gaylord,gaston,filiberto,deangelo,michale,granville,malik,zackary,tuan,nicky,cristopher,antione,malcom,korey,jospeh,colton,waylon,hosea,shad,santo,rudolf,rolf,renaldo,marcellus,lucius,kristofer,harland,arnoldo,rueben,leandro,kraig,jerrell,jeromy,hobert,cedrick,arlie,winford,wally,luigi,keneth,jacinto,graig,franklyn,edmundo,leif,jeramy,willian,vincenzo,shon,michal,lynwood,jere,elden,darell,broderick,alonso\".split(\",\")\n};\n\nmodule.exports = frequency_lists;\n\n//# sourceMappingURL=frequency_lists.js.map\n","// Generated by CoffeeScript 1.10.0\nvar time_estimates;\n\ntime_estimates = {\n estimate_attack_times: function(guesses) {\n var crack_times_display, crack_times_seconds, scenario, seconds;\n crack_times_seconds = {\n online_throttling_100_per_hour: guesses / (100 / 3600),\n online_no_throttling_10_per_second: guesses / 10,\n offline_slow_hashing_1e4_per_second: guesses / 1e4,\n offline_fast_hashing_1e10_per_second: guesses / 1e10\n };\n crack_times_display = {};\n for (scenario in crack_times_seconds) {\n seconds = crack_times_seconds[scenario];\n crack_times_display[scenario] = this.display_time(seconds);\n }\n return {\n crack_times_seconds: crack_times_seconds,\n crack_times_display: crack_times_display,\n score: this.guesses_to_score(guesses)\n };\n },\n guesses_to_score: function(guesses) {\n var DELTA;\n DELTA = 5;\n if (guesses < 1e3 + DELTA) {\n return 0;\n } else if (guesses < 1e6 + DELTA) {\n return 1;\n } else if (guesses < 1e8 + DELTA) {\n return 2;\n } else if (guesses < 1e10 + DELTA) {\n return 3;\n } else {\n return 4;\n }\n },\n display_time: function(seconds) {\n var base, century, day, display_num, display_str, hour, minute, month, ref, year;\n minute = 60;\n hour = minute * 60;\n day = hour * 24;\n month = day * 31;\n year = month * 12;\n century = year * 100;\n ref = seconds < 1 ? [null, 'less than a second'] : seconds < minute ? (base = Math.round(seconds), [base, base + \" second\"]) : seconds < hour ? (base = Math.round(seconds / minute), [base, base + \" minute\"]) : seconds < day ? (base = Math.round(seconds / hour), [base, base + \" hour\"]) : seconds < month ? (base = Math.round(seconds / day), [base, base + \" day\"]) : seconds < year ? (base = Math.round(seconds / month), [base, base + \" month\"]) : seconds < century ? (base = Math.round(seconds / year), [base, base + \" year\"]) : [null, 'centuries'], display_num = ref[0], display_str = ref[1];\n if ((display_num != null) && display_num !== 1) {\n display_str += 's';\n }\n return display_str;\n }\n};\n\nmodule.exports = time_estimates;\n\n//# sourceMappingURL=time_estimates.js.map\n","// Generated by CoffeeScript 1.10.0\nvar feedback, scoring;\n\nscoring = require('./scoring');\n\nfeedback = {\n default_feedback: {\n warning: '',\n suggestions: [\"Use a few words, avoid common phrases\", \"No need for symbols, digits, or uppercase letters\"]\n },\n get_feedback: function(score, sequence) {\n var extra_feedback, i, len, longest_match, match, ref;\n if (sequence.length === 0) {\n return this.default_feedback;\n }\n if (score > 2) {\n return {\n warning: '',\n suggestions: []\n };\n }\n longest_match = sequence[0];\n ref = sequence.slice(1);\n for (i = 0, len = ref.length; i < len; i++) {\n match = ref[i];\n if (match.token.length > longest_match.token.length) {\n longest_match = match;\n }\n }\n feedback = this.get_match_feedback(longest_match, sequence.length === 1);\n extra_feedback = 'Add another word or two. Uncommon words are better.';\n if (feedback != null) {\n feedback.suggestions.unshift(extra_feedback);\n if (feedback.warning == null) {\n feedback.warning = '';\n }\n } else {\n feedback = {\n warning: '',\n suggestions: [extra_feedback]\n };\n }\n return feedback;\n },\n get_match_feedback: function(match, is_sole_match) {\n var layout, warning;\n switch (match.pattern) {\n case 'dictionary':\n return this.get_dictionary_match_feedback(match, is_sole_match);\n case 'spatial':\n layout = match.graph.toUpperCase();\n warning = match.turns === 1 ? 'Straight rows of keys are easy to guess' : 'Short keyboard patterns are easy to guess';\n return {\n warning: warning,\n suggestions: ['Use a longer keyboard pattern with more turns']\n };\n case 'repeat':\n warning = match.base_token.length === 1 ? 'Repeats like \"aaa\" are easy to guess' : 'Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"';\n return {\n warning: warning,\n suggestions: ['Avoid repeated words and characters']\n };\n case 'sequence':\n return {\n warning: \"Sequences like abc or 6543 are easy to guess\",\n suggestions: ['Avoid sequences']\n };\n case 'regex':\n if (match.regex_name === 'recent_year') {\n return {\n warning: \"Recent years are easy to guess\",\n suggestions: ['Avoid recent years', 'Avoid years that are associated with you']\n };\n }\n break;\n case 'date':\n return {\n warning: \"Dates are often easy to guess\",\n suggestions: ['Avoid dates and years that are associated with you']\n };\n }\n },\n get_dictionary_match_feedback: function(match, is_sole_match) {\n var ref, result, suggestions, warning, word;\n warning = match.dictionary_name === 'passwords' ? is_sole_match && !match.l33t && !match.reversed ? match.rank <= 10 ? 'This is a top-10 common password' : match.rank <= 100 ? 'This is a top-100 common password' : 'This is a very common password' : match.guesses_log10 <= 4 ? 'This is similar to a commonly used password' : void 0 : match.dictionary_name === 'english_wikipedia' ? is_sole_match ? 'A word by itself is easy to guess' : void 0 : (ref = match.dictionary_name) === 'surnames' || ref === 'male_names' || ref === 'female_names' ? is_sole_match ? 'Names and surnames by themselves are easy to guess' : 'Common names and surnames are easy to guess' : '';\n suggestions = [];\n word = match.token;\n if (word.match(scoring.START_UPPER)) {\n suggestions.push(\"Capitalization doesn't help very much\");\n } else if (word.match(scoring.ALL_UPPER) && word.toLowerCase() !== word) {\n suggestions.push(\"All-uppercase is almost as easy to guess as all-lowercase\");\n }\n if (match.reversed && match.token.length >= 4) {\n suggestions.push(\"Reversed words aren't much harder to guess\");\n }\n if (match.l33t) {\n suggestions.push(\"Predictable substitutions like '@' instead of 'a' don't help very much\");\n }\n result = {\n warning: warning,\n suggestions: suggestions\n };\n return result;\n }\n};\n\nmodule.exports = feedback;\n\n//# sourceMappingURL=feedback.js.map\n"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/c2932262ed6106cd4535/10.js b/riot/bundles/c2932262ed6106cd4535/10.js new file mode 100644 index 0000000..54ecdbf --- /dev/null +++ b/riot/bundles/c2932262ed6106cd4535/10.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{748:function(e,t,n){"use strict";var l=c(n(61)),r=c(n(1)),i=n(2);function c(e){return e&&e.__esModule?e:{default:e}}var a=n(0),o=n(3),d=n(8);e.exports=a.createClass({displayName:"EncryptedEventDialog",propTypes:{event:r.default.object.isRequired,onFinished:r.default.func.isRequired},getInitialState:function(){return{device:null}},componentWillMount:function(){var e=this;this._unmounted=!1;var t=d.get();this.refreshDevice().then(function(n){return n||t.downloadKeys([e.props.event.getSender()],!0).then(function(){return e.refreshDevice()})}).then(function(n){e._unmounted||(e.setState({device:n}),t.on("deviceVerificationChanged",e.onDeviceVerificationChanged))},function(e){console.log("Error downloading devices",e)})},componentWillUnmount:function(){this._unmounted=!0;var e=d.get();e&&e.removeListener("deviceVerificationChanged",this.onDeviceVerificationChanged)},refreshDevice:function(){return l.default.resolve(d.get().getEventSenderDeviceInfo(this.props.event))},onDeviceVerificationChanged:function(e,t){var n=this;e==this.props.event.getSender()&&this.refreshDevice().then(function(e){n.setState({device:e})})},onKeyDown:function(e){27===e.keyCode&&(e.stopPropagation(),e.preventDefault(),this.props.onFinished(!1))},_renderDeviceInfo:function(){var e=this.state.device;if(!e)return a.createElement("i",null,(0,i._t)("unknown device"));var t=a.createElement("b",null,(0,i._t)("NOT verified"));return e.isBlocked()?t=a.createElement("b",null,(0,i._t)("Blacklisted")):e.isVerified()&&(t=(0,i._t)("verified")),a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Name")),a.createElement("td",null,e.getDisplayName())),a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Device ID")),a.createElement("td",null,a.createElement("code",null,e.deviceId))),a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Verification")),a.createElement("td",null,t)),a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Ed25519 fingerprint")),a.createElement("td",null,a.createElement("code",null,e.getFingerprint())))))},_renderEventInfo:function(){var e=this.props.event;return a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("td",null,(0,i._t)("User ID")),a.createElement("td",null,e.getSender())),a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Curve25519 identity key")),a.createElement("td",null,a.createElement("code",null,e.getSenderKey()||a.createElement("i",null,(0,i._t)("none"))))),a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Claimed Ed25519 fingerprint key")),a.createElement("td",null,a.createElement("code",null,e.getKeysClaimed().ed25519||a.createElement("i",null,(0,i._t)("none"))))),a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Algorithm")),a.createElement("td",null,e.getWireContent().algorithm||a.createElement("i",null,(0,i._t)("unencrypted")))),"m.bad.encrypted"===e.getContent().msgtype?a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Decryption error")),a.createElement("td",null,e.getContent().body)):null,a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Session ID")),a.createElement("td",null,a.createElement("code",null,e.getWireContent().session_id||a.createElement("i",null,(0,i._t)("none")))))))},render:function(){var e=o.getComponent("elements.DeviceVerifyButtons"),t=null;return this.state.device&&(t=a.createElement(e,{device:this.state.device,userId:this.props.event.getSender()})),a.createElement("div",{className:"mx_EncryptedEventDialog",onKeyDown:this.onKeyDown},a.createElement("div",{className:"mx_Dialog_title"},(0,i._t)("End-to-end encryption information")),a.createElement("div",{className:"mx_Dialog_content"},a.createElement("h4",null,(0,i._t)("Event information")),this._renderEventInfo(),a.createElement("h4",null,(0,i._t)("Sender device information")),this._renderDeviceInfo()),a.createElement("div",{className:"mx_Dialog_buttons"},a.createElement("button",{className:"mx_Dialog_primary",onClick:this.props.onFinished,autoFocus:!0},(0,i._t)("OK")),t))}})}}]); +//# sourceMappingURL=10.js.map \ No newline at end of file diff --git a/riot/bundles/c2932262ed6106cd4535/10.js.map b/riot/bundles/c2932262ed6106cd4535/10.js.map new file mode 100644 index 0000000..de81e62 --- /dev/null +++ b/riot/bundles/c2932262ed6106cd4535/10.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["node_modules/matrix-react-sdk/lib/async-components/views/dialogs/EncryptedEventDialog.js"],"names":["_promise2","_interopRequireDefault","__webpack_require__","_propTypes2","_languageHandler","obj","__esModule","default","React","sdk","MatrixClientPeg","module","exports","createClass","displayName","propTypes","event","object","isRequired","onFinished","func","getInitialState","device","componentWillMount","_this","this","_unmounted","client","get","refreshDevice","then","dev","downloadKeys","props","getSender","setState","on","onDeviceVerificationChanged","err","console","log","componentWillUnmount","removeListener","resolve","getEventSenderDeviceInfo","userId","_this2","onKeyDown","e","keyCode","stopPropagation","preventDefault","_renderDeviceInfo","state","createElement","_t","verificationStatus","isBlocked","isVerified","getDisplayName","deviceId","getFingerprint","_renderEventInfo","getSenderKey","getKeysClaimed","ed25519","getWireContent","algorithm","getContent","msgtype","body","session_id","render","DeviceVerifyButtons","getComponent","buttons","className","onClick","autoFocus"],"mappings":"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","file":"bundles/c2932262ed6106cd4535/10.js","sourcesContent":["'use strict';\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require(\"react\");\n\nvar sdk = require('../../../index');\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\");\n\nmodule.exports = React.createClass({\n displayName: 'EncryptedEventDialog',\n\n propTypes: {\n event: _propTypes2.default.object.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return { device: null };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this._unmounted = false;\n var client = MatrixClientPeg.get();\n\n // first try to load the device from our store.\n //\n this.refreshDevice().then(function (dev) {\n if (dev) {\n return dev;\n }\n\n // tell the client to try to refresh the device list for this user\n return client.downloadKeys([_this.props.event.getSender()], true).then(function () {\n return _this.refreshDevice();\n });\n }).then(function (dev) {\n if (_this._unmounted) {\n return;\n }\n\n _this.setState({ device: dev });\n client.on(\"deviceVerificationChanged\", _this.onDeviceVerificationChanged);\n }, function (err) {\n console.log(\"Error downloading devices\", err);\n });\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n var client = MatrixClientPeg.get();\n if (client) {\n client.removeListener(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n }\n },\n\n refreshDevice: function refreshDevice() {\n // Promise.resolve to handle transition from static result to promise; can be removed\n // in future\n return _promise2.default.resolve(MatrixClientPeg.get().getEventSenderDeviceInfo(this.props.event));\n },\n\n onDeviceVerificationChanged: function onDeviceVerificationChanged(userId, device) {\n var _this2 = this;\n\n if (userId == this.props.event.getSender()) {\n this.refreshDevice().then(function (dev) {\n _this2.setState({ device: dev });\n });\n }\n },\n\n onKeyDown: function onKeyDown(e) {\n if (e.keyCode === 27) {\n // escape\n e.stopPropagation();\n e.preventDefault();\n this.props.onFinished(false);\n }\n },\n\n _renderDeviceInfo: function _renderDeviceInfo() {\n var device = this.state.device;\n if (!device) {\n return React.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('unknown device')\n );\n }\n\n var verificationStatus = React.createElement(\n 'b',\n null,\n (0, _languageHandler._t)('NOT verified')\n );\n if (device.isBlocked()) {\n verificationStatus = React.createElement(\n 'b',\n null,\n (0, _languageHandler._t)('Blacklisted')\n );\n } else if (device.isVerified()) {\n verificationStatus = (0, _languageHandler._t)('verified');\n }\n\n return React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Name')\n ),\n React.createElement(\n 'td',\n null,\n device.getDisplayName()\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Device ID')\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'code',\n null,\n device.deviceId\n )\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Verification')\n ),\n React.createElement(\n 'td',\n null,\n verificationStatus\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Ed25519 fingerprint')\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'code',\n null,\n device.getFingerprint()\n )\n )\n )\n )\n );\n },\n\n _renderEventInfo: function _renderEventInfo() {\n var event = this.props.event;\n\n return React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('User ID')\n ),\n React.createElement(\n 'td',\n null,\n event.getSender()\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Curve25519 identity key')\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'code',\n null,\n event.getSenderKey() || React.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('none')\n )\n )\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Claimed Ed25519 fingerprint key')\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'code',\n null,\n event.getKeysClaimed().ed25519 || React.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('none')\n )\n )\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Algorithm')\n ),\n React.createElement(\n 'td',\n null,\n event.getWireContent().algorithm || React.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('unencrypted')\n )\n )\n ),\n event.getContent().msgtype === 'm.bad.encrypted' ? React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Decryption error')\n ),\n React.createElement(\n 'td',\n null,\n event.getContent().body\n )\n ) : null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Session ID')\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'code',\n null,\n event.getWireContent().session_id || React.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('none')\n )\n )\n )\n )\n )\n );\n },\n\n render: function render() {\n var DeviceVerifyButtons = sdk.getComponent('elements.DeviceVerifyButtons');\n\n var buttons = null;\n if (this.state.device) {\n buttons = React.createElement(DeviceVerifyButtons, { device: this.state.device,\n userId: this.props.event.getSender()\n });\n }\n\n return React.createElement(\n 'div',\n { className: 'mx_EncryptedEventDialog', onKeyDown: this.onKeyDown },\n React.createElement(\n 'div',\n { className: 'mx_Dialog_title' },\n (0, _languageHandler._t)('End-to-end encryption information')\n ),\n React.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n React.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)('Event information')\n ),\n this._renderEventInfo(),\n React.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)('Sender device information')\n ),\n this._renderDeviceInfo()\n ),\n React.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n React.createElement(\n 'button',\n { className: 'mx_Dialog_primary', onClick: this.props.onFinished, autoFocus: true },\n (0, _languageHandler._t)('OK')\n ),\n buttons\n )\n );\n }\n});\n//# sourceMappingURL=EncryptedEventDialog.js.map"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/c2932262ed6106cd4535/11.js b/riot/bundles/c2932262ed6106cd4535/11.js new file mode 100644 index 0000000..8d0741c --- /dev/null +++ b/riot/bundles/c2932262ed6106cd4535/11.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{747:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=m(a(61)),r=m(a(0)),l=m(a(1)),i=p(a(20)),s=p(a(493)),o=m(a(3)),u=a(2);function p(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}function m(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"ImportE2eKeysDialog",propTypes:{matrixClient:l.default.instanceOf(i.MatrixClient).isRequired,onFinished:l.default.func.isRequired},getInitialState:function(){return{enableSubmit:!1,phase:1,errStr:null}},componentWillMount:function(){this._unmounted=!1},componentWillUnmount:function(){this._unmounted=!0},_onFormChange:function(e){var t=this.refs.file.files||[];this.setState({enableSubmit:""!==this.refs.passphrase.value&&t.length>0})},_onFormSubmit:function(e){return e.preventDefault(),this._startImport(this.refs.file.files[0],this.refs.passphrase.value),!1},_startImport:function(e,t){var a=this;return this.setState({errStr:null,phase:2}),function(e){return new n.default(function(t,a){var n=new FileReader;n.onload=function(e){t(e.target.result)},n.onerror=a,n.readAsArrayBuffer(e)})}(e).then(function(e){return s.decryptMegolmKeyFile(e,t)}).then(function(e){return a.props.matrixClient.importRoomKeys(JSON.parse(e))}).then(function(){a.props.onFinished(!0)}).catch(function(e){if(console.error("Error importing e2e keys:",e),!a._unmounted){var t=e.friendlyText||(0,u._t)("Unknown error");a.setState({errStr:t,phase:1})}})},_onCancelClick:function(e){return e.preventDefault(),this.props.onFinished(!1),!1},render:function(){var e=o.default.getComponent("views.dialogs.BaseDialog"),t=1!==this.state.phase;return r.default.createElement(e,{className:"mx_importE2eKeysDialog",onFinished:this.props.onFinished,title:(0,u._t)("Import room keys")},r.default.createElement("form",{onSubmit:this._onFormSubmit},r.default.createElement("div",{className:"mx_Dialog_content"},r.default.createElement("p",null,(0,u._t)("This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.")),r.default.createElement("p",null,(0,u._t)("The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.")),r.default.createElement("div",{className:"error"},this.state.errStr),r.default.createElement("div",{className:"mx_E2eKeysDialog_inputTable"},r.default.createElement("div",{className:"mx_E2eKeysDialog_inputRow"},r.default.createElement("div",{className:"mx_E2eKeysDialog_inputLabel"},r.default.createElement("label",{htmlFor:"importFile"},(0,u._t)("File to import"))),r.default.createElement("div",{className:"mx_E2eKeysDialog_inputCell"},r.default.createElement("input",{ref:"file",id:"importFile",type:"file",autoFocus:!0,onChange:this._onFormChange,disabled:t}))),r.default.createElement("div",{className:"mx_E2eKeysDialog_inputRow"},r.default.createElement("div",{className:"mx_E2eKeysDialog_inputLabel"},r.default.createElement("label",{htmlFor:"passphrase"},(0,u._t)("Enter passphrase"))),r.default.createElement("div",{className:"mx_E2eKeysDialog_inputCell"},r.default.createElement("input",{ref:"passphrase",id:"passphrase",size:"64",type:"password",onChange:this._onFormChange,disabled:t}))))),r.default.createElement("div",{className:"mx_Dialog_buttons"},r.default.createElement("input",{className:"mx_Dialog_primary",type:"submit",value:(0,u._t)("Import"),disabled:!this.state.enableSubmit||t}),r.default.createElement("button",{onClick:this._onCancelClick,disabled:t},(0,u._t)("Cancel")))))}}),e.exports=t.default}}]); +//# sourceMappingURL=11.js.map \ No newline at end of file diff --git a/riot/bundles/c2932262ed6106cd4535/11.js.map b/riot/bundles/c2932262ed6106cd4535/11.js.map new file mode 100644 index 0000000..e060b97 --- /dev/null +++ b/riot/bundles/c2932262ed6106cd4535/11.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["node_modules/matrix-react-sdk/lib/async-components/views/dialogs/ImportE2eKeysDialog.js"],"names":["Object","defineProperty","exports","value","_promise2","_interopRequireDefault","__webpack_require__","_react2","_propTypes2","Matrix","_interopRequireWildcard","MegolmExportEncryption","_index2","_languageHandler","obj","__esModule","newObj","key","prototype","hasOwnProperty","call","default","createClass","displayName","propTypes","matrixClient","instanceOf","MatrixClient","isRequired","onFinished","func","getInitialState","enableSubmit","phase","errStr","componentWillMount","this","_unmounted","componentWillUnmount","_onFormChange","ev","files","refs","file","setState","passphrase","length","_onFormSubmit","preventDefault","_startImport","_this","resolve","reject","reader","FileReader","onload","e","target","result","onerror","readAsArrayBuffer","readFileAsArrayBuffer","then","arrayBuffer","decryptMegolmKeyFile","keys","props","importRoomKeys","JSON","parse","catch","console","error","msg","friendlyText","_t","_onCancelClick","render","BaseDialog","getComponent","disableForm","state","createElement","className","title","onSubmit","htmlFor","ref","id","type","autoFocus","onChange","disabled","size","onClick","module"],"mappings":"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","file":"bundles/c2932262ed6106cd4535/11.js","sourcesContent":["'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar Matrix = _interopRequireWildcard(_matrixJsSdk);\n\nvar _MegolmExportEncryption = require('../../../utils/MegolmExportEncryption');\n\nvar MegolmExportEncryption = _interopRequireWildcard(_MegolmExportEncryption);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction readFileAsArrayBuffer(file) {\n return new _promise2.default(function (resolve, reject) {\n var reader = new FileReader();\n reader.onload = function (e) {\n resolve(e.target.result);\n };\n reader.onerror = reject;\n\n reader.readAsArrayBuffer(file);\n });\n}\n\nvar PHASE_EDIT = 1;\nvar PHASE_IMPORTING = 2;\n\nexports.default = _react2.default.createClass({\n displayName: 'ImportE2eKeysDialog',\n\n propTypes: {\n matrixClient: _propTypes2.default.instanceOf(Matrix.MatrixClient).isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n enableSubmit: false,\n phase: PHASE_EDIT,\n errStr: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n _onFormChange: function _onFormChange(ev) {\n var files = this.refs.file.files || [];\n this.setState({\n enableSubmit: this.refs.passphrase.value !== \"\" && files.length > 0\n });\n },\n\n _onFormSubmit: function _onFormSubmit(ev) {\n ev.preventDefault();\n this._startImport(this.refs.file.files[0], this.refs.passphrase.value);\n return false;\n },\n\n _startImport: function _startImport(file, passphrase) {\n var _this = this;\n\n this.setState({\n errStr: null,\n phase: PHASE_IMPORTING\n });\n\n return readFileAsArrayBuffer(file).then(function (arrayBuffer) {\n return MegolmExportEncryption.decryptMegolmKeyFile(arrayBuffer, passphrase);\n }).then(function (keys) {\n return _this.props.matrixClient.importRoomKeys(JSON.parse(keys));\n }).then(function () {\n // TODO: it would probably be nice to give some feedback about what we've imported here.\n _this.props.onFinished(true);\n }).catch(function (e) {\n console.error(\"Error importing e2e keys:\", e);\n if (_this._unmounted) {\n return;\n }\n var msg = e.friendlyText || (0, _languageHandler._t)('Unknown error');\n _this.setState({\n errStr: msg,\n phase: PHASE_EDIT\n });\n });\n },\n\n _onCancelClick: function _onCancelClick(ev) {\n ev.preventDefault();\n this.props.onFinished(false);\n return false;\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n\n var disableForm = this.state.phase !== PHASE_EDIT;\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_importE2eKeysDialog',\n onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)(\"Import room keys\")\n },\n _react2.default.createElement(\n 'form',\n { onSubmit: this._onFormSubmit },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('This process allows you to import encryption keys ' + 'that you had previously exported from another Matrix ' + 'client. You will then be able to decrypt any ' + 'messages that the other client could decrypt.')\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('The export file will be protected with a passphrase. ' + 'You should enter the passphrase here, to decrypt the file.')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.errStr\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputTable' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputLabel' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'importFile' },\n (0, _languageHandler._t)(\"File to import\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputCell' },\n _react2.default.createElement('input', { ref: 'file', id: 'importFile', type: 'file',\n autoFocus: true,\n onChange: this._onFormChange,\n disabled: disableForm })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputLabel' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'passphrase' },\n (0, _languageHandler._t)(\"Enter passphrase\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputCell' },\n _react2.default.createElement('input', { ref: 'passphrase', id: 'passphrase',\n size: '64', type: 'password',\n onChange: this._onFormChange,\n disabled: disableForm })\n )\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement('input', { className: 'mx_Dialog_primary', type: 'submit', value: (0, _languageHandler._t)('Import'),\n disabled: !this.state.enableSubmit || disableForm\n }),\n _react2.default.createElement(\n 'button',\n { onClick: this._onCancelClick, disabled: disableForm },\n (0, _languageHandler._t)(\"Cancel\")\n )\n )\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=ImportE2eKeysDialog.js.map"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/c2932262ed6106cd4535/12.js b/riot/bundles/c2932262ed6106cd4535/12.js new file mode 100644 index 0000000..fc9c8c5 --- /dev/null +++ b/riot/bundles/c2932262ed6106cd4535/12.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{749:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=p(n(11)),u=p(n(4)),a=p(n(5)),i=p(n(12)),l=p(n(13)),s=p(n(0)),r=p(n(1)),d=p(n(3)),c=n(2);function p(e){return e&&e.__esModule?e:{default:e}}var f=function(e){function t(){var e,n,a,l;(0,u.default)(this,t);for(var s=arguments.length,r=Array(s),d=0;d>10),56320+(1023&a)))}return e}(f)}},f.prototype={encode:function(t,e){t=t?String(t):"",e=i(e),this._streaming||(this._encoder=new function(t){t.fatal;this.handler=function(t,e){if(e===r)return o;if(a(e,0,127))return e;var n,i;a(e,128,2047)?(n=1,i=192):a(e,2048,65535)?(n=2,i=224):a(e,65536,1114111)&&(n=3,i=240);for(var s=[(e>>6*n)+i];n>0;){var h=e>>6*(n-1);s.push(128|63&h),n-=1}return s}}(this._options)),this._streaming=Boolean(e.stream);for(var n,h=[],l=new s(function(t){for(var e=String(t),n=e.length,a=0,i=[];a57343)i.push(r);else if(56320<=r&&r<=57343)i.push(65533);else if(55296<=r&&r<=56319)if(a===n-1)i.push(65533);else{var s=t.charCodeAt(a+1);if(56320<=s&&s<=57343){var o=1023&r,h=1023&s;i.push(65536+(o<<10)+h),a+=1}else i.push(65533)}a+=1}return i}(t));!l.endOfStream()&&(n=this._encoder.handler(l,l.read()))!==o;)Array.isArray(n)?h.push.apply(h,n):h.push(n);if(!this._streaming){for(;(n=this._encoder.handler(l,l.read()))!==o;)Array.isArray(n)?h.push.apply(h,n):h.push(n);this._encoder=null}return new Uint8Array(h)}}},488:function(t,e,n){"use strict";t.exports=function(t,e,n,a){for(var i=65535&t|0,r=t>>>16&65535|0,s=0;0!==n;){n-=s=n>2e3?2e3:n;do{r=r+(i=i+e[a++]|0)|0}while(--s);i%=65521,r%=65521}return i|r<<16|0}},489:function(t,e,n){"use strict";var a=function(){for(var t,e=[],n=0;n<256;n++){t=n;for(var a=0;a<8;a++)t=1&t?3988292384^t>>>1:t>>>1;e[n]=t}return e}();t.exports=function(t,e,n,i){var r=a,s=i+n;t^=-1;for(var o=i;o>>8^r[255&(t^e[o])];return-1^t}},490:function(t,e,n){"use strict";var a=n(134),i=!0,r=!0;try{String.fromCharCode.apply(null,[0])}catch(t){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){r=!1}for(var s=new a.Buf8(256),o=0;o<256;o++)s[o]=o>=252?6:o>=248?5:o>=240?4:o>=224?3:o>=192?2:1;function h(t,e){if(e<65537&&(t.subarray&&r||!t.subarray&&i))return String.fromCharCode.apply(null,a.shrinkBuf(t,e));for(var n="",s=0;s>>6,e[s++]=128|63&n):n<65536?(e[s++]=224|n>>>12,e[s++]=128|n>>>6&63,e[s++]=128|63&n):(e[s++]=240|n>>>18,e[s++]=128|n>>>12&63,e[s++]=128|n>>>6&63,e[s++]=128|63&n);return e},e.buf2binstring=function(t){return h(t,t.length)},e.binstring2buf=function(t){for(var e=new a.Buf8(t.length),n=0,i=e.length;n4)l[a++]=65533,n+=r-1;else{for(i&=2===r?31:3===r?15:7;r>1&&n1?l[a++]=65533:i<65536?l[a++]=i:(i-=65536,l[a++]=55296|i>>10&1023,l[a++]=56320|1023&i)}return h(l,a)},e.utf8border=function(t,e){var n;for((e=e||t.length)>t.length&&(e=t.length),n=e-1;n>=0&&128==(192&t[n]);)n--;return n<0?e:0===n?e:n+s[t[n]]>e?n:e}},491:function(t,e,n){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},492:function(t,e,n){"use strict";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},496:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=_(n(17)),i=_(n(19)),r=n(9),s=_(r),o=_(n(731)),h=_(n(8)),l=_(n(83)),d=n(2),f=_(n(327)),u=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(486));function _(t){return t&&t.__esModule?t:{default:t}}var c=window.TextEncoder;function p(t,e,n){var a=s.default.defer(),i=new XMLHttpRequest;return i.open("POST",t),i.timeout=3e5,i.onreadystatechange=function(){i.readyState===XMLHttpRequest.LOADING?n((0,d._t)("Waiting for response from server")):i.readyState===XMLHttpRequest.DONE&&function(){if(i.status<200||i.status>=400)return void a.reject(new Error("HTTP "+i.status));a.resolve()}()},i.send(e),a.promise}c||(c=u.TextEncoder),e.default=function(){var t=(0,r.coroutine)(a.default.mark(function t(e,n){var s,u,_,g,w,b,m,v,k,y,x,z,B,A;return a.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(e){t.next=2;break}throw new Error("No bug report endpoint has been set.");case 2:return(s=(n=n||{}).progressCallback||function(){})((0,d._t)("Collecting app version information")),u="UNKNOWN",t.prev=6,t.next=9,(0,r.resolve)(l.default.get().getAppVersion());case 9:u=t.sent,t.next=14;break;case 12:t.prev=12,t.t0=t.catch(6);case 14:if(_="UNKNOWN",window.navigator&&window.navigator.userAgent&&(_=window.navigator.userAgent),g=h.default.get(),console.log("Sending bug report."),(w=new FormData).append("text",n.userText||"User did not supply any additional text."),w.append("app","riot-web"),w.append("version",u),w.append("user_agent",_),g&&(w.append("user_id",g.credentials.userId),w.append("device_id",g.deviceId)),!n.sendLogs){t.next=48;break}return s((0,d._t)("Collecting logs")),t.next=28,(0,r.resolve)(f.default.getLogsForReport());case 28:for(b=t.sent,m=!0,v=!1,k=void 0,t.prev=32,y=(0,i.default)(b);!(m=(x=y.next()).done);m=!0)z=x.value,B=(new c).encode(z.lines),A=o.default.gzip(B),w.append("compressed-log",new Blob([A]),z.id);t.next=40;break;case 36:t.prev=36,t.t1=t.catch(32),v=!0,k=t.t1;case 40:t.prev=40,t.prev=41,!m&&y.return&&y.return();case 43:if(t.prev=43,!v){t.next=46;break}throw k;case 46:return t.finish(43);case 47:return t.finish(40);case 48:return s((0,d._t)("Uploading report")),t.next=51,(0,r.resolve)(p(e,w,s));case 51:case"end":return t.stop()}},t,this,[[6,12],[32,36,40,48],[41,,43,47]])}));return function(e,n){return t.apply(this,arguments)}}(),t.exports=e.default},731:function(t,e,n){"use strict";var a={};(0,n(134).assign)(a,n(732),n(735),n(492)),t.exports=a},732:function(t,e,n){"use strict";var a=n(733),i=n(134),r=n(490),s=n(325),o=n(491),h=Object.prototype.toString,l=0,d=-1,f=0,u=8;function _(t){if(!(this instanceof _))return new _(t);this.options=i.assign({level:d,method:u,chunkSize:16384,windowBits:15,memLevel:8,strategy:f,to:""},t||{});var e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new o,this.strm.avail_out=0;var n=a.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(n!==l)throw new Error(s[n]);if(e.header&&a.deflateSetHeader(this.strm,e.header),e.dictionary){var c;if(c="string"==typeof e.dictionary?r.string2buf(e.dictionary):"[object ArrayBuffer]"===h.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,(n=a.deflateSetDictionary(this.strm,c))!==l)throw new Error(s[n]);this._dict_set=!0}}function c(t,e){var n=new _(e);if(n.push(t,!0),n.err)throw n.msg||s[n.err];return n.result}_.prototype.push=function(t,e){var n,s,o=this.strm,d=this.options.chunkSize;if(this.ended)return!1;s=e===~~e?e:!0===e?4:0,"string"==typeof t?o.input=r.string2buf(t):"[object ArrayBuffer]"===h.call(t)?o.input=new Uint8Array(t):o.input=t,o.next_in=0,o.avail_in=o.input.length;do{if(0===o.avail_out&&(o.output=new i.Buf8(d),o.next_out=0,o.avail_out=d),1!==(n=a.deflate(o,s))&&n!==l)return this.onEnd(n),this.ended=!0,!1;0!==o.avail_out&&(0!==o.avail_in||4!==s&&2!==s)||("string"===this.options.to?this.onData(r.buf2binstring(i.shrinkBuf(o.output,o.next_out))):this.onData(i.shrinkBuf(o.output,o.next_out)))}while((o.avail_in>0||0===o.avail_out)&&1!==n);return 4===s?(n=a.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===l):2!==s||(this.onEnd(l),o.avail_out=0,!0)},_.prototype.onData=function(t){this.chunks.push(t)},_.prototype.onEnd=function(t){t===l&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},e.Deflate=_,e.deflate=c,e.deflateRaw=function(t,e){return(e=e||{}).raw=!0,c(t,e)},e.gzip=function(t,e){return(e=e||{}).gzip=!0,c(t,e)}},733:function(t,e,n){"use strict";var a,i=n(134),r=n(734),s=n(488),o=n(489),h=n(325),l=0,d=1,f=3,u=4,_=5,c=0,p=1,g=-2,w=-3,b=-5,m=-1,v=1,k=2,y=3,x=4,z=0,B=2,A=8,S=9,E=15,O=8,Z=286,C=30,N=19,R=2*Z+1,T=15,D=3,I=258,U=I+D+1,L=32,M=42,F=69,j=73,H=91,P=103,K=113,Y=666,X=1,G=2,W=3,q=4,J=3;function V(t,e){return t.msg=h[e],e}function Q(t){return(t<<1)-(t>4?9:0)}function $(t){for(var e=t.length;--e>=0;)t[e]=0}function tt(t){var e=t.state,n=e.pending;n>t.avail_out&&(n=t.avail_out),0!==n&&(i.arraySet(t.output,e.pending_buf,e.pending_out,n,t.next_out),t.next_out+=n,e.pending_out+=n,t.total_out+=n,t.avail_out-=n,e.pending-=n,0===e.pending&&(e.pending_out=0))}function et(t,e){r._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,tt(t.strm)}function nt(t,e){t.pending_buf[t.pending++]=e}function at(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function it(t,e,n,a){var r=t.avail_in;return r>a&&(r=a),0===r?0:(t.avail_in-=r,i.arraySet(e,t.input,t.next_in,r,n),1===t.state.wrap?t.adler=s(t.adler,e,r,n):2===t.state.wrap&&(t.adler=o(t.adler,e,r,n)),t.next_in+=r,t.total_in+=r,r)}function rt(t,e){var n,a,i=t.max_chain_length,r=t.strstart,s=t.prev_length,o=t.nice_match,h=t.strstart>t.w_size-U?t.strstart-(t.w_size-U):0,l=t.window,d=t.w_mask,f=t.prev,u=t.strstart+I,_=l[r+s-1],c=l[r+s];t.prev_length>=t.good_match&&(i>>=2),o>t.lookahead&&(o=t.lookahead);do{if(l[(n=e)+s]===c&&l[n+s-1]===_&&l[n]===l[r]&&l[++n]===l[r+1]){r+=2,n++;do{}while(l[++r]===l[++n]&&l[++r]===l[++n]&&l[++r]===l[++n]&&l[++r]===l[++n]&&l[++r]===l[++n]&&l[++r]===l[++n]&&l[++r]===l[++n]&&l[++r]===l[++n]&&rs){if(t.match_start=e,s=a,a>=o)break;_=l[r+s-1],c=l[r+s]}}}while((e=f[e&d])>h&&0!=--i);return s<=t.lookahead?s:t.lookahead}function st(t){var e,n,a,r,s,o=t.w_size;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=o+(o-U)){i.arraySet(t.window,t.window,o,o,0),t.match_start-=o,t.strstart-=o,t.block_start-=o,e=n=t.hash_size;do{a=t.head[--e],t.head[e]=a>=o?a-o:0}while(--n);e=n=o;do{a=t.prev[--e],t.prev[e]=a>=o?a-o:0}while(--n);r+=o}if(0===t.strm.avail_in)break;if(n=it(t.strm,t.window,t.strstart+t.lookahead,r),t.lookahead+=n,t.lookahead+t.insert>=D)for(s=t.strstart-t.insert,t.ins_h=t.window[s],t.ins_h=(t.ins_h<=D&&(t.ins_h=(t.ins_h<=D)if(a=r._tr_tally(t,t.strstart-t.match_start,t.match_length-D),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=D){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<=D&&(t.ins_h=(t.ins_h<4096)&&(t.match_length=D-1)),t.prev_length>=D&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-D,a=r._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-D),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=i&&(t.ins_h=(t.ins_h<15&&(o=2,a-=16),r<1||r>S||n!==A||a<8||a>15||e<0||e>9||s<0||s>x)return V(t,g);8===a&&(a=9);var h=new function(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=A,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new i.Buf16(2*R),this.dyn_dtree=new i.Buf16(2*(2*C+1)),this.bl_tree=new i.Buf16(2*(2*N+1)),$(this.dyn_ltree),$(this.dyn_dtree),$(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new i.Buf16(T+1),this.heap=new i.Buf16(2*Z+1),$(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new i.Buf16(2*Z+1),$(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0};return t.state=h,h.strm=t,h.wrap=o,h.gzhead=null,h.w_bits=a,h.w_size=1<t.pending_buf_size-5&&(n=t.pending_buf_size-5);;){if(t.lookahead<=1){if(st(t),0===t.lookahead&&e===l)return X;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var a=t.block_start+n;if((0===t.strstart||t.strstart>=a)&&(t.lookahead=t.strstart-a,t.strstart=a,et(t,!1),0===t.strm.avail_out))return X;if(t.strstart-t.block_start>=t.w_size-U&&(et(t,!1),0===t.strm.avail_out))return X}return t.insert=0,e===u?(et(t,!0),0===t.strm.avail_out?W:q):(t.strstart>t.block_start&&(et(t,!1),t.strm.avail_out),X)}),new lt(4,4,8,4,ot),new lt(4,5,16,8,ot),new lt(4,6,32,32,ot),new lt(4,4,16,16,ht),new lt(8,16,32,32,ht),new lt(8,16,128,128,ht),new lt(8,32,128,256,ht),new lt(32,128,258,1024,ht),new lt(32,258,258,4096,ht)],e.deflateInit=function(t,e){return ut(t,e,A,E,O,z)},e.deflateInit2=ut,e.deflateReset=ft,e.deflateResetKeep=dt,e.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?g:(t.state.gzhead=e,c):g},e.deflate=function(t,e){var n,i,s,h;if(!t||!t.state||e>_||e<0)return t?V(t,g):g;if(i=t.state,!t.output||!t.input&&0!==t.avail_in||i.status===Y&&e!==u)return V(t,0===t.avail_out?b:g);if(i.strm=t,n=i.last_flush,i.last_flush=e,i.status===M)if(2===i.wrap)t.adler=0,nt(i,31),nt(i,139),nt(i,8),i.gzhead?(nt(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),nt(i,255&i.gzhead.time),nt(i,i.gzhead.time>>8&255),nt(i,i.gzhead.time>>16&255),nt(i,i.gzhead.time>>24&255),nt(i,9===i.level?2:i.strategy>=k||i.level<2?4:0),nt(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(nt(i,255&i.gzhead.extra.length),nt(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=o(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=F):(nt(i,0),nt(i,0),nt(i,0),nt(i,0),nt(i,0),nt(i,9===i.level?2:i.strategy>=k||i.level<2?4:0),nt(i,J),i.status=K);else{var w=A+(i.w_bits-8<<4)<<8;w|=(i.strategy>=k||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(w|=L),w+=31-w%31,i.status=K,at(i,w),0!==i.strstart&&(at(i,t.adler>>>16),at(i,65535&t.adler)),t.adler=1}if(i.status===F)if(i.gzhead.extra){for(s=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>s&&(t.adler=o(t.adler,i.pending_buf,i.pending-s,s)),tt(t),s=i.pending,i.pending!==i.pending_buf_size));)nt(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>s&&(t.adler=o(t.adler,i.pending_buf,i.pending-s,s)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=j)}else i.status=j;if(i.status===j)if(i.gzhead.name){s=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>s&&(t.adler=o(t.adler,i.pending_buf,i.pending-s,s)),tt(t),s=i.pending,i.pending===i.pending_buf_size)){h=1;break}h=i.gzindexs&&(t.adler=o(t.adler,i.pending_buf,i.pending-s,s)),0===h&&(i.gzindex=0,i.status=H)}else i.status=H;if(i.status===H)if(i.gzhead.comment){s=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>s&&(t.adler=o(t.adler,i.pending_buf,i.pending-s,s)),tt(t),s=i.pending,i.pending===i.pending_buf_size)){h=1;break}h=i.gzindexs&&(t.adler=o(t.adler,i.pending_buf,i.pending-s,s)),0===h&&(i.status=P)}else i.status=P;if(i.status===P&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&tt(t),i.pending+2<=i.pending_buf_size&&(nt(i,255&t.adler),nt(i,t.adler>>8&255),t.adler=0,i.status=K)):i.status=K),0!==i.pending){if(tt(t),0===t.avail_out)return i.last_flush=-1,c}else if(0===t.avail_in&&Q(e)<=Q(n)&&e!==u)return V(t,b);if(i.status===Y&&0!==t.avail_in)return V(t,b);if(0!==t.avail_in||0!==i.lookahead||e!==l&&i.status!==Y){var m=i.strategy===k?function(t,e){for(var n;;){if(0===t.lookahead&&(st(t),0===t.lookahead)){if(e===l)return X;break}if(t.match_length=0,n=r._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,n&&(et(t,!1),0===t.strm.avail_out))return X}return t.insert=0,e===u?(et(t,!0),0===t.strm.avail_out?W:q):t.last_lit&&(et(t,!1),0===t.strm.avail_out)?X:G}(i,e):i.strategy===y?function(t,e){for(var n,a,i,s,o=t.window;;){if(t.lookahead<=I){if(st(t),t.lookahead<=I&&e===l)return X;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=D&&t.strstart>0&&(a=o[i=t.strstart-1])===o[++i]&&a===o[++i]&&a===o[++i]){s=t.strstart+I;do{}while(a===o[++i]&&a===o[++i]&&a===o[++i]&&a===o[++i]&&a===o[++i]&&a===o[++i]&&a===o[++i]&&a===o[++i]&&it.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=D?(n=r._tr_tally(t,1,t.match_length-D),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(n=r._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),n&&(et(t,!1),0===t.strm.avail_out))return X}return t.insert=0,e===u?(et(t,!0),0===t.strm.avail_out?W:q):t.last_lit&&(et(t,!1),0===t.strm.avail_out)?X:G}(i,e):a[i.level].func(i,e);if(m!==W&&m!==q||(i.status=Y),m===X||m===W)return 0===t.avail_out&&(i.last_flush=-1),c;if(m===G&&(e===d?r._tr_align(i):e!==_&&(r._tr_stored_block(i,0,0,!1),e===f&&($(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),tt(t),0===t.avail_out))return i.last_flush=-1,c}return e!==u?c:i.wrap<=0?p:(2===i.wrap?(nt(i,255&t.adler),nt(i,t.adler>>8&255),nt(i,t.adler>>16&255),nt(i,t.adler>>24&255),nt(i,255&t.total_in),nt(i,t.total_in>>8&255),nt(i,t.total_in>>16&255),nt(i,t.total_in>>24&255)):(at(i,t.adler>>>16),at(i,65535&t.adler)),tt(t),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?c:p)},e.deflateEnd=function(t){var e;return t&&t.state?(e=t.state.status)!==M&&e!==F&&e!==j&&e!==H&&e!==P&&e!==K&&e!==Y?V(t,g):(t.state=null,e===K?V(t,w):c):g},e.deflateSetDictionary=function(t,e){var n,a,r,o,h,l,d,f,u=e.length;if(!t||!t.state)return g;if(2===(o=(n=t.state).wrap)||1===o&&n.status!==M||n.lookahead)return g;for(1===o&&(t.adler=s(t.adler,e,u,0)),n.wrap=0,u>=n.w_size&&(0===o&&($(n.head),n.strstart=0,n.block_start=0,n.insert=0),f=new i.Buf8(n.w_size),i.arraySet(f,e,u-n.w_size,n.w_size,0),e=f,u=n.w_size),h=t.avail_in,l=t.next_in,d=t.input,t.avail_in=u,t.next_in=0,t.input=e,st(n);n.lookahead>=D;){a=n.strstart,r=n.lookahead-(D-1);do{n.ins_h=(n.ins_h<=0;)t[e]=0}var l=0,d=1,f=2,u=29,_=256,c=_+1+u,p=30,g=19,w=2*c+1,b=15,m=16,v=7,k=256,y=16,x=17,z=18,B=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],A=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],S=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],E=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],O=new Array(2*(c+2));h(O);var Z=new Array(2*p);h(Z);var C=new Array(512);h(C);var N=new Array(256);h(N);var R=new Array(u);h(R);var T,D,I,U=new Array(p);function L(t,e,n,a,i){this.static_tree=t,this.extra_bits=e,this.extra_base=n,this.elems=a,this.max_length=i,this.has_stree=t&&t.length}function M(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function F(t){return t<256?C[t]:C[256+(t>>>7)]}function j(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function H(t,e,n){t.bi_valid>m-n?(t.bi_buf|=e<>m-t.bi_valid,t.bi_valid+=n-m):(t.bi_buf|=e<>>=1,n<<=1}while(--e>0);return n>>>1}function Y(t,e,n){var a,i,r=new Array(b+1),s=0;for(a=1;a<=b;a++)r[a]=s=s+n[a-1]<<1;for(i=0;i<=e;i++){var o=t[2*i+1];0!==o&&(t[2*i]=K(r[o]++,o))}}function X(t){var e;for(e=0;e8?j(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function W(t,e,n,a){var i=2*e,r=2*n;return t[i]>1;n>=1;n--)q(t,r,n);i=h;do{n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],q(t,r,1),a=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=a,r[2*i]=r[2*n]+r[2*a],t.depth[i]=(t.depth[n]>=t.depth[a]?t.depth[n]:t.depth[a])+1,r[2*n+1]=r[2*a+1]=i,t.heap[1]=i++,q(t,r,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(t,e){var n,a,i,r,s,o,h=e.dyn_tree,l=e.max_code,d=e.stat_desc.static_tree,f=e.stat_desc.has_stree,u=e.stat_desc.extra_bits,_=e.stat_desc.extra_base,c=e.stat_desc.max_length,p=0;for(r=0;r<=b;r++)t.bl_count[r]=0;for(h[2*t.heap[t.heap_max]+1]=0,n=t.heap_max+1;nc&&(r=c,p++),h[2*a+1]=r,a>l||(t.bl_count[r]++,s=0,a>=_&&(s=u[a-_]),o=h[2*a],t.opt_len+=o*(r+s),f&&(t.static_len+=o*(d[2*a+1]+s)));if(0!==p){do{for(r=c-1;0===t.bl_count[r];)r--;t.bl_count[r]--,t.bl_count[r+1]+=2,t.bl_count[c]--,p-=2}while(p>0);for(r=c;0!==r;r--)for(a=t.bl_count[r];0!==a;)(i=t.heap[--n])>l||(h[2*i+1]!==r&&(t.opt_len+=(r-h[2*i+1])*h[2*i],h[2*i+1]=r),a--)}}(t,e),Y(r,l,t.bl_count)}function Q(t,e,n){var a,i,r=-1,s=e[1],o=0,h=7,l=4;for(0===s&&(h=138,l=3),e[2*(n+1)+1]=65535,a=0;a<=n;a++)i=s,s=e[2*(a+1)+1],++o>=7;a0?(t.strm.data_type===o&&(t.strm.data_type=function(t){var e,n=4093624447;for(e=0;e<=31;e++,n>>>=1)if(1&n&&0!==t.dyn_ltree[2*e])return r;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return s;for(e=32;e<_;e++)if(0!==t.dyn_ltree[2*e])return s;return r}(t)),V(t,t.l_desc),V(t,t.d_desc),u=function(t){var e;for(Q(t,t.dyn_ltree,t.l_desc.max_code),Q(t,t.dyn_dtree,t.d_desc.max_code),V(t,t.bl_desc),e=g-1;e>=3&&0===t.bl_tree[2*E[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),h=t.opt_len+3+7>>>3,(l=t.static_len+3+7>>>3)<=h&&(h=l)):h=l=n+5,n+4<=h&&-1!==e?et(t,e,n,a):t.strategy===i||l===h?(H(t,(d<<1)+(a?1:0),3),J(t,O,Z)):(H(t,(f<<1)+(a?1:0),3),function(t,e,n,a){var i;for(H(t,e-257,5),H(t,n-1,5),H(t,a-4,4),i=0;i>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&n,t.last_lit++,0===e?t.dyn_ltree[2*n]++:(t.matches++,e--,t.dyn_ltree[2*(N[n]+_+1)]++,t.dyn_dtree[2*F(e)]++),t.last_lit===t.lit_bufsize-1},e._tr_align=function(t){H(t,d<<1,3),P(t,k,O),function(t){16===t.bi_valid?(j(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}},735:function(t,e,n){"use strict";var a=n(736),i=n(134),r=n(490),s=n(492),o=n(325),h=n(491),l=n(739),d=Object.prototype.toString;function f(t){if(!(this instanceof f))return new f(t);this.options=i.assign({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new h,this.strm.avail_out=0;var n=a.inflateInit2(this.strm,e.windowBits);if(n!==s.Z_OK)throw new Error(o[n]);this.header=new l,a.inflateGetHeader(this.strm,this.header)}function u(t,e){var n=new f(e);if(n.push(t,!0),n.err)throw n.msg||o[n.err];return n.result}f.prototype.push=function(t,e){var n,o,h,l,f,u,_=this.strm,c=this.options.chunkSize,p=this.options.dictionary,g=!1;if(this.ended)return!1;o=e===~~e?e:!0===e?s.Z_FINISH:s.Z_NO_FLUSH,"string"==typeof t?_.input=r.binstring2buf(t):"[object ArrayBuffer]"===d.call(t)?_.input=new Uint8Array(t):_.input=t,_.next_in=0,_.avail_in=_.input.length;do{if(0===_.avail_out&&(_.output=new i.Buf8(c),_.next_out=0,_.avail_out=c),(n=a.inflate(_,s.Z_NO_FLUSH))===s.Z_NEED_DICT&&p&&(u="string"==typeof p?r.string2buf(p):"[object ArrayBuffer]"===d.call(p)?new Uint8Array(p):p,n=a.inflateSetDictionary(this.strm,u)),n===s.Z_BUF_ERROR&&!0===g&&(n=s.Z_OK,g=!1),n!==s.Z_STREAM_END&&n!==s.Z_OK)return this.onEnd(n),this.ended=!0,!1;_.next_out&&(0!==_.avail_out&&n!==s.Z_STREAM_END&&(0!==_.avail_in||o!==s.Z_FINISH&&o!==s.Z_SYNC_FLUSH)||("string"===this.options.to?(h=r.utf8border(_.output,_.next_out),l=_.next_out-h,f=r.buf2string(_.output,h),_.next_out=l,_.avail_out=c-l,l&&i.arraySet(_.output,_.output,h,l,0),this.onData(f)):this.onData(i.shrinkBuf(_.output,_.next_out)))),0===_.avail_in&&0===_.avail_out&&(g=!0)}while((_.avail_in>0||0===_.avail_out)&&n!==s.Z_STREAM_END);return n===s.Z_STREAM_END&&(o=s.Z_FINISH),o===s.Z_FINISH?(n=a.inflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===s.Z_OK):o!==s.Z_SYNC_FLUSH||(this.onEnd(s.Z_OK),_.avail_out=0,!0)},f.prototype.onData=function(t){this.chunks.push(t)},f.prototype.onEnd=function(t){t===s.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},e.Inflate=f,e.inflate=u,e.inflateRaw=function(t,e){return(e=e||{}).raw=!0,u(t,e)},e.ungzip=u},736:function(t,e,n){"use strict";var a=n(134),i=n(488),r=n(489),s=n(737),o=n(738),h=0,l=1,d=2,f=4,u=5,_=6,c=0,p=1,g=2,w=-2,b=-3,m=-4,v=-5,k=8,y=1,x=2,z=3,B=4,A=5,S=6,E=7,O=8,Z=9,C=10,N=11,R=12,T=13,D=14,I=15,U=16,L=17,M=18,F=19,j=20,H=21,P=22,K=23,Y=24,X=25,G=26,W=27,q=28,J=29,V=30,Q=31,$=32,tt=852,et=592,nt=15;function at(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function it(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=y,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new a.Buf32(tt),e.distcode=e.distdyn=new a.Buf32(et),e.sane=1,e.back=-1,c):w}function rt(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,it(t)):w}function st(t,e){var n,a;return t&&t.state?(a=t.state,e<0?(n=0,e=-e):(n=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?w:(null!==a.window&&a.wbits!==e&&(a.window=null),a.wrap=n,a.wbits=e,rt(t))):w}function ot(t,e){var n,i;return t?(i=new function(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new a.Buf16(320),this.work=new a.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0},t.state=i,i.window=null,(n=st(t,e))!==c&&(t.state=null),n):w}var ht,lt,dt=!0;function ft(t){if(dt){var e;for(ht=new a.Buf32(512),lt=new a.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(o(l,t.lens,0,288,ht,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;o(d,t.lens,0,32,lt,0,t.work,{bits:5}),dt=!1}t.lencode=ht,t.lenbits=9,t.distcode=lt,t.distbits=5}function ut(t,e,n,i){var r,s=t.state;return null===s.window&&(s.wsize=1<=s.wsize?(a.arraySet(s.window,e,n-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):((r=s.wsize-s.wnext)>i&&(r=i),a.arraySet(s.window,e,n-i,r,s.wnext),(i-=r)?(a.arraySet(s.window,e,n-i,i,0),s.wnext=i,s.whave=s.wsize):(s.wnext+=r,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,n.check=r(n.check,St,2,0),ot=0,ht=0,n.mode=x;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&ot)<<8)+(ot>>8))%31){t.msg="incorrect header check",n.mode=V;break}if((15&ot)!==k){t.msg="unknown compression method",n.mode=V;break}if(ht-=4,yt=8+(15&(ot>>>=4)),0===n.wbits)n.wbits=yt;else if(yt>n.wbits){t.msg="invalid window size",n.mode=V;break}n.dmax=1<>8&1),512&n.flags&&(St[0]=255&ot,St[1]=ot>>>8&255,n.check=r(n.check,St,2,0)),ot=0,ht=0,n.mode=z;case z:for(;ht<32;){if(0===rt)break t;rt--,ot+=tt[nt++]<>>8&255,St[2]=ot>>>16&255,St[3]=ot>>>24&255,n.check=r(n.check,St,4,0)),ot=0,ht=0,n.mode=B;case B:for(;ht<16;){if(0===rt)break t;rt--,ot+=tt[nt++]<>8),512&n.flags&&(St[0]=255&ot,St[1]=ot>>>8&255,n.check=r(n.check,St,2,0)),ot=0,ht=0,n.mode=A;case A:if(1024&n.flags){for(;ht<16;){if(0===rt)break t;rt--,ot+=tt[nt++]<>>8&255,n.check=r(n.check,St,2,0)),ot=0,ht=0}else n.head&&(n.head.extra=null);n.mode=S;case S:if(1024&n.flags&&((_t=n.length)>rt&&(_t=rt),_t&&(n.head&&(yt=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),a.arraySet(n.head.extra,tt,nt,_t,yt)),512&n.flags&&(n.check=r(n.check,tt,_t,nt)),rt-=_t,nt+=_t,n.length-=_t),n.length))break t;n.length=0,n.mode=E;case E:if(2048&n.flags){if(0===rt)break t;_t=0;do{yt=tt[nt+_t++],n.head&&yt&&n.length<65536&&(n.head.name+=String.fromCharCode(yt))}while(yt&&_t>9&1,n.head.done=!0),t.adler=n.check=0,n.mode=R;break;case C:for(;ht<32;){if(0===rt)break t;rt--,ot+=tt[nt++]<>>=7&ht,ht-=7&ht,n.mode=W;break}for(;ht<3;){if(0===rt)break t;rt--,ot+=tt[nt++]<>>=1)){case 0:n.mode=D;break;case 1:if(ft(n),n.mode=j,e===_){ot>>>=2,ht-=2;break t}break;case 2:n.mode=L;break;case 3:t.msg="invalid block type",n.mode=V}ot>>>=2,ht-=2;break;case D:for(ot>>>=7&ht,ht-=7&ht;ht<32;){if(0===rt)break t;rt--,ot+=tt[nt++]<>>16^65535)){t.msg="invalid stored block lengths",n.mode=V;break}if(n.length=65535&ot,ot=0,ht=0,n.mode=I,e===_)break t;case I:n.mode=U;case U:if(_t=n.length){if(_t>rt&&(_t=rt),_t>st&&(_t=st),0===_t)break t;a.arraySet(et,tt,nt,_t,it),rt-=_t,nt+=_t,st-=_t,it+=_t,n.length-=_t;break}n.mode=R;break;case L:for(;ht<14;){if(0===rt)break t;rt--,ot+=tt[nt++]<>>=5,ht-=5,n.ndist=1+(31&ot),ot>>>=5,ht-=5,n.ncode=4+(15&ot),ot>>>=4,ht-=4,n.nlen>286||n.ndist>30){t.msg="too many length or distance symbols",n.mode=V;break}n.have=0,n.mode=M;case M:for(;n.have>>=3,ht-=3}for(;n.have<19;)n.lens[Et[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,zt={bits:n.lenbits},xt=o(h,n.lens,0,19,n.lencode,0,n.work,zt),n.lenbits=zt.bits,xt){t.msg="invalid code lengths set",n.mode=V;break}n.have=0,n.mode=F;case F:for(;n.have>>16&255,bt=65535&At,!((gt=At>>>24)<=ht);){if(0===rt)break t;rt--,ot+=tt[nt++]<>>=gt,ht-=gt,n.lens[n.have++]=bt;else{if(16===bt){for(Bt=gt+2;ht>>=gt,ht-=gt,0===n.have){t.msg="invalid bit length repeat",n.mode=V;break}yt=n.lens[n.have-1],_t=3+(3&ot),ot>>>=2,ht-=2}else if(17===bt){for(Bt=gt+3;ht>>=gt)),ot>>>=3,ht-=3}else{for(Bt=gt+7;ht>>=gt)),ot>>>=7,ht-=7}if(n.have+_t>n.nlen+n.ndist){t.msg="invalid bit length repeat",n.mode=V;break}for(;_t--;)n.lens[n.have++]=yt}}if(n.mode===V)break;if(0===n.lens[256]){t.msg="invalid code -- missing end-of-block",n.mode=V;break}if(n.lenbits=9,zt={bits:n.lenbits},xt=o(l,n.lens,0,n.nlen,n.lencode,0,n.work,zt),n.lenbits=zt.bits,xt){t.msg="invalid literal/lengths set",n.mode=V;break}if(n.distbits=6,n.distcode=n.distdyn,zt={bits:n.distbits},xt=o(d,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,zt),n.distbits=zt.bits,xt){t.msg="invalid distances set",n.mode=V;break}if(n.mode=j,e===_)break t;case j:n.mode=H;case H:if(rt>=6&&st>=258){t.next_out=it,t.avail_out=st,t.next_in=nt,t.avail_in=rt,n.hold=ot,n.bits=ht,s(t,dt),it=t.next_out,et=t.output,st=t.avail_out,nt=t.next_in,tt=t.input,rt=t.avail_in,ot=n.hold,ht=n.bits,n.mode===R&&(n.back=-1);break}for(n.back=0;wt=(At=n.lencode[ot&(1<>>16&255,bt=65535&At,!((gt=At>>>24)<=ht);){if(0===rt)break t;rt--,ot+=tt[nt++]<>mt)])>>>16&255,bt=65535&At,!(mt+(gt=At>>>24)<=ht);){if(0===rt)break t;rt--,ot+=tt[nt++]<>>=mt,ht-=mt,n.back+=mt}if(ot>>>=gt,ht-=gt,n.back+=gt,n.length=bt,0===wt){n.mode=G;break}if(32&wt){n.back=-1,n.mode=R;break}if(64&wt){t.msg="invalid literal/length code",n.mode=V;break}n.extra=15&wt,n.mode=P;case P:if(n.extra){for(Bt=n.extra;ht>>=n.extra,ht-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=K;case K:for(;wt=(At=n.distcode[ot&(1<>>16&255,bt=65535&At,!((gt=At>>>24)<=ht);){if(0===rt)break t;rt--,ot+=tt[nt++]<>mt)])>>>16&255,bt=65535&At,!(mt+(gt=At>>>24)<=ht);){if(0===rt)break t;rt--,ot+=tt[nt++]<>>=mt,ht-=mt,n.back+=mt}if(ot>>>=gt,ht-=gt,n.back+=gt,64&wt){t.msg="invalid distance code",n.mode=V;break}n.offset=bt,n.extra=15&wt,n.mode=Y;case Y:if(n.extra){for(Bt=n.extra;ht>>=n.extra,ht-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){t.msg="invalid distance too far back",n.mode=V;break}n.mode=X;case X:if(0===st)break t;if(_t=dt-st,n.offset>_t){if((_t=n.offset-_t)>n.whave&&n.sane){t.msg="invalid distance too far back",n.mode=V;break}_t>n.wnext?(_t-=n.wnext,ct=n.wsize-_t):ct=n.wnext-_t,_t>n.length&&(_t=n.length),pt=n.window}else pt=et,ct=it-n.offset,_t=n.length;_t>st&&(_t=st),st-=_t,n.length-=_t;do{et[it++]=pt[ct++]}while(--_t);0===n.length&&(n.mode=H);break;case G:if(0===st)break t;et[it++]=n.length,st--,n.mode=H;break;case W:if(n.wrap){for(;ht<32;){if(0===rt)break t;rt--,ot|=tt[nt++]<>>=v=m>>>24,c-=v,0===(v=m>>>16&255))A[r++]=65535&m;else{if(!(16&v)){if(0==(64&v)){m=p[(65535&m)+(_&(1<>>=v,c-=v),c<15&&(_+=B[a++]<>>=v=m>>>24,c-=v,!(16&(v=m>>>16&255))){if(0==(64&v)){m=g[(65535&m)+(_&(1<h){t.msg="invalid distance too far back",n.mode=30;break t}if(_>>>=v,c-=v,y>(v=r-s)){if((v=y-v)>d&&n.sane){t.msg="invalid distance too far back",n.mode=30;break t}if(x=0,z=u,0===f){if(x+=l-v,v2;)A[r++]=z[x++],A[r++]=z[x++],A[r++]=z[x++],k-=3;k&&(A[r++]=z[x++],k>1&&(A[r++]=z[x++]))}else{x=r-y;do{A[r++]=A[x++],A[r++]=A[x++],A[r++]=A[x++],k-=3}while(k>2);k&&(A[r++]=A[x++],k>1&&(A[r++]=A[x++]))}break}}break}}while(a>3,_&=(1<<(c-=k<<3))-1,t.next_in=a,t.next_out=r,t.avail_in=a=1&&0===D[A];A--);if(S>A&&(S=A),0===A)return l[d++]=20971520,l[d++]=20971520,u.bits=1,0;for(B=1;B0&&(0===t||1!==A))return-1;for(I[1]=0,x=1;x<15;x++)I[x+1]=I[x]+D[x];for(z=0;z852||2===t&&C>592)return 1;for(;;){m=x-O,f[z]b?(v=U[L+f[z]],k=R[T+f[z]]):(v=96,k=0),_=1<>O)+(c-=_)]=m<<24|v<<16|k|0}while(0!==c);for(_=1<>=1;if(0!==_?(N&=_-1,N+=_):N=0,z++,0==--D[x]){if(x===A)break;x=e[n+f[z]]}if(x>S&&(N&g)!==p){for(0===O&&(O=S),w+=B,Z=1<<(E=x-O);E+O852||2===t&&C>592)return 1;l[p=N&g]=S<<24|E<<16|w-d|0}}return 0!==N&&(l[w+N]=x-O<<24|64<<16|0),u.bits=S,0}},739:function(t,e,n){"use strict";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}}}]); +//# sourceMappingURL=3.js.map \ No newline at end of file diff --git a/riot/bundles/c2932262ed6106cd4535/3.js.map b/riot/bundles/c2932262ed6106cd4535/3.js.map new file mode 100644 index 0000000..2b44bee --- /dev/null +++ b/riot/bundles/c2932262ed6106cd4535/3.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["node_modules/pako/lib/utils/common.js","node_modules/pako/lib/zlib/messages.js","node_modules/text-encoding-utf-8/lib/encoding.lib.mjs","node_modules/pako/lib/zlib/adler32.js","node_modules/pako/lib/zlib/crc32.js","node_modules/pako/lib/utils/strings.js","node_modules/pako/lib/zlib/zstream.js","node_modules/pako/lib/zlib/constants.js","node_modules/matrix-react-sdk/lib/rageshake/submit-rageshake.js","node_modules/pako/index.js","node_modules/pako/lib/deflate.js","node_modules/pako/lib/zlib/deflate.js","node_modules/pako/lib/zlib/trees.js","node_modules/pako/lib/inflate.js","node_modules/pako/lib/zlib/inflate.js","node_modules/pako/lib/zlib/inffast.js","node_modules/pako/lib/zlib/inftrees.js","node_modules/pako/lib/zlib/gzheader.js"],"names":["TYPED_OK","Uint8Array","Uint16Array","Int32Array","_has","obj","key","Object","prototype","hasOwnProperty","call","exports","assign","sources","Array","slice","arguments","length","source","shift","TypeError","p","shrinkBuf","buf","size","subarray","fnTyped","arraySet","dest","src","src_offs","len","dest_offs","set","i","flattenChunks","chunks","l","pos","chunk","result","fnUntyped","concat","apply","setTyped","on","Buf8","Buf16","Buf32","module","2","1","0","-1","-2","-3","-4","-5","-6","inRange","a","min","max","ToDictionary","o","undefined","__webpack_require__","r","__webpack_exports__","d","TextEncoder","TextDecoder","end_of_stream","Stream","tokens","this","endOfStream","read","prepend","token","isArray","unshift","pop","push","finished","decoderError","fatal","opt_code_point","DEFAULT_ENCODING","encoding","options","String","toLowerCase","Error","_streaming","_BOMseen","_decoder","_fatal","Boolean","_ignoreBOM","defineProperty","value","_encoder","_options","decode","input","bytes","ArrayBuffer","buffer","byteOffset","byteLength","utf8_code_point","utf8_bytes_seen","utf8_bytes_needed","utf8_lower_boundary","utf8_upper_boundary","handler","stream","bite","code_point","input_stream","code_points","indexOf","s","cp","fromCharCode","codePointsToString","encode","opt_string","count","offset","temp","string","n","u","c","charCodeAt","b","stringToCodePoints","adler","s1","s2","crcTable","table","k","makeTable","crc","t","end","utils","STR_APPLY_OK","STR_APPLY_UIA_OK","__","_utf8len","q","buf2binstring","string2buf","str","c2","m_pos","str_len","buf_len","binstring2buf","buf2string","out","c_len","utf16buf","utf8border","next_in","avail_in","total_in","output","next_out","avail_out","total_out","msg","state","data_type","Z_NO_FLUSH","Z_PARTIAL_FLUSH","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_FINISH","Z_BLOCK","Z_TREES","Z_OK","Z_STREAM_END","Z_NEED_DICT","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_BUF_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","_regenerator2","_interopRequireDefault","_getIterator3","_bluebird","_bluebird2","_pako2","_MatrixClientPeg2","_PlatformPeg2","_languageHandler","_rageshake2","TextEncodingUtf8","__esModule","newObj","default","_interopRequireWildcard","window","_submitReport","endpoint","body","progressCallback","deferred","defer","req","XMLHttpRequest","open","timeout","onreadystatechange","readyState","LOADING","_t","DONE","status","reject","resolve","on_done","send","promise","_ref","coroutine","mark","_callee","bugReportEndpoint","opts","version","userAgent","client","logs","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","_step","entry","compressed","wrap","_context","prev","next","get","getAppVersion","sent","t0","navigator","console","log","FormData","append","userText","credentials","userId","deviceId","sendLogs","getLogsForReport","done","lines","gzip","Blob","id","t1","return","finish","stop","_x","_x2","pako","zlib_deflate","strings","ZStream","toString","Deflate","level","method","chunkSize","windowBits","memLevel","strategy","to","opt","raw","err","ended","strm","deflateInit2","header","deflateSetHeader","dictionary","dict","deflateSetDictionary","_dict_set","deflate","deflator","data","mode","_mode","onEnd","onData","deflateEnd","join","deflateRaw","configuration_table","trees","adler32","crc32","MAX_MEM_LEVEL","MAX_WBITS","DEF_MEM_LEVEL","L_CODES","LITERALS","D_CODES","BL_CODES","HEAP_SIZE","MAX_BITS","MIN_MATCH","MAX_MATCH","MIN_LOOKAHEAD","PRESET_DICT","INIT_STATE","EXTRA_STATE","NAME_STATE","COMMENT_STATE","HCRC_STATE","BUSY_STATE","FINISH_STATE","BS_NEED_MORE","BS_BLOCK_DONE","BS_FINISH_STARTED","BS_FINISH_DONE","OS_CODE","errorCode","rank","f","zero","flush_pending","pending","pending_buf","pending_out","flush_block_only","last","_tr_flush_block","block_start","strstart","put_byte","putShortMSB","read_buf","start","longest_match","cur_match","match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","limit","w_size","_win","wmask","w_mask","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","m","more","_w_size","window_size","hash_size","head","insert","ins_h","hash_shift","hash_mask","deflate_fast","flush","hash_head","bflush","match_length","_tr_tally","max_lazy_match","last_lit","deflate_slow","max_insert","prev_match","match_available","Config","good_length","max_lazy","nice_length","max_chain","func","deflateResetKeep","last_flush","_tr_init","deflateReset","ret","lm_init","pending_buf_size","gzhead","gzindex","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","max_block_size","max_start","deflateInit","old_flush","beg","val","text","hcrc","extra","name","comment","time","os","bstate","deflate_huff","deflate_rle","_tr_align","_tr_stored_block","avail","tmpDict","dictLength","deflateInfo","STORED_BLOCK","STATIC_TREES","DYN_TREES","LENGTH_CODES","Buf_size","MAX_BL_BITS","END_BLOCK","REP_3_6","REPZ_3_10","REPZ_11_138","extra_lbits","extra_dbits","extra_blbits","bl_order","static_ltree","static_dtree","_dist_code","_length_code","base_length","static_l_desc","static_d_desc","static_bl_desc","base_dist","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","dist","put_short","w","send_bits","send_code","tree","bi_reverse","code","res","gen_codes","bits","next_code","init_block","bi_windup","smaller","_n2","_m2","pqdownheap","v","j","compress_block","ltree","dtree","lc","lx","build_tree","desc","node","stree","h","xbits","base","overflow","gen_bitlen","scan_tree","curlen","prevlen","nextlen","max_count","min_count","send_tree","static_init_done","stored_len","copy_block","tr_static_init","opt_lenb","static_lenb","max_blindex","black_mask","detect_data_type","build_bl_tree","lcodes","dcodes","blcodes","send_all_trees","bi_flush","zlib_inflate","GZheader","Inflate","inflateInit2","inflateGetHeader","inflate","inflator","next_out_utf8","tail","utf8str","allowBufError","inflateSetDictionary","inflateEnd","inflateRaw","ungzip","inflate_fast","inflate_table","CODES","LENS","DISTS","Z_MEM_ERROR","HEAD","FLAGS","TIME","OS","EXLEN","EXTRA","NAME","COMMENT","HCRC","DICTID","DICT","TYPE","TYPEDO","STORED","COPY_","COPY","TABLE","LENLENS","CODELENS","LEN_","LEN","LENEXT","DIST","DISTEXT","MATCH","LIT","CHECK","LENGTH","BAD","MEM","SYNC","ENOUGH_LENS","ENOUGH_DISTS","DEF_WBITS","zswap32","inflateResetKeep","total","havedict","dmax","hold","lencode","lendyn","distcode","distdyn","sane","back","inflateReset","wsize","whave","wnext","inflateReset2","wbits","flags","check","lenbits","distbits","ncode","nlen","ndist","have","lens","work","was","lenfix","distfix","virgin","fixedtables","sym","updatewindow","copy","inflateInit","put","left","_in","_out","from","from_source","here_bits","here_op","here_val","last_bits","last_op","last_val","here","hbuf","order","inf_leave","xflags","extra_len","inflateInfo","s_window","lcode","dcode","lmask","dmask","op","top","dolen","dodist","lbase","lext","dbase","dext","type","lens_index","codes","table_index","incr","fill","low","mask","root","curr","drop","used","huff","base_index","MAXBITS","offs","extra_index"],"mappings":"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","file":"bundles/c2932262ed6106cd4535/3.js","sourcesContent":["'use strict';\n\n\nvar TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n};\n\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n};\n\nexports.setTyped(TYPED_OK);\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n","'use strict';\n\n// This is free and unencumbered software released into the public domain.\n// See LICENSE.md for more information.\n\n//\n// Utilities\n//\n\n/**\n * @param {number} a The number to test.\n * @param {number} min The minimum value in the range, inclusive.\n * @param {number} max The maximum value in the range, inclusive.\n * @return {boolean} True if a >= min and a <= max.\n */\nfunction inRange(a, min, max) {\n return min <= a && a <= max;\n}\n\n/**\n * @param {*} o\n * @return {Object}\n */\nfunction ToDictionary(o) {\n if (o === undefined) return {};\n if (o === Object(o)) return o;\n throw TypeError('Could not convert argument to dictionary');\n}\n\n/**\n * @param {string} string Input string of UTF-16 code units.\n * @return {!Array.} Code points.\n */\nfunction stringToCodePoints(string) {\n // https://heycam.github.io/webidl/#dfn-obtain-unicode\n\n // 1. Let S be the DOMString value.\n var s = String(string);\n\n // 2. Let n be the length of S.\n var n = s.length;\n\n // 3. Initialize i to 0.\n var i = 0;\n\n // 4. Initialize U to be an empty sequence of Unicode characters.\n var u = [];\n\n // 5. While i < n:\n while (i < n) {\n\n // 1. Let c be the code unit in S at index i.\n var c = s.charCodeAt(i);\n\n // 2. Depending on the value of c:\n\n // c < 0xD800 or c > 0xDFFF\n if (c < 0xD800 || c > 0xDFFF) {\n // Append to U the Unicode character with code point c.\n u.push(c);\n }\n\n // 0xDC00 ≤ c ≤ 0xDFFF\n else if (0xDC00 <= c && c <= 0xDFFF) {\n // Append to U a U+FFFD REPLACEMENT CHARACTER.\n u.push(0xFFFD);\n }\n\n // 0xD800 ≤ c ≤ 0xDBFF\n else if (0xD800 <= c && c <= 0xDBFF) {\n // 1. If i = n−1, then append to U a U+FFFD REPLACEMENT\n // CHARACTER.\n if (i === n - 1) {\n u.push(0xFFFD);\n }\n // 2. Otherwise, i < n−1:\n else {\n // 1. Let d be the code unit in S at index i+1.\n var d = string.charCodeAt(i + 1);\n\n // 2. If 0xDC00 ≤ d ≤ 0xDFFF, then:\n if (0xDC00 <= d && d <= 0xDFFF) {\n // 1. Let a be c & 0x3FF.\n var a = c & 0x3FF;\n\n // 2. Let b be d & 0x3FF.\n var b = d & 0x3FF;\n\n // 3. Append to U the Unicode character with code point\n // 2^16+2^10*a+b.\n u.push(0x10000 + (a << 10) + b);\n\n // 4. Set i to i+1.\n i += 1;\n }\n\n // 3. Otherwise, d < 0xDC00 or d > 0xDFFF. Append to U a\n // U+FFFD REPLACEMENT CHARACTER.\n else {\n u.push(0xFFFD);\n }\n }\n }\n\n // 3. Set i to i+1.\n i += 1;\n }\n\n // 6. Return U.\n return u;\n}\n\n/**\n * @param {!Array.} code_points Array of code points.\n * @return {string} string String of UTF-16 code units.\n */\nfunction codePointsToString(code_points) {\n var s = '';\n for (var i = 0; i < code_points.length; ++i) {\n var cp = code_points[i];\n if (cp <= 0xFFFF) {\n s += String.fromCharCode(cp);\n } else {\n cp -= 0x10000;\n s += String.fromCharCode((cp >> 10) + 0xD800,\n (cp & 0x3FF) + 0xDC00);\n }\n }\n return s;\n}\n\n\n//\n// Implementation of Encoding specification\n// https://encoding.spec.whatwg.org/\n//\n\n//\n// 3. Terminology\n//\n\n/**\n * End-of-stream is a special token that signifies no more tokens\n * are in the stream.\n * @const\n */ var end_of_stream = -1;\n\n/**\n * A stream represents an ordered sequence of tokens.\n *\n * @constructor\n * @param {!(Array.|Uint8Array)} tokens Array of tokens that provide the\n * stream.\n */\nfunction Stream(tokens) {\n /** @type {!Array.} */\n this.tokens = [].slice.call(tokens);\n}\n\nStream.prototype = {\n /**\n * @return {boolean} True if end-of-stream has been hit.\n */\n endOfStream: function() {\n return !this.tokens.length;\n },\n\n /**\n * When a token is read from a stream, the first token in the\n * stream must be returned and subsequently removed, and\n * end-of-stream must be returned otherwise.\n *\n * @return {number} Get the next token from the stream, or\n * end_of_stream.\n */\n read: function() {\n if (!this.tokens.length)\n return end_of_stream;\n return this.tokens.shift();\n },\n\n /**\n * When one or more tokens are prepended to a stream, those tokens\n * must be inserted, in given order, before the first token in the\n * stream.\n *\n * @param {(number|!Array.)} token The token(s) to prepend to the stream.\n */\n prepend: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/(token);\n while (tokens.length)\n this.tokens.unshift(tokens.pop());\n } else {\n this.tokens.unshift(token);\n }\n },\n\n /**\n * When one or more tokens are pushed to a stream, those tokens\n * must be inserted, in given order, after the last token in the\n * stream.\n *\n * @param {(number|!Array.)} token The tokens(s) to prepend to the stream.\n */\n push: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/(token);\n while (tokens.length)\n this.tokens.push(tokens.shift());\n } else {\n this.tokens.push(token);\n }\n }\n};\n\n//\n// 4. Encodings\n//\n\n// 4.1 Encoders and decoders\n\n/** @const */\nvar finished = -1;\n\n/**\n * @param {boolean} fatal If true, decoding errors raise an exception.\n * @param {number=} opt_code_point Override the standard fallback code point.\n * @return {number} The code point to insert on a decoding error.\n */\nfunction decoderError(fatal, opt_code_point) {\n if (fatal)\n throw TypeError('Decoder error');\n return opt_code_point || 0xFFFD;\n}\n\n/** @interface */\nfunction Decoder() {}\nDecoder.prototype = {\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point, or |finished|.\n */\n handler: function(stream, bite) {}\n};\n\n/** @interface */\nfunction Encoder() {}\nEncoder.prototype = {\n /**\n * @param {Stream} stream The stream of code points being encoded.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit, or |finished|.\n */\n handler: function(stream, code_point) {}\n};\n\n//\n// 7. API\n//\n\n/** @const */ var DEFAULT_ENCODING = 'utf-8';\n\n// 7.1 Interface TextDecoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextDecoder(encoding, options) {\n if (!(this instanceof TextDecoder)) {\n return new TextDecoder(encoding, options);\n }\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {boolean} */\n this._BOMseen = false;\n /** @private @type {?Decoder} */\n this._decoder = null;\n /** @private @type {boolean} */\n this._fatal = Boolean(options['fatal']);\n /** @private @type {boolean} */\n this._ignoreBOM = Boolean(options['ignoreBOM']);\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n Object.defineProperty(this, 'fatal', {value: this._fatal});\n Object.defineProperty(this, 'ignoreBOM', {value: this._ignoreBOM});\n}\n\nTextDecoder.prototype = {\n /**\n * @param {ArrayBufferView=} input The buffer of bytes to decode.\n * @param {Object=} options\n * @return {string} The decoded string.\n */\n decode: function decode(input, options) {\n var bytes;\n if (typeof input === 'object' && input instanceof ArrayBuffer) {\n bytes = new Uint8Array(input);\n } else if (typeof input === 'object' && 'buffer' in input &&\n input.buffer instanceof ArrayBuffer) {\n bytes = new Uint8Array(input.buffer,\n input.byteOffset,\n input.byteLength);\n } else {\n bytes = new Uint8Array(0);\n }\n\n options = ToDictionary(options);\n\n if (!this._streaming) {\n this._decoder = new UTF8Decoder({fatal: this._fatal});\n this._BOMseen = false;\n }\n this._streaming = Boolean(options['stream']);\n\n var input_stream = new Stream(bytes);\n\n var code_points = [];\n\n /** @type {?(number|!Array.)} */\n var result;\n\n while (!input_stream.endOfStream()) {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.}*/(result));\n else\n code_points.push(result);\n }\n if (!this._streaming) {\n do {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.}*/(result));\n else\n code_points.push(result);\n } while (!input_stream.endOfStream());\n this._decoder = null;\n }\n\n if (code_points.length) {\n // If encoding is one of utf-8, utf-16be, and utf-16le, and\n // ignore BOM flag and BOM seen flag are unset, run these\n // subsubsteps:\n if (['utf-8'].indexOf(this.encoding) !== -1 &&\n !this._ignoreBOM && !this._BOMseen) {\n // If token is U+FEFF, set BOM seen flag.\n if (code_points[0] === 0xFEFF) {\n this._BOMseen = true;\n code_points.shift();\n } else {\n // Otherwise, if token is not end-of-stream, set BOM seen\n // flag and append token to output.\n this._BOMseen = true;\n }\n }\n }\n\n return codePointsToString(code_points);\n }\n};\n\n// 7.2 Interface TextEncoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextEncoder(encoding, options) {\n if (!(this instanceof TextEncoder))\n return new TextEncoder(encoding, options);\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {?Encoder} */\n this._encoder = null;\n /** @private @type {{fatal: boolean}} */\n this._options = {fatal: Boolean(options['fatal'])};\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n}\n\nTextEncoder.prototype = {\n /**\n * @param {string=} opt_string The string to encode.\n * @param {Object=} options\n * @return {Uint8Array} Encoded bytes, as a Uint8Array.\n */\n encode: function encode(opt_string, options) {\n opt_string = opt_string ? String(opt_string) : '';\n options = ToDictionary(options);\n\n // NOTE: This option is nonstandard. None of the encodings\n // permitted for encoding (i.e. UTF-8, UTF-16) are stateful,\n // so streaming is not necessary.\n if (!this._streaming)\n this._encoder = new UTF8Encoder(this._options);\n this._streaming = Boolean(options['stream']);\n\n var bytes = [];\n var input_stream = new Stream(stringToCodePoints(opt_string));\n /** @type {?(number|!Array.)} */\n var result;\n while (!input_stream.endOfStream()) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.}*/(result));\n else\n bytes.push(result);\n }\n if (!this._streaming) {\n while (true) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.}*/(result));\n else\n bytes.push(result);\n }\n this._encoder = null;\n }\n return new Uint8Array(bytes);\n }\n};\n\n//\n// 8. The encoding\n//\n\n// 8.1 utf-8\n\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Decoder(options) {\n var fatal = options.fatal;\n\n // utf-8's decoder's has an associated utf-8 code point, utf-8\n // bytes seen, and utf-8 bytes needed (all initially 0), a utf-8\n // lower boundary (initially 0x80), and a utf-8 upper boundary\n // (initially 0xBF).\n var /** @type {number} */ utf8_code_point = 0,\n /** @type {number} */ utf8_bytes_seen = 0,\n /** @type {number} */ utf8_bytes_needed = 0,\n /** @type {number} */ utf8_lower_boundary = 0x80,\n /** @type {number} */ utf8_upper_boundary = 0xBF;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function(stream, bite) {\n // 1. If byte is end-of-stream and utf-8 bytes needed is not 0,\n // set utf-8 bytes needed to 0 and return error.\n if (bite === end_of_stream && utf8_bytes_needed !== 0) {\n utf8_bytes_needed = 0;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream, return finished.\n if (bite === end_of_stream)\n return finished;\n\n // 3. If utf-8 bytes needed is 0, based on byte:\n if (utf8_bytes_needed === 0) {\n\n // 0x00 to 0x7F\n if (inRange(bite, 0x00, 0x7F)) {\n // Return a code point whose value is byte.\n return bite;\n }\n\n // 0xC2 to 0xDF\n if (inRange(bite, 0xC2, 0xDF)) {\n // Set utf-8 bytes needed to 1 and utf-8 code point to byte\n // − 0xC0.\n utf8_bytes_needed = 1;\n utf8_code_point = bite - 0xC0;\n }\n\n // 0xE0 to 0xEF\n else if (inRange(bite, 0xE0, 0xEF)) {\n // 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.\n if (bite === 0xE0)\n utf8_lower_boundary = 0xA0;\n // 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.\n if (bite === 0xED)\n utf8_upper_boundary = 0x9F;\n // 3. Set utf-8 bytes needed to 2 and utf-8 code point to\n // byte − 0xE0.\n utf8_bytes_needed = 2;\n utf8_code_point = bite - 0xE0;\n }\n\n // 0xF0 to 0xF4\n else if (inRange(bite, 0xF0, 0xF4)) {\n // 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.\n if (bite === 0xF0)\n utf8_lower_boundary = 0x90;\n // 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.\n if (bite === 0xF4)\n utf8_upper_boundary = 0x8F;\n // 3. Set utf-8 bytes needed to 3 and utf-8 code point to\n // byte − 0xF0.\n utf8_bytes_needed = 3;\n utf8_code_point = bite - 0xF0;\n }\n\n // Otherwise\n else {\n // Return error.\n return decoderError(fatal);\n }\n\n // Then (byte is in the range 0xC2 to 0xF4) set utf-8 code\n // point to utf-8 code point << (6 × utf-8 bytes needed) and\n // return continue.\n utf8_code_point = utf8_code_point << (6 * utf8_bytes_needed);\n return null;\n }\n\n // 4. If byte is not in the range utf-8 lower boundary to utf-8\n // upper boundary, run these substeps:\n if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {\n\n // 1. Set utf-8 code point, utf-8 bytes needed, and utf-8\n // bytes seen to 0, set utf-8 lower boundary to 0x80, and set\n // utf-8 upper boundary to 0xBF.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 2. Prepend byte to stream.\n stream.prepend(bite);\n\n // 3. Return error.\n return decoderError(fatal);\n }\n\n // 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary\n // to 0xBF.\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 6. Increase utf-8 bytes seen by one and set utf-8 code point\n // to utf-8 code point + (byte − 0x80) << (6 × (utf-8 bytes\n // needed − utf-8 bytes seen)).\n utf8_bytes_seen += 1;\n utf8_code_point += (bite - 0x80) << (6 * (utf8_bytes_needed - utf8_bytes_seen));\n\n // 7. If utf-8 bytes seen is not equal to utf-8 bytes needed,\n // continue.\n if (utf8_bytes_seen !== utf8_bytes_needed)\n return null;\n\n // 8. Let code point be utf-8 code point.\n var code_point = utf8_code_point;\n\n // 9. Set utf-8 code point, utf-8 bytes needed, and utf-8 bytes\n // seen to 0.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n\n // 10. Return a code point whose value is code point.\n return code_point;\n };\n}\n\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Encoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function(stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream)\n return finished;\n\n // 2. If code point is in the range U+0000 to U+007F, return a\n // byte whose value is code point.\n if (inRange(code_point, 0x0000, 0x007f))\n return code_point;\n\n // 3. Set count and offset based on the range code point is in:\n var count, offset;\n // U+0080 to U+07FF: 1 and 0xC0\n if (inRange(code_point, 0x0080, 0x07FF)) {\n count = 1;\n offset = 0xC0;\n }\n // U+0800 to U+FFFF: 2 and 0xE0\n else if (inRange(code_point, 0x0800, 0xFFFF)) {\n count = 2;\n offset = 0xE0;\n }\n // U+10000 to U+10FFFF: 3 and 0xF0\n else if (inRange(code_point, 0x10000, 0x10FFFF)) {\n count = 3;\n offset = 0xF0;\n }\n\n // 4.Let bytes be a byte sequence whose first byte is (code\n // point >> (6 × count)) + offset.\n var bytes = [(code_point >> (6 * count)) + offset];\n\n // 5. Run these substeps while count is greater than 0:\n while (count > 0) {\n\n // 1. Set temp to code point >> (6 × (count − 1)).\n var temp = code_point >> (6 * (count - 1));\n\n // 2. Append to bytes 0x80 | (temp & 0x3F).\n bytes.push(0x80 | (temp & 0x3F));\n\n // 3. Decrease count by one.\n count -= 1;\n }\n\n // 6. Return bytes bytes, in order.\n return bytes;\n };\n}\n\nexport {TextEncoder, TextDecoder};\n","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n","// String encode/decode helpers\n'use strict';\n\n\nvar utils = require('./common');\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nvar STR_APPLY_OK = true;\nvar STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new utils.Buf8(256);\nfor (var q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new utils.Buf8(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n // use fallback for big arrays to avoid stack overflow\n if (len < 65537) {\n if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function (buf) {\n return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function (str) {\n var buf = new utils.Buf8(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nexports.utf8border = function (buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _pako = require('pako');\n\nvar _pako2 = _interopRequireDefault(_pako);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _PlatformPeg = require('../PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _rageshake = require('./rageshake');\n\nvar _rageshake2 = _interopRequireDefault(_rageshake);\n\nvar _textEncodingUtf = require('text-encoding-utf-8');\n\nvar TextEncodingUtf8 = _interopRequireWildcard(_textEncodingUtf);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TextEncoder = window.TextEncoder;\n\n// polyfill textencoder if necessary\n/*\nCopyright 2017 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nif (!TextEncoder) {\n TextEncoder = TextEncodingUtf8.TextEncoder;\n}\n\n/**\n * Send a bug report.\n *\n * @param {string} bugReportEndpoint HTTP url to send the report to\n *\n * @param {object} opts optional dictionary of options\n *\n * @param {string} opts.userText Any additional user input.\n *\n * @param {boolean} opts.sendLogs True to send logs\n *\n * @param {function(string)} opts.progressCallback Callback to call with progress updates\n *\n * @return {Promise} Resolved when the bug report is sent.\n */\n\nexports.default = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(bugReportEndpoint, opts) {\n var progressCallback, version, userAgent, client, body, logs, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, entry, buf, compressed;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (bugReportEndpoint) {\n _context.next = 2;\n break;\n }\n\n throw new Error(\"No bug report endpoint has been set.\");\n\n case 2:\n\n opts = opts || {};\n\n progressCallback = opts.progressCallback || function () {};\n\n progressCallback((0, _languageHandler._t)(\"Collecting app version information\"));\n version = \"UNKNOWN\";\n _context.prev = 6;\n _context.next = 9;\n return (0, _bluebird.resolve)(_PlatformPeg2.default.get().getAppVersion());\n\n case 9:\n version = _context.sent;\n _context.next = 14;\n break;\n\n case 12:\n _context.prev = 12;\n _context.t0 = _context['catch'](6);\n\n case 14:\n // PlatformPeg already logs this.\n\n userAgent = \"UNKNOWN\";\n\n if (window.navigator && window.navigator.userAgent) {\n userAgent = window.navigator.userAgent;\n }\n\n client = _MatrixClientPeg2.default.get();\n\n\n console.log(\"Sending bug report.\");\n\n body = new FormData();\n\n body.append('text', opts.userText || \"User did not supply any additional text.\");\n body.append('app', 'riot-web');\n body.append('version', version);\n body.append('user_agent', userAgent);\n\n if (client) {\n body.append('user_id', client.credentials.userId);\n body.append('device_id', client.deviceId);\n }\n\n if (!opts.sendLogs) {\n _context.next = 48;\n break;\n }\n\n progressCallback((0, _languageHandler._t)(\"Collecting logs\"));\n _context.next = 28;\n return (0, _bluebird.resolve)(_rageshake2.default.getLogsForReport());\n\n case 28:\n logs = _context.sent;\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 32;\n\n for (_iterator = (0, _getIterator3.default)(logs); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n entry = _step.value;\n\n // encode as UTF-8\n buf = new TextEncoder().encode(entry.lines);\n\n // compress\n\n compressed = _pako2.default.gzip(buf);\n\n\n body.append('compressed-log', new Blob([compressed]), entry.id);\n }\n _context.next = 40;\n break;\n\n case 36:\n _context.prev = 36;\n _context.t1 = _context['catch'](32);\n _didIteratorError = true;\n _iteratorError = _context.t1;\n\n case 40:\n _context.prev = 40;\n _context.prev = 41;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 43:\n _context.prev = 43;\n\n if (!_didIteratorError) {\n _context.next = 46;\n break;\n }\n\n throw _iteratorError;\n\n case 46:\n return _context.finish(43);\n\n case 47:\n return _context.finish(40);\n\n case 48:\n\n progressCallback((0, _languageHandler._t)(\"Uploading report\"));\n _context.next = 51;\n return (0, _bluebird.resolve)(_submitReport(bugReportEndpoint, body, progressCallback));\n\n case 51:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[6, 12], [32, 36, 40, 48], [41,, 43, 47]]);\n }));\n\n function sendBugReport(_x, _x2) {\n return _ref.apply(this, arguments);\n }\n\n return sendBugReport;\n}();\n\nfunction _submitReport(endpoint, body, progressCallback) {\n var deferred = _bluebird2.default.defer();\n\n var req = new XMLHttpRequest();\n req.open(\"POST\", endpoint);\n req.timeout = 5 * 60 * 1000;\n req.onreadystatechange = function () {\n if (req.readyState === XMLHttpRequest.LOADING) {\n progressCallback((0, _languageHandler._t)(\"Waiting for response from server\"));\n } else if (req.readyState === XMLHttpRequest.DONE) {\n on_done();\n }\n };\n req.send(body);\n return deferred.promise;\n\n function on_done() {\n if (req.status < 200 || req.status >= 400) {\n deferred.reject(new Error('HTTP ' + req.status));\n return;\n }\n deferred.resolve();\n }\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=submit-rageshake.js.map","// Top level file is just a mixin of submodules & constants\n'use strict';\n\nvar assign = require('./lib/utils/common').assign;\n\nvar deflate = require('./lib/deflate');\nvar inflate = require('./lib/inflate');\nvar constants = require('./lib/zlib/constants');\n\nvar pako = {};\n\nassign(pako, deflate, inflate, constants);\n\nmodule.exports = pako;\n","'use strict';\n\n\nvar zlib_deflate = require('./zlib/deflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\n\nvar toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nvar Z_NO_FLUSH = 0;\nvar Z_FINISH = 4;\n\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_SYNC_FLUSH = 2;\n\nvar Z_DEFAULT_COMPRESSION = -1;\n\nvar Z_DEFAULT_STRATEGY = 0;\n\nvar Z_DEFLATED = 8;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n if (!(this instanceof Deflate)) return new Deflate(options);\n\n this.options = utils.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_deflate.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = zlib_deflate.deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar trees = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar msg = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES = 30;\n/* number of distance codes */\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = new utils.Buf8(s.w_size);\n utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\nexports._tr_init = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n","'use strict';\n\n\nvar zlib_inflate = require('./zlib/inflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar c = require('./zlib/constants');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\nvar GZheader = require('./zlib/gzheader');\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n if (!(this instanceof Inflate)) return new Inflate(options);\n\n this.options = utils.assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_inflate.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n zlib_inflate.inflateGetHeader(this.strm, this.header);\n}\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n var dict;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = strings.binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); /* no bad return value */\n\n if (status === c.Z_NEED_DICT && dictionary) {\n // Convert data if needed\n if (typeof dictionary === 'string') {\n dict = strings.string2buf(dictionary);\n } else if (toString.call(dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(dictionary);\n } else {\n dict = dictionary;\n }\n\n status = zlib_inflate.inflateSetDictionary(this.strm, dict);\n\n }\n\n if (status === c.Z_BUF_ERROR && allowBufError === true) {\n status = c.Z_OK;\n allowBufError = false;\n }\n\n if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n if (status === c.Z_STREAM_END) {\n _mode = c.Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === c.Z_FINISH) {\n status = zlib_inflate.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === c.Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === c.Z_SYNC_FLUSH) {\n this.onEnd(c.Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === c.Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 aligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nexports.Inflate = Inflate;\nexports.inflate = inflate;\nexports.inflateRaw = inflateRaw;\nexports.ungzip = inflate;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar inflate_fast = require('./inffast');\nvar inflate_table = require('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\nfunction inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nmodule.exports = GZheader;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/bundle.css b/riot/bundles/c2932262ed6106cd4535/bundle.css similarity index 100% rename from riot/bundles/f5c70ee9a294f6e4590e/bundle.css rename to riot/bundles/c2932262ed6106cd4535/bundle.css diff --git a/riot/bundles/f5c70ee9a294f6e4590e/bundle.css.map b/riot/bundles/c2932262ed6106cd4535/bundle.css.map similarity index 55% rename from riot/bundles/f5c70ee9a294f6e4590e/bundle.css.map rename to riot/bundles/c2932262ed6106cd4535/bundle.css.map index 42070b0..fdd1fa2 100644 --- a/riot/bundles/f5c70ee9a294f6e4590e/bundle.css.map +++ b/riot/bundles/c2932262ed6106cd4535/bundle.css.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"bundles/f5c70ee9a294f6e4590e/bundle.css","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"bundles/c2932262ed6106cd4535/bundle.css","sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/c2932262ed6106cd4535/bundle.js b/riot/bundles/c2932262ed6106cd4535/bundle.js new file mode 100644 index 0000000..8d4faad --- /dev/null +++ b/riot/bundles/c2932262ed6106cd4535/bundle.js @@ -0,0 +1,115 @@ +!function(e){function t(t){for(var n,o,i=t[0],a=t[1],s=0,u=[];s(.*?)<\\/"+i+">|<"+i+">|<"+i+"\\s*\\/>)"]=n[i];return g(e,r)}function g(e,t){var n=[e],r=!1;for(var o in t){var i=new RegExp(o),s=!1;for(var l in n){var u=n[l];if("string"==typeof u){var f=u.match(i);if(f){s=!0;var d=f.slice(2),p=u.substr(0,f.index),m=u.substr(f.index+f[0].length),h=void 0;"object"===(void 0===(h=t[o]instanceof Function?t[o].apply(null,d):t[o])?"undefined":(0,a.default)(h))&&(r=!0),n.splice(l,1),""!==m&&n.splice(l,0,m),"string"==typeof h&&""===h||n.splice(l,0,h),""!==p&&n.splice(l,0,p)}}}s||"%\\(count\\)s"!==o&&console.log("Could not find "+i+" in "+e)}return r?c.default.createElement.apply(c.default,["span",null].concat(n)):n.join("")}function v(){return new u.default(function(e,t){(0,s.default)({method:"GET",url:m+"languages.json"},function(n,r,o){n||r.status<200||r.status>=300?t({err:n,response:r}):e(JSON.parse(o))})})}function y(e){return new u.default(function(t,n){(0,s.default)({method:"GET",url:e},function(e,o,a){e||o.status<200||o.status>=300?n({err:e,response:o}):t(function(e){var t={},n=!0,o=!1,a=void 0;try{for(var s,l=(0,r.default)((0,i.default)(e));!(n=(s=l.next()).done);n=!0){var u=s.value,c=u.split("|",2);if(2===c.length){var f=t[c[0]];void 0===f&&(f={},t[c[0]]=f),f[c[1]]=e[u]}else t[u]=e[u]}}catch(e){o=!0,a=e}finally{try{!n&&l.return&&l.return()}finally{if(o)throw a}}return t}(JSON.parse(a)))})})}l.default.setSeparator("|"),l.default.setFallbackLocale("en")},function(e,t,n){"use strict";var r=i(n(1067)),o=i(n(393));function i(e){return e&&e.__esModule?e:{default:e}}e.exports.loadSkin=function(e){r.default.load(e)},e.exports.resetSkin=function(){r.default.reset()},e.exports.getComponent=function(e){return r.default.getComponent(e)},e.exports.setFetch=function(e){o.default.setFetch(e)}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(217));t.default=function(){function e(e,t){for(var n=0;n>>0;if(""+n!==t||4294967295===n)return NaN;t=n}return t<0?w(e)+t:t}function k(){return!0}function x(e,t,n){return(0===e||void 0!==n&&e<=-n)&&(void 0===t||void 0!==n&&t>=n)}function R(e,t){return I(e,t,0)}function N(e,t){return I(e,t,t)}function I(e,t,n){return void 0===e?n:e<0?Math.max(0,t+e):void 0===t?e:Math.min(t,e)}var O=0,A=1,M=2,P="function"==typeof Symbol&&Symbol.iterator,L="@@iterator",F=P||L;function U(e){this.next=e}function j(e,t,n,r){var o=0===e?t:1===e?n:[t,n];return r?r.value=o:r={value:o,done:!1},r}function B(){return{value:void 0,done:!0}}function G(e){return!!H(e)}function q(e){return e&&"function"==typeof e.next}function V(e){var t=H(e);return t&&t.call(e)}function H(e){var t=e&&(P&&e[P]||e[L]);if("function"==typeof t)return t}function Y(e){return e&&"number"==typeof e.length}function z(e){return null===e||void 0===e?ie():a(e)?e.toSeq():function(e){var t=le(e)||"object"==typeof e&&new te(e);if(!t)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+e);return t}(e)}function W(e){return null===e||void 0===e?ie().toKeyedSeq():a(e)?s(e)?e.toSeq():e.fromEntrySeq():ae(e)}function K(e){return null===e||void 0===e?ie():a(e)?s(e)?e.entrySeq():e.toIndexedSeq():se(e)}function $(e){return(null===e||void 0===e?ie():a(e)?s(e)?e.entrySeq():e:se(e)).toSetSeq()}U.prototype.toString=function(){return"[Iterator]"},U.KEYS=O,U.VALUES=A,U.ENTRIES=M,U.prototype.inspect=U.prototype.toSource=function(){return this.toString()},U.prototype[F]=function(){return this},t(z,n),z.of=function(){return z(arguments)},z.prototype.toSeq=function(){return this},z.prototype.toString=function(){return this.__toString("Seq {","}")},z.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},z.prototype.__iterate=function(e,t){return ue(this,e,t,!0)},z.prototype.__iterator=function(e,t){return ce(this,e,t,!0)},t(W,z),W.prototype.toKeyedSeq=function(){return this},t(K,z),K.of=function(){return K(arguments)},K.prototype.toIndexedSeq=function(){return this},K.prototype.toString=function(){return this.__toString("Seq [","]")},K.prototype.__iterate=function(e,t){return ue(this,e,t,!1)},K.prototype.__iterator=function(e,t){return ce(this,e,t,!1)},t($,z),$.of=function(){return $(arguments)},$.prototype.toSetSeq=function(){return this},z.isSeq=oe,z.Keyed=W,z.Set=$,z.Indexed=K;var Q,X,J,Z="@@__IMMUTABLE_SEQ__@@";function ee(e){this._array=e,this.size=e.length}function te(e){var t=Object.keys(e);this._object=e,this._keys=t,this.size=t.length}function ne(e){this._iterable=e,this.size=e.length||e.size}function re(e){this._iterator=e,this._iteratorCache=[]}function oe(e){return!(!e||!e[Z])}function ie(){return Q||(Q=new ee([]))}function ae(e){var t=Array.isArray(e)?new ee(e).fromEntrySeq():q(e)?new re(e).fromEntrySeq():G(e)?new ne(e).fromEntrySeq():"object"==typeof e?new te(e):void 0;if(!t)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+e);return t}function se(e){var t=le(e);if(!t)throw new TypeError("Expected Array or iterable object of values: "+e);return t}function le(e){return Y(e)?new ee(e):q(e)?new re(e):G(e)?new ne(e):void 0}function ue(e,t,n,r){var o=e._cache;if(o){for(var i=o.length-1,a=0;a<=i;a++){var s=o[n?i-a:a];if(!1===t(s[1],r?s[0]:a,e))return a+1}return a}return e.__iterateUncached(t,n)}function ce(e,t,n,r){var o=e._cache;if(o){var i=o.length-1,a=0;return new U(function(){var e=o[n?i-a:a];return a++>i?{value:void 0,done:!0}:j(t,r?e[0]:a-1,e[1])})}return e.__iteratorUncached(t,n)}function fe(e,t){return t?function e(t,n,r,o){return Array.isArray(n)?t.call(o,r,K(n).map(function(r,o){return e(t,r,o,n)})):pe(n)?t.call(o,r,W(n).map(function(r,o){return e(t,r,o,n)})):n}(t,e,"",{"":e}):de(e)}function de(e){return Array.isArray(e)?K(e).map(de).toList():pe(e)?W(e).map(de).toMap():e}function pe(e){return e&&(e.constructor===Object||void 0===e.constructor)}function me(e,t){if(e===t||e!=e&&t!=t)return!0;if(!e||!t)return!1;if("function"==typeof e.valueOf&&"function"==typeof t.valueOf){if(e=e.valueOf(),t=t.valueOf(),e===t||e!=e&&t!=t)return!0;if(!e||!t)return!1}return!("function"!=typeof e.equals||"function"!=typeof t.equals||!e.equals(t))}function he(e,t){if(e===t)return!0;if(!a(t)||void 0!==e.size&&void 0!==t.size&&e.size!==t.size||void 0!==e.__hash&&void 0!==t.__hash&&e.__hash!==t.__hash||s(e)!==s(t)||l(e)!==l(t)||c(e)!==c(t))return!1;if(0===e.size&&0===t.size)return!0;var n=!u(e);if(c(e)){var r=e.entries();return t.every(function(e,t){var o=r.next().value;return o&&me(o[1],e)&&(n||me(o[0],t))})&&r.next().done}var o=!1;if(void 0===e.size)if(void 0===t.size)"function"==typeof e.cacheResult&&e.cacheResult();else{o=!0;var i=e;e=t,t=i}var f=!0,d=t.__iterate(function(t,r){if(n?!e.has(t):o?!me(t,e.get(r,v)):!me(e.get(r,v),t))return f=!1,!1});return f&&e.size===d}function _e(e,t){if(!(this instanceof _e))return new _e(e,t);if(this._value=e,this.size=void 0===t?1/0:Math.max(0,t),0===this.size){if(X)return X;X=this}}function ge(e,t){if(!e)throw new Error(t)}function ve(e,t,n){if(!(this instanceof ve))return new ve(e,t,n);if(ge(0!==n,"Cannot step a Range by 0"),e=e||0,void 0===t&&(t=1/0),n=void 0===n?1:Math.abs(n),tr?{value:void 0,done:!0}:j(e,o,n[t?r-o++:o++])})},t(te,W),te.prototype.get=function(e,t){return void 0===t||this.has(e)?this._object[e]:t},te.prototype.has=function(e){return this._object.hasOwnProperty(e)},te.prototype.__iterate=function(e,t){for(var n=this._object,r=this._keys,o=r.length-1,i=0;i<=o;i++){var a=r[t?o-i:i];if(!1===e(n[a],a,this))return i+1}return i},te.prototype.__iterator=function(e,t){var n=this._object,r=this._keys,o=r.length-1,i=0;return new U(function(){var a=r[t?o-i:i];return i++>o?{value:void 0,done:!0}:j(e,a,n[a])})},te.prototype[m]=!0,t(ne,K),ne.prototype.__iterateUncached=function(e,t){if(t)return this.cacheResult().__iterate(e,t);var n=this._iterable,r=V(n),o=0;if(q(r))for(var i;!(i=r.next()).done&&!1!==e(i.value,o++,this););return o},ne.prototype.__iteratorUncached=function(e,t){if(t)return this.cacheResult().__iterator(e,t);var n=this._iterable,r=V(n);if(!q(r))return new U(B);var o=0;return new U(function(){var t=r.next();return t.done?t:j(e,o++,t.value)})},t(re,K),re.prototype.__iterateUncached=function(e,t){if(t)return this.cacheResult().__iterate(e,t);for(var n,r=this._iterator,o=this._iteratorCache,i=0;i=r.length){var t=n.next();if(t.done)return t;r[o]=t.value}return j(e,o,r[o++])})},t(_e,K),_e.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},_e.prototype.get=function(e,t){return this.has(e)?this._value:t},_e.prototype.includes=function(e){return me(this._value,e)},_e.prototype.slice=function(e,t){var n=this.size;return x(e,t,n)?this:new _e(this._value,N(t,n)-R(e,n))},_e.prototype.reverse=function(){return this},_e.prototype.indexOf=function(e){return me(this._value,e)?0:-1},_e.prototype.lastIndexOf=function(e){return me(this._value,e)?this.size:-1},_e.prototype.__iterate=function(e,t){for(var n=0;n1?" by "+this._step:"")+" ]"},ve.prototype.get=function(e,t){return this.has(e)?this._start+T(this,e)*this._step:t},ve.prototype.includes=function(e){var t=(e-this._start)/this._step;return t>=0&&t=0&&nn?{value:void 0,done:!0}:j(e,i++,a)})},ve.prototype.equals=function(e){return e instanceof ve?this._start===e._start&&this._end===e._end&&this._step===e._step:he(this,e)},t(ye,n),t(be,ye),t(Ee,ye),t(Ce,ye),ye.Keyed=be,ye.Indexed=Ee,ye.Set=Ce;var Se="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function(e,t){var n=65535&(e|=0),r=65535&(t|=0);return n*r+((e>>>16)*r+n*(t>>>16)<<16>>>0)|0};function De(e){return e>>>1&1073741824|3221225471&e}function we(e){if(!1===e||null===e||void 0===e)return 0;if("function"==typeof e.valueOf&&(!1===(e=e.valueOf())||null===e||void 0===e))return 0;if(!0===e)return 1;var t=typeof e;if("number"===t){var n=0|e;for(n!==e&&(n^=4294967295*e);e>4294967295;)n^=e/=4294967295;return De(n)}if("string"===t)return e.length>Ae?function(e){var t=Le[e];return void 0===t&&(t=Te(e),Pe===Me&&(Pe=0,Le={}),Pe++,Le[e]=t),t}(e):Te(e);if("function"==typeof e.hashCode)return e.hashCode();if("object"===t)return function(e){var t;if(Ne&&void 0!==(t=ke.get(e)))return t;if(void 0!==(t=e[Oe]))return t;if(!Re){if(void 0!==(t=e.propertyIsEnumerable&&e.propertyIsEnumerable[Oe]))return t;if(void 0!==(t=function(e){if(e&&e.nodeType>0)switch(e.nodeType){case 1:return e.uniqueID;case 9:return e.documentElement&&e.documentElement.uniqueID}}(e)))return t}if(t=++Ie,1073741824&Ie&&(Ie=0),Ne)ke.set(e,t);else{if(void 0!==xe&&!1===xe(e))throw new Error("Non-extensible objects are not allowed as keys.");if(Re)Object.defineProperty(e,Oe,{enumerable:!1,configurable:!1,writable:!1,value:t});else if(void 0!==e.propertyIsEnumerable&&e.propertyIsEnumerable===e.constructor.prototype.propertyIsEnumerable)e.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},e.propertyIsEnumerable[Oe]=t;else{if(void 0===e.nodeType)throw new Error("Unable to set a non-enumerable property on object.");e[Oe]=t}}return t}(e);if("function"==typeof e.toString)return Te(e.toString());throw new Error("Value type "+t+" cannot be hashed.")}function Te(e){for(var t=0,n=0;n>>n)&g,s=(0===n?r:r>>>n)&g,l=a===s?[nt(e,t,n+h,r,o)]:(i=new We(t,r,o),a>1&1431655765))+(e>>2&858993459))+(e>>4)&252645135,e+=e>>8,127&(e+=e>>16)}function lt(e,t,n,r){var o=r?e:D(e);return o[t]=n,o}qe[Ge]=!0,qe.delete=qe.remove,qe.removeIn=qe.deleteIn,Ve.prototype.get=function(e,t,n,r){for(var o=this.entries,i=0,a=o.length;i=ut)return function(e,t,n,r){e||(e=new S);for(var o=new We(e,we(n),[n,r]),i=0;i>>e)&g),i=this.bitmap;return 0==(i&o)?r:this.nodes[st(i&o-1)].get(e+h,t,n,r)},He.prototype.update=function(e,t,n,r,o,i,a){void 0===n&&(n=we(r));var s=(0===t?n:n>>>t)&g,l=1<=ct)return function(e,t,n,r,o){for(var i=0,a=new Array(_),s=0;0!==n;s++,n>>>=1)a[s]=1&n?t[i++]:void 0;return a[r]=o,new Ye(e,i+1,a)}(e,d,u,s,m);if(c&&!m&&2===d.length&&tt(d[1^f]))return d[1^f];if(c&&m&&1===d.length&&tt(m))return m;var y=e&&e===this.ownerID,b=c?m?u:u^l:u|l,E=c?m?lt(d,f,m,y):function(e,t,n){var r=e.length-1;if(n&&t===r)return e.pop(),e;for(var o=new Array(r),i=0,a=0;a>>e)&g,i=this.nodes[o];return i?i.get(e+h,t,n,r):r},Ye.prototype.update=function(e,t,n,r,o,i,a){void 0===n&&(n=we(r));var s=(0===t?n:n>>>t)&g,l=o===v,u=this.nodes,c=u[s];if(l&&!c)return this;var f=et(c,e,t+h,n,r,o,i,a);if(f===c)return this;var d=this.count;if(c){if(!f&&--d0&&r<_?Et(0,r,h,null,new _t(n.toArray())):t.withMutations(function(e){e.setSize(r),n.forEach(function(t,n){return e.set(n,t)})}))}function pt(e){return!(!e||!e[mt])}t(dt,Ee),dt.of=function(){return this(arguments)},dt.prototype.toString=function(){return this.__toString("List [","]")},dt.prototype.get=function(e,t){if((e=T(this,e))>=0&&e=e.size||t<0)return e.withMutations(function(e){t<0?Tt(e,t).set(0,n):Tt(e,0,t+1).set(t,n)});t+=e._origin;var r=e._tail,o=e._root,i=E(b);return t>=xt(e._capacity)?r=St(r,e.__ownerID,0,t,n,i):o=St(o,e.__ownerID,e._level,t,n,i),i.value?e.__ownerID?(e._root=o,e._tail=r,e.__hash=void 0,e.__altered=!0,e):Et(e._origin,e._capacity,e._level,o,r):e}(this,e,t)},dt.prototype.remove=function(e){return this.has(e)?0===e?this.shift():e===this.size-1?this.pop():this.splice(e,1):this},dt.prototype.insert=function(e,t){return this.splice(e,0,t)},dt.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=h,this._root=this._tail=null,this.__hash=void 0,this.__altered=!0,this):Ct()},dt.prototype.push=function(){var e=arguments,t=this.size;return this.withMutations(function(n){Tt(n,0,t+e.length);for(var r=0;r>>t&g;if(r>=this.array.length)return new _t([],e);var o,i=0===r;if(t>0){var a=this.array[r];if((o=a&&a.removeBefore(e,t-h,n))===a&&i)return this}if(i&&!o)return this;var s=Dt(this,e);if(!i)for(var l=0;l>>t&g;if(o>=this.array.length)return this;if(t>0){var i=this.array[o];if((r=i&&i.removeAfter(e,t-h,n))===i&&o===this.array.length-1)return this}var a=Dt(this,e);return a.array.splice(o+1),r&&(a.array[o]=r),a};var gt,vt,yt={};function bt(e,t){var n=e._origin,r=e._capacity,o=xt(r),i=e._tail;return a(e._root,e._level,0);function a(e,s,l){return 0===s?function(e,a){var s=a===o?i&&i.array:e&&e.array,l=a>n?0:n-a,u=r-a;return u>_&&(u=_),function(){if(l===u)return yt;var e=t?--u:l++;return s&&s[e]}}(e,l):function(e,o,i){var s,l=e&&e.array,u=i>n?0:n-i>>o,c=1+(r-i>>o);return c>_&&(c=_),function(){for(;;){if(s){var e=s();if(e!==yt)return e;s=null}if(u===c)return yt;var n=t?--c:u++;s=a(l&&l[n],o-h,i+(n<>>n&g,l=e&&s0){var u=e&&e.array[s],c=St(u,t,n-h,r,o,i);return c===u?e:((a=Dt(e,t)).array[s]=c,a)}return l&&e.array[s]===o?e:(C(i),a=Dt(e,t),void 0===o&&s===a.array.length-1?a.array.pop():a.array[s]=o,a)}function Dt(e,t){return t&&e&&t===e.ownerID?e:new _t(e?e.array.slice():[],t)}function wt(e,t){if(t>=xt(e._capacity))return e._tail;if(t<1<0;)n=n.array[t>>>r&g],r-=h;return n}}function Tt(e,t,n){void 0!==t&&(t|=0),void 0!==n&&(n|=0);var r=e.__ownerID||new S,o=e._origin,i=e._capacity,a=o+t,s=void 0===n?i:n<0?i+n:o+n;if(a===o&&s===i)return e;if(a>=s)return e.clear();for(var l=e._level,u=e._root,c=0;a+c<0;)u=new _t(u&&u.array.length?[void 0,u]:[],r),c+=1<<(l+=h);c&&(a+=c,o+=c,s+=c,i+=c);for(var f=xt(i),d=xt(s);d>=1<f?new _t([],r):p;if(p&&d>f&&ah;v-=h){var y=f>>>v&g;_=_.array[y]=Dt(_.array[y],r)}_.array[f>>>h&g]=p}if(s=d)a-=d,s-=d,l=h,u=null,m=m&&m.removeBefore(r,0,a);else if(a>o||d>>l&g;if(b!==d>>>l&g)break;b&&(c+=(1<o&&(u=u.removeBefore(r,l,a-c)),u&&di&&(i=u.size),a(l)||(u=u.map(function(e){return fe(e)})),r.push(u)}return i>e.size&&(e=e.setSize(i)),at(e,t,r)}function xt(e){return e<_?0:e-1>>>h<=_&&a.size>=2*i.size?(o=a.filter(function(e,t){return void 0!==e&&s!==t}),r=o.toKeyedSeq().map(function(e){return e[0]}).flip().toMap(),e.__ownerID&&(r.__ownerID=o.__ownerID=e.__ownerID)):(r=i.remove(t),o=s===a.size-1?a.pop():a.set(s,void 0))}else if(l){if(n===a.get(s)[1])return e;r=i,o=a.set(s,[t,n])}else r=i.set(t,a.size),o=a.set(a.size,[t,n]);return e.__ownerID?(e.size=r.size,e._map=r,e._list=o,e.__hash=void 0,e):It(r,o)}function Mt(e,t){this._iter=e,this._useKeys=t,this.size=e.size}function Pt(e){this._iter=e,this.size=e.size}function Lt(e){this._iter=e,this.size=e.size}function Ft(e){this._iter=e,this.size=e.size}function Ut(e){var t=Zt(e);return t._iter=e,t.size=e.size,t.flip=function(){return e},t.reverse=function(){var t=e.reverse.apply(this);return t.flip=function(){return e.reverse()},t},t.has=function(t){return e.includes(t)},t.includes=function(t){return e.has(t)},t.cacheResult=en,t.__iterateUncached=function(t,n){var r=this;return e.__iterate(function(e,n){return!1!==t(n,e,r)},n)},t.__iteratorUncached=function(t,n){if(t===M){var r=e.__iterator(t,n);return new U(function(){var e=r.next();if(!e.done){var t=e.value[0];e.value[0]=e.value[1],e.value[1]=t}return e})}return e.__iterator(t===A?O:A,n)},t}function jt(e,t,n){var r=Zt(e);return r.size=e.size,r.has=function(t){return e.has(t)},r.get=function(r,o){var i=e.get(r,v);return i===v?o:t.call(n,i,r,e)},r.__iterateUncached=function(r,o){var i=this;return e.__iterate(function(e,o,a){return!1!==r(t.call(n,e,o,a),o,i)},o)},r.__iteratorUncached=function(r,o){var i=e.__iterator(M,o);return new U(function(){var o=i.next();if(o.done)return o;var a=o.value,s=a[0];return j(r,s,t.call(n,a[1],s,e),o)})},r}function Bt(e,t){var n=Zt(e);return n._iter=e,n.size=e.size,n.reverse=function(){return e},e.flip&&(n.flip=function(){var t=Ut(e);return t.reverse=function(){return e.flip()},t}),n.get=function(n,r){return e.get(t?n:-1-n,r)},n.has=function(n){return e.has(t?n:-1-n)},n.includes=function(t){return e.includes(t)},n.cacheResult=en,n.__iterate=function(t,n){var r=this;return e.__iterate(function(e,n){return t(e,n,r)},!n)},n.__iterator=function(t,n){return e.__iterator(t,!n)},n}function Gt(e,t,n,r){var o=Zt(e);return r&&(o.has=function(r){var o=e.get(r,v);return o!==v&&!!t.call(n,o,r,e)},o.get=function(r,o){var i=e.get(r,v);return i!==v&&t.call(n,i,r,e)?i:o}),o.__iterateUncached=function(o,i){var a=this,s=0;return e.__iterate(function(e,i,l){if(t.call(n,e,i,l))return s++,o(e,r?i:s-1,a)},i),s},o.__iteratorUncached=function(o,i){var a=e.__iterator(M,i),s=0;return new U(function(){for(;;){var i=a.next();if(i.done)return i;var l=i.value,u=l[0],c=l[1];if(t.call(n,c,u,e))return j(o,r?u:s++,c,i)}})},o}function qt(e,t,n,r){var o=e.size;if(void 0!==t&&(t|=0),void 0!==n&&(n|=0),x(t,n,o))return e;var i=R(t,o),a=N(n,o);if(i!=i||a!=a)return qt(e.toSeq().cacheResult(),t,n,r);var s,l=a-i;l==l&&(s=l<0?0:l);var u=Zt(e);return u.size=0===s?s:e.size&&s||void 0,!r&&oe(e)&&s>=0&&(u.get=function(t,n){return(t=T(this,t))>=0&&ts)return{value:void 0,done:!0};var e=o.next();return r||t===A?e:j(t,l-1,t===O?void 0:e.value[1],e)})},u}function Vt(e,t,n,r){var o=Zt(e);return o.__iterateUncached=function(o,i){var a=this;if(i)return this.cacheResult().__iterate(o,i);var s=!0,l=0;return e.__iterate(function(e,i,u){if(!s||!(s=t.call(n,e,i,u)))return l++,o(e,r?i:l-1,a)}),l},o.__iteratorUncached=function(o,i){var a=this;if(i)return this.cacheResult().__iterator(o,i);var s=e.__iterator(M,i),l=!0,u=0;return new U(function(){var e,i,c;do{if((e=s.next()).done)return r||o===A?e:j(o,u++,o===O?void 0:e.value[1],e);var f=e.value;i=f[0],c=f[1],l&&(l=t.call(n,c,i,a))}while(l);return o===M?e:j(o,i,c,e)})},o}function Ht(e,t,n){var r=Zt(e);return r.__iterateUncached=function(r,o){var i=0,s=!1;return function e(l,u){var c=this;l.__iterate(function(o,l){return(!t||u0}function Kt(e,t,r){var o=Zt(e);return o.size=new ee(r).map(function(e){return e.size}).min(),o.__iterate=function(e,t){for(var n,r=this.__iterator(A,t),o=0;!(n=r.next()).done&&!1!==e(n.value,o++,this););return o},o.__iteratorUncached=function(e,o){var i=r.map(function(e){return e=n(e),V(o?e.reverse():e)}),a=0,s=!1;return new U(function(){var n;return s||(n=i.map(function(e){return e.next()}),s=n.some(function(e){return e.done})),s?{value:void 0,done:!0}:j(e,a++,t.apply(null,n.map(function(e){return e.value})))})},o}function $t(e,t){return oe(e)?t:e.constructor(t)}function Qt(e){if(e!==Object(e))throw new TypeError("Expected [K, V] tuple: "+e)}function Xt(e){return Fe(e.size),w(e)}function Jt(e){return s(e)?r:l(e)?o:i}function Zt(e){return Object.create((s(e)?W:l(e)?K:$).prototype)}function en(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):z.prototype.cacheResult.call(this)}function tn(e,t){return e>t?1:e=0;n--)t={value:arguments[n],next:t};return this.__ownerID?(this.size=e,this._head=t,this.__hash=void 0,this.__altered=!0,this):kn(e,t)},Cn.prototype.pushAll=function(e){if(0===(e=o(e)).size)return this;Fe(e.size);var t=this.size,n=this._head;return e.reverse().forEach(function(e){t++,n={value:e,next:n}}),this.__ownerID?(this.size=t,this._head=n,this.__hash=void 0,this.__altered=!0,this):kn(t,n)},Cn.prototype.pop=function(){return this.slice(1)},Cn.prototype.unshift=function(){return this.push.apply(this,arguments)},Cn.prototype.unshiftAll=function(e){return this.pushAll(e)},Cn.prototype.shift=function(){return this.pop.apply(this,arguments)},Cn.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):xn()},Cn.prototype.slice=function(e,t){if(x(e,t,this.size))return this;var n=R(e,this.size),r=N(t,this.size);if(r!==this.size)return Ee.prototype.slice.call(this,e,t);for(var o=this.size-n,i=this._head;n--;)i=i.next;return this.__ownerID?(this.size=o,this._head=i,this.__hash=void 0,this.__altered=!0,this):kn(o,i)},Cn.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?kn(this.size,this._head,e,this.__hash):(this.__ownerID=e,this.__altered=!1,this)},Cn.prototype.__iterate=function(e,t){if(t)return this.reverse().__iterate(e);for(var n=0,r=this._head;r&&!1!==e(r.value,n++,this);)r=r.next;return n},Cn.prototype.__iterator=function(e,t){if(t)return this.reverse().__iterator(e);var n=0,r=this._head;return new U(function(){if(r){var t=r.value;return r=r.next,j(e,n++,t)}return{value:void 0,done:!0}})},Cn.isStack=Sn;var Dn,wn="@@__IMMUTABLE_STACK__@@",Tn=Cn.prototype;function kn(e,t,n,r){var o=Object.create(Tn);return o.size=e,o._head=t,o.__ownerID=n,o.__hash=r,o.__altered=!1,o}function xn(){return Dn||(Dn=kn(0))}function Rn(e,t){var n=function(n){e.prototype[n]=t[n]};return Object.keys(t).forEach(n),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(t).forEach(n),e}Tn[wn]=!0,Tn.withMutations=qe.withMutations,Tn.asMutable=qe.asMutable,Tn.asImmutable=qe.asImmutable,Tn.wasAltered=qe.wasAltered,n.Iterator=U,Rn(n,{toArray:function(){Fe(this.size);var e=new Array(this.size||0);return this.valueSeq().__iterate(function(t,n){e[n]=t}),e},toIndexedSeq:function(){return new Pt(this)},toJS:function(){return this.toSeq().map(function(e){return e&&"function"==typeof e.toJS?e.toJS():e}).__toJS()},toJSON:function(){return this.toSeq().map(function(e){return e&&"function"==typeof e.toJSON?e.toJSON():e}).__toJS()},toKeyedSeq:function(){return new Mt(this,!0)},toMap:function(){return Ue(this.toKeyedSeq())},toObject:function(){Fe(this.size);var e={};return this.__iterate(function(t,n){e[n]=t}),e},toOrderedMap:function(){return Rt(this.toKeyedSeq())},toOrderedSet:function(){return _n(s(this)?this.valueSeq():this)},toSet:function(){return ln(s(this)?this.valueSeq():this)},toSetSeq:function(){return new Lt(this)},toSeq:function(){return l(this)?this.toIndexedSeq():s(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return Cn(s(this)?this.valueSeq():this)},toList:function(){return dt(s(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(e,t){return 0===this.size?e+t:e+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+t},concat:function(){var t=e.call(arguments,0);return $t(this,function(e,t){var n=s(e),o=[e].concat(t).map(function(e){return a(e)?n&&(e=r(e)):e=n?ae(e):se(Array.isArray(e)?e:[e]),e}).filter(function(e){return 0!==e.size});if(0===o.length)return e;if(1===o.length){var i=o[0];if(i===e||n&&s(i)||l(e)&&l(i))return i}var u=new ee(o);return n?u=u.toKeyedSeq():l(e)||(u=u.toSetSeq()),(u=u.flatten(!0)).size=o.reduce(function(e,t){if(void 0!==e){var n=t.size;if(void 0!==n)return e+n}},0),u}(this,t))},includes:function(e){return this.some(function(t){return me(t,e)})},entries:function(){return this.__iterator(M)},every:function(e,t){Fe(this.size);var n=!0;return this.__iterate(function(r,o,i){if(!e.call(t,r,o,i))return n=!1,!1}),n},filter:function(e,t){return $t(this,Gt(this,e,t,!0))},find:function(e,t,n){var r=this.findEntry(e,t);return r?r[1]:n},findEntry:function(e,t){var n;return this.__iterate(function(r,o,i){if(e.call(t,r,o,i))return n=[o,r],!1}),n},findLastEntry:function(e,t){return this.toSeq().reverse().findEntry(e,t)},forEach:function(e,t){return Fe(this.size),this.__iterate(t?e.bind(t):e)},join:function(e){Fe(this.size),e=void 0!==e?""+e:",";var t="",n=!0;return this.__iterate(function(r){n?n=!1:t+=e,t+=null!==r&&void 0!==r?r.toString():""}),t},keys:function(){return this.__iterator(O)},map:function(e,t){return $t(this,jt(this,e,t))},reduce:function(e,t,n){var r,o;return Fe(this.size),arguments.length<2?o=!0:r=t,this.__iterate(function(t,i,a){o?(o=!1,r=t):r=e.call(n,r,t,i,a)}),r},reduceRight:function(e,t,n){var r=this.toKeyedSeq().reverse();return r.reduce.apply(r,arguments)},reverse:function(){return $t(this,Bt(this,!0))},slice:function(e,t){return $t(this,qt(this,e,t,!0))},some:function(e,t){return!this.every(Mn(e),t)},sort:function(e){return $t(this,Yt(this,e))},values:function(){return this.__iterator(A)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some(function(){return!0})},count:function(e,t){return w(e?this.toSeq().filter(e,t):this)},countBy:function(e,t){return function(e,t,n){var r=Ue().asMutable();return e.__iterate(function(o,i){r.update(t.call(n,o,i,e),0,function(e){return e+1})}),r.asImmutable()}(this,e,t)},equals:function(e){return he(this,e)},entrySeq:function(){var e=this;if(e._cache)return new ee(e._cache);var t=e.toSeq().map(An).toIndexedSeq();return t.fromEntrySeq=function(){return e.toSeq()},t},filterNot:function(e,t){return this.filter(Mn(e),t)},findLast:function(e,t,n){return this.toKeyedSeq().reverse().find(e,t,n)},first:function(){return this.find(k)},flatMap:function(e,t){return $t(this,function(e,t,n){var r=Jt(e);return e.toSeq().map(function(o,i){return r(t.call(n,o,i,e))}).flatten(!0)}(this,e,t))},flatten:function(e){return $t(this,Ht(this,e,!0))},fromEntrySeq:function(){return new Ft(this)},get:function(e,t){return this.find(function(t,n){return me(n,e)},void 0,t)},getIn:function(e,t){for(var n,r=this,o=nn(e);!(n=o.next()).done;){var i=n.value;if((r=r&&r.get?r.get(i,v):v)===v)return t}return r},groupBy:function(e,t){return function(e,t,n){var r=s(e),o=(c(e)?Rt():Ue()).asMutable();e.__iterate(function(i,a){o.update(t.call(n,i,a,e),function(e){return(e=e||[]).push(r?[a,i]:i),e})});var i=Jt(e);return o.map(function(t){return $t(e,i(t))})}(this,e,t)},has:function(e){return this.get(e,v)!==v},hasIn:function(e){return this.getIn(e,v)!==v},isSubset:function(e){return e="function"==typeof e.includes?e:n(e),this.every(function(t){return e.includes(t)})},isSuperset:function(e){return(e="function"==typeof e.isSubset?e:n(e)).isSubset(this)},keySeq:function(){return this.toSeq().map(On).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},max:function(e){return zt(this,e)},maxBy:function(e,t){return zt(this,t,e)},min:function(e){return zt(this,e?Pn(e):Un)},minBy:function(e,t){return zt(this,t?Pn(t):Un,e)},rest:function(){return this.slice(1)},skip:function(e){return this.slice(Math.max(0,e))},skipLast:function(e){return $t(this,this.toSeq().reverse().skip(e).reverse())},skipWhile:function(e,t){return $t(this,Vt(this,e,t,!0))},skipUntil:function(e,t){return this.skipWhile(Mn(e),t)},sortBy:function(e,t){return $t(this,Yt(this,t,e))},take:function(e){return this.slice(0,Math.max(0,e))},takeLast:function(e){return $t(this,this.toSeq().reverse().take(e).reverse())},takeWhile:function(e,t){return $t(this,function(e,t,n){var r=Zt(e);return r.__iterateUncached=function(r,o){var i=this;if(o)return this.cacheResult().__iterate(r,o);var a=0;return e.__iterate(function(e,o,s){return t.call(n,e,o,s)&&++a&&r(e,o,i)}),a},r.__iteratorUncached=function(r,o){var i=this;if(o)return this.cacheResult().__iterator(r,o);var a=e.__iterator(M,o),s=!0;return new U(function(){if(!s)return{value:void 0,done:!0};var e=a.next();if(e.done)return e;var o=e.value,l=o[0],u=o[1];return t.call(n,u,l,i)?r===M?e:j(r,l,u,e):(s=!1,{value:void 0,done:!0})})},r}(this,e,t))},takeUntil:function(e,t){return this.takeWhile(Mn(e),t)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=function(e){if(e.size===1/0)return 0;var t=c(e),n=s(e),r=t?1:0;return function(e,t){return t=Se(t,3432918353),t=Se(t<<15|t>>>-15,461845907),t=Se(t<<13|t>>>-13,5),t=Se((t=(t+3864292196|0)^e)^t>>>16,2246822507),t=De((t=Se(t^t>>>13,3266489909))^t>>>16)}(e.__iterate(n?t?function(e,t){r=31*r+jn(we(e),we(t))|0}:function(e,t){r=r+jn(we(e),we(t))|0}:t?function(e){r=31*r+we(e)|0}:function(e){r=r+we(e)|0}),r)}(this))}});var Nn=n.prototype;Nn[f]=!0,Nn[F]=Nn.values,Nn.__toJS=Nn.toArray,Nn.__toStringMapper=Ln,Nn.inspect=Nn.toSource=function(){return this.toString()},Nn.chain=Nn.flatMap,Nn.contains=Nn.includes,function(){try{Object.defineProperty(Nn,"length",{get:function(){if(!n.noLengthWarning){var e;try{throw new Error}catch(t){e=t.stack}if(-1===e.indexOf("_wrapObject"))return console&&console.warn&&console.warn("iterable.length has been deprecated, use iterable.size or iterable.count(). This warning will become a silent error in a future version. "+e),this.size}}})}catch(e){}}(),Rn(r,{flip:function(){return $t(this,Ut(this))},findKey:function(e,t){var n=this.findEntry(e,t);return n&&n[0]},findLastKey:function(e,t){return this.toSeq().reverse().findKey(e,t)},keyOf:function(e){return this.findKey(function(t){return me(t,e)})},lastKeyOf:function(e){return this.findLastKey(function(t){return me(t,e)})},mapEntries:function(e,t){var n=this,r=0;return $t(this,this.toSeq().map(function(o,i){return e.call(t,[i,o],r++,n)}).fromEntrySeq())},mapKeys:function(e,t){var n=this;return $t(this,this.toSeq().flip().map(function(r,o){return e.call(t,r,o,n)}).flip())}});var In=r.prototype;function On(e,t){return t}function An(e,t){return[t,e]}function Mn(e){return function(){return!e.apply(this,arguments)}}function Pn(e){return function(){return-e.apply(this,arguments)}}function Ln(e){return"string"==typeof e?JSON.stringify(e):e}function Fn(){return D(arguments)}function Un(e,t){return et?-1:0}function jn(e,t){return e^t+2654435769+(e<<6)+(e>>2)|0}return In[d]=!0,In[F]=Nn.entries,In.__toJS=Nn.toObject,In.__toStringMapper=function(e,t){return JSON.stringify(t)+": "+Ln(e)},Rn(o,{toKeyedSeq:function(){return new Mt(this,!1)},filter:function(e,t){return $t(this,Gt(this,e,t,!1))},findIndex:function(e,t){var n=this.findEntry(e,t);return n?n[0]:-1},indexOf:function(e){var t=this.toKeyedSeq().keyOf(e);return void 0===t?-1:t},lastIndexOf:function(e){var t=this.toKeyedSeq().reverse().keyOf(e);return void 0===t?-1:t},reverse:function(){return $t(this,Bt(this,!1))},slice:function(e,t){return $t(this,qt(this,e,t,!1))},splice:function(e,t){var n=arguments.length;if(t=Math.max(0|t,0),0===n||2===n&&!t)return this;e=R(e,e<0?this.count():this.size);var r=this.slice(0,e);return $t(this,1===n?r:r.concat(D(arguments,2),this.slice(e+t)))},findLastIndex:function(e,t){var n=this.toKeyedSeq().findLastKey(e,t);return void 0===n?-1:n},first:function(){return this.get(0)},flatten:function(e){return $t(this,Ht(this,e,!1))},get:function(e,t){return(e=T(this,e))<0||this.size===1/0||void 0!==this.size&&e>this.size?t:this.find(function(t,n){return n===e},void 0,t)},has:function(e){return(e=T(this,e))>=0&&(void 0!==this.size?this.size===1/0||e0;)p(e)}function p(e){var t=e.shift();if("function"!=typeof t)t._settlePromises();else{var n=e.shift(),r=e.shift();t.call(n,r)}}l.prototype.setScheduler=function(e){var t=this._schedule;return this._schedule=e,this._customScheduler=!0,t},l.prototype.hasCustomScheduler=function(){return this._customScheduler},l.prototype.enableTrampoline=function(){this._trampolineEnabled=!0},l.prototype.disableTrampolineIfNecessary=function(){s.hasDevTools&&(this._trampolineEnabled=!1)},l.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues},l.prototype.fatalError=function(e,n){n?(t.stderr.write("Fatal "+(e instanceof Error?e.stack:e)+"\n"),t.exit(2)):this.throwLater(e)},l.prototype.throwLater=function(e,t){if(1===arguments.length&&(t=e,e=function(){throw t}),"undefined"!=typeof setTimeout)setTimeout(function(){e(t)},0);else try{this._schedule(function(){e(t)})}catch(e){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}},s.hasDevTools?(l.prototype.invokeLater=function(e,t,n){this._trampolineEnabled?u.call(this,e,t,n):this._schedule(function(){setTimeout(function(){e.call(t,n)},100)})},l.prototype.invoke=function(e,t,n){this._trampolineEnabled?c.call(this,e,t,n):this._schedule(function(){e.call(t,n)})},l.prototype.settlePromises=function(e){this._trampolineEnabled?f.call(this,e):this._schedule(function(){e._settlePromises()})}):(l.prototype.invokeLater=u,l.prototype.invoke=c,l.prototype.settlePromises=f),l.prototype._drainQueues=function(){d(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,d(this._lateQueue)},l.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},l.prototype._reset=function(){this._isTickUsed=!1},n.exports=l,n.exports.firstLineError=o},{"./queue":26,"./schedule":29,"./util":36}],3:[function(e,t,n){"use strict";t.exports=function(e,t,n,r){var o=!1,i=function(e,t){this._reject(t)},a=function(e,t){t.promiseRejectionQueued=!0,t.bindingPromise._then(i,i,null,this,e)},s=function(e,t){0==(50397184&this._bitField)&&this._resolveCallback(t.target)},l=function(e,t){t.promiseRejectionQueued||this._reject(e)};e.prototype.bind=function(i){o||(o=!0,e.prototype._propagateFrom=r.propagateFromFunction(),e.prototype._boundValue=r.boundValueFunction());var u=n(i),c=new e(t);c._propagateFrom(this,1);var f=this._target();if(c._setBoundTo(u),u instanceof e){var d={promiseRejectionQueued:!1,promise:c,target:f,bindingPromise:u};f._then(t,a,void 0,c,d),u._then(s,l,void 0,c,d),c._setOnCancel(u)}else c._resolveCallback(f);return c},e.prototype._setBoundTo=function(e){void 0!==e?(this._bitField=2097152|this._bitField,this._boundTo=e):this._bitField=-2097153&this._bitField},e.prototype._isBound=function(){return 2097152==(2097152&this._bitField)},e.bind=function(t,n){return e.resolve(n).bind(t)}}},{}],4:[function(e,t,n){"use strict";var r;"undefined"!=typeof Promise&&(r=Promise);var o=e("./promise")();o.noConflict=function(){try{Promise===o&&(Promise=r)}catch(e){}return o},t.exports=o},{"./promise":22}],5:[function(e,t,n){"use strict";var r=Object.create;if(r){var o=r(null),i=r(null);o[" size"]=i[" size"]=0}t.exports=function(t){var n=e("./util"),r=n.canEvaluate;function o(e){var r=this.pop(),o=function(e,r){var o;if(null!=e&&(o=e[r]),"function"!=typeof o){var i="Object "+n.classString(e)+" has no method '"+n.toString(r)+"'";throw new t.TypeError(i)}return o}(e,r);return o.apply(e,this)}function i(e){return e[this]}function a(e){var t=+this;return t<0&&(t=Math.max(0,t+e.length)),e[t]}n.isIdentifier,t.prototype.call=function(e){var t=[].slice.call(arguments,1);return t.push(e),this._then(o,void 0,void 0,t,void 0)},t.prototype.get=function(e){var t,n="number"==typeof e;if(n)t=a;else if(r){var o=(void 0)(e);t=null!==o?o:i}else t=i;return this._then(t,void 0,void 0,e,void 0)}}},{"./util":36}],6:[function(e,t,n){"use strict";t.exports=function(t,n,r,o){var i=e("./util"),a=i.tryCatch,s=i.errorObj,l=t._async;t.prototype.break=t.prototype.cancel=function(){if(!o.cancellation())return this._warn("cancellation is disabled");for(var e=this,t=e;e._isCancellable();){if(!e._cancelBy(t)){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}var n=e._cancellationParent;if(null==n||!n._isCancellable()){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}e._isFollowing()&&e._followee().cancel(),e._setWillBeCancelled(),t=e,e=n}},t.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},t.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},t.prototype._cancelBy=function(e){return e===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},t.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},t.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),l.invoke(this._cancelPromises,this,void 0))},t.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},t.prototype._unsetOnCancel=function(){this._onCancelField=void 0},t.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},t.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},t.prototype._doInvokeOnCancel=function(e,t){if(i.isArray(e))for(var n=0;n=0)return n[e]}return e.prototype._promiseCreated=function(){},e.prototype._pushContext=function(){},e.prototype._popContext=function(){return null},e._peekContext=e.prototype._peekContext=function(){},r.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,n.push(this._trace))},r.prototype._popContext=function(){if(void 0!==this._trace){var e=n.pop(),t=e._promiseCreated;return e._promiseCreated=null,t}return null},r.CapturedTrace=null,r.create=function(){if(t)return new r},r.deactivateLongStackTraces=function(){},r.activateLongStackTraces=function(){var n=e.prototype._pushContext,i=e.prototype._popContext,a=e._peekContext,s=e.prototype._peekContext,l=e.prototype._promiseCreated;r.deactivateLongStackTraces=function(){e.prototype._pushContext=n,e.prototype._popContext=i,e._peekContext=a,e.prototype._peekContext=s,e.prototype._promiseCreated=l,t=!1},t=!0,e.prototype._pushContext=r.prototype._pushContext,e.prototype._popContext=r.prototype._popContext,e._peekContext=e.prototype._peekContext=o,e.prototype._promiseCreated=function(){var e=this._peekContext();e&&null==e._promiseCreated&&(e._promiseCreated=this)}},r}},{}],9:[function(e,n,r){"use strict";n.exports=function(n,r){var o,i,a,s=n._getDomain,l=n._async,u=e("./errors").Warning,c=e("./util"),f=e("./es5"),d=c.canAttachTrace,p=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,m=/\((?:timers\.js):\d+:\d+\)/,h=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,_=null,g=null,v=!1,y=!(0==c.env("BLUEBIRD_DEBUG")),b=!(0==c.env("BLUEBIRD_WARNINGS")||!y&&!c.env("BLUEBIRD_WARNINGS")),E=!(0==c.env("BLUEBIRD_LONG_STACK_TRACES")||!y&&!c.env("BLUEBIRD_LONG_STACK_TRACES")),C=0!=c.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(b||!!c.env("BLUEBIRD_W_FORGOTTEN_RETURN"));n.prototype.suppressUnhandledRejections=function(){var e=this._target();e._bitField=-1048577&e._bitField|524288},n.prototype._ensurePossibleRejectionHandled=function(){if(0==(524288&this._bitField)){this._setRejectionIsUnhandled();var e=this;setTimeout(function(){e._notifyUnhandledRejection()},1)}},n.prototype._notifyUnhandledRejectionIsHandled=function(){Y("rejectionHandled",o,void 0,this)},n.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},n.prototype._returnedNonUndefined=function(){return 0!=(268435456&this._bitField)},n.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var e=this._settledValue();this._setUnhandledRejectionIsNotified(),Y("unhandledRejection",i,e,this)}},n.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},n.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},n.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},n.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},n.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},n.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},n.prototype._warn=function(e,t,n){return G(e,t,n||this)},n.onPossiblyUnhandledRejection=function(e){var t=s();i="function"==typeof e?null===t?e:c.domainBind(t,e):void 0},n.onUnhandledRejectionHandled=function(e){var t=s();o="function"==typeof e?null===t?e:c.domainBind(t,e):void 0};var S=function(){};n.longStackTraces=function(){if(l.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!Z.longStackTraces&&W()){var e=n.prototype._captureStackTrace,t=n.prototype._attachExtraTrace,o=n.prototype._dereferenceTrace;Z.longStackTraces=!0,S=function(){if(l.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");n.prototype._captureStackTrace=e,n.prototype._attachExtraTrace=t,n.prototype._dereferenceTrace=o,r.deactivateLongStackTraces(),l.enableTrampoline(),Z.longStackTraces=!1},n.prototype._captureStackTrace=U,n.prototype._attachExtraTrace=j,n.prototype._dereferenceTrace=B,r.activateLongStackTraces(),l.disableTrampolineIfNecessary()}},n.hasLongStackTraces=function(){return Z.longStackTraces&&W()};var D=function(){try{if("function"==typeof CustomEvent){var e=new CustomEvent("CustomEvent");return c.global.dispatchEvent(e),function(e,t){var n={detail:t,cancelable:!0};f.defineProperty(n,"promise",{value:t.promise}),f.defineProperty(n,"reason",{value:t.reason});var r=new CustomEvent(e.toLowerCase(),n);return!c.global.dispatchEvent(r)}}if("function"==typeof Event){var e=new Event("CustomEvent");return c.global.dispatchEvent(e),function(e,t){var n=new Event(e.toLowerCase(),{cancelable:!0});return n.detail=t,f.defineProperty(n,"promise",{value:t.promise}),f.defineProperty(n,"reason",{value:t.reason}),!c.global.dispatchEvent(n)}}var e=document.createEvent("CustomEvent");return e.initCustomEvent("testingtheevent",!1,!0,{}),c.global.dispatchEvent(e),function(e,t){var n=document.createEvent("CustomEvent");return n.initCustomEvent(e.toLowerCase(),!1,!0,t),!c.global.dispatchEvent(n)}}catch(e){}return function(){return!1}}(),w=c.isNode?function(){return t.emit.apply(t,arguments)}:c.global?function(e){var t="on"+e.toLowerCase(),n=c.global[t];return!!n&&(n.apply(c.global,[].slice.call(arguments,1)),!0)}:function(){return!1};function T(e,t){return{promise:t}}var k={promiseCreated:T,promiseFulfilled:T,promiseRejected:T,promiseResolved:T,promiseCancelled:T,promiseChained:function(e,t,n){return{promise:t,child:n}},warning:function(e,t){return{warning:t}},unhandledRejection:function(e,t,n){return{reason:t,promise:n}},rejectionHandled:T},x=function(e){var t=!1;try{t=w.apply(null,arguments)}catch(e){l.throwLater(e),t=!0}var n=!1;try{n=D(e,k[e].apply(null,arguments))}catch(e){l.throwLater(e),n=!0}return n||t};function R(){return!1}function N(e,t,n){var r=this;try{e(t,n,function(e){if("function"!=typeof e)throw new TypeError("onCancel must be a function, got: "+c.toString(e));r._attachCancellationCallback(e)})}catch(e){return e}}function I(e){if(!this._isCancellable())return this;var t=this._onCancel();void 0!==t?c.isArray(t)?t.push(e):this._setOnCancel([t,e]):this._setOnCancel(e)}function O(){return this._onCancelField}function A(e){this._onCancelField=e}function M(){this._cancellationParent=void 0,this._onCancelField=void 0}function P(e,t){if(0!=(1&t)){this._cancellationParent=e;var n=e._branchesRemainingToCancel;void 0===n&&(n=0),e._branchesRemainingToCancel=n+1}0!=(2&t)&&e._isBound()&&this._setBoundTo(e._boundTo)}n.config=function(e){if("longStackTraces"in(e=Object(e))&&(e.longStackTraces?n.longStackTraces():!e.longStackTraces&&n.hasLongStackTraces()&&S()),"warnings"in e){var t=e.warnings;Z.warnings=!!t,C=Z.warnings,c.isObject(t)&&"wForgottenReturn"in t&&(C=!!t.wForgottenReturn)}if("cancellation"in e&&e.cancellation&&!Z.cancellation){if(l.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");n.prototype._clearCancellationData=M,n.prototype._propagateFrom=P,n.prototype._onCancel=O,n.prototype._setOnCancel=A,n.prototype._attachCancellationCallback=I,n.prototype._execute=N,L=P,Z.cancellation=!0}return"monitoring"in e&&(e.monitoring&&!Z.monitoring?(Z.monitoring=!0,n.prototype._fireEvent=x):!e.monitoring&&Z.monitoring&&(Z.monitoring=!1,n.prototype._fireEvent=R)),n},n.prototype._fireEvent=R,n.prototype._execute=function(e,t,n){try{e(t,n)}catch(e){return e}},n.prototype._onCancel=function(){},n.prototype._setOnCancel=function(e){},n.prototype._attachCancellationCallback=function(e){},n.prototype._captureStackTrace=function(){},n.prototype._attachExtraTrace=function(){},n.prototype._dereferenceTrace=function(){},n.prototype._clearCancellationData=function(){},n.prototype._propagateFrom=function(e,t){};var L=function(e,t){0!=(2&t)&&e._isBound()&&this._setBoundTo(e._boundTo)};function F(){var e=this._boundTo;return void 0!==e&&e instanceof n?e.isFulfilled()?e.value():void 0:e}function U(){this._trace=new X(this._peekContext())}function j(e,t){if(d(e)){var n=this._trace;if(void 0!==n&&t&&(n=n._parent),void 0!==n)n.attachExtraTrace(e);else if(!e.__stackCleaned__){var r=V(e);c.notEnumerableProp(e,"stack",r.message+"\n"+r.stack.join("\n")),c.notEnumerableProp(e,"__stackCleaned__",!0)}}}function B(){this._trace=void 0}function G(e,t,r){if(Z.warnings){var o,i=new u(e);if(t)r._attachExtraTrace(i);else if(Z.longStackTraces&&(o=n._peekContext()))o.attachExtraTrace(i);else{var a=V(i);i.stack=a.message+"\n"+a.stack.join("\n")}x("warning",i)||H(i,"",!0)}}function q(e){for(var t=[],n=0;n0?function(e){for(var t=e.stack.replace(/\s+$/g,"").split("\n"),n=0;n0&&"SyntaxError"!=e.name&&(t=t.slice(n)),t}(e):[" (No stack trace)"],{message:n,stack:"SyntaxError"==e.name?t:q(t)}}function H(e,t,n){if("undefined"!=typeof console){var r;if(c.isObject(e)){var o=e.stack;r=t+g(o,e)}else r=t+String(e);"function"==typeof a?a(r,n):"function"!=typeof console.log&&"object"!=typeof console.log||console.log(r)}}function Y(e,t,n,r){var o=!1;try{"function"==typeof t&&(o=!0,"rejectionHandled"===e?t(r):t(n,r))}catch(e){l.throwLater(e)}"unhandledRejection"===e?x(e,n,r)||o||H(n,"Unhandled rejection "):x(e,r)}function z(e){var t;if("function"==typeof e)t="[function "+(e.name||"anonymous")+"]";else{if(t=e&&"function"==typeof e.toString?e.toString():c.toString(e),/\[object [a-zA-Z0-9$_]+\]/.test(t))try{var n=JSON.stringify(e);t=n}catch(e){}0===t.length&&(t="(empty array)")}return"(<"+function(e){return e.length<41?e:e.substr(0,38)+"..."}(t)+">, no stack trace)"}function W(){return"function"==typeof J}var K=function(){return!1},$=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function Q(e){var t=e.match($);if(t)return{fileName:t[1],line:parseInt(t[2],10)}}function X(e){this._parent=e,this._promisesCreated=0;var t=this._length=1+(void 0===e?0:e._length);J(this,X),t>32&&this.uncycle()}c.inherits(X,Error),r.CapturedTrace=X,X.prototype.uncycle=function(){var e=this._length;if(!(e<2)){for(var t=[],n={},r=0,o=this;void 0!==o;++r)t.push(o),o=o._parent;for(var r=(e=this._length=r)-1;r>=0;--r){var i=t[r].stack;void 0===n[i]&&(n[i]=r)}for(var r=0;r0&&(t[s-1]._parent=void 0,t[s-1]._length=1),t[r]._parent=void 0,t[r]._length=1;var l=r>0?t[r-1]:this;s=0;--c)t[c]._length=u,u++;return}}}},X.prototype.attachExtraTrace=function(e){if(!e.__stackCleaned__){this.uncycle();for(var t=V(e),n=t.message,r=[t.stack],o=this;void 0!==o;)r.push(q(o.stack.split("\n"))),o=o._parent;!function(e){for(var t=e[0],n=1;n=0;--s)if(r[s]===i){a=s;break}for(var s=a;s>=0;--s){var l=r[s];if(t[o]!==l)break;t.pop(),o--}t=r}}(r),function(e){for(var t=0;t=0)return _=/@/,g=t,v=!0,function(e){e.stack=(new Error).stack};try{throw new Error}catch(e){r="stack"in e}return"stack"in o||!r||"number"!=typeof Error.stackTraceLimit?(g=function(e,t){return"string"==typeof e?e:"object"!=typeof t&&"function"!=typeof t||void 0===t.name||void 0===t.message?z(t):t.toString()},null):(_=e,g=t,function(e){Error.stackTraceLimit+=6;try{throw new Error}catch(t){e.stack=t.stack}Error.stackTraceLimit-=6})}();"undefined"!=typeof console&&void 0!==console.warn&&(a=function(e){console.warn(e)},c.isNode&&t.stderr.isTTY?a=function(e,t){var n=t?"":"";console.warn(n+e+"\n")}:c.isNode||"string"!=typeof(new Error).stack||(a=function(e,t){console.warn("%c"+e,t?"color: darkorange":"color: red")}));var Z={warnings:b,longStackTraces:!1,cancellation:!1,monitoring:!1};return E&&n.longStackTraces(),{longStackTraces:function(){return Z.longStackTraces},warnings:function(){return Z.warnings},cancellation:function(){return Z.cancellation},monitoring:function(){return Z.monitoring},propagateFromFunction:function(){return L},boundValueFunction:function(){return F},checkForgottenReturns:function(e,t,n,r,o){if(void 0===e&&null!==t&&C){if(void 0!==o&&o._returnedNonUndefined())return;if(0==(65535&r._bitField))return;n&&(n+=" ");var i="",a="";if(t._trace){for(var s=t._trace.stack.split("\n"),l=q(s),u=l.length-1;u>=0;--u){var c=l[u];if(!m.test(c)){var f=c.match(h);f&&(i="at "+f[1]+":"+f[2]+":"+f[3]+" ");break}}if(l.length>0)for(var d=l[0],u=0;u0&&(a="\n"+s[u-1]);break}}var p="a promise was created in a "+n+"handler "+i+"but was not returned from it, see http://goo.gl/rRqMUw"+a;r._warn(p,!0,t)}},setBounds:function(e,t){if(W()){for(var n,r,o=e.stack.split("\n"),i=t.stack.split("\n"),a=-1,s=-1,l=0;l=s||(K=function(e){if(p.test(e))return!0;var t=Q(e);return!!(t&&t.fileName===n&&a<=t.line&&t.line<=s)})}},warn:G,deprecated:function(e,t){var n=e+" is deprecated and will be removed in a future version.";return t&&(n+=" Use "+t+" instead."),G(n)},CapturedTrace:X,fireDomEvent:D,fireGlobalEvent:w}}},{"./errors":12,"./es5":13,"./util":36}],10:[function(e,t,n){"use strict";t.exports=function(e){function t(){return this.value}function n(){throw this.reason}e.prototype.return=e.prototype.thenReturn=function(n){return n instanceof e&&n.suppressUnhandledRejections(),this._then(t,void 0,void 0,{value:n},void 0)},e.prototype.throw=e.prototype.thenThrow=function(e){return this._then(n,void 0,void 0,{reason:e},void 0)},e.prototype.catchThrow=function(e){if(arguments.length<=1)return this._then(void 0,n,void 0,{reason:e},void 0);var t=arguments[1];return this.caught(e,function(){throw t})},e.prototype.catchReturn=function(n){if(arguments.length<=1)return n instanceof e&&n.suppressUnhandledRejections(),this._then(void 0,t,void 0,{value:n},void 0);var r=arguments[1];return r instanceof e&&r.suppressUnhandledRejections(),this.caught(n,function(){return r})}}},{}],11:[function(e,t,n){"use strict";t.exports=function(e,t){var n=e.reduce,r=e.all;function o(){return r(this)}e.prototype.each=function(e){return n(this,e,t,0)._then(o,void 0,void 0,this,void 0)},e.prototype.mapSeries=function(e){return n(this,e,t,t)},e.each=function(e,r){return n(e,r,t,0)._then(o,void 0,void 0,e,void 0)},e.mapSeries=function(e,r){return n(e,r,t,t)}}},{}],12:[function(e,t,n){"use strict";var r,o,i=e("./es5"),a=i.freeze,s=e("./util"),l=s.inherits,u=s.notEnumerableProp;function c(e,t){function n(r){if(!(this instanceof n))return new n(r);u(this,"message","string"==typeof r?r:t),u(this,"name",e),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return l(n,Error),n}var f=c("Warning","warning"),d=c("CancellationError","cancellation error"),p=c("TimeoutError","timeout error"),m=c("AggregateError","aggregate error");try{r=TypeError,o=RangeError}catch(e){r=c("TypeError","type error"),o=c("RangeError","range error")}for(var h="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),_=0;_1?e.cancelPromise._reject(t):e.cancelPromise._cancel(),e.cancelPromise=null,!0)}function f(){return p.call(this,this.promise._target()._settledValue())}function d(e){if(!c(this,e))return a.e=e,a}function p(e){var o=this.promise,s=this.handler;if(!this.called){this.called=!0;var l=this.isFinallyHandler()?s.call(o._boundValue()):s.call(o._boundValue(),e);if(l===r)return l;if(void 0!==l){o._setReturnedNonUndefined();var p=n(l,o);if(p instanceof t){if(null!=this.cancelPromise){if(p._isCancelled()){var m=new i("late cancellation observer");return o._attachExtraTrace(m),a.e=m,a}p.isPending()&&p._attachCancellationCallback(new u(this))}return p._then(f,d,void 0,this,void 0)}}}return o.isRejected()?(c(this),a.e=e,a):(c(this),e)}return l.prototype.isFinallyHandler=function(){return 0===this.type},u.prototype._resultCancelled=function(){c(this.finallyHandler)},t.prototype._passThrough=function(e,t,n,r){return"function"!=typeof e?this.then():this._then(n,r,void 0,new l(this,t,e),void 0)},t.prototype.lastly=t.prototype.finally=function(e){return this._passThrough(e,0,p,p)},t.prototype.tap=function(e){return this._passThrough(e,1,p)},t.prototype.tapCatch=function(e){var n=arguments.length;if(1===n)return this._passThrough(e,1,void 0,p);var r,i=new Array(n-1),a=0;for(r=0;r0&&"function"==typeof arguments[t]&&(e=arguments[t]);var r=[].slice.call(arguments);e&&r.pop();var o=new n(r).promise();return void 0!==e?o.spread(e):o}}},{"./util":36}],18:[function(e,t,n){"use strict";t.exports=function(t,n,r,o,i,a){var s=t._getDomain,l=e("./util"),u=l.tryCatch,c=l.errorObj,f=t._async;function d(e,t,n,r){this.constructor$(e),this._promise._captureStackTrace();var o=s();this._callback=null===o?t:l.domainBind(o,t),this._preservedValues=r===i?new Array(this.length()):null,this._limit=n,this._inFlight=0,this._queue=[],f.invoke(this._asyncInit,this,void 0)}function p(e,n,o,i){if("function"!=typeof n)return r("expecting a function but got "+l.classString(n));var a=0;if(void 0!==o){if("object"!=typeof o||null===o)return t.reject(new TypeError("options argument must be an object but it is "+l.classString(o)));if("number"!=typeof o.concurrency)return t.reject(new TypeError("'concurrency' must be a number but it is "+l.classString(o.concurrency)));a=o.concurrency}return a="number"==typeof a&&isFinite(a)&&a>=1?a:0,new d(e,n,a,i).promise()}l.inherits(d,n),d.prototype._asyncInit=function(){this._init$(void 0,-2)},d.prototype._init=function(){},d.prototype._promiseFulfilled=function(e,n){var r=this._values,i=this.length(),s=this._preservedValues,l=this._limit;if(n<0){if(r[n=-1*n-1]=e,l>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(l>=1&&this._inFlight>=l)return r[n]=e,this._queue.push(n),!1;null!==s&&(s[n]=e);var f=this._promise,d=this._callback,p=f._boundValue();f._pushContext();var m=u(d).call(p,e,n,i),h=f._popContext();if(a.checkForgottenReturns(m,h,null!==s?"Promise.filter":"Promise.map",f),m===c)return this._reject(m.e),!0;var _=o(m,this._promise);if(_ instanceof t){var g=(_=_._target())._bitField;if(0==(50397184&g))return l>=1&&this._inFlight++,r[n]=_,_._proxy(this,-1*(n+1)),!1;if(0==(33554432&g))return 0!=(16777216&g)?(this._reject(_._reason()),!0):(this._cancel(),!0);m=_._value()}r[n]=m}var v=++this._totalResolved;return v>=i&&(null!==s?this._filter(r,s):this._resolve(r),!0)},d.prototype._drainQueue=function(){for(var e=this._queue,t=this._limit,n=this._values;e.length>0&&this._inFlight1){i.deprecated("calling Promise.try with more than 1 argument");var u=arguments[1],c=arguments[2];r=a.isArray(u)?s(e).apply(c,u):s(e).call(c,u)}else r=s(e)();var f=l._popContext();return i.checkForgottenReturns(r,f,"Promise.try",l),l._resolveFromSyncValue(r),l},t.prototype._resolveFromSyncValue=function(e){e===a.errorObj?this._rejectCallback(e.e,!1):this._resolveCallback(e,!0)}}},{"./util":36}],20:[function(e,t,n){"use strict";var r=e("./util"),o=r.maybeWrapAsError,i=e("./errors"),a=i.OperationalError,s=e("./es5"),l=/^(?:name|message|stack|cause)$/;function u(e){var t;if(function(e){return e instanceof Error&&s.getPrototypeOf(e)===Error.prototype}(e)){(t=new a(e)).name=e.name,t.message=e.message,t.stack=e.stack;for(var n=s.keys(e),o=0;o1){var n,r=new Array(t-1),o=0;for(n=0;n0&&"function"!=typeof e&&"function"!=typeof t){var n=".then() only accepts functions but was passed: "+u.classString(e);arguments.length>1&&(n+=", "+u.classString(t)),this._warn(n)}return this._then(e,t,void 0,void 0,void 0)},R.prototype.done=function(e,t){var n=this._then(e,t,void 0,void 0,void 0);n._setIsFinal()},R.prototype.spread=function(e){return"function"!=typeof e?i("expecting a function but got "+u.classString(e)):this.all()._then(e,void 0,void 0,g,void 0)},R.prototype.toJSON=function(){var e={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(e.fulfillmentValue=this.value(),e.isFulfilled=!0):this.isRejected()&&(e.rejectionReason=this.reason(),e.isRejected=!0),e},R.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new b(this).promise()},R.prototype.error=function(e){return this.caught(u.originatesFromRejection,e)},R.getNewLibraryCopy=n.exports,R.is=function(e){return e instanceof R},R.fromNode=R.fromCallback=function(e){var t=new R(_);t._captureStackTrace();var n=arguments.length>1&&!!Object(arguments[1]).multiArgs,r=x(e)(T(t,n));return r===k&&t._rejectCallback(r.e,!0),t._isFateSealed()||t._setAsyncGuaranteed(),t},R.all=function(e){return new b(e).promise()},R.cast=function(e){var t=y(e);return t instanceof R||((t=new R(_))._captureStackTrace(),t._setFulfilled(),t._rejectionHandler0=e),t},R.resolve=R.fulfilled=R.cast,R.reject=R.rejected=function(e){var t=new R(_);return t._captureStackTrace(),t._rejectCallback(e,!0),t},R.setScheduler=function(e){if("function"!=typeof e)throw new m("expecting a function but got "+u.classString(e));return d.setScheduler(e)},R.prototype._then=function(e,t,n,r,o){var i=void 0!==o,a=i?o:new R(_),l=this._target(),c=l._bitField;i||(a._propagateFrom(this,3),a._captureStackTrace(),void 0===r&&0!=(2097152&this._bitField)&&(r=0!=(50397184&c)?this._boundValue():l===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,a));var f=s();if(0!=(50397184&c)){var p,m,g=l._settlePromiseCtx;0!=(33554432&c)?(m=l._rejectionHandler0,p=e):0!=(16777216&c)?(m=l._fulfillmentHandler0,p=t,l._unsetRejectionIsUnhandled()):(g=l._settlePromiseLateCancellationObserver,m=new h("late cancellation observer"),l._attachExtraTrace(m),p=t),d.invoke(g,l,{handler:null===f?p:"function"==typeof p&&u.domainBind(f,p),promise:a,receiver:r,value:m})}else l._addCallbacks(e,t,a,r,f);return a},R.prototype._length=function(){return 65535&this._bitField},R.prototype._isFateSealed=function(){return 0!=(117506048&this._bitField)},R.prototype._isFollowing=function(){return 67108864==(67108864&this._bitField)},R.prototype._setLength=function(e){this._bitField=-65536&this._bitField|65535&e},R.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},R.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},R.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},R.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},R.prototype._isFinal=function(){return(4194304&this._bitField)>0},R.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},R.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},R.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},R.prototype._setAsyncGuaranteed=function(){d.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},R.prototype._receiverAt=function(e){var t=0===e?this._receiver0:this[4*e-4+3];if(t!==l)return void 0===t&&this._isBound()?this._boundValue():t},R.prototype._promiseAt=function(e){return this[4*e-4+2]},R.prototype._fulfillmentHandlerAt=function(e){return this[4*e-4+0]},R.prototype._rejectionHandlerAt=function(e){return this[4*e-4+1]},R.prototype._boundValue=function(){},R.prototype._migrateCallback0=function(e){e._bitField;var t=e._fulfillmentHandler0,n=e._rejectionHandler0,r=e._promise0,o=e._receiverAt(0);void 0===o&&(o=l),this._addCallbacks(t,n,r,o,null)},R.prototype._migrateCallbackAt=function(e,t){var n=e._fulfillmentHandlerAt(t),r=e._rejectionHandlerAt(t),o=e._promiseAt(t),i=e._receiverAt(t);void 0===i&&(i=l),this._addCallbacks(n,r,o,i,null)},R.prototype._addCallbacks=function(e,t,n,r,o){var i=this._length();if(i>=65531&&(i=0,this._setLength(0)),0===i)this._promise0=n,this._receiver0=r,"function"==typeof e&&(this._fulfillmentHandler0=null===o?e:u.domainBind(o,e)),"function"==typeof t&&(this._rejectionHandler0=null===o?t:u.domainBind(o,t));else{var a=4*i-4;this[a+2]=n,this[a+3]=r,"function"==typeof e&&(this[a+0]=null===o?e:u.domainBind(o,e)),"function"==typeof t&&(this[a+1]=null===o?t:u.domainBind(o,t))}return this._setLength(i+1),i},R.prototype._proxy=function(e,t){this._addCallbacks(void 0,void 0,t,e,null)},R.prototype._resolveCallback=function(e,t){if(0==(117506048&this._bitField)){if(e===this)return this._rejectCallback(r(),!1);var n=y(e,this);if(!(n instanceof R))return this._fulfill(e);t&&this._propagateFrom(n,2);var o=n._target();if(o!==this){var i=o._bitField;if(0==(50397184&i)){var a=this._length();a>0&&o._migrateCallback0(this);for(var s=1;s>>16)){if(e===this){var n=r();return this._attachExtraTrace(n),this._reject(n)}this._setFulfilled(),this._rejectionHandler0=e,(65535&t)>0&&(0!=(134217728&t)?this._settlePromises():d.settlePromises(this),this._dereferenceTrace())}},R.prototype._reject=function(e){var t=this._bitField;if(!((117506048&t)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=e,this._isFinal())return d.fatalError(e,u.isNode);(65535&t)>0?d.settlePromises(this):this._ensurePossibleRejectionHandled()}},R.prototype._fulfillPromises=function(e,t){for(var n=1;n0){if(0!=(16842752&e)){var n=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,n,e),this._rejectPromises(t,n)}else{var r=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,r,e),this._fulfillPromises(t,r)}this._setLength(0)}this._clearCancellationData()},R.prototype._settledValue=function(){var e=this._bitField;return 0!=(33554432&e)?this._rejectionHandler0:0!=(16777216&e)?this._fulfillmentHandler0:void 0},R.defer=R.pending=function(){S.deprecated("Promise.defer","new Promise");var e=new R(_);return{promise:e,resolve:N,reject:I}},u.notEnumerableProp(R,"_makeSelfResolutionError",r),e("./method")(R,_,y,i,S),e("./bind")(R,_,y,S),e("./cancel")(R,b,i,S),e("./direct_resolve")(R),e("./synchronous_inspection")(R),e("./join")(R,b,y,_,d,s),R.Promise=R,R.version="3.5.2",e("./map.js")(R,b,i,y,_,S),e("./call_get.js")(R),e("./using.js")(R,i,y,C,_,S),e("./timers.js")(R,_,S),e("./generators.js")(R,i,_,y,a,S),e("./nodeify.js")(R),e("./promisify.js")(R,_),e("./props.js")(R,b,y,i),e("./race.js")(R,_,y,i),e("./reduce.js")(R,b,i,y,_,S),e("./settle.js")(R,b,S),e("./some.js")(R,b,i),e("./filter.js")(R,_),e("./each.js")(R,_),e("./any.js")(R),u.toFastProperties(R),u.toFastProperties(R.prototype),O({a:1}),O({b:2}),O({c:3}),O(1),O(function(){}),O(void 0),O(!1),O(new R(_)),S.setBounds(f.firstLineError,u.lastLineError),R}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(e,t,n){"use strict";t.exports=function(t,n,r,o,i){var a=e("./util");function s(e){var r=this._promise=new t(n);e instanceof t&&r._propagateFrom(e,3),r._setOnCancel(this),this._values=e,this._length=0,this._totalResolved=0,this._init(void 0,-2)}return a.isArray,a.inherits(s,i),s.prototype.length=function(){return this._length},s.prototype.promise=function(){return this._promise},s.prototype._init=function e(n,i){var s=r(this._values,this._promise);if(s instanceof t){var l=(s=s._target())._bitField;if(this._values=s,0==(50397184&l))return this._promise._setAsyncGuaranteed(),s._then(e,this._reject,void 0,this,i);if(0==(33554432&l))return 0!=(16777216&l)?this._reject(s._reason()):this._cancel();s=s._value()}if(null!==(s=a.asArray(s)))0!==s.length?this._iterate(s):-5===i?this._resolveEmptyArray():this._resolve(function(e){switch(e){case-2:return[];case-3:return{};case-6:return new Map}}(i));else{var u=o("expecting an array or an iterable object but got "+a.classString(s)).reason();this._promise._rejectCallback(u,!1)}},s.prototype._iterate=function(e){var n=this.getActualLength(e.length);this._length=n,this._values=this.shouldCopyValues()?new Array(n):this._values;for(var o=this._promise,i=!1,a=null,s=0;s=this._length&&(this._resolve(this._values),!0)},s.prototype._promiseCancelled=function(){return this._cancel(),!0},s.prototype._promiseRejected=function(e){return this._totalResolved++,this._reject(e),!0},s.prototype._resultCancelled=function(){if(!this._isResolved()){var e=this._values;if(this._cancel(),e instanceof t)e.cancel();else for(var n=0;n=this._length){var r;if(this._isMap)r=function(e){for(var t=new i,n=e.length/2|0,r=0;r>1},t.prototype.props=function(){return f(this)},t.props=function(e){return f(e)}}},{"./es5":13,"./util":36}],26:[function(e,t,n){"use strict";function r(e){this._capacity=e,this._length=0,this._front=0}r.prototype._willBeOverCapacity=function(e){return this._capacity=this._length&&(this._resolve(this._values),!0)},a.prototype._promiseFulfilled=function(e,t){var n=new o;return n._bitField=33554432,n._settledValueField=e,this._promiseResolved(t,n)},a.prototype._promiseRejected=function(e,t){var n=new o;return n._bitField=16777216,n._settledValueField=e,this._promiseResolved(t,n)},t.settle=function(e){return r.deprecated(".settle()",".reflect()"),new a(e).promise()},t.prototype.settle=function(){return t.settle(this)}}},{"./util":36}],31:[function(e,t,n){"use strict";t.exports=function(t,n,r){var o=e("./util"),i=e("./errors").RangeError,a=e("./errors").AggregateError,s=o.isArray,l={};function u(e){this.constructor$(e),this._howMany=0,this._unwrap=!1,this._initialized=!1}function c(e,t){if((0|t)!==t||t<0)return r("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var n=new u(e),o=n.promise();return n.setHowMany(t),n.init(),o}o.inherits(u,n),u.prototype._init=function(){if(this._initialized)if(0!==this._howMany){this._init$(void 0,-5);var e=s(this._values);!this._isResolved()&&e&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}else this._resolve([])},u.prototype.init=function(){this._initialized=!0,this._init()},u.prototype.setUnwrap=function(){this._unwrap=!0},u.prototype.howMany=function(){return this._howMany},u.prototype.setHowMany=function(e){this._howMany=e},u.prototype._promiseFulfilled=function(e){return this._addFulfilled(e),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},u.prototype._promiseRejected=function(e){return this._addRejected(e),this._checkOutcome()},u.prototype._promiseCancelled=function(){return this._values instanceof t||null==this._values?this._cancel():(this._addRejected(l),this._checkOutcome())},u.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var e=new a,t=this.length();t0?this._reject(e):this._cancel(),!0}return!1},u.prototype._fulfilled=function(){return this._totalResolved},u.prototype._rejected=function(){return this._values.length-this.length()},u.prototype._addRejected=function(e){this._values.push(e)},u.prototype._addFulfilled=function(e){this._values[this._totalResolved++]=e},u.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},u.prototype._getRangeError=function(e){var t="Input array must contain at least "+this._howMany+" items but contains only "+e+" items";return new i(t)},u.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},t.some=function(e,t){return c(e,t)},t.prototype.some=function(e){return c(this,e)},t._SomePromiseArray=u}},{"./errors":12,"./util":36}],32:[function(e,t,n){"use strict";t.exports=function(e){function t(e){void 0!==e?(e=e._target(),this._bitField=e._bitField,this._settledValueField=e._isFateSealed()?e._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}t.prototype._settledValue=function(){return this._settledValueField};var n=t.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},r=t.prototype.error=t.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},o=t.prototype.isFulfilled=function(){return 0!=(33554432&this._bitField)},i=t.prototype.isRejected=function(){return 0!=(16777216&this._bitField)},a=t.prototype.isPending=function(){return 0==(50397184&this._bitField)},s=t.prototype.isResolved=function(){return 0!=(50331648&this._bitField)};t.prototype.isCancelled=function(){return 0!=(8454144&this._bitField)},e.prototype.__isCancelled=function(){return 65536==(65536&this._bitField)},e.prototype._isCancelled=function(){return this._target().__isCancelled()},e.prototype.isCancelled=function(){return 0!=(8454144&this._target()._bitField)},e.prototype.isPending=function(){return a.call(this._target())},e.prototype.isRejected=function(){return i.call(this._target())},e.prototype.isFulfilled=function(){return o.call(this._target())},e.prototype.isResolved=function(){return s.call(this._target())},e.prototype.value=function(){return n.call(this._target())},e.prototype.reason=function(){var e=this._target();return e._unsetRejectionIsUnhandled(),r.call(e)},e.prototype._value=function(){return this._settledValue()},e.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},e.PromiseInspection=t}},{}],33:[function(e,t,n){"use strict";t.exports=function(t,n){var r=e("./util"),o=r.errorObj,i=r.isObject,a={}.hasOwnProperty;return function(e,s){if(i(e)){if(e instanceof t)return e;var l=function(e){try{return function(e){return e.then}(e)}catch(e){return o.e=e,o}}(e);if(l===o){s&&s._pushContext();var u=t.reject(l.e);return s&&s._popContext(),u}if("function"==typeof l){if(function(e){try{return a.call(e,"_promise0")}catch(e){return!1}}(e)){var u=new t(n);return e._then(u._fulfill,u._reject,void 0,u,null),u}return function(e,i,a){var s=new t(n),l=s;a&&a._pushContext(),s._captureStackTrace(),a&&a._popContext();var u=!0,c=r.tryCatch(i).call(e,function(e){s&&(s._resolveCallback(e),s=null)},function(e){s&&(s._rejectCallback(e,u,!0),s=null)});return u=!1,s&&c===o&&(s._rejectCallback(c.e,!0,!0),s=null),l}(e,l,s)}}return e}}},{"./util":36}],34:[function(e,t,n){"use strict";t.exports=function(t,n,r){var o=e("./util"),i=t.TimeoutError;function a(e){this.handle=e}a.prototype._resultCancelled=function(){clearTimeout(this.handle)};var s=function(e){return l(+this).thenReturn(e)},l=t.delay=function(e,o){var i,l;return void 0!==o?(i=t.resolve(o)._then(s,null,null,e,void 0),r.cancellation()&&o instanceof t&&i._setOnCancel(o)):(i=new t(n),l=setTimeout(function(){i._fulfill()},+e),r.cancellation()&&i._setOnCancel(new a(l)),i._captureStackTrace()),i._setAsyncGuaranteed(),i};function u(e){return clearTimeout(this.handle),e}function c(e){throw clearTimeout(this.handle),e}t.prototype.delay=function(e){return l(e,this)},t.prototype.timeout=function(e,t){var n,s;e=+e;var l=new a(setTimeout(function(){n.isPending()&&function(e,t,n){var r;r="string"!=typeof t?t instanceof Error?t:new i("operation timed out"):new i(t),o.markAsOriginatingFromRejection(r),e._attachExtraTrace(r),e._reject(r),null!=n&&n.cancel()}(n,t,s)},e));return r.cancellation()?(s=this.then(),(n=s._then(u,c,void 0,l,void 0))._setOnCancel(l)):n=this._then(u,c,void 0,l,void 0),n}}},{"./util":36}],35:[function(e,t,n){"use strict";t.exports=function(t,n,r,o,i,a){var s=e("./util"),l=e("./errors").TypeError,u=e("./util").inherits,c=s.errorObj,f=s.tryCatch,d={};function p(e){setTimeout(function(){throw e},0)}function m(e,n){var o=0,a=e.length,s=new t(i);return function i(){if(o>=a)return s._fulfill();var l=function(e){var t=r(e);return t!==e&&"function"==typeof e._isDisposable&&"function"==typeof e._getDisposer&&e._isDisposable()&&t._setDisposable(e._getDisposer()),t}(e[o++]);if(l instanceof t&&l._isDisposable()){try{l=r(l._getDisposer().tryDispose(n),e.promise)}catch(e){return p(e)}if(l instanceof t)return l._then(i,p,null,null,null)}i()}(),s}function h(e,t,n){this._data=e,this._promise=t,this._context=n}function _(e,t,n){this.constructor$(e,t,n)}function g(e){return h.isDisposer(e)?(this.resources[this.index]._setDisposable(e),e.promise()):e}function v(e){this.length=e,this.promise=null,this[e-1]=null}h.prototype.data=function(){return this._data},h.prototype.promise=function(){return this._promise},h.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():d},h.prototype.tryDispose=function(e){var t=this.resource(),n=this._context;void 0!==n&&n._pushContext();var r=t!==d?this.doDispose(t,e):null;return void 0!==n&&n._popContext(),this._promise._unsetDisposable(),this._data=null,r},h.isDisposer=function(e){return null!=e&&"function"==typeof e.resource&&"function"==typeof e.tryDispose},u(_,h),_.prototype.doDispose=function(e,t){var n=this.data();return n.call(e,e,t)},v.prototype._resultCancelled=function(){for(var e=this.length,n=0;n0},t.prototype._getDisposer=function(){return this._disposer},t.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},t.prototype.disposer=function(e){if("function"==typeof e)return new _(e,this,o());throw new l}}},{"./errors":12,"./util":36}],36:[function(e,r,o){"use strict";var i=e("./es5"),a="undefined"==typeof navigator,s={e:{}},l,u="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n?n:void 0!==this?this:null;function c(){try{var e=l;return l=null,e.apply(this,arguments)}catch(e){return s.e=e,s}}function f(e){return l=e,c}var d=function(e,t){var n={}.hasOwnProperty;function r(){for(var r in this.constructor=e,this.constructor$=t,t.prototype)n.call(t.prototype,r)&&"$"!==r.charAt(r.length-1)&&(this[r+"$"]=t.prototype[r])}return r.prototype=t.prototype,e.prototype=new r,e.prototype};function p(e){return null==e||!0===e||!1===e||"string"==typeof e||"number"==typeof e}function m(e){return"function"==typeof e||"object"==typeof e&&null!==e}function h(e){return p(e)?new Error(k(e)):e}function _(e,t){var n,r=e.length,o=new Array(r+1);for(n=0;n1,r=t.length>0&&!(1===t.length&&"constructor"===t[0]),o=E.test(e+"")&&i.names(e).length>0;if(n||r||o)return!0}return!1}catch(e){return!1}}function S(e){function t(){}t.prototype=e;var n=new t;function r(){return typeof n.foo}return r(),r(),e}var D=/^[a-z$_][a-z$_0-9]*$/i;function w(e){return D.test(e)}function T(e,t,n){for(var r=new Array(e),o=0;o10||e[0]>0}(),q.isNode&&q.toFastProperties(t);try{throw new Error}catch(e){q.lastLineError=e}r.exports=q},{"./es5":13}]},{},[4])(4)}(),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)}).call(this,n(64),n(16),n(213).setImmediate)},function(e,t,n){"use strict";(function(t){var r=u(n(11)),o=u(n(4)),i=u(n(5)),a=u(n(12)),s=u(n(232)),l=u(n(13));function u(e){return e&&e.__esModule?e:{default:e}}var c=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,l.default)(t,e),(0,i.default)(t,[{key:"dispatch",value:function(e,n){var o=this;"function"!=typeof e?n?(0,s.default)(t.prototype.__proto__||(0,r.default)(t.prototype),"dispatch",this).call(this,e):setTimeout((0,s.default)(t.prototype.__proto__||(0,r.default)(t.prototype),"dispatch",this).bind(this,e),0):e(function(e){o.dispatch(e,n)})}}]),t}(n(1168).Dispatcher);void 0===t.mxDispatcher&&(t.mxDispatcher=new c),e.exports=t.mxDispatcher}).call(this,n(16))},function(e,t,n){e.exports={default:n(995),__esModule:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(65));t.default=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":(0,r.default)(t))&&"function"!=typeof t?e:t}},function(e,t,n){"use strict";t.__esModule=!0;var r=a(n(1103)),o=a(n(77)),i=a(n(65));function a(e){return e&&e.__esModule?e:{default:e}}t.default=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":(0,i.default)(t)));e.prototype=(0,o.default)(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(r.default?(0,r.default)(e,t):e.__proto__=t)}},function(e,t,n){e.exports={default:n(215),__esModule:!0}},function(e,t,n){"use strict";(function(r){Object.defineProperty(t,"__esModule",{value:!0});var o=m(n(38)),i=m(n(61)),a=m(n(4)),s=m(n(5)),l=m(n(132)),u=m(n(1)),c=m(n(93)),f=m(n(3)),d=m(n(10)),p=n(2);function m(e){return e&&e.__esModule?e:{default:e}}var h=n(0),_=n(41),g=h.createClass({displayName:"AsyncWrapper",propTypes:{prom:u.default.object.isRequired},getInitialState:function(){return{component:null,error:null}},componentWillMount:function(){var e=this;this._unmounted=!1,console.log("Starting load of AsyncWrapper for modal"),this.props.prom.then(function(t){if(!e._unmounted){var n=t.default?t.default:t;e.setState({component:n})}}).catch(function(t){console.warn("AsyncWrapper promise failed",t),e.setState({error:t})})},componentWillUnmount:function(){this._unmounted=!0},_onWrapperCancelClick:function(){this.props.onFinished(!1)},render:function(){var e=this.props,t=(e.loader,(0,l.default)(e,["loader"]));if(this.state.component){var n=this.state.component;return h.createElement(n,t)}if(this.state.error){var r=f.default.getComponent("views.dialogs.BaseDialog"),o=f.default.getComponent("views.elements.DialogButtons");return h.createElement(r,{onFinished:this.props.onFinished,title:(0,p._t)("Error")},(0,p._t)("Unable to load! Check your network connectivity and try again."),h.createElement(o,{primaryButton:(0,p._t)("Dismiss"),onPrimaryButtonClick:this._onWrapperCancelClick,hasCancel:!1}))}var i=f.default.getComponent("elements.Spinner");return h.createElement(i,null)}}),v=function(){function e(){(0,a.default)(this,e),this._counter=0,this._priorityModal=null,this._modals=[],this.closeAll=this.closeAll.bind(this)}return(0,s.default)(e,[{key:"getOrCreateContainer",value:function(){var e=document.getElementById("mx_Dialog_Container");return e||((e=document.createElement("div")).id="mx_Dialog_Container",document.body.appendChild(e)),e}},{key:"createTrackedDialog",value:function(e,t){c.default.trackEvent("Modal",e,t);for(var n=arguments.length,r=Array(n>2?n-2:0),o=2;o1?t-1:0),r=1;r2?n-2:0),o=2;o=0&&i._modals.splice(e,1),i._priorityModal===a&&(i._priorityModal=null,i._modals=[]),i._reRender()},l=this._counter++;return a.elem=h.createElement(g,(0,o.default)({key:l,prom:e},t,{onFinished:s})),a.onFinished=t?t.onFinished:null,a.className=n,r?this._priorityModal=a:this._modals.unshift(a),this._reRender(),{close:s}}},{key:"closeAll",value:function(){var e=this._modals;this._modals=[];for(var t=0;t1&&void 0!==arguments[1]?arguments[1]:"default";if(!v.SETTINGS[e]||!v.SETTINGS[e].displayName)return null;var n=v.SETTINGS[e].displayName;return n instanceof Object&&(n=n[t]?n[t]:n.default),(0,_._t)(n)}},{key:"getLabsFeatures",value:function(){var t=(0,a.default)(v.SETTINGS).filter(function(t){return e.isFeature(t)});return g.default.get().enableLabs?t:t.filter(function(t){return"labs"===e._getFeatureState(t)})}},{key:"isFeature",value:function(e){return!!v.SETTINGS[e]&&v.SETTINGS[e].isFeature}},{key:"isFeatureEnabled",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!e.isFeature(t))throw new Error("Setting "+t+" is not a feature");return e.getValue(t,n)}},{key:"setFeatureEnabled",value:function(t,n){if(!v.SETTINGS[t])throw new Error("Setting '"+t+"' does not appear to be a setting.");if(!e.isFeature(t))throw new Error("Setting "+t+" is not a feature");return e.setValue(t,null,"device",n)}},{key:"getValue",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!v.SETTINGS[t])throw new Error("Setting '"+t+"' does not appear to be a setting.");var o=v.SETTINGS[t],i=o.supportedLevelsAreOrdered?o.supportedLevels:L;return e.getValueAt(i[0],t,n,!1,r)}},{key:"getValueAt",value:function(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(!v.SETTINGS[n])throw new Error("Setting '"+n+"' does not appear to be a setting.");var a=v.SETTINGS[n],s=a.supportedLevelsAreOrdered?a.supportedLevels:L;s.includes("default")||s.push("default");var l=s.indexOf(t);if(-1===l)throw new Error("Level "+t+" is not prioritized");if(e.isFeature(n)){var u=e._getFeatureState(n);if("enable"===u)return!0;if("disable"===u)return!1}var c=e._getHandlers(n);if(o){var f=c[t];if(!f)return e._tryControllerOverride(n,t,r,null,null);var d=f.getValue(n,r);return e._tryControllerOverride(n,t,r,d,t)}for(var p=l;p=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},T=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},k=function(){return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),x=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:{};if(i.Map.isMap(t))return t;if(o()(t))return e.fromJSON(t);throw new Error("`Data.create` only accepts objects or maps, but you passed it: "+t)}},{key:"fromJSON",value:function(e){return new i.Map(e)}}]),e}();R.fromJS=R.fromJSON;var N={data:void 0,key:void 0,nodes:void 0},I=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={object:this.object,data:this.data.toJSON(),nodes:this.nodes.toArray().map(function(t){return t.toJSON(e)})};return e.preserveKeys&&(t.key=this.key),t}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isDocument(e))return e;if((i.List.isList(e)||Array.isArray(e))&&(e={nodes:e}),o()(e))return t.fromJSON(e);throw new Error("`Document.create` only accepts objects, arrays, lists or documents, but you passed it: "+e)}},{key:"fromJSON",value:function(e){if(t.isDocument(e))return e;var n=e.data,r=void 0===n?{}:n,o=e.key,a=void 0===o?y.create():o,s=e.nodes,l=void 0===s?[]:s;return new t({key:a,data:new i.Map(r),nodes:K.createList(l)})}}]),t}(Object(i.Record)(N)),O={data:void 0,key:void 0,nodes:void 0,type:void 0},A=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={object:this.object,type:this.type,data:this.data.toJSON(),nodes:this.nodes.toArray().map(function(t){return t.toJSON(e)})};return e.preserveKeys&&(t.key=this.key),t}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isInline(e))return e;if("string"==typeof e&&(e={type:e}),o()(e))return t.fromJSON(e);throw new Error("`Inline.create` only accepts objects, strings or inlines, but you passed it: "+e)}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Inline.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"fromJSON",value:function(e){if(t.isInline(e))return e;var n=e.data,r=void 0===n?{}:n,o=e.key,a=void 0===o?y.create():o,s=e.nodes,l=void 0===s?[]:s,u=e.type;if("string"!=typeof u)throw new Error("`Inline.fromJS` requires a `type` string.");return new t({key:a,type:u,data:new i.Map(r),nodes:K.createList(l)})}},{key:"isInlineList",value:function(e){return i.List.isList(e)&&e.every(function(e){return t.isInline(e)})}}]),t}(Object(i.Record)(O)),M={data:void 0,type:void 0},P=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"toJSON",value:function(){return{object:this.object,type:this.type,data:this.data.toJSON()}}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isMark(e))return e;if("string"==typeof e&&(e={type:e}),o()(e))return t.fromJSON(e);throw new Error("`Mark.create` only accepts objects, strings or marks, but you passed it: "+e)}},{key:"createSet",value:function(e){if(i.Set.isSet(e)||Array.isArray(e))return new i.Set(e.map(t.create));if(null==e)return Object(i.Set)();throw new Error("`Mark.createSet` only accepts sets, arrays or null, but you passed it: "+e)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isMark(e))return{data:e.data,type:e.type};if("string"==typeof e)return{type:e};if(o()(e)){var n={};return"type"in e&&(n.type=e.type),"data"in e&&(n.data=R.create(e.data)),n}throw new Error("`Mark.createProperties` only accepts objects, strings or marks, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.data,r=void 0===n?{}:n,o=e.type;if("string"!=typeof o)throw new Error("`Mark.fromJS` requires a `type` string.");return new t({type:o,data:new i.Map(r)})}},{key:"isMarkSet",value:function(e){return i.Set.isSet(e)&&e.every(function(e){return t.isMark(e)})}}]),t}(Object(i.Record)(M)),L={marks:void 0,text:void 0},F=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"updateMark",value:function(e,t){var n=this.marks;if(t.equals(e))return this;if(!n.has(e))return this;var r=n.withMutations(function(n){n.remove(e).add(t)});return this.set("marks",r)}},{key:"addMark",value:function(e){var t=this.marks;return this.set("marks",t.add(e))}},{key:"addMarks",value:function(e){var t=this.marks;return this.set("marks",t.union(e))}},{key:"removeMark",value:function(e){var t=this.marks;return this.set("marks",t.remove(e))}},{key:"toJSON",value:function(){return{object:this.object,text:this.text,marks:this.marks.toArray().map(function(e){return e.toJSON()})}}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isLeaf(e))return e;if("string"==typeof e&&(e={text:e}),o()(e))return t.fromJSON(e);throw new Error("`Leaf.create` only accepts objects, strings or leaves, but you passed it: "+e)}},{key:"createLeaves",value:function(e){if(e.size<=1)return e;var t=!1,n=Object(i.List)().withMutations(function(n){e.findLast(function(e,r){var o=n.first();if(o){if(o.marks.equals(e.marks))return t=!0,void n.set(0,o.set("text",""+e.text+o.text));if(""===o.text)return t=!0,void n.set(0,e);if(""===e.text)return void(t=!0)}n.unshift(e)})});return t?n:e}},{key:"splitLeaves",value:function(e,t){if(t<0)return[Object(i.List)(),e];if(0===e.size)return[Object(i.List)(),Object(i.List)()];var n=0,r=-1,o=void 0,a=void 0;return e.find(function(e){r++;var i=n,s=e.text;if((n+=s.length)t)return!1;var l=t-i;return o=e.set("text",s.slice(0,l)),a=e.set("text",s.slice(l)),!0}),o?""===o.text?0===r?[i.List.of(o),e]:[e.take(r),e.skip(r)]:""===a.text?r===e.size-1?[e,i.List.of(a)]:[e.take(r+1),e.skip(r+1)]:[e.take(r).push(o),e.skip(r+1).unshift(a)]:[e,Object(i.List)()]}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Leaf.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.text,r=void 0===n?"":n,o=e.marks,a=void 0===o?[]:o;return new t({text:r,marks:Object(i.Set)(a.map(P.fromJSON))})}},{key:"isLeafList",value:function(e){return i.List.isList(e)&&e.every(function(e){return t.isLeaf(e)})}}]),t}(Object(i.Record)(L)),U=!0,j=0,B={},G={},q=void 0;function V(e,t){var n=function(t){var n=e[t];if(!n)throw new Error('Object does not have a property named "'+t+'".');e[t]=function(){for(var e=arguments.length,r=Array(e),o=0;o=Number.MAX_SAFE_INTEGER&&(j=0)}function Y(e){U=e}var z={leaves:void 0,key:void 0},W=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"searchLeafAtOffset",value:function(e){var t=0,n=0,r=-1;return{leaf:this.leaves.find(function(o){return r++,(t=(n=t)+o.text.length)>=e}),endOffset:t,index:r,startOffset:n}}},{key:"addMark",value:function(e,t,n){var r=i.Set.of(n);return this.addMarks(e,t,r)}},{key:"addMarks",value:function(e,t,n){if(""===this.text&&0===t&&0===e){var r=this.leaves.first();if(!r)return this.set("leaves",i.List.of(F.fromJSON({text:"",marks:n})));var o=r.addMarks(n);return o===r?this:this.set("leaves",i.List.of(o))}if(""===this.text)return this;if(0===t)return this;if(e>=this.text.length)return this;var a=F.splitLeaves(this.leaves,e),s=k(a,2),l=s[0],u=s[1],c=F.splitLeaves(u,t),f=k(c,2),d=f[0],p=f[1],m=l.concat(d.map(function(e){return e.addMarks(n)}),p);return this.setLeaves(m)}},{key:"getLeaves",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=this.leaves;if(0===n.size)return i.List.of(F.create({}));if(!t||0===t.length)return n;if(0===this.text.length)return n;var r=this.key;return t.forEach(function(t){var o=t.start,i=t.end,a=t.mark,s=o.key==r,l=i.key==r;if(s&&l){var u=s?o.offset:0,c=l?i.offset-u:e.text.length-u;if(c<1)return;if(u>=e.text.length)return;if(0!==u||c=this.text.length)return this.getActiveMarks();if(e>=t)return Object(i.Set)();if(""===this.text)return this.getActiveMarks();var n=null,r=0;return this.leaves.forEach(function(o){var i=r;if(!((r=i+o.text.length)<=e)){if(i>=t)return!1;if(n)return(n=n.intersect(o.marks))&&n.size,!1;n=o.marks}}),n||Object(i.Set)()}},{key:"getActiveMarks",value:function(){var e=this;if(0===this.leaves.size)return Object(i.Set)();var t=this.leaves.first().marks;return 0===t.size?t:t.toOrderedSet().withMutations(function(t){e.leaves.forEach(function(e){if(t.intersect(e.marks),0===t.size)return!1})})}},{key:"getMarksBetweenOffsets",value:function(e,t){if(e<=0&&t>=this.text.length)return this.getMarks();if(e>=t)return Object(i.Set)();if(""===this.text)return this.getActiveMarks();var n=null,r=0;return this.leaves.forEach(function(o){var i=r;if(!((r=i+o.text.length)<=e))return!(i>=t)&&void(n=n?n.union(o.marks):o.marks)}),n||Object(i.Set)()}},{key:"getMarks",value:function(){var e=this.getMarksAsArray();return new i.OrderedSet(e)}},{key:"getMarksAsArray",value:function(){if(0===this.leaves.size)return[];var e=this.leaves.first().marks;if(1===this.leaves.size)return e.toArray();var t=[];return this.leaves.forEach(function(e){t.push(e.marks.toArray())}),Array.prototype.concat.apply(e.toArray(),t)}},{key:"getMarksAtIndex",value:function(e){var t=this.searchLeafAtOffset(e).leaf;return t?t.marks:Object(i.Set)()}},{key:"insertText",value:function(e,t,n){if(""===this.text)return this.set("leaves",i.List.of(F.create({text:t,marks:n})));if(0===t.length)return this;n||(n=Object(i.Set)());var r=this.searchLeafAtOffset(e),o=r.startOffset,a=r.leaf,s=r.index,l=e-o,u=a.text.slice(0,l),c=a.text.slice(l),f=this.leaves;if(a.marks.equals(n))return this.set("leaves",f.set(s,a.set("text",u+t+c)));var d=f.splice(s,1,a.set("text",u),F.create({text:t,marks:n}),a.set("text",c));return this.setLeaves(d)}},{key:"removeMark",value:function(e,t,n){if(""===this.text&&0===e&&0===t){var r=this.leaves.first();if(!r)return this;var o=r.removeMark(n);return o===r?this:this.set("leaves",i.List.of(o))}if(t<=0)return this;if(e>=this.text.length)return this;var a=F.splitLeaves(this.leaves,e),s=k(a,2),l=s[0],u=s[1],c=F.splitLeaves(u,t),f=k(c,2),d=f[0],p=f[1],m=l.concat(d.map(function(e){return e.removeMark(n)}),p);return this.setLeaves(m)}},{key:"removeText",value:function(e,t){if(t<=0)return this;if(e>=this.text.length)return this;if(1===t){var n=this.searchLeafAtOffset(e+1),r=n.leaf,o=n.index,a=e-n.startOffset;if(r){if(1===r.text.length){var s=this.leaves.remove(o);return this.setLeaves(s)}var l=r.text.slice(0,a)+r.text.slice(a+t);if(l.length>0)return this.set("leaves",this.leaves.set(o,r.set("text",l)))}}var u=F.splitLeaves(this.leaves,e),c=k(u,2),f=c[0],d=c[1],p=F.splitLeaves(d,t)[1],m=F.createLeaves(f.concat(p));if(1===m.size){var h=m.first();if(""===h.text)return this.set("leaves",i.List.of(h.set("marks",this.getActiveMarks())))}return this.set("leaves",m)}},{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={object:this.object,leaves:this.getLeaves().toArray().map(function(e){return e.toJSON()})};return e.preserveKeys&&(t.key=this.key),t}},{key:"updateMark",value:function(e,t,n,r){var o=n.merge(r);if(""===this.text&&0===t&&0===e){var a=this.leaves.first();if(!a)return this;var s=a.updateMark(n,o);return s===a?this:this.set("leaves",i.List.of(s))}if(t<=0)return this;if(e>=this.text.length)return this;var l=F.splitLeaves(this.leaves,e),u=k(l,2),c=u[0],f=u[1],d=F.splitLeaves(f,t),p=k(d,2),m=p[0],h=p[1],_=c.concat(m.map(function(e){return e.updateMark(n,o)}),h);return this.setLeaves(_)}},{key:"splitText",value:function(e){var t=F.splitLeaves(this.leaves,e);return[this.set("leaves",t[0]),this.set("leaves",t[1]).regenerateKey()]}},{key:"mergeText",value:function(e){var t=this.leaves.concat(e.leaves);return this.setLeaves(t)}},{key:"setLeaves",value:function(e){var t=F.createLeaves(e);if(1===t.size){var n=t.first();if((!n.marks||0===n.marks.size)&&""===n.text)return this.set("leaves",Object(i.List)())}return this.set("leaves",F.createLeaves(e))}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(t.isText(e))return e;if("string"==typeof e&&(e={leaves:[{text:e}]}),o()(e)){if(e.text){var n=e,r=n.text,i=n.marks;e={key:n.key,leaves:[{text:r,marks:i}]}}return t.fromJSON(e)}throw new Error("`Text.create` only accepts objects, arrays, strings or texts, but you passed it: "+e)}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Text.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"fromJSON",value:function(e){if(t.isText(e))return e;var n=e.key,r=void 0===n?y.create():n,o=e.leaves;if(o||(e.ranges?(Object(a.a)(!1,"As of slate@0.27.0, the `ranges` property of Slate objects has been renamed to `leaves`."),o=e.ranges):o=Object(i.List)()),Array.isArray(o))o=Object(i.List)(o.map(function(e){return F.create(e)}));else{if(!i.List.isList(o))throw new Error("leaves must be either Array or Immutable.List");o=o.map(function(e){return F.create(e)})}return new t({leaves:F.createLeaves(o),key:r})}},{key:"isTextList",value:function(e){return i.List.isList(e)&&e.every(function(e){return t.isText(e)})}}]),t}(Object(i.Record)(z));V(W.prototype,["getActiveMarks","getMarks","getMarksAsArray"]);var K=function(){function e(){E(this,e)}return C(e,null,[{key:"create",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e.isNode(t))return t;if(o()(t)){var n=t.object;switch(!n&&t.kind&&(Object(a.a)(!1,"As of slate@0.32.0, the `kind` property of Slate objects has been renamed to `object`."),n=t.kind),n){case"block":return Q.create(t);case"document":return I.create(t);case"inline":return A.create(t);case"text":return W.create(t);default:throw new Error("`Node.create` requires a `object` string.")}}throw new Error("`Node.create` only accepts objects or nodes but you passed it: "+t)}},{key:"createList",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(t)||Array.isArray(t))return Object(i.List)(t.map(e.create));throw new Error("`Node.createList` only accepts lists or arrays, but you passed it: "+t)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(Q.isBlock(e)||A.isInline(e))return{data:e.data,type:e.type};if("string"==typeof e)return{type:e};if(o()(e)){var t={};return"type"in e&&(t.type=e.type),"data"in e&&(t.data=R.create(e.data)),t}throw new Error("`Node.createProperties` only accepts objects, strings, blocks or inlines, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var t=e.object;switch(!t&&e.kind&&(Object(a.a)(!1,"As of slate@0.32.0, the `kind` property of Slate objects has been renamed to `object`."),t=e.kind),t){case"block":return Q.fromJSON(e);case"document":return I.fromJSON(e);case"inline":return A.fromJSON(e);case"text":return W.fromJSON(e);default:throw new Error("`Node.fromJSON` requires an `object` of either 'block', 'document', 'inline' or 'text', but you passed: "+e)}}},{key:"isNode",value:function(e){return Q.isBlock(e)||I.isDocument(e)||A.isInline(e)||W.isText(e)}},{key:"isNodeList",value:function(t){return i.List.isList(t)&&t.every(function(t){return e.isNode(t)})}}]),e}(),$={data:void 0,key:void 0,nodes:void 0,type:void 0},Q=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={object:this.object,type:this.type,data:this.data.toJSON(),nodes:this.nodes.toArray().map(function(t){return t.toJSON(e)})};return e.preserveKeys&&(t.key=this.key),t}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isBlock(e))return e;if("string"==typeof e&&(e={type:e}),o()(e))return t.fromJSON(e);throw new Error("`Block.create` only accepts objects, strings or blocks, but you passed it: "+e)}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Block.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"fromJSON",value:function(e){if(t.isBlock(e))return e;var n=e.data,r=void 0===n?{}:n,o=e.key,a=void 0===o?y.create():o,s=e.nodes,l=void 0===s?[]:s,u=e.type;if("string"!=typeof u)throw new Error("`Block.fromJSON` requires a `type` string.");return new t({key:a,type:u,data:Object(i.Map)(r),nodes:K.createList(l)})}},{key:"isBlockList",value:function(e){return i.List.isList(e)&&e.every(function(e){return t.isBlock(e)})}}]),t}(Object(i.Record)($)),X={};["deleteBackward","deleteCharBackward","deleteLineBackward","deleteWordBackward","deleteForward","deleteCharForward","deleteWordForward","deleteLineForward","setBlocks","setInlines","splitInline","unwrapBlock","unwrapInline","wrapBlock","wrapInline"].forEach(function(e){X[e]=function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o1&&void 0!==arguments[1]?arguments[1]:1,n=e.value,r=n.selection,o=n.document,i=r.marks||o.getInsertMarksAtRange(r);e.splitBlockAtRange(r,t).moveToEnd(),i&&0!==i.size&&e.select({marks:i})},X.toggleMark=function(e,t){t=P.create(t),e.value.activeMarks.has(t)?e.removeMark(t):e.addMark(t)},X.wrapText=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t,r=e.value.selection;e.wrapTextAtRange(r,t,n),r.isCollapsed&&e.moveStartBackward(t.length),e.moveEndBackward(n.length),r.isForward!=e.value.selection.isForward&&e.flip()};var J=55296,Z=57343,ee=/\s/,te=/['\u2018\u2019]/,ne=/[\u0021-\u0023\u0025-\u002A\u002C-\u002F\u003A\u003B\u003F\u0040\u005B-\u005D\u005F\u007B\u007D\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E3B\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/;function re(e){return J<=e&&e<=Z}function oe(e,t){if(ee.test(e))return!1;if(te.test(e)){var n=t.charAt(0),r=ie(n);if(oe(n=t.slice(0,r),t.slice(r)))return!0}return!ne.test(e)}function ie(e){return re(e.charCodeAt(0))?2:1}function ae(e){return ie(e.charAt(0))}function se(e){for(var t=0,n=0,r=!1,o=void 0;o=e.charAt(n);){var i=ie(o);if(oe(o=e.slice(n,n+i),e.slice(n+i)))r=!0,t+=i;else{if(r)break;t+=i}n+=i}return t}var le={getCharLength:ie,getCharOffset:ae,getCharOffsetBackward:function(e,t){return e=e.slice(0,t),ae(e=Object(s.reverse)(e))},getCharOffsetForward:function(e,t){return ae(e=e.slice(t))},getWordOffset:se,getWordOffsetBackward:function(e,t){return e=e.slice(0,t),se(e=Object(s.reverse)(e))},getWordOffsetForward:function(e,t){return se(e=e.slice(t))},isSurrogate:re,isWord:oe},ue={};function ce(e,t){if(e.size!==t.size)return null;for(var n=0;no)return 1}return 0}function fe(e){if(null==e)return null;if(i.List.isList(e))return e;if(Array.isArray(e))return Object(i.List)(e);throw new Error("Paths can only be created from arrays or lists, but you passed: "+e)}function de(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:ve(e,t);return[e.slice(0,n),t.slice(0,n)]}function pe(e){return me(e,0-(arguments.length>1&&void 0!==arguments[1]?arguments[1]:1),arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.size-1)}function me(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.size-1,r=e.get(n)+t;return e.set(n,r)}function he(e,t){var n=de(e,t),r=k(n,2),o=r[0],i=r[1];return e.size2&&void 0!==arguments[2]?arguments[2]:1;if(0!==n){var r=e.value,o=r.document,i=r.schema,a=t,s=a.start,l=a.focus;if(t.isExpanded)e.deleteAtRange(t);else{var u=o.getClosestVoid(s.key,i);if(u)e.removeNodeByKey(u.key);else{var c=o.getClosestBlock(s.key);if(!c||i.isVoid(c)||""!==c.text||1===o.nodes.size){if(!s.isAtStartOfNode(o)){var f=o.getDescendant(s.key);if(s.isAtStartOfNode(f)){var d=o.getPreviousText(f.key),p=o.getClosestBlock(d.key),m=o.getClosestVoid(d.key,i);if(m)return void e.removeNodeByKey(m.key);if(1==n&&p!=c)return t=t.moveAnchorTo(d.key,d.text.length),void e.deleteAtRange(t)}if(ng;){var v=g+(h=o.getPreviousText(h.key)).text.length;if(n<=v){_=v-n;break}g=v}t=t.moveAnchorTo(h.key,_),e.deleteAtRange(t)}}else e.removeNodeByKey(c.key)}}}},ue.deleteCharForwardAtRange=function(e,t){var n=e.value.document,r=t.start,o=n.getClosestBlock(r.key),i=o.getOffset(r.key)+r.offset,a=o.text,s=le.getCharOffsetForward(a,i);e.deleteForwardAtRange(t,s)},ue.deleteLineForwardAtRange=function(e,t){var n=e.value.document,r=t.start,o=n.getClosestBlock(r.key),i=o.getOffset(r.key)+r.offset;e.deleteForwardAtRange(t,o.text.length-i)},ue.deleteWordForwardAtRange=function(e,t){var n=e.value.document,r=t.start,o=n.getClosestBlock(r.key),i=o.getOffset(r.key)+r.offset,a=o.text,s=le.getWordOffsetForward(a,i);e.deleteForwardAtRange(t,s)},ue.deleteForwardAtRange=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(0!==n){var r=e.value,o=r.document,i=r.schema,a=t,s=a.start,l=a.focus;if(t.isExpanded)e.deleteAtRange(t);else{var u=o.getClosestVoid(s.key,i);if(u)e.removeNodeByKey(u.key);else{var c=o.getClosestBlock(s.key);if(c&&!i.isVoid(c)&&""===c.text&&1!==o.nodes.size){var f=o.getNextBlock(c.key);return e.removeNodeByKey(c.key),void(f&&f.key&&e.moveToStartOfNode(f))}if(!s.isAtEndOfNode(o)){var d=o.getDescendant(s.key);if(s.isAtEndOfNode(d)){var p=o.getNextText(d.key),m=o.getClosestBlock(p.key),h=o.getClosestVoid(p.key,i);if(h)return void e.removeNodeByKey(h.key);if(1==n&&m!=c)return t=t.moveFocusTo(p.key,0),void e.deleteAtRange(t)}if(n<=d.text.length-l.offset)return t=t.moveFocusForward(n),void e.deleteAtRange(t);for(var _=d,g=l.offset,v=d.text.length-l.offset;n>v;){var y=v+(_=o.getNextText(_.key)).text.length;if(n<=y){g=n-v;break}v=y}t=t.moveFocusTo(_.key,g),e.deleteAtRange(t)}}}}},ue.insertBlockAtRange=function(e,t,n){n=Q.create(n),t.isExpanded&&(e.deleteAtRange(t),t=t.moveToStart());var r=e.value,o=r.document,i=r.schema,a=t.start,s=a.key,l=a.offset,u=o.getClosestBlock(s),c=o.getClosestInline(s),f=o.getParent(u.key),d=f.nodes.indexOf(u);if(i.isVoid(u)){var p=a.isAtEndOfNode(u)?1:0;e.insertNodeByKey(f.key,d+p,n)}else if(c||""!==u.text)if(a.isAtStartOfNode(u))e.insertNodeByKey(f.key,d,n);else if(a.isAtEndOfNode(u))e.insertNodeByKey(f.key,d+1,n);else{if(c&&i.isVoid(c)){var m=a.isAtEndOfNode(c),h=m?o.getNextText(s):o.getPreviousText(s),_=m?t.moveToStartOfNode(h):t.moveToEndOfNode(h);s=_.start.key,l=_.start.offset}e.withoutNormalizing(function(){e.splitDescendantsByKey(u.key,s,l),e.insertNodeByKey(f.key,d+1,n)})}else e.insertNodeByKey(f.key,d+1,n)},ue.insertFragmentAtRange=function(e,t,n){e.withoutNormalizing(function(){if(t.isExpanded&&(e.deleteAtRange(t),t=e.value.document.getDescendant(t.start.key)?t.moveToStart():t.moveTo(t.end.key,0).normalize(e.value.document)),n.nodes.size){n=n.mapDescendants(function(e){return e.regenerateKey()});var r=t.start,o=e.value,a=o.schema,s=o.document,l=s.getDescendant(r.key),u=s.getClosestBlock(l.key),c=u.getFurthestAncestor(l.key),f=r.isAtStartOfNode(u),d=s.getParent(u.key),p=d.nodes.indexOf(u),m=n.getBlocks(),h=n.nodes.first(),_=n.nodes.last(),g=m.first(),v=m.last();if(g===v&&a.isVoid(g))e.insertBlockAtRange(t,g);else if(h.hasBlockChildren()||_.hasBlockChildren())n.nodes.reverse().forEach(function(n){e.insertBlockAtRange(t,n)});else{if(g!=v){var y=n.getFurthest(g.key,function(e){return 1==e.nodes.size})||g,b=d.nodes.indexOf(u);(n=n.removeNode(y.key)).nodes.forEach(function(t,n){var r=b+n+1;e.insertNodeByKey(d.key,r,t)})}if(0!=r.offset&&e.splitDescendantsByKey(c.key,r.key,r.offset),l=(s=e.value.document).getDescendant(r.key),c=(u=s.getClosestBlock(r.key)).getFurthestAncestor(l.key),g!=v){var E=f?c:u.getNextSibling(c.key),C=E?u.nodes.skipUntil(function(e){return e.key==E.key}):Object(i.List)(),S=v.nodes.size;C.forEach(function(t,n){var r=S+n;e.moveNodeByKey(t.key,v.key,r)})}if(a.isVoid(u)||""!==u.text){var D=u.getFurthestAncestor(l.key),w=u.nodes.indexOf(D);g.nodes.forEach(function(t,n){var o=0==r.offset?0:1,i=w+n+o;e.insertNodeByKey(u.key,i,t)})}else e.removeNodeByKey(u.key),e.insertNodeByKey(d.key,p,g)}}})},ue.insertInlineAtRange=function(e,t,n){n=A.create(n),e.withoutNormalizing(function(){t.isExpanded&&(e.deleteAtRange(t),t=t.moveToStart());var r=e.value,o=r.document,i=r.schema,a=t.start,s=o.getParent(a.key),l=o.assertDescendant(a.key),u=s.nodes.indexOf(l);i.isVoid(s)||(e.splitNodeByKey(a.key,a.offset),e.insertNodeByKey(s.key,u+1,n))})},ue.insertTextAtRange=function(e,t,n,r){var o=e.value,i=o.document,a=o.schema,s=t.start,l=s.key,u=s.offset,c=i.getParent(s.key);a.isVoid(c)||e.withoutNormalizing(function(){t.isExpanded&&(e.deleteAtRange(t),e.value.selection.start.key!==l&&(l=e.value.selection.start.key,u=e.value.selection.start.offset)),e.insertTextByKey(l,u,n,r)})},ue.removeMarkAtRange=function(e,t,n){if(!t.isCollapsed){var r=e.value.document.getTextsAtRange(t),o=t.start,i=t.end;e.withoutNormalizing(function(){r.forEach(function(t){var r=t.key,a=0,s=t.text.length;r==o.key&&(a=o.offset),r==i.key&&(s=i.offset),r==o.key&&r==i.key&&(s=i.offset-o.offset),e.removeMarkByKey(r,a,s,n)})})}},ue.setBlocksAtRange=function(e,t,n){var r=e.value,o=r.document,i=r.schema,a=o.getBlocksAtRange(t),s=t.start,l=t.end,u=t.isCollapsed,c=o.hasVoidParent(s.key,i),f=o.getClosestBlock(s.key),d=o.getClosestBlock(l.key),p=0==u&&0==s.offset&&0==l.offset&&0==c&&s.key==f.getFirstText().key&&l.key==d.getFirstText().key?a.slice(0,-1):a;e.withoutNormalizing(function(){p.forEach(function(t){e.setNodeByKey(t.key,n)})})},ue.setInlinesAtRange=function(e,t,n){var r=e.value.document.getInlinesAtRange(t);e.withoutNormalizing(function(){r.forEach(function(t){e.setNodeByKey(t.key,n)})})},ue.splitBlockAtRange=function(e,t){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=t,o=r.start,i=r.end,a=e.value,s=a.document,l=s.assertDescendant(o.key),u=s.getClosestBlock(l.key),c=0;u&&"block"==u.object&&c2&&void 0!==arguments[2]?arguments[2]:1/0;t.isExpanded&&(e.deleteAtRange(t),t=t.moveToStart());for(var r=t.start,o=e.value.document,i=o.assertDescendant(r.key),a=o.getClosestInline(i.key),s=0;a&&"inline"==a.object&&s3&&void 0!==arguments[3]?arguments[3]:n,o=t.start,i=t.end,a=t.moveToStart(),s=t.moveToEnd();o.key==i.key&&(s=s.moveForward(n.length)),e.withoutNormalizing(function(){e.insertTextAtRange(a,n,[]),e.insertTextAtRange(s,r,[])})};var ye={compare:ce,create:fe,crop:de,decrement:pe,increment:me,isAbove:he,isAfter:function(e,t){var n=de(e,t),r=k(n,2);return 1===ce(r[0],r[1])},isBefore:function(e,t){var n=de(e,t),r=k(n,2);return-1===ce(r[0],r[1])},isEqual:_e,isOlder:function(e,t){var n=e.size-1,r=de(e,t,n),o=k(r,2),i=o[0],a=o[1],s=e.get(n),l=t.get(n);return _e(i,a)&&s>l},isSibling:function(e,t){if(e.size!==t.size)return!1;var n=e.butLast(),r=t.butLast();return n.equals(r)},isYounger:ge,lift:function(e){return e.slice(0,-1)},max:function(e,t){return Math.max(e.size,t.size)},min:ve,relate:function(e,t){for(var n=[],r=0;r=r&&(e=pe(e=me(e,1,a),r,a+1))),"move_node"===n){var c=t.newPath,f=c.size-1,d=_e(c,e),p=ge(c,e),m=he(c,e);u?e=c.concat(e.slice(o.size)):(s?e=c:l&&(e=pe(e,1,a)),(d||p||m)&&(e=me(e,1,f)))}var h=Array.isArray(e)?e:[e];return Object(i.List)(h)}},be={addMarkByPath:function(e,t,n,r,o){o=P.create(o);var i=e.value,a=[],s=n,l=n+r,u=0;i.document.assertNode(t).getLeaves().forEach(function(e){var n=u,r=n+e.text.length;if(u+=e.text.length,!(rs.text.length&&(r=s.text.length-n);var l=a.createRange({anchor:{path:t,offset:n},focus:{path:t,offset:n+r}}),u=a.getActiveMarksAtRange(l);e.withoutNormalizing(function(){e.removeTextByPath(t,n,r),i?u&&(u=u.filter(function(e){return!i.find(function(t){return e.type===t.type})}),i=u.merge(i)):i=u||[],e.insertTextByPath(t,n,o,i)})},setMarkByPath:function(e,t,n,r,o,i){o=P.create(o),i=P.createProperties(i);var a=e.value;e.applyOperation({type:"set_mark",value:a,path:t,offset:n,length:r,mark:o,properties:i})},setNodeByPath:function(e,t,n){n=K.createProperties(n);var r=e.value,o=r.document.assertNode(t);e.applyOperation({type:"set_node",value:r,path:t,node:o,properties:n})},setTextByPath:function(e,t,n,r){var o=e.value.document.assertNode(t).text.length;e.replaceTextByPath(t,0,o,n,r)},splitNodeByPath:function(e,t,n){var r=(arguments.length>3&&void 0!==arguments[3]?arguments[3]:{}).target,o=void 0===r?null:r,i=e.value,a=i.document.getDescendant(t);e.applyOperation({type:"split_node",value:i,path:t,position:n,target:o,properties:{type:a.type,data:a.data}})},splitDescendantsByPath:function(e,t,n,r){if(t.equals(n))e.splitNodeByPath(n,r);else{var o=e.value.document,i=o.assertNode(t),a=o.assertNode(n),s=o.getAncestors(n).skipUntil(function(e){return e.key==i.key}).reverse().unshift(a),l=void 0,u=void 0;e.withoutNormalizing(function(){s.forEach(function(t){var n=null==u?null:u;u=l?t.nodes.indexOf(l)+1:r,l=t,e.splitNodeByKey(t.key,u,{target:n})})})}},unwrapInlineByPath:function(e,t,n){var r=e.value,o=r.document,i=r.selection,a=o.assertNode(t),s=a.getFirstText(),l=a.getLastText(),u=i.moveToRangeOfNode(s,l);e.unwrapInlineAtRange(u,n)},unwrapBlockByPath:function(e,t,n){var r=e.value,o=r.document,i=r.selection,a=o.assertNode(t),s=a.getFirstText(),l=a.getLastText(),u=i.moveToRangeOfNode(s,l);e.unwrapBlockAtRange(u,n)},unwrapNodeByPath:function(e,t){var n=e.value.document;n.assertNode(t);var r=ye.lift(t),o=n.assertNode(r),i=t.last(),a=r.last(),s=ye.lift(r),l=0===i,u=i===o.nodes.size-1;e.withoutNormalizing(function(){if(1===o.nodes.size)e.moveNodeByPath(t,s,a+1),e.removeNodeByPath(r);else if(l)e.moveNodeByPath(t,s,a);else if(u)e.moveNodeByPath(t,s,a+1);else{var n=ye.increment(t,1,r.size-1);n=n.set(n.size-1,0),e.splitNodeByPath(r,i),e.moveNodeByPath(n,s,a+1)}})},wrapBlockByPath:function(e,t,n){n=(n=Q.create(n)).set("nodes",n.nodes.clear());var r=ye.lift(t),o=t.last(),i=ye.increment(t);e.withoutNormalizing(function(){e.insertNodeByPath(r,o,n),e.moveNodeByPath(i,t,0)})},wrapInlineByPath:function(e,t,n){n=(n=A.create(n)).set("nodes",n.nodes.clear());var r=ye.lift(t),o=t.last(),i=ye.increment(t);e.withoutNormalizing(function(){e.insertNodeByPath(r,o,n),e.moveNodeByPath(i,t,0)})},wrapNodeByPath:function(e,t,n){"block"===(n=K.create(n)).object?e.wrapBlockByPath(t,n):"inline"===n.object&&e.wrapInlineByPath(t,n)}},Ee=function(e){be[e+"ByKey"]=function(t,n){for(var r=arguments.length,o=Array(r>2?r-2:0),i=2;i3?r-3:0),i=3;i3?r-3:0),i=3;i0&&void 0!==arguments[0]?arguments[0]:1;return 0===e?this:e<0?this.moveForward(-e):this.setOffset(this.offset-e)}},{key:"moveForward",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return 0===e?this:e<0?this.moveBackward(-e):this.setOffset(this.offset+e)}},{key:"moveTo",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.key;return"number"==typeof e?(t=e,e=this.path):"string"==typeof e?e=(n=e)===this.key?this.path:null:n=e.equals(this.path)?this.key:null,this.merge({key:n,path:e,offset:t})}},{key:"moveToStartOfNode",value:function(e){var t=e.getFirstText();return this.moveTo(t.key,0)}},{key:"moveToEndOfNode",value:function(e){var t=e.getLastText();return this.moveTo(t.key,t.text.length)}},{key:"normalize",value:function(e){if(null==this.key&&null==this.path)return this.setOffset(null);var n=this.key,r=this.offset,o=this.path,i=e.getNode(n||o);if(!i){Object(a.a)(!1,"A point's `path` or `key` invalid and was reset!");var s=e.getFirstText();return s?this.merge({key:s.key,offset:0,path:e.getPath(s.key)}):t.create()}if("text"!==i.object){Object(a.a)(!1,"A point should not reference a non-text node!");var l=i.getTextAtOffset(r),u=i.getOffset(l.key);return this.merge({offset:r-u,key:l.key,path:e.getPath(l.key)})}return i&&o&&n&&n!==i.key&&Object(a.a)(!1,"A point's `key` did not match its `path`!"),this.merge({key:i.key,path:null==o?e.getPath(i.key):o,offset:null==r?0:Math.min(r,i.text.length)})}},{key:"setKey",value:function(e){return null!==e&&(e=y.create(e)),this.set("key",e)}},{key:"setOffset",value:function(e){return this.set("offset",e)}},{key:"setPath",value:function(e){return null!==e&&(e=ye.create(e)),this.set("path",e)}},{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={object:this.object,key:this.key,offset:this.offset,path:this.path&&this.path.toArray()};return e.preserveKeys||delete t.key,t}},{key:"unset",value:function(){return this.merge({key:null,offset:null,path:null})}},{key:"isSet",get:function(){return null!=this.key&&null!=this.offset&&null!=this.path}},{key:"isUnset",get:function(){return!this.isSet}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isPoint(e))return e;if(o()(e))return t.fromJSON(e);throw new Error("`Point.create` only accepts objects or points, but you passed it: "+e)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isPoint(e))return{key:e.key,offset:e.offset,path:e.path};if(o()(e)){var n={};return"key"in e&&(n.key=e.key),"offset"in e&&(n.offset=e.offset),"path"in e&&(n.path=ye.create(e.path)),"path"in e&&!("key"in e)&&(n.key=null),"key"in e&&!("path"in e)&&(n.path=null),n}throw new Error("`Point.createProperties` only accepts objects or points, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.key,r=void 0===n?null:n,o=e.offset,i=void 0===o?null:o,a=e.path,s=void 0===a?null:a;return new t({key:r,offset:i,path:ye.create(s)})}}]),t}(Object(i.Record)(xe)),Ne={anchor:void 0,focus:void 0,mark:void 0},Ie=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"setProperties",value:function(e){var n=e=t.createProperties(e),r=n.anchor,o=n.focus,i=n.mark,a={};return r&&(a.anchor=Re.create(r)),o&&(a.focus=Re.create(o)),i&&(a.mark=P.create(i)),this.merge(a)}},{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{object:this.object,anchor:this.anchor.toJSON(e),focus:this.focus.toJSON(e),mark:this.mark.toJSON(e)}}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isDecoration(e))return e;if(Pe.isRange(e))return t.fromJSON(Pe.createProperties(e));if(o()(e))return t.fromJSON(e);throw new Error("`Decoration.create` only accepts objects or decorations, but you passed it: "+e)}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Decoration.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isDecoration(e))return{anchor:Re.createProperties(e.anchor),focus:Re.createProperties(e.focus),mark:P.create(e.mark)};if(o()(e)){var n={};return"anchor"in e&&(n.anchor=Re.create(e.anchor)),"focus"in e&&(n.focus=Re.create(e.focus)),"mark"in e&&(n.mark=P.create(e.mark)),n}throw new Error("`Decoration.createProperties` only accepts objects or decorations, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.anchor,r=e.focus,o=e.mark;if(!o)throw new Error("Decorations must be created with a `mark`, but you passed: "+JSON.stringify(e));return new t({anchor:Re.fromJSON(n||{}),focus:Re.fromJSON(r||{}),mark:P.fromJSON(o)})}}]),t}(Object(i.Record)(Ne)),Oe={block:"@@__SLATE_BLOCK__@@",change:"@@__SLATE_CHANGE__@@",decoration:"@@__SLATE_DECORATION__@@",document:"@@__SLATE_DOCUMENT__@@",history:"@@__SLATE_HISTORY__@@",inline:"@@__SLATE_INLINE__@@",leaf:"@@__SLATE_LEAF__@@",mark:"@@__SLATE_MARK__@@",operation:"@@__SLATE_OPERATION__@@",point:"@@__SLATE_POINT__@@",range:"@@__SLATE_RANGE__@@",schema:"@@__SLATE_SCHEMA__@@",selection:"@@__SLATE_SELECTION__@@",stack:"@@__SLATE_STACK__@@",text:"@@__SLATE_TEXT__@@",value:"@@__SLATE_VALUE__@@"};function Ae(e,t){return!(!t||!t[Oe[e]])}var Me={anchor:void 0,focus:void 0},Pe=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{object:this.object,anchor:this.anchor.toJSON(e),focus:this.focus.toJSON(e)}}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isRange(e))return"range"===e.object?e:t.fromJSON(t.createProperties(e));if(o()(e))return t.fromJSON(e);throw new Error("`Range.create` only accepts objects or ranges, but you passed it: "+e)}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Range.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isRange(e))return{anchor:Re.createProperties(e.anchor),focus:Re.createProperties(e.focus)};if(o()(e)){var n={};return"anchor"in e&&(n.anchor=Re.create(e.anchor)),"focus"in e&&(n.focus=Re.create(e.focus)),n}throw new Error("`Range.createProperties` only accepts objects, decorations, ranges or selections, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.anchor,r=e.focus;return new t({anchor:Re.fromJSON(n||{}),focus:Re.fromJSON(r||{})})}},{key:"isRange",value:function(e){return Ae("range",e)||Ie.isDecoration(e)||Fe.isSelection(e)}}]),t}(Object(i.Record)(Me)),Le={anchor:void 0,focus:void 0,isFocused:void 0,marks:void 0},Fe=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"setIsFocused",value:function(e){return this.set("isFocused",e)}},{key:"setMarks",value:function(e){return this.set("marks",e)}},{key:"setProperties",value:function(e){var n=e=t.createProperties(e),r=n.anchor,o=n.focus,i=w(n,["anchor","focus"]);return r&&(i.anchor=Re.create(r)),o&&(i.focus=Re.create(o)),this.merge(i)}},{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{object:this.object,anchor:this.anchor.toJSON(e),focus:this.focus.toJSON(e),isFocused:this.isFocused,marks:null==this.marks?null:this.marks.toArray().map(function(e){return e.toJSON()})}}},{key:"isBlurred",get:function(){return!this.isFocused}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isSelection(e))return e;if(Pe.isRange(e))return t.fromJSON(Pe.createProperties(e));if(o()(e))return t.fromJSON(e);throw new Error("`Selection.create` only accepts objects, ranges or selections, but you passed it: "+e)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isSelection(e))return{anchor:Re.createProperties(e.anchor),focus:Re.createProperties(e.focus),isFocused:e.isFocused,marks:e.marks};if(Pe.isRange(e))return{anchor:Re.createProperties(e.anchor),focus:Re.createProperties(e.focus)};if(o()(e)){var n={};return"anchor"in e&&(n.anchor=Re.create(e.anchor)),"focus"in e&&(n.focus=Re.create(e.focus)),"isFocused"in e&&(n.isFocused=e.isFocused),"marks"in e&&(n.marks=null==e.marks?null:P.createSet(e.marks)),n}throw new Error("`Selection.createProperties` only accepts objects, ranges or selections, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.anchor,r=e.focus,o=e.isFocused,a=void 0!==o&&o,s=e.marks,l=void 0===s?null:s;return new t({anchor:Re.fromJSON(n||{}),focus:Re.fromJSON(r||{}),isFocused:a,marks:null==l?null:new i.Set(l.map(P.fromJSON))})}}]),t}(Object(i.Record)(Le)),Ue={};function je(e,t){for(var n,r=arguments.length,o=Array(r>2?r-2:0),i=2;i2&&void 0!==arguments[2]?arguments[2]:1;if(0!==n){if(n<0)return Ve(e,t,-n);var r=t.slice(0,1).toUpperCase()+t.slice(1),o=e.value,i=o.document,a=o.selection,s=o.schema,l=a[t],u=i.hasVoidParent(l.path,s);if(!u&&l.offset-n>=0){var c=a["move"+r+"Backward"](n);e.select(c)}else{var f=i.getPreviousText(l.path);if(f){var d=i.getClosestBlock(l.path).hasNode(f.key),p=f&&i.hasVoidParent(f.key,s);if(e["move"+r+"ToEndOfNode"](f),!u&&!p&&d){var m=e.value.selection["move"+r+"Backward"](n);e.select(m)}}}}}function Ve(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(0!==n){if(n<0)return qe(e,t,-n);var r=t.slice(0,1).toUpperCase()+t.slice(1),o=e.value,i=o.document,a=o.selection,s=o.schema,l=a[t],u=i.getNode(l.path),c=i.hasVoidParent(l.path,s);if(!c&&l.offset+n<=u.text.length){var f=a["move"+r+"Forward"](n);e.select(f)}else{var d=i.getNextText(l.path);if(d){var p=i.getClosestBlock(l.path).hasNode(d.key),m=i.hasVoidParent(d.key,s);if(e["move"+r+"ToStartOfNode"](d),!c&&!m&&p){var h=e.value.selection["move"+r+"Forward"](n);e.select(h)}}}}}Ue.blur=function(e){e.select({isFocused:!1})},Ue.deselect=function(e){var t=Fe.create();e.select(t)},Ue.focus=function(e){e.select({isFocused:!0})},Ue.flip=function(e){e.call(je,"flip")},Ue.moveAnchorBackward=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?n-1:0),o=1;o1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?n-1:0),o=1;o1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r2&&void 0!==arguments[2]?arguments[2]:{};t=Fe.createProperties(t);var r=n.snapshot,o=void 0!==r&&r,a=e.value,s=a.document,l=a.selection,u={},c=l.setProperties(t);for(var d in c=s.resolveSelection(c),t=f()(c,Object.keys(t)))!0!==o&&Object(i.is)(t[d],l[d])||(u[d]=t[d]);l.marks&&!u.marks&&(u.anchor||u.focus)&&(u.marks=null),0!==Object.keys(u).length&&e.applyOperation({type:"set_selection",value:a,properties:u,selection:l.toJSON()},o?{skip:!1,merge:!1}:{})},Ue.setAnchor=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:{},n=this,r=n,o=r.undos,a=r.redos,s=t.merge;if(t.skip)return n;var l=o.peek(),u=l&&l.last();if(null==s&&(s=function(e,t){return!!t&&("set_selection"==e.type&&"set_selection"==t.type||"insert_text"==e.type&&"insert_text"==t.type&&e.offset==t.offset+t.text.length&&e.path.equals(t.path)||"remove_text"==e.type&&"remove_text"==t.type&&e.offset+e.text.length==t.offset&&e.path.equals(t.path))}(e,u)),He("save",{operation:e,merge:s}),s&&l){var c=l.push(e);o=(o=o.pop()).push(c)}else{var f=new i.List([e]);o=o.push(f)}return o.size>100&&(o=o.take(100)),a=a.clear(),n=n.set("undos",o).set("redos",a)}},{key:"toJSON",value:function(){return{object:this.object,redos:this.redos.toJSON(),undos:this.undos.toJSON()}}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isHistory(e))return e;if(o()(e))return t.fromJSON(e);throw new Error("`History.create` only accepts objects or histories, but you passed it: "+e)}},{key:"createOperationsList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e))return e;if(Array.isArray(e))return new i.List(e);throw new Error("`History.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.redos,r=void 0===n?[]:n,o=e.undos,a=void 0===o?[]:o;return new t({redos:new i.Stack(r.map(this.createOperationsList)),undos:new i.Stack(a.map(this.createOperationsList))})}}]),t}(Object(i.Record)(Ye));var We={plugins:void 0},Ke=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"getPluginsWith",value:function(e){return this.plugins.filter(function(t){return null!=t[e]})}},{key:"find",value:function(e){for(var t=this.getPluginsWith(e),n=arguments.length,r=Array(n>1?n-1:0),o=1;o1?r-1:0),i=1;i1?n-1:0),o=1;o2?n-2:0),o=2;o0&&void 0!==arguments[0]?arguments[0]:{}).plugins;return new t({plugins:void 0===e?[]:e})}}]),t}(Object(i.Record)(We));V(Ke.prototype,["getPluginsWith"]);var $e=function(e){function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};E(this,t);var r=T(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));for(var o in r.code=e,n)r[o]=n[o];return Error.captureStackTrace?Error.captureStackTrace(r,r.constructor):r.stack=(new Error).stack,r}return D(t,e),t}(Error),Qe=p()("slate:schema"),Xe=[{match:{object:"document"},nodes:[{match:{object:"block"}}]},{match:{object:"block",first:{object:"block"}},nodes:[{match:{object:"block"}}]},{match:{object:"block",first:[{object:"inline"},{object:"text"}]},nodes:[{match:[{object:"inline"},{object:"text"}]}]},{match:{object:"inline"},nodes:[{match:[{object:"inline"},{object:"text"}]}]},{match:[{object:"block"},{object:"inline"}],nodes:[{min:1}],normalize:function(e,t){var n=t.code,r=t.node;"child_required"===n&&e.insertNodeByKey(r.key,0,W.create(),{normalize:!1})}},{match:{object:"block"},first:[{object:"block"},{object:"text"}],last:[{object:"block"},{object:"text"}],normalize:function(e,t){var n=t.code,r=t.node,o=W.create(),i=void 0;if("first_child_object_invalid"===n)i=0;else{if("last_child_object_invalid"!==n)return;i=r.nodes.size}e.insertNodeByKey(r.key,i,o,{normalize:!1})}},{match:{object:"inline"},first:[{object:"block"},{object:"text"}],last:[{object:"block"},{object:"text"}],previous:[{object:"block"},{object:"text"}],next:[{object:"block"},{object:"text"}],normalize:function(e,t){var n=t.code,r=t.node,o=t.index,i=W.create(),a=void 0;if("first_child_object_invalid"===n)a=0;else if("last_child_object_invalid"===n)a=r.nodes.size;else if("previous_sibling_object_invalid"===n)a=o;else{if("next_sibling_object_invalid"!==n)return;a=o+1}e.insertNodeByKey(r.key,a,i,{normalize:!1})}},{match:{object:"text"},next:[{object:"block"},{object:"inline"}],normalize:function(e,t){var n=t.code,r=t.next;"next_sibling_object_invalid"===n&&e.mergeNodeByKey(r.key,{normalize:!1})}}],Je={stack:void 0,rules:void 0},Ze=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"getNodeRules",value:function(e){return this.rules.filter(function(t){return et(e,t.match)})}},{key:"validateNode",value:function(e){var t=tt(e,this.getNodeRules(e),this.rules,{every:!0});if(t)return new $e(t.code,t)}},{key:"testNode",value:function(e){return!this.validateNode(e)}},{key:"assertNode",value:function(e){var t=this.validateNode(e);if(t)throw t}},{key:"normalizeNode",value:function(e){var t=this.stack.find("normalizeNode",e);if(t)return t;if("text"!=e.object){var n=this.validateNode(e);if(n)return function(e){Qe("normalizing",{error:n});var t=n.rule,r=e.operations.size;t.normalize&&t.normalize(e,n),e.operations.size===r&&function(e,t){var n=t.code,r=t.node,o=t.child,i=t.next,a=t.previous,s=t.key,l=t.mark;switch(n){case"child_object_invalid":case"child_type_invalid":case"child_unknown":case"first_child_object_invalid":case"first_child_type_invalid":case"last_child_object_invalid":case"last_child_type_invalid":return"text"===o.object&&"block"===r.object&&1===r.nodes.size?e.removeNodeByKey(r.key,{normalize:!1}):e.removeNodeByKey(o.key,{normalize:!1});case"previous_sibling_object_invalid":case"previous_sibling_type_invalid":return"text"===a.object&&"block"===r.object&&1===r.nodes.size?e.removeNodeByKey(r.key,{normalize:!1}):e.removeNodeByKey(a.key,{normalize:!1});case"next_sibling_object_invalid":case"next_sibling_type_invalid":return"text"===i.object&&"block"===r.object&&1===r.nodes.size?e.removeNodeByKey(r.key,{normalize:!1}):e.removeNodeByKey(i.key,{normalize:!1});case"child_required":case"node_text_invalid":case"parent_object_invalid":case"parent_type_invalid":return"document"===r.object?r.nodes.forEach(function(t){return e.removeNodeByKey(t.key,{normalize:!1})}):e.removeNodeByKey(r.key,{normalize:!1});case"node_data_invalid":return void 0===r.data.get(s)&&"document"!==r.object?e.removeNodeByKey(r.key,{normalize:!1}):e.setNodeByKey(r.key,{data:r.data.delete(s)},{normalize:!1});case"node_mark_invalid":return r.getTexts().forEach(function(t){return e.removeMarkByKey(t.key,0,t.text.length,l,{normalize:!1})});default:e.removeNodeByKey(r.key,{normalize:!1})}}(e,n)}}}},{key:"isAtomic",value:function(e){var t=this.rules.find(function(t){return"isAtomic"in t&&et(e,t.match)});return!!t&&t.isAtomic}},{key:"isVoid",value:function(e){var t=this.rules.find(function(t){return"isVoid"in t&&et(e,t.match)});return!!t&&t.isVoid}},{key:"toJSON",value:function(){return{object:this.object,rules:this.rules}}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isSchema(e))return e;if(o()(e))return t.fromJSON(e);throw new Error("`Schema.create` only accepts objects or schemas, but you passed it: "+e)}},{key:"fromJSON",value:function(e){if(t.isSchema(e))return e;var n=e.plugins?e.plugins:[{schema:e}],r=[].concat(Xe),o=!0,i=!1,a=void 0;try{for(var s,l=n[Symbol.iterator]();!(o=(s=l.next()).done);o=!0){var u=s.value.schema,c=void 0===u?{}:u,f=c.blocks,d=void 0===f?{}:f,p=c.inlines,m=void 0===p?{}:p,h=c.marks,_=void 0===h?{}:h;for(var g in c.rules&&(r=r.concat(c.rules)),c.document&&r.push(S({match:[{object:"document"}]},c.document)),d)r.push(S({match:[{object:"block",type:g}]},d[g]));for(var v in m)r.push(S({match:[{object:"inline",type:v}]},m[v]));for(var y in _)r.push(S({match:[{object:"mark",type:y}]},_[y]))}}catch(e){i=!0,a=e}finally{try{!o&&l.return&&l.return()}finally{if(i)throw a}}return new t({stack:Ke.create({plugins:n}),rules:r})}}]),t}(Object(i.Record)(Je));function et(e,t){return!tt(e,t)}function tt(e,t,n){var r=(arguments.length>3&&void 0!==arguments[3]?arguments[3]:{}).every,o=void 0!==r&&r;if(Array.isArray(t)){var i=t.length?t:[{}],a=void 0,s=!0,l=!1,u=void 0;try{for(var c,f=i[Symbol.iterator]();!(s=(c=f.next()).done);s=!0){var d=tt(e,c.value,n);if(a=a||d,o&&d)return d;if(!o&&!d)return}}catch(e){l=!0,u=e}finally{try{!s&&f.return&&f.return()}finally{if(l)throw u}}return a}return function(e,t){if(null==t.object)return;if(t.object===e.object)return;if("function"==typeof t.object&&t.object(e.object))return;return it("node_object_invalid",{rule:t,node:e})}(e,t)||function(e,t){if(null==t.type)return;if(t.type===e.type)return;if("function"==typeof t.type&&t.type(e.type))return;return it("node_type_invalid",{rule:t,node:e})}(e,t)||function(e,t){if(null==t.data)return;if(null==e.data)return;if("function"==typeof t.data){if(t.data(e.data))return;return it("node_data_invalid",{rule:t,node:e})}for(var n in t.data){var r=t.data[n],o=e.data&&e.data.get(n),i="function"==typeof r?r(o):r===o;if(!i)return it("node_data_invalid",{rule:t,node:e,key:n,value:o})}}(e,t)||function(e,t){if(null==t.marks)return;var n=e.getMarks().toArray(),r=function(n){var r=t.marks.some(function(e){return"function"==typeof e.type?e.type(n.type):e.type===n.type});return r?"continue":{v:it("node_mark_invalid",{rule:t,node:e,mark:n})}},o=!0,i=!1,a=void 0;try{for(var s,l=n[Symbol.iterator]();!(o=(s=l.next()).done);o=!0){var u=s.value,c=r(u);switch(c){case"continue":continue;default:if("object"===(void 0===c?"undefined":b(c)))return c.v}}}catch(e){i=!0,a=e}finally{try{!o&&l.return&&l.return()}finally{if(i)throw a}}}(e,t)||function(e,t){if(null==t.text)return;var n=e.text;if("function"==typeof t.text?t.text(n):t.text.test(n))return;return it("node_text_invalid",{rule:t,node:e,text:n})}(e,t)||function(e,t){if(null==t.first)return;var n=e.nodes.first();if(!n)return;var r=tt(n,t.first);if(!r)return;return r.rule=t,r.node=e,r.child=n,r.code=r.code.replace("node_","first_child_"),r}(e,t)||function(e,t){if(null==t.last)return;var n=e.nodes.last();if(!n)return;var r=tt(n,t.last);if(!r)return;return r.rule=t,r.node=e,r.child=n,r.code=r.code.replace("node_","last_child_"),r}(e,t)||function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(null==e.nodes)return;var r=e.nodes.toArray(),o=null!=t.nodes?t.nodes.slice():[],i=void 0,a=void 0,s=void 0,l=void 0,u=void 0,c=void 0,f=void 0,d=void 0;function p(){return i=null==i?null:0,l=o.shift(),a=l&&l.min,u=l&&l.max,!!l}function m(){return s=null==s?0:s+1,i=null==i?0:i+1,f=c,c=r[s],d=r[s+1],null!=u&&i==u&&p(),!!c}function h(){i-=1,s-=1}null!=t.nodes&&p();for(;m();){var _=nt(e,c,n)||rt(e,c,f,s,n)||ot(e,c,d,s,n);if(_)return _;if(null!=t.nodes){if(!l)return it("child_unknown",{rule:t,node:e,child:c,index:s});if(l.match){var g=tt(c,l.match);if(g&&i>=a&&p()){h();continue}if(g)return g.rule=t,g.node=e,g.child=c,g.index=s,g.code=g.code.replace("node_","child_"),g}}}if(null!=t.nodes)for(;null!=a;){if(i0&&void 0!==arguments[0]?arguments[0]:{};return new vt(S({},e,{value:this}))}},{key:"addMark",value:function(e,t,n,r){var o=this,i=o.document;return i=i.addMark(e,t,n,r),o=this.set("document",i)}},{key:"insertNode",value:function(e,t){var n=this,r=n.document;return r=r.insertNode(e,t),n=(n=n.set("document",r)).mapRanges(function(e){return e.updatePoints(function(e){return e.setPath(null)})})}},{key:"insertText",value:function(e,t,n,r){var o=this,i=o,a=i.document,s=i.schema;a=a.insertText(e,t,n,r),o=o.set("document",a);var l=a.assertNode(e);return o=(o=o.mapRanges(function(e){var r=e,o=r.anchor,i=r.focus,a=r.isBackward,u=Ie.isDecoration(e)&&s.isAtomic(e.mark);return o.key!==l.key||!(o.offset>t)&&(o.offset!==t||u&&a)||(e=e.moveAnchorForward(n.length)),i.key===l.key&&(i.offset>t||i.offset==t&&(!u||a))&&(e=e.moveFocusForward(n.length)),e})).clearAtomicRanges(l.key,t)}},{key:"mergeNode",value:function(e){var t=this,n=t.document,r=n.mergeNode(e);e=n.resolvePath(e);var o=ye.decrement(e),i=n.getNode(o),a=n.getNode(e);return t=(t=t.set("document",r)).mapRanges(function(e){if("text"===a.object){var t=i.text.length;e.anchor.key===a.key&&(e=e.moveAnchorTo(i.key,t+e.anchor.offset)),e.focus.key===a.key&&(e=e.moveFocusTo(i.key,t+e.focus.offset))}return e=e.updatePoints(function(e){return e.setPath(null)})})}},{key:"moveNode",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=this,o=r.document;return o=o.moveNode(e,t,n),r=(r=r.set("document",o)).mapRanges(function(e){return e.updatePoints(function(e){return e.setPath(null)})})}},{key:"removeMark",value:function(e,t,n,r){var o=this,i=o.document;return i=i.removeMark(e,t,n,r),o=this.set("document",i)}},{key:"removeNode",value:function(e){var t=this,n=t.document,r=n.assertNode(e),o="text"==r.object?r:r.getFirstText()||r,i="text"==r.object?r:r.getLastText()||r,a=n.getPreviousText(o.key),s=n.getNextText(i.key);return n=n.removeNode(e),t=(t=t.set("document",n)).mapRanges(function(e){var t=e,n=t.start,o=t.end;return r.hasNode(n.key)&&(e=a?e.moveStartTo(a.key,a.text.length):s?e.moveStartTo(s.key,0):e.unset()),r.hasNode(o.key)&&(e=a?e.moveEndTo(a.key,a.text.length):s?e.moveEndTo(s.key,0):e.unset()),e=e.updatePoints(function(e){return e.setPath(null)})})}},{key:"removeText",value:function(e,t,n){var r=this,o=r.document;o=o.removeText(e,t,n),r=r.set("document",o);var i=o.assertNode(e),a=n.length,s=t+a;return r=(r=r.clearAtomicRanges(i.key,t,t+a)).mapRanges(function(e){var n=e,r=n.anchor,o=n.focus;return r.key===i.key&&(e=r.offset>=s?e.moveAnchorBackward(a):r.offset>t?e.moveAnchorTo(r.key,t):e),o.key===i.key&&(e=o.offset>=s?e.moveFocusBackward(a):o.offset>t?e.moveFocusTo(o.key,t):e),e})}},{key:"setNode",value:function(e,t){var n=this,r=n.document;return r=r.setNode(e,t),n=n.set("document",r)}},{key:"setMark",value:function(e,t,n,r,o){var i=this,a=i.document;return a=a.setMark(e,t,n,r,o),i=i.set("document",a)}},{key:"setProperties",value:function(e){var t=this,n=t.document,r=e.data,o=e.decorations,i=e.history,a=e.schema,s={};return r&&(s.data=r),i&&(s.history=i),a&&(s.schema=a),o&&(s.decorations=o.map(function(e){return e.isSet?e:n.resolveDecoration(e)})),t=t.merge(s)}},{key:"setSelection",value:function(e){var t=this,n=t,r=n.document,o=n.selection,i=o.setProperties(e);return o=r.resolveSelection(i),t=t.set("selection",o)}},{key:"splitNode",value:function(e,t,n){var r=this,o=r.document,i=o.splitNode(e,t,n),a=o.assertNode(e);return r=(r=r.set("document",i)).mapRanges(function(e){var n=i.getNextText(a.key),r=e,o=r.start,s=r.end;return a.key===o.key&&t<=o.offset&&(e=e.moveStartTo(n.key,o.offset-t)),a.key===s.key&&t<=s.offset&&(e=e.moveEndTo(n.key,s.offset-t)),e=e.updatePoints(function(e){return e.setPath(null)})})}},{key:"mapRanges",value:function(e){var t=this,n=t,r=n.document,o=n.selection,i=n.decorations,a=o.isSet?e(o):o;a||(a=o.unset()),a!==o&&(a=r.createSelection(a)),t=t.set("selection",a);var s=i.map(function(t){var n=t.isSet?e(t):t;return n&&n!==t&&(n=r.createDecoration(n)),n});return s=s.filter(function(e){return!!e}),t=t.set("decorations",s)}},{key:"clearAtomicRanges",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=this,o=r.schema;return r=this.mapRanges(function(r){if(!Ie.isDecoration(r))return r;var i=r.start,a=r.end,s=r.mark;return o.isAtomic(s)?i.key!==e?r:i.offsett)?null:null!=n&&i.offsetn)?null:r:r})}},{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={object:this.object,document:this.document.toJSON(e)};return e.preserveData&&(t.data=this.data.toJSON(e)),e.preserveDecorations&&(t.decorations=this.decorations.toArray().map(function(t){return t.toJSON(e)})),e.preserveHistory&&(t.history=this.history.toJSON(e)),e.preserveSelection&&(t.selection=this.selection.toJSON(e)),e.preserveSchema&&(t.schema=this.schema.toJSON(e)),t}},{key:"startBlock",get:function(){return this.selection.start.key&&this.document.getClosestBlock(this.selection.start.key)}},{key:"endBlock",get:function(){return this.selection.end.key&&this.document.getClosestBlock(this.selection.end.key)}},{key:"anchorBlock",get:function(){return this.selection.anchor.key&&this.document.getClosestBlock(this.selection.anchor.key)}},{key:"focusBlock",get:function(){return this.selection.focus.key&&this.document.getClosestBlock(this.selection.focus.key)}},{key:"startInline",get:function(){return this.selection.start.key&&this.document.getClosestInline(this.selection.start.key)}},{key:"endInline",get:function(){return this.selection.end.key&&this.document.getClosestInline(this.selection.end.key)}},{key:"anchorInline",get:function(){return this.selection.anchor.key&&this.document.getClosestInline(this.selection.anchor.key)}},{key:"focusInline",get:function(){return this.selection.focus.key&&this.document.getClosestInline(this.selection.focus.key)}},{key:"startText",get:function(){return this.selection.start.key&&this.document.getDescendant(this.selection.start.key)}},{key:"endText",get:function(){return this.selection.end.key&&this.document.getDescendant(this.selection.end.key)}},{key:"anchorText",get:function(){return this.selection.anchor.key&&this.document.getDescendant(this.selection.anchor.key)}},{key:"focusText",get:function(){return this.selection.focus.key&&this.document.getDescendant(this.selection.focus.key)}},{key:"nextBlock",get:function(){return this.selection.end.key&&this.document.getNextBlock(this.selection.end.key)}},{key:"previousBlock",get:function(){return this.selection.start.key&&this.document.getPreviousBlock(this.selection.start.key)}},{key:"nextInline",get:function(){return this.selection.end.key&&this.document.getNextInline(this.selection.end.key)}},{key:"previousInline",get:function(){return this.selection.start.key&&this.document.getPreviousInline(this.selection.start.key)}},{key:"nextText",get:function(){return this.selection.end.key&&this.document.getNextText(this.selection.end.key)}},{key:"previousText",get:function(){return this.selection.start.key&&this.document.getPreviousText(this.selection.start.key)}},{key:"marks",get:function(){return this.selection.isUnset?new i.Set:this.selection.marks||this.document.getMarksAtRange(this.selection)}},{key:"activeMarks",get:function(){return this.selection.isUnset?new i.Set:this.selection.marks||this.document.getActiveMarksAtRange(this.selection)}},{key:"blocks",get:function(){return this.selection.isUnset?new i.List:this.document.getBlocksAtRange(this.selection)}},{key:"fragment",get:function(){return this.selection.isUnset?I.create():this.document.getFragmentAtRange(this.selection)}},{key:"inlines",get:function(){return this.selection.isUnset?new i.List:this.document.getInlinesAtRange(this.selection)}},{key:"texts",get:function(){return this.selection.isUnset?new i.List:this.document.getTextsAtRange(this.selection)}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.isValue(e))return e;if(o()(e))return t.fromJSON(e,n);throw new Error("`Value.create` only accepts objects or values, but you passed it: "+e)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isValue(e))return{data:e.data,decorations:e.decorations,schema:e.schema};if(o()(e)){var n={};return"data"in e&&(n.data=R.create(e.data)),"decorations"in e&&(n.decorations=Ie.createList(e.decorations)),"schema"in e&&(n.schema=Ze.create(e.schema)),n}throw new Error("`Value.createProperties` only accepts objects or values, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=e.data,o=void 0===r?{}:r,a=e.decorations,s=void 0===a?[]:a,l=e.document,u=void 0===l?{}:l,c=e.selection,f=void 0===c?{}:c,d=e.schema,p=void 0===d?{}:d,m=e.history,h=void 0===m?{}:m;if(o=R.fromJSON(o),p=Ze.fromJSON(p),h=ze.fromJSON(h),f=(u=I.fromJSON(u)).createSelection(f),s=Object(i.List)(s.map(function(e){return Ie.fromJSON(e)})),f.isUnset){var _=u.getFirstText();_&&(f=f.moveToStartOfNode(_)),f=u.createSelection(f)}var g=new t({data:o,decorations:s,document:u,selection:f,schema:p,history:h});if(!1!==n.normalize){var v=g.change();v.withoutSaving(function(){return v.normalize()}),g=v.value}return g}}]),t}(Object(i.Record)(at)),lt={setValue:function(e,t){t=st.createProperties(t);var n=e.value;e.applyOperation({type:"set_value",properties:t,value:n})}},ut=S({},X,ue,be,ke,Ue,lt),ct=p()("slate:operation:apply");function ft(e,t){var n=(t=_t.create(t)).type;switch(ct(n,t),n){case"add_mark":var r=t,o=r.path,i=r.offset,a=r.length,s=r.mark;return e.addMark(o,i,a,s);case"insert_node":var l=t,u=l.path,c=l.node;return e.insertNode(u,c);case"insert_text":var f=t,d=f.path,p=f.offset,m=f.text,h=f.marks;return e.insertText(d,p,m,h);case"merge_node":var _=t.path;return e.mergeNode(_);case"move_node":var g=t,v=g.path,y=g.newPath;return e.moveNode(v,y);case"remove_mark":var b=t,E=b.path,C=b.offset,S=b.length,D=b.mark;return e.removeMark(E,C,S,D);case"remove_node":var w=t.path;return e.removeNode(w);case"remove_text":var T=t,k=T.path,x=T.offset,R=T.text;return e.removeText(k,x,R);case"set_mark":var N=t,I=N.path,O=N.offset,A=N.length,M=N.mark,P=N.properties;return e.setMark(I,O,A,M,P);case"set_node":var L=t,F=L.path,U=L.properties;return e.setNode(F,U);case"set_selection":var j=t.properties;return e.setSelection(j);case"set_value":var B=t.properties;return e.setProperties(B);case"split_node":var G=t,q=G.path,V=G.position,H=G.properties;return e.splitNode(q,V,H);default:throw new Error('Unknown operation type: "'+n+'".')}}var dt=p()("slate:operation:invert");function pt(e){var t=(e=_t.create(e)).type;switch(dt(t,e),t){case"insert_node":return e.set("type","remove_node");case"remove_node":return e.set("type","insert_node");case"move_node":var n=e,r=n.newPath,o=n.path,i=r,a=o,s=o.size-1,l=r.size-1;return o.size0&&void 0!==arguments[0]?arguments[0]:{};if(t.isOperation(e))return e;if(o()(e))return t.fromJSON(e);throw new Error("`Operation.create` only accepts objects or operations, but you passed it: "+e)}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Operation.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"fromJSON",value:function(e){if(t.isOperation(e))return e;var n=e.type,r=mt[n],o={type:n};if(!r)throw new Error('`Operation.fromJSON` was passed an unrecognized operation type: "'+n+'"');var i=!0,a=!1,s=void 0;try{for(var l,u=r[Symbol.iterator]();!(i=(l=u.next()).done);i=!0){var c=l.value,f=e[c];if(void 0===f){if("document"==c)continue;if("selection"==c)continue;if("value"==c)continue;if("node"==c&&"insert_node"!=n)continue;throw new Error('`Operation.fromJSON` was passed a "'+n+'" operation without the required "'+c+'" attribute.')}"path"!==c&&"newPath"!==c||(f=ye.create(f)),"mark"===c&&(f=P.create(f)),"marks"===c&&null!=f&&(f=P.createSet(f)),"node"===c&&(f=K.create(f)),"selection"===c&&(f=Fe.create(f)),"value"===c&&(f=st.create(f)),"properties"===c&&"merge_node"===n&&(f=K.createProperties(f)),"properties"===c&&"set_mark"===n&&(f=P.createProperties(f)),"properties"===c&&"set_node"===n&&(f=K.createProperties(f)),"properties"===c&&"set_selection"===n&&(f=Fe.createProperties(f)),"properties"===c&&"set_value"===n&&(f=st.createProperties(f)),"properties"===c&&"split_node"===n&&(f=K.createProperties(f)),o[c]=f}}catch(e){a=!0,s=e}finally{try{!i&&u.return&&u.return()}finally{if(a)throw s}}return new t(o)}},{key:"isOperationList",value:function(e){return i.List.isList(e)&&e.every(function(e){return t.isOperation(e)})}}]),t}(Object(i.Record)(ht)),gt=p()("slate:change"),vt=function(){function e(t){E(this,e);var n=t.value;this.value=n,this.operations=new i.List,this.tmp={dirty:[],merge:null,normalize:!0,save:!0}}return C(e,[{key:"applyOperation",value:function(e){var t=this.operations,n=this.value,r=n.history;o()(e)&&(e=S({},e,{value:n})),e=_t.create(e);var i=this.tmp,a=i.merge,s=i.save;null==a&&0!==t.size&&(a=!0),gt("apply",{operation:e,save:s,merge:a}),n=e.apply(n),r&&s&&(r=r.save(e,{merge:a}),n=n.set("history",r));var l=function(e){var t=e.type,n=e.node,r=e.path,o=e.newPath;switch(t){case"add_mark":case"insert_text":case"remove_mark":case"remove_text":case"set_mark":case"set_node":return[r];case"insert_node":var i=n.getKeysToPathsTable(),a=Object.values(i).map(function(e){return r.concat(e)}),s=ye.lift(r);return[s,r].concat(x(a));case"split_node":var l=ye.lift(r),u=ye.increment(r);return[l,r,u];case"merge_node":var c=ye.lift(r),f=ye.decrement(r);return[c,f];case"move_node":var d=ye.lift(r),p=ye.lift(o);return ye.isSibling(r,o)||(p.size&&ye.isYounger(r,o)&&(p=ye.decrement(p,1,r.size-1)),d.size&&ye.isYounger(o,r)&&(d=ye.increment(d,1,o.size-1))),[d,p];case"remove_node":var m=ye.lift(r);return[m];default:return[]}}(e),u=this.tmp.dirty.reduce(function(t,n){n=ye.create(n);var r=ye.transform(n,e);return t=t.concat(r.toArray())},l);return this.tmp.dirty=u,this.value=n,this.operations=t.push(e),this}},{key:"applyOperations",value:function(e,t){var n=this;return e.forEach(function(e){return n.applyOperation(e,t)}),this}},{key:"call",value:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;rs)throw new Error("A schema rule could not be normalized after sufficient iterations. This is usually due to a `rule.normalize` or `plugin.normalizeNode` function of a schema being incorrectly written, causing an infinite loop.");n()}}()}),this}},{key:"withoutNormalizing",value:function(e){var t=this.tmp.normalize;return this.tmp.normalize=!1,e(this),this.tmp.normalize=t,this.normalizeDirtyPaths(),this}},{key:"withoutMerging",value:function(e){var t=this.tmp.merge;return this.tmp.merge=!1,e(this),this.tmp.merge=t,this}},{key:"withoutSaving",value:function(e){var t=this.tmp.save;return this.tmp.save=!1,e(this),this.tmp.save=t,this}},{key:"setOperationFlag",value:function(e,t){return Object(a.a)(!1,"As of slate@0.41.0 the `change.setOperationFlag` method has been deprecated."),this.tmp[e]=t,this}},{key:"getFlag",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object(a.a)(!1,"As of slate@0.41.0 the `change.getFlag` method has been deprecated."),void 0!==t[e]?t[e]:this.tmp[e]}},{key:"unsetOperationFlag",value:function(e){return Object(a.a)(!1,"As of slate@0.41.0 the `change.unsetOperationFlag` method has been deprecated."),delete this.tmp[e],this}},{key:"withoutNormalization",value:function(e){return Object(a.a)(!1,"As of slate@0.41.0 the `change.withoutNormalization` helper has been renamed to `change.withoutNormalizing`."),this.withoutNormalizing(e)}}]),e}();function yt(e,t){var n=!0,r=!1,o=void 0;try{for(var i,a=t[Symbol.iterator]();!(n=(i=a.next()).done);n=!0){var s=i.value,l=!0,u=!1,c=void 0;try{for(var f,d=Object.getOwnPropertyNames(e)[Symbol.iterator]();!(l=(f=d.next()).done);l=!0){var p=f.value;if(!s.hasOwnProperty(p)){var m=Object.getOwnPropertyDescriptor(e,p);Object.defineProperty(s,p,m)}}}catch(e){u=!0,c=e}finally{try{!l&&d.return&&d.return()}finally{if(u)throw c}}var h=!0,_=!1,g=void 0;try{for(var v,y=Object.getOwnPropertyNames(e.prototype)[Symbol.iterator]();!(h=(v=y.next()).done);h=!0){var b=v.value;if(!s.prototype.hasOwnProperty(b)){m=Object.getOwnPropertyDescriptor(e.prototype,b);Object.defineProperty(s.prototype,b,m)}}}catch(e){_=!0,g=e}finally{try{!h&&y.return&&y.return()}finally{if(_)throw g}}}}catch(e){r=!0,o=e}finally{try{!n&&a.return&&a.return()}finally{if(r)throw o}}}function bt(e){var t=Oe[e],n="is"+(""+e.charAt(0).toUpperCase()+e.slice(1)),r=function(){function t(){E(this,t)}return C(t,[{key:"object",get:function(){return e}}]),t}();return r[n]=Ae.bind(null,e),r.prototype[t]=!0,r}Object.keys(ut).forEach(function(e){vt.prototype[e]=function(){for(var t=arguments.length,n=Array(t),r=0;r1?r-1:0),i=1;i1&&void 0!==arguments[1]?arguments[1]:1;return(e=this.resolvePath(e))&&this.getNode(e)?e.size-1+t:null}},{key:"getDescendant",value:function(e){if(!(e=this.resolvePath(e)))return null;var t=e.flatMap(function(e){return["nodes",e]});return this.getIn(t)}},{key:"getFragmentAtRange",value:function(e){if((e=this.resolveRange(e)).isUnset)return I.create();for(var t=e,n=t.start,r=t.end,o=this,i=r.path,a=r.offset,s="end";i.size;){var l=i.last();o=o.splitNode(i,a),a=l+1,(i=ye.lift(i)).size||"end"!==s||(i=n.path,a=n.offset,s="start")}var u=n.path.first()+1,c=r.path.first()+2,f=o.nodes.slice(u,c);return I.create({nodes:f})}},{key:"getFurthest",value:function(e,t){var n=this,r=this.getAncestors(e);return r&&r.find(function(e){for(var r=arguments.length,o=Array(r>1?r-1:0),i=1;i1}).last()||null}},{key:"getInlines",value:function(){var e=this.getInlinesAsArray();return Object(i.List)(e)}},{key:"getInlinesAsArray",value:function(){var e=[];return this.nodes.forEach(function(t){"text"!=t.object&&(t.isLeafInline()?e.push(t):e=e.concat(t.getInlinesAsArray()))}),e}},{key:"getInlinesAtRange",value:function(e){var t=this.getInlinesAtRangeAsArray(e);return Object(i.List)(Object(i.OrderedSet)(t))}},{key:"getInlinesAtRangeAsArray",value:function(e){var t=this;return(e=this.resolveRange(e)).isUnset?[]:this.getTextsAtRangeAsArray(e).map(function(e){return t.getClosestInline(e.key)}).filter(function(e){return e})}},{key:"getInlinesByType",value:function(e){var t=this.getInlinesByTypeAsArray(e);return Object(i.List)(t)}},{key:"getInlinesByTypeAsArray",value:function(e){return this.nodes.reduce(function(t,n){return"text"==n.object?t:n.isLeafInline()&&n.type==e?(t.push(n),t):t.concat(n.getInlinesByTypeAsArray(e))},[])}},{key:"getInsertMarksAtRange",value:function(e){var t=(e=this.resolveRange(e)).start;return e.isUnset?Object(i.Set)():e.isCollapsed?this.getMarksAtPosition(t.key,t.offset):this.getDescendant(t.key).getMarksAtIndex(t.offset+1)}},{key:"getMarks",value:function(){var e=this.getMarksAsArray();return Object(i.Set)(e)}},{key:"getMarksAsArray",value:function(){var e,t=[];return this.nodes.forEach(function(e){t.push(e.getMarksAsArray())}),(e=[]).concat.apply(e,t)}},{key:"getMarksAtPosition",value:function(e,t){var n=this.getDescendant(e).getMarksAtIndex(t);if(0!==t)return n;var r=this.getClosestBlock(e);if(""===r.text)return n;var o=this.getPreviousText(e);return o?r.hasDescendant(o.key)?o.getMarksAtIndex(o.text.length):n:Object(i.Set)()}},{key:"getMarksAtRange",value:function(e){return Object(i.Set)(this.getOrderedMarksAtRange(e))}},{key:"getMarksByType",value:function(e){var t=this.getMarksByTypeAsArray(e);return Object(i.Set)(t)}},{key:"getMarksByTypeAsArray",value:function(e){return this.nodes.reduce(function(t,n){return"text"==n.object?t.concat(n.getMarksAsArray().filter(function(t){return t.type==e})):t.concat(n.getMarksByTypeAsArray(e))},[])}},{key:"getNextBlock",value:function(e){var t=this.assertDescendant(e),n=void 0;"block"==t.object?n=t.getLastText():n=this.getClosestBlock(e).getLastText();var r=this.getNextText(n.key);return r?this.getClosestBlock(r.key):null}},{key:"getNextNode",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;for(var t=e.size;t>0;t--){var n=e.slice(0,t),r=ye.increment(n),o=this.getNode(r);if(o)return o}return null}},{key:"getNextSibling",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;var t=ye.increment(e);return this.getNode(t)}},{key:"getNextText",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;var t=this.getNextNode(e);return t?t.getFirstText():null}},{key:"getOffset",value:function(e){this.assertDescendant(e);var t=this.getFurthestAncestor(e),n=this.nodes.takeUntil(function(e){return e==t}).reduce(function(e,t){return e+t.text.length},0);return this.hasChild(e)?n:n+t.getOffset(e)}},{key:"getOffsetAtRange",value:function(e){if((e=this.resolveRange(e)).isUnset)throw new Error("The range cannot be unset to calculcate its offset.");if(e.isExpanded)throw new Error("The range must be collapsed to calculcate its offset.");var t=e.start;return this.getOffset(t.key)+t.offset}},{key:"getOrderedMarks",value:function(){var e=this.getMarksAsArray();return Object(i.OrderedSet)(e)}},{key:"getOrderedMarksAtRange",value:function(e){var t=e=this.resolveRange(e),n=t.start,r=t.end;return e.isUnset?Object(i.OrderedSet)():e.isCollapsed?this.getMarksAtPosition(n.key,n.offset):this.getOrderedMarksBetweenPositions(n.key,n.offset,r.key,r.offset)}},{key:"getOrderedMarksBetweenPositions",value:function(e,t,n,r){if(e===n)return this.getDescendant(e).getMarksBetweenOffsets(t,r);var o=this.getTextsBetweenPositionsAsArray(e,n);return Object(i.OrderedSet)().withMutations(function(i){o.forEach(function(o){o.key===e?i.union(o.getMarksBetweenOffsets(t,o.text.length)):o.key===n?i.union(o.getMarksBetweenOffsets(0,r)):i.union(o.getMarks())})})}},{key:"getOrderedMarksByType",value:function(e){var t=this.getMarksByTypeAsArray(e);return Object(i.OrderedSet)(t)}},{key:"getParent",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;var t=ye.lift(e);return this.getNode(t)}},{key:"getPreviousBlock",value:function(e){var t=this.assertDescendant(e),n=void 0;"block"==t.object?n=t.getFirstText():n=this.getClosestBlock(e).getFirstText();var r=this.getPreviousText(n.key);return r?this.getClosestBlock(r.key):null}},{key:"getPreviousNode",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;for(var t=e.size;t>0;t--){var n=e.slice(0,t);if(0!==n.last()){var r=ye.decrement(n),o=this.getNode(r);if(o)return o}}return null}},{key:"getPreviousSibling",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;if(0===e.last())return null;var t=ye.decrement(e);return this.getNode(t)}},{key:"getPreviousText",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;var t=this.getPreviousNode(e);return t?t.getLastText():null}},{key:"getSelectionIndexes",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=e.start,r=e.end;if(!t)return null;if(e.isUnset)return null;if(n.key==r.key){var o=this.getFurthestAncestor(n.key),i=o?this.nodes.indexOf(o):null;return{start:i,end:i+1}}var a=null,s=null;return this.nodes.forEach(function(e,t){return"text"==e.object?(null==a&&e.key==n.key&&(a=t),null==s&&e.key==r.key&&(s=t+1)):(null==a&&e.hasDescendant(n.key)&&(a=t),null==s&&e.hasDescendant(r.key)&&(s=t+1)),null==a||null==s}),t&&null==a&&(a=0),t&&null==s&&(s=this.nodes.size),null==a?null:{start:a,end:s}}},{key:"getTextAtOffset",value:function(e){if(0===e)return this.getFirstText();if(e===this.text.length)return this.getLastText();if(e<0||e>this.text.length)return null;var t=0;return this.getTexts().find(function(n,r,o){return(t+=n.text.length)>e})}},{key:"getTextDirection",value:function(){var e=h()(this.text);return"neutral"===e?null:e}},{key:"getTexts",value:function(){var e=this.getTextsAsArray();return Object(i.List)(e)}},{key:"getTextsAsArray",value:function(){var e=[];return this.nodes.forEach(function(t){"text"==t.object?e.push(t):e=e.concat(t.getTextsAsArray())}),e}},{key:"getTextsAtRange",value:function(e){if((e=this.resolveRange(e)).isUnset)return Object(i.List)();var t=e,n=t.start,r=t.end;return Object(i.List)(this.getTextsBetweenPositionsAsArray(n.key,r.key))}},{key:"getTextsAtRangeAsArray",value:function(e){if((e=this.resolveRange(e)).isUnset)return[];var t=e,n=t.start,r=t.end;return this.getTextsBetweenPositionsAsArray(n.key,r.key)}},{key:"getTextsBetweenPositionsAsArray",value:function(e,t){var n=this.getDescendant(e);if(e==t)return[n];var r=this.getDescendant(t),o=this.getTextsAsArray(),i=o.indexOf(n),a=o.indexOf(r,i);return o.slice(i,a+1)}},{key:"hasBlockChildren",value:function(){return!(!this.nodes||!this.nodes.find(function(e){return"block"===e.object}))}},{key:"hasChild",value:function(e){return!!this.getChild(e)}},{key:"hasInlineChildren",value:function(){return!(!this.nodes||!this.nodes.find(function(e){return"inline"===e.object||"text"===e.object}))}},{key:"hasDescendant",value:function(e){return!!this.getDescendant(e)}},{key:"hasVoidParent",value:function(e,t){return!!this.getClosestVoid(e,t)}},{key:"insertNode",value:function(e,t){var n=(e=this.resolvePath(e)).last(),r=ye.lift(e),o=this.assertNode(r),i=o.nodes.splice(n,0,t);return o=o.set("nodes",i),this.replaceNode(r,o)}},{key:"insertText",value:function(e,t,n,r){var o=this.assertDescendant(e);return e=this.resolvePath(e),o=o.insertText(t,n,r),this.replaceNode(e,o)}},{key:"isLeafBlock",value:function(){var e=this.object,t=this.nodes.first();return"block"===e&&"block"!==t.object}},{key:"isLeafInline",value:function(){var e=this.object,t=this.nodes.first();return"inline"===e&&"inline"!==t.object}},{key:"mapChildren",value:function(e){var t=this,n=this.nodes;return n.forEach(function(r,o){var i=e(r,o,t.nodes);i!==r&&(n=n.set(i.key,i))}),this.set("nodes",n)}},{key:"mapDescendants",value:function(e){var t=this,n=this.nodes;return n.forEach(function(r,o){var i=r;"text"!==i.object&&(i=i.mapDescendants(e)),(i=e(i,o,t.nodes))!==r&&(n=n.set(o,i))}),this.set("nodes",n)}},{key:"mergeNode",value:function(e){var t=this.assertNode(e);if(0===(e=this.resolvePath(e)).last())throw new Error("Unable to merge node because it has no previous sibling: "+t);var n=ye.decrement(e),r=this.assertNode(n);if(r.object!==t.object)throw new Error("Unable to merge two different kinds of nodes: "+r+" and "+t);var o="text"===r.object?r.mergeText(t):r.set("nodes",r.nodes.concat(t.nodes)),i=this;return i=(i=(i=i.removeNode(e)).removeNode(n)).insertNode(n,o)}},{key:"moveNode",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=this.assertNode(e);e=this.resolvePath(e),t=this.resolvePath(t,n);var o=ye.lift(t);this.assertNode(o);var i=ye.crop(e,t),a=k(i,2),s=a[0],l=a[1],u=ye.compare(s,l);e.size1?n-1:0),o=1;o1&&void 0!==arguments[1]?arguments[1]:e;return this.setPoints([this.anchor.moveToStartOfNode(e),this.focus.moveToEndOfNode(t)])}},{key:"moveToStart",value:function(){return this.setEnd(this.start)}},{key:"moveToStartOfNode",value:function(e){return this.updatePoints(function(t){return t.moveToStartOfNode(e)})}},{key:"normalize",value:function(e){return this.updatePoints(function(t){return t.normalize(e)})}},{key:"setAnchor",value:function(e){return this.set("anchor",e)}},{key:"setEnd",value:function(e){return this.isBackward?this.setAnchor(e):this.setFocus(e)}},{key:"setFocus",value:function(e){return this.set("focus",e)}},{key:"setPoints",value:function(e){var t=k(e,2),n=t[0],r=t[1];return this.set("anchor",n).set("focus",r)}},{key:"updatePoints",value:function(e){var t=this.anchor,n=this.focus;return t=e(t),n=e(n),this.merge({anchor:t,focus:n})}},{key:"setStart",value:function(e){return this.isBackward?this.setFocus(e):this.setAnchor(e)}},{key:"setProperties",value:function(e){var t=e=Pe.createProperties(e),n=t.anchor,r=t.focus,o=w(t,["anchor","focus"]);return n&&(o.anchor=Re.create(n)),r&&(o.focus=Re.create(r)),this.merge(o)}},{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{object:this.object,anchor:this.anchor.toJSON(e),focus:this.focus.toJSON(e)}}},{key:"toRange",value:function(){var e=Pe.createProperties(this);return Pe.create(e)}},{key:"unset",value:function(){return this.updatePoints(function(e){return e.unset()})}},{key:"isCollapsed",get:function(){return this.anchor===this.focus||this.anchor.key===this.focus.key&&this.anchor.offset===this.focus.offset}},{key:"isExpanded",get:function(){return!this.isCollapsed}},{key:"isBackward",get:function(){var e=this.isUnset,t=this.anchor,n=this.focus;return e?null:t.key===n.key?t.offset>n.offset:ye.isBefore(n.path,t.path)}},{key:"isForward",get:function(){var e=this.isBackward;return null==e?null:!e}},{key:"isUnset",get:function(){var e=this.anchor,t=this.focus;return e.isUnset||t.isUnset}},{key:"isSet",get:function(){return!this.isUnset}},{key:"start",get:function(){return this.isBackward?this.focus:this.anchor}},{key:"end",get:function(){return this.isBackward?this.anchor:this.focus}}]),e}(),[Ie,Pe,Fe]);var Rt={apply:ft,invert:pt},Nt={Block:Q,Changes:ut,Data:R,Decoration:Ie,Document:I,History:ze,Inline:A,KeyUtils:y,Leaf:F,Mark:P,Node:K,Operation:_t,Operations:Rt,PathUtils:ye,Point:Re,Range:Pe,resetMemoization:H,Schema:Ze,Selection:Fe,Stack:Ke,Text:W,TextUtils:le,useMemoization:Y,Value:st};t.default=Nt},function(e,t,n){"use strict";var r=function(e){};e.exports=function(e,t,n,o,i,a,s,l){if(r(t),!e){var u;if(void 0===t)u=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,o,i,a,s,l],f=0;(u=new Error(t.replace(/%s/g,function(){return c[f++]}))).name="Invariant Violation"}throw u.framesToPop=1,u}}},function(e,t,n){var r; +/*! + Copyright (c) 2017 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ +/*! + Copyright (c) 2017 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ +!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;t>>0;if("function"!=typeof e)throw new TypeError;for(var r=[],o=arguments.length>=2?arguments[1]:void 0,i=0;i>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");arguments.length>1&&(n=t);var a=new Array(i);for(r=0;r>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");for(arguments.length>1&&(n=t),r=0;r1){var i=Object(arguments[1]);for(var a in i)t.call(i,a)&&(r[a]=i[a])}return r}}()),e.super_=t,e.prototype=(0,r.default)(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},e.exports.isNumber=function(e){return"number"==typeof e&&isFinite(e)},e.exports.removeHiddenChars=function(e){return s(e.normalize("NFD").replace(u,""))};var u=/[\u200B-\u200D\u0300-\u036f\uFEFF\s]/g;function c(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}e.exports.escapeRegExp=c,e.exports.globToRegexp=function(e,t){t="boolean"!=typeof t||t;var n=c(e);return n=(n=n.replace(/\\\*/g,".*")).replace(/\?/g,"."),t&&(n=n.replace(/\\\[(!|)(.*)\\]/g,function(e,t,n,r,o){return"["+(t?"^":"")+n.replace(/\\-/,"-")+"]"})),n}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){e.exports={default:n(394),__esModule:!0}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){"use strict";e.exports=function(e){for(var t=arguments.length-1,n="Minified React error #"+e+"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant="+e,r=0;r + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */var r=n(1792);function o(e){return!0===r(e)&&"[object Object]"===Object.prototype.toString.call(e)}e.exports=function(e){var t,n;return!1!==o(e)&&("function"==typeof(t=e.constructor)&&(!1!==o(n=t.prototype)&&!1!==n.hasOwnProperty("isPrototypeOf")))}},function(e,t,n){e.exports=!n(56)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t,n){"use strict"; +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,a,s=function(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),l=1;l0?o(r(e),9007199254740991):0}},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(206));t.default=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t1&&void 0!==arguments[1]?arguments[1]:"";if(!e){var n=console.warn||console.log;n("Warning: "+t)}}},function(e,t,n){e.exports={default:n(1132),__esModule:!0}},function(e,t){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(e){return"function"==typeof e}function o(e){return"object"==typeof e&&null!==e}function i(e){return void 0===e}e.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(e){if(!function(e){return"number"==typeof e}(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},n.prototype.emit=function(e){var t,n,a,s,l,u;if(this._events||(this._events={}),"error"===e&&(!this._events.error||o(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var c=new Error('Uncaught, unspecified "error" event. ('+t+")");throw c.context=t,c}if(i(n=this._events[e]))return!1;if(r(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),n.apply(this,s)}else if(o(n))for(s=Array.prototype.slice.call(arguments,1),a=(u=n.slice()).length,l=0;l0&&this._events[e].length>a&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(e,t){if(!r(t))throw TypeError("listener must be a function");var n=!1;function o(){this.removeListener(e,o),n||(n=!0,t.apply(this,arguments))}return o.listener=t,this.on(e,o),this},n.prototype.removeListener=function(e,t){var n,i,a,s;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(a=(n=this._events[e]).length,i=-1,n===t||r(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(n)){for(s=a;s-- >0;)if(n[s]===t||n[s].listener&&n[s].listener===t){i=s;break}if(i<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},n.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r(n=this._events[e]))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},n.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},n.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},n.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t){var n,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var l,u=[],c=!1,f=-1;function d(){c&&l&&(c=!1,l.length?u=l.concat(u):f=-1,u.length&&p())}function p(){if(!c){var e=s(d);c=!0;for(var t=u.length;t;){for(l=u,u=[];++f1)for(var n=1;n=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],e.exports=n(1790)(t),e.exports.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}).call(this,n(64))},function(e,t,n){var r=n(98);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t,n){var r=n(27),o=n(18),i=n(56);e.exports=function(e,t){var n=(o.Object||{})[e]||Object[e],a={};a[e]=t(n),r(r.S+r.F*i(function(){n(1)}),"Object",a)}},function(e,t,n){"use strict";var r=!("undefined"==typeof window||!window.document||!window.document.createElement),o={canUseDOM:r,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:r&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:r&&!!window.screen,isInWorker:!r};e.exports=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.closest=t.distance=t.patch=t.absolute=t.negate=t.isEqual=t.subtract=t.add=void 0;var r=i(n(51)),o=i(n(46));function i(e){return e&&e.__esModule?e:{default:e}}t.add=function(e,t){return{x:e.x+t.x,y:e.y+t.y}},t.subtract=function(e,t){return{x:e.x-t.x,y:e.y-t.y}},t.isEqual=function(e,t){return e.x===t.x&&e.y===t.y},t.negate=function(e){return{x:0!==e.x?-e.x:0,y:0!==e.y?-e.y:0}},t.absolute=function(e){return{x:Math.abs(e.x),y:Math.abs(e.y)}},t.patch=function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return n={},(0,o.default)(n,e,t),(0,o.default)(n,"x"===e?"y":"x",r),n};var a=t.distance=function(e,t){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))};t.closest=function(e,t){return Math.min.apply(Math,(0,r.default)(t.map(function(t){return a(e,t)})))}},function(e,t,n){var r=n(49),o=n(152);e.exports=n(48)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var r=n(28),o=n(71),i=n(84),a=n(153)("src"),s=Function.toString,l=(""+s).split("toString");n(94).inspectSource=function(e){return s.call(e)},(e.exports=function(e,t,n,s){var u="function"==typeof n;u&&(i(n,"name")||o(n,"name",t)),e[t]!==n&&(u&&(i(n,a)||o(n,a,e[t]?""+e[t]:l.join(String(t)))),e===r?e[t]=n:s?e[t]?e[t]=n:o(e,t,n):(delete e[t],o(e,t,n)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[a]||s.call(this)})},function(e,t,n){var r=n(7),o=n(30),i=n(110),a=/"/g,s=function(e,t,n,r){var o=String(i(e)),s="<"+t;return""!==n&&(s+=" "+n+'="'+String(r).replace(a,""")+'"'),s+">"+o+""};e.exports=function(e,t){var n={};n[e]=t(s),r(r.P+r.F*o(function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}),"String",n)}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){e.exports={}},function(e,t,n){var r=n(163),o=n(126);e.exports=Object.keys||function(e){return r(e,o)}},function(e,t,n){e.exports={default:n(363),__esModule:!0}},function(e,t,n){"use strict";var r=n(1118),o=n(1119);function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=y,t.resolve=function(e,t){return y(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?y(e,!1,!0).resolveObject(t):t},t.format=function(e){o.isString(e)&&(e=y(e));return e instanceof i?e.format():i.prototype.format.call(e)},t.Url=i;var a=/^([a-z0-9.+-]+:)/i,s=/:[0-9]*$/,l=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,u=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(u),f=["%","/","?",";","#"].concat(c),d=["/","?","#"],p=/^[+a-z0-9A-Z_-]{0,63}$/,m=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,h={javascript:!0,"javascript:":!0},_={javascript:!0,"javascript:":!0},g={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},v=n(290);function y(e,t,n){if(e&&o.isObject(e)&&e instanceof i)return e;var r=new i;return r.parse(e,t,n),r}i.prototype.parse=function(e,t,n){if(!o.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var i=e.indexOf("?"),s=-1!==i&&i127?A+="x":A+=O[M];if(!A.match(p)){var L=N.slice(0,k),F=N.slice(k+1),U=O.match(m);U&&(L.push(U[1]),F.unshift(U[2])),F.length&&(y="/"+F.join(".")+y),this.hostname=L.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),R||(this.hostname=r.toASCII(this.hostname));var j=this.port?":"+this.port:"",B=this.hostname||"";this.host=B+j,this.href+=this.host,R&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==y[0]&&(y="/"+y))}if(!h[C])for(k=0,I=c.length;k0)&&n.host.split("@"))&&(n.auth=R.shift(),n.host=n.hostname=R.shift());return n.search=e.search,n.query=e.query,o.isNull(n.pathname)&&o.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!S.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var w=S.slice(-1)[0],T=(n.host||e.host||S.length>1)&&("."===w||".."===w)||""===w,k=0,x=S.length;x>=0;x--)"."===(w=S[x])?S.splice(x,1):".."===w?(S.splice(x,1),k++):k&&(S.splice(x,1),k--);if(!E&&!C)for(;k--;k)S.unshift("..");!E||""===S[0]||S[0]&&"/"===S[0].charAt(0)||S.unshift(""),T&&"/"!==S.join("/").substr(-1)&&S.push("");var R,N=""===S[0]||S[0]&&"/"===S[0].charAt(0);D&&(n.hostname=n.host=N?"":S.length?S.shift():"",(R=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=R.shift(),n.host=n.hostname=R.shift()));return(E=E||n.host&&S.length)&&!N&&S.unshift(""),S.length?n.pathname=S.join("/"):(n.pathname=null,n.path=null),o.isNull(n.pathname)&&o.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},i.prototype.parseHost=function(){var e=this.host,t=s.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.baseUrl=t.host=void 0;var r=l(n(19)),o=l(n(14));t.makeEventPermalink=function(e,t){var n=c+"/#/"+e+"/"+t;if("!"!==e[0])return n;var r=p(e);return""+n+d(r)},t.makeUserPermalink=function(e){return c+"/#/"+e},t.makeRoomPermalink=function(e){var t=c+"/#/"+e;if("!"!==e[0])return t;var n=p(e);return""+t+d(n)},t.makeGroupPermalink=function(e){return c+"/#/"+e},t.encodeServerCandidates=d,t.pickServerCandidates=p;var i=l(n(8)),a=l(n(1239)),s=l(n(29));function l(e){return e&&e.__esModule?e:{default:e}}var u=t.host="matrix.to",c=t.baseUrl="https://"+u,f=3;function d(e){return e&&0!==e.length?"?via="+e.map(function(e){return encodeURIComponent(e)}).join("&via="):""}function p(e){var t=i.default.get().getRoom(e);if(!t)return[];var n=[],a=[new RegExp(".*")];if(t.currentState){var l=t.currentState.getStateEvents("m.room.server_acl","");if(l&&l.getContent()){var u=function(e){return new RegExp("^"+s.default.globToRegexp(e,!1)+"$")};(l.getContent().deny||[]).forEach(function(e){return n.push(u(e))});var c=l.getContent().allow||[];a=[],c.forEach(function(e){return a.push(u(e))})}}var d={},p={userId:null,powerLevel:0,serverName:null},m=!0,g=!1,v=void 0;try{for(var y,b=(0,r.default)(t.getJoinedMembers());!(m=(y=b.next()).done);m=!0){var E=y.value,C=E.userId.split(":").splice(1).join(":");E.powerLevel>p.powerLevel&&!_(C)&&!h(C,n)&&h(C,a)&&(p.userId=E.userId,p.powerLevel=E.powerLevel,p.serverName=C),d[C]||(d[C]=0),d[C]++}}catch(e){g=!0,v=e}finally{try{!m&&b.return&&b.return()}finally{if(g)throw v}}var S=[];p.powerLevel>=50&&S.push(p.serverName);for(var D=S.length,w=(0,o.default)(d).sort(function(e,t){return d[t]-d[e]}).filter(function(e){return!S.includes(e)&&!_(e)&&!h(e,n)&&h(e,a)}),T=D;T=w.length)break;S.push(w[k])}return S}function m(e){if(!e)return null;var t=document.createElement("a");return t.href="https://"+e,t.hostname}function h(e,t){if(!(e=m(e)))return!0;if(t.length>0&&!t[0].test)throw new Error(t[0]);return t.filter(function(t){return t.test(e)}).length>0}function _(e){return!!(e=m(e))&&(e.startsWith("[")&&e.endsWith("]")&&(e=e.substring(1,e.length-1)),(0,a.default)(e))}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isOnlyCtrlOrCmdKeyEvent=function(e){return navigator.platform.toUpperCase().indexOf("MAC")>=0?e.metaKey&&!e.altKey&&!e.ctrlKey&&!e.shiftKey:e.ctrlKey&&!e.altKey&&!e.metaKey&&!e.shiftKey},t.isOnlyCtrlOrCmdIgnoreShiftKeyEvent=function(e){return navigator.platform.toUpperCase().indexOf("MAC")>=0?e.metaKey&&!e.altKey&&!e.ctrlKey:e.ctrlKey&&!e.altKey&&!e.metaKey};t.KeyCode={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46,KEY_A:65,KEY_B:66,KEY_C:67,KEY_D:68,KEY_E:69,KEY_F:70,KEY_G:71,KEY_H:72,KEY_I:73,KEY_J:74,KEY_K:75,KEY_L:76,KEY_M:77,KEY_N:78,KEY_O:79,KEY_P:80,KEY_Q:81,KEY_R:82,KEY_S:83,KEY_T:84,KEY_U:85,KEY_V:86,KEY_W:87,KEY_X:88,KEY_Y:89,KEY_Z:90}},function(e,t,n){"use strict";var r=g(n(46)),o=g(n(11)),i=g(n(4)),a=g(n(5)),s=g(n(12)),l=g(n(13)),u=g(n(17)),c=g(n(61)),f=n(9),d=function(){var e=(0,f.coroutine)(u.default.mark(function e(t){return u.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!(b>=E)){e.next=3;break}return e.next=3,(0,f.resolve)(new c.default(function(e,t){C.push(e)}));case 3:return b++,e.prev=4,e.next=7,(0,f.resolve)(t());case 7:return e.abrupt("return",e.sent);case 10:throw e.prev=10,e.t0=e.catch(4),e.t0;case 13:return e.prev=13,b--,S(),e.finish(13);case 17:case"end":return e.stop()}},e,this,[[4,10,13,17]])}));return function(t){return e.apply(this,arguments)}}(),p=g(n(62)),m=n(241),h=g(n(148)),_=g(n(8));function g(e){return e&&e.__esModule?e:{default:e}}function v(e){return e.chunk.map(function(e){return(0,m.groupMemberFromApiObject)(e)})}function y(e){return e.chunk.map(function(e){return(0,m.groupRoomFromApiObject)(e)})}var b=0,E=3,C=[];function S(){var e=C.shift();"function"==typeof e&&e()}var D=function(e){function t(){var e,n;(0,i.default)(this,t);var a=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this));return a.STATE_KEY={GroupMembers:"GroupMembers",GroupInvitedMembers:"GroupInvitedMembers",Summary:"Summary",GroupRooms:"GroupRooms"},a._state={},a._state[a.STATE_KEY.Summary]={},a._state[a.STATE_KEY.GroupRooms]={},a._state[a.STATE_KEY.GroupMembers]={},a._state[a.STATE_KEY.GroupInvitedMembers]={},a._ready={},a._ready[a.STATE_KEY.Summary]={},a._ready[a.STATE_KEY.GroupRooms]={},a._ready[a.STATE_KEY.GroupMembers]={},a._ready[a.STATE_KEY.GroupInvitedMembers]={},a._fetchResourcePromise=(e={},(0,r.default)(e,a.STATE_KEY.Summary,{}),(0,r.default)(e,a.STATE_KEY.GroupRooms,{}),(0,r.default)(e,a.STATE_KEY.GroupMembers,{}),(0,r.default)(e,a.STATE_KEY.GroupInvitedMembers,{}),e),a._resourceFetcher=(n={},(0,r.default)(n,a.STATE_KEY.Summary,function(e){return d(function(){return _.default.get().getGroupSummary(e)})}),(0,r.default)(n,a.STATE_KEY.GroupRooms,function(e){return d(function(){return _.default.get().getGroupRooms(e).then(y)})}),(0,r.default)(n,a.STATE_KEY.GroupMembers,function(e){return d(function(){return _.default.get().getGroupUsers(e).then(v)})}),(0,r.default)(n,a.STATE_KEY.GroupInvitedMembers,function(e){return d(function(){return _.default.get().getGroupInvitedUsers(e).then(v)})}),n),a}return(0,l.default)(t,e),(0,a.default)(t,[{key:"_fetchResource",value:function(e,t){var n=this;if(!this._fetchResourcePromise[e][t]){var r=this._resourceFetcher[e](t);return this._fetchResourcePromise[e][t]=r,r.then(function(r){n._state[e][t]=r,n._ready[e][t]=!0,n._notifyListeners()}).catch(function(r){e===n.STATE_KEY.GroupInvitedMembers&&403===r.httpStatus||(console.error("Failed to get resource "+e+" for "+t,r),n.emit("error",r,t,e))}).finally(function(){delete n._fetchResourcePromise[e][t]}),r}}},{key:"_notifyListeners",value:function(){this.emit("update")}},{key:"registerListener",value:function(e,t){var n=this;return this.on("update",t),this.emit("update"),e&&(this._fetchResource(this.STATE_KEY.Summary,e),this._fetchResource(this.STATE_KEY.GroupRooms,e),this._fetchResource(this.STATE_KEY.GroupMembers,e),this._fetchResource(this.STATE_KEY.GroupInvitedMembers,e)),{unregister:function(){n.unregisterListener(t)}}}},{key:"unregisterListener",value:function(e){this.removeListener("update",e)}},{key:"isStateReady",value:function(e,t){return this._ready[t][e]}},{key:"getSummary",value:function(e){return this._state[this.STATE_KEY.Summary][e]||{}}},{key:"getGroupRooms",value:function(e){return this._state[this.STATE_KEY.GroupRooms][e]||[]}},{key:"getGroupMembers",value:function(e){return this._state[this.STATE_KEY.GroupMembers][e]||[]}},{key:"getGroupInvitedMembers",value:function(e){return this._state[this.STATE_KEY.GroupInvitedMembers][e]||[]}},{key:"getGroupPublicity",value:function(e){return(this._state[this.STATE_KEY.Summary][e]||{}).user?(this._state[this.STATE_KEY.Summary][e]||{}).user.is_publicised:null}},{key:"isUserPrivileged",value:function(e){return(this._state[this.STATE_KEY.Summary][e]||{}).user?(this._state[this.STATE_KEY.Summary][e]||{}).user.is_privileged:null}},{key:"refreshGroupRooms",value:function(e){return this._fetchResource(this.STATE_KEY.GroupRooms,e)}},{key:"refreshGroupMembers",value:function(e){return this._fetchResource(this.STATE_KEY.GroupMembers,e)}},{key:"addRoomToGroup",value:function(e,t,n){return _.default.get().addRoomToGroup(e,t,n).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e))}},{key:"updateGroupRoomVisibility",value:function(e,t,n){return _.default.get().updateGroupRoomVisibility(e,t,n).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e))}},{key:"removeRoomFromGroup",value:function(e,t){return _.default.get().removeRoomFromGroup(e,t).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e))}},{key:"inviteUserToGroup",value:function(e,t){return _.default.get().inviteUserToGroup(e,t).then(this._fetchResource.bind(this,this.STATE_KEY.GroupInvitedMembers,e))}},{key:"acceptGroupInvite",value:function(e){return _.default.get().acceptGroupInvite(e).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupMembers,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupInvitedMembers,e))}},{key:"joinGroup",value:function(e){return _.default.get().joinGroup(e).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupMembers,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupInvitedMembers,e))}},{key:"leaveGroup",value:function(e){return _.default.get().leaveGroup(e).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupMembers,e))}},{key:"addRoomToGroupSummary",value:function(e,t,n){return _.default.get().addRoomToGroupSummary(e,t,n).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e))}},{key:"addUserToGroupSummary",value:function(e,t,n){return _.default.get().addUserToGroupSummary(e,t,n).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e))}},{key:"removeRoomFromGroupSummary",value:function(e,t){return _.default.get().removeRoomFromGroupSummary(e,t).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e))}},{key:"removeUserFromGroupSummary",value:function(e,t){return _.default.get().removeUserFromGroupSummary(e,t).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e))}},{key:"setGroupPublicity",value:function(e,t){return _.default.get().setGroupPublicity(e,t).then(function(){h.default.invalidatePublicisedGroups(_.default.get().credentials.userId)}).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e))}}]),t}(p.default),w=null;w||(w=new D),e.exports=w},function(e,t,n){"use strict";n.r(t);var r=function(e,t){return e===t};t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r,n=void 0,o=[],i=void 0,a=!1,s=function(e,n){return t(e,o[n])};return function(){for(var t=arguments.length,r=Array(t),l=0;l=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t){e.exports=!0},function(e,t,n){var r=n(115);e.exports=function(e){return Object(r(e))}},function(e,t,n){"use strict";e.exports={debugTool:null}},function(e,t,n){"use strict";var r=n(1099),o=r.getLogger("matrix");o.setLevel(r.levels.DEBUG),e.exports=o},function(e,t,n){"use strict";(function(t){var r=d(n(14)),o=d(n(103)),i=d(n(4)),a=d(n(5)),s=n(2),l=d(n(83)),u=d(n(36)),c=d(n(15)),f=d(n(3));function d(e){return e&&e.__esModule?e:{default:e}}var p=/#\/(groups?|room|user|settings|register|login|forgot_password|home|directory)/,m=/#\/(group|room|user)\/.*$/;function h(){var e=window.location,t=e.origin,n=e.hash,r=window.location.pathname;return t.startsWith("file://")&&(r="//"),t+r+function(e){return p.exec(e)?m.test(e)?e.replace(m,"#/$1/"):e.replace(p,"#/$1"):(console.warn('Unexpected hash location "'+e+'"'),"#/")}(n)}var _={"App Platform":{id:1,expl:(0,s._td)("The platform you're on"),example:"Electron Platform"},"App Version":{id:2,expl:(0,s._td)("The version of Riot.im"),example:"15.0.0"},"User Type":{id:3,expl:(0,s._td)("Whether or not you're logged in (we don't record your user name)"),example:"Logged In"},"Chosen Language":{id:4,expl:(0,s._td)("Your language of choice"),example:"en"},Instance:{id:5,expl:(0,s._td)("Which officially provided instance you are using, if any"),example:"app"},"RTE: Uses Richtext Mode":{id:6,expl:(0,s._td)("Whether or not you're using the Richtext mode of the Rich Text Editor"),example:"off"},"Homeserver URL":{id:7,expl:(0,s._td)("Your homeserver's URL"),example:"https://matrix.org"},"Identity Server URL":{id:8,expl:(0,s._td)("Your identity server's URL"),example:"https://vector.im"}};function g(e,t){return e.includes(t)?t:""}var v=function(){function e(){(0,i.default)(this,e),this._paq=null,this.disabled=!0,this.firstPage=!0}return(0,a.default)(e,[{key:"enable",value:function(){(this._paq||this._init())&&(this.disabled=!1)}},{key:"disable",value:function(){this.trackEvent("Analytics","opt-out"),this._paq.push(["disableHeartBeatTimer"]),this.disabled=!0}},{key:"_init",value:function(){var e=this,t=u.default.get();if(t&&t.piwik&&t.piwik.url&&t.piwik.siteId){var n=t.piwik.url,r=t.piwik.siteId,o=this;window._paq=this._paq=window._paq||[],this._paq.push(["setTrackerUrl",n+"piwik.php"]),this._paq.push(["setSiteId",r]),this._paq.push(["trackAllContentImpressions"]),this._paq.push(["discardHashTag",!1]),this._paq.push(["enableHeartBeatTimer"]);var i=l.default.get();return this._setVisitVariable("App Platform",i.getHumanReadableName()),i.getAppVersion().then(function(t){e._setVisitVariable("App Version",t)}).catch(function(){e._setVisitVariable("App Version","unknown")}),this._setVisitVariable("Chosen Language",(0,s.getCurrentLanguage)()),"riot.im"===window.location.hostname&&this._setVisitVariable("Instance",window.location.pathname),function(){var e=document.createElement("script"),t=document.getElementsByTagName("script")[0];e.type="text/javascript",e.async=!0,e.defer=!0,e.src=n+"piwik.js",e.onload=function(){console.log("Initialised anonymous analytics"),o._paq=window._paq},t.parentNode.insertBefore(e,t)}(),!0}}},{key:"trackPageChange",value:function(e){this.disabled||(this.firstPage?this.firstPage=!1:("number"==typeof e?this._paq.push(["setGenerationTimeMs",e]):console.warn("Analytics.trackPageChange: expected generationTimeMs to be a number"),this._paq.push(["setCustomUrl",h()]),this._paq.push(["trackPageView"])))}},{key:"trackEvent",value:function(e,t,n,r){this.disabled||this._paq.push(["trackEvent",e,t,n,r])}},{key:"logout",value:function(){this.disabled||this._paq.push(["deleteCookies"])}},{key:"_setVisitVariable",value:function(e,t){this.disabled||this._paq.push(["setCustomVariable",_[e].id,e,t,"visit"])}},{key:"setLoggedIn",value:function(e,t,n){if(!this.disabled){var r=u.default.get();if(r.piwik){var o=r.piwik.whitelistedHSUrls||[],i=r.piwik.whitelistedISUrls||[];this._setVisitVariable("User Type",e?"Guest":"Logged In"),this._setVisitVariable("Homeserver URL",g(o,t)),this._setVisitVariable("Identity Server URL",g(i,n))}}}},{key:"setRichtextMode",value:function(e){this.disabled||this._setVisitVariable("RTE: Uses Richtext Mode",e?"on":"off")}},{key:"showDetailsModal",value:function(){var e=[];if(window.Piwik){var t=window.Piwik.getAsyncTracker();e=(0,o.default)(_).map(function(e){return t.getCustomVariable(e.id)}).filter(Boolean)}else e=(0,r.default)(_).map(function(e){return[e,(0,s._t)("e.g. %(exampleValue)s",{exampleValue:_[e].example})]});var n=window.screen.width+"x"+window.screen.height,i=[{expl:(0,s._td)("Every page you use in the app"),value:(0,s._t)("e.g. ",{},{CurrentPageURL:h()})},{expl:(0,s._td)("Your User Agent"),value:navigator.userAgent},{expl:(0,s._td)("Your device resolution"),value:n}],a=f.default.getComponent("dialogs.ErrorDialog");c.default.createTrackedDialog("Analytics Details","",a,{title:(0,s._t)("Analytics"),description:React.createElement("div",{className:"mx_UserSettings_analyticsModal"},React.createElement("div",null,(0,s._t)("The information being sent to us to help make Riot.im better includes:")),React.createElement("table",null,e.map(function(e){return React.createElement("tr",{key:e[0]},React.createElement("td",null,(0,s._t)(_[e[0]].expl)),void 0!==e[1]&&React.createElement("td",null,React.createElement("code",null,e[1])))}),i.map(function(e,t){return React.createElement("tr",{key:t},React.createElement("td",null,(0,s._t)(e.expl)),React.createElement("td",null,React.createElement("code",null,e.value)))})),React.createElement("div",null,(0,s._t)("Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.")))})}}]),e}();t.mxAnalytics||(t.mxAnalytics=new v),e.exports=t.mxAnalytics}).call(this,n(16))},function(e,t){var n=e.exports={version:"2.5.7"};"number"==typeof __e&&(__e=n)},function(e,t,n){var r=n(63);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){"use strict";var r=n(30);e.exports=function(e,t){return!!e&&r(function(){t?e.call(null,function(){},1):e.call(null)})}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t,n){"use strict";function r(e){return function(){return e}}var o=function(){};o.thatReturns=r,o.thatReturnsFalse=r(!1),o.thatReturnsTrue=r(!0),o.thatReturnsNull=r(null),o.thatReturnsThis=function(){return this},o.thatReturnsArgument=function(e){return e},e.exports=o},function(e,t,n){"use strict";var r=n(35),o=n(45),i=n(544),a=n(169),s=n(545),l=n(170),u=n(280),c=n(23),f=[],d=0,p=i.getPooled(),m=!1,h=null;function _(){C.ReactReconcileTransaction&&h||r("123")}var g=[{initialize:function(){this.dirtyComponentsLength=f.length},close:function(){this.dirtyComponentsLength!==f.length?(f.splice(0,this.dirtyComponentsLength),E()):f.length=0}},{initialize:function(){this.callbackQueue.reset()},close:function(){this.callbackQueue.notifyAll()}}];function v(){this.reinitializeTransaction(),this.dirtyComponentsLength=null,this.callbackQueue=i.getPooled(),this.reconcileTransaction=C.ReactReconcileTransaction.getPooled(!0)}function y(e,t){return e._mountOrder-t._mountOrder}function b(e){var t=e.dirtyComponentsLength;t!==f.length&&r("124",t,f.length),f.sort(y),d++;for(var n=0;n>18&63,i=l>>12&63,a=l>>6&63,s=63&l,p[f++]=u.charAt(o)+u.charAt(i)+u.charAt(a)+u.charAt(s)}while(c299)&&r.error){for(var o in e=new Error("CouchDB error: "+(r.error.reason||r.error.error)),r)e[o]=r[o];return n(e,t,r)}return n(e,t,r)})},t})?r.apply(t,o):r)||(e.exports=i)},function(e,t,n){var r=n(629),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();e.exports=i},function(e,t){var n=Array.isArray;e.exports=n},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){"use strict";var r=_(n(31)),o=_(n(40)),i=_(n(11)),a=_(n(4)),s=_(n(5)),l=_(n(12)),u=_(n(13)),c=_(n(10)),f=n(244),d=_(n(8)),p=_(n(3)),m=_(n(15)),h=n(2);function _(e){return e&&e.__esModule?e:{default:e}}var g={joining:!1,joinError:null,roomId:null,initialEventId:null,isInitialEventHighlighted:!1,roomAlias:null,roomLoading:!1,roomLoadError:null,forwardingEvent:null,quotingEvent:null,isEditingSettings:!1},v=function(e){function t(){(0,a.default)(this,t);var e=(0,l.default)(this,(t.__proto__||(0,i.default)(t)).call(this,c.default));return e._state=g,e}return(0,u.default)(t,e),(0,s.default)(t,[{key:"_setState",value:function(e){this._state=(0,o.default)(this._state,e),this.__emitChange()}},{key:"__onDispatch",value:function(e){switch(e.action){case"view_room":this._viewRoom(e);break;case"view_my_groups":case"view_group":this._setState({roomId:null,roomAlias:null});break;case"view_room_error":this._viewRoomError(e);break;case"will_join":this._setState({joining:!0});break;case"cancel_join":this._setState({joining:!1});break;case"join_room":this._joinRoom(e);break;case"join_room_error":this._joinRoomError(e);break;case"on_logged_out":this.reset();break;case"forward_event":this._setState({forwardingEvent:e.event});break;case"reply_to_event":this._setState({replyingToEvent:e.event});break;case"open_room_settings":this._setState({isEditingSettings:!0});break;case"close_settings":this._setState({isEditingSettings:!1})}}},{key:"_viewRoom",value:function(e){if(e.room_id){var t={roomId:e.room_id,roomAlias:e.room_alias,initialEventId:e.event_id,isInitialEventHighlighted:e.highlighted,forwardingEvent:null,roomLoading:!1,roomLoadError:null,shouldPeek:void 0===e.should_peek||e.should_peek,joining:e.joining||!1,replyingToEvent:null,isEditingSettings:!1};this._state.forwardingEvent&&c.default.dispatch({action:"send_event",room_id:t.roomId,event:this._state.forwardingEvent}),this._setState(t),e.auto_join&&this._joinRoom(e)}else e.room_alias&&(this._setState({roomId:null,initialEventId:null,initialEventPixelOffset:null,isInitialEventHighlighted:null,roomAlias:e.room_alias,roomLoading:!0,roomLoadError:null}),d.default.get().getRoomIdForAlias(e.room_alias).done(function(t){c.default.dispatch({action:"view_room",room_id:t.room_id,event_id:e.event_id,highlighted:e.highlighted,room_alias:e.room_alias,auto_join:e.auto_join,oob_data:e.oob_data})},function(t){c.default.dispatch({action:"view_room_error",room_id:null,room_alias:e.room_alias,err:t})}))}},{key:"_viewRoomError",value:function(e){this._setState({roomId:e.room_id,roomAlias:e.room_alias,roomLoading:!1,roomLoadError:e.err})}},{key:"_joinRoom",value:function(e){this._setState({joining:!0}),d.default.get().joinRoom(this._state.roomAlias||this._state.roomId,e.opts).done(function(){},function(e){c.default.dispatch({action:"join_room_error",err:e});var t=e.message?e.message:(0,r.default)(e);t&&t.startsWith("CORS request rejected")&&(t=(0,h._t)("There was an error joining the room")),"M_INCOMPATIBLE_ROOM_VERSION"===e.errcode&&(t=React.createElement("div",null,(0,h._t)("Sorry, your homeserver is too old to participate in this room."),React.createElement("br",null),(0,h._t)("Please contact your homeserver administrator.")));var n=p.default.getComponent("dialogs.ErrorDialog");m.default.createTrackedDialog("Failed to join room","",n,{title:(0,h._t)("Failed to join room"),description:t})})}},{key:"_joinRoomError",value:function(e){this._setState({joining:!1,joinError:e.err})}},{key:"reset",value:function(){this._state=(0,o.default)({},g)}},{key:"getRoomId",value:function(){return this._state.roomId}},{key:"getInitialEventId",value:function(){return this._state.initialEventId}},{key:"isInitialEventHighlighted",value:function(){return this._state.isInitialEventHighlighted}},{key:"getRoomAlias",value:function(){return this._state.roomAlias}},{key:"isRoomLoading",value:function(){return this._state.roomLoading}},{key:"getRoomLoadError",value:function(){return this._state.roomLoadError}},{key:"isJoining",value:function(){return this._state.joining}},{key:"getJoinError",value:function(){return this._state.joinError}},{key:"getForwardingEvent",value:function(){return this._state.forwardingEvent}},{key:"getQuotingEvent",value:function(){return this._state.replyingToEvent}},{key:"isEditingSettings",value:function(){return this._state.isEditingSettings}},{key:"shouldPeek",value:function(){return this._state.shouldPeek}}]),t}(f.Store),y=null;y||(y=new v),e.exports=y},function(e,t,n){var r=n(32);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r=n(7),o=n(94),i=n(30);e.exports=function(e,t){var n=(o.Object||{})[e]||Object[e],a={};a[e]=t(n),r(r.S+r.F*i(function(){n(1)}),"Object",a)}},function(e,t,n){var r=n(95),o=n(203),i=n(55),a=n(50),s=n(349);e.exports=function(e,t){var n=1==e,l=2==e,u=3==e,c=4==e,f=6==e,d=5==e||f,p=t||s;return function(t,s,m){for(var h,_,g=i(t),v=o(g),y=r(s,m,3),b=a(v.length),E=0,C=n?p(t,b):l?p(t,0):void 0;b>E;E++)if((d||E in v)&&(_=y(h=v[E],E,g),e))if(n)C[E]=_;else if(_)switch(e){case 3:return!0;case 5:return h;case 6:return E;case 2:C.push(h)}else if(c)return!1;return f?-1:u||c?c:C}}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){n(367);for(var r=n(33),o=n(59),i=n(75),a=n(39)("toStringTag"),s="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),l=0;ln;)o[n]=t[n++];return o},Re=function(e,t,n){G(e,t,{get:function(){return this._d[n]}})},Ne=function(e){var t,n,r,o,i,a,s=C(e),l=arguments.length,c=l>1?arguments[1]:void 0,f=void 0!==c,d=k(s);if(void 0!=d&&!S(d)){for(a=d.call(s),r=[],t=0;!(i=a.next()).done;t++)r.push(i.value);s=r}for(f&&l>2&&(c=u(c,arguments[2],2)),t=0,n=h(s.length),o=Te(this,n);n>t;t++)o[t]=f?c(s[t],t):s[t];return o},Ie=function(){for(var e=0,t=arguments.length,n=Te(this,t);t>e;)n[e]=arguments[e++];return n},Oe=!!Y&&i(function(){pe.call(new Y(1))}),Ae=function(){return pe.apply(Oe?fe.call(we(this)):we(this),arguments)},Me={copyWithin:function(e,t){return U.call(we(this),e,t,arguments.length>2?arguments[2]:void 0)},every:function(e){return J(we(this),e,arguments.length>1?arguments[1]:void 0)},fill:function(e){return F.apply(we(this),arguments)},filter:function(e){return ke(this,Q(we(this),e,arguments.length>1?arguments[1]:void 0))},find:function(e){return Z(we(this),e,arguments.length>1?arguments[1]:void 0)},findIndex:function(e){return ee(we(this),e,arguments.length>1?arguments[1]:void 0)},forEach:function(e){$(we(this),e,arguments.length>1?arguments[1]:void 0)},indexOf:function(e){return ne(we(this),e,arguments.length>1?arguments[1]:void 0)},includes:function(e){return te(we(this),e,arguments.length>1?arguments[1]:void 0)},join:function(e){return ue.apply(we(this),arguments)},lastIndexOf:function(e){return ae.apply(we(this),arguments)},map:function(e){return Ee(we(this),e,arguments.length>1?arguments[1]:void 0)},reduce:function(e){return se.apply(we(this),arguments)},reduceRight:function(e){return le.apply(we(this),arguments)},reverse:function(){for(var e,t=we(this).length,n=Math.floor(t/2),r=0;r1?arguments[1]:void 0)},sort:function(e){return ce.call(we(this),e)},subarray:function(e,t){var n=we(this),r=n.length,o=g(e,r);return new(O(n,n[ge]))(n.buffer,n.byteOffset+o*n.BYTES_PER_ELEMENT,h((void 0===t?r:g(t,r))-o))}},Pe=function(e,t){return ke(this,fe.call(we(this),e,t))},Le=function(e){we(this);var t=De(arguments[1],1),n=this.length,r=C(e),o=h(r.length),i=0;if(o+t>n)throw V("Wrong length!");for(;i255?255:255&r),o.v[p](n*t+o.o,r,Ce)}(this,n,e)},enumerable:!0})};y?(m=n(function(e,n,r,o){c(e,m,u,"_d");var i,a,s,l,f=0,p=0;if(E(n)){if(!(n instanceof W||"ArrayBuffer"==(l=b(n))||"SharedArrayBuffer"==l))return ye in n?xe(m,n):Ne.call(m,n);i=n,p=De(r,t);var g=n.byteLength;if(void 0===o){if(g%t)throw V("Wrong length!");if((a=g-p)<0)throw V("Wrong length!")}else if((a=h(o)*t)+p>g)throw V("Wrong length!");s=a/t}else s=_(n),i=new W(a=s*t);for(d(e,"_d",{b:i,o:p,l:a,e:s,v:new K(i)});fdocument.F=Object<\/script>"),e.close(),l=e.F;r--;)delete l.prototype[i[r]];return l()};e.exports=Object.create||function(e,t){var n;return null!==e?(s.prototype=r(e),n=new s,s.prototype=null,n[a]=e):n=l(),void 0===t?n:o(n,t)}},function(e,t,n){var r=n(114),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t,n){var r=n(125)("keys"),o=n(100);e.exports=function(e){return r[e]||(r[e]=o(e))}},function(e,t,n){var r=n(18),o=n(33),i=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(e.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:n(89)?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){var r=n(47).f,o=n(57),i=n(39)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},function(e,t,n){"use strict";e.exports={current:null}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){"use strict";var r=n(45),o=n(169),i=n(101),a=(n(37),["dispatchConfig","_targetInst","nativeEvent","isDefaultPrevented","isPropagationStopped","_dispatchListeners","_dispatchInstances"]),s={type:null,target:null,currentTarget:i.thatReturnsNull,eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};function l(e,t,n,r){this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n;var o=this.constructor.Interface;for(var a in o)if(o.hasOwnProperty(a)){0;var s=o[a];s?this[a]=s(n):"target"===a?this.target=r:this[a]=n[a]}var l=null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue;return this.isDefaultPrevented=l?i.thatReturnsTrue:i.thatReturnsFalse,this.isPropagationStopped=i.thatReturnsFalse,this}r(l.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=i.thatReturnsTrue)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=i.thatReturnsTrue)},persist:function(){this.isPersistent=i.thatReturnsTrue},isPersistent:i.thatReturnsFalse,destructor:function(){var e=this.constructor.Interface;for(var t in e)this[t]=null;for(var n=0;n0)){e.next=27;break}return console.warn("Refusing to start conference call widget in "+t+" a conference call widget is already present"),b=c.default.getComponent("dialogs.ErrorDialog"),u.default.createTrackedDialog("Already have Jitsi Widget","",b,{title:(0,f._t)("Call in Progress"),description:(0,f._t)("A call is already in progress!")}),e.abrupt("return");case 27:E=Math.random().toString(36).substring(2),C=d.roomId.replace(/[^A-Za-z0-9]/g,"")+E,S=["confId="+encodeURIComponent(C),"isAudioConf="+("voice"===n?"true":"false"),"displayName=$matrix_display_name","avatarUrl=$matrix_avatar_url","email=$matrix_user_id"].join("&"),D=void 0,D=m.default.get().integrations_jitsi_widget_url?m.default.get().integrations_jitsi_widget_url+"?"+S:m.default.get().integrations_rest_url+"/widgets/jitsi.html?"+S,w={widgetSessionId:E},T="jitsi_"+s.default.get().credentials.userId+"_"+Date.now(),_.default.setRoomWidget(t,T,"jitsi",D,"Jitsi",w).then(function(){console.log("Jitsi widget added")}).catch(function(e){if("M_FORBIDDEN"===e.errcode){var t=c.default.getComponent("dialogs.ErrorDialog");u.default.createTrackedDialog("Call Failed","",t,{title:(0,f._t)("Permission Required"),description:(0,f._t)("You do not have permission to start a conference call in this room")})}console.error(e)});case 35:case"end":return e.stop()}},e,this,[[2,8]])}));return function(t,n){return e.apply(this,arguments)}}(),s=y(n(8)),l=y(n(83)),u=y(n(15)),c=y(n(3)),f=n(2),d=y(n(20)),p=y(n(10)),m=y(n(36)),h=n(416),_=y(n(144)),g=y(n(294)),v=y(n(174));function y(e){return e&&e.__esModule?e:{default:e}}t.mxCalls={};var b=t.mxCalls,E=null,C={};function S(e){var t=document.getElementById(e);t&&(C[e]?C[e]=C[e].then(function(){return t.load(),t.play()}):C[e]=t.play())}function D(e){var t=document.getElementById(e);t&&(C[e]?C[e]=C[e].then(function(){return t.pause()}):C[e]=t.pause())}function w(e){e.on("error",function(t){if(console.error("Call error: %s",t),console.error(t.stack),"unknown_devices"===t.code){var n=c.default.getComponent("dialogs.QuestionDialog");u.default.createTrackedDialog("Call Failed","",n,{title:(0,f._t)("Call Failed"),description:(0,f._t)("There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call."),button:(0,f._t)("Review Devices"),onFinished:function(t){if(t){var n=s.default.get().getRoom(e.roomId);(0,h.showUnknownDeviceDialogForCalls)(s.default.get(),n,function(){!function(e){"outbound"===e.direction?p.default.dispatch({action:"place_call",room_id:e.roomId,type:e.type}):e.answer()}(e)},"outbound"===e.direction?(0,f._t)("Call Anyway"):(0,f._t)("Answer Anyway"),"outbound"===e.direction?(0,f._t)("Call"):(0,f._t)("Answer"))}}})}else{var r=c.default.getComponent("dialogs.ErrorDialog");u.default.createTrackedDialog("Call Failed","",r,{title:(0,f._t)("Call Failed"),description:t.message})}}),e.on("hangup",function(){T(void 0,e.roomId,"ended")}),e.on("state",function(t,n){if("ringing"===t)T(e,e.roomId,"ringing"),D("ringbackAudio");else if("invite_sent"===t)T(e,e.roomId,"ringback"),S("ringbackAudio");else if("ended"===t&&"connected"===n)T(void 0,e.roomId,"ended"),D("ringbackAudio"),S("callendAudio");else if("ended"===t&&"invite_sent"===n&&("remote"===e.hangupParty||"local"===e.hangupParty&&"invite_timeout"===e.hangupReason)){T(e,e.roomId,"busy"),D("ringbackAudio"),S("busyAudio");var r=c.default.getComponent("dialogs.ErrorDialog");u.default.createTrackedDialog("Call Handler","Call Timeout",r,{title:(0,f._t)("Call Timeout"),description:(0,f._t)("The remote side failed to pick up")+"."})}else"invite_sent"===n?(T(e,e.roomId,"stop_ringback"),D("ringbackAudio")):"ringing"===n?(T(e,e.roomId,"stop_ringing"),D("ringbackAudio")):"connected"===t&&(T(e,e.roomId,"connected"),D("ringbackAudio"))})}function T(e,t,n){console.log("Call state in %s changed to %s (%s)",t,n,e?e.call_state:"-"),b[t]=e,"ringing"===n?S("ringAudio"):e&&"ringing"===e.call_state&&D("ringAudio"),e&&(e.call_state=n),p.default.dispatch({action:"call_state",room_id:t,state:n})}t.mxCallHandler||p.default.register(function(t){switch(t.action){case"place_call":if(e.exports.getAnyActiveCall()){var n=c.default.getComponent("dialogs.ErrorDialog");return void u.default.createTrackedDialog("Call Handler","Existing Call",n,{title:(0,f._t)("Existing Call"),description:(0,f._t)("You are already in a call.")})}if(!s.default.get().supportsVoip()){var r=c.default.getComponent("dialogs.ErrorDialog");return void u.default.createTrackedDialog("Call Handler","VoIP is unsupported",r,{title:(0,f._t)("VoIP is unsupported"),description:(0,f._t)("You cannot place VoIP calls in this browser.")})}var o=s.default.get().getRoom(t.room_id);if(!o)return void console.error("Room %s does not exist.",t.room_id);var i=o.getJoinedMembers();if(i.length<=1){var m=c.default.getComponent("dialogs.ErrorDialog");return void u.default.createTrackedDialog("Call Handler","Cannot place call with self",m,{description:(0,f._t)("You cannot place a call with yourself.")})}2===i.length?(console.log("Place %s call in %s",t.type,t.room_id),function(e){if(w(e),"voice"===t.type)e.placeVoiceCall();else if("video"===t.type)e.placeVideoCall(t.remote_element,t.local_element);else if("screensharing"===t.type){var n=l.default.get().screenCaptureErrorString();if(n){T(void 0,e.roomId,"ended"),console.log("Can't capture screen: "+n);var r=c.default.getComponent("dialogs.ErrorDialog");return void u.default.createTrackedDialog("Call Handler","Unable to capture screen",r,{title:(0,f._t)("Unable to capture screen"),description:n})}e.placeScreenSharingCall(t.remote_element,t.local_element)}else console.error("Unknown conf call type: %s",t.type)}(d.default.createNewMatrixCall(s.default.get(),t.room_id))):p.default.dispatch({action:"place_conference_call",room_id:t.room_id,type:t.type,remote_element:t.remote_element,local_element:t.local_element});break;case"place_conference_call":console.log("Place conference call in %s",t.room_id),a(t.room_id,t.type);break;case"incoming_call":if(e.exports.getAnyActiveCall())return;if(!s.default.get().supportsVoip())return;var h=t.call;w(h),T(h,h.roomId,"ringing");break;case"hangup":if(!b[t.room_id])return;b[t.room_id].hangup(),T(null,t.room_id,"ended");break;case"answer":if(!b[t.room_id])return;b[t.room_id].answer(),T(b[t.room_id],t.room_id,"connected"),p.default.dispatch({action:"view_room",room_id:t.room_id})}});var k={getCallForRoom:function(t){var n=e.exports.getCall(t);return n||(E&&(n=E.getConferenceCallForRoom(t)),n||null)},getCall:function(e){return b[e]||null},getAnyActiveCall:function(){for(var e=(0,r.default)(b),t=0;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=u(n(14)),o=u(n(19)),i=u(n(4)),a=u(n(5)),s=u(n(8)),l=u(n(444));function u(e){return e&&e.__esModule?e:{default:e}}var c=function(){function e(t){(0,i.default)(this,e),this.matrixClient=t,this.roomToUser=null,this._hasSentOutPatchDirectAccountDataPatch=!1,this._onAccountData=this._onAccountData.bind(this);var n=t.getAccountData("m.direct");this.mDirectEvent=n?n.getContent():{},this.userToRooms=null}return(0,a.default)(e,[{key:"start",value:function(){this._populateRoomToUser(),this.matrixClient.on("accountData",this._onAccountData)}},{key:"stop",value:function(){this.matrixClient.removeListener("accountData",this._onAccountData)}},{key:"_onAccountData",value:function(e){"m.direct"==e.getType()&&(this.mDirectEvent=this.matrixClient.getAccountData("m.direct").getContent()||{},this.userToRooms=null,this.roomToUser=null)}},{key:"_patchUpSelfDMs",value:function(e){var t=this,n=this.matrixClient.getUserId(),r=e[n];if(r){var o=r.map(function(e){var r=t.matrixClient.getRoom(e);if(r){var o=r.guessDMUserId();if(o&&o!==n)return{userId:o,roomId:e}}}).filter(function(e){return!!e});return!!o.length&&(e[n]=r.filter(function(e){return!o.some(function(t){return t.roomId===e})}),o.forEach(function(t){var n=t.userId,r=t.roomId,o=e[n];o?(o.push(r),e[n]=(0,l.default)(o)):e[n]=[r]}),!0)}}},{key:"getDMRoomsForUserId",value:function(e){return this._getUserToRooms()[e]||[]}},{key:"getUserIdForRoomId",value:function(e){if(null==this.roomToUser&&this._populateRoomToUser(),void 0===this.roomToUser[e]){var t=this.matrixClient.getRoom(e);if(t)return t.getDMInviter()}return this.roomToUser[e]}},{key:"_getUserToRooms",value:function(){if(!this.userToRooms){var e=this.mDirectEvent,t=e[this.matrixClient.getUserId()];if(t&&t.length){var n=this._patchUpSelfDMs(e);console.warn("Invalid m.direct account data detected (self-chats that shouldn't be), patching it up."),n&&!this._hasSentOutPatchDirectAccountDataPatch&&(this._hasSentOutPatchDirectAccountDataPatch=!0,this.matrixClient.setAccountData("m.direct",e))}this.userToRooms=e}return this.userToRooms}},{key:"_populateRoomToUser",value:function(){this.roomToUser={};var e=!0,t=!1,n=void 0;try{for(var i,a=(0,o.default)((0,r.default)(this._getUserToRooms()));!(e=(i=a.next()).done);e=!0){var s=i.value,l=!0,u=!1,c=void 0;try{for(var f,d=(0,o.default)(this.userToRooms[s]);!(l=(f=d.next()).done);l=!0){var p=f.value;this.roomToUser[p]=s}}catch(e){u=!0,c=e}finally{try{!l&&d.return&&d.return()}finally{if(u)throw c}}}}catch(e){t=!0,n=e}finally{try{!e&&a.return&&a.return()}finally{if(t)throw n}}}}],[{key:"makeShared",value:function(){return e._sharedInstance=new e(s.default.get()),e._sharedInstance}},{key:"shared",value:function(){return e._sharedInstance}}]),e}();t.default=c,e.exports=t.default},,function(e,t,n){var r=n(153)("meta"),o=n(32),i=n(84),a=n(49).f,s=0,l=Object.isExtensible||function(){return!0},u=!n(30)(function(){return l(Object.preventExtensions({}))}),c=function(e){a(e,r,{value:{i:"O"+ ++s,w:{}}})},f=e.exports={KEY:r,NEED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,r)){if(!l(e))return"F";if(!t)return"E";c(e)}return e[r].i},getWeak:function(e,t){if(!i(e,r)){if(!l(e))return!0;if(!t)return!1;c(e)}return e[r].w},onFreeze:function(e){return u&&f.NEED&&l(e)&&!i(e,r)&&c(e),e}}},function(e,t){e.exports=!1},function(e,t,n){var r=n(42)("unscopables"),o=Array.prototype;void 0==o[r]&&n(71)(o,r,{}),e.exports=function(e){o[r][e]=!0}},function(e,t,n){var r=n(34),o=n(33).document,i=r(o)&&r(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},function(e,t,n){var r=n(100)("meta"),o=n(34),i=n(57),a=n(47).f,s=0,l=Object.isExtensible||function(){return!0},u=!n(56)(function(){return l(Object.preventExtensions({}))}),c=function(e){a(e,r,{value:{i:"O"+ ++s,w:{}}})},f=e.exports={KEY:r,NEED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,r)){if(!l(e))return"F";if(!t)return"E";c(e)}return e[r].i},getWeak:function(e,t){if(!i(e,r)){if(!l(e))return!0;if(!t)return!1;c(e)}return e[r].w},onFreeze:function(e){return u&&f.NEED&&l(e)&&!i(e,r)&&c(e),e}}},function(e,t,n){e.exports={default:n(1087),__esModule:!0}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(n(4)),o=a(n(5)),i=a(n(9));function a(e){return e&&e.__esModule?e:{default:e}}var s=function(){function e(){(0,r.default)(this,e)}return(0,o.default)(e,[{key:"getValue",value:function(e,t){return console.error("Invalid operation: getValue was not overridden"),null}},{key:"setValue",value:function(e,t,n){return console.error("Invalid operation: setValue was not overridden"),i.default.reject()}},{key:"canSetValue",value:function(e,t){return!1}},{key:"isSupported",value:function(){return!1}}]),e}();t.default=s,e.exports=t.default},function(e,t,n){"use strict";(function(t){var r=h(n(19)),o=h(n(8)),i=h(n(83)),a=h(n(415)),s=h(n(93)),l=h(n(292)),u=h(n(10)),c=h(n(3)),f=n(2),d=h(n(15)),p=n(21),m=h(p);function h(e){return e&&e.__esModule?e:{default:e}}var _={notifsByRoom:{},pendingEncryptedEventIds:[],notificationMessageForEvent:function(e){return a.default.textForEvent(e)},_displayPopupNotification:function(e,n){var r=i.default.get();if(r&&r.supportsNotifications()&&r.maySendNotifications()&&!t.document.hasFocus()){var o=this.notificationMessageForEvent(e);if(o){var a=void 0;e.sender&&n.name!==e.sender.name?"m.room.member"===e.getType()?a=n.name:e.sender&&(a=e.sender.name+" ("+n.name+")",e.getContent().body&&(o=e.getContent().body)):(a=n.name,e.getContent().body&&(o=e.getContent().body)),this.isBodyEnabled()||(o="");var s=e.sender?l.default.avatarUrlForMember(e.sender,40,40,"crop"):null,u=r.displayNotification(a,o,s,n);u&&(void 0===this.notifsByRoom[e.getRoomId()]&&(this.notifsByRoom[e.getRoomId()]=[]),this.notifsByRoom[e.getRoomId()].push(u))}}},_playAudioNotification:function(e,t){var n=document.getElementById("messageAudio");n&&n.play()},start:function(){this.boundOnEvent=this.onEvent.bind(this),this.boundOnSyncStateChange=this.onSyncStateChange.bind(this),this.boundOnRoomReceipt=this.onRoomReceipt.bind(this),this.boundOnEventDecrypted=this.onEventDecrypted.bind(this),o.default.get().on("event",this.boundOnEvent),o.default.get().on("Room.receipt",this.boundOnRoomReceipt),o.default.get().on("Event.decrypted",this.boundOnEventDecrypted),o.default.get().on("sync",this.boundOnSyncStateChange),this.toolbarHidden=!1,this.isSyncing=!1},stop:function(){o.default.get()&&this.boundOnRoomTimeline&&(o.default.get().removeListener("Event",this.boundOnEvent),o.default.get().removeListener("Room.receipt",this.boundOnRoomReceipt),o.default.get().removeListener("Event.decrypted",this.boundOnEventDecrypted),o.default.get().removeListener("sync",this.boundOnSyncStateChange)),this.isSyncing=!1},supportsDesktopNotifications:function(){var e=i.default.get();return e&&e.supportsNotifications()},setEnabled:function(e,t){var n=i.default.get();n&&(s.default.trackEvent("Notifier","Set Enabled",e),m.default.isLevelSupported(p.SettingLevel.DEVICE)&&m.default.setValue("audioNotificationsEnabled",null,p.SettingLevel.DEVICE,this.isEnabled()),e?n.requestNotificationPermission().done(function(e){if("granted"===e)t&&t(),u.default.dispatch({action:"notifier_enabled",value:!0});else{var n="denied"===e?(0,f._t)("Riot does not have permission to send you notifications - please check your browser settings"):(0,f._t)("Riot was not given permission to send notifications - please try again"),r=c.default.getComponent("dialogs.ErrorDialog");d.default.createTrackedDialog("Unable to enable Notifications",e,r,{title:(0,f._t)("Unable to enable Notifications"),description:n})}}):u.default.dispatch({action:"notifier_enabled",value:!1}),this.setToolbarHidden(!0))},isEnabled:function(){return this.isPossible()&&m.default.getValue("notificationsEnabled")},isPossible:function(){var e=i.default.get();return!!e&&(!!e.supportsNotifications()&&!!e.maySendNotifications())},isBodyEnabled:function(){return this.isEnabled()&&m.default.getValue("notificationBodyEnabled")},isAudioEnabled:function(){return this.isEnabled()&&m.default.getValue("audioNotificationsEnabled")},setToolbarHidden:function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.toolbarHidden=e,s.default.trackEvent("Notifier","Set Toolbar Hidden",e),u.default.dispatch({action:"notifier_enabled",value:this.isEnabled()}),n&&t.localStorage&&t.localStorage.setItem("notifications_hidden",e)},isToolbarHidden:function(){return t.localStorage?"true"===t.localStorage.getItem("notifications_hidden"):this.toolbarHidden},onSyncStateChange:function(e){"SYNCING"===e?this.isSyncing=!0:"STOPPED"!==e&&"ERROR"!==e||(this.isSyncing=!1)},onEvent:function(e){if(this.isSyncing&&(!e.sender||e.sender.userId!==o.default.get().credentials.userId))if(e.isBeingDecrypted()||e.isDecryptionFailure())for(this.pendingEncryptedEventIds.push(e.getId());this.pendingEncryptedEventIds.length>20;)this.pendingEncryptedEventIds.shift();else this._evaluateEvent(e)},onEventDecrypted:function(e){if(!e.isDecryptionFailure()){var t=this.pendingEncryptedEventIds.indexOf(e.getId());-1!==t&&(this.pendingEncryptedEventIds.splice(t,1),this._evaluateEvent(e))}},onRoomReceipt:function(e,t){if(0===t.getUnreadNotificationCount()){var n=i.default.get();if(!n)return;if(void 0===this.notifsByRoom[t.roomId])return;var o=!0,a=!1,s=void 0;try{for(var l,u=(0,r.default)(this.notifsByRoom[t.roomId]);!(o=(l=u.next()).done);o=!0){var c=l.value;n.clearNotification(c)}}catch(e){a=!0,s=e}finally{try{!o&&u.return&&u.return()}finally{if(a)throw s}}delete this.notifsByRoom[t.roomId]}},_evaluateEvent:function(e){var t=o.default.get().getRoom(e.getRoomId()),n=o.default.get().getPushActionsForEvent(e);n&&n.notify&&(u.default.dispatch({action:"event_notification",event:e,room:t}),this.isEnabled()&&this._displayPopupNotification(e,t),n.tweaks.sound&&this.isAudioEnabled()&&(i.default.get().loudNotification(e,t),this._playAudioNotification(e,t)))}};t.mxNotifier||(t.mxNotifier=_),e.exports=t.mxNotifier}).call(this,n(16))},function(e,t,n){"use strict";e.exports=function(e,t,n,r,o,i,a,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,o,i,a,s],c=0;l=new Error("Invariant Violation: "+t.replace(/%s/g,function(){return u[c++]}))}throw l.framesToPop=1,l}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=_(n(14)),o=_(n(118)),i=_(n(288)),a=_(n(103)),s=_(n(61)),l=_(n(4)),u=_(n(5)),c=_(n(8)),f=_(n(36)),d=_(n(10)),p=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(78)),m=_(n(294)),h=_(n(21));function _(e){return e&&e.__esModule?e:{default:e}}var g=function(){function e(){(0,l.default)(this,e)}return(0,u.default)(e,null,[{key:"canUserModifyWidgets",value:function(e){if(!e)return console.warn("No room ID specified"),!1;var t=c.default.get();if(!t)return console.warn("User must be be logged in"),!1;var n=t.getRoom(e);if(!n)return console.warn("Room ID "+e+" is not recognised"),!1;var r=t.credentials.userId;return r?"join"!==n.getMyMembership()?(console.warn("User "+r+" is not in room "+e),!1):n.currentState.maySendStateEvent("im.vector.modular.widgets",r):(console.warn("Failed to get user ID"),!1)}},{key:"isScalarUrl",value:function(e){if(!e)return console.error("Scalar URL check failed. No URL specified"),!1;var t=p.parse(e),n=f.default.get().integrations_widgets_urls;n&&0!==n.length||(n=[f.default.get().integrations_rest_url]);for(var r=0;r2&&void 0!==arguments[2])||arguments[2],o=function(){if(f.default.unmountComponentAtNode(h()),t&&t.onFinished){for(var e=arguments.length,n=Array(e),r=0;r1&&void 0!==arguments[1]&&arguments[1],n=new Date,a=o(),s=i();if(e.toDateString()===n.toDateString())return c(e,t);if(n.getTime()-e.getTime()<5184e5)return(0,r._t)("%(weekDayName)s %(time)s",{weekDayName:a[e.getDay()],time:c(e,t)});if(n.getFullYear()===e.getFullYear())return(0,r._t)("%(weekDayName)s, %(monthName)s %(day)s %(time)s",{weekDayName:a[e.getDay()],monthName:s[e.getMonth()],day:e.getDate(),time:c(e,t)});return l(e,t)},t.formatFullDateNoTime=function(e){var t=o(),n=i();return(0,r._t)("%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s",{weekDayName:t[e.getDay()],monthName:n[e.getMonth()],day:e.getDate(),fullYear:e.getFullYear()})},t.formatFullDate=l,t.formatFullTime=u,t.formatTime=c,t.wantsDateSeparator=function(e,t){if(!t||!e)return!1;if(Math.abs(e.getTime()-t.getTime())>f)return!0;return e.getDay()!==t.getDay()};var r=n(2);function o(){return[(0,r._t)("Sun"),(0,r._t)("Mon"),(0,r._t)("Tue"),(0,r._t)("Wed"),(0,r._t)("Thu"),(0,r._t)("Fri"),(0,r._t)("Sat")]}function i(){return[(0,r._t)("Jan"),(0,r._t)("Feb"),(0,r._t)("Mar"),(0,r._t)("Apr"),(0,r._t)("May"),(0,r._t)("Jun"),(0,r._t)("Jul"),(0,r._t)("Aug"),(0,r._t)("Sep"),(0,r._t)("Oct"),(0,r._t)("Nov"),(0,r._t)("Dec")]}function a(e){return(e<10?"0":"")+e}function s(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e.getHours()%12,o=a(e.getMinutes()),i=e.getHours()>=12?(0,r._t)("PM"):(0,r._t)("AM");return n=n||12,t?n+":"+o+":"+a(e.getSeconds())+i:n+":"+o+i}function l(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=o(),a=i();return(0,r._t)("%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s",{weekDayName:n[e.getDay()],monthName:a[e.getMonth()],day:e.getDate(),fullYear:e.getFullYear(),time:u(e,t)})}function u(e){return arguments.length>1&&void 0!==arguments[1]&&arguments[1]?s(e,!0):a(e.getHours())+":"+a(e.getMinutes())+":"+a(e.getSeconds())}function c(e){return arguments.length>1&&void 0!==arguments[1]&&arguments[1]?s(e):a(e.getHours())+":"+a(e.getMinutes())}var f=864e5},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){"use strict";(function(r){Object.defineProperty(t,"__esModule",{value:!0});var o=p(n(17)),i=p(n(14)),a=n(9),s=p(a),l=p(n(11)),u=p(n(4)),c=p(n(5)),f=p(n(12)),d=p(n(13));function p(e){return e&&e.__esModule?e:{default:e}}var m=!0,h=function(e){function t(e){(0,u.default)(this,t);var n=(0,f.default)(this,(t.__proto__||(0,l.default)(t)).call(this));return n._matrixClient=e,n._userGroups={},n._groupProfiles={},n._groupProfilesPromise={},n._usersPending={},n._usersInFlight={},n._debounceTimeoutID=null,n}return(0,d.default)(t,e),(0,c.default)(t,[{key:"groupSupport",value:function(){return m}},{key:"invalidatePublicisedGroups",value:function(e){delete this._userGroups[e]}},{key:"getPublicisedGroupsCached",value:function(e,t){var n=this;return this._userGroups[t]?s.default.resolve(this._userGroups[t]):this._usersPending[t]?this._usersPending[t].prom:this._usersInFlight[t]?this._usersInFlight[t].prom:(this._usersPending[t]={},this._usersPending[t].prom=new s.default(function(e,r){n._usersPending[t].resolve=e,n._usersPending[t].reject=r}).then(function(e){return n._userGroups[t]=e,setTimeout(function(){delete n._userGroups[t]},18e5),n._userGroups[t]}).catch(function(e){if("M_UNRECOGNIZED"===e.errcode)return console.warn("Cannot display flair, server does not support groups"),void(m=!1);throw console.error("Could not get groups for user",t,e),e}).finally(function(){delete n._usersInFlight[t]}),this._debounceTimeoutID&&clearTimeout(this._debounceTimeoutID),this._debounceTimeoutID=setTimeout(function(){n._batchedGetPublicGroups(e)},200),this._usersPending[t].prom)}},{key:"_batchedGetPublicGroups",value:function(){var e=(0,a.coroutine)(o.default.mark(function e(t){var n,r,s=this;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this._usersInFlight=this._usersPending,this._usersPending={},n={users:[]},e.prev=3,e.next=6,(0,a.resolve)(t.getPublicisedGroups((0,i.default)(this._usersInFlight)));case 6:n=e.sent,e.next=13;break;case 9:return e.prev=9,e.t0=e.catch(3),(0,i.default)(this._usersInFlight).forEach(function(t){s._usersInFlight[t]&&s._usersInFlight[t].reject(e.t0)}),e.abrupt("return");case 13:r=n.users,(0,i.default)(this._usersInFlight).forEach(function(e){s._usersInFlight[e]&&s._usersInFlight[e].resolve(r[e]||[])});case 15:case"end":return e.stop()}},e,this,[[3,9]])}));return function(t){return e.apply(this,arguments)}}()},{key:"getGroupProfileCached",value:function(){var e=(0,a.coroutine)(o.default.mark(function e(t,n){var r,i=this;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._groupProfiles[n]){e.next=2;break}return e.abrupt("return",this._groupProfiles[n]);case 2:if(!this._groupProfilesPromise[n]){e.next=12;break}return e.prev=3,e.next=6,(0,a.resolve)(this._groupProfilesPromise[n]);case 6:e.next=11;break;case 8:return e.prev=8,e.t0=e.catch(3),e.abrupt("return",null);case 11:return e.abrupt("return",this._groupProfiles[n]);case 12:return console.log("FlairStore: Request group profile of "+n),this._groupProfilesPromise[n]=t.getGroupProfile(n),r=void 0,e.prev=15,e.next=18,(0,a.resolve)(this._groupProfilesPromise[n]);case 18:r=e.sent,e.next=26;break;case 21:return e.prev=21,e.t1=e.catch(15),console.log("FlairStore: Failed to get group profile for "+n,e.t1),delete this._groupProfilesPromise[n],e.abrupt("return",null);case 26:return this._groupProfiles[n]={groupId:n,avatarUrl:r.avatar_url,name:r.name,shortDescription:r.short_description},delete this._groupProfilesPromise[n],console.log("FlairStore: Emit updateGroupProfile for "+n),this.emit("updateGroupProfile"),setTimeout(function(){i.refreshGroupProfile(t,n)},18e5),e.abrupt("return",this._groupProfiles[n]);case 32:case"end":return e.stop()}},e,this,[[3,8],[15,21]])}));return function(t,n){return e.apply(this,arguments)}}()},{key:"refreshGroupProfile",value:function(e,t){return delete this._groupProfiles[t],this.getGroupProfileCached(e,t)}}]),t}(p(n(62)).default);void 0===r.singletonFlairStore&&(r.singletonFlairStore=new h),t.default=r.singletonFlairStore,e.exports=t.default}).call(this,n(16))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(n(194));t.default=function(){var e=window.pageYOffset,t=window.pageXOffset,n=t+window.innerWidth,o=e+window.innerHeight;return(0,r.default)({top:e,left:t,right:n,bottom:o})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return"private-react-beautiful-dnd-key-do-not-use-"+e};t.storeKey=r("store"),t.droppableIdKey=r("droppable-id"),t.dimensionMarshalKey=r("dimension-marshal"),t.styleContextKey=r("style-context"),t.canLiftContextKey=r("can-lift")},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(19)),o=s(n(14));t.getDisplayAliasForRoom=function(e){return e.getCanonicalAlias()||e.getAliases()[0]},t.getOnlyOtherMember=l,t.isConfCallRoom=function(e,t,n){if(void 0!==u[e.roomId])return u[e.roomId];var r=function(e,t,n){if(!n)return!1;if("join"!=e.getMyMembership())return!1;var r=l(e,t);if(!r)return!1;if(n.isConferenceUser(r.userId))return!0;return!1}(e,t,n);return u[e.roomId]=r,r},t.looksLikeDirectMessageRoom=function(e,t){var n=e.getMyMembership(),r=e.getMember(t);if("join"==n||"ban"===n||r&&r.isKicked()){var i=(0,o.default)(e.tags),a=e.currentState.getJoinedMemberCount()+e.currentState.getInvitedMemberCount();if(2===a&&!i.length)return!0}return!1},t.guessAndSetDMRoom=function(e,t){var n=void 0;if(t){var o=function(e,t){var n=void 0,o=void 0,i=!0,a=!1,s=void 0;try{for(var l,u=(0,r.default)(e.getJoinedMembers());!(i=(l=u.next()).done);i=!0){var c=l.value;c.userId!=t&&((void 0===n||c.events.member&&c.events.member.getTs()-1&&m.splice(h,1)}}}catch(e){u=!0,c=e}finally{try{!l&&d.return&&d.return()}finally{if(u)throw c}}if(t){var _=s[t]||[];-1==_.indexOf(e)&&_.push(e),s[t]=_}return i.default.get().setAccountData("m.direct",s)}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t,n){var r=n(499),o=n(333);e.exports=Object.keys||function(e){return r(e,o)}},function(e,t,n){var r=n(111),o=Math.max,i=Math.min;e.exports=function(e,t){return(e=r(e))<0?o(e+t,0):i(e,t)}},function(e,t,n){var r=n(25),o=n(500),i=n(333),a=n(332)("IE_PROTO"),s=function(){},l=function(){var e,t=n(330)("iframe"),r=i.length;for(t.style.display="none",n(334).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("\n//\n// This waits to receive a message event sent using the window.postMessage API.\n// When it receives the event it evals a javascript function in data.code and\n// runs the function passing the event as an argument. This version adds\n// support for a query parameter controlling the origin from which messages\n// will be processed as an extra layer of security (note that the default URL\n// is still 'v1' since it is backwards compatible).\n//\n// In particular it means that the rendering function can be written as a\n// ordinary javascript function which then is turned into a string using\n// toString().\n//\nvar DEFAULT_CROSS_ORIGIN_RENDERER = \"https://usercontent.riot.im/v1.html\";\n\n/**\n * Render the attachment inside the iframe.\n * We can't use imported libraries here so this has to be vanilla JS.\n */\nfunction remoteRender(event) {\n var data = event.data;\n\n var img = document.createElement(\"img\");\n img.id = \"img\";\n img.src = data.imgSrc;\n\n var a = document.createElement(\"a\");\n a.id = \"a\";\n a.rel = data.rel;\n a.target = data.target;\n a.download = data.download;\n a.style = data.style;\n a.href = window.URL.createObjectURL(data.blob);\n a.appendChild(img);\n a.appendChild(document.createTextNode(data.textContent));\n\n var body = document.body;\n // Don't display scrollbars if the link takes more than one line\n // to display.\n body.style = \"margin: 0px; overflow: hidden\";\n body.appendChild(a);\n}\n\n/**\n * Update the tint inside the iframe.\n * We can't use imported libraries here so this has to be vanilla JS.\n */\nfunction remoteSetTint(event) {\n var data = event.data;\n\n var img = document.getElementById(\"img\");\n img.src = data.imgSrc;\n img.style = data.imgStyle;\n\n var a = document.getElementById(\"a\");\n a.style = data.style;\n}\n\n/**\n * Get the current CSS style for a DOMElement.\n * @param {HTMLElement} element The element to get the current style of.\n * @return {string} The CSS style encoded as a string.\n */\nfunction computedStyle(element) {\n if (!element) {\n return \"\";\n }\n var style = window.getComputedStyle(element, null);\n var cssText = style.cssText;\n if (cssText == \"\") {\n // Firefox doesn't implement \".cssText\" for computed styles.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=137687\n for (var i = 0; i < style.length; i++) {\n cssText += style[i] + \":\";\n cssText += style.getPropertyValue(style[i]) + \";\";\n }\n }\n return cssText;\n}\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MFileBody',\n\n getInitialState: function getInitialState() {\n return {\n decryptedBlob: this.props.decryptedBlob ? this.props.decryptedBlob : null\n };\n },\n\n contextTypes: {\n appConfig: _propTypes2.default.object\n },\n\n /**\n * Extracts a human readable label for the file attachment to use as\n * link text.\n *\n * @params {Object} content The \"content\" key of the matrix event.\n * @return {string} the human readable link text for the attachment.\n */\n presentableTextForFile: function presentableTextForFile(content) {\n var linkText = (0, _languageHandler._t)(\"Attachment\");\n if (content.body && content.body.length > 0) {\n // The content body should be the name of the file including a\n // file extension.\n linkText = content.body;\n }\n\n if (content.info && content.info.size) {\n // If we know the size of the file then add it as human readable\n // string to the end of the link text so that the user knows how\n // big a file they are downloading.\n // The content.info also contains a MIME-type but we don't display\n // it since it is \"ugly\", users generally aren't aware what it\n // means and the type of the attachment can usually be inferrered\n // from the file extension.\n linkText += ' (' + (0, _filesize2.default)(content.info.size) + ')';\n }\n return linkText;\n },\n\n _getContentUrl: function _getContentUrl() {\n var content = this.props.mxEvent.getContent();\n return _MatrixClientPeg2.default.get().mxcUrlToHttp(content.url);\n },\n\n componentDidMount: function componentDidMount() {\n // Add this to the list of mounted components to receive notifications\n // when the tint changes.\n this.id = nextMountId++;\n mounts[this.id] = this;\n this.tint();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // Remove this from the list of mounted components\n delete mounts[this.id];\n },\n\n tint: function tint() {\n // Update our tinted copy of \"img/download.svg\"\n if (this.refs.downloadImage) {\n this.refs.downloadImage.src = tintedDownloadImageURL;\n }\n if (this.refs.iframe) {\n // If the attachment is encrypted then the download image\n // will be inside the iframe so we wont be able to update\n // it directly.\n this.refs.iframe.contentWindow.postMessage({\n code: remoteSetTint.toString(),\n imgSrc: tintedDownloadImageURL,\n style: computedStyle(this.refs.dummyLink)\n }, \"*\");\n }\n },\n\n render: function render() {\n var _this = this;\n\n var content = this.props.mxEvent.getContent();\n var text = this.presentableTextForFile(content);\n var isEncrypted = content.file !== undefined;\n var fileName = content.body && content.body.length > 0 ? content.body : (0, _languageHandler._t)(\"Attachment\");\n var contentUrl = this._getContentUrl();\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n if (isEncrypted) {\n if (this.state.decryptedBlob === null) {\n // Need to decrypt the attachment\n // Wait for the user to click on the link before downloading\n // and decrypting the attachment.\n var decrypting = false;\n var decrypt = function decrypt() {\n if (decrypting) {\n return false;\n }\n decrypting = true;\n (0, _DecryptFile.decryptFile)(content.file).then(function (blob) {\n _this.setState({\n decryptedBlob: blob\n });\n }).catch(function (err) {\n console.warn(\"Unable to decrypt attachment: \", err);\n _Modal2.default.createTrackedDialog('Error decrypting attachment', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Error decrypting attachment\")\n });\n }).finally(function () {\n decrypting = false;\n return;\n });\n };\n\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MFileBody', ref: 'body' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MFileBody_download' },\n _react2.default.createElement(\n 'a',\n { href: 'javascript:void(0)', onClick: decrypt },\n (0, _languageHandler._t)(\"Decrypt %(text)s\", { text: text })\n )\n )\n );\n }\n\n // When the iframe loads we tell it to render a download link\n var onIframeLoad = function onIframeLoad(ev) {\n ev.target.contentWindow.postMessage({\n code: remoteRender.toString(),\n imgSrc: tintedDownloadImageURL,\n style: computedStyle(_this.refs.dummyLink),\n blob: _this.state.decryptedBlob,\n // Set a download attribute for encrypted files so that the file\n // will have the correct name when the user tries to download it.\n // We can't provide a Content-Disposition header like we would for HTTP.\n download: fileName,\n rel: \"noopener\",\n target: \"_blank\",\n textContent: (0, _languageHandler._t)(\"Download %(text)s\", { text: text })\n }, \"*\");\n };\n\n // If the attachment is encryped then put the link inside an iframe.\n var renderer_url = DEFAULT_CROSS_ORIGIN_RENDERER;\n if (this.context.appConfig && this.context.appConfig.cross_origin_renderer_url) {\n renderer_url = this.context.appConfig.cross_origin_renderer_url;\n }\n renderer_url += \"?origin=\" + encodeURIComponent(window.location.origin);\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MFileBody' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MFileBody_download' },\n _react2.default.createElement(\n 'div',\n { style: { display: \"none\" } },\n _react2.default.createElement('a', { ref: 'dummyLink' })\n ),\n _react2.default.createElement('iframe', { src: renderer_url, onLoad: onIframeLoad, ref: 'iframe' })\n )\n );\n } else if (contentUrl) {\n // If the attachment is not encrypted then we check whether we\n // are being displayed in the room timeline or in a list of\n // files in the right hand side of the screen.\n if (this.props.tileShape === \"file_grid\") {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MFileBody' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MFileBody_download' },\n _react2.default.createElement(\n 'a',\n { className: 'mx_MFileBody_downloadLink', href: contentUrl, download: fileName, target: '_blank' },\n fileName\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MImageBody_size' },\n content.info && content.info.size ? (0, _filesize2.default)(content.info.size) : \"\"\n )\n )\n );\n } else {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MFileBody' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MFileBody_download' },\n _react2.default.createElement(\n 'a',\n { href: contentUrl, download: fileName, target: '_blank', rel: 'noopener' },\n _react2.default.createElement('img', { src: tintedDownloadImageURL, width: '12', height: '14', ref: 'downloadImage' }),\n (0, _languageHandler._t)(\"Download %(text)s\", { text: text })\n )\n )\n );\n }\n } else {\n var extra = text ? ': ' + text : '';\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MFileBody' },\n (0, _languageHandler._t)(\"Invalid file%(extra)s\", { extra: extra })\n );\n }\n }\n});\n//# sourceMappingURL=MFileBody.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.decryptFile = decryptFile;\n\nvar _browserEncryptAttachment = require('browser-encrypt-attachment');\n\nvar _browserEncryptAttachment2 = _interopRequireDefault(_browserEncryptAttachment);\n\nrequire('isomorphic-fetch');\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// WARNING: We have to be very careful about what mime-types we allow into blobs,\n// as for performance reasons these are now rendered via URL.createObjectURL()\n// rather than by converting into data: URIs.\n//\n// This means that the content is rendered using the origin of the script which\n// called createObjectURL(), and so if the content contains any scripting then it\n// will pose a XSS vulnerability when the browser renders it. This is particularly\n// bad if the user right-clicks the URI and pastes it into a new window or tab,\n// as the blob will then execute with access to Riot's full JS environment(!)\n//\n// See https://github.com/matrix-org/matrix-react-sdk/pull/1820#issuecomment-385210647\n// for details.\n//\n// We mitigate this by only allowing mime-types into blobs which we know don't\n// contain any scripting, and instantiate all others as application/octet-stream\n// regardless of what mime-type the event claimed. Even if the payload itself\n// is some malicious HTML, the fact we instantiate it with a media mimetype or\n// application/octet-stream means the browser doesn't try to render it as such.\n//\n// One interesting edge case is image/svg+xml, which empirically *is* rendered\n// correctly if the blob is set to the src attribute of an img tag (for thumbnails)\n// *even if the mimetype is application/octet-stream*. However, empirically JS\n// in the SVG isn't executed in this scenario, so we seem to be okay.\n//\n// Tested on Chrome 65 and Firefox 60\n//\n// The list below is taken mainly from\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Supported_media_formats\n// N.B. Matrix doesn't currently specify which mimetypes are valid in given\n// events, so we pick the ones which HTML5 browsers should be able to display\n//\n// For the record, mime-types which must NEVER enter this list below include:\n// text/html, text/xhtml, image/svg, image/svg+xml, image/pdf, and similar.\n\n// Grab the client so that we can turn mxc:// URLs into https:// URLS.\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// Pull in the encryption lib so that we can decrypt attachments.\nvar ALLOWED_BLOB_MIMETYPES = {\n 'image/jpeg': true,\n 'image/gif': true,\n 'image/png': true,\n\n 'video/mp4': true,\n 'video/webm': true,\n 'video/ogg': true,\n\n 'audio/mp4': true,\n 'audio/webm': true,\n 'audio/aac': true,\n 'audio/mpeg': true,\n 'audio/ogg': true,\n 'audio/wave': true,\n 'audio/wav': true,\n 'audio/x-wav': true,\n 'audio/x-pn-wav': true,\n 'audio/flac': true,\n 'audio/x-flac': true\n\n /**\n * Decrypt a file attached to a matrix event.\n * @param file {Object} The json taken from the matrix event.\n * This passed to [link]{@link https://github.com/matrix-org/browser-encrypt-attachments}\n * as the encryption info object, so will also have the those keys in addition to\n * the keys below.\n * @param file.url {string} An mxc:// URL for the encrypted file.\n * @param file.mimetype {string} The MIME-type of the plaintext file.\n */\n};\n// Pull in a fetch polyfill so we can download encrypted attachments.\nfunction decryptFile(file) {\n var url = _MatrixClientPeg2.default.get().mxcUrlToHttp(file.url);\n // Download the encrypted file as an array buffer.\n return _bluebird2.default.resolve(fetch(url)).then(function (response) {\n return response.arrayBuffer();\n }).then(function (responseData) {\n // Decrypt the array buffer using the information taken from\n // the event content.\n return _browserEncryptAttachment2.default.decryptAttachment(responseData, file);\n }).then(function (dataArray) {\n // Turn the array into a Blob and give it the correct MIME-type.\n\n // IMPORTANT: we must not allow scriptable mime-types into Blobs otherwise\n // they introduce XSS attacks if the Blob URI is viewed directly in the\n // browser (e.g. by copying the URI into a new tab or window.)\n // See warning at top of file.\n var mimetype = file.mimetype ? file.mimetype.split(\";\")[0].trim() : '';\n if (!ALLOWED_BLOB_MIMETYPES[mimetype]) {\n mimetype = 'application/octet-stream';\n }\n\n var blob = new Blob([dataArray], { type: mimetype });\n return blob;\n });\n}\n//# sourceMappingURL=DecryptFile.js.map","module.exports = require('./lib/linkify-element').default;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","import { Block, Mark, Node, Value } from 'slate';\nimport { Set } from 'immutable';\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Deserialize a plain text `string` to a Slate value.\n *\n * @param {String} string\n * @param {Object} options\n * @property {Boolean} toJSON\n * @property {String|Object|Block} defaultBlock\n * @property {Array|Set} defaultMarks\n * @return {Value}\n */\n\nfunction deserialize(string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$defaultBlock = options.defaultBlock,\n defaultBlock = _options$defaultBlock === undefined ? 'line' : _options$defaultBlock,\n _options$defaultMarks = options.defaultMarks,\n defaultMarks = _options$defaultMarks === undefined ? [] : _options$defaultMarks,\n _options$delimiter = options.delimiter,\n delimiter = _options$delimiter === undefined ? '\\n' : _options$delimiter,\n _options$toJSON = options.toJSON,\n toJSON = _options$toJSON === undefined ? false : _options$toJSON;\n\n\n if (Set.isSet(defaultMarks)) {\n defaultMarks = defaultMarks.toArray();\n }\n\n defaultBlock = Node.createProperties(defaultBlock);\n defaultMarks = defaultMarks.map(Mark.createProperties);\n\n var json = {\n object: 'value',\n document: {\n object: 'document',\n data: {},\n nodes: string.split(delimiter).map(function (line) {\n return _extends({}, defaultBlock, {\n object: 'block',\n data: {},\n nodes: [{\n object: 'text',\n leaves: [{\n object: 'leaf',\n text: line,\n marks: defaultMarks\n }]\n }]\n });\n })\n }\n };\n\n var ret = toJSON ? json : Value.fromJSON(json);\n return ret;\n}\n\n/**\n * Serialize a Slate `value` to a plain text string.\n *\n * @param {Value} value\n * @return {String}\n */\n\nfunction serialize(value) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return serializeNode(value.document, options);\n}\n\n/**\n * Serialize a `node` to plain text.\n *\n * @param {Node} node\n * @return {String}\n */\n\nfunction serializeNode(node) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$delimiter2 = options.delimiter,\n delimiter = _options$delimiter2 === undefined ? '\\n' : _options$delimiter2;\n\n\n if (node.object == 'document' || node.object == 'block' && Block.isBlockList(node.nodes)) {\n return node.nodes.map(serializeNode).join(delimiter);\n } else {\n return node.text;\n }\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar index = {\n deserialize: deserialize,\n serialize: serialize\n};\n\nexport default index;\n//# sourceMappingURL=slate-plain-serializer.es.js.map\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n/**\n * Constants.\n */\n\nvar IS_MAC = typeof window != 'undefined' && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\n\nvar MODIFIERS = {\n alt: 'altKey',\n control: 'ctrlKey',\n meta: 'metaKey',\n shift: 'shiftKey'\n};\n\nvar ALIASES = {\n add: '+',\n break: 'pause',\n cmd: 'meta',\n command: 'meta',\n ctl: 'control',\n ctrl: 'control',\n del: 'delete',\n down: 'arrowdown',\n esc: 'escape',\n ins: 'insert',\n left: 'arrowleft',\n mod: IS_MAC ? 'meta' : 'control',\n opt: 'alt',\n option: 'alt',\n return: 'enter',\n right: 'arrowright',\n space: ' ',\n spacebar: ' ',\n up: 'arrowup',\n win: 'meta',\n windows: 'meta'\n};\n\nvar CODES = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n control: 17,\n alt: 18,\n pause: 19,\n capslock: 20,\n escape: 27,\n ' ': 32,\n pageup: 33,\n pagedown: 34,\n end: 35,\n home: 36,\n arrowleft: 37,\n arrowup: 38,\n arrowright: 39,\n arrowdown: 40,\n insert: 45,\n delete: 46,\n meta: 91,\n numlock: 144,\n scrolllock: 145,\n ';': 186,\n '=': 187,\n ',': 188,\n '-': 189,\n '.': 190,\n '/': 191,\n '`': 192,\n '[': 219,\n '\\\\': 220,\n ']': 221,\n '\\'': 222\n};\n\nfor (var f = 1; f < 20; f++) {\n CODES['f' + f] = 111 + f;\n}\n\n/**\n * Is hotkey?\n */\n\nfunction isHotkey(hotkey, options, event) {\n if (options && !('byKey' in options)) {\n event = options;\n options = null;\n }\n\n if (!Array.isArray(hotkey)) {\n hotkey = [hotkey];\n }\n\n var array = hotkey.map(function (string) {\n return parseHotkey(string, options);\n });\n var check = function check(e) {\n return array.some(function (object) {\n return compareHotkey(object, e);\n });\n };\n var ret = event == null ? check : check(event);\n return ret;\n}\n\nfunction isCodeHotkey(hotkey, event) {\n return isHotkey(hotkey, event);\n}\n\nfunction isKeyHotkey(hotkey, event) {\n return isHotkey(hotkey, { byKey: true }, event);\n}\n\n/**\n * Parse.\n */\n\nfunction parseHotkey(hotkey, options) {\n var byKey = options && options.byKey;\n var ret = {};\n\n // Special case to handle the `+` key since we use it as a separator.\n hotkey = hotkey.replace('++', '+add');\n var values = hotkey.split('+');\n var length = values.length;\n\n // Ensure that all the modifiers are set to false unless the hotkey has them.\n\n for (var k in MODIFIERS) {\n ret[MODIFIERS[k]] = false;\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var value = _step.value;\n\n var optional = value.endsWith('?');\n\n if (optional) {\n value = value.slice(0, -1);\n }\n\n var name = toKeyName(value);\n var modifier = MODIFIERS[name];\n\n if (length === 1 || !modifier) {\n if (byKey) {\n ret.key = name;\n } else {\n ret.which = toKeyCode(value);\n }\n }\n\n if (modifier) {\n ret[modifier] = optional ? null : true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return ret;\n}\n\n/**\n * Compare.\n */\n\nfunction compareHotkey(object, event) {\n for (var key in object) {\n var expected = object[key];\n var actual = void 0;\n\n if (expected == null) {\n continue;\n }\n\n if (key === 'key') {\n actual = event.key.toLowerCase();\n } else if (key === 'which') {\n actual = expected === 91 && event.which === 93 ? 91 : event.which;\n } else {\n actual = event[key];\n }\n\n if (actual == null && expected === false) {\n continue;\n }\n\n if (actual !== expected) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Utils.\n */\n\nfunction toKeyCode(name) {\n name = toKeyName(name);\n var code = CODES[name] || name.toUpperCase().charCodeAt(0);\n return code;\n}\n\nfunction toKeyName(name) {\n name = name.toLowerCase();\n name = ALIASES[name] || name;\n return name;\n}\n\n/**\n * Export.\n */\n\nexports.default = isHotkey;\nexports.isHotkey = isHotkey;\nexports.isCodeHotkey = isCodeHotkey;\nexports.isKeyHotkey = isKeyHotkey;\nexports.parseHotkey = parseHotkey;\nexports.compareHotkey = compareHotkey;\nexports.toKeyCode = toKeyCode;\nexports.toKeyName = toKeyName;","var toString = Object.prototype.toString\r\n\r\nmodule.exports = function(val){\r\n switch (toString.call(val)) {\r\n case '[object Function]': return 'function'\r\n case '[object Date]': return 'date'\r\n case '[object RegExp]': return 'regexp'\r\n case '[object Arguments]': return 'arguments'\r\n case '[object Array]': return 'array'\r\n case '[object String]': return 'string'\r\n }\r\n\r\n if (typeof val == 'object' && val && typeof val.length == 'number') {\r\n try {\r\n if (typeof val.callee == 'function') return 'arguments';\r\n } catch (ex) {\r\n if (ex instanceof TypeError) {\r\n return 'arguments';\r\n }\r\n }\r\n }\r\n\r\n if (val === null) return 'null'\r\n if (val === undefined) return 'undefined'\r\n if (val && val.nodeType === 1) return 'element'\r\n if (val === Object(val)) return 'object'\r\n\r\n return typeof val\r\n}\r\n","\"use strict\";\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// This module contains all the code needed to log the console, persist it to\n// disk and submit bug reports. Rationale is as follows:\n// - Monkey-patching the console is preferable to having a log library because\n// we can catch logs by other libraries more easily, without having to all\n// depend on the same log framework / pass the logger around.\n// - We use IndexedDB to persists logs because it has generous disk space\n// limits compared to local storage. IndexedDB does not work in incognito\n// mode, in which case this module will not be able to write logs to disk.\n// However, the logs will still be stored in-memory, so can still be\n// submitted in a bug report should the user wish to: we can also store more\n// logs in-memory than in local storage, which does work in incognito mode.\n// We also need to handle the case where there are 2+ tabs. Each JS runtime\n// generates a random string which serves as the \"ID\" for that tab/session.\n// These IDs are stored along with the log lines.\n// - Bug reports are sent as a POST over HTTPS: it purposefully does not use\n// Matrix as bug reports may be made when Matrix is not responsive (which may\n// be the cause of the bug). We send the most recent N MB of UTF-8 log data,\n// starting with the most recent, which we know because the \"ID\"s are\n// actually timestamps. We then purge the remaining logs. We also do this\n// purge on startup to prevent logs from accumulating.\n\n// the frequency with which we flush to indexeddb\nvar FLUSH_RATE_MS = 30 * 1000;\n\n// the length of log data we keep in indexeddb (and include in the reports)\n/*\nCopyright 2017 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MAX_LOG_SIZE = 1024 * 1024 * 1; // 1 MB\n\n// A class which monkey-patches the global console and stores log lines.\n\nvar ConsoleLogger = function () {\n function ConsoleLogger() {\n (0, _classCallCheck3.default)(this, ConsoleLogger);\n\n this.logs = \"\";\n }\n\n (0, _createClass3.default)(ConsoleLogger, [{\n key: \"monkeyPatch\",\n value: function monkeyPatch(consoleObj) {\n var _this = this;\n\n // Monkey-patch console logging\n var consoleFunctionsToLevels = {\n log: \"I\",\n info: \"I\",\n warn: \"W\",\n error: \"E\"\n };\n (0, _keys2.default)(consoleFunctionsToLevels).forEach(function (fnName) {\n var level = consoleFunctionsToLevels[fnName];\n var originalFn = consoleObj[fnName].bind(consoleObj);\n consoleObj[fnName] = function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this.log.apply(_this, [level].concat(args));\n originalFn.apply(undefined, args);\n };\n });\n }\n }, {\n key: \"log\",\n value: function log(level) {\n // We don't know what locale the user may be running so use ISO strings\n var ts = new Date().toISOString();\n // Some browsers support string formatting which we're not doing here\n // so the lines are a little more ugly but easy to implement / quick to\n // run.\n // Example line:\n // 2017-01-18T11:23:53.214Z W Failed to set badge count\n\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var line = ts + \" \" + level + \" \" + args.join(' ') + \"\\n\";\n // Using + really is the quickest way in JS\n // http://jsperf.com/concat-vs-plus-vs-join\n this.logs += line;\n }\n\n /**\n * Retrieve log lines to flush to disk.\n * @param {boolean} keepLogs True to not delete logs after flushing.\n * @return {string} \\n delimited log lines to flush.\n */\n\n }, {\n key: \"flush\",\n value: function flush(keepLogs) {\n // The ConsoleLogger doesn't care how these end up on disk, it just\n // flushes them to the caller.\n if (keepLogs) {\n return this.logs;\n }\n var logsToFlush = this.logs;\n this.logs = \"\";\n return logsToFlush;\n }\n }]);\n return ConsoleLogger;\n}();\n\n// A class which stores log lines in an IndexedDB instance.\n\n\nvar IndexedDBLogStore = function () {\n function IndexedDBLogStore(indexedDB, logger) {\n (0, _classCallCheck3.default)(this, IndexedDBLogStore);\n\n this.indexedDB = indexedDB;\n this.logger = logger;\n this.id = \"instance-\" + Math.random() + Date.now();\n this.index = 0;\n this.db = null;\n this.flushPromise = null;\n // set if flush() is called whilst one is ongoing\n this.flushAgainPromise = null;\n }\n\n /**\n * @return {Promise} Resolves when the store is ready.\n */\n\n\n (0, _createClass3.default)(IndexedDBLogStore, [{\n key: \"connect\",\n value: function connect() {\n var _this2 = this;\n\n var req = this.indexedDB.open(\"logs\");\n return new _bluebird2.default(function (resolve, reject) {\n req.onsuccess = function (event) {\n _this2.db = event.target.result;\n // Periodically flush logs to local storage / indexeddb\n setInterval(_this2.flush.bind(_this2), FLUSH_RATE_MS);\n resolve();\n };\n\n req.onerror = function (event) {\n var err = \"Failed to open log database: \" + event.target.error.name;\n console.error(err);\n reject(new Error(err));\n };\n\n // First time: Setup the object store\n req.onupgradeneeded = function (event) {\n var db = event.target.result;\n var logObjStore = db.createObjectStore(\"logs\", {\n keyPath: [\"id\", \"index\"]\n });\n // Keys in the database look like: [ \"instance-148938490\", 0 ]\n // Later on we need to query everything based on an instance id.\n // In order to do this, we need to set up indexes \"id\".\n logObjStore.createIndex(\"id\", \"id\", { unique: false });\n\n logObjStore.add(_this2._generateLogEntry(new Date() + \" ::: Log database was created.\"));\n\n var lastModifiedStore = db.createObjectStore(\"logslastmod\", {\n keyPath: \"id\"\n });\n lastModifiedStore.add(_this2._generateLastModifiedTime());\n };\n });\n }\n\n /**\n * Flush logs to disk.\n *\n * There are guards to protect against race conditions in order to ensure\n * that all previous flushes have completed before the most recent flush.\n * Consider without guards:\n * - A calls flush() periodically.\n * - B calls flush() and wants to send logs immediately afterwards.\n * - If B doesn't wait for A's flush to complete, B will be missing the\n * contents of A's flush.\n * To protect against this, we set 'flushPromise' when a flush is ongoing.\n * Subsequent calls to flush() during this period will chain another flush,\n * then keep returning that same chained flush.\n *\n * This guarantees that we will always eventually do a flush when flush() is\n * called.\n *\n * @return {Promise} Resolved when the logs have been flushed.\n */\n\n }, {\n key: \"flush\",\n value: function flush() {\n var _this3 = this;\n\n // check if a flush() operation is ongoing\n if (this.flushPromise && this.flushPromise.isPending()) {\n if (this.flushAgainPromise && this.flushAgainPromise.isPending()) {\n // this is the 3rd+ time we've called flush() : return the same\n // promise.\n return this.flushAgainPromise;\n }\n // queue up a flush to occur immediately after the pending one\n // completes.\n this.flushAgainPromise = this.flushPromise.then(function () {\n return _this3.flush();\n });\n return this.flushAgainPromise;\n }\n // there is no flush promise or there was but it has finished, so do\n // a brand new one, destroying the chain which may have been built up.\n this.flushPromise = new _bluebird2.default(function (resolve, reject) {\n if (!_this3.db) {\n // not connected yet or user rejected access for us to r/w to\n // the db.\n reject(new Error(\"No connected database\"));\n return;\n }\n var lines = _this3.logger.flush();\n if (lines.length === 0) {\n resolve();\n return;\n }\n var txn = _this3.db.transaction([\"logs\", \"logslastmod\"], \"readwrite\");\n var objStore = txn.objectStore(\"logs\");\n txn.oncomplete = function (event) {\n resolve();\n };\n txn.onerror = function (event) {\n console.error(\"Failed to flush logs : \", event);\n reject(new Error(\"Failed to write logs: \" + event.target.errorCode));\n };\n objStore.add(_this3._generateLogEntry(lines));\n var lastModStore = txn.objectStore(\"logslastmod\");\n lastModStore.put(_this3._generateLastModifiedTime());\n });\n return this.flushPromise;\n }\n\n /**\n * Consume the most recent logs and return them. Older logs which are not\n * returned are deleted at the same time, so this can be called at startup\n * to do house-keeping to keep the logs from growing too large.\n *\n * @return {Promise} Resolves to an array of objects. The array is\n * sorted in time (oldest first) based on when the log file was created (the\n * log ID). The objects have said log ID in an \"id\" field and \"lines\" which\n * is a big string with all the new-line delimited logs.\n */\n\n }, {\n key: \"consume\",\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var db, fetchLogs, fetchLogIds, deleteLogs, allLogIds, removeLogIds, logs, size, i, lines;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n deleteLogs = function deleteLogs(id) {\n return new _bluebird2.default(function (resolve, reject) {\n var txn = db.transaction([\"logs\", \"logslastmod\"], \"readwrite\");\n var o = txn.objectStore(\"logs\");\n // only load the key path, not the data which may be huge\n var query = o.index(\"id\").openKeyCursor(IDBKeyRange.only(id));\n query.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n return;\n }\n o.delete(cursor.primaryKey);\n cursor.continue();\n };\n txn.oncomplete = function () {\n resolve();\n };\n txn.onerror = function (event) {\n reject(new Error(\"Failed to delete logs for \" + (\"'\" + id + \"' : \" + event.target.errorCode)));\n };\n // delete last modified entries\n var lastModStore = txn.objectStore(\"logslastmod\");\n lastModStore.delete(id);\n });\n };\n\n fetchLogIds = function fetchLogIds() {\n // To gather all the log IDs, query for all records in logslastmod.\n var o = db.transaction(\"logslastmod\", \"readonly\").objectStore(\"logslastmod\");\n return selectQuery(o, undefined, function (cursor) {\n return {\n id: cursor.value.id,\n ts: cursor.value.ts\n };\n }).then(function (res) {\n // Sort IDs by timestamp (newest first)\n return res.sort(function (a, b) {\n return b.ts - a.ts;\n }).map(function (a) {\n return a.id;\n });\n });\n };\n\n fetchLogs = function fetchLogs(id) {\n var objectStore = db.transaction(\"logs\", \"readonly\").objectStore(\"logs\");\n\n return new _bluebird2.default(function (resolve, reject) {\n var query = objectStore.index(\"id\").openCursor(IDBKeyRange.only(id), 'next');\n var lines = '';\n query.onerror = function (event) {\n reject(new Error(\"Query failed: \" + event.target.errorCode));\n };\n query.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n resolve(lines);\n return; // end of results\n }\n lines += cursor.value.lines;\n if (lines.length >= MAX_LOG_SIZE) {\n resolve(lines);\n } else {\n cursor.continue();\n }\n };\n });\n };\n\n db = this.db;\n\n // Returns: a string representing the concatenated logs for this ID.\n\n\n // Returns: A sorted array of log IDs. (newest first)\n\n _context.next = 6;\n return (0, _bluebird.resolve)(fetchLogIds());\n\n case 6:\n allLogIds = _context.sent;\n removeLogIds = [];\n logs = [];\n size = 0;\n i = 0;\n\n case 11:\n if (!(i < allLogIds.length)) {\n _context.next = 23;\n break;\n }\n\n _context.next = 14;\n return (0, _bluebird.resolve)(fetchLogs(allLogIds[i]));\n\n case 14:\n lines = _context.sent;\n\n if (!(i > 0 && size + lines.length > MAX_LOG_SIZE)) {\n _context.next = 18;\n break;\n }\n\n // the remaining log IDs should be removed. If we go out of\n // bounds this is just []\n removeLogIds = allLogIds.slice(i + 1);\n return _context.abrupt(\"break\", 23);\n\n case 18:\n\n logs.push({\n lines: lines,\n id: allLogIds[i]\n });\n size += lines.length;\n\n case 20:\n i++;\n _context.next = 11;\n break;\n\n case 23:\n if (removeLogIds.length > 0) {\n console.log(\"Removing logs: \", removeLogIds);\n // Don't await this because it's non-fatal if we can't clean up\n // logs.\n _bluebird2.default.all(removeLogIds.map(function (id) {\n return deleteLogs(id);\n })).then(function () {\n console.log(\"Removed \" + removeLogIds.length + \" old logs.\");\n }, function (err) {\n console.error(err);\n });\n }\n return _context.abrupt(\"return\", logs);\n\n case 25:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function consume() {\n return _ref.apply(this, arguments);\n }\n\n return consume;\n }()\n }, {\n key: \"_generateLogEntry\",\n value: function _generateLogEntry(lines) {\n return {\n id: this.id,\n lines: lines,\n index: this.index++\n };\n }\n }, {\n key: \"_generateLastModifiedTime\",\n value: function _generateLastModifiedTime() {\n return {\n id: this.id,\n ts: Date.now()\n };\n }\n }]);\n return IndexedDBLogStore;\n}();\n\n/**\n * Helper method to collect results from a Cursor and promiseify it.\n * @param {ObjectStore|Index} store The store to perform openCursor on.\n * @param {IDBKeyRange=} keyRange Optional key range to apply on the cursor.\n * @param {Function} resultMapper A function which is repeatedly called with a\n * Cursor.\n * Return the data you want to keep.\n * @return {Promise} Resolves to an array of whatever you returned from\n * resultMapper.\n */\n\n\nfunction selectQuery(store, keyRange, resultMapper) {\n var query = store.openCursor(keyRange);\n return new _bluebird2.default(function (resolve, reject) {\n var results = [];\n query.onerror = function (event) {\n reject(new Error(\"Query failed: \" + event.target.errorCode));\n };\n // collect results\n query.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n resolve(results);\n return; // end of results\n }\n results.push(resultMapper(cursor));\n cursor.continue();\n };\n });\n}\n\nmodule.exports = {\n\n /**\n * Configure rage shaking support for sending bug reports.\n * Modifies globals.\n * @return {Promise} Resolves when set up.\n */\n init: function init() {\n if (global.mx_rage_initPromise) {\n return global.mx_rage_initPromise;\n }\n global.mx_rage_logger = new ConsoleLogger();\n global.mx_rage_logger.monkeyPatch(window.console);\n\n // just *accessing* indexedDB throws an exception in firefox with\n // indexeddb disabled.\n var indexedDB = void 0;\n try {\n indexedDB = window.indexedDB;\n } catch (e) {}\n\n if (indexedDB) {\n global.mx_rage_store = new IndexedDBLogStore(indexedDB, global.mx_rage_logger);\n global.mx_rage_initPromise = global.mx_rage_store.connect();\n return global.mx_rage_initPromise;\n }\n global.mx_rage_initPromise = _bluebird2.default.resolve();\n return global.mx_rage_initPromise;\n },\n\n flush: function flush() {\n if (!global.mx_rage_store) {\n return;\n }\n global.mx_rage_store.flush();\n },\n\n /**\n * Clean up old logs.\n * @return Promise Resolves if cleaned logs.\n */\n cleanup: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (global.mx_rage_store) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 2:\n _context2.next = 4;\n return (0, _bluebird.resolve)(global.mx_rage_store.consume());\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function cleanup() {\n return _ref2.apply(this, arguments);\n }\n\n return cleanup;\n }(),\n\n /**\n * Get a recent snapshot of the logs, ready for attaching to a bug report\n *\n * @return {Array<{lines: string, id, string}>} list of log data\n */\n getLogsForReport: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (global.mx_rage_logger) {\n _context3.next = 2;\n break;\n }\n\n throw new Error(\"No console logger, did you forget to call init()?\");\n\n case 2:\n if (!global.mx_rage_store) {\n _context3.next = 10;\n break;\n }\n\n _context3.next = 5;\n return (0, _bluebird.resolve)(global.mx_rage_store.flush());\n\n case 5:\n _context3.next = 7;\n return (0, _bluebird.resolve)(global.mx_rage_store.consume());\n\n case 7:\n return _context3.abrupt(\"return\", _context3.sent);\n\n case 10:\n return _context3.abrupt(\"return\", [{\n lines: global.mx_rage_logger.flush(true),\n id: \"-\"\n }]);\n\n case 11:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getLogsForReport() {\n return _ref3.apply(this, arguments);\n }\n\n return getLogsForReport;\n }()\n};\n//# sourceMappingURL=rageshake.js.map","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver\n } else if (Observer) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n var promise = Promise.resolve();\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = function () { /* empty */ };\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n if (it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n replacer = args[1];\n if (typeof replacer == 'function') $replacer = replacer;\n if ($replacer || !isArray(replacer)) replacer = function (key, value) {\n if ($replacer) value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Injectable ordering of event plugins.\n */\nvar eventPluginOrder = null;\n\n/**\n * Injectable mapping from names to event plugin modules.\n */\nvar namesToPlugins = {};\n\n/**\n * Recomputes the plugin list using the injected plugins and plugin ordering.\n *\n * @private\n */\nfunction recomputePluginOrdering() {\n if (!eventPluginOrder) {\n // Wait until an `eventPluginOrder` is injected.\n return;\n }\n for (var pluginName in namesToPlugins) {\n var pluginModule = namesToPlugins[pluginName];\n var pluginIndex = eventPluginOrder.indexOf(pluginName);\n !(pluginIndex > -1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0;\n if (EventPluginRegistry.plugins[pluginIndex]) {\n continue;\n }\n !pluginModule.extractEvents ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0;\n EventPluginRegistry.plugins[pluginIndex] = pluginModule;\n var publishedEvents = pluginModule.eventTypes;\n for (var eventName in publishedEvents) {\n !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0;\n }\n }\n}\n\n/**\n * Publishes an event so that it can be dispatched by the supplied plugin.\n *\n * @param {object} dispatchConfig Dispatch configuration for the event.\n * @param {object} PluginModule Plugin publishing the event.\n * @return {boolean} True if the event was successfully published.\n * @private\n */\nfunction publishEventForPlugin(dispatchConfig, pluginModule, eventName) {\n !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0;\n EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n if (phasedRegistrationNames) {\n for (var phaseName in phasedRegistrationNames) {\n if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n var phasedRegistrationName = phasedRegistrationNames[phaseName];\n publishRegistrationName(phasedRegistrationName, pluginModule, eventName);\n }\n }\n return true;\n } else if (dispatchConfig.registrationName) {\n publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);\n return true;\n }\n return false;\n}\n\n/**\n * Publishes a registration name that is used to identify dispatched events and\n * can be used with `EventPluginHub.putListener` to register listeners.\n *\n * @param {string} registrationName Registration name to add.\n * @param {object} PluginModule Plugin publishing the event.\n * @private\n */\nfunction publishRegistrationName(registrationName, pluginModule, eventName) {\n !!EventPluginRegistry.registrationNameModules[registrationName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0;\n EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;\n EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;\n\n if (process.env.NODE_ENV !== 'production') {\n var lowerCasedName = registrationName.toLowerCase();\n EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;\n\n if (registrationName === 'onDoubleClick') {\n EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;\n }\n }\n}\n\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\nvar EventPluginRegistry = {\n /**\n * Ordered list of injected plugins.\n */\n plugins: [],\n\n /**\n * Mapping from event name to dispatch config\n */\n eventNameDispatchConfigs: {},\n\n /**\n * Mapping from registration name to plugin module\n */\n registrationNameModules: {},\n\n /**\n * Mapping from registration name to event name\n */\n registrationNameDependencies: {},\n\n /**\n * Mapping from lowercase registration names to the properly cased version,\n * used to warn in the case of missing event handlers. Available\n * only in __DEV__.\n * @type {Object}\n */\n possibleRegistrationNames: process.env.NODE_ENV !== 'production' ? {} : null,\n // Trust the developer to only use possibleRegistrationNames in __DEV__\n\n /**\n * Injects an ordering of plugins (by plugin name). This allows the ordering\n * to be decoupled from injection of the actual plugins so that ordering is\n * always deterministic regardless of packaging, on-the-fly injection, etc.\n *\n * @param {array} InjectedEventPluginOrder\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginOrder}\n */\n injectEventPluginOrder: function (injectedEventPluginOrder) {\n !!eventPluginOrder ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0;\n // Clone the ordering so it cannot be dynamically mutated.\n eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);\n recomputePluginOrdering();\n },\n\n /**\n * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n * in the ordering injected by `injectEventPluginOrder`.\n *\n * Plugins can be injected as part of page initialization or on-the-fly.\n *\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginsByName}\n */\n injectEventPluginsByName: function (injectedNamesToPlugins) {\n var isOrderingDirty = false;\n for (var pluginName in injectedNamesToPlugins) {\n if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n continue;\n }\n var pluginModule = injectedNamesToPlugins[pluginName];\n if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {\n !!namesToPlugins[pluginName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0;\n namesToPlugins[pluginName] = pluginModule;\n isOrderingDirty = true;\n }\n }\n if (isOrderingDirty) {\n recomputePluginOrdering();\n }\n },\n\n /**\n * Looks up the plugin for the supplied event.\n *\n * @param {object} event A synthetic event.\n * @return {?object} The plugin that created the supplied event.\n * @internal\n */\n getPluginModuleForEvent: function (event) {\n var dispatchConfig = event.dispatchConfig;\n if (dispatchConfig.registrationName) {\n return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;\n }\n if (dispatchConfig.phasedRegistrationNames !== undefined) {\n // pulling phasedRegistrationNames out of dispatchConfig helps Flow see\n // that it is not undefined.\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n\n for (var phase in phasedRegistrationNames) {\n if (!phasedRegistrationNames.hasOwnProperty(phase)) {\n continue;\n }\n var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]];\n if (pluginModule) {\n return pluginModule;\n }\n }\n }\n return null;\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _resetEventPlugins: function () {\n eventPluginOrder = null;\n for (var pluginName in namesToPlugins) {\n if (namesToPlugins.hasOwnProperty(pluginName)) {\n delete namesToPlugins[pluginName];\n }\n }\n EventPluginRegistry.plugins.length = 0;\n\n var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;\n for (var eventName in eventNameDispatchConfigs) {\n if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {\n delete eventNameDispatchConfigs[eventName];\n }\n }\n\n var registrationNameModules = EventPluginRegistry.registrationNameModules;\n for (var registrationName in registrationNameModules) {\n if (registrationNameModules.hasOwnProperty(registrationName)) {\n delete registrationNameModules[registrationName];\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;\n for (var lowerCasedName in possibleRegistrationNames) {\n if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {\n delete possibleRegistrationNames[lowerCasedName];\n }\n }\n }\n }\n};\n\nmodule.exports = EventPluginRegistry;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactErrorUtils = require('./ReactErrorUtils');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Injected dependencies:\n */\n\n/**\n * - `ComponentTree`: [required] Module that can convert between React instances\n * and actual node references.\n */\nvar ComponentTree;\nvar TreeTraversal;\nvar injection = {\n injectComponentTree: function (Injected) {\n ComponentTree = Injected;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;\n }\n },\n injectTreeTraversal: function (Injected) {\n TreeTraversal = Injected;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0;\n }\n }\n};\n\nfunction isEndish(topLevelType) {\n return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel';\n}\n\nfunction isMoveish(topLevelType) {\n return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove';\n}\nfunction isStartish(topLevelType) {\n return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart';\n}\n\nvar validateEventDispatches;\nif (process.env.NODE_ENV !== 'production') {\n validateEventDispatches = function (event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n\n var listenersIsArr = Array.isArray(dispatchListeners);\n var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;\n\n var instancesIsArr = Array.isArray(dispatchInstances);\n var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;\n\n process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0;\n };\n}\n\n/**\n * Dispatch the event to the listener.\n * @param {SyntheticEvent} event SyntheticEvent to handle\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @param {function} listener Application-level callback\n * @param {*} inst Internal component instance\n */\nfunction executeDispatch(event, simulated, listener, inst) {\n var type = event.type || 'unknown-event';\n event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);\n if (simulated) {\n ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);\n } else {\n ReactErrorUtils.invokeGuardedCallback(type, listener, event);\n }\n event.currentTarget = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches.\n */\nfunction executeDispatchesInOrder(event, simulated) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);\n }\n } else if (dispatchListeners) {\n executeDispatch(event, simulated, dispatchListeners, dispatchInstances);\n }\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches, but stops\n * at the first dispatch execution returning true, and returns that id.\n *\n * @return {?string} id of the first dispatch execution who's listener returns\n * true, or null if no listener returned true.\n */\nfunction executeDispatchesInOrderStopAtTrueImpl(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n if (dispatchListeners[i](event, dispatchInstances[i])) {\n return dispatchInstances[i];\n }\n }\n } else if (dispatchListeners) {\n if (dispatchListeners(event, dispatchInstances)) {\n return dispatchInstances;\n }\n }\n return null;\n}\n\n/**\n * @see executeDispatchesInOrderStopAtTrueImpl\n */\nfunction executeDispatchesInOrderStopAtTrue(event) {\n var ret = executeDispatchesInOrderStopAtTrueImpl(event);\n event._dispatchInstances = null;\n event._dispatchListeners = null;\n return ret;\n}\n\n/**\n * Execution of a \"direct\" dispatch - there must be at most one dispatch\n * accumulated on the event or it is considered an error. It doesn't really make\n * sense for an event with multiple dispatches (bubbled) to keep track of the\n * return values at each dispatch execution, but it does tend to make sense when\n * dealing with \"direct\" dispatches.\n *\n * @return {*} The return value of executing the single dispatch.\n */\nfunction executeDirectDispatch(event) {\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n var dispatchListener = event._dispatchListeners;\n var dispatchInstance = event._dispatchInstances;\n !!Array.isArray(dispatchListener) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0;\n event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;\n var res = dispatchListener ? dispatchListener(event) : null;\n event.currentTarget = null;\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n return res;\n}\n\n/**\n * @param {SyntheticEvent} event\n * @return {boolean} True iff number of dispatches accumulated is greater than 0.\n */\nfunction hasDispatches(event) {\n return !!event._dispatchListeners;\n}\n\n/**\n * General utilities that are useful in creating custom Event Plugins.\n */\nvar EventPluginUtils = {\n isEndish: isEndish,\n isMoveish: isMoveish,\n isStartish: isStartish,\n\n executeDirectDispatch: executeDirectDispatch,\n executeDispatchesInOrder: executeDispatchesInOrder,\n executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,\n hasDispatches: hasDispatches,\n\n getInstanceFromNode: function (node) {\n return ComponentTree.getInstanceFromNode(node);\n },\n getNodeFromInstance: function (node) {\n return ComponentTree.getNodeFromInstance(node);\n },\n isAncestor: function (a, b) {\n return TreeTraversal.isAncestor(a, b);\n },\n getLowestCommonAncestor: function (a, b) {\n return TreeTraversal.getLowestCommonAncestor(a, b);\n },\n getParentInstance: function (inst) {\n return TreeTraversal.getParentInstance(inst);\n },\n traverseTwoPhase: function (target, fn, arg) {\n return TreeTraversal.traverseTwoPhase(target, fn, arg);\n },\n traverseEnterLeave: function (from, to, fn, argFrom, argTo) {\n return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);\n },\n\n injection: injection\n};\n\nmodule.exports = EventPluginUtils;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar caughtError = null;\n\n/**\n * Call a function while guarding against errors that happens within it.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} a First argument\n * @param {*} b Second argument\n */\nfunction invokeGuardedCallback(name, func, a) {\n try {\n func(a);\n } catch (x) {\n if (caughtError === null) {\n caughtError = x;\n }\n }\n}\n\nvar ReactErrorUtils = {\n invokeGuardedCallback: invokeGuardedCallback,\n\n /**\n * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event\n * handler are sure to be rethrown by rethrowCaughtError.\n */\n invokeGuardedCallbackWithCatch: invokeGuardedCallback,\n\n /**\n * During execution of guarded functions we will capture the first error which\n * we will rethrow to be handled by the top level error handler.\n */\n rethrowCaughtError: function () {\n if (caughtError) {\n var error = caughtError;\n caughtError = null;\n throw error;\n }\n }\n};\n\nif (process.env.NODE_ENV !== 'production') {\n /**\n * To help development we can get better devtools integration by simulating a\n * real browser event.\n */\n if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n var fakeNode = document.createElement('react');\n ReactErrorUtils.invokeGuardedCallback = function (name, func, a) {\n var boundFunc = function () {\n func(a);\n };\n var evtType = 'react-' + name;\n fakeNode.addEventListener(evtType, boundFunc, false);\n var evt = document.createEvent('Event');\n evt.initEvent(evtType, false, false);\n fakeNode.dispatchEvent(evt);\n fakeNode.removeEventListener(evtType, boundFunc, false);\n };\n }\n}\n\nmodule.exports = ReactErrorUtils;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\nfunction getEventTarget(nativeEvent) {\n var target = nativeEvent.target || nativeEvent.srcElement || window;\n\n // Normalize SVG element events #4963\n if (target.correspondingUseElement) {\n target = target.correspondingUseElement;\n }\n\n // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n // @see http://www.quirksmode.org/js/events_properties.html\n return target.nodeType === 3 ? target.parentNode : target;\n}\n\nmodule.exports = getEventTarget;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature = document.implementation && document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\nvar modifierKeyToProp = {\n Alt: 'altKey',\n Control: 'ctrlKey',\n Meta: 'metaKey',\n Shift: 'shiftKey'\n};\n\n// IE8 does not implement getModifierState so we simply map it to the only\n// modifier keys exposed by the event itself, does not support Lock-keys.\n// Currently, all major browsers except Chrome seems to support Lock-keys.\nfunction modifierStateGetter(keyArg) {\n var syntheticEvent = this;\n var nativeEvent = syntheticEvent.nativeEvent;\n if (nativeEvent.getModifierState) {\n return nativeEvent.getModifierState(keyArg);\n }\n var keyProp = modifierKeyToProp[keyArg];\n return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n return modifierStateGetter;\n}\n\nmodule.exports = getEventModifierState;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar Danger = require('./Danger');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\nvar setInnerHTML = require('./setInnerHTML');\nvar setTextContent = require('./setTextContent');\n\nfunction getNodeAfter(parentNode, node) {\n // Special case for text components, which return [open, close] comments\n // from getHostNode.\n if (Array.isArray(node)) {\n node = node[1];\n }\n return node ? node.nextSibling : parentNode.firstChild;\n}\n\n/**\n * Inserts `childNode` as a child of `parentNode` at the `index`.\n *\n * @param {DOMElement} parentNode Parent node in which to insert.\n * @param {DOMElement} childNode Child node to insert.\n * @param {number} index Index at which to insert the child.\n * @internal\n */\nvar insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {\n // We rely exclusively on `insertBefore(node, null)` instead of also using\n // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so\n // we are careful to use `null`.)\n parentNode.insertBefore(childNode, referenceNode);\n});\n\nfunction insertLazyTreeChildAt(parentNode, childTree, referenceNode) {\n DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);\n}\n\nfunction moveChild(parentNode, childNode, referenceNode) {\n if (Array.isArray(childNode)) {\n moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);\n } else {\n insertChildAt(parentNode, childNode, referenceNode);\n }\n}\n\nfunction removeChild(parentNode, childNode) {\n if (Array.isArray(childNode)) {\n var closingComment = childNode[1];\n childNode = childNode[0];\n removeDelimitedText(parentNode, childNode, closingComment);\n parentNode.removeChild(closingComment);\n }\n parentNode.removeChild(childNode);\n}\n\nfunction moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {\n var node = openingComment;\n while (true) {\n var nextNode = node.nextSibling;\n insertChildAt(parentNode, node, referenceNode);\n if (node === closingComment) {\n break;\n }\n node = nextNode;\n }\n}\n\nfunction removeDelimitedText(parentNode, startNode, closingComment) {\n while (true) {\n var node = startNode.nextSibling;\n if (node === closingComment) {\n // The closing comment is removed by ReactMultiChild.\n break;\n } else {\n parentNode.removeChild(node);\n }\n }\n}\n\nfunction replaceDelimitedText(openingComment, closingComment, stringText) {\n var parentNode = openingComment.parentNode;\n var nodeAfterComment = openingComment.nextSibling;\n if (nodeAfterComment === closingComment) {\n // There are no text nodes between the opening and closing comments; insert\n // a new one if stringText isn't empty.\n if (stringText) {\n insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);\n }\n } else {\n if (stringText) {\n // Set the text content of the first node after the opening comment, and\n // remove all following nodes up until the closing comment.\n setTextContent(nodeAfterComment, stringText);\n removeDelimitedText(parentNode, nodeAfterComment, closingComment);\n } else {\n removeDelimitedText(parentNode, openingComment, closingComment);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID,\n type: 'replace text',\n payload: stringText\n });\n }\n}\n\nvar dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;\nif (process.env.NODE_ENV !== 'production') {\n dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) {\n Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);\n if (prevInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: prevInstance._debugID,\n type: 'replace with',\n payload: markup.toString()\n });\n } else {\n var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);\n if (nextInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: nextInstance._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n };\n}\n\n/**\n * Operations for updating with DOM children.\n */\nvar DOMChildrenOperations = {\n dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,\n\n replaceDelimitedText: replaceDelimitedText,\n\n /**\n * Updates a component's children by processing a series of updates. The\n * update configurations are each expected to have a `parentNode` property.\n *\n * @param {array} updates List of update configurations.\n * @internal\n */\n processUpdates: function (parentNode, updates) {\n if (process.env.NODE_ENV !== 'production') {\n var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;\n }\n\n for (var k = 0; k < updates.length; k++) {\n var update = updates[k];\n switch (update.type) {\n case 'INSERT_MARKUP':\n insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'insert child',\n payload: {\n toIndex: update.toIndex,\n content: update.content.toString()\n }\n });\n }\n break;\n case 'MOVE_EXISTING':\n moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'move child',\n payload: { fromIndex: update.fromIndex, toIndex: update.toIndex }\n });\n }\n break;\n case 'SET_MARKUP':\n setInnerHTML(parentNode, update.content);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace children',\n payload: update.content.toString()\n });\n }\n break;\n case 'TEXT_CONTENT':\n setTextContent(parentNode, update.content);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace text',\n payload: update.content.toString()\n });\n }\n break;\n case 'REMOVE_NODE':\n removeChild(parentNode, update.fromNode);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'remove child',\n payload: { fromIndex: update.fromIndex }\n });\n }\n break;\n }\n }\n }\n};\n\nmodule.exports = DOMChildrenOperations;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg'\n};\n\nmodule.exports = DOMNamespaces;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/* globals MSApp */\n\n'use strict';\n\n/**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\n\nvar createMicrosoftUnsafeLocalFunction = function (func) {\n if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n return function (arg0, arg1, arg2, arg3) {\n MSApp.execUnsafeLocalFunction(function () {\n return func(arg0, arg1, arg2, arg3);\n });\n };\n } else {\n return func;\n }\n};\n\nmodule.exports = createMicrosoftUnsafeLocalFunction;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactPropTypesSecret = require('./ReactPropTypesSecret');\nvar propTypesFactory = require('prop-types/factory');\n\nvar React = require('react/lib/React');\nvar PropTypes = propTypesFactory(React.isValidElement);\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar hasReadOnlyValue = {\n button: true,\n checkbox: true,\n image: true,\n hidden: true,\n radio: true,\n reset: true,\n submit: true\n};\n\nfunction _assertSingleLink(inputProps) {\n !(inputProps.checkedLink == null || inputProps.valueLink == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\\'t want to use valueLink and vice versa.') : _prodInvariant('87') : void 0;\n}\nfunction _assertValueLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.value == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don\\'t want to use valueLink.') : _prodInvariant('88') : void 0;\n}\n\nfunction _assertCheckedLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.checked == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don\\'t want to use checkedLink') : _prodInvariant('89') : void 0;\n}\n\nvar propTypes = {\n value: function (props, propName, componentName) {\n if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n checked: function (props, propName, componentName) {\n if (!props[propName] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n onChange: PropTypes.func\n};\n\nvar loggedTypeFailures = {};\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Provide a linked `value` attribute for controlled forms. You should not use\n * this outside of the ReactDOM controlled form components.\n */\nvar LinkedValueUtils = {\n checkPropTypes: function (tagName, props, owner) {\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error = propTypes[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret);\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var addendum = getDeclarationErrorAddendum(owner);\n process.env.NODE_ENV !== 'production' ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0;\n }\n }\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current value of the input either from value prop or link.\n */\n getValue: function (inputProps) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.value;\n }\n return inputProps.value;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current checked status of the input either from checked prop\n * or link.\n */\n getChecked: function (inputProps) {\n if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.value;\n }\n return inputProps.checked;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @param {SyntheticEvent} event change event to handle\n */\n executeOnChange: function (inputProps, event) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.requestChange(event.target.value);\n } else if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.requestChange(event.target.checked);\n } else if (inputProps.onChange) {\n return inputProps.onChange.call(undefined, event);\n }\n }\n};\n\nmodule.exports = LinkedValueUtils;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar injected = false;\n\nvar ReactComponentEnvironment = {\n /**\n * Optionally injectable hook for swapping out mount images in the middle of\n * the tree.\n */\n replaceNodeWithMarkup: null,\n\n /**\n * Optionally injectable hook for processing a queue of child updates. Will\n * later move into MultiChildComponents.\n */\n processChildrenUpdates: null,\n\n injection: {\n injectEnvironment: function (environment) {\n !!injected ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0;\n ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;\n ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;\n injected = true;\n }\n }\n};\n\nmodule.exports = ReactComponentEnvironment;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar ReactCompositeComponent = require('./ReactCompositeComponent');\nvar ReactEmptyComponent = require('./ReactEmptyComponent');\nvar ReactHostComponent = require('./ReactHostComponent');\n\nvar getNextDebugID = require('react/lib/getNextDebugID');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n// To avoid a cyclic dependency, we create the final class in this module\nvar ReactCompositeComponentWrapper = function (element) {\n this.construct(element);\n};\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Check if the type reference is a known internal type. I.e. not a user\n * provided composite type.\n *\n * @param {function} type\n * @return {boolean} Returns true if this is a valid internal type.\n */\nfunction isInternalComponentType(type) {\n return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function';\n}\n\n/**\n * Given a ReactNode, create an instance that will actually be mounted.\n *\n * @param {ReactNode} node\n * @param {boolean} shouldHaveDebugID\n * @return {object} A new instance of the element's constructor.\n * @protected\n */\nfunction instantiateReactComponent(node, shouldHaveDebugID) {\n var instance;\n\n if (node === null || node === false) {\n instance = ReactEmptyComponent.create(instantiateReactComponent);\n } else if (typeof node === 'object') {\n var element = node;\n var type = element.type;\n if (typeof type !== 'function' && typeof type !== 'string') {\n var info = '';\n if (process.env.NODE_ENV !== 'production') {\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in.\";\n }\n }\n info += getDeclarationErrorAddendum(element._owner);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', type == null ? type : typeof type, info) : _prodInvariant('130', type == null ? type : typeof type, info) : void 0;\n }\n\n // Special case string values\n if (typeof element.type === 'string') {\n instance = ReactHostComponent.createInternalComponent(element);\n } else if (isInternalComponentType(element.type)) {\n // This is temporarily available for custom components that are not string\n // representations. I.e. ART. Once those are updated to use the string\n // representation, we can drop this code path.\n instance = new element.type(element);\n\n // We renamed this. Allow the old name for compat. :(\n if (!instance.getHostNode) {\n instance.getHostNode = instance.getNativeNode;\n }\n } else {\n instance = new ReactCompositeComponentWrapper(element);\n }\n } else if (typeof node === 'string' || typeof node === 'number') {\n instance = ReactHostComponent.createInstanceForText(node);\n } else {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Encountered invalid React node of type %s', typeof node) : _prodInvariant('131', typeof node) : void 0;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(typeof instance.mountComponent === 'function' && typeof instance.receiveComponent === 'function' && typeof instance.getHostNode === 'function' && typeof instance.unmountComponent === 'function', 'Only React Components can be mounted.') : void 0;\n }\n\n // These two fields are used by the DOM and ART diffing algorithms\n // respectively. Instead of using expandos on components, we should be\n // storing the state needed by the diffing algorithms elsewhere.\n instance._mountIndex = 0;\n instance._mountImage = null;\n\n if (process.env.NODE_ENV !== 'production') {\n instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0;\n }\n\n // Internal instances should fully constructed at this point, so they should\n // not get any new fields added to them at this point.\n if (process.env.NODE_ENV !== 'production') {\n if (Object.preventExtensions) {\n Object.preventExtensions(instance);\n }\n }\n\n return instance;\n}\n\n_assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, {\n _instantiateReactComponent: instantiateReactComponent\n});\n\nmodule.exports = instantiateReactComponent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Given a `prevElement` and `nextElement`, determines if the existing\n * instance should be updated as opposed to being destroyed or replaced by a new\n * instance. Both arguments are elements. This ensures that this logic can\n * operate on stateless trees without any backing instance.\n *\n * @param {?object} prevElement\n * @param {?object} nextElement\n * @return {boolean} True if the existing instance should be updated.\n * @protected\n */\n\nfunction shouldUpdateReactComponent(prevElement, nextElement) {\n var prevEmpty = prevElement === null || prevElement === false;\n var nextEmpty = nextElement === null || nextElement === false;\n if (prevEmpty || nextEmpty) {\n return prevEmpty === nextEmpty;\n }\n\n var prevType = typeof prevElement;\n var nextType = typeof nextElement;\n if (prevType === 'string' || prevType === 'number') {\n return nextType === 'string' || nextType === 'number';\n } else {\n return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;\n }\n}\n\nmodule.exports = shouldUpdateReactComponent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nfunction enqueueUpdate(internalInstance) {\n ReactUpdates.enqueueUpdate(internalInstance);\n}\n\nfunction formatUnexpectedArgument(arg) {\n var type = typeof arg;\n if (type !== 'object') {\n return type;\n }\n var displayName = arg.constructor && arg.constructor.name || type;\n var keys = Object.keys(arg);\n if (keys.length > 0 && keys.length < 20) {\n return displayName + ' (keys: ' + keys.join(', ') + ')';\n }\n return displayName;\n}\n\nfunction getInternalInstanceReadyForUpdate(publicInstance, callerName) {\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (!internalInstance) {\n if (process.env.NODE_ENV !== 'production') {\n var ctor = publicInstance.constructor;\n // Only warn when we have a callerName. Otherwise we should be silent.\n // We're probably calling from enqueueCallback. We don't want to warn\n // there because we already warned for the corresponding lifecycle method.\n process.env.NODE_ENV !== 'production' ? warning(!callerName, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, ctor && (ctor.displayName || ctor.name) || 'ReactClass') : void 0;\n }\n return null;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '%s(...): Cannot update during an existing state transition (such as ' + \"within `render` or another component's constructor). Render methods \" + 'should be a pure function of props and state; constructor ' + 'side-effects are an anti-pattern, but can be moved to ' + '`componentWillMount`.', callerName) : void 0;\n }\n\n return internalInstance;\n}\n\n/**\n * ReactUpdateQueue allows for state updates to be scheduled into a later\n * reconciliation step.\n */\nvar ReactUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n if (process.env.NODE_ENV !== 'production') {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (internalInstance) {\n // During componentWillMount and render this will still be null but after\n // that will always render to something. At least for now. So we can use\n // this hack.\n return !!internalInstance._renderedComponent;\n } else {\n return false;\n }\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @param {string} callerName Name of the calling function in the public API.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback, callerName) {\n ReactUpdateQueue.validateCallback(callback, callerName);\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);\n\n // Previously we would throw an error if we didn't have an internal\n // instance. Since we want to make it a no-op instead, we mirror the same\n // behavior we have in other enqueue* methods.\n // We also need to ignore callbacks in componentWillMount. See\n // enqueueUpdates.\n if (!internalInstance) {\n return null;\n }\n\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n // TODO: The callback here is ignored when setState is called from\n // componentWillMount. Either fix it or disallow doing so completely in\n // favor of getInitialState. Alternatively, we can disallow\n // componentWillMount during server-side rendering.\n enqueueUpdate(internalInstance);\n },\n\n enqueueCallbackInternal: function (internalInstance, callback) {\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingForceUpdate = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingStateQueue = [completeState];\n internalInstance._pendingReplaceState = true;\n\n // Future-proof 15.5\n if (callback !== undefined && callback !== null) {\n ReactUpdateQueue.validateCallback(callback, 'replaceState');\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n }\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetState();\n process.env.NODE_ENV !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0;\n }\n\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState');\n\n if (!internalInstance) {\n return;\n }\n\n var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []);\n queue.push(partialState);\n\n enqueueUpdate(internalInstance);\n },\n\n enqueueElementInternal: function (internalInstance, nextElement, nextContext) {\n internalInstance._pendingElement = nextElement;\n // TODO: introduce _pendingContext instead of setting it directly.\n internalInstance._context = nextContext;\n enqueueUpdate(internalInstance);\n },\n\n validateCallback: function (callback, callerName) {\n !(!callback || typeof callback === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.', callerName, formatUnexpectedArgument(callback)) : _prodInvariant('122', callerName, formatUnexpectedArgument(callback)) : void 0;\n }\n};\n\nmodule.exports = ReactUpdateQueue;","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar warning = require('fbjs/lib/warning');\n\nvar validateDOMNesting = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n // This validation code was written based on the HTML5 parsing spec:\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n //\n // Note: this does not catch all invalid nesting, nor does it try to (as it's\n // not clear what practical benefit doing so provides); instead, we warn only\n // for cases where the parser will give a parse tree differing from what React\n // intended. For example,
is invalid but we don't warn\n // because it still parses correctly; we do warn for other cases like nested\n //

tags where the beginning of the second element implicitly closes the\n // first, causing a confusing mess.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#special\n var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template',\n\n // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n // TODO: Distinguish by namespace here -- for , including it here\n // errs on the side of fewer warnings\n 'foreignObject', 'desc', 'title'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n var buttonScopeTags = inScopeTags.concat(['button']);\n\n // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n\n var emptyAncestorInfo = {\n current: null,\n\n formTag: null,\n aTagInScope: null,\n buttonTagInScope: null,\n nobrTagInScope: null,\n pTagInButtonScope: null,\n\n listItemTagAutoclosing: null,\n dlItemTagAutoclosing: null\n };\n\n var updatedAncestorInfo = function (oldInfo, tag, instance) {\n var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);\n var info = { tag: tag, instance: instance };\n\n if (inScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.aTagInScope = null;\n ancestorInfo.buttonTagInScope = null;\n ancestorInfo.nobrTagInScope = null;\n }\n if (buttonScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.pTagInButtonScope = null;\n }\n\n // See rules for 'li', 'dd', 'dt' start tags in\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n ancestorInfo.listItemTagAutoclosing = null;\n ancestorInfo.dlItemTagAutoclosing = null;\n }\n\n ancestorInfo.current = info;\n\n if (tag === 'form') {\n ancestorInfo.formTag = info;\n }\n if (tag === 'a') {\n ancestorInfo.aTagInScope = info;\n }\n if (tag === 'button') {\n ancestorInfo.buttonTagInScope = info;\n }\n if (tag === 'nobr') {\n ancestorInfo.nobrTagInScope = info;\n }\n if (tag === 'p') {\n ancestorInfo.pTagInButtonScope = info;\n }\n if (tag === 'li') {\n ancestorInfo.listItemTagAutoclosing = info;\n }\n if (tag === 'dd' || tag === 'dt') {\n ancestorInfo.dlItemTagAutoclosing = info;\n }\n\n return ancestorInfo;\n };\n\n /**\n * Returns whether\n */\n var isTagValidWithParent = function (tag, parentTag) {\n // First, let's check if we're in an unusual parsing mode...\n switch (parentTag) {\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n case 'select':\n return tag === 'option' || tag === 'optgroup' || tag === '#text';\n case 'optgroup':\n return tag === 'option' || tag === '#text';\n // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n // but\n case 'option':\n return tag === '#text';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n // No special behavior since these rules fall back to \"in body\" mode for\n // all except special table nodes which cause bad parsing behavior anyway.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n case 'tr':\n return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n case 'tbody':\n case 'thead':\n case 'tfoot':\n return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n case 'colgroup':\n return tag === 'col' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n case 'table':\n return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n case 'head':\n return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n case 'html':\n return tag === 'head' || tag === 'body';\n case '#document':\n return tag === 'html';\n }\n\n // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n // where the parsing rules cause implicit opens or closes to be added.\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n switch (tag) {\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\n case 'rp':\n case 'rt':\n return impliedEndTags.indexOf(parentTag) === -1;\n\n case 'body':\n case 'caption':\n case 'col':\n case 'colgroup':\n case 'frame':\n case 'head':\n case 'html':\n case 'tbody':\n case 'td':\n case 'tfoot':\n case 'th':\n case 'thead':\n case 'tr':\n // These tags are only valid with a few parents that have special child\n // parsing rules -- if we're down here, then none of those matched and\n // so we allow it only if we don't know what the parent is, as all other\n // cases are invalid.\n return parentTag == null;\n }\n\n return true;\n };\n\n /**\n * Returns whether\n */\n var findInvalidAncestorForTag = function (tag, ancestorInfo) {\n switch (tag) {\n case 'address':\n case 'article':\n case 'aside':\n case 'blockquote':\n case 'center':\n case 'details':\n case 'dialog':\n case 'dir':\n case 'div':\n case 'dl':\n case 'fieldset':\n case 'figcaption':\n case 'figure':\n case 'footer':\n case 'header':\n case 'hgroup':\n case 'main':\n case 'menu':\n case 'nav':\n case 'ol':\n case 'p':\n case 'section':\n case 'summary':\n case 'ul':\n case 'pre':\n case 'listing':\n case 'table':\n case 'hr':\n case 'xmp':\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return ancestorInfo.pTagInButtonScope;\n\n case 'form':\n return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n case 'li':\n return ancestorInfo.listItemTagAutoclosing;\n\n case 'dd':\n case 'dt':\n return ancestorInfo.dlItemTagAutoclosing;\n\n case 'button':\n return ancestorInfo.buttonTagInScope;\n\n case 'a':\n // Spec says something about storing a list of markers, but it sounds\n // equivalent to this check.\n return ancestorInfo.aTagInScope;\n\n case 'nobr':\n return ancestorInfo.nobrTagInScope;\n }\n\n return null;\n };\n\n /**\n * Given a ReactCompositeComponent instance, return a list of its recursive\n * owners, starting at the root and ending with the instance itself.\n */\n var findOwnerStack = function (instance) {\n if (!instance) {\n return [];\n }\n\n var stack = [];\n do {\n stack.push(instance);\n } while (instance = instance._currentElement._owner);\n stack.reverse();\n return stack;\n };\n\n var didWarn = {};\n\n validateDOMNesting = function (childTag, childText, childInstance, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n\n if (childText != null) {\n process.env.NODE_ENV !== 'production' ? warning(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0;\n childTag = '#text';\n }\n\n var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n var problematic = invalidParent || invalidAncestor;\n\n if (problematic) {\n var ancestorTag = problematic.tag;\n var ancestorInstance = problematic.instance;\n\n var childOwner = childInstance && childInstance._currentElement._owner;\n var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner;\n\n var childOwners = findOwnerStack(childOwner);\n var ancestorOwners = findOwnerStack(ancestorOwner);\n\n var minStackLen = Math.min(childOwners.length, ancestorOwners.length);\n var i;\n\n var deepestCommon = -1;\n for (i = 0; i < minStackLen; i++) {\n if (childOwners[i] === ancestorOwners[i]) {\n deepestCommon = i;\n } else {\n break;\n }\n }\n\n var UNKNOWN = '(unknown)';\n var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ownerInfo = [].concat(\n // If the parent and child instances have a common owner ancestor, start\n // with that -- otherwise we just start with the parent's owners.\n deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag,\n // If we're warning about an invalid (non-parent) ancestry, add '...'\n invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > ');\n\n var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo;\n if (didWarn[warnKey]) {\n return;\n }\n didWarn[warnKey] = true;\n\n var tagDisplayName = childTag;\n var whitespaceInfo = '';\n if (childTag === '#text') {\n if (/\\S/.test(childText)) {\n tagDisplayName = 'Text nodes';\n } else {\n tagDisplayName = 'Whitespace text nodes';\n whitespaceInfo = \" Make sure you don't have any extra whitespace between tags on \" + 'each line of your source code.';\n }\n } else {\n tagDisplayName = '<' + childTag + '>';\n }\n\n if (invalidParent) {\n var info = '';\n if (ancestorTag === 'table' && childTag === 'tr') {\n info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';\n }\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s ' + 'See %s.%s', tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0;\n } else {\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0;\n }\n }\n };\n\n validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo;\n\n // For testing\n validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo);\n };\n}\n\nmodule.exports = validateDOMNesting;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\n\nfunction getEventCharCode(nativeEvent) {\n var charCode;\n var keyCode = nativeEvent.keyCode;\n\n if ('charCode' in nativeEvent) {\n charCode = nativeEvent.charCode;\n\n // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n if (charCode === 0 && keyCode === 13) {\n charCode = 13;\n }\n } else {\n // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n charCode = keyCode;\n }\n\n // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n // Must not discard the (non-)printable Enter-key.\n if (charCode >= 32 || charCode === 13) {\n return charCode;\n }\n\n return 0;\n}\n\nmodule.exports = getEventCharCode;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nrequire('whatwg-fetch');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar fetchFunction = fetch;\n\nfunction checkStatus(response) {\n if (!response.ok) {\n return response.text().then(function (text) {\n throw new Error(text);\n });\n }\n return response;\n}\n\nfunction parseJson(response) {\n return response.json();\n}\n\nfunction encodeQueryParams(params) {\n return '?' + (0, _keys2.default)(params).map(function (k) {\n return k + '=' + encodeURIComponent(params[k]);\n }).join('&');\n}\n\nvar request = function request(url, opts) {\n if (opts && opts.qs) {\n url += encodeQueryParams(opts.qs);\n delete opts.qs;\n }\n if (opts && opts.body) {\n if (!opts.headers) {\n opts.headers = {};\n }\n opts.body = (0, _stringify2.default)(opts.body);\n opts.headers['Content-Type'] = 'application/json';\n }\n return fetchFunction(url, opts).then(checkStatus).then(parseJson);\n};\n\nvar RtsClient = function () {\n function RtsClient(url) {\n (0, _classCallCheck3.default)(this, RtsClient);\n\n this._url = url;\n }\n\n (0, _createClass3.default)(RtsClient, [{\n key: 'getTeamsConfig',\n value: function getTeamsConfig() {\n return request(this._url + '/teams');\n }\n\n /**\n * Track a referral with the Riot Team Server. This should be called once a referred\n * user has been successfully registered.\n * @param {string} referrer the user ID of one who referred the user to Riot.\n * @param {string} sid the sign-up identity server session ID .\n * @param {string} clientSecret the sign-up client secret.\n * @returns {Promise} a promise that resolves to { team_token: 'sometoken' } upon\n * success.\n */\n\n }, {\n key: 'trackReferral',\n value: function trackReferral(referrer, sid, clientSecret) {\n return request(this._url + '/register', {\n body: {\n referrer: referrer,\n session_id: sid,\n client_secret: clientSecret\n },\n method: 'POST'\n });\n }\n }, {\n key: 'getTeam',\n value: function getTeam(teamToken) {\n return request(this._url + '/teamConfiguration', {\n qs: {\n team_token: teamToken\n }\n });\n }\n\n /**\n * Signal to the RTS that a login has occurred and that a user requires their team's\n * token.\n * @param {string} userId the user ID of the user who is a member of a team.\n * @returns {Promise} a promise that resolves to { team_token: 'sometoken' } upon\n * success.\n */\n\n }, {\n key: 'login',\n value: function login(userId) {\n return request(this._url + '/login', {\n qs: {\n user_id: userId\n }\n });\n }\n\n // allow fetch to be replaced, for testing.\n\n }], [{\n key: 'setFetch',\n value: function setFetch(fn) {\n fetchFunction = fn;\n }\n }]);\n return RtsClient;\n}();\n\nexports.default = RtsClient;\nmodule.exports = exports['default'];\n//# sourceMappingURL=RtsClient.js.map","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _syncAccumulator = require(\"../sync-accumulator\");\n\nvar _syncAccumulator2 = _interopRequireDefault(_syncAccumulator);\n\nvar _utils = require(\"../utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar VERSION = 3; /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction createDatabase(db) {\n // Make user store, clobber based on user ID. (userId property of User objects)\n db.createObjectStore(\"users\", { keyPath: [\"userId\"] });\n\n // Make account data store, clobber based on event type.\n // (event.type property of MatrixEvent objects)\n db.createObjectStore(\"accountData\", { keyPath: [\"type\"] });\n\n // Make /sync store (sync tokens, room data, etc), always clobber (const key).\n db.createObjectStore(\"sync\", { keyPath: [\"clobber\"] });\n}\n\nfunction upgradeSchemaV2(db) {\n var oobMembersStore = db.createObjectStore(\"oob_membership_events\", {\n keyPath: [\"room_id\", \"state_key\"]\n });\n oobMembersStore.createIndex(\"room\", \"room_id\");\n}\n\nfunction upgradeSchemaV3(db) {\n db.createObjectStore(\"client_options\", { keyPath: [\"clobber\"] });\n}\n\n/**\n * Helper method to collect results from a Cursor and promiseify it.\n * @param {ObjectStore|Index} store The store to perform openCursor on.\n * @param {IDBKeyRange=} keyRange Optional key range to apply on the cursor.\n * @param {Function} resultMapper A function which is repeatedly called with a\n * Cursor.\n * Return the data you want to keep.\n * @return {Promise<T[]>} Resolves to an array of whatever you returned from\n * resultMapper.\n */\nfunction selectQuery(store, keyRange, resultMapper) {\n var query = store.openCursor(keyRange);\n return new _bluebird2.default(function (resolve, reject) {\n var results = [];\n query.onerror = function (event) {\n reject(new Error(\"Query failed: \" + event.target.errorCode));\n };\n // collect results\n query.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n resolve(results);\n return; // end of results\n }\n results.push(resultMapper(cursor));\n cursor.continue();\n };\n });\n}\n\nfunction txnAsPromise(txn) {\n return new _bluebird2.default(function (resolve, reject) {\n txn.oncomplete = function (event) {\n resolve(event);\n };\n txn.onerror = function (event) {\n reject(event.target.error);\n };\n });\n}\n\nfunction reqAsEventPromise(req) {\n return new _bluebird2.default(function (resolve, reject) {\n req.onsuccess = function (event) {\n resolve(event);\n };\n req.onerror = function (event) {\n reject(event.target.error);\n };\n });\n}\n\nfunction reqAsPromise(req) {\n return new _bluebird2.default(function (resolve, reject) {\n req.onsuccess = function () {\n return resolve(req);\n };\n req.onerror = function (err) {\n return reject(err);\n };\n });\n}\n\nfunction reqAsCursorPromise(req) {\n return reqAsEventPromise(req).then(function (event) {\n return event.target.result;\n });\n}\n\n/**\n * Does the actual reading from and writing to the indexeddb\n *\n * Construct a new Indexed Database store backend. This requires a call to\n * <code>connect()</code> before this store can be used.\n * @constructor\n * @param {Object} indexedDBInterface The Indexed DB interface e.g\n * <code>window.indexedDB</code>\n * @param {string=} dbName Optional database name. The same name must be used\n * to open the same database.\n */\nvar LocalIndexedDBStoreBackend = function LocalIndexedDBStoreBackend(indexedDBInterface, dbName) {\n this.indexedDB = indexedDBInterface;\n this._dbName = \"matrix-js-sdk:\" + (dbName || \"default\");\n this.db = null;\n this._disconnected = true;\n this._syncAccumulator = new _syncAccumulator2.default();\n this._isNewlyCreated = false;\n};\n\nLocalIndexedDBStoreBackend.prototype = {\n /**\n * Attempt to connect to the database. This can fail if the user does not\n * grant permission.\n * @return {Promise} Resolves if successfully connected.\n */\n connect: function connect() {\n var _this = this;\n\n if (!this._disconnected) {\n console.log(\"LocalIndexedDBStoreBackend.connect: already connected or connecting\");\n return _bluebird2.default.resolve();\n }\n\n this._disconnected = false;\n\n console.log(\"LocalIndexedDBStoreBackend.connect: connecting...\");\n var req = this.indexedDB.open(this._dbName, VERSION);\n req.onupgradeneeded = function (ev) {\n var db = ev.target.result;\n var oldVersion = ev.oldVersion;\n console.log(\"LocalIndexedDBStoreBackend.connect: upgrading from \" + oldVersion);\n if (oldVersion < 1) {\n // The database did not previously exist.\n _this._isNewlyCreated = true;\n createDatabase(db);\n }\n if (oldVersion < 2) {\n upgradeSchemaV2(db);\n }\n if (oldVersion < 3) {\n upgradeSchemaV3(db);\n }\n // Expand as needed.\n };\n\n req.onblocked = function () {\n console.log(\"can't yet open LocalIndexedDBStoreBackend because it is open elsewhere\");\n };\n\n console.log(\"LocalIndexedDBStoreBackend.connect: awaiting connection...\");\n return reqAsEventPromise(req).then(function (ev) {\n console.log(\"LocalIndexedDBStoreBackend.connect: connected\");\n _this.db = ev.target.result;\n\n // add a poorly-named listener for when deleteDatabase is called\n // so we can close our db connections.\n _this.db.onversionchange = function () {\n _this.db.close();\n };\n\n return _this._init();\n });\n },\n /** @return {bool} whether or not the database was newly created in this session. */\n isNewlyCreated: function isNewlyCreated() {\n return _bluebird2.default.resolve(this._isNewlyCreated);\n },\n\n /**\n * Having connected, load initial data from the database and prepare for use\n * @return {Promise} Resolves on success\n */\n _init: function _init() {\n var _this2 = this;\n\n return _bluebird2.default.all([this._loadAccountData(), this._loadSyncData()]).then(function (_ref) {\n var _ref2 = (0, _slicedToArray3.default)(_ref, 2),\n accountData = _ref2[0],\n syncData = _ref2[1];\n\n console.log(\"LocalIndexedDBStoreBackend: loaded initial data\");\n _this2._syncAccumulator.accumulate({\n next_batch: syncData.nextBatch,\n rooms: syncData.roomsData,\n groups: syncData.groupsData,\n account_data: {\n events: accountData\n }\n });\n });\n },\n\n /**\n * Returns the out-of-band membership events for this room that\n * were previously loaded.\n * @param {string} roomId\n * @returns {Promise<event[]>} the events, potentially an empty array if OOB loading didn't yield any new members\n * @returns {null} in case the members for this room haven't been stored yet\n */\n getOutOfBandMembers: function getOutOfBandMembers(roomId) {\n var _this3 = this;\n\n return new _bluebird2.default(function (resolve, reject) {\n var tx = _this3.db.transaction([\"oob_membership_events\"], \"readonly\");\n var store = tx.objectStore(\"oob_membership_events\");\n var roomIndex = store.index(\"room\");\n var range = IDBKeyRange.only(roomId);\n var request = roomIndex.openCursor(range);\n\n var membershipEvents = [];\n // did we encounter the oob_written marker object\n // amongst the results? That means OOB member\n // loading already happened for this room\n // but there were no members to persist as they\n // were all known already\n var oobWritten = false;\n\n request.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n // Unknown room\n if (!membershipEvents.length && !oobWritten) {\n return resolve(null);\n }\n return resolve(membershipEvents);\n }\n var record = cursor.value;\n if (record.oob_written) {\n oobWritten = true;\n } else {\n membershipEvents.push(record);\n }\n cursor.continue();\n };\n request.onerror = function (err) {\n reject(err);\n };\n }).then(function (events) {\n console.log(\"LL: got \" + (events && events.length) + (\" membershipEvents from storage for room \" + roomId + \" ...\"));\n return events;\n });\n },\n\n /**\n * Stores the out-of-band membership events for this room. Note that\n * it still makes sense to store an empty array as the OOB status for the room is\n * marked as fetched, and getOutOfBandMembers will return an empty array instead of null\n * @param {string} roomId\n * @param {event[]} membershipEvents the membership events to store\n */\n setOutOfBandMembers: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(roomId, membershipEvents) {\n var tx, store, markerObject;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n console.log(\"LL: backend about to store \" + membershipEvents.length + (\" members for \" + roomId));\n tx = this.db.transaction([\"oob_membership_events\"], \"readwrite\");\n store = tx.objectStore(\"oob_membership_events\");\n\n membershipEvents.forEach(function (e) {\n store.put(e);\n });\n // aside from all the events, we also write a marker object to the store\n // to mark the fact that OOB members have been written for this room.\n // It's possible that 0 members need to be written as all where previously know\n // but we still need to know whether to return null or [] from getOutOfBandMembers\n // where null means out of band members haven't been stored yet for this room\n markerObject = {\n room_id: roomId,\n oob_written: true,\n state_key: 0\n };\n\n store.put(markerObject);\n _context.next = 8;\n return (0, _bluebird.resolve)(txnAsPromise(tx));\n\n case 8:\n console.log(\"LL: backend done storing for \" + roomId + \"!\");\n\n case 9:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function setOutOfBandMembers(_x, _x2) {\n return _ref3.apply(this, arguments);\n }\n\n return setOutOfBandMembers;\n }(),\n\n clearOutOfBandMembers: function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(roomId) {\n var readTx, store, roomIndex, roomRange, minStateKeyProm, maxStateKeyProm, _ref5, _ref6, minStateKey, maxStateKey, writeTx, writeStore, membersKeyRange;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // the approach to delete all members for a room\n // is to get the min and max state key from the index\n // for that room, and then delete between those\n // keys in the store.\n // this should be way faster than deleting every member\n // individually for a large room.\n readTx = this.db.transaction([\"oob_membership_events\"], \"readonly\");\n store = readTx.objectStore(\"oob_membership_events\");\n roomIndex = store.index(\"room\");\n roomRange = IDBKeyRange.only(roomId);\n minStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, \"next\")).then(function (cursor) {\n return cursor && cursor.primaryKey[1];\n });\n maxStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, \"prev\")).then(function (cursor) {\n return cursor && cursor.primaryKey[1];\n });\n _context2.next = 8;\n return (0, _bluebird.resolve)(_bluebird2.default.all([minStateKeyProm, maxStateKeyProm]));\n\n case 8:\n _ref5 = _context2.sent;\n _ref6 = (0, _slicedToArray3.default)(_ref5, 2);\n minStateKey = _ref6[0];\n maxStateKey = _ref6[1];\n writeTx = this.db.transaction([\"oob_membership_events\"], \"readwrite\");\n writeStore = writeTx.objectStore(\"oob_membership_events\");\n membersKeyRange = IDBKeyRange.bound([roomId, minStateKey], [roomId, maxStateKey]);\n\n\n console.log(\"LL: Deleting all users + marker in storage for \" + (\"room \" + roomId + \", with key range:\"), [roomId, minStateKey], [roomId, maxStateKey]);\n _context2.next = 18;\n return (0, _bluebird.resolve)(reqAsPromise(writeStore.delete(membersKeyRange)));\n\n case 18:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function clearOutOfBandMembers(_x3) {\n return _ref4.apply(this, arguments);\n }\n\n return clearOutOfBandMembers;\n }(),\n\n /**\n * Clear the entire database. This should be used when logging out of a client\n * to prevent mixing data between accounts.\n * @return {Promise} Resolved when the database is cleared.\n */\n clearDatabase: function clearDatabase() {\n var _this4 = this;\n\n return new _bluebird2.default(function (resolve, reject) {\n console.log(\"Removing indexeddb instance: \" + _this4._dbName);\n var req = _this4.indexedDB.deleteDatabase(_this4._dbName);\n\n req.onblocked = function () {\n console.log(\"can't yet delete indexeddb \" + _this4._dbName + \" because it is open elsewhere\");\n };\n\n req.onerror = function (ev) {\n // in firefox, with indexedDB disabled, this fails with a\n // DOMError. We treat this as non-fatal, so that we can still\n // use the app.\n console.warn(\"unable to delete js-sdk store indexeddb: \" + ev.target.error);\n resolve();\n };\n\n req.onsuccess = function () {\n console.log(\"Removed indexeddb instance: \" + _this4._dbName);\n resolve();\n };\n });\n },\n\n /**\n * @param {boolean=} copy If false, the data returned is from internal\n * buffers and must not be mutated. Otherwise, a copy is made before\n * returning such that the data can be safely mutated. Default: true.\n *\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\n getSavedSync: function getSavedSync(copy) {\n if (copy === undefined) copy = true;\n\n var data = this._syncAccumulator.getJSON();\n if (!data.nextBatch) return _bluebird2.default.resolve(null);\n if (copy) {\n // We must deep copy the stored data so that the /sync processing code doesn't\n // corrupt the internal state of the sync accumulator (it adds non-clonable keys)\n return _bluebird2.default.resolve(_utils2.default.deepCopy(data));\n } else {\n return _bluebird2.default.resolve(data);\n }\n },\n\n getNextBatchToken: function getNextBatchToken() {\n return _bluebird2.default.resolve(this._syncAccumulator.getNextBatchToken());\n },\n\n setSyncData: function setSyncData(syncData) {\n var _this5 = this;\n\n return _bluebird2.default.resolve().then(function () {\n _this5._syncAccumulator.accumulate(syncData);\n });\n },\n\n syncToDatabase: function syncToDatabase(userTuples) {\n var syncData = this._syncAccumulator.getJSON();\n\n return _bluebird2.default.all([this._persistUserPresenceEvents(userTuples), this._persistAccountData(syncData.accountData), this._persistSyncData(syncData.nextBatch, syncData.roomsData, syncData.groupsData)]);\n },\n\n /**\n * Persist rooms /sync data along with the next batch token.\n * @param {string} nextBatch The next_batch /sync value.\n * @param {Object} roomsData The 'rooms' /sync data from a SyncAccumulator\n * @param {Object} groupsData The 'groups' /sync data from a SyncAccumulator\n * @return {Promise} Resolves if the data was persisted.\n */\n _persistSyncData: function _persistSyncData(nextBatch, roomsData, groupsData) {\n var _this6 = this;\n\n console.log(\"Persisting sync data up to \", nextBatch);\n return _bluebird2.default.try(function () {\n var txn = _this6.db.transaction([\"sync\"], \"readwrite\");\n var store = txn.objectStore(\"sync\");\n store.put({\n clobber: \"-\", // constant key so will always clobber\n nextBatch: nextBatch,\n roomsData: roomsData,\n groupsData: groupsData\n }); // put == UPSERT\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Persist a list of account data events. Events with the same 'type' will\n * be replaced.\n * @param {Object[]} accountData An array of raw user-scoped account data events\n * @return {Promise} Resolves if the events were persisted.\n */\n _persistAccountData: function _persistAccountData(accountData) {\n var _this7 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this7.db.transaction([\"accountData\"], \"readwrite\");\n var store = txn.objectStore(\"accountData\");\n for (var i = 0; i < accountData.length; i++) {\n store.put(accountData[i]); // put == UPSERT\n }\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Persist a list of [user id, presence event] they are for.\n * Users with the same 'userId' will be replaced.\n * Presence events should be the event in its raw form (not the Event\n * object)\n * @param {Object[]} tuples An array of [userid, event] tuples\n * @return {Promise} Resolves if the users were persisted.\n */\n _persistUserPresenceEvents: function _persistUserPresenceEvents(tuples) {\n var _this8 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this8.db.transaction([\"users\"], \"readwrite\");\n var store = txn.objectStore(\"users\");\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(tuples), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var tuple = _step.value;\n\n store.put({\n userId: tuple[0],\n event: tuple[1]\n }); // put == UPSERT\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Load all user presence events from the database. This is not cached.\n * FIXME: It would probably be more sensible to store the events in the\n * sync.\n * @return {Promise<Object[]>} A list of presence events in their raw form.\n */\n getUserPresenceEvents: function getUserPresenceEvents() {\n var _this9 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this9.db.transaction([\"users\"], \"readonly\");\n var store = txn.objectStore(\"users\");\n return selectQuery(store, undefined, function (cursor) {\n return [cursor.value.userId, cursor.value.event];\n });\n });\n },\n\n /**\n * Load all the account data events from the database. This is not cached.\n * @return {Promise<Object[]>} A list of raw global account events.\n */\n _loadAccountData: function _loadAccountData() {\n var _this10 = this;\n\n console.log(\"LocalIndexedDBStoreBackend: loading account data...\");\n return _bluebird2.default.try(function () {\n var txn = _this10.db.transaction([\"accountData\"], \"readonly\");\n var store = txn.objectStore(\"accountData\");\n return selectQuery(store, undefined, function (cursor) {\n return cursor.value;\n }).then(function (result) {\n console.log(\"LocalIndexedDBStoreBackend: loaded account data\");\n return result;\n });\n });\n },\n\n /**\n * Load the sync data from the database.\n * @return {Promise<Object>} An object with \"roomsData\" and \"nextBatch\" keys.\n */\n _loadSyncData: function _loadSyncData() {\n var _this11 = this;\n\n console.log(\"LocalIndexedDBStoreBackend: loading sync data...\");\n return _bluebird2.default.try(function () {\n var txn = _this11.db.transaction([\"sync\"], \"readonly\");\n var store = txn.objectStore(\"sync\");\n return selectQuery(store, undefined, function (cursor) {\n return cursor.value;\n }).then(function (results) {\n console.log(\"LocalIndexedDBStoreBackend: loaded sync data\");\n if (results.length > 1) {\n console.warn(\"loadSyncData: More than 1 sync row found.\");\n }\n return results.length > 0 ? results[0] : {};\n });\n });\n },\n\n getClientOptions: function getClientOptions() {\n var _this12 = this;\n\n return _bluebird2.default.resolve().then(function () {\n var txn = _this12.db.transaction([\"client_options\"], \"readonly\");\n var store = txn.objectStore(\"client_options\");\n return selectQuery(store, undefined, function (cursor) {\n if (cursor.value && cursor.value && cursor.value.options) {\n return cursor.value.options;\n }\n }).then(function (results) {\n return results[0];\n });\n });\n },\n\n storeClientOptions: function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(options) {\n var txn, store;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n txn = this.db.transaction([\"client_options\"], \"readwrite\");\n store = txn.objectStore(\"client_options\");\n\n store.put({\n clobber: \"-\", // constant key so will always clobber\n options: options\n }); // put == UPSERT\n _context3.next = 5;\n return (0, _bluebird.resolve)(txnAsPromise(txn));\n\n case 5:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function storeClientOptions(_x4) {\n return _ref7.apply(this, arguments);\n }\n\n return storeClientOptions;\n }()\n};\n\nexports.default = LocalIndexedDBStoreBackend;\n//# sourceMappingURL=indexeddb-local-backend.js.map","var hide = require('./_hide');\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _utils = require('../../utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Internal module. in-memory storage for e2e.\n *\n * @module\n */\n\n/**\n * @implements {module:crypto/store/base~CryptoStore}\n */\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MemoryCryptoStore = function () {\n function MemoryCryptoStore() {\n (0, _classCallCheck3.default)(this, MemoryCryptoStore);\n\n this._outgoingRoomKeyRequests = [];\n this._account = null;\n\n // Map of {devicekey -> {sessionId -> session pickle}}\n this._sessions = {};\n // Map of {senderCurve25519Key+'/'+sessionId -> session data object}\n this._inboundGroupSessions = {};\n // Opaque device data object\n this._deviceData = null;\n // roomId -> Opaque roomInfo object\n this._rooms = {};\n }\n\n /**\n * Delete all data from this store.\n *\n * @returns {Promise} Promise which resolves when the store has been cleared.\n */\n\n\n (0, _createClass3.default)(MemoryCryptoStore, [{\n key: 'deleteAllData',\n value: function deleteAllData() {\n return _bluebird2.default.resolve();\n }\n\n /**\n * Look for an existing outgoing room key request, and if none is found,\n * add a new one\n *\n * @param {module:crypto/store/base~OutgoingRoomKeyRequest} request\n *\n * @returns {Promise} resolves to\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}: either the\n * same instance as passed in, or the existing one.\n */\n\n }, {\n key: 'getOrAddOutgoingRoomKeyRequest',\n value: function getOrAddOutgoingRoomKeyRequest(request) {\n var _this = this;\n\n var requestBody = request.requestBody;\n\n return _bluebird2.default.try(function () {\n // first see if we already have an entry for this request.\n var existing = _this._getOutgoingRoomKeyRequest(requestBody);\n\n if (existing) {\n // this entry matches the request - return it.\n console.log('already have key request outstanding for ' + (requestBody.room_id + ' / ' + requestBody.session_id + ': ') + 'not sending another');\n return existing;\n }\n\n // we got to the end of the list without finding a match\n // - add the new request.\n console.log('enqueueing key request for ' + requestBody.room_id + ' / ' + requestBody.session_id);\n _this._outgoingRoomKeyRequests.push(request);\n return request;\n });\n }\n\n /**\n * Look for an existing room key request\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * existing request to look for\n *\n * @return {Promise} resolves to the matching\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * not found\n */\n\n }, {\n key: 'getOutgoingRoomKeyRequest',\n value: function getOutgoingRoomKeyRequest(requestBody) {\n return _bluebird2.default.resolve(this._getOutgoingRoomKeyRequest(requestBody));\n }\n\n /**\n * Looks for existing room key request, and returns the result synchronously.\n *\n * @internal\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * existing request to look for\n *\n * @return {module:crypto/store/base~OutgoingRoomKeyRequest?}\n * the matching request, or null if not found\n */\n\n }, {\n key: '_getOutgoingRoomKeyRequest',\n value: function _getOutgoingRoomKeyRequest(requestBody) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this._outgoingRoomKeyRequests), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var existing = _step.value;\n\n if (_utils2.default.deepCompare(existing.requestBody, requestBody)) {\n return existing;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Look for room key requests by state\n *\n * @param {Array<Number>} wantedStates list of acceptable states\n *\n * @return {Promise} resolves to the a\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * there are no pending requests in those states\n */\n\n }, {\n key: 'getOutgoingRoomKeyRequestByState',\n value: function getOutgoingRoomKeyRequestByState(wantedStates) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(this._outgoingRoomKeyRequests), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var req = _step2.value;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(wantedStates), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var state = _step3.value;\n\n if (req.state === state) {\n return _bluebird2.default.resolve(req);\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return _bluebird2.default.resolve(null);\n }\n\n /**\n * Look for an existing room key request by id and state, and update it if\n * found\n *\n * @param {string} requestId ID of request to update\n * @param {number} expectedState state we expect to find the request in\n * @param {Object} updates name/value map of updates to apply\n *\n * @returns {Promise} resolves to\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}\n * updated request, or null if no matching row was found\n */\n\n }, {\n key: 'updateOutgoingRoomKeyRequest',\n value: function updateOutgoingRoomKeyRequest(requestId, expectedState, updates) {\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)(this._outgoingRoomKeyRequests), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var req = _step4.value;\n\n if (req.requestId !== requestId) {\n continue;\n }\n\n if (req.state != expectedState) {\n console.warn('Cannot update room key request from ' + expectedState + ' ' + ('as it was already updated to ' + req.state));\n return _bluebird2.default.resolve(null);\n }\n (0, _assign2.default)(req, updates);\n return _bluebird2.default.resolve(req);\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n return _bluebird2.default.resolve(null);\n }\n\n /**\n * Look for an existing room key request by id and state, and delete it if\n * found\n *\n * @param {string} requestId ID of request to update\n * @param {number} expectedState state we expect to find the request in\n *\n * @returns {Promise} resolves once the operation is completed\n */\n\n }, {\n key: 'deleteOutgoingRoomKeyRequest',\n value: function deleteOutgoingRoomKeyRequest(requestId, expectedState) {\n for (var i = 0; i < this._outgoingRoomKeyRequests.length; i++) {\n var req = this._outgoingRoomKeyRequests[i];\n\n if (req.requestId !== requestId) {\n continue;\n }\n\n if (req.state != expectedState) {\n console.warn('Cannot delete room key request in state ' + req.state + ' ' + ('(expected ' + expectedState + ')'));\n return _bluebird2.default.resolve(null);\n }\n\n this._outgoingRoomKeyRequests.splice(i, 1);\n return _bluebird2.default.resolve(req);\n }\n\n return _bluebird2.default.resolve(null);\n }\n\n // Olm Account\n\n }, {\n key: 'getAccount',\n value: function getAccount(txn, func) {\n func(this._account);\n }\n }, {\n key: 'storeAccount',\n value: function storeAccount(txn, newData) {\n this._account = newData;\n }\n\n // Olm Sessions\n\n }, {\n key: 'countEndToEndSessions',\n value: function countEndToEndSessions(txn, func) {\n return (0, _keys2.default)(this._sessions).length;\n }\n }, {\n key: 'getEndToEndSession',\n value: function getEndToEndSession(deviceKey, sessionId, txn, func) {\n var deviceSessions = this._sessions[deviceKey] || {};\n func(deviceSessions[sessionId] || null);\n }\n }, {\n key: 'getEndToEndSessions',\n value: function getEndToEndSessions(deviceKey, txn, func) {\n func(this._sessions[deviceKey] || {});\n }\n }, {\n key: 'storeEndToEndSession',\n value: function storeEndToEndSession(deviceKey, sessionId, session, txn) {\n var deviceSessions = this._sessions[deviceKey];\n if (deviceSessions === undefined) {\n deviceSessions = {};\n this._sessions[deviceKey] = deviceSessions;\n }\n deviceSessions[sessionId] = session;\n }\n\n // Inbound Group Sessions\n\n }, {\n key: 'getEndToEndInboundGroupSession',\n value: function getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func) {\n func(this._inboundGroupSessions[senderCurve25519Key + '/' + sessionId] || null);\n }\n }, {\n key: 'getAllEndToEndInboundGroupSessions',\n value: function getAllEndToEndInboundGroupSessions(txn, func) {\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = (0, _getIterator3.default)((0, _keys2.default)(this._inboundGroupSessions)), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var key = _step5.value;\n\n // we can't use split, as the components we are trying to split out\n // might themselves contain '/' characters. We rely on the\n // senderKey being a (32-byte) curve25519 key, base64-encoded\n // (hence 43 characters long).\n\n func({\n senderKey: key.substr(0, 43),\n sessionId: key.substr(44),\n sessionData: this._inboundGroupSessions[key]\n });\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n\n func(null);\n }\n }, {\n key: 'addEndToEndInboundGroupSession',\n value: function addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n var k = senderCurve25519Key + '/' + sessionId;\n if (this._inboundGroupSessions[k] === undefined) {\n this._inboundGroupSessions[k] = sessionData;\n }\n }\n }, {\n key: 'storeEndToEndInboundGroupSession',\n value: function storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n this._inboundGroupSessions[senderCurve25519Key + '/' + sessionId] = sessionData;\n }\n\n // Device Data\n\n }, {\n key: 'getEndToEndDeviceData',\n value: function getEndToEndDeviceData(txn, func) {\n func(this._deviceData);\n }\n }, {\n key: 'storeEndToEndDeviceData',\n value: function storeEndToEndDeviceData(deviceData, txn) {\n this._deviceData = deviceData;\n }\n\n // E2E rooms\n\n }, {\n key: 'storeEndToEndRoom',\n value: function storeEndToEndRoom(roomId, roomInfo, txn) {\n this._rooms[roomId] = roomInfo;\n }\n }, {\n key: 'getEndToEndRooms',\n value: function getEndToEndRooms(txn, func) {\n func(this._rooms);\n }\n }, {\n key: 'doTxn',\n value: function doTxn(mode, stores, func) {\n return _bluebird2.default.resolve(func(null));\n }\n }]);\n return MemoryCryptoStore;\n}();\n\nexports.default = MemoryCryptoStore;\n//# sourceMappingURL=memory-crypto-store.js.map","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/room-member\n */\n\nvar EventEmitter = require(\"events\").EventEmitter;\nvar ContentRepo = require(\"../content-repo\");\n\nvar utils = require(\"../utils\");\n\n/**\n * Construct a new room member.\n *\n * @constructor\n * @alias module:models/room-member\n *\n * @param {string} roomId The room ID of the member.\n * @param {string} userId The user ID of the member.\n * @prop {string} roomId The room ID for this member.\n * @prop {string} userId The user ID of this member.\n * @prop {boolean} typing True if the room member is currently typing.\n * @prop {string} name The human-readable name for this room member. This will be\n * disambiguated with a suffix of \" (@user_id:matrix.org)\" if another member shares the\n * same displayname.\n * @prop {string} rawDisplayName The ambiguous displayname of this room member.\n * @prop {Number} powerLevel The power level for this room member.\n * @prop {Number} powerLevelNorm The normalised power level (0-100) for this\n * room member.\n * @prop {User} user The User object for this room member, if one exists.\n * @prop {string} membership The membership state for this room member e.g. 'join'.\n * @prop {Object} events The events describing this RoomMember.\n * @prop {MatrixEvent} events.member The m.room.member event for this RoomMember.\n */\nfunction RoomMember(roomId, userId) {\n this.roomId = roomId;\n this.userId = userId;\n this.typing = false;\n this.name = userId;\n this.rawDisplayName = userId;\n this.powerLevel = 0;\n this.powerLevelNorm = 0;\n this.user = null;\n this.membership = null;\n this.events = {\n member: null\n };\n this._isOutOfBand = false;\n this._updateModifiedTime();\n}\nutils.inherits(RoomMember, EventEmitter);\n\n/**\n * Mark the member as coming from a channel that is not sync\n */\nRoomMember.prototype.markOutOfBand = function () {\n this._isOutOfBand = true;\n};\n\n/**\n * @return {bool} does the member come from a channel that is not sync?\n * This is used to store the member seperately\n * from the sync state so it available across browser sessions.\n */\nRoomMember.prototype.isOutOfBand = function () {\n return this._isOutOfBand;\n};\n\n/**\n * Update this room member's membership event. May fire \"RoomMember.name\" if\n * this event updates this member's name.\n * @param {MatrixEvent} event The <code>m.room.member</code> event\n * @param {RoomState} roomState Optional. The room state to take into account\n * when calculating (e.g. for disambiguating users with the same name).\n * @fires module:client~MatrixClient#event:\"RoomMember.name\"\n * @fires module:client~MatrixClient#event:\"RoomMember.membership\"\n */\nRoomMember.prototype.setMembershipEvent = function (event, roomState) {\n if (event.getType() !== \"m.room.member\") {\n return;\n }\n\n this._isOutOfBand = false;\n\n this.events.member = event;\n\n var oldMembership = this.membership;\n this.membership = event.getDirectionalContent().membership;\n\n var oldName = this.name;\n this.name = calculateDisplayName(this.userId, event.getDirectionalContent().displayname, roomState);\n\n this.rawDisplayName = event.getDirectionalContent().displayname || this.userId;\n if (oldMembership !== this.membership) {\n this._updateModifiedTime();\n this.emit(\"RoomMember.membership\", event, this, oldMembership);\n }\n if (oldName !== this.name) {\n this._updateModifiedTime();\n this.emit(\"RoomMember.name\", event, this, oldName);\n }\n};\n\n/**\n * Update this room member's power level event. May fire\n * \"RoomMember.powerLevel\" if this event updates this member's power levels.\n * @param {MatrixEvent} powerLevelEvent The <code>m.room.power_levels</code>\n * event\n * @fires module:client~MatrixClient#event:\"RoomMember.powerLevel\"\n */\nRoomMember.prototype.setPowerLevelEvent = function (powerLevelEvent) {\n if (powerLevelEvent.getType() !== \"m.room.power_levels\") {\n return;\n }\n\n var evContent = powerLevelEvent.getDirectionalContent();\n\n var maxLevel = evContent.users_default || 0;\n utils.forEach(utils.values(evContent.users), function (lvl) {\n maxLevel = Math.max(maxLevel, lvl);\n });\n var oldPowerLevel = this.powerLevel;\n var oldPowerLevelNorm = this.powerLevelNorm;\n\n if (evContent.users && evContent.users[this.userId] !== undefined) {\n this.powerLevel = evContent.users[this.userId];\n } else if (evContent.users_default !== undefined) {\n this.powerLevel = evContent.users_default;\n } else {\n this.powerLevel = 0;\n }\n this.powerLevelNorm = 0;\n if (maxLevel > 0) {\n this.powerLevelNorm = this.powerLevel * 100 / maxLevel;\n }\n\n // emit for changes in powerLevelNorm as well (since the app will need to\n // redraw everyone's level if the max has changed)\n if (oldPowerLevel !== this.powerLevel || oldPowerLevelNorm !== this.powerLevelNorm) {\n this._updateModifiedTime();\n this.emit(\"RoomMember.powerLevel\", powerLevelEvent, this);\n }\n};\n\n/**\n * Update this room member's typing event. May fire \"RoomMember.typing\" if\n * this event changes this member's typing state.\n * @param {MatrixEvent} event The typing event\n * @fires module:client~MatrixClient#event:\"RoomMember.typing\"\n */\nRoomMember.prototype.setTypingEvent = function (event) {\n if (event.getType() !== \"m.typing\") {\n return;\n }\n var oldTyping = this.typing;\n this.typing = false;\n var typingList = event.getContent().user_ids;\n if (!utils.isArray(typingList)) {\n // malformed event :/ bail early. TODO: whine?\n return;\n }\n if (typingList.indexOf(this.userId) !== -1) {\n this.typing = true;\n }\n if (oldTyping !== this.typing) {\n this._updateModifiedTime();\n this.emit(\"RoomMember.typing\", event, this);\n }\n};\n\n/**\n * Update the last modified time to the current time.\n */\nRoomMember.prototype._updateModifiedTime = function () {\n this._modified = Date.now();\n};\n\n/**\n * Get the timestamp when this RoomMember was last updated. This timestamp is\n * updated when properties on this RoomMember are updated.\n * It is updated <i>before</i> firing events.\n * @return {number} The timestamp\n */\nRoomMember.prototype.getLastModifiedTime = function () {\n return this._modified;\n};\n\nRoomMember.prototype.isKicked = function () {\n return this.membership === \"leave\" && this.events.member.getSender() !== this.events.member.getStateKey();\n};\n\n/**\n * If this member was invited with the is_direct flag set, return\n * the user that invited this member\n * @return {string} user id of the inviter\n */\nRoomMember.prototype.getDMInviter = function () {\n // when not available because that room state hasn't been loaded in,\n // we don't really know, but more likely to not be a direct chat\n if (this.events.member) {\n // TODO: persist the is_direct flag on the member as more member events\n // come in caused by displayName changes.\n\n // the is_direct flag is set on the invite member event.\n // This is copied on the prev_content section of the join member event\n // when the invite is accepted.\n\n var memberEvent = this.events.member;\n var memberContent = memberEvent.getContent();\n var inviteSender = memberEvent.getSender();\n\n if (memberContent.membership === \"join\") {\n memberContent = memberEvent.getPrevContent();\n inviteSender = memberEvent.getUnsigned().prev_sender;\n }\n\n if (memberContent.membership === \"invite\" && memberContent.is_direct) {\n return inviteSender;\n }\n }\n};\n\n/**\n * Get the avatar URL for a room member.\n * @param {string} baseUrl The base homeserver URL See\n * {@link module:client~MatrixClient#getHomeserverUrl}.\n * @param {Number} width The desired width of the thumbnail.\n * @param {Number} height The desired height of the thumbnail.\n * @param {string} resizeMethod The thumbnail resize method to use, either\n * \"crop\" or \"scale\".\n * @param {Boolean} allowDefault (optional) Passing false causes this method to\n * return null if the user has no avatar image. Otherwise, a default image URL\n * will be returned. Default: true.\n * @param {Boolean} allowDirectLinks (optional) If true, the avatar URL will be\n * returned even if it is a direct hyperlink rather than a matrix content URL.\n * If false, any non-matrix content URLs will be ignored. Setting this option to\n * true will expose URLs that, if fetched, will leak information about the user\n * to anyone who they share a room with.\n * @return {?string} the avatar URL or null.\n */\nRoomMember.prototype.getAvatarUrl = function (baseUrl, width, height, resizeMethod, allowDefault, allowDirectLinks) {\n if (allowDefault === undefined) {\n allowDefault = true;\n }\n\n var rawUrl = this.getMxcAvatarUrl();\n\n if (!rawUrl && !allowDefault) {\n return null;\n }\n var httpUrl = ContentRepo.getHttpUriForMxc(baseUrl, rawUrl, width, height, resizeMethod, allowDirectLinks);\n if (httpUrl) {\n return httpUrl;\n } else if (allowDefault) {\n return ContentRepo.getIdenticonUri(baseUrl, this.userId, width, height);\n }\n return null;\n};\n/**\n * get the mxc avatar url, either from a state event, or from a lazily loaded member\n * @return {string} the mxc avatar url\n */\nRoomMember.prototype.getMxcAvatarUrl = function () {\n if (this.events.member) {\n return this.events.member.getDirectionalContent().avatar_url;\n } else if (this.user) {\n return this.user.avatarUrl;\n }\n return null;\n};\n\nfunction calculateDisplayName(selfUserId, displayName, roomState) {\n if (!displayName || displayName === selfUserId) {\n return selfUserId;\n }\n\n if (!roomState) {\n return displayName;\n }\n\n // First check if the displayname is something we consider truthy\n // after stripping it of zero width characters and padding spaces\n var strippedDisplayName = utils.removeHiddenChars(displayName);\n if (!strippedDisplayName) {\n return selfUserId;\n }\n\n // Next check if the name contains something that look like a mxid\n // If it does, it may be someone trying to impersonate someone else\n // Show full mxid in this case\n // Also show mxid if there are other people with the same displayname\n // ignoring any zero width chars (unicode 200B-200D)\n // if their displayname is made up of just zero width chars, show full mxid\n var disambiguate = /@.+:.+/.test(displayName);\n if (!disambiguate) {\n var userIds = roomState.getUserIdsWithDisplayName(strippedDisplayName);\n disambiguate = userIds.some(function (u) {\n return u !== selfUserId;\n });\n }\n\n if (disambiguate) {\n return displayName + \" (\" + selfUserId + \")\";\n }\n return displayName;\n}\n\n/**\n * The RoomMember class.\n */\nmodule.exports = RoomMember;\n\n/**\n * Fires whenever any room member's name changes.\n * @event module:client~MatrixClient#\"RoomMember.name\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomMember} member The member whose RoomMember.name changed.\n * @param {string?} oldName The previous name. Null if the member didn't have a\n * name previously.\n * @example\n * matrixClient.on(\"RoomMember.name\", function(event, member){\n * var newName = member.name;\n * });\n */\n\n/**\n * Fires whenever any room member's membership state changes.\n * @event module:client~MatrixClient#\"RoomMember.membership\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomMember} member The member whose RoomMember.membership changed.\n * @param {string?} oldMembership The previous membership state. Null if it's a\n * new member.\n * @example\n * matrixClient.on(\"RoomMember.membership\", function(event, member, oldMembership){\n * var newState = member.membership;\n * });\n */\n\n/**\n * Fires whenever any room member's typing state changes.\n * @event module:client~MatrixClient#\"RoomMember.typing\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomMember} member The member whose RoomMember.typing changed.\n * @example\n * matrixClient.on(\"RoomMember.typing\", function(event, member){\n * var isTyping = member.typing;\n * });\n */\n\n/**\n * Fires whenever any room member's power level changes.\n * @event module:client~MatrixClient#\"RoomMember.powerLevel\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomMember} member The member whose RoomMember.powerLevel changed.\n * @example\n * matrixClient.on(\"RoomMember.powerLevel\", function(event, member){\n * var newPowerLevel = member.powerLevel;\n * var newNormPowerLevel = member.powerLevelNorm;\n * });\n */\n//# sourceMappingURL=room-member.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module filter\n */\n\nvar FilterComponent = require(\"./filter-component\");\n\n/**\n * @param {Object} obj\n * @param {string} keyNesting\n * @param {*} val\n */\nfunction setProp(obj, keyNesting, val) {\n var nestedKeys = keyNesting.split(\".\");\n var currentObj = obj;\n for (var i = 0; i < nestedKeys.length - 1; i++) {\n if (!currentObj[nestedKeys[i]]) {\n currentObj[nestedKeys[i]] = {};\n }\n currentObj = currentObj[nestedKeys[i]];\n }\n currentObj[nestedKeys[nestedKeys.length - 1]] = val;\n}\n\n/**\n * Construct a new Filter.\n * @constructor\n * @param {string} userId The user ID for this filter.\n * @param {string=} filterId The filter ID if known.\n * @prop {string} userId The user ID of the filter\n * @prop {?string} filterId The filter ID\n */\nfunction Filter(userId, filterId) {\n this.userId = userId;\n this.filterId = filterId;\n this.definition = {};\n}\n\nFilter.LAZY_LOADING_MESSAGES_FILTER = {\n lazy_load_members: true\n};\n\nFilter.LAZY_LOADING_SYNC_FILTER = {\n room: {\n state: Filter.LAZY_LOADING_MESSAGES_FILTER\n }\n};\n\n/**\n * Get the ID of this filter on your homeserver (if known)\n * @return {?Number} The filter ID\n */\nFilter.prototype.getFilterId = function () {\n return this.filterId;\n};\n\n/**\n * Get the JSON body of the filter.\n * @return {Object} The filter definition\n */\nFilter.prototype.getDefinition = function () {\n return this.definition;\n};\n\n/**\n * Set the JSON body of the filter\n * @param {Object} definition The filter definition\n */\nFilter.prototype.setDefinition = function (definition) {\n this.definition = definition;\n\n // This is all ported from synapse's FilterCollection()\n\n // definitions look something like:\n // {\n // \"room\": {\n // \"rooms\": [\"!abcde:example.com\"],\n // \"not_rooms\": [\"!123456:example.com\"],\n // \"state\": {\n // \"types\": [\"m.room.*\"],\n // \"not_rooms\": [\"!726s6s6q:example.com\"],\n // },\n // \"timeline\": {\n // \"limit\": 10,\n // \"types\": [\"m.room.message\"],\n // \"not_rooms\": [\"!726s6s6q:example.com\"],\n // \"not_senders\": [\"@spam:example.com\"]\n // \"contains_url\": true\n // },\n // \"ephemeral\": {\n // \"types\": [\"m.receipt\", \"m.typing\"],\n // \"not_rooms\": [\"!726s6s6q:example.com\"],\n // \"not_senders\": [\"@spam:example.com\"]\n // }\n // },\n // \"presence\": {\n // \"types\": [\"m.presence\"],\n // \"not_senders\": [\"@alice:example.com\"]\n // },\n // \"event_format\": \"client\",\n // \"event_fields\": [\"type\", \"content\", \"sender\"]\n // }\n\n var room_filter_json = definition.room;\n\n // consider the top level rooms/not_rooms filter\n var room_filter_fields = {};\n if (room_filter_json) {\n if (room_filter_json.rooms) {\n room_filter_fields.rooms = room_filter_json.rooms;\n }\n if (room_filter_json.rooms) {\n room_filter_fields.not_rooms = room_filter_json.not_rooms;\n }\n\n this._include_leave = room_filter_json.include_leave || false;\n }\n\n this._room_filter = new FilterComponent(room_filter_fields);\n this._room_timeline_filter = new FilterComponent(room_filter_json ? room_filter_json.timeline || {} : {});\n\n // don't bother porting this from synapse yet:\n // this._room_state_filter =\n // new FilterComponent(room_filter_json.state || {});\n // this._room_ephemeral_filter =\n // new FilterComponent(room_filter_json.ephemeral || {});\n // this._room_account_data_filter =\n // new FilterComponent(room_filter_json.account_data || {});\n // this._presence_filter =\n // new FilterComponent(definition.presence || {});\n // this._account_data_filter =\n // new FilterComponent(definition.account_data || {});\n};\n\n/**\n * Get the room.timeline filter component of the filter\n * @return {FilterComponent} room timeline filter component\n */\nFilter.prototype.getRoomTimelineFilterComponent = function () {\n return this._room_timeline_filter;\n};\n\n/**\n * Filter the list of events based on whether they are allowed in a timeline\n * based on this filter\n * @param {MatrixEvent[]} events the list of events being filtered\n * @return {MatrixEvent[]} the list of events which match the filter\n */\nFilter.prototype.filterRoomTimeline = function (events) {\n return this._room_timeline_filter.filter(this._room_filter.filter(events));\n};\n\n/**\n * Set the max number of events to return for each room's timeline.\n * @param {Number} limit The max number of events to return for each room.\n */\nFilter.prototype.setTimelineLimit = function (limit) {\n setProp(this.definition, \"room.timeline.limit\", limit);\n};\n\n/**\n * Control whether left rooms should be included in responses.\n * @param {boolean} includeLeave True to make rooms the user has left appear\n * in responses.\n */\nFilter.prototype.setIncludeLeaveRooms = function (includeLeave) {\n setProp(this.definition, \"room.include_leave\", includeLeave);\n};\n\n/**\n * Create a filter from existing data.\n * @static\n * @param {string} userId\n * @param {string} filterId\n * @param {Object} jsonObj\n * @return {Filter}\n */\nFilter.fromJson = function (userId, filterId, jsonObj) {\n var filter = new Filter(userId, filterId);\n filter.setDefinition(jsonObj);\n return filter;\n};\n\n/** The Filter class */\nmodule.exports = Filter;\n//# sourceMappingURL=filter.js.map","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/event-timeline-set\n */\n\nvar EventEmitter = require(\"events\").EventEmitter;\nvar utils = require(\"../utils\");\nvar EventTimeline = require(\"./event-timeline\");\n\n// var DEBUG = false;\nvar DEBUG = true;\n\nvar debuglog = void 0;\nif (DEBUG) {\n // using bind means that we get to keep useful line numbers in the console\n debuglog = console.log.bind(console);\n} else {\n debuglog = function debuglog() {};\n}\n\n/**\n * Construct a set of EventTimeline objects, typically on behalf of a given\n * room. A room may have multiple EventTimelineSets for different levels\n * of filtering. The global notification list is also an EventTimelineSet, but\n * lacks a room.\n *\n * <p>This is an ordered sequence of timelines, which may or may not\n * be continuous. Each timeline lists a series of events, as well as tracking\n * the room state at the start and the end of the timeline (if appropriate).\n * It also tracks forward and backward pagination tokens, as well as containing\n * links to the next timeline in the sequence.\n *\n * <p>There is one special timeline - the 'live' timeline, which represents the\n * timeline to which events are being added in real-time as they are received\n * from the /sync API. Note that you should not retain references to this\n * timeline - even if it is the current timeline right now, it may not remain\n * so if the server gives us a timeline gap in /sync.\n *\n * <p>In order that we can find events from their ids later, we also maintain a\n * map from event_id to timeline and index.\n *\n * @constructor\n * @param {?Room} room the optional room for this timelineSet\n * @param {Object} opts hash of options inherited from Room.\n * opts.timelineSupport gives whether timeline support is enabled\n * opts.filter is the filter object, if any, for this timelineSet.\n */\nfunction EventTimelineSet(room, opts) {\n this.room = room;\n\n this._timelineSupport = Boolean(opts.timelineSupport);\n this._liveTimeline = new EventTimeline(this);\n\n // just a list - *not* ordered.\n this._timelines = [this._liveTimeline];\n this._eventIdToTimeline = {};\n\n this._filter = opts.filter || null;\n}\nutils.inherits(EventTimelineSet, EventEmitter);\n\n/**\n * Get the filter object this timeline set is filtered on, if any\n * @return {?Filter} the optional filter for this timelineSet\n */\nEventTimelineSet.prototype.getFilter = function () {\n return this._filter;\n};\n\n/**\n * Set the filter object this timeline set is filtered on\n * (passed to the server when paginating via /messages).\n * @param {Filter} filter the filter for this timelineSet\n */\nEventTimelineSet.prototype.setFilter = function (filter) {\n this._filter = filter;\n};\n\n/**\n * Get the list of pending sent events for this timelineSet's room, filtered\n * by the timelineSet's filter if appropriate.\n *\n * @return {module:models/event.MatrixEvent[]} A list of the sent events\n * waiting for remote echo.\n *\n * @throws If <code>opts.pendingEventOrdering</code> was not 'detached'\n */\nEventTimelineSet.prototype.getPendingEvents = function () {\n if (!this.room) {\n return [];\n }\n\n if (this._filter) {\n return this._filter.filterRoomTimeline(this.room.getPendingEvents());\n } else {\n return this.room.getPendingEvents();\n }\n};\n\n/**\n * Get the live timeline for this room.\n *\n * @return {module:models/event-timeline~EventTimeline} live timeline\n */\nEventTimelineSet.prototype.getLiveTimeline = function () {\n return this._liveTimeline;\n};\n\n/**\n * Return the timeline (if any) this event is in.\n * @param {String} eventId the eventId being sought\n * @return {module:models/event-timeline~EventTimeline} timeline\n */\nEventTimelineSet.prototype.eventIdToTimeline = function (eventId) {\n return this._eventIdToTimeline[eventId];\n};\n\n/**\n * Track a new event as if it were in the same timeline as an old event,\n * replacing it.\n * @param {String} oldEventId event ID of the original event\n * @param {String} newEventId event ID of the replacement event\n */\nEventTimelineSet.prototype.replaceEventId = function (oldEventId, newEventId) {\n var existingTimeline = this._eventIdToTimeline[oldEventId];\n if (existingTimeline) {\n delete this._eventIdToTimeline[oldEventId];\n this._eventIdToTimeline[newEventId] = existingTimeline;\n }\n};\n\n/**\n * Reset the live timeline, and start a new one.\n *\n * <p>This is used when /sync returns a 'limited' timeline.\n *\n * @param {string=} backPaginationToken token for back-paginating the new timeline\n * @param {string=} forwardPaginationToken token for forward-paginating the old live timeline,\n * if absent or null, all timelines are reset.\n *\n * @fires module:client~MatrixClient#event:\"Room.timelineReset\"\n */\nEventTimelineSet.prototype.resetLiveTimeline = function (backPaginationToken, forwardPaginationToken) {\n // Each EventTimeline has RoomState objects tracking the state at the start\n // and end of that timeline. The copies at the end of the live timeline are\n // special because they will have listeners attached to monitor changes to\n // the current room state, so we move this RoomState from the end of the\n // current live timeline to the end of the new one and, if necessary,\n // replace it with a newly created one. We also make a copy for the start\n // of the new timeline.\n\n // if timeline support is disabled, forget about the old timelines\n var resetAllTimelines = !this._timelineSupport || !forwardPaginationToken;\n\n var oldTimeline = this._liveTimeline;\n var newTimeline = resetAllTimelines ? oldTimeline.forkLive(EventTimeline.FORWARDS) : oldTimeline.fork(EventTimeline.FORWARDS);\n\n if (resetAllTimelines) {\n this._timelines = [newTimeline];\n this._eventIdToTimeline = {};\n } else {\n this._timelines.push(newTimeline);\n }\n\n if (forwardPaginationToken) {\n // Now set the forward pagination token on the old live timeline\n // so it can be forward-paginated.\n oldTimeline.setPaginationToken(forwardPaginationToken, EventTimeline.FORWARDS);\n }\n\n // make sure we set the pagination token before firing timelineReset,\n // otherwise clients which start back-paginating will fail, and then get\n // stuck without realising that they *can* back-paginate.\n newTimeline.setPaginationToken(backPaginationToken, EventTimeline.BACKWARDS);\n\n // Now we can swap the live timeline to the new one.\n this._liveTimeline = newTimeline;\n this.emit(\"Room.timelineReset\", this.room, this, resetAllTimelines);\n};\n\n/**\n * Get the timeline which contains the given event, if any\n *\n * @param {string} eventId event ID to look for\n * @return {?module:models/event-timeline~EventTimeline} timeline containing\n * the given event, or null if unknown\n */\nEventTimelineSet.prototype.getTimelineForEvent = function (eventId) {\n var res = this._eventIdToTimeline[eventId];\n return res === undefined ? null : res;\n};\n\n/**\n * Get an event which is stored in our timelines\n *\n * @param {string} eventId event ID to look for\n * @return {?module:models/event~MatrixEvent} the given event, or undefined if unknown\n */\nEventTimelineSet.prototype.findEventById = function (eventId) {\n var tl = this.getTimelineForEvent(eventId);\n if (!tl) {\n return undefined;\n }\n return utils.findElement(tl.getEvents(), function (ev) {\n return ev.getId() == eventId;\n });\n};\n\n/**\n * Add a new timeline to this timeline list\n *\n * @return {module:models/event-timeline~EventTimeline} newly-created timeline\n */\nEventTimelineSet.prototype.addTimeline = function () {\n if (!this._timelineSupport) {\n throw new Error(\"timeline support is disabled. Set the 'timelineSupport'\" + \" parameter to true when creating MatrixClient to enable\" + \" it.\");\n }\n\n var timeline = new EventTimeline(this);\n this._timelines.push(timeline);\n return timeline;\n};\n\n/**\n * Add events to a timeline\n *\n * <p>Will fire \"Room.timeline\" for each event added.\n *\n * @param {MatrixEvent[]} events A list of events to add.\n *\n * @param {boolean} toStartOfTimeline True to add these events to the start\n * (oldest) instead of the end (newest) of the timeline. If true, the oldest\n * event will be the <b>last</b> element of 'events'.\n *\n * @param {module:models/event-timeline~EventTimeline} timeline timeline to\n * add events to.\n *\n * @param {string=} paginationToken token for the next batch of events\n *\n * @fires module:client~MatrixClient#event:\"Room.timeline\"\n *\n */\nEventTimelineSet.prototype.addEventsToTimeline = function (events, toStartOfTimeline, timeline, paginationToken) {\n if (!timeline) {\n throw new Error(\"'timeline' not specified for EventTimelineSet.addEventsToTimeline\");\n }\n\n if (!toStartOfTimeline && timeline == this._liveTimeline) {\n throw new Error(\"EventTimelineSet.addEventsToTimeline cannot be used for adding events to \" + \"the live timeline - use Room.addLiveEvents instead\");\n }\n\n if (this._filter) {\n events = this._filter.filterRoomTimeline(events);\n if (!events.length) {\n return;\n }\n }\n\n var direction = toStartOfTimeline ? EventTimeline.BACKWARDS : EventTimeline.FORWARDS;\n var inverseDirection = toStartOfTimeline ? EventTimeline.FORWARDS : EventTimeline.BACKWARDS;\n\n // Adding events to timelines can be quite complicated. The following\n // illustrates some of the corner-cases.\n //\n // Let's say we start by knowing about four timelines. timeline3 and\n // timeline4 are neighbours:\n //\n // timeline1 timeline2 timeline3 timeline4\n // [M] [P] [S] <------> [T]\n //\n // Now we paginate timeline1, and get the following events from the server:\n // [M, N, P, R, S, T, U].\n //\n // 1. First, we ignore event M, since we already know about it.\n //\n // 2. Next, we append N to timeline 1.\n //\n // 3. Next, we don't add event P, since we already know about it,\n // but we do link together the timelines. We now have:\n //\n // timeline1 timeline2 timeline3 timeline4\n // [M, N] <---> [P] [S] <------> [T]\n //\n // 4. Now we add event R to timeline2:\n //\n // timeline1 timeline2 timeline3 timeline4\n // [M, N] <---> [P, R] [S] <------> [T]\n //\n // Note that we have switched the timeline we are working on from\n // timeline1 to timeline2.\n //\n // 5. We ignore event S, but again join the timelines:\n //\n // timeline1 timeline2 timeline3 timeline4\n // [M, N] <---> [P, R] <---> [S] <------> [T]\n //\n // 6. We ignore event T, and the timelines are already joined, so there\n // is nothing to do.\n //\n // 7. Finally, we add event U to timeline4:\n //\n // timeline1 timeline2 timeline3 timeline4\n // [M, N] <---> [P, R] <---> [S] <------> [T, U]\n //\n // The important thing to note in the above is what happened when we\n // already knew about a given event:\n //\n // - if it was appropriate, we joined up the timelines (steps 3, 5).\n // - in any case, we started adding further events to the timeline which\n // contained the event we knew about (steps 3, 5, 6).\n //\n //\n // So much for adding events to the timeline. But what do we want to do\n // with the pagination token?\n //\n // In the case above, we will be given a pagination token which tells us how to\n // get events beyond 'U' - in this case, it makes sense to store this\n // against timeline4. But what if timeline4 already had 'U' and beyond? in\n // that case, our best bet is to throw away the pagination token we were\n // given and stick with whatever token timeline4 had previously. In short,\n // we want to only store the pagination token if the last event we receive\n // is one we didn't previously know about.\n //\n // We make an exception for this if it turns out that we already knew about\n // *all* of the events, and we weren't able to join up any timelines. When\n // that happens, it means our existing pagination token is faulty, since it\n // is only telling us what we already know. Rather than repeatedly\n // paginating with the same token, we might as well use the new pagination\n // token in the hope that we eventually work our way out of the mess.\n\n var didUpdate = false;\n var lastEventWasNew = false;\n for (var i = 0; i < events.length; i++) {\n var event = events[i];\n var eventId = event.getId();\n\n var existingTimeline = this._eventIdToTimeline[eventId];\n\n if (!existingTimeline) {\n // we don't know about this event yet. Just add it to the timeline.\n this.addEventToTimeline(event, timeline, toStartOfTimeline);\n lastEventWasNew = true;\n didUpdate = true;\n continue;\n }\n\n lastEventWasNew = false;\n\n if (existingTimeline == timeline) {\n debuglog(\"Event \" + eventId + \" already in timeline \" + timeline);\n continue;\n }\n\n var neighbour = timeline.getNeighbouringTimeline(direction);\n if (neighbour) {\n // this timeline already has a neighbour in the relevant direction;\n // let's assume the timelines are already correctly linked up, and\n // skip over to it.\n //\n // there's probably some edge-case here where we end up with an\n // event which is in a timeline a way down the chain, and there is\n // a break in the chain somewhere. But I can't really imagine how\n // that would happen, so I'm going to ignore it for now.\n //\n if (existingTimeline == neighbour) {\n debuglog(\"Event \" + eventId + \" in neighbouring timeline - \" + \"switching to \" + existingTimeline);\n } else {\n debuglog(\"Event \" + eventId + \" already in a different \" + \"timeline \" + existingTimeline);\n }\n timeline = existingTimeline;\n continue;\n }\n\n // time to join the timelines.\n console.info(\"Already have timeline for \" + eventId + \" - joining timeline \" + timeline + \" to \" + existingTimeline);\n timeline.setNeighbouringTimeline(existingTimeline, direction);\n existingTimeline.setNeighbouringTimeline(timeline, inverseDirection);\n timeline = existingTimeline;\n didUpdate = true;\n }\n\n // see above - if the last event was new to us, or if we didn't find any\n // new information, we update the pagination token for whatever\n // timeline we ended up on.\n if (lastEventWasNew || !didUpdate) {\n timeline.setPaginationToken(paginationToken, direction);\n }\n};\n\n/**\n * Add an event to the end of this live timeline.\n *\n * @param {MatrixEvent} event Event to be added\n * @param {string?} duplicateStrategy 'ignore' or 'replace'\n */\nEventTimelineSet.prototype.addLiveEvent = function (event, duplicateStrategy) {\n if (this._filter) {\n var events = this._filter.filterRoomTimeline([event]);\n if (!events.length) {\n return;\n }\n }\n\n var timeline = this._eventIdToTimeline[event.getId()];\n if (timeline) {\n if (duplicateStrategy === \"replace\") {\n debuglog(\"EventTimelineSet.addLiveEvent: replacing duplicate event \" + event.getId());\n var tlEvents = timeline.getEvents();\n for (var j = 0; j < tlEvents.length; j++) {\n if (tlEvents[j].getId() === event.getId()) {\n // still need to set the right metadata on this event\n EventTimeline.setEventMetadata(event, timeline.getState(EventTimeline.FORWARDS), false);\n\n if (!tlEvents[j].encryptedType) {\n tlEvents[j] = event;\n }\n\n // XXX: we need to fire an event when this happens.\n break;\n }\n }\n } else {\n debuglog(\"EventTimelineSet.addLiveEvent: ignoring duplicate event \" + event.getId());\n }\n return;\n }\n\n this.addEventToTimeline(event, this._liveTimeline, false);\n};\n\n/**\n * Add event to the given timeline, and emit Room.timeline. Assumes\n * we have already checked we don't know about this event.\n *\n * Will fire \"Room.timeline\" for each event added.\n *\n * @param {MatrixEvent} event\n * @param {EventTimeline} timeline\n * @param {boolean} toStartOfTimeline\n *\n * @fires module:client~MatrixClient#event:\"Room.timeline\"\n */\nEventTimelineSet.prototype.addEventToTimeline = function (event, timeline, toStartOfTimeline) {\n var eventId = event.getId();\n timeline.addEvent(event, toStartOfTimeline);\n this._eventIdToTimeline[eventId] = timeline;\n\n var data = {\n timeline: timeline,\n liveEvent: !toStartOfTimeline && timeline == this._liveTimeline\n };\n this.emit(\"Room.timeline\", event, this.room, Boolean(toStartOfTimeline), false, data);\n};\n\n/**\n * Replaces event with ID oldEventId with one with newEventId, if oldEventId is\n * recognised. Otherwise, add to the live timeline. Used to handle remote echos.\n *\n * @param {MatrixEvent} localEvent the new event to be added to the timeline\n * @param {String} oldEventId the ID of the original event\n * @param {boolean} newEventId the ID of the replacement event\n *\n * @fires module:client~MatrixClient#event:\"Room.timeline\"\n */\nEventTimelineSet.prototype.handleRemoteEcho = function (localEvent, oldEventId, newEventId) {\n // XXX: why don't we infer newEventId from localEvent?\n var existingTimeline = this._eventIdToTimeline[oldEventId];\n if (existingTimeline) {\n delete this._eventIdToTimeline[oldEventId];\n this._eventIdToTimeline[newEventId] = existingTimeline;\n } else {\n if (this._filter) {\n if (this._filter.filterRoomTimeline([localEvent]).length) {\n this.addEventToTimeline(localEvent, this._liveTimeline, false);\n }\n } else {\n this.addEventToTimeline(localEvent, this._liveTimeline, false);\n }\n }\n};\n\n/**\n * Removes a single event from this room.\n *\n * @param {String} eventId The id of the event to remove\n *\n * @return {?MatrixEvent} the removed event, or null if the event was not found\n * in this room.\n */\nEventTimelineSet.prototype.removeEvent = function (eventId) {\n var timeline = this._eventIdToTimeline[eventId];\n if (!timeline) {\n return null;\n }\n\n var removed = timeline.removeEvent(eventId);\n if (removed) {\n delete this._eventIdToTimeline[eventId];\n var data = {\n timeline: timeline\n };\n this.emit(\"Room.timeline\", removed, this.room, undefined, true, data);\n }\n return removed;\n};\n\n/**\n * Determine where two events appear in the timeline relative to one another\n *\n * @param {string} eventId1 The id of the first event\n * @param {string} eventId2 The id of the second event\n\n * @return {?number} a number less than zero if eventId1 precedes eventId2, and\n * greater than zero if eventId1 succeeds eventId2. zero if they are the\n * same event; null if we can't tell (either because we don't know about one\n * of the events, or because they are in separate timelines which don't join\n * up).\n */\nEventTimelineSet.prototype.compareEventOrdering = function (eventId1, eventId2) {\n if (eventId1 == eventId2) {\n // optimise this case\n return 0;\n }\n\n var timeline1 = this._eventIdToTimeline[eventId1];\n var timeline2 = this._eventIdToTimeline[eventId2];\n\n if (timeline1 === undefined) {\n return null;\n }\n if (timeline2 === undefined) {\n return null;\n }\n\n if (timeline1 === timeline2) {\n // both events are in the same timeline - figure out their\n // relative indices\n var idx1 = void 0,\n idx2 = void 0;\n var events = timeline1.getEvents();\n for (var idx = 0; idx < events.length && (idx1 === undefined || idx2 === undefined); idx++) {\n var evId = events[idx].getId();\n if (evId == eventId1) {\n idx1 = idx;\n }\n if (evId == eventId2) {\n idx2 = idx;\n }\n }\n return idx1 - idx2;\n }\n\n // the events are in different timelines. Iterate through the\n // linkedlist to see which comes first.\n\n // first work forwards from timeline1\n var tl = timeline1;\n while (tl) {\n if (tl === timeline2) {\n // timeline1 is before timeline2\n return -1;\n }\n tl = tl.getNeighbouringTimeline(EventTimeline.FORWARDS);\n }\n\n // now try backwards from timeline1\n tl = timeline1;\n while (tl) {\n if (tl === timeline2) {\n // timeline2 is before timeline1\n return 1;\n }\n tl = tl.getNeighbouringTimeline(EventTimeline.BACKWARDS);\n }\n\n // the timelines are not contiguous.\n return null;\n};\n\n/**\n * The EventTimelineSet class.\n */\nmodule.exports = EventTimelineSet;\n\n/**\n * Fires whenever the timeline in a room is updated.\n * @event module:client~MatrixClient#\"Room.timeline\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {?Room} room The room, if any, whose timeline was updated.\n * @param {boolean} toStartOfTimeline True if this event was added to the start\n * @param {boolean} removed True if this event has just been removed from the timeline\n * (beginning; oldest) of the timeline e.g. due to pagination.\n *\n * @param {object} data more data about the event\n *\n * @param {module:event-timeline.EventTimeline} data.timeline the timeline the\n * event was added to/removed from\n *\n * @param {boolean} data.liveEvent true if the event was a real-time event\n * added to the end of the live timeline\n *\n * @example\n * matrixClient.on(\"Room.timeline\",\n * function(event, room, toStartOfTimeline, removed, data) {\n * if (!toStartOfTimeline && data.liveEvent) {\n * var messageToAppend = room.timeline.[room.timeline.length - 1];\n * }\n * });\n */\n\n/**\n * Fires whenever the live timeline in a room is reset.\n *\n * When we get a 'limited' sync (for example, after a network outage), we reset\n * the live timeline to be empty before adding the recent events to the new\n * timeline. This event is fired after the timeline is reset, and before the\n * new events are added.\n *\n * @event module:client~MatrixClient#\"Room.timelineReset\"\n * @param {Room} room The room whose live timeline was reset, if any\n * @param {EventTimelineSet} timelineSet timelineSet room whose live timeline was reset\n * @param {boolean} resetAllTimelines True if all timelines were reset.\n */\n//# sourceMappingURL=event-timeline-set.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UnknownDeviceError = exports.DecryptionError = exports.DecryptionAlgorithm = exports.EncryptionAlgorithm = exports.DECRYPTION_CLASSES = exports.ENCRYPTION_CLASSES = undefined;\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.registerAlgorithm = registerAlgorithm;\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * map of registered encryption algorithm classes. A map from string to {@link\n * module:crypto/algorithms/base.EncryptionAlgorithm|EncryptionAlgorithm} class\n *\n * @type {Object.<string, function(new: module:crypto/algorithms/base.EncryptionAlgorithm)>}\n */\nvar ENCRYPTION_CLASSES = exports.ENCRYPTION_CLASSES = {};\n\n/**\n * map of registered encryption algorithm classes. Map from string to {@link\n * module:crypto/algorithms/base.DecryptionAlgorithm|DecryptionAlgorithm} class\n *\n * @type {Object.<string, function(new: module:crypto/algorithms/base.DecryptionAlgorithm)>}\n */\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Internal module. Defines the base classes of the encryption implementations\n *\n * @module\n */\n\nvar DECRYPTION_CLASSES = exports.DECRYPTION_CLASSES = {};\n\n/**\n * base type for encryption implementations\n *\n * @alias module:crypto/algorithms/base.EncryptionAlgorithm\n *\n * @param {object} params parameters\n * @param {string} params.userId The UserID for the local user\n * @param {string} params.deviceId The identifier for this device.\n * @param {module:crypto} params.crypto crypto core\n * @param {module:crypto/OlmDevice} params.olmDevice olm.js wrapper\n * @param {module:base-apis~MatrixBaseApis} baseApis base matrix api interface\n * @param {string} params.roomId The ID of the room we will be sending to\n * @param {object} params.config The body of the m.room.encryption event\n */\n\nvar EncryptionAlgorithm = function () {\n function EncryptionAlgorithm(params) {\n (0, _classCallCheck3.default)(this, EncryptionAlgorithm);\n\n this._userId = params.userId;\n this._deviceId = params.deviceId;\n this._crypto = params.crypto;\n this._olmDevice = params.olmDevice;\n this._baseApis = params.baseApis;\n this._roomId = params.roomId;\n }\n\n /**\n * Encrypt a message event\n *\n * @method module:crypto/algorithms/base.EncryptionAlgorithm.encryptMessage\n * @abstract\n *\n * @param {module:models/room} room\n * @param {string} eventType\n * @param {object} plaintext event content\n *\n * @return {module:client.Promise} Promise which resolves to the new event body\n */\n\n /**\n * Called when the membership of a member of the room changes.\n *\n * @param {module:models/event.MatrixEvent} event event causing the change\n * @param {module:models/room-member} member user whose membership changed\n * @param {string=} oldMembership previous membership\n * @public\n */\n\n\n (0, _createClass3.default)(EncryptionAlgorithm, [{\n key: 'onRoomMembership',\n value: function onRoomMembership(event, member, oldMembership) {}\n }]);\n return EncryptionAlgorithm;\n}();\n\nexports.EncryptionAlgorithm = EncryptionAlgorithm; // https://github.com/jsdoc3/jsdoc/issues/1272\n\n/**\n * base type for decryption implementations\n *\n * @alias module:crypto/algorithms/base.DecryptionAlgorithm\n * @param {object} params parameters\n * @param {string} params.userId The UserID for the local user\n * @param {module:crypto} params.crypto crypto core\n * @param {module:crypto/OlmDevice} params.olmDevice olm.js wrapper\n * @param {module:base-apis~MatrixBaseApis} baseApis base matrix api interface\n * @param {string=} params.roomId The ID of the room we will be receiving\n * from. Null for to-device events.\n */\n\nvar DecryptionAlgorithm = function () {\n function DecryptionAlgorithm(params) {\n (0, _classCallCheck3.default)(this, DecryptionAlgorithm);\n\n this._userId = params.userId;\n this._crypto = params.crypto;\n this._olmDevice = params.olmDevice;\n this._baseApis = params.baseApis;\n this._roomId = params.roomId;\n }\n\n /**\n * Decrypt an event\n *\n * @method module:crypto/algorithms/base.DecryptionAlgorithm#decryptEvent\n * @abstract\n *\n * @param {MatrixEvent} event undecrypted event\n *\n * @return {Promise<module:crypto~EventDecryptionResult>} promise which\n * resolves once we have finished decrypting. Rejects with an\n * `algorithms.DecryptionError` if there is a problem decrypting the event.\n */\n\n /**\n * Handle a key event\n *\n * @method module:crypto/algorithms/base.DecryptionAlgorithm#onRoomKeyEvent\n *\n * @param {module:models/event.MatrixEvent} params event key event\n */\n\n\n (0, _createClass3.default)(DecryptionAlgorithm, [{\n key: 'onRoomKeyEvent',\n value: function onRoomKeyEvent(params) {}\n // ignore by default\n\n\n /**\n * Import a room key\n *\n * @param {module:crypto/OlmDevice.MegolmSessionData} session\n */\n\n }, {\n key: 'importRoomKey',\n value: function importRoomKey(session) {}\n // ignore by default\n\n\n /**\n * Determine if we have the keys necessary to respond to a room key request\n *\n * @param {module:crypto~IncomingRoomKeyRequest} keyRequest\n * @return {Promise<boolean>} true if we have the keys and could (theoretically) share\n * them; else false.\n */\n\n }, {\n key: 'hasKeysForKeyRequest',\n value: function hasKeysForKeyRequest(keyRequest) {\n return _bluebird2.default.resolve(false);\n }\n\n /**\n * Send the response to a room key request\n *\n * @param {module:crypto~IncomingRoomKeyRequest} keyRequest\n */\n\n }, {\n key: 'shareKeysWithDevice',\n value: function shareKeysWithDevice(keyRequest) {\n throw new Error(\"shareKeysWithDevice not supported for this DecryptionAlgorithm\");\n }\n }]);\n return DecryptionAlgorithm;\n}();\n\nexports.DecryptionAlgorithm = DecryptionAlgorithm; // https://github.com/jsdoc3/jsdoc/issues/1272\n\n/**\n * Exception thrown when decryption fails\n *\n * @alias module:crypto/algorithms/base.DecryptionError\n * @param {string} msg user-visible message describing the problem\n *\n * @param {Object=} details key/value pairs reported in the logs but not shown\n * to the user.\n *\n * @extends Error\n */\n\nvar DecryptionError = function (_Error) {\n (0, _inherits3.default)(DecryptionError, _Error);\n\n function DecryptionError(code, msg, details) {\n (0, _classCallCheck3.default)(this, DecryptionError);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DecryptionError.__proto__ || (0, _getPrototypeOf2.default)(DecryptionError)).call(this, msg));\n\n _this.code = code;\n _this.name = 'DecryptionError';\n _this.detailedString = _detailedStringForDecryptionError(_this, details);\n return _this;\n }\n\n return DecryptionError;\n}(Error);\n\nexports.DecryptionError = DecryptionError; // https://github.com/jsdoc3/jsdoc/issues/1272\n\nfunction _detailedStringForDecryptionError(err, details) {\n var result = err.name + '[msg: ' + err.message;\n\n if (details) {\n result += ', ' + (0, _keys2.default)(details).map(function (k) {\n return k + ': ' + details[k];\n }).join(', ');\n }\n\n result += ']';\n\n return result;\n}\n\n/**\n * Exception thrown specifically when we want to warn the user to consider\n * the security of their conversation before continuing\n *\n * @param {string} msg message describing the problem\n * @param {Object} devices userId -> {deviceId -> object}\n * set of unknown devices per user we're warning about\n * @extends Error\n */\n\nvar UnknownDeviceError = exports.UnknownDeviceError = function (_Error2) {\n (0, _inherits3.default)(UnknownDeviceError, _Error2);\n\n function UnknownDeviceError(msg, devices) {\n (0, _classCallCheck3.default)(this, UnknownDeviceError);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (UnknownDeviceError.__proto__ || (0, _getPrototypeOf2.default)(UnknownDeviceError)).call(this, msg));\n\n _this2.name = \"UnknownDeviceError\";\n _this2.devices = devices;\n return _this2;\n }\n\n return UnknownDeviceError;\n}(Error);\n\n/**\n * Registers an encryption/decryption class for a particular algorithm\n *\n * @param {string} algorithm algorithm tag to register for\n *\n * @param {class} encryptor {@link\n * module:crypto/algorithms/base.EncryptionAlgorithm|EncryptionAlgorithm}\n * implementation\n *\n * @param {class} decryptor {@link\n * module:crypto/algorithms/base.DecryptionAlgorithm|DecryptionAlgorithm}\n * implementation\n */\n\n\nfunction registerAlgorithm(algorithm, encryptor, decryptor) {\n ENCRYPTION_CLASSES[algorithm] = encryptor;\n DECRYPTION_CLASSES[algorithm] = decryptor;\n}\n//# sourceMappingURL=base.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module crypto/deviceinfo\n */\n\n/**\n * Information about a user's device\n *\n * @constructor\n * @alias module:crypto/deviceinfo\n *\n * @property {string} deviceId the ID of this device\n *\n * @property {string[]} algorithms list of algorithms supported by this device\n *\n * @property {Object.<string,string>} keys a map from\n * <key type>:<id> -> <base64-encoded key>>\n *\n * @property {module:crypto/deviceinfo.DeviceVerification} verified\n * whether the device has been verified/blocked by the user\n *\n * @property {boolean} known\n * whether the user knows of this device's existence (useful when warning\n * the user that a user has added new devices)\n *\n * @property {Object} unsigned additional data from the homeserver\n *\n * @param {string} deviceId id of the device\n */\n\nfunction DeviceInfo(deviceId) {\n // you can't change the deviceId\n Object.defineProperty(this, 'deviceId', {\n enumerable: true,\n value: deviceId\n });\n\n this.algorithms = [];\n this.keys = {};\n this.verified = DeviceVerification.UNVERIFIED;\n this.known = false;\n this.unsigned = {};\n}\n\n/**\n * rehydrate a DeviceInfo from the session store\n *\n * @param {object} obj raw object from session store\n * @param {string} deviceId id of the device\n *\n * @return {module:crypto~DeviceInfo} new DeviceInfo\n */\nDeviceInfo.fromStorage = function (obj, deviceId) {\n var res = new DeviceInfo(deviceId);\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n res[prop] = obj[prop];\n }\n }\n return res;\n};\n\n/**\n * Prepare a DeviceInfo for JSON serialisation in the session store\n *\n * @return {object} deviceinfo with non-serialised members removed\n */\nDeviceInfo.prototype.toStorage = function () {\n return {\n algorithms: this.algorithms,\n keys: this.keys,\n verified: this.verified,\n known: this.known,\n unsigned: this.unsigned\n };\n};\n\n/**\n * Get the fingerprint for this device (ie, the Ed25519 key)\n *\n * @return {string} base64-encoded fingerprint of this device\n */\nDeviceInfo.prototype.getFingerprint = function () {\n return this.keys[\"ed25519:\" + this.deviceId];\n};\n\n/**\n * Get the identity key for this device (ie, the Curve25519 key)\n *\n * @return {string} base64-encoded identity key of this device\n */\nDeviceInfo.prototype.getIdentityKey = function () {\n return this.keys[\"curve25519:\" + this.deviceId];\n};\n\n/**\n * Get the configured display name for this device, if any\n *\n * @return {string?} displayname\n */\nDeviceInfo.prototype.getDisplayName = function () {\n return this.unsigned.device_display_name || null;\n};\n\n/**\n * Returns true if this device is blocked\n *\n * @return {Boolean} true if blocked\n */\nDeviceInfo.prototype.isBlocked = function () {\n return this.verified == DeviceVerification.BLOCKED;\n};\n\n/**\n * Returns true if this device is verified\n *\n * @return {Boolean} true if verified\n */\nDeviceInfo.prototype.isVerified = function () {\n return this.verified == DeviceVerification.VERIFIED;\n};\n\n/**\n * Returns true if this device is unverified\n *\n * @return {Boolean} true if unverified\n */\nDeviceInfo.prototype.isUnverified = function () {\n return this.verified == DeviceVerification.UNVERIFIED;\n};\n\n/**\n * Returns true if the user knows about this device's existence\n *\n * @return {Boolean} true if known\n */\nDeviceInfo.prototype.isKnown = function () {\n return this.known == true;\n};\n\n/**\n * @enum\n */\nDeviceInfo.DeviceVerification = {\n VERIFIED: 1,\n UNVERIFIED: 0,\n BLOCKED: -1\n};\n\nvar DeviceVerification = DeviceInfo.DeviceVerification;\n\n/** */\nmodule.exports = DeviceInfo;\n//# sourceMappingURL=deviceinfo.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _CallHandler = require('./CallHandler');\n\nvar _CallHandler2 = _interopRequireDefault(_CallHandler);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _Roles = require('./Roles');\n\nvar Roles = _interopRequireWildcard(_Roles);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nfunction textForMemberEvent(ev) {\n // XXX: SYJS-16 \"sender is sometimes null for join messages\"\n var senderName = ev.sender ? ev.sender.name : ev.getSender();\n var targetName = ev.target ? ev.target.name : ev.getStateKey();\n var prevContent = ev.getPrevContent();\n var content = ev.getContent();\n\n var ConferenceHandler = _CallHandler2.default.getConferenceHandler();\n var reason = content.reason ? (0, _languageHandler._t)('Reason') + ': ' + content.reason : '';\n switch (content.membership) {\n case 'invite':\n {\n var threePidContent = content.third_party_invite;\n if (threePidContent) {\n if (threePidContent.display_name) {\n return (0, _languageHandler._t)('%(targetName)s accepted the invitation for %(displayName)s.', {\n targetName: targetName,\n displayName: threePidContent.display_name\n });\n } else {\n return (0, _languageHandler._t)('%(targetName)s accepted an invitation.', { targetName: targetName });\n }\n } else {\n if (ConferenceHandler && ConferenceHandler.isConferenceUser(ev.getStateKey())) {\n return (0, _languageHandler._t)('%(senderName)s requested a VoIP conference.', { senderName: senderName });\n } else {\n return (0, _languageHandler._t)('%(senderName)s invited %(targetName)s.', { senderName: senderName, targetName: targetName });\n }\n }\n }\n case 'ban':\n return (0, _languageHandler._t)('%(senderName)s banned %(targetName)s.', { senderName: senderName, targetName: targetName }) + ' ' + reason;\n case 'join':\n if (prevContent && prevContent.membership === 'join') {\n if (prevContent.displayname && content.displayname && prevContent.displayname !== content.displayname) {\n return (0, _languageHandler._t)('%(oldDisplayName)s changed their display name to %(displayName)s.', {\n oldDisplayName: prevContent.displayname,\n displayName: content.displayname\n });\n } else if (!prevContent.displayname && content.displayname) {\n return (0, _languageHandler._t)('%(senderName)s set their display name to %(displayName)s.', {\n senderName: ev.getSender(),\n displayName: content.displayname\n });\n } else if (prevContent.displayname && !content.displayname) {\n return (0, _languageHandler._t)('%(senderName)s removed their display name (%(oldDisplayName)s).', {\n senderName: senderName,\n oldDisplayName: prevContent.displayname\n });\n } else if (prevContent.avatar_url && !content.avatar_url) {\n return (0, _languageHandler._t)('%(senderName)s removed their profile picture.', { senderName: senderName });\n } else if (prevContent.avatar_url && content.avatar_url && prevContent.avatar_url !== content.avatar_url) {\n return (0, _languageHandler._t)('%(senderName)s changed their profile picture.', { senderName: senderName });\n } else if (!prevContent.avatar_url && content.avatar_url) {\n return (0, _languageHandler._t)('%(senderName)s set a profile picture.', { senderName: senderName });\n } else {\n // suppress null rejoins\n return '';\n }\n } else {\n if (!ev.target) console.warn(\"Join message has no target! -- \" + ev.getContent().state_key);\n if (ConferenceHandler && ConferenceHandler.isConferenceUser(ev.getStateKey())) {\n return (0, _languageHandler._t)('VoIP conference started.');\n } else {\n return (0, _languageHandler._t)('%(targetName)s joined the room.', { targetName: targetName });\n }\n }\n case 'leave':\n if (ev.getSender() === ev.getStateKey()) {\n if (ConferenceHandler && ConferenceHandler.isConferenceUser(ev.getStateKey())) {\n return (0, _languageHandler._t)('VoIP conference finished.');\n } else if (prevContent.membership === \"invite\") {\n return (0, _languageHandler._t)('%(targetName)s rejected the invitation.', { targetName: targetName });\n } else {\n return (0, _languageHandler._t)('%(targetName)s left the room.', { targetName: targetName });\n }\n } else if (prevContent.membership === \"ban\") {\n return (0, _languageHandler._t)('%(senderName)s unbanned %(targetName)s.', { senderName: senderName, targetName: targetName });\n } else if (prevContent.membership === \"join\") {\n return (0, _languageHandler._t)('%(senderName)s kicked %(targetName)s.', { senderName: senderName, targetName: targetName }) + ' ' + reason;\n } else if (prevContent.membership === \"invite\") {\n return (0, _languageHandler._t)('%(senderName)s withdrew %(targetName)s\\'s invitation.', {\n senderName: senderName,\n targetName: targetName\n }) + ' ' + reason;\n } else {\n return (0, _languageHandler._t)('%(targetName)s left the room.', { targetName: targetName });\n }\n }\n}\n\nfunction textForTopicEvent(ev) {\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n return (0, _languageHandler._t)('%(senderDisplayName)s changed the topic to \"%(topic)s\".', {\n senderDisplayName: senderDisplayName,\n topic: ev.getContent().topic\n });\n}\n\nfunction textForRoomNameEvent(ev) {\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n\n if (!ev.getContent().name || ev.getContent().name.trim().length === 0) {\n return (0, _languageHandler._t)('%(senderDisplayName)s removed the room name.', { senderDisplayName: senderDisplayName });\n }\n return (0, _languageHandler._t)('%(senderDisplayName)s changed the room name to %(roomName)s.', {\n senderDisplayName: senderDisplayName,\n roomName: ev.getContent().name\n });\n}\n\nfunction textForServerACLEvent(ev) {\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n var prevContent = ev.getPrevContent();\n var changes = [];\n var current = ev.getContent();\n var prev = {\n deny: Array.isArray(prevContent.deny) ? prevContent.deny : [],\n allow: Array.isArray(prevContent.allow) ? prevContent.allow : [],\n allow_ip_literals: !(prevContent.allow_ip_literals === false)\n };\n var text = \"\";\n if (prev.deny.length === 0 && prev.allow.length === 0) {\n text = senderDisplayName + ' set server ACLs for this room: ';\n } else {\n text = senderDisplayName + ' changed the server ACLs for this room: ';\n }\n\n if (!Array.isArray(current.allow)) {\n current.allow = [];\n }\n /* If we know for sure everyone is banned, don't bother showing the diff view */\n if (current.allow.length === 0) {\n return text + \"🎉 All servers are banned from participating! This room can no longer be used.\";\n }\n\n if (!Array.isArray(current.deny)) {\n current.deny = [];\n }\n\n var bannedServers = current.deny.filter(function (srv) {\n return typeof srv === 'string' && !prev.deny.includes(srv);\n });\n var unbannedServers = prev.deny.filter(function (srv) {\n return typeof srv === 'string' && !current.deny.includes(srv);\n });\n var allowedServers = current.allow.filter(function (srv) {\n return typeof srv === 'string' && !prev.allow.includes(srv);\n });\n var unallowedServers = prev.allow.filter(function (srv) {\n return typeof srv === 'string' && !current.allow.includes(srv);\n });\n\n if (bannedServers.length > 0) {\n changes.push('Servers matching ' + bannedServers.join(\", \") + ' are now banned.');\n }\n\n if (unbannedServers.length > 0) {\n changes.push('Servers matching ' + unbannedServers.join(\", \") + ' were removed from the ban list.');\n }\n\n if (allowedServers.length > 0) {\n changes.push('Servers matching ' + allowedServers.join(\", \") + ' are now allowed.');\n }\n\n if (unallowedServers.length > 0) {\n changes.push('Servers matching ' + unallowedServers.join(\", \") + ' were removed from the allowed list.');\n }\n\n if (prev.allow_ip_literals !== current.allow_ip_literals) {\n var allowban = current.allow_ip_literals ? \"allowed\" : \"banned\";\n changes.push('Participating from a server using an IP literal hostname is now ' + allowban + '.');\n }\n\n return text + changes.join(\" \");\n}\n\nfunction textForMessageEvent(ev) {\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n var message = senderDisplayName + ': ' + ev.getContent().body;\n if (ev.getContent().msgtype === \"m.emote\") {\n message = \"* \" + senderDisplayName + \" \" + message;\n } else if (ev.getContent().msgtype === \"m.image\") {\n message = (0, _languageHandler._t)('%(senderDisplayName)s sent an image.', { senderDisplayName: senderDisplayName });\n }\n return message;\n}\n\nfunction textForRoomAliasesEvent(ev) {\n // An alternative implementation of this as a first-class event can be found at\n // https://github.com/matrix-org/matrix-react-sdk/blob/dc7212ec2bd12e1917233ed7153b3e0ef529a135/src/components/views/messages/RoomAliasesEvent.js\n // This feels a bit overkill though, and it's not clear the i18n really needs it\n // so instead it's landing as a simple textual event.\n\n var senderName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n var oldAliases = ev.getPrevContent().aliases || [];\n var newAliases = ev.getContent().aliases || [];\n\n var addedAliases = newAliases.filter(function (x) {\n return !oldAliases.includes(x);\n });\n var removedAliases = oldAliases.filter(function (x) {\n return !newAliases.includes(x);\n });\n\n if (!addedAliases.length && !removedAliases.length) {\n return '';\n }\n\n if (addedAliases.length && !removedAliases.length) {\n return (0, _languageHandler._t)('%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.', {\n senderName: senderName,\n count: addedAliases.length,\n addedAddresses: addedAliases.join(', ')\n });\n } else if (!addedAliases.length && removedAliases.length) {\n return (0, _languageHandler._t)('%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.', {\n senderName: senderName,\n count: removedAliases.length,\n removedAddresses: removedAliases.join(', ')\n });\n } else {\n return (0, _languageHandler._t)('%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.', {\n senderName: senderName,\n addedAddresses: addedAliases.join(', '),\n removedAddresses: removedAliases.join(', ')\n });\n }\n}\n\nfunction textForCanonicalAliasEvent(ev) {\n var senderName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n var oldAlias = ev.getPrevContent().alias;\n var newAlias = ev.getContent().alias;\n\n if (newAlias) {\n return (0, _languageHandler._t)('%(senderName)s set the main address for this room to %(address)s.', {\n senderName: senderName,\n address: ev.getContent().alias\n });\n } else if (oldAlias) {\n return (0, _languageHandler._t)('%(senderName)s removed the main address for this room.', {\n senderName: senderName\n });\n }\n}\n\nfunction textForCallAnswerEvent(event) {\n var senderName = event.sender ? event.sender.name : (0, _languageHandler._t)('Someone');\n var supported = _MatrixClientPeg2.default.get().supportsVoip() ? '' : (0, _languageHandler._t)('(not supported by this browser)');\n return (0, _languageHandler._t)('%(senderName)s answered the call.', { senderName: senderName }) + ' ' + supported;\n}\n\nfunction textForCallHangupEvent(event) {\n var senderName = event.sender ? event.sender.name : (0, _languageHandler._t)('Someone');\n var eventContent = event.getContent();\n var reason = \"\";\n if (!_MatrixClientPeg2.default.get().supportsVoip()) {\n reason = (0, _languageHandler._t)('(not supported by this browser)');\n } else if (eventContent.reason) {\n if (eventContent.reason === \"ice_failed\") {\n reason = (0, _languageHandler._t)('(could not connect media)');\n } else if (eventContent.reason === \"invite_timeout\") {\n reason = (0, _languageHandler._t)('(no answer)');\n } else if (eventContent.reason === \"user hangup\") {\n // workaround for https://github.com/vector-im/riot-web/issues/5178\n // it seems Android randomly sets a reason of \"user hangup\" which is\n // interpreted as an error code :(\n // https://github.com/vector-im/riot-android/issues/2623\n reason = '';\n } else {\n reason = (0, _languageHandler._t)('(unknown failure: %(reason)s)', { reason: eventContent.reason });\n }\n }\n return (0, _languageHandler._t)('%(senderName)s ended the call.', { senderName: senderName }) + ' ' + reason;\n}\n\nfunction textForCallInviteEvent(event) {\n var senderName = event.sender ? event.sender.name : (0, _languageHandler._t)('Someone');\n // FIXME: Find a better way to determine this from the event?\n var callType = \"voice\";\n if (event.getContent().offer && event.getContent().offer.sdp && event.getContent().offer.sdp.indexOf('m=video') !== -1) {\n callType = \"video\";\n }\n var supported = _MatrixClientPeg2.default.get().supportsVoip() ? \"\" : (0, _languageHandler._t)('(not supported by this browser)');\n return (0, _languageHandler._t)('%(senderName)s placed a %(callType)s call.', { senderName: senderName, callType: callType }) + ' ' + supported;\n}\n\nfunction textForThreePidInviteEvent(event) {\n var senderName = event.sender ? event.sender.name : event.getSender();\n return (0, _languageHandler._t)('%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.', {\n senderName: senderName,\n targetDisplayName: event.getContent().display_name\n });\n}\n\nfunction textForHistoryVisibilityEvent(event) {\n var senderName = event.sender ? event.sender.name : event.getSender();\n switch (event.getContent().history_visibility) {\n case 'invited':\n return (0, _languageHandler._t)('%(senderName)s made future room history visible to all room members, ' + 'from the point they are invited.', { senderName: senderName });\n case 'joined':\n return (0, _languageHandler._t)('%(senderName)s made future room history visible to all room members, ' + 'from the point they joined.', { senderName: senderName });\n case 'shared':\n return (0, _languageHandler._t)('%(senderName)s made future room history visible to all room members.', { senderName: senderName });\n case 'world_readable':\n return (0, _languageHandler._t)('%(senderName)s made future room history visible to anyone.', { senderName: senderName });\n default:\n return (0, _languageHandler._t)('%(senderName)s made future room history visible to unknown (%(visibility)s).', {\n senderName: senderName,\n visibility: event.getContent().history_visibility\n });\n }\n}\n\nfunction textForEncryptionEvent(event) {\n var senderName = event.sender ? event.sender.name : event.getSender();\n return (0, _languageHandler._t)('%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).', {\n senderName: senderName,\n algorithm: event.getContent().algorithm\n });\n}\n\n// Currently will only display a change if a user's power level is changed\nfunction textForPowerEvent(event) {\n var senderName = event.sender ? event.sender.name : event.getSender();\n if (!event.getPrevContent() || !event.getPrevContent().users) {\n return '';\n }\n var userDefault = event.getContent().users_default || 0;\n // Construct set of userIds\n var users = [];\n (0, _keys2.default)(event.getContent().users).forEach(function (userId) {\n if (users.indexOf(userId) === -1) users.push(userId);\n });\n (0, _keys2.default)(event.getPrevContent().users).forEach(function (userId) {\n if (users.indexOf(userId) === -1) users.push(userId);\n });\n var diff = [];\n // XXX: This is also surely broken for i18n\n users.forEach(function (userId) {\n // Previous power level\n var from = event.getPrevContent().users[userId];\n // Current power level\n var to = event.getContent().users[userId];\n if (to !== from) {\n diff.push((0, _languageHandler._t)('%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s', {\n userId: userId,\n fromPowerLevel: Roles.textualPowerLevel(from, userDefault),\n toPowerLevel: Roles.textualPowerLevel(to, userDefault)\n }));\n }\n });\n if (!diff.length) {\n return '';\n }\n return (0, _languageHandler._t)('%(senderName)s changed the power level of %(powerLevelDiffText)s.', {\n senderName: senderName,\n powerLevelDiffText: diff.join(\", \")\n });\n}\n\nfunction textForPinnedEvent(event) {\n var senderName = event.getSender();\n return (0, _languageHandler._t)(\"%(senderName)s changed the pinned messages for the room.\", { senderName: senderName });\n}\n\nfunction textForWidgetEvent(event) {\n var senderName = event.getSender();\n\n var _event$getPrevContent = event.getPrevContent(),\n prevName = _event$getPrevContent.name,\n prevType = _event$getPrevContent.type,\n prevUrl = _event$getPrevContent.url;\n\n var _ref = event.getContent() || {},\n name = _ref.name,\n type = _ref.type,\n url = _ref.url;\n\n var widgetName = name || prevName || type || prevType || '';\n // Apply sentence case to widget name\n if (widgetName && widgetName.length > 0) {\n widgetName = widgetName[0].toUpperCase() + widgetName.slice(1) + ' ';\n }\n\n // If the widget was removed, its content should be {}, but this is sufficiently\n // equivalent to that condition.\n if (url) {\n if (prevUrl) {\n return (0, _languageHandler._t)('%(widgetName)s widget modified by %(senderName)s', {\n widgetName: widgetName, senderName: senderName\n });\n } else {\n return (0, _languageHandler._t)('%(widgetName)s widget added by %(senderName)s', {\n widgetName: widgetName, senderName: senderName\n });\n }\n } else {\n return (0, _languageHandler._t)('%(widgetName)s widget removed by %(senderName)s', {\n widgetName: widgetName, senderName: senderName\n });\n }\n}\n\nvar handlers = {\n 'm.room.message': textForMessageEvent,\n 'm.call.invite': textForCallInviteEvent,\n 'm.call.answer': textForCallAnswerEvent,\n 'm.call.hangup': textForCallHangupEvent\n};\n\nvar stateHandlers = {\n 'm.room.aliases': textForRoomAliasesEvent,\n 'm.room.canonical_alias': textForCanonicalAliasEvent,\n 'm.room.name': textForRoomNameEvent,\n 'm.room.topic': textForTopicEvent,\n 'm.room.member': textForMemberEvent,\n 'm.room.third_party_invite': textForThreePidInviteEvent,\n 'm.room.history_visibility': textForHistoryVisibilityEvent,\n 'm.room.encryption': textForEncryptionEvent,\n 'm.room.power_levels': textForPowerEvent,\n 'm.room.pinned_events': textForPinnedEvent,\n 'm.room.server_acl': textForServerACLEvent,\n\n 'im.vector.modular.widgets': textForWidgetEvent\n};\n\nmodule.exports = {\n textForEvent: function textForEvent(ev) {\n var handler = (ev.isState() ? stateHandlers : handlers)[ev.getType()];\n if (handler) return handler(ev);\n return '';\n }\n};\n//# sourceMappingURL=TextForEvent.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getUnknownDevicesForRoom = undefined;\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\n/**\n * Gets all crypto devices in a room that are marked neither known\n * nor verified.\n *\n * @param {MatrixClient} matrixClient A MatrixClient\n * @param {Room} room js-sdk room object representing the room\n * @return {Promise} A promise which resolves to a map userId->deviceId->{@link\n * module:crypto~DeviceInfo|DeviceInfo}.\n */\nvar getUnknownDevicesForRoom = exports.getUnknownDevicesForRoom = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(matrixClient, room) {\n var roomMembers, devices, unknownDevices;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(room.getEncryptionTargetMembers().map(function (m) {\n return m.userId;\n }));\n\n case 2:\n roomMembers = _context.sent;\n _context.next = 5;\n return (0, _bluebird.resolve)(matrixClient.downloadKeys(roomMembers, false));\n\n case 5:\n devices = _context.sent;\n unknownDevices = {};\n // This is all devices in this room, so find the unknown ones.\n\n (0, _keys2.default)(devices).forEach(function (userId) {\n (0, _keys2.default)(devices[userId]).map(function (deviceId) {\n var device = devices[userId][deviceId];\n\n if (device.isUnverified() && !device.isKnown()) {\n if (unknownDevices[userId] === undefined) {\n unknownDevices[userId] = {};\n }\n unknownDevices[userId][deviceId] = device;\n }\n });\n });\n return _context.abrupt('return', unknownDevices);\n\n case 9:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function getUnknownDevicesForRoom(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\nexports.markAllDevicesKnown = markAllDevicesKnown;\nexports.showUnknownDeviceDialogForMessages = showUnknownDeviceDialogForMessages;\nexports.showUnknownDeviceDialogForCalls = showUnknownDeviceDialogForCalls;\n\nvar _Resend = require('./Resend');\n\nvar _Resend2 = _interopRequireDefault(_Resend);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Mark all given devices as 'known'\n *\n * @param {MatrixClient} matrixClient A MatrixClient\n * @param {Object} devices Map from userid -> deviceid -> deviceinfo\n */\nfunction markAllDevicesKnown(matrixClient, devices) {\n (0, _keys2.default)(devices).forEach(function (userId) {\n (0, _keys2.default)(devices[userId]).map(function (deviceId) {\n matrixClient.setDeviceKnown(userId, deviceId, true);\n });\n });\n} /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction focusComposer() {\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n}\n\n/**\n * Show the UnknownDeviceDialog for a given room. The dialog will inform the user\n * that messages they sent to this room have not been sent due to unknown devices\n * being present.\n *\n * @param {MatrixClient} matrixClient A MatrixClient\n * @param {Room} room js-sdk room object representing the room\n */\nfunction showUnknownDeviceDialogForMessages(matrixClient, room) {\n getUnknownDevicesForRoom(matrixClient, room).then(function (unknownDevices) {\n var onSendClicked = function onSendClicked() {\n _Resend2.default.resendUnsentEvents(room);\n };\n\n var UnknownDeviceDialog = _index2.default.getComponent('dialogs.UnknownDeviceDialog');\n _Modal2.default.createTrackedDialog('Unknown Device Dialog', '', UnknownDeviceDialog, {\n room: room,\n devices: unknownDevices,\n sendAnywayLabel: (0, _languageHandler._t)(\"Send anyway\"),\n sendLabel: (0, _languageHandler._t)(\"Send\"),\n onSend: onSendClicked,\n onFinished: focusComposer\n }, 'mx_Dialog_unknownDevice');\n });\n}\n\n/**\n * Show the UnknownDeviceDialog for a given room. The dialog will inform the user\n * that a call they tried to place or answer in the room couldn't be placed or\n * answered due to unknown devices being present.\n *\n * @param {MatrixClient} matrixClient A MatrixClient\n * @param {Room} room js-sdk room object representing the room\n * @param {func} sendAnyway Function called when the 'call anyway' or 'call'\n * button is pressed. This should attempt to place or answer the call again.\n * @param {string} sendAnywayLabel Label for the button displayed to retry the call\n * when unknown devices are still present (eg. \"Call Anyway\")\n * @param {string} sendLabel Label for the button displayed to retry the call\n * after all devices have been verified (eg. \"Call\")\n */\nfunction showUnknownDeviceDialogForCalls(matrixClient, room, sendAnyway, sendAnywayLabel, sendLabel) {\n getUnknownDevicesForRoom(matrixClient, room).then(function (unknownDevices) {\n var UnknownDeviceDialog = _index2.default.getComponent('dialogs.UnknownDeviceDialog');\n _Modal2.default.createTrackedDialog('Unknown Device Dialog', '', UnknownDeviceDialog, {\n room: room,\n devices: unknownDevices,\n sendAnywayLabel: sendAnywayLabel,\n sendLabel: sendLabel,\n onSend: sendAnyway\n }, 'mx_Dialog_unknownDevice');\n });\n}\n//# sourceMappingURL=cryptodevices.js.map","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport Promise from 'bluebird';\nimport request from 'browser-request';\n\nexport async function getVectorConfig(relativeLocation) {\n if (relativeLocation === undefined) relativeLocation = '';\n if (relativeLocation !== '' && !relativeLocation.endsWith('/')) relativeLocation += '/';\n try {\n const configJson = await getConfig(`${relativeLocation}config.${document.domain}.json`);\n // 404s succeed with an empty json config, so check that there are keys\n if (Object.keys(configJson).length === 0) {\n throw new Error(); // throw to enter the catch\n }\n return configJson;\n } catch (e) {\n return await getConfig(relativeLocation + \"config.json\");\n }\n}\n\nfunction getConfig(configJsonFilename) {\n return new Promise(function(resolve, reject) {\n request(\n { method: \"GET\", url: configJsonFilename },\n (err, response, body) => {\n if (err || response.status < 200 || response.status >= 300) {\n // Lack of a config isn't an error, we should\n // just use the defaults.\n // Also treat a blank config as no config, assuming\n // the status code is 0, because we don't get 404s\n // from file: URIs so this is the only way we can\n // not fail if the file doesn't exist when loading\n // from a file:// URI.\n if (response) {\n if (response.status == 404 || (response.status == 0 && body == '')) {\n resolve({});\n }\n }\n reject({err: err, response: response});\n return;\n }\n\n // We parse the JSON ourselves rather than use the JSON\n // parameter, since this throws a parse error on empty\n // which breaks if there's no config.json and we're\n // loading from the filesystem (see above).\n resolve(JSON.parse(body));\n },\n );\n });\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar processNextTick = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n processNextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n processNextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = _isUint8Array(chunk) && !state.objectMode;\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n processNextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n processNextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequestCount = 0;\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n processNextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) processNextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return -1;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// UTF-8 replacement characters ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd'.repeat(p);\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd'.repeat(p + 1);\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd'.repeat(p + 2);\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character for each buffered byte of a (partial)\n// character needs to be added to the output.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd'.repeat(this.lastTotal - this.lastNeed);\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","var encode = require(\"./lib/encode.js\"),\n decode = require(\"./lib/decode.js\");\n\nexports.decode = function(data, level){\n\treturn (!level || level <= 0 ? decode.XML : decode.HTML)(data);\n};\n\nexports.decodeStrict = function(data, level){\n\treturn (!level || level <= 0 ? decode.XML : decode.HTMLStrict)(data);\n};\n\nexports.encode = function(data, level){\n\treturn (!level || level <= 0 ? encode.XML : encode.HTML)(data);\n};\n\nexports.encodeXML = encode.XML;\n\nexports.encodeHTML4 =\nexports.encodeHTML5 =\nexports.encodeHTML = encode.HTML;\n\nexports.decodeXML =\nexports.decodeXMLStrict = decode.XML;\n\nexports.decodeHTML4 =\nexports.decodeHTML5 =\nexports.decodeHTML = decode.HTML;\n\nexports.decodeHTML4Strict =\nexports.decodeHTML5Strict =\nexports.decodeHTMLStrict = decode.HTMLStrict;\n\nexports.escape = encode.escape;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _node = require('./node');\n\nvar _node2 = _interopRequireDefault(_node);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS declaration.\n *\n * @extends Node\n *\n * @example\n * const root = postcss.parse('a { color: black }');\n * const decl = root.first.first;\n * decl.type //=> 'decl'\n * decl.toString() //=> ' color: black'\n */\nvar Declaration = function (_Node) {\n _inherits(Declaration, _Node);\n\n function Declaration(defaults) {\n _classCallCheck(this, Declaration);\n\n var _this = _possibleConstructorReturn(this, _Node.call(this, defaults));\n\n _this.type = 'decl';\n return _this;\n }\n\n /**\n * @memberof Declaration#\n * @member {string} prop - the declaration’s property name\n *\n * @example\n * const root = postcss.parse('a { color: black }');\n * const decl = root.first.first;\n * decl.prop //=> 'color'\n */\n\n /**\n * @memberof Declaration#\n * @member {string} value - the declaration’s value\n *\n * @example\n * const root = postcss.parse('a { color: black }');\n * const decl = root.first.first;\n * decl.value //=> 'black'\n */\n\n /**\n * @memberof Declaration#\n * @member {boolean} important - `true` if the declaration\n * has an !important annotation.\n *\n * @example\n * const root = postcss.parse('a { color: black !important; color: red }');\n * root.first.first.important //=> true\n * root.first.last.important //=> undefined\n */\n\n /**\n * @memberof Declaration#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `between`: the symbols between the property and value\n * for declarations.\n * * `important`: the content of the important statement,\n * if it is not just `!important`.\n *\n * PostCSS cleans declaration from comments and extra spaces,\n * but it stores origin content in raws properties.\n * As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '\\n ', between: ':' }\n */\n\n return Declaration;\n}(_node2.default);\n\nexports.default = Declaration;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRlY2xhcmF0aW9uLmVzNiJdLCJuYW1lcyI6WyJEZWNsYXJhdGlvbiIsImRlZmF1bHRzIiwidHlwZSIsIk5vZGUiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7O0lBV01BLFc7OztBQUVGLHVCQUFZQyxRQUFaLEVBQXNCO0FBQUE7O0FBQUEsaURBQ2xCLGlCQUFNQSxRQUFOLENBRGtCOztBQUVsQixVQUFLQyxJQUFMLEdBQVksTUFBWjtBQUZrQjtBQUdyQjs7QUFFRDs7Ozs7Ozs7OztBQVVBOzs7Ozs7Ozs7O0FBVUE7Ozs7Ozs7Ozs7O0FBV0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBdENzQkMsYzs7a0JBaUVYSCxXIiwiZmlsZSI6ImRlY2xhcmF0aW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE5vZGUgZnJvbSAnLi9ub2RlJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgQ1NTIGRlY2xhcmF0aW9uLlxuICpcbiAqIEBleHRlbmRzIE5vZGVcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2EgeyBjb2xvcjogYmxhY2sgfScpO1xuICogY29uc3QgZGVjbCA9IHJvb3QuZmlyc3QuZmlyc3Q7XG4gKiBkZWNsLnR5cGUgICAgICAgLy89PiAnZGVjbCdcbiAqIGRlY2wudG9TdHJpbmcoKSAvLz0+ICcgY29sb3I6IGJsYWNrJ1xuICovXG5jbGFzcyBEZWNsYXJhdGlvbiBleHRlbmRzIE5vZGUge1xuXG4gICAgY29uc3RydWN0b3IoZGVmYXVsdHMpIHtcbiAgICAgICAgc3VwZXIoZGVmYXVsdHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnZGVjbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgICAqIEBtZW1iZXIge3N0cmluZ30gcHJvcCAtIHRoZSBkZWNsYXJhdGlvbuKAmXMgcHJvcGVydHkgbmFtZVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjayB9Jyk7XG4gICAgICogY29uc3QgZGVjbCA9IHJvb3QuZmlyc3QuZmlyc3Q7XG4gICAgICogZGVjbC5wcm9wIC8vPT4gJ2NvbG9yJ1xuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgICAqIEBtZW1iZXIge3N0cmluZ30gdmFsdWUgLSB0aGUgZGVjbGFyYXRpb27igJlzIHZhbHVlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgY29sb3I6IGJsYWNrIH0nKTtcbiAgICAgKiBjb25zdCBkZWNsID0gcm9vdC5maXJzdC5maXJzdDtcbiAgICAgKiBkZWNsLnZhbHVlIC8vPT4gJ2JsYWNrJ1xuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgICAqIEBtZW1iZXIge2Jvb2xlYW59IGltcG9ydGFudCAtIGB0cnVlYCBpZiB0aGUgZGVjbGFyYXRpb25cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgYW4gIWltcG9ydGFudCBhbm5vdGF0aW9uLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjayAhaW1wb3J0YW50OyBjb2xvcjogcmVkIH0nKTtcbiAgICAgKiByb290LmZpcnN0LmZpcnN0LmltcG9ydGFudCAvLz0+IHRydWVcbiAgICAgKiByb290LmZpcnN0Lmxhc3QuaW1wb3J0YW50ICAvLz0+IHVuZGVmaW5lZFxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyAtIEluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGJ5dGUtdG8tYnl0ZSBlcXVhbFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgc3RyaW5nIGFzIGl0IHdhcyBpbiB0aGUgb3JpZ2luIGlucHV0LlxuICAgICAqXG4gICAgICogRXZlcnkgcGFyc2VyIHNhdmVzIGl0cyBvd24gcHJvcGVydGllcyxcbiAgICAgKiBidXQgdGhlIGRlZmF1bHQgQ1NTIHBhcnNlciB1c2VzOlxuICAgICAqXG4gICAgICogKiBgYmVmb3JlYDogdGhlIHNwYWNlIHN5bWJvbHMgYmVmb3JlIHRoZSBub2RlLiBJdCBhbHNvIHN0b3JlcyBgKmBcbiAgICAgKiAgIGFuZCBgX2Agc3ltYm9scyBiZWZvcmUgdGhlIGRlY2xhcmF0aW9uIChJRSBoYWNrKS5cbiAgICAgKiAqIGBiZXR3ZWVuYDogdGhlIHN5bWJvbHMgYmV0d2VlbiB0aGUgcHJvcGVydHkgYW5kIHZhbHVlXG4gICAgICogICBmb3IgZGVjbGFyYXRpb25zLlxuICAgICAqICogYGltcG9ydGFudGA6IHRoZSBjb250ZW50IG9mIHRoZSBpbXBvcnRhbnQgc3RhdGVtZW50LFxuICAgICAqICAgaWYgaXQgaXMgbm90IGp1c3QgYCFpbXBvcnRhbnRgLlxuICAgICAqXG4gICAgICogUG9zdENTUyBjbGVhbnMgZGVjbGFyYXRpb24gZnJvbSBjb21tZW50cyBhbmQgZXh0cmEgc3BhY2VzLFxuICAgICAqIGJ1dCBpdCBzdG9yZXMgb3JpZ2luIGNvbnRlbnQgaW4gcmF3cyBwcm9wZXJ0aWVzLlxuICAgICAqIEFzIHN1Y2gsIGlmIHlvdSBkb27igJl0IGNoYW5nZSBhIGRlY2xhcmF0aW9u4oCZcyB2YWx1ZSxcbiAgICAgKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSByYXcgdmFsdWUgd2l0aCBjb21tZW50cy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2Ege1xcbiAgY29sb3I6YmxhY2tcXG59JylcbiAgICAgKiByb290LmZpcnN0LmZpcnN0LnJhd3MgLy89PiB7IGJlZm9yZTogJ1xcbiAgJywgYmV0d2VlbjogJzonIH1cbiAgICAgKi9cblxufVxuXG5leHBvcnQgZGVmYXVsdCBEZWNsYXJhdGlvbjtcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _cssSyntaxError = require('./css-syntax-error');\n\nvar _cssSyntaxError2 = _interopRequireDefault(_cssSyntaxError);\n\nvar _stringifier = require('./stringifier');\n\nvar _stringifier2 = _interopRequireDefault(_stringifier);\n\nvar _stringify = require('./stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _warnOnce = require('./warn-once');\n\nvar _warnOnce2 = _interopRequireDefault(_warnOnce);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar cloneNode = function cloneNode(obj, parent) {\n var cloned = new obj.constructor();\n\n for (var i in obj) {\n if (!obj.hasOwnProperty(i)) continue;\n var value = obj[i];\n var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);\n\n if (i === 'parent' && type === 'object') {\n if (parent) cloned[i] = parent;\n } else if (i === 'source') {\n cloned[i] = value;\n } else if (value instanceof Array) {\n cloned[i] = value.map(function (j) {\n return cloneNode(j, cloned);\n });\n } else {\n if (type === 'object' && value !== null) value = cloneNode(value);\n cloned[i] = value;\n }\n }\n\n return cloned;\n};\n\n/**\n * All node classes inherit the following common methods.\n *\n * @abstract\n */\n\nvar Node = function () {\n\n /**\n * @param {object} [defaults] - value for node properties\n */\n function Node() {\n var defaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Node);\n\n this.raws = {};\n if ((typeof defaults === 'undefined' ? 'undefined' : _typeof(defaults)) !== 'object' && typeof defaults !== 'undefined') {\n throw new Error('PostCSS nodes constructor accepts object, not ' + JSON.stringify(defaults));\n }\n for (var name in defaults) {\n this[name] = defaults[name];\n }\n }\n\n /**\n * Returns a CssSyntaxError instance containing the original position\n * of the node in the source, showing line and column numbers and also\n * a small excerpt to facilitate debugging.\n *\n * If present, an input source map will be used to get the original position\n * of the source, even from a previous compilation step\n * (e.g., from Sass compilation).\n *\n * This method produces very useful error messages.\n *\n * @param {string} message - error description\n * @param {object} [opts] - options\n * @param {string} opts.plugin - plugin name that created this error.\n * PostCSS will set it automatically.\n * @param {string} opts.word - a word inside a node’s string that should\n * be highlighted as the source of the error\n * @param {number} opts.index - an index inside a node’s string that should\n * be highlighted as the source of the error\n *\n * @return {CssSyntaxError} error object to throw it\n *\n * @example\n * if ( !variables[name] ) {\n * throw decl.error('Unknown variable ' + name, { word: name });\n * // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black\n * // color: $black\n * // a\n * // ^\n * // background: white\n * }\n */\n\n\n Node.prototype.error = function error(message) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.source) {\n var pos = this.positionBy(opts);\n return this.source.input.error(message, pos.line, pos.column, opts);\n } else {\n return new _cssSyntaxError2.default(message);\n }\n };\n\n /**\n * This method is provided as a convenience wrapper for {@link Result#warn}.\n *\n * @param {Result} result - the {@link Result} instance\n * that will receive the warning\n * @param {string} text - warning message\n * @param {object} [opts] - options\n * @param {string} opts.plugin - plugin name that created this warning.\n * PostCSS will set it automatically.\n * @param {string} opts.word - a word inside a node’s string that should\n * be highlighted as the source of the warning\n * @param {number} opts.index - an index inside a node’s string that should\n * be highlighted as the source of the warning\n *\n * @return {Warning} created warning object\n *\n * @example\n * const plugin = postcss.plugin('postcss-deprecated', () => {\n * return (root, result) => {\n * root.walkDecls('bad', decl => {\n * decl.warn(result, 'Deprecated property bad');\n * });\n * };\n * });\n */\n\n\n Node.prototype.warn = function warn(result, text, opts) {\n var data = { node: this };\n for (var i in opts) {\n data[i] = opts[i];\n }return result.warn(text, data);\n };\n\n /**\n * Removes the node from its parent and cleans the parent properties\n * from the node and its children.\n *\n * @example\n * if ( decl.prop.match(/^-webkit-/) ) {\n * decl.remove();\n * }\n *\n * @return {Node} node to make calls chain\n */\n\n\n Node.prototype.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = undefined;\n return this;\n };\n\n /**\n * Returns a CSS string representing the node.\n *\n * @param {stringifier|syntax} [stringifier] - a syntax to use\n * in string generation\n *\n * @return {string} CSS string of this node\n *\n * @example\n * postcss.rule({ selector: 'a' }).toString() //=> \"a {}\"\n */\n\n\n Node.prototype.toString = function toString() {\n var stringifier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _stringify2.default;\n\n if (stringifier.stringify) stringifier = stringifier.stringify;\n var result = '';\n stringifier(this, function (i) {\n result += i;\n });\n return result;\n };\n\n /**\n * Returns a clone of the node.\n *\n * The resulting cloned node and its (cloned) children will have\n * a clean parent and code style properties.\n *\n * @param {object} [overrides] - new properties to override in the clone.\n *\n * @example\n * const cloned = decl.clone({ prop: '-moz-' + decl.prop });\n * cloned.raws.before //=> undefined\n * cloned.parent //=> undefined\n * cloned.toString() //=> -moz-transform: scale(0)\n *\n * @return {Node} clone of the node\n */\n\n\n Node.prototype.clone = function clone() {\n var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var cloned = cloneNode(this);\n for (var name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n };\n\n /**\n * Shortcut to clone the node and insert the resulting cloned node\n * before the current node.\n *\n * @param {object} [overrides] - new properties to override in the clone.\n *\n * @example\n * decl.cloneBefore({ prop: '-moz-' + decl.prop });\n *\n * @return {Node} - new node\n */\n\n\n Node.prototype.cloneBefore = function cloneBefore() {\n var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n };\n\n /**\n * Shortcut to clone the node and insert the resulting cloned node\n * after the current node.\n *\n * @param {object} [overrides] - new properties to override in the clone.\n *\n * @return {Node} - new node\n */\n\n\n Node.prototype.cloneAfter = function cloneAfter() {\n var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n };\n\n /**\n * Inserts node(s) before the current node and removes the current node.\n *\n * @param {...Node} nodes - node(s) to replace current one\n *\n * @example\n * if ( atrule.name == 'mixin' ) {\n * atrule.replaceWith(mixinRules[atrule.params]);\n * }\n *\n * @return {Node} current node to methods chain\n */\n\n\n Node.prototype.replaceWith = function replaceWith() {\n if (this.parent) {\n for (var _len = arguments.length, nodes = Array(_len), _key = 0; _key < _len; _key++) {\n nodes[_key] = arguments[_key];\n }\n\n for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var node = _ref;\n\n this.parent.insertBefore(this, node);\n }\n\n this.remove();\n }\n\n return this;\n };\n\n Node.prototype.moveTo = function moveTo(newParent) {\n (0, _warnOnce2.default)('Node#moveTo was deprecated. Use Container#append.');\n this.cleanRaws(this.root() === newParent.root());\n this.remove();\n newParent.append(this);\n return this;\n };\n\n Node.prototype.moveBefore = function moveBefore(otherNode) {\n (0, _warnOnce2.default)('Node#moveBefore was deprecated. Use Node#before.');\n this.cleanRaws(this.root() === otherNode.root());\n this.remove();\n otherNode.parent.insertBefore(otherNode, this);\n return this;\n };\n\n Node.prototype.moveAfter = function moveAfter(otherNode) {\n (0, _warnOnce2.default)('Node#moveAfter was deprecated. Use Node#after.');\n this.cleanRaws(this.root() === otherNode.root());\n this.remove();\n otherNode.parent.insertAfter(otherNode, this);\n return this;\n };\n\n /**\n * Returns the next child of the node’s parent.\n * Returns `undefined` if the current node is the last child.\n *\n * @return {Node|undefined} next node\n *\n * @example\n * if ( comment.text === 'delete next' ) {\n * const next = comment.next();\n * if ( next ) {\n * next.remove();\n * }\n * }\n */\n\n\n Node.prototype.next = function next() {\n if (!this.parent) return undefined;\n var index = this.parent.index(this);\n return this.parent.nodes[index + 1];\n };\n\n /**\n * Returns the previous child of the node’s parent.\n * Returns `undefined` if the current node is the first child.\n *\n * @return {Node|undefined} previous node\n *\n * @example\n * const annotation = decl.prev();\n * if ( annotation.type == 'comment' ) {\n * readAnnotation(annotation.text);\n * }\n */\n\n\n Node.prototype.prev = function prev() {\n if (!this.parent) return undefined;\n var index = this.parent.index(this);\n return this.parent.nodes[index - 1];\n };\n\n /**\n * Insert new node before current node to current node’s parent.\n *\n * Just alias for `node.parent.insertBefore(node, add)`.\n *\n * @param {Node|object|string|Node[]} add - new node\n *\n * @return {Node} this node for methods chain.\n *\n * @example\n * decl.before('content: \"\"');\n */\n\n\n Node.prototype.before = function before(add) {\n this.parent.insertBefore(this, add);\n return this;\n };\n\n /**\n * Insert new node after current node to current node’s parent.\n *\n * Just alias for `node.parent.insertAfter(node, add)`.\n *\n * @param {Node|object|string|Node[]} add - new node\n *\n * @return {Node} this node for methods chain.\n *\n * @example\n * decl.after('color: black');\n */\n\n\n Node.prototype.after = function after(add) {\n this.parent.insertAfter(this, add);\n return this;\n };\n\n Node.prototype.toJSON = function toJSON() {\n var fixed = {};\n\n for (var name in this) {\n if (!this.hasOwnProperty(name)) continue;\n if (name === 'parent') continue;\n var value = this[name];\n\n if (value instanceof Array) {\n fixed[name] = value.map(function (i) {\n if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && i.toJSON) {\n return i.toJSON();\n } else {\n return i;\n }\n });\n } else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.toJSON) {\n fixed[name] = value.toJSON();\n } else {\n fixed[name] = value;\n }\n }\n\n return fixed;\n };\n\n /**\n * Returns a {@link Node#raws} value. If the node is missing\n * the code style property (because the node was manually built or cloned),\n * PostCSS will try to autodetect the code style property by looking\n * at other nodes in the tree.\n *\n * @param {string} prop - name of code style property\n * @param {string} [defaultType] - name of default value, it can be missed\n * if the value is the same as prop\n *\n * @example\n * const root = postcss.parse('a { background: white }');\n * root.nodes[0].append({ prop: 'color', value: 'black' });\n * root.nodes[0].nodes[1].raws.before //=> undefined\n * root.nodes[0].nodes[1].raw('before') //=> ' '\n *\n * @return {string} code style value\n */\n\n\n Node.prototype.raw = function raw(prop, defaultType) {\n var str = new _stringifier2.default();\n return str.raw(this, prop, defaultType);\n };\n\n /**\n * Finds the Root instance of the node’s tree.\n *\n * @example\n * root.nodes[0].nodes[0].root() === root\n *\n * @return {Root} root parent\n */\n\n\n Node.prototype.root = function root() {\n var result = this;\n while (result.parent) {\n result = result.parent;\n }return result;\n };\n\n Node.prototype.cleanRaws = function cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n };\n\n Node.prototype.positionInside = function positionInside(index) {\n var string = this.toString();\n var column = this.source.start.column;\n var line = this.source.start.line;\n\n for (var i = 0; i < index; i++) {\n if (string[i] === '\\n') {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n\n return { line: line, column: column };\n };\n\n Node.prototype.positionBy = function positionBy(opts) {\n var pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index);\n } else if (opts.word) {\n var index = this.toString().indexOf(opts.word);\n if (index !== -1) pos = this.positionInside(index);\n }\n return pos;\n };\n\n /**\n * @memberof Node#\n * @member {string} type - String representing the node’s type.\n * Possible values are `root`, `atrule`, `rule`,\n * `decl`, or `comment`.\n *\n * @example\n * postcss.decl({ prop: 'color', value: 'black' }).type //=> 'decl'\n */\n\n /**\n * @memberof Node#\n * @member {Container} parent - the node’s parent node.\n *\n * @example\n * root.nodes[0].parent == root;\n */\n\n /**\n * @memberof Node#\n * @member {source} source - the input source of the node\n *\n * The property is used in source map generation.\n *\n * If you create a node manually (e.g., with `postcss.decl()`),\n * that node will not have a `source` property and will be absent\n * from the source map. For this reason, the plugin developer should\n * consider cloning nodes to create new ones (in which case the new node’s\n * source will reference the original, cloned node) or setting\n * the `source` property manually.\n *\n * ```js\n * // Bad\n * const prefixed = postcss.decl({\n * prop: '-moz-' + decl.prop,\n * value: decl.value\n * });\n *\n * // Good\n * const prefixed = decl.clone({ prop: '-moz-' + decl.prop });\n * ```\n *\n * ```js\n * if ( atrule.name == 'add-link' ) {\n * const rule = postcss.rule({ selector: 'a', source: atrule.source });\n * atrule.parent.insertBefore(atrule, rule);\n * }\n * ```\n *\n * @example\n * decl.source.input.from //=> '/home/ai/a.sass'\n * decl.source.start //=> { line: 10, column: 2 }\n * decl.source.end //=> { line: 10, column: 12 }\n */\n\n /**\n * @memberof Node#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `after`: the space symbols after the last child of the node\n * to the end of the node.\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `semicolon`: contains true if the last child has\n * an (optional) semicolon.\n * * `afterName`: the space between the at-rule name and its parameters.\n * * `left`: the space symbols between `/*` and the comment’s text.\n * * `right`: the space symbols between the comment’s text\n * and <code>*/</code>.\n * * `important`: the content of the important statement,\n * if it is not just `!important`.\n *\n * PostCSS cleans selectors, declaration values and at-rule parameters\n * from comments and extra spaces, but it stores origin content in raws\n * properties. As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '\\n ', between: ':' }\n */\n\n return Node;\n}();\n\nexports.default = Node;\n\n/**\n * @typedef {object} position\n * @property {number} line - source line in file\n * @property {number} column - source column in file\n */\n\n/**\n * @typedef {object} source\n * @property {Input} input - {@link Input} with input file\n * @property {position} start - The starting position of the node’s source\n * @property {position} end - The ending position of the node’s source\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGUuZXM2Il0sIm5hbWVzIjpbImNsb25lTm9kZSIsIm9iaiIsInBhcmVudCIsImNsb25lZCIsImNvbnN0cnVjdG9yIiwiaSIsImhhc093blByb3BlcnR5IiwidmFsdWUiLCJ0eXBlIiwiQXJyYXkiLCJtYXAiLCJqIiwiTm9kZSIsImRlZmF1bHRzIiwicmF3cyIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsIm5hbWUiLCJlcnJvciIsIm1lc3NhZ2UiLCJvcHRzIiwic291cmNlIiwicG9zIiwicG9zaXRpb25CeSIsImlucHV0IiwibGluZSIsImNvbHVtbiIsIkNzc1N5bnRheEVycm9yIiwid2FybiIsInJlc3VsdCIsInRleHQiLCJkYXRhIiwibm9kZSIsInJlbW92ZSIsInJlbW92ZUNoaWxkIiwidW5kZWZpbmVkIiwidG9TdHJpbmciLCJzdHJpbmdpZmllciIsImNsb25lIiwib3ZlcnJpZGVzIiwiY2xvbmVCZWZvcmUiLCJpbnNlcnRCZWZvcmUiLCJjbG9uZUFmdGVyIiwiaW5zZXJ0QWZ0ZXIiLCJyZXBsYWNlV2l0aCIsIm5vZGVzIiwibW92ZVRvIiwibmV3UGFyZW50IiwiY2xlYW5SYXdzIiwicm9vdCIsImFwcGVuZCIsIm1vdmVCZWZvcmUiLCJvdGhlck5vZGUiLCJtb3ZlQWZ0ZXIiLCJuZXh0IiwiaW5kZXgiLCJwcmV2IiwiYmVmb3JlIiwiYWRkIiwiYWZ0ZXIiLCJ0b0pTT04iLCJmaXhlZCIsInJhdyIsInByb3AiLCJkZWZhdWx0VHlwZSIsInN0ciIsIlN0cmluZ2lmaWVyIiwia2VlcEJldHdlZW4iLCJiZXR3ZWVuIiwicG9zaXRpb25JbnNpZGUiLCJzdHJpbmciLCJzdGFydCIsIndvcmQiLCJpbmRleE9mIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7QUFFQSxJQUFJQSxZQUFZLFNBQVpBLFNBQVksQ0FBVUMsR0FBVixFQUFlQyxNQUFmLEVBQXVCO0FBQ25DLFFBQUlDLFNBQVMsSUFBSUYs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LElBQW5CLEVBQTBCO0FBQ3RCc0IseUJBQVMsQ0FBVDtBQUNBRCx3QkFBUyxDQUFUO0FBQ0gsYUFIRCxNQUdPO0FBQ0hDLDBCQUFVLENBQVY7QUFDSDtBQUNKOztBQUVELGVBQU8sRUFBRUQsVUFBRixFQUFRQyxjQUFSLEVBQVA7QUFDSCxLOzttQkFFREgsVSx1QkFBV0gsSSxFQUFNO0FBQ2IsWUFBSUUsTUFBTSxLQUFLRCxNQUFMLENBQVlrRCxLQUF0QjtBQUNBLFlBQUtuRCxLQUFLbUMsS0FBVixFQUFrQjtBQUNkakMsa0JBQU0sS0FBSytDLGNBQUwsQ0FBb0JqRCxLQUFLbUMsS0FBekIsQ0FBTjtBQUNILFNBRkQsTUFFTyxJQUFLbkMsS0FBS29ELElBQVYsRUFBaUI7QUFDcEIsZ0JBQUlqQixRQUFRLEtBQUtuQixRQUFMLEdBQWdCcUMsT0FBaEIsQ0FBd0JyRCxLQUFLb0QsSUFBN0IsQ0FBWjtBQUNBLGdCQUFLakIsVUFBVSxDQUFDLENBQWhCLEVBQW9CakMsTUFBTSxLQUFLK0MsY0FBTCxDQUFvQmQsS0FBcEIsQ0FBTjtBQUN2QjtBQUNELGVBQU9qQyxHQUFQO0FBQ0gsSzs7QUFFRDs7Ozs7Ozs7OztBQVVBOzs7Ozs7OztBQVFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCQW9DV1gsSTs7QUFFZjs7Ozs7O0FBTUEiLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDc3NTeW50YXhFcnJvciBmcm9tICcuL2Nzcy1zeW50YXgtZXJyb3InO1xuaW1wb3J0IFN0cmluZ2lmaWVyICAgIGZyb20gJy4vc3RyaW5naWZpZXInO1xuaW1wb3J0IHN0cmluZ2lmeSAgICAgIGZyb20gJy4vc3RyaW5naWZ5JztcbmltcG9ydCB3YXJuT25jZSAgICAgICBmcm9tICcuL3dhcm4tb25jZSc7XG5cbmxldCBjbG9uZU5vZGUgPSBmdW5jdGlvbiAob2JqLCBwYXJlbnQpIHtcbiAgICBsZXQgY2xvbmVkID0gbmV3IG9iai5jb25zdHJ1Y3RvcigpO1xuXG4gICAgZm9yICggbGV0IGkgaW4gb2JqICkge1xuICAgICAgICBpZiAoICFvYmouaGFzT3duUHJvcGVydHkoaSkgKSBjb250aW51ZTtcbiAgICAgICAgbGV0IHZhbHVlID0gb2JqW2ldO1xuICAgICAgICBsZXQgdHlwZSAgPSB0eXBlb2YgdmFsdWU7XG5cbiAgICAgICAgaWYgKCBpID09PSAncGFyZW50JyAmJiB0eXBlID09PSAnb2JqZWN0JyApIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnQpIGNsb25lZFtpXSA9IHBhcmVudDtcbiAgICAgICAgfSBlbHNlIGlmICggaSA9PT0gJ3NvdXJjZScgKSB7XG4gICAgICAgICAgICBjbG9uZWRbaV0gPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmICggdmFsdWUgaW5zdGFuY2VvZiBBcnJheSApIHtcbiAgICAgICAgICAgIGNsb25lZFtpXSA9IHZhbHVlLm1hcCggaiA9PiBjbG9uZU5vZGUoaiwgY2xvbmVkKSApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCB0eXBlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCApIHZhbHVlID0gY2xvbmVOb2RlKHZhbHVlKTtcbiAgICAgICAgICAgIGNsb25lZFtpXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsb25lZDtcbn07XG5cbi8qKlxuICogQWxsIG5vZGUgY2xhc3NlcyBpbmhlcml0IHRoZSBmb2xsb3dpbmcgY29tbW9uIG1ldGhvZHMuXG4gKlxuICogQGFic3RyYWN0XG4gKi9cbmNsYXNzIE5vZGUge1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IFtkZWZhdWx0c10gLSB2YWx1ZSBmb3Igbm9kZSBwcm9wZXJ0aWVzXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoZGVmYXVsdHMgPSB7IH0pIHtcbiAgICAgICAgdGhpcy5yYXdzID0geyB9O1xuICAgICAgICBpZiAoIHR5cGVvZiBkZWZhdWx0cyAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIGRlZmF1bHRzICE9PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAnUG9zdENTUyBub2RlcyBjb25zdHJ1Y3RvciBhY2NlcHRzIG9iamVjdCwgbm90ICcgK1xuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGRlZmF1bHRzKSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yICggbGV0IG5hbWUgaW4gZGVmYXVsdHMgKSB7XG4gICAgICAgICAgICB0aGlzW25hbWVdID0gZGVmYXVsdHNbbmFtZV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgQ3NzU3ludGF4RXJyb3IgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgb3JpZ2luYWwgcG9zaXRpb25cbiAgICAgKiBvZiB0aGUgbm9kZSBpbiB0aGUgc291cmNlLCBzaG93aW5nIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzIGFuZCBhbHNvXG4gICAgICogYSBzbWFsbCBleGNlcnB0IHRvIGZhY2lsaXRhdGUgZGVidWdnaW5nLlxuICAgICAqXG4gICAgICogSWYgcHJlc2VudCwgYW4gaW5wdXQgc291cmNlIG1hcCB3aWxsIGJlIHVzZWQgdG8gZ2V0IHRoZSBvcmlnaW5hbCBwb3NpdGlvblxuICAgICAqIG9mIHRoZSBzb3VyY2UsIGV2ZW4gZnJvbSBhIHByZXZpb3VzIGNvbXBpbGF0aW9uIHN0ZXBcbiAgICAgKiAoZS5nLiwgZnJvbSBTYXNzIGNvbXBpbGF0aW9uKS5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIHByb2R1Y2VzIHZlcnkgdXNlZnVsIGVycm9yIG1lc3NhZ2VzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgICAgIC0gZXJyb3IgZGVzY3JpcHRpb25cbiAgICAgKiBAcGFyYW0ge29iamVjdH0gW29wdHNdICAgICAgLSBvcHRpb25zXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMucGx1Z2luIC0gcGx1Z2luIG5hbWUgdGhhdCBjcmVhdGVkIHRoaXMgZXJyb3IuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zdENTUyB3aWxsIHNldCBpdCBhdXRvbWF0aWNhbGx5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLndvcmQgICAtIGEgd29yZCBpbnNpZGUgYSBub2Rl4oCZcyBzdHJpbmcgdGhhdCBzaG91bGRcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBoaWdobGlnaHRlZCBhcyB0aGUgc291cmNlIG9mIHRoZSBlcnJvclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRzLmluZGV4ICAtIGFuIGluZGV4IGluc2lkZSBhIG5vZGXigJlzIHN0cmluZyB0aGF0IHNob3VsZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGhpZ2hsaWdodGVkIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIGVycm9yXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtDc3NTeW50YXhFcnJvcn0gZXJyb3Igb2JqZWN0IHRvIHRocm93IGl0XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGlmICggIXZhcmlhYmxlc1tuYW1lXSApIHtcbiAgICAgKiAgIHRocm93IGRlY2wuZXJyb3IoJ1Vua25vd24gdmFyaWFibGUgJyArIG5hbWUsIHsgd29yZDogbmFtZSB9KTtcbiAgICAgKiAgIC8vIENzc1N5bnRheEVycm9yOiBwb3N0Y3NzLXZhcnM6YS5zYXNzOjQ6MzogVW5rbm93biB2YXJpYWJsZSAkYmxhY2tcbiAgICAgKiAgIC8vICAgY29sb3I6ICRibGFja1xuICAgICAqICAgLy8gYVxuICAgICAqICAgLy8gICAgICAgICAgXlxuICAgICAqICAgLy8gICBiYWNrZ3JvdW5kOiB3aGl0ZVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBlcnJvcihtZXNzYWdlLCBvcHRzID0geyB9KSB7XG4gICAgICAgIGlmICggdGhpcy5zb3VyY2UgKSB7XG4gICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5wb3NpdGlvbkJ5KG9wdHMpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlLmlucHV0LmVycm9yKG1lc3NhZ2UsIHBvcy5saW5lLCBwb3MuY29sdW1uLCBvcHRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ3NzU3ludGF4RXJyb3IobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgZm9yIHtAbGluayBSZXN1bHQjd2Fybn0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1Jlc3VsdH0gcmVzdWx0ICAgICAgLSB0aGUge0BsaW5rIFJlc3VsdH0gaW5zdGFuY2VcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgd2FybmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0ICAgICAgICAtIHdhcm5pbmcgbWVzc2FnZVxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0c10gICAgICAtIG9wdGlvbnNcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5wbHVnaW4gLSBwbHVnaW4gbmFtZSB0aGF0IGNyZWF0ZWQgdGhpcyB3YXJuaW5nLlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3RDU1Mgd2lsbCBzZXQgaXQgYXV0b21hdGljYWxseS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy53b3JkICAgLSBhIHdvcmQgaW5zaWRlIGEgbm9kZeKAmXMgc3RyaW5nIHRoYXQgc2hvdWxkXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgaGlnaGxpZ2h0ZWQgYXMgdGhlIHNvdXJjZSBvZiB0aGUgd2FybmluZ1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRzLmluZGV4ICAtIGFuIGluZGV4IGluc2lkZSBhIG5vZGXigJlzIHN0cmluZyB0aGF0IHNob3VsZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGhpZ2hsaWdodGVkIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIHdhcm5pbmdcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1dhcm5pbmd9IGNyZWF0ZWQgd2FybmluZyBvYmplY3RcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3QgcGx1Z2luID0gcG9zdGNzcy5wbHVnaW4oJ3Bvc3Rjc3MtZGVwcmVjYXRlZCcsICgpID0+IHtcbiAgICAgKiAgIHJldHVybiAocm9vdCwgcmVzdWx0KSA9PiB7XG4gICAgICogICAgIHJvb3Qud2Fsa0RlY2xzKCdiYWQnLCBkZWNsID0+IHtcbiAgICAgKiAgICAgICBkZWNsLndhcm4ocmVzdWx0LCAnRGVwcmVjYXRlZCBwcm9wZXJ0eSBiYWQnKTtcbiAgICAgKiAgICAgfSk7XG4gICAgICogICB9O1xuICAgICAqIH0pO1xuICAgICAqL1xuICAgIHdhcm4ocmVzdWx0LCB0ZXh0LCBvcHRzKSB7XG4gICAgICAgIGxldCBkYXRhID0geyBub2RlOiB0aGlzIH07XG4gICAgICAgIGZvciAoIGxldCBpIGluIG9wdHMgKSBkYXRhW2ldID0gb3B0c1tpXTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC53YXJuKHRleHQsIGRhdGEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdGhlIG5vZGUgZnJvbSBpdHMgcGFyZW50IGFuZCBjbGVhbnMgdGhlIHBhcmVudCBwcm9wZXJ0aWVzXG4gICAgICogZnJvbSB0aGUgbm9kZSBhbmQgaXRzIGNoaWxkcmVuLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBpZiAoIGRlY2wucHJvcC5tYXRjaCgvXi13ZWJraXQtLykgKSB7XG4gICAgICogICBkZWNsLnJlbW92ZSgpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge05vZGV9IG5vZGUgdG8gbWFrZSBjYWxscyBjaGFpblxuICAgICAqL1xuICAgIHJlbW92ZSgpIHtcbiAgICAgICAgaWYgKCB0aGlzLnBhcmVudCApIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgQ1NTIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIG5vZGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ2lmaWVyfHN5bnRheH0gW3N0cmluZ2lmaWVyXSAtIGEgc3ludGF4IHRvIHVzZVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gc3RyaW5nIGdlbmVyYXRpb25cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gQ1NTIHN0cmluZyBvZiB0aGlzIG5vZGVcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcG9zdGNzcy5ydWxlKHsgc2VsZWN0b3I6ICdhJyB9KS50b1N0cmluZygpIC8vPT4gXCJhIHt9XCJcbiAgICAgKi9cbiAgICB0b1N0cmluZyhzdHJpbmdpZmllciA9IHN0cmluZ2lmeSkge1xuICAgICAgICBpZiAoIHN0cmluZ2lmaWVyLnN0cmluZ2lmeSApIHN0cmluZ2lmaWVyID0gc3RyaW5naWZpZXIuc3RyaW5naWZ5O1xuICAgICAgICBsZXQgcmVzdWx0ICA9ICcnO1xuICAgICAgICBzdHJpbmdpZmllcih0aGlzLCBpID0+IHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgY2xvbmUgb2YgdGhlIG5vZGUuXG4gICAgICpcbiAgICAgKiBUaGUgcmVzdWx0aW5nIGNsb25lZCBub2RlIGFuZCBpdHMgKGNsb25lZCkgY2hpbGRyZW4gd2lsbCBoYXZlXG4gICAgICogYSBjbGVhbiBwYXJlbnQgYW5kIGNvZGUgc3R5bGUgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbb3ZlcnJpZGVzXSAtIG5ldyBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIGluIHRoZSBjbG9uZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3QgY2xvbmVkID0gZGVjbC5jbG9uZSh7IHByb3A6ICctbW96LScgKyBkZWNsLnByb3AgfSk7XG4gICAgICogY2xvbmVkLnJhd3MuYmVmb3JlICAvLz0+IHVuZGVmaW5lZFxuICAgICAqIGNsb25lZC5wYXJlbnQgICAgICAgLy89PiB1bmRlZmluZWRcbiAgICAgKiBjbG9uZWQudG9TdHJpbmcoKSAgIC8vPT4gLW1vei10cmFuc2Zvcm06IHNjYWxlKDApXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtOb2RlfSBjbG9uZSBvZiB0aGUgbm9kZVxuICAgICAqL1xuICAgIGNsb25lKG92ZXJyaWRlcyA9IHsgfSkge1xuICAgICAgICBsZXQgY2xvbmVkID0gY2xvbmVOb2RlKHRoaXMpO1xuICAgICAgICBmb3IgKCBsZXQgbmFtZSBpbiBvdmVycmlkZXMgKSB7XG4gICAgICAgICAgICBjbG9uZWRbbmFtZV0gPSBvdmVycmlkZXNbbmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNsb25lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG9ydGN1dCB0byBjbG9uZSB0aGUgbm9kZSBhbmQgaW5zZXJ0IHRoZSByZXN1bHRpbmcgY2xvbmVkIG5vZGVcbiAgICAgKiBiZWZvcmUgdGhlIGN1cnJlbnQgbm9kZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbb3ZlcnJpZGVzXSAtIG5ldyBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIGluIHRoZSBjbG9uZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogZGVjbC5jbG9uZUJlZm9yZSh7IHByb3A6ICctbW96LScgKyBkZWNsLnByb3AgfSk7XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtOb2RlfSAtIG5ldyBub2RlXG4gICAgICovXG4gICAgY2xvbmVCZWZvcmUob3ZlcnJpZGVzID0geyB9KSB7XG4gICAgICAgIGxldCBjbG9uZWQgPSB0aGlzLmNsb25lKG92ZXJyaWRlcyk7XG4gICAgICAgIHRoaXMucGFyZW50Lmluc2VydEJlZm9yZSh0aGlzLCBjbG9uZWQpO1xuICAgICAgICByZXR1cm4gY2xvbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3J0Y3V0IHRvIGNsb25lIHRoZSBub2RlIGFuZCBpbnNlcnQgdGhlIHJlc3VsdGluZyBjbG9uZWQgbm9kZVxuICAgICAqIGFmdGVyIHRoZSBjdXJyZW50IG5vZGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gW292ZXJyaWRlc10gLSBuZXcgcHJvcGVydGllcyB0byBvdmVycmlkZSBpbiB0aGUgY2xvbmUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtOb2RlfSAtIG5ldyBub2RlXG4gICAgICovXG4gICAgY2xvbmVBZnRlcihvdmVycmlkZXMgPSB7IH0pIHtcbiAgICAgICAgbGV0IGNsb25lZCA9IHRoaXMuY2xvbmUob3ZlcnJpZGVzKTtcbiAgICAgICAgdGhpcy5wYXJlbnQuaW5zZXJ0QWZ0ZXIodGhpcywgY2xvbmVkKTtcbiAgICAgICAgcmV0dXJuIGNsb25lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnNlcnRzIG5vZGUocykgYmVmb3JlIHRoZSBjdXJyZW50IG5vZGUgYW5kIHJlbW92ZXMgdGhlIGN1cnJlbnQgbm9kZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Li4uTm9kZX0gbm9kZXMgLSBub2RlKHMpIHRvIHJlcGxhY2UgY3VycmVudCBvbmVcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogaWYgKCBhdHJ1bGUubmFtZSA9PSAnbWl4aW4nICkge1xuICAgICAqICAgYXRydWxlLnJlcGxhY2VXaXRoKG1peGluUnVsZXNbYXRydWxlLnBhcmFtc10pO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge05vZGV9IGN1cnJlbnQgbm9kZSB0byBtZXRob2RzIGNoYWluXG4gICAgICovXG4gICAgcmVwbGFjZVdpdGgoLi4ubm9kZXMpIHtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuaW5zZXJ0QmVmb3JlKHRoaXMsIG5vZGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgbW92ZVRvKG5ld1BhcmVudCkge1xuICAgICAgICB3YXJuT25jZSgnTm9kZSNtb3ZlVG8gd2FzIGRlcHJlY2F0ZWQuIFVzZSBDb250YWluZXIjYXBwZW5kLicpO1xuICAgICAgICB0aGlzLmNsZWFuUmF3cyh0aGlzLnJvb3QoKSA9PT0gbmV3UGFyZW50LnJvb3QoKSk7XG4gICAgICAgIHRoaXMucmVtb3ZlKCk7XG4gICAgICAgIG5ld1BhcmVudC5hcHBlbmQodGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIG1vdmVCZWZvcmUob3RoZXJOb2RlKSB7XG4gICAgICAgIHdhcm5PbmNlKCdOb2RlI21vdmVCZWZvcmUgd2FzIGRlcHJlY2F0ZWQuIFVzZSBOb2RlI2JlZm9yZS4nKTtcbiAgICAgICAgdGhpcy5jbGVhblJhd3ModGhpcy5yb290KCkgPT09IG90aGVyTm9kZS5yb290KCkpO1xuICAgICAgICB0aGlzLnJlbW92ZSgpO1xuICAgICAgICBvdGhlck5vZGUucGFyZW50Lmluc2VydEJlZm9yZShvdGhlck5vZGUsIHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBtb3ZlQWZ0ZXIob3RoZXJOb2RlKSB7XG4gICAgICAgIHdhcm5PbmNlKCdOb2RlI21vdmVBZnRlciB3YXMgZGVwcmVjYXRlZC4gVXNlIE5vZGUjYWZ0ZXIuJyk7XG4gICAgICAgIHRoaXMuY2xlYW5SYXdzKHRoaXMucm9vdCgpID09PSBvdGhlck5vZGUucm9vdCgpKTtcbiAgICAgICAgdGhpcy5yZW1vdmUoKTtcbiAgICAgICAgb3RoZXJOb2RlLnBhcmVudC5pbnNlcnRBZnRlcihvdGhlck5vZGUsIHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBuZXh0IGNoaWxkIG9mIHRoZSBub2Rl4oCZcyBwYXJlbnQuXG4gICAgICogUmV0dXJucyBgdW5kZWZpbmVkYCBpZiB0aGUgY3VycmVudCBub2RlIGlzIHRoZSBsYXN0IGNoaWxkLlxuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZXx1bmRlZmluZWR9IG5leHQgbm9kZVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBpZiAoIGNvbW1lbnQudGV4dCA9PT0gJ2RlbGV0ZSBuZXh0JyApIHtcbiAgICAgKiAgIGNvbnN0IG5leHQgPSBjb21tZW50Lm5leHQoKTtcbiAgICAgKiAgIGlmICggbmV4dCApIHtcbiAgICAgKiAgICAgbmV4dC5yZW1vdmUoKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICovXG4gICAgbmV4dCgpIHtcbiAgICAgICAgaWYgKCAhdGhpcy5wYXJlbnQgKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLnBhcmVudC5pbmRleCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50Lm5vZGVzW2luZGV4ICsgMV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcHJldmlvdXMgY2hpbGQgb2YgdGhlIG5vZGXigJlzIHBhcmVudC5cbiAgICAgKiBSZXR1cm5zIGB1bmRlZmluZWRgIGlmIHRoZSBjdXJyZW50IG5vZGUgaXMgdGhlIGZpcnN0IGNoaWxkLlxuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZXx1bmRlZmluZWR9IHByZXZpb3VzIG5vZGVcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3QgYW5ub3RhdGlvbiA9IGRlY2wucHJldigpO1xuICAgICAqIGlmICggYW5ub3RhdGlvbi50eXBlID09ICdjb21tZW50JyApIHtcbiAgICAgKiAgcmVhZEFubm90YXRpb24oYW5ub3RhdGlvbi50ZXh0KTtcbiAgICAgKiB9XG4gICAgICovXG4gICAgcHJldigpIHtcbiAgICAgICAgaWYgKCAhdGhpcy5wYXJlbnQgKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLnBhcmVudC5pbmRleCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50Lm5vZGVzW2luZGV4IC0gMV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5zZXJ0IG5ldyBub2RlIGJlZm9yZSBjdXJyZW50IG5vZGUgdG8gY3VycmVudCBub2Rl4oCZcyBwYXJlbnQuXG4gICAgICpcbiAgICAgKiBKdXN0IGFsaWFzIGZvciBgbm9kZS5wYXJlbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIGFkZClgLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtOb2RlfG9iamVjdHxzdHJpbmd8Tm9kZVtdfSBhZGQgLSBuZXcgbm9kZVxuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZX0gdGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBkZWNsLmJlZm9yZSgnY29udGVudDogXCJcIicpO1xuICAgICAqL1xuICAgIGJlZm9yZShhZGQpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQuaW5zZXJ0QmVmb3JlKHRoaXMsIGFkZCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluc2VydCBuZXcgbm9kZSBhZnRlciBjdXJyZW50IG5vZGUgdG8gY3VycmVudCBub2Rl4oCZcyBwYXJlbnQuXG4gICAgICpcbiAgICAgKiBKdXN0IGFsaWFzIGZvciBgbm9kZS5wYXJlbnQuaW5zZXJ0QWZ0ZXIobm9kZSwgYWRkKWAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge05vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW119IGFkZCAtIG5ldyBub2RlXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtOb2RlfSB0aGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW4uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGRlY2wuYWZ0ZXIoJ2NvbG9yOiBibGFjaycpO1xuICAgICAqL1xuICAgIGFmdGVyKGFkZCkge1xuICAgICAgICB0aGlzLnBhcmVudC5pbnNlcnRBZnRlcih0aGlzLCBhZGQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCBmaXhlZCA9IHsgfTtcblxuICAgICAgICBmb3IgKCBsZXQgbmFtZSBpbiB0aGlzICkge1xuICAgICAgICAgICAgaWYgKCAhdGhpcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSApIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKCBuYW1lID09PSAncGFyZW50JyApIGNvbnRpbnVlO1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpc1tuYW1lXTtcblxuICAgICAgICAgICAgaWYgKCB2YWx1ZSBpbnN0YW5jZW9mIEFycmF5ICkge1xuICAgICAgICAgICAgICAgIGZpeGVkW25hbWVdID0gdmFsdWUubWFwKCBpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgaSA9PT0gJ29iamVjdCcgJiYgaS50b0pTT04gKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaS50b0pTT04oKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlLnRvSlNPTiApIHtcbiAgICAgICAgICAgICAgICBmaXhlZFtuYW1lXSA9IHZhbHVlLnRvSlNPTigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmaXhlZFtuYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpeGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSB7QGxpbmsgTm9kZSNyYXdzfSB2YWx1ZS4gSWYgdGhlIG5vZGUgaXMgbWlzc2luZ1xuICAgICAqIHRoZSBjb2RlIHN0eWxlIHByb3BlcnR5IChiZWNhdXNlIHRoZSBub2RlIHdhcyBtYW51YWxseSBidWlsdCBvciBjbG9uZWQpLFxuICAgICAqIFBvc3RDU1Mgd2lsbCB0cnkgdG8gYXV0b2RldGVjdCB0aGUgY29kZSBzdHlsZSBwcm9wZXJ0eSBieSBsb29raW5nXG4gICAgICogYXQgb3RoZXIgbm9kZXMgaW4gdGhlIHRyZWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcCAgICAgICAgICAtIG5hbWUgb2YgY29kZSBzdHlsZSBwcm9wZXJ0eVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbZGVmYXVsdFR5cGVdIC0gbmFtZSBvZiBkZWZhdWx0IHZhbHVlLCBpdCBjYW4gYmUgbWlzc2VkXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGUgdmFsdWUgaXMgdGhlIHNhbWUgYXMgcHJvcFxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGJhY2tncm91bmQ6IHdoaXRlIH0nKTtcbiAgICAgKiByb290Lm5vZGVzWzBdLmFwcGVuZCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAnYmxhY2snIH0pO1xuICAgICAqIHJvb3Qubm9kZXNbMF0ubm9kZXNbMV0ucmF3cy5iZWZvcmUgICAvLz0+IHVuZGVmaW5lZFxuICAgICAqIHJvb3Qubm9kZXNbMF0ubm9kZXNbMV0ucmF3KCdiZWZvcmUnKSAvLz0+ICcgJ1xuICAgICAqXG4gICAgICogQHJldHVybiB7c3RyaW5nfSBjb2RlIHN0eWxlIHZhbHVlXG4gICAgICovXG4gICAgcmF3KHByb3AsIGRlZmF1bHRUeXBlKSB7XG4gICAgICAgIGxldCBzdHIgPSBuZXcgU3RyaW5naWZpZXIoKTtcbiAgICAgICAgcmV0dXJuIHN0ci5yYXcodGhpcywgcHJvcCwgZGVmYXVsdFR5cGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIHRoZSBSb290IGluc3RhbmNlIG9mIHRoZSBub2Rl4oCZcyB0cmVlLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiByb290Lm5vZGVzWzBdLm5vZGVzWzBdLnJvb3QoKSA9PT0gcm9vdFxuICAgICAqXG4gICAgICogQHJldHVybiB7Um9vdH0gcm9vdCBwYXJlbnRcbiAgICAgKi9cbiAgICByb290KCkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcztcbiAgICAgICAgd2hpbGUgKCByZXN1bHQucGFyZW50ICkgcmVzdWx0ID0gcmVzdWx0LnBhcmVudDtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBjbGVhblJhd3Moa2VlcEJldHdlZW4pIHtcbiAgICAgICAgZGVsZXRlIHRoaXMucmF3cy5iZWZvcmU7XG4gICAgICAgIGRlbGV0ZSB0aGlzLnJhd3MuYWZ0ZXI7XG4gICAgICAgIGlmICggIWtlZXBCZXR3ZWVuICkgZGVsZXRlIHRoaXMucmF3cy5iZXR3ZWVuO1xuICAgIH1cblxuICAgIHBvc2l0aW9uSW5zaWRlKGluZGV4KSB7XG4gICAgICAgIGxldCBzdHJpbmcgPSB0aGlzLnRvU3RyaW5nKCk7XG4gICAgICAgIGxldCBjb2x1bW4gPSB0aGlzLnNvdXJjZS5zdGFydC5jb2x1bW47XG4gICAgICAgIGxldCBsaW5lICAgPSB0aGlzLnNvdXJjZS5zdGFydC5saW5lO1xuXG4gICAgICAgIGZvciAoIGxldCBpID0gMDsgaSA8IGluZGV4OyBpKysgKSB7XG4gICAgICAgICAgICBpZiAoIHN0cmluZ1tpXSA9PT0gJ1xcbicgKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uID0gMTtcbiAgICAgICAgICAgICAgICBsaW5lICArPSAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4gKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IGxpbmUsIGNvbHVtbiB9O1xuICAgIH1cblxuICAgIHBvc2l0aW9uQnkob3B0cykge1xuICAgICAgICBsZXQgcG9zID0gdGhpcy5zb3VyY2Uuc3RhcnQ7XG4gICAgICAgIGlmICggb3B0cy5pbmRleCApIHtcbiAgICAgICAgICAgIHBvcyA9IHRoaXMucG9zaXRpb25JbnNpZGUob3B0cy5pbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIG9wdHMud29yZCApIHtcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMudG9TdHJpbmcoKS5pbmRleE9mKG9wdHMud29yZCk7XG4gICAgICAgICAgICBpZiAoIGluZGV4ICE9PSAtMSApIHBvcyA9IHRoaXMucG9zaXRpb25JbnNpZGUoaW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwb3M7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIE5vZGUjXG4gICAgICogQG1lbWJlciB7c3RyaW5nfSB0eXBlIC0gU3RyaW5nIHJlcHJlc2VudGluZyB0aGUgbm9kZeKAmXMgdHlwZS5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZSB2YWx1ZXMgYXJlIGByb290YCwgYGF0cnVsZWAsIGBydWxlYCxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBgZGVjbGAsIG9yIGBjb21tZW50YC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSkudHlwZSAvLz0+ICdkZWNsJ1xuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIE5vZGUjXG4gICAgICogQG1lbWJlciB7Q29udGFpbmVyfSBwYXJlbnQgLSB0aGUgbm9kZeKAmXMgcGFyZW50IG5vZGUuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHJvb3Qubm9kZXNbMF0ucGFyZW50ID09IHJvb3Q7XG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBAbWVtYmVyb2YgTm9kZSNcbiAgICAgKiBAbWVtYmVyIHtzb3VyY2V9IHNvdXJjZSAtIHRoZSBpbnB1dCBzb3VyY2Ugb2YgdGhlIG5vZGVcbiAgICAgKlxuICAgICAqIFRoZSBwcm9wZXJ0eSBpcyB1c2VkIGluIHNvdXJjZSBtYXAgZ2VuZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIElmIHlvdSBjcmVhdGUgYSBub2RlIG1hbnVhbGx5IChlLmcuLCB3aXRoIGBwb3N0Y3NzLmRlY2woKWApLFxuICAgICAqIHRoYXQgbm9kZSB3aWxsIG5vdCBoYXZlIGEgYHNvdXJjZWAgcHJvcGVydHkgYW5kIHdpbGwgYmUgYWJzZW50XG4gICAgICogZnJvbSB0aGUgc291cmNlIG1hcC4gRm9yIHRoaXMgcmVhc29uLCB0aGUgcGx1Z2luIGRldmVsb3BlciBzaG91bGRcbiAgICAgKiBjb25zaWRlciBjbG9uaW5nIG5vZGVzIHRvIGNyZWF0ZSBuZXcgb25lcyAoaW4gd2hpY2ggY2FzZSB0aGUgbmV3IG5vZGXigJlzXG4gICAgICogc291cmNlIHdpbGwgcmVmZXJlbmNlIHRoZSBvcmlnaW5hbCwgY2xvbmVkIG5vZGUpIG9yIHNldHRpbmdcbiAgICAgKiB0aGUgYHNvdXJjZWAgcHJvcGVydHkgbWFudWFsbHkuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIC8vIEJhZFxuICAgICAqIGNvbnN0IHByZWZpeGVkID0gcG9zdGNzcy5kZWNsKHtcbiAgICAgKiAgIHByb3A6ICctbW96LScgKyBkZWNsLnByb3AsXG4gICAgICogICB2YWx1ZTogZGVjbC52YWx1ZVxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gR29vZFxuICAgICAqIGNvbnN0IHByZWZpeGVkID0gZGVjbC5jbG9uZSh7IHByb3A6ICctbW96LScgKyBkZWNsLnByb3AgfSk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIGlmICggYXRydWxlLm5hbWUgPT0gJ2FkZC1saW5rJyApIHtcbiAgICAgKiAgIGNvbnN0IHJ1bGUgPSBwb3N0Y3NzLnJ1bGUoeyBzZWxlY3RvcjogJ2EnLCBzb3VyY2U6IGF0cnVsZS5zb3VyY2UgfSk7XG4gICAgICogICBhdHJ1bGUucGFyZW50Lmluc2VydEJlZm9yZShhdHJ1bGUsIHJ1bGUpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogZGVjbC5zb3VyY2UuaW5wdXQuZnJvbSAvLz0+ICcvaG9tZS9haS9hLnNhc3MnXG4gICAgICogZGVjbC5zb3VyY2Uuc3RhcnQgICAgICAvLz0+IHsgbGluZTogMTAsIGNvbHVtbjogMiB9XG4gICAgICogZGVjbC5zb3VyY2UuZW5kICAgICAgICAvLz0+IHsgbGluZTogMTAsIGNvbHVtbjogMTIgfVxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIE5vZGUjXG4gICAgICogQG1lbWJlciB7b2JqZWN0fSByYXdzIC0gSW5mb3JtYXRpb24gdG8gZ2VuZXJhdGUgYnl0ZS10by1ieXRlIGVxdWFsXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSBzdHJpbmcgYXMgaXQgd2FzIGluIHRoZSBvcmlnaW4gaW5wdXQuXG4gICAgICpcbiAgICAgKiBFdmVyeSBwYXJzZXIgc2F2ZXMgaXRzIG93biBwcm9wZXJ0aWVzLFxuICAgICAqIGJ1dCB0aGUgZGVmYXVsdCBDU1MgcGFyc2VyIHVzZXM6XG4gICAgICpcbiAgICAgKiAqIGBiZWZvcmVgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZWZvcmUgdGhlIG5vZGUuIEl0IGFsc28gc3RvcmVzIGAqYFxuICAgICAqICAgYW5kIGBfYCBzeW1ib2xzIGJlZm9yZSB0aGUgZGVjbGFyYXRpb24gKElFIGhhY2spLlxuICAgICAqICogYGFmdGVyYDogdGhlIHNwYWNlIHN5bWJvbHMgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQgb2YgdGhlIG5vZGVcbiAgICAgKiAgIHRvIHRoZSBlbmQgb2YgdGhlIG5vZGUuXG4gICAgICogKiBgYmV0d2VlbmA6IHRoZSBzeW1ib2xzIGJldHdlZW4gdGhlIHByb3BlcnR5IGFuZCB2YWx1ZVxuICAgICAqICAgZm9yIGRlY2xhcmF0aW9ucywgc2VsZWN0b3IgYW5kIGB7YCBmb3IgcnVsZXMsIG9yIGxhc3QgcGFyYW1ldGVyXG4gICAgICogICBhbmQgYHtgIGZvciBhdC1ydWxlcy5cbiAgICAgKiAqIGBzZW1pY29sb25gOiBjb250YWlucyB0cnVlIGlmIHRoZSBsYXN0IGNoaWxkIGhhc1xuICAgICAqICAgYW4gKG9wdGlvbmFsKSBzZW1pY29sb24uXG4gICAgICogKiBgYWZ0ZXJOYW1lYDogdGhlIHNwYWNlIGJldHdlZW4gdGhlIGF0LXJ1bGUgbmFtZSBhbmQgaXRzIHBhcmFtZXRlcnMuXG4gICAgICogKiBgbGVmdGA6IHRoZSBzcGFjZSBzeW1ib2xzIGJldHdlZW4gYC8qYCBhbmQgdGhlIGNvbW1lbnTigJlzIHRleHQuXG4gICAgICogKiBgcmlnaHRgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZXR3ZWVuIHRoZSBjb21tZW504oCZcyB0ZXh0XG4gICAgICogICBhbmQgPGNvZGU+KiYjNDc7PC9jb2RlPi5cbiAgICAgKiAqIGBpbXBvcnRhbnRgOiB0aGUgY29udGVudCBvZiB0aGUgaW1wb3J0YW50IHN0YXRlbWVudCxcbiAgICAgKiAgIGlmIGl0IGlzIG5vdCBqdXN0IGAhaW1wb3J0YW50YC5cbiAgICAgKlxuICAgICAqIFBvc3RDU1MgY2xlYW5zIHNlbGVjdG9ycywgZGVjbGFyYXRpb24gdmFsdWVzIGFuZCBhdC1ydWxlIHBhcmFtZXRlcnNcbiAgICAgKiBmcm9tIGNvbW1lbnRzIGFuZCBleHRyYSBzcGFjZXMsIGJ1dCBpdCBzdG9yZXMgb3JpZ2luIGNvbnRlbnQgaW4gcmF3c1xuICAgICAqIHByb3BlcnRpZXMuIEFzIHN1Y2gsIGlmIHlvdSBkb27igJl0IGNoYW5nZSBhIGRlY2xhcmF0aW9u4oCZcyB2YWx1ZSxcbiAgICAgKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSByYXcgdmFsdWUgd2l0aCBjb21tZW50cy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2Ege1xcbiAgY29sb3I6YmxhY2tcXG59JylcbiAgICAgKiByb290LmZpcnN0LmZpcnN0LnJhd3MgLy89PiB7IGJlZm9yZTogJ1xcbiAgJywgYmV0d2VlbjogJzonIH1cbiAgICAgKi9cblxufVxuXG5leHBvcnQgZGVmYXVsdCBOb2RlO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHBvc2l0aW9uXG4gKiBAcHJvcGVydHkge251bWJlcn0gbGluZSAgIC0gc291cmNlIGxpbmUgaW4gZmlsZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNvbHVtbiAtIHNvdXJjZSBjb2x1bW4gaW4gZmlsZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gc291cmNlXG4gKiBAcHJvcGVydHkge0lucHV0fSBpbnB1dCAgICAtIHtAbGluayBJbnB1dH0gd2l0aCBpbnB1dCBmaWxlXG4gKiBAcHJvcGVydHkge3Bvc2l0aW9ufSBzdGFydCAtIFRoZSBzdGFydGluZyBwb3NpdGlvbiBvZiB0aGUgbm9kZeKAmXMgc291cmNlXG4gKiBAcHJvcGVydHkge3Bvc2l0aW9ufSBlbmQgICAtIFRoZSBlbmRpbmcgcG9zaXRpb24gb2YgdGhlIG5vZGXigJlzIHNvdXJjZVxuICovXG4iXX0=\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nexports.extname = function(path) {\n return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","'use strict';\n\nexports.__esModule = true;\nexports.default = stringify;\n\nvar _stringifier = require('./stringifier');\n\nvar _stringifier2 = _interopRequireDefault(_stringifier);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringify(node, builder) {\n var str = new _stringifier2.default(builder);\n str.stringify(node);\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmeS5lczYiXSwibmFtZXMiOlsic3RyaW5naWZ5Iiwibm9kZSIsImJ1aWxkZXIiLCJzdHIiLCJTdHJpbmdpZmllciJdLCJtYXBwaW5ncyI6Ijs7O2tCQUV3QkEsUzs7QUFGeEI7Ozs7OztBQUVlLFNBQVNBLFNBQVQsQ0FBbUJDLElBQW5CLEVBQXlCQyxPQUF6QixFQUFrQztBQUM3QyxRQUFJQyxNQUFNLElBQUlDLHFCQUFKLENBQWdCRixPQUFoQixDQUFWO0FBQ0FDLFFBQUlILFNBQUosQ0FBY0MsSUFBZDtBQUNIIiwiZmlsZSI6InN0cmluZ2lmeS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTdHJpbmdpZmllciBmcm9tICcuL3N0cmluZ2lmaWVyJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RyaW5naWZ5KG5vZGUsIGJ1aWxkZXIpIHtcbiAgICBsZXQgc3RyID0gbmV3IFN0cmluZ2lmaWVyKGJ1aWxkZXIpO1xuICAgIHN0ci5zdHJpbmdpZnkobm9kZSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.default = parse;\n\nvar _parser = require('./parser');\n\nvar _parser2 = _interopRequireDefault(_parser);\n\nvar _input = require('./input');\n\nvar _input2 = _interopRequireDefault(_input);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(css, opts) {\n if (opts && opts.safe) {\n throw new Error('Option safe was removed. ' + 'Use parser: require(\"postcss-safe-parser\")');\n }\n\n var input = new _input2.default(css, opts);\n var parser = new _parser2.default(input);\n try {\n parser.parse();\n } catch (e) {\n if (e.name === 'CssSyntaxError' && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e.message += '\\nYou tried to parse SCSS with ' + 'the standard CSS parser; ' + 'try again with the postcss-scss parser';\n } else if (/\\.sass/i.test(opts.from)) {\n e.message += '\\nYou tried to parse Sass with ' + 'the standard CSS parser; ' + 'try again with the postcss-sass parser';\n } else if (/\\.less$/i.test(opts.from)) {\n e.message += '\\nYou tried to parse Less with ' + 'the standard CSS parser; ' + 'try again with the postcss-less parser';\n }\n }\n throw e;\n }\n\n return parser.root;\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlLmVzNiJdLCJuYW1lcyI6WyJwYXJzZSIsImNzcyIsIm9wdHMiLCJzYWZlIiwiRXJyb3IiLCJpbnB1dCIsIklucHV0IiwicGFyc2VyIiwiUGFyc2VyIiwiZSIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm1lc3NhZ2UiLCJyb290Il0sIm1hcHBpbmdzIjoiOzs7a0JBR3dCQSxLOztBQUh4Qjs7OztBQUNBOzs7Ozs7QUFFZSxTQUFTQSxLQUFULENBQWVDLEdBQWYsRUFBb0JDLElBQXBCLEVBQTBCO0FBQ3JDLFFBQUtBLFFBQVFBLEtBQUtDLElBQWxCLEVBQXlCO0FBQ3JCLGNBQU0sSUFBSUMsS0FBSixDQUFVLDhCQUNBLDRDQURWLENBQU47QUFFSDs7QUFFRCxRQUFJQyxRQUFRLElBQUlDLGVBQUosQ0FBVUwsR0FBVixFQUFlQyxJQUFmLENBQVo7QUFDQSxRQUFJSyxTQUFTLElBQUlDLGdCQUFKLENBQVdILEtBQVgsQ0FBYjtBQUNBLFFBQUk7QUFDQUUsZUFBT1AsS0FBUDtBQUNILEtBRkQsQ0FFRSxPQUFPUyxDQUFQLEVBQVU7QUFDUixZQUFLQSxFQUFFQyxJQUFGLEtBQVcsZ0JBQVgsSUFBK0JSLElBQS9CLElBQXVDQSxLQUFLUyxJQUFqRCxFQUF3RDtBQUNwRCxnQkFBSyxXQUFXQyxJQUFYLENBQWdCVixLQUFLUyxJQUFyQixDQUFMLEVBQWtDO0FBQzlCRixrQkFBRUksT0FBRixJQUFhLG9DQUNBLDJCQURBLEdBRUEsd0NBRmI7QUFHSCxhQUpELE1BSU8sSUFBSyxVQUFVRCxJQUFWLENBQWVWLEtBQUtTLElBQXBCLENBQUwsRUFBaUM7QUFDcENGLGtCQUFFSSxPQUFGLElBQWEsb0NBQ0EsMkJBREEsR0FFQSx3Q0FGYjtBQUdILGFBSk0sTUFJQSxJQUFLLFdBQVdELElBQVgsQ0FBZ0JWLEtBQUtTLElBQXJCLENBQUwsRUFBa0M7QUFDckNGLGtCQUFFSSxPQUFGLElBQWEsb0NBQ0EsMkJBREEsR0FFQSx3Q0FGYjtBQUdIO0FBQ0o7QUFDRCxjQUFNSixDQUFOO0FBQ0g7O0FBRUQsV0FBT0YsT0FBT08sSUFBZDtBQUNIIiwiZmlsZSI6InBhcnNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFBhcnNlciBmcm9tICcuL3BhcnNlcic7XG5pbXBvcnQgSW5wdXQgIGZyb20gJy4vaW5wdXQnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwYXJzZShjc3MsIG9wdHMpIHtcbiAgICBpZiAoIG9wdHMgJiYgb3B0cy5zYWZlICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ09wdGlvbiBzYWZlIHdhcyByZW1vdmVkLiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdVc2UgcGFyc2VyOiByZXF1aXJlKFwicG9zdGNzcy1zYWZlLXBhcnNlclwiKScpO1xuICAgIH1cblxuICAgIGxldCBpbnB1dCA9IG5ldyBJbnB1dChjc3MsIG9wdHMpO1xuICAgIGxldCBwYXJzZXIgPSBuZXcgUGFyc2VyKGlucHV0KTtcbiAgICB0cnkge1xuICAgICAgICBwYXJzZXIucGFyc2UoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmICggZS5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InICYmIG9wdHMgJiYgb3B0cy5mcm9tICkge1xuICAgICAgICAgICAgaWYgKCAvXFwuc2NzcyQvaS50ZXN0KG9wdHMuZnJvbSkgKSB7XG4gICAgICAgICAgICAgICAgZS5tZXNzYWdlICs9ICdcXG5Zb3UgdHJpZWQgdG8gcGFyc2UgU0NTUyB3aXRoICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIHN0YW5kYXJkIENTUyBwYXJzZXI7ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJ5IGFnYWluIHdpdGggdGhlIHBvc3Rjc3Mtc2NzcyBwYXJzZXInO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggL1xcLnNhc3MvaS50ZXN0KG9wdHMuZnJvbSkgKSB7XG4gICAgICAgICAgICAgICAgZS5tZXNzYWdlICs9ICdcXG5Zb3UgdHJpZWQgdG8gcGFyc2UgU2FzcyB3aXRoICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIHN0YW5kYXJkIENTUyBwYXJzZXI7ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJ5IGFnYWluIHdpdGggdGhlIHBvc3Rjc3Mtc2FzcyBwYXJzZXInO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggL1xcLmxlc3MkL2kudGVzdChvcHRzLmZyb20pICkge1xuICAgICAgICAgICAgICAgIGUubWVzc2FnZSArPSAnXFxuWW91IHRyaWVkIHRvIHBhcnNlIExlc3Mgd2l0aCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzdGFuZGFyZCBDU1MgcGFyc2VyOyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyeSBhZ2FpbiB3aXRoIHRoZSBwb3N0Y3NzLWxlc3MgcGFyc2VyJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJzZXIucm9vdDtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _node = require('./node');\n\nvar _node2 = _interopRequireDefault(_node);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Represents a comment between declarations or statements (rule and at-rules).\n *\n * Comments inside selectors, at-rule parameters, or declaration values\n * will be stored in the `raws` properties explained above.\n *\n * @extends Node\n */\nvar Comment = function (_Node) {\n _inherits(Comment, _Node);\n\n function Comment(defaults) {\n _classCallCheck(this, Comment);\n\n var _this = _possibleConstructorReturn(this, _Node.call(this, defaults));\n\n _this.type = 'comment';\n return _this;\n }\n\n /**\n * @memberof Comment#\n * @member {string} text - the comment’s text\n */\n\n /**\n * @memberof Comment#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node.\n * * `left`: the space symbols between `/*` and the comment’s text.\n * * `right`: the space symbols between the comment’s text.\n */\n\n\n return Comment;\n}(_node2.default);\n\nexports.default = Comment;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbW1lbnQuZXM2Il0sIm5hbWVzIjpbIkNvbW1lbnQiLCJkZWZhdWx0cyIsInR5cGUiLCJOb2RlIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7Ozs7Ozs7OztBQUVBOzs7Ozs7OztJQVFNQSxPOzs7QUFFRixtQkFBWUMsUUFBWixFQUFzQjtBQUFBOztBQUFBLGlEQUNsQixpQkFBTUEsUUFBTixDQURrQjs7QUFFbEIsVUFBS0MsSUFBTCxHQUFZLFNBQVo7QUFGa0I7QUFHckI7O0FBRUQ7Ozs7O0FBS0E7Ozs7Ozs7Ozs7Ozs7OztFQVprQkMsYzs7a0JBMEJQSCxPIiwiZmlsZSI6ImNvbW1lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTm9kZSBmcm9tICcuL25vZGUnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjb21tZW50IGJldHdlZW4gZGVjbGFyYXRpb25zIG9yIHN0YXRlbWVudHMgKHJ1bGUgYW5kIGF0LXJ1bGVzKS5cbiAqXG4gKiBDb21tZW50cyBpbnNpZGUgc2VsZWN0b3JzLCBhdC1ydWxlIHBhcmFtZXRlcnMsIG9yIGRlY2xhcmF0aW9uIHZhbHVlc1xuICogd2lsbCBiZSBzdG9yZWQgaW4gdGhlIGByYXdzYCBwcm9wZXJ0aWVzIGV4cGxhaW5lZCBhYm92ZS5cbiAqXG4gKiBAZXh0ZW5kcyBOb2RlXG4gKi9cbmNsYXNzIENvbW1lbnQgZXh0ZW5kcyBOb2RlIHtcblxuICAgIGNvbnN0cnVjdG9yKGRlZmF1bHRzKSB7XG4gICAgICAgIHN1cGVyKGRlZmF1bHRzKTtcbiAgICAgICAgdGhpcy50eXBlID0gJ2NvbW1lbnQnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBtZW1iZXJvZiBDb21tZW50I1xuICAgICAqIEBtZW1iZXIge3N0cmluZ30gdGV4dCAtIHRoZSBjb21tZW504oCZcyB0ZXh0XG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBAbWVtYmVyb2YgQ29tbWVudCNcbiAgICAgKiBAbWVtYmVyIHtvYmplY3R9IHJhd3MgLSBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlIHN0cmluZyBhcyBpdCB3YXMgaW4gdGhlIG9yaWdpbiBpbnB1dC5cbiAgICAgKlxuICAgICAqIEV2ZXJ5IHBhcnNlciBzYXZlcyBpdHMgb3duIHByb3BlcnRpZXMsXG4gICAgICogYnV0IHRoZSBkZWZhdWx0IENTUyBwYXJzZXIgdXNlczpcbiAgICAgKlxuICAgICAqICogYGJlZm9yZWA6IHRoZSBzcGFjZSBzeW1ib2xzIGJlZm9yZSB0aGUgbm9kZS5cbiAgICAgKiAqIGBsZWZ0YDogdGhlIHNwYWNlIHN5bWJvbHMgYmV0d2VlbiBgLypgIGFuZCB0aGUgY29tbWVudOKAmXMgdGV4dC5cbiAgICAgKiAqIGByaWdodGA6IHRoZSBzcGFjZSBzeW1ib2xzIGJldHdlZW4gdGhlIGNvbW1lbnTigJlzIHRleHQuXG4gICAgICovXG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbW1lbnQ7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _declaration = require('./declaration');\n\nvar _declaration2 = _interopRequireDefault(_declaration);\n\nvar _comment = require('./comment');\n\nvar _comment2 = _interopRequireDefault(_comment);\n\nvar _node = require('./node');\n\nvar _node2 = _interopRequireDefault(_node);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction cleanSource(nodes) {\n return nodes.map(function (i) {\n if (i.nodes) i.nodes = cleanSource(i.nodes);\n delete i.source;\n return i;\n });\n}\n\n/**\n * The {@link Root}, {@link AtRule}, and {@link Rule} container nodes\n * inherit some common methods to help work with their children.\n *\n * Note that all containers can store any content. If you write a rule inside\n * a rule, PostCSS will parse it.\n *\n * @extends Node\n * @abstract\n */\n\nvar Container = function (_Node) {\n _inherits(Container, _Node);\n\n function Container() {\n _classCallCheck(this, Container);\n\n return _possibleConstructorReturn(this, _Node.apply(this, arguments));\n }\n\n Container.prototype.push = function push(child) {\n child.parent = this;\n this.nodes.push(child);\n return this;\n };\n\n /**\n * Iterates through the container’s immediate children,\n * calling `callback` for each child.\n *\n * Returning `false` in the callback will break iteration.\n *\n * This method only iterates through the container’s immediate children.\n * If you need to recursively iterate through all the container’s descendant\n * nodes, use {@link Container#walk}.\n *\n * Unlike the for `{}`-cycle or `Array#forEach` this iterator is safe\n * if you are mutating the array of child nodes during iteration.\n * PostCSS will adjust the current index to match the mutations.\n *\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * const root = postcss.parse('a { color: black; z-index: 1 }');\n * const rule = root.first;\n *\n * for ( let decl of rule.nodes ) {\n * decl.cloneBefore({ prop: '-webkit-' + decl.prop });\n * // Cycle will be infinite, because cloneBefore moves the current node\n * // to the next index\n * }\n *\n * rule.each(decl => {\n * decl.cloneBefore({ prop: '-webkit-' + decl.prop });\n * // Will be executed only for color and z-index\n * });\n */\n\n\n Container.prototype.each = function each(callback) {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n\n this.lastEach += 1;\n var id = this.lastEach;\n this.indexes[id] = 0;\n\n if (!this.nodes) return undefined;\n\n var index = void 0,\n result = void 0;\n while (this.indexes[id] < this.nodes.length) {\n index = this.indexes[id];\n result = callback(this.nodes[index], index);\n if (result === false) break;\n\n this.indexes[id] += 1;\n }\n\n delete this.indexes[id];\n\n return result;\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each node.\n *\n * Like container.each(), this method is safe to use\n * if you are mutating arrays during iteration.\n *\n * If you only need to iterate through the container’s immediate children,\n * use {@link Container#each}.\n *\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * root.walk(node => {\n * // Traverses all descendant nodes.\n * });\n */\n\n\n Container.prototype.walk = function walk(callback) {\n return this.each(function (child, i) {\n var result = callback(child, i);\n if (result !== false && child.walk) {\n result = child.walk(callback);\n }\n return result;\n });\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each declaration node.\n *\n * If you pass a filter, iteration will only happen over declarations\n * with matching properties.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [prop] - string or regular expression\n * to filter declarations by property name\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * root.walkDecls(decl => {\n * checkPropertySupport(decl.prop);\n * });\n *\n * root.walkDecls('border-radius', decl => {\n * decl.remove();\n * });\n *\n * root.walkDecls(/^background/, decl => {\n * decl.value = takeFirstColorFromGradient(decl.value);\n * });\n */\n\n\n Container.prototype.walkDecls = function walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk(function (child, i) {\n if (child.type === 'decl') {\n return callback(child, i);\n }\n });\n } else if (prop instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'decl' && prop.test(child.prop)) {\n return callback(child, i);\n }\n });\n } else {\n return this.walk(function (child, i) {\n if (child.type === 'decl' && child.prop === prop) {\n return callback(child, i);\n }\n });\n }\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each rule node.\n *\n * If you pass a filter, iteration will only happen over rules\n * with matching selectors.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [selector] - string or regular expression\n * to filter rules by selector\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * const selectors = [];\n * root.walkRules(rule => {\n * selectors.push(rule.selector);\n * });\n * console.log(`Your CSS uses ${selectors.length} selectors`);\n */\n\n\n Container.prototype.walkRules = function walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n\n return this.walk(function (child, i) {\n if (child.type === 'rule') {\n return callback(child, i);\n }\n });\n } else if (selector instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'rule' && selector.test(child.selector)) {\n return callback(child, i);\n }\n });\n } else {\n return this.walk(function (child, i) {\n if (child.type === 'rule' && child.selector === selector) {\n return callback(child, i);\n }\n });\n }\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each at-rule node.\n *\n * If you pass a filter, iteration will only happen over at-rules\n * that have matching names.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [name] - string or regular expression\n * to filter at-rules by name\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * root.walkAtRules(rule => {\n * if ( isOld(rule.name) ) rule.remove();\n * });\n *\n * let first = false;\n * root.walkAtRules('charset', rule => {\n * if ( !first ) {\n * first = true;\n * } else {\n * rule.remove();\n * }\n * });\n */\n\n\n Container.prototype.walkAtRules = function walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk(function (child, i) {\n if (child.type === 'atrule') {\n return callback(child, i);\n }\n });\n } else if (name instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'atrule' && name.test(child.name)) {\n return callback(child, i);\n }\n });\n } else {\n return this.walk(function (child, i) {\n if (child.type === 'atrule' && child.name === name) {\n return callback(child, i);\n }\n });\n }\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each comment node.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * root.walkComments(comment => {\n * comment.remove();\n * });\n */\n\n\n Container.prototype.walkComments = function walkComments(callback) {\n return this.walk(function (child, i) {\n if (child.type === 'comment') {\n return callback(child, i);\n }\n });\n };\n\n /**\n * Inserts new nodes to the end of the container.\n *\n * @param {...(Node|object|string|Node[])} children - new nodes\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * const decl1 = postcss.decl({ prop: 'color', value: 'black' });\n * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' });\n * rule.append(decl1, decl2);\n *\n * root.append({ name: 'charset', params: '\"UTF-8\"' }); // at-rule\n * root.append({ selector: 'a' }); // rule\n * rule.append({ prop: 'color', value: 'black' }); // declaration\n * rule.append({ text: 'Comment' }) // comment\n *\n * root.append('a {}');\n * root.first.append('color: black; z-index: 1');\n */\n\n\n Container.prototype.append = function append() {\n for (var _len = arguments.length, children = Array(_len), _key = 0; _key < _len; _key++) {\n children[_key] = arguments[_key];\n }\n\n for (var _iterator = children, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var child = _ref;\n\n var nodes = this.normalize(child, this.last);\n for (var _iterator2 = nodes, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n var node = _ref2;\n this.nodes.push(node);\n }\n }\n return this;\n };\n\n /**\n * Inserts new nodes to the start of the container.\n *\n * @param {...(Node|object|string|Node[])} children - new nodes\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * const decl1 = postcss.decl({ prop: 'color', value: 'black' });\n * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' });\n * rule.prepend(decl1, decl2);\n *\n * root.append({ name: 'charset', params: '\"UTF-8\"' }); // at-rule\n * root.append({ selector: 'a' }); // rule\n * rule.append({ prop: 'color', value: 'black' }); // declaration\n * rule.append({ text: 'Comment' }) // comment\n *\n * root.append('a {}');\n * root.first.append('color: black; z-index: 1');\n */\n\n\n Container.prototype.prepend = function prepend() {\n for (var _len2 = arguments.length, children = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n children[_key2] = arguments[_key2];\n }\n\n children = children.reverse();\n for (var _iterator3 = children, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray3) {\n if (_i3 >= _iterator3.length) break;\n _ref3 = _iterator3[_i3++];\n } else {\n _i3 = _iterator3.next();\n if (_i3.done) break;\n _ref3 = _i3.value;\n }\n\n var child = _ref3;\n\n var nodes = this.normalize(child, this.first, 'prepend').reverse();\n for (var _iterator4 = nodes, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {\n var _ref4;\n\n if (_isArray4) {\n if (_i4 >= _iterator4.length) break;\n _ref4 = _iterator4[_i4++];\n } else {\n _i4 = _iterator4.next();\n if (_i4.done) break;\n _ref4 = _i4.value;\n }\n\n var node = _ref4;\n this.nodes.unshift(node);\n }for (var id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n return this;\n };\n\n Container.prototype.cleanRaws = function cleanRaws(keepBetween) {\n _Node.prototype.cleanRaws.call(this, keepBetween);\n if (this.nodes) {\n for (var _iterator5 = this.nodes, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {\n var _ref5;\n\n if (_isArray5) {\n if (_i5 >= _iterator5.length) break;\n _ref5 = _iterator5[_i5++];\n } else {\n _i5 = _iterator5.next();\n if (_i5.done) break;\n _ref5 = _i5.value;\n }\n\n var node = _ref5;\n node.cleanRaws(keepBetween);\n }\n }\n };\n\n /**\n * Insert new node before old node within the container.\n *\n * @param {Node|number} exist - child or child’s index.\n * @param {Node|object|string|Node[]} add - new node\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop }));\n */\n\n\n Container.prototype.insertBefore = function insertBefore(exist, add) {\n exist = this.index(exist);\n\n var type = exist === 0 ? 'prepend' : false;\n var nodes = this.normalize(add, this.nodes[exist], type).reverse();\n for (var _iterator6 = nodes, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {\n var _ref6;\n\n if (_isArray6) {\n if (_i6 >= _iterator6.length) break;\n _ref6 = _iterator6[_i6++];\n } else {\n _i6 = _iterator6.next();\n if (_i6.done) break;\n _ref6 = _i6.value;\n }\n\n var node = _ref6;\n this.nodes.splice(exist, 0, node);\n }var index = void 0;\n for (var id in this.indexes) {\n index = this.indexes[id];\n if (exist <= index) {\n this.indexes[id] = index + nodes.length;\n }\n }\n\n return this;\n };\n\n /**\n * Insert new node after old node within the container.\n *\n * @param {Node|number} exist - child or child’s index\n * @param {Node|object|string|Node[]} add - new node\n *\n * @return {Node} this node for methods chain\n */\n\n\n Container.prototype.insertAfter = function insertAfter(exist, add) {\n exist = this.index(exist);\n\n var nodes = this.normalize(add, this.nodes[exist]).reverse();\n for (var _iterator7 = nodes, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {\n var _ref7;\n\n if (_isArray7) {\n if (_i7 >= _iterator7.length) break;\n _ref7 = _iterator7[_i7++];\n } else {\n _i7 = _iterator7.next();\n if (_i7.done) break;\n _ref7 = _i7.value;\n }\n\n var node = _ref7;\n this.nodes.splice(exist + 1, 0, node);\n }var index = void 0;\n for (var id in this.indexes) {\n index = this.indexes[id];\n if (exist < index) {\n this.indexes[id] = index + nodes.length;\n }\n }\n\n return this;\n };\n\n /**\n * Removes node from the container and cleans the parent properties\n * from the node and its children.\n *\n * @param {Node|number} child - child or child’s index\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * rule.nodes.length //=> 5\n * rule.removeChild(decl);\n * rule.nodes.length //=> 4\n * decl.parent //=> undefined\n */\n\n\n Container.prototype.removeChild = function removeChild(child) {\n child = this.index(child);\n this.nodes[child].parent = undefined;\n this.nodes.splice(child, 1);\n\n var index = void 0;\n for (var id in this.indexes) {\n index = this.indexes[id];\n if (index >= child) {\n this.indexes[id] = index - 1;\n }\n }\n\n return this;\n };\n\n /**\n * Removes all children from the container\n * and cleans their parent properties.\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * rule.removeAll();\n * rule.nodes.length //=> 0\n */\n\n\n Container.prototype.removeAll = function removeAll() {\n for (var _iterator8 = this.nodes, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {\n var _ref8;\n\n if (_isArray8) {\n if (_i8 >= _iterator8.length) break;\n _ref8 = _iterator8[_i8++];\n } else {\n _i8 = _iterator8.next();\n if (_i8.done) break;\n _ref8 = _i8.value;\n }\n\n var node = _ref8;\n node.parent = undefined;\n }this.nodes = [];\n return this;\n };\n\n /**\n * Passes all declaration values within the container that match pattern\n * through callback, replacing those values with the returned result\n * of callback.\n *\n * This method is useful if you are using a custom unit or function\n * and need to iterate through all values.\n *\n * @param {string|RegExp} pattern - replace pattern\n * @param {object} opts - options to speed up the search\n * @param {string|string[]} opts.props - an array of property names\n * @param {string} opts.fast - string that’s used\n * to narrow down values and speed up\n the regexp search\n * @param {function|string} callback - string to replace pattern\n * or callback that returns a new\n * value.\n * The callback will receive\n * the same arguments as those\n * passed to a function parameter\n * of `String#replace`.\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * root.replaceValues(/\\d+rem/, { fast: 'rem' }, string => {\n * return 15 * parseInt(string) + 'px';\n * });\n */\n\n\n Container.prototype.replaceValues = function replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n\n this.walkDecls(function (decl) {\n if (opts.props && opts.props.indexOf(decl.prop) === -1) return;\n if (opts.fast && decl.value.indexOf(opts.fast) === -1) return;\n\n decl.value = decl.value.replace(pattern, callback);\n });\n\n return this;\n };\n\n /**\n * Returns `true` if callback returns `true`\n * for all of the container’s children.\n *\n * @param {childCondition} condition - iterator returns true or false.\n *\n * @return {boolean} is every child pass condition\n *\n * @example\n * const noPrefixes = rule.every(i => i.prop[0] !== '-');\n */\n\n\n Container.prototype.every = function every(condition) {\n return this.nodes.every(condition);\n };\n\n /**\n * Returns `true` if callback returns `true` for (at least) one\n * of the container’s children.\n *\n * @param {childCondition} condition - iterator returns true or false.\n *\n * @return {boolean} is some child pass condition\n *\n * @example\n * const hasPrefix = rule.some(i => i.prop[0] === '-');\n */\n\n\n Container.prototype.some = function some(condition) {\n return this.nodes.some(condition);\n };\n\n /**\n * Returns a `child`’s index within the {@link Container#nodes} array.\n *\n * @param {Node} child - child of the current container.\n *\n * @return {number} child index\n *\n * @example\n * rule.index( rule.nodes[2] ) //=> 2\n */\n\n\n Container.prototype.index = function index(child) {\n if (typeof child === 'number') {\n return child;\n } else {\n return this.nodes.indexOf(child);\n }\n };\n\n /**\n * The container’s first child.\n *\n * @type {Node}\n *\n * @example\n * rule.first == rules.nodes[0];\n */\n\n\n Container.prototype.normalize = function normalize(nodes, sample) {\n var _this2 = this;\n\n if (typeof nodes === 'string') {\n var parse = require('./parse');\n nodes = cleanSource(parse(nodes).nodes);\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (var _iterator9 = nodes, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {\n var _ref9;\n\n if (_isArray9) {\n if (_i9 >= _iterator9.length) break;\n _ref9 = _iterator9[_i9++];\n } else {\n _i9 = _iterator9.next();\n if (_i9.done) break;\n _ref9 = _i9.value;\n }\n\n var i = _ref9;\n\n if (i.parent) i.parent.removeChild(i, 'ignore');\n }\n } else if (nodes.type === 'root') {\n nodes = nodes.nodes.slice(0);\n for (var _iterator10 = nodes, _isArray10 = Array.isArray(_iterator10), _i11 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {\n var _ref10;\n\n if (_isArray10) {\n if (_i11 >= _iterator10.length) break;\n _ref10 = _iterator10[_i11++];\n } else {\n _i11 = _iterator10.next();\n if (_i11.done) break;\n _ref10 = _i11.value;\n }\n\n var _i10 = _ref10;\n\n if (_i10.parent) _i10.parent.removeChild(_i10, 'ignore');\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === 'undefined') {\n throw new Error('Value field is missed in node creation');\n } else if (typeof nodes.value !== 'string') {\n nodes.value = String(nodes.value);\n }\n nodes = [new _declaration2.default(nodes)];\n } else if (nodes.selector) {\n var Rule = require('./rule');\n nodes = [new Rule(nodes)];\n } else if (nodes.name) {\n var AtRule = require('./at-rule');\n nodes = [new AtRule(nodes)];\n } else if (nodes.text) {\n nodes = [new _comment2.default(nodes)];\n } else {\n throw new Error('Unknown node type in node creation');\n }\n\n var processed = nodes.map(function (i) {\n if (typeof i.before !== 'function') i = _this2.rebuild(i);\n\n if (i.parent) i.parent.removeChild(i);\n if (typeof i.raws.before === 'undefined') {\n if (sample && typeof sample.raws.before !== 'undefined') {\n i.raws.before = sample.raws.before.replace(/[^\\s]/g, '');\n }\n }\n i.parent = _this2;\n return i;\n });\n\n return processed;\n };\n\n Container.prototype.rebuild = function rebuild(node, parent) {\n var _this3 = this;\n\n var fix = void 0;\n if (node.type === 'root') {\n var Root = require('./root');\n fix = new Root();\n } else if (node.type === 'atrule') {\n var AtRule = require('./at-rule');\n fix = new AtRule();\n } else if (node.type === 'rule') {\n var Rule = require('./rule');\n fix = new Rule();\n } else if (node.type === 'decl') {\n fix = new _declaration2.default();\n } else if (node.type === 'comment') {\n fix = new _comment2.default();\n }\n\n for (var i in node) {\n if (i === 'nodes') {\n fix.nodes = node.nodes.map(function (j) {\n return _this3.rebuild(j, fix);\n });\n } else if (i === 'parent' && parent) {\n fix.parent = parent;\n } else if (node.hasOwnProperty(i)) {\n fix[i] = node[i];\n }\n }\n\n return fix;\n };\n\n /**\n * @memberof Container#\n * @member {Node[]} nodes - an array containing the container’s children\n *\n * @example\n * const root = postcss.parse('a { color: black }');\n * root.nodes.length //=> 1\n * root.nodes[0].selector //=> 'a'\n * root.nodes[0].nodes[0].prop //=> 'color'\n */\n\n _createClass(Container, [{\n key: 'first',\n get: function get() {\n if (!this.nodes) return undefined;\n return this.nodes[0];\n }\n\n /**\n * The container’s last child.\n *\n * @type {Node}\n *\n * @example\n * rule.last == rule.nodes[rule.nodes.length - 1];\n */\n\n }, {\n key: 'last',\n get: function get() {\n if (!this.nodes) return undefined;\n return this.nodes[this.nodes.length - 1];\n }\n }]);\n\n return Container;\n}(_node2.default);\n\nexports.default = Container;\n\n/**\n * @callback childCondition\n * @param {Node} node - container child\n * @param {number} index - child index\n * @param {Node[]} nodes - all container children\n * @return {boolean}\n */\n\n/**\n * @callback childIterator\n * @param {Node} node - container child\n * @param {number} index - child index\n * @return {false|undefined} returning `false` will break iteration\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbnRhaW5lci5lczYiXSwibmFtZXMiOlsiY2xlYW5Tb3VyY2UiLCJub2RlcyIsIm1hcCIsImkiLCJzb3VyY2UiLCJDb250YWluZXIiLCJwdXNoIiwiY2hpbGQiLCJwYXJlbnQiLCJlYWNoIiwiY2FsbGJhY2siLCJsYXN0RWFjaCIsImluZGV4ZXMiLCJpZCIsInVuZGVmaW5lZCIsImluZGV4IiwicmVzdWx0IiwibGVuZ3RoIiwid2FsayIsIndhbGtEZWNscyIsInByb3AiLCJ0eXBlIiwiUmVnRXhwIiwidGVzdCIsIndhbGtSdWxlcyIsInNlbGVjdG9yIiwid2Fsa0F0UnVsZXMiLCJuYW1lIiwid2Fsa0NvbW1lbnRzIiwiYXBwZW5kIiwiY2hpbGRyZW4iLCJub3JtYWxpemUiLCJsYXN0Iiwibm9kZSIsInByZXBlbmQiLCJyZXZlcnNlIiwiZmlyc3QiLCJ1bnNoaWZ0IiwiY2xlYW5SYXdzIiwia2VlcEJldHdlZW4iLCJpbnNlcnRCZWZvcmUiLCJleGlzdCIsImFkZCIsInNwbGljZSIsImluc2VydEFmdGVyIiwicmVtb3ZlQ2hpbGQiLCJyZW1vdmVBbGwiLCJyZXBsYWNlVmFsdWVzIiwicGF0dGVybiIsIm9wdHMiLCJwcm9wcyIsImluZGV4T2YiLCJkZWNsIiwiZmFzdCIsInZhbHVlIiwicmVwbGFjZSIsImV2ZXJ5IiwiY29uZGl0aW9uIiwic29tZSIsInNhbXBsZSIsInBhcnNlIiwicmVxdWlyZSIsIkFycmF5IiwiaXNBcnJheSIsInNsaWNlIiwiRXJyb3IiLCJTdHJpbmciLCJEZWNsYXJhdGlvbiIsIlJ1bGUiLCJBdFJ1bGUiLCJ0ZXh0IiwiQ29tbWVudCIsInByb2Nlc3NlZCIsImJlZm9yZSIsInJlYnVpbGQiLCJyYXdzIiwiZml4IiwiUm9vdCIsImoiLCJoYXNPd25Qcm9wZXJ0eSIsIk5vZGUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7Ozs7O0FBRUEsU0FBU0EsV0FBVCxDQUFxQkMsS0FBckIsRUFBNEI7QUFD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Zjs7Ozs7Ozs7QUFRQSIsImZpbGUiOiJjb250YWluZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVjbGFyYXRpb24gZnJvbSAnLi9kZWNsYXJhdGlvbic7XG5pbXBvcnQgQ29tbWVudCAgICAgZnJvbSAnLi9jb21tZW50JztcbmltcG9ydCBOb2RlICAgICAgICBmcm9tICcuL25vZGUnO1xuXG5mdW5jdGlvbiBjbGVhblNvdXJjZShub2Rlcykge1xuICAgIHJldHVybiBub2Rlcy5tYXAoIGkgPT4ge1xuICAgICAgICBpZiAoIGkubm9kZXMgKSBpLm5vZGVzID0gY2xlYW5Tb3VyY2UoaS5ub2Rlcyk7XG4gICAgICAgIGRlbGV0ZSBpLnNvdXJjZTtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgfSk7XG59XG5cbi8qKlxuICogVGhlIHtAbGluayBSb290fSwge0BsaW5rIEF0UnVsZX0sIGFuZCB7QGxpbmsgUnVsZX0gY29udGFpbmVyIG5vZGVzXG4gKiBpbmhlcml0IHNvbWUgY29tbW9uIG1ldGhvZHMgdG8gaGVscCB3b3JrIHdpdGggdGhlaXIgY2hpbGRyZW4uXG4gKlxuICogTm90ZSB0aGF0IGFsbCBjb250YWluZXJzIGNhbiBzdG9yZSBhbnkgY29udGVudC4gSWYgeW91IHdyaXRlIGEgcnVsZSBpbnNpZGVcbiAqIGEgcnVsZSwgUG9zdENTUyB3aWxsIHBhcnNlIGl0LlxuICpcbiAqIEBleHRlbmRzIE5vZGVcbiAqIEBhYnN0cmFjdFxuICovXG5jbGFzcyBDb250YWluZXIgZXh0ZW5kcyBOb2RlIHtcblxuICAgIHB1c2goY2hpbGQpIHtcbiAgICAgICAgY2hpbGQucGFyZW50ID0gdGhpcztcbiAgICAgICAgdGhpcy5ub2Rlcy5wdXNoKGNoaWxkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgdGhyb3VnaCB0aGUgY29udGFpbmVy4oCZcyBpbW1lZGlhdGUgY2hpbGRyZW4sXG4gICAgICogY2FsbGluZyBgY2FsbGJhY2tgIGZvciBlYWNoIGNoaWxkLlxuICAgICAqXG4gICAgICogUmV0dXJuaW5nIGBmYWxzZWAgaW4gdGhlIGNhbGxiYWNrIHdpbGwgYnJlYWsgaXRlcmF0aW9uLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2Qgb25seSBpdGVyYXRlcyB0aHJvdWdoIHRoZSBjb250YWluZXLigJlzIGltbWVkaWF0ZSBjaGlsZHJlbi5cbiAgICAgKiBJZiB5b3UgbmVlZCB0byByZWN1cnNpdmVseSBpdGVyYXRlIHRocm91Z2ggYWxsIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnRcbiAgICAgKiBub2RlcywgdXNlIHtAbGluayBDb250YWluZXIjd2Fsa30uXG4gICAgICpcbiAgICAgKiBVbmxpa2UgdGhlIGZvciBge31gLWN5Y2xlIG9yIGBBcnJheSNmb3JFYWNoYCB0aGlzIGl0ZXJhdG9yIGlzIHNhZmVcbiAgICAgKiBpZiB5b3UgYXJlIG11dGF0aW5nIHRoZSBhcnJheSBvZiBjaGlsZCBub2RlcyBkdXJpbmcgaXRlcmF0aW9uLlxuICAgICAqIFBvc3RDU1Mgd2lsbCBhZGp1c3QgdGhlIGN1cnJlbnQgaW5kZXggdG8gbWF0Y2ggdGhlIG11dGF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Y2hpbGRJdGVyYXRvcn0gY2FsbGJhY2sgLSBpdGVyYXRvciByZWNlaXZlcyBlYWNoIG5vZGUgYW5kIGluZGV4XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IHJldHVybnMgYGZhbHNlYCBpZiBpdGVyYXRpb24gd2FzIGJyb2tlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgY29sb3I6IGJsYWNrOyB6LWluZGV4OiAxIH0nKTtcbiAgICAgKiBjb25zdCBydWxlID0gcm9vdC5maXJzdDtcbiAgICAgKlxuICAgICAqIGZvciAoIGxldCBkZWNsIG9mIHJ1bGUubm9kZXMgKSB7XG4gICAgICogICAgIGRlY2wuY2xvbmVCZWZvcmUoeyBwcm9wOiAnLXdlYmtpdC0nICsgZGVjbC5wcm9wIH0pO1xuICAgICAqICAgICAvLyBDeWNsZSB3aWxsIGJlIGluZmluaXRlLCBiZWNhdXNlIGNsb25lQmVmb3JlIG1vdmVzIHRoZSBjdXJyZW50IG5vZGVcbiAgICAgKiAgICAgLy8gdG8gdGhlIG5leHQgaW5kZXhcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBydWxlLmVhY2goZGVjbCA9PiB7XG4gICAgICogICAgIGRlY2wuY2xvbmVCZWZvcmUoeyBwcm9wOiAnLXdlYmtpdC0nICsgZGVjbC5wcm9wIH0pO1xuICAgICAqICAgICAvLyBXaWxsIGJlIGV4ZWN1dGVkIG9ubHkgZm9yIGNvbG9yIGFuZCB6LWluZGV4XG4gICAgICogfSk7XG4gICAgICovXG4gICAgZWFjaChjYWxsYmFjaykge1xuICAgICAgICBpZiAoICF0aGlzLmxhc3RFYWNoICkgdGhpcy5sYXN0RWFjaCA9IDA7XG4gICAgICAgIGlmICggIXRoaXMuaW5kZXhlcyApIHRoaXMuaW5kZXhlcyA9IHsgfTtcblxuICAgICAgICB0aGlzLmxhc3RFYWNoICs9IDE7XG4gICAgICAgIGxldCBpZCA9IHRoaXMubGFzdEVhY2g7XG4gICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gPSAwO1xuXG4gICAgICAgIGlmICggIXRoaXMubm9kZXMgKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGxldCBpbmRleCwgcmVzdWx0O1xuICAgICAgICB3aGlsZSAoIHRoaXMuaW5kZXhlc1tpZF0gPCB0aGlzLm5vZGVzLmxlbmd0aCApIHtcbiAgICAgICAgICAgIGluZGV4ICA9IHRoaXMuaW5kZXhlc1tpZF07XG4gICAgICAgICAgICByZXN1bHQgPSBjYWxsYmFjayh0aGlzLm5vZGVzW2luZGV4XSwgaW5kZXgpO1xuICAgICAgICAgICAgaWYgKCByZXN1bHQgPT09IGZhbHNlICkgYnJlYWs7XG5cbiAgICAgICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gKz0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlbGV0ZSB0aGlzLmluZGV4ZXNbaWRdO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJhdmVyc2VzIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnQgbm9kZXMsIGNhbGxpbmcgY2FsbGJhY2tcbiAgICAgKiBmb3IgZWFjaCBub2RlLlxuICAgICAqXG4gICAgICogTGlrZSBjb250YWluZXIuZWFjaCgpLCB0aGlzIG1ldGhvZCBpcyBzYWZlIHRvIHVzZVxuICAgICAqIGlmIHlvdSBhcmUgbXV0YXRpbmcgYXJyYXlzIGR1cmluZyBpdGVyYXRpb24uXG4gICAgICpcbiAgICAgKiBJZiB5b3Ugb25seSBuZWVkIHRvIGl0ZXJhdGUgdGhyb3VnaCB0aGUgY29udGFpbmVy4oCZcyBpbW1lZGlhdGUgY2hpbGRyZW4sXG4gICAgICogdXNlIHtAbGluayBDb250YWluZXIjZWFjaH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2NoaWxkSXRlcmF0b3J9IGNhbGxiYWNrIC0gaXRlcmF0b3IgcmVjZWl2ZXMgZWFjaCBub2RlIGFuZCBpbmRleFxuICAgICAqXG4gICAgICogQHJldHVybiB7ZmFsc2V8dW5kZWZpbmVkfSByZXR1cm5zIGBmYWxzZWAgaWYgaXRlcmF0aW9uIHdhcyBicm9rZVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiByb290LndhbGsobm9kZSA9PiB7XG4gICAgICogICAvLyBUcmF2ZXJzZXMgYWxsIGRlc2NlbmRhbnQgbm9kZXMuXG4gICAgICogfSk7XG4gICAgICovXG4gICAgd2FsayhjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCAoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICBpZiAoIHJlc3VsdCAhPT0gZmFsc2UgJiYgY2hpbGQud2FsayApIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBjaGlsZC53YWxrKGNhbGxiYWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyYXZlcnNlcyB0aGUgY29udGFpbmVy4oCZcyBkZXNjZW5kYW50IG5vZGVzLCBjYWxsaW5nIGNhbGxiYWNrXG4gICAgICogZm9yIGVhY2ggZGVjbGFyYXRpb24gbm9kZS5cbiAgICAgKlxuICAgICAqIElmIHlvdSBwYXNzIGEgZmlsdGVyLCBpdGVyYXRpb24gd2lsbCBvbmx5IGhhcHBlbiBvdmVyIGRlY2xhcmF0aW9uc1xuICAgICAqIHdpdGggbWF0Y2hpbmcgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIExpa2Uge0BsaW5rIENvbnRhaW5lciNlYWNofSwgdGhpcyBtZXRob2QgaXMgc2FmZVxuICAgICAqIHRvIHVzZSBpZiB5b3UgYXJlIG11dGF0aW5nIGFycmF5cyBkdXJpbmcgaXRlcmF0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSBbcHJvcF0gICAtIHN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb25cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZmlsdGVyIGRlY2xhcmF0aW9ucyBieSBwcm9wZXJ0eSBuYW1lXG4gICAgICogQHBhcmFtIHtjaGlsZEl0ZXJhdG9yfSBjYWxsYmFjayAtIGl0ZXJhdG9yIHJlY2VpdmVzIGVhY2ggbm9kZSBhbmQgaW5kZXhcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gcmV0dXJucyBgZmFsc2VgIGlmIGl0ZXJhdGlvbiB3YXMgYnJva2VcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcm9vdC53YWxrRGVjbHMoZGVjbCA9PiB7XG4gICAgICogICBjaGVja1Byb3BlcnR5U3VwcG9ydChkZWNsLnByb3ApO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogcm9vdC53YWxrRGVjbHMoJ2JvcmRlci1yYWRpdXMnLCBkZWNsID0+IHtcbiAgICAgKiAgIGRlY2wucmVtb3ZlKCk7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiByb290LndhbGtEZWNscygvXmJhY2tncm91bmQvLCBkZWNsID0+IHtcbiAgICAgKiAgIGRlY2wudmFsdWUgPSB0YWtlRmlyc3RDb2xvckZyb21HcmFkaWVudChkZWNsLnZhbHVlKTtcbiAgICAgKiB9KTtcbiAgICAgKi9cbiAgICB3YWxrRGVjbHMocHJvcCwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKCAhY2FsbGJhY2sgKSB7XG4gICAgICAgICAgICBjYWxsYmFjayA9IHByb3A7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53YWxrKCAoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIGNoaWxkLnR5cGUgPT09ICdkZWNsJyApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICggcHJvcCBpbnN0YW5jZW9mIFJlZ0V4cCApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndhbGsoIChjaGlsZCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICggY2hpbGQudHlwZSA9PT0gJ2RlY2wnICYmIHByb3AudGVzdChjaGlsZC5wcm9wKSApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndhbGsoIChjaGlsZCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICggY2hpbGQudHlwZSA9PT0gJ2RlY2wnICYmIGNoaWxkLnByb3AgPT09IHByb3AgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmF2ZXJzZXMgdGhlIGNvbnRhaW5lcuKAmXMgZGVzY2VuZGFudCBub2RlcywgY2FsbGluZyBjYWxsYmFja1xuICAgICAqIGZvciBlYWNoIHJ1bGUgbm9kZS5cbiAgICAgKlxuICAgICAqIElmIHlvdSBwYXNzIGEgZmlsdGVyLCBpdGVyYXRpb24gd2lsbCBvbmx5IGhhcHBlbiBvdmVyIHJ1bGVzXG4gICAgICogd2l0aCBtYXRjaGluZyBzZWxlY3RvcnMuXG4gICAgICpcbiAgICAgKiBMaWtlIHtAbGluayBDb250YWluZXIjZWFjaH0sIHRoaXMgbWV0aG9kIGlzIHNhZmVcbiAgICAgKiB0byB1c2UgaWYgeW91IGFyZSBtdXRhdGluZyBhcnJheXMgZHVyaW5nIGl0ZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cH0gW3NlbGVjdG9yXSAtIHN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb25cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBmaWx0ZXIgcnVsZXMgYnkgc2VsZWN0b3JcbiAgICAgKiBAcGFyYW0ge2NoaWxkSXRlcmF0b3J9IGNhbGxiYWNrICAgLSBpdGVyYXRvciByZWNlaXZlcyBlYWNoIG5vZGUgYW5kIGluZGV4XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IHJldHVybnMgYGZhbHNlYCBpZiBpdGVyYXRpb24gd2FzIGJyb2tlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IHNlbGVjdG9ycyA9IFtdO1xuICAgICAqIHJvb3Qud2Fsa1J1bGVzKHJ1bGUgPT4ge1xuICAgICAqICAgc2VsZWN0b3JzLnB1c2gocnVsZS5zZWxlY3Rvcik7XG4gICAgICogfSk7XG4gICAgICogY29uc29sZS5sb2coYFlvdXIgQ1NTIHVzZXMgJHtzZWxlY3RvcnMubGVuZ3RofSBzZWxlY3RvcnNgKTtcbiAgICAgKi9cbiAgICB3YWxrUnVsZXMoc2VsZWN0b3IsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmICggIWNhbGxiYWNrICkge1xuICAgICAgICAgICAgY2FsbGJhY2sgPSBzZWxlY3RvcjtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FsayggKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCBjaGlsZC50eXBlID09PSAncnVsZScgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIHNlbGVjdG9yIGluc3RhbmNlb2YgUmVnRXhwICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FsayggKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCBjaGlsZC50eXBlID09PSAncnVsZScgJiYgc2VsZWN0b3IudGVzdChjaGlsZC5zZWxlY3RvcikgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53YWxrKCAoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIGNoaWxkLnR5cGUgPT09ICdydWxlJyAmJiBjaGlsZC5zZWxlY3RvciA9PT0gc2VsZWN0b3IgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmF2ZXJzZXMgdGhlIGNvbnRhaW5lcuKAmXMgZGVzY2VuZGFudCBub2RlcywgY2FsbGluZyBjYWxsYmFja1xuICAgICAqIGZvciBlYWNoIGF0LXJ1bGUgbm9kZS5cbiAgICAgKlxuICAgICAqIElmIHlvdSBwYXNzIGEgZmlsdGVyLCBpdGVyYXRpb24gd2lsbCBvbmx5IGhhcHBlbiBvdmVyIGF0LXJ1bGVzXG4gICAgICogdGhhdCBoYXZlIG1hdGNoaW5nIG5hbWVzLlxuICAgICAqXG4gICAgICogTGlrZSB7QGxpbmsgQ29udGFpbmVyI2VhY2h9LCB0aGlzIG1ldGhvZCBpcyBzYWZlXG4gICAgICogdG8gdXNlIGlmIHlvdSBhcmUgbXV0YXRpbmcgYXJyYXlzIGR1cmluZyBpdGVyYXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB9IFtuYW1lXSAgIC0gc3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvblxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBmaWx0ZXIgYXQtcnVsZXMgYnkgbmFtZVxuICAgICAqIEBwYXJhbSB7Y2hpbGRJdGVyYXRvcn0gY2FsbGJhY2sgLSBpdGVyYXRvciByZWNlaXZlcyBlYWNoIG5vZGUgYW5kIGluZGV4XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IHJldHVybnMgYGZhbHNlYCBpZiBpdGVyYXRpb24gd2FzIGJyb2tlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHJvb3Qud2Fsa0F0UnVsZXMocnVsZSA9PiB7XG4gICAgICogICBpZiAoIGlzT2xkKHJ1bGUubmFtZSkgKSBydWxlLnJlbW92ZSgpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogbGV0IGZpcnN0ID0gZmFsc2U7XG4gICAgICogcm9vdC53YWxrQXRSdWxlcygnY2hhcnNldCcsIHJ1bGUgPT4ge1xuICAgICAqICAgaWYgKCAhZmlyc3QgKSB7XG4gICAgICogICAgIGZpcnN0ID0gdHJ1ZTtcbiAgICAgKiAgIH0gZWxzZSB7XG4gICAgICogICAgIHJ1bGUucmVtb3ZlKCk7XG4gICAgICogICB9XG4gICAgICogfSk7XG4gICAgICovXG4gICAgd2Fsa0F0UnVsZXMobmFtZSwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKCAhY2FsbGJhY2sgKSB7XG4gICAgICAgICAgICBjYWxsYmFjayA9IG5hbWU7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53YWxrKCAoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIGNoaWxkLnR5cGUgPT09ICdhdHJ1bGUnICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soY2hpbGQsIGkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKCBuYW1lIGluc3RhbmNlb2YgUmVnRXhwICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FsayggKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCBjaGlsZC50eXBlID09PSAnYXRydWxlJyAmJiBuYW1lLnRlc3QoY2hpbGQubmFtZSkgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53YWxrKCAoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIGNoaWxkLnR5cGUgPT09ICdhdHJ1bGUnICYmIGNoaWxkLm5hbWUgPT09IG5hbWUgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmF2ZXJzZXMgdGhlIGNvbnRhaW5lcuKAmXMgZGVzY2VuZGFudCBub2RlcywgY2FsbGluZyBjYWxsYmFja1xuICAgICAqIGZvciBlYWNoIGNvbW1lbnQgbm9kZS5cbiAgICAgKlxuICAgICAqIExpa2Uge0BsaW5rIENvbnRhaW5lciNlYWNofSwgdGhpcyBtZXRob2QgaXMgc2FmZVxuICAgICAqIHRvIHVzZSBpZiB5b3UgYXJlIG11dGF0aW5nIGFycmF5cyBkdXJpbmcgaXRlcmF0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtjaGlsZEl0ZXJhdG9yfSBjYWxsYmFjayAtIGl0ZXJhdG9yIHJlY2VpdmVzIGVhY2ggbm9kZSBhbmQgaW5kZXhcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gcmV0dXJucyBgZmFsc2VgIGlmIGl0ZXJhdGlvbiB3YXMgYnJva2VcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcm9vdC53YWxrQ29tbWVudHMoY29tbWVudCA9PiB7XG4gICAgICogICBjb21tZW50LnJlbW92ZSgpO1xuICAgICAqIH0pO1xuICAgICAqL1xuICAgIHdhbGtDb21tZW50cyhjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gdGhpcy53YWxrKCAoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICggY2hpbGQudHlwZSA9PT0gJ2NvbW1lbnQnICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluc2VydHMgbmV3IG5vZGVzIHRvIHRoZSBlbmQgb2YgdGhlIGNvbnRhaW5lci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Li4uKE5vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW10pfSBjaGlsZHJlbiAtIG5ldyBub2Rlc1xuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZX0gdGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IGRlY2wxID0gcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSk7XG4gICAgICogY29uc3QgZGVjbDIgPSBwb3N0Y3NzLmRlY2woeyBwcm9wOiAnYmFja2dyb3VuZC1jb2xvcicsIHZhbHVlOiAnd2hpdGUnIH0pO1xuICAgICAqIHJ1bGUuYXBwZW5kKGRlY2wxLCBkZWNsMik7XG4gICAgICpcbiAgICAgKiByb290LmFwcGVuZCh7IG5hbWU6ICdjaGFyc2V0JywgcGFyYW1zOiAnXCJVVEYtOFwiJyB9KTsgIC8vIGF0LXJ1bGVcbiAgICAgKiByb290LmFwcGVuZCh7IHNlbGVjdG9yOiAnYScgfSk7ICAgICAgICAgICAgICAgICAgICAgICAvLyBydWxlXG4gICAgICogcnVsZS5hcHBlbmQoeyBwcm9wOiAnY29sb3InLCB2YWx1ZTogJ2JsYWNrJyB9KTsgICAgICAgLy8gZGVjbGFyYXRpb25cbiAgICAgKiBydWxlLmFwcGVuZCh7IHRleHQ6ICdDb21tZW50JyB9KSAgICAgICAgICAgICAgICAgICAgICAvLyBjb21tZW50XG4gICAgICpcbiAgICAgKiByb290LmFwcGVuZCgnYSB7fScpO1xuICAgICAqIHJvb3QuZmlyc3QuYXBwZW5kKCdjb2xvcjogYmxhY2s7IHotaW5kZXg6IDEnKTtcbiAgICAgKi9cbiAgICBhcHBlbmQoLi4uY2hpbGRyZW4pIHtcbiAgICAgICAgZm9yICggbGV0IGNoaWxkIG9mIGNoaWxkcmVuICkge1xuICAgICAgICAgICAgbGV0IG5vZGVzID0gdGhpcy5ub3JtYWxpemUoY2hpbGQsIHRoaXMubGFzdCk7XG4gICAgICAgICAgICBmb3IgKCBsZXQgbm9kZSBvZiBub2RlcyApIHRoaXMubm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnNlcnRzIG5ldyBub2RlcyB0byB0aGUgc3RhcnQgb2YgdGhlIGNvbnRhaW5lci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Li4uKE5vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW10pfSBjaGlsZHJlbiAtIG5ldyBub2Rlc1xuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZX0gdGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IGRlY2wxID0gcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSk7XG4gICAgICogY29uc3QgZGVjbDIgPSBwb3N0Y3NzLmRlY2woeyBwcm9wOiAnYmFja2dyb3VuZC1jb2xvcicsIHZhbHVlOiAnd2hpdGUnIH0pO1xuICAgICAqIHJ1bGUucHJlcGVuZChkZWNsMSwgZGVjbDIpO1xuICAgICAqXG4gICAgICogcm9vdC5hcHBlbmQoeyBuYW1lOiAnY2hhcnNldCcsIHBhcmFtczogJ1wiVVRGLThcIicgfSk7ICAvLyBhdC1ydWxlXG4gICAgICogcm9vdC5hcHBlbmQoeyBzZWxlY3RvcjogJ2EnIH0pOyAgICAgICAgICAgICAgICAgICAgICAgLy8gcnVsZVxuICAgICAqIHJ1bGUuYXBwZW5kKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSk7ICAgICAgIC8vIGRlY2xhcmF0aW9uXG4gICAgICogcnVsZS5hcHBlbmQoeyB0ZXh0OiAnQ29tbWVudCcgfSkgICAgICAgICAgICAgICAgICAgICAgLy8gY29tbWVudFxuICAgICAqXG4gICAgICogcm9vdC5hcHBlbmQoJ2Ege30nKTtcbiAgICAgKiByb290LmZpcnN0LmFwcGVuZCgnY29sb3I6IGJsYWNrOyB6LWluZGV4OiAxJyk7XG4gICAgICovXG4gICAgcHJlcGVuZCguLi5jaGlsZHJlbikge1xuICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLnJldmVyc2UoKTtcbiAgICAgICAgZm9yICggbGV0IGNoaWxkIG9mIGNoaWxkcmVuICkge1xuICAgICAgICAgICAgbGV0IG5vZGVzID0gdGhpcy5ub3JtYWxpemUoY2hpbGQsIHRoaXMuZmlyc3QsICdwcmVwZW5kJykucmV2ZXJzZSgpO1xuICAgICAgICAgICAgZm9yICggbGV0IG5vZGUgb2Ygbm9kZXMgKSB0aGlzLm5vZGVzLnVuc2hpZnQobm9kZSk7XG4gICAgICAgICAgICBmb3IgKCBsZXQgaWQgaW4gdGhpcy5pbmRleGVzICkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gPSB0aGlzLmluZGV4ZXNbaWRdICsgbm9kZXMubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNsZWFuUmF3cyhrZWVwQmV0d2Vlbikge1xuICAgICAgICBzdXBlci5jbGVhblJhd3Moa2VlcEJldHdlZW4pO1xuICAgICAgICBpZiAoIHRoaXMubm9kZXMgKSB7XG4gICAgICAgICAgICBmb3IgKCBsZXQgbm9kZSBvZiB0aGlzLm5vZGVzICkgbm9kZS5jbGVhblJhd3Moa2VlcEJldHdlZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5zZXJ0IG5ldyBub2RlIGJlZm9yZSBvbGQgbm9kZSB3aXRoaW4gdGhlIGNvbnRhaW5lci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Tm9kZXxudW1iZXJ9IGV4aXN0ICAgICAgICAgICAgIC0gY2hpbGQgb3IgY2hpbGTigJlzIGluZGV4LlxuICAgICAqIEBwYXJhbSB7Tm9kZXxvYmplY3R8c3RyaW5nfE5vZGVbXX0gYWRkIC0gbmV3IG5vZGVcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge05vZGV9IHRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpblxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBydWxlLmluc2VydEJlZm9yZShkZWNsLCBkZWNsLmNsb25lKHsgcHJvcDogJy13ZWJraXQtJyArIGRlY2wucHJvcCB9KSk7XG4gICAgICovXG4gICAgaW5zZXJ0QmVmb3JlKGV4aXN0LCBhZGQpIHtcbiAgICAgICAgZXhpc3QgPSB0aGlzLmluZGV4KGV4aXN0KTtcblxuICAgICAgICBsZXQgdHlwZSAgPSBleGlzdCA9PT0gMCA/ICdwcmVwZW5kJyA6IGZhbHNlO1xuICAgICAgICBsZXQgbm9kZXMgPSB0aGlzLm5vcm1hbGl6ZShhZGQsIHRoaXMubm9kZXNbZXhpc3RdLCB0eXBlKS5yZXZlcnNlKCk7XG4gICAgICAgIGZvciAoIGxldCBub2RlIG9mIG5vZGVzICkgdGhpcy5ub2Rlcy5zcGxpY2UoZXhpc3QsIDAsIG5vZGUpO1xuXG4gICAgICAgIGxldCBpbmRleDtcbiAgICAgICAgZm9yICggbGV0IGlkIGluIHRoaXMuaW5kZXhlcyApIHtcbiAgICAgICAgICAgIGluZGV4ID0gdGhpcy5pbmRleGVzW2lkXTtcbiAgICAgICAgICAgIGlmICggZXhpc3QgPD0gaW5kZXggKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmRleGVzW2lkXSA9IGluZGV4ICsgbm9kZXMubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5zZXJ0IG5ldyBub2RlIGFmdGVyIG9sZCBub2RlIHdpdGhpbiB0aGUgY29udGFpbmVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtOb2RlfG51bWJlcn0gZXhpc3QgICAgICAgICAgICAgLSBjaGlsZCBvciBjaGlsZOKAmXMgaW5kZXhcbiAgICAgKiBAcGFyYW0ge05vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW119IGFkZCAtIG5ldyBub2RlXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtOb2RlfSB0aGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW5cbiAgICAgKi9cbiAgICBpbnNlcnRBZnRlcihleGlzdCwgYWRkKSB7XG4gICAgICAgIGV4aXN0ID0gdGhpcy5pbmRleChleGlzdCk7XG5cbiAgICAgICAgbGV0IG5vZGVzID0gdGhpcy5ub3JtYWxpemUoYWRkLCB0aGlzLm5vZGVzW2V4aXN0XSkucmV2ZXJzZSgpO1xuICAgICAgICBmb3IgKCBsZXQgbm9kZSBvZiBub2RlcyApIHRoaXMubm9kZXMuc3BsaWNlKGV4aXN0ICsgMSwgMCwgbm9kZSk7XG5cbiAgICAgICAgbGV0IGluZGV4O1xuICAgICAgICBmb3IgKCBsZXQgaWQgaW4gdGhpcy5pbmRleGVzICkge1xuICAgICAgICAgICAgaW5kZXggPSB0aGlzLmluZGV4ZXNbaWRdO1xuICAgICAgICAgICAgaWYgKCBleGlzdCA8IGluZGV4ICkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gPSBpbmRleCArIG5vZGVzLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgbm9kZSBmcm9tIHRoZSBjb250YWluZXIgYW5kIGNsZWFucyB0aGUgcGFyZW50IHByb3BlcnRpZXNcbiAgICAgKiBmcm9tIHRoZSBub2RlIGFuZCBpdHMgY2hpbGRyZW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge05vZGV8bnVtYmVyfSBjaGlsZCAtIGNoaWxkIG9yIGNoaWxk4oCZcyBpbmRleFxuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZX0gdGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHJ1bGUubm9kZXMubGVuZ3RoICAvLz0+IDVcbiAgICAgKiBydWxlLnJlbW92ZUNoaWxkKGRlY2wpO1xuICAgICAqIHJ1bGUubm9kZXMubGVuZ3RoICAvLz0+IDRcbiAgICAgKiBkZWNsLnBhcmVudCAgICAgICAgLy89PiB1bmRlZmluZWRcbiAgICAgKi9cbiAgICByZW1vdmVDaGlsZChjaGlsZCkge1xuICAgICAgICBjaGlsZCA9IHRoaXMuaW5kZXgoY2hpbGQpO1xuICAgICAgICB0aGlzLm5vZGVzW2NoaWxkXS5wYXJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubm9kZXMuc3BsaWNlKGNoaWxkLCAxKTtcblxuICAgICAgICBsZXQgaW5kZXg7XG4gICAgICAgIGZvciAoIGxldCBpZCBpbiB0aGlzLmluZGV4ZXMgKSB7XG4gICAgICAgICAgICBpbmRleCA9IHRoaXMuaW5kZXhlc1tpZF07XG4gICAgICAgICAgICBpZiAoIGluZGV4ID49IGNoaWxkICkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gPSBpbmRleCAtIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBjaGlsZHJlbiBmcm9tIHRoZSBjb250YWluZXJcbiAgICAgKiBhbmQgY2xlYW5zIHRoZWlyIHBhcmVudCBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZX0gdGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHJ1bGUucmVtb3ZlQWxsKCk7XG4gICAgICogcnVsZS5ub2Rlcy5sZW5ndGggLy89PiAwXG4gICAgICovXG4gICAgcmVtb3ZlQWxsKCkge1xuICAgICAgICBmb3IgKCBsZXQgbm9kZSBvZiB0aGlzLm5vZGVzICkgbm9kZS5wYXJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubm9kZXMgPSBbXTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VzIGFsbCBkZWNsYXJhdGlvbiB2YWx1ZXMgd2l0aGluIHRoZSBjb250YWluZXIgdGhhdCBtYXRjaCBwYXR0ZXJuXG4gICAgICogdGhyb3VnaCBjYWxsYmFjaywgcmVwbGFjaW5nIHRob3NlIHZhbHVlcyB3aXRoIHRoZSByZXR1cm5lZCByZXN1bHRcbiAgICAgKiBvZiBjYWxsYmFjay5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIHVzaW5nIGEgY3VzdG9tIHVuaXQgb3IgZnVuY3Rpb25cbiAgICAgKiBhbmQgbmVlZCB0byBpdGVyYXRlIHRocm91Z2ggYWxsIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cH0gcGF0dGVybiAgICAgIC0gcmVwbGFjZSBwYXR0ZXJuXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG9wdHMgICAgICAgICAgICAgICAgLSBvcHRpb25zIHRvIHNwZWVkIHVwIHRoZSBzZWFyY2hcbiAgICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gb3B0cy5wcm9wcyAtIGFuIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMuZmFzdCAgICAgICAgICAgLSBzdHJpbmcgdGhhdOKAmXMgdXNlZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gbmFycm93IGRvd24gdmFsdWVzIGFuZCBzcGVlZCB1cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlZ2V4cCBzZWFyY2hcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufHN0cmluZ30gY2FsbGJhY2sgICAtIHN0cmluZyB0byByZXBsYWNlIHBhdHRlcm5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGNhbGxiYWNrIHRoYXQgcmV0dXJucyBhIG5ld1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY2FsbGJhY2sgd2lsbCByZWNlaXZlXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2FtZSBhcmd1bWVudHMgYXMgdGhvc2VcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCB0byBhIGZ1bmN0aW9uIHBhcmFtZXRlclxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgYFN0cmluZyNyZXBsYWNlYC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge05vZGV9IHRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpblxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiByb290LnJlcGxhY2VWYWx1ZXMoL1xcZCtyZW0vLCB7IGZhc3Q6ICdyZW0nIH0sIHN0cmluZyA9PiB7XG4gICAgICogICByZXR1cm4gMTUgKiBwYXJzZUludChzdHJpbmcpICsgJ3B4JztcbiAgICAgKiB9KTtcbiAgICAgKi9cbiAgICByZXBsYWNlVmFsdWVzKHBhdHRlcm4sIG9wdHMsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmICggIWNhbGxiYWNrICkge1xuICAgICAgICAgICAgY2FsbGJhY2sgPSBvcHRzO1xuICAgICAgICAgICAgb3B0cyA9IHsgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMud2Fsa0RlY2xzKCBkZWNsID0+IHtcbiAgICAgICAgICAgIGlmICggb3B0cy5wcm9wcyAmJiBvcHRzLnByb3BzLmluZGV4T2YoZGVjbC5wcm9wKSA9PT0gLTEgKSByZXR1cm47XG4gICAgICAgICAgICBpZiAoIG9wdHMuZmFzdCAgJiYgZGVjbC52YWx1ZS5pbmRleE9mKG9wdHMuZmFzdCkgPT09IC0xICkgcmV0dXJuO1xuXG4gICAgICAgICAgICBkZWNsLnZhbHVlID0gZGVjbC52YWx1ZS5yZXBsYWNlKHBhdHRlcm4sIGNhbGxiYWNrKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBgdHJ1ZWAgaWYgY2FsbGJhY2sgcmV0dXJucyBgdHJ1ZWBcbiAgICAgKiBmb3IgYWxsIG9mIHRoZSBjb250YWluZXLigJlzIGNoaWxkcmVuLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtjaGlsZENvbmRpdGlvbn0gY29uZGl0aW9uIC0gaXRlcmF0b3IgcmV0dXJucyB0cnVlIG9yIGZhbHNlLlxuICAgICAqXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gaXMgZXZlcnkgY2hpbGQgcGFzcyBjb25kaXRpb25cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3Qgbm9QcmVmaXhlcyA9IHJ1bGUuZXZlcnkoaSA9PiBpLnByb3BbMF0gIT09ICctJyk7XG4gICAgICovXG4gICAgZXZlcnkoY29uZGl0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGVzLmV2ZXJ5KGNvbmRpdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBgdHJ1ZWAgaWYgY2FsbGJhY2sgcmV0dXJucyBgdHJ1ZWAgZm9yIChhdCBsZWFzdCkgb25lXG4gICAgICogb2YgdGhlIGNvbnRhaW5lcuKAmXMgY2hpbGRyZW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2NoaWxkQ29uZGl0aW9ufSBjb25kaXRpb24gLSBpdGVyYXRvciByZXR1cm5zIHRydWUgb3IgZmFsc2UuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBpcyBzb21lIGNoaWxkIHBhc3MgY29uZGl0aW9uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IGhhc1ByZWZpeCA9IHJ1bGUuc29tZShpID0+IGkucHJvcFswXSA9PT0gJy0nKTtcbiAgICAgKi9cbiAgICBzb21lKGNvbmRpdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5ub2Rlcy5zb21lKGNvbmRpdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGBjaGlsZGDigJlzIGluZGV4IHdpdGhpbiB0aGUge0BsaW5rIENvbnRhaW5lciNub2Rlc30gYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge05vZGV9IGNoaWxkIC0gY2hpbGQgb2YgdGhlIGN1cnJlbnQgY29udGFpbmVyLlxuICAgICAqXG4gICAgICogQHJldHVybiB7bnVtYmVyfSBjaGlsZCBpbmRleFxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBydWxlLmluZGV4KCBydWxlLm5vZGVzWzJdICkgLy89PiAyXG4gICAgICovXG4gICAgaW5kZXgoY2hpbGQpIHtcbiAgICAgICAgaWYgKCB0eXBlb2YgY2hpbGQgPT09ICdudW1iZXInICkge1xuICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZXMuaW5kZXhPZihjaGlsZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY29udGFpbmVy4oCZcyBmaXJzdCBjaGlsZC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtOb2RlfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBydWxlLmZpcnN0ID09IHJ1bGVzLm5vZGVzWzBdO1xuICAgICAqL1xuICAgIGdldCBmaXJzdCgpIHtcbiAgICAgICAgaWYgKCAhdGhpcy5ub2RlcyApIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGVzWzBdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBjb250YWluZXLigJlzIGxhc3QgY2hpbGQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Tm9kZX1cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcnVsZS5sYXN0ID09IHJ1bGUubm9kZXNbcnVsZS5ub2Rlcy5sZW5ndGggLSAxXTtcbiAgICAgKi9cbiAgICBnZXQgbGFzdCgpIHtcbiAgICAgICAgaWYgKCAhdGhpcy5ub2RlcyApIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGVzW3RoaXMubm9kZXMubGVuZ3RoIC0gMV07XG4gICAgfVxuXG4gICAgbm9ybWFsaXplKG5vZGVzLCBzYW1wbGUpIHtcbiAgICAgICAgaWYgKCB0eXBlb2Ygbm9kZXMgPT09ICdzdHJpbmcnICkge1xuICAgICAgICAgICAgbGV0IHBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZScpO1xuICAgICAgICAgICAgbm9kZXMgPSBjbGVhblNvdXJjZShwYXJzZShub2Rlcykubm9kZXMpO1xuICAgICAgICB9IGVsc2UgaWYgKCBBcnJheS5pc0FycmF5KG5vZGVzKSApIHtcbiAgICAgICAgICAgIG5vZGVzID0gbm9kZXMuc2xpY2UoMCk7XG4gICAgICAgICAgICBmb3IgKCBsZXQgaSBvZiBub2RlcyApIHtcbiAgICAgICAgICAgICAgICBpZiAoIGkucGFyZW50ICkgaS5wYXJlbnQucmVtb3ZlQ2hpbGQoaSwgJ2lnbm9yZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCBub2Rlcy50eXBlID09PSAncm9vdCcgKSB7XG4gICAgICAgICAgICBub2RlcyA9IG5vZGVzLm5vZGVzLnNsaWNlKDApO1xuICAgICAgICAgICAgZm9yICggbGV0IGkgb2Ygbm9kZXMgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBpLnBhcmVudCApIGkucGFyZW50LnJlbW92ZUNoaWxkKGksICdpZ25vcmUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICggbm9kZXMudHlwZSApIHtcbiAgICAgICAgICAgIG5vZGVzID0gW25vZGVzXTtcbiAgICAgICAgfSBlbHNlIGlmICggbm9kZXMucHJvcCApIHtcbiAgICAgICAgICAgIGlmICggdHlwZW9mIG5vZGVzLnZhbHVlID09PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIGZpZWxkIGlzIG1pc3NlZCBpbiBub2RlIGNyZWF0aW9uJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlb2Ygbm9kZXMudmFsdWUgIT09ICdzdHJpbmcnICkge1xuICAgICAgICAgICAgICAgIG5vZGVzLnZhbHVlID0gU3RyaW5nKG5vZGVzLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGVzID0gW25ldyBEZWNsYXJhdGlvbihub2RlcyldO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2Rlcy5zZWxlY3RvciApIHtcbiAgICAgICAgICAgIGxldCBSdWxlID0gcmVxdWlyZSgnLi9ydWxlJyk7XG4gICAgICAgICAgICBub2RlcyA9IFtuZXcgUnVsZShub2RlcyldO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2Rlcy5uYW1lICkge1xuICAgICAgICAgICAgbGV0IEF0UnVsZSA9IHJlcXVpcmUoJy4vYXQtcnVsZScpO1xuICAgICAgICAgICAgbm9kZXMgPSBbbmV3IEF0UnVsZShub2RlcyldO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2Rlcy50ZXh0ICkge1xuICAgICAgICAgICAgbm9kZXMgPSBbbmV3IENvbW1lbnQobm9kZXMpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBub2RlIHR5cGUgaW4gbm9kZSBjcmVhdGlvbicpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHByb2Nlc3NlZCA9IG5vZGVzLm1hcCggaSA9PiB7XG4gICAgICAgICAgICBpZiAoIHR5cGVvZiBpLmJlZm9yZSAhPT0gJ2Z1bmN0aW9uJyApIGkgPSB0aGlzLnJlYnVpbGQoaSk7XG5cbiAgICAgICAgICAgIGlmICggaS5wYXJlbnQgKSBpLnBhcmVudC5yZW1vdmVDaGlsZChpKTtcbiAgICAgICAgICAgIGlmICggdHlwZW9mIGkucmF3cy5iZWZvcmUgPT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgICAgIGlmICggc2FtcGxlICYmIHR5cGVvZiBzYW1wbGUucmF3cy5iZWZvcmUgIT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgICAgICAgICBpLnJhd3MuYmVmb3JlID0gc2FtcGxlLnJhd3MuYmVmb3JlLnJlcGxhY2UoL1teXFxzXS9nLCAnJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaS5wYXJlbnQgPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBwcm9jZXNzZWQ7XG4gICAgfVxuXG4gICAgcmVidWlsZChub2RlLCBwYXJlbnQpIHtcbiAgICAgICAgbGV0IGZpeDtcbiAgICAgICAgaWYgKCBub2RlLnR5cGUgPT09ICdyb290JyApIHtcbiAgICAgICAgICAgIGxldCBSb290ID0gcmVxdWlyZSgnLi9yb290Jyk7XG4gICAgICAgICAgICBmaXggPSBuZXcgUm9vdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2RlLnR5cGUgPT09ICdhdHJ1bGUnICkge1xuICAgICAgICAgICAgbGV0IEF0UnVsZSA9IHJlcXVpcmUoJy4vYXQtcnVsZScpO1xuICAgICAgICAgICAgZml4ID0gbmV3IEF0UnVsZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2RlLnR5cGUgPT09ICdydWxlJyApIHtcbiAgICAgICAgICAgIGxldCBSdWxlID0gcmVxdWlyZSgnLi9ydWxlJyk7XG4gICAgICAgICAgICBmaXggPSBuZXcgUnVsZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2RlLnR5cGUgPT09ICdkZWNsJyApIHtcbiAgICAgICAgICAgIGZpeCA9IG5ldyBEZWNsYXJhdGlvbigpO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2RlLnR5cGUgPT09ICdjb21tZW50JyApIHtcbiAgICAgICAgICAgIGZpeCA9IG5ldyBDb21tZW50KCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKCBsZXQgaSBpbiBub2RlICkge1xuICAgICAgICAgICAgaWYgKCBpID09PSAnbm9kZXMnICkge1xuICAgICAgICAgICAgICAgIGZpeC5ub2RlcyA9IG5vZGUubm9kZXMubWFwKCBqID0+IHRoaXMucmVidWlsZChqLCBmaXgpICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBpID09PSAncGFyZW50JyAmJiBwYXJlbnQgKSB7XG4gICAgICAgICAgICAgICAgZml4LnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIG5vZGUuaGFzT3duUHJvcGVydHkoaSkgKSB7XG4gICAgICAgICAgICAgICAgZml4W2ldID0gbm9kZVtpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaXg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIENvbnRhaW5lciNcbiAgICAgKiBAbWVtYmVyIHtOb2RlW119IG5vZGVzIC0gYW4gYXJyYXkgY29udGFpbmluZyB0aGUgY29udGFpbmVy4oCZcyBjaGlsZHJlblxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjayB9Jyk7XG4gICAgICogcm9vdC5ub2Rlcy5sZW5ndGggICAgICAgICAgIC8vPT4gMVxuICAgICAqIHJvb3Qubm9kZXNbMF0uc2VsZWN0b3IgICAgICAvLz0+ICdhJ1xuICAgICAqIHJvb3Qubm9kZXNbMF0ubm9kZXNbMF0ucHJvcCAvLz0+ICdjb2xvcidcbiAgICAgKi9cblxufVxuXG5leHBvcnQgZGVmYXVsdCBDb250YWluZXI7XG5cblxuLyoqXG4gKiBAY2FsbGJhY2sgY2hpbGRDb25kaXRpb25cbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAgICAtIGNvbnRhaW5lciBjaGlsZFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC0gY2hpbGQgaW5kZXhcbiAqIEBwYXJhbSB7Tm9kZVtdfSBub2RlcyAtIGFsbCBjb250YWluZXIgY2hpbGRyZW5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgY2hpbGRJdGVyYXRvclxuICogQHBhcmFtIHtOb2RlfSBub2RlICAgIC0gY29udGFpbmVyIGNoaWxkXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggLSBjaGlsZCBpbmRleFxuICogQHJldHVybiB7ZmFsc2V8dW5kZWZpbmVkfSByZXR1cm5pbmcgYGZhbHNlYCB3aWxsIGJyZWFrIGl0ZXJhdGlvblxuICovXG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _container = require('./container');\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS file and contains all its parsed nodes.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('a{color:black} b{z-index:2}');\n * root.type //=> 'root'\n * root.nodes.length //=> 2\n */\nvar Root = function (_Container) {\n _inherits(Root, _Container);\n\n function Root(defaults) {\n _classCallCheck(this, Root);\n\n var _this = _possibleConstructorReturn(this, _Container.call(this, defaults));\n\n _this.type = 'root';\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n\n Root.prototype.removeChild = function removeChild(child, ignore) {\n var index = this.index(child);\n\n if (!ignore && index === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index].raws.before;\n }\n\n return _Container.prototype.removeChild.call(this, child);\n };\n\n Root.prototype.normalize = function normalize(child, sample, type) {\n var nodes = _Container.prototype.normalize.call(this, child);\n\n if (sample) {\n if (type === 'prepend') {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var node = _ref;\n\n node.raws.before = sample.raws.before;\n }\n }\n }\n\n return nodes;\n };\n\n /**\n * Returns a {@link Result} instance representing the root’s CSS.\n *\n * @param {processOptions} [opts] - options with only `to` and `map` keys\n *\n * @return {Result} result with current root’s CSS\n *\n * @example\n * const root1 = postcss.parse(css1, { from: 'a.css' });\n * const root2 = postcss.parse(css2, { from: 'b.css' });\n * root1.append(root2);\n * const result = root1.toResult({ to: 'all.css', map: true });\n */\n\n\n Root.prototype.toResult = function toResult() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var LazyResult = require('./lazy-result');\n var Processor = require('./processor');\n\n var lazy = new LazyResult(new Processor(), this, opts);\n return lazy.stringify();\n };\n\n /**\n * @memberof Root#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `after`: the space symbols after the last child to the end of file.\n * * `semicolon`: is the last child has an (optional) semicolon.\n *\n * @example\n * postcss.parse('a {}\\n').raws //=> { after: '\\n' }\n * postcss.parse('a {}').raws //=> { after: '' }\n */\n\n return Root;\n}(_container2.default);\n\nexports.default = Root;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJvb3QuZXM2Il0sIm5hbWVzIjpbIlJvb3QiLCJkZWZhdWx0cyIsInR5cGUiLCJub2RlcyIsInJlbW92ZUNoaWxkIiwiY2hpbGQiLCJpZ25vcmUiLCJpbmRleCIsImxlbmd0aCIsInJhd3MiLCJiZWZvcmUiLCJub3JtYWxpemUiLCJzYW1wbGUiLCJmaXJzdCIsIm5vZGUiLCJ0b1Jlc3VsdCIsIm9wdHMiLCJMYXp5UmVzdWx0IiwicmVxdWlyZSIsIlByb2Nlc3NvciIsImxhenkiLCJzdHJpbmdpZnkiLCJDb250YWluZXIiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7SUFVTUEsSTs7O0FBRUYsa0JBQVlDLFFBQVosRUFBc0I7QUFBQTs7QUFBQSxxREFDbEIsc0JBQU1BLFFBQU4sQ0FEa0I7O0FBRWxCLGNBQUtDLElBQUwsR0FBWSxNQUFaO0FBQ0EsWUFBSyxDQUFDLE1BQUtDLEtBQVgsRUFBbUIsTUFBS0EsS0FBTCxHQUFhLEVBQWI7QUFIRDtBQUlyQjs7bUJBRURDLFcsd0JBQVlDLEssRUFBT0MsTSxFQUFRO0FBQ3ZCLFlBQU1DLFFBQVEsS0FBS0EsS0FBTCxDQUFXRixLQUFYLENBQWQ7O0FBRUEsWUFBSyxDQUFDQyxNQUFELElBQVdDLFVBQVUsQ0FBckIsSUFBMEIsS0FBS0osS0FBTCxDQUFXSyxNQUFYLEdBQW9CLENBQW5ELEVBQXVEO0FBQ25ELGlCQUFLTCxLQUFMLENBQVcsQ0FBWCxFQUFjTSxJQUFkLENBQW1CQyxNQUFuQixHQUE0QixLQUFLUCxLQUFMLENBQVdJLEtBQVgsRUFBa0JFLElBQWxCLENBQXVCQyxNQUFuRDtBQUNIOztBQUVELGVBQU8scUJBQU1OLFdBQU4sWUFBa0JDLEtBQWxCLENBQVA7QUFDSCxLOzttQkFFRE0sUyxzQkFBVU4sSyxFQUFPTyxNLEVBQVFWLEksRUFBTTtBQUMzQixZQUFJQyxRQUFRLHFCQUFNUSxTQUFOLFlBQWdCTixLQUFoQixDQUFaOztBQUVBLFlBQUtPLE1BQUwsRUFBYztBQUNWLGdCQUFLVixTQUFTLFNBQWQsRUFBMEI7QUFDdEIsb0JBQUssS0FBS0MsS0FBTCxDQUFXSyxNQUFYLEdBQW9CLENBQXpCLEVBQTZCO0FBQ3pCSSwyQkFBT0gsSUFBUCxDQUFZQyxNQUFaLEdBQXFCLEtBQUtQLEtBQUwsQ0FBVyxDQUFYLEVBQWNNLElBQWQsQ0FBbUJDLE1BQXhDO0FBQ0gsaUJBRkQsTUFFTztBQUNILDJCQUFPRSxPQUFPSCxJQUFQLENBQVlDLE1BQW5CO0FBQ0g7QUFDSixhQU5ELE1BTU8sSUFBSyxLQUFLRyxLQUFMLEtBQWVELE1BQXBCLEVBQTZCO0FBQ2hDLHFDQUFrQlQsS0FBbEIsa0hBQTBCO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQSx3QkFBaEJXLElBQWdCOztBQUN0QkEseUJBQUtMLElBQUwsQ0FBVUMsTUFBVixHQUFtQkUsT0FBT0gsSUFBUCxDQUFZQyxNQUEvQjtBQUNIO0FBQ0o7QUFDSjs7QUFFRCxlQUFPUCxLQUFQO0FBQ0gsSzs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O21CQWFBWSxRLHVCQUFxQjtBQUFBLFlBQVpDLElBQVksdUVBQUwsRUFBSzs7QUFDakIsWUFBSUMsYUFBYUMsUUFBUSxlQUFSLENBQWpCO0FBQ0EsWUFBSUMsWUFBYUQsUUFBUSxhQUFSLENBQWpCOztBQUVBLFlBQUlFLE9BQU8sSUFBSUgsVUFBSixDQUFlLElBQUlFLFNBQUosRUFBZixFQUFnQyxJQUFoQyxFQUFzQ0gsSUFBdEMsQ0FBWDtBQUNBLGVBQU9JLEtBQUtDLFNBQUwsRUFBUDtBQUNILEs7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBM0RlQyxtQjs7a0JBNkVKdEIsSSIsImZpbGUiOiJyb290LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbnRhaW5lciBmcm9tICcuL2NvbnRhaW5lcic7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIENTUyBmaWxlIGFuZCBjb250YWlucyBhbGwgaXRzIHBhcnNlZCBub2Rlcy5cbiAqXG4gKiBAZXh0ZW5kcyBDb250YWluZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2F7Y29sb3I6YmxhY2t9IGJ7ei1pbmRleDoyfScpO1xuICogcm9vdC50eXBlICAgICAgICAgLy89PiAncm9vdCdcbiAqIHJvb3Qubm9kZXMubGVuZ3RoIC8vPT4gMlxuICovXG5jbGFzcyBSb290IGV4dGVuZHMgQ29udGFpbmVyIHtcblxuICAgIGNvbnN0cnVjdG9yKGRlZmF1bHRzKSB7XG4gICAgICAgIHN1cGVyKGRlZmF1bHRzKTtcbiAgICAgICAgdGhpcy50eXBlID0gJ3Jvb3QnO1xuICAgICAgICBpZiAoICF0aGlzLm5vZGVzICkgdGhpcy5ub2RlcyA9IFtdO1xuICAgIH1cblxuICAgIHJlbW92ZUNoaWxkKGNoaWxkLCBpZ25vcmUpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmluZGV4KGNoaWxkKTtcblxuICAgICAgICBpZiAoICFpZ25vcmUgJiYgaW5kZXggPT09IDAgJiYgdGhpcy5ub2Rlcy5sZW5ndGggPiAxICkge1xuICAgICAgICAgICAgdGhpcy5ub2Rlc1sxXS5yYXdzLmJlZm9yZSA9IHRoaXMubm9kZXNbaW5kZXhdLnJhd3MuYmVmb3JlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1cGVyLnJlbW92ZUNoaWxkKGNoaWxkKTtcbiAgICB9XG5cbiAgICBub3JtYWxpemUoY2hpbGQsIHNhbXBsZSwgdHlwZSkge1xuICAgICAgICBsZXQgbm9kZXMgPSBzdXBlci5ub3JtYWxpemUoY2hpbGQpO1xuXG4gICAgICAgIGlmICggc2FtcGxlICkge1xuICAgICAgICAgICAgaWYgKCB0eXBlID09PSAncHJlcGVuZCcgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLm5vZGVzLmxlbmd0aCA+IDEgKSB7XG4gICAgICAgICAgICAgICAgICAgIHNhbXBsZS5yYXdzLmJlZm9yZSA9IHRoaXMubm9kZXNbMV0ucmF3cy5iZWZvcmU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNhbXBsZS5yYXdzLmJlZm9yZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB0aGlzLmZpcnN0ICE9PSBzYW1wbGUgKSB7XG4gICAgICAgICAgICAgICAgZm9yICggbGV0IG5vZGUgb2Ygbm9kZXMgKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmF3cy5iZWZvcmUgPSBzYW1wbGUucmF3cy5iZWZvcmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSB7QGxpbmsgUmVzdWx0fSBpbnN0YW5jZSByZXByZXNlbnRpbmcgdGhlIHJvb3TigJlzIENTUy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IFtvcHRzXSAtIG9wdGlvbnMgd2l0aCBvbmx5IGB0b2AgYW5kIGBtYXBgIGtleXNcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1Jlc3VsdH0gcmVzdWx0IHdpdGggY3VycmVudCByb2904oCZcyBDU1NcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3Qgcm9vdDEgPSBwb3N0Y3NzLnBhcnNlKGNzczEsIHsgZnJvbTogJ2EuY3NzJyB9KTtcbiAgICAgKiBjb25zdCByb290MiA9IHBvc3Rjc3MucGFyc2UoY3NzMiwgeyBmcm9tOiAnYi5jc3MnIH0pO1xuICAgICAqIHJvb3QxLmFwcGVuZChyb290Mik7XG4gICAgICogY29uc3QgcmVzdWx0ID0gcm9vdDEudG9SZXN1bHQoeyB0bzogJ2FsbC5jc3MnLCBtYXA6IHRydWUgfSk7XG4gICAgICovXG4gICAgdG9SZXN1bHQob3B0cyA9IHsgfSkge1xuICAgICAgICBsZXQgTGF6eVJlc3VsdCA9IHJlcXVpcmUoJy4vbGF6eS1yZXN1bHQnKTtcbiAgICAgICAgbGV0IFByb2Nlc3NvciAgPSByZXF1aXJlKCcuL3Byb2Nlc3NvcicpO1xuXG4gICAgICAgIGxldCBsYXp5ID0gbmV3IExhenlSZXN1bHQobmV3IFByb2Nlc3NvcigpLCB0aGlzLCBvcHRzKTtcbiAgICAgICAgcmV0dXJuIGxhenkuc3RyaW5naWZ5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIFJvb3QjXG4gICAgICogQG1lbWJlciB7b2JqZWN0fSByYXdzIC0gSW5mb3JtYXRpb24gdG8gZ2VuZXJhdGUgYnl0ZS10by1ieXRlIGVxdWFsXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSBzdHJpbmcgYXMgaXQgd2FzIGluIHRoZSBvcmlnaW4gaW5wdXQuXG4gICAgICpcbiAgICAgKiBFdmVyeSBwYXJzZXIgc2F2ZXMgaXRzIG93biBwcm9wZXJ0aWVzLFxuICAgICAqIGJ1dCB0aGUgZGVmYXVsdCBDU1MgcGFyc2VyIHVzZXM6XG4gICAgICpcbiAgICAgKiAqIGBhZnRlcmA6IHRoZSBzcGFjZSBzeW1ib2xzIGFmdGVyIHRoZSBsYXN0IGNoaWxkIHRvIHRoZSBlbmQgb2YgZmlsZS5cbiAgICAgKiAqIGBzZW1pY29sb25gOiBpcyB0aGUgbGFzdCBjaGlsZCBoYXMgYW4gKG9wdGlvbmFsKSBzZW1pY29sb24uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHBvc3Rjc3MucGFyc2UoJ2Ege31cXG4nKS5yYXdzIC8vPT4geyBhZnRlcjogJ1xcbicgfVxuICAgICAqIHBvc3Rjc3MucGFyc2UoJ2Ege30nKS5yYXdzICAgLy89PiB7IGFmdGVyOiAnJyB9XG4gICAgICovXG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgUm9vdDtcbiJdfQ==\n","var hljs = require('./highlight');\n\nhljs.registerLanguage('1c', require('./languages/1c'));\nhljs.registerLanguage('abnf', require('./languages/abnf'));\nhljs.registerLanguage('accesslog', require('./languages/accesslog'));\nhljs.registerLanguage('actionscript', require('./languages/actionscript'));\nhljs.registerLanguage('ada', require('./languages/ada'));\nhljs.registerLanguage('angelscript', require('./languages/angelscript'));\nhljs.registerLanguage('apache', require('./languages/apache'));\nhljs.registerLanguage('applescript', require('./languages/applescript'));\nhljs.registerLanguage('arcade', require('./languages/arcade'));\nhljs.registerLanguage('cpp', require('./languages/cpp'));\nhljs.registerLanguage('arduino', require('./languages/arduino'));\nhljs.registerLanguage('armasm', require('./languages/armasm'));\nhljs.registerLanguage('xml', require('./languages/xml'));\nhljs.registerLanguage('asciidoc', require('./languages/asciidoc'));\nhljs.registerLanguage('aspectj', require('./languages/aspectj'));\nhljs.registerLanguage('autohotkey', require('./languages/autohotkey'));\nhljs.registerLanguage('autoit', require('./languages/autoit'));\nhljs.registerLanguage('avrasm', require('./languages/avrasm'));\nhljs.registerLanguage('awk', require('./languages/awk'));\nhljs.registerLanguage('axapta', require('./languages/axapta'));\nhljs.registerLanguage('bash', require('./languages/bash'));\nhljs.registerLanguage('basic', require('./languages/basic'));\nhljs.registerLanguage('bnf', require('./languages/bnf'));\nhljs.registerLanguage('brainfuck', require('./languages/brainfuck'));\nhljs.registerLanguage('cal', require('./languages/cal'));\nhljs.registerLanguage('capnproto', require('./languages/capnproto'));\nhljs.registerLanguage('ceylon', require('./languages/ceylon'));\nhljs.registerLanguage('clean', require('./languages/clean'));\nhljs.registerLanguage('clojure', require('./languages/clojure'));\nhljs.registerLanguage('clojure-repl', require('./languages/clojure-repl'));\nhljs.registerLanguage('cmake', require('./languages/cmake'));\nhljs.registerLanguage('coffeescript', require('./languages/coffeescript'));\nhljs.registerLanguage('coq', require('./languages/coq'));\nhljs.registerLanguage('cos', require('./languages/cos'));\nhljs.registerLanguage('crmsh', require('./languages/crmsh'));\nhljs.registerLanguage('crystal', require('./languages/crystal'));\nhljs.registerLanguage('cs', require('./languages/cs'));\nhljs.registerLanguage('csp', require('./languages/csp'));\nhljs.registerLanguage('css', require('./languages/css'));\nhljs.registerLanguage('d', require('./languages/d'));\nhljs.registerLanguage('markdown', require('./languages/markdown'));\nhljs.registerLanguage('dart', require('./languages/dart'));\nhljs.registerLanguage('delphi', require('./languages/delphi'));\nhljs.registerLanguage('diff', require('./languages/diff'));\nhljs.registerLanguage('django', require('./languages/django'));\nhljs.registerLanguage('dns', require('./languages/dns'));\nhljs.registerLanguage('dockerfile', require('./languages/dockerfile'));\nhljs.registerLanguage('dos', require('./languages/dos'));\nhljs.registerLanguage('dsconfig', require('./languages/dsconfig'));\nhljs.registerLanguage('dts', require('./languages/dts'));\nhljs.registerLanguage('dust', require('./languages/dust'));\nhljs.registerLanguage('ebnf', require('./languages/ebnf'));\nhljs.registerLanguage('elixir', require('./languages/elixir'));\nhljs.registerLanguage('elm', require('./languages/elm'));\nhljs.registerLanguage('ruby', require('./languages/ruby'));\nhljs.registerLanguage('erb', require('./languages/erb'));\nhljs.registerLanguage('erlang-repl', require('./languages/erlang-repl'));\nhljs.registerLanguage('erlang', require('./languages/erlang'));\nhljs.registerLanguage('excel', require('./languages/excel'));\nhljs.registerLanguage('fix', require('./languages/fix'));\nhljs.registerLanguage('flix', require('./languages/flix'));\nhljs.registerLanguage('fortran', require('./languages/fortran'));\nhljs.registerLanguage('fsharp', require('./languages/fsharp'));\nhljs.registerLanguage('gams', require('./languages/gams'));\nhljs.registerLanguage('gauss', require('./languages/gauss'));\nhljs.registerLanguage('gcode', require('./languages/gcode'));\nhljs.registerLanguage('gherkin', require('./languages/gherkin'));\nhljs.registerLanguage('glsl', require('./languages/glsl'));\nhljs.registerLanguage('gml', require('./languages/gml'));\nhljs.registerLanguage('go', require('./languages/go'));\nhljs.registerLanguage('golo', require('./languages/golo'));\nhljs.registerLanguage('gradle', require('./languages/gradle'));\nhljs.registerLanguage('groovy', require('./languages/groovy'));\nhljs.registerLanguage('haml', require('./languages/haml'));\nhljs.registerLanguage('handlebars', require('./languages/handlebars'));\nhljs.registerLanguage('haskell', require('./languages/haskell'));\nhljs.registerLanguage('haxe', require('./languages/haxe'));\nhljs.registerLanguage('hsp', require('./languages/hsp'));\nhljs.registerLanguage('htmlbars', require('./languages/htmlbars'));\nhljs.registerLanguage('http', require('./languages/http'));\nhljs.registerLanguage('hy', require('./languages/hy'));\nhljs.registerLanguage('inform7', require('./languages/inform7'));\nhljs.registerLanguage('ini', require('./languages/ini'));\nhljs.registerLanguage('irpf90', require('./languages/irpf90'));\nhljs.registerLanguage('isbl', require('./languages/isbl'));\nhljs.registerLanguage('java', require('./languages/java'));\nhljs.registerLanguage('javascript', require('./languages/javascript'));\nhljs.registerLanguage('jboss-cli', require('./languages/jboss-cli'));\nhljs.registerLanguage('json', require('./languages/json'));\nhljs.registerLanguage('julia', require('./languages/julia'));\nhljs.registerLanguage('julia-repl', require('./languages/julia-repl'));\nhljs.registerLanguage('kotlin', require('./languages/kotlin'));\nhljs.registerLanguage('lasso', require('./languages/lasso'));\nhljs.registerLanguage('ldif', require('./languages/ldif'));\nhljs.registerLanguage('leaf', require('./languages/leaf'));\nhljs.registerLanguage('less', require('./languages/less'));\nhljs.registerLanguage('lisp', require('./languages/lisp'));\nhljs.registerLanguage('livecodeserver', require('./languages/livecodeserver'));\nhljs.registerLanguage('livescript', require('./languages/livescript'));\nhljs.registerLanguage('llvm', require('./languages/llvm'));\nhljs.registerLanguage('lsl', require('./languages/lsl'));\nhljs.registerLanguage('lua', require('./languages/lua'));\nhljs.registerLanguage('makefile', require('./languages/makefile'));\nhljs.registerLanguage('mathematica', require('./languages/mathematica'));\nhljs.registerLanguage('matlab', require('./languages/matlab'));\nhljs.registerLanguage('maxima', require('./languages/maxima'));\nhljs.registerLanguage('mel', require('./languages/mel'));\nhljs.registerLanguage('mercury', require('./languages/mercury'));\nhljs.registerLanguage('mipsasm', require('./languages/mipsasm'));\nhljs.registerLanguage('mizar', require('./languages/mizar'));\nhljs.registerLanguage('perl', require('./languages/perl'));\nhljs.registerLanguage('mojolicious', require('./languages/mojolicious'));\nhljs.registerLanguage('monkey', require('./languages/monkey'));\nhljs.registerLanguage('moonscript', require('./languages/moonscript'));\nhljs.registerLanguage('n1ql', require('./languages/n1ql'));\nhljs.registerLanguage('nginx', require('./languages/nginx'));\nhljs.registerLanguage('nimrod', require('./languages/nimrod'));\nhljs.registerLanguage('nix', require('./languages/nix'));\nhljs.registerLanguage('nsis', require('./languages/nsis'));\nhljs.registerLanguage('objectivec', require('./languages/objectivec'));\nhljs.registerLanguage('ocaml', require('./languages/ocaml'));\nhljs.registerLanguage('openscad', require('./languages/openscad'));\nhljs.registerLanguage('oxygene', require('./languages/oxygene'));\nhljs.registerLanguage('parser3', require('./languages/parser3'));\nhljs.registerLanguage('pf', require('./languages/pf'));\nhljs.registerLanguage('pgsql', require('./languages/pgsql'));\nhljs.registerLanguage('php', require('./languages/php'));\nhljs.registerLanguage('plaintext', require('./languages/plaintext'));\nhljs.registerLanguage('pony', require('./languages/pony'));\nhljs.registerLanguage('powershell', require('./languages/powershell'));\nhljs.registerLanguage('processing', require('./languages/processing'));\nhljs.registerLanguage('profile', require('./languages/profile'));\nhljs.registerLanguage('prolog', require('./languages/prolog'));\nhljs.registerLanguage('properties', require('./languages/properties'));\nhljs.registerLanguage('protobuf', require('./languages/protobuf'));\nhljs.registerLanguage('puppet', require('./languages/puppet'));\nhljs.registerLanguage('purebasic', require('./languages/purebasic'));\nhljs.registerLanguage('python', require('./languages/python'));\nhljs.registerLanguage('q', require('./languages/q'));\nhljs.registerLanguage('qml', require('./languages/qml'));\nhljs.registerLanguage('r', require('./languages/r'));\nhljs.registerLanguage('reasonml', require('./languages/reasonml'));\nhljs.registerLanguage('rib', require('./languages/rib'));\nhljs.registerLanguage('roboconf', require('./languages/roboconf'));\nhljs.registerLanguage('routeros', require('./languages/routeros'));\nhljs.registerLanguage('rsl', require('./languages/rsl'));\nhljs.registerLanguage('ruleslanguage', require('./languages/ruleslanguage'));\nhljs.registerLanguage('rust', require('./languages/rust'));\nhljs.registerLanguage('sas', require('./languages/sas'));\nhljs.registerLanguage('scala', require('./languages/scala'));\nhljs.registerLanguage('scheme', require('./languages/scheme'));\nhljs.registerLanguage('scilab', require('./languages/scilab'));\nhljs.registerLanguage('scss', require('./languages/scss'));\nhljs.registerLanguage('shell', require('./languages/shell'));\nhljs.registerLanguage('smali', require('./languages/smali'));\nhljs.registerLanguage('smalltalk', require('./languages/smalltalk'));\nhljs.registerLanguage('sml', require('./languages/sml'));\nhljs.registerLanguage('sqf', require('./languages/sqf'));\nhljs.registerLanguage('sql', require('./languages/sql'));\nhljs.registerLanguage('stan', require('./languages/stan'));\nhljs.registerLanguage('stata', require('./languages/stata'));\nhljs.registerLanguage('step21', require('./languages/step21'));\nhljs.registerLanguage('stylus', require('./languages/stylus'));\nhljs.registerLanguage('subunit', require('./languages/subunit'));\nhljs.registerLanguage('swift', require('./languages/swift'));\nhljs.registerLanguage('taggerscript', require('./languages/taggerscript'));\nhljs.registerLanguage('yaml', require('./languages/yaml'));\nhljs.registerLanguage('tap', require('./languages/tap'));\nhljs.registerLanguage('tcl', require('./languages/tcl'));\nhljs.registerLanguage('tex', require('./languages/tex'));\nhljs.registerLanguage('thrift', require('./languages/thrift'));\nhljs.registerLanguage('tp', require('./languages/tp'));\nhljs.registerLanguage('twig', require('./languages/twig'));\nhljs.registerLanguage('typescript', require('./languages/typescript'));\nhljs.registerLanguage('vala', require('./languages/vala'));\nhljs.registerLanguage('vbnet', require('./languages/vbnet'));\nhljs.registerLanguage('vbscript', require('./languages/vbscript'));\nhljs.registerLanguage('vbscript-html', require('./languages/vbscript-html'));\nhljs.registerLanguage('verilog', require('./languages/verilog'));\nhljs.registerLanguage('vhdl', require('./languages/vhdl'));\nhljs.registerLanguage('vim', require('./languages/vim'));\nhljs.registerLanguage('x86asm', require('./languages/x86asm'));\nhljs.registerLanguage('xl', require('./languages/xl'));\nhljs.registerLanguage('xquery', require('./languages/xquery'));\nhljs.registerLanguage('zephir', require('./languages/zephir'));\n\nmodule.exports = hljs;","'use strict';\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Rooms = require('./Rooms');\n\nvar Rooms = _interopRequireWildcard(_Rooms);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _UserAddress = require('./UserAddress');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Create a new room, and switch to it.\n *\n * @param {object=} opts parameters for creating the room\n * @param {string=} opts.dmUserId If specified, make this a DM room for this user and invite them\n * @param {object=} opts.createOpts set of options to pass to createRoom call.\n *\n * @returns {Promise} which resolves to the room id, or null if the\n * action was aborted or failed.\n */\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction createRoom(opts) {\n opts = opts || {};\n\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n\n var client = _MatrixClientPeg2.default.get();\n if (client.isGuest()) {\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n return _bluebird2.default.resolve(null);\n }\n\n var defaultPreset = opts.dmUserId ? 'trusted_private_chat' : 'private_chat';\n\n // set some defaults for the creation\n var createOpts = opts.createOpts || {};\n createOpts.preset = createOpts.preset || defaultPreset;\n createOpts.visibility = createOpts.visibility || 'private';\n if (opts.dmUserId && createOpts.invite === undefined) {\n switch ((0, _UserAddress.getAddressType)(opts.dmUserId)) {\n case 'mx-user-id':\n createOpts.invite = [opts.dmUserId];\n break;\n case 'email':\n createOpts.invite_3pid = [{\n id_server: _MatrixClientPeg2.default.get().getIdentityServerUrl(true),\n medium: 'email',\n address: opts.dmUserId\n }];\n }\n }\n if (opts.dmUserId && createOpts.is_direct === undefined) {\n createOpts.is_direct = true;\n }\n\n // By default, view the room after creating it\n if (opts.andView === undefined) {\n opts.andView = true;\n }\n\n // Allow guests by default since the room is private and they'd\n // need an invite. This means clicking on a 3pid invite email can\n // actually drop you right in to a chat.\n createOpts.initial_state = createOpts.initial_state || [{\n content: {\n guest_access: 'can_join'\n },\n type: 'm.room.guest_access',\n state_key: ''\n }];\n\n var modal = _Modal2.default.createDialog(Loader, null, 'mx_Dialog_spinner');\n\n var roomId = void 0;\n return client.createRoom(createOpts).finally(function () {\n modal.close();\n }).then(function (res) {\n roomId = res.room_id;\n if (opts.dmUserId) {\n return Rooms.setDMRoom(roomId, opts.dmUserId);\n } else {\n return _bluebird2.default.resolve();\n }\n }).then(function () {\n // NB createRoom doesn't block on the client seeing the echo that the\n // room has been created, so we race here with the client knowing that\n // the room exists, causing things like\n // https://github.com/vector-im/vector-web/issues/1813\n if (opts.andView) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: roomId,\n should_peek: false,\n // Creating a room will have joined us to the room,\n // so we are expecting the room to come down the sync\n // stream, if it hasn't already.\n joining: true\n });\n }\n return roomId;\n }, function (err) {\n // We also failed to join the room (this sets joining to false in RoomViewStore)\n _dispatcher2.default.dispatch({\n action: 'join_room_error'\n });\n console.error(\"Failed to create room \" + roomId + \" \" + err);\n _Modal2.default.createTrackedDialog('Failure to create room', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failure to create room\"),\n description: (0, _languageHandler._t)(\"Server may be unavailable, overloaded, or you hit a bug.\")\n });\n return null;\n });\n}\n\nmodule.exports = createRoom;\n//# sourceMappingURL=createRoom.js.map","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (lowerBound, upperBound) {\n return function (value) {\n return value <= upperBound && value >= lowerBound;\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _isVisibleThroughFrame = require('./is-visible-through-frame');\n\nvar _isVisibleThroughFrame2 = _interopRequireDefault(_isVisibleThroughFrame);\n\nvar _spacing = require('../spacing');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var target = _ref.target,\n destination = _ref.destination,\n viewport = _ref.viewport;\n\n var displacement = destination.viewport.frameScroll.diff.displacement;\n var withScroll = (0, _spacing.offset)(target, displacement);\n\n if (!destination.viewport.clipped) {\n return false;\n }\n\n var isVisibleInDroppable = (0, _isVisibleThroughFrame2.default)(destination.viewport.clipped)(withScroll);\n\n var isVisibleInViewport = (0, _isVisibleThroughFrame2.default)(viewport)(withScroll);\n\n return isVisibleInDroppable && isVisibleInViewport;\n};","'use strict';\n\nexports.__esModule = true;\nexports.defaultMemoize = defaultMemoize;\nexports.createSelectorCreator = createSelectorCreator;\nexports.createStructuredSelector = createStructuredSelector;\nfunction defaultEqualityCheck(a, b) {\n return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n var length = prev.length;\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction defaultMemoize(func) {\n var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n\n var lastArgs = null;\n var lastResult = null;\n // we reference arguments instead of spreading them for performance reasons\n return function () {\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n lastResult = func.apply(null, arguments);\n }\n\n lastArgs = arguments;\n return lastResult;\n };\n}\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep;\n }).join(', ');\n throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n }\n\n return dependencies;\n}\n\nfunction createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptions[_key - 1] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = getDependencies(funcs);\n\n var memoizedResultFunc = memoize.apply(undefined, [function () {\n recomputations++;\n // apply arguments instead of spreading for performance.\n return resultFunc.apply(null, arguments);\n }].concat(memoizeOptions));\n\n // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n var selector = defaultMemoize(function () {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n params.push(dependencies[i].apply(null, arguments));\n }\n\n // apply arguments instead of spreading for performance.\n return memoizedResultFunc.apply(null, params);\n });\n\n selector.resultFunc = resultFunc;\n selector.recomputations = function () {\n return recomputations;\n };\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n return selector;\n };\n}\n\nvar createSelector = exports.createSelector = createSelectorCreator(defaultMemoize);\n\nfunction createStructuredSelector(selectors) {\n var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n }\n var objectKeys = Object.keys(selectors);\n return selectorCreator(objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n};","\n\n// currently used to initiate the velocity style object to 0\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = mapToZero;\n\nfunction mapToZero(obj) {\n var ret = {};\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n ret[key] = 0;\n }\n }\n return ret;\n}\n\nmodule.exports = exports['default'];","\n\n// stepper is used a lot. Saves allocation to return the same array wrapper.\n// This is fine and danger-free against mutations because the callsite\n// immediately destructures it and gets the numbers inside without passing the\n\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = stepper;\n\nvar reusedTuple = [0, 0];\n\nfunction stepper(secondPerFrame, x, v, destX, k, b, precision) {\n // Spring stiffness, in kg / s^2\n\n // for animations, destX is really spring length (spring at rest). initial\n // position is considered as the stretched/compressed position of a spring\n var Fspring = -k * (x - destX);\n\n // Damping, in kg / s\n var Fdamper = -b * v;\n\n // usually we put mass here, but for animation purposes, specifying mass is a\n // bit redundant. you could simply adjust k and b accordingly\n // let a = (Fspring + Fdamper) / mass;\n var a = Fspring + Fdamper;\n\n var newV = v + a * secondPerFrame;\n var newX = x + newV * secondPerFrame;\n\n if (Math.abs(newV) < precision && Math.abs(newX - destX) < precision) {\n reusedTuple[0] = destX;\n reusedTuple[1] = 0;\n return reusedTuple;\n }\n\n reusedTuple[0] = newX;\n reusedTuple[1] = newV;\n return reusedTuple;\n}\n\nmodule.exports = exports[\"default\"];\n// array reference around.","// Generated by CoffeeScript 1.7.1\n(function() {\n var getNanoSeconds, hrtime, loadTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - loadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n loadTime = getNanoSeconds();\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","\n\n// usage assumption: currentStyle values have already been rendered but it says\n// nothing of whether currentStyle is stale (see unreadPropStyle)\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = shouldStopAnimation;\n\nfunction shouldStopAnimation(currentStyle, style, currentVelocity) {\n for (var key in style) {\n if (!Object.prototype.hasOwnProperty.call(style, key)) {\n continue;\n }\n\n if (currentVelocity[key] !== 0) {\n return false;\n }\n\n var styleValue = typeof style[key] === 'number' ? style[key] : style[key].val;\n // stepper will have already taken care of rounding precision errors, so\n // won't have such thing as 0.9999 !=== 1\n if (currentStyle[key] !== styleValue) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _rafSchd = require('raf-schd');\n\nvar _rafSchd2 = _interopRequireDefault(_rafSchd);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (callbacks, isDraggingFn) {\n var ifDragging = function ifDragging(fn) {\n if (isDraggingFn()) {\n fn();\n }\n };\n\n var memoizedMove = (0, _memoizeOne2.default)(function (x, y) {\n var point = { x: x, y: y };\n callbacks.onMove(point);\n });\n\n var move = (0, _rafSchd2.default)(function (point) {\n ifDragging(function () {\n return memoizedMove(point.x, point.y);\n });\n });\n\n var moveForward = (0, _rafSchd2.default)(function () {\n ifDragging(callbacks.onMoveForward);\n });\n\n var moveBackward = (0, _rafSchd2.default)(function () {\n ifDragging(callbacks.onMoveBackward);\n });\n\n var crossAxisMoveForward = (0, _rafSchd2.default)(function () {\n ifDragging(callbacks.onCrossAxisMoveForward);\n });\n\n var crossAxisMoveBackward = (0, _rafSchd2.default)(function () {\n ifDragging(callbacks.onCrossAxisMoveBackward);\n });\n\n var windowScrollMove = (0, _rafSchd2.default)(function () {\n ifDragging(callbacks.onWindowScroll);\n });\n\n return {\n move: move,\n moveForward: moveForward,\n moveBackward: moveBackward,\n crossAxisMoveForward: crossAxisMoveForward,\n crossAxisMoveBackward: crossAxisMoveBackward,\n windowScrollMove: windowScrollMove\n };\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (ref) {\n return ref ? ref.ownerDocument.defaultView : window;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar tab = exports.tab = 9;\nvar enter = exports.enter = 13;\nvar escape = exports.escape = 27;\nvar space = exports.space = 32;\nvar arrowLeft = exports.arrowLeft = 37;\nvar arrowUp = exports.arrowUp = 38;\nvar arrowRight = exports.arrowRight = 39;\nvar arrowDown = exports.arrowDown = 40;","'use strict';\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _utils = require('flux/utils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar INITIAL_STATE = {\n cachedPassword: localStorage.getItem('mx_pass')\n};\n\n/**\n * A class for storing application state to do with the session. This is a simple flux\n * store that listens for actions and updates its state accordingly, informing any\n * listeners (views) of state changes.\n *\n * Usage:\n * ```\n * sessionStore.addListener(() => {\n * this.setState({ cachedPassword: sessionStore.getCachedPassword() })\n * })\n * ```\n */\n\nvar SessionStore = function (_Store) {\n (0, _inherits3.default)(SessionStore, _Store);\n\n function SessionStore() {\n (0, _classCallCheck3.default)(this, SessionStore);\n\n // Initialise state\n var _this = (0, _possibleConstructorReturn3.default)(this, (SessionStore.__proto__ || (0, _getPrototypeOf2.default)(SessionStore)).call(this, _dispatcher2.default));\n\n _this._state = INITIAL_STATE;\n return _this;\n }\n\n (0, _createClass3.default)(SessionStore, [{\n key: '_update',\n value: function _update() {\n // Persist state to localStorage\n if (this._state.cachedPassword) {\n localStorage.setItem('mx_pass', this._state.cachedPassword);\n } else {\n localStorage.removeItem('mx_pass', this._state.cachedPassword);\n }\n\n this.__emitChange();\n }\n }, {\n key: '_setState',\n value: function _setState(newState) {\n this._state = (0, _assign2.default)(this._state, newState);\n this._update();\n }\n }, {\n key: '__onDispatch',\n value: function __onDispatch(payload) {\n switch (payload.action) {\n case 'cached_password':\n this._setState({\n cachedPassword: payload.cachedPassword\n });\n break;\n case 'password_changed':\n this._setState({\n cachedPassword: null\n });\n break;\n case 'on_logged_out':\n this._setState({\n cachedPassword: null\n });\n break;\n }\n }\n }, {\n key: 'getCachedPassword',\n value: function getCachedPassword() {\n return this._state.cachedPassword;\n }\n }]);\n return SessionStore;\n}(_utils.Store);\n\nvar singletonSessionStore = null;\nif (!singletonSessionStore) {\n singletonSessionStore = new SessionStore();\n}\nmodule.exports = singletonSessionStore;\n//# sourceMappingURL=SessionStore.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _maxSafeInteger = require('babel-runtime/core-js/number/max-safe-integer');\n\nvar _maxSafeInteger2 = _interopRequireDefault(_maxSafeInteger);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _utils = require('flux/utils');\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _DMRoomMap = require('../utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _Unread = require('../Unread');\n\nvar _Unread2 = _interopRequireDefault(_Unread);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A class for storing application state for categorising rooms in\n * the RoomList.\n */\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar RoomListStore = function (_Store) {\n (0, _inherits3.default)(RoomListStore, _Store);\n\n function RoomListStore() {\n (0, _classCallCheck3.default)(this, RoomListStore);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (RoomListStore.__proto__ || (0, _getPrototypeOf2.default)(RoomListStore)).call(this, _dispatcher2.default));\n\n _this._init();\n _this._getManualComparator = _this._getManualComparator.bind(_this);\n _this._recentsComparator = _this._recentsComparator.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(RoomListStore, [{\n key: '_init',\n value: function _init() {\n // Initialise state\n this._state = {\n lists: {\n \"m.server_notice\": [],\n \"im.vector.fake.invite\": [],\n \"m.favourite\": [],\n \"im.vector.fake.recent\": [],\n \"im.vector.fake.direct\": [],\n \"m.lowpriority\": [],\n \"im.vector.fake.archived\": []\n },\n ready: false\n };\n }\n }, {\n key: '_setState',\n value: function _setState(newState) {\n this._state = (0, _assign2.default)(this._state, newState);\n this.__emitChange();\n }\n }, {\n key: '__onDispatch',\n value: function __onDispatch(payload) {\n switch (payload.action) {\n // Initialise state after initial sync\n case 'MatrixActions.sync':\n {\n if (!(payload.prevState !== 'PREPARED' && payload.state === 'PREPARED')) {\n break;\n }\n\n this._matrixClient = payload.matrixClient;\n this._generateRoomLists();\n }\n break;\n case 'MatrixActions.Room.tags':\n {\n if (!this._state.ready) break;\n this._generateRoomLists();\n }\n break;\n case 'MatrixActions.Room.timeline':\n {\n if (!this._state.ready || !payload.isLiveEvent || !payload.isLiveUnfilteredRoomTimelineEvent || !this._eventTriggersRecentReorder(payload.event)) break;\n this._generateRoomLists();\n }\n break;\n // When an event is decrypted, it could mean we need to reorder the room\n // list because we now know the type of the event.\n case 'MatrixActions.Event.decrypted':\n {\n // We may not have synced or done an initial generation of the lists\n if (!this._matrixClient || !this._state.ready) break;\n\n var roomId = payload.event.getRoomId();\n\n // We may have decrypted an event without a roomId (e.g to_device)\n if (!roomId) break;\n\n var room = this._matrixClient.getRoom(roomId);\n\n // We somehow decrypted an event for a room our client is unaware of\n if (!room) break;\n\n var liveTimeline = room.getLiveTimeline();\n var eventTimeline = room.getTimelineForEvent(payload.event.getId());\n\n // Either this event was not added to the live timeline (e.g. pagination)\n // or it doesn't affect the ordering of the room list.\n if (liveTimeline !== eventTimeline || !this._eventTriggersRecentReorder(payload.event)) break;\n this._generateRoomLists();\n }\n break;\n case 'MatrixActions.accountData':\n {\n if (payload.event_type !== 'm.direct') break;\n this._generateRoomLists();\n }\n break;\n case 'MatrixActions.Room.myMembership':\n {\n this._generateRoomLists();\n }\n break;\n // This could be a new room that we've been invited to, joined or created\n // we won't get a RoomMember.membership for these cases if we're not already\n // a member.\n case 'MatrixActions.Room':\n {\n if (!this._state.ready || !this._matrixClient.credentials.userId) break;\n this._generateRoomLists();\n }\n break;\n case 'RoomListActions.tagRoom.pending':\n {\n // XXX: we only show one optimistic update at any one time.\n // Ideally we should be making a list of in-flight requests\n // that are backed by transaction IDs. Until the js-sdk\n // supports this, we're stuck with only being able to use\n // the most recent optimistic update.\n this._generateRoomLists(payload.request);\n }\n break;\n case 'RoomListActions.tagRoom.failure':\n {\n // Reset state according to js-sdk\n this._generateRoomLists();\n }\n break;\n case 'on_logged_out':\n {\n // Reset state without pushing an update to the view, which generally assumes that\n // the matrix client isn't `null` and so causing a re-render will cause NPEs.\n this._init();\n this._matrixClient = null;\n }\n break;\n }\n }\n }, {\n key: '_generateRoomLists',\n value: function _generateRoomLists(optimisticRequest) {\n var _this2 = this;\n\n var lists = {\n \"m.server_notice\": [],\n \"im.vector.fake.invite\": [],\n \"m.favourite\": [],\n \"im.vector.fake.recent\": [],\n \"im.vector.fake.direct\": [],\n \"m.lowpriority\": [],\n \"im.vector.fake.archived\": []\n };\n\n var dmRoomMap = _DMRoomMap2.default.shared();\n\n // If somehow we dispatched a RoomListActions.tagRoom.failure before a MatrixActions.sync\n if (!this._matrixClient) return;\n\n this._matrixClient.getRooms().forEach(function (room, index) {\n var myUserId = _this2._matrixClient.getUserId();\n var membership = room.getMyMembership();\n var me = room.getMember(myUserId);\n\n if (membership == \"invite\") {\n lists[\"im.vector.fake.invite\"].push(room);\n } else if (membership == \"join\" || membership === \"ban\" || me && me.isKicked()) {\n // Used to split rooms via tags\n var tagNames = (0, _keys2.default)(room.tags);\n\n if (optimisticRequest && optimisticRequest.room === room) {\n // Remove old tag\n tagNames = tagNames.filter(function (tagName) {\n return tagName !== optimisticRequest.oldTag;\n });\n // Add new tag\n if (optimisticRequest.newTag && !tagNames.includes(optimisticRequest.newTag)) {\n tagNames.push(optimisticRequest.newTag);\n }\n }\n\n // ignore any m. tag names we don't know about\n tagNames = tagNames.filter(function (t) {\n return !t.startsWith('m.') || lists[t] !== undefined;\n });\n\n if (tagNames.length) {\n for (var i = 0; i < tagNames.length; i++) {\n var tagName = tagNames[i];\n lists[tagName] = lists[tagName] || [];\n lists[tagName].push(room);\n }\n } else if (dmRoomMap.getUserIdForRoomId(room.roomId)) {\n // \"Direct Message\" rooms (that we're still in and that aren't otherwise tagged)\n lists[\"im.vector.fake.direct\"].push(room);\n } else {\n lists[\"im.vector.fake.recent\"].push(room);\n }\n } else if (membership === \"leave\") {\n lists[\"im.vector.fake.archived\"].push(room);\n }\n });\n\n (0, _keys2.default)(lists).forEach(function (listKey) {\n var comparator = void 0;\n switch (RoomListStore._listOrders[listKey]) {\n case \"recent\":\n comparator = _this2._recentsComparator;\n break;\n case \"manual\":\n default:\n comparator = _this2._getManualComparator(listKey, optimisticRequest);\n break;\n }\n lists[listKey].sort(comparator);\n });\n\n this._setState({\n lists: lists,\n ready: true // Ready to receive updates via Room.tags events\n });\n }\n }, {\n key: '_eventTriggersRecentReorder',\n value: function _eventTriggersRecentReorder(ev) {\n return ev.getTs() && (_Unread2.default.eventTriggersUnreadCount(ev) || ev.getSender() === this._matrixClient.credentials.userId);\n }\n }, {\n key: '_tsOfNewestEvent',\n value: function _tsOfNewestEvent(room) {\n for (var i = room.timeline.length - 1; i >= 0; --i) {\n var ev = room.timeline[i];\n if (this._eventTriggersRecentReorder(ev)) {\n return ev.getTs();\n }\n }\n\n // we might only have events that don't trigger the unread indicator,\n // in which case use the oldest event even if normally it wouldn't count.\n // This is better than just assuming the last event was forever ago.\n if (room.timeline.length && room.timeline[0].getTs()) {\n return room.timeline[0].getTs();\n } else {\n return _maxSafeInteger2.default;\n }\n }\n }, {\n key: '_recentsComparator',\n value: function _recentsComparator(roomA, roomB) {\n // XXX: We could use a cache here and update it when we see new\n // events that trigger a reorder\n return this._tsOfNewestEvent(roomB) - this._tsOfNewestEvent(roomA);\n }\n }, {\n key: '_lexicographicalComparator',\n value: function _lexicographicalComparator(roomA, roomB) {\n return roomA.name > roomB.name ? 1 : -1;\n }\n }, {\n key: '_getManualComparator',\n value: function _getManualComparator(tagName, optimisticRequest) {\n var _this3 = this;\n\n return function (roomA, roomB) {\n var metaA = roomA.tags[tagName];\n var metaB = roomB.tags[tagName];\n\n if (optimisticRequest && roomA === optimisticRequest.room) metaA = optimisticRequest.metaData;\n if (optimisticRequest && roomB === optimisticRequest.room) metaB = optimisticRequest.metaData;\n\n // Make sure the room tag has an order element, if not set it to be the bottom\n var a = metaA ? metaA.order : undefined;\n var b = metaB ? metaB.order : undefined;\n\n // Order undefined room tag orders to the bottom\n if (a === undefined && b !== undefined) {\n return 1;\n } else if (a !== undefined && b === undefined) {\n return -1;\n }\n\n return a == b ? _this3._lexicographicalComparator(roomA, roomB) : a > b ? 1 : -1;\n };\n }\n }, {\n key: 'getRoomLists',\n value: function getRoomLists() {\n return this._state.lists;\n }\n }]);\n return RoomListStore;\n}(_utils.Store);\n\nRoomListStore._listOrders = {\n \"m.favourite\": \"manual\",\n \"im.vector.fake.invite\": \"recent\",\n \"im.vector.fake.recent\": \"recent\",\n \"im.vector.fake.direct\": \"recent\",\n \"m.lowpriority\": \"recent\",\n \"im.vector.fake.archived\": \"recent\"\n};\n\n\nif (global.singletonRoomListStore === undefined) {\n global.singletonRoomListStore = new RoomListStore();\n}\nexports.default = global.singletonRoomListStore;\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomListStore.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = shouldHideEvent;\n\nvar _SettingsStore = require('./settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction memberEventDiff(ev) {\n var diff = {\n isMemberEvent: ev.getType() === 'm.room.member'\n };\n\n // If is not a Member Event then the other checks do not apply, so bail early.\n if (!diff.isMemberEvent) return diff;\n\n var content = ev.getContent();\n var prevContent = ev.getPrevContent();\n\n var isMembershipChanged = content.membership !== prevContent.membership;\n diff.isJoin = isMembershipChanged && content.membership === 'join';\n diff.isPart = isMembershipChanged && content.membership === 'leave' && ev.getStateKey() === ev.getSender();\n\n var isJoinToJoin = !isMembershipChanged && content.membership === 'join';\n diff.isDisplaynameChange = isJoinToJoin && content.displayname !== prevContent.displayname;\n diff.isAvatarChange = isJoinToJoin && content.avatar_url !== prevContent.avatar_url;\n return diff;\n} /*\n Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction shouldHideEvent(ev) {\n // Wrap getValue() for readability\n var isEnabled = function isEnabled(name) {\n return _SettingsStore2.default.getValue(name, ev.getRoomId());\n };\n\n // Hide redacted events\n if (isEnabled('hideRedactions') && ev.isRedacted()) return true;\n\n var eventDiff = memberEventDiff(ev);\n\n if (eventDiff.isMemberEvent) {\n if (isEnabled('hideJoinLeaves') && (eventDiff.isJoin || eventDiff.isPart)) return true;\n if (isEnabled('hideAvatarChanges') && eventDiff.isAvatarChange) return true;\n if (isEnabled('hideDisplaynameChanges') && eventDiff.isDisplaynameChange) return true;\n }\n\n return false;\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=shouldHideEvent.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.asyncAction = asyncAction;\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Create an action thunk that will dispatch actions indicating the current\n * status of the Promise returned by fn.\n *\n * @param {string} id the id to give the dispatched actions. This is given a\n * suffix determining whether it is pending, successful or\n * a failure.\n * @param {function} fn a function that returns a Promise.\n * @param {function?} pendingFn a function that returns an object to assign\n * to the `request` key of the ${id}.pending\n * payload.\n * @returns {function} an action thunk - a function that uses its single\n * argument as a dispatch function to dispatch the\n * following actions:\n * `${id}.pending` and either\n * `${id}.success` or\n * `${id}.failure`.\n *\n * The shape of each are:\n * { action: '${id}.pending', request }\n * { action: '${id}.success', result }\n * { action: '${id}.failure', err }\n *\n * where `request` is returned by `pendingFn` and\n * result is the result of the promise returned by\n * `fn`.\n */\nfunction asyncAction(id, fn, pendingFn) {\n return function (dispatch) {\n dispatch({\n action: id + '.pending',\n request: typeof pendingFn === 'function' ? pendingFn() : undefined\n });\n fn().then(function (result) {\n dispatch({ action: id + '.success', result: result });\n }).catch(function (err) {\n dispatch({ action: id + '.failure', err: err });\n });\n };\n}\n//# sourceMappingURL=actionCreators.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _set = require('babel-runtime/core-js/set');\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _utils = require('flux/utils');\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Analytics = require('../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar INITIAL_STATE = {\n orderedTags: null,\n orderedTagsAccountData: null,\n hasSynced: false,\n joinedGroupIds: null,\n\n selectedTags: [],\n // Last selected tag when shift was not being pressed\n anchorTag: null\n};\n\n/**\n * A class for storing application state for ordering tags in the TagPanel.\n */\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar TagOrderStore = function (_Store) {\n (0, _inherits3.default)(TagOrderStore, _Store);\n\n function TagOrderStore() {\n (0, _classCallCheck3.default)(this, TagOrderStore);\n\n // Initialise state\n var _this = (0, _possibleConstructorReturn3.default)(this, (TagOrderStore.__proto__ || (0, _getPrototypeOf2.default)(TagOrderStore)).call(this, _dispatcher2.default));\n\n _this._state = (0, _assign2.default)({}, INITIAL_STATE);\n return _this;\n }\n\n (0, _createClass3.default)(TagOrderStore, [{\n key: '_setState',\n value: function _setState(newState) {\n this._state = (0, _assign2.default)(this._state, newState);\n this.__emitChange();\n }\n }, {\n key: '__onDispatch',\n value: function __onDispatch(payload) {\n switch (payload.action) {\n // Initialise state after initial sync\n case 'MatrixActions.sync':\n {\n if (!(payload.prevState !== 'PREPARED' && payload.state === 'PREPARED')) {\n break;\n }\n var tagOrderingEvent = payload.matrixClient.getAccountData('im.vector.web.tag_ordering');\n var tagOrderingEventContent = tagOrderingEvent ? tagOrderingEvent.getContent() : {};\n this._setState({\n orderedTagsAccountData: tagOrderingEventContent.tags || null,\n removedTagsAccountData: tagOrderingEventContent.removedTags || null,\n hasSynced: true\n });\n this._updateOrderedTags();\n break;\n }\n // Get ordering from account data\n case 'MatrixActions.accountData':\n {\n if (payload.event_type !== 'im.vector.web.tag_ordering') break;\n\n // Ignore remote echos caused by this store so as to avoid setting\n // state back to old state.\n if (payload.event_content._storeId === this.getStoreId()) break;\n\n this._setState({\n orderedTagsAccountData: payload.event_content ? payload.event_content.tags : null,\n removedTagsAccountData: payload.event_content ? payload.event_content.removedTags : null\n });\n this._updateOrderedTags();\n break;\n }\n // Initialise the state such that if account data is unset, default to joined groups\n case 'GroupActions.fetchJoinedGroups.success':\n {\n this._setState({\n joinedGroupIds: payload.result.groups.sort(), // Sort lexically\n hasFetchedJoinedGroups: true\n });\n this._updateOrderedTags();\n break;\n }\n case 'TagOrderActions.moveTag.pending':\n {\n // Optimistic update of a moved tag\n this._setState({\n orderedTags: payload.request.tags,\n removedTagsAccountData: payload.request.removedTags\n });\n break;\n }\n case 'TagOrderActions.removeTag.pending':\n {\n // Optimistic update of a removed tag\n this._setState({\n removedTagsAccountData: payload.request.removedTags\n });\n this._updateOrderedTags();\n break;\n }\n case 'select_tag':\n {\n var newTags = [];\n // Shift-click semantics\n if (payload.shiftKey) {\n // Select range of tags\n var start = this._state.orderedTags.indexOf(this._state.anchorTag);\n var end = this._state.orderedTags.indexOf(payload.tag);\n\n if (start === -1) {\n start = end;\n }\n if (start > end) {\n var temp = start;\n start = end;\n end = temp;\n }\n newTags = payload.ctrlOrCmdKey ? this._state.selectedTags : [];\n newTags = [].concat((0, _toConsumableArray3.default)(new _set2.default(this._state.orderedTags.slice(start, end + 1).concat(newTags))));\n } else {\n if (payload.ctrlOrCmdKey) {\n // Toggle individual tag\n if (this._state.selectedTags.includes(payload.tag)) {\n newTags = this._state.selectedTags.filter(function (t) {\n return t !== payload.tag;\n });\n } else {\n newTags = [].concat((0, _toConsumableArray3.default)(this._state.selectedTags), [payload.tag]);\n }\n } else {\n // Select individual tag\n newTags = [payload.tag];\n }\n // Only set the anchor tag if the tag was previously unselected, otherwise\n // the next range starts with an unselected tag.\n if (!this._state.selectedTags.includes(payload.tag)) {\n this._setState({\n anchorTag: payload.tag\n });\n }\n }\n\n this._setState({\n selectedTags: newTags\n });\n\n _Analytics2.default.trackEvent('FilterStore', 'select_tag');\n }\n break;\n case 'deselect_tags':\n this._setState({\n selectedTags: []\n });\n _Analytics2.default.trackEvent('FilterStore', 'deselect_tags');\n break;\n case 'on_logged_out':\n {\n // Reset state without pushing an update to the view, which generally assumes that\n // the matrix client isn't `null` and so causing a re-render will cause NPEs.\n this._state = (0, _assign2.default)({}, INITIAL_STATE);\n break;\n }\n }\n }\n }, {\n key: '_updateOrderedTags',\n value: function _updateOrderedTags() {\n this._setState({\n orderedTags: this._state.hasSynced && this._state.hasFetchedJoinedGroups ? this._mergeGroupsAndTags() : null\n });\n }\n }, {\n key: '_mergeGroupsAndTags',\n value: function _mergeGroupsAndTags() {\n var groupIds = this._state.joinedGroupIds || [];\n var tags = this._state.orderedTagsAccountData || [];\n var removedTags = new _set2.default(this._state.removedTagsAccountData || []);\n\n var tagsToKeep = tags.filter(function (t) {\n return (t[0] !== '+' || groupIds.includes(t)) && !removedTags.has(t);\n });\n\n var groupIdsToAdd = groupIds.filter(function (groupId) {\n return !tags.includes(groupId) && !removedTags.has(groupId);\n });\n\n return tagsToKeep.concat(groupIdsToAdd);\n }\n }, {\n key: 'getOrderedTags',\n value: function getOrderedTags() {\n return this._state.orderedTags;\n }\n }, {\n key: 'getRemovedTagsAccountData',\n value: function getRemovedTagsAccountData() {\n return this._state.removedTagsAccountData;\n }\n }, {\n key: 'getStoreId',\n value: function getStoreId() {\n // Generate a random ID to prevent this store from clobbering its\n // state with redundant remote echos.\n if (!this._id) this._id = Math.random().toString(16).slice(2, 10);\n return this._id;\n }\n }, {\n key: 'getSelectedTags',\n value: function getSelectedTags() {\n return this._state.selectedTags;\n }\n }]);\n return TagOrderStore;\n}(_utils.Store);\n\nif (global.singletonTagOrderStore === undefined) {\n global.singletonTagOrderStore = new TagOrderStore();\n}\nexports.default = global.singletonTagOrderStore;\nmodule.exports = exports['default'];\n//# sourceMappingURL=TagOrderStore.js.map","'use strict';\n\nexports.__esModule = true;\nexports.tokenize = exports.test = exports.scanner = exports.parser = exports.options = exports.inherits = exports.find = undefined;\n\nvar _class = require('./linkify/utils/class');\n\nvar _options = require('./linkify/utils/options');\n\nvar options = _interopRequireWildcard(_options);\n\nvar _scanner = require('./linkify/core/scanner');\n\nvar scanner = _interopRequireWildcard(_scanner);\n\nvar _parser = require('./linkify/core/parser');\n\nvar parser = _interopRequireWildcard(_parser);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nif (!Array.isArray) {\n\tArray.isArray = function (arg) {\n\t\treturn Object.prototype.toString.call(arg) === '[object Array]';\n\t};\n}\n\n/**\n\tConverts a string into tokens that represent linkable and non-linkable bits\n\t@method tokenize\n\t@param {String} str\n\t@return {Array} tokens\n*/\nvar tokenize = function tokenize(str) {\n\treturn parser.run(scanner.run(str));\n};\n\n/**\n\tReturns a list of linkable items in the given string.\n*/\nvar find = function find(str) {\n\tvar type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\tvar tokens = tokenize(str);\n\tvar filtered = [];\n\n\tfor (var i = 0; i < tokens.length; i++) {\n\t\tvar token = tokens[i];\n\t\tif (token.isLink && (!type || token.type === type)) {\n\t\t\tfiltered.push(token.toObject());\n\t\t}\n\t}\n\n\treturn filtered;\n};\n\n/**\n\tIs the given string valid linkable text of some sort\n\tNote that this does not trim the text for you.\n\n\tOptionally pass in a second `type` param, which is the type of link to test\n\tfor.\n\n\tFor example,\n\n\t\ttest(str, 'email');\n\n\tWill return `true` if str is a valid email.\n*/\nvar test = function test(str) {\n\tvar type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\tvar tokens = tokenize(str);\n\treturn tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].type === type);\n};\n\n// Scanner and parser provide states and tokens for the lexicographic stage\n// (will be used to add additional link types)\nexports.find = find;\nexports.inherits = _class.inherits;\nexports.options = options;\nexports.parser = parser;\nexports.scanner = scanner;\nexports.test = test;\nexports.tokenize = tokenize;","'use strict';\n\nexports.__esModule = true;\nexports.AMPERSAND = exports.CLOSEPAREN = exports.CLOSEANGLEBRACKET = exports.CLOSEBRACKET = exports.CLOSEBRACE = exports.OPENPAREN = exports.OPENANGLEBRACKET = exports.OPENBRACKET = exports.OPENBRACE = exports.WS = exports.TLD = exports.SYM = exports.UNDERSCORE = exports.SLASH = exports.MAILTO = exports.PROTOCOL = exports.QUERY = exports.POUND = exports.PLUS = exports.NUM = exports.NL = exports.LOCALHOST = exports.PUNCTUATION = exports.DOT = exports.COLON = exports.AT = exports.DOMAIN = exports.Base = undefined;\n\nvar _createTokenClass = require('./create-token-class');\n\nvar _class = require('../../utils/class');\n\n/******************************************************************************\n\tText Tokens\n\tTokens composed of strings\n******************************************************************************/\n\n/**\n\tAbstract class used for manufacturing text tokens.\n\tPass in the value this token represents\n\n\t@class TextToken\n\t@abstract\n*/\nvar TextToken = (0, _createTokenClass.createTokenClass)();\nTextToken.prototype = {\n\ttoString: function toString() {\n\t\treturn this.v + '';\n\t}\n};\n\nfunction inheritsToken(value) {\n\tvar props = value ? { v: value } : {};\n\treturn (0, _class.inherits)(TextToken, (0, _createTokenClass.createTokenClass)(), props);\n}\n\n/**\n\tA valid domain token\n\t@class DOMAIN\n\t@extends TextToken\n*/\nvar DOMAIN = inheritsToken();\n\n/**\n\t@class AT\n\t@extends TextToken\n*/\nvar AT = inheritsToken('@');\n\n/**\n\tRepresents a single colon `:` character\n\n\t@class COLON\n\t@extends TextToken\n*/\nvar COLON = inheritsToken(':');\n\n/**\n\t@class DOT\n\t@extends TextToken\n*/\nvar DOT = inheritsToken('.');\n\n/**\n\tA character class that can surround the URL, but which the URL cannot begin\n\tor end with. Does not include certain English punctuation like parentheses.\n\n\t@class PUNCTUATION\n\t@extends TextToken\n*/\nvar PUNCTUATION = inheritsToken();\n\n/**\n\tThe word localhost (by itself)\n\t@class LOCALHOST\n\t@extends TextToken\n*/\nvar LOCALHOST = inheritsToken();\n\n/**\n\tNewline token\n\t@class NL\n\t@extends TextToken\n*/\nvar NL = inheritsToken('\\n');\n\n/**\n\t@class NUM\n\t@extends TextToken\n*/\nvar NUM = inheritsToken();\n\n/**\n\t@class PLUS\n\t@extends TextToken\n*/\nvar PLUS = inheritsToken('+');\n\n/**\n\t@class POUND\n\t@extends TextToken\n*/\nvar POUND = inheritsToken('#');\n\n/**\n\tRepresents a web URL protocol. Supported types include\n\n\t* `http:`\n\t* `https:`\n\t* `ftp:`\n\t* `ftps:`\n\n\t@class PROTOCOL\n\t@extends TextToken\n*/\nvar PROTOCOL = inheritsToken();\n\n/**\n\tRepresents the start of the email URI protocol\n\n\t@class MAILTO\n\t@extends TextToken\n*/\nvar MAILTO = inheritsToken('mailto:');\n\n/**\n\t@class QUERY\n\t@extends TextToken\n*/\nvar QUERY = inheritsToken('?');\n\n/**\n\t@class SLASH\n\t@extends TextToken\n*/\nvar SLASH = inheritsToken('/');\n\n/**\n\t@class UNDERSCORE\n\t@extends TextToken\n*/\nvar UNDERSCORE = inheritsToken('_');\n\n/**\n\tOne ore more non-whitespace symbol.\n\t@class SYM\n\t@extends TextToken\n*/\nvar SYM = inheritsToken();\n\n/**\n\t@class TLD\n\t@extends TextToken\n*/\nvar TLD = inheritsToken();\n\n/**\n\tRepresents a string of consecutive whitespace characters\n\n\t@class WS\n\t@extends TextToken\n*/\nvar WS = inheritsToken();\n\n/**\n\tOpening/closing bracket classes\n*/\n\nvar OPENBRACE = inheritsToken('{');\nvar OPENBRACKET = inheritsToken('[');\nvar OPENANGLEBRACKET = inheritsToken('<');\nvar OPENPAREN = inheritsToken('(');\nvar CLOSEBRACE = inheritsToken('}');\nvar CLOSEBRACKET = inheritsToken(']');\nvar CLOSEANGLEBRACKET = inheritsToken('>');\nvar CLOSEPAREN = inheritsToken(')');\n\nvar AMPERSAND = inheritsToken('&');\n\nexports.Base = TextToken;\nexports.DOMAIN = DOMAIN;\nexports.AT = AT;\nexports.COLON = COLON;\nexports.DOT = DOT;\nexports.PUNCTUATION = PUNCTUATION;\nexports.LOCALHOST = LOCALHOST;\nexports.NL = NL;\nexports.NUM = NUM;\nexports.PLUS = PLUS;\nexports.POUND = POUND;\nexports.QUERY = QUERY;\nexports.PROTOCOL = PROTOCOL;\nexports.MAILTO = MAILTO;\nexports.SLASH = SLASH;\nexports.UNDERSCORE = UNDERSCORE;\nexports.SYM = SYM;\nexports.TLD = TLD;\nexports.WS = WS;\nexports.OPENBRACE = OPENBRACE;\nexports.OPENBRACKET = OPENBRACKET;\nexports.OPENANGLEBRACKET = OPENANGLEBRACKET;\nexports.OPENPAREN = OPENPAREN;\nexports.CLOSEBRACE = CLOSEBRACE;\nexports.CLOSEBRACKET = CLOSEBRACKET;\nexports.CLOSEANGLEBRACKET = CLOSEANGLEBRACKET;\nexports.CLOSEPAREN = CLOSEPAREN;\nexports.AMPERSAND = AMPERSAND;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MUTE = exports.MENTIONS_ONLY = exports.ALL_MESSAGES = exports.ALL_MESSAGES_LOUD = undefined;\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nexports.getRoomNotifsState = getRoomNotifsState;\nexports.setRoomNotifsState = setRoomNotifsState;\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _pushprocessor = require('matrix-js-sdk/lib/pushprocessor');\n\nvar _pushprocessor2 = _interopRequireDefault(_pushprocessor);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ALL_MESSAGES_LOUD = exports.ALL_MESSAGES_LOUD = 'all_messages_loud'; /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar ALL_MESSAGES = exports.ALL_MESSAGES = 'all_messages';\nvar MENTIONS_ONLY = exports.MENTIONS_ONLY = 'mentions_only';\nvar MUTE = exports.MUTE = 'mute';\n\nfunction getRoomNotifsState(roomId) {\n if (_MatrixClientPeg2.default.get().isGuest()) return ALL_MESSAGES;\n\n // look through the override rules for a rule affecting this room:\n // if one exists, it will take precedence.\n var muteRule = findOverrideMuteRule(roomId);\n if (muteRule) {\n return MUTE;\n }\n\n // for everything else, look at the room rule.\n var roomRule = null;\n try {\n roomRule = _MatrixClientPeg2.default.get().getRoomPushRule('global', roomId);\n } catch (err) {\n // Possible that the client doesn't have pushRules yet. If so, it\n // hasn't started eiher, so indicate that this room is not notifying.\n return null;\n }\n\n // XXX: We have to assume the default is to notify for all messages\n // (in particular this will be 'wrong' for one to one rooms because\n // they will notify loudly for all messages)\n if (!roomRule || !roomRule.enabled) return ALL_MESSAGES;\n\n // a mute at the room level will still allow mentions\n // to notify\n if (isMuteRule(roomRule)) return MENTIONS_ONLY;\n\n var actionsObject = _pushprocessor2.default.actionListToActionsObject(roomRule.actions);\n if (actionsObject.tweaks.sound) return ALL_MESSAGES_LOUD;\n\n return null;\n}\n\nfunction setRoomNotifsState(roomId, newState) {\n if (newState === MUTE) {\n return setRoomNotifsStateMuted(roomId);\n } else {\n return setRoomNotifsStateUnmuted(roomId, newState);\n }\n}\n\nfunction setRoomNotifsStateMuted(roomId) {\n var cli = _MatrixClientPeg2.default.get();\n var promises = [];\n\n // delete the room rule\n var roomRule = cli.getRoomPushRule('global', roomId);\n if (roomRule) {\n promises.push(cli.deletePushRule('global', 'room', roomRule.rule_id));\n }\n\n // add/replace an override rule to squelch everything in this room\n // NB. We use the room ID as the name of this rule too, although this\n // is an override rule, not a room rule: it still pertains to this room\n // though, so using the room ID as the rule ID is logical and prevents\n // duplicate copies of the rule.\n promises.push(cli.addPushRule('global', 'override', roomId, {\n conditions: [{\n kind: 'event_match',\n key: 'room_id',\n pattern: roomId\n }],\n actions: ['dont_notify']\n }));\n\n return _bluebird2.default.all(promises);\n}\n\nfunction setRoomNotifsStateUnmuted(roomId, newState) {\n var cli = _MatrixClientPeg2.default.get();\n var promises = [];\n\n var overrideMuteRule = findOverrideMuteRule(roomId);\n if (overrideMuteRule) {\n promises.push(cli.deletePushRule('global', 'override', overrideMuteRule.rule_id));\n }\n\n if (newState === 'all_messages') {\n var roomRule = cli.getRoomPushRule('global', roomId);\n if (roomRule) {\n promises.push(cli.deletePushRule('global', 'room', roomRule.rule_id));\n }\n } else if (newState === 'mentions_only') {\n promises.push(cli.addPushRule('global', 'room', roomId, {\n actions: ['dont_notify']\n }));\n // https://matrix.org/jira/browse/SPEC-400\n promises.push(cli.setPushRuleEnabled('global', 'room', roomId, true));\n } else if ('all_messages_loud') {\n promises.push(cli.addPushRule('global', 'room', roomId, {\n actions: ['notify', {\n set_tweak: 'sound',\n value: 'default'\n }]\n }));\n // https://matrix.org/jira/browse/SPEC-400\n promises.push(cli.setPushRuleEnabled('global', 'room', roomId, true));\n }\n\n return _bluebird2.default.all(promises);\n}\n\nfunction findOverrideMuteRule(roomId) {\n if (!_MatrixClientPeg2.default.get().pushRules || !_MatrixClientPeg2.default.get().pushRules['global'] || !_MatrixClientPeg2.default.get().pushRules['global'].override) {\n return null;\n }\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(_MatrixClientPeg2.default.get().pushRules['global'].override), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var rule = _step.value;\n\n if (isRuleForRoom(roomId, rule)) {\n if (isMuteRule(rule) && rule.enabled) {\n return rule;\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return null;\n}\n\nfunction isRuleForRoom(roomId, rule) {\n if (rule.conditions.length !== 1) {\n return false;\n }\n var cond = rule.conditions[0];\n return cond.kind === 'event_match' && cond.key === 'room_id' && cond.pattern === roomId;\n}\n\nfunction isMuteRule(rule) {\n return rule.actions.length === 1 && rule.actions[0] === 'dont_notify';\n}\n//# sourceMappingURL=RoomNotifs.js.map","\"use strict\";\n\n/**\r\n * filesize\r\n *\r\n * @copyright 2017 Jason Mulligan <jason.mulligan@avoidwork.com>\r\n * @license BSD-3-Clause\r\n * @version 3.5.6\r\n */\n(function (global) {\n\tvar b = /^(b|B)$/,\n\t symbol = {\n\t\tiec: {\n\t\t\tbits: [\"b\", \"Kib\", \"Mib\", \"Gib\", \"Tib\", \"Pib\", \"Eib\", \"Zib\", \"Yib\"],\n\t\t\tbytes: [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"]\n\t\t},\n\t\tjedec: {\n\t\t\tbits: [\"b\", \"Kb\", \"Mb\", \"Gb\", \"Tb\", \"Pb\", \"Eb\", \"Zb\", \"Yb\"],\n\t\t\tbytes: [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"]\n\t\t}\n\t},\n\t fullform = {\n\t\tiec: [\"\", \"kibi\", \"mebi\", \"gibi\", \"tebi\", \"pebi\", \"exbi\", \"zebi\", \"yobi\"],\n\t\tjedec: [\"\", \"kilo\", \"mega\", \"giga\", \"tera\", \"peta\", \"exa\", \"zetta\", \"yotta\"]\n\t};\n\n\t/**\r\n * filesize\r\n *\r\n * @method filesize\r\n * @param {Mixed} arg String, Int or Float to transform\r\n * @param {Object} descriptor [Optional] Flags\r\n * @return {String} Readable file size String\r\n */\n\tfunction filesize(arg) {\n\t\tvar descriptor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tvar result = [],\n\t\t val = 0,\n\t\t e = void 0,\n\t\t base = void 0,\n\t\t bits = void 0,\n\t\t ceil = void 0,\n\t\t full = void 0,\n\t\t fullforms = void 0,\n\t\t neg = void 0,\n\t\t num = void 0,\n\t\t output = void 0,\n\t\t round = void 0,\n\t\t unix = void 0,\n\t\t spacer = void 0,\n\t\t standard = void 0,\n\t\t symbols = void 0;\n\n\t\tif (isNaN(arg)) {\n\t\t\tthrow new Error(\"Invalid arguments\");\n\t\t}\n\n\t\tbits = descriptor.bits === true;\n\t\tunix = descriptor.unix === true;\n\t\tbase = descriptor.base || 2;\n\t\tround = descriptor.round !== undefined ? descriptor.round : unix ? 1 : 2;\n\t\tspacer = descriptor.spacer !== undefined ? descriptor.spacer : unix ? \"\" : \" \";\n\t\tsymbols = descriptor.symbols || descriptor.suffixes || {};\n\t\tstandard = base === 2 ? descriptor.standard || \"jedec\" : \"jedec\";\n\t\toutput = descriptor.output || \"string\";\n\t\tfull = descriptor.fullform === true;\n\t\tfullforms = descriptor.fullforms instanceof Array ? descriptor.fullforms : [];\n\t\te = descriptor.exponent !== undefined ? descriptor.exponent : -1;\n\t\tnum = Number(arg);\n\t\tneg = num < 0;\n\t\tceil = base > 2 ? 1000 : 1024;\n\n\t\t// Flipping a negative number to determine the size\n\t\tif (neg) {\n\t\t\tnum = -num;\n\t\t}\n\n\t\t// Determining the exponent\n\t\tif (e === -1 || isNaN(e)) {\n\t\t\te = Math.floor(Math.log(num) / Math.log(ceil));\n\n\t\t\tif (e < 0) {\n\t\t\t\te = 0;\n\t\t\t}\n\t\t}\n\n\t\t// Exceeding supported length, time to reduce & multiply\n\t\tif (e > 8) {\n\t\t\te = 8;\n\t\t}\n\n\t\t// Zero is now a special case because bytes divide by 1\n\t\tif (num === 0) {\n\t\t\tresult[0] = 0;\n\t\t\tresult[1] = unix ? \"\" : symbol[standard][bits ? \"bits\" : \"bytes\"][e];\n\t\t} else {\n\t\t\tval = num / (base === 2 ? Math.pow(2, e * 10) : Math.pow(1000, e));\n\n\t\t\tif (bits) {\n\t\t\t\tval = val * 8;\n\n\t\t\t\tif (val >= ceil && e < 8) {\n\t\t\t\t\tval = val / ceil;\n\t\t\t\t\te++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresult[0] = Number(val.toFixed(e > 0 ? round : 0));\n\t\t\tresult[1] = base === 10 && e === 1 ? bits ? \"kb\" : \"kB\" : symbol[standard][bits ? \"bits\" : \"bytes\"][e];\n\n\t\t\tif (unix) {\n\t\t\t\tresult[1] = standard === \"jedec\" ? result[1].charAt(0) : e > 0 ? result[1].replace(/B$/, \"\") : result[1];\n\n\t\t\t\tif (b.test(result[1])) {\n\t\t\t\t\tresult[0] = Math.floor(result[0]);\n\t\t\t\t\tresult[1] = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Decorating a 'diff'\n\t\tif (neg) {\n\t\t\tresult[0] = -result[0];\n\t\t}\n\n\t\t// Applying custom symbol\n\t\tresult[1] = symbols[result[1]] || result[1];\n\n\t\t// Returning Array, Object, or String (default)\n\t\tif (output === \"array\") {\n\t\t\treturn result;\n\t\t}\n\n\t\tif (output === \"exponent\") {\n\t\t\treturn e;\n\t\t}\n\n\t\tif (output === \"object\") {\n\t\t\treturn { value: result[0], suffix: result[1], symbol: result[1] };\n\t\t}\n\n\t\tif (full) {\n\t\t\tresult[1] = fullforms[e] ? fullforms[e] : fullform[standard][e] + (bits ? \"bit\" : \"byte\") + (result[0] === 1 ? \"\" : \"s\");\n\t\t}\n\n\t\treturn result.join(spacer);\n\t}\n\n\t// Partial application for functional programming\n\tfilesize.partial = function (opt) {\n\t\treturn function (arg) {\n\t\t\treturn filesize(arg, opt);\n\t\t};\n\t};\n\n\t// CommonJS, AMD, script tag\n\tif (typeof exports !== \"undefined\") {\n\t\tmodule.exports = filesize;\n\t} else if (typeof define === \"function\" && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn filesize;\n\t\t});\n\t} else {\n\t\tglobal.filesize = filesize;\n\t}\n})(typeof window !== \"undefined\" ? window : global);\n","\"use strict\";\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar EMAIL_ADDRESS_REGEX = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i;\n\nmodule.exports = {\n looksValid: function looksValid(email) {\n return EMAIL_ADDRESS_REGEX.test(email);\n }\n};\n//# sourceMappingURL=email.js.map","'use strict';\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Allows a user to add a third party identifier to their Home Server and,\n * optionally, the identity servers.\n *\n * This involves getting an email token from the identity server to \"prove\" that\n * the client owns the given email address, which is then passed to the\n * add threepid API on the homeserver.\n */\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar AddThreepid = function () {\n function AddThreepid() {\n (0, _classCallCheck3.default)(this, AddThreepid);\n\n this.clientSecret = _MatrixClientPeg2.default.get().generateClientSecret();\n }\n\n /**\n * Attempt to add an email threepid. This will trigger a side-effect of\n * sending an email to the provided email address.\n * @param {string} emailAddress The email address to add\n * @param {boolean} bind If True, bind this email to this mxid on the Identity Server\n * @return {Promise} Resolves when the email has been sent. Then call checkEmailLinkClicked().\n */\n\n\n (0, _createClass3.default)(AddThreepid, [{\n key: 'addEmailAddress',\n value: function addEmailAddress(emailAddress, bind) {\n var _this = this;\n\n this.bind = bind;\n return _MatrixClientPeg2.default.get().requestAdd3pidEmailToken(emailAddress, this.clientSecret, 1).then(function (res) {\n _this.sessionId = res.sid;\n return res;\n }, function (err) {\n if (err.errcode === 'M_THREEPID_IN_USE') {\n err.message = (0, _languageHandler._t)('This email address is already in use');\n } else if (err.httpStatus) {\n err.message = err.message + (' (Status ' + err.httpStatus + ')');\n }\n throw err;\n });\n }\n\n /**\n * Attempt to add a msisdn threepid. This will trigger a side-effect of\n * sending a test message to the provided phone number.\n * @param {string} phoneCountry The ISO 2 letter code of the country to resolve phoneNumber in\n * @param {string} phoneNumber The national or international formatted phone number to add\n * @param {boolean} bind If True, bind this phone number to this mxid on the Identity Server\n * @return {Promise} Resolves when the text message has been sent. Then call haveMsisdnToken().\n */\n\n }, {\n key: 'addMsisdn',\n value: function addMsisdn(phoneCountry, phoneNumber, bind) {\n var _this2 = this;\n\n this.bind = bind;\n return _MatrixClientPeg2.default.get().requestAdd3pidMsisdnToken(phoneCountry, phoneNumber, this.clientSecret, 1).then(function (res) {\n _this2.sessionId = res.sid;\n return res;\n }, function (err) {\n if (err.errcode === 'M_THREEPID_IN_USE') {\n err.message = (0, _languageHandler._t)('This phone number is already in use');\n } else if (err.httpStatus) {\n err.message = err.message + (' (Status ' + err.httpStatus + ')');\n }\n throw err;\n });\n }\n\n /**\n * Checks if the email link has been clicked by attempting to add the threepid\n * @return {Promise} Resolves if the email address was added. Rejects with an object\n * with a \"message\" property which contains a human-readable message detailing why\n * the request failed.\n */\n\n }, {\n key: 'checkEmailLinkClicked',\n value: function checkEmailLinkClicked() {\n var identityServerDomain = _MatrixClientPeg2.default.get().idBaseUrl.split(\"://\")[1];\n return _MatrixClientPeg2.default.get().addThreePid({\n sid: this.sessionId,\n client_secret: this.clientSecret,\n id_server: identityServerDomain\n }, this.bind).catch(function (err) {\n if (err.httpStatus === 401) {\n err.message = (0, _languageHandler._t)('Failed to verify email address: make sure you clicked the link in the email');\n } else if (err.httpStatus) {\n err.message += ' (Status ' + err.httpStatus + ')';\n }\n throw err;\n });\n }\n\n /**\n * Takes a phone number verification code as entered by the user and validates\n * it with the ID server, then if successful, adds the phone number.\n * @param {string} token phone number verification code as entered by the user\n * @return {Promise} Resolves if the phone number was added. Rejects with an object\n * with a \"message\" property which contains a human-readable message detailing why\n * the request failed.\n */\n\n }, {\n key: 'haveMsisdnToken',\n value: function haveMsisdnToken(token) {\n var _this3 = this;\n\n return _MatrixClientPeg2.default.get().submitMsisdnToken(this.sessionId, this.clientSecret, token).then(function (result) {\n if (result.errcode) {\n throw result;\n }\n var identityServerDomain = _MatrixClientPeg2.default.get().idBaseUrl.split(\"://\")[1];\n return _MatrixClientPeg2.default.get().addThreePid({\n sid: _this3.sessionId,\n client_secret: _this3.clientSecret,\n id_server: identityServerDomain\n }, _this3.bind);\n });\n }\n }]);\n return AddThreepid;\n}();\n\nmodule.exports = AddThreepid;\n//# sourceMappingURL=AddThreepid.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _highlight = require('highlight.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SyntaxHighlight = function (_React$Component) {\n (0, _inherits3.default)(SyntaxHighlight, _React$Component);\n\n function SyntaxHighlight(props, context) {\n (0, _classCallCheck3.default)(this, SyntaxHighlight);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (SyntaxHighlight.__proto__ || (0, _getPrototypeOf2.default)(SyntaxHighlight)).call(this, props, context));\n\n _this._ref = _this._ref.bind(_this);\n return _this;\n }\n\n // componentDidUpdate used here for reusability\n // componentWillReceiveProps fires too early to call highlightBlock on.\n\n\n (0, _createClass3.default)(SyntaxHighlight, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (this._el) (0, _highlight.highlightBlock)(this._el);\n }\n\n // call componentDidUpdate because _ref is fired on initial render\n // which does not fire componentDidUpdate\n\n }, {\n key: '_ref',\n value: function _ref(el) {\n this._el = el;\n this.componentDidUpdate();\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n children = _props.children;\n\n\n return _react2.default.createElement(\n 'pre',\n { className: className + ' mx_SyntaxHighlight', ref: this._ref },\n _react2.default.createElement(\n 'code',\n null,\n children\n )\n );\n }\n }]);\n return SyntaxHighlight;\n}(_react2.default.Component); /*\n Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nSyntaxHighlight.propTypes = {\n className: _propTypes2.default.string,\n children: _propTypes2.default.node\n};\nexports.default = SyntaxHighlight;\nmodule.exports = exports['default'];\n//# sourceMappingURL=SyntaxHighlight.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'QuestionDialog',\n propTypes: {\n title: _propTypes2.default.string,\n description: _propTypes2.default.node,\n extraButtons: _propTypes2.default.node,\n button: _propTypes2.default.string,\n danger: _propTypes2.default.bool,\n focus: _propTypes2.default.bool,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n title: \"\",\n description: \"\",\n extraButtons: null,\n focus: true,\n hasCancelButton: true,\n danger: false\n };\n },\n\n onOk: function onOk() {\n this.props.onFinished(true);\n },\n\n onCancel: function onCancel() {\n this.props.onFinished(false);\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n var primaryButtonClass = \"\";\n if (this.props.danger) {\n primaryButtonClass = \"danger\";\n }\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_QuestionDialog', onFinished: this.props.onFinished,\n title: this.props.title,\n contentId: 'mx_Dialog_content',\n hasCancel: this.props.hasCancelButton\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n this.props.description\n ),\n _react2.default.createElement(\n DialogButtons,\n { primaryButton: this.props.button || (0, _languageHandler._t)('OK'),\n primaryButtonClass: primaryButtonClass,\n cancelButton: this.props.cancelButton,\n hasCancel: this.props.hasCancelButton,\n onPrimaryButtonClick: this.onOk,\n focus: this.props.focus,\n onCancel: this.onCancel\n },\n this.props.extraButtons\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=QuestionDialog.js.map","/**\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _querystring = require('querystring');\n\nvar _querystring2 = _interopRequireDefault(_querystring);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _PlatformPeg = require('../../../PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _ScalarAuthClient = require('../../../ScalarAuthClient');\n\nvar _ScalarAuthClient2 = _interopRequireDefault(_ScalarAuthClient);\n\nvar _WidgetMessaging = require('../../../WidgetMessaging');\n\nvar _WidgetMessaging2 = _interopRequireDefault(_WidgetMessaging);\n\nvar _TintableSvgButton = require('./TintableSvgButton');\n\nvar _TintableSvgButton2 = _interopRequireDefault(_TintableSvgButton);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _AppPermission = require('./AppPermission');\n\nvar _AppPermission2 = _interopRequireDefault(_AppPermission);\n\nvar _AppWarning = require('./AppWarning');\n\nvar _AppWarning2 = _interopRequireDefault(_AppWarning);\n\nvar _MessageSpinner = require('./MessageSpinner');\n\nvar _MessageSpinner2 = _interopRequireDefault(_MessageSpinner);\n\nvar _WidgetUtils = require('../../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _ActiveWidgetStore = require('../../../stores/ActiveWidgetStore');\n\nvar _ActiveWidgetStore2 = _interopRequireDefault(_ActiveWidgetStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ALLOWED_APP_URL_SCHEMES = ['https:', 'http:'];\nvar ENABLE_REACT_PERF = false;\n\nvar AppTile = function (_React$Component) {\n (0, _inherits3.default)(AppTile, _React$Component);\n\n function AppTile(props) {\n (0, _classCallCheck3.default)(this, AppTile);\n\n // The key used for PersistedElement\n var _this = (0, _possibleConstructorReturn3.default)(this, (AppTile.__proto__ || (0, _getPrototypeOf2.default)(AppTile)).call(this, props));\n\n _this._persistKey = 'widget_' + _this.props.id;\n\n _this.state = _this._getNewState(props);\n\n _this._onAction = _this._onAction.bind(_this);\n _this._onMessage = _this._onMessage.bind(_this);\n _this._onLoaded = _this._onLoaded.bind(_this);\n _this._onEditClick = _this._onEditClick.bind(_this);\n _this._onDeleteClick = _this._onDeleteClick.bind(_this);\n _this._onSnapshotClick = _this._onSnapshotClick.bind(_this);\n _this.onClickMenuBar = _this.onClickMenuBar.bind(_this);\n _this._onMinimiseClick = _this._onMinimiseClick.bind(_this);\n _this._grantWidgetPermission = _this._grantWidgetPermission.bind(_this);\n _this._revokeWidgetPermission = _this._revokeWidgetPermission.bind(_this);\n _this._onPopoutWidgetClick = _this._onPopoutWidgetClick.bind(_this);\n _this._onReloadWidgetClick = _this._onReloadWidgetClick.bind(_this);\n return _this;\n }\n\n /**\n * Set initial component state when the App wUrl (widget URL) is being updated.\n * Component props *must* be passed (rather than relying on this.props).\n * @param {Object} newProps The new properties of the component\n * @return {Object} Updated component state to be set with setState\n */\n\n\n (0, _createClass3.default)(AppTile, [{\n key: '_getNewState',\n value: function _getNewState(newProps) {\n var widgetPermissionId = [newProps.room.roomId, encodeURIComponent(newProps.url)].join('_');\n var hasPermissionToLoad = localStorage.getItem(widgetPermissionId);\n\n var PersistedElement = _index2.default.getComponent(\"elements.PersistedElement\");\n return {\n initialising: true, // True while we are mangling the widget URL\n // True while the iframe content is loading\n loading: this.props.waitForIframeLoad && !PersistedElement.isMounted(this._persistKey),\n widgetUrl: this._addWurlParams(newProps.url),\n widgetPermissionId: widgetPermissionId,\n // Assume that widget has permission to load if we are the user who\n // added it to the room, or if explicitly granted by the user\n hasPermissionToLoad: hasPermissionToLoad === 'true' || newProps.userId === newProps.creatorUserId,\n error: null,\n deleting: false,\n widgetPageTitle: newProps.widgetPageTitle\n };\n }\n\n /**\n * Does the widget support a given capability\n * @param {string} capability Capability to check for\n * @return {Boolean} True if capability supported\n */\n\n }, {\n key: '_hasCapability',\n value: function _hasCapability(capability) {\n return _ActiveWidgetStore2.default.widgetHasCapability(this.props.id, capability);\n }\n\n /**\n * Add widget instance specific parameters to pass in wUrl\n * Properties passed to widget instance:\n * - widgetId\n * - origin / parent URL\n * @param {string} urlString Url string to modify\n * @return {string}\n * Url string with parameters appended.\n * If url can not be parsed, it is returned unmodified.\n */\n\n }, {\n key: '_addWurlParams',\n value: function _addWurlParams(urlString) {\n var u = _url2.default.parse(urlString);\n if (!u) {\n console.error(\"_addWurlParams\", \"Invalid URL\", urlString);\n return _url2.default;\n }\n\n var params = _querystring2.default.parse(u.query);\n // Append widget ID to query parameters\n params.widgetId = this.props.id;\n // Append current / parent URL, minus the hash because that will change when\n // we view a different room (ie. may change for persistent widgets)\n params.parentUrl = window.location.href.split('#', 2)[0];\n u.search = undefined;\n u.query = params;\n\n return u.format();\n }\n }, {\n key: 'isMixedContent',\n value: function isMixedContent() {\n var parentContentProtocol = window.location.protocol;\n var u = _url2.default.parse(this.props.url);\n var childContentProtocol = u.protocol;\n if (parentContentProtocol === 'https:' && childContentProtocol !== 'https:') {\n console.warn(\"Refusing to load mixed-content app:\", parentContentProtocol, childContentProtocol, window.location, this.props.url);\n return true;\n }\n return false;\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.setScalarToken();\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n // Legacy Jitsi widget messaging -- TODO replace this with standard widget\n // postMessaging API\n window.addEventListener('message', this._onMessage, false);\n\n // Widget action listeners\n this.dispatcherRef = _dispatcher2.default.register(this._onAction);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n // Widget action listeners\n _dispatcher2.default.unregister(this.dispatcherRef);\n\n // Jitsi listener\n window.removeEventListener('message', this._onMessage);\n\n // if it's not remaining on screen, get rid of the PersistedElement container\n if (!_ActiveWidgetStore2.default.getWidgetPersistence(this.props.id)) {\n _ActiveWidgetStore2.default.destroyPersistentWidget();\n var PersistedElement = _index2.default.getComponent(\"elements.PersistedElement\");\n PersistedElement.destroyElement(this._persistKey);\n }\n }\n\n /**\n * Adds a scalar token to the widget URL, if required\n * Component initialisation is only complete when this function has resolved\n */\n\n }, {\n key: 'setScalarToken',\n value: function setScalarToken() {\n var _this2 = this;\n\n this.setState({ initialising: true });\n\n if (!_WidgetUtils2.default.isScalarUrl(this.props.url)) {\n console.warn('Non-scalar widget, not setting scalar token!', _url2.default);\n this.setState({\n error: null,\n widgetUrl: this._addWurlParams(this.props.url),\n initialising: false\n });\n return;\n }\n\n // Fetch the token before loading the iframe as we need it to mangle the URL\n if (!this._scalarClient) {\n this._scalarClient = new _ScalarAuthClient2.default();\n }\n this._scalarClient.getScalarToken().done(function (token) {\n // Append scalar_token as a query param if not already present\n _this2._scalarClient.scalarToken = token;\n var u = _url2.default.parse(_this2._addWurlParams(_this2.props.url));\n var params = _querystring2.default.parse(u.query);\n if (!params.scalar_token) {\n params.scalar_token = encodeURIComponent(token);\n // u.search must be set to undefined, so that u.format() uses query paramerters - https://nodejs.org/docs/latest/api/url.html#url_url_format_url_options\n u.search = undefined;\n u.query = params;\n }\n\n _this2.setState({\n error: null,\n widgetUrl: u.format(),\n initialising: false\n });\n\n // Fetch page title from remote content if not already set\n if (!_this2.state.widgetPageTitle && params.url) {\n _this2._fetchWidgetTitle(params.url);\n }\n }, function (err) {\n console.error(\"Failed to get scalar_token\", err);\n _this2.setState({\n error: err.message,\n initialising: false\n });\n });\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (nextProps.url !== this.props.url) {\n this._getNewState(nextProps);\n this.setScalarToken();\n } else if (nextProps.show && !this.props.show && this.props.waitForIframeLoad) {\n this.setState({\n loading: true\n });\n } else if (nextProps.widgetPageTitle !== this.props.widgetPageTitle) {\n this.setState({\n widgetPageTitle: nextProps.widgetPageTitle\n });\n }\n }\n\n // Legacy Jitsi widget messaging\n // TODO -- This should be replaced with the new widget postMessaging API\n\n }, {\n key: '_onMessage',\n value: function _onMessage(event) {\n if (this.props.type !== 'jitsi') {\n return;\n }\n if (!event.origin) {\n event.origin = event.originalEvent.origin;\n }\n\n var widgetUrlObj = _url2.default.parse(this.state.widgetUrl);\n var eventOrigin = _url2.default.parse(event.origin);\n if (eventOrigin.protocol !== widgetUrlObj.protocol || eventOrigin.host !== widgetUrlObj.host) {\n return;\n }\n\n if (event.data.widgetAction === 'jitsi_iframe_loaded') {\n var iframe = this.refs.appFrame.contentWindow.document.querySelector('iframe[id^=\"jitsiConferenceFrame\"]');\n _PlatformPeg2.default.get().setupScreenSharingForIframe(iframe);\n }\n }\n }, {\n key: '_canUserModify',\n value: function _canUserModify() {\n // User widgets should always be modifiable by their creator\n if (this.props.userWidget && _MatrixClientPeg2.default.get().credentials.userId === this.props.creatorUserId) {\n return true;\n }\n // Check if the current user can modify widgets in the current room\n return _WidgetUtils2.default.canUserModifyWidgets(this.props.room.roomId);\n }\n }, {\n key: '_onEditClick',\n value: function _onEditClick(e) {\n console.log(\"Edit widget ID \", this.props.id);\n if (this.props.onEditClick) {\n this.props.onEditClick();\n } else {\n var IntegrationsManager = _index2.default.getComponent(\"views.settings.IntegrationsManager\");\n var src = this._scalarClient.getScalarInterfaceUrlForRoom(this.props.room, 'type_' + this.props.type, this.props.id);\n _Modal2.default.createTrackedDialog('Integrations Manager', '', IntegrationsManager, {\n src: src\n }, \"mx_IntegrationsManager\");\n }\n }\n }, {\n key: '_onSnapshotClick',\n value: function _onSnapshotClick(e) {\n console.warn(\"Requesting widget snapshot\");\n _ActiveWidgetStore2.default.getWidgetMessaging(this.props.id).getScreenshot().catch(function (err) {\n console.error(\"Failed to get screenshot\", err);\n }).then(function (screenshot) {\n _dispatcher2.default.dispatch({\n action: 'picture_snapshot',\n file: screenshot\n }, true);\n });\n }\n\n /* If user has permission to modify widgets, delete the widget,\n * otherwise revoke access for the widget to load in the user's browser\n */\n\n }, {\n key: '_onDeleteClick',\n value: function _onDeleteClick() {\n var _this3 = this;\n\n if (this.props.onDeleteClick) {\n this.props.onDeleteClick();\n } else {\n if (this._canUserModify()) {\n // Show delete confirmation dialog\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('Delete Widget', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Delete Widget\"),\n description: (0, _languageHandler._t)(\"Deleting a widget removes it for all users in this room.\" + \" Are you sure you want to delete this widget?\"),\n button: (0, _languageHandler._t)(\"Delete widget\"),\n onFinished: function onFinished(confirmed) {\n if (!confirmed) {\n return;\n }\n _this3.setState({ deleting: true });\n\n _WidgetUtils2.default.setRoomWidget(_this3.props.room.roomId, _this3.props.id).catch(function (e) {\n console.error('Failed to delete widget', e);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n _Modal2.default.createTrackedDialog('Failed to remove widget', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to remove widget'),\n description: (0, _languageHandler._t)('An error ocurred whilst trying to remove the widget from the room')\n });\n }).finally(function () {\n _this3.setState({ deleting: false });\n });\n }\n });\n } else {\n console.log(\"Revoke widget permissions - %s\", this.props.id);\n this._revokeWidgetPermission();\n }\n }\n }\n\n /**\n * Called when widget iframe has finished loading\n */\n\n }, {\n key: '_onLoaded',\n value: function _onLoaded() {\n if (!_ActiveWidgetStore2.default.getWidgetMessaging(this.props.id)) {\n this._setupWidgetMessaging();\n }\n _ActiveWidgetStore2.default.setRoomId(this.props.id, this.props.room.roomId);\n this.setState({ loading: false });\n }\n }, {\n key: '_setupWidgetMessaging',\n value: function _setupWidgetMessaging() {\n var _this4 = this;\n\n // FIXME: There's probably no reason to do this here: it should probably be done entirely\n // in ActiveWidgetStore.\n var widgetMessaging = new _WidgetMessaging2.default(this.props.id, this.props.url, this.refs.appFrame.contentWindow);\n _ActiveWidgetStore2.default.setWidgetMessaging(this.props.id, widgetMessaging);\n widgetMessaging.getCapabilities().then(function (requestedCapabilities) {\n console.log('Widget ' + _this4.props.id + ' requested capabilities: ' + requestedCapabilities);\n requestedCapabilities = requestedCapabilities || [];\n\n // Allow whitelisted capabilities\n var requestedWhitelistCapabilies = [];\n\n if (_this4.props.whitelistCapabilities && _this4.props.whitelistCapabilities.length > 0) {\n requestedWhitelistCapabilies = requestedCapabilities.filter(function (e) {\n return this.indexOf(e) >= 0;\n }, _this4.props.whitelistCapabilities);\n\n if (requestedWhitelistCapabilies.length > 0) {\n console.warn('Widget ' + _this4.props.id + ' allowing requested, whitelisted properties: ' + requestedWhitelistCapabilies);\n }\n }\n\n // TODO -- Add UI to warn about and optionally allow requested capabilities\n\n _ActiveWidgetStore2.default.setWidgetCapabilities(_this4.props.id, requestedWhitelistCapabilies);\n\n if (_this4.props.onCapabilityRequest) {\n _this4.props.onCapabilityRequest(requestedCapabilities);\n }\n }).catch(function (err) {\n console.log('Failed to get capabilities for widget type ' + _this4.props.type, _this4.props.id, err);\n });\n }\n }, {\n key: '_onAction',\n value: function _onAction(payload) {\n if (payload.widgetId === this.props.id) {\n switch (payload.action) {\n case 'm.sticker':\n if (this._hasCapability('m.sticker')) {\n _dispatcher2.default.dispatch({ action: 'post_sticker_message', data: payload.data });\n } else {\n console.warn('Ignoring sticker message. Invalid capability');\n }\n break;\n }\n }\n }\n\n /**\n * Set remote content title on AppTile\n * @param {string} url Url to check for title\n */\n\n }, {\n key: '_fetchWidgetTitle',\n value: function _fetchWidgetTitle(url) {\n var _this5 = this;\n\n this._scalarClient.getScalarPageTitle(url).then(function (widgetPageTitle) {\n if (widgetPageTitle) {\n _this5.setState({ widgetPageTitle: widgetPageTitle });\n }\n }, function (err) {\n console.error(\"Failed to get page title\", err);\n });\n }\n\n // Widget labels to render, depending upon user permissions\n // These strings are translated at the point that they are inserted in to the DOM, in the render method\n\n }, {\n key: '_deleteWidgetLabel',\n value: function _deleteWidgetLabel() {\n if (this._canUserModify()) {\n return (0, _languageHandler._td)('Delete widget');\n }\n return (0, _languageHandler._td)('Revoke widget access');\n }\n\n /* TODO -- Store permission in account data so that it is persisted across multiple devices */\n\n }, {\n key: '_grantWidgetPermission',\n value: function _grantWidgetPermission() {\n console.warn('Granting permission to load widget - ', this.state.widgetUrl);\n localStorage.setItem(this.state.widgetPermissionId, true);\n this.setState({ hasPermissionToLoad: true });\n }\n }, {\n key: '_revokeWidgetPermission',\n value: function _revokeWidgetPermission() {\n console.warn('Revoking permission to load widget - ', this.state.widgetUrl);\n localStorage.removeItem(this.state.widgetPermissionId);\n this.setState({ hasPermissionToLoad: false });\n\n // Force the widget to be non-persistent\n _ActiveWidgetStore2.default.destroyPersistentWidget();\n var PersistedElement = _index2.default.getComponent(\"elements.PersistedElement\");\n PersistedElement.destroyElement(this._persistKey);\n }\n }, {\n key: 'formatAppTileName',\n value: function formatAppTileName() {\n var appTileName = \"No name\";\n if (this.props.name && this.props.name.trim()) {\n appTileName = this.props.name.trim();\n }\n return appTileName;\n }\n }, {\n key: 'onClickMenuBar',\n value: function onClickMenuBar(ev) {\n ev.preventDefault();\n\n // Ignore clicks on menu bar children\n if (ev.target !== this.refs.menu_bar) {\n return;\n }\n\n // Toggle the view state of the apps drawer\n _dispatcher2.default.dispatch({\n action: 'appsDrawer',\n show: !this.props.show\n });\n }\n }, {\n key: '_getSafeUrl',\n value: function _getSafeUrl() {\n var parsedWidgetUrl = _url2.default.parse(this.state.widgetUrl, true);\n if (ENABLE_REACT_PERF) {\n parsedWidgetUrl.search = null;\n parsedWidgetUrl.query.react_perf = true;\n }\n var safeWidgetUrl = '';\n if (ALLOWED_APP_URL_SCHEMES.indexOf(parsedWidgetUrl.protocol) !== -1) {\n safeWidgetUrl = _url2.default.format(parsedWidgetUrl);\n }\n return safeWidgetUrl;\n }\n }, {\n key: '_getTileTitle',\n value: function _getTileTitle() {\n var name = this.formatAppTileName();\n var titleSpacer = _react2.default.createElement(\n 'span',\n null,\n '\\xA0-\\xA0'\n );\n var title = '';\n if (this.state.widgetPageTitle && this.state.widgetPageTitle != this.formatAppTileName()) {\n title = this.state.widgetPageTitle;\n }\n\n return _react2.default.createElement(\n 'span',\n null,\n _react2.default.createElement(\n 'b',\n null,\n name\n ),\n _react2.default.createElement(\n 'span',\n null,\n title ? titleSpacer : '',\n title\n )\n );\n }\n }, {\n key: '_onMinimiseClick',\n value: function _onMinimiseClick(e) {\n if (this.props.onMinimiseClick) {\n this.props.onMinimiseClick();\n }\n }\n }, {\n key: '_onPopoutWidgetClick',\n value: function _onPopoutWidgetClick(e) {\n // Using Object.assign workaround as the following opens in a new window instead of a new tab.\n // window.open(this._getSafeUrl(), '_blank', 'noopener=yes,noreferrer=yes');\n (0, _assign2.default)(document.createElement('a'), { target: '_blank', href: this._getSafeUrl(), rel: 'noopener noreferrer' }).click();\n }\n }, {\n key: '_onReloadWidgetClick',\n value: function _onReloadWidgetClick(e) {\n // Reload iframe in this way to avoid cross-origin restrictions\n this.refs.appFrame.src = this.refs.appFrame.src;\n }\n }, {\n key: 'render',\n value: function render() {\n var appTileBody = void 0;\n\n // Don't render widget if it is in the process of being deleted\n if (this.state.deleting) {\n return _react2.default.createElement('div', null);\n }\n\n // Note that there is advice saying allow-scripts shouldn't be used with allow-same-origin\n // because that would allow the iframe to prgramatically remove the sandbox attribute, but\n // this would only be for content hosted on the same origin as the riot client: anything\n // hosted on the same origin as the client will get the same access as if you clicked\n // a link to it.\n var sandboxFlags = \"allow-forms allow-popups allow-popups-to-escape-sandbox \" + \"allow-same-origin allow-scripts allow-presentation\";\n\n // Additional iframe feature pemissions\n // (see - https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-permissions-in-cross-origin-iframes and https://wicg.github.io/feature-policy/)\n var iframeFeatures = \"microphone; camera; encrypted-media;\";\n\n var appTileBodyClass = 'mx_AppTileBody' + (this.props.miniMode ? '_mini ' : ' ');\n\n if (this.props.show) {\n var loadingElement = _react2.default.createElement(\n 'div',\n { className: 'mx_AppLoading_spinner_fadeIn' },\n _react2.default.createElement(_MessageSpinner2.default, { msg: 'Loading...' })\n );\n if (this.state.initialising) {\n appTileBody = _react2.default.createElement(\n 'div',\n { className: appTileBodyClass + (this.state.loading ? 'mx_AppLoading' : '') },\n loadingElement\n );\n } else if (this.state.hasPermissionToLoad == true) {\n if (this.isMixedContent()) {\n appTileBody = _react2.default.createElement(\n 'div',\n { className: appTileBodyClass },\n _react2.default.createElement(_AppWarning2.default, { errorMsg: 'Error - Mixed content' })\n );\n } else {\n appTileBody = _react2.default.createElement(\n 'div',\n { className: appTileBodyClass + (this.state.loading ? 'mx_AppLoading' : '') },\n this.state.loading && loadingElement,\n _react2.default.createElement('iframe', {\n is: true,\n allow: iframeFeatures,\n ref: 'appFrame',\n src: this._getSafeUrl(),\n allowFullScreen: 'true',\n sandbox: sandboxFlags,\n onLoad: this._onLoaded\n })\n );\n // if the widget would be allowed to remian on screen, we must put it in\n // a PersistedElement from the get-go, otherwise the iframe will be\n // re-mounted later when we do.\n if (this.props.whitelistCapabilities.includes('m.always_on_screen')) {\n var PersistedElement = _index2.default.getComponent(\"elements.PersistedElement\");\n // Also wrap the PersistedElement in a div to fix the height, otherwise\n // AppTile's border is in the wrong place\n appTileBody = _react2.default.createElement(\n 'div',\n { className: 'mx_AppTile_persistedWrapper' },\n _react2.default.createElement(\n PersistedElement,\n { persistKey: this._persistKey },\n appTileBody\n )\n );\n }\n }\n } else {\n var isRoomEncrypted = _MatrixClientPeg2.default.get().isRoomEncrypted(this.props.room.roomId);\n appTileBody = _react2.default.createElement(\n 'div',\n { className: appTileBodyClass },\n _react2.default.createElement(_AppPermission2.default, {\n isRoomEncrypted: isRoomEncrypted,\n url: this.state.widgetUrl,\n onPermissionGranted: this._grantWidgetPermission\n })\n );\n }\n }\n\n // editing is done in scalar\n var showEditButton = Boolean(this._scalarClient && this._canUserModify());\n var deleteWidgetLabel = this._deleteWidgetLabel();\n var deleteIcon = 'img/cancel_green.svg';\n var deleteClasses = 'mx_AppTileMenuBarWidget';\n if (this._canUserModify()) {\n deleteIcon = 'img/icon-delete-pink.svg';\n deleteClasses += ' mx_AppTileMenuBarWidgetDelete';\n }\n\n // Picture snapshot - only show button when apps are maximised.\n var showPictureSnapshotButton = this._hasCapability('m.capability.screenshot') && this.props.show;\n var showPictureSnapshotIcon = 'img/camera_green.svg';\n var popoutWidgetIcon = 'img/button-new-window.svg';\n var reloadWidgetIcon = 'img/button-refresh.svg';\n var windowStateIcon = this.props.show ? 'img/minimize.svg' : 'img/maximize.svg';\n\n var appTileClass = void 0;\n if (this.props.miniMode) {\n appTileClass = 'mx_AppTile_mini';\n } else if (this.props.fullWidth) {\n appTileClass = 'mx_AppTileFullWidth';\n } else {\n appTileClass = 'mx_AppTile';\n }\n\n return _react2.default.createElement(\n 'div',\n { className: appTileClass, id: this.props.id },\n this.props.showMenubar && _react2.default.createElement(\n 'div',\n { ref: 'menu_bar', className: 'mx_AppTileMenuBar', onClick: this.onClickMenuBar },\n _react2.default.createElement(\n 'span',\n { className: 'mx_AppTileMenuBarTitle', style: { pointerEvents: this.props.handleMinimisePointerEvents ? 'all' : false } },\n this.props.showMinimise && _react2.default.createElement(_TintableSvgButton2.default, {\n src: windowStateIcon,\n className: 'mx_AppTileMenuBarWidget mx_AppTileMenuBarWidgetPadding',\n title: (0, _languageHandler._t)('Minimize apps'),\n width: '10',\n height: '10',\n onClick: this._onMinimiseClick\n }),\n this.props.showTitle && this._getTileTitle()\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_AppTileMenuBarWidgets' },\n this.props.showReload && _react2.default.createElement(_TintableSvgButton2.default, {\n src: reloadWidgetIcon,\n className: 'mx_AppTileMenuBarWidget mx_AppTileMenuBarWidgetPadding',\n title: (0, _languageHandler._t)('Reload widget'),\n onClick: this._onReloadWidgetClick,\n width: '10',\n height: '10'\n }),\n this.props.showPopout && _react2.default.createElement(_TintableSvgButton2.default, {\n src: popoutWidgetIcon,\n className: 'mx_AppTileMenuBarWidget mx_AppTileMenuBarWidgetPadding',\n title: (0, _languageHandler._t)('Popout widget'),\n onClick: this._onPopoutWidgetClick,\n width: '10',\n height: '10'\n }),\n showPictureSnapshotButton && _react2.default.createElement(_TintableSvgButton2.default, {\n src: showPictureSnapshotIcon,\n className: 'mx_AppTileMenuBarWidget mx_AppTileMenuBarWidgetPadding',\n title: (0, _languageHandler._t)('Picture'),\n onClick: this._onSnapshotClick,\n width: '10',\n height: '10'\n }),\n showEditButton && _react2.default.createElement(_TintableSvgButton2.default, {\n src: 'img/edit_green.svg',\n className: \"mx_AppTileMenuBarWidget \" + (this.props.showDelete ? \"mx_AppTileMenuBarWidgetPadding\" : \"\"),\n title: (0, _languageHandler._t)('Edit'),\n onClick: this._onEditClick,\n width: '10',\n height: '10'\n }),\n this.props.showDelete && _react2.default.createElement(_TintableSvgButton2.default, {\n src: deleteIcon,\n className: deleteClasses,\n title: (0, _languageHandler._t)(deleteWidgetLabel),\n onClick: this._onDeleteClick,\n width: '10',\n height: '10'\n })\n )\n ),\n appTileBody\n );\n }\n }]);\n return AppTile;\n}(_react2.default.Component);\n\nexports.default = AppTile;\n\n\nAppTile.displayName = 'AppTile';\n\nAppTile.propTypes = {\n id: _propTypes2.default.string.isRequired,\n url: _propTypes2.default.string.isRequired,\n name: _propTypes2.default.string.isRequired,\n room: _propTypes2.default.object.isRequired,\n type: _propTypes2.default.string.isRequired,\n // Specifying 'fullWidth' as true will render the app tile to fill the width of the app drawer continer.\n // This should be set to true when there is only one widget in the app drawer, otherwise it should be false.\n fullWidth: _propTypes2.default.bool,\n // Optional. If set, renders a smaller view of the widget\n miniMode: _propTypes2.default.bool,\n // UserId of the current user\n userId: _propTypes2.default.string.isRequired,\n // UserId of the entity that added / modified the widget\n creatorUserId: _propTypes2.default.string,\n waitForIframeLoad: _propTypes2.default.bool,\n showMenubar: _propTypes2.default.bool,\n // Should the AppTile render itself\n show: _propTypes2.default.bool,\n // Optional onEditClickHandler (overrides default behaviour)\n onEditClick: _propTypes2.default.func,\n // Optional onDeleteClickHandler (overrides default behaviour)\n onDeleteClick: _propTypes2.default.func,\n // Optional onMinimiseClickHandler\n onMinimiseClick: _propTypes2.default.func,\n // Optionally hide the tile title\n showTitle: _propTypes2.default.bool,\n // Optionally hide the tile minimise icon\n showMinimise: _propTypes2.default.bool,\n // Optionally handle minimise button pointer events (default false)\n handleMinimisePointerEvents: _propTypes2.default.bool,\n // Optionally hide the delete icon\n showDelete: _propTypes2.default.bool,\n // Optionally hide the popout widget icon\n showPopout: _propTypes2.default.bool,\n // Optionally show the reload widget icon\n // This is not currently intended for use with production widgets. However\n // it can be useful when developing persistent widgets in order to avoid\n // having to reload all of riot to get new widget content.\n showReload: _propTypes2.default.bool,\n // Widget capabilities to allow by default (without user confirmation)\n // NOTE -- Use with caution. This is intended to aid better integration / UX\n // basic widget capabilities, e.g. injecting sticker message events.\n whitelistCapabilities: _propTypes2.default.array,\n // Optional function to be called on widget capability request\n // Called with an array of the requested capabilities\n onCapabilityRequest: _propTypes2.default.func,\n // Is this an instance of a user widget\n userWidget: _propTypes2.default.bool\n};\n\nAppTile.defaultProps = {\n url: \"\",\n waitForIframeLoad: true,\n showMenubar: true,\n showTitle: true,\n showMinimise: true,\n showDelete: true,\n showPopout: true,\n showReload: false,\n handleMinimisePointerEvents: false,\n whitelistCapabilities: [],\n userWidget: false,\n miniMode: false\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=AppTile.js.map","'use strict';\n\nvar _isInteger = require('babel-runtime/core-js/number/is-integer');\n\nvar _isInteger2 = _interopRequireDefault(_isInteger);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _SdkConfig = require('./SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _WidgetUtils = require('./utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _RoomViewStore = require('./stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sendResponse(event, res) {\n var data = JSON.parse((0, _stringify2.default)(event.data));\n data.response = res;\n event.source.postMessage(data, event.origin);\n} /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/*\nListens for incoming postMessage requests from the integrations UI URL. The following API is exposed:\n{\n action: \"invite\" | \"membership_state\" | \"bot_options\" | \"set_bot_options\" | etc... ,\n room_id: $ROOM_ID,\n user_id: $USER_ID\n // additional request fields\n}\n\nThe complete request object is returned to the caller with an additional \"response\" key like so:\n{\n action: \"invite\" | \"membership_state\" | \"bot_options\" | \"set_bot_options\",\n room_id: $ROOM_ID,\n user_id: $USER_ID,\n // additional request fields\n response: { ... }\n}\n\nThe \"action\" determines the format of the request and response. All actions can return an error response.\nAn error response is a \"response\" object which consists of a sole \"error\" key to indicate an error.\nThey look like:\n{\n error: {\n message: \"Unable to invite user into room.\",\n _error: <Original Error Object>\n }\n}\nThe \"message\" key should be a human-friendly string.\n\nACTIONS\n=======\nAll actions can return an error response instead of the response outlined below.\n\ninvite\n------\nInvites a user into a room.\n\nRequest:\n - room_id is the room to invite the user into.\n - user_id is the user ID to invite.\n - No additional fields.\nResponse:\n{\n success: true\n}\nExample:\n{\n action: \"invite\",\n room_id: \"!foo:bar\",\n user_id: \"@invitee:bar\",\n response: {\n success: true\n }\n}\n\nset_bot_options\n---------------\nSet the m.room.bot.options state event for a bot user.\n\nRequest:\n - room_id is the room to send the state event into.\n - user_id is the user ID of the bot who you're setting options for.\n - \"content\" is an object consisting of the content you wish to set.\nResponse:\n{\n success: true\n}\nExample:\n{\n action: \"set_bot_options\",\n room_id: \"!foo:bar\",\n user_id: \"@bot:bar\",\n content: {\n default_option: \"alpha\"\n },\n response: {\n success: true\n }\n}\n\nget_membership_count\n--------------------\nGet the number of joined users in the room.\n\nRequest:\n - room_id is the room to get the count in.\nResponse:\n78\nExample:\n{\n action: \"get_membership_count\",\n room_id: \"!foo:bar\",\n response: 78\n}\n\ncan_send_event\n--------------\nCheck if the client can send the given event into the given room. If the client\nis unable to do this, an error response is returned instead of 'response: false'.\n\nRequest:\n - room_id is the room to do the check in.\n - event_type is the event type which will be sent.\n - is_state is true if the event to be sent is a state event.\nResponse:\ntrue\nExample:\n{\n action: \"can_send_event\",\n is_state: false,\n event_type: \"m.room.message\",\n room_id: \"!foo:bar\",\n response: true\n}\n\nset_widget\n----------\nSet a new widget in the room. Clobbers based on the ID.\n\nRequest:\n - `room_id` (String) is the room to set the widget in.\n - `widget_id` (String) is the ID of the widget to add (or replace if it already exists).\n It can be an arbitrary UTF8 string and is purely for distinguishing between widgets.\n - `url` (String) is the URL that clients should load in an iframe to run the widget.\n All widgets must have a valid URL. If the URL is `null` (not `undefined`), the\n widget will be removed from the room.\n - `type` (String) is the type of widget, which is provided as a hint for matrix clients so they\n can configure/lay out the widget in different ways. All widgets must have a type.\n - `name` (String) is an optional human-readable string about the widget.\n - `data` (Object) is some optional data about the widget, and can contain arbitrary key/value pairs.\nResponse:\n{\n success: true\n}\nExample:\n{\n action: \"set_widget\",\n room_id: \"!foo:bar\",\n widget_id: \"abc123\",\n url: \"http://widget.url\",\n type: \"example\",\n response: {\n success: true\n }\n}\n\nget_widgets\n-----------\nGet a list of all widgets in the room. The response is an array\nof state events.\n\nRequest:\n - `room_id` (String) is the room to get the widgets in.\nResponse:\n[\n {\n type: \"im.vector.modular.widgets\",\n state_key: \"wid1\",\n content: {\n type: \"grafana\",\n url: \"https://grafanaurl\",\n name: \"dashboard\",\n data: {key: \"val\"}\n }\n room_id: “!foo:bar”,\n sender: \"@alice:localhost\"\n }\n]\nExample:\n{\n action: \"get_widgets\",\n room_id: \"!foo:bar\",\n response: [\n {\n type: \"im.vector.modular.widgets\",\n state_key: \"wid1\",\n content: {\n type: \"grafana\",\n url: \"https://grafanaurl\",\n name: \"dashboard\",\n data: {key: \"val\"}\n }\n room_id: “!foo:bar”,\n sender: \"@alice:localhost\"\n }\n ]\n}\n\n\nmembership_state AND bot_options\n--------------------------------\nGet the content of the \"m.room.member\" or \"m.room.bot.options\" state event respectively.\n\nNB: Whilst this API is basically equivalent to getStateEvent, we specifically do not\n want external entities to be able to query any state event for any room, hence the\n restrictive API outlined here.\n\nRequest:\n - room_id is the room which has the state event.\n - user_id is the state_key parameter which in both cases is a user ID (the member or the bot).\n - No additional fields.\nResponse:\n - The event content. If there is no state event, the \"response\" key should be null.\nExample:\n{\n action: \"membership_state\",\n room_id: \"!foo:bar\",\n user_id: \"@somemember:bar\",\n response: {\n membership: \"join\",\n displayname: \"Bob\",\n avatar_url: null\n }\n}\n*/\n\nfunction sendError(event, msg, nestedError) {\n console.error(\"Action:\" + event.data.action + \" failed with message: \" + msg);\n var data = JSON.parse((0, _stringify2.default)(event.data));\n data.response = {\n error: {\n message: msg\n }\n };\n if (nestedError) {\n data.response.error._error = nestedError;\n }\n event.source.postMessage(data, event.origin);\n}\n\nfunction inviteUser(event, roomId, userId) {\n console.log('Received request to invite ' + userId + ' into room ' + roomId);\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var room = client.getRoom(roomId);\n if (room) {\n // if they are already invited we can resolve immediately.\n var member = room.getMember(userId);\n if (member && member.membership === \"invite\") {\n sendResponse(event, {\n success: true\n });\n return;\n }\n }\n\n client.invite(roomId, userId).done(function () {\n sendResponse(event, {\n success: true\n });\n }, function (err) {\n sendError(event, (0, _languageHandler._t)('You need to be able to invite users to do that.'), err);\n });\n}\n\nfunction setWidget(event, roomId) {\n var widgetId = event.data.widget_id;\n var widgetType = event.data.type;\n var widgetUrl = event.data.url;\n var widgetName = event.data.name; // optional\n var widgetData = event.data.data; // optional\n var userWidget = event.data.userWidget;\n\n // both adding/removing widgets need these checks\n if (!widgetId || widgetUrl === undefined) {\n sendError(event, (0, _languageHandler._t)(\"Unable to create widget.\"), new Error(\"Missing required widget fields.\"));\n return;\n }\n\n if (widgetUrl !== null) {\n // if url is null it is being deleted, don't need to check name/type/etc\n // check types of fields\n if (widgetName !== undefined && typeof widgetName !== 'string') {\n sendError(event, (0, _languageHandler._t)(\"Unable to create widget.\"), new Error(\"Optional field 'name' must be a string.\"));\n return;\n }\n if (widgetData !== undefined && !(widgetData instanceof Object)) {\n sendError(event, (0, _languageHandler._t)(\"Unable to create widget.\"), new Error(\"Optional field 'data' must be an Object.\"));\n return;\n }\n if (typeof widgetType !== 'string') {\n sendError(event, (0, _languageHandler._t)(\"Unable to create widget.\"), new Error(\"Field 'type' must be a string.\"));\n return;\n }\n if (typeof widgetUrl !== 'string') {\n sendError(event, (0, _languageHandler._t)(\"Unable to create widget.\"), new Error(\"Field 'url' must be a string or null.\"));\n return;\n }\n }\n\n if (userWidget) {\n _WidgetUtils2.default.setUserWidget(widgetId, widgetType, widgetUrl, widgetName, widgetData).then(function () {\n sendResponse(event, {\n success: true\n });\n\n _dispatcher2.default.dispatch({ action: \"user_widget_updated\" });\n }).catch(function (e) {\n sendError(event, (0, _languageHandler._t)('Unable to create widget.'), e);\n });\n } else {\n // Room widget\n if (!roomId) {\n sendError(event, (0, _languageHandler._t)('Missing roomId.'), null);\n }\n _WidgetUtils2.default.setRoomWidget(roomId, widgetId, widgetType, widgetUrl, widgetName, widgetData).then(function () {\n sendResponse(event, {\n success: true\n });\n }, function (err) {\n sendError(event, (0, _languageHandler._t)('Failed to send request.'), err);\n });\n }\n}\n\nfunction getWidgets(event, roomId) {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var widgetStateEvents = [];\n\n if (roomId) {\n var room = client.getRoom(roomId);\n if (!room) {\n sendError(event, (0, _languageHandler._t)('This room is not recognised.'));\n return;\n }\n // XXX: This gets the raw event object (I think because we can't\n // send the MatrixEvent over postMessage?)\n widgetStateEvents = _WidgetUtils2.default.getRoomWidgets(room).map(function (ev) {\n return ev.event;\n });\n }\n\n // Add user widgets (not linked to a specific room)\n var userWidgets = _WidgetUtils2.default.getUserWidgetsArray();\n widgetStateEvents = widgetStateEvents.concat(userWidgets);\n\n sendResponse(event, widgetStateEvents);\n}\n\nfunction getRoomEncState(event, roomId) {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var room = client.getRoom(roomId);\n if (!room) {\n sendError(event, (0, _languageHandler._t)('This room is not recognised.'));\n return;\n }\n var roomIsEncrypted = _MatrixClientPeg2.default.get().isRoomEncrypted(roomId);\n\n sendResponse(event, roomIsEncrypted);\n}\n\nfunction setPlumbingState(event, roomId, status) {\n if (typeof status !== 'string') {\n throw new Error('Plumbing state status should be a string');\n }\n console.log('Received request to set plumbing state to status \"' + status + '\" in room ' + roomId);\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n client.sendStateEvent(roomId, \"m.room.plumbing\", { status: status }).done(function () {\n sendResponse(event, {\n success: true\n });\n }, function (err) {\n sendError(event, err.message ? err.message : (0, _languageHandler._t)('Failed to send request.'), err);\n });\n}\n\nfunction setBotOptions(event, roomId, userId) {\n console.log('Received request to set options for bot ' + userId + ' in room ' + roomId);\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n client.sendStateEvent(roomId, \"m.room.bot.options\", event.data.content, \"_\" + userId).done(function () {\n sendResponse(event, {\n success: true\n });\n }, function (err) {\n sendError(event, err.message ? err.message : (0, _languageHandler._t)('Failed to send request.'), err);\n });\n}\n\nfunction setBotPower(event, roomId, userId, level) {\n if (!((0, _isInteger2.default)(level) && level >= 0)) {\n sendError(event, (0, _languageHandler._t)('Power level must be positive integer.'));\n return;\n }\n\n console.log('Received request to set power level to ' + level + ' for bot ' + userId + ' in room ' + roomId + '.');\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n\n client.getStateEvent(roomId, \"m.room.power_levels\", \"\").then(function (powerLevels) {\n var powerEvent = new _matrixJsSdk.MatrixEvent({\n type: \"m.room.power_levels\",\n content: powerLevels\n });\n\n client.setPowerLevel(roomId, userId, level, powerEvent).done(function () {\n sendResponse(event, {\n success: true\n });\n }, function (err) {\n sendError(event, err.message ? err.message : (0, _languageHandler._t)('Failed to send request.'), err);\n });\n });\n}\n\nfunction getMembershipState(event, roomId, userId) {\n console.log('membership_state of ' + userId + ' in room ' + roomId + ' requested.');\n returnStateEvent(event, roomId, \"m.room.member\", userId);\n}\n\nfunction getJoinRules(event, roomId) {\n console.log('join_rules of ' + roomId + ' requested.');\n returnStateEvent(event, roomId, \"m.room.join_rules\", \"\");\n}\n\nfunction botOptions(event, roomId, userId) {\n console.log('bot_options of ' + userId + ' in room ' + roomId + ' requested.');\n returnStateEvent(event, roomId, \"m.room.bot.options\", \"_\" + userId);\n}\n\nfunction getMembershipCount(event, roomId) {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var room = client.getRoom(roomId);\n if (!room) {\n sendError(event, (0, _languageHandler._t)('This room is not recognised.'));\n return;\n }\n var count = room.getJoinedMemberCount();\n sendResponse(event, count);\n}\n\nfunction canSendEvent(event, roomId) {\n var evType = \"\" + event.data.event_type; // force stringify\n var isState = Boolean(event.data.is_state);\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var room = client.getRoom(roomId);\n if (!room) {\n sendError(event, (0, _languageHandler._t)('This room is not recognised.'));\n return;\n }\n if (room.getMyMembership() !== \"join\") {\n sendError(event, (0, _languageHandler._t)('You are not in this room.'));\n return;\n }\n var me = client.credentials.userId;\n\n var canSend = false;\n if (isState) {\n canSend = room.currentState.maySendStateEvent(evType, me);\n } else {\n canSend = room.currentState.maySendEvent(evType, me);\n }\n\n if (!canSend) {\n sendError(event, (0, _languageHandler._t)('You do not have permission to do that in this room.'));\n return;\n }\n\n sendResponse(event, true);\n}\n\nfunction returnStateEvent(event, roomId, eventType, stateKey) {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var room = client.getRoom(roomId);\n if (!room) {\n sendError(event, (0, _languageHandler._t)('This room is not recognised.'));\n return;\n }\n var stateEvent = room.currentState.getStateEvents(eventType, stateKey);\n if (!stateEvent) {\n sendResponse(event, null);\n return;\n }\n sendResponse(event, stateEvent.getContent());\n}\n\nvar onMessage = function onMessage(event) {\n if (!event.origin) {\n // stupid chrome\n event.origin = event.originalEvent.origin;\n }\n\n // Check that the integrations UI URL starts with the origin of the event\n // This means the URL could contain a path (like /develop) and still be used\n // to validate event origins, which do not specify paths.\n // (See https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage)\n //\n // All strings start with the empty string, so for sanity return if the length\n // of the event origin is 0.\n //\n // TODO -- Scalar postMessage API should be namespaced with event.data.api field\n // Fix following \"if\" statement to respond only to specific API messages.\n var url = _SdkConfig2.default.get().integrations_ui_url;\n if (event.origin.length === 0 || !url.startsWith(event.origin + '/') || !event.data.action || event.data.api // Ignore messages with specific API set\n ) {\n return; // don't log this - debugging APIs like to spam postMessage which floods the log otherwise\n }\n\n if (event.data.action === \"close_scalar\") {\n _dispatcher2.default.dispatch({ action: \"close_scalar\" });\n sendResponse(event, null);\n return;\n }\n\n var roomId = event.data.room_id;\n var userId = event.data.user_id;\n\n if (!roomId) {\n // These APIs don't require roomId\n // Get and set user widgets (not associated with a specific room)\n // If roomId is specified, it must be validated, so room-based widgets agreed\n // handled further down.\n if (event.data.action === \"get_widgets\") {\n getWidgets(event, null);\n return;\n } else if (event.data.action === \"set_widget\") {\n setWidget(event, null);\n return;\n } else {\n sendError(event, (0, _languageHandler._t)('Missing room_id in request'));\n return;\n }\n }\n\n if (roomId !== _RoomViewStore2.default.getRoomId()) {\n sendError(event, (0, _languageHandler._t)('Room %(roomId)s not visible', { roomId: roomId }));\n return;\n }\n\n // Get and set room-based widgets\n if (event.data.action === \"get_widgets\") {\n getWidgets(event, roomId);\n return;\n } else if (event.data.action === \"set_widget\") {\n setWidget(event, roomId);\n return;\n }\n\n // These APIs don't require userId\n if (event.data.action === \"join_rules_state\") {\n getJoinRules(event, roomId);\n return;\n } else if (event.data.action === \"set_plumbing_state\") {\n setPlumbingState(event, roomId, event.data.status);\n return;\n } else if (event.data.action === \"get_membership_count\") {\n getMembershipCount(event, roomId);\n return;\n } else if (event.data.action === \"get_room_enc_state\") {\n getRoomEncState(event, roomId);\n return;\n } else if (event.data.action === \"can_send_event\") {\n canSendEvent(event, roomId);\n return;\n }\n\n if (!userId) {\n sendError(event, (0, _languageHandler._t)('Missing user_id in request'));\n return;\n }\n switch (event.data.action) {\n case \"membership_state\":\n getMembershipState(event, roomId, userId);\n break;\n case \"invite\":\n inviteUser(event, roomId, userId);\n break;\n case \"bot_options\":\n botOptions(event, roomId, userId);\n break;\n case \"set_bot_options\":\n setBotOptions(event, roomId, userId);\n break;\n case \"set_bot_power\":\n setBotPower(event, roomId, userId, event.data.level);\n break;\n default:\n console.warn(\"Unhandled postMessage event with action '\" + event.data.action + \"'\");\n break;\n }\n};\n\nvar listenerCount = 0;\nmodule.exports = {\n startListening: function startListening() {\n if (listenerCount === 0) {\n window.addEventListener(\"message\", onMessage, false);\n }\n listenerCount += 1;\n },\n\n stopListening: function stopListening() {\n listenerCount -= 1;\n if (listenerCount === 0) {\n window.removeEventListener(\"message\", onMessage);\n }\n if (listenerCount < 0) {\n // Make an error so we get a stack trace\n var e = new Error(\"ScalarMessaging: mismatched startListening / stopListening detected.\" + \" Negative count\");\n console.error(e);\n }\n }\n};\n//# sourceMappingURL=ScalarMessaging.js.map","/*\nCopyright 2015 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\nvar ReactDOM = require(\"react-dom\");\n\nvar Tinter = require(\"../../../Tinter\");\n\nvar TintableSvg = React.createClass({\n displayName: 'TintableSvg',\n\n propTypes: {\n src: _propTypes2.default.string.isRequired,\n width: _propTypes2.default.string.isRequired,\n height: _propTypes2.default.string.isRequired,\n className: _propTypes2.default.string\n },\n\n statics: {\n // list of currently mounted TintableSvgs\n mounts: {},\n idSequence: 0\n },\n\n componentWillMount: function componentWillMount() {\n this.fixups = [];\n },\n\n componentDidMount: function componentDidMount() {\n this.id = TintableSvg.idSequence++;\n TintableSvg.mounts[this.id] = this;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n delete TintableSvg.mounts[this.id];\n },\n\n tint: function tint() {\n // TODO: only bother running this if the global tint settings have changed\n // since we loaded!\n Tinter.applySvgFixups(this.fixups);\n },\n\n onLoad: function onLoad(event) {\n // console.log(\"TintableSvg.onLoad for \" + this.props.src);\n this.fixups = Tinter.calcSvgFixups([event.target]);\n Tinter.applySvgFixups(this.fixups);\n },\n\n render: function render() {\n return React.createElement('object', { className: \"mx_TintableSvg \" + (this.props.className ? this.props.className : \"\"),\n type: 'image/svg+xml',\n data: this.props.src,\n width: this.props.width,\n height: this.props.height,\n onLoad: this.onLoad,\n tabIndex: '-1'\n });\n }\n});\n\n// Register with the Tinter so that we will be told if the tint changes\nTinter.registerTintable(function () {\n if (TintableSvg.mounts) {\n (0, _keys2.default)(TintableSvg.mounts).forEach(function (id) {\n TintableSvg.mounts[id].tint();\n });\n }\n});\n\nmodule.exports = TintableSvg;\n//# sourceMappingURL=TintableSvg.js.map","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","\"use strict\";\n\nfunction isContainer(node) {\n switch (node._type) {\n case 'document':\n case 'block_quote':\n case 'list':\n case 'item':\n case 'paragraph':\n case 'heading':\n case 'emph':\n case 'strong':\n case 'link':\n case 'image':\n case 'custom_inline':\n case 'custom_block':\n return true;\n default:\n return false;\n }\n}\n\nvar resumeAt = function(node, entering) {\n this.current = node;\n this.entering = (entering === true);\n};\n\nvar next = function(){\n var cur = this.current;\n var entering = this.entering;\n\n if (cur === null) {\n return null;\n }\n\n var container = isContainer(cur);\n\n if (entering && container) {\n if (cur._firstChild) {\n this.current = cur._firstChild;\n this.entering = true;\n } else {\n // stay on node but exit\n this.entering = false;\n }\n\n } else if (cur === this.root) {\n this.current = null;\n\n } else if (cur._next === null) {\n this.current = cur._parent;\n this.entering = false;\n\n } else {\n this.current = cur._next;\n this.entering = true;\n }\n\n return {entering: entering, node: cur};\n};\n\nvar NodeWalker = function(root) {\n return { current: root,\n root: root,\n entering: true,\n next: next,\n resumeAt: resumeAt };\n};\n\nvar Node = function(nodeType, sourcepos) {\n this._type = nodeType;\n this._parent = null;\n this._firstChild = null;\n this._lastChild = null;\n this._prev = null;\n this._next = null;\n this._sourcepos = sourcepos;\n this._lastLineBlank = false;\n this._open = true;\n this._string_content = null;\n this._literal = null;\n this._listData = {};\n this._info = null;\n this._destination = null;\n this._title = null;\n this._isFenced = false;\n this._fenceChar = null;\n this._fenceLength = 0;\n this._fenceOffset = null;\n this._level = null;\n this._onEnter = null;\n this._onExit = null;\n};\n\nvar proto = Node.prototype;\n\nObject.defineProperty(proto, 'isContainer', {\n get: function () { return isContainer(this); }\n});\n\nObject.defineProperty(proto, 'type', {\n get: function() { return this._type; }\n});\n\nObject.defineProperty(proto, 'firstChild', {\n get: function() { return this._firstChild; }\n});\n\nObject.defineProperty(proto, 'lastChild', {\n get: function() { return this._lastChild; }\n});\n\nObject.defineProperty(proto, 'next', {\n get: function() { return this._next; }\n});\n\nObject.defineProperty(proto, 'prev', {\n get: function() { return this._prev; }\n});\n\nObject.defineProperty(proto, 'parent', {\n get: function() { return this._parent; }\n});\n\nObject.defineProperty(proto, 'sourcepos', {\n get: function() { return this._sourcepos; }\n});\n\nObject.defineProperty(proto, 'literal', {\n get: function() { return this._literal; },\n set: function(s) { this._literal = s; }\n});\n\nObject.defineProperty(proto, 'destination', {\n get: function() { return this._destination; },\n set: function(s) { this._destination = s; }\n});\n\nObject.defineProperty(proto, 'title', {\n get: function() { return this._title; },\n set: function(s) { this._title = s; }\n});\n\nObject.defineProperty(proto, 'info', {\n get: function() { return this._info; },\n set: function(s) { this._info = s; }\n});\n\nObject.defineProperty(proto, 'level', {\n get: function() { return this._level; },\n set: function(s) { this._level = s; }\n});\n\nObject.defineProperty(proto, 'listType', {\n get: function() { return this._listData.type; },\n set: function(t) { this._listData.type = t; }\n});\n\nObject.defineProperty(proto, 'listTight', {\n get: function() { return this._listData.tight; },\n set: function(t) { this._listData.tight = t; }\n});\n\nObject.defineProperty(proto, 'listStart', {\n get: function() { return this._listData.start; },\n set: function(n) { this._listData.start = n; }\n});\n\nObject.defineProperty(proto, 'listDelimiter', {\n get: function() { return this._listData.delimiter; },\n set: function(delim) { this._listData.delimiter = delim; }\n});\n\nObject.defineProperty(proto, 'onEnter', {\n get: function() { return this._onEnter; },\n set: function(s) { this._onEnter = s; }\n});\n\nObject.defineProperty(proto, 'onExit', {\n get: function() { return this._onExit; },\n set: function(s) { this._onExit = s; }\n});\n\nNode.prototype.appendChild = function(child) {\n child.unlink();\n child._parent = this;\n if (this._lastChild) {\n this._lastChild._next = child;\n child._prev = this._lastChild;\n this._lastChild = child;\n } else {\n this._firstChild = child;\n this._lastChild = child;\n }\n};\n\nNode.prototype.prependChild = function(child) {\n child.unlink();\n child._parent = this;\n if (this._firstChild) {\n this._firstChild._prev = child;\n child._next = this._firstChild;\n this._firstChild = child;\n } else {\n this._firstChild = child;\n this._lastChild = child;\n }\n};\n\nNode.prototype.unlink = function() {\n if (this._prev) {\n this._prev._next = this._next;\n } else if (this._parent) {\n this._parent._firstChild = this._next;\n }\n if (this._next) {\n this._next._prev = this._prev;\n } else if (this._parent) {\n this._parent._lastChild = this._prev;\n }\n this._parent = null;\n this._next = null;\n this._prev = null;\n};\n\nNode.prototype.insertAfter = function(sibling) {\n sibling.unlink();\n sibling._next = this._next;\n if (sibling._next) {\n sibling._next._prev = sibling;\n }\n sibling._prev = this;\n this._next = sibling;\n sibling._parent = this._parent;\n if (!sibling._next) {\n sibling._parent._lastChild = sibling;\n }\n};\n\nNode.prototype.insertBefore = function(sibling) {\n sibling.unlink();\n sibling._prev = this._prev;\n if (sibling._prev) {\n sibling._prev._next = sibling;\n }\n sibling._next = this;\n this._prev = sibling;\n sibling._parent = this._parent;\n if (!sibling._prev) {\n sibling._parent._firstChild = sibling;\n }\n};\n\nNode.prototype.walker = function() {\n var walker = new NodeWalker(this);\n return walker;\n};\n\nmodule.exports = Node;\n\n\n/* Example of use of walker:\n\n var walker = w.walker();\n var event;\n\n while (event = walker.next()) {\n console.log(event.entering, event.node.type);\n }\n\n */\n","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n // Encodes a dictionary of {\n // \"notify\": true/false,\n // \"sound\": string or undefined,\n // \"highlight: true/false,\n // }\n // to a list of push actions.\n encodeActions: function encodeActions(action) {\n var notify = action.notify;\n var sound = action.sound;\n var highlight = action.highlight;\n if (notify) {\n var actions = [\"notify\"];\n if (sound) {\n actions.push({ \"set_tweak\": \"sound\", \"value\": sound });\n }\n if (highlight) {\n actions.push({ \"set_tweak\": \"highlight\" });\n } else {\n actions.push({ \"set_tweak\": \"highlight\", \"value\": false });\n }\n return actions;\n } else {\n return [\"dont_notify\"];\n }\n },\n\n // Decode a list of actions to a dictionary of {\n // \"notify\": true/false,\n // \"sound\": string or undefined,\n // \"highlight: true/false,\n // }\n // If the actions couldn't be decoded then returns null.\n decodeActions: function decodeActions(actions) {\n var notify = false;\n var sound = null;\n var highlight = false;\n\n for (var i = 0; i < actions.length; ++i) {\n var action = actions[i];\n if (action === \"notify\") {\n notify = true;\n } else if (action === \"dont_notify\") {\n notify = false;\n } else if ((typeof action === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(action)) === 'object') {\n if (action.set_tweak === \"sound\") {\n sound = action.value;\n } else if (action.set_tweak === \"highlight\") {\n highlight = action.value;\n } else {\n // We don't understand this kind of tweak, so give up.\n return null;\n }\n } else {\n // We don't understand this kind of action, so give up.\n return null;\n }\n }\n\n if (highlight === undefined) {\n // If a highlight tweak is missing a value then it defaults to true.\n highlight = true;\n }\n\n var result = { notify: notify, highlight: highlight };\n if (sound !== null) {\n result.sound = sound;\n }\n return result;\n }\n};\n//# sourceMappingURL=NotificationUtils.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar StandardActions = require('./StandardActions');\nvar NotificationUtils = require('./NotificationUtils');\n\nvar states = {\n /** The push rule is disabled */\n OFF: \"off\",\n\n /** The user will receive push notification for this rule */\n ON: \"on\",\n\n /** The user will receive push notification for this rule with sound and\n highlight if this is legitimate */\n LOUD: \"loud\"\n};\n\nmodule.exports = {\n /**\n * Enum for state of a push rule as defined by the Vector UI.\n * @readonly\n * @enum {string}\n */\n states: states,\n\n /**\n * Convert a PushRuleVectorState to a list of actions\n *\n * @return [object] list of push-rule actions\n */\n actionsFor: function actionsFor(pushRuleVectorState) {\n if (pushRuleVectorState === this.ON) {\n return StandardActions.ACTION_NOTIFY;\n } else if (pushRuleVectorState === this.LOUD) {\n return StandardActions.ACTION_HIGHLIGHT_DEFAULT_SOUND;\n }\n },\n\n /**\n * Convert a pushrule's actions to a PushRuleVectorState.\n *\n * Determines whether a content rule is in the PushRuleVectorState.ON\n * category or in PushRuleVectorState.LOUD, regardless of its enabled\n * state. Returns null if it does not match these categories.\n */\n contentRuleVectorStateKind: function contentRuleVectorStateKind(rule) {\n var decoded = NotificationUtils.decodeActions(rule.actions);\n\n if (!decoded) {\n return null;\n }\n\n // Count tweaks to determine if it is a ON or LOUD rule\n var tweaks = 0;\n if (decoded.sound) {\n tweaks++;\n }\n if (decoded.highlight) {\n tweaks++;\n }\n var stateKind = null;\n switch (tweaks) {\n case 0:\n stateKind = this.ON;\n break;\n case 2:\n stateKind = this.LOUD;\n break;\n }\n return stateKind;\n }\n};\n\nfor (var k in states) {\n module.exports[k] = states[k];\n}\n//# sourceMappingURL=PushRuleVectorState.js.map","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import isPlainObject from 'lodash-es/isPlainObject';\nimport $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nexport var ActionTypes = {\n INIT: '@@redux/INIT'\n\n /**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n};export default function createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n function getState() {\n return currentState;\n }\n\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected listener to be a function.');\n }\n\n var isSubscribed = true;\n\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({ type: ActionTypes.INIT });\n }\n\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object') {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return { unsubscribe: unsubscribe };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n }\n\n // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n dispatch({ type: ActionTypes.INIT });\n\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}","import { ActionTypes } from './createStore';\nimport isPlainObject from 'lodash-es/isPlainObject';\nimport warning from './utils/warning';\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n\n return 'Given action ' + actionName + ', reducer \"' + key + '\" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state. ' + 'If you want this reducer to hold no value, you can return null instead of undefined.';\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return 'The ' + argumentName + ' has unexpected type of \"' + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n\n if (unexpectedKeys.length > 0) {\n return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, { type: ActionTypes.INIT });\n\n if (typeof initialState === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined. If you don\\'t want to set a value for this reducer, ' + 'you can use null instead of undefined.');\n }\n\n var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n if (typeof reducer(undefined, { type: type }) === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined, but can be null.');\n }\n });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\nexport default function combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning('No reducer provided for key \"' + key + '\"');\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n var finalReducerKeys = Object.keys(finalReducers);\n\n var unexpectedKeyCache = void 0;\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError = void 0;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n return hasChanged ? nextState : state;\n };\n}","function bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(undefined, arguments));\n };\n}\n\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\nexport default function bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}","/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\n\nexport default function compose() {\n for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(undefined, arguments));\n };\n });\n}","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport compose from './compose';\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\nexport default function applyMiddleware() {\n for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function (reducer, preloadedState, enhancer) {\n var store = createStore(reducer, preloadedState, enhancer);\n var _dispatch = store.dispatch;\n var chain = [];\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch(action) {\n return _dispatch(action);\n }\n };\n chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(undefined, chain)(store.dispatch);\n\n return _extends({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}","import createStore from './createStore';\nimport combineReducers from './combineReducers';\nimport bindActionCreators from './bindActionCreators';\nimport applyMiddleware from './applyMiddleware';\nimport compose from './compose';\nimport warning from './utils/warning';\n\n/*\n* This is a dummy function to check if the function name has been altered by minification.\n* If the function has been minified and NODE_ENV !== 'production', warn the user.\n*/\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \\'production\\'. ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { createStore, combineReducers, bindActionCreators, applyMiddleware, compose };","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","/*! https://mths.be/esrever v0.2.0 by @mathias */\n;(function(root) {\n\n\t// Detect free variables `exports`\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar regexSymbolWithCombiningMarks = /([\\0-\\u02FF\\u0370-\\u1AAF\\u1B00-\\u1DBF\\u1E00-\\u20CF\\u2100-\\uD7FF\\uE000-\\uFE1F\\uFE30-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])([\\u0300-\\u036F\\u1AB0-\\u1AFF\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F]+)/g;\n\tvar regexSurrogatePair = /([\\uD800-\\uDBFF])([\\uDC00-\\uDFFF])/g;\n\n\tvar reverse = function(string) {\n\t\t// Step 1: deal with combining marks and astral symbols (surrogate pairs)\n\t\tstring = string\n\t\t\t// Swap symbols with their combining marks so the combining marks go first\n\t\t\t.replace(regexSymbolWithCombiningMarks, function($0, $1, $2) {\n\t\t\t\t// Reverse the combining marks so they will end up in the same order\n\t\t\t\t// later on (after another round of reversing)\n\t\t\t\treturn reverse($2) + $1;\n\t\t\t})\n\t\t\t// Swap high and low surrogates so the low surrogates go first\n\t\t\t.replace(regexSurrogatePair, '$2$1');\n\t\t// Step 2: reverse the code units in the string\n\t\tvar result = '';\n\t\tvar index = string.length;\n\t\twhile (index--) {\n\t\t\tresult += string.charAt(index);\n\t\t}\n\t\treturn result;\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar esrever = {\n\t\t'version': '0.2.0',\n\t\t'reverse': reverse\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn esrever;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = esrever;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in esrever) {\n\t\t\t\tesrever.hasOwnProperty(key) && (freeExports[key] = esrever[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.esrever = esrever;\n\t}\n\n}(this));\n","var arrayMap = require('./_arrayMap'),\n baseClone = require('./_baseClone'),\n baseUnset = require('./_baseUnset'),\n castPath = require('./_castPath'),\n copyObject = require('./_copyObject'),\n customOmitClone = require('./_customOmitClone'),\n flatRest = require('./_flatRest'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nmodule.exports = omit;\n","/**\n * This is a straight rip-off of the React.js ReactPropTypes.js proptype validators,\n * modified to make it possible to validate Immutable.js data.\n * ImmutableTypes.listOf is patterned after React.PropTypes.arrayOf, but for Immutable.List\n * ImmutableTypes.shape is based on React.PropTypes.shape, but for any Immutable.Iterable\n */\n\"use strict\";\n\nvar Immutable = require(\"immutable\");\n\nvar ANONYMOUS = \"<<anonymous>>\";\n\nvar ImmutablePropTypes = {\n listOf: createListOfTypeChecker,\n mapOf: createMapOfTypeChecker,\n orderedMapOf: createOrderedMapOfTypeChecker,\n setOf: createSetOfTypeChecker,\n orderedSetOf: createOrderedSetOfTypeChecker,\n stackOf: createStackOfTypeChecker,\n iterableOf: createIterableOfTypeChecker,\n recordOf: createRecordOfTypeChecker,\n shape: createShapeChecker,\n contains: createShapeChecker,\n mapContains: createMapContainsChecker,\n // Primitive Types\n list: createImmutableTypeChecker(\"List\", Immutable.List.isList),\n map: createImmutableTypeChecker(\"Map\", Immutable.Map.isMap),\n orderedMap: createImmutableTypeChecker(\"OrderedMap\", Immutable.OrderedMap.isOrderedMap),\n set: createImmutableTypeChecker(\"Set\", Immutable.Set.isSet),\n orderedSet: createImmutableTypeChecker(\"OrderedSet\", Immutable.OrderedSet.isOrderedSet),\n stack: createImmutableTypeChecker(\"Stack\", Immutable.Stack.isStack),\n seq: createImmutableTypeChecker(\"Seq\", Immutable.Seq.isSeq),\n record: createImmutableTypeChecker(\"Record\", function (isRecord) {\n return isRecord instanceof Immutable.Record;\n }),\n iterable: createImmutableTypeChecker(\"Iterable\", Immutable.Iterable.isIterable)\n};\n\nfunction getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return \"array\";\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return \"object\";\n }\n if (propValue instanceof Immutable.Iterable) {\n return \"Immutable.\" + propValue.toSource().split(\" \")[0];\n }\n return propType;\n}\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n rest[_key - 6] = arguments[_key];\n }\n\n propFullName = propFullName || propName;\n componentName = componentName || ANONYMOUS;\n if (props[propName] == null) {\n var locationName = location;\n if (isRequired) {\n return new Error(\"Required \" + locationName + \" `\" + propFullName + \"` was not specified in \" + (\"`\" + componentName + \"`.\"));\n }\n } else {\n return validate.apply(undefined, [props, propName, componentName, location, propFullName].concat(rest));\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\n\nfunction createImmutableTypeChecker(immutableClassName, immutableClassTypeValidator) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!immutableClassTypeValidator(propValue)) {\n var propType = getPropType(propValue);\n return new Error(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` \" + (\"supplied to `\" + componentName + \"`, expected `\" + immutableClassName + \"`.\"));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createIterableTypeChecker(typeChecker, immutableClassName, immutableClassTypeValidator) {\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n rest[_key - 5] = arguments[_key];\n }\n\n var propValue = props[propName];\n if (!immutableClassTypeValidator(propValue)) {\n var locationName = location;\n var propType = getPropType(propValue);\n return new Error(\"Invalid \" + locationName + \" `\" + propFullName + \"` of type \" + (\"`\" + propType + \"` supplied to `\" + componentName + \"`, expected an Immutable.js \" + immutableClassName + \".\"));\n }\n\n if (typeof typeChecker !== \"function\") {\n return new Error(\"Invalid typeChecker supplied to `\" + componentName + \"` \" + (\"for propType `\" + propFullName + \"`, expected a function.\"));\n }\n\n var propValues = propValue.toArray();\n for (var i = 0, len = propValues.length; i < len; i++) {\n var error = typeChecker.apply(undefined, [propValues, i, componentName, location, \"\" + propFullName + \"[\" + i + \"]\"].concat(rest));\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createKeysTypeChecker(typeChecker) {\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n rest[_key - 5] = arguments[_key];\n }\n\n var propValue = props[propName];\n if (typeof typeChecker !== \"function\") {\n return new Error(\"Invalid keysTypeChecker (optional second argument) supplied to `\" + componentName + \"` \" + (\"for propType `\" + propFullName + \"`, expected a function.\"));\n }\n\n var keys = propValue.keySeq().toArray();\n for (var i = 0, len = keys.length; i < len; i++) {\n var error = typeChecker.apply(undefined, [keys, i, componentName, location, \"\" + propFullName + \" -> key(\" + keys[i] + \")\"].concat(rest));\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createListOfTypeChecker(typeChecker) {\n return createIterableTypeChecker(typeChecker, \"List\", Immutable.List.isList);\n}\n\nfunction createMapOfTypeCheckerFactory(valuesTypeChecker, keysTypeChecker, immutableClassName, immutableClassTypeValidator) {\n function validate() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return createIterableTypeChecker(valuesTypeChecker, immutableClassName, immutableClassTypeValidator).apply(undefined, args) || keysTypeChecker && createKeysTypeChecker(keysTypeChecker).apply(undefined, args);\n }\n\n return createChainableTypeChecker(validate);\n}\n\nfunction createMapOfTypeChecker(valuesTypeChecker, keysTypeChecker) {\n return createMapOfTypeCheckerFactory(valuesTypeChecker, keysTypeChecker, \"Map\", Immutable.Map.isMap);\n}\n\nfunction createOrderedMapOfTypeChecker(valuesTypeChecker, keysTypeChecker) {\n return createMapOfTypeCheckerFactory(valuesTypeChecker, keysTypeChecker, \"OrderedMap\", Immutable.OrderedMap.isOrderedMap);\n}\n\nfunction createSetOfTypeChecker(typeChecker) {\n return createIterableTypeChecker(typeChecker, \"Set\", Immutable.Set.isSet);\n}\n\nfunction createOrderedSetOfTypeChecker(typeChecker) {\n return createIterableTypeChecker(typeChecker, \"OrderedSet\", Immutable.OrderedSet.isOrderedSet);\n}\n\nfunction createStackOfTypeChecker(typeChecker) {\n return createIterableTypeChecker(typeChecker, \"Stack\", Immutable.Stack.isStack);\n}\n\nfunction createIterableOfTypeChecker(typeChecker) {\n return createIterableTypeChecker(typeChecker, \"Iterable\", Immutable.Iterable.isIterable);\n}\n\nfunction createRecordOfTypeChecker(recordKeys) {\n function validate(props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n rest[_key - 5] = arguments[_key];\n }\n\n var propValue = props[propName];\n if (!(propValue instanceof Immutable.Record)) {\n var propType = getPropType(propValue);\n var locationName = location;\n return new Error(\"Invalid \" + locationName + \" `\" + propFullName + \"` of type `\" + propType + \"` \" + (\"supplied to `\" + componentName + \"`, expected an Immutable.js Record.\"));\n }\n for (var key in recordKeys) {\n var checker = recordKeys[key];\n if (!checker) {\n continue;\n }\n var mutablePropValue = propValue.toObject();\n var error = checker.apply(undefined, [mutablePropValue, key, componentName, location, \"\" + propFullName + \".\" + key].concat(rest));\n if (error) {\n return error;\n }\n }\n }\n return createChainableTypeChecker(validate);\n}\n\n// there is some irony in the fact that shapeTypes is a standard hash and not an immutable collection\nfunction createShapeTypeChecker(shapeTypes) {\n var immutableClassName = arguments[1] === undefined ? \"Iterable\" : arguments[1];\n var immutableClassTypeValidator = arguments[2] === undefined ? Immutable.Iterable.isIterable : arguments[2];\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n rest[_key - 5] = arguments[_key];\n }\n\n var propValue = props[propName];\n if (!immutableClassTypeValidator(propValue)) {\n var propType = getPropType(propValue);\n var locationName = location;\n return new Error(\"Invalid \" + locationName + \" `\" + propFullName + \"` of type `\" + propType + \"` \" + (\"supplied to `\" + componentName + \"`, expected an Immutable.js \" + immutableClassName + \".\"));\n }\n var mutablePropValue = propValue.toObject();\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker.apply(undefined, [mutablePropValue, key, componentName, location, \"\" + propFullName + \".\" + key].concat(rest));\n if (error) {\n return error;\n }\n }\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createShapeChecker(shapeTypes) {\n return createShapeTypeChecker(shapeTypes);\n}\n\nfunction createMapContainsChecker(shapeTypes) {\n return createShapeTypeChecker(shapeTypes, \"Map\", Immutable.Map.isMap);\n}\n\nmodule.exports = ImmutablePropTypes;","'use strict';\n\nexports.atob = self.atob.bind(self);\nexports.btoa = self.btoa.bind(self);\n","/* globals __webpack_amd_options__ */\r\nmodule.exports = __webpack_amd_options__;\r\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","exports.f = require('./_wks');\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","var $parseFloat = require('./_global').parseFloat;\nvar $trim = require('./_string-trim').trim;\n\nmodule.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var cof = require('./_cof');\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","var aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar validate = require('./_validate-collection');\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar isArray = require('./_is-array');\nvar isObject = require('./_is-object');\nvar toLength = require('./_to-length');\nvar ctx = require('./_ctx');\nvar IS_CONCAT_SPREADABLE = require('./_wks')('isConcatSpreadable');\n\nfunction flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;\n var element, spreadable;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n spreadable = false;\n if (isObject(element)) {\n spreadable = element[IS_CONCAT_SPREADABLE];\n spreadable = spreadable !== undefined ? !!spreadable : isArray(element);\n }\n\n if (spreadable && depth > 0) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1fffffffffffff) throw TypeError();\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n}\n\nmodule.exports = flattenIntoArray;\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n return from(this);\n };\n};\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// https://rwaldron.github.io/proposal-math-extensions/\nmodule.exports = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) {\n if (\n arguments.length === 0\n // eslint-disable-next-line no-self-compare\n || x != x\n // eslint-disable-next-line no-self-compare\n || inLow != inLow\n // eslint-disable-next-line no-self-compare\n || inHigh != inHigh\n // eslint-disable-next-line no-self-compare\n || outLow != outLow\n // eslint-disable-next-line no-self-compare\n || outHigh != outHigh\n ) return NaN;\n if (x === Infinity || x === -Infinity) return x;\n return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar canDefineProperty = require('./canDefineProperty');\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar lowPriorityWarning = require('./lowPriorityWarning');\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nReactComponent.prototype.isReactComponent = {};\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nReactComponent.prototype.setState = function (partialState, callback) {\n !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0;\n this.updater.enqueueSetState(this, partialState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'setState');\n }\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nReactComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'forceUpdate');\n }\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\nif (process.env.NODE_ENV !== 'production') {\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n var defineDeprecationWarning = function (methodName, info) {\n if (canDefineProperty) {\n Object.defineProperty(ReactComponent.prototype, methodName, {\n get: function () {\n lowPriorityWarning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n return undefined;\n }\n });\n }\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactPureComponent(props, context, updater) {\n // Duplicated from ReactComponent.\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nfunction ComponentDummy() {}\nComponentDummy.prototype = ReactComponent.prototype;\nReactPureComponent.prototype = new ComponentDummy();\nReactPureComponent.prototype.constructor = ReactPureComponent;\n// Avoid an extra prototype jump for these methods.\n_assign(ReactPureComponent.prototype, ReactComponent.prototype);\nReactPureComponent.prototype.isPureReactComponent = true;\n\nmodule.exports = {\n Component: ReactComponent,\n PureComponent: ReactPureComponent\n};","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar warning = require('fbjs/lib/warning');\n\nfunction warnNoop(publicInstance, callerName) {\n if (process.env.NODE_ENV !== 'production') {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the abstract API for an update queue.\n */\nvar ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback) {},\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nmodule.exports = ReactNoopUpdateQueue;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar canDefineProperty = false;\nif (process.env.NODE_ENV !== 'production') {\n try {\n // $FlowFixMe https://github.com/facebook/flow/issues/285\n Object.defineProperty({}, 'x', { get: function () {} });\n canDefineProperty = true;\n } catch (x) {\n // IE will fail on defineProperty\n }\n}\n\nmodule.exports = canDefineProperty;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n// React 15.5 references this module, and assumes PropTypes are still callable in production.\n// Therefore we re-export development-only version with all the PropTypes checks here.\n// However if one is migrating to the `prop-types` npm library, they will go through the\n// `index.js` entry point, and it will branch depending on the environment.\nvar factory = require('./factoryWithTypeCheckers');\nmodule.exports = function(isValidElement) {\n // It is still allowed in 15.5.\n var throwOnDirectAccess = false;\n return factory(isValidElement, throwOnDirectAccess);\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = { \"default\": require(\"core-js/library/fn/object/freeze\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-descriptor\"), __esModule: true };","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentFlags = {\n hasCachedChildNodes: 1 << 0\n};\n\nmodule.exports = ReactDOMComponentFlags;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ARIADOMPropertyConfig = require('./ARIADOMPropertyConfig');\nvar BeforeInputEventPlugin = require('./BeforeInputEventPlugin');\nvar ChangeEventPlugin = require('./ChangeEventPlugin');\nvar DefaultEventPluginOrder = require('./DefaultEventPluginOrder');\nvar EnterLeaveEventPlugin = require('./EnterLeaveEventPlugin');\nvar HTMLDOMPropertyConfig = require('./HTMLDOMPropertyConfig');\nvar ReactComponentBrowserEnvironment = require('./ReactComponentBrowserEnvironment');\nvar ReactDOMComponent = require('./ReactDOMComponent');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMEmptyComponent = require('./ReactDOMEmptyComponent');\nvar ReactDOMTreeTraversal = require('./ReactDOMTreeTraversal');\nvar ReactDOMTextComponent = require('./ReactDOMTextComponent');\nvar ReactDefaultBatchingStrategy = require('./ReactDefaultBatchingStrategy');\nvar ReactEventListener = require('./ReactEventListener');\nvar ReactInjection = require('./ReactInjection');\nvar ReactReconcileTransaction = require('./ReactReconcileTransaction');\nvar SVGDOMPropertyConfig = require('./SVGDOMPropertyConfig');\nvar SelectEventPlugin = require('./SelectEventPlugin');\nvar SimpleEventPlugin = require('./SimpleEventPlugin');\n\nvar alreadyInjected = false;\n\nfunction inject() {\n if (alreadyInjected) {\n // TODO: This is currently true because these injections are shared between\n // the client and the server package. They should be built independently\n // and not share any injection state. Then this problem will be solved.\n return;\n }\n alreadyInjected = true;\n\n ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);\n\n /**\n * Inject modules for resolving DOM hierarchy and plugin ordering.\n */\n ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);\n ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);\n ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);\n\n /**\n * Some important event plugins included by default (without having to require\n * them).\n */\n ReactInjection.EventPluginHub.injectEventPluginsByName({\n SimpleEventPlugin: SimpleEventPlugin,\n EnterLeaveEventPlugin: EnterLeaveEventPlugin,\n ChangeEventPlugin: ChangeEventPlugin,\n SelectEventPlugin: SelectEventPlugin,\n BeforeInputEventPlugin: BeforeInputEventPlugin\n });\n\n ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);\n\n ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);\n\n ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);\n\n ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {\n return new ReactDOMEmptyComponent(instantiate);\n });\n\n ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);\n ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);\n\n ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);\n}\n\nmodule.exports = {\n inject: inject\n};","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Accumulates items that must not be null or undefined into the first one. This\n * is used to conserve memory by avoiding array allocations, and thus sacrifices\n * API cleanness. Since `current` can be null before being passed in and not\n * null after this function, make sure to assign it back to `current`:\n *\n * `a = accumulateInto(a, b);`\n *\n * This API should be sparingly used. Try `accumulate` for something cleaner.\n *\n * @return {*|array<*>} An accumulation of items.\n */\n\nfunction accumulateInto(current, next) {\n !(next != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0;\n\n if (current == null) {\n return next;\n }\n\n // Both are not empty. Warning: Never call x.concat(y) when you are not\n // certain that x is an Array (x could be a string with concat method).\n if (Array.isArray(current)) {\n if (Array.isArray(next)) {\n current.push.apply(current, next);\n return current;\n }\n current.push(next);\n return current;\n }\n\n if (Array.isArray(next)) {\n // A bit too dangerous to mutate `next`.\n return [current].concat(next);\n }\n\n return [current, next];\n}\n\nmodule.exports = accumulateInto;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/**\n * @param {array} arr an \"accumulation\" of items which is either an Array or\n * a single item. Useful when paired with the `accumulate` module. This is a\n * simple utility that allows us to reason about a collection of items, but\n * handling the case when there is exactly one item (and we do not need to\n * allocate an array).\n */\n\nfunction forEachAccumulated(arr, cb, scope) {\n if (Array.isArray(arr)) {\n arr.forEach(cb, scope);\n } else if (arr) {\n cb.call(scope, arr);\n }\n}\n\nmodule.exports = forEachAccumulated;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar contentKey = null;\n\n/**\n * Gets the key used to access text content on a DOM node.\n *\n * @return {?string} Key used to access text content.\n * @internal\n */\nfunction getTextContentAccessor() {\n if (!contentKey && ExecutionEnvironment.canUseDOM) {\n // Prefer textContent to innerText because many browsers support both but\n // SVG <text> elements don't support innerText even when <div> does.\n contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';\n }\n return contentKey;\n}\n\nmodule.exports = getTextContentAccessor;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PooledClass = require('./PooledClass');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\n\nvar CallbackQueue = function () {\n function CallbackQueue(arg) {\n _classCallCheck(this, CallbackQueue);\n\n this._callbacks = null;\n this._contexts = null;\n this._arg = arg;\n }\n\n /**\n * Enqueues a callback to be invoked when `notifyAll` is invoked.\n *\n * @param {function} callback Invoked when `notifyAll` is invoked.\n * @param {?object} context Context to call `callback` with.\n * @internal\n */\n\n\n CallbackQueue.prototype.enqueue = function enqueue(callback, context) {\n this._callbacks = this._callbacks || [];\n this._callbacks.push(callback);\n this._contexts = this._contexts || [];\n this._contexts.push(context);\n };\n\n /**\n * Invokes all enqueued callbacks and clears the queue. This is invoked after\n * the DOM representation of a component has been created or updated.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.notifyAll = function notifyAll() {\n var callbacks = this._callbacks;\n var contexts = this._contexts;\n var arg = this._arg;\n if (callbacks && contexts) {\n !(callbacks.length === contexts.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0;\n this._callbacks = null;\n this._contexts = null;\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i].call(contexts[i], arg);\n }\n callbacks.length = 0;\n contexts.length = 0;\n }\n };\n\n CallbackQueue.prototype.checkpoint = function checkpoint() {\n return this._callbacks ? this._callbacks.length : 0;\n };\n\n CallbackQueue.prototype.rollback = function rollback(len) {\n if (this._callbacks && this._contexts) {\n this._callbacks.length = len;\n this._contexts.length = len;\n }\n };\n\n /**\n * Resets the internal queue.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.reset = function reset() {\n this._callbacks = null;\n this._contexts = null;\n };\n\n /**\n * `PooledClass` looks for this.\n */\n\n\n CallbackQueue.prototype.destructor = function destructor() {\n this.reset();\n };\n\n return CallbackQueue;\n}();\n\nmodule.exports = PooledClass.addPoolingTo(CallbackQueue);","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar ReactFeatureFlags = {\n // When true, call console.time() before and .timeEnd() after each top-level\n // render (both initial renders and updates). Useful when looking at prod-mode\n // timeline profiles in Chrome, for example.\n logTopLevelRenders: false\n};\n\nmodule.exports = ReactFeatureFlags;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nfunction isCheckable(elem) {\n var type = elem.type;\n var nodeName = elem.nodeName;\n return nodeName && nodeName.toLowerCase() === 'input' && (type === 'checkbox' || type === 'radio');\n}\n\nfunction getTracker(inst) {\n return inst._wrapperState.valueTracker;\n}\n\nfunction attachTracker(inst, tracker) {\n inst._wrapperState.valueTracker = tracker;\n}\n\nfunction detachTracker(inst) {\n inst._wrapperState.valueTracker = null;\n}\n\nfunction getValueFromNode(node) {\n var value;\n if (node) {\n value = isCheckable(node) ? '' + node.checked : node.value;\n }\n return value;\n}\n\nvar inputValueTracking = {\n // exposed for testing\n _getTrackerFromNode: function (node) {\n return getTracker(ReactDOMComponentTree.getInstanceFromNode(node));\n },\n\n\n track: function (inst) {\n if (getTracker(inst)) {\n return;\n }\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var valueField = isCheckable(node) ? 'checked' : 'value';\n var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField);\n\n var currentValue = '' + node[valueField];\n\n // if someone has already defined a value or Safari, then bail\n // and don't track value will cause over reporting of changes,\n // but it's better then a hard failure\n // (needed for certain tests that spyOn input values and Safari)\n if (node.hasOwnProperty(valueField) || typeof descriptor.get !== 'function' || typeof descriptor.set !== 'function') {\n return;\n }\n\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable,\n configurable: true,\n get: function () {\n return descriptor.get.call(this);\n },\n set: function (value) {\n currentValue = '' + value;\n descriptor.set.call(this, value);\n }\n });\n\n attachTracker(inst, {\n getValue: function () {\n return currentValue;\n },\n setValue: function (value) {\n currentValue = '' + value;\n },\n stopTracking: function () {\n detachTracker(inst);\n delete node[valueField];\n }\n });\n },\n\n updateValueIfChanged: function (inst) {\n if (!inst) {\n return false;\n }\n var tracker = getTracker(inst);\n\n if (!tracker) {\n inputValueTracking.track(inst);\n return true;\n }\n\n var lastValue = tracker.getValue();\n var nextValue = getValueFromNode(ReactDOMComponentTree.getNodeFromInstance(inst));\n\n if (nextValue !== lastValue) {\n tracker.setValue(nextValue);\n return true;\n }\n\n return false;\n },\n stopTracking: function (inst) {\n var tracker = getTracker(inst);\n if (tracker) {\n tracker.stopTracking();\n }\n }\n};\n\nmodule.exports = inputValueTracking;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\n\nvar supportedInputTypes = {\n color: true,\n date: true,\n datetime: true,\n 'datetime-local': true,\n email: true,\n month: true,\n number: true,\n password: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true\n};\n\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\n if (nodeName === 'input') {\n return !!supportedInputTypes[elem.type];\n }\n\n if (nodeName === 'textarea') {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = isTextInputElement;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ViewportMetrics = {\n currentScrollLeft: 0,\n\n currentScrollTop: 0,\n\n refreshScrollValues: function (scrollPosition) {\n ViewportMetrics.currentScrollLeft = scrollPosition.x;\n ViewportMetrics.currentScrollTop = scrollPosition.y;\n }\n};\n\nmodule.exports = ViewportMetrics;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar setInnerHTML = require('./setInnerHTML');\n\n/**\n * Set the textContent property of a node, ensuring that whitespace is preserved\n * even in IE8. innerText is a poor substitute for textContent and, among many\n * issues, inserts <br> instead of the literal newline chars. innerHTML behaves\n * as it should.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\nvar setTextContent = function (node, text) {\n if (text) {\n var firstChild = node.firstChild;\n\n if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n};\n\nif (ExecutionEnvironment.canUseDOM) {\n if (!('textContent' in document.documentElement)) {\n setTextContent = function (node, text) {\n if (node.nodeType === 3) {\n node.nodeValue = text;\n return;\n }\n setInnerHTML(node, escapeTextContentForBrowser(text));\n };\n }\n}\n\nmodule.exports = setTextContent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * @param {DOMElement} node input/textarea to focus\n */\n\nfunction focusNode(node) {\n // IE8 can throw \"Can't move focus to the control because it is invisible,\n // not enabled, or of a type that does not accept the focus.\" for all kinds of\n // reasons that are too expensive and fragile to test.\n try {\n node.focus();\n } catch (e) {}\n}\n\nmodule.exports = focusNode;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\n\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n columns: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowSpan: true,\n gridRowStart: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnSpan: true,\n gridColumnStart: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n prefixes.forEach(function (prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\n/**\n * Most style properties can be unset by doing .style[prop] = '' but IE8\n * doesn't like doing that with shorthand properties so for the properties that\n * IE8 breaks on, which are listed here, we instead unset each of the\n * individual properties. See http://bugs.jquery.com/ticket/12385.\n * The 4-value 'clock' properties like margin, padding, border-width seem to\n * behave without any problems. Curiously, list-style works too without any\n * special prodding.\n */\nvar shorthandPropertyExpansions = {\n background: {\n backgroundAttachment: true,\n backgroundColor: true,\n backgroundImage: true,\n backgroundPositionX: true,\n backgroundPositionY: true,\n backgroundRepeat: true\n },\n backgroundPosition: {\n backgroundPositionX: true,\n backgroundPositionY: true\n },\n border: {\n borderWidth: true,\n borderStyle: true,\n borderColor: true\n },\n borderBottom: {\n borderBottomWidth: true,\n borderBottomStyle: true,\n borderBottomColor: true\n },\n borderLeft: {\n borderLeftWidth: true,\n borderLeftStyle: true,\n borderLeftColor: true\n },\n borderRight: {\n borderRightWidth: true,\n borderRightStyle: true,\n borderRightColor: true\n },\n borderTop: {\n borderTopWidth: true,\n borderTopStyle: true,\n borderTopColor: true\n },\n font: {\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n fontSize: true,\n lineHeight: true,\n fontFamily: true\n },\n outline: {\n outlineWidth: true,\n outlineStyle: true,\n outlineColor: true\n }\n};\n\nvar CSSProperty = {\n isUnitlessNumber: isUnitlessNumber,\n shorthandPropertyExpansions: shorthandPropertyExpansions\n};\n\nmodule.exports = CSSProperty;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar quoteAttributeValueForBrowser = require('./quoteAttributeValueForBrowser');\nvar warning = require('fbjs/lib/warning');\n\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\n\nfunction isAttributeNameSafe(attributeName) {\n if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {\n return true;\n }\n if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {\n return false;\n }\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n validatedAttributeNameCache[attributeName] = true;\n return true;\n }\n illegalAttributeNameCache[attributeName] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0;\n return false;\n}\n\nfunction shouldIgnoreValue(propertyInfo, value) {\n return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;\n}\n\n/**\n * Operations for dealing with DOM properties.\n */\nvar DOMPropertyOperations = {\n /**\n * Creates markup for the ID property.\n *\n * @param {string} id Unescaped ID.\n * @return {string} Markup string.\n */\n createMarkupForID: function (id) {\n return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id);\n },\n\n setAttributeForID: function (node, id) {\n node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);\n },\n\n createMarkupForRoot: function () {\n return DOMProperty.ROOT_ATTRIBUTE_NAME + '=\"\"';\n },\n\n setAttributeForRoot: function (node) {\n node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, '');\n },\n\n /**\n * Creates markup for a property.\n *\n * @param {string} name\n * @param {*} value\n * @return {?string} Markup string, or null if the property was invalid.\n */\n createMarkupForProperty: function (name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n if (shouldIgnoreValue(propertyInfo, value)) {\n return '';\n }\n var attributeName = propertyInfo.attributeName;\n if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n return attributeName + '=\"\"';\n }\n return attributeName + '=' + quoteAttributeValueForBrowser(value);\n } else if (DOMProperty.isCustomAttribute(name)) {\n if (value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n }\n return null;\n },\n\n /**\n * Creates markup for a custom property.\n *\n * @param {string} name\n * @param {*} value\n * @return {string} Markup string, or empty string if the property was invalid.\n */\n createMarkupForCustomAttribute: function (name, value) {\n if (!isAttributeNameSafe(name) || value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n },\n\n /**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n setValueForProperty: function (node, name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, value);\n } else if (shouldIgnoreValue(propertyInfo, value)) {\n this.deleteValueForProperty(node, name);\n return;\n } else if (propertyInfo.mustUseProperty) {\n // Contrary to `setAttribute`, object properties are properly\n // `toString`ed by IE8/9.\n node[propertyInfo.propertyName] = value;\n } else {\n var attributeName = propertyInfo.attributeName;\n var namespace = propertyInfo.attributeNamespace;\n // `setAttribute` with objects becomes only `[object]` in IE8/9,\n // ('' + value) makes it output the correct toString()-value.\n if (namespace) {\n node.setAttributeNS(namespace, attributeName, '' + value);\n } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n node.setAttribute(attributeName, '');\n } else {\n node.setAttribute(attributeName, '' + value);\n }\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n DOMPropertyOperations.setValueForAttribute(node, name, value);\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n setValueForAttribute: function (node, name, value) {\n if (!isAttributeNameSafe(name)) {\n return;\n }\n if (value == null) {\n node.removeAttribute(name);\n } else {\n node.setAttribute(name, '' + value);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n /**\n * Deletes an attributes from a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForAttribute: function (node, name) {\n node.removeAttribute(name);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n },\n\n /**\n * Deletes the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForProperty: function (node, name) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, undefined);\n } else if (propertyInfo.mustUseProperty) {\n var propName = propertyInfo.propertyName;\n if (propertyInfo.hasBooleanValue) {\n node[propName] = false;\n } else {\n node[propName] = '';\n }\n } else {\n node.removeAttribute(propertyInfo.attributeName);\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n node.removeAttribute(name);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n }\n};\n\nmodule.exports = DOMPropertyOperations;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnValueDefaultValue = false;\n\nfunction updateOptionsIfPendingUpdateAndMounted() {\n if (this._rootNodeID && this._wrapperState.pendingUpdate) {\n this._wrapperState.pendingUpdate = false;\n\n var props = this._currentElement.props;\n var value = LinkedValueUtils.getValue(props);\n\n if (value != null) {\n updateOptions(this, Boolean(props.multiple), value);\n }\n }\n}\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\nvar valuePropNames = ['value', 'defaultValue'];\n\n/**\n * Validation function for `value` and `defaultValue`.\n * @private\n */\nfunction checkSelectPropTypes(inst, props) {\n var owner = inst._currentElement._owner;\n LinkedValueUtils.checkPropTypes('select', props, owner);\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n\n for (var i = 0; i < valuePropNames.length; i++) {\n var propName = valuePropNames[i];\n if (props[propName] == null) {\n continue;\n }\n var isArray = Array.isArray(props[propName]);\n if (props.multiple && !isArray) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n } else if (!props.multiple && isArray) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n }\n }\n}\n\n/**\n * @param {ReactDOMComponent} inst\n * @param {boolean} multiple\n * @param {*} propValue A stringable (with `multiple`, a list of stringables).\n * @private\n */\nfunction updateOptions(inst, multiple, propValue) {\n var selectedValue, i;\n var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;\n\n if (multiple) {\n selectedValue = {};\n for (i = 0; i < propValue.length; i++) {\n selectedValue['' + propValue[i]] = true;\n }\n for (i = 0; i < options.length; i++) {\n var selected = selectedValue.hasOwnProperty(options[i].value);\n if (options[i].selected !== selected) {\n options[i].selected = selected;\n }\n }\n } else {\n // Do not set `select.value` as exact behavior isn't consistent across all\n // browsers for all cases.\n selectedValue = '' + propValue;\n for (i = 0; i < options.length; i++) {\n if (options[i].value === selectedValue) {\n options[i].selected = true;\n return;\n }\n }\n if (options.length) {\n options[0].selected = true;\n }\n }\n}\n\n/**\n * Implements a <select> host component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\nvar ReactDOMSelect = {\n getHostProps: function (inst, props) {\n return _assign({}, props, {\n onChange: inst._wrapperState.onChange,\n value: undefined\n });\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n checkSelectPropTypes(inst, props);\n }\n\n var value = LinkedValueUtils.getValue(props);\n inst._wrapperState = {\n pendingUpdate: false,\n initialValue: value != null ? value : props.defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n wasMultiple: Boolean(props.multiple)\n };\n\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValueDefaultValue = true;\n }\n },\n\n getSelectValueContext: function (inst) {\n // ReactDOMOption looks at this initial value so the initial generated\n // markup has correct `selected` attributes\n return inst._wrapperState.initialValue;\n },\n\n postUpdateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // After the initial mount, we control selected-ness manually so don't pass\n // this value down\n inst._wrapperState.initialValue = undefined;\n\n var wasMultiple = inst._wrapperState.wasMultiple;\n inst._wrapperState.wasMultiple = Boolean(props.multiple);\n\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n inst._wrapperState.pendingUpdate = false;\n updateOptions(inst, Boolean(props.multiple), value);\n } else if (wasMultiple !== Boolean(props.multiple)) {\n // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n if (props.defaultValue != null) {\n updateOptions(inst, Boolean(props.multiple), props.defaultValue);\n } else {\n // Revert the select back to its default unselected state.\n updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : '');\n }\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n if (this._rootNodeID) {\n this._wrapperState.pendingUpdate = true;\n }\n ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMSelect;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar React = require('react/lib/React');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar ReactNodeTypes = {\n HOST: 0,\n COMPOSITE: 1,\n EMPTY: 2,\n\n getType: function (node) {\n if (node === null || node === false) {\n return ReactNodeTypes.EMPTY;\n } else if (React.isValidElement(node)) {\n if (typeof node.type === 'function') {\n return ReactNodeTypes.COMPOSITE;\n } else {\n return ReactNodeTypes.HOST;\n }\n }\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0;\n }\n};\n\nmodule.exports = ReactNodeTypes;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyComponentFactory;\n\nvar ReactEmptyComponentInjection = {\n injectEmptyComponentFactory: function (factory) {\n emptyComponentFactory = factory;\n }\n};\n\nvar ReactEmptyComponent = {\n create: function (instantiate) {\n return emptyComponentFactory(instantiate);\n }\n};\n\nReactEmptyComponent.injection = ReactEmptyComponentInjection;\n\nmodule.exports = ReactEmptyComponent;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar genericComponentClass = null;\nvar textComponentClass = null;\n\nvar ReactHostComponentInjection = {\n // This accepts a class that receives the tag string. This is a catch all\n // that can render any kind of tag.\n injectGenericComponentClass: function (componentClass) {\n genericComponentClass = componentClass;\n },\n // This accepts a text component class that takes the text string to be\n // rendered as props.\n injectTextComponentClass: function (componentClass) {\n textComponentClass = componentClass;\n }\n};\n\n/**\n * Get a host internal component class for a specific tag.\n *\n * @param {ReactElement} element The element to create.\n * @return {function} The internal class constructor function.\n */\nfunction createInternalComponent(element) {\n !genericComponentClass ? process.env.NODE_ENV !== 'production' ? invariant(false, 'There is no registered component for the tag %s', element.type) : _prodInvariant('111', element.type) : void 0;\n return new genericComponentClass(element);\n}\n\n/**\n * @param {ReactText} text\n * @return {ReactComponent}\n */\nfunction createInstanceForText(text) {\n return new textComponentClass(text);\n}\n\n/**\n * @param {ReactComponent} component\n * @return {boolean}\n */\nfunction isTextComponent(component) {\n return component instanceof textComponentClass;\n}\n\nvar ReactHostComponent = {\n createInternalComponent: createInternalComponent,\n createInstanceForText: createInstanceForText,\n isTextComponent: isTextComponent,\n injection: ReactHostComponentInjection\n};\n\nmodule.exports = ReactHostComponent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar getIteratorFn = require('./getIteratorFn');\nvar invariant = require('fbjs/lib/invariant');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar warning = require('fbjs/lib/warning');\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (process.env.NODE_ENV !== 'production') {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = \" It looks like you're using an element created by a different \" + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nfunction isNative(fn) {\n // Based on isNative() from Lodash\n var funcToString = Function.prototype.toString;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var reIsNative = RegExp('^' + funcToString\n // Take an example native function source for comparison\n .call(hasOwnProperty\n // Strip regex characters so we can use it for regex\n ).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&'\n // Remove hasOwnProperty from the template to make it generic\n ).replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n try {\n var source = funcToString.call(fn);\n return reIsNative.test(source);\n } catch (err) {\n return false;\n }\n}\n\nvar canUseCollections =\n// Array.from\ntypeof Array.from === 'function' &&\n// Map\ntypeof Map === 'function' && isNative(Map) &&\n// Map.prototype.keys\nMap.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&\n// Set\ntypeof Set === 'function' && isNative(Set) &&\n// Set.prototype.keys\nSet.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);\n\nvar setItem;\nvar getItem;\nvar removeItem;\nvar getItemIDs;\nvar addRoot;\nvar removeRoot;\nvar getRootIDs;\n\nif (canUseCollections) {\n var itemMap = new Map();\n var rootIDSet = new Set();\n\n setItem = function (id, item) {\n itemMap.set(id, item);\n };\n getItem = function (id) {\n return itemMap.get(id);\n };\n removeItem = function (id) {\n itemMap['delete'](id);\n };\n getItemIDs = function () {\n return Array.from(itemMap.keys());\n };\n\n addRoot = function (id) {\n rootIDSet.add(id);\n };\n removeRoot = function (id) {\n rootIDSet['delete'](id);\n };\n getRootIDs = function () {\n return Array.from(rootIDSet.keys());\n };\n} else {\n var itemByKey = {};\n var rootByKey = {};\n\n // Use non-numeric keys to prevent V8 performance issues:\n // https://github.com/facebook/react/pull/7232\n var getKeyFromID = function (id) {\n return '.' + id;\n };\n var getIDFromKey = function (key) {\n return parseInt(key.substr(1), 10);\n };\n\n setItem = function (id, item) {\n var key = getKeyFromID(id);\n itemByKey[key] = item;\n };\n getItem = function (id) {\n var key = getKeyFromID(id);\n return itemByKey[key];\n };\n removeItem = function (id) {\n var key = getKeyFromID(id);\n delete itemByKey[key];\n };\n getItemIDs = function () {\n return Object.keys(itemByKey).map(getIDFromKey);\n };\n\n addRoot = function (id) {\n var key = getKeyFromID(id);\n rootByKey[key] = true;\n };\n removeRoot = function (id) {\n var key = getKeyFromID(id);\n delete rootByKey[key];\n };\n getRootIDs = function () {\n return Object.keys(rootByKey).map(getIDFromKey);\n };\n}\n\nvar unmountedIDs = [];\n\nfunction purgeDeep(id) {\n var item = getItem(id);\n if (item) {\n var childIDs = item.childIDs;\n\n removeItem(id);\n childIDs.forEach(purgeDeep);\n }\n}\n\nfunction describeComponentFrame(name, source, ownerName) {\n return '\\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n}\n\nfunction getDisplayName(element) {\n if (element == null) {\n return '#empty';\n } else if (typeof element === 'string' || typeof element === 'number') {\n return '#text';\n } else if (typeof element.type === 'string') {\n return element.type;\n } else {\n return element.type.displayName || element.type.name || 'Unknown';\n }\n}\n\nfunction describeID(id) {\n var name = ReactComponentTreeHook.getDisplayName(id);\n var element = ReactComponentTreeHook.getElement(id);\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var ownerName;\n if (ownerID) {\n ownerName = ReactComponentTreeHook.getDisplayName(ownerID);\n }\n process.env.NODE_ENV !== 'production' ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;\n return describeComponentFrame(name, element && element._source, ownerName);\n}\n\nvar ReactComponentTreeHook = {\n onSetChildren: function (id, nextChildIDs) {\n var item = getItem(id);\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.childIDs = nextChildIDs;\n\n for (var i = 0; i < nextChildIDs.length; i++) {\n var nextChildID = nextChildIDs[i];\n var nextChild = getItem(nextChildID);\n !nextChild ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0;\n !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0;\n !nextChild.isMounted ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;\n if (nextChild.parentID == null) {\n nextChild.parentID = id;\n // TODO: This shouldn't be necessary but mounting a new root during in\n // componentWillMount currently causes not-yet-mounted components to\n // be purged from our tree data so their parent id is missing.\n }\n !(nextChild.parentID === id) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0;\n }\n },\n onBeforeMountComponent: function (id, element, parentID) {\n var item = {\n element: element,\n parentID: parentID,\n text: null,\n childIDs: [],\n isMounted: false,\n updateCount: 0\n };\n setItem(id, item);\n },\n onBeforeUpdateComponent: function (id, element) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.element = element;\n },\n onMountComponent: function (id) {\n var item = getItem(id);\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.isMounted = true;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n addRoot(id);\n }\n },\n onUpdateComponent: function (id) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.updateCount++;\n },\n onUnmountComponent: function (id) {\n var item = getItem(id);\n if (item) {\n // We need to check if it exists.\n // `item` might not exist if it is inside an error boundary, and a sibling\n // error boundary child threw while mounting. Then this instance never\n // got a chance to mount, but it still gets an unmounting event during\n // the error boundary cleanup.\n item.isMounted = false;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n removeRoot(id);\n }\n }\n unmountedIDs.push(id);\n },\n purgeUnmountedComponents: function () {\n if (ReactComponentTreeHook._preventPurging) {\n // Should only be used for testing.\n return;\n }\n\n for (var i = 0; i < unmountedIDs.length; i++) {\n var id = unmountedIDs[i];\n purgeDeep(id);\n }\n unmountedIDs.length = 0;\n },\n isMounted: function (id) {\n var item = getItem(id);\n return item ? item.isMounted : false;\n },\n getCurrentStackAddendum: function (topElement) {\n var info = '';\n if (topElement) {\n var name = getDisplayName(topElement);\n var owner = topElement._owner;\n info += describeComponentFrame(name, topElement._source, owner && owner.getName());\n }\n\n var currentOwner = ReactCurrentOwner.current;\n var id = currentOwner && currentOwner._debugID;\n\n info += ReactComponentTreeHook.getStackAddendumByID(id);\n return info;\n },\n getStackAddendumByID: function (id) {\n var info = '';\n while (id) {\n info += describeID(id);\n id = ReactComponentTreeHook.getParentID(id);\n }\n return info;\n },\n getChildIDs: function (id) {\n var item = getItem(id);\n return item ? item.childIDs : [];\n },\n getDisplayName: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element) {\n return null;\n }\n return getDisplayName(element);\n },\n getElement: function (id) {\n var item = getItem(id);\n return item ? item.element : null;\n },\n getOwnerID: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element || !element._owner) {\n return null;\n }\n return element._owner._debugID;\n },\n getParentID: function (id) {\n var item = getItem(id);\n return item ? item.parentID : null;\n },\n getSource: function (id) {\n var item = getItem(id);\n var element = item ? item.element : null;\n var source = element != null ? element._source : null;\n return source;\n },\n getText: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (typeof element === 'string') {\n return element;\n } else if (typeof element === 'number') {\n return '' + element;\n } else {\n return null;\n }\n },\n getUpdateCount: function (id) {\n var item = getItem(id);\n return item ? item.updateCount : 0;\n },\n\n\n getRootIDs: getRootIDs,\n getRegisteredIDs: getItemIDs,\n\n pushNonStandardWarningStack: function (isCreatingElement, currentSource) {\n if (typeof console.reactStack !== 'function') {\n return;\n }\n\n var stack = [];\n var currentOwner = ReactCurrentOwner.current;\n var id = currentOwner && currentOwner._debugID;\n\n try {\n if (isCreatingElement) {\n stack.push({\n name: id ? ReactComponentTreeHook.getDisplayName(id) : null,\n fileName: currentSource ? currentSource.fileName : null,\n lineNumber: currentSource ? currentSource.lineNumber : null\n });\n }\n\n while (id) {\n var element = ReactComponentTreeHook.getElement(id);\n var parentID = ReactComponentTreeHook.getParentID(id);\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var ownerName = ownerID ? ReactComponentTreeHook.getDisplayName(ownerID) : null;\n var source = element && element._source;\n stack.push({\n name: ownerName,\n fileName: source ? source.fileName : null,\n lineNumber: source ? source.lineNumber : null\n });\n id = parentID;\n }\n } catch (err) {\n // Internal state is messed up.\n // Stop building the stack (it's just a nice to have).\n }\n\n console.reactStack(stack);\n },\n popNonStandardWarningStack: function () {\n if (typeof console.reactStackEnd !== 'function') {\n return;\n }\n console.reactStackEnd();\n }\n};\n\nmodule.exports = ReactComponentTreeHook;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\nvar Transaction = require('./Transaction');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactServerUpdateQueue = require('./ReactServerUpdateQueue');\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [];\n\nif (process.env.NODE_ENV !== 'production') {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\nvar noopCallbackQueue = {\n enqueue: function () {}\n};\n\n/**\n * @class ReactServerRenderingTransaction\n * @param {boolean} renderToStaticMarkup\n */\nfunction ReactServerRenderingTransaction(renderToStaticMarkup) {\n this.reinitializeTransaction();\n this.renderToStaticMarkup = renderToStaticMarkup;\n this.useCreateElement = false;\n this.updateQueue = new ReactServerUpdateQueue(this);\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array} Empty list of operation wrap procedures.\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return noopCallbackQueue;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return this.updateQueue;\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {},\n\n checkpoint: function () {},\n\n rollback: function () {}\n};\n\n_assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactServerRenderingTransaction);\n\nmodule.exports = ReactServerRenderingTransaction;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactUpdates = require('./ReactUpdates');\nvar Transaction = require('./Transaction');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\n\nvar RESET_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: function () {\n ReactDefaultBatchingStrategy.isBatchingUpdates = false;\n }\n};\n\nvar FLUSH_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)\n};\n\nvar TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];\n\nfunction ReactDefaultBatchingStrategyTransaction() {\n this.reinitializeTransaction();\n}\n\n_assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n }\n});\n\nvar transaction = new ReactDefaultBatchingStrategyTransaction();\n\nvar ReactDefaultBatchingStrategy = {\n isBatchingUpdates: false,\n\n /**\n * Call the provided function in a context within which calls to `setState`\n * and friends are batched such that components aren't updated unnecessarily.\n */\n batchedUpdates: function (callback, a, b, c, d, e) {\n var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;\n\n ReactDefaultBatchingStrategy.isBatchingUpdates = true;\n\n // The code is written this way to avoid extra allocations\n if (alreadyBatchingUpdates) {\n return callback(a, b, c, d, e);\n } else {\n return transaction.perform(callback, null, a, b, c, d, e);\n }\n }\n};\n\nmodule.exports = ReactDefaultBatchingStrategy;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Upstream version of event listener. Does not take into account specific\n * nature of platform.\n */\nvar EventListener = {\n /**\n * Listen to DOM events during the bubble phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n listen: function listen(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, false);\n }\n };\n } else if (target.attachEvent) {\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function remove() {\n target.detachEvent('on' + eventType, callback);\n }\n };\n }\n },\n\n /**\n * Listen to DOM events during the capture phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n capture: function capture(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, true);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, true);\n }\n };\n } else {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.');\n }\n return {\n remove: emptyFunction\n };\n }\n },\n\n registerDefault: function registerDefault() {}\n};\n\nmodule.exports = EventListener;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDOMSelection = require('./ReactDOMSelection');\n\nvar containsNode = require('fbjs/lib/containsNode');\nvar focusNode = require('fbjs/lib/focusNode');\nvar getActiveElement = require('fbjs/lib/getActiveElement');\n\nfunction isInDocument(node) {\n return containsNode(document.documentElement, node);\n}\n\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\nvar ReactInputSelection = {\n hasSelectionCapabilities: function (elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true');\n },\n\n getSelectionInformation: function () {\n var focusedElem = getActiveElement();\n return {\n focusedElem: focusedElem,\n selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null\n };\n },\n\n /**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\n restoreSelection: function (priorSelectionInformation) {\n var curFocusedElem = getActiveElement();\n var priorFocusedElem = priorSelectionInformation.focusedElem;\n var priorSelectionRange = priorSelectionInformation.selectionRange;\n if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {\n ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);\n }\n focusNode(priorFocusedElem);\n }\n },\n\n /**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\n getSelection: function (input) {\n var selection;\n\n if ('selectionStart' in input) {\n // Modern browser with input or textarea.\n selection = {\n start: input.selectionStart,\n end: input.selectionEnd\n };\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n // IE8 input.\n var range = document.selection.createRange();\n // There can only be one selection per document in IE, so it must\n // be in our element.\n if (range.parentElement() === input) {\n selection = {\n start: -range.moveStart('character', -input.value.length),\n end: -range.moveEnd('character', -input.value.length)\n };\n }\n } else {\n // Content editable or old IE textarea.\n selection = ReactDOMSelection.getOffsets(input);\n }\n\n return selection || { start: 0, end: 0 };\n },\n\n /**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input Set selection bounds of this input or textarea\n * -@offsets Object of same form that is returned from get*\n */\n setSelection: function (input, offsets) {\n var start = offsets.start;\n var end = offsets.end;\n if (end === undefined) {\n end = start;\n }\n\n if ('selectionStart' in input) {\n input.selectionStart = start;\n input.selectionEnd = Math.min(end, input.value.length);\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n var range = input.createTextRange();\n range.collapse(true);\n range.moveStart('character', start);\n range.moveEnd('character', end - start);\n range.select();\n } else {\n ReactDOMSelection.setOffsets(input, offsets);\n }\n }\n};\n\nmodule.exports = ReactInputSelection;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\nfunction getActiveElement(doc) /*?DOMElement*/{\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n if (typeof doc === 'undefined') {\n return null;\n }\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\nmodule.exports = getActiveElement;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar DOMProperty = require('./DOMProperty');\nvar React = require('react/lib/React');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMContainerInfo = require('./ReactDOMContainerInfo');\nvar ReactDOMFeatureFlags = require('./ReactDOMFeatureFlags');\nvar ReactFeatureFlags = require('./ReactFeatureFlags');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMarkupChecksum = require('./ReactMarkupChecksum');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar invariant = require('fbjs/lib/invariant');\nvar setInnerHTML = require('./setInnerHTML');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar warning = require('fbjs/lib/warning');\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOC_NODE_TYPE = 9;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\nvar instancesByReactRootID = {};\n\n/**\n * Finds the index of the first character\n * that's not common between the two given strings.\n *\n * @return {number} the index of the character where the strings diverge\n */\nfunction firstDifferenceIndex(string1, string2) {\n var minLen = Math.min(string1.length, string2.length);\n for (var i = 0; i < minLen; i++) {\n if (string1.charAt(i) !== string2.charAt(i)) {\n return i;\n }\n }\n return string1.length === string2.length ? -1 : minLen;\n}\n\n/**\n * @param {DOMElement|DOMDocument} container DOM element that may contain\n * a React component\n * @return {?*} DOM element that may have the reactRoot ID, or null.\n */\nfunction getReactRootElementInContainer(container) {\n if (!container) {\n return null;\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n return container.documentElement;\n } else {\n return container.firstChild;\n }\n}\n\nfunction internalGetID(node) {\n // If node is something like a window, document, or text node, none of\n // which support attributes or a .getAttribute method, gracefully return\n // the empty string, as if the attribute were missing.\n return node.getAttribute && node.getAttribute(ATTR_NAME) || '';\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {ReactReconcileTransaction} transaction\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) {\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var wrappedElement = wrapperInstance._currentElement.props.child;\n var type = wrappedElement.type;\n markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name);\n console.time(markerName);\n }\n\n var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */\n );\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance;\n ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */\n !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement);\n transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context);\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * Unmounts a component and removes it from the DOM.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {DOMElement} container DOM element to unmount from.\n * @final\n * @internal\n * @see {ReactMount.unmountComponentAtNode}\n */\nfunction unmountComponentFromNode(instance, container, safely) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onBeginFlush();\n }\n ReactReconciler.unmountComponent(instance, safely);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onEndFlush();\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n container = container.documentElement;\n }\n\n // http://jsperf.com/emptying-a-node\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n}\n\n/**\n * True if the supplied DOM node has a direct React-rendered child that is\n * not a React root element. Useful for warning in `render`,\n * `unmountComponentAtNode`, etc.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM element contains a direct child that was\n * rendered by React but is not a root element.\n * @internal\n */\nfunction hasNonRootReactChild(container) {\n var rootEl = getReactRootElementInContainer(container);\n if (rootEl) {\n var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return !!(inst && inst._hostParent);\n }\n}\n\n/**\n * True if the supplied DOM node is a React DOM element and\n * it has been rendered by another copy of React.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM has been rendered by another copy of React\n * @internal\n */\nfunction nodeIsRenderedByOtherInstance(container) {\n var rootEl = getReactRootElementInContainer(container);\n return !!(rootEl && isReactNode(rootEl) && !ReactDOMComponentTree.getInstanceFromNode(rootEl));\n}\n\n/**\n * True if the supplied DOM node is a valid node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid DOM node.\n * @internal\n */\nfunction isValidContainer(node) {\n return !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE));\n}\n\n/**\n * True if the supplied DOM node is a valid React node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid React DOM node.\n * @internal\n */\nfunction isReactNode(node) {\n return isValidContainer(node) && (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME));\n}\n\nfunction getHostRootInstanceInContainer(container) {\n var rootEl = getReactRootElementInContainer(container);\n var prevHostInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return prevHostInstance && !prevHostInstance._hostParent ? prevHostInstance : null;\n}\n\nfunction getTopLevelWrapperInContainer(container) {\n var root = getHostRootInstanceInContainer(container);\n return root ? root._hostContainerInfo._topLevelWrapper : null;\n}\n\n/**\n * Temporary (?) hack so that we can store all top-level pending updates on\n * composites instead of having to worry about different types of components\n * here.\n */\nvar topLevelRootCounter = 1;\nvar TopLevelWrapper = function () {\n this.rootID = topLevelRootCounter++;\n};\nTopLevelWrapper.prototype.isReactComponent = {};\nif (process.env.NODE_ENV !== 'production') {\n TopLevelWrapper.displayName = 'TopLevelWrapper';\n}\nTopLevelWrapper.prototype.render = function () {\n return this.props.child;\n};\nTopLevelWrapper.isReactTopLevelWrapper = true;\n\n/**\n * Mounting is the process of initializing a React component by creating its\n * representative DOM elements and inserting them into a supplied `container`.\n * Any prior content inside `container` is destroyed in the process.\n *\n * ReactMount.render(\n * component,\n * document.getElementById('container')\n * );\n *\n * <div id=\"container\"> <-- Supplied `container`.\n * <div data-reactid=\".3\"> <-- Rendered reactRoot of React\n * // ... component.\n * </div>\n * </div>\n *\n * Inside of `container`, the first element rendered is the \"reactRoot\".\n */\nvar ReactMount = {\n TopLevelWrapper: TopLevelWrapper,\n\n /**\n * Used by devtools. The keys are not important.\n */\n _instancesByReactRootID: instancesByReactRootID,\n\n /**\n * This is a hook provided to support rendering React components while\n * ensuring that the apparent scroll position of its `container` does not\n * change.\n *\n * @param {DOMElement} container The `container` being rendered into.\n * @param {function} renderCallback This must be called once to do the render.\n */\n scrollMonitor: function (container, renderCallback) {\n renderCallback();\n },\n\n /**\n * Take a component that's already mounted into the DOM and replace its props\n * @param {ReactComponent} prevComponent component instance already in the DOM\n * @param {ReactElement} nextElement component instance to render\n * @param {DOMElement} container container to render into\n * @param {?function} callback function triggered on completion\n */\n _updateRootComponent: function (prevComponent, nextElement, nextContext, container, callback) {\n ReactMount.scrollMonitor(container, function () {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext);\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n });\n\n return prevComponent;\n },\n\n /**\n * Render a new component into the DOM. Hooked by hooks!\n *\n * @param {ReactElement} nextElement element to render\n * @param {DOMElement} container container to render into\n * @param {boolean} shouldReuseMarkup if we should skip the markup insertion\n * @return {ReactComponent} nextComponent\n */\n _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case.\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : _prodInvariant('37') : void 0;\n\n ReactBrowserEventEmitter.ensureScrollValueMonitoring();\n var componentInstance = instantiateReactComponent(nextElement, false);\n\n // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context);\n\n var wrapperID = componentInstance._instance.rootID;\n instancesByReactRootID[wrapperID] = componentInstance;\n\n return componentInstance;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactComponent} parentComponent The conceptual parent of this render tree.\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n !(parentComponent != null && ReactInstanceMap.has(parentComponent)) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'parentComponent must be a valid React Component') : _prodInvariant('38') : void 0;\n return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);\n },\n\n _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render');\n !React.isValidElement(nextElement) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? \" Instead of passing a string like 'div', pass \" + \"React.createElement('div') or <div />.\" : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : // Check if it quacks like an element\n nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : _prodInvariant('39', typeof nextElement === 'string' ? \" Instead of passing a string like 'div', pass \" + \"React.createElement('div') or <div />.\" : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : void 0;\n\n process.env.NODE_ENV !== 'production' ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0;\n\n var nextWrappedElement = React.createElement(TopLevelWrapper, {\n child: nextElement\n });\n\n var nextContext;\n if (parentComponent) {\n var parentInst = ReactInstanceMap.get(parentComponent);\n nextContext = parentInst._processChildContext(parentInst._context);\n } else {\n nextContext = emptyObject;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n\n if (prevComponent) {\n var prevWrappedElement = prevComponent._currentElement;\n var prevElement = prevWrappedElement.props.child;\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n var publicInst = prevComponent._renderedComponent.getPublicInstance();\n var updatedCallback = callback && function () {\n callback.call(publicInst);\n };\n ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback);\n return publicInst;\n } else {\n ReactMount.unmountComponentAtNode(container);\n }\n }\n\n var reactRootElement = getReactRootElementInContainer(container);\n var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement);\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0;\n\n if (!containerHasReactMarkup || reactRootElement.nextSibling) {\n var rootElementSibling = reactRootElement;\n while (rootElementSibling) {\n if (internalGetID(rootElementSibling)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : void 0;\n break;\n }\n rootElementSibling = rootElementSibling.nextSibling;\n }\n }\n }\n\n var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild;\n var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance();\n if (callback) {\n callback.call(component);\n }\n return component;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n render: function (nextElement, container, callback) {\n return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);\n },\n\n /**\n * Unmounts and destroys the React component rendered in the `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode\n *\n * @param {DOMElement} container DOM element containing a React component.\n * @return {boolean} True if a component was found in and unmounted from\n * `container`\n */\n unmountComponentAtNode: function (container) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (Strictly speaking, unmounting won't cause a\n // render but we still don't expect to be in a render call here.)\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : _prodInvariant('40') : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!nodeIsRenderedByOtherInstance(container), \"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by another copy of React.') : void 0;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n if (!prevComponent) {\n // Check if the node being unmounted was rendered by React, but isn't a\n // root node.\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n // Check if the container itself is a React root node.\n var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, \"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0;\n }\n\n return false;\n }\n delete instancesByReactRootID[prevComponent._instance.rootID];\n ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false);\n return true;\n },\n\n _mountImageIntoNode: function (markup, container, instance, shouldReuseMarkup, transaction) {\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : _prodInvariant('41') : void 0;\n\n if (shouldReuseMarkup) {\n var rootElement = getReactRootElementInContainer(container);\n if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {\n ReactDOMComponentTree.precacheNode(instance, rootElement);\n return;\n } else {\n var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\n var rootMarkup = rootElement.outerHTML;\n rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);\n\n var normalizedMarkup = markup;\n if (process.env.NODE_ENV !== 'production') {\n // because rootMarkup is retrieved from the DOM, various normalizations\n // will have occurred which will not be present in `markup`. Here,\n // insert markup into a <div> or <iframe> depending on the container\n // type to perform the same normalizations before comparing.\n var normalizer;\n if (container.nodeType === ELEMENT_NODE_TYPE) {\n normalizer = document.createElement('div');\n normalizer.innerHTML = markup;\n normalizedMarkup = normalizer.innerHTML;\n } else {\n normalizer = document.createElement('iframe');\n document.body.appendChild(normalizer);\n normalizer.contentDocument.write(markup);\n normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML;\n document.body.removeChild(normalizer);\n }\n }\n\n var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup);\n var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);\n\n !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\\'re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\\n%s', difference) : _prodInvariant('42', difference) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, 'React attempted to reuse markup in a container but the ' + 'checksum was invalid. This generally means that you are ' + 'using server rendering and the markup generated on the ' + 'server was not what the client was expecting. React injected ' + 'new markup to compensate which works but you have lost many ' + 'of the benefits of server rendering. Instead, figure out ' + 'why the markup being generated is different on the client ' + 'or server:\\n%s', difference) : void 0;\n }\n }\n }\n\n !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\\'re trying to render a component to the document but you didn\\'t use server rendering. We can\\'t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('43') : void 0;\n\n if (transaction.useCreateElement) {\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n DOMLazyTree.insertTreeBefore(container, markup, null);\n } else {\n setInnerHTML(container, markup);\n ReactDOMComponentTree.precacheNode(instance, container.firstChild);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild);\n if (hostNode._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: hostNode._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n }\n};\n\nmodule.exports = ReactMount;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar validateDOMNesting = require('./validateDOMNesting');\n\nvar DOC_NODE_TYPE = 9;\n\nfunction ReactDOMContainerInfo(topLevelWrapper, node) {\n var info = {\n _topLevelWrapper: topLevelWrapper,\n _idCounter: 1,\n _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null,\n _node: node,\n _tag: node ? node.nodeName.toLowerCase() : null,\n _namespaceURI: node ? node.namespaceURI : null\n };\n if (process.env.NODE_ENV !== 'production') {\n info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null;\n }\n return info;\n}\n\nmodule.exports = ReactDOMContainerInfo;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar adler32 = require('./adler32');\n\nvar TAG_END = /\\/?>/;\nvar COMMENT_START = /^<\\!\\-\\-/;\n\nvar ReactMarkupChecksum = {\n CHECKSUM_ATTR_NAME: 'data-react-checksum',\n\n /**\n * @param {string} markup Markup string\n * @return {string} Markup string with checksum attribute attached\n */\n addChecksumToMarkup: function (markup) {\n var checksum = adler32(markup);\n\n // Add checksum (handle both parent tags, comments and self-closing tags)\n if (COMMENT_START.test(markup)) {\n return markup;\n } else {\n return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '=\"' + checksum + '\"$&');\n }\n },\n\n /**\n * @param {string} markup to use\n * @param {DOMElement} element root React element\n * @returns {boolean} whether or not the markup is the same\n */\n canReuseMarkup: function (markup, element) {\n var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n existingChecksum = existingChecksum && parseInt(existingChecksum, 10);\n var markupChecksum = adler32(markup);\n return markupChecksum === existingChecksum;\n }\n};\n\nmodule.exports = ReactMarkupChecksum;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nmodule.exports = '15.6.2';","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactNodeTypes = require('./ReactNodeTypes');\n\nfunction getHostComponentFromComposite(inst) {\n var type;\n\n while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) {\n inst = inst._renderedComponent;\n }\n\n if (type === ReactNodeTypes.HOST) {\n return inst._renderedComponent;\n } else if (type === ReactNodeTypes.EMPTY) {\n return null;\n }\n}\n\nmodule.exports = getHostComponentFromComposite;","(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var list = this.map[name]\n if (!list) {\n list = []\n this.map[name] = list\n }\n list.push(value)\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n var values = this.map[normalizeName(name)]\n return values ? values[0] : null\n }\n\n Headers.prototype.getAll = function(name) {\n return this.map[normalizeName(name)] || []\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = [normalizeValue(value)]\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n Object.getOwnPropertyNames(this.map).forEach(function(name) {\n this.map[name].forEach(function(value) {\n callback.call(thisArg, value, name, this)\n }, this)\n }, this)\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (typeof input === 'string') {\n this.url = input\n } else {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split('\\r\\n').forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n\"use strict\";\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Matrix = require(\"matrix-js-sdk\");\nvar Room = Matrix.Room;\nvar CallHandler = require('./CallHandler');\n\n// FIXME: this is Riot (Vector) specific code, but will be removed shortly when\n// we switch over to jitsi entirely for video conferencing.\n\n// FIXME: This currently forces Vector to try to hit the matrix.org AS for conferencing.\n// This is bad because it prevents people running their own ASes from being used.\n// This isn't permanent and will be customisable in the future: see the proposal\n// at docs/conferencing.md for more info.\nvar USER_PREFIX = \"fs_\";\nvar DOMAIN = \"matrix.org\";\n\nfunction ConferenceCall(matrixClient, groupChatRoomId) {\n this.client = matrixClient;\n this.groupRoomId = groupChatRoomId;\n this.confUserId = module.exports.getConferenceUserIdForRoom(this.groupRoomId);\n}\n\nConferenceCall.prototype.setup = function () {\n var self = this;\n return this._joinConferenceUser().then(function () {\n return self._getConferenceUserRoom();\n }).then(function (room) {\n // return a call for *this* room to be placed. We also tack on\n // confUserId to speed up lookups (else we'd need to loop every room\n // looking for a 1:1 room with this conf user ID!)\n var call = Matrix.createNewMatrixCall(self.client, room.roomId);\n call.confUserId = self.confUserId;\n call.groupRoomId = self.groupRoomId;\n return call;\n });\n};\n\nConferenceCall.prototype._joinConferenceUser = function () {\n // Make sure the conference user is in the group chat room\n var groupRoom = this.client.getRoom(this.groupRoomId);\n if (!groupRoom) {\n return _bluebird2.default.reject(\"Bad group room ID\");\n }\n var member = groupRoom.getMember(this.confUserId);\n if (member && member.membership === \"join\") {\n return _bluebird2.default.resolve();\n }\n return this.client.invite(this.groupRoomId, this.confUserId);\n};\n\nConferenceCall.prototype._getConferenceUserRoom = function () {\n // Use an existing 1:1 with the conference user; else make one\n var rooms = this.client.getRooms();\n var confRoom = null;\n for (var i = 0; i < rooms.length; i++) {\n var confUser = rooms[i].getMember(this.confUserId);\n if (confUser && confUser.membership === \"join\" && rooms[i].getJoinedMemberCount() === 2) {\n confRoom = rooms[i];\n break;\n }\n }\n if (confRoom) {\n return _bluebird2.default.resolve(confRoom);\n }\n return this.client.createRoom({\n preset: \"private_chat\",\n invite: [this.confUserId]\n }).then(function (res) {\n return new Room(res.room_id, null, client.getUserId());\n });\n};\n\n/**\n * Check if this user ID is in fact a conference bot.\n * @param {string} userId The user ID to check.\n * @return {boolean} True if it is a conference bot.\n */\nmodule.exports.isConferenceUser = function (userId) {\n if (userId.indexOf(\"@\" + USER_PREFIX) !== 0) {\n return false;\n }\n var base64part = userId.split(\":\")[0].substring(1 + USER_PREFIX.length);\n if (base64part) {\n var decoded = new Buffer(base64part, \"base64\").toString();\n // ! $STUFF : $STUFF\n return (/^!.+:.+/.test(decoded)\n );\n }\n return false;\n};\n\nmodule.exports.getConferenceUserIdForRoom = function (roomId) {\n // abuse browserify's core node Buffer support (strip padding ='s)\n var base64RoomId = new Buffer(roomId).toString(\"base64\").replace(/=/g, \"\");\n return \"@\" + USER_PREFIX + base64RoomId + \":\" + DOMAIN;\n};\n\nmodule.exports.createNewMatrixCall = function (client, roomId) {\n var confCall = new ConferenceCall(client, roomId);\n return confCall.setup();\n};\n\nmodule.exports.getConferenceCallForRoom = function (roomId) {\n // search for a conference 1:1 call for this group chat room ID\n var activeCall = CallHandler.getAnyActiveCall();\n if (activeCall && activeCall.confUserId) {\n var thisRoomConfUserId = module.exports.getConferenceUserIdForRoom(roomId);\n if (thisRoomConfUserId === activeCall.confUserId) {\n return activeCall;\n }\n }\n return null;\n};\n\nmodule.exports.ConferenceCall = ConferenceCall;\n\nmodule.exports.slot = 'conference';\n//# sourceMappingURL=VectorConferenceHandler.js.map","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/** @module ContentHelpers */\n\nmodule.exports = {\n /**\n * Generates the content for a HTML Message event\n * @param {string} body the plaintext body of the message\n * @param {string} htmlBody the HTML representation of the message\n * @returns {{msgtype: string, format: string, body: string, formatted_body: string}}\n */\n makeHtmlMessage: function makeHtmlMessage(body, htmlBody) {\n return {\n msgtype: \"m.text\",\n format: \"org.matrix.custom.html\",\n body: body,\n formatted_body: htmlBody\n };\n },\n\n /**\n * Generates the content for a HTML Notice event\n * @param {string} body the plaintext body of the notice\n * @param {string} htmlBody the HTML representation of the notice\n * @returns {{msgtype: string, format: string, body: string, formatted_body: string}}\n */\n makeHtmlNotice: function makeHtmlNotice(body, htmlBody) {\n return {\n msgtype: \"m.notice\",\n format: \"org.matrix.custom.html\",\n body: body,\n formatted_body: htmlBody\n };\n },\n\n /**\n * Generates the content for a HTML Emote event\n * @param {string} body the plaintext body of the emote\n * @param {string} htmlBody the HTML representation of the emote\n * @returns {{msgtype: string, format: string, body: string, formatted_body: string}}\n */\n makeHtmlEmote: function makeHtmlEmote(body, htmlBody) {\n return {\n msgtype: \"m.emote\",\n format: \"org.matrix.custom.html\",\n body: body,\n formatted_body: htmlBody\n };\n },\n\n /**\n * Generates the content for a Plaintext Message event\n * @param {string} body the plaintext body of the emote\n * @returns {{msgtype: string, body: string}}\n */\n makeTextMessage: function makeTextMessage(body) {\n return {\n msgtype: \"m.text\",\n body: body\n };\n },\n\n /**\n * Generates the content for a Plaintext Notice event\n * @param {string} body the plaintext body of the notice\n * @returns {{msgtype: string, body: string}}\n */\n makeNotice: function makeNotice(body) {\n return {\n msgtype: \"m.notice\",\n body: body\n };\n },\n\n /**\n * Generates the content for a Plaintext Emote event\n * @param {string} body the plaintext body of the emote\n * @returns {{msgtype: string, body: string}}\n */\n makeEmoteMessage: function makeEmoteMessage(body) {\n return {\n msgtype: \"m.emote\",\n body: body\n };\n }\n};\n//# sourceMappingURL=content-helpers.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * This is an internal module. See {@link MatrixInMemoryStore} for the public class.\n * @module store/memory\n */\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utils = require(\"../utils\");\nvar User = require(\"../models/user\");\n\n\n/**\n * Construct a new in-memory data store for the Matrix Client.\n * @constructor\n * @param {Object=} opts Config options\n * @param {LocalStorage} opts.localStorage The local storage instance to persist\n * some forms of data such as tokens. Rooms will NOT be stored.\n */\nmodule.exports.MatrixInMemoryStore = function MatrixInMemoryStore(opts) {\n opts = opts || {};\n this.rooms = {\n // roomId: Room\n };\n this.groups = {\n // groupId: Group\n };\n this.users = {\n // userId: User\n };\n this.syncToken = null;\n this.filters = {\n // userId: {\n // filterId: Filter\n // }\n };\n this.accountData = {\n // type : content\n };\n this.localStorage = opts.localStorage;\n this._oobMembers = {\n // roomId: [member events]\n };\n this._clientOptions = {};\n};\n\nmodule.exports.MatrixInMemoryStore.prototype = {\n\n /**\n * Retrieve the token to stream from.\n * @return {string} The token or null.\n */\n getSyncToken: function getSyncToken() {\n return this.syncToken;\n },\n\n /** @return {Promise<bool>} whether or not the database was newly created in this session. */\n isNewlyCreated: function isNewlyCreated() {\n return _bluebird2.default.resolve(true);\n },\n\n /**\n * Set the token to stream from.\n * @param {string} token The token to stream from.\n */\n setSyncToken: function setSyncToken(token) {\n this.syncToken = token;\n },\n\n /**\n * Store the given room.\n * @param {Group} group The group to be stored\n */\n storeGroup: function storeGroup(group) {\n this.groups[group.groupId] = group;\n },\n\n /**\n * Retrieve a group by its group ID.\n * @param {string} groupId The group ID.\n * @return {Group} The group or null.\n */\n getGroup: function getGroup(groupId) {\n return this.groups[groupId] || null;\n },\n\n /**\n * Retrieve all known groups.\n * @return {Group[]} A list of groups, which may be empty.\n */\n getGroups: function getGroups() {\n return utils.values(this.groups);\n },\n\n /**\n * Store the given room.\n * @param {Room} room The room to be stored. All properties must be stored.\n */\n storeRoom: function storeRoom(room) {\n this.rooms[room.roomId] = room;\n // add listeners for room member changes so we can keep the room member\n // map up-to-date.\n room.currentState.on(\"RoomState.members\", this._onRoomMember.bind(this));\n // add existing members\n var self = this;\n room.currentState.getMembers().forEach(function (m) {\n self._onRoomMember(null, room.currentState, m);\n });\n },\n\n /**\n * Called when a room member in a room being tracked by this store has been\n * updated.\n * @param {MatrixEvent} event\n * @param {RoomState} state\n * @param {RoomMember} member\n */\n _onRoomMember: function _onRoomMember(event, state, member) {\n if (member.membership === \"invite\") {\n // We do NOT add invited members because people love to typo user IDs\n // which would then show up in these lists (!)\n return;\n }\n\n var user = this.users[member.userId] || new User(member.userId);\n if (member.name) {\n user.setDisplayName(member.name);\n if (member.events.member) {\n user.setRawDisplayName(member.events.member.getDirectionalContent().displayname);\n }\n }\n if (member.events.member && member.events.member.getContent().avatar_url) {\n user.setAvatarUrl(member.events.member.getContent().avatar_url);\n }\n this.users[user.userId] = user;\n },\n\n /**\n * Retrieve a room by its' room ID.\n * @param {string} roomId The room ID.\n * @return {Room} The room or null.\n */\n getRoom: function getRoom(roomId) {\n return this.rooms[roomId] || null;\n },\n\n /**\n * Retrieve all known rooms.\n * @return {Room[]} A list of rooms, which may be empty.\n */\n getRooms: function getRooms() {\n return utils.values(this.rooms);\n },\n\n /**\n * Permanently delete a room.\n * @param {string} roomId\n */\n removeRoom: function removeRoom(roomId) {\n if (this.rooms[roomId]) {\n this.rooms[roomId].removeListener(\"RoomState.members\", this._onRoomMember);\n }\n delete this.rooms[roomId];\n },\n\n /**\n * Retrieve a summary of all the rooms.\n * @return {RoomSummary[]} A summary of each room.\n */\n getRoomSummaries: function getRoomSummaries() {\n return utils.map(utils.values(this.rooms), function (room) {\n return room.summary;\n });\n },\n\n /**\n * Store a User.\n * @param {User} user The user to store.\n */\n storeUser: function storeUser(user) {\n this.users[user.userId] = user;\n },\n\n /**\n * Retrieve a User by its' user ID.\n * @param {string} userId The user ID.\n * @return {User} The user or null.\n */\n getUser: function getUser(userId) {\n return this.users[userId] || null;\n },\n\n /**\n * Retrieve all known users.\n * @return {User[]} A list of users, which may be empty.\n */\n getUsers: function getUsers() {\n return utils.values(this.users);\n },\n\n /**\n * Retrieve scrollback for this room.\n * @param {Room} room The matrix room\n * @param {integer} limit The max number of old events to retrieve.\n * @return {Array<Object>} An array of objects which will be at most 'limit'\n * length and at least 0. The objects are the raw event JSON.\n */\n scrollback: function scrollback(room, limit) {\n return [];\n },\n\n /**\n * Store events for a room. The events have already been added to the timeline\n * @param {Room} room The room to store events for.\n * @param {Array<MatrixEvent>} events The events to store.\n * @param {string} token The token associated with these events.\n * @param {boolean} toStart True if these are paginated results.\n */\n storeEvents: function storeEvents(room, events, token, toStart) {\n // no-op because they've already been added to the room instance.\n },\n\n /**\n * Store a filter.\n * @param {Filter} filter\n */\n storeFilter: function storeFilter(filter) {\n if (!filter) {\n return;\n }\n if (!this.filters[filter.userId]) {\n this.filters[filter.userId] = {};\n }\n this.filters[filter.userId][filter.filterId] = filter;\n },\n\n /**\n * Retrieve a filter.\n * @param {string} userId\n * @param {string} filterId\n * @return {?Filter} A filter or null.\n */\n getFilter: function getFilter(userId, filterId) {\n if (!this.filters[userId] || !this.filters[userId][filterId]) {\n return null;\n }\n return this.filters[userId][filterId];\n },\n\n /**\n * Retrieve a filter ID with the given name.\n * @param {string} filterName The filter name.\n * @return {?string} The filter ID or null.\n */\n getFilterIdByName: function getFilterIdByName(filterName) {\n if (!this.localStorage) {\n return null;\n }\n try {\n return this.localStorage.getItem(\"mxjssdk_memory_filter_\" + filterName);\n } catch (e) {}\n return null;\n },\n\n /**\n * Set a filter name to ID mapping.\n * @param {string} filterName\n * @param {string} filterId\n */\n setFilterIdByName: function setFilterIdByName(filterName, filterId) {\n if (!this.localStorage) {\n return;\n }\n try {\n this.localStorage.setItem(\"mxjssdk_memory_filter_\" + filterName, filterId);\n } catch (e) {}\n },\n\n /**\n * Store user-scoped account data events.\n * N.B. that account data only allows a single event per type, so multiple\n * events with the same type will replace each other.\n * @param {Array<MatrixEvent>} events The events to store.\n */\n storeAccountDataEvents: function storeAccountDataEvents(events) {\n var self = this;\n events.forEach(function (event) {\n self.accountData[event.getType()] = event;\n });\n },\n\n /**\n * Get account data event by event type\n * @param {string} eventType The event type being queried\n * @return {?MatrixEvent} the user account_data event of given type, if any\n */\n getAccountData: function getAccountData(eventType) {\n return this.accountData[eventType];\n },\n\n /**\n * setSyncData does nothing as there is no backing data store.\n *\n * @param {Object} syncData The sync data\n * @return {Promise} An immediately resolved promise.\n */\n setSyncData: function setSyncData(syncData) {\n return _bluebird2.default.resolve();\n },\n\n /**\n * We never want to save becase we have nothing to save to.\n *\n * @return {boolean} If the store wants to save\n */\n wantsSave: function wantsSave() {\n return false;\n },\n\n /**\n * Save does nothing as there is no backing data store.\n */\n save: function save() {},\n\n /**\n * Startup does nothing as this store doesn't require starting up.\n * @return {Promise} An immediately resolved promise.\n */\n startup: function startup() {\n return _bluebird2.default.resolve();\n },\n\n /**\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\n getSavedSync: function getSavedSync() {\n return _bluebird2.default.resolve(null);\n },\n\n /**\n * @return {Promise} If there is a saved sync, the nextBatch token\n * for this sync, otherwise null.\n */\n getSavedSyncToken: function getSavedSyncToken() {\n return _bluebird2.default.resolve(null);\n },\n\n /**\n * Delete all data from this store.\n * @return {Promise} An immediately resolved promise.\n */\n deleteAllData: function deleteAllData() {\n this.rooms = {\n // roomId: Room\n };\n this.users = {\n // userId: User\n };\n this.syncToken = null;\n this.filters = {\n // userId: {\n // filterId: Filter\n // }\n };\n this.accountData = {\n // type : content\n };\n return _bluebird2.default.resolve();\n },\n /**\n * Returns the out-of-band membership events for this room that\n * were previously loaded.\n * @param {string} roomId\n * @returns {event[]} the events, potentially an empty array if OOB loading didn't yield any new members\n * @returns {null} in case the members for this room haven't been stored yet\n */\n getOutOfBandMembers: function getOutOfBandMembers(roomId) {\n return _bluebird2.default.resolve(this._oobMembers[roomId] || null);\n },\n /**\n * Stores the out-of-band membership events for this room. Note that\n * it still makes sense to store an empty array as the OOB status for the room is\n * marked as fetched, and getOutOfBandMembers will return an empty array instead of null\n * @param {string} roomId\n * @param {event[]} membershipEvents the membership events to store\n * @returns {Promise} when all members have been stored\n */\n setOutOfBandMembers: function setOutOfBandMembers(roomId, membershipEvents) {\n this._oobMembers[roomId] = membershipEvents;\n return _bluebird2.default.resolve();\n },\n\n getClientOptions: function getClientOptions() {\n return _bluebird2.default.resolve(this._clientOptions);\n },\n\n storeClientOptions: function storeClientOptions(options) {\n this._clientOptions = (0, _assign2.default)({}, options);\n return _bluebird2.default.resolve();\n }\n};\n//# sourceMappingURL=memory.js.map","\"use strict\";\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _memory = require(\"./memory\");\n\nvar _utils = require(\"../utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _indexeddbLocalBackend = require(\"./indexeddb-local-backend.js\");\n\nvar _indexeddbLocalBackend2 = _interopRequireDefault(_indexeddbLocalBackend);\n\nvar _indexeddbRemoteBackend = require(\"./indexeddb-remote-backend.js\");\n\nvar _indexeddbRemoteBackend2 = _interopRequireDefault(_indexeddbRemoteBackend);\n\nvar _user = require(\"../models/user\");\n\nvar _user2 = _interopRequireDefault(_user);\n\nvar _event = require(\"../models/event\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * This is an internal module. See {@link IndexedDBStore} for the public class.\n * @module store/indexeddb\n */\n\n// If this value is too small we'll be writing very often which will cause\n// noticable stop-the-world pauses. If this value is too big we'll be writing\n// so infrequently that the /sync size gets bigger on reload. Writing more\n// often does not affect the length of the pause since the entire /sync\n// response is persisted each time.\nvar WRITE_DELAY_MS = 1000 * 60 * 5; // once every 5 minutes\n\n\n/**\n * Construct a new Indexed Database store, which extends MatrixInMemoryStore.\n *\n * This store functions like a MatrixInMemoryStore except it periodically persists\n * the contents of the store to an IndexedDB backend.\n *\n * All data is still kept in-memory but can be loaded from disk by calling\n * <code>startup()</code>. This can make startup times quicker as a complete\n * sync from the server is not required. This does not reduce memory usage as all\n * the data is eagerly fetched when <code>startup()</code> is called.\n * <pre>\n * let opts = { localStorage: window.localStorage };\n * let store = new IndexedDBStore();\n * await store.startup(); // load from indexed db\n * let client = sdk.createClient({\n * store: store,\n * });\n * client.startClient();\n * client.on(\"sync\", function(state, prevState, data) {\n * if (state === \"PREPARED\") {\n * console.log(\"Started up, now with go faster stripes!\");\n * }\n * });\n * </pre>\n *\n * @constructor\n * @extends MatrixInMemoryStore\n * @param {Object} opts Options object.\n * @param {Object} opts.indexedDB The Indexed DB interface e.g.\n * <code>window.indexedDB</code>\n * @param {string=} opts.dbName Optional database name. The same name must be used\n * to open the same database.\n * @param {string=} opts.workerScript Optional URL to a script to invoke a web\n * worker with to run IndexedDB queries on the web worker. The IndexedDbStoreWorker\n * class is provided for this purpose and requires the application to provide a\n * trivial wrapper script around it.\n * @param {Object=} opts.workerApi The webWorker API object. If omitted, the global Worker\n * object will be used if it exists.\n * @prop {IndexedDBStoreBackend} backend The backend instance. Call through to\n * this API if you need to perform specific indexeddb actions like deleting the\n * database.\n */\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar IndexedDBStore = function IndexedDBStore(opts) {\n _memory.MatrixInMemoryStore.call(this, opts);\n\n if (!opts.indexedDB) {\n throw new Error('Missing required option: indexedDB');\n }\n\n if (opts.workerScript) {\n // try & find a webworker-compatible API\n var workerApi = opts.workerApi;\n if (!workerApi) {\n // default to the global Worker object (which is where it in a browser)\n workerApi = global.Worker;\n }\n this.backend = new _indexeddbRemoteBackend2.default(opts.workerScript, opts.dbName, workerApi);\n } else {\n this.backend = new _indexeddbLocalBackend2.default(opts.indexedDB, opts.dbName);\n }\n\n this.startedUp = false;\n this._syncTs = 0;\n\n // Records the last-modified-time of each user at the last point we saved\n // the database, such that we can derive the set if users that have been\n // modified since we last saved.\n this._userModifiedMap = {\n // user_id : timestamp\n };\n};\n_utils2.default.inherits(IndexedDBStore, _memory.MatrixInMemoryStore);\n\n/**\n * @return {Promise} Resolved when loaded from indexed db.\n */\nIndexedDBStore.prototype.startup = function () {\n var _this = this;\n\n if (this.startedUp) {\n console.log(\"IndexedDBStore.startup: already started\");\n return _bluebird2.default.resolve();\n }\n\n console.log(\"IndexedDBStore.startup: connecting to backend\");\n return this.backend.connect().then(function () {\n console.log(\"IndexedDBStore.startup: loading presence events\");\n return _this.backend.getUserPresenceEvents();\n }).then(function (userPresenceEvents) {\n console.log(\"IndexedDBStore.startup: processing presence events\");\n userPresenceEvents.forEach(function (_ref) {\n var _ref2 = (0, _slicedToArray3.default)(_ref, 2),\n userId = _ref2[0],\n rawEvent = _ref2[1];\n\n var u = new _user2.default(userId);\n if (rawEvent) {\n u.setPresenceEvent(new _event.MatrixEvent(rawEvent));\n }\n _this._userModifiedMap[u.userId] = u.getLastModifiedTime();\n _this.storeUser(u);\n });\n });\n};\n\n/**\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\nIndexedDBStore.prototype.getSavedSync = function () {\n return this.backend.getSavedSync();\n};\n\n/** @return {Promise<bool>} whether or not the database was newly created in this session. */\nIndexedDBStore.prototype.isNewlyCreated = function () {\n return this.backend.isNewlyCreated();\n};\n\n/**\n * @return {Promise} If there is a saved sync, the nextBatch token\n * for this sync, otherwise null.\n */\nIndexedDBStore.prototype.getSavedSyncToken = function () {\n return this.backend.getNextBatchToken();\n},\n\n/**\n * Delete all data from this store.\n * @return {Promise} Resolves if the data was deleted from the database.\n */\nIndexedDBStore.prototype.deleteAllData = function () {\n _memory.MatrixInMemoryStore.prototype.deleteAllData.call(this);\n return this.backend.clearDatabase().then(function () {\n console.log(\"Deleted indexeddb data.\");\n }, function (err) {\n console.error(\"Failed to delete indexeddb data: \" + err);\n throw err;\n });\n};\n\n/**\n * Whether this store would like to save its data\n * Note that obviously whether the store wants to save or\n * not could change between calling this function and calling\n * save().\n *\n * @return {boolean} True if calling save() will actually save\n * (at the time this function is called).\n */\nIndexedDBStore.prototype.wantsSave = function () {\n var now = Date.now();\n return now - this._syncTs > WRITE_DELAY_MS;\n};\n\n/**\n * Possibly write data to the database.\n * @return {Promise} Promise resolves after the write completes\n * (or immediately if no write is performed)\n */\nIndexedDBStore.prototype.save = function () {\n if (this.wantsSave()) {\n return this._reallySave();\n }\n return _bluebird2.default.resolve();\n};\n\nIndexedDBStore.prototype._reallySave = function () {\n this._syncTs = Date.now(); // set now to guard against multi-writes\n\n // work out changed users (this doesn't handle deletions but you\n // can't 'delete' users as they are just presence events).\n var userTuples = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this.getUsers()), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var u = _step.value;\n\n if (this._userModifiedMap[u.userId] === u.getLastModifiedTime()) continue;\n if (!u.events.presence) continue;\n\n userTuples.push([u.userId, u.events.presence.event]);\n\n // note that we've saved this version of the user\n this._userModifiedMap[u.userId] = u.getLastModifiedTime();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return this.backend.syncToDatabase(userTuples).catch(function (err) {\n console.error(\"sync fail:\", err);\n });\n};\n\nIndexedDBStore.prototype.setSyncData = function (syncData) {\n return this.backend.setSyncData(syncData);\n};\n\n/**\n * Returns the out-of-band membership events for this room that\n * were previously loaded.\n * @param {string} roomId\n * @returns {event[]} the events, potentially an empty array if OOB loading didn't yield any new members\n * @returns {null} in case the members for this room haven't been stored yet\n */\nIndexedDBStore.prototype.getOutOfBandMembers = function (roomId) {\n return this.backend.getOutOfBandMembers(roomId);\n};\n\n/**\n * Stores the out-of-band membership events for this room. Note that\n * it still makes sense to store an empty array as the OOB status for the room is\n * marked as fetched, and getOutOfBandMembers will return an empty array instead of null\n * @param {string} roomId\n * @param {event[]} membershipEvents the membership events to store\n * @returns {Promise} when all members have been stored\n */\nIndexedDBStore.prototype.setOutOfBandMembers = function (roomId, membershipEvents) {\n return this.backend.setOutOfBandMembers(roomId, membershipEvents);\n};\n\nIndexedDBStore.prototype.clearOutOfBandMembers = function (roomId) {\n return this.backend.clearOutOfBandMembers(roomId);\n};\n\nIndexedDBStore.prototype.getClientOptions = function () {\n return this.backend.getClientOptions();\n};\n\nIndexedDBStore.prototype.storeClientOptions = function (options) {\n return this.backend.storeClientOptions(options);\n};\n\nmodule.exports.IndexedDBStore = IndexedDBStore;\n//# sourceMappingURL=indexeddb.js.map","\"use strict\";\n\nvar _create = require(\"babel-runtime/core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/reflect/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _setPrototypeOf = require(\"babel-runtime/core-js/reflect/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _construct = require(\"babel-runtime/core-js/reflect/construct\");\n\nvar _construct2 = _interopRequireDefault(_construct);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// can't just do InvalidStoreError extends Error\n// because of http://babeljs.io/docs/usage/caveats/#classes\nfunction InvalidStoreError(reason, value) {\n var message = \"Store is invalid because \" + reason + \", \" + \"please stop the client, delete all data and start the client again\";\n var instance = (0, _construct2.default)(Error, [message]);\n (0, _setPrototypeOf2.default)(instance, (0, _getPrototypeOf2.default)(this));\n instance.reason = reason;\n instance.value = value;\n return instance;\n}\n\nInvalidStoreError.TOGGLED_LAZY_LOADING = \"TOGGLED_LAZY_LOADING\";\n\nInvalidStoreError.prototype = (0, _create2.default)(Error.prototype, {\n constructor: {\n value: Error,\n enumerable: false,\n writable: true,\n configurable: true\n }\n});\n(0, _setPrototypeOf2.default)(InvalidStoreError, Error);\n\nmodule.exports.InvalidStoreError = InvalidStoreError;\n//# sourceMappingURL=errors.js.map","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _entries = require(\"babel-runtime/core-js/object/entries\");\n\nvar _entries2 = _interopRequireDefault(_entries);\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _set = require(\"babel-runtime/core-js/set\");\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _setDeviceVerification = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(client, userId, deviceId, verified, blocked, known) {\n var dev;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (client._crypto) {\n _context2.next = 2;\n break;\n }\n\n throw new Error(\"End-to-End encryption disabled\");\n\n case 2:\n _context2.next = 4;\n return (0, _bluebird.resolve)(client._crypto.setDeviceVerification(userId, deviceId, verified, blocked, known));\n\n case 4:\n dev = _context2.sent;\n\n client.emit(\"deviceVerificationChanged\", userId, deviceId, dev);\n\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function _setDeviceVerification(_x4, _x5, _x6, _x7, _x8, _x9) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * Set the global override for whether the client should ever send encrypted\n * messages to unverified devices. This provides the default for rooms which\n * do not specify a value.\n *\n * @param {boolean} value whether to blacklist all unverified devices by default\n */\n\n\nvar _ReEmitter = require(\"./ReEmitter\");\n\nvar _ReEmitter2 = _interopRequireDefault(_ReEmitter);\n\nvar _RoomList = require(\"./crypto/RoomList\");\n\nvar _RoomList2 = _interopRequireDefault(_RoomList);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PushProcessor = require('./pushprocessor');\n\n/**\n * This is an internal module. See {@link MatrixClient} for the public class.\n * @module client\n */\nvar EventEmitter = require(\"events\").EventEmitter;\n\nvar url = require('url');\n\nvar httpApi = require(\"./http-api\");\nvar MatrixEvent = require(\"./models/event\").MatrixEvent;\nvar EventStatus = require(\"./models/event\").EventStatus;\nvar EventTimeline = require(\"./models/event-timeline\");\nvar SearchResult = require(\"./models/search-result\");\nvar StubStore = require(\"./store/stub\");\nvar webRtcCall = require(\"./webrtc/call\");\nvar utils = require(\"./utils\");\nvar contentRepo = require(\"./content-repo\");\nvar Filter = require(\"./filter\");\nvar SyncApi = require(\"./sync\");\nvar MatrixBaseApis = require(\"./base-apis\");\nvar MatrixError = httpApi.MatrixError;\nvar ContentHelpers = require(\"./content-helpers\");\n\n// Disable warnings for now: we use deprecated bluebird functions\n// and need to migrate, but they spam the console with warnings.\n_bluebird2.default.config({ warnings: false });\n\nvar SCROLLBACK_DELAY_MS = 3000;\nvar CRYPTO_ENABLED = false;\n\ntry {\n var Crypto = require(\"./crypto\");\n CRYPTO_ENABLED = true;\n} catch (e) {\n console.warn(\"Unable to load crypto module: crypto will be disabled: \" + e);\n}\n\n/**\n * Construct a Matrix Client. Only directly construct this if you want to use\n * custom modules. Normally, {@link createClient} should be used\n * as it specifies 'sensible' defaults for these modules.\n * @constructor\n * @extends {external:EventEmitter}\n * @extends {module:base-apis~MatrixBaseApis}\n *\n * @param {Object} opts The configuration options for this client.\n * @param {string} opts.baseUrl Required. The base URL to the client-server\n * HTTP API.\n * @param {string} opts.idBaseUrl Optional. The base identity server URL for\n * identity server requests.\n * @param {Function} opts.request Required. The function to invoke for HTTP\n * requests. The value of this property is typically <code>require(\"request\")\n * </code> as it returns a function which meets the required interface. See\n * {@link requestFunction} for more information.\n *\n * @param {string} opts.accessToken The access_token for this user.\n *\n * @param {string} opts.userId The user ID for this user.\n *\n * @param {Object=} opts.store The data store to use. If not specified,\n * this client will not store any HTTP responses.\n *\n * @param {string=} opts.deviceId A unique identifier for this device; used for\n * tracking things like crypto keys and access tokens. If not specified,\n * end-to-end crypto will be disabled.\n *\n * @param {Object=} opts.sessionStore A store to be used for end-to-end crypto\n * session data. This should be a {@link\n * module:store/session/webstorage~WebStorageSessionStore|WebStorageSessionStore},\n * or an object implementing the same interface. If not specified,\n * end-to-end crypto will be disabled.\n *\n * @param {Object} opts.scheduler Optional. The scheduler to use. If not\n * specified, this client will not retry requests on failure. This client\n * will supply its own processing function to\n * {@link module:scheduler~MatrixScheduler#setProcessFunction}.\n *\n * @param {Object} opts.queryParams Optional. Extra query parameters to append\n * to all requests with this client. Useful for application services which require\n * <code>?user_id=</code>.\n *\n * @param {Number=} opts.localTimeoutMs Optional. The default maximum amount of\n * time to wait before timing out HTTP requests. If not specified, there is no timeout.\n *\n * @param {boolean} [opts.useAuthorizationHeader = false] Set to true to use\n * Authorization header instead of query param to send the access token to the server.\n *\n * @param {boolean} [opts.timelineSupport = false] Set to true to enable\n * improved timeline support ({@link\n * module:client~MatrixClient#getEventTimeline getEventTimeline}). It is\n * disabled by default for compatibility with older clients - in particular to\n * maintain support for back-paginating the live timeline after a '/sync'\n * result with a gap.\n *\n * @param {module:crypto.store.base~CryptoStore} opts.cryptoStore\n * crypto store implementation.\n */\nfunction MatrixClient(opts) {\n // Allow trailing slash in HS url\n if (opts.baseUrl && opts.baseUrl.endsWith(\"/\")) {\n opts.baseUrl = opts.baseUrl.substr(0, opts.baseUrl.length - 1);\n }\n\n // Allow trailing slash in IS url\n if (opts.idBaseUrl && opts.idBaseUrl.endsWith(\"/\")) {\n opts.idBaseUrl = opts.idBaseUrl.substr(0, opts.idBaseUrl.length - 1);\n }\n\n MatrixBaseApis.call(this, opts);\n\n this.reEmitter = new _ReEmitter2.default(this);\n\n this.store = opts.store || new StubStore();\n\n this.deviceId = opts.deviceId || null;\n\n var userId = opts.userId || null;\n this.credentials = {\n userId: userId\n };\n\n this.scheduler = opts.scheduler;\n if (this.scheduler) {\n var self = this;\n this.scheduler.setProcessFunction(function (eventToSend) {\n var room = self.getRoom(eventToSend.getRoomId());\n if (eventToSend.status !== EventStatus.SENDING) {\n _updatePendingEventStatus(room, eventToSend, EventStatus.SENDING);\n }\n return _sendEventHttpRequest(self, eventToSend);\n });\n }\n this.clientRunning = false;\n\n this.callList = {\n // callId: MatrixCall\n };\n\n // try constructing a MatrixCall to see if we are running in an environment\n // which has WebRTC. If we are, listen for and handle m.call.* events.\n var call = webRtcCall.createNewMatrixCall(this);\n this._supportsVoip = false;\n if (call) {\n setupCallEventHandler(this);\n this._supportsVoip = true;\n }\n this._syncingRetry = null;\n this._syncApi = null;\n this._peekSync = null;\n this._isGuest = false;\n this._ongoingScrollbacks = {};\n this.timelineSupport = Boolean(opts.timelineSupport);\n this.urlPreviewCache = {};\n this._notifTimelineSet = null;\n\n this._crypto = null;\n this._cryptoStore = opts.cryptoStore;\n this._sessionStore = opts.sessionStore;\n\n this._forceTURN = opts.forceTURN || false;\n\n if (CRYPTO_ENABLED) {\n this.olmVersion = Crypto.getOlmVersion();\n }\n\n // List of which rooms have encryption enabled: separate from crypto because\n // we still want to know which rooms are encrypted even if crypto is disabled:\n // we don't want to start sending unencrypted events to them.\n this._roomList = new _RoomList2.default(this._cryptoStore, this._sessionStore);\n\n // The pushprocessor caches useful things, so keep one and re-use it\n this._pushProcessor = new PushProcessor(this);\n\n this._serverSupportsLazyLoading = null;\n}\nutils.inherits(MatrixClient, EventEmitter);\nutils.extend(MatrixClient.prototype, MatrixBaseApis.prototype);\n\n/**\n * Clear any data out of the persistent stores used by the client.\n *\n * @returns {Promise} Promise which resolves when the stores have been cleared.\n */\nMatrixClient.prototype.clearStores = function () {\n if (this._clientRunning) {\n throw new Error(\"Cannot clear stores while client is running\");\n }\n\n var promises = [];\n\n promises.push(this.store.deleteAllData());\n if (this._cryptoStore) {\n promises.push(this._cryptoStore.deleteAllData());\n }\n return _bluebird2.default.all(promises);\n};\n\n/**\n * Get the user-id of the logged-in user\n *\n * @return {?string} MXID for the logged-in user, or null if not logged in\n */\nMatrixClient.prototype.getUserId = function () {\n if (this.credentials && this.credentials.userId) {\n return this.credentials.userId;\n }\n return null;\n};\n\n/**\n * Get the domain for this client's MXID\n * @return {?string} Domain of this MXID\n */\nMatrixClient.prototype.getDomain = function () {\n if (this.credentials && this.credentials.userId) {\n return this.credentials.userId.replace(/^.*?:/, '');\n }\n return null;\n};\n\n/**\n * Get the local part of the current user ID e.g. \"foo\" in \"@foo:bar\".\n * @return {?string} The user ID localpart or null.\n */\nMatrixClient.prototype.getUserIdLocalpart = function () {\n if (this.credentials && this.credentials.userId) {\n return this.credentials.userId.split(\":\")[0].substring(1);\n }\n return null;\n};\n\n/**\n * Get the device ID of this client\n * @return {?string} device ID\n */\nMatrixClient.prototype.getDeviceId = function () {\n return this.deviceId;\n};\n\n/**\n * Check if the runtime environment supports VoIP calling.\n * @return {boolean} True if VoIP is supported.\n */\nMatrixClient.prototype.supportsVoip = function () {\n return this._supportsVoip;\n};\n\n/**\n * Set whether VoIP calls are forced to use only TURN\n * candidates. This is the same as the forceTURN option\n * when creating the client.\n * @param {bool} forceTURN True to force use of TURN servers\n */\nMatrixClient.prototype.setForceTURN = function (forceTURN) {\n this._forceTURN = forceTURN;\n};\n\n/**\n * Get the current sync state.\n * @return {?string} the sync state, which may be null.\n * @see module:client~MatrixClient#event:\"sync\"\n */\nMatrixClient.prototype.getSyncState = function () {\n if (!this._syncApi) {\n return null;\n }\n return this._syncApi.getSyncState();\n};\n\n/**\n * Returns the additional data object associated with\n * the current sync state, or null if there is no\n * such data.\n * Sync errors, if available, are put in the 'error' key of\n * this object.\n * @return {?Object}\n */\nMatrixClient.prototype.getSyncStateData = function () {\n if (!this._syncApi) {\n return null;\n }\n return this._syncApi.getSyncStateData();\n};\n\n/**\n * Return whether the client is configured for a guest account.\n * @return {boolean} True if this is a guest access_token (or no token is supplied).\n */\nMatrixClient.prototype.isGuest = function () {\n return this._isGuest;\n};\n\n/**\n * Return the provided scheduler, if any.\n * @return {?module:scheduler~MatrixScheduler} The scheduler or null\n */\nMatrixClient.prototype.getScheduler = function () {\n return this.scheduler;\n};\n\n/**\n * Set whether this client is a guest account. <b>This method is experimental\n * and may change without warning.</b>\n * @param {boolean} isGuest True if this is a guest account.\n */\nMatrixClient.prototype.setGuest = function (isGuest) {\n // EXPERIMENTAL:\n // If the token is a macaroon, it should be encoded in it that it is a 'guest'\n // access token, which means that the SDK can determine this entirely without\n // the dev manually flipping this flag.\n this._isGuest = isGuest;\n};\n\n/**\n * Retry a backed off syncing request immediately. This should only be used when\n * the user <b>explicitly</b> attempts to retry their lost connection.\n * @return {boolean} True if this resulted in a request being retried.\n */\nMatrixClient.prototype.retryImmediately = function () {\n return this._syncApi.retryImmediately();\n};\n\n/**\n * Return the global notification EventTimelineSet, if any\n *\n * @return {EventTimelineSet} the globl notification EventTimelineSet\n */\nMatrixClient.prototype.getNotifTimelineSet = function () {\n return this._notifTimelineSet;\n};\n\n/**\n * Set the global notification EventTimelineSet\n *\n * @param {EventTimelineSet} notifTimelineSet\n */\nMatrixClient.prototype.setNotifTimelineSet = function (notifTimelineSet) {\n this._notifTimelineSet = notifTimelineSet;\n};\n\n// Crypto bits\n// ===========\n\n/**\n * Initialise support for end-to-end encryption in this client\n *\n * You should call this method after creating the matrixclient, but *before*\n * calling `startClient`, if you want to support end-to-end encryption.\n *\n * It will return a Promise which will resolve when the crypto layer has been\n * successfully initialised.\n */\nMatrixClient.prototype.initCrypto = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var userId, crypto;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!this._crypto) {\n _context.next = 3;\n break;\n }\n\n console.warn(\"Attempt to re-initialise e2e encryption on MatrixClient\");\n return _context.abrupt(\"return\");\n\n case 3:\n if (this._sessionStore) {\n _context.next = 5;\n break;\n }\n\n throw new Error(\"Cannot enable encryption: no sessionStore provided\");\n\n case 5:\n if (this._cryptoStore) {\n _context.next = 7;\n break;\n }\n\n throw new Error(\"Cannot enable encryption: no cryptoStore provided\");\n\n case 7:\n _context.next = 9;\n return (0, _bluebird.resolve)(this._roomList.init());\n\n case 9:\n if (CRYPTO_ENABLED) {\n _context.next = 11;\n break;\n }\n\n throw new Error(\"End-to-end encryption not supported in this js-sdk build: did \" + \"you remember to load the olm library?\");\n\n case 11:\n userId = this.getUserId();\n\n if (!(userId === null)) {\n _context.next = 14;\n break;\n }\n\n throw new Error(\"Cannot enable encryption on MatrixClient with unknown userId: \" + \"ensure userId is passed in createClient().\");\n\n case 14:\n if (!(this.deviceId === null)) {\n _context.next = 16;\n break;\n }\n\n throw new Error(\"Cannot enable encryption on MatrixClient with unknown deviceId: \" + \"ensure deviceId is passed in createClient().\");\n\n case 16:\n crypto = new Crypto(this, this._sessionStore, userId, this.deviceId, this.store, this._cryptoStore, this._roomList);\n\n\n this.reEmitter.reEmit(crypto, [\"crypto.roomKeyRequest\", \"crypto.roomKeyRequestCancellation\", \"crypto.warning\"]);\n\n _context.next = 20;\n return (0, _bluebird.resolve)(crypto.init());\n\n case 20:\n\n // if crypto initialisation was successful, tell it to attach its event\n // handlers.\n crypto.registerEventHandlers(this);\n this._crypto = crypto;\n\n case 22:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n}));\n\n/**\n * Is end-to-end crypto enabled for this client.\n * @return {boolean} True if end-to-end is enabled.\n */\nMatrixClient.prototype.isCryptoEnabled = function () {\n return this._crypto !== null;\n};\n\n/**\n * Get the Ed25519 key for this device\n *\n * @return {?string} base64-encoded ed25519 key. Null if crypto is\n * disabled.\n */\nMatrixClient.prototype.getDeviceEd25519Key = function () {\n if (!this._crypto) {\n return null;\n }\n return this._crypto.getDeviceEd25519Key();\n};\n\n/**\n * Upload the device keys to the homeserver.\n * @return {object} A promise that will resolve when the keys are uploaded.\n */\nMatrixClient.prototype.uploadKeys = function () {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n\n return this._crypto.uploadDeviceKeys();\n};\n\n/**\n * Download the keys for a list of users and stores the keys in the session\n * store.\n * @param {Array} userIds The users to fetch.\n * @param {bool} forceDownload Always download the keys even if cached.\n *\n * @return {Promise} A promise which resolves to a map userId->deviceId->{@link\n * module:crypto~DeviceInfo|DeviceInfo}.\n */\nMatrixClient.prototype.downloadKeys = function (userIds, forceDownload) {\n if (this._crypto === null) {\n return _bluebird2.default.reject(new Error(\"End-to-end encryption disabled\"));\n }\n return this._crypto.downloadKeys(userIds, forceDownload);\n};\n\n/**\n * Get the stored device keys for a user id\n *\n * @param {string} userId the user to list keys for.\n *\n * @return {Promise<module:crypto-deviceinfo[]>} list of devices\n */\nMatrixClient.prototype.getStoredDevicesForUser = function () {\n var _ref2 = (0, _bluebird.method)(function (userId) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n return this._crypto.getStoredDevicesForUser(userId) || [];\n });\n\n return function (_x) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * Get the stored device key for a user id and device id\n *\n * @param {string} userId the user to list keys for.\n * @param {string} deviceId unique identifier for the device\n *\n * @return {Promise<?module:crypto-deviceinfo>} device or null\n */\nMatrixClient.prototype.getStoredDevice = function () {\n var _ref3 = (0, _bluebird.method)(function (userId, deviceId) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n return this._crypto.getStoredDevice(userId, deviceId) || null;\n });\n\n return function (_x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * Mark the given device as verified\n *\n * @param {string} userId owner of the device\n * @param {string} deviceId unique identifier for the device\n *\n * @param {boolean=} verified whether to mark the device as verified. defaults\n * to 'true'.\n *\n * @returns {Promise}\n *\n * @fires module:client~event:MatrixClient\"deviceVerificationChanged\"\n */\nMatrixClient.prototype.setDeviceVerified = function (userId, deviceId, verified) {\n if (verified === undefined) {\n verified = true;\n }\n return _setDeviceVerification(this, userId, deviceId, verified, null);\n};\n\n/**\n * Mark the given device as blocked/unblocked\n *\n * @param {string} userId owner of the device\n * @param {string} deviceId unique identifier for the device\n *\n * @param {boolean=} blocked whether to mark the device as blocked. defaults\n * to 'true'.\n *\n * @returns {Promise}\n *\n * @fires module:client~event:MatrixClient\"deviceVerificationChanged\"\n */\nMatrixClient.prototype.setDeviceBlocked = function (userId, deviceId, blocked) {\n if (blocked === undefined) {\n blocked = true;\n }\n return _setDeviceVerification(this, userId, deviceId, null, blocked);\n};\n\n/**\n * Mark the given device as known/unknown\n *\n * @param {string} userId owner of the device\n * @param {string} deviceId unique identifier for the device\n *\n * @param {boolean=} known whether to mark the device as known. defaults\n * to 'true'.\n *\n * @returns {Promise}\n *\n * @fires module:client~event:MatrixClient\"deviceVerificationChanged\"\n */\nMatrixClient.prototype.setDeviceKnown = function (userId, deviceId, known) {\n if (known === undefined) {\n known = true;\n }\n return _setDeviceVerification(this, userId, deviceId, null, null, known);\n};\n\nMatrixClient.prototype.setGlobalBlacklistUnverifiedDevices = function (value) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n this._crypto.setGlobalBlacklistUnverifiedDevices(value);\n};\n\n/**\n * @return {boolean} whether to blacklist all unverified devices by default\n */\nMatrixClient.prototype.getGlobalBlacklistUnverifiedDevices = function () {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n return this._crypto.getGlobalBlacklistUnverifiedDevices();\n};\n\n/**\n * Get e2e information on the device that sent an event\n *\n * @param {MatrixEvent} event event to be checked\n *\n * @return {Promise<module:crypto/deviceinfo?>}\n */\nMatrixClient.prototype.getEventSenderDeviceInfo = function () {\n var _ref5 = (0, _bluebird.method)(function (event) {\n if (!this._crypto) {\n return null;\n }\n\n return this._crypto.getEventSenderDeviceInfo(event);\n });\n\n return function (_x10) {\n return _ref5.apply(this, arguments);\n };\n}();\n\n/**\n * Check if the sender of an event is verified\n *\n * @param {MatrixEvent} event event to be checked\n *\n * @return {boolean} true if the sender of this event has been verified using\n * {@link module:client~MatrixClient#setDeviceVerified|setDeviceVerified}.\n */\nMatrixClient.prototype.isEventSenderVerified = function () {\n var _ref6 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(event) {\n var device;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return (0, _bluebird.resolve)(this.getEventSenderDeviceInfo(event));\n\n case 2:\n device = _context3.sent;\n\n if (device) {\n _context3.next = 5;\n break;\n }\n\n return _context3.abrupt(\"return\", false);\n\n case 5:\n return _context3.abrupt(\"return\", device.isVerified());\n\n case 6:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function (_x11) {\n return _ref6.apply(this, arguments);\n };\n}();\n\n/**\n * Cancel a room key request for this event if one is ongoing and resend the\n * request.\n * @param {MatrixEvent} event event of which to cancel and resend the room\n * key request.\n */\nMatrixClient.prototype.cancelAndResendEventRoomKeyRequest = function (event) {\n event.cancelAndResendKeyRequest(this._crypto);\n};\n\n/**\n * Enable end-to-end encryption for a room.\n * @param {string} roomId The room ID to enable encryption in.\n * @param {object} config The encryption config for the room.\n * @return {Promise} A promise that will resolve when encryption is set up.\n */\nMatrixClient.prototype.setRoomEncryption = function (roomId, config) {\n if (!this._crypto) {\n throw new Error(\"End-to-End encryption disabled\");\n }\n return this._crypto.setRoomEncryption(roomId, config);\n};\n\n/**\n * Whether encryption is enabled for a room.\n * @param {string} roomId the room id to query.\n * @return {bool} whether encryption is enabled.\n */\nMatrixClient.prototype.isRoomEncrypted = function (roomId) {\n var room = this.getRoom(roomId);\n if (!room) {\n // we don't know about this room, so can't determine if it should be\n // encrypted. Let's assume not.\n return false;\n }\n\n // if there is an 'm.room.encryption' event in this room, it should be\n // encrypted (independently of whether we actually support encryption)\n var ev = room.currentState.getStateEvents(\"m.room.encryption\", \"\");\n if (ev) {\n return true;\n }\n\n // we don't have an m.room.encrypted event, but that might be because\n // the server is hiding it from us. Check the store to see if it was\n // previously encrypted.\n return this._roomList.isRoomEncrypted(roomId);\n};\n\n/**\n * Forces the current outbound group session to be discarded such\n * that another one will be created next time an event is sent.\n *\n * @param {string} roomId The ID of the room to discard the session for\n *\n * This should not normally be necessary.\n */\nMatrixClient.prototype.forceDiscardSession = function (roomId) {\n if (!this._crypto) {\n throw new Error(\"End-to-End encryption disabled\");\n }\n this._crypto.forceDiscardSession(roomId);\n};\n\n/**\n * Get a list containing all of the room keys\n *\n * This should be encrypted before returning it to the user.\n *\n * @return {module:client.Promise} a promise which resolves to a list of\n * session export objects\n */\nMatrixClient.prototype.exportRoomKeys = function () {\n if (!this._crypto) {\n return _bluebird2.default.reject(new Error(\"End-to-end encryption disabled\"));\n }\n return this._crypto.exportRoomKeys();\n};\n\n/**\n * Import a list of room keys previously exported by exportRoomKeys\n *\n * @param {Object[]} keys a list of session export objects\n *\n * @return {module:client.Promise} a promise which resolves when the keys\n * have been imported\n */\nMatrixClient.prototype.importRoomKeys = function (keys) {\n if (!this._crypto) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n return this._crypto.importRoomKeys(keys);\n};\n\n// Group ops\n// =========\n// Operations on groups that come down the sync stream (ie. ones the\n// user is a member of or invited to)\n\n/**\n * Get the group for the given group ID.\n * This function will return a valid group for any group for which a Group event\n * has been emitted.\n * @param {string} groupId The group ID\n * @return {Group} The Group or null if the group is not known or there is no data store.\n */\nMatrixClient.prototype.getGroup = function (groupId) {\n return this.store.getGroup(groupId);\n};\n\n/**\n * Retrieve all known groups.\n * @return {Group[]} A list of groups, or an empty list if there is no data store.\n */\nMatrixClient.prototype.getGroups = function () {\n return this.store.getGroups();\n};\n\n/**\n * Get the config for the media repository.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves with an object containing the config.\n */\nMatrixClient.prototype.getMediaConfig = function (callback) {\n return this._http.requestWithPrefix(callback, \"GET\", \"/config\", undefined, undefined, httpApi.PREFIX_MEDIA_R0);\n};\n\n// Room ops\n// ========\n\n/**\n * Get the room for the given room ID.\n * This function will return a valid room for any room for which a Room event\n * has been emitted. Note in particular that other events, eg. RoomState.members\n * will be emitted for a room before this function will return the given room.\n * @param {string} roomId The room ID\n * @return {Room} The Room or null if it doesn't exist or there is no data store.\n */\nMatrixClient.prototype.getRoom = function (roomId) {\n return this.store.getRoom(roomId);\n};\n\n/**\n * Retrieve all known rooms.\n * @return {Room[]} A list of rooms, or an empty list if there is no data store.\n */\nMatrixClient.prototype.getRooms = function () {\n return this.store.getRooms();\n};\n\n/**\n * Retrieve all rooms that should be displayed to the user\n * This is essentially getRooms() with some rooms filtered out, eg. old versions\n * of rooms that have been replaced or (in future) other rooms that have been\n * marked at the protocol level as not to be displayed to the user.\n * @return {Room[]} A list of rooms, or an empty list if there is no data store.\n */\nMatrixClient.prototype.getVisibleRooms = function () {\n var allRooms = this.store.getRooms();\n\n var replacedRooms = new _set2.default();\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(allRooms), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var r = _step.value;\n\n var createEvent = r.currentState.getStateEvents('m.room.create', '');\n // invites are included in this list and we don't know their create events yet\n if (createEvent) {\n var predecessor = createEvent.getContent()['predecessor'];\n if (predecessor && predecessor['room_id']) {\n replacedRooms.add(predecessor['room_id']);\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return allRooms.filter(function (r) {\n var tombstone = r.currentState.getStateEvents('m.room.tombstone', '');\n if (tombstone && replacedRooms.has(r.roomId)) {\n return false;\n }\n return true;\n });\n};\n\n/**\n * Retrieve a user.\n * @param {string} userId The user ID to retrieve.\n * @return {?User} A user or null if there is no data store or the user does\n * not exist.\n */\nMatrixClient.prototype.getUser = function (userId) {\n return this.store.getUser(userId);\n};\n\n/**\n * Retrieve all known users.\n * @return {User[]} A list of users, or an empty list if there is no data store.\n */\nMatrixClient.prototype.getUsers = function () {\n return this.store.getUsers();\n};\n\n// User Account Data operations\n// ============================\n\n/**\n * Set account data event for the current user.\n * @param {string} eventType The event type\n * @param {Object} contents the contents object for the event\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setAccountData = function (eventType, contents, callback) {\n var path = utils.encodeUri(\"/user/$userId/account_data/$type\", {\n $userId: this.credentials.userId,\n $type: eventType\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, contents);\n};\n\n/**\n * Get account data event of given type for the current user.\n * @param {string} eventType The event type\n * @return {?object} The contents of the given account data event\n */\nMatrixClient.prototype.getAccountData = function (eventType) {\n return this.store.getAccountData(eventType);\n};\n\n/**\n * Gets the users that are ignored by this client\n * @returns {string[]} The array of users that are ignored (empty if none)\n */\nMatrixClient.prototype.getIgnoredUsers = function () {\n var event = this.getAccountData(\"m.ignored_user_list\");\n if (!event || !event.getContent() || !event.getContent()[\"ignored_users\"]) return [];\n return (0, _keys2.default)(event.getContent()[\"ignored_users\"]);\n};\n\n/**\n * Sets the users that the current user should ignore.\n * @param {string[]} userIds the user IDs to ignore\n * @param {module:client.callback} [callback] Optional.\n * @return {module:client.Promise} Resolves: Account data event\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setIgnoredUsers = function (userIds, callback) {\n var content = { ignored_users: {} };\n userIds.map(function (u) {\n return content.ignored_users[u] = {};\n });\n return this.setAccountData(\"m.ignored_user_list\", content, callback);\n};\n\n/**\n * Gets whether or not a specific user is being ignored by this client.\n * @param {string} userId the user ID to check\n * @returns {boolean} true if the user is ignored, false otherwise\n */\nMatrixClient.prototype.isUserIgnored = function (userId) {\n return this.getIgnoredUsers().indexOf(userId) !== -1;\n};\n\n// Room operations\n// ===============\n\n/**\n * Join a room. If you have already joined the room, this will no-op.\n * @param {string} roomIdOrAlias The room ID or room alias to join.\n * @param {Object} opts Options when joining the room.\n * @param {boolean} opts.syncRoom True to do a room initial sync on the resulting\n * room. If false, the <strong>returned Room object will have no current state.\n * </strong> Default: true.\n * @param {boolean} opts.inviteSignUrl If the caller has a keypair 3pid invite,\n * the signing URL is passed in this parameter.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Room object.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.joinRoom = function (roomIdOrAlias, opts, callback) {\n // to help people when upgrading..\n if (utils.isFunction(opts)) {\n throw new Error(\"Expected 'opts' object, got function.\");\n }\n opts = opts || {};\n if (opts.syncRoom === undefined) {\n opts.syncRoom = true;\n }\n\n var room = this.getRoom(roomIdOrAlias);\n if (room && room.hasMembershipState(this.credentials.userId, \"join\")) {\n return _bluebird2.default.resolve(room);\n }\n\n var sign_promise = _bluebird2.default.resolve();\n\n if (opts.inviteSignUrl) {\n sign_promise = this._http.requestOtherUrl(undefined, 'POST', opts.inviteSignUrl, { mxid: this.credentials.userId });\n }\n\n var defer = _bluebird2.default.defer();\n\n var self = this;\n sign_promise.then(function (signed_invite_object) {\n var data = {};\n if (signed_invite_object) {\n data.third_party_signed = signed_invite_object;\n }\n\n var path = utils.encodeUri(\"/join/$roomid\", { $roomid: roomIdOrAlias });\n return self._http.authedRequest(undefined, \"POST\", path, undefined, data);\n }).then(function (res) {\n var roomId = res.room_id;\n var syncApi = new SyncApi(self, self._clientOpts);\n var room = syncApi.createRoom(roomId);\n if (opts.syncRoom) {\n // v2 will do this for us\n // return syncApi.syncRoom(room);\n }\n return _bluebird2.default.resolve(room);\n }).done(function (room) {\n _resolve(callback, defer, room);\n }, function (err) {\n _reject(callback, defer, err);\n });\n return defer.promise;\n};\n\n/**\n * Resend an event.\n * @param {MatrixEvent} event The event to resend.\n * @param {Room} room Optional. The room the event is in. Will update the\n * timeline entry if provided.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.resendEvent = function (event, room) {\n _updatePendingEventStatus(room, event, EventStatus.SENDING);\n return _sendEvent(this, room, event);\n};\n\n/**\n * Cancel a queued or unsent event.\n *\n * @param {MatrixEvent} event Event to cancel\n * @throws Error if the event is not in QUEUED or NOT_SENT state\n */\nMatrixClient.prototype.cancelPendingEvent = function (event) {\n if ([EventStatus.QUEUED, EventStatus.NOT_SENT].indexOf(event.status) < 0) {\n throw new Error(\"cannot cancel an event with status \" + event.status);\n }\n\n // first tell the scheduler to forget about it, if it's queued\n if (this.scheduler) {\n this.scheduler.removeEventFromQueue(event);\n }\n\n // then tell the room about the change of state, which will remove it\n // from the room's list of pending events.\n var room = this.getRoom(event.getRoomId());\n _updatePendingEventStatus(room, event, EventStatus.CANCELLED);\n};\n\n/**\n * @param {string} roomId\n * @param {string} name\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setRoomName = function (roomId, name, callback) {\n return this.sendStateEvent(roomId, \"m.room.name\", { name: name }, undefined, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} topic\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setRoomTopic = function (roomId, topic, callback) {\n return this.sendStateEvent(roomId, \"m.room.topic\", { topic: topic }, undefined, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.getRoomTags = function (roomId, callback) {\n var path = utils.encodeUri(\"/user/$userId/rooms/$roomId/tags/\", {\n $userId: this.credentials.userId,\n $roomId: roomId\n });\n return this._http.authedRequest(callback, \"GET\", path, undefined);\n};\n\n/**\n * @param {string} roomId\n * @param {string} tagName name of room tag to be set\n * @param {object} metadata associated with that tag to be stored\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setRoomTag = function (roomId, tagName, metadata, callback) {\n var path = utils.encodeUri(\"/user/$userId/rooms/$roomId/tags/$tag\", {\n $userId: this.credentials.userId,\n $roomId: roomId,\n $tag: tagName\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, metadata);\n};\n\n/**\n * @param {string} roomId\n * @param {string} tagName name of room tag to be removed\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.deleteRoomTag = function (roomId, tagName, callback) {\n var path = utils.encodeUri(\"/user/$userId/rooms/$roomId/tags/$tag\", {\n $userId: this.credentials.userId,\n $roomId: roomId,\n $tag: tagName\n });\n return this._http.authedRequest(callback, \"DELETE\", path, undefined, undefined);\n};\n\n/**\n * @param {string} roomId\n * @param {string} eventType event type to be set\n * @param {object} content event content\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setRoomAccountData = function (roomId, eventType, content, callback) {\n var path = utils.encodeUri(\"/user/$userId/rooms/$roomId/account_data/$type\", {\n $userId: this.credentials.userId,\n $roomId: roomId,\n $type: eventType\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, content);\n};\n\n/**\n * Set a user's power level.\n * @param {string} roomId\n * @param {string} userId\n * @param {Number} powerLevel\n * @param {MatrixEvent} event\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setPowerLevel = function (roomId, userId, powerLevel, event, callback) {\n var content = {\n users: {}\n };\n if (event && event.getType() === \"m.room.power_levels\") {\n // take a copy of the content to ensure we don't corrupt\n // existing client state with a failed power level change\n content = utils.deepCopy(event.getContent());\n }\n content.users[userId] = powerLevel;\n var path = utils.encodeUri(\"/rooms/$roomId/state/m.room.power_levels\", {\n $roomId: roomId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, content);\n};\n\n/**\n * @param {string} roomId\n * @param {string} eventType\n * @param {Object} content\n * @param {string} txnId Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendEvent = function (roomId, eventType, content, txnId, callback) {\n if (utils.isFunction(txnId)) {\n callback = txnId;txnId = undefined;\n }\n\n if (!txnId) {\n txnId = this.makeTxnId();\n }\n\n console.log(\"sendEvent of type \" + eventType + \" in \" + roomId + \" with txnId \" + txnId);\n\n // we always construct a MatrixEvent when sending because the store and\n // scheduler use them. We'll extract the params back out if it turns out\n // the client has no scheduler or store.\n var room = this.getRoom(roomId);\n var localEvent = new MatrixEvent({\n event_id: \"~\" + roomId + \":\" + txnId,\n user_id: this.credentials.userId,\n room_id: roomId,\n type: eventType,\n origin_server_ts: new Date().getTime(),\n content: content\n });\n localEvent._txnId = txnId;\n localEvent.status = EventStatus.SENDING;\n\n // add this event immediately to the local store as 'sending'.\n if (room) {\n room.addPendingEvent(localEvent, txnId);\n }\n\n return _sendEvent(this, room, localEvent, callback);\n};\n\n// encrypts the event if necessary\n// adds the event to the queue, or sends it\n// marks the event as sent/unsent\n// returns a promise which resolves with the result of the send request\nfunction _sendEvent(client, room, event, callback) {\n // Add an extra Promise.resolve() to turn synchronous exceptions into promise rejections,\n // so that we can handle synchronous and asynchronous exceptions with the\n // same code path.\n return _bluebird2.default.resolve().then(function () {\n var encryptionPromise = _encryptEventIfNeeded(client, event, room);\n\n if (!encryptionPromise) {\n return null;\n }\n\n _updatePendingEventStatus(room, event, EventStatus.ENCRYPTING);\n return encryptionPromise.then(function () {\n _updatePendingEventStatus(room, event, EventStatus.SENDING);\n });\n }).then(function () {\n var promise = void 0;\n // this event may be queued\n if (client.scheduler) {\n // if this returns a promsie then the scheduler has control now and will\n // resolve/reject when it is done. Internally, the scheduler will invoke\n // processFn which is set to this._sendEventHttpRequest so the same code\n // path is executed regardless.\n promise = client.scheduler.queueEvent(event);\n if (promise && client.scheduler.getQueueForEvent(event).length > 1) {\n // event is processed FIFO so if the length is 2 or more we know\n // this event is stuck behind an earlier event.\n _updatePendingEventStatus(room, event, EventStatus.QUEUED);\n }\n }\n\n if (!promise) {\n promise = _sendEventHttpRequest(client, event);\n }\n return promise;\n }).then(function (res) {\n // the request was sent OK\n if (room) {\n room.updatePendingEvent(event, EventStatus.SENT, res.event_id);\n }\n if (callback) {\n callback(null, res);\n }\n return res;\n }, function (err) {\n // the request failed to send.\n console.error(\"Error sending event\", err.stack || err);\n\n try {\n // set the error on the event before we update the status:\n // updating the status emits the event, so the state should be\n // consistent at that point.\n event.error = err;\n _updatePendingEventStatus(room, event, EventStatus.NOT_SENT);\n // also put the event object on the error: the caller will need this\n // to resend or cancel the event\n err.event = event;\n\n if (callback) {\n callback(err);\n }\n } catch (err2) {\n console.error(\"Exception in error handler!\", err2.stack || err);\n }\n throw err;\n });\n}\n\n/**\n * Encrypt an event according to the configuration of the room, if necessary.\n *\n * @param {MatrixClient} client\n *\n * @param {module:models/event.MatrixEvent} event event to be sent\n *\n * @param {module:models/room?} room destination room. Null if the destination\n * is not a room we have seen over the sync pipe.\n *\n * @return {module:client.Promise?} Promise which resolves when the event has been\n * encrypted, or null if nothing was needed\n */\n\nfunction _encryptEventIfNeeded(client, event, room) {\n if (event.isEncrypted()) {\n // this event has already been encrypted; this happens if the\n // encryption step succeeded, but the send step failed on the first\n // attempt.\n return null;\n }\n\n if (!client.isRoomEncrypted(event.getRoomId())) {\n // looks like this room isn't encrypted.\n return null;\n }\n\n if (!client._crypto) {\n throw new Error(\"This room is configured to use encryption, but your client does \" + \"not support encryption.\");\n }\n\n return client._crypto.encryptEvent(event, room);\n}\n\nfunction _updatePendingEventStatus(room, event, newStatus) {\n if (room) {\n room.updatePendingEvent(event, newStatus);\n } else {\n event.status = newStatus;\n }\n}\n\nfunction _sendEventHttpRequest(client, event) {\n var txnId = event._txnId ? event._txnId : client.makeTxnId();\n\n var pathParams = {\n $roomId: event.getRoomId(),\n $eventType: event.getWireType(),\n $stateKey: event.getStateKey(),\n $txnId: txnId\n };\n\n var path = void 0;\n\n if (event.isState()) {\n var pathTemplate = \"/rooms/$roomId/state/$eventType\";\n if (event.getStateKey() && event.getStateKey().length > 0) {\n pathTemplate = \"/rooms/$roomId/state/$eventType/$stateKey\";\n }\n path = utils.encodeUri(pathTemplate, pathParams);\n } else {\n path = utils.encodeUri(\"/rooms/$roomId/send/$eventType/$txnId\", pathParams);\n }\n\n return client._http.authedRequest(undefined, \"PUT\", path, undefined, event.getWireContent()).then(function (res) {\n console.log(\"Event sent to \" + event.getRoomId() + \" with event id \" + res.event_id);\n return res;\n });\n}\n\n/**\n * @param {string} roomId\n * @param {Object} content\n * @param {string} txnId Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendMessage = function (roomId, content, txnId, callback) {\n if (utils.isFunction(txnId)) {\n callback = txnId;txnId = undefined;\n }\n return this.sendEvent(roomId, \"m.room.message\", content, txnId, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} txnId Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendTextMessage = function (roomId, body, txnId, callback) {\n var content = ContentHelpers.makeTextMessage(body);\n return this.sendMessage(roomId, content, txnId, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} txnId Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendNotice = function (roomId, body, txnId, callback) {\n var content = ContentHelpers.makeNotice(body);\n return this.sendMessage(roomId, content, txnId, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} txnId Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendEmoteMessage = function (roomId, body, txnId, callback) {\n var content = ContentHelpers.makeEmoteMessage(body);\n return this.sendMessage(roomId, content, txnId, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} url\n * @param {Object} info\n * @param {string} text\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendImageMessage = function (roomId, url, info, text, callback) {\n if (utils.isFunction(text)) {\n callback = text;text = undefined;\n }\n if (!text) {\n text = \"Image\";\n }\n var content = {\n msgtype: \"m.image\",\n url: url,\n info: info,\n body: text\n };\n return this.sendMessage(roomId, content, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} url\n * @param {Object} info\n * @param {string} text\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendStickerMessage = function (roomId, url, info, text, callback) {\n if (utils.isFunction(text)) {\n callback = text;text = undefined;\n }\n if (!text) {\n text = \"Sticker\";\n }\n var content = {\n url: url,\n info: info,\n body: text\n };\n return this.sendEvent(roomId, \"m.sticker\", content, callback, undefined);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} htmlBody\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendHtmlMessage = function (roomId, body, htmlBody, callback) {\n var content = ContentHelpers.makeHtmlMessage(body, htmlBody);\n return this.sendMessage(roomId, content, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} htmlBody\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendHtmlNotice = function (roomId, body, htmlBody, callback) {\n var content = ContentHelpers.makeHtmlNotice(body, htmlBody);\n return this.sendMessage(roomId, content, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} htmlBody\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendHtmlEmote = function (roomId, body, htmlBody, callback) {\n var content = ContentHelpers.makeHtmlEmote(body, htmlBody);\n return this.sendMessage(roomId, content, callback);\n};\n\n/**\n * Send a receipt.\n * @param {Event} event The event being acknowledged\n * @param {string} receiptType The kind of receipt e.g. \"m.read\"\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendReceipt = function (event, receiptType, callback) {\n if (this.isGuest()) {\n return _bluebird2.default.resolve({}); // guests cannot send receipts so don't bother.\n }\n\n var path = utils.encodeUri(\"/rooms/$roomId/receipt/$receiptType/$eventId\", {\n $roomId: event.getRoomId(),\n $receiptType: receiptType,\n $eventId: event.getId()\n });\n var promise = this._http.authedRequest(callback, \"POST\", path, undefined, {});\n\n var room = this.getRoom(event.getRoomId());\n if (room) {\n room._addLocalEchoReceipt(this.credentials.userId, event, receiptType);\n }\n return promise;\n};\n\n/**\n * Send a read receipt.\n * @param {Event} event The event that has been read.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendReadReceipt = function (event, callback) {\n return this.sendReceipt(event, \"m.read\", callback);\n};\n\n/**\n * Set a marker to indicate the point in a room before which the user has read every\n * event. This can be retrieved from room account data (the event type is `m.fully_read`)\n * and displayed as a horizontal line in the timeline that is visually distinct to the\n * position of the user's own read receipt.\n * @param {string} roomId ID of the room that has been read\n * @param {string} eventId ID of the event that has been read\n * @param {string} rrEvent the event tracked by the read receipt. This is here for\n * convenience because the RR and the RM are commonly updated at the same time as each\n * other. The local echo of this receipt will be done if set. Optional.\n * @return {module:client.Promise} Resolves: the empty object, {}.\n */\nMatrixClient.prototype.setRoomReadMarkers = function (roomId, eventId, rrEvent) {\n var rmEventId = eventId;\n var rrEventId = void 0;\n\n // Add the optional RR update, do local echo like `sendReceipt`\n if (rrEvent) {\n rrEventId = rrEvent.getId();\n var room = this.getRoom(roomId);\n if (room) {\n room._addLocalEchoReceipt(this.credentials.userId, rrEvent, \"m.read\");\n }\n }\n\n return this.setRoomReadMarkersHttpRequest(roomId, rmEventId, rrEventId);\n};\n\n/**\n * Get a preview of the given URL as of (roughly) the given point in time,\n * described as an object with OpenGraph keys and associated values.\n * Attributes may be synthesized where actual OG metadata is lacking.\n * Caches results to prevent hammering the server.\n * @param {string} url The URL to get preview data for\n * @param {Number} ts The preferred point in time that the preview should\n * describe (ms since epoch). The preview returned will either be the most\n * recent one preceding this timestamp if available, or failing that the next\n * most recent available preview.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Object of OG metadata.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n * May return synthesized attributes if the URL lacked OG meta.\n */\nMatrixClient.prototype.getUrlPreview = function (url, ts, callback) {\n var key = ts + \"_\" + url;\n var og = this.urlPreviewCache[key];\n if (og) {\n return _bluebird2.default.resolve(og);\n }\n\n var self = this;\n return this._http.authedRequestWithPrefix(callback, \"GET\", \"/preview_url\", {\n url: url,\n ts: ts\n }, undefined, httpApi.PREFIX_MEDIA_R0).then(function (response) {\n // TODO: expire cache occasionally\n self.urlPreviewCache[key] = response;\n return response;\n });\n};\n\n/**\n * @param {string} roomId\n * @param {boolean} isTyping\n * @param {Number} timeoutMs\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendTyping = function (roomId, isTyping, timeoutMs, callback) {\n if (this.isGuest()) {\n return _bluebird2.default.resolve({}); // guests cannot send typing notifications so don't bother.\n }\n\n var path = utils.encodeUri(\"/rooms/$roomId/typing/$userId\", {\n $roomId: roomId,\n $userId: this.credentials.userId\n });\n var data = {\n typing: isTyping\n };\n if (isTyping) {\n data.timeout = timeoutMs ? timeoutMs : 20000;\n }\n return this._http.authedRequest(callback, \"PUT\", path, undefined, data);\n};\n\n/**\n * @param {string} roomId\n * @param {string} userId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.invite = function (roomId, userId, callback) {\n return _membershipChange(this, roomId, userId, \"invite\", undefined, callback);\n};\n\n/**\n * Invite a user to a room based on their email address.\n * @param {string} roomId The room to invite the user to.\n * @param {string} email The email address to invite.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.inviteByEmail = function (roomId, email, callback) {\n return this.inviteByThreePid(roomId, \"email\", email, callback);\n};\n\n/**\n * Invite a user to a room based on a third-party identifier.\n * @param {string} roomId The room to invite the user to.\n * @param {string} medium The medium to invite the user e.g. \"email\".\n * @param {string} address The address for the specified medium.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.inviteByThreePid = function (roomId, medium, address, callback) {\n var path = utils.encodeUri(\"/rooms/$roomId/invite\", { $roomId: roomId });\n\n var identityServerUrl = this.getIdentityServerUrl(true);\n if (!identityServerUrl) {\n return _bluebird2.default.reject(new MatrixError({\n error: \"No supplied identity server URL\",\n errcode: \"ORG.MATRIX.JSSDK_MISSING_PARAM\"\n }));\n }\n\n return this._http.authedRequest(callback, \"POST\", path, undefined, {\n id_server: identityServerUrl,\n medium: medium,\n address: address\n });\n};\n\n/**\n * @param {string} roomId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.leave = function (roomId, callback) {\n return _membershipChange(this, roomId, undefined, \"leave\", undefined, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} userId\n * @param {string} reason Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.ban = function (roomId, userId, reason, callback) {\n return _membershipChange(this, roomId, userId, \"ban\", reason, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {boolean} deleteRoom True to delete the room from the store on success.\n * Default: true.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.forget = function (roomId, deleteRoom, callback) {\n if (deleteRoom === undefined) {\n deleteRoom = true;\n }\n var promise = _membershipChange(this, roomId, undefined, \"forget\", undefined, callback);\n if (!deleteRoom) {\n return promise;\n }\n var self = this;\n return promise.then(function (response) {\n self.store.removeRoom(roomId);\n self.emit(\"deleteRoom\", roomId);\n return response;\n });\n};\n\n/**\n * @param {string} roomId\n * @param {string} userId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Object (currently empty)\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.unban = function (roomId, userId, callback) {\n // unbanning != set their state to leave: this used to be\n // the case, but was then changed so that leaving was always\n // a revoking of priviledge, otherwise two people racing to\n // kick / ban someone could end up banning and then un-banning\n // them.\n var path = utils.encodeUri(\"/rooms/$roomId/unban\", {\n $roomId: roomId\n });\n var data = {\n user_id: userId\n };\n return this._http.authedRequest(callback, \"POST\", path, undefined, data);\n};\n\n/**\n * @param {string} roomId\n * @param {string} userId\n * @param {string} reason Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.kick = function (roomId, userId, reason, callback) {\n return _setMembershipState(this, roomId, userId, \"leave\", reason, callback);\n};\n\n/**\n * This is an internal method.\n * @param {MatrixClient} client\n * @param {string} roomId\n * @param {string} userId\n * @param {string} membershipValue\n * @param {string} reason\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nfunction _setMembershipState(client, roomId, userId, membershipValue, reason, callback) {\n if (utils.isFunction(reason)) {\n callback = reason;reason = undefined;\n }\n\n var path = utils.encodeUri(\"/rooms/$roomId/state/m.room.member/$userId\", { $roomId: roomId, $userId: userId });\n\n return client._http.authedRequest(callback, \"PUT\", path, undefined, {\n membership: membershipValue,\n reason: reason\n });\n}\n\n/**\n * This is an internal method.\n * @param {MatrixClient} client\n * @param {string} roomId\n * @param {string} userId\n * @param {string} membership\n * @param {string} reason\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nfunction _membershipChange(client, roomId, userId, membership, reason, callback) {\n if (utils.isFunction(reason)) {\n callback = reason;reason = undefined;\n }\n\n var path = utils.encodeUri(\"/rooms/$room_id/$membership\", {\n $room_id: roomId,\n $membership: membership\n });\n return client._http.authedRequest(callback, \"POST\", path, undefined, {\n user_id: userId, // may be undefined e.g. on leave\n reason: reason\n });\n}\n\n/**\n * Obtain a dict of actions which should be performed for this event according\n * to the push rules for this user. Caches the dict on the event.\n * @param {MatrixEvent} event The event to get push actions for.\n * @return {module:pushprocessor~PushAction} A dict of actions to perform.\n */\nMatrixClient.prototype.getPushActionsForEvent = function (event) {\n if (!event.getPushActions()) {\n event.setPushActions(this._pushProcessor.actionsForEvent(event));\n }\n return event.getPushActions();\n};\n\n// Profile operations\n// ==================\n\n/**\n * @param {string} info The kind of info to set (e.g. 'avatar_url')\n * @param {Object} data The JSON object to set.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setProfileInfo = function (info, data, callback) {\n var path = utils.encodeUri(\"/profile/$userId/$info\", {\n $userId: this.credentials.userId,\n $info: info\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, data);\n};\n\n/**\n * @param {string} name\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setDisplayName = function (name, callback) {\n return this.setProfileInfo(\"displayname\", { displayname: name }, callback);\n};\n\n/**\n * @param {string} url\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setAvatarUrl = function (url, callback) {\n return this.setProfileInfo(\"avatar_url\", { avatar_url: url }, callback);\n};\n\n/**\n * Turn an MXC URL into an HTTP one. <strong>This method is experimental and\n * may change.</strong>\n * @param {string} mxcUrl The MXC URL\n * @param {Number} width The desired width of the thumbnail.\n * @param {Number} height The desired height of the thumbnail.\n * @param {string} resizeMethod The thumbnail resize method to use, either\n * \"crop\" or \"scale\".\n * @param {Boolean} allowDirectLinks If true, return any non-mxc URLs\n * directly. Fetching such URLs will leak information about the user to\n * anyone they share a room with. If false, will return null for such URLs.\n * @return {?string} the avatar URL or null.\n */\nMatrixClient.prototype.mxcUrlToHttp = function (mxcUrl, width, height, resizeMethod, allowDirectLinks) {\n return contentRepo.getHttpUriForMxc(this.baseUrl, mxcUrl, width, height, resizeMethod, allowDirectLinks);\n};\n\n/**\n * @param {Object} opts Options to apply\n * @param {string} opts.presence One of \"online\", \"offline\" or \"unavailable\"\n * @param {string} opts.status_msg The status message to attach.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n * @throws If 'presence' isn't a valid presence enum value.\n */\nMatrixClient.prototype.setPresence = function (opts, callback) {\n var path = utils.encodeUri(\"/presence/$userId/status\", {\n $userId: this.credentials.userId\n });\n\n if (typeof opts === \"string\") {\n opts = { presence: opts };\n }\n\n var validStates = [\"offline\", \"online\", \"unavailable\"];\n if (validStates.indexOf(opts.presence) == -1) {\n throw new Error(\"Bad presence value: \" + opts.presence);\n }\n return this._http.authedRequest(callback, \"PUT\", path, undefined, opts);\n};\n\nfunction _presenceList(callback, client, opts, method) {\n var path = utils.encodeUri(\"/presence/list/$userId\", {\n $userId: client.credentials.userId\n });\n return client._http.authedRequest(callback, method, path, undefined, opts);\n}\n\n/**\n* Retrieve current user presence list.\n* @param {module:client.callback} callback Optional.\n* @return {module:client.Promise} Resolves: TODO\n* @return {module:http-api.MatrixError} Rejects: with an error response.\n*/\nMatrixClient.prototype.getPresenceList = function (callback) {\n return _presenceList(callback, this, undefined, \"GET\");\n};\n\n/**\n* Add users to the current user presence list.\n* @param {module:client.callback} callback Optional.\n* @param {string[]} userIds\n* @return {module:client.Promise} Resolves: TODO\n* @return {module:http-api.MatrixError} Rejects: with an error response.\n*/\nMatrixClient.prototype.inviteToPresenceList = function (callback, userIds) {\n var opts = { \"invite\": userIds };\n return _presenceList(callback, this, opts, \"POST\");\n};\n\n/**\n* Drop users from the current user presence list.\n* @param {module:client.callback} callback Optional.\n* @param {string[]} userIds\n* @return {module:client.Promise} Resolves: TODO\n* @return {module:http-api.MatrixError} Rejects: with an error response.\n**/\nMatrixClient.prototype.dropFromPresenceList = function (callback, userIds) {\n var opts = { \"drop\": userIds };\n return _presenceList(callback, this, opts, \"POST\");\n};\n\n/**\n * Retrieve older messages from the given room and put them in the timeline.\n *\n * If this is called multiple times whilst a request is ongoing, the <i>same</i>\n * Promise will be returned. If there was a problem requesting scrollback, there\n * will be a small delay before another request can be made (to prevent tight-looping\n * when there is no connection).\n *\n * @param {Room} room The room to get older messages in.\n * @param {Integer} limit Optional. The maximum number of previous events to\n * pull in. Default: 30.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Room. If you are at the beginning\n * of the timeline, <code>Room.oldState.paginationToken</code> will be\n * <code>null</code>.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.scrollback = function (room, limit, callback) {\n if (utils.isFunction(limit)) {\n callback = limit;limit = undefined;\n }\n limit = limit || 30;\n var timeToWaitMs = 0;\n\n var info = this._ongoingScrollbacks[room.roomId] || {};\n if (info.promise) {\n return info.promise;\n } else if (info.errorTs) {\n var timeWaitedMs = Date.now() - info.errorTs;\n timeToWaitMs = Math.max(SCROLLBACK_DELAY_MS - timeWaitedMs, 0);\n }\n\n if (room.oldState.paginationToken === null) {\n return _bluebird2.default.resolve(room); // already at the start.\n }\n // attempt to grab more events from the store first\n var numAdded = this.store.scrollback(room, limit).length;\n if (numAdded === limit) {\n // store contained everything we needed.\n return _bluebird2.default.resolve(room);\n }\n // reduce the required number of events appropriately\n limit = limit - numAdded;\n\n var defer = _bluebird2.default.defer();\n info = {\n promise: defer.promise,\n errorTs: null\n };\n var self = this;\n // wait for a time before doing this request\n // (which may be 0 in order not to special case the code paths)\n _bluebird2.default.delay(timeToWaitMs).then(function () {\n return self._createMessagesRequest(room.roomId, room.oldState.paginationToken, limit, 'b');\n }).done(function (res) {\n var matrixEvents = utils.map(res.chunk, _PojoToMatrixEventMapper(self));\n if (res.state) {\n var stateEvents = utils.map(res.state, _PojoToMatrixEventMapper(self));\n room.currentState.setUnknownStateEvents(stateEvents);\n }\n room.addEventsToTimeline(matrixEvents, true, room.getLiveTimeline());\n room.oldState.paginationToken = res.end;\n if (res.chunk.length === 0) {\n room.oldState.paginationToken = null;\n }\n self.store.storeEvents(room, matrixEvents, res.end, true);\n self._ongoingScrollbacks[room.roomId] = null;\n _resolve(callback, defer, room);\n }, function (err) {\n self._ongoingScrollbacks[room.roomId] = {\n errorTs: Date.now()\n };\n _reject(callback, defer, err);\n });\n this._ongoingScrollbacks[room.roomId] = info;\n return defer.promise;\n};\n\n/**\n * Get an EventTimeline for the given event\n *\n * <p>If the EventTimelineSet object already has the given event in its store, the\n * corresponding timeline will be returned. Otherwise, a /context request is\n * made, and used to construct an EventTimeline.\n *\n * @param {EventTimelineSet} timelineSet The timelineSet to look for the event in\n * @param {string} eventId The ID of the event to look for\n *\n * @return {module:client.Promise} Resolves:\n * {@link module:models/event-timeline~EventTimeline} including the given\n * event\n */\nMatrixClient.prototype.getEventTimeline = function (timelineSet, eventId) {\n // don't allow any timeline support unless it's been enabled.\n if (!this.timelineSupport) {\n throw new Error(\"timeline support is disabled. Set the 'timelineSupport'\" + \" parameter to true when creating MatrixClient to enable\" + \" it.\");\n }\n\n if (timelineSet.getTimelineForEvent(eventId)) {\n return _bluebird2.default.resolve(timelineSet.getTimelineForEvent(eventId));\n }\n\n var path = utils.encodeUri(\"/rooms/$roomId/context/$eventId\", {\n $roomId: timelineSet.room.roomId,\n $eventId: eventId\n });\n\n var params = undefined;\n if (this._clientOpts.lazyLoadMembers) {\n params = { filter: (0, _stringify2.default)(Filter.LAZY_LOADING_MESSAGES_FILTER) };\n }\n\n // TODO: we should implement a backoff (as per scrollback()) to deal more\n // nicely with HTTP errors.\n var self = this;\n var promise = self._http.authedRequest(undefined, \"GET\", path, params).then(function (res) {\n if (!res.event) {\n throw new Error(\"'event' not in '/context' result - homeserver too old?\");\n }\n\n // by the time the request completes, the event might have ended up in\n // the timeline.\n if (timelineSet.getTimelineForEvent(eventId)) {\n return timelineSet.getTimelineForEvent(eventId);\n }\n\n // we start with the last event, since that's the point at which we\n // have known state.\n // events_after is already backwards; events_before is forwards.\n res.events_after.reverse();\n var events = res.events_after.concat([res.event]).concat(res.events_before);\n var matrixEvents = utils.map(events, self.getEventMapper());\n\n var timeline = timelineSet.getTimelineForEvent(matrixEvents[0].getId());\n if (!timeline) {\n timeline = timelineSet.addTimeline();\n timeline.initialiseState(utils.map(res.state, self.getEventMapper()));\n timeline.getState(EventTimeline.FORWARDS).paginationToken = res.end;\n } else {\n var stateEvents = utils.map(res.state, self.getEventMapper());\n timeline.getState(EventTimeline.BACKWARDS).setUnknownStateEvents(stateEvents);\n }\n timelineSet.addEventsToTimeline(matrixEvents, true, timeline, res.start);\n\n // there is no guarantee that the event ended up in \"timeline\" (we\n // might have switched to a neighbouring timeline) - so check the\n // room's index again. On the other hand, there's no guarantee the\n // event ended up anywhere, if it was later redacted, so we just\n // return the timeline we first thought of.\n var tl = timelineSet.getTimelineForEvent(eventId) || timeline;\n return tl;\n });\n return promise;\n};\n\n/**\n * Makes a request to /messages with the appropriate lazy loading filter set.\n * XXX: if we do get rid of scrollback (as it's not used at the moment),\n * we could inline this method again in paginateEventTimeline as that would\n * then be the only call-site\n * @param {string} roomId\n * @param {string} fromToken\n * @param {number} limit the maximum amount of events the retrieve\n * @param {string} dir 'f' or 'b'\n * @param {Filter} timelineFilter the timeline filter to pass\n * @return {Promise}\n */\nMatrixClient.prototype._createMessagesRequest = function (roomId, fromToken, limit, dir) {\n var timelineFilter = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : undefined;\n\n var path = utils.encodeUri(\"/rooms/$roomId/messages\", { $roomId: roomId });\n if (limit === undefined) {\n limit = 30;\n }\n var params = {\n from: fromToken,\n limit: limit,\n dir: dir\n };\n\n var filter = null;\n if (this._clientOpts.lazyLoadMembers) {\n // create a shallow copy of LAZY_LOADING_MESSAGES_FILTER,\n // so the timelineFilter doesn't get written into it below\n filter = (0, _assign2.default)({}, Filter.LAZY_LOADING_MESSAGES_FILTER);\n }\n if (timelineFilter) {\n // XXX: it's horrific that /messages' filter parameter doesn't match\n // /sync's one - see https://matrix.org/jira/browse/SPEC-451\n filter = filter || {};\n (0, _assign2.default)(filter, timelineFilter.getRoomTimelineFilterComponent());\n }\n if (filter) {\n params.filter = (0, _stringify2.default)(filter);\n }\n return this._http.authedRequest(undefined, \"GET\", path, params);\n};\n\n/**\n * Take an EventTimeline, and back/forward-fill results.\n *\n * @param {module:models/event-timeline~EventTimeline} eventTimeline timeline\n * object to be updated\n * @param {Object} [opts]\n * @param {bool} [opts.backwards = false] true to fill backwards,\n * false to go forwards\n * @param {number} [opts.limit = 30] number of events to request\n *\n * @return {module:client.Promise} Resolves to a boolean: false if there are no\n * events and we reached either end of the timeline; else true.\n */\nMatrixClient.prototype.paginateEventTimeline = function (eventTimeline, opts) {\n var isNotifTimeline = eventTimeline.getTimelineSet() === this._notifTimelineSet;\n\n // TODO: we should implement a backoff (as per scrollback()) to deal more\n // nicely with HTTP errors.\n opts = opts || {};\n var backwards = opts.backwards || false;\n\n if (isNotifTimeline) {\n if (!backwards) {\n throw new Error(\"paginateNotifTimeline can only paginate backwards\");\n }\n }\n\n var dir = backwards ? EventTimeline.BACKWARDS : EventTimeline.FORWARDS;\n\n var token = eventTimeline.getPaginationToken(dir);\n if (!token) {\n // no token - no results.\n return _bluebird2.default.resolve(false);\n }\n\n var pendingRequest = eventTimeline._paginationRequests[dir];\n\n if (pendingRequest) {\n // already a request in progress - return the existing promise\n return pendingRequest;\n }\n\n var path = void 0,\n params = void 0,\n promise = void 0;\n var self = this;\n\n if (isNotifTimeline) {\n path = \"/notifications\";\n params = {\n limit: 'limit' in opts ? opts.limit : 30,\n only: 'highlight'\n };\n\n if (token && token !== \"end\") {\n params.from = token;\n }\n\n promise = this._http.authedRequestWithPrefix(undefined, \"GET\", path, params, undefined, httpApi.PREFIX_UNSTABLE).then(function (res) {\n var token = res.next_token;\n var matrixEvents = [];\n\n for (var i = 0; i < res.notifications.length; i++) {\n var notification = res.notifications[i];\n var event = self.getEventMapper()(notification.event);\n event.setPushActions(PushProcessor.actionListToActionsObject(notification.actions));\n event.event.room_id = notification.room_id; // XXX: gutwrenching\n matrixEvents[i] = event;\n }\n\n eventTimeline.getTimelineSet().addEventsToTimeline(matrixEvents, backwards, eventTimeline, token);\n\n // if we've hit the end of the timeline, we need to stop trying to\n // paginate. We need to keep the 'forwards' token though, to make sure\n // we can recover from gappy syncs.\n if (backwards && !res.next_token) {\n eventTimeline.setPaginationToken(null, dir);\n }\n return res.next_token ? true : false;\n }).finally(function () {\n eventTimeline._paginationRequests[dir] = null;\n });\n eventTimeline._paginationRequests[dir] = promise;\n } else {\n var room = this.getRoom(eventTimeline.getRoomId());\n if (!room) {\n throw new Error(\"Unknown room \" + eventTimeline.getRoomId());\n }\n\n promise = this._createMessagesRequest(eventTimeline.getRoomId(), token, opts.limit, dir, eventTimeline.getFilter());\n promise.then(function (res) {\n if (res.state) {\n var roomState = eventTimeline.getState(dir);\n var stateEvents = utils.map(res.state, self.getEventMapper());\n roomState.setUnknownStateEvents(stateEvents);\n }\n var token = res.end;\n var matrixEvents = utils.map(res.chunk, self.getEventMapper());\n eventTimeline.getTimelineSet().addEventsToTimeline(matrixEvents, backwards, eventTimeline, token);\n\n // if we've hit the end of the timeline, we need to stop trying to\n // paginate. We need to keep the 'forwards' token though, to make sure\n // we can recover from gappy syncs.\n if (backwards && res.end == res.start) {\n eventTimeline.setPaginationToken(null, dir);\n }\n return res.end != res.start;\n }).finally(function () {\n eventTimeline._paginationRequests[dir] = null;\n });\n eventTimeline._paginationRequests[dir] = promise;\n }\n\n return promise;\n};\n\n/**\n * Reset the notifTimelineSet entirely, paginating in some historical notifs as\n * a starting point for subsequent pagination.\n */\nMatrixClient.prototype.resetNotifTimelineSet = function () {\n if (!this._notifTimelineSet) {\n return;\n }\n\n // FIXME: This thing is a total hack, and results in duplicate events being\n // added to the timeline both from /sync and /notifications, and lots of\n // slow and wasteful processing and pagination. The correct solution is to\n // extend /messages or /search or something to filter on notifications.\n\n // use the fictitious token 'end'. in practice we would ideally give it\n // the oldest backwards pagination token from /sync, but /sync doesn't\n // know about /notifications, so we have no choice but to start paginating\n // from the current point in time. This may well overlap with historical\n // notifs which are then inserted into the timeline by /sync responses.\n this._notifTimelineSet.resetLiveTimeline('end', null);\n\n // we could try to paginate a single event at this point in order to get\n // a more valid pagination token, but it just ends up with an out of order\n // timeline. given what a mess this is and given we're going to have duplicate\n // events anyway, just leave it with the dummy token for now.\n /*\n this.paginateNotifTimeline(this._notifTimelineSet.getLiveTimeline(), {\n backwards: true,\n limit: 1\n });\n */\n};\n\n/**\n * Peek into a room and receive updates about the room. This only works if the\n * history visibility for the room is world_readable.\n * @param {String} roomId The room to attempt to peek into.\n * @return {module:client.Promise} Resolves: Room object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.peekInRoom = function (roomId) {\n if (this._peekSync) {\n this._peekSync.stopPeeking();\n }\n this._peekSync = new SyncApi(this, this._clientOpts);\n return this._peekSync.peek(roomId);\n};\n\n/**\n * Stop any ongoing room peeking.\n */\nMatrixClient.prototype.stopPeeking = function () {\n if (this._peekSync) {\n this._peekSync.stopPeeking();\n this._peekSync = null;\n }\n};\n\n/**\n * Set r/w flags for guest access in a room.\n * @param {string} roomId The room to configure guest access in.\n * @param {Object} opts Options\n * @param {boolean} opts.allowJoin True to allow guests to join this room. This\n * implicitly gives guests write access. If false or not given, guests are\n * explicitly forbidden from joining the room.\n * @param {boolean} opts.allowRead True to set history visibility to\n * be world_readable. This gives guests read access *from this point forward*.\n * If false or not given, history visibility is not modified.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setGuestAccess = function (roomId, opts) {\n var writePromise = this.sendStateEvent(roomId, \"m.room.guest_access\", {\n guest_access: opts.allowJoin ? \"can_join\" : \"forbidden\"\n });\n\n var readPromise = _bluebird2.default.resolve();\n if (opts.allowRead) {\n readPromise = this.sendStateEvent(roomId, \"m.room.history_visibility\", {\n history_visibility: \"world_readable\"\n });\n }\n\n return _bluebird2.default.all([readPromise, writePromise]);\n};\n\n// Registration/Login operations\n// =============================\n\n/**\n * Requests an email verification token for the purposes of registration.\n * This API proxies the Identity Server /validate/email/requestToken API,\n * adding registration-specific behaviour. Specifically, if an account with\n * the given email address already exists, it will either send an email\n * to the address informing them of this or return M_THREEPID_IN_USE\n * (which one is up to the Home Server).\n *\n * requestEmailToken calls the equivalent API directly on the ID server,\n * therefore bypassing the registration-specific logic.\n *\n * Parameters and return value are as for requestEmailToken\n\n * @param {string} email As requestEmailToken\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestRegisterEmailToken = function (email, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/register/email/requestToken\", {\n email: email,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Requests a text message verification token for the purposes of registration.\n * This API proxies the Identity Server /validate/msisdn/requestToken API,\n * adding registration-specific behaviour, as with requestRegisterEmailToken.\n *\n * @param {string} phoneCountry The ISO 3166-1 alpha-2 code for the country in which\n * phoneNumber should be parsed relative to.\n * @param {string} phoneNumber The phone number, in national or international format\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestRegisterMsisdnToken = function (phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/register/msisdn/requestToken\", {\n country: phoneCountry,\n phone_number: phoneNumber,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Requests an email verification token for the purposes of adding a\n * third party identifier to an account.\n * This API proxies the Identity Server /validate/email/requestToken API,\n * adding specific behaviour for the addition of email addresses to an\n * account. Specifically, if an account with\n * the given email address already exists, it will either send an email\n * to the address informing them of this or return M_THREEPID_IN_USE\n * (which one is up to the Home Server).\n *\n * requestEmailToken calls the equivalent API directly on the ID server,\n * therefore bypassing the email addition specific logic.\n *\n * @param {string} email As requestEmailToken\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestAdd3pidEmailToken = function (email, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/account/3pid/email/requestToken\", {\n email: email,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Requests a text message verification token for the purposes of adding a\n * third party identifier to an account.\n * This API proxies the Identity Server /validate/email/requestToken API,\n * adding specific behaviour for the addition of phone numbers to an\n * account, as requestAdd3pidEmailToken.\n *\n * @param {string} phoneCountry As requestRegisterMsisdnToken\n * @param {string} phoneNumber As requestRegisterMsisdnToken\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestAdd3pidMsisdnToken = function (phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/account/3pid/msisdn/requestToken\", {\n country: phoneCountry,\n phone_number: phoneNumber,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Requests an email verification token for the purposes of resetting\n * the password on an account.\n * This API proxies the Identity Server /validate/email/requestToken API,\n * adding specific behaviour for the password resetting. Specifically,\n * if no account with the given email address exists, it may either\n * return M_THREEPID_NOT_FOUND or send an email\n * to the address informing them of this (which one is up to the Home Server).\n *\n * requestEmailToken calls the equivalent API directly on the ID server,\n * therefore bypassing the password reset specific logic.\n *\n * @param {string} email As requestEmailToken\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @param {module:client.callback} callback Optional. As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestPasswordEmailToken = function (email, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/account/password/email/requestToken\", {\n email: email,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Requests a text message verification token for the purposes of resetting\n * the password on an account.\n * This API proxies the Identity Server /validate/email/requestToken API,\n * adding specific behaviour for the password resetting, as requestPasswordEmailToken.\n *\n * @param {string} phoneCountry As requestRegisterMsisdnToken\n * @param {string} phoneNumber As requestRegisterMsisdnToken\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestPasswordMsisdnToken = function (phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/account/password/msisdn/requestToken\", {\n country: phoneCountry,\n phone_number: phoneNumber,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Internal utility function for requesting validation tokens from usage-specific\n * requestToken endpoints.\n *\n * @param {string} endpoint The endpoint to send the request to\n * @param {object} params Parameters for the POST request\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype._requestTokenFromEndpoint = function (endpoint, params) {\n var id_server_url = url.parse(this.idBaseUrl);\n if (id_server_url.host === null) {\n throw new Error(\"Invalid ID server URL: \" + this.idBaseUrl);\n }\n\n var postParams = (0, _assign2.default)({}, params, {\n id_server: id_server_url.host\n });\n return this._http.request(undefined, \"POST\", endpoint, undefined, postParams);\n};\n\n// Push operations\n// ===============\n\n/**\n * Get the room-kind push rule associated with a room.\n * @param {string} scope \"global\" or device-specific.\n * @param {string} roomId the id of the room.\n * @return {object} the rule or undefined.\n */\nMatrixClient.prototype.getRoomPushRule = function (scope, roomId) {\n // There can be only room-kind push rule per room\n // and its id is the room id.\n if (this.pushRules) {\n for (var i = 0; i < this.pushRules[scope].room.length; i++) {\n var rule = this.pushRules[scope].room[i];\n if (rule.rule_id === roomId) {\n return rule;\n }\n }\n } else {\n throw new Error(\"SyncApi.sync() must be done before accessing to push rules.\");\n }\n};\n\n/**\n * Set a room-kind muting push rule in a room.\n * The operation also updates MatrixClient.pushRules at the end.\n * @param {string} scope \"global\" or device-specific.\n * @param {string} roomId the id of the room.\n * @param {string} mute the mute state.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setRoomMutePushRule = function (scope, roomId, mute) {\n var self = this;\n var deferred = void 0,\n hasDontNotifyRule = void 0;\n\n // Get the existing room-kind push rule if any\n var roomPushRule = this.getRoomPushRule(scope, roomId);\n if (roomPushRule) {\n if (0 <= roomPushRule.actions.indexOf(\"dont_notify\")) {\n hasDontNotifyRule = true;\n }\n }\n\n if (!mute) {\n // Remove the rule only if it is a muting rule\n if (hasDontNotifyRule) {\n deferred = this.deletePushRule(scope, \"room\", roomPushRule.rule_id);\n }\n } else {\n if (!roomPushRule) {\n deferred = this.addPushRule(scope, \"room\", roomId, {\n actions: [\"dont_notify\"]\n });\n } else if (!hasDontNotifyRule) {\n // Remove the existing one before setting the mute push rule\n // This is a workaround to SYN-590 (Push rule update fails)\n deferred = _bluebird2.default.defer();\n this.deletePushRule(scope, \"room\", roomPushRule.rule_id).done(function () {\n self.addPushRule(scope, \"room\", roomId, {\n actions: [\"dont_notify\"]\n }).done(function () {\n deferred.resolve();\n }, function (err) {\n deferred.reject(err);\n });\n }, function (err) {\n deferred.reject(err);\n });\n\n deferred = deferred.promise;\n }\n }\n\n if (deferred) {\n // Update this.pushRules when the operation completes\n var ruleRefreshDeferred = _bluebird2.default.defer();\n deferred.done(function () {\n self.getPushRules().done(function (result) {\n self.pushRules = result;\n ruleRefreshDeferred.resolve();\n }, function (err) {\n ruleRefreshDeferred.reject(err);\n });\n }, function (err) {\n // Update it even if the previous operation fails. This can help the\n // app to recover when push settings has been modifed from another client\n self.getPushRules().done(function (result) {\n self.pushRules = result;\n ruleRefreshDeferred.reject(err);\n }, function (err2) {\n ruleRefreshDeferred.reject(err);\n });\n });\n return ruleRefreshDeferred.promise;\n }\n};\n\n// Search\n// ======\n\n/**\n * Perform a server-side search for messages containing the given text.\n * @param {Object} opts Options for the search.\n * @param {string} opts.query The text to query.\n * @param {string=} opts.keys The keys to search on. Defaults to all keys. One\n * of \"content.body\", \"content.name\", \"content.topic\".\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.searchMessageText = function (opts, callback) {\n var roomEvents = {\n search_term: opts.query\n };\n\n if ('keys' in opts) {\n roomEvents.keys = opts.keys;\n }\n\n return this.search({\n body: {\n search_categories: {\n room_events: roomEvents\n }\n }\n }, callback);\n};\n\n/**\n * Perform a server-side search for room events.\n *\n * The returned promise resolves to an object containing the fields:\n *\n * * {number} count: estimate of the number of results\n * * {string} next_batch: token for back-pagination; if undefined, there are\n * no more results\n * * {Array} highlights: a list of words to highlight from the stemming\n * algorithm\n * * {Array} results: a list of results\n *\n * Each entry in the results list is a {module:models/search-result.SearchResult}.\n *\n * @param {Object} opts\n * @param {string} opts.term the term to search for\n * @param {Object} opts.filter a JSON filter object to pass in the request\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.searchRoomEvents = function (opts) {\n // TODO: support groups\n\n var body = {\n search_categories: {\n room_events: {\n search_term: opts.term,\n filter: opts.filter,\n order_by: \"recent\",\n event_context: {\n before_limit: 1,\n after_limit: 1,\n include_profile: true\n }\n }\n }\n };\n\n var searchResults = {\n _query: body,\n results: [],\n highlights: []\n };\n\n return this.search({ body: body }).then(this._processRoomEventsSearch.bind(this, searchResults));\n};\n\n/**\n * Take a result from an earlier searchRoomEvents call, and backfill results.\n *\n * @param {object} searchResults the results object to be updated\n * @return {module:client.Promise} Resolves: updated result object\n * @return {Error} Rejects: with an error response.\n */\nMatrixClient.prototype.backPaginateRoomEventsSearch = function (searchResults) {\n // TODO: we should implement a backoff (as per scrollback()) to deal more\n // nicely with HTTP errors.\n\n if (!searchResults.next_batch) {\n return _bluebird2.default.reject(new Error(\"Cannot backpaginate event search any further\"));\n }\n\n if (searchResults.pendingRequest) {\n // already a request in progress - return the existing promise\n return searchResults.pendingRequest;\n }\n\n var searchOpts = {\n body: searchResults._query,\n next_batch: searchResults.next_batch\n };\n\n var promise = this.search(searchOpts).then(this._processRoomEventsSearch.bind(this, searchResults)).finally(function () {\n searchResults.pendingRequest = null;\n });\n searchResults.pendingRequest = promise;\n\n return promise;\n};\n\n/**\n * helper for searchRoomEvents and backPaginateRoomEventsSearch. Processes the\n * response from the API call and updates the searchResults\n *\n * @param {Object} searchResults\n * @param {Object} response\n * @return {Object} searchResults\n * @private\n */\nMatrixClient.prototype._processRoomEventsSearch = function (searchResults, response) {\n var room_events = response.search_categories.room_events;\n\n searchResults.count = room_events.count;\n searchResults.next_batch = room_events.next_batch;\n\n // combine the highlight list with our existing list; build an object\n // to avoid O(N^2) fail\n var highlights = {};\n room_events.highlights.forEach(function (hl) {\n highlights[hl] = 1;\n });\n searchResults.highlights.forEach(function (hl) {\n highlights[hl] = 1;\n });\n\n // turn it back into a list.\n searchResults.highlights = (0, _keys2.default)(highlights);\n\n // append the new results to our existing results\n for (var i = 0; i < room_events.results.length; i++) {\n var sr = SearchResult.fromJson(room_events.results[i], this.getEventMapper());\n searchResults.results.push(sr);\n }\n return searchResults;\n};\n\n/**\n * Populate the store with rooms the user has left.\n * @return {module:client.Promise} Resolves: TODO - Resolved when the rooms have\n * been added to the data store.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.syncLeftRooms = function () {\n // Guard against multiple calls whilst ongoing and multiple calls post success\n if (this._syncedLeftRooms) {\n return _bluebird2.default.resolve([]); // don't call syncRooms again if it succeeded.\n }\n if (this._syncLeftRoomsPromise) {\n return this._syncLeftRoomsPromise; // return the ongoing request\n }\n var self = this;\n var syncApi = new SyncApi(this, this._clientOpts);\n this._syncLeftRoomsPromise = syncApi.syncLeftRooms();\n\n // cleanup locks\n this._syncLeftRoomsPromise.then(function (res) {\n console.log(\"Marking success of sync left room request\");\n self._syncedLeftRooms = true; // flip the bit on success\n }).finally(function () {\n self._syncLeftRoomsPromise = null; // cleanup ongoing request state\n });\n\n return this._syncLeftRoomsPromise;\n};\n\n// Filters\n// =======\n\n/**\n * Create a new filter.\n * @param {Object} content The HTTP body for the request\n * @return {Filter} Resolves to a Filter object.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.createFilter = function (content) {\n var self = this;\n var path = utils.encodeUri(\"/user/$userId/filter\", {\n $userId: this.credentials.userId\n });\n return this._http.authedRequest(undefined, \"POST\", path, undefined, content).then(function (response) {\n // persist the filter\n var filter = Filter.fromJson(self.credentials.userId, response.filter_id, content);\n self.store.storeFilter(filter);\n return filter;\n });\n};\n\n/**\n * Retrieve a filter.\n * @param {string} userId The user ID of the filter owner\n * @param {string} filterId The filter ID to retrieve\n * @param {boolean} allowCached True to allow cached filters to be returned.\n * Default: True.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.getFilter = function (userId, filterId, allowCached) {\n if (allowCached) {\n var filter = this.store.getFilter(userId, filterId);\n if (filter) {\n return _bluebird2.default.resolve(filter);\n }\n }\n\n var self = this;\n var path = utils.encodeUri(\"/user/$userId/filter/$filterId\", {\n $userId: userId,\n $filterId: filterId\n });\n\n return this._http.authedRequest(undefined, \"GET\", path, undefined, undefined).then(function (response) {\n // persist the filter\n var filter = Filter.fromJson(userId, filterId, response);\n self.store.storeFilter(filter);\n return filter;\n });\n};\n\n/**\n * @param {string} filterName\n * @param {Filter} filter\n * @return {Promise<String>} Filter ID\n */\nMatrixClient.prototype.getOrCreateFilter = function (filterName, filter) {\n var filterId = this.store.getFilterIdByName(filterName);\n var promise = _bluebird2.default.resolve();\n var self = this;\n\n if (filterId) {\n // check that the existing filter matches our expectations\n promise = self.getFilter(self.credentials.userId, filterId, true).then(function (existingFilter) {\n var oldDef = existingFilter.getDefinition();\n var newDef = filter.getDefinition();\n\n if (utils.deepCompare(oldDef, newDef)) {\n // super, just use that.\n // debuglog(\"Using existing filter ID %s: %s\", filterId,\n // JSON.stringify(oldDef));\n return _bluebird2.default.resolve(filterId);\n }\n // debuglog(\"Existing filter ID %s: %s; new filter: %s\",\n // filterId, JSON.stringify(oldDef), JSON.stringify(newDef));\n self.store.setFilterIdByName(filterName, undefined);\n return undefined;\n }, function (error) {\n // Synapse currently returns the following when the filter cannot be found:\n // {\n // errcode: \"M_UNKNOWN\",\n // name: \"M_UNKNOWN\",\n // message: \"No row found\",\n // data: Object, httpStatus: 404\n // }\n if (error.httpStatus === 404 && (error.errcode === \"M_UNKNOWN\" || error.errcode === \"M_NOT_FOUND\")) {\n // Clear existing filterId from localStorage\n // if it no longer exists on the server\n self.store.setFilterIdByName(filterName, undefined);\n // Return a undefined value for existingId further down the promise chain\n return undefined;\n } else {\n throw error;\n }\n });\n }\n\n return promise.then(function (existingId) {\n if (existingId) {\n return existingId;\n }\n\n // create a new filter\n return self.createFilter(filter.getDefinition()).then(function (createdFilter) {\n // debuglog(\"Created new filter ID %s: %s\", createdFilter.filterId,\n // JSON.stringify(createdFilter.getDefinition()));\n self.store.setFilterIdByName(filterName, createdFilter.filterId);\n return createdFilter.filterId;\n });\n });\n};\n\n/**\n * Gets a bearer token from the Home Server that the user can\n * present to a third party in order to prove their ownership\n * of the Matrix account they are logged into.\n * @return {module:client.Promise} Resolves: Token object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.getOpenIdToken = function () {\n var path = utils.encodeUri(\"/user/$userId/openid/request_token\", {\n $userId: this.credentials.userId\n });\n\n return this._http.authedRequest(undefined, \"POST\", path, undefined, {});\n};\n\n// VoIP operations\n// ===============\n\n/**\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.turnServer = function (callback) {\n return this._http.authedRequest(callback, \"GET\", \"/voip/turnServer\");\n};\n\n/**\n * Get the TURN servers for this home server.\n * @return {Array<Object>} The servers or an empty list.\n */\nMatrixClient.prototype.getTurnServers = function () {\n return this._turnServers || [];\n};\n\n// Higher level APIs\n// =================\n\n// TODO: stuff to handle:\n// local echo\n// event dup suppression? - apparently we should still be doing this\n// tracking current display name / avatar per-message\n// pagination\n// re-sending (including persisting pending messages to be sent)\n// - Need a nice way to callback the app for arbitrary events like\n// displayname changes\n// due to ambiguity (or should this be on a chat-specific layer)?\n// reconnect after connectivity outages\n\n\n/**\n * High level helper method to begin syncing and poll for new events. To listen for these\n * events, add a listener for {@link module:client~MatrixClient#event:\"event\"}\n * via {@link module:client~MatrixClient#on}. Alternatively, listen for specific\n * state change events.\n * @param {Object=} opts Options to apply when syncing.\n * @param {Number=} opts.initialSyncLimit The event <code>limit=</code> to apply\n * to initial sync. Default: 8.\n * @param {Boolean=} opts.includeArchivedRooms True to put <code>archived=true</code>\n * on the <code>/initialSync</code> request. Default: false.\n * @param {Boolean=} opts.resolveInvitesToProfiles True to do /profile requests\n * on every invite event if the displayname/avatar_url is not known for this user ID.\n * Default: false.\n *\n * @param {String=} opts.pendingEventOrdering Controls where pending messages\n * appear in a room's timeline. If \"<b>chronological</b>\", messages will appear\n * in the timeline when the call to <code>sendEvent</code> was made. If\n * \"<b>detached</b>\", pending messages will appear in a separate list,\n * accessbile via {@link module:models/room#getPendingEvents}. Default:\n * \"chronological\".\n *\n * @param {Number=} opts.pollTimeout The number of milliseconds to wait on /sync.\n * Default: 30000 (30 seconds).\n *\n * @param {Filter=} opts.filter The filter to apply to /sync calls. This will override\n * the opts.initialSyncLimit, which would normally result in a timeline limit filter.\n *\n * @param {Boolean=} opts.disablePresence True to perform syncing without automatically\n * updating presence.\n * @param {Boolean=} opts.lazyLoadMembers True to not load all membership events during\n * initial sync but fetch them when needed by calling `loadOutOfBandMembers`\n * This will override the filter option at this moment.\n */\nMatrixClient.prototype.startClient = function () {\n var _ref7 = (0, _bluebird.method)(function (opts) {\n var _this = this;\n\n if (this.clientRunning) {\n // client is already running.\n return;\n }\n this.clientRunning = true;\n // backwards compat for when 'opts' was 'historyLen'.\n if (typeof opts === \"number\") {\n opts = {\n initialSyncLimit: opts\n };\n }\n\n if (this._crypto) {\n this._crypto.uploadDeviceKeys().done();\n this._crypto.start();\n }\n\n // periodically poll for turn servers if we support voip\n checkTurnServers(this);\n\n if (this._syncApi) {\n // This shouldn't happen since we thought the client was not running\n console.error(\"Still have sync object whilst not running: stopping old one\");\n this._syncApi.stop();\n }\n\n // shallow-copy the opts dict before modifying and storing it\n opts = (0, _assign2.default)({}, opts);\n\n opts.crypto = this._crypto;\n opts.canResetEntireTimeline = function (roomId) {\n if (!_this._canResetTimelineCallback) {\n return false;\n }\n return _this._canResetTimelineCallback(roomId);\n };\n this._clientOpts = opts;\n this._syncApi = new SyncApi(this, opts);\n this._syncApi.sync();\n });\n\n return function (_x13) {\n return _ref7.apply(this, arguments);\n };\n}();\n\n/**\n * store client options with boolean/string/numeric values\n * to know in the next session what flags the sync data was\n * created with (e.g. lazy loading)\n * @param {object} opts the complete set of client options\n * @return {Promise} for store operation */\nMatrixClient.prototype._storeClientOptions = function () {\n var primTypes = [\"boolean\", \"string\", \"number\"];\n var serializableOpts = (0, _entries2.default)(this._clientOpts).filter(function (_ref8) {\n var _ref9 = (0, _slicedToArray3.default)(_ref8, 2),\n key = _ref9[0],\n value = _ref9[1];\n\n return primTypes.includes(typeof value === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(value));\n }).reduce(function (obj, _ref10) {\n var _ref11 = (0, _slicedToArray3.default)(_ref10, 2),\n key = _ref11[0],\n value = _ref11[1];\n\n obj[key] = value;\n return obj;\n }, {});\n return this.store.storeClientOptions(serializableOpts);\n};\n\n/**\n * High level helper method to stop the client from polling and allow a\n * clean shutdown.\n */\nMatrixClient.prototype.stopClient = function () {\n console.log('stopping MatrixClient');\n\n this.clientRunning = false;\n // TODO: f.e. Room => self.store.storeRoom(room) ?\n if (this._syncApi) {\n this._syncApi.stop();\n this._syncApi = null;\n }\n if (this._crypto) {\n this._crypto.stop();\n }\n if (this._peekSync) {\n this._peekSync.stopPeeking();\n }\n global.clearTimeout(this._checkTurnServersTimeoutID);\n};\n\n/*\n * Query the server to see if it support members lazy loading\n * @return {Promise<boolean>} true if server supports lazy loading\n */\nMatrixClient.prototype.doesServerSupportLazyLoading = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n var response, unstableFeatures;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!(this._serverSupportsLazyLoading === null)) {\n _context4.next = 6;\n break;\n }\n\n _context4.next = 3;\n return (0, _bluebird.resolve)(this._http.request(undefined, // callback\n \"GET\", \"/_matrix/client/versions\", undefined, // queryParams\n undefined, // data\n {\n prefix: ''\n }));\n\n case 3:\n response = _context4.sent;\n unstableFeatures = response[\"unstable_features\"];\n\n this._serverSupportsLazyLoading = unstableFeatures && unstableFeatures[\"m.lazy_load_members\"];\n\n case 6:\n return _context4.abrupt(\"return\", this._serverSupportsLazyLoading);\n\n case 7:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n}));\n\n/*\n * Get if lazy loading members is being used.\n * @return {boolean} Whether or not members are lazy loaded by this client\n */\nMatrixClient.prototype.hasLazyLoadMembersEnabled = function () {\n return !!this._clientOpts.lazyLoadMembers;\n};\n\n/*\n * Set a function which is called when /sync returns a 'limited' response.\n * It is called with a room ID and returns a boolean. It should return 'true' if the SDK\n * can SAFELY remove events from this room. It may not be safe to remove events if there\n * are other references to the timelines for this room, e.g because the client is\n * actively viewing events in this room.\n * Default: returns false.\n * @param {Function} cb The callback which will be invoked.\n */\nMatrixClient.prototype.setCanResetTimelineCallback = function (cb) {\n this._canResetTimelineCallback = cb;\n};\n\n/**\n * Get the callback set via `setCanResetTimelineCallback`.\n * @return {?Function} The callback or null\n */\nMatrixClient.prototype.getCanResetTimelineCallback = function () {\n return this._canResetTimelineCallback;\n};\n\nfunction setupCallEventHandler(client) {\n var candidatesByCall = {\n // callId: [Candidate]\n };\n\n // Maintain a buffer of events before the client has synced for the first time.\n // This buffer will be inspected to see if we should send incoming call\n // notifications. It needs to be buffered to correctly determine if an\n // incoming call has had a matching answer/hangup.\n var callEventBuffer = [];\n var isClientPrepared = false;\n client.on(\"sync\", function (state) {\n if (state === \"PREPARED\") {\n isClientPrepared = true;\n var ignoreCallIds = {}; // Set<String>\n // inspect the buffer and mark all calls which have been answered\n // or hung up before passing them to the call event handler.\n for (var i = callEventBuffer.length - 1; i >= 0; i--) {\n var ev = callEventBuffer[i];\n if (ev.getType() === \"m.call.answer\" || ev.getType() === \"m.call.hangup\") {\n ignoreCallIds[ev.getContent().call_id] = \"yep\";\n }\n }\n // now loop through the buffer chronologically and inject them\n callEventBuffer.forEach(function (e) {\n if (ignoreCallIds[e.getContent().call_id]) {\n // This call has previously been ansered or hung up: ignore it\n return;\n }\n callEventHandler(e);\n });\n callEventBuffer = [];\n }\n });\n\n client.on(\"event\", onEvent);\n\n function onEvent(event) {\n if (event.getType().indexOf(\"m.call.\") !== 0) {\n // not a call event\n if (event.isBeingDecrypted() || event.isDecryptionFailure()) {\n // not *yet* a call event, but might become one...\n event.once(\"Event.decrypted\", onEvent);\n }\n return;\n }\n if (!isClientPrepared) {\n callEventBuffer.push(event);\n return;\n }\n callEventHandler(event);\n }\n\n function callEventHandler(event) {\n var content = event.getContent();\n var call = content.call_id ? client.callList[content.call_id] : undefined;\n var i = void 0;\n //console.log(\"RECV %s content=%s\", event.getType(), JSON.stringify(content));\n\n if (event.getType() === \"m.call.invite\") {\n if (event.getSender() === client.credentials.userId) {\n return; // ignore invites you send\n }\n\n if (event.getAge() > content.lifetime) {\n return; // expired call\n }\n\n if (call && call.state === \"ended\") {\n return; // stale/old invite event\n }\n if (call) {\n console.log(\"WARN: Already have a MatrixCall with id %s but got an \" + \"invite. Clobbering.\", content.call_id);\n }\n\n call = webRtcCall.createNewMatrixCall(client, event.getRoomId(), {\n forceTURN: client._forceTURN\n });\n if (!call) {\n console.log(\"Incoming call ID \" + content.call_id + \" but this client \" + \"doesn't support WebRTC\");\n // don't hang up the call: there could be other clients\n // connected that do support WebRTC and declining the\n // the call on their behalf would be really annoying.\n return;\n }\n\n call.callId = content.call_id;\n call._initWithInvite(event);\n client.callList[call.callId] = call;\n\n // if we stashed candidate events for that call ID, play them back now\n if (candidatesByCall[call.callId]) {\n for (i = 0; i < candidatesByCall[call.callId].length; i++) {\n call._gotRemoteIceCandidate(candidatesByCall[call.callId][i]);\n }\n }\n\n // Were we trying to call that user (room)?\n var existingCall = void 0;\n var existingCalls = utils.values(client.callList);\n for (i = 0; i < existingCalls.length; ++i) {\n var thisCall = existingCalls[i];\n if (call.roomId === thisCall.roomId && thisCall.direction === 'outbound' && [\"wait_local_media\", \"create_offer\", \"invite_sent\"].indexOf(thisCall.state) !== -1) {\n existingCall = thisCall;\n break;\n }\n }\n\n if (existingCall) {\n // If we've only got to wait_local_media or create_offer and\n // we've got an invite, pick the incoming call because we know\n // we haven't sent our invite yet otherwise, pick whichever\n // call has the lowest call ID (by string comparison)\n if (existingCall.state === 'wait_local_media' || existingCall.state === 'create_offer' || existingCall.callId > call.callId) {\n console.log(\"Glare detected: answering incoming call \" + call.callId + \" and canceling outgoing call \" + existingCall.callId);\n existingCall._replacedBy(call);\n call.answer();\n } else {\n console.log(\"Glare detected: rejecting incoming call \" + call.callId + \" and keeping outgoing call \" + existingCall.callId);\n call.hangup();\n }\n } else {\n client.emit(\"Call.incoming\", call);\n }\n } else if (event.getType() === 'm.call.answer') {\n if (!call) {\n return;\n }\n if (event.getSender() === client.credentials.userId) {\n if (call.state === 'ringing') {\n call._onAnsweredElsewhere(content);\n }\n } else {\n call._receivedAnswer(content);\n }\n } else if (event.getType() === 'm.call.candidates') {\n if (event.getSender() === client.credentials.userId) {\n return;\n }\n if (!call) {\n // store the candidates; we may get a call eventually.\n if (!candidatesByCall[content.call_id]) {\n candidatesByCall[content.call_id] = [];\n }\n candidatesByCall[content.call_id] = candidatesByCall[content.call_id].concat(content.candidates);\n } else {\n for (i = 0; i < content.candidates.length; i++) {\n call._gotRemoteIceCandidate(content.candidates[i]);\n }\n }\n } else if (event.getType() === 'm.call.hangup') {\n // Note that we also observe our own hangups here so we can see\n // if we've already rejected a call that would otherwise be valid\n if (!call) {\n // if not live, store the fact that the call has ended because\n // we're probably getting events backwards so\n // the hangup will come before the invite\n call = webRtcCall.createNewMatrixCall(client, event.getRoomId());\n if (call) {\n call.callId = content.call_id;\n call._initWithHangup(event);\n client.callList[content.call_id] = call;\n }\n } else {\n if (call.state !== 'ended') {\n call._onHangupReceived(content);\n delete client.callList[content.call_id];\n }\n }\n }\n }\n}\n\nfunction checkTurnServers(client) {\n if (!client._supportsVoip) {\n return;\n }\n if (client.isGuest()) {\n return; // guests can't access TURN servers\n }\n\n client.turnServer().done(function (res) {\n if (res.uris) {\n console.log(\"Got TURN URIs: \" + res.uris + \" refresh in \" + res.ttl + \" secs\");\n // map the response to a format that can be fed to\n // RTCPeerConnection\n var servers = {\n urls: res.uris,\n username: res.username,\n credential: res.password\n };\n client._turnServers = [servers];\n // re-fetch when we're about to reach the TTL\n client._checkTurnServersTimeoutID = setTimeout(function () {\n checkTurnServers(client);\n }, (res.ttl || 60 * 60) * 1000 * 0.9);\n }\n }, function (err) {\n console.error(\"Failed to get TURN URIs\");\n client._checkTurnServersTimeoutID = setTimeout(function () {\n checkTurnServers(client);\n }, 60000);\n });\n}\n\nfunction _reject(callback, defer, err) {\n if (callback) {\n callback(err);\n }\n defer.reject(err);\n}\n\nfunction _resolve(callback, defer, res) {\n if (callback) {\n callback(null, res);\n }\n defer.resolve(res);\n}\n\nfunction _PojoToMatrixEventMapper(client) {\n function mapper(plainOldJsObject) {\n var event = new MatrixEvent(plainOldJsObject);\n if (event.isEncrypted()) {\n client.reEmitter.reEmit(event, [\"Event.decrypted\"]);\n event.attemptDecryption(client._crypto);\n }\n return event;\n }\n return mapper;\n}\n\n/**\n * @return {Function}\n */\nMatrixClient.prototype.getEventMapper = function () {\n return _PojoToMatrixEventMapper(this);\n};\n\n// Identity Server Operations\n// ==========================\n\n/**\n * Generates a random string suitable for use as a client secret. <strong>This\n * method is experimental and may change.</strong>\n * @return {string} A new client secret\n */\nMatrixClient.prototype.generateClientSecret = function () {\n var ret = \"\";\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\n for (var i = 0; i < 32; i++) {\n ret += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n\n return ret;\n};\n\n/** */\nmodule.exports.MatrixClient = MatrixClient;\n/** */\nmodule.exports.CRYPTO_ENABLED = CRYPTO_ENABLED;\n\n// MatrixClient Event JSDocs\n\n/**\n * Fires whenever the SDK receives a new event.\n * <p>\n * This is only fired for live events received via /sync - it is not fired for\n * events received over context, search, or pagination APIs.\n *\n * @event module:client~MatrixClient#\"event\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @example\n * matrixClient.on(\"event\", function(event){\n * var sender = event.getSender();\n * });\n */\n\n/**\n * Fires whenever the SDK receives a new to-device event.\n * @event module:client~MatrixClient#\"toDeviceEvent\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @example\n * matrixClient.on(\"toDeviceEvent\", function(event){\n * var sender = event.getSender();\n * });\n */\n\n/**\n * Fires whenever the SDK's syncing state is updated. The state can be one of:\n * <ul>\n *\n * <li>PREPARED: The client has synced with the server at least once and is\n * ready for methods to be called on it. This will be immediately followed by\n * a state of SYNCING. <i>This is the equivalent of \"syncComplete\" in the\n * previous API.</i></li>\n *\n * <li>CATCHUP: The client has detected the connection to the server might be\n * available again and will now try to do a sync again. As this sync might take\n * a long time (depending how long ago was last synced, and general server\n * performance) the client is put in this mode so the UI can reflect trying\n * to catch up with the server after losing connection.</li>\n *\n * <li>SYNCING : The client is currently polling for new events from the server.\n * This will be called <i>after</i> processing latest events from a sync.</li>\n *\n * <li>ERROR : The client has had a problem syncing with the server. If this is\n * called <i>before</i> PREPARED then there was a problem performing the initial\n * sync. If this is called <i>after</i> PREPARED then there was a problem polling\n * the server for updates. This may be called multiple times even if the state is\n * already ERROR. <i>This is the equivalent of \"syncError\" in the previous\n * API.</i></li>\n *\n * <li>RECONNECTING: The sync connection has dropped, but not (yet) in a way that\n * should be considered erroneous.\n * </li>\n *\n * <li>STOPPED: The client has stopped syncing with server due to stopClient\n * being called.\n * </li>\n * </ul>\n * State transition diagram:\n * <pre>\n * +---->STOPPED\n * |\n * +----->PREPARED -------> SYNCING <--+\n * | ^ | ^ |\n * | CATCHUP ----------+ | | |\n * | ^ V | |\n * null ------+ | +------- RECONNECTING |\n * | V V |\n * +------->ERROR ---------------------+\n *\n * NB: 'null' will never be emitted by this event.\n *\n * </pre>\n * Transitions:\n * <ul>\n *\n * <li><code>null -> PREPARED</code> : Occurs when the initial sync is completed\n * first time. This involves setting up filters and obtaining push rules.\n *\n * <li><code>null -> ERROR</code> : Occurs when the initial sync failed first time.\n *\n * <li><code>ERROR -> PREPARED</code> : Occurs when the initial sync succeeds\n * after previously failing.\n *\n * <li><code>PREPARED -> SYNCING</code> : Occurs immediately after transitioning\n * to PREPARED. Starts listening for live updates rather than catching up.\n *\n * <li><code>SYNCING -> RECONNECTING</code> : Occurs when the live update fails.\n *\n * <li><code>RECONNECTING -> RECONNECTING</code> : Can occur if the update calls\n * continue to fail, but the keepalive calls (to /versions) succeed.\n *\n * <li><code>RECONNECTING -> ERROR</code> : Occurs when the keepalive call also fails\n *\n * <li><code>ERROR -> SYNCING</code> : Occurs when the client has performed a\n * live update after having previously failed.\n *\n * <li><code>ERROR -> ERROR</code> : Occurs when the client has failed to keepalive\n * for a second time or more.</li>\n *\n * <li><code>SYNCING -> SYNCING</code> : Occurs when the client has performed a live\n * update. This is called <i>after</i> processing.</li>\n *\n * <li><code>* -> STOPPED</code> : Occurs once the client has stopped syncing or\n * trying to sync after stopClient has been called.</li>\n * </ul>\n *\n * @event module:client~MatrixClient#\"sync\"\n *\n * @param {string} state An enum representing the syncing state. One of \"PREPARED\",\n * \"SYNCING\", \"ERROR\", \"STOPPED\".\n *\n * @param {?string} prevState An enum representing the previous syncing state.\n * One of \"PREPARED\", \"SYNCING\", \"ERROR\", \"STOPPED\" <b>or null</b>.\n *\n * @param {?Object} data Data about this transition.\n *\n * @param {MatrixError} data.error The matrix error if <code>state=ERROR</code>.\n *\n * @param {String} data.oldSyncToken The 'since' token passed to /sync.\n * <code>null</code> for the first successful sync since this client was\n * started. Only present if <code>state=PREPARED</code> or\n * <code>state=SYNCING</code>.\n *\n * @param {String} data.nextSyncToken The 'next_batch' result from /sync, which\n * will become the 'since' token for the next call to /sync. Only present if\n * <code>state=PREPARED</code> or <code>state=SYNCING</code>.\n *\n * @param {boolean} data.catchingUp True if we are working our way through a\n * backlog of events after connecting. Only present if <code>state=SYNCING</code>.\n *\n * @example\n * matrixClient.on(\"sync\", function(state, prevState, data) {\n * switch (state) {\n * case \"ERROR\":\n * // update UI to say \"Connection Lost\"\n * break;\n * case \"SYNCING\":\n * // update UI to remove any \"Connection Lost\" message\n * break;\n * case \"PREPARED\":\n * // the client instance is ready to be queried.\n * var rooms = matrixClient.getRooms();\n * break;\n * }\n * });\n */\n\n/**\n* Fires whenever the sdk learns about a new group. <strong>This event\n* is experimental and may change.</strong>\n* @event module:client~MatrixClient#\"Group\"\n* @param {Group} group The newly created, fully populated group.\n* @example\n* matrixClient.on(\"Group\", function(group){\n* var groupId = group.groupId;\n* });\n*/\n\n/**\n* Fires whenever a new Room is added. This will fire when you are invited to a\n* room, as well as when you join a room. <strong>This event is experimental and\n* may change.</strong>\n* @event module:client~MatrixClient#\"Room\"\n* @param {Room} room The newly created, fully populated room.\n* @example\n* matrixClient.on(\"Room\", function(room){\n* var roomId = room.roomId;\n* });\n*/\n\n/**\n* Fires whenever a Room is removed. This will fire when you forget a room.\n* <strong>This event is experimental and may change.</strong>\n* @event module:client~MatrixClient#\"deleteRoom\"\n* @param {string} roomId The deleted room ID.\n* @example\n* matrixClient.on(\"deleteRoom\", function(roomId){\n* // update UI from getRooms()\n* });\n*/\n\n/**\n * Fires whenever an incoming call arrives.\n * @event module:client~MatrixClient#\"Call.incoming\"\n * @param {module:webrtc/call~MatrixCall} call The incoming call.\n * @example\n * matrixClient.on(\"Call.incoming\", function(call){\n * call.answer(); // auto-answer\n * });\n */\n\n/**\n * Fires whenever the login session the JS SDK is using is no\n * longer valid and the user must log in again.\n * NB. This only fires when action is required from the user, not\n * when then login session can be renewed by using a refresh token.\n * @event module:client~MatrixClient#\"Session.logged_out\"\n * @example\n * matrixClient.on(\"Session.logged_out\", function(call){\n * // show the login screen\n * });\n */\n\n/**\n * Fires when the JS SDK receives a M_CONSENT_NOT_GIVEN error in response\n * to a HTTP request.\n * @event module:client~MatrixClient#\"no_consent\"\n * @example\n * matrixClient.on(\"no_consent\", function(message, contentUri) {\n * console.info(message + ' Go to ' + contentUri);\n * });\n */\n\n/**\n * Fires when a device is marked as verified/unverified/blocked/unblocked by\n * {@link module:client~MatrixClient#setDeviceVerified|MatrixClient.setDeviceVerified} or\n * {@link module:client~MatrixClient#setDeviceBlocked|MatrixClient.setDeviceBlocked}.\n *\n * @event module:client~MatrixClient#\"deviceVerificationChanged\"\n * @param {string} userId the owner of the verified device\n * @param {string} deviceId the id of the verified device\n * @param {module:crypto/deviceinfo} deviceInfo updated device information\n */\n\n/**\n * Fires whenever new user-scoped account_data is added.\n * @event module:client~MatrixClient#\"accountData\"\n * @param {MatrixEvent} event The event describing the account_data just added\n * @example\n * matrixClient.on(\"accountData\", function(event){\n * myAccountData[event.type] = event.content;\n * });\n */\n\n// EventEmitter JSDocs\n\n/**\n * The {@link https://nodejs.org/api/events.html|EventEmitter} class.\n * @external EventEmitter\n * @see {@link https://nodejs.org/api/events.html}\n */\n\n/**\n * Adds a listener to the end of the listeners array for the specified event.\n * No checks are made to see if the listener has already been added. Multiple\n * calls passing the same combination of event and listener will result in the\n * listener being added multiple times.\n * @function external:EventEmitter#on\n * @param {string} event The event to listen for.\n * @param {Function} listener The function to invoke.\n * @return {EventEmitter} for call chaining.\n */\n\n/**\n * Alias for {@link external:EventEmitter#on}.\n * @function external:EventEmitter#addListener\n * @param {string} event The event to listen for.\n * @param {Function} listener The function to invoke.\n * @return {EventEmitter} for call chaining.\n */\n\n/**\n * Adds a <b>one time</b> listener for the event. This listener is invoked only\n * the next time the event is fired, after which it is removed.\n * @function external:EventEmitter#once\n * @param {string} event The event to listen for.\n * @param {Function} listener The function to invoke.\n * @return {EventEmitter} for call chaining.\n */\n\n/**\n * Remove a listener from the listener array for the specified event.\n * <b>Caution:</b> changes array indices in the listener array behind the\n * listener.\n * @function external:EventEmitter#removeListener\n * @param {string} event The event to listen for.\n * @param {Function} listener The function to invoke.\n * @return {EventEmitter} for call chaining.\n */\n\n/**\n * Removes all listeners, or those of the specified event. It's not a good idea\n * to remove listeners that were added elsewhere in the code, especially when\n * it's on an emitter that you didn't create (e.g. sockets or file streams).\n * @function external:EventEmitter#removeAllListeners\n * @param {string} event Optional. The event to remove listeners for.\n * @return {EventEmitter} for call chaining.\n */\n\n/**\n * Execute each of the listeners in order with the supplied arguments.\n * @function external:EventEmitter#emit\n * @param {string} event The event to emit.\n * @param {Function} listener The function to invoke.\n * @return {boolean} true if event had listeners, false otherwise.\n */\n\n/**\n * By default EventEmitters will print a warning if more than 10 listeners are\n * added for a particular event. This is a useful default which helps finding\n * memory leaks. Obviously not all Emitters should be limited to 10. This\n * function allows that to be increased. Set to zero for unlimited.\n * @function external:EventEmitter#setMaxListeners\n * @param {Number} n The max number of listeners.\n * @return {EventEmitter} for call chaining.\n */\n\n// MatrixClient Callback JSDocs\n\n/**\n * The standard MatrixClient callback interface. Functions which accept this\n * will specify 2 return arguments. These arguments map to the 2 parameters\n * specified in this callback.\n * @callback module:client.callback\n * @param {Object} err The error value, the \"rejected\" value or null.\n * @param {Object} data The data returned, the \"resolved\" value.\n */\n\n/**\n * {@link https://github.com/kriskowal/q|A promise implementation (Q)}. Functions\n * which return this will specify 2 return arguments. These arguments map to the\n * \"onFulfilled\" and \"onRejected\" values of the Promise.\n * @typedef {Object} Promise\n * @static\n * @property {Function} then promise.then(onFulfilled, onRejected, onProgress)\n * @property {Function} catch promise.catch(onRejected)\n * @property {Function} finally promise.finally(callback)\n * @property {Function} done promise.done(onFulfilled, onRejected, onProgress)\n */\n//# sourceMappingURL=client.js.map","module.exports = { \"default\": require(\"core-js/library/fn/object/entries\"), __esModule: true };","var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar global = require('./_global');\nvar core = require('./_core');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar meta = require('./_meta');\nvar fails = require('./_fails');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar setToStringTag = require('./_set-to-string-tag');\nvar dP = require('./_object-dp').f;\nvar each = require('./_array-methods')(0);\nvar DESCRIPTORS = require('./_descriptors');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME, '_c');\n target._c = new Base();\n if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target);\n });\n each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {\n var IS_ADDER = KEY == 'add' || KEY == 'set';\n if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) {\n anInstance(this, C, KEY);\n if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;\n var result = this._c[KEY](a === 0 ? 0 : a, b);\n return IS_ADDER ? this : result;\n });\n });\n IS_WEAK || dP(C.prototype, 'size', {\n get: function () {\n return this._c.size;\n }\n });\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F, O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n return from(this);\n };\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * @module\n */\n\nvar Reemitter = function () {\n function Reemitter(target) {\n (0, _classCallCheck3.default)(this, Reemitter);\n\n this.target = target;\n\n // We keep one bound event handler for each event name so we know\n // what event is arriving\n this.boundHandlers = {};\n }\n\n (0, _createClass3.default)(Reemitter, [{\n key: \"_handleEvent\",\n value: function _handleEvent(eventName) {\n var _target;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_target = this.target).emit.apply(_target, [eventName].concat(args));\n }\n }, {\n key: \"reEmit\",\n value: function reEmit(source, eventNames) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(eventNames), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var eventName = _step.value;\n\n if (this.boundHandlers[eventName] === undefined) {\n this.boundHandlers[eventName] = this._handleEvent.bind(this, eventName);\n }\n var boundHandler = this.boundHandlers[eventName];\n\n source.on(eventName, boundHandler);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }]);\n return Reemitter;\n}();\n\nexports.default = Reemitter;\n//# sourceMappingURL=ReEmitter.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/room-state\n */\n\nvar _isFinite = require(\"babel-runtime/core-js/number/is-finite\");\n\nvar _isFinite2 = _interopRequireDefault(_isFinite);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _values = require(\"babel-runtime/core-js/object/values\");\n\nvar _values2 = _interopRequireDefault(_values);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EventEmitter = require(\"events\").EventEmitter;\n\nvar utils = require(\"../utils\");\nvar RoomMember = require(\"./room-member\");\n\n// possible statuses for out-of-band member loading\nvar OOB_STATUS_NOTSTARTED = 1;\nvar OOB_STATUS_INPROGRESS = 2;\nvar OOB_STATUS_FINISHED = 3;\n\n/**\n * Construct room state.\n *\n * Room State represents the state of the room at a given point.\n * It can be mutated by adding state events to it.\n * There are two types of room member associated with a state event:\n * normal member objects (accessed via getMember/getMembers) which mutate\n * with the state to represent the current state of that room/user, eg.\n * the object returned by getMember('@bob:example.com') will mutate to\n * get a different display name if Bob later changes his display name\n * in the room.\n * There are also 'sentinel' members (accessed via getSentinelMember).\n * These also represent the state of room members at the point in time\n * represented by the RoomState object, but unlike objects from getMember,\n * sentinel objects will always represent the room state as at the time\n * getSentinelMember was called, so if Bob subsequently changes his display\n * name, a room member object previously acquired with getSentinelMember\n * will still have his old display name. Calling getSentinelMember again\n * after the display name change will return a new RoomMember object\n * with Bob's new display name.\n *\n * @constructor\n * @param {?string} roomId Optional. The ID of the room which has this state.\n * If none is specified it just tracks paginationTokens, useful for notifTimelineSet\n * @param {?object} oobMemberFlags Optional. The state of loading out of bound members.\n * As the timeline might get reset while they are loading, this state needs to be inherited\n * and shared when the room state is cloned for the new timeline.\n * This should only be passed from clone.\n * @prop {Object.<string, RoomMember>} members The room member dictionary, keyed\n * on the user's ID.\n * @prop {Object.<string, Object.<string, MatrixEvent>>} events The state\n * events dictionary, keyed on the event type and then the state_key value.\n * @prop {string} paginationToken The pagination token for this state.\n */\nfunction RoomState(roomId) {\n var oobMemberFlags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n this.roomId = roomId;\n this.members = {\n // userId: RoomMember\n };\n this.events = {\n // eventType: { stateKey: MatrixEvent }\n };\n this.paginationToken = null;\n\n this._sentinels = {\n // userId: RoomMember\n };\n this._updateModifiedTime();\n this._displayNameToUserIds = {};\n this._userIdsToDisplayNames = {};\n this._tokenToInvite = {}; // 3pid invite state_key to m.room.member invite\n this._joinedMemberCount = null; // cache of the number of joined members\n // joined members count from summary api\n // once set, we know the server supports the summary api\n // and we should only trust that\n // we could also only trust that before OOB members\n // are loaded but doesn't seem worth the hassle atm\n this._summaryJoinedMemberCount = null;\n // same for invited member count\n this._invitedMemberCount = null;\n this._summaryInvitedMemberCount = null;\n\n if (!oobMemberFlags) {\n oobMemberFlags = {\n status: OOB_STATUS_NOTSTARTED\n };\n }\n this._oobMemberFlags = oobMemberFlags;\n}\nutils.inherits(RoomState, EventEmitter);\n\n/**\n * Returns the number of joined members in this room\n * This method caches the result.\n * @return {integer} The number of members in this room whose membership is 'join'\n */\nRoomState.prototype.getJoinedMemberCount = function () {\n if (this._summaryJoinedMemberCount !== null) {\n return this._summaryJoinedMemberCount;\n }\n if (this._joinedMemberCount === null) {\n this._joinedMemberCount = this.getMembers().reduce(function (count, m) {\n return m.membership === 'join' ? count + 1 : count;\n }, 0);\n }\n return this._joinedMemberCount;\n};\n\n/**\n * Set the joined member count explicitly (like from summary part of the sync response)\n * @param {number} count the amount of joined members\n */\nRoomState.prototype.setJoinedMemberCount = function (count) {\n this._summaryJoinedMemberCount = count;\n};\n/**\n * Returns the number of invited members in this room\n * @return {integer} The number of members in this room whose membership is 'invite'\n */\nRoomState.prototype.getInvitedMemberCount = function () {\n if (this._summaryInvitedMemberCount !== null) {\n return this._summaryInvitedMemberCount;\n }\n if (this._invitedMemberCount === null) {\n this._invitedMemberCount = this.getMembers().reduce(function (count, m) {\n return m.membership === 'invite' ? count + 1 : count;\n }, 0);\n }\n return this._invitedMemberCount;\n};\n\n/**\n * Set the amount of invited members in this room\n * @param {number} count the amount of invited members\n */\nRoomState.prototype.setInvitedMemberCount = function (count) {\n this._summaryInvitedMemberCount = count;\n};\n\n/**\n * Get all RoomMembers in this room.\n * @return {Array<RoomMember>} A list of RoomMembers.\n */\nRoomState.prototype.getMembers = function () {\n return utils.values(this.members);\n};\n\n/**\n * Get a room member by their user ID.\n * @param {string} userId The room member's user ID.\n * @return {RoomMember} The member or null if they do not exist.\n */\nRoomState.prototype.getMember = function (userId) {\n return this.members[userId] || null;\n};\n\n/**\n * Get a room member whose properties will not change with this room state. You\n * typically want this if you want to attach a RoomMember to a MatrixEvent which\n * may no longer be represented correctly by Room.currentState or Room.oldState.\n * The term 'sentinel' refers to the fact that this RoomMember is an unchanging\n * guardian for state at this particular point in time.\n * @param {string} userId The room member's user ID.\n * @return {RoomMember} The member or null if they do not exist.\n */\nRoomState.prototype.getSentinelMember = function (userId) {\n if (!userId) return null;\n var sentinel = this._sentinels[userId];\n\n if (sentinel === undefined) {\n sentinel = new RoomMember(this.roomId, userId);\n var member = this.members[userId];\n if (member) {\n sentinel.setMembershipEvent(member.events.member, this);\n }\n this._sentinels[userId] = sentinel;\n }\n return sentinel;\n};\n\n/**\n * Get state events from the state of the room.\n * @param {string} eventType The event type of the state event.\n * @param {string} stateKey Optional. The state_key of the state event. If\n * this is <code>undefined</code> then all matching state events will be\n * returned.\n * @return {MatrixEvent[]|MatrixEvent} A list of events if state_key was\n * <code>undefined</code>, else a single event (or null if no match found).\n */\nRoomState.prototype.getStateEvents = function (eventType, stateKey) {\n if (!this.events[eventType]) {\n // no match\n return stateKey === undefined ? [] : null;\n }\n if (stateKey === undefined) {\n // return all values\n return utils.values(this.events[eventType]);\n }\n var event = this.events[eventType][stateKey];\n return event ? event : null;\n};\n\n/**\n * Creates a copy of this room state so that mutations to either won't affect the other.\n * @return {RoomState} the copy of the room state\n */\nRoomState.prototype.clone = function () {\n var copy = new RoomState(this.roomId, this._oobMemberFlags);\n\n // Ugly hack: because setStateEvents will mark\n // members as susperseding future out of bound members\n // if loading is in progress (through _oobMemberFlags)\n // since these are not new members, we're merely copying them\n // set the status to not started\n // after copying, we set back the status\n var status = this._oobMemberFlags.status;\n this._oobMemberFlags.status = OOB_STATUS_NOTSTARTED;\n\n (0, _values2.default)(this.events).forEach(function (eventsByStateKey) {\n var eventsForType = (0, _values2.default)(eventsByStateKey);\n copy.setStateEvents(eventsForType);\n });\n\n // Ugly hack: see above\n this._oobMemberFlags.status = status;\n\n if (this._summaryInvitedMemberCount !== null) {\n copy.setInvitedMemberCount(this.getInvitedMemberCount());\n }\n if (this._summaryJoinedMemberCount !== null) {\n copy.setJoinedMemberCount(this.getJoinedMemberCount());\n }\n\n // copy out of band flags if needed\n if (this._oobMemberFlags.status == OOB_STATUS_FINISHED) {\n // copy markOutOfBand flags\n this.getMembers().forEach(function (member) {\n if (member.isOutOfBand()) {\n var copyMember = copy.getMember(member.userId);\n copyMember.markOutOfBand();\n }\n });\n }\n\n return copy;\n};\n\n/**\n * Add previously unknown state events.\n * When lazy loading members while back-paginating,\n * the relevant room state for the timeline chunk at the end\n * of the chunk can be set with this method.\n * @param {MatrixEvent[]} events state events to prepend\n */\nRoomState.prototype.setUnknownStateEvents = function (events) {\n var _this = this;\n\n var unknownStateEvents = events.filter(function (event) {\n return _this.events[event.getType()] === undefined || _this.events[event.getType()][event.getStateKey()] === undefined;\n });\n\n this.setStateEvents(unknownStateEvents);\n};\n\n/**\n * Add an array of one or more state MatrixEvents, overwriting\n * any existing state with the same {type, stateKey} tuple. Will fire\n * \"RoomState.events\" for every event added. May fire \"RoomState.members\"\n * if there are <code>m.room.member</code> events.\n * @param {MatrixEvent[]} stateEvents a list of state events for this room.\n * @fires module:client~MatrixClient#event:\"RoomState.members\"\n * @fires module:client~MatrixClient#event:\"RoomState.newMember\"\n * @fires module:client~MatrixClient#event:\"RoomState.events\"\n */\nRoomState.prototype.setStateEvents = function (stateEvents) {\n var self = this;\n this._updateModifiedTime();\n\n // update the core event dict\n utils.forEach(stateEvents, function (event) {\n if (event.getRoomId() !== self.roomId) {\n return;\n }\n if (!event.isState()) {\n return;\n }\n\n self._setStateEvent(event);\n if (event.getType() === \"m.room.member\") {\n _updateDisplayNameCache(self, event.getStateKey(), event.getContent().displayname);\n _updateThirdPartyTokenCache(self, event);\n }\n self.emit(\"RoomState.events\", event, self);\n });\n\n // update higher level data structures. This needs to be done AFTER the\n // core event dict as these structures may depend on other state events in\n // the given array (e.g. disambiguating display names in one go to do both\n // clashing names rather than progressively which only catches 1 of them).\n utils.forEach(stateEvents, function (event) {\n if (event.getRoomId() !== self.roomId) {\n return;\n }\n if (!event.isState()) {\n return;\n }\n\n if (event.getType() === \"m.room.member\") {\n var userId = event.getStateKey();\n\n // leave events apparently elide the displayname or avatar_url,\n // so let's fake one up so that we don't leak user ids\n // into the timeline\n if (event.getContent().membership === \"leave\" || event.getContent().membership === \"ban\") {\n event.getContent().avatar_url = event.getContent().avatar_url || event.getPrevContent().avatar_url;\n event.getContent().displayname = event.getContent().displayname || event.getPrevContent().displayname;\n }\n\n var member = self._getOrCreateMember(userId, event);\n member.setMembershipEvent(event, self);\n\n self._updateMember(member);\n self.emit(\"RoomState.members\", event, self, member);\n } else if (event.getType() === \"m.room.power_levels\") {\n var members = utils.values(self.members);\n utils.forEach(members, function (member) {\n member.setPowerLevelEvent(event);\n self.emit(\"RoomState.members\", event, self, member);\n });\n\n // assume all our sentinels are now out-of-date\n self._sentinels = {};\n }\n });\n};\n\n/**\n * Looks up a member by the given userId, and if it doesn't exist,\n * create it and emit the `RoomState.newMember` event.\n * This method makes sure the member is added to the members dictionary\n * before emitting, as this is done from setStateEvents and _setOutOfBandMember.\n * @param {string} userId the id of the user to look up\n * @param {MatrixEvent} event the membership event for the (new) member. Used to emit.\n * @fires module:client~MatrixClient#event:\"RoomState.newMember\"\n * @returns {RoomMember} the member, existing or newly created.\n */\nRoomState.prototype._getOrCreateMember = function (userId, event) {\n var member = this.members[userId];\n if (!member) {\n member = new RoomMember(this.roomId, userId);\n // add member to members before emitting any events,\n // as event handlers often lookup the member\n this.members[userId] = member;\n this.emit(\"RoomState.newMember\", event, this, member);\n }\n return member;\n};\n\nRoomState.prototype._setStateEvent = function (event) {\n if (this.events[event.getType()] === undefined) {\n this.events[event.getType()] = {};\n }\n this.events[event.getType()][event.getStateKey()] = event;\n};\n\nRoomState.prototype._updateMember = function (member) {\n // this member may have a power level already, so set it.\n var pwrLvlEvent = this.getStateEvents(\"m.room.power_levels\", \"\");\n if (pwrLvlEvent) {\n member.setPowerLevelEvent(pwrLvlEvent);\n }\n\n // blow away the sentinel which is now outdated\n delete this._sentinels[member.userId];\n\n this.members[member.userId] = member;\n this._joinedMemberCount = null;\n this._invitedMemberCount = null;\n};\n\n/**\n * Get the out-of-band members loading state, whether loading is needed or not.\n * Note that loading might be in progress and hence isn't needed.\n * @return {bool} whether or not the members of this room need to be loaded\n */\nRoomState.prototype.needsOutOfBandMembers = function () {\n return this._oobMemberFlags.status === OOB_STATUS_NOTSTARTED;\n};\n\n/**\n * Mark this room state as waiting for out-of-band members,\n * ensuring it doesn't ask for them to be requested again\n * through needsOutOfBandMembers\n */\nRoomState.prototype.markOutOfBandMembersStarted = function () {\n if (this._oobMemberFlags.status !== OOB_STATUS_NOTSTARTED) {\n return;\n }\n this._oobMemberFlags.status = OOB_STATUS_INPROGRESS;\n};\n\n/**\n * Mark this room state as having failed to fetch out-of-band members\n */\nRoomState.prototype.markOutOfBandMembersFailed = function () {\n if (this._oobMemberFlags.status !== OOB_STATUS_INPROGRESS) {\n return;\n }\n this._oobMemberFlags.status = OOB_STATUS_NOTSTARTED;\n};\n\n/**\n * Clears the loaded out-of-band members\n */\nRoomState.prototype.clearOutOfBandMembers = function () {\n var _this2 = this;\n\n var count = 0;\n (0, _keys2.default)(this.members).forEach(function (userId) {\n var member = _this2.members[userId];\n if (member.isOutOfBand()) {\n ++count;\n delete _this2.members[userId];\n }\n });\n console.log(\"LL: RoomState removed \" + count + \" members...\");\n this._oobMemberFlags.status = OOB_STATUS_NOTSTARTED;\n};\n\n/**\n * Sets the loaded out-of-band members.\n * @param {MatrixEvent[]} stateEvents array of membership state events\n */\nRoomState.prototype.setOutOfBandMembers = function (stateEvents) {\n var _this3 = this;\n\n console.log(\"LL: RoomState about to set \" + stateEvents.length + \" OOB members ...\");\n if (this._oobMemberFlags.status !== OOB_STATUS_INPROGRESS) {\n return;\n }\n console.log(\"LL: RoomState put in OOB_STATUS_FINISHED state ...\");\n this._oobMemberFlags.status = OOB_STATUS_FINISHED;\n stateEvents.forEach(function (e) {\n return _this3._setOutOfBandMember(e);\n });\n};\n\n/**\n * Sets a single out of band member, used by both setOutOfBandMembers and clone\n * @param {MatrixEvent} stateEvent membership state event\n */\nRoomState.prototype._setOutOfBandMember = function (stateEvent) {\n if (stateEvent.getType() !== 'm.room.member') {\n return;\n }\n var userId = stateEvent.getStateKey();\n var existingMember = this.getMember(userId);\n // never replace members received as part of the sync\n if (existingMember && !existingMember.isOutOfBand()) {\n return;\n }\n\n var member = this._getOrCreateMember(userId, stateEvent);\n member.setMembershipEvent(stateEvent, this);\n // needed to know which members need to be stored seperately\n // as they are not part of the sync accumulator\n // this is cleared by setMembershipEvent so when it's updated through /sync\n member.markOutOfBand();\n\n _updateDisplayNameCache(this, member.userId, member.name);\n\n this._setStateEvent(stateEvent);\n this._updateMember(member);\n this.emit(\"RoomState.members\", stateEvent, this, member);\n};\n\n/**\n * Set the current typing event for this room.\n * @param {MatrixEvent} event The typing event\n */\nRoomState.prototype.setTypingEvent = function (event) {\n utils.forEach(utils.values(this.members), function (member) {\n member.setTypingEvent(event);\n });\n};\n\n/**\n * Get the m.room.member event which has the given third party invite token.\n *\n * @param {string} token The token\n * @return {?MatrixEvent} The m.room.member event or null\n */\nRoomState.prototype.getInviteForThreePidToken = function (token) {\n return this._tokenToInvite[token] || null;\n};\n\n/**\n * Update the last modified time to the current time.\n */\nRoomState.prototype._updateModifiedTime = function () {\n this._modified = Date.now();\n};\n\n/**\n * Get the timestamp when this room state was last updated. This timestamp is\n * updated when this object has received new state events.\n * @return {number} The timestamp\n */\nRoomState.prototype.getLastModifiedTime = function () {\n return this._modified;\n};\n\n/**\n * Get user IDs with the specified display name.\n * @param {string} displayName The display name to get user IDs from.\n * @return {string[]} An array of user IDs or an empty array.\n */\nRoomState.prototype.getUserIdsWithDisplayName = function (displayName) {\n return this._displayNameToUserIds[displayName] || [];\n};\n\n/**\n * Returns true if userId is in room, event is not redacted and either sender of\n * mxEvent or has power level sufficient to redact events other than their own.\n * @param {MatrixEvent} mxEvent The event to test permission for\n * @param {string} userId The user ID of the user to test permission for\n * @return {boolean} true if the given used ID can redact given event\n */\nRoomState.prototype.maySendRedactionForEvent = function (mxEvent, userId) {\n var member = this.getMember(userId);\n if (!member || member.membership === 'leave') return false;\n\n if (mxEvent.status || mxEvent.isRedacted()) return false;\n\n // The user may have been the sender, but they can't redact their own message\n // if redactions are blocked.\n var canRedact = this.maySendEvent(\"m.room.redaction\", userId);\n if (mxEvent.getSender() === userId) return canRedact;\n\n return this._hasSufficientPowerLevelFor('redact', member.powerLevel);\n};\n\n/**\n * Returns true if the given power level is sufficient for action\n * @param {string} action The type of power level to check\n * @param {number} powerLevel The power level of the member\n * @return {boolean} true if the given power level is sufficient\n */\nRoomState.prototype._hasSufficientPowerLevelFor = function (action, powerLevel) {\n var powerLevelsEvent = this.getStateEvents('m.room.power_levels', '');\n\n var powerLevels = {};\n if (powerLevelsEvent) {\n powerLevels = powerLevelsEvent.getContent();\n }\n\n var requiredLevel = 50;\n if (utils.isNumber(powerLevels[action])) {\n requiredLevel = powerLevels[action];\n }\n\n return powerLevel >= requiredLevel;\n};\n\n/**\n * Short-form for maySendEvent('m.room.message', userId)\n * @param {string} userId The user ID of the user to test permission for\n * @return {boolean} true if the given user ID should be permitted to send\n * message events into the given room.\n */\nRoomState.prototype.maySendMessage = function (userId) {\n return this._maySendEventOfType('m.room.message', userId, false);\n};\n\n/**\n * Returns true if the given user ID has permission to send a normal\n * event of type `eventType` into this room.\n * @param {string} eventType The type of event to test\n * @param {string} userId The user ID of the user to test permission for\n * @return {boolean} true if the given user ID should be permitted to send\n * the given type of event into this room,\n * according to the room's state.\n */\nRoomState.prototype.maySendEvent = function (eventType, userId) {\n return this._maySendEventOfType(eventType, userId, false);\n};\n\n/**\n * Returns true if the given MatrixClient has permission to send a state\n * event of type `stateEventType` into this room.\n * @param {string} stateEventType The type of state events to test\n * @param {MatrixClient} cli The client to test permission for\n * @return {boolean} true if the given client should be permitted to send\n * the given type of state event into this room,\n * according to the room's state.\n */\nRoomState.prototype.mayClientSendStateEvent = function (stateEventType, cli) {\n if (cli.isGuest()) {\n return false;\n }\n return this.maySendStateEvent(stateEventType, cli.credentials.userId);\n};\n\n/**\n * Returns true if the given user ID has permission to send a state\n * event of type `stateEventType` into this room.\n * @param {string} stateEventType The type of state events to test\n * @param {string} userId The user ID of the user to test permission for\n * @return {boolean} true if the given user ID should be permitted to send\n * the given type of state event into this room,\n * according to the room's state.\n */\nRoomState.prototype.maySendStateEvent = function (stateEventType, userId) {\n return this._maySendEventOfType(stateEventType, userId, true);\n};\n\n/**\n * Returns true if the given user ID has permission to send a normal or state\n * event of type `eventType` into this room.\n * @param {string} eventType The type of event to test\n * @param {string} userId The user ID of the user to test permission for\n * @param {boolean} state If true, tests if the user may send a state\n event of this type. Otherwise tests whether\n they may send a regular event.\n * @return {boolean} true if the given user ID should be permitted to send\n * the given type of event into this room,\n * according to the room's state.\n */\nRoomState.prototype._maySendEventOfType = function (eventType, userId, state) {\n var power_levels_event = this.getStateEvents('m.room.power_levels', '');\n\n var power_levels = void 0;\n var events_levels = {};\n\n var state_default = 0;\n var events_default = 0;\n var powerLevel = 0;\n if (power_levels_event) {\n power_levels = power_levels_event.getContent();\n events_levels = power_levels.events || {};\n\n if ((0, _isFinite2.default)(power_levels.state_default)) {\n state_default = power_levels.state_default;\n } else {\n state_default = 50;\n }\n\n var userPowerLevel = power_levels.users && power_levels.users[userId];\n if ((0, _isFinite2.default)(userPowerLevel)) {\n powerLevel = userPowerLevel;\n } else if ((0, _isFinite2.default)(power_levels.users_default)) {\n powerLevel = power_levels.users_default;\n }\n\n if ((0, _isFinite2.default)(power_levels.events_default)) {\n events_default = power_levels.events_default;\n }\n }\n\n var required_level = state ? state_default : events_default;\n if ((0, _isFinite2.default)(events_levels[eventType])) {\n required_level = events_levels[eventType];\n }\n return powerLevel >= required_level;\n};\n\n/**\n * Returns true if the given user ID has permission to trigger notification\n * of type `notifLevelKey`\n * @param {string} notifLevelKey The level of notification to test (eg. 'room')\n * @param {string} userId The user ID of the user to test permission for\n * @return {boolean} true if the given user ID has permission to trigger a\n * notification of this type.\n */\nRoomState.prototype.mayTriggerNotifOfType = function (notifLevelKey, userId) {\n var member = this.getMember(userId);\n if (!member) {\n return false;\n }\n\n var powerLevelsEvent = this.getStateEvents('m.room.power_levels', '');\n\n var notifLevel = 50;\n if (powerLevelsEvent && powerLevelsEvent.getContent() && powerLevelsEvent.getContent().notifications && utils.isNumber(powerLevelsEvent.getContent().notifications[notifLevelKey])) {\n notifLevel = powerLevelsEvent.getContent().notifications[notifLevelKey];\n }\n\n return member.powerLevel >= notifLevel;\n};\n\n/**\n * The RoomState class.\n */\nmodule.exports = RoomState;\n\nfunction _updateThirdPartyTokenCache(roomState, memberEvent) {\n if (!memberEvent.getContent().third_party_invite) {\n return;\n }\n var token = (memberEvent.getContent().third_party_invite.signed || {}).token;\n if (!token) {\n return;\n }\n var threePidInvite = roomState.getStateEvents(\"m.room.third_party_invite\", token);\n if (!threePidInvite) {\n return;\n }\n roomState._tokenToInvite[token] = memberEvent;\n}\n\nfunction _updateDisplayNameCache(roomState, userId, displayName) {\n var oldName = roomState._userIdsToDisplayNames[userId];\n delete roomState._userIdsToDisplayNames[userId];\n if (oldName) {\n // Remove the old name from the cache.\n // We clobber the user_id > name lookup but the name -> [user_id] lookup\n // means we need to remove that user ID from that array rather than nuking\n // the lot.\n var strippedOldName = utils.removeHiddenChars(oldName);\n\n var existingUserIds = roomState._displayNameToUserIds[strippedOldName];\n if (existingUserIds) {\n // remove this user ID from this array\n var filteredUserIDs = existingUserIds.filter(function (id) {\n return id !== userId;\n });\n roomState._displayNameToUserIds[strippedOldName] = filteredUserIDs;\n }\n }\n\n roomState._userIdsToDisplayNames[userId] = displayName;\n\n var strippedDisplayname = displayName && utils.removeHiddenChars(displayName);\n // an empty stripped displayname (undefined/'') will be set to MXID in room-member.js\n if (strippedDisplayname) {\n if (!roomState._displayNameToUserIds[strippedDisplayname]) {\n roomState._displayNameToUserIds[strippedDisplayname] = [];\n }\n roomState._displayNameToUserIds[strippedDisplayname].push(userId);\n }\n}\n\n/**\n * Fires whenever the event dictionary in room state is updated.\n * @event module:client~MatrixClient#\"RoomState.events\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomState} state The room state whose RoomState.events dictionary\n * was updated.\n * @example\n * matrixClient.on(\"RoomState.events\", function(event, state){\n * var newStateEvent = event;\n * });\n */\n\n/**\n * Fires whenever a member in the members dictionary is updated in any way.\n * @event module:client~MatrixClient#\"RoomState.members\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomState} state The room state whose RoomState.members dictionary\n * was updated.\n * @param {RoomMember} member The room member that was updated.\n * @example\n * matrixClient.on(\"RoomState.members\", function(event, state, member){\n * var newMembershipState = member.membership;\n * });\n */\n\n/**\n* Fires whenever a member is added to the members dictionary. The RoomMember\n* will not be fully populated yet (e.g. no membership state) but will already\n* be available in the members dictionary.\n* @event module:client~MatrixClient#\"RoomState.newMember\"\n* @param {MatrixEvent} event The matrix event which caused this event to fire.\n* @param {RoomState} state The room state whose RoomState.members dictionary\n* was updated with a new entry.\n* @param {RoomMember} member The room member that was added.\n* @example\n* matrixClient.on(\"RoomState.newMember\", function(event, state, member){\n* // add event listeners on 'member'\n* });\n*/\n//# sourceMappingURL=room-state.js.map","module.exports = { \"default\": require(\"core-js/library/fn/number/is-finite\"), __esModule: true };","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/room\n */\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _isInteger = require(\"babel-runtime/core-js/number/is-integer\");\n\nvar _isInteger2 = _interopRequireDefault(_isInteger);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _promise = require(\"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _ReEmitter = require(\"../ReEmitter\");\n\nvar _ReEmitter2 = _interopRequireDefault(_ReEmitter);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EventEmitter = require(\"events\").EventEmitter;\n\nvar EventStatus = require(\"./event\").EventStatus;\nvar RoomSummary = require(\"./room-summary\");\nvar RoomMember = require(\"./room-member\");\nvar MatrixEvent = require(\"./event\").MatrixEvent;\nvar utils = require(\"../utils\");\nvar ContentRepo = require(\"../content-repo\");\nvar EventTimeline = require(\"./event-timeline\");\nvar EventTimelineSet = require(\"./event-timeline-set\");\n\nvar LATEST_ROOM_VERSION = '1';\n\nfunction synthesizeReceipt(userId, event, receiptType) {\n // console.log(\"synthesizing receipt for \"+event.getId());\n // This is really ugly because JS has no way to express an object literal\n // where the name of a key comes from an expression\n var fakeReceipt = {\n content: {},\n type: \"m.receipt\",\n room_id: event.getRoomId()\n };\n fakeReceipt.content[event.getId()] = {};\n fakeReceipt.content[event.getId()][receiptType] = {};\n fakeReceipt.content[event.getId()][receiptType][userId] = {\n ts: event.getTs()\n };\n return new MatrixEvent(fakeReceipt);\n}\n\n/**\n * Construct a new Room.\n *\n * <p>For a room, we store an ordered sequence of timelines, which may or may not\n * be continuous. Each timeline lists a series of events, as well as tracking\n * the room state at the start and the end of the timeline. It also tracks\n * forward and backward pagination tokens, as well as containing links to the\n * next timeline in the sequence.\n *\n * <p>There is one special timeline - the 'live' timeline, which represents the\n * timeline to which events are being added in real-time as they are received\n * from the /sync API. Note that you should not retain references to this\n * timeline - even if it is the current timeline right now, it may not remain\n * so if the server gives us a timeline gap in /sync.\n *\n * <p>In order that we can find events from their ids later, we also maintain a\n * map from event_id to timeline and index.\n *\n * @constructor\n * @alias module:models/room\n * @param {string} roomId Required. The ID of this room.\n * @param {MatrixClient} client Required. The client, used to lazy load members.\n * @param {string} myUserId Required. The ID of the syncing user.\n * @param {Object=} opts Configuration options\n * @param {*} opts.storageToken Optional. The token which a data store can use\n * to remember the state of the room. What this means is dependent on the store\n * implementation.\n *\n * @param {String=} opts.pendingEventOrdering Controls where pending messages\n * appear in a room's timeline. If \"<b>chronological</b>\", messages will appear\n * in the timeline when the call to <code>sendEvent</code> was made. If\n * \"<b>detached</b>\", pending messages will appear in a separate list,\n * accessbile via {@link module:models/room#getPendingEvents}. Default:\n * \"chronological\".\n *\n * @param {boolean} [opts.timelineSupport = false] Set to true to enable improved\n * timeline support.\n *\n * @prop {string} roomId The ID of this room.\n * @prop {string} name The human-readable display name for this room.\n * @prop {Array<MatrixEvent>} timeline The live event timeline for this room,\n * with the oldest event at index 0. Present for backwards compatibility -\n * prefer getLiveTimeline().getEvents().\n * @prop {object} tags Dict of room tags; the keys are the tag name and the values\n * are any metadata associated with the tag - e.g. { \"fav\" : { order: 1 } }\n * @prop {object} accountData Dict of per-room account_data events; the keys are the\n * event type and the values are the events.\n * @prop {RoomState} oldState The state of the room at the time of the oldest\n * event in the live timeline. Present for backwards compatibility -\n * prefer getLiveTimeline().getState(EventTimeline.BACKWARDS).\n * @prop {RoomState} currentState The state of the room at the time of the\n * newest event in the timeline. Present for backwards compatibility -\n * prefer getLiveTimeline().getState(EventTimeline.FORWARDS).\n * @prop {RoomSummary} summary The room summary.\n * @prop {*} storageToken A token which a data store can use to remember\n * the state of the room.\n */\nfunction Room(roomId, client, myUserId, opts) {\n opts = opts || {};\n opts.pendingEventOrdering = opts.pendingEventOrdering || \"chronological\";\n\n this.reEmitter = new _ReEmitter2.default(this);\n\n if ([\"chronological\", \"detached\"].indexOf(opts.pendingEventOrdering) === -1) {\n throw new Error(\"opts.pendingEventOrdering MUST be either 'chronological' or \" + \"'detached'. Got: '\" + opts.pendingEventOrdering + \"'\");\n }\n\n this.myUserId = myUserId;\n this.roomId = roomId;\n this.name = roomId;\n this.tags = {\n // $tagName: { $metadata: $value },\n // $tagName: { $metadata: $value },\n };\n this.accountData = {\n // $eventType: $event\n };\n this.summary = null;\n this.storageToken = opts.storageToken;\n this._opts = opts;\n this._txnToEvent = {}; // Pending in-flight requests { string: MatrixEvent }\n // receipts should clobber based on receipt_type and user_id pairs hence\n // the form of this structure. This is sub-optimal for the exposed APIs\n // which pass in an event ID and get back some receipts, so we also store\n // a pre-cached list for this purpose.\n this._receipts = {\n // receipt_type: {\n // user_id: {\n // eventId: <event_id>,\n // data: <receipt_data>\n // }\n // }\n };\n this._receiptCacheByEventId = {\n // $event_id: [{\n // type: $type,\n // userId: $user_id,\n // data: <receipt data>\n // }]\n };\n // only receipts that came from the server, not synthesized ones\n this._realReceipts = {};\n\n this._notificationCounts = {};\n\n // all our per-room timeline sets. the first one is the unfiltered ones;\n // the subsequent ones are the filtered ones in no particular order.\n this._timelineSets = [new EventTimelineSet(this, opts)];\n this.reEmitter.reEmit(this.getUnfilteredTimelineSet(), [\"Room.timeline\", \"Room.timelineReset\"]);\n\n this._fixUpLegacyTimelineFields();\n\n // any filtered timeline sets we're maintaining for this room\n this._filteredTimelineSets = {\n // filter_id: timelineSet\n };\n\n if (this._opts.pendingEventOrdering == \"detached\") {\n this._pendingEventList = [];\n }\n\n // read by megolm; boolean value - null indicates \"use global value\"\n this._blacklistUnverifiedDevices = null;\n this._selfMembership = null;\n this._summaryHeroes = null;\n // awaited by getEncryptionTargetMembers while room members are loading\n\n this._client = client;\n if (!this._opts.lazyLoadMembers) {\n this._membersPromise = _promise2.default.resolve();\n } else {\n this._membersPromise = null;\n }\n}\n\nutils.inherits(Room, EventEmitter);\n\n/**\n * Gets the version of the room\n * @returns {string} The version of the room, or null if it could not be determined\n */\nRoom.prototype.getVersion = function () {\n var createEvent = this.currentState.getStateEvents(\"m.room.create\", \"\");\n if (!createEvent) {\n console.warn(\"Room \" + this.room_id + \" does not have an m.room.create event\");\n return '1';\n }\n var ver = createEvent.getContent()['room_version'];\n if (ver === undefined) return '1';\n return ver;\n};\n\n/**\n * Determines whether this room needs to be upgraded to a new version\n * @returns {string?} What version the room should be upgraded to, or null if\n * the room does not require upgrading at this time.\n */\nRoom.prototype.shouldUpgradeToVersion = function () {\n // This almost certainly won't be the way this actually works - this\n // is essentially a stub method.\n if (this.getVersion() === LATEST_ROOM_VERSION) return null;\n return LATEST_ROOM_VERSION;\n};\n\n/**\n * Determines whether the given user is permitted to perform a room upgrade\n * @param {String} userId The ID of the user to test against\n * @returns {bool} True if the given user is permitted to upgrade the room\n */\nRoom.prototype.userMayUpgradeRoom = function (userId) {\n return this.currentState.maySendStateEvent(\"m.room.tombstone\", userId);\n};\n\n/**\n * Get the list of pending sent events for this room\n *\n * @return {module:models/event.MatrixEvent[]} A list of the sent events\n * waiting for remote echo.\n *\n * @throws If <code>opts.pendingEventOrdering</code> was not 'detached'\n */\nRoom.prototype.getPendingEvents = function () {\n if (this._opts.pendingEventOrdering !== \"detached\") {\n throw new Error(\"Cannot call getPendingEventList with pendingEventOrdering == \" + this._opts.pendingEventOrdering);\n }\n\n return this._pendingEventList;\n};\n\n/**\n * Get the live unfiltered timeline for this room.\n *\n * @return {module:models/event-timeline~EventTimeline} live timeline\n */\nRoom.prototype.getLiveTimeline = function () {\n return this.getUnfilteredTimelineSet().getLiveTimeline();\n};\n\n/**\n * @param {string} myUserId the user id for the logged in member\n * @return {string} the membership type (join | leave | invite) for the logged in user\n */\nRoom.prototype.getMyMembership = function () {\n return this._selfMembership;\n};\n\n/**\n * If this room is a DM we're invited to,\n * try to find out who invited us\n * @return {string} user id of the inviter\n */\nRoom.prototype.getDMInviter = function () {\n if (this.myUserId) {\n var me = this.getMember(this.myUserId);\n if (me) {\n return me.getDMInviter();\n }\n }\n if (this._selfMembership === \"invite\") {\n // fall back to summary information\n var memberCount = this.getInvitedAndJoinedMemberCount();\n if (memberCount == 2 && this._summaryHeroes.length) {\n return this._summaryHeroes[0];\n }\n }\n};\n\n/**\n * Assuming this room is a DM room, tries to guess with which user.\n * @return {string} user id of the other member (could be syncing user)\n */\nRoom.prototype.guessDMUserId = function () {\n var _this = this;\n\n var me = this.getMember(this.myUserId);\n if (me) {\n var inviterId = me.getDMInviter();\n if (inviterId) {\n return inviterId;\n }\n }\n // remember, we're assuming this room is a DM,\n // so returning the first member we find should be fine\n var hasHeroes = Array.isArray(this._summaryHeroes) && this._summaryHeroes.length;\n if (hasHeroes) {\n return this._summaryHeroes[0];\n }\n var members = this.currentState.getMembers();\n var anyMember = members.find(function (m) {\n return m.userId !== _this.myUserId;\n });\n if (anyMember) {\n return anyMember.userId;\n }\n // it really seems like I'm the only user in the room\n // so I probably created a room with just me in it\n // and marked it as a DM. Ok then\n return this.myUserId;\n};\n\nRoom.prototype.getAvatarFallbackMember = function () {\n var _this2 = this;\n\n var memberCount = this.getInvitedAndJoinedMemberCount();\n if (memberCount > 2) {\n return;\n }\n var hasHeroes = Array.isArray(this._summaryHeroes) && this._summaryHeroes.length;\n if (hasHeroes) {\n var availableMember = this._summaryHeroes.map(function (userId) {\n return _this2.getMember(userId);\n }).find(function (member) {\n return !!member;\n });\n if (availableMember) {\n return availableMember;\n }\n }\n var members = this.currentState.getMembers();\n // could be different than memberCount\n // as this includes left members\n if (members.length <= 2) {\n var _availableMember = members.find(function (m) {\n return m.userId !== _this2.myUserId;\n });\n if (_availableMember) {\n return _availableMember;\n }\n }\n // if all else fails, try falling back to a user,\n // and create a one-off member for it\n if (hasHeroes) {\n var availableUser = this._summaryHeroes.map(function (userId) {\n return _this2._client.getUser(userId);\n }).find(function (user) {\n return !!user;\n });\n if (availableUser) {\n var member = new RoomMember(this.roomId, availableUser.userId);\n member.user = availableUser;\n return member;\n }\n }\n};\n\n/**\n * Sets the membership this room was received as during sync\n * @param {string} membership join | leave | invite\n */\nRoom.prototype.updateMyMembership = function (membership) {\n var prevMembership = this._selfMembership;\n this._selfMembership = membership;\n if (prevMembership !== membership) {\n if (membership === \"leave\") {\n this._cleanupAfterLeaving();\n }\n this.emit(\"Room.myMembership\", this, membership, prevMembership);\n }\n};\n\nRoom.prototype._loadMembersFromServer = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var lastSyncToken, queryString, path, http, response;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n lastSyncToken = this._client.store.getSyncToken();\n queryString = utils.encodeParams({\n not_membership: \"leave\",\n at: lastSyncToken\n });\n path = utils.encodeUri(\"/rooms/$roomId/members?\" + queryString, { $roomId: this.roomId });\n http = this._client._http;\n _context.next = 6;\n return (0, _bluebird.resolve)(http.authedRequest(undefined, \"GET\", path));\n\n case 6:\n response = _context.sent;\n return _context.abrupt(\"return\", response.chunk);\n\n case 8:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n}));\n\nRoom.prototype._loadMembers = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var fromServer, rawMembersEvents, memberEvents;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // were the members loaded from the server?\n fromServer = false;\n _context2.next = 3;\n return (0, _bluebird.resolve)(this._client.store.getOutOfBandMembers(this.roomId));\n\n case 3:\n rawMembersEvents = _context2.sent;\n\n if (!(rawMembersEvents === null)) {\n _context2.next = 10;\n break;\n }\n\n fromServer = true;\n _context2.next = 8;\n return (0, _bluebird.resolve)(this._loadMembersFromServer());\n\n case 8:\n rawMembersEvents = _context2.sent;\n\n console.log(\"LL: got \" + rawMembersEvents.length + \" \" + (\"members from server for room \" + this.roomId));\n\n case 10:\n memberEvents = rawMembersEvents.map(this._client.getEventMapper());\n return _context2.abrupt(\"return\", { memberEvents: memberEvents, fromServer: fromServer });\n\n case 12:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n}));\n\n/**\n * Preloads the member list in case lazy loading\n * of memberships is in use. Can be called multiple times,\n * it will only preload once.\n * @return {Promise} when preloading is done and\n * accessing the members on the room will take\n * all members in the room into account\n */\nRoom.prototype.loadMembersIfNeeded = function () {\n var _this3 = this;\n\n if (this._membersPromise) {\n return this._membersPromise;\n }\n\n // mark the state so that incoming messages while\n // the request is in flight get marked as superseding\n // the OOB members\n this.currentState.markOutOfBandMembersStarted();\n\n var inMemoryUpdate = this._loadMembers().then(function (result) {\n _this3.currentState.setOutOfBandMembers(result.memberEvents);\n // now the members are loaded, start to track the e2e devices if needed\n if (_this3._client.isRoomEncrypted(_this3.roomId)) {\n _this3._client._crypto.trackRoomDevices(_this3.roomId);\n }\n return result.fromServer;\n }).catch(function (err) {\n // allow retries on fail\n _this3._membersPromise = null;\n _this3.currentState.markOutOfBandMembersFailed();\n throw err;\n });\n // update members in storage, but don't wait for it\n inMemoryUpdate.then(function (fromServer) {\n if (fromServer) {\n var oobMembers = _this3.currentState.getMembers().filter(function (m) {\n return m.isOutOfBand();\n }).map(function (m) {\n return m.events.member.event;\n });\n console.log(\"LL: telling store to write \" + oobMembers.length + (\" members for room \" + _this3.roomId));\n var store = _this3._client.store;\n return store.setOutOfBandMembers(_this3.roomId, oobMembers)\n // swallow any IDB error as we don't want to fail\n // because of this\n .catch(function (err) {\n console.log(\"LL: storing OOB room members failed, oh well\", err);\n });\n }\n }).catch(function (err) {\n // as this is not awaited anywhere,\n // at least show the error in the console\n console.error(err);\n });\n\n this._membersPromise = inMemoryUpdate;\n\n return this._membersPromise;\n};\n\n/**\n * Removes the lazily loaded members from storage if needed\n */\nRoom.prototype.clearLoadedMembersIfNeeded = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!(this._opts.lazyLoadMembers && this._membersPromise)) {\n _context3.next = 7;\n break;\n }\n\n _context3.next = 3;\n return (0, _bluebird.resolve)(this.loadMembersIfNeeded());\n\n case 3:\n _context3.next = 5;\n return (0, _bluebird.resolve)(this._client.store.clearOutOfBandMembers(this.roomId));\n\n case 5:\n this.currentState.clearOutOfBandMembers();\n this._membersPromise = null;\n\n case 7:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n}));\n\n/**\n * called when sync receives this room in the leave section\n * to do cleanup after leaving a room. Possibly called multiple times.\n */\nRoom.prototype._cleanupAfterLeaving = function () {\n var _this4 = this;\n\n this.clearLoadedMembersIfNeeded().catch(function (err) {\n console.error(\"error after clearing loaded members from \" + (\"room \" + _this4.roomId + \" after leaving\"));\n console.dir(err);\n });\n};\n\n/**\n * Reset the live timeline of all timelineSets, and start new ones.\n *\n * <p>This is used when /sync returns a 'limited' timeline.\n *\n * @param {string=} backPaginationToken token for back-paginating the new timeline\n * @param {string=} forwardPaginationToken token for forward-paginating the old live timeline,\n * if absent or null, all timelines are reset, removing old ones (including the previous live\n * timeline which would otherwise be unable to paginate forwards without this token).\n * Removing just the old live timeline whilst preserving previous ones is not supported.\n */\nRoom.prototype.resetLiveTimeline = function (backPaginationToken, forwardPaginationToken) {\n for (var i = 0; i < this._timelineSets.length; i++) {\n this._timelineSets[i].resetLiveTimeline(backPaginationToken, forwardPaginationToken);\n }\n\n this._fixUpLegacyTimelineFields();\n};\n\n/**\n * Fix up this.timeline, this.oldState and this.currentState\n *\n * @private\n */\nRoom.prototype._fixUpLegacyTimelineFields = function () {\n // maintain this.timeline as a reference to the live timeline,\n // and this.oldState and this.currentState as references to the\n // state at the start and end of that timeline. These are more\n // for backwards-compatibility than anything else.\n this.timeline = this.getLiveTimeline().getEvents();\n this.oldState = this.getLiveTimeline().getState(EventTimeline.BACKWARDS);\n this.currentState = this.getLiveTimeline().getState(EventTimeline.FORWARDS);\n};\n\n/**\n * Return the timeline sets for this room.\n * @return {EventTimelineSet[]} array of timeline sets for this room\n */\nRoom.prototype.getTimelineSets = function () {\n return this._timelineSets;\n};\n\n/**\n * Helper to return the main unfiltered timeline set for this room\n * @return {EventTimelineSet} room's unfiltered timeline set\n */\nRoom.prototype.getUnfilteredTimelineSet = function () {\n return this._timelineSets[0];\n};\n\n/**\n * Get the timeline which contains the given event from the unfiltered set, if any\n *\n * @param {string} eventId event ID to look for\n * @return {?module:models/event-timeline~EventTimeline} timeline containing\n * the given event, or null if unknown\n */\nRoom.prototype.getTimelineForEvent = function (eventId) {\n return this.getUnfilteredTimelineSet().getTimelineForEvent(eventId);\n};\n\n/**\n * Add a new timeline to this room's unfiltered timeline set\n *\n * @return {module:models/event-timeline~EventTimeline} newly-created timeline\n */\nRoom.prototype.addTimeline = function () {\n return this.getUnfilteredTimelineSet().addTimeline();\n};\n\n/**\n * Get an event which is stored in our unfiltered timeline set\n *\n * @param {string} eventId event ID to look for\n * @return {?module:models/event.MatrixEvent} the given event, or undefined if unknown\n */\nRoom.prototype.findEventById = function (eventId) {\n return this.getUnfilteredTimelineSet().findEventById(eventId);\n};\n\n/**\n * Get one of the notification counts for this room\n * @param {String} type The type of notification count to get. default: 'total'\n * @return {Number} The notification count, or undefined if there is no count\n * for this type.\n */\nRoom.prototype.getUnreadNotificationCount = function (type) {\n type = type || 'total';\n return this._notificationCounts[type];\n};\n\n/**\n * Set one of the notification counts for this room\n * @param {String} type The type of notification count to set.\n * @param {Number} count The new count\n */\nRoom.prototype.setUnreadNotificationCount = function (type, count) {\n this._notificationCounts[type] = count;\n};\n\nRoom.prototype.setSummary = function (summary) {\n var _this5 = this;\n\n var heroes = summary[\"m.heroes\"];\n var joinedCount = summary[\"m.joined_member_count\"];\n var invitedCount = summary[\"m.invited_member_count\"];\n if ((0, _isInteger2.default)(joinedCount)) {\n this.currentState.setJoinedMemberCount(joinedCount);\n }\n if ((0, _isInteger2.default)(invitedCount)) {\n this.currentState.setInvitedMemberCount(invitedCount);\n }\n if (Array.isArray(heroes)) {\n // be cautious about trusting server values,\n // and make sure heroes doesn't contain our own id\n // just to be sure\n this._summaryHeroes = heroes.filter(function (userId) {\n return userId !== _this5.myUserId;\n });\n }\n};\n\n/**\n * Whether to send encrypted messages to devices within this room.\n * @param {Boolean} value true to blacklist unverified devices, null\n * to use the global value for this room.\n */\nRoom.prototype.setBlacklistUnverifiedDevices = function (value) {\n this._blacklistUnverifiedDevices = value;\n};\n\n/**\n * Whether to send encrypted messages to devices within this room.\n * @return {Boolean} true if blacklisting unverified devices, null\n * if the global value should be used for this room.\n */\nRoom.prototype.getBlacklistUnverifiedDevices = function () {\n return this._blacklistUnverifiedDevices;\n};\n\n/**\n * Get the avatar URL for a room if one was set.\n * @param {String} baseUrl The homeserver base URL. See\n * {@link module:client~MatrixClient#getHomeserverUrl}.\n * @param {Number} width The desired width of the thumbnail.\n * @param {Number} height The desired height of the thumbnail.\n * @param {string} resizeMethod The thumbnail resize method to use, either\n * \"crop\" or \"scale\".\n * @param {boolean} allowDefault True to allow an identicon for this room if an\n * avatar URL wasn't explicitly set. Default: true.\n * @return {?string} the avatar URL or null.\n */\nRoom.prototype.getAvatarUrl = function (baseUrl, width, height, resizeMethod, allowDefault) {\n var roomAvatarEvent = this.currentState.getStateEvents(\"m.room.avatar\", \"\");\n if (allowDefault === undefined) {\n allowDefault = true;\n }\n if (!roomAvatarEvent && !allowDefault) {\n return null;\n }\n\n var mainUrl = roomAvatarEvent ? roomAvatarEvent.getContent().url : null;\n if (mainUrl) {\n return ContentRepo.getHttpUriForMxc(baseUrl, mainUrl, width, height, resizeMethod);\n } else if (allowDefault) {\n return ContentRepo.getIdenticonUri(baseUrl, this.roomId, width, height);\n }\n\n return null;\n};\n\n/**\n * Get the aliases this room has according to the room's state\n * The aliases returned by this function may not necessarily\n * still point to this room.\n * @return {array} The room's alias as an array of strings\n */\nRoom.prototype.getAliases = function () {\n var alias_strings = [];\n\n var alias_events = this.currentState.getStateEvents(\"m.room.aliases\");\n if (alias_events) {\n for (var i = 0; i < alias_events.length; ++i) {\n var alias_event = alias_events[i];\n if (utils.isArray(alias_event.getContent().aliases)) {\n Array.prototype.push.apply(alias_strings, alias_event.getContent().aliases);\n }\n }\n }\n return alias_strings;\n};\n\n/**\n * Get this room's canonical alias\n * The alias returned by this function may not necessarily\n * still point to this room.\n * @return {?string} The room's canonical alias, or null if there is none\n */\nRoom.prototype.getCanonicalAlias = function () {\n var canonicalAlias = this.currentState.getStateEvents(\"m.room.canonical_alias\", \"\");\n if (canonicalAlias) {\n return canonicalAlias.getContent().alias;\n }\n return null;\n};\n\n/**\n * Add events to a timeline\n *\n * <p>Will fire \"Room.timeline\" for each event added.\n *\n * @param {MatrixEvent[]} events A list of events to add.\n *\n * @param {boolean} toStartOfTimeline True to add these events to the start\n * (oldest) instead of the end (newest) of the timeline. If true, the oldest\n * event will be the <b>last</b> element of 'events'.\n *\n * @param {module:models/event-timeline~EventTimeline} timeline timeline to\n * add events to.\n *\n * @param {string=} paginationToken token for the next batch of events\n *\n * @fires module:client~MatrixClient#event:\"Room.timeline\"\n *\n */\nRoom.prototype.addEventsToTimeline = function (events, toStartOfTimeline, timeline, paginationToken) {\n timeline.getTimelineSet().addEventsToTimeline(events, toStartOfTimeline, timeline, paginationToken);\n};\n\n/**\n * Get a member from the current room state.\n * @param {string} userId The user ID of the member.\n * @return {RoomMember} The member or <code>null</code>.\n */\nRoom.prototype.getMember = function (userId) {\n return this.currentState.getMember(userId);\n};\n\n/**\n * Get a list of members whose membership state is \"join\".\n * @return {RoomMember[]} A list of currently joined members.\n */\nRoom.prototype.getJoinedMembers = function () {\n return this.getMembersWithMembership(\"join\");\n};\n\n/**\n * Returns the number of joined members in this room\n * This method caches the result.\n * This is a wrapper around the method of the same name in roomState, returning\n * its result for the room's current state.\n * @return {integer} The number of members in this room whose membership is 'join'\n */\nRoom.prototype.getJoinedMemberCount = function () {\n return this.currentState.getJoinedMemberCount();\n};\n\n/**\n * Returns the number of invited members in this room\n * @return {integer} The number of members in this room whose membership is 'invite'\n */\nRoom.prototype.getInvitedMemberCount = function () {\n return this.currentState.getInvitedMemberCount();\n};\n\n/**\n * Returns the number of invited + joined members in this room\n * @return {integer} The number of members in this room whose membership is 'invite' or 'join'\n */\nRoom.prototype.getInvitedAndJoinedMemberCount = function () {\n return this.getInvitedMemberCount() + this.getJoinedMemberCount();\n};\n\n/**\n * Get a list of members with given membership state.\n * @param {string} membership The membership state.\n * @return {RoomMember[]} A list of members with the given membership state.\n */\nRoom.prototype.getMembersWithMembership = function (membership) {\n return utils.filter(this.currentState.getMembers(), function (m) {\n return m.membership === membership;\n });\n};\n\n/**\n * Get a list of members we should be encrypting for in this room\n * @return {Promise<RoomMember[]>} A list of members who\n * we should encrypt messages for in this room.\n */\nRoom.prototype.getEncryptionTargetMembers = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n var members;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return (0, _bluebird.resolve)(this.loadMembersIfNeeded());\n\n case 2:\n members = this.getMembersWithMembership(\"join\");\n\n if (this.shouldEncryptForInvitedMembers()) {\n members = members.concat(this.getMembersWithMembership(\"invite\"));\n }\n return _context4.abrupt(\"return\", members);\n\n case 5:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n}));\n\n/**\n * Determine whether we should encrypt messages for invited users in this room\n * @return {boolean} if we should encrypt messages for invited users\n */\nRoom.prototype.shouldEncryptForInvitedMembers = function () {\n var ev = this.currentState.getStateEvents(\"m.room.history_visibility\", \"\");\n return ev && ev.getContent() && ev.getContent().history_visibility !== \"joined\";\n};\n\n/**\n * Get the default room name (i.e. what a given user would see if the\n * room had no m.room.name)\n * @param {string} userId The userId from whose perspective we want\n * to calculate the default name\n * @return {string} The default room name\n */\nRoom.prototype.getDefaultRoomName = function (userId) {\n return calculateRoomName(this, userId, true);\n};\n\n/**\n* Check if the given user_id has the given membership state.\n* @param {string} userId The user ID to check.\n* @param {string} membership The membership e.g. <code>'join'</code>\n* @return {boolean} True if this user_id has the given membership state.\n*/\nRoom.prototype.hasMembershipState = function (userId, membership) {\n var member = this.getMember(userId);\n if (!member) {\n return false;\n }\n return member.membership === membership;\n};\n\n/**\n * Add a timelineSet for this room with the given filter\n * @param {Filter} filter The filter to be applied to this timelineSet\n * @return {EventTimelineSet} The timelineSet\n */\nRoom.prototype.getOrCreateFilteredTimelineSet = function (filter) {\n if (this._filteredTimelineSets[filter.filterId]) {\n return this._filteredTimelineSets[filter.filterId];\n }\n var opts = (0, _assign2.default)({ filter: filter }, this._opts);\n var timelineSet = new EventTimelineSet(this, opts);\n this.reEmitter.reEmit(timelineSet, [\"Room.timeline\", \"Room.timelineReset\"]);\n this._filteredTimelineSets[filter.filterId] = timelineSet;\n this._timelineSets.push(timelineSet);\n\n // populate up the new timelineSet with filtered events from our live\n // unfiltered timeline.\n //\n // XXX: This is risky as our timeline\n // may have grown huge and so take a long time to filter.\n // see https://github.com/vector-im/vector-web/issues/2109\n\n var unfilteredLiveTimeline = this.getLiveTimeline();\n\n unfilteredLiveTimeline.getEvents().forEach(function (event) {\n timelineSet.addLiveEvent(event);\n });\n\n // find the earliest unfiltered timeline\n var timeline = unfilteredLiveTimeline;\n while (timeline.getNeighbouringTimeline(EventTimeline.BACKWARDS)) {\n timeline = timeline.getNeighbouringTimeline(EventTimeline.BACKWARDS);\n }\n\n timelineSet.getLiveTimeline().setPaginationToken(timeline.getPaginationToken(EventTimeline.BACKWARDS), EventTimeline.BACKWARDS);\n\n // alternatively, we could try to do something like this to try and re-paginate\n // in the filtered events from nothing, but Mark says it's an abuse of the API\n // to do so:\n //\n // timelineSet.resetLiveTimeline(\n // unfilteredLiveTimeline.getPaginationToken(EventTimeline.FORWARDS)\n // );\n\n return timelineSet;\n};\n\n/**\n * Forget the timelineSet for this room with the given filter\n *\n * @param {Filter} filter the filter whose timelineSet is to be forgotten\n */\nRoom.prototype.removeFilteredTimelineSet = function (filter) {\n var timelineSet = this._filteredTimelineSets[filter.filterId];\n delete this._filteredTimelineSets[filter.filterId];\n var i = this._timelineSets.indexOf(timelineSet);\n if (i > -1) {\n this._timelineSets.splice(i, 1);\n }\n};\n\n/**\n * Add an event to the end of this room's live timelines. Will fire\n * \"Room.timeline\".\n *\n * @param {MatrixEvent} event Event to be added\n * @param {string?} duplicateStrategy 'ignore' or 'replace'\n * @fires module:client~MatrixClient#event:\"Room.timeline\"\n * @private\n */\nRoom.prototype._addLiveEvent = function (event, duplicateStrategy) {\n var i = void 0;\n if (event.getType() === \"m.room.redaction\") {\n var redactId = event.event.redacts;\n\n // if we know about this event, redact its contents now.\n var redactedEvent = this.getUnfilteredTimelineSet().findEventById(redactId);\n if (redactedEvent) {\n redactedEvent.makeRedacted(event);\n this.emit(\"Room.redaction\", event, this);\n\n // TODO: we stash user displaynames (among other things) in\n // RoomMember objects which are then attached to other events\n // (in the sender and target fields). We should get those\n // RoomMember objects to update themselves when the events that\n // they are based on are changed.\n }\n\n // FIXME: apply redactions to notification list\n\n // NB: We continue to add the redaction event to the timeline so\n // clients can say \"so and so redacted an event\" if they wish to. Also\n // this may be needed to trigger an update.\n }\n\n if (event.getUnsigned().transaction_id) {\n var existingEvent = this._txnToEvent[event.getUnsigned().transaction_id];\n if (existingEvent) {\n // remote echo of an event we sent earlier\n this._handleRemoteEcho(event, existingEvent);\n return;\n }\n }\n\n // add to our timeline sets\n for (i = 0; i < this._timelineSets.length; i++) {\n this._timelineSets[i].addLiveEvent(event, duplicateStrategy);\n }\n\n // synthesize and inject implicit read receipts\n // Done after adding the event because otherwise the app would get a read receipt\n // pointing to an event that wasn't yet in the timeline\n // Don't synthesize RR for m.room.redaction as this causes the RR to go missing.\n if (event.sender && event.getType() !== \"m.room.redaction\") {\n this.addReceipt(synthesizeReceipt(event.sender.userId, event, \"m.read\"), true);\n\n // Any live events from a user could be taken as implicit\n // presence information: evidence that they are currently active.\n // ...except in a world where we use 'user.currentlyActive' to reduce\n // presence spam, this isn't very useful - we'll get a transition when\n // they are no longer currently active anyway. So don't bother to\n // reset the lastActiveAgo and lastPresenceTs from the RoomState's user.\n }\n};\n\n/**\n * Add a pending outgoing event to this room.\n *\n * <p>The event is added to either the pendingEventList, or the live timeline,\n * depending on the setting of opts.pendingEventOrdering.\n *\n * <p>This is an internal method, intended for use by MatrixClient.\n *\n * @param {module:models/event.MatrixEvent} event The event to add.\n *\n * @param {string} txnId Transaction id for this outgoing event\n *\n * @fires module:client~MatrixClient#event:\"Room.localEchoUpdated\"\n *\n * @throws if the event doesn't have status SENDING, or we aren't given a\n * unique transaction id.\n */\nRoom.prototype.addPendingEvent = function (event, txnId) {\n if (event.status !== EventStatus.SENDING) {\n throw new Error(\"addPendingEvent called on an event with status \" + event.status);\n }\n\n if (this._txnToEvent[txnId]) {\n throw new Error(\"addPendingEvent called on an event with known txnId \" + txnId);\n }\n\n // call setEventMetadata to set up event.sender etc\n // as event is shared over all timelineSets, we set up its metadata based\n // on the unfiltered timelineSet.\n EventTimeline.setEventMetadata(event, this.getLiveTimeline().getState(EventTimeline.FORWARDS), false);\n\n this._txnToEvent[txnId] = event;\n\n if (this._opts.pendingEventOrdering == \"detached\") {\n this._pendingEventList.push(event);\n } else {\n for (var i = 0; i < this._timelineSets.length; i++) {\n var timelineSet = this._timelineSets[i];\n if (timelineSet.getFilter()) {\n if (this._filter.filterRoomTimeline([event]).length) {\n timelineSet.addEventToTimeline(event, timelineSet.getLiveTimeline(), false);\n }\n } else {\n timelineSet.addEventToTimeline(event, timelineSet.getLiveTimeline(), false);\n }\n }\n }\n\n this.emit(\"Room.localEchoUpdated\", event, this, null, null);\n};\n\n/**\n * Deal with the echo of a message we sent.\n *\n * <p>We move the event to the live timeline if it isn't there already, and\n * update it.\n *\n * @param {module:models/event.MatrixEvent} remoteEvent The event received from\n * /sync\n * @param {module:models/event.MatrixEvent} localEvent The local echo, which\n * should be either in the _pendingEventList or the timeline.\n *\n * @fires module:client~MatrixClient#event:\"Room.localEchoUpdated\"\n * @private\n */\nRoom.prototype._handleRemoteEcho = function (remoteEvent, localEvent) {\n var oldEventId = localEvent.getId();\n var newEventId = remoteEvent.getId();\n var oldStatus = localEvent.status;\n\n // no longer pending\n delete this._txnToEvent[remoteEvent.transaction_id];\n\n // if it's in the pending list, remove it\n if (this._pendingEventList) {\n utils.removeElement(this._pendingEventList, function (ev) {\n return ev.getId() == oldEventId;\n }, false);\n }\n\n // replace the event source (this will preserve the plaintext payload if\n // any, which is good, because we don't want to try decoding it again).\n localEvent.handleRemoteEcho(remoteEvent.event);\n\n for (var i = 0; i < this._timelineSets.length; i++) {\n var timelineSet = this._timelineSets[i];\n\n // if it's already in the timeline, update the timeline map. If it's not, add it.\n timelineSet.handleRemoteEcho(localEvent, oldEventId, newEventId);\n }\n\n this.emit(\"Room.localEchoUpdated\", localEvent, this, oldEventId, oldStatus);\n};\n\n/* a map from current event status to a list of allowed next statuses\n */\nvar ALLOWED_TRANSITIONS = {};\n\nALLOWED_TRANSITIONS[EventStatus.ENCRYPTING] = [EventStatus.SENDING, EventStatus.NOT_SENT];\n\nALLOWED_TRANSITIONS[EventStatus.SENDING] = [EventStatus.ENCRYPTING, EventStatus.QUEUED, EventStatus.NOT_SENT, EventStatus.SENT];\n\nALLOWED_TRANSITIONS[EventStatus.QUEUED] = [EventStatus.SENDING, EventStatus.CANCELLED];\n\nALLOWED_TRANSITIONS[EventStatus.SENT] = [];\n\nALLOWED_TRANSITIONS[EventStatus.NOT_SENT] = [EventStatus.SENDING, EventStatus.QUEUED, EventStatus.CANCELLED];\n\nALLOWED_TRANSITIONS[EventStatus.CANCELLED] = [];\n\n/**\n * Update the status / event id on a pending event, to reflect its transmission\n * progress.\n *\n * <p>This is an internal method.\n *\n * @param {MatrixEvent} event local echo event\n * @param {EventStatus} newStatus status to assign\n * @param {string} newEventId new event id to assign. Ignored unless\n * newStatus == EventStatus.SENT.\n * @fires module:client~MatrixClient#event:\"Room.localEchoUpdated\"\n */\nRoom.prototype.updatePendingEvent = function (event, newStatus, newEventId) {\n console.log(\"setting pendingEvent status to \" + newStatus + \" in \" + event.getRoomId());\n\n // if the message was sent, we expect an event id\n if (newStatus == EventStatus.SENT && !newEventId) {\n throw new Error(\"updatePendingEvent called with status=SENT, \" + \"but no new event id\");\n }\n\n // SENT races against /sync, so we have to special-case it.\n if (newStatus == EventStatus.SENT) {\n var timeline = this.getUnfilteredTimelineSet().eventIdToTimeline(newEventId);\n if (timeline) {\n // we've already received the event via the event stream.\n // nothing more to do here.\n return;\n }\n }\n\n var oldStatus = event.status;\n var oldEventId = event.getId();\n\n if (!oldStatus) {\n throw new Error(\"updatePendingEventStatus called on an event which is \" + \"not a local echo.\");\n }\n\n var allowed = ALLOWED_TRANSITIONS[oldStatus];\n if (!allowed || allowed.indexOf(newStatus) < 0) {\n throw new Error(\"Invalid EventStatus transition \" + oldStatus + \"->\" + newStatus);\n }\n\n event.status = newStatus;\n\n if (newStatus == EventStatus.SENT) {\n // update the event id\n event.event.event_id = newEventId;\n\n // if the event was already in the timeline (which will be the case if\n // opts.pendingEventOrdering==chronological), we need to update the\n // timeline map.\n for (var i = 0; i < this._timelineSets.length; i++) {\n this._timelineSets[i].replaceEventId(oldEventId, newEventId);\n }\n } else if (newStatus == EventStatus.CANCELLED) {\n // remove it from the pending event list, or the timeline.\n if (this._pendingEventList) {\n utils.removeElement(this._pendingEventList, function (ev) {\n return ev.getId() == oldEventId;\n }, false);\n }\n this.removeEvent(oldEventId);\n }\n\n this.emit(\"Room.localEchoUpdated\", event, this, event.getId(), oldStatus);\n};\n\n/**\n * Add some events to this room. This can include state events, message\n * events and typing notifications. These events are treated as \"live\" so\n * they will go to the end of the timeline.\n *\n * @param {MatrixEvent[]} events A list of events to add.\n *\n * @param {string} duplicateStrategy Optional. Applies to events in the\n * timeline only. If this is 'replace' then if a duplicate is encountered, the\n * event passed to this function will replace the existing event in the\n * timeline. If this is not specified, or is 'ignore', then the event passed to\n * this function will be ignored entirely, preserving the existing event in the\n * timeline. Events are identical based on their event ID <b>only</b>.\n *\n * @throws If <code>duplicateStrategy</code> is not falsey, 'replace' or 'ignore'.\n */\nRoom.prototype.addLiveEvents = function (events, duplicateStrategy) {\n var i = void 0;\n if (duplicateStrategy && [\"replace\", \"ignore\"].indexOf(duplicateStrategy) === -1) {\n throw new Error(\"duplicateStrategy MUST be either 'replace' or 'ignore'\");\n }\n\n // sanity check that the live timeline is still live\n for (i = 0; i < this._timelineSets.length; i++) {\n var liveTimeline = this._timelineSets[i].getLiveTimeline();\n if (liveTimeline.getPaginationToken(EventTimeline.FORWARDS)) {\n throw new Error(\"live timeline \" + i + \" is no longer live - it has a pagination token \" + \"(\" + liveTimeline.getPaginationToken(EventTimeline.FORWARDS) + \")\");\n }\n if (liveTimeline.getNeighbouringTimeline(EventTimeline.FORWARDS)) {\n throw new Error(\"live timeline \" + i + \" is no longer live - \" + \"it has a neighbouring timeline\");\n }\n }\n\n for (i = 0; i < events.length; i++) {\n if (events[i].getType() === \"m.typing\") {\n this.currentState.setTypingEvent(events[i]);\n } else if (events[i].getType() === \"m.receipt\") {\n this.addReceipt(events[i]);\n }\n // N.B. account_data is added directly by /sync to avoid\n // having to maintain an event.isAccountData() here\n else {\n // TODO: We should have a filter to say \"only add state event\n // types X Y Z to the timeline\".\n this._addLiveEvent(events[i], duplicateStrategy);\n }\n }\n};\n\n/**\n * Removes events from this room.\n * @param {String[]} event_ids A list of event_ids to remove.\n */\nRoom.prototype.removeEvents = function (event_ids) {\n for (var i = 0; i < event_ids.length; ++i) {\n this.removeEvent(event_ids[i]);\n }\n};\n\n/**\n * Removes a single event from this room.\n *\n * @param {String} eventId The id of the event to remove\n *\n * @return {bool} true if the event was removed from any of the room's timeline sets\n */\nRoom.prototype.removeEvent = function (eventId) {\n var removedAny = false;\n for (var i = 0; i < this._timelineSets.length; i++) {\n var removed = this._timelineSets[i].removeEvent(eventId);\n if (removed) {\n removedAny = true;\n }\n }\n return removedAny;\n};\n\n/**\n * Recalculate various aspects of the room, including the room name and\n * room summary. Call this any time the room's current state is modified.\n * May fire \"Room.name\" if the room name is updated.\n * @fires module:client~MatrixClient#event:\"Room.name\"\n */\nRoom.prototype.recalculate = function () {\n // set fake stripped state events if this is an invite room so logic remains\n // consistent elsewhere.\n var self = this;\n var membershipEvent = this.currentState.getStateEvents(\"m.room.member\", this.myUserId);\n if (membershipEvent && membershipEvent.getContent().membership === \"invite\") {\n var strippedStateEvents = membershipEvent.event.invite_room_state || [];\n utils.forEach(strippedStateEvents, function (strippedEvent) {\n var existingEvent = self.currentState.getStateEvents(strippedEvent.type, strippedEvent.state_key);\n if (!existingEvent) {\n // set the fake stripped event instead\n self.currentState.setStateEvents([new MatrixEvent({\n type: strippedEvent.type,\n state_key: strippedEvent.state_key,\n content: strippedEvent.content,\n event_id: \"$fake\" + Date.now(),\n room_id: self.roomId,\n user_id: self.myUserId // technically a lie\n })]);\n }\n });\n }\n\n var oldName = this.name;\n this.name = calculateRoomName(this, this.myUserId);\n this.summary = new RoomSummary(this.roomId, {\n title: this.name\n });\n\n if (oldName !== this.name) {\n this.emit(\"Room.name\", this);\n }\n};\n\n/**\n * Get a list of user IDs who have <b>read up to</b> the given event.\n * @param {MatrixEvent} event the event to get read receipts for.\n * @return {String[]} A list of user IDs.\n */\nRoom.prototype.getUsersReadUpTo = function (event) {\n return this.getReceiptsForEvent(event).filter(function (receipt) {\n return receipt.type === \"m.read\";\n }).map(function (receipt) {\n return receipt.userId;\n });\n};\n\n/**\n * Get the ID of the event that a given user has read up to, or null if we\n * have received no read receipts from them.\n * @param {String} userId The user ID to get read receipt event ID for\n * @param {Boolean} ignoreSynthesized If true, return only receipts that have been\n * sent by the server, not implicit ones generated\n * by the JS SDK.\n * @return {String} ID of the latest event that the given user has read, or null.\n */\nRoom.prototype.getEventReadUpTo = function (userId, ignoreSynthesized) {\n var receipts = this._receipts;\n if (ignoreSynthesized) {\n receipts = this._realReceipts;\n }\n\n if (receipts[\"m.read\"] === undefined || receipts[\"m.read\"][userId] === undefined) {\n return null;\n }\n\n return receipts[\"m.read\"][userId].eventId;\n};\n\n/**\n * Get a list of receipts for the given event.\n * @param {MatrixEvent} event the event to get receipts for\n * @return {Object[]} A list of receipts with a userId, type and data keys or\n * an empty list.\n */\nRoom.prototype.getReceiptsForEvent = function (event) {\n return this._receiptCacheByEventId[event.getId()] || [];\n};\n\n/**\n * Add a receipt event to the room.\n * @param {MatrixEvent} event The m.receipt event.\n * @param {Boolean} fake True if this event is implicit\n */\nRoom.prototype.addReceipt = function (event, fake) {\n // event content looks like:\n // content: {\n // $event_id: {\n // $receipt_type: {\n // $user_id: {\n // ts: $timestamp\n // }\n // }\n // }\n // }\n if (fake === undefined) {\n fake = false;\n }\n if (!fake) {\n this._addReceiptsToStructure(event, this._realReceipts);\n // we don't bother caching real receipts by event ID\n // as there's nothing that would read it.\n }\n this._addReceiptsToStructure(event, this._receipts);\n this._receiptCacheByEventId = this._buildReceiptCache(this._receipts);\n\n // send events after we've regenerated the cache, otherwise things that\n // listened for the event would read from a stale cache\n this.emit(\"Room.receipt\", event, this);\n};\n\n/**\n * Add a receipt event to the room.\n * @param {MatrixEvent} event The m.receipt event.\n * @param {Object} receipts The object to add receipts to\n */\nRoom.prototype._addReceiptsToStructure = function (event, receipts) {\n var self = this;\n utils.keys(event.getContent()).forEach(function (eventId) {\n utils.keys(event.getContent()[eventId]).forEach(function (receiptType) {\n utils.keys(event.getContent()[eventId][receiptType]).forEach(function (userId) {\n var receipt = event.getContent()[eventId][receiptType][userId];\n\n if (!receipts[receiptType]) {\n receipts[receiptType] = {};\n }\n\n var existingReceipt = receipts[receiptType][userId];\n\n if (!existingReceipt) {\n receipts[receiptType][userId] = {};\n } else {\n // we only want to add this receipt if we think it is later\n // than the one we already have. (This is managed\n // server-side, but because we synthesize RRs locally we\n // have to do it here too.)\n var ordering = self.getUnfilteredTimelineSet().compareEventOrdering(existingReceipt.eventId, eventId);\n if (ordering !== null && ordering >= 0) {\n return;\n }\n }\n\n receipts[receiptType][userId] = {\n eventId: eventId,\n data: receipt\n };\n });\n });\n });\n};\n\n/**\n * Build and return a map of receipts by event ID\n * @param {Object} receipts A map of receipts\n * @return {Object} Map of receipts by event ID\n */\nRoom.prototype._buildReceiptCache = function (receipts) {\n var receiptCacheByEventId = {};\n utils.keys(receipts).forEach(function (receiptType) {\n utils.keys(receipts[receiptType]).forEach(function (userId) {\n var receipt = receipts[receiptType][userId];\n if (!receiptCacheByEventId[receipt.eventId]) {\n receiptCacheByEventId[receipt.eventId] = [];\n }\n receiptCacheByEventId[receipt.eventId].push({\n userId: userId,\n type: receiptType,\n data: receipt.data\n });\n });\n });\n return receiptCacheByEventId;\n};\n\n/**\n * Add a temporary local-echo receipt to the room to reflect in the\n * client the fact that we've sent one.\n * @param {string} userId The user ID if the receipt sender\n * @param {MatrixEvent} e The event that is to be acknowledged\n * @param {string} receiptType The type of receipt\n */\nRoom.prototype._addLocalEchoReceipt = function (userId, e, receiptType) {\n this.addReceipt(synthesizeReceipt(userId, e, receiptType), true);\n};\n\n/**\n * Update the room-tag event for the room. The previous one is overwritten.\n * @param {MatrixEvent} event the m.tag event\n */\nRoom.prototype.addTags = function (event) {\n // event content looks like:\n // content: {\n // tags: {\n // $tagName: { $metadata: $value },\n // $tagName: { $metadata: $value },\n // }\n // }\n\n // XXX: do we need to deep copy here?\n this.tags = event.getContent().tags || {};\n\n // XXX: we could do a deep-comparison to see if the tags have really\n // changed - but do we want to bother?\n this.emit(\"Room.tags\", event, this);\n};\n\n/**\n * Update the account_data events for this room, overwriting events of the same type.\n * @param {Array<MatrixEvent>} events an array of account_data events to add\n */\nRoom.prototype.addAccountData = function (events) {\n for (var i = 0; i < events.length; i++) {\n var event = events[i];\n if (event.getType() === \"m.tag\") {\n this.addTags(event);\n }\n this.accountData[event.getType()] = event;\n this.emit(\"Room.accountData\", event, this);\n }\n};\n\n/**\n * Access account_data event of given event type for this room\n * @param {string} type the type of account_data event to be accessed\n * @return {?MatrixEvent} the account_data event in question\n */\nRoom.prototype.getAccountData = function (type) {\n return this.accountData[type];\n};\n\n/**\n * Returns wheter the syncing user has permission to send a message in the room\n * @return {boolean} true if the user should be permitted to send\n * message events into the room.\n */\nRoom.prototype.maySendMessage = function () {\n return this.getMyMembership() === 'join' && this.currentState.maySendEvent('m.room.message', this.myUserId);\n};\n\n/**\n * This is an internal method. Calculates the name of the room from the current\n * room state.\n * @param {Room} room The matrix room.\n * @param {string} userId The client's user ID. Used to filter room members\n * correctly.\n * @param {bool} ignoreRoomNameEvent Return the implicit room name that we'd see if there\n * was no m.room.name event.\n * @return {string} The calculated room name.\n */\nfunction calculateRoomName(room, userId, ignoreRoomNameEvent) {\n if (!ignoreRoomNameEvent) {\n // check for an alias, if any. for now, assume first alias is the\n // official one.\n var mRoomName = room.currentState.getStateEvents(\"m.room.name\", \"\");\n if (mRoomName && mRoomName.getContent() && mRoomName.getContent().name) {\n return mRoomName.getContent().name;\n }\n }\n\n var alias = room.getCanonicalAlias();\n\n if (!alias) {\n var aliases = room.getAliases();\n\n if (aliases.length) {\n alias = aliases[0];\n }\n }\n if (alias) {\n return alias;\n }\n\n var joinedMemberCount = room.currentState.getJoinedMemberCount();\n var invitedMemberCount = room.currentState.getInvitedMemberCount();\n // -1 because these numbers include the syncing user\n var inviteJoinCount = joinedMemberCount + invitedMemberCount - 1;\n\n // get members that are NOT ourselves and are actually in the room.\n var otherNames = null;\n if (room._summaryHeroes) {\n // if we have a summary, the member state events\n // should be in the room state\n otherNames = room._summaryHeroes.map(function (userId) {\n var member = room.getMember(userId);\n return member ? member.name : userId;\n });\n } else {\n var otherMembers = room.currentState.getMembers().filter(function (m) {\n return m.userId !== userId && (m.membership === \"invite\" || m.membership === \"join\");\n });\n // make sure members have stable order\n otherMembers.sort(function (a, b) {\n return a.userId.localeCompare(b.userId);\n });\n // only 5 first members, immitate _summaryHeroes\n otherMembers = otherMembers.slice(0, 5);\n otherNames = otherMembers.map(function (m) {\n return m.name;\n });\n }\n\n if (inviteJoinCount) {\n return memberNamesToRoomName(otherNames, inviteJoinCount);\n }\n\n var myMembership = room.getMyMembership();\n // if I have created a room and invited people throuh\n // 3rd party invites\n if (myMembership == 'join') {\n var thirdPartyInvites = room.currentState.getStateEvents(\"m.room.third_party_invite\");\n\n if (thirdPartyInvites && thirdPartyInvites.length) {\n var thirdPartyNames = thirdPartyInvites.map(function (i) {\n return i.getContent().display_name;\n });\n\n return \"Inviting \" + memberNamesToRoomName(thirdPartyNames);\n }\n }\n // let's try to figure out who was here before\n var leftNames = otherNames;\n // if we didn't have heroes, try finding them in the room state\n if (!leftNames.length) {\n leftNames = room.currentState.getMembers().filter(function (m) {\n return m.userId !== userId && m.membership !== \"invite\" && m.membership !== \"join\";\n }).map(function (m) {\n return m.name;\n });\n }\n if (leftNames.length) {\n return \"Empty room (was \" + memberNamesToRoomName(leftNames) + \")\";\n } else {\n return \"Empty room\";\n }\n}\n\nfunction memberNamesToRoomName(names) {\n var count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : names.length + 1;\n\n var countWithoutMe = count - 1;\n if (!names.length) {\n return count <= 1 ? \"Empty room\" : null;\n } else if (names.length === 1 && countWithoutMe <= 1) {\n return names[0];\n } else if (names.length === 2 && countWithoutMe <= 2) {\n return names[0] + \" and \" + names[1];\n } else {\n var plural = countWithoutMe > 1;\n if (plural) {\n return names[0] + \" and \" + countWithoutMe + \" others\";\n } else {\n return names[0] + \" and 1 other\";\n }\n }\n}\n\n/**\n * The Room class.\n */\nmodule.exports = Room;\n\n/**\n * Fires when an event we had previously received is redacted.\n *\n * (Note this is *not* fired when the redaction happens before we receive the\n * event).\n *\n * @event module:client~MatrixClient#\"Room.redaction\"\n * @param {MatrixEvent} event The matrix event which was redacted\n * @param {Room} room The room containing the redacted event\n */\n\n/**\n * Fires whenever the name of a room is updated.\n * @event module:client~MatrixClient#\"Room.name\"\n * @param {Room} room The room whose Room.name was updated.\n * @example\n * matrixClient.on(\"Room.name\", function(room){\n * var newName = room.name;\n * });\n */\n\n/**\n * Fires whenever a receipt is received for a room\n * @event module:client~MatrixClient#\"Room.receipt\"\n * @param {event} event The receipt event\n * @param {Room} room The room whose receipts was updated.\n * @example\n * matrixClient.on(\"Room.receipt\", function(event, room){\n * var receiptContent = event.getContent();\n * });\n */\n\n/**\n * Fires whenever a room's tags are updated.\n * @event module:client~MatrixClient#\"Room.tags\"\n * @param {event} event The tags event\n * @param {Room} room The room whose Room.tags was updated.\n * @example\n * matrixClient.on(\"Room.tags\", function(event, room){\n * var newTags = event.getContent().tags;\n * if (newTags[\"favourite\"]) showStar(room);\n * });\n */\n\n/**\n * Fires whenever a room's account_data is updated.\n * @event module:client~MatrixClient#\"Room.accountData\"\n * @param {event} event The account_data event\n * @param {Room} room The room whose account_data was updated.\n * @example\n * matrixClient.on(\"Room.accountData\", function(event, room){\n * if (event.getType() === \"m.room.colorscheme\") {\n * applyColorScheme(event.getContents());\n * }\n * });\n */\n\n/**\n * Fires when the status of a transmitted event is updated.\n *\n * <p>When an event is first transmitted, a temporary copy of the event is\n * inserted into the timeline, with a temporary event id, and a status of\n * 'SENDING'.\n *\n * <p>Once the echo comes back from the server, the content of the event\n * (MatrixEvent.event) is replaced by the complete event from the homeserver,\n * thus updating its event id, as well as server-generated fields such as the\n * timestamp. Its status is set to null.\n *\n * <p>Once the /send request completes, if the remote echo has not already\n * arrived, the event is updated with a new event id and the status is set to\n * 'SENT'. The server-generated fields are of course not updated yet.\n *\n * <p>If the /send fails, In this case, the event's status is set to\n * 'NOT_SENT'. If it is later resent, the process starts again, setting the\n * status to 'SENDING'. Alternatively, the message may be cancelled, which\n * removes the event from the room, and sets the status to 'CANCELLED'.\n *\n * <p>This event is raised to reflect each of the transitions above.\n *\n * @event module:client~MatrixClient#\"Room.localEchoUpdated\"\n *\n * @param {MatrixEvent} event The matrix event which has been updated\n *\n * @param {Room} room The room containing the redacted event\n *\n * @param {string} oldEventId The previous event id (the temporary event id,\n * except when updating a successfully-sent event when its echo arrives)\n *\n * @param {EventStatus} oldStatus The previous event status.\n */\n//# sourceMappingURL=room.js.map","module.exports = { \"default\": require(\"core-js/library/fn/number/is-integer\"), __esModule: true };","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","\"use strict\";\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * @module models/group\n */\nvar EventEmitter = require(\"events\").EventEmitter;\n\nvar utils = require(\"../utils\");\n\n/**\n * Construct a new Group.\n *\n * @param {string} groupId The ID of this group.\n *\n * @prop {string} groupId The ID of this group.\n * @prop {string} name The human-readable display name for this group.\n * @prop {string} avatarUrl The mxc URL for this group's avatar.\n * @prop {string} myMembership The logged in user's membership of this group\n * @prop {Object} inviter Infomation about the user who invited the logged in user\n * to the group, if myMembership is 'invite'.\n * @prop {string} inviter.userId The user ID of the inviter\n */\nfunction Group(groupId) {\n this.groupId = groupId;\n this.name = null;\n this.avatarUrl = null;\n this.myMembership = null;\n this.inviter = null;\n}\nutils.inherits(Group, EventEmitter);\n\nGroup.prototype.setProfile = function (name, avatarUrl) {\n if (this.name === name && this.avatarUrl === avatarUrl) return;\n\n this.name = name || this.groupId;\n this.avatarUrl = avatarUrl;\n\n this.emit(\"Group.profile\", this);\n};\n\nGroup.prototype.setMyMembership = function (membership) {\n if (this.myMembership === membership) return;\n\n this.myMembership = membership;\n\n this.emit(\"Group.myMembership\", this);\n};\n\n/**\n * Sets the 'inviter' property. This does not emit an event (the inviter\n * will only change when the user is revited / reinvited to a room),\n * so set this before setting myMembership.\n * @param {Object} inviter Infomation about who invited us to the room\n */\nGroup.prototype.setInviter = function (inviter) {\n this.inviter = inviter;\n};\n\nmodule.exports = Group;\n\n/**\n * Fires whenever a group's profile information is updated.\n * This means the 'name' and 'avatarUrl' properties.\n * @event module:client~MatrixClient#\"Group.profile\"\n * @param {Group} group The group whose profile was updated.\n * @example\n * matrixClient.on(\"Group.profile\", function(group){\n * var name = group.name;\n * });\n */\n\n/**\n * Fires whenever the logged in user's membership status of\n * the group is updated.\n * @event module:client~MatrixClient#\"Group.myMembership\"\n * @param {Group} group The group in which the user's membership changed\n * @example\n * matrixClient.on(\"Group.myMembership\", function(group){\n * var myMembership = group.myMembership;\n * });\n */\n//# sourceMappingURL=group.js.map","/* Copyright 2015 Mark Haines\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n'use strict';\n\nvar escaped = /[\\\\\\\"\\x00-\\x1F]/g;\nvar escapes = {};\nfor (var i = 0; i < 0x20; ++i) {\n escapes[String.fromCharCode(i)] = (\n '\\\\U' + ('0000' + i.toString(16)).slice(-4).toUpperCase()\n );\n}\nescapes['\\b'] = '\\\\b';\nescapes['\\t'] = '\\\\t';\nescapes['\\n'] = '\\\\n';\nescapes['\\f'] = '\\\\f';\nescapes['\\r'] = '\\\\r';\nescapes['\\\"'] = '\\\\\\\"';\nescapes['\\\\'] = '\\\\\\\\';\n\nfunction escapeString(value) {\n escaped.lastIndex = 0;\n return value.replace(escaped, function(c) { return escapes[c]; });\n}\n\nfunction stringify(value) {\n switch (typeof value) {\n case 'string':\n return '\"' + escapeString(value) + '\"';\n case 'number':\n return isFinite(value) ? value : 'null';\n case 'boolean':\n return value;\n case 'object':\n if (value === null) {\n return 'null';\n }\n if (Array.isArray(value)) {\n return stringifyArray(value);\n }\n return stringifyObject(value);\n default:\n throw new Error('Cannot stringify: ' + typeof value);\n }\n}\n\nfunction stringifyArray(array) {\n var sep = '[';\n var result = '';\n for (var i = 0; i < array.length; ++i) {\n result += sep;\n sep = ',';\n result += stringify(array[i]);\n }\n if (sep != ',') {\n return '[]';\n } else {\n return result + ']';\n }\n}\n\nfunction stringifyObject(object) {\n var sep = '{';\n var result = '';\n var keys = Object.keys(object);\n keys.sort();\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n result += sep + '\"' + escapeString(key) + '\":';\n sep = ',';\n result += stringify(object[key]);\n }\n if (sep != ',') {\n return '{}';\n } else {\n return result + '}';\n }\n}\n\n/** */\nmodule.exports = {stringify: stringify};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nexports.default = createMatrixClient;\n\nvar _matrixJsSdk = require(\"matrix-js-sdk\");\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar localStorage = window.localStorage;\n\n// just *accessing* indexedDB throws an exception in firefox with\n// indexeddb disabled.\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar indexedDB = void 0;\ntry {\n indexedDB = window.indexedDB;\n} catch (e) {}\n\n/**\n * Create a new matrix client, with the persistent stores set up appropriately\n * (using localstorage/indexeddb, etc)\n *\n * @param {Object} opts options to pass to Matrix.createClient. This will be\n * extended with `sessionStore` and `store` members.\n *\n * @param {bool} useIndexedDb True to attempt to use indexeddb, or false to force\n * use of the memory store. Default: true.\n *\n * @property {string} indexedDbWorkerScript Optional URL for a web worker script\n * for IndexedDB store operations. By default, indexeddb ops are done on\n * the main thread.\n *\n * @returns {MatrixClient} the newly-created MatrixClient\n */\nfunction createMatrixClient(opts, useIndexedDb) {\n if (useIndexedDb === undefined) useIndexedDb = true;\n\n var storeOpts = {\n useAuthorizationHeader: true\n };\n\n if (localStorage) {\n storeOpts.sessionStore = new _matrixJsSdk2.default.WebStorageSessionStore(localStorage);\n }\n\n if (indexedDB && localStorage && useIndexedDb) {\n storeOpts.store = new _matrixJsSdk2.default.IndexedDBStore({\n indexedDB: indexedDB,\n dbName: \"riot-web-sync\",\n localStorage: localStorage,\n workerScript: createMatrixClient.indexedDbWorkerScript\n });\n }\n\n opts = (0, _assign2.default)(storeOpts, opts);\n\n return _matrixJsSdk2.default.createClient(opts);\n}\n\ncreateMatrixClient.indexedDbWorkerScript = null;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=createMatrixClient.js.map","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","\"use strict\";\n\nmodule.exports = {\n __locale: \"en\",\n days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n abbreviated_days: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n abbreviated_months: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n am: 'AM',\n pm: 'PM'\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Represents a controller for individual settings to alter the reading behaviour\n * based upon environmental conditions, or to react to changes and therefore update\n * the working environment.\n *\n * This is not intended to replace the functionality of a SettingsHandler, it is only\n * intended to handle environmental factors for specific settings.\n */\nvar SettingController = function () {\n function SettingController() {\n (0, _classCallCheck3.default)(this, SettingController);\n }\n\n (0, _createClass3.default)(SettingController, [{\n key: \"getValueOverride\",\n\n\n /**\n * Gets the overridden value for the setting, if any. This must return null if the\n * value is not to be overridden, otherwise it must return the new value.\n * @param {string} level The level at which the value was requested at.\n * @param {String} roomId The room ID, may be null.\n * @param {*} calculatedValue The value that the handlers think the setting should be,\n * may be null.\n * @param {string} calculatedAtLevel The level for which the calculated value was\n * calculated at. May be null.\n * @return {*} The value that should be used, or null if no override is applicable.\n */\n value: function getValueOverride(level, roomId, calculatedValue, calculatedAtLevel) {\n return null; // no override\n }\n\n /**\n * Called when the setting value has been changed.\n * @param {string} level The level at which the setting has been modified.\n * @param {String} roomId The room ID, may be null.\n * @param {*} newValue The new value for the setting, may be null.\n */\n\n }, {\n key: \"onChange\",\n value: function onChange(level, roomId, newValue) {\n // do nothing by default\n }\n }]);\n return SettingController;\n}();\n\nexports.default = SettingController;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=SettingController.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nexports.levelRoleMap = levelRoleMap;\nexports.textualPowerLevel = textualPowerLevel;\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction levelRoleMap(usersDefault) {\n var _ref;\n\n return _ref = {\n undefined: (0, _languageHandler._t)('Default'),\n 0: (0, _languageHandler._t)('Restricted')\n }, (0, _defineProperty3.default)(_ref, usersDefault, (0, _languageHandler._t)('Default')), (0, _defineProperty3.default)(_ref, 50, (0, _languageHandler._t)('Moderator')), (0, _defineProperty3.default)(_ref, 100, (0, _languageHandler._t)('Admin')), _ref;\n} /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nfunction textualPowerLevel(level, usersDefault) {\n var LEVEL_ROLE_MAP = this.levelRoleMap(usersDefault);\n if (LEVEL_ROLE_MAP[level]) {\n return LEVEL_ROLE_MAP[level] + (level !== undefined ? ' (' + level + ')' : ' (' + usersDefault + ')');\n } else {\n return level;\n }\n}\n//# sourceMappingURL=Roles.js.map","// @flow\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport BasePlatform from 'matrix-react-sdk/lib/BasePlatform';\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\nimport dis from 'matrix-react-sdk/lib/dispatcher';\n\nimport Favico from 'favico.js';\n\nexport const updateCheckStatusEnum = {\n CHECKING: 'CHECKING',\n ERROR: 'ERROR',\n NOTAVAILABLE: 'NOTAVAILABLE',\n DOWNLOADING: 'DOWNLOADING',\n READY: 'READY',\n};\n\n/**\n * Vector-specific extensions to the BasePlatform template\n */\nexport default class VectorBasePlatform extends BasePlatform {\n constructor() {\n super();\n\n // The 'animations' are really low framerate and look terrible.\n // Also it re-starts the animation every time you set the badge,\n // and we set the state each time, even if the value hasn't changed,\n // so we'd need to fix that if enabling the animation.\n this.favicon = new Favico({animation: 'none'});\n this.showUpdateCheck = false;\n this._updateFavicon();\n this.updatable = true;\n\n this.startUpdateCheck = this.startUpdateCheck.bind(this);\n this.stopUpdateCheck = this.stopUpdateCheck.bind(this);\n }\n\n getHumanReadableName(): string {\n return 'Vector Base Platform'; // no translation required: only used for analytics\n }\n\n _updateFavicon() {\n try {\n // This needs to be in in a try block as it will throw\n // if there are more than 100 badge count changes in\n // its internal queue\n let bgColor = \"#d00\",\n notif = this.notificationCount;\n\n if (this.errorDidOccur) {\n notif = notif || \"×\";\n bgColor = \"#f00\";\n }\n\n this.favicon.badge(notif, {\n bgColor: bgColor,\n });\n } catch (e) {\n console.warn(`Failed to set badge count: ${e.message}`);\n }\n }\n\n setNotificationCount(count: number) {\n if (this.notificationCount === count) return;\n super.setNotificationCount(count);\n this._updateFavicon();\n }\n\n setErrorStatus(errorDidOccur: boolean) {\n if (this.errorDidOccur === errorDidOccur) return;\n super.setErrorStatus(errorDidOccur);\n this._updateFavicon();\n }\n\n /**\n * Begin update polling, if applicable\n */\n startUpdater() {\n }\n\n /**\n * Whether we can call checkForUpdate on this platform build\n */\n canSelfUpdate(): boolean {\n return this.updatable;\n }\n\n startUpdateCheck() {\n this.showUpdateCheck = true;\n dis.dispatch({\n action: 'check_updates',\n value: { status: updateCheckStatusEnum.CHECKING },\n });\n }\n\n stopUpdateCheck() {\n this.showUpdateCheck = false;\n dis.dispatch({\n action: 'check_updates',\n value: false,\n })\n }\n\n getUpdateCheckStatusEnum() {\n return updateCheckStatusEnum;\n }\n\n /**\n * Update the currently running app to the latest available\n * version and replace this instance of the app with the\n * new version.\n */\n installUpdate() {\n }\n\n /**\n * Get a sensible default display name for the\n * device Vector is running on\n */\n getDefaultDeviceDisplayName(): string {\n return _t(\"Unknown device\");\n }\n}\n","/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _browserRequest = require('browser-request');\n\nvar _browserRequest2 = _interopRequireDefault(_browserRequest);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _sanitizeHtml = require('sanitize-html');\n\nvar _sanitizeHtml2 = _interopRequireDefault(_sanitizeHtml);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HomePage = function (_React$Component) {\n (0, _inherits3.default)(HomePage, _React$Component);\n\n function HomePage() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, HomePage);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = HomePage.__proto__ || (0, _getPrototypeOf2.default)(HomePage)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n iframeSrc: '',\n page: ''\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(HomePage, [{\n key: 'translate',\n value: function translate(s) {\n // default implementation - skins may wish to extend this\n return (0, _sanitizeHtml2.default)((0, _languageHandler._t)(s));\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n this._unmounted = false;\n\n if (this.props.teamToken && this.props.teamServerUrl) {\n this.setState({\n iframeSrc: this.props.teamServerUrl + '/static/' + this.props.teamToken + '/home.html'\n });\n } else {\n // we use request() to inline the homepage into the react component\n // so that it can inherit CSS and theming easily rather than mess around\n // with iframes and trying to synchronise document.stylesheets.\n\n var src = this.props.homePageUrl || 'home.html';\n\n (0, _browserRequest2.default)({ method: \"GET\", url: src }, function (err, response, body) {\n if (_this2._unmounted) {\n return;\n }\n\n if (err || response.status < 200 || response.status >= 300) {\n console.warn('Error loading home page: ' + err);\n _this2.setState({ page: (0, _languageHandler._t)(\"Couldn't load home page\") });\n return;\n }\n\n body = body.replace(/_t\\(['\"]([\\s\\S]*?)['\"]\\)/mg, function (match, g1) {\n return _this2.translate(g1);\n });\n _this2.setState({ page: body });\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: 'onLoginClick',\n value: function onLoginClick() {\n _dispatcher2.default.dispatch({ action: 'start_login' });\n }\n }, {\n key: 'onRegisterClick',\n value: function onRegisterClick() {\n _dispatcher2.default.dispatch({ action: 'start_registration' });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var guestWarning = \"\";\n if (this.context.matrixClient.isGuest()) {\n guestWarning = _react2.default.createElement(\n 'div',\n { className: 'mx_HomePage_guest_warning' },\n _react2.default.createElement('img', { src: 'img/warning.svg', width: '24', height: '23' }),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"You are currently using Riot anonymously as a guest.\")\n ),\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('If you would like to create a Matrix account you can <a>register</a> now.', {}, { 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: '#', onClick: _this3.onRegisterClick },\n sub\n );\n } })\n ),\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('If you already have a Matrix account you can <a>log in</a> instead.', {}, { 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: '#', onClick: _this3.onLoginClick },\n sub\n );\n } })\n )\n )\n );\n }\n\n if (this.state.iframeSrc) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_HomePage' },\n guestWarning,\n _react2.default.createElement('iframe', { src: this.state.iframeSrc })\n );\n } else {\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n return _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true, className: 'mx_HomePage' },\n guestWarning,\n _react2.default.createElement('div', { className: 'mx_HomePage_body', dangerouslySetInnerHTML: { __html: this.state.page } })\n );\n }\n }\n }]);\n return HomePage;\n}(_react2.default.Component);\n\nHomePage.displayName = 'HomePage';\nHomePage.propTypes = {\n // URL base of the team server. Optional.\n teamServerUrl: _propTypes2.default.string,\n // Team token. Optional. If set, used to get the static homepage of the team\n // associated. If unset, homePageUrl will be used.\n teamToken: _propTypes2.default.string,\n // URL to use as the iFrame src. Defaults to /home.html.\n homePageUrl: _propTypes2.default.string\n};\nHomePage.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n};\n\n\nmodule.exports = HomePage;\n//# sourceMappingURL=HomePage.js.map","var Tokenizer = require(\"./Tokenizer.js\");\n\n/*\n\tOptions:\n\n\txmlMode: Disables the special behavior for script/style tags (false by default)\n\tlowerCaseAttributeNames: call .toLowerCase for each attribute name (true if xmlMode is `false`)\n\tlowerCaseTags: call .toLowerCase for each tag name (true if xmlMode is `false`)\n*/\n\n/*\n\tCallbacks:\n\n\toncdataend,\n\toncdatastart,\n\tonclosetag,\n\toncomment,\n\toncommentend,\n\tonerror,\n\tonopentag,\n\tonprocessinginstruction,\n\tonreset,\n\tontext\n*/\n\nvar formTags = {\n\tinput: true,\n\toption: true,\n\toptgroup: true,\n\tselect: true,\n\tbutton: true,\n\tdatalist: true,\n\ttextarea: true\n};\n\nvar openImpliesClose = {\n\ttr : { tr:true, th:true, td:true },\n\tth : { th:true },\n\ttd : { thead:true, th:true, td:true },\n\tbody : { head:true, link:true, script:true },\n\tli : { li:true },\n\tp : { p:true },\n\th1 : { p:true },\n\th2 : { p:true },\n\th3 : { p:true },\n\th4 : { p:true },\n\th5 : { p:true },\n\th6 : { p:true },\n\tselect : formTags,\n\tinput : formTags,\n\toutput : formTags,\n\tbutton : formTags,\n\tdatalist: formTags,\n\ttextarea: formTags,\n\toption : { option:true },\n\toptgroup: { optgroup:true }\n};\n\nvar voidElements = {\n\t__proto__: null,\n\tarea: true,\n\tbase: true,\n\tbasefont: true,\n\tbr: true,\n\tcol: true,\n\tcommand: true,\n\tembed: true,\n\tframe: true,\n\thr: true,\n\timg: true,\n\tinput: true,\n\tisindex: true,\n\tkeygen: true,\n\tlink: true,\n\tmeta: true,\n\tparam: true,\n\tsource: true,\n\ttrack: true,\n\twbr: true,\n\n\t//common self closing svg elements\n\tpath: true,\n\tcircle: true,\n\tellipse: true,\n\tline: true,\n\trect: true,\n\tuse: true,\n\tstop: true,\n\tpolyline: true,\n\tpolygon: true\n};\n\nvar re_nameEnd = /\\s|\\//;\n\nfunction Parser(cbs, options){\n\tthis._options = options || {};\n\tthis._cbs = cbs || {};\n\n\tthis._tagname = \"\";\n\tthis._attribname = \"\";\n\tthis._attribvalue = \"\";\n\tthis._attribs = null;\n\tthis._stack = [];\n\n\tthis.startIndex = 0;\n\tthis.endIndex = null;\n\n\tthis._lowerCaseTagNames = \"lowerCaseTags\" in this._options ?\n\t\t\t\t\t\t\t\t\t!!this._options.lowerCaseTags :\n\t\t\t\t\t\t\t\t\t!this._options.xmlMode;\n\tthis._lowerCaseAttributeNames = \"lowerCaseAttributeNames\" in this._options ?\n\t\t\t\t\t\t\t\t\t!!this._options.lowerCaseAttributeNames :\n\t\t\t\t\t\t\t\t\t!this._options.xmlMode;\n\n\tif(this._options.Tokenizer) {\n\t\tTokenizer = this._options.Tokenizer;\n\t}\n\tthis._tokenizer = new Tokenizer(this._options, this);\n\n\tif(this._cbs.onparserinit) this._cbs.onparserinit(this);\n}\n\nrequire(\"inherits\")(Parser, require(\"events\").EventEmitter);\n\nParser.prototype._updatePosition = function(initialOffset){\n\tif(this.endIndex === null){\n\t\tif(this._tokenizer._sectionStart <= initialOffset){\n\t\t\tthis.startIndex = 0;\n\t\t} else {\n\t\t\tthis.startIndex = this._tokenizer._sectionStart - initialOffset;\n\t\t}\n\t}\n\telse this.startIndex = this.endIndex + 1;\n\tthis.endIndex = this._tokenizer.getAbsoluteIndex();\n};\n\n//Tokenizer event handlers\nParser.prototype.ontext = function(data){\n\tthis._updatePosition(1);\n\tthis.endIndex--;\n\n\tif(this._cbs.ontext) this._cbs.ontext(data);\n};\n\nParser.prototype.onopentagname = function(name){\n\tif(this._lowerCaseTagNames){\n\t\tname = name.toLowerCase();\n\t}\n\n\tthis._tagname = name;\n\n\tif(!this._options.xmlMode && name in openImpliesClose) {\n\t\tfor(\n\t\t\tvar el;\n\t\t\t(el = this._stack[this._stack.length - 1]) in openImpliesClose[name];\n\t\t\tthis.onclosetag(el)\n\t\t);\n\t}\n\n\tif(this._options.xmlMode || !(name in voidElements)){\n\t\tthis._stack.push(name);\n\t}\n\n\tif(this._cbs.onopentagname) this._cbs.onopentagname(name);\n\tif(this._cbs.onopentag) this._attribs = {};\n};\n\nParser.prototype.onopentagend = function(){\n\tthis._updatePosition(1);\n\n\tif(this._attribs){\n\t\tif(this._cbs.onopentag) this._cbs.onopentag(this._tagname, this._attribs);\n\t\tthis._attribs = null;\n\t}\n\n\tif(!this._options.xmlMode && this._cbs.onclosetag && this._tagname in voidElements){\n\t\tthis._cbs.onclosetag(this._tagname);\n\t}\n\n\tthis._tagname = \"\";\n};\n\nParser.prototype.onclosetag = function(name){\n\tthis._updatePosition(1);\n\n\tif(this._lowerCaseTagNames){\n\t\tname = name.toLowerCase();\n\t}\n\n\tif(this._stack.length && (!(name in voidElements) || this._options.xmlMode)){\n\t\tvar pos = this._stack.lastIndexOf(name);\n\t\tif(pos !== -1){\n\t\t\tif(this._cbs.onclosetag){\n\t\t\t\tpos = this._stack.length - pos;\n\t\t\t\twhile(pos--) this._cbs.onclosetag(this._stack.pop());\n\t\t\t}\n\t\t\telse this._stack.length = pos;\n\t\t} else if(name === \"p\" && !this._options.xmlMode){\n\t\t\tthis.onopentagname(name);\n\t\t\tthis._closeCurrentTag();\n\t\t}\n\t} else if(!this._options.xmlMode && (name === \"br\" || name === \"p\")){\n\t\tthis.onopentagname(name);\n\t\tthis._closeCurrentTag();\n\t}\n};\n\nParser.prototype.onselfclosingtag = function(){\n\tif(this._options.xmlMode || this._options.recognizeSelfClosing){\n\t\tthis._closeCurrentTag();\n\t} else {\n\t\tthis.onopentagend();\n\t}\n};\n\nParser.prototype._closeCurrentTag = function(){\n\tvar name = this._tagname;\n\n\tthis.onopentagend();\n\n\t//self-closing tags will be on the top of the stack\n\t//(cheaper check than in onclosetag)\n\tif(this._stack[this._stack.length - 1] === name){\n\t\tif(this._cbs.onclosetag){\n\t\t\tthis._cbs.onclosetag(name);\n\t\t}\n\t\tthis._stack.pop();\n\t}\n};\n\nParser.prototype.onattribname = function(name){\n\tif(this._lowerCaseAttributeNames){\n\t\tname = name.toLowerCase();\n\t}\n\tthis._attribname = name;\n};\n\nParser.prototype.onattribdata = function(value){\n\tthis._attribvalue += value;\n};\n\nParser.prototype.onattribend = function(){\n\tif(this._cbs.onattribute) this._cbs.onattribute(this._attribname, this._attribvalue);\n\tif(\n\t\tthis._attribs &&\n\t\t!Object.prototype.hasOwnProperty.call(this._attribs, this._attribname)\n\t){\n\t\tthis._attribs[this._attribname] = this._attribvalue;\n\t}\n\tthis._attribname = \"\";\n\tthis._attribvalue = \"\";\n};\n\nParser.prototype._getInstructionName = function(value){\n\tvar idx = value.search(re_nameEnd),\n\t name = idx < 0 ? value : value.substr(0, idx);\n\n\tif(this._lowerCaseTagNames){\n\t\tname = name.toLowerCase();\n\t}\n\n\treturn name;\n};\n\nParser.prototype.ondeclaration = function(value){\n\tif(this._cbs.onprocessinginstruction){\n\t\tvar name = this._getInstructionName(value);\n\t\tthis._cbs.onprocessinginstruction(\"!\" + name, \"!\" + value);\n\t}\n};\n\nParser.prototype.onprocessinginstruction = function(value){\n\tif(this._cbs.onprocessinginstruction){\n\t\tvar name = this._getInstructionName(value);\n\t\tthis._cbs.onprocessinginstruction(\"?\" + name, \"?\" + value);\n\t}\n};\n\nParser.prototype.oncomment = function(value){\n\tthis._updatePosition(4);\n\n\tif(this._cbs.oncomment) this._cbs.oncomment(value);\n\tif(this._cbs.oncommentend) this._cbs.oncommentend();\n};\n\nParser.prototype.oncdata = function(value){\n\tthis._updatePosition(1);\n\n\tif(this._options.xmlMode || this._options.recognizeCDATA){\n\t\tif(this._cbs.oncdatastart) this._cbs.oncdatastart();\n\t\tif(this._cbs.ontext) this._cbs.ontext(value);\n\t\tif(this._cbs.oncdataend) this._cbs.oncdataend();\n\t} else {\n\t\tthis.oncomment(\"[CDATA[\" + value + \"]]\");\n\t}\n};\n\nParser.prototype.onerror = function(err){\n\tif(this._cbs.onerror) this._cbs.onerror(err);\n};\n\nParser.prototype.onend = function(){\n\tif(this._cbs.onclosetag){\n\t\tfor(\n\t\t\tvar i = this._stack.length;\n\t\t\ti > 0;\n\t\t\tthis._cbs.onclosetag(this._stack[--i])\n\t\t);\n\t}\n\tif(this._cbs.onend) this._cbs.onend();\n};\n\n\n//Resets the parser to a blank state, ready to parse a new HTML document\nParser.prototype.reset = function(){\n\tif(this._cbs.onreset) this._cbs.onreset();\n\tthis._tokenizer.reset();\n\n\tthis._tagname = \"\";\n\tthis._attribname = \"\";\n\tthis._attribs = null;\n\tthis._stack = [];\n\n\tif(this._cbs.onparserinit) this._cbs.onparserinit(this);\n};\n\n//Parses a complete HTML document and pushes it to the handler\nParser.prototype.parseComplete = function(data){\n\tthis.reset();\n\tthis.end(data);\n};\n\nParser.prototype.write = function(chunk){\n\tthis._tokenizer.write(chunk);\n};\n\nParser.prototype.end = function(chunk){\n\tthis._tokenizer.end(chunk);\n};\n\nParser.prototype.pause = function(){\n\tthis._tokenizer.pause();\n};\n\nParser.prototype.resume = function(){\n\tthis._tokenizer.resume();\n};\n\n//alias for backwards compat\nParser.prototype.parseChunk = Parser.prototype.write;\nParser.prototype.done = Parser.prototype.end;\n\nmodule.exports = Parser;\n","module.exports = Tokenizer;\n\nvar decodeCodePoint = require(\"entities/lib/decode_codepoint.js\"),\n entityMap = require(\"entities/maps/entities.json\"),\n legacyMap = require(\"entities/maps/legacy.json\"),\n xmlMap = require(\"entities/maps/xml.json\"),\n\n i = 0,\n\n TEXT = i++,\n BEFORE_TAG_NAME = i++, //after <\n IN_TAG_NAME = i++,\n IN_SELF_CLOSING_TAG = i++,\n BEFORE_CLOSING_TAG_NAME = i++,\n IN_CLOSING_TAG_NAME = i++,\n AFTER_CLOSING_TAG_NAME = i++,\n\n //attributes\n BEFORE_ATTRIBUTE_NAME = i++,\n IN_ATTRIBUTE_NAME = i++,\n AFTER_ATTRIBUTE_NAME = i++,\n BEFORE_ATTRIBUTE_VALUE = i++,\n IN_ATTRIBUTE_VALUE_DQ = i++, // \"\n IN_ATTRIBUTE_VALUE_SQ = i++, // '\n IN_ATTRIBUTE_VALUE_NQ = i++,\n\n //declarations\n BEFORE_DECLARATION = i++, // !\n IN_DECLARATION = i++,\n\n //processing instructions\n IN_PROCESSING_INSTRUCTION = i++, // ?\n\n //comments\n BEFORE_COMMENT = i++,\n IN_COMMENT = i++,\n AFTER_COMMENT_1 = i++,\n AFTER_COMMENT_2 = i++,\n\n //cdata\n BEFORE_CDATA_1 = i++, // [\n BEFORE_CDATA_2 = i++, // C\n BEFORE_CDATA_3 = i++, // D\n BEFORE_CDATA_4 = i++, // A\n BEFORE_CDATA_5 = i++, // T\n BEFORE_CDATA_6 = i++, // A\n IN_CDATA = i++, // [\n AFTER_CDATA_1 = i++, // ]\n AFTER_CDATA_2 = i++, // ]\n\n //special tags\n BEFORE_SPECIAL = i++, //S\n BEFORE_SPECIAL_END = i++, //S\n\n BEFORE_SCRIPT_1 = i++, //C\n BEFORE_SCRIPT_2 = i++, //R\n BEFORE_SCRIPT_3 = i++, //I\n BEFORE_SCRIPT_4 = i++, //P\n BEFORE_SCRIPT_5 = i++, //T\n AFTER_SCRIPT_1 = i++, //C\n AFTER_SCRIPT_2 = i++, //R\n AFTER_SCRIPT_3 = i++, //I\n AFTER_SCRIPT_4 = i++, //P\n AFTER_SCRIPT_5 = i++, //T\n\n BEFORE_STYLE_1 = i++, //T\n BEFORE_STYLE_2 = i++, //Y\n BEFORE_STYLE_3 = i++, //L\n BEFORE_STYLE_4 = i++, //E\n AFTER_STYLE_1 = i++, //T\n AFTER_STYLE_2 = i++, //Y\n AFTER_STYLE_3 = i++, //L\n AFTER_STYLE_4 = i++, //E\n\n BEFORE_ENTITY = i++, //&\n BEFORE_NUMERIC_ENTITY = i++, //#\n IN_NAMED_ENTITY = i++,\n IN_NUMERIC_ENTITY = i++,\n IN_HEX_ENTITY = i++, //X\n\n j = 0,\n\n SPECIAL_NONE = j++,\n SPECIAL_SCRIPT = j++,\n SPECIAL_STYLE = j++;\n\nfunction whitespace(c){\n\treturn c === \" \" || c === \"\\n\" || c === \"\\t\" || c === \"\\f\" || c === \"\\r\";\n}\n\nfunction characterState(char, SUCCESS){\n\treturn function(c){\n\t\tif(c === char) this._state = SUCCESS;\n\t};\n}\n\nfunction ifElseState(upper, SUCCESS, FAILURE){\n\tvar lower = upper.toLowerCase();\n\n\tif(upper === lower){\n\t\treturn function(c){\n\t\t\tif(c === lower){\n\t\t\t\tthis._state = SUCCESS;\n\t\t\t} else {\n\t\t\t\tthis._state = FAILURE;\n\t\t\t\tthis._index--;\n\t\t\t}\n\t\t};\n\t} else {\n\t\treturn function(c){\n\t\t\tif(c === lower || c === upper){\n\t\t\t\tthis._state = SUCCESS;\n\t\t\t} else {\n\t\t\t\tthis._state = FAILURE;\n\t\t\t\tthis._index--;\n\t\t\t}\n\t\t};\n\t}\n}\n\nfunction consumeSpecialNameChar(upper, NEXT_STATE){\n\tvar lower = upper.toLowerCase();\n\n\treturn function(c){\n\t\tif(c === lower || c === upper){\n\t\t\tthis._state = NEXT_STATE;\n\t\t} else {\n\t\t\tthis._state = IN_TAG_NAME;\n\t\t\tthis._index--; //consume the token again\n\t\t}\n\t};\n}\n\nfunction Tokenizer(options, cbs){\n\tthis._state = TEXT;\n\tthis._buffer = \"\";\n\tthis._sectionStart = 0;\n\tthis._index = 0;\n\tthis._bufferOffset = 0; //chars removed from _buffer\n\tthis._baseState = TEXT;\n\tthis._special = SPECIAL_NONE;\n\tthis._cbs = cbs;\n\tthis._running = true;\n\tthis._ended = false;\n\tthis._xmlMode = !!(options && options.xmlMode);\n\tthis._decodeEntities = !!(options && options.decodeEntities);\n}\n\nTokenizer.prototype._stateText = function(c){\n\tif(c === \"<\"){\n\t\tif(this._index > this._sectionStart){\n\t\t\tthis._cbs.ontext(this._getSection());\n\t\t}\n\t\tthis._state = BEFORE_TAG_NAME;\n\t\tthis._sectionStart = this._index;\n\t} else if(this._decodeEntities && this._special === SPECIAL_NONE && c === \"&\"){\n\t\tif(this._index > this._sectionStart){\n\t\t\tthis._cbs.ontext(this._getSection());\n\t\t}\n\t\tthis._baseState = TEXT;\n\t\tthis._state = BEFORE_ENTITY;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateBeforeTagName = function(c){\n\tif(c === \"/\"){\n\t\tthis._state = BEFORE_CLOSING_TAG_NAME;\n\t} else if(c === \"<\"){\n\t\tthis._cbs.ontext(this._getSection());\n\t\tthis._sectionStart = this._index;\n\t} else if(c === \">\" || this._special !== SPECIAL_NONE || whitespace(c)) {\n\t\tthis._state = TEXT;\n\t} else if(c === \"!\"){\n\t\tthis._state = BEFORE_DECLARATION;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(c === \"?\"){\n\t\tthis._state = IN_PROCESSING_INSTRUCTION;\n\t\tthis._sectionStart = this._index + 1;\n\t} else {\n\t\tthis._state = (!this._xmlMode && (c === \"s\" || c === \"S\")) ?\n\t\t\t\t\t\tBEFORE_SPECIAL : IN_TAG_NAME;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateInTagName = function(c){\n\tif(c === \"/\" || c === \">\" || whitespace(c)){\n\t\tthis._emitToken(\"onopentagname\");\n\t\tthis._state = BEFORE_ATTRIBUTE_NAME;\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._stateBeforeCloseingTagName = function(c){\n\tif(whitespace(c));\n\telse if(c === \">\"){\n\t\tthis._state = TEXT;\n\t} else if(this._special !== SPECIAL_NONE){\n\t\tif(c === \"s\" || c === \"S\"){\n\t\t\tthis._state = BEFORE_SPECIAL_END;\n\t\t} else {\n\t\t\tthis._state = TEXT;\n\t\t\tthis._index--;\n\t\t}\n\t} else {\n\t\tthis._state = IN_CLOSING_TAG_NAME;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateInCloseingTagName = function(c){\n\tif(c === \">\" || whitespace(c)){\n\t\tthis._emitToken(\"onclosetag\");\n\t\tthis._state = AFTER_CLOSING_TAG_NAME;\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._stateAfterCloseingTagName = function(c){\n\t//skip everything until \">\"\n\tif(c === \">\"){\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t}\n};\n\nTokenizer.prototype._stateBeforeAttributeName = function(c){\n\tif(c === \">\"){\n\t\tthis._cbs.onopentagend();\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(c === \"/\"){\n\t\tthis._state = IN_SELF_CLOSING_TAG;\n\t} else if(!whitespace(c)){\n\t\tthis._state = IN_ATTRIBUTE_NAME;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateInSelfClosingTag = function(c){\n\tif(c === \">\"){\n\t\tthis._cbs.onselfclosingtag();\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(!whitespace(c)){\n\t\tthis._state = BEFORE_ATTRIBUTE_NAME;\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._stateInAttributeName = function(c){\n\tif(c === \"=\" || c === \"/\" || c === \">\" || whitespace(c)){\n\t\tthis._cbs.onattribname(this._getSection());\n\t\tthis._sectionStart = -1;\n\t\tthis._state = AFTER_ATTRIBUTE_NAME;\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._stateAfterAttributeName = function(c){\n\tif(c === \"=\"){\n\t\tthis._state = BEFORE_ATTRIBUTE_VALUE;\n\t} else if(c === \"/\" || c === \">\"){\n\t\tthis._cbs.onattribend();\n\t\tthis._state = BEFORE_ATTRIBUTE_NAME;\n\t\tthis._index--;\n\t} else if(!whitespace(c)){\n\t\tthis._cbs.onattribend();\n\t\tthis._state = IN_ATTRIBUTE_NAME;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateBeforeAttributeValue = function(c){\n\tif(c === \"\\\"\"){\n\t\tthis._state = IN_ATTRIBUTE_VALUE_DQ;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(c === \"'\"){\n\t\tthis._state = IN_ATTRIBUTE_VALUE_SQ;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(!whitespace(c)){\n\t\tthis._state = IN_ATTRIBUTE_VALUE_NQ;\n\t\tthis._sectionStart = this._index;\n\t\tthis._index--; //reconsume token\n\t}\n};\n\nTokenizer.prototype._stateInAttributeValueDoubleQuotes = function(c){\n\tif(c === \"\\\"\"){\n\t\tthis._emitToken(\"onattribdata\");\n\t\tthis._cbs.onattribend();\n\t\tthis._state = BEFORE_ATTRIBUTE_NAME;\n\t} else if(this._decodeEntities && c === \"&\"){\n\t\tthis._emitToken(\"onattribdata\");\n\t\tthis._baseState = this._state;\n\t\tthis._state = BEFORE_ENTITY;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateInAttributeValueSingleQuotes = function(c){\n\tif(c === \"'\"){\n\t\tthis._emitToken(\"onattribdata\");\n\t\tthis._cbs.onattribend();\n\t\tthis._state = BEFORE_ATTRIBUTE_NAME;\n\t} else if(this._decodeEntities && c === \"&\"){\n\t\tthis._emitToken(\"onattribdata\");\n\t\tthis._baseState = this._state;\n\t\tthis._state = BEFORE_ENTITY;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateInAttributeValueNoQuotes = function(c){\n\tif(whitespace(c) || c === \">\"){\n\t\tthis._emitToken(\"onattribdata\");\n\t\tthis._cbs.onattribend();\n\t\tthis._state = BEFORE_ATTRIBUTE_NAME;\n\t\tthis._index--;\n\t} else if(this._decodeEntities && c === \"&\"){\n\t\tthis._emitToken(\"onattribdata\");\n\t\tthis._baseState = this._state;\n\t\tthis._state = BEFORE_ENTITY;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateBeforeDeclaration = function(c){\n\tthis._state = c === \"[\" ? BEFORE_CDATA_1 :\n\t\t\t\t\tc === \"-\" ? BEFORE_COMMENT :\n\t\t\t\t\t\tIN_DECLARATION;\n};\n\nTokenizer.prototype._stateInDeclaration = function(c){\n\tif(c === \">\"){\n\t\tthis._cbs.ondeclaration(this._getSection());\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t}\n};\n\nTokenizer.prototype._stateInProcessingInstruction = function(c){\n\tif(c === \">\"){\n\t\tthis._cbs.onprocessinginstruction(this._getSection());\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t}\n};\n\nTokenizer.prototype._stateBeforeComment = function(c){\n\tif(c === \"-\"){\n\t\tthis._state = IN_COMMENT;\n\t\tthis._sectionStart = this._index + 1;\n\t} else {\n\t\tthis._state = IN_DECLARATION;\n\t}\n};\n\nTokenizer.prototype._stateInComment = function(c){\n\tif(c === \"-\") this._state = AFTER_COMMENT_1;\n};\n\nTokenizer.prototype._stateAfterComment1 = function(c){\n\tif(c === \"-\"){\n\t\tthis._state = AFTER_COMMENT_2;\n\t} else {\n\t\tthis._state = IN_COMMENT;\n\t}\n};\n\nTokenizer.prototype._stateAfterComment2 = function(c){\n\tif(c === \">\"){\n\t\t//remove 2 trailing chars\n\t\tthis._cbs.oncomment(this._buffer.substring(this._sectionStart, this._index - 2));\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(c !== \"-\"){\n\t\tthis._state = IN_COMMENT;\n\t}\n\t// else: stay in AFTER_COMMENT_2 (`--->`)\n};\n\nTokenizer.prototype._stateBeforeCdata1 = ifElseState(\"C\", BEFORE_CDATA_2, IN_DECLARATION);\nTokenizer.prototype._stateBeforeCdata2 = ifElseState(\"D\", BEFORE_CDATA_3, IN_DECLARATION);\nTokenizer.prototype._stateBeforeCdata3 = ifElseState(\"A\", BEFORE_CDATA_4, IN_DECLARATION);\nTokenizer.prototype._stateBeforeCdata4 = ifElseState(\"T\", BEFORE_CDATA_5, IN_DECLARATION);\nTokenizer.prototype._stateBeforeCdata5 = ifElseState(\"A\", BEFORE_CDATA_6, IN_DECLARATION);\n\nTokenizer.prototype._stateBeforeCdata6 = function(c){\n\tif(c === \"[\"){\n\t\tthis._state = IN_CDATA;\n\t\tthis._sectionStart = this._index + 1;\n\t} else {\n\t\tthis._state = IN_DECLARATION;\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._stateInCdata = function(c){\n\tif(c === \"]\") this._state = AFTER_CDATA_1;\n};\n\nTokenizer.prototype._stateAfterCdata1 = characterState(\"]\", AFTER_CDATA_2);\n\nTokenizer.prototype._stateAfterCdata2 = function(c){\n\tif(c === \">\"){\n\t\t//remove 2 trailing chars\n\t\tthis._cbs.oncdata(this._buffer.substring(this._sectionStart, this._index - 2));\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(c !== \"]\") {\n\t\tthis._state = IN_CDATA;\n\t}\n\t//else: stay in AFTER_CDATA_2 (`]]]>`)\n};\n\nTokenizer.prototype._stateBeforeSpecial = function(c){\n\tif(c === \"c\" || c === \"C\"){\n\t\tthis._state = BEFORE_SCRIPT_1;\n\t} else if(c === \"t\" || c === \"T\"){\n\t\tthis._state = BEFORE_STYLE_1;\n\t} else {\n\t\tthis._state = IN_TAG_NAME;\n\t\tthis._index--; //consume the token again\n\t}\n};\n\nTokenizer.prototype._stateBeforeSpecialEnd = function(c){\n\tif(this._special === SPECIAL_SCRIPT && (c === \"c\" || c === \"C\")){\n\t\tthis._state = AFTER_SCRIPT_1;\n\t} else if(this._special === SPECIAL_STYLE && (c === \"t\" || c === \"T\")){\n\t\tthis._state = AFTER_STYLE_1;\n\t}\n\telse this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeScript1 = consumeSpecialNameChar(\"R\", BEFORE_SCRIPT_2);\nTokenizer.prototype._stateBeforeScript2 = consumeSpecialNameChar(\"I\", BEFORE_SCRIPT_3);\nTokenizer.prototype._stateBeforeScript3 = consumeSpecialNameChar(\"P\", BEFORE_SCRIPT_4);\nTokenizer.prototype._stateBeforeScript4 = consumeSpecialNameChar(\"T\", BEFORE_SCRIPT_5);\n\nTokenizer.prototype._stateBeforeScript5 = function(c){\n\tif(c === \"/\" || c === \">\" || whitespace(c)){\n\t\tthis._special = SPECIAL_SCRIPT;\n\t}\n\tthis._state = IN_TAG_NAME;\n\tthis._index--; //consume the token again\n};\n\nTokenizer.prototype._stateAfterScript1 = ifElseState(\"R\", AFTER_SCRIPT_2, TEXT);\nTokenizer.prototype._stateAfterScript2 = ifElseState(\"I\", AFTER_SCRIPT_3, TEXT);\nTokenizer.prototype._stateAfterScript3 = ifElseState(\"P\", AFTER_SCRIPT_4, TEXT);\nTokenizer.prototype._stateAfterScript4 = ifElseState(\"T\", AFTER_SCRIPT_5, TEXT);\n\nTokenizer.prototype._stateAfterScript5 = function(c){\n\tif(c === \">\" || whitespace(c)){\n\t\tthis._special = SPECIAL_NONE;\n\t\tthis._state = IN_CLOSING_TAG_NAME;\n\t\tthis._sectionStart = this._index - 6;\n\t\tthis._index--; //reconsume the token\n\t}\n\telse this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeStyle1 = consumeSpecialNameChar(\"Y\", BEFORE_STYLE_2);\nTokenizer.prototype._stateBeforeStyle2 = consumeSpecialNameChar(\"L\", BEFORE_STYLE_3);\nTokenizer.prototype._stateBeforeStyle3 = consumeSpecialNameChar(\"E\", BEFORE_STYLE_4);\n\nTokenizer.prototype._stateBeforeStyle4 = function(c){\n\tif(c === \"/\" || c === \">\" || whitespace(c)){\n\t\tthis._special = SPECIAL_STYLE;\n\t}\n\tthis._state = IN_TAG_NAME;\n\tthis._index--; //consume the token again\n};\n\nTokenizer.prototype._stateAfterStyle1 = ifElseState(\"Y\", AFTER_STYLE_2, TEXT);\nTokenizer.prototype._stateAfterStyle2 = ifElseState(\"L\", AFTER_STYLE_3, TEXT);\nTokenizer.prototype._stateAfterStyle3 = ifElseState(\"E\", AFTER_STYLE_4, TEXT);\n\nTokenizer.prototype._stateAfterStyle4 = function(c){\n\tif(c === \">\" || whitespace(c)){\n\t\tthis._special = SPECIAL_NONE;\n\t\tthis._state = IN_CLOSING_TAG_NAME;\n\t\tthis._sectionStart = this._index - 5;\n\t\tthis._index--; //reconsume the token\n\t}\n\telse this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeEntity = ifElseState(\"#\", BEFORE_NUMERIC_ENTITY, IN_NAMED_ENTITY);\nTokenizer.prototype._stateBeforeNumericEntity = ifElseState(\"X\", IN_HEX_ENTITY, IN_NUMERIC_ENTITY);\n\n//for entities terminated with a semicolon\nTokenizer.prototype._parseNamedEntityStrict = function(){\n\t//offset = 1\n\tif(this._sectionStart + 1 < this._index){\n\t\tvar entity = this._buffer.substring(this._sectionStart + 1, this._index),\n\t\t map = this._xmlMode ? xmlMap : entityMap;\n\n\t\tif(map.hasOwnProperty(entity)){\n\t\t\tthis._emitPartial(map[entity]);\n\t\t\tthis._sectionStart = this._index + 1;\n\t\t}\n\t}\n};\n\n\n//parses legacy entities (without trailing semicolon)\nTokenizer.prototype._parseLegacyEntity = function(){\n\tvar start = this._sectionStart + 1,\n\t limit = this._index - start;\n\n\tif(limit > 6) limit = 6; //the max length of legacy entities is 6\n\n\twhile(limit >= 2){ //the min length of legacy entities is 2\n\t\tvar entity = this._buffer.substr(start, limit);\n\n\t\tif(legacyMap.hasOwnProperty(entity)){\n\t\t\tthis._emitPartial(legacyMap[entity]);\n\t\t\tthis._sectionStart += limit + 1;\n\t\t\treturn;\n\t\t} else {\n\t\t\tlimit--;\n\t\t}\n\t}\n};\n\nTokenizer.prototype._stateInNamedEntity = function(c){\n\tif(c === \";\"){\n\t\tthis._parseNamedEntityStrict();\n\t\tif(this._sectionStart + 1 < this._index && !this._xmlMode){\n\t\t\tthis._parseLegacyEntity();\n\t\t}\n\t\tthis._state = this._baseState;\n\t} else if((c < \"a\" || c > \"z\") && (c < \"A\" || c > \"Z\") && (c < \"0\" || c > \"9\")){\n\t\tif(this._xmlMode);\n\t\telse if(this._sectionStart + 1 === this._index);\n\t\telse if(this._baseState !== TEXT){\n\t\t\tif(c !== \"=\"){\n\t\t\t\tthis._parseNamedEntityStrict();\n\t\t\t}\n\t\t} else {\n\t\t\tthis._parseLegacyEntity();\n\t\t}\n\n\t\tthis._state = this._baseState;\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._decodeNumericEntity = function(offset, base){\n\tvar sectionStart = this._sectionStart + offset;\n\n\tif(sectionStart !== this._index){\n\t\t//parse entity\n\t\tvar entity = this._buffer.substring(sectionStart, this._index);\n\t\tvar parsed = parseInt(entity, base);\n\n\t\tthis._emitPartial(decodeCodePoint(parsed));\n\t\tthis._sectionStart = this._index;\n\t} else {\n\t\tthis._sectionStart--;\n\t}\n\n\tthis._state = this._baseState;\n};\n\nTokenizer.prototype._stateInNumericEntity = function(c){\n\tif(c === \";\"){\n\t\tthis._decodeNumericEntity(2, 10);\n\t\tthis._sectionStart++;\n\t} else if(c < \"0\" || c > \"9\"){\n\t\tif(!this._xmlMode){\n\t\t\tthis._decodeNumericEntity(2, 10);\n\t\t} else {\n\t\t\tthis._state = this._baseState;\n\t\t}\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._stateInHexEntity = function(c){\n\tif(c === \";\"){\n\t\tthis._decodeNumericEntity(3, 16);\n\t\tthis._sectionStart++;\n\t} else if((c < \"a\" || c > \"f\") && (c < \"A\" || c > \"F\") && (c < \"0\" || c > \"9\")){\n\t\tif(!this._xmlMode){\n\t\t\tthis._decodeNumericEntity(3, 16);\n\t\t} else {\n\t\t\tthis._state = this._baseState;\n\t\t}\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._cleanup = function (){\n\tif(this._sectionStart < 0){\n\t\tthis._buffer = \"\";\n\t\tthis._bufferOffset += this._index;\n\t\tthis._index = 0;\n\t} else if(this._running){\n\t\tif(this._state === TEXT){\n\t\t\tif(this._sectionStart !== this._index){\n\t\t\t\tthis._cbs.ontext(this._buffer.substr(this._sectionStart));\n\t\t\t}\n\t\t\tthis._buffer = \"\";\n\t\t\tthis._bufferOffset += this._index;\n\t\t\tthis._index = 0;\n\t\t} else if(this._sectionStart === this._index){\n\t\t\t//the section just started\n\t\t\tthis._buffer = \"\";\n\t\t\tthis._bufferOffset += this._index;\n\t\t\tthis._index = 0;\n\t\t} else {\n\t\t\t//remove everything unnecessary\n\t\t\tthis._buffer = this._buffer.substr(this._sectionStart);\n\t\t\tthis._index -= this._sectionStart;\n\t\t\tthis._bufferOffset += this._sectionStart;\n\t\t}\n\n\t\tthis._sectionStart = 0;\n\t}\n};\n\n//TODO make events conditional\nTokenizer.prototype.write = function(chunk){\n\tif(this._ended) this._cbs.onerror(Error(\".write() after done!\"));\n\n\tthis._buffer += chunk;\n\tthis._parse();\n};\n\nTokenizer.prototype._parse = function(){\n\twhile(this._index < this._buffer.length && this._running){\n\t\tvar c = this._buffer.charAt(this._index);\n\t\tif(this._state === TEXT) {\n\t\t\tthis._stateText(c);\n\t\t} else if(this._state === BEFORE_TAG_NAME){\n\t\t\tthis._stateBeforeTagName(c);\n\t\t} else if(this._state === IN_TAG_NAME) {\n\t\t\tthis._stateInTagName(c);\n\t\t} else if(this._state === BEFORE_CLOSING_TAG_NAME){\n\t\t\tthis._stateBeforeCloseingTagName(c);\n\t\t} else if(this._state === IN_CLOSING_TAG_NAME){\n\t\t\tthis._stateInCloseingTagName(c);\n\t\t} else if(this._state === AFTER_CLOSING_TAG_NAME){\n\t\t\tthis._stateAfterCloseingTagName(c);\n\t\t} else if(this._state === IN_SELF_CLOSING_TAG){\n\t\t\tthis._stateInSelfClosingTag(c);\n\t\t}\n\n\t\t/*\n\t\t*\tattributes\n\t\t*/\n\t\telse if(this._state === BEFORE_ATTRIBUTE_NAME){\n\t\t\tthis._stateBeforeAttributeName(c);\n\t\t} else if(this._state === IN_ATTRIBUTE_NAME){\n\t\t\tthis._stateInAttributeName(c);\n\t\t} else if(this._state === AFTER_ATTRIBUTE_NAME){\n\t\t\tthis._stateAfterAttributeName(c);\n\t\t} else if(this._state === BEFORE_ATTRIBUTE_VALUE){\n\t\t\tthis._stateBeforeAttributeValue(c);\n\t\t} else if(this._state === IN_ATTRIBUTE_VALUE_DQ){\n\t\t\tthis._stateInAttributeValueDoubleQuotes(c);\n\t\t} else if(this._state === IN_ATTRIBUTE_VALUE_SQ){\n\t\t\tthis._stateInAttributeValueSingleQuotes(c);\n\t\t} else if(this._state === IN_ATTRIBUTE_VALUE_NQ){\n\t\t\tthis._stateInAttributeValueNoQuotes(c);\n\t\t}\n\n\t\t/*\n\t\t*\tdeclarations\n\t\t*/\n\t\telse if(this._state === BEFORE_DECLARATION){\n\t\t\tthis._stateBeforeDeclaration(c);\n\t\t} else if(this._state === IN_DECLARATION){\n\t\t\tthis._stateInDeclaration(c);\n\t\t}\n\n\t\t/*\n\t\t*\tprocessing instructions\n\t\t*/\n\t\telse if(this._state === IN_PROCESSING_INSTRUCTION){\n\t\t\tthis._stateInProcessingInstruction(c);\n\t\t}\n\n\t\t/*\n\t\t*\tcomments\n\t\t*/\n\t\telse if(this._state === BEFORE_COMMENT){\n\t\t\tthis._stateBeforeComment(c);\n\t\t} else if(this._state === IN_COMMENT){\n\t\t\tthis._stateInComment(c);\n\t\t} else if(this._state === AFTER_COMMENT_1){\n\t\t\tthis._stateAfterComment1(c);\n\t\t} else if(this._state === AFTER_COMMENT_2){\n\t\t\tthis._stateAfterComment2(c);\n\t\t}\n\n\t\t/*\n\t\t*\tcdata\n\t\t*/\n\t\telse if(this._state === BEFORE_CDATA_1){\n\t\t\tthis._stateBeforeCdata1(c);\n\t\t} else if(this._state === BEFORE_CDATA_2){\n\t\t\tthis._stateBeforeCdata2(c);\n\t\t} else if(this._state === BEFORE_CDATA_3){\n\t\t\tthis._stateBeforeCdata3(c);\n\t\t} else if(this._state === BEFORE_CDATA_4){\n\t\t\tthis._stateBeforeCdata4(c);\n\t\t} else if(this._state === BEFORE_CDATA_5){\n\t\t\tthis._stateBeforeCdata5(c);\n\t\t} else if(this._state === BEFORE_CDATA_6){\n\t\t\tthis._stateBeforeCdata6(c);\n\t\t} else if(this._state === IN_CDATA){\n\t\t\tthis._stateInCdata(c);\n\t\t} else if(this._state === AFTER_CDATA_1){\n\t\t\tthis._stateAfterCdata1(c);\n\t\t} else if(this._state === AFTER_CDATA_2){\n\t\t\tthis._stateAfterCdata2(c);\n\t\t}\n\n\t\t/*\n\t\t* special tags\n\t\t*/\n\t\telse if(this._state === BEFORE_SPECIAL){\n\t\t\tthis._stateBeforeSpecial(c);\n\t\t} else if(this._state === BEFORE_SPECIAL_END){\n\t\t\tthis._stateBeforeSpecialEnd(c);\n\t\t}\n\n\t\t/*\n\t\t* script\n\t\t*/\n\t\telse if(this._state === BEFORE_SCRIPT_1){\n\t\t\tthis._stateBeforeScript1(c);\n\t\t} else if(this._state === BEFORE_SCRIPT_2){\n\t\t\tthis._stateBeforeScript2(c);\n\t\t} else if(this._state === BEFORE_SCRIPT_3){\n\t\t\tthis._stateBeforeScript3(c);\n\t\t} else if(this._state === BEFORE_SCRIPT_4){\n\t\t\tthis._stateBeforeScript4(c);\n\t\t} else if(this._state === BEFORE_SCRIPT_5){\n\t\t\tthis._stateBeforeScript5(c);\n\t\t}\n\n\t\telse if(this._state === AFTER_SCRIPT_1){\n\t\t\tthis._stateAfterScript1(c);\n\t\t} else if(this._state === AFTER_SCRIPT_2){\n\t\t\tthis._stateAfterScript2(c);\n\t\t} else if(this._state === AFTER_SCRIPT_3){\n\t\t\tthis._stateAfterScript3(c);\n\t\t} else if(this._state === AFTER_SCRIPT_4){\n\t\t\tthis._stateAfterScript4(c);\n\t\t} else if(this._state === AFTER_SCRIPT_5){\n\t\t\tthis._stateAfterScript5(c);\n\t\t}\n\n\t\t/*\n\t\t* style\n\t\t*/\n\t\telse if(this._state === BEFORE_STYLE_1){\n\t\t\tthis._stateBeforeStyle1(c);\n\t\t} else if(this._state === BEFORE_STYLE_2){\n\t\t\tthis._stateBeforeStyle2(c);\n\t\t} else if(this._state === BEFORE_STYLE_3){\n\t\t\tthis._stateBeforeStyle3(c);\n\t\t} else if(this._state === BEFORE_STYLE_4){\n\t\t\tthis._stateBeforeStyle4(c);\n\t\t}\n\n\t\telse if(this._state === AFTER_STYLE_1){\n\t\t\tthis._stateAfterStyle1(c);\n\t\t} else if(this._state === AFTER_STYLE_2){\n\t\t\tthis._stateAfterStyle2(c);\n\t\t} else if(this._state === AFTER_STYLE_3){\n\t\t\tthis._stateAfterStyle3(c);\n\t\t} else if(this._state === AFTER_STYLE_4){\n\t\t\tthis._stateAfterStyle4(c);\n\t\t}\n\n\t\t/*\n\t\t* entities\n\t\t*/\n\t\telse if(this._state === BEFORE_ENTITY){\n\t\t\tthis._stateBeforeEntity(c);\n\t\t} else if(this._state === BEFORE_NUMERIC_ENTITY){\n\t\t\tthis._stateBeforeNumericEntity(c);\n\t\t} else if(this._state === IN_NAMED_ENTITY){\n\t\t\tthis._stateInNamedEntity(c);\n\t\t} else if(this._state === IN_NUMERIC_ENTITY){\n\t\t\tthis._stateInNumericEntity(c);\n\t\t} else if(this._state === IN_HEX_ENTITY){\n\t\t\tthis._stateInHexEntity(c);\n\t\t}\n\n\t\telse {\n\t\t\tthis._cbs.onerror(Error(\"unknown _state\"), this._state);\n\t\t}\n\n\t\tthis._index++;\n\t}\n\n\tthis._cleanup();\n};\n\nTokenizer.prototype.pause = function(){\n\tthis._running = false;\n};\nTokenizer.prototype.resume = function(){\n\tthis._running = true;\n\n\tif(this._index < this._buffer.length){\n\t\tthis._parse();\n\t}\n\tif(this._ended){\n\t\tthis._finish();\n\t}\n};\n\nTokenizer.prototype.end = function(chunk){\n\tif(this._ended) this._cbs.onerror(Error(\".end() after done!\"));\n\tif(chunk) this.write(chunk);\n\n\tthis._ended = true;\n\n\tif(this._running) this._finish();\n};\n\nTokenizer.prototype._finish = function(){\n\t//if there is remaining data, emit it in a reasonable way\n\tif(this._sectionStart < this._index){\n\t\tthis._handleTrailingData();\n\t}\n\n\tthis._cbs.onend();\n};\n\nTokenizer.prototype._handleTrailingData = function(){\n\tvar data = this._buffer.substr(this._sectionStart);\n\n\tif(this._state === IN_CDATA || this._state === AFTER_CDATA_1 || this._state === AFTER_CDATA_2){\n\t\tthis._cbs.oncdata(data);\n\t} else if(this._state === IN_COMMENT || this._state === AFTER_COMMENT_1 || this._state === AFTER_COMMENT_2){\n\t\tthis._cbs.oncomment(data);\n\t} else if(this._state === IN_NAMED_ENTITY && !this._xmlMode){\n\t\tthis._parseLegacyEntity();\n\t\tif(this._sectionStart < this._index){\n\t\t\tthis._state = this._baseState;\n\t\t\tthis._handleTrailingData();\n\t\t}\n\t} else if(this._state === IN_NUMERIC_ENTITY && !this._xmlMode){\n\t\tthis._decodeNumericEntity(2, 10);\n\t\tif(this._sectionStart < this._index){\n\t\t\tthis._state = this._baseState;\n\t\t\tthis._handleTrailingData();\n\t\t}\n\t} else if(this._state === IN_HEX_ENTITY && !this._xmlMode){\n\t\tthis._decodeNumericEntity(3, 16);\n\t\tif(this._sectionStart < this._index){\n\t\t\tthis._state = this._baseState;\n\t\t\tthis._handleTrailingData();\n\t\t}\n\t} else if(\n\t\tthis._state !== IN_TAG_NAME &&\n\t\tthis._state !== BEFORE_ATTRIBUTE_NAME &&\n\t\tthis._state !== BEFORE_ATTRIBUTE_VALUE &&\n\t\tthis._state !== AFTER_ATTRIBUTE_NAME &&\n\t\tthis._state !== IN_ATTRIBUTE_NAME &&\n\t\tthis._state !== IN_ATTRIBUTE_VALUE_SQ &&\n\t\tthis._state !== IN_ATTRIBUTE_VALUE_DQ &&\n\t\tthis._state !== IN_ATTRIBUTE_VALUE_NQ &&\n\t\tthis._state !== IN_CLOSING_TAG_NAME\n\t){\n\t\tthis._cbs.ontext(data);\n\t}\n\t//else, ignore remaining data\n\t//TODO add a way to remove current tag\n};\n\nTokenizer.prototype.reset = function(){\n\tTokenizer.call(this, {xmlMode: this._xmlMode, decodeEntities: this._decodeEntities}, this._cbs);\n};\n\nTokenizer.prototype.getAbsoluteIndex = function(){\n\treturn this._bufferOffset + this._index;\n};\n\nTokenizer.prototype._getSection = function(){\n\treturn this._buffer.substring(this._sectionStart, this._index);\n};\n\nTokenizer.prototype._emitToken = function(name){\n\tthis._cbs[name](this._getSection());\n\tthis._sectionStart = -1;\n};\n\nTokenizer.prototype._emitPartial = function(value){\n\tif(this._baseState !== TEXT){\n\t\tthis._cbs.onattribdata(value); //TODO implement the new event\n\t} else {\n\t\tthis._cbs.ontext(value);\n\t}\n};\n","var decodeMap = require(\"../maps/decode.json\");\n\nmodule.exports = decodeCodePoint;\n\n// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nfunction decodeCodePoint(codePoint){\n\n\tif((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF){\n\t\treturn \"\\uFFFD\";\n\t}\n\n\tif(codePoint in decodeMap){\n\t\tcodePoint = decodeMap[codePoint];\n\t}\n\n\tvar output = \"\";\n\n\tif(codePoint > 0xFFFF){\n\t\tcodePoint -= 0x10000;\n\t\toutput += String.fromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);\n\t\tcodePoint = 0xDC00 | codePoint & 0x3FF;\n\t}\n\n\toutput += String.fromCharCode(codePoint);\n\treturn output;\n}\n","// This object will be used as the prototype for Nodes when creating a\n// DOM-Level-1-compliant structure.\nvar NodePrototype = module.exports = {\n\tget firstChild() {\n\t\tvar children = this.children;\n\t\treturn children && children[0] || null;\n\t},\n\tget lastChild() {\n\t\tvar children = this.children;\n\t\treturn children && children[children.length - 1] || null;\n\t},\n\tget nodeType() {\n\t\treturn nodeTypes[this.type] || nodeTypes.element;\n\t}\n};\n\nvar domLvl1 = {\n\ttagName: \"name\",\n\tchildNodes: \"children\",\n\tparentNode: \"parent\",\n\tpreviousSibling: \"prev\",\n\tnextSibling: \"next\",\n\tnodeValue: \"data\"\n};\n\nvar nodeTypes = {\n\telement: 1,\n\ttext: 3,\n\tcdata: 4,\n\tcomment: 8\n};\n\nObject.keys(domLvl1).forEach(function(key) {\n\tvar shorthand = domLvl1[key];\n\tObject.defineProperty(NodePrototype, key, {\n\t\tget: function() {\n\t\t\treturn this[shorthand] || null;\n\t\t},\n\t\tset: function(val) {\n\t\t\tthis[shorthand] = val;\n\t\t\treturn val;\n\t\t}\n\t});\n});\n","module.exports = Stream;\n\nvar Parser = require(\"./Parser.js\"),\n WritableStream = require(\"stream\").Writable || require(\"readable-stream\").Writable,\n StringDecoder = require(\"string_decoder\").StringDecoder,\n Buffer = require(\"buffer\").Buffer;\n\nfunction Stream(cbs, options){\n\tvar parser = this._parser = new Parser(cbs, options);\n\tvar decoder = this._decoder = new StringDecoder();\n\n\tWritableStream.call(this, {decodeStrings: false});\n\n\tthis.once(\"finish\", function(){\n\t\tparser.end(decoder.end());\n\t});\n}\n\nrequire(\"inherits\")(Stream, WritableStream);\n\nWritableStream.prototype._write = function(chunk, encoding, cb){\n\tif(chunk instanceof Buffer) chunk = this._decoder.write(chunk);\n\tthis._parser.write(chunk);\n\tcb();\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar processNextTick = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n// TODO(bmeurer): Change this back to const once hole checks are\n// properly optimized away early in Ignition+TurboFan.\n/*<replacement>*/\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') {\n return emitter.prependListener(event, fn);\n } else {\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n }\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n processNextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n processNextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n processNextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var state = this._readableState;\n var paused = false;\n\n var self = this;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) self.push(chunk);\n }\n\n self.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = self.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n self._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return self;\n};\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n processNextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction forEach(xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/*<replacement>*/\n\nvar processNextTick = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n processNextTick(emitErrorNT, this, err);\n }\n return;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n processNextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction TransformState(stream) {\n this.afterTransform = function (er, data) {\n return afterTransform(stream, er, data);\n };\n\n this.needTransform = false;\n this.transforming = false;\n this.writecb = null;\n this.writechunk = null;\n this.writeencoding = null;\n}\n\nfunction afterTransform(stream, er, data) {\n var ts = stream._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return stream.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data !== null && data !== undefined) stream.push(data);\n\n cb(er);\n\n var rs = stream._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n stream._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = new TransformState(this);\n\n var stream = this;\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.once('prefinish', function () {\n if (typeof this._flush === 'function') this._flush(function (er, data) {\n done(stream, er, data);\n });else done(stream);\n });\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data !== null && data !== undefined) stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n var ws = stream._writableState;\n var ts = stream._transformState;\n\n if (ws.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (ts.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","'use strict';\n\nexports.__esModule = true;\n\nvar _supportsColor = require('supports-color');\n\nvar _supportsColor2 = _interopRequireDefault(_supportsColor);\n\nvar _chalk = require('chalk');\n\nvar _chalk2 = _interopRequireDefault(_chalk);\n\nvar _terminalHighlight = require('./terminal-highlight');\n\nvar _terminalHighlight2 = _interopRequireDefault(_terminalHighlight);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * The CSS parser throws this error for broken CSS.\n *\n * Custom parsers can throw this error for broken custom syntax using\n * the {@link Node#error} method.\n *\n * PostCSS will use the input source map to detect the original error location.\n * If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS,\n * PostCSS will show the original position in the Sass file.\n *\n * If you need the position in the PostCSS input\n * (e.g., to debug the previous compiler), use `error.input.file`.\n *\n * @example\n * // Catching and checking syntax error\n * try {\n * postcss.parse('a{')\n * } catch (error) {\n * if ( error.name === 'CssSyntaxError' ) {\n * error //=> CssSyntaxError\n * }\n * }\n *\n * @example\n * // Raising error from plugin\n * throw node.error('Unknown variable', { plugin: 'postcss-vars' });\n */\nvar CssSyntaxError = function () {\n\n /**\n * @param {string} message - error message\n * @param {number} [line] - source line of the error\n * @param {number} [column] - source column of the error\n * @param {string} [source] - source code of the broken file\n * @param {string} [file] - absolute path to the broken file\n * @param {string} [plugin] - PostCSS plugin name, if error came from plugin\n */\n function CssSyntaxError(message, line, column, source, file, plugin) {\n _classCallCheck(this, CssSyntaxError);\n\n /**\n * @member {string} - Always equal to `'CssSyntaxError'`. You should\n * always check error type\n * by `error.name === 'CssSyntaxError'` instead of\n * `error instanceof CssSyntaxError`, because\n * npm could have several PostCSS versions.\n *\n * @example\n * if ( error.name === 'CssSyntaxError' ) {\n * error //=> CssSyntaxError\n * }\n */\n this.name = 'CssSyntaxError';\n /**\n * @member {string} - Error message.\n *\n * @example\n * error.message //=> 'Unclosed block'\n */\n this.reason = message;\n\n if (file) {\n /**\n * @member {string} - Absolute path to the broken file.\n *\n * @example\n * error.file //=> 'a.sass'\n * error.input.file //=> 'a.css'\n */\n this.file = file;\n }\n if (source) {\n /**\n * @member {string} - Source code of the broken file.\n *\n * @example\n * error.source //=> 'a { b {} }'\n * error.input.column //=> 'a b { }'\n */\n this.source = source;\n }\n if (plugin) {\n /**\n * @member {string} - Plugin name, if error came from plugin.\n *\n * @example\n * error.plugin //=> 'postcss-vars'\n */\n this.plugin = plugin;\n }\n if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n /**\n * @member {number} - Source line of the error.\n *\n * @example\n * error.line //=> 2\n * error.input.line //=> 4\n */\n this.line = line;\n /**\n * @member {number} - Source column of the error.\n *\n * @example\n * error.column //=> 1\n * error.input.column //=> 4\n */\n this.column = column;\n }\n\n this.setMessage();\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n\n CssSyntaxError.prototype.setMessage = function setMessage() {\n /**\n * @member {string} - Full error text in the GNU error format\n * with plugin, file, line and column.\n *\n * @example\n * error.message //=> 'a.css:1:1: Unclosed block'\n */\n this.message = this.plugin ? this.plugin + ': ' : '';\n this.message += this.file ? this.file : '<css input>';\n if (typeof this.line !== 'undefined') {\n this.message += ':' + this.line + ':' + this.column;\n }\n this.message += ': ' + this.reason;\n };\n\n /**\n * Returns a few lines of CSS source that caused the error.\n *\n * If the CSS has an input source map without `sourceContent`,\n * this method will return an empty string.\n *\n * @param {boolean} [color] whether arrow will be colored red by terminal\n * color codes. By default, PostCSS will detect\n * color support by `process.stdout.isTTY`\n * and `process.env.NODE_DISABLE_COLORS`.\n *\n * @example\n * error.showSourceCode() //=> \" 4 | }\n * // 5 | a {\n * // > 6 | bad\n * // | ^\n * // 7 | }\n * // 8 | b {\"\n *\n * @return {string} few lines of CSS source that caused the error\n */\n\n\n CssSyntaxError.prototype.showSourceCode = function showSourceCode(color) {\n var _this = this;\n\n if (!this.source) return '';\n\n var css = this.source;\n if (typeof color === 'undefined') color = _supportsColor2.default.stdout;\n if (color) css = (0, _terminalHighlight2.default)(css);\n\n var lines = css.split(/\\r?\\n/);\n var start = Math.max(this.line - 3, 0);\n var end = Math.min(this.line + 2, lines.length);\n\n var maxWidth = String(end).length;\n\n function mark(text) {\n if (color && _chalk2.default.red) {\n return _chalk2.default.red.bold(text);\n } else {\n return text;\n }\n }\n function aside(text) {\n if (color && _chalk2.default.gray) {\n return _chalk2.default.gray(text);\n } else {\n return text;\n }\n }\n\n return lines.slice(start, end).map(function (line, index) {\n var number = start + 1 + index;\n var gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | ';\n if (number === _this.line) {\n var spacing = aside(gutter.replace(/\\d/g, ' ')) + line.slice(0, _this.column - 1).replace(/[^\\t]/g, ' ');\n return mark('>') + aside(gutter) + line + '\\n ' + spacing + mark('^');\n } else {\n return ' ' + aside(gutter) + line;\n }\n }).join('\\n');\n };\n\n /**\n * Returns error position, message and source code of the broken part.\n *\n * @example\n * error.toString() //=> \"CssSyntaxError: app.css:1:1: Unclosed block\n * // > 1 | a {\n * // | ^\"\n *\n * @return {string} error position, message and source code\n */\n\n\n CssSyntaxError.prototype.toString = function toString() {\n var code = this.showSourceCode();\n if (code) {\n code = '\\n\\n' + code + '\\n';\n }\n return this.name + ': ' + this.message + code;\n };\n\n /**\n * @memberof CssSyntaxError#\n * @member {Input} input - Input object with PostCSS internal information\n * about input file. If input has source map\n * from previous tool, PostCSS will use origin\n * (for example, Sass) source. You can use this\n * object to get PostCSS input source.\n *\n * @example\n * error.input.file //=> 'a.css'\n * error.file //=> 'a.sass'\n */\n\n return CssSyntaxError;\n}();\n\nexports.default = CssSyntaxError;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNzcy1zeW50YXgtZXJyb3IuZXM2Il0sIm5hbWVzIjpbIkNzc1N5bnRheEVycm9yIiwibWVzc2FnZSIsImxpbmUiLCJjb2x1bW4iLCJzb3VyY2UiLCJmaWxlIiwicGx1Z2luIiwibmFtZSIsInJlYXNvbiIsInNldE1lc3NhZ2UiLCJFcnJvciIsImNhcHR1cmVTdGFja1RyYWNlIiwic2hvd1NvdXJjZUNvZGUiLCJjb2xvciIsImNzcyIsInN1cHBvcnRzQ29sb3IiLCJzdGRvdXQiLCJsaW5lcyIsInNwbGl0Iiwic3RhcnQiLCJNYXRoIiwibWF4IiwiZW5kIiwibWluIiwibGVuZ3RoIiwibWF4V2lkdGgiLCJTdHJpbmciLCJtYXJrIiwidGV4dCIsImNoYWxrIiwicmVkIiwiYm9sZCIsImFzaWRlIiwiZ3JheSIsInNsaWNlIiwibWFwIiwiaW5kZXgiLCJudW1iZXIiLCJndXR0ZXIiLCJzcGFjaW5nIiwicmVwbGFjZSIsImpvaW4iLCJ0b1N0cmluZyIsImNvZGUiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7OztBQUNBOzs7O0FBRUE7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTJCTUEsYzs7QUFFRjs7Ozs7Ozs7QUFRQSw0QkFBWUMsT0FBWixFQUFxQkMsSUFBckIsRUFBMkJDLE1BQTNCLEVBQW1DQyxNQUFuQyxFQUEyQ0MsSUFBM0MsRUFBaURDLE1BQWpELEVBQXlEO0FBQUE7O0FBQ3JEOzs7Ozs7Ozs7Ozs7QUFZQSxhQUFLQyxJQUFMLEdBQVksZ0JBQVo7QUFDQTs7Ozs7O0FBTUEsYUFBS0MsTUFBTCxHQUFjUCxPQUFkOztBQUVBLFlBQUtJLElBQUwsRUFBWTtBQUNSOzs7Ozs7O0FBT0EsaUJBQUtBLElBQUwsR0FBWUEsSUFBWjtBQUNIO0FBQ0QsWUFBS0QsTUFBTCxFQUFjO0FBQ1Y7Ozs7Ozs7QUFPQSxpQkFBS0EsTUFBTCxHQUFjQSxNQUFkO0FBQ0g7QUFDRCxZQUFLRSxNQUFMLEVBQWM7QUFDVjs7Ozs7O0FBTUEsaUJBQUtBLE1B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QUF2QyxFQUFpRCxHQUFqRCxDQUZKO0FBR0EsdUJBQU9iLEtBQUssR0FBTCxJQUFZSyxNQUFNTSxNQUFOLENBQVosR0FBNEJwQyxJQUE1QixHQUFtQyxLQUFuQyxHQUNBcUMsT0FEQSxHQUNVWixLQUFLLEdBQUwsQ0FEakI7QUFFSCxhQU5ELE1BTU87QUFDSCx1QkFBTyxNQUFNSyxNQUFNTSxNQUFOLENBQU4sR0FBc0JwQyxJQUE3QjtBQUNIO0FBQ0osU0FaTSxFQVlKdUMsSUFaSSxDQVlDLElBWkQsQ0FBUDtBQWFILEs7O0FBRUQ7Ozs7Ozs7Ozs7Ozs2QkFVQUMsUSx1QkFBVztBQUNQLFlBQUlDLE9BQU8sS0FBSy9CLGNBQUwsRUFBWDtBQUNBLFlBQUsrQixJQUFMLEVBQVk7QUFDUkEsbUJBQU8sU0FBU0EsSUFBVCxHQUFnQixJQUF2QjtBQUNIO0FBQ0QsZUFBTyxLQUFLcEMsSUFBTCxHQUFZLElBQVosR0FBbUIsS0FBS04sT0FBeEIsR0FBa0MwQyxJQUF6QztBQUNILEs7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7a0JBZVczQyxjIiwiZmlsZSI6ImNzcy1zeW50YXgtZXJyb3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3VwcG9ydHNDb2xvciBmcm9tICdzdXBwb3J0cy1jb2xvcic7XG5pbXBvcnQgY2hhbGsgICAgICAgICBmcm9tICdjaGFsayc7XG5cbmltcG9ydCB0ZXJtaW5hbEhpZ2hsaWdodCBmcm9tICcuL3Rlcm1pbmFsLWhpZ2hsaWdodCc7XG5cbi8qKlxuICogVGhlIENTUyBwYXJzZXIgdGhyb3dzIHRoaXMgZXJyb3IgZm9yIGJyb2tlbiBDU1MuXG4gKlxuICogQ3VzdG9tIHBhcnNlcnMgY2FuIHRocm93IHRoaXMgZXJyb3IgZm9yIGJyb2tlbiBjdXN0b20gc3ludGF4IHVzaW5nXG4gKiB0aGUge0BsaW5rIE5vZGUjZXJyb3J9IG1ldGhvZC5cbiAqXG4gKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSBpbnB1dCBzb3VyY2UgbWFwIHRvIGRldGVjdCB0aGUgb3JpZ2luYWwgZXJyb3IgbG9jYXRpb24uXG4gKiBJZiB5b3Ugd3JvdGUgYSBTYXNzIGZpbGUsIGNvbXBpbGVkIGl0IHRvIENTUyBhbmQgdGhlbiBwYXJzZWQgaXQgd2l0aCBQb3N0Q1NTLFxuICogUG9zdENTUyB3aWxsIHNob3cgdGhlIG9yaWdpbmFsIHBvc2l0aW9uIGluIHRoZSBTYXNzIGZpbGUuXG4gKlxuICogSWYgeW91IG5lZWQgdGhlIHBvc2l0aW9uIGluIHRoZSBQb3N0Q1NTIGlucHV0XG4gKiAoZS5nLiwgdG8gZGVidWcgdGhlIHByZXZpb3VzIGNvbXBpbGVyKSwgdXNlIGBlcnJvci5pbnB1dC5maWxlYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2F0Y2hpbmcgYW5kIGNoZWNraW5nIHN5bnRheCBlcnJvclxuICogdHJ5IHtcbiAqICAgcG9zdGNzcy5wYXJzZSgnYXsnKVxuICogfSBjYXRjaCAoZXJyb3IpIHtcbiAqICAgaWYgKCBlcnJvci5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InICkge1xuICogICAgIGVycm9yIC8vPT4gQ3NzU3ludGF4RXJyb3JcbiAqICAgfVxuICogfVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSYWlzaW5nIGVycm9yIGZyb20gcGx1Z2luXG4gKiB0aHJvdyBub2RlLmVycm9yKCdVbmtub3duIHZhcmlhYmxlJywgeyBwbHVnaW46ICdwb3N0Y3NzLXZhcnMnIH0pO1xuICovXG5jbGFzcyBDc3NTeW50YXhFcnJvciB7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAgLSBlcnJvciBtZXNzYWdlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsaW5lXSAgIC0gc291cmNlIGxpbmUgb2YgdGhlIGVycm9yXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtjb2x1bW5dIC0gc291cmNlIGNvbHVtbiBvZiB0aGUgZXJyb3JcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3NvdXJjZV0gLSBzb3VyY2UgY29kZSBvZiB0aGUgYnJva2VuIGZpbGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2ZpbGVdICAgLSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBicm9rZW4gZmlsZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbcGx1Z2luXSAtIFBvc3RDU1MgcGx1Z2luIG5hbWUsIGlmIGVycm9yIGNhbWUgZnJvbSBwbHVnaW5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlLCBsaW5lLCBjb2x1bW4sIHNvdXJjZSwgZmlsZSwgcGx1Z2luKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtzdHJpbmd9IC0gQWx3YXlzIGVxdWFsIHRvIGAnQ3NzU3ludGF4RXJyb3InYC4gWW91IHNob3VsZFxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgYWx3YXlzIGNoZWNrIGVycm9yIHR5cGVcbiAgICAgICAgICogICAgICAgICAgICAgICAgICAgIGJ5IGBlcnJvci5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InYCBpbnN0ZWFkIG9mXG4gICAgICAgICAqICAgICAgICAgICAgICAgICAgICBgZXJyb3IgaW5zdGFuY2VvZiBDc3NTeW50YXhFcnJvcmAsIGJlY2F1c2VcbiAgICAgICAgICogICAgICAgICAgICAgICAgICAgIG5wbSBjb3VsZCBoYXZlIHNldmVyYWwgUG9zdENTUyB2ZXJzaW9ucy5cbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogaWYgKCBlcnJvci5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InICkge1xuICAgICAgICAgKiAgIGVycm9yIC8vPT4gQ3NzU3ludGF4RXJyb3JcbiAgICAgICAgICogfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5uYW1lID0gJ0Nzc1N5bnRheEVycm9yJztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge3N0cmluZ30gLSBFcnJvciBtZXNzYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKiBlcnJvci5tZXNzYWdlIC8vPT4gJ1VuY2xvc2VkIGJsb2NrJ1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5yZWFzb24gPSBtZXNzYWdlO1xuXG4gICAgICAgIGlmICggZmlsZSApIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQG1lbWJlciB7c3RyaW5nfSAtIEFic29sdXRlIHBhdGggdG8gdGhlIGJyb2tlbiBmaWxlLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAgICAgKiBlcnJvci5maWxlICAgICAgIC8vPT4gJ2Euc2FzcydcbiAgICAgICAgICAgICAqIGVycm9yLmlucHV0LmZpbGUgLy89PiAnYS5jc3MnXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuZmlsZSA9IGZpbGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCBzb3VyY2UgKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBtZW1iZXIge3N0cmluZ30gLSBTb3VyY2UgY29kZSBvZiB0aGUgYnJva2VuIGZpbGUuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICAgICAqIGVycm9yLnNvdXJjZSAgICAgICAvLz0+ICdhIHsgYiB7fSB9J1xuICAgICAgICAgICAgICogZXJyb3IuaW5wdXQuY29sdW1uIC8vPT4gJ2EgYiB7IH0nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICggcGx1Z2luICkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAbWVtYmVyIHtzdHJpbmd9IC0gUGx1Z2luIG5hbWUsIGlmIGVycm9yIGNhbWUgZnJvbSBwbHVnaW4uXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICAgICAqIGVycm9yLnBsdWdpbiAvLz0+ICdwb3N0Y3NzLXZhcnMnXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICAgICAgICB9XG4gICAgICAgIGlmICggdHlwZW9mIGxpbmUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb2x1bW4gIT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAbWVtYmVyIHtudW1iZXJ9IC0gU291cmNlIGxpbmUgb2YgdGhlIGVycm9yLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAgICAgKiBlcnJvci5saW5lICAgICAgIC8vPT4gMlxuICAgICAgICAgICAgICogZXJyb3IuaW5wdXQubGluZSAvLz0+IDRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGhpcy5saW5lICAgPSBsaW5lO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAbWVtYmVyIHtudW1iZXJ9IC0gU291cmNlIGNvbHVtbiBvZiB0aGUgZXJyb3IuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICAgICAqIGVycm9yLmNvbHVtbiAgICAgICAvLz0+IDFcbiAgICAgICAgICAgICAqIGVycm9yLmlucHV0LmNvbHVtbiAvLz0+IDRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldE1lc3NhZ2UoKTtcblxuICAgICAgICBpZiAoIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlICkge1xuICAgICAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgQ3NzU3ludGF4RXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0TWVzc2FnZSgpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge3N0cmluZ30gLSBGdWxsIGVycm9yIHRleHQgaW4gdGhlIEdOVSBlcnJvciBmb3JtYXRcbiAgICAgICAgICogICAgICAgICAgICAgICAgICAgIHdpdGggcGx1Z2luLCBmaWxlLCBsaW5lIGFuZCBjb2x1bW4uXG4gICAgICAgICAqXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqIGVycm9yLm1lc3NhZ2UgLy89PiAnYS5jc3M6MToxOiBVbmNsb3NlZCBibG9jaydcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMubWVzc2FnZSAgPSB0aGlzLnBsdWdpbiA/IHRoaXMucGx1Z2luICsgJzogJyA6ICcnO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgKz0gdGhpcy5maWxlID8gdGhpcy5maWxlIDogJzxjc3MgaW5wdXQ+JztcbiAgICAgICAgaWYgKCB0eXBlb2YgdGhpcy5saW5lICE9PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZSArPSAnOicgKyB0aGlzLmxpbmUgKyAnOicgKyB0aGlzLmNvbHVtbjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1lc3NhZ2UgKz0gJzogJyArIHRoaXMucmVhc29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBmZXcgbGluZXMgb2YgQ1NTIHNvdXJjZSB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuXG4gICAgICpcbiAgICAgKiBJZiB0aGUgQ1NTIGhhcyBhbiBpbnB1dCBzb3VyY2UgbWFwIHdpdGhvdXQgYHNvdXJjZUNvbnRlbnRgLFxuICAgICAqIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2NvbG9yXSB3aGV0aGVyIGFycm93IHdpbGwgYmUgY29sb3JlZCByZWQgYnkgdGVybWluYWxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgY29kZXMuIEJ5IGRlZmF1bHQsIFBvc3RDU1Mgd2lsbCBkZXRlY3RcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3Igc3VwcG9ydCBieSBgcHJvY2Vzcy5zdGRvdXQuaXNUVFlgXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBgcHJvY2Vzcy5lbnYuTk9ERV9ESVNBQkxFX0NPTE9SU2AuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGVycm9yLnNob3dTb3VyY2VDb2RlKCkgLy89PiBcIiAgNCB8IH1cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgNSB8IGEge1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgPiA2IHwgICBiYWRcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICB8ICAgXlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICA3IHwgfVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICA4IHwgYiB7XCJcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gZmV3IGxpbmVzIG9mIENTUyBzb3VyY2UgdGhhdCBjYXVzZWQgdGhlIGVycm9yXG4gICAgICovXG4gICAgc2hvd1NvdXJjZUNvZGUoY29sb3IpIHtcbiAgICAgICAgaWYgKCAhdGhpcy5zb3VyY2UgKSByZXR1cm4gJyc7XG5cbiAgICAgICAgbGV0IGNzcyA9IHRoaXMuc291cmNlO1xuICAgICAgICBpZiAoIHR5cGVvZiBjb2xvciA9PT0gJ3VuZGVmaW5lZCcgKSBjb2xvciA9IHN1cHBvcnRzQ29sb3Iuc3Rkb3V0O1xuICAgICAgICBpZiAoIGNvbG9yICkgY3NzID0gdGVybWluYWxIaWdobGlnaHQoY3NzKTtcblxuICAgICAgICBsZXQgbGluZXMgPSBjc3Muc3BsaXQoL1xccj9cXG4vKTtcbiAgICAgICAgbGV0IHN0YXJ0ID0gTWF0aC5tYXgodGhpcy5saW5lIC0gMywgMCk7XG4gICAgICAgIGxldCBlbmQgICA9IE1hdGgubWluKHRoaXMubGluZSArIDIsIGxpbmVzLmxlbmd0aCk7XG5cbiAgICAgICAgbGV0IG1heFdpZHRoID0gU3RyaW5nKGVuZCkubGVuZ3RoO1xuXG4gICAgICAgIGZ1bmN0aW9uIG1hcmsodGV4dCkge1xuICAgICAgICAgICAgaWYgKCBjb2xvciAmJiBjaGFsay5yZWQgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoYWxrLnJlZC5ib2xkKHRleHQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBhc2lkZSh0ZXh0KSB7XG4gICAgICAgICAgICBpZiAoIGNvbG9yICYmIGNoYWxrLmdyYXkgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoYWxrLmdyYXkodGV4dCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxpbmVzLnNsaWNlKHN0YXJ0LCBlbmQpLm1hcCggKGxpbmUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBsZXQgbnVtYmVyID0gc3RhcnQgKyAxICsgaW5kZXg7XG4gICAgICAgICAgICBsZXQgZ3V0dGVyID0gJyAnICsgKCcgJyArIG51bWJlcikuc2xpY2UoLW1heFdpZHRoKSArICcgfCAnO1xuICAgICAgICAgICAgaWYgKCBudW1iZXIgPT09IHRoaXMubGluZSApIHtcbiAgICAgICAgICAgICAgICBsZXQgc3BhY2luZyA9XG4gICAgICAgICAgICAgICAgICAgIGFzaWRlKGd1dHRlci5yZXBsYWNlKC9cXGQvZywgJyAnKSkgK1xuICAgICAgICAgICAgICAgICAgICBsaW5lLnNsaWNlKDAsIHRoaXMuY29sdW1uIC0gMSkucmVwbGFjZSgvW15cXHRdL2csICcgJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcmsoJz4nKSArIGFzaWRlKGd1dHRlcikgKyBsaW5lICsgJ1xcbiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgc3BhY2luZyArIG1hcmsoJ14nKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcgJyArIGFzaWRlKGd1dHRlcikgKyBsaW5lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KS5qb2luKCdcXG4nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGVycm9yIHBvc2l0aW9uLCBtZXNzYWdlIGFuZCBzb3VyY2UgY29kZSBvZiB0aGUgYnJva2VuIHBhcnQuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGVycm9yLnRvU3RyaW5nKCkgLy89PiBcIkNzc1N5bnRheEVycm9yOiBhcHAuY3NzOjE6MTogVW5jbG9zZWQgYmxvY2tcbiAgICAgKiAgICAgICAgICAgICAgICAgIC8vICAgID4gMSB8IGEge1xuICAgICAqICAgICAgICAgICAgICAgICAgLy8gICAgICAgIHwgXlwiXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IGVycm9yIHBvc2l0aW9uLCBtZXNzYWdlIGFuZCBzb3VyY2UgY29kZVxuICAgICAqL1xuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICBsZXQgY29kZSA9IHRoaXMuc2hvd1NvdXJjZUNvZGUoKTtcbiAgICAgICAgaWYgKCBjb2RlICkge1xuICAgICAgICAgICAgY29kZSA9ICdcXG5cXG4nICsgY29kZSArICdcXG4nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWUgKyAnOiAnICsgdGhpcy5tZXNzYWdlICsgY29kZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAbWVtYmVyb2YgQ3NzU3ludGF4RXJyb3IjXG4gICAgICogQG1lbWJlciB7SW5wdXR9IGlucHV0IC0gSW5wdXQgb2JqZWN0IHdpdGggUG9zdENTUyBpbnRlcm5hbCBpbmZvcm1hdGlvblxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIGFib3V0IGlucHV0IGZpbGUuIElmIGlucHV0IGhhcyBzb3VyY2UgbWFwXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBwcmV2aW91cyB0b29sLCBQb3N0Q1NTIHdpbGwgdXNlIG9yaWdpblxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIChmb3IgZXhhbXBsZSwgU2Fzcykgc291cmNlLiBZb3UgY2FuIHVzZSB0aGlzXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0IHRvIGdldCBQb3N0Q1NTIGlucHV0IHNvdXJjZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogZXJyb3IuaW5wdXQuZmlsZSAvLz0+ICdhLmNzcydcbiAgICAgKiBlcnJvci5maWxlICAgICAgIC8vPT4gJ2Euc2FzcydcbiAgICAgKi9cblxufVxuXG5leHBvcnQgZGVmYXVsdCBDc3NTeW50YXhFcnJvcjtcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.default = tokenizer;\nvar SINGLE_QUOTE = 39;\nvar DOUBLE_QUOTE = 34;\nvar BACKSLASH = 92;\nvar SLASH = 47;\nvar NEWLINE = 10;\nvar SPACE = 32;\nvar FEED = 12;\nvar TAB = 9;\nvar CR = 13;\nvar OPEN_SQUARE = 91;\nvar CLOSE_SQUARE = 93;\nvar OPEN_PARENTHESES = 40;\nvar CLOSE_PARENTHESES = 41;\nvar OPEN_CURLY = 123;\nvar CLOSE_CURLY = 125;\nvar SEMICOLON = 59;\nvar ASTERISK = 42;\nvar COLON = 58;\nvar AT = 64;\n\nvar RE_AT_END = /[ \\n\\t\\r\\f\\{\\}\\(\\)'\"\\\\;/\\[\\]#]/g;\nvar RE_WORD_END = /[ \\n\\t\\r\\f\\(\\)\\{\\}:;@!'\"\\\\\\]\\[#]|\\/(?=\\*)/g;\nvar RE_BAD_BRACKET = /.[\\\\\\/\\(\"'\\n]/;\nvar RE_HEX_ESCAPE = /[a-f0-9]/i;\n\nfunction tokenizer(input) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var css = input.css.valueOf();\n var ignore = options.ignoreErrors;\n\n var code = void 0,\n next = void 0,\n quote = void 0,\n lines = void 0,\n last = void 0,\n content = void 0,\n escape = void 0,\n nextLine = void 0,\n nextOffset = void 0,\n escaped = void 0,\n escapePos = void 0,\n prev = void 0,\n n = void 0,\n currentToken = void 0;\n\n var length = css.length;\n var offset = -1;\n var line = 1;\n var pos = 0;\n var buffer = [];\n var returned = [];\n\n function unclosed(what) {\n throw input.error('Unclosed ' + what, line, pos - offset);\n }\n\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n\n function nextToken() {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n\n code = css.charCodeAt(pos);\n if (code === NEWLINE || code === FEED || code === CR && css.charCodeAt(pos + 1) !== NEWLINE) {\n offset = pos;\n line += 1;\n }\n\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED:\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n if (code === NEWLINE) {\n offset = next;\n line += 1;\n }\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n\n currentToken = ['space', css.slice(pos, next)];\n pos = next - 1;\n break;\n\n case OPEN_SQUARE:\n currentToken = ['[', '[', line, pos - offset];\n break;\n\n case CLOSE_SQUARE:\n currentToken = [']', ']', line, pos - offset];\n break;\n\n case OPEN_CURLY:\n currentToken = ['{', '{', line, pos - offset];\n break;\n\n case CLOSE_CURLY:\n currentToken = ['}', '}', line, pos - offset];\n break;\n\n case COLON:\n currentToken = [':', ':', line, pos - offset];\n break;\n\n case SEMICOLON:\n currentToken = [';', ';', line, pos - offset];\n break;\n\n case OPEN_PARENTHESES:\n prev = buffer.length ? buffer.pop()[1] : '';\n n = css.charCodeAt(pos + 1);\n if (prev === 'url' && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE && n !== SPACE && n !== NEWLINE && n !== TAB && n !== FEED && n !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(')', next + 1);\n if (next === -1) {\n if (ignore) {\n next = pos;\n break;\n } else {\n unclosed('bracket');\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n\n currentToken = ['brackets', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n\n pos = next;\n } else {\n next = css.indexOf(')', pos + 1);\n content = css.slice(pos, next + 1);\n\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = ['(', '(', line, pos - offset];\n } else {\n currentToken = ['brackets', content, line, pos - offset, line, next - offset];\n pos = next;\n }\n }\n\n break;\n\n case CLOSE_PARENTHESES:\n currentToken = [')', ')', line, pos - offset];\n break;\n\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE:\n quote = code === SINGLE_QUOTE ? '\\'' : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore) {\n next = pos + 1;\n break;\n } else {\n unclosed('string');\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n\n content = css.slice(pos, next + 1);\n lines = content.split('\\n');\n last = lines.length - 1;\n\n if (last > 0) {\n nextLine = line + last;\n nextOffset = next - lines[last].length;\n } else {\n nextLine = line;\n nextOffset = offset;\n }\n\n currentToken = ['string', css.slice(pos, next + 1), line, pos - offset, nextLine, next - nextOffset];\n\n offset = nextOffset;\n line = nextLine;\n pos = next;\n break;\n\n case AT:\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n\n currentToken = ['at-word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n\n pos = next;\n break;\n\n case BACKSLASH:\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n\n currentToken = ['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n\n pos = next;\n break;\n\n default:\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf('*/', pos + 2) + 1;\n if (next === 0) {\n if (ignore) {\n next = css.length;\n } else {\n unclosed('comment');\n }\n }\n\n content = css.slice(pos, next + 1);\n lines = content.split('\\n');\n last = lines.length - 1;\n\n if (last > 0) {\n nextLine = line + last;\n nextOffset = next - lines[last].length;\n } else {\n nextLine = line;\n nextOffset = offset;\n }\n\n currentToken = ['comment', content, line, pos - offset, nextLine, next - nextOffset];\n\n offset = nextOffset;\n line = nextLine;\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n\n currentToken = ['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n\n buffer.push(currentToken);\n\n pos = next;\n }\n\n break;\n }\n\n pos++;\n return currentToken;\n }\n\n function back(token) {\n returned.push(token);\n }\n\n return {\n back: back,\n nextToken: nextToken,\n endOfFile: endOfFile\n };\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2VuaXplLmVzNiJdLCJuYW1lcyI6WyJ0b2tlbml6ZXIiLCJTSU5HTEVfUVVPVEUiLCJET1VCTEVfUVVPVEUiLCJCQUNLU0xBU0giLCJTTEFTSCIsIk5FV0xJTkUiLCJTUEFDRSIsIkZFRUQiLCJUQUIiLCJDUiIsIk9QRU5fU1FVQVJFIiwiQ0xPU0VfU1FVQVJFIiwiT1BFTl9QQVJFTlRIRVNFUyIsIkNMT1NFX1BBUkVOVEhFU0VTIiwiT1BFTl9DVVJMWSIsIkNMT1NFX0NVUkxZIiwiU0VNSUNPTE9OIiwiQVNURVJJU0siLCJDT0xPTiIsIkFUIiwiUkVfQVRfRU5EIiwiUkVfV09SRF9FTkQiLCJSRV9CQURfQlJBQ0tFVCIsIlJFX0hFWF9FU0NBUEUiLCJpbnB1dCIsIm9wdGlvbnMiLCJjc3MiLCJ2YWx1ZU9mIiwiaWdub3JlIiwiaWdub3JlRXJyb3JzIiwiY29kZSIsIm5leHQiLCJxdW90ZSIsImxpbmVzIiwibGFzdCIsImNvbnRlbnQiLCJlc2NhcGUiLCJuZXh0TGluZSIsIm5leHRPZmZzZXQiLCJlc2NhcGVkIiwiZXNjYXBlUG9zIiwicHJldiIsIm4iLCJjdXJyZW50VG9rZW4iLCJsZW5ndGgiLCJvZmZzZXQiLCJsaW5lIiwicG9zIiwiYnVmZmVyIiwicmV0dXJuZWQiLCJ1bmNsb3NlZCIsIndoYXQiLCJlcnJvciIsImVuZE9mRmlsZSIsIm5leHRUb2tlbiIsInBvcCIsImNoYXJDb2RlQXQiLCJzbGljZSIsImluZGV4T2YiLCJ0ZXN0Iiwic3BsaXQiLCJsYXN0SW5kZXgiLCJjaGFyQXQiLCJwdXNoIiwiYmFjayIsInRva2VuIl0sIm1hcHBpbmdzIjoiOzs7a0JBeUJ3QkEsUztBQXpCeEIsSUFBTUMsaUJBQU47QUFDQSxJQUFNQyxpQkFBTjtBQUNBLElBQU1DLGNBQU47QUFDQSxJQUFNQyxVQUFOO0FBQ0EsSUFBTUMsWUFBTjtBQUNBLElBQU1DLFVBQU47QUFDQSxJQUFNQyxTQUFOO0FBQ0EsSUFBTUMsT0FBTjtBQUNBLElBQU1DLE9BQU47QUFDQSxJ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ICAgID0gJ1xcJycuY2hhckNvZGVBdCgwKTtcbmNvbnN0IERPVUJMRV9RVU9URSAgICAgID0gICdcIicuY2hhckNvZGVBdCgwKTtcbmNvbnN0IEJBQ0tTTEFTSCAgICAgICAgID0gJ1xcXFwnLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBTTEFTSCAgICAgICAgICAgICA9ICAnLycuY2hhckNvZGVBdCgwKTtcbmNvbnN0IE5FV0xJTkUgICAgICAgICAgID0gJ1xcbicuY2hhckNvZGVBdCgwKTtcbmNvbnN0IFNQQUNFICAgICAgICAgICAgID0gICcgJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgRkVFRCAgICAgICAgICAgICAgPSAnXFxmJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgVEFCICAgICAgICAgICAgICAgPSAnXFx0Jy5jaGFyQ29kZUF0KDApO1xuY29uc3QgQ1IgICAgICAgICAgICAgICAgPSAnXFxyJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgT1BFTl9TUVVBUkUgICAgICAgPSAgJ1snLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBDTE9TRV9TUVVBUkUgICAgICA9ICAnXScuY2hhckNvZGVBdCgwKTtcbmNvbnN0IE9QRU5fUEFSRU5USEVTRVMgID0gICcoJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgQ0xPU0VfUEFSRU5USEVTRVMgPSAgJyknLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBPUEVOX0NVUkxZICAgICAgICA9ICAneycuY2hhckNvZGVBdCgwKTtcbmNvbnN0IENMT1NFX0NVUkxZICAgICAgID0gICd9Jy5jaGFyQ29kZUF0KDApO1xuY29uc3QgU0VNSUNPTE9OICAgICAgICAgPSAgJzsnLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBBU1RFUklTSyAgICAgICAgICA9ICAnKicuY2hhckNvZGVBdCgwKTtcbmNvbnN0IENPTE9OICAgICAgICAgICAgID0gICc6Jy5jaGFyQ29kZUF0KDApO1xuY29uc3QgQVQgICAgICAgICAgICAgICAgPSAgJ0AnLmNoYXJDb2RlQXQoMCk7XG5cbmNvbnN0IFJFX0FUX0VORCAgICAgID0gL1sgXFxuXFx0XFxyXFxmXFx7XFx9XFwoXFwpJ1wiXFxcXDsvXFxbXFxdI10vZztcbmNvbnN0IFJFX1dPUkRfRU5EICAgID0gL1sgXFxuXFx0XFxyXFxmXFwoXFwpXFx7XFx9OjtAISdcIlxcXFxcXF1cXFsjXXxcXC8oPz1cXCopL2c7XG5jb25zdCBSRV9CQURfQlJBQ0tFVCA9IC8uW1xcXFxcXC9cXChcIidcXG5dLztcbmNvbnN0IFJFX0hFWF9FU0NBUEUgID0gL1thLWYwLTldL2k7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRva2VuaXplcihpbnB1dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGNzcyA9IGlucHV0LmNzcy52YWx1ZU9mKCk7XG4gICAgbGV0IGlnbm9yZSA9IG9wdGlvbnMuaWdub3JlRXJyb3JzO1xuXG4gICAgbGV0IGNvZGUsIG5leHQsIHF1b3RlLCBsaW5lcywgbGFzdCwgY29udGVudCwgZXNjYXBlLFxuICAgICAgICBuZXh0TGluZSwgbmV4dE9mZnNldCwgZXNjYXBlZCwgZXNjYXBlUG9zLCBwcmV2LCBuLCBjdXJyZW50VG9rZW47XG5cbiAgICBsZXQgbGVuZ3RoID0gY3NzLmxlbmd0aDtcbiAgICBsZXQgb2Zmc2V0ID0gLTE7XG4gICAgbGV0IGxpbmUgPSAxO1xuICAgIGxldCBwb3MgPSAwO1xuICAgIGxldCBidWZmZXIgPSBbXTtcbiAgICBsZXQgcmV0dXJuZWQgPSBbXTtcblxuICAgIGZ1bmN0aW9uIHVuY2xvc2VkKHdoYXQpIHtcbiAgICAgICAgdGhyb3cgaW5wdXQuZXJyb3IoJ1VuY2xvc2VkICcgKyB3aGF0LCBsaW5lLCBwb3MgLSBvZmZzZXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVuZE9mRmlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHJldHVybmVkLmxlbmd0aCA9PT0gMCAmJiBwb3MgPj0gbGVuZ3RoO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5leHRUb2tlbigpIHtcbiAgICAgICAgaWYgKCByZXR1cm5lZC5sZW5ndGggKSByZXR1cm4gcmV0dXJuZWQucG9wKCk7XG4gICAgICAgIGlmICggcG9zID49IGxlbmd0aCApIHJldHVybjtcblxuICAgICAgICBjb2RlID0gY3NzLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgICAgaWYgKCBjb2RlID09PSBORVdMSU5FIHx8IGNvZGUgPT09IEZFRUQgfHxcbiAgICAgICAgICAgICBjb2RlID09PSBDUiAmJiBjc3MuY2hhckNvZGVBdChwb3MgKyAxKSAhPT0gTkVXTElORSApIHtcbiAgICAgICAgICAgIG9mZnNldCA9IHBvcztcbiAgICAgICAgICAgIGxpbmUgKz0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoIGNvZGUgKSB7XG4gICAgICAgIGNhc2UgTkVXTElORTpcbiAgICAgICAgY2FzZSBTUEFDRTpcbiAgICAgICAgY2FzZSBUQUI6XG4gICAgICAgIGNhc2UgQ1I6XG4gICAgICAgIGNhc2UgRkVFRDpcbiAgICAgICAgICAgIG5leHQgPSBwb3M7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgbmV4dCArPSAxO1xuICAgICAgICAgICAgICAgIGNvZGUgPSBjc3MuY2hhckNvZGVBdChuZXh0KTtcbiAgICAgICAgICAgICAgICBpZiAoIGNvZGUgPT09IE5FV0xJTkUgKSB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IG5leHQ7XG4gICAgICAgICAgICAgICAgICAgIGxpbmUgKz0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IHdoaWxlICggY29kZSA9PT0gU1BBQ0UgICB8fFxuICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPT09IE5FV0xJTkUgfHxcbiAgICAgICAgICAgICAgICAgICAgICBjb2RlID09PSBUQUIgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgY29kZSA9PT0gQ1IgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPT09IEZFRUQgKTtcblxuICAgICAgICAgICAgY3VycmVudFRva2VuID0gWydzcGFjZScsIGNzcy5zbGljZShwb3MsIG5leHQpXTtcbiAgICAgICAgICAgIHBvcyA9IG5leHQgLSAxO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBPUEVOX1NRVUFSRTpcbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnWycsICdbJywgbGluZSwgcG9zIC0gb2Zmc2V0XTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgQ0xPU0VfU1FVQVJFOlxuICAgICAgICAgICAgY3VycmVudFRva2VuID0gWyddJywgJ10nLCBsaW5lLCBwb3MgLSBvZmZzZXRdO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBPUEVOX0NVUkxZOlxuICAgICAgICAgICAgY3VycmVudFRva2VuID0gWyd7JywgJ3snLCBsaW5lLCBwb3MgLSBvZmZzZXRdO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBDTE9TRV9DVVJMWTpcbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnfScsICd9JywgbGluZSwgcG9zIC0gb2Zmc2V0XTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgQ09MT046XG4gICAgICAgICAgICBjdXJyZW50VG9rZW4gPSBbJzonLCAnOicsIGxpbmUsIHBvcyAtIG9mZnNldF07XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFNFTUlDT0xPTjpcbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnOycsICc7JywgbGluZSwgcG9zIC0gb2Zmc2V0XTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgT1BFTl9QQVJFTlRIRVNFUzpcbiAgICAgICAgICAgIHByZXYgPSBidWZmZXIubGVuZ3RoID8gYnVmZmVyLnBvcCgpWzFdIDogJyc7XG4gICAgICAgICAgICBuICAgID0gY3NzLmNoYXJDb2RlQXQocG9zICsgMSk7XG4gICAgICAgICAgICBpZiAoIHByZXYgPT09ICd1cmwnICYmXG4gICAgICAgICAgICAgICAgIG4gIT09IFNJTkdMRV9RVU9URSAmJiBuICE9PSBET1VCTEVfUVVPVEUgJiZcbiAgICAgICAgICAgICAgICAgbiAhPT0gU1BBQ0UgJiYgbiAhPT0gTkVXTElORSAmJiBuICE9PSBUQUIgJiZcbiAgICAgICAgICAgICAgICAgbiAhPT0gRkVFRCAmJiBuICE9PSBDUiApIHtcbiAgICAgICAgICAgICAgICBuZXh0ID0gcG9zO1xuICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBuZXh0ICAgID0gY3NzLmluZGV4T2YoJyknLCBuZXh0ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gLTEgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGlnbm9yZSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0ID0gcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmNsb3NlZCgnYnJhY2tldCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVzY2FwZVBvcyA9IG5leHQ7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICggY3NzLmNoYXJDb2RlQXQoZXNjYXBlUG9zIC0gMSkgPT09IEJBQ0tTTEFTSCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZVBvcyAtPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSB3aGlsZSAoIGVzY2FwZWQgKTtcblxuICAgICAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnYnJhY2tldHMnLCBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSksXG4gICAgICAgICAgICAgICAgICAgIGxpbmUsIHBvcyAgLSBvZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgcG9zID0gbmV4dDtcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXh0ICAgID0gY3NzLmluZGV4T2YoJyknLCBwb3MgKyAxKTtcbiAgICAgICAgICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCBuZXh0ID09PSAtMSB8fCBSRV9CQURfQlJBQ0tFVC50ZXN0KGNvbnRlbnQpICkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50VG9rZW4gPSBbJygnLCAnKCcsIGxpbmUsIHBvcyAtIG9mZnNldF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFRva2VuID0gWydicmFja2V0cycsIGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lLCBwb3MgIC0gb2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICBwb3MgPSBuZXh0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBDTE9TRV9QQVJFTlRIRVNFUzpcbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnKScsICcpJywgbGluZSwgcG9zIC0gb2Zmc2V0XTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU0lOR0xFX1FVT1RFOlxuICAgICAgICBjYXNlIERPVUJMRV9RVU9URTpcbiAgICAgICAgICAgIHF1b3RlID0gY29kZSA9PT0gU0lOR0xFX1FVT1RFID8gJ1xcJycgOiAnXCInO1xuICAgICAgICAgICAgbmV4dCAgPSBwb3M7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIG5leHQgICAgPSBjc3MuaW5kZXhPZihxdW90ZSwgbmV4dCArIDEpO1xuICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gLTEgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICggaWdub3JlICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCA9IHBvcyArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuY2xvc2VkKCdzdHJpbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlc2NhcGVQb3MgPSBuZXh0O1xuICAgICAgICAgICAgICAgIHdoaWxlICggY3NzLmNoYXJDb2RlQXQoZXNjYXBlUG9zIC0gMSkgPT09IEJBQ0tTTEFTSCApIHtcbiAgICAgICAgICAgICAgICAgICAgZXNjYXBlUG9zIC09IDE7XG4gICAgICAgICAgICAgICAgICAgIGVzY2FwZWQgPSAhZXNjYXBlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IHdoaWxlICggZXNjYXBlZCApO1xuXG4gICAgICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpO1xuICAgICAgICAgICAgbGluZXMgICA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICAgICAgICAgICAgbGFzdCAgICA9IGxpbmVzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgICAgIGlmICggbGFzdCA+IDAgKSB7XG4gICAgICAgICAgICAgICAgbmV4dExpbmUgICA9IGxpbmUgKyBsYXN0O1xuICAgICAgICAgICAgICAgIG5leHRPZmZzZXQgPSBuZXh0IC0gbGluZXNbbGFzdF0ubGVuZ3RoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXh0TGluZSAgID0gbGluZTtcbiAgICAgICAgICAgICAgICBuZXh0T2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ3N0cmluZycsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICAgICAgICBsaW5lLCBwb3MgIC0gb2Zmc2V0LFxuICAgICAgICAgICAgICAgIG5leHRMaW5lLCBuZXh0IC0gbmV4dE9mZnNldFxuICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgb2Zmc2V0ID0gbmV4dE9mZnNldDtcbiAgICAgICAgICAgIGxpbmUgICA9IG5leHRMaW5lO1xuICAgICAgICAgICAgcG9zICAgID0gbmV4dDtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgQVQ6XG4gICAgICAgICAgICBSRV9BVF9FTkQubGFzdEluZGV4ID0gcG9zICsgMTtcbiAgICAgICAgICAgIFJFX0FUX0VORC50ZXN0KGNzcyk7XG4gICAgICAgICAgICBpZiAoIFJFX0FUX0VORC5sYXN0SW5kZXggPT09IDAgKSB7XG4gICAgICAgICAgICAgICAgbmV4dCA9IGNzcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXh0ID0gUkVfQVRfRU5ELmxhc3RJbmRleCAtIDI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnYXQtd29yZCcsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICAgICAgICBsaW5lLCBwb3MgIC0gb2Zmc2V0LFxuICAgICAgICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgIHBvcyA9IG5leHQ7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIEJBQ0tTTEFTSDpcbiAgICAgICAgICAgIG5leHQgICA9IHBvcztcbiAgICAgICAgICAgIGVzY2FwZSA9IHRydWU7XG4gICAgICAgICAgICB3aGlsZSAoIGNzcy5jaGFyQ29kZUF0KG5leHQgKyAxKSA9PT0gQkFDS1NMQVNIICkge1xuICAgICAgICAgICAgICAgIG5leHQgICs9IDE7XG4gICAgICAgICAgICAgICAgZXNjYXBlID0gIWVzY2FwZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvZGUgPSBjc3MuY2hhckNvZGVBdChuZXh0ICsgMSk7XG4gICAgICAgICAgICBpZiAoIGVzY2FwZSAmJiAoY29kZSAhPT0gU0xBU0ggICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgIT09IFNQQUNFICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlICE9PSBORVdMSU5FICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSAhPT0gVEFCICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgIT09IENSICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlICE9PSBGRUVEICkgKSB7XG4gICAgICAgICAgICAgICAgbmV4dCArPSAxO1xuICAgICAgICAgICAgICAgIGlmICggUkVfSEVYX0VTQ0FQRS50ZXN0KGNzcy5jaGFyQXQobmV4dCkpICkge1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIFJFX0hFWF9FU0NBUEUudGVzdChjc3MuY2hhckF0KG5leHQgKyAxKSkgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCBjc3MuY2hhckNvZGVBdChuZXh0ICsgMSkgPT09IFNQQUNFICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCArPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ3dvcmQnLCBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSksXG4gICAgICAgICAgICAgICAgbGluZSwgcG9zICAtIG9mZnNldCxcbiAgICAgICAgICAgICAgICBsaW5lLCBuZXh0IC0gb2Zmc2V0XG4gICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICBwb3MgPSBuZXh0O1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGlmICggY29kZSA9PT0gU0xBU0ggJiYgY3NzLmNoYXJDb2RlQXQocG9zICsgMSkgPT09IEFTVEVSSVNLICkge1xuICAgICAgICAgICAgICAgIG5leHQgPSBjc3MuaW5kZXhPZignKi8nLCBwb3MgKyAyKSArIDE7XG4gICAgICAgICAgICAgICAgaWYgKCBuZXh0ID09PSAwICkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIGlnbm9yZSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgPSBjc3MubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdW5jbG9zZWQoJ2NvbW1lbnQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSk7XG4gICAgICAgICAgICAgICAgbGluZXMgICA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICAgICAgICAgICAgICAgIGxhc3QgICAgPSBsaW5lcy5sZW5ndGggLSAxO1xuXG4gICAgICAgICAgICAgICAgaWYgKCBsYXN0ID4gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dExpbmUgICA9IGxpbmUgKyBsYXN0O1xuICAgICAgICAgICAgICAgICAgICBuZXh0T2Zmc2V0ID0gbmV4dCAtIGxpbmVzW2xhc3RdLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuZXh0TGluZSAgID0gbGluZTtcbiAgICAgICAgICAgICAgICAgICAgbmV4dE9mZnNldCA9IG9mZnNldDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ2NvbW1lbnQnLCBjb250ZW50LFxuICAgICAgICAgICAgICAgICAgICBsaW5lLCAgICAgcG9zICAtIG9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgbmV4dExpbmUsIG5leHQgLSBuZXh0T2Zmc2V0XG4gICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgIG9mZnNldCA9IG5leHRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgbGluZSAgID0gbmV4dExpbmU7XG4gICAgICAgICAgICAgICAgcG9zICAgID0gbmV4dDtcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBSRV9XT1JEX0VORC5sYXN0SW5kZXggPSBwb3MgKyAxO1xuICAgICAgICAgICAgICAgIFJFX1dPUkRfRU5ELnRlc3QoY3NzKTtcbiAgICAgICAgICAgICAgICBpZiAoIFJFX1dPUkRfRU5ELmxhc3RJbmRleCA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dCA9IGNzcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQgPSBSRV9XT1JEX0VORC5sYXN0SW5kZXggLSAyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnd29yZCcsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICAgICAgICAgICAgbGluZSwgcG9zICAtIG9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgICBidWZmZXIucHVzaChjdXJyZW50VG9rZW4pO1xuXG4gICAgICAgICAgICAgICAgcG9zID0gbmV4dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBwb3MrKztcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRUb2tlbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBiYWNrKHRva2VuKSB7XG4gICAgICAgIHJldHVybmVkLnB1c2godG9rZW4pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGJhY2ssXG4gICAgICAgIG5leHRUb2tlbixcbiAgICAgICAgZW5kT2ZGaWxlXG4gICAgfTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _cssSyntaxError = require('./css-syntax-error');\n\nvar _cssSyntaxError2 = _interopRequireDefault(_cssSyntaxError);\n\nvar _previousMap = require('./previous-map');\n\nvar _previousMap2 = _interopRequireDefault(_previousMap);\n\nvar _path = require('path');\n\nvar _path2 = _interopRequireDefault(_path);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar sequence = 0;\n\n/**\n * Represents the source CSS.\n *\n * @example\n * const root = postcss.parse(css, { from: file });\n * const input = root.source.input;\n */\n\nvar Input = function () {\n\n /**\n * @param {string} css - input CSS source\n * @param {object} [opts] - {@link Processor#process} options\n */\n function Input(css) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Input);\n\n if (css === null || (typeof css === 'undefined' ? 'undefined' : _typeof(css)) === 'object' && !css.toString) {\n throw new Error('PostCSS received ' + css + ' instead of CSS string');\n }\n\n /**\n * @member {string} - input CSS source\n *\n * @example\n * const input = postcss.parse('a{}', { from: file }).input;\n * input.css //=> \"a{}\";\n */\n this.css = css.toString();\n\n if (this.css[0] === '\\uFEFF' || this.css[0] === '\\uFFFE') {\n this.css = this.css.slice(1);\n }\n\n if (opts.from) {\n if (/^\\w+:\\/\\//.test(opts.from)) {\n /**\n * @member {string} - The absolute path to the CSS source file\n * defined with the `from` option.\n *\n * @example\n * const root = postcss.parse(css, { from: 'a.css' });\n * root.source.input.file //=> '/home/ai/a.css'\n */\n this.file = opts.from;\n } else {\n this.file = _path2.default.resolve(opts.from);\n }\n }\n\n var map = new _previousMap2.default(this.css, opts);\n if (map.text) {\n /**\n * @member {PreviousMap} - The input source map passed from\n * a compilation step before PostCSS\n * (for example, from Sass compiler).\n *\n * @example\n * root.source.input.map.consumer().sources //=> ['a.sass']\n */\n this.map = map;\n var file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n\n if (!this.file) {\n sequence += 1;\n /**\n * @member {string} - The unique ID of the CSS source. It will be\n * created if `from` option is not provided\n * (because PostCSS does not know the file path).\n *\n * @example\n * const root = postcss.parse(css);\n * root.source.input.file //=> undefined\n * root.source.input.id //=> \"<input css 1>\"\n */\n this.id = '<input css ' + sequence + '>';\n }\n if (this.map) this.map.file = this.from;\n }\n\n Input.prototype.error = function error(message, line, column) {\n var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var result = void 0;\n var origin = this.origin(line, column);\n if (origin) {\n result = new _cssSyntaxError2.default(message, origin.line, origin.column, origin.source, origin.file, opts.plugin);\n } else {\n result = new _cssSyntaxError2.default(message, line, column, this.css, this.file, opts.plugin);\n }\n\n result.input = { line: line, column: column, source: this.css };\n if (this.file) result.input.file = this.file;\n\n return result;\n };\n\n /**\n * Reads the input source map and returns a symbol position\n * in the input source (e.g., in a Sass file that was compiled\n * to CSS before being passed to PostCSS).\n *\n * @param {number} line - line in input CSS\n * @param {number} column - column in input CSS\n *\n * @return {filePosition} position in input source\n *\n * @example\n * root.source.input.origin(1, 1) //=> { file: 'a.css', line: 3, column: 1 }\n */\n\n\n Input.prototype.origin = function origin(line, column) {\n if (!this.map) return false;\n var consumer = this.map.consumer();\n\n var from = consumer.originalPositionFor({ line: line, column: column });\n if (!from.source) return false;\n\n var result = {\n file: this.mapResolve(from.source),\n line: from.line,\n column: from.column\n };\n\n var source = consumer.sourceContentFor(from.source);\n if (source) result.source = source;\n\n return result;\n };\n\n Input.prototype.mapResolve = function mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n } else {\n return _path2.default.resolve(this.map.consumer().sourceRoot || '.', file);\n }\n };\n\n /**\n * The CSS source identifier. Contains {@link Input#file} if the user\n * set the `from` option, or {@link Input#id} if they did not.\n * @type {string}\n *\n * @example\n * const root = postcss.parse(css, { from: 'a.css' });\n * root.source.input.from //=> \"/home/ai/a.css\"\n *\n * const root = postcss.parse(css);\n * root.source.input.from //=> \"<input css 1>\"\n */\n\n\n _createClass(Input, [{\n key: 'from',\n get: function get() {\n return this.file || this.id;\n }\n }]);\n\n return Input;\n}();\n\nexports.default = Input;\n\n/**\n * @typedef {object} filePosition\n * @property {string} file - path to file\n * @property {number} line - source line in file\n * @property {number} column - source column in file\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImlucHV0LmVzNiJdLCJuYW1lcyI6WyJzZXF1ZW5jZSIsIklucHV0IiwiY3NzIiwib3B0cyIsInRvU3RyaW5nIiwiRXJyb3IiLCJzbGljZSIsImZyb20iLCJ0ZXN0IiwiZmlsZSIsInBhdGgiLCJyZXNvbHZlIiwibWFwIiwiUHJldmlvdXNNYXAiLCJ0ZXh0IiwiY29uc3VtZXIiLCJtYXBSZXNvbHZlIiwiaWQiLCJlcnJvciIsIm1lc3NhZ2UiLCJsaW5lIiwiY29sdW1uIiwicmVzdWx0Iiwib3JpZ2luIiwiQ3NzU3ludGF4RXJyb3IiLCJzb3VyY2UiLCJwbHVnaW4iLCJpbnB1dCIsIm9yaWdpbmFsUG9zaXRpb25Gb3IiLCJzb3VyY2VDb250ZW50Rm9yIiwic291cmNlUm9vdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBRUE7Ozs7Ozs7O0FBRUEsSUFBSUEsV0FBVyxDQUFmOztBQUVBOzs7Ozs7OztJQU9NQyxLOztBQUVGOzs7O0FBSUEsbUJBQVlDLEdBQVosRUFBNkI7QUFBQSxZQUFaQyxJQUFZLHVFQUFMLEVBQUs7O0FBQUE7O0FBQ3pCLFlBQUtELFFBQVEsSUFBUixJQUFnQixRQUFPQSxHQUFQLHlDQUFPQSxHQUFQLE9BQWUsUUFBZixJQUEyQixDQUFDQSxJQUFJRSxRQUFyRCxFQUFnRTtBQUM1RCxrQkFBTSxJQUFJQyxLQUFKLHVCQUErQkgsR0FBL0IsNEJBQU47QUFDSDs7QUFFRDs7Ozs7OztBQU9BLGFBQUtBLEdBQUwsR0FBV0EsSUFBSUUsUUFBSixFQUFYOztBQUVBLFlBQUssS0FBS0YsR0FBTCxDQUFTLENBQVQsTUFBZ0IsUUFBaEIsSUFBNEIsS0FBS0EsR0FBTCxDQUFTLENBQVQsTUFBZ0IsUUFBakQsRUFBNEQ7QUFDeEQsaUJBQUtBLEdBQUwsR0FBVyxLQUFLQSxHQUFMLENBQVNJLEtBQVQsQ0FBZSxDQUFmLENBQVg7QUFDSDs7QUFFRCxZQUFLSCxLQUFLSSxJQUFWLEVBQWlCO0FBQ2IsZ0JBQUssWUFBWUMsSUFBWixD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QixtQkFBT0EsSUFBUDtBQUNILFNBRkQsTUFFTztBQUNILG1CQUFPQyxlQUFLQyxPQUFMLENBQWEsS0FBS0MsR0FBTCxDQUFTRyxRQUFULEdBQW9CZSxVQUFwQixJQUFrQyxHQUEvQyxFQUFvRHJCLElBQXBELENBQVA7QUFDSDtBQUNKLEs7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7NEJBWVc7QUFDUCxtQkFBTyxLQUFLQSxJQUFMLElBQWEsS0FBS1EsRUFBekI7QUFDSDs7Ozs7O2tCQUlVaEIsSzs7QUFFZiIsImZpbGUiOiJpbnB1dC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDc3NTeW50YXhFcnJvciBmcm9tICcuL2Nzcy1zeW50YXgtZXJyb3InO1xuaW1wb3J0IFByZXZpb3VzTWFwICAgIGZyb20gJy4vcHJldmlvdXMtbWFwJztcblxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbmxldCBzZXF1ZW5jZSA9IDA7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgc291cmNlIENTUy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCAgPSBwb3N0Y3NzLnBhcnNlKGNzcywgeyBmcm9tOiBmaWxlIH0pO1xuICogY29uc3QgaW5wdXQgPSByb290LnNvdXJjZS5pbnB1dDtcbiAqL1xuY2xhc3MgSW5wdXQge1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNzcyAgICAtIGlucHV0IENTUyBzb3VyY2VcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gW29wdHNdIC0ge0BsaW5rIFByb2Nlc3NvciNwcm9jZXNzfSBvcHRpb25zXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY3NzLCBvcHRzID0geyB9KSB7XG4gICAgICAgIGlmICggY3NzID09PSBudWxsIHx8IHR5cGVvZiBjc3MgPT09ICdvYmplY3QnICYmICFjc3MudG9TdHJpbmcgKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBvc3RDU1MgcmVjZWl2ZWQgJHsgY3NzIH0gaW5zdGVhZCBvZiBDU1Mgc3RyaW5nYCk7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7c3RyaW5nfSAtIGlucHV0IENTUyBzb3VyY2VcbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogY29uc3QgaW5wdXQgPSBwb3N0Y3NzLnBhcnNlKCdhe30nLCB7IGZyb206IGZpbGUgfSkuaW5wdXQ7XG4gICAgICAgICAqIGlucHV0LmNzcyAvLz0+IFwiYXt9XCI7XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmNzcyA9IGNzcy50b1N0cmluZygpO1xuXG4gICAgICAgIGlmICggdGhpcy5jc3NbMF0gPT09ICdcXHVGRUZGJyB8fCB0aGlzLmNzc1swXSA9PT0gJ1xcdUZGRkUnICkge1xuICAgICAgICAgICAgdGhpcy5jc3MgPSB0aGlzLmNzcy5zbGljZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggb3B0cy5mcm9tICkge1xuICAgICAgICAgICAgaWYgKCAvXlxcdys6XFwvXFwvLy50ZXN0KG9wdHMuZnJvbSkgKSB7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogQG1lbWJlciB7c3RyaW5nfSAtIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBDU1Mgc291cmNlIGZpbGVcbiAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCB3aXRoIHRoZSBgZnJvbWAgb3B0aW9uLlxuICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICAgICAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZShjc3MsIHsgZnJvbTogJ2EuY3NzJyB9KTtcbiAgICAgICAgICAgICAgICAgKiByb290LnNvdXJjZS5pbnB1dC5maWxlIC8vPT4gJy9ob21lL2FpL2EuY3NzJ1xuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZSA9IG9wdHMuZnJvbTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlID0gcGF0aC5yZXNvbHZlKG9wdHMuZnJvbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbWFwID0gbmV3IFByZXZpb3VzTWFwKHRoaXMuY3NzLCBvcHRzKTtcbiAgICAgICAgaWYgKCBtYXAudGV4dCApIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQG1lbWJlciB7UHJldmlvdXNNYXB9IC0gVGhlIGlucHV0IHNvdXJjZSBtYXAgcGFzc2VkIGZyb21cbiAgICAgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIGEgY29tcGlsYXRpb24gc3RlcCBiZWZvcmUgUG9zdENTU1xuICAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgKGZvciBleGFtcGxlLCBmcm9tIFNhc3MgY29tcGlsZXIpLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAgICAgKiByb290LnNvdXJjZS5pbnB1dC5tYXAuY29uc3VtZXIoKS5zb3VyY2VzIC8vPT4gWydhLnNhc3MnXVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLm1hcCA9IG1hcDtcbiAgICAgICAgICAgIGxldCBmaWxlID0gbWFwLmNvbnN1bWVyKCkuZmlsZTtcbiAgICAgICAgICAgIGlmICggIXRoaXMuZmlsZSAmJiBmaWxlICkgdGhpcy5maWxlID0gdGhpcy5tYXBSZXNvbHZlKGZpbGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCAhdGhpcy5maWxlICkge1xuICAgICAgICAgICAgc2VxdWVuY2UgKz0gMTtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQG1lbWJlciB7c3RyaW5nfSAtIFRoZSB1bmlxdWUgSUQgb2YgdGhlIENTUyBzb3VyY2UuIEl0IHdpbGwgYmVcbiAgICAgICAgICAgICAqICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGlmIGBmcm9tYCBvcHRpb24gaXMgbm90IHByb3ZpZGVkXG4gICAgICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgKGJlY2F1c2UgUG9zdENTUyBkb2VzIG5vdCBrbm93IHRoZSBmaWxlIHBhdGgpLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZShjc3MpO1xuICAgICAgICAgICAgICogcm9vdC5zb3VyY2UuaW5wdXQuZmlsZSAvLz0+IHVuZGVmaW5lZFxuICAgICAgICAgICAgICogcm9vdC5zb3VyY2UuaW5wdXQuaWQgICAvLz0+IFwiPGlucHV0IGNzcyAxPlwiXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuaWQgICA9ICc8aW5wdXQgY3NzICcgKyBzZXF1ZW5jZSArICc+JztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIHRoaXMubWFwICkgdGhpcy5tYXAuZmlsZSA9IHRoaXMuZnJvbTtcbiAgICB9XG5cbiAgICBlcnJvcihtZXNzYWdlLCBsaW5lLCBjb2x1bW4sIG9wdHMgPSB7IH0pIHtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgbGV0IG9yaWdpbiA9IHRoaXMub3JpZ2luKGxpbmUsIGNvbHVtbik7XG4gICAgICAgIGlmICggb3JpZ2luICkge1xuICAgICAgICAgICAgcmVzdWx0ID0gbmV3IENzc1N5bnRheEVycm9yKG1lc3NhZ2UsIG9yaWdpbi5saW5lLCBvcmlnaW4uY29sdW1uLFxuICAgICAgICAgICAgICAgIG9yaWdpbi5zb3VyY2UsIG9yaWdpbi5maWxlLCBvcHRzLnBsdWdpbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSBuZXcgQ3NzU3ludGF4RXJyb3IobWVzc2FnZSwgbGluZSwgY29sdW1uLFxuICAgICAgICAgICAgICAgIHRoaXMuY3NzLCB0aGlzLmZpbGUsIG9wdHMucGx1Z2luKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdC5pbnB1dCA9IHsgbGluZSwgY29sdW1uLCBzb3VyY2U6IHRoaXMuY3NzIH07XG4gICAgICAgIGlmICggdGhpcy5maWxlICkgcmVzdWx0LmlucHV0LmZpbGUgPSB0aGlzLmZpbGU7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkcyB0aGUgaW5wdXQgc291cmNlIG1hcCBhbmQgcmV0dXJucyBhIHN5bWJvbCBwb3NpdGlvblxuICAgICAqIGluIHRoZSBpbnB1dCBzb3VyY2UgKGUuZy4sIGluIGEgU2FzcyBmaWxlIHRoYXQgd2FzIGNvbXBpbGVkXG4gICAgICogdG8gQ1NTIGJlZm9yZSBiZWluZyBwYXNzZWQgdG8gUG9zdENTUykuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZSAgIC0gbGluZSBpbiBpbnB1dCBDU1NcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uIC0gY29sdW1uIGluIGlucHV0IENTU1xuICAgICAqXG4gICAgICogQHJldHVybiB7ZmlsZVBvc2l0aW9ufSBwb3NpdGlvbiBpbiBpbnB1dCBzb3VyY2VcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcm9vdC5zb3VyY2UuaW5wdXQub3JpZ2luKDEsIDEpIC8vPT4geyBmaWxlOiAnYS5jc3MnLCBsaW5lOiAzLCBjb2x1bW46IDEgfVxuICAgICAqL1xuICAgIG9yaWdpbihsaW5lLCBjb2x1bW4pIHtcbiAgICAgICAgaWYgKCAhdGhpcy5tYXAgKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGxldCBjb25zdW1lciA9IHRoaXMubWFwLmNvbnN1bWVyKCk7XG5cbiAgICAgICAgbGV0IGZyb20gPSBjb25zdW1lci5vcmlnaW5hbFBvc2l0aW9uRm9yKHsgbGluZSwgY29sdW1uIH0pO1xuICAgICAgICBpZiAoICFmcm9tLnNvdXJjZSApIHJldHVybiBmYWxzZTtcblxuICAgICAgICBsZXQgcmVzdWx0ID0ge1xuICAgICAgICAgICAgZmlsZTogICB0aGlzLm1hcFJlc29sdmUoZnJvbS5zb3VyY2UpLFxuICAgICAgICAgICAgbGluZTogICBmcm9tLmxpbmUsXG4gICAgICAgICAgICBjb2x1bW46IGZyb20uY29sdW1uXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IHNvdXJjZSA9IGNvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3IoZnJvbS5zb3VyY2UpO1xuICAgICAgICBpZiAoIHNvdXJjZSApIHJlc3VsdC5zb3VyY2UgPSBzb3VyY2U7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBtYXBSZXNvbHZlKGZpbGUpIHtcbiAgICAgICAgaWYgKCAvXlxcdys6XFwvXFwvLy50ZXN0KGZpbGUpICkge1xuICAgICAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcGF0aC5yZXNvbHZlKHRoaXMubWFwLmNvbnN1bWVyKCkuc291cmNlUm9vdCB8fCAnLicsIGZpbGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIENTUyBzb3VyY2UgaWRlbnRpZmllci4gQ29udGFpbnMge0BsaW5rIElucHV0I2ZpbGV9IGlmIHRoZSB1c2VyXG4gICAgICogc2V0IHRoZSBgZnJvbWAgb3B0aW9uLCBvciB7QGxpbmsgSW5wdXQjaWR9IGlmIHRoZXkgZGlkIG5vdC5cbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZShjc3MsIHsgZnJvbTogJ2EuY3NzJyB9KTtcbiAgICAgKiByb290LnNvdXJjZS5pbnB1dC5mcm9tIC8vPT4gXCIvaG9tZS9haS9hLmNzc1wiXG4gICAgICpcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZShjc3MpO1xuICAgICAqIHJvb3Quc291cmNlLmlucHV0LmZyb20gLy89PiBcIjxpbnB1dCBjc3MgMT5cIlxuICAgICAqL1xuICAgIGdldCBmcm9tKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWxlIHx8IHRoaXMuaWQ7XG4gICAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IElucHV0O1xuXG4vKipcbiAqIEB0eXBlZGVmICB7b2JqZWN0fSBmaWxlUG9zaXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBmaWxlICAgLSBwYXRoIHRvIGZpbGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsaW5lICAgLSBzb3VyY2UgbGluZSBpbiBmaWxlXG4gKiBAcHJvcGVydHkge251bWJlcn0gY29sdW1uIC0gc291cmNlIGNvbHVtbiBpbiBmaWxlXG4gKi9cbiJdfQ==\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","'use strict';\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar defaultRaw = {\n colon: ': ',\n indent: ' ',\n beforeDecl: '\\n',\n beforeRule: '\\n',\n beforeOpen: ' ',\n beforeClose: '\\n',\n beforeComment: '\\n',\n after: '\\n',\n emptyBody: '',\n commentLeft: ' ',\n commentRight: ' '\n};\n\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\n\nvar Stringifier = function () {\n function Stringifier(builder) {\n _classCallCheck(this, Stringifier);\n\n this.builder = builder;\n }\n\n Stringifier.prototype.stringify = function stringify(node, semicolon) {\n this[node.type](node, semicolon);\n };\n\n Stringifier.prototype.root = function root(node) {\n this.body(node);\n if (node.raws.after) this.builder(node.raws.after);\n };\n\n Stringifier.prototype.comment = function comment(node) {\n var left = this.raw(node, 'left', 'commentLeft');\n var right = this.raw(node, 'right', 'commentRight');\n this.builder('/*' + left + node.text + right + '*/', node);\n };\n\n Stringifier.prototype.decl = function decl(node, semicolon) {\n var between = this.raw(node, 'between', 'colon');\n var string = node.prop + between + this.rawValue(node, 'value');\n\n if (node.important) {\n string += node.raws.important || ' !important';\n }\n\n if (semicolon) string += ';';\n this.builder(string, node);\n };\n\n Stringifier.prototype.rule = function rule(node) {\n this.block(node, this.rawValue(node, 'selector'));\n if (node.raws.ownSemicolon) {\n this.builder(node.raws.ownSemicolon, node, 'end');\n }\n };\n\n Stringifier.prototype.atrule = function atrule(node, semicolon) {\n var name = '@' + node.name;\n var params = node.params ? this.rawValue(node, 'params') : '';\n\n if (typeof node.raws.afterName !== 'undefined') {\n name += node.raws.afterName;\n } else if (params) {\n name += ' ';\n }\n\n if (node.nodes) {\n this.block(node, name + params);\n } else {\n var end = (node.raws.between || '') + (semicolon ? ';' : '');\n this.builder(name + params + end, node);\n }\n };\n\n Stringifier.prototype.body = function body(node) {\n var last = node.nodes.length - 1;\n while (last > 0) {\n if (node.nodes[last].type !== 'comment') break;\n last -= 1;\n }\n\n var semicolon = this.raw(node, 'semicolon');\n for (var i = 0; i < node.nodes.length; i++) {\n var child = node.nodes[i];\n var before = this.raw(child, 'before');\n if (before) this.builder(before);\n this.stringify(child, last !== i || semicolon);\n }\n };\n\n Stringifier.prototype.block = function block(node, start) {\n var between = this.raw(node, 'between', 'beforeOpen');\n this.builder(start + between + '{', node, 'start');\n\n var after = void 0;\n if (node.nodes && node.nodes.length) {\n this.body(node);\n after = this.raw(node, 'after');\n } else {\n after = this.raw(node, 'after', 'emptyBody');\n }\n\n if (after) this.builder(after);\n this.builder('}', node, 'end');\n };\n\n Stringifier.prototype.raw = function raw(node, own, detect) {\n var value = void 0;\n if (!detect) detect = own;\n\n // Already had\n if (own) {\n value = node.raws[own];\n if (typeof value !== 'undefined') return value;\n }\n\n var parent = node.parent;\n\n // Hack for first rule in CSS\n if (detect === 'before') {\n if (!parent || parent.type === 'root' && parent.first === node) {\n return '';\n }\n }\n\n // Floating child without parent\n if (!parent) return defaultRaw[detect];\n\n // Detect style by other nodes\n var root = node.root();\n if (!root.rawCache) root.rawCache = {};\n if (typeof root.rawCache[detect] !== 'undefined') {\n return root.rawCache[detect];\n }\n\n if (detect === 'before' || detect === 'after') {\n return this.beforeAfter(node, detect);\n } else {\n var method = 'raw' + capitalize(detect);\n if (this[method]) {\n value = this[method](root, node);\n } else {\n root.walk(function (i) {\n value = i.raws[own];\n if (typeof value !== 'undefined') return false;\n });\n }\n }\n\n if (typeof value === 'undefined') value = defaultRaw[detect];\n\n root.rawCache[detect] = value;\n return value;\n };\n\n Stringifier.prototype.rawSemicolon = function rawSemicolon(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n value = i.raws.semicolon;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawEmptyBody = function rawEmptyBody(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length === 0) {\n value = i.raws.after;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawIndent = function rawIndent(root) {\n if (root.raws.indent) return root.raws.indent;\n var value = void 0;\n root.walk(function (i) {\n var p = i.parent;\n if (p && p !== root && p.parent && p.parent === root) {\n if (typeof i.raws.before !== 'undefined') {\n var parts = i.raws.before.split('\\n');\n value = parts[parts.length - 1];\n value = value.replace(/[^\\s]/g, '');\n return false;\n }\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawBeforeComment = function rawBeforeComment(root, node) {\n var value = void 0;\n root.walkComments(function (i) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n return false;\n }\n });\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeDecl');\n } else if (value) {\n value = value.replace(/[^\\s]/g, '');\n }\n return value;\n };\n\n Stringifier.prototype.rawBeforeDecl = function rawBeforeDecl(root, node) {\n var value = void 0;\n root.walkDecls(function (i) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n return false;\n }\n });\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeRule');\n } else if (value) {\n value = value.replace(/[^\\s]/g, '');\n }\n return value;\n };\n\n Stringifier.prototype.rawBeforeRule = function rawBeforeRule(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && (i.parent !== root || root.first !== i)) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/[^\\s]/g, '');\n return value;\n };\n\n Stringifier.prototype.rawBeforeClose = function rawBeforeClose(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length > 0) {\n if (typeof i.raws.after !== 'undefined') {\n value = i.raws.after;\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/[^\\s]/g, '');\n return value;\n };\n\n Stringifier.prototype.rawBeforeOpen = function rawBeforeOpen(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.type !== 'decl') {\n value = i.raws.between;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawColon = function rawColon(root) {\n var value = void 0;\n root.walkDecls(function (i) {\n if (typeof i.raws.between !== 'undefined') {\n value = i.raws.between.replace(/[^\\s:]/g, '');\n return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.beforeAfter = function beforeAfter(node, detect) {\n var value = void 0;\n if (node.type === 'decl') {\n value = this.raw(node, null, 'beforeDecl');\n } else if (node.type === 'comment') {\n value = this.raw(node, null, 'beforeComment');\n } else if (detect === 'before') {\n value = this.raw(node, null, 'beforeRule');\n } else {\n value = this.raw(node, null, 'beforeClose');\n }\n\n var buf = node.parent;\n var depth = 0;\n while (buf && buf.type !== 'root') {\n depth += 1;\n buf = buf.parent;\n }\n\n if (value.indexOf('\\n') !== -1) {\n var indent = this.raw(node, null, 'indent');\n if (indent.length) {\n for (var step = 0; step < depth; step++) {\n value += indent;\n }\n }\n }\n\n return value;\n };\n\n Stringifier.prototype.rawValue = function rawValue(node, prop) {\n var value = node[prop];\n var raw = node.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n } else {\n return value;\n }\n };\n\n return Stringifier;\n}();\n\nexports.default = Stringifier;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmaWVyLmVzNiJdLCJuYW1lcyI6WyJkZWZhdWx0UmF3IiwiY29sb24iLCJpbmRlbnQiLCJiZWZvcmVEZWNsIiwiYmVmb3JlUnVsZSIsImJlZm9yZU9wZW4iLCJiZWZvcmVDbG9zZSIsImJlZm9yZUNvbW1lbnQiLCJhZnRlciIsImVtcHR5Qm9keSIsImNvbW1lbnRMZWZ0IiwiY29tbWVudFJpZ2h0IiwiY2FwaXRhbGl6ZSIsInN0ciIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJTdHJpbmdpZmllciIsImJ1aWxkZXIiLCJzdHJpbmdpZnkiLCJub2RlIiwic2VtaWNvbG9uIiwidHlwZSIsInJvb3QiLCJib2R5IiwicmF3cyIsImNvbW1lbnQiLCJsZWZ0IiwicmF3IiwicmlnaHQiLCJ0ZXh0IiwiZGVjbCIsImJldHdlZW4iLCJzdHJpbmciLCJwcm9wIiwicmF3VmFsdWUiLCJpbXBvcnRhbnQiLCJydWxlIiwiYmxvY2siLCJvd25TZW1pY29sb24iLCJhdHJ1bGUiLCJuYW1lIiwicGFyYW1zIiwiYWZ0ZXJOYW1lIiwibm9kZXMiLCJlbmQiLCJsYXN0IiwibGVuZ3RoIiwiaSIsImNoaWxkIiwiYmVmb3JlIiwic3RhcnQiLCJvd24iLCJkZXRlY3QiLCJ2YWx1ZSIsInBhcmVudCIsImZpcnN0IiwicmF3Q2FjaGUiLCJiZWZvcmVBZnRlciIsIm1ldGhvZCIsIndhbGsiLCJyYXdTZW1pY29sb24iLCJyYXdFbXB0eUJvZHkiLCJyYXdJbmRlbnQiLCJwIiwicGFydHMiLCJzcGxpdCIsInJlcGxhY2UiLCJyYXdCZWZvcmVDb21tZW50Iiwid2Fsa0NvbW1lbnRzIiwiaW5kZXhPZiIsInJhd0JlZm9yZURlY2wiLCJ3YWxrRGVjbHMiLCJyYXdCZWZvcmVSdWxlIiwicmF3QmVmb3JlQ2xvc2UiLCJyYXdCZWZvcmVPcGVuIiwicmF3Q29sb24iLCJidWYiLCJkZXB0aCIsInN0ZXAiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQU1BLGFBQWE7QUFDZkMsV0FBZSxJQURB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QWtDO0FBQzlCLG1CQUFPMUIsSUFBSUEsR0FBWDtBQUNILFNBRkQsTUFFTztBQUNILG1CQUFPMEIsS0FBUDtBQUNIO0FBQ0osSzs7Ozs7a0JBSVVyQyxXIiwiZmlsZSI6InN0cmluZ2lmaWVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZGVmYXVsdFJhdyA9IHtcbiAgICBjb2xvbjogICAgICAgICAnOiAnLFxuICAgIGluZGVudDogICAgICAgICcgICAgJyxcbiAgICBiZWZvcmVEZWNsOiAgICAnXFxuJyxcbiAgICBiZWZvcmVSdWxlOiAgICAnXFxuJyxcbiAgICBiZWZvcmVPcGVuOiAgICAnICcsXG4gICAgYmVmb3JlQ2xvc2U6ICAgJ1xcbicsXG4gICAgYmVmb3JlQ29tbWVudDogJ1xcbicsXG4gICAgYWZ0ZXI6ICAgICAgICAgJ1xcbicsXG4gICAgZW1wdHlCb2R5OiAgICAgJycsXG4gICAgY29tbWVudExlZnQ6ICAgJyAnLFxuICAgIGNvbW1lbnRSaWdodDogICcgJ1xufTtcblxuZnVuY3Rpb24gY2FwaXRhbGl6ZShzdHIpIHtcbiAgICByZXR1cm4gc3RyWzBdLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7XG59XG5cbmNsYXNzIFN0cmluZ2lmaWVyIHtcblxuICAgIGNvbnN0cnVjdG9yKGJ1aWxkZXIpIHtcbiAgICAgICAgdGhpcy5idWlsZGVyID0gYnVpbGRlcjtcbiAgICB9XG5cbiAgICBzdHJpbmdpZnkobm9kZSwgc2VtaWNvbG9uKSB7XG4gICAgICAgIHRoaXNbbm9kZS50eXBlXShub2RlLCBzZW1pY29sb24pO1xuICAgIH1cblxuICAgIHJvb3Qobm9kZSkge1xuICAgICAgICB0aGlzLmJvZHkobm9kZSk7XG4gICAgICAgIGlmICggbm9kZS5yYXdzLmFmdGVyICkgdGhpcy5idWlsZGVyKG5vZGUucmF3cy5hZnRlcik7XG4gICAgfVxuXG4gICAgY29tbWVudChub2RlKSB7XG4gICAgICAgIGxldCBsZWZ0ICA9IHRoaXMucmF3KG5vZGUsICdsZWZ0JywgICdjb21tZW50TGVmdCcpO1xuICAgICAgICBsZXQgcmlnaHQgPSB0aGlzLnJhdyhub2RlLCAncmlnaHQnLCAnY29tbWVudFJpZ2h0Jyk7XG4gICAgICAgIHRoaXMuYnVpbGRlcignLyonICsgbGVmdCArIG5vZGUudGV4dCArIHJpZ2h0ICsgJyovJywgbm9kZSk7XG4gICAgfVxuXG4gICAgZGVjbChub2RlLCBzZW1pY29sb24pIHtcbiAgICAgICAgbGV0IGJldHdlZW4gPSB0aGlzLnJhdyhub2RlLCAnYmV0d2VlbicsICdjb2xvbicpO1xuICAgICAgICBsZXQgc3RyaW5nICA9IG5vZGUucHJvcCArIGJldHdlZW4gKyB0aGlzLnJhd1ZhbHVlKG5vZGUsICd2YWx1ZScpO1xuXG4gICAgICAgIGlmICggbm9kZS5pbXBvcnRhbnQgKSB7XG4gICAgICAgICAgICBzdHJpbmcgKz0gbm9kZS5yYXdzLmltcG9ydGFudCB8fCAnICFpbXBvcnRhbnQnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBzZW1pY29sb24gKSBzdHJpbmcgKz0gJzsnO1xuICAgICAgICB0aGlzLmJ1aWxkZXIoc3RyaW5nLCBub2RlKTtcbiAgICB9XG5cbiAgICBydWxlKG5vZGUpIHtcbiAgICAgICAgdGhpcy5ibG9jayhub2RlLCB0aGlzLnJhd1ZhbHVlKG5vZGUsICdzZWxlY3RvcicpKTtcbiAgICAgICAgaWYgKCBub2RlLnJhd3Mub3duU2VtaWNvbG9uICkge1xuICAgICAgICAgICAgdGhpcy5idWlsZGVyKG5vZGUucmF3cy5vd25TZW1pY29sb24sIG5vZGUsICdlbmQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGF0cnVsZShub2RlLCBzZW1pY29sb24pIHtcbiAgICAgICAgbGV0IG5hbWUgICA9ICdAJyArIG5vZGUubmFtZTtcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5vZGUucGFyYW1zID8gdGhpcy5yYXdWYWx1ZShub2RlLCAncGFyYW1zJykgOiAnJztcblxuICAgICAgICBpZiAoIHR5cGVvZiBub2RlLnJhd3MuYWZ0ZXJOYW1lICE9PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgIG5hbWUgKz0gbm9kZS5yYXdzLmFmdGVyTmFtZTtcbiAgICAgICAgfSBlbHNlIGlmICggcGFyYW1zICkge1xuICAgICAgICAgICAgbmFtZSArPSAnICc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIG5vZGUubm9kZXMgKSB7XG4gICAgICAgICAgICB0aGlzLmJsb2NrKG5vZGUsIG5hbWUgKyBwYXJhbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGVuZCA9IChub2RlLnJhd3MuYmV0d2VlbiB8fCAnJykgKyAoc2VtaWNvbG9uID8gJzsnIDogJycpO1xuICAgICAgICAgICAgdGhpcy5idWlsZGVyKG5hbWUgKyBwYXJhbXMgKyBlbmQsIG5vZGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYm9keShub2RlKSB7XG4gICAgICAgIGxldCBsYXN0ID0gbm9kZS5ub2Rlcy5sZW5ndGggLSAxO1xuICAgICAgICB3aGlsZSAoIGxhc3QgPiAwICkge1xuICAgICAgICAgICAgaWYgKCBub2RlLm5vZGVzW2xhc3RdLnR5cGUgIT09ICdjb21tZW50JyApIGJyZWFrO1xuICAgICAgICAgICAgbGFzdCAtPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHNlbWljb2xvbiA9IHRoaXMucmF3KG5vZGUsICdzZW1pY29sb24nKTtcbiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgbm9kZS5ub2Rlcy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgIGxldCBjaGlsZCAgPSBub2RlLm5vZGVzW2ldO1xuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IHRoaXMucmF3KGNoaWxkLCAnYmVmb3JlJyk7XG4gICAgICAgICAgICBpZiAoIGJlZm9yZSApIHRoaXMuYnVpbGRlcihiZWZvcmUpO1xuICAgICAgICAgICAgdGhpcy5zdHJpbmdpZnkoY2hpbGQsIGxhc3QgIT09IGkgfHwgc2VtaWNvbG9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJsb2NrKG5vZGUsIHN0YXJ0KSB7XG4gICAgICAgIGxldCBiZXR3ZWVuID0gdGhpcy5yYXcobm9kZSwgJ2JldHdlZW4nLCAnYmVmb3JlT3BlbicpO1xuICAgICAgICB0aGlzLmJ1aWxkZXIoc3RhcnQgKyBiZXR3ZWVuICsgJ3snLCBub2RlLCAnc3RhcnQnKTtcblxuICAgICAgICBsZXQgYWZ0ZXI7XG4gICAgICAgIGlmICggbm9kZS5ub2RlcyAmJiBub2RlLm5vZGVzLmxlbmd0aCApIHtcbiAgICAgICAgICAgIHRoaXMuYm9keShub2RlKTtcbiAgICAgICAgICAgIGFmdGVyID0gdGhpcy5yYXcobm9kZSwgJ2FmdGVyJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhZnRlciA9IHRoaXMucmF3KG5vZGUsICdhZnRlcicsICdlbXB0eUJvZHknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggYWZ0ZXIgKSB0aGlzLmJ1aWxkZXIoYWZ0ZXIpO1xuICAgICAgICB0aGlzLmJ1aWxkZXIoJ30nLCBub2RlLCAnZW5kJyk7XG4gICAgfVxuXG4gICAgcmF3KG5vZGUsIG93biwgZGV0ZWN0KSB7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgaWYgKCAhZGV0ZWN0ICkgZGV0ZWN0ID0gb3duO1xuXG4gICAgICAgIC8vIEFscmVhZHkgaGFkXG4gICAgICAgIGlmICggb3duICkge1xuICAgICAgICAgICAgdmFsdWUgPSBub2RlLnJhd3Nbb3duXTtcbiAgICAgICAgICAgIGlmICggdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyApIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYXJlbnQgPSBub2RlLnBhcmVudDtcblxuICAgICAgICAvLyBIYWNrIGZvciBmaXJzdCBydWxlIGluIENTU1xuICAgICAgICBpZiAoIGRldGVjdCA9PT0gJ2JlZm9yZScgKSB7XG4gICAgICAgICAgICBpZiAoICFwYXJlbnQgfHwgcGFyZW50LnR5cGUgPT09ICdyb290JyAmJiBwYXJlbnQuZmlyc3QgPT09IG5vZGUgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmxvYXRpbmcgY2hpbGQgd2l0aG91dCBwYXJlbnRcbiAgICAgICAgaWYgKCAhcGFyZW50ICkgcmV0dXJuIGRlZmF1bHRSYXdbZGV0ZWN0XTtcblxuICAgICAgICAvLyBEZXRlY3Qgc3R5bGUgYnkgb3RoZXIgbm9kZXNcbiAgICAgICAgbGV0IHJvb3QgPSBub2RlLnJvb3QoKTtcbiAgICAgICAgaWYgKCAhcm9vdC5yYXdDYWNoZSApIHJvb3QucmF3Q2FjaGUgPSB7IH07XG4gICAgICAgIGlmICggdHlwZW9mIHJvb3QucmF3Q2FjaGVbZGV0ZWN0XSAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICByZXR1cm4gcm9vdC5yYXdDYWNoZVtkZXRlY3RdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBkZXRlY3QgPT09ICdiZWZvcmUnIHx8IGRldGVjdCA9PT0gJ2FmdGVyJyApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJlZm9yZUFmdGVyKG5vZGUsIGRldGVjdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgbWV0aG9kID0gJ3JhdycgKyBjYXBpdGFsaXplKGRldGVjdCk7XG4gICAgICAgICAgICBpZiAoIHRoaXNbbWV0aG9kXSApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXNbbWV0aG9kXShyb290LCBub2RlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcm9vdC53YWxrKCBpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBpLnJhd3Nbb3duXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnICkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCB0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnICkgdmFsdWUgPSBkZWZhdWx0UmF3W2RldGVjdF07XG5cbiAgICAgICAgcm9vdC5yYXdDYWNoZVtkZXRlY3RdID0gdmFsdWU7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByYXdTZW1pY29sb24ocm9vdCkge1xuICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgIHJvb3Qud2FsayggaSA9PiB7XG4gICAgICAgICAgICBpZiAoIGkubm9kZXMgJiYgaS5ub2Rlcy5sZW5ndGggJiYgaS5sYXN0LnR5cGUgPT09ICdkZWNsJyApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGkucmF3cy5zZW1pY29sb247XG4gICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnICkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJhd0VtcHR5Qm9keShyb290KSB7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgcm9vdC53YWxrKCBpID0+IHtcbiAgICAgICAgICAgIGlmICggaS5ub2RlcyAmJiBpLm5vZGVzLmxlbmd0aCA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGkucmF3cy5hZnRlcjtcbiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmF3SW5kZW50KHJvb3QpIHtcbiAgICAgICAgaWYgKCByb290LnJhd3MuaW5kZW50ICkgcmV0dXJuIHJvb3QucmF3cy5pbmRlbnQ7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgcm9vdC53YWxrKCBpID0+IHtcbiAgICAgICAgICAgIGxldCBwID0gaS5wYXJlbnQ7XG4gICAgICAgICAgICBpZiAoIHAgJiYgcCAhPT0gcm9vdCAmJiBwLnBhcmVudCAmJiBwLnBhcmVudCA9PT0gcm9vdCApIHtcbiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBpLnJhd3MuYmVmb3JlICE9PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcnRzID0gaS5yYXdzLmJlZm9yZS5zcGxpdCgnXFxuJyk7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXHNdL2csICcnKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByYXdCZWZvcmVDb21tZW50KHJvb3QsIG5vZGUpIHtcbiAgICAgICAgbGV0IHZhbHVlO1xuICAgICAgICByb290LndhbGtDb21tZW50cyggaSA9PiB7XG4gICAgICAgICAgICBpZiAoIHR5cGVvZiBpLnJhd3MuYmVmb3JlICE9PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGkucmF3cy5iZWZvcmU7XG4gICAgICAgICAgICAgICAgaWYgKCB2YWx1ZS5pbmRleE9mKCdcXG4nKSAhPT0gLTEgKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXG5dKyQvLCAnJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICggdHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy5yYXcobm9kZSwgbnVsbCwgJ2JlZm9yZURlY2wnKTtcbiAgICAgICAgfSBlbHNlIGlmICggdmFsdWUgKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxzXS9nLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJhd0JlZm9yZURlY2wocm9vdCwgbm9kZSkge1xuICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgIHJvb3Qud2Fsa0RlY2xzKCBpID0+IHtcbiAgICAgICAgICAgIGlmICggdHlwZW9mIGkucmF3cy5iZWZvcmUgIT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gaS5yYXdzLmJlZm9yZTtcbiAgICAgICAgICAgICAgICBpZiAoIHZhbHVlLmluZGV4T2YoJ1xcbicpICE9PSAtMSApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcbl0rJC8sICcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCB0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlUnVsZScpO1xuICAgICAgICB9IGVsc2UgaWYgKCB2YWx1ZSApIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXHNdL2csICcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmF3QmVmb3JlUnVsZShyb290KSB7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgcm9vdC53YWxrKCBpID0+IHtcbiAgICAgICAgICAgIGlmICggaS5ub2RlcyAmJiAoaS5wYXJlbnQgIT09IHJvb3QgfHwgcm9vdC5maXJzdCAhPT0gaSkgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgaS5yYXdzLmJlZm9yZSAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gaS5yYXdzLmJlZm9yZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB2YWx1ZS5pbmRleE9mKCdcXG4nKSAhPT0gLTEgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxuXSskLywgJycpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIHZhbHVlICkgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcc10vZywgJycpO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmF3QmVmb3JlQ2xvc2Uocm9vdCkge1xuICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgIHJvb3Qud2FsayggaSA9PiB7XG4gICAgICAgICAgICBpZiAoIGkubm9kZXMgJiYgaS5ub2Rlcy5sZW5ndGggPiAwICkge1xuICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIGkucmF3cy5hZnRlciAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gaS5yYXdzLmFmdGVyO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIHZhbHVlLmluZGV4T2YoJ1xcbicpICE9PSAtMSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXG5dKyQvLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICggdmFsdWUgKSB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxzXS9nLCAnJyk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByYXdCZWZvcmVPcGVuKHJvb3QpIHtcbiAgICAgICAgbGV0IHZhbHVlO1xuICAgICAgICByb290LndhbGsoIGkgPT4ge1xuICAgICAgICAgICAgaWYgKCBpLnR5cGUgIT09ICdkZWNsJyApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGkucmF3cy5iZXR3ZWVuO1xuICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyApIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByYXdDb2xvbihyb290KSB7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgcm9vdC53YWxrRGVjbHMoIGkgPT4ge1xuICAgICAgICAgICAgaWYgKCB0eXBlb2YgaS5yYXdzLmJldHdlZW4gIT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gaS5yYXdzLmJldHdlZW4ucmVwbGFjZSgvW15cXHM6XS9nLCAnJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGJlZm9yZUFmdGVyKG5vZGUsIGRldGVjdCkge1xuICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgIGlmICggbm9kZS50eXBlID09PSAnZGVjbCcgKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHRoaXMucmF3KG5vZGUsIG51bGwsICdiZWZvcmVEZWNsJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIG5vZGUudHlwZSA9PT0gJ2NvbW1lbnQnICkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlQ29tbWVudCcpO1xuICAgICAgICB9IGVsc2UgaWYgKCBkZXRlY3QgPT09ICdiZWZvcmUnICkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlUnVsZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlQ2xvc2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBidWYgICA9IG5vZGUucGFyZW50O1xuICAgICAgICBsZXQgZGVwdGggPSAwO1xuICAgICAgICB3aGlsZSAoIGJ1ZiAmJiBidWYudHlwZSAhPT0gJ3Jvb3QnICkge1xuICAgICAgICAgICAgZGVwdGggKz0gMTtcbiAgICAgICAgICAgIGJ1ZiA9IGJ1Zi5wYXJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHZhbHVlLmluZGV4T2YoJ1xcbicpICE9PSAtMSApIHtcbiAgICAgICAgICAgIGxldCBpbmRlbnQgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnaW5kZW50Jyk7XG4gICAgICAgICAgICBpZiAoIGluZGVudC5sZW5ndGggKSB7XG4gICAgICAgICAgICAgICAgZm9yICggbGV0IHN0ZXAgPSAwOyBzdGVwIDwgZGVwdGg7IHN0ZXArKyApIHZhbHVlICs9IGluZGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByYXdWYWx1ZShub2RlLCBwcm9wKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IG5vZGVbcHJvcF07XG4gICAgICAgIGxldCByYXcgICA9IG5vZGUucmF3c1twcm9wXTtcbiAgICAgICAgaWYgKCByYXcgJiYgcmF3LnZhbHVlID09PSB2YWx1ZSApIHtcbiAgICAgICAgICAgIHJldHVybiByYXcucmF3O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IFN0cmluZ2lmaWVyO1xuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.default = warnOnce;\nvar printed = {};\n\nfunction warnOnce(message) {\n if (printed[message]) return;\n printed[message] = true;\n\n if (typeof console !== 'undefined' && console.warn) console.warn(message);\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndhcm4tb25jZS5lczYiXSwibmFtZXMiOlsid2Fybk9uY2UiLCJwcmludGVkIiwibWVzc2FnZSIsImNvbnNvbGUiLCJ3YXJuIl0sIm1hcHBpbmdzIjoiOzs7a0JBRXdCQSxRO0FBRnhCLElBQUlDLFVBQVUsRUFBZDs7QUFFZSxTQUFTRCxRQUFULENBQWtCRSxPQUFsQixFQUEyQjtBQUN0QyxRQUFLRCxRQUFRQyxPQUFSLENBQUwsRUFBd0I7QUFDeEJELFlBQVFDLE9BQVIsSUFBbUIsSUFBbkI7O0FBRUEsUUFBSyxPQUFPQyxPQUFQLEtBQW1CLFdBQW5CLElBQWtDQSxRQUFRQyxJQUEvQyxFQUFzREQsUUFBUUMsSUFBUixDQUFhRixPQUFiO0FBQ3pEIiwiZmlsZSI6Indhcm4tb25jZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImxldCBwcmludGVkID0geyB9O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB3YXJuT25jZShtZXNzYWdlKSB7XG4gICAgaWYgKCBwcmludGVkW21lc3NhZ2VdICkgcmV0dXJuO1xuICAgIHByaW50ZWRbbWVzc2FnZV0gPSB0cnVlO1xuXG4gICAgaWYgKCB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZS53YXJuICkgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _lazyResult = require('./lazy-result');\n\nvar _lazyResult2 = _interopRequireDefault(_lazyResult);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Contains plugins to process CSS. Create one `Processor` instance,\n * initialize its plugins, and then use that instance on numerous CSS files.\n *\n * @example\n * const processor = postcss([autoprefixer, precss]);\n * processor.process(css1).then(result => console.log(result.css));\n * processor.process(css2).then(result => console.log(result.css));\n */\nvar Processor = function () {\n\n /**\n * @param {Array.<Plugin|pluginFunction>|Processor} plugins - PostCSS\n * plugins. See {@link Processor#use} for plugin format.\n */\n function Processor() {\n var plugins = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n _classCallCheck(this, Processor);\n\n /**\n * @member {string} - Current PostCSS version.\n *\n * @example\n * if ( result.processor.version.split('.')[0] !== '6' ) {\n * throw new Error('This plugin works only with PostCSS 6');\n * }\n */\n this.version = '6.0.23';\n /**\n * @member {pluginFunction[]} - Plugins added to this processor.\n *\n * @example\n * const processor = postcss([autoprefixer, precss]);\n * processor.plugins.length //=> 2\n */\n this.plugins = this.normalize(plugins);\n }\n\n /**\n * Adds a plugin to be used as a CSS processor.\n *\n * PostCSS plugin can be in 4 formats:\n * * A plugin created by {@link postcss.plugin} method.\n * * A function. PostCSS will pass the function a @{link Root}\n * as the first argument and current {@link Result} instance\n * as the second.\n * * An object with a `postcss` method. PostCSS will use that method\n * as described in #2.\n * * Another {@link Processor} instance. PostCSS will copy plugins\n * from that instance into this one.\n *\n * Plugins can also be added by passing them as arguments when creating\n * a `postcss` instance (see [`postcss(plugins)`]).\n *\n * Asynchronous plugins should return a `Promise` instance.\n *\n * @param {Plugin|pluginFunction|Processor} plugin - PostCSS plugin\n * or {@link Processor}\n * with plugins\n *\n * @example\n * const processor = postcss()\n * .use(autoprefixer)\n * .use(precss);\n *\n * @return {Processes} current processor to make methods chain\n */\n\n\n Processor.prototype.use = function use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]));\n return this;\n };\n\n /**\n * Parses source CSS and returns a {@link LazyResult} Promise proxy.\n * Because some plugins can be asynchronous it doesn’t make\n * any transformations. Transformations will be applied\n * in the {@link LazyResult} methods.\n *\n * @param {string|toString|Result} css - String with input CSS or\n * any object with a `toString()`\n * method, like a Buffer.\n * Optionally, send a {@link Result}\n * instance and the processor will\n * take the {@link Root} from it.\n * @param {processOptions} [opts] - options\n *\n * @return {LazyResult} Promise proxy\n *\n * @example\n * processor.process(css, { from: 'a.css', to: 'a.out.css' })\n * .then(result => {\n * console.log(result.css);\n * });\n */\n\n\n Processor.prototype.process = function process(css) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return new _lazyResult2.default(this, css, opts);\n };\n\n Processor.prototype.normalize = function normalize(plugins) {\n var normalized = [];\n for (var _iterator = plugins, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var i = _ref;\n\n if (i.postcss) i = i.postcss;\n\n if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && Array.isArray(i.plugins)) {\n normalized = normalized.concat(i.plugins);\n } else if (typeof i === 'function') {\n normalized.push(i);\n } else if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && (i.parse || i.stringify)) {\n throw new Error('PostCSS syntaxes cannot be used as plugins. ' + 'Instead, please use one of the ' + 'syntax/parser/stringifier options as ' + 'outlined in your PostCSS ' + 'runner documentation.');\n } else {\n throw new Error(i + ' is not a PostCSS plugin');\n }\n }\n return normalized;\n };\n\n return Processor;\n}();\n\nexports.default = Processor;\n\n/**\n * @callback builder\n * @param {string} part - part of generated CSS connected to this node\n * @param {Node} node - AST node\n * @param {\"start\"|\"end\"} [type] - node’s part type\n */\n\n/**\n * @callback parser\n *\n * @param {string|toString} css - string with input CSS or any object\n * with toString() method, like a Buffer\n * @param {processOptions} [opts] - options with only `from` and `map` keys\n *\n * @return {Root} PostCSS AST\n */\n\n/**\n * @callback stringifier\n *\n * @param {Node} node - start node for stringifing. Usually {@link Root}.\n * @param {builder} builder - function to concatenate CSS from node’s parts\n * or generate string and source map\n *\n * @return {void}\n */\n\n/**\n * @typedef {object} syntax\n * @property {parser} parse - function to generate AST by string\n * @property {stringifier} stringify - function to generate string by AST\n */\n\n/**\n * @typedef {object} toString\n * @property {function} toString\n */\n\n/**\n * @callback pluginFunction\n * @param {Root} root - parsed input CSS\n * @param {Result} result - result to set warnings or check other plugins\n */\n\n/**\n * @typedef {object} Plugin\n * @property {function} postcss - PostCSS plugin function\n */\n\n/**\n * @typedef {object} processOptions\n * @property {string} from - the path of the CSS source file.\n * You should always set `from`,\n * because it is used in source map\n * generation and syntax error messages.\n * @property {string} to - the path where you’ll put the output\n * CSS file. You should always set `to`\n * to generate correct source maps.\n * @property {parser} parser - function to generate AST by string\n * @property {stringifier} stringifier - class to generate string by AST\n * @property {syntax} syntax - object with `parse` and `stringify`\n * @property {object} map - source map options\n * @property {boolean} map.inline - does source map should\n * be embedded in the output\n * CSS as a base64-encoded\n * comment\n * @property {string|object|false|function} map.prev - source map content\n * from a previous\n * processing step\n * (for example, Sass).\n * PostCSS will try to find\n * previous map\n * automatically, so you\n * could disable it by\n * `false` value.\n * @property {boolean} map.sourcesContent - does PostCSS should set\n * the origin content to map\n * @property {string|false} map.annotation - does PostCSS should set\n * annotation comment to map\n * @property {string} map.from - override `from` in map’s\n * `sources`\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb2Nlc3Nvci5lczYiXSwibmFtZXMiOlsiUHJvY2Vzc29yIiwicGx1Z2lucyIsInZlcnNpb24iLCJub3JtYWxpemUiLCJ1c2UiLCJwbHVnaW4iLCJjb25jYXQiLCJwcm9jZXNzIiwiY3NzIiwib3B0cyIsIkxhenlSZXN1bHQiLCJub3JtYWxpemVkIiwiaSIsInBvc3Rjc3MiLCJBcnJheSIsImlzQXJyYXkiLCJwdXNoIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRUE7Ozs7Ozs7OztJQVNNQSxTOztBQUVGOzs7O0FBSUEsdUJBQTBCO0FBQUEsUUFBZEMsT0FBYyx1RUFBSixFQUFJOztBQUFBOztBQUN0Qjs7Ozs7Ozs7QUFRQSxTQUFLQyxPQUFMLEdBQWUsUUFBZjtBQUNBOzs7Ozs7O0FBT0EsU0FBS0QsT0FBTCxHQUFlLEtBQUtFLFNBQUwsQ0FBZUYsT0FBZixDQUFmO0FBQ0g7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0JBNkJBRyxHLGdCQUFJQyxNLEVBQVE7QUFDUixTQUFLSixPQUFMLEdBQWUsS0FBS0EsT0FBTCxDQUFhSyxNQUFiLENBQW9CLEtBQUtILFNBQUwsQ0FBZSxDQUFDRSxNQUFELENBQWYsQ0FBcEIsQ0FBZjtBQUNBLFdBQU8sSUFBUDtBQUNILEc7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQkFzQkFFLE8sb0JBQVFDLEcsRUFBaUI7QUFBQSxRQUFaQyxJQUFZLHVFQUFMLEVBQUs7O0FBQ3JCLFdBQU8sSUFBSUMsb0JBQUosQ0FBZSxJQUFmLEVBQXFCRixHQUFyQixFQUEwQkMsSUFBMUIsQ0FBUDtBQUNILEc7O3NCQUVETixTLHNCQUFVRixPLEVBQVM7QUFDZixRQUFJVSxhQUFhLEVBQWpCO0FBQ0EseUJBQWVWLE9BQWYsa0hBQXlCO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQSxVQUFmVyxDQUFlOztBQUNyQixVQUFLQSxFQUFFQyxPQUFQLEVBQWlCRCxJQUFJQSxFQUFFQyxPQUFOOztBQUVqQixVQUFLLFFBQU9ELENBQVAseUNBQU9BLENBQVAsT0FBYSxRQUFiLElBQXlCRSxNQUFNQyxPQUFOLENBQWNILEVBQUVYLE9BQWhCLENBQTlCLEVBQXlEO0FBQ3JEVSxxQkFBYUEsV0FBV0wsTUFBWCxDQUFrQk0sRUFBRVgsT0FBcEIsQ0FBYjtBQUNILE9BRkQsTUFFTyxJQUFLLE9BQU9XLENBQVAsS0FBYSxVQUFsQixFQUErQjtBQUNsQ0QsbUJBQVdLLElBQVgsQ0FBZ0JKLENBQWhCO0FBQ0gsT0FGTSxNQUVBLElBQUssUUFBT0EsQ0FBUCx5Q0FBT0EsQ0FBUCxPQUFhLFFBQWIsS0FBMEJBLEVBQUVLLEtBQUYsSUFBV0wsRUFBRU0sU0FBdkMsQ0FBTCxFQUF5RDtBQUM1RCxjQUFNLElBQUlDLEtBQUosQ0FBVSxpREFDQSxpQ0FEQSxHQUVBLHVDQUZBLEdBR0EsMkJBSEEsR0FJQSx1QkFKVixDQUFOO0FBS0gsT0FOTSxNQU1BO0FBQ0gsY0FBTSxJQUFJQSxLQUFKLENBQVVQLElBQUksMEJBQWQsQ0FBTjtBQUNIO0FBQ0o7QUFDRCxXQUFPRCxVQUFQO0FBQ0gsRzs7Ozs7a0JBSVVYLFM7O0FBRWY7Ozs7Ozs7QUFPQTs7Ozs7Ozs7OztBQVVBOzs7Ozs7Ozs7O0FBVUE7Ozs7OztBQU1BOzs7OztBQUtBOzs7Ozs7QUFNQTs7Ozs7QUFLQSIsImZpbGUiOiJwcm9jZXNzb3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTGF6eVJlc3VsdCBmcm9tICcuL2xhenktcmVzdWx0JztcblxuLyoqXG4gKiBDb250YWlucyBwbHVnaW5zIHRvIHByb2Nlc3MgQ1NTLiBDcmVhdGUgb25lIGBQcm9jZXNzb3JgIGluc3RhbmNlLFxuICogaW5pdGlhbGl6ZSBpdHMgcGx1Z2lucywgYW5kIHRoZW4gdXNlIHRoYXQgaW5zdGFuY2Ugb24gbnVtZXJvdXMgQ1NTIGZpbGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBwcm9jZXNzb3IgPSBwb3N0Y3NzKFthdXRvcHJlZml4ZXIsIHByZWNzc10pO1xuICogcHJvY2Vzc29yLnByb2Nlc3MoY3NzMSkudGhlbihyZXN1bHQgPT4gY29uc29sZS5sb2cocmVzdWx0LmNzcykpO1xuICogcHJvY2Vzc29yLnByb2Nlc3MoY3NzMikudGhlbihyZXN1bHQgPT4gY29uc29sZS5sb2cocmVzdWx0LmNzcykpO1xuICovXG5jbGFzcyBQcm9jZXNzb3Ige1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtBcnJheS48UGx1Z2lufHBsdWdpbkZ1bmN0aW9uPnxQcm9jZXNzb3J9IHBsdWdpbnMgLSBQb3N0Q1NTXG4gICAgICogICAgICAgIHBsdWdpbnMuIFNlZSB7QGxpbmsgUHJvY2Vzc29yI3VzZX0gZm9yIHBsdWdpbiBmb3JtYXQuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocGx1Z2lucyA9IFtdKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtzdHJpbmd9IC0gQ3VycmVudCBQb3N0Q1NTIHZlcnNpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqIGlmICggcmVzdWx0LnByb2Nlc3Nvci52ZXJzaW9uLnNwbGl0KCcuJylbMF0gIT09ICc2JyApIHtcbiAgICAgICAgICogICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgcGx1Z2luIHdvcmtzIG9ubHkgd2l0aCBQb3N0Q1NTIDYnKTtcbiAgICAgICAgICogfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy52ZXJzaW9uID0gJzYuMC4yMyc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtwbHVnaW5GdW5jdGlvbltdfSAtIFBsdWdpbnMgYWRkZWQgdG8gdGhpcyBwcm9jZXNzb3IuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqIGNvbnN0IHByb2Nlc3NvciA9IHBvc3Rjc3MoW2F1dG9wcmVmaXhlciwgcHJlY3NzXSk7XG4gICAgICAgICAqIHByb2Nlc3Nvci5wbHVnaW5zLmxlbmd0aCAvLz0+IDJcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucGx1Z2lucyA9IHRoaXMubm9ybWFsaXplKHBsdWdpbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBwbHVnaW4gdG8gYmUgdXNlZCBhcyBhIENTUyBwcm9jZXNzb3IuXG4gICAgICpcbiAgICAgKiBQb3N0Q1NTIHBsdWdpbiBjYW4gYmUgaW4gNCBmb3JtYXRzOlxuICAgICAqICogQSBwbHVnaW4gY3JlYXRlZCBieSB7QGxpbmsgcG9zdGNzcy5wbHVnaW59IG1ldGhvZC5cbiAgICAgKiAqIEEgZnVuY3Rpb24uIFBvc3RDU1Mgd2lsbCBwYXNzIHRoZSBmdW5jdGlvbiBhIEB7bGluayBSb290fVxuICAgICAqICAgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGFuZCBjdXJyZW50IHtAbGluayBSZXN1bHR9IGluc3RhbmNlXG4gICAgICogICBhcyB0aGUgc2Vjb25kLlxuICAgICAqICogQW4gb2JqZWN0IHdpdGggYSBgcG9zdGNzc2AgbWV0aG9kLiBQb3N0Q1NTIHdpbGwgdXNlIHRoYXQgbWV0aG9kXG4gICAgICogICBhcyBkZXNjcmliZWQgaW4gIzIuXG4gICAgICogKiBBbm90aGVyIHtAbGluayBQcm9jZXNzb3J9IGluc3RhbmNlLiBQb3N0Q1NTIHdpbGwgY29weSBwbHVnaW5zXG4gICAgICogICBmcm9tIHRoYXQgaW5zdGFuY2UgaW50byB0aGlzIG9uZS5cbiAgICAgKlxuICAgICAqIFBsdWdpbnMgY2FuIGFsc28gYmUgYWRkZWQgYnkgcGFzc2luZyB0aGVtIGFzIGFyZ3VtZW50cyB3aGVuIGNyZWF0aW5nXG4gICAgICogYSBgcG9zdGNzc2AgaW5zdGFuY2UgKHNlZSBbYHBvc3Rjc3MocGx1Z2lucylgXSkuXG4gICAgICpcbiAgICAgKiBBc3luY2hyb25vdXMgcGx1Z2lucyBzaG91bGQgcmV0dXJuIGEgYFByb21pc2VgIGluc3RhbmNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtQbHVnaW58cGx1Z2luRnVuY3Rpb258UHJvY2Vzc29yfSBwbHVnaW4gLSBQb3N0Q1NTIHBsdWdpblxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Ige0BsaW5rIFByb2Nlc3Nvcn1cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcGx1Z2luc1xuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCBwcm9jZXNzb3IgPSBwb3N0Y3NzKClcbiAgICAgKiAgIC51c2UoYXV0b3ByZWZpeGVyKVxuICAgICAqICAgLnVzZShwcmVjc3MpO1xuICAgICAqXG4gICAgICogQHJldHVybiB7UHJvY2Vzc2VzfSBjdXJyZW50IHByb2Nlc3NvciB0byBtYWtlIG1ldGhvZHMgY2hhaW5cbiAgICAgKi9cbiAgICB1c2UocGx1Z2luKSB7XG4gICAgICAgIHRoaXMucGx1Z2lucyA9IHRoaXMucGx1Z2lucy5jb25jYXQodGhpcy5ub3JtYWxpemUoW3BsdWdpbl0pKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHNvdXJjZSBDU1MgYW5kIHJldHVybnMgYSB7QGxpbmsgTGF6eVJlc3VsdH0gUHJvbWlzZSBwcm94eS5cbiAgICAgKiBCZWNhdXNlIHNvbWUgcGx1Z2lucyBjYW4gYmUgYXN5bmNocm9ub3VzIGl0IGRvZXNu4oCZdCBtYWtlXG4gICAgICogYW55IHRyYW5zZm9ybWF0aW9ucy4gVHJhbnNmb3JtYXRpb25zIHdpbGwgYmUgYXBwbGllZFxuICAgICAqIGluIHRoZSB7QGxpbmsgTGF6eVJlc3VsdH0gbWV0aG9kcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfHRvU3RyaW5nfFJlc3VsdH0gY3NzIC0gU3RyaW5nIHdpdGggaW5wdXQgQ1NTIG9yXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnkgb2JqZWN0IHdpdGggYSBgdG9TdHJpbmcoKWBcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCwgbGlrZSBhIEJ1ZmZlci5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsbHksIHNlbmQgYSB7QGxpbmsgUmVzdWx0fVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UgYW5kIHRoZSBwcm9jZXNzb3Igd2lsbFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSB0aGUge0BsaW5rIFJvb3R9IGZyb20gaXQuXG4gICAgICogQHBhcmFtIHtwcm9jZXNzT3B0aW9uc30gW29wdHNdICAgICAgLSBvcHRpb25zXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtMYXp5UmVzdWx0fSBQcm9taXNlIHByb3h5XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHByb2Nlc3Nvci5wcm9jZXNzKGNzcywgeyBmcm9tOiAnYS5jc3MnLCB0bzogJ2Eub3V0LmNzcycgfSlcbiAgICAgKiAgIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICogICAgICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKTtcbiAgICAgKiAgIH0pO1xuICAgICAqL1xuICAgIHByb2Nlc3MoY3NzLCBvcHRzID0geyB9KSB7XG4gICAgICAgIHJldHVybiBuZXcgTGF6eVJlc3VsdCh0aGlzLCBjc3MsIG9wdHMpO1xuICAgIH1cblxuICAgIG5vcm1hbGl6ZShwbHVnaW5zKSB7XG4gICAgICAgIGxldCBub3JtYWxpemVkID0gW107XG4gICAgICAgIGZvciAoIGxldCBpIG9mIHBsdWdpbnMgKSB7XG4gICAgICAgICAgICBpZiAoIGkucG9zdGNzcyApIGkgPSBpLnBvc3Rjc3M7XG5cbiAgICAgICAgICAgIGlmICggdHlwZW9mIGkgPT09ICdvYmplY3QnICYmIEFycmF5LmlzQXJyYXkoaS5wbHVnaW5zKSApIHtcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5jb25jYXQoaS5wbHVnaW5zKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHR5cGVvZiBpID09PSAnZnVuY3Rpb24nICkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQucHVzaChpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHR5cGVvZiBpID09PSAnb2JqZWN0JyAmJiAoaS5wYXJzZSB8fCBpLnN0cmluZ2lmeSkgKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQb3N0Q1NTIHN5bnRheGVzIGNhbm5vdCBiZSB1c2VkIGFzIHBsdWdpbnMuICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSW5zdGVhZCwgcGxlYXNlIHVzZSBvbmUgb2YgdGhlICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3ludGF4L3BhcnNlci9zdHJpbmdpZmllciBvcHRpb25zIGFzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3V0bGluZWQgaW4geW91ciBQb3N0Q1NTICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncnVubmVyIGRvY3VtZW50YXRpb24uJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihpICsgJyBpcyBub3QgYSBQb3N0Q1NTIHBsdWdpbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub3JtYWxpemVkO1xuICAgIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBQcm9jZXNzb3I7XG5cbi8qKlxuICogQGNhbGxiYWNrIGJ1aWxkZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJ0ICAgICAgICAgIC0gcGFydCBvZiBnZW5lcmF0ZWQgQ1NTIGNvbm5lY3RlZCB0byB0aGlzIG5vZGVcbiAqIEBwYXJhbSB7Tm9kZX0gICBub2RlICAgICAgICAgIC0gQVNUIG5vZGVcbiAqIEBwYXJhbSB7XCJzdGFydFwifFwiZW5kXCJ9IFt0eXBlXSAtIG5vZGXigJlzIHBhcnQgdHlwZVxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIHBhcnNlclxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfHRvU3RyaW5nfSBjc3MgICAtIHN0cmluZyB3aXRoIGlucHV0IENTUyBvciBhbnkgb2JqZWN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRvU3RyaW5nKCkgbWV0aG9kLCBsaWtlIGEgQnVmZmVyXG4gKiBAcGFyYW0ge3Byb2Nlc3NPcHRpb25zfSBbb3B0c10gLSBvcHRpb25zIHdpdGggb25seSBgZnJvbWAgYW5kIGBtYXBgIGtleXNcbiAqXG4gKiBAcmV0dXJuIHtSb290fSBQb3N0Q1NTIEFTVFxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIHN0cmluZ2lmaWVyXG4gKlxuICogQHBhcmFtIHtOb2RlfSBub2RlICAgICAgIC0gc3RhcnQgbm9kZSBmb3Igc3RyaW5naWZpbmcuIFVzdWFsbHkge0BsaW5rIFJvb3R9LlxuICogQHBhcmFtIHtidWlsZGVyfSBidWlsZGVyIC0gZnVuY3Rpb24gdG8gY29uY2F0ZW5hdGUgQ1NTIGZyb20gbm9kZeKAmXMgcGFydHNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGdlbmVyYXRlIHN0cmluZyBhbmQgc291cmNlIG1hcFxuICpcbiAqIEByZXR1cm4ge3ZvaWR9XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBzeW50YXhcbiAqIEBwcm9wZXJ0eSB7cGFyc2VyfSBwYXJzZSAgICAgICAgICAtIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIEFTVCBieSBzdHJpbmdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5naWZpZXJ9IHN0cmluZ2lmeSAtIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIHN0cmluZyBieSBBU1RcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHRvU3RyaW5nXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9ufSB0b1N0cmluZ1xuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIHBsdWdpbkZ1bmN0aW9uXG4gKiBAcGFyYW0ge1Jvb3R9IHJvb3QgICAgIC0gcGFyc2VkIGlucHV0IENTU1xuICogQHBhcmFtIHtSZXN1bHR9IHJlc3VsdCAtIHJlc3VsdCB0byBzZXQgd2FybmluZ3Mgb3IgY2hlY2sgb3RoZXIgcGx1Z2luc1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gUGx1Z2luXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9ufSBwb3N0Y3NzIC0gUG9zdENTUyBwbHVnaW4gZnVuY3Rpb25cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHByb2Nlc3NPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZnJvbSAgICAgICAgICAgICAtIHRoZSBwYXRoIG9mIHRoZSBDU1Mgc291cmNlIGZpbGUuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgYWx3YXlzIHNldCBgZnJvbWAsXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgaXQgaXMgdXNlZCBpbiBzb3VyY2UgbWFwXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRpb24gYW5kIHN5bnRheCBlcnJvciBtZXNzYWdlcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0byAgICAgICAgICAgICAgIC0gdGhlIHBhdGggd2hlcmUgeW914oCZbGwgcHV0IHRoZSBvdXRwdXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTIGZpbGUuIFlvdSBzaG91bGQgYWx3YXlzIHNldCBgdG9gXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGdlbmVyYXRlIGNvcnJlY3Qgc291cmNlIG1hcHMuXG4gKiBAcHJvcGVydHkge3BhcnNlcn0gcGFyc2VyICAgICAgICAgICAtIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIEFTVCBieSBzdHJpbmdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5naWZpZXJ9IHN0cmluZ2lmaWVyIC0gY2xhc3MgdG8gZ2VuZXJhdGUgc3RyaW5nIGJ5IEFTVFxuICogQHByb3BlcnR5IHtzeW50YXh9IHN5bnRheCAgICAgICAgICAgLSBvYmplY3Qgd2l0aCBgcGFyc2VgIGFuZCBgc3RyaW5naWZ5YFxuICogQHByb3BlcnR5IHtvYmplY3R9IG1hcCAgICAgICAgICAgICAgLSBzb3VyY2UgbWFwIG9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gbWFwLmlubGluZSAgICAgICAgICAgICAgICAgICAgLSBkb2VzIHNvdXJjZSBtYXAgc2hvdWxkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgZW1iZWRkZWQgaW4gdGhlIG91dHB1dFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyBhcyBhIGJhc2U2NC1lbmNvZGVkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudFxuICogQHByb3BlcnR5IHtzdHJpbmd8b2JqZWN0fGZhbHNlfGZ1bmN0aW9ufSBtYXAucHJldiAtIHNvdXJjZSBtYXAgY29udGVudFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gYSBwcmV2aW91c1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Npbmcgc3RlcFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3IgZXhhbXBsZSwgU2FzcykuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zdENTUyB3aWxsIHRyeSB0byBmaW5kXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgbWFwXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSwgc28geW91XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bGQgZGlzYWJsZSBpdCBieVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBmYWxzZWAgdmFsdWUuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IG1hcC5zb3VyY2VzQ29udGVudCAgICAgICAgICAgIC0gZG9lcyBQb3N0Q1NTIHNob3VsZCBzZXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgb3JpZ2luIGNvbnRlbnQgdG8gbWFwXG4gKiBAcHJvcGVydHkge3N0cmluZ3xmYWxzZX0gbWFwLmFubm90YXRpb24gICAgICAgICAgIC0gZG9lcyBQb3N0Q1NTIHNob3VsZCBzZXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uIGNvbW1lbnQgdG8gbWFwXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbWFwLmZyb20gICAgICAgICAgICAgICAgICAgICAgIC0gb3ZlcnJpZGUgYGZyb21gIGluIG1hcOKAmXNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgc291cmNlc2BcbiAqL1xuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _mapGenerator = require('./map-generator');\n\nvar _mapGenerator2 = _interopRequireDefault(_mapGenerator);\n\nvar _stringify2 = require('./stringify');\n\nvar _stringify3 = _interopRequireDefault(_stringify2);\n\nvar _warnOnce = require('./warn-once');\n\nvar _warnOnce2 = _interopRequireDefault(_warnOnce);\n\nvar _result = require('./result');\n\nvar _result2 = _interopRequireDefault(_result);\n\nvar _parse = require('./parse');\n\nvar _parse2 = _interopRequireDefault(_parse);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction isPromise(obj) {\n return (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && typeof obj.then === 'function';\n}\n\n/**\n * A Promise proxy for the result of PostCSS transformations.\n *\n * A `LazyResult` instance is returned by {@link Processor#process}.\n *\n * @example\n * const lazy = postcss([cssnext]).process(css);\n */\n\nvar LazyResult = function () {\n function LazyResult(processor, css, opts) {\n _classCallCheck(this, LazyResult);\n\n this.stringified = false;\n this.processed = false;\n\n var root = void 0;\n if ((typeof css === 'undefined' ? 'undefined' : _typeof(css)) === 'object' && css !== null && css.type === 'root') {\n root = css;\n } else if (css instanceof LazyResult || css instanceof _result2.default) {\n root = css.root;\n if (css.map) {\n if (typeof opts.map === 'undefined') opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n var parser = _parse2.default;\n if (opts.syntax) parser = opts.syntax.parse;\n if (opts.parser) parser = opts.parser;\n if (parser.parse) parser = parser.parse;\n\n try {\n root = parser(css, opts);\n } catch (error) {\n this.error = error;\n }\n }\n\n this.result = new _result2.default(processor, root, opts);\n }\n\n /**\n * Returns a {@link Processor} instance, which will be used\n * for CSS transformations.\n * @type {Processor}\n */\n\n\n /**\n * Processes input CSS through synchronous plugins\n * and calls {@link Result#warnings()}.\n *\n * @return {Warning[]} warnings from plugins\n */\n LazyResult.prototype.warnings = function warnings() {\n return this.sync().warnings();\n };\n\n /**\n * Alias for the {@link LazyResult#css} property.\n *\n * @example\n * lazy + '' === lazy.css;\n *\n * @return {string} output CSS\n */\n\n\n LazyResult.prototype.toString = function toString() {\n return this.css;\n };\n\n /**\n * Processes input CSS through synchronous and asynchronous plugins\n * and calls `onFulfilled` with a Result instance. If a plugin throws\n * an error, the `onRejected` callback will be executed.\n *\n * It implements standard Promise API.\n *\n * @param {onFulfilled} onFulfilled - callback will be executed\n * when all plugins will finish work\n * @param {onRejected} onRejected - callback will be executed on any error\n *\n * @return {Promise} Promise API to make queue\n *\n * @example\n * postcss([cssnext]).process(css, { from: cssPath }).then(result => {\n * console.log(result.css);\n * });\n */\n\n\n LazyResult.prototype.then = function then(onFulfilled, onRejected) {\n if (!('from' in this.opts)) {\n (0, _warnOnce2.default)('Without `from` option PostCSS could generate wrong ' + 'source map and will not find Browserslist config. ' + 'Set it to CSS file path or to `undefined` to prevent ' + 'this warning.');\n }\n return this.async().then(onFulfilled, onRejected);\n };\n\n /**\n * Processes input CSS through synchronous and asynchronous plugins\n * and calls onRejected for each error thrown in any plugin.\n *\n * It implements standard Promise API.\n *\n * @param {onRejected} onRejected - callback will be executed on any error\n *\n * @return {Promise} Promise API to make queue\n *\n * @example\n * postcss([cssnext]).process(css).then(result => {\n * console.log(result.css);\n * }).catch(error => {\n * console.error(error);\n * });\n */\n\n\n LazyResult.prototype.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n\n LazyResult.prototype.handleError = function handleError(error, plugin) {\n try {\n this.error = error;\n if (error.name === 'CssSyntaxError' && !error.plugin) {\n error.plugin = plugin.postcssPlugin;\n error.setMessage();\n } else if (plugin.postcssVersion) {\n var pluginName = plugin.postcssPlugin;\n var pluginVer = plugin.postcssVersion;\n var runtimeVer = this.result.processor.version;\n var a = pluginVer.split('.');\n var b = runtimeVer.split('.');\n\n if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n console.error('Unknown error from PostCSS plugin. ' + 'Your current PostCSS version ' + 'is ' + runtimeVer + ', but ' + pluginName + ' ' + 'uses ' + pluginVer + '. Perhaps this is ' + 'the source of the error below.');\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n };\n\n LazyResult.prototype.asyncTick = function asyncTick(resolve, reject) {\n var _this = this;\n\n if (this.plugin >= this.processor.plugins.length) {\n this.processed = true;\n return resolve();\n }\n\n try {\n var plugin = this.processor.plugins[this.plugin];\n var promise = this.run(plugin);\n this.plugin += 1;\n\n if (isPromise(promise)) {\n promise.then(function () {\n _this.asyncTick(resolve, reject);\n }).catch(function (error) {\n _this.handleError(error, plugin);\n _this.processed = true;\n reject(error);\n });\n } else {\n this.asyncTick(resolve, reject);\n }\n } catch (error) {\n this.processed = true;\n reject(error);\n }\n };\n\n LazyResult.prototype.async = function async() {\n var _this2 = this;\n\n if (this.processed) {\n return new Promise(function (resolve, reject) {\n if (_this2.error) {\n reject(_this2.error);\n } else {\n resolve(_this2.stringify());\n }\n });\n }\n if (this.processing) {\n return this.processing;\n }\n\n this.processing = new Promise(function (resolve, reject) {\n if (_this2.error) return reject(_this2.error);\n _this2.plugin = 0;\n _this2.asyncTick(resolve, reject);\n }).then(function () {\n _this2.processed = true;\n return _this2.stringify();\n });\n\n return this.processing;\n };\n\n LazyResult.prototype.sync = function sync() {\n if (this.processed) return this.result;\n this.processed = true;\n\n if (this.processing) {\n throw new Error('Use process(css).then(cb) to work with async plugins');\n }\n\n if (this.error) throw this.error;\n\n for (var _iterator = this.result.processor.plugins, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var plugin = _ref;\n\n var promise = this.run(plugin);\n if (isPromise(promise)) {\n throw new Error('Use process(css).then(cb) to work with async plugins');\n }\n }\n\n return this.result;\n };\n\n LazyResult.prototype.run = function run(plugin) {\n this.result.lastPlugin = plugin;\n\n try {\n return plugin(this.result.root, this.result);\n } catch (error) {\n this.handleError(error, plugin);\n throw error;\n }\n };\n\n LazyResult.prototype.stringify = function stringify() {\n if (this.stringified) return this.result;\n this.stringified = true;\n\n this.sync();\n\n var opts = this.result.opts;\n var str = _stringify3.default;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n\n var map = new _mapGenerator2.default(str, this.result.root, this.result.opts);\n var data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n\n return this.result;\n };\n\n _createClass(LazyResult, [{\n key: 'processor',\n get: function get() {\n return this.result.processor;\n }\n\n /**\n * Options from the {@link Processor#process} call.\n * @type {processOptions}\n */\n\n }, {\n key: 'opts',\n get: function get() {\n return this.result.opts;\n }\n\n /**\n * Processes input CSS through synchronous plugins, converts `Root`\n * to a CSS string and returns {@link Result#css}.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {string}\n * @see Result#css\n */\n\n }, {\n key: 'css',\n get: function get() {\n return this.stringify().css;\n }\n\n /**\n * An alias for the `css` property. Use it with syntaxes\n * that generate non-CSS output.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {string}\n * @see Result#content\n */\n\n }, {\n key: 'content',\n get: function get() {\n return this.stringify().content;\n }\n\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#map}.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {SourceMapGenerator}\n * @see Result#map\n */\n\n }, {\n key: 'map',\n get: function get() {\n return this.stringify().map;\n }\n\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#root}.\n *\n * This property will only work with synchronous plugins. If the processor\n * contains any asynchronous plugins it will throw an error.\n *\n * This is why this method is only for debug purpose,\n * you should always use {@link LazyResult#then}.\n *\n * @type {Root}\n * @see Result#root\n */\n\n }, {\n key: 'root',\n get: function get() {\n return this.sync().root;\n }\n\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#messages}.\n *\n * This property will only work with synchronous plugins. If the processor\n * contains any asynchronous plugins it will throw an error.\n *\n * This is why this method is only for debug purpose,\n * you should always use {@link LazyResult#then}.\n *\n * @type {Message[]}\n * @see Result#messages\n */\n\n }, {\n key: 'messages',\n get: function get() {\n return this.sync().messages;\n }\n }]);\n\n return LazyResult;\n}();\n\nexports.default = LazyResult;\n\n/**\n * @callback onFulfilled\n * @param {Result} result\n */\n\n/**\n * @callback onRejected\n * @param {Error} error\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxhenktcmVzdWx0LmVzNiJdLCJuYW1lcyI6WyJpc1Byb21pc2UiLCJvYmoiLCJ0aGVuIiwiTGF6eVJlc3VsdCIsInByb2Nlc3NvciIsImNzcyIsIm9wdHMiLCJzdHJpbmdpZmllZCIsInByb2Nlc3NlZCIsInJvb3QiLCJ0eXBlIiwiUmVzdWx0IiwibWFwIiwiaW5saW5lIiwicHJldiIsInBhcnNlciIsInBhcnNlIiwic3ludGF4IiwiZXJyb3IiLCJyZXN1bHQiLCJ3YXJuaW5ncyIsInN5bmMiLCJ0b1N0cmluZyIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsImFzeW5jIiwiY2F0Y2giLCJoYW5kbGVFcnJvciIsInBsdWdpbiIsIm5hbWUiLCJwb3N0Y3NzUGx1Z2luIiwic2V0TWVzc2FnZSIsInBvc3Rjc3NWZXJzaW9uIiwicGx1Z2luTmFtZSIsInBsdWdpblZlciIsInJ1bnRpbWVWZXIiLCJ2ZXJzaW9uIiwiYSIsInNwbGl0IiwiYiIsInBhcnNlSW50IiwiY29uc29sZSIsImVyciIsImFzeW5jVGljayIsInJlc29sdmUiLCJyZWplY3QiLCJwbHVnaW5zIiwibGVuZ3RoIiwicHJvbWlzZSIsInJ1biIsIlByb21pc2UiLCJzdHJpbmdpZnkiLCJwcm9jZXNzaW5nIiwiRXJyb3IiLCJsYXN0UGx1Z2luIiwic3RyIiwic3RyaW5naWZpZXIiLCJNYXBHZW5lcmF0b3IiLCJkYXRhIiwiZ2VuZXJhdGUiLCJjb250ZW50IiwibWVzc2FnZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7QUFFQSxTQUFTQSxTQUFULENBQW1CQyxHQUFuQixFQUF3QjtBQUNwQixXQUFPLFFBQU9BLEdBQVAseUNBQU9BLEdBQVAsT0FBZSxRQUFmLElBQTJCLE9BQU9BLElBQUlDLElBQVgsS0FBb0IsVUFBdEQ7QUFDSDs7QUFFRDs7Ozs7Ozs7O0lBUU1DLFU7QUFFRix3QkFBWUMsU0FBWixFQUF1QkMsR0FBdkIs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dCI6WyJpbXBvcnQgTWFwR2VuZXJhdG9yIGZyb20gJy4vbWFwLWdlbmVyYXRvcic7XG5pbXBvcnQgc3RyaW5naWZ5ICAgIGZyb20gJy4vc3RyaW5naWZ5JztcbmltcG9ydCB3YXJuT25jZSAgICAgZnJvbSAnLi93YXJuLW9uY2UnO1xuaW1wb3J0IFJlc3VsdCAgICAgICBmcm9tICcuL3Jlc3VsdCc7XG5pbXBvcnQgcGFyc2UgICAgICAgIGZyb20gJy4vcGFyc2UnO1xuXG5mdW5jdGlvbiBpc1Byb21pc2Uob2JqKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIHR5cGVvZiBvYmoudGhlbiA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuLyoqXG4gKiBBIFByb21pc2UgcHJveHkgZm9yIHRoZSByZXN1bHQgb2YgUG9zdENTUyB0cmFuc2Zvcm1hdGlvbnMuXG4gKlxuICogQSBgTGF6eVJlc3VsdGAgaW5zdGFuY2UgaXMgcmV0dXJuZWQgYnkge0BsaW5rIFByb2Nlc3NvciNwcm9jZXNzfS5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgbGF6eSA9IHBvc3Rjc3MoW2Nzc25leHRdKS5wcm9jZXNzKGNzcyk7XG4gKi9cbmNsYXNzIExhenlSZXN1bHQge1xuXG4gICAgY29uc3RydWN0b3IocHJvY2Vzc29yLCBjc3MsIG9wdHMpIHtcbiAgICAgICAgdGhpcy5zdHJpbmdpZmllZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnByb2Nlc3NlZCAgID0gZmFsc2U7XG5cbiAgICAgICAgbGV0IHJvb3Q7XG4gICAgICAgIGlmICggdHlwZW9mIGNzcyA9PT0gJ29iamVjdCcgJiYgY3NzICE9PSBudWxsICYmIGNzcy50eXBlID09PSAncm9vdCcgKSB7XG4gICAgICAgICAgICByb290ID0gY3NzO1xuICAgICAgICB9IGVsc2UgaWYgKCBjc3MgaW5zdGFuY2VvZiBMYXp5UmVzdWx0IHx8IGNzcyBpbnN0YW5jZW9mIFJlc3VsdCApIHtcbiAgICAgICAgICAgIHJvb3QgPSBjc3Mucm9vdDtcbiAgICAgICAgICAgIGlmICggY3NzLm1hcCApIHtcbiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBvcHRzLm1hcCA9PT0gJ3VuZGVmaW5lZCcgKSBvcHRzLm1hcCA9IHsgfTtcbiAgICAgICAgICAgICAgICBpZiAoICFvcHRzLm1hcC5pbmxpbmUgKSBvcHRzLm1hcC5pbmxpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBvcHRzLm1hcC5wcmV2ID0gY3NzLm1hcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBwYXJzZXIgPSBwYXJzZTtcbiAgICAgICAgICAgIGlmICggb3B0cy5zeW50YXggKSAgcGFyc2VyID0gb3B0cy5zeW50YXgucGFyc2U7XG4gICAgICAgICAgICBpZiAoIG9wdHMucGFyc2VyICkgIHBhcnNlciA9IG9wdHMucGFyc2VyO1xuICAgICAgICAgICAgaWYgKCBwYXJzZXIucGFyc2UgKSBwYXJzZXIgPSBwYXJzZXIucGFyc2U7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcm9vdCA9IHBhcnNlcihjc3MsIG9wdHMpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yID0gZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlc3VsdCA9IG5ldyBSZXN1bHQocHJvY2Vzc29yLCByb290LCBvcHRzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEge0BsaW5rIFByb2Nlc3Nvcn0gaW5zdGFuY2UsIHdoaWNoIHdpbGwgYmUgdXNlZFxuICAgICAqIGZvciBDU1MgdHJhbnNmb3JtYXRpb25zLlxuICAgICAqIEB0eXBlIHtQcm9jZXNzb3J9XG4gICAgICovXG4gICAgZ2V0IHByb2Nlc3NvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0LnByb2Nlc3NvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcHRpb25zIGZyb20gdGhlIHtAbGluayBQcm9jZXNzb3IjcHJvY2Vzc30gY2FsbC5cbiAgICAgKiBAdHlwZSB7cHJvY2Vzc09wdGlvbnN9XG4gICAgICovXG4gICAgZ2V0IG9wdHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc3VsdC5vcHRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBwbHVnaW5zLCBjb252ZXJ0cyBgUm9vdGBcbiAgICAgKiB0byBhIENTUyBzdHJpbmcgYW5kIHJldHVybnMge0BsaW5rIFJlc3VsdCNjc3N9LlxuICAgICAqXG4gICAgICogVGhpcyBwcm9wZXJ0eSB3aWxsIG9ubHkgd29yayB3aXRoIHN5bmNocm9ub3VzIHBsdWdpbnMuXG4gICAgICogSWYgdGhlIHByb2Nlc3NvciBjb250YWlucyBhbnkgYXN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICAgKiBpdCB3aWxsIHRocm93IGFuIGVycm9yLiBUaGlzIGlzIHdoeSB0aGlzIG1ldGhvZCBpcyBvbmx5XG4gICAgICogZm9yIGRlYnVnIHB1cnBvc2UsIHlvdSBzaG91bGQgYWx3YXlzIHVzZSB7QGxpbmsgTGF6eVJlc3VsdCN0aGVufS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICogQHNlZSBSZXN1bHQjY3NzXG4gICAgICovXG4gICAgZ2V0IGNzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5naWZ5KCkuY3NzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFuIGFsaWFzIGZvciB0aGUgYGNzc2AgcHJvcGVydHkuIFVzZSBpdCB3aXRoIHN5bnRheGVzXG4gICAgICogdGhhdCBnZW5lcmF0ZSBub24tQ1NTIG91dHB1dC5cbiAgICAgKlxuICAgICAqIFRoaXMgcHJvcGVydHkgd2lsbCBvbmx5IHdvcmsgd2l0aCBzeW5jaHJvbm91cyBwbHVnaW5zLlxuICAgICAqIElmIHRoZSBwcm9jZXNzb3IgY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAgICogaXQgd2lsbCB0aHJvdyBhbiBlcnJvci4gVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seVxuICAgICAqIGZvciBkZWJ1ZyBwdXJwb3NlLCB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqIEBzZWUgUmVzdWx0I2NvbnRlbnRcbiAgICAgKi9cbiAgICBnZXQgY29udGVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5naWZ5KCkuY29udGVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgcGx1Z2luc1xuICAgICAqIGFuZCByZXR1cm5zIHtAbGluayBSZXN1bHQjbWFwfS5cbiAgICAgKlxuICAgICAqIFRoaXMgcHJvcGVydHkgd2lsbCBvbmx5IHdvcmsgd2l0aCBzeW5jaHJvbm91cyBwbHVnaW5zLlxuICAgICAqIElmIHRoZSBwcm9jZXNzb3IgY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAgICogaXQgd2lsbCB0aHJvdyBhbiBlcnJvci4gVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seVxuICAgICAqIGZvciBkZWJ1ZyBwdXJwb3NlLCB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7U291cmNlTWFwR2VuZXJhdG9yfVxuICAgICAqIEBzZWUgUmVzdWx0I21hcFxuICAgICAqL1xuICAgIGdldCBtYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0cmluZ2lmeSgpLm1hcDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgcGx1Z2luc1xuICAgICAqIGFuZCByZXR1cm5zIHtAbGluayBSZXN1bHQjcm9vdH0uXG4gICAgICpcbiAgICAgKiBUaGlzIHByb3BlcnR5IHdpbGwgb25seSB3b3JrIHdpdGggc3luY2hyb25vdXMgcGx1Z2lucy4gSWYgdGhlIHByb2Nlc3NvclxuICAgICAqIGNvbnRhaW5zIGFueSBhc3luY2hyb25vdXMgcGx1Z2lucyBpdCB3aWxsIHRocm93IGFuIGVycm9yLlxuICAgICAqXG4gICAgICogVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seSBmb3IgZGVidWcgcHVycG9zZSxcbiAgICAgKiB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Um9vdH1cbiAgICAgKiBAc2VlIFJlc3VsdCNyb290XG4gICAgICovXG4gICAgZ2V0IHJvb3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmMoKS5yb290O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAgICogYW5kIHJldHVybnMge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30uXG4gICAgICpcbiAgICAgKiBUaGlzIHByb3BlcnR5IHdpbGwgb25seSB3b3JrIHdpdGggc3luY2hyb25vdXMgcGx1Z2lucy4gSWYgdGhlIHByb2Nlc3NvclxuICAgICAqIGNvbnRhaW5zIGFueSBhc3luY2hyb25vdXMgcGx1Z2lucyBpdCB3aWxsIHRocm93IGFuIGVycm9yLlxuICAgICAqXG4gICAgICogVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seSBmb3IgZGVidWcgcHVycG9zZSxcbiAgICAgKiB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7TWVzc2FnZVtdfVxuICAgICAqIEBzZWUgUmVzdWx0I21lc3NhZ2VzXG4gICAgICovXG4gICAgZ2V0IG1lc3NhZ2VzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zeW5jKCkubWVzc2FnZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICAgKiBhbmQgY2FsbHMge0BsaW5rIFJlc3VsdCN3YXJuaW5ncygpfS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1dhcm5pbmdbXX0gd2FybmluZ3MgZnJvbSBwbHVnaW5zXG4gICAgICovXG4gICAgd2FybmluZ3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmMoKS53YXJuaW5ncygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFsaWFzIGZvciB0aGUge0BsaW5rIExhenlSZXN1bHQjY3NzfSBwcm9wZXJ0eS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogbGF6eSArICcnID09PSBsYXp5LmNzcztcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gb3V0cHV0IENTU1xuICAgICAqL1xuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jc3M7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgcGx1Z2luc1xuICAgICAqIGFuZCBjYWxscyBgb25GdWxmaWxsZWRgIHdpdGggYSBSZXN1bHQgaW5zdGFuY2UuIElmIGEgcGx1Z2luIHRocm93c1xuICAgICAqIGFuIGVycm9yLCB0aGUgYG9uUmVqZWN0ZWRgIGNhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQuXG4gICAgICpcbiAgICAgKiBJdCBpbXBsZW1lbnRzIHN0YW5kYXJkIFByb21pc2UgQVBJLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvbkZ1bGZpbGxlZH0gb25GdWxmaWxsZWQgLSBjYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGFsbCBwbHVnaW5zIHdpbGwgZmluaXNoIHdvcmtcbiAgICAgKiBAcGFyYW0ge29uUmVqZWN0ZWR9ICBvblJlamVjdGVkICAtIGNhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQgb24gYW55IGVycm9yXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSBQcm9taXNlIEFQSSB0byBtYWtlIHF1ZXVlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHBvc3Rjc3MoW2Nzc25leHRdKS5wcm9jZXNzKGNzcywgeyBmcm9tOiBjc3NQYXRoIH0pLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKHJlc3VsdC5jc3MpO1xuICAgICAqIH0pO1xuICAgICAqL1xuICAgIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgICAgaWYgKCEoJ2Zyb20nIGluIHRoaXMub3B0cykpIHtcbiAgICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgICAgICdXaXRob3V0IGBmcm9tYCBvcHRpb24gUG9zdENTUyBjb3VsZCBnZW5lcmF0ZSB3cm9uZyAnICtcbiAgICAgICAgICAgICAgICAnc291cmNlIG1hcCBhbmQgd2lsbCBub3QgZmluZCBCcm93c2Vyc2xpc3QgY29uZmlnLiAnICtcbiAgICAgICAgICAgICAgICAnU2V0IGl0IHRvIENTUyBmaWxlIHBhdGggb3IgdG8gYHVuZGVmaW5lZGAgdG8gcHJldmVudCAnICtcbiAgICAgICAgICAgICAgICAndGhpcyB3YXJuaW5nLidcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuYXN5bmMoKS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAgICogYW5kIGNhbGxzIG9uUmVqZWN0ZWQgZm9yIGVhY2ggZXJyb3IgdGhyb3duIGluIGFueSBwbHVnaW4uXG4gICAgICpcbiAgICAgKiBJdCBpbXBsZW1lbnRzIHN0YW5kYXJkIFByb21pc2UgQVBJLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvblJlamVjdGVkfSBvblJlamVjdGVkIC0gY2FsbGJhY2sgd2lsbCBiZSBleGVjdXRlZCBvbiBhbnkgZXJyb3JcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9IFByb21pc2UgQVBJIHRvIG1ha2UgcXVldWVcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcG9zdGNzcyhbY3NzbmV4dF0pLnByb2Nlc3MoY3NzKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICogICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKTtcbiAgICAgKiB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICogICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgKiB9KTtcbiAgICAgKi9cbiAgICBjYXRjaChvblJlamVjdGVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFzeW5jKCkuY2F0Y2gob25SZWplY3RlZCk7XG4gICAgfVxuXG4gICAgaGFuZGxlRXJyb3IoZXJyb3IsIHBsdWdpbikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yO1xuICAgICAgICAgICAgaWYgKCBlcnJvci5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InICYmICFlcnJvci5wbHVnaW4gKSB7XG4gICAgICAgICAgICAgICAgZXJyb3IucGx1Z2luID0gcGx1Z2luLnBvc3Rjc3NQbHVnaW47XG4gICAgICAgICAgICAgICAgZXJyb3Iuc2V0TWVzc2FnZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggcGx1Z2luLnBvc3Rjc3NWZXJzaW9uICkge1xuICAgICAgICAgICAgICAgIGxldCBwbHVnaW5OYW1lID0gcGx1Z2luLnBvc3Rjc3NQbHVnaW47XG4gICAgICAgICAgICAgICAgbGV0IHBsdWdpblZlciAgPSBwbHVnaW4ucG9zdGNzc1ZlcnNpb247XG4gICAgICAgICAgICAgICAgbGV0IHJ1bnRpbWVWZXIgPSB0aGlzLnJlc3VsdC5wcm9jZXNzb3IudmVyc2lvbjtcbiAgICAgICAgICAgICAgICBsZXQgYSA9IHBsdWdpblZlci5zcGxpdCgnLicpO1xuICAgICAgICAgICAgICAgIGxldCBiID0gcnVudGltZVZlci5zcGxpdCgnLicpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCBhWzBdICE9PSBiWzBdIHx8IHBhcnNlSW50KGFbMV0pID4gcGFyc2VJbnQoYlsxXSkgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAnVW5rbm93biBlcnJvciBmcm9tIFBvc3RDU1MgcGx1Z2luLiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdZb3VyIGN1cnJlbnQgUG9zdENTUyB2ZXJzaW9uICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2lzICcgKyBydW50aW1lVmVyICsgJywgYnV0ICcgKyBwbHVnaW5OYW1lICsgJyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICd1c2VzICcgKyBwbHVnaW5WZXIgKyAnLiBQZXJoYXBzIHRoaXMgaXMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAndGhlIHNvdXJjZSBvZiB0aGUgZXJyb3IgYmVsb3cuJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmICggY29uc29sZSAmJiBjb25zb2xlLmVycm9yICkgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmNUaWNrKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBpZiAoIHRoaXMucGx1Z2luID49IHRoaXMucHJvY2Vzc29yLnBsdWdpbnMubGVuZ3RoICkge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgcGx1Z2luICA9IHRoaXMucHJvY2Vzc29yLnBsdWdpbnNbdGhpcy5wbHVnaW5dO1xuICAgICAgICAgICAgbGV0IHByb21pc2UgPSB0aGlzLnJ1bihwbHVnaW4pO1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4gKz0gMTtcblxuICAgICAgICAgICAgaWYgKCBpc1Byb21pc2UocHJvbWlzZSkgKSB7XG4gICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXN5bmNUaWNrKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvciwgcGx1Z2luKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFzeW5jVGljayhyZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NlZCA9IHRydWU7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMoKSB7XG4gICAgICAgIGlmICggdGhpcy5wcm9jZXNzZWQgKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIHRoaXMuZXJyb3IgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdCh0aGlzLmVycm9yKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRoaXMuc3RyaW5naWZ5KCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICggdGhpcy5wcm9jZXNzaW5nICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc2luZztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJvY2Vzc2luZyA9IG5ldyBQcm9taXNlKCAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAoIHRoaXMuZXJyb3IgKSByZXR1cm4gcmVqZWN0KHRoaXMuZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4gPSAwO1xuICAgICAgICAgICAgdGhpcy5hc3luY1RpY2socmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSkudGhlbiggKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5naWZ5KCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3Npbmc7XG4gICAgfVxuXG4gICAgc3luYygpIHtcbiAgICAgICAgaWYgKCB0aGlzLnByb2Nlc3NlZCApIHJldHVybiB0aGlzLnJlc3VsdDtcbiAgICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICggdGhpcy5wcm9jZXNzaW5nICkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICdVc2UgcHJvY2Vzcyhjc3MpLnRoZW4oY2IpIHRvIHdvcmsgd2l0aCBhc3luYyBwbHVnaW5zJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHRoaXMuZXJyb3IgKSB0aHJvdyB0aGlzLmVycm9yO1xuXG4gICAgICAgIGZvciAoIGxldCBwbHVnaW4gb2YgdGhpcy5yZXN1bHQucHJvY2Vzc29yLnBsdWdpbnMgKSB7XG4gICAgICAgICAgICBsZXQgcHJvbWlzZSA9IHRoaXMucnVuKHBsdWdpbik7XG4gICAgICAgICAgICBpZiAoIGlzUHJvbWlzZShwcm9taXNlKSApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICdVc2UgcHJvY2Vzcyhjc3MpLnRoZW4oY2IpIHRvIHdvcmsgd2l0aCBhc3luYyBwbHVnaW5zJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHQ7XG4gICAgfVxuXG4gICAgcnVuKHBsdWdpbikge1xuICAgICAgICB0aGlzLnJlc3VsdC5sYXN0UGx1Z2luID0gcGx1Z2luO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gcGx1Z2luKHRoaXMucmVzdWx0LnJvb3QsIHRoaXMucmVzdWx0KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IsIHBsdWdpbik7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0cmluZ2lmeSgpIHtcbiAgICAgICAgaWYgKCB0aGlzLnN0cmluZ2lmaWVkICkgcmV0dXJuIHRoaXMucmVzdWx0O1xuICAgICAgICB0aGlzLnN0cmluZ2lmaWVkID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLnN5bmMoKTtcblxuICAgICAgICBsZXQgb3B0cyA9IHRoaXMucmVzdWx0Lm9wdHM7XG4gICAgICAgIGxldCBzdHIgID0gc3RyaW5naWZ5O1xuICAgICAgICBpZiAoIG9wdHMuc3ludGF4ICkgICAgICBzdHIgPSBvcHRzLnN5bnRheC5zdHJpbmdpZnk7XG4gICAgICAgIGlmICggb3B0cy5zdHJpbmdpZmllciApIHN0ciA9IG9wdHMuc3RyaW5naWZpZXI7XG4gICAgICAgIGlmICggc3RyLnN0cmluZ2lmeSApICAgIHN0ciA9IHN0ci5zdHJpbmdpZnk7XG5cbiAgICAgICAgbGV0IG1hcCAgPSBuZXcgTWFwR2VuZXJhdG9yKHN0ciwgdGhpcy5yZXN1bHQucm9vdCwgdGhpcy5yZXN1bHQub3B0cyk7XG4gICAgICAgIGxldCBkYXRhID0gbWFwLmdlbmVyYXRlKCk7XG4gICAgICAgIHRoaXMucmVzdWx0LmNzcyA9IGRhdGFbMF07XG4gICAgICAgIHRoaXMucmVzdWx0Lm1hcCA9IGRhdGFbMV07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0O1xuICAgIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBMYXp5UmVzdWx0O1xuXG4vKipcbiAqIEBjYWxsYmFjayBvbkZ1bGZpbGxlZFxuICogQHBhcmFtIHtSZXN1bHR9IHJlc3VsdFxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIG9uUmVqZWN0ZWRcbiAqIEBwYXJhbSB7RXJyb3J9IGVycm9yXG4gKi9cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n/**\n * Contains helpers for safely splitting lists of CSS values,\n * preserving parentheses and quotes.\n *\n * @example\n * const list = postcss.list;\n *\n * @namespace list\n */\nvar list = {\n split: function split(string, separators, last) {\n var array = [];\n var current = '';\n var split = false;\n\n var func = 0;\n var quote = false;\n var escape = false;\n\n for (var i = 0; i < string.length; i++) {\n var letter = string[i];\n\n if (quote) {\n if (escape) {\n escape = false;\n } else if (letter === '\\\\') {\n escape = true;\n } else if (letter === quote) {\n quote = false;\n }\n } else if (letter === '\"' || letter === '\\'') {\n quote = letter;\n } else if (letter === '(') {\n func += 1;\n } else if (letter === ')') {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.indexOf(letter) !== -1) split = true;\n }\n\n if (split) {\n if (current !== '') array.push(current.trim());\n current = '';\n split = false;\n } else {\n current += letter;\n }\n }\n\n if (last || current !== '') array.push(current.trim());\n return array;\n },\n\n\n /**\n * Safely splits space-separated values (such as those for `background`,\n * `border-radius`, and other shorthand properties).\n *\n * @param {string} string - space-separated values\n *\n * @return {string[]} split values\n *\n * @example\n * postcss.list.space('1px calc(10% + 1px)') //=> ['1px', 'calc(10% + 1px)']\n */\n space: function space(string) {\n var spaces = [' ', '\\n', '\\t'];\n return list.split(string, spaces);\n },\n\n\n /**\n * Safely splits comma-separated values (such as those for `transition-*`\n * and `background` properties).\n *\n * @param {string} string - comma-separated values\n *\n * @return {string[]} split values\n *\n * @example\n * postcss.list.comma('black, linear-gradient(white, black)')\n * //=> ['black', 'linear-gradient(white, black)']\n */\n comma: function comma(string) {\n var comma = ',';\n return list.split(string, [comma], true);\n }\n};\n\nexports.default = list;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpc3QuZXM2Il0sIm5hbWVzIjpbImxpc3QiLCJzcGxpdCIsInN0cmluZyIsInNlcGFyYXRvcnMiLCJsYXN0IiwiYXJyYXkiLCJjdXJyZW50IiwiZnVuYyIsInF1b3RlIiwiZXNjYXBlIiwiaSIsImxlbmd0aCIsImxldHRlciIsImluZGV4T2YiLCJwdXNoIiwidHJpbSIsInNwYWNlIiwic3BhY2VzIiwiY29tbWEiXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7Ozs7QUFTQSxJQUFJQSxPQUFPO0FBRVBDLFNBRk8saUJBRURDLE1BRkMsRUFFT0MsVUFGUCxFQUVtQkMsSUFGbkIsRUFFeUI7QUFDNUIsWUFBSUMsUUFBVSxFQUFkO0FBQ0EsWUFBSUMsVUFBVSxFQUFkO0FBQ0EsWUFBSUwsUUFBVSxLQUFkOztBQUVBLFlBQUlNLE9BQVUsQ0FBZDtBQUNBLFlBQUlDLFFBQVUsS0FBZDtBQUNBLFlBQUlDLFNBQVUsS0FBZDs7QUFFQSxhQUFNLElBQUlDLElBQUksQ0FBZCxFQUFpQkEsSUFBSVIsT0FBT1MsTUFBNUIsRUFBb0NELEdBQXBDLEVBQTBDO0FBQ3RDLGdCQUFJRSxTQUFTVixPQUFPUSxDQUFQLENBQWI7O0FBRUEsZ0JBQUtGLEtBQUwsRUFBYTtBQUNULG9CQUFLQyxNQUFMLEVBQWM7QUFDVkEsNkJBQVMsS0FBVDtBQUNILGlCQUZELE1BRU8sSUFBS0csV0FBVyxJQUFoQixFQUF1QjtBQUMxQkgsNkJBQVMsSUFBVDtBQUNILGlCQUZNLE1BRUEsSUFBS0csV0FBV0osS0FBaEIsRUFBd0I7QUFDM0JBLDRCQUFRLEtBQVI7QUFDSDtBQUNKLGFBUkQsTUFRTyxJQUFLSSxXQUFXLEdBQVgsSUFBa0JBLFdBQVcsSUFBbEMsRUFBeUM7QUFDNUNKLHdCQUFRSSxNQUFSO0FBQ0gsYUFGTSxNQUVBLElBQUtBLFdBQVcsR0FBaEIsRUFBc0I7QUFDekJMLHdCQUFRLENBQVI7QUFDSCxhQUZNLE1BRUEsSUFBS0ssV0FBVyxHQUFoQixFQUFzQjtBQUN6QixvQkFBS0wsT0FBTyxDQUFaLEVBQWdCQSxRQUFRLENBQVI7QUFDbkIsYUFGTSxNQUVBLElBQUtBLFNBQVMsQ0FBZCxFQUFrQjtBQUNyQixvQkFBS0osV0FBV1UsT0FBWCxDQUFtQkQsTUFBbkIsTUFBK0IsQ0FBQyxDQUFyQyxFQUF5Q1gsUUFBUSxJQUFSO0FBQzVDOztBQUVELGdCQUFLQSxLQUFMLEVBQWE7QUFDVCxvQkFBS0ssWUFBWSxFQUFqQixFQUFzQkQsTUFBTVMsSUFBTixDQUFXUixRQUFRUyxJQUFSLEVBQVg7QUFDdEJULDBCQUFVLEVBQVY7QUFDQUwsd0JBQVUsS0FBVjtBQUNILGFBSkQsTUFJTztBQUNISywyQkFBV00sTUFBWDtBQUNIO0FBQ0o7O0FBRUQsWUFBS1IsUUFBUUUsWUFBWSxFQUF6QixFQUE4QkQsTUFBTVMsSUFBTixDQUFXUixRQUFRUyxJQUFSLEVBQVg7QUFDOUIsZUFBT1YsS0FBUDtBQUNILEtBM0NNOzs7QUE2Q1A7Ozs7Ozs7Ozs7O0FBV0FXLFNBeERPLGlCQXdERGQsTUF4REMsRUF3RE87QUFDVixZQUFJZSxTQUFTLENBQUMsR0FBRCxFQUFNLElBQU4sRUFBWSxJQUFaLENBQWI7QUFDQSxlQUFPakIsS0FBS0MsS0FBTCxDQUFXQyxNQUFYLEVBQW1CZSxNQUFuQixDQUFQO0FBQ0gsS0EzRE07OztBQTZEUDs7Ozs7Ozs7Ozs7O0FBWUFDLFNBekVPLGlCQXlFRGhCLE1BekVDLEVBeUVPO0FBQ1YsWUFBSWdCLFFBQVEsR0FBWjtBQUNBLGVBQU9sQixLQUFLQyxLQUFMLENBQVdDLE1BQVgsRUFBbUIsQ0FBQ2dCLEtBQUQsQ0FBbkIsRUFBNEIsSUFBNUIsQ0FBUDtBQUNIO0FBNUVNLENBQVg7O2tCQWdGZWxCLEkiLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29udGFpbnMgaGVscGVycyBmb3Igc2FmZWx5IHNwbGl0dGluZyBsaXN0cyBvZiBDU1MgdmFsdWVzLFxuICogcHJlc2VydmluZyBwYXJlbnRoZXNlcyBhbmQgcXVvdGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBsaXN0ID0gcG9zdGNzcy5saXN0O1xuICpcbiAqIEBuYW1lc3BhY2UgbGlzdFxuICovXG5sZXQgbGlzdCA9IHtcblxuICAgIHNwbGl0KHN0cmluZywgc2VwYXJhdG9ycywgbGFzdCkge1xuICAgICAgICBsZXQgYXJyYXkgICA9IFtdO1xuICAgICAgICBsZXQgY3VycmVudCA9ICcnO1xuICAgICAgICBsZXQgc3BsaXQgICA9IGZhbHNlO1xuXG4gICAgICAgIGxldCBmdW5jICAgID0gMDtcbiAgICAgICAgbGV0IHF1b3RlICAgPSBmYWxzZTtcbiAgICAgICAgbGV0IGVzY2FwZSAgPSBmYWxzZTtcblxuICAgICAgICBmb3IgKCBsZXQgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyBpKysgKSB7XG4gICAgICAgICAgICBsZXQgbGV0dGVyID0gc3RyaW5nW2ldO1xuXG4gICAgICAgICAgICBpZiAoIHF1b3RlICkge1xuICAgICAgICAgICAgICAgIGlmICggZXNjYXBlICkge1xuICAgICAgICAgICAgICAgICAgICBlc2NhcGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBsZXR0ZXIgPT09ICdcXFxcJyApIHtcbiAgICAgICAgICAgICAgICAgICAgZXNjYXBlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBsZXR0ZXIgPT09IHF1b3RlICkge1xuICAgICAgICAgICAgICAgICAgICBxdW90ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIGxldHRlciA9PT0gJ1wiJyB8fCBsZXR0ZXIgPT09ICdcXCcnICkge1xuICAgICAgICAgICAgICAgIHF1b3RlID0gbGV0dGVyO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggbGV0dGVyID09PSAnKCcgKSB7XG4gICAgICAgICAgICAgICAgZnVuYyArPSAxO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggbGV0dGVyID09PSAnKScgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBmdW5jID4gMCApIGZ1bmMgLT0gMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIGZ1bmMgPT09IDAgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBzZXBhcmF0b3JzLmluZGV4T2YobGV0dGVyKSAhPT0gLTEgKSBzcGxpdCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICggc3BsaXQgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBjdXJyZW50ICE9PSAnJyApIGFycmF5LnB1c2goY3VycmVudC50cmltKCkpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSAnJztcbiAgICAgICAgICAgICAgICBzcGxpdCAgID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGN1cnJlbnQgKz0gbGV0dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBsYXN0IHx8IGN1cnJlbnQgIT09ICcnICkgYXJyYXkucHVzaChjdXJyZW50LnRyaW0oKSk7XG4gICAgICAgIHJldHVybiBhcnJheTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogU2FmZWx5IHNwbGl0cyBzcGFjZS1zZXBhcmF0ZWQgdmFsdWVzIChzdWNoIGFzIHRob3NlIGZvciBgYmFja2dyb3VuZGAsXG4gICAgICogYGJvcmRlci1yYWRpdXNgLCBhbmQgb3RoZXIgc2hvcnRoYW5kIHByb3BlcnRpZXMpLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyAtIHNwYWNlLXNlcGFyYXRlZCB2YWx1ZXNcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBzcGxpdCB2YWx1ZXNcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcG9zdGNzcy5saXN0LnNwYWNlKCcxcHggY2FsYygxMCUgKyAxcHgpJykgLy89PiBbJzFweCcsICdjYWxjKDEwJSArIDFweCknXVxuICAgICAqL1xuICAgIHNwYWNlKHN0cmluZykge1xuICAgICAgICBsZXQgc3BhY2VzID0gWycgJywgJ1xcbicsICdcXHQnXTtcbiAgICAgICAgcmV0dXJuIGxpc3Quc3BsaXQoc3RyaW5nLCBzcGFjZXMpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBTYWZlbHkgc3BsaXRzIGNvbW1hLXNlcGFyYXRlZCB2YWx1ZXMgKHN1Y2ggYXMgdGhvc2UgZm9yIGB0cmFuc2l0aW9uLSpgXG4gICAgICogYW5kIGBiYWNrZ3JvdW5kYCBwcm9wZXJ0aWVzKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgLSBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gc3BsaXQgdmFsdWVzXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHBvc3Rjc3MubGlzdC5jb21tYSgnYmxhY2ssIGxpbmVhci1ncmFkaWVudCh3aGl0ZSwgYmxhY2spJylcbiAgICAgKiAvLz0+IFsnYmxhY2snLCAnbGluZWFyLWdyYWRpZW50KHdoaXRlLCBibGFjayknXVxuICAgICAqL1xuICAgIGNvbW1hKHN0cmluZykge1xuICAgICAgICBsZXQgY29tbWEgPSAnLCc7XG4gICAgICAgIHJldHVybiBsaXN0LnNwbGl0KHN0cmluZywgW2NvbW1hXSwgdHJ1ZSk7XG4gICAgfVxuXG59O1xuXG5leHBvcnQgZGVmYXVsdCBsaXN0O1xuIl19\n","/**********************\n Velocity UI Pack\n**********************/\n\n/* VelocityJS.org UI Pack (5.0.4). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License. Portions copyright Daniel Eden, Christian Pucci. */\n\n;(function (factory) {\n /* CommonJS module. */\n if (typeof require === \"function\" && typeof exports === \"object\" ) {\n module.exports = factory();\n /* AMD module. */\n } else if (typeof define === \"function\" && define.amd) {\n define([ \"velocity\" ], factory);\n /* Browser globals. */\n } else {\n factory();\n }\n}(function() {\nreturn function (global, window, document, undefined) {\n\n /*************\n Checks\n *************/\n\n if (!global.Velocity || !global.Velocity.Utilities) {\n window.console && console.log(\"Velocity UI Pack: Velocity must be loaded first. Aborting.\");\n return;\n } else {\n var Velocity = global.Velocity,\n $ = Velocity.Utilities;\n }\n\n var velocityVersion = Velocity.version,\n requiredVersion = { major: 1, minor: 1, patch: 0 };\n\n function greaterSemver (primary, secondary) {\n var versionInts = [];\n\n if (!primary || !secondary) { return false; }\n\n $.each([ primary, secondary ], function(i, versionObject) {\n var versionIntsComponents = [];\n\n $.each(versionObject, function(component, value) {\n while (value.toString().length < 5) {\n value = \"0\" + value;\n }\n versionIntsComponents.push(value);\n });\n\n versionInts.push(versionIntsComponents.join(\"\"))\n });\n\n return (parseFloat(versionInts[0]) > parseFloat(versionInts[1]));\n }\n\n if (greaterSemver(requiredVersion, velocityVersion)){\n var abortError = \"Velocity UI Pack: You need to update Velocity (jquery.velocity.js) to a newer version. Visit http://github.com/julianshapiro/velocity.\";\n alert(abortError);\n throw new Error(abortError);\n }\n\n /************************\n Effect Registration\n ************************/\n\n /* Note: RegisterUI is a legacy name. */\n Velocity.RegisterEffect = Velocity.RegisterUI = function (effectName, properties) {\n /* Animate the expansion/contraction of the elements' parent's height for In/Out effects. */\n function animateParentHeight (elements, direction, totalDuration, stagger) {\n var totalHeightDelta = 0,\n parentNode;\n\n /* Sum the total height (including padding and margin) of all targeted elements. */\n $.each(elements.nodeType ? [ elements ] : elements, function(i, element) {\n if (stagger) {\n /* Increase the totalDuration by the successive delay amounts produced by the stagger option. */\n totalDuration += i * stagger;\n }\n\n parentNode = element.parentNode;\n\n $.each([ \"height\", \"paddingTop\", \"paddingBottom\", \"marginTop\", \"marginBottom\"], function(i, property) {\n totalHeightDelta += parseFloat(Velocity.CSS.getPropertyValue(element, property));\n });\n });\n\n /* Animate the parent element's height adjustment (with a varying duration multiplier for aesthetic benefits). */\n Velocity.animate(\n parentNode,\n { height: (direction === \"In\" ? \"+\" : \"-\") + \"=\" + totalHeightDelta },\n { queue: false, easing: \"ease-in-out\", duration: totalDuration * (direction === \"In\" ? 0.6 : 1) }\n );\n }\n\n /* Register a custom redirect for each effect. */\n Velocity.Redirects[effectName] = function (element, redirectOptions, elementsIndex, elementsSize, elements, promiseData) {\n var finalElement = (elementsIndex === elementsSize - 1);\n\n if (typeof properties.defaultDuration === \"function\") {\n properties.defaultDuration = properties.defaultDuration.call(elements, elements);\n } else {\n properties.defaultDuration = parseFloat(properties.defaultDuration);\n }\n\n /* Iterate through each effect's call array. */\n for (var callIndex = 0; callIndex < properties.calls.length; callIndex++) {\n var call = properties.calls[callIndex],\n propertyMap = call[0],\n redirectDuration = (redirectOptions.duration || properties.defaultDuration || 1000),\n durationPercentage = call[1],\n callOptions = call[2] || {},\n opts = {};\n\n /* Assign the whitelisted per-call options. */\n opts.duration = redirectDuration * (durationPercentage || 1);\n opts.queue = redirectOptions.queue || \"\";\n opts.easing = callOptions.easing || \"ease\";\n opts.delay = parseFloat(callOptions.delay) || 0;\n opts._cacheValues = callOptions._cacheValues || true;\n\n /* Special processing for the first effect call. */\n if (callIndex === 0) {\n /* If a delay was passed into the redirect, combine it with the first call's delay. */\n opts.delay += (parseFloat(redirectOptions.delay) || 0);\n\n if (elementsIndex === 0) {\n opts.begin = function() {\n /* Only trigger a begin callback on the first effect call with the first element in the set. */\n redirectOptions.begin && redirectOptions.begin.call(elements, elements);\n\n var direction = effectName.match(/(In|Out)$/);\n\n /* Make \"in\" transitioning elements invisible immediately so that there's no FOUC between now\n and the first RAF tick. */\n if ((direction && direction[0] === \"In\") && propertyMap.opacity !== undefined) {\n $.each(elements.nodeType ? [ elements ] : elements, function(i, element) {\n Velocity.CSS.setPropertyValue(element, \"opacity\", 0);\n });\n }\n\n /* Only trigger animateParentHeight() if we're using an In/Out transition. */\n if (redirectOptions.animateParentHeight && direction) {\n animateParentHeight(elements, direction[0], redirectDuration + opts.delay, redirectOptions.stagger);\n }\n }\n }\n\n /* If the user isn't overriding the display option, default to \"auto\" for \"In\"-suffixed transitions. */\n if (redirectOptions.display !== null) {\n if (redirectOptions.display !== undefined && redirectOptions.display !== \"none\") {\n opts.display = redirectOptions.display;\n } else if (/In$/.test(effectName)) {\n /* Inline elements cannot be subjected to transforms, so we switch them to inline-block. */\n var defaultDisplay = Velocity.CSS.Values.getDisplayType(element);\n opts.display = (defaultDisplay === \"inline\") ? \"inline-block\" : defaultDisplay;\n }\n }\n\n if (redirectOptions.visibility && redirectOptions.visibility !== \"hidden\") {\n opts.visibility = redirectOptions.visibility;\n }\n }\n\n /* Special processing for the last effect call. */\n if (callIndex === properties.calls.length - 1) {\n /* Append promise resolving onto the user's redirect callback. */\n function injectFinalCallbacks () {\n if ((redirectOptions.display === undefined || redirectOptions.display === \"none\") && /Out$/.test(effectName)) {\n $.each(elements.nodeType ? [ elements ] : elements, function(i, element) {\n Velocity.CSS.setPropertyValue(element, \"display\", \"none\");\n });\n }\n\n redirectOptions.complete && redirectOptions.complete.call(elements, elements);\n\n if (promiseData) {\n promiseData.resolver(elements || element);\n }\n }\n\n opts.complete = function() {\n if (properties.reset) {\n for (var resetProperty in properties.reset) {\n var resetValue = properties.reset[resetProperty];\n\n /* Format each non-array value in the reset property map to [ value, value ] so that changes apply\n immediately and DOM querying is avoided (via forcefeeding). */\n /* Note: Don't forcefeed hooks, otherwise their hook roots will be defaulted to their null values. */\n if (Velocity.CSS.Hooks.registered[resetProperty] === undefined && (typeof resetValue === \"string\" || typeof resetValue === \"number\")) {\n properties.reset[resetProperty] = [ properties.reset[resetProperty], properties.reset[resetProperty] ];\n }\n }\n\n /* So that the reset values are applied instantly upon the next rAF tick, use a zero duration and parallel queueing. */\n var resetOptions = { duration: 0, queue: false };\n\n /* Since the reset option uses up the complete callback, we trigger the user's complete callback at the end of ours. */\n if (finalElement) {\n resetOptions.complete = injectFinalCallbacks;\n }\n\n Velocity.animate(element, properties.reset, resetOptions);\n /* Only trigger the user's complete callback on the last effect call with the last element in the set. */\n } else if (finalElement) {\n injectFinalCallbacks();\n }\n };\n\n if (redirectOptions.visibility === \"hidden\") {\n opts.visibility = redirectOptions.visibility;\n }\n }\n\n Velocity.animate(element, propertyMap, opts);\n }\n };\n\n /* Return the Velocity object so that RegisterUI calls can be chained. */\n return Velocity;\n };\n\n /*********************\n Packaged Effects\n *********************/\n\n /* Externalize the packagedEffects data so that they can optionally be modified and re-registered. */\n /* Support: <=IE8: Callouts will have no effect, and transitions will simply fade in/out. IE9/Android 2.3: Most effects are fully supported, the rest fade in/out. All other browsers: full support. */\n Velocity.RegisterEffect.packagedEffects =\n {\n /* Animate.css */\n \"callout.bounce\": {\n defaultDuration: 550,\n calls: [\n [ { translateY: -30 }, 0.25 ],\n [ { translateY: 0 }, 0.125 ],\n [ { translateY: -15 }, 0.125 ],\n [ { translateY: 0 }, 0.25 ]\n ]\n },\n /* Animate.css */\n \"callout.shake\": {\n defaultDuration: 800,\n calls: [\n [ { translateX: -11 }, 0.125 ],\n [ { translateX: 11 }, 0.125 ],\n [ { translateX: -11 }, 0.125 ],\n [ { translateX: 11 }, 0.125 ],\n [ { translateX: -11 }, 0.125 ],\n [ { translateX: 11 }, 0.125 ],\n [ { translateX: -11 }, 0.125 ],\n [ { translateX: 0 }, 0.125 ]\n ]\n },\n /* Animate.css */\n \"callout.flash\": {\n defaultDuration: 1100,\n calls: [\n [ { opacity: [ 0, \"easeInOutQuad\", 1 ] }, 0.25 ],\n [ { opacity: [ 1, \"easeInOutQuad\" ] }, 0.25 ],\n [ { opacity: [ 0, \"easeInOutQuad\" ] }, 0.25 ],\n [ { opacity: [ 1, \"easeInOutQuad\" ] }, 0.25 ]\n ]\n },\n /* Animate.css */\n \"callout.pulse\": {\n defaultDuration: 825,\n calls: [\n [ { scaleX: 1.1, scaleY: 1.1 }, 0.50, { easing: \"easeInExpo\" } ],\n [ { scaleX: 1, scaleY: 1 }, 0.50 ]\n ]\n },\n /* Animate.css */\n \"callout.swing\": {\n defaultDuration: 950,\n calls: [\n [ { rotateZ: 15 }, 0.20 ],\n [ { rotateZ: -10 }, 0.20 ],\n [ { rotateZ: 5 }, 0.20 ],\n [ { rotateZ: -5 }, 0.20 ],\n [ { rotateZ: 0 }, 0.20 ]\n ]\n },\n /* Animate.css */\n \"callout.tada\": {\n defaultDuration: 1000,\n calls: [\n [ { scaleX: 0.9, scaleY: 0.9, rotateZ: -3 }, 0.10 ],\n [ { scaleX: 1.1, scaleY: 1.1, rotateZ: 3 }, 0.10 ],\n [ { scaleX: 1.1, scaleY: 1.1, rotateZ: -3 }, 0.10 ],\n [ \"reverse\", 0.125 ],\n [ \"reverse\", 0.125 ],\n [ \"reverse\", 0.125 ],\n [ \"reverse\", 0.125 ],\n [ \"reverse\", 0.125 ],\n [ { scaleX: 1, scaleY: 1, rotateZ: 0 }, 0.20 ]\n ]\n },\n \"transition.fadeIn\": {\n defaultDuration: 500,\n calls: [\n [ { opacity: [ 1, 0 ] } ]\n ]\n },\n \"transition.fadeOut\": {\n defaultDuration: 500,\n calls: [\n [ { opacity: [ 0, 1 ] } ]\n ]\n },\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipXIn\": {\n defaultDuration: 700,\n calls: [\n [ { opacity: [ 1, 0 ], transformPerspective: [ 800, 800 ], rotateY: [ 0, -55 ] } ]\n ],\n reset: { transformPerspective: 0 }\n },\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipXOut\": {\n defaultDuration: 700,\n calls: [\n [ { opacity: [ 0, 1 ], transformPerspective: [ 800, 800 ], rotateY: 55 } ]\n ],\n reset: { transformPerspective: 0, rotateY: 0 }\n },\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipYIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], transformPerspective: [ 800, 800 ], rotateX: [ 0, -45 ] } ]\n ],\n reset: { transformPerspective: 0 }\n },\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipYOut\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 0, 1 ], transformPerspective: [ 800, 800 ], rotateX: 25 } ]\n ],\n reset: { transformPerspective: 0, rotateX: 0 }\n },\n /* Animate.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipBounceXIn\": {\n defaultDuration: 900,\n calls: [\n [ { opacity: [ 0.725, 0 ], transformPerspective: [ 400, 400 ], rotateY: [ -10, 90 ] }, 0.50 ],\n [ { opacity: 0.80, rotateY: 10 }, 0.25 ],\n [ { opacity: 1, rotateY: 0 }, 0.25 ]\n ],\n reset: { transformPerspective: 0 }\n },\n /* Animate.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipBounceXOut\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 0.9, 1 ], transformPerspective: [ 400, 400 ], rotateY: -10 }, 0.50 ],\n [ { opacity: 0, rotateY: 90 }, 0.50 ]\n ],\n reset: { transformPerspective: 0, rotateY: 0 }\n },\n /* Animate.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipBounceYIn\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 0.725, 0 ], transformPerspective: [ 400, 400 ], rotateX: [ -10, 90 ] }, 0.50 ],\n [ { opacity: 0.80, rotateX: 10 }, 0.25 ],\n [ { opacity: 1, rotateX: 0 }, 0.25 ]\n ],\n reset: { transformPerspective: 0 }\n },\n /* Animate.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipBounceYOut\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 0.9, 1 ], transformPerspective: [ 400, 400 ], rotateX: -15 }, 0.50 ],\n [ { opacity: 0, rotateX: 90 }, 0.50 ]\n ],\n reset: { transformPerspective: 0, rotateX: 0 }\n },\n /* Magic.css */\n \"transition.swoopIn\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 1, 0 ], transformOriginX: [ \"100%\", \"50%\" ], transformOriginY: [ \"100%\", \"100%\" ], scaleX: [ 1, 0 ], scaleY: [ 1, 0 ], translateX: [ 0, -700 ], translateZ: 0 } ]\n ],\n reset: { transformOriginX: \"50%\", transformOriginY: \"50%\" }\n },\n /* Magic.css */\n \"transition.swoopOut\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 0, 1 ], transformOriginX: [ \"50%\", \"100%\" ], transformOriginY: [ \"100%\", \"100%\" ], scaleX: 0, scaleY: 0, translateX: -700, translateZ: 0 } ]\n ],\n reset: { transformOriginX: \"50%\", transformOriginY: \"50%\", scaleX: 1, scaleY: 1, translateX: 0 }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3. (Fades and scales only.) */\n \"transition.whirlIn\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 1, 0 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: [ 1, 0 ], scaleY: [ 1, 0 ], rotateY: [ 0, 160 ] }, 1, { easing: \"easeInOutSine\" } ]\n ]\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3. (Fades and scales only.) */\n \"transition.whirlOut\": {\n defaultDuration: 750,\n calls: [\n [ { opacity: [ 0, \"easeInOutQuint\", 1 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: 0, scaleY: 0, rotateY: 160 }, 1, { easing: \"swing\" } ]\n ],\n reset: { scaleX: 1, scaleY: 1, rotateY: 0 }\n },\n \"transition.shrinkIn\": {\n defaultDuration: 750,\n calls: [\n [ { opacity: [ 1, 0 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: [ 1, 1.5 ], scaleY: [ 1, 1.5 ], translateZ: 0 } ]\n ]\n },\n \"transition.shrinkOut\": {\n defaultDuration: 600,\n calls: [\n [ { opacity: [ 0, 1 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: 1.3, scaleY: 1.3, translateZ: 0 } ]\n ],\n reset: { scaleX: 1, scaleY: 1 }\n },\n \"transition.expandIn\": {\n defaultDuration: 700,\n calls: [\n [ { opacity: [ 1, 0 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: [ 1, 0.625 ], scaleY: [ 1, 0.625 ], translateZ: 0 } ]\n ]\n },\n \"transition.expandOut\": {\n defaultDuration: 700,\n calls: [\n [ { opacity: [ 0, 1 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: 0.5, scaleY: 0.5, translateZ: 0 } ]\n ],\n reset: { scaleX: 1, scaleY: 1 }\n },\n /* Animate.css */\n \"transition.bounceIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], scaleX: [ 1.05, 0.3 ], scaleY: [ 1.05, 0.3 ] }, 0.40 ],\n [ { scaleX: 0.9, scaleY: 0.9, translateZ: 0 }, 0.20 ],\n [ { scaleX: 1, scaleY: 1 }, 0.50 ]\n ]\n },\n /* Animate.css */\n \"transition.bounceOut\": {\n defaultDuration: 800,\n calls: [\n [ { scaleX: 0.95, scaleY: 0.95 }, 0.35 ],\n [ { scaleX: 1.1, scaleY: 1.1, translateZ: 0 }, 0.35 ],\n [ { opacity: [ 0, 1 ], scaleX: 0.3, scaleY: 0.3 }, 0.30 ]\n ],\n reset: { scaleX: 1, scaleY: 1 }\n },\n /* Animate.css */\n \"transition.bounceUpIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], translateY: [ -30, 1000 ] }, 0.60, { easing: \"easeOutCirc\" } ],\n [ { translateY: 10 }, 0.20 ],\n [ { translateY: 0 }, 0.20 ]\n ]\n },\n /* Animate.css */\n \"transition.bounceUpOut\": {\n defaultDuration: 1000,\n calls: [\n [ { translateY: 20 }, 0.20 ],\n [ { opacity: [ 0, \"easeInCirc\", 1 ], translateY: -1000 }, 0.80 ]\n ],\n reset: { translateY: 0 }\n },\n /* Animate.css */\n \"transition.bounceDownIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], translateY: [ 30, -1000 ] }, 0.60, { easing: \"easeOutCirc\" } ],\n [ { translateY: -10 }, 0.20 ],\n [ { translateY: 0 }, 0.20 ]\n ]\n },\n /* Animate.css */\n \"transition.bounceDownOut\": {\n defaultDuration: 1000,\n calls: [\n [ { translateY: -20 }, 0.20 ],\n [ { opacity: [ 0, \"easeInCirc\", 1 ], translateY: 1000 }, 0.80 ]\n ],\n reset: { translateY: 0 }\n },\n /* Animate.css */\n \"transition.bounceLeftIn\": {\n defaultDuration: 750,\n calls: [\n [ { opacity: [ 1, 0 ], translateX: [ 30, -1250 ] }, 0.60, { easing: \"easeOutCirc\" } ],\n [ { translateX: -10 }, 0.20 ],\n [ { translateX: 0 }, 0.20 ]\n ]\n },\n /* Animate.css */\n \"transition.bounceLeftOut\": {\n defaultDuration: 750,\n calls: [\n [ { translateX: 30 }, 0.20 ],\n [ { opacity: [ 0, \"easeInCirc\", 1 ], translateX: -1250 }, 0.80 ]\n ],\n reset: { translateX: 0 }\n },\n /* Animate.css */\n \"transition.bounceRightIn\": {\n defaultDuration: 750,\n calls: [\n [ { opacity: [ 1, 0 ], translateX: [ -30, 1250 ] }, 0.60, { easing: \"easeOutCirc\" } ],\n [ { translateX: 10 }, 0.20 ],\n [ { translateX: 0 }, 0.20 ]\n ]\n },\n /* Animate.css */\n \"transition.bounceRightOut\": {\n defaultDuration: 750,\n calls: [\n [ { translateX: -30 }, 0.20 ],\n [ { opacity: [ 0, \"easeInCirc\", 1 ], translateX: 1250 }, 0.80 ]\n ],\n reset: { translateX: 0 }\n },\n \"transition.slideUpIn\": {\n defaultDuration: 900,\n calls: [\n [ { opacity: [ 1, 0 ], translateY: [ 0, 20 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideUpOut\": {\n defaultDuration: 900,\n calls: [\n [ { opacity: [ 0, 1 ], translateY: -20, translateZ: 0 } ]\n ],\n reset: { translateY: 0 }\n },\n \"transition.slideDownIn\": {\n defaultDuration: 900,\n calls: [\n [ { opacity: [ 1, 0 ], translateY: [ 0, -20 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideDownOut\": {\n defaultDuration: 900,\n calls: [\n [ { opacity: [ 0, 1 ], translateY: 20, translateZ: 0 } ]\n ],\n reset: { translateY: 0 }\n },\n \"transition.slideLeftIn\": {\n defaultDuration: 1000,\n calls: [\n [ { opacity: [ 1, 0 ], translateX: [ 0, -20 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideLeftOut\": {\n defaultDuration: 1050,\n calls: [\n [ { opacity: [ 0, 1 ], translateX: -20, translateZ: 0 } ]\n ],\n reset: { translateX: 0 }\n },\n \"transition.slideRightIn\": {\n defaultDuration: 1000,\n calls: [\n [ { opacity: [ 1, 0 ], translateX: [ 0, 20 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideRightOut\": {\n defaultDuration: 1050,\n calls: [\n [ { opacity: [ 0, 1 ], translateX: 20, translateZ: 0 } ]\n ],\n reset: { translateX: 0 }\n },\n \"transition.slideUpBigIn\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 1, 0 ], translateY: [ 0, 75 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideUpBigOut\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 0, 1 ], translateY: -75, translateZ: 0 } ]\n ],\n reset: { translateY: 0 }\n },\n \"transition.slideDownBigIn\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 1, 0 ], translateY: [ 0, -75 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideDownBigOut\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 0, 1 ], translateY: 75, translateZ: 0 } ]\n ],\n reset: { translateY: 0 }\n },\n \"transition.slideLeftBigIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], translateX: [ 0, -75 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideLeftBigOut\": {\n defaultDuration: 750,\n calls: [\n [ { opacity: [ 0, 1 ], translateX: -75, translateZ: 0 } ]\n ],\n reset: { translateX: 0 }\n },\n \"transition.slideRightBigIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], translateX: [ 0, 75 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideRightBigOut\": {\n defaultDuration: 750,\n calls: [\n [ { opacity: [ 0, 1 ], translateX: 75, translateZ: 0 } ]\n ],\n reset: { translateX: 0 }\n },\n /* Magic.css */\n \"transition.perspectiveUpIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], transformPerspective: [ 800, 800 ], transformOriginX: [ 0, 0 ], transformOriginY: [ \"100%\", \"100%\" ], rotateX: [ 0, -180 ] } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\" }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveUpOut\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 0, 1 ], transformPerspective: [ 800, 800 ], transformOriginX: [ 0, 0 ], transformOriginY: [ \"100%\", \"100%\" ], rotateX: -180 } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\", rotateX: 0 }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveDownIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], transformPerspective: [ 800, 800 ], transformOriginX: [ 0, 0 ], transformOriginY: [ 0, 0 ], rotateX: [ 0, 180 ] } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\" }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveDownOut\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 0, 1 ], transformPerspective: [ 800, 800 ], transformOriginX: [ 0, 0 ], transformOriginY: [ 0, 0 ], rotateX: 180 } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\", rotateX: 0 }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveLeftIn\": {\n defaultDuration: 950,\n calls: [\n [ { opacity: [ 1, 0 ], transformPerspective: [ 2000, 2000 ], transformOriginX: [ 0, 0 ], transformOriginY: [ 0, 0 ], rotateY: [ 0, -180 ] } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\" }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveLeftOut\": {\n defaultDuration: 950,\n calls: [\n [ { opacity: [ 0, 1 ], transformPerspective: [ 2000, 2000 ], transformOriginX: [ 0, 0 ], transformOriginY: [ 0, 0 ], rotateY: -180 } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\", rotateY: 0 }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveRightIn\": {\n defaultDuration: 950,\n calls: [\n [ { opacity: [ 1, 0 ], transformPerspective: [ 2000, 2000 ], transformOriginX: [ \"100%\", \"100%\" ], transformOriginY: [ 0, 0 ], rotateY: [ 0, 180 ] } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\" }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveRightOut\": {\n defaultDuration: 950,\n calls: [\n [ { opacity: [ 0, 1 ], transformPerspective: [ 2000, 2000 ], transformOriginX: [ \"100%\", \"100%\" ], transformOriginY: [ 0, 0 ], rotateY: 180 } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\", rotateY: 0 }\n }\n };\n\n /* Register the packaged effects. */\n for (var effectName in Velocity.RegisterEffect.packagedEffects) {\n Velocity.RegisterEffect(effectName, Velocity.RegisterEffect.packagedEffects[effectName]);\n }\n\n /*********************\n Sequence Running\n **********************/\n\n /* Note: Sequence calls must use Velocity's single-object arguments syntax. */\n Velocity.RunSequence = function (originalSequence) {\n var sequence = $.extend(true, [], originalSequence);\n\n if (sequence.length > 1) {\n $.each(sequence.reverse(), function(i, currentCall) {\n var nextCall = sequence[i + 1];\n\n if (nextCall) {\n /* Parallel sequence calls (indicated via sequenceQueue:false) are triggered\n in the previous call's begin callback. Otherwise, chained calls are normally triggered\n in the previous call's complete callback. */\n var currentCallOptions = currentCall.o || currentCall.options,\n nextCallOptions = nextCall.o || nextCall.options;\n\n var timing = (currentCallOptions && currentCallOptions.sequenceQueue === false) ? \"begin\" : \"complete\",\n callbackOriginal = nextCallOptions && nextCallOptions[timing],\n options = {};\n\n options[timing] = function() {\n var nextCallElements = nextCall.e || nextCall.elements;\n var elements = nextCallElements.nodeType ? [ nextCallElements ] : nextCallElements;\n\n callbackOriginal && callbackOriginal.call(elements, elements);\n Velocity(currentCall);\n }\n\n if (nextCall.o) {\n nextCall.o = $.extend({}, nextCallOptions, options);\n } else {\n nextCall.options = $.extend({}, nextCallOptions, options);\n }\n }\n });\n\n sequence.reverse();\n }\n\n Velocity(sequence[0]);\n };\n}((window.jQuery || window.Zepto || window), window, document);\n}));","module.exports = { \"default\": require(\"core-js/library/fn/set-immediate\"), __esModule: true };","var escapeHtmlChar = require('./_escapeHtmlChar'),\n toString = require('./toString');\n\n/** Used to match HTML entities and HTML characters. */\nvar reUnescapedHtml = /[&<>\"']/g,\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n/**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\nfunction escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n}\n\nmodule.exports = escape;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nexports.showGroupInviteDialog = showGroupInviteDialog;\nexports.showGroupAddRoomDialog = showGroupAddRoomDialog;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _ = require('./');\n\nvar _2 = _interopRequireDefault(_);\n\nvar _MultiInviter = require('./utils/MultiInviter');\n\nvar _MultiInviter2 = _interopRequireDefault(_MultiInviter);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _GroupStore = require('./stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction showGroupInviteDialog(groupId) {\n return new _promise2.default(function (resolve, reject) {\n var description = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Who would you like to add to this community?\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'warning' },\n (0, _languageHandler._t)(\"Warning: any person you add to a community will be publicly \" + \"visible to anyone who knows the community ID\")\n )\n );\n\n var AddressPickerDialog = _2.default.getComponent(\"dialogs.AddressPickerDialog\");\n _Modal2.default.createTrackedDialog('Group Invite', '', AddressPickerDialog, {\n title: (0, _languageHandler._t)(\"Invite new community members\"),\n description: description,\n placeholder: (0, _languageHandler._t)(\"Name or matrix ID\"),\n button: (0, _languageHandler._t)(\"Invite to Community\"),\n validAddressTypes: ['mx-user-id'],\n onFinished: function onFinished(success, addrs) {\n if (!success) return;\n\n _onGroupInviteFinished(groupId, addrs).then(resolve, reject);\n }\n });\n });\n} /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction showGroupAddRoomDialog(groupId) {\n return new _promise2.default(function (resolve, reject) {\n var addRoomsPublicly = false;\n var onCheckboxClicked = function onCheckboxClicked(e) {\n addRoomsPublicly = e.target.checked;\n };\n var description = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Which rooms would you like to add to this community?\")\n )\n );\n\n var checkboxContainer = _react2.default.createElement(\n 'label',\n { className: 'mx_GroupAddressPicker_checkboxContainer' },\n _react2.default.createElement('input', { type: 'checkbox', onClick: onCheckboxClicked }),\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Show these rooms to non-members on the community page and room list?\")\n )\n );\n\n var AddressPickerDialog = _2.default.getComponent(\"dialogs.AddressPickerDialog\");\n _Modal2.default.createTrackedDialog('Add Rooms to Group', '', AddressPickerDialog, {\n title: (0, _languageHandler._t)(\"Add rooms to the community\"),\n description: description,\n extraNode: checkboxContainer,\n placeholder: (0, _languageHandler._t)(\"Room name or alias\"),\n button: (0, _languageHandler._t)(\"Add to community\"),\n pickerType: 'room',\n validAddressTypes: ['mx-room-id'],\n onFinished: function onFinished(success, addrs) {\n if (!success) return;\n\n _onGroupAddRoomFinished(groupId, addrs, addRoomsPublicly).then(resolve, reject);\n }\n });\n });\n}\n\nfunction _onGroupInviteFinished(groupId, addrs) {\n var multiInviter = new _MultiInviter2.default(groupId);\n\n var addrTexts = addrs.map(function (addr) {\n return addr.address;\n });\n\n return multiInviter.invite(addrTexts).then(function (completionStates) {\n // Show user any errors\n var errorList = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(completionStates)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var addr = _step.value;\n\n if (addrs[addr] === \"error\") {\n errorList.push(addr);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (errorList.length > 0) {\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite the following users to the group', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite the following users to %(groupId)s:\", { groupId: groupId }),\n description: errorList.join(\", \")\n });\n }\n }).catch(function (err) {\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite users to group', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite users to community\"),\n description: (0, _languageHandler._t)(\"Failed to invite users to %(groupId)s\", { groupId: groupId })\n });\n });\n}\n\nfunction _onGroupAddRoomFinished(groupId, addrs, addRoomsPublicly) {\n var matrixClient = _MatrixClientPeg2.default.get();\n var errorList = [];\n return _promise2.default.all(addrs.map(function (addr) {\n return _GroupStore2.default.addRoomToGroup(groupId, addr.address, addRoomsPublicly).catch(function () {\n errorList.push(addr.address);\n }).then(function () {\n var roomId = addr.address;\n var room = matrixClient.getRoom(roomId);\n // Can the user change related groups?\n if (!room || !room.currentState.mayClientSendStateEvent(\"m.room.related_groups\", matrixClient)) {\n return;\n }\n // Get the related groups\n var relatedGroupsEvent = room.currentState.getStateEvents('m.room.related_groups', '');\n var groups = relatedGroupsEvent ? relatedGroupsEvent.getContent().groups || [] : [];\n\n // Add this group as related\n if (!groups.includes(groupId)) {\n groups.push(groupId);\n return _MatrixClientPeg2.default.get().sendStateEvent(roomId, 'm.room.related_groups', { groups: groups }, '');\n }\n }).reflect();\n })).then(function () {\n if (errorList.length === 0) {\n return;\n }\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to add the following room to the group', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to add the following rooms to %(groupId)s:\", { groupId: groupId }),\n description: errorList.join(\", \")\n });\n });\n}\n//# sourceMappingURL=GroupAddressPicker.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _UserAddress = require('../UserAddress');\n\nvar _RoomInvite = require('../RoomInvite');\n\nvar _GroupStore = require('../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Invites multiple addresses to a room or group, handling rate limiting from the server\n */\nvar MultiInviter = function () {\n /**\n * @param {string} targetId The ID of the room or group to invite to\n */\n function MultiInviter(targetId) {\n (0, _classCallCheck3.default)(this, MultiInviter);\n\n if (targetId[0] === '+') {\n this.roomId = null;\n this.groupId = targetId;\n } else {\n this.roomId = targetId;\n this.groupId = null;\n }\n\n this.canceled = false;\n this.addrs = [];\n this.busy = false;\n this.completionStates = {}; // State of each address (invited or error)\n this.errorTexts = {}; // Textual error per address\n this.deferred = null;\n }\n\n /**\n * Invite users to this room. This may only be called once per\n * instance of the class.\n *\n * @param {array} addresses Array of addresses to invite\n * @returns {Promise} Resolved when all invitations in the queue are complete\n */\n\n\n (0, _createClass3.default)(MultiInviter, [{\n key: 'invite',\n value: function invite(addrs) {\n var _addrs;\n\n if (this.addrs.length > 0) {\n throw new Error(\"Already inviting/invited\");\n }\n (_addrs = this.addrs).push.apply(_addrs, (0, _toConsumableArray3.default)(addrs));\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this.addrs), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var addr = _step.value;\n\n if ((0, _UserAddress.getAddressType)(addr) === null) {\n this.completionStates[addr] = 'error';\n this.errorTexts[addr] = 'Unrecognised address';\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n this.deferred = _bluebird2.default.defer();\n this._inviteMore(0);\n\n return this.deferred.promise;\n }\n\n /**\n * Stops inviting. Causes promises returned by invite() to be rejected.\n */\n\n }, {\n key: 'cancel',\n value: function cancel() {\n if (!this.busy) return;\n\n this._canceled = true;\n this.deferred.reject(new Error('canceled'));\n }\n }, {\n key: 'getCompletionState',\n value: function getCompletionState(addr) {\n return this.completionStates[addr];\n }\n }, {\n key: 'getErrorText',\n value: function getErrorText(addr) {\n return this.errorTexts[addr];\n }\n }, {\n key: '_inviteMore',\n value: function _inviteMore(nextIndex) {\n var _this = this;\n\n if (this._canceled) {\n return;\n }\n\n if (nextIndex == this.addrs.length) {\n this.busy = false;\n this.deferred.resolve(this.completionStates);\n return;\n }\n\n var addr = this.addrs[nextIndex];\n\n // don't try to invite it if it's an invalid address\n // (it will already be marked as an error though,\n // so no need to do so again)\n if ((0, _UserAddress.getAddressType)(addr) === null) {\n this._inviteMore(nextIndex + 1);\n return;\n }\n\n // don't re-invite (there's no way in the UI to do this, but\n // for sanity's sake)\n if (this.completionStates[addr] == 'invited') {\n this._inviteMore(nextIndex + 1);\n return;\n }\n\n var doInvite = void 0;\n if (this.groupId !== null) {\n doInvite = _GroupStore2.default.inviteUserToGroup(this.groupId, addr);\n } else {\n doInvite = (0, _RoomInvite.inviteToRoom)(this.roomId, addr);\n }\n\n doInvite.then(function () {\n if (_this._canceled) {\n return;\n }\n\n _this.completionStates[addr] = 'invited';\n\n _this._inviteMore(nextIndex + 1);\n }, function (err) {\n if (_this._canceled) {\n return;\n }\n\n var errorText = void 0;\n var fatal = false;\n if (err.errcode == 'M_FORBIDDEN') {\n fatal = true;\n errorText = 'You do not have permission to invite people to this room.';\n } else if (err.errcode == 'M_LIMIT_EXCEEDED') {\n // we're being throttled so wait a bit & try again\n setTimeout(function () {\n _this._inviteMore(nextIndex);\n }, 5000);\n return;\n } else {\n errorText = 'Unknown server error';\n }\n _this.completionStates[addr] = 'error';\n _this.errorTexts[addr] = errorText;\n _this.busy = !fatal;\n\n if (!fatal) {\n _this._inviteMore(nextIndex + 1);\n }\n });\n }\n }]);\n return MultiInviter;\n}(); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = MultiInviter;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MultiInviter.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nexports.inviteToRoom = inviteToRoom;\nexports.inviteMultipleToRoom = inviteMultipleToRoom;\nexports.showStartChatInviteDialog = showStartChatInviteDialog;\nexports.showRoomInviteDialog = showRoomInviteDialog;\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _MultiInviter = require('./utils/MultiInviter');\n\nvar _MultiInviter2 = _interopRequireDefault(_MultiInviter);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _UserAddress = require('./UserAddress');\n\nvar _createRoom = require('./createRoom');\n\nvar _createRoom2 = _interopRequireDefault(_createRoom);\n\nvar _ = require('./');\n\nvar _2 = _interopRequireDefault(_);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _DMRoomMap = require('./utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction inviteToRoom(roomId, addr) {\n var addrType = (0, _UserAddress.getAddressType)(addr);\n\n if (addrType == 'email') {\n return _MatrixClientPeg2.default.get().inviteByEmail(roomId, addr);\n } else if (addrType == 'mx-user-id') {\n return _MatrixClientPeg2.default.get().invite(roomId, addr);\n } else {\n throw new Error('Unsupported address');\n }\n}\n\n/**\n * Invites multiple addresses to a room\n * Simpler interface to utils/MultiInviter but with\n * no option to cancel.\n *\n * @param {string} roomId The ID of the room to invite to\n * @param {string[]} addrs Array of strings of addresses to invite. May be matrix IDs or 3pids.\n * @returns {Promise} Promise\n */\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction inviteMultipleToRoom(roomId, addrs) {\n var inviter = new _MultiInviter2.default(roomId);\n return inviter.invite(addrs);\n}\n\nfunction showStartChatInviteDialog() {\n var AddressPickerDialog = _2.default.getComponent(\"dialogs.AddressPickerDialog\");\n _Modal2.default.createTrackedDialog('Start a chat', '', AddressPickerDialog, {\n title: (0, _languageHandler._t)('Start a chat'),\n description: (0, _languageHandler._t)(\"Who would you like to communicate with?\"),\n placeholder: (0, _languageHandler._t)(\"Email, name or matrix ID\"),\n validAddressTypes: ['mx-user-id', 'email'],\n button: (0, _languageHandler._t)(\"Start Chat\"),\n onFinished: _onStartChatFinished\n });\n}\n\nfunction showRoomInviteDialog(roomId) {\n var AddressPickerDialog = _2.default.getComponent(\"dialogs.AddressPickerDialog\");\n _Modal2.default.createTrackedDialog('Chat Invite', '', AddressPickerDialog, {\n title: (0, _languageHandler._t)('Invite new room members'),\n description: (0, _languageHandler._t)('Who would you like to add to this room?'),\n button: (0, _languageHandler._t)('Send Invites'),\n placeholder: (0, _languageHandler._t)(\"Email, name or matrix ID\"),\n onFinished: function onFinished(shouldInvite, addrs) {\n _onRoomInviteFinished(roomId, shouldInvite, addrs);\n }\n });\n}\n\nfunction _onStartChatFinished(shouldInvite, addrs) {\n if (!shouldInvite) return;\n\n var addrTexts = addrs.map(function (addr) {\n return addr.address;\n });\n\n if (_isDmChat(addrTexts)) {\n var rooms = _getDirectMessageRooms(addrTexts[0]);\n if (rooms.length > 0) {\n // A Direct Message room already exists for this user, so select a\n // room from a list that is similar to the one in MemberInfo panel\n var ChatCreateOrReuseDialog = _2.default.getComponent(\"views.dialogs.ChatCreateOrReuseDialog\");\n var close = _Modal2.default.createTrackedDialog('Create or Reuse', '', ChatCreateOrReuseDialog, {\n userId: addrTexts[0],\n onNewDMClick: function onNewDMClick() {\n _dispatcher2.default.dispatch({\n action: 'start_chat',\n user_id: addrTexts[0]\n });\n close(true);\n },\n onExistingRoomSelected: function onExistingRoomSelected(roomId) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: roomId\n });\n close(true);\n }\n }).close;\n } else {\n // Start a new DM chat\n (0, _createRoom2.default)({ dmUserId: addrTexts[0] }).catch(function (err) {\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite user', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite user\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n }\n } else if (addrTexts.length === 1) {\n // Start a new DM chat\n (0, _createRoom2.default)({ dmUserId: addrTexts[0] }).catch(function (err) {\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite user', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite user\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n } else {\n // Start multi user chat\n var room = void 0;\n (0, _createRoom2.default)().then(function (roomId) {\n room = _MatrixClientPeg2.default.get().getRoom(roomId);\n return inviteMultipleToRoom(roomId, addrTexts);\n }).then(function (addrs) {\n return _showAnyInviteErrors(addrs, room);\n }).catch(function (err) {\n console.error(err.stack);\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n }\n}\n\nfunction _onRoomInviteFinished(roomId, shouldInvite, addrs) {\n if (!shouldInvite) return;\n\n var addrTexts = addrs.map(function (addr) {\n return addr.address;\n });\n\n // Invite new users to a room\n inviteMultipleToRoom(roomId, addrTexts).then(function (addrs) {\n var room = _MatrixClientPeg2.default.get().getRoom(roomId);\n return _showAnyInviteErrors(addrs, room);\n }).catch(function (err) {\n console.error(err.stack);\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n}\n\nfunction _isDmChat(addrTexts) {\n if (addrTexts.length === 1 && (0, _UserAddress.getAddressType)(addrTexts[0]) === 'mx-user-id') {\n return true;\n } else {\n return false;\n }\n}\n\nfunction _showAnyInviteErrors(addrs, room) {\n // Show user any errors\n var errorList = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(addrs)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var addr = _step.value;\n\n if (addrs[addr] === \"error\") {\n errorList.push(addr);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (errorList.length > 0) {\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite the following users to the room', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite the following users to the %(roomName)s room:\", { roomName: room.name }),\n description: errorList.join(\", \")\n });\n }\n return addrs;\n}\n\nfunction _getDirectMessageRooms(addr) {\n var dmRoomMap = new _DMRoomMap2.default(_MatrixClientPeg2.default.get());\n var dmRooms = dmRoomMap.getDMRoomsForUserId(addr);\n var rooms = dmRooms.filter(function (dmRoom) {\n var room = _MatrixClientPeg2.default.get().getRoom(dmRoom);\n if (room) {\n return room.getMyMembership() === 'join';\n }\n });\n return rooms;\n}\n//# sourceMappingURL=RoomInvite.js.map","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FallbackAuthEntry = exports.MsisdnAuthEntry = exports.EmailIdentityAuthEntry = exports.TermsAuthEntry = exports.RecaptchaAuthEntry = exports.PasswordAuthEntry = undefined;\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nexports.getEntryComponentForLoginType = getEntryComponentForLoginType;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes2 = require('prop-types');\n\nvar _propTypes3 = _interopRequireDefault(_propTypes2);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* This file contains a collection of components which are used by the\n * InteractiveAuth to prompt the user to enter the information needed\n * for an auth stage. (The intention is that they could also be used for other\n * components, such as the registration flow).\n *\n * Call getEntryComponentForLoginType() to get a component suitable for a\n * particular login type. Each component requires the same properties:\n *\n * matrixClient: A matrix client. May be a different one to the one\n * currently being used generally (eg. to register with\n * one HS whilst beign a guest on another).\n * loginType: the login type of the auth stage being attempted\n * authSessionId: session id from the server\n * clientSecret: The client secret in use for ID server auth sessions\n * stageParams: params from the server for the stage being attempted\n * errorText: error message from a previous attempt to authenticate\n * submitAuthDict: a function which will be called with the new auth dict\n * busy: a boolean indicating whether the auth logic is doing something\n * the user needs to wait for.\n * inputs: Object of inputs provided by the user, as in js-sdk\n * interactive-auth\n * stageState: Stage-specific object used for communicating state information\n * to the UI from the state-specific auth logic.\n * Defined keys for stages are:\n * m.login.email.identity:\n * * emailSid: string representing the sid of the active\n * verification session from the ID server, or\n * null if no session is active.\n * fail: a function which should be called with an error object if an\n * error occurred during the auth stage. This will cause the auth\n * session to be failed and the process to go back to the start.\n * setEmailSid: m.login.email.identity only: a function to be called with the\n * email sid after a token is requested.\n * makeRegistrationUrl A function that makes a registration URL\n *\n * Each component may also provide the following functions (beyond the standard React ones):\n * focus: set the input focus appropriately in the form.\n */\n\nvar PasswordAuthEntry = exports.PasswordAuthEntry = _react2.default.createClass({\n displayName: 'PasswordAuthEntry',\n\n statics: {\n LOGIN_TYPE: \"m.login.password\"\n },\n\n propTypes: {\n matrixClient: _propTypes3.default.object.isRequired,\n submitAuthDict: _propTypes3.default.func.isRequired,\n errorText: _propTypes3.default.string,\n // is the auth logic currently waiting for something to\n // happen?\n busy: _propTypes3.default.bool\n },\n\n getInitialState: function getInitialState() {\n return {\n passwordValid: false\n };\n },\n\n focus: function focus() {\n if (this.refs.passwordField) {\n this.refs.passwordField.focus();\n }\n },\n\n _onSubmit: function _onSubmit(e) {\n e.preventDefault();\n if (this.props.busy) return;\n\n this.props.submitAuthDict({\n type: PasswordAuthEntry.LOGIN_TYPE,\n user: this.props.matrixClient.credentials.userId,\n password: this.refs.passwordField.value\n });\n },\n\n _onPasswordFieldChange: function _onPasswordFieldChange(ev) {\n // enable the submit button iff the password is non-empty\n this.setState({\n passwordValid: Boolean(this.refs.passwordField.value)\n });\n },\n\n render: function render() {\n var passwordBoxClass = null;\n\n if (this.props.errorText) {\n passwordBoxClass = 'error';\n }\n\n var submitButtonOrSpinner = void 0;\n if (this.props.busy) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n submitButtonOrSpinner = _react2.default.createElement(Loader, null);\n } else {\n submitButtonOrSpinner = _react2.default.createElement('input', { type: 'submit',\n className: 'mx_Dialog_primary',\n disabled: !this.state.passwordValid\n });\n }\n\n var errorSection = void 0;\n if (this.props.errorText) {\n errorSection = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.props.errorText\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"To continue, please enter your password.\")\n ),\n _react2.default.createElement(\n 'form',\n { onSubmit: this._onSubmit },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'passwordField' },\n (0, _languageHandler._t)(\"Password:\")\n ),\n _react2.default.createElement('input', {\n name: 'passwordField',\n ref: 'passwordField',\n className: passwordBoxClass,\n onChange: this._onPasswordFieldChange,\n type: 'password'\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_button_row' },\n submitButtonOrSpinner\n )\n ),\n errorSection\n );\n }\n}); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar RecaptchaAuthEntry = exports.RecaptchaAuthEntry = _react2.default.createClass({\n displayName: 'RecaptchaAuthEntry',\n\n statics: {\n LOGIN_TYPE: \"m.login.recaptcha\"\n },\n\n propTypes: {\n submitAuthDict: _propTypes3.default.func.isRequired,\n stageParams: _propTypes3.default.object.isRequired,\n errorText: _propTypes3.default.string,\n busy: _propTypes3.default.bool\n },\n\n _onCaptchaResponse: function _onCaptchaResponse(response) {\n this.props.submitAuthDict({\n type: RecaptchaAuthEntry.LOGIN_TYPE,\n response: response\n });\n },\n\n render: function render() {\n if (this.props.busy) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n }\n\n var CaptchaForm = _index2.default.getComponent(\"views.login.CaptchaForm\");\n var sitePublicKey = this.props.stageParams.public_key;\n\n var errorSection = void 0;\n if (this.props.errorText) {\n errorSection = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.props.errorText\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(CaptchaForm, { sitePublicKey: sitePublicKey,\n onCaptchaResponse: this._onCaptchaResponse\n }),\n errorSection\n );\n }\n});\n\nvar TermsAuthEntry = exports.TermsAuthEntry = _react2.default.createClass({\n displayName: 'TermsAuthEntry',\n\n statics: {\n LOGIN_TYPE: \"m.login.terms\"\n },\n\n propTypes: {\n submitAuthDict: _propTypes3.default.func.isRequired,\n stageParams: _propTypes3.default.object.isRequired,\n errorText: _propTypes3.default.string,\n busy: _propTypes3.default.bool\n },\n\n componentWillMount: function componentWillMount() {\n // example stageParams:\n //\n // {\n // \"policies\": {\n // \"privacy_policy\": {\n // \"version\": \"1.0\",\n // \"en\": {\n // \"name\": \"Privacy Policy\",\n // \"url\": \"https://example.org/privacy-1.0-en.html\",\n // },\n // \"fr\": {\n // \"name\": \"Politique de confidentialité\",\n // \"url\": \"https://example.org/privacy-1.0-fr.html\",\n // },\n // },\n // \"other_policy\": { ... },\n // }\n // }\n\n var allPolicies = this.props.stageParams.policies || {};\n var prefLang = _SettingsStore2.default.getValue(\"language\");\n var initToggles = {};\n var pickedPolicies = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(allPolicies)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var policyId = _step.value;\n\n var policy = allPolicies[policyId];\n\n // Pick a language based on the user's language, falling back to english,\n // and finally to the first language available. If there's still no policy\n // available then the homeserver isn't respecting the spec.\n var langPolicy = policy[prefLang];\n if (!langPolicy) langPolicy = policy[\"en\"];\n if (!langPolicy) {\n // last resort\n var firstLang = (0, _keys2.default)(policy).find(function (e) {\n return e !== \"version\";\n });\n langPolicy = policy[firstLang];\n }\n if (!langPolicy) throw new Error(\"Failed to find a policy to show the user\");\n\n initToggles[policyId] = false;\n\n langPolicy.id = policyId;\n pickedPolicies.push(langPolicy);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n this.setState({\n \"toggledPolicies\": initToggles,\n \"policies\": pickedPolicies\n });\n },\n\n _trySubmit: function _trySubmit(policyId) {\n var newToggles = {};\n var allChecked = true;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(this.state.policies), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var policy = _step2.value;\n\n var checked = this.state.toggledPolicies[policy.id];\n if (policy.id === policyId) checked = !checked;\n\n newToggles[policy.id] = checked;\n allChecked = allChecked && checked;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n this.setState({ \"toggledPolicies\": newToggles });\n if (allChecked) this.props.submitAuthDict({ type: TermsAuthEntry.LOGIN_TYPE });\n },\n\n render: function render() {\n var _this = this;\n\n if (this.props.busy) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n }\n\n var checkboxes = [];\n var allChecked = true;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n var _loop = function _loop() {\n var policy = _step3.value;\n\n var checked = _this.state.toggledPolicies[policy.id];\n allChecked = allChecked && checked;\n\n checkboxes.push(_react2.default.createElement(\n 'label',\n { key: \"policy_checkbox_\" + policy.id },\n _react2.default.createElement('input', { type: 'checkbox', onClick: function onClick() {\n return _this._trySubmit(policy.id);\n }, checked: checked }),\n _react2.default.createElement(\n 'a',\n { href: policy.url, target: '_blank', rel: 'noopener' },\n policy.name\n )\n ));\n };\n\n for (var _iterator3 = (0, _getIterator3.default)(this.state.policies), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n _loop();\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n var errorSection = void 0;\n if (this.props.errorText) {\n errorSection = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.props.errorText\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Please review and accept the policies of this homeserver:\")\n ),\n checkboxes,\n errorSection\n );\n }\n});\n\nvar EmailIdentityAuthEntry = exports.EmailIdentityAuthEntry = _react2.default.createClass({\n displayName: 'EmailIdentityAuthEntry',\n\n statics: {\n LOGIN_TYPE: \"m.login.email.identity\"\n },\n\n propTypes: {\n matrixClient: _propTypes3.default.object.isRequired,\n submitAuthDict: _propTypes3.default.func.isRequired,\n authSessionId: _propTypes3.default.string.isRequired,\n clientSecret: _propTypes3.default.string.isRequired,\n inputs: _propTypes3.default.object.isRequired,\n stageState: _propTypes3.default.object.isRequired,\n fail: _propTypes3.default.func.isRequired,\n setEmailSid: _propTypes3.default.func.isRequired,\n makeRegistrationUrl: _propTypes3.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n requestingToken: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this2 = this;\n\n if (this.props.stageState.emailSid === null) {\n this.setState({ requestingToken: true });\n this._requestEmailToken().catch(function (e) {\n _this2.props.fail(e);\n }).finally(function () {\n _this2.setState({ requestingToken: false });\n }).done();\n }\n },\n\n /*\n * Requests a verification token by email.\n */\n _requestEmailToken: function _requestEmailToken() {\n var _this3 = this;\n\n var nextLink = this.props.makeRegistrationUrl({\n client_secret: this.props.clientSecret,\n hs_url: this.props.matrixClient.getHomeserverUrl(),\n is_url: this.props.matrixClient.getIdentityServerUrl(),\n session_id: this.props.authSessionId\n });\n\n return this.props.matrixClient.requestRegisterEmailToken(this.props.inputs.emailAddress, this.props.clientSecret, 1, // TODO: Multiple send attempts?\n nextLink).then(function (result) {\n _this3.props.setEmailSid(result.sid);\n });\n },\n\n render: function render() {\n var _this4 = this;\n\n if (this.state.requestingToken) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n } else {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"An email has been sent to %(emailAddress)s\", { emailAddress: function emailAddress(sub) {\n return _react2.default.createElement(\n 'i',\n null,\n _this4.props.inputs.emailAddress\n );\n } })\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Please check your email to continue registration.\")\n )\n );\n }\n }\n});\n\nvar MsisdnAuthEntry = exports.MsisdnAuthEntry = _react2.default.createClass({\n displayName: 'MsisdnAuthEntry',\n\n statics: {\n LOGIN_TYPE: \"m.login.msisdn\"\n },\n\n propTypes: (0, _defineProperty3.default)({\n inputs: _propTypes3.default.shape({\n phoneCountry: _propTypes3.default.string,\n phoneNumber: _propTypes3.default.string\n }),\n fail: _propTypes3.default.func,\n clientSecret: _propTypes3.default.func,\n submitAuthDict: _propTypes3.default.func.isRequired,\n matrixClient: _propTypes3.default.object\n }, 'submitAuthDict', _propTypes3.default.func),\n\n getInitialState: function getInitialState() {\n return {\n token: '',\n requestingToken: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this5 = this;\n\n this._sid = null;\n this._msisdn = null;\n this._tokenBox = null;\n\n this.setState({ requestingToken: true });\n this._requestMsisdnToken().catch(function (e) {\n _this5.props.fail(e);\n }).finally(function () {\n _this5.setState({ requestingToken: false });\n }).done();\n },\n\n /*\n * Requests a verification token by SMS.\n */\n _requestMsisdnToken: function _requestMsisdnToken() {\n var _this6 = this;\n\n return this.props.matrixClient.requestRegisterMsisdnToken(this.props.inputs.phoneCountry, this.props.inputs.phoneNumber, this.props.clientSecret, 1 // TODO: Multiple send attempts?\n ).then(function (result) {\n _this6._sid = result.sid;\n _this6._msisdn = result.msisdn;\n });\n },\n\n _onTokenChange: function _onTokenChange(e) {\n this.setState({\n token: e.target.value\n });\n },\n\n _onFormSubmit: function _onFormSubmit(e) {\n var _this7 = this;\n\n e.preventDefault();\n if (this.state.token == '') return;\n\n this.setState({\n errorText: null\n });\n\n this.props.matrixClient.submitMsisdnToken(this._sid, this.props.clientSecret, this.state.token).then(function (result) {\n if (result.success) {\n var idServerParsedUrl = _url2.default.parse(_this7.props.matrixClient.getIdentityServerUrl());\n _this7.props.submitAuthDict({\n type: MsisdnAuthEntry.LOGIN_TYPE,\n threepid_creds: {\n sid: _this7._sid,\n client_secret: _this7.props.clientSecret,\n id_server: idServerParsedUrl.host\n }\n });\n } else {\n _this7.setState({\n errorText: (0, _languageHandler._t)(\"Token incorrect\")\n });\n }\n }).catch(function (e) {\n _this7.props.fail(e);\n console.log(\"Failed to submit msisdn token\");\n }).done();\n },\n\n render: function render() {\n if (this.state.requestingToken) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n } else {\n var enableSubmit = Boolean(this.state.token);\n var submitClasses = (0, _classnames2.default)({\n mx_InteractiveAuthEntryComponents_msisdnSubmit: true,\n mx_UserSettings_button: true // XXX button classes\n });\n var errorSection = void 0;\n if (this.state.errorText) {\n errorSection = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.state.errorText\n );\n }\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"A text message has been sent to %(msisdn)s\", { msisdn: _react2.default.createElement(\n 'i',\n null,\n this._msisdn\n ) })\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Please enter the code it contains:\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_InteractiveAuthEntryComponents_msisdnWrapper' },\n _react2.default.createElement(\n 'form',\n { onSubmit: this._onFormSubmit },\n _react2.default.createElement('input', { type: 'text',\n className: 'mx_InteractiveAuthEntryComponents_msisdnEntry',\n value: this.state.token,\n onChange: this._onTokenChange,\n 'aria-label': (0, _languageHandler._t)(\"Code\")\n }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { type: 'submit', value: (0, _languageHandler._t)(\"Submit\"),\n className: submitClasses,\n disabled: !enableSubmit\n })\n ),\n errorSection\n )\n );\n }\n }\n});\n\nvar FallbackAuthEntry = exports.FallbackAuthEntry = _react2.default.createClass({\n displayName: 'FallbackAuthEntry',\n\n propTypes: {\n matrixClient: _propTypes3.default.object.isRequired,\n authSessionId: _propTypes3.default.string.isRequired,\n loginType: _propTypes3.default.string.isRequired,\n submitAuthDict: _propTypes3.default.func.isRequired,\n errorText: _propTypes3.default.string\n },\n\n componentWillMount: function componentWillMount() {\n // we have to make the user click a button, as browsers will block\n // the popup if we open it immediately.\n this._popupWindow = null;\n window.addEventListener(\"message\", this._onReceiveMessage);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n window.removeEventListener(\"message\", this._onReceiveMessage);\n if (this._popupWindow) {\n this._popupWindow.close();\n }\n },\n\n focus: function focus() {\n if (this.refs.fallbackButton) {\n this.refs.fallbackButton.focus();\n }\n },\n\n _onShowFallbackClick: function _onShowFallbackClick() {\n var url = this.props.matrixClient.getFallbackAuthUrl(this.props.loginType, this.props.authSessionId);\n this._popupWindow = window.open(url);\n },\n\n _onReceiveMessage: function _onReceiveMessage(event) {\n if (event.data === \"authDone\" && event.origin === this.props.matrixClient.getHomeserverUrl()) {\n this.props.submitAuthDict({});\n }\n },\n\n render: function render() {\n var errorSection = void 0;\n if (this.props.errorText) {\n errorSection = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.props.errorText\n );\n }\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'a',\n { ref: 'fallbackButton', onClick: this._onShowFallbackClick },\n (0, _languageHandler._t)(\"Start authentication\")\n ),\n errorSection\n );\n }\n});\n\nvar AuthEntryComponents = [PasswordAuthEntry, RecaptchaAuthEntry, EmailIdentityAuthEntry, MsisdnAuthEntry, TermsAuthEntry];\n\nfunction getEntryComponentForLoginType(loginType) {\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)(AuthEntryComponents), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var c = _step4.value;\n\n if (c.LOGIN_TYPE == loginType) {\n return c;\n }\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n return FallbackAuthEntry;\n}\n//# sourceMappingURL=InteractiveAuthEntryComponents.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _memoizeOne2.default)(function (displaced) {\n return displaced.reduce(function (map, displacement) {\n map[displacement.draggableId] = displacement;\n return map;\n }, {});\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _isWithin = require('../is-within');\n\nvar _isWithin2 = _interopRequireDefault(_isWithin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (frame) {\n var isWithinVertical = (0, _isWithin2.default)(frame.top, frame.bottom);\n var isWithinHorizontal = (0, _isWithin2.default)(frame.left, frame.right);\n\n return function (subject) {\n var isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n\n if (isContained) {\n return true;\n }\n\n var isPartiallyVisibleVertically = isWithinVertical(subject.top) || isWithinVertical(subject.bottom);\n var isPartiallyVisibleHorizontally = isWithinHorizontal(subject.left) || isWithinHorizontal(subject.right);\n\n var isPartiallyContained = isPartiallyVisibleVertically && isPartiallyVisibleHorizontally;\n\n if (isPartiallyContained) {\n return true;\n }\n\n var isBiggerVertically = subject.top < frame.top && subject.bottom > frame.bottom;\n var isBiggerHorizontally = subject.left < frame.left && subject.right > frame.right;\n\n var isTargetBiggerThanFrame = isBiggerVertically && isBiggerHorizontally;\n\n if (isTargetBiggerThanFrame) {\n return true;\n }\n\n var isTargetBiggerOnOneAxis = isBiggerVertically && isPartiallyVisibleHorizontally || isBiggerHorizontally && isPartiallyVisibleVertically;\n\n return isTargetBiggerOnOneAxis;\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _position = require('../position');\n\nvar _spacing = require('../spacing');\n\nvar _isPartiallyVisible = require('../visibility/is-partially-visible');\n\nvar _isPartiallyVisible2 = _interopRequireDefault(_isPartiallyVisible);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var draggable = _ref.draggable,\n destination = _ref.destination,\n newCenter = _ref.newCenter,\n viewport = _ref.viewport;\n\n var diff = (0, _position.subtract)(newCenter, draggable.page.withMargin.center);\n var shifted = (0, _spacing.offset)(draggable.page.withMargin, diff);\n\n return (0, _isPartiallyVisible2.default)({\n target: shifted,\n destination: destination,\n viewport: viewport\n });\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.css = exports.physics = undefined;\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar physics = exports.physics = function () {\n var base = {\n stiffness: 1000,\n damping: 60,\n\n precision: 0.99\n };\n\n var standard = (0, _extends3.default)({}, base);\n\n var fast = (0, _extends3.default)({}, base, {\n stiffness: base.stiffness * 2\n });\n\n return { standard: standard, fast: fast };\n}();\n\nvar css = exports.css = {\n outOfTheWay: 'transform 0.2s cubic-bezier(0.2, 0, 0, 1)'\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.lift = exports.dropAnimationFinished = exports.cancel = exports.drop = exports.completeDrop = exports.prepare = exports.clean = exports.crossAxisMoveBackward = exports.crossAxisMoveForward = exports.moveForward = exports.moveBackward = exports.moveByWindowScroll = exports.move = exports.updateDroppableDimensionIsEnabled = exports.updateDroppableDimensionScroll = exports.publishDroppableDimensions = exports.publishDraggableDimensions = exports.completeLift = exports.requestDimensions = undefined;\n\nvar _noImpact = require('./no-impact');\n\nvar _noImpact2 = _interopRequireDefault(_noImpact);\n\nvar _getNewHomeClientCenter = require('./get-new-home-client-center');\n\nvar _getNewHomeClientCenter2 = _interopRequireDefault(_getNewHomeClientCenter);\n\nvar _position = require('./position');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar origin = { x: 0, y: 0 };\n\nvar getScrollDiff = function getScrollDiff(_ref) {\n var initial = _ref.initial,\n current = _ref.current,\n droppable = _ref.droppable;\n\n var windowScrollDiff = (0, _position.subtract)(initial.windowScroll, current.windowScroll);\n\n var droppableScrollDiff = droppable ? droppable.viewport.frameScroll.diff.displacement : origin;\n\n return (0, _position.add)(windowScrollDiff, droppableScrollDiff);\n};\n\nvar requestDimensions = exports.requestDimensions = function requestDimensions(id) {\n return {\n type: 'REQUEST_DIMENSIONS',\n payload: id\n };\n};\n\nvar completeLift = exports.completeLift = function completeLift(id, client, windowScroll, isScrollAllowed) {\n return {\n type: 'COMPLETE_LIFT',\n payload: {\n id: id,\n client: client,\n windowScroll: windowScroll,\n isScrollAllowed: isScrollAllowed\n }\n };\n};\n\nvar publishDraggableDimensions = exports.publishDraggableDimensions = function publishDraggableDimensions(dimensions) {\n return {\n type: 'PUBLISH_DRAGGABLE_DIMENSIONS',\n payload: dimensions\n };\n};\n\nvar publishDroppableDimensions = exports.publishDroppableDimensions = function publishDroppableDimensions(dimensions) {\n return {\n type: 'PUBLISH_DROPPABLE_DIMENSIONS',\n payload: dimensions\n };\n};\n\nvar updateDroppableDimensionScroll = exports.updateDroppableDimensionScroll = function updateDroppableDimensionScroll(id, offset) {\n return {\n type: 'UPDATE_DROPPABLE_DIMENSION_SCROLL',\n payload: {\n id: id,\n offset: offset\n }\n };\n};\n\nvar updateDroppableDimensionIsEnabled = exports.updateDroppableDimensionIsEnabled = function updateDroppableDimensionIsEnabled(id, isEnabled) {\n return {\n type: 'UPDATE_DROPPABLE_DIMENSION_IS_ENABLED',\n payload: {\n id: id,\n isEnabled: isEnabled\n }\n };\n};\n\nvar move = exports.move = function move(id, client, windowScroll) {\n return {\n type: 'MOVE',\n payload: {\n id: id,\n client: client,\n windowScroll: windowScroll\n }\n };\n};\n\nvar moveByWindowScroll = exports.moveByWindowScroll = function moveByWindowScroll(id, windowScroll) {\n return {\n type: 'MOVE_BY_WINDOW_SCROLL',\n payload: {\n id: id,\n windowScroll: windowScroll\n }\n };\n};\n\nvar moveBackward = exports.moveBackward = function moveBackward(id) {\n return {\n type: 'MOVE_BACKWARD',\n payload: id\n };\n};\n\nvar moveForward = exports.moveForward = function moveForward(id) {\n return {\n type: 'MOVE_FORWARD',\n payload: id\n };\n};\n\nvar crossAxisMoveForward = exports.crossAxisMoveForward = function crossAxisMoveForward(id) {\n return {\n type: 'CROSS_AXIS_MOVE_FORWARD',\n payload: id\n };\n};\n\nvar crossAxisMoveBackward = exports.crossAxisMoveBackward = function crossAxisMoveBackward(id) {\n return {\n type: 'CROSS_AXIS_MOVE_BACKWARD',\n payload: id\n };\n};\n\nvar clean = exports.clean = function clean() {\n return {\n type: 'CLEAN',\n payload: null\n };\n};\n\nvar prepare = exports.prepare = function prepare() {\n return {\n type: 'PREPARE',\n payload: null\n };\n};\n\nvar animateDrop = function animateDrop(_ref2) {\n var trigger = _ref2.trigger,\n newHomeOffset = _ref2.newHomeOffset,\n impact = _ref2.impact,\n result = _ref2.result;\n return {\n type: 'DROP_ANIMATE',\n payload: {\n trigger: trigger,\n newHomeOffset: newHomeOffset,\n impact: impact,\n result: result\n }\n };\n};\n\nvar completeDrop = exports.completeDrop = function completeDrop(result) {\n return {\n type: 'DROP_COMPLETE',\n payload: result\n };\n};\n\nvar drop = exports.drop = function drop() {\n return function (dispatch, getState) {\n var state = getState();\n\n if (state.phase === 'PREPARING' || state.phase === 'COLLECTING_INITIAL_DIMENSIONS') {\n dispatch(clean());\n return;\n }\n\n if (state.phase !== 'DRAGGING') {\n console.error('not able to drop in phase: \\'' + state.phase + '\\'');\n dispatch(clean());\n return;\n }\n\n if (!state.drag) {\n console.error('not able to drop when there is invalid drag state', state);\n dispatch(clean());\n return;\n }\n\n var _state$drag = state.drag,\n impact = _state$drag.impact,\n initial = _state$drag.initial,\n current = _state$drag.current;\n\n var descriptor = initial.descriptor;\n var draggable = state.dimension.draggable[initial.descriptor.id];\n var home = state.dimension.droppable[draggable.descriptor.droppableId];\n var destination = impact.destination ? state.dimension.droppable[impact.destination.droppableId] : null;\n\n var source = {\n droppableId: descriptor.droppableId,\n index: descriptor.index\n };\n\n var result = {\n draggableId: descriptor.id,\n type: home.descriptor.type,\n source: source,\n destination: impact.destination\n };\n\n var newCenter = (0, _getNewHomeClientCenter2.default)({\n movement: impact.movement,\n draggable: draggable,\n draggables: state.dimension.draggable,\n destination: destination\n });\n\n var clientOffset = (0, _position.subtract)(newCenter, draggable.client.withMargin.center);\n var scrollDiff = getScrollDiff({\n initial: initial,\n current: current,\n droppable: destination || home\n });\n var newHomeOffset = (0, _position.add)(clientOffset, scrollDiff);\n\n var isAnimationRequired = !(0, _position.isEqual)(current.client.offset, newHomeOffset);\n\n if (!isAnimationRequired) {\n dispatch(completeDrop(result));\n return;\n }\n\n dispatch(animateDrop({\n trigger: 'DROP',\n newHomeOffset: newHomeOffset,\n impact: impact,\n result: result\n }));\n };\n};\n\nvar cancel = exports.cancel = function cancel() {\n return function (dispatch, getState) {\n var state = getState();\n\n if (state.phase !== 'DRAGGING') {\n dispatch(clean());\n return;\n }\n\n if (!state.drag) {\n console.error('invalid drag state', state);\n dispatch(clean());\n return;\n }\n\n var _state$drag2 = state.drag,\n initial = _state$drag2.initial,\n current = _state$drag2.current;\n\n var descriptor = initial.descriptor;\n var home = state.dimension.droppable[descriptor.droppableId];\n\n var source = {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n };\n\n var result = {\n draggableId: descriptor.id,\n type: home.descriptor.type,\n source: source,\n\n destination: null\n };\n\n var isAnimationRequired = !(0, _position.isEqual)(current.client.offset, origin);\n\n if (!isAnimationRequired) {\n dispatch(completeDrop(result));\n return;\n }\n\n var scrollDiff = getScrollDiff({ initial: initial, current: current, droppable: home });\n\n dispatch(animateDrop({\n trigger: 'CANCEL',\n newHomeOffset: scrollDiff,\n impact: _noImpact2.default,\n result: result\n }));\n };\n};\n\nvar dropAnimationFinished = exports.dropAnimationFinished = function dropAnimationFinished() {\n return function (dispatch, getState) {\n var state = getState();\n\n if (state.phase !== 'DROP_ANIMATING') {\n console.error('cannot end drop that is no longer animating', state);\n dispatch(clean());\n return;\n }\n\n if (!state.drop || !state.drop.pending) {\n console.error('cannot end drop that has no pending state', state);\n dispatch(clean());\n return;\n }\n\n dispatch(completeDrop(state.drop.pending.result));\n };\n};\n\nvar lift = exports.lift = function lift(id, client, windowScroll, isScrollAllowed) {\n return function (dispatch, getState) {\n var initial = getState();\n\n if (initial.phase === 'DROP_ANIMATING') {\n if (!initial.drop || !initial.drop.pending) {\n console.error('cannot flush drop animation if there is no pending');\n dispatch(clean());\n } else {\n dispatch(completeDrop(initial.drop.pending.result));\n }\n }\n\n dispatch(prepare());\n\n setTimeout(function () {\n var state = getState();\n\n if (state.phase !== 'PREPARING') {\n return;\n }\n\n dispatch(requestDimensions(id));\n\n setTimeout(function () {\n var newState = getState();\n\n if (newState.phase !== 'COLLECTING_INITIAL_DIMENSIONS') {\n return;\n }\n\n dispatch(completeLift(id, client, windowScroll, isScrollAllowed));\n });\n });\n };\n};","\n\nexport default (function (fn) {\n var lastArgs = [];\n var frameId = null;\n\n var wrapperFn = function wrapperFn() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n lastArgs = args;\n\n if (frameId) {\n return frameId;\n }\n\n frameId = requestAnimationFrame(function () {\n frameId = null;\n fn.apply(undefined, lastArgs);\n });\n\n return frameId;\n };\n\n wrapperFn.cancel = function () {\n if (!frameId) {\n return;\n }\n\n cancelAnimationFrame(frameId);\n frameId = null;\n };\n\n var resultFn = wrapperFn;\n\n return resultFn;\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _placeholder = require('./placeholder');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_placeholder).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = {\n noWobble: { stiffness: 170, damping: 26 }, // the default, if nothing provided\n gentle: { stiffness: 120, damping: 14 },\n wobbly: { stiffness: 180, damping: 12 },\n stiff: { stiffness: 210, damping: 20 }\n};\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keyCodes = require('../../key-codes');\n\nvar keyCodes = _interopRequireWildcard(_keyCodes);\n\nvar _stopEvent = require('./stop-event');\n\nvar _stopEvent2 = _interopRequireDefault(_stopEvent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar blocked = [keyCodes.enter, keyCodes.tab];\n\nexports.default = function (event) {\n if (blocked.indexOf(event.keyCode) >= 0) {\n (0, _stopEvent2.default)(event);\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getArea = require('../state/get-area');\n\nvar _getArea2 = _interopRequireDefault(_getArea);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (el) {\n return (0, _getArea2.default)(el.getBoundingClientRect()).center;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/** The types of page which can be shown by the LoggedInView */\nexports.default = {\n HomePage: \"home_page\",\n RoomView: \"room_view\",\n UserSettings: \"user_settings\",\n CreateRoom: \"create_room\",\n RoomDirectory: \"room_directory\",\n UserView: \"user_view\",\n GroupView: \"group_view\",\n MyGroups: \"my_groups\"\n};\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=PageTypes.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar Matrix = _interopRequireWildcard(_matrixJsSdk);\n\nvar _SettingsStore = require('./settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\n/*\n Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nexports.default = {\n getDevices: function getDevices() {\n // Only needed for Electron atm, though should work in modern browsers\n // once permission has been granted to the webapp\n return navigator.mediaDevices.enumerateDevices().then(function (devices) {\n var audiooutput = [];\n var audioinput = [];\n var videoinput = [];\n\n if (devices.some(function (device) {\n return !device.label;\n })) return false;\n\n devices.forEach(function (device) {\n switch (device.kind) {\n case 'audiooutput':\n audiooutput.push(device);break;\n case 'audioinput':\n audioinput.push(device);break;\n case 'videoinput':\n videoinput.push(device);break;\n }\n });\n\n // console.log(\"Loaded WebRTC Devices\", mediaDevices);\n return {\n audiooutput: audiooutput,\n audioinput: audioinput,\n videoinput: videoinput\n };\n }, function (error) {\n console.log('Unable to refresh WebRTC Devices: ', error);\n });\n },\n\n loadDevices: function loadDevices() {\n var audioOutDeviceId = _SettingsStore2.default.getValue(\"webrtc_audiooutput\");\n var audioDeviceId = _SettingsStore2.default.getValue(\"webrtc_audioinput\");\n var videoDeviceId = _SettingsStore2.default.getValue(\"webrtc_videoinput\");\n\n Matrix.setMatrixCallAudioOutput(audioOutDeviceId);\n Matrix.setMatrixCallAudioInput(audioDeviceId);\n Matrix.setMatrixCallVideoInput(videoDeviceId);\n },\n\n setAudioOutput: function setAudioOutput(deviceId) {\n _SettingsStore2.default.setValue(\"webrtc_audiooutput\", null, _SettingsStore.SettingLevel.DEVICE, deviceId);\n Matrix.setMatrixCallAudioOutput(deviceId);\n },\n\n setAudioInput: function setAudioInput(deviceId) {\n _SettingsStore2.default.setValue(\"webrtc_audioinput\", null, _SettingsStore.SettingLevel.DEVICE, deviceId);\n Matrix.setMatrixCallAudioInput(deviceId);\n },\n\n setVideoInput: function setVideoInput(deviceId) {\n _SettingsStore2.default.setValue(\"webrtc_videoinput\", null, _SettingsStore.SettingLevel.DEVICE, deviceId);\n Matrix.setMatrixCallVideoInput(deviceId);\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=CallMediaHandler.js.map","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxStoreGroup\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * FluxStoreGroup allows you to execute a callback on every dispatch after\n * waiting for each of the given stores.\n */\n\nvar FluxStoreGroup = (function () {\n function FluxStoreGroup(stores, callback) {\n var _this = this;\n\n _classCallCheck(this, FluxStoreGroup);\n\n this._dispatcher = _getUniformDispatcher(stores);\n\n // precompute store tokens\n var storeTokens = stores.map(function (store) {\n return store.getDispatchToken();\n });\n\n // register with the dispatcher\n this._dispatchToken = this._dispatcher.register(function (payload) {\n _this._dispatcher.waitFor(storeTokens);\n callback();\n });\n }\n\n FluxStoreGroup.prototype.release = function release() {\n this._dispatcher.unregister(this._dispatchToken);\n };\n\n return FluxStoreGroup;\n})();\n\nfunction _getUniformDispatcher(stores) {\n !(stores && stores.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Must provide at least one store to FluxStoreGroup') : invariant(false) : undefined;\n var dispatcher = stores[0].getDispatcher();\n if (process.env.NODE_ENV !== 'production') {\n for (var _iterator = stores, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var store = _ref;\n\n !(store.getDispatcher() === dispatcher) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'All stores in a FluxStoreGroup must use the same dispatcher') : invariant(false) : undefined;\n }\n }\n return dispatcher;\n}\n\nmodule.exports = FluxStoreGroup;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxReduceStore\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FluxStore = require('./FluxStore');\n\nvar abstractMethod = require('./abstractMethod');\nvar invariant = require('fbjs/lib/invariant');\n\nvar FluxReduceStore = (function (_FluxStore) {\n _inherits(FluxReduceStore, _FluxStore);\n\n function FluxReduceStore(dispatcher) {\n _classCallCheck(this, FluxReduceStore);\n\n _FluxStore.call(this, dispatcher);\n this._state = this.getInitialState();\n }\n\n /**\n * Getter that exposes the entire state of this store. If your state is not\n * immutable you should override this and not expose _state directly.\n */\n\n FluxReduceStore.prototype.getState = function getState() {\n return this._state;\n };\n\n /**\n * Constructs the initial state for this store. This is called once during\n * construction of the store.\n */\n\n FluxReduceStore.prototype.getInitialState = function getInitialState() {\n return abstractMethod('FluxReduceStore', 'getInitialState');\n };\n\n /**\n * Used to reduce a stream of actions coming from the dispatcher into a\n * single state object\n */\n\n FluxReduceStore.prototype.reduce = function reduce(state, action) {\n return abstractMethod('FluxReduceStore', 'reduce');\n };\n\n /**\n * Checks if two versions of state are the same. You do not need to override\n * this if your state is immutable.\n */\n\n FluxReduceStore.prototype.areEqual = function areEqual(one, two) {\n return one === two;\n };\n\n /**\n * Use reduce and track _state instead of using __onDispatch\n */\n\n FluxReduceStore.prototype.__invokeOnDispatch = function __invokeOnDispatch(action) {\n this.__changed = false;\n\n // reduce the stream of incoming actions to state, update when necessary\n var startingState = this._state;\n var endingState = this.reduce(startingState, action);\n\n // This means your ending state should never be undefined\n !(endingState !== undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s returned undefined from reduce(...), did you forget to return ' + 'state in the default case? (use null if this was intentional)', this.constructor.name) : invariant(false) : undefined;\n\n if (!this.areEqual(startingState, endingState)) {\n this._state = endingState;\n\n // `__emitChange()` sets `this.__changed` to true and then the actual\n // change will be fired from the emitter at the end of the dispatch, this\n // is required in order to support methods like `hasChanged()`\n this.__emitChange();\n }\n\n if (this.__changed) {\n this.__emitter.emit(this.__changeEvent);\n }\n };\n\n return FluxReduceStore;\n})(FluxStore);\n\nmodule.exports = FluxReduceStore;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxStore\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _require = require('fbemitter');\n\nvar EventEmitter = _require.EventEmitter;\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * This class should be extended by the stores in your application, like so:\n *\n * var FluxStore = require('FluxStore');\n * var MyDispatcher = require('MyDispatcher');\n *\n * var _foo;\n *\n * class MyStore extends FluxStore {\n *\n * getFoo() {\n * return _foo;\n * }\n *\n * __onDispatch = function(action) {\n * switch(action.type) {\n *\n * case 'an-action':\n * changeState(action.someData);\n * this.__emitChange();\n * break;\n *\n * case 'another-action':\n * changeStateAnotherWay(action.otherData);\n * this.__emitChange();\n * break;\n *\n * default:\n * // no op\n * }\n * }\n *\n * }\n *\n * module.exports = new MyStore(MyDispatcher);\n */\n\nvar FluxStore = (function () {\n\n /**\n * @public\n * @param {Dispatcher} dispatcher\n */\n\n function FluxStore(dispatcher) {\n var _this = this;\n\n _classCallCheck(this, FluxStore);\n\n this.__className = this.constructor.name;\n\n this.__changed = false;\n this.__changeEvent = 'change';\n this.__dispatcher = dispatcher;\n this.__emitter = new EventEmitter();\n this._dispatchToken = dispatcher.register(function (payload) {\n _this.__invokeOnDispatch(payload);\n });\n }\n\n /**\n * @public\n * @param {function} callback\n * @return {object} EmitterSubscription that can be used with\n * SubscriptionsHandler or directly used to release the subscription.\n */\n\n FluxStore.prototype.addListener = function addListener(callback) {\n return this.__emitter.addListener(this.__changeEvent, callback);\n };\n\n /**\n * @public\n * @return {Dispatcher} The dispatcher that this store is registered with.\n */\n\n FluxStore.prototype.getDispatcher = function getDispatcher() {\n return this.__dispatcher;\n };\n\n /**\n * @public\n * @return {string} A string the dispatcher uses to identify each store's\n * registered callback. This is used with the dispatcher's waitFor method\n * to declaratively depend on other stores updating themselves first.\n */\n\n FluxStore.prototype.getDispatchToken = function getDispatchToken() {\n return this._dispatchToken;\n };\n\n /**\n * @public\n * @return {boolean} Whether the store has changed during the most recent\n * dispatch.\n */\n\n FluxStore.prototype.hasChanged = function hasChanged() {\n !this.__dispatcher.isDispatching() ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.hasChanged(): Must be invoked while dispatching.', this.__className) : invariant(false) : undefined;\n return this.__changed;\n };\n\n /**\n * @protected\n * Emit an event notifying listeners that the state of the store has changed.\n */\n\n FluxStore.prototype.__emitChange = function __emitChange() {\n !this.__dispatcher.isDispatching() ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.__emitChange(): Must be invoked while dispatching.', this.__className) : invariant(false) : undefined;\n this.__changed = true;\n };\n\n /**\n * This method encapsulates all logic for invoking __onDispatch. It should\n * be used for things like catching changes and emitting them after the\n * subclass has handled a payload.\n *\n * @protected\n * @param {object} payload The data dispatched by the dispatcher, describing\n * something that has happened in the real world: the user clicked, the\n * server responded, time passed, etc.\n */\n\n FluxStore.prototype.__invokeOnDispatch = function __invokeOnDispatch(payload) {\n this.__changed = false;\n this.__onDispatch(payload);\n if (this.__changed) {\n this.__emitter.emit(this.__changeEvent);\n }\n };\n\n /**\n * The callback that will be registered with the dispatcher during\n * instantiation. Subclasses must override this method. This callback is the\n * only way the store receives new data.\n *\n * @protected\n * @override\n * @param {object} payload The data dispatched by the dispatcher, describing\n * something that has happened in the real world: the user clicked, the\n * server responded, time passed, etc.\n */\n\n FluxStore.prototype.__onDispatch = function __onDispatch(payload) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s has not overridden FluxStore.__onDispatch(), which is required', this.__className) : invariant(false) : undefined;\n };\n\n return FluxStore;\n})();\n\nmodule.exports = FluxStore;\n\n// private\n\n// protected, available to subclasses","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n * \n * @providesModule EmitterSubscription\n * @typechecks\n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar EventSubscription = require('./EventSubscription');\n\n/**\n * EmitterSubscription represents a subscription with listener and context data.\n */\n\nvar EmitterSubscription = (function (_EventSubscription) {\n _inherits(EmitterSubscription, _EventSubscription);\n\n /**\n * @param {EventSubscriptionVendor} subscriber - The subscriber that controls\n * this subscription\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n\n function EmitterSubscription(subscriber, listener, context) {\n _classCallCheck(this, EmitterSubscription);\n\n _EventSubscription.call(this, subscriber);\n this.listener = listener;\n this.context = context;\n }\n\n return EmitterSubscription;\n})(EventSubscription);\n\nmodule.exports = EmitterSubscription;","module.exports = { \"default\": require(\"core-js/library/fn/number/max-safe-integer\"), __esModule: true };","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _Analytics = require('../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _actionCreators = require('./actionCreators');\n\nvar _TagOrderStore = require('../stores/TagOrderStore');\n\nvar _TagOrderStore2 = _interopRequireDefault(_TagOrderStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TagOrderActions = {};\n\n/**\n * Creates an action thunk that will do an asynchronous request to\n * move a tag in TagOrderStore to destinationIx.\n *\n * @param {MatrixClient} matrixClient the matrix client to set the\n * account data on.\n * @param {string} tag the tag to move.\n * @param {number} destinationIx the new position of the tag.\n * @returns {function} an action thunk that will dispatch actions\n * indicating the status of the request.\n * @see asyncAction\n */\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nTagOrderActions.moveTag = function (matrixClient, tag, destinationIx) {\n // Only commit tags if the state is ready, i.e. not null\n var tags = _TagOrderStore2.default.getOrderedTags();\n var removedTags = _TagOrderStore2.default.getRemovedTagsAccountData() || [];\n if (!tags) {\n return;\n }\n\n tags = tags.filter(function (t) {\n return t !== tag;\n });\n tags = [].concat((0, _toConsumableArray3.default)(tags.slice(0, destinationIx)), [tag], (0, _toConsumableArray3.default)(tags.slice(destinationIx)));\n\n removedTags = removedTags.filter(function (t) {\n return t !== tag;\n });\n\n var storeId = _TagOrderStore2.default.getStoreId();\n\n return (0, _actionCreators.asyncAction)('TagOrderActions.moveTag', function () {\n _Analytics2.default.trackEvent('TagOrderActions', 'commitTagOrdering');\n return matrixClient.setAccountData('im.vector.web.tag_ordering', { tags: tags, removedTags: removedTags, _storeId: storeId });\n }, function () {\n // For an optimistic update\n return { tags: tags, removedTags: removedTags };\n });\n};\n\n/**\n * Creates an action thunk that will do an asynchronous request to\n * label a tag as removed in im.vector.web.tag_ordering account data.\n *\n * The reason this is implemented with new state `removedTags` is that\n * we incrementally and initially populate `tags` with groups that\n * have been joined. If we remove a group from `tags`, it will just\n * get added (as it looks like a group we've recently joined).\n *\n * NB: If we ever support adding of tags (which is planned), we should\n * take special care to remove the tag from `removedTags` when we add\n * it.\n *\n * @param {MatrixClient} matrixClient the matrix client to set the\n * account data on.\n * @param {string} tag the tag to remove.\n * @returns {function} an action thunk that will dispatch actions\n * indicating the status of the request.\n * @see asyncAction\n */\nTagOrderActions.removeTag = function (matrixClient, tag) {\n // Don't change tags, just removedTags\n var tags = _TagOrderStore2.default.getOrderedTags();\n var removedTags = _TagOrderStore2.default.getRemovedTagsAccountData() || [];\n\n if (removedTags.includes(tag)) {\n // Return a thunk that doesn't do anything, we don't even need\n // an asynchronous action here, the tag is already removed.\n return function () {};\n }\n\n removedTags.push(tag);\n\n var storeId = _TagOrderStore2.default.getStoreId();\n\n return (0, _actionCreators.asyncAction)('TagOrderActions.removeTag', function () {\n _Analytics2.default.trackEvent('TagOrderActions', 'removeTag');\n return matrixClient.setAccountData('im.vector.web.tag_ordering', { tags: tags, removedTags: removedTags, _storeId: storeId });\n }, function () {\n // For an optimistic update\n return { removedTags: removedTags };\n });\n};\n\nexports.default = TagOrderActions;\nmodule.exports = exports['default'];\n//# sourceMappingURL=TagOrderActions.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _actionCreators = require('./actionCreators');\n\nvar _RoomListStore = require('../stores/RoomListStore');\n\nvar _RoomListStore2 = _interopRequireDefault(_RoomListStore);\n\nvar _Modal = require('../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _Rooms = require('../Rooms');\n\nvar Rooms = _interopRequireWildcard(_Rooms);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar RoomListActions = {};\n\n/**\n * Creates an action thunk that will do an asynchronous request to\n * tag room.\n *\n * @param {MatrixClient} matrixClient the matrix client to set the\n * account data on.\n * @param {Room} room the room to tag.\n * @param {string} oldTag the tag to remove (unless oldTag ==== newTag)\n * @param {string} newTag the tag with which to tag the room.\n * @param {?number} oldIndex the previous position of the room in the\n * list of rooms.\n * @param {?number} newIndex the new position of the room in the list\n * of rooms.\n * @returns {function} an action thunk.\n * @see asyncAction\n */\nRoomListActions.tagRoom = function (matrixClient, room, oldTag, newTag, oldIndex, newIndex) {\n var metaData = null;\n\n // Is the tag ordered manually?\n if (newTag && !newTag.match(/^(m\\.lowpriority|im\\.vector\\.fake\\.(invite|recent|direct|archived))$/)) {\n var lists = _RoomListStore2.default.getRoomLists();\n var newList = [].concat((0, _toConsumableArray3.default)(lists[newTag]));\n\n newList.sort(function (a, b) {\n return a.tags[newTag].order - b.tags[newTag].order;\n });\n\n // If the room was moved \"down\" (increasing index) in the same list we\n // need to use the orders of the tiles with indices shifted by +1\n var offset = newTag === oldTag && oldIndex < newIndex ? 1 : 0;\n\n var indexBefore = offset + newIndex - 1;\n var indexAfter = offset + newIndex;\n\n var prevOrder = indexBefore <= 0 ? 0 : newList[indexBefore].tags[newTag].order;\n var nextOrder = indexAfter >= newList.length ? 1 : newList[indexAfter].tags[newTag].order;\n\n metaData = {\n order: (prevOrder + nextOrder) / 2.0\n };\n }\n\n return (0, _actionCreators.asyncAction)('RoomListActions.tagRoom', function () {\n var promises = [];\n var roomId = room.roomId;\n\n // Evil hack to get DMs behaving\n if (oldTag === undefined && newTag === 'im.vector.fake.direct' || oldTag === 'im.vector.fake.direct' && newTag === undefined) {\n return Rooms.guessAndSetDMRoom(room, newTag === 'im.vector.fake.direct').catch(function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to set direct chat tag \" + err);\n _Modal2.default.createTrackedDialog('Failed to set direct chat tag', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to set direct chat tag'),\n description: err && err.message ? err.message : (0, _languageHandler._t)('Operation failed')\n });\n });\n }\n\n var hasChangedSubLists = oldTag !== newTag;\n\n // More evilness: We will still be dealing with moving to favourites/low prio,\n // but we avoid ever doing a request with 'im.vector.fake.direct`.\n //\n // if we moved lists, remove the old tag\n if (oldTag && oldTag !== 'im.vector.fake.direct' && hasChangedSubLists) {\n var promiseToDelete = matrixClient.deleteRoomTag(roomId, oldTag).catch(function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to remove tag \" + oldTag + \" from room: \" + err);\n _Modal2.default.createTrackedDialog('Failed to remove tag from room', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to remove tag %(tagName)s from room', { tagName: oldTag }),\n description: err && err.message ? err.message : (0, _languageHandler._t)('Operation failed')\n });\n });\n\n promises.push(promiseToDelete);\n }\n\n // if we moved lists or the ordering changed, add the new tag\n if (newTag && newTag !== 'im.vector.fake.direct' && (hasChangedSubLists || metaData)) {\n // metaData is the body of the PUT to set the tag, so it must\n // at least be an empty object.\n metaData = metaData || {};\n\n var promiseToAdd = matrixClient.setRoomTag(roomId, newTag, metaData).catch(function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to add tag \" + newTag + \" to room: \" + err);\n _Modal2.default.createTrackedDialog('Failed to add tag to room', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to add tag %(tagName)s to room', { tagName: newTag }),\n description: err && err.message ? err.message : (0, _languageHandler._t)('Operation failed')\n });\n\n throw err;\n });\n\n promises.push(promiseToAdd);\n }\n\n return _promise2.default.all(promises);\n }, function () {\n // For an optimistic update\n return {\n room: room, oldTag: oldTag, newTag: newTag, metaData: metaData\n };\n });\n};\n\nexports.default = RoomListActions;\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomListActions.js.map","module.exports = { \"default\": require(\"core-js/library/fn/map\"), __esModule: true };","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.loadSession = undefined;\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\n/**\n * Called at startup, to attempt to build a logged-in Matrix session. It tries\n * a number of things:\n *\n *\n * 1. if we have a guest access token in the fragment query params, it uses\n * that.\n *\n * 2. if an access token is stored in local storage (from a previous session),\n * it uses that.\n *\n * 3. it attempts to auto-register as a guest user.\n *\n * If any of steps 1-4 are successful, it will call {_doSetLoggedIn}, which in\n * turn will raise on_logged_in and will_start_client events.\n *\n * @param {object} opts\n *\n * @param {object} opts.fragmentQueryParams: string->string map of the\n * query-parameters extracted from the #-fragment of the starting URI.\n *\n * @param {boolean} opts.enableGuest: set to true to enable guest access tokens\n * and auto-guest registrations.\n *\n * @params {string} opts.guestHsUrl: homeserver URL. Only used if enableGuest is\n * true; defines the HS to register against.\n *\n * @params {string} opts.guestIsUrl: homeserver URL. Only used if enableGuest is\n * true; defines the IS to use.\n *\n * @returns {Promise} a promise which resolves when the above process completes.\n * Resolves to `true` if we ended up starting a session, or `false` if we\n * failed.\n */\nvar loadSession = exports.loadSession = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(opts) {\n var enableGuest, guestHsUrl, guestIsUrl, fragmentQueryParams, defaultDeviceDisplayName, success;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n enableGuest = opts.enableGuest || false;\n guestHsUrl = opts.guestHsUrl;\n guestIsUrl = opts.guestIsUrl;\n fragmentQueryParams = opts.fragmentQueryParams || {};\n defaultDeviceDisplayName = opts.defaultDeviceDisplayName;\n\n\n if (!guestHsUrl) {\n console.warn(\"Cannot enable guest access: can't determine HS URL to use\");\n enableGuest = false;\n }\n\n if (!(enableGuest && fragmentQueryParams.guest_user_id && fragmentQueryParams.guest_access_token)) {\n _context.next = 10;\n break;\n }\n\n console.log(\"Using guest access credentials\");\n return _context.abrupt('return', _doSetLoggedIn({\n userId: fragmentQueryParams.guest_user_id,\n accessToken: fragmentQueryParams.guest_access_token,\n homeserverUrl: guestHsUrl,\n identityServerUrl: guestIsUrl,\n guest: true\n }, true).then(function () {\n return true;\n }));\n\n case 10:\n _context.next = 12;\n return (0, _bluebird.resolve)(_restoreFromLocalStorage());\n\n case 12:\n success = _context.sent;\n\n if (!success) {\n _context.next = 15;\n break;\n }\n\n return _context.abrupt('return', true);\n\n case 15:\n if (!enableGuest) {\n _context.next = 17;\n break;\n }\n\n return _context.abrupt('return', _registerAsGuest(guestHsUrl, guestIsUrl, defaultDeviceDisplayName));\n\n case 17:\n return _context.abrupt('return', false);\n\n case 20:\n _context.prev = 20;\n _context.t0 = _context['catch'](0);\n return _context.abrupt('return', _handleLoadSessionFailure(_context.t0));\n\n case 23:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 20]]);\n }));\n\n return function loadSession(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * @param {Object} queryParams string->string map of the\n * query-parameters extracted from the real query-string of the starting\n * URI.\n *\n * @param {String} defaultDeviceDisplayName\n *\n * @returns {Promise} promise which resolves to true if we completed the token\n * login, else false\n */\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// returns a promise which resolves to true if a session is found in\n// localstorage\n//\n// N.B. Lifecycle.js should not maintain any further localStorage state, we\n// are moving towards using SessionStore to keep track of state related\n// to the current session (which is typically backed by localStorage).\n//\n// The plan is to gradually move the localStorage access done here into\n// SessionStore to avoid bugs where the view becomes out-of-sync with\n// localStorage (e.g. teamToken, isGuest etc.)\nvar _restoreFromLocalStorage = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var hsUrl, isUrl, accessToken, userId, deviceId, isGuest;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (localStorage) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt('return', false);\n\n case 2:\n hsUrl = localStorage.getItem(\"mx_hs_url\");\n isUrl = localStorage.getItem(\"mx_is_url\") || 'https://matrix.org';\n accessToken = localStorage.getItem(\"mx_access_token\");\n userId = localStorage.getItem(\"mx_user_id\");\n deviceId = localStorage.getItem(\"mx_device_id\");\n isGuest = void 0;\n\n if (localStorage.getItem(\"mx_is_guest\") !== null) {\n isGuest = localStorage.getItem(\"mx_is_guest\") === \"true\";\n } else {\n // legacy key name\n isGuest = localStorage.getItem(\"matrix-is-guest\") === \"true\";\n }\n\n if (!(accessToken && userId && hsUrl)) {\n _context2.next = 16;\n break;\n }\n\n console.log('Restoring session for ' + userId);\n _context2.next = 13;\n return (0, _bluebird.resolve)(_doSetLoggedIn({\n userId: userId,\n deviceId: deviceId,\n accessToken: accessToken,\n homeserverUrl: hsUrl,\n identityServerUrl: isUrl,\n guest: isGuest\n }, false));\n\n case 13:\n return _context2.abrupt('return', true);\n\n case 16:\n console.log(\"No previous session found.\");\n return _context2.abrupt('return', false);\n\n case 18:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function _restoreFromLocalStorage() {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * fires on_logging_in, optionally clears localstorage, persists new credentials\n * to localstorage, starts the new client.\n *\n * @param {MatrixClientCreds} credentials\n * @param {Boolean} clearStorage\n *\n * @returns {Promise} promise which resolves to the new MatrixClient once it has been started\n */\nvar _doSetLoggedIn = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(credentials, clearStorage) {\n var teamPromise;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n credentials.guest = Boolean(credentials.guest);\n\n console.log(\"setLoggedIn: mxid: \" + credentials.userId + \" deviceId: \" + credentials.deviceId + \" guest: \" + credentials.guest + \" hs: \" + credentials.homeserverUrl);\n\n // This is dispatched to indicate that the user is still in the process of logging in\n // because `teamPromise` may take some time to resolve, breaking the assumption that\n // `setLoggedIn` takes an \"instant\" to complete, and dispatch `on_logged_in` a few ms\n // later than MatrixChat might assume.\n //\n // we fire it *synchronously* to make sure it fires before on_logged_in.\n // (dis.dispatch uses `setTimeout`, which does not guarantee ordering.)\n _dispatcher2.default.dispatch({ action: 'on_logging_in' }, true);\n\n if (!clearStorage) {\n _context3.next = 6;\n break;\n }\n\n _context3.next = 6;\n return (0, _bluebird.resolve)(_clearStorage());\n\n case 6:\n\n _Analytics2.default.setLoggedIn(credentials.guest, credentials.homeserverUrl, credentials.identityServerUrl);\n\n // Resolves by default\n teamPromise = _bluebird2.default.resolve(null);\n\n\n if (localStorage) {\n try {\n _persistCredentialsToLocalStorage(credentials);\n\n // The user registered as a PWLU (PassWord-Less User), the generated password\n // is cached here such that the user can change it at a later time.\n if (credentials.password) {\n // Update SessionStore\n _dispatcher2.default.dispatch({\n action: 'cached_password',\n cachedPassword: credentials.password\n });\n }\n } catch (e) {\n console.warn(\"Error using local storage: can't persist session!\", e);\n }\n\n if (rtsClient && !credentials.guest) {\n teamPromise = rtsClient.login(credentials.userId).then(function (body) {\n if (body.team_token) {\n localStorage.setItem(\"mx_team_token\", body.team_token);\n }\n return body.team_token;\n }, function (err) {\n console.warn('Failed to get team token on login: ' + err);\n return null;\n });\n }\n } else {\n console.warn(\"No local storage available: can't persist session!\");\n }\n\n _MatrixClientPeg2.default.replaceUsingCreds(credentials);\n\n teamPromise.then(function (teamToken) {\n _dispatcher2.default.dispatch({ action: 'on_logged_in', teamToken: teamToken });\n });\n\n _context3.next = 13;\n return (0, _bluebird.resolve)(startMatrixClient());\n\n case 13:\n return _context3.abrupt('return', _MatrixClientPeg2.default.get());\n\n case 14:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function _doSetLoggedIn(_x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * Starts the matrix client and all other react-sdk services that\n * listen for events while a session is logged in.\n */\nvar startMatrixClient = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n console.log('Lifecycle: Starting MatrixClient');\n\n // dispatch this before starting the matrix client: it's used\n // to add listeners for the 'sync' event so otherwise we'd have\n // a race condition (and we need to dispatch synchronously for this\n // to work).\n _dispatcher2.default.dispatch({ action: 'will_start_client' }, true);\n\n _Notifier2.default.start();\n _UserActivity2.default.start();\n _Presence2.default.start();\n _DMRoomMap2.default.makeShared().start();\n _ActiveWidgetStore2.default.start();\n\n _context4.next = 9;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.start());\n\n case 9:\n\n // dispatch that we finished starting up to wire up any other bits\n // of the matrix client that cannot be set prior to starting up.\n _dispatcher2.default.dispatch({ action: 'client_started' });\n\n case 10:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n return function startMatrixClient() {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/*\n * Stops a running client and all related services, and clears persistent\n * storage. Used after a session has been logged out.\n */\n\n\nexports.attemptTokenLogin = attemptTokenLogin;\nexports.handleInvalidStoreError = handleInvalidStoreError;\nexports.initRtsClient = initRtsClient;\nexports.setLoggedIn = setLoggedIn;\nexports.logout = logout;\nexports.isLoggingOut = isLoggingOut;\nexports.onLoggedOut = onLoggedOut;\nexports.stopMatrixClient = stopMatrixClient;\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _createMatrixClient = require('./utils/createMatrixClient');\n\nvar _createMatrixClient2 = _interopRequireDefault(_createMatrixClient);\n\nvar _Analytics = require('./Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _Notifier = require('./Notifier');\n\nvar _Notifier2 = _interopRequireDefault(_Notifier);\n\nvar _UserActivity = require('./UserActivity');\n\nvar _UserActivity2 = _interopRequireDefault(_UserActivity);\n\nvar _Presence = require('./Presence');\n\nvar _Presence2 = _interopRequireDefault(_Presence);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _DMRoomMap = require('./utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _RtsClient = require('./RtsClient');\n\nvar _RtsClient2 = _interopRequireDefault(_RtsClient);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ActiveWidgetStore = require('./stores/ActiveWidgetStore');\n\nvar _ActiveWidgetStore2 = _interopRequireDefault(_ActiveWidgetStore);\n\nvar _PlatformPeg = require('./PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction attemptTokenLogin(queryParams, defaultDeviceDisplayName) {\n if (!queryParams.loginToken) {\n return _bluebird2.default.resolve(false);\n }\n\n if (!queryParams.homeserver) {\n console.warn(\"Cannot log in with token: can't determine HS URL to use\");\n return _bluebird2.default.resolve(false);\n }\n\n // create a temporary MatrixClient to do the login\n var client = _matrixJsSdk2.default.createClient({\n baseUrl: queryParams.homeserver\n });\n\n return client.login(\"m.login.token\", {\n token: queryParams.loginToken,\n initial_device_display_name: defaultDeviceDisplayName\n }).then(function (data) {\n console.log(\"Logged in with token\");\n return _clearStorage().then(function () {\n _persistCredentialsToLocalStorage({\n userId: data.user_id,\n deviceId: data.device_id,\n accessToken: data.access_token,\n homeserverUrl: queryParams.homeserver,\n identityServerUrl: queryParams.identityServer,\n guest: false\n });\n return true;\n });\n }).catch(function (err) {\n console.error(\"Failed to log in with login token: \" + err + \" \" + err.data);\n return false;\n });\n}\n\nfunction handleInvalidStoreError(e) {\n if (e.reason === _matrixJsSdk2.default.InvalidStoreError.TOGGLED_LAZY_LOADING) {\n return _bluebird2.default.resolve().then(function () {\n var lazyLoadEnabled = e.value;\n if (lazyLoadEnabled) {\n var LazyLoadingResyncDialog = _index2.default.getComponent(\"views.dialogs.LazyLoadingResyncDialog\");\n return new _bluebird2.default(function (resolve) {\n _Modal2.default.createDialog(LazyLoadingResyncDialog, {\n onFinished: resolve\n });\n });\n } else {\n // show warning about simultaneous use\n // between LL/non-LL version on same host.\n // as disabling LL when previously enabled\n // is a strong indicator of this (/develop & /app)\n var LazyLoadingDisabledDialog = _index2.default.getComponent(\"views.dialogs.LazyLoadingDisabledDialog\");\n return new _bluebird2.default(function (resolve) {\n _Modal2.default.createDialog(LazyLoadingDisabledDialog, {\n onFinished: resolve,\n host: window.location.host\n });\n });\n }\n }).then(function () {\n return _MatrixClientPeg2.default.get().store.deleteAllData();\n }).then(function () {\n _PlatformPeg2.default.get().reload();\n });\n }\n}\n\nfunction _registerAsGuest(hsUrl, isUrl, defaultDeviceDisplayName) {\n console.log('Doing guest login on ' + hsUrl);\n\n // TODO: we should probably de-duplicate this and Login.loginAsGuest.\n // Not really sure where the right home for it is.\n\n // create a temporary MatrixClient to do the login\n var client = _matrixJsSdk2.default.createClient({\n baseUrl: hsUrl\n });\n\n return client.registerGuest({\n body: {\n initial_device_display_name: defaultDeviceDisplayName\n }\n }).then(function (creds) {\n console.log('Registered as guest: ' + creds.user_id);\n return _doSetLoggedIn({\n userId: creds.user_id,\n deviceId: creds.device_id,\n accessToken: creds.access_token,\n homeserverUrl: hsUrl,\n identityServerUrl: isUrl,\n guest: true\n }, true).then(function () {\n return true;\n });\n }, function (err) {\n console.error(\"Failed to register as guest: \" + err + \" \" + err.data);\n return false;\n });\n}\n\nfunction _handleLoadSessionFailure(e) {\n console.log(\"Unable to load session\", e);\n\n var def = _bluebird2.default.defer();\n var SessionRestoreErrorDialog = _index2.default.getComponent('views.dialogs.SessionRestoreErrorDialog');\n\n _Modal2.default.createTrackedDialog('Session Restore Error', '', SessionRestoreErrorDialog, {\n error: e.message,\n onFinished: function onFinished(success) {\n def.resolve(success);\n }\n });\n\n return def.promise.then(function (success) {\n if (success) {\n // user clicked continue.\n _clearStorage();\n return false;\n }\n\n // try, try again\n return loadSession();\n });\n}\n\nvar rtsClient = null;\nfunction initRtsClient(url) {\n if (url) {\n rtsClient = new _RtsClient2.default(url);\n } else {\n rtsClient = null;\n }\n}\n\n/**\n * Transitions to a logged-in state using the given credentials.\n *\n * Starts the matrix client and all other react-sdk services that\n * listen for events while a session is logged in.\n *\n * Also stops the old MatrixClient and clears old credentials/etc out of\n * storage before starting the new client.\n *\n * @param {MatrixClientCreds} credentials The credentials to use\n *\n * @returns {Promise} promise which resolves to the new MatrixClient once it has been started\n */\nfunction setLoggedIn(credentials) {\n stopMatrixClient();\n return _doSetLoggedIn(credentials, true);\n}\n\nfunction _persistCredentialsToLocalStorage(credentials) {\n localStorage.setItem(\"mx_hs_url\", credentials.homeserverUrl);\n localStorage.setItem(\"mx_is_url\", credentials.identityServerUrl);\n localStorage.setItem(\"mx_user_id\", credentials.userId);\n localStorage.setItem(\"mx_access_token\", credentials.accessToken);\n localStorage.setItem(\"mx_is_guest\", (0, _stringify2.default)(credentials.guest));\n\n // if we didn't get a deviceId from the login, leave mx_device_id unset,\n // rather than setting it to \"undefined\".\n //\n // (in this case MatrixClient doesn't bother with the crypto stuff\n // - that's fine for us).\n if (credentials.deviceId) {\n localStorage.setItem(\"mx_device_id\", credentials.deviceId);\n }\n\n console.log('Session persisted for ' + credentials.userId);\n}\n\nvar _isLoggingOut = false;\n\n/**\n * Logs the current session out and transitions to the logged-out state\n */\nfunction logout() {\n if (!_MatrixClientPeg2.default.get()) return;\n\n if (_MatrixClientPeg2.default.get().isGuest()) {\n // logout doesn't work for guest sessions\n // Also we sometimes want to re-log in a guest session\n // if we abort the login\n\n // use settimeout to avoid racing with react unmounting components\n // which need a valid matrixclientpeg\n setTimeout(function () {\n onLoggedOut();\n }, 0);\n return;\n }\n\n _isLoggingOut = true;\n _MatrixClientPeg2.default.get().logout().then(onLoggedOut, function (err) {\n // Just throwing an error here is going to be very unhelpful\n // if you're trying to log out because your server's down and\n // you want to log into a different server, so just forget the\n // access token. It's annoying that this will leave the access\n // token still valid, but we should fix this by having access\n // tokens expire (and if you really think you've been compromised,\n // change your password).\n console.log(\"Failed to call logout API: token will not be invalidated\");\n onLoggedOut();\n }).done();\n}\n\nfunction isLoggingOut() {\n return _isLoggingOut;\n}function onLoggedOut() {\n _isLoggingOut = false;\n stopMatrixClient();\n _clearStorage().done();\n _dispatcher2.default.dispatch({ action: 'on_logged_out' });\n}\n\n/**\n * @returns {Promise} promise which resolves once the stores have been cleared\n */\nfunction _clearStorage() {\n _Analytics2.default.logout();\n\n if (window.localStorage) {\n var hsUrl = window.localStorage.getItem(\"mx_hs_url\");\n var isUrl = window.localStorage.getItem(\"mx_is_url\");\n window.localStorage.clear();\n\n // preserve our HS & IS URLs for convenience\n // N.B. we cache them in hsUrl/isUrl and can't really inline them\n // as getCurrentHsUrl() may call through to localStorage.\n // NB. We do clear the device ID (as well as all the settings)\n if (hsUrl) window.localStorage.setItem(\"mx_hs_url\", hsUrl);\n if (isUrl) window.localStorage.setItem(\"mx_is_url\", isUrl);\n }\n\n // create a temporary client to clear out the persistent stores.\n var cli = (0, _createMatrixClient2.default)({\n // we'll never make any requests, so can pass a bogus HS URL\n baseUrl: \"\"\n });\n return cli.clearStores();\n}\n\n/**\n * Stop all the background processes related to the current client.\n */\nfunction stopMatrixClient() {\n _Notifier2.default.stop();\n _UserActivity2.default.stop();\n _Presence2.default.stop();\n _ActiveWidgetStore2.default.stop();\n if (_DMRoomMap2.default.shared()) _DMRoomMap2.default.shared().stop();\n var cli = _MatrixClientPeg2.default.get();\n if (cli) {\n cli.stopClient();\n cli.removeAllListeners();\n _MatrixClientPeg2.default.unset();\n }\n}\n//# sourceMappingURL=Lifecycle.js.map","'use strict';\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MIN_DISPATCH_INTERVAL_MS = 500; /*\n Copyright 2015, 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar CURRENTLY_ACTIVE_THRESHOLD_MS = 2000;\n\n/**\n * This class watches for user activity (moving the mouse or pressing a key)\n * and dispatches the user_activity action at times when the user is interacting\n * with the app (but at a much lower frequency than mouse move events)\n */\n\nvar UserActivity = function () {\n function UserActivity() {\n (0, _classCallCheck3.default)(this, UserActivity);\n }\n\n (0, _createClass3.default)(UserActivity, [{\n key: 'start',\n\n\n /**\n * Start listening to user activity\n */\n value: function start() {\n document.onmousedown = this._onUserActivity.bind(this);\n document.onmousemove = this._onUserActivity.bind(this);\n document.onkeydown = this._onUserActivity.bind(this);\n // can't use document.scroll here because that's only the document\n // itself being scrolled. Need to use addEventListener's useCapture.\n // also this needs to be the wheel event, not scroll, as scroll is\n // fired when the view scrolls down for a new message.\n window.addEventListener('wheel', this._onUserActivity.bind(this), { passive: true, capture: true });\n this.lastActivityAtTs = new Date().getTime();\n this.lastDispatchAtTs = 0;\n this.activityEndTimer = undefined;\n }\n\n /**\n * Stop tracking user activity\n */\n\n }, {\n key: 'stop',\n value: function stop() {\n document.onmousedown = undefined;\n document.onmousemove = undefined;\n document.onkeydown = undefined;\n window.removeEventListener('wheel', this._onUserActivity.bind(this), { passive: true, capture: true });\n }\n\n /**\n * Return true if there has been user activity very recently\n * (ie. within a few seconds)\n * @returns {boolean} true if user is currently/very recently active\n */\n\n }, {\n key: 'userCurrentlyActive',\n value: function userCurrentlyActive() {\n return this.lastActivityAtTs > new Date().getTime() - CURRENTLY_ACTIVE_THRESHOLD_MS;\n }\n }, {\n key: '_onUserActivity',\n value: function _onUserActivity(event) {\n if (event.screenX && event.type === \"mousemove\") {\n if (event.screenX === this.lastScreenX && event.screenY === this.lastScreenY) {\n // mouse hasn't actually moved\n return;\n }\n this.lastScreenX = event.screenX;\n this.lastScreenY = event.screenY;\n }\n\n this.lastActivityAtTs = new Date().getTime();\n if (this.lastDispatchAtTs < this.lastActivityAtTs - MIN_DISPATCH_INTERVAL_MS) {\n this.lastDispatchAtTs = this.lastActivityAtTs;\n _dispatcher2.default.dispatch({\n action: 'user_activity'\n });\n if (!this.activityEndTimer) {\n this.activityEndTimer = setTimeout(this._onActivityEndTimer.bind(this), MIN_DISPATCH_INTERVAL_MS);\n }\n }\n }\n }, {\n key: '_onActivityEndTimer',\n value: function _onActivityEndTimer() {\n var now = new Date().getTime();\n var targetTime = this.lastActivityAtTs + MIN_DISPATCH_INTERVAL_MS;\n if (now >= targetTime) {\n _dispatcher2.default.dispatch({\n action: 'user_activity_end'\n });\n this.activityEndTimer = undefined;\n } else {\n this.activityEndTimer = setTimeout(this._onActivityEndTimer.bind(this), targetTime - now);\n }\n }\n }]);\n return UserActivity;\n}();\n\nmodule.exports = new UserActivity();\n//# sourceMappingURL=UserActivity.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nexports.instanceForInstanceId = instanceForInstanceId;\nexports.protocolNameForInstanceId = protocolNameForInstanceId;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Find a protocol 'instance' with a given instance_id\n// in the supplied protocols dict\nfunction instanceForInstanceId(protocols, instance_id) {\n if (!instance_id) return null;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(protocols)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var proto = _step.value;\n\n if (!protocols[proto].instances && protocols[proto].instances instanceof Array) continue;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(protocols[proto].instances), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var instance = _step2.value;\n\n if (instance.instance_id == instance_id) return instance;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\n// given an instance_id, return the name of the protocol for\n// that instance ID in the supplied protocols dict\nfunction protocolNameForInstanceId(protocols, instance_id) {\n if (!instance_id) return null;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)((0, _keys2.default)(protocols)), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var proto = _step3.value;\n\n if (!protocols[proto].instances && protocols[proto].instances instanceof Array) continue;\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)(protocols[proto].instances), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var instance = _step4.value;\n\n if (instance.instance_id == instance_id) return proto;\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n}\n//# sourceMappingURL=DirectoryUtils.js.map","'use strict';\n\nexports.__esModule = true;\nexports.stateify = exports.TokenState = exports.CharacterState = undefined;\n\nvar _class = require('../utils/class');\n\nfunction createStateClass() {\n\treturn function (tClass) {\n\t\tthis.j = [];\n\t\tthis.T = tClass || null;\n\t};\n}\n\n/**\n\tA simple state machine that can emit token classes\n\n\tThe `j` property in this class refers to state jumps. It's a\n\tmultidimensional array where for each element:\n\n\t* index [0] is a symbol or class of symbols to transition to.\n\t* index [1] is a State instance which matches\n\n\tThe type of symbol will depend on the target implementation for this class.\n\tIn Linkify, we have a two-stage scanner. Each stage uses this state machine\n\tbut with a slighly different (polymorphic) implementation.\n\n\tThe `T` property refers to the token class.\n\n\tTODO: Can the `on` and `next` methods be combined?\n\n\t@class BaseState\n*/\nvar BaseState = createStateClass();\nBaseState.prototype = {\n\tdefaultTransition: false,\n\n\t/**\n \t@method constructor\n \t@param {Class} tClass Pass in the kind of token to emit if there are\n \t\tno jumps after this state and the state is accepting.\n */\n\n\t/**\n \tOn the given symbol(s), this machine should go to the given state\n \t\t@method on\n \t@param {Array|Mixed} symbol\n \t@param {BaseState} state Note that the type of this state should be the\n \t\tsame as the current instance (i.e., don't pass in a different\n \t\tsubclass)\n */\n\ton: function on(symbol, state) {\n\t\tif (symbol instanceof Array) {\n\t\t\tfor (var i = 0; i < symbol.length; i++) {\n\t\t\t\tthis.j.push([symbol[i], state]);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tthis.j.push([symbol, state]);\n\t\treturn this;\n\t},\n\n\n\t/**\n \tGiven the next item, returns next state for that item\n \t@method next\n \t@param {Mixed} item Should be an instance of the symbols handled by\n \t\tthis particular machine.\n \t@return {State} state Returns false if no jumps are available\n */\n\tnext: function next(item) {\n\t\tfor (var i = 0; i < this.j.length; i++) {\n\t\t\tvar jump = this.j[i];\n\t\t\tvar symbol = jump[0]; // Next item to check for\n\t\t\tvar state = jump[1]; // State to jump to if items match\n\n\t\t\t// compare item with symbol\n\t\t\tif (this.test(item, symbol)) {\n\t\t\t\treturn state;\n\t\t\t}\n\t\t}\n\n\t\t// Nowhere left to jump!\n\t\treturn this.defaultTransition;\n\t},\n\n\n\t/**\n \tDoes this state accept?\n \t`true` only of `this.T` exists\n \t\t@method accepts\n \t@return {Boolean}\n */\n\taccepts: function accepts() {\n\t\treturn !!this.T;\n\t},\n\n\n\t/**\n \tDetermine whether a given item \"symbolizes\" the symbol, where symbol is\n \ta class of items handled by this state machine.\n \t\tThis method should be overriden in extended classes.\n \t\t@method test\n \t@param {Mixed} item Does this item match the given symbol?\n \t@param {Mixed} symbol\n \t@return {Boolean}\n */\n\ttest: function test(item, symbol) {\n\t\treturn item === symbol;\n\t},\n\n\n\t/**\n \tEmit the token for this State (just return it in this case)\n \tIf this emits a token, this instance is an accepting state\n \t@method emit\n \t@return {Class} T\n */\n\temit: function emit() {\n\t\treturn this.T;\n\t}\n};\n\n/**\n\tState machine for string-based input\n\n\t@class CharacterState\n\t@extends BaseState\n*/\nvar CharacterState = (0, _class.inherits)(BaseState, createStateClass(), {\n\t/**\n \tDoes the given character match the given character or regular\n \texpression?\n \t\t@method test\n \t@param {String} char\n \t@param {String|RegExp} charOrRegExp\n \t@return {Boolean}\n */\n\ttest: function test(character, charOrRegExp) {\n\t\treturn character === charOrRegExp || charOrRegExp instanceof RegExp && charOrRegExp.test(character);\n\t}\n});\n\n/**\n\tState machine for input in the form of TextTokens\n\n\t@class TokenState\n\t@extends BaseState\n*/\nvar TokenState = (0, _class.inherits)(BaseState, createStateClass(), {\n\n\t/**\n * Similar to `on`, but returns the state the results in the transition from\n * the given item\n * @method jump\n * @param {Mixed} item\n * @param {Token} [token]\n * @return state\n */\n\tjump: function jump(token) {\n\t\tvar tClass = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\t\tvar state = this.next(new token('')); // dummy temp token\n\t\tif (state === this.defaultTransition) {\n\t\t\t// Make a new state!\n\t\t\tstate = new this.constructor(tClass);\n\t\t\tthis.on(token, state);\n\t\t} else if (tClass) {\n\t\t\tstate.T = tClass;\n\t\t}\n\t\treturn state;\n\t},\n\n\n\t/**\n \tIs the given token an instance of the given token class?\n \t\t@method test\n \t@param {TextToken} token\n \t@param {Class} tokenClass\n \t@return {Boolean}\n */\n\ttest: function test(token, tokenClass) {\n\t\treturn token instanceof tokenClass;\n\t}\n});\n\n/**\n\tGiven a non-empty target string, generates states (if required) for each\n\tconsecutive substring of characters in str starting from the beginning of\n\tthe string. The final state will have a special value, as specified in\n\toptions. All other \"in between\" substrings will have a default end state.\n\n\tThis turns the state machine into a Trie-like data structure (rather than a\n\tintelligently-designed DFA).\n\n\tNote that I haven't really tried these with any strings other than\n\tDOMAIN.\n\n\t@param {String} str\n\t@param {CharacterState} start State to jump from the first character\n\t@param {Class} endToken Token class to emit when the given string has been\n\t\tmatched and no more jumps exist.\n\t@param {Class} defaultToken \"Filler token\", or which token type to emit when\n\t\twe don't have a full match\n\t@return {Array} list of newly-created states\n*/\nfunction stateify(str, start, endToken, defaultToken) {\n\tvar i = 0,\n\t len = str.length,\n\t state = start,\n\t newStates = [],\n\t nextState = void 0;\n\n\t// Find the next state without a jump to the next character\n\twhile (i < len && (nextState = state.next(str[i]))) {\n\t\tstate = nextState;\n\t\ti++;\n\t}\n\n\tif (i >= len) {\n\t\treturn [];\n\t} // no new tokens were added\n\n\twhile (i < len - 1) {\n\t\tnextState = new CharacterState(defaultToken);\n\t\tnewStates.push(nextState);\n\t\tstate.on(str[i], nextState);\n\t\tstate = nextState;\n\t\ti++;\n\t}\n\n\tnextState = new CharacterState(endToken);\n\tnewStates.push(nextState);\n\tstate.on(str[len - 1], nextState);\n\n\treturn newStates;\n}\n\nexports.CharacterState = CharacterState;\nexports.TokenState = TokenState;\nexports.stateify = stateify;","\"use strict\";\n\nexports.__esModule = true;\nfunction createTokenClass() {\n\treturn function (value) {\n\t\tif (value) {\n\t\t\tthis.v = value;\n\t\t}\n\t};\n}\n\nexports.createTokenClass = createTokenClass;","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar extend = require('./extend');\nvar dis = require('./dispatcher');\nvar MatrixClientPeg = require('./MatrixClientPeg');\nvar sdk = require('./index');\n\nvar Modal = require('./Modal');\n\nvar encrypt = require(\"browser-encrypt-attachment\");\n\n// Polyfill for Canvas.toBlob API using Canvas.toDataURL\nrequire(\"blueimp-canvas-to-blob\");\n\nvar MAX_WIDTH = 800;\nvar MAX_HEIGHT = 600;\n\n/**\n * Create a thumbnail for a image DOM element.\n * The image will be smaller than MAX_WIDTH and MAX_HEIGHT.\n * The thumbnail will have the same aspect ratio as the original.\n * Draws the element into a canvas using CanvasRenderingContext2D.drawImage\n * Then calls Canvas.toBlob to get a blob object for the image data.\n *\n * Since it needs to calculate the dimensions of the source image and the\n * thumbnailed image it returns an info object filled out with information\n * about the original image and the thumbnail.\n *\n * @param {HTMLElement} element The element to thumbnail.\n * @param {integer} inputWidth The width of the image in the input element.\n * @param {integer} inputHeight the width of the image in the input element.\n * @param {String} mimeType The mimeType to save the blob as.\n * @return {Promise} A promise that resolves with an object with an info key\n * and a thumbnail key.\n */\nfunction createThumbnail(element, inputWidth, inputHeight, mimeType) {\n var deferred = _bluebird2.default.defer();\n\n var targetWidth = inputWidth;\n var targetHeight = inputHeight;\n if (targetHeight > MAX_HEIGHT) {\n targetWidth = Math.floor(targetWidth * (MAX_HEIGHT / targetHeight));\n targetHeight = MAX_HEIGHT;\n }\n if (targetWidth > MAX_WIDTH) {\n targetHeight = Math.floor(targetHeight * (MAX_WIDTH / targetWidth));\n targetWidth = MAX_WIDTH;\n }\n\n var canvas = document.createElement(\"canvas\");\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n canvas.getContext(\"2d\").drawImage(element, 0, 0, targetWidth, targetHeight);\n canvas.toBlob(function (thumbnail) {\n deferred.resolve({\n info: {\n thumbnail_info: {\n w: targetWidth,\n h: targetHeight,\n mimetype: thumbnail.type,\n size: thumbnail.size\n },\n w: inputWidth,\n h: inputHeight\n },\n thumbnail: thumbnail\n });\n }, mimeType);\n\n return deferred.promise;\n}\n\n/**\n * Load a file into a newly created image element.\n *\n * @param {File} file The file to load in an image element.\n * @return {Promise} A promise that resolves with the html image element.\n */\nfunction loadImageElement(imageFile) {\n var deferred = _bluebird2.default.defer();\n\n // Load the file into an html element\n var img = document.createElement(\"img\");\n var objectUrl = URL.createObjectURL(imageFile);\n img.src = objectUrl;\n\n // Once ready, create a thumbnail\n img.onload = function () {\n URL.revokeObjectURL(objectUrl);\n deferred.resolve(img);\n };\n img.onerror = function (e) {\n deferred.reject(e);\n };\n\n return deferred.promise;\n}\n\n/**\n * Read the metadata for an image file and create and upload a thumbnail of the image.\n *\n * @param {MatrixClient} matrixClient A matrixClient to upload the thumbnail with.\n * @param {String} roomId The ID of the room the image will be uploaded in.\n * @param {File} The image to read and thumbnail.\n * @return {Promise} A promise that resolves with the attachment info.\n */\nfunction infoForImageFile(matrixClient, roomId, imageFile) {\n var thumbnailType = \"image/png\";\n if (imageFile.type == \"image/jpeg\") {\n thumbnailType = \"image/jpeg\";\n }\n\n var imageInfo = void 0;\n return loadImageElement(imageFile).then(function (img) {\n return createThumbnail(img, img.width, img.height, thumbnailType);\n }).then(function (result) {\n imageInfo = result.info;\n return uploadFile(matrixClient, roomId, result.thumbnail);\n }).then(function (result) {\n imageInfo.thumbnail_url = result.url;\n imageInfo.thumbnail_file = result.file;\n return imageInfo;\n });\n}\n\n/**\n * Load a file into a newly created video element.\n *\n * @param {File} file The file to load in an video element.\n * @return {Promise} A promise that resolves with the video image element.\n */\nfunction loadVideoElement(videoFile) {\n var deferred = _bluebird2.default.defer();\n\n // Load the file into an html element\n var video = document.createElement(\"video\");\n\n var reader = new FileReader();\n reader.onload = function (e) {\n video.src = e.target.result;\n\n // Once ready, returns its size\n // Wait until we have enough data to thumbnail the first frame.\n video.onloadeddata = function () {\n deferred.resolve(video);\n };\n video.onerror = function (e) {\n deferred.reject(e);\n };\n };\n reader.onerror = function (e) {\n deferred.reject(e);\n };\n reader.readAsDataURL(videoFile);\n\n return deferred.promise;\n}\n\n/**\n * Read the metadata for a video file and create and upload a thumbnail of the video.\n *\n * @param {MatrixClient} matrixClient A matrixClient to upload the thumbnail with.\n * @param {String} roomId The ID of the room the video will be uploaded to.\n * @param {File} The video to read and thumbnail.\n * @return {Promise} A promise that resolves with the attachment info.\n */\nfunction infoForVideoFile(matrixClient, roomId, videoFile) {\n var thumbnailType = \"image/jpeg\";\n\n var videoInfo = void 0;\n return loadVideoElement(videoFile).then(function (video) {\n return createThumbnail(video, video.videoWidth, video.videoHeight, thumbnailType);\n }).then(function (result) {\n videoInfo = result.info;\n return uploadFile(matrixClient, roomId, result.thumbnail);\n }).then(function (result) {\n videoInfo.thumbnail_url = result.url;\n videoInfo.thumbnail_file = result.file;\n return videoInfo;\n });\n}\n\n/**\n * Read the file as an ArrayBuffer.\n * @return {Promise} A promise that resolves with an ArrayBuffer when the file\n * is read.\n */\nfunction readFileAsArrayBuffer(file) {\n var deferred = _bluebird2.default.defer();\n var reader = new FileReader();\n reader.onload = function (e) {\n deferred.resolve(e.target.result);\n };\n reader.onerror = function (e) {\n deferred.reject(e);\n };\n reader.readAsArrayBuffer(file);\n return deferred.promise;\n}\n\n/**\n * Upload the file to the content repository.\n * If the room is encrypted then encrypt the file before uploading.\n *\n * @param {MatrixClient} matrixClient The matrix client to upload the file with.\n * @param {String} roomId The ID of the room being uploaded to.\n * @param {File} file The file to upload.\n * @param {Function?} progressHandler optional callback to be called when a chunk of\n * data is uploaded.\n * @return {Promise} A promise that resolves with an object.\n * If the file is unencrypted then the object will have a \"url\" key.\n * If the file is encrypted then the object will have a \"file\" key.\n */\nfunction uploadFile(matrixClient, roomId, file, progressHandler) {\n if (matrixClient.isRoomEncrypted(roomId)) {\n // If the room is encrypted then encrypt the file before uploading it.\n // First read the file into memory.\n return readFileAsArrayBuffer(file).then(function (data) {\n // Then encrypt the file.\n return encrypt.encryptAttachment(data);\n }).then(function (encryptResult) {\n // Record the information needed to decrypt the attachment.\n var encryptInfo = encryptResult.info;\n // Pass the encrypted data as a Blob to the uploader.\n var blob = new Blob([encryptResult.data]);\n return matrixClient.uploadContent(blob, {\n progressHandler: progressHandler,\n includeFilename: false\n }).then(function (url) {\n // If the attachment is encrypted then bundle the URL along\n // with the information needed to decrypt the attachment and\n // add it under a file key.\n encryptInfo.url = url;\n if (file.type) {\n encryptInfo.mimetype = file.type;\n }\n return { \"file\": encryptInfo };\n });\n });\n } else {\n var basePromise = matrixClient.uploadContent(file, {\n progressHandler: progressHandler\n });\n var promise1 = basePromise.then(function (url) {\n // If the attachment isn't encrypted then include the URL directly.\n return { \"url\": url };\n });\n // XXX: copy over the abort method to the new promise\n promise1.abort = basePromise.abort;\n return promise1;\n }\n}\n\nvar ContentMessages = function () {\n function ContentMessages() {\n (0, _classCallCheck3.default)(this, ContentMessages);\n\n this.inprogress = [];\n this.nextId = 0;\n }\n\n (0, _createClass3.default)(ContentMessages, [{\n key: 'sendStickerContentToRoom',\n value: function sendStickerContentToRoom(url, roomId, info, text, matrixClient) {\n return MatrixClientPeg.get().sendStickerMessage(roomId, url, info, text).catch(function (e) {\n console.warn('Failed to send content with URL ' + url + ' to room ' + roomId, e);\n throw e;\n });\n }\n }, {\n key: 'sendContentToRoom',\n value: function sendContentToRoom(file, roomId, matrixClient) {\n var _this = this;\n\n var content = {\n body: file.name || 'Attachment',\n info: {\n size: file.size\n }\n };\n\n // if we have a mime type for the file, add it to the message metadata\n if (file.type) {\n content.info.mimetype = file.type;\n }\n\n var def = _bluebird2.default.defer();\n if (file.type.indexOf('image/') == 0) {\n content.msgtype = 'm.image';\n infoForImageFile(matrixClient, roomId, file).then(function (imageInfo) {\n extend(content.info, imageInfo);\n def.resolve();\n }, function (error) {\n console.error(error);\n content.msgtype = 'm.file';\n def.resolve();\n });\n } else if (file.type.indexOf('audio/') == 0) {\n content.msgtype = 'm.audio';\n def.resolve();\n } else if (file.type.indexOf('video/') == 0) {\n content.msgtype = 'm.video';\n infoForVideoFile(matrixClient, roomId, file).then(function (videoInfo) {\n extend(content.info, videoInfo);\n def.resolve();\n }, function (error) {\n content.msgtype = 'm.file';\n def.resolve();\n });\n } else {\n content.msgtype = 'm.file';\n def.resolve();\n }\n\n var upload = {\n fileName: file.name || 'Attachment',\n roomId: roomId,\n total: 0,\n loaded: 0\n };\n this.inprogress.push(upload);\n dis.dispatch({ action: 'upload_started' });\n\n var error = void 0;\n\n function onProgress(ev) {\n upload.total = ev.total;\n upload.loaded = ev.loaded;\n dis.dispatch({ action: 'upload_progress', upload: upload });\n }\n\n return def.promise.then(function () {\n // XXX: upload.promise must be the promise that\n // is returned by uploadFile as it has an abort()\n // method hacked onto it.\n upload.promise = uploadFile(matrixClient, roomId, file, onProgress);\n return upload.promise.then(function (result) {\n content.file = result.file;\n content.url = result.url;\n });\n }).then(function (url) {\n return matrixClient.sendMessage(roomId, content);\n }, function (err) {\n error = err;\n if (!upload.canceled) {\n var desc = (0, _languageHandler._t)('The file \\'%(fileName)s\\' failed to upload', { fileName: upload.fileName }) + '.';\n if (err.http_status == 413) {\n desc = (0, _languageHandler._t)('The file \\'%(fileName)s\\' exceeds this home server\\'s size limit for uploads', { fileName: upload.fileName });\n }\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Upload failed', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Upload Failed'),\n description: desc\n });\n }\n }).finally(function () {\n var inprogressKeys = (0, _keys2.default)(_this.inprogress);\n for (var i = 0; i < _this.inprogress.length; ++i) {\n var k = inprogressKeys[i];\n if (_this.inprogress[k].promise === upload.promise) {\n _this.inprogress.splice(k, 1);\n break;\n }\n }\n if (error) {\n dis.dispatch({ action: 'upload_failed', upload: upload });\n } else {\n dis.dispatch({ action: 'upload_finished', upload: upload });\n }\n });\n }\n }, {\n key: 'getCurrentUploads',\n value: function getCurrentUploads() {\n return this.inprogress;\n }\n }, {\n key: 'cancelUpload',\n value: function cancelUpload(promise) {\n var inprogressKeys = (0, _keys2.default)(this.inprogress);\n var upload = void 0;\n for (var i = 0; i < this.inprogress.length; ++i) {\n var k = inprogressKeys[i];\n if (this.inprogress[k].promise === promise) {\n upload = this.inprogress[k];\n break;\n }\n }\n if (upload) {\n upload.canceled = true;\n MatrixClientPeg.get().cancelUpload(upload.promise);\n }\n }\n }]);\n return ContentMessages;\n}();\n\nif (global.mx_ContentMessage === undefined) {\n global.mx_ContentMessage = new ContentMessages();\n}\n\nmodule.exports = global.mx_ContentMessage;\n//# sourceMappingURL=ContentMessages.js.map","/**\n * Encrypt an attachment.\n * @param {ArrayBuffer} plaintextBuffer The attachment data buffer.\n * @return {Promise} A promise that resolves with an object when the attachment is encrypted.\n * The object has a \"data\" key with an ArrayBuffer of encrypted data and an \"info\" key\n * with an object containing the info needed to decrypt the data.\n */\nfunction encryptAttachment(plaintextBuffer) {\n var cryptoKey; // The AES key object.\n var exportedKey; // The AES key exported as JWK.\n var ciphertextBuffer; // ArrayBuffer of encrypted data.\n var sha256Buffer; // ArrayBuffer of digest.\n var ivArray; // Uint8Array of AES IV\n // Generate an IV where the first 8 bytes are random and the high 8 bytes\n // are zero. We set the counter low bits to 0 since it makes it unlikely\n // that the 64 bit counter will overflow.\n ivArray = new Uint8Array(16);\n window.crypto.getRandomValues(ivArray.subarray(0,8));\n // Load the encryption key.\n return window.crypto.subtle.generateKey(\n {\"name\": \"AES-CTR\", length: 256}, true, [\"encrypt\", \"decrypt\"]\n ).then(function(generateKeyResult) {\n cryptoKey = generateKeyResult;\n // Export the Key as JWK.\n return window.crypto.subtle.exportKey(\"jwk\", cryptoKey);\n }).then(function(exportKeyResult) {\n exportedKey = exportKeyResult;\n // Encrypt the input ArrayBuffer.\n // Use half of the iv as the counter by setting the \"length\" to 64.\n return window.crypto.subtle.encrypt(\n {name: \"AES-CTR\", counter: ivArray, length: 64}, cryptoKey, plaintextBuffer\n );\n }).then(function(encryptResult) {\n ciphertextBuffer = encryptResult;\n // SHA-256 the encrypted data.\n return window.crypto.subtle.digest(\"SHA-256\", ciphertextBuffer);\n }).then(function (digestResult) {\n sha256Buffer = digestResult;\n\n return {\n data: ciphertextBuffer,\n info: {\n v: \"v2\",\n key: exportedKey,\n iv: encodeBase64(ivArray),\n hashes: {\n sha256: encodeBase64(new Uint8Array(sha256Buffer)),\n },\n },\n };\n });\n}\n\n/**\n * Decrypt an attachment.\n * @param {ArrayBuffer} ciphertextBuffer The encrypted attachment data buffer.\n * @param {Object} info The information needed to decrypt the attachment.\n * @param {Object} info.key AES-CTR JWK key object.\n * @param {string} info.iv Base64 encoded 16 byte AES-CTR IV.\n * @param {string} info.hashes.sha256 Base64 encoded SHA-256 hash of the ciphertext.\n * @return {Promise} A promise that resolves with an ArrayBuffer when the attachment is decrypted.\n */\nfunction decryptAttachment(ciphertextBuffer, info) {\n\n if (info === undefined || info.key === undefined || info.iv === undefined\n || info.hashes === undefined || info.hashes.sha256 === undefined) {\n throw new Error(\"Invalid info. Missing info.key, info.iv or info.hashes.sha256 key\");\n }\n\n var cryptoKey; // The AES key object.\n var ivArray = decodeBase64(info.iv);\n var expectedSha256base64 = info.hashes.sha256;\n // Load the AES from the \"key\" key of the info object.\n return window.crypto.subtle.importKey(\n \"jwk\", info.key, {\"name\": \"AES-CTR\"}, false, [\"encrypt\", \"decrypt\"]\n ).then(function (importKeyResult) {\n cryptoKey = importKeyResult;\n // Check the sha256 hash\n return window.crypto.subtle.digest(\"SHA-256\", ciphertextBuffer);\n }).then(function (digestResult) {\n if (encodeBase64(new Uint8Array(digestResult)) != expectedSha256base64) {\n throw new Error(\"Mismatched SHA-256 digest\");\n }\n var counterLength;\n if (info.v == \"v1\" || info.v == \"v2\") {\n // Version 1 and 2 use a 64 bit counter.\n counterLength = 64;\n } else {\n // Version 0 uses a 128 bit counter.\n counterLength = 128;\n }\n return window.crypto.subtle.decrypt(\n {name: \"AES-CTR\", counter: ivArray, length: counterLength}, cryptoKey, ciphertextBuffer\n );\n });\n}\n\n/**\n * Encode a typed array of uint8 as base64.\n * @param {Uint8Array} uint8Array The data to encode.\n * @return {string} The base64 without padding.\n */\nfunction encodeBase64(uint8Array) {\n // Misinterpt the Uint8Array as Latin-1.\n // window.btoa expects a unicode string with codepoints in the range 0-255.\n var latin1String = String.fromCharCode.apply(null, uint8Array);\n // Use the builtin base64 encoder.\n var paddedBase64 = window.btoa(latin1String);\n // Calculate the unpadded length.\n var inputLength = uint8Array.length;\n var outputLength = 4 * Math.floor((inputLength + 2) / 3) + (inputLength + 2) % 3 - 2;\n // Return the unpadded base64.\n return paddedBase64.slice(0, outputLength);\n}\n\n/**\n * Decode a base64 string to a typed array of uint8.\n * This will decode unpadded base64, but will also accept base64 with padding.\n * @param {string} base64 The unpadded base64 to decode.\n * @return {Uint8Array} The decoded data.\n */\nfunction decodeBase64(base64) {\n // Pad the base64 up to the next multiple of 4.\n var paddedBase64 = base64 + \"===\".slice(0, (4 - base64.length % 4) % 4);\n // Decode the base64 as a misinterpreted Latin-1 string.\n // window.atob returns a unicode string with codepoints in the range 0-255.\n var latin1String = window.atob(paddedBase64);\n // Encode the string as a Uint8Array as Latin-1.\n var uint8Array = new Uint8Array(latin1String.length);\n for (var i = 0; i < latin1String.length; i++) {\n uint8Array[i] = latin1String.charCodeAt(i);\n }\n return uint8Array;\n}\n\ntry {\n exports.encryptAttachment = encryptAttachment;\n exports.decryptAttachment = decryptAttachment;\n}\ncatch (e) {\n // Ignore unknown variable \"exports\" errors when this is loaded directly into a browser\n // This means that we can test it without having to use browserify.\n // The intention is that the library is used using browserify.\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * TODO: Make things use this. This is all WIP - see UserSettings.js for usage.\n */\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = {\n loadProfileInfo: function loadProfileInfo() {\n var cli = _MatrixClientPeg2.default.get();\n return cli.getProfileInfo(cli.credentials.userId);\n },\n\n saveDisplayName: function saveDisplayName(newDisplayname) {\n return _MatrixClientPeg2.default.get().setDisplayName(newDisplayname);\n },\n\n loadThreePids: function loadThreePids() {\n if (_MatrixClientPeg2.default.get().isGuest()) {\n return _bluebird2.default.resolve({\n threepids: []\n }); // guests can't poke 3pid endpoint\n }\n return _MatrixClientPeg2.default.get().getThreePids();\n },\n\n saveThreePids: function saveThreePids(threePids) {\n // TODO\n },\n\n changePassword: function changePassword(oldPassword, newPassword) {\n var cli = _MatrixClientPeg2.default.get();\n\n var authDict = {\n type: 'm.login.password',\n user: cli.credentials.userId,\n password: oldPassword\n };\n\n return cli.setPassword(authDict, newPassword);\n },\n\n /*\n * Returns the email pusher (pusher of type 'email') for a given\n * email address. Email pushers all have the same app ID, so since\n * pushers are unique over (app ID, pushkey), there will be at most\n * one such pusher.\n */\n getEmailPusher: function getEmailPusher(pushers, address) {\n if (pushers === undefined) {\n return undefined;\n }\n for (var i = 0; i < pushers.length; ++i) {\n if (pushers[i].kind === 'email' && pushers[i].pushkey === address) {\n return pushers[i];\n }\n }\n return undefined;\n },\n\n hasEmailPusher: function hasEmailPusher(pushers, address) {\n return this.getEmailPusher(pushers, address) !== undefined;\n },\n\n addEmailPusher: function addEmailPusher(address, data) {\n return _MatrixClientPeg2.default.get().setPusher({\n kind: 'email',\n app_id: 'm.email',\n pushkey: address,\n app_display_name: 'Email Notifications',\n device_display_name: address,\n lang: navigator.language,\n data: data,\n append: true // We always append for email pushers since we don't want to stop other accounts notifying to the same email address\n });\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=UserSettingsStore.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _UiEffects = require('../../../UiEffects');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _email = require('../../../email');\n\nvar _email2 = _interopRequireDefault(_email);\n\nvar _phonenumber = require('../../../phonenumber');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar FIELD_EMAIL = 'field_email';\nvar FIELD_PHONE_COUNTRY = 'field_phone_country';\nvar FIELD_PHONE_NUMBER = 'field_phone_number';\nvar FIELD_USERNAME = 'field_username';\nvar FIELD_PASSWORD = 'field_password';\nvar FIELD_PASSWORD_CONFIRM = 'field_password_confirm';\n\n/**\n * A pure UI component which displays a registration form.\n */\nmodule.exports = _react2.default.createClass({\n displayName: 'RegistrationForm',\n\n propTypes: {\n // Values pre-filled in the input boxes when the component loads\n defaultEmail: _propTypes2.default.string,\n defaultPhoneCountry: _propTypes2.default.string,\n defaultPhoneNumber: _propTypes2.default.string,\n defaultUsername: _propTypes2.default.string,\n defaultPassword: _propTypes2.default.string,\n teamsConfig: _propTypes2.default.shape({\n // Email address to request new teams\n supportEmail: _propTypes2.default.string,\n teams: _propTypes2.default.arrayOf(_propTypes2.default.shape({\n // The displayed name of the team\n \"name\": _propTypes2.default.string,\n // The domain of team email addresses\n \"domain\": _propTypes2.default.string\n })).required\n }),\n\n minPasswordLength: _propTypes2.default.number,\n onError: _propTypes2.default.func,\n onRegisterClick: _propTypes2.default.func.isRequired, // onRegisterClick(Object) => ?Promise\n flows: _propTypes2.default.arrayOf(_propTypes2.default.object).isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n minPasswordLength: 6,\n onError: function onError(e) {\n console.error(e);\n }\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n fieldValid: {},\n selectedTeam: null,\n // The ISO2 country code selected in the phone number entry\n phoneCountry: this.props.defaultPhoneCountry\n };\n },\n\n onSubmit: function onSubmit(ev) {\n ev.preventDefault();\n\n // validate everything, in reverse order so\n // the error that ends up being displayed\n // is the one from the first invalid field.\n // It's not super ideal that this just calls\n // onError once for each invalid field.\n this.validateField(FIELD_PASSWORD_CONFIRM);\n this.validateField(FIELD_PASSWORD);\n this.validateField(FIELD_USERNAME);\n this.validateField(FIELD_PHONE_NUMBER);\n this.validateField(FIELD_EMAIL);\n\n var self = this;\n if (this.allFieldsValid()) {\n if (this.refs.email.value == '') {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('If you don\\'t specify an email address...', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Warning!\"),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"If you don't specify an email address, you won't be able to reset your password. \" + \"Are you sure?\")\n ),\n button: (0, _languageHandler._t)(\"Continue\"),\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n self._doSubmit(ev);\n }\n }\n });\n } else {\n self._doSubmit(ev);\n }\n }\n },\n\n _doSubmit: function _doSubmit(ev) {\n var email = this.refs.email.value.trim();\n var promise = this.props.onRegisterClick({\n username: this.refs.username.value.trim(),\n password: this.refs.password.value.trim(),\n email: email,\n phoneCountry: this.state.phoneCountry,\n phoneNumber: this.refs.phoneNumber ? this.refs.phoneNumber.value.trim() : ''\n });\n\n if (promise) {\n ev.target.disabled = true;\n promise.finally(function () {\n ev.target.disabled = false;\n });\n }\n },\n\n /**\n * Returns true if all fields were valid last time\n * they were validated.\n */\n allFieldsValid: function allFieldsValid() {\n var keys = (0, _keys2.default)(this.state.fieldValid);\n for (var i = 0; i < keys.length; ++i) {\n if (this.state.fieldValid[keys[i]] == false) {\n return false;\n }\n }\n return true;\n },\n\n _isUniEmail: function _isUniEmail(email) {\n return email.endsWith('.ac.uk') || email.endsWith('.edu') || email.endsWith('matrix.org');\n },\n\n validateField: function validateField(field_id) {\n var pwd1 = this.refs.password.value.trim();\n var pwd2 = this.refs.passwordConfirm.value.trim();\n\n switch (field_id) {\n case FIELD_EMAIL:\n var email = this.refs.email.value;\n if (this.props.teamsConfig && this._isUniEmail(email)) {\n var matchingTeam = this.props.teamsConfig.teams.find(function (team) {\n return email.split('@').pop() === team.domain;\n }) || null;\n this.setState({\n selectedTeam: matchingTeam,\n showSupportEmail: !matchingTeam\n });\n this.props.onTeamSelected(matchingTeam);\n } else {\n this.props.onTeamSelected(null);\n this.setState({\n selectedTeam: null,\n showSupportEmail: false\n });\n }\n var emailValid = email === '' || _email2.default.looksValid(email);\n if (this._authStepIsRequired('m.login.email.identity') && (!emailValid || email === '')) {\n this.markFieldValid(field_id, false, \"RegistrationForm.ERR_MISSING_EMAIL\");\n } else this.markFieldValid(field_id, emailValid, \"RegistrationForm.ERR_EMAIL_INVALID\");\n break;\n case FIELD_PHONE_NUMBER:\n var phoneNumber = this.refs.phoneNumber ? this.refs.phoneNumber.value : '';\n var phoneNumberValid = phoneNumber === '' || (0, _phonenumber.looksValid)(phoneNumber);\n if (this._authStepIsRequired('m.login.msisdn') && (!phoneNumberValid || phoneNumber === '')) {\n this.markFieldValid(field_id, false, \"RegistrationForm.ERR_MISSING_PHONE_NUMBER\");\n } else this.markFieldValid(field_id, phoneNumberValid, \"RegistrationForm.ERR_PHONE_NUMBER_INVALID\");\n break;\n case FIELD_USERNAME:\n // XXX: SPEC-1\n var username = this.refs.username.value.trim();\n if (encodeURIComponent(username) != username) {\n this.markFieldValid(field_id, false, \"RegistrationForm.ERR_USERNAME_INVALID\");\n } else if (username == '') {\n this.markFieldValid(field_id, false, \"RegistrationForm.ERR_USERNAME_BLANK\");\n } else {\n this.markFieldValid(field_id, true);\n }\n break;\n case FIELD_PASSWORD:\n if (pwd1 == '') {\n this.markFieldValid(field_id, false, \"RegistrationForm.ERR_PASSWORD_MISSING\");\n } else if (pwd1.length < this.props.minPasswordLength) {\n this.markFieldValid(field_id, false, \"RegistrationForm.ERR_PASSWORD_LENGTH\");\n } else {\n this.markFieldValid(field_id, true);\n }\n break;\n case FIELD_PASSWORD_CONFIRM:\n this.markFieldValid(field_id, pwd1 == pwd2, \"RegistrationForm.ERR_PASSWORD_MISMATCH\");\n break;\n }\n },\n\n markFieldValid: function markFieldValid(field_id, val, error_code) {\n var fieldValid = this.state.fieldValid;\n fieldValid[field_id] = val;\n this.setState({ fieldValid: fieldValid });\n if (!val) {\n (0, _UiEffects.field_input_incorrect)(this.fieldElementById(field_id));\n this.props.onError(error_code);\n }\n },\n\n fieldElementById: function fieldElementById(field_id) {\n switch (field_id) {\n case FIELD_EMAIL:\n return this.refs.email;\n case FIELD_PHONE_NUMBER:\n return this.refs.phoneNumber;\n case FIELD_USERNAME:\n return this.refs.username;\n case FIELD_PASSWORD:\n return this.refs.password;\n case FIELD_PASSWORD_CONFIRM:\n return this.refs.passwordConfirm;\n }\n },\n\n\n _classForField: function _classForField(field_id) {\n for (var _len = arguments.length, baseClasses = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n baseClasses[_key - 1] = arguments[_key];\n }\n\n var cls = baseClasses.join(' ');\n if (this.state.fieldValid[field_id] === false) {\n if (cls) cls += ' ';\n cls += 'error';\n }\n return cls;\n },\n\n _onPhoneCountryChange: function _onPhoneCountryChange(newVal) {\n this.setState({\n phoneCountry: newVal.iso2,\n phonePrefix: newVal.prefix\n });\n },\n _authStepIsRequired: function _authStepIsRequired(step) {\n // A step is required if no flow exists which does not include that step\n // (Notwithstanding setups like either email or msisdn being required)\n return !this.props.flows.some(function (flow) {\n return !flow.stages.includes(step);\n });\n },\n\n\n render: function render() {\n var self = this;\n\n var emailPlaceholder = this._authStepIsRequired('m.login.email.identity') ? (0, _languageHandler._t)(\"Email address\") : (0, _languageHandler._t)(\"Email address (optional)\");\n\n var emailSection = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { type: 'text', ref: 'email',\n autoFocus: true, placeholder: emailPlaceholder,\n defaultValue: this.props.defaultEmail,\n className: this._classForField(FIELD_EMAIL, 'mx_Login_field'),\n onBlur: function onBlur() {\n self.validateField(FIELD_EMAIL);\n },\n value: self.state.email })\n );\n var belowEmailSection = void 0;\n if (this.props.teamsConfig) {\n if (this.props.teamsConfig.supportEmail && this.state.showSupportEmail) {\n belowEmailSection = _react2.default.createElement(\n 'p',\n { className: 'mx_Login_support' },\n 'Sorry, but your university is not registered with us just yet.\\xA0 Email us on\\xA0',\n _react2.default.createElement(\n 'a',\n { href: \"mailto:\" + this.props.teamsConfig.supportEmail },\n this.props.teamsConfig.supportEmail\n ),\n '\\xA0 to get your university signed up. Or continue to register with Riot to enjoy our open source platform.'\n );\n } else if (this.state.selectedTeam) {\n belowEmailSection = _react2.default.createElement(\n 'p',\n { className: 'mx_Login_support' },\n (0, _languageHandler._t)(\"You are registering with %(SelectedTeamName)s\", { SelectedTeamName: this.state.selectedTeam.name })\n );\n }\n }\n\n var CountryDropdown = _index2.default.getComponent('views.login.CountryDropdown');\n var phoneSection = void 0;\n if (!_SdkConfig2.default.get().disable_3pid_login) {\n var phonePlaceholder = this._authStepIsRequired('m.login.msisdn') ? (0, _languageHandler._t)(\"Mobile phone number\") : (0, _languageHandler._t)(\"Mobile phone number (optional)\");\n phoneSection = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_phoneSection' },\n _react2.default.createElement(CountryDropdown, { ref: 'phone_country', onOptionChange: this._onPhoneCountryChange,\n className: 'mx_Login_phoneCountry mx_Login_field_prefix',\n value: this.state.phoneCountry,\n isSmall: true,\n showPrefix: true\n }),\n _react2.default.createElement('input', { type: 'text', ref: 'phoneNumber',\n placeholder: phonePlaceholder,\n defaultValue: this.props.defaultPhoneNumber,\n className: this._classForField(FIELD_PHONE_NUMBER, 'mx_Login_phoneNumberField', 'mx_Login_field', 'mx_Login_field_has_prefix'),\n onBlur: function onBlur() {\n self.validateField(FIELD_PHONE_NUMBER);\n },\n value: self.state.phoneNumber\n })\n );\n }\n\n var registerButton = _react2.default.createElement('input', { className: 'mx_Login_submit', type: 'submit', value: (0, _languageHandler._t)(\"Register\") });\n\n var placeholderUserName = (0, _languageHandler._t)(\"User name\");\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'form',\n { onSubmit: this.onSubmit },\n emailSection,\n belowEmailSection,\n phoneSection,\n _react2.default.createElement('input', { type: 'text', ref: 'username',\n placeholder: placeholderUserName, defaultValue: this.props.defaultUsername,\n className: this._classForField(FIELD_USERNAME, 'mx_Login_field'),\n onBlur: function onBlur() {\n self.validateField(FIELD_USERNAME);\n } }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { type: 'password', ref: 'password',\n className: this._classForField(FIELD_PASSWORD, 'mx_Login_field'),\n onBlur: function onBlur() {\n self.validateField(FIELD_PASSWORD);\n },\n placeholder: (0, _languageHandler._t)(\"Password\"), defaultValue: this.props.defaultPassword }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { type: 'password', ref: 'passwordConfirm',\n placeholder: (0, _languageHandler._t)(\"Confirm password\"),\n className: this._classForField(FIELD_PASSWORD_CONFIRM, 'mx_Login_field'),\n onBlur: function onBlur() {\n self.validateField(FIELD_PASSWORD_CONFIRM);\n },\n defaultValue: this.props.defaultPassword }),\n _react2.default.createElement('br', null),\n registerButton\n )\n );\n }\n});\n//# sourceMappingURL=RegistrationForm.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.field_input_incorrect = field_input_incorrect;\n\nvar _velocityVector = require('velocity-vector');\n\nvar _velocityVector2 = _interopRequireDefault(_velocityVector);\n\nrequire('velocity-vector/velocity.ui');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Functions for applying common thematic effects to UI elements.\n * Ideally this would be themeable.\n */\n\nfunction field_input_incorrect(element) {\n (0, _velocityVector2.default)(element, \"callout.shake\", 300);\n}\n//# sourceMappingURL=UiEffects.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.looksValid = looksValid;\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar PHONE_NUMBER_REGEXP = /^[0-9 -\\.]+$/;\n\n/*\n * Do basic validation to determine if the given input could be\n * a valid phone number.\n *\n * @param {String} phoneNumber The string to validate. This could be\n * either an international format number (MSISDN or e.164) or\n * a national-format number.\n * @return True if the number could be a valid phone number, otherwise false.\n */\nfunction looksValid(phoneNumber) {\n return PHONE_NUMBER_REGEXP.test(phoneNumber);\n}\n\nvar COUNTRIES = exports.COUNTRIES = [{\n \"iso2\": \"GB\",\n \"name\": \"United Kingdom\",\n \"prefix\": \"44\"\n}, {\n \"iso2\": \"US\",\n \"name\": \"United States\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"AF\",\n \"name\": \"Afghanistan\",\n \"prefix\": \"93\"\n}, {\n \"iso2\": \"AX\",\n \"name\": \"\\xC5land Islands\",\n \"prefix\": \"358\"\n}, {\n \"iso2\": \"AL\",\n \"name\": \"Albania\",\n \"prefix\": \"355\"\n}, {\n \"iso2\": \"DZ\",\n \"name\": \"Algeria\",\n \"prefix\": \"213\"\n}, {\n \"iso2\": \"AS\",\n \"name\": \"American Samoa\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"AD\",\n \"name\": \"Andorra\",\n \"prefix\": \"376\"\n}, {\n \"iso2\": \"AO\",\n \"name\": \"Angola\",\n \"prefix\": \"244\"\n}, {\n \"iso2\": \"AI\",\n \"name\": \"Anguilla\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"AQ\",\n \"name\": \"Antarctica\",\n \"prefix\": \"672\"\n}, {\n \"iso2\": \"AG\",\n \"name\": \"Antigua & Barbuda\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"AR\",\n \"name\": \"Argentina\",\n \"prefix\": \"54\"\n}, {\n \"iso2\": \"AM\",\n \"name\": \"Armenia\",\n \"prefix\": \"374\"\n}, {\n \"iso2\": \"AW\",\n \"name\": \"Aruba\",\n \"prefix\": \"297\"\n}, {\n \"iso2\": \"AU\",\n \"name\": \"Australia\",\n \"prefix\": \"61\"\n}, {\n \"iso2\": \"AT\",\n \"name\": \"Austria\",\n \"prefix\": \"43\"\n}, {\n \"iso2\": \"AZ\",\n \"name\": \"Azerbaijan\",\n \"prefix\": \"994\"\n}, {\n \"iso2\": \"BS\",\n \"name\": \"Bahamas\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"BH\",\n \"name\": \"Bahrain\",\n \"prefix\": \"973\"\n}, {\n \"iso2\": \"BD\",\n \"name\": \"Bangladesh\",\n \"prefix\": \"880\"\n}, {\n \"iso2\": \"BB\",\n \"name\": \"Barbados\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"BY\",\n \"name\": \"Belarus\",\n \"prefix\": \"375\"\n}, {\n \"iso2\": \"BE\",\n \"name\": \"Belgium\",\n \"prefix\": \"32\"\n}, {\n \"iso2\": \"BZ\",\n \"name\": \"Belize\",\n \"prefix\": \"501\"\n}, {\n \"iso2\": \"BJ\",\n \"name\": \"Benin\",\n \"prefix\": \"229\"\n}, {\n \"iso2\": \"BM\",\n \"name\": \"Bermuda\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"BT\",\n \"name\": \"Bhutan\",\n \"prefix\": \"975\"\n}, {\n \"iso2\": \"BO\",\n \"name\": \"Bolivia\",\n \"prefix\": \"591\"\n}, {\n \"iso2\": \"BA\",\n \"name\": \"Bosnia\",\n \"prefix\": \"387\"\n}, {\n \"iso2\": \"BW\",\n \"name\": \"Botswana\",\n \"prefix\": \"267\"\n}, {\n \"iso2\": \"BV\",\n \"name\": \"Bouvet Island\",\n \"prefix\": \"47\"\n}, {\n \"iso2\": \"BR\",\n \"name\": \"Brazil\",\n \"prefix\": \"55\"\n}, {\n \"iso2\": \"IO\",\n \"name\": \"British Indian Ocean Territory\",\n \"prefix\": \"246\"\n}, {\n \"iso2\": \"VG\",\n \"name\": \"British Virgin Islands\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"BN\",\n \"name\": \"Brunei\",\n \"prefix\": \"673\"\n}, {\n \"iso2\": \"BG\",\n \"name\": \"Bulgaria\",\n \"prefix\": \"359\"\n}, {\n \"iso2\": \"BF\",\n \"name\": \"Burkina Faso\",\n \"prefix\": \"226\"\n}, {\n \"iso2\": \"BI\",\n \"name\": \"Burundi\",\n \"prefix\": \"257\"\n}, {\n \"iso2\": \"KH\",\n \"name\": \"Cambodia\",\n \"prefix\": \"855\"\n}, {\n \"iso2\": \"CM\",\n \"name\": \"Cameroon\",\n \"prefix\": \"237\"\n}, {\n \"iso2\": \"CA\",\n \"name\": \"Canada\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"CV\",\n \"name\": \"Cape Verde\",\n \"prefix\": \"238\"\n}, {\n \"iso2\": \"BQ\",\n \"name\": \"Caribbean Netherlands\",\n \"prefix\": \"599\"\n}, {\n \"iso2\": \"KY\",\n \"name\": \"Cayman Islands\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"CF\",\n \"name\": \"Central African Republic\",\n \"prefix\": \"236\"\n}, {\n \"iso2\": \"TD\",\n \"name\": \"Chad\",\n \"prefix\": \"235\"\n}, {\n \"iso2\": \"CL\",\n \"name\": \"Chile\",\n \"prefix\": \"56\"\n}, {\n \"iso2\": \"CN\",\n \"name\": \"China\",\n \"prefix\": \"86\"\n}, {\n \"iso2\": \"CX\",\n \"name\": \"Christmas Island\",\n \"prefix\": \"61\"\n}, {\n \"iso2\": \"CC\",\n \"name\": \"Cocos (Keeling) Islands\",\n \"prefix\": \"61\"\n}, {\n \"iso2\": \"CO\",\n \"name\": \"Colombia\",\n \"prefix\": \"57\"\n}, {\n \"iso2\": \"KM\",\n \"name\": \"Comoros\",\n \"prefix\": \"269\"\n}, {\n \"iso2\": \"CG\",\n \"name\": \"Congo - Brazzaville\",\n \"prefix\": \"242\"\n}, {\n \"iso2\": \"CD\",\n \"name\": \"Congo - Kinshasa\",\n \"prefix\": \"243\"\n}, {\n \"iso2\": \"CK\",\n \"name\": \"Cook Islands\",\n \"prefix\": \"682\"\n}, {\n \"iso2\": \"CR\",\n \"name\": \"Costa Rica\",\n \"prefix\": \"506\"\n}, {\n \"iso2\": \"HR\",\n \"name\": \"Croatia\",\n \"prefix\": \"385\"\n}, {\n \"iso2\": \"CU\",\n \"name\": \"Cuba\",\n \"prefix\": \"53\"\n}, {\n \"iso2\": \"CW\",\n \"name\": \"Cura\\xE7ao\",\n \"prefix\": \"599\"\n}, {\n \"iso2\": \"CY\",\n \"name\": \"Cyprus\",\n \"prefix\": \"357\"\n}, {\n \"iso2\": \"CZ\",\n \"name\": \"Czech Republic\",\n \"prefix\": \"420\"\n}, {\n \"iso2\": \"CI\",\n \"name\": \"C\\xF4te d\\u2019Ivoire\",\n \"prefix\": \"225\"\n}, {\n \"iso2\": \"DK\",\n \"name\": \"Denmark\",\n \"prefix\": \"45\"\n}, {\n \"iso2\": \"DJ\",\n \"name\": \"Djibouti\",\n \"prefix\": \"253\"\n}, {\n \"iso2\": \"DM\",\n \"name\": \"Dominica\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"DO\",\n \"name\": \"Dominican Republic\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"EC\",\n \"name\": \"Ecuador\",\n \"prefix\": \"593\"\n}, {\n \"iso2\": \"EG\",\n \"name\": \"Egypt\",\n \"prefix\": \"20\"\n}, {\n \"iso2\": \"SV\",\n \"name\": \"El Salvador\",\n \"prefix\": \"503\"\n}, {\n \"iso2\": \"GQ\",\n \"name\": \"Equatorial Guinea\",\n \"prefix\": \"240\"\n}, {\n \"iso2\": \"ER\",\n \"name\": \"Eritrea\",\n \"prefix\": \"291\"\n}, {\n \"iso2\": \"EE\",\n \"name\": \"Estonia\",\n \"prefix\": \"372\"\n}, {\n \"iso2\": \"ET\",\n \"name\": \"Ethiopia\",\n \"prefix\": \"251\"\n}, {\n \"iso2\": \"FK\",\n \"name\": \"Falkland Islands\",\n \"prefix\": \"500\"\n}, {\n \"iso2\": \"FO\",\n \"name\": \"Faroe Islands\",\n \"prefix\": \"298\"\n}, {\n \"iso2\": \"FJ\",\n \"name\": \"Fiji\",\n \"prefix\": \"679\"\n}, {\n \"iso2\": \"FI\",\n \"name\": \"Finland\",\n \"prefix\": \"358\"\n}, {\n \"iso2\": \"FR\",\n \"name\": \"France\",\n \"prefix\": \"33\"\n}, {\n \"iso2\": \"GF\",\n \"name\": \"French Guiana\",\n \"prefix\": \"594\"\n}, {\n \"iso2\": \"PF\",\n \"name\": \"French Polynesia\",\n \"prefix\": \"689\"\n}, {\n \"iso2\": \"TF\",\n \"name\": \"French Southern Territories\",\n \"prefix\": \"262\"\n}, {\n \"iso2\": \"GA\",\n \"name\": \"Gabon\",\n \"prefix\": \"241\"\n}, {\n \"iso2\": \"GM\",\n \"name\": \"Gambia\",\n \"prefix\": \"220\"\n}, {\n \"iso2\": \"GE\",\n \"name\": \"Georgia\",\n \"prefix\": \"995\"\n}, {\n \"iso2\": \"DE\",\n \"name\": \"Germany\",\n \"prefix\": \"49\"\n}, {\n \"iso2\": \"GH\",\n \"name\": \"Ghana\",\n \"prefix\": \"233\"\n}, {\n \"iso2\": \"GI\",\n \"name\": \"Gibraltar\",\n \"prefix\": \"350\"\n}, {\n \"iso2\": \"GR\",\n \"name\": \"Greece\",\n \"prefix\": \"30\"\n}, {\n \"iso2\": \"GL\",\n \"name\": \"Greenland\",\n \"prefix\": \"299\"\n}, {\n \"iso2\": \"GD\",\n \"name\": \"Grenada\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"GP\",\n \"name\": \"Guadeloupe\",\n \"prefix\": \"590\"\n}, {\n \"iso2\": \"GU\",\n \"name\": \"Guam\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"GT\",\n \"name\": \"Guatemala\",\n \"prefix\": \"502\"\n}, {\n \"iso2\": \"GG\",\n \"name\": \"Guernsey\",\n \"prefix\": \"44\"\n}, {\n \"iso2\": \"GN\",\n \"name\": \"Guinea\",\n \"prefix\": \"224\"\n}, {\n \"iso2\": \"GW\",\n \"name\": \"Guinea-Bissau\",\n \"prefix\": \"245\"\n}, {\n \"iso2\": \"GY\",\n \"name\": \"Guyana\",\n \"prefix\": \"592\"\n}, {\n \"iso2\": \"HT\",\n \"name\": \"Haiti\",\n \"prefix\": \"509\"\n}, {\n \"iso2\": \"HM\",\n \"name\": \"Heard & McDonald Islands\",\n \"prefix\": \"672\"\n}, {\n \"iso2\": \"HN\",\n \"name\": \"Honduras\",\n \"prefix\": \"504\"\n}, {\n \"iso2\": \"HK\",\n \"name\": \"Hong Kong\",\n \"prefix\": \"852\"\n}, {\n \"iso2\": \"HU\",\n \"name\": \"Hungary\",\n \"prefix\": \"36\"\n}, {\n \"iso2\": \"IS\",\n \"name\": \"Iceland\",\n \"prefix\": \"354\"\n}, {\n \"iso2\": \"IN\",\n \"name\": \"India\",\n \"prefix\": \"91\"\n}, {\n \"iso2\": \"ID\",\n \"name\": \"Indonesia\",\n \"prefix\": \"62\"\n}, {\n \"iso2\": \"IR\",\n \"name\": \"Iran\",\n \"prefix\": \"98\"\n}, {\n \"iso2\": \"IQ\",\n \"name\": \"Iraq\",\n \"prefix\": \"964\"\n}, {\n \"iso2\": \"IE\",\n \"name\": \"Ireland\",\n \"prefix\": \"353\"\n}, {\n \"iso2\": \"IM\",\n \"name\": \"Isle of Man\",\n \"prefix\": \"44\"\n}, {\n \"iso2\": \"IL\",\n \"name\": \"Israel\",\n \"prefix\": \"972\"\n}, {\n \"iso2\": \"IT\",\n \"name\": \"Italy\",\n \"prefix\": \"39\"\n}, {\n \"iso2\": \"JM\",\n \"name\": \"Jamaica\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"JP\",\n \"name\": \"Japan\",\n \"prefix\": \"81\"\n}, {\n \"iso2\": \"JE\",\n \"name\": \"Jersey\",\n \"prefix\": \"44\"\n}, {\n \"iso2\": \"JO\",\n \"name\": \"Jordan\",\n \"prefix\": \"962\"\n}, {\n \"iso2\": \"KZ\",\n \"name\": \"Kazakhstan\",\n \"prefix\": \"7\"\n}, {\n \"iso2\": \"KE\",\n \"name\": \"Kenya\",\n \"prefix\": \"254\"\n}, {\n \"iso2\": \"KI\",\n \"name\": \"Kiribati\",\n \"prefix\": \"686\"\n}, {\n \"iso2\": \"KW\",\n \"name\": \"Kuwait\",\n \"prefix\": \"965\"\n}, {\n \"iso2\": \"KG\",\n \"name\": \"Kyrgyzstan\",\n \"prefix\": \"996\"\n}, {\n \"iso2\": \"LA\",\n \"name\": \"Laos\",\n \"prefix\": \"856\"\n}, {\n \"iso2\": \"LV\",\n \"name\": \"Latvia\",\n \"prefix\": \"371\"\n}, {\n \"iso2\": \"LB\",\n \"name\": \"Lebanon\",\n \"prefix\": \"961\"\n}, {\n \"iso2\": \"LS\",\n \"name\": \"Lesotho\",\n \"prefix\": \"266\"\n}, {\n \"iso2\": \"LR\",\n \"name\": \"Liberia\",\n \"prefix\": \"231\"\n}, {\n \"iso2\": \"LY\",\n \"name\": \"Libya\",\n \"prefix\": \"218\"\n}, {\n \"iso2\": \"LI\",\n \"name\": \"Liechtenstein\",\n \"prefix\": \"423\"\n}, {\n \"iso2\": \"LT\",\n \"name\": \"Lithuania\",\n \"prefix\": \"370\"\n}, {\n \"iso2\": \"LU\",\n \"name\": \"Luxembourg\",\n \"prefix\": \"352\"\n}, {\n \"iso2\": \"MO\",\n \"name\": \"Macau\",\n \"prefix\": \"853\"\n}, {\n \"iso2\": \"MK\",\n \"name\": \"Macedonia\",\n \"prefix\": \"389\"\n}, {\n \"iso2\": \"MG\",\n \"name\": \"Madagascar\",\n \"prefix\": \"261\"\n}, {\n \"iso2\": \"MW\",\n \"name\": \"Malawi\",\n \"prefix\": \"265\"\n}, {\n \"iso2\": \"MY\",\n \"name\": \"Malaysia\",\n \"prefix\": \"60\"\n}, {\n \"iso2\": \"MV\",\n \"name\": \"Maldives\",\n \"prefix\": \"960\"\n}, {\n \"iso2\": \"ML\",\n \"name\": \"Mali\",\n \"prefix\": \"223\"\n}, {\n \"iso2\": \"MT\",\n \"name\": \"Malta\",\n \"prefix\": \"356\"\n}, {\n \"iso2\": \"MH\",\n \"name\": \"Marshall Islands\",\n \"prefix\": \"692\"\n}, {\n \"iso2\": \"MQ\",\n \"name\": \"Martinique\",\n \"prefix\": \"596\"\n}, {\n \"iso2\": \"MR\",\n \"name\": \"Mauritania\",\n \"prefix\": \"222\"\n}, {\n \"iso2\": \"MU\",\n \"name\": \"Mauritius\",\n \"prefix\": \"230\"\n}, {\n \"iso2\": \"YT\",\n \"name\": \"Mayotte\",\n \"prefix\": \"262\"\n}, {\n \"iso2\": \"MX\",\n \"name\": \"Mexico\",\n \"prefix\": \"52\"\n}, {\n \"iso2\": \"FM\",\n \"name\": \"Micronesia\",\n \"prefix\": \"691\"\n}, {\n \"iso2\": \"MD\",\n \"name\": \"Moldova\",\n \"prefix\": \"373\"\n}, {\n \"iso2\": \"MC\",\n \"name\": \"Monaco\",\n \"prefix\": \"377\"\n}, {\n \"iso2\": \"MN\",\n \"name\": \"Mongolia\",\n \"prefix\": \"976\"\n}, {\n \"iso2\": \"ME\",\n \"name\": \"Montenegro\",\n \"prefix\": \"382\"\n}, {\n \"iso2\": \"MS\",\n \"name\": \"Montserrat\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"MA\",\n \"name\": \"Morocco\",\n \"prefix\": \"212\"\n}, {\n \"iso2\": \"MZ\",\n \"name\": \"Mozambique\",\n \"prefix\": \"258\"\n}, {\n \"iso2\": \"MM\",\n \"name\": \"Myanmar\",\n \"prefix\": \"95\"\n}, {\n \"iso2\": \"NA\",\n \"name\": \"Namibia\",\n \"prefix\": \"264\"\n}, {\n \"iso2\": \"NR\",\n \"name\": \"Nauru\",\n \"prefix\": \"674\"\n}, {\n \"iso2\": \"NP\",\n \"name\": \"Nepal\",\n \"prefix\": \"977\"\n}, {\n \"iso2\": \"NL\",\n \"name\": \"Netherlands\",\n \"prefix\": \"31\"\n}, {\n \"iso2\": \"NC\",\n \"name\": \"New Caledonia\",\n \"prefix\": \"687\"\n}, {\n \"iso2\": \"NZ\",\n \"name\": \"New Zealand\",\n \"prefix\": \"64\"\n}, {\n \"iso2\": \"NI\",\n \"name\": \"Nicaragua\",\n \"prefix\": \"505\"\n}, {\n \"iso2\": \"NE\",\n \"name\": \"Niger\",\n \"prefix\": \"227\"\n}, {\n \"iso2\": \"NG\",\n \"name\": \"Nigeria\",\n \"prefix\": \"234\"\n}, {\n \"iso2\": \"NU\",\n \"name\": \"Niue\",\n \"prefix\": \"683\"\n}, {\n \"iso2\": \"NF\",\n \"name\": \"Norfolk Island\",\n \"prefix\": \"672\"\n}, {\n \"iso2\": \"KP\",\n \"name\": \"North Korea\",\n \"prefix\": \"850\"\n}, {\n \"iso2\": \"MP\",\n \"name\": \"Northern Mariana Islands\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"NO\",\n \"name\": \"Norway\",\n \"prefix\": \"47\"\n}, {\n \"iso2\": \"OM\",\n \"name\": \"Oman\",\n \"prefix\": \"968\"\n}, {\n \"iso2\": \"PK\",\n \"name\": \"Pakistan\",\n \"prefix\": \"92\"\n}, {\n \"iso2\": \"PW\",\n \"name\": \"Palau\",\n \"prefix\": \"680\"\n}, {\n \"iso2\": \"PS\",\n \"name\": \"Palestine\",\n \"prefix\": \"970\"\n}, {\n \"iso2\": \"PA\",\n \"name\": \"Panama\",\n \"prefix\": \"507\"\n}, {\n \"iso2\": \"PG\",\n \"name\": \"Papua New Guinea\",\n \"prefix\": \"675\"\n}, {\n \"iso2\": \"PY\",\n \"name\": \"Paraguay\",\n \"prefix\": \"595\"\n}, {\n \"iso2\": \"PE\",\n \"name\": \"Peru\",\n \"prefix\": \"51\"\n}, {\n \"iso2\": \"PH\",\n \"name\": \"Philippines\",\n \"prefix\": \"63\"\n}, {\n \"iso2\": \"PN\",\n \"name\": \"Pitcairn Islands\",\n \"prefix\": \"870\"\n}, {\n \"iso2\": \"PL\",\n \"name\": \"Poland\",\n \"prefix\": \"48\"\n}, {\n \"iso2\": \"PT\",\n \"name\": \"Portugal\",\n \"prefix\": \"351\"\n}, {\n \"iso2\": \"PR\",\n \"name\": \"Puerto Rico\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"QA\",\n \"name\": \"Qatar\",\n \"prefix\": \"974\"\n}, {\n \"iso2\": \"RO\",\n \"name\": \"Romania\",\n \"prefix\": \"40\"\n}, {\n \"iso2\": \"RU\",\n \"name\": \"Russia\",\n \"prefix\": \"7\"\n}, {\n \"iso2\": \"RW\",\n \"name\": \"Rwanda\",\n \"prefix\": \"250\"\n}, {\n \"iso2\": \"RE\",\n \"name\": \"R\\xE9union\",\n \"prefix\": \"262\"\n}, {\n \"iso2\": \"WS\",\n \"name\": \"Samoa\",\n \"prefix\": \"685\"\n}, {\n \"iso2\": \"SM\",\n \"name\": \"San Marino\",\n \"prefix\": \"378\"\n}, {\n \"iso2\": \"SA\",\n \"name\": \"Saudi Arabia\",\n \"prefix\": \"966\"\n}, {\n \"iso2\": \"SN\",\n \"name\": \"Senegal\",\n \"prefix\": \"221\"\n}, {\n \"iso2\": \"RS\",\n \"name\": \"Serbia\",\n \"prefix\": \"381 p\"\n}, {\n \"iso2\": \"SC\",\n \"name\": \"Seychelles\",\n \"prefix\": \"248\"\n}, {\n \"iso2\": \"SL\",\n \"name\": \"Sierra Leone\",\n \"prefix\": \"232\"\n}, {\n \"iso2\": \"SG\",\n \"name\": \"Singapore\",\n \"prefix\": \"65\"\n}, {\n \"iso2\": \"SX\",\n \"name\": \"Sint Maarten\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"SK\",\n \"name\": \"Slovakia\",\n \"prefix\": \"421\"\n}, {\n \"iso2\": \"SI\",\n \"name\": \"Slovenia\",\n \"prefix\": \"386\"\n}, {\n \"iso2\": \"SB\",\n \"name\": \"Solomon Islands\",\n \"prefix\": \"677\"\n}, {\n \"iso2\": \"SO\",\n \"name\": \"Somalia\",\n \"prefix\": \"252\"\n}, {\n \"iso2\": \"ZA\",\n \"name\": \"South Africa\",\n \"prefix\": \"27\"\n}, {\n \"iso2\": \"GS\",\n \"name\": \"South Georgia & South Sandwich Islands\",\n \"prefix\": \"500\"\n}, {\n \"iso2\": \"KR\",\n \"name\": \"South Korea\",\n \"prefix\": \"82\"\n}, {\n \"iso2\": \"SS\",\n \"name\": \"South Sudan\",\n \"prefix\": \"211\"\n}, {\n \"iso2\": \"ES\",\n \"name\": \"Spain\",\n \"prefix\": \"34\"\n}, {\n \"iso2\": \"LK\",\n \"name\": \"Sri Lanka\",\n \"prefix\": \"94\"\n}, {\n \"iso2\": \"BL\",\n \"name\": \"St. Barth\\xE9lemy\",\n \"prefix\": \"590\"\n}, {\n \"iso2\": \"SH\",\n \"name\": \"St. Helena\",\n \"prefix\": \"290 n\"\n}, {\n \"iso2\": \"KN\",\n \"name\": \"St. Kitts & Nevis\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"LC\",\n \"name\": \"St. Lucia\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"MF\",\n \"name\": \"St. Martin\",\n \"prefix\": \"590\"\n}, {\n \"iso2\": \"PM\",\n \"name\": \"St. Pierre & Miquelon\",\n \"prefix\": \"508\"\n}, {\n \"iso2\": \"VC\",\n \"name\": \"St. Vincent & Grenadines\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"SD\",\n \"name\": \"Sudan\",\n \"prefix\": \"249\"\n}, {\n \"iso2\": \"SR\",\n \"name\": \"Suriname\",\n \"prefix\": \"597\"\n}, {\n \"iso2\": \"SJ\",\n \"name\": \"Svalbard & Jan Mayen\",\n \"prefix\": \"47\"\n}, {\n \"iso2\": \"SZ\",\n \"name\": \"Swaziland\",\n \"prefix\": \"268\"\n}, {\n \"iso2\": \"SE\",\n \"name\": \"Sweden\",\n \"prefix\": \"46\"\n}, {\n \"iso2\": \"CH\",\n \"name\": \"Switzerland\",\n \"prefix\": \"41\"\n}, {\n \"iso2\": \"SY\",\n \"name\": \"Syria\",\n \"prefix\": \"963\"\n}, {\n \"iso2\": \"ST\",\n \"name\": \"S\\xE3o Tom\\xE9 & Pr\\xEDncipe\",\n \"prefix\": \"239\"\n}, {\n \"iso2\": \"TW\",\n \"name\": \"Taiwan\",\n \"prefix\": \"886\"\n}, {\n \"iso2\": \"TJ\",\n \"name\": \"Tajikistan\",\n \"prefix\": \"992\"\n}, {\n \"iso2\": \"TZ\",\n \"name\": \"Tanzania\",\n \"prefix\": \"255\"\n}, {\n \"iso2\": \"TH\",\n \"name\": \"Thailand\",\n \"prefix\": \"66\"\n}, {\n \"iso2\": \"TL\",\n \"name\": \"Timor-Leste\",\n \"prefix\": \"670\"\n}, {\n \"iso2\": \"TG\",\n \"name\": \"Togo\",\n \"prefix\": \"228\"\n}, {\n \"iso2\": \"TK\",\n \"name\": \"Tokelau\",\n \"prefix\": \"690\"\n}, {\n \"iso2\": \"TO\",\n \"name\": \"Tonga\",\n \"prefix\": \"676\"\n}, {\n \"iso2\": \"TT\",\n \"name\": \"Trinidad & Tobago\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"TN\",\n \"name\": \"Tunisia\",\n \"prefix\": \"216\"\n}, {\n \"iso2\": \"TR\",\n \"name\": \"Turkey\",\n \"prefix\": \"90\"\n}, {\n \"iso2\": \"TM\",\n \"name\": \"Turkmenistan\",\n \"prefix\": \"993\"\n}, {\n \"iso2\": \"TC\",\n \"name\": \"Turks & Caicos Islands\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"TV\",\n \"name\": \"Tuvalu\",\n \"prefix\": \"688\"\n}, {\n \"iso2\": \"VI\",\n \"name\": \"U.S. Virgin Islands\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"UG\",\n \"name\": \"Uganda\",\n \"prefix\": \"256\"\n}, {\n \"iso2\": \"UA\",\n \"name\": \"Ukraine\",\n \"prefix\": \"380\"\n}, {\n \"iso2\": \"AE\",\n \"name\": \"United Arab Emirates\",\n \"prefix\": \"971\"\n}, {\n \"iso2\": \"UY\",\n \"name\": \"Uruguay\",\n \"prefix\": \"598\"\n}, {\n \"iso2\": \"UZ\",\n \"name\": \"Uzbekistan\",\n \"prefix\": \"998\"\n}, {\n \"iso2\": \"VU\",\n \"name\": \"Vanuatu\",\n \"prefix\": \"678\"\n}, {\n \"iso2\": \"VA\",\n \"name\": \"Vatican City\",\n \"prefix\": \"39\"\n}, {\n \"iso2\": \"VE\",\n \"name\": \"Venezuela\",\n \"prefix\": \"58\"\n}, {\n \"iso2\": \"VN\",\n \"name\": \"Vietnam\",\n \"prefix\": \"84\"\n}, {\n \"iso2\": \"WF\",\n \"name\": \"Wallis & Futuna\",\n \"prefix\": \"681\"\n}, {\n \"iso2\": \"EH\",\n \"name\": \"Western Sahara\",\n \"prefix\": \"212\"\n}, {\n \"iso2\": \"YE\",\n \"name\": \"Yemen\",\n \"prefix\": \"967\"\n}, {\n \"iso2\": \"ZM\",\n \"name\": \"Zambia\",\n \"prefix\": \"260\"\n}, {\n \"iso2\": \"ZW\",\n \"name\": \"Zimbabwe\",\n \"prefix\": \"263\"\n}];\n//# sourceMappingURL=phonenumber.js.map","module.exports = {\n\tMODE_NUMBER :\t\t1 << 0,\n\tMODE_ALPHA_NUM : \t1 << 1,\n\tMODE_8BIT_BYTE : \t1 << 2,\n\tMODE_KANJI :\t\t1 << 3\n};\n","module.exports = {\n\tL : 1,\n\tM : 0,\n\tQ : 3,\n\tH : 2\n};\n\n","var math = require('./math');\n\nfunction QRPolynomial(num, shift) {\n\n\tif (num.length == undefined) {\n\t\tthrow new Error(num.length + \"/\" + shift);\n\t}\n\n\tvar offset = 0;\n\n\twhile (offset < num.length && num[offset] == 0) {\n\t\toffset++;\n\t}\n\n\tthis.num = new Array(num.length - offset + shift);\n\tfor (var i = 0; i < num.length - offset; i++) {\n\t\tthis.num[i] = num[i + offset];\n\t}\n}\n\nQRPolynomial.prototype = {\n\n\tget : function(index) {\n\t\treturn this.num[index];\n\t},\n\t\n\tgetLength : function() {\n\t\treturn this.num.length;\n\t},\n\t\n\tmultiply : function(e) {\n\t\n\t\tvar num = new Array(this.getLength() + e.getLength() - 1);\n\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tfor (var j = 0; j < e.getLength(); j++) {\n\t\t\t\tnum[i + j] ^= math.gexp(math.glog(this.get(i) ) + math.glog(e.get(j) ) );\n\t\t\t}\n\t\t}\n\t\n\t\treturn new QRPolynomial(num, 0);\n\t},\n\t\n\tmod : function(e) {\n\t\n\t\tif (this.getLength() - e.getLength() < 0) {\n\t\t\treturn this;\n\t\t}\n\t\n\t\tvar ratio = math.glog(this.get(0) ) - math.glog(e.get(0) );\n\t\n\t\tvar num = new Array(this.getLength() );\n\t\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tnum[i] = this.get(i);\n\t\t}\n\t\t\n\t\tfor (var i = 0; i < e.getLength(); i++) {\n\t\t\tnum[i] ^= math.gexp(math.glog(e.get(i) ) + ratio);\n\t\t}\n\t\n\t\t// recursive call\n\t\treturn new QRPolynomial(num, 0).mod(e);\n\t}\n};\n\nmodule.exports = QRPolynomial;\n","var QRMath = {\n\n\tglog : function(n) {\n\t\n\t\tif (n < 1) {\n\t\t\tthrow new Error(\"glog(\" + n + \")\");\n\t\t}\n\t\t\n\t\treturn QRMath.LOG_TABLE[n];\n\t},\n\t\n\tgexp : function(n) {\n\t\n\t\twhile (n < 0) {\n\t\t\tn += 255;\n\t\t}\n\t\n\t\twhile (n >= 256) {\n\t\t\tn -= 255;\n\t\t}\n\t\n\t\treturn QRMath.EXP_TABLE[n];\n\t},\n\t\n\tEXP_TABLE : new Array(256),\n\t\n\tLOG_TABLE : new Array(256)\n\n};\n\t\nfor (var i = 0; i < 8; i++) {\n\tQRMath.EXP_TABLE[i] = 1 << i;\n}\nfor (var i = 8; i < 256; i++) {\n\tQRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4]\n\t\t^ QRMath.EXP_TABLE[i - 5]\n\t\t^ QRMath.EXP_TABLE[i - 6]\n\t\t^ QRMath.EXP_TABLE[i - 8];\n}\nfor (var i = 0; i < 255; i++) {\n\tQRMath.LOG_TABLE[QRMath.EXP_TABLE[i] ] = i;\n}\n\nmodule.exports = QRMath;\n","'use strict';\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar React = require('react');\nvar ReactDOM = require('react-dom');\nvar GeminiScrollbar = require('gemini-scrollbar');\n\nmodule.exports = React.createClass({\n displayName: 'GeminiScrollbar',\n\n propTypes: {\n autoshow: React.PropTypes.bool,\n forceGemini: React.PropTypes.bool,\n onResize: React.PropTypes.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n autoshow: false,\n forceGemini: false\n };\n },\n\n\n /**\n * Holds the reference to the GeminiScrollbar instance.\n * @property scrollbar <public> [Object]\n */\n scrollbar: null,\n\n componentDidMount: function componentDidMount() {\n this.scrollbar = new GeminiScrollbar({\n element: ReactDOM.findDOMNode(this),\n autoshow: this.props.autoshow,\n forceGemini: this.props.forceGemini,\n createElements: false,\n onResize: this.props.onResize\n }).create();\n },\n componentDidUpdate: function componentDidUpdate() {\n this.scrollbar.update();\n },\n componentWillUnmount: function componentWillUnmount() {\n if (this.scrollbar) {\n this.scrollbar.destroy();\n }\n this.scrollbar = null;\n },\n render: function render() {\n var _props = this.props;\n var className = _props.className;\n var children = _props.children;\n var autoshow = _props.autoshow;\n var forceGemini = _props.forceGemini;\n var onResize = _props.onResize;\n var other = _objectWithoutProperties(_props, ['className', 'children', 'autoshow', 'forceGemini', 'onResize']);\n var classes = '';\n\n if (className) {\n classes += ' ' + className;\n }\n\n return React.createElement(\n 'div',\n _extends({}, other, { className: classes }),\n React.createElement(\n 'div',\n { className: 'gm-scrollbar -vertical' },\n React.createElement('div', { className: 'thumb' })\n ),\n React.createElement(\n 'div',\n { className: 'gm-scrollbar -horizontal' },\n React.createElement('div', { className: 'thumb' })\n ),\n React.createElement(\n 'div',\n { className: 'gm-scroll-view', ref: 'scroll-view' },\n children\n )\n );\n }\n});\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _WidgetUtils = require('../../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AppPermission = function (_React$Component) {\n (0, _inherits3.default)(AppPermission, _React$Component);\n\n function AppPermission(props) {\n (0, _classCallCheck3.default)(this, AppPermission);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (AppPermission.__proto__ || (0, _getPrototypeOf2.default)(AppPermission)).call(this, props));\n\n var curlBase = _this.getCurlBase();\n _this.state = { curlBase: curlBase };\n return _this;\n }\n\n // Return string representation of content URL without query parameters\n\n\n (0, _createClass3.default)(AppPermission, [{\n key: 'getCurlBase',\n value: function getCurlBase() {\n var wurl = _url2.default.parse(this.props.url);\n var curl = void 0;\n var curlString = void 0;\n\n var searchParams = new URLSearchParams(wurl.search);\n\n if (_WidgetUtils2.default.isScalarUrl(wurl) && searchParams && searchParams.get('url')) {\n curl = _url2.default.parse(searchParams.get('url'));\n if (curl) {\n curl.search = curl.query = \"\";\n curlString = curl.format();\n }\n }\n if (!curl && wurl) {\n wurl.search = wurl.query = \"\";\n curlString = wurl.format();\n }\n return curlString;\n }\n }, {\n key: 'render',\n value: function render() {\n var e2eWarningText = void 0;\n if (this.props.isRoomEncrypted) {\n e2eWarningText = _react2.default.createElement(\n 'span',\n { className: 'mx_AppPermissionWarningTextLabel' },\n (0, _languageHandler._t)('NOTE: Apps are not end-to-end encrypted')\n );\n }\n var cookieWarning = _react2.default.createElement(\n 'span',\n { className: 'mx_AppPermissionWarningTextLabel' },\n (0, _languageHandler._t)('Warning: This widget might use cookies.')\n );\n return _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarning' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarningImage' },\n _react2.default.createElement('img', { src: 'img/warning.svg', alt: (0, _languageHandler._t)('Warning!') })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarningText' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_AppPermissionWarningTextLabel' },\n (0, _languageHandler._t)('Do you want to load widget from URL:')\n ),\n ' ',\n _react2.default.createElement(\n 'span',\n { className: 'mx_AppPermissionWarningTextURL' },\n this.state.curlBase\n ),\n e2eWarningText,\n cookieWarning\n ),\n _react2.default.createElement('input', {\n className: 'mx_AppPermissionButton',\n type: 'button',\n value: (0, _languageHandler._t)('Allow'),\n onClick: this.props.onPermissionGranted\n })\n );\n }\n }]);\n return AppPermission;\n}(_react2.default.Component);\n\nexports.default = AppPermission;\n\n\nAppPermission.propTypes = {\n isRoomEncrypted: _propTypes2.default.bool,\n url: _propTypes2.default.string.isRequired,\n onPermissionGranted: _propTypes2.default.func.isRequired\n};\nAppPermission.defaultProps = {\n isRoomEncrypted: false,\n onPermissionGranted: function onPermissionGranted() {}\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=AppPermission.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _TintableSvg = require('./TintableSvg');\n\nvar _TintableSvg2 = _interopRequireDefault(_TintableSvg);\n\nvar _AccessibleButton = require('./AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar TintableSvgButton = function (_React$Component) {\n (0, _inherits3.default)(TintableSvgButton, _React$Component);\n\n function TintableSvgButton(props) {\n (0, _classCallCheck3.default)(this, TintableSvgButton);\n return (0, _possibleConstructorReturn3.default)(this, (TintableSvgButton.__proto__ || (0, _getPrototypeOf2.default)(TintableSvgButton)).call(this, props));\n }\n\n (0, _createClass3.default)(TintableSvgButton, [{\n key: 'render',\n value: function render() {\n var classes = \"mx_TintableSvgButton\";\n if (this.props.className) {\n classes += \" \" + this.props.className;\n }\n return _react2.default.createElement(\n 'span',\n {\n width: this.props.width,\n height: this.props.height,\n className: classes },\n _react2.default.createElement(_TintableSvg2.default, {\n src: this.props.src,\n width: this.props.width,\n height: this.props.height\n }),\n _react2.default.createElement(_AccessibleButton2.default, {\n onClick: this.props.onClick,\n element: 'span',\n title: this.props.title\n })\n );\n }\n }]);\n return TintableSvgButton;\n}(_react2.default.Component);\n\nexports.default = TintableSvgButton;\n\n\nTintableSvgButton.propTypes = {\n src: _propTypes2.default.string,\n title: _propTypes2.default.string,\n className: _propTypes2.default.string,\n width: _propTypes2.default.string.isRequired,\n height: _propTypes2.default.string.isRequired,\n onClick: _propTypes2.default.func\n};\n\nTintableSvgButton.defaultProps = {\n onClick: function onClick() {}\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=TintableSvgButton.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AppWarning = function AppWarning(props) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarning' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarningImage' },\n _react2.default.createElement('img', { src: 'img/warning.svg', alt: '' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarningText' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_AppPermissionWarningTextLabel' },\n props.errorMsg\n )\n )\n );\n}; // eslint-disable-line no-unused-vars\n\n\nAppWarning.propTypes = {\n errorMsg: _propTypes2.default.string\n};\nAppWarning.defaultProps = {\n errorMsg: 'Error'\n};\n\nexports.default = AppWarning;\nmodule.exports = exports['default'];\n//# sourceMappingURL=AppWarning.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MessageSpinner',\n\n render: function render() {\n var w = this.props.w || 32;\n var h = this.props.h || 32;\n var imgClass = this.props.imgClassName || \"\";\n var msg = this.props.msg || \"Loading...\";\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Spinner' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Spinner_Msg' },\n msg\n ),\n '\\xA0',\n _react2.default.createElement('img', { src: 'img/spinner.gif', width: w, height: h, className: imgClass })\n );\n }\n}); /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=MessageSpinner.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Keyboard = require('../../../Keyboard');\n\nvar _ContextualMenu = require('../../structures/ContextualMenu');\n\nvar ContextualMenu = _interopRequireWildcard(_ContextualMenu);\n\nvar _FlairStore = require('../../../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// A class for a child of TagPanel (possibly wrapped in a DNDTagTile) that represents\n// a thing to click on for the user to filter the visible rooms in the RoomList to:\n// - Rooms that are part of the group\n// - Direct messages with members of the group\n// with the intention that this could be expanded to arbitrary tags in future.\n/*\nCopyright 2017 New Vector Ltd.\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'TagTile',\n\n propTypes: {\n // A string tag such as \"m.favourite\" or a group ID such as \"+groupid:domain.bla\"\n // For now, only group IDs are handled.\n tag: _propTypes2.default.string\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n // Whether the mouse is over the tile\n hover: false,\n // The profile data of the group if this.props.tag is a group ID\n profile: null\n };\n },\n componentWillMount: function componentWillMount() {\n this.unmounted = false;\n if (this.props.tag[0] === '+') {\n _FlairStore2.default.addListener('updateGroupProfile', this._onFlairStoreUpdated);\n this._onFlairStoreUpdated();\n // New rooms or members may have been added to the group, fetch async\n this._refreshGroup(this.props.tag);\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n this.unmounted = true;\n if (this.props.tag[0] === '+') {\n _FlairStore2.default.removeListener('updateGroupProfile', this._onFlairStoreUpdated);\n }\n },\n _onFlairStoreUpdated: function _onFlairStoreUpdated() {\n var _this = this;\n\n if (this.unmounted) return;\n _FlairStore2.default.getGroupProfileCached(this.context.matrixClient, this.props.tag).then(function (profile) {\n if (_this.unmounted) return;\n _this.setState({ profile: profile });\n }).catch(function (err) {\n console.warn('Could not fetch group profile for ' + _this.props.tag, err);\n });\n },\n _refreshGroup: function _refreshGroup(groupId) {\n _GroupStore2.default.refreshGroupRooms(groupId);\n _GroupStore2.default.refreshGroupMembers(groupId);\n },\n\n\n onClick: function onClick(e) {\n e.preventDefault();\n e.stopPropagation();\n _dispatcher2.default.dispatch({\n action: 'select_tag',\n tag: this.props.tag,\n ctrlOrCmdKey: (0, _Keyboard.isOnlyCtrlOrCmdIgnoreShiftKeyEvent)(e),\n shiftKey: e.shiftKey\n });\n if (this.props.tag[0] === '+') {\n // New rooms or members may have been added to the group, fetch async\n this._refreshGroup(this.props.tag);\n }\n },\n\n _openContextMenu: function _openContextMenu(x, y, chevronOffset) {\n var _this2 = this;\n\n // Hide the (...) immediately\n this.setState({ hover: false });\n\n var TagTileContextMenu = _index2.default.getComponent('context_menus.TagTileContextMenu');\n ContextualMenu.createMenu(TagTileContextMenu, {\n chevronOffset: chevronOffset,\n left: x,\n top: y,\n tag: this.props.tag,\n onFinished: function onFinished() {\n _this2.setState({ menuDisplayed: false });\n }\n });\n this.setState({ menuDisplayed: true });\n },\n\n onContextButtonClick: function onContextButtonClick(e) {\n e.preventDefault();\n e.stopPropagation();\n\n var elementRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = elementRect.right + window.pageXOffset + 3;\n var chevronOffset = 12;\n var y = elementRect.top + elementRect.height / 2 + window.pageYOffset;\n y = y - (chevronOffset + 8); // where 8 is half the height of the chevron\n\n this._openContextMenu(x, y, chevronOffset);\n },\n\n onContextMenu: function onContextMenu(e) {\n e.preventDefault();\n\n var chevronOffset = 12;\n this._openContextMenu(e.clientX, e.clientY - (chevronOffset + 8), chevronOffset);\n },\n\n onMouseOver: function onMouseOver() {\n this.setState({ hover: true });\n },\n\n onMouseOut: function onMouseOut() {\n this.setState({ hover: false });\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var RoomTooltip = _index2.default.getComponent('rooms.RoomTooltip');\n var profile = this.state.profile || {};\n var name = profile.name || this.props.tag;\n var avatarHeight = 35;\n\n var httpUrl = profile.avatarUrl ? this.context.matrixClient.mxcUrlToHttp(profile.avatarUrl, avatarHeight, avatarHeight, \"crop\") : null;\n\n var className = (0, _classnames2.default)({\n mx_TagTile: true,\n mx_TagTile_selected: this.props.selected\n });\n\n var tip = this.state.hover ? _react2.default.createElement(RoomTooltip, { className: 'mx_TagTile_tooltip', label: name }) : _react2.default.createElement('div', null);\n var contextButton = this.state.hover || this.state.menuDisplayed ? _react2.default.createElement(\n 'div',\n { className: 'mx_TagTile_context_button', onClick: this.onContextButtonClick },\n '\\xB7\\xB7\\xB7'\n ) : _react2.default.createElement('div', null);\n return _react2.default.createElement(\n AccessibleButton,\n { className: className, onClick: this.onClick, onContextMenu: this.onContextMenu },\n _react2.default.createElement(\n 'div',\n { className: 'mx_TagTile_avatar', onMouseOver: this.onMouseOver, onMouseOut: this.onMouseOut },\n _react2.default.createElement(BaseAvatar, {\n name: name,\n idName: this.props.tag,\n url: httpUrl,\n width: avatarHeight,\n height: avatarHeight\n }),\n tip,\n contextButton\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=TagTile.js.map","/*\n Copyright 2017 New Vector Ltd.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _FlairStore = require('../../../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar FlairAvatar = function (_React$Component) {\n (0, _inherits3.default)(FlairAvatar, _React$Component);\n\n function FlairAvatar() {\n (0, _classCallCheck3.default)(this, FlairAvatar);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (FlairAvatar.__proto__ || (0, _getPrototypeOf2.default)(FlairAvatar)).call(this));\n\n _this.onClick = _this.onClick.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(FlairAvatar, [{\n key: 'onClick',\n value: function onClick(ev) {\n ev.preventDefault();\n // Don't trigger onClick of parent element\n ev.stopPropagation();\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: this.props.groupProfile.groupId\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var httpUrl = this.context.matrixClient.mxcUrlToHttp(this.props.groupProfile.avatarUrl, 16, 16, 'scale', false);\n var tooltip = this.props.groupProfile.name ? this.props.groupProfile.name + ' (' + this.props.groupProfile.groupId + ')' : this.props.groupProfile.groupId;\n return _react2.default.createElement('img', {\n src: httpUrl,\n width: '16',\n height: '16',\n onClick: this.onClick,\n title: tooltip });\n }\n }]);\n return FlairAvatar;\n}(_react2.default.Component);\n\nFlairAvatar.propTypes = {\n groupProfile: _propTypes2.default.shape({\n groupId: _propTypes2.default.string.isRequired,\n name: _propTypes2.default.string,\n avatarUrl: _propTypes2.default.string.isRequired\n })\n};\n\nFlairAvatar.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n};\n\nvar Flair = function (_React$Component2) {\n (0, _inherits3.default)(Flair, _React$Component2);\n\n function Flair() {\n (0, _classCallCheck3.default)(this, Flair);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (Flair.__proto__ || (0, _getPrototypeOf2.default)(Flair)).call(this));\n\n _this2.state = {\n profiles: []\n };\n return _this2;\n }\n\n (0, _createClass3.default)(Flair, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n this._unmounted = false;\n this._generateAvatars(this.props.groups);\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(newProps) {\n this._generateAvatars(newProps.groups);\n }\n }, {\n key: '_getGroupProfiles',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(groups) {\n var profiles, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, groupId, groupProfile;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n profiles = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 4;\n _iterator = (0, _getIterator3.default)(groups);\n\n case 6:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context.next = 22;\n break;\n }\n\n groupId = _step.value;\n groupProfile = null;\n _context.prev = 9;\n _context.next = 12;\n return (0, _bluebird.resolve)(_FlairStore2.default.getGroupProfileCached(this.context.matrixClient, groupId));\n\n case 12:\n groupProfile = _context.sent;\n _context.next = 18;\n break;\n\n case 15:\n _context.prev = 15;\n _context.t0 = _context['catch'](9);\n\n console.error('Could not get profile for group', groupId, _context.t0);\n\n case 18:\n profiles.push(groupProfile);\n\n case 19:\n _iteratorNormalCompletion = true;\n _context.next = 6;\n break;\n\n case 22:\n _context.next = 28;\n break;\n\n case 24:\n _context.prev = 24;\n _context.t1 = _context['catch'](4);\n _didIteratorError = true;\n _iteratorError = _context.t1;\n\n case 28:\n _context.prev = 28;\n _context.prev = 29;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 31:\n _context.prev = 31;\n\n if (!_didIteratorError) {\n _context.next = 34;\n break;\n }\n\n throw _iteratorError;\n\n case 34:\n return _context.finish(31);\n\n case 35:\n return _context.finish(28);\n\n case 36:\n return _context.abrupt('return', profiles.filter(function (p) {\n return p !== null;\n }));\n\n case 37:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 24, 28, 36], [9, 15], [29,, 31, 35]]);\n }));\n\n function _getGroupProfiles(_x) {\n return _ref.apply(this, arguments);\n }\n\n return _getGroupProfiles;\n }()\n }, {\n key: '_generateAvatars',\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(groups) {\n var profiles;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(!groups || groups.length === 0)) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 2:\n _context2.next = 4;\n return (0, _bluebird.resolve)(this._getGroupProfiles(groups));\n\n case 4:\n profiles = _context2.sent;\n\n if (!this.unmounted) {\n this.setState({\n profiles: profiles.filter(function (profile) {\n return profile ? profile.avatarUrl : false;\n })\n });\n }\n\n case 6:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function _generateAvatars(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return _generateAvatars;\n }()\n }, {\n key: 'render',\n value: function render() {\n if (this.state.profiles.length === 0) {\n return _react2.default.createElement('div', null);\n }\n var avatars = this.state.profiles.map(function (profile, index) {\n return _react2.default.createElement(FlairAvatar, { key: index, groupProfile: profile });\n });\n return _react2.default.createElement(\n 'span',\n { className: 'mx_Flair' },\n avatars\n );\n }\n }]);\n return Flair;\n}(_react2.default.Component);\n\nexports.default = Flair;\n\n\nFlair.propTypes = {\n groups: _propTypes2.default.arrayOf(_propTypes2.default.string)\n};\n\n// TODO: We've decided that all components should follow this pattern, which means removing withMatrixClient and using\n// this.context.matrixClient everywhere instead of this.props.matrixClient.\n// See https://github.com/vector-im/riot-web/issues/4951.\nFlair.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=Flair.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _ScalarAuthClient = require('../../../ScalarAuthClient');\n\nvar _ScalarAuthClient2 = _interopRequireDefault(_ScalarAuthClient);\n\nvar _ScalarMessaging = require('../../../ScalarMessaging');\n\nvar _ScalarMessaging2 = _interopRequireDefault(_ScalarMessaging);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _AccessibleButton = require('./AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _TintableSvg = require('./TintableSvg');\n\nvar _TintableSvg2 = _interopRequireDefault(_TintableSvg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ManageIntegsButton = function (_React$Component) {\n (0, _inherits3.default)(ManageIntegsButton, _React$Component);\n\n function ManageIntegsButton(props) {\n (0, _classCallCheck3.default)(this, ManageIntegsButton);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ManageIntegsButton.__proto__ || (0, _getPrototypeOf2.default)(ManageIntegsButton)).call(this, props));\n\n _this.state = {\n scalarError: null\n };\n\n _this.onManageIntegrations = _this.onManageIntegrations.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(ManageIntegsButton, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n _ScalarMessaging2.default.startListening();\n this.scalarClient = null;\n\n if (_SdkConfig2.default.get().integrations_ui_url && _SdkConfig2.default.get().integrations_rest_url) {\n this.scalarClient = new _ScalarAuthClient2.default();\n this.scalarClient.connect().done(function () {\n _this2.forceUpdate();\n }, function (err) {\n _this2.setState({ scalarError: err });\n console.error('Error whilst initialising scalarClient for ManageIntegsButton', err);\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _ScalarMessaging2.default.stopListening();\n }\n }, {\n key: 'onManageIntegrations',\n value: function onManageIntegrations(ev) {\n ev.preventDefault();\n if (this.state.scalarError && !this.scalarClient.hasCredentials()) {\n return;\n }\n var IntegrationsManager = _index2.default.getComponent(\"views.settings.IntegrationsManager\");\n _Modal2.default.createDialog(IntegrationsManager, {\n src: this.scalarClient !== null && this.scalarClient.hasCredentials() ? this.scalarClient.getScalarInterfaceUrlForRoom(this.props.room) : null\n }, \"mx_IntegrationsManager\");\n }\n }, {\n key: 'render',\n value: function render() {\n var integrationsButton = _react2.default.createElement('div', null);\n var integrationsWarningTriangle = _react2.default.createElement('div', null);\n var integrationsErrorPopup = _react2.default.createElement('div', null);\n if (this.scalarClient !== null) {\n var integrationsButtonClasses = (0, _classnames2.default)({\n mx_RoomHeader_button: true,\n mx_RoomSettings_integrationsButton_error: !!this.state.scalarError\n });\n\n if (this.state.scalarError && !this.scalarClient.hasCredentials()) {\n integrationsWarningTriangle = _react2.default.createElement('img', { src: 'img/warning.svg', title: (0, _languageHandler._t)('Integrations Error'), width: '17' });\n // Popup shown when hovering over integrationsButton_error (via CSS)\n integrationsErrorPopup = _react2.default.createElement(\n 'span',\n { className: 'mx_RoomSettings_integrationsButton_errorPopup' },\n (0, _languageHandler._t)('Could not connect to the integration server')\n );\n }\n\n integrationsButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: integrationsButtonClasses, onClick: this.onManageIntegrations, title: (0, _languageHandler._t)('Manage Integrations') },\n _react2.default.createElement(_TintableSvg2.default, { src: 'img/icons-apps.svg', width: '35', height: '35' }),\n integrationsWarningTriangle,\n integrationsErrorPopup\n );\n }\n\n return integrationsButton;\n }\n }]);\n return ManageIntegsButton;\n}(_react2.default.Component); /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = ManageIntegsButton;\n\n\nManageIntegsButton.propTypes = {\n room: _propTypes2.default.object.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=ManageIntegsButton.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _MFileBody = require('./MFileBody');\n\nvar _MFileBody2 = _interopRequireDefault(_MFileBody);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _DecryptFile = require('../../../utils/DecryptFile');\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MImageBody = function (_React$Component) {\n (0, _inherits3.default)(MImageBody, _React$Component);\n\n function MImageBody(props) {\n (0, _classCallCheck3.default)(this, MImageBody);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (MImageBody.__proto__ || (0, _getPrototypeOf2.default)(MImageBody)).call(this, props));\n\n _this.onImageError = _this.onImageError.bind(_this);\n _this.onImageLoad = _this.onImageLoad.bind(_this);\n _this.onImageEnter = _this.onImageEnter.bind(_this);\n _this.onImageLeave = _this.onImageLeave.bind(_this);\n _this.onClientSync = _this.onClientSync.bind(_this);\n _this.onClick = _this.onClick.bind(_this);\n _this._isGif = _this._isGif.bind(_this);\n\n _this.state = {\n decryptedUrl: null,\n decryptedThumbnailUrl: null,\n decryptedBlob: null,\n error: null,\n imgError: false,\n imgLoaded: false,\n loadedImageDimensions: null,\n hover: false\n };\n return _this;\n }\n\n (0, _createClass3.default)(MImageBody, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.unmounted = false;\n this.context.matrixClient.on('sync', this.onClientSync);\n }\n\n // FIXME: factor this out and aplpy it to MVideoBody and MAudioBody too!\n\n }, {\n key: 'onClientSync',\n value: function onClientSync(syncState, prevState) {\n if (this.unmounted) return;\n // Consider the client reconnected if there is no error with syncing.\n // This means the state could be RECONNECTING, SYNCING, PREPARED or CATCHUP.\n var reconnected = syncState !== \"ERROR\" && prevState !== syncState;\n if (reconnected && this.state.imgError) {\n // Load the image again\n this.setState({\n imgError: false\n });\n }\n }\n }, {\n key: 'onClick',\n value: function onClick(ev) {\n if (ev.button === 0 && !ev.metaKey) {\n ev.preventDefault();\n var content = this.props.mxEvent.getContent();\n var httpUrl = this._getContentUrl();\n var ImageView = _index2.default.getComponent(\"elements.ImageView\");\n var params = {\n src: httpUrl,\n name: content.body && content.body.length > 0 ? content.body : (0, _languageHandler._t)('Attachment'),\n mxEvent: this.props.mxEvent\n };\n\n if (content.info) {\n params.width = content.info.w;\n params.height = content.info.h;\n params.fileSize = content.info.size;\n }\n\n _Modal2.default.createDialog(ImageView, params, \"mx_Dialog_lightbox\");\n }\n }\n }, {\n key: '_isGif',\n value: function _isGif() {\n var content = this.props.mxEvent.getContent();\n return content && content.info && content.info.mimetype === \"image/gif\";\n }\n }, {\n key: 'onImageEnter',\n value: function onImageEnter(e) {\n this.setState({ hover: true });\n\n if (!this._isGif() || _SettingsStore2.default.getValue(\"autoplayGifsAndVideos\")) {\n return;\n }\n var imgElement = e.target;\n imgElement.src = this._getContentUrl();\n }\n }, {\n key: 'onImageLeave',\n value: function onImageLeave(e) {\n this.setState({ hover: false });\n\n if (!this._isGif() || _SettingsStore2.default.getValue(\"autoplayGifsAndVideos\")) {\n return;\n }\n var imgElement = e.target;\n imgElement.src = this._getThumbUrl();\n }\n }, {\n key: 'onImageError',\n value: function onImageError() {\n this.setState({\n imgError: true\n });\n }\n }, {\n key: 'onImageLoad',\n value: function onImageLoad() {\n this.props.onWidgetLoad();\n\n var loadedImageDimensions = void 0;\n\n if (this.refs.image) {\n var _refs$image = this.refs.image,\n naturalWidth = _refs$image.naturalWidth,\n naturalHeight = _refs$image.naturalHeight;\n\n\n loadedImageDimensions = { naturalWidth: naturalWidth, naturalHeight: naturalHeight };\n }\n\n this.setState({ imgLoaded: true, loadedImageDimensions: loadedImageDimensions });\n }\n }, {\n key: '_getContentUrl',\n value: function _getContentUrl() {\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined) {\n return this.state.decryptedUrl;\n } else {\n return this.context.matrixClient.mxcUrlToHttp(content.url);\n }\n }\n }, {\n key: '_getThumbUrl',\n value: function _getThumbUrl() {\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined) {\n // Don't use the thumbnail for clients wishing to autoplay gifs.\n if (this.state.decryptedThumbnailUrl) {\n return this.state.decryptedThumbnailUrl;\n }\n return this.state.decryptedUrl;\n } else if (content.info && content.info.mimetype === \"image/svg+xml\" && content.info.thumbnail_url) {\n // special case to return client-generated thumbnails for SVGs, if any,\n // given we deliberately don't thumbnail them serverside to prevent\n // billion lol attacks and similar\n return this.context.matrixClient.mxcUrlToHttp(content.info.thumbnail_url, 800, 600);\n } else {\n return this.context.matrixClient.mxcUrlToHttp(content.url, 800, 600);\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined && this.state.decryptedUrl === null) {\n var thumbnailPromise = _bluebird2.default.resolve(null);\n if (content.info && content.info.thumbnail_file) {\n thumbnailPromise = (0, _DecryptFile.decryptFile)(content.info.thumbnail_file).then(function (blob) {\n return URL.createObjectURL(blob);\n });\n }\n var decryptedBlob = void 0;\n thumbnailPromise.then(function (thumbnailUrl) {\n return (0, _DecryptFile.decryptFile)(content.file).then(function (blob) {\n decryptedBlob = blob;\n return URL.createObjectURL(blob);\n }).then(function (contentUrl) {\n _this2.setState({\n decryptedUrl: contentUrl,\n decryptedThumbnailUrl: thumbnailUrl,\n decryptedBlob: decryptedBlob\n });\n });\n }).catch(function (err) {\n console.warn(\"Unable to decrypt attachment: \", err);\n // Set a placeholder image when we can't decrypt the image.\n _this2.setState({\n error: err\n });\n }).done();\n }\n this._afterComponentDidMount();\n }\n\n // To be overridden by subclasses (e.g. MStickerBody) for further\n // initialisation after componentDidMount\n\n }, {\n key: '_afterComponentDidMount',\n value: function _afterComponentDidMount() {}\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unmounted = true;\n this.context.matrixClient.removeListener('sync', this.onClientSync);\n this._afterComponentWillUnmount();\n\n if (this.state.decryptedUrl) {\n URL.revokeObjectURL(this.state.decryptedUrl);\n }\n if (this.state.decryptedThumbnailUrl) {\n URL.revokeObjectURL(this.state.decryptedThumbnailUrl);\n }\n }\n\n // To be overridden by subclasses (e.g. MStickerBody) for further\n // cleanup after componentWillUnmount\n\n }, {\n key: '_afterComponentWillUnmount',\n value: function _afterComponentWillUnmount() {}\n }, {\n key: '_messageContent',\n value: function _messageContent(contentUrl, thumbUrl, content) {\n var infoWidth = void 0;\n var infoHeight = void 0;\n\n if (content && content.info && content.info.w && content.info.h) {\n infoWidth = content.info.w;\n infoHeight = content.info.h;\n } else {\n // Whilst the image loads, display nothing.\n //\n // Once loaded, use the loaded image dimensions stored in `loadedImageDimensions`.\n //\n // By doing this, the image \"pops\" into the timeline, but is still restricted\n // by the same width and height logic below.\n if (!this.state.loadedImageDimensions) {\n return this.wrapImage(contentUrl, _react2.default.createElement('img', { style: { display: 'none' }, src: thumbUrl, ref: 'image',\n alt: content.body,\n onError: this.onImageError,\n onLoad: this.onImageLoad\n }));\n }\n infoWidth = this.state.loadedImageDimensions.naturalWidth;\n infoHeight = this.state.loadedImageDimensions.naturalHeight;\n }\n\n // The maximum height of the thumbnail as it is rendered as an <img>\n var maxHeight = Math.min(this.props.maxImageHeight || 600, infoHeight);\n // The maximum width of the thumbnail, as dictated by its natural\n // maximum height.\n var maxWidth = infoWidth * maxHeight / infoHeight;\n\n var img = null;\n var placeholder = null;\n\n // e2e image hasn't been decrypted yet\n if (content.file !== undefined && this.state.decryptedUrl === null) {\n placeholder = _react2.default.createElement('img', { src: 'img/spinner.gif', alt: content.body, width: '32', height: '32' });\n } else if (!this.state.imgLoaded) {\n // Deliberately, getSpinner is left unimplemented here, MStickerBody overides\n placeholder = this.getPlaceholder();\n }\n\n var showPlaceholder = Boolean(placeholder);\n\n if (thumbUrl && !this.state.imgError) {\n // Restrict the width of the thumbnail here, otherwise it will fill the container\n // which has the same width as the timeline\n // mx_MImageBody_thumbnail resizes img to exactly container size\n img = _react2.default.createElement('img', { className: 'mx_MImageBody_thumbnail', src: thumbUrl, ref: 'image',\n style: { maxWidth: maxWidth + \"px\" },\n alt: content.body,\n onError: this.onImageError,\n onLoad: this.onImageLoad,\n onMouseEnter: this.onImageEnter,\n onMouseLeave: this.onImageLeave });\n }\n\n var thumbnail = _react2.default.createElement(\n 'div',\n { className: 'mx_MImageBody_thumbnail_container', style: { maxHeight: maxHeight + \"px\" } },\n _react2.default.createElement('div', { style: { paddingBottom: 100 * infoHeight / infoWidth + '%' } }),\n showPlaceholder && _react2.default.createElement(\n 'div',\n { className: 'mx_MImageBody_thumbnail', style: {\n // Constrain width here so that spinner appears central to the loaded thumbnail\n maxWidth: infoWidth + \"px\"\n } },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MImageBody_thumbnail_spinner' },\n placeholder\n )\n ),\n _react2.default.createElement(\n 'div',\n { style: { display: !showPlaceholder ? undefined : 'none' } },\n img\n ),\n this.state.hover && this.getTooltip()\n );\n\n return this.wrapImage(contentUrl, thumbnail);\n }\n\n // Overidden by MStickerBody\n\n }, {\n key: 'wrapImage',\n value: function wrapImage(contentUrl, children) {\n return _react2.default.createElement(\n 'a',\n { href: contentUrl, onClick: this.onClick },\n children\n );\n }\n\n // Overidden by MStickerBody\n\n }, {\n key: 'getPlaceholder',\n value: function getPlaceholder() {\n // MImageBody doesn't show a placeholder whilst the image loads, (but it could do)\n return null;\n }\n\n // Overidden by MStickerBody\n\n }, {\n key: 'getTooltip',\n value: function getTooltip() {\n return null;\n }\n\n // Overidden by MStickerBody\n\n }, {\n key: 'getFileBody',\n value: function getFileBody() {\n return _react2.default.createElement(_MFileBody2.default, (0, _extends3.default)({}, this.props, { decryptedBlob: this.state.decryptedBlob }));\n }\n }, {\n key: 'render',\n value: function render() {\n var content = this.props.mxEvent.getContent();\n\n if (this.state.error !== null) {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MImageBody', ref: 'body' },\n _react2.default.createElement('img', { src: 'img/warning.svg', width: '16', height: '16' }),\n (0, _languageHandler._t)(\"Error decrypting image\")\n );\n }\n\n var contentUrl = this._getContentUrl();\n var thumbUrl = void 0;\n if (this._isGif() && _SettingsStore2.default.getValue(\"autoplayGifsAndVideos\")) {\n thumbUrl = contentUrl;\n } else {\n thumbUrl = this._getThumbUrl();\n }\n\n var thumbnail = this._messageContent(contentUrl, thumbUrl, content);\n var fileBody = this.getFileBody();\n\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MImageBody', ref: 'body' },\n thumbnail,\n fileBody\n );\n }\n }]);\n return MImageBody;\n}(_react2.default.Component);\n\nMImageBody.propTypes = {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired,\n\n /* called when the image has loaded */\n onWidgetLoad: _propTypes2.default.func.isRequired,\n\n /* the maximum image height to use */\n maxImageHeight: _propTypes2.default.number\n};\nMImageBody.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n};\nexports.default = MImageBody;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MImageBody.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar sdk = require('../../../index');\n\nmodule.exports = React.createClass({\n displayName: 'MessageEvent',\n\n propTypes: {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired,\n\n /* a list of words to highlight */\n highlights: _propTypes2.default.array,\n\n /* link URL for the highlights */\n highlightLink: _propTypes2.default.string,\n\n /* should show URL previews for this event */\n showUrlPreview: _propTypes2.default.bool,\n\n /* callback called when dynamic content in events are loaded */\n onWidgetLoad: _propTypes2.default.func,\n\n /* the shape of the tile, used */\n tileShape: _propTypes2.default.string,\n\n /* the maximum image height to use, if the event is an image */\n maxImageHeight: _propTypes2.default.number\n },\n\n getEventTileOps: function getEventTileOps() {\n return this.refs.body && this.refs.body.getEventTileOps ? this.refs.body.getEventTileOps() : null;\n },\n\n render: function render() {\n var UnknownBody = sdk.getComponent('messages.UnknownBody');\n\n var bodyTypes = {\n 'm.text': sdk.getComponent('messages.TextualBody'),\n 'm.notice': sdk.getComponent('messages.TextualBody'),\n 'm.emote': sdk.getComponent('messages.TextualBody'),\n 'm.image': sdk.getComponent('messages.MImageBody'),\n 'm.file': sdk.getComponent('messages.MFileBody'),\n 'm.audio': sdk.getComponent('messages.MAudioBody'),\n 'm.video': sdk.getComponent('messages.MVideoBody')\n };\n var evTypes = {\n 'm.sticker': sdk.getComponent('messages.MStickerBody')\n };\n\n var content = this.props.mxEvent.getContent();\n var type = this.props.mxEvent.getType();\n var msgtype = content.msgtype;\n var BodyType = UnknownBody;\n if (!this.props.mxEvent.isRedacted()) {\n // only resolve BodyType if event is not redacted\n if (type && evTypes[type]) {\n BodyType = evTypes[type];\n } else if (msgtype && bodyTypes[msgtype]) {\n BodyType = bodyTypes[msgtype];\n } else if (content.url) {\n // Fallback to MFileBody if there's a content URL\n BodyType = bodyTypes['m.file'];\n }\n }\n\n return React.createElement(BodyType, {\n ref: 'body', mxEvent: this.props.mxEvent,\n highlights: this.props.highlights,\n highlightLink: this.props.highlightLink,\n showUrlPreview: this.props.showUrlPreview,\n tileShape: this.props.tileShape,\n maxImageHeight: this.props.maxImageHeight,\n onWidgetLoad: this.props.onWidgetLoad });\n }\n});\n//# sourceMappingURL=MessageEvent.js.map","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _AppTile = require('../elements/AppTile');\n\nvar _AppTile2 = _interopRequireDefault(_AppTile);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _ScalarAuthClient = require('../../../ScalarAuthClient');\n\nvar _ScalarAuthClient2 = _interopRequireDefault(_ScalarAuthClient);\n\nvar _ScalarMessaging = require('../../../ScalarMessaging');\n\nvar _ScalarMessaging2 = _interopRequireDefault(_ScalarMessaging);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _WidgetUtils = require('../../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _WidgetEchoStore = require('../../../stores/WidgetEchoStore');\n\nvar _WidgetEchoStore2 = _interopRequireDefault(_WidgetEchoStore);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The maximum number of widgets that can be added in a room\nvar MAX_WIDGETS = 2;\n\nmodule.exports = _react2.default.createClass({\n displayName: 'AppsDrawer',\n\n propTypes: {\n userId: _propTypes2.default.string.isRequired,\n room: _propTypes2.default.object.isRequired,\n showApps: _propTypes2.default.bool, // Should apps be rendered\n hide: _propTypes2.default.bool // If rendered, should apps drawer be visible\n },\n\n defaultProps: {\n showApps: true,\n hide: false\n },\n\n getInitialState: function getInitialState() {\n return {\n apps: this._getApps()\n };\n },\n\n componentWillMount: function componentWillMount() {\n _ScalarMessaging2.default.startListening();\n _MatrixClientPeg2.default.get().on('RoomState.events', this.onRoomStateEvents);\n _WidgetEchoStore2.default.on('update', this._updateApps);\n },\n\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n this.scalarClient = null;\n if (_SdkConfig2.default.get().integrations_ui_url && _SdkConfig2.default.get().integrations_rest_url) {\n this.scalarClient = new _ScalarAuthClient2.default();\n this.scalarClient.connect().then(function () {\n _this.forceUpdate();\n }).catch(function (e) {\n console.log('Failed to connect to integrations server');\n // TODO -- Handle Scalar errors\n // this.setState({\n // scalar_error: err,\n // });\n });\n }\n\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _ScalarMessaging2.default.stopListening();\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener('RoomState.events', this.onRoomStateEvents);\n }\n _WidgetEchoStore2.default.removeListener('update', this._updateApps);\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n // Room has changed probably, update apps\n this._updateApps();\n },\n\n\n onAction: function onAction(action) {\n var hideWidgetKey = this.props.room.roomId + '_hide_widget_drawer';\n switch (action.action) {\n case 'appsDrawer':\n if (action.show) {\n localStorage.removeItem(hideWidgetKey);\n } else {\n // Store hidden state of widget\n // Don't show if previously hidden\n localStorage.setItem(hideWidgetKey, true);\n }\n\n break;\n }\n },\n\n onRoomStateEvents: function onRoomStateEvents(ev, state) {\n if (ev.getRoomId() !== this.props.room.roomId || ev.getType() !== 'im.vector.modular.widgets') {\n return;\n }\n this._updateApps();\n },\n\n _getApps: function _getApps() {\n var widgets = _WidgetEchoStore2.default.getEchoedRoomWidgets(this.props.room.roomId, _WidgetUtils2.default.getRoomWidgets(this.props.room));\n return widgets.map(function (ev) {\n return _WidgetUtils2.default.makeAppConfig(ev.getStateKey(), ev.getContent(), ev.sender);\n });\n },\n\n _updateApps: function _updateApps() {\n var apps = this._getApps();\n this.setState({\n apps: apps\n });\n },\n\n _canUserModify: function _canUserModify() {\n try {\n return _WidgetUtils2.default.canUserModifyWidgets(this.props.room.roomId);\n } catch (err) {\n console.error(err);\n return false;\n }\n },\n\n _launchManageIntegrations: function _launchManageIntegrations() {\n var IntegrationsManager = _index2.default.getComponent('views.settings.IntegrationsManager');\n var src = this.scalarClient !== null && this.scalarClient.hasCredentials() ? this.scalarClient.getScalarInterfaceUrlForRoom(this.props.room, 'add_integ') : null;\n _Modal2.default.createTrackedDialog('Integrations Manager', '', IntegrationsManager, {\n src: src\n }, 'mx_IntegrationsManager');\n },\n\n onClickAddWidget: function onClickAddWidget(e) {\n e.preventDefault();\n // Display a warning dialog if the max number of widgets have already been added to the room\n var apps = this._getApps();\n if (apps && apps.length >= MAX_WIDGETS) {\n var ErrorDialog = _index2.default.getComponent('dialogs.ErrorDialog');\n var errorMsg = 'The maximum number of ' + MAX_WIDGETS + ' widgets have already been added to this room.';\n console.error(errorMsg);\n _Modal2.default.createDialog(ErrorDialog, {\n title: (0, _languageHandler._t)('Cannot add any more widgets'),\n description: (0, _languageHandler._t)('The maximum permitted number of widgets have already been added to this room.')\n });\n return;\n }\n this._launchManageIntegrations();\n },\n\n render: function render() {\n var _this2 = this;\n\n var apps = this.state.apps.map(function (app, index, arr) {\n var capWhitelist = _WidgetUtils2.default.getCapWhitelistForAppTypeInRoomId(app.type, _this2.props.room.roomId);\n\n return _react2.default.createElement(_AppTile2.default, {\n key: app.id,\n id: app.id,\n url: app.url,\n name: app.name,\n type: app.type,\n fullWidth: arr.length < 2 ? true : false,\n room: _this2.props.room,\n userId: _this2.props.userId,\n show: _this2.props.showApps,\n creatorUserId: app.creatorUserId,\n widgetPageTitle: app.data && app.data.title ? app.data.title : '',\n waitForIframeLoad: app.waitForIframeLoad,\n whitelistCapabilities: capWhitelist\n });\n });\n\n var addWidget = void 0;\n if (this.props.showApps && this._canUserModify()) {\n addWidget = _react2.default.createElement(\n _AccessibleButton2.default,\n {\n onClick: this.onClickAddWidget,\n className: this.state.apps.length < 2 ? 'mx_AddWidget_button mx_AddWidget_button_full_width' : 'mx_AddWidget_button',\n title: (0, _languageHandler._t)('Add a widget') },\n '[+] ',\n (0, _languageHandler._t)('Add a widget')\n );\n }\n\n var spinner = void 0;\n if (apps.length === 0 && _WidgetEchoStore2.default.roomHasPendingWidgets(this.props.room.roomId, _WidgetUtils2.default.getRoomWidgets(this.props.room))) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n spinner = _react2.default.createElement(Loader, null);\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_AppsDrawer' + (this.props.hide ? ' mx_AppsDrawer_hidden' : '') },\n _react2.default.createElement(\n 'div',\n { id: 'apps', className: 'mx_AppsContainer' },\n apps,\n spinner\n ),\n this._canUserModify() && addWidget\n );\n }\n});\n//# sourceMappingURL=AppsDrawer.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = require('babel-runtime/helpers/get');\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _flatMap = require('lodash/flatMap');\n\nvar _flatMap2 = _interopRequireDefault(_flatMap);\n\nvar _isEqual = require('lodash/isEqual');\n\nvar _isEqual2 = _interopRequireDefault(_isEqual);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _Autocompleter = require('../../../autocomplete/Autocompleter');\n\nvar _Autocompleter2 = _interopRequireDefault(_Autocompleter);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar COMPOSER_SELECTED = 0;\n\nvar Autocomplete = function (_React$Component) {\n (0, _inherits3.default)(Autocomplete, _React$Component);\n\n function Autocomplete(props) {\n (0, _classCallCheck3.default)(this, Autocomplete);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Autocomplete.__proto__ || (0, _getPrototypeOf2.default)(Autocomplete)).call(this, props));\n\n _this.autocompleter = new _Autocompleter2.default(props.room);\n _this.completionPromise = null;\n _this.hide = _this.hide.bind(_this);\n _this.onCompletionClicked = _this.onCompletionClicked.bind(_this);\n\n _this.state = {\n // list of completionResults, each containing completions\n completions: [],\n\n // array of completions, so we can look up current selection by offset quickly\n completionList: [],\n\n // how far down the completion list we are (THIS IS 1-INDEXED!)\n selectionOffset: COMPOSER_SELECTED,\n\n // whether we should show completions if they're available\n shouldShowCompletions: true,\n\n hide: false,\n\n forceComplete: false\n };\n return _this;\n }\n\n (0, _createClass3.default)(Autocomplete, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(newProps, state) {\n if (this.props.room.roomId !== newProps.room.roomId) {\n this.autocompleter.destroy();\n this.autocompleter = new _Autocompleter2.default(newProps.room);\n }\n\n // Query hasn't changed so don't try to complete it\n if (newProps.query === this.props.query) {\n return;\n }\n\n this.complete(newProps.query, newProps.selection);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.autocompleter.destroy();\n }\n }, {\n key: 'complete',\n value: function complete(query, selection) {\n var _this2 = this;\n\n this.queryRequested = query;\n if (this.debounceCompletionsRequest) {\n clearTimeout(this.debounceCompletionsRequest);\n }\n if (query === \"\") {\n this.setState({\n // Clear displayed completions\n completions: [],\n completionList: [],\n // Reset selected completion\n selectionOffset: COMPOSER_SELECTED,\n // Hide the autocomplete box\n hide: true\n });\n return _bluebird2.default.resolve(null);\n }\n var autocompleteDelay = _SettingsStore2.default.getValue(\"autocompleteDelay\");\n\n // Don't debounce if we are already showing completions\n if (this.state.completions.length > 0 || this.state.forceComplete) {\n autocompleteDelay = 0;\n }\n\n var deferred = _bluebird2.default.defer();\n this.debounceCompletionsRequest = setTimeout(function () {\n _this2.processQuery(query, selection).then(function () {\n deferred.resolve();\n });\n }, autocompleteDelay);\n return deferred.promise;\n }\n }, {\n key: 'processQuery',\n value: function processQuery(query, selection) {\n var _this3 = this;\n\n return this.autocompleter.getCompletions(query, selection, this.state.forceComplete).then(function (completions) {\n // Only ever process the completions for the most recent query being processed\n if (query !== _this3.queryRequested) {\n return;\n }\n _this3.processCompletions(completions);\n });\n }\n }, {\n key: 'processCompletions',\n value: function processCompletions(completions) {\n var completionList = (0, _flatMap2.default)(completions, function (provider) {\n return provider.completions;\n });\n\n // Reset selection when completion list becomes empty.\n var selectionOffset = COMPOSER_SELECTED;\n if (completionList.length > 0) {\n /* If the currently selected completion is still in the completion list,\n try to find it and jump to it. If not, select composer.\n */\n var currentSelection = this.state.selectionOffset === 0 ? null : this.state.completionList[this.state.selectionOffset - 1].completion;\n selectionOffset = completionList.findIndex(function (completion) {\n return completion.completion === currentSelection;\n });\n if (selectionOffset === -1) {\n selectionOffset = COMPOSER_SELECTED;\n } else {\n selectionOffset++; // selectionOffset is 1-indexed!\n }\n }\n\n var hide = this.state.hide;\n // If `completion.command.command` is truthy, then a provider has matched with the query\n var anyMatches = completions.some(function (completion) {\n return !!completion.command.command;\n });\n hide = !anyMatches;\n\n this.setState({\n completions: completions,\n completionList: completionList,\n selectionOffset: selectionOffset,\n hide: hide,\n // Force complete is turned off each time since we can't edit the query in that case\n forceComplete: false\n });\n }\n }, {\n key: 'countCompletions',\n value: function countCompletions() {\n return this.state.completionList.length;\n }\n\n // called from MessageComposerInput\n\n }, {\n key: 'onUpArrow',\n value: function onUpArrow() {\n var completionCount = this.countCompletions();\n // completionCount + 1, since 0 means composer is selected\n var selectionOffset = (completionCount + 1 + this.state.selectionOffset - 1) % (completionCount + 1);\n if (!completionCount) {\n return null;\n }\n this.setSelection(selectionOffset);\n }\n\n // called from MessageComposerInput\n\n }, {\n key: 'onDownArrow',\n value: function onDownArrow() {\n var completionCount = this.countCompletions();\n // completionCount + 1, since 0 means composer is selected\n var selectionOffset = (this.state.selectionOffset + 1) % (completionCount + 1);\n if (!completionCount) {\n return null;\n }\n this.setSelection(selectionOffset);\n }\n }, {\n key: 'onEscape',\n value: function onEscape(e) {\n var completionCount = this.countCompletions();\n if (completionCount === 0) {\n // autocomplete is already empty, so don't preventDefault\n return;\n }\n\n e.preventDefault();\n\n // selectionOffset = 0, so we don't end up completing when autocomplete is hidden\n this.hide();\n }\n }, {\n key: 'hide',\n value: function hide() {\n this.setState({ hide: true, selectionOffset: 0, completions: [], completionList: [] });\n }\n }, {\n key: 'forceComplete',\n value: function forceComplete() {\n var _this4 = this;\n\n var done = _bluebird2.default.defer();\n this.setState({\n forceComplete: true,\n hide: false\n }, function () {\n _this4.complete(_this4.props.query, _this4.props.selection).then(function () {\n done.resolve(_this4.countCompletions());\n });\n });\n return done.promise;\n }\n }, {\n key: 'onCompletionClicked',\n value: function onCompletionClicked(selectionOffset) {\n if (this.countCompletions() === 0 || selectionOffset === COMPOSER_SELECTED) {\n return false;\n }\n\n this.props.onConfirm(this.state.completionList[selectionOffset - 1]);\n this.hide();\n\n return true;\n }\n }, {\n key: 'setSelection',\n value: function setSelection(selectionOffset) {\n this.setState({ selectionOffset: selectionOffset, hide: false });\n if (this.props.onSelectionChange) {\n this.props.onSelectionChange(this.state.completionList[selectionOffset - 1]);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n // this is the selected completion, so scroll it into view if needed\n var selectedCompletion = this.refs['completion' + this.state.selectionOffset];\n if (selectedCompletion && this.container) {\n var domNode = _reactDom2.default.findDOMNode(selectedCompletion);\n var offsetTop = domNode && domNode.offsetTop;\n if (offsetTop > this.container.scrollTop + this.container.offsetHeight || offsetTop < this.container.scrollTop) {\n this.container.scrollTop = offsetTop - this.container.offsetTop;\n }\n }\n }\n }, {\n key: 'setState',\n value: function setState(state, func) {\n (0, _get3.default)(Autocomplete.prototype.__proto__ || (0, _getPrototypeOf2.default)(Autocomplete.prototype), 'setState', this).call(this, state, func);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this5 = this;\n\n var EmojiText = _index2.default.getComponent('views.elements.EmojiText');\n\n var position = 1;\n var renderedCompletions = this.state.completions.map(function (completionResult, i) {\n var completions = completionResult.completions.map(function (completion, i) {\n var className = (0, _classnames2.default)('mx_Autocomplete_Completion', {\n 'selected': position === _this5.state.selectionOffset\n });\n var componentPosition = position;\n position++;\n\n var onClick = function onClick() {\n _this5.onCompletionClicked(componentPosition);\n };\n\n return _react2.default.cloneElement(completion.component, {\n key: i,\n ref: 'completion' + (position - 1),\n className: className,\n onClick: onClick\n });\n });\n\n return completions.length > 0 ? _react2.default.createElement(\n 'div',\n { key: i, className: 'mx_Autocomplete_ProviderSection' },\n _react2.default.createElement(\n EmojiText,\n { element: 'div', className: 'mx_Autocomplete_provider_name' },\n completionResult.provider.getName()\n ),\n completionResult.provider.renderCompletions(completions)\n ) : null;\n }).filter(function (completion) {\n return !!completion;\n });\n\n return !this.state.hide && renderedCompletions.length > 0 ? _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete', ref: function ref(e) {\n return _this5.container = e;\n } },\n renderedCompletions\n ) : null;\n }\n }]);\n return Autocomplete;\n}(_react2.default.Component);\n\nexports.default = Autocomplete;\n\n\nAutocomplete.propTypes = {\n // the query string for which to show autocomplete suggestions\n query: _propTypes2.default.string.isRequired,\n\n // method invoked with range and text content when completion is confirmed\n onConfirm: _propTypes2.default.func.isRequired,\n\n // The room in which we're autocompleting\n room: _propTypes2.default.instanceOf(_matrixJsSdk.Room)\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=Autocomplete.js.map","var baseFlatten = require('./_baseFlatten'),\n map = require('./map');\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _CommandProvider = require('./CommandProvider');\n\nvar _CommandProvider2 = _interopRequireDefault(_CommandProvider);\n\nvar _CommunityProvider = require('./CommunityProvider');\n\nvar _CommunityProvider2 = _interopRequireDefault(_CommunityProvider);\n\nvar _DuckDuckGoProvider = require('./DuckDuckGoProvider');\n\nvar _DuckDuckGoProvider2 = _interopRequireDefault(_DuckDuckGoProvider);\n\nvar _RoomProvider = require('./RoomProvider');\n\nvar _RoomProvider2 = _interopRequireDefault(_RoomProvider);\n\nvar _UserProvider = require('./UserProvider');\n\nvar _UserProvider2 = _interopRequireDefault(_UserProvider);\n\nvar _EmojiProvider = require('./EmojiProvider');\n\nvar _EmojiProvider2 = _interopRequireDefault(_EmojiProvider);\n\nvar _NotifProvider = require('./NotifProvider');\n\nvar _NotifProvider2 = _interopRequireDefault(_NotifProvider);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar PROVIDERS = [_UserProvider2.default, _RoomProvider2.default, _EmojiProvider2.default, _NotifProvider2.default, _CommandProvider2.default, _CommunityProvider2.default, _DuckDuckGoProvider2.default];\n\n// Providers will get rejected if they take longer than this.\nvar PROVIDER_COMPLETION_TIMEOUT = 3000;\n\nvar Autocompleter = function () {\n function Autocompleter(room) {\n (0, _classCallCheck3.default)(this, Autocompleter);\n\n this.room = room;\n this.providers = PROVIDERS.map(function (p) {\n return new p(room);\n });\n }\n\n (0, _createClass3.default)(Autocompleter, [{\n key: 'destroy',\n value: function destroy() {\n this.providers.forEach(function (p) {\n p.destroy();\n });\n }\n }, {\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(query, selection) {\n var _this = this;\n\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var completionsList;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(_bluebird2.default.all(\n // Array of inspections of promises that might timeout. Instead of allowing a\n // single timeout to reject the Promise.all, reflect each one and once they've all\n // settled, filter for the fulfilled ones\n this.providers.map(function (provider) {\n return provider.getCompletions(query, selection, force).timeout(PROVIDER_COMPLETION_TIMEOUT).reflect();\n })));\n\n case 2:\n completionsList = _context.sent;\n return _context.abrupt('return', completionsList.filter(function (inspection) {\n return inspection.isFulfilled();\n }).map(function (completionsState, i) {\n return {\n completions: completionsState.value(),\n provider: _this.providers[i],\n\n /* the currently matched \"command\" the completer tried to complete\n * we pass this through so that Autocomplete can figure out when to\n * re-show itself once hidden.\n */\n command: _this.providers[i].getCurrentCommand(query, selection, force)\n };\n }));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }]);\n return Autocompleter;\n}();\n\nexports.default = Autocompleter;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Autocompleter.js.map","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CommandMap = undefined;\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.processCommandInput = processCommandInput;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Tinter = require('./Tinter');\n\nvar _Tinter2 = _interopRequireDefault(_Tinter);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _SettingsStore = require('./settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar Command = function () {\n function Command(_ref) {\n var name = _ref.name,\n _ref$args = _ref.args,\n args = _ref$args === undefined ? '' : _ref$args,\n description = _ref.description,\n runFn = _ref.runFn,\n _ref$hideCompletionAf = _ref.hideCompletionAfterSpace,\n hideCompletionAfterSpace = _ref$hideCompletionAf === undefined ? false : _ref$hideCompletionAf;\n (0, _classCallCheck3.default)(this, Command);\n\n this.command = '/' + name;\n this.args = args;\n this.description = description;\n this.runFn = runFn;\n this.hideCompletionAfterSpace = hideCompletionAfterSpace;\n }\n\n (0, _createClass3.default)(Command, [{\n key: 'getCommand',\n value: function getCommand() {\n return this.command;\n }\n }, {\n key: 'getCommandWithArgs',\n value: function getCommandWithArgs() {\n return this.getCommand() + \" \" + this.args;\n }\n }, {\n key: 'run',\n value: function run(roomId, args) {\n return this.runFn.bind(this)(roomId, args);\n }\n }, {\n key: 'getUsage',\n value: function getUsage() {\n return (0, _languageHandler._t)('Usage') + ': ' + this.getCommandWithArgs();\n }\n }]);\n return Command;\n}();\n\nfunction reject(error) {\n return { error: error };\n}\n\nfunction success(promise) {\n return { promise: promise };\n}\n\n/* Disable the \"unexpected this\" error for these commands - all of the run\n * functions are called with `this` bound to the Command instance.\n */\n\n/* eslint-disable babel/no-invalid-this */\n\nvar CommandMap = exports.CommandMap = {\n ddg: new Command({\n name: 'ddg',\n args: '<query>',\n description: (0, _languageHandler._td)('Searches DuckDuckGo for results'),\n runFn: function runFn(roomId, args) {\n var ErrorDialog = _index2.default.getComponent('dialogs.ErrorDialog');\n // TODO Don't explain this away, actually show a search UI here.\n _Modal2.default.createTrackedDialog('Slash Commands', '/ddg is not a command', ErrorDialog, {\n title: (0, _languageHandler._t)('/ddg is not a command'),\n description: (0, _languageHandler._t)('To use it, just wait for autocomplete results to load and tab through them.')\n });\n return success();\n },\n hideCompletionAfterSpace: true\n }),\n\n nick: new Command({\n name: 'nick',\n args: '<display_name>',\n description: (0, _languageHandler._td)('Changes your display nickname'),\n runFn: function runFn(roomId, args) {\n if (args) {\n return success(_MatrixClientPeg2.default.get().setDisplayName(args));\n }\n return reject(this.getUsage());\n }\n }),\n\n tint: new Command({\n name: 'tint',\n args: '<color1> [<color2>]',\n description: (0, _languageHandler._td)('Changes colour scheme of current room'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(#([\\da-fA-F]{3}|[\\da-fA-F]{6}))( +(#([\\da-fA-F]{3}|[\\da-fA-F]{6})))?$/);\n if (matches) {\n _Tinter2.default.tint(matches[1], matches[4]);\n var colorScheme = {};\n colorScheme.primary_color = matches[1];\n if (matches[4]) {\n colorScheme.secondary_color = matches[4];\n } else {\n colorScheme.secondary_color = colorScheme.primary_color;\n }\n return success(_SettingsStore2.default.setValue('roomColor', roomId, _SettingsStore.SettingLevel.ROOM_ACCOUNT, colorScheme));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n topic: new Command({\n name: 'topic',\n args: '<topic>',\n description: (0, _languageHandler._td)('Sets the room topic'),\n runFn: function runFn(roomId, args) {\n if (args) {\n return success(_MatrixClientPeg2.default.get().setRoomTopic(roomId, args));\n }\n return reject(this.getUsage());\n }\n }),\n\n invite: new Command({\n name: 'invite',\n args: '<user-id>',\n description: (0, _languageHandler._td)('Invites user with given id to current room'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+)$/);\n if (matches) {\n return success(_MatrixClientPeg2.default.get().invite(roomId, matches[1]));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n join: new Command({\n name: 'join',\n args: '<room-alias>',\n description: (0, _languageHandler._td)('Joins room with given alias'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+)$/);\n if (matches) {\n var roomAlias = matches[1];\n if (roomAlias[0] !== '#') return reject(this.getUsage());\n\n if (!roomAlias.includes(':')) {\n roomAlias += ':' + _MatrixClientPeg2.default.get().getDomain();\n }\n\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_alias: roomAlias,\n auto_join: true\n });\n\n return success();\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n part: new Command({\n name: 'part',\n args: '[<room-alias>]',\n description: (0, _languageHandler._td)('Leave room'),\n runFn: function runFn(roomId, args) {\n var cli = _MatrixClientPeg2.default.get();\n\n var targetRoomId = void 0;\n if (args) {\n var matches = args.match(/^(\\S+)$/);\n if (matches) {\n var roomAlias = matches[1];\n if (roomAlias[0] !== '#') return reject(this.getUsage());\n\n if (!roomAlias.includes(':')) {\n roomAlias += ':' + cli.getDomain();\n }\n\n // Try to find a room with this alias\n var rooms = cli.getRooms();\n for (var i = 0; i < rooms.length; i++) {\n var aliasEvents = rooms[i].currentState.getStateEvents('m.room.aliases');\n for (var j = 0; j < aliasEvents.length; j++) {\n var _aliases = aliasEvents[j].getContent().aliases || [];\n for (var k = 0; k < _aliases.length; k++) {\n if (_aliases[k] === roomAlias) {\n targetRoomId = rooms[i].roomId;\n break;\n }\n }\n if (targetRoomId) break;\n }\n if (targetRoomId) break;\n }\n if (!targetRoomId) return reject((0, _languageHandler._t)('Unrecognised room alias:') + ' ' + roomAlias);\n }\n }\n\n if (!targetRoomId) targetRoomId = roomId;\n return success(cli.leave(targetRoomId).then(function () {\n _dispatcher2.default.dispatch({ action: 'view_next_room' });\n }));\n }\n }),\n\n kick: new Command({\n name: 'kick',\n args: '<user-id> [reason]',\n description: (0, _languageHandler._td)('Kicks user with given id'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+?)( +(.*))?$/);\n if (matches) {\n return success(_MatrixClientPeg2.default.get().kick(roomId, matches[1], matches[3]));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n // Ban a user from the room with an optional reason\n ban: new Command({\n name: 'ban',\n args: '<user-id> [reason]',\n description: (0, _languageHandler._td)('Bans user with given id'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+?)( +(.*))?$/);\n if (matches) {\n return success(_MatrixClientPeg2.default.get().ban(roomId, matches[1], matches[3]));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n // Unban a user from ythe room\n unban: new Command({\n name: 'unban',\n args: '<user-id>',\n description: (0, _languageHandler._td)('Unbans user with given id'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+)$/);\n if (matches) {\n // Reset the user membership to \"leave\" to unban him\n return success(_MatrixClientPeg2.default.get().unban(roomId, matches[1]));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n ignore: new Command({\n name: 'ignore',\n args: '<user-id>',\n description: (0, _languageHandler._td)('Ignores a user, hiding their messages from you'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var cli = _MatrixClientPeg2.default.get();\n\n var matches = args.match(/^(\\S+)$/);\n if (matches) {\n var userId = matches[1];\n var ignoredUsers = cli.getIgnoredUsers();\n ignoredUsers.push(userId); // de-duped internally in the js-sdk\n return success(cli.setIgnoredUsers(ignoredUsers).then(function () {\n var QuestionDialog = _index2.default.getComponent('dialogs.QuestionDialog');\n _Modal2.default.createTrackedDialog('Slash Commands', 'User ignored', QuestionDialog, {\n title: (0, _languageHandler._t)('Ignored user'),\n description: _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('You are now ignoring %(userId)s', { userId: userId })\n )\n ),\n hasCancelButton: false\n });\n }));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n unignore: new Command({\n name: 'unignore',\n args: '<user-id>',\n description: (0, _languageHandler._td)('Stops ignoring a user, showing their messages going forward'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var cli = _MatrixClientPeg2.default.get();\n\n var matches = args.match(/^(\\S+)$/);\n if (matches) {\n var userId = matches[1];\n var ignoredUsers = cli.getIgnoredUsers();\n var index = ignoredUsers.indexOf(userId);\n if (index !== -1) ignoredUsers.splice(index, 1);\n return success(cli.setIgnoredUsers(ignoredUsers).then(function () {\n var QuestionDialog = _index2.default.getComponent('dialogs.QuestionDialog');\n _Modal2.default.createTrackedDialog('Slash Commands', 'User unignored', QuestionDialog, {\n title: (0, _languageHandler._t)('Unignored user'),\n description: _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('You are no longer ignoring %(userId)s', { userId: userId })\n )\n ),\n hasCancelButton: false\n });\n }));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n // Define the power level of a user\n op: new Command({\n name: 'op',\n args: '<user-id> [<power-level>]',\n description: (0, _languageHandler._td)('Define the power level of a user'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+?)( +(-?\\d+))?$/);\n var powerLevel = 50; // default power level for op\n if (matches) {\n var userId = matches[1];\n if (matches.length === 4 && undefined !== matches[3]) {\n powerLevel = parseInt(matches[3]);\n }\n if (!isNaN(powerLevel)) {\n var cli = _MatrixClientPeg2.default.get();\n var room = cli.getRoom(roomId);\n if (!room) return reject('Bad room ID: ' + roomId);\n\n var powerLevelEvent = room.currentState.getStateEvents('m.room.power_levels', '');\n return success(cli.setPowerLevel(roomId, userId, powerLevel, powerLevelEvent));\n }\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n // Reset the power level of a user\n deop: new Command({\n name: 'deop',\n args: '<user-id>',\n description: (0, _languageHandler._td)('Deops user with given id'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+)$/);\n if (matches) {\n var cli = _MatrixClientPeg2.default.get();\n var room = cli.getRoom(roomId);\n if (!room) return reject('Bad room ID: ' + roomId);\n\n var powerLevelEvent = room.currentState.getStateEvents('m.room.power_levels', '');\n return success(cli.setPowerLevel(roomId, args, undefined, powerLevelEvent));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n devtools: new Command({\n name: 'devtools',\n description: (0, _languageHandler._td)('Opens the Developer Tools dialog'),\n runFn: function runFn(roomId) {\n var DevtoolsDialog = _index2.default.getComponent('dialogs.DevtoolsDialog');\n _Modal2.default.createDialog(DevtoolsDialog, { roomId: roomId });\n return success();\n }\n }),\n\n // Verify a user, device, and pubkey tuple\n verify: new Command({\n name: 'verify',\n args: '<user-id> <device-id> <device-signing-key>',\n description: (0, _languageHandler._td)('Verifies a user, device, and pubkey tuple'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+) +(\\S+) +(\\S+)$/);\n if (matches) {\n var cli = _MatrixClientPeg2.default.get();\n\n var userId = matches[1];\n var deviceId = matches[2];\n var fingerprint = matches[3];\n\n return success(\n // Promise.resolve to handle transition from static result to promise; can be removed\n // in future\n _promise2.default.resolve(cli.getStoredDevice(userId, deviceId)).then(function (device) {\n if (!device) {\n throw new Error((0, _languageHandler._t)('Unknown (user, device) pair:') + (' (' + userId + ', ' + deviceId + ')'));\n }\n\n if (device.isVerified()) {\n if (device.getFingerprint() === fingerprint) {\n throw new Error((0, _languageHandler._t)('Device already verified!'));\n } else {\n throw new Error((0, _languageHandler._t)('WARNING: Device already verified, but keys do NOT MATCH!'));\n }\n }\n\n if (device.getFingerprint() !== fingerprint) {\n var fprint = device.getFingerprint();\n throw new Error((0, _languageHandler._t)('WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device' + ' %(deviceId)s is \"%(fprint)s\" which does not match the provided key ' + '\"%(fingerprint)s\". This could mean your communications are being intercepted!', {\n fprint: fprint,\n userId: userId,\n deviceId: deviceId,\n fingerprint: fingerprint\n }));\n }\n\n return cli.setDeviceVerified(userId, deviceId, true);\n }).then(function () {\n // Tell the user we verified everything\n var QuestionDialog = _index2.default.getComponent('dialogs.QuestionDialog');\n _Modal2.default.createTrackedDialog('Slash Commands', 'Verified key', QuestionDialog, {\n title: (0, _languageHandler._t)('Verified key'),\n description: _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('The signing key you provided matches the signing key you received ' + 'from %(userId)s\\'s device %(deviceId)s. Device marked as verified.', { userId: userId, deviceId: deviceId })\n )\n ),\n hasCancelButton: false\n });\n }));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n // Command definitions for autocompletion ONLY:\n\n // /me is special because its not handled by SlashCommands.js and is instead done inside the Composer classes\n me: new Command({\n name: 'me',\n args: '<message>',\n description: (0, _languageHandler._td)('Displays action'),\n hideCompletionAfterSpace: true\n }),\n\n discardsession: new Command({\n name: 'discardsession',\n description: (0, _languageHandler._td)('Forces the current outbound group session in an encrypted room to be discarded'),\n runFn: function runFn(roomId) {\n try {\n _MatrixClientPeg2.default.get().forceDiscardSession(roomId);\n } catch (e) {\n return reject(e.message);\n }\n return success();\n }\n })\n};\n/* eslint-enable babel/no-invalid-this */\n\n// helpful aliases\nvar aliases = {\n j: \"join\",\n newballsplease: \"discardsession\"\n};\n\n/**\n * Process the given text for /commands and perform them.\n * @param {string} roomId The room in which the command was performed.\n * @param {string} input The raw text input by the user.\n * @return {Object|null} An object with the property 'error' if there was an error\n * processing the command, or 'promise' if a request was sent out.\n * Returns null if the input didn't match a command.\n */\nfunction processCommandInput(roomId, input) {\n // trim any trailing whitespace, as it can confuse the parser for\n // IRC-style commands\n input = input.replace(/\\s+$/, '');\n if (input[0] !== '/') return null; // not a command\n\n var bits = input.match(/^(\\S+?)( +((.|\\n)*))?$/);\n var cmd = void 0;\n var args = void 0;\n if (bits) {\n cmd = bits[1].substring(1).toLowerCase();\n args = bits[3];\n } else {\n cmd = input;\n }\n\n if (aliases[cmd]) {\n cmd = aliases[cmd];\n }\n if (CommandMap[cmd]) {\n // if it has no runFn then its an ignored/nop command (autocomplete only) e.g `/me`\n if (!CommandMap[cmd].runFn) return null;\n\n return CommandMap[cmd].run(roomId, args);\n } else {\n return reject((0, _languageHandler._t)('Unrecognised command:') + ' ' + input);\n }\n}\n//# sourceMappingURL=SlashCommands.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _DMRoomMap = require('../../../utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ContextualMenu = require('../../structures/ContextualMenu');\n\nvar _RoomNotifs = require('../../../RoomNotifs');\n\nvar RoomNotifs = _interopRequireWildcard(_RoomNotifs);\n\nvar _FormattingUtils = require('../../../utils/FormattingUtils');\n\nvar FormattingUtils = _interopRequireWildcard(_FormattingUtils);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _ActiveRoomObserver = require('../../../ActiveRoomObserver');\n\nvar _ActiveRoomObserver2 = _interopRequireDefault(_ActiveRoomObserver);\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomTile',\n\n propTypes: {\n onClick: _propTypes2.default.func,\n\n room: _propTypes2.default.object.isRequired,\n collapsed: _propTypes2.default.bool.isRequired,\n unread: _propTypes2.default.bool.isRequired,\n highlight: _propTypes2.default.bool.isRequired,\n // If true, apply mx_RoomTile_transparent class\n transparent: _propTypes2.default.bool,\n isInvite: _propTypes2.default.bool.isRequired,\n incomingCall: _propTypes2.default.object\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n isDragging: false\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n hover: false,\n badgeHover: false,\n menuDisplayed: false,\n roomName: this.props.room.name,\n notifState: RoomNotifs.getRoomNotifsState(this.props.room.roomId),\n notificationCount: this.props.room.getUnreadNotificationCount(),\n selected: this.props.room.roomId === _RoomViewStore2.default.getRoomId()\n };\n },\n\n _shouldShowNotifBadge: function _shouldShowNotifBadge() {\n var showBadgeInStates = [RoomNotifs.ALL_MESSAGES, RoomNotifs.ALL_MESSAGES_LOUD];\n return showBadgeInStates.indexOf(this.state.notifState) > -1;\n },\n\n _shouldShowMentionBadge: function _shouldShowMentionBadge() {\n return this.state.notifState !== RoomNotifs.MUTE;\n },\n\n _isDirectMessageRoom: function _isDirectMessageRoom(roomId) {\n var dmRooms = _DMRoomMap2.default.shared().getUserIdForRoomId(roomId);\n return Boolean(dmRooms);\n },\n\n onRoomTimeline: function onRoomTimeline(ev, room) {\n if (room !== this.props.room) return;\n this.setState({\n notificationCount: this.props.room.getUnreadNotificationCount()\n });\n },\n\n onRoomName: function onRoomName(room) {\n if (room !== this.props.room) return;\n this.setState({\n roomName: this.props.room.name\n });\n },\n\n onAccountData: function onAccountData(accountDataEvent) {\n if (accountDataEvent.getType() === 'm.push_rules') {\n this.setState({\n notifState: RoomNotifs.getRoomNotifsState(this.props.room.roomId)\n });\n }\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n // XXX: slight hack in order to zero the notification count when a room\n // is read. Ideally this state would be given to this via props (as we\n // do with `unread`). This is still better than forceUpdating the entire\n // RoomList when a room is read.\n case 'on_room_read':\n if (payload.roomId !== this.props.room.roomId) break;\n this.setState({\n notificationCount: this.props.room.getUnreadNotificationCount()\n });\n break;\n }\n },\n\n _onActiveRoomChange: function _onActiveRoomChange() {\n this.setState({\n selected: this.props.room.roomId === _RoomViewStore2.default.getRoomId()\n });\n },\n\n componentWillMount: function componentWillMount() {\n _MatrixClientPeg2.default.get().on(\"accountData\", this.onAccountData);\n _MatrixClientPeg2.default.get().on(\"Room.timeline\", this.onRoomTimeline);\n _MatrixClientPeg2.default.get().on(\"Room.name\", this.onRoomName);\n _ActiveRoomObserver2.default.addListener(this.props.room.roomId, this._onActiveRoomChange);\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var cli = _MatrixClientPeg2.default.get();\n if (cli) {\n _MatrixClientPeg2.default.get().removeListener(\"accountData\", this.onAccountData);\n _MatrixClientPeg2.default.get().removeListener(\"Room.timeline\", this.onRoomTimeline);\n _MatrixClientPeg2.default.get().removeListener(\"Room.name\", this.onRoomName);\n }\n _ActiveRoomObserver2.default.removeListener(this.props.room.roomId, this._onActiveRoomChange);\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(props) {\n // XXX: This could be a lot better - this makes the assumption that\n // the notification count may have changed when the properties of\n // the room tile change.\n this.setState({\n notificationCount: this.props.room.getUnreadNotificationCount()\n });\n },\n\n // Do a simple shallow comparison of props and state to avoid unnecessary\n // renders. The assumption made here is that only state and props are used\n // in rendering this component and children.\n //\n // RoomList is frequently made to forceUpdate, so this decreases number of\n // RoomTile renderings.\n shouldComponentUpdate: function shouldComponentUpdate(newProps, newState) {\n var _this = this;\n\n if ((0, _keys2.default)(newProps).some(function (k) {\n return newProps[k] !== _this.props[k];\n })) {\n return true;\n }\n if ((0, _keys2.default)(newState).some(function (k) {\n return newState[k] !== _this.state[k];\n })) {\n return true;\n }\n return false;\n },\n\n onClick: function onClick(ev) {\n if (this.props.onClick) {\n this.props.onClick(this.props.room.roomId, ev);\n }\n },\n\n onMouseEnter: function onMouseEnter() {\n this.setState({ hover: true });\n this.badgeOnMouseEnter();\n },\n\n onMouseLeave: function onMouseLeave() {\n this.setState({ hover: false });\n this.badgeOnMouseLeave();\n },\n\n _showContextMenu: function _showContextMenu(x, y, chevronOffset) {\n var _this2 = this;\n\n var RoomTileContextMenu = _index2.default.getComponent('context_menus.RoomTileContextMenu');\n\n (0, _ContextualMenu.createMenu)(RoomTileContextMenu, {\n chevronOffset: chevronOffset,\n left: x,\n top: y,\n room: this.props.room,\n onFinished: function onFinished() {\n _this2.setState({ menuDisplayed: false });\n _this2.props.refreshSubList();\n }\n });\n this.setState({ menuDisplayed: true });\n },\n\n onContextMenu: function onContextMenu(e) {\n // Prevent the RoomTile onClick event firing as well\n e.preventDefault();\n // Only allow non-guests to access the context menu\n if (_MatrixClientPeg2.default.get().isGuest()) return;\n\n var chevronOffset = 12;\n this._showContextMenu(e.clientX, e.clientY - (chevronOffset + 8), chevronOffset);\n },\n\n badgeOnMouseEnter: function badgeOnMouseEnter() {\n // Only allow non-guests to access the context menu\n // and only change it if it needs to change\n if (!_MatrixClientPeg2.default.get().isGuest() && !this.state.badgeHover) {\n this.setState({ badgeHover: true });\n }\n },\n\n badgeOnMouseLeave: function badgeOnMouseLeave() {\n this.setState({ badgeHover: false });\n },\n\n onBadgeClicked: function onBadgeClicked(e) {\n // Prevent the RoomTile onClick event firing as well\n e.stopPropagation();\n // Only allow non-guests to access the context menu\n if (_MatrixClientPeg2.default.get().isGuest()) return;\n\n // If the badge is clicked, then no longer show tooltip\n if (this.props.collapsed) {\n this.setState({ hover: false });\n }\n\n var elementRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = elementRect.right + window.pageXOffset + 3;\n var chevronOffset = 12;\n var y = elementRect.top + elementRect.height / 2 + window.pageYOffset;\n y = y - (chevronOffset + 8); // where 8 is half the height of the chevron\n\n this._showContextMenu(x, y, chevronOffset);\n },\n\n render: function render() {\n var isInvite = this.props.room.getMyMembership() === \"invite\";\n var notificationCount = this.state.notificationCount;\n // var highlightCount = this.props.room.getUnreadNotificationCount(\"highlight\");\n\n var notifBadges = notificationCount > 0 && this._shouldShowNotifBadge();\n var mentionBadges = this.props.highlight && this._shouldShowMentionBadge();\n var badges = notifBadges || mentionBadges;\n\n var classes = (0, _classnames2.default)({\n 'mx_RoomTile': true,\n 'mx_RoomTile_selected': this.state.selected,\n 'mx_RoomTile_unread': this.props.unread,\n 'mx_RoomTile_unreadNotify': notifBadges,\n 'mx_RoomTile_highlight': mentionBadges,\n 'mx_RoomTile_invited': isInvite,\n 'mx_RoomTile_menuDisplayed': this.state.menuDisplayed,\n 'mx_RoomTile_noBadges': !badges,\n 'mx_RoomTile_transparent': this.props.transparent\n });\n\n var avatarClasses = (0, _classnames2.default)({\n 'mx_RoomTile_avatar': true\n });\n\n var badgeClasses = (0, _classnames2.default)({\n 'mx_RoomTile_badge': true,\n 'mx_RoomTile_badgeButton': this.state.badgeHover || this.state.menuDisplayed\n });\n\n var name = this.state.roomName;\n if (name == undefined || name == null) name = '';\n name = name.replace(\":\", ':\\u200B'); // add a zero-width space to allow linewrapping after the colon\n\n var badgeContent = void 0;\n\n if (this.state.badgeHover || this.state.menuDisplayed) {\n badgeContent = '\\xB7\\xB7\\xB7';\n } else if (badges) {\n var limitedCount = FormattingUtils.formatCount(notificationCount);\n badgeContent = notificationCount ? limitedCount : '!';\n } else {\n badgeContent = '\\u200B';\n }\n\n var badge = _react2.default.createElement(\n 'div',\n { className: badgeClasses, onClick: this.onBadgeClicked },\n badgeContent\n );\n\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var label = void 0;\n var tooltip = void 0;\n if (!this.props.collapsed) {\n var nameClasses = (0, _classnames2.default)({\n 'mx_RoomTile_name': true,\n 'mx_RoomTile_invite': this.props.isInvite,\n 'mx_RoomTile_badgeShown': badges || this.state.badgeHover || this.state.menuDisplayed\n });\n\n if (this.state.selected) {\n var nameSelected = _react2.default.createElement(\n EmojiText,\n null,\n name\n );\n\n label = _react2.default.createElement(\n 'div',\n { title: name, className: nameClasses, dir: 'auto' },\n nameSelected\n );\n } else {\n label = _react2.default.createElement(\n EmojiText,\n { element: 'div', title: name, className: nameClasses, dir: 'auto' },\n name\n );\n }\n } else if (this.state.hover) {\n var RoomTooltip = _index2.default.getComponent(\"rooms.RoomTooltip\");\n tooltip = _react2.default.createElement(RoomTooltip, { className: 'mx_RoomTile_tooltip', label: this.props.room.name, dir: 'auto' });\n }\n\n //var incomingCallBox;\n //if (this.props.incomingCall) {\n // var IncomingCallBox = sdk.getComponent(\"voip.IncomingCallBox\");\n // incomingCallBox = <IncomingCallBox incomingCall={ this.props.incomingCall }/>;\n //}\n\n var RoomAvatar = _index2.default.getComponent('avatars.RoomAvatar');\n\n var dmIndicator = void 0;\n if (this._isDirectMessageRoom(this.props.room.roomId)) {\n dmIndicator = _react2.default.createElement('img', { src: 'img/icon_person.svg', className: 'mx_RoomTile_dm', width: '11', height: '13', alt: 'dm' });\n }\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { tabIndex: '0',\n className: classes,\n onClick: this.onClick,\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave,\n onContextMenu: this.onContextMenu\n },\n _react2.default.createElement(\n 'div',\n { className: avatarClasses },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_avatar_container' },\n _react2.default.createElement(RoomAvatar, { room: this.props.room, width: 24, height: 24 }),\n dmIndicator\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_nameContainer' },\n label,\n badge\n ),\n tooltip\n );\n }\n}); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 New Vector Ltd\n Copyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=RoomTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nexports.findReadReceiptFromUserId = findReadReceiptFromUserId;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Given MatrixEvent containing receipts, return the first\n * read receipt from the given user ID, or null if no such\n * receipt exists.\n */\nfunction findReadReceiptFromUserId(receiptEvent, userId) {\n var receiptKeys = (0, _keys2.default)(receiptEvent.getContent());\n for (var i = 0; i < receiptKeys.length; ++i) {\n var rcpt = receiptEvent.getContent()[receiptKeys[i]];\n if (rcpt['m.read'] && rcpt['m.read'][userId]) {\n return rcpt;\n }\n }\n\n return null;\n}\n//# sourceMappingURL=Receipt.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _AppTile = require('../elements/AppTile');\n\nvar _AppTile2 = _interopRequireDefault(_AppTile);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _ScalarAuthClient = require('../../../ScalarAuthClient');\n\nvar _ScalarAuthClient2 = _interopRequireDefault(_ScalarAuthClient);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _WidgetUtils = require('../../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _ActiveWidgetStore = require('../../../stores/ActiveWidgetStore');\n\nvar _ActiveWidgetStore2 = _interopRequireDefault(_ActiveWidgetStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar widgetType = 'm.stickerpicker';\n\n// We sit in a context menu, so the persisted element container needs to float\n// above it, so it needs a greater z-index than the ContextMenu\nvar STICKERPICKER_Z_INDEX = 5000;\n\nvar Stickerpicker = function (_React$Component) {\n (0, _inherits3.default)(Stickerpicker, _React$Component);\n\n function Stickerpicker(props) {\n (0, _classCallCheck3.default)(this, Stickerpicker);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Stickerpicker.__proto__ || (0, _getPrototypeOf2.default)(Stickerpicker)).call(this, props));\n\n _this._onShowStickersClick = _this._onShowStickersClick.bind(_this);\n _this._onHideStickersClick = _this._onHideStickersClick.bind(_this);\n _this._launchManageIntegrations = _this._launchManageIntegrations.bind(_this);\n _this._removeStickerpickerWidgets = _this._removeStickerpickerWidgets.bind(_this);\n _this._updateWidget = _this._updateWidget.bind(_this);\n _this._onWidgetAction = _this._onWidgetAction.bind(_this);\n _this._onResize = _this._onResize.bind(_this);\n _this._onFinished = _this._onFinished.bind(_this);\n\n _this.popoverWidth = 300;\n _this.popoverHeight = 300;\n\n _this.state = {\n showStickers: false,\n imError: null,\n stickerpickerX: null,\n stickerpickerY: null,\n stickerpickerWidget: null,\n widgetId: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(Stickerpicker, [{\n key: '_removeStickerpickerWidgets',\n value: function _removeStickerpickerWidgets() {\n var _this2 = this;\n\n console.warn('Removing Stickerpicker widgets');\n if (this.state.widgetId) {\n this.scalarClient.disableWidgetAssets(widgetType, this.state.widgetId).then(function () {\n console.warn('Assets disabled');\n }).catch(function (err) {\n console.error('Failed to disable assets');\n });\n } else {\n console.warn('No widget ID specified, not disabling assets');\n }\n\n this.setState({ showStickers: false });\n _WidgetUtils2.default.removeStickerpickerWidgets().then(function () {\n _this2.forceUpdate();\n }).catch(function (e) {\n console.error('Failed to remove sticker picker widget', e);\n });\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this3 = this;\n\n // Close the sticker picker when the window resizes\n window.addEventListener('resize', this._onResize);\n\n this.scalarClient = null;\n if (_SdkConfig2.default.get().integrations_ui_url && _SdkConfig2.default.get().integrations_rest_url) {\n this.scalarClient = new _ScalarAuthClient2.default();\n this.scalarClient.connect().then(function () {\n _this3.forceUpdate();\n }).catch(function (e) {\n _this3._imError(\"Failed to connect to integrations server\", e);\n });\n }\n\n if (!this.state.imError) {\n this.dispatcherRef = _dispatcher2.default.register(this._onWidgetAction);\n }\n\n // Track updates to widget state in account data\n _MatrixClientPeg2.default.get().on('accountData', this._updateWidget);\n\n // Initialise widget state from current account data\n this._updateWidget();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n window.removeEventListener('resize', this._onResize);\n if (this.dispatcherRef) {\n _dispatcher2.default.unregister(this.dispatcherRef);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n this._sendVisibilityToWidget(this.state.showStickers);\n }\n }, {\n key: '_imError',\n value: function _imError(errorMsg, e) {\n console.error(errorMsg, e);\n this.setState({\n showStickers: false,\n imError: errorMsg\n });\n }\n }, {\n key: '_updateWidget',\n value: function _updateWidget() {\n var stickerpickerWidget = _WidgetUtils2.default.getStickerpickerWidgets()[0];\n this.setState({\n stickerpickerWidget: stickerpickerWidget,\n widgetId: stickerpickerWidget ? stickerpickerWidget.id : null\n });\n }\n }, {\n key: '_onWidgetAction',\n value: function _onWidgetAction(payload) {\n switch (payload.action) {\n case \"user_widget_updated\":\n this.forceUpdate();\n break;\n case \"stickerpicker_close\":\n this.setState({ showStickers: false });\n break;\n case \"show_right_panel\":\n case \"hide_right_panel\":\n case \"show_left_panel\":\n case \"hide_left_panel\":\n this.setState({ showStickers: false });\n break;\n }\n }\n }, {\n key: '_defaultStickerpickerContent',\n value: function _defaultStickerpickerContent() {\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._launchManageIntegrations,\n className: 'mx_Stickers_contentPlaceholder' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"You don't currently have any stickerpacks enabled\")\n ),\n _react2.default.createElement(\n 'p',\n { className: 'mx_Stickers_addLink' },\n (0, _languageHandler._t)(\"Add some now\")\n ),\n _react2.default.createElement('img', { src: 'img/stickerpack-placeholder.png', alt: '' })\n );\n }\n }, {\n key: '_errorStickerpickerContent',\n value: function _errorStickerpickerContent() {\n return _react2.default.createElement(\n 'div',\n { style: { \"text-align\": \"center\" }, className: 'error' },\n _react2.default.createElement(\n 'p',\n null,\n ' ',\n this.state.imError,\n ' '\n )\n );\n }\n }, {\n key: '_sendVisibilityToWidget',\n value: function _sendVisibilityToWidget(visible) {\n if (!this.state.stickerpickerWidget) return;\n var widgetMessaging = _ActiveWidgetStore2.default.getWidgetMessaging(this.state.stickerpickerWidget.id);\n if (widgetMessaging && visible !== this._prevSentVisibility) {\n widgetMessaging.sendVisibility(visible);\n this._prevSentVisibility = visible;\n }\n }\n }, {\n key: '_getStickerpickerContent',\n value: function _getStickerpickerContent() {\n // Handle Integration Manager errors\n if (this.state._imError) {\n return this._errorStickerpickerContent();\n }\n\n // Stickers\n // TODO - Add support for Stickerpickers from multiple app stores.\n // Render content from multiple stickerpack sources, each within their\n // own iframe, within the stickerpicker UI element.\n var stickerpickerWidget = this.state.stickerpickerWidget;\n var stickersContent = void 0;\n\n // Use a separate ReactDOM tree to render the AppTile separately so that it persists and does\n // not unmount when we (a) close the sticker picker (b) switch rooms. It's properties are still\n // updated.\n var PersistedElement = _index2.default.getComponent(\"elements.PersistedElement\");\n\n // Load stickerpack content\n if (stickerpickerWidget && stickerpickerWidget.content && stickerpickerWidget.content.url) {\n // Set default name\n stickerpickerWidget.content.name = stickerpickerWidget.name || (0, _languageHandler._t)(\"Stickerpack\");\n\n stickersContent = _react2.default.createElement(\n 'div',\n { className: 'mx_Stickers_content_container' },\n _react2.default.createElement(\n 'div',\n {\n id: 'stickersContent',\n className: 'mx_Stickers_content',\n style: {\n border: 'none',\n height: this.popoverHeight,\n width: this.popoverWidth\n }\n },\n _react2.default.createElement(\n PersistedElement,\n { persistKey: 'stickerPicker', style: { zIndex: STICKERPICKER_Z_INDEX } },\n _react2.default.createElement(_AppTile2.default, {\n id: stickerpickerWidget.id,\n url: stickerpickerWidget.content.url,\n name: stickerpickerWidget.content.name,\n room: this.props.room,\n type: stickerpickerWidget.content.type,\n fullWidth: true,\n userId: _MatrixClientPeg2.default.get().credentials.userId,\n creatorUserId: stickerpickerWidget.sender || _MatrixClientPeg2.default.get().credentials.userId,\n waitForIframeLoad: true,\n show: true,\n showMenubar: true,\n onEditClick: this._launchManageIntegrations,\n onDeleteClick: this._removeStickerpickerWidgets,\n showTitle: false,\n showMinimise: true,\n showDelete: false,\n showPopout: false,\n onMinimiseClick: this._onHideStickersClick,\n handleMinimisePointerEvents: true,\n whitelistCapabilities: ['m.sticker', 'visibility'],\n userWidget: true\n })\n )\n )\n );\n } else {\n // Default content to show if stickerpicker widget not added\n stickersContent = this._defaultStickerpickerContent();\n }\n return stickersContent;\n }\n\n /**\n * Show the sticker picker overlay\n * If no stickerpacks have been added, show a link to the integration manager add sticker packs page.\n * @param {Event} e Event that triggered the function\n */\n\n }, {\n key: '_onShowStickersClick',\n value: function _onShowStickersClick(e) {\n // XXX: Simplify by using a context menu that is positioned relative to the sticker picker button\n\n var buttonRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = buttonRect.right + window.pageXOffset - 41;\n\n // Amount of horizontal space between the right of menu and the right of the viewport\n // (10 = amount needed to make chevron centrally aligned)\n var rightPad = 10;\n\n // When the sticker picker would be displayed off of the viewport, adjust x\n // (302 = width of context menu, including borders)\n x = Math.min(x, document.body.clientWidth - (302 + rightPad));\n\n // Offset the chevron location, which is relative to the left of the context menu\n // (10 = offset when context menu would not be displayed off viewport)\n // (8 = value required in practice (possibly 10 - 2 where the 2 = context menu borders)\n var stickerPickerChevronOffset = Math.max(10, 8 + window.pageXOffset + buttonRect.left - x);\n\n var y = buttonRect.top + buttonRect.height / 2 + window.pageYOffset - 19;\n\n this.setState({\n showStickers: true,\n stickerPickerX: x,\n stickerPickerY: y,\n stickerPickerChevronOffset: stickerPickerChevronOffset\n });\n }\n\n /**\n * Trigger hiding of the sticker picker overlay\n * @param {Event} ev Event that triggered the function call\n */\n\n }, {\n key: '_onHideStickersClick',\n value: function _onHideStickersClick(ev) {\n this.setState({ showStickers: false });\n }\n\n /**\n * Called when the window is resized\n */\n\n }, {\n key: '_onResize',\n value: function _onResize() {\n this.setState({ showStickers: false });\n }\n\n /**\n * The stickers picker was hidden\n */\n\n }, {\n key: '_onFinished',\n value: function _onFinished() {\n this.setState({ showStickers: false });\n }\n\n /**\n * Launch the integrations manager on the stickers integration page\n */\n\n }, {\n key: '_launchManageIntegrations',\n value: function _launchManageIntegrations() {\n var IntegrationsManager = _index2.default.getComponent(\"views.settings.IntegrationsManager\");\n var src = this.scalarClient !== null && this.scalarClient.hasCredentials() ? this.scalarClient.getScalarInterfaceUrlForRoom(this.props.room, 'type_' + widgetType, this.state.widgetId) : null;\n _Modal2.default.createTrackedDialog('Integrations Manager', '', IntegrationsManager, {\n src: src\n }, \"mx_IntegrationsManager\");\n\n this.setState({ showStickers: false });\n }\n }, {\n key: 'render',\n value: function render() {\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var ContextualMenu = _index2.default.getComponent('structures.ContextualMenu');\n var GenericElementContextMenu = _index2.default.getComponent('context_menus.GenericElementContextMenu');\n var stickersButton = void 0;\n\n var stickerPicker = _react2.default.createElement(ContextualMenu, {\n elementClass: GenericElementContextMenu,\n chevronOffset: this.state.stickerPickerChevronOffset,\n chevronFace: 'bottom',\n left: this.state.stickerPickerX,\n top: this.state.stickerPickerY,\n menuWidth: this.popoverWidth,\n menuHeight: this.popoverHeight,\n element: this._getStickerpickerContent(),\n onFinished: this._onFinished,\n menuPaddingTop: 0,\n menuPaddingLeft: 0,\n menuPaddingRight: 0\n });\n\n if (this.state.showStickers) {\n // Show hide-stickers button\n stickersButton = _react2.default.createElement(\n _AccessibleButton2.default,\n {\n id: 'stickersButton',\n key: 'controls_hide_stickers',\n className: 'mx_MessageComposer_stickers mx_Stickers_hideStickers',\n onClick: this._onHideStickersClick,\n ref: 'target',\n title: (0, _languageHandler._t)(\"Hide Stickers\") },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-hide-stickers.svg', width: '35', height: '35' })\n );\n } else {\n // Show show-stickers button\n stickersButton = _react2.default.createElement(\n _AccessibleButton2.default,\n {\n id: 'stickersButton',\n key: 'controls_show_stickers',\n className: 'mx_MessageComposer_stickers',\n onClick: this._onShowStickersClick,\n title: (0, _languageHandler._t)(\"Show Stickers\") },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-show-stickers.svg', width: '35', height: '35' })\n );\n }\n return _react2.default.createElement(\n 'div',\n null,\n stickersButton,\n this.state.showStickers && stickerPicker\n );\n }\n }]);\n return Stickerpicker;\n}(_react2.default.Component);\n\nexports.default = Stickerpicker;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Stickerpicker.js.map","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.encode = encode;\nexports.decode = decode;\n// to ensure markdown compatability we need to specifically encode some characters\nfunction encode(href) {\n return decodeSafe(href).trim().replace(/ /g, \"%20\").replace(/'/g, \"%27\").replace(/\\(/g, \"%28\").replace(/\\)/g, \"%29\");\n}\n\nfunction decode(href) {\n try {\n return decodeURI(href);\n } catch (e) {\n return decodeSafe(href);\n }\n}\n\n// convert hanging % characters into percentage encoded %25 as decodeURI cannot\n// handle this scenario but users may input 'invalid' urls.\nfunction decodeSafe(uri) {\n var components = uri.split(/(%(?:d0|d1)%.{2})/);\n return components.map(function (component) {\n try {\n return decodeURIComponent(component);\n } catch (e) {\n return component.replace(/%(?!\\d+)/g, \"%25\");\n }\n }).join(\"\");\n}","\"use strict\";\n\nfunction Renderer() {}\n\n/**\n * Walks the AST and calls member methods for each Node type.\n *\n * @param ast {Node} The root of the abstract syntax tree.\n */\nfunction render(ast) {\n var walker = ast.walker()\n , event\n , type;\n\n this.buffer = '';\n this.lastOut = '\\n';\n\n while((event = walker.next())) {\n type = event.node.type;\n if (this[type]) {\n this[type](event.node, event.entering);\n }\n }\n return this.buffer;\n}\n\n/**\n * Concatenate a literal string to the buffer.\n *\n * @param str {String} The string to concatenate.\n */\nfunction lit(str) {\n this.buffer += str;\n this.lastOut = str;\n}\n\n/**\n * Output a newline to the buffer.\n */\nfunction cr() {\n if (this.lastOut !== '\\n') {\n this.lit('\\n');\n }\n}\n\n/**\n * Concatenate a string to the buffer possibly escaping the content.\n *\n * Concrete renderer implementations should override this method.\n *\n * @param str {String} The string to concatenate.\n */\nfunction out(str) {\n this.lit(str);\n}\n\n/**\n * Escape a string for the target renderer.\n *\n * Abstract function that should be implemented by concrete \n * renderer implementations.\n *\n * @param str {String} The string to escape.\n */\nfunction esc(str) {\n return str;\n}\n\nRenderer.prototype.render = render;\nRenderer.prototype.out = out;\nRenderer.prototype.lit = lit;\nRenderer.prototype.cr = cr;\nRenderer.prototype.esc = esc;\n\nmodule.exports = Renderer;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction cancelQuoting() {\n _dispatcher2.default.dispatch({\n action: 'reply_to_event',\n event: null\n });\n}\n\nvar ReplyPreview = function (_React$Component) {\n (0, _inherits3.default)(ReplyPreview, _React$Component);\n\n function ReplyPreview(props, context) {\n (0, _classCallCheck3.default)(this, ReplyPreview);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ReplyPreview.__proto__ || (0, _getPrototypeOf2.default)(ReplyPreview)).call(this, props, context));\n\n _this.state = {\n event: null\n };\n\n _this._onRoomViewStoreUpdate = _this._onRoomViewStoreUpdate.bind(_this);\n\n _this._roomStoreToken = _RoomViewStore2.default.addListener(_this._onRoomViewStoreUpdate);\n _this._onRoomViewStoreUpdate();\n return _this;\n }\n\n (0, _createClass3.default)(ReplyPreview, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n // Remove RoomStore listener\n if (this._roomStoreToken) {\n this._roomStoreToken.remove();\n }\n }\n }, {\n key: '_onRoomViewStoreUpdate',\n value: function _onRoomViewStoreUpdate() {\n var event = _RoomViewStore2.default.getQuotingEvent();\n if (this.state.event !== event) {\n this.setState({ event: event });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n if (!this.state.event) return null;\n\n var EventTile = _index2.default.getComponent('rooms.EventTile');\n var EmojiText = _index2.default.getComponent('views.elements.EmojiText');\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ReplyPreview' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ReplyPreview_section' },\n _react2.default.createElement(\n EmojiText,\n { element: 'div', className: 'mx_ReplyPreview_header mx_ReplyPreview_title' },\n '💬 ' + (0, _languageHandler._t)('Replying')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ReplyPreview_header mx_ReplyPreview_cancel' },\n _react2.default.createElement('img', { className: 'mx_filterFlipColor', src: 'img/cancel.svg', width: '18', height: '18',\n onClick: cancelQuoting })\n ),\n _react2.default.createElement('div', { className: 'mx_ReplyPreview_clear' }),\n _react2.default.createElement(EventTile, { last: true,\n tileShape: 'reply_preview',\n mxEvent: this.state.event,\n isTwelveHour: _SettingsStore2.default.getValue(\"showTwelveHourTimestamps\") })\n )\n );\n }\n }]);\n return ReplyPreview;\n}(_react2.default.Component);\n\nexports.default = ReplyPreview;\nmodule.exports = exports['default'];\n//# sourceMappingURL=ReplyPreview.js.map","\"use strict\";\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require(\"../../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _dispatcher = require(\"../../../dispatcher\");\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _AccessibleButton = require(\"../elements/AccessibleButton\");\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _MessageEvent = require(\"../messages/MessageEvent\");\n\nvar _MessageEvent2 = _interopRequireDefault(_MessageEvent);\n\nvar _MemberAvatar = require(\"../avatars/MemberAvatar\");\n\nvar _MemberAvatar2 = _interopRequireDefault(_MemberAvatar);\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nvar _DateUtils = require(\"../../../DateUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'PinnedEventTile',\n propTypes: {\n mxRoom: _propTypes2.default.object.isRequired,\n mxEvent: _propTypes2.default.object.isRequired,\n onUnpinned: _propTypes2.default.func\n },\n onTileClicked: function onTileClicked() {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n event_id: this.props.mxEvent.getId(),\n highlighted: true,\n room_id: this.props.mxEvent.getRoomId()\n });\n },\n onUnpinClicked: function onUnpinClicked() {\n var _this = this;\n\n var pinnedEvents = this.props.mxRoom.currentState.getStateEvents(\"m.room.pinned_events\", \"\");\n if (!pinnedEvents || !pinnedEvents.getContent().pinned) {\n // Nothing to do: already unpinned\n if (this.props.onUnpinned) this.props.onUnpinned();\n } else {\n var pinned = pinnedEvents.getContent().pinned;\n var index = pinned.indexOf(this.props.mxEvent.getId());\n if (index !== -1) {\n pinned.splice(index, 1);\n _MatrixClientPeg2.default.get().sendStateEvent(this.props.mxRoom.roomId, 'm.room.pinned_events', { pinned: pinned }, '').then(function () {\n if (_this.props.onUnpinned) _this.props.onUnpinned();\n });\n } else if (this.props.onUnpinned) this.props.onUnpinned();\n }\n },\n _canUnpin: function _canUnpin() {\n return this.props.mxRoom.currentState.mayClientSendStateEvent('m.room.pinned_events', _MatrixClientPeg2.default.get());\n },\n render: function render() {\n var sender = this.props.mxRoom.getMember(this.props.mxEvent.getSender());\n var avatarSize = 40;\n\n var unpinButton = null;\n if (this._canUnpin()) {\n unpinButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this.onUnpinClicked, className: \"mx_PinnedEventTile_unpinButton\" },\n _react2.default.createElement(\"img\", { src: \"img/cancel-red.svg\", width: \"8\", height: \"8\", alt: (0, _languageHandler._t)('Unpin Message'), title: (0, _languageHandler._t)('Unpin Message') })\n );\n }\n\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_PinnedEventTile\" },\n _react2.default.createElement(\n \"div\",\n { className: \"mx_PinnedEventTile_actions\" },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: \"mx_PinnedEventTile_gotoButton mx_textButton\", onClick: this.onTileClicked },\n (0, _languageHandler._t)(\"Jump to message\")\n ),\n unpinButton\n ),\n _react2.default.createElement(\n \"span\",\n { className: \"mx_PinnedEventTile_senderAvatar\" },\n _react2.default.createElement(_MemberAvatar2.default, { member: sender, width: avatarSize, height: avatarSize })\n ),\n _react2.default.createElement(\n \"span\",\n { className: \"mx_PinnedEventTile_sender\" },\n sender.name\n ),\n _react2.default.createElement(\n \"span\",\n { className: \"mx_PinnedEventTile_timestamp\" },\n (0, _DateUtils.formatFullDate)(new Date(this.props.mxEvent.getTs()))\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"mx_PinnedEventTile_message\" },\n _react2.default.createElement(_MessageEvent2.default, { mxEvent: this.props.mxEvent, className: \"mx_PinnedEventTile_body\", maxImageHeight: 150,\n onWidgetLoad: function onWidgetLoad() {} // we need to give this, apparently\n })\n )\n );\n }\n}); /*\n Copyright 2017 Travis Ralston\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=PinnedEventTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.roomShape = undefined;\nexports.getDisplayAliasForRoom = getDisplayAliasForRoom;\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _linkifyjs = require('linkifyjs');\n\nvar linkify = _interopRequireWildcard(_linkifyjs);\n\nvar _element = require('linkifyjs/element');\n\nvar _element2 = _interopRequireDefault(_element);\n\nvar _linkifyMatrix = require('../../../linkify-matrix');\n\nvar _linkifyMatrix2 = _interopRequireDefault(_linkifyMatrix);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _linkifyMatrix2.default)(linkify); /*\n Copyright 2017 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction getDisplayAliasForRoom(room) {\n return room.canonicalAlias || (room.aliases ? room.aliases[0] : \"\");\n}\n\nvar roomShape = exports.roomShape = _propTypes2.default.shape({\n name: _propTypes2.default.string,\n topic: _propTypes2.default.string,\n roomId: _propTypes2.default.string,\n avatarUrl: _propTypes2.default.string,\n numJoinedMembers: _propTypes2.default.number,\n canonicalAlias: _propTypes2.default.string,\n aliases: _propTypes2.default.arrayOf(_propTypes2.default.string),\n\n worldReadable: _propTypes2.default.bool,\n guestCanJoin: _propTypes2.default.bool\n});\n\nexports.default = _react2.default.createClass({\n displayName: 'RoomDetailRow',\n\n propTypes: {\n room: roomShape,\n // passes ev, room as args\n onClick: _propTypes2.default.func,\n onMouseDown: _propTypes2.default.func\n },\n\n _linkifyTopic: function _linkifyTopic() {\n if (this.refs.topic) {\n (0, _element2.default)(this.refs.topic, _linkifyMatrix2.default.options);\n }\n },\n\n componentDidMount: function componentDidMount() {\n this._linkifyTopic();\n },\n\n componentDidUpdate: function componentDidUpdate() {\n this._linkifyTopic();\n },\n\n onClick: function onClick(ev) {\n ev.preventDefault();\n if (this.props.onClick) {\n this.props.onClick(ev, this.props.room);\n }\n },\n\n onTopicClick: function onTopicClick(ev) {\n // When clicking a link in the topic, prevent the event being propagated\n // to `onClick`.\n ev.stopPropagation();\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n\n var room = this.props.room;\n var name = room.name || getDisplayAliasForRoom(room) || (0, _languageHandler._t)('Unnamed room');\n\n var guestRead = room.worldReadable ? _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perm' },\n (0, _languageHandler._t)('World readable')\n ) : _react2.default.createElement('div', null);\n var guestJoin = room.guestCanJoin ? _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perm' },\n (0, _languageHandler._t)('Guests can join')\n ) : _react2.default.createElement('div', null);\n\n var perms = guestRead || guestJoin ? _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perms' },\n guestRead,\n '\\xA0',\n guestJoin\n ) : _react2.default.createElement('div', null);\n\n return _react2.default.createElement(\n 'tr',\n { key: room.roomId, onClick: this.onClick, onMouseDown: this.props.onMouseDown },\n _react2.default.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomAvatar' },\n _react2.default.createElement(BaseAvatar, { width: 24, height: 24, resizeMethod: 'crop',\n name: name, idName: name,\n url: _matrixJsSdk.ContentRepo.getHttpUriForMxc(_MatrixClientPeg2.default.get().getHomeserverUrl(), room.avatarUrl, 24, 24, \"crop\") })\n ),\n _react2.default.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomDescription' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_name' },\n name\n ),\n '\\xA0',\n perms,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_topic', ref: 'topic', onClick: this.onTopicClick },\n room.topic\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_alias' },\n getDisplayAliasForRoom(room)\n )\n ),\n _react2.default.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomMemberCount' },\n room.numJoinedMembers\n )\n );\n }\n});\n//# sourceMappingURL=RoomDetailRow.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CancelButton = CancelButton;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// cancel button which is shared between room header and simple room header\nfunction CancelButton(props) {\n var onClick = props.onClick;\n\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_cancelButton', onClick: onClick },\n _react2.default.createElement('img', { src: 'img/cancel.svg', className: 'mx_filterFlipColor',\n width: '18', height: '18', alt: (0, _languageHandler._t)(\"Cancel\") })\n );\n}\n\n/*\n * A stripped-down room header used for things like the user settings\n * and room directory.\n */\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'SimpleRoomHeader',\n\n propTypes: {\n title: _propTypes2.default.string,\n onCancelClick: _propTypes2.default.func,\n\n // `src` to a TintableSvg. Optional.\n icon: _propTypes2.default.string\n },\n\n render: function render() {\n var cancelButton = void 0;\n var icon = void 0;\n if (this.props.onCancelClick) {\n cancelButton = _react2.default.createElement(CancelButton, { onClick: this.props.onCancelClick });\n }\n if (this.props.icon) {\n var TintableSvg = _index2.default.getComponent('elements.TintableSvg');\n icon = _react2.default.createElement(TintableSvg, {\n className: 'mx_RoomHeader_icon', src: this.props.icon,\n width: '25', height: '25'\n });\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_wrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_simpleHeader' },\n icon,\n this.props.title,\n cancelButton\n )\n )\n );\n }\n});\n//# sourceMappingURL=SimpleRoomHeader.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar NotificationUtils = require('./NotificationUtils');\n\nvar encodeActions = NotificationUtils.encodeActions;\n\nmodule.exports = {\n ACTION_NOTIFY: encodeActions({ notify: true }),\n ACTION_NOTIFY_DEFAULT_SOUND: encodeActions({ notify: true, sound: \"default\" }),\n ACTION_NOTIFY_RING_SOUND: encodeActions({ notify: true, sound: \"ring\" }),\n ACTION_HIGHLIGHT_DEFAULT_SOUND: encodeActions({ notify: true, sound: \"default\", highlight: true }),\n ACTION_DONT_NOTIFY: encodeActions({ notify: false }),\n ACTION_DISABLED: null\n};\n//# sourceMappingURL=StandardActions.js.map","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import PropTypes from 'prop-types';\nexport var subscriptionShape = PropTypes.shape({\n trySubscribe: PropTypes.func.isRequired,\n tryUnsubscribe: PropTypes.func.isRequired,\n notifyNestedSubs: PropTypes.func.isRequired,\n isSubscribed: PropTypes.func.isRequired\n});\nexport var storeShape = PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n});","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nimport warning from '../utils/warning';\nvar didWarnAboutReceivingStore = false;\n\nfunction warnAboutReceivingStore() {\n if (didWarnAboutReceivingStore) {\n return;\n }\n\n didWarnAboutReceivingStore = true;\n warning('<Provider> does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/reduxjs/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.');\n}\n\nexport function createProvider(storeKey) {\n var _Provider$childContex;\n\n if (storeKey === void 0) {\n storeKey = 'store';\n }\n\n var subscriptionKey = storeKey + \"Subscription\";\n\n var Provider =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[storeKey] = this[storeKey], _ref[subscriptionKey] = null, _ref;\n };\n\n function Provider(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this[storeKey] = props.store;\n return _this;\n }\n\n _proto.render = function render() {\n return Children.only(this.props.children);\n };\n\n return Provider;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n Provider.prototype.componentWillReceiveProps = function (nextProps) {\n if (this[storeKey] !== nextProps.store) {\n warnAboutReceivingStore();\n }\n };\n }\n\n Provider.propTypes = {\n store: storeShape.isRequired,\n children: PropTypes.element.isRequired\n };\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[storeKey] = storeShape.isRequired, _Provider$childContex[subscriptionKey] = subscriptionShape, _Provider$childContex);\n return Provider;\n}\nexport default createProvider();","export default function _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}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","// encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\nvar CLEARED = null;\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n // the current/next pattern is copied from redux's createStore code.\n // TODO: refactor+expose that code to be reusable here?\n var current = [];\n var next = [];\n return {\n clear: function clear() {\n next = CLEARED;\n current = CLEARED;\n },\n notify: function notify() {\n var listeners = current = next;\n\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n },\n get: function get() {\n return next;\n },\n subscribe: function subscribe(listener) {\n var isSubscribed = true;\n if (next === current) next = current.slice();\n next.push(listener);\n return function unsubscribe() {\n if (!isSubscribed || current === CLEARED) return;\n isSubscribed = false;\n if (next === current) next = current.slice();\n next.splice(next.indexOf(listener), 1);\n };\n }\n };\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(store, parentSub, onStateChange) {\n this.store = store;\n this.parentSub = parentSub;\n this.onStateChange = onStateChange;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n }\n\n var _proto = Subscription.prototype;\n\n _proto.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n _proto.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n _proto.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.onStateChange) : this.store.subscribe(this.onStateChange);\n this.listeners = createListenerCollection();\n }\n };\n\n _proto.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\nexport { Subscription as default };","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport { Component, createElement } from 'react';\nimport { isValidElementType } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nvar hotReloadingVersion = 0;\nvar dummyState = {};\n\nfunction noop() {}\n\nfunction makeSelectorStateful(sourceSelector, store) {\n // wrap the selector in an object that tracks its results between runs.\n var selector = {\n run: function runComponentSelector(props) {\n try {\n var nextProps = sourceSelector(store.getState(), props);\n\n if (nextProps !== selector.props || selector.error) {\n selector.shouldComponentUpdate = true;\n selector.props = nextProps;\n selector.error = null;\n }\n } catch (error) {\n selector.shouldComponentUpdate = true;\n selector.error = error;\n }\n }\n };\n return selector;\n}\n\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n var _contextTypes, _childContextTypes;\n\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\"]);\n\n var subscriptionKey = storeKey + 'Subscription';\n var version = hotReloadingVersion++;\n var contextTypes = (_contextTypes = {}, _contextTypes[storeKey] = storeShape, _contextTypes[subscriptionKey] = subscriptionShape, _contextTypes);\n var childContextTypes = (_childContextTypes = {}, _childContextTypes[subscriptionKey] = subscriptionShape, _childContextTypes);\n return function wrapWithConnect(WrappedComponent) {\n invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + JSON.stringify(WrappedComponent)));\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n withRef: withRef,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent // TODO Actually fix our use of componentWillReceiveProps\n\n /* eslint-disable react/no-deprecated */\n\n });\n\n var Connect =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Connect, _Component);\n\n function Connect(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this.version = version;\n _this.state = {};\n _this.renderCount = 0;\n _this.store = props[storeKey] || context[storeKey];\n _this.propsMode = Boolean(props[storeKey]);\n _this.setWrappedInstance = _this.setWrappedInstance.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n invariant(_this.store, \"Could not find \\\"\" + storeKey + \"\\\" in either the context or props of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + (\"or explicitly pass \\\"\" + storeKey + \"\\\" as a prop to \\\"\" + displayName + \"\\\".\"));\n\n _this.initSelector();\n\n _this.initSubscription();\n\n return _this;\n }\n\n var _proto = Connect.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref3;\n\n // If this component received store from props, its subscription should be transparent\n // to any descendants receiving store+subscription from context; it passes along\n // subscription passed to it. Otherwise, it shadows the parent subscription, which allows\n // Connect to control ordering of notifications to flow top-down.\n var subscription = this.propsMode ? null : this.subscription;\n return _ref3 = {}, _ref3[subscriptionKey] = subscription || this.context[subscriptionKey], _ref3;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n if (!shouldHandleStateChanges) return; // componentWillMount fires during server side rendering, but componentDidMount and\n // componentWillUnmount do not. Because of this, trySubscribe happens during ...didMount.\n // Otherwise, unsubscription would never take place during SSR, causing a memory leak.\n // To handle the case where a child component may have triggered a state change by\n // dispatching an action in its componentWillMount, we have to re-run the select and maybe\n // re-render.\n\n this.subscription.trySubscribe();\n this.selector.run(this.props);\n if (this.selector.shouldComponentUpdate) this.forceUpdate();\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n this.selector.run(nextProps);\n };\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate() {\n return this.selector.shouldComponentUpdate;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.subscription) this.subscription.tryUnsubscribe();\n this.subscription = null;\n this.notifyNestedSubs = noop;\n this.store = null;\n this.selector.run = noop;\n this.selector.shouldComponentUpdate = false;\n };\n\n _proto.getWrappedInstance = function getWrappedInstance() {\n invariant(withRef, \"To access the wrapped instance, you need to specify \" + (\"{ withRef: true } in the options argument of the \" + methodName + \"() call.\"));\n return this.wrappedInstance;\n };\n\n _proto.setWrappedInstance = function setWrappedInstance(ref) {\n this.wrappedInstance = ref;\n };\n\n _proto.initSelector = function initSelector() {\n var sourceSelector = selectorFactory(this.store.dispatch, selectorFactoryOptions);\n this.selector = makeSelectorStateful(sourceSelector, this.store);\n this.selector.run(this.props);\n };\n\n _proto.initSubscription = function initSubscription() {\n if (!shouldHandleStateChanges) return; // parentSub's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n var parentSub = (this.propsMode ? this.props : this.context)[subscriptionKey];\n this.subscription = new Subscription(this.store, parentSub, this.onStateChange.bind(this)); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `this.subscription` will then be null. An\n // extra null check every change can be avoided by copying the method onto `this` and then\n // replacing it with a no-op on unmount. This can probably be avoided if Subscription's\n // listeners logic is changed to not call listeners that have been unsubscribed in the\n // middle of the notification loop.\n\n this.notifyNestedSubs = this.subscription.notifyNestedSubs.bind(this.subscription);\n };\n\n _proto.onStateChange = function onStateChange() {\n this.selector.run(this.props);\n\n if (!this.selector.shouldComponentUpdate) {\n this.notifyNestedSubs();\n } else {\n this.componentDidUpdate = this.notifyNestedSubsOnComponentDidUpdate;\n this.setState(dummyState);\n }\n };\n\n _proto.notifyNestedSubsOnComponentDidUpdate = function notifyNestedSubsOnComponentDidUpdate() {\n // `componentDidUpdate` is conditionally implemented when `onStateChange` determines it\n // needs to notify nested subs. Once called, it unimplements itself until further state\n // changes occur. Doing it this way vs having a permanent `componentDidUpdate` that does\n // a boolean check every time avoids an extra method call most of the time, resulting\n // in some perf boost.\n this.componentDidUpdate = undefined;\n this.notifyNestedSubs();\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.subscription) && this.subscription.isSubscribed();\n };\n\n _proto.addExtraProps = function addExtraProps(props) {\n if (!withRef && !renderCountProp && !(this.propsMode && this.subscription)) return props; // make a shallow copy so that fields added don't leak to the original selector.\n // this is especially important for 'ref' since that's a reference back to the component\n // instance. a singleton memoized selector would then be holding a reference to the\n // instance, preventing the instance from being garbage collected, and that would be bad\n\n var withExtras = _extends({}, props);\n\n if (withRef) withExtras.ref = this.setWrappedInstance;\n if (renderCountProp) withExtras[renderCountProp] = this.renderCount++;\n if (this.propsMode && this.subscription) withExtras[subscriptionKey] = this.subscription;\n return withExtras;\n };\n\n _proto.render = function render() {\n var selector = this.selector;\n selector.shouldComponentUpdate = false;\n\n if (selector.error) {\n throw selector.error;\n } else {\n return createElement(WrappedComponent, this.addExtraProps(selector.props));\n }\n };\n\n return Connect;\n }(Component);\n /* eslint-enable react/no-deprecated */\n\n\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n Connect.childContextTypes = childContextTypes;\n Connect.contextTypes = contextTypes;\n Connect.propTypes = contextTypes;\n\n if (process.env.NODE_ENV !== 'production') {\n Connect.prototype.componentWillUpdate = function componentWillUpdate() {\n var _this2 = this;\n\n // We are hot reloading!\n if (this.version !== version) {\n this.version = version;\n this.initSelector(); // If any connected descendants don't hot reload (and resubscribe in the process), their\n // listeners will be lost when we unsubscribe. Unfortunately, by copying over all\n // listeners, this does mean that the old versions of connected descendants will still be\n // notified of state changes; however, their onStateChange function is a no-op so this\n // isn't a huge deal.\n\n var oldListeners = [];\n\n if (this.subscription) {\n oldListeners = this.subscription.listeners.get();\n this.subscription.tryUnsubscribe();\n }\n\n this.initSubscription();\n\n if (shouldHandleStateChanges) {\n this.subscription.trySubscribe();\n oldListeners.forEach(function (listener) {\n return _this2.subscription.listeners.subscribe(listener);\n });\n }\n }\n };\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n// \n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n// \n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n// \n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n// \n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n// \n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default createConnect();","import Provider, { createProvider } from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport connect from './connect/connect';\nexport { Provider, createProvider, connectAdvanced, connect };","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\nvar React = require('react');\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = TYPE_STATICS[targetComponent['$$typeof']] || REACT_STATICS;\n var sourceStatics = TYPE_STATICS[sourceComponent['$$typeof']] || REACT_STATICS;\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","'use strict';\n\nvar GROUP_LEFT_TO_RIGHT,\n GROUP_RIGHT_TO_LEFT,\n EXPRESSION_LEFT_TO_RIGHT,\n EXPRESSION_RIGHT_TO_LEFT;\n\n/*\n * Character ranges of left-to-right characters.\n */\n\nGROUP_LEFT_TO_RIGHT = 'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6' +\n '\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C' +\n '\\uFE00-\\uFE6F\\uFEFD-\\uFFFF';\n\n/*\n * Character ranges of right-to-left characters.\n */\n\nGROUP_RIGHT_TO_LEFT = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC';\n\n/*\n * Expression to match a left-to-right string.\n *\n * Matches the start of a string, followed by zero or\n * more non-right-to-left characters, followed by a\n * left-to-right character.\n */\n\nEXPRESSION_LEFT_TO_RIGHT = new RegExp(\n '^[^' + GROUP_RIGHT_TO_LEFT + ']*[' + GROUP_LEFT_TO_RIGHT + ']'\n);\n\n/*\n * Expression to match a right-to-left string.\n *\n * Matches the start of a string, followed by zero or\n * more non-left-to-right characters, followed by a\n * right-to-left character.\n */\n\nEXPRESSION_RIGHT_TO_LEFT = new RegExp(\n '^[^' + GROUP_LEFT_TO_RIGHT + ']*[' + GROUP_RIGHT_TO_LEFT + ']'\n);\n\n/**\n * Detect the direction of text.\n *\n * @param {string} value - value to stringify and check.\n * @return {string} - One of `\"rtl\"`, `\"ltr\"`, or\n * `\"neutral\"`.\n */\nfunction direction(value) {\n value = value.toString();\n\n if (EXPRESSION_RIGHT_TO_LEFT.test(value)) {\n return 'rtl';\n }\n\n if (EXPRESSION_LEFT_TO_RIGHT.test(value)) {\n return 'ltr';\n }\n\n return 'neutral';\n}\n\n/*\n * Expose `direction`.\n */\n\nmodule.exports = direction;\n","function isBackward(selection) {\n var startNode = selection.anchorNode;\n var startOffset = selection.anchorOffset;\n var endNode = selection.focusNode;\n var endOffset = selection.focusOffset;\n\n var position = startNode.compareDocumentPosition(endNode);\n\n return !(position === 4 || (position === 0 && startOffset < endOffset));\n}\n\nmodule.exports = isBackward;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","'use strict';\n\nmodule.exports = require('./lib/ReactDOMServer');\n","\"use strict\";\n\nrequire(\"core-js/shim\");\n\nrequire(\"regenerator-runtime/runtime\");\n\nrequire(\"core-js/fn/regexp/escape\");\n\nif (global._babelPolyfill) {\n throw new Error(\"only one instance of babel-polyfill is allowed\");\n}\nglobal._babelPolyfill = true;\n\nvar DEFINE_PROPERTY = \"defineProperty\";\nfunction define(O, key, value) {\n O[key] || Object[DEFINE_PROPERTY](O, key, {\n writable: true,\n configurable: true,\n value: value\n });\n}\n\ndefine(String.prototype, \"padLeft\", \"\".padStart);\ndefine(String.prototype, \"padRight\", \"\".padEnd);\n\n\"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill\".split(\",\").forEach(function (key) {\n [][key] && define(Array, key, Function.call.bind([][key]));\n});","require('./modules/es6.symbol');\nrequire('./modules/es6.object.create');\nrequire('./modules/es6.object.define-property');\nrequire('./modules/es6.object.define-properties');\nrequire('./modules/es6.object.get-own-property-descriptor');\nrequire('./modules/es6.object.get-prototype-of');\nrequire('./modules/es6.object.keys');\nrequire('./modules/es6.object.get-own-property-names');\nrequire('./modules/es6.object.freeze');\nrequire('./modules/es6.object.seal');\nrequire('./modules/es6.object.prevent-extensions');\nrequire('./modules/es6.object.is-frozen');\nrequire('./modules/es6.object.is-sealed');\nrequire('./modules/es6.object.is-extensible');\nrequire('./modules/es6.object.assign');\nrequire('./modules/es6.object.is');\nrequire('./modules/es6.object.set-prototype-of');\nrequire('./modules/es6.object.to-string');\nrequire('./modules/es6.function.bind');\nrequire('./modules/es6.function.name');\nrequire('./modules/es6.function.has-instance');\nrequire('./modules/es6.parse-int');\nrequire('./modules/es6.parse-float');\nrequire('./modules/es6.number.constructor');\nrequire('./modules/es6.number.to-fixed');\nrequire('./modules/es6.number.to-precision');\nrequire('./modules/es6.number.epsilon');\nrequire('./modules/es6.number.is-finite');\nrequire('./modules/es6.number.is-integer');\nrequire('./modules/es6.number.is-nan');\nrequire('./modules/es6.number.is-safe-integer');\nrequire('./modules/es6.number.max-safe-integer');\nrequire('./modules/es6.number.min-safe-integer');\nrequire('./modules/es6.number.parse-float');\nrequire('./modules/es6.number.parse-int');\nrequire('./modules/es6.math.acosh');\nrequire('./modules/es6.math.asinh');\nrequire('./modules/es6.math.atanh');\nrequire('./modules/es6.math.cbrt');\nrequire('./modules/es6.math.clz32');\nrequire('./modules/es6.math.cosh');\nrequire('./modules/es6.math.expm1');\nrequire('./modules/es6.math.fround');\nrequire('./modules/es6.math.hypot');\nrequire('./modules/es6.math.imul');\nrequire('./modules/es6.math.log10');\nrequire('./modules/es6.math.log1p');\nrequire('./modules/es6.math.log2');\nrequire('./modules/es6.math.sign');\nrequire('./modules/es6.math.sinh');\nrequire('./modules/es6.math.tanh');\nrequire('./modules/es6.math.trunc');\nrequire('./modules/es6.string.from-code-point');\nrequire('./modules/es6.string.raw');\nrequire('./modules/es6.string.trim');\nrequire('./modules/es6.string.iterator');\nrequire('./modules/es6.string.code-point-at');\nrequire('./modules/es6.string.ends-with');\nrequire('./modules/es6.string.includes');\nrequire('./modules/es6.string.repeat');\nrequire('./modules/es6.string.starts-with');\nrequire('./modules/es6.string.anchor');\nrequire('./modules/es6.string.big');\nrequire('./modules/es6.string.blink');\nrequire('./modules/es6.string.bold');\nrequire('./modules/es6.string.fixed');\nrequire('./modules/es6.string.fontcolor');\nrequire('./modules/es6.string.fontsize');\nrequire('./modules/es6.string.italics');\nrequire('./modules/es6.string.link');\nrequire('./modules/es6.string.small');\nrequire('./modules/es6.string.strike');\nrequire('./modules/es6.string.sub');\nrequire('./modules/es6.string.sup');\nrequire('./modules/es6.date.now');\nrequire('./modules/es6.date.to-json');\nrequire('./modules/es6.date.to-iso-string');\nrequire('./modules/es6.date.to-string');\nrequire('./modules/es6.date.to-primitive');\nrequire('./modules/es6.array.is-array');\nrequire('./modules/es6.array.from');\nrequire('./modules/es6.array.of');\nrequire('./modules/es6.array.join');\nrequire('./modules/es6.array.slice');\nrequire('./modules/es6.array.sort');\nrequire('./modules/es6.array.for-each');\nrequire('./modules/es6.array.map');\nrequire('./modules/es6.array.filter');\nrequire('./modules/es6.array.some');\nrequire('./modules/es6.array.every');\nrequire('./modules/es6.array.reduce');\nrequire('./modules/es6.array.reduce-right');\nrequire('./modules/es6.array.index-of');\nrequire('./modules/es6.array.last-index-of');\nrequire('./modules/es6.array.copy-within');\nrequire('./modules/es6.array.fill');\nrequire('./modules/es6.array.find');\nrequire('./modules/es6.array.find-index');\nrequire('./modules/es6.array.species');\nrequire('./modules/es6.array.iterator');\nrequire('./modules/es6.regexp.constructor');\nrequire('./modules/es6.regexp.to-string');\nrequire('./modules/es6.regexp.flags');\nrequire('./modules/es6.regexp.match');\nrequire('./modules/es6.regexp.replace');\nrequire('./modules/es6.regexp.search');\nrequire('./modules/es6.regexp.split');\nrequire('./modules/es6.promise');\nrequire('./modules/es6.map');\nrequire('./modules/es6.set');\nrequire('./modules/es6.weak-map');\nrequire('./modules/es6.weak-set');\nrequire('./modules/es6.typed.array-buffer');\nrequire('./modules/es6.typed.data-view');\nrequire('./modules/es6.typed.int8-array');\nrequire('./modules/es6.typed.uint8-array');\nrequire('./modules/es6.typed.uint8-clamped-array');\nrequire('./modules/es6.typed.int16-array');\nrequire('./modules/es6.typed.uint16-array');\nrequire('./modules/es6.typed.int32-array');\nrequire('./modules/es6.typed.uint32-array');\nrequire('./modules/es6.typed.float32-array');\nrequire('./modules/es6.typed.float64-array');\nrequire('./modules/es6.reflect.apply');\nrequire('./modules/es6.reflect.construct');\nrequire('./modules/es6.reflect.define-property');\nrequire('./modules/es6.reflect.delete-property');\nrequire('./modules/es6.reflect.enumerate');\nrequire('./modules/es6.reflect.get');\nrequire('./modules/es6.reflect.get-own-property-descriptor');\nrequire('./modules/es6.reflect.get-prototype-of');\nrequire('./modules/es6.reflect.has');\nrequire('./modules/es6.reflect.is-extensible');\nrequire('./modules/es6.reflect.own-keys');\nrequire('./modules/es6.reflect.prevent-extensions');\nrequire('./modules/es6.reflect.set');\nrequire('./modules/es6.reflect.set-prototype-of');\nrequire('./modules/es7.array.includes');\nrequire('./modules/es7.array.flat-map');\nrequire('./modules/es7.array.flatten');\nrequire('./modules/es7.string.at');\nrequire('./modules/es7.string.pad-start');\nrequire('./modules/es7.string.pad-end');\nrequire('./modules/es7.string.trim-left');\nrequire('./modules/es7.string.trim-right');\nrequire('./modules/es7.string.match-all');\nrequire('./modules/es7.symbol.async-iterator');\nrequire('./modules/es7.symbol.observable');\nrequire('./modules/es7.object.get-own-property-descriptors');\nrequire('./modules/es7.object.values');\nrequire('./modules/es7.object.entries');\nrequire('./modules/es7.object.define-getter');\nrequire('./modules/es7.object.define-setter');\nrequire('./modules/es7.object.lookup-getter');\nrequire('./modules/es7.object.lookup-setter');\nrequire('./modules/es7.map.to-json');\nrequire('./modules/es7.set.to-json');\nrequire('./modules/es7.map.of');\nrequire('./modules/es7.set.of');\nrequire('./modules/es7.weak-map.of');\nrequire('./modules/es7.weak-set.of');\nrequire('./modules/es7.map.from');\nrequire('./modules/es7.set.from');\nrequire('./modules/es7.weak-map.from');\nrequire('./modules/es7.weak-set.from');\nrequire('./modules/es7.global');\nrequire('./modules/es7.system.global');\nrequire('./modules/es7.error.is-error');\nrequire('./modules/es7.math.clamp');\nrequire('./modules/es7.math.deg-per-rad');\nrequire('./modules/es7.math.degrees');\nrequire('./modules/es7.math.fscale');\nrequire('./modules/es7.math.iaddh');\nrequire('./modules/es7.math.isubh');\nrequire('./modules/es7.math.imulh');\nrequire('./modules/es7.math.rad-per-deg');\nrequire('./modules/es7.math.radians');\nrequire('./modules/es7.math.scale');\nrequire('./modules/es7.math.umulh');\nrequire('./modules/es7.math.signbit');\nrequire('./modules/es7.promise.finally');\nrequire('./modules/es7.promise.try');\nrequire('./modules/es7.reflect.define-metadata');\nrequire('./modules/es7.reflect.delete-metadata');\nrequire('./modules/es7.reflect.get-metadata');\nrequire('./modules/es7.reflect.get-metadata-keys');\nrequire('./modules/es7.reflect.get-own-metadata');\nrequire('./modules/es7.reflect.get-own-metadata-keys');\nrequire('./modules/es7.reflect.has-metadata');\nrequire('./modules/es7.reflect.has-own-metadata');\nrequire('./modules/es7.reflect.metadata');\nrequire('./modules/es7.asap');\nrequire('./modules/es7.observable');\nrequire('./modules/web.timers');\nrequire('./modules/web.immediate');\nrequire('./modules/web.dom.iterable');\nmodule.exports = require('./modules/_core');\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n if (it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n replacer = args[1];\n if (typeof replacer == 'function') $replacer = replacer;\n if ($replacer || !isArray(replacer)) replacer = function (key, value) {\n if ($replacer) value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n require('./_redefine')(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n","// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","'use strict';\nvar isObject = require('./_is-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar HAS_INSTANCE = require('./_wks')('hasInstance');\nvar FunctionProto = Function.prototype;\n// 19.2.3.6 Function.prototype[@@hasInstance](V)\nif (!(HAS_INSTANCE in FunctionProto)) require('./_object-dp').f(FunctionProto, HAS_INSTANCE, { value: function (O) {\n if (typeof this != 'function' || !isObject(O)) return false;\n if (!isObject(this.prototype)) return O instanceof this;\n // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n return false;\n} });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = require('./_descriptors') ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n require('./_redefine')(global, NUMBER, $Number);\n}\n","'use strict';\nvar $export = require('./_export');\nvar toInteger = require('./_to-integer');\nvar aNumberValue = require('./_a-number-value');\nvar repeat = require('./_string-repeat');\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n var i = -1;\n var c2 = c;\n while (++i < 6) {\n c2 += n * data[i];\n data[i] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\nvar divide = function (n) {\n var i = 6;\n var c = 0;\n while (--i >= 0) {\n c += data[i];\n data[i] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\nvar numToString = function () {\n var i = 6;\n var s = '';\n while (--i >= 0) {\n if (s !== '' || i === 0 || data[i] !== 0) {\n var t = String(data[i]);\n s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n }\n } return s;\n};\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !require('./_fails')(function () {\n // V8 ~ Android 4.3-\n $toFixed.call({});\n})), 'Number', {\n toFixed: function toFixed(fractionDigits) {\n var x = aNumberValue(this, ERROR);\n var f = toInteger(fractionDigits);\n var s = '';\n var m = ZERO;\n var e, z, j, k;\n if (f < 0 || f > 20) throw RangeError(ERROR);\n // eslint-disable-next-line no-self-compare\n if (x != x) return 'NaN';\n if (x <= -1e21 || x >= 1e21) return String(x);\n if (x < 0) {\n s = '-';\n x = -x;\n }\n if (x > 1e-21) {\n e = log(x * pow(2, 69, 1)) - 69;\n z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = f;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n m = numToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n m = numToString() + repeat.call(ZERO, f);\n }\n }\n if (f > 0) {\n k = m.length;\n m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n } else {\n m = s + m;\n } return m;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $fails = require('./_fails');\nvar aNumberValue = require('./_a-number-value');\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n // IE7-\n return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n // V8 ~ Android 4.3-\n $toPrecision.call({});\n})), 'Number', {\n toPrecision: function toPrecision(precision) {\n var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n }\n});\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","'use strict';\n// 21.1.3.25 String.prototype.trim()\nrequire('./_string-trim')('trim', function ($trim) {\n return function trim() {\n return $trim(this, 3);\n };\n});\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n","'use strict';\n// B.2.3.3 String.prototype.big()\nrequire('./_string-html')('big', function (createHTML) {\n return function big() {\n return createHTML(this, 'big', '', '');\n };\n});\n","'use strict';\n// B.2.3.4 String.prototype.blink()\nrequire('./_string-html')('blink', function (createHTML) {\n return function blink() {\n return createHTML(this, 'blink', '', '');\n };\n});\n","'use strict';\n// B.2.3.5 String.prototype.bold()\nrequire('./_string-html')('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n","'use strict';\n// B.2.3.6 String.prototype.fixed()\nrequire('./_string-html')('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n","'use strict';\n// B.2.3.7 String.prototype.fontcolor(color)\nrequire('./_string-html')('fontcolor', function (createHTML) {\n return function fontcolor(color) {\n return createHTML(this, 'font', 'color', color);\n };\n});\n","'use strict';\n// B.2.3.8 String.prototype.fontsize(size)\nrequire('./_string-html')('fontsize', function (createHTML) {\n return function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n };\n});\n","'use strict';\n// B.2.3.9 String.prototype.italics()\nrequire('./_string-html')('italics', function (createHTML) {\n return function italics() {\n return createHTML(this, 'i', '', '');\n };\n});\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n","'use strict';\n// B.2.3.12 String.prototype.strike()\nrequire('./_string-html')('strike', function (createHTML) {\n return function strike() {\n return createHTML(this, 'strike', '', '');\n };\n});\n","'use strict';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n","'use strict';\n// B.2.3.14 String.prototype.sup()\nrequire('./_string-html')('sup', function (createHTML) {\n return function sup() {\n return createHTML(this, 'sup', '', '');\n };\n});\n","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\n\n$export($export.P + $export.F * require('./_fails')(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n // eslint-disable-next-line no-unused-vars\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n","// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = require('./_export');\nvar toISOString = require('./_date-to-iso-string');\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n toISOString: toISOString\n});\n","'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = require('./_fails');\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var d = this;\n var y = d.getUTCFullYear();\n var m = d.getUTCMilliseconds();\n var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n","var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n require('./_redefine')(DateProto, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? $toString.call(this) : INVALID_DATE;\n });\n}\n","var TO_PRIMITIVE = require('./_wks')('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive'));\n","'use strict';\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\nvar NUMBER = 'number';\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');\n return toPrimitive(anObject(this), hint != NUMBER);\n};\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n","'use strict';\n// 22.1.3.13 Array.prototype.join(separator)\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar arrayJoin = [].join;\n\n// fallback for not array-like strings\n$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', {\n join: function join(separator) {\n return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar html = require('./_html');\nvar cof = require('./_cof');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * require('./_fails')(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $filter = require('./_array-methods')(2);\n\n$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {\n // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $every = require('./_array-methods')(4);\n\n$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', {\n // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {\n // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', {\n // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], true);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n var O = toIObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n }\n});\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","require('./_set-species')('Array');\n","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n re2[require('./_wks')('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\n","// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match) {\n // 21.1.3.11 String.prototype.match(regexp)\n return [function match(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n }, $match];\n});\n","// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace) {\n // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)\n return [function replace(searchValue, replaceValue) {\n 'use strict';\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n }, $replace];\n});\n","// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search) {\n // 21.1.3.15 String.prototype.search(regexp)\n return [function search(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n }, $search];\n});\n","// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split) {\n 'use strict';\n var isRegExp = require('./_is-regexp');\n var _split = $split;\n var $push = [].push;\n var $SPLIT = 'split';\n var LENGTH = 'length';\n var LAST_INDEX = 'lastIndex';\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group\n // based on es5-shim implementation, need to rework it\n $split = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return _split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var separator2, match, lastIndex, lastLength, i;\n // Doesn't need flags gy, but they don't hurt\n if (!NPCG) separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\\\s)', flags);\n while (match = separatorCopy.exec(string)) {\n // `separatorCopy.lastIndex` is not reliable cross-browser\n lastIndex = match.index + match[0][LENGTH];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG\n // eslint-disable-next-line no-loop-func\n if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function () {\n for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined;\n });\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n $split = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);\n };\n }\n // 21.1.3.17 String.prototype.split(separator, limit)\n return [function split(separator, limit) {\n var O = defined(this);\n var fn = separator == undefined ? undefined : separator[SPLIT];\n return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);\n }, $split];\n});\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value);\n if (domain) domain.exit();\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n if (promise._h == 1) return false;\n var chain = promise._a || promise._c;\n var i = 0;\n var reaction;\n while (chain.length > i) {\n reaction = chain[i++];\n if (reaction.fail || !isUnhandled(reaction.promise)) return false;\n } return true;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var final = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < final) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n DataView: require('./_typed-buffer').DataView\n});\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","'use strict';\n// 26.1.5 Reflect.enumerate(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar Enumerate = function (iterated) {\n this._t = anObject(iterated); // target\n this._i = 0; // next index\n var keys = this._k = []; // keys\n var key;\n for (key in iterated) keys.push(key);\n};\nrequire('./_iter-create')(Enumerate, 'Object', function () {\n var that = this;\n var keys = that._k;\n var key;\n do {\n if (that._i >= keys.length) return { value: undefined, done: true };\n } while (!((key = keys[that._i++]) in that._t));\n return { value: key, done: false };\n});\n\n$export($export.S, 'Reflect', {\n enumerate: function enumerate(target) {\n return new Enumerate(target);\n }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0);\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar aFunction = require('./_a-function');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen, A;\n aFunction(callbackfn);\n sourceLen = toLength(O.length);\n A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatMap');\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatten\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatten: function flatten(/* depthArg = 1 */) {\n var depthArg = arguments[0];\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatten');\n","'use strict';\n// https://github.com/mathiasbynens/String.prototype.at\nvar $export = require('./_export');\nvar $at = require('./_string-at')(true);\n\n$export($export.P, 'String', {\n at: function at(pos) {\n return $at(this, pos);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\n\n$export($export.P, 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\n\n$export($export.P, 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimLeft', function ($trim) {\n return function trimLeft() {\n return $trim(this, 1);\n };\n}, 'trimStart');\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimRight', function ($trim) {\n return function trimRight() {\n return $trim(this, 2);\n };\n}, 'trimEnd');\n","'use strict';\n// https://tc39.github.io/String.prototype.matchAll/\nvar $export = require('./_export');\nvar defined = require('./_defined');\nvar toLength = require('./_to-length');\nvar isRegExp = require('./_is-regexp');\nvar getFlags = require('./_flags');\nvar RegExpProto = RegExp.prototype;\n\nvar $RegExpStringIterator = function (regexp, string) {\n this._r = regexp;\n this._s = string;\n};\n\nrequire('./_iter-create')($RegExpStringIterator, 'RegExp String', function next() {\n var match = this._r.exec(this._s);\n return { value: match, done: match === null };\n});\n\n$export($export.P, 'String', {\n matchAll: function matchAll(regexp) {\n defined(this);\n if (!isRegExp(regexp)) throw TypeError(regexp + ' is not a regexp!');\n var S = String(this);\n var flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp);\n var rx = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags);\n rx.lastIndex = toLength(regexp.lastIndex);\n return new $RegExpStringIterator(rx, S);\n }\n});\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar aFunction = require('./_a-function');\nvar $defineProperty = require('./_object-dp');\n\n// B.2.2.2 Object.prototype.__defineGetter__(P, getter)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __defineGetter__: function __defineGetter__(P, getter) {\n $defineProperty.f(toObject(this), P, { get: aFunction(getter), enumerable: true, configurable: true });\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar aFunction = require('./_a-function');\nvar $defineProperty = require('./_object-dp');\n\n// B.2.2.3 Object.prototype.__defineSetter__(P, setter)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __defineSetter__: function __defineSetter__(P, setter) {\n $defineProperty.f(toObject(this), P, { set: aFunction(setter), enumerable: true, configurable: true });\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\nvar getPrototypeOf = require('./_object-gpo');\nvar getOwnPropertyDescriptor = require('./_object-gopd').f;\n\n// B.2.2.4 Object.prototype.__lookupGetter__(P)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __lookupGetter__: function __lookupGetter__(P) {\n var O = toObject(this);\n var K = toPrimitive(P, true);\n var D;\n do {\n if (D = getOwnPropertyDescriptor(O, K)) return D.get;\n } while (O = getPrototypeOf(O));\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\nvar getPrototypeOf = require('./_object-gpo');\nvar getOwnPropertyDescriptor = require('./_object-gopd').f;\n\n// B.2.2.5 Object.prototype.__lookupSetter__(P)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __lookupSetter__: function __lookupSetter__(P) {\n var O = toObject(this);\n var K = toPrimitive(P, true);\n var D;\n do {\n if (D = getOwnPropertyDescriptor(O, K)) return D.set;\n } while (O = getPrototypeOf(O));\n }\n});\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Map', { toJSON: require('./_collection-to-json')('Map') });\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Set', { toJSON: require('./_collection-to-json')('Set') });\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\nrequire('./_set-collection-of')('Map');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\nrequire('./_set-collection-of')('Set');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of\nrequire('./_set-collection-of')('WeakMap');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of\nrequire('./_set-collection-of')('WeakSet');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\nrequire('./_set-collection-from')('Map');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\nrequire('./_set-collection-from')('Set');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from\nrequire('./_set-collection-from')('WeakMap');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from\nrequire('./_set-collection-from')('WeakSet');\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.G, { global: require('./_global') });\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.S, 'System', { global: require('./_global') });\n","// https://github.com/ljharb/proposal-is-error\nvar $export = require('./_export');\nvar cof = require('./_cof');\n\n$export($export.S, 'Error', {\n isError: function isError(it) {\n return cof(it) === 'Error';\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clamp: function clamp(x, lower, upper) {\n return Math.min(upper, Math.max(lower, x));\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { DEG_PER_RAD: Math.PI / 180 });\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar RAD_PER_DEG = 180 / Math.PI;\n\n$export($export.S, 'Math', {\n degrees: function degrees(radians) {\n return radians * RAD_PER_DEG;\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar scale = require('./_math-scale');\nvar fround = require('./_math-fround');\n\n$export($export.S, 'Math', {\n fscale: function fscale(x, inLow, inHigh, outLow, outHigh) {\n return fround(scale(x, inLow, inHigh, outLow, outHigh));\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n iaddh: function iaddh(x0, x1, y0, y1) {\n var $x0 = x0 >>> 0;\n var $x1 = x1 >>> 0;\n var $y0 = y0 >>> 0;\n return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n isubh: function isubh(x0, x1, y0, y1) {\n var $x0 = x0 >>> 0;\n var $x1 = x1 >>> 0;\n var $y0 = y0 >>> 0;\n return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n imulh: function imulh(u, v) {\n var UINT16 = 0xffff;\n var $u = +u;\n var $v = +v;\n var u0 = $u & UINT16;\n var v0 = $v & UINT16;\n var u1 = $u >> 16;\n var v1 = $v >> 16;\n var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { RAD_PER_DEG: 180 / Math.PI });\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar DEG_PER_RAD = Math.PI / 180;\n\n$export($export.S, 'Math', {\n radians: function radians(degrees) {\n return degrees * DEG_PER_RAD;\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { scale: require('./_math-scale') });\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n umulh: function umulh(u, v) {\n var UINT16 = 0xffff;\n var $u = +u;\n var $v = +v;\n var u0 = $u & UINT16;\n var v0 = $v & UINT16;\n var u1 = $u >>> 16;\n var v1 = $v >>> 16;\n var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);\n }\n});\n","// http://jfbastien.github.io/papers/Math.signbit.html\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { signbit: function signbit(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) != x ? x : x == 0 ? 1 / x == Infinity : x > 0;\n} });\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar ordinaryDefineOwnMetadata = metadata.set;\n\nmetadata.exp({ defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey) {\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar getOrCreateMetadataMap = metadata.map;\nvar store = metadata.store;\n\nmetadata.exp({ deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]);\n var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);\n if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;\n if (metadataMap.size) return true;\n var targetMetadata = store.get(target);\n targetMetadata['delete'](targetKey);\n return !!targetMetadata.size || store['delete'](target);\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nvar ordinaryGetMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;\n};\n\nmetadata.exp({ getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var Set = require('./es6.set');\nvar from = require('./_array-from-iterable');\nvar metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nvar ordinaryMetadataKeys = function (O, P) {\n var oKeys = ordinaryOwnMetadataKeys(O, P);\n var parent = getPrototypeOf(O);\n if (parent === null) return oKeys;\n var pKeys = ordinaryMetadataKeys(parent, P);\n return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;\n};\n\nmetadata.exp({ getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {\n return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {\n return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nvar ordinaryHasMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return true;\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;\n};\n\nmetadata.exp({ hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var $metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar toMetaKey = $metadata.key;\nvar ordinaryDefineOwnMetadata = $metadata.set;\n\n$metadata.exp({ metadata: function metadata(metadataKey, metadataValue) {\n return function decorator(target, targetKey) {\n ordinaryDefineOwnMetadata(\n metadataKey, metadataValue,\n (targetKey !== undefined ? anObject : aFunction)(target),\n toMetaKey(targetKey)\n );\n };\n} });\n","// https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-25.md#510-globalasap-for-enqueuing-a-microtask\nvar $export = require('./_export');\nvar microtask = require('./_microtask')();\nvar process = require('./_global').process;\nvar isNode = require('./_cof')(process) == 'process';\n\n$export($export.G, {\n asap: function asap(fn) {\n var domain = isNode && process.domain;\n microtask(domain ? domain.bind(fn) : fn);\n }\n});\n","'use strict';\n// https://github.com/zenparsing/es-observable\nvar $export = require('./_export');\nvar global = require('./_global');\nvar core = require('./_core');\nvar microtask = require('./_microtask')();\nvar OBSERVABLE = require('./_wks')('observable');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar anInstance = require('./_an-instance');\nvar redefineAll = require('./_redefine-all');\nvar hide = require('./_hide');\nvar forOf = require('./_for-of');\nvar RETURN = forOf.RETURN;\n\nvar getMethod = function (fn) {\n return fn == null ? undefined : aFunction(fn);\n};\n\nvar cleanupSubscription = function (subscription) {\n var cleanup = subscription._c;\n if (cleanup) {\n subscription._c = undefined;\n cleanup();\n }\n};\n\nvar subscriptionClosed = function (subscription) {\n return subscription._o === undefined;\n};\n\nvar closeSubscription = function (subscription) {\n if (!subscriptionClosed(subscription)) {\n subscription._o = undefined;\n cleanupSubscription(subscription);\n }\n};\n\nvar Subscription = function (observer, subscriber) {\n anObject(observer);\n this._c = undefined;\n this._o = observer;\n observer = new SubscriptionObserver(this);\n try {\n var cleanup = subscriber(observer);\n var subscription = cleanup;\n if (cleanup != null) {\n if (typeof cleanup.unsubscribe === 'function') cleanup = function () { subscription.unsubscribe(); };\n else aFunction(cleanup);\n this._c = cleanup;\n }\n } catch (e) {\n observer.error(e);\n return;\n } if (subscriptionClosed(this)) cleanupSubscription(this);\n};\n\nSubscription.prototype = redefineAll({}, {\n unsubscribe: function unsubscribe() { closeSubscription(this); }\n});\n\nvar SubscriptionObserver = function (subscription) {\n this._s = subscription;\n};\n\nSubscriptionObserver.prototype = redefineAll({}, {\n next: function next(value) {\n var subscription = this._s;\n if (!subscriptionClosed(subscription)) {\n var observer = subscription._o;\n try {\n var m = getMethod(observer.next);\n if (m) return m.call(observer, value);\n } catch (e) {\n try {\n closeSubscription(subscription);\n } finally {\n throw e;\n }\n }\n }\n },\n error: function error(value) {\n var subscription = this._s;\n if (subscriptionClosed(subscription)) throw value;\n var observer = subscription._o;\n subscription._o = undefined;\n try {\n var m = getMethod(observer.error);\n if (!m) throw value;\n value = m.call(observer, value);\n } catch (e) {\n try {\n cleanupSubscription(subscription);\n } finally {\n throw e;\n }\n } cleanupSubscription(subscription);\n return value;\n },\n complete: function complete(value) {\n var subscription = this._s;\n if (!subscriptionClosed(subscription)) {\n var observer = subscription._o;\n subscription._o = undefined;\n try {\n var m = getMethod(observer.complete);\n value = m ? m.call(observer, value) : undefined;\n } catch (e) {\n try {\n cleanupSubscription(subscription);\n } finally {\n throw e;\n }\n } cleanupSubscription(subscription);\n return value;\n }\n }\n});\n\nvar $Observable = function Observable(subscriber) {\n anInstance(this, $Observable, 'Observable', '_f')._f = aFunction(subscriber);\n};\n\nredefineAll($Observable.prototype, {\n subscribe: function subscribe(observer) {\n return new Subscription(observer, this._f);\n },\n forEach: function forEach(fn) {\n var that = this;\n return new (core.Promise || global.Promise)(function (resolve, reject) {\n aFunction(fn);\n var subscription = that.subscribe({\n next: function (value) {\n try {\n return fn(value);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n }\n});\n\nredefineAll($Observable, {\n from: function from(x) {\n var C = typeof this === 'function' ? this : $Observable;\n var method = getMethod(anObject(x)[OBSERVABLE]);\n if (method) {\n var observable = anObject(method.call(x));\n return observable.constructor === C ? observable : new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n return new C(function (observer) {\n var done = false;\n microtask(function () {\n if (!done) {\n try {\n if (forOf(x, false, function (it) {\n observer.next(it);\n if (done) return RETURN;\n }) === RETURN) return;\n } catch (e) {\n if (done) throw e;\n observer.error(e);\n return;\n } observer.complete();\n }\n });\n return function () { done = true; };\n });\n },\n of: function of() {\n for (var i = 0, l = arguments.length, items = Array(l); i < l;) items[i] = arguments[i++];\n return new (typeof this === 'function' ? this : $Observable)(function (observer) {\n var done = false;\n microtask(function () {\n if (!done) {\n for (var j = 0; j < items.length; ++j) {\n observer.next(items[j]);\n if (done) return;\n } observer.complete();\n }\n });\n return function () { done = true; };\n });\n }\n});\n\nhide($Observable.prototype, OBSERVABLE, function () { return this; });\n\n$export($export.G, { Observable: $Observable });\n\nrequire('./_set-species')('Observable');\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar navigator = global.navigator;\nvar slice = [].slice;\nvar MSIE = !!navigator && /MSIE .\\./.test(navigator.userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n if (typeof global.process === \"object\" && global.process.domain) {\n invoke = global.process.domain.bind(invoke);\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // Among the various tricks for obtaining a reference to the global\n // object, this seems to be the most reliable technique that does not\n // use indirect eval (which violates Content Security Policy).\n typeof global === \"object\" ? global :\n typeof window === \"object\" ? window :\n typeof self === \"object\" ? self : this\n);\n","require('../../modules/core.regexp.escape');\nmodule.exports = require('../../modules/_core').RegExp.escape;\n","// https://github.com/benjamingr/RexExp.escape\nvar $export = require('./_export');\nvar $re = require('./_replacer')(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\n$export($export.S, 'RegExp', { escape: function escape(it) { return $re(it); } });\n","module.exports = function (regExp, replace) {\n var replacer = replace === Object(replace) ? function (part) {\n return replace[part];\n } : replace;\n return function (it) {\n return String(it).replace(regExp, replacer);\n };\n};\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// Require common CSS here; this will make webpack process it into bundle.css.\n// Our own CSS (which is themed) is imported via separate webpack entry points\n// in webpack.config.js\nrequire('gemini-scrollbar/gemini-scrollbar.css');\nrequire('gfm.css/gfm.css');\nrequire('highlight.js/styles/github.css');\nrequire('draft-js/dist/Draft.css');\n\nimport React from 'react';\n// add React and ReactPerf to the global namespace, to make them easier to\n// access via the console\nglobal.React = React;\nif (process.env.NODE_ENV !== 'production') {\n global.Perf = require('react-addons-perf');\n}\n\nimport RunModernizrTests from './modernizr'; // this side-effects a global\nimport ReactDOM from 'react-dom';\nimport sdk from 'matrix-react-sdk';\nimport PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg';\nsdk.loadSkin(require('../component-index'));\nimport VectorConferenceHandler from 'matrix-react-sdk/lib/VectorConferenceHandler';\nimport Promise from 'bluebird';\nimport request from 'browser-request';\nimport * as languageHandler from 'matrix-react-sdk/lib/languageHandler';\n// Also import _t directly so we can call it just `_t` as this is what gen-i18n.js expects\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\n\nimport url from 'url';\n\nimport {parseQs, parseQsFromFragment} from './url_utils';\nimport Platform from './platform';\n\nimport MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg';\nimport SettingsStore, {SettingLevel} from \"matrix-react-sdk/lib/settings/SettingsStore\";\nimport Tinter from 'matrix-react-sdk/lib/Tinter';\nimport SdkConfig from \"matrix-react-sdk/lib/SdkConfig\";\n\nimport rageshake from \"matrix-react-sdk/lib/rageshake/rageshake\";\n\nimport CallHandler from 'matrix-react-sdk/lib/CallHandler';\n\nimport {getVectorConfig} from './getconfig';\n\nlet lastLocationHashSet = null;\n\n// Disable warnings for now: we use deprecated bluebird functions\n// and need to migrate, but they spam the console with warnings.\nPromise.config({warnings: false});\n\nfunction initRageshake() {\n rageshake.init().then(() => {\n console.log(\"Initialised rageshake: See https://bugs.chromium.org/p/chromium/issues/detail?id=583193 to fix line numbers on Chrome.\");\n\n window.addEventListener('beforeunload', (e) => {\n console.log('riot-web closing');\n // try to flush the logs to indexeddb\n rageshake.flush();\n });\n\n rageshake.cleanup();\n }, (err) => {\n console.error(\"Failed to initialise rageshake: \" + err);\n });\n}\n\nfunction checkBrowserFeatures(featureList) {\n if (!window.Modernizr) {\n console.error(\"Cannot check features - Modernizr global is missing.\");\n return false;\n }\n var featureComplete = true;\n for (var i = 0; i < featureList.length; i++) {\n if (window.Modernizr[featureList[i]] === undefined) {\n console.error(\n \"Looked for feature '%s' but Modernizr has no results for this. \" +\n \"Has it been configured correctly?\", featureList[i]\n );\n return false;\n }\n if (window.Modernizr[featureList[i]] === false) {\n console.error(\"Browser missing feature: '%s'\", featureList[i]);\n // toggle flag rather than return early so we log all missing features\n // rather than just the first.\n featureComplete = false;\n }\n }\n return featureComplete;\n}\n\n// Parse the given window.location and return parameters that can be used when calling\n// MatrixChat.showScreen(screen, params)\nfunction getScreenFromLocation(location) {\n const fragparts = parseQsFromFragment(location);\n return {\n screen: fragparts.location.substring(1),\n params: fragparts.params,\n }\n}\n\n// Here, we do some crude URL analysis to allow\n// deep-linking.\nfunction routeUrl(location) {\n if (!window.matrixChat) return;\n\n console.log(\"Routing URL \", location.href);\n const s = getScreenFromLocation(location);\n window.matrixChat.showScreen(s.screen, s.params);\n}\n\nfunction onHashChange(ev) {\n if (decodeURIComponent(window.location.hash) == lastLocationHashSet) {\n // we just set this: no need to route it!\n return;\n }\n routeUrl(window.location);\n}\n\n// This will be called whenever the SDK changes screens,\n// so a web page can update the URL bar appropriately.\nfunction onNewScreen(screen) {\n console.log(\"newscreen \"+screen);\n var hash = '#/' + screen;\n lastLocationHashSet = hash;\n window.location.hash = hash;\n};\n\n// We use this to work out what URL the SDK should\n// pass through when registering to allow the user to\n// click back to the client having registered.\n// It's up to us to recognise if we're loaded with\n// this URL and tell MatrixClient to resume registration.\n//\n// If we're in electron, we should never pass through a file:// URL otherwise\n// the identity server will try to 302 the browser to it, which breaks horribly.\n// so in that instance, hardcode to use riot.im/app for now instead.\nfunction makeRegistrationUrl(params) {\n let url;\n if (window.location.protocol === \"file:\") {\n url = 'https://riot.im/app/#/register';\n } else {\n url = (\n window.location.protocol + '//' +\n window.location.host +\n window.location.pathname +\n '#/register'\n );\n }\n\n const keys = Object.keys(params);\n for (let i = 0; i < keys.length; ++i) {\n if (i == 0) {\n url += '?';\n } else {\n url += '&';\n }\n const k = keys[i];\n url += k + '=' + encodeURIComponent(params[k]);\n }\n return url;\n}\n\nfunction getConfig(configJsonFilename) {\n return new Promise(function(resolve, reject) {\n request(\n { method: \"GET\", url: configJsonFilename },\n (err, response, body) => {\n if (err || response.status < 200 || response.status >= 300) {\n // Lack of a config isn't an error, we should\n // just use the defaults.\n // Also treat a blank config as no config, assuming\n // the status code is 0, because we don't get 404s\n // from file: URIs so this is the only way we can\n // not fail if the file doesn't exist when loading\n // from a file:// URI.\n if (response) {\n if (response.status == 404 || (response.status == 0 && body == '')) {\n resolve({});\n }\n }\n reject({err: err, response: response});\n return;\n }\n\n // We parse the JSON ourselves rather than use the JSON\n // parameter, since this throws a parse error on empty\n // which breaks if there's no config.json and we're\n // loading from the filesystem (see above).\n resolve(JSON.parse(body));\n },\n );\n });\n}\n\nfunction onTokenLoginCompleted() {\n // if we did a token login, we're now left with the token, hs and is\n // url as query params in the url; a little nasty but let's redirect to\n // clear them.\n var parsedUrl = url.parse(window.location.href);\n parsedUrl.search = \"\";\n var formatted = url.format(parsedUrl);\n console.log(\"Redirecting to \" + formatted + \" to drop loginToken \" +\n \"from queryparams\");\n window.location.href = formatted;\n}\n\nasync function loadApp() {\n initRageshake();\n MatrixClientPeg.setIndexedDbWorkerScript(window.vector_indexeddb_worker_script);\n CallHandler.setConferenceHandler(VectorConferenceHandler);\n\n window.addEventListener('hashchange', onHashChange);\n\n await loadLanguage();\n\n const fragparts = parseQsFromFragment(window.location);\n const params = parseQs(window.location);\n\n // set the platform for react sdk (our Platform object automatically picks the right one)\n PlatformPeg.set(new Platform());\n\n // Load the config file. First try to load up a domain-specific config of the\n // form \"config.$domain.json\" and if that fails, fall back to config.json.\n let configJson;\n let configError;\n try {\n configJson = await getVectorConfig();\n } catch (e) {\n configError = e;\n }\n\n // XXX: We call this twice, once here and once in MatrixChat as a prop. We call it here to ensure\n // granular settings are loaded correctly and to avoid duplicating the override logic for the theme.\n SdkConfig.put(configJson);\n\n // don't try to redirect to the native apps if we're\n // verifying a 3pid (but after we've loaded the config)\n // or if the user is following a deep link\n // (https://github.com/vector-im/riot-web/issues/7378)\n const preventRedirect = fragparts.params.client_secret || fragparts.location.length > 0;\n\n if (!preventRedirect) {\n const isIos = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n const isAndroid = /Android/.test(navigator.userAgent);\n if (isIos || isAndroid) {\n if (!document.cookie.split(';').some((c) => c.startsWith('mobile_redirect_to_guide'))) {\n window.location = \"mobile_guide/\";\n return;\n }\n }\n }\n\n // as quickly as we possibly can, set a default theme...\n const styleElements = Object.create(null);\n let a;\n const theme = SettingsStore.getValue(\"theme\");\n for (let i = 0; (a = document.getElementsByTagName(\"link\")[i]); i++) {\n const href = a.getAttribute(\"href\");\n if (!href) continue;\n // shouldn't we be using the 'title' tag rather than the href?\n const match = href.match(/^bundles\\/.*\\/theme-(.*)\\.css$/);\n if (match) {\n if (match[1] === theme) {\n // remove the disabled flag off the stylesheet\n\n // Firefox requires setting the attribute to false, so do\n // that instead of removing it. Related:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1281135\n a.disabled = false;\n\n // in case the Tinter.tint() in MatrixChat fires before the\n // CSS has actually loaded (which in practice happens)...\n\n // This if fixes Tinter.setTheme to not fire on Firefox\n // in case it is the first time loading Riot.\n // `InstallTrigger` is a Object which only exists on Firefox\n // (it is used for their Plugins) and can be used as a\n // feature check. \n // Firefox loads css always before js. This is why we dont use\n // onload or it's EventListener as thoose will never trigger.\n if (typeof InstallTrigger !== 'undefined') {\n Tinter.setTheme(theme);\n } else {\n // FIXME: we should probably block loading the app or even\n // showing a spinner until the theme is loaded, to avoid\n // flashes of unstyled content.\n a.onload = () => {\n Tinter.setTheme(theme);\n };\n }\n } else {\n // Firefox requires this to not be done via `setAttribute`\n // or via HTML.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1281135\n a.disabled = true;\n }\n }\n }\n\n const validBrowser = checkBrowserFeatures([\n \"displaytable\", \"flexbox\", \"es5object\", \"es5function\", \"localstorage\",\n \"objectfit\", \"indexeddb\", \"webworkers\",\n ]);\n\n const acceptInvalidBrowser = window.localStorage && window.localStorage.getItem('mx_accepts_unsupported_browser');\n\n console.log(\"Vector starting at \"+window.location);\n if (configError) {\n window.matrixChat = ReactDOM.render(<div className=\"error\">\n Unable to load config file: please refresh the page to try again.\n </div>, document.getElementById('matrixchat'));\n } else if (validBrowser || acceptInvalidBrowser) {\n const platform = PlatformPeg.get();\n platform.startUpdater();\n\n const MatrixChat = sdk.getComponent('structures.MatrixChat');\n window.matrixChat = ReactDOM.render(\n <MatrixChat\n onNewScreen={onNewScreen}\n makeRegistrationUrl={makeRegistrationUrl}\n ConferenceHandler={VectorConferenceHandler}\n config={configJson}\n realQueryParams={params}\n startingFragmentQueryParams={fragparts.params}\n enableGuest={!configJson.disable_guests}\n onTokenLoginCompleted={onTokenLoginCompleted}\n initialScreenAfterLogin={getScreenFromLocation(window.location)}\n defaultDeviceDisplayName={platform.getDefaultDeviceDisplayName()}\n />,\n document.getElementById('matrixchat')\n );\n } else {\n console.error(\"Browser is missing required features.\");\n // take to a different landing page to AWOOOOOGA at the user\n var CompatibilityPage = sdk.getComponent(\"structures.CompatibilityPage\");\n window.matrixChat = ReactDOM.render(\n <CompatibilityPage onAccept={function() {\n if (window.localStorage) window.localStorage.setItem('mx_accepts_unsupported_browser', true);\n console.log(\"User accepts the compatibility risks.\");\n loadApp();\n }} />,\n document.getElementById('matrixchat')\n );\n }\n}\n\nasync function loadLanguage() {\n const prefLang = SettingsStore.getValue(\"language\", null, /*excludeDefault=*/true);\n let langs = [];\n\n if (!prefLang) {\n languageHandler.getLanguagesFromBrowser().forEach((l) => {\n langs.push(...languageHandler.getNormalizedLanguageKeys(l));\n });\n } else {\n langs = [prefLang];\n }\n try {\n await languageHandler.setLanguage(langs);\n document.documentElement.setAttribute(\"lang\", languageHandler.getCurrentLanguage());\n } catch (e) {\n console.error(\"Unable to set language\", e);\n }\n}\n\nloadApp();\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = lowPriorityWarning;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar PooledClass = require('./PooledClass');\nvar ReactElement = require('./ReactElement');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar traverseAllChildren = require('./traverseAllChildren');\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\nvar fourArgumentPooler = PooledClass.fourArgumentPooler;\n\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * traversal. Allows avoiding binding callbacks.\n *\n * @constructor ForEachBookKeeping\n * @param {!function} forEachFunction Function to perform traversal with.\n * @param {?*} forEachContext Context to perform context with.\n */\nfunction ForEachBookKeeping(forEachFunction, forEachContext) {\n this.func = forEachFunction;\n this.context = forEachContext;\n this.count = 0;\n}\nForEachBookKeeping.prototype.destructor = function () {\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\n\nfunction forEachSingleChild(bookKeeping, child, name) {\n var func = bookKeeping.func,\n context = bookKeeping.context;\n\n func.call(context, child, bookKeeping.count++);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n ForEachBookKeeping.release(traverseContext);\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * mapping. Allows avoiding binding callbacks.\n *\n * @constructor MapBookKeeping\n * @param {!*} mapResult Object containing the ordered map of results.\n * @param {!function} mapFunction Function to perform mapping with.\n * @param {?*} mapContext Context to perform mapping with.\n */\nfunction MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {\n this.result = mapResult;\n this.keyPrefix = keyPrefix;\n this.func = mapFunction;\n this.context = mapContext;\n this.count = 0;\n}\nMapBookKeeping.prototype.destructor = function () {\n this.result = null;\n this.keyPrefix = null;\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);\n\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n var result = bookKeeping.result,\n keyPrefix = bookKeeping.keyPrefix,\n func = bookKeeping.func,\n context = bookKeeping.context;\n\n\n var mappedChild = func.call(context, child, bookKeeping.count++);\n if (Array.isArray(mappedChild)) {\n mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\n } else if (mappedChild != null) {\n if (ReactElement.isValidElement(mappedChild)) {\n mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,\n // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\n }\n result.push(mappedChild);\n }\n}\n\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n var escapedPrefix = '';\n if (prefix != null) {\n escapedPrefix = escapeUserProvidedKey(prefix) + '/';\n }\n var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n MapBookKeeping.release(traverseContext);\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n return result;\n}\n\nfunction forEachSingleChildDummy(traverseContext, child, name) {\n return null;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n return traverseAllChildren(children, forEachSingleChildDummy, null);\n}\n\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray\n */\nfunction toArray(children) {\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\n return result;\n}\n\nvar ReactChildren = {\n forEach: forEachChildren,\n map: mapChildren,\n mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,\n count: countChildren,\n toArray: toArray\n};\n\nmodule.exports = ReactChildren;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function (instance) {\n var Klass = this;\n !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar getIteratorFn = require('./getIteratorFn');\nvar invariant = require('fbjs/lib/invariant');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar warning = require('fbjs/lib/warning');\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (process.env.NODE_ENV !== 'production') {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = \" It looks like you're using an element created by a different \" + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactElement = require('./ReactElement');\n\n/**\n * Create a factory that creates HTML tag elements.\n *\n * @private\n */\nvar createDOMFactory = ReactElement.createFactory;\nif (process.env.NODE_ENV !== 'production') {\n var ReactElementValidator = require('./ReactElementValidator');\n createDOMFactory = ReactElementValidator.createFactory;\n}\n\n/**\n * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\n *\n * @public\n */\nvar ReactDOMFactories = {\n a: createDOMFactory('a'),\n abbr: createDOMFactory('abbr'),\n address: createDOMFactory('address'),\n area: createDOMFactory('area'),\n article: createDOMFactory('article'),\n aside: createDOMFactory('aside'),\n audio: createDOMFactory('audio'),\n b: createDOMFactory('b'),\n base: createDOMFactory('base'),\n bdi: createDOMFactory('bdi'),\n bdo: createDOMFactory('bdo'),\n big: createDOMFactory('big'),\n blockquote: createDOMFactory('blockquote'),\n body: createDOMFactory('body'),\n br: createDOMFactory('br'),\n button: createDOMFactory('button'),\n canvas: createDOMFactory('canvas'),\n caption: createDOMFactory('caption'),\n cite: createDOMFactory('cite'),\n code: createDOMFactory('code'),\n col: createDOMFactory('col'),\n colgroup: createDOMFactory('colgroup'),\n data: createDOMFactory('data'),\n datalist: createDOMFactory('datalist'),\n dd: createDOMFactory('dd'),\n del: createDOMFactory('del'),\n details: createDOMFactory('details'),\n dfn: createDOMFactory('dfn'),\n dialog: createDOMFactory('dialog'),\n div: createDOMFactory('div'),\n dl: createDOMFactory('dl'),\n dt: createDOMFactory('dt'),\n em: createDOMFactory('em'),\n embed: createDOMFactory('embed'),\n fieldset: createDOMFactory('fieldset'),\n figcaption: createDOMFactory('figcaption'),\n figure: createDOMFactory('figure'),\n footer: createDOMFactory('footer'),\n form: createDOMFactory('form'),\n h1: createDOMFactory('h1'),\n h2: createDOMFactory('h2'),\n h3: createDOMFactory('h3'),\n h4: createDOMFactory('h4'),\n h5: createDOMFactory('h5'),\n h6: createDOMFactory('h6'),\n head: createDOMFactory('head'),\n header: createDOMFactory('header'),\n hgroup: createDOMFactory('hgroup'),\n hr: createDOMFactory('hr'),\n html: createDOMFactory('html'),\n i: createDOMFactory('i'),\n iframe: createDOMFactory('iframe'),\n img: createDOMFactory('img'),\n input: createDOMFactory('input'),\n ins: createDOMFactory('ins'),\n kbd: createDOMFactory('kbd'),\n keygen: createDOMFactory('keygen'),\n label: createDOMFactory('label'),\n legend: createDOMFactory('legend'),\n li: createDOMFactory('li'),\n link: createDOMFactory('link'),\n main: createDOMFactory('main'),\n map: createDOMFactory('map'),\n mark: createDOMFactory('mark'),\n menu: createDOMFactory('menu'),\n menuitem: createDOMFactory('menuitem'),\n meta: createDOMFactory('meta'),\n meter: createDOMFactory('meter'),\n nav: createDOMFactory('nav'),\n noscript: createDOMFactory('noscript'),\n object: createDOMFactory('object'),\n ol: createDOMFactory('ol'),\n optgroup: createDOMFactory('optgroup'),\n option: createDOMFactory('option'),\n output: createDOMFactory('output'),\n p: createDOMFactory('p'),\n param: createDOMFactory('param'),\n picture: createDOMFactory('picture'),\n pre: createDOMFactory('pre'),\n progress: createDOMFactory('progress'),\n q: createDOMFactory('q'),\n rp: createDOMFactory('rp'),\n rt: createDOMFactory('rt'),\n ruby: createDOMFactory('ruby'),\n s: createDOMFactory('s'),\n samp: createDOMFactory('samp'),\n script: createDOMFactory('script'),\n section: createDOMFactory('section'),\n select: createDOMFactory('select'),\n small: createDOMFactory('small'),\n source: createDOMFactory('source'),\n span: createDOMFactory('span'),\n strong: createDOMFactory('strong'),\n style: createDOMFactory('style'),\n sub: createDOMFactory('sub'),\n summary: createDOMFactory('summary'),\n sup: createDOMFactory('sup'),\n table: createDOMFactory('table'),\n tbody: createDOMFactory('tbody'),\n td: createDOMFactory('td'),\n textarea: createDOMFactory('textarea'),\n tfoot: createDOMFactory('tfoot'),\n th: createDOMFactory('th'),\n thead: createDOMFactory('thead'),\n time: createDOMFactory('time'),\n title: createDOMFactory('title'),\n tr: createDOMFactory('tr'),\n track: createDOMFactory('track'),\n u: createDOMFactory('u'),\n ul: createDOMFactory('ul'),\n 'var': createDOMFactory('var'),\n video: createDOMFactory('video'),\n wbr: createDOMFactory('wbr'),\n\n // SVG\n circle: createDOMFactory('circle'),\n clipPath: createDOMFactory('clipPath'),\n defs: createDOMFactory('defs'),\n ellipse: createDOMFactory('ellipse'),\n g: createDOMFactory('g'),\n image: createDOMFactory('image'),\n line: createDOMFactory('line'),\n linearGradient: createDOMFactory('linearGradient'),\n mask: createDOMFactory('mask'),\n path: createDOMFactory('path'),\n pattern: createDOMFactory('pattern'),\n polygon: createDOMFactory('polygon'),\n polyline: createDOMFactory('polyline'),\n radialGradient: createDOMFactory('radialGradient'),\n rect: createDOMFactory('rect'),\n stop: createDOMFactory('stop'),\n svg: createDOMFactory('svg'),\n text: createDOMFactory('text'),\n tspan: createDOMFactory('tspan')\n};\n\nmodule.exports = ReactDOMFactories;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _require = require('./ReactElement'),\n isValidElement = _require.isValidElement;\n\nvar factory = require('prop-types/factory');\n\nmodule.exports = factory(isValidElement);","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n )\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nmodule.exports = '15.6.2';","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _require = require('./ReactBaseClasses'),\n Component = _require.Component;\n\nvar _require2 = require('./ReactElement'),\n isValidElement = _require2.isValidElement;\n\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\nvar factory = require('create-react-class/factory');\n\nmodule.exports = factory(Component, isValidElement, ReactNoopUpdateQueue);","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar _invariant = require('fbjs/lib/invariant');\n\nif (process.env.NODE_ENV !== 'production') {\n var warning = require('fbjs/lib/warning');\n}\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (process.env.NODE_ENV !== 'production') {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n} else {\n ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n /**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n var injectedMixins = [];\n\n /**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return <div>Hello World</div>;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\n var ReactClassInterface = {\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return <div>Hello, {name}!</div>;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n };\n\n /**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\n var RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function() {}\n };\n\n function validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an _invariant so components\n // don't show up in prod but only in __DEV__\n if (process.env.NODE_ENV !== 'production') {\n warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n );\n }\n }\n }\n }\n\n function validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name)\n ? ReactClassInterface[name]\n : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n _invariant(\n specPolicy === 'OVERRIDE_BASE',\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n );\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n _invariant(\n specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n );\n }\n }\n\n /**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\n function mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (process.env.NODE_ENV !== 'production') {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n isMixinValid,\n \"%s: You're attempting to include a mixin that is either null \" +\n 'or not an object. Check the mixins included by the component, ' +\n 'as well as any mixins they include themselves. ' +\n 'Expected object but got %s.',\n Constructor.displayName || 'ReactClass',\n spec === null ? null : typeofSpec\n );\n }\n }\n\n return;\n }\n\n _invariant(\n typeof spec !== 'function',\n \"ReactClass: You're attempting to \" +\n 'use a component class or function as a mixin. Instead, just use a ' +\n 'regular object.'\n );\n _invariant(\n !isValidElement(spec),\n \"ReactClass: You're attempting to \" +\n 'use a component as a mixin. Instead, just use a regular object.'\n );\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n _invariant(\n isReactClassMethod &&\n (specPolicy === 'DEFINE_MANY_MERGED' ||\n specPolicy === 'DEFINE_MANY'),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n );\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (process.env.NODE_ENV !== 'production') {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n }\n\n function mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n _invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n );\n\n var isInherited = name in Constructor;\n _invariant(\n !isInherited,\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n );\n Constructor[name] = property;\n }\n }\n\n /**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\n function mergeIntoWithNoDuplicateKeys(one, two) {\n _invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n );\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n _invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n );\n one[key] = two[key];\n }\n }\n return one;\n }\n\n /**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n }\n\n /**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n }\n\n /**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\n function bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (process.env.NODE_ENV !== 'production') {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function(newThis) {\n for (\n var _len = arguments.length,\n args = Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n );\n }\n } else if (!args.length) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n );\n }\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n }\n\n /**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\n function bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n }\n\n var IsMountedPreMixin = {\n componentDidMount: function() {\n this.__isMounted = true;\n }\n };\n\n var IsMountedPostMixin = {\n componentWillUnmount: function() {\n this.__isMounted = false;\n }\n };\n\n /**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\n var ReactClassMixin = {\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n this.updater.enqueueReplaceState(this, newState, callback);\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this.__didWarnIsMounted,\n '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n 'subscriptions and pending requests in componentWillUnmount to ' +\n 'prevent memory leaks.',\n (this.constructor && this.constructor.displayName) ||\n this.name ||\n 'Component'\n );\n this.__didWarnIsMounted = true;\n }\n return !!this.__isMounted;\n }\n };\n\n var ReactClassComponent = function() {};\n _assign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n );\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n function createClass(spec) {\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function(props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: https://fb.me/react-legacyfactory'\n );\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (\n initialState === undefined &&\n this.getInitialState._isMockFunction\n ) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n _invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n );\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n mixSpecIntoComponent(Constructor, spec);\n mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n _invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n );\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.componentWillRecieveProps,\n '%s has a method called ' +\n 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n }\n\n return createClass;\n}\n\nmodule.exports = factory;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactElement = require('./ReactElement');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n !ReactElement.isValidElement(children) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0;\n return children;\n}\n\nmodule.exports = onlyChild;","/*! modernizr 3.3.1 (Custom Build) | MIT *\n * http://modernizr.com/download/?-displaytable-es5-flexbox-indexeddb-localstorage-objectfit-webworkers-setclasses-cssclassprefix:modernizr_ !*/\n!function(window,document,undefined){function is(e,t){return typeof e===t}function testRunner(){var e,t,r,n,o,i,s;for(var d in tests)if(tests.hasOwnProperty(d)){if(e=[],t=tests[d],t.name&&(e.push(t.name.toLowerCase()),t.options&&t.options.aliases&&t.options.aliases.length))for(r=0;r<t.options.aliases.length;r++)e.push(t.options.aliases[r].toLowerCase());for(n=is(t.fn,\"function\")?t.fn():t.fn,o=0;o<e.length;o++)i=e[o],s=i.split(\".\"),1===s.length?Modernizr[s[0]]=n:(!Modernizr[s[0]]||Modernizr[s[0]]instanceof Boolean||(Modernizr[s[0]]=new Boolean(Modernizr[s[0]])),Modernizr[s[0]][s[1]]=n),classes.push((n?\"\":\"no-\")+s.join(\"-\"))}}function setClasses(e){var t=docElement.className,r=Modernizr._config.classPrefix||\"\";if(isSVG&&(t=t.baseVal),Modernizr._config.enableJSClass){var n=new RegExp(\"(^|\\\\s)\"+r+\"no-js(\\\\s|$)\");t=t.replace(n,\"$1\"+r+\"js$2\")}Modernizr._config.enableClasses&&(t+=\" \"+r+e.join(\" \"+r),isSVG?docElement.className.baseVal=t:docElement.className=t)}function createElement(){return\"function\"!=typeof document.createElement?document.createElement(arguments[0]):isSVG?document.createElementNS.call(document,\"http://www.w3.org/2000/svg\",arguments[0]):document.createElement.apply(document,arguments)}function getBody(){var e=document.body;return e||(e=createElement(isSVG?\"svg\":\"body\"),e.fake=!0),e}function injectElementWithStyles(e,t,r,n){var o,i,s,d,a=\"modernizr\",l=createElement(\"div\"),c=getBody();if(parseInt(r,10))for(;r--;)s=createElement(\"div\"),s.id=n?n[r]:a+(r+1),l.appendChild(s);return o=createElement(\"style\"),o.type=\"text/css\",o.id=\"s\"+a,(c.fake?c:l).appendChild(o),c.appendChild(l),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e)),l.id=a,c.fake&&(c.style.background=\"\",c.style.overflow=\"hidden\",d=docElement.style.overflow,docElement.style.overflow=\"hidden\",docElement.appendChild(c)),i=t(l,e),c.fake?(c.parentNode.removeChild(c),docElement.style.overflow=d,docElement.offsetHeight):l.parentNode.removeChild(l),!!i}function contains(e,t){return!!~(\"\"+e).indexOf(t)}function domToCSS(e){return e.replace(/([A-Z])/g,function(e,t){return\"-\"+t.toLowerCase()}).replace(/^ms-/,\"-ms-\")}function nativeTestProps(e,t){var r=e.length;if(\"CSS\"in window&&\"supports\"in window.CSS){for(;r--;)if(window.CSS.supports(domToCSS(e[r]),t))return!0;return!1}if(\"CSSSupportsRule\"in window){for(var n=[];r--;)n.push(\"(\"+domToCSS(e[r])+\":\"+t+\")\");return n=n.join(\" or \"),injectElementWithStyles(\"@supports (\"+n+\") { #modernizr { position: absolute; } }\",function(e){return\"absolute\"==getComputedStyle(e,null).position})}return undefined}function cssToDOM(e){return e.replace(/([a-z])-([a-z])/g,function(e,t,r){return t+r.toUpperCase()}).replace(/^-/,\"\")}function testProps(e,t,r,n){function o(){s&&(delete mStyle.style,delete mStyle.modElem)}if(n=is(n,\"undefined\")?!1:n,!is(r,\"undefined\")){var i=nativeTestProps(e,r);if(!is(i,\"undefined\"))return i}for(var s,d,a,l,c,f=[\"modernizr\",\"tspan\"];!mStyle.style;)s=!0,mStyle.modElem=createElement(f.shift()),mStyle.style=mStyle.modElem.style;for(a=e.length,d=0;a>d;d++)if(l=e[d],c=mStyle.style[l],contains(l,\"-\")&&(l=cssToDOM(l)),mStyle.style[l]!==undefined){if(n||is(r,\"undefined\"))return o(),\"pfx\"==t?l:!0;try{mStyle.style[l]=r}catch(u){}if(mStyle.style[l]!=c)return o(),\"pfx\"==t?l:!0}return o(),!1}function fnBind(e,t){return function(){return e.apply(t,arguments)}}function testDOMProps(e,t,r){var n;for(var o in e)if(e[o]in t)return r===!1?e[o]:(n=t[e[o]],is(n,\"function\")?fnBind(n,r||t):n);return!1}function testPropsAll(e,t,r,n,o){var i=e.charAt(0).toUpperCase()+e.slice(1),s=(e+\" \"+cssomPrefixes.join(i+\" \")+i).split(\" \");return is(t,\"string\")||is(t,\"undefined\")?testProps(s,t,n,o):(s=(e+\" \"+domPrefixes.join(i+\" \")+i).split(\" \"),testDOMProps(s,t,r))}function testAllProps(e,t,r){return testPropsAll(e,undefined,undefined,t,r)}var tests=[],ModernizrProto={_version:\"3.3.1\",_config:{classPrefix:\"modernizr_\",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var r=this;setTimeout(function(){t(r[e])},0)},addTest:function(e,t,r){tests.push({name:e,fn:t,options:r})},addAsyncTest:function(e){tests.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=ModernizrProto,Modernizr=new Modernizr;var classes=[],docElement=document.documentElement,isSVG=\"svg\"===docElement.nodeName.toLowerCase(),testStyles=ModernizrProto.testStyles=injectElementWithStyles;testStyles(\"#modernizr{display: table; direction: ltr}#modernizr div{display: table-cell; padding: 10px}\",function(e){var t,r=e.childNodes;t=r[0].offsetLeft<r[1].offsetLeft,Modernizr.addTest(\"displaytable\",t,{aliases:[\"display-table\"]})},2);var omPrefixes=\"Moz O ms Webkit\",cssomPrefixes=ModernizrProto._config.usePrefixes?omPrefixes.split(\" \"):[];ModernizrProto._cssomPrefixes=cssomPrefixes;var modElem={elem:createElement(\"modernizr\")};Modernizr._q.push(function(){delete modElem.elem});var mStyle={style:modElem.elem.style};Modernizr._q.unshift(function(){delete mStyle.style});var domPrefixes=ModernizrProto._config.usePrefixes?omPrefixes.toLowerCase().split(\" \"):[];ModernizrProto._domPrefixes=domPrefixes,ModernizrProto.testAllProps=testPropsAll,ModernizrProto.testAllProps=testAllProps,Modernizr.addTest(\"flexbox\",testAllProps(\"flexBasis\",\"1px\",!0)),Modernizr.addTest(\"es5array\",function(){return!!(Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray)}),Modernizr.addTest(\"es5date\",function(){var e=\"2013-04-12T06:06:37.307Z\",t=!1;try{t=!!Date.parse(e)}catch(r){}return!!(Date.now&&Date.prototype&&Date.prototype.toISOString&&Date.prototype.toJSON&&t)}),Modernizr.addTest(\"es5function\",function(){return!(!Function.prototype||!Function.prototype.bind)}),Modernizr.addTest(\"es5object\",function(){return!!(Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions)}),Modernizr.addTest(\"strictmode\",function(){\"use strict\";return!this}()),Modernizr.addTest(\"es5string\",function(){return!(!String.prototype||!String.prototype.trim)}),Modernizr.addTest(\"json\",\"JSON\"in window&&\"parse\"in JSON&&\"stringify\"in JSON),Modernizr.addTest(\"es5syntax\",function(){var value,obj,stringAccess,getter,setter,reservedWords,zeroWidthChars;try{return stringAccess=eval('\"foobar\"[3] === \"b\"'),getter=eval(\"({ get x(){ return 1 } }).x === 1\"),eval(\"({ set x(v){ value = v; } }).x = 1\"),setter=1===value,eval(\"obj = ({ if: 1 })\"),reservedWords=1===obj[\"if\"],zeroWidthChars=eval(\"_‌‍ = true\"),stringAccess&&getter&&setter&&reservedWords&&zeroWidthChars}catch(ignore){return!1}}),Modernizr.addTest(\"es5undefined\",function(){var e,t;try{t=window.undefined,window.undefined=12345,e=\"undefined\"==typeof window.undefined,window.undefined=t}catch(r){return!1}return e}),Modernizr.addTest(\"es5\",function(){return!!(Modernizr.es5array&&Modernizr.es5date&&Modernizr.es5function&&Modernizr.es5object&&Modernizr.strictmode&&Modernizr.es5string&&Modernizr.json&&Modernizr.es5syntax&&Modernizr.es5undefined)});var atRule=function(e){var t,r=prefixes.length,n=window.CSSRule;if(\"undefined\"==typeof n)return undefined;if(!e)return!1;if(e=e.replace(/^@/,\"\"),t=e.replace(/-/g,\"_\").toUpperCase()+\"_RULE\",t in n)return\"@\"+e;for(var o=0;r>o;o++){var i=prefixes[o],s=i.toUpperCase()+\"_\"+t;if(s in n)return\"@-\"+i.toLowerCase()+\"-\"+e}return!1};ModernizrProto.atRule=atRule;var prefixed=ModernizrProto.prefixed=function(e,t,r){return 0===e.indexOf(\"@\")?atRule(e):(-1!=e.indexOf(\"-\")&&(e=cssToDOM(e)),t?testPropsAll(e,t,r):testPropsAll(e,\"pfx\"))};Modernizr.addTest(\"objectfit\",!!prefixed(\"objectFit\"),{aliases:[\"object-fit\"]}),Modernizr.addTest(\"localstorage\",function(){var e=\"modernizr\";try{return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch(t){return!1}}),Modernizr.addTest(\"webworkers\",\"Worker\"in window);var indexeddb;try{indexeddb=prefixed(\"indexedDB\",window)}catch(e){}Modernizr.addTest(\"indexeddb\",!!indexeddb),indexeddb&&Modernizr.addTest(\"indexeddb.deletedatabase\",\"deleteDatabase\"in indexeddb),testRunner(),setClasses(classes),delete ModernizrProto.addTest,delete ModernizrProto.addAsyncTest;for(var i=0;i<Modernizr._q.length;i++)Modernizr._q[i]();window.Modernizr=Modernizr}(window,document);","module.exports = { \"default\": require(\"core-js/library/fn/object/prevent-extensions\"), __esModule: true };","require('../../modules/es6.object.prevent-extensions');\nmodule.exports = require('../../modules/_core').Object.preventExtensions;\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","require('../../modules/es6.object.freeze');\nmodule.exports = require('../../modules/_core').Object.freeze;\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/seal\"), __esModule: true };","require('../../modules/es6.object.seal');\nmodule.exports = require('../../modules/_core').Object.seal;\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/define-properties\"), __esModule: true };","require('../../modules/es6.object.define-properties');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperties(T, D) {\n return $Object.defineProperties(T, D);\n};\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","require('../../modules/es6.object.get-own-property-descriptor');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/is-extensible\"), __esModule: true };","require('../../modules/es6.object.is-extensible');\nmodule.exports = require('../../modules/_core').Object.isExtensible;\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/is-frozen\"), __esModule: true };","require('../../modules/es6.object.is-frozen');\nmodule.exports = require('../../modules/_core').Object.isFrozen;\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/is-sealed\"), __esModule: true };","require('../../modules/es6.object.is-sealed');\nmodule.exports = require('../../modules/_core').Object.isSealed;\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-names\"), __esModule: true };","require('../../modules/es6.object.get-own-property-names');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyNames(it) {\n return $Object.getOwnPropertyNames(it);\n};\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDefaultInjection = require('./ReactDefaultInjection');\nvar ReactMount = require('./ReactMount');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactUpdates = require('./ReactUpdates');\nvar ReactVersion = require('./ReactVersion');\n\nvar findDOMNode = require('./findDOMNode');\nvar getHostComponentFromComposite = require('./getHostComponentFromComposite');\nvar renderSubtreeIntoContainer = require('./renderSubtreeIntoContainer');\nvar warning = require('fbjs/lib/warning');\n\nReactDefaultInjection.inject();\n\nvar ReactDOM = {\n findDOMNode: findDOMNode,\n render: ReactMount.render,\n unmountComponentAtNode: ReactMount.unmountComponentAtNode,\n version: ReactVersion,\n\n /* eslint-disable camelcase */\n unstable_batchedUpdates: ReactUpdates.batchedUpdates,\n unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer\n /* eslint-enable camelcase */\n};\n\n// Inject the runtime into a devtools global hook regardless of browser.\n// Allows for debugging when the hook is injected on the page.\nif (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n ComponentTree: {\n getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,\n getNodeFromInstance: function (inst) {\n // inst is an internal instance (but could be a composite)\n if (inst._renderedComponent) {\n inst = getHostComponentFromComposite(inst);\n }\n if (inst) {\n return ReactDOMComponentTree.getNodeFromInstance(inst);\n } else {\n return null;\n }\n }\n },\n Mount: ReactMount,\n Reconciler: ReactReconciler\n });\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n if (ExecutionEnvironment.canUseDOM && window.top === window.self) {\n // First check if devtools is not installed\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n // If we're in Chrome or Firefox, provide a download link if not installed.\n if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n // Firefox does not have the issue with devtools loaded over file://\n var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1;\n console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools');\n }\n }\n\n var testFunc = function testFn() {};\n process.env.NODE_ENV !== 'production' ? warning((testFunc.name || testFunc.toString()).indexOf('testFn') !== -1, \"It looks like you're using a minified copy of the development build \" + 'of React. When deploying React apps to production, make sure to use ' + 'the production build which skips development warnings and is faster. ' + 'See https://fb.me/react-minification for more details.') : void 0;\n\n // If we're in IE8, check to see if we are in compatibility mode and provide\n // information on preventing compatibility mode\n var ieCompatibilityMode = document.documentMode && document.documentMode < 8;\n\n process.env.NODE_ENV !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />') : void 0;\n\n var expectedFeatures = [\n // shims\n Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim];\n\n for (var i = 0; i < expectedFeatures.length; i++) {\n if (!expectedFeatures[i]) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0;\n break;\n }\n }\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactInstrumentation = require('./ReactInstrumentation');\n var ReactDOMUnknownPropertyHook = require('./ReactDOMUnknownPropertyHook');\n var ReactDOMNullInputValuePropHook = require('./ReactDOMNullInputValuePropHook');\n var ReactDOMInvalidARIAHook = require('./ReactDOMInvalidARIAHook');\n\n ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook);\n}\n\nmodule.exports = ReactDOM;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ARIADOMPropertyConfig = {\n Properties: {\n // Global States and Properties\n 'aria-current': 0, // state\n 'aria-details': 0,\n 'aria-disabled': 0, // state\n 'aria-hidden': 0, // state\n 'aria-invalid': 0, // state\n 'aria-keyshortcuts': 0,\n 'aria-label': 0,\n 'aria-roledescription': 0,\n // Widget Attributes\n 'aria-autocomplete': 0,\n 'aria-checked': 0,\n 'aria-expanded': 0,\n 'aria-haspopup': 0,\n 'aria-level': 0,\n 'aria-modal': 0,\n 'aria-multiline': 0,\n 'aria-multiselectable': 0,\n 'aria-orientation': 0,\n 'aria-placeholder': 0,\n 'aria-pressed': 0,\n 'aria-readonly': 0,\n 'aria-required': 0,\n 'aria-selected': 0,\n 'aria-sort': 0,\n 'aria-valuemax': 0,\n 'aria-valuemin': 0,\n 'aria-valuenow': 0,\n 'aria-valuetext': 0,\n // Live Region Attributes\n 'aria-atomic': 0,\n 'aria-busy': 0,\n 'aria-live': 0,\n 'aria-relevant': 0,\n // Drag-and-Drop Attributes\n 'aria-dropeffect': 0,\n 'aria-grabbed': 0,\n // Relationship Attributes\n 'aria-activedescendant': 0,\n 'aria-colcount': 0,\n 'aria-colindex': 0,\n 'aria-colspan': 0,\n 'aria-controls': 0,\n 'aria-describedby': 0,\n 'aria-errormessage': 0,\n 'aria-flowto': 0,\n 'aria-labelledby': 0,\n 'aria-owns': 0,\n 'aria-posinset': 0,\n 'aria-rowcount': 0,\n 'aria-rowindex': 0,\n 'aria-rowspan': 0,\n 'aria-setsize': 0\n },\n DOMAttributeNames: {},\n DOMPropertyNames: {}\n};\n\nmodule.exports = ARIADOMPropertyConfig;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar FallbackCompositionState = require('./FallbackCompositionState');\nvar SyntheticCompositionEvent = require('./SyntheticCompositionEvent');\nvar SyntheticInputEvent = require('./SyntheticInputEvent');\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\nvar START_KEYCODE = 229;\n\nvar canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;\n\nvar documentMode = null;\nif (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {\n documentMode = document.documentMode;\n}\n\n// Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\nvar canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();\n\n// In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\nvar useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\n\n/**\n * Opera <= 12 includes TextEvent in window, but does not fire\n * text input events. Rely on keypress instead.\n */\nfunction isPresto() {\n var opera = window.opera;\n return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;\n}\n\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\n// Events and their corresponding property names.\nvar eventTypes = {\n beforeInput: {\n phasedRegistrationNames: {\n bubbled: 'onBeforeInput',\n captured: 'onBeforeInputCapture'\n },\n dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste']\n },\n compositionEnd: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionEnd',\n captured: 'onCompositionEndCapture'\n },\n dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionStart: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionStart',\n captured: 'onCompositionStartCapture'\n },\n dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionUpdate: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionUpdate',\n captured: 'onCompositionUpdateCapture'\n },\n dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n }\n};\n\n// Track whether we've ever handled a keypress on the space key.\nvar hasSpaceKeypress = false;\n\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\nfunction isKeypressCommand(nativeEvent) {\n return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&\n // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n\n/**\n * Translate native top level events into event types.\n *\n * @param {string} topLevelType\n * @return {object}\n */\nfunction getCompositionEventType(topLevelType) {\n switch (topLevelType) {\n case 'topCompositionStart':\n return eventTypes.compositionStart;\n case 'topCompositionEnd':\n return eventTypes.compositionEnd;\n case 'topCompositionUpdate':\n return eventTypes.compositionUpdate;\n }\n}\n\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionStart(topLevelType, nativeEvent) {\n return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE;\n}\n\n/**\n * Does our fallback mode think that this event is the end of composition?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionEnd(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topKeyUp':\n // Command keys insert or clear IME input.\n return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n case 'topKeyDown':\n // Expect IME keyCode on each keydown. If we get any other\n // code we must have exited earlier.\n return nativeEvent.keyCode !== START_KEYCODE;\n case 'topKeyPress':\n case 'topMouseDown':\n case 'topBlur':\n // Events are not possible without cancelling IME.\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\nfunction getDataFromCustomEvent(nativeEvent) {\n var detail = nativeEvent.detail;\n if (typeof detail === 'object' && 'data' in detail) {\n return detail.data;\n }\n return null;\n}\n\n// Track the current IME composition fallback object, if any.\nvar currentComposition = null;\n\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\nfunction extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var eventType;\n var fallbackData;\n\n if (canUseCompositionEvent) {\n eventType = getCompositionEventType(topLevelType);\n } else if (!currentComposition) {\n if (isFallbackCompositionStart(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionStart;\n }\n } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionEnd;\n }\n\n if (!eventType) {\n return null;\n }\n\n if (useFallbackCompositionData) {\n // The current composition is stored statically and must not be\n // overwritten while composition continues.\n if (!currentComposition && eventType === eventTypes.compositionStart) {\n currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);\n } else if (eventType === eventTypes.compositionEnd) {\n if (currentComposition) {\n fallbackData = currentComposition.getData();\n }\n }\n }\n\n var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);\n\n if (fallbackData) {\n // Inject data generated from fallback path into the synthetic event.\n // This matches the property of native CompositionEventInterface.\n event.data = fallbackData;\n } else {\n var customData = getDataFromCustomEvent(nativeEvent);\n if (customData !== null) {\n event.data = customData;\n }\n }\n\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The string corresponding to this `beforeInput` event.\n */\nfunction getNativeBeforeInputChars(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topCompositionEnd':\n return getDataFromCustomEvent(nativeEvent);\n case 'topKeyPress':\n /**\n * If native `textInput` events are available, our goal is to make\n * use of them. However, there is a special case: the spacebar key.\n * In Webkit, preventing default on a spacebar `textInput` event\n * cancels character insertion, but it *also* causes the browser\n * to fall back to its default spacebar behavior of scrolling the\n * page.\n *\n * Tracking at:\n * https://code.google.com/p/chromium/issues/detail?id=355103\n *\n * To avoid this issue, use the keypress event as if no `textInput`\n * event is available.\n */\n var which = nativeEvent.which;\n if (which !== SPACEBAR_CODE) {\n return null;\n }\n\n hasSpaceKeypress = true;\n return SPACEBAR_CHAR;\n\n case 'topTextInput':\n // Record the characters to be added to the DOM.\n var chars = nativeEvent.data;\n\n // If it's a spacebar character, assume that we have already handled\n // it at the keypress level and bail immediately. Android Chrome\n // doesn't give us keycodes, so we need to blacklist it.\n if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n return null;\n }\n\n return chars;\n\n default:\n // For other native event types, do nothing.\n return null;\n }\n}\n\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The fallback string for this `beforeInput` event.\n */\nfunction getFallbackBeforeInputChars(topLevelType, nativeEvent) {\n // If we are currently composing (IME) and using a fallback to do so,\n // try to extract the composed characters from the fallback object.\n // If composition event is available, we extract a string only at\n // compositionevent, otherwise extract it at fallback events.\n if (currentComposition) {\n if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n var chars = currentComposition.getData();\n FallbackCompositionState.release(currentComposition);\n currentComposition = null;\n return chars;\n }\n return null;\n }\n\n switch (topLevelType) {\n case 'topPaste':\n // If a paste event occurs after a keypress, throw out the input\n // chars. Paste events should not lead to BeforeInput events.\n return null;\n case 'topKeyPress':\n /**\n * As of v27, Firefox may fire keypress events even when no character\n * will be inserted. A few possibilities:\n *\n * - `which` is `0`. Arrow keys, Esc key, etc.\n *\n * - `which` is the pressed key code, but no char is available.\n * Ex: 'AltGr + d` in Polish. There is no modified character for\n * this key combination and no character is inserted into the\n * document, but FF fires the keypress for char code `100` anyway.\n * No `input` event will occur.\n *\n * - `which` is the pressed key code, but a command combination is\n * being used. Ex: `Cmd+C`. No character is inserted, and no\n * `input` event will occur.\n */\n if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {\n return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case 'topCompositionEnd':\n return useFallbackCompositionData ? null : nativeEvent.data;\n default:\n return null;\n }\n}\n\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\nfunction extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var chars;\n\n if (canUseTextInputEvent) {\n chars = getNativeBeforeInputChars(topLevelType, nativeEvent);\n } else {\n chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);\n }\n\n // If no characters are being inserted, no BeforeInput event should\n // be fired.\n if (!chars) {\n return null;\n }\n\n var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);\n\n event.data = chars;\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\nvar BeforeInputEventPlugin = {\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];\n }\n};\n\nmodule.exports = BeforeInputEventPlugin;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\n\nvar getTextContentAccessor = require('./getTextContentAccessor');\n\n/**\n * This helper class stores information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n * @param {DOMEventTarget} root\n */\nfunction FallbackCompositionState(root) {\n this._root = root;\n this._startText = this.getText();\n this._fallbackText = null;\n}\n\n_assign(FallbackCompositionState.prototype, {\n destructor: function () {\n this._root = null;\n this._startText = null;\n this._fallbackText = null;\n },\n\n /**\n * Get current text of input.\n *\n * @return {string}\n */\n getText: function () {\n if ('value' in this._root) {\n return this._root.value;\n }\n return this._root[getTextContentAccessor()];\n },\n\n /**\n * Determine the differing substring between the initially stored\n * text content and the current content.\n *\n * @return {string}\n */\n getData: function () {\n if (this._fallbackText) {\n return this._fallbackText;\n }\n\n var start;\n var startValue = this._startText;\n var startLength = startValue.length;\n var end;\n var endValue = this.getText();\n var endLength = endValue.length;\n\n for (start = 0; start < startLength; start++) {\n if (startValue[start] !== endValue[start]) {\n break;\n }\n }\n\n var minEnd = startLength - start;\n for (end = 1; end <= minEnd; end++) {\n if (startValue[startLength - end] !== endValue[endLength - end]) {\n break;\n }\n }\n\n var sliceTail = end > 1 ? 1 - end : undefined;\n this._fallbackText = endValue.slice(start, sliceTail);\n return this._fallbackText;\n }\n});\n\nPooledClass.addPoolingTo(FallbackCompositionState);\n\nmodule.exports = FallbackCompositionState;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\nvar CompositionEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);\n\nmodule.exports = SyntheticCompositionEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n * /#events-inputevents\n */\nvar InputEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);\n\nmodule.exports = SyntheticInputEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar inputValueTracking = require('./inputValueTracking');\nvar getEventTarget = require('./getEventTarget');\nvar isEventSupported = require('./isEventSupported');\nvar isTextInputElement = require('./isTextInputElement');\n\nvar eventTypes = {\n change: {\n phasedRegistrationNames: {\n bubbled: 'onChange',\n captured: 'onChangeCapture'\n },\n dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange']\n }\n};\n\nfunction createAndAccumulateChangeEvent(inst, nativeEvent, target) {\n var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, target);\n event.type = 'change';\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n/**\n * For IE shims\n */\nvar activeElement = null;\nvar activeElementInst = null;\n\n/**\n * SECTION: handle `change` event\n */\nfunction shouldUseChangeEvent(elem) {\n var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nvar doesChangeEventBubble = false;\nif (ExecutionEnvironment.canUseDOM) {\n // See `handleChange` comment below\n doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8);\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n var event = createAndAccumulateChangeEvent(activeElementInst, nativeEvent, getEventTarget(nativeEvent));\n\n // If change and propertychange bubbled, we'd just bind to it like all the\n // other events and have it go through ReactBrowserEventEmitter. Since it\n // doesn't, we manually listen for the events and so we have to enqueue and\n // process the abstract event manually.\n //\n // Batching is necessary here in order to ensure that all event handlers run\n // before the next rerender (including event handlers attached to ancestor\n // elements instead of directly on the input). Without this, controlled\n // components don't work properly in conjunction with event bubbling because\n // the component is rerendered and the value reverted before all the event\n // handlers can run. See https://github.com/facebook/react/issues/708.\n ReactUpdates.batchedUpdates(runEventInBatch, event);\n}\n\nfunction runEventInBatch(event) {\n EventPluginHub.enqueueEvents(event);\n EventPluginHub.processEventQueue(false);\n}\n\nfunction startWatchingForChangeEventIE8(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElement.attachEvent('onchange', manualDispatchChangeEvent);\n}\n\nfunction stopWatchingForChangeEventIE8() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onchange', manualDispatchChangeEvent);\n activeElement = null;\n activeElementInst = null;\n}\n\nfunction getInstIfValueChanged(targetInst, nativeEvent) {\n var updated = inputValueTracking.updateValueIfChanged(targetInst);\n var simulated = nativeEvent.simulated === true && ChangeEventPlugin._allowSimulatedPassThrough;\n\n if (updated || simulated) {\n return targetInst;\n }\n}\n\nfunction getTargetInstForChangeEvent(topLevelType, targetInst) {\n if (topLevelType === 'topChange') {\n return targetInst;\n }\n}\n\nfunction handleEventsForChangeEventIE8(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForChangeEventIE8();\n startWatchingForChangeEventIE8(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForChangeEventIE8();\n }\n}\n\n/**\n * SECTION: handle `input` event\n */\nvar isInputEventSupported = false;\nif (ExecutionEnvironment.canUseDOM) {\n // IE9 claims to support the input event but fails to trigger it when\n // deleting text, so we ignore its input events.\n\n isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 9);\n}\n\n/**\n * (For IE <=9) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\nfunction startWatchingForValueChange(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElement.attachEvent('onpropertychange', handlePropertyChange);\n}\n\n/**\n * (For IE <=9) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\nfunction stopWatchingForValueChange() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onpropertychange', handlePropertyChange);\n\n activeElement = null;\n activeElementInst = null;\n}\n\n/**\n * (For IE <=9) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\nfunction handlePropertyChange(nativeEvent) {\n if (nativeEvent.propertyName !== 'value') {\n return;\n }\n if (getInstIfValueChanged(activeElementInst, nativeEvent)) {\n manualDispatchChangeEvent(nativeEvent);\n }\n}\n\nfunction handleEventsForInputEventPolyfill(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // In IE8, we can capture almost all .value changes by adding a\n // propertychange handler and looking for events with propertyName\n // equal to 'value'\n // In IE9, propertychange fires for most input events but is buggy and\n // doesn't fire when text is deleted, but conveniently, selectionchange\n // appears to fire in all of the remaining cases so we catch those and\n // forward the event if the value has changed\n // In either case, we don't want to call the event handler if the value\n // is changed from JS so we redefine a setter for `.value` that updates\n // our activeElementValue variable, allowing us to ignore those changes\n //\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForValueChange();\n startWatchingForValueChange(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForValueChange();\n }\n}\n\n// For IE8 and IE9.\nfunction getTargetInstForInputEventPolyfill(topLevelType, targetInst, nativeEvent) {\n if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') {\n // On the selectionchange event, the target is just document which isn't\n // helpful for us so just check activeElement instead.\n //\n // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n // propertychange on the first input event after setting `value` from a\n // script and fires only keydown, keypress, keyup. Catching keyup usually\n // gets it and catching keydown lets us fire an event for the first\n // keystroke if user does a key repeat (it'll be a little delayed: right\n // before the second keystroke). Other input methods (e.g., paste) seem to\n // fire selectionchange normally.\n return getInstIfValueChanged(activeElementInst, nativeEvent);\n }\n}\n\n/**\n * SECTION: handle `click` event\n */\nfunction shouldUseClickEvent(elem) {\n // Use the `click` event to detect changes to checkbox and radio inputs.\n // This approach works across all browsers, whereas `change` does not fire\n // until `blur` in IE8.\n var nodeName = elem.nodeName;\n return nodeName && nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(topLevelType, targetInst, nativeEvent) {\n if (topLevelType === 'topClick') {\n return getInstIfValueChanged(targetInst, nativeEvent);\n }\n}\n\nfunction getTargetInstForInputOrChangeEvent(topLevelType, targetInst, nativeEvent) {\n if (topLevelType === 'topInput' || topLevelType === 'topChange') {\n return getInstIfValueChanged(targetInst, nativeEvent);\n }\n}\n\nfunction handleControlledInputBlur(inst, node) {\n // TODO: In IE, inst is occasionally null. Why?\n if (inst == null) {\n return;\n }\n\n // Fiber and ReactDOM keep wrapper state in separate places\n var state = inst._wrapperState || node._wrapperState;\n\n if (!state || !state.controlled || node.type !== 'number') {\n return;\n }\n\n // If controlled, assign the value attribute to the current value on blur\n var value = '' + node.value;\n if (node.getAttribute('value') !== value) {\n node.setAttribute('value', value);\n }\n}\n\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\nvar ChangeEventPlugin = {\n eventTypes: eventTypes,\n\n _allowSimulatedPassThrough: true,\n _isInputEventSupported: isInputEventSupported,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n var getTargetInstFunc, handleEventFunc;\n if (shouldUseChangeEvent(targetNode)) {\n if (doesChangeEventBubble) {\n getTargetInstFunc = getTargetInstForChangeEvent;\n } else {\n handleEventFunc = handleEventsForChangeEventIE8;\n }\n } else if (isTextInputElement(targetNode)) {\n if (isInputEventSupported) {\n getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n } else {\n getTargetInstFunc = getTargetInstForInputEventPolyfill;\n handleEventFunc = handleEventsForInputEventPolyfill;\n }\n } else if (shouldUseClickEvent(targetNode)) {\n getTargetInstFunc = getTargetInstForClickEvent;\n }\n\n if (getTargetInstFunc) {\n var inst = getTargetInstFunc(topLevelType, targetInst, nativeEvent);\n if (inst) {\n var event = createAndAccumulateChangeEvent(inst, nativeEvent, nativeEventTarget);\n return event;\n }\n }\n\n if (handleEventFunc) {\n handleEventFunc(topLevelType, targetNode, targetInst);\n }\n\n // When blurring, set the value attribute for number inputs\n if (topLevelType === 'topBlur') {\n handleControlledInputBlur(targetInst, targetNode);\n }\n }\n};\n\nmodule.exports = ChangeEventPlugin;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar ReactOwner = require('./ReactOwner');\n\nvar ReactRef = {};\n\nfunction attachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(component.getPublicInstance());\n } else {\n // Legacy ref\n ReactOwner.addComponentAsRefTo(component, ref, owner);\n }\n}\n\nfunction detachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n // Legacy ref\n ReactOwner.removeComponentAsRefFrom(component, ref, owner);\n }\n}\n\nReactRef.attachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n attachRef(ref, instance, element._owner);\n }\n};\n\nReactRef.shouldUpdateRefs = function (prevElement, nextElement) {\n // If either the owner or a `ref` has changed, make sure the newest owner\n // has stored a reference to `this`, and the previous owner (if different)\n // has forgotten the reference to `this`. We use the element instead\n // of the public this.props because the post processing cannot determine\n // a ref. The ref conceptually lives on the element.\n\n // TODO: Should this even be possible? The owner cannot change because\n // it's forbidden by shouldUpdateReactComponent. The ref can change\n // if you swap the keys of but not the refs. Reconsider where this check\n // is made. It probably belongs where the key checking and\n // instantiateReactComponent is done.\n\n var prevRef = null;\n var prevOwner = null;\n if (prevElement !== null && typeof prevElement === 'object') {\n prevRef = prevElement.ref;\n prevOwner = prevElement._owner;\n }\n\n var nextRef = null;\n var nextOwner = null;\n if (nextElement !== null && typeof nextElement === 'object') {\n nextRef = nextElement.ref;\n nextOwner = nextElement._owner;\n }\n\n return prevRef !== nextRef ||\n // If owner changes but we have an unchanged function ref, don't update refs\n typeof nextRef === 'string' && nextOwner !== prevOwner;\n};\n\nReactRef.detachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n detachRef(ref, instance, element._owner);\n }\n};\n\nmodule.exports = ReactRef;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid owner.\n * @final\n */\nfunction isValidOwner(object) {\n return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function');\n}\n\n/**\n * ReactOwners are capable of storing references to owned components.\n *\n * All components are capable of //being// referenced by owner components, but\n * only ReactOwner components are capable of //referencing// owned components.\n * The named reference is known as a \"ref\".\n *\n * Refs are available when mounted and updated during reconciliation.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return (\n * <div onClick={this.handleClick}>\n * <CustomComponent ref=\"custom\" />\n * </div>\n * );\n * },\n * handleClick: function() {\n * this.refs.custom.handleClick();\n * },\n * componentDidMount: function() {\n * this.refs.custom.initialize();\n * }\n * });\n *\n * Refs should rarely be used. When refs are used, they should only be done to\n * control data that is not handled by React's data flow.\n *\n * @class ReactOwner\n */\nvar ReactOwner = {\n /**\n * Adds a component by ref to an owner component.\n *\n * @param {ReactComponent} component Component to reference.\n * @param {string} ref Name by which to refer to the component.\n * @param {ReactOwner} owner Component on which to record the ref.\n * @final\n * @internal\n */\n addComponentAsRefTo: function (component, ref, owner) {\n !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0;\n owner.attachRef(ref, component);\n },\n\n /**\n * Removes a component by ref from an owner component.\n *\n * @param {ReactComponent} component Component to dereference.\n * @param {string} ref Name of the ref to remove.\n * @param {ReactOwner} owner Component on which the ref is recorded.\n * @final\n * @internal\n */\n removeComponentAsRefFrom: function (component, ref, owner) {\n !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0;\n var ownerPublicInstance = owner.getPublicInstance();\n // Check that `component`'s owner is still alive and that `component` is still the current ref\n // because we do not want to detach the ref if another component stole it.\n if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) {\n owner.detachRef(ref);\n }\n }\n};\n\nmodule.exports = ReactOwner;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Module that is injectable into `EventPluginHub`, that specifies a\n * deterministic ordering of `EventPlugin`s. A convenient way to reason about\n * plugins, without having to package every one of them. This is better than\n * having plugins be ordered in the same order that they are injected because\n * that ordering would be influenced by the packaging order.\n * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that\n * preventing default on events is convenient in `SimpleEventPlugin` handlers.\n */\n\nvar DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];\n\nmodule.exports = DefaultEventPluginOrder;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\nvar eventTypes = {\n mouseEnter: {\n registrationName: 'onMouseEnter',\n dependencies: ['topMouseOut', 'topMouseOver']\n },\n mouseLeave: {\n registrationName: 'onMouseLeave',\n dependencies: ['topMouseOut', 'topMouseOver']\n }\n};\n\nvar EnterLeaveEventPlugin = {\n eventTypes: eventTypes,\n\n /**\n * For almost every interaction we care about, there will be both a top-level\n * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n * we do not extract duplicate events. However, moving the mouse into the\n * browser from outside will not fire a `mouseout` event. In this case, we use\n * the `mouseover` top-level event.\n */\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {\n return null;\n }\n if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') {\n // Must not be a mouse in or mouse out - ignoring.\n return null;\n }\n\n var win;\n if (nativeEventTarget.window === nativeEventTarget) {\n // `nativeEventTarget` is probably a window object.\n win = nativeEventTarget;\n } else {\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n var doc = nativeEventTarget.ownerDocument;\n if (doc) {\n win = doc.defaultView || doc.parentWindow;\n } else {\n win = window;\n }\n }\n\n var from;\n var to;\n if (topLevelType === 'topMouseOut') {\n from = targetInst;\n var related = nativeEvent.relatedTarget || nativeEvent.toElement;\n to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;\n } else {\n // Moving to a node from outside the window.\n from = null;\n to = targetInst;\n }\n\n if (from === to) {\n // Nothing pertains to our managed components.\n return null;\n }\n\n var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);\n var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);\n\n var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);\n leave.type = 'mouseleave';\n leave.target = fromNode;\n leave.relatedTarget = toNode;\n\n var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);\n enter.type = 'mouseenter';\n enter.target = toNode;\n enter.relatedTarget = fromNode;\n\n EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);\n\n return [leave, enter];\n }\n};\n\nmodule.exports = EnterLeaveEventPlugin;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\n\nvar MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;\nvar HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;\nvar HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;\nvar HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;\nvar HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;\n\nvar HTMLDOMPropertyConfig = {\n isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')),\n Properties: {\n /**\n * Standard Properties\n */\n accept: 0,\n acceptCharset: 0,\n accessKey: 0,\n action: 0,\n allowFullScreen: HAS_BOOLEAN_VALUE,\n allowTransparency: 0,\n alt: 0,\n // specifies target context for links with `preload` type\n as: 0,\n async: HAS_BOOLEAN_VALUE,\n autoComplete: 0,\n // autoFocus is polyfilled/normalized by AutoFocusUtils\n // autoFocus: HAS_BOOLEAN_VALUE,\n autoPlay: HAS_BOOLEAN_VALUE,\n capture: HAS_BOOLEAN_VALUE,\n cellPadding: 0,\n cellSpacing: 0,\n charSet: 0,\n challenge: 0,\n checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n cite: 0,\n classID: 0,\n className: 0,\n cols: HAS_POSITIVE_NUMERIC_VALUE,\n colSpan: 0,\n content: 0,\n contentEditable: 0,\n contextMenu: 0,\n controls: HAS_BOOLEAN_VALUE,\n controlsList: 0,\n coords: 0,\n crossOrigin: 0,\n data: 0, // For `<object />` acts as `src`.\n dateTime: 0,\n 'default': HAS_BOOLEAN_VALUE,\n defer: HAS_BOOLEAN_VALUE,\n dir: 0,\n disabled: HAS_BOOLEAN_VALUE,\n download: HAS_OVERLOADED_BOOLEAN_VALUE,\n draggable: 0,\n encType: 0,\n form: 0,\n formAction: 0,\n formEncType: 0,\n formMethod: 0,\n formNoValidate: HAS_BOOLEAN_VALUE,\n formTarget: 0,\n frameBorder: 0,\n headers: 0,\n height: 0,\n hidden: HAS_BOOLEAN_VALUE,\n high: 0,\n href: 0,\n hrefLang: 0,\n htmlFor: 0,\n httpEquiv: 0,\n icon: 0,\n id: 0,\n inputMode: 0,\n integrity: 0,\n is: 0,\n keyParams: 0,\n keyType: 0,\n kind: 0,\n label: 0,\n lang: 0,\n list: 0,\n loop: HAS_BOOLEAN_VALUE,\n low: 0,\n manifest: 0,\n marginHeight: 0,\n marginWidth: 0,\n max: 0,\n maxLength: 0,\n media: 0,\n mediaGroup: 0,\n method: 0,\n min: 0,\n minLength: 0,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n name: 0,\n nonce: 0,\n noValidate: HAS_BOOLEAN_VALUE,\n open: HAS_BOOLEAN_VALUE,\n optimum: 0,\n pattern: 0,\n placeholder: 0,\n playsInline: HAS_BOOLEAN_VALUE,\n poster: 0,\n preload: 0,\n profile: 0,\n radioGroup: 0,\n readOnly: HAS_BOOLEAN_VALUE,\n referrerPolicy: 0,\n rel: 0,\n required: HAS_BOOLEAN_VALUE,\n reversed: HAS_BOOLEAN_VALUE,\n role: 0,\n rows: HAS_POSITIVE_NUMERIC_VALUE,\n rowSpan: HAS_NUMERIC_VALUE,\n sandbox: 0,\n scope: 0,\n scoped: HAS_BOOLEAN_VALUE,\n scrolling: 0,\n seamless: HAS_BOOLEAN_VALUE,\n selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n shape: 0,\n size: HAS_POSITIVE_NUMERIC_VALUE,\n sizes: 0,\n span: HAS_POSITIVE_NUMERIC_VALUE,\n spellCheck: 0,\n src: 0,\n srcDoc: 0,\n srcLang: 0,\n srcSet: 0,\n start: HAS_NUMERIC_VALUE,\n step: 0,\n style: 0,\n summary: 0,\n tabIndex: 0,\n target: 0,\n title: 0,\n // Setting .type throws on non-<input> tags\n type: 0,\n useMap: 0,\n value: 0,\n width: 0,\n wmode: 0,\n wrap: 0,\n\n /**\n * RDFa Properties\n */\n about: 0,\n datatype: 0,\n inlist: 0,\n prefix: 0,\n // property is also supported for OpenGraph in meta tags.\n property: 0,\n resource: 0,\n 'typeof': 0,\n vocab: 0,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: 0,\n autoCorrect: 0,\n // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n autoSave: 0,\n // color is for Safari mask-icon link\n color: 0,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: 0,\n itemScope: HAS_BOOLEAN_VALUE,\n itemType: 0,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: 0,\n itemRef: 0,\n // results show looking glass icon and recent searches on input\n // search fields in WebKit/Blink\n results: 0,\n // IE-only attribute that specifies security restrictions on an iframe\n // as an alternative to the sandbox attribute on IE<10\n security: 0,\n // IE-only attribute that controls focus behavior\n unselectable: 0\n },\n DOMAttributeNames: {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n },\n DOMPropertyNames: {},\n DOMMutationMethods: {\n value: function (node, value) {\n if (value == null) {\n return node.removeAttribute('value');\n }\n\n // Number inputs get special treatment due to some edge cases in\n // Chrome. Let everything else assign the value attribute as normal.\n // https://github.com/facebook/react/issues/7253#issuecomment-236074326\n if (node.type !== 'number' || node.hasAttribute('value') === false) {\n node.setAttribute('value', '' + value);\n } else if (node.validity && !node.validity.badInput && node.ownerDocument.activeElement !== node) {\n // Don't assign an attribute if validation reports bad\n // input. Chrome will clear the value. Additionally, don't\n // operate on inputs that have focus, otherwise Chrome might\n // strip off trailing decimal places and cause the user's\n // cursor position to jump to the beginning of the input.\n //\n // In ReactDOMInput, we have an onBlur event that will trigger\n // this function again when focus is lost.\n node.setAttribute('value', '' + value);\n }\n }\n }\n};\n\nmodule.exports = HTMLDOMPropertyConfig;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar ReactDOMIDOperations = require('./ReactDOMIDOperations');\n\n/**\n * Abstracts away all functionality of the reconciler that requires knowledge of\n * the browser context. TODO: These callers should be refactored to avoid the\n * need for this injection.\n */\nvar ReactComponentBrowserEnvironment = {\n processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\n replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup\n};\n\nmodule.exports = ReactComponentBrowserEnvironment;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar createNodesFromMarkup = require('fbjs/lib/createNodesFromMarkup');\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\n\nvar Danger = {\n /**\n * Replaces a node with a string of markup at its current position within its\n * parent. The markup must render into a single root node.\n *\n * @param {DOMElement} oldChild Child node to replace.\n * @param {string} markup Markup to render in place of the child node.\n * @internal\n */\n dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) {\n !ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('56') : void 0;\n !markup ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0;\n !(oldChild.nodeName !== 'HTML') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString().') : _prodInvariant('58') : void 0;\n\n if (typeof markup === 'string') {\n var newChild = createNodesFromMarkup(markup, emptyFunction)[0];\n oldChild.parentNode.replaceChild(newChild, oldChild);\n } else {\n DOMLazyTree.replaceChildWithTree(oldChild, markup);\n }\n }\n};\n\nmodule.exports = Danger;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/*eslint-disable fb-www/unsafe-html*/\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar createArrayFromMixed = require('./createArrayFromMixed');\nvar getMarkupWrap = require('./getMarkupWrap');\nvar invariant = require('./invariant');\n\n/**\n * Dummy container used to render all markup.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Pattern used by `getNodeName`.\n */\nvar nodeNamePattern = /^\\s*<(\\w+)/;\n\n/**\n * Extracts the `nodeName` of the first element in a string of markup.\n *\n * @param {string} markup String of markup.\n * @return {?string} Node name of the supplied markup.\n */\nfunction getNodeName(markup) {\n var nodeNameMatch = markup.match(nodeNamePattern);\n return nodeNameMatch && nodeNameMatch[1].toLowerCase();\n}\n\n/**\n * Creates an array containing the nodes rendered from the supplied markup. The\n * optionally supplied `handleScript` function will be invoked once for each\n * <script> element that is rendered. If no `handleScript` function is supplied,\n * an exception is thrown if any <script> elements are rendered.\n *\n * @param {string} markup A string of valid HTML markup.\n * @param {?function} handleScript Invoked once for each rendered <script>.\n * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes.\n */\nfunction createNodesFromMarkup(markup, handleScript) {\n var node = dummyNode;\n !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0;\n var nodeName = getNodeName(markup);\n\n var wrap = nodeName && getMarkupWrap(nodeName);\n if (wrap) {\n node.innerHTML = wrap[1] + markup + wrap[2];\n\n var wrapDepth = wrap[0];\n while (wrapDepth--) {\n node = node.lastChild;\n }\n } else {\n node.innerHTML = markup;\n }\n\n var scripts = node.getElementsByTagName('script');\n if (scripts.length) {\n !handleScript ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0;\n createArrayFromMixed(scripts).forEach(handleScript);\n }\n\n var nodes = Array.from(node.childNodes);\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n return nodes;\n}\n\nmodule.exports = createNodesFromMarkup;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar invariant = require('./invariant');\n\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\nfunction toArray(obj) {\n var length = obj.length;\n\n // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n // in old versions of Safari).\n !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n\n !(typeof length === 'number') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n\n !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n\n !(typeof obj.callee !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0;\n\n // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n // without method will throw during the slice call and skip straight to the\n // fallback.\n if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {\n // IE < 9 does not support Array#slice on collections objects\n }\n }\n\n // Fall back to copying key by key. This assumes all keys have a value,\n // so will not preserve sparsely populated inputs.\n var ret = Array(length);\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n return ret;\n}\n\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n * Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\nfunction hasArrayNature(obj) {\n return (\n // not null/false\n !!obj && (\n // arrays are objects, NodeLists are functions in Safari\n typeof obj == 'object' || typeof obj == 'function') &&\n // quacks like an array\n 'length' in obj &&\n // not window\n !('setInterval' in obj) &&\n // no DOM node should be considered an array-like\n // a 'select' element has 'length' and 'item' properties on IE8\n typeof obj.nodeType != 'number' && (\n // a real array\n Array.isArray(obj) ||\n // arguments\n 'callee' in obj ||\n // HTMLCollection/NodeList\n 'item' in obj)\n );\n}\n\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n * var createArrayFromMixed = require('createArrayFromMixed');\n *\n * function takesOneOrMoreThings(things) {\n * things = createArrayFromMixed(things);\n * ...\n * }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\nfunction createArrayFromMixed(obj) {\n if (!hasArrayNature(obj)) {\n return [obj];\n } else if (Array.isArray(obj)) {\n return obj.slice();\n } else {\n return toArray(obj);\n }\n}\n\nmodule.exports = createArrayFromMixed;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/*eslint-disable fb-www/unsafe-html */\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar invariant = require('./invariant');\n\n/**\n * Dummy container used to detect which wraps are necessary.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Some browsers cannot use `innerHTML` to render certain elements standalone,\n * so we wrap them, render the wrapped nodes, then extract the desired node.\n *\n * In IE8, certain elements cannot render alone, so wrap all elements ('*').\n */\n\nvar shouldWrap = {};\n\nvar selectWrap = [1, '<select multiple=\"true\">', '</select>'];\nvar tableWrap = [1, '<table>', '</table>'];\nvar trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];\n\nvar svgWrap = [1, '<svg xmlns=\"http://www.w3.org/2000/svg\">', '</svg>'];\n\nvar markupWrap = {\n '*': [1, '?<div>', '</div>'],\n\n 'area': [1, '<map>', '</map>'],\n 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],\n 'legend': [1, '<fieldset>', '</fieldset>'],\n 'param': [1, '<object>', '</object>'],\n 'tr': [2, '<table><tbody>', '</tbody></table>'],\n\n 'optgroup': selectWrap,\n 'option': selectWrap,\n\n 'caption': tableWrap,\n 'colgroup': tableWrap,\n 'tbody': tableWrap,\n 'tfoot': tableWrap,\n 'thead': tableWrap,\n\n 'td': trWrap,\n 'th': trWrap\n};\n\n// Initialize the SVG elements since we know they'll always need to be wrapped\n// consistently. If they are created inside a <div> they will be initialized in\n// the wrong namespace (and will not display).\nvar svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan'];\nsvgElements.forEach(function (nodeName) {\n markupWrap[nodeName] = svgWrap;\n shouldWrap[nodeName] = true;\n});\n\n/**\n * Gets the markup wrap configuration for the supplied `nodeName`.\n *\n * NOTE: This lazily detects which wraps are necessary for the current browser.\n *\n * @param {string} nodeName Lowercase `nodeName`.\n * @return {?array} Markup wrap configuration, if applicable.\n */\nfunction getMarkupWrap(nodeName) {\n !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0;\n if (!markupWrap.hasOwnProperty(nodeName)) {\n nodeName = '*';\n }\n if (!shouldWrap.hasOwnProperty(nodeName)) {\n if (nodeName === '*') {\n dummyNode.innerHTML = '<link />';\n } else {\n dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';\n }\n shouldWrap[nodeName] = !dummyNode.firstChild;\n }\n return shouldWrap[nodeName] ? markupWrap[nodeName] : null;\n}\n\nmodule.exports = getMarkupWrap;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\n/**\n * Operations used to process updates to DOM nodes.\n */\nvar ReactDOMIDOperations = {\n /**\n * Updates a component's children by processing a series of updates.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n dangerouslyProcessChildrenUpdates: function (parentInst, updates) {\n var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);\n DOMChildrenOperations.processUpdates(node, updates);\n }\n};\n\nmodule.exports = ReactDOMIDOperations;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/* global hasOwnProperty:true */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar AutoFocusUtils = require('./AutoFocusUtils');\nvar CSSPropertyOperations = require('./CSSPropertyOperations');\nvar DOMLazyTree = require('./DOMLazyTree');\nvar DOMNamespaces = require('./DOMNamespaces');\nvar DOMProperty = require('./DOMProperty');\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactDOMComponentFlags = require('./ReactDOMComponentFlags');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMInput = require('./ReactDOMInput');\nvar ReactDOMOption = require('./ReactDOMOption');\nvar ReactDOMSelect = require('./ReactDOMSelect');\nvar ReactDOMTextarea = require('./ReactDOMTextarea');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMultiChild = require('./ReactMultiChild');\nvar ReactServerRenderingTransaction = require('./ReactServerRenderingTransaction');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar invariant = require('fbjs/lib/invariant');\nvar isEventSupported = require('./isEventSupported');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\nvar inputValueTracking = require('./inputValueTracking');\nvar validateDOMNesting = require('./validateDOMNesting');\nvar warning = require('fbjs/lib/warning');\n\nvar Flags = ReactDOMComponentFlags;\nvar deleteListener = EventPluginHub.deleteListener;\nvar getNode = ReactDOMComponentTree.getNodeFromInstance;\nvar listenTo = ReactBrowserEventEmitter.listenTo;\nvar registrationNameModules = EventPluginRegistry.registrationNameModules;\n\n// For quickly matching children type, to test if can be treated as content.\nvar CONTENT_TYPES = { string: true, number: true };\n\nvar STYLE = 'style';\nvar HTML = '__html';\nvar RESERVED_PROPS = {\n children: null,\n dangerouslySetInnerHTML: null,\n suppressContentEditableWarning: null\n};\n\n// Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).\nvar DOC_FRAGMENT_TYPE = 11;\n\nfunction getDeclarationErrorAddendum(internalInstance) {\n if (internalInstance) {\n var owner = internalInstance._currentElement._owner || null;\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' This DOM node was rendered by `' + name + '`.';\n }\n }\n }\n return '';\n}\n\nfunction friendlyStringify(obj) {\n if (typeof obj === 'object') {\n if (Array.isArray(obj)) {\n return '[' + obj.map(friendlyStringify).join(', ') + ']';\n } else {\n var pairs = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var keyEscaped = /^[a-z$_][\\w$_]*$/i.test(key) ? key : JSON.stringify(key);\n pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));\n }\n }\n return '{' + pairs.join(', ') + '}';\n }\n } else if (typeof obj === 'string') {\n return JSON.stringify(obj);\n } else if (typeof obj === 'function') {\n return '[function object]';\n }\n // Differs from JSON.stringify in that undefined because undefined and that\n // inf and nan don't become null\n return String(obj);\n}\n\nvar styleMutationWarning = {};\n\nfunction checkAndWarnForMutatedStyle(style1, style2, component) {\n if (style1 == null || style2 == null) {\n return;\n }\n if (shallowEqual(style1, style2)) {\n return;\n }\n\n var componentName = component._tag;\n var owner = component._currentElement._owner;\n var ownerName;\n if (owner) {\n ownerName = owner.getName();\n }\n\n var hash = ownerName + '|' + componentName;\n\n if (styleMutationWarning.hasOwnProperty(hash)) {\n return;\n }\n\n styleMutationWarning[hash] = true;\n\n process.env.NODE_ENV !== 'production' ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : void 0;\n}\n\n/**\n * @param {object} component\n * @param {?object} props\n */\nfunction assertValidProps(component, props) {\n if (!props) {\n return;\n }\n // Note the use of `==` which checks for null or undefined.\n if (voidElementTags[component._tag]) {\n !(props.children == null && props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : _prodInvariant('137', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : void 0;\n }\n if (props.dangerouslySetInnerHTML != null) {\n !(props.children == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0;\n !(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : _prodInvariant('61') : void 0;\n }\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.onFocusIn == null && props.onFocusOut == null, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.') : void 0;\n }\n !(props.style == null || typeof props.style === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \\'em\\'}} when using JSX.%s', getDeclarationErrorAddendum(component)) : _prodInvariant('62', getDeclarationErrorAddendum(component)) : void 0;\n}\n\nfunction enqueuePutListener(inst, registrationName, listener, transaction) {\n if (transaction instanceof ReactServerRenderingTransaction) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // IE8 has no API for event capturing and the `onScroll` event doesn't\n // bubble.\n process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), \"This browser doesn't support the `onScroll` event\") : void 0;\n }\n var containerInfo = inst._hostContainerInfo;\n var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;\n var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;\n listenTo(registrationName, doc);\n transaction.getReactMountReady().enqueue(putListener, {\n inst: inst,\n registrationName: registrationName,\n listener: listener\n });\n}\n\nfunction putListener() {\n var listenerToPut = this;\n EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);\n}\n\nfunction inputPostMount() {\n var inst = this;\n ReactDOMInput.postMountWrapper(inst);\n}\n\nfunction textareaPostMount() {\n var inst = this;\n ReactDOMTextarea.postMountWrapper(inst);\n}\n\nfunction optionPostMount() {\n var inst = this;\n ReactDOMOption.postMountWrapper(inst);\n}\n\nvar setAndValidateContentChildDev = emptyFunction;\nif (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev = function (content) {\n var hasExistingContent = this._contentDebugID != null;\n var debugID = this._debugID;\n // This ID represents the inlined child that has no backing instance:\n var contentDebugID = -debugID;\n\n if (content == null) {\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);\n }\n this._contentDebugID = null;\n return;\n }\n\n validateDOMNesting(null, String(content), this, this._ancestorInfo);\n this._contentDebugID = contentDebugID;\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);\n ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);\n } else {\n ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);\n ReactInstrumentation.debugTool.onMountComponent(contentDebugID);\n ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);\n }\n };\n}\n\n// There are so many media events, it makes sense to just\n// maintain a list rather than create a `trapBubbledEvent` for each\nvar mediaEvents = {\n topAbort: 'abort',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTimeUpdate: 'timeupdate',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting'\n};\n\nfunction trackInputValue() {\n inputValueTracking.track(this);\n}\n\nfunction trapBubbledEventsLocal() {\n var inst = this;\n // If a component renders to null or if another component fatals and causes\n // the state of the tree to be corrupted, `node` here can be null.\n !inst._rootNodeID ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0;\n var node = getNode(inst);\n !node ? process.env.NODE_ENV !== 'production' ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0;\n\n switch (inst._tag) {\n case 'iframe':\n case 'object':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'video':\n case 'audio':\n inst._wrapperState.listeners = [];\n // Create listener for each media event\n for (var event in mediaEvents) {\n if (mediaEvents.hasOwnProperty(event)) {\n inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node));\n }\n }\n break;\n case 'source':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)];\n break;\n case 'img':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'form':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)];\n break;\n case 'input':\n case 'select':\n case 'textarea':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)];\n break;\n }\n}\n\nfunction postUpdateSelectWrapper() {\n ReactDOMSelect.postUpdateWrapper(this);\n}\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n // NOTE: menuitem's close tag should be omitted, but that causes problems.\n};\n\nvar newlineEatingTags = {\n listing: true,\n pre: true,\n textarea: true\n};\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = _assign({\n menuitem: true\n}, omittedCloseTags);\n\n// We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\nvar validatedTagCache = {};\nvar hasOwnProperty = {}.hasOwnProperty;\n\nfunction validateDangerousTag(tag) {\n if (!hasOwnProperty.call(validatedTagCache, tag)) {\n !VALID_TAG_REGEX.test(tag) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0;\n validatedTagCache[tag] = true;\n }\n}\n\nfunction isCustomComponent(tagName, props) {\n return tagName.indexOf('-') >= 0 || props.is != null;\n}\n\nvar globalIdCounter = 1;\n\n/**\n * Creates a new React class that is idempotent and capable of containing other\n * React components. It accepts event listeners and DOM properties that are\n * valid according to `DOMProperty`.\n *\n * - Event listeners: `onClick`, `onMouseDown`, etc.\n * - DOM properties: `className`, `name`, `title`, etc.\n *\n * The `style` property functions differently from the DOM API. It accepts an\n * object mapping of style properties to values.\n *\n * @constructor ReactDOMComponent\n * @extends ReactMultiChild\n */\nfunction ReactDOMComponent(element) {\n var tag = element.type;\n validateDangerousTag(tag);\n this._currentElement = element;\n this._tag = tag.toLowerCase();\n this._namespaceURI = null;\n this._renderedChildren = null;\n this._previousStyle = null;\n this._previousStyleCopy = null;\n this._hostNode = null;\n this._hostParent = null;\n this._rootNodeID = 0;\n this._domID = 0;\n this._hostContainerInfo = null;\n this._wrapperState = null;\n this._topLevelWrapper = null;\n this._flags = 0;\n if (process.env.NODE_ENV !== 'production') {\n this._ancestorInfo = null;\n setAndValidateContentChildDev.call(this, null);\n }\n}\n\nReactDOMComponent.displayName = 'ReactDOMComponent';\n\nReactDOMComponent.Mixin = {\n /**\n * Generates root tag markup then recurses. This method has side effects and\n * is not idempotent.\n *\n * @internal\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?ReactDOMComponent} the parent component instance\n * @param {?object} info about the host container\n * @param {object} context\n * @return {string} The computed markup.\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n this._rootNodeID = globalIdCounter++;\n this._domID = hostContainerInfo._idCounter++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var props = this._currentElement.props;\n\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n this._wrapperState = {\n listeners: null\n };\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'input':\n ReactDOMInput.mountWrapper(this, props, hostParent);\n props = ReactDOMInput.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trackInputValue, this);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'option':\n ReactDOMOption.mountWrapper(this, props, hostParent);\n props = ReactDOMOption.getHostProps(this, props);\n break;\n case 'select':\n ReactDOMSelect.mountWrapper(this, props, hostParent);\n props = ReactDOMSelect.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'textarea':\n ReactDOMTextarea.mountWrapper(this, props, hostParent);\n props = ReactDOMTextarea.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trackInputValue, this);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n }\n\n assertValidProps(this, props);\n\n // We create tags in the namespace of their parent container, except HTML\n // tags get no namespace.\n var namespaceURI;\n var parentTag;\n if (hostParent != null) {\n namespaceURI = hostParent._namespaceURI;\n parentTag = hostParent._tag;\n } else if (hostContainerInfo._tag) {\n namespaceURI = hostContainerInfo._namespaceURI;\n parentTag = hostContainerInfo._tag;\n }\n if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') {\n namespaceURI = DOMNamespaces.html;\n }\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'svg') {\n namespaceURI = DOMNamespaces.svg;\n } else if (this._tag === 'math') {\n namespaceURI = DOMNamespaces.mathml;\n }\n }\n this._namespaceURI = namespaceURI;\n\n if (process.env.NODE_ENV !== 'production') {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo._tag) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(this._tag, null, this, parentInfo);\n }\n this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);\n }\n\n var mountImage;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var el;\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'script') {\n // Create the script via .innerHTML so its \"parser-inserted\" flag is\n // set to true and it does not execute\n var div = ownerDocument.createElement('div');\n var type = this._currentElement.type;\n div.innerHTML = '<' + type + '></' + type + '>';\n el = div.removeChild(div.firstChild);\n } else if (props.is) {\n el = ownerDocument.createElement(this._currentElement.type, props.is);\n } else {\n // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.\n // See discussion in https://github.com/facebook/react/pull/6896\n // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n el = ownerDocument.createElement(this._currentElement.type);\n }\n } else {\n el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);\n }\n ReactDOMComponentTree.precacheNode(this, el);\n this._flags |= Flags.hasCachedChildNodes;\n if (!this._hostParent) {\n DOMPropertyOperations.setAttributeForRoot(el);\n }\n this._updateDOMProperties(null, props, transaction);\n var lazyTree = DOMLazyTree(el);\n this._createInitialChildren(transaction, props, context, lazyTree);\n mountImage = lazyTree;\n } else {\n var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);\n var tagContent = this._createContentMarkup(transaction, props, context);\n if (!tagContent && omittedCloseTags[this._tag]) {\n mountImage = tagOpen + '/>';\n } else {\n mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>';\n }\n }\n\n switch (this._tag) {\n case 'input':\n transaction.getReactMountReady().enqueue(inputPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'textarea':\n transaction.getReactMountReady().enqueue(textareaPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'select':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'button':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'option':\n transaction.getReactMountReady().enqueue(optionPostMount, this);\n break;\n }\n\n return mountImage;\n },\n\n /**\n * Creates markup for the open tag and all attributes.\n *\n * This method has side effects because events get registered.\n *\n * Iterating over object properties is faster than iterating over arrays.\n * @see http://jsperf.com/obj-vs-arr-iteration\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @return {string} Markup of opening tag.\n */\n _createOpenTagMarkupAndPutListeners: function (transaction, props) {\n var ret = '<' + this._currentElement.type;\n\n for (var propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n var propValue = props[propKey];\n if (propValue == null) {\n continue;\n }\n if (registrationNameModules.hasOwnProperty(propKey)) {\n if (propValue) {\n enqueuePutListener(this, propKey, propValue, transaction);\n }\n } else {\n if (propKey === STYLE) {\n if (propValue) {\n if (process.env.NODE_ENV !== 'production') {\n // See `_updateDOMProperties`. style block\n this._previousStyle = propValue;\n }\n propValue = this._previousStyleCopy = _assign({}, props.style);\n }\n propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);\n }\n var markup = null;\n if (this._tag != null && isCustomComponent(this._tag, props)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);\n }\n } else {\n markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);\n }\n if (markup) {\n ret += ' ' + markup;\n }\n }\n }\n\n // For static pages, no need to put React ID and checksum. Saves lots of\n // bytes.\n if (transaction.renderToStaticMarkup) {\n return ret;\n }\n\n if (!this._hostParent) {\n ret += ' ' + DOMPropertyOperations.createMarkupForRoot();\n }\n ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID);\n return ret;\n },\n\n /**\n * Creates markup for the content between the tags.\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @param {object} context\n * @return {string} Content markup.\n */\n _createContentMarkup: function (transaction, props, context) {\n var ret = '';\n\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n ret = innerHTML.__html;\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n if (contentToUse != null) {\n // TODO: Validate that text is allowed as a child of this node\n ret = escapeTextContentForBrowser(contentToUse);\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n ret = mountImages.join('');\n }\n }\n if (newlineEatingTags[this._tag] && ret.charAt(0) === '\\n') {\n // text/html ignores the first character in these tags if it's a newline\n // Prefer to break application/xml over text/html (for now) by adding\n // a newline specifically to get eaten by the parser. (Alternately for\n // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n // \\r is normalized out by HTMLTextAreaElement#value.)\n // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n return '\\n' + ret;\n } else {\n return ret;\n }\n },\n\n _createInitialChildren: function (transaction, props, context, lazyTree) {\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n // TODO: Validate that text is allowed as a child of this node\n if (contentToUse != null) {\n // Avoid setting textContent when the text is empty. In IE11 setting\n // textContent on a text area will cause the placeholder to not\n // show within the textarea until it has been focused and blurred again.\n // https://github.com/facebook/react/issues/6731#issuecomment-254874553\n if (contentToUse !== '') {\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n DOMLazyTree.queueText(lazyTree, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n for (var i = 0; i < mountImages.length; i++) {\n DOMLazyTree.queueChild(lazyTree, mountImages[i]);\n }\n }\n }\n },\n\n /**\n * Receives a next element and updates the component.\n *\n * @internal\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} context\n */\n receiveComponent: function (nextElement, transaction, context) {\n var prevElement = this._currentElement;\n this._currentElement = nextElement;\n this.updateComponent(transaction, prevElement, nextElement, context);\n },\n\n /**\n * Updates a DOM component after it has already been allocated and\n * attached to the DOM. Reconciles the root DOM node, then recurses.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevElement\n * @param {ReactElement} nextElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevElement, nextElement, context) {\n var lastProps = prevElement.props;\n var nextProps = this._currentElement.props;\n\n switch (this._tag) {\n case 'input':\n lastProps = ReactDOMInput.getHostProps(this, lastProps);\n nextProps = ReactDOMInput.getHostProps(this, nextProps);\n break;\n case 'option':\n lastProps = ReactDOMOption.getHostProps(this, lastProps);\n nextProps = ReactDOMOption.getHostProps(this, nextProps);\n break;\n case 'select':\n lastProps = ReactDOMSelect.getHostProps(this, lastProps);\n nextProps = ReactDOMSelect.getHostProps(this, nextProps);\n break;\n case 'textarea':\n lastProps = ReactDOMTextarea.getHostProps(this, lastProps);\n nextProps = ReactDOMTextarea.getHostProps(this, nextProps);\n break;\n }\n\n assertValidProps(this, nextProps);\n this._updateDOMProperties(lastProps, nextProps, transaction);\n this._updateDOMChildren(lastProps, nextProps, transaction, context);\n\n switch (this._tag) {\n case 'input':\n // Update the wrapper around inputs *after* updating props. This has to\n // happen after `_updateDOMProperties`. Otherwise HTML5 input validations\n // raise warnings and prevent the new value from being assigned.\n ReactDOMInput.updateWrapper(this);\n\n // We also check that we haven't missed a value update, such as a\n // Radio group shifting the checked value to another named radio input.\n inputValueTracking.updateValueIfChanged(this);\n break;\n case 'textarea':\n ReactDOMTextarea.updateWrapper(this);\n break;\n case 'select':\n // <select> value update needs to occur after <option> children\n // reconciliation\n transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);\n break;\n }\n },\n\n /**\n * Reconciles the properties by detecting differences in property values and\n * updating the DOM as necessary. This function is probably the single most\n * critical path for performance optimization.\n *\n * TODO: Benchmark whether checking for changed values in memory actually\n * improves performance (especially statically positioned elements).\n * TODO: Benchmark the effects of putting this at the top since 99% of props\n * do not change for a given reconciliation.\n * TODO: Benchmark areas that can be improved with caching.\n *\n * @private\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {?DOMElement} node\n */\n _updateDOMProperties: function (lastProps, nextProps, transaction) {\n var propKey;\n var styleName;\n var styleUpdates;\n for (propKey in lastProps) {\n if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n continue;\n }\n if (propKey === STYLE) {\n var lastStyle = this._previousStyleCopy;\n for (styleName in lastStyle) {\n if (lastStyle.hasOwnProperty(styleName)) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n this._previousStyleCopy = null;\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (lastProps[propKey]) {\n // Only call deleteListener if there was a listener previously or\n // else willDeleteListener gets called when there wasn't actually a\n // listener (e.g., onClick={null})\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, lastProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);\n }\n }\n for (propKey in nextProps) {\n var nextProp = nextProps[propKey];\n var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;\n if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n continue;\n }\n if (propKey === STYLE) {\n if (nextProp) {\n if (process.env.NODE_ENV !== 'production') {\n checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);\n this._previousStyle = nextProp;\n }\n nextProp = this._previousStyleCopy = _assign({}, nextProp);\n } else {\n this._previousStyleCopy = null;\n }\n if (lastProp) {\n // Unset styles on `lastProp` but not on `nextProp`.\n for (styleName in lastProp) {\n if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n // Update styles that changed since `lastProp`.\n for (styleName in nextProp) {\n if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = nextProp[styleName];\n }\n }\n } else {\n // Relies on `updateStylesByID` not mutating `styleUpdates`.\n styleUpdates = nextProp;\n }\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (nextProp) {\n enqueuePutListener(this, propKey, nextProp, transaction);\n } else if (lastProp) {\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, nextProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n var node = getNode(this);\n // If we're updating to null or undefined, we should remove the property\n // from the DOM node instead of inadvertently setting to a string. This\n // brings us in line with the same behavior we have on initial render.\n if (nextProp != null) {\n DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);\n } else {\n DOMPropertyOperations.deleteValueForProperty(node, propKey);\n }\n }\n }\n if (styleUpdates) {\n CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);\n }\n },\n\n /**\n * Reconciles the children with the various properties that affect the\n * children content.\n *\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n */\n _updateDOMChildren: function (lastProps, nextProps, transaction, context) {\n var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;\n var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;\n\n var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html;\n var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html;\n\n // Note the use of `!=` which checks for null or undefined.\n var lastChildren = lastContent != null ? null : lastProps.children;\n var nextChildren = nextContent != null ? null : nextProps.children;\n\n // If we're switching from children to content/html or vice versa, remove\n // the old content\n var lastHasContentOrHtml = lastContent != null || lastHtml != null;\n var nextHasContentOrHtml = nextContent != null || nextHtml != null;\n if (lastChildren != null && nextChildren == null) {\n this.updateChildren(null, transaction, context);\n } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {\n this.updateTextContent('');\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n }\n\n if (nextContent != null) {\n if (lastContent !== nextContent) {\n this.updateTextContent('' + nextContent);\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, nextContent);\n }\n }\n } else if (nextHtml != null) {\n if (lastHtml !== nextHtml) {\n this.updateMarkup('' + nextHtml);\n }\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n } else if (nextChildren != null) {\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, null);\n }\n\n this.updateChildren(nextChildren, transaction, context);\n }\n },\n\n getHostNode: function () {\n return getNode(this);\n },\n\n /**\n * Destroys all event registrations for this instance. Does not remove from\n * the DOM. That must be done by the parent.\n *\n * @internal\n */\n unmountComponent: function (safely) {\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n var listeners = this._wrapperState.listeners;\n if (listeners) {\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].remove();\n }\n }\n break;\n case 'input':\n case 'textarea':\n inputValueTracking.stopTracking(this);\n break;\n case 'html':\n case 'head':\n case 'body':\n /**\n * Components like <html> <head> and <body> can't be removed or added\n * easily in a cross-browser way, however it's valuable to be able to\n * take advantage of React's reconciliation for styling and <title>\n * management. So we just document it and throw in dangerous cases.\n */\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.', this._tag) : _prodInvariant('66', this._tag) : void 0;\n break;\n }\n\n this.unmountChildren(safely);\n ReactDOMComponentTree.uncacheNode(this);\n EventPluginHub.deleteAllListeners(this);\n this._rootNodeID = 0;\n this._domID = 0;\n this._wrapperState = null;\n\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, null);\n }\n },\n\n getPublicInstance: function () {\n return getNode(this);\n }\n};\n\n_assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);\n\nmodule.exports = ReactDOMComponent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar focusNode = require('fbjs/lib/focusNode');\n\nvar AutoFocusUtils = {\n focusDOMComponent: function () {\n focusNode(ReactDOMComponentTree.getNodeFromInstance(this));\n }\n};\n\nmodule.exports = AutoFocusUtils;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar CSSProperty = require('./CSSProperty');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar camelizeStyleName = require('fbjs/lib/camelizeStyleName');\nvar dangerousStyleValue = require('./dangerousStyleValue');\nvar hyphenateStyleName = require('fbjs/lib/hyphenateStyleName');\nvar memoizeStringOnly = require('fbjs/lib/memoizeStringOnly');\nvar warning = require('fbjs/lib/warning');\n\nvar processStyleName = memoizeStringOnly(function (styleName) {\n return hyphenateStyleName(styleName);\n});\n\nvar hasShorthandPropertyBug = false;\nvar styleFloatAccessor = 'cssFloat';\nif (ExecutionEnvironment.canUseDOM) {\n var tempStyle = document.createElement('div').style;\n try {\n // IE8 throws \"Invalid argument.\" if resetting shorthand style properties.\n tempStyle.font = '';\n } catch (e) {\n hasShorthandPropertyBug = true;\n }\n // IE8 only supports accessing cssFloat (standard) as styleFloat\n if (document.documentElement.style.cssFloat === undefined) {\n styleFloatAccessor = 'styleFloat';\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n // 'msTransform' is correct, but the other prefixes should be capitalized\n var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n\n // style values shouldn't contain a semicolon\n var badStyleValueWithSemicolonPattern = /;\\s*$/;\n\n var warnedStyleNames = {};\n var warnedStyleValues = {};\n var warnedForNaNValue = false;\n\n var warnHyphenatedStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;\n };\n\n var warnBadVendoredStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0;\n };\n\n var warnStyleValueWithSemicolon = function (name, value, owner) {\n if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n return;\n }\n\n warnedStyleValues[value] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, \"Style property values shouldn't contain a semicolon.%s \" + 'Try \"%s: %s\" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0;\n };\n\n var warnStyleValueIsNaN = function (name, value, owner) {\n if (warnedForNaNValue) {\n return;\n }\n\n warnedForNaNValue = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0;\n };\n\n var checkRenderMessage = function (owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n };\n\n /**\n * @param {string} name\n * @param {*} value\n * @param {ReactDOMComponent} component\n */\n var warnValidStyle = function (name, value, component) {\n var owner;\n if (component) {\n owner = component._currentElement._owner;\n }\n if (name.indexOf('-') > -1) {\n warnHyphenatedStyleName(name, owner);\n } else if (badVendoredStyleNamePattern.test(name)) {\n warnBadVendoredStyleName(name, owner);\n } else if (badStyleValueWithSemicolonPattern.test(value)) {\n warnStyleValueWithSemicolon(name, value, owner);\n }\n\n if (typeof value === 'number' && isNaN(value)) {\n warnStyleValueIsNaN(name, value, owner);\n }\n };\n}\n\n/**\n * Operations for dealing with CSS properties.\n */\nvar CSSPropertyOperations = {\n /**\n * Serializes a mapping of style properties for use as inline styles:\n *\n * > createMarkupForStyles({width: '200px', height: 0})\n * \"width:200px;height:0;\"\n *\n * Undefined values are ignored so that declarative programming is easier.\n * The result should be HTML-escaped before insertion into the DOM.\n *\n * @param {object} styles\n * @param {ReactDOMComponent} component\n * @return {?string}\n */\n createMarkupForStyles: function (styles, component) {\n var serialized = '';\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var isCustomProperty = styleName.indexOf('--') === 0;\n var styleValue = styles[styleName];\n if (process.env.NODE_ENV !== 'production') {\n if (!isCustomProperty) {\n warnValidStyle(styleName, styleValue, component);\n }\n }\n if (styleValue != null) {\n serialized += processStyleName(styleName) + ':';\n serialized += dangerousStyleValue(styleName, styleValue, component, isCustomProperty) + ';';\n }\n }\n return serialized || null;\n },\n\n /**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n * @param {ReactDOMComponent} component\n */\n setValueForStyles: function (node, styles, component) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: component._debugID,\n type: 'update styles',\n payload: styles\n });\n }\n\n var style = node.style;\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var isCustomProperty = styleName.indexOf('--') === 0;\n if (process.env.NODE_ENV !== 'production') {\n if (!isCustomProperty) {\n warnValidStyle(styleName, styles[styleName], component);\n }\n }\n var styleValue = dangerousStyleValue(styleName, styles[styleName], component, isCustomProperty);\n if (styleName === 'float' || styleName === 'cssFloat') {\n styleName = styleFloatAccessor;\n }\n if (isCustomProperty) {\n style.setProperty(styleName, styleValue);\n } else if (styleValue) {\n style[styleName] = styleValue;\n } else {\n var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];\n if (expansion) {\n // Shorthand property that IE8 won't like unsetting, so unset each\n // component to placate it\n for (var individualStyleName in expansion) {\n style[individualStyleName] = '';\n }\n } else {\n style[styleName] = '';\n }\n }\n }\n }\n};\n\nmodule.exports = CSSPropertyOperations;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n'use strict';\n\nvar camelize = require('./camelize');\n\nvar msPattern = /^-ms-/;\n\n/**\n * Camelcases a hyphenated CSS property name, for example:\n *\n * > camelizeStyleName('background-color')\n * < \"backgroundColor\"\n * > camelizeStyleName('-moz-transition')\n * < \"MozTransition\"\n * > camelizeStyleName('-ms-transition')\n * < \"msTransition\"\n *\n * As Andi Smith suggests\n * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n * is converted to lowercase `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelizeStyleName(string) {\n return camelize(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = camelizeStyleName;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar _hyphenPattern = /-(.)/g;\n\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelize(string) {\n return string.replace(_hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n}\n\nmodule.exports = camelize;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar CSSProperty = require('./CSSProperty');\nvar warning = require('fbjs/lib/warning');\n\nvar isUnitlessNumber = CSSProperty.isUnitlessNumber;\nvar styleWarnings = {};\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @param {ReactDOMComponent} component\n * @return {string} Normalized style value with dimensions applied.\n */\nfunction dangerousStyleValue(name, value, component, isCustomProperty) {\n // Note that we've removed escapeTextForBrowser() calls here since the\n // whole string will be escaped when the attribute is injected into\n // the markup. If you provide unsafe user data here they can inject\n // arbitrary CSS which may be problematic (I couldn't repro this):\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n // This is not an XSS hole but instead a potential CSS injection issue\n // which has lead to a greater discussion about how we're going to\n // trust URLs moving forward. See #2115901\n\n var isEmpty = value == null || typeof value === 'boolean' || value === '';\n if (isEmpty) {\n return '';\n }\n\n var isNonNumeric = isNaN(value);\n if (isCustomProperty || isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) {\n return '' + value; // cast to string\n }\n\n if (typeof value === 'string') {\n if (process.env.NODE_ENV !== 'production') {\n // Allow '0' to pass through without warning. 0 is already special and\n // doesn't require units, so we don't need to warn about it.\n if (component && value !== '0') {\n var owner = component._currentElement._owner;\n var ownerName = owner ? owner.getName() : null;\n if (ownerName && !styleWarnings[ownerName]) {\n styleWarnings[ownerName] = {};\n }\n var warned = false;\n if (ownerName) {\n var warnings = styleWarnings[ownerName];\n warned = warnings[name];\n if (!warned) {\n warnings[name] = true;\n }\n }\n if (!warned) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'a `%s` tag (owner: `%s`) was passed a numeric string value ' + 'for CSS property `%s` (value: `%s`) which will be treated ' + 'as a unitless number in a future version of React.', component._currentElement.type, ownerName || 'unknown', name, value) : void 0;\n }\n }\n }\n value = value.trim();\n }\n return value + 'px';\n}\n\nmodule.exports = dangerousStyleValue;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n'use strict';\n\nvar hyphenate = require('./hyphenate');\n\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = hyphenateStyleName;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n var cache = {};\n return function (string) {\n if (!cache.hasOwnProperty(string)) {\n cache[string] = callback.call(this, string);\n }\n return cache[string];\n };\n}\n\nmodule.exports = memoizeStringOnly;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\n\n/**\n * Escapes attribute value to prevent scripting attacks.\n *\n * @param {*} value Value to escape.\n * @return {string} An escaped string.\n */\nfunction quoteAttributeValueForBrowser(value) {\n return '\"' + escapeTextContentForBrowser(value) + '\"';\n}\n\nmodule.exports = quoteAttributeValueForBrowser;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\n\nfunction runEventQueueInBatch(events) {\n EventPluginHub.enqueueEvents(events);\n EventPluginHub.processEventQueue(false);\n}\n\nvar ReactEventEmitterMixin = {\n /**\n * Streams a fired top-level event to `EventPluginHub` where plugins have the\n * opportunity to create `ReactEvent`s to be dispatched.\n */\n handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n runEventQueueInBatch(events);\n }\n};\n\nmodule.exports = ReactEventEmitterMixin;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n prefixes['Moz' + styleProp] = 'moz' + eventName;\n prefixes['ms' + styleProp] = 'MS' + eventName;\n prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();\n\n return prefixes;\n}\n\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\nvar vendorPrefixes = {\n animationend: makePrefixMap('Animation', 'AnimationEnd'),\n animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n animationstart: makePrefixMap('Animation', 'AnimationStart'),\n transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\nvar prefixedEventNames = {};\n\n/**\n * Element to check for prefixes on.\n */\nvar style = {};\n\n/**\n * Bootstrap if a DOM exists.\n */\nif (ExecutionEnvironment.canUseDOM) {\n style = document.createElement('div').style;\n\n // On some platforms, in particular some releases of Android 4.x,\n // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n // style object but the events that fire will still be prefixed, so we need\n // to check if the un-prefixed events are usable, and if not remove them from the map.\n if (!('AnimationEvent' in window)) {\n delete vendorPrefixes.animationend.animation;\n delete vendorPrefixes.animationiteration.animation;\n delete vendorPrefixes.animationstart.animation;\n }\n\n // Same as above\n if (!('TransitionEvent' in window)) {\n delete vendorPrefixes.transitionend.transition;\n }\n}\n\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) {\n return prefixedEventNames[eventName];\n } else if (!vendorPrefixes[eventName]) {\n return eventName;\n }\n\n var prefixMap = vendorPrefixes[eventName];\n\n for (var styleProp in prefixMap) {\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n return prefixedEventNames[eventName] = prefixMap[styleProp];\n }\n }\n\n return '';\n}\n\nmodule.exports = getVendorPrefixedEventName;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnCheckedLink = false;\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMInput.updateWrapper(this);\n }\n}\n\nfunction isControlled(props) {\n var usesChecked = props.type === 'checkbox' || props.type === 'radio';\n return usesChecked ? props.checked != null : props.value != null;\n}\n\n/**\n * Implements an <input> host component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\nvar ReactDOMInput = {\n getHostProps: function (inst, props) {\n var value = LinkedValueUtils.getValue(props);\n var checked = LinkedValueUtils.getChecked(props);\n\n var hostProps = _assign({\n // Make sure we set .type before any other properties (setting .value\n // before .type means .value is lost in IE11 and below)\n type: undefined,\n // Make sure we set .step before .value (setting .value before .step\n // means .value is rounded on mount, based upon step precision)\n step: undefined,\n // Make sure we set .min & .max before .value (to ensure proper order\n // in corner cases such as min or max deriving from value, e.g. Issue #7170)\n min: undefined,\n max: undefined\n }, props, {\n defaultChecked: undefined,\n defaultValue: undefined,\n value: value != null ? value : inst._wrapperState.initialValue,\n checked: checked != null ? checked : inst._wrapperState.initialChecked,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);\n\n var owner = inst._currentElement._owner;\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.checkedLink !== undefined && !didWarnCheckedLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnCheckedLink = true;\n }\n if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnCheckedDefaultChecked = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnValueDefaultValue = true;\n }\n }\n\n var defaultValue = props.defaultValue;\n inst._wrapperState = {\n initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n initialValue: props.value != null ? props.value : defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n controlled: isControlled(props)\n };\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n if (process.env.NODE_ENV !== 'production') {\n var controlled = isControlled(props);\n var owner = inst._currentElement._owner;\n\n if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnUncontrolledToControlled = true;\n }\n if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnControlledToUncontrolled = true;\n }\n }\n\n // TODO: Shouldn't this be getChecked(props)?\n var checked = props.checked;\n if (checked != null) {\n DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false);\n }\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n if (value === 0 && node.value === '') {\n node.value = '0';\n // Note: IE9 reports a number inputs as 'text', so check props instead.\n } else if (props.type === 'number') {\n // Simulate `input.valueAsNumber`. IE9 does not support it\n var valueAsNumber = parseFloat(node.value, 10) || 0;\n\n if (\n // eslint-disable-next-line\n value != valueAsNumber ||\n // eslint-disable-next-line\n value == valueAsNumber && node.value != value) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n node.value = '' + value;\n }\n } else if (node.value !== '' + value) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n node.value = '' + value;\n }\n } else {\n if (props.value == null && props.defaultValue != null) {\n // In Chrome, assigning defaultValue to certain input types triggers input validation.\n // For number inputs, the display value loses trailing decimal points. For email inputs,\n // Chrome raises \"The specified value <x> is not a valid email address\".\n //\n // Here we check to see if the defaultValue has actually changed, avoiding these problems\n // when the user is inputting text\n //\n // https://github.com/facebook/react/issues/7253\n if (node.defaultValue !== '' + props.defaultValue) {\n node.defaultValue = '' + props.defaultValue;\n }\n }\n if (props.checked == null && props.defaultChecked != null) {\n node.defaultChecked = !!props.defaultChecked;\n }\n }\n },\n\n postMountWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\n // Detach value from defaultValue. We won't do anything if we're working on\n // submit or reset inputs as those values & defaultValues are linked. They\n // are not resetable nodes so this operation doesn't matter and actually\n // removes browser-default values (eg \"Submit Query\") when no value is\n // provided.\n\n switch (props.type) {\n case 'submit':\n case 'reset':\n break;\n case 'color':\n case 'date':\n case 'datetime':\n case 'datetime-local':\n case 'month':\n case 'time':\n case 'week':\n // This fixes the no-show issue on iOS Safari and Android Chrome:\n // https://github.com/facebook/react/issues/7233\n node.value = '';\n node.value = node.defaultValue;\n break;\n default:\n node.value = node.value;\n break;\n }\n\n // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n // this is needed to work around a chrome bug where setting defaultChecked\n // will sometimes influence the value of checked (even after detachment).\n // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n // We need to temporarily unset name to avoid disrupting radio button groups.\n var name = node.name;\n if (name !== '') {\n node.name = '';\n }\n node.defaultChecked = !node.defaultChecked;\n node.defaultChecked = !node.defaultChecked;\n if (name !== '') {\n node.name = name;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n // Here we use asap to wait until all updates have propagated, which\n // is important when using controlled components within layers:\n // https://github.com/facebook/react/issues/1698\n ReactUpdates.asap(forceUpdateIfMounted, this);\n\n var name = props.name;\n if (props.type === 'radio' && name != null) {\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);\n var queryRoot = rootNode;\n\n while (queryRoot.parentNode) {\n queryRoot = queryRoot.parentNode;\n }\n\n // If `rootNode.form` was non-null, then we could try `form.elements`,\n // but that sometimes behaves strangely in IE8. We could also try using\n // `form.getElementsByName`, but that will only return direct children\n // and won't include inputs that use the HTML5 `form=` attribute. Since\n // the input might not even be in a form, let's just use the global\n // `querySelectorAll` to ensure we don't miss anything.\n var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n for (var i = 0; i < group.length; i++) {\n var otherNode = group[i];\n if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n continue;\n }\n // This will throw if radio buttons rendered by different copies of React\n // and the same name are rendered into the same form (same as #1939).\n // That's probably okay; we don't support it just as we don't support\n // mixing React radio buttons with non-React ones.\n var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);\n !otherInstance ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : _prodInvariant('90') : void 0;\n // If this is a controlled radio button group, forcing the input that\n // was previously checked to update will cause it to be come re-checked\n // as appropriate.\n ReactUpdates.asap(forceUpdateIfMounted, otherInstance);\n }\n }\n\n return returnValue;\n}\n\nmodule.exports = ReactDOMInput;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar React = require('react/lib/React');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMSelect = require('./ReactDOMSelect');\n\nvar warning = require('fbjs/lib/warning');\nvar didWarnInvalidOptionChildren = false;\n\nfunction flattenChildren(children) {\n var content = '';\n\n // Flatten children and warn if they aren't strings or numbers;\n // invalid types are ignored.\n React.Children.forEach(children, function (child) {\n if (child == null) {\n return;\n }\n if (typeof child === 'string' || typeof child === 'number') {\n content += child;\n } else if (!didWarnInvalidOptionChildren) {\n didWarnInvalidOptionChildren = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0;\n }\n });\n\n return content;\n}\n\n/**\n * Implements an <option> host component that warns when `selected` is set.\n */\nvar ReactDOMOption = {\n mountWrapper: function (inst, props, hostParent) {\n // TODO (yungsters): Remove support for `selected` in <option>.\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0;\n }\n\n // Look up whether this option is 'selected'\n var selectValue = null;\n if (hostParent != null) {\n var selectParent = hostParent;\n\n if (selectParent._tag === 'optgroup') {\n selectParent = selectParent._hostParent;\n }\n\n if (selectParent != null && selectParent._tag === 'select') {\n selectValue = ReactDOMSelect.getSelectValueContext(selectParent);\n }\n }\n\n // If the value is null (e.g., no specified value or after initial mount)\n // or missing (e.g., for <datalist>), we don't change props.selected\n var selected = null;\n if (selectValue != null) {\n var value;\n if (props.value != null) {\n value = props.value + '';\n } else {\n value = flattenChildren(props.children);\n }\n selected = false;\n if (Array.isArray(selectValue)) {\n // multiple\n for (var i = 0; i < selectValue.length; i++) {\n if ('' + selectValue[i] === value) {\n selected = true;\n break;\n }\n }\n } else {\n selected = '' + selectValue === value;\n }\n }\n\n inst._wrapperState = { selected: selected };\n },\n\n postMountWrapper: function (inst) {\n // value=\"\" should make a value attribute (#6219)\n var props = inst._currentElement.props;\n if (props.value != null) {\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n node.setAttribute('value', props.value);\n }\n },\n\n getHostProps: function (inst, props) {\n var hostProps = _assign({ selected: undefined, children: undefined }, props);\n\n // Read state only from initial mount because <select> updates value\n // manually; we need the initial state only for server rendering\n if (inst._wrapperState.selected != null) {\n hostProps.selected = inst._wrapperState.selected;\n }\n\n var content = flattenChildren(props.children);\n\n if (content) {\n hostProps.children = content;\n }\n\n return hostProps;\n }\n};\n\nmodule.exports = ReactDOMOption;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnValDefaultVal = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMTextarea.updateWrapper(this);\n }\n}\n\n/**\n * Implements a <textarea> host component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\nvar ReactDOMTextarea = {\n getHostProps: function (inst, props) {\n !(props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0;\n\n // Always set children to the same thing. In IE9, the selection range will\n // get reset if `textContent` is mutated. We could add a check in setTextContent\n // to only set the value if/when the value differs from the node value (which would\n // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution.\n // The value can be a boolean or object so that's why it's forced to be a string.\n var hostProps = _assign({}, props, {\n value: undefined,\n defaultValue: undefined,\n children: '' + inst._wrapperState.initialValue,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValDefaultVal = true;\n }\n }\n\n var value = LinkedValueUtils.getValue(props);\n var initialValue = value;\n\n // Only bother fetching default value if we're going to use it\n if (value == null) {\n var defaultValue = props.defaultValue;\n // TODO (yungsters): Remove support for children content in <textarea>.\n var children = props.children;\n if (children != null) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0;\n }\n !(defaultValue == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0;\n if (Array.isArray(children)) {\n !(children.length <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0;\n children = children[0];\n }\n\n defaultValue = '' + children;\n }\n if (defaultValue == null) {\n defaultValue = '';\n }\n initialValue = defaultValue;\n }\n\n inst._wrapperState = {\n initialValue: '' + initialValue,\n listeners: null,\n onChange: _handleChange.bind(inst)\n };\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n var newValue = '' + value;\n\n // To avoid side effects (such as losing text selection), only set value if changed\n if (newValue !== node.value) {\n node.value = newValue;\n }\n if (props.defaultValue == null) {\n node.defaultValue = newValue;\n }\n }\n if (props.defaultValue != null) {\n node.defaultValue = props.defaultValue;\n }\n },\n\n postMountWrapper: function (inst) {\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var textContent = node.textContent;\n\n // Only set node.value if textContent is equal to the expected\n // initial value. In IE10/IE11 there is a bug where the placeholder attribute\n // will populate textContent as well.\n // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/\n if (textContent === inst._wrapperState.initialValue) {\n node.value = textContent;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n ReactUpdates.asap(forceUpdateIfMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMTextarea;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactChildReconciler = require('./ReactChildReconciler');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar flattenChildren = require('./flattenChildren');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Make an update for markup to be rendered and inserted at a supplied index.\n *\n * @param {string} markup Markup that renders into an element.\n * @param {number} toIndex Destination index.\n * @private\n */\nfunction makeInsertMarkup(markup, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'INSERT_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for moving an existing element to another index.\n *\n * @param {number} fromIndex Source index of the existing element.\n * @param {number} toIndex Destination index of the element.\n * @private\n */\nfunction makeMove(child, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'MOVE_EXISTING',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: ReactReconciler.getHostNode(child),\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for removing an element at an index.\n *\n * @param {number} fromIndex Index of the element to remove.\n * @private\n */\nfunction makeRemove(child, node) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'REMOVE_NODE',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: node,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the markup of a node.\n *\n * @param {string} markup Markup that renders into an element.\n * @private\n */\nfunction makeSetMarkup(markup) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'SET_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the text content.\n *\n * @param {string} textContent Text content to set.\n * @private\n */\nfunction makeTextContent(textContent) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'TEXT_CONTENT',\n content: textContent,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Push an update, if any, onto the queue. Creates a new queue if none is\n * passed and always returns the queue. Mutative.\n */\nfunction enqueue(queue, update) {\n if (update) {\n queue = queue || [];\n queue.push(update);\n }\n return queue;\n}\n\n/**\n * Processes any enqueued updates.\n *\n * @private\n */\nfunction processQueue(inst, updateQueue) {\n ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);\n}\n\nvar setChildrenForInstrumentation = emptyFunction;\nif (process.env.NODE_ENV !== 'production') {\n var getDebugID = function (inst) {\n if (!inst._debugID) {\n // Check for ART-like instances. TODO: This is silly/gross.\n var internal;\n if (internal = ReactInstanceMap.get(inst)) {\n inst = internal;\n }\n }\n return inst._debugID;\n };\n setChildrenForInstrumentation = function (children) {\n var debugID = getDebugID(this);\n // TODO: React Native empty components are also multichild.\n // This means they still get into this method but don't have _debugID.\n if (debugID !== 0) {\n ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {\n return children[key]._debugID;\n }) : []);\n }\n };\n}\n\n/**\n * ReactMultiChild are capable of reconciling multiple children.\n *\n * @class ReactMultiChild\n * @internal\n */\nvar ReactMultiChild = {\n /**\n * Provides common functionality for components that must reconcile multiple\n * children. This is used by `ReactDOMComponent` to mount, update, and\n * unmount child components.\n *\n * @lends {ReactMultiChild.prototype}\n */\n Mixin: {\n _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) {\n if (process.env.NODE_ENV !== 'production') {\n var selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n }\n }\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);\n },\n\n _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {\n var nextChildren;\n var selfDebugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n }\n }\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n },\n\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildren Nested child maps.\n * @return {array} An array of mounted representations.\n * @internal\n */\n mountChildren: function (nestedChildren, transaction, context) {\n var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);\n this._renderedChildren = children;\n\n var mountImages = [];\n var index = 0;\n for (var name in children) {\n if (children.hasOwnProperty(name)) {\n var child = children[name];\n var selfDebugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n selfDebugID = getDebugID(this);\n }\n var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);\n child._mountIndex = index++;\n mountImages.push(mountImage);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n setChildrenForInstrumentation.call(this, children);\n }\n\n return mountImages;\n },\n\n /**\n * Replaces any rendered children with a text content string.\n *\n * @param {string} nextContent String of content.\n * @internal\n */\n updateTextContent: function (nextContent) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n // Set new text content.\n var updates = [makeTextContent(nextContent)];\n processQueue(this, updates);\n },\n\n /**\n * Replaces any rendered children with a markup string.\n *\n * @param {string} nextMarkup String of markup.\n * @internal\n */\n updateMarkup: function (nextMarkup) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n var updates = [makeSetMarkup(nextMarkup)];\n processQueue(this, updates);\n },\n\n /**\n * Updates the rendered children with new children.\n *\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n updateChildren: function (nextNestedChildrenElements, transaction, context) {\n // Hook used by React ART\n this._updateChildren(nextNestedChildrenElements, transaction, context);\n },\n\n /**\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @final\n * @protected\n */\n _updateChildren: function (nextNestedChildrenElements, transaction, context) {\n var prevChildren = this._renderedChildren;\n var removedNodes = {};\n var mountImages = [];\n var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);\n if (!nextChildren && !prevChildren) {\n return;\n }\n var updates = null;\n var name;\n // `nextIndex` will increment for each child in `nextChildren`, but\n // `lastIndex` will be the last index visited in `prevChildren`.\n var nextIndex = 0;\n var lastIndex = 0;\n // `nextMountIndex` will increment for each newly mounted child.\n var nextMountIndex = 0;\n var lastPlacedNode = null;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n var prevChild = prevChildren && prevChildren[name];\n var nextChild = nextChildren[name];\n if (prevChild === nextChild) {\n updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n prevChild._mountIndex = nextIndex;\n } else {\n if (prevChild) {\n // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n // The `removedNodes` loop below will actually remove the child.\n }\n // The child must be instantiated before it's mounted.\n updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));\n nextMountIndex++;\n }\n nextIndex++;\n lastPlacedNode = ReactReconciler.getHostNode(nextChild);\n }\n // Remove children that are no longer present.\n for (name in removedNodes) {\n if (removedNodes.hasOwnProperty(name)) {\n updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));\n }\n }\n if (updates) {\n processQueue(this, updates);\n }\n this._renderedChildren = nextChildren;\n\n if (process.env.NODE_ENV !== 'production') {\n setChildrenForInstrumentation.call(this, nextChildren);\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted. It does not actually perform any\n * backend operations.\n *\n * @internal\n */\n unmountChildren: function (safely) {\n var renderedChildren = this._renderedChildren;\n ReactChildReconciler.unmountChildren(renderedChildren, safely);\n this._renderedChildren = null;\n },\n\n /**\n * Moves a child component to the supplied index.\n *\n * @param {ReactComponent} child Component to move.\n * @param {number} toIndex Destination index of the element.\n * @param {number} lastIndex Last index visited of the siblings of `child`.\n * @protected\n */\n moveChild: function (child, afterNode, toIndex, lastIndex) {\n // If the index of `child` is less than `lastIndex`, then it needs to\n // be moved. Otherwise, we do not need to move it because a child will be\n // inserted or moved before `child`.\n if (child._mountIndex < lastIndex) {\n return makeMove(child, afterNode, toIndex);\n }\n },\n\n /**\n * Creates a child component.\n *\n * @param {ReactComponent} child Component to create.\n * @param {string} mountImage Markup to insert.\n * @protected\n */\n createChild: function (child, afterNode, mountImage) {\n return makeInsertMarkup(mountImage, afterNode, child._mountIndex);\n },\n\n /**\n * Removes a child component.\n *\n * @param {ReactComponent} child Child to remove.\n * @protected\n */\n removeChild: function (child, node) {\n return makeRemove(child, node);\n },\n\n /**\n * Mounts a child with the supplied name.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to mount.\n * @param {string} name Name of the child.\n * @param {number} index Index at which to insert the child.\n * @param {ReactReconcileTransaction} transaction\n * @private\n */\n _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) {\n child._mountIndex = index;\n return this.createChild(child, afterNode, mountImage);\n },\n\n /**\n * Unmounts a rendered child.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to unmount.\n * @private\n */\n _unmountChild: function (child, node) {\n var update = this.removeChild(child, node);\n child._mountIndex = null;\n return update;\n }\n }\n};\n\nmodule.exports = ReactMultiChild;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactReconciler = require('./ReactReconciler');\n\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar traverseAllChildren = require('./traverseAllChildren');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n}\n\nfunction instantiateChild(childInstances, child, name, selfDebugID) {\n // We found a component instance.\n var keyUnique = childInstances[name] === undefined;\n if (process.env.NODE_ENV !== 'production') {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (child != null && keyUnique) {\n childInstances[name] = instantiateReactComponent(child, true);\n }\n}\n\n/**\n * ReactChildReconciler provides helpers for initializing or updating a set of\n * children. Its output is suitable for passing it onto ReactMultiChild which\n * does diffed reordering and insertion.\n */\nvar ReactChildReconciler = {\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildNodes Nested child maps.\n * @return {?object} A set of child instances.\n * @internal\n */\n instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID) // 0 in production and for roots\n {\n if (nestedChildNodes == null) {\n return null;\n }\n var childInstances = {};\n\n if (process.env.NODE_ENV !== 'production') {\n traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {\n return instantiateChild(childInsts, child, name, selfDebugID);\n }, childInstances);\n } else {\n traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);\n }\n return childInstances;\n },\n\n /**\n * Updates the rendered children and returns a new set of children.\n *\n * @param {?object} prevChildren Previously initialized set of children.\n * @param {?object} nextChildren Flat child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @return {?object} A new set of child instances.\n * @internal\n */\n updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID) // 0 in production and for roots\n {\n // We currently don't have a way to track moves here but if we use iterators\n // instead of for..in we can zip the iterators and check if an item has\n // moved.\n // TODO: If nothing has changed, return the prevChildren object so that we\n // can quickly bailout if nothing has changed.\n if (!nextChildren && !prevChildren) {\n return;\n }\n var name;\n var prevChild;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n prevChild = prevChildren && prevChildren[name];\n var prevElement = prevChild && prevChild._currentElement;\n var nextElement = nextChildren[name];\n if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) {\n ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);\n nextChildren[name] = prevChild;\n } else {\n if (prevChild) {\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n // The child must be instantiated before it's mounted.\n var nextChildInstance = instantiateReactComponent(nextElement, true);\n nextChildren[name] = nextChildInstance;\n // Creating mount image now ensures refs are resolved in right order\n // (see https://github.com/facebook/react/pull/7101 for explanation).\n var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);\n mountImages.push(nextChildMountImage);\n }\n }\n // Unmount children that are no longer present.\n for (name in prevChildren) {\n if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {\n prevChild = prevChildren[name];\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted.\n *\n * @param {?object} renderedChildren Previously initialized set of children.\n * @internal\n */\n unmountChildren: function (renderedChildren, safely) {\n for (var name in renderedChildren) {\n if (renderedChildren.hasOwnProperty(name)) {\n var renderedChild = renderedChildren[name];\n ReactReconciler.unmountComponent(renderedChild, safely);\n }\n }\n }\n};\n\nmodule.exports = ReactChildReconciler;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar React = require('react/lib/React');\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactErrorUtils = require('./ReactErrorUtils');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactNodeTypes = require('./ReactNodeTypes');\nvar ReactReconciler = require('./ReactReconciler');\n\nif (process.env.NODE_ENV !== 'production') {\n var checkReactTypeSpec = require('./checkReactTypeSpec');\n}\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar warning = require('fbjs/lib/warning');\n\nvar CompositeTypes = {\n ImpureClass: 0,\n PureClass: 1,\n StatelessFunctional: 2\n};\n\nfunction StatelessComponent(Component) {}\nStatelessComponent.prototype.render = function () {\n var Component = ReactInstanceMap.get(this)._currentElement.type;\n var element = Component(this.props, this.context, this.updater);\n warnIfInvalidElement(Component, element);\n return element;\n};\n\nfunction warnIfInvalidElement(Component, element) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(element === null || element === false || React.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0;\n }\n}\n\nfunction shouldConstruct(Component) {\n return !!(Component.prototype && Component.prototype.isReactComponent);\n}\n\nfunction isPureComponent(Component) {\n return !!(Component.prototype && Component.prototype.isPureReactComponent);\n}\n\n// Separated into a function to contain deoptimizations caused by try/finally.\nfunction measureLifeCyclePerf(fn, debugID, timerType) {\n if (debugID === 0) {\n // Top-level wrappers (see ReactMount) and empty components (see\n // ReactDOMEmptyComponent) are invisible to hooks and devtools.\n // Both are implementation details that should go away in the future.\n return fn();\n }\n\n ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);\n try {\n return fn();\n } finally {\n ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);\n }\n}\n\n/**\n * ------------------ The Life-Cycle of a Composite Component ------------------\n *\n * - constructor: Initialization of state. The instance is now retained.\n * - componentWillMount\n * - render\n * - [children's constructors]\n * - [children's componentWillMount and render]\n * - [children's componentDidMount]\n * - componentDidMount\n *\n * Update Phases:\n * - componentWillReceiveProps (only called if parent updated)\n * - shouldComponentUpdate\n * - componentWillUpdate\n * - render\n * - [children's constructors or receive props phases]\n * - componentDidUpdate\n *\n * - componentWillUnmount\n * - [children's componentWillUnmount]\n * - [children destroyed]\n * - (destroyed): The instance is now blank, released by React and ready for GC.\n *\n * -----------------------------------------------------------------------------\n */\n\n/**\n * An incrementing ID assigned to each component when it is mounted. This is\n * used to enforce the order in which `ReactUpdates` updates dirty components.\n *\n * @private\n */\nvar nextMountID = 1;\n\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\nvar ReactCompositeComponent = {\n /**\n * Base constructor for all composite component.\n *\n * @param {ReactElement} element\n * @final\n * @internal\n */\n construct: function (element) {\n this._currentElement = element;\n this._rootNodeID = 0;\n this._compositeType = null;\n this._instance = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n\n // See ReactUpdateQueue\n this._updateBatchNumber = null;\n this._pendingElement = null;\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._context = null;\n this._mountOrder = 0;\n this._topLevelWrapper = null;\n\n // See ReactUpdates and ReactUpdateQueue.\n this._pendingCallbacks = null;\n\n // ComponentWillUnmount shall only be called once\n this._calledComponentWillUnmount = false;\n\n if (process.env.NODE_ENV !== 'production') {\n this._warnedAboutRefsInRender = false;\n }\n },\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} hostParent\n * @param {?object} hostContainerInfo\n * @param {?object} context\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var _this = this;\n\n this._context = context;\n this._mountOrder = nextMountID++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var publicProps = this._currentElement.props;\n var publicContext = this._processContext(context);\n\n var Component = this._currentElement.type;\n\n var updateQueue = transaction.getUpdateQueue();\n\n // Initialize the public class\n var doConstruct = shouldConstruct(Component);\n var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);\n var renderedElement;\n\n // Support functional components\n if (!doConstruct && (inst == null || inst.render == null)) {\n renderedElement = inst;\n warnIfInvalidElement(Component, renderedElement);\n !(inst === null || inst === false || React.isValidElement(inst)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : _prodInvariant('105', Component.displayName || Component.name || 'Component') : void 0;\n inst = new StatelessComponent(Component);\n this._compositeType = CompositeTypes.StatelessFunctional;\n } else {\n if (isPureComponent(Component)) {\n this._compositeType = CompositeTypes.PureClass;\n } else {\n this._compositeType = CompositeTypes.ImpureClass;\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This will throw later in _renderValidatedComponent, but add an early\n // warning now to help debugging\n if (inst.render == null) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0;\n }\n\n var propsMutated = inst.props !== publicProps;\n var componentName = Component.displayName || Component.name || 'Component';\n\n process.env.NODE_ENV !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + \"up the same props that your component's constructor was passed.\", componentName, componentName) : void 0;\n }\n\n // These should be set up in the constructor, but as a convenience for\n // simpler class abstractions, we set them up after the fact.\n inst.props = publicProps;\n inst.context = publicContext;\n inst.refs = emptyObject;\n inst.updater = updateQueue;\n\n this._instance = inst;\n\n // Store a reference from the instance back to the internal representation\n ReactInstanceMap.set(inst, this);\n\n if (process.env.NODE_ENV !== 'production') {\n // Since plain JS classes are defined without any special initialization\n // logic, we can not catch common errors early. Therefore, we have to\n // catch them here, at initialization time, instead.\n process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved || inst.state, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;\n }\n\n var initialState = inst.state;\n if (initialState === undefined) {\n inst.state = initialState = null;\n }\n !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0;\n\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n var markup;\n if (inst.unstable_handleError) {\n markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } else {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n\n if (inst.componentDidMount) {\n if (process.env.NODE_ENV !== 'production') {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(function () {\n return inst.componentDidMount();\n }, _this._debugID, 'componentDidMount');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n }\n }\n\n return markup;\n },\n\n _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) {\n if (process.env.NODE_ENV !== 'production' && !doConstruct) {\n ReactCurrentOwner.current = this;\n try {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n }\n },\n\n _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) {\n var Component = this._currentElement.type;\n\n if (doConstruct) {\n if (process.env.NODE_ENV !== 'production') {\n return measureLifeCyclePerf(function () {\n return new Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'ctor');\n } else {\n return new Component(publicProps, publicContext, updateQueue);\n }\n }\n\n // This can still be an instance in case of factory components\n // but we'll count this as time spent rendering as the more common case.\n if (process.env.NODE_ENV !== 'production') {\n return measureLifeCyclePerf(function () {\n return Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'render');\n } else {\n return Component(publicProps, publicContext, updateQueue);\n }\n },\n\n performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var markup;\n var checkpoint = transaction.checkpoint();\n try {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } catch (e) {\n // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint\n transaction.rollback(checkpoint);\n this._instance.unstable_handleError(e);\n if (this._pendingStateQueue) {\n this._instance.state = this._processPendingState(this._instance.props, this._instance.context);\n }\n checkpoint = transaction.checkpoint();\n\n this._renderedComponent.unmountComponent(true);\n transaction.rollback(checkpoint);\n\n // Try again - we've informed the component about the error, so they can render an error message this time.\n // If this throws again, the error will bubble up (and can be caught by a higher error boundary).\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n return markup;\n },\n\n performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var inst = this._instance;\n\n var debugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n debugID = this._debugID;\n }\n\n if (inst.componentWillMount) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillMount();\n }, debugID, 'componentWillMount');\n } else {\n inst.componentWillMount();\n }\n // When mounting, calls to `setState` by `componentWillMount` will set\n // `this._pendingStateQueue` without triggering a re-render.\n if (this._pendingStateQueue) {\n inst.state = this._processPendingState(inst.props, inst.context);\n }\n }\n\n // If not a stateless component, we now render\n if (renderedElement === undefined) {\n renderedElement = this._renderValidatedComponent();\n }\n\n var nodeType = ReactNodeTypes.getType(renderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);\n\n if (process.env.NODE_ENV !== 'production') {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n return markup;\n },\n\n getHostNode: function () {\n return ReactReconciler.getHostNode(this._renderedComponent);\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function (safely) {\n if (!this._renderedComponent) {\n return;\n }\n\n var inst = this._instance;\n\n if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {\n inst._calledComponentWillUnmount = true;\n\n if (safely) {\n var name = this.getName() + '.componentWillUnmount()';\n ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));\n } else {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillUnmount();\n }, this._debugID, 'componentWillUnmount');\n } else {\n inst.componentWillUnmount();\n }\n }\n }\n\n if (this._renderedComponent) {\n ReactReconciler.unmountComponent(this._renderedComponent, safely);\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._instance = null;\n }\n\n // Reset pending fields\n // Even if this component is scheduled for another update in ReactUpdates,\n // it would still be ignored because these fields are reset.\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n this._pendingCallbacks = null;\n this._pendingElement = null;\n\n // These fields do not really need to be reset since this object is no\n // longer accessible.\n this._context = null;\n this._rootNodeID = 0;\n this._topLevelWrapper = null;\n\n // Delete the reference from the instance to this internal representation\n // which allow the internals to be properly cleaned up even if the user\n // leaks a reference to the public instance.\n ReactInstanceMap.remove(inst);\n\n // Some existing components rely on inst.props even after they've been\n // destroyed (in event handlers).\n // TODO: inst.props = null;\n // TODO: inst.state = null;\n // TODO: inst.context = null;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _maskContext: function (context) {\n var Component = this._currentElement.type;\n var contextTypes = Component.contextTypes;\n if (!contextTypes) {\n return emptyObject;\n }\n var maskedContext = {};\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n return maskedContext;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`, and asserts that they are valid.\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _processContext: function (context) {\n var maskedContext = this._maskContext(context);\n if (process.env.NODE_ENV !== 'production') {\n var Component = this._currentElement.type;\n if (Component.contextTypes) {\n this._checkContextTypes(Component.contextTypes, maskedContext, 'context');\n }\n }\n return maskedContext;\n },\n\n /**\n * @param {object} currentContext\n * @return {object}\n * @private\n */\n _processChildContext: function (currentContext) {\n var Component = this._currentElement.type;\n var inst = this._instance;\n var childContext;\n\n if (inst.getChildContext) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onBeginProcessingChildContext();\n try {\n childContext = inst.getChildContext();\n } finally {\n ReactInstrumentation.debugTool.onEndProcessingChildContext();\n }\n } else {\n childContext = inst.getChildContext();\n }\n }\n\n if (childContext) {\n !(typeof Component.childContextTypes === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0;\n if (process.env.NODE_ENV !== 'production') {\n this._checkContextTypes(Component.childContextTypes, childContext, 'child context');\n }\n for (var name in childContext) {\n !(name in Component.childContextTypes) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0;\n }\n return _assign({}, currentContext, childContext);\n }\n return currentContext;\n },\n\n /**\n * Assert that the context types are valid\n *\n * @param {object} typeSpecs Map of context field to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n _checkContextTypes: function (typeSpecs, values, location) {\n if (process.env.NODE_ENV !== 'production') {\n checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);\n }\n },\n\n receiveComponent: function (nextElement, transaction, nextContext) {\n var prevElement = this._currentElement;\n var prevContext = this._context;\n\n this._pendingElement = null;\n\n this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);\n },\n\n /**\n * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n * is set, update the component.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function (transaction) {\n if (this._pendingElement != null) {\n ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);\n } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);\n } else {\n this._updateBatchNumber = null;\n }\n },\n\n /**\n * Perform an update to a mounted component. The componentWillReceiveProps and\n * shouldComponentUpdate methods are called, then (assuming the update isn't\n * skipped) the remaining update lifecycle methods are called and the DOM\n * representation is updated.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevParentElement\n * @param {ReactElement} nextParentElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {\n var inst = this._instance;\n !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Attempted to update component `%s` that has already been unmounted (or failed to mount).', this.getName() || 'ReactCompositeComponent') : _prodInvariant('136', this.getName() || 'ReactCompositeComponent') : void 0;\n\n var willReceive = false;\n var nextContext;\n\n // Determine if the context has changed or not\n if (this._context === nextUnmaskedContext) {\n nextContext = inst.context;\n } else {\n nextContext = this._processContext(nextUnmaskedContext);\n willReceive = true;\n }\n\n var prevProps = prevParentElement.props;\n var nextProps = nextParentElement.props;\n\n // Not a simple state update but a props update\n if (prevParentElement !== nextParentElement) {\n willReceive = true;\n }\n\n // An update here will schedule an update but immediately set\n // _pendingStateQueue which will ensure that any state updates gets\n // immediately reconciled instead of waiting for the next batch.\n if (willReceive && inst.componentWillReceiveProps) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillReceiveProps(nextProps, nextContext);\n }, this._debugID, 'componentWillReceiveProps');\n } else {\n inst.componentWillReceiveProps(nextProps, nextContext);\n }\n }\n\n var nextState = this._processPendingState(nextProps, nextContext);\n var shouldUpdate = true;\n\n if (!this._pendingForceUpdate) {\n if (inst.shouldComponentUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n shouldUpdate = measureLifeCyclePerf(function () {\n return inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'shouldComponentUpdate');\n } else {\n shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }\n } else {\n if (this._compositeType === CompositeTypes.PureClass) {\n shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);\n }\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0;\n }\n\n this._updateBatchNumber = null;\n if (shouldUpdate) {\n this._pendingForceUpdate = false;\n // Will set `this.props`, `this.state` and `this.context`.\n this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state but we shortcut the rest of the update.\n this._currentElement = nextParentElement;\n this._context = nextUnmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n }\n },\n\n _processPendingState: function (props, context) {\n var inst = this._instance;\n var queue = this._pendingStateQueue;\n var replace = this._pendingReplaceState;\n this._pendingReplaceState = false;\n this._pendingStateQueue = null;\n\n if (!queue) {\n return inst.state;\n }\n\n if (replace && queue.length === 1) {\n return queue[0];\n }\n\n var nextState = _assign({}, replace ? queue[0] : inst.state);\n for (var i = replace ? 1 : 0; i < queue.length; i++) {\n var partial = queue[i];\n _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial);\n }\n\n return nextState;\n },\n\n /**\n * Merges new props and state, notifies delegate methods of update and\n * performs update.\n *\n * @param {ReactElement} nextElement Next element\n * @param {object} nextProps Next public object to set as properties.\n * @param {?object} nextState Next object to set as state.\n * @param {?object} nextContext Next public object to set as context.\n * @param {ReactReconcileTransaction} transaction\n * @param {?object} unmaskedContext\n * @private\n */\n _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {\n var _this2 = this;\n\n var inst = this._instance;\n\n var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);\n var prevProps;\n var prevState;\n var prevContext;\n if (hasComponentDidUpdate) {\n prevProps = inst.props;\n prevState = inst.state;\n prevContext = inst.context;\n }\n\n if (inst.componentWillUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'componentWillUpdate');\n } else {\n inst.componentWillUpdate(nextProps, nextState, nextContext);\n }\n }\n\n this._currentElement = nextElement;\n this._context = unmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n\n this._updateRenderedComponent(transaction, unmaskedContext);\n\n if (hasComponentDidUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);\n }\n }\n },\n\n /**\n * Call the component's `render` method and update the DOM accordingly.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n _updateRenderedComponent: function (transaction, context) {\n var prevComponentInstance = this._renderedComponent;\n var prevRenderedElement = prevComponentInstance._currentElement;\n var nextRenderedElement = this._renderValidatedComponent();\n\n var debugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n debugID = this._debugID;\n }\n\n if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));\n } else {\n var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);\n ReactReconciler.unmountComponent(prevComponentInstance, false);\n\n var nodeType = ReactNodeTypes.getType(nextRenderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID);\n\n if (process.env.NODE_ENV !== 'production') {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);\n }\n },\n\n /**\n * Overridden in shallow rendering.\n *\n * @protected\n */\n _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) {\n ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);\n },\n\n /**\n * @protected\n */\n _renderValidatedComponentWithoutOwnerOrContext: function () {\n var inst = this._instance;\n var renderedElement;\n\n if (process.env.NODE_ENV !== 'production') {\n renderedElement = measureLifeCyclePerf(function () {\n return inst.render();\n }, this._debugID, 'render');\n } else {\n renderedElement = inst.render();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (renderedElement === undefined && inst.render._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n renderedElement = null;\n }\n }\n\n return renderedElement;\n },\n\n /**\n * @private\n */\n _renderValidatedComponent: function () {\n var renderedElement;\n if (process.env.NODE_ENV !== 'production' || this._compositeType !== CompositeTypes.StatelessFunctional) {\n ReactCurrentOwner.current = this;\n try {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n }\n !(\n // TODO: An `isValidNode` function would probably be more appropriate\n renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : _prodInvariant('109', this.getName() || 'ReactCompositeComponent') : void 0;\n\n return renderedElement;\n },\n\n /**\n * Lazily allocates the refs object and stores `component` as `ref`.\n *\n * @param {string} ref Reference name.\n * @param {component} component Component to store as `ref`.\n * @final\n * @private\n */\n attachRef: function (ref, component) {\n var inst = this.getPublicInstance();\n !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0;\n var publicComponentInstance = component.getPublicInstance();\n if (process.env.NODE_ENV !== 'production') {\n var componentName = component && component.getName ? component.getName() : 'a component';\n process.env.NODE_ENV !== 'production' ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, 'Stateless function components cannot be given refs ' + '(See ref \"%s\" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : void 0;\n }\n var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;\n refs[ref] = publicComponentInstance;\n },\n\n /**\n * Detaches a reference name.\n *\n * @param {string} ref Name to dereference.\n * @final\n * @private\n */\n detachRef: function (ref) {\n var refs = this.getPublicInstance().refs;\n delete refs[ref];\n },\n\n /**\n * Get a text description of the component that can be used to identify it\n * in error messages.\n * @return {string} The name or null.\n * @internal\n */\n getName: function () {\n var type = this._currentElement.type;\n var constructor = this._instance && this._instance.constructor;\n return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null;\n },\n\n /**\n * Get the publicly accessible representation of this component - i.e. what\n * is exposed by refs and returned by render. Can be null for stateless\n * components.\n *\n * @return {ReactComponent} the public component instance.\n * @internal\n */\n getPublicInstance: function () {\n var inst = this._instance;\n if (this._compositeType === CompositeTypes.StatelessFunctional) {\n return null;\n }\n return inst;\n },\n\n // Stub\n _instantiateReactComponent: null\n};\n\nmodule.exports = ReactCompositeComponent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar nextDebugID = 1;\n\nfunction getNextDebugID() {\n return nextDebugID++;\n}\n\nmodule.exports = getNextDebugID;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar traverseAllChildren = require('./traverseAllChildren');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n}\n\n/**\n * @param {function} traverseContext Context passed through traversal.\n * @param {?ReactComponent} child React child component.\n * @param {!string} name String name of key path to child.\n * @param {number=} selfDebugID Optional debugID of the current internal instance.\n */\nfunction flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) {\n // We found a component instance.\n if (traverseContext && typeof traverseContext === 'object') {\n var result = traverseContext;\n var keyUnique = result[name] === undefined;\n if (process.env.NODE_ENV !== 'production') {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (keyUnique && child != null) {\n result[name] = child;\n }\n }\n}\n\n/**\n * Flattens children that are typically specified as `props.children`. Any null\n * children will not be included in the resulting object.\n * @return {!object} flattened children keyed by name.\n */\nfunction flattenChildren(children, selfDebugID) {\n if (children == null) {\n return children;\n }\n var result = {};\n\n if (process.env.NODE_ENV !== 'production') {\n traverseAllChildren(children, function (traverseContext, child, name) {\n return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID);\n }, result);\n } else {\n traverseAllChildren(children, flattenSingleChildIntoContext, result);\n }\n return result;\n}\n\nmodule.exports = flattenChildren;","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\n\nvar warning = require('fbjs/lib/warning');\n\nfunction warnNoop(publicInstance, callerName) {\n if (process.env.NODE_ENV !== 'production') {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the update queue used for server rendering.\n * It delegates to ReactUpdateQueue while server rendering is in progress and\n * switches to ReactNoopUpdateQueue after the transaction has completed.\n * @class ReactServerUpdateQueue\n * @param {Transaction} transaction\n */\n\nvar ReactServerUpdateQueue = function () {\n function ReactServerUpdateQueue(transaction) {\n _classCallCheck(this, ReactServerUpdateQueue);\n\n this.transaction = transaction;\n }\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n\n\n ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) {\n return false;\n };\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName);\n }\n };\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueForceUpdate(publicInstance);\n } else {\n warnNoop(publicInstance, 'forceUpdate');\n }\n };\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} completeState Next state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState);\n } else {\n warnNoop(publicInstance, 'replaceState');\n }\n };\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} partialState Next partial state to be merged with state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueSetState(publicInstance, partialState);\n } else {\n warnNoop(publicInstance, 'setState');\n }\n };\n\n return ReactServerUpdateQueue;\n}();\n\nmodule.exports = ReactServerUpdateQueue;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactDOMEmptyComponent = function (instantiate) {\n // ReactCompositeComponent uses this:\n this._currentElement = null;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n this._domID = 0;\n};\n_assign(ReactDOMEmptyComponent.prototype, {\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var domID = hostContainerInfo._idCounter++;\n this._domID = domID;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var nodeValue = ' react-empty: ' + this._domID + ' ';\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var node = ownerDocument.createComment(nodeValue);\n ReactDOMComponentTree.precacheNode(this, node);\n return DOMLazyTree(node);\n } else {\n if (transaction.renderToStaticMarkup) {\n // Normally we'd insert a comment node, but since this is a situation\n // where React won't take over (static pages), we can simply return\n // nothing.\n return '';\n }\n return '<!--' + nodeValue + '-->';\n }\n },\n receiveComponent: function () {},\n getHostNode: function () {\n return ReactDOMComponentTree.getNodeFromInstance(this);\n },\n unmountComponent: function () {\n ReactDOMComponentTree.uncacheNode(this);\n }\n});\n\nmodule.exports = ReactDOMEmptyComponent;","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\nfunction getLowestCommonAncestor(instA, instB) {\n !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n var depthA = 0;\n for (var tempA = instA; tempA; tempA = tempA._hostParent) {\n depthA++;\n }\n var depthB = 0;\n for (var tempB = instB; tempB; tempB = tempB._hostParent) {\n depthB++;\n }\n\n // If A is deeper, crawl up.\n while (depthA - depthB > 0) {\n instA = instA._hostParent;\n depthA--;\n }\n\n // If B is deeper, crawl up.\n while (depthB - depthA > 0) {\n instB = instB._hostParent;\n depthB--;\n }\n\n // Walk in lockstep until we find a match.\n var depth = depthA;\n while (depth--) {\n if (instA === instB) {\n return instA;\n }\n instA = instA._hostParent;\n instB = instB._hostParent;\n }\n return null;\n}\n\n/**\n * Return if A is an ancestor of B.\n */\nfunction isAncestor(instA, instB) {\n !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n\n while (instB) {\n if (instB === instA) {\n return true;\n }\n instB = instB._hostParent;\n }\n return false;\n}\n\n/**\n * Return the parent instance of the passed-in instance.\n */\nfunction getParentInstance(inst) {\n !('_hostNode' in inst) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getParentInstance: Invalid argument.') : _prodInvariant('36') : void 0;\n\n return inst._hostParent;\n}\n\n/**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n */\nfunction traverseTwoPhase(inst, fn, arg) {\n var path = [];\n while (inst) {\n path.push(inst);\n inst = inst._hostParent;\n }\n var i;\n for (i = path.length; i-- > 0;) {\n fn(path[i], 'captured', arg);\n }\n for (i = 0; i < path.length; i++) {\n fn(path[i], 'bubbled', arg);\n }\n}\n\n/**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * Does not invoke the callback on the nearest common ancestor because nothing\n * \"entered\" or \"left\" that element.\n */\nfunction traverseEnterLeave(from, to, fn, argFrom, argTo) {\n var common = from && to ? getLowestCommonAncestor(from, to) : null;\n var pathFrom = [];\n while (from && from !== common) {\n pathFrom.push(from);\n from = from._hostParent;\n }\n var pathTo = [];\n while (to && to !== common) {\n pathTo.push(to);\n to = to._hostParent;\n }\n var i;\n for (i = 0; i < pathFrom.length; i++) {\n fn(pathFrom[i], 'bubbled', argFrom);\n }\n for (i = pathTo.length; i-- > 0;) {\n fn(pathTo[i], 'captured', argTo);\n }\n}\n\nmodule.exports = {\n isAncestor: isAncestor,\n getLowestCommonAncestor: getLowestCommonAncestor,\n getParentInstance: getParentInstance,\n traverseTwoPhase: traverseTwoPhase,\n traverseEnterLeave: traverseEnterLeave\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar invariant = require('fbjs/lib/invariant');\nvar validateDOMNesting = require('./validateDOMNesting');\n\n/**\n * Text nodes violate a couple assumptions that React makes about components:\n *\n * - When mounting text into the DOM, adjacent text nodes are merged.\n * - Text nodes cannot be assigned a React root ID.\n *\n * This component is used to wrap strings between comment nodes so that they\n * can undergo the same reconciliation that is applied to elements.\n *\n * TODO: Investigate representing React components in the DOM with text nodes.\n *\n * @class ReactDOMTextComponent\n * @extends ReactComponent\n * @internal\n */\nvar ReactDOMTextComponent = function (text) {\n // TODO: This is really a ReactText (ReactNode), not a ReactElement\n this._currentElement = text;\n this._stringText = '' + text;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n\n // Properties\n this._domID = 0;\n this._mountIndex = 0;\n this._closingComment = null;\n this._commentNodes = null;\n};\n\n_assign(ReactDOMTextComponent.prototype, {\n /**\n * Creates the markup for this text node. This node is not intended to have\n * any features besides containing text content.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {string} Markup for this text node.\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n if (process.env.NODE_ENV !== 'production') {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo != null) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(null, this._stringText, this, parentInfo);\n }\n }\n\n var domID = hostContainerInfo._idCounter++;\n var openingValue = ' react-text: ' + domID + ' ';\n var closingValue = ' /react-text ';\n this._domID = domID;\n this._hostParent = hostParent;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var openingComment = ownerDocument.createComment(openingValue);\n var closingComment = ownerDocument.createComment(closingValue);\n var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment());\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment));\n if (this._stringText) {\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText)));\n }\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment));\n ReactDOMComponentTree.precacheNode(this, openingComment);\n this._closingComment = closingComment;\n return lazyTree;\n } else {\n var escapedText = escapeTextContentForBrowser(this._stringText);\n\n if (transaction.renderToStaticMarkup) {\n // Normally we'd wrap this between comment nodes for the reasons stated\n // above, but since this is a situation where React won't take over\n // (static pages), we can simply return the text as it is.\n return escapedText;\n }\n\n return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->';\n }\n },\n\n /**\n * Updates this component by updating the text content.\n *\n * @param {ReactText} nextText The next text content\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n receiveComponent: function (nextText, transaction) {\n if (nextText !== this._currentElement) {\n this._currentElement = nextText;\n var nextStringText = '' + nextText;\n if (nextStringText !== this._stringText) {\n // TODO: Save this as pending props and use performUpdateIfNecessary\n // and/or updateComponent to do the actual update for consistency with\n // other component types?\n this._stringText = nextStringText;\n var commentNodes = this.getHostNode();\n DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);\n }\n }\n },\n\n getHostNode: function () {\n var hostNode = this._commentNodes;\n if (hostNode) {\n return hostNode;\n }\n if (!this._closingComment) {\n var openingComment = ReactDOMComponentTree.getNodeFromInstance(this);\n var node = openingComment.nextSibling;\n while (true) {\n !(node != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Missing closing comment for text component %s', this._domID) : _prodInvariant('67', this._domID) : void 0;\n if (node.nodeType === 8 && node.nodeValue === ' /react-text ') {\n this._closingComment = node;\n break;\n }\n node = node.nextSibling;\n }\n }\n hostNode = [this._hostNode, this._closingComment];\n this._commentNodes = hostNode;\n return hostNode;\n },\n\n unmountComponent: function () {\n this._closingComment = null;\n this._commentNodes = null;\n ReactDOMComponentTree.uncacheNode(this);\n }\n});\n\nmodule.exports = ReactDOMTextComponent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar EventListener = require('fbjs/lib/EventListener');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar PooledClass = require('./PooledClass');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar getEventTarget = require('./getEventTarget');\nvar getUnboundedScrollPosition = require('fbjs/lib/getUnboundedScrollPosition');\n\n/**\n * Find the deepest React component completely containing the root of the\n * passed-in instance (for use when entire React trees are nested within each\n * other). If React trees are not nested, returns null.\n */\nfunction findParent(inst) {\n // TODO: It may be a good idea to cache this to prevent unnecessary DOM\n // traversal, but caching is difficult to do correctly without using a\n // mutation observer to listen for all DOM changes.\n while (inst._hostParent) {\n inst = inst._hostParent;\n }\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);\n var container = rootNode.parentNode;\n return ReactDOMComponentTree.getClosestInstanceFromNode(container);\n}\n\n// Used to store ancestor hierarchy in top level callback\nfunction TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {\n this.topLevelType = topLevelType;\n this.nativeEvent = nativeEvent;\n this.ancestors = [];\n}\n_assign(TopLevelCallbackBookKeeping.prototype, {\n destructor: function () {\n this.topLevelType = null;\n this.nativeEvent = null;\n this.ancestors.length = 0;\n }\n});\nPooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);\n\nfunction handleTopLevelImpl(bookKeeping) {\n var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);\n var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget);\n\n // Loop through the hierarchy, in case there's any nested components.\n // It's important that we build the array of ancestors before calling any\n // event handlers, because event handlers can modify the DOM, leading to\n // inconsistencies with ReactMount's node cache. See #1105.\n var ancestor = targetInst;\n do {\n bookKeeping.ancestors.push(ancestor);\n ancestor = ancestor && findParent(ancestor);\n } while (ancestor);\n\n for (var i = 0; i < bookKeeping.ancestors.length; i++) {\n targetInst = bookKeeping.ancestors[i];\n ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));\n }\n}\n\nfunction scrollValueMonitor(cb) {\n var scrollPosition = getUnboundedScrollPosition(window);\n cb(scrollPosition);\n}\n\nvar ReactEventListener = {\n _enabled: true,\n _handleTopLevel: null,\n\n WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,\n\n setHandleTopLevel: function (handleTopLevel) {\n ReactEventListener._handleTopLevel = handleTopLevel;\n },\n\n setEnabled: function (enabled) {\n ReactEventListener._enabled = !!enabled;\n },\n\n isEnabled: function () {\n return ReactEventListener._enabled;\n },\n\n /**\n * Traps top-level events by using event bubbling.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapBubbledEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n /**\n * Traps a top-level event by using event capturing.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapCapturedEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n monitorScrollValue: function (refresh) {\n var callback = scrollValueMonitor.bind(null, refresh);\n EventListener.listen(window, 'scroll', callback);\n },\n\n dispatchEvent: function (topLevelType, nativeEvent) {\n if (!ReactEventListener._enabled) {\n return;\n }\n\n var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);\n try {\n // Event queue being processed in the same cycle allows\n // `preventDefault`.\n ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);\n } finally {\n TopLevelCallbackBookKeeping.release(bookKeeping);\n }\n }\n};\n\nmodule.exports = ReactEventListener;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n'use strict';\n\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n return {\n x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft,\n y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop\n };\n }\n return {\n x: scrollable.scrollLeft,\n y: scrollable.scrollTop\n };\n}\n\nmodule.exports = getUnboundedScrollPosition;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginUtils = require('./EventPluginUtils');\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactEmptyComponent = require('./ReactEmptyComponent');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactHostComponent = require('./ReactHostComponent');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar ReactInjection = {\n Component: ReactComponentEnvironment.injection,\n DOMProperty: DOMProperty.injection,\n EmptyComponent: ReactEmptyComponent.injection,\n EventPluginHub: EventPluginHub.injection,\n EventPluginUtils: EventPluginUtils.injection,\n EventEmitter: ReactBrowserEventEmitter.injection,\n HostComponent: ReactHostComponent.injection,\n Updates: ReactUpdates.injection\n};\n\nmodule.exports = ReactInjection;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar CallbackQueue = require('./CallbackQueue');\nvar PooledClass = require('./PooledClass');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactInputSelection = require('./ReactInputSelection');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar Transaction = require('./Transaction');\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\n\n/**\n * Ensures that, when possible, the selection range (currently selected text\n * input) is not disturbed by performing the transaction.\n */\nvar SELECTION_RESTORATION = {\n /**\n * @return {Selection} Selection information.\n */\n initialize: ReactInputSelection.getSelectionInformation,\n /**\n * @param {Selection} sel Selection information returned from `initialize`.\n */\n close: ReactInputSelection.restoreSelection\n};\n\n/**\n * Suppresses events (blur/focus) that could be inadvertently dispatched due to\n * high level DOM manipulations (like temporarily removing a text input from the\n * DOM).\n */\nvar EVENT_SUPPRESSION = {\n /**\n * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before\n * the reconciliation.\n */\n initialize: function () {\n var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();\n ReactBrowserEventEmitter.setEnabled(false);\n return currentlyEnabled;\n },\n\n /**\n * @param {boolean} previouslyEnabled Enabled status of\n * `ReactBrowserEventEmitter` before the reconciliation occurred. `close`\n * restores the previous value.\n */\n close: function (previouslyEnabled) {\n ReactBrowserEventEmitter.setEnabled(previouslyEnabled);\n }\n};\n\n/**\n * Provides a queue for collecting `componentDidMount` and\n * `componentDidUpdate` callbacks during the transaction.\n */\nvar ON_DOM_READY_QUEUEING = {\n /**\n * Initializes the internal `onDOMReady` queue.\n */\n initialize: function () {\n this.reactMountReady.reset();\n },\n\n /**\n * After DOM is flushed, invoke all registered `onDOMReady` callbacks.\n */\n close: function () {\n this.reactMountReady.notifyAll();\n }\n};\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING];\n\nif (process.env.NODE_ENV !== 'production') {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\n/**\n * Currently:\n * - The order that these are listed in the transaction is critical:\n * - Suppresses events.\n * - Restores selection range.\n *\n * Future:\n * - Restore document/overflow scroll positions that were unintentionally\n * modified via DOM insertions above the top viewport boundary.\n * - Implement/integrate with customized constraint based layout system and keep\n * track of which dimensions must be remeasured.\n *\n * @class ReactReconcileTransaction\n */\nfunction ReactReconcileTransaction(useCreateElement) {\n this.reinitializeTransaction();\n // Only server-side rendering really needs this option (see\n // `ReactServerRendering`), but server-side uses\n // `ReactServerRenderingTransaction` instead. This option is here so that it's\n // accessible and defaults to false when `ReactDOMComponent` and\n // `ReactDOMTextComponent` checks it in `mountComponent`.`\n this.renderToStaticMarkup = false;\n this.reactMountReady = CallbackQueue.getPooled(null);\n this.useCreateElement = useCreateElement;\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array<object>} List of operation wrap procedures.\n * TODO: convert to array<TransactionWrapper>\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return this.reactMountReady;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return ReactUpdateQueue;\n },\n\n /**\n * Save current transaction state -- if the return value from this method is\n * passed to `rollback`, the transaction will be reset to that state.\n */\n checkpoint: function () {\n // reactMountReady is the our only stateful wrapper\n return this.reactMountReady.checkpoint();\n },\n\n rollback: function (checkpoint) {\n this.reactMountReady.rollback(checkpoint);\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {\n CallbackQueue.release(this.reactMountReady);\n this.reactMountReady = null;\n }\n};\n\n_assign(ReactReconcileTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactReconcileTransaction);\n\nmodule.exports = ReactReconcileTransaction;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar getNodeForCharacterOffset = require('./getNodeForCharacterOffset');\nvar getTextContentAccessor = require('./getTextContentAccessor');\n\n/**\n * While `isCollapsed` is available on the Selection object and `collapsed`\n * is available on the Range object, IE11 sometimes gets them wrong.\n * If the anchor/focus nodes and offsets are the same, the range is collapsed.\n */\nfunction isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {\n return anchorNode === focusNode && anchorOffset === focusOffset;\n}\n\n/**\n * Get the appropriate anchor and focus node/offset pairs for IE.\n *\n * The catch here is that IE's selection API doesn't provide information\n * about whether the selection is forward or backward, so we have to\n * behave as though it's always forward.\n *\n * IE text differs from modern selection in that it behaves as though\n * block elements end with a new line. This means character offsets will\n * differ between the two APIs.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getIEOffsets(node) {\n var selection = document.selection;\n var selectedRange = selection.createRange();\n var selectedLength = selectedRange.text.length;\n\n // Duplicate selection so we can move range without breaking user selection.\n var fromStart = selectedRange.duplicate();\n fromStart.moveToElementText(node);\n fromStart.setEndPoint('EndToStart', selectedRange);\n\n var startOffset = fromStart.text.length;\n var endOffset = startOffset + selectedLength;\n\n return {\n start: startOffset,\n end: endOffset\n };\n}\n\n/**\n * @param {DOMElement} node\n * @return {?object}\n */\nfunction getModernOffsets(node) {\n var selection = window.getSelection && window.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return null;\n }\n\n var anchorNode = selection.anchorNode;\n var anchorOffset = selection.anchorOffset;\n var focusNode = selection.focusNode;\n var focusOffset = selection.focusOffset;\n\n var currentRange = selection.getRangeAt(0);\n\n // In Firefox, range.startContainer and range.endContainer can be \"anonymous\n // divs\", e.g. the up/down buttons on an <input type=\"number\">. Anonymous\n // divs do not seem to expose properties, triggering a \"Permission denied\n // error\" if any of its properties are accessed. The only seemingly possible\n // way to avoid erroring is to access a property that typically works for\n // non-anonymous divs and catch any error that may otherwise arise. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n try {\n /* eslint-disable no-unused-expressions */\n currentRange.startContainer.nodeType;\n currentRange.endContainer.nodeType;\n /* eslint-enable no-unused-expressions */\n } catch (e) {\n return null;\n }\n\n // If the node and offset values are the same, the selection is collapsed.\n // `Selection.isCollapsed` is available natively, but IE sometimes gets\n // this value wrong.\n var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);\n\n var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;\n\n var tempRange = currentRange.cloneRange();\n tempRange.selectNodeContents(node);\n tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);\n\n var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);\n\n var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;\n var end = start + rangeLength;\n\n // Detect whether the selection is backward.\n var detectionRange = document.createRange();\n detectionRange.setStart(anchorNode, anchorOffset);\n detectionRange.setEnd(focusNode, focusOffset);\n var isBackward = detectionRange.collapsed;\n\n return {\n start: isBackward ? end : start,\n end: isBackward ? start : end\n };\n}\n\n/**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setIEOffsets(node, offsets) {\n var range = document.selection.createRange().duplicate();\n var start, end;\n\n if (offsets.end === undefined) {\n start = offsets.start;\n end = start;\n } else if (offsets.start > offsets.end) {\n start = offsets.end;\n end = offsets.start;\n } else {\n start = offsets.start;\n end = offsets.end;\n }\n\n range.moveToElementText(node);\n range.moveStart('character', start);\n range.setEndPoint('EndToStart', range);\n range.moveEnd('character', end - start);\n range.select();\n}\n\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setModernOffsets(node, offsets) {\n if (!window.getSelection) {\n return;\n }\n\n var selection = window.getSelection();\n var length = node[getTextContentAccessor()].length;\n var start = Math.min(offsets.start, length);\n var end = offsets.end === undefined ? start : Math.min(offsets.end, length);\n\n // IE 11 uses modern selection, but doesn't support the extend method.\n // Flip backward selections, so we can set with a single range.\n if (!selection.extend && start > end) {\n var temp = end;\n end = start;\n start = temp;\n }\n\n var startMarker = getNodeForCharacterOffset(node, start);\n var endMarker = getNodeForCharacterOffset(node, end);\n\n if (startMarker && endMarker) {\n var range = document.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n\n if (start > end) {\n selection.addRange(range);\n selection.extend(endMarker.node, endMarker.offset);\n } else {\n range.setEnd(endMarker.node, endMarker.offset);\n selection.addRange(range);\n }\n }\n}\n\nvar useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window);\n\nvar ReactDOMSelection = {\n /**\n * @param {DOMElement} node\n */\n getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,\n\n /**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets\n};\n\nmodule.exports = ReactDOMSelection;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\nfunction getLeafNode(node) {\n while (node && node.firstChild) {\n node = node.firstChild;\n }\n return node;\n}\n\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\nfunction getSiblingNode(node) {\n while (node) {\n if (node.nextSibling) {\n return node.nextSibling;\n }\n node = node.parentNode;\n }\n}\n\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n var nodeStart = 0;\n var nodeEnd = 0;\n\n while (node) {\n if (node.nodeType === 3) {\n nodeEnd = nodeStart + node.textContent.length;\n\n if (nodeStart <= offset && nodeEnd >= offset) {\n return {\n node: node,\n offset: offset - nodeStart\n };\n }\n\n nodeStart = nodeEnd;\n }\n\n node = getLeafNode(getSiblingNode(node));\n }\n}\n\nmodule.exports = getNodeForCharacterOffset;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nvar isTextNode = require('./isTextNode');\n\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar isNode = require('./isNode');\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n var doc = object ? object.ownerDocument || object : document;\n var defaultView = doc.defaultView || window;\n return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar NS = {\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace'\n};\n\n// We use attributes for everything SVG so let's avoid some duplication and run\n// code instead.\n// The following are all specified in the HTML config already so we exclude here.\n// - class (as className)\n// - color\n// - height\n// - id\n// - lang\n// - max\n// - media\n// - method\n// - min\n// - name\n// - style\n// - target\n// - type\n// - width\nvar ATTRS = {\n accentHeight: 'accent-height',\n accumulate: 0,\n additive: 0,\n alignmentBaseline: 'alignment-baseline',\n allowReorder: 'allowReorder',\n alphabetic: 0,\n amplitude: 0,\n arabicForm: 'arabic-form',\n ascent: 0,\n attributeName: 'attributeName',\n attributeType: 'attributeType',\n autoReverse: 'autoReverse',\n azimuth: 0,\n baseFrequency: 'baseFrequency',\n baseProfile: 'baseProfile',\n baselineShift: 'baseline-shift',\n bbox: 0,\n begin: 0,\n bias: 0,\n by: 0,\n calcMode: 'calcMode',\n capHeight: 'cap-height',\n clip: 0,\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n clipPathUnits: 'clipPathUnits',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n contentScriptType: 'contentScriptType',\n contentStyleType: 'contentStyleType',\n cursor: 0,\n cx: 0,\n cy: 0,\n d: 0,\n decelerate: 0,\n descent: 0,\n diffuseConstant: 'diffuseConstant',\n direction: 0,\n display: 0,\n divisor: 0,\n dominantBaseline: 'dominant-baseline',\n dur: 0,\n dx: 0,\n dy: 0,\n edgeMode: 'edgeMode',\n elevation: 0,\n enableBackground: 'enable-background',\n end: 0,\n exponent: 0,\n externalResourcesRequired: 'externalResourcesRequired',\n fill: 0,\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n filter: 0,\n filterRes: 'filterRes',\n filterUnits: 'filterUnits',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n focusable: 0,\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n format: 0,\n from: 0,\n fx: 0,\n fy: 0,\n g1: 0,\n g2: 0,\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n glyphRef: 'glyphRef',\n gradientTransform: 'gradientTransform',\n gradientUnits: 'gradientUnits',\n hanging: 0,\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n ideographic: 0,\n imageRendering: 'image-rendering',\n 'in': 0,\n in2: 0,\n intercept: 0,\n k: 0,\n k1: 0,\n k2: 0,\n k3: 0,\n k4: 0,\n kernelMatrix: 'kernelMatrix',\n kernelUnitLength: 'kernelUnitLength',\n kerning: 0,\n keyPoints: 'keyPoints',\n keySplines: 'keySplines',\n keyTimes: 'keyTimes',\n lengthAdjust: 'lengthAdjust',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n limitingConeAngle: 'limitingConeAngle',\n local: 0,\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n markerHeight: 'markerHeight',\n markerUnits: 'markerUnits',\n markerWidth: 'markerWidth',\n mask: 0,\n maskContentUnits: 'maskContentUnits',\n maskUnits: 'maskUnits',\n mathematical: 0,\n mode: 0,\n numOctaves: 'numOctaves',\n offset: 0,\n opacity: 0,\n operator: 0,\n order: 0,\n orient: 0,\n orientation: 0,\n origin: 0,\n overflow: 0,\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pathLength: 'pathLength',\n patternContentUnits: 'patternContentUnits',\n patternTransform: 'patternTransform',\n patternUnits: 'patternUnits',\n pointerEvents: 'pointer-events',\n points: 0,\n pointsAtX: 'pointsAtX',\n pointsAtY: 'pointsAtY',\n pointsAtZ: 'pointsAtZ',\n preserveAlpha: 'preserveAlpha',\n preserveAspectRatio: 'preserveAspectRatio',\n primitiveUnits: 'primitiveUnits',\n r: 0,\n radius: 0,\n refX: 'refX',\n refY: 'refY',\n renderingIntent: 'rendering-intent',\n repeatCount: 'repeatCount',\n repeatDur: 'repeatDur',\n requiredExtensions: 'requiredExtensions',\n requiredFeatures: 'requiredFeatures',\n restart: 0,\n result: 0,\n rotate: 0,\n rx: 0,\n ry: 0,\n scale: 0,\n seed: 0,\n shapeRendering: 'shape-rendering',\n slope: 0,\n spacing: 0,\n specularConstant: 'specularConstant',\n specularExponent: 'specularExponent',\n speed: 0,\n spreadMethod: 'spreadMethod',\n startOffset: 'startOffset',\n stdDeviation: 'stdDeviation',\n stemh: 0,\n stemv: 0,\n stitchTiles: 'stitchTiles',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n string: 0,\n stroke: 0,\n strokeDasharray: 'stroke-dasharray',\n strokeDashoffset: 'stroke-dashoffset',\n strokeLinecap: 'stroke-linecap',\n strokeLinejoin: 'stroke-linejoin',\n strokeMiterlimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n surfaceScale: 'surfaceScale',\n systemLanguage: 'systemLanguage',\n tableValues: 'tableValues',\n targetX: 'targetX',\n targetY: 'targetY',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n textLength: 'textLength',\n to: 0,\n transform: 0,\n u1: 0,\n u2: 0,\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicode: 0,\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n values: 0,\n vectorEffect: 'vector-effect',\n version: 0,\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n viewBox: 'viewBox',\n viewTarget: 'viewTarget',\n visibility: 0,\n widths: 0,\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n x: 0,\n xHeight: 'x-height',\n x1: 0,\n x2: 0,\n xChannelSelector: 'xChannelSelector',\n xlinkActuate: 'xlink:actuate',\n xlinkArcrole: 'xlink:arcrole',\n xlinkHref: 'xlink:href',\n xlinkRole: 'xlink:role',\n xlinkShow: 'xlink:show',\n xlinkTitle: 'xlink:title',\n xlinkType: 'xlink:type',\n xmlBase: 'xml:base',\n xmlns: 0,\n xmlnsXlink: 'xmlns:xlink',\n xmlLang: 'xml:lang',\n xmlSpace: 'xml:space',\n y: 0,\n y1: 0,\n y2: 0,\n yChannelSelector: 'yChannelSelector',\n z: 0,\n zoomAndPan: 'zoomAndPan'\n};\n\nvar SVGDOMPropertyConfig = {\n Properties: {},\n DOMAttributeNamespaces: {\n xlinkActuate: NS.xlink,\n xlinkArcrole: NS.xlink,\n xlinkHref: NS.xlink,\n xlinkRole: NS.xlink,\n xlinkShow: NS.xlink,\n xlinkTitle: NS.xlink,\n xlinkType: NS.xlink,\n xmlBase: NS.xml,\n xmlLang: NS.xml,\n xmlSpace: NS.xml\n },\n DOMAttributeNames: {}\n};\n\nObject.keys(ATTRS).forEach(function (key) {\n SVGDOMPropertyConfig.Properties[key] = 0;\n if (ATTRS[key]) {\n SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key];\n }\n});\n\nmodule.exports = SVGDOMPropertyConfig;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInputSelection = require('./ReactInputSelection');\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getActiveElement = require('fbjs/lib/getActiveElement');\nvar isTextInputElement = require('./isTextInputElement');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\n\nvar skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\nvar eventTypes = {\n select: {\n phasedRegistrationNames: {\n bubbled: 'onSelect',\n captured: 'onSelectCapture'\n },\n dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange']\n }\n};\n\nvar activeElement = null;\nvar activeElementInst = null;\nvar lastSelection = null;\nvar mouseDown = false;\n\n// Track whether a listener exists for this plugin. If none exist, we do\n// not extract events. See #3639.\nvar hasListener = false;\n\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getSelection(node) {\n if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) {\n return {\n start: node.selectionStart,\n end: node.selectionEnd\n };\n } else if (window.getSelection) {\n var selection = window.getSelection();\n return {\n anchorNode: selection.anchorNode,\n anchorOffset: selection.anchorOffset,\n focusNode: selection.focusNode,\n focusOffset: selection.focusOffset\n };\n } else if (document.selection) {\n var range = document.selection.createRange();\n return {\n parentElement: range.parentElement(),\n text: range.text,\n top: range.boundingTop,\n left: range.boundingLeft\n };\n }\n}\n\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @return {?SyntheticEvent}\n */\nfunction constructSelectEvent(nativeEvent, nativeEventTarget) {\n // Ensure we have the right element, and that the user is not dragging a\n // selection (this matches native `select` event behavior). In HTML5, select\n // fires only on input and textarea thus if there's no focused element we\n // won't dispatch.\n if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {\n return null;\n }\n\n // Only fire when selection has actually changed.\n var currentSelection = getSelection(activeElement);\n if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n lastSelection = currentSelection;\n\n var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);\n\n syntheticEvent.type = 'select';\n syntheticEvent.target = activeElement;\n\n EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);\n\n return syntheticEvent;\n }\n\n return null;\n}\n\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\nvar SelectEventPlugin = {\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (!hasListener) {\n return null;\n }\n\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n switch (topLevelType) {\n // Track the input node that has focus.\n case 'topFocus':\n if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n activeElement = targetNode;\n activeElementInst = targetInst;\n lastSelection = null;\n }\n break;\n case 'topBlur':\n activeElement = null;\n activeElementInst = null;\n lastSelection = null;\n break;\n // Don't fire the event while the user is dragging. This matches the\n // semantics of the native select event.\n case 'topMouseDown':\n mouseDown = true;\n break;\n case 'topContextMenu':\n case 'topMouseUp':\n mouseDown = false;\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n // Chrome and IE fire non-standard event when selection is changed (and\n // sometimes when it hasn't). IE's event fires out of order with respect\n // to key and input events on deletion, so we discard it.\n //\n // Firefox doesn't support selectionchange, so check selection status\n // after each key entry. The selection changes after keydown and before\n // keyup, but we check on keydown as well in the case of holding down a\n // key, when multiple keydown events are fired but only one keyup is.\n // This is also our approach for IE handling, for the reason above.\n case 'topSelectionChange':\n if (skipSelectionChangeEvent) {\n break;\n }\n // falls through\n case 'topKeyDown':\n case 'topKeyUp':\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n }\n\n return null;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n if (registrationName === 'onSelect') {\n hasListener = true;\n }\n }\n};\n\nmodule.exports = SelectEventPlugin;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar EventListener = require('fbjs/lib/EventListener');\nvar EventPropagators = require('./EventPropagators');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar SyntheticAnimationEvent = require('./SyntheticAnimationEvent');\nvar SyntheticClipboardEvent = require('./SyntheticClipboardEvent');\nvar SyntheticEvent = require('./SyntheticEvent');\nvar SyntheticFocusEvent = require('./SyntheticFocusEvent');\nvar SyntheticKeyboardEvent = require('./SyntheticKeyboardEvent');\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\nvar SyntheticDragEvent = require('./SyntheticDragEvent');\nvar SyntheticTouchEvent = require('./SyntheticTouchEvent');\nvar SyntheticTransitionEvent = require('./SyntheticTransitionEvent');\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\nvar SyntheticWheelEvent = require('./SyntheticWheelEvent');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar getEventCharCode = require('./getEventCharCode');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Turns\n * ['abort', ...]\n * into\n * eventTypes = {\n * 'abort': {\n * phasedRegistrationNames: {\n * bubbled: 'onAbort',\n * captured: 'onAbortCapture',\n * },\n * dependencies: ['topAbort'],\n * },\n * ...\n * };\n * topLevelEventsToDispatchConfig = {\n * 'topAbort': { sameConfig }\n * };\n */\nvar eventTypes = {};\nvar topLevelEventsToDispatchConfig = {};\n['abort', 'animationEnd', 'animationIteration', 'animationStart', 'blur', 'canPlay', 'canPlayThrough', 'click', 'contextMenu', 'copy', 'cut', 'doubleClick', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'focus', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'progress', 'rateChange', 'reset', 'scroll', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchMove', 'touchStart', 'transitionEnd', 'volumeChange', 'waiting', 'wheel'].forEach(function (event) {\n var capitalizedEvent = event[0].toUpperCase() + event.slice(1);\n var onEvent = 'on' + capitalizedEvent;\n var topEvent = 'top' + capitalizedEvent;\n\n var type = {\n phasedRegistrationNames: {\n bubbled: onEvent,\n captured: onEvent + 'Capture'\n },\n dependencies: [topEvent]\n };\n eventTypes[event] = type;\n topLevelEventsToDispatchConfig[topEvent] = type;\n});\n\nvar onClickListeners = {};\n\nfunction getDictionaryKey(inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n}\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nvar SimpleEventPlugin = {\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];\n if (!dispatchConfig) {\n return null;\n }\n var EventConstructor;\n switch (topLevelType) {\n case 'topAbort':\n case 'topCanPlay':\n case 'topCanPlayThrough':\n case 'topDurationChange':\n case 'topEmptied':\n case 'topEncrypted':\n case 'topEnded':\n case 'topError':\n case 'topInput':\n case 'topInvalid':\n case 'topLoad':\n case 'topLoadedData':\n case 'topLoadedMetadata':\n case 'topLoadStart':\n case 'topPause':\n case 'topPlay':\n case 'topPlaying':\n case 'topProgress':\n case 'topRateChange':\n case 'topReset':\n case 'topSeeked':\n case 'topSeeking':\n case 'topStalled':\n case 'topSubmit':\n case 'topSuspend':\n case 'topTimeUpdate':\n case 'topVolumeChange':\n case 'topWaiting':\n // HTML Events\n // @see http://www.w3.org/TR/html5/index.html#events-0\n EventConstructor = SyntheticEvent;\n break;\n case 'topKeyPress':\n // Firefox creates a keypress event for function keys too. This removes\n // the unwanted keypress events. Enter is however both printable and\n // non-printable. One would expect Tab to be as well (but it isn't).\n if (getEventCharCode(nativeEvent) === 0) {\n return null;\n }\n /* falls through */\n case 'topKeyDown':\n case 'topKeyUp':\n EventConstructor = SyntheticKeyboardEvent;\n break;\n case 'topBlur':\n case 'topFocus':\n EventConstructor = SyntheticFocusEvent;\n break;\n case 'topClick':\n // Firefox creates a click event on right mouse clicks. This removes the\n // unwanted click events.\n if (nativeEvent.button === 2) {\n return null;\n }\n /* falls through */\n case 'topDoubleClick':\n case 'topMouseDown':\n case 'topMouseMove':\n case 'topMouseUp':\n // TODO: Disabled elements should not respond to mouse events\n /* falls through */\n case 'topMouseOut':\n case 'topMouseOver':\n case 'topContextMenu':\n EventConstructor = SyntheticMouseEvent;\n break;\n case 'topDrag':\n case 'topDragEnd':\n case 'topDragEnter':\n case 'topDragExit':\n case 'topDragLeave':\n case 'topDragOver':\n case 'topDragStart':\n case 'topDrop':\n EventConstructor = SyntheticDragEvent;\n break;\n case 'topTouchCancel':\n case 'topTouchEnd':\n case 'topTouchMove':\n case 'topTouchStart':\n EventConstructor = SyntheticTouchEvent;\n break;\n case 'topAnimationEnd':\n case 'topAnimationIteration':\n case 'topAnimationStart':\n EventConstructor = SyntheticAnimationEvent;\n break;\n case 'topTransitionEnd':\n EventConstructor = SyntheticTransitionEvent;\n break;\n case 'topScroll':\n EventConstructor = SyntheticUIEvent;\n break;\n case 'topWheel':\n EventConstructor = SyntheticWheelEvent;\n break;\n case 'topCopy':\n case 'topCut':\n case 'topPaste':\n EventConstructor = SyntheticClipboardEvent;\n break;\n }\n !EventConstructor ? process.env.NODE_ENV !== 'production' ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : _prodInvariant('86', topLevelType) : void 0;\n var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n // Mobile Safari does not fire properly bubble click events on\n // non-interactive elements, which means delegated click listeners do not\n // fire. The workaround for this bug involves attaching an empty click\n // listener on the target node.\n // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n if (!onClickListeners[key]) {\n onClickListeners[key] = EventListener.listen(node, 'click', emptyFunction);\n }\n }\n },\n\n willDeleteListener: function (inst, registrationName) {\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n onClickListeners[key].remove();\n delete onClickListeners[key];\n }\n }\n};\n\nmodule.exports = SimpleEventPlugin;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\nvar AnimationEventInterface = {\n animationName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);\n\nmodule.exports = SyntheticAnimationEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\nvar ClipboardEventInterface = {\n clipboardData: function (event) {\n return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);\n\nmodule.exports = SyntheticClipboardEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar FocusEventInterface = {\n relatedTarget: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);\n\nmodule.exports = SyntheticFocusEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar getEventCharCode = require('./getEventCharCode');\nvar getEventKey = require('./getEventKey');\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar KeyboardEventInterface = {\n key: getEventKey,\n location: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n repeat: null,\n locale: null,\n getModifierState: getEventModifierState,\n // Legacy Interface\n charCode: function (event) {\n // `charCode` is the result of a KeyPress event and represents the value of\n // the actual printable character.\n\n // KeyPress is deprecated, but its replacement is not yet final and not\n // implemented in any major browser. Only KeyPress has charCode.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n return 0;\n },\n keyCode: function (event) {\n // `keyCode` is the result of a KeyDown/Up event and represents the value of\n // physical keyboard key.\n\n // The actual meaning of the value depends on the users' keyboard layout\n // which cannot be detected. Assuming that it is a US keyboard layout\n // provides a surprisingly accurate mapping for US and European users.\n // Due to this, it is left to the user to implement at this time.\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n },\n which: function (event) {\n // `which` is an alias for either `keyCode` or `charCode` depending on the\n // type of the event.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);\n\nmodule.exports = SyntheticKeyboardEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar getEventCharCode = require('./getEventCharCode');\n\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar normalizeKey = {\n Esc: 'Escape',\n Spacebar: ' ',\n Left: 'ArrowLeft',\n Up: 'ArrowUp',\n Right: 'ArrowRight',\n Down: 'ArrowDown',\n Del: 'Delete',\n Win: 'OS',\n Menu: 'ContextMenu',\n Apps: 'ContextMenu',\n Scroll: 'ScrollLock',\n MozPrintableKey: 'Unidentified'\n};\n\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar translateToKey = {\n 8: 'Backspace',\n 9: 'Tab',\n 12: 'Clear',\n 13: 'Enter',\n 16: 'Shift',\n 17: 'Control',\n 18: 'Alt',\n 19: 'Pause',\n 20: 'CapsLock',\n 27: 'Escape',\n 32: ' ',\n 33: 'PageUp',\n 34: 'PageDown',\n 35: 'End',\n 36: 'Home',\n 37: 'ArrowLeft',\n 38: 'ArrowUp',\n 39: 'ArrowRight',\n 40: 'ArrowDown',\n 45: 'Insert',\n 46: 'Delete',\n 112: 'F1',\n 113: 'F2',\n 114: 'F3',\n 115: 'F4',\n 116: 'F5',\n 117: 'F6',\n 118: 'F7',\n 119: 'F8',\n 120: 'F9',\n 121: 'F10',\n 122: 'F11',\n 123: 'F12',\n 144: 'NumLock',\n 145: 'ScrollLock',\n 224: 'Meta'\n};\n\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\nfunction getEventKey(nativeEvent) {\n if (nativeEvent.key) {\n // Normalize inconsistent values reported by browsers due to\n // implementations of a working draft specification.\n\n // FireFox implements `key` but returns `MozPrintableKey` for all\n // printable characters (normalized to `Unidentified`), ignore it.\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (key !== 'Unidentified') {\n return key;\n }\n }\n\n // Browser does not implement `key`, polyfill as much of it as we can.\n if (nativeEvent.type === 'keypress') {\n var charCode = getEventCharCode(nativeEvent);\n\n // The enter-key is technically both printable and non-printable and can\n // thus be captured by `keypress`, no other non-printable key should.\n return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n }\n if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n // While user keyboard layout determines the actual meaning of each\n // `keyCode` value, almost all function keys have a universal value.\n return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n }\n return '';\n}\n\nmodule.exports = getEventKey;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar DragEventInterface = {\n dataTransfer: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);\n\nmodule.exports = SyntheticDragEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\nvar TouchEventInterface = {\n touches: null,\n targetTouches: null,\n changedTouches: null,\n altKey: null,\n metaKey: null,\n ctrlKey: null,\n shiftKey: null,\n getModifierState: getEventModifierState\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);\n\nmodule.exports = SyntheticTouchEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\nvar TransitionEventInterface = {\n propertyName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);\n\nmodule.exports = SyntheticTransitionEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar WheelEventInterface = {\n deltaX: function (event) {\n return 'deltaX' in event ? event.deltaX : // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n 'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n },\n deltaY: function (event) {\n return 'deltaY' in event ? event.deltaY : // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n 'wheelDeltaY' in event ? -event.wheelDeltaY : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n 'wheelDelta' in event ? -event.wheelDelta : 0;\n },\n deltaZ: null,\n\n // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n deltaMode: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticMouseEvent}\n */\nfunction SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);\n\nmodule.exports = SyntheticWheelEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDOMFeatureFlags = {\n useCreateElement: true,\n useFiber: false\n};\n\nmodule.exports = ReactDOMFeatureFlags;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar MOD = 65521;\n\n// adler32 is not cryptographically strong, and is only used to sanity check that\n// markup generated on the server matches the markup generated on the client.\n// This implementation (a modified version of the SheetJS version) has been optimized\n// for our use case, at the expense of conforming to the adler32 specification\n// for non-ascii inputs.\nfunction adler32(data) {\n var a = 1;\n var b = 0;\n var i = 0;\n var l = data.length;\n var m = l & ~0x3;\n while (i < m) {\n var n = Math.min(i + 4096, m);\n for (; i < n; i += 4) {\n b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));\n }\n a %= MOD;\n b %= MOD;\n }\n for (; i < l; i++) {\n b += a += data.charCodeAt(i);\n }\n a %= MOD;\n b %= MOD;\n return a | b << 16;\n}\n\nmodule.exports = adler32;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstanceMap = require('./ReactInstanceMap');\n\nvar getHostComponentFromComposite = require('./getHostComponentFromComposite');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Returns the DOM node rendered by this element.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode\n *\n * @param {ReactComponent|DOMElement} componentOrElement\n * @return {?DOMElement} The root node of this element.\n */\nfunction findDOMNode(componentOrElement) {\n if (process.env.NODE_ENV !== 'production') {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n if (componentOrElement == null) {\n return null;\n }\n if (componentOrElement.nodeType === 1) {\n return componentOrElement;\n }\n\n var inst = ReactInstanceMap.get(componentOrElement);\n if (inst) {\n inst = getHostComponentFromComposite(inst);\n return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;\n }\n\n if (typeof componentOrElement.render === 'function') {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'findDOMNode was called on an unmounted component.') : _prodInvariant('44') : void 0;\n } else {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : _prodInvariant('45', Object.keys(componentOrElement)) : void 0;\n }\n}\n\nmodule.exports = findDOMNode;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactMount = require('./ReactMount');\n\nmodule.exports = ReactMount.renderSubtreeIntoContainer;","\"use strict\";\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar Skinner = function () {\n function Skinner() {\n (0, _classCallCheck3.default)(this, Skinner);\n\n this.components = null;\n }\n\n (0, _createClass3.default)(Skinner, [{\n key: \"getComponent\",\n value: function getComponent(name) {\n if (this.components === null) {\n throw new Error(\"Attempted to get a component before a skin has been loaded.\" + \" This is probably because either:\" + \" a) Your app has not called sdk.loadSkin(), or\" + \" b) A component has called getComponent at the root level\");\n }\n var comp = this.components[name];\n // XXX: Temporarily also try 'views.' as we're currently\n // leaving the 'views.' off views.\n if (!comp) {\n comp = this.components['views.' + name];\n }\n\n if (!comp) {\n throw new Error(\"No such component: \" + name);\n }\n\n // components have to be functions.\n var validType = typeof comp === 'function';\n if (!validType) {\n throw new Error(\"Not a valid component: \" + name + \".\");\n }\n return comp;\n }\n }, {\n key: \"load\",\n value: function load(skinObject) {\n if (this.components !== null) {\n throw new Error(\"Attempted to load a skin while a skin is already loaded\" + \"If you want to change the active skin, call resetSkin first\");\n }\n this.components = {};\n var compKeys = (0, _keys2.default)(skinObject.components);\n for (var i = 0; i < compKeys.length; ++i) {\n var comp = skinObject.components[compKeys[i]];\n this.addComponent(compKeys[i], comp);\n }\n }\n }, {\n key: \"addComponent\",\n value: function addComponent(name, comp) {\n var slot = name;\n if (comp.replaces !== undefined) {\n if (comp.replaces.indexOf('.') > -1) {\n slot = comp.replaces;\n } else {\n slot = name.substr(0, name.lastIndexOf('.') + 1) + comp.replaces.split('.').pop();\n }\n }\n this.components[slot] = comp;\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.components = null;\n }\n }]);\n return Skinner;\n}();\n\n// We define one Skinner globally, because the intention is\n// very much that it is a singleton. Relying on there only being one\n// copy of the module can be dicey and not work as browserify's\n// behaviour with multiple copies of files etc. is erratic at best.\n// XXX: We can still end up with the same file twice in the resulting\n// JS bundle which is nonideal.\n// See https://derickbailey.com/2016/03/09/creating-a-true-singleton-in-node-js-with-es6-symbols/\n// or https://nodejs.org/api/modules.html#modules_module_caching_caveats\n// (\"Modules are cached based on their resolved filename\")\n\n\nif (global.mxSkinner === undefined) {\n global.mxSkinner = new Skinner();\n}\nmodule.exports = global.mxSkinner;\n//# sourceMappingURL=Skinner.js.map","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n var len = b64.length\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n // base64 is 4/3 + up to two characters of the original data\n return b64.length * 3 / 4 - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n var i, j, l, tmp, placeHolders, arr\n var len = b64.length\n placeHolders = placeHoldersCount(b64)\n\n arr = new Arr(len * 3 / 4 - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var output = ''\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/** The {@link module:ContentHelpers} object */\n\nmodule.exports.ContentHelpers = require(\"./content-helpers\");\n/** The {@link module:models/event.MatrixEvent|MatrixEvent} class. */\nmodule.exports.MatrixEvent = require(\"./models/event\").MatrixEvent;\n/** The {@link module:models/event.EventStatus|EventStatus} enum. */\nmodule.exports.EventStatus = require(\"./models/event\").EventStatus;\n/** The {@link module:store/memory.MatrixInMemoryStore|MatrixInMemoryStore} class. */\nmodule.exports.MatrixInMemoryStore = require(\"./store/memory\").MatrixInMemoryStore;\n/** The {@link module:store/indexeddb.IndexedDBStore|IndexedDBStore} class. */\nmodule.exports.IndexedDBStore = require(\"./store/indexeddb\").IndexedDBStore;\n/** The {@link module:store/indexeddb.IndexedDBStoreBackend|IndexedDBStoreBackend} class. */\nmodule.exports.IndexedDBStoreBackend = require(\"./store/indexeddb\").IndexedDBStoreBackend;\n/** The {@link module:sync-accumulator.SyncAccumulator|SyncAccumulator} class. */\nmodule.exports.SyncAccumulator = require(\"./sync-accumulator\");\n/** The {@link module:http-api.MatrixHttpApi|MatrixHttpApi} class. */\nmodule.exports.MatrixHttpApi = require(\"./http-api\").MatrixHttpApi;\n/** The {@link module:http-api.MatrixError|MatrixError} class. */\nmodule.exports.MatrixError = require(\"./http-api\").MatrixError;\n/** The {@link module:errors.InvalidStoreError|InvalidStoreError} class. */\nmodule.exports.InvalidStoreError = require(\"./errors\").InvalidStoreError;\n/** The {@link module:client.MatrixClient|MatrixClient} class. */\nmodule.exports.MatrixClient = require(\"./client\").MatrixClient;\n/** The {@link module:models/room|Room} class. */\nmodule.exports.Room = require(\"./models/room\");\n/** The {@link module:models/group|Group} class. */\nmodule.exports.Group = require(\"./models/group\");\n/** The {@link module:models/event-timeline~EventTimeline} class. */\nmodule.exports.EventTimeline = require(\"./models/event-timeline\");\n/** The {@link module:models/event-timeline-set~EventTimelineSet} class. */\nmodule.exports.EventTimelineSet = require(\"./models/event-timeline-set\");\n/** The {@link module:models/room-member|RoomMember} class. */\nmodule.exports.RoomMember = require(\"./models/room-member\");\n/** The {@link module:models/room-state~RoomState|RoomState} class. */\nmodule.exports.RoomState = require(\"./models/room-state\");\n/** The {@link module:models/user~User|User} class. */\nmodule.exports.User = require(\"./models/user\");\n/** The {@link module:scheduler~MatrixScheduler|MatrixScheduler} class. */\nmodule.exports.MatrixScheduler = require(\"./scheduler\");\n/** The {@link module:store/session/webstorage~WebStorageSessionStore|\n * WebStorageSessionStore} class. <strong>Work in progress; unstable.</strong> */\nmodule.exports.WebStorageSessionStore = require(\"./store/session/webstorage\");\n/** True if crypto libraries are being used on this client. */\nmodule.exports.CRYPTO_ENABLED = require(\"./client\").CRYPTO_ENABLED;\n/** {@link module:content-repo|ContentRepo} utility functions. */\nmodule.exports.ContentRepo = require(\"./content-repo\");\n/** The {@link module:filter~Filter|Filter} class. */\nmodule.exports.Filter = require(\"./filter\");\n/** The {@link module:timeline-window~TimelineWindow} class. */\nmodule.exports.TimelineWindow = require(\"./timeline-window\").TimelineWindow;\n/** The {@link module:interactive-auth} class. */\nmodule.exports.InteractiveAuth = require(\"./interactive-auth\");\n\nmodule.exports.MemoryCryptoStore = require(\"./crypto/store/memory-crypto-store\").default;\nmodule.exports.IndexedDBCryptoStore = require(\"./crypto/store/indexeddb-crypto-store\").default;\n\n/**\n * Create a new Matrix Call.\n * @function\n * @param {module:client.MatrixClient} client The MatrixClient instance to use.\n * @param {string} roomId The room the call is in.\n * @return {module:webrtc/call~MatrixCall} The Matrix call or null if the browser\n * does not support WebRTC.\n */\nmodule.exports.createNewMatrixCall = require(\"./webrtc/call\").createNewMatrixCall;\n\n/**\n * Set an audio output device to use for MatrixCalls\n * @function\n * @param {string=} deviceId the identifier for the device\n * undefined treated as unset\n */\nmodule.exports.setMatrixCallAudioOutput = require('./webrtc/call').setAudioOutput;\n/**\n * Set an audio input device to use for MatrixCalls\n * @function\n * @param {string=} deviceId the identifier for the device\n * undefined treated as unset\n */\nmodule.exports.setMatrixCallAudioInput = require('./webrtc/call').setAudioInput;\n/**\n * Set a video input device to use for MatrixCalls\n * @function\n * @param {string=} deviceId the identifier for the device\n * undefined treated as unset\n */\nmodule.exports.setMatrixCallVideoInput = require('./webrtc/call').setVideoInput;\n\n// expose the underlying request object so different environments can use\n// different request libs (e.g. request or browser-request)\nvar request = void 0;\n/**\n * The function used to perform HTTP requests. Only use this if you want to\n * use a different HTTP library, e.g. Angular's <code>$http</code>. This should\n * be set prior to calling {@link createClient}.\n * @param {requestFunction} r The request function to use.\n */\nmodule.exports.request = function (r) {\n request = r;\n};\n\n/**\n * Return the currently-set request function.\n * @return {requestFunction} The current request function.\n */\nmodule.exports.getRequest = function () {\n return request;\n};\n\n/**\n * Apply wrapping code around the request function. The wrapper function is\n * installed as the new request handler, and when invoked it is passed the\n * previous value, along with the options and callback arguments.\n * @param {requestWrapperFunction} wrapper The wrapping function.\n */\nmodule.exports.wrapRequest = function (wrapper) {\n var origRequest = request;\n request = function request(options, callback) {\n return wrapper(origRequest, options, callback);\n };\n};\n\nvar cryptoStoreFactory = function cryptoStoreFactory() {\n return new module.exports.MemoryCryptoStore();\n};\n\n/**\n * Configure a different factory to be used for creating crypto stores\n *\n * @param {Function} fac a function which will return a new\n * {@link module:crypto.store.base~CryptoStore}.\n */\nmodule.exports.setCryptoStoreFactory = function (fac) {\n cryptoStoreFactory = fac;\n};\n\n/**\n * Construct a Matrix Client. Similar to {@link module:client~MatrixClient}\n * except that the 'request', 'store' and 'scheduler' dependencies are satisfied.\n * @param {(Object|string)} opts The configuration options for this client. If\n * this is a string, it is assumed to be the base URL. These configuration\n * options will be passed directly to {@link module:client~MatrixClient}.\n * @param {Object} opts.store If not set, defaults to\n * {@link module:store/memory.MatrixInMemoryStore}.\n * @param {Object} opts.scheduler If not set, defaults to\n * {@link module:scheduler~MatrixScheduler}.\n * @param {requestFunction} opts.request If not set, defaults to the function\n * supplied to {@link request} which defaults to the request module from NPM.\n *\n * @param {module:crypto.store.base~CryptoStore=} opts.cryptoStore\n * crypto store implementation. Calls the factory supplied to\n * {@link setCryptoStoreFactory} if unspecified; or if no factory has been\n * specified, uses a default implementation (indexeddb in the browser,\n * in-memory otherwise).\n *\n * @return {MatrixClient} A new matrix client.\n * @see {@link module:client~MatrixClient} for the full list of options for\n * <code>opts</code>.\n */\nmodule.exports.createClient = function (opts) {\n if (typeof opts === \"string\") {\n opts = {\n \"baseUrl\": opts\n };\n }\n opts.request = opts.request || request;\n opts.store = opts.store || new module.exports.MatrixInMemoryStore({\n localStorage: global.localStorage\n });\n opts.scheduler = opts.scheduler || new module.exports.MatrixScheduler();\n opts.cryptoStore = opts.cryptoStore || cryptoStoreFactory();\n return new module.exports.MatrixClient(opts);\n};\n\n/**\n * The request function interface for performing HTTP requests. This matches the\n * API for the {@link https://github.com/request/request#requestoptions-callback|\n * request NPM module}. The SDK will attempt to call this function in order to\n * perform an HTTP request.\n * @callback requestFunction\n * @param {Object} opts The options for this HTTP request.\n * @param {string} opts.uri The complete URI.\n * @param {string} opts.method The HTTP method.\n * @param {Object} opts.qs The query parameters to append to the URI.\n * @param {Object} opts.body The JSON-serializable object.\n * @param {boolean} opts.json True if this is a JSON request.\n * @param {Object} opts._matrix_opts The underlying options set for\n * {@link MatrixHttpApi}.\n * @param {requestCallback} callback The request callback.\n */\n\n/**\n * A wrapper for the request function interface.\n * @callback requestWrapperFunction\n * @param {requestFunction} origRequest The underlying request function being\n * wrapped\n * @param {Object} opts The options for this HTTP request, given in the same\n * form as {@link requestFunction}.\n * @param {requestCallback} callback The request callback.\n */\n\n/**\n * The request callback interface for performing HTTP requests. This matches the\n * API for the {@link https://github.com/request/request#requestoptions-callback|\n * request NPM module}. The SDK will implement a callback which meets this\n * interface in order to handle the HTTP response.\n * @callback requestCallback\n * @param {Error} err The error if one occurred, else falsey.\n * @param {Object} response The HTTP response which consists of\n * <code>{statusCode: {Number}, headers: {Object}}</code>\n * @param {Object} body The parsed HTTP response body.\n */\n//# sourceMappingURL=matrix.js.map","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * An IndexedDB store backend where the actual backend sits in a web\n * worker.\n *\n * Construct a new Indexed Database store backend. This requires a call to\n * <code>connect()</code> before this store can be used.\n * @constructor\n * @param {string} workerScript URL to the worker script\n * @param {string=} dbName Optional database name. The same name must be used\n * to open the same database.\n * @param {Object} workerApi The web worker compatible interface object\n */\nvar RemoteIndexedDBStoreBackend = function RemoteIndexedDBStoreBackend(workerScript, dbName, workerApi) {\n this._workerScript = workerScript;\n this._dbName = dbName;\n this._workerApi = workerApi;\n this._worker = null;\n this._nextSeq = 0;\n // The currently in-flight requests to the actual backend\n this._inFlight = {\n // seq: promise,\n };\n // Once we start connecting, we keep the promise and re-use it\n // if we try to connect again\n this._startPromise = null;\n}; /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nRemoteIndexedDBStoreBackend.prototype = {\n /**\n * Attempt to connect to the database. This can fail if the user does not\n * grant permission.\n * @return {Promise} Resolves if successfully connected.\n */\n connect: function connect() {\n var _this = this;\n\n return this._ensureStarted().then(function () {\n return _this._doCmd('connect');\n });\n },\n\n /**\n * Clear the entire database. This should be used when logging out of a client\n * to prevent mixing data between accounts.\n * @return {Promise} Resolved when the database is cleared.\n */\n clearDatabase: function clearDatabase() {\n var _this2 = this;\n\n return this._ensureStarted().then(function () {\n return _this2._doCmd('clearDatabase');\n });\n },\n /** @return {Promise<bool>} whether or not the database was newly created in this session. */\n isNewlyCreated: function isNewlyCreated() {\n return this._doCmd('isNewlyCreated');\n },\n /**\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\n getSavedSync: function getSavedSync() {\n return this._doCmd('getSavedSync');\n },\n\n getNextBatchToken: function getNextBatchToken() {\n return this._doCmd('getNextBatchToken');\n },\n\n setSyncData: function setSyncData(syncData) {\n return this._doCmd('setSyncData', [syncData]);\n },\n\n syncToDatabase: function syncToDatabase(users) {\n return this._doCmd('syncToDatabase', [users]);\n },\n\n /**\n * Returns the out-of-band membership events for this room that\n * were previously loaded.\n * @param {string} roomId\n * @returns {event[]} the events, potentially an empty array if OOB loading didn't yield any new members\n * @returns {null} in case the members for this room haven't been stored yet\n */\n getOutOfBandMembers: function getOutOfBandMembers(roomId) {\n return this._doCmd('getOutOfBandMembers', [roomId]);\n },\n\n /**\n * Stores the out-of-band membership events for this room. Note that\n * it still makes sense to store an empty array as the OOB status for the room is\n * marked as fetched, and getOutOfBandMembers will return an empty array instead of null\n * @param {string} roomId\n * @param {event[]} membershipEvents the membership events to store\n * @returns {Promise} when all members have been stored\n */\n setOutOfBandMembers: function setOutOfBandMembers(roomId, membershipEvents) {\n return this._doCmd('setOutOfBandMembers', [roomId, membershipEvents]);\n },\n\n clearOutOfBandMembers: function clearOutOfBandMembers(roomId) {\n return this._doCmd('clearOutOfBandMembers', [roomId]);\n },\n\n getClientOptions: function getClientOptions() {\n return this._doCmd('getClientOptions');\n },\n\n storeClientOptions: function storeClientOptions(options) {\n return this._doCmd('storeClientOptions', [options]);\n },\n\n /**\n * Load all user presence events from the database. This is not cached.\n * @return {Promise<Object[]>} A list of presence events in their raw form.\n */\n getUserPresenceEvents: function getUserPresenceEvents() {\n return this._doCmd('getUserPresenceEvents');\n },\n\n _ensureStarted: function _ensureStarted() {\n if (this._startPromise === null) {\n this._worker = new this._workerApi(this._workerScript);\n this._worker.onmessage = this._onWorkerMessage.bind(this);\n\n // tell the worker the db name.\n this._startPromise = this._doCmd('_setupWorker', [this._dbName]).then(function () {\n console.log(\"IndexedDB worker is ready\");\n });\n }\n return this._startPromise;\n },\n\n _doCmd: function _doCmd(cmd, args) {\n var _this3 = this;\n\n // wrap in a q so if the postMessage throws,\n // the promise automatically gets rejected\n return _bluebird2.default.resolve().then(function () {\n var seq = _this3._nextSeq++;\n var def = _bluebird2.default.defer();\n\n _this3._inFlight[seq] = def;\n\n _this3._worker.postMessage({\n command: cmd,\n seq: seq,\n args: args\n });\n\n return def.promise;\n });\n },\n\n _onWorkerMessage: function _onWorkerMessage(ev) {\n var msg = ev.data;\n\n if (msg.command == 'cmd_success' || msg.command == 'cmd_fail') {\n if (msg.seq === undefined) {\n console.error(\"Got reply from worker with no seq\");\n return;\n }\n\n var def = this._inFlight[msg.seq];\n if (def === undefined) {\n console.error(\"Got reply for unknown seq \" + msg.seq);\n return;\n }\n delete this._inFlight[msg.seq];\n\n if (msg.command == 'cmd_success') {\n def.resolve(msg.result);\n } else {\n var error = new Error(msg.error.message);\n error.name = msg.error.name;\n def.reject(error);\n }\n } else {\n console.warn(\"Unrecognised message from worker: \" + msg);\n }\n }\n};\n\nexports.default = RemoteIndexedDBStoreBackend;\n//# sourceMappingURL=indexeddb-remote-backend.js.map","/*!\n * content-type\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 7231 sec 3.1.1.1\n *\n * parameter = token \"=\" ( token / quoted-string )\n * token = 1*tchar\n * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n * / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n * / DIGIT / ALPHA\n * ; any VCHAR, except delimiters\n * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\n * qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text\n * obs-text = %x80-FF\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n */\nvar PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *(\"(?:[\\u000b\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u000b\\u0020-\\u00ff])*\"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g\nvar TEXT_REGEXP = /^[\\u000b\\u0020-\\u007e\\u0080-\\u00ff]+$/\nvar TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 7230 sec 3.2.6\n *\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n * obs-text = %x80-FF\n */\nvar QESC_REGEXP = /\\\\([\\u000b\\u0020-\\u00ff])/g\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6\n */\nvar QUOTE_REGEXP = /([\\\\\"])/g\n\n/**\n * RegExp to match type in RFC 7231 sec 3.1.1.1\n *\n * media-type = type \"/\" subtype\n * type = token\n * subtype = token\n */\nvar TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * Module exports.\n * @public\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n if (!obj || typeof obj !== 'object') {\n throw new TypeError('argument obj is required')\n }\n\n var parameters = obj.parameters\n var type = obj.type\n\n if (!type || !TYPE_REGEXP.test(type)) {\n throw new TypeError('invalid type')\n }\n\n var string = type\n\n // append parameters\n if (parameters && typeof parameters === 'object') {\n var param\n var params = Object.keys(parameters).sort()\n\n for (var i = 0; i < params.length; i++) {\n param = params[i]\n\n if (!TOKEN_REGEXP.test(param)) {\n throw new TypeError('invalid parameter name')\n }\n\n string += '; ' + param + '=' + qstring(parameters[param])\n }\n }\n\n return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @public\n */\n\nfunction parse (string) {\n if (!string) {\n throw new TypeError('argument string is required')\n }\n\n // support req/res-like objects as argument\n var header = typeof string === 'object'\n ? getcontenttype(string)\n : string\n\n if (typeof header !== 'string') {\n throw new TypeError('argument string is required to be a string')\n }\n\n var index = header.indexOf(';')\n var type = index !== -1\n ? header.substr(0, index).trim()\n : header.trim()\n\n if (!TYPE_REGEXP.test(type)) {\n throw new TypeError('invalid media type')\n }\n\n var obj = new ContentType(type.toLowerCase())\n\n // parse parameters\n if (index !== -1) {\n var key\n var match\n var value\n\n PARAM_REGEXP.lastIndex = index\n\n while ((match = PARAM_REGEXP.exec(header))) {\n if (match.index !== index) {\n throw new TypeError('invalid parameter format')\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value[0] === '\"') {\n // remove quotes and escapes\n value = value\n .substr(1, value.length - 2)\n .replace(QESC_REGEXP, '$1')\n }\n\n obj.parameters[key] = value\n }\n\n if (index !== header.length) {\n throw new TypeError('invalid parameter format')\n }\n }\n\n return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @private\n */\n\nfunction getcontenttype (obj) {\n var header\n\n if (typeof obj.getHeader === 'function') {\n // res-like\n header = obj.getHeader('content-type')\n } else if (typeof obj.headers === 'object') {\n // req-like\n header = obj.headers && obj.headers['content-type']\n }\n\n if (typeof header !== 'string') {\n throw new TypeError('content-type header is missing from object')\n }\n\n return header\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n var str = String(val)\n\n // no need to quote tokens\n if (TOKEN_REGEXP.test(str)) {\n return str\n }\n\n if (str.length > 0 && !TEXT_REGEXP.test(str)) {\n throw new TypeError('invalid parameter value')\n }\n\n return '\"' + str.replace(QUOTE_REGEXP, '\\\\$1') + '\"'\n}\n\n/**\n * Class to represent a content type.\n * @private\n */\nfunction ContentType (type) {\n this.parameters = Object.create(null)\n this.type = type\n}\n","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/* A re-implementation of the javascript callback functions (setTimeout,\n * clearTimeout; setInterval and clearInterval are not yet implemented) which\n * try to improve handling of large clock jumps (as seen when\n * suspending/resuming the system).\n *\n * In particular, if a timeout would have fired while the system was suspended,\n * it will instead fire as soon as possible after resume.\n */\n\n\"use strict\";\n\n// we schedule a callback at least this often, to check if we've missed out on\n// some wall-clock time due to being suspended.\n\nvar TIMER_CHECK_PERIOD_MS = 1000;\n\n// counter, for making up ids to return from setTimeout\nvar _count = 0;\n\n// the key for our callback with the real global.setTimeout\nvar _realCallbackKey = void 0;\n\n// a sorted list of the callbacks to be run.\n// each is an object with keys [runAt, func, params, key].\nvar _callbackList = [];\n\n// var debuglog = console.log.bind(console);\nvar debuglog = function debuglog() {};\n\n/**\n * Replace the function used by this module to get the current time.\n *\n * Intended for use by the unit tests.\n *\n * @param {function} f function which should return a millisecond counter\n *\n * @internal\n */\nmodule.exports.setNow = function (f) {\n _now = f || Date.now;\n};\nvar _now = Date.now;\n\n/**\n * reimplementation of window.setTimeout, which will call the callback if\n * the wallclock time goes past the deadline.\n *\n * @param {function} func callback to be called after a delay\n * @param {Number} delayMs number of milliseconds to delay by\n *\n * @return {Number} an identifier for this callback, which may be passed into\n * clearTimeout later.\n */\nmodule.exports.setTimeout = function (func, delayMs) {\n delayMs = delayMs || 0;\n if (delayMs < 0) {\n delayMs = 0;\n }\n\n var params = Array.prototype.slice.call(arguments, 2);\n var runAt = _now() + delayMs;\n var key = _count++;\n debuglog(\"setTimeout: scheduling cb\", key, \"at\", runAt, \"(delay\", delayMs, \")\");\n var data = {\n runAt: runAt,\n func: func,\n params: params,\n key: key\n };\n\n // figure out where it goes in the list\n var idx = binarySearch(_callbackList, function (el) {\n return el.runAt - runAt;\n });\n\n _callbackList.splice(idx, 0, data);\n _scheduleRealCallback();\n\n return key;\n};\n\n/**\n * reimplementation of window.clearTimeout, which mirrors setTimeout\n *\n * @param {Number} key result from an earlier setTimeout call\n */\nmodule.exports.clearTimeout = function (key) {\n if (_callbackList.length === 0) {\n return;\n }\n\n // remove the element from the list\n var i = void 0;\n for (i = 0; i < _callbackList.length; i++) {\n var cb = _callbackList[i];\n if (cb.key == key) {\n _callbackList.splice(i, 1);\n break;\n }\n }\n\n // iff it was the first one in the list, reschedule our callback.\n if (i === 0) {\n _scheduleRealCallback();\n }\n};\n\n// use the real global.setTimeout to schedule a callback to _runCallbacks.\nfunction _scheduleRealCallback() {\n if (_realCallbackKey) {\n global.clearTimeout(_realCallbackKey);\n }\n\n var first = _callbackList[0];\n\n if (!first) {\n debuglog(\"_scheduleRealCallback: no more callbacks, not rescheduling\");\n return;\n }\n\n var now = _now();\n var delayMs = Math.min(first.runAt - now, TIMER_CHECK_PERIOD_MS);\n\n debuglog(\"_scheduleRealCallback: now:\", now, \"delay:\", delayMs);\n _realCallbackKey = global.setTimeout(_runCallbacks, delayMs);\n}\n\nfunction _runCallbacks() {\n var cb = void 0;\n var now = _now();\n debuglog(\"_runCallbacks: now:\", now);\n\n // get the list of things to call\n var callbacksToRun = [];\n while (true) {\n var first = _callbackList[0];\n if (!first || first.runAt > now) {\n break;\n }\n cb = _callbackList.shift();\n debuglog(\"_runCallbacks: popping\", cb.key);\n callbacksToRun.push(cb);\n }\n\n // reschedule the real callback before running our functions, to\n // keep the codepaths the same whether or not our functions\n // register their own setTimeouts.\n _scheduleRealCallback();\n\n for (var i = 0; i < callbacksToRun.length; i++) {\n cb = callbacksToRun[i];\n try {\n cb.func.apply(global, cb.params);\n } catch (e) {\n console.error(\"Uncaught exception in callback function\", e.stack || e);\n }\n }\n}\n\n/* search in a sorted array.\n *\n * returns the index of the last element for which func returns\n * greater than zero, or array.length if no such element exists.\n */\nfunction binarySearch(array, func) {\n // min is inclusive, max exclusive.\n var min = 0,\n max = array.length;\n\n while (min < max) {\n var mid = min + max >> 1;\n var res = func(array[mid]);\n if (res > 0) {\n // the element at 'mid' is too big; set it as the new max.\n max = mid;\n } else {\n // the element at 'mid' is too small. 'min' is inclusive, so +1.\n min = mid + 1;\n }\n }\n // presumably, min==max now.\n return min;\n}\n//# sourceMappingURL=realtime-callbacks.js.map","module.exports = { \"default\": require(\"core-js/library/fn/reflect/get-prototype-of\"), __esModule: true };","require('../../modules/es6.reflect.get-prototype-of');\nmodule.exports = require('../../modules/_core').Reflect.getPrototypeOf;\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/reflect/set-prototype-of\"), __esModule: true };","require('../../modules/es6.reflect.set-prototype-of');\nmodule.exports = require('../../modules/_core').Reflect.setPrototypeOf;\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/reflect/construct\"), __esModule: true };","require('../../modules/es6.reflect.construct');\nmodule.exports = require('../../modules/_core').Reflect.construct;\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.set');\nrequire('../modules/es7.set.to-json');\nrequire('../modules/es7.set.of');\nrequire('../modules/es7.set.from');\nmodule.exports = require('../modules/_core').Set;\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Set', { toJSON: require('./_collection-to-json')('Set') });\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\nrequire('./_set-collection-of')('Set');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\nrequire('./_set-collection-from')('Set');\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _bluebird = require('bluebird');\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _indexeddbCryptoStore = require('./store/indexeddb-crypto-store');\n\nvar _indexeddbCryptoStore2 = _interopRequireDefault(_indexeddbCryptoStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @alias module:crypto/RoomList\n */\nvar RoomList = function () {\n function RoomList(cryptoStore, sessionStore) {\n (0, _classCallCheck3.default)(this, RoomList);\n\n this._cryptoStore = cryptoStore;\n this._sessionStore = sessionStore;\n\n // Object of roomId -> room e2e info object (body of the m.room.encryption event)\n this._roomEncryption = {};\n }\n\n (0, _createClass3.default)(RoomList, [{\n key: 'init',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this = this;\n\n var removeSessionStoreRooms;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n removeSessionStoreRooms = false;\n _context.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ROOMS], function (txn) {\n _this._cryptoStore.getEndToEndRooms(txn, function (result) {\n if (result === null || (0, _keys2.default)(result).length === 0) {\n // migrate from session store, if there's data there\n var sessStoreRooms = _this._sessionStore.getAllEndToEndRooms();\n if (sessStoreRooms !== null) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(sessStoreRooms)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var roomId = _step.value;\n\n _this._cryptoStore.storeEndToEndRoom(roomId, sessStoreRooms[roomId], txn);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n _this._roomEncryption = sessStoreRooms;\n removeSessionStoreRooms = true;\n } else {\n _this._roomEncryption = result;\n }\n });\n }));\n\n case 3:\n if (removeSessionStoreRooms) {\n this._sessionStore.removeAllEndToEndRooms();\n }\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function init() {\n return _ref.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: 'getRoomEncryption',\n value: function getRoomEncryption(roomId) {\n return this._roomEncryption[roomId] || null;\n }\n }, {\n key: 'isRoomEncrypted',\n value: function isRoomEncrypted(roomId) {\n return Boolean(this.getRoomEncryption(roomId));\n }\n }, {\n key: 'setRoomEncryption',\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(roomId, roomInfo) {\n var _this2 = this;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // important that this happens before calling into the store\n // as it prevents the Crypto::setRoomEncryption from calling\n // this twice for consecutive m.room.encryption events\n this._roomEncryption[roomId] = roomInfo;\n _context2.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ROOMS], function (txn) {\n _this2._cryptoStore.storeEndToEndRoom(roomId, roomInfo, txn);\n }));\n\n case 3:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function setRoomEncryption(_x, _x2) {\n return _ref2.apply(this, arguments);\n }\n\n return setRoomEncryption;\n }()\n }]);\n return RoomList;\n}(); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/**\n * @module crypto/RoomList\n *\n * Manages the list of encrypted rooms\n */\n\nexports.default = RoomList;\n//# sourceMappingURL=RoomList.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _memoryCryptoStore = require('./memory-crypto-store.js');\n\nvar _memoryCryptoStore2 = _interopRequireDefault(_memoryCryptoStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Internal module. Partial localStorage backed storage for e2e.\n * This is not a full crypto store, just the in-memory store with\n * some things backed by localStorage. It exists because indexedDB\n * is broken in Firefox private mode or set to, \"will not remember\n * history\".\n *\n * @module\n */\n\n/*\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar E2E_PREFIX = \"crypto.\";\nvar KEY_END_TO_END_ACCOUNT = E2E_PREFIX + \"account\";\nvar KEY_DEVICE_DATA = E2E_PREFIX + \"device_data\";\nvar KEY_INBOUND_SESSION_PREFIX = E2E_PREFIX + \"inboundgroupsessions/\";\nvar KEY_ROOMS_PREFIX = E2E_PREFIX + \"rooms/\";\n\nfunction keyEndToEndSessions(deviceKey) {\n return E2E_PREFIX + \"sessions/\" + deviceKey;\n}\n\nfunction keyEndToEndInboundGroupSession(senderKey, sessionId) {\n return KEY_INBOUND_SESSION_PREFIX + senderKey + \"/\" + sessionId;\n}\n\nfunction keyEndToEndRoomsPrefix(roomId) {\n return KEY_ROOMS_PREFIX + roomId;\n}\n\n/**\n * @implements {module:crypto/store/base~CryptoStore}\n */\n\nvar LocalStorageCryptoStore = function (_MemoryCryptoStore) {\n (0, _inherits3.default)(LocalStorageCryptoStore, _MemoryCryptoStore);\n\n function LocalStorageCryptoStore(webStore) {\n (0, _classCallCheck3.default)(this, LocalStorageCryptoStore);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (LocalStorageCryptoStore.__proto__ || (0, _getPrototypeOf2.default)(LocalStorageCryptoStore)).call(this));\n\n _this.store = webStore;\n return _this;\n }\n\n // Olm Sessions\n\n (0, _createClass3.default)(LocalStorageCryptoStore, [{\n key: 'countEndToEndSessions',\n value: function countEndToEndSessions(txn, func) {\n var count = 0;\n for (var i = 0; i < this.store.length; ++i) {\n if (this.store.key(i).startsWith(keyEndToEndSessions(''))) ++count;\n }\n func(count);\n }\n }, {\n key: '_getEndToEndSessions',\n value: function _getEndToEndSessions(deviceKey, txn, func) {\n return getJsonItem(this.store, keyEndToEndSessions(deviceKey));\n }\n }, {\n key: 'getEndToEndSession',\n value: function getEndToEndSession(deviceKey, sessionId, txn, func) {\n var sessions = this._getEndToEndSessions(deviceKey);\n func(sessions[sessionId] || {});\n }\n }, {\n key: 'getEndToEndSessions',\n value: function getEndToEndSessions(deviceKey, txn, func) {\n func(this._getEndToEndSessions(deviceKey) || {});\n }\n }, {\n key: 'storeEndToEndSession',\n value: function storeEndToEndSession(deviceKey, sessionId, session, txn) {\n var sessions = this._getEndToEndSessions(deviceKey) || {};\n sessions[sessionId] = session;\n setJsonItem(this.store, keyEndToEndSessions(deviceKey), sessions);\n }\n\n // Inbound Group Sessions\n\n }, {\n key: 'getEndToEndInboundGroupSession',\n value: function getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func) {\n func(getJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId)));\n }\n }, {\n key: 'getAllEndToEndInboundGroupSessions',\n value: function getAllEndToEndInboundGroupSessions(txn, func) {\n for (var i = 0; i < this.store.length; ++i) {\n var key = this.store.key(i);\n if (key.startsWith(KEY_INBOUND_SESSION_PREFIX)) {\n // we can't use split, as the components we are trying to split out\n // might themselves contain '/' characters. We rely on the\n // senderKey being a (32-byte) curve25519 key, base64-encoded\n // (hence 43 characters long).\n\n func({\n senderKey: key.substr(KEY_INBOUND_SESSION_PREFIX.length, 43),\n sessionId: key.substr(KEY_INBOUND_SESSION_PREFIX.length + 44),\n sessionData: getJsonItem(this.store, key)\n });\n }\n }\n func(null);\n }\n }, {\n key: 'addEndToEndInboundGroupSession',\n value: function addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n var existing = getJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId));\n if (!existing) {\n this.storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn);\n }\n }\n }, {\n key: 'storeEndToEndInboundGroupSession',\n value: function storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n setJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId), sessionData);\n }\n }, {\n key: 'getEndToEndDeviceData',\n value: function getEndToEndDeviceData(txn, func) {\n func(getJsonItem(this.store, KEY_DEVICE_DATA));\n }\n }, {\n key: 'storeEndToEndDeviceData',\n value: function storeEndToEndDeviceData(deviceData, txn) {\n setJsonItem(this.store, KEY_DEVICE_DATA, deviceData);\n }\n }, {\n key: 'storeEndToEndRoom',\n value: function storeEndToEndRoom(roomId, roomInfo, txn) {\n setJsonItem(this.store, keyEndToEndRoomsPrefix(roomId), roomInfo);\n }\n }, {\n key: 'getEndToEndRooms',\n value: function getEndToEndRooms(txn, func) {\n var result = {};\n var prefix = keyEndToEndRoomsPrefix('');\n\n for (var i = 0; i < this.store.length; ++i) {\n var key = this.store.key(i);\n if (key.startsWith(prefix)) {\n var roomId = key.substr(prefix.length);\n result[roomId] = getJsonItem(this.store, key);\n }\n }\n func(result);\n }\n\n /**\n * Delete all data from this store.\n *\n * @returns {Promise} Promise which resolves when the store has been cleared.\n */\n\n }, {\n key: 'deleteAllData',\n value: function deleteAllData() {\n this.store.removeItem(KEY_END_TO_END_ACCOUNT);\n return _bluebird2.default.resolve();\n }\n\n // Olm account\n\n }, {\n key: 'getAccount',\n value: function getAccount(txn, func) {\n var account = getJsonItem(this.store, KEY_END_TO_END_ACCOUNT);\n func(account);\n }\n }, {\n key: 'storeAccount',\n value: function storeAccount(txn, newData) {\n setJsonItem(this.store, KEY_END_TO_END_ACCOUNT, newData);\n }\n }, {\n key: 'doTxn',\n value: function doTxn(mode, stores, func) {\n return _bluebird2.default.resolve(func(null));\n }\n }]);\n return LocalStorageCryptoStore;\n}(_memoryCryptoStore2.default);\n\nexports.default = LocalStorageCryptoStore;\n\n\nfunction getJsonItem(store, key) {\n try {\n // if the key is absent, store.getItem() returns null, and\n // JSON.parse(null) === null, so this returns null.\n return JSON.parse(store.getItem(key));\n } catch (e) {\n console.log(\"Error: Failed to get key %s: %s\", key, e.stack || e);\n console.log(e.stack);\n }\n return null;\n}\n\nfunction setJsonItem(store, key, val) {\n store.setItem(key, (0, _stringify2.default)(val));\n}\n//# sourceMappingURL=localStorage-crypto-store.js.map","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Backend = exports.VERSION = undefined;\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.upgradeDatabase = upgradeDatabase;\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _utils = require('../../utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar VERSION = exports.VERSION = 6;\n\n/**\n * Implementation of a CryptoStore which is backed by an existing\n * IndexedDB connection. Generally you want IndexedDBCryptoStore\n * which connects to the database and defers to one of these.\n *\n * @implements {module:crypto/store/base~CryptoStore}\n */\n\nvar Backend = exports.Backend = function () {\n /**\n * @param {IDBDatabase} db\n */\n function Backend(db) {\n var _this = this;\n\n (0, _classCallCheck3.default)(this, Backend);\n\n this._db = db;\n\n // make sure we close the db on `onversionchange` - otherwise\n // attempts to delete the database will block (and subsequent\n // attempts to re-create it will also block).\n db.onversionchange = function (ev) {\n console.log('versionchange for indexeddb ' + _this._dbName + ': closing');\n db.close();\n };\n }\n\n /**\n * Look for an existing outgoing room key request, and if none is found,\n * add a new one\n *\n * @param {module:crypto/store/base~OutgoingRoomKeyRequest} request\n *\n * @returns {Promise} resolves to\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}: either the\n * same instance as passed in, or the existing one.\n */\n\n\n (0, _createClass3.default)(Backend, [{\n key: 'getOrAddOutgoingRoomKeyRequest',\n value: function getOrAddOutgoingRoomKeyRequest(request) {\n var requestBody = request.requestBody;\n\n var deferred = _bluebird2.default.defer();\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readwrite\");\n txn.onerror = deferred.reject;\n\n // first see if we already have an entry for this request.\n this._getOutgoingRoomKeyRequest(txn, requestBody, function (existing) {\n if (existing) {\n // this entry matches the request - return it.\n console.log('already have key request outstanding for ' + (requestBody.room_id + ' / ' + requestBody.session_id + ': ') + 'not sending another');\n deferred.resolve(existing);\n return;\n }\n\n // we got to the end of the list without finding a match\n // - add the new request.\n console.log('enqueueing key request for ' + requestBody.room_id + ' / ' + requestBody.session_id);\n txn.oncomplete = function () {\n deferred.resolve(request);\n };\n var store = txn.objectStore(\"outgoingRoomKeyRequests\");\n store.add(request);\n });\n\n return deferred.promise;\n }\n\n /**\n * Look for an existing room key request\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * existing request to look for\n *\n * @return {Promise} resolves to the matching\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * not found\n */\n\n }, {\n key: 'getOutgoingRoomKeyRequest',\n value: function getOutgoingRoomKeyRequest(requestBody) {\n var deferred = _bluebird2.default.defer();\n\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readonly\");\n txn.onerror = deferred.reject;\n\n this._getOutgoingRoomKeyRequest(txn, requestBody, function (existing) {\n deferred.resolve(existing);\n });\n return deferred.promise;\n }\n\n /**\n * look for an existing room key request in the db\n *\n * @private\n * @param {IDBTransaction} txn database transaction\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * existing request to look for\n * @param {Function} callback function to call with the results of the\n * search. Either passed a matching\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * not found.\n */\n\n }, {\n key: '_getOutgoingRoomKeyRequest',\n value: function _getOutgoingRoomKeyRequest(txn, requestBody, callback) {\n var store = txn.objectStore(\"outgoingRoomKeyRequests\");\n\n var idx = store.index(\"session\");\n var cursorReq = idx.openCursor([requestBody.room_id, requestBody.session_id]);\n\n cursorReq.onsuccess = function (ev) {\n var cursor = ev.target.result;\n if (!cursor) {\n // no match found\n callback(null);\n return;\n }\n\n var existing = cursor.value;\n\n if (_utils2.default.deepCompare(existing.requestBody, requestBody)) {\n // got a match\n callback(existing);\n return;\n }\n\n // look at the next entry in the index\n cursor.continue();\n };\n }\n\n /**\n * Look for room key requests by state\n *\n * @param {Array<Number>} wantedStates list of acceptable states\n *\n * @return {Promise} resolves to the a\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * there are no pending requests in those states. If there are multiple\n * requests in those states, an arbitrary one is chosen.\n */\n\n }, {\n key: 'getOutgoingRoomKeyRequestByState',\n value: function getOutgoingRoomKeyRequestByState(wantedStates) {\n if (wantedStates.length === 0) {\n return _bluebird2.default.resolve(null);\n }\n\n // this is a bit tortuous because we need to make sure we do the lookup\n // in a single transaction, to avoid having a race with the insertion\n // code.\n\n // index into the wantedStates array\n var stateIndex = 0;\n var result = void 0;\n\n function onsuccess(ev) {\n var cursor = ev.target.result;\n if (cursor) {\n // got a match\n result = cursor.value;\n return;\n }\n\n // try the next state in the list\n stateIndex++;\n if (stateIndex >= wantedStates.length) {\n // no matches\n return;\n }\n\n var wantedState = wantedStates[stateIndex];\n var cursorReq = ev.target.source.openCursor(wantedState);\n cursorReq.onsuccess = onsuccess;\n }\n\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readonly\");\n var store = txn.objectStore(\"outgoingRoomKeyRequests\");\n\n var wantedState = wantedStates[stateIndex];\n var cursorReq = store.index(\"state\").openCursor(wantedState);\n cursorReq.onsuccess = onsuccess;\n\n return promiseifyTxn(txn).then(function () {\n return result;\n });\n }\n\n /**\n * Look for an existing room key request by id and state, and update it if\n * found\n *\n * @param {string} requestId ID of request to update\n * @param {number} expectedState state we expect to find the request in\n * @param {Object} updates name/value map of updates to apply\n *\n * @returns {Promise} resolves to\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}\n * updated request, or null if no matching row was found\n */\n\n }, {\n key: 'updateOutgoingRoomKeyRequest',\n value: function updateOutgoingRoomKeyRequest(requestId, expectedState, updates) {\n var result = null;\n\n function onsuccess(ev) {\n var cursor = ev.target.result;\n if (!cursor) {\n return;\n }\n var data = cursor.value;\n if (data.state != expectedState) {\n console.warn('Cannot update room key request from ' + expectedState + ' ' + ('as it was already updated to ' + data.state));\n return;\n }\n (0, _assign2.default)(data, updates);\n cursor.update(data);\n result = data;\n }\n\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readwrite\");\n var cursorReq = txn.objectStore(\"outgoingRoomKeyRequests\").openCursor(requestId);\n cursorReq.onsuccess = onsuccess;\n return promiseifyTxn(txn).then(function () {\n return result;\n });\n }\n\n /**\n * Look for an existing room key request by id and state, and delete it if\n * found\n *\n * @param {string} requestId ID of request to update\n * @param {number} expectedState state we expect to find the request in\n *\n * @returns {Promise} resolves once the operation is completed\n */\n\n }, {\n key: 'deleteOutgoingRoomKeyRequest',\n value: function deleteOutgoingRoomKeyRequest(requestId, expectedState) {\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readwrite\");\n var cursorReq = txn.objectStore(\"outgoingRoomKeyRequests\").openCursor(requestId);\n cursorReq.onsuccess = function (ev) {\n var cursor = ev.target.result;\n if (!cursor) {\n return;\n }\n var data = cursor.value;\n if (data.state != expectedState) {\n console.warn('Cannot delete room key request in state ' + data.state + ' ' + ('(expected ' + expectedState + ')'));\n return;\n }\n cursor.delete();\n };\n return promiseifyTxn(txn);\n }\n\n // Olm Account\n\n }, {\n key: 'getAccount',\n value: function getAccount(txn, func) {\n var objectStore = txn.objectStore(\"account\");\n var getReq = objectStore.get(\"-\");\n getReq.onsuccess = function () {\n try {\n func(getReq.result || null);\n } catch (e) {\n abortWithException(txn, e);\n }\n };\n }\n }, {\n key: 'storeAccount',\n value: function storeAccount(txn, newData) {\n var objectStore = txn.objectStore(\"account\");\n objectStore.put(newData, \"-\");\n }\n\n // Olm Sessions\n\n }, {\n key: 'countEndToEndSessions',\n value: function countEndToEndSessions(txn, func) {\n var objectStore = txn.objectStore(\"sessions\");\n var countReq = objectStore.count();\n countReq.onsuccess = function () {\n func(countReq.result);\n };\n }\n }, {\n key: 'getEndToEndSessions',\n value: function getEndToEndSessions(deviceKey, txn, func) {\n var objectStore = txn.objectStore(\"sessions\");\n var idx = objectStore.index(\"deviceKey\");\n var getReq = idx.openCursor(deviceKey);\n var results = {};\n getReq.onsuccess = function () {\n var cursor = getReq.result;\n if (cursor) {\n results[cursor.value.sessionId] = cursor.value.session;\n cursor.continue();\n } else {\n try {\n func(results);\n } catch (e) {\n abortWithException(txn, e);\n }\n }\n };\n }\n }, {\n key: 'getEndToEndSession',\n value: function getEndToEndSession(deviceKey, sessionId, txn, func) {\n var objectStore = txn.objectStore(\"sessions\");\n var getReq = objectStore.get([deviceKey, sessionId]);\n getReq.onsuccess = function () {\n try {\n if (getReq.result) {\n func(getReq.result.session);\n } else {\n func(null);\n }\n } catch (e) {\n abortWithException(txn, e);\n }\n };\n }\n }, {\n key: 'storeEndToEndSession',\n value: function storeEndToEndSession(deviceKey, sessionId, session, txn) {\n var objectStore = txn.objectStore(\"sessions\");\n objectStore.put({ deviceKey: deviceKey, sessionId: sessionId, session: session });\n }\n\n // Inbound group sessions\n\n }, {\n key: 'getEndToEndInboundGroupSession',\n value: function getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func) {\n var objectStore = txn.objectStore(\"inbound_group_sessions\");\n var getReq = objectStore.get([senderCurve25519Key, sessionId]);\n getReq.onsuccess = function () {\n try {\n if (getReq.result) {\n func(getReq.result.session);\n } else {\n func(null);\n }\n } catch (e) {\n abortWithException(txn, e);\n }\n };\n }\n }, {\n key: 'getAllEndToEndInboundGroupSessions',\n value: function getAllEndToEndInboundGroupSessions(txn, func) {\n var objectStore = txn.objectStore(\"inbound_group_sessions\");\n var getReq = objectStore.openCursor();\n getReq.onsuccess = function () {\n var cursor = getReq.result;\n if (cursor) {\n try {\n func({\n senderKey: cursor.value.senderCurve25519Key,\n sessionId: cursor.value.sessionId,\n sessionData: cursor.value.session\n });\n } catch (e) {\n abortWithException(txn, e);\n }\n cursor.continue();\n } else {\n try {\n func(null);\n } catch (e) {\n abortWithException(txn, e);\n }\n }\n };\n }\n }, {\n key: 'addEndToEndInboundGroupSession',\n value: function addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n var objectStore = txn.objectStore(\"inbound_group_sessions\");\n var addReq = objectStore.add({\n senderCurve25519Key: senderCurve25519Key, sessionId: sessionId, session: sessionData\n });\n addReq.onerror = function (ev) {\n if (addReq.error.name === 'ConstraintError') {\n // This stops the error from triggering the txn's onerror\n ev.stopPropagation();\n // ...and this stops it from aborting the transaction\n ev.preventDefault();\n console.log(\"Ignoring duplicate inbound group session: \" + senderCurve25519Key + \" / \" + sessionId);\n } else {\n abortWithException(txn, new Error(\"Failed to add inbound group session: \" + addReq.error));\n }\n };\n }\n }, {\n key: 'storeEndToEndInboundGroupSession',\n value: function storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n var objectStore = txn.objectStore(\"inbound_group_sessions\");\n objectStore.put({\n senderCurve25519Key: senderCurve25519Key, sessionId: sessionId, session: sessionData\n });\n }\n }, {\n key: 'getEndToEndDeviceData',\n value: function getEndToEndDeviceData(txn, func) {\n var objectStore = txn.objectStore(\"device_data\");\n var getReq = objectStore.get(\"-\");\n getReq.onsuccess = function () {\n try {\n func(getReq.result || null);\n } catch (e) {\n abortWithException(txn, e);\n }\n };\n }\n }, {\n key: 'storeEndToEndDeviceData',\n value: function storeEndToEndDeviceData(deviceData, txn) {\n var objectStore = txn.objectStore(\"device_data\");\n objectStore.put(deviceData, \"-\");\n }\n }, {\n key: 'storeEndToEndRoom',\n value: function storeEndToEndRoom(roomId, roomInfo, txn) {\n var objectStore = txn.objectStore(\"rooms\");\n objectStore.put(roomInfo, roomId);\n }\n }, {\n key: 'getEndToEndRooms',\n value: function getEndToEndRooms(txn, func) {\n var rooms = {};\n var objectStore = txn.objectStore(\"rooms\");\n var getReq = objectStore.openCursor();\n getReq.onsuccess = function () {\n var cursor = getReq.result;\n if (cursor) {\n rooms[cursor.key] = cursor.value;\n cursor.continue();\n } else {\n try {\n func(rooms);\n } catch (e) {\n abortWithException(txn, e);\n }\n }\n };\n }\n }, {\n key: 'doTxn',\n value: function doTxn(mode, stores, func) {\n var txn = this._db.transaction(stores, mode);\n var promise = promiseifyTxn(txn);\n var result = func(txn);\n return promise.then(function () {\n return result;\n });\n }\n }]);\n return Backend;\n}();\n\nfunction upgradeDatabase(db, oldVersion) {\n console.log('Upgrading IndexedDBCryptoStore from version ' + oldVersion + (' to ' + VERSION));\n if (oldVersion < 1) {\n // The database did not previously exist.\n createDatabase(db);\n }\n if (oldVersion < 2) {\n db.createObjectStore(\"account\");\n }\n if (oldVersion < 3) {\n var sessionsStore = db.createObjectStore(\"sessions\", {\n keyPath: [\"deviceKey\", \"sessionId\"]\n });\n sessionsStore.createIndex(\"deviceKey\", \"deviceKey\");\n }\n if (oldVersion < 4) {\n db.createObjectStore(\"inbound_group_sessions\", {\n keyPath: [\"senderCurve25519Key\", \"sessionId\"]\n });\n }\n if (oldVersion < 5) {\n db.createObjectStore(\"device_data\");\n }\n if (oldVersion < 6) {\n db.createObjectStore(\"rooms\");\n }\n // Expand as needed.\n}\n\nfunction createDatabase(db) {\n var outgoingRoomKeyRequestsStore = db.createObjectStore(\"outgoingRoomKeyRequests\", { keyPath: \"requestId\" });\n\n // we assume that the RoomKeyRequestBody will have room_id and session_id\n // properties, to make the index efficient.\n outgoingRoomKeyRequestsStore.createIndex(\"session\", [\"requestBody.room_id\", \"requestBody.session_id\"]);\n\n outgoingRoomKeyRequestsStore.createIndex(\"state\", \"state\");\n}\n\n/*\n * Aborts a transaction with a given exception\n * The transaction promise will be rejected with this exception.\n */\nfunction abortWithException(txn, e) {\n // We cheekily stick our exception onto the transaction object here\n // We could alternatively make the thing we pass back to the app\n // an object containing the transaction and exception.\n txn._mx_abortexception = e;\n try {\n txn.abort();\n } catch (e) {\n // sometimes we won't be able to abort the transaction\n // (ie. if it's aborted or completed)\n }\n}\n\nfunction promiseifyTxn(txn) {\n return new _bluebird2.default(function (resolve, reject) {\n txn.oncomplete = function () {\n if (txn._mx_abortexception !== undefined) {\n reject(txn._mx_abortexception);\n }\n resolve();\n };\n txn.onerror = function () {\n if (txn._mx_abortexception !== undefined) {\n reject(txn._mx_abortexception);\n }\n reject();\n };\n txn.onabort = function () {\n return reject(txn._mx_abortexception);\n };\n });\n}\n//# sourceMappingURL=indexeddb-crypto-store-backend.js.map","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n","require('../../modules/es6.number.is-finite');\nmodule.exports = require('../../modules/_core').Number.isFinite;\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module models/search-result\n */\n\nvar EventContext = require(\"./event-context\");\nvar utils = require(\"../utils\");\n\n/**\n * Construct a new SearchResult\n *\n * @param {number} rank where this SearchResult ranks in the results\n * @param {event-context.EventContext} eventContext the matching event and its\n * context\n *\n * @constructor\n */\nfunction SearchResult(rank, eventContext) {\n this.rank = rank;\n this.context = eventContext;\n}\n\n/**\n * Create a SearchResponse from the response to /search\n * @static\n * @param {Object} jsonObj\n * @param {function} eventMapper\n * @return {SearchResult}\n */\n\nSearchResult.fromJson = function (jsonObj, eventMapper) {\n var jsonContext = jsonObj.context || {};\n var events_before = jsonContext.events_before || [];\n var events_after = jsonContext.events_after || [];\n\n var context = new EventContext(eventMapper(jsonObj.result));\n\n context.setPaginateToken(jsonContext.start, true);\n context.addEvents(utils.map(events_before, eventMapper), true);\n context.addEvents(utils.map(events_after, eventMapper), false);\n context.setPaginateToken(jsonContext.end, false);\n\n return new SearchResult(jsonObj.rank, context);\n};\n\n/**\n * The SearchResult class\n */\nmodule.exports = SearchResult;\n//# sourceMappingURL=search-result.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module models/event-context\n */\n\n/**\n * Construct a new EventContext\n *\n * An eventcontext is used for circumstances such as search results, when we\n * have a particular event of interest, and a bunch of events before and after\n * it.\n *\n * It also stores pagination tokens for going backwards and forwards in the\n * timeline.\n *\n * @param {MatrixEvent} ourEvent the event at the centre of this context\n *\n * @constructor\n */\n\nfunction EventContext(ourEvent) {\n this._timeline = [ourEvent];\n this._ourEventIndex = 0;\n this._paginateTokens = { b: null, f: null };\n\n // this is used by MatrixClient to keep track of active requests\n this._paginateRequests = { b: null, f: null };\n}\n\n/**\n * Get the main event of interest\n *\n * This is a convenience function for getTimeline()[getOurEventIndex()].\n *\n * @return {MatrixEvent} The event at the centre of this context.\n */\nEventContext.prototype.getEvent = function () {\n return this._timeline[this._ourEventIndex];\n};\n\n/**\n * Get the list of events in this context\n *\n * @return {Array} An array of MatrixEvents\n */\nEventContext.prototype.getTimeline = function () {\n return this._timeline;\n};\n\n/**\n * Get the index in the timeline of our event\n *\n * @return {Number}\n */\nEventContext.prototype.getOurEventIndex = function () {\n return this._ourEventIndex;\n};\n\n/**\n * Get a pagination token.\n *\n * @param {boolean} backwards true to get the pagination token for going\n * backwards in time\n * @return {string}\n */\nEventContext.prototype.getPaginateToken = function (backwards) {\n return this._paginateTokens[backwards ? 'b' : 'f'];\n};\n\n/**\n * Set a pagination token.\n *\n * Generally this will be used only by the matrix js sdk.\n *\n * @param {string} token pagination token\n * @param {boolean} backwards true to set the pagination token for going\n * backwards in time\n */\nEventContext.prototype.setPaginateToken = function (token, backwards) {\n this._paginateTokens[backwards ? 'b' : 'f'] = token;\n};\n\n/**\n * Add more events to the timeline\n *\n * @param {Array} events new events, in timeline order\n * @param {boolean} atStart true to insert new events at the start\n */\nEventContext.prototype.addEvents = function (events, atStart) {\n // TODO: should we share logic with Room.addEventsToTimeline?\n // Should Room even use EventContext?\n\n if (atStart) {\n this._timeline = events.concat(this._timeline);\n this._ourEventIndex += events.length;\n } else {\n this._timeline = this._timeline.concat(events);\n }\n};\n\n/**\n * The EventContext class\n */\nmodule.exports = EventContext;\n//# sourceMappingURL=event-context.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * This is an internal module.\n * @module store/stub\n */\n\n/**\n * Construct a stub store. This does no-ops on most store methods.\n * @constructor\n */\nfunction StubStore() {\n this.fromToken = null;\n}\n\nStubStore.prototype = {\n\n /** @return {Promise<bool>} whether or not the database was newly created in this session. */\n isNewlyCreated: function isNewlyCreated() {\n return _bluebird2.default.resolve(true);\n },\n\n /**\n * Get the sync token.\n * @return {string}\n */\n getSyncToken: function getSyncToken() {\n return this.fromToken;\n },\n\n /**\n * Set the sync token.\n * @param {string} token\n */\n setSyncToken: function setSyncToken(token) {\n this.fromToken = token;\n },\n\n /**\n * No-op.\n * @param {Group} group\n */\n storeGroup: function storeGroup(group) {},\n\n /**\n * No-op.\n * @param {string} groupId\n * @return {null}\n */\n getGroup: function getGroup(groupId) {\n return null;\n },\n\n /**\n * No-op.\n * @return {Array} An empty array.\n */\n getGroups: function getGroups() {\n return [];\n },\n\n /**\n * No-op.\n * @param {Room} room\n */\n storeRoom: function storeRoom(room) {},\n\n /**\n * No-op.\n * @param {string} roomId\n * @return {null}\n */\n getRoom: function getRoom(roomId) {\n return null;\n },\n\n /**\n * No-op.\n * @return {Array} An empty array.\n */\n getRooms: function getRooms() {\n return [];\n },\n\n /**\n * Permanently delete a room.\n * @param {string} roomId\n */\n removeRoom: function removeRoom(roomId) {\n return;\n },\n\n /**\n * No-op.\n * @return {Array} An empty array.\n */\n getRoomSummaries: function getRoomSummaries() {\n return [];\n },\n\n /**\n * No-op.\n * @param {User} user\n */\n storeUser: function storeUser(user) {},\n\n /**\n * No-op.\n * @param {string} userId\n * @return {null}\n */\n getUser: function getUser(userId) {\n return null;\n },\n\n /**\n * No-op.\n * @return {User[]}\n */\n getUsers: function getUsers() {\n return [];\n },\n\n /**\n * No-op.\n * @param {Room} room\n * @param {integer} limit\n * @return {Array}\n */\n scrollback: function scrollback(room, limit) {\n return [];\n },\n\n /**\n * Store events for a room.\n * @param {Room} room The room to store events for.\n * @param {Array<MatrixEvent>} events The events to store.\n * @param {string} token The token associated with these events.\n * @param {boolean} toStart True if these are paginated results.\n */\n storeEvents: function storeEvents(room, events, token, toStart) {},\n\n /**\n * Store a filter.\n * @param {Filter} filter\n */\n storeFilter: function storeFilter(filter) {},\n\n /**\n * Retrieve a filter.\n * @param {string} userId\n * @param {string} filterId\n * @return {?Filter} A filter or null.\n */\n getFilter: function getFilter(userId, filterId) {\n return null;\n },\n\n /**\n * Retrieve a filter ID with the given name.\n * @param {string} filterName The filter name.\n * @return {?string} The filter ID or null.\n */\n getFilterIdByName: function getFilterIdByName(filterName) {\n return null;\n },\n\n /**\n * Set a filter name to ID mapping.\n * @param {string} filterName\n * @param {string} filterId\n */\n setFilterIdByName: function setFilterIdByName(filterName, filterId) {},\n\n /**\n * Store user-scoped account data events\n * @param {Array<MatrixEvent>} events The events to store.\n */\n storeAccountDataEvents: function storeAccountDataEvents(events) {},\n\n /**\n * Get account data event by event type\n * @param {string} eventType The event type being queried\n */\n getAccountData: function getAccountData(eventType) {},\n\n /**\n * setSyncData does nothing as there is no backing data store.\n *\n * @param {Object} syncData The sync data\n * @return {Promise} An immediately resolved promise.\n */\n setSyncData: function setSyncData(syncData) {\n return _bluebird2.default.resolve();\n },\n\n /**\n * We never want to save becase we have nothing to save to.\n *\n * @return {boolean} If the store wants to save\n */\n wantsSave: function wantsSave() {\n return false;\n },\n\n /**\n * Save does nothing as there is no backing data store.\n */\n save: function save() {},\n\n /**\n * Startup does nothing.\n * @return {Promise} An immediately resolved promise.\n */\n startup: function startup() {\n return _bluebird2.default.resolve();\n },\n\n /**\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\n getSavedSync: function getSavedSync() {\n return _bluebird2.default.resolve(null);\n },\n\n /**\n * @return {Promise} If there is a saved sync, the nextBatch token\n * for this sync, otherwise null.\n */\n getSavedSyncToken: function getSavedSyncToken() {\n return _bluebird2.default.resolve(null);\n },\n\n /**\n * Delete all data from this store. Does nothing since this store\n * doesn't store anything.\n * @return {Promise} An immediately resolved promise.\n */\n deleteAllData: function deleteAllData() {\n return _bluebird2.default.resolve();\n },\n\n getOutOfBandMembers: function getOutOfBandMembers() {\n return _bluebird2.default.resolve(null);\n },\n\n setOutOfBandMembers: function setOutOfBandMembers() {\n return _bluebird2.default.resolve();\n },\n\n clearOutOfBandMembers: function clearOutOfBandMembers() {\n return _bluebird2.default.resolve();\n },\n\n getClientOptions: function getClientOptions() {\n return _bluebird2.default.resolve();\n },\n\n storeClientOptions: function storeClientOptions() {\n return _bluebird2.default.resolve();\n }\n};\n\n/** Stub Store class. */\nmodule.exports = StubStore;\n//# sourceMappingURL=stub.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module filter-component\n */\n\n/**\n * Checks if a value matches a given field value, which may be a * terminated\n * wildcard pattern.\n * @param {String} actual_value The value to be compared\n * @param {String} filter_value The filter pattern to be compared\n * @return {bool} true if the actual_value matches the filter_value\n */\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _matches_wildcard(actual_value, filter_value) {\n if (filter_value.endsWith(\"*\")) {\n var type_prefix = filter_value.slice(0, -1);\n return actual_value.substr(0, type_prefix.length) === type_prefix;\n } else {\n return actual_value === filter_value;\n }\n}\n\n/**\n * FilterComponent is a section of a Filter definition which defines the\n * types, rooms, senders filters etc to be applied to a particular type of resource.\n * This is all ported over from synapse's Filter object.\n *\n * N.B. that synapse refers to these as 'Filters', and what js-sdk refers to as\n * 'Filters' are referred to as 'FilterCollections'.\n *\n * @constructor\n * @param {Object} filter_json the definition of this filter JSON, e.g. { 'contains_url': true }\n */\nfunction FilterComponent(filter_json) {\n this.filter_json = filter_json;\n\n this.types = filter_json.types || null;\n this.not_types = filter_json.not_types || [];\n\n this.rooms = filter_json.rooms || null;\n this.not_rooms = filter_json.not_rooms || [];\n\n this.senders = filter_json.senders || null;\n this.not_senders = filter_json.not_senders || [];\n\n this.contains_url = filter_json.contains_url || null;\n}\n\n/**\n * Checks with the filter component matches the given event\n * @param {MatrixEvent} event event to be checked against the filter\n * @return {bool} true if the event matches the filter\n */\nFilterComponent.prototype.check = function (event) {\n return this._checkFields(event.getRoomId(), event.getSender(), event.getType(), event.getContent() ? event.getContent().url !== undefined : false);\n};\n\n/**\n * Checks whether the filter component matches the given event fields.\n * @param {String} room_id the room_id for the event being checked\n * @param {String} sender the sender of the event being checked\n * @param {String} event_type the type of the event being checked\n * @param {String} contains_url whether the event contains a content.url field\n * @return {bool} true if the event fields match the filter\n */\nFilterComponent.prototype._checkFields = function (room_id, sender, event_type, contains_url) {\n var literal_keys = {\n \"rooms\": function rooms(v) {\n return room_id === v;\n },\n \"senders\": function senders(v) {\n return sender === v;\n },\n \"types\": function types(v) {\n return _matches_wildcard(event_type, v);\n }\n };\n\n var self = this;\n for (var n = 0; n < (0, _keys2.default)(literal_keys).length; n++) {\n var name = (0, _keys2.default)(literal_keys)[n];\n var match_func = literal_keys[name];\n var not_name = \"not_\" + name;\n var disallowed_values = self[not_name];\n if (disallowed_values.filter(match_func).length > 0) {\n return false;\n }\n\n var allowed_values = self[name];\n if (allowed_values) {\n if (!allowed_values.map(match_func)) {\n return false;\n }\n }\n }\n\n var contains_url_filter = this.filter_json.contains_url;\n if (contains_url_filter !== undefined) {\n if (contains_url_filter !== contains_url) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * Filters a list of events down to those which match this filter component\n * @param {MatrixEvent[]} events Events to be checked againt the filter component\n * @return {MatrixEvent[]} events which matched the filter component\n */\nFilterComponent.prototype.filter = function (events) {\n return events.filter(this.check, this);\n};\n\n/**\n * Returns the limit field for a given filter component, providing a default of\n * 10 if none is otherwise specified. Cargo-culted from Synapse.\n * @return {Number} the limit for this filter component.\n */\nFilterComponent.prototype.limit = function () {\n return this.filter_json.limit !== undefined ? this.filter_json.limit : 10;\n};\n\n/** The FilterComponent class */\nmodule.exports = FilterComponent;\n//# sourceMappingURL=filter-component.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/*\n * TODO:\n * This class mainly serves to take all the syncing logic out of client.js and\n * into a separate file. It's all very fluid, and this class gut wrenches a lot\n * of MatrixClient props (e.g. _http). Given we want to support WebSockets as\n * an alternative syncing API, we may want to have a proper syncing interface\n * for HTTP and WS at some point.\n */\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _errors = require(\"./errors\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar User = require(\"./models/user\");\nvar Room = require(\"./models/room\");\nvar Group = require('./models/group');\nvar utils = require(\"./utils\");\nvar Filter = require(\"./filter\");\nvar EventTimeline = require(\"./models/event-timeline\");\n\nvar DEBUG = true;\n\n// /sync requests allow you to set a timeout= but the request may continue\n// beyond that and wedge forever, so we need to track how long we are willing\n// to keep open the connection. This constant is *ADDED* to the timeout= value\n// to determine the max time we're willing to wait.\nvar BUFFER_PERIOD_MS = 80 * 1000;\n\n// Number of consecutive failed syncs that will lead to a syncState of ERROR as opposed\n// to RECONNECTING. This is needed to inform the client of server issues when the\n// keepAlive is successful but the server /sync fails.\nvar FAILED_SYNC_ERROR_THRESHOLD = 3;\n\nfunction getFilterName(userId, suffix) {\n // scope this on the user ID because people may login on many accounts\n // and they all need to be stored!\n return \"FILTER_SYNC_\" + userId + (suffix ? \"_\" + suffix : \"\");\n}\n\nfunction debuglog() {\n var _console;\n\n if (!DEBUG) {\n return;\n }\n (_console = console).log.apply(_console, arguments);\n}\n\n/**\n * <b>Internal class - unstable.</b>\n * Construct an entity which is able to sync with a homeserver.\n * @constructor\n * @param {MatrixClient} client The matrix client instance to use.\n * @param {Object} opts Config options\n * @param {module:crypto=} opts.crypto Crypto manager\n * @param {Function=} opts.canResetEntireTimeline A function which is called\n * with a room ID and returns a boolean. It should return 'true' if the SDK can\n * SAFELY remove events from this room. It may not be safe to remove events if\n * there are other references to the timelines for this room.\n * Default: returns false.\n * @param {Boolean=} opts.disablePresence True to perform syncing without automatically\n * updating presence.\n */\nfunction SyncApi(client, opts) {\n this.client = client;\n opts = opts || {};\n opts.initialSyncLimit = opts.initialSyncLimit === undefined ? 8 : opts.initialSyncLimit;\n opts.resolveInvitesToProfiles = opts.resolveInvitesToProfiles || false;\n opts.pollTimeout = opts.pollTimeout || 30 * 1000;\n opts.pendingEventOrdering = opts.pendingEventOrdering || \"chronological\";\n if (!opts.canResetEntireTimeline) {\n opts.canResetEntireTimeline = function (roomId) {\n return false;\n };\n }\n this.opts = opts;\n this._peekRoomId = null;\n this._currentSyncRequest = null;\n this._syncState = null;\n this._syncStateData = null; // additional data (eg. error object for failed sync)\n this._catchingUp = false;\n this._running = false;\n this._keepAliveTimer = null;\n this._connectionReturnedDefer = null;\n this._notifEvents = []; // accumulator of sync events in the current sync response\n this._failedSyncCount = 0; // Number of consecutive failed /sync requests\n this._storeIsInvalid = false; // flag set if the store needs to be cleared before we can start\n\n if (client.getNotifTimelineSet()) {\n client.reEmitter.reEmit(client.getNotifTimelineSet(), [\"Room.timeline\", \"Room.timelineReset\"]);\n }\n}\n\n/**\n * @param {string} roomId\n * @return {Room}\n */\nSyncApi.prototype.createRoom = function (roomId) {\n var client = this.client;\n var room = new Room(roomId, client, client.getUserId(), {\n lazyLoadMembers: this.opts.lazyLoadMembers,\n pendingEventOrdering: this.opts.pendingEventOrdering,\n timelineSupport: client.timelineSupport\n });\n client.reEmitter.reEmit(room, [\"Room.name\", \"Room.timeline\", \"Room.redaction\", \"Room.receipt\", \"Room.tags\", \"Room.timelineReset\", \"Room.localEchoUpdated\", \"Room.accountData\", \"Room.myMembership\"]);\n this._registerStateListeners(room);\n return room;\n};\n\n/**\n * @param {string} groupId\n * @return {Group}\n */\nSyncApi.prototype.createGroup = function (groupId) {\n var client = this.client;\n var group = new Group(groupId);\n client.reEmitter.reEmit(group, [\"Group.profile\", \"Group.myMembership\"]);\n client.store.storeGroup(group);\n return group;\n};\n\n/**\n * @param {Room} room\n * @private\n */\nSyncApi.prototype._registerStateListeners = function (room) {\n var client = this.client;\n // we need to also re-emit room state and room member events, so hook it up\n // to the client now. We need to add a listener for RoomState.members in\n // order to hook them correctly. (TODO: find a better way?)\n client.reEmitter.reEmit(room.currentState, [\"RoomState.events\", \"RoomState.members\", \"RoomState.newMember\"]);\n room.currentState.on(\"RoomState.newMember\", function (event, state, member) {\n member.user = client.getUser(member.userId);\n client.reEmitter.reEmit(member, [\"RoomMember.name\", \"RoomMember.typing\", \"RoomMember.powerLevel\", \"RoomMember.membership\"]);\n });\n};\n\n/**\n * @param {Room} room\n * @private\n */\nSyncApi.prototype._deregisterStateListeners = function (room) {\n // could do with a better way of achieving this.\n room.currentState.removeAllListeners(\"RoomState.events\");\n room.currentState.removeAllListeners(\"RoomState.members\");\n room.currentState.removeAllListeners(\"RoomState.newMember\");\n};\n\n/**\n * Sync rooms the user has left.\n * @return {Promise} Resolved when they've been added to the store.\n */\nSyncApi.prototype.syncLeftRooms = function () {\n var client = this.client;\n var self = this;\n\n // grab a filter with limit=1 and include_leave=true\n var filter = new Filter(this.client.credentials.userId);\n filter.setTimelineLimit(1);\n filter.setIncludeLeaveRooms(true);\n\n var localTimeoutMs = this.opts.pollTimeout + BUFFER_PERIOD_MS;\n var qps = {\n timeout: 0 // don't want to block since this is a single isolated req\n };\n\n return client.getOrCreateFilter(getFilterName(client.credentials.userId, \"LEFT_ROOMS\"), filter).then(function (filterId) {\n qps.filter = filterId;\n return client._http.authedRequest(undefined, \"GET\", \"/sync\", qps, undefined, localTimeoutMs);\n }).then(function (data) {\n var leaveRooms = [];\n if (data.rooms && data.rooms.leave) {\n leaveRooms = self._mapSyncResponseToRoomArray(data.rooms.leave);\n }\n var rooms = [];\n leaveRooms.forEach(function (leaveObj) {\n var room = leaveObj.room;\n rooms.push(room);\n if (!leaveObj.isBrandNewRoom) {\n // the intention behind syncLeftRooms is to add in rooms which were\n // *omitted* from the initial /sync. Rooms the user were joined to\n // but then left whilst the app is running will appear in this list\n // and we do not want to bother with them since they will have the\n // current state already (and may get dupe messages if we add\n // yet more timeline events!), so skip them.\n // NB: When we persist rooms to localStorage this will be more\n // complicated...\n return;\n }\n leaveObj.timeline = leaveObj.timeline || {};\n var timelineEvents = self._mapSyncEventsFormat(leaveObj.timeline, room);\n var stateEvents = self._mapSyncEventsFormat(leaveObj.state, room);\n\n // set the back-pagination token. Do this *before* adding any\n // events so that clients can start back-paginating.\n room.getLiveTimeline().setPaginationToken(leaveObj.timeline.prev_batch, EventTimeline.BACKWARDS);\n\n self._processRoomEvents(room, stateEvents, timelineEvents);\n\n room.recalculate();\n client.store.storeRoom(room);\n client.emit(\"Room\", room);\n\n self._processEventsForNotifs(room, timelineEvents);\n });\n return rooms;\n });\n};\n\n/**\n * Peek into a room. This will result in the room in question being synced so it\n * is accessible via getRooms(). Live updates for the room will be provided.\n * @param {string} roomId The room ID to peek into.\n * @return {Promise} A promise which resolves once the room has been added to the\n * store.\n */\nSyncApi.prototype.peek = function (roomId) {\n var self = this;\n var client = this.client;\n this._peekRoomId = roomId;\n return this.client.roomInitialSync(roomId, 20).then(function (response) {\n // make sure things are init'd\n response.messages = response.messages || {};\n response.messages.chunk = response.messages.chunk || [];\n response.state = response.state || [];\n\n var peekRoom = self.createRoom(roomId);\n\n // FIXME: Mostly duplicated from _processRoomEvents but not entirely\n // because \"state\" in this API is at the BEGINNING of the chunk\n var oldStateEvents = utils.map(utils.deepCopy(response.state), client.getEventMapper());\n var stateEvents = utils.map(response.state, client.getEventMapper());\n var messages = utils.map(response.messages.chunk, client.getEventMapper());\n\n // XXX: copypasted from /sync until we kill off this\n // minging v1 API stuff)\n // handle presence events (User objects)\n if (response.presence && utils.isArray(response.presence)) {\n response.presence.map(client.getEventMapper()).forEach(function (presenceEvent) {\n var user = client.store.getUser(presenceEvent.getContent().user_id);\n if (user) {\n user.setPresenceEvent(presenceEvent);\n } else {\n user = createNewUser(client, presenceEvent.getContent().user_id);\n user.setPresenceEvent(presenceEvent);\n client.store.storeUser(user);\n }\n client.emit(\"event\", presenceEvent);\n });\n }\n\n // set the pagination token before adding the events in case people\n // fire off pagination requests in response to the Room.timeline\n // events.\n if (response.messages.start) {\n peekRoom.oldState.paginationToken = response.messages.start;\n }\n\n // set the state of the room to as it was after the timeline executes\n peekRoom.oldState.setStateEvents(oldStateEvents);\n peekRoom.currentState.setStateEvents(stateEvents);\n\n self._resolveInvites(peekRoom);\n peekRoom.recalculate();\n\n // roll backwards to diverge old state. addEventsToTimeline\n // will overwrite the pagination token, so make sure it overwrites\n // it with the right thing.\n peekRoom.addEventsToTimeline(messages.reverse(), true, peekRoom.getLiveTimeline(), response.messages.start);\n\n client.store.storeRoom(peekRoom);\n client.emit(\"Room\", peekRoom);\n\n self._peekPoll(peekRoom);\n return peekRoom;\n });\n};\n\n/**\n * Stop polling for updates in the peeked room. NOPs if there is no room being\n * peeked.\n */\nSyncApi.prototype.stopPeeking = function () {\n this._peekRoomId = null;\n};\n\n/**\n * Do a peek room poll.\n * @param {Room} peekRoom\n * @param {string} token from= token\n */\nSyncApi.prototype._peekPoll = function (peekRoom, token) {\n if (this._peekRoomId !== peekRoom.roomId) {\n debuglog(\"Stopped peeking in room %s\", peekRoom.roomId);\n return;\n }\n\n var self = this;\n // FIXME: gut wrenching; hard-coded timeout values\n this.client._http.authedRequest(undefined, \"GET\", \"/events\", {\n room_id: peekRoom.roomId,\n timeout: 30 * 1000,\n from: token\n }, undefined, 50 * 1000).done(function (res) {\n if (self._peekRoomId !== peekRoom.roomId) {\n debuglog(\"Stopped peeking in room %s\", peekRoom.roomId);\n return;\n }\n // We have a problem that we get presence both from /events and /sync\n // however, /sync only returns presence for users in rooms\n // you're actually joined to.\n // in order to be sure to get presence for all of the users in the\n // peeked room, we handle presence explicitly here. This may result\n // in duplicate presence events firing for some users, which is a\n // performance drain, but such is life.\n // XXX: copypasted from /sync until we can kill this minging v1 stuff.\n\n res.chunk.filter(function (e) {\n return e.type === \"m.presence\";\n }).map(self.client.getEventMapper()).forEach(function (presenceEvent) {\n var user = self.client.store.getUser(presenceEvent.getContent().user_id);\n if (user) {\n user.setPresenceEvent(presenceEvent);\n } else {\n user = createNewUser(self.client, presenceEvent.getContent().user_id);\n user.setPresenceEvent(presenceEvent);\n self.client.store.storeUser(user);\n }\n self.client.emit(\"event\", presenceEvent);\n });\n\n // strip out events which aren't for the given room_id (e.g presence)\n var events = res.chunk.filter(function (e) {\n return e.room_id === peekRoom.roomId;\n }).map(self.client.getEventMapper());\n\n peekRoom.addLiveEvents(events);\n self._peekPoll(peekRoom, res.end);\n }, function (err) {\n console.error(\"[%s] Peek poll failed: %s\", peekRoom.roomId, err);\n setTimeout(function () {\n self._peekPoll(peekRoom, token);\n }, 30 * 1000);\n });\n};\n\n/**\n * Returns the current state of this sync object\n * @see module:client~MatrixClient#event:\"sync\"\n * @return {?String}\n */\nSyncApi.prototype.getSyncState = function () {\n return this._syncState;\n};\n\n/**\n * Returns the additional data object associated with\n * the current sync state, or null if there is no\n * such data.\n * Sync errors, if available, are put in the 'error' key of\n * this object.\n * @return {?Object}\n */\nSyncApi.prototype.getSyncStateData = function () {\n return this._syncStateData;\n};\n\nSyncApi.prototype.recoverFromSyncStartupError = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(savedSyncPromise, err) {\n var keepaliveProm;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(savedSyncPromise);\n\n case 2:\n keepaliveProm = this._startKeepAlives();\n\n this._updateSyncState(\"ERROR\", { error: err });\n _context.next = 6;\n return (0, _bluebird.resolve)(keepaliveProm);\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Is the lazy loading option different than in previous session?\n * @param {bool} lazyLoadMembers current options for lazy loading\n * @return {bool} whether or not the option has changed compared to the previous session */\nSyncApi.prototype._wasLazyLoadingToggled = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(lazyLoadMembers) {\n var lazyLoadMembersBefore, isStoreNewlyCreated, prevClientOptions;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n lazyLoadMembers = !!lazyLoadMembers;\n // assume it was turned off before\n // if we don't know any better\n lazyLoadMembersBefore = false;\n _context2.next = 4;\n return (0, _bluebird.resolve)(this.client.store.isNewlyCreated());\n\n case 4:\n isStoreNewlyCreated = _context2.sent;\n\n if (isStoreNewlyCreated) {\n _context2.next = 11;\n break;\n }\n\n _context2.next = 8;\n return (0, _bluebird.resolve)(this.client.store.getClientOptions());\n\n case 8:\n prevClientOptions = _context2.sent;\n\n if (prevClientOptions) {\n lazyLoadMembersBefore = !!prevClientOptions.lazyLoadMembers;\n }\n return _context2.abrupt(\"return\", lazyLoadMembersBefore !== lazyLoadMembers);\n\n case 11:\n return _context2.abrupt(\"return\", false);\n\n case 12:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function (_x3) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * Main entry point\n */\nSyncApi.prototype.sync = function () {\n var _this = this;\n\n // We need to do one-off checks before we can begin the /sync loop.\n // These are:\n // 1) We need to get push rules so we can check if events should bing as we get\n // them from /sync.\n // 2) We need to get/create a filter which we can use for /sync.\n // 3) We need to check the lazy loading option matches what was used in the\n // stored sync. If it doesn't, we can't use the stored sync.\n\n var getPushRules = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var result;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n _context3.next = 3;\n return (0, _bluebird.resolve)(client.getPushRules());\n\n case 3:\n result = _context3.sent;\n\n debuglog(\"Got push rules\");\n\n client.pushRules = result;\n _context3.next = 14;\n break;\n\n case 8:\n _context3.prev = 8;\n _context3.t0 = _context3[\"catch\"](0);\n _context3.next = 12;\n return (0, _bluebird.resolve)(self.recoverFromSyncStartupError(savedSyncPromise, _context3.t0));\n\n case 12:\n getPushRules();\n return _context3.abrupt(\"return\");\n\n case 14:\n checkLazyLoadStatus(); // advance to the next stage\n\n case 15:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[0, 8]]);\n }));\n\n return function getPushRules() {\n return _ref3.apply(this, arguments);\n };\n }();\n\n var getFilter = function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {\n var filter, filterId;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n filter = void 0;\n\n if (self.opts.filter) {\n filter = self.opts.filter;\n } else {\n filter = new Filter(client.credentials.userId);\n filter.setTimelineLimit(self.opts.initialSyncLimit);\n }\n\n filterId = void 0;\n _context5.prev = 3;\n _context5.next = 6;\n return (0, _bluebird.resolve)(client.getOrCreateFilter(getFilterName(client.credentials.userId), filter));\n\n case 6:\n filterId = _context5.sent;\n _context5.next = 15;\n break;\n\n case 9:\n _context5.prev = 9;\n _context5.t0 = _context5[\"catch\"](3);\n _context5.next = 13;\n return (0, _bluebird.resolve)(self.recoverFromSyncStartupError(savedSyncPromise, _context5.t0));\n\n case 13:\n getFilter();\n return _context5.abrupt(\"return\");\n\n case 15:\n // reset the notifications timeline to prepare it to paginate from\n // the current point in time.\n // The right solution would be to tie /sync pagination tokens into\n // /notifications API somehow.\n client.resetNotifTimelineSet();\n\n if (self._currentSyncRequest === null) {\n // Send this first sync request here so we can then wait for the saved\n // sync data to finish processing before we process the results of this one.\n console.log(\"Sending first sync request...\");\n self._currentSyncRequest = self._doSyncRequest({ filterId: filterId }, savedSyncToken);\n }\n\n // Now wait for the saved sync to finish...\n _context5.next = 19;\n return (0, _bluebird.resolve)(savedSyncPromise);\n\n case 19:\n self._sync({ filterId: filterId });\n\n case 20:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this, [[3, 9]]);\n }));\n\n return function getFilter() {\n return _ref5.apply(this, arguments);\n };\n }();\n\n var client = this.client;\n var self = this;\n\n this._running = true;\n\n if (global.document) {\n this._onOnlineBound = this._onOnline.bind(this);\n global.document.addEventListener(\"online\", this._onOnlineBound, false);\n }\n\n var savedSyncPromise = _bluebird2.default.resolve();\n var savedSyncToken = null;\n\n var checkLazyLoadStatus = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n var supported, shouldClear, reason, error;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (_this.opts.lazyLoadMembers && client.isGuest()) {\n _this.opts.lazyLoadMembers = false;\n }\n\n if (!_this.opts.lazyLoadMembers) {\n _context4.next = 13;\n break;\n }\n\n _context4.next = 4;\n return (0, _bluebird.resolve)(client.doesServerSupportLazyLoading());\n\n case 4:\n supported = _context4.sent;\n\n if (!supported) {\n _context4.next = 11;\n break;\n }\n\n _context4.next = 8;\n return (0, _bluebird.resolve)(client.createFilter(Filter.LAZY_LOADING_SYNC_FILTER));\n\n case 8:\n _this.opts.filter = _context4.sent;\n _context4.next = 13;\n break;\n\n case 11:\n console.log(\"LL: lazy loading requested but not supported \" + \"by server, so disabling\");\n _this.opts.lazyLoadMembers = false;\n\n case 13:\n _context4.next = 15;\n return (0, _bluebird.resolve)(_this._wasLazyLoadingToggled(_this.opts.lazyLoadMembers));\n\n case 15:\n shouldClear = _context4.sent;\n\n if (!shouldClear) {\n _context4.next = 23;\n break;\n }\n\n _this._storeIsInvalid = true;\n reason = _errors.InvalidStoreError.TOGGLED_LAZY_LOADING;\n error = new _errors.InvalidStoreError(reason, !!_this.opts.lazyLoadMembers);\n\n _this._updateSyncState(\"ERROR\", { error: error });\n // bail out of the sync loop now: the app needs to respond to this error.\n // we leave the state as 'ERROR' which isn't great since this normally means\n // we're retrying. The client must be stopped before clearing the stores anyway\n // so the app should stop the client, clear the store and start it again.\n console.warn(\"InvalidStoreError: store is not usable: stopping sync.\");\n return _context4.abrupt(\"return\");\n\n case 23:\n if (_this.opts.lazyLoadMembers && _this._crypto) {\n _this.opts.crypto.enableLazyLoading();\n }\n _context4.next = 26;\n return (0, _bluebird.resolve)(_this.client._storeClientOptions());\n\n case 26:\n\n getFilter(); // Now get the filter and start syncing\n\n case 27:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, _this);\n }));\n\n return function checkLazyLoadStatus() {\n return _ref4.apply(this, arguments);\n };\n }();\n\n if (client.isGuest()) {\n // no push rules for guests, no access to POST filter for guests.\n self._sync({});\n } else {\n // Pull the saved sync token out first, before the worker starts sending\n // all the sync data which could take a while. This will let us send our\n // first incremental sync request before we've processed our saved data.\n savedSyncPromise = client.store.getSavedSyncToken().then(function (tok) {\n savedSyncToken = tok;\n return client.store.getSavedSync();\n }).then(function (savedSync) {\n if (savedSync) {\n return self._syncFromCache(savedSync);\n }\n });\n // Now start the first incremental sync request: this can also\n // take a while so if we set it going now, we can wait for it\n // to finish while we process our saved sync data.\n getPushRules();\n }\n};\n\n/**\n * Stops the sync object from syncing.\n */\nSyncApi.prototype.stop = function () {\n debuglog(\"SyncApi.stop\");\n if (global.document) {\n global.document.removeEventListener(\"online\", this._onOnlineBound, false);\n this._onOnlineBound = undefined;\n }\n this._running = false;\n if (this._currentSyncRequest) {\n this._currentSyncRequest.abort();\n }\n if (this._keepAliveTimer) {\n clearTimeout(this._keepAliveTimer);\n this._keepAliveTimer = null;\n }\n};\n\n/**\n * Retry a backed off syncing request immediately. This should only be used when\n * the user <b>explicitly</b> attempts to retry their lost connection.\n * @return {boolean} True if this resulted in a request being retried.\n */\nSyncApi.prototype.retryImmediately = function () {\n if (!this._connectionReturnedDefer) {\n return false;\n }\n this._startKeepAlives(0);\n return true;\n};\n/**\n * Process a single set of cached sync data.\n * @param {Object} savedSync a saved sync that was persisted by a store. This\n * should have been acquired via client.store.getSavedSync().\n */\nSyncApi.prototype._syncFromCache = function () {\n var _ref6 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(savedSync) {\n var nextSyncToken, syncEventData, data;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n debuglog(\"sync(): not doing HTTP hit, instead returning stored /sync data\");\n\n nextSyncToken = savedSync.nextBatch;\n\n // Set sync token for future incremental syncing\n\n this.client.store.setSyncToken(nextSyncToken);\n\n // No previous sync, set old token to null\n syncEventData = {\n oldSyncToken: null,\n nextSyncToken: nextSyncToken,\n catchingUp: false\n };\n data = {\n next_batch: nextSyncToken,\n rooms: savedSync.roomsData,\n groups: savedSync.groupsData,\n account_data: {\n events: savedSync.accountData\n }\n };\n _context6.prev = 5;\n _context6.next = 8;\n return (0, _bluebird.resolve)(this._processSyncResponse(syncEventData, data));\n\n case 8:\n _context6.next = 13;\n break;\n\n case 10:\n _context6.prev = 10;\n _context6.t0 = _context6[\"catch\"](5);\n\n console.error(\"Error processing cached sync\", _context6.t0.stack || _context6.t0);\n\n case 13:\n\n // Don't emit a prepared if we've bailed because the store is invalid:\n // in this case the client will not be usable until stopped & restarted\n // so this would be useless and misleading.\n if (!this._storeIsInvalid) {\n this._updateSyncState(\"PREPARED\", syncEventData);\n }\n\n case 14:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, this, [[5, 10]]);\n }));\n\n return function (_x4) {\n return _ref6.apply(this, arguments);\n };\n}();\n\n/**\n * Invoke me to do /sync calls\n * @param {Object} syncOptions\n * @param {string} syncOptions.filterId\n * @param {boolean} syncOptions.hasSyncedBefore\n */\nSyncApi.prototype._sync = function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(syncOptions) {\n var client, syncToken, data, syncEventData;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n client = this.client;\n\n if (this._running) {\n _context7.next = 6;\n break;\n }\n\n debuglog(\"Sync no longer running: exiting.\");\n if (this._connectionReturnedDefer) {\n this._connectionReturnedDefer.reject();\n this._connectionReturnedDefer = null;\n }\n this._updateSyncState(\"STOPPED\");\n return _context7.abrupt(\"return\");\n\n case 6:\n syncToken = client.store.getSyncToken();\n data = void 0;\n _context7.prev = 8;\n\n //debuglog('Starting sync since=' + syncToken);\n if (this._currentSyncRequest === null) {\n this._currentSyncRequest = this._doSyncRequest(syncOptions, syncToken);\n }\n _context7.next = 12;\n return (0, _bluebird.resolve)(this._currentSyncRequest);\n\n case 12:\n data = _context7.sent;\n _context7.next = 19;\n break;\n\n case 15:\n _context7.prev = 15;\n _context7.t0 = _context7[\"catch\"](8);\n\n this._onSyncError(_context7.t0, syncOptions);\n return _context7.abrupt(\"return\");\n\n case 19:\n _context7.prev = 19;\n\n this._currentSyncRequest = null;\n return _context7.finish(19);\n\n case 22:\n\n //debuglog('Completed sync, next_batch=' + data.next_batch);\n\n // set the sync token NOW *before* processing the events. We do this so\n // if something barfs on an event we can skip it rather than constantly\n // polling with the same token.\n client.store.setSyncToken(data.next_batch);\n\n // Reset after a successful sync\n this._failedSyncCount = 0;\n\n _context7.next = 26;\n return (0, _bluebird.resolve)(client.store.setSyncData(data));\n\n case 26:\n syncEventData = {\n oldSyncToken: syncToken,\n nextSyncToken: data.next_batch,\n catchingUp: this._catchingUp\n };\n\n if (!this.opts.crypto) {\n _context7.next = 30;\n break;\n }\n\n _context7.next = 30;\n return (0, _bluebird.resolve)(this.opts.crypto.onSyncWillProcess(syncEventData));\n\n case 30:\n _context7.prev = 30;\n _context7.next = 33;\n return (0, _bluebird.resolve)(this._processSyncResponse(syncEventData, data));\n\n case 33:\n _context7.next = 38;\n break;\n\n case 35:\n _context7.prev = 35;\n _context7.t1 = _context7[\"catch\"](30);\n\n // log the exception with stack if we have it, else fall back\n // to the plain description\n console.error(\"Caught /sync error\", _context7.t1.stack || _context7.t1);\n\n case 38:\n\n // update this as it may have changed\n syncEventData.catchingUp = this._catchingUp;\n\n // emit synced events\n if (!syncOptions.hasSyncedBefore) {\n this._updateSyncState(\"PREPARED\", syncEventData);\n syncOptions.hasSyncedBefore = true;\n }\n\n // tell the crypto module to do its processing. It may block (to do a\n // /keys/changes request).\n\n if (!this.opts.crypto) {\n _context7.next = 43;\n break;\n }\n\n _context7.next = 43;\n return (0, _bluebird.resolve)(this.opts.crypto.onSyncCompleted(syncEventData));\n\n case 43:\n\n // keep emitting SYNCING -> SYNCING for clients who want to do bulk updates\n this._updateSyncState(\"SYNCING\", syncEventData);\n\n if (!client.store.wantsSave()) {\n _context7.next = 49;\n break;\n }\n\n if (!this.opts.crypto) {\n _context7.next = 48;\n break;\n }\n\n _context7.next = 48;\n return (0, _bluebird.resolve)(this.opts.crypto.saveDeviceList(0));\n\n case 48:\n\n // tell databases that everything is now in a consistent state and can be saved.\n client.store.save();\n\n case 49:\n\n // Begin next sync\n this._sync(syncOptions);\n\n case 50:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7, this, [[8, 15, 19, 22], [30, 35]]);\n }));\n\n return function (_x5) {\n return _ref7.apply(this, arguments);\n };\n}();\n\nSyncApi.prototype._doSyncRequest = function (syncOptions, syncToken) {\n var qps = this._getSyncParams(syncOptions, syncToken);\n return this.client._http.authedRequest(undefined, \"GET\", \"/sync\", qps, undefined, qps.timeout + BUFFER_PERIOD_MS);\n};\n\nSyncApi.prototype._getSyncParams = function (syncOptions, syncToken) {\n var pollTimeout = this.opts.pollTimeout;\n\n if (this.getSyncState() !== 'SYNCING' || this._catchingUp) {\n // unless we are happily syncing already, we want the server to return\n // as quickly as possible, even if there are no events queued. This\n // serves two purposes:\n //\n // * When the connection dies, we want to know asap when it comes back,\n // so that we can hide the error from the user. (We don't want to\n // have to wait for an event or a timeout).\n //\n // * We want to know if the server has any to_device messages queued up\n // for us. We do that by calling it with a zero timeout until it\n // doesn't give us any more to_device messages.\n this._catchingUp = true;\n pollTimeout = 0;\n }\n\n var filterId = syncOptions.filterId;\n if (this.client.isGuest() && !filterId) {\n filterId = this._getGuestFilter();\n }\n\n var qps = {\n filter: filterId,\n timeout: pollTimeout\n };\n\n if (this.opts.disablePresence) {\n qps.set_presence = \"offline\";\n }\n\n if (syncToken) {\n qps.since = syncToken;\n } else {\n // use a cachebuster for initialsyncs, to make sure that\n // we don't get a stale sync\n // (https://github.com/vector-im/vector-web/issues/1354)\n qps._cacheBuster = Date.now();\n }\n\n if (this.getSyncState() == 'ERROR' || this.getSyncState() == 'RECONNECTING') {\n // we think the connection is dead. If it comes back up, we won't know\n // about it till /sync returns. If the timeout= is high, this could\n // be a long time. Set it to 0 when doing retries so we don't have to wait\n // for an event or a timeout before emiting the SYNCING event.\n qps.timeout = 0;\n }\n\n return qps;\n};\n\nSyncApi.prototype._onSyncError = function (err, syncOptions) {\n var _this2 = this;\n\n if (!this._running) {\n debuglog(\"Sync no longer running: exiting\");\n if (this._connectionReturnedDefer) {\n this._connectionReturnedDefer.reject();\n this._connectionReturnedDefer = null;\n }\n this._updateSyncState(\"STOPPED\");\n return;\n }\n\n console.error(\"/sync error %s\", err);\n console.error(err);\n\n this._failedSyncCount++;\n console.log('Number of consecutive failed sync requests:', this._failedSyncCount);\n\n debuglog(\"Starting keep-alive\");\n // Note that we do *not* mark the sync connection as\n // lost yet: we only do this if a keepalive poke\n // fails, since long lived HTTP connections will\n // go away sometimes and we shouldn't treat this as\n // erroneous. We set the state to 'reconnecting'\n // instead, so that clients can observe this state\n // if they wish.\n this._startKeepAlives().then(function (connDidFail) {\n // Only emit CATCHUP if we detected a connectivity error: if we didn't,\n // it's quite likely the sync will fail again for the same reason and we\n // want to stay in ERROR rather than keep flip-flopping between ERROR\n // and CATCHUP.\n if (connDidFail && _this2.getSyncState() === 'ERROR') {\n _this2._updateSyncState(\"CATCHUP\", {\n oldSyncToken: null,\n nextSyncToken: null,\n catchingUp: true\n });\n }\n _this2._sync(syncOptions);\n });\n\n this._currentSyncRequest = null;\n // Transition from RECONNECTING to ERROR after a given number of failed syncs\n this._updateSyncState(this._failedSyncCount >= FAILED_SYNC_ERROR_THRESHOLD ? \"ERROR\" : \"RECONNECTING\", { error: err });\n};\n\n/**\n * Process data returned from a sync response and propagate it\n * into the model objects\n *\n * @param {Object} syncEventData Object containing sync tokens associated with this sync\n * @param {Object} data The response from /sync\n */\nSyncApi.prototype._processSyncResponse = function () {\n var _ref8 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(syncEventData, data) {\n var client, self, events, inviteRooms, joinRooms, leaveRooms, currentCount;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n client = this.client;\n self = this;\n\n // data looks like:\n // {\n // next_batch: $token,\n // presence: { events: [] },\n // account_data: { events: [] },\n // device_lists: { changed: [\"@user:server\", ... ]},\n // to_device: { events: [] },\n // device_one_time_keys_count: { signed_curve25519: 42 },\n // rooms: {\n // invite: {\n // $roomid: {\n // invite_state: { events: [] }\n // }\n // },\n // join: {\n // $roomid: {\n // state: { events: [] },\n // timeline: { events: [], prev_batch: $token, limited: true },\n // ephemeral: { events: [] },\n // summary: {\n // m.heroes: [ $user_id ],\n // m.joined_member_count: $count,\n // m.invited_member_count: $count\n // },\n // account_data: { events: [] },\n // unread_notifications: {\n // highlight_count: 0,\n // notification_count: 0,\n // }\n // }\n // },\n // leave: {\n // $roomid: {\n // state: { events: [] },\n // timeline: { events: [], prev_batch: $token }\n // }\n // }\n // },\n // groups: {\n // invite: {\n // $groupId: {\n // inviter: $inviter,\n // profile: {\n // avatar_url: $avatarUrl,\n // name: $groupName,\n // },\n // },\n // },\n // join: {},\n // leave: {},\n // },\n // }\n\n // TODO-arch:\n // - Each event we pass through needs to be emitted via 'event', can we\n // do this in one place?\n // - The isBrandNewRoom boilerplate is boilerplatey.\n\n // handle presence events (User objects)\n\n if (data.presence && utils.isArray(data.presence.events)) {\n data.presence.events.map(client.getEventMapper()).forEach(function (presenceEvent) {\n var user = client.store.getUser(presenceEvent.getSender());\n if (user) {\n user.setPresenceEvent(presenceEvent);\n } else {\n user = createNewUser(client, presenceEvent.getSender());\n user.setPresenceEvent(presenceEvent);\n client.store.storeUser(user);\n }\n client.emit(\"event\", presenceEvent);\n });\n }\n\n // handle non-room account_data\n if (data.account_data && utils.isArray(data.account_data.events)) {\n events = data.account_data.events.map(client.getEventMapper());\n\n client.store.storeAccountDataEvents(events);\n events.forEach(function (accountDataEvent) {\n // Honour push rules that come down the sync stream but also\n // honour push rules that were previously cached. Base rules\n // will be updated when we recieve push rules via getPushRules\n // (see SyncApi.prototype.sync) before syncing over the network.\n if (accountDataEvent.getType() == 'm.push_rules') {\n client.pushRules = accountDataEvent.getContent();\n }\n client.emit(\"accountData\", accountDataEvent);\n return accountDataEvent;\n });\n }\n\n // handle to-device events\n if (data.to_device && utils.isArray(data.to_device.events) && data.to_device.events.length > 0) {\n data.to_device.events.map(client.getEventMapper()).forEach(function (toDeviceEvent) {\n var content = toDeviceEvent.getContent();\n if (toDeviceEvent.getType() == \"m.room.message\" && content.msgtype == \"m.bad.encrypted\") {\n // the mapper already logged a warning.\n console.log('Ignoring undecryptable to-device event from ' + toDeviceEvent.getSender());\n return;\n }\n\n client.emit(\"toDeviceEvent\", toDeviceEvent);\n });\n } else {\n // no more to-device events: we can stop polling with a short timeout.\n this._catchingUp = false;\n }\n\n if (data.groups) {\n if (data.groups.invite) {\n this._processGroupSyncEntry(data.groups.invite, 'invite');\n }\n\n if (data.groups.join) {\n this._processGroupSyncEntry(data.groups.join, 'join');\n }\n\n if (data.groups.leave) {\n this._processGroupSyncEntry(data.groups.leave, 'leave');\n }\n }\n\n // the returned json structure is a bit crap, so make it into a\n // nicer form (array) after applying sanity to make sure we don't fail\n // on missing keys (on the off chance)\n inviteRooms = [];\n joinRooms = [];\n leaveRooms = [];\n\n\n if (data.rooms) {\n if (data.rooms.invite) {\n inviteRooms = this._mapSyncResponseToRoomArray(data.rooms.invite);\n }\n if (data.rooms.join) {\n joinRooms = this._mapSyncResponseToRoomArray(data.rooms.join);\n }\n if (data.rooms.leave) {\n leaveRooms = this._mapSyncResponseToRoomArray(data.rooms.leave);\n }\n }\n\n this._notifEvents = [];\n\n // Handle invites\n inviteRooms.forEach(function (inviteObj) {\n var room = inviteObj.room;\n var stateEvents = self._mapSyncEventsFormat(inviteObj.invite_state, room);\n\n room.updateMyMembership(\"invite\");\n self._processRoomEvents(room, stateEvents);\n if (inviteObj.isBrandNewRoom) {\n room.recalculate();\n client.store.storeRoom(room);\n client.emit(\"Room\", room);\n }\n stateEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n });\n\n // Handle joins\n _context10.next = 14;\n return (0, _bluebird.resolve)(_bluebird2.default.mapSeries(joinRooms, function () {\n var _ref9 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(joinObj) {\n var processRoomEvent = function () {\n var _ref10 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(e) {\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n client.emit(\"event\", e);\n\n if (!(e.isState() && e.getType() == \"m.room.encryption\" && self.opts.crypto)) {\n _context8.next = 4;\n break;\n }\n\n _context8.next = 4;\n return (0, _bluebird.resolve)(self.opts.crypto.onCryptoEvent(e));\n\n case 4:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n return function processRoomEvent(_x9) {\n return _ref10.apply(this, arguments);\n };\n }();\n\n var room, stateEvents, timelineEvents, ephemeralEvents, accountDataEvents, limited, i, eventId;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n room = joinObj.room;\n stateEvents = self._mapSyncEventsFormat(joinObj.state, room);\n timelineEvents = self._mapSyncEventsFormat(joinObj.timeline, room);\n ephemeralEvents = self._mapSyncEventsFormat(joinObj.ephemeral);\n accountDataEvents = self._mapSyncEventsFormat(joinObj.account_data);\n\n // we do this first so it's correct when any of the events fire\n\n if (joinObj.unread_notifications) {\n room.setUnreadNotificationCount('total', joinObj.unread_notifications.notification_count);\n room.setUnreadNotificationCount('highlight', joinObj.unread_notifications.highlight_count);\n }\n\n room.updateMyMembership(\"join\");\n\n joinObj.timeline = joinObj.timeline || {};\n\n if (!joinObj.isBrandNewRoom) {\n _context9.next = 12;\n break;\n }\n\n // set the back-pagination token. Do this *before* adding any\n // events so that clients can start back-paginating.\n room.getLiveTimeline().setPaginationToken(joinObj.timeline.prev_batch, EventTimeline.BACKWARDS);\n _context9.next = 26;\n break;\n\n case 12:\n if (!joinObj.timeline.limited) {\n _context9.next = 26;\n break;\n }\n\n limited = true;\n\n // we've got a limited sync, so we *probably* have a gap in the\n // timeline, so should reset. But we might have been peeking or\n // paginating and already have some of the events, in which\n // case we just want to append any subsequent events to the end\n // of the existing timeline.\n //\n // This is particularly important in the case that we already have\n // *all* of the events in the timeline - in that case, if we reset\n // the timeline, we'll end up with an entirely empty timeline,\n // which we'll try to paginate but not get any new events (which\n // will stop us linking the empty timeline into the chain).\n //\n\n i = timelineEvents.length - 1;\n\n case 15:\n if (!(i >= 0)) {\n _context9.next = 25;\n break;\n }\n\n eventId = timelineEvents[i].getId();\n\n if (!room.getTimelineForEvent(eventId)) {\n _context9.next = 22;\n break;\n }\n\n debuglog(\"Already have event \" + eventId + \" in limited \" + \"sync - not resetting\");\n limited = false;\n\n // we might still be missing some of the events before i;\n // we don't want to be adding them to the end of the\n // timeline because that would put them out of order.\n timelineEvents.splice(0, i);\n\n // XXX: there's a problem here if the skipped part of the\n // timeline modifies the state set in stateEvents, because\n // we'll end up using the state from stateEvents rather\n // than the later state from timelineEvents. We probably\n // need to wind stateEvents forward over the events we're\n // skipping.\n\n return _context9.abrupt(\"break\", 25);\n\n case 22:\n i--;\n _context9.next = 15;\n break;\n\n case 25:\n\n if (limited) {\n self._deregisterStateListeners(room);\n room.resetLiveTimeline(joinObj.timeline.prev_batch, self.opts.canResetEntireTimeline(room.roomId) ? null : syncEventData.oldSyncToken);\n\n // We have to assume any gap in any timeline is\n // reason to stop incrementally tracking notifications and\n // reset the timeline.\n client.resetNotifTimelineSet();\n\n self._registerStateListeners(room);\n }\n\n case 26:\n\n self._processRoomEvents(room, stateEvents, timelineEvents);\n\n // set summary after processing events,\n // because it will trigger a name calculation\n // which needs the room state to be up to date\n if (joinObj.summary) {\n room.setSummary(joinObj.summary);\n }\n\n // XXX: should we be adding ephemeralEvents to the timeline?\n // It feels like that for symmetry with room.addAccountData()\n // there should be a room.addEphemeralEvents() or similar.\n room.addLiveEvents(ephemeralEvents);\n\n // we deliberately don't add accountData to the timeline\n room.addAccountData(accountDataEvents);\n\n room.recalculate();\n if (joinObj.isBrandNewRoom) {\n client.store.storeRoom(room);\n client.emit(\"Room\", room);\n }\n\n self._processEventsForNotifs(room, timelineEvents);\n\n _context9.next = 35;\n return (0, _bluebird.resolve)(_bluebird2.default.mapSeries(stateEvents, processRoomEvent));\n\n case 35:\n _context9.next = 37;\n return (0, _bluebird.resolve)(_bluebird2.default.mapSeries(timelineEvents, processRoomEvent));\n\n case 37:\n ephemeralEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n accountDataEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n\n case 39:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n return function (_x8) {\n return _ref9.apply(this, arguments);\n };\n }()));\n\n case 14:\n\n // Handle leaves (e.g. kicked rooms)\n leaveRooms.forEach(function (leaveObj) {\n var room = leaveObj.room;\n var stateEvents = self._mapSyncEventsFormat(leaveObj.state, room);\n var timelineEvents = self._mapSyncEventsFormat(leaveObj.timeline, room);\n var accountDataEvents = self._mapSyncEventsFormat(leaveObj.account_data);\n\n room.updateMyMembership(\"leave\");\n\n self._processRoomEvents(room, stateEvents, timelineEvents);\n room.addAccountData(accountDataEvents);\n\n room.recalculate();\n if (leaveObj.isBrandNewRoom) {\n client.store.storeRoom(room);\n client.emit(\"Room\", room);\n }\n\n self._processEventsForNotifs(room, timelineEvents);\n\n stateEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n timelineEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n accountDataEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n });\n\n // update the notification timeline, if appropriate.\n // we only do this for live events, as otherwise we can't order them sanely\n // in the timeline relative to ones paginated in by /notifications.\n // XXX: we could fix this by making EventTimeline support chronological\n // ordering... but it doesn't, right now.\n if (syncEventData.oldSyncToken && this._notifEvents.length) {\n this._notifEvents.sort(function (a, b) {\n return a.getTs() - b.getTs();\n });\n this._notifEvents.forEach(function (event) {\n client.getNotifTimelineSet().addLiveEvent(event);\n });\n }\n\n // Handle device list updates\n\n if (!data.device_lists) {\n _context10.next = 22;\n break;\n }\n\n if (!this.opts.crypto) {\n _context10.next = 22;\n break;\n }\n\n _context10.next = 20;\n return (0, _bluebird.resolve)(this.opts.crypto.handleDeviceListChanges(syncEventData, data.device_lists));\n\n case 20:\n _context10.next = 22;\n break;\n\n case 22:\n\n // Handle one_time_keys_count\n if (this.opts.crypto && data.device_one_time_keys_count) {\n currentCount = data.device_one_time_keys_count.signed_curve25519 || 0;\n\n this.opts.crypto.updateOneTimeKeyCount(currentCount);\n }\n\n case 23:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n return function (_x6, _x7) {\n return _ref8.apply(this, arguments);\n };\n}();\n\n/**\n * Starts polling the connectivity check endpoint\n * @param {number} delay How long to delay until the first poll.\n * defaults to a short, randomised interval (to prevent\n * tightlooping if /versions succeeds but /sync etc. fail).\n * @return {promise} which resolves once the connection returns\n */\nSyncApi.prototype._startKeepAlives = function (delay) {\n if (delay === undefined) {\n delay = 2000 + Math.floor(Math.random() * 5000);\n }\n\n if (this._keepAliveTimer !== null) {\n clearTimeout(this._keepAliveTimer);\n }\n var self = this;\n if (delay > 0) {\n self._keepAliveTimer = setTimeout(self._pokeKeepAlive.bind(self), delay);\n } else {\n self._pokeKeepAlive();\n }\n if (!this._connectionReturnedDefer) {\n this._connectionReturnedDefer = _bluebird2.default.defer();\n }\n return this._connectionReturnedDefer.promise;\n};\n\n/**\n * Make a dummy call to /_matrix/client/versions, to see if the HS is\n * reachable.\n *\n * On failure, schedules a call back to itself. On success, resolves\n * this._connectionReturnedDefer.\n *\n * @param {bool} connDidFail True if a connectivity failure has been detected. Optional.\n */\nSyncApi.prototype._pokeKeepAlive = function (connDidFail) {\n if (connDidFail === undefined) connDidFail = false;\n var self = this;\n function success() {\n clearTimeout(self._keepAliveTimer);\n if (self._connectionReturnedDefer) {\n self._connectionReturnedDefer.resolve(connDidFail);\n self._connectionReturnedDefer = null;\n }\n }\n\n this.client._http.request(undefined, // callback\n \"GET\", \"/_matrix/client/versions\", undefined, // queryParams\n undefined, // data\n {\n prefix: '',\n localTimeoutMs: 15 * 1000\n }).done(function () {\n success();\n }, function (err) {\n if (err.httpStatus == 400 || err.httpStatus == 404) {\n // treat this as a success because the server probably just doesn't\n // support /versions: point is, we're getting a response.\n // We wait a short time though, just in case somehow the server\n // is in a mode where it 400s /versions responses and sync etc.\n // responses fail, this will mean we don't hammer in a loop.\n self._keepAliveTimer = setTimeout(success, 2000);\n } else {\n connDidFail = true;\n self._keepAliveTimer = setTimeout(self._pokeKeepAlive.bind(self, connDidFail), 5000 + Math.floor(Math.random() * 5000));\n // A keepalive has failed, so we emit the\n // error state (whether or not this is the\n // first failure).\n // Note we do this after setting the timer:\n // this lets the unit tests advance the mock\n // clock when they get the error.\n self._updateSyncState(\"ERROR\", { error: err });\n }\n });\n};\n\n/**\n * @param {Object} groupsSection Groups section object, eg. response.groups.invite\n * @param {string} sectionName Which section this is ('invite', 'join' or 'leave')\n */\nSyncApi.prototype._processGroupSyncEntry = function (groupsSection, sectionName) {\n // Processes entries from 'groups' section of the sync stream\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(groupsSection)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var groupId = _step.value;\n\n var groupInfo = groupsSection[groupId];\n var group = this.client.store.getGroup(groupId);\n var isBrandNew = group === null;\n if (group === null) {\n group = this.createGroup(groupId);\n }\n if (groupInfo.profile) {\n group.setProfile(groupInfo.profile.name, groupInfo.profile.avatar_url);\n }\n if (groupInfo.inviter) {\n group.setInviter({ userId: groupInfo.inviter });\n }\n group.setMyMembership(sectionName);\n if (isBrandNew) {\n // Now we've filled in all the fields, emit the Group event\n this.client.emit(\"Group\", group);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n};\n\n/**\n * @param {Object} obj\n * @return {Object[]}\n */\nSyncApi.prototype._mapSyncResponseToRoomArray = function (obj) {\n // Maps { roomid: {stuff}, roomid: {stuff} }\n // to\n // [{stuff+Room+isBrandNewRoom}, {stuff+Room+isBrandNewRoom}]\n var client = this.client;\n var self = this;\n return utils.keys(obj).map(function (roomId) {\n var arrObj = obj[roomId];\n var room = client.store.getRoom(roomId);\n var isBrandNewRoom = false;\n if (!room) {\n room = self.createRoom(roomId);\n isBrandNewRoom = true;\n }\n arrObj.room = room;\n arrObj.isBrandNewRoom = isBrandNewRoom;\n return arrObj;\n });\n};\n\n/**\n * @param {Object} obj\n * @param {Room} room\n * @return {MatrixEvent[]}\n */\nSyncApi.prototype._mapSyncEventsFormat = function (obj, room) {\n if (!obj || !utils.isArray(obj.events)) {\n return [];\n }\n var mapper = this.client.getEventMapper();\n return obj.events.map(function (e) {\n if (room) {\n e.room_id = room.roomId;\n }\n return mapper(e);\n });\n};\n\n/**\n * @param {Room} room\n */\nSyncApi.prototype._resolveInvites = function (room) {\n if (!room || !this.opts.resolveInvitesToProfiles) {\n return;\n }\n var client = this.client;\n // For each invited room member we want to give them a displayname/avatar url\n // if they have one (the m.room.member invites don't contain this).\n room.getMembersWithMembership(\"invite\").forEach(function (member) {\n if (member._requestedProfileInfo) {\n return;\n }\n member._requestedProfileInfo = true;\n // try to get a cached copy first.\n var user = client.getUser(member.userId);\n var promise = void 0;\n if (user) {\n promise = _bluebird2.default.resolve({\n avatar_url: user.avatarUrl,\n displayname: user.displayName\n });\n } else {\n promise = client.getProfileInfo(member.userId);\n }\n promise.done(function (info) {\n // slightly naughty by doctoring the invite event but this means all\n // the code paths remain the same between invite/join display name stuff\n // which is a worthy trade-off for some minor pollution.\n var inviteEvent = member.events.member;\n if (inviteEvent.getContent().membership !== \"invite\") {\n // between resolving and now they have since joined, so don't clobber\n return;\n }\n inviteEvent.getContent().avatar_url = info.avatar_url;\n inviteEvent.getContent().displayname = info.displayname;\n // fire listeners\n member.setMembershipEvent(inviteEvent, room.currentState);\n }, function (err) {\n // OH WELL.\n });\n });\n};\n\n/**\n * @param {Room} room\n * @param {MatrixEvent[]} stateEventList A list of state events. This is the state\n * at the *START* of the timeline list if it is supplied.\n * @param {MatrixEvent[]} [timelineEventList] A list of timeline events. Lower index\n * is earlier in time. Higher index is later.\n */\nSyncApi.prototype._processRoomEvents = function (room, stateEventList, timelineEventList) {\n // If there are no events in the timeline yet, initialise it with\n // the given state events\n var liveTimeline = room.getLiveTimeline();\n var timelineWasEmpty = liveTimeline.getEvents().length == 0;\n if (timelineWasEmpty) {\n // Passing these events into initialiseState will freeze them, so we need\n // to compute and cache the push actions for them now, otherwise sync dies\n // with an attempt to assign to read only property.\n // XXX: This is pretty horrible and is assuming all sorts of behaviour from\n // these functions that it shouldn't be. We should probably either store the\n // push actions cache elsewhere so we can freeze MatrixEvents, or otherwise\n // find some solution where MatrixEvents are immutable but allow for a cache\n // field.\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(stateEventList), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var ev = _step2.value;\n\n this.client.getPushActionsForEvent(ev);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n liveTimeline.initialiseState(stateEventList);\n }\n\n this._resolveInvites(room);\n\n // recalculate the room name at this point as adding events to the timeline\n // may make notifications appear which should have the right name.\n // XXX: This looks suspect: we'll end up recalculating the room once here\n // and then again after adding events (_processSyncResponse calls it after\n // calling us) even if no state events were added. It also means that if\n // one of the room events in timelineEventList is something that needs\n // a recalculation (like m.room.name) we won't recalculate until we've\n // finished adding all the events, which will cause the notification to have\n // the old room name rather than the new one.\n room.recalculate();\n\n // If the timeline wasn't empty, we process the state events here: they're\n // defined as updates to the state before the start of the timeline, so this\n // starts to roll the state forward.\n // XXX: That's what we *should* do, but this can happen if we were previously\n // peeking in a room, in which case we obviously do *not* want to add the\n // state events here onto the end of the timeline. Historically, the js-sdk\n // has just set these new state events on the old and new state. This seems\n // very wrong because there could be events in the timeline that diverge the\n // state, in which case this is going to leave things out of sync. However,\n // for now I think it;s best to behave the same as the code has done previously.\n if (!timelineWasEmpty) {\n // XXX: As above, don't do this...\n //room.addLiveEvents(stateEventList || []);\n // Do this instead...\n room.oldState.setStateEvents(stateEventList || []);\n room.currentState.setStateEvents(stateEventList || []);\n }\n // execute the timeline events. This will continue to diverge the current state\n // if the timeline has any state events in it.\n // This also needs to be done before running push rules on the events as they need\n // to be decorated with sender etc.\n room.addLiveEvents(timelineEventList || []);\n};\n\n/**\n * Takes a list of timelineEvents and adds and adds to _notifEvents\n * as appropriate.\n * This must be called after the room the events belong to has been stored.\n *\n * @param {Room} room\n * @param {MatrixEvent[]} [timelineEventList] A list of timeline events. Lower index\n * is earlier in time. Higher index is later.\n */\nSyncApi.prototype._processEventsForNotifs = function (room, timelineEventList) {\n // gather our notifications into this._notifEvents\n if (this.client.getNotifTimelineSet()) {\n for (var i = 0; i < timelineEventList.length; i++) {\n var pushActions = this.client.getPushActionsForEvent(timelineEventList[i]);\n if (pushActions && pushActions.notify && pushActions.tweaks && pushActions.tweaks.highlight) {\n this._notifEvents.push(timelineEventList[i]);\n }\n }\n }\n};\n\n/**\n * @return {string}\n */\nSyncApi.prototype._getGuestFilter = function () {\n var guestRooms = this.client._guestRooms; // FIXME: horrible gut-wrenching\n if (!guestRooms) {\n return \"{}\";\n }\n // we just need to specify the filter inline if we're a guest because guests\n // can't create filters.\n return (0, _stringify2.default)({\n room: {\n timeline: {\n limit: 20\n }\n }\n });\n};\n\n/**\n * Sets the sync state and emits an event to say so\n * @param {String} newState The new state string\n * @param {Object} data Object of additional data to emit in the event\n */\nSyncApi.prototype._updateSyncState = function (newState, data) {\n var old = this._syncState;\n this._syncState = newState;\n this._syncStateData = data;\n this.client.emit(\"sync\", this._syncState, old, data);\n};\n\n/**\n * Event handler for the 'online' event\n * This event is generally unreliable and precise behaviour\n * varies between browsers, so we poll for connectivity too,\n * but this might help us reconnect a little faster.\n */\nSyncApi.prototype._onOnline = function () {\n debuglog(\"Browser thinks we are back online\");\n this._startKeepAlives(0);\n};\n\nfunction createNewUser(client, userId) {\n var user = new User(userId);\n client.reEmitter.reEmit(user, [\"User.avatarUrl\", \"User.displayName\", \"User.presence\", \"User.currentlyActive\", \"User.lastPresenceTs\"]);\n return user;\n}\n\n/** */\nmodule.exports = SyncApi;\n//# sourceMappingURL=sync.js.map","require('../../modules/es6.number.is-integer');\nmodule.exports = require('../../modules/_core').Number.isInteger;\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value);\n if (domain) domain.exit();\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n if (promise._h == 1) return false;\n var chain = promise._a || promise._c;\n var i = 0;\n var reaction;\n while (chain.length > i) {\n reaction = chain[i++];\n if (reaction.fail || !isUnhandled(reaction.promise)) return false;\n } return true;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver\n } else if (Observer) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n var promise = Promise.resolve();\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/room-summary\n */\n\n/**\n * Construct a new Room Summary. A summary can be used for display on a recent\n * list, without having to load the entire room list into memory.\n * @constructor\n * @param {string} roomId Required. The ID of this room.\n * @param {Object} info Optional. The summary info. Additional keys are supported.\n * @param {string} info.title The title of the room (e.g. <code>m.room.name</code>)\n * @param {string} info.desc The description of the room (e.g.\n * <code>m.room.topic</code>)\n * @param {Number} info.numMembers The number of joined users.\n * @param {string[]} info.aliases The list of aliases for this room.\n * @param {Number} info.timestamp The timestamp for this room.\n */\n\nfunction RoomSummary(roomId, info) {\n this.roomId = roomId;\n this.info = info;\n}\n\n/**\n * The RoomSummary class.\n */\nmodule.exports = RoomSummary;\n//# sourceMappingURL=room-summary.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * This is an internal module. MatrixBaseApis is currently only meant to be used\n * by {@link client~MatrixClient}.\n *\n * @module base-apis\n */\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar httpApi = require(\"./http-api\");\nvar utils = require(\"./utils\");\n\n/**\n * Low-level wrappers for the Matrix APIs\n *\n * @constructor\n *\n * @param {Object} opts Configuration options\n *\n * @param {string} opts.baseUrl Required. The base URL to the client-server\n * HTTP API.\n *\n * @param {string} opts.idBaseUrl Optional. The base identity server URL for\n * identity server requests.\n *\n * @param {Function} opts.request Required. The function to invoke for HTTP\n * requests. The value of this property is typically <code>require(\"request\")\n * </code> as it returns a function which meets the required interface. See\n * {@link requestFunction} for more information.\n *\n * @param {string} opts.accessToken The access_token for this user.\n *\n * @param {Number=} opts.localTimeoutMs Optional. The default maximum amount of\n * time to wait before timing out HTTP requests. If not specified, there is no\n * timeout.\n *\n * @param {Object} opts.queryParams Optional. Extra query parameters to append\n * to all requests with this client. Useful for application services which require\n * <code>?user_id=</code>.\n *\n * @param {boolean} [opts.useAuthorizationHeader = false] Set to true to use\n * Authorization header instead of query param to send the access token to the server.\n */\nfunction MatrixBaseApis(opts) {\n utils.checkObjectHasKeys(opts, [\"baseUrl\", \"request\"]);\n\n this.baseUrl = opts.baseUrl;\n this.idBaseUrl = opts.idBaseUrl;\n\n var httpOpts = {\n baseUrl: opts.baseUrl,\n idBaseUrl: opts.idBaseUrl,\n accessToken: opts.accessToken,\n request: opts.request,\n prefix: httpApi.PREFIX_R0,\n onlyData: true,\n extraParams: opts.queryParams,\n localTimeoutMs: opts.localTimeoutMs,\n useAuthorizationHeader: opts.useAuthorizationHeader\n };\n this._http = new httpApi.MatrixHttpApi(this, httpOpts);\n\n this._txnCtr = 0;\n}\n\n/**\n * Get the Homeserver URL of this client\n * @return {string} Homeserver URL of this client\n */\nMatrixBaseApis.prototype.getHomeserverUrl = function () {\n return this.baseUrl;\n};\n\n/**\n * Get the Identity Server URL of this client\n * @param {boolean} stripProto whether or not to strip the protocol from the URL\n * @return {string} Identity Server URL of this client\n */\nMatrixBaseApis.prototype.getIdentityServerUrl = function () {\n var stripProto = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (stripProto && (this.idBaseUrl.startsWith(\"http://\") || this.idBaseUrl.startsWith(\"https://\"))) {\n return this.idBaseUrl.split(\"://\")[1];\n }\n return this.idBaseUrl;\n};\n\n/**\n * Get the access token associated with this account.\n * @return {?String} The access_token or null\n */\nMatrixBaseApis.prototype.getAccessToken = function () {\n return this._http.opts.accessToken || null;\n};\n\n/**\n * @return {boolean} true if there is a valid access_token for this client.\n */\nMatrixBaseApis.prototype.isLoggedIn = function () {\n return this._http.opts.accessToken !== undefined;\n};\n\n/**\n * Make up a new transaction id\n *\n * @return {string} a new, unique, transaction id\n */\nMatrixBaseApis.prototype.makeTxnId = function () {\n return \"m\" + new Date().getTime() + \".\" + this._txnCtr++;\n};\n\n// Registration/Login operations\n// =============================\n\n/**\n * Check whether a username is available prior to registration. An error response\n * indicates an invalid/unavailable username.\n * @param {string} username The username to check the availability of.\n * @return {module:client.Promise} Resolves: to `true`.\n */\nMatrixBaseApis.prototype.isUsernameAvailable = function (username) {\n return this._http.authedRequest(undefined, \"GET\", '/register/available', { username: username }).then(function (response) {\n return response.available;\n });\n};\n\n/**\n * @param {string} username\n * @param {string} password\n * @param {string} sessionId\n * @param {Object} auth\n * @param {Object} bindThreepids Set key 'email' to true to bind any email\n * threepid uses during registration in the ID server. Set 'msisdn' to\n * true to bind msisdn.\n * @param {string} guestAccessToken\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.register = function (username, password, sessionId, auth, bindThreepids, guestAccessToken, callback) {\n // backwards compat\n if (bindThreepids === true) {\n bindThreepids = { email: true };\n } else if (bindThreepids === null || bindThreepids === undefined) {\n bindThreepids = {};\n }\n\n if (auth === undefined || auth === null) {\n auth = {};\n }\n if (sessionId) {\n auth.session = sessionId;\n }\n\n var params = {\n auth: auth\n };\n if (username !== undefined && username !== null) {\n params.username = username;\n }\n if (password !== undefined && password !== null) {\n params.password = password;\n }\n if (bindThreepids.email) {\n params.bind_email = true;\n }\n if (bindThreepids.msisdn) {\n params.bind_msisdn = true;\n }\n if (guestAccessToken !== undefined && guestAccessToken !== null) {\n params.guest_access_token = guestAccessToken;\n }\n // Temporary parameter added to make the register endpoint advertise\n // msisdn flows. This exists because there are clients that break\n // when given stages they don't recognise. This parameter will cease\n // to be necessary once these old clients are gone.\n // Only send it if we send any params at all (the password param is\n // mandatory, so if we send any params, we'll send the password param)\n if (password !== undefined && password !== null) {\n params.x_show_msisdn = true;\n }\n\n return this.registerRequest(params, undefined, callback);\n};\n\n/**\n * Register a guest account.\n * @param {Object=} opts Registration options\n * @param {Object} opts.body JSON HTTP body to provide.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.registerGuest = function (opts, callback) {\n opts = opts || {};\n opts.body = opts.body || {};\n return this.registerRequest(opts.body, \"guest\", callback);\n};\n\n/**\n * @param {Object} data parameters for registration request\n * @param {string=} kind type of user to register. may be \"guest\"\n * @param {module:client.callback=} callback\n * @return {module:client.Promise} Resolves: to the /register response\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.registerRequest = function (data, kind, callback) {\n var params = {};\n if (kind) {\n params.kind = kind;\n }\n\n return this._http.request(callback, \"POST\", \"/register\", params, data);\n};\n\n/**\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.loginFlows = function (callback) {\n return this._http.request(callback, \"GET\", \"/login\");\n};\n\n/**\n * @param {string} loginType\n * @param {Object} data\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.login = function (loginType, data, callback) {\n var login_data = {\n type: loginType\n };\n\n // merge data into login_data\n utils.extend(login_data, data);\n\n return this._http.authedRequest(callback, \"POST\", \"/login\", undefined, login_data);\n};\n\n/**\n * @param {string} user\n * @param {string} password\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.loginWithPassword = function (user, password, callback) {\n return this.login(\"m.login.password\", {\n user: user,\n password: password\n }, callback);\n};\n\n/**\n * @param {string} relayState URL Callback after SAML2 Authentication\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.loginWithSAML2 = function (relayState, callback) {\n return this.login(\"m.login.saml2\", {\n relay_state: relayState\n }, callback);\n};\n\n/**\n * @param {string} redirectUrl The URL to redirect to after the HS\n * authenticates with CAS.\n * @return {string} The HS URL to hit to begin the CAS login process.\n */\nMatrixBaseApis.prototype.getCasLoginUrl = function (redirectUrl) {\n return this._http.getUrl(\"/login/cas/redirect\", {\n \"redirectUrl\": redirectUrl\n }, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * @param {string} token Login token previously received from homeserver\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.loginWithToken = function (token, callback) {\n return this.login(\"m.login.token\", {\n token: token\n }, callback);\n};\n\n/**\n * Logs out the current session.\n * Obviously, further calls that require authorisation should fail after this\n * method is called. The state of the MatrixClient object is not affected:\n * it is up to the caller to either reset or destroy the MatrixClient after\n * this method succeeds.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: On success, the empty object\n */\nMatrixBaseApis.prototype.logout = function (callback) {\n return this._http.authedRequest(callback, \"POST\", '/logout');\n};\n\n/**\n * Deactivates the logged-in account.\n * Obviously, further calls that require authorisation should fail after this\n * method is called. The state of the MatrixClient object is not affected:\n * it is up to the caller to either reset or destroy the MatrixClient after\n * this method succeeds.\n * @param {object} auth Optional. Auth data to supply for User-Interactive auth.\n * @param {boolean} erase Optional. If set, send as `erase` attribute in the\n * JSON request body, indicating whether the account should be erased. Defaults\n * to false.\n * @return {module:client.Promise} Resolves: On success, the empty object\n */\nMatrixBaseApis.prototype.deactivateAccount = function (auth, erase) {\n if (typeof erase === 'function') {\n throw new Error('deactivateAccount no longer accepts a callback parameter');\n }\n\n var body = {};\n if (auth) {\n body.auth = auth;\n }\n if (erase !== undefined) {\n body.erase = erase;\n }\n\n return this._http.authedRequestWithPrefix(undefined, \"POST\", '/account/deactivate', undefined, body, httpApi.PREFIX_R0);\n};\n\n/**\n * Get the fallback URL to use for unknown interactive-auth stages.\n *\n * @param {string} loginType the type of stage being attempted\n * @param {string} authSessionId the auth session ID provided by the homeserver\n *\n * @return {string} HS URL to hit to for the fallback interface\n */\nMatrixBaseApis.prototype.getFallbackAuthUrl = function (loginType, authSessionId) {\n var path = utils.encodeUri(\"/auth/$loginType/fallback/web\", {\n $loginType: loginType\n });\n\n return this._http.getUrl(path, {\n session: authSessionId\n }, httpApi.PREFIX_R0);\n};\n\n// Room operations\n// ===============\n\n/**\n * Create a new room.\n * @param {Object} options a list of options to pass to the /createRoom API.\n * @param {string} options.room_alias_name The alias localpart to assign to\n * this room.\n * @param {string} options.visibility Either 'public' or 'private'.\n * @param {string[]} options.invite A list of user IDs to invite to this room.\n * @param {string} options.name The name to give this room.\n * @param {string} options.topic The topic to give this room.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: <code>{room_id: {string},\n * room_alias: {string(opt)}}</code>\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.createRoom = function (options, callback) {\n // valid options include: room_alias_name, visibility, invite\n return this._http.authedRequest(callback, \"POST\", \"/createRoom\", undefined, options);\n};\n\n/**\n * @param {string} roomId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.roomState = function (roomId, callback) {\n var path = utils.encodeUri(\"/rooms/$roomId/state\", { $roomId: roomId });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * Get an event in a room by its event id.\n * @param {string} roomId\n * @param {string} eventId\n * @param {module:client.callback} callback Optional.\n *\n * @return {Promise} Resolves to an object containing the event.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.fetchRoomEvent = function (roomId, eventId, callback) {\n var path = utils.encodeUri(\"/rooms/$roomId/event/$eventId\", {\n $roomId: roomId,\n $eventId: eventId\n });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * @param {string} roomId\n * @param {string} includeMembership the membership type to include in the response\n * @param {string} excludeMembership the membership type to exclude from the response\n * @param {string} atEventId the id of the event for which moment in the timeline the members should be returned for\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: dictionary of userid to profile information\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.members = function (roomId, includeMembership, excludeMembership, atEventId, callback) {\n var queryParams = {};\n if (includeMembership) {\n queryParams.membership = includeMembership;\n }\n if (excludeMembership) {\n queryParams.not_membership = excludeMembership;\n }\n if (atEventId) {\n queryParams.at = atEventId;\n }\n\n var queryString = utils.encodeParams(queryParams);\n\n var path = utils.encodeUri(\"/rooms/$roomId/members?\" + queryString, { $roomId: roomId });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * Upgrades a room to a new protocol version\n * @param {string} roomId\n * @param {string} newVersion The target version to upgrade to\n * @return {module:client.Promise} Resolves: Object with key 'replacement_room'\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.upgradeRoom = function (roomId, newVersion) {\n var path = utils.encodeUri(\"/rooms/$roomId/upgrade\", { $roomId: roomId });\n return this._http.authedRequest(undefined, \"POST\", path, undefined, { new_version: newVersion });\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Group summary object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getGroupSummary = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/summary\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Group profile object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getGroupProfile = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/profile\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {string} groupId\n * @param {Object} profile The group profile object\n * @param {string=} profile.name Name of the group\n * @param {string=} profile.avatar_url MXC avatar URL\n * @param {string=} profile.short_description A short description of the room\n * @param {string=} profile.long_description A longer HTML description of the room\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setGroupProfile = function (groupId, profile) {\n var path = utils.encodeUri(\"/groups/$groupId/profile\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"POST\", path, undefined, profile);\n};\n\n/**\n * @param {string} groupId\n * @param {object} policy The join policy for the group. Must include at\n * least a 'type' field which is 'open' if anyone can join the group\n * the group without prior approval, or 'invite' if an invite is\n * required to join.\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setGroupJoinPolicy = function (groupId, policy) {\n var path = utils.encodeUri(\"/groups/$groupId/settings/m.join_policy\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {\n 'm.join_policy': policy\n });\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Group users list object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getGroupUsers = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/users\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Group users list object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getGroupInvitedUsers = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/invited_users\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Group rooms list object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getGroupRooms = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/rooms\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {string} groupId\n * @param {string} userId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.inviteUserToGroup = function (groupId, userId) {\n var path = utils.encodeUri(\"/groups/$groupId/admin/users/invite/$userId\", { $groupId: groupId, $userId: userId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} userId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.removeUserFromGroup = function (groupId, userId) {\n var path = utils.encodeUri(\"/groups/$groupId/admin/users/remove/$userId\", { $groupId: groupId, $userId: userId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} userId\n * @param {string} roleId Optional.\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addUserToGroupSummary = function (groupId, userId, roleId) {\n var path = utils.encodeUri(roleId ? \"/groups/$groupId/summary/$roleId/users/$userId\" : \"/groups/$groupId/summary/users/$userId\", { $groupId: groupId, $roleId: roleId, $userId: userId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} userId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.removeUserFromGroupSummary = function (groupId, userId) {\n var path = utils.encodeUri(\"/groups/$groupId/summary/users/$userId\", { $groupId: groupId, $userId: userId });\n return this._http.authedRequest(undefined, \"DELETE\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} roomId\n * @param {string} categoryId Optional.\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addRoomToGroupSummary = function (groupId, roomId, categoryId) {\n var path = utils.encodeUri(categoryId ? \"/groups/$groupId/summary/$categoryId/rooms/$roomId\" : \"/groups/$groupId/summary/rooms/$roomId\", { $groupId: groupId, $categoryId: categoryId, $roomId: roomId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} roomId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.removeRoomFromGroupSummary = function (groupId, roomId) {\n var path = utils.encodeUri(\"/groups/$groupId/summary/rooms/$roomId\", { $groupId: groupId, $roomId: roomId });\n return this._http.authedRequest(undefined, \"DELETE\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} roomId\n * @param {bool} isPublic Whether the room-group association is visible to non-members\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addRoomToGroup = function (groupId, roomId, isPublic) {\n if (isPublic === undefined) {\n isPublic = true;\n }\n var path = utils.encodeUri(\"/groups/$groupId/admin/rooms/$roomId\", { $groupId: groupId, $roomId: roomId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, { \"m.visibility\": { type: isPublic ? \"public\" : \"private\" } });\n};\n\n/**\n * Configure the visibility of a room-group association.\n * @param {string} groupId\n * @param {string} roomId\n * @param {bool} isPublic Whether the room-group association is visible to non-members\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.updateGroupRoomVisibility = function (groupId, roomId, isPublic) {\n // NB: The /config API is generic but there's not much point in exposing this yet as synapse\n // is the only server to implement this. In future we should consider an API that allows\n // arbitrary configuration, i.e. \"config/$configKey\".\n\n var path = utils.encodeUri(\"/groups/$groupId/admin/rooms/$roomId/config/m.visibility\", { $groupId: groupId, $roomId: roomId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, { type: isPublic ? \"public\" : \"private\" });\n};\n\n/**\n * @param {string} groupId\n * @param {string} roomId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.removeRoomFromGroup = function (groupId, roomId) {\n var path = utils.encodeUri(\"/groups/$groupId/admin/rooms/$roomId\", { $groupId: groupId, $roomId: roomId });\n return this._http.authedRequest(undefined, \"DELETE\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {Object} opts Additional options to send alongside the acceptance.\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.acceptGroupInvite = function (groupId) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n var path = utils.encodeUri(\"/groups/$groupId/self/accept_invite\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, opts || {});\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.joinGroup = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/self/join\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.leaveGroup = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/self/leave\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @return {module:client.Promise} Resolves: The groups to which the user is joined\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getJoinedGroups = function () {\n var path = utils.encodeUri(\"/joined_groups\");\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {Object} content Request content\n * @param {string} content.localpart The local part of the desired group ID\n * @param {Object} content.profile Group profile object\n * @return {module:client.Promise} Resolves: Object with key group_id: id of the created group\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.createGroup = function (content) {\n var path = utils.encodeUri(\"/create_group\");\n return this._http.authedRequest(undefined, \"POST\", path, undefined, content);\n};\n\n/**\n * @param {string[]} userIds List of user IDs\n * @return {module:client.Promise} Resolves: Object as exmaple below\n *\n * {\n * \"users\": {\n * \"@bob:example.com\": {\n * \"+example:example.com\"\n * }\n * }\n * }\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getPublicisedGroups = function (userIds) {\n var path = utils.encodeUri(\"/publicised_groups\");\n return this._http.authedRequest(undefined, \"POST\", path, undefined, { user_ids: userIds });\n};\n\n/**\n * @param {string} groupId\n * @param {bool} isPublic Whether the user's membership of this group is made public\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setGroupPublicity = function (groupId, isPublic) {\n var path = utils.encodeUri(\"/groups/$groupId/self/update_publicity\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {\n publicise: isPublic\n });\n};\n\n/**\n * Retrieve a state event.\n * @param {string} roomId\n * @param {string} eventType\n * @param {string} stateKey\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getStateEvent = function (roomId, eventType, stateKey, callback) {\n var pathParams = {\n $roomId: roomId,\n $eventType: eventType,\n $stateKey: stateKey\n };\n var path = utils.encodeUri(\"/rooms/$roomId/state/$eventType\", pathParams);\n if (stateKey !== undefined) {\n path = utils.encodeUri(path + \"/$stateKey\", pathParams);\n }\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * @param {string} roomId\n * @param {string} eventType\n * @param {Object} content\n * @param {string} stateKey\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.sendStateEvent = function (roomId, eventType, content, stateKey, callback) {\n var pathParams = {\n $roomId: roomId,\n $eventType: eventType,\n $stateKey: stateKey\n };\n var path = utils.encodeUri(\"/rooms/$roomId/state/$eventType\", pathParams);\n if (stateKey !== undefined) {\n path = utils.encodeUri(path + \"/$stateKey\", pathParams);\n }\n return this._http.authedRequest(callback, \"PUT\", path, undefined, content);\n};\n\n/**\n * @param {string} roomId\n * @param {string} eventId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.redactEvent = function (roomId, eventId, callback) {\n var path = utils.encodeUri(\"/rooms/$roomId/redact/$eventId\", {\n $roomId: roomId,\n $eventId: eventId\n });\n return this._http.authedRequest(callback, \"POST\", path, undefined, {});\n};\n\n/**\n * @param {string} roomId\n * @param {Number} limit\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.roomInitialSync = function (roomId, limit, callback) {\n if (utils.isFunction(limit)) {\n callback = limit;limit = undefined;\n }\n var path = utils.encodeUri(\"/rooms/$roomId/initialSync\", { $roomId: roomId });\n if (!limit) {\n limit = 30;\n }\n return this._http.authedRequest(callback, \"GET\", path, { limit: limit });\n};\n\n/**\n * Set a marker to indicate the point in a room before which the user has read every\n * event. This can be retrieved from room account data (the event type is `m.fully_read`)\n * and displayed as a horizontal line in the timeline that is visually distinct to the\n * position of the user's own read receipt.\n * @param {string} roomId ID of the room that has been read\n * @param {string} rmEventId ID of the event that has been read\n * @param {string} rrEventId ID of the event tracked by the read receipt. This is here\n * for convenience because the RR and the RM are commonly updated at the same time as\n * each other. Optional.\n * @return {module:client.Promise} Resolves: the empty object, {}.\n */\nMatrixBaseApis.prototype.setRoomReadMarkersHttpRequest = function (roomId, rmEventId, rrEventId) {\n var path = utils.encodeUri(\"/rooms/$roomId/read_markers\", {\n $roomId: roomId\n });\n\n var content = {\n \"m.fully_read\": rmEventId,\n \"m.read\": rrEventId\n };\n\n return this._http.authedRequest(undefined, \"POST\", path, undefined, content);\n};\n\n// Room Directory operations\n// =========================\n\n/**\n * @param {Object} options Options for this request\n * @param {string} options.server The remote server to query for the room list.\n * Optional. If unspecified, get the local home\n * server's public room list.\n * @param {number} options.limit Maximum number of entries to return\n * @param {string} options.since Token to paginate from\n * @param {object} options.filter Filter parameters\n * @param {string} options.filter.generic_search_term String to search for\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.publicRooms = function (options, callback) {\n if (typeof options == 'function') {\n callback = options;\n options = {};\n }\n if (options === undefined) {\n options = {};\n }\n\n var query_params = {};\n if (options.server) {\n query_params.server = options.server;\n delete options.server;\n }\n\n if ((0, _keys2.default)(options).length === 0 && (0, _keys2.default)(query_params).length === 0) {\n return this._http.authedRequest(callback, \"GET\", \"/publicRooms\");\n } else {\n return this._http.authedRequest(callback, \"POST\", \"/publicRooms\", query_params, options);\n }\n};\n\n/**\n * Create an alias to room ID mapping.\n * @param {string} alias The room alias to create.\n * @param {string} roomId The room ID to link the alias to.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.createAlias = function (alias, roomId, callback) {\n var path = utils.encodeUri(\"/directory/room/$alias\", {\n $alias: alias\n });\n var data = {\n room_id: roomId\n };\n return this._http.authedRequest(callback, \"PUT\", path, undefined, data);\n};\n\n/**\n * Delete an alias to room ID mapping. This alias must be on your local server\n * and you must have sufficient access to do this operation.\n * @param {string} alias The room alias to delete.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.deleteAlias = function (alias, callback) {\n var path = utils.encodeUri(\"/directory/room/$alias\", {\n $alias: alias\n });\n return this._http.authedRequest(callback, \"DELETE\", path, undefined, undefined);\n};\n\n/**\n * Get room info for the given alias.\n * @param {string} alias The room alias to resolve.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Object with room_id and servers.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getRoomIdForAlias = function (alias, callback) {\n // TODO: deprecate this or resolveRoomAlias\n var path = utils.encodeUri(\"/directory/room/$alias\", {\n $alias: alias\n });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * @param {string} roomAlias\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.resolveRoomAlias = function (roomAlias, callback) {\n // TODO: deprecate this or getRoomIdForAlias\n var path = utils.encodeUri(\"/directory/room/$alias\", { $alias: roomAlias });\n return this._http.request(callback, \"GET\", path);\n};\n\n/**\n * Get the visibility of a room in the current HS's room directory\n * @param {string} roomId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getRoomDirectoryVisibility = function (roomId, callback) {\n var path = utils.encodeUri(\"/directory/list/room/$roomId\", {\n $roomId: roomId\n });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * Set the visbility of a room in the current HS's room directory\n * @param {string} roomId\n * @param {string} visibility \"public\" to make the room visible\n * in the public directory, or \"private\" to make\n * it invisible.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setRoomDirectoryVisibility = function (roomId, visibility, callback) {\n var path = utils.encodeUri(\"/directory/list/room/$roomId\", {\n $roomId: roomId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, { \"visibility\": visibility });\n};\n\n/**\n * Set the visbility of a room bridged to a 3rd party network in\n * the current HS's room directory.\n * @param {string} networkId the network ID of the 3rd party\n * instance under which this room is published under.\n * @param {string} roomId\n * @param {string} visibility \"public\" to make the room visible\n * in the public directory, or \"private\" to make\n * it invisible.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setRoomDirectoryVisibilityAppService = function (networkId, roomId, visibility, callback) {\n var path = utils.encodeUri(\"/directory/list/appservice/$networkId/$roomId\", {\n $networkId: networkId,\n $roomId: roomId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, { \"visibility\": visibility });\n};\n\n// User Directory Operations\n// =========================\n\n/**\n * Query the user directory with a term matching user IDs, display names and domains.\n * @param {object} opts options\n * @param {string} opts.term the term with which to search.\n * @param {number} opts.limit the maximum number of results to return. The server will\n * apply a limit if unspecified.\n * @return {module:client.Promise} Resolves: an array of results.\n */\nMatrixBaseApis.prototype.searchUserDirectory = function (opts) {\n var body = {\n search_term: opts.term\n };\n\n if (opts.limit !== undefined) {\n body.limit = opts.limit;\n }\n\n return this._http.authedRequest(undefined, \"POST\", \"/user_directory/search\", undefined, body);\n};\n\n// Media operations\n// ================\n\n/**\n * Upload a file to the media repository on the home server.\n *\n * @param {object} file The object to upload. On a browser, something that\n * can be sent to XMLHttpRequest.send (typically a File). Under node.js,\n * a a Buffer, String or ReadStream.\n *\n * @param {object} opts options object\n *\n * @param {string=} opts.name Name to give the file on the server. Defaults\n * to <tt>file.name</tt>.\n *\n * @param {boolean=} opts.includeFilename if false will not send the filename,\n * e.g for encrypted file uploads where filename leaks are undesirable.\n * Defaults to true.\n *\n * @param {string=} opts.type Content-type for the upload. Defaults to\n * <tt>file.type</tt>, or <tt>applicaton/octet-stream</tt>.\n *\n * @param {boolean=} opts.rawResponse Return the raw body, rather than\n * parsing the JSON. Defaults to false (except on node.js, where it\n * defaults to true for backwards compatibility).\n *\n * @param {boolean=} opts.onlyContentUri Just return the content URI,\n * rather than the whole body. Defaults to false (except on browsers,\n * where it defaults to true for backwards compatibility). Ignored if\n * opts.rawResponse is true.\n *\n * @param {Function=} opts.callback Deprecated. Optional. The callback to\n * invoke on success/failure. See the promise return values for more\n * information.\n *\n * @param {Function=} opts.progressHandler Optional. Called when a chunk of\n * data has been uploaded, with an object containing the fields `loaded`\n * (number of bytes transferred) and `total` (total size, if known).\n *\n * @return {module:client.Promise} Resolves to response object, as\n * determined by this.opts.onlyData, opts.rawResponse, and\n * opts.onlyContentUri. Rejects with an error (usually a MatrixError).\n */\nMatrixBaseApis.prototype.uploadContent = function (file, opts) {\n return this._http.uploadContent(file, opts);\n};\n\n/**\n * Cancel a file upload in progress\n * @param {module:client.Promise} promise The promise returned from uploadContent\n * @return {boolean} true if canceled, otherwise false\n */\nMatrixBaseApis.prototype.cancelUpload = function (promise) {\n return this._http.cancelUpload(promise);\n};\n\n/**\n * Get a list of all file uploads in progress\n * @return {array} Array of objects representing current uploads.\n * Currently in progress is element 0. Keys:\n * - promise: The promise associated with the upload\n * - loaded: Number of bytes uploaded\n * - total: Total number of bytes to upload\n */\nMatrixBaseApis.prototype.getCurrentUploads = function () {\n return this._http.getCurrentUploads();\n};\n\n// Profile operations\n// ==================\n\n/**\n * @param {string} userId\n * @param {string} info The kind of info to retrieve (e.g. 'displayname',\n * 'avatar_url').\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getProfileInfo = function (userId, info, callback) {\n if (utils.isFunction(info)) {\n callback = info;info = undefined;\n }\n\n var path = info ? utils.encodeUri(\"/profile/$userId/$info\", { $userId: userId, $info: info }) : utils.encodeUri(\"/profile/$userId\", { $userId: userId });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n// Account operations\n// ==================\n\n/**\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getThreePids = function (callback) {\n var path = \"/account/3pid\";\n return this._http.authedRequest(callback, \"GET\", path, undefined, undefined);\n};\n\n/**\n * @param {Object} creds\n * @param {boolean} bind\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addThreePid = function (creds, bind, callback) {\n var path = \"/account/3pid\";\n var data = {\n 'threePidCreds': creds,\n 'bind': bind\n };\n return this._http.authedRequest(callback, \"POST\", path, null, data);\n};\n\n/**\n * @param {string} medium The threepid medium (eg. 'email')\n * @param {string} address The threepid address (eg. 'bob@example.com')\n * this must be as returned by getThreePids.\n * @return {module:client.Promise} Resolves: The server response on success\n * (generally the empty JSON object)\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.deleteThreePid = function (medium, address) {\n var path = \"/account/3pid/delete\";\n var data = {\n 'medium': medium,\n 'address': address\n };\n return this._http.authedRequestWithPrefix(undefined, \"POST\", path, null, data, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Make a request to change your password.\n * @param {Object} authDict\n * @param {string} newPassword The new desired password.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setPassword = function (authDict, newPassword, callback) {\n var path = \"/account/password\";\n var data = {\n 'auth': authDict,\n 'new_password': newPassword\n };\n\n return this._http.authedRequest(callback, \"POST\", path, null, data);\n};\n\n// Device operations\n// =================\n\n/**\n * Gets all devices recorded for the logged-in user\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getDevices = function () {\n var path = \"/devices\";\n return this._http.authedRequestWithPrefix(undefined, \"GET\", path, undefined, undefined, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Update the given device\n *\n * @param {string} device_id device to update\n * @param {Object} body body of request\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setDeviceDetails = function (device_id, body) {\n var path = utils.encodeUri(\"/devices/$device_id\", {\n $device_id: device_id\n });\n\n return this._http.authedRequestWithPrefix(undefined, \"PUT\", path, undefined, body, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Delete the given device\n *\n * @param {string} device_id device to delete\n * @param {object} auth Optional. Auth data to supply for User-Interactive auth.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.deleteDevice = function (device_id, auth) {\n var path = utils.encodeUri(\"/devices/$device_id\", {\n $device_id: device_id\n });\n\n var body = {};\n\n if (auth) {\n body.auth = auth;\n }\n\n return this._http.authedRequestWithPrefix(undefined, \"DELETE\", path, undefined, body, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Delete multiple device\n *\n * @param {string[]} devices IDs of the devices to delete\n * @param {object} auth Optional. Auth data to supply for User-Interactive auth.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.deleteMultipleDevices = function (devices, auth) {\n var body = { devices: devices };\n\n if (auth) {\n body.auth = auth;\n }\n\n return this._http.authedRequestWithPrefix(undefined, \"POST\", \"/delete_devices\", undefined, body, httpApi.PREFIX_UNSTABLE);\n};\n\n// Push operations\n// ===============\n\n/**\n * Gets all pushers registered for the logged-in user\n *\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Array of objects representing pushers\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getPushers = function (callback) {\n var path = \"/pushers\";\n return this._http.authedRequest(callback, \"GET\", path, undefined, undefined);\n};\n\n/**\n * Adds a new pusher or updates an existing pusher\n *\n * @param {Object} pusher Object representing a pusher\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Empty json object on success\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setPusher = function (pusher, callback) {\n var path = \"/pushers/set\";\n return this._http.authedRequest(callback, \"POST\", path, null, pusher);\n};\n\n/**\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getPushRules = function (callback) {\n return this._http.authedRequest(callback, \"GET\", \"/pushrules/\");\n};\n\n/**\n * @param {string} scope\n * @param {string} kind\n * @param {string} ruleId\n * @param {Object} body\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addPushRule = function (scope, kind, ruleId, body, callback) {\n // NB. Scope not uri encoded because devices need the '/'\n var path = utils.encodeUri(\"/pushrules/\" + scope + \"/$kind/$ruleId\", {\n $kind: kind,\n $ruleId: ruleId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, body);\n};\n\n/**\n * @param {string} scope\n * @param {string} kind\n * @param {string} ruleId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.deletePushRule = function (scope, kind, ruleId, callback) {\n // NB. Scope not uri encoded because devices need the '/'\n var path = utils.encodeUri(\"/pushrules/\" + scope + \"/$kind/$ruleId\", {\n $kind: kind,\n $ruleId: ruleId\n });\n return this._http.authedRequest(callback, \"DELETE\", path);\n};\n\n/**\n * Enable or disable a push notification rule.\n * @param {string} scope\n * @param {string} kind\n * @param {string} ruleId\n * @param {boolean} enabled\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setPushRuleEnabled = function (scope, kind, ruleId, enabled, callback) {\n var path = utils.encodeUri(\"/pushrules/\" + scope + \"/$kind/$ruleId/enabled\", {\n $kind: kind,\n $ruleId: ruleId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, { \"enabled\": enabled });\n};\n\n/**\n * Set the actions for a push notification rule.\n * @param {string} scope\n * @param {string} kind\n * @param {string} ruleId\n * @param {array} actions\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setPushRuleActions = function (scope, kind, ruleId, actions, callback) {\n var path = utils.encodeUri(\"/pushrules/\" + scope + \"/$kind/$ruleId/actions\", {\n $kind: kind,\n $ruleId: ruleId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, { \"actions\": actions });\n};\n\n// Search\n// ======\n\n/**\n * Perform a server-side search.\n * @param {Object} opts\n * @param {string} opts.next_batch the batch token to pass in the query string\n * @param {Object} opts.body the JSON object to pass to the request body.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.search = function (opts, callback) {\n var queryparams = {};\n if (opts.next_batch) {\n queryparams.next_batch = opts.next_batch;\n }\n return this._http.authedRequest(callback, \"POST\", \"/search\", queryparams, opts.body);\n};\n\n// Crypto\n// ======\n\n/**\n * Upload keys\n *\n * @param {Object} content body of upload request\n *\n * @param {Object=} opts\n *\n * @param {string=} opts.device_id explicit device_id to use for upload\n * (default is to use the same as that used during auth).\n *\n * @param {module:client.callback=} callback\n *\n * @return {module:client.Promise} Resolves: result object. Rejects: with\n * an error response ({@link module:http-api.MatrixError}).\n */\nMatrixBaseApis.prototype.uploadKeysRequest = function (content, opts, callback) {\n opts = opts || {};\n var deviceId = opts.device_id;\n var path = void 0;\n if (deviceId) {\n path = utils.encodeUri(\"/keys/upload/$deviceId\", {\n $deviceId: deviceId\n });\n } else {\n path = \"/keys/upload\";\n }\n return this._http.authedRequestWithPrefix(callback, \"POST\", path, undefined, content, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Download device keys\n *\n * @param {string[]} userIds list of users to get keys for\n *\n * @param {Object=} opts\n *\n * @param {string=} opts.token sync token to pass in the query request, to help\n * the HS give the most recent results\n *\n * @return {module:client.Promise} Resolves: result object. Rejects: with\n * an error response ({@link module:http-api.MatrixError}).\n */\nMatrixBaseApis.prototype.downloadKeysForUsers = function (userIds, opts) {\n if (utils.isFunction(opts)) {\n // opts used to be 'callback'.\n throw new Error('downloadKeysForUsers no longer accepts a callback parameter');\n }\n opts = opts || {};\n\n var content = {\n device_keys: {}\n };\n if ('token' in opts) {\n content.token = opts.token;\n }\n userIds.forEach(function (u) {\n content.device_keys[u] = {};\n });\n\n return this._http.authedRequestWithPrefix(undefined, \"POST\", \"/keys/query\", undefined, content, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Claim one-time keys\n *\n * @param {string[]} devices a list of [userId, deviceId] pairs\n *\n * @param {string} [key_algorithm = signed_curve25519] desired key type\n *\n * @return {module:client.Promise} Resolves: result object. Rejects: with\n * an error response ({@link module:http-api.MatrixError}).\n */\nMatrixBaseApis.prototype.claimOneTimeKeys = function (devices, key_algorithm) {\n var queries = {};\n\n if (key_algorithm === undefined) {\n key_algorithm = \"signed_curve25519\";\n }\n\n for (var i = 0; i < devices.length; ++i) {\n var userId = devices[i][0];\n var deviceId = devices[i][1];\n var query = queries[userId] || {};\n queries[userId] = query;\n query[deviceId] = key_algorithm;\n }\n var content = { one_time_keys: queries };\n return this._http.authedRequestWithPrefix(undefined, \"POST\", \"/keys/claim\", undefined, content, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Ask the server for a list of users who have changed their device lists\n * between a pair of sync tokens\n *\n * @param {string} oldToken\n * @param {string} newToken\n *\n * @return {module:client.Promise} Resolves: result object. Rejects: with\n * an error response ({@link module:http-api.MatrixError}).\n */\nMatrixBaseApis.prototype.getKeyChanges = function (oldToken, newToken) {\n var qps = {\n from: oldToken,\n to: newToken\n };\n\n return this._http.authedRequestWithPrefix(undefined, \"GET\", \"/keys/changes\", qps, undefined, httpApi.PREFIX_UNSTABLE);\n};\n\n// Identity Server Operations\n// ==========================\n\n/**\n * Requests an email verification token directly from an Identity Server.\n *\n * Note that the Home Server offers APIs to proxy this API for specific\n * situations, allowing for better feedback to the user.\n *\n * @param {string} email The email address to request a token for\n * @param {string} clientSecret A secret binary string generated by the client.\n * It is recommended this be around 16 ASCII characters.\n * @param {number} sendAttempt If an identity server sees a duplicate request\n * with the same sendAttempt, it will not send another email.\n * To request another email to be sent, use a larger value for\n * the sendAttempt param as was used in the previous request.\n * @param {string} nextLink Optional If specified, the client will be redirected\n * to this link after validation.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n * @throws Error if No ID server is set\n */\nMatrixBaseApis.prototype.requestEmailToken = function (email, clientSecret, sendAttempt, nextLink, callback) {\n var params = {\n client_secret: clientSecret,\n email: email,\n send_attempt: sendAttempt,\n next_link: nextLink\n };\n return this._http.idServerRequest(callback, \"POST\", \"/validate/email/requestToken\", params, httpApi.PREFIX_IDENTITY_V1);\n};\n\n/**\n * Submits an MSISDN token to the identity server\n *\n * This is used when submitting the code sent by SMS to a phone number.\n * The ID server has an equivalent API for email but the js-sdk does\n * not expose this, since email is normally validated by the user clicking\n * a link rather than entering a code.\n *\n * @param {string} sid The sid given in the response to requestToken\n * @param {string} clientSecret A secret binary string generated by the client.\n * This must be the same value submitted in the requestToken call.\n * @param {string} token The token, as enetered by the user.\n *\n * @return {module:client.Promise} Resolves: Object, currently with no parameters.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n * @throws Error if No ID server is set\n */\nMatrixBaseApis.prototype.submitMsisdnToken = function (sid, clientSecret, token) {\n var params = {\n sid: sid,\n client_secret: clientSecret,\n token: token\n };\n return this._http.idServerRequest(undefined, \"POST\", \"/validate/msisdn/submitToken\", params, httpApi.PREFIX_IDENTITY_V1);\n};\n\n/**\n * Looks up the public Matrix ID mapping for a given 3rd party\n * identifier from the Identity Server\n * @param {string} medium The medium of the threepid, eg. 'email'\n * @param {string} address The textual address of the threepid\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: A threepid mapping\n * object or the empty object if no mapping\n * exists\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.lookupThreePid = function (medium, address, callback) {\n var params = {\n medium: medium,\n address: address\n };\n return this._http.idServerRequest(callback, \"GET\", \"/lookup\", params, httpApi.PREFIX_IDENTITY_V1);\n};\n\n// Direct-to-device messaging\n// ==========================\n\n/**\n * Send an event to a specific list of devices\n *\n * @param {string} eventType type of event to send\n * @param {Object.<string, Object<string, Object>>} contentMap\n * content to send. Map from user_id to device_id to content object.\n * @param {string=} txnId transaction id. One will be made up if not\n * supplied.\n * @return {module:client.Promise} Resolves to the result object\n */\nMatrixBaseApis.prototype.sendToDevice = function (eventType, contentMap, txnId) {\n var path = utils.encodeUri(\"/sendToDevice/$eventType/$txnId\", {\n $eventType: eventType,\n $txnId: txnId ? txnId : this.makeTxnId()\n });\n\n var body = {\n messages: contentMap\n };\n\n return this._http.authedRequestWithPrefix(undefined, \"PUT\", path, undefined, body, httpApi.PREFIX_UNSTABLE);\n};\n\n// Third party Lookup API\n// ======================\n\n/**\n * Get the third party protocols that can be reached using\n * this HS\n * @return {module:client.Promise} Resolves to the result object\n */\nMatrixBaseApis.prototype.getThirdpartyProtocols = function () {\n return this._http.authedRequestWithPrefix(undefined, \"GET\", \"/thirdparty/protocols\", undefined, undefined, httpApi.PREFIX_UNSTABLE).then(function (response) {\n // sanity check\n if (!response || (typeof response === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(response)) !== 'object') {\n throw new Error(\"/thirdparty/protocols did not return an object: \" + response);\n }\n return response;\n });\n};\n\n/**\n * Get information on how a specific place on a third party protocol\n * may be reached.\n * @param {string} protocol The protocol given in getThirdpartyProtocols()\n * @param {object} params Protocol-specific parameters, as given in th\n * response to getThirdpartyProtocols()\n * @return {module:client.Promise} Resolves to the result object\n */\nMatrixBaseApis.prototype.getThirdpartyLocation = function (protocol, params) {\n var path = utils.encodeUri(\"/thirdparty/location/$protocol\", {\n $protocol: protocol\n });\n\n return this._http.authedRequestWithPrefix(undefined, \"GET\", path, params, undefined, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * MatrixBaseApis object\n */\nmodule.exports = MatrixBaseApis;\n//# sourceMappingURL=base-apis.js.map","/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module crypto\n */\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _set = require('babel-runtime/core-js/set');\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\n// returns a promise which resolves to the response\nvar _uploadOneTimeKeys = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(crypto) {\n var oneTimeKeys, oneTimeJson, promises, keyId, k, res;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return (0, _bluebird.resolve)(crypto._olmDevice.getOneTimeKeys());\n\n case 2:\n oneTimeKeys = _context2.sent;\n oneTimeJson = {};\n promises = [];\n\n\n for (keyId in oneTimeKeys.curve25519) {\n if (oneTimeKeys.curve25519.hasOwnProperty(keyId)) {\n k = {\n key: oneTimeKeys.curve25519[keyId]\n };\n\n oneTimeJson[\"signed_curve25519:\" + keyId] = k;\n promises.push(crypto._signObject(k));\n }\n }\n\n _context2.next = 8;\n return (0, _bluebird.resolve)(_bluebird2.default.all(promises));\n\n case 8:\n _context2.next = 10;\n return (0, _bluebird.resolve)(crypto._baseApis.uploadKeysRequest({\n one_time_keys: oneTimeJson\n }, {\n // for now, we set the device id explicitly, as we may not be using the\n // same one as used in login.\n device_id: crypto._deviceId\n }));\n\n case 10:\n res = _context2.sent;\n _context2.next = 13;\n return (0, _bluebird.resolve)(crypto._olmDevice.markKeysAsPublished());\n\n case 13:\n return _context2.abrupt('return', res);\n\n case 14:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function _uploadOneTimeKeys(_x) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * Download the keys for a list of users and stores the keys in the session\n * store.\n * @param {Array} userIds The users to fetch.\n * @param {bool} forceDownload Always download the keys even if cached.\n *\n * @return {Promise} A promise which resolves to a map userId->deviceId->{@link\n * module:crypto/deviceinfo|DeviceInfo}.\n */\n\n\nvar _events = require('events');\n\nvar _OutgoingRoomKeyRequestManager = require('./OutgoingRoomKeyRequestManager');\n\nvar _OutgoingRoomKeyRequestManager2 = _interopRequireDefault(_OutgoingRoomKeyRequestManager);\n\nvar _indexeddbCryptoStore = require('./store/indexeddb-crypto-store');\n\nvar _indexeddbCryptoStore2 = _interopRequireDefault(_indexeddbCryptoStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar anotherjson = require('another-json');\n\n\nvar utils = require(\"../utils\");\nvar OlmDevice = require(\"./OlmDevice\");\nvar olmlib = require(\"./olmlib\");\nvar algorithms = require(\"./algorithms\");\nvar DeviceInfo = require(\"./deviceinfo\");\nvar DeviceVerification = DeviceInfo.DeviceVerification;\nvar DeviceList = require('./DeviceList').default;\n\n/**\n * Cryptography bits\n *\n * This module is internal to the js-sdk; the public API is via MatrixClient.\n *\n * @constructor\n * @alias module:crypto\n *\n * @internal\n *\n * @param {module:base-apis~MatrixBaseApis} baseApis base matrix api interface\n *\n * @param {module:store/session/webstorage~WebStorageSessionStore} sessionStore\n * Store to be used for end-to-end crypto session data\n *\n * @param {string} userId The user ID for the local user\n *\n * @param {string} deviceId The identifier for this device.\n *\n * @param {Object} clientStore the MatrixClient data store.\n *\n * @param {module:crypto/store/base~CryptoStore} cryptoStore\n * storage for the crypto layer.\n *\n * @param {RoomList} roomList An initialised RoomList object\n */\nfunction Crypto(baseApis, sessionStore, userId, deviceId, clientStore, cryptoStore, roomList) {\n this._baseApis = baseApis;\n this._sessionStore = sessionStore;\n this._userId = userId;\n this._deviceId = deviceId;\n this._clientStore = clientStore;\n this._cryptoStore = cryptoStore;\n this._roomList = roomList;\n\n this._olmDevice = new OlmDevice(sessionStore, cryptoStore);\n this._deviceList = new DeviceList(baseApis, cryptoStore, sessionStore, this._olmDevice);\n\n // the last time we did a check for the number of one-time-keys on the\n // server.\n this._lastOneTimeKeyCheck = null;\n this._oneTimeKeyCheckInProgress = false;\n\n // EncryptionAlgorithm instance for each room\n this._roomEncryptors = {};\n\n // map from algorithm to DecryptionAlgorithm instance, for each room\n this._roomDecryptors = {};\n\n this._supportedAlgorithms = utils.keys(algorithms.DECRYPTION_CLASSES);\n\n this._deviceKeys = {};\n\n this._globalBlacklistUnverifiedDevices = false;\n\n this._outgoingRoomKeyRequestManager = new _OutgoingRoomKeyRequestManager2.default(baseApis, this._deviceId, this._cryptoStore);\n\n // list of IncomingRoomKeyRequests/IncomingRoomKeyRequestCancellations\n // we received in the current sync.\n this._receivedRoomKeyRequests = [];\n this._receivedRoomKeyRequestCancellations = [];\n // true if we are currently processing received room key requests\n this._processingRoomKeyRequests = false;\n // controls whether device tracking is delayed\n // until calling encryptEvent or trackRoomDevices,\n // or done immediately upon enabling room encryption.\n this._lazyLoadMembers = false;\n // in case _lazyLoadMembers is true,\n // track if an initial tracking of all the room members\n // has happened for a given room. This is delayed\n // to avoid loading room members as long as possible.\n this._roomDeviceTrackingState = {};\n}\nutils.inherits(Crypto, _events.EventEmitter);\n\n/**\n * Initialise the crypto module so that it is ready for use\n *\n * Returns a promise which resolves once the crypto module is ready for use.\n */\nCrypto.prototype.init = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this = this;\n\n var sessionStoreHasAccount, cryptoStoreHasAccount, myDevices, deviceInfo;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n sessionStoreHasAccount = Boolean(this._sessionStore.getEndToEndAccount());\n cryptoStoreHasAccount = void 0;\n _context.next = 4;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this._cryptoStore.getAccount(txn, function (pickledAccount) {\n cryptoStoreHasAccount = Boolean(pickledAccount);\n });\n }));\n\n case 4:\n if (sessionStoreHasAccount && !cryptoStoreHasAccount) {\n // we're about to migrate to the crypto store\n this.emit(\"crypto.warning\", 'CRYPTO_WARNING_ACCOUNT_MIGRATED');\n } else if (sessionStoreHasAccount && cryptoStoreHasAccount) {\n // There's an account in both stores: an old version of\n // the code has been run against this store.\n this.emit(\"crypto.warning\", 'CRYPTO_WARNING_OLD_VERSION_DETECTED');\n }\n\n _context.next = 7;\n return (0, _bluebird.resolve)(this._olmDevice.init());\n\n case 7:\n _context.next = 9;\n return (0, _bluebird.resolve)(this._deviceList.load());\n\n case 9:\n\n // build our device keys: these will later be uploaded\n this._deviceKeys[\"ed25519:\" + this._deviceId] = this._olmDevice.deviceEd25519Key;\n this._deviceKeys[\"curve25519:\" + this._deviceId] = this._olmDevice.deviceCurve25519Key;\n\n myDevices = this._deviceList.getRawStoredDevicesForUser(this._userId);\n\n\n if (!myDevices) {\n myDevices = {};\n }\n\n if (!myDevices[this._deviceId]) {\n // add our own deviceinfo to the sessionstore\n deviceInfo = {\n keys: this._deviceKeys,\n algorithms: this._supportedAlgorithms,\n verified: DeviceVerification.VERIFIED,\n known: true\n };\n\n\n myDevices[this._deviceId] = deviceInfo;\n this._deviceList.storeDevicesForUser(this._userId, myDevices);\n this._deviceList.saveIfDirty();\n }\n\n case 14:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n}));\n\n/**\n */\nCrypto.prototype.enableLazyLoading = function () {\n this._lazyLoadMembers = true;\n};\n\n/**\n * Tell the crypto module to register for MatrixClient events which it needs to\n * listen for\n *\n * @param {external:EventEmitter} eventEmitter event source where we can register\n * for event notifications\n */\nCrypto.prototype.registerEventHandlers = function (eventEmitter) {\n var crypto = this;\n\n eventEmitter.on(\"RoomMember.membership\", function (event, member, oldMembership) {\n try {\n crypto._onRoomMembership(event, member, oldMembership);\n } catch (e) {\n console.error(\"Error handling membership change:\", e);\n }\n });\n\n eventEmitter.on(\"toDeviceEvent\", function (event) {\n crypto._onToDeviceEvent(event);\n });\n};\n\n/** Start background processes related to crypto */\nCrypto.prototype.start = function () {\n this._outgoingRoomKeyRequestManager.start();\n};\n\n/** Stop background processes related to crypto */\nCrypto.prototype.stop = function () {\n this._outgoingRoomKeyRequestManager.stop();\n};\n\n/**\n * @return {string} The version of Olm.\n */\nCrypto.getOlmVersion = function () {\n return OlmDevice.getOlmVersion();\n};\n\n/**\n * Get the Ed25519 key for this device\n *\n * @return {string} base64-encoded ed25519 key.\n */\nCrypto.prototype.getDeviceEd25519Key = function () {\n return this._olmDevice.deviceEd25519Key;\n};\n\n/**\n * Set the global override for whether the client should ever send encrypted\n * messages to unverified devices. This provides the default for rooms which\n * do not specify a value.\n *\n * @param {boolean} value whether to blacklist all unverified devices by default\n */\nCrypto.prototype.setGlobalBlacklistUnverifiedDevices = function (value) {\n this._globalBlacklistUnverifiedDevices = value;\n};\n\n/**\n * @return {boolean} whether to blacklist all unverified devices by default\n */\nCrypto.prototype.getGlobalBlacklistUnverifiedDevices = function () {\n return this._globalBlacklistUnverifiedDevices;\n};\n\n/**\n * Upload the device keys to the homeserver.\n * @return {object} A promise that will resolve when the keys are uploaded.\n */\nCrypto.prototype.uploadDeviceKeys = function () {\n var crypto = this;\n var userId = crypto._userId;\n var deviceId = crypto._deviceId;\n\n var deviceKeys = {\n algorithms: crypto._supportedAlgorithms,\n device_id: deviceId,\n keys: crypto._deviceKeys,\n user_id: userId\n };\n\n return crypto._signObject(deviceKeys).then(function () {\n crypto._baseApis.uploadKeysRequest({\n device_keys: deviceKeys\n }, {\n // for now, we set the device id explicitly, as we may not be using the\n // same one as used in login.\n device_id: deviceId\n });\n });\n};\n\n/**\n * Stores the current one_time_key count which will be handled later (in a call of\n * onSyncCompleted). The count is e.g. coming from a /sync response.\n *\n * @param {Number} currentCount The current count of one_time_keys to be stored\n */\nCrypto.prototype.updateOneTimeKeyCount = function (currentCount) {\n if (isFinite(currentCount)) {\n this._oneTimeKeyCount = currentCount;\n } else {\n throw new TypeError(\"Parameter for updateOneTimeKeyCount has to be a number\");\n }\n};\n\n// check if it's time to upload one-time keys, and do so if so.\nfunction _maybeUploadOneTimeKeys(crypto) {\n // frequency with which to check & upload one-time keys\n var uploadPeriod = 1000 * 60; // one minute\n\n // max number of keys to upload at once\n // Creating keys can be an expensive operation so we limit the\n // number we generate in one go to avoid blocking the application\n // for too long.\n var maxKeysPerCycle = 5;\n\n if (crypto._oneTimeKeyCheckInProgress) {\n return;\n }\n\n var now = Date.now();\n if (crypto._lastOneTimeKeyCheck !== null && now - crypto._lastOneTimeKeyCheck < uploadPeriod) {\n // we've done a key upload recently.\n return;\n }\n\n crypto._lastOneTimeKeyCheck = now;\n\n // We need to keep a pool of one time public keys on the server so that\n // other devices can start conversations with us. But we can only store\n // a finite number of private keys in the olm Account object.\n // To complicate things further then can be a delay between a device\n // claiming a public one time key from the server and it sending us a\n // message. We need to keep the corresponding private key locally until\n // we receive the message.\n // But that message might never arrive leaving us stuck with duff\n // private keys clogging up our local storage.\n // So we need some kind of enginering compromise to balance all of\n // these factors.\n\n // Check how many keys we can store in the Account object.\n var maxOneTimeKeys = crypto._olmDevice.maxNumberOfOneTimeKeys();\n // Try to keep at most half that number on the server. This leaves the\n // rest of the slots free to hold keys that have been claimed from the\n // server but we haven't recevied a message for.\n // If we run out of slots when generating new keys then olm will\n // discard the oldest private keys first. This will eventually clean\n // out stale private keys that won't receive a message.\n var keyLimit = Math.floor(maxOneTimeKeys / 2);\n\n function uploadLoop(keyCount) {\n if (keyLimit <= keyCount) {\n // If we don't need to generate any more keys then we are done.\n return _bluebird2.default.resolve();\n }\n\n var keysThisLoop = Math.min(keyLimit - keyCount, maxKeysPerCycle);\n\n // Ask olm to generate new one time keys, then upload them to synapse.\n return crypto._olmDevice.generateOneTimeKeys(keysThisLoop).then(function () {\n return _uploadOneTimeKeys(crypto);\n }).then(function (res) {\n if (res.one_time_key_counts && res.one_time_key_counts.signed_curve25519) {\n // if the response contains a more up to date value use this\n // for the next loop\n return uploadLoop(res.one_time_key_counts.signed_curve25519);\n } else {\n throw new Error(\"response for uploading keys does not contain \" + \"one_time_key_counts.signed_curve25519\");\n }\n });\n }\n\n crypto._oneTimeKeyCheckInProgress = true;\n _bluebird2.default.resolve().then(function () {\n if (crypto._oneTimeKeyCount !== undefined) {\n // We already have the current one_time_key count from a /sync response.\n // Use this value instead of asking the server for the current key count.\n return _bluebird2.default.resolve(crypto._oneTimeKeyCount);\n }\n // ask the server how many keys we have\n return crypto._baseApis.uploadKeysRequest({}, {\n device_id: crypto._deviceId\n }).then(function (res) {\n return res.one_time_key_counts.signed_curve25519 || 0;\n });\n }).then(function (keyCount) {\n // Start the uploadLoop with the current keyCount. The function checks if\n // we need to upload new keys or not.\n // If there are too many keys on the server then we don't need to\n // create any more keys.\n return uploadLoop(keyCount);\n }).catch(function (e) {\n console.error(\"Error uploading one-time keys\", e.stack || e);\n }).finally(function () {\n // reset _oneTimeKeyCount to prevent start uploading based on old data.\n // it will be set again on the next /sync-response\n crypto._oneTimeKeyCount = undefined;\n crypto._oneTimeKeyCheckInProgress = false;\n }).done();\n}Crypto.prototype.downloadKeys = function (userIds, forceDownload) {\n return this._deviceList.downloadKeys(userIds, forceDownload);\n};\n\n/**\n * Get the stored device keys for a user id\n *\n * @param {string} userId the user to list keys for.\n *\n * @return {module:crypto/deviceinfo[]|null} list of devices, or null if we haven't\n * managed to get a list of devices for this user yet.\n */\nCrypto.prototype.getStoredDevicesForUser = function (userId) {\n return this._deviceList.getStoredDevicesForUser(userId);\n};\n\n/**\n * Get the stored keys for a single device\n *\n * @param {string} userId\n * @param {string} deviceId\n *\n * @return {module:crypto/deviceinfo?} device, or undefined\n * if we don't know about this device\n */\nCrypto.prototype.getStoredDevice = function (userId, deviceId) {\n return this._deviceList.getStoredDevice(userId, deviceId);\n};\n\n/**\n * Save the device list, if necessary\n *\n * @param {integer} delay Time in ms before which the save actually happens.\n * By default, the save is delayed for a short period in order to batch\n * multiple writes, but this behaviour can be disabled by passing 0.\n *\n * @return {Promise<bool>} true if the data was saved, false if\n * it was not (eg. because no changes were pending). The promise\n * will only resolve once the data is saved, so may take some time\n * to resolve.\n */\nCrypto.prototype.saveDeviceList = function (delay) {\n return this._deviceList.saveIfDirty(delay);\n};\n\n/**\n * Update the blocked/verified state of the given device\n *\n * @param {string} userId owner of the device\n * @param {string} deviceId unique identifier for the device\n *\n * @param {?boolean} verified whether to mark the device as verified. Null to\n * leave unchanged.\n *\n * @param {?boolean} blocked whether to mark the device as blocked. Null to\n * leave unchanged.\n *\n * @param {?boolean} known whether to mark that the user has been made aware of\n * the existence of this device. Null to leave unchanged\n *\n * @return {Promise<module:crypto/deviceinfo>} updated DeviceInfo\n */\nCrypto.prototype.setDeviceVerification = function () {\n var _ref3 = (0, _bluebird.method)(function (userId, deviceId, verified, blocked, known) {\n var devices = this._deviceList.getRawStoredDevicesForUser(userId);\n if (!devices || !devices[deviceId]) {\n throw new Error(\"Unknown device \" + userId + \":\" + deviceId);\n }\n\n var dev = devices[deviceId];\n var verificationStatus = dev.verified;\n\n if (verified) {\n verificationStatus = DeviceVerification.VERIFIED;\n } else if (verified !== null && verificationStatus == DeviceVerification.VERIFIED) {\n verificationStatus = DeviceVerification.UNVERIFIED;\n }\n\n if (blocked) {\n verificationStatus = DeviceVerification.BLOCKED;\n } else if (blocked !== null && verificationStatus == DeviceVerification.BLOCKED) {\n verificationStatus = DeviceVerification.UNVERIFIED;\n }\n\n var knownStatus = dev.known;\n if (known !== null && known !== undefined) {\n knownStatus = known;\n }\n\n if (dev.verified !== verificationStatus || dev.known !== knownStatus) {\n dev.verified = verificationStatus;\n dev.known = knownStatus;\n this._deviceList.storeDevicesForUser(userId, devices);\n this._deviceList.saveIfDirty();\n }\n return DeviceInfo.fromStorage(dev, deviceId);\n });\n\n return function (_x2, _x3, _x4, _x5, _x6) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * Get information on the active olm sessions with a user\n * <p>\n * Returns a map from device id to an object with keys 'deviceIdKey' (the\n * device's curve25519 identity key) and 'sessions' (an array of objects in the\n * same format as that returned by\n * {@link module:crypto/OlmDevice#getSessionInfoForDevice}).\n * <p>\n * This method is provided for debugging purposes.\n *\n * @param {string} userId id of user to inspect\n *\n * @return {Promise<Object.<string, {deviceIdKey: string, sessions: object[]}>>}\n */\nCrypto.prototype.getOlmSessionsForUser = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(userId) {\n var devices, result, j, device, deviceKey, sessions;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n devices = this.getStoredDevicesForUser(userId) || [];\n result = {};\n j = 0;\n\n case 3:\n if (!(j < devices.length)) {\n _context3.next = 13;\n break;\n }\n\n device = devices[j];\n deviceKey = device.getIdentityKey();\n _context3.next = 8;\n return (0, _bluebird.resolve)(this._olmDevice.getSessionInfoForDevice(deviceKey));\n\n case 8:\n sessions = _context3.sent;\n\n\n result[device.deviceId] = {\n deviceIdKey: deviceKey,\n sessions: sessions\n };\n\n case 10:\n ++j;\n _context3.next = 3;\n break;\n\n case 13:\n return _context3.abrupt('return', result);\n\n case 14:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function (_x7) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * Get the device which sent an event\n *\n * @param {module:models/event.MatrixEvent} event event to be checked\n *\n * @return {module:crypto/deviceinfo?}\n */\nCrypto.prototype.getEventSenderDeviceInfo = function (event) {\n var senderKey = event.getSenderKey();\n var algorithm = event.getWireContent().algorithm;\n\n if (!senderKey || !algorithm) {\n return null;\n }\n\n var forwardingChain = event.getForwardingCurve25519KeyChain();\n if (forwardingChain.length > 0) {\n // we got this event from somewhere else\n // TODO: check if we can trust the forwarders.\n return null;\n }\n\n // senderKey is the Curve25519 identity key of the device which the event\n // was sent from. In the case of Megolm, it's actually the Curve25519\n // identity key of the device which set up the Megolm session.\n\n var device = this._deviceList.getDeviceByIdentityKey(event.getSender(), algorithm, senderKey);\n\n if (device === null) {\n // we haven't downloaded the details of this device yet.\n return null;\n }\n\n // so far so good, but now we need to check that the sender of this event\n // hadn't advertised someone else's Curve25519 key as their own. We do that\n // by checking the Ed25519 claimed by the event (or, in the case of megolm,\n // the event which set up the megolm session), to check that it matches the\n // fingerprint of the purported sending device.\n //\n // (see https://github.com/vector-im/vector-web/issues/2215)\n\n var claimedKey = event.getClaimedEd25519Key();\n if (!claimedKey) {\n console.warn(\"Event \" + event.getId() + \" claims no ed25519 key: \" + \"cannot verify sending device\");\n return null;\n }\n\n if (claimedKey !== device.getFingerprint()) {\n console.warn(\"Event \" + event.getId() + \" claims ed25519 key \" + claimedKey + \"but sender device has key \" + device.getFingerprint());\n return null;\n }\n\n return device;\n};\n\n/**\n * Forces the current outbound group session to be discarded such\n * that another one will be created next time an event is sent.\n *\n * @param {string} roomId The ID of the room to discard the session for\n *\n * This should not normally be necessary.\n */\nCrypto.prototype.forceDiscardSession = function (roomId) {\n var alg = this._roomEncryptors[roomId];\n if (alg === undefined) throw new Error(\"Room not encrypted\");\n if (alg.forceDiscardSession === undefined) {\n throw new Error(\"Room encryption algorithm doesn't support session discarding\");\n }\n alg.forceDiscardSession();\n};\n\n/**\n * Configure a room to use encryption (ie, save a flag in the sessionstore).\n *\n * @param {string} roomId The room ID to enable encryption in.\n *\n * @param {object} config The encryption config for the room.\n *\n * @param {boolean=} inhibitDeviceQuery true to suppress device list query for\n * users in the room (for now). In case lazy loading is enabled,\n * the device query is always inhibited as the members are not tracked.\n */\nCrypto.prototype.setRoomEncryption = function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(roomId, config, inhibitDeviceQuery) {\n var existingConfig, existingAlg, storeConfigPromise, AlgClass, alg;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n // if state is being replayed from storage, we might already have a configuration\n // for this room as they are persisted as well.\n // We just need to make sure the algorithm is initialized in this case.\n // However, if the new config is different,\n // we should bail out as room encryption can't be changed once set.\n existingConfig = this._roomList.getRoomEncryption(roomId);\n\n if (!existingConfig) {\n _context4.next = 5;\n break;\n }\n\n if (!((0, _stringify2.default)(existingConfig) != (0, _stringify2.default)(config))) {\n _context4.next = 5;\n break;\n }\n\n console.error(\"Ignoring m.room.encryption event which requests \" + \"a change of config in \" + roomId);\n return _context4.abrupt('return');\n\n case 5:\n // if we already have encryption in this room, we should ignore this event,\n // as it would reset the encryption algorithm.\n // This is at least expected to be called twice, as sync calls onCryptoEvent\n // for both the timeline and state sections in the /sync response,\n // the encryption event would appear in both.\n // If it's called more than twice though,\n // it signals a bug on client or server.\n existingAlg = this._roomEncryptors[roomId];\n\n if (!existingAlg) {\n _context4.next = 8;\n break;\n }\n\n return _context4.abrupt('return');\n\n case 8:\n\n // _roomList.getRoomEncryption will not race with _roomList.setRoomEncryption\n // because it first stores in memory. We should await the promise only\n // after all the in-memory state (_roomEncryptors and _roomList) has been updated\n // to avoid races when calling this method multiple times. Hence keep a hold of the promise.\n storeConfigPromise = null;\n\n if (!existingConfig) {\n storeConfigPromise = this._roomList.setRoomEncryption(roomId, config);\n }\n\n AlgClass = algorithms.ENCRYPTION_CLASSES[config.algorithm];\n\n if (AlgClass) {\n _context4.next = 13;\n break;\n }\n\n throw new Error(\"Unable to encrypt with \" + config.algorithm);\n\n case 13:\n alg = new AlgClass({\n userId: this._userId,\n deviceId: this._deviceId,\n crypto: this,\n olmDevice: this._olmDevice,\n baseApis: this._baseApis,\n roomId: roomId,\n config: config\n });\n\n this._roomEncryptors[roomId] = alg;\n\n if (!storeConfigPromise) {\n _context4.next = 18;\n break;\n }\n\n _context4.next = 18;\n return (0, _bluebird.resolve)(storeConfigPromise);\n\n case 18:\n if (this._lazyLoadMembers) {\n _context4.next = 25;\n break;\n }\n\n console.log(\"Enabling encryption in \" + roomId + \"; \" + \"starting to track device lists for all users therein\");\n\n _context4.next = 22;\n return (0, _bluebird.resolve)(this.trackRoomDevices(roomId));\n\n case 22:\n // TODO: this flag is only not used from MatrixClient::setRoomEncryption\n // which is never used (inside riot at least)\n // but didn't want to remove it as it technically would\n // be a breaking change.\n if (!this.inhibitDeviceQuery) {\n this._deviceList.refreshOutdatedDeviceLists();\n }\n _context4.next = 26;\n break;\n\n case 25:\n console.log(\"Enabling encryption in \" + roomId);\n\n case 26:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n return function (_x8, _x9, _x10) {\n return _ref5.apply(this, arguments);\n };\n}();\n\n/**\n * Make sure we are tracking the device lists for all users in this room.\n *\n * @param {string} roomId The room ID to start tracking devices in.\n * @returns {Promise} when all devices for the room have been fetched and marked to track\n */\nCrypto.prototype.trackRoomDevices = function (roomId) {\n var _this2 = this;\n\n var trackMembers = function () {\n var _ref6 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {\n var room, members;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n if (_this2._roomEncryptors[roomId]) {\n _context5.next = 2;\n break;\n }\n\n return _context5.abrupt('return');\n\n case 2:\n room = _this2._clientStore.getRoom(roomId);\n\n if (room) {\n _context5.next = 5;\n break;\n }\n\n throw new Error('Unable to start tracking devices in unknown room ' + roomId);\n\n case 5:\n console.log('Starting to track devices for room ' + roomId + ' ...');\n _context5.next = 8;\n return (0, _bluebird.resolve)(room.getEncryptionTargetMembers());\n\n case 8:\n members = _context5.sent;\n\n members.forEach(function (m) {\n _this2._deviceList.startTrackingDeviceList(m.userId);\n });\n\n case 10:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, _this2);\n }));\n\n return function trackMembers() {\n return _ref6.apply(this, arguments);\n };\n }();\n\n var promise = this._roomDeviceTrackingState[roomId];\n if (!promise) {\n promise = trackMembers();\n this._roomDeviceTrackingState[roomId] = promise;\n }\n return promise;\n};\n\n/**\n * @typedef {Object} module:crypto~OlmSessionResult\n * @property {module:crypto/deviceinfo} device device info\n * @property {string?} sessionId base64 olm session id; null if no session\n * could be established\n */\n\n/**\n * Try to make sure we have established olm sessions for all known devices for\n * the given users.\n *\n * @param {string[]} users list of user ids\n *\n * @return {module:client.Promise} resolves once the sessions are complete, to\n * an Object mapping from userId to deviceId to\n * {@link module:crypto~OlmSessionResult}\n */\nCrypto.prototype.ensureOlmSessionsForUsers = function (users) {\n var devicesByUser = {};\n\n for (var i = 0; i < users.length; ++i) {\n var userId = users[i];\n devicesByUser[userId] = [];\n\n var devices = this.getStoredDevicesForUser(userId) || [];\n for (var j = 0; j < devices.length; ++j) {\n var deviceInfo = devices[j];\n\n var key = deviceInfo.getIdentityKey();\n if (key == this._olmDevice.deviceCurve25519Key) {\n // don't bother setting up session to ourself\n continue;\n }\n if (deviceInfo.verified == DeviceVerification.BLOCKED) {\n // don't bother setting up sessions with blocked users\n continue;\n }\n\n devicesByUser[userId].push(deviceInfo);\n }\n }\n\n return olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, devicesByUser);\n};\n\n/**\n * Get a list containing all of the room keys\n *\n * @return {module:crypto/OlmDevice.MegolmSessionData[]} a list of session export objects\n */\nCrypto.prototype.exportRoomKeys = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee6() {\n var _this3 = this;\n\n var exportedSessions;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n exportedSessions = [];\n _context6.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n _this3._cryptoStore.getAllEndToEndInboundGroupSessions(txn, function (s) {\n if (s === null) return;\n\n var sess = _this3._olmDevice.exportInboundGroupSession(s.senderKey, s.sessionId, s.sessionData);\n sess.algorithm = olmlib.MEGOLM_ALGORITHM;\n exportedSessions.push(sess);\n });\n }));\n\n case 3:\n return _context6.abrupt('return', exportedSessions);\n\n case 4:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n}));\n\n/**\n * Import a list of room keys previously exported by exportRoomKeys\n *\n * @param {Object[]} keys a list of session export objects\n * @return {module:client.Promise} a promise which resolves once the keys have been imported\n */\nCrypto.prototype.importRoomKeys = function (keys) {\n var _this4 = this;\n\n return _bluebird2.default.map(keys, function (key) {\n if (!key.room_id || !key.algorithm) {\n console.warn(\"ignoring room key entry with missing fields\", key);\n return null;\n }\n\n var alg = _this4._getRoomDecryptor(key.room_id, key.algorithm);\n return alg.importRoomKey(key);\n });\n};\n/* eslint-disable valid-jsdoc */ //https://github.com/eslint/eslint/issues/7307\n/**\n * Encrypt an event according to the configuration of the room.\n *\n * @param {module:models/event.MatrixEvent} event event to be sent\n *\n * @param {module:models/room} room destination room.\n *\n * @return {module:client.Promise?} Promise which resolves when the event has been\n * encrypted, or null if nothing was needed\n */\n/* eslint-enable valid-jsdoc */\nCrypto.prototype.encryptEvent = function () {\n var _ref8 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(event, room) {\n var roomId, alg, content, mRelatesTo, encryptedContent;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n if (room) {\n _context7.next = 2;\n break;\n }\n\n throw new Error(\"Cannot send encrypted messages in unknown rooms\");\n\n case 2:\n roomId = event.getRoomId();\n alg = this._roomEncryptors[roomId];\n\n if (alg) {\n _context7.next = 6;\n break;\n }\n\n throw new Error(\"Room was previously configured to use encryption, but is \" + \"no longer. Perhaps the homeserver is hiding the \" + \"configuration event.\");\n\n case 6:\n\n if (!this._roomDeviceTrackingState[roomId]) {\n this.trackRoomDevices(roomId);\n }\n // wait for all the room devices to be loaded\n _context7.next = 9;\n return (0, _bluebird.resolve)(this._roomDeviceTrackingState[roomId]);\n\n case 9:\n content = event.getContent();\n // If event has an m.relates_to then we need\n // to put this on the wrapping event instead\n\n mRelatesTo = content['m.relates_to'];\n\n if (mRelatesTo) {\n // Clone content here so we don't remove `m.relates_to` from the local-echo\n content = (0, _assign2.default)({}, content);\n delete content['m.relates_to'];\n }\n\n _context7.next = 14;\n return (0, _bluebird.resolve)(alg.encryptMessage(room, event.getType(), content));\n\n case 14:\n encryptedContent = _context7.sent;\n\n\n if (mRelatesTo) {\n encryptedContent['m.relates_to'] = mRelatesTo;\n }\n\n event.makeEncrypted(\"m.room.encrypted\", encryptedContent, this._olmDevice.deviceCurve25519Key, this._olmDevice.deviceEd25519Key);\n\n case 17:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n return function (_x11, _x12) {\n return _ref8.apply(this, arguments);\n };\n}();\n\n/**\n * Decrypt a received event\n *\n * @param {MatrixEvent} event\n *\n * @return {Promise<module:crypto~EventDecryptionResult>} resolves once we have\n * finished decrypting. Rejects with an `algorithms.DecryptionError` if there\n * is a problem decrypting the event.\n */\nCrypto.prototype.decryptEvent = function (event) {\n if (event.isRedacted()) {\n return _bluebird2.default.resolve({\n clearEvent: {\n room_id: event.getRoomId(),\n type: \"m.room.message\",\n content: {}\n }\n });\n }\n var content = event.getWireContent();\n var alg = this._getRoomDecryptor(event.getRoomId(), content.algorithm);\n return alg.decryptEvent(event);\n};\n\n/**\n * Handle the notification from /sync or /keys/changes that device lists have\n * been changed.\n *\n * @param {Object} syncData Object containing sync tokens associated with this sync\n * @param {Object} syncDeviceLists device_lists field from /sync, or response from\n * /keys/changes\n */\nCrypto.prototype.handleDeviceListChanges = function () {\n var _ref9 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(syncData, syncDeviceLists) {\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n if (syncData.oldSyncToken) {\n _context8.next = 2;\n break;\n }\n\n return _context8.abrupt('return');\n\n case 2:\n _context8.next = 4;\n return (0, _bluebird.resolve)(this._evalDeviceListChanges(syncDeviceLists));\n\n case 4:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n return function (_x13, _x14) {\n return _ref9.apply(this, arguments);\n };\n}();\n\n/**\n * Send a request for some room keys, if we have not already done so\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * @param {Array<{userId: string, deviceId: string}>} recipients\n */\nCrypto.prototype.requestRoomKey = function (requestBody, recipients) {\n this._outgoingRoomKeyRequestManager.sendRoomKeyRequest(requestBody, recipients).catch(function (e) {\n // this normally means we couldn't talk to the store\n console.error('Error requesting key for event', e);\n }).done();\n};\n\n/**\n * Cancel any earlier room key request\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * parameters to match for cancellation\n * @param {boolean} andResend\n * if true, resend the key request after cancelling.\n */\nCrypto.prototype.cancelRoomKeyRequest = function (requestBody, andResend) {\n this._outgoingRoomKeyRequestManager.cancelRoomKeyRequest(requestBody, andResend).catch(function (e) {\n console.warn(\"Error clearing pending room key requests\", e);\n }).done();\n};\n\n/**\n * handle an m.room.encryption event\n *\n * @param {module:models/event.MatrixEvent} event encryption event\n */\nCrypto.prototype.onCryptoEvent = function () {\n var _ref10 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(event) {\n var roomId, content;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n roomId = event.getRoomId();\n content = event.getContent();\n _context9.prev = 2;\n _context9.next = 5;\n return (0, _bluebird.resolve)(this.setRoomEncryption(roomId, content, true));\n\n case 5:\n _context9.next = 10;\n break;\n\n case 7:\n _context9.prev = 7;\n _context9.t0 = _context9['catch'](2);\n\n console.error(\"Error configuring encryption in room \" + roomId + \":\", _context9.t0);\n\n case 10:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this, [[2, 7]]);\n }));\n\n return function (_x15) {\n return _ref10.apply(this, arguments);\n };\n}();\n\n/**\n * Called before the result of a sync is procesed\n *\n * @param {Object} syncData the data from the 'MatrixClient.sync' event\n */\nCrypto.prototype.onSyncWillProcess = function () {\n var _ref11 = (0, _bluebird.method)(function (syncData) {\n if (!syncData.oldSyncToken) {\n // If there is no old sync token, we start all our tracking from\n // scratch, so mark everything as untracked. onCryptoEvent will\n // be called for all e2e rooms during the processing of the sync,\n // at which point we'll start tracking all the users of that room.\n console.log(\"Initial sync performed - resetting device tracking state\");\n this._deviceList.stopTrackingAllDeviceLists();\n this._roomDeviceTrackingState = {};\n }\n });\n\n return function (_x16) {\n return _ref11.apply(this, arguments);\n };\n}();\n\n/**\n * handle the completion of a /sync\n *\n * This is called after the processing of each successful /sync response.\n * It is an opportunity to do a batch process on the information received.\n *\n * @param {Object} syncData the data from the 'MatrixClient.sync' event\n */\nCrypto.prototype.onSyncCompleted = function () {\n var _ref12 = (0, _bluebird.method)(function (syncData) {\n var nextSyncToken = syncData.nextSyncToken;\n\n this._deviceList.setSyncToken(syncData.nextSyncToken);\n this._deviceList.saveIfDirty();\n\n // catch up on any new devices we got told about during the sync.\n this._deviceList.lastKnownSyncToken = nextSyncToken;\n this._deviceList.refreshOutdatedDeviceLists();\n\n // we don't start uploading one-time keys until we've caught up with\n // to-device messages, to help us avoid throwing away one-time-keys that we\n // are about to receive messages for\n // (https://github.com/vector-im/riot-web/issues/2782).\n if (!syncData.catchingUp) {\n _maybeUploadOneTimeKeys(this);\n this._processReceivedRoomKeyRequests();\n }\n });\n\n return function (_x17) {\n return _ref12.apply(this, arguments);\n };\n}();\n\n/**\n * Trigger the appropriate invalidations and removes for a given\n * device list\n *\n * @param {Object} deviceLists device_lists field from /sync, or response from\n * /keys/changes\n */\nCrypto.prototype._evalDeviceListChanges = function () {\n var _ref13 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(deviceLists) {\n var _this5 = this;\n\n var e2eUserIds;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n if (deviceLists.changed && Array.isArray(deviceLists.changed)) {\n deviceLists.changed.forEach(function (u) {\n _this5._deviceList.invalidateUserDeviceList(u);\n });\n }\n\n if (!(deviceLists.left && Array.isArray(deviceLists.left) && deviceLists.left.length)) {\n _context10.next = 8;\n break;\n }\n\n _context10.t0 = _set2.default;\n _context10.next = 5;\n return (0, _bluebird.resolve)(this._getTrackedE2eUsers());\n\n case 5:\n _context10.t1 = _context10.sent;\n e2eUserIds = new _context10.t0(_context10.t1);\n\n\n deviceLists.left.forEach(function (u) {\n if (!e2eUserIds.has(u)) {\n _this5._deviceList.stopTrackingDeviceList(u);\n }\n });\n\n case 8:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n return function (_x18) {\n return _ref13.apply(this, arguments);\n };\n}();\n\n/**\n * Get a list of all the IDs of users we share an e2e room with\n * for which we are tracking devices already\n *\n * @returns {string[]} List of user IDs\n */\nCrypto.prototype._getTrackedE2eUsers = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee11() {\n var e2eUserIds, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, room, members, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, member;\n\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n e2eUserIds = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context11.prev = 4;\n _iterator = (0, _getIterator3.default)(this._getTrackedE2eRooms());\n\n case 6:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context11.next = 33;\n break;\n }\n\n room = _step.value;\n _context11.next = 10;\n return (0, _bluebird.resolve)(room.getEncryptionTargetMembers());\n\n case 10:\n members = _context11.sent;\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context11.prev = 14;\n\n for (_iterator2 = (0, _getIterator3.default)(members); !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n member = _step2.value;\n\n e2eUserIds.push(member.userId);\n }\n _context11.next = 22;\n break;\n\n case 18:\n _context11.prev = 18;\n _context11.t0 = _context11['catch'](14);\n _didIteratorError2 = true;\n _iteratorError2 = _context11.t0;\n\n case 22:\n _context11.prev = 22;\n _context11.prev = 23;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n\n case 25:\n _context11.prev = 25;\n\n if (!_didIteratorError2) {\n _context11.next = 28;\n break;\n }\n\n throw _iteratorError2;\n\n case 28:\n return _context11.finish(25);\n\n case 29:\n return _context11.finish(22);\n\n case 30:\n _iteratorNormalCompletion = true;\n _context11.next = 6;\n break;\n\n case 33:\n _context11.next = 39;\n break;\n\n case 35:\n _context11.prev = 35;\n _context11.t1 = _context11['catch'](4);\n _didIteratorError = true;\n _iteratorError = _context11.t1;\n\n case 39:\n _context11.prev = 39;\n _context11.prev = 40;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 42:\n _context11.prev = 42;\n\n if (!_didIteratorError) {\n _context11.next = 45;\n break;\n }\n\n throw _iteratorError;\n\n case 45:\n return _context11.finish(42);\n\n case 46:\n return _context11.finish(39);\n\n case 47:\n return _context11.abrupt('return', e2eUserIds);\n\n case 48:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee11, this, [[4, 35, 39, 47], [14, 18, 22, 30], [23,, 25, 29], [40,, 42, 46]]);\n}));\n\n/**\n * Get a list of the e2e-enabled rooms we are members of,\n * and for which we are already tracking the devices\n *\n * @returns {module:models.Room[]}\n */\nCrypto.prototype._getTrackedE2eRooms = function () {\n var _this6 = this;\n\n return this._clientStore.getRooms().filter(function (room) {\n // check for rooms with encryption enabled\n var alg = _this6._roomEncryptors[room.roomId];\n if (!alg) {\n return false;\n }\n if (!_this6._roomDeviceTrackingState[room.roomId]) {\n return false;\n }\n\n // ignore any rooms which we have left\n var myMembership = room.getMyMembership();\n return myMembership === \"join\" || myMembership === \"invite\";\n });\n};\n\nCrypto.prototype._onToDeviceEvent = function (event) {\n var _this7 = this;\n\n try {\n if (event.getType() == \"m.room_key\" || event.getType() == \"m.forwarded_room_key\") {\n this._onRoomKeyEvent(event);\n } else if (event.getType() == \"m.room_key_request\") {\n this._onRoomKeyRequestEvent(event);\n } else if (event.isBeingDecrypted()) {\n // once the event has been decrypted, try again\n event.once('Event.decrypted', function (ev) {\n _this7._onToDeviceEvent(ev);\n });\n }\n } catch (e) {\n console.error(\"Error handling toDeviceEvent:\", e);\n }\n};\n\n/**\n * Handle a key event\n *\n * @private\n * @param {module:models/event.MatrixEvent} event key event\n */\nCrypto.prototype._onRoomKeyEvent = function (event) {\n var content = event.getContent();\n\n if (!content.room_id || !content.algorithm) {\n console.error(\"key event is missing fields\");\n return;\n }\n\n var alg = this._getRoomDecryptor(content.room_id, content.algorithm);\n alg.onRoomKeyEvent(event);\n};\n\n/**\n * Handle a change in the membership state of a member of a room\n *\n * @private\n * @param {module:models/event.MatrixEvent} event event causing the change\n * @param {module:models/room-member} member user whose membership changed\n * @param {string=} oldMembership previous membership\n */\nCrypto.prototype._onRoomMembership = function (event, member, oldMembership) {\n // this event handler is registered on the *client* (as opposed to the room\n // member itself), which means it is only called on changes to the *live*\n // membership state (ie, it is not called when we back-paginate, nor when\n // we load the state in the initialsync).\n //\n // Further, it is automatically registered and called when new members\n // arrive in the room.\n\n var roomId = member.roomId;\n\n var alg = this._roomEncryptors[roomId];\n if (!alg) {\n // not encrypting in this room\n return;\n }\n // only mark users in this room as tracked if we already started tracking in this room\n // this way we don't start device queries after sync on behalf of this room which we won't use\n // the result of anyway, as we'll need to do a query again once all the members are fetched\n // by calling _trackRoomDevices\n if (this._roomDeviceTrackingState[roomId]) {\n if (member.membership == 'join') {\n console.log('Join event for ' + member.userId + ' in ' + roomId);\n // make sure we are tracking the deviceList for this user\n this._deviceList.startTrackingDeviceList(member.userId);\n } else if (member.membership == 'invite' && this._clientStore.getRoom(roomId).shouldEncryptForInvitedMembers()) {\n console.log('Invite event for ' + member.userId + ' in ' + roomId);\n this._deviceList.startTrackingDeviceList(member.userId);\n }\n }\n\n alg.onRoomMembership(event, member, oldMembership);\n};\n\n/**\n * Called when we get an m.room_key_request event.\n *\n * @private\n * @param {module:models/event.MatrixEvent} event key request event\n */\nCrypto.prototype._onRoomKeyRequestEvent = function (event) {\n var content = event.getContent();\n if (content.action === \"request\") {\n // Queue it up for now, because they tend to arrive before the room state\n // events at initial sync, and we want to see if we know anything about the\n // room before passing them on to the app.\n var req = new IncomingRoomKeyRequest(event);\n this._receivedRoomKeyRequests.push(req);\n } else if (content.action === \"request_cancellation\") {\n var _req = new IncomingRoomKeyRequestCancellation(event);\n this._receivedRoomKeyRequestCancellations.push(_req);\n }\n};\n\n/**\n * Process any m.room_key_request events which were queued up during the\n * current sync.\n *\n * @private\n */\nCrypto.prototype._processReceivedRoomKeyRequests = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee12() {\n var _this8 = this;\n\n var requests, cancellations;\n return _regenerator2.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n if (!this._processingRoomKeyRequests) {\n _context12.next = 2;\n break;\n }\n\n return _context12.abrupt('return');\n\n case 2:\n this._processingRoomKeyRequests = true;\n\n _context12.prev = 3;\n\n // we need to grab and clear the queues in the synchronous bit of this method,\n // so that we don't end up racing with the next /sync.\n requests = this._receivedRoomKeyRequests;\n\n this._receivedRoomKeyRequests = [];\n cancellations = this._receivedRoomKeyRequestCancellations;\n\n this._receivedRoomKeyRequestCancellations = [];\n\n // Process all of the requests, *then* all of the cancellations.\n //\n // This makes sure that if we get a request and its cancellation in the\n // same /sync result, then we process the request before the\n // cancellation (and end up with a cancelled request), rather than the\n // cancellation before the request (and end up with an outstanding\n // request which should have been cancelled.)\n _context12.next = 10;\n return (0, _bluebird.resolve)(_bluebird2.default.map(requests, function (req) {\n return _this8._processReceivedRoomKeyRequest(req);\n }));\n\n case 10:\n _context12.next = 12;\n return (0, _bluebird.resolve)(_bluebird2.default.map(cancellations, function (cancellation) {\n return _this8._processReceivedRoomKeyRequestCancellation(cancellation);\n }));\n\n case 12:\n _context12.next = 17;\n break;\n\n case 14:\n _context12.prev = 14;\n _context12.t0 = _context12['catch'](3);\n\n console.error('Error processing room key requsts: ' + _context12.t0);\n\n case 17:\n _context12.prev = 17;\n\n this._processingRoomKeyRequests = false;\n return _context12.finish(17);\n\n case 20:\n case 'end':\n return _context12.stop();\n }\n }\n }, _callee12, this, [[3, 14, 17, 20]]);\n}));\n\n/**\n * Helper for processReceivedRoomKeyRequests\n *\n * @param {IncomingRoomKeyRequest} req\n */\nCrypto.prototype._processReceivedRoomKeyRequest = function () {\n var _ref16 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(req) {\n var userId, deviceId, body, roomId, alg, decryptor, device;\n return _regenerator2.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n userId = req.userId;\n deviceId = req.deviceId;\n body = req.requestBody;\n roomId = body.room_id;\n alg = body.algorithm;\n\n\n console.log('m.room_key_request from ' + userId + ':' + deviceId + (' for ' + roomId + ' / ' + body.session_id + ' (id ' + req.requestId + ')'));\n\n if (!(userId !== this._userId)) {\n _context13.next = 9;\n break;\n }\n\n // TODO: determine if we sent this device the keys already: in\n // which case we can do so again.\n console.log(\"Ignoring room key request from other user for now\");\n return _context13.abrupt('return');\n\n case 9:\n if (this._roomDecryptors[roomId]) {\n _context13.next = 12;\n break;\n }\n\n console.log('room key request for unencrypted room ' + roomId);\n return _context13.abrupt('return');\n\n case 12:\n decryptor = this._roomDecryptors[roomId][alg];\n\n if (decryptor) {\n _context13.next = 16;\n break;\n }\n\n console.log('room key request for unknown alg ' + alg + ' in room ' + roomId);\n return _context13.abrupt('return');\n\n case 16:\n _context13.next = 18;\n return (0, _bluebird.resolve)(decryptor.hasKeysForKeyRequest(req));\n\n case 18:\n if (_context13.sent) {\n _context13.next = 21;\n break;\n }\n\n console.log('room key request for unknown session ' + roomId + ' / ' + body.session_id);\n return _context13.abrupt('return');\n\n case 21:\n\n req.share = function () {\n decryptor.shareKeysWithDevice(req);\n };\n\n // if the device is is verified already, share the keys\n device = this._deviceList.getStoredDevice(userId, deviceId);\n\n if (!(device && device.isVerified())) {\n _context13.next = 27;\n break;\n }\n\n console.log('device is already verified: sharing keys');\n req.share();\n return _context13.abrupt('return');\n\n case 27:\n\n this.emit(\"crypto.roomKeyRequest\", req);\n\n case 28:\n case 'end':\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n return function (_x19) {\n return _ref16.apply(this, arguments);\n };\n}();\n\n/**\n * Helper for processReceivedRoomKeyRequests\n *\n * @param {IncomingRoomKeyRequestCancellation} cancellation\n */\nCrypto.prototype._processReceivedRoomKeyRequestCancellation = function () {\n var _ref17 = (0, _bluebird.method)(function (cancellation) {\n console.log('m.room_key_request cancellation for ' + cancellation.userId + ':' + (cancellation.deviceId + ' (id ' + cancellation.requestId + ')'));\n\n // we should probably only notify the app of cancellations we told it\n // about, but we don't currently have a record of that, so we just pass\n // everything through.\n this.emit(\"crypto.roomKeyRequestCancellation\", cancellation);\n });\n\n return function (_x20) {\n return _ref17.apply(this, arguments);\n };\n}();\n\n/**\n * Get a decryptor for a given room and algorithm.\n *\n * If we already have a decryptor for the given room and algorithm, return\n * it. Otherwise try to instantiate it.\n *\n * @private\n *\n * @param {string?} roomId room id for decryptor. If undefined, a temporary\n * decryptor is instantiated.\n *\n * @param {string} algorithm crypto algorithm\n *\n * @return {module:crypto.algorithms.base.DecryptionAlgorithm}\n *\n * @raises {module:crypto.algorithms.DecryptionError} if the algorithm is\n * unknown\n */\nCrypto.prototype._getRoomDecryptor = function (roomId, algorithm) {\n var decryptors = void 0;\n var alg = void 0;\n\n roomId = roomId || null;\n if (roomId) {\n decryptors = this._roomDecryptors[roomId];\n if (!decryptors) {\n this._roomDecryptors[roomId] = decryptors = {};\n }\n\n alg = decryptors[algorithm];\n if (alg) {\n return alg;\n }\n }\n\n var AlgClass = algorithms.DECRYPTION_CLASSES[algorithm];\n if (!AlgClass) {\n throw new algorithms.DecryptionError('UNKNOWN_ENCRYPTION_ALGORITHM', 'Unknown encryption algorithm \"' + algorithm + '\".');\n }\n alg = new AlgClass({\n userId: this._userId,\n crypto: this,\n olmDevice: this._olmDevice,\n baseApis: this._baseApis,\n roomId: roomId\n });\n\n if (decryptors) {\n decryptors[algorithm] = alg;\n }\n return alg;\n};\n\n/**\n * sign the given object with our ed25519 key\n *\n * @param {Object} obj Object to which we will add a 'signatures' property\n */\nCrypto.prototype._signObject = function () {\n var _ref18 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee14(obj) {\n var sigs;\n return _regenerator2.default.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n sigs = {};\n\n sigs[this._userId] = {};\n _context14.next = 4;\n return (0, _bluebird.resolve)(this._olmDevice.sign(anotherjson.stringify(obj)));\n\n case 4:\n sigs[this._userId][\"ed25519:\" + this._deviceId] = _context14.sent;\n\n obj.signatures = sigs;\n\n case 6:\n case 'end':\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n return function (_x21) {\n return _ref18.apply(this, arguments);\n };\n}();\n\n/**\n * The parameters of a room key request. The details of the request may\n * vary with the crypto algorithm, but the management and storage layers for\n * outgoing requests expect it to have 'room_id' and 'session_id' properties.\n *\n * @typedef {Object} RoomKeyRequestBody\n */\n\n/**\n * Represents a received m.room_key_request event\n *\n * @property {string} userId user requesting the key\n * @property {string} deviceId device requesting the key\n * @property {string} requestId unique id for the request\n * @property {module:crypto~RoomKeyRequestBody} requestBody\n * @property {function()} share callback which, when called, will ask\n * the relevant crypto algorithm implementation to share the keys for\n * this request.\n */\n\nvar IncomingRoomKeyRequest = function IncomingRoomKeyRequest(event) {\n (0, _classCallCheck3.default)(this, IncomingRoomKeyRequest);\n\n var content = event.getContent();\n\n this.userId = event.getSender();\n this.deviceId = content.requesting_device_id;\n this.requestId = content.request_id;\n this.requestBody = content.body || {};\n this.share = function () {\n throw new Error(\"don't know how to share keys for this request yet\");\n };\n};\n\n/**\n * Represents a received m.room_key_request cancellation\n *\n * @property {string} userId user requesting the cancellation\n * @property {string} deviceId device requesting the cancellation\n * @property {string} requestId unique id for the request to be cancelled\n */\n\n\nvar IncomingRoomKeyRequestCancellation = function IncomingRoomKeyRequestCancellation(event) {\n (0, _classCallCheck3.default)(this, IncomingRoomKeyRequestCancellation);\n\n var content = event.getContent();\n\n this.userId = event.getSender();\n this.deviceId = content.requesting_device_id;\n this.requestId = content.request_id;\n};\n\n/**\n * The result of a (successful) call to decryptEvent.\n *\n * @typedef {Object} EventDecryptionResult\n *\n * @property {Object} clearEvent The plaintext payload for the event\n * (typically containing <tt>type</tt> and <tt>content</tt> fields).\n *\n * @property {?string} senderCurve25519Key Key owned by the sender of this\n * event. See {@link module:models/event.MatrixEvent#getSenderKey}.\n *\n * @property {?string} claimedEd25519Key ed25519 key claimed by the sender of\n * this event. See\n * {@link module:models/event.MatrixEvent#getClaimedEd25519Key}.\n *\n * @property {?Array<string>} forwardingCurve25519KeyChain list of curve25519\n * keys involved in telling us about the senderCurve25519Key and\n * claimedEd25519Key. See\n * {@link module:models/event.MatrixEvent#getForwardingCurve25519KeyChain}.\n */\n\n/**\n * Fires when we receive a room key request\n *\n * @event module:client~MatrixClient#\"crypto.roomKeyRequest\"\n * @param {module:crypto~IncomingRoomKeyRequest} req request details\n */\n\n/**\n * Fires when we receive a room key request cancellation\n *\n * @event module:client~MatrixClient#\"crypto.roomKeyRequestCancellation\"\n * @param {module:crypto~IncomingRoomKeyRequestCancellation} req\n */\n\n/**\n * Fires when the app may wish to warn the user about something related\n * the end-to-end crypto.\n *\n * Comes with a type which is one of:\n * * CRYPTO_WARNING_ACCOUNT_MIGRATED: Account data has been migrated from an older\n * version of the store in such a way that older clients will no longer be\n * able to read it. The app may wish to warn the user against going back to\n * an older version of the app.\n * * CRYPTO_WARNING_OLD_VERSION_DETECTED: js-sdk has detected that an older version\n * of js-sdk has been run against the same store after a migration has been\n * performed. This is likely have caused unexpected behaviour in the old\n * version. For example, the old version and the new version may have two\n * different identity keys.\n *\n * @event module:client~MatrixClient#\"crypto.warning\"\n * @param {string} type One of the strings listed above\n */\n\n/** */\n\n\nmodule.exports = Crypto;\n//# sourceMappingURL=index.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _utils = require('../utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Internal module. Management of outgoing room key requests.\n *\n * See https://docs.google.com/document/d/1m4gQkcnJkxNuBmb5NoFCIadIY-DyqqNAS3lloE73BlQ\n * for draft documentation on what we're supposed to be implementing here.\n *\n * @module\n */\n\n// delay between deciding we want some keys, and sending out the request, to\n// allow for (a) it turning up anyway, (b) grouping requests together\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar SEND_KEY_REQUESTS_DELAY_MS = 500;\n\n/** possible states for a room key request\n *\n * The state machine looks like:\n *\n * | (cancellation sent)\n * | .-------------------------------------------------.\n * | | |\n * V V (cancellation requested) |\n * UNSENT -----------------------------+ |\n * | | |\n * | | |\n * | (send successful) | CANCELLATION_PENDING_AND_WILL_RESEND\n * V | Λ\n * SENT | |\n * |-------------------------------- | --------------'\n * | | (cancellation requested with intent\n * | | to resend the original request)\n * | |\n * | (cancellation requested) |\n * V |\n * CANCELLATION_PENDING |\n * | |\n * | (cancellation sent) |\n * V |\n * (deleted) <---------------------------+\n *\n * @enum {number}\n */\nvar ROOM_KEY_REQUEST_STATES = {\n /** request not yet sent */\n UNSENT: 0,\n\n /** request sent, awaiting reply */\n SENT: 1,\n\n /** reply received, cancellation not yet sent */\n CANCELLATION_PENDING: 2,\n\n /**\n * Cancellation not yet sent and will transition to UNSENT instead of\n * being deleted once the cancellation has been sent.\n */\n CANCELLATION_PENDING_AND_WILL_RESEND: 3\n};\n\nvar OutgoingRoomKeyRequestManager = function () {\n function OutgoingRoomKeyRequestManager(baseApis, deviceId, cryptoStore) {\n (0, _classCallCheck3.default)(this, OutgoingRoomKeyRequestManager);\n\n this._baseApis = baseApis;\n this._deviceId = deviceId;\n this._cryptoStore = cryptoStore;\n\n // handle for the delayed call to _sendOutgoingRoomKeyRequests. Non-null\n // if the callback has been set, or if it is still running.\n this._sendOutgoingRoomKeyRequestsTimer = null;\n\n // sanity check to ensure that we don't end up with two concurrent runs\n // of _sendOutgoingRoomKeyRequests\n this._sendOutgoingRoomKeyRequestsRunning = false;\n\n this._clientRunning = false;\n }\n\n /**\n * Called when the client is started. Sets background processes running.\n */\n\n\n (0, _createClass3.default)(OutgoingRoomKeyRequestManager, [{\n key: 'start',\n value: function start() {\n this._clientRunning = true;\n\n // set the timer going, to handle any requests which didn't get sent\n // on the previous run of the client.\n this._startTimer();\n }\n\n /**\n * Called when the client is stopped. Stops any running background processes.\n */\n\n }, {\n key: 'stop',\n value: function stop() {\n console.log('stopping OutgoingRoomKeyRequestManager');\n // stop the timer on the next run\n this._clientRunning = false;\n }\n\n /**\n * Send off a room key request, if we haven't already done so.\n *\n * The `requestBody` is compared (with a deep-equality check) against\n * previous queued or sent requests and if it matches, no change is made.\n * Otherwise, a request is added to the pending list, and a job is started\n * in the background to send it.\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * @param {Array<{userId: string, deviceId: string}>} recipients\n *\n * @returns {Promise} resolves when the request has been added to the\n * pending list (or we have established that a similar request already\n * exists)\n */\n\n }, {\n key: 'sendRoomKeyRequest',\n value: function sendRoomKeyRequest(requestBody, recipients) {\n var _this = this;\n\n return this._cryptoStore.getOrAddOutgoingRoomKeyRequest({\n requestBody: requestBody,\n recipients: recipients,\n requestId: this._baseApis.makeTxnId(),\n state: ROOM_KEY_REQUEST_STATES.UNSENT\n }).then(function (req) {\n if (req.state === ROOM_KEY_REQUEST_STATES.UNSENT) {\n _this._startTimer();\n }\n });\n }\n\n /**\n * Cancel room key requests, if any match the given requestBody\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * @param {boolean} andResend if true, transition to UNSENT instead of\n * deleting after sending cancellation.\n *\n * @returns {Promise} resolves when the request has been updated in our\n * pending list.\n */\n\n }, {\n key: 'cancelRoomKeyRequest',\n value: function cancelRoomKeyRequest(requestBody) {\n var _this2 = this;\n\n var andResend = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n return this._cryptoStore.getOutgoingRoomKeyRequest(requestBody).then(function (req) {\n if (!req) {\n // no request was made for this key\n return;\n }\n switch (req.state) {\n case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING:\n case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND:\n // nothing to do here\n return;\n\n case ROOM_KEY_REQUEST_STATES.UNSENT:\n // just delete it\n\n // FIXME: ghahah we may have attempted to send it, and\n // not yet got a successful response. So the server\n // may have seen it, so we still need to send a cancellation\n // in that case :/\n\n console.log('deleting unnecessary room key request for ' + stringifyRequestBody(requestBody));\n return _this2._cryptoStore.deleteOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.UNSENT);\n\n case ROOM_KEY_REQUEST_STATES.SENT:\n {\n // If `andResend` is set, transition to UNSENT once the\n // cancellation has successfully been sent.\n var state = andResend ? ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND : ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING;\n // send a cancellation.\n return _this2._cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.SENT, {\n state: state,\n cancellationTxnId: _this2._baseApis.makeTxnId()\n }).then(function (updatedReq) {\n if (!updatedReq) {\n // updateOutgoingRoomKeyRequest couldn't find the\n // request in state ROOM_KEY_REQUEST_STATES.SENT,\n // so we must have raced with another tab to mark\n // the request cancelled. There is no point in\n // sending another cancellation since the other tab\n // will do it.\n console.log('Tried to cancel room key request for ' + stringifyRequestBody(requestBody) + ' but it was already cancelled in another tab');\n return;\n }\n\n // We don't want to wait for the timer, so we send it\n // immediately. (We might actually end up racing with the timer,\n // but that's ok: even if we make the request twice, we'll do it\n // with the same transaction_id, so only one message will get\n // sent).\n //\n // (We also don't want to wait for the response from the server\n // here, as it will slow down processing of received keys if we\n // do.)\n _this2._sendOutgoingRoomKeyRequestCancellation(updatedReq, andResend).catch(function (e) {\n console.error(\"Error sending room key request cancellation;\" + \" will retry later.\", e);\n _this2._startTimer();\n }).then(function () {\n if (!andResend) return;\n // The request has transitioned from\n // CANCELLATION_PENDING_AND_WILL_RESEND to UNSENT. We\n // still need to resend the request which is now UNSENT, so\n // start the timer if it isn't already started.\n _this2._startTimer();\n });\n });\n }\n default:\n throw new Error('unhandled state: ' + req.state);\n }\n });\n }\n\n // start the background timer to send queued requests, if the timer isn't\n // already running\n\n }, {\n key: '_startTimer',\n value: function _startTimer() {\n var _this3 = this;\n\n if (this._sendOutgoingRoomKeyRequestsTimer) {\n return;\n }\n\n var startSendingOutgoingRoomKeyRequests = function startSendingOutgoingRoomKeyRequests() {\n if (_this3._sendOutgoingRoomKeyRequestsRunning) {\n throw new Error(\"RoomKeyRequestSend already in progress!\");\n }\n _this3._sendOutgoingRoomKeyRequestsRunning = true;\n\n _this3._sendOutgoingRoomKeyRequests().finally(function () {\n _this3._sendOutgoingRoomKeyRequestsRunning = false;\n }).catch(function (e) {\n // this should only happen if there is an indexeddb error,\n // in which case we're a bit stuffed anyway.\n console.warn('error in OutgoingRoomKeyRequestManager: ' + e);\n }).done();\n };\n\n this._sendOutgoingRoomKeyRequestsTimer = global.setTimeout(startSendingOutgoingRoomKeyRequests, SEND_KEY_REQUESTS_DELAY_MS);\n }\n\n // look for and send any queued requests. Runs itself recursively until\n // there are no more requests, or there is an error (in which case, the\n // timer will be restarted before the promise resolves).\n\n }, {\n key: '_sendOutgoingRoomKeyRequests',\n value: function _sendOutgoingRoomKeyRequests() {\n var _this4 = this;\n\n if (!this._clientRunning) {\n this._sendOutgoingRoomKeyRequestsTimer = null;\n return _bluebird2.default.resolve();\n }\n\n console.log(\"Looking for queued outgoing room key requests\");\n\n return this._cryptoStore.getOutgoingRoomKeyRequestByState([ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING, ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND, ROOM_KEY_REQUEST_STATES.UNSENT]).then(function (req) {\n if (!req) {\n console.log(\"No more outgoing room key requests\");\n _this4._sendOutgoingRoomKeyRequestsTimer = null;\n return;\n }\n\n var prom = void 0;\n switch (req.state) {\n case ROOM_KEY_REQUEST_STATES.UNSENT:\n prom = _this4._sendOutgoingRoomKeyRequest(req);\n break;\n case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING:\n prom = _this4._sendOutgoingRoomKeyRequestCancellation(req);\n break;\n case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND:\n prom = _this4._sendOutgoingRoomKeyRequestCancellation(req, true);\n break;\n }\n\n return prom.then(function () {\n // go around the loop again\n return _this4._sendOutgoingRoomKeyRequests();\n }).catch(function (e) {\n console.error(\"Error sending room key request; will retry later.\", e);\n _this4._sendOutgoingRoomKeyRequestsTimer = null;\n _this4._startTimer();\n }).done();\n });\n }\n\n // given a RoomKeyRequest, send it and update the request record\n\n }, {\n key: '_sendOutgoingRoomKeyRequest',\n value: function _sendOutgoingRoomKeyRequest(req) {\n var _this5 = this;\n\n console.log('Requesting keys for ' + stringifyRequestBody(req.requestBody) + (' from ' + stringifyRecipientList(req.recipients)) + ('(id ' + req.requestId + ')'));\n\n var requestMessage = {\n action: \"request\",\n requesting_device_id: this._deviceId,\n request_id: req.requestId,\n body: req.requestBody\n };\n\n return this._sendMessageToDevices(requestMessage, req.recipients, req.requestId).then(function () {\n return _this5._cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.UNSENT, { state: ROOM_KEY_REQUEST_STATES.SENT });\n });\n }\n\n // Given a RoomKeyRequest, cancel it and delete the request record unless\n // andResend is set, in which case transition to UNSENT.\n\n }, {\n key: '_sendOutgoingRoomKeyRequestCancellation',\n value: function _sendOutgoingRoomKeyRequestCancellation(req, andResend) {\n var _this6 = this;\n\n console.log('Sending cancellation for key request for ' + (stringifyRequestBody(req.requestBody) + ' to ') + (stringifyRecipientList(req.recipients) + ' ') + ('(cancellation id ' + req.cancellationTxnId + ')'));\n\n var requestMessage = {\n action: \"request_cancellation\",\n requesting_device_id: this._deviceId,\n request_id: req.requestId\n };\n\n return this._sendMessageToDevices(requestMessage, req.recipients, req.cancellationTxnId).then(function () {\n if (andResend) {\n // We want to resend, so transition to UNSENT\n return _this6._cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND, { state: ROOM_KEY_REQUEST_STATES.UNSENT });\n }\n return _this6._cryptoStore.deleteOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING);\n });\n }\n\n // send a RoomKeyRequest to a list of recipients\n\n }, {\n key: '_sendMessageToDevices',\n value: function _sendMessageToDevices(message, recipients, txnId) {\n var contentMap = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(recipients), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var recip = _step.value;\n\n if (!contentMap[recip.userId]) {\n contentMap[recip.userId] = {};\n }\n contentMap[recip.userId][recip.deviceId] = message;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return this._baseApis.sendToDevice('m.room_key_request', contentMap, txnId);\n }\n }]);\n return OutgoingRoomKeyRequestManager;\n}();\n\nexports.default = OutgoingRoomKeyRequestManager;\n\n\nfunction stringifyRequestBody(requestBody) {\n // we assume that the request is for megolm keys, which are identified by\n // room id and session id\n return requestBody.room_id + \" / \" + requestBody.session_id;\n}\n\nfunction stringifyRecipientList(recipients) {\n return '[' + _utils2.default.map(recipients, function (r) {\n return r.userId + ':' + r.deviceId;\n }).join(\",\") + ']';\n}\n//# sourceMappingURL=OutgoingRoomKeyRequestManager.js.map","\"use strict\";\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _initialiseAccount = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(sessionStore, cryptoStore, pickleKey, account) {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return (0, _bluebird.resolve)(cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n cryptoStore.getAccount(txn, function (pickledAccount) {\n if (pickledAccount !== null) {\n account.unpickle(pickleKey, pickledAccount);\n } else {\n account.create();\n pickledAccount = account.pickle(pickleKey);\n cryptoStore.storeAccount(txn, pickledAccount);\n }\n });\n }));\n\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function _initialiseAccount(_x, _x2, _x3, _x4) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * @return {array} The version of Olm.\n */\n\n\nvar _indexeddbCryptoStore = require(\"./store/indexeddb-crypto-store\");\n\nvar _indexeddbCryptoStore2 = _interopRequireDefault(_indexeddbCryptoStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * olm.js wrapper\n *\n * @module crypto/OlmDevice\n */\nvar Olm = global.Olm; /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nif (!Olm) {\n throw new Error(\"global.Olm is not defined\");\n}\n\n// The maximum size of an event is 65K, and we base64 the content, so this is a\n// reasonable approximation to the biggest plaintext we can encrypt.\nvar MAX_PLAINTEXT_LENGTH = 65536 * 3 / 4;\n\nfunction checkPayloadLength(payloadString) {\n if (payloadString === undefined) {\n throw new Error(\"payloadString undefined\");\n }\n\n if (payloadString.length > MAX_PLAINTEXT_LENGTH) {\n // might as well fail early here rather than letting the olm library throw\n // a cryptic memory allocation error.\n //\n // Note that even if we manage to do the encryption, the message send may fail,\n // because by the time we've wrapped the ciphertext in the event object, it may\n // exceed 65K. But at least we won't just fail with \"abort()\" in that case.\n throw new Error(\"Message too long (\" + payloadString.length + \" bytes). \" + \"The maximum for an encrypted message is \" + MAX_PLAINTEXT_LENGTH + \" bytes.\");\n }\n}\n\n/**\n * The type of object we use for importing and exporting megolm session data.\n *\n * @typedef {Object} module:crypto/OlmDevice.MegolmSessionData\n * @property {String} sender_key Sender's Curve25519 device key\n * @property {String[]} forwarding_curve25519_key_chain Devices which forwarded\n * this session to us (normally empty).\n * @property {Object<string, string>} sender_claimed_keys Other keys the sender claims.\n * @property {String} room_id Room this session is used in\n * @property {String} session_id Unique id for the session\n * @property {String} session_key Base64'ed key data\n */\n\n/**\n * Manages the olm cryptography functions. Each OlmDevice has a single\n * OlmAccount and a number of OlmSessions.\n *\n * Accounts and sessions are kept pickled in a sessionStore.\n *\n * @constructor\n * @alias module:crypto/OlmDevice\n *\n * @param {Object} sessionStore A store to be used for data in end-to-end\n * crypto. This is deprecated and being replaced by cryptoStore.\n * @param {Object} cryptoStore A store for crypto data\n *\n * @property {string} deviceCurve25519Key Curve25519 key for the account\n * @property {string} deviceEd25519Key Ed25519 key for the account\n */\nfunction OlmDevice(sessionStore, cryptoStore) {\n this._sessionStore = sessionStore;\n this._cryptoStore = cryptoStore;\n this._pickleKey = \"DEFAULT_KEY\";\n\n // don't know these until we load the account from storage in init()\n this.deviceCurve25519Key = null;\n this.deviceEd25519Key = null;\n this._maxOneTimeKeys = null;\n\n // we don't bother stashing outboundgroupsessions in the sessionstore -\n // instead we keep them here.\n this._outboundGroupSessionStore = {};\n\n // Store a set of decrypted message indexes for each group session.\n // This partially mitigates a replay attack where a MITM resends a group\n // message into the room.\n //\n // When we decrypt a message and the message index matches a previously\n // decrypted message, one possible cause of that is that we are decrypting\n // the same event, and may not indicate an actual replay attack. For\n // example, this could happen if we receive events, forget about them, and\n // then re-fetch them when we backfill. So we store the event ID and\n // timestamp corresponding to each message index when we first decrypt it,\n // and compare these against the event ID and timestamp every time we use\n // that same index. If they match, then we're probably decrypting the same\n // event and we don't consider it a replay attack.\n //\n // Keys are strings of form \"<senderKey>|<session_id>|<message_index>\"\n // Values are objects of the form \"{id: <event id>, timestamp: <ts>}\"\n this._inboundGroupSessionMessageIndexes = {};\n}\n\n/**\n * Initialise the OlmAccount. This must be called before any other operations\n * on the OlmDevice.\n *\n * Attempts to load the OlmAccount from the crypto store, or creates one if none is\n * found.\n *\n * Reads the device keys from the OlmAccount object.\n */\nOlmDevice.prototype.init = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var e2eKeys, account;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(this._migrateFromSessionStore());\n\n case 2:\n e2eKeys = void 0;\n account = new Olm.Account();\n _context.prev = 4;\n _context.next = 7;\n return (0, _bluebird.resolve)(_initialiseAccount(this._sessionStore, this._cryptoStore, this._pickleKey, account));\n\n case 7:\n e2eKeys = JSON.parse(account.identity_keys());\n\n this._maxOneTimeKeys = account.max_number_of_one_time_keys();\n\n case 9:\n _context.prev = 9;\n\n account.free();\n return _context.finish(9);\n\n case 12:\n\n this.deviceCurve25519Key = e2eKeys.curve25519;\n this.deviceEd25519Key = e2eKeys.ed25519;\n\n case 14:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[4,, 9, 12]]);\n}));\n\nOlmDevice.getOlmVersion = function () {\n return Olm.get_library_version();\n};\n\nOlmDevice.prototype._migrateFromSessionStore = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var _this = this;\n\n var sessions, ibGroupSessions, numIbSessions;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this._cryptoStore.getAccount(txn, function (pickledAccount) {\n if (pickledAccount === null) {\n // Migrate from sessionStore\n pickledAccount = _this._sessionStore.getEndToEndAccount();\n if (pickledAccount !== null) {\n console.log(\"Migrating account from session store\");\n _this._cryptoStore.storeAccount(txn, pickledAccount);\n }\n }\n });\n }));\n\n case 2:\n\n // remove the old account now the transaction has completed. Either we've\n // migrated it or decided not to, either way we want to blow away the old data.\n this._sessionStore.removeEndToEndAccount();\n\n // sessions\n sessions = this._sessionStore.getAllEndToEndSessions();\n\n if (!((0, _keys2.default)(sessions).length > 0)) {\n _context3.next = 8;\n break;\n }\n\n _context3.next = 7;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n // Don't migrate sessions from localstorage if we already have sessions\n // in indexeddb, since this means we've already migrated and an old version\n // has run against the same localstorage and created some spurious sessions.\n _this._cryptoStore.countEndToEndSessions(txn, function (count) {\n if (count) {\n console.log(\"Crypto store already has sessions: not migrating\");\n return;\n }\n var numSessions = 0;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(sessions)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var deviceKey = _step.value;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(sessions[deviceKey])), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var sessionId = _step2.value;\n\n numSessions++;\n _this._cryptoStore.storeEndToEndSession(deviceKey, sessionId, sessions[deviceKey][sessionId], txn);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n console.log(\"Migrating \" + numSessions + \" sessions from session store\");\n });\n }));\n\n case 7:\n\n this._sessionStore.removeAllEndToEndSessions();\n\n case 8:\n\n // inbound group sessions\n ibGroupSessions = this._sessionStore.getAllEndToEndInboundGroupSessionKeys();\n\n if (!((0, _keys2.default)(ibGroupSessions).length > 0)) {\n _context3.next = 14;\n break;\n }\n\n numIbSessions = 0;\n _context3.next = 13;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n // We always migrate inbound group sessions, even if we already have some\n // in the new store. They should be be safe to migrate.\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(ibGroupSessions), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var s = _step3.value;\n\n try {\n _this._cryptoStore.addEndToEndInboundGroupSession(s.senderKey, s.sessionId, JSON.parse(_this._sessionStore.getEndToEndInboundGroupSession(s.senderKey, s.sessionId)), txn);\n } catch (e) {\n console.warn(\"Failed to migrate session \" + s.senderKey + \"/\" + s.sessionId + \": \" + e.stack || e);\n }\n ++numIbSessions;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n console.log(\"Migrated \" + numIbSessions + \" inbound group sessions from session store\");\n }));\n\n case 13:\n this._sessionStore.removeAllEndToEndInboundGroupSessions();\n\n case 14:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n}));\n\n/**\n * extract our OlmAccount from the crypto store and call the given function\n * with the account object\n * The `account` object is useable only within the callback passed to this\n * function and will be freed as soon the callback returns. It is *not*\n * useable for the rest of the lifetime of the transaction.\n * This function requires a live transaction object from cryptoStore.doTxn()\n * and therefore may only be called in a doTxn() callback.\n *\n * @param {*} txn Opaque transaction object from cryptoStore.doTxn()\n * @param {function} func\n * @private\n */\nOlmDevice.prototype._getAccount = function (txn, func) {\n var _this2 = this;\n\n this._cryptoStore.getAccount(txn, function (pickledAccount) {\n var account = new Olm.Account();\n try {\n account.unpickle(_this2._pickleKey, pickledAccount);\n func(account);\n } finally {\n account.free();\n }\n });\n};\n\n/*\n * Saves an account to the crypto store.\n * This function requires a live transaction object from cryptoStore.doTxn()\n * and therefore may only be called in a doTxn() callback.\n *\n * @param {*} txn Opaque transaction object from cryptoStore.doTxn()\n * @param {object} Olm.Account object\n * @private\n */\nOlmDevice.prototype._storeAccount = function (txn, account) {\n this._cryptoStore.storeAccount(txn, account.pickle(this._pickleKey));\n};\n\n/**\n * extract an OlmSession from the session store and call the given function\n * The session is useable only within the callback passed to this\n * function and will be freed as soon the callback returns. It is *not*\n * useable for the rest of the lifetime of the transaction.\n *\n * @param {string} deviceKey\n * @param {string} sessionId\n * @param {*} txn Opaque transaction object from cryptoStore.doTxn()\n * @param {function} func\n * @private\n */\nOlmDevice.prototype._getSession = function (deviceKey, sessionId, txn, func) {\n var _this3 = this;\n\n this._cryptoStore.getEndToEndSession(deviceKey, sessionId, txn, function (pickledSession) {\n _this3._unpickleSession(pickledSession, func);\n });\n};\n\n/**\n * Creates a session object from a session pickle and executes the given\n * function with it. The session object is destroyed once the function\n * returns.\n *\n * @param {string} pickledSession\n * @param {function} func\n * @private\n */\nOlmDevice.prototype._unpickleSession = function (pickledSession, func) {\n var session = new Olm.Session();\n try {\n session.unpickle(this._pickleKey, pickledSession);\n func(session);\n } finally {\n session.free();\n }\n};\n\n/**\n * store our OlmSession in the session store\n *\n * @param {string} deviceKey\n * @param {OlmSession} session\n * @param {*} txn Opaque transaction object from cryptoStore.doTxn()\n * @private\n */\nOlmDevice.prototype._saveSession = function (deviceKey, session, txn) {\n var pickledSession = session.pickle(this._pickleKey);\n this._cryptoStore.storeEndToEndSession(deviceKey, session.session_id(), pickledSession, txn);\n};\n\n/**\n * get an OlmUtility and call the given function\n *\n * @param {function} func\n * @return {object} result of func\n * @private\n */\nOlmDevice.prototype._getUtility = function (func) {\n var utility = new Olm.Utility();\n try {\n return func(utility);\n } finally {\n utility.free();\n }\n};\n\n/**\n * Signs a message with the ed25519 key for this account.\n *\n * @param {string} message message to be signed\n * @return {Promise<string>} base64-encoded signature\n */\nOlmDevice.prototype.sign = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(message) {\n var _this4 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n result = void 0;\n _context4.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this4._getAccount(txn, function (account) {\n result = account.sign(message);\n });\n }));\n\n case 3:\n return _context4.abrupt(\"return\", result);\n\n case 4:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n return function (_x5) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * Get the current (unused, unpublished) one-time keys for this account.\n *\n * @return {object} one time keys; an object with the single property\n * <tt>curve25519</tt>, which is itself an object mapping key id to Curve25519\n * key.\n */\nOlmDevice.prototype.getOneTimeKeys = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {\n var _this5 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n result = void 0;\n _context5.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this5._getAccount(txn, function (account) {\n result = JSON.parse(account.one_time_keys());\n });\n }));\n\n case 3:\n return _context5.abrupt(\"return\", result);\n\n case 4:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n}));\n\n/**\n * Get the maximum number of one-time keys we can store.\n *\n * @return {number} number of keys\n */\nOlmDevice.prototype.maxNumberOfOneTimeKeys = function () {\n return this._maxOneTimeKeys;\n};\n\n/**\n * Marks all of the one-time keys as published.\n */\nOlmDevice.prototype.markKeysAsPublished = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee6() {\n var _this6 = this;\n\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this6._getAccount(txn, function (account) {\n account.mark_keys_as_published();\n _this6._storeAccount(txn, account);\n });\n }));\n\n case 2:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n}));\n\n/**\n * Generate some new one-time keys\n *\n * @param {number} numKeys number of keys to generate\n * @return {Promise} Resolved once the account is saved back having generated the keys\n */\nOlmDevice.prototype.generateOneTimeKeys = function (numKeys) {\n var _this7 = this;\n\n return this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this7._getAccount(txn, function (account) {\n account.generate_one_time_keys(numKeys);\n _this7._storeAccount(txn, account);\n });\n });\n};\n\n/**\n * Generate a new outbound session\n *\n * The new session will be stored in the cryptoStore.\n *\n * @param {string} theirIdentityKey remote user's Curve25519 identity key\n * @param {string} theirOneTimeKey remote user's one-time Curve25519 key\n * @return {string} sessionId for the outbound session.\n */\nOlmDevice.prototype.createOutboundSession = function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(theirIdentityKey, theirOneTimeKey) {\n var _this8 = this;\n\n var newSessionId;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n newSessionId = void 0;\n _context7.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT, _indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this8._getAccount(txn, function (account) {\n var session = new Olm.Session();\n try {\n session.create_outbound(account, theirIdentityKey, theirOneTimeKey);\n newSessionId = session.session_id();\n _this8._storeAccount(txn, account);\n _this8._saveSession(theirIdentityKey, session, txn);\n } finally {\n session.free();\n }\n });\n }));\n\n case 3:\n return _context7.abrupt(\"return\", newSessionId);\n\n case 4:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n return function (_x6, _x7) {\n return _ref7.apply(this, arguments);\n };\n}();\n\n/**\n * Generate a new inbound session, given an incoming message\n *\n * @param {string} theirDeviceIdentityKey remote user's Curve25519 identity key\n * @param {number} messageType messageType field from the received message (must be 0)\n * @param {string} ciphertext base64-encoded body from the received message\n *\n * @return {{payload: string, session_id: string}} decrypted payload, and\n * session id of new session\n *\n * @raises {Error} if the received message was not valid (for instance, it\n * didn't use a valid one-time key).\n */\nOlmDevice.prototype.createInboundSession = function () {\n var _ref8 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(theirDeviceIdentityKey, messageType, ciphertext) {\n var _this9 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n if (!(messageType !== 0)) {\n _context8.next = 2;\n break;\n }\n\n throw new Error(\"Need messageType == 0 to create inbound session\");\n\n case 2:\n result = void 0;\n _context8.next = 5;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT, _indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this9._getAccount(txn, function (account) {\n var session = new Olm.Session();\n try {\n session.create_inbound_from(account, theirDeviceIdentityKey, ciphertext);\n account.remove_one_time_keys(session);\n _this9._storeAccount(txn, account);\n\n var payloadString = session.decrypt(messageType, ciphertext);\n\n _this9._saveSession(theirDeviceIdentityKey, session, txn);\n\n result = {\n payload: payloadString,\n session_id: session.session_id()\n };\n } finally {\n session.free();\n }\n });\n }));\n\n case 5:\n return _context8.abrupt(\"return\", result);\n\n case 6:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n return function (_x8, _x9, _x10) {\n return _ref8.apply(this, arguments);\n };\n}();\n\n/**\n * Get a list of known session IDs for the given device\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key for the\n * remote device\n * @return {Promise<string[]>} a list of known session ids for the device\n */\nOlmDevice.prototype.getSessionIdsForDevice = function () {\n var _ref9 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(theirDeviceIdentityKey) {\n var _this10 = this;\n\n var sessionIds;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n sessionIds = void 0;\n _context9.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this10._cryptoStore.getEndToEndSessions(theirDeviceIdentityKey, txn, function (sessions) {\n sessionIds = (0, _keys2.default)(sessions);\n });\n }));\n\n case 3:\n return _context9.abrupt(\"return\", sessionIds);\n\n case 4:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n return function (_x11) {\n return _ref9.apply(this, arguments);\n };\n}();\n\n/**\n * Get the right olm session id for encrypting messages to the given identity key\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key for the\n * remote device\n * @return {Promise<?string>} session id, or null if no established session\n */\nOlmDevice.prototype.getSessionIdForDevice = function () {\n var _ref10 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(theirDeviceIdentityKey) {\n var sessionIds;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return (0, _bluebird.resolve)(this.getSessionIdsForDevice(theirDeviceIdentityKey));\n\n case 2:\n sessionIds = _context10.sent;\n\n if (!(sessionIds.length === 0)) {\n _context10.next = 5;\n break;\n }\n\n return _context10.abrupt(\"return\", null);\n\n case 5:\n // Use the session with the lowest ID.\n sessionIds.sort();\n return _context10.abrupt(\"return\", sessionIds[0]);\n\n case 7:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n return function (_x12) {\n return _ref10.apply(this, arguments);\n };\n}();\n\n/**\n * Get information on the active Olm sessions for a device.\n * <p>\n * Returns an array, with an entry for each active session. The first entry in\n * the result will be the one used for outgoing messages. Each entry contains\n * the keys 'hasReceivedMessage' (true if the session has received an incoming\n * message and is therefore past the pre-key stage), and 'sessionId'.\n *\n * @param {string} deviceIdentityKey Curve25519 identity key for the device\n * @return {Array.<{sessionId: string, hasReceivedMessage: Boolean}>}\n */\nOlmDevice.prototype.getSessionInfoForDevice = function () {\n var _ref11 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(deviceIdentityKey) {\n var _this11 = this;\n\n var info;\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n info = [];\n _context11.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this11._cryptoStore.getEndToEndSessions(deviceIdentityKey, txn, function (sessions) {\n var sessionIds = (0, _keys2.default)(sessions).sort();\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n var _loop = function _loop() {\n var sessionId = _step4.value;\n\n _this11._unpickleSession(sessions[sessionId], function (session) {\n info.push({\n hasReceivedMessage: session.has_received_message(),\n sessionId: sessionId\n });\n });\n };\n\n for (var _iterator4 = (0, _getIterator3.default)(sessionIds), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n _loop();\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n });\n }));\n\n case 3:\n return _context11.abrupt(\"return\", info);\n\n case 4:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n return function (_x13) {\n return _ref11.apply(this, arguments);\n };\n}();\n\n/**\n * Encrypt an outgoing message using an existing session\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key for the\n * remote device\n * @param {string} sessionId the id of the active session\n * @param {string} payloadString payload to be encrypted and sent\n *\n * @return {Promise<string>} ciphertext\n */\nOlmDevice.prototype.encryptMessage = function () {\n var _ref12 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee12(theirDeviceIdentityKey, sessionId, payloadString) {\n var _this12 = this;\n\n var res;\n return _regenerator2.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n checkPayloadLength(payloadString);\n\n res = void 0;\n _context12.next = 4;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this12._getSession(theirDeviceIdentityKey, sessionId, txn, function (session) {\n res = session.encrypt(payloadString);\n _this12._saveSession(theirDeviceIdentityKey, session, txn);\n });\n }));\n\n case 4:\n return _context12.abrupt(\"return\", res);\n\n case 5:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n return function (_x14, _x15, _x16) {\n return _ref12.apply(this, arguments);\n };\n}();\n\n/**\n * Decrypt an incoming message using an existing session\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key for the\n * remote device\n * @param {string} sessionId the id of the active session\n * @param {number} messageType messageType field from the received message\n * @param {string} ciphertext base64-encoded body from the received message\n *\n * @return {Promise<string>} decrypted payload.\n */\nOlmDevice.prototype.decryptMessage = function () {\n var _ref13 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(theirDeviceIdentityKey, sessionId, messageType, ciphertext) {\n var _this13 = this;\n\n var payloadString;\n return _regenerator2.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n payloadString = void 0;\n _context13.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this13._getSession(theirDeviceIdentityKey, sessionId, txn, function (session) {\n payloadString = session.decrypt(messageType, ciphertext);\n _this13._saveSession(theirDeviceIdentityKey, session, txn);\n });\n }));\n\n case 3:\n return _context13.abrupt(\"return\", payloadString);\n\n case 4:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n return function (_x17, _x18, _x19, _x20) {\n return _ref13.apply(this, arguments);\n };\n}();\n\n/**\n * Determine if an incoming messages is a prekey message matching an existing session\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key for the\n * remote device\n * @param {string} sessionId the id of the active session\n * @param {number} messageType messageType field from the received message\n * @param {string} ciphertext base64-encoded body from the received message\n *\n * @return {Promise<boolean>} true if the received message is a prekey message which matches\n * the given session.\n */\nOlmDevice.prototype.matchesSession = function () {\n var _ref14 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee14(theirDeviceIdentityKey, sessionId, messageType, ciphertext) {\n var _this14 = this;\n\n var matches;\n return _regenerator2.default.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n if (!(messageType !== 0)) {\n _context14.next = 2;\n break;\n }\n\n return _context14.abrupt(\"return\", false);\n\n case 2:\n matches = void 0;\n _context14.next = 5;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this14._getSession(theirDeviceIdentityKey, sessionId, txn, function (session) {\n matches = session.matches_inbound(ciphertext);\n });\n }));\n\n case 5:\n return _context14.abrupt(\"return\", matches);\n\n case 6:\n case \"end\":\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n return function (_x21, _x22, _x23, _x24) {\n return _ref14.apply(this, arguments);\n };\n}();\n\n// Outbound group session\n// ======================\n\n/**\n * store an OutboundGroupSession in _outboundGroupSessionStore\n *\n * @param {Olm.OutboundGroupSession} session\n * @private\n */\nOlmDevice.prototype._saveOutboundGroupSession = function (session) {\n var pickledSession = session.pickle(this._pickleKey);\n this._outboundGroupSessionStore[session.session_id()] = pickledSession;\n};\n\n/**\n * extract an OutboundGroupSession from _outboundGroupSessionStore and call the\n * given function\n *\n * @param {string} sessionId\n * @param {function} func\n * @return {object} result of func\n * @private\n */\nOlmDevice.prototype._getOutboundGroupSession = function (sessionId, func) {\n var pickled = this._outboundGroupSessionStore[sessionId];\n if (pickled === null) {\n throw new Error(\"Unknown outbound group session \" + sessionId);\n }\n\n var session = new Olm.OutboundGroupSession();\n try {\n session.unpickle(this._pickleKey, pickled);\n return func(session);\n } finally {\n session.free();\n }\n};\n\n/**\n * Generate a new outbound group session\n *\n * @return {string} sessionId for the outbound session.\n */\nOlmDevice.prototype.createOutboundGroupSession = function () {\n var session = new Olm.OutboundGroupSession();\n try {\n session.create();\n this._saveOutboundGroupSession(session);\n return session.session_id();\n } finally {\n session.free();\n }\n};\n\n/**\n * Encrypt an outgoing message with an outbound group session\n *\n * @param {string} sessionId the id of the outboundgroupsession\n * @param {string} payloadString payload to be encrypted and sent\n *\n * @return {string} ciphertext\n */\nOlmDevice.prototype.encryptGroupMessage = function (sessionId, payloadString) {\n var self = this;\n\n checkPayloadLength(payloadString);\n\n return this._getOutboundGroupSession(sessionId, function (session) {\n var res = session.encrypt(payloadString);\n self._saveOutboundGroupSession(session);\n return res;\n });\n};\n\n/**\n * Get the session keys for an outbound group session\n *\n * @param {string} sessionId the id of the outbound group session\n *\n * @return {{chain_index: number, key: string}} current chain index, and\n * base64-encoded secret key.\n */\nOlmDevice.prototype.getOutboundGroupSessionKey = function (sessionId) {\n return this._getOutboundGroupSession(sessionId, function (session) {\n return {\n chain_index: session.message_index(),\n key: session.session_key()\n };\n });\n};\n\n// Inbound group session\n// =====================\n\n/**\n * data stored in the session store about an inbound group session\n *\n * @typedef {Object} InboundGroupSessionData\n * @property {string} room_Id\n * @property {string} session pickled Olm.InboundGroupSession\n * @property {Object<string, string>} keysClaimed\n * @property {Array<string>} forwardingCurve25519KeyChain Devices involved in forwarding\n * this session to us (normally empty).\n */\n\n/**\n * Unpickle a session from a sessionData object and invoke the given function.\n * The session is valid only until func returns.\n *\n * @param {Object} sessionData Object describing the session.\n * @param {function(Olm.InboundGroupSession)} func Invoked with the unpickled session\n * @return {*} result of func\n */\nOlmDevice.prototype._unpickleInboundGroupSession = function (sessionData, func) {\n var session = new Olm.InboundGroupSession();\n try {\n session.unpickle(this._pickleKey, sessionData.session);\n return func(session);\n } finally {\n session.free();\n }\n};\n\n/**\n * extract an InboundGroupSession from the crypto store and call the given function\n *\n * @param {string} roomId The room ID to extract the session for, or null to fetch\n * sessions for any room.\n * @param {string} senderKey\n * @param {string} sessionId\n * @param {*} txn Opaque transaction object from cryptoStore.doTxn()\n * @param {function(Olm.InboundGroupSession, InboundGroupSessionData)} func\n * function to call.\n *\n * @private\n */\nOlmDevice.prototype._getInboundGroupSession = function (roomId, senderKey, sessionId, txn, func) {\n var _this15 = this;\n\n this._cryptoStore.getEndToEndInboundGroupSession(senderKey, sessionId, txn, function (sessionData) {\n if (sessionData === null) {\n func(null);\n return;\n }\n\n // if we were given a room ID, check that the it matches the original one for the session. This stops\n // the HS pretending a message was targeting a different room.\n if (roomId !== null && roomId !== sessionData.room_id) {\n throw new Error(\"Mismatched room_id for inbound group session (expected \" + sessionData.room_id + \", was \" + roomId + \")\");\n }\n\n _this15._unpickleInboundGroupSession(sessionData, function (session) {\n func(session, sessionData);\n });\n });\n};\n\n/**\n * Add an inbound group session to the session store\n *\n * @param {string} roomId room in which this session will be used\n * @param {string} senderKey base64-encoded curve25519 key of the sender\n * @param {Array<string>} forwardingCurve25519KeyChain Devices involved in forwarding\n * this session to us.\n * @param {string} sessionId session identifier\n * @param {string} sessionKey base64-encoded secret key\n * @param {Object<string, string>} keysClaimed Other keys the sender claims.\n * @param {boolean} exportFormat true if the megolm keys are in export format\n * (ie, they lack an ed25519 signature)\n */\nOlmDevice.prototype.addInboundGroupSession = function () {\n var _ref15 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee15(roomId, senderKey, forwardingCurve25519KeyChain, sessionId, sessionKey, keysClaimed, exportFormat) {\n var _this16 = this;\n\n return _regenerator2.default.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n _context15.next = 2;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n /* if we already have this session, consider updating it */\n _this16._getInboundGroupSession(roomId, senderKey, sessionId, txn, function (existingSession, existingSessionData) {\n if (existingSession) {\n console.log(\"Update for megolm session \" + senderKey + \"/\" + sessionId);\n // for now we just ignore updates. TODO: implement something here\n return;\n }\n\n // new session.\n var session = new Olm.InboundGroupSession();\n try {\n if (exportFormat) {\n session.import_session(sessionKey);\n } else {\n session.create(sessionKey);\n }\n if (sessionId != session.session_id()) {\n throw new Error(\"Mismatched group session ID from senderKey: \" + senderKey);\n }\n\n var sessionData = {\n room_id: roomId,\n session: session.pickle(_this16._pickleKey),\n keysClaimed: keysClaimed,\n forwardingCurve25519KeyChain: forwardingCurve25519KeyChain\n };\n\n _this16._cryptoStore.addEndToEndInboundGroupSession(senderKey, sessionId, sessionData, txn);\n } finally {\n session.free();\n }\n });\n }));\n\n case 2:\n case \"end\":\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n return function (_x25, _x26, _x27, _x28, _x29, _x30, _x31) {\n return _ref15.apply(this, arguments);\n };\n}();\n\n/**\n * Decrypt a received message with an inbound group session\n *\n * @param {string} roomId room in which the message was received\n * @param {string} senderKey base64-encoded curve25519 key of the sender\n * @param {string} sessionId session identifier\n * @param {string} body base64-encoded body of the encrypted message\n * @param {string} eventId ID of the event being decrypted\n * @param {Number} timestamp timestamp of the event being decrypted\n *\n * @return {null} the sessionId is unknown\n *\n * @return {Promise<{result: string, senderKey: string,\n * forwardingCurve25519KeyChain: Array<string>,\n * keysClaimed: Object<string, string>}>}\n */\nOlmDevice.prototype.decryptGroupMessage = function () {\n var _ref16 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee16(roomId, senderKey, sessionId, body, eventId, timestamp) {\n var _this17 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n result = void 0;\n _context16.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n _this17._getInboundGroupSession(roomId, senderKey, sessionId, txn, function (session, sessionData) {\n if (session === null) {\n result = null;\n return;\n }\n var res = session.decrypt(body);\n\n var plaintext = res.plaintext;\n if (plaintext === undefined) {\n // Compatibility for older olm versions.\n plaintext = res;\n } else {\n // Check if we have seen this message index before to detect replay attacks.\n // If the event ID and timestamp are specified, and the match the event ID\n // and timestamp from the last time we used this message index, then we\n // don't consider it a replay attack.\n var messageIndexKey = senderKey + \"|\" + sessionId + \"|\" + res.message_index;\n if (messageIndexKey in _this17._inboundGroupSessionMessageIndexes) {\n var msgInfo = _this17._inboundGroupSessionMessageIndexes[messageIndexKey];\n if (msgInfo.id !== eventId || msgInfo.timestamp !== timestamp) {\n throw new Error(\"Duplicate message index, possible replay attack: \" + messageIndexKey);\n }\n }\n _this17._inboundGroupSessionMessageIndexes[messageIndexKey] = {\n id: eventId,\n timestamp: timestamp\n };\n }\n\n sessionData.session = session.pickle(_this17._pickleKey);\n _this17._cryptoStore.storeEndToEndInboundGroupSession(senderKey, sessionId, sessionData, txn);\n result = {\n result: plaintext,\n keysClaimed: sessionData.keysClaimed || {},\n senderKey: senderKey,\n forwardingCurve25519KeyChain: sessionData.forwardingCurve25519KeyChain || []\n };\n });\n }));\n\n case 3:\n return _context16.abrupt(\"return\", result);\n\n case 4:\n case \"end\":\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n return function (_x32, _x33, _x34, _x35, _x36, _x37) {\n return _ref16.apply(this, arguments);\n };\n}();\n\n/**\n * Determine if we have the keys for a given megolm session\n *\n * @param {string} roomId room in which the message was received\n * @param {string} senderKey base64-encoded curve25519 key of the sender\n * @param {sring} sessionId session identifier\n *\n * @returns {Promise<boolean>} true if we have the keys to this session\n */\nOlmDevice.prototype.hasInboundSessionKeys = function () {\n var _ref17 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee17(roomId, senderKey, sessionId) {\n var _this18 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n result = void 0;\n _context17.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n _this18._cryptoStore.getEndToEndInboundGroupSession(senderKey, sessionId, txn, function (sessionData) {\n if (sessionData === null) {\n result = false;\n return;\n }\n\n if (roomId !== sessionData.room_id) {\n console.warn(\"requested keys for inbound group session \" + senderKey + \"|\" + (sessionId + \", with incorrect room_id \") + (\"(expected \" + sessionData.room_id + \", \") + (\"was \" + roomId + \")\"));\n result = false;\n } else {\n result = true;\n }\n });\n }));\n\n case 3:\n return _context17.abrupt(\"return\", result);\n\n case 4:\n case \"end\":\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n return function (_x38, _x39, _x40) {\n return _ref17.apply(this, arguments);\n };\n}();\n\n/**\n * Extract the keys to a given megolm session, for sharing\n *\n * @param {string} roomId room in which the message was received\n * @param {string} senderKey base64-encoded curve25519 key of the sender\n * @param {string} sessionId session identifier\n *\n * @returns {Promise<{chain_index: number, key: string,\n * forwarding_curve25519_key_chain: Array<string>,\n * sender_claimed_ed25519_key: string\n * }>}\n * details of the session key. The key is a base64-encoded megolm key in\n * export format.\n */\nOlmDevice.prototype.getInboundGroupSessionKey = function () {\n var _ref18 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee18(roomId, senderKey, sessionId) {\n var _this19 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n result = void 0;\n _context18.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n _this19._getInboundGroupSession(roomId, senderKey, sessionId, txn, function (session, sessionData) {\n if (session === null) {\n result = null;\n return;\n }\n var messageIndex = session.first_known_index();\n\n var claimedKeys = sessionData.keysClaimed || {};\n var senderEd25519Key = claimedKeys.ed25519 || null;\n\n result = {\n \"chain_index\": messageIndex,\n \"key\": session.export_session(messageIndex),\n \"forwarding_curve25519_key_chain\": sessionData.forwardingCurve25519KeyChain || [],\n \"sender_claimed_ed25519_key\": senderEd25519Key\n };\n });\n }));\n\n case 3:\n return _context18.abrupt(\"return\", result);\n\n case 4:\n case \"end\":\n return _context18.stop();\n }\n }\n }, _callee18, this);\n }));\n\n return function (_x41, _x42, _x43) {\n return _ref18.apply(this, arguments);\n };\n}();\n\n/**\n * Export an inbound group session\n *\n * @param {string} senderKey base64-encoded curve25519 key of the sender\n * @param {string} sessionId session identifier\n * @param {string} sessionData The session object from the store\n * @return {module:crypto/OlmDevice.MegolmSessionData} exported session data\n */\nOlmDevice.prototype.exportInboundGroupSession = function (senderKey, sessionId, sessionData) {\n return this._unpickleInboundGroupSession(sessionData, function (session) {\n var messageIndex = session.first_known_index();\n\n return {\n \"sender_key\": senderKey,\n \"sender_claimed_keys\": sessionData.keysClaimed,\n \"room_id\": sessionData.room_id,\n \"session_id\": sessionId,\n \"session_key\": session.export_session(messageIndex),\n \"forwarding_curve25519_key_chain\": session.forwardingCurve25519KeyChain || []\n };\n });\n};\n\n// Utilities\n// =========\n\n/**\n * Verify an ed25519 signature.\n *\n * @param {string} key ed25519 key\n * @param {string} message message which was signed\n * @param {string} signature base64-encoded signature to be checked\n *\n * @raises {Error} if there is a problem with the verification. If the key was\n * too small then the message will be \"OLM.INVALID_BASE64\". If the signature\n * was invalid then the message will be \"OLM.BAD_MESSAGE_MAC\".\n */\nOlmDevice.prototype.verifySignature = function (key, message, signature) {\n this._getUtility(function (util) {\n util.ed25519_verify(key, message, signature);\n });\n};\n\n/** */\nmodule.exports = OlmDevice;\n//# sourceMappingURL=OlmDevice.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module crypto/algorithms\n */\n\nvar base = require(\"./base\");\n\nrequire(\"./olm\");\nrequire(\"./megolm\");\n\n/**\n * @see module:crypto/algorithms/base.ENCRYPTION_CLASSES\n */\nmodule.exports.ENCRYPTION_CLASSES = base.ENCRYPTION_CLASSES;\n\n/**\n * @see module:crypto/algorithms/base.DECRYPTION_CLASSES\n */\nmodule.exports.DECRYPTION_CLASSES = base.DECRYPTION_CLASSES;\n\n/**\n * @see module:crypto/algorithms/base.DecryptionError\n */\nmodule.exports.DecryptionError = base.DecryptionError;\n//# sourceMappingURL=index.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * Defines m.olm encryption/decryption\n *\n * @module crypto/algorithms/olm\n */\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utils = require(\"../../utils\");\nvar olmlib = require(\"../olmlib\");\nvar DeviceInfo = require(\"../deviceinfo\");\nvar DeviceVerification = DeviceInfo.DeviceVerification;\n\nvar base = require(\"./base\");\n\n/**\n * Olm encryption implementation\n *\n * @constructor\n * @extends {module:crypto/algorithms/base.EncryptionAlgorithm}\n *\n * @param {object} params parameters, as per\n * {@link module:crypto/algorithms/base.EncryptionAlgorithm}\n */\nfunction OlmEncryption(params) {\n base.EncryptionAlgorithm.call(this, params);\n this._sessionPrepared = false;\n this._prepPromise = null;\n}\nutils.inherits(OlmEncryption, base.EncryptionAlgorithm);\n\n/**\n * @private\n\n * @param {string[]} roomMembers list of currently-joined users in the room\n * @return {module:client.Promise} Promise which resolves when setup is complete\n */\nOlmEncryption.prototype._ensureSession = function (roomMembers) {\n if (this._prepPromise) {\n // prep already in progress\n return this._prepPromise;\n }\n\n if (this._sessionPrepared) {\n // prep already done\n return _bluebird2.default.resolve();\n }\n\n var self = this;\n this._prepPromise = self._crypto.downloadKeys(roomMembers).then(function (res) {\n return self._crypto.ensureOlmSessionsForUsers(roomMembers);\n }).then(function () {\n self._sessionPrepared = true;\n }).finally(function () {\n self._prepPromise = null;\n });\n return this._prepPromise;\n};\n\n/**\n * @inheritdoc\n *\n * @param {module:models/room} room\n * @param {string} eventType\n * @param {object} content plaintext event content\n *\n * @return {module:client.Promise} Promise which resolves to the new event body\n */\nOlmEncryption.prototype.encryptMessage = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(room, eventType, content) {\n var members, users, self, payloadFields, encryptedContent, promises, i, userId, devices, j, deviceInfo, key;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(room.getEncryptionTargetMembers());\n\n case 2:\n members = _context.sent;\n users = utils.map(members, function (u) {\n return u.userId;\n });\n self = this;\n _context.next = 7;\n return (0, _bluebird.resolve)(this._ensureSession(users));\n\n case 7:\n payloadFields = {\n room_id: room.roomId,\n type: eventType,\n content: content\n };\n encryptedContent = {\n algorithm: olmlib.OLM_ALGORITHM,\n sender_key: self._olmDevice.deviceCurve25519Key,\n ciphertext: {}\n };\n promises = [];\n i = 0;\n\n case 11:\n if (!(i < users.length)) {\n _context.next = 29;\n break;\n }\n\n userId = users[i];\n devices = self._crypto.getStoredDevicesForUser(userId);\n j = 0;\n\n case 15:\n if (!(j < devices.length)) {\n _context.next = 26;\n break;\n }\n\n deviceInfo = devices[j];\n key = deviceInfo.getIdentityKey();\n\n if (!(key == self._olmDevice.deviceCurve25519Key)) {\n _context.next = 20;\n break;\n }\n\n return _context.abrupt(\"continue\", 23);\n\n case 20:\n if (!(deviceInfo.verified == DeviceVerification.BLOCKED)) {\n _context.next = 22;\n break;\n }\n\n return _context.abrupt(\"continue\", 23);\n\n case 22:\n\n promises.push(olmlib.encryptMessageForDevice(encryptedContent.ciphertext, self._userId, self._deviceId, self._olmDevice, userId, deviceInfo, payloadFields));\n\n case 23:\n ++j;\n _context.next = 15;\n break;\n\n case 26:\n ++i;\n _context.next = 11;\n break;\n\n case 29:\n _context.next = 31;\n return (0, _bluebird.resolve)(_bluebird2.default.all(promises).return(encryptedContent));\n\n case 31:\n return _context.abrupt(\"return\", _context.sent);\n\n case 32:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function (_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Olm decryption implementation\n *\n * @constructor\n * @extends {module:crypto/algorithms/base.DecryptionAlgorithm}\n * @param {object} params parameters, as per\n * {@link module:crypto/algorithms/base.DecryptionAlgorithm}\n */\nfunction OlmDecryption(params) {\n base.DecryptionAlgorithm.call(this, params);\n}\nutils.inherits(OlmDecryption, base.DecryptionAlgorithm);\n\n/**\n * @inheritdoc\n *\n * @param {MatrixEvent} event\n *\n * returns a promise which resolves to a\n * {@link module:crypto~EventDecryptionResult} once we have finished\n * decrypting. Rejects with an `algorithms.DecryptionError` if there is a\n * problem decrypting the event.\n */\nOlmDecryption.prototype.decryptEvent = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(event) {\n var content, deviceKey, ciphertext, message, payloadString, payload, claimedKeys;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n content = event.getWireContent();\n deviceKey = content.sender_key;\n ciphertext = content.ciphertext;\n\n if (ciphertext) {\n _context2.next = 5;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_MISSING_CIPHERTEXT\", \"Missing ciphertext\");\n\n case 5:\n if (this._olmDevice.deviceCurve25519Key in ciphertext) {\n _context2.next = 7;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_NOT_INCLUDED_IN_RECIPIENTS\", \"Not included in recipients\");\n\n case 7:\n message = ciphertext[this._olmDevice.deviceCurve25519Key];\n payloadString = void 0;\n _context2.prev = 9;\n _context2.next = 12;\n return (0, _bluebird.resolve)(this._decryptMessage(deviceKey, message));\n\n case 12:\n payloadString = _context2.sent;\n _context2.next = 18;\n break;\n\n case 15:\n _context2.prev = 15;\n _context2.t0 = _context2[\"catch\"](9);\n throw new base.DecryptionError(\"OLM_BAD_ENCRYPTED_MESSAGE\", \"Bad Encrypted Message\", {\n sender: deviceKey,\n err: _context2.t0\n });\n\n case 18:\n payload = JSON.parse(payloadString);\n\n // check that we were the intended recipient, to avoid unknown-key attack\n // https://github.com/vector-im/vector-web/issues/2483\n\n if (!(payload.recipient != this._userId)) {\n _context2.next = 21;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_BAD_RECIPIENT\", \"Message was intented for \" + payload.recipient);\n\n case 21:\n if (!(payload.recipient_keys.ed25519 != this._olmDevice.deviceEd25519Key)) {\n _context2.next = 23;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_BAD_RECIPIENT_KEY\", \"Message not intended for this device\", {\n intended: payload.recipient_keys.ed25519,\n our_key: this._olmDevice.deviceEd25519Key\n });\n\n case 23:\n if (!(payload.sender != event.getSender())) {\n _context2.next = 25;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_FORWARDED_MESSAGE\", \"Message forwarded from \" + payload.sender, {\n reported_sender: event.getSender()\n });\n\n case 25:\n if (!(payload.room_id !== event.getRoomId())) {\n _context2.next = 27;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_BAD_ROOM\", \"Message intended for room \" + payload.room_id, {\n reported_room: event.room_id\n });\n\n case 27:\n claimedKeys = payload.keys || {};\n return _context2.abrupt(\"return\", {\n clearEvent: payload,\n senderCurve25519Key: deviceKey,\n claimedEd25519Key: claimedKeys.ed25519 || null\n });\n\n case 29:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[9, 15]]);\n }));\n\n return function (_x4) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * Attempt to decrypt an Olm message\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key of the sender\n * @param {object} message message object, with 'type' and 'body' fields\n *\n * @return {string} payload, if decrypted successfully.\n */\nOlmDecryption.prototype._decryptMessage = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(theirDeviceIdentityKey, message) {\n var sessionIds, decryptionErrors, i, sessionId, payload, foundSession, res;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return (0, _bluebird.resolve)(this._olmDevice.getSessionIdsForDevice(theirDeviceIdentityKey));\n\n case 2:\n sessionIds = _context3.sent;\n\n\n // try each session in turn.\n decryptionErrors = {};\n i = 0;\n\n case 5:\n if (!(i < sessionIds.length)) {\n _context3.next = 26;\n break;\n }\n\n sessionId = sessionIds[i];\n _context3.prev = 7;\n _context3.next = 10;\n return (0, _bluebird.resolve)(this._olmDevice.decryptMessage(theirDeviceIdentityKey, sessionId, message.type, message.body));\n\n case 10:\n payload = _context3.sent;\n\n console.log(\"Decrypted Olm message from \" + theirDeviceIdentityKey + \" with session \" + sessionId);\n return _context3.abrupt(\"return\", payload);\n\n case 15:\n _context3.prev = 15;\n _context3.t0 = _context3[\"catch\"](7);\n _context3.next = 19;\n return (0, _bluebird.resolve)(this._olmDevice.matchesSession(theirDeviceIdentityKey, sessionId, message.type, message.body));\n\n case 19:\n foundSession = _context3.sent;\n\n if (!foundSession) {\n _context3.next = 22;\n break;\n }\n\n throw new Error(\"Error decrypting prekey message with existing session id \" + sessionId + \": \" + _context3.t0.message);\n\n case 22:\n\n // otherwise it's probably a message for another session; carry on, but\n // keep a record of the error\n decryptionErrors[sessionId] = _context3.t0.message;\n\n case 23:\n i++;\n _context3.next = 5;\n break;\n\n case 26:\n if (!(message.type !== 0)) {\n _context3.next = 30;\n break;\n }\n\n if (!(sessionIds.length === 0)) {\n _context3.next = 29;\n break;\n }\n\n throw new Error(\"No existing sessions\");\n\n case 29:\n throw new Error(\"Error decrypting non-prekey message with existing sessions: \" + (0, _stringify2.default)(decryptionErrors));\n\n case 30:\n\n // prekey message which doesn't match any existing sessions: make a new\n // session.\n\n res = void 0;\n _context3.prev = 31;\n _context3.next = 34;\n return (0, _bluebird.resolve)(this._olmDevice.createInboundSession(theirDeviceIdentityKey, message.type, message.body));\n\n case 34:\n res = _context3.sent;\n _context3.next = 41;\n break;\n\n case 37:\n _context3.prev = 37;\n _context3.t1 = _context3[\"catch\"](31);\n\n decryptionErrors[\"(new)\"] = _context3.t1.message;\n throw new Error(\"Error decrypting prekey message: \" + (0, _stringify2.default)(decryptionErrors));\n\n case 41:\n\n console.log(\"created new inbound Olm session ID \" + res.session_id + \" with \" + theirDeviceIdentityKey);\n return _context3.abrupt(\"return\", res.payload);\n\n case 43:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[7, 15], [31, 37]]);\n }));\n\n return function (_x5, _x6) {\n return _ref3.apply(this, arguments);\n };\n}();\n\nbase.registerAlgorithm(olmlib.OLM_ALGORITHM, OlmEncryption, OlmDecryption);\n//# sourceMappingURL=olm.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * Defines m.olm encryption/decryption\n *\n * @module crypto/algorithms/megolm\n */\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _set = require(\"babel-runtime/core-js/set\");\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utils = require(\"../../utils\");\nvar olmlib = require(\"../olmlib\");\nvar base = require(\"./base\");\n\n/**\n * @private\n * @constructor\n *\n * @param {string} sessionId\n *\n * @property {string} sessionId\n * @property {Number} useCount number of times this session has been used\n * @property {Number} creationTime when the session was created (ms since the epoch)\n *\n * @property {object} sharedWithDevices\n * devices with which we have shared the session key\n * userId -> {deviceId -> msgindex}\n */\nfunction OutboundSessionInfo(sessionId) {\n this.sessionId = sessionId;\n this.useCount = 0;\n this.creationTime = new Date().getTime();\n this.sharedWithDevices = {};\n}\n\n/**\n * Check if it's time to rotate the session\n *\n * @param {Number} rotationPeriodMsgs\n * @param {Number} rotationPeriodMs\n * @return {Boolean}\n */\nOutboundSessionInfo.prototype.needsRotation = function (rotationPeriodMsgs, rotationPeriodMs) {\n var sessionLifetime = new Date().getTime() - this.creationTime;\n\n if (this.useCount >= rotationPeriodMsgs || sessionLifetime >= rotationPeriodMs) {\n console.log(\"Rotating megolm session after \" + this.useCount + \" messages, \" + sessionLifetime + \"ms\");\n return true;\n }\n\n return false;\n};\n\nOutboundSessionInfo.prototype.markSharedWithDevice = function (userId, deviceId, chainIndex) {\n if (!this.sharedWithDevices[userId]) {\n this.sharedWithDevices[userId] = {};\n }\n this.sharedWithDevices[userId][deviceId] = chainIndex;\n};\n\n/**\n * Determine if this session has been shared with devices which it shouldn't\n * have been.\n *\n * @param {Object} devicesInRoom userId -> {deviceId -> object}\n * devices we should shared the session with.\n *\n * @return {Boolean} true if we have shared the session with devices which aren't\n * in devicesInRoom.\n */\nOutboundSessionInfo.prototype.sharedWithTooManyDevices = function (devicesInRoom) {\n for (var userId in this.sharedWithDevices) {\n if (!this.sharedWithDevices.hasOwnProperty(userId)) {\n continue;\n }\n\n if (!devicesInRoom.hasOwnProperty(userId)) {\n console.log(\"Starting new session because we shared with \" + userId);\n return true;\n }\n\n for (var deviceId in this.sharedWithDevices[userId]) {\n if (!this.sharedWithDevices[userId].hasOwnProperty(deviceId)) {\n continue;\n }\n\n if (!devicesInRoom[userId].hasOwnProperty(deviceId)) {\n console.log(\"Starting new session because we shared with \" + userId + \":\" + deviceId);\n return true;\n }\n }\n }\n};\n\n/**\n * Megolm encryption implementation\n *\n * @constructor\n * @extends {module:crypto/algorithms/base.EncryptionAlgorithm}\n *\n * @param {object} params parameters, as per\n * {@link module:crypto/algorithms/base.EncryptionAlgorithm}\n */\nfunction MegolmEncryption(params) {\n base.EncryptionAlgorithm.call(this, params);\n\n // the most recent attempt to set up a session. This is used to serialise\n // the session setups, so that we have a race-free view of which session we\n // are using, and which devices we have shared the keys with. It resolves\n // with an OutboundSessionInfo (or undefined, for the first message in the\n // room).\n this._setupPromise = _bluebird2.default.resolve();\n\n // default rotation periods\n this._sessionRotationPeriodMsgs = 100;\n this._sessionRotationPeriodMs = 7 * 24 * 3600 * 1000;\n\n if (params.config.rotation_period_ms !== undefined) {\n this._sessionRotationPeriodMs = params.config.rotation_period_ms;\n }\n\n if (params.config.rotation_period_msgs !== undefined) {\n this._sessionRotationPeriodMsgs = params.config.rotation_period_msgs;\n }\n}\nutils.inherits(MegolmEncryption, base.EncryptionAlgorithm);\n\n/**\n * @private\n *\n * @param {Object} devicesInRoom The devices in this room, indexed by user ID\n *\n * @return {module:client.Promise} Promise which resolves to the\n * OutboundSessionInfo when setup is complete.\n */\nMegolmEncryption.prototype._ensureOutboundSession = function (devicesInRoom) {\n\n // takes the previous OutboundSessionInfo, and considers whether to create\n // a new one. Also shares the key with any (new) devices in the room.\n // Updates `session` to hold the final OutboundSessionInfo.\n //\n // returns a promise which resolves once the keyshare is successful.\n var prepareSession = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(oldSession) {\n var shareMap, userId, userDevices, deviceId, deviceInfo, key;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n session = oldSession;\n\n // need to make a brand new session?\n if (session && session.needsRotation(self._sessionRotationPeriodMsgs, self._sessionRotationPeriodMs)) {\n console.log(\"Starting new megolm session because we need to rotate.\");\n session = null;\n }\n\n // determine if we have shared with anyone we shouldn't have\n if (session && session.sharedWithTooManyDevices(devicesInRoom)) {\n session = null;\n }\n\n if (session) {\n _context.next = 8;\n break;\n }\n\n console.log(\"Starting new megolm session for room \" + self._roomId);\n _context.next = 7;\n return (0, _bluebird.resolve)(self._prepareNewSession());\n\n case 7:\n session = _context.sent;\n\n case 8:\n\n // now check if we need to share with any devices\n shareMap = {};\n _context.t0 = _regenerator2.default.keys(devicesInRoom);\n\n case 10:\n if ((_context.t1 = _context.t0()).done) {\n _context.next = 29;\n break;\n }\n\n userId = _context.t1.value;\n\n if (devicesInRoom.hasOwnProperty(userId)) {\n _context.next = 14;\n break;\n }\n\n return _context.abrupt(\"continue\", 10);\n\n case 14:\n userDevices = devicesInRoom[userId];\n _context.t2 = _regenerator2.default.keys(userDevices);\n\n case 16:\n if ((_context.t3 = _context.t2()).done) {\n _context.next = 27;\n break;\n }\n\n deviceId = _context.t3.value;\n\n if (userDevices.hasOwnProperty(deviceId)) {\n _context.next = 20;\n break;\n }\n\n return _context.abrupt(\"continue\", 16);\n\n case 20:\n deviceInfo = userDevices[deviceId];\n key = deviceInfo.getIdentityKey();\n\n if (!(key == self._olmDevice.deviceCurve25519Key)) {\n _context.next = 24;\n break;\n }\n\n return _context.abrupt(\"continue\", 16);\n\n case 24:\n\n if (!session.sharedWithDevices[userId] || session.sharedWithDevices[userId][deviceId] === undefined) {\n shareMap[userId] = shareMap[userId] || [];\n shareMap[userId].push(deviceInfo);\n }\n _context.next = 16;\n break;\n\n case 27:\n _context.next = 10;\n break;\n\n case 29:\n return _context.abrupt(\"return\", self._shareKeyWithDevices(session, shareMap));\n\n case 30:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function prepareSession(_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n // helper which returns the session prepared by prepareSession\n\n\n var self = this;\n\n var session = void 0;function returnSession() {\n return session;\n }\n\n // first wait for the previous share to complete\n var prom = this._setupPromise.then(prepareSession);\n\n // _setupPromise resolves to `session` whether or not the share succeeds\n this._setupPromise = prom.then(returnSession, returnSession);\n\n // but we return a promise which only resolves if the share was successful.\n return prom.then(returnSession);\n};\n\n/**\n * @private\n *\n * @return {module:crypto/algorithms/megolm.OutboundSessionInfo} session\n */\nMegolmEncryption.prototype._prepareNewSession = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var sessionId, key;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n sessionId = this._olmDevice.createOutboundGroupSession();\n key = this._olmDevice.getOutboundGroupSessionKey(sessionId);\n _context2.next = 4;\n return (0, _bluebird.resolve)(this._olmDevice.addInboundGroupSession(this._roomId, this._olmDevice.deviceCurve25519Key, [], sessionId, key.key, { ed25519: this._olmDevice.deviceEd25519Key }));\n\n case 4:\n return _context2.abrupt(\"return\", new OutboundSessionInfo(sessionId));\n\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n}));\n\n/**\n * @private\n *\n * @param {module:crypto/algorithms/megolm.OutboundSessionInfo} session\n *\n * @param {number} chainIndex current chain index\n *\n * @param {object<userId, deviceId>} devicemap\n * mapping from userId to deviceId to {@link module:crypto~OlmSessionResult}\n *\n * @param {object<string, module:crypto/deviceinfo[]>} devicesByUser\n * map from userid to list of devices\n *\n * @return {array<object<userid, deviceInfo>>}\n */\nMegolmEncryption.prototype._splitUserDeviceMap = function (session, chainIndex, devicemap, devicesByUser) {\n var maxToDeviceMessagesPerRequest = 20;\n\n // use an array where the slices of a content map gets stored\n var mapSlices = [];\n var currentSliceId = 0; // start inserting in the first slice\n var entriesInCurrentSlice = 0;\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(devicesByUser)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var userId = _step.value;\n\n var devicesToShareWith = devicesByUser[userId];\n var sessionResults = devicemap[userId];\n\n for (var i = 0; i < devicesToShareWith.length; i++) {\n var deviceInfo = devicesToShareWith[i];\n var deviceId = deviceInfo.deviceId;\n\n var sessionResult = sessionResults[deviceId];\n if (!sessionResult.sessionId) {\n // no session with this device, probably because there\n // were no one-time keys.\n //\n // we could send them a to_device message anyway, as a\n // signal that they have missed out on the key sharing\n // message because of the lack of keys, but there's not\n // much point in that really; it will mostly serve to clog\n // up to_device inboxes.\n\n // mark this device as \"handled\" because we don't want to try\n // to claim a one-time-key for dead devices on every message.\n session.markSharedWithDevice(userId, deviceId, chainIndex);\n\n // ensureOlmSessionsForUsers has already done the logging,\n // so just skip it.\n continue;\n }\n\n console.log(\"share keys with device \" + userId + \":\" + deviceId);\n\n if (entriesInCurrentSlice > maxToDeviceMessagesPerRequest) {\n // the current slice is filled up. Start inserting into the next slice\n entriesInCurrentSlice = 0;\n currentSliceId++;\n }\n if (!mapSlices[currentSliceId]) {\n mapSlices[currentSliceId] = [];\n }\n\n mapSlices[currentSliceId].push({\n userId: userId,\n deviceInfo: deviceInfo\n });\n\n entriesInCurrentSlice++;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return mapSlices;\n};\n\n/**\n * @private\n *\n * @param {module:crypto/algorithms/megolm.OutboundSessionInfo} session\n *\n * @param {number} chainIndex current chain index\n *\n * @param {object<userId, deviceInfo>} userDeviceMap\n * mapping from userId to deviceInfo\n *\n * @param {object} payload fields to include in the encrypted payload\n *\n * @return {module:client.Promise} Promise which resolves once the key sharing\n * for the given userDeviceMap is generated and has been sent.\n */\nMegolmEncryption.prototype._encryptAndSendKeysToDevices = function (session, chainIndex, userDeviceMap, payload) {\n var _this = this;\n\n var encryptedContent = {\n algorithm: olmlib.OLM_ALGORITHM,\n sender_key: this._olmDevice.deviceCurve25519Key,\n ciphertext: {}\n };\n var contentMap = {};\n\n var promises = [];\n for (var i = 0; i < userDeviceMap.length; i++) {\n var val = userDeviceMap[i];\n var userId = val.userId;\n var deviceInfo = val.deviceInfo;\n var deviceId = deviceInfo.deviceId;\n\n if (!contentMap[userId]) {\n contentMap[userId] = {};\n }\n contentMap[userId][deviceId] = encryptedContent;\n\n promises.push(olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this._userId, this._deviceId, this._olmDevice, userId, deviceInfo, payload));\n }\n\n return _bluebird2.default.all(promises).then(function () {\n return _this._baseApis.sendToDevice(\"m.room.encrypted\", contentMap).then(function () {\n // store that we successfully uploaded the keys of the current slice\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(contentMap)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _userId = _step2.value;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)((0, _keys2.default)(contentMap[_userId])), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _deviceId = _step3.value;\n\n session.markSharedWithDevice(_userId, _deviceId, chainIndex);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n });\n });\n};\n\n/**\n * @private\n *\n * @param {module:crypto/algorithms/megolm.OutboundSessionInfo} session\n *\n * @param {object<string, module:crypto/deviceinfo[]>} devicesByUser\n * map from userid to list of devices\n */\nMegolmEncryption.prototype._shareKeyWithDevices = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(session, devicesByUser) {\n var key, payload, devicemap, userDeviceMaps, i;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n key = this._olmDevice.getOutboundGroupSessionKey(session.sessionId);\n payload = {\n type: \"m.room_key\",\n content: {\n algorithm: olmlib.MEGOLM_ALGORITHM,\n room_id: this._roomId,\n session_id: session.sessionId,\n session_key: key.key,\n chain_index: key.chain_index\n }\n };\n _context3.next = 4;\n return (0, _bluebird.resolve)(olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, devicesByUser));\n\n case 4:\n devicemap = _context3.sent;\n userDeviceMaps = this._splitUserDeviceMap(session, key.chain_index, devicemap, devicesByUser);\n i = 0;\n\n case 7:\n if (!(i < userDeviceMaps.length)) {\n _context3.next = 21;\n break;\n }\n\n _context3.prev = 8;\n _context3.next = 11;\n return (0, _bluebird.resolve)(this._encryptAndSendKeysToDevices(session, key.chain_index, userDeviceMaps[i], payload));\n\n case 11:\n console.log(\"Completed megolm keyshare in \" + this._roomId + \" \" + (\"(slice \" + (i + 1) + \"/\" + userDeviceMaps.length + \")\"));\n _context3.next = 18;\n break;\n\n case 14:\n _context3.prev = 14;\n _context3.t0 = _context3[\"catch\"](8);\n\n console.log(\"megolm keyshare in \" + this._roomId + \" \" + (\"(slice \" + (i + 1) + \"/\" + userDeviceMaps.length + \") failed\"));\n\n throw _context3.t0;\n\n case 18:\n i++;\n _context3.next = 7;\n break;\n\n case 21:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[8, 14]]);\n }));\n\n return function (_x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * @inheritdoc\n *\n * @param {module:models/room} room\n * @param {string} eventType\n * @param {object} content plaintext event content\n *\n * @return {module:client.Promise} Promise which resolves to the new event body\n */\nMegolmEncryption.prototype.encryptMessage = function (room, eventType, content) {\n var self = this;\n console.log(\"Starting to encrypt event for \" + this._roomId);\n\n return this._getDevicesInRoom(room).then(function (devicesInRoom) {\n // check if any of these devices are not yet known to the user.\n // if so, warn the user so they can verify or ignore.\n self._checkForUnknownDevices(devicesInRoom);\n\n return self._ensureOutboundSession(devicesInRoom);\n }).then(function (session) {\n var payloadJson = {\n room_id: self._roomId,\n type: eventType,\n content: content\n };\n\n var ciphertext = self._olmDevice.encryptGroupMessage(session.sessionId, (0, _stringify2.default)(payloadJson));\n\n var encryptedContent = {\n algorithm: olmlib.MEGOLM_ALGORITHM,\n sender_key: self._olmDevice.deviceCurve25519Key,\n ciphertext: ciphertext,\n session_id: session.sessionId,\n // Include our device ID so that recipients can send us a\n // m.new_device message if they don't have our session key.\n // XXX: Do we still need this now that m.new_device messages\n // no longer exist since #483?\n device_id: self._deviceId\n };\n\n session.useCount++;\n return encryptedContent;\n });\n};\n\n/**\n * Forces the current outbound group session to be discarded such\n * that another one will be created next time an event is sent.\n *\n * This should not normally be necessary.\n */\nMegolmEncryption.prototype.forceDiscardSession = function () {\n this._setupPromise = this._setupPromise.then(function () {\n return null;\n });\n};\n\n/**\n * Checks the devices we're about to send to and see if any are entirely\n * unknown to the user. If so, warn the user, and mark them as known to\n * give the user a chance to go verify them before re-sending this message.\n *\n * @param {Object} devicesInRoom userId -> {deviceId -> object}\n * devices we should shared the session with.\n */\nMegolmEncryption.prototype._checkForUnknownDevices = function (devicesInRoom) {\n var unknownDevices = {};\n\n (0, _keys2.default)(devicesInRoom).forEach(function (userId) {\n (0, _keys2.default)(devicesInRoom[userId]).forEach(function (deviceId) {\n var device = devicesInRoom[userId][deviceId];\n if (device.isUnverified() && !device.isKnown()) {\n if (!unknownDevices[userId]) {\n unknownDevices[userId] = {};\n }\n unknownDevices[userId][deviceId] = device;\n }\n });\n });\n\n if ((0, _keys2.default)(unknownDevices).length) {\n // it'd be kind to pass unknownDevices up to the user in this error\n throw new base.UnknownDeviceError(\"This room contains unknown devices which have not been verified. \" + \"We strongly recommend you verify them before continuing.\", unknownDevices);\n }\n};\n\n/**\n * Get the list of unblocked devices for all users in the room\n *\n * @param {module:models/room} room\n *\n * @return {module:client.Promise} Promise which resolves to a map\n * from userId to deviceId to deviceInfo\n */\nMegolmEncryption.prototype._getDevicesInRoom = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(room) {\n var members, roomMembers, isBlacklisting, devices, userId, userDevices, deviceId;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return (0, _bluebird.resolve)(room.getEncryptionTargetMembers());\n\n case 2:\n members = _context4.sent;\n roomMembers = utils.map(members, function (u) {\n return u.userId;\n });\n\n // The global value is treated as a default for when rooms don't specify a value.\n\n isBlacklisting = this._crypto.getGlobalBlacklistUnverifiedDevices();\n\n if (typeof room.getBlacklistUnverifiedDevices() === 'boolean') {\n isBlacklisting = room.getBlacklistUnverifiedDevices();\n }\n\n // We are happy to use a cached version here: we assume that if we already\n // have a list of the user's devices, then we already share an e2e room\n // with them, which means that they will have announced any new devices via\n // device_lists in their /sync response. This cache should then be maintained\n // using all the device_lists changes and left fields.\n // See https://github.com/vector-im/riot-web/issues/2305 for details.\n _context4.next = 8;\n return (0, _bluebird.resolve)(this._crypto.downloadKeys(roomMembers, false));\n\n case 8:\n devices = _context4.sent;\n _context4.t0 = _regenerator2.default.keys(devices);\n\n case 10:\n if ((_context4.t1 = _context4.t0()).done) {\n _context4.next = 25;\n break;\n }\n\n userId = _context4.t1.value;\n\n if (devices.hasOwnProperty(userId)) {\n _context4.next = 14;\n break;\n }\n\n return _context4.abrupt(\"continue\", 10);\n\n case 14:\n userDevices = devices[userId];\n _context4.t2 = _regenerator2.default.keys(userDevices);\n\n case 16:\n if ((_context4.t3 = _context4.t2()).done) {\n _context4.next = 23;\n break;\n }\n\n deviceId = _context4.t3.value;\n\n if (userDevices.hasOwnProperty(deviceId)) {\n _context4.next = 20;\n break;\n }\n\n return _context4.abrupt(\"continue\", 16);\n\n case 20:\n\n if (userDevices[deviceId].isBlocked() || userDevices[deviceId].isUnverified() && isBlacklisting) {\n delete userDevices[deviceId];\n }\n _context4.next = 16;\n break;\n\n case 23:\n _context4.next = 10;\n break;\n\n case 25:\n return _context4.abrupt(\"return\", devices);\n\n case 26:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n return function (_x4) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * Megolm decryption implementation\n *\n * @constructor\n * @extends {module:crypto/algorithms/base.DecryptionAlgorithm}\n *\n * @param {object} params parameters, as per\n * {@link module:crypto/algorithms/base.DecryptionAlgorithm}\n */\nfunction MegolmDecryption(params) {\n base.DecryptionAlgorithm.call(this, params);\n\n // events which we couldn't decrypt due to unknown sessions / indexes: map from\n // senderKey|sessionId to Set of MatrixEvents\n this._pendingEvents = {};\n\n // this gets stubbed out by the unit tests.\n this.olmlib = olmlib;\n}\nutils.inherits(MegolmDecryption, base.DecryptionAlgorithm);\n\n/**\n * @inheritdoc\n *\n * @param {MatrixEvent} event\n *\n * returns a promise which resolves to a\n * {@link module:crypto~EventDecryptionResult} once we have finished\n * decrypting, or rejects with an `algorithms.DecryptionError` if there is a\n * problem decrypting the event.\n */\nMegolmDecryption.prototype.decryptEvent = function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(event) {\n var content, res, errorCode, payload;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n content = event.getWireContent();\n\n if (!(!content.sender_key || !content.session_id || !content.ciphertext)) {\n _context5.next = 3;\n break;\n }\n\n throw new base.DecryptionError(\"MEGOLM_MISSING_FIELDS\", \"Missing fields in input\");\n\n case 3:\n\n // we add the event to the pending list *before* we start decryption.\n //\n // then, if the key turns up while decryption is in progress (and\n // decryption fails), we will schedule a retry.\n // (fixes https://github.com/vector-im/riot-web/issues/5001)\n this._addEventToPendingList(event);\n\n res = void 0;\n _context5.prev = 5;\n _context5.next = 8;\n return (0, _bluebird.resolve)(this._olmDevice.decryptGroupMessage(event.getRoomId(), content.sender_key, content.session_id, content.ciphertext, event.getId(), event.getTs()));\n\n case 8:\n res = _context5.sent;\n _context5.next = 16;\n break;\n\n case 11:\n _context5.prev = 11;\n _context5.t0 = _context5[\"catch\"](5);\n errorCode = \"OLM_DECRYPT_GROUP_MESSAGE_ERROR\";\n\n\n if (_context5.t0.message === 'OLM.UNKNOWN_MESSAGE_INDEX') {\n this._requestKeysForEvent(event);\n\n errorCode = 'OLM_UNKNOWN_MESSAGE_INDEX';\n }\n\n throw new base.DecryptionError(errorCode, _context5.t0.toString(), {\n session: content.sender_key + '|' + content.session_id\n });\n\n case 16:\n if (!(res === null)) {\n _context5.next = 19;\n break;\n }\n\n // We've got a message for a session we don't have.\n //\n // (XXX: We might actually have received this key since we started\n // decrypting, in which case we'll have scheduled a retry, and this\n // request will be redundant. We could probably check to see if the\n // event is still in the pending list; if not, a retry will have been\n // scheduled, so we needn't send out the request here.)\n this._requestKeysForEvent(event);\n throw new base.DecryptionError(\"MEGOLM_UNKNOWN_INBOUND_SESSION_ID\", \"The sender's device has not sent us the keys for this message.\", {\n session: content.sender_key + '|' + content.session_id\n });\n\n case 19:\n\n // success. We can remove the event from the pending list, if that hasn't\n // already happened.\n this._removeEventFromPendingList(event);\n\n payload = JSON.parse(res.result);\n\n // belt-and-braces check that the room id matches that indicated by the HS\n // (this is somewhat redundant, since the megolm session is scoped to the\n // room, so neither the sender nor a MITM can lie about the room_id).\n\n if (!(payload.room_id !== event.getRoomId())) {\n _context5.next = 23;\n break;\n }\n\n throw new base.DecryptionError(\"MEGOLM_BAD_ROOM\", \"Message intended for room \" + payload.room_id);\n\n case 23:\n return _context5.abrupt(\"return\", {\n clearEvent: payload,\n senderCurve25519Key: res.senderKey,\n claimedEd25519Key: res.keysClaimed.ed25519,\n forwardingCurve25519KeyChain: res.forwardingCurve25519KeyChain\n });\n\n case 24:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this, [[5, 11]]);\n }));\n\n return function (_x5) {\n return _ref5.apply(this, arguments);\n };\n}();\n\nMegolmDecryption.prototype._requestKeysForEvent = function (event) {\n var sender = event.getSender();\n var wireContent = event.getWireContent();\n\n // send the request to all of our own devices, and the\n // original sending device if it wasn't us.\n var recipients = [{\n userId: this._userId, deviceId: '*'\n }];\n if (sender != this._userId) {\n recipients.push({\n userId: sender, deviceId: wireContent.device_id\n });\n }\n\n this._crypto.requestRoomKey({\n room_id: event.getRoomId(),\n algorithm: wireContent.algorithm,\n sender_key: wireContent.sender_key,\n session_id: wireContent.session_id\n }, recipients);\n};\n\n/**\n * Add an event to the list of those awaiting their session keys.\n *\n * @private\n *\n * @param {module:models/event.MatrixEvent} event\n */\nMegolmDecryption.prototype._addEventToPendingList = function (event) {\n var content = event.getWireContent();\n var k = content.sender_key + \"|\" + content.session_id;\n if (!this._pendingEvents[k]) {\n this._pendingEvents[k] = new _set2.default();\n }\n this._pendingEvents[k].add(event);\n};\n\n/**\n * Remove an event from the list of those awaiting their session keys.\n *\n * @private\n *\n * @param {module:models/event.MatrixEvent} event\n */\nMegolmDecryption.prototype._removeEventFromPendingList = function (event) {\n var content = event.getWireContent();\n var k = content.sender_key + \"|\" + content.session_id;\n if (!this._pendingEvents[k]) {\n return;\n }\n\n this._pendingEvents[k].delete(event);\n if (this._pendingEvents[k].size === 0) {\n delete this._pendingEvents[k];\n }\n};\n\n/**\n * @inheritdoc\n *\n * @param {module:models/event.MatrixEvent} event key event\n */\nMegolmDecryption.prototype.onRoomKeyEvent = function (event) {\n var _this2 = this;\n\n var content = event.getContent();\n var sessionId = content.session_id;\n var senderKey = event.getSenderKey();\n var forwardingKeyChain = [];\n var exportFormat = false;\n var keysClaimed = void 0;\n\n if (!content.room_id || !sessionId || !content.session_key) {\n console.error(\"key event is missing fields\");\n return;\n }\n\n if (!senderKey) {\n console.error(\"key event has no sender key (not encrypted?)\");\n return;\n }\n\n if (event.getType() == \"m.forwarded_room_key\") {\n exportFormat = true;\n forwardingKeyChain = content.forwarding_curve25519_key_chain;\n if (!utils.isArray(forwardingKeyChain)) {\n forwardingKeyChain = [];\n }\n\n // copy content before we modify it\n forwardingKeyChain = forwardingKeyChain.slice();\n forwardingKeyChain.push(senderKey);\n\n senderKey = content.sender_key;\n if (!senderKey) {\n console.error(\"forwarded_room_key event is missing sender_key field\");\n return;\n }\n\n var ed25519Key = content.sender_claimed_ed25519_key;\n if (!ed25519Key) {\n console.error(\"forwarded_room_key_event is missing sender_claimed_ed25519_key field\");\n return;\n }\n\n keysClaimed = {\n ed25519: ed25519Key\n };\n } else {\n keysClaimed = event.getKeysClaimed();\n }\n\n console.log(\"Adding key for megolm session \" + senderKey + \"|\" + sessionId);\n this._olmDevice.addInboundGroupSession(content.room_id, senderKey, forwardingKeyChain, sessionId, content.session_key, keysClaimed, exportFormat).then(function () {\n // cancel any outstanding room key requests for this session\n _this2._crypto.cancelRoomKeyRequest({\n algorithm: content.algorithm,\n room_id: content.room_id,\n session_id: content.session_id,\n sender_key: senderKey\n });\n\n // have another go at decrypting events sent with this session.\n _this2._retryDecryption(senderKey, sessionId);\n }).catch(function (e) {\n console.error(\"Error handling m.room_key_event: \" + e);\n });\n};\n\n/**\n * @inheritdoc\n */\nMegolmDecryption.prototype.hasKeysForKeyRequest = function (keyRequest) {\n var body = keyRequest.requestBody;\n\n return this._olmDevice.hasInboundSessionKeys(body.room_id, body.sender_key, body.session_id\n // TODO: ratchet index\n );\n};\n\n/**\n * @inheritdoc\n */\nMegolmDecryption.prototype.shareKeysWithDevice = function (keyRequest) {\n var _this3 = this;\n\n var userId = keyRequest.userId;\n var deviceId = keyRequest.deviceId;\n var deviceInfo = this._crypto.getStoredDevice(userId, deviceId);\n var body = keyRequest.requestBody;\n\n this.olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, (0, _defineProperty3.default)({}, userId, [deviceInfo])).then(function (devicemap) {\n var olmSessionResult = devicemap[userId][deviceId];\n if (!olmSessionResult.sessionId) {\n // no session with this device, probably because there\n // were no one-time keys.\n //\n // ensureOlmSessionsForUsers has already done the logging,\n // so just skip it.\n return null;\n }\n\n console.log(\"sharing keys for session \" + body.sender_key + \"|\" + body.session_id + \" with device \" + userId + \":\" + deviceId);\n\n return _this3._buildKeyForwardingMessage(body.room_id, body.sender_key, body.session_id);\n }).then(function (payload) {\n var encryptedContent = {\n algorithm: olmlib.OLM_ALGORITHM,\n sender_key: _this3._olmDevice.deviceCurve25519Key,\n ciphertext: {}\n };\n\n return _this3.olmlib.encryptMessageForDevice(encryptedContent.ciphertext, _this3._userId, _this3._deviceId, _this3._olmDevice, userId, deviceInfo, payload).then(function () {\n var contentMap = (0, _defineProperty3.default)({}, userId, (0, _defineProperty3.default)({}, deviceId, encryptedContent));\n\n // TODO: retries\n return _this3._baseApis.sendToDevice(\"m.room.encrypted\", contentMap);\n });\n }).done();\n};\n\nMegolmDecryption.prototype._buildKeyForwardingMessage = function () {\n var _ref6 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(roomId, senderKey, sessionId) {\n var key;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return (0, _bluebird.resolve)(this._olmDevice.getInboundGroupSessionKey(roomId, senderKey, sessionId));\n\n case 2:\n key = _context6.sent;\n return _context6.abrupt(\"return\", {\n type: \"m.forwarded_room_key\",\n content: {\n algorithm: olmlib.MEGOLM_ALGORITHM,\n room_id: roomId,\n sender_key: senderKey,\n sender_claimed_ed25519_key: key.sender_claimed_ed25519_key,\n session_id: sessionId,\n session_key: key.key,\n chain_index: key.chain_index,\n forwarding_curve25519_key_chain: key.forwarding_curve25519_key_chain\n }\n });\n\n case 4:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n return function (_x6, _x7, _x8) {\n return _ref6.apply(this, arguments);\n };\n}();\n\n/**\n * @inheritdoc\n *\n * @param {module:crypto/OlmDevice.MegolmSessionData} session\n */\nMegolmDecryption.prototype.importRoomKey = function (session) {\n var _this4 = this;\n\n return this._olmDevice.addInboundGroupSession(session.room_id, session.sender_key, session.forwarding_curve25519_key_chain, session.session_id, session.session_key, session.sender_claimed_keys, true).then(function () {\n // have another go at decrypting events sent with this session.\n _this4._retryDecryption(session.sender_key, session.session_id);\n });\n};\n\n/**\n * Have another go at decrypting events after we receive a key\n *\n * @private\n * @param {String} senderKey\n * @param {String} sessionId\n */\nMegolmDecryption.prototype._retryDecryption = function (senderKey, sessionId) {\n var k = senderKey + \"|\" + sessionId;\n var pending = this._pendingEvents[k];\n if (!pending) {\n return;\n }\n\n delete this._pendingEvents[k];\n\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)(pending), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var ev = _step4.value;\n\n ev.attemptDecryption(this._crypto);\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n};\n\nbase.registerAlgorithm(olmlib.MEGOLM_ALGORITHM, MegolmEncryption, MegolmDecryption);\n//# sourceMappingURL=megolm.js.map","/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module crypto/DeviceList\n *\n * Manages the list of other users' devices\n */\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _updateStoredDeviceKeysForUser = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(_olmDevice, userId, userStore, userResult) {\n var updated, deviceId, _deviceId, deviceResult;\n\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n updated = false;\n\n // remove any devices in the store which aren't in the response\n\n _context3.t0 = _regenerator2.default.keys(userStore);\n\n case 2:\n if ((_context3.t1 = _context3.t0()).done) {\n _context3.next = 9;\n break;\n }\n\n deviceId = _context3.t1.value;\n\n if (userStore.hasOwnProperty(deviceId)) {\n _context3.next = 6;\n break;\n }\n\n return _context3.abrupt('continue', 2);\n\n case 6:\n\n if (!(deviceId in userResult)) {\n console.log(\"Device \" + userId + \":\" + deviceId + \" has been removed\");\n delete userStore[deviceId];\n updated = true;\n }\n _context3.next = 2;\n break;\n\n case 9:\n _context3.t2 = _regenerator2.default.keys(userResult);\n\n case 10:\n if ((_context3.t3 = _context3.t2()).done) {\n _context3.next = 27;\n break;\n }\n\n _deviceId = _context3.t3.value;\n\n if (userResult.hasOwnProperty(_deviceId)) {\n _context3.next = 14;\n break;\n }\n\n return _context3.abrupt('continue', 10);\n\n case 14:\n deviceResult = userResult[_deviceId];\n\n // check that the user_id and device_id in the response object are\n // correct\n\n if (!(deviceResult.user_id !== userId)) {\n _context3.next = 18;\n break;\n }\n\n console.warn(\"Mismatched user_id \" + deviceResult.user_id + \" in keys from \" + userId + \":\" + _deviceId);\n return _context3.abrupt('continue', 10);\n\n case 18:\n if (!(deviceResult.device_id !== _deviceId)) {\n _context3.next = 21;\n break;\n }\n\n console.warn(\"Mismatched device_id \" + deviceResult.device_id + \" in keys from \" + userId + \":\" + _deviceId);\n return _context3.abrupt('continue', 10);\n\n case 21:\n _context3.next = 23;\n return (0, _bluebird.resolve)(_storeDeviceKeys(_olmDevice, userStore, deviceResult));\n\n case 23:\n if (!_context3.sent) {\n _context3.next = 25;\n break;\n }\n\n updated = true;\n\n case 25:\n _context3.next = 10;\n break;\n\n case 27:\n return _context3.abrupt('return', updated);\n\n case 28:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function _updateStoredDeviceKeysForUser(_x4, _x5, _x6, _x7) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/*\n * Process a device in a /query response, and add it to the userStore\n *\n * returns (a promise for) true if a change was made, else false\n */\n\n\nvar _storeDeviceKeys = function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(_olmDevice, userStore, deviceResult) {\n var deviceId, userId, signKeyId, signKey, unsigned, deviceStore;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (deviceResult.keys) {\n _context4.next = 2;\n break;\n }\n\n return _context4.abrupt('return', false);\n\n case 2:\n deviceId = deviceResult.device_id;\n userId = deviceResult.user_id;\n signKeyId = \"ed25519:\" + deviceId;\n signKey = deviceResult.keys[signKeyId];\n\n if (signKey) {\n _context4.next = 9;\n break;\n }\n\n console.warn(\"Device \" + userId + \":\" + deviceId + \" has no ed25519 key\");\n return _context4.abrupt('return', false);\n\n case 9:\n unsigned = deviceResult.unsigned || {};\n _context4.prev = 10;\n _context4.next = 13;\n return (0, _bluebird.resolve)(_olmlib2.default.verifySignature(_olmDevice, deviceResult, userId, deviceId, signKey));\n\n case 13:\n _context4.next = 19;\n break;\n\n case 15:\n _context4.prev = 15;\n _context4.t0 = _context4['catch'](10);\n\n console.warn(\"Unable to verify signature on device \" + userId + \":\" + deviceId + \":\" + _context4.t0);\n return _context4.abrupt('return', false);\n\n case 19:\n\n // DeviceInfo\n deviceStore = void 0;\n\n if (!(deviceId in userStore)) {\n _context4.next = 27;\n break;\n }\n\n // already have this device.\n deviceStore = userStore[deviceId];\n\n if (!(deviceStore.getFingerprint() != signKey)) {\n _context4.next = 25;\n break;\n }\n\n // this should only happen if the list has been MITMed; we are\n // best off sticking with the original keys.\n //\n // Should we warn the user about it somehow?\n console.warn(\"Ed25519 key for device \" + userId + \":\" + deviceId + \" has changed\");\n return _context4.abrupt('return', false);\n\n case 25:\n _context4.next = 28;\n break;\n\n case 27:\n userStore[deviceId] = deviceStore = new _deviceinfo2.default(deviceId);\n\n case 28:\n\n deviceStore.keys = deviceResult.keys || {};\n deviceStore.algorithms = deviceResult.algorithms || [];\n deviceStore.unsigned = unsigned;\n return _context4.abrupt('return', true);\n\n case 32:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this, [[10, 15]]);\n }));\n\n return function _storeDeviceKeys(_x8, _x9, _x10) {\n return _ref5.apply(this, arguments);\n };\n}();\n\nvar _deviceinfo = require('./deviceinfo');\n\nvar _deviceinfo2 = _interopRequireDefault(_deviceinfo);\n\nvar _olmlib = require('./olmlib');\n\nvar _olmlib2 = _interopRequireDefault(_olmlib);\n\nvar _indexeddbCryptoStore = require('./store/indexeddb-crypto-store');\n\nvar _indexeddbCryptoStore2 = _interopRequireDefault(_indexeddbCryptoStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* State transition diagram for DeviceList._deviceTrackingStatus\n *\n * |\n * stopTrackingDeviceList V\n * +---------------------> NOT_TRACKED\n * | |\n * +<--------------------+ | startTrackingDeviceList\n * | | V\n * | +-------------> PENDING_DOWNLOAD <--------------------+-+\n * | | ^ | | |\n * | | restart download | | start download | | invalidateUserDeviceList\n * | | client failed | | | |\n * | | | V | |\n * | +------------ DOWNLOAD_IN_PROGRESS -------------------+ |\n * | | | |\n * +<-------------------+ | download successful |\n * ^ V |\n * +----------------------- UP_TO_DATE ------------------------+\n */\n\n// constants for DeviceList._deviceTrackingStatus\nvar TRACKING_STATUS_NOT_TRACKED = 0;\nvar TRACKING_STATUS_PENDING_DOWNLOAD = 1;\nvar TRACKING_STATUS_DOWNLOAD_IN_PROGRESS = 2;\nvar TRACKING_STATUS_UP_TO_DATE = 3;\n\n/**\n * @alias module:crypto/DeviceList\n */\n\nvar DeviceList = function () {\n function DeviceList(baseApis, cryptoStore, sessionStore, olmDevice) {\n (0, _classCallCheck3.default)(this, DeviceList);\n\n this._cryptoStore = cryptoStore;\n this._sessionStore = sessionStore;\n\n // userId -> {\n // deviceId -> {\n // [device info]\n // }\n // }\n this._devices = {};\n\n // which users we are tracking device status for.\n // userId -> TRACKING_STATUS_*\n this._deviceTrackingStatus = {}; // loaded from storage in load()\n\n // The 'next_batch' sync token at the point the data was writen,\n // ie. a token representing the point immediately after the\n // moment represented by the snapshot in the db.\n this._syncToken = null;\n\n this._serialiser = new DeviceListUpdateSerialiser(baseApis, olmDevice, this);\n\n // userId -> promise\n this._keyDownloadsInProgressByUser = {};\n\n // Set whenever changes are made other than setting the sync token\n this._dirty = false;\n\n // Promise resolved when device data is saved\n this._savePromise = null;\n // Function that resolves the save promise\n this._resolveSavePromise = null;\n // The time the save is scheduled for\n this._savePromiseTime = null;\n // The timer used to delay the save\n this._saveTimer = null;\n }\n\n /**\n * Load the device tracking state from storage\n */\n\n\n (0, _createClass3.default)(DeviceList, [{\n key: 'load',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this = this;\n\n var shouldDeleteSessionStore, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, u;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n shouldDeleteSessionStore = false;\n _context.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn(\n // migrate from session store if there's data there and not here\n 'readwrite', [_indexeddbCryptoStore2.default.STORE_DEVICE_DATA], function (txn) {\n _this._cryptoStore.getEndToEndDeviceData(txn, function (deviceData) {\n if (deviceData === null) {\n console.log(\"Migrating e2e device data...\");\n _this._devices = _this._sessionStore.getAllEndToEndDevices() || {};\n _this._deviceTrackingStatus = _this._sessionStore.getEndToEndDeviceTrackingStatus() || {};\n _this._syncToken = _this._sessionStore.getEndToEndDeviceSyncToken();\n _this._cryptoStore.storeEndToEndDeviceData({\n devices: _this._devices,\n trackingStatus: _this._deviceTrackingStatus,\n syncToken: _this._syncToken\n }, txn);\n shouldDeleteSessionStore = true;\n } else {\n _this._devices = deviceData ? deviceData.devices : {}, _this._deviceTrackingStatus = deviceData ? deviceData.trackingStatus : {};\n _this._syncToken = deviceData ? deviceData.syncToken : null;\n }\n });\n }));\n\n case 3:\n\n if (shouldDeleteSessionStore) {\n // migrated data is now safely persisted: remove from old store\n this._sessionStore.removeEndToEndDeviceData();\n }\n\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 7;\n for (_iterator = (0, _getIterator3.default)((0, _keys2.default)(this._deviceTrackingStatus)); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n u = _step.value;\n\n // if a download was in progress when we got shut down, it isn't any more.\n if (this._deviceTrackingStatus[u] == TRACKING_STATUS_DOWNLOAD_IN_PROGRESS) {\n this._deviceTrackingStatus[u] = TRACKING_STATUS_PENDING_DOWNLOAD;\n }\n }\n _context.next = 15;\n break;\n\n case 11:\n _context.prev = 11;\n _context.t0 = _context['catch'](7);\n _didIteratorError = true;\n _iteratorError = _context.t0;\n\n case 15:\n _context.prev = 15;\n _context.prev = 16;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 18:\n _context.prev = 18;\n\n if (!_didIteratorError) {\n _context.next = 21;\n break;\n }\n\n throw _iteratorError;\n\n case 21:\n return _context.finish(18);\n\n case 22:\n return _context.finish(15);\n\n case 23:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[7, 11, 15, 23], [16,, 18, 22]]);\n }));\n\n function load() {\n return _ref.apply(this, arguments);\n }\n\n return load;\n }()\n\n /**\n * Save the device tracking state to storage, if any changes are\n * pending other than updating the sync token\n *\n * The actual save will be delayed by a short amount of time to\n * aggregate multiple writes to the database.\n *\n * @param {integer} delay Time in ms before which the save actually happens.\n * By default, the save is delayed for a short period in order to batch\n * multiple writes, but this behaviour can be disabled by passing 0.\n *\n * @return {Promise<bool>} true if the data was saved, false if\n * it was not (eg. because no changes were pending). The promise\n * will only resolve once the data is saved, so may take some time\n * to resolve.\n */\n\n }, {\n key: 'saveIfDirty',\n value: function () {\n var _ref2 = (0, _bluebird.method)(function (delay) {\n var _this2 = this;\n\n if (!this._dirty) return _bluebird2.default.resolve(false);\n // Delay saves for a bit so we can aggregate multiple saves that happen\n // in quick succession (eg. when a whole room's devices are marked as known)\n if (delay === undefined) delay = 500;\n\n var targetTime = Date.now + delay;\n if (this._savePromiseTime && targetTime < this._savePromiseTime) {\n // There's a save scheduled but for after we would like: cancel\n // it & schedule one for the time we want\n clearTimeout(this._saveTimer);\n this._saveTimer = null;\n this._savePromiseTime = null;\n // (but keep the save promise since whatever called save before\n // will still want to know when the save is done)\n }\n\n var savePromise = this._savePromise;\n if (savePromise === null) {\n savePromise = new _bluebird2.default(function (resolve, reject) {\n _this2._resolveSavePromise = resolve;\n });\n this._savePromise = savePromise;\n }\n\n if (this._saveTimer === null) {\n var resolveSavePromise = this._resolveSavePromise;\n this._savePromiseTime = targetTime;\n this._saveTimer = setTimeout(function () {\n console.log('Saving device tracking data at token ' + _this2._syncToken);\n // null out savePromise now (after the delay but before the write),\n // otherwise we could return the existing promise when the save has\n // actually already happened. Likewise for the dirty flag.\n _this2._savePromiseTime = null;\n _this2._saveTimer = null;\n _this2._savePromise = null;\n _this2._resolveSavePromise = null;\n\n _this2._dirty = false;\n _this2._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_DEVICE_DATA], function (txn) {\n _this2._cryptoStore.storeEndToEndDeviceData({\n devices: _this2._devices,\n trackingStatus: _this2._deviceTrackingStatus,\n syncToken: _this2._syncToken\n }, txn);\n }).then(function () {\n resolveSavePromise();\n });\n }, delay);\n }\n return savePromise;\n });\n\n function saveIfDirty(_x) {\n return _ref2.apply(this, arguments);\n }\n\n return saveIfDirty;\n }()\n\n /**\n * Gets the sync token last set with setSyncToken\n *\n * @return {string} The sync token\n */\n\n }, {\n key: 'getSyncToken',\n value: function getSyncToken() {\n return this._syncToken;\n }\n\n /**\n * Sets the sync token that the app will pass as the 'since' to the /sync\n * endpoint next time it syncs.\n * The sync token must always be set after any changes made as a result of\n * data in that sync since setting the sync token to a newer one will mean\n * those changed will not be synced from the server if a new client starts\n * up with that data.\n *\n * @param {string} st The sync token\n */\n\n }, {\n key: 'setSyncToken',\n value: function setSyncToken(st) {\n this._syncToken = st;\n }\n\n /**\n * Ensures up to date keys for a list of users are stored in the session store,\n * downloading and storing them if they're not (or if forceDownload is\n * true).\n * @param {Array} userIds The users to fetch.\n * @param {bool} forceDownload Always download the keys even if cached.\n *\n * @return {Promise} A promise which resolves to a map userId->deviceId->{@link\n * module:crypto/deviceinfo|DeviceInfo}.\n */\n\n }, {\n key: 'downloadKeys',\n value: function downloadKeys(userIds, forceDownload) {\n var _this3 = this;\n\n var usersToDownload = [];\n var promises = [];\n\n userIds.forEach(function (u) {\n var trackingStatus = _this3._deviceTrackingStatus[u];\n if (_this3._keyDownloadsInProgressByUser[u]) {\n // already a key download in progress/queued for this user; its results\n // will be good enough for us.\n console.log('downloadKeys: already have a download in progress for ' + (u + ': awaiting its result'));\n promises.push(_this3._keyDownloadsInProgressByUser[u]);\n } else if (forceDownload || trackingStatus != TRACKING_STATUS_UP_TO_DATE) {\n usersToDownload.push(u);\n }\n });\n\n if (usersToDownload.length != 0) {\n console.log(\"downloadKeys: downloading for\", usersToDownload);\n var downloadPromise = this._doKeyDownload(usersToDownload);\n promises.push(downloadPromise);\n }\n\n if (promises.length === 0) {\n console.log(\"downloadKeys: already have all necessary keys\");\n }\n\n return _bluebird2.default.all(promises).then(function () {\n return _this3._getDevicesFromStore(userIds);\n });\n }\n\n /**\n * Get the stored device keys for a list of user ids\n *\n * @param {string[]} userIds the list of users to list keys for.\n *\n * @return {Object} userId->deviceId->{@link module:crypto/deviceinfo|DeviceInfo}.\n */\n\n }, {\n key: '_getDevicesFromStore',\n value: function _getDevicesFromStore(userIds) {\n var stored = {};\n var self = this;\n userIds.map(function (u) {\n stored[u] = {};\n var devices = self.getStoredDevicesForUser(u) || [];\n devices.map(function (dev) {\n stored[u][dev.deviceId] = dev;\n });\n });\n return stored;\n }\n\n /**\n * Get the stored device keys for a user id\n *\n * @param {string} userId the user to list keys for.\n *\n * @return {module:crypto/deviceinfo[]|null} list of devices, or null if we haven't\n * managed to get a list of devices for this user yet.\n */\n\n }, {\n key: 'getStoredDevicesForUser',\n value: function getStoredDevicesForUser(userId) {\n var devs = this._devices[userId];\n if (!devs) {\n return null;\n }\n var res = [];\n for (var deviceId in devs) {\n if (devs.hasOwnProperty(deviceId)) {\n res.push(_deviceinfo2.default.fromStorage(devs[deviceId], deviceId));\n }\n }\n return res;\n }\n\n /**\n * Get the stored device data for a user, in raw object form\n *\n * @param {string} userId the user to get data for\n *\n * @return {Object} deviceId->{object} devices, or undefined if\n * there is no data for this user.\n */\n\n }, {\n key: 'getRawStoredDevicesForUser',\n value: function getRawStoredDevicesForUser(userId) {\n return this._devices[userId];\n }\n\n /**\n * Get the stored keys for a single device\n *\n * @param {string} userId\n * @param {string} deviceId\n *\n * @return {module:crypto/deviceinfo?} device, or undefined\n * if we don't know about this device\n */\n\n }, {\n key: 'getStoredDevice',\n value: function getStoredDevice(userId, deviceId) {\n var devs = this._devices[userId];\n if (!devs || !devs[deviceId]) {\n return undefined;\n }\n return _deviceinfo2.default.fromStorage(devs[deviceId], deviceId);\n }\n\n /**\n * Find a device by curve25519 identity key\n *\n * @param {string} userId owner of the device\n * @param {string} algorithm encryption algorithm\n * @param {string} senderKey curve25519 key to match\n *\n * @return {module:crypto/deviceinfo?}\n */\n\n }, {\n key: 'getDeviceByIdentityKey',\n value: function getDeviceByIdentityKey(userId, algorithm, senderKey) {\n if (algorithm !== _olmlib2.default.OLM_ALGORITHM && algorithm !== _olmlib2.default.MEGOLM_ALGORITHM) {\n // we only deal in olm keys\n return null;\n }\n\n var devices = this._devices[userId];\n if (!devices) {\n return null;\n }\n\n for (var deviceId in devices) {\n if (!devices.hasOwnProperty(deviceId)) {\n continue;\n }\n\n var device = devices[deviceId];\n for (var keyId in device.keys) {\n if (!device.keys.hasOwnProperty(keyId)) {\n continue;\n }\n if (keyId.indexOf(\"curve25519:\") !== 0) {\n continue;\n }\n var deviceKey = device.keys[keyId];\n if (deviceKey == senderKey) {\n return _deviceinfo2.default.fromStorage(device, deviceId);\n }\n }\n }\n\n // doesn't match a known device\n return null;\n }\n\n /**\n * Replaces the list of devices for a user with the given device list\n *\n * @param {string} u The user ID\n * @param {Object} devs New device info for user\n */\n\n }, {\n key: 'storeDevicesForUser',\n value: function storeDevicesForUser(u, devs) {\n this._devices[u] = devs;\n this._dirty = true;\n }\n\n /**\n * flag the given user for device-list tracking, if they are not already.\n *\n * This will mean that a subsequent call to refreshOutdatedDeviceLists()\n * will download the device list for the user, and that subsequent calls to\n * invalidateUserDeviceList will trigger more updates.\n *\n * @param {String} userId\n */\n\n }, {\n key: 'startTrackingDeviceList',\n value: function startTrackingDeviceList(userId) {\n // sanity-check the userId. This is mostly paranoia, but if synapse\n // can't parse the userId we give it as an mxid, it 500s the whole\n // request and we can never update the device lists again (because\n // the broken userId is always 'invalid' and always included in any\n // refresh request).\n // By checking it is at least a string, we can eliminate a class of\n // silly errors.\n if (typeof userId !== 'string') {\n throw new Error('userId must be a string; was ' + userId);\n }\n if (!this._deviceTrackingStatus[userId]) {\n console.log('Now tracking device list for ' + userId);\n this._deviceTrackingStatus[userId] = TRACKING_STATUS_PENDING_DOWNLOAD;\n }\n // we don't yet persist the tracking status, since there may be a lot\n // of calls; we save all data together once the sync is done\n this._dirty = true;\n }\n\n /**\n * Mark the given user as no longer being tracked for device-list updates.\n *\n * This won't affect any in-progress downloads, which will still go on to\n * complete; it will just mean that we don't think that we have an up-to-date\n * list for future calls to downloadKeys.\n *\n * @param {String} userId\n */\n\n }, {\n key: 'stopTrackingDeviceList',\n value: function stopTrackingDeviceList(userId) {\n if (this._deviceTrackingStatus[userId]) {\n console.log('No longer tracking device list for ' + userId);\n this._deviceTrackingStatus[userId] = TRACKING_STATUS_NOT_TRACKED;\n\n // we don't yet persist the tracking status, since there may be a lot\n // of calls; we save all data together once the sync is done\n this._dirty = true;\n }\n }\n\n /**\n * Set all users we're currently tracking to untracked\n *\n * This will flag each user whose devices we are tracking as in need of an\n * update.\n */\n\n }, {\n key: 'stopTrackingAllDeviceLists',\n value: function stopTrackingAllDeviceLists() {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(this._deviceTrackingStatus)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var userId = _step2.value;\n\n this._deviceTrackingStatus[userId] = TRACKING_STATUS_NOT_TRACKED;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n this._dirty = true;\n }\n\n /**\n * Mark the cached device list for the given user outdated.\n *\n * If we are not tracking this user's devices, we'll do nothing. Otherwise\n * we flag the user as needing an update.\n *\n * This doesn't actually set off an update, so that several users can be\n * batched together. Call refreshOutdatedDeviceLists() for that.\n *\n * @param {String} userId\n */\n\n }, {\n key: 'invalidateUserDeviceList',\n value: function invalidateUserDeviceList(userId) {\n if (this._deviceTrackingStatus[userId]) {\n console.log(\"Marking device list outdated for\", userId);\n this._deviceTrackingStatus[userId] = TRACKING_STATUS_PENDING_DOWNLOAD;\n\n // we don't yet persist the tracking status, since there may be a lot\n // of calls; we save all data together once the sync is done\n this._dirty = true;\n }\n }\n\n /**\n * If we have users who have outdated device lists, start key downloads for them\n *\n * @returns {Promise} which completes when the download completes; normally there\n * is no need to wait for this (it's mostly for the unit tests).\n */\n\n }, {\n key: 'refreshOutdatedDeviceLists',\n value: function refreshOutdatedDeviceLists() {\n this.saveIfDirty();\n\n var usersToDownload = [];\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)((0, _keys2.default)(this._deviceTrackingStatus)), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var userId = _step3.value;\n\n var stat = this._deviceTrackingStatus[userId];\n if (stat == TRACKING_STATUS_PENDING_DOWNLOAD) {\n usersToDownload.push(userId);\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n return this._doKeyDownload(usersToDownload);\n }\n\n /**\n * Set the stored device data for a user, in raw object form\n * Used only by internal class DeviceListUpdateSerialiser\n *\n * @param {string} userId the user to get data for\n *\n * @param {Object} devices deviceId->{object} the new devices\n */\n\n }, {\n key: '_setRawStoredDevicesForUser',\n value: function _setRawStoredDevicesForUser(userId, devices) {\n this._devices[userId] = devices;\n }\n\n /**\n * Fire off download update requests for the given users, and update the\n * device list tracking status for them, and the\n * _keyDownloadsInProgressByUser map for them.\n *\n * @param {String[]} users list of userIds\n *\n * @return {module:client.Promise} resolves when all the users listed have\n * been updated. rejects if there was a problem updating any of the\n * users.\n */\n\n }, {\n key: '_doKeyDownload',\n value: function _doKeyDownload(users) {\n var _this4 = this;\n\n if (users.length === 0) {\n // nothing to do\n return _bluebird2.default.resolve();\n }\n\n var prom = this._serialiser.updateDevicesForUsers(users, this._syncToken).then(function () {\n finished(true);\n }, function (e) {\n console.error('Error downloading keys for ' + users + \":\", e);\n finished(false);\n throw e;\n });\n\n users.forEach(function (u) {\n _this4._keyDownloadsInProgressByUser[u] = prom;\n var stat = _this4._deviceTrackingStatus[u];\n if (stat == TRACKING_STATUS_PENDING_DOWNLOAD) {\n _this4._deviceTrackingStatus[u] = TRACKING_STATUS_DOWNLOAD_IN_PROGRESS;\n }\n });\n\n var finished = function finished(success) {\n users.forEach(function (u) {\n _this4._dirty = true;\n\n // we may have queued up another download request for this user\n // since we started this request. If that happens, we should\n // ignore the completion of the first one.\n if (_this4._keyDownloadsInProgressByUser[u] !== prom) {\n console.log('Another update in the queue for', u, '- not marking up-to-date');\n return;\n }\n delete _this4._keyDownloadsInProgressByUser[u];\n var stat = _this4._deviceTrackingStatus[u];\n if (stat == TRACKING_STATUS_DOWNLOAD_IN_PROGRESS) {\n if (success) {\n // we didn't get any new invalidations since this download started:\n // this user's device list is now up to date.\n _this4._deviceTrackingStatus[u] = TRACKING_STATUS_UP_TO_DATE;\n console.log(\"Device list for\", u, \"now up to date\");\n } else {\n _this4._deviceTrackingStatus[u] = TRACKING_STATUS_PENDING_DOWNLOAD;\n }\n }\n });\n _this4.saveIfDirty();\n };\n\n return prom;\n }\n }]);\n return DeviceList;\n}();\n\n/**\n * Serialises updates to device lists\n *\n * Ensures that results from /keys/query are not overwritten if a second call\n * completes *before* an earlier one.\n *\n * It currently does this by ensuring only one call to /keys/query happens at a\n * time (and queuing other requests up).\n */\n\n\nexports.default = DeviceList;\n\nvar DeviceListUpdateSerialiser = function () {\n /*\n * @param {object} baseApis Base API object\n * @param {object} olmDevice The Olm Device\n * @param {object} deviceList The device list object\n */\n function DeviceListUpdateSerialiser(baseApis, olmDevice, deviceList) {\n (0, _classCallCheck3.default)(this, DeviceListUpdateSerialiser);\n\n this._baseApis = baseApis;\n this._olmDevice = olmDevice;\n this._deviceList = deviceList; // the device list to be updated\n\n this._downloadInProgress = false;\n\n // users which are queued for download\n // userId -> true\n this._keyDownloadsQueuedByUser = {};\n\n // deferred which is resolved when the queued users are downloaded.\n //\n // non-null indicates that we have users queued for download.\n this._queuedQueryDeferred = null;\n\n this._syncToken = null; // The sync token we send with the requests\n }\n\n /**\n * Make a key query request for the given users\n *\n * @param {String[]} users list of user ids\n *\n * @param {String} syncToken sync token to pass in the query request, to\n * help the HS give the most recent results\n *\n * @return {module:client.Promise} resolves when all the users listed have\n * been updated. rejects if there was a problem updating any of the\n * users.\n */\n\n\n (0, _createClass3.default)(DeviceListUpdateSerialiser, [{\n key: 'updateDevicesForUsers',\n value: function updateDevicesForUsers(users, syncToken) {\n var _this5 = this;\n\n users.forEach(function (u) {\n _this5._keyDownloadsQueuedByUser[u] = true;\n });\n\n if (!this._queuedQueryDeferred) {\n this._queuedQueryDeferred = _bluebird2.default.defer();\n }\n\n // We always take the new sync token and just use the latest one we've\n // been given, since it just needs to be at least as recent as the\n // sync response the device invalidation message arrived in\n this._syncToken = syncToken;\n\n if (this._downloadInProgress) {\n // just queue up these users\n console.log('Queued key download for', users);\n return this._queuedQueryDeferred.promise;\n }\n\n // start a new download.\n return this._doQueuedQueries();\n }\n }, {\n key: '_doQueuedQueries',\n value: function _doQueuedQueries() {\n var _this6 = this;\n\n if (this._downloadInProgress) {\n throw new Error(\"DeviceListUpdateSerialiser._doQueuedQueries called with request active\");\n }\n\n var downloadUsers = (0, _keys2.default)(this._keyDownloadsQueuedByUser);\n this._keyDownloadsQueuedByUser = {};\n var deferred = this._queuedQueryDeferred;\n this._queuedQueryDeferred = null;\n\n console.log('Starting key download for', downloadUsers);\n this._downloadInProgress = true;\n\n var opts = {};\n if (this._syncToken) {\n opts.token = this._syncToken;\n }\n\n this._baseApis.downloadKeysForUsers(downloadUsers, opts).then(function (res) {\n var dk = res.device_keys || {};\n\n // do each user in a separate promise, to avoid wedging the CPU\n // (https://github.com/vector-im/riot-web/issues/3158)\n //\n // of course we ought to do this in a web worker or similar, but\n // this serves as an easy solution for now.\n var prom = _bluebird2.default.resolve();\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n var _loop = function _loop() {\n var userId = _step4.value;\n\n prom = prom.delay(5).then(function () {\n return _this6._processQueryResponseForUser(userId, dk[userId]);\n });\n };\n\n for (var _iterator4 = (0, _getIterator3.default)(downloadUsers), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n _loop();\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n return prom;\n }).done(function () {\n console.log('Completed key download for ' + downloadUsers);\n\n _this6._downloadInProgress = false;\n deferred.resolve();\n\n // if we have queued users, fire off another request.\n if (_this6._queuedQueryDeferred) {\n _this6._doQueuedQueries();\n }\n }, function (e) {\n console.warn('Error downloading keys for ' + downloadUsers + ':', e);\n _this6._downloadInProgress = false;\n deferred.reject(e);\n });\n\n return deferred.promise;\n }\n }, {\n key: '_processQueryResponseForUser',\n value: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(userId, response) {\n var userStore, devs, storage;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n console.log('got keys for ' + userId + ':', response);\n\n // map from deviceid -> deviceinfo for this user\n userStore = {};\n devs = this._deviceList.getRawStoredDevicesForUser(userId);\n\n if (devs) {\n (0, _keys2.default)(devs).forEach(function (deviceId) {\n var d = _deviceinfo2.default.fromStorage(devs[deviceId], deviceId);\n userStore[deviceId] = d;\n });\n }\n\n _context2.next = 6;\n return (0, _bluebird.resolve)(_updateStoredDeviceKeysForUser(this._olmDevice, userId, userStore, response || {}));\n\n case 6:\n\n // put the updates into thr object that will be returned as our results\n storage = {};\n\n (0, _keys2.default)(userStore).forEach(function (deviceId) {\n storage[deviceId] = userStore[deviceId].toStorage();\n });\n\n this._deviceList._setRawStoredDevicesForUser(userId, storage);\n\n case 9:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function _processQueryResponseForUser(_x2, _x3) {\n return _ref3.apply(this, arguments);\n }\n\n return _processQueryResponseForUser;\n }()\n }]);\n return DeviceListUpdateSerialiser;\n}();\n//# sourceMappingURL=DeviceList.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * This is an internal module which manages queuing, scheduling and retrying\n * of requests.\n * @module scheduler\n */\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utils = require(\"./utils\");\n\n\nvar DEBUG = false; // set true to enable console logging.\n\n/**\n * Construct a scheduler for Matrix. Requires\n * {@link module:scheduler~MatrixScheduler#setProcessFunction} to be provided\n * with a way of processing events.\n * @constructor\n * @param {module:scheduler~retryAlgorithm} retryAlgorithm Optional. The retry\n * algorithm to apply when determining when to try to send an event again.\n * Defaults to {@link module:scheduler~MatrixScheduler.RETRY_BACKOFF_RATELIMIT}.\n * @param {module:scheduler~queueAlgorithm} queueAlgorithm Optional. The queuing\n * algorithm to apply when determining which events should be sent before the\n * given event. Defaults to {@link module:scheduler~MatrixScheduler.QUEUE_MESSAGES}.\n */\nfunction MatrixScheduler(retryAlgorithm, queueAlgorithm) {\n this.retryAlgorithm = retryAlgorithm || MatrixScheduler.RETRY_BACKOFF_RATELIMIT;\n this.queueAlgorithm = queueAlgorithm || MatrixScheduler.QUEUE_MESSAGES;\n this._queues = {\n // queueName: [{\n // event: MatrixEvent, // event to send\n // defer: Deferred, // defer to resolve/reject at the END of the retries\n // attempts: Number // number of times we've called processFn\n // }, ...]\n };\n this._activeQueues = [];\n this._procFn = null;\n}\n\n/**\n * Retrieve a queue based on an event. The event provided does not need to be in\n * the queue.\n * @param {MatrixEvent} event An event to get the queue for.\n * @return {?Array<MatrixEvent>} A shallow copy of events in the queue or null.\n * Modifying this array will not modify the list itself. Modifying events in\n * this array <i>will</i> modify the underlying event in the queue.\n * @see MatrixScheduler.removeEventFromQueue To remove an event from the queue.\n */\nMatrixScheduler.prototype.getQueueForEvent = function (event) {\n var name = this.queueAlgorithm(event);\n if (!name || !this._queues[name]) {\n return null;\n }\n return utils.map(this._queues[name], function (obj) {\n return obj.event;\n });\n};\n\n/**\n * Remove this event from the queue. The event is equal to another event if they\n * have the same ID returned from event.getId().\n * @param {MatrixEvent} event The event to remove.\n * @return {boolean} True if this event was removed.\n */\nMatrixScheduler.prototype.removeEventFromQueue = function (event) {\n var name = this.queueAlgorithm(event);\n if (!name || !this._queues[name]) {\n return false;\n }\n var removed = false;\n utils.removeElement(this._queues[name], function (element) {\n if (element.event.getId() === event.getId()) {\n // XXX we should probably reject the promise?\n // https://github.com/matrix-org/matrix-js-sdk/issues/496\n removed = true;\n return true;\n }\n });\n return removed;\n};\n\n/**\n * Set the process function. Required for events in the queue to be processed.\n * If set after events have been added to the queue, this will immediately start\n * processing them.\n * @param {module:scheduler~processFn} fn The function that can process events\n * in the queue.\n */\nMatrixScheduler.prototype.setProcessFunction = function (fn) {\n this._procFn = fn;\n _startProcessingQueues(this);\n};\n\n/**\n * Queue an event if it is required and start processing queues.\n * @param {MatrixEvent} event The event that may be queued.\n * @return {?Promise} A promise if the event was queued, which will be\n * resolved or rejected in due time, else null.\n */\nMatrixScheduler.prototype.queueEvent = function (event) {\n var queueName = this.queueAlgorithm(event);\n if (!queueName) {\n return null;\n }\n // add the event to the queue and make a deferred for it.\n if (!this._queues[queueName]) {\n this._queues[queueName] = [];\n }\n var defer = _bluebird2.default.defer();\n this._queues[queueName].push({\n event: event,\n defer: defer,\n attempts: 0\n });\n debuglog(\"Queue algorithm dumped event %s into queue '%s'\", event.getId(), queueName);\n _startProcessingQueues(this);\n return defer.promise;\n};\n\n/**\n * Retries events up to 4 times using exponential backoff. This produces wait\n * times of 2, 4, 8, and 16 seconds (30s total) after which we give up. If the\n * failure was due to a rate limited request, the time specified in the error is\n * waited before being retried.\n * @param {MatrixEvent} event\n * @param {Number} attempts\n * @param {MatrixError} err\n * @return {Number}\n * @see module:scheduler~retryAlgorithm\n */\nMatrixScheduler.RETRY_BACKOFF_RATELIMIT = function (event, attempts, err) {\n if (err.httpStatus === 400 || err.httpStatus === 403 || err.httpStatus === 401) {\n // client error; no amount of retrying with save you now.\n return -1;\n }\n // we ship with browser-request which returns { cors: rejected } when trying\n // with no connection, so if we match that, give up since they have no conn.\n if (err.cors === \"rejected\") {\n return -1;\n }\n\n if (err.name === \"M_LIMIT_EXCEEDED\") {\n var waitTime = err.data.retry_after_ms;\n if (waitTime) {\n return waitTime;\n }\n }\n if (attempts > 4) {\n return -1; // give up\n }\n return 1000 * Math.pow(2, attempts);\n};\n\n/**\n * Queues <code>m.room.message</code> events and lets other events continue\n * concurrently.\n * @param {MatrixEvent} event\n * @return {string}\n * @see module:scheduler~queueAlgorithm\n */\nMatrixScheduler.QUEUE_MESSAGES = function (event) {\n if (event.getType() === \"m.room.message\") {\n // put these events in the 'message' queue.\n return \"message\";\n }\n // allow all other events continue concurrently.\n return null;\n};\n\nfunction _startProcessingQueues(scheduler) {\n if (!scheduler._procFn) {\n return;\n }\n // for each inactive queue with events in them\n utils.forEach(utils.filter(utils.keys(scheduler._queues), function (queueName) {\n return scheduler._activeQueues.indexOf(queueName) === -1 && scheduler._queues[queueName].length > 0;\n }), function (queueName) {\n // mark the queue as active\n scheduler._activeQueues.push(queueName);\n // begin processing the head of the queue\n debuglog(\"Spinning up queue: '%s'\", queueName);\n _processQueue(scheduler, queueName);\n });\n}\n\nfunction _processQueue(scheduler, queueName) {\n // get head of queue\n var obj = _peekNextEvent(scheduler, queueName);\n if (!obj) {\n // queue is empty. Mark as inactive and stop recursing.\n var index = scheduler._activeQueues.indexOf(queueName);\n if (index >= 0) {\n scheduler._activeQueues.splice(index, 1);\n }\n debuglog(\"Stopping queue '%s' as it is now empty\", queueName);\n return;\n }\n debuglog(\"Queue '%s' has %s pending events\", queueName, scheduler._queues[queueName].length);\n // fire the process function and if it resolves, resolve the deferred. Else\n // invoke the retry algorithm.\n scheduler._procFn(obj.event).done(function (res) {\n // remove this from the queue\n _removeNextEvent(scheduler, queueName);\n debuglog(\"Queue '%s' sent event %s\", queueName, obj.event.getId());\n obj.defer.resolve(res);\n // keep processing\n _processQueue(scheduler, queueName);\n }, function (err) {\n obj.attempts += 1;\n // ask the retry algorithm when/if we should try again\n var waitTimeMs = scheduler.retryAlgorithm(obj.event, obj.attempts, err);\n debuglog(\"retry(%s) err=%s event_id=%s waitTime=%s\", obj.attempts, err, obj.event.getId(), waitTimeMs);\n if (waitTimeMs === -1) {\n // give up (you quitter!)\n debuglog(\"Queue '%s' giving up on event %s\", queueName, obj.event.getId());\n // remove this from the queue\n _removeNextEvent(scheduler, queueName);\n obj.defer.reject(err);\n // process next event\n _processQueue(scheduler, queueName);\n } else {\n setTimeout(function () {\n _processQueue(scheduler, queueName);\n }, waitTimeMs);\n }\n });\n}\n\nfunction _peekNextEvent(scheduler, queueName) {\n var queue = scheduler._queues[queueName];\n if (!utils.isArray(queue)) {\n return null;\n }\n return queue[0];\n}\n\nfunction _removeNextEvent(scheduler, queueName) {\n var queue = scheduler._queues[queueName];\n if (!utils.isArray(queue)) {\n return null;\n }\n return queue.shift();\n}\n\nfunction debuglog() {\n if (DEBUG) {\n var _console;\n\n (_console = console).log.apply(_console, arguments);\n }\n}\n\n/**\n * The retry algorithm to apply when retrying events. To stop retrying, return\n * <code>-1</code>. If this event was part of a queue, it will be removed from\n * the queue.\n * @callback retryAlgorithm\n * @param {MatrixEvent} event The event being retried.\n * @param {Number} attempts The number of failed attempts. This will always be\n * >= 1.\n * @param {MatrixError} err The most recent error message received when trying\n * to send this event.\n * @return {Number} The number of milliseconds to wait before trying again. If\n * this is 0, the request will be immediately retried. If this is\n * <code>-1</code>, the event will be marked as\n * {@link module:models/event.EventStatus.NOT_SENT} and will not be retried.\n */\n\n/**\n * The queuing algorithm to apply to events. This function must be idempotent as\n * it may be called multiple times with the same event. All queues created are\n * serviced in a FIFO manner. To send the event ASAP, return <code>null</code>\n * which will not put this event in a queue. Events that fail to send that form\n * part of a queue will be removed from the queue and the next event in the\n * queue will be sent.\n * @callback queueAlgorithm\n * @param {MatrixEvent} event The event to be sent.\n * @return {string} The name of the queue to put the event into. If a queue with\n * this name does not exist, it will be created. If this is <code>null</code>,\n * the event is not put into a queue and will be sent concurrently.\n */\n\n/**\n* The function to invoke to process (send) events in the queue.\n* @callback processFn\n* @param {MatrixEvent} event The event to send.\n* @return {Promise} Resolved/rejected depending on the outcome of the request.\n*/\n\n/**\n * The MatrixScheduler class.\n */\nmodule.exports = MatrixScheduler;\n//# sourceMappingURL=scheduler.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module store/session/webstorage\n */\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utils = require(\"../../utils\");\n\nvar DEBUG = false; // set true to enable console logging.\nvar E2E_PREFIX = \"session.e2e.\";\n\n/**\n * Construct a web storage session store, capable of storing account keys,\n * session keys and access tokens.\n * @constructor\n * @param {WebStorage} webStore A web storage implementation, e.g.\n * 'window.localStorage' or 'window.sessionStorage' or a custom implementation.\n * @throws if the supplied 'store' does not meet the Storage interface of the\n * WebStorage API.\n */\nfunction WebStorageSessionStore(webStore) {\n this.store = webStore;\n if (!utils.isFunction(webStore.getItem) || !utils.isFunction(webStore.setItem) || !utils.isFunction(webStore.removeItem) || !utils.isFunction(webStore.key) || typeof webStore.length !== 'number') {\n throw new Error(\"Supplied webStore does not meet the WebStorage API interface\");\n }\n}\n\nWebStorageSessionStore.prototype = {\n /**\n * Remove the stored end to end account for the logged-in user.\n */\n removeEndToEndAccount: function removeEndToEndAccount() {\n this.store.removeItem(KEY_END_TO_END_ACCOUNT);\n },\n\n /**\n * Load the end to end account for the logged-in user.\n * Note that the end-to-end account is now stored in the\n * crypto store rather than here: this remains here so\n * old sessions can be migrated out of the session store.\n * @return {?string} Base64 encoded account.\n */\n getEndToEndAccount: function getEndToEndAccount() {\n return this.store.getItem(KEY_END_TO_END_ACCOUNT);\n },\n\n /**\n * Retrieves the known devices for all users.\n * @return {object} A map from user ID to map of device ID to keys for the device.\n */\n getAllEndToEndDevices: function getAllEndToEndDevices() {\n var prefix = keyEndToEndDevicesForUser('');\n var devices = {};\n for (var i = 0; i < this.store.length; ++i) {\n var key = this.store.key(i);\n var userId = key.substr(prefix.length);\n if (key.startsWith(prefix)) devices[userId] = getJsonItem(this.store, key);\n }\n return devices;\n },\n\n getEndToEndDeviceTrackingStatus: function getEndToEndDeviceTrackingStatus() {\n return getJsonItem(this.store, KEY_END_TO_END_DEVICE_LIST_TRACKING_STATUS);\n },\n\n /**\n * Get the sync token corresponding to the device list.\n *\n * @return {String?} token\n */\n getEndToEndDeviceSyncToken: function getEndToEndDeviceSyncToken() {\n return getJsonItem(this.store, KEY_END_TO_END_DEVICE_SYNC_TOKEN);\n },\n\n /**\n * Removes all end to end device data from the store\n */\n removeEndToEndDeviceData: function removeEndToEndDeviceData() {\n removeByPrefix(this.store, keyEndToEndDevicesForUser(''));\n removeByPrefix(this.store, KEY_END_TO_END_DEVICE_LIST_TRACKING_STATUS);\n removeByPrefix(this.store, KEY_END_TO_END_DEVICE_SYNC_TOKEN);\n },\n\n /**\n * Retrieve the end-to-end sessions between the logged-in user and another\n * device.\n * @param {string} deviceKey The public key of the other device.\n * @return {object} A map from sessionId to Base64 end-to-end session.\n */\n getEndToEndSessions: function getEndToEndSessions(deviceKey) {\n return getJsonItem(this.store, keyEndToEndSessions(deviceKey));\n },\n\n /**\n * Retrieve all end-to-end sessions between the logged-in user and other\n * devices.\n * @return {object} A map of {deviceKey -> {sessionId -> session pickle}}\n */\n getAllEndToEndSessions: function getAllEndToEndSessions() {\n var deviceKeys = getKeysWithPrefix(this.store, keyEndToEndSessions(''));\n var results = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(deviceKeys), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var k = _step.value;\n\n var unprefixedKey = k.substr(keyEndToEndSessions('').length);\n results[unprefixedKey] = getJsonItem(this.store, k);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return results;\n },\n\n /**\n * Remove all end-to-end sessions from the store\n * This is used after migrating sessions awat from the sessions store.\n */\n removeAllEndToEndSessions: function removeAllEndToEndSessions() {\n removeByPrefix(this.store, keyEndToEndSessions(''));\n },\n\n /**\n * Retrieve a list of all known inbound group sessions\n *\n * @return {{senderKey: string, sessionId: string}}\n */\n getAllEndToEndInboundGroupSessionKeys: function getAllEndToEndInboundGroupSessionKeys() {\n var prefix = E2E_PREFIX + 'inboundgroupsessions/';\n var result = [];\n for (var i = 0; i < this.store.length; i++) {\n var key = this.store.key(i);\n if (!key.startsWith(prefix)) {\n continue;\n }\n // we can't use split, as the components we are trying to split out\n // might themselves contain '/' characters. We rely on the\n // senderKey being a (32-byte) curve25519 key, base64-encoded\n // (hence 43 characters long).\n\n result.push({\n senderKey: key.substr(prefix.length, 43),\n sessionId: key.substr(prefix.length + 44)\n });\n }\n return result;\n },\n\n getEndToEndInboundGroupSession: function getEndToEndInboundGroupSession(senderKey, sessionId) {\n var key = keyEndToEndInboundGroupSession(senderKey, sessionId);\n return this.store.getItem(key);\n },\n\n removeAllEndToEndInboundGroupSessions: function removeAllEndToEndInboundGroupSessions() {\n removeByPrefix(this.store, E2E_PREFIX + 'inboundgroupsessions/');\n },\n\n /**\n * Get the end-to-end state for all rooms\n * @return {object} roomId -> object with the end-to-end info for the room.\n */\n getAllEndToEndRooms: function getAllEndToEndRooms() {\n var roomKeys = getKeysWithPrefix(this.store, keyEndToEndRoom(''));\n var results = {};\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(roomKeys), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var k = _step2.value;\n\n var unprefixedKey = k.substr(keyEndToEndRoom('').length);\n results[unprefixedKey] = getJsonItem(this.store, k);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return results;\n },\n\n removeAllEndToEndRooms: function removeAllEndToEndRooms() {\n removeByPrefix(this.store, keyEndToEndRoom(''));\n }\n};\n\nvar KEY_END_TO_END_ACCOUNT = E2E_PREFIX + \"account\";\nvar KEY_END_TO_END_DEVICE_SYNC_TOKEN = E2E_PREFIX + \"device_sync_token\";\nvar KEY_END_TO_END_DEVICE_LIST_TRACKING_STATUS = E2E_PREFIX + \"device_tracking\";\n\nfunction keyEndToEndDevicesForUser(userId) {\n return E2E_PREFIX + \"devices/\" + userId;\n}\n\nfunction keyEndToEndSessions(deviceKey) {\n return E2E_PREFIX + \"sessions/\" + deviceKey;\n}\n\nfunction keyEndToEndInboundGroupSession(senderKey, sessionId) {\n return E2E_PREFIX + \"inboundgroupsessions/\" + senderKey + \"/\" + sessionId;\n}\n\nfunction keyEndToEndRoom(roomId) {\n return E2E_PREFIX + \"rooms/\" + roomId;\n}\n\nfunction getJsonItem(store, key) {\n try {\n // if the key is absent, store.getItem() returns null, and\n // JSON.parse(null) === null, so this returns null.\n return JSON.parse(store.getItem(key));\n } catch (e) {\n debuglog(\"Failed to get key %s: %s\", key, e);\n debuglog(e.stack);\n }\n return null;\n}\n\nfunction getKeysWithPrefix(store, prefix) {\n var results = [];\n for (var i = 0; i < store.length; ++i) {\n var key = store.key(i);\n if (key.startsWith(prefix)) results.push(key);\n }\n return results;\n}\n\nfunction removeByPrefix(store, prefix) {\n var toRemove = [];\n for (var i = 0; i < store.length; ++i) {\n var key = store.key(i);\n if (key.startsWith(prefix)) toRemove.push(key);\n }\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(toRemove), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _key = _step3.value;\n\n store.removeItem(_key);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n}\n\nfunction debuglog() {\n if (DEBUG) {\n var _console;\n\n (_console = console).log.apply(_console, arguments);\n }\n}\n\n/** */\nmodule.exports = WebStorageSessionStore;\n//# sourceMappingURL=webstorage.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/** @module timeline-window */\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EventTimeline = require(\"./models/event-timeline\");\n\n/**\n * @private\n */\nvar DEBUG = false;\n\n/**\n * @private\n */\nvar debuglog = DEBUG ? console.log.bind(console) : function () {};\n\n/**\n * the number of times we ask the server for more events before giving up\n *\n * @private\n */\nvar DEFAULT_PAGINATE_LOOP_LIMIT = 5;\n\n/**\n * Construct a TimelineWindow.\n *\n * <p>This abstracts the separate timelines in a Matrix {@link\n * module:models/room|Room} into a single iterable thing. It keeps track of\n * the start and endpoints of the window, which can be advanced with the help\n * of pagination requests.\n *\n * <p>Before the window is useful, it must be initialised by calling {@link\n * module:timeline-window~TimelineWindow#load|load}.\n *\n * <p>Note that the window will not automatically extend itself when new events\n * are received from /sync; you should arrange to call {@link\n * module:timeline-window~TimelineWindow#paginate|paginate} on {@link\n * module:client~MatrixClient.event:\"Room.timeline\"|Room.timeline} events.\n *\n * @param {MatrixClient} client MatrixClient to be used for context/pagination\n * requests.\n *\n * @param {EventTimelineSet} timelineSet The timelineSet to track\n *\n * @param {Object} [opts] Configuration options for this window\n *\n * @param {number} [opts.windowLimit = 1000] maximum number of events to keep\n * in the window. If more events are retrieved via pagination requests,\n * excess events will be dropped from the other end of the window.\n *\n * @constructor\n */\nfunction TimelineWindow(client, timelineSet, opts) {\n opts = opts || {};\n this._client = client;\n this._timelineSet = timelineSet;\n\n // these will be TimelineIndex objects; they delineate the 'start' and\n // 'end' of the window.\n //\n // _start.index is inclusive; _end.index is exclusive.\n this._start = null;\n this._end = null;\n\n this._eventCount = 0;\n this._windowLimit = opts.windowLimit || 1000;\n}\n\n/**\n * Initialise the window to point at a given event, or the live timeline\n *\n * @param {string} [initialEventId] If given, the window will contain the\n * given event\n * @param {number} [initialWindowSize = 20] Size of the initial window\n *\n * @return {module:client.Promise}\n */\nTimelineWindow.prototype.load = function (initialEventId, initialWindowSize) {\n var self = this;\n initialWindowSize = initialWindowSize || 20;\n\n // given an EventTimeline, find the event we were looking for, and initialise our\n // fields so that the event in question is in the middle of the window.\n var initFields = function initFields(timeline) {\n var eventIndex = void 0;\n\n var events = timeline.getEvents();\n\n if (!initialEventId) {\n // we were looking for the live timeline: initialise to the end\n eventIndex = events.length;\n } else {\n for (var i = 0; i < events.length; i++) {\n if (events[i].getId() == initialEventId) {\n eventIndex = i;\n break;\n }\n }\n\n if (eventIndex === undefined) {\n throw new Error(\"getEventTimeline result didn't include requested event\");\n }\n }\n\n var endIndex = Math.min(events.length, eventIndex + Math.ceil(initialWindowSize / 2));\n var startIndex = Math.max(0, endIndex - initialWindowSize);\n self._start = new TimelineIndex(timeline, startIndex - timeline.getBaseIndex());\n self._end = new TimelineIndex(timeline, endIndex - timeline.getBaseIndex());\n self._eventCount = endIndex - startIndex;\n };\n\n // We avoid delaying the resolution of the promise by a reactor tick if\n // we already have the data we need, which is important to keep room-switching\n // feeling snappy.\n //\n if (initialEventId) {\n var prom = this._client.getEventTimeline(this._timelineSet, initialEventId);\n\n if (prom.isFulfilled()) {\n initFields(prom.value());\n return _bluebird2.default.resolve();\n } else {\n return prom.then(initFields);\n }\n } else {\n var tl = this._timelineSet.getLiveTimeline();\n initFields(tl);\n return _bluebird2.default.resolve();\n }\n};\n\n/**\n * Check if this window can be extended\n *\n * <p>This returns true if we either have more events, or if we have a\n * pagination token which means we can paginate in that direction. It does not\n * necessarily mean that there are more events available in that direction at\n * this time.\n *\n * @param {string} direction EventTimeline.BACKWARDS to check if we can\n * paginate backwards; EventTimeline.FORWARDS to check if we can go forwards\n *\n * @return {boolean} true if we can paginate in the given direction\n */\nTimelineWindow.prototype.canPaginate = function (direction) {\n var tl = void 0;\n if (direction == EventTimeline.BACKWARDS) {\n tl = this._start;\n } else if (direction == EventTimeline.FORWARDS) {\n tl = this._end;\n } else {\n throw new Error(\"Invalid direction '\" + direction + \"'\");\n }\n\n if (!tl) {\n debuglog(\"TimelineWindow: no timeline yet\");\n return false;\n }\n\n if (direction == EventTimeline.BACKWARDS) {\n if (tl.index > tl.minIndex()) {\n return true;\n }\n } else {\n if (tl.index < tl.maxIndex()) {\n return true;\n }\n }\n\n return Boolean(tl.timeline.getNeighbouringTimeline(direction) || tl.timeline.getPaginationToken(direction));\n};\n\n/**\n * Attempt to extend the window\n *\n * @param {string} direction EventTimeline.BACKWARDS to extend the window\n * backwards (towards older events); EventTimeline.FORWARDS to go forwards.\n *\n * @param {number} size number of events to try to extend by. If fewer than this\n * number are immediately available, then we return immediately rather than\n * making an API call.\n *\n * @param {boolean} [makeRequest = true] whether we should make API calls to\n * fetch further events if we don't have any at all. (This has no effect if\n * the room already knows about additional events in the relevant direction,\n * even if there are fewer than 'size' of them, as we will just return those\n * we already know about.)\n *\n * @param {number} [requestLimit = 5] limit for the number of API requests we\n * should make.\n *\n * @return {module:client.Promise} Resolves to a boolean which is true if more events\n * were successfully retrieved.\n */\nTimelineWindow.prototype.paginate = function (direction, size, makeRequest, requestLimit) {\n // Either wind back the message cap (if there are enough events in the\n // timeline to do so), or fire off a pagination request.\n\n if (makeRequest === undefined) {\n makeRequest = true;\n }\n\n if (requestLimit === undefined) {\n requestLimit = DEFAULT_PAGINATE_LOOP_LIMIT;\n }\n\n var tl = void 0;\n if (direction == EventTimeline.BACKWARDS) {\n tl = this._start;\n } else if (direction == EventTimeline.FORWARDS) {\n tl = this._end;\n } else {\n throw new Error(\"Invalid direction '\" + direction + \"'\");\n }\n\n if (!tl) {\n debuglog(\"TimelineWindow: no timeline yet\");\n return _bluebird2.default.resolve(false);\n }\n\n if (tl.pendingPaginate) {\n return tl.pendingPaginate;\n }\n\n // try moving the cap\n var count = direction == EventTimeline.BACKWARDS ? tl.retreat(size) : tl.advance(size);\n\n if (count) {\n this._eventCount += count;\n debuglog(\"TimelineWindow: increased cap by \" + count + \" (now \" + this._eventCount + \")\");\n // remove some events from the other end, if necessary\n var excess = this._eventCount - this._windowLimit;\n if (excess > 0) {\n this.unpaginate(excess, direction != EventTimeline.BACKWARDS);\n }\n return _bluebird2.default.resolve(true);\n }\n\n if (!makeRequest || requestLimit === 0) {\n // todo: should we return something different to indicate that there\n // might be more events out there, but we haven't found them yet?\n return _bluebird2.default.resolve(false);\n }\n\n // try making a pagination request\n var token = tl.timeline.getPaginationToken(direction);\n if (!token) {\n debuglog(\"TimelineWindow: no token\");\n return _bluebird2.default.resolve(false);\n }\n\n debuglog(\"TimelineWindow: starting request\");\n var self = this;\n\n var prom = this._client.paginateEventTimeline(tl.timeline, {\n backwards: direction == EventTimeline.BACKWARDS,\n limit: size\n }).finally(function () {\n tl.pendingPaginate = null;\n }).then(function (r) {\n debuglog(\"TimelineWindow: request completed with result \" + r);\n if (!r) {\n // end of timeline\n return false;\n }\n\n // recurse to advance the index into the results.\n //\n // If we don't get any new events, we want to make sure we keep asking\n // the server for events for as long as we have a valid pagination\n // token. In particular, we want to know if we've actually hit the\n // start of the timeline, or if we just happened to know about all of\n // the events thanks to https://matrix.org/jira/browse/SYN-645.\n //\n // On the other hand, we necessarily want to wait forever for the\n // server to make its mind up about whether there are other events,\n // because it gives a bad user experience\n // (https://github.com/vector-im/vector-web/issues/1204).\n return self.paginate(direction, size, true, requestLimit - 1);\n });\n tl.pendingPaginate = prom;\n return prom;\n};\n\n/**\n * Remove `delta` events from the start or end of the timeline.\n *\n * @param {number} delta number of events to remove from the timeline\n * @param {boolean} startOfTimeline if events should be removed from the start\n * of the timeline.\n */\nTimelineWindow.prototype.unpaginate = function (delta, startOfTimeline) {\n var tl = startOfTimeline ? this._start : this._end;\n\n // sanity-check the delta\n if (delta > this._eventCount || delta < 0) {\n throw new Error(\"Attemting to unpaginate \" + delta + \" events, but \" + \"only have \" + this._eventCount + \" in the timeline\");\n }\n\n while (delta > 0) {\n var count = startOfTimeline ? tl.advance(delta) : tl.retreat(delta);\n if (count <= 0) {\n // sadness. This shouldn't be possible.\n throw new Error(\"Unable to unpaginate any further, but still have \" + this._eventCount + \" events\");\n }\n\n delta -= count;\n this._eventCount -= count;\n debuglog(\"TimelineWindow.unpaginate: dropped \" + count + \" (now \" + this._eventCount + \")\");\n }\n};\n\n/**\n * Get a list of the events currently in the window\n *\n * @return {MatrixEvent[]} the events in the window\n */\nTimelineWindow.prototype.getEvents = function () {\n if (!this._start) {\n // not yet loaded\n return [];\n }\n\n var result = [];\n\n // iterate through each timeline between this._start and this._end\n // (inclusive).\n var timeline = this._start.timeline;\n while (true) {\n var events = timeline.getEvents();\n\n // For the first timeline in the chain, we want to start at\n // this._start.index. For the last timeline in the chain, we want to\n // stop before this._end.index. Otherwise, we want to copy all of the\n // events in the timeline.\n //\n // (Note that both this._start.index and this._end.index are relative\n // to their respective timelines' BaseIndex).\n //\n var startIndex = 0,\n endIndex = events.length;\n if (timeline === this._start.timeline) {\n startIndex = this._start.index + timeline.getBaseIndex();\n }\n if (timeline === this._end.timeline) {\n endIndex = this._end.index + timeline.getBaseIndex();\n }\n\n for (var i = startIndex; i < endIndex; i++) {\n result.push(events[i]);\n }\n\n // if we're not done, iterate to the next timeline.\n if (timeline === this._end.timeline) {\n break;\n } else {\n timeline = timeline.getNeighbouringTimeline(EventTimeline.FORWARDS);\n }\n }\n\n return result;\n};\n\n/**\n * a thing which contains a timeline reference, and an index into it.\n *\n * @constructor\n * @param {EventTimeline} timeline\n * @param {number} index\n * @private\n */\nfunction TimelineIndex(timeline, index) {\n this.timeline = timeline;\n\n // the indexes are relative to BaseIndex, so could well be negative.\n this.index = index;\n}\n\n/**\n * @return {number} the minimum possible value for the index in the current\n * timeline\n */\nTimelineIndex.prototype.minIndex = function () {\n return this.timeline.getBaseIndex() * -1;\n};\n\n/**\n * @return {number} the maximum possible value for the index in the current\n * timeline (exclusive - ie, it actually returns one more than the index\n * of the last element).\n */\nTimelineIndex.prototype.maxIndex = function () {\n return this.timeline.getEvents().length - this.timeline.getBaseIndex();\n};\n\n/**\n * Try move the index forward, or into the neighbouring timeline\n *\n * @param {number} delta number of events to advance by\n * @return {number} number of events successfully advanced by\n */\nTimelineIndex.prototype.advance = function (delta) {\n if (!delta) {\n return 0;\n }\n\n // first try moving the index in the current timeline. See if there is room\n // to do so.\n var cappedDelta = void 0;\n if (delta < 0) {\n // we want to wind the index backwards.\n //\n // (this.minIndex() - this.index) is a negative number whose magnitude\n // is the amount of room we have to wind back the index in the current\n // timeline. We cap delta to this quantity.\n cappedDelta = Math.max(delta, this.minIndex() - this.index);\n if (cappedDelta < 0) {\n this.index += cappedDelta;\n return cappedDelta;\n }\n } else {\n // we want to wind the index forwards.\n //\n // (this.maxIndex() - this.index) is a (positive) number whose magnitude\n // is the amount of room we have to wind forward the index in the current\n // timeline. We cap delta to this quantity.\n cappedDelta = Math.min(delta, this.maxIndex() - this.index);\n if (cappedDelta > 0) {\n this.index += cappedDelta;\n return cappedDelta;\n }\n }\n\n // the index is already at the start/end of the current timeline.\n //\n // next see if there is a neighbouring timeline to switch to.\n var neighbour = this.timeline.getNeighbouringTimeline(delta < 0 ? EventTimeline.BACKWARDS : EventTimeline.FORWARDS);\n if (neighbour) {\n this.timeline = neighbour;\n if (delta < 0) {\n this.index = this.maxIndex();\n } else {\n this.index = this.minIndex();\n }\n\n debuglog(\"paginate: switched to new neighbour\");\n\n // recurse, using the next timeline\n return this.advance(delta);\n }\n\n return 0;\n};\n\n/**\n * Try move the index backwards, or into the neighbouring timeline\n *\n * @param {number} delta number of events to retreat by\n * @return {number} number of events successfully retreated by\n */\nTimelineIndex.prototype.retreat = function (delta) {\n return this.advance(delta * -1) * -1;\n};\n\n/**\n * The TimelineWindow class.\n */\nmodule.exports.TimelineWindow = TimelineWindow;\n\n/**\n * The TimelineIndex class. exported here for unit testing.\n */\nmodule.exports.TimelineIndex = TimelineIndex;\n//# sourceMappingURL=timeline-window.js.map","/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/** @module interactive-auth */\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar url = require(\"url\");\n\nvar utils = require(\"./utils\");\n\nvar EMAIL_STAGE_TYPE = \"m.login.email.identity\";\nvar MSISDN_STAGE_TYPE = \"m.login.msisdn\";\n\n/**\n * Abstracts the logic used to drive the interactive auth process.\n *\n * <p>Components implementing an interactive auth flow should instantiate one of\n * these, passing in the necessary callbacks to the constructor. They should\n * then call attemptAuth, which will return a promise which will resolve or\n * reject when the interactive-auth process completes.\n *\n * <p>Meanwhile, calls will be made to the startAuthStage and doRequest\n * callbacks, and information gathered from the user can be submitted with\n * submitAuthDict.\n *\n * @constructor\n * @alias module:interactive-auth\n *\n * @param {object} opts options object\n *\n * @param {object} opts.matrixClient A matrix client to use for the auth process\n *\n * @param {object?} opts.authData error response from the last request. If\n * null, a request will be made with no auth before starting.\n *\n * @param {function(object?, bool?): module:client.Promise} opts.doRequest\n * called with the new auth dict to submit the request and a flag set\n * to true if this request is a background request. Should return a\n * promise which resolves to the successful response or rejects with a\n * MatrixError.\n *\n * @param {function(string, object?)} opts.stateUpdated\n * called when the status of the UI auth changes, ie. when the state of\n * an auth stage changes of when the auth flow moves to a new stage.\n * The arguments are: the login type (eg m.login.password); and an object\n * which is either an error or an informational object specific to the\n * login type. If the 'errcode' key is defined, the object is an error,\n * and has keys:\n * errcode: string, the textual error code, eg. M_UNKNOWN\n * error: string, human readable string describing the error\n *\n * The login type specific objects are as follows:\n * m.login.email.identity:\n * * emailSid: string, the sid of the active email auth session\n *\n * @param {object?} opts.inputs Inputs provided by the user and used by different\n * stages of the auto process. The inputs provided will affect what flow is chosen.\n *\n * @param {string?} opts.inputs.emailAddress An email address. If supplied, a flow\n * using email verification will be chosen.\n *\n * @param {string?} opts.inputs.phoneCountry An ISO two letter country code. Gives\n * the country that opts.phoneNumber should be resolved relative to.\n *\n * @param {string?} opts.inputs.phoneNumber A phone number. If supplied, a flow\n * using phone number validation will be chosen.\n *\n * @param {string?} opts.sessionId If resuming an existing interactive auth session,\n * the sessionId of that session.\n *\n * @param {string?} opts.clientSecret If resuming an existing interactive auth session,\n * the client secret for that session\n *\n * @param {string?} opts.emailSid If returning from having completed m.login.email.identity\n * auth, the sid for the email verification session.\n *\n */\nfunction InteractiveAuth(opts) {\n this._matrixClient = opts.matrixClient;\n this._data = opts.authData || {};\n this._requestCallback = opts.doRequest;\n // startAuthStage included for backwards compat\n this._stateUpdatedCallback = opts.stateUpdated || opts.startAuthStage;\n this._completionDeferred = null;\n this._inputs = opts.inputs || {};\n\n if (opts.sessionId) this._data.session = opts.sessionId;\n this._clientSecret = opts.clientSecret || this._matrixClient.generateClientSecret();\n this._emailSid = opts.emailSid;\n if (this._emailSid === undefined) this._emailSid = null;\n\n this._currentStage = null;\n}\n\nInteractiveAuth.prototype = {\n /**\n * begin the authentication process.\n *\n * @return {module:client.Promise} which resolves to the response on success,\n * or rejects with the error on failure. Rejects with NoAuthFlowFoundError if\n * no suitable authentication flow can be found\n */\n attemptAuth: function attemptAuth() {\n var _this = this;\n\n this._completionDeferred = _bluebird2.default.defer();\n\n // wrap in a promise so that if _startNextAuthStage\n // throws, it rejects the promise in a consistent way\n return _bluebird2.default.resolve().then(function () {\n // if we have no flows, try a request (we'll have\n // just a session ID in _data if resuming)\n if (!_this._data.flows) {\n _this._doRequest(_this._data);\n } else {\n _this._startNextAuthStage();\n }\n return _this._completionDeferred.promise;\n });\n },\n\n /**\n * Poll to check if the auth session or current stage has been\n * completed out-of-band. If so, the attemptAuth promise will\n * be resolved.\n */\n poll: function poll() {\n if (!this._data.session) return;\n\n var authDict = {};\n if (this._currentStage == EMAIL_STAGE_TYPE) {\n // The email can be validated out-of-band, but we need to provide the\n // creds so the HS can go & check it.\n if (this._emailSid) {\n var idServerParsedUrl = url.parse(this._matrixClient.getIdentityServerUrl());\n authDict = {\n type: EMAIL_STAGE_TYPE,\n threepid_creds: {\n sid: this._emailSid,\n client_secret: this._clientSecret,\n id_server: idServerParsedUrl.host\n }\n };\n }\n }\n\n this.submitAuthDict(authDict, true);\n },\n\n /**\n * get the auth session ID\n *\n * @return {string} session id\n */\n getSessionId: function getSessionId() {\n return this._data ? this._data.session : undefined;\n },\n\n /**\n * get the client secret used for validation sessions\n * with the ID server.\n *\n * @return {string} client secret\n */\n getClientSecret: function getClientSecret() {\n return this._clientSecret;\n },\n\n /**\n * get the server params for a given stage\n *\n * @param {string} loginType login type for the stage\n * @return {object?} any parameters from the server for this stage\n */\n getStageParams: function getStageParams(loginType) {\n var params = {};\n if (this._data && this._data.params) {\n params = this._data.params;\n }\n return params[loginType];\n },\n\n /**\n * submit a new auth dict and fire off the request. This will either\n * make attemptAuth resolve/reject, or cause the startAuthStage callback\n * to be called for a new stage.\n *\n * @param {object} authData new auth dict to send to the server. Should\n * include a `type` propterty denoting the login type, as well as any\n * other params for that stage.\n * @param {bool} background If true, this request failing will not result\n * in the attemptAuth promise being rejected. This can be set to true\n * for requests that just poll to see if auth has been completed elsewhere.\n */\n submitAuthDict: function submitAuthDict(authData, background) {\n if (!this._completionDeferred) {\n throw new Error(\"submitAuthDict() called before attemptAuth()\");\n }\n\n // use the sessionid from the last request.\n var auth = {\n session: this._data.session\n };\n utils.extend(auth, authData);\n\n this._doRequest(auth, background);\n },\n\n /**\n * Gets the sid for the email validation session\n * Specific to m.login.email.identity\n *\n * @returns {string} The sid of the email auth session\n */\n getEmailSid: function getEmailSid() {\n return this._emailSid;\n },\n\n /**\n * Sets the sid for the email validation session\n * This must be set in order to successfully poll for completion\n * of the email validation.\n * Specific to m.login.email.identity\n *\n * @param {string} sid The sid for the email validation session\n */\n setEmailSid: function setEmailSid(sid) {\n this._emailSid = sid;\n },\n\n /**\n * Fire off a request, and either resolve the promise, or call\n * startAuthStage.\n *\n * @private\n * @param {object?} auth new auth dict, including session id\n * @param {bool?} background If true, this request is a background poll, so it\n * failing will not result in the attemptAuth promise being rejected.\n * This can be set to true for requests that just poll to see if auth has\n * been completed elsewhere.\n */\n _doRequest: function _doRequest(auth, background) {\n var _this2 = this;\n\n var self = this;\n\n // hackery to make sure that synchronous exceptions end up in the catch\n // handler (without the additional event loop entailed by q.fcall or an\n // extra Promise.resolve().then)\n var prom = void 0;\n try {\n prom = this._requestCallback(auth, background);\n } catch (e) {\n prom = _bluebird2.default.reject(e);\n }\n\n prom = prom.then(function (result) {\n console.log(\"result from request: \", result);\n self._completionDeferred.resolve(result);\n }, function (error) {\n // sometimes UI auth errors don't come with flows\n var errorFlows = error.data ? error.data.flows : null;\n var haveFlows = Boolean(self._data.flows) || Boolean(errorFlows);\n if (error.httpStatus !== 401 || !error.data || !haveFlows) {\n // doesn't look like an interactive-auth failure. fail the whole lot.\n throw error;\n }\n // if the error didn't come with flows, completed flows or session ID,\n // copy over the ones we have. Synapse sometimes sends responses without\n // any UI auth data (eg. when polling for email validation, if the email\n // has not yet been validated). This appears to be a Synapse bug, which\n // we workaround here.\n if (!error.data.flows && !error.data.completed && !error.data.session) {\n error.data.flows = self._data.flows;\n error.data.completed = self._data.completed;\n error.data.session = self._data.session;\n }\n self._data = error.data;\n self._startNextAuthStage();\n });\n if (!background) {\n prom = prom.catch(function (e) {\n _this2._completionDeferred.reject(e);\n });\n } else {\n // We ignore all failures here (even non-UI auth related ones)\n // since we don't want to suddenly fail if the internet connection\n // had a blip whilst we were polling\n prom = prom.catch(function (error) {\n console.log(\"Ignoring error from UI auth: \" + error);\n });\n }\n prom.done();\n },\n\n /**\n * Pick the next stage and call the callback\n *\n * @private\n * @throws {NoAuthFlowFoundError} If no suitable authentication flow can be found\n */\n _startNextAuthStage: function _startNextAuthStage() {\n var nextStage = this._chooseStage();\n if (!nextStage) {\n throw new Error(\"No incomplete flows from the server\");\n }\n this._currentStage = nextStage;\n\n if (nextStage == 'm.login.dummy') {\n this.submitAuthDict({\n type: 'm.login.dummy'\n });\n return;\n }\n\n if (this._data.errcode || this._data.error) {\n this._stateUpdatedCallback(nextStage, {\n errcode: this._data.errcode || \"\",\n error: this._data.error || \"\"\n });\n return;\n }\n\n var stageStatus = {};\n if (nextStage == EMAIL_STAGE_TYPE) {\n stageStatus.emailSid = this._emailSid;\n }\n this._stateUpdatedCallback(nextStage, stageStatus);\n },\n\n /**\n * Pick the next auth stage\n *\n * @private\n * @return {string?} login type\n * @throws {NoAuthFlowFoundError} If no suitable authentication flow can be found\n */\n _chooseStage: function _chooseStage() {\n var flow = this._chooseFlow();\n console.log(\"Active flow => %s\", (0, _stringify2.default)(flow));\n var nextStage = this._firstUncompletedStage(flow);\n console.log(\"Next stage: %s\", nextStage);\n return nextStage;\n },\n\n /**\n * Pick one of the flows from the returned list\n * If a flow using all of the inputs is found, it will\n * be returned, otherwise, null will be returned.\n *\n * Only flows using all given inputs are chosen because it\n * is likley to be surprising if the user provides a\n * credential and it is not used. For example, for registration,\n * this could result in the email not being used which would leave\n * the account with no means to reset a password.\n *\n * @private\n * @return {object} flow\n * @throws {NoAuthFlowFoundError} If no suitable authentication flow can be found\n */\n _chooseFlow: function _chooseFlow() {\n var flows = this._data.flows || [];\n\n // we've been given an email or we've already done an email part\n var haveEmail = Boolean(this._inputs.emailAddress) || Boolean(this._emailSid);\n var haveMsisdn = Boolean(this._inputs.phoneCountry) && Boolean(this._inputs.phoneNumber);\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(flows), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var flow = _step.value;\n\n var flowHasEmail = false;\n var flowHasMsisdn = false;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(flow.stages), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var stage = _step2.value;\n\n if (stage === EMAIL_STAGE_TYPE) {\n flowHasEmail = true;\n } else if (stage == MSISDN_STAGE_TYPE) {\n flowHasMsisdn = true;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n if (flowHasEmail == haveEmail && flowHasMsisdn == haveMsisdn) {\n return flow;\n }\n }\n // Throw an error with a fairly generic description, but with more\n // information such that the app can give a better one if so desired.\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var err = new Error(\"No appropriate authentication flow found\");\n err.name = 'NoAuthFlowFoundError';\n err.required_stages = [];\n if (haveEmail) err.required_stages.push(EMAIL_STAGE_TYPE);\n if (haveMsisdn) err.required_stages.push(MSISDN_STAGE_TYPE);\n err.available_flows = flows;\n throw err;\n },\n\n /**\n * Get the first uncompleted stage in the given flow\n *\n * @private\n * @param {object} flow\n * @return {string} login type\n */\n _firstUncompletedStage: function _firstUncompletedStage(flow) {\n var completed = (this._data || {}).completed || [];\n for (var i = 0; i < flow.stages.length; ++i) {\n var stageType = flow.stages[i];\n if (completed.indexOf(stageType) === -1) {\n return stageType;\n }\n }\n }\n};\n\n/** */\nmodule.exports = InteractiveAuth;\n//# sourceMappingURL=interactive-auth.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"device\" level for the current device.\n * This handler does not make use of the roomId parameter. This handler\n * will special-case features to support legacy settings.\n */\nvar DeviceSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(DeviceSettingsHandler, _SettingsHandler);\n\n /**\n * Creates a new device settings handler\n * @param {string[]} featureNames The names of known features.\n */\n function DeviceSettingsHandler(featureNames) {\n (0, _classCallCheck3.default)(this, DeviceSettingsHandler);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DeviceSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(DeviceSettingsHandler)).call(this));\n\n _this._featureNames = featureNames;\n return _this;\n }\n\n (0, _createClass3.default)(DeviceSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n if (this._featureNames.includes(settingName)) {\n return this._readFeature(settingName);\n }\n\n // Special case notifications\n if (settingName === \"notificationsEnabled\") {\n var value = localStorage.getItem(\"notifications_enabled\");\n if (typeof value === \"string\") return value === \"true\";\n return null; // wrong type or otherwise not set\n } else if (settingName === \"notificationBodyEnabled\") {\n var _value = localStorage.getItem(\"notifications_body_enabled\");\n if (typeof _value === \"string\") return _value === \"true\";\n return null; // wrong type or otherwise not set\n } else if (settingName === \"audioNotificationsEnabled\") {\n var _value2 = localStorage.getItem(\"audio_notifications_enabled\");\n if (typeof _value2 === \"string\") return _value2 === \"true\";\n return null; // wrong type or otherwise not set\n }\n\n var settings = this._getSettings() || {};\n return settings[settingName];\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n if (this._featureNames.includes(settingName)) {\n this._writeFeature(settingName, newValue);\n return _bluebird2.default.resolve();\n }\n\n // Special case notifications\n if (settingName === \"notificationsEnabled\") {\n localStorage.setItem(\"notifications_enabled\", newValue);\n return _bluebird2.default.resolve();\n } else if (settingName === \"notificationBodyEnabled\") {\n localStorage.setItem(\"notifications_body_enabled\", newValue);\n return _bluebird2.default.resolve();\n } else if (settingName === \"audioNotificationsEnabled\") {\n localStorage.setItem(\"audio_notifications_enabled\", newValue);\n return _bluebird2.default.resolve();\n }\n\n var settings = this._getSettings() || {};\n settings[settingName] = newValue;\n localStorage.setItem(\"mx_local_settings\", (0, _stringify2.default)(settings));\n\n return _bluebird2.default.resolve();\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return true; // It's their device, so they should be able to\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return localStorage !== undefined && localStorage !== null;\n }\n }, {\n key: \"_getSettings\",\n value: function _getSettings() {\n var value = localStorage.getItem(\"mx_local_settings\");\n if (!value) return null;\n return JSON.parse(value);\n }\n\n // Note: features intentionally don't use the same key as settings to avoid conflicts\n // and to be backwards compatible.\n\n }, {\n key: \"_readFeature\",\n value: function _readFeature(featureName) {\n if (_MatrixClientPeg2.default.get() && _MatrixClientPeg2.default.get().isGuest()) {\n // Guests should not have any labs features enabled.\n return false;\n }\n\n var value = localStorage.getItem(\"mx_labs_feature_\" + featureName);\n return value === \"true\";\n }\n }, {\n key: \"_writeFeature\",\n value: function _writeFeature(featureName, enabled) {\n localStorage.setItem(\"mx_labs_feature_\" + featureName, enabled);\n }\n }]);\n return DeviceSettingsHandler;\n}(_SettingsHandler3.default); /*\n Copyright 2017 Travis Ralston\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = DeviceSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=DeviceSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"room-device\" level for the current device in a particular\n * room.\n */\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar RoomDeviceSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(RoomDeviceSettingsHandler, _SettingsHandler);\n\n function RoomDeviceSettingsHandler() {\n (0, _classCallCheck3.default)(this, RoomDeviceSettingsHandler);\n return (0, _possibleConstructorReturn3.default)(this, (RoomDeviceSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(RoomDeviceSettingsHandler)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(RoomDeviceSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n // Special case blacklist setting to use legacy values\n if (settingName === \"blacklistUnverifiedDevices\") {\n var _value = this._read(\"mx_local_settings\");\n if (_value && _value['blacklistUnverifiedDevicesPerRoom']) {\n return _value['blacklistUnverifiedDevicesPerRoom'][roomId];\n }\n }\n\n var value = this._read(this._getKey(settingName, roomId));\n if (value) return value.value;\n return null;\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n // Special case blacklist setting for legacy structure\n if (settingName === \"blacklistUnverifiedDevices\") {\n var value = this._read(\"mx_local_settings\");\n if (!value) value = {};\n if (!value[\"blacklistUnverifiedDevicesPerRoom\"]) value[\"blacklistUnverifiedDevicesPerRoom\"] = {};\n value[\"blacklistUnverifiedDevicesPerRoom\"][roomId] = newValue;\n localStorage.setItem(\"mx_local_settings\", (0, _stringify2.default)(value));\n return _bluebird2.default.resolve();\n }\n\n if (newValue === null) {\n localStorage.removeItem(this._getKey(settingName, roomId));\n } else {\n newValue = (0, _stringify2.default)({ value: newValue });\n localStorage.setItem(this._getKey(settingName, roomId), newValue);\n }\n\n return _bluebird2.default.resolve();\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return true; // It's their device, so they should be able to\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return localStorage !== undefined && localStorage !== null;\n }\n }, {\n key: \"_read\",\n value: function _read(key) {\n var rawValue = localStorage.getItem(key);\n if (!rawValue) return null;\n return JSON.parse(rawValue);\n }\n }, {\n key: \"_getKey\",\n value: function _getKey(settingName, roomId) {\n return \"mx_setting_\" + settingName + \"_\" + roomId;\n }\n }]);\n return RoomDeviceSettingsHandler;\n}(_SettingsHandler3.default);\n\nexports.default = RoomDeviceSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=RoomDeviceSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets settings at the \"default\" level. This handler does not support setting values.\n * This handler does not make use of the roomId parameter.\n */\nvar DefaultSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(DefaultSettingsHandler, _SettingsHandler);\n\n /**\n * Creates a new default settings handler with the given defaults\n * @param {object} defaults The default setting values, keyed by setting name.\n */\n function DefaultSettingsHandler(defaults) {\n (0, _classCallCheck3.default)(this, DefaultSettingsHandler);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DefaultSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(DefaultSettingsHandler)).call(this));\n\n _this._defaults = defaults;\n return _this;\n }\n\n (0, _createClass3.default)(DefaultSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n return this._defaults[settingName];\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n throw new Error(\"Cannot set values on the default level handler\");\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return false;\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return true;\n }\n }]);\n return DefaultSettingsHandler;\n}(_SettingsHandler3.default); /*\n Copyright 2017 Travis Ralston\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = DefaultSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=DefaultSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"room-account\" level for the current user.\n */\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar RoomAccountSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(RoomAccountSettingsHandler, _SettingsHandler);\n\n function RoomAccountSettingsHandler() {\n (0, _classCallCheck3.default)(this, RoomAccountSettingsHandler);\n return (0, _possibleConstructorReturn3.default)(this, (RoomAccountSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(RoomAccountSettingsHandler)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(RoomAccountSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var content = this._getSettings(roomId, \"org.matrix.room.preview_urls\") || {};\n\n // Check to make sure that we actually got a boolean\n if (typeof content['disable'] !== \"boolean\") return null;\n return !content['disable'];\n }\n\n // Special case room color\n if (settingName === \"roomColor\") {\n // The event content should already be in an appropriate format, we just need\n // to get the right value.\n // don't fallback to {} because thats truthy and would imply there is an event specifying tint\n return this._getSettings(roomId, \"org.matrix.room.color_scheme\");\n }\n\n var settings = this._getSettings(roomId) || {};\n return settings[settingName];\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var _content = this._getSettings(roomId, \"org.matrix.room.preview_urls\") || {};\n _content['disable'] = !newValue;\n return _MatrixClientPeg2.default.get().setRoomAccountData(roomId, \"org.matrix.room.preview_urls\", _content);\n }\n\n // Special case room color\n if (settingName === \"roomColor\") {\n // The new value should match our requirements, we just need to store it in the right place.\n return _MatrixClientPeg2.default.get().setRoomAccountData(roomId, \"org.matrix.room.color_scheme\", newValue);\n }\n\n var content = this._getSettings(roomId) || {};\n content[settingName] = newValue;\n return _MatrixClientPeg2.default.get().setRoomAccountData(roomId, \"im.vector.web.settings\", content);\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n var room = _MatrixClientPeg2.default.get().getRoom(roomId);\n\n // If they have the room, they can set their own account data\n return room !== undefined && room !== null;\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var cli = _MatrixClientPeg2.default.get();\n return cli !== undefined && cli !== null;\n }\n }, {\n key: \"_getSettings\",\n value: function _getSettings(roomId) {\n var eventType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"im.vector.web.settings\";\n\n var room = _MatrixClientPeg2.default.get().getRoom(roomId);\n if (!room) return null;\n\n var event = room.getAccountData(eventType);\n if (!event || !event.getContent()) return null;\n return event.getContent();\n }\n }]);\n return RoomAccountSettingsHandler;\n}(_SettingsHandler3.default);\n\nexports.default = RoomAccountSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=RoomAccountSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"account\" level for the current user.\n * This handler does not make use of the roomId parameter.\n */\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar AccountSettingHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(AccountSettingHandler, _SettingsHandler);\n\n function AccountSettingHandler() {\n (0, _classCallCheck3.default)(this, AccountSettingHandler);\n return (0, _possibleConstructorReturn3.default)(this, (AccountSettingHandler.__proto__ || (0, _getPrototypeOf2.default)(AccountSettingHandler)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(AccountSettingHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var content = this._getSettings(\"org.matrix.preview_urls\") || {};\n\n // Check to make sure that we actually got a boolean\n if (typeof content['disable'] !== \"boolean\") return null;\n return !content['disable'];\n }\n\n var settings = this._getSettings() || {};\n var preferredValue = settings[settingName];\n\n if (preferredValue === null || preferredValue === undefined) {\n // Honour the old setting on read only\n if (settingName === \"hideAvatarChanges\" || settingName === \"hideDisplaynameChanges\") {\n preferredValue = settings[\"hideAvatarDisplaynameChanges\"];\n }\n }\n\n return preferredValue;\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var _content = this._getSettings(\"org.matrix.preview_urls\") || {};\n _content['disable'] = !newValue;\n return _MatrixClientPeg2.default.get().setAccountData(\"org.matrix.preview_urls\", _content);\n }\n\n var content = this._getSettings() || {};\n content[settingName] = newValue;\n return _MatrixClientPeg2.default.get().setAccountData(\"im.vector.web.settings\", content);\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return true; // It's their account, so they should be able to\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var cli = _MatrixClientPeg2.default.get();\n return cli !== undefined && cli !== null;\n }\n }, {\n key: \"_getSettings\",\n value: function _getSettings() {\n var eventType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"im.vector.web.settings\";\n\n var cli = _MatrixClientPeg2.default.get();\n if (!cli) return null;\n\n var event = cli.getAccountData(eventType);\n if (!event || !event.getContent()) return null;\n return event.getContent();\n }\n }]);\n return AccountSettingHandler;\n}(_SettingsHandler3.default);\n\nexports.default = AccountSettingHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=AccountSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"room\" level.\n */\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar RoomSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(RoomSettingsHandler, _SettingsHandler);\n\n function RoomSettingsHandler() {\n (0, _classCallCheck3.default)(this, RoomSettingsHandler);\n return (0, _possibleConstructorReturn3.default)(this, (RoomSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(RoomSettingsHandler)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(RoomSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var content = this._getSettings(roomId, \"org.matrix.room.preview_urls\") || {};\n\n // Check to make sure that we actually got a boolean\n if (typeof content['disable'] !== \"boolean\") return null;\n return !content['disable'];\n }\n\n var settings = this._getSettings(roomId) || {};\n return settings[settingName];\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var _content = this._getSettings(roomId, \"org.matrix.room.preview_urls\") || {};\n _content['disable'] = !newValue;\n return _MatrixClientPeg2.default.get().sendStateEvent(roomId, \"org.matrix.room.preview_urls\", _content);\n }\n\n var content = this._getSettings(roomId) || {};\n content[settingName] = newValue;\n return _MatrixClientPeg2.default.get().sendStateEvent(roomId, \"im.vector.web.settings\", content, \"\");\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n var cli = _MatrixClientPeg2.default.get();\n var room = cli.getRoom(roomId);\n\n var eventType = \"im.vector.web.settings\";\n if (settingName === \"urlPreviewsEnabled\") eventType = \"org.matrix.room.preview_urls\";\n\n if (!room) return false;\n return room.currentState.maySendStateEvent(eventType, cli.getUserId());\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var cli = _MatrixClientPeg2.default.get();\n return cli !== undefined && cli !== null;\n }\n }, {\n key: \"_getSettings\",\n value: function _getSettings(roomId) {\n var eventType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"im.vector.web.settings\";\n\n var room = _MatrixClientPeg2.default.get().getRoom(roomId);\n if (!room) return null;\n\n var event = room.currentState.getStateEvents(eventType, \"\");\n if (!event || !event.getContent()) return null;\n return event.getContent();\n }\n }]);\n return RoomSettingsHandler;\n}(_SettingsHandler3.default);\n\nexports.default = RoomSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=RoomSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nvar _SdkConfig = require(\"../../SdkConfig\");\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"config\" level. This handler does not make use of the\n * roomId parameter.\n */\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ConfigSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(ConfigSettingsHandler, _SettingsHandler);\n\n function ConfigSettingsHandler() {\n (0, _classCallCheck3.default)(this, ConfigSettingsHandler);\n return (0, _possibleConstructorReturn3.default)(this, (ConfigSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(ConfigSettingsHandler)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(ConfigSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n var config = _SdkConfig2.default.get() || {};\n\n // Special case themes\n if (settingName === \"theme\") {\n return config[\"default_theme\"];\n }\n\n var settingsConfig = config[\"settingDefaults\"];\n if (!settingsConfig || !settingsConfig[settingName]) return null;\n return settingsConfig[settingName];\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n throw new Error(\"Cannot change settings at the config level\");\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return false;\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return true; // SdkConfig is always there\n }\n }]);\n return ConfigSettingsHandler;\n}(_SettingsHandler3.default);\n\nexports.default = ConfigSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=ConfigSettingsHandler.js.map","'use strict';\n\nvar extend = require('extend');\nvar isArray = require('util').isArray;\nvar isDate = require('util').isDate;\nvar sprintf = require(\"sprintf-js\").sprintf;\nvar events = require('events');\nvar except = require('except');\n\nvar strftime = require('./strftime');\n\nvar translationScope = 'counterpart';\n\nfunction isString(val) {\n return typeof val === 'string' || Object.prototype.toString.call(val) === '[object String]';\n}\n\nfunction isFunction(val) {\n return typeof val === 'function' || Object.prototype.toString.call(val) === '[object Function]';\n}\n\nfunction isPlainObject(val) {\n //Deal with older browsers (IE8) that don't return [object Null] in this case.\n if (val === null) {\n return false;\n }\n return Object.prototype.toString.call(val) === '[object Object]';\n}\n\nfunction isSymbol(key) {\n return isString(key) && key[0] === ':';\n}\n\nfunction hasOwnProp(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction getEntry(translations, keys) {\n return keys.reduce(function(result, key) {\n if (isPlainObject(result) && hasOwnProp(result, key)) {\n return result[key];\n } else {\n return null;\n }\n }, translations);\n}\n\nfunction Counterpart() {\n events.EventEmitter.apply(this);\n\n this._registry = {\n locale: 'en',\n interpolate: true,\n fallbackLocales: [],\n scope: null,\n translations: {},\n interpolations: {},\n normalizedKeys: {},\n separator: '.',\n keepTrailingDot: false,\n keyTransformer: function(key) { return key; },\n generateMissingEntry: function(key) { return 'missing translation: ' + key; }\n };\n\n this.registerTranslations('en', require('./locales/en'));\n this.setMaxListeners(0);\n}\n\nCounterpart.prototype = events.EventEmitter.prototype;\nCounterpart.prototype.constructor = events.EventEmitter;\n\nCounterpart.prototype.getLocale = function() {\n return this._registry.locale;\n};\n\nCounterpart.prototype.setLocale = function(value) {\n var previous = this._registry.locale;\n\n if (previous != value) {\n this._registry.locale = value;\n this.emit('localechange', value, previous);\n }\n\n return previous;\n};\n\nCounterpart.prototype.getFallbackLocale = function() {\n return this._registry.fallbackLocales;\n};\n\nCounterpart.prototype.setFallbackLocale = function(value) {\n var previous = this._registry.fallbackLocales;\n this._registry.fallbackLocales = [].concat(value || []);\n return previous;\n};\n\nCounterpart.prototype.getAvailableLocales = function() {\n return this._registry.availableLocales || Object.keys(this._registry.translations);\n};\n\nCounterpart.prototype.setAvailableLocales = function(value) {\n var previous = this.getAvailableLocales();\n this._registry.availableLocales = value;\n return previous;\n};\n\nCounterpart.prototype.getSeparator = function() {\n return this._registry.separator;\n};\n\nCounterpart.prototype.setSeparator = function(value) {\n var previous = this._registry.separator;\n this._registry.separator = value;\n return previous;\n};\n\nCounterpart.prototype.setInterpolate = function(value) {\n var previous = this._registry.interpolate;\n this._registry.interpolate = value;\n return previous;\n};\n\nCounterpart.prototype.getInterpolate = function() {\n return this._registry.interpolate;\n};\n\nCounterpart.prototype.setKeyTransformer = function(value) {\n var previous = this._registry.keyTransformer;\n this._registry.keyTransformer = value;\n return previous;\n};\n\nCounterpart.prototype.getKeyTransformer = function() {\n return this._registry.keyTransformer;\n};\n\nCounterpart.prototype.setMissingEntryGenerator = function(value) {\n var previous = this._registry.generateMissingEntry;\n this._registry.generateMissingEntry = value;\n return previous;\n};\n\nCounterpart.prototype.getMissingEntryGenerator = function() {\n return this._registry.generateMissingEntry;\n};\n\nCounterpart.prototype.registerTranslations = function(locale, data) {\n var translations = {};\n translations[locale] = data;\n extend(true, this._registry.translations, translations);\n return translations;\n};\n\nCounterpart.prototype.registerInterpolations = function(data) {\n return extend(true, this._registry.interpolations, data);\n};\n\nCounterpart.prototype.onLocaleChange =\nCounterpart.prototype.addLocaleChangeListener = function(callback) {\n this.addListener('localechange', callback);\n};\n\nCounterpart.prototype.offLocaleChange =\nCounterpart.prototype.removeLocaleChangeListener = function(callback) {\n this.removeListener('localechange', callback);\n};\n\nCounterpart.prototype.onTranslationNotFound =\nCounterpart.prototype.addTranslationNotFoundListener = function(callback) {\n this.addListener('translationnotfound', callback);\n};\n\nCounterpart.prototype.offTranslationNotFound =\nCounterpart.prototype.removeTranslationNotFoundListener = function(callback) {\n this.removeListener('translationnotfound', callback);\n};\n\nCounterpart.prototype.onError =\nCounterpart.prototype.addErrorListener = function(callback) {\n this.addListener('error', callback);\n};\n\nCounterpart.prototype.offError =\nCounterpart.prototype.removeErrorListener = function(callback) {\n this.removeListener('error', callback);\n};\n\nCounterpart.prototype.translate = function(key, options) {\n if (!isArray(key) && !isString(key) || !key.length) {\n throw new Error('invalid argument: key');\n }\n\n if (isSymbol(key)) {\n key = key.substr(1);\n }\n\n key = this._registry.keyTransformer(key, options);\n\n options = extend(true, {}, options);\n\n var locale = options.locale || this._registry.locale;\n delete options.locale;\n\n var scope = options.scope || this._registry.scope;\n delete options.scope;\n\n var separator = options.separator || this._registry.separator;\n delete options.separator;\n\n var fallbackLocales = [].concat(options.fallbackLocale || this._registry.fallbackLocales);\n delete options.fallbackLocale;\n\n var keys = this._normalizeKeys(locale, scope, key, separator);\n\n var entry = getEntry(this._registry.translations, keys);\n\n if (entry === null) {\n this.emit('translationnotfound', locale, key, options.fallback, scope);\n\n if (options.fallback) {\n entry = this._fallback(locale, scope, key, options.fallback, options);\n }\n }\n\n if (entry === null && fallbackLocales.length > 0 && fallbackLocales.indexOf(locale) === -1) {\n for (var i = 0, ii = fallbackLocales.length; i < ii; i++) {\n var fallbackLocale = fallbackLocales[i];\n var fallbackKeys = this._normalizeKeys(fallbackLocale, scope, key, separator);\n entry = getEntry(this._registry.translations, fallbackKeys);\n\n if (entry) {\n locale = fallbackLocale;\n break;\n }\n }\n }\n\n if (entry === null) {\n entry = this._registry.generateMissingEntry(keys.join(separator));\n }\n\n entry = this._pluralize(locale, entry, options.count);\n\n if (this._registry.interpolate !== false && options.interpolate !== false) {\n entry = this._interpolate(entry, options);\n }\n\n return entry;\n};\n\nCounterpart.prototype.localize = function(object, options) {\n if (!isDate(object)) {\n throw new Error('invalid argument: object must be a date');\n }\n\n options = extend(true, {}, options);\n\n var locale = options.locale || this._registry.locale;\n var scope = options.scope || translationScope;\n var type = options.type || 'datetime';\n var format = options.format || 'default';\n\n options = { locale: locale, scope: scope, interpolate: false };\n format = this.translate(['formats', type, format], extend(true, {}, options));\n\n return strftime(object, format, this.translate('names', options));\n};\n\nCounterpart.prototype._pluralize = function(locale, entry, count) {\n if (typeof entry !== 'object' || entry === null || typeof count !== 'number') {\n return entry;\n }\n\n var pluralizeFunc = this.translate('pluralize', { locale: locale, scope: translationScope });\n\n if (Object.prototype.toString.call(pluralizeFunc) !== '[object Function]') {\n return pluralizeFunc;\n }\n\n return pluralizeFunc(entry, count);\n};\n\nCounterpart.prototype.withLocale = function(locale, callback, context) {\n var previous = this._registry.locale;\n this._registry.locale = locale;\n var result = callback.call(context);\n this._registry.locale = previous;\n return result;\n};\n\nCounterpart.prototype.withScope = function(scope, callback, context) {\n var previous = this._registry.scope;\n this._registry.scope = scope;\n var result = callback.call(context);\n this._registry.scope = previous;\n return result;\n};\n\nCounterpart.prototype.withSeparator = function(separator, callback, context) {\n var previous = this.setSeparator(separator);\n var result = callback.call(context);\n this.setSeparator(previous);\n return result;\n};\n\nCounterpart.prototype._normalizeKeys = function(locale, scope, key, separator) {\n var keys = [];\n\n keys = keys.concat(this._normalizeKey(locale, separator));\n keys = keys.concat(this._normalizeKey(scope, separator));\n keys = keys.concat(this._normalizeKey(key, separator));\n\n return keys;\n};\n\nCounterpart.prototype._normalizeKey = function(key, separator) {\n this._registry.normalizedKeys[separator] = this._registry.normalizedKeys[separator] || {};\n\n this._registry.normalizedKeys[separator][key] = this._registry.normalizedKeys[separator][key] || (function(key) {\n if (isArray(key)) {\n var normalizedKeyArray = key.map(function(k) { return this._normalizeKey(k, separator); }.bind(this));\n\n return [].concat.apply([], normalizedKeyArray);\n } else {\n if (typeof key === 'undefined' || key === null) {\n return [];\n }\n\n var keys = key.split(separator);\n\n for (var i = keys.length - 1; i >= 0; i--) {\n if (keys[i] === '') {\n keys.splice(i, 1);\n\n if (this._registry.keepTrailingDot === true && i == keys.length) {\n keys[keys.length - 1] += '' + separator;\n }\n }\n }\n\n return keys;\n }\n }.bind(this))(key);\n\n return this._registry.normalizedKeys[separator][key];\n};\n\nCounterpart.prototype._interpolate = function(entry, values) {\n if (typeof entry !== 'string') {\n return entry;\n }\n\n try {\n return sprintf(entry, extend({}, this._registry.interpolations, values));\n } catch (err) {\n if (this.listenerCount('error') > 0) {\n this.emit('error', err, entry, values);\n } else {\n throw err;\n }\n return null;\n }\n};\n\nCounterpart.prototype._resolve = function(locale, scope, object, subject, options) {\n options = options || {};\n\n if (options.resolve === false) {\n return subject;\n }\n\n var result;\n\n if (isSymbol(subject)) {\n result = this.translate(subject, extend({}, options, { locale: locale, scope: scope }));\n } else if (isFunction(subject)) {\n var dateOrTime;\n\n if (options.object) {\n dateOrTime = options.object;\n delete options.object;\n } else {\n dateOrTime = object;\n }\n\n result = this._resolve(locale, scope, object, subject(dateOrTime, options));\n } else {\n result = subject;\n }\n\n return /^missing translation:/.test(result) ? null : result;\n};\n\nCounterpart.prototype._fallback = function(locale, scope, object, subject, options) {\n options = except(options, 'fallback');\n\n if (isArray(subject)) {\n for (var i = 0, ii = subject.length; i < ii; i++) {\n var result = this._resolve(locale, scope, object, subject[i], options);\n\n if (result) {\n return result;\n }\n }\n\n return null;\n } else {\n return this._resolve(locale, scope, object, subject, options);\n }\n};\n\nvar instance = new Counterpart();\n\nfunction translate() {\n return instance.translate.apply(instance, arguments);\n}\n\nextend(translate, instance, {\n Instance: Counterpart,\n Translator: Counterpart\n});\n\nmodule.exports = translate;\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = target[name];\n\t\t\t\tcopy = options[name];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","/* global window, exports, define */\n\n!function() {\n 'use strict'\n\n var re = {\n not_string: /[^s]/,\n not_bool: /[^t]/,\n not_type: /[^T]/,\n not_primitive: /[^v]/,\n number: /[diefg]/,\n numeric_arg: /[bcdiefguxX]/,\n json: /[j]/,\n not_json: /[^j]/,\n text: /^[^\\x25]+/,\n modulo: /^\\x25{2}/,\n placeholder: /^\\x25(?:([1-9]\\d*)\\$|\\(([^\\)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,\n key: /^([a-z_][a-z_\\d]*)/i,\n key_access: /^\\.([a-z_][a-z_\\d]*)/i,\n index_access: /^\\[(\\d+)\\]/,\n sign: /^[\\+\\-]/\n }\n\n function sprintf(key) {\n // `arguments` is not an array, but should be fine for this call\n return sprintf_format(sprintf_parse(key), arguments)\n }\n\n function vsprintf(fmt, argv) {\n return sprintf.apply(null, [fmt].concat(argv || []))\n }\n\n function sprintf_format(parse_tree, argv) {\n var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, match, pad, pad_character, pad_length, is_positive, sign\n for (i = 0; i < tree_length; i++) {\n if (typeof parse_tree[i] === 'string') {\n output += parse_tree[i]\n }\n else if (Array.isArray(parse_tree[i])) {\n match = parse_tree[i] // convenience purposes only\n if (match[2]) { // keyword argument\n arg = argv[cursor]\n for (k = 0; k < match[2].length; k++) {\n if (!arg.hasOwnProperty(match[2][k])) {\n throw new Error(sprintf('[sprintf] property \"%s\" does not exist', match[2][k]))\n }\n arg = arg[match[2][k]]\n }\n }\n else if (match[1]) { // positional argument (explicit)\n arg = argv[match[1]]\n }\n else { // positional argument (implicit)\n arg = argv[cursor++]\n }\n\n if (re.not_type.test(match[8]) && re.not_primitive.test(match[8]) && arg instanceof Function) {\n arg = arg()\n }\n\n if (re.numeric_arg.test(match[8]) && (typeof arg !== 'number' && isNaN(arg))) {\n throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))\n }\n\n if (re.number.test(match[8])) {\n is_positive = arg >= 0\n }\n\n switch (match[8]) {\n case 'b':\n arg = parseInt(arg, 10).toString(2)\n break\n case 'c':\n arg = String.fromCharCode(parseInt(arg, 10))\n break\n case 'd':\n case 'i':\n arg = parseInt(arg, 10)\n break\n case 'j':\n arg = JSON.stringify(arg, null, match[6] ? parseInt(match[6]) : 0)\n break\n case 'e':\n arg = match[7] ? parseFloat(arg).toExponential(match[7]) : parseFloat(arg).toExponential()\n break\n case 'f':\n arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg)\n break\n case 'g':\n arg = match[7] ? String(Number(arg.toPrecision(match[7]))) : parseFloat(arg)\n break\n case 'o':\n arg = (parseInt(arg, 10) >>> 0).toString(8)\n break\n case 's':\n arg = String(arg)\n arg = (match[7] ? arg.substring(0, match[7]) : arg)\n break\n case 't':\n arg = String(!!arg)\n arg = (match[7] ? arg.substring(0, match[7]) : arg)\n break\n case 'T':\n arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()\n arg = (match[7] ? arg.substring(0, match[7]) : arg)\n break\n case 'u':\n arg = parseInt(arg, 10) >>> 0\n break\n case 'v':\n arg = arg.valueOf()\n arg = (match[7] ? arg.substring(0, match[7]) : arg)\n break\n case 'x':\n arg = (parseInt(arg, 10) >>> 0).toString(16)\n break\n case 'X':\n arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()\n break\n }\n if (re.json.test(match[8])) {\n output += arg\n }\n else {\n if (re.number.test(match[8]) && (!is_positive || match[3])) {\n sign = is_positive ? '+' : '-'\n arg = arg.toString().replace(re.sign, '')\n }\n else {\n sign = ''\n }\n pad_character = match[4] ? match[4] === '0' ? '0' : match[4].charAt(1) : ' '\n pad_length = match[6] - (sign + arg).length\n pad = match[6] ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''\n output += match[5] ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)\n }\n }\n }\n return output\n }\n\n var sprintf_cache = Object.create(null)\n\n function sprintf_parse(fmt) {\n if (sprintf_cache[fmt]) {\n return sprintf_cache[fmt]\n }\n\n var _fmt = fmt, match, parse_tree = [], arg_names = 0\n while (_fmt) {\n if ((match = re.text.exec(_fmt)) !== null) {\n parse_tree.push(match[0])\n }\n else if ((match = re.modulo.exec(_fmt)) !== null) {\n parse_tree.push('%')\n }\n else if ((match = re.placeholder.exec(_fmt)) !== null) {\n if (match[2]) {\n arg_names |= 1\n var field_list = [], replacement_field = match[2], field_match = []\n if ((field_match = re.key.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {\n if ((field_match = re.key_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else if ((field_match = re.index_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n }\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n match[2] = field_list\n }\n else {\n arg_names |= 2\n }\n if (arg_names === 3) {\n throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')\n }\n parse_tree.push(match)\n }\n else {\n throw new SyntaxError('[sprintf] unexpected placeholder')\n }\n _fmt = _fmt.substring(match[0].length)\n }\n return sprintf_cache[fmt] = parse_tree\n }\n\n /**\n * export to either browser or node.js\n */\n /* eslint-disable quote-props */\n if (typeof exports !== 'undefined') {\n exports['sprintf'] = sprintf\n exports['vsprintf'] = vsprintf\n }\n if (typeof window !== 'undefined') {\n window['sprintf'] = sprintf\n window['vsprintf'] = vsprintf\n\n if (typeof define === 'function' && define['amd']) {\n define(function() {\n return {\n 'sprintf': sprintf,\n 'vsprintf': vsprintf\n }\n })\n }\n }\n /* eslint-enable quote-props */\n}()\n","'use strict';\n\nvar ap = Array.prototype;\nvar concat = ap.concat;\nvar slice = ap.slice;\nvar indexOf = require('indexof');\n\nfunction except(object) {\n var result = {};\n var keys = concat.apply(ap, slice.call(arguments, 1));\n\n for (var key in object) {\n if (indexOf(keys, key) === -1) {\n result[key] = object[key];\n }\n }\n\n return result;\n}\n\nmodule.exports = except;\n","\nvar indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n if (indexOf) return arr.indexOf(obj);\n for (var i = 0; i < arr.length; ++i) {\n if (arr[i] === obj) return i;\n }\n return -1;\n};","'use strict';\n\nvar dateNames = require('date-names');\n\nfunction strftime(date, format, names) {\n var timestamp = date.getTime();\n\n names = names || dateNames;\n\n return format.replace(/%([-_0]?.)/g, function(_, c) {\n var padding = null;\n\n if (c.length == 2) {\n switch (c[0]) {\n case '-': padding = ''; break;\n case '_': padding = ' '; break;\n case '0': padding = '0'; break;\n default: return _; // should never reach this one\n }\n\n c = c[1];\n }\n\n switch (c) {\n case 'A': return names.days[date.getDay()];\n case 'a': return names.abbreviated_days[date.getDay()];\n case 'B': return names.months[date.getMonth()];\n case 'b': return names.abbreviated_months[date.getMonth()];\n case 'C': return pad(Math.floor(date.getFullYear() / 100), padding);\n case 'D': return strftime(date, '%m/%d/%y');\n case 'd': return pad(date.getDate(), padding);\n case 'e': return date.getDate();\n case 'F': return strftime(date, '%Y-%m-%d');\n case 'H': return pad(date.getHours(), padding);\n case 'h': return names.abbreviated_months[date.getMonth()];\n case 'I': return pad(hours12(date), padding);\n case 'j': return pad(Math.ceil((date.getTime() - (new Date(date.getFullYear(), 0, 1)).getTime()) / (1000 * 60 * 60 * 24)), 3);\n case 'k': return pad(date.getHours(), padding === null ? ' ' : padding);\n case 'L': return pad(Math.floor(timestamp % 1000), 3);\n case 'l': return pad(hours12(date), padding === null ? ' ' : padding);\n case 'M': return pad(date.getMinutes(), padding);\n case 'm': return pad(date.getMonth() + 1, padding);\n case 'n': return '\\n';\n case 'o': return String(date.getDate()) + ordinal(date.getDate());\n case 'P': return date.getHours() < 12 ? names.am.toLowerCase() : names.pm.toLowerCase();\n case 'p': return date.getHours() < 12 ? names.am.toUpperCase() : names.pm.toUpperCase();\n case 'R': return strftime(date, '%H:%M');\n case 'r': return strftime(date, '%I:%M:%S %p');\n case 'S': return pad(date.getSeconds(), padding);\n case 's': return Math.floor(timestamp / 1000);\n case 'T': return strftime(date, '%H:%M:%S');\n case 't': return '\\t';\n case 'U': return pad(weekNumber(date, 'sunday'), padding);\n case 'u': return date.getDay() === 0 ? 7 : date.getDay();\n case 'v': return strftime(date, '%e-%b-%Y');\n case 'W': return pad(weekNumber(date, 'monday'), padding);\n case 'w': return date.getDay();\n case 'Y': return date.getFullYear();\n case 'y': var y = String(date.getFullYear()); return y.slice(y.length - 2);\n case 'Z': var tzString = date.toString().match(/\\((\\w+)\\)/); return tzString && tzString[1] || '';\n case 'z': var off = date.getTimezoneOffset(); return (off > 0 ? '-' : '+') + pad(Math.round(Math.abs(off / 60)), 2) + ':' + pad(off % 60, 2);\n default: return c;\n }\n });\n}\n\nfunction pad(n, padding, length) {\n if (typeof padding === 'number') {\n length = padding;\n padding = '0';\n }\n\n if (padding === null) {\n padding = '0';\n }\n\n length = length || 2;\n\n var s = String(n);\n\n if (padding) {\n while (s.length < length) {\n s = padding + s;\n }\n }\n\n return s;\n}\n\nfunction hours12(date) {\n var hour = date.getHours();\n\n if (hour === 0) {\n hour = 12;\n } else if (hour > 12) {\n hour -= 12;\n }\n\n return hour;\n}\n\nfunction ordinal(n) {\n var i = n % 10, ii = n % 100;\n\n if ((ii >= 11 && ii <= 13) || i === 0 || i >= 4) {\n return 'th';\n }\n\n switch (i) {\n case 1: return 'st';\n case 2: return 'nd';\n case 3: return 'rd';\n }\n}\n\nfunction weekNumber(date, firstWeekday) {\n firstWeekday = firstWeekday || 'sunday';\n\n var wday = date.getDay();\n\n if (firstWeekday == 'monday') {\n if (wday === 0) { // Sunday\n wday = 6;\n } else {\n wday--;\n }\n }\n\n var\n firstDayOfYear = new Date(date.getFullYear(), 0, 1),\n yday = (date - firstDayOfYear) / 86400000,\n weekNum = (yday + 7 - wday) / 7;\n\n return Math.floor(weekNum);\n}\n\nmodule.exports = strftime;\n","\"use strict\";\nmodule.exports = require('./en');\n","// The translations in this file are added by default.\n\n'use strict';\n\nmodule.exports = {\n counterpart: {\n names: require('date-names/en'),\n pluralize: require('pluralizers/en'),\n\n formats: {\n date: {\n 'default': '%a, %e %b %Y',\n long: '%A, %B %o, %Y',\n short: '%b %e'\n },\n\n time: {\n 'default': '%H:%M',\n long: '%H:%M:%S %z',\n short: '%H:%M'\n },\n\n datetime: {\n 'default': '%a, %e %b %Y %H:%M',\n long: '%A, %B %o, %Y %H:%M:%S %z',\n short: '%e %b %H:%M'\n }\n }\n }\n};\n","'use strict';\n\nmodule.exports = function(entry, count) {\n var key;\n\n if (count === 0 && 'zero' in entry) {\n key = 'zero';\n }\n\n key = key || (count === 1 ? 'one' : 'other');\n\n return entry[key];\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SETTINGS = undefined;\n\nvar _languageHandler = require(\"../languageHandler\");\n\nvar _NotificationControllers = require(\"./controllers/NotificationControllers\");\n\nvar _LazyLoadingController = require(\"./controllers/LazyLoadingController\");\n\nvar _LazyLoadingController2 = _interopRequireDefault(_LazyLoadingController);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// These are just a bunch of helper arrays to avoid copy/pasting a bunch of times\nvar LEVELS_ROOM_SETTINGS = ['device', 'room-device', 'room-account', 'account', 'config']; /*\n Copyright 2017 Travis Ralston\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar LEVELS_ROOM_SETTINGS_WITH_ROOM = ['device', 'room-device', 'room-account', 'account', 'config', 'room'];\nvar LEVELS_ACCOUNT_SETTINGS = ['device', 'account', 'config'];\nvar LEVELS_FEATURE = ['device', 'config'];\nvar LEVELS_DEVICE_ONLY_SETTINGS = ['device'];\nvar LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG = ['device', 'config'];\n\nvar SETTINGS = exports.SETTINGS = {\n // EXAMPLE SETTING:\n // \"my-setting\": {\n // // Must be set to true for features. Default is 'false'.\n // isFeature: false,\n //\n // // Display names are strongly recommended for clarity.\n // displayName: _td(\"Cool Name\"),\n //\n // // Display name can also be an object for different levels.\n // //displayName: {\n // // \"device\": _td(\"Name for when the setting is used at 'device'\"),\n // // \"room\": _td(\"Name for when the setting is used at 'room'\"),\n // // \"default\": _td(\"The name for all other levels\"),\n // //}\n //\n // // The supported levels are required. Preferably, use the preset arrays\n // // at the top of this file to define this rather than a custom array.\n // supportedLevels: [\n // // The order does not matter.\n //\n // \"device\", // Affects the current device only\n // \"room-device\", // Affects the current room on the current device\n // \"room-account\", // Affects the current room for the current account\n // \"account\", // Affects the current account\n // \"room\", // Affects the current room (controlled by room admins)\n // \"config\", // Affects the current application\n //\n // // \"default\" is always supported and does not get listed here.\n // ],\n //\n // // Required. Can be any data type. The value specified here should match\n // // the data being stored (ie: if a boolean is used, the setting should\n // // represent a boolean).\n // default: {\n // your: \"value\",\n // },\n //\n // // Optional settings controller. See SettingsController for more information.\n // controller: new MySettingController(),\n //\n // // Optional flag to make supportedLevels be respected as the order to handle\n // // settings. The first element is treated as \"most preferred\". The \"default\"\n // // level is always appended to the end.\n // supportedLevelsAreOrdered: false,\n // },\n \"feature_pinning\": {\n isFeature: true,\n displayName: (0, _languageHandler._td)(\"Message Pinning\"),\n supportedLevels: LEVELS_FEATURE,\n default: false\n },\n \"feature_lazyloading\": {\n isFeature: true,\n displayName: (0, _languageHandler._td)(\"Increase performance by only loading room members on first view\"),\n supportedLevels: LEVELS_FEATURE,\n controller: new _LazyLoadingController2.default(),\n default: true\n },\n \"MessageComposerInput.dontSuggestEmoji\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Disable Emoji suggestions while typing'),\n default: false\n },\n \"useCompactLayout\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Use compact timeline layout'),\n default: false\n },\n \"hideRedactions\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: (0, _languageHandler._td)('Hide removed messages'),\n default: false\n },\n \"hideJoinLeaves\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: (0, _languageHandler._td)('Hide join/leave messages (invites/kicks/bans unaffected)'),\n default: false\n },\n \"hideAvatarChanges\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: (0, _languageHandler._td)('Hide avatar changes'),\n default: false\n },\n \"hideDisplaynameChanges\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: (0, _languageHandler._td)('Hide display name changes'),\n default: false\n },\n \"hideReadReceipts\": {\n supportedLevels: LEVELS_ROOM_SETTINGS,\n displayName: (0, _languageHandler._td)('Hide read receipts'),\n default: false\n },\n \"showTwelveHourTimestamps\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Show timestamps in 12 hour format (e.g. 2:30pm)'),\n default: false\n },\n \"alwaysShowTimestamps\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Always show message timestamps'),\n default: false\n },\n \"autoplayGifsAndVideos\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Autoplay GIFs and videos'),\n default: false\n },\n \"alwaysShowEncryptionIcons\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Always show encryption icons'),\n default: true\n },\n \"enableSyntaxHighlightLanguageDetection\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Enable automatic language detection for syntax highlighting'),\n default: false\n },\n \"Pill.shouldHidePillAvatar\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Hide avatars in user and room mentions'),\n default: false\n },\n \"TextualBody.disableBigEmoji\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Disable big emoji in chat'),\n default: false\n },\n \"MessageComposerInput.isRichTextEnabled\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n default: false\n },\n \"MessageComposer.showFormatting\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n default: false\n },\n \"dontSendTypingNotifications\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)(\"Don't send typing notifications\"),\n default: false\n },\n \"MessageComposerInput.autoReplaceEmoji\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Automatically replace plain text Emoji'),\n default: false\n },\n \"VideoView.flipVideoHorizontally\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Mirror local video feed'),\n default: false\n },\n \"TagPanel.disableTagPanel\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Disable Community Filter Panel'),\n default: false\n },\n \"theme\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n default: \"light\"\n },\n \"webRtcForceTURN\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n displayName: (0, _languageHandler._td)('Disable Peer-to-Peer for 1:1 calls'),\n default: false\n },\n \"webrtc_audiooutput\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: null\n },\n \"webrtc_audioinput\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: null\n },\n \"webrtc_videoinput\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: null\n },\n \"language\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n default: \"en\"\n },\n \"analyticsOptIn\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n displayName: (0, _languageHandler._td)('Send analytics data'),\n default: false\n },\n \"showCookieBar\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n default: true\n },\n \"autocompleteDelay\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n default: 200\n },\n \"blacklistUnverifiedDevices\": {\n // We specifically want to have room-device > device so that users may set a device default\n // with a per-room override.\n supportedLevels: ['room-device', 'device'],\n supportedLevelsAreOrdered: true,\n displayName: {\n \"default\": (0, _languageHandler._td)('Never send encrypted messages to unverified devices from this device'),\n \"room-device\": (0, _languageHandler._td)('Never send encrypted messages to unverified devices in this room from this device')\n },\n default: false\n },\n \"urlPreviewsEnabled\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: {\n \"default\": (0, _languageHandler._td)('Enable inline URL previews by default'),\n \"room-account\": (0, _languageHandler._td)(\"Enable URL previews for this room (only affects you)\"),\n \"room\": (0, _languageHandler._td)(\"Enable URL previews by default for participants in this room\")\n },\n default: true\n },\n \"urlPreviewsEnabled_e2ee\": {\n supportedLevels: ['room-device', 'room-account'],\n displayName: {\n \"room-account\": (0, _languageHandler._td)(\"Enable URL previews for this room (only affects you)\")\n },\n default: false\n },\n \"roomColor\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: (0, _languageHandler._td)(\"Room Colour\"),\n default: {\n primary_color: null, // Hex string, eg: #000000\n secondary_color: null // Hex string, eg: #000000\n }\n },\n \"notificationsEnabled\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: false,\n controller: new _NotificationControllers.NotificationsEnabledController()\n },\n \"notificationBodyEnabled\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: true,\n controller: new _NotificationControllers.NotificationBodyEnabledController()\n },\n \"audioNotificationsEnabled\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: true,\n controller: new _NotificationControllers.AudioNotificationsEnabledController()\n },\n \"enableWidgetScreenshots\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Enable widget screenshots on supported widgets'),\n default: false\n },\n \"PinnedEvents.isOpen\": {\n supportedLevels: ['room-device'],\n default: false\n },\n \"RoomSubList.showEmpty\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Show empty room list headings'),\n default: true\n }\n};\n//# sourceMappingURL=Settings.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AudioNotificationsEnabledController = exports.NotificationBodyEnabledController = exports.NotificationsEnabledController = undefined;\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingController4 = require(\"./SettingController\");\n\nvar _SettingController5 = _interopRequireDefault(_SettingController4);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _pushprocessor = require(\"matrix-js-sdk/lib/pushprocessor\");\n\nvar _pushprocessor2 = _interopRequireDefault(_pushprocessor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isMasterRuleEnabled() {\n // Return the value of the master push rule as a default\n var processor = new _pushprocessor2.default(_MatrixClientPeg2.default.get());\n var masterRule = processor.getPushRuleById(\".m.rule.master\");\n\n if (!masterRule) {\n console.warn(\"No master push rule! Notifications are disabled for this user.\");\n return false;\n }\n\n // Why enabled == false means \"enabled\" is beyond me.\n return !masterRule.enabled;\n}\n\n// XXX: This feels wrong.\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar NotificationsEnabledController = exports.NotificationsEnabledController = function (_SettingController) {\n (0, _inherits3.default)(NotificationsEnabledController, _SettingController);\n\n function NotificationsEnabledController() {\n (0, _classCallCheck3.default)(this, NotificationsEnabledController);\n return (0, _possibleConstructorReturn3.default)(this, (NotificationsEnabledController.__proto__ || (0, _getPrototypeOf2.default)(NotificationsEnabledController)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(NotificationsEnabledController, [{\n key: \"getValueOverride\",\n value: function getValueOverride(level, roomId, calculatedValue, calculatedAtLevel) {\n var Notifier = require('../../Notifier'); // avoids cyclical references\n if (!Notifier.isPossible()) return false;\n\n if (calculatedValue === null || calculatedAtLevel === \"default\") {\n return isMasterRuleEnabled();\n }\n\n return calculatedValue;\n }\n }, {\n key: \"onChange\",\n value: function onChange(level, roomId, newValue) {\n var Notifier = require('../../Notifier'); // avoids cyclical references\n\n if (Notifier.supportsDesktopNotifications()) {\n Notifier.setEnabled(newValue);\n }\n }\n }]);\n return NotificationsEnabledController;\n}(_SettingController5.default);\n\nvar NotificationBodyEnabledController = exports.NotificationBodyEnabledController = function (_SettingController2) {\n (0, _inherits3.default)(NotificationBodyEnabledController, _SettingController2);\n\n function NotificationBodyEnabledController() {\n (0, _classCallCheck3.default)(this, NotificationBodyEnabledController);\n return (0, _possibleConstructorReturn3.default)(this, (NotificationBodyEnabledController.__proto__ || (0, _getPrototypeOf2.default)(NotificationBodyEnabledController)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(NotificationBodyEnabledController, [{\n key: \"getValueOverride\",\n value: function getValueOverride(level, roomId, calculatedValue) {\n var Notifier = require('../../Notifier'); // avoids cyclical references\n if (!Notifier.isPossible()) return false;\n\n if (calculatedValue === null) {\n return isMasterRuleEnabled();\n }\n\n return calculatedValue;\n }\n }]);\n return NotificationBodyEnabledController;\n}(_SettingController5.default);\n\nvar AudioNotificationsEnabledController = exports.AudioNotificationsEnabledController = function (_SettingController3) {\n (0, _inherits3.default)(AudioNotificationsEnabledController, _SettingController3);\n\n function AudioNotificationsEnabledController() {\n (0, _classCallCheck3.default)(this, AudioNotificationsEnabledController);\n return (0, _possibleConstructorReturn3.default)(this, (AudioNotificationsEnabledController.__proto__ || (0, _getPrototypeOf2.default)(AudioNotificationsEnabledController)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(AudioNotificationsEnabledController, [{\n key: \"getValueOverride\",\n value: function getValueOverride(level, roomId, calculatedValue) {\n var Notifier = require('../../Notifier'); // avoids cyclical references\n if (!Notifier.isPossible()) return false;\n\n // Note: Audio notifications are *not* enabled by default.\n return calculatedValue;\n }\n }]);\n return AudioNotificationsEnabledController;\n}(_SettingController5.default);\n//# sourceMappingURL=NotificationControllers.js.map","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nmodule.exports.Dispatcher = require('./lib/Dispatcher');\n","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Dispatcher\n * \n * @preventMunge\n */\n\n'use strict';\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar _prefix = 'ID_';\n\n/**\n * Dispatcher is used to broadcast payloads to registered callbacks. This is\n * different from generic pub-sub systems in two ways:\n *\n * 1) Callbacks are not subscribed to particular events. Every payload is\n * dispatched to every registered callback.\n * 2) Callbacks can be deferred in whole or part until other callbacks have\n * been executed.\n *\n * For example, consider this hypothetical flight destination form, which\n * selects a default city when a country is selected:\n *\n * var flightDispatcher = new Dispatcher();\n *\n * // Keeps track of which country is selected\n * var CountryStore = {country: null};\n *\n * // Keeps track of which city is selected\n * var CityStore = {city: null};\n *\n * // Keeps track of the base flight price of the selected city\n * var FlightPriceStore = {price: null}\n *\n * When a user changes the selected city, we dispatch the payload:\n *\n * flightDispatcher.dispatch({\n * actionType: 'city-update',\n * selectedCity: 'paris'\n * });\n *\n * This payload is digested by `CityStore`:\n *\n * flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'city-update') {\n * CityStore.city = payload.selectedCity;\n * }\n * });\n *\n * When the user selects a country, we dispatch the payload:\n *\n * flightDispatcher.dispatch({\n * actionType: 'country-update',\n * selectedCountry: 'australia'\n * });\n *\n * This payload is digested by both stores:\n *\n * CountryStore.dispatchToken = flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'country-update') {\n * CountryStore.country = payload.selectedCountry;\n * }\n * });\n *\n * When the callback to update `CountryStore` is registered, we save a reference\n * to the returned token. Using this token with `waitFor()`, we can guarantee\n * that `CountryStore` is updated before the callback that updates `CityStore`\n * needs to query its data.\n *\n * CityStore.dispatchToken = flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'country-update') {\n * // `CountryStore.country` may not be updated.\n * flightDispatcher.waitFor([CountryStore.dispatchToken]);\n * // `CountryStore.country` is now guaranteed to be updated.\n *\n * // Select the default city for the new country\n * CityStore.city = getDefaultCityForCountry(CountryStore.country);\n * }\n * });\n *\n * The usage of `waitFor()` can be chained, for example:\n *\n * FlightPriceStore.dispatchToken =\n * flightDispatcher.register(function(payload) {\n * switch (payload.actionType) {\n * case 'country-update':\n * case 'city-update':\n * flightDispatcher.waitFor([CityStore.dispatchToken]);\n * FlightPriceStore.price =\n * getFlightPriceStore(CountryStore.country, CityStore.city);\n * break;\n * }\n * });\n *\n * The `country-update` payload will be guaranteed to invoke the stores'\n * registered callbacks in order: `CountryStore`, `CityStore`, then\n * `FlightPriceStore`.\n */\n\nvar Dispatcher = (function () {\n function Dispatcher() {\n _classCallCheck(this, Dispatcher);\n\n this._callbacks = {};\n this._isDispatching = false;\n this._isHandled = {};\n this._isPending = {};\n this._lastID = 1;\n }\n\n /**\n * Registers a callback to be invoked with every dispatched payload. Returns\n * a token that can be used with `waitFor()`.\n */\n\n Dispatcher.prototype.register = function register(callback) {\n var id = _prefix + this._lastID++;\n this._callbacks[id] = callback;\n return id;\n };\n\n /**\n * Removes a callback based on its token.\n */\n\n Dispatcher.prototype.unregister = function unregister(id) {\n !this._callbacks[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.unregister(...): `%s` does not map to a registered callback.', id) : invariant(false) : undefined;\n delete this._callbacks[id];\n };\n\n /**\n * Waits for the callbacks specified to be invoked before continuing execution\n * of the current callback. This method should only be used by a callback in\n * response to a dispatched payload.\n */\n\n Dispatcher.prototype.waitFor = function waitFor(ids) {\n !this._isDispatching ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): Must be invoked while dispatching.') : invariant(false) : undefined;\n for (var ii = 0; ii < ids.length; ii++) {\n var id = ids[ii];\n if (this._isPending[id]) {\n !this._isHandled[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): Circular dependency detected while ' + 'waiting for `%s`.', id) : invariant(false) : undefined;\n continue;\n }\n !this._callbacks[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): `%s` does not map to a registered callback.', id) : invariant(false) : undefined;\n this._invokeCallback(id);\n }\n };\n\n /**\n * Dispatches a payload to all registered callbacks.\n */\n\n Dispatcher.prototype.dispatch = function dispatch(payload) {\n !!this._isDispatching ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.') : invariant(false) : undefined;\n this._startDispatching(payload);\n try {\n for (var id in this._callbacks) {\n if (this._isPending[id]) {\n continue;\n }\n this._invokeCallback(id);\n }\n } finally {\n this._stopDispatching();\n }\n };\n\n /**\n * Is this Dispatcher currently dispatching.\n */\n\n Dispatcher.prototype.isDispatching = function isDispatching() {\n return this._isDispatching;\n };\n\n /**\n * Call the callback stored with the given id. Also do some internal\n * bookkeeping.\n *\n * @internal\n */\n\n Dispatcher.prototype._invokeCallback = function _invokeCallback(id) {\n this._isPending[id] = true;\n this._callbacks[id](this._pendingPayload);\n this._isHandled[id] = true;\n };\n\n /**\n * Set up bookkeeping needed when dispatching.\n *\n * @internal\n */\n\n Dispatcher.prototype._startDispatching = function _startDispatching(payload) {\n for (var id in this._callbacks) {\n this._isPending[id] = false;\n this._isHandled[id] = false;\n }\n this._pendingPayload = payload;\n this._isDispatching = true;\n };\n\n /**\n * Clear bookkeeping used for dispatching.\n *\n * @internal\n */\n\n Dispatcher.prototype._stopDispatching = function _stopDispatching() {\n delete this._pendingPayload;\n this._isDispatching = false;\n };\n\n return Dispatcher;\n})();\n\nmodule.exports = Dispatcher;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingController2 = require(\"./SettingController\");\n\nvar _SettingController3 = _interopRequireDefault(_SettingController2);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _PlatformPeg = require(\"../../PlatformPeg\");\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LazyLoadingController = function (_SettingController) {\n (0, _inherits3.default)(LazyLoadingController, _SettingController);\n\n function LazyLoadingController() {\n (0, _classCallCheck3.default)(this, LazyLoadingController);\n return (0, _possibleConstructorReturn3.default)(this, (LazyLoadingController.__proto__ || (0, _getPrototypeOf2.default)(LazyLoadingController)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(LazyLoadingController, [{\n key: \"onChange\",\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(level, roomId, newValue) {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (_PlatformPeg2.default.get()) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 2:\n\n _MatrixClientPeg2.default.get().stopClient();\n _context.next = 5;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().store.deleteAllData());\n\n case 5:\n _PlatformPeg2.default.get().reload();\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function onChange(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return onChange;\n }()\n }]);\n return LazyLoadingController;\n}(_SettingController3.default); /*\n Copyright 2018 New Vector\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = LazyLoadingController;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=LazyLoadingController.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A wrapper for a SettingsHandler that performs local echo on\n * changes to settings. This wrapper will use the underlying\n * handler as much as possible to ensure values are not stale.\n */\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar LocalEchoWrapper = function (_SettingsHandler) {\n (0, _inherits3.default)(LocalEchoWrapper, _SettingsHandler);\n\n /**\n * Creates a new local echo wrapper\n * @param {SettingsHandler} handler The handler to wrap\n */\n function LocalEchoWrapper(handler) {\n (0, _classCallCheck3.default)(this, LocalEchoWrapper);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (LocalEchoWrapper.__proto__ || (0, _getPrototypeOf2.default)(LocalEchoWrapper)).call(this));\n\n _this._handler = handler;\n _this._cache = {\n // settingName: { roomId: value }\n };\n return _this;\n }\n\n (0, _createClass3.default)(LocalEchoWrapper, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n var cacheRoomId = roomId ? roomId : \"UNDEFINED\"; // avoid weird keys\n var bySetting = this._cache[settingName];\n if (bySetting && bySetting.hasOwnProperty(cacheRoomId)) {\n return bySetting[roomId];\n }\n\n return this._handler.getValue(settingName, roomId);\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n if (!this._cache[settingName]) this._cache[settingName] = {};\n var bySetting = this._cache[settingName];\n\n var cacheRoomId = roomId ? roomId : \"UNDEFINED\"; // avoid weird keys\n bySetting[cacheRoomId] = newValue;\n\n var handlerPromise = this._handler.setValue(settingName, roomId, newValue);\n return _bluebird2.default.resolve(handlerPromise).finally(function () {\n delete bySetting[cacheRoomId];\n });\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return this._handler.canSetValue(settingName, roomId);\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return this._handler.isSupported();\n }\n }]);\n return LocalEchoWrapper;\n}(_SettingsHandler3.default);\n\nexports.default = LocalEchoWrapper;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=LocalEchoWrapper.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// TODO: migrate from sync_state to MatrixActions.sync so that more js-sdk events\n// become dispatches in the same place.\n/**\n * Create a MatrixActions.sync action that represents a MatrixClient `sync` event,\n * each parameter mapping to a key-value in the action.\n *\n * @param {MatrixClient} matrixClient the matrix client\n * @param {string} state the current sync state.\n * @param {string} prevState the previous sync state.\n * @returns {Object} an action of type MatrixActions.sync.\n */\nfunction createSyncAction(matrixClient, state, prevState) {\n return {\n action: 'MatrixActions.sync',\n state: state,\n prevState: prevState,\n matrixClient: matrixClient\n };\n}\n\n/**\n * @typedef AccountDataAction\n * @type {Object}\n * @property {string} action 'MatrixActions.accountData'.\n * @property {MatrixEvent} event the MatrixEvent that triggered the dispatch.\n * @property {string} event_type the type of the MatrixEvent, e.g. \"m.direct\".\n * @property {Object} event_content the content of the MatrixEvent.\n */\n\n/**\n * Create a MatrixActions.accountData action that represents a MatrixClient `accountData`\n * matrix event.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {MatrixEvent} accountDataEvent the account data event.\n * @returns {AccountDataAction} an action of type MatrixActions.accountData.\n */\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction createAccountDataAction(matrixClient, accountDataEvent) {\n return {\n action: 'MatrixActions.accountData',\n event: accountDataEvent,\n event_type: accountDataEvent.getType(),\n event_content: accountDataEvent.getContent()\n };\n}\n\n/**\n * @typedef RoomAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Room'.\n * @property {Room} room the Room that was stored.\n */\n\n/**\n * Create a MatrixActions.Room action that represents a MatrixClient `Room`\n * matrix event, emitted when a Room is stored in the client.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {Room} room the Room that was stored.\n * @returns {RoomAction} an action of type `MatrixActions.Room`.\n */\nfunction createRoomAction(matrixClient, room) {\n return { action: 'MatrixActions.Room', room: room };\n}\n\n/**\n * @typedef RoomTagsAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Room.tags'.\n * @property {Room} room the Room whose tags changed.\n */\n\n/**\n * Create a MatrixActions.Room.tags action that represents a MatrixClient\n * `Room.tags` matrix event, emitted when the m.tag room account data\n * event is updated.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {MatrixEvent} roomTagsEvent the m.tag event.\n * @param {Room} room the Room whose tags were changed.\n * @returns {RoomTagsAction} an action of type `MatrixActions.Room.tags`.\n */\nfunction createRoomTagsAction(matrixClient, roomTagsEvent, room) {\n return { action: 'MatrixActions.Room.tags', room: room };\n}\n\n/**\n * @typedef RoomTimelineAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Room.timeline'.\n * @property {boolean} isLiveEvent whether the event was attached to a\n * live timeline.\n * @property {boolean} isLiveUnfilteredRoomTimelineEvent whether the\n * event was attached to a timeline in the set of unfiltered timelines.\n * @property {Room} room the Room whose tags changed.\n */\n\n/**\n * Create a MatrixActions.Room.timeline action that represents a\n * MatrixClient `Room.timeline` matrix event, emitted when an event\n * is added to or removed from a timeline of a room.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {MatrixEvent} timelineEvent the event that was added/removed.\n * @param {Room} room the Room that was stored.\n * @param {boolean} toStartOfTimeline whether the event is being added\n * to the start (and not the end) of the timeline.\n * @param {boolean} removed whether the event was removed from the\n * timeline.\n * @param {Object} data\n * @param {boolean} data.liveEvent whether the event is a live event,\n * belonging to a live timeline.\n * @param {EventTimeline} data.timeline the timeline being altered.\n * @returns {RoomTimelineAction} an action of type `MatrixActions.Room.timeline`.\n */\nfunction createRoomTimelineAction(matrixClient, timelineEvent, room, toStartOfTimeline, removed, data) {\n return {\n action: 'MatrixActions.Room.timeline',\n event: timelineEvent,\n isLiveEvent: data.liveEvent,\n isLiveUnfilteredRoomTimelineEvent: room && data.timeline.getTimelineSet() === room.getUnfilteredTimelineSet()\n };\n}\n\n/**\n * @typedef RoomMembershipAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Room.myMembership'.\n * @property {Room} room to room for which the self-membership changed.\n * @property {string} membership the new membership\n * @property {string} oldMembership the previous membership, can be null.\n */\n\n/**\n * Create a MatrixActions.Room.myMembership action that represents\n * a MatrixClient `Room.myMembership` event for the syncing user,\n * emitted when the syncing user's membership is updated for a room.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {Room} room to room for which the self-membership changed.\n * @param {string} membership the new membership\n * @param {string} oldMembership the previous membership, can be null.\n * @returns {RoomMembershipAction} an action of type `MatrixActions.Room.myMembership`.\n */\nfunction createSelfMembershipAction(matrixClient, room, membership, oldMembership) {\n return { action: 'MatrixActions.Room.myMembership', room: room, membership: membership, oldMembership: oldMembership };\n}\n\n/**\n * @typedef EventDecryptedAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Event.decrypted'.\n * @property {MatrixEvent} event the matrix event that was decrypted.\n */\n\n/**\n * Create a MatrixActions.Event.decrypted action that represents\n * a MatrixClient `Event.decrypted` matrix event, emitted when a\n * matrix event is decrypted.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {MatrixEvent} event the matrix event that was decrypted.\n * @returns {EventDecryptedAction} an action of type `MatrixActions.Event.decrypted`.\n */\nfunction createEventDecryptedAction(matrixClient, event) {\n return { action: 'MatrixActions.Event.decrypted', event: event };\n}\n\n/**\n * This object is responsible for dispatching actions when certain events are emitted by\n * the given MatrixClient.\n */\nexports.default = {\n // A list of callbacks to call to unregister all listeners added\n _matrixClientListenersStop: [],\n\n /**\n * Start listening to certain events from the MatrixClient and dispatch actions when\n * they are emitted.\n * @param {MatrixClient} matrixClient the MatrixClient to listen to events from\n */\n start: function start(matrixClient) {\n this._addMatrixClientListener(matrixClient, 'sync', createSyncAction);\n this._addMatrixClientListener(matrixClient, 'accountData', createAccountDataAction);\n this._addMatrixClientListener(matrixClient, 'Room', createRoomAction);\n this._addMatrixClientListener(matrixClient, 'Room.tags', createRoomTagsAction);\n this._addMatrixClientListener(matrixClient, 'Room.timeline', createRoomTimelineAction);\n this._addMatrixClientListener(matrixClient, 'Room.myMembership', createSelfMembershipAction);\n this._addMatrixClientListener(matrixClient, 'Event.decrypted', createEventDecryptedAction);\n },\n\n\n /**\n * Start listening to events of type eventName on matrixClient and when they are emitted,\n * dispatch an action created by the actionCreator function.\n * @param {MatrixClient} matrixClient a MatrixClient to register a listener with.\n * @param {string} eventName the event to listen to on MatrixClient.\n * @param {function} actionCreator a function that should return an action to dispatch\n * when given the MatrixClient as an argument as well as\n * arguments emitted in the MatrixClient event.\n */\n _addMatrixClientListener: function _addMatrixClientListener(matrixClient, eventName, actionCreator) {\n var listener = function listener() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var payload = actionCreator.apply(undefined, [matrixClient].concat(args));\n if (payload) {\n _dispatcher2.default.dispatch(payload, true);\n }\n };\n matrixClient.on(eventName, listener);\n this._matrixClientListenersStop.push(function () {\n matrixClient.removeListener(eventName, listener);\n });\n },\n\n\n /**\n * Stop listening to events.\n */\n stop: function stop() {\n this._matrixClientListenersStop.forEach(function (stopListener) {\n return stopListener();\n });\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=MatrixActionCreators.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _isFinite = require('babel-runtime/core-js/number/is-finite');\n\nvar _isFinite2 = _interopRequireDefault(_isFinite);\n\nexports.phasedRollOutExpiredForUser = phasedRollOutExpiredForUser;\n\nvar _SdkConfig = require('./SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction hashCode(str) {\n var hash = 0;\n var i = void 0;\n var chr = void 0;\n if (str.length === 0) {\n return hash;\n }\n for (i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0;\n }\n return Math.abs(hash);\n} /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction phasedRollOutExpiredForUser(username, feature, now) {\n var rollOutConfig = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _SdkConfig2.default.get().phasedRollOut;\n\n if (!rollOutConfig) {\n console.log('no phased rollout configuration, so enabling ' + feature);\n return true;\n }\n var featureConfig = rollOutConfig[feature];\n if (!featureConfig) {\n console.log(feature + ' doesn\\'t have phased rollout configured, so enabling');\n return true;\n }\n if (!(0, _isFinite2.default)(featureConfig.offset) || !(0, _isFinite2.default)(featureConfig.period)) {\n console.error('phased rollout of ' + feature + ' is misconfigured, ' + 'offset and/or period are not numbers, so disabling', featureConfig);\n return false;\n }\n\n var hash = hashCode(username);\n //ms -> min, enable users at minute granularity\n var bucketRatio = 1000 * 60;\n var bucketCount = featureConfig.period / bucketRatio;\n var userBucket = hash % bucketCount;\n var userMs = userBucket * bucketRatio;\n var enableAt = featureConfig.offset + userMs;\n var result = now >= enableAt;\n var bucketStr = '(bucket ' + userBucket + '/' + bucketCount + ')';\n if (result) {\n console.log(feature + ' enabled for ' + username + ' ' + bucketStr);\n } else {\n console.log(feature + ' will be enabled for ' + username + ' in ' + Math.ceil((enableAt - now) / 1000) + 's ' + bucketStr);\n }\n return result;\n}\n//# sourceMappingURL=PhasedRollOut.js.map","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport qs from 'querystring';\n\n// We want to support some name / value pairs in the fragment\n// so we're re-using query string like format\n//\n// returns {location, params}\nexport function parseQsFromFragment(location) {\n // if we have a fragment, it will start with '#', which we need to drop.\n // (if we don't, this will return '').\n var fragment = location.hash.substring(1);\n\n // our fragment may contain a query-param-like section. we need to fish\n // this out *before* URI-decoding because the params may contain ? and &\n // characters which are only URI-encoded once.\n var hashparts = fragment.split('?');\n\n var result = {\n location: decodeURIComponent(hashparts[0]),\n params: {}\n };\n\n if (hashparts.length > 1) {\n result.params = qs.parse(hashparts[1]);\n }\n return result;\n}\n\nexport function parseQs(location) {\n return qs.parse(location.search.substring(1));\n}\n","// @flow\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nlet Platform = null;\n\nif (window && window.process && window.process && window.process.type === 'renderer') {\n // we're running inside electron\n Platform = require('./ElectronPlatform');\n} else {\n Platform = require('./WebPlatform');\n}\n\nexport default Platform;\n","// @flow\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport VectorBasePlatform, {updateCheckStatusEnum} from './VectorBasePlatform';\nimport dis from 'matrix-react-sdk/lib/dispatcher';\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\nimport Promise from 'bluebird';\nimport {remote, ipcRenderer, desktopCapturer} from 'electron';\nimport rageshake from 'matrix-react-sdk/lib/rageshake/rageshake';\n\nremote.autoUpdater.on('update-downloaded', onUpdateDownloaded);\n\n// try to flush the rageshake logs to indexeddb before quit.\nipcRenderer.on('before-quit', function () {\n console.log('riot-desktop closing');\n rageshake.flush();\n});\n\nfunction onUpdateDownloaded(ev: Event, releaseNotes: string, ver: string, date: Date, updateURL: string) {\n dis.dispatch({\n action: 'new_version',\n currentVersion: remote.app.getVersion(),\n newVersion: ver,\n releaseNotes: releaseNotes,\n });\n}\n\nfunction platformFriendlyName(): string {\n console.log(window.process);\n switch (window.process.platform) {\n case 'darwin':\n return 'macOS';\n case 'freebsd':\n return 'FreeBSD';\n case 'openbsd':\n return 'OpenBSD';\n case 'sunos':\n return 'SunOS';\n case 'win32':\n return 'Windows';\n default:\n // Sorry, Linux users: you get lumped into here,\n // but only because Linux's capitalisation is\n // normal. We do care about you.\n return window.process.platform[0].toUpperCase() + window.process.platform.slice(1);\n }\n}\n\nfunction _onAction(payload: Object) {\n // Whitelist payload actions, no point sending most across\n if (['call_state'].includes(payload.action)) {\n ipcRenderer.send('app_onAction', payload);\n }\n}\n\nfunction getUpdateCheckStatus(status) {\n if (status === true) {\n return { status: updateCheckStatusEnum.DOWNLOADING };\n } else if (status === false) {\n return { status: updateCheckStatusEnum.NOTAVAILABLE };\n } else {\n return {\n status: updateCheckStatusEnum.ERROR,\n detail: status,\n };\n }\n}\n\nexport default class ElectronPlatform extends VectorBasePlatform {\n constructor() {\n super();\n dis.register(_onAction);\n this.updatable = Boolean(remote.autoUpdater.getFeedURL());\n\n /*\n IPC Call `check_updates` returns:\n true if there is an update available\n false if there is not\n or the error if one is encountered\n */\n ipcRenderer.on('check_updates', (event, status) => {\n if (!this.showUpdateCheck) return;\n dis.dispatch({\n action: 'check_updates',\n value: getUpdateCheckStatus(status),\n });\n this.showUpdateCheck = false;\n });\n\n this.startUpdateCheck = this.startUpdateCheck.bind(this);\n this.stopUpdateCheck = this.stopUpdateCheck.bind(this);\n }\n\n getHumanReadableName(): string {\n return 'Electron Platform'; // no translation required: only used for analytics\n }\n\n setNotificationCount(count: number) {\n if (this.notificationCount === count) return;\n super.setNotificationCount(count);\n\n ipcRenderer.send('setBadgeCount', count);\n }\n\n supportsNotifications(): boolean {\n return true;\n }\n\n maySendNotifications(): boolean {\n return true;\n }\n\n displayNotification(title: string, msg: string, avatarUrl: string, room: Object): Notification {\n // GNOME notification spec parses HTML tags for styling...\n // Electron Docs state all supported linux notification systems follow this markup spec\n // https://github.com/electron/electron/blob/master/docs/tutorial/desktop-environment-integration.md#linux\n // maybe we should pass basic styling (italics, bold, underline) through from MD\n // we only have to strip out < and > as the spec doesn't include anything about things like &\n // so we shouldn't assume that all implementations will treat those properly. Very basic tag parsing is done.\n if (window.process.platform === 'linux') {\n msg = msg.replace(/</g, '<').replace(/>/g, '>');\n }\n\n // Notifications in Electron use the HTML5 notification API\n const notification = new global.Notification(\n title,\n {\n body: msg,\n icon: avatarUrl,\n silent: true, // we play our own sounds\n },\n );\n\n notification.onclick = function() {\n dis.dispatch({\n action: 'view_room',\n room_id: room.roomId,\n });\n global.focus();\n const win = remote.getCurrentWindow();\n\n if (win.isMinimized()) win.restore();\n else if (!win.isVisible()) win.show();\n else win.focus();\n };\n\n return notification;\n }\n\n loudNotification(ev: Event, room: Object) {\n ipcRenderer.send('loudNotification');\n }\n\n clearNotification(notif: Notification) {\n notif.close();\n }\n\n getAppVersion(): Promise<string> {\n return Promise.resolve(remote.app.getVersion());\n }\n\n startUpdateCheck() {\n if (this.showUpdateCheck) return;\n super.startUpdateCheck();\n\n ipcRenderer.send('check_updates');\n }\n\n installUpdate() {\n // IPC to the main process to install the update, since quitAndInstall\n // doesn't fire the before-quit event so the main process needs to know\n // it should exit.\n ipcRenderer.send('install_update');\n }\n\n getDefaultDeviceDisplayName(): string {\n return _t('Riot Desktop on %(platformName)s', { platformName: platformFriendlyName() });\n }\n\n screenCaptureErrorString(): ?string {\n return null;\n }\n\n isElectron(): boolean { return true; }\n\n requestNotificationPermission(): Promise<string> {\n return Promise.resolve('granted');\n }\n\n reload() {\n remote.getCurrentWebContents().reload();\n }\n\n /* BEGIN copied and slightly-modified code\n * setupScreenSharingForIframe function from:\n * https://github.com/jitsi/jitsi-meet-electron-utils\n * Copied directly here to avoid the need for a native electron module for\n * 'just a bit of JavaScript'\n * NOTE: Apache v2.0 licensed\n */\n setupScreenSharingForIframe(iframe: Object) {\n iframe.contentWindow.JitsiMeetElectron = {\n /**\n * Get sources available for screensharing. The callback is invoked\n * with an array of DesktopCapturerSources.\n *\n * @param {Function} callback - The success callback.\n * @param {Function} errorCallback - The callback for errors.\n * @param {Object} options - Configuration for getting sources.\n * @param {Array} options.types - Specify the desktop source types\n * to get, with valid sources being \"window\" and \"screen\".\n * @param {Object} options.thumbnailSize - Specify how big the\n * preview images for the sources should be. The valid keys are\n * height and width, e.g. { height: number, width: number}. By\n * default electron will return images with height and width of\n * 150px.\n */\n obtainDesktopStreams(callback, errorCallback, options = {}) {\n desktopCapturer.getSources(options,\n (error, sources) => {\n if (error) {\n errorCallback(error);\n return;\n }\n\n callback(sources);\n });\n },\n };\n }\n /* END of copied and slightly-modified code */\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Base class for classes that provide platform-specific functionality\n * eg. Setting an application badge or displaying notifications\n *\n * Instances of this class are provided by the application.\n */\nvar BasePlatform = function () {\n function BasePlatform() {\n (0, _classCallCheck3.default)(this, BasePlatform);\n\n this.notificationCount = 0;\n this.errorDidOccur = false;\n\n _dispatcher2.default.register(this._onAction.bind(this));\n }\n\n (0, _createClass3.default)(BasePlatform, [{\n key: '_onAction',\n value: function _onAction(payload) {\n switch (payload.action) {\n case 'on_logged_out':\n this.setNotificationCount(0);\n break;\n }\n }\n\n // Used primarily for Analytics\n\n }, {\n key: 'getHumanReadableName',\n value: function getHumanReadableName() {\n return 'Base Platform';\n }\n }, {\n key: 'setNotificationCount',\n value: function setNotificationCount(count) {\n this.notificationCount = count;\n }\n }, {\n key: 'setErrorStatus',\n value: function setErrorStatus(errorDidOccur) {\n this.errorDidOccur = errorDidOccur;\n }\n\n /**\n * Returns true if the platform supports displaying\n * notifications, otherwise false.\n * @returns {boolean} whether the platform supports displaying notifications\n */\n\n }, {\n key: 'supportsNotifications',\n value: function supportsNotifications() {\n return false;\n }\n\n /**\n * Returns true if the application currently has permission\n * to display notifications. Otherwise false.\n * @returns {boolean} whether the application has permission to display notifications\n */\n\n }, {\n key: 'maySendNotifications',\n value: function maySendNotifications() {\n return false;\n }\n\n /**\n * Requests permission to send notifications. Returns\n * a promise that is resolved when the user has responded\n * to the request. The promise has a single string argument\n * that is 'granted' if the user allowed the request or\n * 'denied' otherwise.\n */\n\n }, {\n key: 'requestNotificationPermission',\n value: function requestNotificationPermission() {}\n }, {\n key: 'displayNotification',\n value: function displayNotification(title, msg, avatarUrl, room) {}\n }, {\n key: 'loudNotification',\n value: function loudNotification(ev, room) {}\n\n /**\n * Returns a promise that resolves to a string representing\n * the current version of the application.\n */\n\n }, {\n key: 'getAppVersion',\n value: function getAppVersion() {\n throw new Error(\"getAppVersion not implemented!\");\n }\n\n /*\n * If it's not expected that capturing the screen will work\n * with getUserMedia, return a string explaining why not.\n * Otherwise, return null.\n */\n\n }, {\n key: 'screenCaptureErrorString',\n value: function screenCaptureErrorString() {\n return \"Not implemented\";\n }\n }, {\n key: 'isElectron',\n value: function isElectron() {\n return false;\n }\n }, {\n key: 'setupScreenSharingForIframe',\n value: function setupScreenSharingForIframe() {}\n\n /**\n * Restarts the application, without neccessarily reloading\n * any application code\n */\n\n }, {\n key: 'reload',\n value: function reload() {\n throw new Error(\"reload not implemented!\");\n }\n }]);\n return BasePlatform;\n}();\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = BasePlatform;\nmodule.exports = exports['default'];\n//# sourceMappingURL=BasePlatform.js.map","/**\n * @license MIT\n * @fileOverview Favico animations\n * @author Miroslav Magda, http://blog.ejci.net\n * @version 0.3.10\n */\n\n/**\n * Create new favico instance\n * @param {Object} Options\n * @return {Object} Favico object\n * @example\n * var favico = new Favico({\n * bgColor : '#d00',\n * textColor : '#fff',\n * fontFamily : 'sans-serif',\n * fontStyle : 'bold',\n * position : 'down',\n * type : 'circle',\n * animation : 'slide',\n * dataUrl: function(url){},\n * win: top\n * });\n */\n(function () {\n\n\tvar Favico = (function (opt) {\n\t\t'use strict';\n\t\topt = (opt) ? opt : {};\n\t\tvar _def = {\n\t\t\tbgColor: '#d00',\n\t\t\ttextColor: '#fff',\n\t\t\tfontFamily: 'sans-serif', //Arial,Verdana,Times New Roman,serif,sans-serif,...\n\t\t\tfontStyle: 'bold', //normal,italic,oblique,bold,bolder,lighter,100,200,300,400,500,600,700,800,900\n\t\t\ttype: 'circle',\n\t\t\tposition: 'down', // down, up, left, leftup (upleft)\n\t\t\tanimation: 'slide',\n\t\t\telementId: false,\n\t\t\tdataUrl: false,\n\t\t\twin: window\n\t\t};\n\t\tvar _opt, _orig, _h, _w, _canvas, _context, _img, _ready, _lastBadge, _running, _readyCb, _stop, _browser, _animTimeout, _drawTimeout, _doc;\n\n\t\t_browser = {};\n\t\t_browser.ff = typeof InstallTrigger != 'undefined';\n\t\t_browser.chrome = !!window.chrome;\n\t\t_browser.opera = !!window.opera || navigator.userAgent.indexOf('Opera') >= 0;\n\t\t_browser.ie = /*@cc_on!@*/false;\n\t\t_browser.safari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;\n\t\t_browser.supported = (_browser.chrome || _browser.ff || _browser.opera);\n\n\t\tvar _queue = [];\n\t\t_readyCb = function () {\n\t\t};\n\t\t_ready = _stop = false;\n\t\t/**\n\t\t * Initialize favico\n\t\t */\n\t\tvar init = function () {\n\t\t\t//merge initial options\n\t\t\t_opt = merge(_def, opt);\n\t\t\t_opt.bgColor = hexToRgb(_opt.bgColor);\n\t\t\t_opt.textColor = hexToRgb(_opt.textColor);\n\t\t\t_opt.position = _opt.position.toLowerCase();\n\t\t\t_opt.animation = (animation.types['' + _opt.animation]) ? _opt.animation : _def.animation;\n\n\t\t\t_doc = _opt.win.document;\n\n\t\t\tvar isUp = _opt.position.indexOf('up') > -1;\n\t\t\tvar isLeft = _opt.position.indexOf('left') > -1;\n\n\t\t\t//transform animation\n\t\t\tif (isUp || isLeft) {\n\t\t\t\tfor (var i = 0; i < animation.types['' + _opt.animation].length; i++) {\n\t\t\t\t\tvar step = animation.types['' + _opt.animation][i];\n\n\t\t\t\t\tif (isUp) {\n\t\t\t\t\t\tif (step.y < 0.6) {\n\t\t\t\t\t\t\tstep.y = step.y - 0.4;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstep.y = step.y - 2 * step.y + (1 - step.w);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isLeft) {\n\t\t\t\t\t\tif (step.x < 0.6) {\n\t\t\t\t\t\t\tstep.x = step.x - 0.4;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstep.x = step.x - 2 * step.x + (1 - step.h);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tanimation.types['' + _opt.animation][i] = step;\n\t\t\t\t}\n\t\t\t}\n\t\t\t_opt.type = (type['' + _opt.type]) ? _opt.type : _def.type;\n\n\t\t\t_orig = link.getIcon();\n\t\t\t//create temp canvas\n\t\t\t_canvas = document.createElement('canvas');\n\t\t\t//create temp image\n\t\t\t_img = document.createElement('img');\n\t\t\tif (_orig.hasAttribute('href')) {\n\t\t\t\t_img.setAttribute('crossOrigin', 'anonymous');\n\t\t\t\t//get width/height\n\t\t\t\t_img.onload = function () {\n\t\t\t\t\t_h = (_img.height > 0) ? _img.height : 32;\n\t\t\t\t\t_w = (_img.width > 0) ? _img.width : 32;\n\t\t\t\t\t_canvas.height = _h;\n\t\t\t\t\t_canvas.width = _w;\n\t\t\t\t\t_context = _canvas.getContext('2d');\n\t\t\t\t\ticon.ready();\n\t\t\t\t};\n\t\t\t\t_img.setAttribute('src', _orig.getAttribute('href'));\n\t\t\t} else {\n\t\t\t\t_img.onload = function () {\n\t\t\t\t\t_h = 32;\n\t\t\t\t\t_w = 32;\n\t\t\t\t\t_img.height = _h;\n\t\t\t\t\t_img.width = _w;\n\t\t\t\t\t_canvas.height = _h;\n\t\t\t\t\t_canvas.width = _w;\n\t\t\t\t\t_context = _canvas.getContext('2d');\n\t\t\t\t\ticon.ready();\n\t\t\t\t};\n\t\t\t\t_img.setAttribute('src', '');\n\t\t\t}\n\n\t\t};\n\t\t/**\n\t\t * Icon namespace\n\t\t */\n\t\tvar icon = {};\n\t\t/**\n\t\t * Icon is ready (reset icon) and start animation (if ther is any)\n\t\t */\n\t\ticon.ready = function () {\n\t\t\t_ready = true;\n\t\t\ticon.reset();\n\t\t\t_readyCb();\n\t\t};\n\t\t/**\n\t\t * Reset icon to default state\n\t\t */\n\t\ticon.reset = function () {\n\t\t\t//reset\n\t\t\tif (!_ready) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t_queue = [];\n\t\t\t_lastBadge = false;\n\t\t\t_running = false;\n\t\t\t_context.clearRect(0, 0, _w, _h);\n\t\t\t_context.drawImage(_img, 0, 0, _w, _h);\n\t\t\t//_stop=true;\n\t\t\tlink.setIcon(_canvas);\n\t\t\t//webcam('stop');\n\t\t\t//video('stop');\n\t\t\twindow.clearTimeout(_animTimeout);\n\t\t\twindow.clearTimeout(_drawTimeout);\n\t\t};\n\t\t/**\n\t\t * Start animation\n\t\t */\n\t\ticon.start = function () {\n\t\t\tif (!_ready || _running) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar finished = function () {\n\t\t\t\t_lastBadge = _queue[0];\n\t\t\t\t_running = false;\n\t\t\t\tif (_queue.length > 0) {\n\t\t\t\t\t_queue.shift();\n\t\t\t\t\ticon.start();\n\t\t\t\t} else {\n\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (_queue.length > 0) {\n\t\t\t\t_running = true;\n\t\t\t\tvar run = function () {\n\t\t\t\t\t// apply options for this animation\n\t\t\t\t\t['type', 'animation', 'bgColor', 'textColor', 'fontFamily', 'fontStyle'].forEach(function (a) {\n\t\t\t\t\t\tif (a in _queue[0].options) {\n\t\t\t\t\t\t\t_opt[a] = _queue[0].options[a];\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tanimation.run(_queue[0].options, function () {\n\t\t\t\t\t\tfinished();\n\t\t\t\t\t}, false);\n\t\t\t\t};\n\t\t\t\tif (_lastBadge) {\n\t\t\t\t\tanimation.run(_lastBadge.options, function () {\n\t\t\t\t\t\trun();\n\t\t\t\t\t}, true);\n\t\t\t\t} else {\n\t\t\t\t\trun();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Badge types\n\t\t */\n\t\tvar type = {};\n\t\tvar options = function (opt) {\n\t\t\topt.n = ((typeof opt.n) === 'number') ? Math.abs(opt.n | 0) : opt.n;\n\t\t\topt.x = _w * opt.x;\n\t\t\topt.y = _h * opt.y;\n\t\t\topt.w = _w * opt.w;\n\t\t\topt.h = _h * opt.h;\n\t\t\topt.len = (\"\" + opt.n).length;\n\t\t\treturn opt;\n\t\t};\n\t\t/**\n\t\t * Generate circle\n\t\t * @param {Object} opt Badge options\n\t\t */\n\t\ttype.circle = function (opt) {\n\t\t\topt = options(opt);\n\t\t\tvar more = false;\n\t\t\tif (opt.len === 2) {\n\t\t\t\topt.x = opt.x - opt.w * 0.4;\n\t\t\t\topt.w = opt.w * 1.4;\n\t\t\t\tmore = true;\n\t\t\t} else if (opt.len >= 3) {\n\t\t\t\topt.x = opt.x - opt.w * 0.65;\n\t\t\t\topt.w = opt.w * 1.65;\n\t\t\t\tmore = true;\n\t\t\t}\n\t\t\t_context.clearRect(0, 0, _w, _h);\n\t\t\t_context.drawImage(_img, 0, 0, _w, _h);\n\t\t\t_context.beginPath();\n\t\t\t_context.font = _opt.fontStyle + \" \" + Math.floor(opt.h * (opt.n > 99 ? 0.85 : 1)) + \"px \" + _opt.fontFamily;\n\t\t\t_context.textAlign = 'center';\n\t\t\tif (more) {\n\t\t\t\t_context.moveTo(opt.x + opt.w / 2, opt.y);\n\t\t\t\t_context.lineTo(opt.x + opt.w - opt.h / 2, opt.y);\n\t\t\t\t_context.quadraticCurveTo(opt.x + opt.w, opt.y, opt.x + opt.w, opt.y + opt.h / 2);\n\t\t\t\t_context.lineTo(opt.x + opt.w, opt.y + opt.h - opt.h / 2);\n\t\t\t\t_context.quadraticCurveTo(opt.x + opt.w, opt.y + opt.h, opt.x + opt.w - opt.h / 2, opt.y + opt.h);\n\t\t\t\t_context.lineTo(opt.x + opt.h / 2, opt.y + opt.h);\n\t\t\t\t_context.quadraticCurveTo(opt.x, opt.y + opt.h, opt.x, opt.y + opt.h - opt.h / 2);\n\t\t\t\t_context.lineTo(opt.x, opt.y + opt.h / 2);\n\t\t\t\t_context.quadraticCurveTo(opt.x, opt.y, opt.x + opt.h / 2, opt.y);\n\t\t\t} else {\n\t\t\t\t_context.arc(opt.x + opt.w / 2, opt.y + opt.h / 2, opt.h / 2, 0, 2 * Math.PI);\n\t\t\t}\n\t\t\t_context.fillStyle = 'rgba(' + _opt.bgColor.r + ',' + _opt.bgColor.g + ',' + _opt.bgColor.b + ',' + opt.o + ')';\n\t\t\t_context.fill();\n\t\t\t_context.closePath();\n\t\t\t_context.beginPath();\n\t\t\t_context.stroke();\n\t\t\t_context.fillStyle = 'rgba(' + _opt.textColor.r + ',' + _opt.textColor.g + ',' + _opt.textColor.b + ',' + opt.o + ')';\n\t\t\t//_context.fillText((more) ? '9+' : opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15));\n\t\t\tif ((typeof opt.n) === 'number' && opt.n > 999) {\n\t\t\t\t_context.fillText(((opt.n > 9999) ? 9 : Math.floor(opt.n / 1000)) + 'k+', Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.2));\n\t\t\t} else {\n\t\t\t\t_context.fillText(opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15));\n\t\t\t}\n\t\t\t_context.closePath();\n\t\t};\n\t\t/**\n\t\t * Generate rectangle\n\t\t * @param {Object} opt Badge options\n\t\t */\n\t\ttype.rectangle = function (opt) {\n\t\t\topt = options(opt);\n\t\t\tvar more = false;\n\t\t\tif (opt.len === 2) {\n\t\t\t\topt.x = opt.x - opt.w * 0.4;\n\t\t\t\topt.w = opt.w * 1.4;\n\t\t\t\tmore = true;\n\t\t\t} else if (opt.len >= 3) {\n\t\t\t\topt.x = opt.x - opt.w * 0.65;\n\t\t\t\topt.w = opt.w * 1.65;\n\t\t\t\tmore = true;\n\t\t\t}\n\t\t\t_context.clearRect(0, 0, _w, _h);\n\t\t\t_context.drawImage(_img, 0, 0, _w, _h);\n\t\t\t_context.beginPath();\n\t\t\t_context.font = _opt.fontStyle + \" \" + Math.floor(opt.h * (opt.n > 99 ? 0.9 : 1)) + \"px \" + _opt.fontFamily;\n\t\t\t_context.textAlign = 'center';\n\t\t\t_context.fillStyle = 'rgba(' + _opt.bgColor.r + ',' + _opt.bgColor.g + ',' + _opt.bgColor.b + ',' + opt.o + ')';\n\t\t\t_context.fillRect(opt.x, opt.y, opt.w, opt.h);\n\t\t\t_context.fillStyle = 'rgba(' + _opt.textColor.r + ',' + _opt.textColor.g + ',' + _opt.textColor.b + ',' + opt.o + ')';\n\t\t\t//_context.fillText((more) ? '9+' : opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15));\n\t\t\tif ((typeof opt.n) === 'number' && opt.n > 999) {\n\t\t\t\t_context.fillText(((opt.n > 9999) ? 9 : Math.floor(opt.n / 1000)) + 'k+', Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.2));\n\t\t\t} else {\n\t\t\t\t_context.fillText(opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15));\n\t\t\t}\n\t\t\t_context.closePath();\n\t\t};\n\n\t\t/**\n\t\t * Set badge\n\t\t */\n\t\tvar badge = function (number, opts) {\n\t\t\topts = ((typeof opts) === 'string' ? {\n\t\t\t\tanimation: opts\n\t\t\t} : opts) || {};\n\t\t\t_readyCb = function () {\n\t\t\t\ttry {\n\t\t\t\t\tif (typeof (number) === 'number' ? (number > 0) : (number !== '')) {\n\t\t\t\t\t\tvar q = {\n\t\t\t\t\t\t\ttype: 'badge',\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\tn: number\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif ('animation' in opts && animation.types['' + opts.animation]) {\n\t\t\t\t\t\t\tq.options.animation = '' + opts.animation;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ('type' in opts && type['' + opts.type]) {\n\t\t\t\t\t\t\tq.options.type = '' + opts.type;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t['bgColor', 'textColor'].forEach(function (o) {\n\t\t\t\t\t\t\tif (o in opts) {\n\t\t\t\t\t\t\t\tq.options[o] = hexToRgb(opts[o]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\t['fontStyle', 'fontFamily'].forEach(function (o) {\n\t\t\t\t\t\t\tif (o in opts) {\n\t\t\t\t\t\t\t\tq.options[o] = opts[o];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\t_queue.push(q);\n\t\t\t\t\t\tif (_queue.length > 100) {\n\t\t\t\t\t\t\tthrow new Error('Too many badges requests in queue.');\n\t\t\t\t\t\t}\n\t\t\t\t\t\ticon.start();\n\t\t\t\t\t} else {\n\t\t\t\t\t\ticon.reset();\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new Error('Error setting badge. Message: ' + e.message);\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (_ready) {\n\t\t\t\t_readyCb();\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Set image as icon\n\t\t */\n\t\tvar image = function (imageElement) {\n\t\t\t_readyCb = function () {\n\t\t\t\ttry {\n\t\t\t\t\tvar w = imageElement.width;\n\t\t\t\t\tvar h = imageElement.height;\n\t\t\t\t\tvar newImg = document.createElement('img');\n\t\t\t\t\tvar ratio = (w / _w < h / _h) ? (w / _w) : (h / _h);\n\t\t\t\t\tnewImg.setAttribute('crossOrigin', 'anonymous');\n\t\t\t\t\tnewImg.onload=function(){\n\t\t\t\t\t\t_context.clearRect(0, 0, _w, _h);\n\t\t\t\t\t\t_context.drawImage(newImg, 0, 0, _w, _h);\n\t\t\t\t\t\tlink.setIcon(_canvas);\n\t\t\t\t\t};\n\t\t\t\t\tnewImg.setAttribute('src', imageElement.getAttribute('src'));\n\t\t\t\t\tnewImg.height = (h / ratio);\n\t\t\t\t\tnewImg.width = (w / ratio);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new Error('Error setting image. Message: ' + e.message);\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (_ready) {\n\t\t\t\t_readyCb();\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * Set video as icon\n\t\t */\n\t\tvar video = function (videoElement) {\n\t\t\t_readyCb = function () {\n\t\t\t\ttry {\n\t\t\t\t\tif (videoElement === 'stop') {\n\t\t\t\t\t\t_stop = true;\n\t\t\t\t\t\ticon.reset();\n\t\t\t\t\t\t_stop = false;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t//var w = videoElement.width;\n\t\t\t\t\t//var h = videoElement.height;\n\t\t\t\t\t//var ratio = (w / _w < h / _h) ? (w / _w) : (h / _h);\n\t\t\t\t\tvideoElement.addEventListener('play', function () {\n\t\t\t\t\t\tdrawVideo(this);\n\t\t\t\t\t}, false);\n\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new Error('Error setting video. Message: ' + e.message);\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (_ready) {\n\t\t\t\t_readyCb();\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * Set video as icon\n\t\t */\n\t\tvar webcam = function (action) {\n\t\t\t//UR\n\t\t\tif (!window.URL || !window.URL.createObjectURL) {\n\t\t\t\twindow.URL = window.URL || {};\n\t\t\t\twindow.URL.createObjectURL = function (obj) {\n\t\t\t\t\treturn obj;\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (_browser.supported) {\n\t\t\t\tvar newVideo = false;\n\t\t\t\tnavigator.getUserMedia = navigator.getUserMedia || navigator.oGetUserMedia || navigator.msGetUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia;\n\t\t\t\t_readyCb = function () {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (action === 'stop') {\n\t\t\t\t\t\t\t_stop = true;\n\t\t\t\t\t\t\ticon.reset();\n\t\t\t\t\t\t\t_stop = false;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewVideo = document.createElement('video');\n\t\t\t\t\t\tnewVideo.width = _w;\n\t\t\t\t\t\tnewVideo.height = _h;\n\t\t\t\t\t\tnavigator.getUserMedia({\n\t\t\t\t\t\t\tvideo: true,\n\t\t\t\t\t\t\taudio: false\n\t\t\t\t\t\t}, function (stream) {\n\t\t\t\t\t\t\tnewVideo.src = URL.createObjectURL(stream);\n\t\t\t\t\t\t\tnewVideo.play();\n\t\t\t\t\t\t\tdrawVideo(newVideo);\n\t\t\t\t\t\t}, function () {\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthrow new Error('Error setting webcam. Message: ' + e.message);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tif (_ready) {\n\t\t\t\t\t_readyCb();\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t\t/**\n\t\t * Draw video to context and repeat :)\n\t\t */\n\t\tfunction drawVideo(video) {\n\t\t\tif (video.paused || video.ended || _stop) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t//nasty hack for FF webcam (Thanks to Julian Ćwirko, kontakt@redsunmedia.pl)\n\t\t\ttry {\n\t\t\t\t_context.clearRect(0, 0, _w, _h);\n\t\t\t\t_context.drawImage(video, 0, 0, _w, _h);\n\t\t\t} catch (e) {\n\n\t\t\t}\n\t\t\t_drawTimeout = setTimeout(function () {\n\t\t\t\tdrawVideo(video);\n\t\t\t}, animation.duration);\n\t\t\tlink.setIcon(_canvas);\n\t\t}\n\n\t\tvar link = {};\n\t\t/**\n\t\t * Get icon from HEAD tag or create a new <link> element\n\t\t */\n\t\tlink.getIcon = function () {\n\t\t\tvar elm = false;\n\t\t\t//get link element\n\t\t\tvar getLink = function () {\n\t\t\t\tvar link = _doc.getElementsByTagName('head')[0].getElementsByTagName('link');\n\t\t\t\tfor (var l = link.length, i = (l - 1); i >= 0; i--) {\n\t\t\t\t\tif ((/(^|\\s)icon(\\s|$)/i).test(link[i].getAttribute('rel'))) {\n\t\t\t\t\t\treturn link[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t};\n\t\t\tif (_opt.element) {\n\t\t\t\telm = _opt.element;\n\t\t\t} else if (_opt.elementId) {\n\t\t\t\t//if img element identified by elementId\n\t\t\t\telm = _doc.getElementById(_opt.elementId);\n\t\t\t\telm.setAttribute('href', elm.getAttribute('src'));\n\t\t\t} else {\n\t\t\t\t//if link element\n\t\t\t\telm = getLink();\n\t\t\t\tif (elm === false) {\n\t\t\t\t\telm = _doc.createElement('link');\n\t\t\t\t\telm.setAttribute('rel', 'icon');\n\t\t\t\t\t_doc.getElementsByTagName('head')[0].appendChild(elm);\n\t\t\t\t}\n\t\t\t}\n\t\t\telm.setAttribute('type', 'image/png');\n\t\t\treturn elm;\n\t\t};\n\t\tlink.setIcon = function (canvas) {\n\t\t\tvar url = canvas.toDataURL('image/png');\n\t\t\tif (_opt.dataUrl) {\n\t\t\t\t//if using custom exporter\n\t\t\t\t_opt.dataUrl(url);\n\t\t\t}\n\t\t\tif (_opt.element) {\n\t\t\t\t_opt.element.setAttribute('href', url);\n\t\t\t\t_opt.element.setAttribute('src', url);\n\t\t\t} else if (_opt.elementId) {\n\t\t\t\t//if is attached to element (image)\n\t\t\t\tvar elm = _doc.getElementById(_opt.elementId);\n\t\t\t\telm.setAttribute('href', url);\n\t\t\t\telm.setAttribute('src', url);\n\t\t\t} else {\n\t\t\t\t//if is attached to fav icon\n\t\t\t\tif (_browser.ff || _browser.opera) {\n\t\t\t\t\t//for FF we need to \"recreate\" element, atach to dom and remove old <link>\n\t\t\t\t\t//var originalType = _orig.getAttribute('rel');\n\t\t\t\t\tvar old = _orig;\n\t\t\t\t\t_orig = _doc.createElement('link');\n\t\t\t\t\t//_orig.setAttribute('rel', originalType);\n\t\t\t\t\tif (_browser.opera) {\n\t\t\t\t\t\t_orig.setAttribute('rel', 'icon');\n\t\t\t\t\t}\n\t\t\t\t\t_orig.setAttribute('rel', 'icon');\n\t\t\t\t\t_orig.setAttribute('type', 'image/png');\n\t\t\t\t\t_doc.getElementsByTagName('head')[0].appendChild(_orig);\n\t\t\t\t\t_orig.setAttribute('href', url);\n\t\t\t\t\tif (old.parentNode) {\n\t\t\t\t\t\told.parentNode.removeChild(old);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t_orig.setAttribute('href', url);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t//http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb#answer-5624139\n\t\t//HEX to RGB convertor\n\t\tfunction hexToRgb(hex) {\n\t\t\tvar shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n\t\t\thex = hex.replace(shorthandRegex, function (m, r, g, b) {\n\t\t\t\treturn r + r + g + g + b + b;\n\t\t\t});\n\t\t\tvar result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\t\t\treturn result ? {\n\t\t\t\tr: parseInt(result[1], 16),\n\t\t\t\tg: parseInt(result[2], 16),\n\t\t\t\tb: parseInt(result[3], 16)\n\t\t\t} : false;\n\t\t}\n\n\t\t/**\n\t\t * Merge options\n\t\t */\n\t\tfunction merge(def, opt) {\n\t\t\tvar mergedOpt = {};\n\t\t\tvar attrname;\n\t\t\tfor (attrname in def) {\n\t\t\t\tmergedOpt[attrname] = def[attrname];\n\t\t\t}\n\t\t\tfor (attrname in opt) {\n\t\t\t\tmergedOpt[attrname] = opt[attrname];\n\t\t\t}\n\t\t\treturn mergedOpt;\n\t\t}\n\n\t\t/**\n\t\t * Cross-browser page visibility shim\n\t\t * http://stackoverflow.com/questions/12536562/detect-whether-a-window-is-visible\n\t\t */\n\t\tfunction isPageHidden() {\n\t\t\treturn _doc.hidden || _doc.msHidden || _doc.webkitHidden || _doc.mozHidden;\n\t\t}\n\n\t\t/**\n\t\t * @namespace animation\n\t\t */\n\t\tvar animation = {};\n\t\t/**\n\t\t * Animation \"frame\" duration\n\t\t */\n\t\tanimation.duration = 40;\n\t\t/**\n\t\t * Animation types (none,fade,pop,slide)\n\t\t */\n\t\tanimation.types = {};\n\t\tanimation.types.fade = [{\n\t\t\tx: 0.4,\n\t\t\ty: 0.4,\n\t\t\tw: 0.6,\n\t\t\th: 0.6,\n\t\t\to: 0.0\n\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.2\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.3\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.4\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.5\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.6\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.7\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.8\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.9\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1.0\n\t\t\t}];\n\t\tanimation.types.none = [{\n\t\t\tx: 0.4,\n\t\t\ty: 0.4,\n\t\t\tw: 0.6,\n\t\t\th: 0.6,\n\t\t\to: 1\n\t\t}];\n\t\tanimation.types.pop = [{\n\t\t\tx: 1,\n\t\t\ty: 1,\n\t\t\tw: 0,\n\t\t\th: 0,\n\t\t\to: 1\n\t\t}, {\n\t\t\t\tx: 0.9,\n\t\t\t\ty: 0.9,\n\t\t\t\tw: 0.1,\n\t\t\t\th: 0.1,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.8,\n\t\t\t\ty: 0.8,\n\t\t\t\tw: 0.2,\n\t\t\t\th: 0.2,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.7,\n\t\t\t\ty: 0.7,\n\t\t\t\tw: 0.3,\n\t\t\t\th: 0.3,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.6,\n\t\t\t\ty: 0.6,\n\t\t\t\tw: 0.4,\n\t\t\t\th: 0.4,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.5,\n\t\t\t\ty: 0.5,\n\t\t\t\tw: 0.5,\n\t\t\t\th: 0.5,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}];\n\t\tanimation.types.popFade = [{\n\t\t\tx: 0.75,\n\t\t\ty: 0.75,\n\t\t\tw: 0,\n\t\t\th: 0,\n\t\t\to: 0\n\t\t}, {\n\t\t\t\tx: 0.65,\n\t\t\t\ty: 0.65,\n\t\t\t\tw: 0.1,\n\t\t\t\th: 0.1,\n\t\t\t\to: 0.2\n\t\t\t}, {\n\t\t\t\tx: 0.6,\n\t\t\t\ty: 0.6,\n\t\t\t\tw: 0.2,\n\t\t\t\th: 0.2,\n\t\t\t\to: 0.4\n\t\t\t}, {\n\t\t\t\tx: 0.55,\n\t\t\t\ty: 0.55,\n\t\t\t\tw: 0.3,\n\t\t\t\th: 0.3,\n\t\t\t\to: 0.6\n\t\t\t}, {\n\t\t\t\tx: 0.50,\n\t\t\t\ty: 0.50,\n\t\t\t\tw: 0.4,\n\t\t\t\th: 0.4,\n\t\t\t\to: 0.8\n\t\t\t}, {\n\t\t\t\tx: 0.45,\n\t\t\t\ty: 0.45,\n\t\t\t\tw: 0.5,\n\t\t\t\th: 0.5,\n\t\t\t\to: 0.9\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}];\n\t\tanimation.types.slide = [{\n\t\t\tx: 0.4,\n\t\t\ty: 1,\n\t\t\tw: 0.6,\n\t\t\th: 0.6,\n\t\t\to: 1\n\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.9,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.9,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.8,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.7,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.6,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.5,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}];\n\t\t/**\n\t\t * Run animation\n\t\t * @param {Object} opt Animation options\n\t\t * @param {Object} cb Callabak after all steps are done\n\t\t * @param {Object} revert Reverse order? true|false\n\t\t * @param {Object} step Optional step number (frame bumber)\n\t\t */\n\t\tanimation.run = function (opt, cb, revert, step) {\n\t\t\tvar animationType = animation.types[isPageHidden() ? 'none' : _opt.animation];\n\t\t\tif (revert === true) {\n\t\t\t\tstep = (typeof step !== 'undefined') ? step : animationType.length - 1;\n\t\t\t} else {\n\t\t\t\tstep = (typeof step !== 'undefined') ? step : 0;\n\t\t\t}\n\t\t\tcb = (cb) ? cb : function () {\n\t\t\t};\n\t\t\tif ((step < animationType.length) && (step >= 0)) {\n\t\t\t\ttype[_opt.type](merge(opt, animationType[step]));\n\t\t\t\t_animTimeout = setTimeout(function () {\n\t\t\t\t\tif (revert) {\n\t\t\t\t\t\tstep = step - 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstep = step + 1;\n\t\t\t\t\t}\n\t\t\t\t\tanimation.run(opt, cb, revert, step);\n\t\t\t\t}, animation.duration);\n\n\t\t\t\tlink.setIcon(_canvas);\n\t\t\t} else {\n\t\t\t\tcb();\n\t\t\t\treturn;\n\t\t\t}\n\t\t};\n\t\t//auto init\n\t\tinit();\n\t\treturn {\n\t\t\tbadge: badge,\n\t\t\tvideo: video,\n\t\t\timage: image,\n\t\t\twebcam: webcam,\n\t\t\treset: icon.reset,\n\t\t\tbrowser: {\n\t\t\t\tsupported: _browser.supported\n\t\t\t}\n\t\t};\n\t});\n\n\t// AMD / RequireJS\n\tif (typeof define !== 'undefined' && define.amd) {\n\t\tdefine([], function () {\n\t\t\treturn Favico;\n\t\t});\n\t}\n\t// CommonJS\n\telse if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = Favico;\n\t}\n\t// included directly via <script> tag\n\telse {\n\t\tthis.Favico = Favico;\n\t}\n\n})();\n","// @flow\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport VectorBasePlatform, {updateCheckStatusEnum} from './VectorBasePlatform';\nimport request from 'browser-request';\nimport dis from 'matrix-react-sdk/lib/dispatcher.js';\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\nimport Promise from 'bluebird';\n\nimport url from 'url';\nimport UAParser from 'ua-parser-js';\n\nvar POKE_RATE_MS = 10 * 60 * 1000; // 10 min\n\nexport default class WebPlatform extends VectorBasePlatform {\n constructor() {\n super();\n this.runningVersion = null;\n\n this.startUpdateCheck = this.startUpdateCheck.bind(this);\n this.stopUpdateCheck = this.stopUpdateCheck.bind(this);\n }\n\n getHumanReadableName(): string {\n return 'Web Platform'; // no translation required: only used for analytics\n }\n\n /**\n * Returns true if the platform supports displaying\n * notifications, otherwise false.\n */\n supportsNotifications(): boolean {\n return Boolean(global.Notification);\n }\n\n /**\n * Returns true if the application currently has permission\n * to display notifications. Otherwise false.\n */\n maySendNotifications(): boolean {\n return global.Notification.permission === 'granted';\n }\n\n /**\n * Requests permission to send notifications. Returns\n * a promise that is resolved when the user has responded\n * to the request. The promise has a single string argument\n * that is 'granted' if the user allowed the request or\n * 'denied' otherwise.\n */\n requestNotificationPermission(): Promise<string> {\n // annoyingly, the latest spec says this returns a\n // promise, but this is only supported in Chrome 46\n // and Firefox 47, so adapt the callback API.\n return new Promise(function(resolve, reject) {\n global.Notification.requestPermission((result) => {\n resolve(result);\n });\n });\n }\n\n displayNotification(title: string, msg: string, avatarUrl: string, room: Object) {\n const notification = new global.Notification(\n title,\n {\n body: msg,\n icon: avatarUrl,\n tag: \"vector\",\n silent: true, // we play our own sounds\n },\n );\n\n notification.onclick = function() {\n dis.dispatch({\n action: 'view_room',\n room_id: room.roomId,\n });\n global.focus();\n notification.close();\n };\n\n // Chrome only dismisses notifications after 20s, which\n // is waaaaay too long\n global.setTimeout(function() {\n notification.close();\n }, 5 * 1000);\n }\n\n _getVersion(): Promise<string> {\n // We add a cachebuster to the request to make sure that we know about\n // the most recent version on the origin server. That might not\n // actually be the version we'd get on a reload (particularly in the\n // presence of intermediate caching proxies), but still: we're trying\n // to tell the user that there is a new version.\n\n return new Promise(function(resolve, reject) {\n request(\n {\n method: \"GET\",\n url: \"version\",\n qs: { cachebuster: Date.now() },\n },\n (err, response, body) => {\n if (err || response.status < 200 || response.status >= 300) {\n if (err === null) err = { status: response.status };\n reject(err);\n return;\n }\n\n const ver = body.trim();\n resolve(ver);\n },\n );\n });\n }\n\n getAppVersion(): Promise<string> {\n if (this.runningVersion !== null) {\n return Promise.resolve(this.runningVersion);\n }\n return this._getVersion();\n }\n\n startUpdater() {\n this.pollForUpdate();\n setInterval(this.pollForUpdate.bind(this), POKE_RATE_MS);\n }\n\n pollForUpdate() {\n return this._getVersion().then((ver) => {\n if (this.runningVersion === null) {\n this.runningVersion = ver;\n } else if (this.runningVersion !== ver) {\n dis.dispatch({\n action: 'new_version',\n currentVersion: this.runningVersion,\n newVersion: ver,\n });\n // Return to skip a MatrixChat state update\n return;\n }\n return { status: updateCheckStatusEnum.NOTAVAILABLE };\n }, (err) => {\n console.error(\"Failed to poll for update\", err);\n return {\n status: updateCheckStatusEnum.ERROR,\n detail: err.message || err.status ? err.status.toString() : 'Unknown Error',\n };\n });\n }\n\n startUpdateCheck() {\n if (this.showUpdateCheck) return;\n super.startUpdateCheck();\n this.pollForUpdate().then((updateState) => {\n if (!this.showUpdateCheck) return;\n if (!updateState) return;\n dis.dispatch({\n action: 'check_updates',\n value: updateState,\n });\n });\n }\n\n installUpdate() {\n window.location.reload(true);\n }\n\n getDefaultDeviceDisplayName(): string {\n // strip query-string and fragment from uri\n const u = url.parse(window.location.href);\n u.search = \"\";\n u.hash = \"\";\n const appName = u.format();\n\n const ua = new UAParser();\n const browserName = ua.getBrowser().name || \"unknown browser\";\n const osName = ua.getOS().name || \"unknown os\";\n return _t('%(appName)s via %(browserName)s on %(osName)s', {appName: appName, browserName: browserName, osName: osName});\n }\n\n screenCaptureErrorString(): ?string {\n // it won't work at all if you're not on HTTPS so whine whine whine\n if (!global.window || global.window.location.protocol !== \"https:\") {\n return _t(\"You need to be using HTTPS to place a screen-sharing call.\");\n }\n return null;\n }\n\n reload() {\n // forceReload=false since we don't really need new HTML/JS files\n // we just need to restart the JS runtime.\n window.location.reload(false);\n }\n}\n","/*!\n * UAParser.js v0.7.18\n * Lightweight JavaScript-based User-Agent string parser\n * https://github.com/faisalman/ua-parser-js\n *\n * Copyright © 2012-2016 Faisal Salman <fyzlman@gmail.com>\n * Dual licensed under GPLv2 or MIT\n */\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '0.7.18',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major', // deprecated\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded';\n\n\n ///////////\n // Helper\n //////////\n\n\n var util = {\n extend : function (regexes, extensions) {\n var margedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n margedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n margedRegexes[i] = regexes[i];\n }\n }\n return margedRegexes;\n },\n has : function (str1, str2) {\n if (typeof str1 === \"string\") {\n return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1;\n } else {\n return false;\n }\n },\n lowerize : function (str) {\n return str.toLowerCase();\n },\n major : function (version) {\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g,'').split(\".\")[0] : undefined;\n },\n trim : function (str) {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n };\n\n\n ///////////////\n // Map helper\n //////////////\n\n\n var mapper = {\n\n rgx : function (ua, arrays) {\n\n //var result = {},\n var i = 0, j, k, p, q, matches, match;//, args = arguments;\n\n /*// construct object barebones\n for (p = 0; p < args[1].length; p++) {\n q = args[1][p];\n result[typeof q === OBJ_TYPE ? q[0] : q] = undefined;\n }*/\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length == 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length == 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length == 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n // console.log(this);\n //return this;\n },\n\n str : function (str, map) {\n\n for (var i in map) {\n // check if array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (util.has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (util.has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n }\n };\n\n\n ///////////////\n // String map\n //////////////\n\n\n var maps = {\n\n browser : {\n oldsafari : {\n version : {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n }\n }\n },\n\n device : {\n amazon : {\n model : {\n 'Fire Phone' : ['SD', 'KF']\n }\n },\n sprint : {\n model : {\n 'Evo Shift 4G' : '7373KT'\n },\n vendor : {\n 'HTC' : 'APA',\n 'Sprint' : 'Sprint'\n }\n }\n },\n\n os : {\n windows : {\n version : {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n }\n }\n }\n };\n\n\n //////////////\n // Regex map\n /////////////\n\n\n var regexes = {\n\n browser : [[\n\n // Presto based\n /(opera\\smini)\\/([\\w\\.-]+)/i, // Opera Mini\n /(opera\\s[mobiletab]+).+version\\/([\\w\\.-]+)/i, // Opera Mobi/Tablet\n /(opera).+version\\/([\\w\\.]+)/i, // Opera > 9.80\n /(opera)[\\/\\s]+([\\w\\.]+)/i // Opera < 9.80\n ], [NAME, VERSION], [\n\n /(opios)[\\/\\s]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [[NAME, 'Opera Mini'], VERSION], [\n\n /\\s(opr)\\/([\\w\\.]+)/i // Opera Webkit\n ], [[NAME, 'Opera'], VERSION], [\n\n // Mixed\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/\\s]?([\\w\\.]*)/i,\n // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n\n // Trident based\n /(avant\\s|iemobile|slim|baidu)(?:browser)?[\\/\\s]?([\\w\\.]*)/i,\n // Avant/IEMobile/SlimBrowser/Baidu\n /(?:ms|\\()(ie)\\s([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based\n /(rekonq)\\/([\\w\\.]*)/i, // Rekonq\n /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark)\\/([\\w\\.-]+)/i\n // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser\n ], [NAME, VERSION], [\n\n /(trident).+rv[:\\s]([\\w\\.]+).+like\\sgecko/i // IE11\n ], [[NAME, 'IE'], VERSION], [\n\n /(edge|edgios|edgea)\\/((\\d+)?[\\w\\.]+)/i // Microsoft Edge\n ], [[NAME, 'Edge'], VERSION], [\n\n /(yabrowser)\\/([\\w\\.]+)/i // Yandex\n ], [[NAME, 'Yandex'], VERSION], [\n\n /(puffin)\\/([\\w\\.]+)/i // Puffin\n ], [[NAME, 'Puffin'], VERSION], [\n\n /((?:[\\s\\/])uc?\\s?browser|(?:juc.+)ucweb)[\\/\\s]?([\\w\\.]+)/i\n // UCBrowser\n ], [[NAME, 'UCBrowser'], VERSION], [\n\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n\n /(micromessenger)\\/([\\w\\.]+)/i // WeChat\n ], [[NAME, 'WeChat'], VERSION], [\n\n /(qqbrowserlite)\\/([\\w\\.]+)/i // QQBrowserLite\n ], [NAME, VERSION], [\n\n /(QQ)\\/([\\d\\.]+)/i // QQ, aka ShouQ\n ], [NAME, VERSION], [\n\n /m?(qqbrowser)[\\/\\s]?([\\w\\.]+)/i // QQBrowser\n ], [NAME, VERSION], [\n\n /(BIDUBrowser)[\\/\\s]?([\\w\\.]+)/i // Baidu Browser\n ], [NAME, VERSION], [\n\n /(2345Explorer)[\\/\\s]?([\\w\\.]+)/i // 2345 Browser\n ], [NAME, VERSION], [\n\n /(MetaSr)[\\/\\s]?([\\w\\.]+)/i // SouGouBrowser\n ], [NAME], [\n\n /(LBBROWSER)/i // LieBao Browser\n ], [NAME], [\n\n /xiaomi\\/miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI Browser']], [\n\n /;fbav\\/([\\w\\.]+);/i // Facebook App for iOS & Android\n ], [VERSION, [NAME, 'Facebook']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)|\\s)/i // Chrome Headless\n ], [VERSION, [NAME, 'Chrome Headless']], [\n\n /\\swv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [\n\n /((?:oculus|samsung)browser)\\/([\\w\\.]+)/i\n ], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [ // Oculus / Samsung Browser\n\n /android.+version\\/([\\w\\.]+)\\s+(?:mobile\\s?safari|safari)*/i // Android Browser\n ], [VERSION, [NAME, 'Android Browser']], [\n\n /(chrome|omniweb|arora|[tizenoka]{5}\\s?browser)\\/v?([\\w\\.]+)/i\n // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /(dolfin)\\/([\\w\\.]+)/i // Dolphin\n ], [[NAME, 'Dolphin'], VERSION], [\n\n /((?:android.+)crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [[NAME, 'Chrome'], VERSION], [\n\n /(coast)\\/([\\w\\.]+)/i // Opera Coast\n ], [[NAME, 'Opera Coast'], VERSION], [\n\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, 'Firefox']], [\n\n /version\\/([\\w\\.]+).+?mobile\\/\\w+\\s(safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n\n /version\\/([\\w\\.]+).+?(mobile\\s?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n\n /webkit.+?(gsa)\\/([\\w\\.]+).+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Google Search Appliance on iOS\n ], [[NAME, 'GSA'], VERSION], [\n\n /webkit.+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [\n\n /(konqueror)\\/([\\w\\.]+)/i, // Konqueror\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape)\\/([\\w\\.-]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo\\sbrowser|minimo|conkeror)[\\/\\s]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([\\w\\.-]+)$/i,\n\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(mozilla)\\/([\\w\\.]+).+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\\/\\s]?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir\n /(links)\\s\\(([\\w\\.]+)/i, // Links\n /(gobrowser)\\/?([\\w\\.]*)/i, // GoBrowser\n /(ice\\s?browser)\\/v?([\\w\\._]+)/i, // ICE Browser\n /(mosaic)[\\/\\s]([\\w\\.]+)/i // Mosaic\n ], [NAME, VERSION]\n\n /* /////////////////////\n // Media players BEGIN\n ////////////////////////\n\n , [\n\n /(apple(?:coremedia|))\\/((\\d+)[\\w\\._]+)/i, // Generic Apple CoreMedia\n /(coremedia) v((\\d+)[\\w\\._]+)/i\n ], [NAME, VERSION], [\n\n /(aqualung|lyssna|bsplayer)\\/((\\d+)?[\\w\\.-]+)/i // Aqualung/Lyssna/BSPlayer\n ], [NAME, VERSION], [\n\n /(ares|ossproxy)\\s((\\d+)[\\w\\.-]+)/i // Ares/OSSProxy\n ], [NAME, VERSION], [\n\n /(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\\/((\\d+)[\\w\\.-]+)/i,\n // Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC\n // NSPlayer/PSP-InternetRadioPlayer/Videos\n /(clementine|music player daemon)\\s((\\d+)[\\w\\.-]+)/i, // Clementine/MPD\n /(lg player|nexplayer)\\s((\\d+)[\\d\\.]+)/i,\n /player\\/(nexplayer|lg player)\\s((\\d+)[\\w\\.-]+)/i // NexPlayer/LG Player\n ], [NAME, VERSION], [\n /(nexplayer)\\s((\\d+)[\\w\\.-]+)/i // Nexplayer\n ], [NAME, VERSION], [\n\n /(flrp)\\/((\\d+)[\\w\\.-]+)/i // Flip Player\n ], [[NAME, 'Flip Player'], VERSION], [\n\n /(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i\n // FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit\n ], [NAME], [\n\n /(gstreamer) souphttpsrc (?:\\([^\\)]+\\)){0,1} libsoup\\/((\\d+)[\\w\\.-]+)/i\n // Gstreamer\n ], [NAME, VERSION], [\n\n /(htc streaming player)\\s[\\w_]+\\s\\/\\s((\\d+)[\\d\\.]+)/i, // HTC Streaming Player\n /(java|python-urllib|python-requests|wget|libcurl)\\/((\\d+)[\\w\\.-_]+)/i,\n // Java/urllib/requests/wget/cURL\n /(lavf)((\\d+)[\\d\\.]+)/i // Lavf (FFMPEG)\n ], [NAME, VERSION], [\n\n /(htc_one_s)\\/((\\d+)[\\d\\.]+)/i // HTC One S\n ], [[NAME, /_/g, ' '], VERSION], [\n\n /(mplayer)(?:\\s|\\/)(?:(?:sherpya-){0,1}svn)(?:-|\\s)(r\\d+(?:-\\d+[\\w\\.-]+){0,1})/i\n // MPlayer SVN\n ], [NAME, VERSION], [\n\n /(mplayer)(?:\\s|\\/|[unkow-]+)((\\d+)[\\w\\.-]+)/i // MPlayer\n ], [NAME, VERSION], [\n\n /(mplayer)/i, // MPlayer (no other info)\n /(yourmuze)/i, // YourMuze\n /(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime\n ], [NAME], [\n\n /(nero (?:home|scout))\\/((\\d+)[\\w\\.-]+)/i // Nero Home/Nero Scout\n ], [NAME, VERSION], [\n\n /(nokia\\d+)\\/((\\d+)[\\w\\.-]+)/i // Nokia\n ], [NAME, VERSION], [\n\n /\\s(songbird)\\/((\\d+)[\\w\\.-]+)/i // Songbird/Philips-Songbird\n ], [NAME, VERSION], [\n\n /(winamp)3 version ((\\d+)[\\w\\.-]+)/i, // Winamp\n /(winamp)\\s((\\d+)[\\w\\.-]+)/i,\n /(winamp)mpeg\\/((\\d+)[\\w\\.-]+)/i\n ], [NAME, VERSION], [\n\n /(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info)\n // inlight radio\n ], [NAME], [\n\n /(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\\/((\\d+)[\\w\\.-]+)/i\n // QuickTime/RealMedia/RadioApp/RadioClientApplication/\n // SoundTap/Totem/Stagefright/Streamium\n ], [NAME, VERSION], [\n\n /(smp)((\\d+)[\\d\\.]+)/i // SMP\n ], [NAME, VERSION], [\n\n /(vlc) media player - version ((\\d+)[\\w\\.]+)/i, // VLC Videolan\n /(vlc)\\/((\\d+)[\\w\\.-]+)/i,\n /(xbmc|gvfs|xine|xmms|irapp)\\/((\\d+)[\\w\\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp\n /(foobar2000)\\/((\\d+)[\\d\\.]+)/i, // Foobar2000\n /(itunes)\\/((\\d+)[\\d\\.]+)/i // iTunes\n ], [NAME, VERSION], [\n\n /(wmplayer)\\/((\\d+)[\\w\\.-]+)/i, // Windows Media Player\n /(windows-media-player)\\/((\\d+)[\\w\\.-]+)/i\n ], [[NAME, /-/g, ' '], VERSION], [\n\n /windows\\/((\\d+)[\\w\\.-]+) upnp\\/[\\d\\.]+ dlnadoc\\/[\\d\\.]+ (home media server)/i\n // Windows Media Server\n ], [VERSION, [NAME, 'Windows']], [\n\n /(com\\.riseupradioalarm)\\/((\\d+)[\\d\\.]*)/i // RiseUP Radio Alarm\n ], [NAME, VERSION], [\n\n /(rad.io)\\s((\\d+)[\\d\\.]+)/i, // Rad.io\n /(radio.(?:de|at|fr))\\s((\\d+)[\\d\\.]+)/i\n ], [[NAME, 'rad.io'], VERSION]\n\n //////////////////////\n // Media players END\n ////////////////////*/\n\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\\)]/i // AMD64\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, util.lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32\n ], [[ARCHITECTURE, 'ia32']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows\\s(ce|mobile);\\sppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?:\\smac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|arm(?:64|(?=v\\d+;))|(?=atmel\\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, util.lowerize]]\n ],\n\n device : [[\n\n /\\((ipad|playbook);[\\w\\s\\);-]+(rim|apple)/i // iPad/PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/ // iPad\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [\n\n /(apple\\s{0,1}tv)/i // Apple TV\n ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple']], [\n\n /(archos)\\s(gamepad2?)/i, // Archos\n /(hp).+(touchpad)/i, // HP TouchPad\n /(hp).+(tablet)/i, // HP Tablet\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /\\s(nook)[\\w\\s]+build\\/(\\w+)/i, // Nook\n /(dell)\\s(strea[kpr\\s\\d]*[\\dko])/i // Dell Streak\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(kf[A-z]+)\\sbuild\\/.+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n /(sd|kf)[0349hijorstuw]+\\sbuild\\/.+silk\\//i // Fire Phone\n ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [\n\n /\\((ip[honed|\\s\\w*]+);.+(apple)/i // iPod/iPhone\n ], [MODEL, VENDOR, [TYPE, MOBILE]], [\n /\\((ip[honed|\\s\\w*]+);/i // iPod/iPhone\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [\n\n /(blackberry)[\\s-]?(\\w+)/i, // BlackBerry\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\\s_-]?([\\w-]*)/i,\n // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp)\\s([\\w\\s]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i // Asus\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /\\(bb10;\\s(\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [\n // Asus Tablets\n /android.+(transfo[prime\\s]{4,10}\\s\\w+|eeepc|slider\\s\\w+|nexus 7|padfone)/i\n ], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [\n\n /(sony)\\s(tablet\\s[ps])\\sbuild\\//i, // Sony\n /(sony)?(?:sgp.+)\\sbuild\\//i\n ], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [\n /android.+\\s([c-g]\\d{4}|so[-l]\\w+)\\sbuild\\//i\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n\n /\\s(ouya)\\s/i, // Ouya\n /(nintendo)\\s([wids3u]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n\n /android.+;\\s(shield)\\sbuild/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n\n /(playstation\\s[34portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [\n\n /(sprint\\s(\\w+))/i // Sprint Phones\n ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [\n\n /(lenovo)\\s?(S(?:5000|6000)+(?:[-][\\w+]))/i // Lenovo tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(htc)[;_\\s-]+([\\w\\s]+(?=\\))|\\w+)*/i, // HTC\n /(zte)-(\\w*)/i, // ZTE\n /(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\\s)sony)[_\\s-]?([\\w-]*)/i\n // Alcatel/GeeksPhone/Lenovo/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n /(nexus\\s9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n\n /d\\/huawei([\\w\\s-]+)[;\\)]/i,\n /(nexus\\s6p)/i // Huawei\n ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [\n\n /(microsoft);\\s(lumia[\\s\\w]+)/i // Microsoft Lumia\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /[\\s\\(;](xbox(?:\\sone)?)[\\s\\);]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\s(milestone|droid(?:[2-4x]|\\s(?:bionic|x2|pro|razr))?:?(\\s4g)?)[\\w\\s]+build\\//i,\n /mot[\\s-]?(\\w*)/i,\n /(XT\\d{3,4}) build\\//i,\n /(nexus\\s6)/i\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [\n /android.+\\s(mz60\\d|xoom[\\s2]{0,2})\\sbuild\\//i\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [\n\n /hbbtv\\/\\d+\\.\\d+\\.\\d+\\s+\\([\\w\\s]*;\\s*(\\w[^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [\n\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [\n\n /\\(dtv[\\);].+(aquos)/i // Sharp\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n\n /android.+((sch-i[89]0\\d|shw-m380s|gt-p\\d{4}|gt-n\\d+|sgh-t8[56]9|nexus 10))/i,\n /((SM-T\\w+))/i\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [ // Samsung\n /smart-tv.+(samsung)/i\n ], [VENDOR, [TYPE, SMARTTV], MODEL], [\n /((s[cgp]h-\\w+|gt-\\w+|galaxy\\snexus|sm-\\w[\\w\\d]+))/i,\n /(sam[sung]*)[\\s-]*(\\w+-?[\\w-]*)/i,\n /sec-((sgh\\w+))/i\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [\n\n /sie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n\n /(maemo|nokia).*(n900|lumia\\s\\d+)/i, // Nokia\n /(nokia)[\\s_-]?([\\w-]*)/i\n ], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [\n\n /android\\s3\\.[\\s\\w;-]{10}(a\\d{3})/i // Acer\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n /android.+([vl]k\\-?\\d{3})\\s+build/i // LG Tablet\n ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [\n /android\\s3\\.[\\s\\w;-]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet\n ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [\n /(lg) netcast\\.tv/i // LG SmartTV\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /(nexus\\s[45])/i, // LG\n /lg[e;\\s\\/-]+(\\w*)/i,\n /android.+lg(\\-?[\\d\\w]+)\\s+build/i\n ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [\n\n /android.+(ideatab[a-z0-9\\-\\s]+)/i // Lenovo\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n /linux;.+((jolla));/i // Jolla\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /((pebble))app\\/[\\d\\.]+\\s/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n\n /android.+;\\s(oppo)\\s?([\\w\\s]+)\\sbuild/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /crkey/i // Google Chromecast\n ], [[MODEL, 'Chromecast'], [VENDOR, 'Google']], [\n\n /android.+;\\s(glass)\\s\\d/i // Google Glass\n ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [\n\n /android.+;\\s(pixel c)\\s/i // Google Pixel C\n ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [\n\n /android.+;\\s(pixel xl|pixel)\\s/i // Google Pixel\n ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [\n\n /android.+;\\s(\\w+)\\s+build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /android.+(hm[\\s\\-_]*note?[\\s_]*(?:\\d\\w)?)\\s+build/i, // Xiaomi Hongmi\n /android.+(mi[\\s\\-_]*(?:one|one[\\s_]plus|note lte)?[\\s_]*(?:\\d?\\w?)[\\s_]*(?:plus)?)\\s+build/i, // Xiaomi Mi\n /android.+(redmi[\\s\\-_]*(?:note)?(?:[\\s_]*[\\w\\s]+))\\s+build/i // Redmi Phones\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [\n /android.+(mi[\\s\\-_]*(?:pad)(?:[\\s_]*[\\w\\s]+))\\s+build/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [\n /android.+;\\s(m[1-5]\\snote)\\sbuild/i // Meizu Tablet\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, TABLET]], [\n\n /android.+a000(1)\\s+build/i, // OnePlus\n /android.+oneplus\\s(a\\d{4})\\s+build/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(RCT[\\d\\w]+)\\s+build/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n\n /android.+[;\\/\\s]+(Venue[\\d\\s]{2,7})\\s+build/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Q[T|M][\\d\\w]+)\\s+build/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s+(Barnes[&\\s]+Noble\\s+|BN[RT])(V?.*)\\s+build/i // Barnes & Noble Tablet\n ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s+(TM\\d{3}.*\\b)\\s+build/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n\n /android.+;\\s(k88)\\sbuild/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(gen\\d{3})\\s+build.*49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(zur\\d{3})\\s+build/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*((Zeki)?TB.*\\b)\\s+build/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n\n /(android).+[;\\/]\\s+([YR]\\d{2})\\s+build/i,\n /android.+[;\\/]\\s+(Dragon[\\-\\s]+Touch\\s+|DT)(\\w{5})\\sbuild/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(NS-?\\w{0,9})\\sbuild/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*((NX|Next)-?\\w{0,9})\\s+build/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Xtreme\\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\\s+build/i\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [ // Voice Xtreme Phones\n\n /android.+[;\\/]\\s*(LVTEL\\-)?(V1[12])\\s+build/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(V(100MD|700NA|7011|917G).*\\b)\\s+build/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Le[\\s\\-]+Pan)[\\s\\-]+(\\w{1,9})\\s+build/i // Le Pan Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Trio[\\s\\-]*.*)\\s+build/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Trinity)[\\-\\s]*(T\\d{3})\\s+build/i // Trinity Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*TU_(1491)\\s+build/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n\n /android.+(KS(.+))\\s+build/i // Amazon Kindle Tablets\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n\n /android.+(Gigaset)[\\s\\-]+(Q\\w{1,9})\\s+build/i // Gigaset Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /\\s(tablet|tab)[;\\/]/i, // Unidentifiable Tablet\n /\\s(mobile)(?:[;\\/]|\\ssafari)/i // Unidentifiable Mobile\n ], [[TYPE, util.lowerize], VENDOR, MODEL], [\n\n /(android[\\w\\.\\s\\-]{0,9});.+build/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n\n\n /*//////////////////////////\n // TODO: move to string map\n ////////////////////////////\n\n /(C6603)/i // Sony Xperia Z C6603\n ], [[MODEL, 'Xperia Z C6603'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n /(C6903)/i // Sony Xperia Z 1\n ], [[MODEL, 'Xperia Z 1'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n\n /(SM-G900[F|H])/i // Samsung Galaxy S5\n ], [[MODEL, 'Galaxy S5'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G7102)/i // Samsung Galaxy Grand 2\n ], [[MODEL, 'Galaxy Grand 2'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G530H)/i // Samsung Galaxy Grand Prime\n ], [[MODEL, 'Galaxy Grand Prime'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G313HZ)/i // Samsung Galaxy V\n ], [[MODEL, 'Galaxy V'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-T805)/i // Samsung Galaxy Tab S 10.5\n ], [[MODEL, 'Galaxy Tab S 10.5'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\n /(SM-G800F)/i // Samsung Galaxy S5 Mini\n ], [[MODEL, 'Galaxy S5 Mini'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-T311)/i // Samsung Galaxy Tab 3 8.0\n ], [[MODEL, 'Galaxy Tab 3 8.0'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\n\n /(T3C)/i // Advan Vandroid T3C\n ], [MODEL, [VENDOR, 'Advan'], [TYPE, TABLET]], [\n /(ADVAN T1J\\+)/i // Advan Vandroid T1J+\n ], [[MODEL, 'Vandroid T1J+'], [VENDOR, 'Advan'], [TYPE, TABLET]], [\n /(ADVAN S4A)/i // Advan Vandroid S4A\n ], [[MODEL, 'Vandroid S4A'], [VENDOR, 'Advan'], [TYPE, MOBILE]], [\n\n /(V972M)/i // ZTE V972M\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n\n /(i-mobile)\\s(IQ\\s[\\d\\.]+)/i // i-mobile IQ\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(IQ6.3)/i // i-mobile IQ IQ 6.3\n ], [[MODEL, 'IQ 6.3'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\n /(i-mobile)\\s(i-style\\s[\\d\\.]+)/i // i-mobile i-STYLE\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(i-STYLE2.1)/i // i-mobile i-STYLE 2.1\n ], [[MODEL, 'i-STYLE 2.1'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\n\n /(mobiistar touch LAI 512)/i // mobiistar touch LAI 512\n ], [[MODEL, 'Touch LAI 512'], [VENDOR, 'mobiistar'], [TYPE, MOBILE]], [\n\n /////////////\n // END TODO\n ///////////*/\n\n ],\n\n engine : [[\n\n /windows.+\\sedge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, 'EdgeHTML']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m\n /(khtml|tasman|links)[\\/\\s]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/\\s]([23]\\.[\\d\\.]+)/i // iCab\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9}).+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows based\n /microsoft\\s(windows)\\s(vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows)\\snt\\s6\\.2;\\s(arm)/i, // Windows RT\n /(windows\\sphone(?:\\sos)*)[\\s\\/]?([\\d\\.\\s\\w]*)/i, // Windows Phone\n /(windows\\smobile|windows)[\\s\\/]?([ntce\\d\\.\\s]+\\w)/i\n ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [\n /(win(?=3|9|n)|win\\s9x\\s)([nt\\d\\.]+)/i\n ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [\n\n // Mobile/Embedded OS\n /\\((bb)(10);/i // BlackBerry 10\n ], [[NAME, 'BlackBerry'], VERSION], [\n /(blackberry)\\w*\\/?([\\w\\.]*)/i, // Blackberry\n /(tizen)[\\/\\s]([\\w\\.]+)/i, // Tizen\n /(android|webos|palm\\sos|qnx|bada|rim\\stablet\\sos|meego|contiki)[\\/\\s-]?([\\w\\.]*)/i,\n // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki\n /linux;.+(sailfish);/i // Sailfish OS\n ], [NAME, VERSION], [\n /(symbian\\s?os|symbos|s60(?=;))[\\/\\s-]?([\\w\\.]*)/i // Symbian\n ], [[NAME, 'Symbian'], VERSION], [\n /\\((series40);/i // Series 40\n ], [NAME], [\n /mozilla.+\\(mobile;.+gecko.+firefox/i // Firefox OS\n ], [[NAME, 'Firefox OS'], VERSION], [\n\n // Console\n /(nintendo|playstation)\\s([wids34portablevu]+)/i, // Nintendo/Playstation\n\n // GNU/Linux based\n /(mint)[\\/\\s\\(]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[;\\s]/i, // Mageia/VectorLinux\n /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\\/\\s-]?(?!chrom)([\\w\\.-]*)/i,\n // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware\n // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus\n /(hurd|linux)\\s?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu)\\s?([\\w\\.]*)/i // GNU\n ], [NAME, VERSION], [\n\n /(cros)\\s[\\w]+\\s([\\w\\.]+\\w)/i // Chromium OS\n ], [[NAME, 'Chromium OS'], VERSION],[\n\n // Solaris\n /(sunos)\\s?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n\n // BSD based\n /\\s([frentopc-]{0,4}bsd|dragonfly)\\s?([\\w\\.]*)/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly\n ], [NAME, VERSION],[\n\n /(haiku)\\s(\\w+)/i // Haiku\n ], [NAME, VERSION],[\n\n /cfnetwork\\/.+darwin/i,\n /ip[honead]{2,4}(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i // iOS\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n\n /(mac\\sos\\sx)\\s?([\\w\\s\\.]*)/i,\n /(macintosh|mac(?=_powerpc)\\s)/i // Mac OS\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n // Other\n /((?:open)?solaris)[\\/\\s-]?([\\w\\.]*)/i, // Solaris\n /(aix)\\s((\\d)(?=\\.|\\)|\\s)[\\w\\.])*/i, // AIX\n /(plan\\s9|minix|beos|os\\/2|amigaos|morphos|risc\\sos|openvms)/i,\n // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS\n /(unix)\\s?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n\n /////////////////\n // Constructor\n ////////////////\n /*\n var Browser = function (name, version) {\n this[NAME] = name;\n this[VERSION] = version;\n };\n var CPU = function (arch) {\n this[ARCHITECTURE] = arch;\n };\n var Device = function (vendor, model, type) {\n this[VENDOR] = vendor;\n this[MODEL] = model;\n this[TYPE] = type;\n };\n var Engine = Browser;\n var OS = Browser;\n */\n var UAParser = function (uastring, extensions) {\n\n if (typeof uastring === 'object') {\n extensions = uastring;\n uastring = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(uastring, extensions).getResult();\n }\n\n var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;\n //var browser = new Browser();\n //var cpu = new CPU();\n //var device = new Device();\n //var engine = new Engine();\n //var os = new OS();\n\n this.getBrowser = function () {\n var browser = { name: undefined, version: undefined };\n mapper.rgx.call(browser, ua, rgxmap.browser);\n browser.major = util.major(browser.version); // deprecated\n return browser;\n };\n this.getCPU = function () {\n var cpu = { architecture: undefined };\n mapper.rgx.call(cpu, ua, rgxmap.cpu);\n return cpu;\n };\n this.getDevice = function () {\n var device = { vendor: undefined, model: undefined, type: undefined };\n mapper.rgx.call(device, ua, rgxmap.device);\n return device;\n };\n this.getEngine = function () {\n var engine = { name: undefined, version: undefined };\n mapper.rgx.call(engine, ua, rgxmap.engine);\n return engine;\n };\n this.getOS = function () {\n var os = { name: undefined, version: undefined };\n mapper.rgx.call(os, ua, rgxmap.os);\n return os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return ua;\n };\n this.setUA = function (uastring) {\n ua = uastring;\n //browser = new Browser();\n //cpu = new CPU();\n //device = new Device();\n //engine = new Engine();\n //os = new OS();\n return this;\n };\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = {\n NAME : NAME,\n MAJOR : MAJOR, // deprecated\n VERSION : VERSION\n };\n UAParser.CPU = {\n ARCHITECTURE : ARCHITECTURE\n };\n UAParser.DEVICE = {\n MODEL : MODEL,\n VENDOR : VENDOR,\n TYPE : TYPE,\n CONSOLE : CONSOLE,\n MOBILE : MOBILE,\n SMARTTV : SMARTTV,\n TABLET : TABLET,\n WEARABLE: WEARABLE,\n EMBEDDED: EMBEDDED\n };\n UAParser.ENGINE = {\n NAME : NAME,\n VERSION : VERSION\n };\n UAParser.OS = {\n NAME : NAME,\n VERSION : VERSION\n };\n //UAParser.Utils = util;\n\n ///////////\n // Export\n //////////\n\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n // TODO: test!!!!!!!!\n /*\n if (require && require.main === module && process) {\n // cli\n var jsonize = function (arr) {\n var res = [];\n for (var i in arr) {\n res.push(new UAParser(arr[i]).getResult());\n }\n process.stdout.write(JSON.stringify(res, null, 2) + '\\n');\n };\n if (process.stdin.isTTY) {\n // via args\n jsonize(process.argv.slice(2));\n } else {\n // via pipe\n var str = '';\n process.stdin.on('readable', function() {\n var read = process.stdin.read();\n if (read !== null) {\n str += read;\n }\n });\n process.stdin.on('end', function () {\n jsonize(str.replace(/\\n$/, '').split('\\n'));\n });\n }\n }\n */\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (window) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = window && (window.jQuery || window.Zepto);\n if (typeof $ !== UNDEF_TYPE) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (uastring) {\n parser.setUA(uastring);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/*\n * THIS FILE IS AUTO-GENERATED\n * You can edit it you like, but your changes will be overwritten,\n * so you'd just be trying to swim upstream like a salmon.\n * You are not a salmon.\n */\n\nlet components = require('matrix-react-sdk/lib/component-index').components;\nif (!components) {\n throw new Error(\"'matrix-react-sdk/lib/component-index' didn't export components\");\n}\nimport structures$VectorHomePage from './components/structures/VectorHomePage';\nstructures$VectorHomePage && (components['structures.VectorHomePage'] = structures$VectorHomePage);\nimport views$login$VectorCustomServerDialog from './components/views/login/VectorCustomServerDialog';\nviews$login$VectorCustomServerDialog && (components['views.login.VectorCustomServerDialog'] = views$login$VectorCustomServerDialog);\nimport views$login$VectorLoginFooter from './components/views/login/VectorLoginFooter';\nviews$login$VectorLoginFooter && (components['views.login.VectorLoginFooter'] = views$login$VectorLoginFooter);\nimport views$login$VectorLoginHeader from './components/views/login/VectorLoginHeader';\nviews$login$VectorLoginHeader && (components['views.login.VectorLoginHeader'] = views$login$VectorLoginHeader);\nexport {components};\n","/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nimport React from 'react';\nimport HomePage from 'matrix-react-sdk/lib/components/structures/HomePage';\nimport sanitizeHtml from 'sanitize-html';\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\n\nclass VectorHomePage extends HomePage {\n static displayName = 'VectorHomePage';\n static replaces = 'HomePage';\n\n // we're overriding the base component here, for Riot-specific tweaks\n translate(s) {\n s = sanitizeHtml(_t(s));\n // ugly fix for https://github.com/vector-im/riot-web/issues/4243\n s = s.replace(/Riot\\.im/, '<a href=\"https://riot.im\" target=\"_blank\" rel=\"noopener\">Riot.im</a>');\n s = s.replace(/\\[matrix\\]/, '<a href=\"https://matrix.org\" target=\"_blank\" rel=\"noopener\"><img width=\"79\" height=\"34\" alt=\"[matrix]\" style=\"padding-left: 1px;vertical-align: middle\" src=\"home/images/matrix.svg\"/></a>');\n return s;\n }\n}\n\nmodule.exports = VectorHomePage;\n","var ElementType = require(\"domelementtype\");\n\nvar re_whitespace = /\\s+/g;\nvar NodePrototype = require(\"./lib/node\");\nvar ElementPrototype = require(\"./lib/element\");\n\nfunction DomHandler(callback, options, elementCB){\n\tif(typeof callback === \"object\"){\n\t\telementCB = options;\n\t\toptions = callback;\n\t\tcallback = null;\n\t} else if(typeof options === \"function\"){\n\t\telementCB = options;\n\t\toptions = defaultOpts;\n\t}\n\tthis._callback = callback;\n\tthis._options = options || defaultOpts;\n\tthis._elementCB = elementCB;\n\tthis.dom = [];\n\tthis._done = false;\n\tthis._tagStack = [];\n\tthis._parser = this._parser || null;\n}\n\n//default options\nvar defaultOpts = {\n\tnormalizeWhitespace: false, //Replace all whitespace with single spaces\n\twithStartIndices: false, //Add startIndex properties to nodes\n\twithEndIndices: false, //Add endIndex properties to nodes\n};\n\nDomHandler.prototype.onparserinit = function(parser){\n\tthis._parser = parser;\n};\n\n//Resets the handler back to starting state\nDomHandler.prototype.onreset = function(){\n\tDomHandler.call(this, this._callback, this._options, this._elementCB);\n};\n\n//Signals the handler that parsing is done\nDomHandler.prototype.onend = function(){\n\tif(this._done) return;\n\tthis._done = true;\n\tthis._parser = null;\n\tthis._handleCallback(null);\n};\n\nDomHandler.prototype._handleCallback =\nDomHandler.prototype.onerror = function(error){\n\tif(typeof this._callback === \"function\"){\n\t\tthis._callback(error, this.dom);\n\t} else {\n\t\tif(error) throw error;\n\t}\n};\n\nDomHandler.prototype.onclosetag = function(){\n\t//if(this._tagStack.pop().name !== name) this._handleCallback(Error(\"Tagname didn't match!\"));\n\t\n\tvar elem = this._tagStack.pop();\n\n\tif(this._options.withEndIndices && elem){\n\t\telem.endIndex = this._parser.endIndex;\n\t}\n\n\tif(this._elementCB) this._elementCB(elem);\n};\n\nDomHandler.prototype._createDomElement = function(properties){\n\tif (!this._options.withDomLvl1) return properties;\n\n\tvar element;\n\tif (properties.type === \"tag\") {\n\t\telement = Object.create(ElementPrototype);\n\t} else {\n\t\telement = Object.create(NodePrototype);\n\t}\n\n\tfor (var key in properties) {\n\t\tif (properties.hasOwnProperty(key)) {\n\t\t\telement[key] = properties[key];\n\t\t}\n\t}\n\n\treturn element;\n};\n\nDomHandler.prototype._addDomElement = function(element){\n\tvar parent = this._tagStack[this._tagStack.length - 1];\n\tvar siblings = parent ? parent.children : this.dom;\n\tvar previousSibling = siblings[siblings.length - 1];\n\n\telement.next = null;\n\n\tif(this._options.withStartIndices){\n\t\telement.startIndex = this._parser.startIndex;\n\t}\n\tif(this._options.withEndIndices){\n\t\telement.endIndex = this._parser.endIndex;\n\t}\n\n\tif(previousSibling){\n\t\telement.prev = previousSibling;\n\t\tpreviousSibling.next = element;\n\t} else {\n\t\telement.prev = null;\n\t}\n\n\tsiblings.push(element);\n\telement.parent = parent || null;\n};\n\nDomHandler.prototype.onopentag = function(name, attribs){\n\tvar properties = {\n\t\ttype: name === \"script\" ? ElementType.Script : name === \"style\" ? ElementType.Style : ElementType.Tag,\n\t\tname: name,\n\t\tattribs: attribs,\n\t\tchildren: []\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.ontext = function(data){\n\t//the ignoreWhitespace is officially dropped, but for now,\n\t//it's an alias for normalizeWhitespace\n\tvar normalize = this._options.normalizeWhitespace || this._options.ignoreWhitespace;\n\n\tvar lastTag;\n\n\tif(!this._tagStack.length && this.dom.length && (lastTag = this.dom[this.dom.length-1]).type === ElementType.Text){\n\t\tif(normalize){\n\t\t\tlastTag.data = (lastTag.data + data).replace(re_whitespace, \" \");\n\t\t} else {\n\t\t\tlastTag.data += data;\n\t\t}\n\t} else {\n\t\tif(\n\t\t\tthis._tagStack.length &&\n\t\t\t(lastTag = this._tagStack[this._tagStack.length - 1]) &&\n\t\t\t(lastTag = lastTag.children[lastTag.children.length - 1]) &&\n\t\t\tlastTag.type === ElementType.Text\n\t\t){\n\t\t\tif(normalize){\n\t\t\t\tlastTag.data = (lastTag.data + data).replace(re_whitespace, \" \");\n\t\t\t} else {\n\t\t\t\tlastTag.data += data;\n\t\t\t}\n\t\t} else {\n\t\t\tif(normalize){\n\t\t\t\tdata = data.replace(re_whitespace, \" \");\n\t\t\t}\n\n\t\t\tvar element = this._createDomElement({\n\t\t\t\tdata: data,\n\t\t\t\ttype: ElementType.Text\n\t\t\t});\n\n\t\t\tthis._addDomElement(element);\n\t\t}\n\t}\n};\n\nDomHandler.prototype.oncomment = function(data){\n\tvar lastTag = this._tagStack[this._tagStack.length - 1];\n\n\tif(lastTag && lastTag.type === ElementType.Comment){\n\t\tlastTag.data += data;\n\t\treturn;\n\t}\n\n\tvar properties = {\n\t\tdata: data,\n\t\ttype: ElementType.Comment\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.oncdatastart = function(){\n\tvar properties = {\n\t\tchildren: [{\n\t\t\tdata: \"\",\n\t\t\ttype: ElementType.Text\n\t\t}],\n\t\ttype: ElementType.CDATA\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.oncommentend = DomHandler.prototype.oncdataend = function(){\n\tthis._tagStack.pop();\n};\n\nDomHandler.prototype.onprocessinginstruction = function(name, data){\n\tvar element = this._createDomElement({\n\t\tname: name,\n\t\tdata: data,\n\t\ttype: ElementType.Directive\n\t});\n\n\tthis._addDomElement(element);\n};\n\nmodule.exports = DomHandler;\n","// DOM-Level-1-compliant structure\nvar NodePrototype = require('./node');\nvar ElementPrototype = module.exports = Object.create(NodePrototype);\n\nvar domLvl1 = {\n\ttagName: \"name\"\n};\n\nObject.keys(domLvl1).forEach(function(key) {\n\tvar shorthand = domLvl1[key];\n\tObject.defineProperty(ElementPrototype, key, {\n\t\tget: function() {\n\t\t\treturn this[shorthand] || null;\n\t\t},\n\t\tset: function(val) {\n\t\t\tthis[shorthand] = val;\n\t\t\treturn val;\n\t\t}\n\t});\n});\n","var index = require(\"./index.js\"),\n DomHandler = index.DomHandler,\n DomUtils = index.DomUtils;\n\n//TODO: make this a streamable handler\nfunction FeedHandler(callback, options){\n\tthis.init(callback, options);\n}\n\nrequire(\"inherits\")(FeedHandler, DomHandler);\n\nFeedHandler.prototype.init = DomHandler;\n\nfunction getElements(what, where){\n\treturn DomUtils.getElementsByTagName(what, where, true);\n}\nfunction getOneElement(what, where){\n\treturn DomUtils.getElementsByTagName(what, where, true, 1)[0];\n}\nfunction fetch(what, where, recurse){\n\treturn DomUtils.getText(\n\t\tDomUtils.getElementsByTagName(what, where, recurse, 1)\n\t).trim();\n}\n\nfunction addConditionally(obj, prop, what, where, recurse){\n\tvar tmp = fetch(what, where, recurse);\n\tif(tmp) obj[prop] = tmp;\n}\n\nvar isValidFeed = function(value){\n\treturn value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n};\n\nFeedHandler.prototype.onend = function(){\n\tvar feed = {},\n\t feedRoot = getOneElement(isValidFeed, this.dom),\n\t tmp, childs;\n\n\tif(feedRoot){\n\t\tif(feedRoot.name === \"feed\"){\n\t\t\tchilds = feedRoot.children;\n\n\t\t\tfeed.type = \"atom\";\n\t\t\taddConditionally(feed, \"id\", \"id\", childs);\n\t\t\taddConditionally(feed, \"title\", \"title\", childs);\n\t\t\tif((tmp = getOneElement(\"link\", childs)) && (tmp = tmp.attribs) && (tmp = tmp.href)) feed.link = tmp;\n\t\t\taddConditionally(feed, \"description\", \"subtitle\", childs);\n\t\t\tif((tmp = fetch(\"updated\", childs))) feed.updated = new Date(tmp);\n\t\t\taddConditionally(feed, \"author\", \"email\", childs, true);\n\n\t\t\tfeed.items = getElements(\"entry\", childs).map(function(item){\n\t\t\t\tvar entry = {}, tmp;\n\n\t\t\t\titem = item.children;\n\n\t\t\t\taddConditionally(entry, \"id\", \"id\", item);\n\t\t\t\taddConditionally(entry, \"title\", \"title\", item);\n\t\t\t\tif((tmp = getOneElement(\"link\", item)) && (tmp = tmp.attribs) && (tmp = tmp.href)) entry.link = tmp;\n\t\t\t\tif((tmp = fetch(\"summary\", item) || fetch(\"content\", item))) entry.description = tmp;\n\t\t\t\tif((tmp = fetch(\"updated\", item))) entry.pubDate = new Date(tmp);\n\t\t\t\treturn entry;\n\t\t\t});\n\t\t} else {\n\t\t\tchilds = getOneElement(\"channel\", feedRoot.children).children;\n\n\t\t\tfeed.type = feedRoot.name.substr(0, 3);\n\t\t\tfeed.id = \"\";\n\t\t\taddConditionally(feed, \"title\", \"title\", childs);\n\t\t\taddConditionally(feed, \"link\", \"link\", childs);\n\t\t\taddConditionally(feed, \"description\", \"description\", childs);\n\t\t\tif((tmp = fetch(\"lastBuildDate\", childs))) feed.updated = new Date(tmp);\n\t\t\taddConditionally(feed, \"author\", \"managingEditor\", childs, true);\n\n\t\t\tfeed.items = getElements(\"item\", feedRoot.children).map(function(item){\n\t\t\t\tvar entry = {}, tmp;\n\n\t\t\t\titem = item.children;\n\n\t\t\t\taddConditionally(entry, \"id\", \"guid\", item);\n\t\t\t\taddConditionally(entry, \"title\", \"title\", item);\n\t\t\t\taddConditionally(entry, \"link\", \"link\", item);\n\t\t\t\taddConditionally(entry, \"description\", \"description\", item);\n\t\t\t\tif((tmp = fetch(\"pubDate\", item))) entry.pubDate = new Date(tmp);\n\t\t\t\treturn entry;\n\t\t\t});\n\t\t}\n\t}\n\tthis.dom = feed;\n\tDomHandler.prototype._handleCallback.call(\n\t\tthis, feedRoot ? null : Error(\"couldn't find root of feed\")\n\t);\n};\n\nmodule.exports = FeedHandler;\n","module.exports = Stream;\n\nvar Parser = require(\"./WritableStream.js\");\n\nfunction Stream(options){\n\tParser.call(this, new Cbs(this), options);\n}\n\nrequire(\"inherits\")(Stream, Parser);\n\nStream.prototype.readable = true;\n\nfunction Cbs(scope){\n\tthis.scope = scope;\n}\n\nvar EVENTS = require(\"../\").EVENTS;\n\nObject.keys(EVENTS).forEach(function(name){\n\tif(EVENTS[name] === 0){\n\t\tCbs.prototype[\"on\" + name] = function(){\n\t\t\tthis.scope.emit(name);\n\t\t};\n\t} else if(EVENTS[name] === 1){\n\t\tCbs.prototype[\"on\" + name] = function(a){\n\t\t\tthis.scope.emit(name, a);\n\t\t};\n\t} else if(EVENTS[name] === 2){\n\t\tCbs.prototype[\"on\" + name] = function(a, b){\n\t\t\tthis.scope.emit(name, a, b);\n\t\t};\n\t} else {\n\t\tthrow Error(\"wrong number of arguments!\");\n\t}\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","'use strict';\n\n/*<replacement>*/\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","module.exports = require('./lib/_stream_writable.js');\n","module.exports = require('./lib/_stream_duplex.js');\n","module.exports = require('./readable').Transform\n","module.exports = require('./readable').PassThrough\n","module.exports = ProxyHandler;\n\nfunction ProxyHandler(cbs){\n\tthis._cbs = cbs || {};\n}\n\nvar EVENTS = require(\"./\").EVENTS;\nObject.keys(EVENTS).forEach(function(name){\n\tif(EVENTS[name] === 0){\n\t\tname = \"on\" + name;\n\t\tProxyHandler.prototype[name] = function(){\n\t\t\tif(this._cbs[name]) this._cbs[name]();\n\t\t};\n\t} else if(EVENTS[name] === 1){\n\t\tname = \"on\" + name;\n\t\tProxyHandler.prototype[name] = function(a){\n\t\t\tif(this._cbs[name]) this._cbs[name](a);\n\t\t};\n\t} else if(EVENTS[name] === 2){\n\t\tname = \"on\" + name;\n\t\tProxyHandler.prototype[name] = function(a, b){\n\t\t\tif(this._cbs[name]) this._cbs[name](a, b);\n\t\t};\n\t} else {\n\t\tthrow Error(\"wrong number of arguments\");\n\t}\n});","var DomUtils = module.exports;\n\n[\n\trequire(\"./lib/stringify\"),\n\trequire(\"./lib/traversal\"),\n\trequire(\"./lib/manipulation\"),\n\trequire(\"./lib/querying\"),\n\trequire(\"./lib/legacy\"),\n\trequire(\"./lib/helpers\")\n].forEach(function(ext){\n\tObject.keys(ext).forEach(function(key){\n\t\tDomUtils[key] = ext[key].bind(DomUtils);\n\t});\n});\n","var ElementType = require(\"domelementtype\"),\n getOuterHTML = require(\"dom-serializer\"),\n isTag = ElementType.isTag;\n\nmodule.exports = {\n\tgetInnerHTML: getInnerHTML,\n\tgetOuterHTML: getOuterHTML,\n\tgetText: getText\n};\n\nfunction getInnerHTML(elem, opts){\n\treturn elem.children ? elem.children.map(function(elem){\n\t\treturn getOuterHTML(elem, opts);\n\t}).join(\"\") : \"\";\n}\n\nfunction getText(elem){\n\tif(Array.isArray(elem)) return elem.map(getText).join(\"\");\n\tif(isTag(elem)) return elem.name === \"br\" ? \"\\n\" : getText(elem.children);\n\tif(elem.type === ElementType.CDATA) return getText(elem.children);\n\tif(elem.type === ElementType.Text) return elem.data;\n\treturn \"\";\n}\n","/*\n Module dependencies\n*/\nvar ElementType = require('domelementtype');\nvar entities = require('entities');\n\n/*\n Boolean Attributes\n*/\nvar booleanAttributes = {\n __proto__: null,\n allowfullscreen: true,\n async: true,\n autofocus: true,\n autoplay: true,\n checked: true,\n controls: true,\n default: true,\n defer: true,\n disabled: true,\n hidden: true,\n ismap: true,\n loop: true,\n multiple: true,\n muted: true,\n open: true,\n readonly: true,\n required: true,\n reversed: true,\n scoped: true,\n seamless: true,\n selected: true,\n typemustmatch: true\n};\n\nvar unencodedElements = {\n __proto__: null,\n style: true,\n script: true,\n xmp: true,\n iframe: true,\n noembed: true,\n noframes: true,\n plaintext: true,\n noscript: true\n};\n\n/*\n Format attributes\n*/\nfunction formatAttrs(attributes, opts) {\n if (!attributes) return;\n\n var output = '',\n value;\n\n // Loop through the attributes\n for (var key in attributes) {\n value = attributes[key];\n if (output) {\n output += ' ';\n }\n\n if (!value && booleanAttributes[key]) {\n output += key;\n } else {\n output += key + '=\"' + (opts.decodeEntities ? entities.encodeXML(value) : value) + '\"';\n }\n }\n\n return output;\n}\n\n/*\n Self-enclosing tags (stolen from node-htmlparser)\n*/\nvar singleTag = {\n __proto__: null,\n area: true,\n base: true,\n basefont: true,\n br: true,\n col: true,\n command: true,\n embed: true,\n frame: true,\n hr: true,\n img: true,\n input: true,\n isindex: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true,\n};\n\n\nvar render = module.exports = function(dom, opts) {\n if (!Array.isArray(dom) && !dom.cheerio) dom = [dom];\n opts = opts || {};\n\n var output = '';\n\n for(var i = 0; i < dom.length; i++){\n var elem = dom[i];\n\n if (elem.type === 'root')\n output += render(elem.children, opts);\n else if (ElementType.isTag(elem))\n output += renderTag(elem, opts);\n else if (elem.type === ElementType.Directive)\n output += renderDirective(elem);\n else if (elem.type === ElementType.Comment)\n output += renderComment(elem);\n else if (elem.type === ElementType.CDATA)\n output += renderCdata(elem);\n else\n output += renderText(elem, opts);\n }\n\n return output;\n};\n\nfunction renderTag(elem, opts) {\n // Handle SVG\n if (elem.name === \"svg\") opts = {decodeEntities: opts.decodeEntities, xmlMode: true};\n\n var tag = '<' + elem.name,\n attribs = formatAttrs(elem.attribs, opts);\n\n if (attribs) {\n tag += ' ' + attribs;\n }\n\n if (\n opts.xmlMode\n && (!elem.children || elem.children.length === 0)\n ) {\n tag += '/>';\n } else {\n tag += '>';\n if (elem.children) {\n tag += render(elem.children, opts);\n }\n\n if (!singleTag[elem.name] || opts.xmlMode) {\n tag += '</' + elem.name + '>';\n }\n }\n\n return tag;\n}\n\nfunction renderDirective(elem) {\n return '<' + elem.data + '>';\n}\n\nfunction renderText(elem, opts) {\n var data = elem.data || '';\n\n // if entities weren't decoded, no need to encode them back\n if (opts.decodeEntities && !(elem.parent && elem.parent.name in unencodedElements)) {\n data = entities.encodeXML(data);\n }\n\n return data;\n}\n\nfunction renderCdata(elem) {\n return '<![CDATA[' + elem.children[0].data + ']]>';\n}\n\nfunction renderComment(elem) {\n return '<!--' + elem.data + '-->';\n}\n","//Types of elements found in the DOM\nmodule.exports = {\n\tText: \"text\", //Text\n\tDirective: \"directive\", //<? ... ?>\n\tComment: \"comment\", //<!-- ... -->\n\tScript: \"script\", //<script> tags\n\tStyle: \"style\", //<style> tags\n\tTag: \"tag\", //Any tag\n\tCDATA: \"cdata\", //<![CDATA[ ... ]]>\n\n\tisTag: function(elem){\n\t\treturn elem.type === \"tag\" || elem.type === \"script\" || elem.type === \"style\";\n\t}\n};","var inverseXML = getInverseObj(require(\"../maps/xml.json\")),\n xmlReplacer = getInverseReplacer(inverseXML);\n\nexports.XML = getInverse(inverseXML, xmlReplacer);\n\nvar inverseHTML = getInverseObj(require(\"../maps/entities.json\")),\n htmlReplacer = getInverseReplacer(inverseHTML);\n\nexports.HTML = getInverse(inverseHTML, htmlReplacer);\n\nfunction getInverseObj(obj){\n\treturn Object.keys(obj).sort().reduce(function(inverse, name){\n\t\tinverse[obj[name]] = \"&\" + name + \";\";\n\t\treturn inverse;\n\t}, {});\n}\n\nfunction getInverseReplacer(inverse){\n\tvar single = [],\n\t multiple = [];\n\n\tObject.keys(inverse).forEach(function(k){\n\t\tif(k.length === 1){\n\t\t\tsingle.push(\"\\\\\" + k);\n\t\t} else {\n\t\t\tmultiple.push(k);\n\t\t}\n\t});\n\n\t//TODO add ranges\n\tmultiple.unshift(\"[\" + single.join(\"\") + \"]\");\n\n\treturn new RegExp(multiple.join(\"|\"), \"g\");\n}\n\nvar re_nonASCII = /[^\\0-\\x7F]/g,\n re_astralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction singleCharReplacer(c){\n\treturn \"&#x\" + c.charCodeAt(0).toString(16).toUpperCase() + \";\";\n}\n\nfunction astralReplacer(c){\n\t// http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\tvar high = c.charCodeAt(0);\n\tvar low = c.charCodeAt(1);\n\tvar codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;\n\treturn \"&#x\" + codePoint.toString(16).toUpperCase() + \";\";\n}\n\nfunction getInverse(inverse, re){\n\tfunction func(name){\n\t\treturn inverse[name];\n\t}\n\n\treturn function(data){\n\t\treturn data\n\t\t\t\t.replace(re, func)\n\t\t\t\t.replace(re_astralSymbols, astralReplacer)\n\t\t\t\t.replace(re_nonASCII, singleCharReplacer);\n\t};\n}\n\nvar re_xmlChars = getInverseReplacer(inverseXML);\n\nfunction escapeXML(data){\n\treturn data\n\t\t\t.replace(re_xmlChars, singleCharReplacer)\n\t\t\t.replace(re_astralSymbols, astralReplacer)\n\t\t\t.replace(re_nonASCII, singleCharReplacer);\n}\n\nexports.escape = escapeXML;\n","var entityMap = require(\"../maps/entities.json\"),\n legacyMap = require(\"../maps/legacy.json\"),\n xmlMap = require(\"../maps/xml.json\"),\n decodeCodePoint = require(\"./decode_codepoint.js\");\n\nvar decodeXMLStrict = getStrictDecoder(xmlMap),\n decodeHTMLStrict = getStrictDecoder(entityMap);\n\nfunction getStrictDecoder(map){\n\tvar keys = Object.keys(map).join(\"|\"),\n\t replace = getReplacer(map);\n\n\tkeys += \"|#[xX][\\\\da-fA-F]+|#\\\\d+\";\n\n\tvar re = new RegExp(\"&(?:\" + keys + \");\", \"g\");\n\n\treturn function(str){\n\t\treturn String(str).replace(re, replace);\n\t};\n}\n\nvar decodeHTML = (function(){\n\tvar legacy = Object.keys(legacyMap)\n\t\t.sort(sorter);\n\n\tvar keys = Object.keys(entityMap)\n\t\t.sort(sorter);\n\n\tfor(var i = 0, j = 0; i < keys.length; i++){\n\t\tif(legacy[j] === keys[i]){\n\t\t\tkeys[i] += \";?\";\n\t\t\tj++;\n\t\t} else {\n\t\t\tkeys[i] += \";\";\n\t\t}\n\t}\n\n\tvar re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\"),\n\t replace = getReplacer(entityMap);\n\n\tfunction replacer(str){\n\t\tif(str.substr(-1) !== \";\") str += \";\";\n\t\treturn replace(str);\n\t}\n\n\t//TODO consider creating a merged map\n\treturn function(str){\n\t\treturn String(str).replace(re, replacer);\n\t};\n}());\n\nfunction sorter(a, b){\n\treturn a < b ? 1 : -1;\n}\n\nfunction getReplacer(map){\n\treturn function replace(str){\n\t\tif(str.charAt(1) === \"#\"){\n\t\t\tif(str.charAt(2) === \"X\" || str.charAt(2) === \"x\"){\n\t\t\t\treturn decodeCodePoint(parseInt(str.substr(3), 16));\n\t\t\t}\n\t\t\treturn decodeCodePoint(parseInt(str.substr(2), 10));\n\t\t}\n\t\treturn map[str.slice(1, -1)];\n\t};\n}\n\nmodule.exports = {\n\tXML: decodeXMLStrict,\n\tHTML: decodeHTML,\n\tHTMLStrict: decodeHTMLStrict\n};","var getChildren = exports.getChildren = function(elem){\n\treturn elem.children;\n};\n\nvar getParent = exports.getParent = function(elem){\n\treturn elem.parent;\n};\n\nexports.getSiblings = function(elem){\n\tvar parent = getParent(elem);\n\treturn parent ? getChildren(parent) : [elem];\n};\n\nexports.getAttributeValue = function(elem, name){\n\treturn elem.attribs && elem.attribs[name];\n};\n\nexports.hasAttrib = function(elem, name){\n\treturn !!elem.attribs && hasOwnProperty.call(elem.attribs, name);\n};\n\nexports.getName = function(elem){\n\treturn elem.name;\n};\n","exports.removeElement = function(elem){\n\tif(elem.prev) elem.prev.next = elem.next;\n\tif(elem.next) elem.next.prev = elem.prev;\n\n\tif(elem.parent){\n\t\tvar childs = elem.parent.children;\n\t\tchilds.splice(childs.lastIndexOf(elem), 1);\n\t}\n};\n\nexports.replaceElement = function(elem, replacement){\n\tvar prev = replacement.prev = elem.prev;\n\tif(prev){\n\t\tprev.next = replacement;\n\t}\n\n\tvar next = replacement.next = elem.next;\n\tif(next){\n\t\tnext.prev = replacement;\n\t}\n\n\tvar parent = replacement.parent = elem.parent;\n\tif(parent){\n\t\tvar childs = parent.children;\n\t\tchilds[childs.lastIndexOf(elem)] = replacement;\n\t}\n};\n\nexports.appendChild = function(elem, child){\n\tchild.parent = elem;\n\n\tif(elem.children.push(child) !== 1){\n\t\tvar sibling = elem.children[elem.children.length - 2];\n\t\tsibling.next = child;\n\t\tchild.prev = sibling;\n\t\tchild.next = null;\n\t}\n};\n\nexports.append = function(elem, next){\n\tvar parent = elem.parent,\n\t\tcurrNext = elem.next;\n\n\tnext.next = currNext;\n\tnext.prev = elem;\n\telem.next = next;\n\tnext.parent = parent;\n\n\tif(currNext){\n\t\tcurrNext.prev = next;\n\t\tif(parent){\n\t\t\tvar childs = parent.children;\n\t\t\tchilds.splice(childs.lastIndexOf(currNext), 0, next);\n\t\t}\n\t} else if(parent){\n\t\tparent.children.push(next);\n\t}\n};\n\nexports.prepend = function(elem, prev){\n\tvar parent = elem.parent;\n\tif(parent){\n\t\tvar childs = parent.children;\n\t\tchilds.splice(childs.lastIndexOf(elem), 0, prev);\n\t}\n\n\tif(elem.prev){\n\t\telem.prev.next = prev;\n\t}\n\t\n\tprev.parent = parent;\n\tprev.prev = elem.prev;\n\tprev.next = elem;\n\telem.prev = prev;\n};\n\n\n","var isTag = require(\"domelementtype\").isTag;\n\nmodule.exports = {\n\tfilter: filter,\n\tfind: find,\n\tfindOneChild: findOneChild,\n\tfindOne: findOne,\n\texistsOne: existsOne,\n\tfindAll: findAll\n};\n\nfunction filter(test, element, recurse, limit){\n\tif(!Array.isArray(element)) element = [element];\n\n\tif(typeof limit !== \"number\" || !isFinite(limit)){\n\t\tlimit = Infinity;\n\t}\n\treturn find(test, element, recurse !== false, limit);\n}\n\nfunction find(test, elems, recurse, limit){\n\tvar result = [], childs;\n\n\tfor(var i = 0, j = elems.length; i < j; i++){\n\t\tif(test(elems[i])){\n\t\t\tresult.push(elems[i]);\n\t\t\tif(--limit <= 0) break;\n\t\t}\n\n\t\tchilds = elems[i].children;\n\t\tif(recurse && childs && childs.length > 0){\n\t\t\tchilds = find(test, childs, recurse, limit);\n\t\t\tresult = result.concat(childs);\n\t\t\tlimit -= childs.length;\n\t\t\tif(limit <= 0) break;\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction findOneChild(test, elems){\n\tfor(var i = 0, l = elems.length; i < l; i++){\n\t\tif(test(elems[i])) return elems[i];\n\t}\n\n\treturn null;\n}\n\nfunction findOne(test, elems){\n\tvar elem = null;\n\n\tfor(var i = 0, l = elems.length; i < l && !elem; i++){\n\t\tif(!isTag(elems[i])){\n\t\t\tcontinue;\n\t\t} else if(test(elems[i])){\n\t\t\telem = elems[i];\n\t\t} else if(elems[i].children.length > 0){\n\t\t\telem = findOne(test, elems[i].children);\n\t\t}\n\t}\n\n\treturn elem;\n}\n\nfunction existsOne(test, elems){\n\tfor(var i = 0, l = elems.length; i < l; i++){\n\t\tif(\n\t\t\tisTag(elems[i]) && (\n\t\t\t\ttest(elems[i]) || (\n\t\t\t\t\telems[i].children.length > 0 &&\n\t\t\t\t\texistsOne(test, elems[i].children)\n\t\t\t\t)\n\t\t\t)\n\t\t){\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction findAll(test, rootElems){\n\tvar result = [];\n\tvar stack = rootElems.slice();\n\twhile(stack.length){\n\t\tvar elem = stack.shift();\n\t\tif(!isTag(elem)) continue;\n\t\tif (elem.children && elem.children.length > 0) {\n\t\t\tstack.unshift.apply(stack, elem.children);\n\t\t}\n\t\tif(test(elem)) result.push(elem);\n\t}\n\treturn result;\n}\n","var ElementType = require(\"domelementtype\");\nvar isTag = exports.isTag = ElementType.isTag;\n\nexports.testElement = function(options, element){\n\tfor(var key in options){\n\t\tif(!options.hasOwnProperty(key));\n\t\telse if(key === \"tag_name\"){\n\t\t\tif(!isTag(element) || !options.tag_name(element.name)){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if(key === \"tag_type\"){\n\t\t\tif(!options.tag_type(element.type)) return false;\n\t\t} else if(key === \"tag_contains\"){\n\t\t\tif(isTag(element) || !options.tag_contains(element.data)){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if(!element.attribs || !options[key](element.attribs[key])){\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n};\n\nvar Checks = {\n\ttag_name: function(name){\n\t\tif(typeof name === \"function\"){\n\t\t\treturn function(elem){ return isTag(elem) && name(elem.name); };\n\t\t} else if(name === \"*\"){\n\t\t\treturn isTag;\n\t\t} else {\n\t\t\treturn function(elem){ return isTag(elem) && elem.name === name; };\n\t\t}\n\t},\n\ttag_type: function(type){\n\t\tif(typeof type === \"function\"){\n\t\t\treturn function(elem){ return type(elem.type); };\n\t\t} else {\n\t\t\treturn function(elem){ return elem.type === type; };\n\t\t}\n\t},\n\ttag_contains: function(data){\n\t\tif(typeof data === \"function\"){\n\t\t\treturn function(elem){ return !isTag(elem) && data(elem.data); };\n\t\t} else {\n\t\t\treturn function(elem){ return !isTag(elem) && elem.data === data; };\n\t\t}\n\t}\n};\n\nfunction getAttribCheck(attrib, value){\n\tif(typeof value === \"function\"){\n\t\treturn function(elem){ return elem.attribs && value(elem.attribs[attrib]); };\n\t} else {\n\t\treturn function(elem){ return elem.attribs && elem.attribs[attrib] === value; };\n\t}\n}\n\nfunction combineFuncs(a, b){\n\treturn function(elem){\n\t\treturn a(elem) || b(elem);\n\t};\n}\n\nexports.getElements = function(options, element, recurse, limit){\n\tvar funcs = Object.keys(options).map(function(key){\n\t\tvar value = options[key];\n\t\treturn key in Checks ? Checks[key](value) : getAttribCheck(key, value);\n\t});\n\n\treturn funcs.length === 0 ? [] : this.filter(\n\t\tfuncs.reduce(combineFuncs),\n\t\telement, recurse, limit\n\t);\n};\n\nexports.getElementById = function(id, element, recurse){\n\tif(!Array.isArray(element)) element = [element];\n\treturn this.findOne(getAttribCheck(\"id\", id), element, recurse !== false);\n};\n\nexports.getElementsByTagName = function(name, element, recurse, limit){\n\treturn this.filter(Checks.tag_name(name), element, recurse, limit);\n};\n\nexports.getElementsByTagType = function(type, element, recurse, limit){\n\treturn this.filter(Checks.tag_type(type), element, recurse, limit);\n};\n","// removeSubsets\n// Given an array of nodes, remove any member that is contained by another.\nexports.removeSubsets = function(nodes) {\n\tvar idx = nodes.length, node, ancestor, replace;\n\n\t// Check if each node (or one of its ancestors) is already contained in the\n\t// array.\n\twhile (--idx > -1) {\n\t\tnode = ancestor = nodes[idx];\n\n\t\t// Temporarily remove the node under consideration\n\t\tnodes[idx] = null;\n\t\treplace = true;\n\n\t\twhile (ancestor) {\n\t\t\tif (nodes.indexOf(ancestor) > -1) {\n\t\t\t\treplace = false;\n\t\t\t\tnodes.splice(idx, 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tancestor = ancestor.parent;\n\t\t}\n\n\t\t// If the node has been found to be unique, re-insert it.\n\t\tif (replace) {\n\t\t\tnodes[idx] = node;\n\t\t}\n\t}\n\n\treturn nodes;\n};\n\n// Source: http://dom.spec.whatwg.org/#dom-node-comparedocumentposition\nvar POSITION = {\n\tDISCONNECTED: 1,\n\tPRECEDING: 2,\n\tFOLLOWING: 4,\n\tCONTAINS: 8,\n\tCONTAINED_BY: 16\n};\n\n// Compare the position of one node against another node in any other document.\n// The return value is a bitmask with the following values:\n//\n// document order:\n// > There is an ordering, document order, defined on all the nodes in the\n// > document corresponding to the order in which the first character of the\n// > XML representation of each node occurs in the XML representation of the\n// > document after expansion of general entities. Thus, the document element\n// > node will be the first node. Element nodes occur before their children.\n// > Thus, document order orders element nodes in order of the occurrence of\n// > their start-tag in the XML (after expansion of entities). The attribute\n// > nodes of an element occur after the element and before its children. The\n// > relative order of attribute nodes is implementation-dependent./\n// Source:\n// http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n//\n// @argument {Node} nodaA The first node to use in the comparison\n// @argument {Node} nodeB The second node to use in the comparison\n//\n// @return {Number} A bitmask describing the input nodes' relative position.\n// See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n// a description of these values.\nvar comparePos = exports.compareDocumentPosition = function(nodeA, nodeB) {\n\tvar aParents = [];\n\tvar bParents = [];\n\tvar current, sharedParent, siblings, aSibling, bSibling, idx;\n\n\tif (nodeA === nodeB) {\n\t\treturn 0;\n\t}\n\n\tcurrent = nodeA;\n\twhile (current) {\n\t\taParents.unshift(current);\n\t\tcurrent = current.parent;\n\t}\n\tcurrent = nodeB;\n\twhile (current) {\n\t\tbParents.unshift(current);\n\t\tcurrent = current.parent;\n\t}\n\n\tidx = 0;\n\twhile (aParents[idx] === bParents[idx]) {\n\t\tidx++;\n\t}\n\n\tif (idx === 0) {\n\t\treturn POSITION.DISCONNECTED;\n\t}\n\n\tsharedParent = aParents[idx - 1];\n\tsiblings = sharedParent.children;\n\taSibling = aParents[idx];\n\tbSibling = bParents[idx];\n\n\tif (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n\t\tif (sharedParent === nodeB) {\n\t\t\treturn POSITION.FOLLOWING | POSITION.CONTAINED_BY;\n\t\t}\n\t\treturn POSITION.FOLLOWING;\n\t} else {\n\t\tif (sharedParent === nodeA) {\n\t\t\treturn POSITION.PRECEDING | POSITION.CONTAINS;\n\t\t}\n\t\treturn POSITION.PRECEDING;\n\t}\n};\n\n// Sort an array of nodes based on their relative position in the document and\n// remove any duplicate nodes. If the array contains nodes that do not belong\n// to the same document, sort order is unspecified.\n//\n// @argument {Array} nodes Array of DOM nodes\n//\n// @returns {Array} collection of unique nodes, sorted in document order\nexports.uniqueSort = function(nodes) {\n\tvar idx = nodes.length, node, position;\n\n\tnodes = nodes.slice();\n\n\twhile (--idx > -1) {\n\t\tnode = nodes[idx];\n\t\tposition = nodes.indexOf(node);\n\t\tif (position > -1 && position < idx) {\n\t\t\tnodes.splice(idx, 1);\n\t\t}\n\t}\n\tnodes.sort(function(a, b) {\n\t\tvar relative = comparePos(a, b);\n\t\tif (relative & POSITION.PRECEDING) {\n\t\t\treturn -1;\n\t\t} else if (relative & POSITION.FOLLOWING) {\n\t\t\treturn 1;\n\t\t}\n\t\treturn 0;\n\t});\n\n\treturn nodes;\n};\n","module.exports = CollectingHandler;\n\nfunction CollectingHandler(cbs){\n\tthis._cbs = cbs || {};\n\tthis.events = [];\n}\n\nvar EVENTS = require(\"./\").EVENTS;\nObject.keys(EVENTS).forEach(function(name){\n\tif(EVENTS[name] === 0){\n\t\tname = \"on\" + name;\n\t\tCollectingHandler.prototype[name] = function(){\n\t\t\tthis.events.push([name]);\n\t\t\tif(this._cbs[name]) this._cbs[name]();\n\t\t};\n\t} else if(EVENTS[name] === 1){\n\t\tname = \"on\" + name;\n\t\tCollectingHandler.prototype[name] = function(a){\n\t\t\tthis.events.push([name, a]);\n\t\t\tif(this._cbs[name]) this._cbs[name](a);\n\t\t};\n\t} else if(EVENTS[name] === 2){\n\t\tname = \"on\" + name;\n\t\tCollectingHandler.prototype[name] = function(a, b){\n\t\t\tthis.events.push([name, a, b]);\n\t\t\tif(this._cbs[name]) this._cbs[name](a, b);\n\t\t};\n\t} else {\n\t\tthrow Error(\"wrong number of arguments\");\n\t}\n});\n\nCollectingHandler.prototype.onreset = function(){\n\tthis.events = [];\n\tif(this._cbs.onreset) this._cbs.onreset();\n};\n\nCollectingHandler.prototype.restart = function(){\n\tif(this._cbs.onreset) this._cbs.onreset();\n\n\tfor(var i = 0, len = this.events.length; i < len; i++){\n\t\tif(this._cbs[this.events[i][0]]){\n\n\t\t\tvar num = this.events[i].length;\n\n\t\t\tif(num === 1){\n\t\t\t\tthis._cbs[this.events[i][0]]();\n\t\t\t} else if(num === 2){\n\t\t\t\tthis._cbs[this.events[i][0]](this.events[i][1]);\n\t\t\t} else {\n\t\t\t\tthis._cbs[this.events[i][0]](this.events[i][1], this.events[i][2]);\n\t\t\t}\n\t\t}\n\t}\n};\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n}\n\nmodule.exports = escapeRegExp;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n return key == '__proto__'\n ? undefined\n : object[key];\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n if (isObject(srcValue)) {\n stack || (stack = new Stack);\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = mergeWith;\n","/**\n * lodash 4.0.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) ||\n objectToString.call(value) != objectTag || isHostObject(value)) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nmodule.exports = isPlainObject;\n","'use strict';\nvar numberIsNan = require('number-is-nan');\nvar arrayUniq = require('array-uniq');\nvar reInt = /^\\d+$/;\n\nfunction deepUnique(arr) {\n\treturn arr.sort().filter(function (el, i) {\n\t\treturn JSON.stringify(el) !== JSON.stringify(arr[i - 1]);\n\t});\n}\n\nexports.parse = function (str) {\n\treturn deepUnique(str.split(',').map(function (el) {\n\t\tvar ret = {};\n\n\t\tel.trim().split(/\\s+/).forEach(function (el, i) {\n\t\t\tif (i === 0) {\n\t\t\t\treturn ret.url = el;\n\t\t\t}\n\n\t\t\tvar value = el.substring(0, el.length - 1);\n\t\t\tvar postfix = el[el.length - 1];\n\t\t\tvar intVal = parseInt(value, 10);\n\t\t\tvar floatVal = parseFloat(value);\n\n\t\t\tif (postfix === 'w' && reInt.test(value)) {\n\t\t\t\tret.width = intVal;\n\t\t\t} else if (postfix === 'h' && reInt.test(value)) {\n\t\t\t\tret.height = intVal;\n\t\t\t} else if (postfix === 'x' && !numberIsNan(floatVal)) {\n\t\t\t\tret.density = floatVal;\n\t\t\t} else {\n\t\t\t\tthrow new Error('Invalid srcset descriptor: ' + el + '.');\n\t\t\t}\n\t\t});\n\n\t\treturn ret;\n\t}));\n}\n\nexports.stringify = function (arr) {\n\treturn arrayUniq(arr.map(function (el) {\n\t\tif (!el.url) {\n\t\t\tthrow new Error('URL is required.');\n\t\t}\n\n\t\tvar ret = [el.url];\n\n\t\tif (el.width) {\n\t\t\tret.push(el.width + 'w');\n\t\t}\n\n\t\tif (el.height) {\n\t\t\tret.push(el.height + 'h');\n\t\t}\n\n\t\tif (el.density) {\n\t\t\tret.push(el.density + 'x');\n\t\t}\n\n\t\treturn ret.join(' ');\n\t})).join(', ');\n}\n","'use strict';\nmodule.exports = Number.isNaN || function (x) {\n\treturn x !== x;\n};\n","'use strict';\n\n// there's 3 implementations written in increasing order of efficiency\n\n// 1 - no Set type is defined\nfunction uniqNoSet(arr) {\n\tvar ret = [];\n\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tif (ret.indexOf(arr[i]) === -1) {\n\t\t\tret.push(arr[i]);\n\t\t}\n\t}\n\n\treturn ret;\n}\n\n// 2 - a simple Set type is defined\nfunction uniqSet(arr) {\n\tvar seen = new Set();\n\treturn arr.filter(function (el) {\n\t\tif (!seen.has(el)) {\n\t\t\tseen.add(el);\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t});\n}\n\n// 3 - a standard Set type is defined and it has a forEach method\nfunction uniqSetWithForEach(arr) {\n\tvar ret = [];\n\n\t(new Set(arr)).forEach(function (el) {\n\t\tret.push(el);\n\t});\n\n\treturn ret;\n}\n\n// V8 currently has a broken implementation\n// https://github.com/joyent/node/issues/8449\nfunction doesForEachActuallyWork() {\n\tvar ret = false;\n\n\t(new Set([true])).forEach(function (el) {\n\t\tret = el;\n\t});\n\n\treturn ret === true;\n}\n\nif ('Set' in global) {\n\tif (typeof Set.prototype.forEach === 'function' && doesForEachActuallyWork()) {\n\t\tmodule.exports = uniqSetWithForEach;\n\t} else {\n\t\tmodule.exports = uniqSet;\n\t}\n} else {\n\tmodule.exports = uniqNoSet;\n}\n","'use strict';\n\nexports.__esModule = true;\n\nvar _declaration = require('./declaration');\n\nvar _declaration2 = _interopRequireDefault(_declaration);\n\nvar _processor = require('./processor');\n\nvar _processor2 = _interopRequireDefault(_processor);\n\nvar _stringify = require('./stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _comment = require('./comment');\n\nvar _comment2 = _interopRequireDefault(_comment);\n\nvar _atRule = require('./at-rule');\n\nvar _atRule2 = _interopRequireDefault(_atRule);\n\nvar _vendor = require('./vendor');\n\nvar _vendor2 = _interopRequireDefault(_vendor);\n\nvar _parse = require('./parse');\n\nvar _parse2 = _interopRequireDefault(_parse);\n\nvar _list = require('./list');\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _rule = require('./rule');\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nvar _root = require('./root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Create a new {@link Processor} instance that will apply `plugins`\n * as CSS processors.\n *\n * @param {Array.<Plugin|pluginFunction>|Processor} plugins - PostCSS\n * plugins. See {@link Processor#use} for plugin format.\n *\n * @return {Processor} Processor to process multiple CSS\n *\n * @example\n * import postcss from 'postcss';\n *\n * postcss(plugins).process(css, { from, to }).then(result => {\n * console.log(result.css);\n * });\n *\n * @namespace postcss\n */\nfunction postcss() {\n for (var _len = arguments.length, plugins = Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new _processor2.default(plugins);\n}\n\n/**\n * Creates a PostCSS plugin with a standard API.\n *\n * The newly-wrapped function will provide both the name and PostCSS\n * version of the plugin.\n *\n * ```js\n * const processor = postcss([replace]);\n * processor.plugins[0].postcssPlugin //=> 'postcss-replace'\n * processor.plugins[0].postcssVersion //=> '5.1.0'\n * ```\n *\n * The plugin function receives 2 arguments: {@link Root}\n * and {@link Result} instance. The function should mutate the provided\n * `Root` node. Alternatively, you can create a new `Root` node\n * and override the `result.root` property.\n *\n * ```js\n * const cleaner = postcss.plugin('postcss-cleaner', () => {\n * return (root, result) => {\n * result.root = postcss.root();\n * };\n * });\n * ```\n *\n * As a convenience, plugins also expose a `process` method so that you can use\n * them as standalone tools.\n *\n * ```js\n * cleaner.process(css, processOpts, pluginOpts);\n * // This is equivalent to:\n * postcss([ cleaner(pluginOpts) ]).process(css, processOpts);\n * ```\n *\n * Asynchronous plugins should return a `Promise` instance.\n *\n * ```js\n * postcss.plugin('postcss-import', () => {\n * return (root, result) => {\n * return new Promise( (resolve, reject) => {\n * fs.readFile('base.css', (base) => {\n * root.prepend(base);\n * resolve();\n * });\n * });\n * };\n * });\n * ```\n *\n * Add warnings using the {@link Node#warn} method.\n * Send data to other plugins using the {@link Result#messages} array.\n *\n * ```js\n * postcss.plugin('postcss-caniuse-test', () => {\n * return (root, result) => {\n * root.walkDecls(decl => {\n * if ( !caniuse.support(decl.prop) ) {\n * decl.warn(result, 'Some browsers do not support ' + decl.prop);\n * }\n * });\n * };\n * });\n * ```\n *\n * @param {string} name - PostCSS plugin name. Same as in `name`\n * property in `package.json`. It will be saved\n * in `plugin.postcssPlugin` property.\n * @param {function} initializer - will receive plugin options\n * and should return {@link pluginFunction}\n *\n * @return {Plugin} PostCSS plugin\n */\npostcss.plugin = function plugin(name, initializer) {\n var creator = function creator() {\n var transformer = initializer.apply(undefined, arguments);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new _processor2.default().version;\n return transformer;\n };\n\n var cache = void 0;\n Object.defineProperty(creator, 'postcss', {\n get: function get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n\n creator.process = function (css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts);\n };\n\n return creator;\n};\n\n/**\n * Default function to convert a node tree into a CSS string.\n *\n * @param {Node} node - start node for stringifing. Usually {@link Root}.\n * @param {builder} builder - function to concatenate CSS from node’s parts\n * or generate string and source map\n *\n * @return {void}\n *\n * @function\n */\npostcss.stringify = _stringify2.default;\n\n/**\n * Parses source css and returns a new {@link Root} node,\n * which contains the source CSS nodes.\n *\n * @param {string|toString} css - string with input CSS or any object\n * with toString() method, like a Buffer\n * @param {processOptions} [opts] - options with only `from` and `map` keys\n *\n * @return {Root} PostCSS AST\n *\n * @example\n * // Simple CSS concatenation with source map support\n * const root1 = postcss.parse(css1, { from: file1 });\n * const root2 = postcss.parse(css2, { from: file2 });\n * root1.append(root2).toResult().css;\n *\n * @function\n */\npostcss.parse = _parse2.default;\n\n/**\n * @member {vendor} - Contains the {@link vendor} module.\n *\n * @example\n * postcss.vendor.unprefixed('-moz-tab') //=> ['tab']\n */\npostcss.vendor = _vendor2.default;\n\n/**\n * @member {list} - Contains the {@link list} module.\n *\n * @example\n * postcss.list.space('5px calc(10% + 5px)') //=> ['5px', 'calc(10% + 5px)']\n */\npostcss.list = _list2.default;\n\n/**\n * Creates a new {@link Comment} node.\n *\n * @param {object} [defaults] - properties for the new node.\n *\n * @return {Comment} new Comment node\n *\n * @example\n * postcss.comment({ text: 'test' })\n */\npostcss.comment = function (defaults) {\n return new _comment2.default(defaults);\n};\n\n/**\n * Creates a new {@link AtRule} node.\n *\n * @param {object} [defaults] - properties for the new node.\n *\n * @return {AtRule} new AtRule node\n *\n * @example\n * postcss.atRule({ name: 'charset' }).toString() //=> \"@charset\"\n */\npostcss.atRule = function (defaults) {\n return new _atRule2.default(defaults);\n};\n\n/**\n * Creates a new {@link Declaration} node.\n *\n * @param {object} [defaults] - properties for the new node.\n *\n * @return {Declaration} new Declaration node\n *\n * @example\n * postcss.decl({ prop: 'color', value: 'red' }).toString() //=> \"color: red\"\n */\npostcss.decl = function (defaults) {\n return new _declaration2.default(defaults);\n};\n\n/**\n * Creates a new {@link Rule} node.\n *\n * @param {object} [defaults] - properties for the new node.\n *\n * @return {Rule} new Rule node\n *\n * @example\n * postcss.rule({ selector: 'a' }).toString() //=> \"a {\\n}\"\n */\npostcss.rule = function (defaults) {\n return new _rule2.default(defaults);\n};\n\n/**\n * Creates a new {@link Root} node.\n *\n * @param {object} [defaults] - properties for the new node.\n *\n * @return {Root} new Root node\n *\n * @example\n * postcss.root({ after: '\\n' }).toString() //=> \"\\n\"\n */\npostcss.root = function (defaults) {\n return new _root2.default(defaults);\n};\n\nexports.default = postcss;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBvc3Rjc3MuZXM2Il0sIm5hbWVzIjpbInBvc3Rjc3MiLCJwbHVnaW5zIiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwiUHJvY2Vzc29yIiwicGx1Z2luIiwibmFtZSIsImluaXRpYWxpemVyIiwiY3JlYXRvciIsInRyYW5zZm9ybWVyIiwicG9zdGNzc1BsdWdpbiIsInBvc3Rjc3NWZXJzaW9uIiwidmVyc2lvbiIsImNhY2hlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJwcm9jZXNzIiwiY3NzIiwicHJvY2Vzc09wdHMiLCJwbHVnaW5PcHRzIiwic3RyaW5naWZ5IiwicGFyc2UiLCJ2ZW5kb3IiLCJsaXN0IiwiY29tbWVudCIsIkNvbW1lbnQiLCJkZWZhdWx0cyIsImF0UnVsZSIsIkF0UnVsZSIsImRlY2wiLCJEZWNsYXJhdGlvbiIsInJ1bGUiLCJSdWxlIiwicm9vdCIsIlJvb3QiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQSxTQUFTQSxPQUFULEdBQTZCO0FBQUEsb0NBQVRDLE9BQVM7QUFBVEEsV0FBUztBQUFBOztBQUN6QixNQUFLQSxRQUFRQyxNQUFSLEtBQW1CLENBQW5CLElBQXdCQyxNQUFNQyxPQUFOLENBQWNILFFBQVEsQ0FBUixDQUFkLENBQTdCLEVBQXlEO0FBQ3JEQSxjQUFVQSxRQUFRLENBQVIsQ0FBVjtBQUNIO0FBQ0QsU0FBTyxJQUFJSSxtQkFBSixDQUFjSixPQUFkLENBQVA7QUFDSDs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0VBRCxRQUFRTSxNQUFSLEdBQWlCLFNBQVNBLE1BQVQsQ0FBZ0JDLElBQWhCLEVBQXNCQyxXQUF0QixFQUFtQztBQUNoRCxNQUFJQyxVQUFVLFNBQVZBLE9BQVUsR0FBbUI7QUFDN0IsUUFBSUMsY0FBY0YsdUNBQWxCO0FBQ0FFLGdCQUFZQyxhQUFaLEdBQTZCSixJQUE3QjtBQUNBRyxnQkFBWUUsY0FBWixHQUE4QixJQUFJUCxtQkFBSixFQUFELENBQWtCUSxPQUEvQztBQUNBLFdBQU9ILFdBQVA7QUFDSCxHQUxEOztBQU9BLE1BQUlJLGNBQUo7QUFDQUMsU0FBT0MsY0FBUCxDQUFzQlAsT0FBdEIsRUFBK0IsU0FBL0IsRUFBMEM7QUFDdENRLE9BRHNDLGlCQUNoQztBQUNGLFVBQUssQ0FBQ0gsS0FBTixFQUFjQSxRQUFRTCxTQUFSO0FBQ2QsYUFBT0ssS0FBUDtBQUNIO0FBSnFDLEdBQTFDOztBQU9BTCxVQUFRUyxPQUFSLEdBQWtCLFVBQVVDLEdBQVYsRUFBZUMsV0FBZixFQUE0QkMsVUFBNUIsRUFBd0M7QUFDdEQsV0FBT3JCLFFBQVEsQ0FBRVMsUUFBUVksVUFBUixDQUFGLENBQVIsRUFBaUNILE9BQWpDLENBQXlDQyxHQUF6QyxFQUE4Q0MsV0FBOUMsQ0FBUDtBQUNILEdBRkQ7O0FBSUEsU0FBT1gsT0FBUDtBQUNILENBckJEOztBQXVCQTs7Ozs7Ozs7Ozs7QUFXQVQsUUFBUXNCLFNBQVIsR0FBb0JBLG1CQUFwQjs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBdEIsUUFBUXVCLEtBQVIsR0FBZ0JBLGVBQWhCOztBQUVBOzs7Ozs7QUFNQXZCLFFBQVF3QixNQUFSLEdBQWlCQSxnQkFBakI7O0FBRUE7Ozs7OztBQU1BeEIsUUFBUXlCLElBQVIsR0FBZUEsY0FBZjs7QUFFQTs7Ozs7Ozs7OztBQVVBekIsUUFBUTBCLE9BQVIsR0FBa0I7QUFBQSxTQUFZLElBQUlDLGlCQUFKLENBQVlDLFFBQVosQ0FBWjtBQUFBLENBQWxCOztBQUVBOzs7Ozs7Ozs7O0FBVUE1QixRQUFRNkIsTUFBUixHQUFpQjtBQUFBLFNBQVksSUFBSUMsZ0JBQUosQ0FBV0YsUUFBWCxDQUFaO0FBQUEsQ0FBakI7O0FBRUE7Ozs7Ozs7Ozs7QUFVQTVCLFFBQVErQixJQUFSLEdBQWU7QUFBQSxTQUFZLElBQUlDLHFCQUFKLENBQWdCSixRQUFoQixDQUFaO0FBQUEsQ0FBZjs7QUFFQTs7Ozs7Ozs7OztBQVVBNUIsUUFBUWlDLElBQVIsR0FBZTtBQUFBLFNBQVksSUFBSUMsY0FBSixDQUFTTixRQUFULENBQVo7QUFBQSxDQUFmOztBQUVBOzs7Ozs7Ozs7O0FBVUE1QixRQUFRbUMsSUFBUixHQUFlO0FBQUEsU0FBWSxJQUFJQyxjQUFKLENBQVNSLFFBQVQsQ0FBWjtBQUFBLENBQWY7O2tCQUVlNUIsTyIsImZpbGUiOiJwb3N0Y3NzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gJy4vZGVjbGFyYXRpb24nO1xuaW1wb3J0IFByb2Nlc3NvciAgIGZyb20gJy4vcHJvY2Vzc29yJztcbmltcG9ydCBzdHJpbmdpZnkgICBmcm9tICcuL3N0cmluZ2lmeSc7XG5pbXBvcnQgQ29tbWVudCAgICAgZnJvbSAnLi9jb21tZW50JztcbmltcG9ydCBBdFJ1bGUgICAgICBmcm9tICcuL2F0LXJ1bGUnO1xuaW1wb3J0IHZlbmRvciAgICAgIGZyb20gJy4vdmVuZG9yJztcbmltcG9ydCBwYXJzZSAgICAgICBmcm9tICcuL3BhcnNlJztcbmltcG9ydCBsaXN0ICAgICAgICBmcm9tICcuL2xpc3QnO1xuaW1wb3J0IFJ1bGUgICAgICAgIGZyb20gJy4vcnVsZSc7XG5pbXBvcnQgUm9vdCAgICAgICAgZnJvbSAnLi9yb290JztcblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcge0BsaW5rIFByb2Nlc3Nvcn0gaW5zdGFuY2UgdGhhdCB3aWxsIGFwcGx5IGBwbHVnaW5zYFxuICogYXMgQ1NTIHByb2Nlc3NvcnMuXG4gKlxuICogQHBhcmFtIHtBcnJheS48UGx1Z2lufHBsdWdpbkZ1bmN0aW9uPnxQcm9jZXNzb3J9IHBsdWdpbnMgLSBQb3N0Q1NTXG4gKiAgICAgICAgcGx1Z2lucy4gU2VlIHtAbGluayBQcm9jZXNzb3IjdXNlfSBmb3IgcGx1Z2luIGZvcm1hdC5cbiAqXG4gKiBAcmV0dXJuIHtQcm9jZXNzb3J9IFByb2Nlc3NvciB0byBwcm9jZXNzIG11bHRpcGxlIENTU1xuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgcG9zdGNzcyBmcm9tICdwb3N0Y3NzJztcbiAqXG4gKiBwb3N0Y3NzKHBsdWdpbnMpLnByb2Nlc3MoY3NzLCB7IGZyb20sIHRvIH0pLnRoZW4ocmVzdWx0ID0+IHtcbiAqICAgY29uc29sZS5sb2cocmVzdWx0LmNzcyk7XG4gKiB9KTtcbiAqXG4gKiBAbmFtZXNwYWNlIHBvc3Rjc3NcbiAqL1xuZnVuY3Rpb24gcG9zdGNzcyguLi5wbHVnaW5zKSB7XG4gICAgaWYgKCBwbHVnaW5zLmxlbmd0aCA9PT0gMSAmJiBBcnJheS5pc0FycmF5KHBsdWdpbnNbMF0pICkge1xuICAgICAgICBwbHVnaW5zID0gcGx1Z2luc1swXTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBQcm9jZXNzb3IocGx1Z2lucyk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIFBvc3RDU1MgcGx1Z2luIHdpdGggYSBzdGFuZGFyZCBBUEkuXG4gKlxuICogVGhlIG5ld2x5LXdyYXBwZWQgZnVuY3Rpb24gd2lsbCBwcm92aWRlIGJvdGggdGhlIG5hbWUgYW5kIFBvc3RDU1NcbiAqIHZlcnNpb24gb2YgdGhlIHBsdWdpbi5cbiAqXG4gKiBgYGBqc1xuICogIGNvbnN0IHByb2Nlc3NvciA9IHBvc3Rjc3MoW3JlcGxhY2VdKTtcbiAqICBwcm9jZXNzb3IucGx1Z2luc1swXS5wb3N0Y3NzUGx1Z2luICAvLz0+ICdwb3N0Y3NzLXJlcGxhY2UnXG4gKiAgcHJvY2Vzc29yLnBsdWdpbnNbMF0ucG9zdGNzc1ZlcnNpb24gLy89PiAnNS4xLjAnXG4gKiBgYGBcbiAqXG4gKiBUaGUgcGx1Z2luIGZ1bmN0aW9uIHJlY2VpdmVzIDIgYXJndW1lbnRzOiB7QGxpbmsgUm9vdH1cbiAqIGFuZCB7QGxpbmsgUmVzdWx0fSBpbnN0YW5jZS4gVGhlIGZ1bmN0aW9uIHNob3VsZCBtdXRhdGUgdGhlIHByb3ZpZGVkXG4gKiBgUm9vdGAgbm9kZS4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBjcmVhdGUgYSBuZXcgYFJvb3RgIG5vZGVcbiAqIGFuZCBvdmVycmlkZSB0aGUgYHJlc3VsdC5yb290YCBwcm9wZXJ0eS5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgY2xlYW5lciA9IHBvc3Rjc3MucGx1Z2luKCdwb3N0Y3NzLWNsZWFuZXInLCAoKSA9PiB7XG4gKiAgIHJldHVybiAocm9vdCwgcmVzdWx0KSA9PiB7XG4gKiAgICAgcmVzdWx0LnJvb3QgPSBwb3N0Y3NzLnJvb3QoKTtcbiAqICAgfTtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQXMgYSBjb252ZW5pZW5jZSwgcGx1Z2lucyBhbHNvIGV4cG9zZSBhIGBwcm9jZXNzYCBtZXRob2Qgc28gdGhhdCB5b3UgY2FuIHVzZVxuICogdGhlbSBhcyBzdGFuZGFsb25lIHRvb2xzLlxuICpcbiAqIGBgYGpzXG4gKiBjbGVhbmVyLnByb2Nlc3MoY3NzLCBwcm9jZXNzT3B0cywgcGx1Z2luT3B0cyk7XG4gKiAvLyBUaGlzIGlzIGVxdWl2YWxlbnQgdG86XG4gKiBwb3N0Y3NzKFsgY2xlYW5lcihwbHVnaW5PcHRzKSBdKS5wcm9jZXNzKGNzcywgcHJvY2Vzc09wdHMpO1xuICogYGBgXG4gKlxuICogQXN5bmNocm9ub3VzIHBsdWdpbnMgc2hvdWxkIHJldHVybiBhIGBQcm9taXNlYCBpbnN0YW5jZS5cbiAqXG4gKiBgYGBqc1xuICogcG9zdGNzcy5wbHVnaW4oJ3Bvc3Rjc3MtaW1wb3J0JywgKCkgPT4ge1xuICogICByZXR1cm4gKHJvb3QsIHJlc3VsdCkgPT4ge1xuICogICAgIHJldHVybiBuZXcgUHJvbWlzZSggKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICogICAgICAgZnMucmVhZEZpbGUoJ2Jhc2UuY3NzJywgKGJhc2UpID0+IHtcbiAqICAgICAgICAgcm9vdC5wcmVwZW5kKGJhc2UpO1xuICogICAgICAgICByZXNvbHZlKCk7XG4gKiAgICAgICB9KTtcbiAqICAgICB9KTtcbiAqICAgfTtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQWRkIHdhcm5pbmdzIHVzaW5nIHRoZSB7QGxpbmsgTm9kZSN3YXJufSBtZXRob2QuXG4gKiBTZW5kIGRhdGEgdG8gb3RoZXIgcGx1Z2lucyB1c2luZyB0aGUge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30gYXJyYXkuXG4gKlxuICogYGBganNcbiAqIHBvc3Rjc3MucGx1Z2luKCdwb3N0Y3NzLWNhbml1c2UtdGVzdCcsICgpID0+IHtcbiAqICAgcmV0dXJuIChyb290LCByZXN1bHQpID0+IHtcbiAqICAgICByb290LndhbGtEZWNscyhkZWNsID0+IHtcbiAqICAgICAgIGlmICggIWNhbml1c2Uuc3VwcG9ydChkZWNsLnByb3ApICkge1xuICogICAgICAgICBkZWNsLndhcm4ocmVzdWx0LCAnU29tZSBicm93c2VycyBkbyBub3Qgc3VwcG9ydCAnICsgZGVjbC5wcm9wKTtcbiAqICAgICAgIH1cbiAqICAgICB9KTtcbiAqICAgfTtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgICAgLSBQb3N0Q1NTIHBsdWdpbiBuYW1lLiBTYW1lIGFzIGluIGBuYW1lYFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eSBpbiBgcGFja2FnZS5qc29uYC4gSXQgd2lsbCBiZSBzYXZlZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBgcGx1Z2luLnBvc3Rjc3NQbHVnaW5gIHByb3BlcnR5LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gaW5pdGlhbGl6ZXIgLSB3aWxsIHJlY2VpdmUgcGx1Z2luIG9wdGlvbnNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNob3VsZCByZXR1cm4ge0BsaW5rIHBsdWdpbkZ1bmN0aW9ufVxuICpcbiAqIEByZXR1cm4ge1BsdWdpbn0gUG9zdENTUyBwbHVnaW5cbiAqL1xucG9zdGNzcy5wbHVnaW4gPSBmdW5jdGlvbiBwbHVnaW4obmFtZSwgaW5pdGlhbGl6ZXIpIHtcbiAgICBsZXQgY3JlYXRvciA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgIGxldCB0cmFuc2Zvcm1lciA9IGluaXRpYWxpemVyKC4uLmFyZ3MpO1xuICAgICAgICB0cmFuc2Zvcm1lci5wb3N0Y3NzUGx1Z2luICA9IG5hbWU7XG4gICAgICAgIHRyYW5zZm9ybWVyLnBvc3Rjc3NWZXJzaW9uID0gKG5ldyBQcm9jZXNzb3IoKSkudmVyc2lvbjtcbiAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVyO1xuICAgIH07XG5cbiAgICBsZXQgY2FjaGU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0b3IsICdwb3N0Y3NzJywge1xuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICBpZiAoICFjYWNoZSApIGNhY2hlID0gY3JlYXRvcigpO1xuICAgICAgICAgICAgcmV0dXJuIGNhY2hlO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBjcmVhdG9yLnByb2Nlc3MgPSBmdW5jdGlvbiAoY3NzLCBwcm9jZXNzT3B0cywgcGx1Z2luT3B0cykge1xuICAgICAgICByZXR1cm4gcG9zdGNzcyhbIGNyZWF0b3IocGx1Z2luT3B0cykgXSkucHJvY2Vzcyhjc3MsIHByb2Nlc3NPcHRzKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNyZWF0b3I7XG59O1xuXG4vKipcbiAqIERlZmF1bHQgZnVuY3Rpb24gdG8gY29udmVydCBhIG5vZGUgdHJlZSBpbnRvIGEgQ1NTIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge05vZGV9IG5vZGUgICAgICAgLSBzdGFydCBub2RlIGZvciBzdHJpbmdpZmluZy4gVXN1YWxseSB7QGxpbmsgUm9vdH0uXG4gKiBAcGFyYW0ge2J1aWxkZXJ9IGJ1aWxkZXIgLSBmdW5jdGlvbiB0byBjb25jYXRlbmF0ZSBDU1MgZnJvbSBub2Rl4oCZcyBwYXJ0c1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgZ2VuZXJhdGUgc3RyaW5nIGFuZCBzb3VyY2UgbWFwXG4gKlxuICogQHJldHVybiB7dm9pZH1cbiAqXG4gKiBAZnVuY3Rpb25cbiAqL1xucG9zdGNzcy5zdHJpbmdpZnkgPSBzdHJpbmdpZnk7XG5cbi8qKlxuICogUGFyc2VzIHNvdXJjZSBjc3MgYW5kIHJldHVybnMgYSBuZXcge0BsaW5rIFJvb3R9IG5vZGUsXG4gKiB3aGljaCBjb250YWlucyB0aGUgc291cmNlIENTUyBub2Rlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3x0b1N0cmluZ30gY3NzICAgLSBzdHJpbmcgd2l0aCBpbnB1dCBDU1Mgb3IgYW55IG9iamVjdFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0b1N0cmluZygpIG1ldGhvZCwgbGlrZSBhIEJ1ZmZlclxuICogQHBhcmFtIHtwcm9jZXNzT3B0aW9uc30gW29wdHNdIC0gb3B0aW9ucyB3aXRoIG9ubHkgYGZyb21gIGFuZCBgbWFwYCBrZXlzXG4gKlxuICogQHJldHVybiB7Um9vdH0gUG9zdENTUyBBU1RcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2ltcGxlIENTUyBjb25jYXRlbmF0aW9uIHdpdGggc291cmNlIG1hcCBzdXBwb3J0XG4gKiBjb25zdCByb290MSA9IHBvc3Rjc3MucGFyc2UoY3NzMSwgeyBmcm9tOiBmaWxlMSB9KTtcbiAqIGNvbnN0IHJvb3QyID0gcG9zdGNzcy5wYXJzZShjc3MyLCB7IGZyb206IGZpbGUyIH0pO1xuICogcm9vdDEuYXBwZW5kKHJvb3QyKS50b1Jlc3VsdCgpLmNzcztcbiAqXG4gKiBAZnVuY3Rpb25cbiAqL1xucG9zdGNzcy5wYXJzZSA9IHBhcnNlO1xuXG4vKipcbiAqIEBtZW1iZXIge3ZlbmRvcn0gLSBDb250YWlucyB0aGUge0BsaW5rIHZlbmRvcn0gbW9kdWxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzLnZlbmRvci51bnByZWZpeGVkKCctbW96LXRhYicpIC8vPT4gWyd0YWInXVxuICovXG5wb3N0Y3NzLnZlbmRvciA9IHZlbmRvcjtcblxuLyoqXG4gKiBAbWVtYmVyIHtsaXN0fSAtIENvbnRhaW5zIHRoZSB7QGxpbmsgbGlzdH0gbW9kdWxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzLmxpc3Quc3BhY2UoJzVweCBjYWxjKDEwJSArIDVweCknKSAvLz0+IFsnNXB4JywgJ2NhbGMoMTAlICsgNXB4KSddXG4gKi9cbnBvc3Rjc3MubGlzdCA9IGxpc3Q7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgQ29tbWVudH0gbm9kZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW2RlZmF1bHRzXSAtIHByb3BlcnRpZXMgZm9yIHRoZSBuZXcgbm9kZS5cbiAqXG4gKiBAcmV0dXJuIHtDb21tZW50fSBuZXcgQ29tbWVudCBub2RlXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MuY29tbWVudCh7IHRleHQ6ICd0ZXN0JyB9KVxuICovXG5wb3N0Y3NzLmNvbW1lbnQgPSBkZWZhdWx0cyA9PiBuZXcgQ29tbWVudChkZWZhdWx0cyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgQXRSdWxlfSBub2RlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBbZGVmYXVsdHNdIC0gcHJvcGVydGllcyBmb3IgdGhlIG5ldyBub2RlLlxuICpcbiAqIEByZXR1cm4ge0F0UnVsZX0gbmV3IEF0UnVsZSBub2RlXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MuYXRSdWxlKHsgbmFtZTogJ2NoYXJzZXQnIH0pLnRvU3RyaW5nKCkgLy89PiBcIkBjaGFyc2V0XCJcbiAqL1xucG9zdGNzcy5hdFJ1bGUgPSBkZWZhdWx0cyA9PiBuZXcgQXRSdWxlKGRlZmF1bHRzKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHtAbGluayBEZWNsYXJhdGlvbn0gbm9kZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW2RlZmF1bHRzXSAtIHByb3BlcnRpZXMgZm9yIHRoZSBuZXcgbm9kZS5cbiAqXG4gKiBAcmV0dXJuIHtEZWNsYXJhdGlvbn0gbmV3IERlY2xhcmF0aW9uIG5vZGVcbiAqXG4gKiBAZXhhbXBsZVxuICogcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdyZWQnIH0pLnRvU3RyaW5nKCkgLy89PiBcImNvbG9yOiByZWRcIlxuICovXG5wb3N0Y3NzLmRlY2wgPSBkZWZhdWx0cyA9PiBuZXcgRGVjbGFyYXRpb24oZGVmYXVsdHMpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIFJ1bGV9IG5vZGUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IFtkZWZhdWx0c10gLSBwcm9wZXJ0aWVzIGZvciB0aGUgbmV3IG5vZGUuXG4gKlxuICogQHJldHVybiB7UnVsZX0gbmV3IFJ1bGUgbm9kZVxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzLnJ1bGUoeyBzZWxlY3RvcjogJ2EnIH0pLnRvU3RyaW5nKCkgLy89PiBcImEge1xcbn1cIlxuICovXG5wb3N0Y3NzLnJ1bGUgPSBkZWZhdWx0cyA9PiBuZXcgUnVsZShkZWZhdWx0cyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgUm9vdH0gbm9kZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW2RlZmF1bHRzXSAtIHByb3BlcnRpZXMgZm9yIHRoZSBuZXcgbm9kZS5cbiAqXG4gKiBAcmV0dXJuIHtSb290fSBuZXcgUm9vdCBub2RlXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3Mucm9vdCh7IGFmdGVyOiAnXFxuJyB9KS50b1N0cmluZygpIC8vPT4gXCJcXG5cIlxuICovXG5wb3N0Y3NzLnJvb3QgPSBkZWZhdWx0cyA9PiBuZXcgUm9vdChkZWZhdWx0cyk7XG5cbmV4cG9ydCBkZWZhdWx0IHBvc3Rjc3M7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _chalk = require('chalk');\n\nvar _chalk2 = _interopRequireDefault(_chalk);\n\nvar _tokenize = require('./tokenize');\n\nvar _tokenize2 = _interopRequireDefault(_tokenize);\n\nvar _input = require('./input');\n\nvar _input2 = _interopRequireDefault(_input);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HIGHLIGHT_THEME = {\n 'brackets': _chalk2.default.cyan,\n 'at-word': _chalk2.default.cyan,\n 'call': _chalk2.default.cyan,\n 'comment': _chalk2.default.gray,\n 'string': _chalk2.default.green,\n 'class': _chalk2.default.yellow,\n 'hash': _chalk2.default.magenta,\n '(': _chalk2.default.cyan,\n ')': _chalk2.default.cyan,\n '{': _chalk2.default.yellow,\n '}': _chalk2.default.yellow,\n '[': _chalk2.default.yellow,\n ']': _chalk2.default.yellow,\n ':': _chalk2.default.yellow,\n ';': _chalk2.default.yellow\n};\n\nfunction getTokenType(_ref, processor) {\n var type = _ref[0],\n value = _ref[1];\n\n if (type === 'word') {\n if (value[0] === '.') {\n return 'class';\n }\n if (value[0] === '#') {\n return 'hash';\n }\n }\n\n if (!processor.endOfFile()) {\n var next = processor.nextToken();\n processor.back(next);\n if (next[0] === 'brackets' || next[0] === '(') return 'call';\n }\n\n return type;\n}\n\nfunction terminalHighlight(css) {\n var processor = (0, _tokenize2.default)(new _input2.default(css), { ignoreErrors: true });\n var result = '';\n\n var _loop = function _loop() {\n var token = processor.nextToken();\n var color = HIGHLIGHT_THEME[getTokenType(token, processor)];\n if (color) {\n result += token[1].split(/\\r?\\n/).map(function (i) {\n return color(i);\n }).join('\\n');\n } else {\n result += token[1];\n }\n };\n\n while (!processor.endOfFile()) {\n _loop();\n }\n return result;\n}\n\nexports.default = terminalHighlight;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlcm1pbmFsLWhpZ2hsaWdodC5lczYiXSwibmFtZXMiOlsiSElHSExJR0hUX1RIRU1FIiwiY2hhbGsiLCJjeWFuIiwiZ3JheSIsImdyZWVuIiwieWVsbG93IiwibWFnZW50YSIsImdldFRva2VuVHlwZSIsInByb2Nlc3NvciIsInR5cGUiLCJ2YWx1ZSIsImVuZE9mRmlsZSIsIm5leHQiLCJuZXh0VG9rZW4iLCJiYWNrIiwidGVybWluYWxIaWdobGlnaHQiLCJjc3MiLCJJbnB1dCIsImlnbm9yZUVycm9ycyIsInJlc3VsdCIsInRva2VuIiwiY29sb3IiLCJzcGxpdCIsIm1hcCIsImkiLCJqb2luIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7QUFFQTs7OztBQUNBOzs7Ozs7QUFFQSxJQUFNQSxrQkFBa0I7QUFDcEIsZ0JBQVlDLGdCQUFNQyxJQURFO0FBRXBCLGVBQVlELGdCQUFNQyxJQUZFO0FBR3BCLFlBQVlELGdCQUFNQyxJQUhFO0FBSXBCLGVBQVlELGdCQUFNRSxJQUpFO0FBS3BCLGNBQVlGLGdCQUFNRyxLQUxFO0FBTXBCLGFBQVlILGdCQUFNSSxNQU5FO0FBT3BCLFlBQVlKLGdCQUFNSyxPQVBFO0FBUXBCLFNBQVlMLGdCQUFNQyxJQVJFO0FBU3BCLFNBQVlELGdCQUFNQyxJQVRFO0FBVXBCLFNBQVlELGdCQUFNSSxNQVZFO0FBV3BCLFNBQVlKLGdCQUFNSSxNQVhFO0FBWXBCLFNBQVlKLGdCQUFNSSxNQVpFO0FBYXBCLFNBQVlKLGdCQUFNSSxNQWJFO0FBY3BCLFNBQVlKLGdCQUFNSSxNQWRFO0FBZXBCLFNBQVlKLGdCQUFNSTtBQWZFLENBQXhCOztBQWtCQSxTQUFTRSxZQUFULE9BQXFDQyxTQUFyQyxFQUFnRDtBQUFBLFFBQXpCQyxJQUF5QjtBQUFBLFFBQW5CQyxLQUFtQjs7QUFDNUMsUUFBS0QsU0FBUyxNQUFkLEVBQXVCO0FBQ25CLFlBQUtDLE1BQU0sQ0FBTixNQUFhLEdBQWxCLEVBQXdCO0FBQ3BCLG1CQUFPLE9BQVA7QUFDSDtBQUNELFlBQUtBLE1BQU0sQ0FBTixNQUFhLEdBQWxCLEVBQXdCO0FBQ3BCLG1CQUFPLE1BQVA7QUFDSDtBQUNKOztBQUVELFFBQUssQ0FBQ0YsVUFBVUcsU0FBVixFQUFOLEVBQThCO0FBQzFCLFlBQUlDLE9BQU9KLFVBQVVLLFNBQVYsRUFBWDtBQUNBTCxrQkFBVU0sSUFBVixDQUFlRixJQUFmO0FBQ0EsWUFBS0EsS0FBSyxDQUFMLE1BQVksVUFBWixJQUEwQkEsS0FBSyxDQUFMLE1BQVksR0FBM0MsRUFBaUQsT0FBTyxNQUFQO0FBQ3BEOztBQUVELFdBQU9ILElBQVA7QUFDSDs7QUFFRCxTQUFTTSxpQkFBVCxDQUEyQkMsR0FBM0IsRUFBZ0M7QUFDNUIsUUFBSVIsWUFBWSx3QkFBVSxJQUFJUyxlQUFKLENBQVVELEdBQVYsQ0FBVixFQUEwQixFQUFFRSxjQUFjLElBQWhCLEVBQTFCLENBQWhCO0FBQ0EsUUFBSUMsU0FBUyxFQUFiOztBQUY0QjtBQUl4QixZQUFJQyxRQUFRWixVQUFVSyxTQUFWLEVBQVo7QUFDQSxZQUFJUSxRQUFRckIsZ0JBQWdCTyxhQUFhYSxLQUFiLEVBQW9CWixTQUFwQixDQUFoQixDQUFaO0FBQ0EsWUFBS2EsS0FBTCxFQUFhO0FBQ1RGLHNCQUFVQyxNQUFNLENBQU4sRUFBU0UsS0FBVCxDQUFlLE9BQWYsRUFDTEMsR0FESyxDQUNBO0FBQUEsdUJBQUtGLE1BQU1HLENBQU4sQ0FBTDtBQUFBLGFBREEsRUFFTEMsSUFGSyxDQUVBLElBRkEsQ0FBVjtBQUdILFNBSkQsTUFJTztBQUNITixzQkFBVUMsTUFBTSxDQUFOLENBQVY7QUFDSDtBQVp1Qjs7QUFHNUIsV0FBUSxDQUFDWixVQUFVRyxTQUFWLEVBQVQsRUFBaUM7QUFBQTtBQVVoQztBQUNELFdBQU9RLE1BQVA7QUFDSDs7a0JBRWNKLGlCIiwiZmlsZSI6InRlcm1pbmFsLWhpZ2hsaWdodC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbmltcG9ydCB0b2tlbml6ZXIgZnJvbSAnLi90b2tlbml6ZSc7XG5pbXBvcnQgSW5wdXQgICAgZnJvbSAnLi9pbnB1dCc7XG5cbmNvbnN0IEhJR0hMSUdIVF9USEVNRSA9IHtcbiAgICAnYnJhY2tldHMnOiBjaGFsay5jeWFuLFxuICAgICdhdC13b3JkJzogIGNoYWxrLmN5YW4sXG4gICAgJ2NhbGwnOiAgICAgY2hhbGsuY3lhbixcbiAgICAnY29tbWVudCc6ICBjaGFsay5ncmF5LFxuICAgICdzdHJpbmcnOiAgIGNoYWxrLmdyZWVuLFxuICAgICdjbGFzcyc6ICAgIGNoYWxrLnllbGxvdyxcbiAgICAnaGFzaCc6ICAgICBjaGFsay5tYWdlbnRhLFxuICAgICcoJzogICAgICAgIGNoYWxrLmN5YW4sXG4gICAgJyknOiAgICAgICAgY2hhbGsuY3lhbixcbiAgICAneyc6ICAgICAgICBjaGFsay55ZWxsb3csXG4gICAgJ30nOiAgICAgICAgY2hhbGsueWVsbG93LFxuICAgICdbJzogICAgICAgIGNoYWxrLnllbGxvdyxcbiAgICAnXSc6ICAgICAgICBjaGFsay55ZWxsb3csXG4gICAgJzonOiAgICAgICAgY2hhbGsueWVsbG93LFxuICAgICc7JzogICAgICAgIGNoYWxrLnllbGxvd1xufTtcblxuZnVuY3Rpb24gZ2V0VG9rZW5UeXBlKFt0eXBlLCB2YWx1ZV0sIHByb2Nlc3Nvcikge1xuICAgIGlmICggdHlwZSA9PT0gJ3dvcmQnICkge1xuICAgICAgICBpZiAoIHZhbHVlWzBdID09PSAnLicgKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2NsYXNzJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIHZhbHVlWzBdID09PSAnIycgKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2hhc2gnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCAhcHJvY2Vzc29yLmVuZE9mRmlsZSgpICkge1xuICAgICAgICBsZXQgbmV4dCA9IHByb2Nlc3Nvci5uZXh0VG9rZW4oKTtcbiAgICAgICAgcHJvY2Vzc29yLmJhY2sobmV4dCk7XG4gICAgICAgIGlmICggbmV4dFswXSA9PT0gJ2JyYWNrZXRzJyB8fCBuZXh0WzBdID09PSAnKCcgKSByZXR1cm4gJ2NhbGwnO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlO1xufVxuXG5mdW5jdGlvbiB0ZXJtaW5hbEhpZ2hsaWdodChjc3MpIHtcbiAgICBsZXQgcHJvY2Vzc29yID0gdG9rZW5pemVyKG5ldyBJbnB1dChjc3MpLCB7IGlnbm9yZUVycm9yczogdHJ1ZSB9KTtcbiAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgd2hpbGUgKCAhcHJvY2Vzc29yLmVuZE9mRmlsZSgpICkge1xuICAgICAgICBsZXQgdG9rZW4gPSBwcm9jZXNzb3IubmV4dFRva2VuKCk7XG4gICAgICAgIGxldCBjb2xvciA9IEhJR0hMSUdIVF9USEVNRVtnZXRUb2tlblR5cGUodG9rZW4sIHByb2Nlc3NvcildO1xuICAgICAgICBpZiAoIGNvbG9yICkge1xuICAgICAgICAgICAgcmVzdWx0ICs9IHRva2VuWzFdLnNwbGl0KC9cXHI/XFxuLylcbiAgICAgICAgICAgICAgICAubWFwKCBpID0+IGNvbG9yKGkpIClcbiAgICAgICAgICAgICAgICAuam9pbignXFxuJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gdG9rZW5bMV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdGVybWluYWxIaWdobGlnaHQ7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _sourceMap = require('source-map');\n\nvar _sourceMap2 = _interopRequireDefault(_sourceMap);\n\nvar _path = require('path');\n\nvar _path2 = _interopRequireDefault(_path);\n\nvar _fs = require('fs');\n\nvar _fs2 = _interopRequireDefault(_fs);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction fromBase64(str) {\n if (Buffer) {\n if (Buffer.from && Buffer.from !== Uint8Array.from) {\n return Buffer.from(str, 'base64').toString();\n } else {\n return new Buffer(str, 'base64').toString();\n }\n } else {\n return window.atob(str);\n }\n}\n\n/**\n * Source map information from input CSS.\n * For example, source map after Sass compiler.\n *\n * This class will automatically find source map in input CSS or in file system\n * near input file (according `from` option).\n *\n * @example\n * const root = postcss.parse(css, { from: 'a.sass.css' });\n * root.input.map //=> PreviousMap\n */\n\nvar PreviousMap = function () {\n\n /**\n * @param {string} css - input CSS source\n * @param {processOptions} [opts] - {@link Processor#process} options\n */\n function PreviousMap(css, opts) {\n _classCallCheck(this, PreviousMap);\n\n this.loadAnnotation(css);\n /**\n * @member {boolean} - Was source map inlined by data-uri to input CSS.\n */\n this.inline = this.startWith(this.annotation, 'data:');\n\n var prev = opts.map ? opts.map.prev : undefined;\n var text = this.loadMap(opts.from, prev);\n if (text) this.text = text;\n }\n\n /**\n * Create a instance of `SourceMapGenerator` class\n * from the `source-map` library to work with source map information.\n *\n * It is lazy method, so it will create object only on first call\n * and then it will use cache.\n *\n * @return {SourceMapGenerator} object with source map information\n */\n\n\n PreviousMap.prototype.consumer = function consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new _sourceMap2.default.SourceMapConsumer(this.text);\n }\n return this.consumerCache;\n };\n\n /**\n * Does source map contains `sourcesContent` with input source text.\n *\n * @return {boolean} Is `sourcesContent` present\n */\n\n\n PreviousMap.prototype.withContent = function withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n };\n\n PreviousMap.prototype.startWith = function startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n };\n\n PreviousMap.prototype.loadAnnotation = function loadAnnotation(css) {\n var match = css.match(/\\/\\*\\s*# sourceMappingURL=(.*)\\s*\\*\\//);\n if (match) this.annotation = match[1].trim();\n };\n\n PreviousMap.prototype.decodeInline = function decodeInline(text) {\n // data:application/json;charset=utf-8;base64,\n // data:application/json;charset=utf8;base64,\n // data:application/json;base64,\n var baseUri = /^data:application\\/json;(?:charset=utf-?8;)?base64,/;\n var uri = 'data:application/json,';\n\n if (this.startWith(text, uri)) {\n return decodeURIComponent(text.substr(uri.length));\n } else if (baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n } else {\n var encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error('Unsupported source map encoding ' + encoding);\n }\n };\n\n PreviousMap.prototype.loadMap = function loadMap(file, prev) {\n if (prev === false) return false;\n\n if (prev) {\n if (typeof prev === 'string') {\n return prev;\n } else if (typeof prev === 'function') {\n var prevPath = prev(file);\n if (prevPath && _fs2.default.existsSync && _fs2.default.existsSync(prevPath)) {\n return _fs2.default.readFileSync(prevPath, 'utf-8').toString().trim();\n } else {\n throw new Error('Unable to load previous source map: ' + prevPath.toString());\n }\n } else if (prev instanceof _sourceMap2.default.SourceMapConsumer) {\n return _sourceMap2.default.SourceMapGenerator.fromSourceMap(prev).toString();\n } else if (prev instanceof _sourceMap2.default.SourceMapGenerator) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error('Unsupported previous source map format: ' + prev.toString());\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n var map = this.annotation;\n if (file) map = _path2.default.join(_path2.default.dirname(file), map);\n\n this.root = _path2.default.dirname(map);\n if (_fs2.default.existsSync && _fs2.default.existsSync(map)) {\n return _fs2.default.readFileSync(map, 'utf-8').toString().trim();\n } else {\n return false;\n }\n }\n };\n\n PreviousMap.prototype.isMap = function isMap(map) {\n if ((typeof map === 'undefined' ? 'undefined' : _typeof(map)) !== 'object') return false;\n return typeof map.mappings === 'string' || typeof map._mappings === 'string';\n };\n\n return PreviousMap;\n}();\n\nexports.default = PreviousMap;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByZXZpb3VzLW1hcC5lczYiXSwibmFtZXMiOlsiZnJvbUJhc2U2NCIsInN0ciIsIkJ1ZmZlciIsImZyb20iLCJVaW50OEFycmF5IiwidG9TdHJpbmciLCJ3aW5kb3ciLCJhdG9iIiwiUHJldmlvdXNNYXAiLCJjc3MiLCJvcHRzIiwibG9hZEFubm90YXRpb24iLCJpbmxpbmUiLCJzdGFydFdpdGgiLCJhbm5vdGF0aW9uIiwicHJldiIsIm1hcCIsInVuZGVmaW5lZCIsInRleHQiLCJsb2FkTWFwIiwiY29uc3VtZXIiLCJjb25zdW1lckNhY2hlIiwibW96aWxsYSIsIlNvdXJjZU1hcENvbnN1bWVyIiwid2l0aENvbnRlbnQiLCJzb3VyY2VzQ29udGVudCIsImxlbmd0aCIsInN0cmluZyIsInN0YXJ0Iiwic3Vic3RyIiwibWF0Y2giLCJ0cmltIiwiZGVjb2RlSW5saW5lIiwiYmFzZVVyaSIsInVyaSIsImRlY29kZVVSSUNvbXBvbmVudCIsInRlc3QiLCJSZWdFeHAiLCJsYXN0TWF0Y2giLCJlbmNvZGluZyIsIkVycm9yIiwiZmlsZSIsInByZXZQYXRoIiwiZnMiLCJleGlzdHNTeW5jIiwicmVhZEZpbGVTeW5jIiwiU291cmNlTWFwR2VuZXJhdG9yIiwiZnJvbVNvdXJjZU1hcCIsImlzTWFwIiwiSlNPTiIsInN0cmluZ2lmeSIsInBhdGgiLCJqb2luIiwiZGlybmFtZSIsInJvb3QiLCJtYXBwaW5ncyIsIl9tYXBwaW5ncyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7OztBQUVBLFNBQVNBLFVBQVQsQ0FBb0JDLEdBQXBCLEVBQXlCO0FBQ3JCLFFBQUtDLE1BQUwsRUFBYztBQUNWLFlBQUtBLE9BQU9DLElBQVAsSUFBZUQsT0FBT0MsSUFBUCxLQUFnQkMsV0FBV0QsSUFBL0MsRUFBc0Q7QUFDbEQsbUJBQU9ELE9BQU9DLElBQVAsQ0FBWUYsR0FBWixFQUFpQixRQUFqQixFQUEyQkksUUFBM0IsRUFBUDtBQUNILFNBRkQsTUFF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LGFBQUdDLFVBQUgsSUFBaUJELGFBQUdDLFVBQUgsQ0FBYzVCLEdBQWQsQ0FBdEIsRUFBMkM7QUFDdkMsdUJBQU8yQixhQUFHRSxZQUFILENBQWdCN0IsR0FBaEIsRUFBcUIsT0FBckIsRUFBOEJYLFFBQTlCLEdBQXlDMEIsSUFBekMsRUFBUDtBQUNILGFBRkQsTUFFTztBQUNILHVCQUFPLEtBQVA7QUFDSDtBQUNKO0FBQ0osSzs7MEJBRURpQixLLGtCQUFNaEMsRyxFQUFLO0FBQ1AsWUFBSyxRQUFPQSxHQUFQLHlDQUFPQSxHQUFQLE9BQWUsUUFBcEIsRUFBK0IsT0FBTyxLQUFQO0FBQy9CLGVBQU8sT0FBT0EsSUFBSXVDLFFBQVgsS0FBd0IsUUFBeEIsSUFDQSxPQUFPdkMsSUFBSXdDLFNBQVgsS0FBeUIsUUFEaEM7QUFFSCxLOzs7OztrQkFHVWhELFciLCJmaWxlIjoicHJldmlvdXMtbWFwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vemlsbGEgIGZyb20gJ3NvdXJjZS1tYXAnO1xuaW1wb3J0IHBhdGggICAgIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGZzICAgICAgIGZyb20gJ2ZzJztcblxuZnVuY3Rpb24gZnJvbUJhc2U2NChzdHIpIHtcbiAgICBpZiAoIEJ1ZmZlciApIHtcbiAgICAgICAgaWYgKCBCdWZmZXIuZnJvbSAmJiBCdWZmZXIuZnJvbSAhPT0gVWludDhBcnJheS5mcm9tICkge1xuICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHN0ciwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEJ1ZmZlcihzdHIsICdiYXNlNjQnKS50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5hdG9iKHN0cik7XG4gICAgfVxufVxuXG4vKipcbiAqIFNvdXJjZSBtYXAgaW5mb3JtYXRpb24gZnJvbSBpbnB1dCBDU1MuXG4gKiBGb3IgZXhhbXBsZSwgc291cmNlIG1hcCBhZnRlciBTYXNzIGNvbXBpbGVyLlxuICpcbiAqIFRoaXMgY2xhc3Mgd2lsbCBhdXRvbWF0aWNhbGx5IGZpbmQgc291cmNlIG1hcCBpbiBpbnB1dCBDU1Mgb3IgaW4gZmlsZSBzeXN0ZW1cbiAqIG5lYXIgaW5wdXQgZmlsZSAoYWNjb3JkaW5nIGBmcm9tYCBvcHRpb24pLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZShjc3MsIHsgZnJvbTogJ2Euc2Fzcy5jc3MnIH0pO1xuICogcm9vdC5pbnB1dC5tYXAgLy89PiBQcmV2aW91c01hcFxuICovXG5jbGFzcyBQcmV2aW91c01hcCB7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gICAgICAgICBjc3MgICAgLSBpbnB1dCBDU1Mgc291cmNlXG4gICAgICogQHBhcmFtIHtwcm9jZXNzT3B0aW9uc30gW29wdHNdIC0ge0BsaW5rIFByb2Nlc3NvciNwcm9jZXNzfSBvcHRpb25zXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY3NzLCBvcHRzKSB7XG4gICAgICAgIHRoaXMubG9hZEFubm90YXRpb24oY3NzKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge2Jvb2xlYW59IC0gV2FzIHNvdXJjZSBtYXAgaW5saW5lZCBieSBkYXRhLXVyaSB0byBpbnB1dCBDU1MuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmlubGluZSA9IHRoaXMuc3RhcnRXaXRoKHRoaXMuYW5ub3RhdGlvbiwgJ2RhdGE6Jyk7XG5cbiAgICAgICAgbGV0IHByZXYgPSBvcHRzLm1hcCA/IG9wdHMubWFwLnByZXYgOiB1bmRlZmluZWQ7XG4gICAgICAgIGxldCB0ZXh0ID0gdGhpcy5sb2FkTWFwKG9wdHMuZnJvbSwgcHJldik7XG4gICAgICAgIGlmICggdGV4dCApIHRoaXMudGV4dCA9IHRleHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgaW5zdGFuY2Ugb2YgYFNvdXJjZU1hcEdlbmVyYXRvcmAgY2xhc3NcbiAgICAgKiBmcm9tIHRoZSBgc291cmNlLW1hcGAgbGlicmFyeSB0byB3b3JrIHdpdGggc291cmNlIG1hcCBpbmZvcm1hdGlvbi5cbiAgICAgKlxuICAgICAqIEl0IGlzIGxhenkgbWV0aG9kLCBzbyBpdCB3aWxsIGNyZWF0ZSBvYmplY3Qgb25seSBvbiBmaXJzdCBjYWxsXG4gICAgICogYW5kIHRoZW4gaXQgd2lsbCB1c2UgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtTb3VyY2VNYXBHZW5lcmF0b3J9IG9iamVjdCB3aXRoIHNvdXJjZSBtYXAgaW5mb3JtYXRpb25cbiAgICAgKi9cbiAgICBjb25zdW1lcigpIHtcbiAgICAgICAgaWYgKCAhdGhpcy5jb25zdW1lckNhY2hlICkge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lckNhY2hlID0gbmV3IG1vemlsbGEuU291cmNlTWFwQ29uc3VtZXIodGhpcy50ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb25zdW1lckNhY2hlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERvZXMgc291cmNlIG1hcCBjb250YWlucyBgc291cmNlc0NvbnRlbnRgIHdpdGggaW5wdXQgc291cmNlIHRleHQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBJcyBgc291cmNlc0NvbnRlbnRgIHByZXNlbnRcbiAgICAgKi9cbiAgICB3aXRoQ29udGVudCgpIHtcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuY29uc3VtZXIoKS5zb3VyY2VzQ29udGVudCAmJlxuICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1lcigpLnNvdXJjZXNDb250ZW50Lmxlbmd0aCA+IDApO1xuICAgIH1cblxuICAgIHN0YXJ0V2l0aChzdHJpbmcsIHN0YXJ0KSB7XG4gICAgICAgIGlmICggIXN0cmluZyApIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHIoMCwgc3RhcnQubGVuZ3RoKSA9PT0gc3RhcnQ7XG4gICAgfVxuXG4gICAgbG9hZEFubm90YXRpb24oY3NzKSB7XG4gICAgICAgIGxldCBtYXRjaCA9IGNzcy5tYXRjaCgvXFwvXFwqXFxzKiMgc291cmNlTWFwcGluZ1VSTD0oLiopXFxzKlxcKlxcLy8pO1xuICAgICAgICBpZiAoIG1hdGNoICkgdGhpcy5hbm5vdGF0aW9uID0gbWF0Y2hbMV0udHJpbSgpO1xuICAgIH1cblxuICAgIGRlY29kZUlubGluZSh0ZXh0KSB7XG4gICAgICAgIC8vIGRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcbiAgICAgICAgLy8gZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmODtiYXNlNjQsXG4gICAgICAgIC8vIGRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXG4gICAgICAgIGxldCBiYXNlVXJpID0gL15kYXRhOmFwcGxpY2F0aW9uXFwvanNvbjsoPzpjaGFyc2V0PXV0Zi0/ODspP2Jhc2U2NCwvO1xuICAgICAgICBsZXQgdXJpICAgICA9ICdkYXRhOmFwcGxpY2F0aW9uL2pzb24sJztcblxuICAgICAgICBpZiAoIHRoaXMuc3RhcnRXaXRoKHRleHQsIHVyaSkgKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KCB0ZXh0LnN1YnN0cih1cmkubGVuZ3RoKSApO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoIGJhc2VVcmkudGVzdCh0ZXh0KSApIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tQmFzZTY0KHRleHQuc3Vic3RyKFJlZ0V4cC5sYXN0TWF0Y2gubGVuZ3RoKSk7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBlbmNvZGluZyA9IHRleHQubWF0Y2goL2RhdGE6YXBwbGljYXRpb25cXC9qc29uOyhbXixdKyksLylbMV07XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHNvdXJjZSBtYXAgZW5jb2RpbmcgJyArIGVuY29kaW5nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxvYWRNYXAoZmlsZSwgcHJldikge1xuICAgICAgICBpZiAoIHByZXYgPT09IGZhbHNlICkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIGlmICggcHJldiApIHtcbiAgICAgICAgICAgIGlmICggdHlwZW9mIHByZXYgPT09ICdzdHJpbmcnICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgICAgfSBlbHNlIGlmICggdHlwZW9mIHByZXYgPT09ICdmdW5jdGlvbicgKSB7XG4gICAgICAgICAgICAgICAgbGV0IHByZXZQYXRoID0gcHJldihmaWxlKTtcbiAgICAgICAgICAgICAgICBpZiAoIHByZXZQYXRoICYmIGZzLmV4aXN0c1N5bmMgJiYgZnMuZXhpc3RzU3luYyhwcmV2UGF0aCkgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMocHJldlBhdGgsICd1dGYtOCcpLnRvU3RyaW5nKCkudHJpbSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGxvYWQgcHJldmlvdXMgc291cmNlIG1hcDogJyArXG4gICAgICAgICAgICAgICAgICAgIHByZXZQYXRoLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHByZXYgaW5zdGFuY2VvZiBtb3ppbGxhLlNvdXJjZU1hcENvbnN1bWVyICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb3ppbGxhLlNvdXJjZU1hcEdlbmVyYXRvclxuICAgICAgICAgICAgICAgICAgICAuZnJvbVNvdXJjZU1hcChwcmV2KS50b1N0cmluZygpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggcHJldiBpbnN0YW5jZW9mIG1vemlsbGEuU291cmNlTWFwR2VuZXJhdG9yICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2LnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB0aGlzLmlzTWFwKHByZXYpICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShwcmV2KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBwcmV2aW91cyBzb3VyY2UgbWFwIGZvcm1hdDogJyArXG4gICAgICAgICAgICAgICAgICAgIHByZXYudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIGlmICggdGhpcy5pbmxpbmUgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGVJbmxpbmUodGhpcy5hbm5vdGF0aW9uKTtcblxuICAgICAgICB9IGVsc2UgaWYgKCB0aGlzLmFubm90YXRpb24gKSB7XG4gICAgICAgICAgICBsZXQgbWFwID0gdGhpcy5hbm5vdGF0aW9uO1xuICAgICAgICAgICAgaWYgKCBmaWxlICkgbWFwID0gcGF0aC5qb2luKHBhdGguZGlybmFtZShmaWxlKSwgbWFwKTtcblxuICAgICAgICAgICAgdGhpcy5yb290ID0gcGF0aC5kaXJuYW1lKG1hcCk7XG4gICAgICAgICAgICBpZiAoIGZzLmV4aXN0c1N5bmMgJiYgZnMuZXhpc3RzU3luYyhtYXApICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMobWFwLCAndXRmLTgnKS50b1N0cmluZygpLnRyaW0oKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNNYXAobWFwKSB7XG4gICAgICAgIGlmICggdHlwZW9mIG1hcCAhPT0gJ29iamVjdCcgKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0eXBlb2YgbWFwLm1hcHBpbmdzID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgICAgICAgdHlwZW9mIG1hcC5fbWFwcGluZ3MgPT09ICdzdHJpbmcnO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJldmlvdXNNYXA7XG4iXX0=\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _sourceMap = require('source-map');\n\nvar _sourceMap2 = _interopRequireDefault(_sourceMap);\n\nvar _path = require('path');\n\nvar _path2 = _interopRequireDefault(_path);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MapGenerator = function () {\n function MapGenerator(stringify, root, opts) {\n _classCallCheck(this, MapGenerator);\n\n this.stringify = stringify;\n this.mapOpts = opts.map || {};\n this.root = root;\n this.opts = opts;\n }\n\n MapGenerator.prototype.isMap = function isMap() {\n if (typeof this.opts.map !== 'undefined') {\n return !!this.opts.map;\n } else {\n return this.previous().length > 0;\n }\n };\n\n MapGenerator.prototype.previous = function previous() {\n var _this = this;\n\n if (!this.previousMaps) {\n this.previousMaps = [];\n this.root.walk(function (node) {\n if (node.source && node.source.input.map) {\n var map = node.source.input.map;\n if (_this.previousMaps.indexOf(map) === -1) {\n _this.previousMaps.push(map);\n }\n }\n });\n }\n\n return this.previousMaps;\n };\n\n MapGenerator.prototype.isInline = function isInline() {\n if (typeof this.mapOpts.inline !== 'undefined') {\n return this.mapOpts.inline;\n }\n\n var annotation = this.mapOpts.annotation;\n if (typeof annotation !== 'undefined' && annotation !== true) {\n return false;\n }\n\n if (this.previous().length) {\n return this.previous().some(function (i) {\n return i.inline;\n });\n } else {\n return true;\n }\n };\n\n MapGenerator.prototype.isSourcesContent = function isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== 'undefined') {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some(function (i) {\n return i.withContent();\n });\n } else {\n return true;\n }\n };\n\n MapGenerator.prototype.clearAnnotation = function clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n\n var node = void 0;\n for (var i = this.root.nodes.length - 1; i >= 0; i--) {\n node = this.root.nodes[i];\n if (node.type !== 'comment') continue;\n if (node.text.indexOf('# sourceMappingURL=') === 0) {\n this.root.removeChild(i);\n }\n }\n };\n\n MapGenerator.prototype.setSourcesContent = function setSourcesContent() {\n var _this2 = this;\n\n var already = {};\n this.root.walk(function (node) {\n if (node.source) {\n var from = node.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n var relative = _this2.relative(from);\n _this2.map.setSourceContent(relative, node.source.input.css);\n }\n }\n });\n };\n\n MapGenerator.prototype.applyPrevMaps = function applyPrevMaps() {\n for (var _iterator = this.previous(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var prev = _ref;\n\n var from = this.relative(prev.file);\n var root = prev.root || _path2.default.dirname(prev.file);\n var map = void 0;\n\n if (this.mapOpts.sourcesContent === false) {\n map = new _sourceMap2.default.SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = map.sourcesContent.map(function () {\n return null;\n });\n }\n } else {\n map = prev.consumer();\n }\n\n this.map.applySourceMap(map, from, this.relative(root));\n }\n };\n\n MapGenerator.prototype.isAnnotation = function isAnnotation() {\n if (this.isInline()) {\n return true;\n } else if (typeof this.mapOpts.annotation !== 'undefined') {\n return this.mapOpts.annotation;\n } else if (this.previous().length) {\n return this.previous().some(function (i) {\n return i.annotation;\n });\n } else {\n return true;\n }\n };\n\n MapGenerator.prototype.toBase64 = function toBase64(str) {\n if (Buffer) {\n if (Buffer.from && Buffer.from !== Uint8Array.from) {\n return Buffer.from(str).toString('base64');\n } else {\n return new Buffer(str).toString('base64');\n }\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n };\n\n MapGenerator.prototype.addAnnotation = function addAnnotation() {\n var content = void 0;\n\n if (this.isInline()) {\n\n content = 'data:application/json;base64,' + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === 'string') {\n content = this.mapOpts.annotation;\n } else {\n content = this.outputFile() + '.map';\n }\n\n var eol = '\\n';\n if (this.css.indexOf('\\r\\n') !== -1) eol = '\\r\\n';\n\n this.css += eol + '/*# sourceMappingURL=' + content + ' */';\n };\n\n MapGenerator.prototype.outputFile = function outputFile() {\n if (this.opts.to) {\n return this.relative(this.opts.to);\n } else if (this.opts.from) {\n return this.relative(this.opts.from);\n } else {\n return 'to.css';\n }\n };\n\n MapGenerator.prototype.generateMap = function generateMap() {\n this.generateString();\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n };\n\n MapGenerator.prototype.relative = function relative(file) {\n if (file.indexOf('<') === 0) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n\n var from = this.opts.to ? _path2.default.dirname(this.opts.to) : '.';\n\n if (typeof this.mapOpts.annotation === 'string') {\n from = _path2.default.dirname(_path2.default.resolve(from, this.mapOpts.annotation));\n }\n\n file = _path2.default.relative(from, file);\n if (_path2.default.sep === '\\\\') {\n return file.replace(/\\\\/g, '/');\n } else {\n return file;\n }\n };\n\n MapGenerator.prototype.sourcePath = function sourcePath(node) {\n if (this.mapOpts.from) {\n return this.mapOpts.from;\n } else {\n return this.relative(node.source.input.from);\n }\n };\n\n MapGenerator.prototype.generateString = function generateString() {\n var _this3 = this;\n\n this.css = '';\n this.map = new _sourceMap2.default.SourceMapGenerator({ file: this.outputFile() });\n\n var line = 1;\n var column = 1;\n\n var lines = void 0,\n last = void 0;\n this.stringify(this.root, function (str, node, type) {\n _this3.css += str;\n\n if (node && type !== 'end') {\n if (node.source && node.source.start) {\n _this3.map.addMapping({\n source: _this3.sourcePath(node),\n generated: { line: line, column: column - 1 },\n original: {\n line: node.source.start.line,\n column: node.source.start.column - 1\n }\n });\n } else {\n _this3.map.addMapping({\n source: '<no source>',\n original: { line: 1, column: 0 },\n generated: { line: line, column: column - 1 }\n });\n }\n }\n\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf('\\n');\n column = str.length - last;\n } else {\n column += str.length;\n }\n\n if (node && type !== 'start') {\n if (node.source && node.source.end) {\n _this3.map.addMapping({\n source: _this3.sourcePath(node),\n generated: { line: line, column: column - 1 },\n original: {\n line: node.source.end.line,\n column: node.source.end.column\n }\n });\n } else {\n _this3.map.addMapping({\n source: '<no source>',\n original: { line: 1, column: 0 },\n generated: { line: line, column: column - 1 }\n });\n }\n }\n });\n };\n\n MapGenerator.prototype.generate = function generate() {\n this.clearAnnotation();\n\n if (this.isMap()) {\n return this.generateMap();\n } else {\n var result = '';\n this.stringify(this.root, function (i) {\n result += i;\n });\n return [result];\n }\n };\n\n return MapGenerator;\n}();\n\nexports.default = MapGenerator;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1hcC1nZW5lcmF0b3IuZXM2Il0sIm5hbWVzIjpbIk1hcEdlbmVyYXRvciIsInN0cmluZ2lmeSIsInJvb3QiLCJvcHRzIiwibWFwT3B0cyIsIm1hcCIsImlzTWFwIiwicHJldmlvdXMiLCJsZW5ndGgiLCJwcmV2aW91c01hcHMiLCJ3YWxrIiwibm9kZSIsInNvdXJjZSIsImlucHV0IiwiaW5kZXhPZiIsInB1c2giLCJpc0lubGluZSIsImlubGluZSIsImFubm90YXRpb24iLCJzb21lIiwiaSIsImlzU291cmNlc0NvbnRlbnQiLCJzb3VyY2VzQ29udGVudCIsIndpdGhDb250ZW50IiwiY2xlYXJBbm5vdGF0aW9uIiwibm9kZXMiLCJ0eXBlIiwidGV4dCIsInJlbW92ZUNoaWxkIiwic2V0U291cmNlc0NvbnRlbnQiLCJhbHJlYWR5IiwiZnJvbSIsInJlbGF0aXZlIiwic2V0U291cmNlQ29udGVudCIsImNzcyIsImFwcGx5UHJldk1hcHMiLCJwcmV2IiwiZmlsZSIsInBhdGgiLCJkaXJuYW1lIiwibW96aWxsYSIsIlNvdXJjZU1hcENvbnN1bWVyIiwiY29uc3VtZXIiLCJhcHBseVNvdXJjZU1hcCIsImlzQW5ub3RhdGlvbiIsInRvQmFzZTY0Iiwic3RyIiwiQnVmZmVyIiwiVWludDhBcnJheSIsInRvU3RyaW5nIiwid2luZG93IiwiYnRvYSIsInVuZXNjYXBlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiYWRkQW5ub3RhdGlvbiIsImNvbnRlbnQiLCJvdXRwdXRGaWxlIiwiZW9sIiwidG8iLCJnZW5lcmF0ZU1hcCIsImdlbmVyYXRlU3RyaW5nIiwidGVzdCIsInJlc29sdmUiLCJzZXAiLCJyZXBsYWNlIiwic291cmNlUGF0aCIsIlNvdXJjZU1hcEdlbmVyYXRvciIsImxpbmUiLCJjb2x1bW4iLCJsaW5lcyIsImxhc3QiLCJzdGFydCIsImFkZE1hcHBpbmciLCJnZW5lcmF0ZWQiLCJvcmlnaW5hbCIsIm1hdGNoIiwibGFzdEluZGV4T2YiLCJlbmQiLCJnZW5lcmF0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QVcsRUFBRU4sVUFBRixFQUFRQyxRQUFRQSxTQUFTLENBQXpCO0FBSEsscUJBQXBCO0FBS0g7QUFDSjtBQUNKLFNBakREO0FBa0RILEs7OzJCQUVEVSxRLHVCQUFXO0FBQ1AsYUFBS3RELGVBQUw7O0FBRUEsWUFBSyxLQUFLbEIsS0FBTCxFQUFMLEVBQW9CO0FBQ2hCLG1CQUFPLEtBQUtxRCxXQUFMLEVBQVA7QUFDSCxTQUZELE1BRU87QUFDSCxnQkFBSW9CLFNBQVMsRUFBYjtBQUNBLGlCQUFLOUUsU0FBTCxDQUFlLEtBQUtDLElBQXBCLEVBQTBCLGFBQUs7QUFDM0I2RSwwQkFBVTNELENBQVY7QUFDSCxhQUZEO0FBR0EsbUJBQU8sQ0FBQzJELE1BQUQsQ0FBUDtBQUNIO0FBQ0osSzs7Ozs7a0JBalJnQi9FLFkiLCJmaWxlIjoibWFwLWdlbmVyYXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb3ppbGxhIGZyb20gJ3NvdXJjZS1tYXAnO1xuaW1wb3J0IHBhdGggICAgZnJvbSAncGF0aCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1hcEdlbmVyYXRvciB7XG5cbiAgICBjb25zdHJ1Y3RvcihzdHJpbmdpZnksIHJvb3QsIG9wdHMpIHtcbiAgICAgICAgdGhpcy5zdHJpbmdpZnkgPSBzdHJpbmdpZnk7XG4gICAgICAgIHRoaXMubWFwT3B0cyAgID0gb3B0cy5tYXAgfHwgeyB9O1xuICAgICAgICB0aGlzLnJvb3QgICAgICA9IHJvb3Q7XG4gICAgICAgIHRoaXMub3B0cyAgICAgID0gb3B0cztcbiAgICB9XG5cbiAgICBpc01hcCgpIHtcbiAgICAgICAgaWYgKCB0eXBlb2YgdGhpcy5vcHRzLm1hcCAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICByZXR1cm4gISF0aGlzLm9wdHMubWFwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXMoKS5sZW5ndGggPiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJldmlvdXMoKSB7XG4gICAgICAgIGlmICggIXRoaXMucHJldmlvdXNNYXBzICkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c01hcHMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMucm9vdC53YWxrKCBub2RlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIG5vZGUuc291cmNlICYmIG5vZGUuc291cmNlLmlucHV0Lm1hcCApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1hcCA9IG5vZGUuc291cmNlLmlucHV0Lm1hcDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB0aGlzLnByZXZpb3VzTWFwcy5pbmRleE9mKG1hcCkgPT09IC0xICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c01hcHMucHVzaChtYXApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wcmV2aW91c01hcHM7XG4gICAgfVxuXG4gICAgaXNJbmxpbmUoKSB7XG4gICAgICAgIGlmICggdHlwZW9mIHRoaXMubWFwT3B0cy5pbmxpbmUgIT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFwT3B0cy5pbmxpbmU7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYW5ub3RhdGlvbiA9IHRoaXMubWFwT3B0cy5hbm5vdGF0aW9uO1xuICAgICAgICBpZiAoIHR5cGVvZiBhbm5vdGF0aW9uICE9PSAndW5kZWZpbmVkJyAmJiBhbm5vdGF0aW9uICE9PSB0cnVlICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCB0aGlzLnByZXZpb3VzKCkubGVuZ3RoICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXMoKS5zb21lKCBpID0+IGkuaW5saW5lICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzU291cmNlc0NvbnRlbnQoKSB7XG4gICAgICAgIGlmICggdHlwZW9mIHRoaXMubWFwT3B0cy5zb3VyY2VzQ29udGVudCAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXBPcHRzLnNvdXJjZXNDb250ZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmICggdGhpcy5wcmV2aW91cygpLmxlbmd0aCApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByZXZpb3VzKCkuc29tZSggaSA9PiBpLndpdGhDb250ZW50KCkgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xlYXJBbm5vdGF0aW9uKCkge1xuICAgICAgICBpZiAoIHRoaXMubWFwT3B0cy5hbm5vdGF0aW9uID09PSBmYWxzZSApIHJldHVybjtcblxuICAgICAgICBsZXQgbm9kZTtcbiAgICAgICAgZm9yICggbGV0IGkgPSB0aGlzLnJvb3Qubm9kZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0gKSB7XG4gICAgICAgICAgICBub2RlID0gdGhpcy5yb290Lm5vZGVzW2ldO1xuICAgICAgICAgICAgaWYgKCBub2RlLnR5cGUgIT09ICdjb21tZW50JyApIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKCBub2RlLnRleHQuaW5kZXhPZignIyBzb3VyY2VNYXBwaW5nVVJMPScpID09PSAwICkge1xuICAgICAgICAgICAgICAgIHRoaXMucm9vdC5yZW1vdmVDaGlsZChpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFNvdXJjZXNDb250ZW50KCkge1xuICAgICAgICBsZXQgYWxyZWFkeSA9IHsgfTtcbiAgICAgICAgdGhpcy5yb290LndhbGsoIG5vZGUgPT4ge1xuICAgICAgICAgICAgaWYgKCBub2RlLnNvdXJjZSApIHtcbiAgICAgICAgICAgICAgICBsZXQgZnJvbSA9IG5vZGUuc291cmNlLmlucHV0LmZyb207XG4gICAgICAgICAgICAgICAgaWYgKCBmcm9tICYmICFhbHJlYWR5W2Zyb21dICkge1xuICAgICAgICAgICAgICAgICAgICBhbHJlYWR5W2Zyb21dID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlbGF0aXZlID0gdGhpcy5yZWxhdGl2ZShmcm9tKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAuc2V0U291cmNlQ29udGVudChyZWxhdGl2ZSwgbm9kZS5zb3VyY2UuaW5wdXQuY3NzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFwcGx5UHJldk1hcHMoKSB7XG4gICAgICAgIGZvciAoIGxldCBwcmV2IG9mIHRoaXMucHJldmlvdXMoKSApIHtcbiAgICAgICAgICAgIGxldCBmcm9tID0gdGhpcy5yZWxhdGl2ZShwcmV2LmZpbGUpO1xuICAgICAgICAgICAgbGV0IHJvb3QgPSBwcmV2LnJvb3QgfHwgcGF0aC5kaXJuYW1lKHByZXYuZmlsZSk7XG4gICAgICAgICAgICBsZXQgbWFwO1xuXG4gICAgICAgICAgICBpZiAoIHRoaXMubWFwT3B0cy5zb3VyY2VzQ29udGVudCA9PT0gZmFsc2UgKSB7XG4gICAgICAgICAgICAgICAgbWFwID0gbmV3IG1vemlsbGEuU291cmNlTWFwQ29uc3VtZXIocHJldi50ZXh0KTtcbiAgICAgICAgICAgICAgICBpZiAoIG1hcC5zb3VyY2VzQ29udGVudCApIHtcbiAgICAgICAgICAgICAgICAgICAgbWFwLnNvdXJjZXNDb250ZW50ID0gbWFwLnNvdXJjZXNDb250ZW50Lm1hcCggKCkgPT4gbnVsbCApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbWFwID0gcHJldi5jb25zdW1lcigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm1hcC5hcHBseVNvdXJjZU1hcChtYXAsIGZyb20sIHRoaXMucmVsYXRpdmUocm9vdCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNBbm5vdGF0aW9uKCkge1xuICAgICAgICBpZiAoIHRoaXMuaXNJbmxpbmUoKSApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKCB0eXBlb2YgdGhpcy5tYXBPcHRzLmFubm90YXRpb24gIT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFwT3B0cy5hbm5vdGF0aW9uO1xuICAgICAgICB9IGVsc2UgaWYgKCB0aGlzLnByZXZpb3VzKCkubGVuZ3RoICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXMoKS5zb21lKCBpID0+IGkuYW5ub3RhdGlvbiApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b0Jhc2U2NChzdHIpIHtcbiAgICAgICAgaWYgKCBCdWZmZXIgKSB7XG4gICAgICAgICAgICBpZiAoIEJ1ZmZlci5mcm9tICYmIEJ1ZmZlci5mcm9tICE9PSBVaW50OEFycmF5LmZyb20gKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHN0cikudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJ1ZmZlcihzdHIpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB3aW5kb3cuYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoc3RyKSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWRkQW5ub3RhdGlvbigpIHtcbiAgICAgICAgbGV0IGNvbnRlbnQ7XG5cbiAgICAgICAgaWYgKCB0aGlzLmlzSW5saW5lKCkgKSB7XG5cbiAgICAgICAgICAgIGNvbnRlbnQgPSAnZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCwnICtcbiAgICAgICAgICAgICAgICB0aGlzLnRvQmFzZTY0KHRoaXMubWFwLnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoIHR5cGVvZiB0aGlzLm1hcE9wdHMuYW5ub3RhdGlvbiA9PT0gJ3N0cmluZycgKSB7XG4gICAgICAgICAgICBjb250ZW50ID0gdGhpcy5tYXBPcHRzLmFubm90YXRpb247XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRlbnQgPSB0aGlzLm91dHB1dEZpbGUoKSArICcubWFwJztcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBlb2wgICA9ICdcXG4nO1xuICAgICAgICBpZiAoIHRoaXMuY3NzLmluZGV4T2YoJ1xcclxcbicpICE9PSAtMSApIGVvbCA9ICdcXHJcXG4nO1xuXG4gICAgICAgIHRoaXMuY3NzICs9IGVvbCArICcvKiMgc291cmNlTWFwcGluZ1VSTD0nICsgY29udGVudCArICcgKi8nO1xuICAgIH1cblxuICAgIG91dHB1dEZpbGUoKSB7XG4gICAgICAgIGlmICggdGhpcy5vcHRzLnRvICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVsYXRpdmUodGhpcy5vcHRzLnRvKTtcbiAgICAgICAgfSBlbHNlIGlmICggdGhpcy5vcHRzLmZyb20gKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWxhdGl2ZSh0aGlzLm9wdHMuZnJvbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gJ3RvLmNzcyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZW5lcmF0ZU1hcCgpIHtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVN0cmluZygpO1xuICAgICAgICBpZiAoIHRoaXMuaXNTb3VyY2VzQ29udGVudCgpICkgICAgdGhpcy5zZXRTb3VyY2VzQ29udGVudCgpO1xuICAgICAgICBpZiAoIHRoaXMucHJldmlvdXMoKS5sZW5ndGggPiAwICkgdGhpcy5hcHBseVByZXZNYXBzKCk7XG4gICAgICAgIGlmICggdGhpcy5pc0Fubm90YXRpb24oKSApICAgICAgICB0aGlzLmFkZEFubm90YXRpb24oKTtcblxuICAgICAgICBpZiAoIHRoaXMuaXNJbmxpbmUoKSApIHtcbiAgICAgICAgICAgIHJldHVybiBbdGhpcy5jc3NdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFt0aGlzLmNzcywgdGhpcy5tYXBdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVsYXRpdmUoZmlsZSkge1xuICAgICAgICBpZiAoIGZpbGUuaW5kZXhPZignPCcpID09PSAwICkgcmV0dXJuIGZpbGU7XG4gICAgICAgIGlmICggL15cXHcrOlxcL1xcLy8udGVzdChmaWxlKSApIHJldHVybiBmaWxlO1xuXG4gICAgICAgIGxldCBmcm9tID0gdGhpcy5vcHRzLnRvID8gcGF0aC5kaXJuYW1lKHRoaXMub3B0cy50bykgOiAnLic7XG5cbiAgICAgICAgaWYgKCB0eXBlb2YgdGhpcy5tYXBPcHRzLmFubm90YXRpb24gPT09ICdzdHJpbmcnICkge1xuICAgICAgICAgICAgZnJvbSA9IHBhdGguZGlybmFtZSggcGF0aC5yZXNvbHZlKGZyb20sIHRoaXMubWFwT3B0cy5hbm5vdGF0aW9uKSApO1xuICAgICAgICB9XG5cbiAgICAgICAgZmlsZSA9IHBhdGgucmVsYXRpdmUoZnJvbSwgZmlsZSk7XG4gICAgICAgIGlmICggcGF0aC5zZXAgPT09ICdcXFxcJyApIHtcbiAgICAgICAgICAgIHJldHVybiBmaWxlLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmaWxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc291cmNlUGF0aChub2RlKSB7XG4gICAgICAgIGlmICggdGhpcy5tYXBPcHRzLmZyb20gKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXBPcHRzLmZyb207XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWxhdGl2ZShub2RlLnNvdXJjZS5pbnB1dC5mcm9tKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdlbmVyYXRlU3RyaW5nKCkge1xuICAgICAgICB0aGlzLmNzcyA9ICcnO1xuICAgICAgICB0aGlzLm1hcCA9IG5ldyBtb3ppbGxhLlNvdXJjZU1hcEdlbmVyYXRvcih7IGZpbGU6IHRoaXMub3V0cHV0RmlsZSgpIH0pO1xuXG4gICAgICAgIGxldCBsaW5lICAgPSAxO1xuICAgICAgICBsZXQgY29sdW1uID0gMTtcblxuICAgICAgICBsZXQgbGluZXMsIGxhc3Q7XG4gICAgICAgIHRoaXMuc3RyaW5naWZ5KHRoaXMucm9vdCwgKHN0ciwgbm9kZSwgdHlwZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jc3MgKz0gc3RyO1xuXG4gICAgICAgICAgICBpZiAoIG5vZGUgJiYgdHlwZSAhPT0gJ2VuZCcgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBub2RlLnNvdXJjZSAmJiBub2RlLnNvdXJjZS5zdGFydCApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAuYWRkTWFwcGluZyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICAgIHRoaXMuc291cmNlUGF0aChub2RlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZDogeyBsaW5lLCBjb2x1bW46IGNvbHVtbiAtIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsOiAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmU6ICAgbm9kZS5zb3VyY2Uuc3RhcnQubGluZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IG5vZGUuc291cmNlLnN0YXJ0LmNvbHVtbiAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAuYWRkTWFwcGluZyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICAgICc8bm8gc291cmNlPicsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbDogIHsgbGluZTogMSwgY29sdW1uOiAwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQ6IHsgbGluZSwgY29sdW1uOiBjb2x1bW4gLSAxIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsaW5lcyA9IHN0ci5tYXRjaCgvXFxuL2cpO1xuICAgICAgICAgICAgaWYgKCBsaW5lcyApIHtcbiAgICAgICAgICAgICAgICBsaW5lICArPSBsaW5lcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgbGFzdCAgID0gc3RyLmxhc3RJbmRleE9mKCdcXG4nKTtcbiAgICAgICAgICAgICAgICBjb2x1bW4gPSBzdHIubGVuZ3RoIC0gbGFzdDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29sdW1uICs9IHN0ci5sZW5ndGg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICggbm9kZSAmJiB0eXBlICE9PSAnc3RhcnQnICkge1xuICAgICAgICAgICAgICAgIGlmICggbm9kZS5zb3VyY2UgJiYgbm9kZS5zb3VyY2UuZW5kICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcC5hZGRNYXBwaW5nKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogICAgdGhpcy5zb3VyY2VQYXRoKG5vZGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkOiB7IGxpbmUsIGNvbHVtbjogY29sdW1uIC0gMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWw6ICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZTogICBub2RlLnNvdXJjZS5lbmQubGluZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IG5vZGUuc291cmNlLmVuZC5jb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAuYWRkTWFwcGluZyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICAgICc8bm8gc291cmNlPicsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbDogIHsgbGluZTogMSwgY29sdW1uOiAwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQ6IHsgbGluZSwgY29sdW1uOiBjb2x1bW4gLSAxIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZW5lcmF0ZSgpIHtcbiAgICAgICAgdGhpcy5jbGVhckFubm90YXRpb24oKTtcblxuICAgICAgICBpZiAoIHRoaXMuaXNNYXAoKSApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlTWFwKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgICAgICAgICB0aGlzLnN0cmluZ2lmeSh0aGlzLnJvb3QsIGkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gW3Jlc3VsdF07XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _warning = require('./warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Provides the result of the PostCSS transformations.\n *\n * A Result instance is returned by {@link LazyResult#then}\n * or {@link Root#toResult} methods.\n *\n * @example\n * postcss([cssnext]).process(css).then(function (result) {\n * console.log(result.css);\n * });\n *\n * @example\n * var result2 = postcss.parse(css).toResult();\n */\nvar Result = function () {\n\n /**\n * @param {Processor} processor - processor used for this transformation.\n * @param {Root} root - Root node after all transformations.\n * @param {processOptions} opts - options from the {@link Processor#process}\n * or {@link Root#toResult}\n */\n function Result(processor, root, opts) {\n _classCallCheck(this, Result);\n\n /**\n * @member {Processor} - The Processor instance used\n * for this transformation.\n *\n * @example\n * for ( let plugin of result.processor.plugins) {\n * if ( plugin.postcssPlugin === 'postcss-bad' ) {\n * throw 'postcss-good is incompatible with postcss-bad';\n * }\n * });\n */\n this.processor = processor;\n /**\n * @member {Message[]} - Contains messages from plugins\n * (e.g., warnings or custom messages).\n * Each message should have type\n * and plugin properties.\n *\n * @example\n * postcss.plugin('postcss-min-browser', () => {\n * return (root, result) => {\n * var browsers = detectMinBrowsersByCanIUse(root);\n * result.messages.push({\n * type: 'min-browser',\n * plugin: 'postcss-min-browser',\n * browsers: browsers\n * });\n * };\n * });\n */\n this.messages = [];\n /**\n * @member {Root} - Root node after all transformations.\n *\n * @example\n * root.toResult().root == root;\n */\n this.root = root;\n /**\n * @member {processOptions} - Options from the {@link Processor#process}\n * or {@link Root#toResult} call\n * that produced this Result instance.\n *\n * @example\n * root.toResult(opts).opts == opts;\n */\n this.opts = opts;\n /**\n * @member {string} - A CSS string representing of {@link Result#root}.\n *\n * @example\n * postcss.parse('a{}').toResult().css //=> \"a{}\"\n */\n this.css = undefined;\n /**\n * @member {SourceMapGenerator} - An instance of `SourceMapGenerator`\n * class from the `source-map` library,\n * representing changes\n * to the {@link Result#root} instance.\n *\n * @example\n * result.map.toJSON() //=> { version: 3, file: 'a.css', … }\n *\n * @example\n * if ( result.map ) {\n * fs.writeFileSync(result.opts.to + '.map', result.map.toString());\n * }\n */\n this.map = undefined;\n }\n\n /**\n * Returns for @{link Result#css} content.\n *\n * @example\n * result + '' === result.css\n *\n * @return {string} string representing of {@link Result#root}\n */\n\n\n Result.prototype.toString = function toString() {\n return this.css;\n };\n\n /**\n * Creates an instance of {@link Warning} and adds it\n * to {@link Result#messages}.\n *\n * @param {string} text - warning message\n * @param {Object} [opts] - warning options\n * @param {Node} opts.node - CSS node that caused the warning\n * @param {string} opts.word - word in CSS source that caused the warning\n * @param {number} opts.index - index in CSS node string that caused\n * the warning\n * @param {string} opts.plugin - name of the plugin that created\n * this warning. {@link Result#warn} fills\n * this property automatically.\n *\n * @return {Warning} created warning\n */\n\n\n Result.prototype.warn = function warn(text) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n\n var warning = new _warning2.default(text, opts);\n this.messages.push(warning);\n\n return warning;\n };\n\n /**\n * Returns warnings from plugins. Filters {@link Warning} instances\n * from {@link Result#messages}.\n *\n * @example\n * result.warnings().forEach(warn => {\n * console.warn(warn.toString());\n * });\n *\n * @return {Warning[]} warnings from plugins\n */\n\n\n Result.prototype.warnings = function warnings() {\n return this.messages.filter(function (i) {\n return i.type === 'warning';\n });\n };\n\n /**\n * An alias for the {@link Result#css} property.\n * Use it with syntaxes that generate non-CSS output.\n * @type {string}\n *\n * @example\n * result.css === result.content;\n */\n\n\n _createClass(Result, [{\n key: 'content',\n get: function get() {\n return this.css;\n }\n }]);\n\n return Result;\n}();\n\nexports.default = Result;\n\n/**\n * @typedef {object} Message\n * @property {string} type - message type\n * @property {string} plugin - source PostCSS plugin name\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlc3VsdC5lczYiXSwibmFtZXMiOlsiUmVzdWx0IiwicHJvY2Vzc29yIiwicm9vdCIsIm9wdHMiLCJtZXNzYWdlcyIsImNzcyIsInVuZGVmaW5lZCIsIm1hcCIsInRvU3RyaW5nIiwid2FybiIsInRleHQiLCJwbHVnaW4iLCJsYXN0UGx1Z2luIiwicG9zdGNzc1BsdWdpbiIsIndhcm5pbmciLCJXYXJuaW5nIiwicHVzaCIsIndhcm5pbmdzIiwiZmlsdGVyIiwiaSIsInR5cGUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7Ozs7OztBQUVBOzs7Ozs7Ozs7Ozs7OztJQWNNQSxNOztBQUVGOzs7Ozs7QUFNQSxrQkFBWUMsU0FBWixFQUF1QkMsSUFBdkIsRUFBNkJDLElBQTdCLEVBQW1DO0FBQUE7O0FBQy9COzs7Ozs7Ozs7OztBQVdBLFNBQUtGLFNBQUwsR0FBaUJBLFNBQWpCO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQSxTQUFLRyxRQUFMLEdBQWdCLEVBQWhCO0FBQ0E7Ozs7OztBQU1BLFNBQUtGLElBQUwsR0FBWUEsSUFBWjtBQUNBOzs7Ozs7OztBQVFBLFNBQUtDLElBQUwsR0FBWUEsSUFBWjtBQUNBOzs7Ozs7QUFNQSxTQUFLRSxHQUFMLEdBQVdDLFNBQVg7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUFjQSxTQUFLQyxHQUFMLEdBQVdELFNBQVg7QUFDSDs7QUFFRDs7Ozs7Ozs7OzttQkFRQUUsUSx1QkFBVztBQUNQLFdBQU8sS0FBS0gsR0FBWjtBQUNILEc7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQkFnQkFJLEksaUJBQUtDLEksRUFBa0I7QUFBQSxRQUFaUCxJQUFZLHVFQUFMLEVBQUs7O0FBQ25CLFFBQUssQ0FBQ0EsS0FBS1EsTUFBWCxFQUFvQjtBQUNoQixVQUFLLEtBQUtDLFVBQUwsSUFBbUIsS0FBS0EsVUFBTCxDQUFnQkMsYUFBeEMsRUFBd0Q7QUFDcERWLGFBQUtRLE1BQUwsR0FBYyxLQUFLQyxVQUFMLENBQWdCQyxhQUE5QjtBQUNIO0FBQ0o7O0FBRUQsUUFBSUMsVUFBVSxJQUFJQyxpQkFBSixDQUFZTCxJQUFaLEVBQWtCUCxJQUFsQixDQUFkO0FBQ0EsU0FBS0MsUUFBTCxDQUFjWSxJQUFkLENBQW1CRixPQUFuQjs7QUFFQSxXQUFPQSxPQUFQO0FBQ0gsRzs7QUFFRDs7Ozs7Ozs7Ozs7OzttQkFXQUcsUSx1QkFBVztBQUNQLFdBQU8sS0FBS2IsUUFBTCxDQUFjYyxNQUFkLENBQXNCO0FBQUEsYUFBS0MsRUFBRUMsSUFBRixLQUFXLFNBQWhCO0FBQUEsS0FBdEIsQ0FBUDtBQUNILEc7O0FBRUQ7Ozs7Ozs7Ozs7Ozt3QkFRYztBQUNWLGFBQU8sS0FBS2YsR0FBWjtBQUNIOzs7Ozs7a0JBSVVMLE07O0FBRWYiLCJmaWxlIjoicmVzdWx0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFdhcm5pbmcgZnJvbSAnLi93YXJuaW5nJztcblxuLyoqXG4gKiBQcm92aWRlcyB0aGUgcmVzdWx0IG9mIHRoZSBQb3N0Q1NTIHRyYW5zZm9ybWF0aW9ucy5cbiAqXG4gKiBBIFJlc3VsdCBpbnN0YW5jZSBpcyByZXR1cm5lZCBieSB7QGxpbmsgTGF6eVJlc3VsdCN0aGVufVxuICogb3Ige0BsaW5rIFJvb3QjdG9SZXN1bHR9IG1ldGhvZHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MoW2Nzc25leHRdKS5wcm9jZXNzKGNzcykudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gKiAgICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKTtcbiAqIH0pO1xuICpcbiAqIEBleGFtcGxlXG4gKiB2YXIgcmVzdWx0MiA9IHBvc3Rjc3MucGFyc2UoY3NzKS50b1Jlc3VsdCgpO1xuICovXG5jbGFzcyBSZXN1bHQge1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtQcm9jZXNzb3J9IHByb2Nlc3NvciAtIHByb2Nlc3NvciB1c2VkIGZvciB0aGlzIHRyYW5zZm9ybWF0aW9uLlxuICAgICAqIEBwYXJhbSB7Um9vdH0gICAgICByb290ICAgICAgLSBSb290IG5vZGUgYWZ0ZXIgYWxsIHRyYW5zZm9ybWF0aW9ucy5cbiAgICAgKiBAcGFyYW0ge3Byb2Nlc3NPcHRpb25zfSBvcHRzIC0gb3B0aW9ucyBmcm9tIHRoZSB7QGxpbmsgUHJvY2Vzc29yI3Byb2Nlc3N9XG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHtAbGluayBSb290I3RvUmVzdWx0fVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByb2Nlc3Nvciwgcm9vdCwgb3B0cykge1xuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7UHJvY2Vzc29yfSAtIFRoZSBQcm9jZXNzb3IgaW5zdGFuY2UgdXNlZFxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgdHJhbnNmb3JtYXRpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqIGZvciAoIGxldCBwbHVnaW4gb2YgcmVzdWx0LnByb2Nlc3Nvci5wbHVnaW5zKSB7XG4gICAgICAgICAqICAgaWYgKCBwbHVnaW4ucG9zdGNzc1BsdWdpbiA9PT0gJ3Bvc3Rjc3MtYmFkJyApIHtcbiAgICAgICAgICogICAgIHRocm93ICdwb3N0Y3NzLWdvb2QgaXMgaW5jb21wYXRpYmxlIHdpdGggcG9zdGNzcy1iYWQnO1xuICAgICAgICAgKiAgIH1cbiAgICAgICAgICogfSk7XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnByb2Nlc3NvciA9IHByb2Nlc3NvcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge01lc3NhZ2VbXX0gLSBDb250YWlucyBtZXNzYWdlcyBmcm9tIHBsdWdpbnNcbiAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgIChlLmcuLCB3YXJuaW5ncyBvciBjdXN0b20gbWVzc2FnZXMpLlxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgRWFjaCBtZXNzYWdlIHNob3VsZCBoYXZlIHR5cGVcbiAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgIGFuZCBwbHVnaW4gcHJvcGVydGllcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogcG9zdGNzcy5wbHVnaW4oJ3Bvc3Rjc3MtbWluLWJyb3dzZXInLCAoKSA9PiB7XG4gICAgICAgICAqICAgcmV0dXJuIChyb290LCByZXN1bHQpID0+IHtcbiAgICAgICAgICogICAgIHZhciBicm93c2VycyA9IGRldGVjdE1pbkJyb3dzZXJzQnlDYW5JVXNlKHJvb3QpO1xuICAgICAgICAgKiAgICAgcmVzdWx0Lm1lc3NhZ2VzLnB1c2goe1xuICAgICAgICAgKiAgICAgICB0eXBlOiAgICAnbWluLWJyb3dzZXInLFxuICAgICAgICAgKiAgICAgICBwbHVnaW46ICAncG9zdGNzcy1taW4tYnJvd3NlcicsXG4gICAgICAgICAqICAgICAgIGJyb3dzZXJzOiBicm93c2Vyc1xuICAgICAgICAgKiAgICAgfSk7XG4gICAgICAgICAqICAgfTtcbiAgICAgICAgICogfSk7XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtSb290fSAtIFJvb3Qgbm9kZSBhZnRlciBhbGwgdHJhbnNmb3JtYXRpb25zLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKiByb290LnRvUmVzdWx0KCkucm9vdCA9PSByb290O1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5yb290ID0gcm9vdDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge3Byb2Nlc3NPcHRpb25zfSAtIE9wdGlvbnMgZnJvbSB0aGUge0BsaW5rIFByb2Nlc3NvciNwcm9jZXNzfVxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB7QGxpbmsgUm9vdCN0b1Jlc3VsdH0gY2FsbFxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHByb2R1Y2VkIHRoaXMgUmVzdWx0IGluc3RhbmNlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKiByb290LnRvUmVzdWx0KG9wdHMpLm9wdHMgPT0gb3B0cztcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub3B0cyA9IG9wdHM7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtzdHJpbmd9IC0gQSBDU1Mgc3RyaW5nIHJlcHJlc2VudGluZyBvZiB7QGxpbmsgUmVzdWx0I3Jvb3R9LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKiBwb3N0Y3NzLnBhcnNlKCdhe30nKS50b1Jlc3VsdCgpLmNzcyAvLz0+IFwiYXt9XCJcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuY3NzID0gdW5kZWZpbmVkO1xuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U291cmNlTWFwR2VuZXJhdG9yfSAtIEFuIGluc3RhbmNlIG9mIGBTb3VyY2VNYXBHZW5lcmF0b3JgXG4gICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBmcm9tIHRoZSBgc291cmNlLW1hcGAgbGlicmFyeSxcbiAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHJlc2VudGluZyBjaGFuZ2VzXG4gICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUge0BsaW5rIFJlc3VsdCNyb290fSBpbnN0YW5jZS5cbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogcmVzdWx0Lm1hcC50b0pTT04oKSAvLz0+IHsgdmVyc2lvbjogMywgZmlsZTogJ2EuY3NzJywg4oCmIH1cbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogaWYgKCByZXN1bHQubWFwICkge1xuICAgICAgICAgKiAgIGZzLndyaXRlRmlsZVN5bmMocmVzdWx0Lm9wdHMudG8gKyAnLm1hcCcsIHJlc3VsdC5tYXAudG9TdHJpbmcoKSk7XG4gICAgICAgICAqIH1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMubWFwID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZm9yIEB7bGluayBSZXN1bHQjY3NzfSBjb250ZW50LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiByZXN1bHQgKyAnJyA9PT0gcmVzdWx0LmNzc1xuICAgICAqXG4gICAgICogQHJldHVybiB7c3RyaW5nfSBzdHJpbmcgcmVwcmVzZW50aW5nIG9mIHtAbGluayBSZXN1bHQjcm9vdH1cbiAgICAgKi9cbiAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3NzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2Yge0BsaW5rIFdhcm5pbmd9IGFuZCBhZGRzIGl0XG4gICAgICogdG8ge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAgICAgICAgLSB3YXJuaW5nIG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdICAgICAgLSB3YXJuaW5nIG9wdGlvbnNcbiAgICAgKiBAcGFyYW0ge05vZGV9ICAgb3B0cy5ub2RlICAgLSBDU1Mgbm9kZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLndvcmQgICAtIHdvcmQgaW4gQ1NTIHNvdXJjZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZ1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRzLmluZGV4ICAtIGluZGV4IGluIENTUyBub2RlIHN0cmluZyB0aGF0IGNhdXNlZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB3YXJuaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMucGx1Z2luIC0gbmFtZSBvZiB0aGUgcGx1Z2luIHRoYXQgY3JlYXRlZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgd2FybmluZy4ge0BsaW5rIFJlc3VsdCN3YXJufSBmaWxsc1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcHJvcGVydHkgYXV0b21hdGljYWxseS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1dhcm5pbmd9IGNyZWF0ZWQgd2FybmluZ1xuICAgICAqL1xuICAgIHdhcm4odGV4dCwgb3B0cyA9IHsgfSkge1xuICAgICAgICBpZiAoICFvcHRzLnBsdWdpbiApIHtcbiAgICAgICAgICAgIGlmICggdGhpcy5sYXN0UGx1Z2luICYmIHRoaXMubGFzdFBsdWdpbi5wb3N0Y3NzUGx1Z2luICkge1xuICAgICAgICAgICAgICAgIG9wdHMucGx1Z2luID0gdGhpcy5sYXN0UGx1Z2luLnBvc3Rjc3NQbHVnaW47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgd2FybmluZyA9IG5ldyBXYXJuaW5nKHRleHQsIG9wdHMpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2god2FybmluZyk7XG5cbiAgICAgICAgcmV0dXJuIHdhcm5pbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB3YXJuaW5ncyBmcm9tIHBsdWdpbnMuIEZpbHRlcnMge0BsaW5rIFdhcm5pbmd9IGluc3RhbmNlc1xuICAgICAqIGZyb20ge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHJlc3VsdC53YXJuaW5ncygpLmZvckVhY2god2FybiA9PiB7XG4gICAgICogICBjb25zb2xlLndhcm4od2Fybi50b1N0cmluZygpKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1dhcm5pbmdbXX0gd2FybmluZ3MgZnJvbSBwbHVnaW5zXG4gICAgICovXG4gICAgd2FybmluZ3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VzLmZpbHRlciggaSA9PiBpLnR5cGUgPT09ICd3YXJuaW5nJyApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFuIGFsaWFzIGZvciB0aGUge0BsaW5rIFJlc3VsdCNjc3N9IHByb3BlcnR5LlxuICAgICAqIFVzZSBpdCB3aXRoIHN5bnRheGVzIHRoYXQgZ2VuZXJhdGUgbm9uLUNTUyBvdXRwdXQuXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcmVzdWx0LmNzcyA9PT0gcmVzdWx0LmNvbnRlbnQ7XG4gICAgICovXG4gICAgZ2V0IGNvbnRlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNzcztcbiAgICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVzdWx0O1xuXG4vKipcbiAqIEB0eXBlZGVmICB7b2JqZWN0fSBNZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZSAgIC0gbWVzc2FnZSB0eXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcGx1Z2luIC0gc291cmNlIFBvc3RDU1MgcGx1Z2luIG5hbWVcbiAqL1xuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Represents a plugin’s warning. It can be created using {@link Node#warn}.\n *\n * @example\n * if ( decl.important ) {\n * decl.warn(result, 'Avoid !important', { word: '!important' });\n * }\n */\nvar Warning = function () {\n\n /**\n * @param {string} text - warning message\n * @param {Object} [opts] - warning options\n * @param {Node} opts.node - CSS node that caused the warning\n * @param {string} opts.word - word in CSS source that caused the warning\n * @param {number} opts.index - index in CSS node string that caused\n * the warning\n * @param {string} opts.plugin - name of the plugin that created\n * this warning. {@link Result#warn} fills\n * this property automatically.\n */\n function Warning(text) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Warning);\n\n /**\n * @member {string} - Type to filter warnings from\n * {@link Result#messages}. Always equal\n * to `\"warning\"`.\n *\n * @example\n * const nonWarning = result.messages.filter(i => i.type !== 'warning')\n */\n this.type = 'warning';\n /**\n * @member {string} - The warning message.\n *\n * @example\n * warning.text //=> 'Try to avoid !important'\n */\n this.text = text;\n\n if (opts.node && opts.node.source) {\n var pos = opts.node.positionBy(opts);\n /**\n * @member {number} - Line in the input file\n * with this warning’s source\n *\n * @example\n * warning.line //=> 5\n */\n this.line = pos.line;\n /**\n * @member {number} - Column in the input file\n * with this warning’s source.\n *\n * @example\n * warning.column //=> 6\n */\n this.column = pos.column;\n }\n\n for (var opt in opts) {\n this[opt] = opts[opt];\n }\n }\n\n /**\n * Returns a warning position and message.\n *\n * @example\n * warning.toString() //=> 'postcss-lint:a.css:10:14: Avoid !important'\n *\n * @return {string} warning position and message\n */\n\n\n Warning.prototype.toString = function toString() {\n if (this.node) {\n return this.node.error(this.text, {\n plugin: this.plugin,\n index: this.index,\n word: this.word\n }).message;\n } else if (this.plugin) {\n return this.plugin + ': ' + this.text;\n } else {\n return this.text;\n }\n };\n\n /**\n * @memberof Warning#\n * @member {string} plugin - The name of the plugin that created\n * it will fill this property automatically.\n * this warning. When you call {@link Node#warn}\n *\n * @example\n * warning.plugin //=> 'postcss-important'\n */\n\n /**\n * @memberof Warning#\n * @member {Node} node - Contains the CSS node that caused the warning.\n *\n * @example\n * warning.node.toString() //=> 'color: white !important'\n */\n\n return Warning;\n}();\n\nexports.default = Warning;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndhcm5pbmcuZXM2Il0sIm5hbWVzIjpbIldhcm5pbmciLCJ0ZXh0Iiwib3B0cyIsInR5cGUiLCJub2RlIiwic291cmNlIiwicG9zIiwicG9zaXRpb25CeSIsImxpbmUiLCJjb2x1bW4iLCJvcHQiLCJ0b1N0cmluZyIsImVycm9yIiwicGx1Z2luIiwiaW5kZXgiLCJ3b3JkIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7Ozs7O0lBUU1BLE87O0FBRUY7Ozs7Ozs7Ozs7O0FBV0EsbUJBQVlDLElBQVosRUFBOEI7QUFBQSxRQUFaQyxJQUFZLHVFQUFMLEVBQUs7O0FBQUE7O0FBQzFCOzs7Ozs7OztBQVFBLFNBQUtDLElBQUwsR0FBWSxTQUFaO0FBQ0E7Ozs7OztBQU1BLFNBQUtGLElBQUwsR0FBWUEsSUFBWjs7QUFFQSxRQUFLQyxLQUFLRSxJQUFMLElBQWFGLEtBQUtFLElBQUwsQ0FBVUMsTUFBNUIsRUFBcUM7QUFDakMsVUFBSUMsTUFBVUosS0FBS0UsSUFBTCxDQUFVRyxVQUFWLENBQXFCTCxJQUFyQixDQUFkO0FBQ0E7Ozs7Ozs7QUFPQSxXQUFLTSxJQUFMLEdBQWNGLElBQUlFLElBQWxCO0FBQ0E7Ozs7Ozs7QUFPQSxXQUFLQyxNQUFMLEdBQWNILElBQUlHLE1BQWxCO0FBQ0g7O0FBRUQsU0FBTSxJQUFJQyxHQUFWLElBQWlCUixJQUFqQjtBQUF3QixXQUFLUSxHQUFMLElBQVlSLEtBQUtRLEdBQUwsQ0FBWjtBQUF4QjtBQUNIOztBQUVEOzs7Ozs7Ozs7O29CQVFBQyxRLHVCQUFXO0FBQ1AsUUFBSyxLQUFLUCxJQUFWLEVBQWlCO0FBQ2IsYUFBTyxLQUFLQSxJQUFMLENBQVVRLEtBQVYsQ0FBZ0IsS0FBS1gsSUFBckIsRUFBMkI7QUFDOUJZLGdCQUFRLEtBQUtBLE1BRGlCO0FBRTlCQyxlQUFRLEtBQUtBLEtBRmlCO0FBRzlCQyxjQUFRLEtBQUtBO0FBSGlCLE9BQTNCLEVBSUpDLE9BSkg7QUFLSCxLQU5ELE1BTU8sSUFBSyxLQUFLSCxNQUFWLEVBQW1CO0FBQ3RCLGFBQU8sS0FBS0EsTUFBTCxHQUFjLElBQWQsR0FBcUIsS0FBS1osSUFBakM7QUFDSCxLQUZNLE1BRUE7QUFDSCxhQUFPLEtBQUtBLElBQVo7QUFDSDtBQUNKLEc7O0FBRUQ7Ozs7Ozs7Ozs7QUFVQTs7Ozs7Ozs7Ozs7a0JBVVdELE8iLCJmaWxlIjoid2FybmluZy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVwcmVzZW50cyBhIHBsdWdpbuKAmXMgd2FybmluZy4gSXQgY2FuIGJlIGNyZWF0ZWQgdXNpbmcge0BsaW5rIE5vZGUjd2Fybn0uXG4gKlxuICogQGV4YW1wbGVcbiAqIGlmICggZGVjbC5pbXBvcnRhbnQgKSB7XG4gKiAgICAgZGVjbC53YXJuKHJlc3VsdCwgJ0F2b2lkICFpbXBvcnRhbnQnLCB7IHdvcmQ6ICchaW1wb3J0YW50JyB9KTtcbiAqIH1cbiAqL1xuY2xhc3MgV2FybmluZyB7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAgICAgICAgLSB3YXJuaW5nIG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdICAgICAgLSB3YXJuaW5nIG9wdGlvbnNcbiAgICAgKiBAcGFyYW0ge05vZGV9ICAgb3B0cy5ub2RlICAgLSBDU1Mgbm9kZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLndvcmQgICAtIHdvcmQgaW4gQ1NTIHNvdXJjZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZ1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRzLmluZGV4ICAtIGluZGV4IGluIENTUyBub2RlIHN0cmluZyB0aGF0IGNhdXNlZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB3YXJuaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMucGx1Z2luIC0gbmFtZSBvZiB0aGUgcGx1Z2luIHRoYXQgY3JlYXRlZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgd2FybmluZy4ge0BsaW5rIFJlc3VsdCN3YXJufSBmaWxsc1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcHJvcGVydHkgYXV0b21hdGljYWxseS5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcih0ZXh0LCBvcHRzID0geyB9KSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtzdHJpbmd9IC0gVHlwZSB0byBmaWx0ZXIgd2FybmluZ3MgZnJvbVxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30uIEFsd2F5cyBlcXVhbFxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgdG8gYFwid2FybmluZ1wiYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogY29uc3Qgbm9uV2FybmluZyA9IHJlc3VsdC5tZXNzYWdlcy5maWx0ZXIoaSA9PiBpLnR5cGUgIT09ICd3YXJuaW5nJylcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMudHlwZSA9ICd3YXJuaW5nJztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge3N0cmluZ30gLSBUaGUgd2FybmluZyBtZXNzYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKiB3YXJuaW5nLnRleHQgLy89PiAnVHJ5IHRvIGF2b2lkICFpbXBvcnRhbnQnXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnRleHQgPSB0ZXh0O1xuXG4gICAgICAgIGlmICggb3B0cy5ub2RlICYmIG9wdHMubm9kZS5zb3VyY2UgKSB7XG4gICAgICAgICAgICBsZXQgcG9zICAgICA9IG9wdHMubm9kZS5wb3NpdGlvbkJ5KG9wdHMpO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAbWVtYmVyIHtudW1iZXJ9IC0gTGluZSBpbiB0aGUgaW5wdXQgZmlsZVxuICAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgIHdpdGggdGhpcyB3YXJuaW5n4oCZcyBzb3VyY2VcbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgICAgICogd2FybmluZy5saW5lIC8vPT4gNVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLmxpbmUgICA9IHBvcy5saW5lO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAbWVtYmVyIHtudW1iZXJ9IC0gQ29sdW1uIGluIHRoZSBpbnB1dCBmaWxlXG4gICAgICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGlzIHdhcm5pbmfigJlzIHNvdXJjZS5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgICAgICogd2FybmluZy5jb2x1bW4gLy89PiA2XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuY29sdW1uID0gcG9zLmNvbHVtbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoIGxldCBvcHQgaW4gb3B0cyApIHRoaXNbb3B0XSA9IG9wdHNbb3B0XTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgd2FybmluZyBwb3NpdGlvbiBhbmQgbWVzc2FnZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogd2FybmluZy50b1N0cmluZygpIC8vPT4gJ3Bvc3Rjc3MtbGludDphLmNzczoxMDoxNDogQXZvaWQgIWltcG9ydGFudCdcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gd2FybmluZyBwb3NpdGlvbiBhbmQgbWVzc2FnZVxuICAgICAqL1xuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICBpZiAoIHRoaXMubm9kZSApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5vZGUuZXJyb3IodGhpcy50ZXh0LCB7XG4gICAgICAgICAgICAgICAgcGx1Z2luOiB0aGlzLnBsdWdpbixcbiAgICAgICAgICAgICAgICBpbmRleDogIHRoaXMuaW5kZXgsXG4gICAgICAgICAgICAgICAgd29yZDogICB0aGlzLndvcmRcbiAgICAgICAgICAgIH0pLm1lc3NhZ2U7XG4gICAgICAgIH0gZWxzZSBpZiAoIHRoaXMucGx1Z2luICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGx1Z2luICsgJzogJyArIHRoaXMudGV4dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAbWVtYmVyb2YgV2FybmluZyNcbiAgICAgKiBAbWVtYmVyIHtzdHJpbmd9IHBsdWdpbiAtIFRoZSBuYW1lIG9mIHRoZSBwbHVnaW4gdGhhdCBjcmVhdGVkXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBpdCB3aWxsIGZpbGwgdGhpcyBwcm9wZXJ0eSBhdXRvbWF0aWNhbGx5LlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyB3YXJuaW5nLiBXaGVuIHlvdSBjYWxsIHtAbGluayBOb2RlI3dhcm59XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHdhcm5pbmcucGx1Z2luIC8vPT4gJ3Bvc3Rjc3MtaW1wb3J0YW50J1xuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIFdhcm5pbmcjXG4gICAgICogQG1lbWJlciB7Tm9kZX0gbm9kZSAtIENvbnRhaW5zIHRoZSBDU1Mgbm9kZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogd2FybmluZy5ub2RlLnRvU3RyaW5nKCkgLy89PiAnY29sb3I6IHdoaXRlICFpbXBvcnRhbnQnXG4gICAgICovXG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgV2FybmluZztcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _declaration = require('./declaration');\n\nvar _declaration2 = _interopRequireDefault(_declaration);\n\nvar _tokenize = require('./tokenize');\n\nvar _tokenize2 = _interopRequireDefault(_tokenize);\n\nvar _comment = require('./comment');\n\nvar _comment2 = _interopRequireDefault(_comment);\n\nvar _atRule = require('./at-rule');\n\nvar _atRule2 = _interopRequireDefault(_atRule);\n\nvar _root = require('./root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _rule = require('./rule');\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Parser = function () {\n function Parser(input) {\n _classCallCheck(this, Parser);\n\n this.input = input;\n\n this.root = new _root2.default();\n this.current = this.root;\n this.spaces = '';\n this.semicolon = false;\n\n this.createTokenizer();\n this.root.source = { input: input, start: { line: 1, column: 1 } };\n }\n\n Parser.prototype.createTokenizer = function createTokenizer() {\n this.tokenizer = (0, _tokenize2.default)(this.input);\n };\n\n Parser.prototype.parse = function parse() {\n var token = void 0;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n\n switch (token[0]) {\n\n case 'space':\n this.spaces += token[1];\n break;\n\n case ';':\n this.freeSemicolon(token);\n break;\n\n case '}':\n this.end(token);\n break;\n\n case 'comment':\n this.comment(token);\n break;\n\n case 'at-word':\n this.atrule(token);\n break;\n\n case '{':\n this.emptyRule(token);\n break;\n\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n };\n\n Parser.prototype.comment = function comment(token) {\n var node = new _comment2.default();\n this.init(node, token[2], token[3]);\n node.source.end = { line: token[4], column: token[5] };\n\n var text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node.text = '';\n node.raws.left = text;\n node.raws.right = '';\n } else {\n var match = text.match(/^(\\s*)([^]*[^\\s])(\\s*)$/);\n node.text = match[2];\n node.raws.left = match[1];\n node.raws.right = match[3];\n }\n };\n\n Parser.prototype.emptyRule = function emptyRule(token) {\n var node = new _rule2.default();\n this.init(node, token[2], token[3]);\n node.selector = '';\n node.raws.between = '';\n this.current = node;\n };\n\n Parser.prototype.other = function other(start) {\n var end = false;\n var type = null;\n var colon = false;\n var bracket = null;\n var brackets = [];\n\n var tokens = [];\n var token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n\n if (type === '(' || type === '[') {\n if (!bracket) bracket = token;\n brackets.push(type === '(' ? ')' : ']');\n } else if (brackets.length === 0) {\n if (type === ';') {\n if (colon) {\n this.decl(tokens);\n return;\n } else {\n break;\n }\n } else if (type === '{') {\n this.rule(tokens);\n return;\n } else if (type === '}') {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === ':') {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n\n token = this.tokenizer.nextToken();\n }\n\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n\n if (end && colon) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== 'space' && token !== 'comment') break;\n this.tokenizer.back(tokens.pop());\n }\n this.decl(tokens);\n return;\n } else {\n this.unknownWord(tokens);\n }\n };\n\n Parser.prototype.rule = function rule(tokens) {\n tokens.pop();\n\n var node = new _rule2.default();\n this.init(node, tokens[0][2], tokens[0][3]);\n\n node.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node, 'selector', tokens);\n this.current = node;\n };\n\n Parser.prototype.decl = function decl(tokens) {\n var node = new _declaration2.default();\n this.init(node);\n\n var last = tokens[tokens.length - 1];\n if (last[0] === ';') {\n this.semicolon = true;\n tokens.pop();\n }\n if (last[4]) {\n node.source.end = { line: last[4], column: last[5] };\n } else {\n node.source.end = { line: last[2], column: last[3] };\n }\n\n while (tokens[0][0] !== 'word') {\n if (tokens.length === 1) this.unknownWord(tokens);\n node.raws.before += tokens.shift()[1];\n }\n node.source.start = { line: tokens[0][2], column: tokens[0][3] };\n\n node.prop = '';\n while (tokens.length) {\n var type = tokens[0][0];\n if (type === ':' || type === 'space' || type === 'comment') {\n break;\n }\n node.prop += tokens.shift()[1];\n }\n\n node.raws.between = '';\n\n var token = void 0;\n while (tokens.length) {\n token = tokens.shift();\n\n if (token[0] === ':') {\n node.raws.between += token[1];\n break;\n } else {\n node.raws.between += token[1];\n }\n }\n\n if (node.prop[0] === '_' || node.prop[0] === '*') {\n node.raws.before += node.prop[0];\n node.prop = node.prop.slice(1);\n }\n node.raws.between += this.spacesAndCommentsFromStart(tokens);\n this.precheckMissedSemicolon(tokens);\n\n for (var i = tokens.length - 1; i > 0; i--) {\n token = tokens[i];\n if (token[1].toLowerCase() === '!important') {\n node.important = true;\n var string = this.stringFrom(tokens, i);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== ' !important') node.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === 'important') {\n var cache = tokens.slice(0);\n var str = '';\n for (var j = i; j > 0; j--) {\n var _type = cache[j][0];\n if (str.trim().indexOf('!') === 0 && _type !== 'space') {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf('!') === 0) {\n node.important = true;\n node.raws.important = str;\n tokens = cache;\n }\n }\n\n if (token[0] !== 'space' && token[0] !== 'comment') {\n break;\n }\n }\n\n this.raw(node, 'value', tokens);\n\n if (node.value.indexOf(':') !== -1) this.checkMissedSemicolon(tokens);\n };\n\n Parser.prototype.atrule = function atrule(token) {\n var node = new _atRule2.default();\n node.name = token[1].slice(1);\n if (node.name === '') {\n this.unnamedAtrule(node, token);\n }\n this.init(node, token[2], token[3]);\n\n var prev = void 0;\n var shift = void 0;\n var last = false;\n var open = false;\n var params = [];\n\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n\n if (token[0] === ';') {\n node.source.end = { line: token[2], column: token[3] };\n this.semicolon = true;\n break;\n } else if (token[0] === '{') {\n open = true;\n break;\n } else if (token[0] === '}') {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === 'space') {\n prev = params[--shift];\n }\n if (prev) {\n node.source.end = { line: prev[4], column: prev[5] };\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n\n node.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node, 'params', params);\n if (last) {\n token = params[params.length - 1];\n node.source.end = { line: token[4], column: token[5] };\n this.spaces = node.raws.between;\n node.raws.between = '';\n }\n } else {\n node.raws.afterName = '';\n node.params = '';\n }\n\n if (open) {\n node.nodes = [];\n this.current = node;\n }\n };\n\n Parser.prototype.end = function end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n\n this.current.raws.after = (this.current.raws.after || '') + this.spaces;\n this.spaces = '';\n\n if (this.current.parent) {\n this.current.source.end = { line: token[2], column: token[3] };\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n };\n\n Parser.prototype.endFile = function endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || '') + this.spaces;\n };\n\n Parser.prototype.freeSemicolon = function freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n var prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = '';\n }\n }\n };\n\n // Helpers\n\n Parser.prototype.init = function init(node, line, column) {\n this.current.push(node);\n\n node.source = { start: { line: line, column: column }, input: this.input };\n node.raws.before = this.spaces;\n this.spaces = '';\n if (node.type !== 'comment') this.semicolon = false;\n };\n\n Parser.prototype.raw = function raw(node, prop, tokens) {\n var token = void 0,\n type = void 0;\n var length = tokens.length;\n var value = '';\n var clean = true;\n var next = void 0,\n prev = void 0;\n var pattern = /^([.|#])?([\\w])+/i;\n\n for (var i = 0; i < length; i += 1) {\n token = tokens[i];\n type = token[0];\n\n if (type === 'comment' && node.type === 'rule') {\n prev = tokens[i - 1];\n next = tokens[i + 1];\n\n if (prev[0] !== 'space' && next[0] !== 'space' && pattern.test(prev[1]) && pattern.test(next[1])) {\n value += token[1];\n } else {\n clean = false;\n }\n\n continue;\n }\n\n if (type === 'comment' || type === 'space' && i === length - 1) {\n clean = false;\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n var raw = tokens.reduce(function (all, i) {\n return all + i[1];\n }, '');\n node.raws[prop] = { value: value, raw: raw };\n }\n node[prop] = value;\n };\n\n Parser.prototype.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) {\n var lastTokenType = void 0;\n var spaces = '';\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== 'space' && lastTokenType !== 'comment') break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n\n Parser.prototype.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) {\n var next = void 0;\n var spaces = '';\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== 'space' && next !== 'comment') break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n };\n\n Parser.prototype.spacesFromEnd = function spacesFromEnd(tokens) {\n var lastTokenType = void 0;\n var spaces = '';\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== 'space') break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n\n Parser.prototype.stringFrom = function stringFrom(tokens, from) {\n var result = '';\n for (var i = from; i < tokens.length; i++) {\n result += tokens[i][1];\n }\n tokens.splice(from, tokens.length - from);\n return result;\n };\n\n Parser.prototype.colon = function colon(tokens) {\n var brackets = 0;\n var token = void 0,\n type = void 0,\n prev = void 0;\n for (var i = 0; i < tokens.length; i++) {\n token = tokens[i];\n type = token[0];\n\n if (type === '(') {\n brackets += 1;\n } else if (type === ')') {\n brackets -= 1;\n } else if (brackets === 0 && type === ':') {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === 'word' && prev[1] === 'progid') {\n continue;\n } else {\n return i;\n }\n }\n\n prev = token;\n }\n return false;\n };\n\n // Errors\n\n Parser.prototype.unclosedBracket = function unclosedBracket(bracket) {\n throw this.input.error('Unclosed bracket', bracket[2], bracket[3]);\n };\n\n Parser.prototype.unknownWord = function unknownWord(tokens) {\n throw this.input.error('Unknown word', tokens[0][2], tokens[0][3]);\n };\n\n Parser.prototype.unexpectedClose = function unexpectedClose(token) {\n throw this.input.error('Unexpected }', token[2], token[3]);\n };\n\n Parser.prototype.unclosedBlock = function unclosedBlock() {\n var pos = this.current.source.start;\n throw this.input.error('Unclosed block', pos.line, pos.column);\n };\n\n Parser.prototype.doubleColon = function doubleColon(token) {\n throw this.input.error('Double colon', token[2], token[3]);\n };\n\n Parser.prototype.unnamedAtrule = function unnamedAtrule(node, token) {\n throw this.input.error('At-rule without name', token[2], token[3]);\n };\n\n Parser.prototype.precheckMissedSemicolon = function precheckMissedSemicolon(tokens) {\n // Hook for Safe Parser\n tokens;\n };\n\n Parser.prototype.checkMissedSemicolon = function checkMissedSemicolon(tokens) {\n var colon = this.colon(tokens);\n if (colon === false) return;\n\n var founded = 0;\n var token = void 0;\n for (var j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== 'space') {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error('Missed semicolon', token[2], token[3]);\n };\n\n return Parser;\n}();\n\nexports.default = Parser;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci5lczYiXSwibmFtZXMiOlsiUGFyc2VyIiwiaW5wdXQiLCJyb290IiwiUm9vdCIsImN1cnJlbnQiLCJzcGFjZXMiLCJzZW1pY29sb24iLCJjcmVhdGVUb2tlbml6ZXIiLCJzb3VyY2UiLCJzdGFydCIsImxpbmUiLCJjb2x1bW4iLCJ0b2tlbml6ZXIiLCJwYXJzZSIsInRva2VuIiwiZW5kT2ZGaWxlIiwibmV4dFRva2VuIiwiZnJlZVNlbWljb2xvbiIsImVuZCIsImNvbW1lbnQiLCJhdHJ1bGUiLCJlbXB0eVJ1bGUiLCJvdGhlciIsImVuZEZpbGUiLCJub2RlIiwiQ29tbWVudCIsImluaXQiLCJ0ZXh0Iiwic2xpY2UiLCJ0ZXN0IiwicmF3cyIsImxlZnQiLCJyaWdodCIsIm1hdGNoIiwiUnVsZSIsInNlbGVjdG9yIiwiYmV0d2VlbiIsInR5cGUiLCJjb2xvbiIsImJyYWNrZXQiLCJicmFja2V0cyIsInRva2VucyIsInB1c2giLCJsZW5ndGgiLCJkZWNsIiwicnVsZSIsImJhY2siLCJwb3AiLCJ1bmNsb3NlZEJyYWNrZXQiLCJ1bmtub3duV29yZCIsInNwYWNlc0FuZENvbW1lbnRzRnJvbUVuZCIsInJhdyIsIkRlY2xhcmF0aW9uIiwibGFzdCIsImJlZm9yZSIsInNoaWZ0IiwicHJvcCIsInNwYWNlc0FuZENvbW1lbnRzRnJvbVN0YXJ0IiwicHJlY2hlY2tNaXNzZWRTZW1pY29sb24iLCJpIiwidG9Mb3dlckNhc2UiLCJpbXBvcnRhbnQiLCJzdHJpbmciLCJzdHJpbmdGcm9tIiwic3BhY2VzRnJvbUVuZCIsImNhY2hlIiwic3RyIiwiaiIsInRyaW0iLCJpbmRleE9mIiwidmFsdWUiLCJjaGVja01pc3NlZFNlbWljb2xvbiIsIkF0UnVsZSIsIm5hbWUiLCJ1bm5hbWVkQXRydWxlIiwicHJldiIsIm9wZW4iLCJwYXJhbXMiLCJhZnRlck5hbWUiLCJub2RlcyIsImFmdGVyIiwicGFyZW50IiwidW5leHBlY3RlZENsb3NlIiwidW5jbG9zZWRCbG9jayIsIm93blNlbWljb2xvbiIsImNsZWFuIiwibmV4dCIsInBhdHRlcm4iLCJyZWR1Y2UiLCJhbGwiLCJsYXN0VG9rZW5UeXBlIiwiZnJvbSIsInJlc3VsdCIsInNwbGljZSIsImRvdWJsZUNvbG9uIiwiZXJyb3IiLCJwb3MiLCJmb3VuZGVkIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7OztJQUVxQkEsTTtBQUVqQixvQkFBWUMsS0FBWixFQUFtQjtBQUFBOztBQUNmLGFBQUtBLEtBQUwsR0FBYUEsS0FBYjs7QUFFQSxhQUFLQyxJQUFMLEdBQWlCLElBQUlDLGNBQUosRUFBakI7QUFDQSxhQUFLQyxPQUFMLEdBQWlCLEtBQUtGLElBQXRCO0FBQ0EsYUFBS0csTUFBTCxHQUFpQixFQUFqQjtBQUNBLGFBQUtDLFNBQUwsR0FBaUIsS0FBakI7O0FBRUEsYUFBS0MsZUFBTDtBQUNBLGFBQUtMLElBQUwsQ0FBVU0sTUFBVixHQUFtQixFQUFFUCxZQUFGLEVBQVNRLE9BQU8sRUFBRUMsTUFBTSxDQUFSLEVBQVdDLFFBQVEsQ0FBbkIsRUFBaEIsRUFBbkI7QUFDSDs7cUJBRURKLGUsOEJBQWtCO0FBQ2QsYUFBS0ssU0FBTCxHQUFpQix3QkFBVSxLQUFLWCxLQUFmLENBQWpCO0FBQ0gsSzs7cUJBRURZLEssb0JBQVE7QUFDSixZQUFJQyxjQUFKO0FBQ0EsZUFBUSxDQUFDLEtBQUtGLFNBQUwsQ0FBZUcsU0FBZixFQUFULEVBQXNDO0FBQ2xDRCxvQkFBUSxLQUFLRixTQUFMLENBQWVJLFNBQWYsRUFBUjs7QUFFQSxvQkFBU0YsTUFBTSxDQUFOLENBQVQ7O0FBRUEscUJBQUssT0FBTDtBQUNJLHlCQUFLVCxNQUFMLElBQWVTLE1BQU0sQ0FBTixDQUFmO0FBQ0E7O0FBRUoscUJBQUssR0FBTDtBQUNJLHlCQUFLRyxhQUFMLENBQW1CSCxLQUFuQjtBQUNBOztBQUVKLHFCQUFLLEdBQUw7QUFDSSx5QkFBS0ksR0FBTCxDQUFTSixLQUFUO0FBQ0E7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QUFqQixFQUFxQ2pGLE1BQU0sQ0FBTixDQUFyQyxFQUErQ0EsTUFBTSxDQUFOLENBQS9DLENBQU47QUFDSCxLOzs7OztrQkFyZ0JnQmQsTSIsImZpbGUiOiJwYXJzZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVjbGFyYXRpb24gZnJvbSAnLi9kZWNsYXJhdGlvbic7XG5pbXBvcnQgdG9rZW5pemVyICAgZnJvbSAnLi90b2tlbml6ZSc7XG5pbXBvcnQgQ29tbWVudCAgICAgZnJvbSAnLi9jb21tZW50JztcbmltcG9ydCBBdFJ1bGUgICAgICBmcm9tICcuL2F0LXJ1bGUnO1xuaW1wb3J0IFJvb3QgICAgICAgIGZyb20gJy4vcm9vdCc7XG5pbXBvcnQgUnVsZSAgICAgICAgZnJvbSAnLi9ydWxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFyc2VyIHtcblxuICAgIGNvbnN0cnVjdG9yKGlucHV0KSB7XG4gICAgICAgIHRoaXMuaW5wdXQgPSBpbnB1dDtcblxuICAgICAgICB0aGlzLnJvb3QgICAgICA9IG5ldyBSb290KCk7XG4gICAgICAgIHRoaXMuY3VycmVudCAgID0gdGhpcy5yb290O1xuICAgICAgICB0aGlzLnNwYWNlcyAgICA9ICcnO1xuICAgICAgICB0aGlzLnNlbWljb2xvbiA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY3JlYXRlVG9rZW5pemVyKCk7XG4gICAgICAgIHRoaXMucm9vdC5zb3VyY2UgPSB7IGlucHV0LCBzdGFydDogeyBsaW5lOiAxLCBjb2x1bW46IDEgfSB9O1xuICAgIH1cblxuICAgIGNyZWF0ZVRva2VuaXplcigpIHtcbiAgICAgICAgdGhpcy50b2tlbml6ZXIgPSB0b2tlbml6ZXIodGhpcy5pbnB1dCk7XG4gICAgfVxuXG4gICAgcGFyc2UoKSB7XG4gICAgICAgIGxldCB0b2tlbjtcbiAgICAgICAgd2hpbGUgKCAhdGhpcy50b2tlbml6ZXIuZW5kT2ZGaWxlKCkgKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHRoaXMudG9rZW5pemVyLm5leHRUb2tlbigpO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKCB0b2tlblswXSApIHtcblxuICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgICAgIHRoaXMuc3BhY2VzICs9IHRva2VuWzFdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICc7JzpcbiAgICAgICAgICAgICAgICB0aGlzLmZyZWVTZW1pY29sb24odG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICd9JzpcbiAgICAgICAgICAgICAgICB0aGlzLmVuZCh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgICAgICAgIHRoaXMuY29tbWVudCh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2F0LXdvcmQnOlxuICAgICAgICAgICAgICAgIHRoaXMuYXRydWxlKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAneyc6XG4gICAgICAgICAgICAgICAgdGhpcy5lbXB0eVJ1bGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMub3RoZXIodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW5kRmlsZSgpO1xuICAgIH1cblxuICAgIGNvbW1lbnQodG9rZW4pIHtcbiAgICAgICAgbGV0IG5vZGUgPSBuZXcgQ29tbWVudCgpO1xuICAgICAgICB0aGlzLmluaXQobm9kZSwgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICAgICAgbm9kZS5zb3VyY2UuZW5kID0geyBsaW5lOiB0b2tlbls0XSwgY29sdW1uOiB0b2tlbls1XSB9O1xuXG4gICAgICAgIGxldCB0ZXh0ID0gdG9rZW5bMV0uc2xpY2UoMiwgLTIpO1xuICAgICAgICBpZiAoIC9eXFxzKiQvLnRlc3QodGV4dCkgKSB7XG4gICAgICAgICAgICBub2RlLnRleHQgICAgICAgPSAnJztcbiAgICAgICAgICAgIG5vZGUucmF3cy5sZWZ0ICA9IHRleHQ7XG4gICAgICAgICAgICBub2RlLnJhd3MucmlnaHQgPSAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBtYXRjaCA9IHRleHQubWF0Y2goL14oXFxzKikoW15dKlteXFxzXSkoXFxzKikkLyk7XG4gICAgICAgICAgICBub2RlLnRleHQgICAgICAgPSBtYXRjaFsyXTtcbiAgICAgICAgICAgIG5vZGUucmF3cy5sZWZ0ICA9IG1hdGNoWzFdO1xuICAgICAgICAgICAgbm9kZS5yYXdzLnJpZ2h0ID0gbWF0Y2hbM107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlbXB0eVJ1bGUodG9rZW4pIHtcbiAgICAgICAgbGV0IG5vZGUgPSBuZXcgUnVsZSgpO1xuICAgICAgICB0aGlzLmluaXQobm9kZSwgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICAgICAgbm9kZS5zZWxlY3RvciA9ICcnO1xuICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiA9ICcnO1xuICAgICAgICB0aGlzLmN1cnJlbnQgPSBub2RlO1xuICAgIH1cblxuICAgIG90aGVyKHN0YXJ0KSB7XG4gICAgICAgIGxldCBlbmQgICAgICA9IGZhbHNlO1xuICAgICAgICBsZXQgdHlwZSAgICAgPSBudWxsO1xuICAgICAgICBsZXQgY29sb24gICAgPSBmYWxzZTtcbiAgICAgICAgbGV0IGJyYWNrZXQgID0gbnVsbDtcbiAgICAgICAgbGV0IGJyYWNrZXRzID0gW107XG5cbiAgICAgICAgbGV0IHRva2VucyA9IFtdO1xuICAgICAgICBsZXQgdG9rZW4gPSBzdGFydDtcbiAgICAgICAgd2hpbGUgKCB0b2tlbiApIHtcbiAgICAgICAgICAgIHR5cGUgPSB0b2tlblswXTtcbiAgICAgICAgICAgIHRva2Vucy5wdXNoKHRva2VuKTtcblxuICAgICAgICAgICAgaWYgKCB0eXBlID09PSAnKCcgfHwgdHlwZSA9PT0gJ1snICkge1xuICAgICAgICAgICAgICAgIGlmICggIWJyYWNrZXQgKSBicmFja2V0ID0gdG9rZW47XG4gICAgICAgICAgICAgICAgYnJhY2tldHMucHVzaCh0eXBlID09PSAnKCcgPyAnKScgOiAnXScpO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBicmFja2V0cy5sZW5ndGggPT09IDAgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCB0eXBlID09PSAnOycgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICggY29sb24gKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlY2wodG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlID09PSAneycgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZSh0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlID09PSAnfScgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9rZW5pemVyLmJhY2sodG9rZW5zLnBvcCgpKTtcbiAgICAgICAgICAgICAgICAgICAgZW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlID09PSAnOicgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHR5cGUgPT09IGJyYWNrZXRzW2JyYWNrZXRzLmxlbmd0aCAtIDFdICkge1xuICAgICAgICAgICAgICAgIGJyYWNrZXRzLnBvcCgpO1xuICAgICAgICAgICAgICAgIGlmICggYnJhY2tldHMubGVuZ3RoID09PSAwICkgYnJhY2tldCA9IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRva2VuID0gdGhpcy50b2tlbml6ZXIubmV4dFRva2VuKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHRoaXMudG9rZW5pemVyLmVuZE9mRmlsZSgpICkgZW5kID0gdHJ1ZTtcbiAgICAgICAgaWYgKCBicmFja2V0cy5sZW5ndGggPiAwICkgdGhpcy51bmNsb3NlZEJyYWNrZXQoYnJhY2tldCk7XG5cbiAgICAgICAgaWYgKCBlbmQgJiYgY29sb24gKSB7XG4gICAgICAgICAgICB3aGlsZSAoIHRva2Vucy5sZW5ndGggKSB7XG4gICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdWzBdO1xuICAgICAgICAgICAgICAgIGlmICggdG9rZW4gIT09ICdzcGFjZScgJiYgdG9rZW4gIT09ICdjb21tZW50JyApIGJyZWFrO1xuICAgICAgICAgICAgICAgIHRoaXMudG9rZW5pemVyLmJhY2sodG9rZW5zLnBvcCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZGVjbCh0b2tlbnMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51bmtub3duV29yZCh0b2tlbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcnVsZSh0b2tlbnMpIHtcbiAgICAgICAgdG9rZW5zLnBvcCgpO1xuXG4gICAgICAgIGxldCBub2RlID0gbmV3IFJ1bGUoKTtcbiAgICAgICAgdGhpcy5pbml0KG5vZGUsIHRva2Vuc1swXVsyXSwgdG9rZW5zWzBdWzNdKTtcblxuICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiA9IHRoaXMuc3BhY2VzQW5kQ29tbWVudHNGcm9tRW5kKHRva2Vucyk7XG4gICAgICAgIHRoaXMucmF3KG5vZGUsICdzZWxlY3RvcicsIHRva2Vucyk7XG4gICAgICAgIHRoaXMuY3VycmVudCA9IG5vZGU7XG4gICAgfVxuXG4gICAgZGVjbCh0b2tlbnMpIHtcbiAgICAgICAgbGV0IG5vZGUgPSBuZXcgRGVjbGFyYXRpb24oKTtcbiAgICAgICAgdGhpcy5pbml0KG5vZGUpO1xuXG4gICAgICAgIGxldCBsYXN0ID0gdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKCBsYXN0WzBdID09PSAnOycgKSB7XG4gICAgICAgICAgICB0aGlzLnNlbWljb2xvbiA9IHRydWU7XG4gICAgICAgICAgICB0b2tlbnMucG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCBsYXN0WzRdICkge1xuICAgICAgICAgICAgbm9kZS5zb3VyY2UuZW5kID0geyBsaW5lOiBsYXN0WzRdLCBjb2x1bW46IGxhc3RbNV0gfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5vZGUuc291cmNlLmVuZCA9IHsgbGluZTogbGFzdFsyXSwgY29sdW1uOiBsYXN0WzNdIH07XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAoIHRva2Vuc1swXVswXSAhPT0gJ3dvcmQnICkge1xuICAgICAgICAgICAgaWYgKCB0b2tlbnMubGVuZ3RoID09PSAxICkgdGhpcy51bmtub3duV29yZCh0b2tlbnMpO1xuICAgICAgICAgICAgbm9kZS5yYXdzLmJlZm9yZSArPSB0b2tlbnMuc2hpZnQoKVsxXTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLnNvdXJjZS5zdGFydCA9IHsgbGluZTogdG9rZW5zWzBdWzJdLCBjb2x1bW46IHRva2Vuc1swXVszXSB9O1xuXG4gICAgICAgIG5vZGUucHJvcCA9ICcnO1xuICAgICAgICB3aGlsZSAoIHRva2Vucy5sZW5ndGggKSB7XG4gICAgICAgICAgICBsZXQgdHlwZSA9IHRva2Vuc1swXVswXTtcbiAgICAgICAgICAgIGlmICggdHlwZSA9PT0gJzonIHx8IHR5cGUgPT09ICdzcGFjZScgfHwgdHlwZSA9PT0gJ2NvbW1lbnQnICkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbm9kZS5wcm9wICs9IHRva2Vucy5zaGlmdCgpWzFdO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9kZS5yYXdzLmJldHdlZW4gPSAnJztcblxuICAgICAgICBsZXQgdG9rZW47XG4gICAgICAgIHdoaWxlICggdG9rZW5zLmxlbmd0aCApIHtcbiAgICAgICAgICAgIHRva2VuID0gdG9rZW5zLnNoaWZ0KCk7XG5cbiAgICAgICAgICAgIGlmICggdG9rZW5bMF0gPT09ICc6JyApIHtcbiAgICAgICAgICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiArPSB0b2tlblsxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZS5yYXdzLmJldHdlZW4gKz0gdG9rZW5bMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIG5vZGUucHJvcFswXSA9PT0gJ18nIHx8IG5vZGUucHJvcFswXSA9PT0gJyonICkge1xuICAgICAgICAgICAgbm9kZS5yYXdzLmJlZm9yZSArPSBub2RlLnByb3BbMF07XG4gICAgICAgICAgICBub2RlLnByb3AgPSBub2RlLnByb3Auc2xpY2UoMSk7XG4gICAgICAgIH1cbiAgICAgICAgbm9kZS5yYXdzLmJldHdlZW4gKz0gdGhpcy5zcGFjZXNBbmRDb21tZW50c0Zyb21TdGFydCh0b2tlbnMpO1xuICAgICAgICB0aGlzLnByZWNoZWNrTWlzc2VkU2VtaWNvbG9uKHRva2Vucyk7XG5cbiAgICAgICAgZm9yICggbGV0IGkgPSB0b2tlbnMubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSApIHtcbiAgICAgICAgICAgIHRva2VuID0gdG9rZW5zW2ldO1xuICAgICAgICAgICAgaWYgKCB0b2tlblsxXS50b0xvd2VyQ2FzZSgpID09PSAnIWltcG9ydGFudCcgKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5pbXBvcnRhbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGxldCBzdHJpbmcgPSB0aGlzLnN0cmluZ0Zyb20odG9rZW5zLCBpKTtcbiAgICAgICAgICAgICAgICBzdHJpbmcgPSB0aGlzLnNwYWNlc0Zyb21FbmQodG9rZW5zKSArIHN0cmluZztcbiAgICAgICAgICAgICAgICBpZiAoIHN0cmluZyAhPT0gJyAhaW1wb3J0YW50JyApIG5vZGUucmF3cy5pbXBvcnRhbnQgPSBzdHJpbmc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PT0gJ2ltcG9ydGFudCcpIHtcbiAgICAgICAgICAgICAgICBsZXQgY2FjaGUgPSB0b2tlbnMuc2xpY2UoMCk7XG4gICAgICAgICAgICAgICAgbGV0IHN0ciAgID0gJyc7XG4gICAgICAgICAgICAgICAgZm9yICggbGV0IGogPSBpOyBqID4gMDsgai0tICkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdHlwZSA9IGNhY2hlW2pdWzBdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIHN0ci50cmltKCkuaW5kZXhPZignIScpID09PSAwICYmIHR5cGUgIT09ICdzcGFjZScgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzdHIgPSBjYWNoZS5wb3AoKVsxXSArIHN0cjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCBzdHIudHJpbSgpLmluZGV4T2YoJyEnKSA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5pbXBvcnRhbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBub2RlLnJhd3MuaW1wb3J0YW50ID0gc3RyO1xuICAgICAgICAgICAgICAgICAgICB0b2tlbnMgPSBjYWNoZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICggdG9rZW5bMF0gIT09ICdzcGFjZScgJiYgdG9rZW5bMF0gIT09ICdjb21tZW50JyApIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmF3KG5vZGUsICd2YWx1ZScsIHRva2Vucyk7XG5cbiAgICAgICAgaWYgKCBub2RlLnZhbHVlLmluZGV4T2YoJzonKSAhPT0gLTEgKSB0aGlzLmNoZWNrTWlzc2VkU2VtaWNvbG9uKHRva2Vucyk7XG4gICAgfVxuXG4gICAgYXRydWxlKHRva2VuKSB7XG4gICAgICAgIGxldCBub2RlICA9IG5ldyBBdFJ1bGUoKTtcbiAgICAgICAgbm9kZS5uYW1lID0gdG9rZW5bMV0uc2xpY2UoMSk7XG4gICAgICAgIGlmICggbm9kZS5uYW1lID09PSAnJyApIHtcbiAgICAgICAgICAgIHRoaXMudW5uYW1lZEF0cnVsZShub2RlLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0KG5vZGUsIHRva2VuWzJdLCB0b2tlblszXSk7XG5cbiAgICAgICAgbGV0IHByZXY7XG4gICAgICAgIGxldCBzaGlmdDtcbiAgICAgICAgbGV0IGxhc3QgICA9IGZhbHNlO1xuICAgICAgICBsZXQgb3BlbiAgID0gZmFsc2U7XG4gICAgICAgIGxldCBwYXJhbXMgPSBbXTtcblxuICAgICAgICB3aGlsZSAoICF0aGlzLnRva2VuaXplci5lbmRPZkZpbGUoKSApIHtcbiAgICAgICAgICAgIHRva2VuID0gdGhpcy50b2tlbml6ZXIubmV4dFRva2VuKCk7XG5cbiAgICAgICAgICAgIGlmICggdG9rZW5bMF0gPT09ICc7JyApIHtcbiAgICAgICAgICAgICAgICBub2RlLnNvdXJjZS5lbmQgPSB7IGxpbmU6IHRva2VuWzJdLCBjb2x1bW46IHRva2VuWzNdIH07XG4gICAgICAgICAgICAgICAgdGhpcy5zZW1pY29sb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggdG9rZW5bMF0gPT09ICd7JyApIHtcbiAgICAgICAgICAgICAgICBvcGVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHRva2VuWzBdID09PSAnfScpIHtcbiAgICAgICAgICAgICAgICBpZiAoIHBhcmFtcy5sZW5ndGggPiAwICkge1xuICAgICAgICAgICAgICAgICAgICBzaGlmdCA9IHBhcmFtcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgICAgICBwcmV2ID0gcGFyYW1zW3NoaWZ0XTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBwcmV2ICYmIHByZXZbMF0gPT09ICdzcGFjZScgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2ID0gcGFyYW1zWy0tc2hpZnRdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICggcHJldiApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuc291cmNlLmVuZCA9IHsgbGluZTogcHJldls0XSwgY29sdW1uOiBwcmV2WzVdIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5lbmQodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMucHVzaCh0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICggdGhpcy50b2tlbml6ZXIuZW5kT2ZGaWxlKCkgKSB7XG4gICAgICAgICAgICAgICAgbGFzdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiA9IHRoaXMuc3BhY2VzQW5kQ29tbWVudHNGcm9tRW5kKHBhcmFtcyk7XG4gICAgICAgIGlmICggcGFyYW1zLmxlbmd0aCApIHtcbiAgICAgICAgICAgIG5vZGUucmF3cy5hZnRlck5hbWUgPSB0aGlzLnNwYWNlc0FuZENvbW1lbnRzRnJvbVN0YXJ0KHBhcmFtcyk7XG4gICAgICAgICAgICB0aGlzLnJhdyhub2RlLCAncGFyYW1zJywgcGFyYW1zKTtcbiAgICAgICAgICAgIGlmICggbGFzdCApIHtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IHBhcmFtc1twYXJhbXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgbm9kZS5zb3VyY2UuZW5kICAgPSB7IGxpbmU6IHRva2VuWzRdLCBjb2x1bW46IHRva2VuWzVdIH07XG4gICAgICAgICAgICAgICAgdGhpcy5zcGFjZXMgICAgICAgPSBub2RlLnJhd3MuYmV0d2VlbjtcbiAgICAgICAgICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbm9kZS5yYXdzLmFmdGVyTmFtZSA9ICcnO1xuICAgICAgICAgICAgbm9kZS5wYXJhbXMgICAgICAgICA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBvcGVuICkge1xuICAgICAgICAgICAgbm9kZS5ub2RlcyAgID0gW107XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZW5kKHRva2VuKSB7XG4gICAgICAgIGlmICggdGhpcy5jdXJyZW50Lm5vZGVzICYmIHRoaXMuY3VycmVudC5ub2Rlcy5sZW5ndGggKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQucmF3cy5zZW1pY29sb24gPSB0aGlzLnNlbWljb2xvbjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbWljb2xvbiA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY3VycmVudC5yYXdzLmFmdGVyID0gKHRoaXMuY3VycmVudC5yYXdzLmFmdGVyIHx8ICcnKSArIHRoaXMuc3BhY2VzO1xuICAgICAgICB0aGlzLnNwYWNlcyA9ICcnO1xuXG4gICAgICAgIGlmICggdGhpcy5jdXJyZW50LnBhcmVudCApIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudC5zb3VyY2UuZW5kID0geyBsaW5lOiB0b2tlblsyXSwgY29sdW1uOiB0b2tlblszXSB9O1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5jdXJyZW50LnBhcmVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudW5leHBlY3RlZENsb3NlKHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVuZEZpbGUoKSB7XG4gICAgICAgIGlmICggdGhpcy5jdXJyZW50LnBhcmVudCApIHRoaXMudW5jbG9zZWRCbG9jaygpO1xuICAgICAgICBpZiAoIHRoaXMuY3VycmVudC5ub2RlcyAmJiB0aGlzLmN1cnJlbnQubm9kZXMubGVuZ3RoICkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50LnJhd3Muc2VtaWNvbG9uID0gdGhpcy5zZW1pY29sb247XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50LnJhd3MuYWZ0ZXIgPSAodGhpcy5jdXJyZW50LnJhd3MuYWZ0ZXIgfHwgJycpICsgdGhpcy5zcGFjZXM7XG4gICAgfVxuXG4gICAgZnJlZVNlbWljb2xvbih0b2tlbikge1xuICAgICAgICB0aGlzLnNwYWNlcyArPSB0b2tlblsxXTtcbiAgICAgICAgaWYgKCB0aGlzLmN1cnJlbnQubm9kZXMgKSB7XG4gICAgICAgICAgICBsZXQgcHJldiA9IHRoaXMuY3VycmVudC5ub2Rlc1t0aGlzLmN1cnJlbnQubm9kZXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBpZiAoIHByZXYgJiYgcHJldi50eXBlID09PSAncnVsZScgJiYgIXByZXYucmF3cy5vd25TZW1pY29sb24gKSB7XG4gICAgICAgICAgICAgICAgcHJldi5yYXdzLm93blNlbWljb2xvbiA9IHRoaXMuc3BhY2VzO1xuICAgICAgICAgICAgICAgIHRoaXMuc3BhY2VzID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIZWxwZXJzXG5cbiAgICBpbml0KG5vZGUsIGxpbmUsIGNvbHVtbikge1xuICAgICAgICB0aGlzLmN1cnJlbnQucHVzaChub2RlKTtcblxuICAgICAgICBub2RlLnNvdXJjZSA9IHsgc3RhcnQ6IHsgbGluZSwgY29sdW1uIH0sIGlucHV0OiB0aGlzLmlucHV0IH07XG4gICAgICAgIG5vZGUucmF3cy5iZWZvcmUgPSB0aGlzLnNwYWNlcztcbiAgICAgICAgdGhpcy5zcGFjZXMgPSAnJztcbiAgICAgICAgaWYgKCBub2RlLnR5cGUgIT09ICdjb21tZW50JyApIHRoaXMuc2VtaWNvbG9uID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmF3KG5vZGUsIHByb3AsIHRva2Vucykge1xuICAgICAgICBsZXQgdG9rZW4sIHR5cGU7XG4gICAgICAgIGxldCBsZW5ndGggPSB0b2tlbnMubGVuZ3RoO1xuICAgICAgICBsZXQgdmFsdWUgID0gJyc7XG4gICAgICAgIGxldCBjbGVhbiAgPSB0cnVlO1xuICAgICAgICBsZXQgbmV4dCwgcHJldjtcbiAgICAgICAgY29uc3QgcGF0dGVybiA9IC9eKFsufCNdKT8oW1xcd10pKy9pO1xuXG4gICAgICAgIGZvciAoIGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxICkge1xuICAgICAgICAgICAgdG9rZW4gPSB0b2tlbnNbaV07XG4gICAgICAgICAgICB0eXBlICA9IHRva2VuWzBdO1xuXG4gICAgICAgICAgICBpZiAoIHR5cGUgPT09ICdjb21tZW50JyAmJiBub2RlLnR5cGUgPT09ICdydWxlJyApIHtcbiAgICAgICAgICAgICAgICBwcmV2ID0gdG9rZW5zW2kgLSAxXTtcbiAgICAgICAgICAgICAgICBuZXh0ID0gdG9rZW5zW2kgKyAxXTtcblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgcHJldlswXSAhPT0gJ3NwYWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICBuZXh0WzBdICE9PSAnc3BhY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHBhdHRlcm4udGVzdChwcmV2WzFdKSAmJlxuICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuLnRlc3QobmV4dFsxXSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgKz0gdG9rZW5bMV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCB0eXBlID09PSAnY29tbWVudCcgfHwgdHlwZSA9PT0gJ3NwYWNlJyAmJiBpID09PSBsZW5ndGggLSAxICkge1xuICAgICAgICAgICAgICAgIGNsZWFuID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlICs9IHRva2VuWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICggIWNsZWFuICkge1xuICAgICAgICAgICAgbGV0IHJhdyA9IHRva2Vucy5yZWR1Y2UoIChhbGwsIGkpID0+IGFsbCArIGlbMV0sICcnKTtcbiAgICAgICAgICAgIG5vZGUucmF3c1twcm9wXSA9IHsgdmFsdWUsIHJhdyB9O1xuICAgICAgICB9XG4gICAgICAgIG5vZGVbcHJvcF0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBzcGFjZXNBbmRDb21tZW50c0Zyb21FbmQodG9rZW5zKSB7XG4gICAgICAgIGxldCBsYXN0VG9rZW5UeXBlO1xuICAgICAgICBsZXQgc3BhY2VzID0gJyc7XG4gICAgICAgIHdoaWxlICggdG9rZW5zLmxlbmd0aCApIHtcbiAgICAgICAgICAgIGxhc3RUb2tlblR5cGUgPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdWzBdO1xuICAgICAgICAgICAgaWYgKCBsYXN0VG9rZW5UeXBlICE9PSAnc3BhY2UnICYmXG4gICAgICAgICAgICAgICAgbGFzdFRva2VuVHlwZSAhPT0gJ2NvbW1lbnQnICkgYnJlYWs7XG4gICAgICAgICAgICBzcGFjZXMgPSB0b2tlbnMucG9wKClbMV0gKyBzcGFjZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNwYWNlcztcbiAgICB9XG5cbiAgICBzcGFjZXNBbmRDb21tZW50c0Zyb21TdGFydCh0b2tlbnMpIHtcbiAgICAgICAgbGV0IG5leHQ7XG4gICAgICAgIGxldCBzcGFjZXMgPSAnJztcbiAgICAgICAgd2hpbGUgKCB0b2tlbnMubGVuZ3RoICkge1xuICAgICAgICAgICAgbmV4dCA9IHRva2Vuc1swXVswXTtcbiAgICAgICAgICAgIGlmICggbmV4dCAhPT0gJ3NwYWNlJyAmJiBuZXh0ICE9PSAnY29tbWVudCcgKSBicmVhaztcbiAgICAgICAgICAgIHNwYWNlcyArPSB0b2tlbnMuc2hpZnQoKVsxXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3BhY2VzO1xuICAgIH1cblxuICAgIHNwYWNlc0Zyb21FbmQodG9rZW5zKSB7XG4gICAgICAgIGxldCBsYXN0VG9rZW5UeXBlO1xuICAgICAgICBsZXQgc3BhY2VzID0gJyc7XG4gICAgICAgIHdoaWxlICggdG9rZW5zLmxlbmd0aCApIHtcbiAgICAgICAgICAgIGxhc3RUb2tlblR5cGUgPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdWzBdO1xuICAgICAgICAgICAgaWYgKCBsYXN0VG9rZW5UeXBlICE9PSAnc3BhY2UnICkgYnJlYWs7XG4gICAgICAgICAgICBzcGFjZXMgPSB0b2tlbnMucG9wKClbMV0gKyBzcGFjZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNwYWNlcztcbiAgICB9XG5cbiAgICBzdHJpbmdGcm9tKHRva2VucywgZnJvbSkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgICAgIGZvciAoIGxldCBpID0gZnJvbTsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSB0b2tlbnNbaV1bMV07XG4gICAgICAgIH1cbiAgICAgICAgdG9rZW5zLnNwbGljZShmcm9tLCB0b2tlbnMubGVuZ3RoIC0gZnJvbSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgY29sb24odG9rZW5zKSB7XG4gICAgICAgIGxldCBicmFja2V0cyA9IDA7XG4gICAgICAgIGxldCB0b2tlbiwgdHlwZSwgcHJldjtcbiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrICkge1xuICAgICAgICAgICAgdG9rZW4gPSB0b2tlbnNbaV07XG4gICAgICAgICAgICB0eXBlICA9IHRva2VuWzBdO1xuXG4gICAgICAgICAgICBpZiAoIHR5cGUgPT09ICcoJyApIHtcbiAgICAgICAgICAgICAgICBicmFja2V0cyArPSAxO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggdHlwZSA9PT0gJyknICkge1xuICAgICAgICAgICAgICAgIGJyYWNrZXRzIC09IDE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBicmFja2V0cyA9PT0gMCAmJiB0eXBlID09PSAnOicgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCAhcHJldiApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb3VibGVDb2xvbih0b2tlbik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICggcHJldlswXSA9PT0gJ3dvcmQnICYmIHByZXZbMV0gPT09ICdwcm9naWQnICkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByZXYgPSB0b2tlbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gRXJyb3JzXG5cbiAgICB1bmNsb3NlZEJyYWNrZXQoYnJhY2tldCkge1xuICAgICAgICB0aHJvdyB0aGlzLmlucHV0LmVycm9yKCdVbmNsb3NlZCBicmFja2V0JywgYnJhY2tldFsyXSwgYnJhY2tldFszXSk7XG4gICAgfVxuXG4gICAgdW5rbm93bldvcmQodG9rZW5zKSB7XG4gICAgICAgIHRocm93IHRoaXMuaW5wdXQuZXJyb3IoJ1Vua25vd24gd29yZCcsIHRva2Vuc1swXVsyXSwgdG9rZW5zWzBdWzNdKTtcbiAgICB9XG5cbiAgICB1bmV4cGVjdGVkQ2xvc2UodG9rZW4pIHtcbiAgICAgICAgdGhyb3cgdGhpcy5pbnB1dC5lcnJvcignVW5leHBlY3RlZCB9JywgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICB9XG5cbiAgICB1bmNsb3NlZEJsb2NrKCkge1xuICAgICAgICBsZXQgcG9zID0gdGhpcy5jdXJyZW50LnNvdXJjZS5zdGFydDtcbiAgICAgICAgdGhyb3cgdGhpcy5pbnB1dC5lcnJvcignVW5jbG9zZWQgYmxvY2snLCBwb3MubGluZSwgcG9zLmNvbHVtbik7XG4gICAgfVxuXG4gICAgZG91YmxlQ29sb24odG9rZW4pIHtcbiAgICAgICAgdGhyb3cgdGhpcy5pbnB1dC5lcnJvcignRG91YmxlIGNvbG9uJywgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICB9XG5cbiAgICB1bm5hbWVkQXRydWxlKG5vZGUsIHRva2VuKSB7XG4gICAgICAgIHRocm93IHRoaXMuaW5wdXQuZXJyb3IoJ0F0LXJ1bGUgd2l0aG91dCBuYW1lJywgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICB9XG5cbiAgICBwcmVjaGVja01pc3NlZFNlbWljb2xvbih0b2tlbnMpIHtcbiAgICAgICAgLy8gSG9vayBmb3IgU2FmZSBQYXJzZXJcbiAgICAgICAgdG9rZW5zO1xuICAgIH1cblxuICAgIGNoZWNrTWlzc2VkU2VtaWNvbG9uKHRva2Vucykge1xuICAgICAgICBsZXQgY29sb24gPSB0aGlzLmNvbG9uKHRva2Vucyk7XG4gICAgICAgIGlmICggY29sb24gPT09IGZhbHNlICkgcmV0dXJuO1xuXG4gICAgICAgIGxldCBmb3VuZGVkID0gMDtcbiAgICAgICAgbGV0IHRva2VuO1xuICAgICAgICBmb3IgKCBsZXQgaiA9IGNvbG9uIC0gMTsgaiA+PSAwOyBqLS0gKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHRva2Vuc1tqXTtcbiAgICAgICAgICAgIGlmICggdG9rZW5bMF0gIT09ICdzcGFjZScgKSB7XG4gICAgICAgICAgICAgICAgZm91bmRlZCArPSAxO1xuICAgICAgICAgICAgICAgIGlmICggZm91bmRlZCA9PT0gMiApIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IHRoaXMuaW5wdXQuZXJyb3IoJ01pc3NlZCBzZW1pY29sb24nLCB0b2tlblsyXSwgdG9rZW5bM10pO1xuICAgIH1cblxufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n/**\n * Contains helpers for working with vendor prefixes.\n *\n * @example\n * const vendor = postcss.vendor;\n *\n * @namespace vendor\n */\nvar vendor = {\n\n /**\n * Returns the vendor prefix extracted from an input string.\n *\n * @param {string} prop - string with or without vendor prefix\n *\n * @return {string} vendor prefix or empty string\n *\n * @example\n * postcss.vendor.prefix('-moz-tab-size') //=> '-moz-'\n * postcss.vendor.prefix('tab-size') //=> ''\n */\n prefix: function prefix(prop) {\n var match = prop.match(/^(-\\w+-)/);\n if (match) {\n return match[0];\n } else {\n return '';\n }\n },\n\n\n /**\n * Returns the input string stripped of its vendor prefix.\n *\n * @param {string} prop - string with or without vendor prefix\n *\n * @return {string} string name without vendor prefixes\n *\n * @example\n * postcss.vendor.unprefixed('-moz-tab-size') //=> 'tab-size'\n */\n unprefixed: function unprefixed(prop) {\n return prop.replace(/^-\\w+-/, '');\n }\n};\n\nexports.default = vendor;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlbmRvci5lczYiXSwibmFtZXMiOlsidmVuZG9yIiwicHJlZml4IiwicHJvcCIsIm1hdGNoIiwidW5wcmVmaXhlZCIsInJlcGxhY2UiXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7OztBQVFBLElBQUlBLFNBQVM7O0FBRVQ7Ozs7Ozs7Ozs7O0FBV0FDLFVBYlMsa0JBYUZDLElBYkUsRUFhSTtBQUNULFlBQUlDLFFBQVFELEtBQUtDLEtBQUwsQ0FBVyxVQUFYLENBQVo7QUFDQSxZQUFLQSxLQUFMLEVBQWE7QUFDVCxtQkFBT0EsTUFBTSxDQUFOLENBQVA7QUFDSCxTQUZELE1BRU87QUFDSCxtQkFBTyxFQUFQO0FBQ0g7QUFDSixLQXBCUTs7O0FBc0JUOzs7Ozs7Ozs7O0FBVUFDLGNBaENTLHNCQWdDRUYsSUFoQ0YsRUFnQ1E7QUFDYixlQUFPQSxLQUFLRyxPQUFMLENBQWEsUUFBYixFQUF1QixFQUF2QixDQUFQO0FBQ0g7QUFsQ1EsQ0FBYjs7a0JBc0NlTCxNIiwiZmlsZSI6InZlbmRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29udGFpbnMgaGVscGVycyBmb3Igd29ya2luZyB3aXRoIHZlbmRvciBwcmVmaXhlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgdmVuZG9yID0gcG9zdGNzcy52ZW5kb3I7XG4gKlxuICogQG5hbWVzcGFjZSB2ZW5kb3JcbiAqL1xubGV0IHZlbmRvciA9IHtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZlbmRvciBwcmVmaXggZXh0cmFjdGVkIGZyb20gYW4gaW5wdXQgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3AgLSBzdHJpbmcgd2l0aCBvciB3aXRob3V0IHZlbmRvciBwcmVmaXhcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gdmVuZG9yIHByZWZpeCBvciBlbXB0eSBzdHJpbmdcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcG9zdGNzcy52ZW5kb3IucHJlZml4KCctbW96LXRhYi1zaXplJykgLy89PiAnLW1vei0nXG4gICAgICogcG9zdGNzcy52ZW5kb3IucHJlZml4KCd0YWItc2l6ZScpICAgICAgLy89PiAnJ1xuICAgICAqL1xuICAgIHByZWZpeChwcm9wKSB7XG4gICAgICAgIGxldCBtYXRjaCA9IHByb3AubWF0Y2goL14oLVxcdystKS8pO1xuICAgICAgICBpZiAoIG1hdGNoICkge1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGlucHV0IHN0cmluZyBzdHJpcHBlZCBvZiBpdHMgdmVuZG9yIHByZWZpeC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wIC0gc3RyaW5nIHdpdGggb3Igd2l0aG91dCB2ZW5kb3IgcHJlZml4XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IHN0cmluZyBuYW1lIHdpdGhvdXQgdmVuZG9yIHByZWZpeGVzXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHBvc3Rjc3MudmVuZG9yLnVucHJlZml4ZWQoJy1tb3otdGFiLXNpemUnKSAvLz0+ICd0YWItc2l6ZSdcbiAgICAgKi9cbiAgICB1bnByZWZpeGVkKHByb3ApIHtcbiAgICAgICAgcmV0dXJuIHByb3AucmVwbGFjZSgvXi1cXHcrLS8sICcnKTtcbiAgICB9XG5cbn07XG5cbmV4cG9ydCBkZWZhdWx0IHZlbmRvcjtcbiJdfQ==\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require(\"react\");\nvar sanitizeHtml = require(\"sanitize-html\");\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\n\nmodule.exports = React.createClass({\n displayName: 'VectorCustomServerDialog',\n statics: {\n replaces: 'CustomServerDialog',\n },\n\n render: function() {\n return (\n <div className=\"mx_ErrorDialog\">\n <div className=\"mx_Dialog_title\">\n { _t('Custom Server Options') }\n </div>\n <div className=\"mx_Dialog_content\">\n <span dangerouslySetInnerHTML={{__html: sanitizeHtml(_t(\n \"You can use the custom server options to sign into other Matrix \"+\n \"servers by specifying a different Home server URL.<br/>This allows \"+\n \"you to use Riot with an existing Matrix account on a different home \"+\n \"server.<br/><br/>You can also set a custom identity server but you won't \"+\n \"be able to invite users by email address, or be invited by email address yourself.\",\n ))}} />\n </div>\n <div className=\"mx_Dialog_buttons\">\n <button onClick={this.props.onFinished} autoFocus={true}>\n { _t('Dismiss') }\n </button>\n </div>\n </div>\n );\n }\n});\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar React = require('react');\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\nimport SettingsStore from 'matrix-react-sdk/lib/settings/SettingsStore';\n\nmodule.exports = React.createClass({\n displayName: 'VectorLoginFooter',\n statics: {\n replaces: 'LoginFooter',\n },\n\n render: function() {\n // FIXME: replace this with a proper Status skin\n // ...except then we wouldn't be able to switch to the Status theme at runtime.\n if (SettingsStore.getValue(\"theme\") === 'status') return <div/>;\n \n return (\n <div className=\"mx_Login_links\">\n <a href=\"https://medium.com/@RiotChat\">blog</a>  ·  \n <a href=\"https://twitter.com/@RiotChat\">twitter</a>  ·  \n <a href=\"https://github.com/vector-im/riot-web\">github</a>  ·  \n <a href=\"https://matrix.org\">{ _t('powered by Matrix') }</a>\n </div>\n );\n }\n});\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst i = [1, 2, 3, 4, 5][Math.floor(Math.random() * 5)];\nconst DEFAULT_LOGO_URI = \"themes/riot/img/logos/riot-im-logo-\" + i + \".svg\";\n\nmodule.exports = React.createClass({\n displayName: 'VectorLoginHeader',\n statics: {\n replaces: 'LoginHeader',\n },\n propTypes: {\n icon: PropTypes.string,\n },\n\n render: function() {\n return (\n <div className=\"mx_Login_header\">\n <div className=\"mx_Login_logo\">\n <img src={this.props.icon || DEFAULT_LOGO_URI} alt=\"Riot\"/>\n </div>\n </div>\n );\n }\n});\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.components = undefined;\n\nvar _BottomLeftMenu = require('./components/structures/BottomLeftMenu');\n\nvar _BottomLeftMenu2 = _interopRequireDefault(_BottomLeftMenu);\n\nvar _CompatibilityPage = require('./components/structures/CompatibilityPage');\n\nvar _CompatibilityPage2 = _interopRequireDefault(_CompatibilityPage);\n\nvar _ContextualMenu = require('./components/structures/ContextualMenu');\n\nvar _ContextualMenu2 = _interopRequireDefault(_ContextualMenu);\n\nvar _CreateRoom = require('./components/structures/CreateRoom');\n\nvar _CreateRoom2 = _interopRequireDefault(_CreateRoom);\n\nvar _FilePanel = require('./components/structures/FilePanel');\n\nvar _FilePanel2 = _interopRequireDefault(_FilePanel);\n\nvar _GroupView = require('./components/structures/GroupView');\n\nvar _GroupView2 = _interopRequireDefault(_GroupView);\n\nvar _HomePage = require('./components/structures/HomePage');\n\nvar _HomePage2 = _interopRequireDefault(_HomePage);\n\nvar _InteractiveAuth = require('./components/structures/InteractiveAuth');\n\nvar _InteractiveAuth2 = _interopRequireDefault(_InteractiveAuth);\n\nvar _LeftPanel = require('./components/structures/LeftPanel');\n\nvar _LeftPanel2 = _interopRequireDefault(_LeftPanel);\n\nvar _LoggedInView = require('./components/structures/LoggedInView');\n\nvar _LoggedInView2 = _interopRequireDefault(_LoggedInView);\n\nvar _LoginBox = require('./components/structures/LoginBox');\n\nvar _LoginBox2 = _interopRequireDefault(_LoginBox);\n\nvar _MatrixChat = require('./components/structures/MatrixChat');\n\nvar _MatrixChat2 = _interopRequireDefault(_MatrixChat);\n\nvar _MessagePanel = require('./components/structures/MessagePanel');\n\nvar _MessagePanel2 = _interopRequireDefault(_MessagePanel);\n\nvar _MyGroups = require('./components/structures/MyGroups');\n\nvar _MyGroups2 = _interopRequireDefault(_MyGroups);\n\nvar _NotificationPanel = require('./components/structures/NotificationPanel');\n\nvar _NotificationPanel2 = _interopRequireDefault(_NotificationPanel);\n\nvar _RightPanel = require('./components/structures/RightPanel');\n\nvar _RightPanel2 = _interopRequireDefault(_RightPanel);\n\nvar _RoomDirectory = require('./components/structures/RoomDirectory');\n\nvar _RoomDirectory2 = _interopRequireDefault(_RoomDirectory);\n\nvar _RoomStatusBar = require('./components/structures/RoomStatusBar');\n\nvar _RoomStatusBar2 = _interopRequireDefault(_RoomStatusBar);\n\nvar _RoomSubList = require('./components/structures/RoomSubList');\n\nvar _RoomSubList2 = _interopRequireDefault(_RoomSubList);\n\nvar _RoomView = require('./components/structures/RoomView');\n\nvar _RoomView2 = _interopRequireDefault(_RoomView);\n\nvar _ScrollPanel = require('./components/structures/ScrollPanel');\n\nvar _ScrollPanel2 = _interopRequireDefault(_ScrollPanel);\n\nvar _SearchBox = require('./components/structures/SearchBox');\n\nvar _SearchBox2 = _interopRequireDefault(_SearchBox);\n\nvar _TagPanel = require('./components/structures/TagPanel');\n\nvar _TagPanel2 = _interopRequireDefault(_TagPanel);\n\nvar _TimelinePanel = require('./components/structures/TimelinePanel');\n\nvar _TimelinePanel2 = _interopRequireDefault(_TimelinePanel);\n\nvar _UploadBar = require('./components/structures/UploadBar');\n\nvar _UploadBar2 = _interopRequireDefault(_UploadBar);\n\nvar _UserSettings = require('./components/structures/UserSettings');\n\nvar _UserSettings2 = _interopRequireDefault(_UserSettings);\n\nvar _ViewSource = require('./components/structures/ViewSource');\n\nvar _ViewSource2 = _interopRequireDefault(_ViewSource);\n\nvar _ForgotPassword = require('./components/structures/login/ForgotPassword');\n\nvar _ForgotPassword2 = _interopRequireDefault(_ForgotPassword);\n\nvar _LanguageSelector = require('./components/structures/login/LanguageSelector');\n\nvar _LanguageSelector2 = _interopRequireDefault(_LanguageSelector);\n\nvar _Login = require('./components/structures/login/Login');\n\nvar _Login2 = _interopRequireDefault(_Login);\n\nvar _PostRegistration = require('./components/structures/login/PostRegistration');\n\nvar _PostRegistration2 = _interopRequireDefault(_PostRegistration);\n\nvar _Registration = require('./components/structures/login/Registration');\n\nvar _Registration2 = _interopRequireDefault(_Registration);\n\nvar _BaseAvatar = require('./components/views/avatars/BaseAvatar');\n\nvar _BaseAvatar2 = _interopRequireDefault(_BaseAvatar);\n\nvar _GroupAvatar = require('./components/views/avatars/GroupAvatar');\n\nvar _GroupAvatar2 = _interopRequireDefault(_GroupAvatar);\n\nvar _MemberAvatar = require('./components/views/avatars/MemberAvatar');\n\nvar _MemberAvatar2 = _interopRequireDefault(_MemberAvatar);\n\nvar _RoomAvatar = require('./components/views/avatars/RoomAvatar');\n\nvar _RoomAvatar2 = _interopRequireDefault(_RoomAvatar);\n\nvar _GenericElementContextMenu = require('./components/views/context_menus/GenericElementContextMenu');\n\nvar _GenericElementContextMenu2 = _interopRequireDefault(_GenericElementContextMenu);\n\nvar _GenericTextContextMenu = require('./components/views/context_menus/GenericTextContextMenu');\n\nvar _GenericTextContextMenu2 = _interopRequireDefault(_GenericTextContextMenu);\n\nvar _GroupInviteTileContextMenu = require('./components/views/context_menus/GroupInviteTileContextMenu');\n\nvar _GroupInviteTileContextMenu2 = _interopRequireDefault(_GroupInviteTileContextMenu);\n\nvar _MessageContextMenu = require('./components/views/context_menus/MessageContextMenu');\n\nvar _MessageContextMenu2 = _interopRequireDefault(_MessageContextMenu);\n\nvar _RoomTileContextMenu = require('./components/views/context_menus/RoomTileContextMenu');\n\nvar _RoomTileContextMenu2 = _interopRequireDefault(_RoomTileContextMenu);\n\nvar _TagTileContextMenu = require('./components/views/context_menus/TagTileContextMenu');\n\nvar _TagTileContextMenu2 = _interopRequireDefault(_TagTileContextMenu);\n\nvar _CreateRoomButton = require('./components/views/create_room/CreateRoomButton');\n\nvar _CreateRoomButton2 = _interopRequireDefault(_CreateRoomButton);\n\nvar _Presets = require('./components/views/create_room/Presets');\n\nvar _Presets2 = _interopRequireDefault(_Presets);\n\nvar _RoomAlias = require('./components/views/create_room/RoomAlias');\n\nvar _RoomAlias2 = _interopRequireDefault(_RoomAlias);\n\nvar _AddressPickerDialog = require('./components/views/dialogs/AddressPickerDialog');\n\nvar _AddressPickerDialog2 = _interopRequireDefault(_AddressPickerDialog);\n\nvar _BaseDialog = require('./components/views/dialogs/BaseDialog');\n\nvar _BaseDialog2 = _interopRequireDefault(_BaseDialog);\n\nvar _BugReportDialog = require('./components/views/dialogs/BugReportDialog');\n\nvar _BugReportDialog2 = _interopRequireDefault(_BugReportDialog);\n\nvar _ChangelogDialog = require('./components/views/dialogs/ChangelogDialog');\n\nvar _ChangelogDialog2 = _interopRequireDefault(_ChangelogDialog);\n\nvar _ChatCreateOrReuseDialog = require('./components/views/dialogs/ChatCreateOrReuseDialog');\n\nvar _ChatCreateOrReuseDialog2 = _interopRequireDefault(_ChatCreateOrReuseDialog);\n\nvar _ConfirmRedactDialog = require('./components/views/dialogs/ConfirmRedactDialog');\n\nvar _ConfirmRedactDialog2 = _interopRequireDefault(_ConfirmRedactDialog);\n\nvar _ConfirmUserActionDialog = require('./components/views/dialogs/ConfirmUserActionDialog');\n\nvar _ConfirmUserActionDialog2 = _interopRequireDefault(_ConfirmUserActionDialog);\n\nvar _CreateGroupDialog = require('./components/views/dialogs/CreateGroupDialog');\n\nvar _CreateGroupDialog2 = _interopRequireDefault(_CreateGroupDialog);\n\nvar _CreateRoomDialog = require('./components/views/dialogs/CreateRoomDialog');\n\nvar _CreateRoomDialog2 = _interopRequireDefault(_CreateRoomDialog);\n\nvar _DeactivateAccountDialog = require('./components/views/dialogs/DeactivateAccountDialog');\n\nvar _DeactivateAccountDialog2 = _interopRequireDefault(_DeactivateAccountDialog);\n\nvar _DeviceVerifyDialog = require('./components/views/dialogs/DeviceVerifyDialog');\n\nvar _DeviceVerifyDialog2 = _interopRequireDefault(_DeviceVerifyDialog);\n\nvar _DevtoolsDialog = require('./components/views/dialogs/DevtoolsDialog');\n\nvar _DevtoolsDialog2 = _interopRequireDefault(_DevtoolsDialog);\n\nvar _ErrorDialog = require('./components/views/dialogs/ErrorDialog');\n\nvar _ErrorDialog2 = _interopRequireDefault(_ErrorDialog);\n\nvar _InteractiveAuthDialog = require('./components/views/dialogs/InteractiveAuthDialog');\n\nvar _InteractiveAuthDialog2 = _interopRequireDefault(_InteractiveAuthDialog);\n\nvar _KeyShareDialog = require('./components/views/dialogs/KeyShareDialog');\n\nvar _KeyShareDialog2 = _interopRequireDefault(_KeyShareDialog);\n\nvar _LazyLoadingDisabledDialog = require('./components/views/dialogs/LazyLoadingDisabledDialog');\n\nvar _LazyLoadingDisabledDialog2 = _interopRequireDefault(_LazyLoadingDisabledDialog);\n\nvar _LazyLoadingResyncDialog = require('./components/views/dialogs/LazyLoadingResyncDialog');\n\nvar _LazyLoadingResyncDialog2 = _interopRequireDefault(_LazyLoadingResyncDialog);\n\nvar _QuestionDialog = require('./components/views/dialogs/QuestionDialog');\n\nvar _QuestionDialog2 = _interopRequireDefault(_QuestionDialog);\n\nvar _RoomUpgradeDialog = require('./components/views/dialogs/RoomUpgradeDialog');\n\nvar _RoomUpgradeDialog2 = _interopRequireDefault(_RoomUpgradeDialog);\n\nvar _SessionRestoreErrorDialog = require('./components/views/dialogs/SessionRestoreErrorDialog');\n\nvar _SessionRestoreErrorDialog2 = _interopRequireDefault(_SessionRestoreErrorDialog);\n\nvar _SetEmailDialog = require('./components/views/dialogs/SetEmailDialog');\n\nvar _SetEmailDialog2 = _interopRequireDefault(_SetEmailDialog);\n\nvar _SetMxIdDialog = require('./components/views/dialogs/SetMxIdDialog');\n\nvar _SetMxIdDialog2 = _interopRequireDefault(_SetMxIdDialog);\n\nvar _SetPasswordDialog = require('./components/views/dialogs/SetPasswordDialog');\n\nvar _SetPasswordDialog2 = _interopRequireDefault(_SetPasswordDialog);\n\nvar _ShareDialog = require('./components/views/dialogs/ShareDialog');\n\nvar _ShareDialog2 = _interopRequireDefault(_ShareDialog);\n\nvar _TextInputDialog = require('./components/views/dialogs/TextInputDialog');\n\nvar _TextInputDialog2 = _interopRequireDefault(_TextInputDialog);\n\nvar _UnknownDeviceDialog = require('./components/views/dialogs/UnknownDeviceDialog');\n\nvar _UnknownDeviceDialog2 = _interopRequireDefault(_UnknownDeviceDialog);\n\nvar _NetworkDropdown = require('./components/views/directory/NetworkDropdown');\n\nvar _NetworkDropdown2 = _interopRequireDefault(_NetworkDropdown);\n\nvar _AccessibleButton = require('./components/views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _ActionButton = require('./components/views/elements/ActionButton');\n\nvar _ActionButton2 = _interopRequireDefault(_ActionButton);\n\nvar _AddressSelector = require('./components/views/elements/AddressSelector');\n\nvar _AddressSelector2 = _interopRequireDefault(_AddressSelector);\n\nvar _AddressTile = require('./components/views/elements/AddressTile');\n\nvar _AddressTile2 = _interopRequireDefault(_AddressTile);\n\nvar _AppPermission = require('./components/views/elements/AppPermission');\n\nvar _AppPermission2 = _interopRequireDefault(_AppPermission);\n\nvar _AppTile = require('./components/views/elements/AppTile');\n\nvar _AppTile2 = _interopRequireDefault(_AppTile);\n\nvar _AppWarning = require('./components/views/elements/AppWarning');\n\nvar _AppWarning2 = _interopRequireDefault(_AppWarning);\n\nvar _CreateRoomButton3 = require('./components/views/elements/CreateRoomButton');\n\nvar _CreateRoomButton4 = _interopRequireDefault(_CreateRoomButton3);\n\nvar _DNDTagTile = require('./components/views/elements/DNDTagTile');\n\nvar _DNDTagTile2 = _interopRequireDefault(_DNDTagTile);\n\nvar _DeviceVerifyButtons = require('./components/views/elements/DeviceVerifyButtons');\n\nvar _DeviceVerifyButtons2 = _interopRequireDefault(_DeviceVerifyButtons);\n\nvar _DialogButtons = require('./components/views/elements/DialogButtons');\n\nvar _DialogButtons2 = _interopRequireDefault(_DialogButtons);\n\nvar _DirectorySearchBox = require('./components/views/elements/DirectorySearchBox');\n\nvar _DirectorySearchBox2 = _interopRequireDefault(_DirectorySearchBox);\n\nvar _Dropdown = require('./components/views/elements/Dropdown');\n\nvar _Dropdown2 = _interopRequireDefault(_Dropdown);\n\nvar _EditableItemList = require('./components/views/elements/EditableItemList');\n\nvar _EditableItemList2 = _interopRequireDefault(_EditableItemList);\n\nvar _EditableText = require('./components/views/elements/EditableText');\n\nvar _EditableText2 = _interopRequireDefault(_EditableText);\n\nvar _EditableTextContainer = require('./components/views/elements/EditableTextContainer');\n\nvar _EditableTextContainer2 = _interopRequireDefault(_EditableTextContainer);\n\nvar _EmojiText = require('./components/views/elements/EmojiText');\n\nvar _EmojiText2 = _interopRequireDefault(_EmojiText);\n\nvar _Flair = require('./components/views/elements/Flair');\n\nvar _Flair2 = _interopRequireDefault(_Flair);\n\nvar _GeminiScrollbarWrapper = require('./components/views/elements/GeminiScrollbarWrapper');\n\nvar _GeminiScrollbarWrapper2 = _interopRequireDefault(_GeminiScrollbarWrapper);\n\nvar _GroupsButton = require('./components/views/elements/GroupsButton');\n\nvar _GroupsButton2 = _interopRequireDefault(_GroupsButton);\n\nvar _HomeButton = require('./components/views/elements/HomeButton');\n\nvar _HomeButton2 = _interopRequireDefault(_HomeButton);\n\nvar _ImageView = require('./components/views/elements/ImageView');\n\nvar _ImageView2 = _interopRequireDefault(_ImageView);\n\nvar _InlineSpinner = require('./components/views/elements/InlineSpinner');\n\nvar _InlineSpinner2 = _interopRequireDefault(_InlineSpinner);\n\nvar _LanguageDropdown = require('./components/views/elements/LanguageDropdown');\n\nvar _LanguageDropdown2 = _interopRequireDefault(_LanguageDropdown);\n\nvar _ManageIntegsButton = require('./components/views/elements/ManageIntegsButton');\n\nvar _ManageIntegsButton2 = _interopRequireDefault(_ManageIntegsButton);\n\nvar _MemberEventListSummary = require('./components/views/elements/MemberEventListSummary');\n\nvar _MemberEventListSummary2 = _interopRequireDefault(_MemberEventListSummary);\n\nvar _MessageSpinner = require('./components/views/elements/MessageSpinner');\n\nvar _MessageSpinner2 = _interopRequireDefault(_MessageSpinner);\n\nvar _PersistedElement = require('./components/views/elements/PersistedElement');\n\nvar _PersistedElement2 = _interopRequireDefault(_PersistedElement);\n\nvar _PersistentApp = require('./components/views/elements/PersistentApp');\n\nvar _PersistentApp2 = _interopRequireDefault(_PersistentApp);\n\nvar _Pill = require('./components/views/elements/Pill');\n\nvar _Pill2 = _interopRequireDefault(_Pill);\n\nvar _PowerSelector = require('./components/views/elements/PowerSelector');\n\nvar _PowerSelector2 = _interopRequireDefault(_PowerSelector);\n\nvar _ProgressBar = require('./components/views/elements/ProgressBar');\n\nvar _ProgressBar2 = _interopRequireDefault(_ProgressBar);\n\nvar _ReplyThread = require('./components/views/elements/ReplyThread');\n\nvar _ReplyThread2 = _interopRequireDefault(_ReplyThread);\n\nvar _RoomDirectoryButton = require('./components/views/elements/RoomDirectoryButton');\n\nvar _RoomDirectoryButton2 = _interopRequireDefault(_RoomDirectoryButton);\n\nvar _SettingsButton = require('./components/views/elements/SettingsButton');\n\nvar _SettingsButton2 = _interopRequireDefault(_SettingsButton);\n\nvar _SettingsFlag = require('./components/views/elements/SettingsFlag');\n\nvar _SettingsFlag2 = _interopRequireDefault(_SettingsFlag);\n\nvar _Spinner = require('./components/views/elements/Spinner');\n\nvar _Spinner2 = _interopRequireDefault(_Spinner);\n\nvar _StartChatButton = require('./components/views/elements/StartChatButton');\n\nvar _StartChatButton2 = _interopRequireDefault(_StartChatButton);\n\nvar _SyntaxHighlight = require('./components/views/elements/SyntaxHighlight');\n\nvar _SyntaxHighlight2 = _interopRequireDefault(_SyntaxHighlight);\n\nvar _TagTile = require('./components/views/elements/TagTile');\n\nvar _TagTile2 = _interopRequireDefault(_TagTile);\n\nvar _TintableSvg = require('./components/views/elements/TintableSvg');\n\nvar _TintableSvg2 = _interopRequireDefault(_TintableSvg);\n\nvar _TintableSvgButton = require('./components/views/elements/TintableSvgButton');\n\nvar _TintableSvgButton2 = _interopRequireDefault(_TintableSvgButton);\n\nvar _ToolTipButton = require('./components/views/elements/ToolTipButton');\n\nvar _ToolTipButton2 = _interopRequireDefault(_ToolTipButton);\n\nvar _TruncatedList = require('./components/views/elements/TruncatedList');\n\nvar _TruncatedList2 = _interopRequireDefault(_TruncatedList);\n\nvar _UserSelector = require('./components/views/elements/UserSelector');\n\nvar _UserSelector2 = _interopRequireDefault(_UserSelector);\n\nvar _CookieBar = require('./components/views/globals/CookieBar');\n\nvar _CookieBar2 = _interopRequireDefault(_CookieBar);\n\nvar _MatrixToolbar = require('./components/views/globals/MatrixToolbar');\n\nvar _MatrixToolbar2 = _interopRequireDefault(_MatrixToolbar);\n\nvar _NewVersionBar = require('./components/views/globals/NewVersionBar');\n\nvar _NewVersionBar2 = _interopRequireDefault(_NewVersionBar);\n\nvar _PasswordNagBar = require('./components/views/globals/PasswordNagBar');\n\nvar _PasswordNagBar2 = _interopRequireDefault(_PasswordNagBar);\n\nvar _ServerLimitBar = require('./components/views/globals/ServerLimitBar');\n\nvar _ServerLimitBar2 = _interopRequireDefault(_ServerLimitBar);\n\nvar _UpdateCheckBar = require('./components/views/globals/UpdateCheckBar');\n\nvar _UpdateCheckBar2 = _interopRequireDefault(_UpdateCheckBar);\n\nvar _GroupInviteTile = require('./components/views/groups/GroupInviteTile');\n\nvar _GroupInviteTile2 = _interopRequireDefault(_GroupInviteTile);\n\nvar _GroupMemberInfo = require('./components/views/groups/GroupMemberInfo');\n\nvar _GroupMemberInfo2 = _interopRequireDefault(_GroupMemberInfo);\n\nvar _GroupMemberList = require('./components/views/groups/GroupMemberList');\n\nvar _GroupMemberList2 = _interopRequireDefault(_GroupMemberList);\n\nvar _GroupMemberTile = require('./components/views/groups/GroupMemberTile');\n\nvar _GroupMemberTile2 = _interopRequireDefault(_GroupMemberTile);\n\nvar _GroupPublicityToggle = require('./components/views/groups/GroupPublicityToggle');\n\nvar _GroupPublicityToggle2 = _interopRequireDefault(_GroupPublicityToggle);\n\nvar _GroupRoomInfo = require('./components/views/groups/GroupRoomInfo');\n\nvar _GroupRoomInfo2 = _interopRequireDefault(_GroupRoomInfo);\n\nvar _GroupRoomList = require('./components/views/groups/GroupRoomList');\n\nvar _GroupRoomList2 = _interopRequireDefault(_GroupRoomList);\n\nvar _GroupRoomTile = require('./components/views/groups/GroupRoomTile');\n\nvar _GroupRoomTile2 = _interopRequireDefault(_GroupRoomTile);\n\nvar _GroupTile = require('./components/views/groups/GroupTile');\n\nvar _GroupTile2 = _interopRequireDefault(_GroupTile);\n\nvar _GroupUserSettings = require('./components/views/groups/GroupUserSettings');\n\nvar _GroupUserSettings2 = _interopRequireDefault(_GroupUserSettings);\n\nvar _CaptchaForm = require('./components/views/login/CaptchaForm');\n\nvar _CaptchaForm2 = _interopRequireDefault(_CaptchaForm);\n\nvar _CasLogin = require('./components/views/login/CasLogin');\n\nvar _CasLogin2 = _interopRequireDefault(_CasLogin);\n\nvar _CountryDropdown = require('./components/views/login/CountryDropdown');\n\nvar _CountryDropdown2 = _interopRequireDefault(_CountryDropdown);\n\nvar _CustomServerDialog = require('./components/views/login/CustomServerDialog');\n\nvar _CustomServerDialog2 = _interopRequireDefault(_CustomServerDialog);\n\nvar _InteractiveAuthEntryComponents = require('./components/views/login/InteractiveAuthEntryComponents');\n\nvar _InteractiveAuthEntryComponents2 = _interopRequireDefault(_InteractiveAuthEntryComponents);\n\nvar _LoginFooter = require('./components/views/login/LoginFooter');\n\nvar _LoginFooter2 = _interopRequireDefault(_LoginFooter);\n\nvar _LoginHeader = require('./components/views/login/LoginHeader');\n\nvar _LoginHeader2 = _interopRequireDefault(_LoginHeader);\n\nvar _LoginPage = require('./components/views/login/LoginPage');\n\nvar _LoginPage2 = _interopRequireDefault(_LoginPage);\n\nvar _PasswordLogin = require('./components/views/login/PasswordLogin');\n\nvar _PasswordLogin2 = _interopRequireDefault(_PasswordLogin);\n\nvar _RegistrationForm = require('./components/views/login/RegistrationForm');\n\nvar _RegistrationForm2 = _interopRequireDefault(_RegistrationForm);\n\nvar _ServerConfig = require('./components/views/login/ServerConfig');\n\nvar _ServerConfig2 = _interopRequireDefault(_ServerConfig);\n\nvar _DateSeparator = require('./components/views/messages/DateSeparator');\n\nvar _DateSeparator2 = _interopRequireDefault(_DateSeparator);\n\nvar _MAudioBody = require('./components/views/messages/MAudioBody');\n\nvar _MAudioBody2 = _interopRequireDefault(_MAudioBody);\n\nvar _MFileBody = require('./components/views/messages/MFileBody');\n\nvar _MFileBody2 = _interopRequireDefault(_MFileBody);\n\nvar _MImageBody = require('./components/views/messages/MImageBody');\n\nvar _MImageBody2 = _interopRequireDefault(_MImageBody);\n\nvar _MStickerBody = require('./components/views/messages/MStickerBody');\n\nvar _MStickerBody2 = _interopRequireDefault(_MStickerBody);\n\nvar _MVideoBody = require('./components/views/messages/MVideoBody');\n\nvar _MVideoBody2 = _interopRequireDefault(_MVideoBody);\n\nvar _MessageEvent = require('./components/views/messages/MessageEvent');\n\nvar _MessageEvent2 = _interopRequireDefault(_MessageEvent);\n\nvar _MessageTimestamp = require('./components/views/messages/MessageTimestamp');\n\nvar _MessageTimestamp2 = _interopRequireDefault(_MessageTimestamp);\n\nvar _RoomAvatarEvent = require('./components/views/messages/RoomAvatarEvent');\n\nvar _RoomAvatarEvent2 = _interopRequireDefault(_RoomAvatarEvent);\n\nvar _RoomCreate = require('./components/views/messages/RoomCreate');\n\nvar _RoomCreate2 = _interopRequireDefault(_RoomCreate);\n\nvar _SenderProfile = require('./components/views/messages/SenderProfile');\n\nvar _SenderProfile2 = _interopRequireDefault(_SenderProfile);\n\nvar _TextualBody = require('./components/views/messages/TextualBody');\n\nvar _TextualBody2 = _interopRequireDefault(_TextualBody);\n\nvar _TextualEvent = require('./components/views/messages/TextualEvent');\n\nvar _TextualEvent2 = _interopRequireDefault(_TextualEvent);\n\nvar _UnknownBody = require('./components/views/messages/UnknownBody');\n\nvar _UnknownBody2 = _interopRequireDefault(_UnknownBody);\n\nvar _AliasSettings = require('./components/views/room_settings/AliasSettings');\n\nvar _AliasSettings2 = _interopRequireDefault(_AliasSettings);\n\nvar _ColorSettings = require('./components/views/room_settings/ColorSettings');\n\nvar _ColorSettings2 = _interopRequireDefault(_ColorSettings);\n\nvar _RelatedGroupSettings = require('./components/views/room_settings/RelatedGroupSettings');\n\nvar _RelatedGroupSettings2 = _interopRequireDefault(_RelatedGroupSettings);\n\nvar _UrlPreviewSettings = require('./components/views/room_settings/UrlPreviewSettings');\n\nvar _UrlPreviewSettings2 = _interopRequireDefault(_UrlPreviewSettings);\n\nvar _AppsDrawer = require('./components/views/rooms/AppsDrawer');\n\nvar _AppsDrawer2 = _interopRequireDefault(_AppsDrawer);\n\nvar _Autocomplete = require('./components/views/rooms/Autocomplete');\n\nvar _Autocomplete2 = _interopRequireDefault(_Autocomplete);\n\nvar _AuxPanel = require('./components/views/rooms/AuxPanel');\n\nvar _AuxPanel2 = _interopRequireDefault(_AuxPanel);\n\nvar _DNDRoomTile = require('./components/views/rooms/DNDRoomTile');\n\nvar _DNDRoomTile2 = _interopRequireDefault(_DNDRoomTile);\n\nvar _EntityTile = require('./components/views/rooms/EntityTile');\n\nvar _EntityTile2 = _interopRequireDefault(_EntityTile);\n\nvar _EventTile = require('./components/views/rooms/EventTile');\n\nvar _EventTile2 = _interopRequireDefault(_EventTile);\n\nvar _ForwardMessage = require('./components/views/rooms/ForwardMessage');\n\nvar _ForwardMessage2 = _interopRequireDefault(_ForwardMessage);\n\nvar _LinkPreviewWidget = require('./components/views/rooms/LinkPreviewWidget');\n\nvar _LinkPreviewWidget2 = _interopRequireDefault(_LinkPreviewWidget);\n\nvar _MemberDeviceInfo = require('./components/views/rooms/MemberDeviceInfo');\n\nvar _MemberDeviceInfo2 = _interopRequireDefault(_MemberDeviceInfo);\n\nvar _MemberInfo = require('./components/views/rooms/MemberInfo');\n\nvar _MemberInfo2 = _interopRequireDefault(_MemberInfo);\n\nvar _MemberList = require('./components/views/rooms/MemberList');\n\nvar _MemberList2 = _interopRequireDefault(_MemberList);\n\nvar _MemberTile = require('./components/views/rooms/MemberTile');\n\nvar _MemberTile2 = _interopRequireDefault(_MemberTile);\n\nvar _MessageComposer = require('./components/views/rooms/MessageComposer');\n\nvar _MessageComposer2 = _interopRequireDefault(_MessageComposer);\n\nvar _MessageComposerInput = require('./components/views/rooms/MessageComposerInput');\n\nvar _MessageComposerInput2 = _interopRequireDefault(_MessageComposerInput);\n\nvar _PinnedEventTile = require('./components/views/rooms/PinnedEventTile');\n\nvar _PinnedEventTile2 = _interopRequireDefault(_PinnedEventTile);\n\nvar _PinnedEventsPanel = require('./components/views/rooms/PinnedEventsPanel');\n\nvar _PinnedEventsPanel2 = _interopRequireDefault(_PinnedEventsPanel);\n\nvar _PresenceLabel = require('./components/views/rooms/PresenceLabel');\n\nvar _PresenceLabel2 = _interopRequireDefault(_PresenceLabel);\n\nvar _ReadReceiptMarker = require('./components/views/rooms/ReadReceiptMarker');\n\nvar _ReadReceiptMarker2 = _interopRequireDefault(_ReadReceiptMarker);\n\nvar _ReplyPreview = require('./components/views/rooms/ReplyPreview');\n\nvar _ReplyPreview2 = _interopRequireDefault(_ReplyPreview);\n\nvar _RoomDetailList = require('./components/views/rooms/RoomDetailList');\n\nvar _RoomDetailList2 = _interopRequireDefault(_RoomDetailList);\n\nvar _RoomDetailRow = require('./components/views/rooms/RoomDetailRow');\n\nvar _RoomDetailRow2 = _interopRequireDefault(_RoomDetailRow);\n\nvar _RoomDropTarget = require('./components/views/rooms/RoomDropTarget');\n\nvar _RoomDropTarget2 = _interopRequireDefault(_RoomDropTarget);\n\nvar _RoomHeader = require('./components/views/rooms/RoomHeader');\n\nvar _RoomHeader2 = _interopRequireDefault(_RoomHeader);\n\nvar _RoomList = require('./components/views/rooms/RoomList');\n\nvar _RoomList2 = _interopRequireDefault(_RoomList);\n\nvar _RoomNameEditor = require('./components/views/rooms/RoomNameEditor');\n\nvar _RoomNameEditor2 = _interopRequireDefault(_RoomNameEditor);\n\nvar _RoomPreviewBar = require('./components/views/rooms/RoomPreviewBar');\n\nvar _RoomPreviewBar2 = _interopRequireDefault(_RoomPreviewBar);\n\nvar _RoomSettings = require('./components/views/rooms/RoomSettings');\n\nvar _RoomSettings2 = _interopRequireDefault(_RoomSettings);\n\nvar _RoomTile = require('./components/views/rooms/RoomTile');\n\nvar _RoomTile2 = _interopRequireDefault(_RoomTile);\n\nvar _RoomTooltip = require('./components/views/rooms/RoomTooltip');\n\nvar _RoomTooltip2 = _interopRequireDefault(_RoomTooltip);\n\nvar _RoomTopicEditor = require('./components/views/rooms/RoomTopicEditor');\n\nvar _RoomTopicEditor2 = _interopRequireDefault(_RoomTopicEditor);\n\nvar _RoomUpgradeWarningBar = require('./components/views/rooms/RoomUpgradeWarningBar');\n\nvar _RoomUpgradeWarningBar2 = _interopRequireDefault(_RoomUpgradeWarningBar);\n\nvar _SearchBar = require('./components/views/rooms/SearchBar');\n\nvar _SearchBar2 = _interopRequireDefault(_SearchBar);\n\nvar _SearchResultTile = require('./components/views/rooms/SearchResultTile');\n\nvar _SearchResultTile2 = _interopRequireDefault(_SearchResultTile);\n\nvar _SearchableEntityList = require('./components/views/rooms/SearchableEntityList');\n\nvar _SearchableEntityList2 = _interopRequireDefault(_SearchableEntityList);\n\nvar _SimpleRoomHeader = require('./components/views/rooms/SimpleRoomHeader');\n\nvar _SimpleRoomHeader2 = _interopRequireDefault(_SimpleRoomHeader);\n\nvar _Stickerpicker = require('./components/views/rooms/Stickerpicker');\n\nvar _Stickerpicker2 = _interopRequireDefault(_Stickerpicker);\n\nvar _TopUnreadMessagesBar = require('./components/views/rooms/TopUnreadMessagesBar');\n\nvar _TopUnreadMessagesBar2 = _interopRequireDefault(_TopUnreadMessagesBar);\n\nvar _UserTile = require('./components/views/rooms/UserTile');\n\nvar _UserTile2 = _interopRequireDefault(_UserTile);\n\nvar _AddPhoneNumber = require('./components/views/settings/AddPhoneNumber');\n\nvar _AddPhoneNumber2 = _interopRequireDefault(_AddPhoneNumber);\n\nvar _ChangeAvatar = require('./components/views/settings/ChangeAvatar');\n\nvar _ChangeAvatar2 = _interopRequireDefault(_ChangeAvatar);\n\nvar _ChangeDisplayName = require('./components/views/settings/ChangeDisplayName');\n\nvar _ChangeDisplayName2 = _interopRequireDefault(_ChangeDisplayName);\n\nvar _ChangePassword = require('./components/views/settings/ChangePassword');\n\nvar _ChangePassword2 = _interopRequireDefault(_ChangePassword);\n\nvar _DevicesPanel = require('./components/views/settings/DevicesPanel');\n\nvar _DevicesPanel2 = _interopRequireDefault(_DevicesPanel);\n\nvar _DevicesPanelEntry = require('./components/views/settings/DevicesPanelEntry');\n\nvar _DevicesPanelEntry2 = _interopRequireDefault(_DevicesPanelEntry);\n\nvar _EnableNotificationsButton = require('./components/views/settings/EnableNotificationsButton');\n\nvar _EnableNotificationsButton2 = _interopRequireDefault(_EnableNotificationsButton);\n\nvar _IntegrationsManager = require('./components/views/settings/IntegrationsManager');\n\nvar _IntegrationsManager2 = _interopRequireDefault(_IntegrationsManager);\n\nvar _Notifications = require('./components/views/settings/Notifications');\n\nvar _Notifications2 = _interopRequireDefault(_Notifications);\n\nvar _CallPreview = require('./components/views/voip/CallPreview');\n\nvar _CallPreview2 = _interopRequireDefault(_CallPreview);\n\nvar _CallView = require('./components/views/voip/CallView');\n\nvar _CallView2 = _interopRequireDefault(_CallView);\n\nvar _IncomingCallBox = require('./components/views/voip/IncomingCallBox');\n\nvar _IncomingCallBox2 = _interopRequireDefault(_IncomingCallBox);\n\nvar _VideoFeed = require('./components/views/voip/VideoFeed');\n\nvar _VideoFeed2 = _interopRequireDefault(_VideoFeed);\n\nvar _VideoView = require('./components/views/voip/VideoView');\n\nvar _VideoView2 = _interopRequireDefault(_VideoView);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/*\n * THIS FILE IS AUTO-GENERATED\n * You can edit it you like, but your changes will be overwritten,\n * so you'd just be trying to swim upstream like a salmon.\n * You are not a salmon.\n */\n\nvar components = {};\n\n_BottomLeftMenu2.default && (components['structures.BottomLeftMenu'] = _BottomLeftMenu2.default);\n\n_CompatibilityPage2.default && (components['structures.CompatibilityPage'] = _CompatibilityPage2.default);\n\n_ContextualMenu2.default && (components['structures.ContextualMenu'] = _ContextualMenu2.default);\n\n_CreateRoom2.default && (components['structures.CreateRoom'] = _CreateRoom2.default);\n\n_FilePanel2.default && (components['structures.FilePanel'] = _FilePanel2.default);\n\n_GroupView2.default && (components['structures.GroupView'] = _GroupView2.default);\n\n_HomePage2.default && (components['structures.HomePage'] = _HomePage2.default);\n\n_InteractiveAuth2.default && (components['structures.InteractiveAuth'] = _InteractiveAuth2.default);\n\n_LeftPanel2.default && (components['structures.LeftPanel'] = _LeftPanel2.default);\n\n_LoggedInView2.default && (components['structures.LoggedInView'] = _LoggedInView2.default);\n\n_LoginBox2.default && (components['structures.LoginBox'] = _LoginBox2.default);\n\n_MatrixChat2.default && (components['structures.MatrixChat'] = _MatrixChat2.default);\n\n_MessagePanel2.default && (components['structures.MessagePanel'] = _MessagePanel2.default);\n\n_MyGroups2.default && (components['structures.MyGroups'] = _MyGroups2.default);\n\n_NotificationPanel2.default && (components['structures.NotificationPanel'] = _NotificationPanel2.default);\n\n_RightPanel2.default && (components['structures.RightPanel'] = _RightPanel2.default);\n\n_RoomDirectory2.default && (components['structures.RoomDirectory'] = _RoomDirectory2.default);\n\n_RoomStatusBar2.default && (components['structures.RoomStatusBar'] = _RoomStatusBar2.default);\n\n_RoomSubList2.default && (components['structures.RoomSubList'] = _RoomSubList2.default);\n\n_RoomView2.default && (components['structures.RoomView'] = _RoomView2.default);\n\n_ScrollPanel2.default && (components['structures.ScrollPanel'] = _ScrollPanel2.default);\n\n_SearchBox2.default && (components['structures.SearchBox'] = _SearchBox2.default);\n\n_TagPanel2.default && (components['structures.TagPanel'] = _TagPanel2.default);\n\n_TimelinePanel2.default && (components['structures.TimelinePanel'] = _TimelinePanel2.default);\n\n_UploadBar2.default && (components['structures.UploadBar'] = _UploadBar2.default);\n\n_UserSettings2.default && (components['structures.UserSettings'] = _UserSettings2.default);\n\n_ViewSource2.default && (components['structures.ViewSource'] = _ViewSource2.default);\n\n_ForgotPassword2.default && (components['structures.login.ForgotPassword'] = _ForgotPassword2.default);\n\n_LanguageSelector2.default && (components['structures.login.LanguageSelector'] = _LanguageSelector2.default);\n\n_Login2.default && (components['structures.login.Login'] = _Login2.default);\n\n_PostRegistration2.default && (components['structures.login.PostRegistration'] = _PostRegistration2.default);\n\n_Registration2.default && (components['structures.login.Registration'] = _Registration2.default);\n\n_BaseAvatar2.default && (components['views.avatars.BaseAvatar'] = _BaseAvatar2.default);\n\n_GroupAvatar2.default && (components['views.avatars.GroupAvatar'] = _GroupAvatar2.default);\n\n_MemberAvatar2.default && (components['views.avatars.MemberAvatar'] = _MemberAvatar2.default);\n\n_RoomAvatar2.default && (components['views.avatars.RoomAvatar'] = _RoomAvatar2.default);\n\n_GenericElementContextMenu2.default && (components['views.context_menus.GenericElementContextMenu'] = _GenericElementContextMenu2.default);\n\n_GenericTextContextMenu2.default && (components['views.context_menus.GenericTextContextMenu'] = _GenericTextContextMenu2.default);\n\n_GroupInviteTileContextMenu2.default && (components['views.context_menus.GroupInviteTileContextMenu'] = _GroupInviteTileContextMenu2.default);\n\n_MessageContextMenu2.default && (components['views.context_menus.MessageContextMenu'] = _MessageContextMenu2.default);\n\n_RoomTileContextMenu2.default && (components['views.context_menus.RoomTileContextMenu'] = _RoomTileContextMenu2.default);\n\n_TagTileContextMenu2.default && (components['views.context_menus.TagTileContextMenu'] = _TagTileContextMenu2.default);\n\n_CreateRoomButton2.default && (components['views.create_room.CreateRoomButton'] = _CreateRoomButton2.default);\n\n_Presets2.default && (components['views.create_room.Presets'] = _Presets2.default);\n\n_RoomAlias2.default && (components['views.create_room.RoomAlias'] = _RoomAlias2.default);\n\n_AddressPickerDialog2.default && (components['views.dialogs.AddressPickerDialog'] = _AddressPickerDialog2.default);\n\n_BaseDialog2.default && (components['views.dialogs.BaseDialog'] = _BaseDialog2.default);\n\n_BugReportDialog2.default && (components['views.dialogs.BugReportDialog'] = _BugReportDialog2.default);\n\n_ChangelogDialog2.default && (components['views.dialogs.ChangelogDialog'] = _ChangelogDialog2.default);\n\n_ChatCreateOrReuseDialog2.default && (components['views.dialogs.ChatCreateOrReuseDialog'] = _ChatCreateOrReuseDialog2.default);\n\n_ConfirmRedactDialog2.default && (components['views.dialogs.ConfirmRedactDialog'] = _ConfirmRedactDialog2.default);\n\n_ConfirmUserActionDialog2.default && (components['views.dialogs.ConfirmUserActionDialog'] = _ConfirmUserActionDialog2.default);\n\n_CreateGroupDialog2.default && (components['views.dialogs.CreateGroupDialog'] = _CreateGroupDialog2.default);\n\n_CreateRoomDialog2.default && (components['views.dialogs.CreateRoomDialog'] = _CreateRoomDialog2.default);\n\n_DeactivateAccountDialog2.default && (components['views.dialogs.DeactivateAccountDialog'] = _DeactivateAccountDialog2.default);\n\n_DeviceVerifyDialog2.default && (components['views.dialogs.DeviceVerifyDialog'] = _DeviceVerifyDialog2.default);\n\n_DevtoolsDialog2.default && (components['views.dialogs.DevtoolsDialog'] = _DevtoolsDialog2.default);\n\n_ErrorDialog2.default && (components['views.dialogs.ErrorDialog'] = _ErrorDialog2.default);\n\n_InteractiveAuthDialog2.default && (components['views.dialogs.InteractiveAuthDialog'] = _InteractiveAuthDialog2.default);\n\n_KeyShareDialog2.default && (components['views.dialogs.KeyShareDialog'] = _KeyShareDialog2.default);\n\n_LazyLoadingDisabledDialog2.default && (components['views.dialogs.LazyLoadingDisabledDialog'] = _LazyLoadingDisabledDialog2.default);\n\n_LazyLoadingResyncDialog2.default && (components['views.dialogs.LazyLoadingResyncDialog'] = _LazyLoadingResyncDialog2.default);\n\n_QuestionDialog2.default && (components['views.dialogs.QuestionDialog'] = _QuestionDialog2.default);\n\n_RoomUpgradeDialog2.default && (components['views.dialogs.RoomUpgradeDialog'] = _RoomUpgradeDialog2.default);\n\n_SessionRestoreErrorDialog2.default && (components['views.dialogs.SessionRestoreErrorDialog'] = _SessionRestoreErrorDialog2.default);\n\n_SetEmailDialog2.default && (components['views.dialogs.SetEmailDialog'] = _SetEmailDialog2.default);\n\n_SetMxIdDialog2.default && (components['views.dialogs.SetMxIdDialog'] = _SetMxIdDialog2.default);\n\n_SetPasswordDialog2.default && (components['views.dialogs.SetPasswordDialog'] = _SetPasswordDialog2.default);\n\n_ShareDialog2.default && (components['views.dialogs.ShareDialog'] = _ShareDialog2.default);\n\n_TextInputDialog2.default && (components['views.dialogs.TextInputDialog'] = _TextInputDialog2.default);\n\n_UnknownDeviceDialog2.default && (components['views.dialogs.UnknownDeviceDialog'] = _UnknownDeviceDialog2.default);\n\n_NetworkDropdown2.default && (components['views.directory.NetworkDropdown'] = _NetworkDropdown2.default);\n\n_AccessibleButton2.default && (components['views.elements.AccessibleButton'] = _AccessibleButton2.default);\n\n_ActionButton2.default && (components['views.elements.ActionButton'] = _ActionButton2.default);\n\n_AddressSelector2.default && (components['views.elements.AddressSelector'] = _AddressSelector2.default);\n\n_AddressTile2.default && (components['views.elements.AddressTile'] = _AddressTile2.default);\n\n_AppPermission2.default && (components['views.elements.AppPermission'] = _AppPermission2.default);\n\n_AppTile2.default && (components['views.elements.AppTile'] = _AppTile2.default);\n\n_AppWarning2.default && (components['views.elements.AppWarning'] = _AppWarning2.default);\n\n_CreateRoomButton4.default && (components['views.elements.CreateRoomButton'] = _CreateRoomButton4.default);\n\n_DNDTagTile2.default && (components['views.elements.DNDTagTile'] = _DNDTagTile2.default);\n\n_DeviceVerifyButtons2.default && (components['views.elements.DeviceVerifyButtons'] = _DeviceVerifyButtons2.default);\n\n_DialogButtons2.default && (components['views.elements.DialogButtons'] = _DialogButtons2.default);\n\n_DirectorySearchBox2.default && (components['views.elements.DirectorySearchBox'] = _DirectorySearchBox2.default);\n\n_Dropdown2.default && (components['views.elements.Dropdown'] = _Dropdown2.default);\n\n_EditableItemList2.default && (components['views.elements.EditableItemList'] = _EditableItemList2.default);\n\n_EditableText2.default && (components['views.elements.EditableText'] = _EditableText2.default);\n\n_EditableTextContainer2.default && (components['views.elements.EditableTextContainer'] = _EditableTextContainer2.default);\n\n_EmojiText2.default && (components['views.elements.EmojiText'] = _EmojiText2.default);\n\n_Flair2.default && (components['views.elements.Flair'] = _Flair2.default);\n\n_GeminiScrollbarWrapper2.default && (components['views.elements.GeminiScrollbarWrapper'] = _GeminiScrollbarWrapper2.default);\n\n_GroupsButton2.default && (components['views.elements.GroupsButton'] = _GroupsButton2.default);\n\n_HomeButton2.default && (components['views.elements.HomeButton'] = _HomeButton2.default);\n\n_ImageView2.default && (components['views.elements.ImageView'] = _ImageView2.default);\n\n_InlineSpinner2.default && (components['views.elements.InlineSpinner'] = _InlineSpinner2.default);\n\n_LanguageDropdown2.default && (components['views.elements.LanguageDropdown'] = _LanguageDropdown2.default);\n\n_ManageIntegsButton2.default && (components['views.elements.ManageIntegsButton'] = _ManageIntegsButton2.default);\n\n_MemberEventListSummary2.default && (components['views.elements.MemberEventListSummary'] = _MemberEventListSummary2.default);\n\n_MessageSpinner2.default && (components['views.elements.MessageSpinner'] = _MessageSpinner2.default);\n\n_PersistedElement2.default && (components['views.elements.PersistedElement'] = _PersistedElement2.default);\n\n_PersistentApp2.default && (components['views.elements.PersistentApp'] = _PersistentApp2.default);\n\n_Pill2.default && (components['views.elements.Pill'] = _Pill2.default);\n\n_PowerSelector2.default && (components['views.elements.PowerSelector'] = _PowerSelector2.default);\n\n_ProgressBar2.default && (components['views.elements.ProgressBar'] = _ProgressBar2.default);\n\n_ReplyThread2.default && (components['views.elements.ReplyThread'] = _ReplyThread2.default);\n\n_RoomDirectoryButton2.default && (components['views.elements.RoomDirectoryButton'] = _RoomDirectoryButton2.default);\n\n_SettingsButton2.default && (components['views.elements.SettingsButton'] = _SettingsButton2.default);\n\n_SettingsFlag2.default && (components['views.elements.SettingsFlag'] = _SettingsFlag2.default);\n\n_Spinner2.default && (components['views.elements.Spinner'] = _Spinner2.default);\n\n_StartChatButton2.default && (components['views.elements.StartChatButton'] = _StartChatButton2.default);\n\n_SyntaxHighlight2.default && (components['views.elements.SyntaxHighlight'] = _SyntaxHighlight2.default);\n\n_TagTile2.default && (components['views.elements.TagTile'] = _TagTile2.default);\n\n_TintableSvg2.default && (components['views.elements.TintableSvg'] = _TintableSvg2.default);\n\n_TintableSvgButton2.default && (components['views.elements.TintableSvgButton'] = _TintableSvgButton2.default);\n\n_ToolTipButton2.default && (components['views.elements.ToolTipButton'] = _ToolTipButton2.default);\n\n_TruncatedList2.default && (components['views.elements.TruncatedList'] = _TruncatedList2.default);\n\n_UserSelector2.default && (components['views.elements.UserSelector'] = _UserSelector2.default);\n\n_CookieBar2.default && (components['views.globals.CookieBar'] = _CookieBar2.default);\n\n_MatrixToolbar2.default && (components['views.globals.MatrixToolbar'] = _MatrixToolbar2.default);\n\n_NewVersionBar2.default && (components['views.globals.NewVersionBar'] = _NewVersionBar2.default);\n\n_PasswordNagBar2.default && (components['views.globals.PasswordNagBar'] = _PasswordNagBar2.default);\n\n_ServerLimitBar2.default && (components['views.globals.ServerLimitBar'] = _ServerLimitBar2.default);\n\n_UpdateCheckBar2.default && (components['views.globals.UpdateCheckBar'] = _UpdateCheckBar2.default);\n\n_GroupInviteTile2.default && (components['views.groups.GroupInviteTile'] = _GroupInviteTile2.default);\n\n_GroupMemberInfo2.default && (components['views.groups.GroupMemberInfo'] = _GroupMemberInfo2.default);\n\n_GroupMemberList2.default && (components['views.groups.GroupMemberList'] = _GroupMemberList2.default);\n\n_GroupMemberTile2.default && (components['views.groups.GroupMemberTile'] = _GroupMemberTile2.default);\n\n_GroupPublicityToggle2.default && (components['views.groups.GroupPublicityToggle'] = _GroupPublicityToggle2.default);\n\n_GroupRoomInfo2.default && (components['views.groups.GroupRoomInfo'] = _GroupRoomInfo2.default);\n\n_GroupRoomList2.default && (components['views.groups.GroupRoomList'] = _GroupRoomList2.default);\n\n_GroupRoomTile2.default && (components['views.groups.GroupRoomTile'] = _GroupRoomTile2.default);\n\n_GroupTile2.default && (components['views.groups.GroupTile'] = _GroupTile2.default);\n\n_GroupUserSettings2.default && (components['views.groups.GroupUserSettings'] = _GroupUserSettings2.default);\n\n_CaptchaForm2.default && (components['views.login.CaptchaForm'] = _CaptchaForm2.default);\n\n_CasLogin2.default && (components['views.login.CasLogin'] = _CasLogin2.default);\n\n_CountryDropdown2.default && (components['views.login.CountryDropdown'] = _CountryDropdown2.default);\n\n_CustomServerDialog2.default && (components['views.login.CustomServerDialog'] = _CustomServerDialog2.default);\n\n_InteractiveAuthEntryComponents2.default && (components['views.login.InteractiveAuthEntryComponents'] = _InteractiveAuthEntryComponents2.default);\n\n_LoginFooter2.default && (components['views.login.LoginFooter'] = _LoginFooter2.default);\n\n_LoginHeader2.default && (components['views.login.LoginHeader'] = _LoginHeader2.default);\n\n_LoginPage2.default && (components['views.login.LoginPage'] = _LoginPage2.default);\n\n_PasswordLogin2.default && (components['views.login.PasswordLogin'] = _PasswordLogin2.default);\n\n_RegistrationForm2.default && (components['views.login.RegistrationForm'] = _RegistrationForm2.default);\n\n_ServerConfig2.default && (components['views.login.ServerConfig'] = _ServerConfig2.default);\n\n_DateSeparator2.default && (components['views.messages.DateSeparator'] = _DateSeparator2.default);\n\n_MAudioBody2.default && (components['views.messages.MAudioBody'] = _MAudioBody2.default);\n\n_MFileBody2.default && (components['views.messages.MFileBody'] = _MFileBody2.default);\n\n_MImageBody2.default && (components['views.messages.MImageBody'] = _MImageBody2.default);\n\n_MStickerBody2.default && (components['views.messages.MStickerBody'] = _MStickerBody2.default);\n\n_MVideoBody2.default && (components['views.messages.MVideoBody'] = _MVideoBody2.default);\n\n_MessageEvent2.default && (components['views.messages.MessageEvent'] = _MessageEvent2.default);\n\n_MessageTimestamp2.default && (components['views.messages.MessageTimestamp'] = _MessageTimestamp2.default);\n\n_RoomAvatarEvent2.default && (components['views.messages.RoomAvatarEvent'] = _RoomAvatarEvent2.default);\n\n_RoomCreate2.default && (components['views.messages.RoomCreate'] = _RoomCreate2.default);\n\n_SenderProfile2.default && (components['views.messages.SenderProfile'] = _SenderProfile2.default);\n\n_TextualBody2.default && (components['views.messages.TextualBody'] = _TextualBody2.default);\n\n_TextualEvent2.default && (components['views.messages.TextualEvent'] = _TextualEvent2.default);\n\n_UnknownBody2.default && (components['views.messages.UnknownBody'] = _UnknownBody2.default);\n\n_AliasSettings2.default && (components['views.room_settings.AliasSettings'] = _AliasSettings2.default);\n\n_ColorSettings2.default && (components['views.room_settings.ColorSettings'] = _ColorSettings2.default);\n\n_RelatedGroupSettings2.default && (components['views.room_settings.RelatedGroupSettings'] = _RelatedGroupSettings2.default);\n\n_UrlPreviewSettings2.default && (components['views.room_settings.UrlPreviewSettings'] = _UrlPreviewSettings2.default);\n\n_AppsDrawer2.default && (components['views.rooms.AppsDrawer'] = _AppsDrawer2.default);\n\n_Autocomplete2.default && (components['views.rooms.Autocomplete'] = _Autocomplete2.default);\n\n_AuxPanel2.default && (components['views.rooms.AuxPanel'] = _AuxPanel2.default);\n\n_DNDRoomTile2.default && (components['views.rooms.DNDRoomTile'] = _DNDRoomTile2.default);\n\n_EntityTile2.default && (components['views.rooms.EntityTile'] = _EntityTile2.default);\n\n_EventTile2.default && (components['views.rooms.EventTile'] = _EventTile2.default);\n\n_ForwardMessage2.default && (components['views.rooms.ForwardMessage'] = _ForwardMessage2.default);\n\n_LinkPreviewWidget2.default && (components['views.rooms.LinkPreviewWidget'] = _LinkPreviewWidget2.default);\n\n_MemberDeviceInfo2.default && (components['views.rooms.MemberDeviceInfo'] = _MemberDeviceInfo2.default);\n\n_MemberInfo2.default && (components['views.rooms.MemberInfo'] = _MemberInfo2.default);\n\n_MemberList2.default && (components['views.rooms.MemberList'] = _MemberList2.default);\n\n_MemberTile2.default && (components['views.rooms.MemberTile'] = _MemberTile2.default);\n\n_MessageComposer2.default && (components['views.rooms.MessageComposer'] = _MessageComposer2.default);\n\n_MessageComposerInput2.default && (components['views.rooms.MessageComposerInput'] = _MessageComposerInput2.default);\n\n_PinnedEventTile2.default && (components['views.rooms.PinnedEventTile'] = _PinnedEventTile2.default);\n\n_PinnedEventsPanel2.default && (components['views.rooms.PinnedEventsPanel'] = _PinnedEventsPanel2.default);\n\n_PresenceLabel2.default && (components['views.rooms.PresenceLabel'] = _PresenceLabel2.default);\n\n_ReadReceiptMarker2.default && (components['views.rooms.ReadReceiptMarker'] = _ReadReceiptMarker2.default);\n\n_ReplyPreview2.default && (components['views.rooms.ReplyPreview'] = _ReplyPreview2.default);\n\n_RoomDetailList2.default && (components['views.rooms.RoomDetailList'] = _RoomDetailList2.default);\n\n_RoomDetailRow2.default && (components['views.rooms.RoomDetailRow'] = _RoomDetailRow2.default);\n\n_RoomDropTarget2.default && (components['views.rooms.RoomDropTarget'] = _RoomDropTarget2.default);\n\n_RoomHeader2.default && (components['views.rooms.RoomHeader'] = _RoomHeader2.default);\n\n_RoomList2.default && (components['views.rooms.RoomList'] = _RoomList2.default);\n\n_RoomNameEditor2.default && (components['views.rooms.RoomNameEditor'] = _RoomNameEditor2.default);\n\n_RoomPreviewBar2.default && (components['views.rooms.RoomPreviewBar'] = _RoomPreviewBar2.default);\n\n_RoomSettings2.default && (components['views.rooms.RoomSettings'] = _RoomSettings2.default);\n\n_RoomTile2.default && (components['views.rooms.RoomTile'] = _RoomTile2.default);\n\n_RoomTooltip2.default && (components['views.rooms.RoomTooltip'] = _RoomTooltip2.default);\n\n_RoomTopicEditor2.default && (components['views.rooms.RoomTopicEditor'] = _RoomTopicEditor2.default);\n\n_RoomUpgradeWarningBar2.default && (components['views.rooms.RoomUpgradeWarningBar'] = _RoomUpgradeWarningBar2.default);\n\n_SearchBar2.default && (components['views.rooms.SearchBar'] = _SearchBar2.default);\n\n_SearchResultTile2.default && (components['views.rooms.SearchResultTile'] = _SearchResultTile2.default);\n\n_SearchableEntityList2.default && (components['views.rooms.SearchableEntityList'] = _SearchableEntityList2.default);\n\n_SimpleRoomHeader2.default && (components['views.rooms.SimpleRoomHeader'] = _SimpleRoomHeader2.default);\n\n_Stickerpicker2.default && (components['views.rooms.Stickerpicker'] = _Stickerpicker2.default);\n\n_TopUnreadMessagesBar2.default && (components['views.rooms.TopUnreadMessagesBar'] = _TopUnreadMessagesBar2.default);\n\n_UserTile2.default && (components['views.rooms.UserTile'] = _UserTile2.default);\n\n_AddPhoneNumber2.default && (components['views.settings.AddPhoneNumber'] = _AddPhoneNumber2.default);\n\n_ChangeAvatar2.default && (components['views.settings.ChangeAvatar'] = _ChangeAvatar2.default);\n\n_ChangeDisplayName2.default && (components['views.settings.ChangeDisplayName'] = _ChangeDisplayName2.default);\n\n_ChangePassword2.default && (components['views.settings.ChangePassword'] = _ChangePassword2.default);\n\n_DevicesPanel2.default && (components['views.settings.DevicesPanel'] = _DevicesPanel2.default);\n\n_DevicesPanelEntry2.default && (components['views.settings.DevicesPanelEntry'] = _DevicesPanelEntry2.default);\n\n_EnableNotificationsButton2.default && (components['views.settings.EnableNotificationsButton'] = _EnableNotificationsButton2.default);\n\n_IntegrationsManager2.default && (components['views.settings.IntegrationsManager'] = _IntegrationsManager2.default);\n\n_Notifications2.default && (components['views.settings.Notifications'] = _Notifications2.default);\n\n_CallPreview2.default && (components['views.voip.CallPreview'] = _CallPreview2.default);\n\n_CallView2.default && (components['views.voip.CallView'] = _CallView2.default);\n\n_IncomingCallBox2.default && (components['views.voip.IncomingCallBox'] = _IncomingCallBox2.default);\n\n_VideoFeed2.default && (components['views.voip.VideoFeed'] = _VideoFeed2.default);\n\n_VideoView2.default && (components['views.voip.VideoView'] = _VideoView2.default);\nexports.components = components;\n//# sourceMappingURL=component-index.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _velocityVector = require('velocity-vector');\n\nvar _velocityVector2 = _interopRequireDefault(_velocityVector);\n\nrequire('velocity-vector/velocity.ui');\n\nvar _SettingsStore = require('../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar CALLOUT_ANIM_DURATION = 1000; /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = _react2.default.createClass({\n displayName: 'BottomLeftMenu',\n\n propTypes: {\n collapsed: _react2.default.PropTypes.bool.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n directoryHover: false,\n roomsHover: false,\n homeHover: false,\n peopleHover: false,\n settingsHover: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._dispatcherRef = _dispatcher2.default.register(this.onAction);\n this._peopleButton = null;\n this._directoryButton = null;\n this._createRoomButton = null;\n this._lastCallouts = {};\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.unregister(this._dispatcherRef);\n },\n\n // Room events\n onDirectoryClick: function onDirectoryClick() {\n _dispatcher2.default.dispatch({ action: 'view_room_directory' });\n },\n\n onDirectoryMouseEnter: function onDirectoryMouseEnter() {\n this.setState({ directoryHover: true });\n },\n\n onDirectoryMouseLeave: function onDirectoryMouseLeave() {\n this.setState({ directoryHover: false });\n },\n\n onRoomsClick: function onRoomsClick() {\n _dispatcher2.default.dispatch({ action: 'view_create_room' });\n },\n\n onRoomsMouseEnter: function onRoomsMouseEnter() {\n this.setState({ roomsHover: true });\n },\n\n onRoomsMouseLeave: function onRoomsMouseLeave() {\n this.setState({ roomsHover: false });\n },\n\n // Home button events\n onHomeClick: function onHomeClick() {\n _dispatcher2.default.dispatch({ action: 'view_home_page' });\n },\n\n onHomeMouseEnter: function onHomeMouseEnter() {\n this.setState({ homeHover: true });\n },\n\n onHomeMouseLeave: function onHomeMouseLeave() {\n this.setState({ homeHover: false });\n },\n\n // People events\n onPeopleClick: function onPeopleClick() {\n _dispatcher2.default.dispatch({ action: 'view_create_chat' });\n },\n\n onPeopleMouseEnter: function onPeopleMouseEnter() {\n this.setState({ peopleHover: true });\n },\n\n onPeopleMouseLeave: function onPeopleMouseLeave() {\n this.setState({ peopleHover: false });\n },\n\n // Settings events\n onSettingsClick: function onSettingsClick() {\n _dispatcher2.default.dispatch({ action: 'view_user_settings' });\n },\n\n onSettingsMouseEnter: function onSettingsMouseEnter() {\n this.setState({ settingsHover: true });\n },\n\n onSettingsMouseLeave: function onSettingsMouseLeave() {\n this.setState({ settingsHover: false });\n },\n\n onAction: function onAction(payload) {\n var calloutElement = void 0;\n switch (payload.action) {\n // Incoming instruction: dance!\n case 'callout_start_chat':\n calloutElement = this._peopleButton;\n break;\n case 'callout_room_directory':\n calloutElement = this._directoryButton;\n break;\n case 'callout_create_room':\n calloutElement = this._createRoomButton;\n break;\n }\n if (calloutElement) {\n var lastCallout = this._lastCallouts[payload.action];\n var now = Date.now();\n if (lastCallout == undefined || lastCallout < now - CALLOUT_ANIM_DURATION) {\n this._lastCallouts[payload.action] = now;\n (0, _velocityVector2.default)(_reactDom2.default.findDOMNode(calloutElement), \"callout.bounce\", CALLOUT_ANIM_DURATION);\n }\n }\n },\n\n // Get the label/tooltip to show\n getLabel: function getLabel(label, show) {\n if (show) {\n var RoomTooltip = _index2.default.getComponent(\"rooms.RoomTooltip\");\n return _react2.default.createElement(RoomTooltip, { className: 'mx_BottomLeftMenu_tooltip', label: label });\n }\n },\n\n _collectPeopleButton: function _collectPeopleButton(e) {\n this._peopleButton = e;\n },\n\n _collectDirectoryButton: function _collectDirectoryButton(e) {\n this._directoryButton = e;\n },\n\n _collectCreateRoomButton: function _collectCreateRoomButton(e) {\n this._createRoomButton = e;\n },\n\n render: function render() {\n var HomeButton = _index2.default.getComponent('elements.HomeButton');\n var StartChatButton = _index2.default.getComponent('elements.StartChatButton');\n var RoomDirectoryButton = _index2.default.getComponent('elements.RoomDirectoryButton');\n var CreateRoomButton = _index2.default.getComponent('elements.CreateRoomButton');\n var SettingsButton = _index2.default.getComponent('elements.SettingsButton');\n var GroupsButton = _index2.default.getComponent('elements.GroupsButton');\n\n var groupsButton = _SettingsStore2.default.getValue(\"TagPanel.disableTagPanel\") ? _react2.default.createElement(GroupsButton, { tooltip: true }) : null;\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_BottomLeftMenu' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_BottomLeftMenu_options' },\n _react2.default.createElement(HomeButton, { tooltip: true }),\n _react2.default.createElement(\n 'div',\n { ref: this._collectPeopleButton },\n _react2.default.createElement(StartChatButton, { tooltip: true })\n ),\n _react2.default.createElement(\n 'div',\n { ref: this._collectDirectoryButton },\n _react2.default.createElement(RoomDirectoryButton, { tooltip: true })\n ),\n _react2.default.createElement(\n 'div',\n { ref: this._collectCreateRoomButton },\n _react2.default.createElement(CreateRoomButton, { tooltip: true })\n ),\n groupsButton,\n _react2.default.createElement(\n 'span',\n { className: 'mx_BottomLeftMenu_settings' },\n _react2.default.createElement(SettingsButton, { tooltip: true })\n )\n )\n );\n }\n});\n//# sourceMappingURL=BottomLeftMenu.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _languageHandler = require('../../languageHandler');\n\nvar React = require('react');\n\n\nmodule.exports = React.createClass({\n displayName: 'CompatibilityPage',\n propTypes: {\n onAccept: React.PropTypes.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onAccept: function onAccept() {} // NOP\n };\n },\n\n onAccept: function onAccept() {\n this.props.onAccept();\n },\n\n render: function render() {\n\n return React.createElement(\n 'div',\n { className: 'mx_CompatibilityPage' },\n React.createElement(\n 'div',\n { className: 'mx_CompatibilityPage_box' },\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Sorry, your browser is <b>not</b> able to run Riot.\", {}, { 'b': function b(sub) {\n return React.createElement(\n 'b',\n null,\n sub\n );\n } }),\n ' '\n ),\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.\")\n ),\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.', {}, {\n 'chromeLink': function chromeLink(sub) {\n return React.createElement(\n 'a',\n { href: 'https://www.google.com/chrome' },\n sub\n );\n },\n 'firefoxLink': function firefoxLink(sub) {\n return React.createElement(\n 'a',\n { href: 'https://getfirefox.com' },\n sub\n );\n }\n }),\n (0, _languageHandler._t)('<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.', {}, {\n 'safariLink': function safariLink(sub) {\n return React.createElement(\n 'a',\n { href: 'http://apple.com/safari' },\n sub\n );\n },\n 'operaLink': function operaLink(sub) {\n return React.createElement(\n 'a',\n { href: 'http://opera.com' },\n sub\n );\n }\n })\n ),\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!\")\n ),\n React.createElement(\n 'button',\n { onClick: this.onAccept },\n (0, _languageHandler._t)(\"I understand the risks and wish to continue\")\n )\n )\n );\n }\n});\n//# sourceMappingURL=CompatibilityPage.js.map","require('../modules/web.immediate');\nmodule.exports = require('../modules/_core').setImmediate;\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PresetValues = {\n PrivateChat: \"private_chat\",\n PublicChat: \"public_chat\",\n Custom: \"custom\"\n};\n\nmodule.exports = _react2.default.createClass({\n displayName: 'CreateRoom',\n\n propTypes: {\n onRoomCreated: _propTypes2.default.func,\n collapsedRhs: _propTypes2.default.bool\n },\n\n phases: {\n CONFIG: \"CONFIG\", // We're waiting for user to configure and hit create.\n CREATING: \"CREATING\", // We're sending the request.\n CREATED: \"CREATED\", // We successfully created the room.\n ERROR: \"ERROR\" // There was an error while trying to create room.\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onRoomCreated: function onRoomCreated() {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n phase: this.phases.CONFIG,\n error_string: \"\",\n is_private: true,\n share_history: false,\n default_preset: PresetValues.PrivateChat,\n topic: '',\n room_name: '',\n invited_users: []\n };\n },\n\n onCreateRoom: function onCreateRoom() {\n var options = {};\n\n if (this.state.room_name) {\n options.name = this.state.room_name;\n }\n\n if (this.state.topic) {\n options.topic = this.state.topic;\n }\n\n if (this.state.preset) {\n if (this.state.preset != PresetValues.Custom) {\n options.preset = this.state.preset;\n } else {\n options.initial_state = [{\n type: \"m.room.join_rules\",\n content: {\n \"join_rule\": this.state.is_private ? \"invite\" : \"public\"\n }\n }, {\n type: \"m.room.history_visibility\",\n content: {\n \"history_visibility\": this.state.share_history ? \"shared\" : \"invited\"\n }\n }];\n }\n }\n\n options.invite = this.state.invited_users;\n\n var alias = this.getAliasLocalpart();\n if (alias) {\n options.room_alias_name = alias;\n }\n\n var cli = _MatrixClientPeg2.default.get();\n if (!cli) {\n // TODO: Error.\n console.error(\"Cannot create room: No matrix client.\");\n return;\n }\n\n var deferred = cli.createRoom(options);\n\n if (this.state.encrypt) {\n // TODO\n }\n\n this.setState({\n phase: this.phases.CREATING\n });\n\n var self = this;\n\n deferred.then(function (resp) {\n self.setState({\n phase: self.phases.CREATED\n });\n self.props.onRoomCreated(resp.room_id);\n }, function (err) {\n self.setState({\n phase: self.phases.ERROR,\n error_string: err.toString()\n });\n });\n },\n\n getPreset: function getPreset() {\n return this.refs.presets.getPreset();\n },\n\n getName: function getName() {\n return this.refs.name_textbox.getName();\n },\n\n getTopic: function getTopic() {\n return this.refs.topic.getTopic();\n },\n\n getAliasLocalpart: function getAliasLocalpart() {\n return this.refs.alias.getAliasLocalpart();\n },\n\n getInvitedUsers: function getInvitedUsers() {\n return this.refs.user_selector.getUserIds();\n },\n\n onPresetChanged: function onPresetChanged(preset) {\n switch (preset) {\n case PresetValues.PrivateChat:\n this.setState({\n preset: preset,\n is_private: true,\n share_history: false\n });\n break;\n case PresetValues.PublicChat:\n this.setState({\n preset: preset,\n is_private: false,\n share_history: true\n });\n break;\n case PresetValues.Custom:\n this.setState({\n preset: preset\n });\n break;\n }\n },\n\n onPrivateChanged: function onPrivateChanged(ev) {\n this.setState({\n preset: PresetValues.Custom,\n is_private: ev.target.checked\n });\n },\n\n onShareHistoryChanged: function onShareHistoryChanged(ev) {\n this.setState({\n preset: PresetValues.Custom,\n share_history: ev.target.checked\n });\n },\n\n onTopicChange: function onTopicChange(ev) {\n this.setState({\n topic: ev.target.value\n });\n },\n\n onNameChange: function onNameChange(ev) {\n this.setState({\n room_name: ev.target.value\n });\n },\n\n onInviteChanged: function onInviteChanged(invited_users) {\n this.setState({\n invited_users: invited_users\n });\n },\n\n onAliasChanged: function onAliasChanged(alias) {\n this.setState({\n alias: alias\n });\n },\n\n onEncryptChanged: function onEncryptChanged(ev) {\n this.setState({\n encrypt: ev.target.checked\n });\n },\n\n render: function render() {\n var curr_phase = this.state.phase;\n if (curr_phase == this.phases.CREATING) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n } else {\n var error_box = \"\";\n if (curr_phase == this.phases.ERROR) {\n error_box = _react2.default.createElement(\n 'div',\n { className: 'mx_Error' },\n (0, _languageHandler._t)('An error occurred: %(error_string)s', { error_string: this.state.error_string })\n );\n }\n\n var CreateRoomButton = _index2.default.getComponent(\"create_room.CreateRoomButton\");\n var RoomAlias = _index2.default.getComponent(\"create_room.RoomAlias\");\n var Presets = _index2.default.getComponent(\"create_room.Presets\");\n var UserSelector = _index2.default.getComponent(\"elements.UserSelector\");\n var SimpleRoomHeader = _index2.default.getComponent(\"rooms.SimpleRoomHeader\");\n\n var domain = _MatrixClientPeg2.default.get().getDomain();\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_CreateRoom' },\n _react2.default.createElement(SimpleRoomHeader, { title: (0, _languageHandler._t)(\"Create Room\"), collapsedRhs: this.props.collapsedRhs }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateRoom_body' },\n _react2.default.createElement('input', { type: 'text', ref: 'room_name', value: this.state.room_name, onChange: this.onNameChange, placeholder: (0, _languageHandler._t)('Name') }),\n ' ',\n _react2.default.createElement('br', null),\n _react2.default.createElement('textarea', { className: 'mx_CreateRoom_description', ref: 'topic', value: this.state.topic, onChange: this.onTopicChange, placeholder: (0, _languageHandler._t)('Topic') }),\n ' ',\n _react2.default.createElement('br', null),\n _react2.default.createElement(RoomAlias, { ref: 'alias', alias: this.state.alias, homeserver: domain, onChange: this.onAliasChanged }),\n ' ',\n _react2.default.createElement('br', null),\n _react2.default.createElement(UserSelector, { ref: 'user_selector', selected_users: this.state.invited_users, onChange: this.onInviteChanged }),\n ' ',\n _react2.default.createElement('br', null),\n _react2.default.createElement(Presets, { ref: 'presets', onChange: this.onPresetChanged, preset: this.state.preset }),\n ' ',\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'checkbox', ref: 'is_private', checked: this.state.is_private, onChange: this.onPrivateChanged }),\n (0, _languageHandler._t)('Make this room private')\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'checkbox', ref: 'share_history', checked: this.state.share_history, onChange: this.onShareHistoryChanged }),\n (0, _languageHandler._t)('Share message history with new users')\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateRoom_encrypt' },\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'checkbox', ref: 'encrypt', checked: this.state.encrypt, onChange: this.onEncryptChanged }),\n (0, _languageHandler._t)('Encrypt room')\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(CreateRoomButton, { onCreateRoom: this.onCreateRoom }),\n ' ',\n _react2.default.createElement('br', null)\n ),\n error_box\n )\n );\n }\n }\n});\n//# sourceMappingURL=CreateRoom.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * Component which shows the filtered file using a TimelinePanel\n */\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar FilePanel = _react2.default.createClass({\n displayName: 'FilePanel',\n\n propTypes: {\n roomId: _propTypes2.default.string.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n timelineSet: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this.updateTimelineSet(this.props.roomId);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n if (nextProps.roomId !== this.props.roomId) {\n // otherwise we race between re-rendering the TimelinePanel and setting the new timelineSet.\n //\n // FIXME: this race only happens because of the promise returned by getOrCreateFilter().\n // We should only need to create the containsUrl filter once per login session, so in practice\n // it shouldn't be being done here at all. Then we could just update the timelineSet directly\n // without resetting it first, and speed up room-change.\n this.setState({ timelineSet: null });\n this.updateTimelineSet(nextProps.roomId);\n }\n },\n\n updateTimelineSet: function updateTimelineSet(roomId) {\n var _this = this;\n\n var client = _MatrixClientPeg2.default.get();\n var room = client.getRoom(roomId);\n\n this.noRoom = !room;\n\n if (room) {\n var filter = new _matrixJsSdk2.default.Filter(client.credentials.userId);\n filter.setDefinition({\n \"room\": {\n \"timeline\": {\n \"contains_url\": true,\n \"types\": [\"m.room.message\"]\n }\n }\n });\n\n // FIXME: we shouldn't be doing this every time we change room - see comment above.\n client.getOrCreateFilter(\"FILTER_FILES_\" + client.credentials.userId, filter).then(function (filterId) {\n filter.filterId = filterId;\n var timelineSet = room.getOrCreateFilteredTimelineSet(filter);\n _this.setState({ timelineSet: timelineSet });\n }, function (error) {\n console.error(\"Failed to get or create file panel filter\", error);\n });\n } else {\n console.error(\"Failed to add filtered timelineSet for FilePanel as no room!\");\n }\n },\n\n render: function render() {\n if (_MatrixClientPeg2.default.get().isGuest()) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_FilePanel mx_RoomView_messageListWrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_empty' },\n (0, _languageHandler._t)(\"You must <a>register</a> to use this functionality\", {}, { 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: '#/register', key: 'sub' },\n sub\n );\n } })\n )\n );\n } else if (this.noRoom) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_FilePanel mx_RoomView_messageListWrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_empty' },\n (0, _languageHandler._t)(\"You must join the room to see its files\")\n )\n );\n }\n\n // wrap a TimelinePanel with the jump-to-event bits turned off.\n var TimelinePanel = _index2.default.getComponent(\"structures.TimelinePanel\");\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n\n if (this.state.timelineSet) {\n // console.log(\"rendering TimelinePanel for timelineSet \" + this.state.timelineSet.room.roomId + \" \" +\n // \"(\" + this.state.timelineSet._timelines.join(\", \") + \")\" + \" with key \" + this.props.roomId);\n return _react2.default.createElement(TimelinePanel, { key: \"filepanel_\" + this.props.roomId,\n className: 'mx_FilePanel',\n manageReadReceipts: false,\n manageReadMarkers: false,\n timelineSet: this.state.timelineSet,\n showUrlPreview: false,\n tileShape: 'file_grid',\n empty: (0, _languageHandler._t)('There are no visible files in this room')\n });\n } else {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_FilePanel' },\n _react2.default.createElement(Loader, null)\n );\n }\n }\n});\n\nmodule.exports = FilePanel;\n//# sourceMappingURL=FilePanel.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _HtmlUtils = require('../../HtmlUtils');\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _AccessibleButton = require('../views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _Modal = require('../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _GroupStore = require('../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _FlairStore = require('../../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nvar _GroupAddressPicker = require('../../GroupAddressPicker');\n\nvar _matrixTo = require('../../matrix-to');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LONG_DESC_PLACEHOLDER = (0, _languageHandler._td)('<h1>HTML for your community\\'s page</h1>\\n<p>\\n Use the long description to introduce new members to the community, or distribute\\n some important <a href=\"foo\">links</a>\\n</p>\\n<p>\\n You can even use \\'img\\' tags\\n</p>\\n'); /*\n Copyright 2017 Vector Creations Ltd.\n Copyright 2017, 2018 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar RoomSummaryType = _propTypes2.default.shape({\n room_id: _propTypes2.default.string.isRequired,\n profile: _propTypes2.default.shape({\n name: _propTypes2.default.string,\n avatar_url: _propTypes2.default.string,\n canonical_alias: _propTypes2.default.string\n }).isRequired\n});\n\nvar UserSummaryType = _propTypes2.default.shape({\n summaryInfo: _propTypes2.default.shape({\n user_id: _propTypes2.default.string.isRequired,\n role_id: _propTypes2.default.string,\n avatar_url: _propTypes2.default.string,\n displayname: _propTypes2.default.string\n }).isRequired\n});\n\nvar CategoryRoomList = _react2.default.createClass({\n displayName: 'CategoryRoomList',\n\n props: {\n rooms: _propTypes2.default.arrayOf(RoomSummaryType).isRequired,\n category: _propTypes2.default.shape({\n profile: _propTypes2.default.shape({\n name: _propTypes2.default.string\n }).isRequired\n }),\n groupId: _propTypes2.default.string.isRequired,\n\n // Whether the list should be editable\n editing: _propTypes2.default.bool.isRequired\n },\n\n onAddRoomsToSummaryClicked: function onAddRoomsToSummaryClicked(ev) {\n var _this = this;\n\n ev.preventDefault();\n var AddressPickerDialog = _index2.default.getComponent(\"dialogs.AddressPickerDialog\");\n _Modal2.default.createTrackedDialog('Add Rooms to Group Summary', '', AddressPickerDialog, {\n title: (0, _languageHandler._t)('Add rooms to the community summary'),\n description: (0, _languageHandler._t)(\"Which rooms would you like to add to this summary?\"),\n placeholder: (0, _languageHandler._t)(\"Room name or alias\"),\n button: (0, _languageHandler._t)(\"Add to summary\"),\n pickerType: 'room',\n validAddressTypes: ['mx-room-id'],\n groupId: this.props.groupId,\n onFinished: function onFinished(success, addrs) {\n if (!success) return;\n var errorList = [];\n _bluebird2.default.all(addrs.map(function (addr) {\n return _GroupStore2.default.addRoomToGroupSummary(_this.props.groupId, addr.address).catch(function () {\n errorList.push(addr.address);\n }).reflect();\n })).then(function () {\n if (errorList.length === 0) {\n return;\n }\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to add the following room to the group summary', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to add the following rooms to the summary of %(groupId)s:\", { groupId: _this.props.groupId }),\n description: errorList.join(\", \")\n });\n });\n }\n });\n },\n\n render: function render() {\n var _this2 = this;\n\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var addButton = this.props.editing ? _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_featuredThings_addButton',\n onClick: this.onAddRoomsToSummaryClicked\n },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-create-room.svg', width: '64', height: '64' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_addButton_label' },\n (0, _languageHandler._t)('Add a Room')\n )\n ) : _react2.default.createElement('div', null);\n\n var roomNodes = this.props.rooms.map(function (r) {\n return _react2.default.createElement(FeaturedRoom, {\n key: r.room_id,\n groupId: _this2.props.groupId,\n editing: _this2.props.editing,\n summaryInfo: r });\n });\n\n var catHeader = _react2.default.createElement('div', null);\n if (this.props.category && this.props.category.profile) {\n catHeader = _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_category' },\n this.props.category.profile.name\n );\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_container' },\n catHeader,\n roomNodes,\n addButton\n );\n }\n});\n\nvar FeaturedRoom = _react2.default.createClass({\n displayName: 'FeaturedRoom',\n\n props: {\n summaryInfo: RoomSummaryType.isRequired,\n editing: _propTypes2.default.bool.isRequired,\n groupId: _propTypes2.default.string.isRequired\n },\n\n onClick: function onClick(e) {\n e.preventDefault();\n e.stopPropagation();\n\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_alias: this.props.summaryInfo.profile.canonical_alias,\n room_id: this.props.summaryInfo.room_id\n });\n },\n\n onDeleteClicked: function onDeleteClicked(e) {\n var _this3 = this;\n\n e.preventDefault();\n e.stopPropagation();\n _GroupStore2.default.removeRoomFromGroupSummary(this.props.groupId, this.props.summaryInfo.room_id).catch(function (err) {\n console.error('Error whilst removing room from group summary', err);\n var roomName = _this3.props.summaryInfo.name || _this3.props.summaryInfo.canonical_alias || _this3.props.summaryInfo.room_id;\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to remove room from group summary', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to remove the room from the summary of %(groupId)s\", { groupId: _this3.props.groupId }),\n description: (0, _languageHandler._t)(\"The room '%(roomName)s' could not be removed from the summary.\", { roomName: roomName })\n });\n });\n },\n\n render: function render() {\n var RoomAvatar = _index2.default.getComponent(\"avatars.RoomAvatar\");\n\n var roomName = this.props.summaryInfo.profile.name || this.props.summaryInfo.profile.canonical_alias || (0, _languageHandler._t)(\"Unnamed Room\");\n\n var oobData = {\n roomId: this.props.summaryInfo.room_id,\n avatarUrl: this.props.summaryInfo.profile.avatar_url,\n name: roomName\n };\n\n var permalink = null;\n if (this.props.summaryInfo.profile && this.props.summaryInfo.profile.canonical_alias) {\n permalink = (0, _matrixTo.makeGroupPermalink)(this.props.summaryInfo.profile.canonical_alias);\n }\n\n var roomNameNode = null;\n if (permalink) {\n roomNameNode = _react2.default.createElement(\n 'a',\n { href: permalink, onClick: this.onClick },\n roomName\n );\n } else {\n roomNameNode = _react2.default.createElement(\n 'span',\n null,\n roomName\n );\n }\n\n var deleteButton = this.props.editing ? _react2.default.createElement('img', {\n className: 'mx_GroupView_featuredThing_deleteButton',\n src: 'img/cancel-small.svg',\n width: '14',\n height: '14',\n alt: 'Delete',\n onClick: this.onDeleteClicked }) : _react2.default.createElement('div', null);\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_featuredThing', onClick: this.onClick },\n _react2.default.createElement(RoomAvatar, { oobData: oobData, width: 64, height: 64 }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThing_name' },\n roomNameNode\n ),\n deleteButton\n );\n }\n});\n\nvar RoleUserList = _react2.default.createClass({\n displayName: 'RoleUserList',\n\n props: {\n users: _propTypes2.default.arrayOf(UserSummaryType).isRequired,\n role: _propTypes2.default.shape({\n profile: _propTypes2.default.shape({\n name: _propTypes2.default.string\n }).isRequired\n }),\n groupId: _propTypes2.default.string.isRequired,\n\n // Whether the list should be editable\n editing: _propTypes2.default.bool.isRequired\n },\n\n onAddUsersClicked: function onAddUsersClicked(ev) {\n var _this4 = this;\n\n ev.preventDefault();\n var AddressPickerDialog = _index2.default.getComponent(\"dialogs.AddressPickerDialog\");\n _Modal2.default.createTrackedDialog('Add Users to Group Summary', '', AddressPickerDialog, {\n title: (0, _languageHandler._t)('Add users to the community summary'),\n description: (0, _languageHandler._t)(\"Who would you like to add to this summary?\"),\n placeholder: (0, _languageHandler._t)(\"Name or matrix ID\"),\n button: (0, _languageHandler._t)(\"Add to summary\"),\n validAddressTypes: ['mx-user-id'],\n groupId: this.props.groupId,\n shouldOmitSelf: false,\n onFinished: function onFinished(success, addrs) {\n if (!success) return;\n var errorList = [];\n _bluebird2.default.all(addrs.map(function (addr) {\n return _GroupStore2.default.addUserToGroupSummary(addr.address).catch(function () {\n errorList.push(addr.address);\n }).reflect();\n })).then(function () {\n if (errorList.length === 0) {\n return;\n }\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to add the following users to the community summary', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to add the following users to the summary of %(groupId)s:\", { groupId: _this4.props.groupId }),\n description: errorList.join(\", \")\n });\n });\n }\n });\n },\n\n render: function render() {\n var _this5 = this;\n\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var addButton = this.props.editing ? _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_featuredThings_addButton', onClick: this.onAddUsersClicked },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-create-room.svg', width: '64', height: '64' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_addButton_label' },\n (0, _languageHandler._t)('Add a User')\n )\n ) : _react2.default.createElement('div', null);\n var userNodes = this.props.users.map(function (u) {\n return _react2.default.createElement(FeaturedUser, {\n key: u.user_id,\n summaryInfo: u,\n editing: _this5.props.editing,\n groupId: _this5.props.groupId });\n });\n var roleHeader = _react2.default.createElement('div', null);\n if (this.props.role && this.props.role.profile) {\n roleHeader = _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_category' },\n this.props.role.profile.name\n );\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_container' },\n roleHeader,\n userNodes,\n addButton\n );\n }\n});\n\nvar FeaturedUser = _react2.default.createClass({\n displayName: 'FeaturedUser',\n\n props: {\n summaryInfo: UserSummaryType.isRequired,\n editing: _propTypes2.default.bool.isRequired,\n groupId: _propTypes2.default.string.isRequired\n },\n\n onClick: function onClick(e) {\n e.preventDefault();\n e.stopPropagation();\n\n _dispatcher2.default.dispatch({\n action: 'view_start_chat_or_reuse',\n user_id: this.props.summaryInfo.user_id,\n go_home_on_cancel: false\n });\n },\n\n onDeleteClicked: function onDeleteClicked(e) {\n var _this6 = this;\n\n e.preventDefault();\n e.stopPropagation();\n _GroupStore2.default.removeUserFromGroupSummary(this.props.groupId, this.props.summaryInfo.user_id).catch(function (err) {\n console.error('Error whilst removing user from group summary', err);\n var displayName = _this6.props.summaryInfo.displayname || _this6.props.summaryInfo.user_id;\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to remove user from community summary', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to remove a user from the summary of %(groupId)s\", { groupId: _this6.props.groupId }),\n description: (0, _languageHandler._t)(\"The user '%(displayName)s' could not be removed from the summary.\", { displayName: displayName })\n });\n });\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n var name = this.props.summaryInfo.displayname || this.props.summaryInfo.user_id;\n\n var permalink = (0, _matrixTo.makeUserPermalink)(this.props.summaryInfo.user_id);\n var userNameNode = _react2.default.createElement(\n 'a',\n { href: permalink, onClick: this.onClick },\n name\n );\n var httpUrl = _MatrixClientPeg2.default.get().mxcUrlToHttp(this.props.summaryInfo.avatar_url, 64, 64);\n\n var deleteButton = this.props.editing ? _react2.default.createElement('img', {\n className: 'mx_GroupView_featuredThing_deleteButton',\n src: 'img/cancel-small.svg',\n width: '14',\n height: '14',\n alt: 'Delete',\n onClick: this.onDeleteClicked }) : _react2.default.createElement('div', null);\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_featuredThing', onClick: this.onClick },\n _react2.default.createElement(BaseAvatar, { name: name, url: httpUrl, width: 64, height: 64 }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThing_name' },\n userNameNode\n ),\n deleteButton\n );\n }\n});\n\nvar GROUP_JOINPOLICY_OPEN = \"open\";\nvar GROUP_JOINPOLICY_INVITE = \"invite\";\n\nexports.default = _react2.default.createClass({\n displayName: 'GroupView',\n\n propTypes: {\n groupId: _propTypes2.default.string.isRequired,\n // Whether this is the first time the group admin is viewing the group\n groupIsNew: _propTypes2.default.bool\n },\n\n childContextTypes: {\n groupStore: _propTypes2.default.instanceOf(_GroupStore2.default)\n },\n\n getInitialState: function getInitialState() {\n return {\n summary: null,\n isGroupPublicised: null,\n isUserPrivileged: null,\n groupRooms: null,\n groupRoomsLoading: null,\n error: null,\n editing: false,\n saving: false,\n uploadingAvatar: false,\n avatarChanged: false,\n membershipBusy: false,\n publicityBusy: false,\n inviterProfile: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n this._matrixClient = _MatrixClientPeg2.default.get();\n this._matrixClient.on(\"Group.myMembership\", this._onGroupMyMembership);\n\n this._changeAvatarComponent = null;\n this._initGroupStore(this.props.groupId, true);\n\n this._dispatcherRef = _dispatcher2.default.register(this._onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n this._matrixClient.removeListener(\"Group.myMembership\", this._onGroupMyMembership);\n _dispatcher2.default.unregister(this._dispatcherRef);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n var _this7 = this;\n\n if (this.props.groupId != newProps.groupId) {\n this.setState({\n summary: null,\n error: null\n }, function () {\n _this7._initGroupStore(newProps.groupId);\n });\n }\n },\n\n _onGroupMyMembership: function _onGroupMyMembership(group) {\n if (this._unmounted || group.groupId !== this.props.groupId) return;\n if (group.myMembership === 'leave') {\n // Leave settings - the user might have clicked the \"Leave\" button\n this._closeSettings();\n }\n this.setState({ membershipBusy: false });\n },\n\n _initGroupStore: function _initGroupStore(groupId, firstInit) {\n var _this8 = this;\n\n var group = this._matrixClient.getGroup(groupId);\n if (group && group.inviter && group.inviter.userId) {\n this._fetchInviterProfile(group.inviter.userId);\n }\n _GroupStore2.default.registerListener(groupId, this.onGroupStoreUpdated.bind(this, firstInit));\n var willDoOnboarding = false;\n // XXX: This should be more fluxy - let's get the error from GroupStore .getError or something\n _GroupStore2.default.on('error', function (err, errorGroupId) {\n if (_this8._unmounted || groupId !== errorGroupId) return;\n if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN' && !willDoOnboarding) {\n _dispatcher2.default.dispatch({\n action: 'do_after_sync_prepared',\n deferred_action: {\n action: 'view_group',\n group_id: groupId\n }\n });\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n willDoOnboarding = true;\n }\n _this8.setState({\n summary: null,\n error: err,\n editing: false\n });\n });\n },\n\n onGroupStoreUpdated: function onGroupStoreUpdated(firstInit) {\n var _this9 = this;\n\n if (this._unmounted) return;\n var summary = _GroupStore2.default.getSummary(this.props.groupId);\n if (summary.profile) {\n // Default profile fields should be \"\" for later sending to the server (which\n // requires that the fields are strings, not null)\n [\"avatar_url\", \"long_description\", \"name\", \"short_description\"].forEach(function (k) {\n summary.profile[k] = summary.profile[k] || \"\";\n });\n }\n this.setState({\n summary: summary,\n summaryLoading: !_GroupStore2.default.isStateReady(this.props.groupId, _GroupStore2.default.STATE_KEY.Summary),\n isGroupPublicised: _GroupStore2.default.getGroupPublicity(this.props.groupId),\n isUserPrivileged: _GroupStore2.default.isUserPrivileged(this.props.groupId),\n groupRooms: _GroupStore2.default.getGroupRooms(this.props.groupId),\n groupRoomsLoading: !_GroupStore2.default.isStateReady(this.props.groupId, _GroupStore2.default.STATE_KEY.GroupRooms),\n isUserMember: _GroupStore2.default.getGroupMembers(this.props.groupId).some(function (m) {\n return m.userId === _this9._matrixClient.credentials.userId;\n }),\n error: null\n });\n // XXX: This might not work but this.props.groupIsNew unused anyway\n if (this.props.groupIsNew && firstInit) {\n this._onEditClick();\n }\n },\n _fetchInviterProfile: function _fetchInviterProfile(userId) {\n var _this10 = this;\n\n this.setState({\n inviterProfileBusy: true\n });\n this._matrixClient.getProfileInfo(userId).then(function (resp) {\n if (_this10._unmounted) return;\n _this10.setState({\n inviterProfile: {\n avatarUrl: resp.avatar_url,\n displayName: resp.displayname\n }\n });\n }).catch(function (e) {\n console.error('Error getting group inviter profile', e);\n }).finally(function () {\n if (_this10._unmounted) return;\n _this10.setState({\n inviterProfileBusy: false\n });\n });\n },\n\n\n _onShowRhsClick: function _onShowRhsClick(ev) {\n _dispatcher2.default.dispatch({ action: 'show_right_panel' });\n },\n\n _onEditClick: function _onEditClick() {\n this.setState({\n editing: true,\n profileForm: (0, _assign2.default)({}, this.state.summary.profile),\n joinableForm: {\n policyType: this.state.summary.profile.is_openly_joinable ? GROUP_JOINPOLICY_OPEN : GROUP_JOINPOLICY_INVITE\n }\n });\n _dispatcher2.default.dispatch({\n action: 'panel_disable',\n sideDisabled: true\n });\n },\n\n _onShareClick: function _onShareClick() {\n var ShareDialog = _index2.default.getComponent(\"dialogs.ShareDialog\");\n _Modal2.default.createTrackedDialog('share community dialog', '', ShareDialog, {\n target: this._matrixClient.getGroup(this.props.groupId)\n });\n },\n\n _onCancelClick: function _onCancelClick() {\n this._closeSettings();\n },\n\n _onAction: function _onAction(payload) {\n switch (payload.action) {\n // NOTE: close_settings is an app-wide dispatch; as it is dispatched from MatrixChat\n case 'close_settings':\n this.setState({\n editing: false,\n profileForm: null\n });\n break;\n default:\n break;\n }\n },\n _closeSettings: function _closeSettings() {\n _dispatcher2.default.dispatch({ action: 'close_settings' });\n },\n\n\n _onNameChange: function _onNameChange(value) {\n var newProfileForm = (0, _assign2.default)(this.state.profileForm, { name: value });\n this.setState({\n profileForm: newProfileForm\n });\n },\n\n _onShortDescChange: function _onShortDescChange(value) {\n var newProfileForm = (0, _assign2.default)(this.state.profileForm, { short_description: value });\n this.setState({\n profileForm: newProfileForm\n });\n },\n\n _onLongDescChange: function _onLongDescChange(e) {\n var newProfileForm = (0, _assign2.default)(this.state.profileForm, { long_description: e.target.value });\n this.setState({\n profileForm: newProfileForm\n });\n },\n\n _onAvatarSelected: function _onAvatarSelected(ev) {\n var _this11 = this;\n\n var file = ev.target.files[0];\n if (!file) return;\n\n this.setState({ uploadingAvatar: true });\n this._matrixClient.uploadContent(file).then(function (url) {\n var newProfileForm = (0, _assign2.default)(_this11.state.profileForm, { avatar_url: url });\n _this11.setState({\n uploadingAvatar: false,\n profileForm: newProfileForm,\n\n // Indicate that FlairStore needs to be poked to show this change\n // in TagTile (TagPanel), Flair and GroupTile (MyGroups).\n avatarChanged: true\n });\n }).catch(function (e) {\n _this11.setState({ uploadingAvatar: false });\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to upload avatar image\", e);\n _Modal2.default.createTrackedDialog('Failed to upload image', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: (0, _languageHandler._t)('Failed to upload image')\n });\n }).done();\n },\n\n _onJoinableChange: function _onJoinableChange(ev) {\n this.setState({\n joinableForm: { policyType: ev.target.value }\n });\n },\n\n _onSaveClick: function _onSaveClick() {\n var _this12 = this;\n\n this.setState({ saving: true });\n var savePromise = this.state.isUserPrivileged ? this._saveGroup() : _bluebird2.default.resolve();\n savePromise.then(function (result) {\n _this12.setState({\n saving: false,\n editing: false,\n summary: null\n });\n _dispatcher2.default.dispatch({ action: 'panel_disable' });\n _this12._initGroupStore(_this12.props.groupId);\n\n if (_this12.state.avatarChanged) {\n // XXX: Evil - poking a store should be done from an async action\n _FlairStore2.default.refreshGroupProfile(_this12._matrixClient, _this12.props.groupId);\n }\n }).catch(function (e) {\n _this12.setState({\n saving: false\n });\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to save community profile\", e);\n _Modal2.default.createTrackedDialog('Failed to update group', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: (0, _languageHandler._t)('Failed to update community')\n });\n }).finally(function () {\n _this12.setState({\n avatarChanged: false\n });\n }).done();\n },\n\n _saveGroup: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(this._matrixClient.setGroupProfile(this.props.groupId, this.state.profileForm));\n\n case 2:\n _context.next = 4;\n return (0, _bluebird.resolve)(this._matrixClient.setGroupJoinPolicy(this.props.groupId, {\n type: this.state.joinableForm.policyType\n }));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function _saveGroup() {\n return _ref.apply(this, arguments);\n }\n\n return _saveGroup;\n }(),\n\n _onAcceptInviteClick: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var _this13 = this;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n this.setState({ membershipBusy: true });\n\n // Wait 500ms to prevent flashing. Do this before sending a request otherwise we risk the\n // spinner disappearing after we have fetched new group data.\n _context2.next = 3;\n return (0, _bluebird.resolve)(_bluebird2.default.delay(500));\n\n case 3:\n\n _GroupStore2.default.acceptGroupInvite(this.props.groupId).then(function () {\n // don't reset membershipBusy here: wait for the membership change to come down the sync\n }).catch(function (e) {\n _this13.setState({ membershipBusy: false });\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Error accepting invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Unable to accept invite\")\n });\n });\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function _onAcceptInviteClick() {\n return _ref2.apply(this, arguments);\n }\n\n return _onAcceptInviteClick;\n }(),\n\n _onRejectInviteClick: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var _this14 = this;\n\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n this.setState({ membershipBusy: true });\n\n // Wait 500ms to prevent flashing. Do this before sending a request otherwise we risk the\n // spinner disappearing after we have fetched new group data.\n _context3.next = 3;\n return (0, _bluebird.resolve)(_bluebird2.default.delay(500));\n\n case 3:\n\n _GroupStore2.default.leaveGroup(this.props.groupId).then(function () {\n // don't reset membershipBusy here: wait for the membership change to come down the sync\n }).catch(function (e) {\n _this14.setState({ membershipBusy: false });\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Error rejecting invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Unable to reject invite\")\n });\n });\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function _onRejectInviteClick() {\n return _ref3.apply(this, arguments);\n }\n\n return _onRejectInviteClick;\n }(),\n\n _onJoinClick: function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n var _this15 = this;\n\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!this._matrixClient.isGuest()) {\n _context4.next = 3;\n break;\n }\n\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n return _context4.abrupt('return');\n\n case 3:\n\n this.setState({ membershipBusy: true });\n\n // Wait 500ms to prevent flashing. Do this before sending a request otherwise we risk the\n // spinner disappearing after we have fetched new group data.\n _context4.next = 6;\n return (0, _bluebird.resolve)(_bluebird2.default.delay(500));\n\n case 6:\n\n _GroupStore2.default.joinGroup(this.props.groupId).then(function () {\n // don't reset membershipBusy here: wait for the membership change to come down the sync\n }).catch(function (e) {\n _this15.setState({ membershipBusy: false });\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Error joining room', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Unable to join community\")\n });\n });\n\n case 7:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function _onJoinClick() {\n return _ref4.apply(this, arguments);\n }\n\n return _onJoinClick;\n }(),\n\n _onLeaveClick: function _onLeaveClick() {\n var _this16 = this;\n\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('Leave Group', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Leave Community\"),\n description: (0, _languageHandler._t)(\"Leave %(groupName)s?\", { groupName: this.props.groupId }),\n button: (0, _languageHandler._t)(\"Leave\"),\n danger: true,\n onFinished: function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(confirmed) {\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n if (confirmed) {\n _context5.next = 2;\n break;\n }\n\n return _context5.abrupt('return');\n\n case 2:\n\n _this16.setState({ membershipBusy: true });\n\n // Wait 500ms to prevent flashing. Do this before sending a request otherwise we risk the\n // spinner disappearing after we have fetched new group data.\n _context5.next = 5;\n return (0, _bluebird.resolve)(_bluebird2.default.delay(500));\n\n case 5:\n\n _GroupStore2.default.leaveGroup(_this16.props.groupId).then(function () {\n // don't reset membershipBusy here: wait for the membership change to come down the sync\n }).catch(function (e) {\n _this16.setState({ membershipBusy: false });\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Error leaving community', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Unable to leave community\")\n });\n });\n\n case 6:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, _this16);\n }));\n\n return function onFinished(_x) {\n return _ref5.apply(this, arguments);\n };\n }()\n });\n },\n\n _onAddRoomsClick: function _onAddRoomsClick() {\n (0, _GroupAddressPicker.showGroupAddRoomDialog)(this.props.groupId);\n },\n\n _getGroupSection: function _getGroupSection() {\n var groupSettingsSectionClasses = (0, _classnames2.default)({\n \"mx_GroupView_group\": this.state.editing,\n \"mx_GroupView_group_disabled\": this.state.editing && !this.state.isUserPrivileged\n });\n\n var header = this.state.editing ? _react2.default.createElement(\n 'h2',\n null,\n ' ',\n (0, _languageHandler._t)('Community Settings'),\n ' '\n ) : _react2.default.createElement('div', null);\n var changeDelayWarning = this.state.editing && this.state.isUserPrivileged ? _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_changeDelayWarning' },\n (0, _languageHandler._t)('Changes made to your community <bold1>name</bold1> and <bold2>avatar</bold2> ' + 'might not be seen by other users for up to 30 minutes.', {}, {\n 'bold1': function bold1(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n ' ',\n sub,\n ' '\n );\n },\n 'bold2': function bold2(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n ' ',\n sub,\n ' '\n );\n }\n })\n ) : _react2.default.createElement('div', null);\n return _react2.default.createElement(\n 'div',\n { className: groupSettingsSectionClasses },\n header,\n changeDelayWarning,\n this._getJoinableNode(),\n this._getLongDescriptionNode(),\n this._getRoomsNode()\n );\n },\n\n _getRoomsNode: function _getRoomsNode() {\n var RoomDetailList = _index2.default.getComponent('rooms.RoomDetailList');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var TintableSvg = _index2.default.getComponent('elements.TintableSvg');\n var Spinner = _index2.default.getComponent('elements.Spinner');\n var ToolTipButton = _index2.default.getComponent('elements.ToolTipButton');\n\n var roomsHelpNode = this.state.editing ? _react2.default.createElement(ToolTipButton, { helpText: (0, _languageHandler._t)('These rooms are displayed to community members on the community page. ' + 'Community members can join the rooms by clicking on them.') }) : _react2.default.createElement('div', null);\n\n var addRoomRow = this.state.editing ? _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_GroupView_rooms_header_addRow',\n onClick: this._onAddRoomsClick\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_rooms_header_addRow_button' },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-room-add.svg', width: '24', height: '24' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_rooms_header_addRow_label' },\n (0, _languageHandler._t)('Add rooms to this community')\n )\n ) : _react2.default.createElement('div', null);\n var roomDetailListClassName = (0, _classnames2.default)({\n \"mx_fadable\": true,\n \"mx_fadable_faded\": this.state.editing\n });\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_rooms' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_rooms_header' },\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Rooms'),\n roomsHelpNode\n ),\n addRoomRow\n ),\n this.state.groupRoomsLoading ? _react2.default.createElement(Spinner, null) : _react2.default.createElement(RoomDetailList, {\n rooms: this.state.groupRooms,\n className: roomDetailListClassName })\n );\n },\n\n _getFeaturedRoomsNode: function _getFeaturedRoomsNode() {\n var _this17 = this;\n\n var summary = this.state.summary;\n\n var defaultCategoryRooms = [];\n var categoryRooms = {};\n summary.rooms_section.rooms.forEach(function (r) {\n if (r.category_id === null) {\n defaultCategoryRooms.push(r);\n } else {\n var list = categoryRooms[r.category_id];\n if (list === undefined) {\n list = [];\n categoryRooms[r.category_id] = list;\n }\n list.push(r);\n }\n });\n\n var defaultCategoryNode = _react2.default.createElement(CategoryRoomList, {\n rooms: defaultCategoryRooms,\n groupId: this.props.groupId,\n editing: this.state.editing });\n var categoryRoomNodes = (0, _keys2.default)(categoryRooms).map(function (catId) {\n var cat = summary.rooms_section.categories[catId];\n return _react2.default.createElement(CategoryRoomList, {\n key: catId,\n rooms: categoryRooms[catId],\n category: cat,\n groupId: _this17.props.groupId,\n editing: _this17.state.editing });\n });\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_header' },\n (0, _languageHandler._t)('Featured Rooms:')\n ),\n defaultCategoryNode,\n categoryRoomNodes\n );\n },\n\n _getFeaturedUsersNode: function _getFeaturedUsersNode() {\n var _this18 = this;\n\n var summary = this.state.summary;\n\n var noRoleUsers = [];\n var roleUsers = {};\n summary.users_section.users.forEach(function (u) {\n if (u.role_id === null) {\n noRoleUsers.push(u);\n } else {\n var list = roleUsers[u.role_id];\n if (list === undefined) {\n list = [];\n roleUsers[u.role_id] = list;\n }\n list.push(u);\n }\n });\n\n var noRoleNode = _react2.default.createElement(RoleUserList, {\n users: noRoleUsers,\n groupId: this.props.groupId,\n editing: this.state.editing });\n var roleUserNodes = (0, _keys2.default)(roleUsers).map(function (roleId) {\n var role = summary.users_section.roles[roleId];\n return _react2.default.createElement(RoleUserList, {\n key: roleId,\n users: roleUsers[roleId],\n role: role,\n groupId: _this18.props.groupId,\n editing: _this18.state.editing });\n });\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_header' },\n (0, _languageHandler._t)('Featured Users:')\n ),\n noRoleNode,\n roleUserNodes\n );\n },\n\n _getMembershipSection: function _getMembershipSection() {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n\n var group = this._matrixClient.getGroup(this.props.groupId);\n\n if (group && group.myMembership === 'invite') {\n if (this.state.membershipBusy || this.state.inviterProfileBusy) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membershipSection' },\n _react2.default.createElement(Spinner, null)\n );\n }\n var httpInviterAvatar = this.state.inviterProfile ? this._matrixClient.mxcUrlToHttp(this.state.inviterProfile.avatarUrl, 36, 36) : null;\n\n var inviterName = group.inviter.userId;\n if (this.state.inviterProfile) {\n inviterName = this.state.inviterProfile.displayName || group.inviter.userId;\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membershipSection mx_GroupView_membershipSection_invited' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membershipSubSection' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membershipSection_description' },\n _react2.default.createElement(BaseAvatar, { url: httpInviterAvatar,\n name: inviterName,\n width: 36,\n height: 36\n }),\n (0, _languageHandler._t)(\"%(inviter)s has invited you to join this community\", {\n inviter: inviterName\n })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membership_buttonContainer' },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_textButton mx_RoomHeader_textButton',\n onClick: this._onAcceptInviteClick\n },\n (0, _languageHandler._t)(\"Accept\")\n ),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_textButton mx_RoomHeader_textButton',\n onClick: this._onRejectInviteClick\n },\n (0, _languageHandler._t)(\"Decline\")\n )\n )\n )\n );\n }\n\n var membershipContainerExtraClasses = void 0;\n var membershipButtonExtraClasses = void 0;\n var membershipButtonTooltip = void 0;\n var membershipButtonText = void 0;\n var membershipButtonOnClick = void 0;\n\n // User is not in the group\n if ((!group || group.myMembership === 'leave') && this.state.summary && this.state.summary.profile && Boolean(this.state.summary.profile.is_openly_joinable)) {\n membershipButtonText = (0, _languageHandler._t)(\"Join this community\");\n membershipButtonOnClick = this._onJoinClick;\n\n membershipButtonExtraClasses = 'mx_GroupView_joinButton';\n membershipContainerExtraClasses = 'mx_GroupView_membershipSection_leave';\n } else if (group && group.myMembership === 'join' && this.state.editing) {\n membershipButtonText = (0, _languageHandler._t)(\"Leave this community\");\n membershipButtonOnClick = this._onLeaveClick;\n membershipButtonTooltip = this.state.isUserPrivileged ? (0, _languageHandler._t)(\"You are an administrator of this community\") : (0, _languageHandler._t)(\"You are a member of this community\");\n\n membershipButtonExtraClasses = {\n 'mx_GroupView_leaveButton': true,\n 'mx_RoomHeader_textButton_danger': this.state.isUserPrivileged\n };\n membershipContainerExtraClasses = 'mx_GroupView_membershipSection_joined';\n } else {\n return null;\n }\n\n var membershipButtonClasses = (0, _classnames2.default)(['mx_RoomHeader_textButton', 'mx_GroupView_textButton'], membershipButtonExtraClasses);\n\n var membershipContainerClasses = (0, _classnames2.default)('mx_GroupView_membershipSection', membershipContainerExtraClasses);\n\n return _react2.default.createElement(\n 'div',\n { className: membershipContainerClasses },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membershipSubSection' },\n this.state.membershipBusy ? _react2.default.createElement(Spinner, null) : _react2.default.createElement('div', null),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membership_buttonContainer' },\n _react2.default.createElement(\n _AccessibleButton2.default,\n {\n className: membershipButtonClasses,\n onClick: membershipButtonOnClick,\n title: membershipButtonTooltip\n },\n membershipButtonText\n )\n )\n )\n );\n },\n\n _getJoinableNode: function _getJoinableNode() {\n return this.state.editing ? _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Who can join this community?'),\n this.state.groupJoinableLoading ? _react2.default.createElement(InlineSpinner, null) : _react2.default.createElement('div', null)\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio',\n value: GROUP_JOINPOLICY_INVITE,\n checked: this.state.joinableForm.policyType === GROUP_JOINPOLICY_INVITE,\n onChange: this._onJoinableChange\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_label_text' },\n (0, _languageHandler._t)('Only people who have been invited')\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio',\n value: GROUP_JOINPOLICY_OPEN,\n checked: this.state.joinableForm.policyType === GROUP_JOINPOLICY_OPEN,\n onChange: this._onJoinableChange\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_label_text' },\n (0, _languageHandler._t)('Everyone')\n )\n )\n )\n ) : null;\n },\n\n _getLongDescriptionNode: function _getLongDescriptionNode() {\n var summary = this.state.summary;\n var description = null;\n if (summary.profile && summary.profile.long_description) {\n description = (0, _HtmlUtils.sanitizedHtmlNode)(summary.profile.long_description);\n } else if (this.state.isUserPrivileged) {\n description = _react2.default.createElement(\n 'div',\n {\n className: 'mx_GroupView_groupDesc_placeholder',\n onClick: this._onEditClick\n },\n (0, _languageHandler._t)('Your community hasn\\'t got a Long Description, a HTML page to show to community members.<br />' + 'Click here to open settings and give it one!', {}, { 'br': _react2.default.createElement('br', null) })\n );\n }\n var groupDescEditingClasses = (0, _classnames2.default)({\n \"mx_GroupView_groupDesc\": true,\n \"mx_GroupView_groupDesc_disabled\": !this.state.isUserPrivileged\n });\n\n return this.state.editing ? _react2.default.createElement(\n 'div',\n { className: groupDescEditingClasses },\n _react2.default.createElement(\n 'h3',\n null,\n ' ',\n (0, _languageHandler._t)(\"Long Description (HTML)\"),\n ' '\n ),\n _react2.default.createElement('textarea', {\n value: this.state.profileForm.long_description,\n placeholder: (0, _languageHandler._t)(LONG_DESC_PLACEHOLDER),\n onChange: this._onLongDescChange,\n tabIndex: '4',\n key: 'editLongDesc'\n })\n ) : _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_groupDesc' },\n description\n );\n },\n\n render: function render() {\n var GroupAvatar = _index2.default.getComponent(\"avatars.GroupAvatar\");\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n\n if (this.state.summaryLoading && this.state.error === null || this.state.saving) {\n return _react2.default.createElement(Spinner, null);\n } else if (this.state.summary) {\n var summary = this.state.summary;\n\n var avatarNode = void 0;\n var nameNode = void 0;\n var shortDescNode = void 0;\n var rightButtons = [];\n if (this.state.editing && this.state.isUserPrivileged) {\n var avatarImage = void 0;\n if (this.state.uploadingAvatar) {\n avatarImage = _react2.default.createElement(Spinner, null);\n } else {\n var _GroupAvatar = _index2.default.getComponent('avatars.GroupAvatar');\n avatarImage = _react2.default.createElement(_GroupAvatar, { groupId: this.props.groupId,\n groupName: this.state.profileForm.name,\n groupAvatarUrl: this.state.profileForm.avatar_url,\n width: 48, height: 48, resizeMethod: 'crop'\n });\n }\n\n avatarNode = _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_avatarPicker' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'avatarInput', className: 'mx_GroupView_avatarPicker_label' },\n avatarImage\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_avatarPicker_edit' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'avatarInput', className: 'mx_GroupView_avatarPicker_label' },\n _react2.default.createElement('img', { src: 'img/camera.svg',\n alt: (0, _languageHandler._t)(\"Upload avatar\"), title: (0, _languageHandler._t)(\"Upload avatar\"),\n width: '17', height: '15' })\n ),\n _react2.default.createElement('input', { id: 'avatarInput', className: 'mx_GroupView_uploadInput', type: 'file', onChange: this._onAvatarSelected })\n )\n );\n\n var EditableText = _index2.default.getComponent(\"elements.EditableText\");\n\n nameNode = _react2.default.createElement(EditableText, { ref: 'nameEditor',\n className: 'mx_GroupView_editable',\n placeholderClassName: 'mx_GroupView_placeholder',\n placeholder: (0, _languageHandler._t)('Community Name'),\n blurToCancel: false,\n initialValue: this.state.profileForm.name,\n onValueChanged: this._onNameChange,\n tabIndex: '1',\n dir: 'auto' });\n\n shortDescNode = _react2.default.createElement(EditableText, { ref: 'descriptionEditor',\n className: 'mx_GroupView_editable',\n placeholderClassName: 'mx_GroupView_placeholder',\n placeholder: (0, _languageHandler._t)(\"Description\"),\n blurToCancel: false,\n initialValue: this.state.profileForm.short_description,\n onValueChanged: this._onShortDescChange,\n tabIndex: '2',\n dir: 'auto' });\n } else {\n var onGroupHeaderItemClick = this.state.isUserMember ? this._onEditClick : null;\n var groupAvatarUrl = summary.profile ? summary.profile.avatar_url : null;\n var groupName = summary.profile ? summary.profile.name : null;\n avatarNode = _react2.default.createElement(GroupAvatar, {\n groupId: this.props.groupId,\n groupAvatarUrl: groupAvatarUrl,\n groupName: groupName,\n onClick: onGroupHeaderItemClick,\n width: 48, height: 48\n });\n if (summary.profile && summary.profile.name) {\n nameNode = _react2.default.createElement(\n 'div',\n { onClick: onGroupHeaderItemClick },\n _react2.default.createElement(\n 'span',\n null,\n summary.profile.name\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_GroupView_header_groupid' },\n '(',\n this.props.groupId,\n ')'\n )\n );\n } else {\n nameNode = _react2.default.createElement(\n 'span',\n { onClick: onGroupHeaderItemClick },\n this.props.groupId\n );\n }\n if (summary.profile && summary.profile.short_description) {\n shortDescNode = _react2.default.createElement(\n 'span',\n { onClick: onGroupHeaderItemClick },\n summary.profile.short_description\n );\n }\n }\n\n if (this.state.editing) {\n rightButtons.push(_react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_textButton mx_RoomHeader_textButton',\n onClick: this._onSaveClick, key: '_saveButton'\n },\n (0, _languageHandler._t)('Save')\n ));\n rightButtons.push(_react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_cancelButton', onClick: this._onCancelClick, key: '_cancelButton' },\n _react2.default.createElement('img', { src: 'img/cancel.svg', className: 'mx_filterFlipColor',\n width: '18', height: '18', alt: (0, _languageHandler._t)(\"Cancel\") })\n ));\n } else {\n if (summary.user && summary.user.membership === 'join') {\n rightButtons.push(_react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupHeader_button',\n onClick: this._onEditClick, title: (0, _languageHandler._t)(\"Community Settings\"), key: '_editButton'\n },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-settings-room.svg', width: '16', height: '16' })\n ));\n }\n rightButtons.push(_react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupHeader_button', onClick: this._onShareClick, title: (0, _languageHandler._t)('Share Community'), key: '_shareButton' },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-share.svg', width: '16', height: '16' })\n ));\n if (this.props.collapsedRhs) {\n rightButtons.push(_react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupHeader_button',\n onClick: this._onShowRhsClick, title: (0, _languageHandler._t)('Show panel'), key: '_maximiseButton'\n },\n _react2.default.createElement(TintableSvg, { src: 'img/maximise.svg', width: '10', height: '16' })\n ));\n }\n }\n\n var headerClasses = {\n mx_GroupView_header: true,\n mx_GroupView_header_view: !this.state.editing,\n mx_GroupView_header_isUserMember: this.state.isUserMember\n };\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView' },\n _react2.default.createElement(\n 'div',\n { className: (0, _classnames2.default)(headerClasses) },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_header_leftCol' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_header_avatar' },\n avatarNode\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_header_info' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_header_name' },\n nameNode\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_header_shortDesc' },\n shortDescNode\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_header_rightCol' },\n rightButtons\n )\n ),\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { className: 'mx_GroupView_body' },\n this._getMembershipSection(),\n this._getGroupSection()\n )\n );\n } else if (this.state.error) {\n if (this.state.error.httpStatus === 404) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_error' },\n (0, _languageHandler._t)('Community %(groupId)s not found', { groupId: this.props.groupId })\n );\n } else {\n var extraText = void 0;\n if (this.state.error.errcode === 'M_UNRECOGNIZED') {\n extraText = _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('This Home server does not support communities')\n );\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_error' },\n (0, _languageHandler._t)('Failed to load %(groupId)s', { groupId: this.props.groupId }),\n extraText\n );\n }\n } else {\n console.error(\"Invalid state for GroupView\");\n return _react2.default.createElement('div', null);\n }\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupView.js.map","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map characters to HTML entities. */\nvar htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n\n/**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\nvar escapeHtmlChar = basePropertyOf(htmlEscapes);\n\nmodule.exports = escapeHtmlChar;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\n(function(factory) {\n\n // Find the global object for export to both the browser and web workers.\n var globalObject = typeof window === 'object' && window ||\n typeof self === 'object' && self;\n\n // Setup highlight.js for different environments. First is Node.js or\n // CommonJS.\n if(typeof exports !== 'undefined') {\n factory(exports);\n } else if(globalObject) {\n // Export hljs globally even when using AMD for cases when this script\n // is loaded with others that may still expect a global hljs.\n globalObject.hljs = factory({});\n\n // Finally register the global hljs with AMD.\n if(typeof define === 'function' && define.amd) {\n define([], function() {\n return globalObject.hljs;\n });\n }\n }\n\n}(function(hljs) {\n // Convenience variables for build-in objects\n var ArrayProto = [],\n objectKeys = Object.keys;\n\n // Global internal variables used within the highlight.js library.\n var languages = {},\n aliases = {};\n\n // Regular expressions used throughout the highlight.js library.\n var noHighlightRe = /^(no-?highlight|plain|text)$/i,\n languagePrefixRe = /\\blang(?:uage)?-([\\w-]+)\\b/i,\n fixMarkupRe = /((^(<[^>]+>|\\t|)+|(?:\\n)))/gm;\n\n var spanEndTag = '</span>';\n\n // Global options used when within external APIs. This is modified when\n // calling the `hljs.configure` function.\n var options = {\n classPrefix: 'hljs-',\n tabReplace: null,\n useBR: false,\n languages: undefined\n };\n\n\n /* Utility functions */\n\n function escape(value) {\n return value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n }\n\n function tag(node) {\n return node.nodeName.toLowerCase();\n }\n\n function testRe(re, lexeme) {\n var match = re && re.exec(lexeme);\n return match && match.index === 0;\n }\n\n function isNotHighlighted(language) {\n return noHighlightRe.test(language);\n }\n\n function blockLanguage(block) {\n var i, match, length, _class;\n var classes = block.className + ' ';\n\n classes += block.parentNode ? block.parentNode.className : '';\n\n // language-* takes precedence over non-prefixed class names.\n match = languagePrefixRe.exec(classes);\n if (match) {\n return getLanguage(match[1]) ? match[1] : 'no-highlight';\n }\n\n classes = classes.split(/\\s+/);\n\n for (i = 0, length = classes.length; i < length; i++) {\n _class = classes[i]\n\n if (isNotHighlighted(_class) || getLanguage(_class)) {\n return _class;\n }\n }\n }\n\n function inherit(parent) { // inherit(parent, override_obj, override_obj, ...)\n var key;\n var result = {};\n var objects = Array.prototype.slice.call(arguments, 1);\n\n for (key in parent)\n result[key] = parent[key];\n objects.forEach(function(obj) {\n for (key in obj)\n result[key] = obj[key];\n });\n return result;\n }\n\n /* Stream merging */\n\n function nodeStream(node) {\n var result = [];\n (function _nodeStream(node, offset) {\n for (var child = node.firstChild; child; child = child.nextSibling) {\n if (child.nodeType === 3)\n offset += child.nodeValue.length;\n else if (child.nodeType === 1) {\n result.push({\n event: 'start',\n offset: offset,\n node: child\n });\n offset = _nodeStream(child, offset);\n // Prevent void elements from having an end tag that would actually\n // double them in the output. There are more void elements in HTML\n // but we list only those realistically expected in code display.\n if (!tag(child).match(/br|hr|img|input/)) {\n result.push({\n event: 'stop',\n offset: offset,\n node: child\n });\n }\n }\n }\n return offset;\n })(node, 0);\n return result;\n }\n\n function mergeStreams(original, highlighted, value) {\n var processed = 0;\n var result = '';\n var nodeStack = [];\n\n function selectStream() {\n if (!original.length || !highlighted.length) {\n return original.length ? original : highlighted;\n }\n if (original[0].offset !== highlighted[0].offset) {\n return (original[0].offset < highlighted[0].offset) ? original : highlighted;\n }\n\n /*\n To avoid starting the stream just before it should stop the order is\n ensured that original always starts first and closes last:\n\n if (event1 == 'start' && event2 == 'start')\n return original;\n if (event1 == 'start' && event2 == 'stop')\n return highlighted;\n if (event1 == 'stop' && event2 == 'start')\n return original;\n if (event1 == 'stop' && event2 == 'stop')\n return highlighted;\n\n ... which is collapsed to:\n */\n return highlighted[0].event === 'start' ? original : highlighted;\n }\n\n function open(node) {\n function attr_str(a) {return ' ' + a.nodeName + '=\"' + escape(a.value).replace('\"', '"') + '\"';}\n result += '<' + tag(node) + ArrayProto.map.call(node.attributes, attr_str).join('') + '>';\n }\n\n function close(node) {\n result += '</' + tag(node) + '>';\n }\n\n function render(event) {\n (event.event === 'start' ? open : close)(event.node);\n }\n\n while (original.length || highlighted.length) {\n var stream = selectStream();\n result += escape(value.substring(processed, stream[0].offset));\n processed = stream[0].offset;\n if (stream === original) {\n /*\n On any opening or closing tag of the original markup we first close\n the entire highlighted node stack, then render the original tag along\n with all the following original tags at the same offset and then\n reopen all the tags on the highlighted stack.\n */\n nodeStack.reverse().forEach(close);\n do {\n render(stream.splice(0, 1)[0]);\n stream = selectStream();\n } while (stream === original && stream.length && stream[0].offset === processed);\n nodeStack.reverse().forEach(open);\n } else {\n if (stream[0].event === 'start') {\n nodeStack.push(stream[0].node);\n } else {\n nodeStack.pop();\n }\n render(stream.splice(0, 1)[0]);\n }\n }\n return result + escape(value.substr(processed));\n }\n\n /* Initialization */\n\n function expand_mode(mode) {\n if (mode.variants && !mode.cached_variants) {\n mode.cached_variants = mode.variants.map(function(variant) {\n return inherit(mode, {variants: null}, variant);\n });\n }\n return mode.cached_variants || (mode.endsWithParent && [inherit(mode)]) || [mode];\n }\n\n function compileLanguage(language) {\n\n function reStr(re) {\n return (re && re.source) || re;\n }\n\n function langRe(value, global) {\n return new RegExp(\n reStr(value),\n 'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '')\n );\n }\n\n function compileMode(mode, parent) {\n if (mode.compiled)\n return;\n mode.compiled = true;\n\n mode.keywords = mode.keywords || mode.beginKeywords;\n if (mode.keywords) {\n var compiled_keywords = {};\n\n var flatten = function(className, str) {\n if (language.case_insensitive) {\n str = str.toLowerCase();\n }\n str.split(' ').forEach(function(kw) {\n var pair = kw.split('|');\n compiled_keywords[pair[0]] = [className, pair[1] ? Number(pair[1]) : 1];\n });\n };\n\n if (typeof mode.keywords === 'string') { // string\n flatten('keyword', mode.keywords);\n } else {\n objectKeys(mode.keywords).forEach(function (className) {\n flatten(className, mode.keywords[className]);\n });\n }\n mode.keywords = compiled_keywords;\n }\n mode.lexemesRe = langRe(mode.lexemes || /\\w+/, true);\n\n if (parent) {\n if (mode.beginKeywords) {\n mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')\\\\b';\n }\n if (!mode.begin)\n mode.begin = /\\B|\\b/;\n mode.beginRe = langRe(mode.begin);\n if (mode.endSameAsBegin)\n mode.end = mode.begin;\n if (!mode.end && !mode.endsWithParent)\n mode.end = /\\B|\\b/;\n if (mode.end)\n mode.endRe = langRe(mode.end);\n mode.terminator_end = reStr(mode.end) || '';\n if (mode.endsWithParent && parent.terminator_end)\n mode.terminator_end += (mode.end ? '|' : '') + parent.terminator_end;\n }\n if (mode.illegal)\n mode.illegalRe = langRe(mode.illegal);\n if (mode.relevance == null)\n mode.relevance = 1;\n if (!mode.contains) {\n mode.contains = [];\n }\n mode.contains = Array.prototype.concat.apply([], mode.contains.map(function(c) {\n return expand_mode(c === 'self' ? mode : c)\n }));\n mode.contains.forEach(function(c) {compileMode(c, mode);});\n\n if (mode.starts) {\n compileMode(mode.starts, parent);\n }\n\n var terminators =\n mode.contains.map(function(c) {\n return c.beginKeywords ? '\\\\.?(' + c.begin + ')\\\\.?' : c.begin;\n })\n .concat([mode.terminator_end, mode.illegal])\n .map(reStr)\n .filter(Boolean);\n mode.terminators = terminators.length ? langRe(terminators.join('|'), true) : {exec: function(/*s*/) {return null;}};\n }\n\n compileMode(language);\n }\n\n /*\n Core highlighting function. Accepts a language name, or an alias, and a\n string with the code to highlight. Returns an object with the following\n properties:\n\n - relevance (int)\n - value (an HTML string with highlighting markup)\n\n */\n function highlight(name, value, ignore_illegals, continuation) {\n\n function escapeRe(value) {\n return new RegExp(value.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'm');\n }\n\n function subMode(lexeme, mode) {\n var i, length;\n\n for (i = 0, length = mode.contains.length; i < length; i++) {\n if (testRe(mode.contains[i].beginRe, lexeme)) {\n if (mode.contains[i].endSameAsBegin) {\n mode.contains[i].endRe = escapeRe( mode.contains[i].beginRe.exec(lexeme)[0] );\n }\n return mode.contains[i];\n }\n }\n }\n\n function endOfMode(mode, lexeme) {\n if (testRe(mode.endRe, lexeme)) {\n while (mode.endsParent && mode.parent) {\n mode = mode.parent;\n }\n return mode;\n }\n if (mode.endsWithParent) {\n return endOfMode(mode.parent, lexeme);\n }\n }\n\n function isIllegal(lexeme, mode) {\n return !ignore_illegals && testRe(mode.illegalRe, lexeme);\n }\n\n function keywordMatch(mode, match) {\n var match_str = language.case_insensitive ? match[0].toLowerCase() : match[0];\n return mode.keywords.hasOwnProperty(match_str) && mode.keywords[match_str];\n }\n\n function buildSpan(classname, insideSpan, leaveOpen, noPrefix) {\n var classPrefix = noPrefix ? '' : options.classPrefix,\n openSpan = '<span class=\"' + classPrefix,\n closeSpan = leaveOpen ? '' : spanEndTag\n\n openSpan += classname + '\">';\n\n return openSpan + insideSpan + closeSpan;\n }\n\n function processKeywords() {\n var keyword_match, last_index, match, result;\n\n if (!top.keywords)\n return escape(mode_buffer);\n\n result = '';\n last_index = 0;\n top.lexemesRe.lastIndex = 0;\n match = top.lexemesRe.exec(mode_buffer);\n\n while (match) {\n result += escape(mode_buffer.substring(last_index, match.index));\n keyword_match = keywordMatch(top, match);\n if (keyword_match) {\n relevance += keyword_match[1];\n result += buildSpan(keyword_match[0], escape(match[0]));\n } else {\n result += escape(match[0]);\n }\n last_index = top.lexemesRe.lastIndex;\n match = top.lexemesRe.exec(mode_buffer);\n }\n return result + escape(mode_buffer.substr(last_index));\n }\n\n function processSubLanguage() {\n var explicit = typeof top.subLanguage === 'string';\n if (explicit && !languages[top.subLanguage]) {\n return escape(mode_buffer);\n }\n\n var result = explicit ?\n highlight(top.subLanguage, mode_buffer, true, continuations[top.subLanguage]) :\n highlightAuto(mode_buffer, top.subLanguage.length ? top.subLanguage : undefined);\n\n // Counting embedded language score towards the host language may be disabled\n // with zeroing the containing mode relevance. Usecase in point is Markdown that\n // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n // score.\n if (top.relevance > 0) {\n relevance += result.relevance;\n }\n if (explicit) {\n continuations[top.subLanguage] = result.top;\n }\n return buildSpan(result.language, result.value, false, true);\n }\n\n function processBuffer() {\n result += (top.subLanguage != null ? processSubLanguage() : processKeywords());\n mode_buffer = '';\n }\n\n function startNewMode(mode) {\n result += mode.className? buildSpan(mode.className, '', true): '';\n top = Object.create(mode, {parent: {value: top}});\n }\n\n function processLexeme(buffer, lexeme) {\n\n mode_buffer += buffer;\n\n if (lexeme == null) {\n processBuffer();\n return 0;\n }\n\n var new_mode = subMode(lexeme, top);\n if (new_mode) {\n if (new_mode.skip) {\n mode_buffer += lexeme;\n } else {\n if (new_mode.excludeBegin) {\n mode_buffer += lexeme;\n }\n processBuffer();\n if (!new_mode.returnBegin && !new_mode.excludeBegin) {\n mode_buffer = lexeme;\n }\n }\n startNewMode(new_mode, lexeme);\n return new_mode.returnBegin ? 0 : lexeme.length;\n }\n\n var end_mode = endOfMode(top, lexeme);\n if (end_mode) {\n var origin = top;\n if (origin.skip) {\n mode_buffer += lexeme;\n } else {\n if (!(origin.returnEnd || origin.excludeEnd)) {\n mode_buffer += lexeme;\n }\n processBuffer();\n if (origin.excludeEnd) {\n mode_buffer = lexeme;\n }\n }\n do {\n if (top.className) {\n result += spanEndTag;\n }\n if (!top.skip && !top.subLanguage) {\n relevance += top.relevance;\n }\n top = top.parent;\n } while (top !== end_mode.parent);\n if (end_mode.starts) {\n if (end_mode.endSameAsBegin) {\n end_mode.starts.endRe = end_mode.endRe;\n }\n startNewMode(end_mode.starts, '');\n }\n return origin.returnEnd ? 0 : lexeme.length;\n }\n\n if (isIllegal(lexeme, top))\n throw new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.className || '<unnamed>') + '\"');\n\n /*\n Parser should not reach this point as all types of lexemes should be caught\n earlier, but if it does due to some bug make sure it advances at least one\n character forward to prevent infinite looping.\n */\n mode_buffer += lexeme;\n return lexeme.length || 1;\n }\n\n var language = getLanguage(name);\n if (!language) {\n throw new Error('Unknown language: \"' + name + '\"');\n }\n\n compileLanguage(language);\n var top = continuation || language;\n var continuations = {}; // keep continuations for sub-languages\n var result = '', current;\n for(current = top; current !== language; current = current.parent) {\n if (current.className) {\n result = buildSpan(current.className, '', true) + result;\n }\n }\n var mode_buffer = '';\n var relevance = 0;\n try {\n var match, count, index = 0;\n while (true) {\n top.terminators.lastIndex = index;\n match = top.terminators.exec(value);\n if (!match)\n break;\n count = processLexeme(value.substring(index, match.index), match[0]);\n index = match.index + count;\n }\n processLexeme(value.substr(index));\n for(current = top; current.parent; current = current.parent) { // close dangling modes\n if (current.className) {\n result += spanEndTag;\n }\n }\n return {\n relevance: relevance,\n value: result,\n language: name,\n top: top\n };\n } catch (e) {\n if (e.message && e.message.indexOf('Illegal') !== -1) {\n return {\n relevance: 0,\n value: escape(value)\n };\n } else {\n throw e;\n }\n }\n }\n\n /*\n Highlighting with language detection. Accepts a string with the code to\n highlight. Returns an object with the following properties:\n\n - language (detected language)\n - relevance (int)\n - value (an HTML string with highlighting markup)\n - second_best (object with the same structure for second-best heuristically\n detected language, may be absent)\n\n */\n function highlightAuto(text, languageSubset) {\n languageSubset = languageSubset || options.languages || objectKeys(languages);\n var result = {\n relevance: 0,\n value: escape(text)\n };\n var second_best = result;\n languageSubset.filter(getLanguage).filter(autoDetection).forEach(function(name) {\n var current = highlight(name, text, false);\n current.language = name;\n if (current.relevance > second_best.relevance) {\n second_best = current;\n }\n if (current.relevance > result.relevance) {\n second_best = result;\n result = current;\n }\n });\n if (second_best.language) {\n result.second_best = second_best;\n }\n return result;\n }\n\n /*\n Post-processing of the highlighted markup:\n\n - replace TABs with something more useful\n - replace real line-breaks with '<br>' for non-pre containers\n\n */\n function fixMarkup(value) {\n return !(options.tabReplace || options.useBR)\n ? value\n : value.replace(fixMarkupRe, function(match, p1) {\n if (options.useBR && match === '\\n') {\n return '<br>';\n } else if (options.tabReplace) {\n return p1.replace(/\\t/g, options.tabReplace);\n }\n return '';\n });\n }\n\n function buildClassName(prevClassName, currentLang, resultLang) {\n var language = currentLang ? aliases[currentLang] : resultLang,\n result = [prevClassName.trim()];\n\n if (!prevClassName.match(/\\bhljs\\b/)) {\n result.push('hljs');\n }\n\n if (prevClassName.indexOf(language) === -1) {\n result.push(language);\n }\n\n return result.join(' ').trim();\n }\n\n /*\n Applies highlighting to a DOM node containing code. Accepts a DOM node and\n two optional parameters for fixMarkup.\n */\n function highlightBlock(block) {\n var node, originalStream, result, resultNode, text;\n var language = blockLanguage(block);\n\n if (isNotHighlighted(language))\n return;\n\n if (options.useBR) {\n node = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');\n node.innerHTML = block.innerHTML.replace(/\\n/g, '').replace(/<br[ \\/]*>/g, '\\n');\n } else {\n node = block;\n }\n text = node.textContent;\n result = language ? highlight(language, text, true) : highlightAuto(text);\n\n originalStream = nodeStream(node);\n if (originalStream.length) {\n resultNode = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');\n resultNode.innerHTML = result.value;\n result.value = mergeStreams(originalStream, nodeStream(resultNode), text);\n }\n result.value = fixMarkup(result.value);\n\n block.innerHTML = result.value;\n block.className = buildClassName(block.className, language, result.language);\n block.result = {\n language: result.language,\n re: result.relevance\n };\n if (result.second_best) {\n block.second_best = {\n language: result.second_best.language,\n re: result.second_best.relevance\n };\n }\n }\n\n /*\n Updates highlight.js global options with values passed in the form of an object.\n */\n function configure(user_options) {\n options = inherit(options, user_options);\n }\n\n /*\n Applies highlighting to all <pre><code>..</code></pre> blocks on a page.\n */\n function initHighlighting() {\n if (initHighlighting.called)\n return;\n initHighlighting.called = true;\n\n var blocks = document.querySelectorAll('pre code');\n ArrayProto.forEach.call(blocks, highlightBlock);\n }\n\n /*\n Attaches highlighting to the page load event.\n */\n function initHighlightingOnLoad() {\n addEventListener('DOMContentLoaded', initHighlighting, false);\n addEventListener('load', initHighlighting, false);\n }\n\n function registerLanguage(name, language) {\n var lang = languages[name] = language(hljs);\n if (lang.aliases) {\n lang.aliases.forEach(function(alias) {aliases[alias] = name;});\n }\n }\n\n function listLanguages() {\n return objectKeys(languages);\n }\n\n function getLanguage(name) {\n name = (name || '').toLowerCase();\n return languages[name] || languages[aliases[name]];\n }\n\n function autoDetection(name) {\n name = (name || '').toLowerCase();\n return !languages[name].disableAutodetect;\n }\n\n /* Interface definition */\n\n hljs.highlight = highlight;\n hljs.highlightAuto = highlightAuto;\n hljs.fixMarkup = fixMarkup;\n hljs.highlightBlock = highlightBlock;\n hljs.configure = configure;\n hljs.initHighlighting = initHighlighting;\n hljs.initHighlightingOnLoad = initHighlightingOnLoad;\n hljs.registerLanguage = registerLanguage;\n hljs.listLanguages = listLanguages;\n hljs.getLanguage = getLanguage;\n hljs.autoDetection = autoDetection;\n hljs.inherit = inherit;\n\n // Common regexps\n hljs.IDENT_RE = '[a-zA-Z]\\\\w*';\n hljs.UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\n hljs.NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\n hljs.C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\n hljs.BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\n hljs.RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n // Common modes\n hljs.BACKSLASH_ESCAPE = {\n begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n };\n hljs.APOS_STRING_MODE = {\n className: 'string',\n begin: '\\'', end: '\\'',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n hljs.QUOTE_STRING_MODE = {\n className: 'string',\n begin: '\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n hljs.PHRASAL_WORDS_MODE = {\n begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n };\n hljs.COMMENT = function (begin, end, inherits) {\n var mode = hljs.inherit(\n {\n className: 'comment',\n begin: begin, end: end,\n contains: []\n },\n inherits || {}\n );\n mode.contains.push(hljs.PHRASAL_WORDS_MODE);\n mode.contains.push({\n className: 'doctag',\n begin: '(?:TODO|FIXME|NOTE|BUG|XXX):',\n relevance: 0\n });\n return mode;\n };\n hljs.C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$');\n hljs.C_BLOCK_COMMENT_MODE = hljs.COMMENT('/\\\\*', '\\\\*/');\n hljs.HASH_COMMENT_MODE = hljs.COMMENT('#', '$');\n hljs.NUMBER_MODE = {\n className: 'number',\n begin: hljs.NUMBER_RE,\n relevance: 0\n };\n hljs.C_NUMBER_MODE = {\n className: 'number',\n begin: hljs.C_NUMBER_RE,\n relevance: 0\n };\n hljs.BINARY_NUMBER_MODE = {\n className: 'number',\n begin: hljs.BINARY_NUMBER_RE,\n relevance: 0\n };\n hljs.CSS_NUMBER_MODE = {\n className: 'number',\n begin: hljs.NUMBER_RE + '(' +\n '%|em|ex|ch|rem' +\n '|vw|vh|vmin|vmax' +\n '|cm|mm|in|pt|pc|px' +\n '|deg|grad|rad|turn' +\n '|s|ms' +\n '|Hz|kHz' +\n '|dpi|dpcm|dppx' +\n ')?',\n relevance: 0\n };\n hljs.REGEXP_MODE = {\n className: 'regexp',\n begin: /\\//, end: /\\/[gimuy]*/,\n illegal: /\\n/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {\n begin: /\\[/, end: /\\]/,\n relevance: 0,\n contains: [hljs.BACKSLASH_ESCAPE]\n }\n ]\n };\n hljs.TITLE_MODE = {\n className: 'title',\n begin: hljs.IDENT_RE,\n relevance: 0\n };\n hljs.UNDERSCORE_TITLE_MODE = {\n className: 'title',\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n };\n hljs.METHOD_GUARD = {\n // excludes method names from keyword processing\n begin: '\\\\.\\\\s*' + hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n };\n\n return hljs;\n}));\n","module.exports = function(hljs){\n\n // общий паттерн для определения идентификаторов\n var UNDERSCORE_IDENT_RE = '[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]+';\n \n // v7 уникальные ключевые слова, отсутствующие в v8 ==> keyword\n var v7_keywords =\n 'далее ';\n\n // v8 ключевые слова ==> keyword\n var v8_keywords =\n 'возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли ' +\n 'конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт ';\n\n // keyword : ключевые слова\n var KEYWORD = v7_keywords + v8_keywords;\n \n // v7 уникальные директивы, отсутствующие в v8 ==> meta-keyword\n var v7_meta_keywords =\n 'загрузитьизфайла ';\n\n // v8 ключевые слова в инструкциях препроцессора, директивах компиляции, аннотациях ==> meta-keyword\n var v8_meta_keywords =\n 'вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер ' +\n 'наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед ' +\n 'после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент ';\n\n // meta-keyword : ключевые слова в инструкциях препроцессора, директивах компиляции, аннотациях\n var METAKEYWORD = v7_meta_keywords + v8_meta_keywords;\n\n // v7 системные константы ==> built_in\n var v7_system_constants =\n 'разделительстраниц разделительстрок символтабуляции ';\n \n // v7 уникальные методы глобального контекста, отсутствующие в v8 ==> built_in\n var v7_global_context_methods =\n 'ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов ' +\n 'датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя ' +\n 'кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца ' +\n 'коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид ' +\n 'назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца ' +\n 'начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов ' +\n 'основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута ' +\n 'получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта ' +\n 'префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына ' +\n 'рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента ' +\n 'счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон ';\n \n // v8 методы глобального контекста ==> built_in\n var v8_global_context_methods =\n 'acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока ' +\n 'xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ' +\n 'ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации ' +\n 'выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода ' +\n 'деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы ' +\n 'загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации ' +\n 'заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию ' +\n 'значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла ' +\n 'изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке ' +\n 'каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку ' +\n 'кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты ' +\n 'конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы ' +\n 'копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти ' +\n 'найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы ' +\n 'началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя ' +\n 'начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты ' +\n 'начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов ' +\n 'начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя ' +\n 'начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога ' +\n 'начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией ' +\n 'начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы ' +\n 'номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения ' +\n 'обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении ' +\n 'отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения ' +\n 'открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально ' +\n 'отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа ' +\n 'перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту ' +\n 'подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения ' +\n 'подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки ' +\n 'показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение ' +\n 'показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя ' +\n 'получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса ' +\n 'получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора ' +\n 'получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса ' +\n 'получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации ' +\n 'получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла ' +\n 'получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации ' +\n 'получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления ' +\n 'получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу ' +\n 'получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы ' +\n 'получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет ' +\n 'получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима ' +\n 'получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения ' +\n 'получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути ' +\n 'получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы ' +\n 'получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю ' +\n 'получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных ' +\n 'получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию ' +\n 'получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище ' +\n 'поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода ' +\n 'представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение ' +\n 'прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока ' +\n 'рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных ' +\n 'раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени ' +\n 'смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить ' +\n 'состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс ' +\n 'строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений '+\n 'стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах ' +\n 'текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации ' +\n 'текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы ' +\n 'удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим ' +\n 'установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту ' +\n 'установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных ' +\n 'установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации ' +\n 'установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения ' +\n 'установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования ' +\n 'установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима ' +\n 'установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим ' +\n 'установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией ' +\n 'установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы ' +\n 'установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса ' +\n 'формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища ';\n\n // v8 свойства глобального контекста ==> built_in\n var v8_global_context_property =\n 'wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы ' +\n 'внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль ' +\n 'документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты ' +\n 'историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений ' +\n 'отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик ' +\n 'планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок ' +\n 'рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений ' +\n 'регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа ' +\n 'средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек ' +\n 'хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков ' +\n 'хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек ';\n\n // built_in : встроенные или библиотечные объекты (константы, классы, функции)\n var BUILTIN =\n v7_system_constants +\n v7_global_context_methods + v8_global_context_methods +\n v8_global_context_property;\n \n // v8 системные наборы значений ==> class\n var v8_system_sets_of_values =\n 'webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля ';\n\n // v8 системные перечисления - интерфейсные ==> class\n var v8_system_enums_interface =\n 'автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий ' +\n 'анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы ' +\n 'вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы ' +\n 'виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя ' +\n 'видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение ' +\n 'горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы ' +\n 'группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания ' +\n 'интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки ' +\n 'используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы ' +\n 'источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева ' +\n 'начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ' +\n 'ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме ' +\n 'отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы ' +\n 'отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы ' +\n 'отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы ' +\n 'отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска ' +\n 'отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования ' +\n 'отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта ' +\n 'отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы ' +\n 'поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы ' +\n 'поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы ' +\n 'положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы ' +\n 'положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы ' +\n 'положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском ' +\n 'положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы ' +\n 'размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта ' +\n 'режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты ' +\n 'режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения ' +\n 'режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра ' +\n 'режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения ' +\n 'режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы ' +\n 'режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки ' +\n 'режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание ' +\n 'сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы ' +\n 'способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление ' +\n 'статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы ' +\n 'типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы ' +\n 'типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления ' +\n 'типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы ' +\n 'типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы ' +\n 'типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений ' +\n 'типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы ' +\n 'типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоединенияточекдиаграммы ' +\n 'типсоединительнойлинии типстороныэлементаграфическойсхемы типформыотчета типшкалырадарнойдиаграммы ' +\n 'факторлиниитрендадиаграммы фигуракнопки фигурыграфическойсхемы фиксациявтаблице форматдняшкалывремени ' +\n 'форматкартинки ширинаподчиненныхэлементовформы ';\n\n // v8 системные перечисления - свойства прикладных объектов ==> class\n var v8_system_enums_objects_properties =\n 'виддвижениябухгалтерии виддвижениянакопления видпериодарегистрарасчета видсчета видточкимаршрутабизнеспроцесса ' +\n 'использованиеагрегатарегистранакопления использованиегруппиэлементов использованиережимапроведения ' +\n 'использованиесреза периодичностьагрегатарегистранакопления режимавтовремя режимзаписидокумента режимпроведениядокумента ';\n\n // v8 системные перечисления - планы обмена ==> class\n var v8_system_enums_exchange_plans =\n 'авторегистрацияизменений допустимыйномерсообщения отправкаэлементаданных получениеэлементаданных ';\n\n // v8 системные перечисления - табличный документ ==> class\n var v8_system_enums_tabular_document =\n 'использованиерасшифровкитабличногодокумента ориентациястраницы положениеитоговколоноксводнойтаблицы ' +\n 'положениеитоговстроксводнойтаблицы положениетекстаотносительнокартинки расположениезаголовкагруппировкитабличногодокумента ' +\n 'способчтениязначенийтабличногодокумента типдвустороннейпечати типзаполненияобластитабличногодокумента ' +\n 'типкурсоровтабличногодокумента типлиниирисункатабличногодокумента типлинииячейкитабличногодокумента ' +\n 'типнаправленияпереходатабличногодокумента типотображениявыделениятабличногодокумента типотображениялинийсводнойтаблицы ' +\n 'типразмещениятекстатабличногодокумента типрисункатабличногодокумента типсмещениятабличногодокумента ' +\n 'типузоратабличногодокумента типфайлатабличногодокумента точностьпечати чередованиерасположениястраниц ';\n\n // v8 системные перечисления - планировщик ==> class\n var v8_system_enums_sheduler =\n 'отображениевремениэлементовпланировщика ';\n\n // v8 системные перечисления - форматированный документ ==> class\n var v8_system_enums_formatted_document =\n 'типфайлаформатированногодокумента ';\n\n // v8 системные перечисления - запрос ==> class\n var v8_system_enums_query =\n 'обходрезультатазапроса типзаписизапроса ';\n\n // v8 системные перечисления - построитель отчета ==> class\n var v8_system_enums_report_builder =\n 'видзаполнениярасшифровкипостроителяотчета типдобавленияпредставлений типизмеренияпостроителяотчета типразмещенияитогов ';\n\n // v8 системные перечисления - работа с файлами ==> class\n var v8_system_enums_files =\n 'доступкфайлу режимдиалогавыборафайла режимоткрытияфайла ';\n\n // v8 системные перечисления - построитель запроса ==> class\n var v8_system_enums_query_builder =\n 'типизмеренияпостроителязапроса ';\n\n // v8 системные перечисления - анализ данных ==> class\n var v8_system_enums_data_analysis =\n 'видданныханализа методкластеризации типединицыинтервалавременианализаданных типзаполнениятаблицырезультатаанализаданных ' +\n 'типиспользованиячисловыхзначенийанализаданных типисточникаданныхпоискаассоциаций типколонкианализаданныхдереворешений ' +\n 'типколонкианализаданныхкластеризация типколонкианализаданныхобщаястатистика типколонкианализаданныхпоискассоциаций ' +\n 'типколонкианализаданныхпоискпоследовательностей типколонкимоделипрогноза типмерырасстоянияанализаданных ' +\n 'типотсеченияправилассоциации типполяанализаданных типстандартизациианализаданных типупорядочиванияправилассоциациианализаданных ' +\n 'типупорядочиванияшаблоновпоследовательностейанализаданных типупрощениядереварешений ';\n\n // v8 системные перечисления - xml, json, xs, dom, xdto, web-сервисы ==> class\n var v8_system_enums_xml_json_xs_dom_xdto_ws =\n 'wsнаправлениепараметра вариантxpathxs вариантзаписидатыjson вариантпростоготипаxs видгруппымоделиxs видфасетаxdto ' +\n 'действиепостроителяdom завершенностьпростоготипаxs завершенностьсоставноготипаxs завершенностьсхемыxs запрещенныеподстановкиxs ' +\n 'исключениягруппподстановкиxs категорияиспользованияатрибутаxs категорияограниченияидентичностиxs категорияограниченияпространствименxs ' +\n 'методнаследованияxs модельсодержимогоxs назначениетипаxml недопустимыеподстановкиxs обработкапробельныхсимволовxs обработкасодержимогоxs ' +\n 'ограничениезначенияxs параметрыотбораузловdom переносстрокjson позициявдокументеdom пробельныесимволыxml типатрибутаxml типзначенияjson ' +\n 'типканоническогоxml типкомпонентыxs типпроверкиxml типрезультатаdomxpath типузлаdom типузлаxml формаxml формапредставленияxs ' +\n 'форматдатыjson экранированиесимволовjson ';\n\n // v8 системные перечисления - система компоновки данных ==> class\n var v8_system_enums_data_composition_system =\n 'видсравнениякомпоновкиданных действиеобработкирасшифровкикомпоновкиданных направлениесортировкикомпоновкиданных ' +\n 'расположениевложенныхэлементоврезультатакомпоновкиданных расположениеитоговкомпоновкиданных расположениегруппировкикомпоновкиданных ' +\n 'расположениеполейгруппировкикомпоновкиданных расположениеполякомпоновкиданных расположениереквизитовкомпоновкиданных ' +\n 'расположениересурсовкомпоновкиданных типбухгалтерскогоостаткакомпоновкиданных типвыводатекстакомпоновкиданных ' +\n 'типгруппировкикомпоновкиданных типгруппыэлементовотборакомпоновкиданных типдополненияпериодакомпоновкиданных ' +\n 'типзаголовкаполейкомпоновкиданных типмакетагруппировкикомпоновкиданных типмакетаобластикомпоновкиданных типостаткакомпоновкиданных ' +\n 'типпериодакомпоновкиданных типразмещениятекстакомпоновкиданных типсвязинаборовданныхкомпоновкиданных типэлементарезультатакомпоновкиданных ' +\n 'расположениелегендыдиаграммыкомпоновкиданных типпримененияотборакомпоновкиданных режимотображенияэлементанастройкикомпоновкиданных ' +\n 'режимотображениянастроеккомпоновкиданных состояниеэлементанастройкикомпоновкиданных способвосстановлениянастроеккомпоновкиданных ' +\n 'режимкомпоновкирезультата использованиепараметракомпоновкиданных автопозицияресурсовкомпоновкиданных '+\n 'вариантиспользованиягруппировкикомпоновкиданных расположениересурсоввдиаграммекомпоновкиданных фиксациякомпоновкиданных ' +\n 'использованиеусловногооформлениякомпоновкиданных ';\n\n // v8 системные перечисления - почта ==> class\n var v8_system_enums_email =\n 'важностьинтернетпочтовогосообщения обработкатекстаинтернетпочтовогосообщения способкодированияинтернетпочтовоговложения ' +\n 'способкодированиянеasciiсимволовинтернетпочтовогосообщения типтекстапочтовогосообщения протоколинтернетпочты ' +\n 'статусразборапочтовогосообщения ';\n\n // v8 системные перечисления - журнал регистрации ==> class\n var v8_system_enums_logbook =\n 'режимтранзакциизаписижурналарегистрации статустранзакциизаписижурналарегистрации уровеньжурналарегистрации ';\n\n // v8 системные перечисления - криптография ==> class\n var v8_system_enums_cryptography =\n 'расположениехранилищасертификатовкриптографии режимвключениясертификатовкриптографии режимпроверкисертификатакриптографии ' +\n 'типхранилищасертификатовкриптографии ';\n\n // v8 системные перечисления - ZIP ==> class\n var v8_system_enums_zip =\n 'кодировкаименфайловвzipфайле методсжатияzip методшифрованияzip режимвосстановленияпутейфайловzip режимобработкиподкаталоговzip ' +\n 'режимсохраненияпутейzip уровеньсжатияzip ';\n\n // v8 системные перечисления - \n // Блокировка данных, Фоновые задания, Автоматизированное тестирование,\n // Доставляемые уведомления, Встроенные покупки, Интернет, Работа с двоичными данными ==> class\n var v8_system_enums_other =\n 'звуковоеоповещение направлениепереходакстроке позициявпотоке порядокбайтов режимблокировкиданных режимуправленияблокировкойданных ' +\n 'сервисвстроенныхпокупок состояниефоновогозадания типподписчикадоставляемыхуведомлений уровеньиспользованиязащищенногосоединенияftp ';\n\n // v8 системные перечисления - схема запроса ==> class\n var v8_system_enums_request_schema =\n 'направлениепорядкасхемызапроса типдополненияпериодамисхемызапроса типконтрольнойточкисхемызапроса типобъединениясхемызапроса ' +\n 'типпараметрадоступнойтаблицысхемызапроса типсоединениясхемызапроса ';\n\n // v8 системные перечисления - свойства объектов метаданных ==> class\n var v8_system_enums_properties_of_metadata_objects =\n 'httpметод автоиспользованиеобщегореквизита автопрефиксномеразадачи вариантвстроенногоязыка видиерархии видрегистранакопления ' +\n 'видтаблицывнешнегоисточникаданных записьдвиженийприпроведении заполнениепоследовательностей индексирование ' +\n 'использованиебазыпланавидоврасчета использованиебыстроговыбора использованиеобщегореквизита использованиеподчинения ' +\n 'использованиеполнотекстовогопоиска использованиеразделяемыхданныхобщегореквизита использованиереквизита ' +\n 'назначениеиспользованияприложения назначениерасширенияконфигурации направлениепередачи обновлениепредопределенныхданных ' +\n 'оперативноепроведение основноепредставлениевидарасчета основноепредставлениевидахарактеристики основноепредставлениезадачи ' +\n 'основноепредставлениепланаобмена основноепредставлениесправочника основноепредставлениесчета перемещениеграницыприпроведении ' +\n 'периодичностьномерабизнеспроцесса периодичностьномерадокумента периодичностьрегистрарасчета периодичностьрегистрасведений ' +\n 'повторноеиспользованиевозвращаемыхзначений полнотекстовыйпоискпривводепостроке принадлежностьобъекта проведение ' +\n 'разделениеаутентификацииобщегореквизита разделениеданныхобщегореквизита разделениерасширенийконфигурацииобщегореквизита '+\n 'режимавтонумерацииобъектов режимзаписирегистра режимиспользованиямодальности ' +\n 'режимиспользованиясинхронныхвызововрасширенийплатформыивнешнихкомпонент режимповторногоиспользованиясеансов ' +\n 'режимполученияданныхвыборапривводепостроке режимсовместимости режимсовместимостиинтерфейса ' +\n 'режимуправленияблокировкойданныхпоумолчанию сериикодовпланавидовхарактеристик сериикодовпланасчетов ' +\n 'сериикодовсправочника созданиепривводе способвыбора способпоискастрокипривводепостроке способредактирования ' +\n 'типданныхтаблицывнешнегоисточникаданных типкодапланавидоврасчета типкодасправочника типмакета типномерабизнеспроцесса ' +\n 'типномерадокумента типномеразадачи типформы удалениедвижений ';\n\n // v8 системные перечисления - разные ==> class\n var v8_system_enums_differents =\n 'важностьпроблемыприменениярасширенияконфигурации вариантинтерфейсаклиентскогоприложения вариантмасштабаформклиентскогоприложения ' +\n 'вариантосновногошрифтаклиентскогоприложения вариантстандартногопериода вариантстандартнойдатыначала видграницы видкартинки ' +\n 'видотображенияполнотекстовогопоиска видрамки видсравнения видцвета видчисловогозначения видшрифта допустимаядлина допустимыйзнак ' +\n 'использованиеbyteordermark использованиеметаданныхполнотекстовогопоиска источникрасширенийконфигурации клавиша кодвозвратадиалога ' +\n 'кодировкаxbase кодировкатекста направлениепоиска направлениесортировки обновлениепредопределенныхданных обновлениеприизмененииданных ' +\n 'отображениепанелиразделов проверказаполнения режимдиалогавопрос режимзапускаклиентскогоприложения режимокругления режимоткрытияформприложения ' +\n 'режимполнотекстовогопоиска скоростьклиентскогосоединения состояниевнешнегоисточникаданных состояниеобновленияконфигурациибазыданных ' +\n 'способвыборасертификатаwindows способкодированиястроки статуссообщения типвнешнейкомпоненты типплатформы типповеденияклавишиenter ' +\n 'типэлементаинформацииовыполненииобновленияконфигурациибазыданных уровеньизоляциитранзакций хешфункция частидаты';\n\n // class: встроенные наборы значений, системные перечисления (содержат дочерние значения, обращения к которым через разыменование)\n var CLASS =\n v8_system_sets_of_values +\n v8_system_enums_interface +\n v8_system_enums_objects_properties +\n v8_system_enums_exchange_plans +\n v8_system_enums_tabular_document +\n v8_system_enums_sheduler +\n v8_system_enums_formatted_document +\n v8_system_enums_query +\n v8_system_enums_report_builder +\n v8_system_enums_files +\n v8_system_enums_query_builder +\n v8_system_enums_data_analysis +\n v8_system_enums_xml_json_xs_dom_xdto_ws +\n v8_system_enums_data_composition_system +\n v8_system_enums_email +\n v8_system_enums_logbook +\n v8_system_enums_cryptography +\n v8_system_enums_zip +\n v8_system_enums_other +\n v8_system_enums_request_schema +\n v8_system_enums_properties_of_metadata_objects +\n v8_system_enums_differents;\n\n // v8 общие объекты (у объектов есть конструктор, экземпляры создаются методом НОВЫЙ) ==> type\n var v8_shared_object =\n 'comобъект ftpсоединение httpзапрос httpсервисответ httpсоединение wsопределения wsпрокси xbase анализданных аннотацияxs ' +\n 'блокировкаданных буфердвоичныхданных включениеxs выражениекомпоновкиданных генераторслучайныхчисел географическаясхема ' +\n 'географическиекоординаты графическаясхема группамоделиxs данныерасшифровкикомпоновкиданных двоичныеданные дендрограмма ' +\n 'диаграмма диаграммаганта диалогвыборафайла диалогвыборацвета диалогвыборашрифта диалограсписаниярегламентногозадания ' +\n 'диалогредактированиястандартногопериода диапазон документdom документhtml документацияxs доставляемоеуведомление ' +\n 'записьdom записьfastinfoset записьhtml записьjson записьxml записьzipфайла записьданных записьтекста записьузловdom ' +\n 'запрос защищенноесоединениеopenssl значенияполейрасшифровкикомпоновкиданных извлечениетекста импортxs интернетпочта ' +\n 'интернетпочтовоесообщение интернетпочтовыйпрофиль интернетпрокси интернетсоединение информациядляприложенияxs ' +\n 'использованиеатрибутаxs использованиесобытияжурналарегистрации источникдоступныхнастроеккомпоновкиданных ' +\n 'итераторузловdom картинка квалификаторыдаты квалификаторыдвоичныхданных квалификаторыстроки квалификаторычисла ' +\n 'компоновщикмакетакомпоновкиданных компоновщикнастроеккомпоновкиданных конструктормакетаоформлениякомпоновкиданных ' +\n 'конструкторнастроеккомпоновкиданных конструкторформатнойстроки линия макеткомпоновкиданных макетобластикомпоновкиданных ' +\n 'макетоформлениякомпоновкиданных маскаxs менеджеркриптографии наборсхемxml настройкикомпоновкиданных настройкисериализацииjson ' +\n 'обработкакартинок обработкарасшифровкикомпоновкиданных обходдереваdom объявлениеатрибутаxs объявлениенотацииxs ' +\n 'объявлениеэлементаxs описаниеиспользованиясобытиядоступжурналарегистрации ' +\n 'описаниеиспользованиясобытияотказвдоступежурналарегистрации описаниеобработкирасшифровкикомпоновкиданных ' +\n 'описаниепередаваемогофайла описаниетипов определениегруппыатрибутовxs определениегруппымоделиxs ' +\n 'определениеограниченияидентичностиxs определениепростоготипаxs определениесоставноготипаxs определениетипадокументаdom ' +\n 'определенияxpathxs отборкомпоновкиданных пакетотображаемыхдокументов параметрвыбора параметркомпоновкиданных ' +\n 'параметрызаписиjson параметрызаписиxml параметрычтенияxml переопределениеxs планировщик полеанализаданных ' +\n 'полекомпоновкиданных построительdom построительзапроса построительотчета построительотчетаанализаданных ' +\n 'построительсхемxml поток потоквпамяти почта почтовоесообщение преобразованиеxsl преобразованиекканоническомуxml ' +\n 'процессорвыводарезультатакомпоновкиданныхвколлекциюзначений процессорвыводарезультатакомпоновкиданныхвтабличныйдокумент ' +\n 'процессоркомпоновкиданных разыменовательпространствименdom рамка расписаниерегламентногозадания расширенноеимяxml ' +\n 'результатчтенияданных своднаядиаграмма связьпараметравыбора связьпотипу связьпотипукомпоновкиданных сериализаторxdto ' +\n 'сертификатклиентаwindows сертификатклиентафайл сертификаткриптографии сертификатыудостоверяющихцентровwindows ' +\n 'сертификатыудостоверяющихцентровфайл сжатиеданных системнаяинформация сообщениепользователю сочетаниеклавиш ' +\n 'сравнениезначений стандартнаядатаначала стандартныйпериод схемаxml схемакомпоновкиданных табличныйдокумент ' +\n 'текстовыйдокумент тестируемоеприложение типданныхxml уникальныйидентификатор фабрикаxdto файл файловыйпоток ' +\n 'фасетдлиныxs фасетколичестваразрядовдробнойчастиxs фасетмаксимальноговключающегозначенияxs ' +\n 'фасетмаксимальногоисключающегозначенияxs фасетмаксимальнойдлиныxs фасетминимальноговключающегозначенияxs ' +\n 'фасетминимальногоисключающегозначенияxs фасетминимальнойдлиныxs фасетобразцаxs фасетобщегоколичестваразрядовxs ' +\n 'фасетперечисленияxs фасетпробельныхсимволовxs фильтрузловdom форматированнаястрока форматированныйдокумент ' +\n 'фрагментxs хешированиеданных хранилищезначения цвет чтениеfastinfoset чтениеhtml чтениеjson чтениеxml чтениеzipфайла ' +\n 'чтениеданных чтениетекста чтениеузловdom шрифт элементрезультатакомпоновкиданных ';\n\n // v8 универсальные коллекции значений ==> type\n var v8_universal_collection =\n 'comsafearray деревозначений массив соответствие списокзначений структура таблицазначений фиксированнаяструктура ' +\n 'фиксированноесоответствие фиксированныймассив ';\n\n // type : встроенные типы\n var TYPE =\n v8_shared_object +\n v8_universal_collection;\n\n // literal : примитивные типы\n var LITERAL = 'null истина ложь неопределено';\n \n // number : числа\n var NUMBERS = hljs.inherit(hljs.NUMBER_MODE);\n\n // string : строки\n var STRINGS = {\n className: 'string',\n begin: '\"|\\\\|', end: '\"|$',\n contains: [{begin: '\"\"'}]\n };\n\n // number : даты\n var DATE = {\n begin: \"'\", end: \"'\", excludeBegin: true, excludeEnd: true,\n contains: [\n {\n className: 'number',\n begin: '\\\\d{4}([\\\\.\\\\\\\\/:-]?\\\\d{2}){0,5}'\n }\n ]\n };\n \n // comment : комментарии\n var COMMENTS = hljs.inherit(hljs.C_LINE_COMMENT_MODE);\n \n // meta : инструкции препроцессора, директивы компиляции\n var META = {\n className: 'meta',\n lexemes: UNDERSCORE_IDENT_RE,\n begin: '#|&', end: '$',\n keywords: {'meta-keyword': KEYWORD + METAKEYWORD},\n contains: [\n COMMENTS\n ]\n };\n \n // symbol : метка goto\n var SYMBOL = {\n className: 'symbol',\n begin: '~', end: ';|:', excludeEnd: true\n }; \n \n // function : объявление процедур и функций\n var FUNCTION = {\n className: 'function',\n lexemes: UNDERSCORE_IDENT_RE,\n variants: [\n {begin: 'процедура|функция', end: '\\\\)', keywords: 'процедура функция'},\n {begin: 'конецпроцедуры|конецфункции', keywords: 'конецпроцедуры конецфункции'}\n ],\n contains: [\n {\n begin: '\\\\(', end: '\\\\)', endsParent : true,\n contains: [\n {\n className: 'params',\n lexemes: UNDERSCORE_IDENT_RE,\n begin: UNDERSCORE_IDENT_RE, end: ',', excludeEnd: true, endsWithParent: true,\n keywords: {\n keyword: 'знач',\n literal: LITERAL\n },\n contains: [\n NUMBERS,\n STRINGS,\n DATE\n ]\n },\n COMMENTS\n ]\n },\n hljs.inherit(hljs.TITLE_MODE, {begin: UNDERSCORE_IDENT_RE})\n ]\n };\n\n return {\n case_insensitive: true,\n lexemes: UNDERSCORE_IDENT_RE,\n keywords: {\n keyword: KEYWORD,\n built_in: BUILTIN,\n class: CLASS,\n type: TYPE,\n literal: LITERAL\n },\n contains: [\n META,\n FUNCTION,\n COMMENTS,\n SYMBOL,\n NUMBERS,\n STRINGS,\n DATE\n ] \n }\n};","module.exports = function(hljs) {\n var regexes = {\n ruleDeclaration: \"^[a-zA-Z][a-zA-Z0-9-]*\",\n unexpectedChars: \"[!@#$^&',?+~`|:]\"\n };\n\n var keywords = [\n \"ALPHA\",\n \"BIT\",\n \"CHAR\",\n \"CR\",\n \"CRLF\",\n \"CTL\",\n \"DIGIT\",\n \"DQUOTE\",\n \"HEXDIG\",\n \"HTAB\",\n \"LF\",\n \"LWSP\",\n \"OCTET\",\n \"SP\",\n \"VCHAR\",\n \"WSP\"\n ];\n\n var commentMode = hljs.COMMENT(\";\", \"$\");\n\n var terminalBinaryMode = {\n className: \"symbol\",\n begin: /%b[0-1]+(-[0-1]+|(\\.[0-1]+)+){0,1}/\n };\n\n var terminalDecimalMode = {\n className: \"symbol\",\n begin: /%d[0-9]+(-[0-9]+|(\\.[0-9]+)+){0,1}/\n };\n\n var terminalHexadecimalMode = {\n className: \"symbol\",\n begin: /%x[0-9A-F]+(-[0-9A-F]+|(\\.[0-9A-F]+)+){0,1}/,\n };\n\n var caseSensitivityIndicatorMode = {\n className: \"symbol\",\n begin: /%[si]/\n };\n\n var ruleDeclarationMode = {\n begin: regexes.ruleDeclaration + '\\\\s*=',\n returnBegin: true,\n end: /=/,\n relevance: 0,\n contains: [{className: \"attribute\", begin: regexes.ruleDeclaration}]\n };\n\n return {\n illegal: regexes.unexpectedChars,\n keywords: keywords.join(\" \"),\n contains: [\n ruleDeclarationMode,\n commentMode,\n terminalBinaryMode,\n terminalDecimalMode,\n terminalHexadecimalMode,\n caseSensitivityIndicatorMode,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n contains: [\n // IP\n {\n className: 'number',\n begin: '\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b'\n },\n // Other numbers\n {\n className: 'number',\n begin: '\\\\b\\\\d+\\\\b',\n relevance: 0\n },\n // Requests\n {\n className: 'string',\n begin: '\"(GET|POST|HEAD|PUT|DELETE|CONNECT|OPTIONS|PATCH|TRACE)', end: '\"',\n keywords: 'GET POST HEAD PUT DELETE CONNECT OPTIONS PATCH TRACE',\n illegal: '\\\\n',\n relevance: 10\n },\n // Dates\n {\n className: 'string',\n begin: /\\[/, end: /\\]/,\n illegal: '\\\\n'\n },\n // Strings\n {\n className: 'string',\n begin: '\"', end: '\"',\n illegal: '\\\\n'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[a-zA-Z_$][a-zA-Z0-9_$]*';\n var IDENT_FUNC_RETURN_TYPE_RE = '([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)';\n\n var AS3_REST_ARG_MODE = {\n className: 'rest_arg',\n begin: '[.]{3}', end: IDENT_RE,\n relevance: 10\n };\n\n return {\n aliases: ['as'],\n keywords: {\n keyword: 'as break case catch class const continue default delete do dynamic each ' +\n 'else extends final finally for function get if implements import in include ' +\n 'instanceof interface internal is namespace native new override package private ' +\n 'protected public return set static super switch this throw try typeof use var void ' +\n 'while with',\n literal: 'true false null undefined'\n },\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'class',\n beginKeywords: 'package', end: '{',\n contains: [hljs.TITLE_MODE]\n },\n {\n className: 'class',\n beginKeywords: 'class interface', end: '{', excludeEnd: true,\n contains: [\n {\n beginKeywords: 'extends implements'\n },\n hljs.TITLE_MODE\n ]\n },\n {\n className: 'meta',\n beginKeywords: 'import include', end: ';',\n keywords: {'meta-keyword': 'import include'}\n },\n {\n className: 'function',\n beginKeywords: 'function', end: '[{;]', excludeEnd: true,\n illegal: '\\\\S',\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n AS3_REST_ARG_MODE\n ]\n },\n {\n begin: ':\\\\s*' + IDENT_FUNC_RETURN_TYPE_RE\n }\n ]\n },\n hljs.METHOD_GUARD\n ],\n illegal: /#/\n };\n};","module.exports = // We try to support full Ada2012\n//\n// We highlight all appearances of types, keywords, literals (string, char, number, bool)\n// and titles (user defined function/procedure/package)\n// CSS classes are set accordingly\n//\n// Languages causing problems for language detection:\n// xml (broken by Foo : Bar type), elm (broken by Foo : Bar type), vbscript-html (broken by body keyword)\n// sql (ada default.txt has a lot of sql keywords)\n\nfunction(hljs) {\n // Regular expression for Ada numeric literals.\n // stolen form the VHDL highlighter\n\n // Decimal literal:\n var INTEGER_RE = '\\\\d(_|\\\\d)*';\n var EXPONENT_RE = '[eE][-+]?' + INTEGER_RE;\n var DECIMAL_LITERAL_RE = INTEGER_RE + '(\\\\.' + INTEGER_RE + ')?' + '(' + EXPONENT_RE + ')?';\n\n // Based literal:\n var BASED_INTEGER_RE = '\\\\w+';\n var BASED_LITERAL_RE = INTEGER_RE + '#' + BASED_INTEGER_RE + '(\\\\.' + BASED_INTEGER_RE + ')?' + '#' + '(' + EXPONENT_RE + ')?';\n\n var NUMBER_RE = '\\\\b(' + BASED_LITERAL_RE + '|' + DECIMAL_LITERAL_RE + ')';\n\n // Identifier regex\n var ID_REGEX = '[A-Za-z](_?[A-Za-z0-9.])*';\n\n // bad chars, only allowed in literals\n var BAD_CHARS = '[]{}%#\\'\\\"'\n\n // Ada doesn't have block comments, only line comments\n var COMMENTS = hljs.COMMENT('--', '$');\n\n // variable declarations of the form\n // Foo : Bar := Baz;\n // where only Bar will be highlighted\n var VAR_DECLS = {\n // TODO: These spaces are not required by the Ada syntax\n // however, I have yet to see handwritten Ada code where\n // someone does not put spaces around :\n begin: '\\\\s+:\\\\s+', end: '\\\\s*(:=|;|\\\\)|=>|$)',\n // endsWithParent: true,\n // returnBegin: true,\n illegal: BAD_CHARS,\n contains: [\n {\n // workaround to avoid highlighting\n // named loops and declare blocks\n beginKeywords: 'loop for declare others',\n endsParent: true,\n },\n {\n // properly highlight all modifiers\n className: 'keyword',\n beginKeywords: 'not null constant access function procedure in out aliased exception'\n },\n {\n className: 'type',\n begin: ID_REGEX,\n endsParent: true,\n relevance: 0,\n }\n ]\n };\n\n return {\n case_insensitive: true,\n keywords: {\n keyword:\n 'abort else new return abs elsif not reverse abstract end ' +\n 'accept entry select access exception of separate aliased exit or some ' +\n 'all others subtype and for out synchronized array function overriding ' +\n 'at tagged generic package task begin goto pragma terminate ' +\n 'body private then if procedure type case in protected constant interface ' +\n 'is raise use declare range delay limited record when delta loop rem while ' +\n 'digits renames with do mod requeue xor',\n literal:\n 'True False',\n },\n contains: [\n COMMENTS,\n // strings \"foobar\"\n {\n className: 'string',\n begin: /\"/, end: /\"/,\n contains: [{begin: /\"\"/, relevance: 0}]\n },\n // characters ''\n {\n // character literals always contain one char\n className: 'string',\n begin: /'.'/\n },\n {\n // number literals\n className: 'number',\n begin: NUMBER_RE,\n relevance: 0\n },\n {\n // Attributes\n className: 'symbol',\n begin: \"'\" + ID_REGEX,\n },\n {\n // package definition, maybe inside generic\n className: 'title',\n begin: '(\\\\bwith\\\\s+)?(\\\\bprivate\\\\s+)?\\\\bpackage\\\\s+(\\\\bbody\\\\s+)?', end: '(is|$)',\n keywords: 'package body',\n excludeBegin: true,\n excludeEnd: true,\n illegal: BAD_CHARS\n },\n {\n // function/procedure declaration/definition\n // maybe inside generic\n begin: '(\\\\b(with|overriding)\\\\s+)?\\\\b(function|procedure)\\\\s+', end: '(\\\\bis|\\\\bwith|\\\\brenames|\\\\)\\\\s*;)',\n keywords: 'overriding function procedure with is renames return',\n // we need to re-match the 'function' keyword, so that\n // the title mode below matches only exactly once\n returnBegin: true,\n contains:\n [\n COMMENTS,\n {\n // name of the function/procedure\n className: 'title',\n begin: '(\\\\bwith\\\\s+)?\\\\b(function|procedure)\\\\s+',\n end: '(\\\\(|\\\\s+|$)',\n excludeBegin: true,\n excludeEnd: true,\n illegal: BAD_CHARS\n },\n // 'self'\n // // parameter types\n VAR_DECLS,\n {\n // return type\n className: 'type',\n begin: '\\\\breturn\\\\s+', end: '(\\\\s+|;|$)',\n keywords: 'return',\n excludeBegin: true,\n excludeEnd: true,\n // we are done with functions\n endsParent: true,\n illegal: BAD_CHARS\n\n },\n ]\n },\n {\n // new type declarations\n // maybe inside generic\n className: 'type',\n begin: '\\\\b(sub)?type\\\\s+', end: '\\\\s+',\n keywords: 'type',\n excludeBegin: true,\n illegal: BAD_CHARS\n },\n\n // see comment above the definition\n VAR_DECLS,\n\n // no markup\n // relevance boosters for small snippets\n // {begin: '\\\\s*=>\\\\s*'},\n // {begin: '\\\\s*:=\\\\s*'},\n // {begin: '\\\\s+:=\\\\s+'},\n ]\n };\n};","module.exports = function(hljs) {\n var builtInTypeMode = {\n className: 'built_in',\n begin: '\\\\b(void|bool|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|string|ref|array|double|float|auto|dictionary)'\n };\n\n var objectHandleMode = {\n className: 'symbol',\n begin: '[a-zA-Z0-9_]+@'\n };\n\n var genericMode = {\n className: 'keyword',\n begin: '<', end: '>',\n contains: [ builtInTypeMode, objectHandleMode ]\n };\n\n builtInTypeMode.contains = [ genericMode ];\n objectHandleMode.contains = [ genericMode ];\n\n return {\n aliases: [ 'asc' ],\n\n keywords:\n 'for in|0 break continue while do|0 return if else case switch namespace is cast ' +\n 'or and xor not get|0 in inout|10 out override set|0 private public const default|0 ' +\n 'final shared external mixin|10 enum typedef funcdef this super import from interface',\n\n // avoid close detection with C# and JS\n illegal: '(^using\\\\s+[A-Za-z0-9_\\\\.]+;$|\\\\bfunction\\s*[^\\\\(])',\n\n contains: [\n { // 'strings'\n className: 'string',\n begin: '\\'', end: '\\'',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ],\n relevance: 0\n },\n\n { // \"strings\"\n className: 'string',\n begin: '\"', end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ],\n relevance: 0\n },\n\n // \"\"\"heredoc strings\"\"\"\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"'\n },\n\n hljs.C_LINE_COMMENT_MODE, // single-line comments\n hljs.C_BLOCK_COMMENT_MODE, // comment blocks\n\n { // interface or namespace declaration\n beginKeywords: 'interface namespace', end: '{',\n illegal: '[;.\\\\-]',\n contains: [\n { // interface or namespace name\n className: 'symbol',\n begin: '[a-zA-Z0-9_]+'\n }\n ]\n },\n\n { // class declaration\n beginKeywords: 'class', end: '{',\n illegal: '[;.\\\\-]',\n contains: [\n { // class name\n className: 'symbol',\n begin: '[a-zA-Z0-9_]+',\n contains: [\n {\n begin: '[:,]\\\\s*',\n contains: [\n {\n className: 'symbol',\n begin: '[a-zA-Z0-9_]+'\n }\n ]\n }\n ]\n }\n ]\n },\n\n builtInTypeMode, // built-in types\n objectHandleMode, // object handles\n\n { // literals\n className: 'literal',\n begin: '\\\\b(null|true|false)'\n },\n\n { // numbers\n className: 'number',\n begin: '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?f?|\\\\.\\\\d+f?)([eE][-+]?\\\\d+f?)?)'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var NUMBER = {className: 'number', begin: '[\\\\$%]\\\\d+'};\n return {\n aliases: ['apacheconf'],\n case_insensitive: true,\n contains: [\n hljs.HASH_COMMENT_MODE,\n {className: 'section', begin: '</?', end: '>'},\n {\n className: 'attribute',\n begin: /\\w+/,\n relevance: 0,\n // keywords aren’t needed for highlighting per se, they only boost relevance\n // for a very generally defined mode (starts with a word, ends with line-end\n keywords: {\n nomarkup:\n 'order deny allow setenv rewriterule rewriteengine rewritecond documentroot ' +\n 'sethandler errordocument loadmodule options header listen serverroot ' +\n 'servername'\n },\n starts: {\n end: /$/,\n relevance: 0,\n keywords: {\n literal: 'on off all'\n },\n contains: [\n {\n className: 'meta',\n begin: '\\\\s\\\\[', end: '\\\\]$'\n },\n {\n className: 'variable',\n begin: '[\\\\$%]\\\\{', end: '\\\\}',\n contains: ['self', NUMBER]\n },\n NUMBER,\n hljs.QUOTE_STRING_MODE\n ]\n }\n }\n ],\n illegal: /\\S/\n };\n};","module.exports = function(hljs) {\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: ''});\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n contains: ['self', hljs.C_NUMBER_MODE, STRING]\n };\n var COMMENT_MODE_1 = hljs.COMMENT('--', '$');\n var COMMENT_MODE_2 = hljs.COMMENT(\n '\\\\(\\\\*',\n '\\\\*\\\\)',\n {\n contains: ['self', COMMENT_MODE_1] //allow nesting\n }\n );\n var COMMENTS = [\n COMMENT_MODE_1,\n COMMENT_MODE_2,\n hljs.HASH_COMMENT_MODE\n ];\n\n return {\n aliases: ['osascript'],\n keywords: {\n keyword:\n 'about above after against and around as at back before beginning ' +\n 'behind below beneath beside between but by considering ' +\n 'contain contains continue copy div does eighth else end equal ' +\n 'equals error every exit fifth first for fourth from front ' +\n 'get given global if ignoring in into is it its last local me ' +\n 'middle mod my ninth not of on onto or over prop property put ref ' +\n 'reference repeat returning script second set seventh since ' +\n 'sixth some tell tenth that the|0 then third through thru ' +\n 'timeout times to transaction try until where while whose with ' +\n 'without',\n literal:\n 'AppleScript false linefeed return pi quote result space tab true',\n built_in:\n 'alias application boolean class constant date file integer list ' +\n 'number real record string text ' +\n 'activate beep count delay launch log offset read round ' +\n 'run say summarize write ' +\n 'character characters contents day frontmost id item length ' +\n 'month name paragraph paragraphs rest reverse running time version ' +\n 'weekday word words year'\n },\n contains: [\n STRING,\n hljs.C_NUMBER_MODE,\n {\n className: 'built_in',\n begin:\n '\\\\b(clipboard info|the clipboard|info for|list (disks|folder)|' +\n 'mount volume|path to|(close|open for) access|(get|set) eof|' +\n 'current date|do shell script|get volume settings|random number|' +\n 'set volume|system attribute|system info|time to GMT|' +\n '(load|run|store) script|scripting components|' +\n 'ASCII (character|number)|localized string|' +\n 'choose (application|color|file|file name|' +\n 'folder|from list|remote application|URL)|' +\n 'display (alert|dialog))\\\\b|^\\\\s*return\\\\b'\n },\n {\n className: 'literal',\n begin:\n '\\\\b(text item delimiters|current application|missing value)\\\\b'\n },\n {\n className: 'keyword',\n begin:\n '\\\\b(apart from|aside from|instead of|out of|greater than|' +\n \"isn't|(doesn't|does not) (equal|come before|come after|contain)|\" +\n '(greater|less) than( or equal)?|(starts?|ends|begins?) with|' +\n 'contained by|comes (before|after)|a (ref|reference)|POSIX file|' +\n 'POSIX path|(date|time) string|quoted form)\\\\b'\n },\n {\n beginKeywords: 'on',\n illegal: '[${=;\\\\n]',\n contains: [hljs.UNDERSCORE_TITLE_MODE, PARAMS]\n }\n ].concat(COMMENTS),\n illegal: '//|->|=>|\\\\[\\\\['\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[A-Za-z_][0-9A-Za-z_]*';\n var KEYWORDS = {\n keyword:\n 'if for while var new function do return void else break',\n literal:\n 'true false null undefined NaN Infinity PI BackSlash DoubleQuote ForwardSlash NewLine SingleQuote Tab',\n built_in:\n 'Abs Acos Area AreaGeodetic Asin Atan Atan2 Average Boolean Buffer BufferGeodetic ' +\n 'Ceil Centroid Clip Console Constrain Contains Cos Count Crosses Cut Date DateAdd ' +\n 'DateDiff Day Decode DefaultValue Dictionary Difference Disjoint Distance Distinct ' +\n 'DomainCode DomainName Equals Exp Extent Feature FeatureSet FeatureSetById FeatureSetByTitle ' +\n 'FeatureSetByUrl Filter First Floor Geometry Guid HasKey Hour IIf IndexOf Intersection ' +\n 'Intersects IsEmpty Length LengthGeodetic Log Max Mean Millisecond Min Minute Month ' +\n 'MultiPartToSinglePart Multipoint NextSequenceValue Now Number OrderBy Overlaps Point Polygon ' +\n 'Polyline Pow Random Relate Reverse Round Second SetGeometry Sin Sort Sqrt Stdev Sum ' +\n 'SymmetricDifference Tan Text Timestamp Today ToLocal Top Touches ToUTC TypeOf Union Variance ' +\n 'Weekday When Within Year '\n };\n var EXPRESSIONS;\n var SYMBOL = {\n className: 'symbol',\n begin: '\\\\$[feature|layer|map|value|view]+'\n };\n var NUMBER = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0[bB][01]+)' },\n { begin: '\\\\b(0[oO][0-7]+)' },\n { begin: hljs.C_NUMBER_RE }\n ],\n relevance: 0\n };\n var SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{', end: '\\\\}',\n keywords: KEYWORDS,\n contains: [] // defined later\n };\n var TEMPLATE_STRING = {\n className: 'string',\n begin: '`', end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n SUBST.contains = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n TEMPLATE_STRING,\n NUMBER,\n hljs.REGEXP_MODE\n ];\n var PARAMS_CONTAINS = SUBST.contains.concat([\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]);\n\n return {\n aliases: ['arcade'],\n keywords: KEYWORDS,\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n TEMPLATE_STRING,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n SYMBOL,\n NUMBER,\n { // object attr container\n begin: /[{,]\\s*/, relevance: 0,\n contains: [\n {\n begin: IDENT_RE + '\\\\s*:', returnBegin: true,\n relevance: 0,\n contains: [{className: 'attr', begin: IDENT_RE, relevance: 0}]\n }\n ]\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(return)\\\\b)\\\\s*',\n keywords: 'return',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n begin: '(\\\\(.*?\\\\)|' + IDENT_RE + ')\\\\s*=>', returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: IDENT_RE\n },\n {\n begin: /\\(\\s*\\)/,\n },\n {\n begin: /\\(/, end: /\\)/,\n excludeBegin: true, excludeEnd: true,\n keywords: KEYWORDS,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n beginKeywords: 'function', end: /\\{/, excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: IDENT_RE}),\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n contains: PARAMS_CONTAINS\n }\n ],\n illegal: /\\[|%/\n },\n {\n begin: /\\$[(.]/\n }\n ],\n illegal: /#(?!!)/\n };\n};","module.exports = function(hljs) {\n var CPP_PRIMITIVE_TYPES = {\n className: 'keyword',\n begin: '\\\\b[a-z\\\\d_]*_t\\\\b'\n };\n\n var STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '(u8?|U|L)?\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n // TODO: This does not handle raw string literals with prefixes. Using\n // a single regex with backreferences would work (note to use *?\n // instead of * to make it non-greedy), but the mode.terminators\n // computation in highlight.js breaks the counting.\n begin: '(u8?|U|L)?R\"\\\\(', end: '\\\\)\"',\n },\n {\n begin: '\\'\\\\\\\\?.', end: '\\'',\n illegal: '.'\n }\n ]\n };\n\n var NUMBERS = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0b[01\\']+)' },\n { begin: '(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)(u|U|l|L|ul|UL|f|F|b|B)' },\n { begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)' }\n ],\n relevance: 0\n };\n\n var PREPROCESSOR = {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/, end: /$/,\n keywords: {\n 'meta-keyword':\n 'if else elif endif define undef warning error line ' +\n 'pragma ifdef ifndef include'\n },\n contains: [\n {\n begin: /\\\\\\n/, relevance: 0\n },\n hljs.inherit(STRINGS, {className: 'meta-string'}),\n {\n className: 'meta-string',\n begin: /<[^\\n>]*>/, end: /$/,\n illegal: '\\\\n',\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n var FUNCTION_TITLE = hljs.IDENT_RE + '\\\\s*\\\\(';\n\n var CPP_KEYWORDS = {\n keyword: 'int float while private char catch import module export virtual operator sizeof ' +\n 'dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace ' +\n 'unsigned long volatile static protected bool template mutable if public friend ' +\n 'do goto auto void enum else break extern using asm case typeid ' +\n 'short reinterpret_cast|10 default double register explicit signed typename try this ' +\n 'switch continue inline delete alignof constexpr decltype ' +\n 'noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary ' +\n 'atomic_bool atomic_char atomic_schar ' +\n 'atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong ' +\n 'atomic_ullong new throw return ' +\n 'and or not',\n built_in: 'std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream ' +\n 'auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set ' +\n 'unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos ' +\n 'asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp ' +\n 'fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper ' +\n 'isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow ' +\n 'printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp ' +\n 'strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan ' +\n 'vfprintf vprintf vsprintf endl initializer_list unique_ptr',\n literal: 'true false nullptr NULL'\n };\n\n var EXPRESSION_CONTAINS = [\n CPP_PRIMITIVE_TYPES,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n\n return {\n aliases: ['c', 'cc', 'h', 'c++', 'h++', 'hpp'],\n keywords: CPP_KEYWORDS,\n illegal: '</',\n contains: EXPRESSION_CONTAINS.concat([\n PREPROCESSOR,\n {\n begin: '\\\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\\\s*<', end: '>',\n keywords: CPP_KEYWORDS,\n contains: ['self', CPP_PRIMITIVE_TYPES]\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: CPP_KEYWORDS\n },\n {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {begin: /=/, end: /;/},\n {begin: /\\(/, end: /\\)/},\n {beginKeywords: 'new throw return else', end: /;/}\n ],\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/, end: /\\)/,\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat(['self']),\n relevance: 0\n }\n ]),\n relevance: 0\n },\n {\n className: 'function',\n begin: '(' + hljs.IDENT_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n returnBegin: true, end: /[{;=]/,\n excludeEnd: true,\n keywords: CPP_KEYWORDS,\n illegal: /[^\\w\\s\\*&]/,\n contains: [\n {\n begin: FUNCTION_TITLE, returnBegin: true,\n contains: [hljs.TITLE_MODE],\n relevance: 0\n },\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES,\n // Count matching parentheses.\n {\n begin: /\\(/, end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n 'self',\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES\n ]\n }\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class struct', end: /[{;:]/,\n contains: [\n {begin: /</, end: />/, contains: ['self']}, // skip generic stuff\n hljs.TITLE_MODE\n ]\n }\n ]),\n exports: {\n preprocessor: PREPROCESSOR,\n strings: STRINGS,\n keywords: CPP_KEYWORDS\n }\n };\n};","module.exports = function(hljs) {\n var CPP = hljs.getLanguage('cpp').exports;\n\treturn {\n keywords: {\n keyword:\n 'boolean byte word string String array ' + CPP.keywords.keyword,\n built_in:\n 'setup loop while catch for if do goto try switch case else ' +\n 'default break continue return ' +\n 'KeyboardController MouseController SoftwareSerial ' +\n 'EthernetServer EthernetClient LiquidCrystal ' +\n 'RobotControl GSMVoiceCall EthernetUDP EsploraTFT ' +\n 'HttpClient RobotMotor WiFiClient GSMScanner ' +\n 'FileSystem Scheduler GSMServer YunClient YunServer ' +\n 'IPAddress GSMClient GSMModem Keyboard Ethernet ' +\n 'Console GSMBand Esplora Stepper Process ' +\n 'WiFiUDP GSM_SMS Mailbox USBHost Firmata PImage ' +\n 'Client Server GSMPIN FileIO Bridge Serial ' +\n 'EEPROM Stream Mouse Audio Servo File Task ' +\n 'GPRS WiFi Wire TFT GSM SPI SD ' +\n 'runShellCommandAsynchronously analogWriteResolution ' +\n 'retrieveCallingNumber printFirmwareVersion ' +\n 'analogReadResolution sendDigitalPortPair ' +\n 'noListenOnLocalhost readJoystickButton setFirmwareVersion ' +\n 'readJoystickSwitch scrollDisplayRight getVoiceCallStatus ' +\n 'scrollDisplayLeft writeMicroseconds delayMicroseconds ' +\n 'beginTransmission getSignalStrength runAsynchronously ' +\n 'getAsynchronously listenOnLocalhost getCurrentCarrier ' +\n 'readAccelerometer messageAvailable sendDigitalPorts ' +\n 'lineFollowConfig countryNameWrite runShellCommand ' +\n 'readStringUntil rewindDirectory readTemperature ' +\n 'setClockDivider readLightSensor endTransmission ' +\n 'analogReference detachInterrupt countryNameRead ' +\n 'attachInterrupt encryptionType readBytesUntil ' +\n 'robotNameWrite readMicrophone robotNameRead cityNameWrite ' +\n 'userNameWrite readJoystickY readJoystickX mouseReleased ' +\n 'openNextFile scanNetworks noInterrupts digitalWrite ' +\n 'beginSpeaker mousePressed isActionDone mouseDragged ' +\n 'displayLogos noAutoscroll addParameter remoteNumber ' +\n 'getModifiers keyboardRead userNameRead waitContinue ' +\n 'processInput parseCommand printVersion readNetworks ' +\n 'writeMessage blinkVersion cityNameRead readMessage ' +\n 'setDataMode parsePacket isListening setBitOrder ' +\n 'beginPacket isDirectory motorsWrite drawCompass ' +\n 'digitalRead clearScreen serialEvent rightToLeft ' +\n 'setTextSize leftToRight requestFrom keyReleased ' +\n 'compassRead analogWrite interrupts WiFiServer ' +\n 'disconnect playMelody parseFloat autoscroll ' +\n 'getPINUsed setPINUsed setTimeout sendAnalog ' +\n 'readSlider analogRead beginWrite createChar ' +\n 'motorsStop keyPressed tempoWrite readButton ' +\n 'subnetMask debugPrint macAddress writeGreen ' +\n 'randomSeed attachGPRS readString sendString ' +\n 'remotePort releaseAll mouseMoved background ' +\n 'getXChange getYChange answerCall getResult ' +\n 'voiceCall endPacket constrain getSocket writeJSON ' +\n 'getButton available connected findUntil readBytes ' +\n 'exitValue readGreen writeBlue startLoop IPAddress ' +\n 'isPressed sendSysex pauseMode gatewayIP setCursor ' +\n 'getOemKey tuneWrite noDisplay loadImage switchPIN ' +\n 'onRequest onReceive changePIN playFile noBuffer ' +\n 'parseInt overflow checkPIN knobRead beginTFT ' +\n 'bitClear updateIR bitWrite position writeRGB ' +\n 'highByte writeRed setSpeed readBlue noStroke ' +\n 'remoteIP transfer shutdown hangCall beginSMS ' +\n 'endWrite attached maintain noCursor checkReg ' +\n 'checkPUK shiftOut isValid shiftIn pulseIn ' +\n 'connect println localIP pinMode getIMEI ' +\n 'display noBlink process getBand running beginSD ' +\n 'drawBMP lowByte setBand release bitRead prepare ' +\n 'pointTo readRed setMode noFill remove listen ' +\n 'stroke detach attach noTone exists buffer ' +\n 'height bitSet circle config cursor random ' +\n 'IRread setDNS endSMS getKey micros ' +\n 'millis begin print write ready flush width ' +\n 'isPIN blink clear press mkdir rmdir close ' +\n 'point yield image BSSID click delay ' +\n 'read text move peek beep rect line open ' +\n 'seek fill size turn stop home find ' +\n 'step tone sqrt RSSI SSID ' +\n 'end bit tan cos sin pow map abs max ' +\n 'min get run put',\n literal:\n 'DIGITAL_MESSAGE FIRMATA_STRING ANALOG_MESSAGE ' +\n 'REPORT_DIGITAL REPORT_ANALOG INPUT_PULLUP ' +\n 'SET_PIN_MODE INTERNAL2V56 SYSTEM_RESET LED_BUILTIN ' +\n 'INTERNAL1V1 SYSEX_START INTERNAL EXTERNAL ' +\n 'DEFAULT OUTPUT INPUT HIGH LOW'\n },\n contains: [\n CPP.preprocessor,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n //local labels: %?[FB]?[AT]?\\d{1,2}\\w+\n return {\n case_insensitive: true,\n aliases: ['arm'],\n lexemes: '\\\\.?' + hljs.IDENT_RE,\n keywords: {\n meta:\n //GNU preprocs\n '.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg '+\n //ARM directives\n 'ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ',\n built_in:\n 'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 '+ //standard registers\n 'pc lr sp ip sl sb fp '+ //typical regs plus backward compatibility\n 'a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 '+ //more regs and fp\n 'p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 '+ //coprocessor regs\n 'c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 '+ //more coproc\n 'q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 '+ //advanced SIMD NEON regs\n\n //program status registers\n 'cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf '+\n 'spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf '+\n\n //NEON and VFP registers\n 's0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 '+\n 's16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 '+\n 'd0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 '+\n 'd16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 ' +\n\n '{PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @'\n },\n contains: [\n {\n className: 'keyword',\n begin: '\\\\b('+ //mnemonics\n 'adc|'+\n '(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|'+\n 'and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|'+\n 'bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|'+\n 'setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|'+\n 'ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|'+\n 'mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|'+\n 'mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|'+\n 'mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|'+\n 'rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|'+\n 'stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|'+\n '[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|'+\n 'wfe|wfi|yield'+\n ')'+\n '(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?'+ //condition codes\n '[sptrx]?' , //legal postfixes\n end: '\\\\s'\n },\n hljs.COMMENT('[;@]', '$', {relevance: 0}),\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\'',\n end: '[^\\\\\\\\]\\'',\n relevance: 0\n },\n {\n className: 'title',\n begin: '\\\\|', end: '\\\\|',\n illegal: '\\\\n',\n relevance: 0\n },\n {\n className: 'number',\n variants: [\n {begin: '[#$=]?0x[0-9a-f]+'}, //hex\n {begin: '[#$=]?0b[01]+'}, //bin\n {begin: '[#$=]\\\\d+'}, //literal\n {begin: '\\\\b\\\\d+'} //bare number\n ],\n relevance: 0\n },\n {\n className: 'symbol',\n variants: [\n {begin: '^[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+'}, //ARM syntax\n {begin: '^\\\\s*[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+:'}, //GNU ARM syntax\n {begin: '[=#]\\\\w+' } //label reference\n ],\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n var XML_IDENT_RE = '[A-Za-z0-9\\\\._:-]+';\n var TAG_INTERNALS = {\n endsWithParent: true,\n illegal: /</,\n relevance: 0,\n contains: [\n {\n className: 'attr',\n begin: XML_IDENT_RE,\n relevance: 0\n },\n {\n begin: /=\\s*/,\n relevance: 0,\n contains: [\n {\n className: 'string',\n endsParent: true,\n variants: [\n {begin: /\"/, end: /\"/},\n {begin: /'/, end: /'/},\n {begin: /[^\\s\"'=<>`]+/}\n ]\n }\n ]\n }\n ]\n };\n return {\n aliases: ['html', 'xhtml', 'rss', 'atom', 'xjb', 'xsd', 'xsl', 'plist'],\n case_insensitive: true,\n contains: [\n {\n className: 'meta',\n begin: '<!DOCTYPE', end: '>',\n relevance: 10,\n contains: [{begin: '\\\\[', end: '\\\\]'}]\n },\n hljs.COMMENT(\n '<!--',\n '-->',\n {\n relevance: 10\n }\n ),\n {\n begin: '<\\\\!\\\\[CDATA\\\\[', end: '\\\\]\\\\]>',\n relevance: 10\n },\n {\n className: 'meta',\n begin: /<\\?xml/, end: /\\?>/, relevance: 10\n },\n {\n begin: /<\\?(php)?/, end: /\\?>/,\n subLanguage: 'php',\n contains: [\n // We don't want the php closing tag ?> to close the PHP block when\n // inside any of the following blocks:\n {begin: '/\\\\*', end: '\\\\*/', skip: true},\n {begin: 'b\"', end: '\"', skip: true},\n {begin: 'b\\'', end: '\\'', skip: true},\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null, className: null, contains: null, skip: true}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null, className: null, contains: null, skip: true})\n ]\n },\n {\n className: 'tag',\n /*\n The lookahead pattern (?=...) ensures that 'begin' only matches\n '<style' as a single word, followed by a whitespace or an\n ending braket. The '$' is needed for the lexeme to be recognized\n by hljs.subMode() that tests lexemes outside the stream.\n */\n begin: '<style(?=\\\\s|>|$)', end: '>',\n keywords: {name: 'style'},\n contains: [TAG_INTERNALS],\n starts: {\n end: '</style>', returnEnd: true,\n subLanguage: ['css', 'xml']\n }\n },\n {\n className: 'tag',\n // See the comment in the <style tag about the lookahead pattern\n begin: '<script(?=\\\\s|>|$)', end: '>',\n keywords: {name: 'script'},\n contains: [TAG_INTERNALS],\n starts: {\n end: '\\<\\/script\\>', returnEnd: true,\n subLanguage: ['actionscript', 'javascript', 'handlebars', 'xml']\n }\n },\n {\n className: 'tag',\n begin: '</?', end: '/?>',\n contains: [\n {\n className: 'name', begin: /[^\\/><\\s]+/, relevance: 0\n },\n TAG_INTERNALS\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['adoc'],\n contains: [\n // block comment\n hljs.COMMENT(\n '^/{4,}\\\\n',\n '\\\\n/{4,}$',\n // can also be done as...\n //'^/{4,}$',\n //'^/{4,}$',\n {\n relevance: 10\n }\n ),\n // line comment\n hljs.COMMENT(\n '^//',\n '$',\n {\n relevance: 0\n }\n ),\n // title\n {\n className: 'title',\n begin: '^\\\\.\\\\w.*$'\n },\n // example, admonition & sidebar blocks\n {\n begin: '^[=\\\\*]{4,}\\\\n',\n end: '\\\\n^[=\\\\*]{4,}$',\n relevance: 10\n },\n // headings\n {\n className: 'section',\n relevance: 10,\n variants: [\n {begin: '^(={1,5}) .+?( \\\\1)?$'},\n {begin: '^[^\\\\[\\\\]\\\\n]+?\\\\n[=\\\\-~\\\\^\\\\+]{2,}$'},\n ]\n },\n // document attributes\n {\n className: 'meta',\n begin: '^:.+?:',\n end: '\\\\s',\n excludeEnd: true,\n relevance: 10\n },\n // block attributes\n {\n className: 'meta',\n begin: '^\\\\[.+?\\\\]$',\n relevance: 0\n },\n // quoteblocks\n {\n className: 'quote',\n begin: '^_{4,}\\\\n',\n end: '\\\\n_{4,}$',\n relevance: 10\n },\n // listing and literal blocks\n {\n className: 'code',\n begin: '^[\\\\-\\\\.]{4,}\\\\n',\n end: '\\\\n[\\\\-\\\\.]{4,}$',\n relevance: 10\n },\n // passthrough blocks\n {\n begin: '^\\\\+{4,}\\\\n',\n end: '\\\\n\\\\+{4,}$',\n contains: [\n {\n begin: '<', end: '>',\n subLanguage: 'xml',\n relevance: 0\n }\n ],\n relevance: 10\n },\n // lists (can only capture indicators)\n {\n className: 'bullet',\n begin: '^(\\\\*+|\\\\-+|\\\\.+|[^\\\\n]+?::)\\\\s+'\n },\n // admonition\n {\n className: 'symbol',\n begin: '^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\\\s+',\n relevance: 10\n },\n // inline strong\n {\n className: 'strong',\n // must not follow a word character or be followed by an asterisk or space\n begin: '\\\\B\\\\*(?![\\\\*\\\\s])',\n end: '(\\\\n{2}|\\\\*)',\n // allow escaped asterisk followed by word char\n contains: [\n {\n begin: '\\\\\\\\*\\\\w',\n relevance: 0\n }\n ]\n },\n // inline emphasis\n {\n className: 'emphasis',\n // must not follow a word character or be followed by a single quote or space\n begin: '\\\\B\\'(?![\\'\\\\s])',\n end: '(\\\\n{2}|\\')',\n // allow escaped single quote followed by word char\n contains: [\n {\n begin: '\\\\\\\\\\'\\\\w',\n relevance: 0\n }\n ],\n relevance: 0\n },\n // inline emphasis (alt)\n {\n className: 'emphasis',\n // must not follow a word character or be followed by an underline or space\n begin: '_(?![_\\\\s])',\n end: '(\\\\n{2}|_)',\n relevance: 0\n },\n // inline smart quotes\n {\n className: 'string',\n variants: [\n {begin: \"``.+?''\"},\n {begin: \"`.+?'\"}\n ]\n },\n // inline code snippets (TODO should get same treatment as strong and emphasis)\n {\n className: 'code',\n begin: '(`.+?`|\\\\+.+?\\\\+)',\n relevance: 0\n },\n // indented literal block\n {\n className: 'code',\n begin: '^[ \\\\t]',\n end: '$',\n relevance: 0\n },\n // horizontal rules\n {\n begin: '^\\'{3,}[ \\\\t]*$',\n relevance: 10\n },\n // images and links\n {\n begin: '(link:)?(http|https|ftp|file|irc|image:?):\\\\S+\\\\[.*?\\\\]',\n returnBegin: true,\n contains: [\n {\n begin: '(link|image:?):',\n relevance: 0\n },\n {\n className: 'link',\n begin: '\\\\w',\n end: '[^\\\\[]+',\n relevance: 0\n },\n {\n className: 'string',\n begin: '\\\\[',\n end: '\\\\]',\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n }\n ],\n relevance: 10\n }\n ]\n };\n};","module.exports = function (hljs) {\n var KEYWORDS =\n 'false synchronized int abstract float private char boolean static null if const ' +\n 'for true while long throw strictfp finally protected import native final return void ' +\n 'enum else extends implements break transient new catch instanceof byte super volatile case ' +\n 'assert short package default double public try this switch continue throws privileged ' +\n 'aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization ' +\n 'staticinitialization withincode target within execution getWithinTypeName handler ' +\n 'thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents '+\n 'warning error soft precedence thisAspectInstance';\n var SHORTKEYS = 'get set args call';\n return {\n keywords : KEYWORDS,\n illegal : /<\\/|#/,\n contains : [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance : 0,\n contains : [\n {\n // eat up @'s in emails to prevent them to be recognized as doctags\n begin: /\\w+@/, relevance: 0\n },\n {\n className : 'doctag',\n begin : '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className : 'class',\n beginKeywords : 'aspect',\n end : /[{;=]/,\n excludeEnd : true,\n illegal : /[:;\"\\[\\]]/,\n contains : [\n {\n beginKeywords : 'extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton'\n },\n hljs.UNDERSCORE_TITLE_MODE,\n {\n begin : /\\([^\\)]*/,\n end : /[)]+/,\n keywords : KEYWORDS + ' ' + SHORTKEYS,\n excludeEnd : false\n }\n ]\n },\n {\n className : 'class',\n beginKeywords : 'class interface',\n end : /[{;=]/,\n excludeEnd : true,\n relevance: 0,\n keywords : 'class interface',\n illegal : /[:\"\\[\\]]/,\n contains : [\n {beginKeywords : 'extends implements'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n // AspectJ Constructs\n beginKeywords : 'pointcut after before around throwing returning',\n end : /[)]/,\n excludeEnd : false,\n illegal : /[\"\\[\\]]/,\n contains : [\n {\n begin : hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\n returnBegin : true,\n contains : [hljs.UNDERSCORE_TITLE_MODE]\n }\n ]\n },\n {\n begin : /[:]/,\n returnBegin : true,\n end : /[{;]/,\n relevance: 0,\n excludeEnd : false,\n keywords : KEYWORDS,\n illegal : /[\"\\[\\]]/,\n contains : [\n {\n begin : hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\n keywords : KEYWORDS + ' ' + SHORTKEYS,\n relevance: 0\n },\n hljs.QUOTE_STRING_MODE\n ]\n },\n {\n // this prevents 'new Name(...), or throw ...' from being recognized as a function definition\n beginKeywords : 'new throw',\n relevance : 0\n },\n {\n // the function class is a bit different for AspectJ compared to the Java language\n className : 'function',\n begin : /\\w+ +\\w+(\\.)?\\w+\\s*\\([^\\)]*\\)\\s*((throws)[\\w\\s,]+)?[\\{;]/,\n returnBegin : true,\n end : /[{;=]/,\n keywords : KEYWORDS,\n excludeEnd : true,\n contains : [\n {\n begin : hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\n returnBegin : true,\n relevance: 0,\n contains : [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n className : 'params',\n begin : /\\(/, end : /\\)/,\n relevance: 0,\n keywords : KEYWORDS,\n contains : [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_NUMBER_MODE,\n {\n // annotation is also used in this language\n className : 'meta',\n begin : '@[A-Za-z]+'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var BACKTICK_ESCAPE = {\n begin: '`[\\\\s\\\\S]'\n };\n\n return {\n case_insensitive: true,\n aliases: [ 'ahk' ],\n keywords: {\n keyword: 'Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group',\n literal: 'A|0 true false NOT AND OR',\n built_in: 'ComSpec Clipboard ClipboardAll ErrorLevel',\n },\n contains: [\n {\n className: 'built_in',\n begin: 'A_[a-zA-Z0-9]+'\n },\n BACKTICK_ESCAPE,\n hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [BACKTICK_ESCAPE]}),\n hljs.COMMENT(';', '$', {relevance: 0}),\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'number',\n begin: hljs.NUMBER_RE,\n relevance: 0\n },\n {\n className: 'subst', // FIXED\n begin: '%(?=[a-zA-Z0-9#_$@])', end: '%',\n illegal: '[^a-zA-Z0-9#_$@]'\n },\n {\n className: 'built_in',\n begin: '^\\\\s*\\\\w+\\\\s*,'\n //I don't really know if this is totally relevant\n },\n {\n className: 'meta', \n begin: '^\\\\s*#\\w+', end:'$',\n relevance: 0\n },\n {\n className: 'symbol',\n contains: [BACKTICK_ESCAPE],\n variants: [\n {begin: '^[^\\\\n\";]+::(?!=)'},\n {begin: '^[^\\\\n\";]+:(?!=)', relevance: 0} // zero relevance as it catches a lot of things\n // followed by a single ':' in many languages\n ]\n },\n {\n // consecutive commas, not for highlighting but just for relevance\n begin: ',\\\\s*,'\n }\n ]\n }\n};","module.exports = function(hljs) {\n var KEYWORDS = 'ByRef Case Const ContinueCase ContinueLoop ' +\n 'Default Dim Do Else ElseIf EndFunc EndIf EndSelect ' +\n 'EndSwitch EndWith Enum Exit ExitLoop For Func ' +\n 'Global If In Local Next ReDim Return Select Static ' +\n 'Step Switch Then To Until Volatile WEnd While With',\n\n LITERAL = 'True False And Null Not Or',\n\n BUILT_IN =\n 'Abs ACos AdlibRegister AdlibUnRegister Asc AscW ASin Assign ATan AutoItSetOption AutoItWinGetTitle AutoItWinSetTitle Beep Binary BinaryLen BinaryMid BinaryToString BitAND BitNOT BitOR BitRotate BitShift BitXOR BlockInput Break Call CDTray Ceiling Chr ChrW ClipGet ClipPut ConsoleRead ConsoleWrite ConsoleWriteError ControlClick ControlCommand ControlDisable ControlEnable ControlFocus ControlGetFocus ControlGetHandle ControlGetPos ControlGetText ControlHide ControlListView ControlMove ControlSend ControlSetText ControlShow ControlTreeView Cos Dec DirCopy DirCreate DirGetSize DirMove DirRemove DllCall DllCallAddress DllCallbackFree DllCallbackGetPtr DllCallbackRegister DllClose DllOpen DllStructCreate DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData DriveGetDrive DriveGetFileSystem DriveGetLabel DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus EnvGet EnvSet EnvUpdate Eval Execute Exp FileChangeDir FileClose FileCopy FileCreateNTFSLink FileCreateShortcut FileDelete FileExists FileFindFirstFile FileFindNextFile FileFlush FileGetAttrib FileGetEncoding FileGetLongName FileGetPos FileGetShortcut FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall FileMove FileOpen FileOpenDialog FileRead FileReadLine FileReadToArray FileRecycle FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName GUICreate GUICtrlCreateAvi GUICtrlCreateButton GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem GUICtrlCreateTreeView GUICtrlCreateTreeViewItem GUICtrlCreateUpdown GUICtrlDelete GUICtrlGetHandle GUICtrlGetState GUICtrlRead GUICtrlRecvMsg GUICtrlRegisterListViewSort GUICtrlSendMsg GUICtrlSendToDummy GUICtrlSetBkColor GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetDefBkColor GUICtrlSetDefColor GUICtrlSetFont GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle GUICtrlSetTip GUIDelete GUIGetCursorInfo GUIGetMsg GUIGetStyle GUIRegisterMsg GUISetAccelerators GUISetBkColor GUISetCoord GUISetCursor GUISetFont GUISetHelp GUISetIcon GUISetOnEvent GUISetState GUISetStyle GUIStartGroup GUISwitch Hex HotKeySet HttpSetProxy HttpSetUserAgent HWnd InetClose InetGet InetGetInfo InetGetSize InetRead IniDelete IniRead IniReadSection IniReadSectionNames IniRenameSection IniWrite IniWriteSection InputBox Int IsAdmin IsArray IsBinary IsBool IsDeclared IsDllStruct IsFloat IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch ProcessClose ProcessExists ProcessGetStats ProcessList ProcessSetPriority ProcessWait ProcessWaitClose ProgressOff ProgressOn ProgressSet Ptr Random RegDelete RegEnumKey RegEnumVal RegRead RegWrite Round Run RunAs RunAsWait RunWait Send SendKeepActive SetError SetExtended ShellExecute ShellExecuteWait Shutdown Sin Sleep SoundPlay SoundSetWaveVolume SplashImageOn SplashOff SplashTextOn Sqrt SRandom StatusbarGetText StderrRead StdinWrite StdioClose StdoutRead String StringAddCR StringCompare StringFormat StringFromASCIIArray StringInStr StringIsAlNum StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft StringLen StringLower StringMid StringRegExp StringRegExpReplace StringReplace StringReverse StringRight StringSplit StringStripCR StringStripWS StringToASCIIArray StringToBinary StringTrimLeft StringTrimRight StringUpper Tan TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIP TCPRecv TCPSend TCPShutdown, UDPShutdown TCPStartup, UDPStartup TimerDiff TimerInit ToolTip TrayCreateItem TrayCreateMenu TrayGetMsg TrayItemDelete TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent TrayItemSetState TrayItemSetText TraySetClick TraySetIcon TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip UBound UDPBind UDPCloseSocket UDPOpen UDPRecv UDPSend VarGetType WinActivate WinActive WinClose WinExists WinFlash WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait',\n\n COMMENT = {\n variants: [\n hljs.COMMENT(';', '$', {relevance: 0}),\n hljs.COMMENT('#cs', '#ce'),\n hljs.COMMENT('#comments-start', '#comments-end')\n ]\n },\n\n VARIABLE = {\n begin: '\\\\$[A-z0-9_]+'\n },\n\n STRING = {\n className: 'string',\n variants: [{\n begin: /\"/,\n end: /\"/,\n contains: [{\n begin: /\"\"/,\n relevance: 0\n }]\n }, {\n begin: /'/,\n end: /'/,\n contains: [{\n begin: /''/,\n relevance: 0\n }]\n }]\n },\n\n NUMBER = {\n variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]\n },\n\n PREPROCESSOR = {\n className: 'meta',\n begin: '#',\n end: '$',\n keywords: {'meta-keyword': 'comments include include-once NoTrayIcon OnAutoItStartRegister pragma compile RequireAdmin'},\n contains: [{\n begin: /\\\\\\n/,\n relevance: 0\n }, {\n beginKeywords: 'include',\n keywords: {'meta-keyword': 'include'},\n end: '$',\n contains: [\n STRING, {\n className: 'meta-string',\n variants: [{\n begin: '<',\n end: '>'\n }, {\n begin: /\"/,\n end: /\"/,\n contains: [{\n begin: /\"\"/,\n relevance: 0\n }]\n }, {\n begin: /'/,\n end: /'/,\n contains: [{\n begin: /''/,\n relevance: 0\n }]\n }]\n }\n ]\n },\n STRING,\n COMMENT\n ]\n },\n\n CONSTANT = {\n className: 'symbol',\n // begin: '@',\n // end: '$',\n // keywords: 'AppDataCommonDir AppDataDir AutoItExe AutoItPID AutoItVersion AutoItX64 COM_EventObj CommonFilesDir Compiled ComputerName ComSpec CPUArch CR CRLF DesktopCommonDir DesktopDepth DesktopDir DesktopHeight DesktopRefresh DesktopWidth DocumentsCommonDir error exitCode exitMethod extended FavoritesCommonDir FavoritesDir GUI_CtrlHandle GUI_CtrlId GUI_DragFile GUI_DragId GUI_DropId GUI_WinHandle HomeDrive HomePath HomeShare HotKeyPressed HOUR IPAddress1 IPAddress2 IPAddress3 IPAddress4 KBLayout LF LocalAppDataDir LogonDNSDomain LogonDomain LogonServer MDAY MIN MON MSEC MUILang MyDocumentsDir NumParams OSArch OSBuild OSLang OSServicePack OSType OSVersion ProgramFilesDir ProgramsCommonDir ProgramsDir ScriptDir ScriptFullPath ScriptLineNumber ScriptName SEC StartMenuCommonDir StartMenuDir StartupCommonDir StartupDir SW_DISABLE SW_ENABLE SW_HIDE SW_LOCK SW_MAXIMIZE SW_MINIMIZE SW_RESTORE SW_SHOW SW_SHOWDEFAULT SW_SHOWMAXIMIZED SW_SHOWMINIMIZED SW_SHOWMINNOACTIVE SW_SHOWNA SW_SHOWNOACTIVATE SW_SHOWNORMAL SW_UNLOCK SystemDir TAB TempDir TRAY_ID TrayIconFlashing TrayIconVisible UserName UserProfileDir WDAY WindowsDir WorkingDir YDAY YEAR',\n // relevance: 5\n begin: '@[A-z0-9_]+'\n },\n\n FUNCTION = {\n className: 'function',\n beginKeywords: 'Func',\n end: '$',\n illegal: '\\\\$|\\\\[|%',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE, {\n className: 'params',\n begin: '\\\\(',\n end: '\\\\)',\n contains: [\n VARIABLE,\n STRING,\n NUMBER\n ]\n }\n ]\n };\n\n return {\n case_insensitive: true,\n illegal: /\\/\\*/,\n keywords: {\n keyword: KEYWORDS,\n built_in: BUILT_IN,\n literal: LITERAL\n },\n contains: [\n COMMENT,\n VARIABLE,\n STRING,\n NUMBER,\n PREPROCESSOR,\n CONSTANT,\n FUNCTION\n ]\n }\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n lexemes: '\\\\.?' + hljs.IDENT_RE,\n keywords: {\n keyword:\n /* mnemonic */\n 'adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs ' +\n 'brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr ' +\n 'clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor ' +\n 'fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul ' +\n 'muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs ' +\n 'sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub ' +\n 'subi swap tst wdr',\n built_in:\n /* general purpose registers */\n 'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 ' +\n 'r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ' +\n /* IO Registers (ATMega128) */\n 'ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h ' +\n 'tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ' +\n 'ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ' +\n 'ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk ' +\n 'tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ' +\n 'ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr ' +\n 'porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ' +\n 'ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf',\n meta:\n '.byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list ' +\n '.listmac .macro .nolist .org .set'\n },\n contains: [\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n ),\n hljs.C_NUMBER_MODE, // 0x..., decimal, float\n hljs.BINARY_NUMBER_MODE, // 0b...\n {\n className: 'number',\n begin: '\\\\b(\\\\$[a-zA-Z0-9]+|0o[0-7]+)' // $..., 0o...\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\'', end: '[^\\\\\\\\]\\'',\n illegal: '[^\\\\\\\\][^\\']'\n },\n {className: 'symbol', begin: '^[A-Za-z0-9_.$]+:'},\n {className: 'meta', begin: '#', end: '$'},\n { // подстановка в «.macro»\n className: 'subst',\n begin: '@[0-9]+'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var VARIABLE = {\n className: 'variable',\n variants: [\n {begin: /\\$[\\w\\d#@][\\w\\d_]*/},\n {begin: /\\$\\{(.*?)}/}\n ]\n };\n var KEYWORDS = 'BEGIN END if else while do for in break continue delete next nextfile function func exit|10';\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {\n begin: /(u|b)?r?'''/, end: /'''/,\n relevance: 10\n },\n {\n begin: /(u|b)?r?\"\"\"/, end: /\"\"\"/,\n relevance: 10\n },\n {\n begin: /(u|r|ur)'/, end: /'/,\n relevance: 10\n },\n {\n begin: /(u|r|ur)\"/, end: /\"/,\n relevance: 10\n },\n {\n begin: /(b|br)'/, end: /'/\n },\n {\n begin: /(b|br)\"/, end: /\"/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n return {\n\t keywords: {\n\t keyword: KEYWORDS\n },\n contains: [\n VARIABLE,\n STRING,\n hljs.REGEXP_MODE,\n hljs.HASH_COMMENT_MODE,\n hljs.NUMBER_MODE\n ]\n }\n};","module.exports = function(hljs) {\n return {\n keywords: 'false int abstract private char boolean static null if for true ' +\n 'while long throw finally protected final return void enum else ' +\n 'break new catch byte super case short default double public try this switch ' +\n 'continue reverse firstfast firstonly forupdate nofetch sum avg minof maxof count ' +\n 'order group by asc desc index hint like dispaly edit client server ttsbegin ' +\n 'ttscommit str real date container anytype common div mod',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '#', end: '$'\n },\n {\n className: 'class',\n beginKeywords: 'class interface', end: '{', excludeEnd: true,\n illegal: ':',\n contains: [\n {beginKeywords: 'extends implements'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var VAR = {\n className: 'variable',\n variants: [\n {begin: /\\$[\\w\\d#@][\\w\\d_]*/},\n {begin: /\\$\\{(.*?)}/}\n ]\n };\n var QUOTE_STRING = {\n className: 'string',\n begin: /\"/, end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR,\n {\n className: 'variable',\n begin: /\\$\\(/, end: /\\)/,\n contains: [hljs.BACKSLASH_ESCAPE]\n }\n ]\n };\n var APOS_STRING = {\n className: 'string',\n begin: /'/, end: /'/\n };\n\n return {\n aliases: ['sh', 'zsh'],\n lexemes: /\\b-?[a-z\\._]+\\b/,\n keywords: {\n keyword:\n 'if then else elif fi for while in do done case esac function',\n literal:\n 'true false',\n built_in:\n // Shell built-ins\n // http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n 'break cd continue eval exec exit export getopts hash pwd readonly return shift test times ' +\n 'trap umask unset ' +\n // Bash built-ins\n 'alias bind builtin caller command declare echo enable help let local logout mapfile printf ' +\n 'read readarray source type typeset ulimit unalias ' +\n // Shell modifiers\n 'set shopt ' +\n // Zsh built-ins\n 'autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles ' +\n 'compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate ' +\n 'fc fg float functions getcap getln history integer jobs kill limit log noglob popd print ' +\n 'pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit ' +\n 'unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof ' +\n 'zpty zregexparse zsocket zstyle ztcp',\n _:\n '-ne -eq -lt -gt -f -d -e -s -l -a' // relevance booster\n },\n contains: [\n {\n className: 'meta',\n begin: /^#![^\\n]+sh\\s*$/,\n relevance: 10\n },\n {\n className: 'function',\n begin: /\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,\n returnBegin: true,\n contains: [hljs.inherit(hljs.TITLE_MODE, {begin: /\\w[\\w\\d_]*/})],\n relevance: 0\n },\n hljs.HASH_COMMENT_MODE,\n QUOTE_STRING,\n APOS_STRING,\n VAR\n ]\n };\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n illegal: '^\\.',\n // Support explicitely typed variables that end with $%! or #.\n lexemes: '[a-zA-Z][a-zA-Z0-9_\\$\\%\\!\\#]*',\n keywords: {\n keyword:\n 'ABS ASC AND ATN AUTO|0 BEEP BLOAD|10 BSAVE|10 CALL CALLS CDBL CHAIN CHDIR CHR$|10 CINT CIRCLE ' +\n 'CLEAR CLOSE CLS COLOR COM COMMON CONT COS CSNG CSRLIN CVD CVI CVS DATA DATE$ ' +\n 'DEFDBL DEFINT DEFSNG DEFSTR DEF|0 SEG USR DELETE DIM DRAW EDIT END ENVIRON ENVIRON$ ' +\n 'EOF EQV ERASE ERDEV ERDEV$ ERL ERR ERROR EXP FIELD FILES FIX FOR|0 FRE GET GOSUB|10 GOTO ' +\n 'HEX$ IF|0 THEN ELSE|0 INKEY$ INP INPUT INPUT# INPUT$ INSTR IMP INT IOCTL IOCTL$ KEY ON ' +\n 'OFF LIST KILL LEFT$ LEN LET LINE LLIST LOAD LOC LOCATE LOF LOG LPRINT USING LSET ' +\n 'MERGE MID$ MKDIR MKD$ MKI$ MKS$ MOD NAME NEW NEXT NOISE NOT OCT$ ON OR PEN PLAY STRIG OPEN OPTION ' +\n 'BASE OUT PAINT PALETTE PCOPY PEEK PMAP POINT POKE POS PRINT PRINT] PSET PRESET ' +\n 'PUT RANDOMIZE READ REM RENUM RESET|0 RESTORE RESUME RETURN|0 RIGHT$ RMDIR RND RSET ' +\n 'RUN SAVE SCREEN SGN SHELL SIN SOUND SPACE$ SPC SQR STEP STICK STOP STR$ STRING$ SWAP ' +\n 'SYSTEM TAB TAN TIME$ TIMER TROFF TRON TO USR VAL VARPTR VARPTR$ VIEW WAIT WHILE ' +\n 'WEND WIDTH WINDOW WRITE XOR'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.COMMENT('REM', '$', {relevance: 10}),\n hljs.COMMENT('\\'', '$', {relevance: 0}),\n {\n // Match line numbers\n className: 'symbol',\n begin: '^[0-9]+\\ ',\n relevance: 10\n },\n {\n // Match typed numeric constants (1000, 12.34!, 1.2e5, 1.5#, 1.2D2)\n className: 'number',\n begin: '\\\\b([0-9]+[0-9edED\\.]*[#\\!]?)',\n relevance: 0\n },\n {\n // Match hexadecimal numbers (&Hxxxx)\n className: 'number',\n begin: '(\\&[hH][0-9a-fA-F]{1,4})'\n },\n {\n // Match octal numbers (&Oxxxxxx)\n className: 'number',\n begin: '(\\&[oO][0-7]{1,6})'\n }\n ]\n };\n};","module.exports = function(hljs){\n return {\n contains: [\n // Attribute\n {\n className: 'attribute',\n begin: /</, end: />/\n },\n // Specific\n {\n begin: /::=/,\n starts: {\n end: /$/,\n contains: [\n {\n begin: /</, end: />/\n },\n // Common\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n }\n }\n ]\n };\n};","module.exports = function(hljs){\n var LITERAL = {\n className: 'literal',\n begin: '[\\\\+\\\\-]',\n relevance: 0\n };\n return {\n aliases: ['bf'],\n contains: [\n hljs.COMMENT(\n '[^\\\\[\\\\]\\\\.,\\\\+\\\\-<> \\r\\n]',\n '[\\\\[\\\\]\\\\.,\\\\+\\\\-<> \\r\\n]',\n {\n returnEnd: true,\n relevance: 0\n }\n ),\n {\n className: 'title',\n begin: '[\\\\[\\\\]]',\n relevance: 0\n },\n {\n className: 'string',\n begin: '[\\\\.,]',\n relevance: 0\n },\n {\n // this mode works as the only relevance counter\n begin: /\\+\\+|\\-\\-/, returnBegin: true,\n contains: [LITERAL]\n },\n LITERAL\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS =\n 'div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to ' +\n 'until while with var';\n var LITERALS = 'false true';\n var COMMENT_MODES = [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT(\n /\\{/,\n /\\}/,\n {\n relevance: 0\n }\n ),\n hljs.COMMENT(\n /\\(\\*/,\n /\\*\\)/,\n {\n relevance: 10\n }\n )\n ];\n var STRING = {\n className: 'string',\n begin: /'/, end: /'/,\n contains: [{begin: /''/}]\n };\n var CHAR_STRING = {\n className: 'string', begin: /(#\\d+)+/\n };\n var DATE = {\n className: 'number',\n begin: '\\\\b\\\\d+(\\\\.\\\\d+)?(DT|D|T)',\n relevance: 0\n };\n var DBL_QUOTED_VARIABLE = {\n className: 'string', // not a string technically but makes sense to be highlighted in the same style\n begin: '\"',\n end: '\"'\n };\n\n var PROCEDURE = {\n className: 'function',\n beginKeywords: 'procedure', end: /[:;]/,\n keywords: 'procedure|10',\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n contains: [STRING, CHAR_STRING]\n }\n ].concat(COMMENT_MODES)\n };\n\n var OBJECT = {\n className: 'class',\n begin: 'OBJECT (Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query) (\\\\d+) ([^\\\\r\\\\n]+)',\n returnBegin: true,\n contains: [\n hljs.TITLE_MODE,\n PROCEDURE\n ]\n };\n\n return {\n case_insensitive: true,\n keywords: { keyword: KEYWORDS, literal: LITERALS },\n illegal: /\\/\\*/,\n contains: [\n STRING, CHAR_STRING,\n DATE, DBL_QUOTED_VARIABLE,\n hljs.NUMBER_MODE,\n OBJECT,\n PROCEDURE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['capnp'],\n keywords: {\n keyword:\n 'struct enum interface union group import using const annotation extends in of on as with from fixed',\n built_in:\n 'Void Bool Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 Float32 Float64 ' +\n 'Text Data AnyPointer AnyStruct Capability List',\n literal:\n 'true false'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n hljs.HASH_COMMENT_MODE,\n {\n className: 'meta',\n begin: /@0x[\\w\\d]{16};/,\n illegal: /\\n/\n },\n {\n className: 'symbol',\n begin: /@\\d+\\b/\n },\n {\n className: 'class',\n beginKeywords: 'struct enum', end: /\\{/,\n illegal: /\\n/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\n })\n ]\n },\n {\n className: 'class',\n beginKeywords: 'interface', end: /\\{/,\n illegal: /\\n/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\n })\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n // 2.3. Identifiers and keywords\n var KEYWORDS =\n 'assembly module package import alias class interface object given value ' +\n 'assign void function new of extends satisfies abstracts in out return ' +\n 'break continue throw assert dynamic if else switch case for while try ' +\n 'catch finally then let this outer super is exists nonempty';\n // 7.4.1 Declaration Modifiers\n var DECLARATION_MODIFIERS =\n 'shared abstract formal default actual variable late native deprecated' +\n 'final sealed annotation suppressWarnings small';\n // 7.4.2 Documentation\n var DOCUMENTATION =\n 'doc by license see throws tagged';\n var SUBST = {\n className: 'subst', excludeBegin: true, excludeEnd: true,\n begin: /``/, end: /``/,\n keywords: KEYWORDS,\n relevance: 10\n };\n var EXPRESSIONS = [\n {\n // verbatim string\n className: 'string',\n begin: '\"\"\"',\n end: '\"\"\"',\n relevance: 10\n },\n {\n // string literal or template\n className: 'string',\n begin: '\"', end: '\"',\n contains: [SUBST]\n },\n {\n // character literal\n className: 'string',\n begin: \"'\",\n end: \"'\"\n },\n {\n // numeric literal\n className: 'number',\n begin: '#[0-9a-fA-F_]+|\\\\$[01_]+|[0-9_]+(?:\\\\.[0-9_](?:[eE][+-]?\\\\d+)?)?[kMGTPmunpf]?',\n relevance: 0\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n return {\n keywords: {\n keyword: KEYWORDS + ' ' + DECLARATION_MODIFIERS,\n meta: DOCUMENTATION\n },\n illegal: '\\\\$[^01]|#[^0-9a-fA-F]',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT('/\\\\*', '\\\\*/', {contains: ['self']}),\n {\n // compiler annotation\n className: 'meta',\n begin: '@[a-z]\\\\w*(?:\\\\:\\\"[^\\\"]*\\\")?'\n }\n ].concat(EXPRESSIONS)\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['clean','icl','dcl'],\n keywords: {\n keyword:\n 'if let in with where case of class instance otherwise ' +\n 'implementation definition system module from import qualified as ' +\n 'special code inline foreign export ccall stdcall generic derive ' +\n 'infix infixl infixr',\n literal:\n 'True False'\n },\n contains: [\n\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n\n {begin: '->|<-[|:]?|::|#!?|>>=|\\\\{\\\\||\\\\|\\\\}|:==|=:|\\\\.\\\\.|<>|`'} // relevance booster\n ]\n };\n};","module.exports = function(hljs) {\n var keywords = {\n 'builtin-name':\n // Clojure keywords\n 'def defonce cond apply if-not if-let if not not= = < > <= >= == + / * - rem '+\n 'quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? '+\n 'set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? '+\n 'class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? '+\n 'string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . '+\n 'inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last '+\n 'drop-while while intern condp case reduced cycle split-at split-with repeat replicate '+\n 'iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext '+\n 'nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends '+\n 'add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler '+\n 'set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter '+\n 'monitor-exit defmacro defn defn- macroexpand macroexpand-1 for dosync and or '+\n 'when when-not when-let comp juxt partial sequence memoize constantly complement identity assert '+\n 'peek pop doto proxy defstruct first rest cons defprotocol cast coll deftype defrecord last butlast '+\n 'sigs reify second ffirst fnext nfirst nnext defmulti defmethod meta with-meta ns in-ns create-ns import '+\n 'refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! '+\n 'assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger '+\n 'bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline '+\n 'flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking '+\n 'assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! '+\n 'reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! '+\n 'new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty '+\n 'hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list '+\n 'disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer '+\n 'chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate '+\n 'unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta '+\n 'lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize'\n };\n\n var SYMBOLSTART = 'a-zA-Z_\\\\-!.?+*=<>&#\\'';\n var SYMBOL_RE = '[' + SYMBOLSTART + '][' + SYMBOLSTART + '0-9/;:]*';\n var SIMPLE_NUMBER_RE = '[-+]?\\\\d+(\\\\.\\\\d+)?';\n\n var SYMBOL = {\n begin: SYMBOL_RE,\n relevance: 0\n };\n var NUMBER = {\n className: 'number', begin: SIMPLE_NUMBER_RE,\n relevance: 0\n };\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});\n var COMMENT = hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n );\n var LITERAL = {\n className: 'literal',\n begin: /\\b(true|false|nil)\\b/\n };\n var COLLECTION = {\n begin: '[\\\\[\\\\{]', end: '[\\\\]\\\\}]'\n };\n var HINT = {\n className: 'comment',\n begin: '\\\\^' + SYMBOL_RE\n };\n var HINT_COL = hljs.COMMENT('\\\\^\\\\{', '\\\\}');\n var KEY = {\n className: 'symbol',\n begin: '[:]{1,2}' + SYMBOL_RE\n };\n var LIST = {\n begin: '\\\\(', end: '\\\\)'\n };\n var BODY = {\n endsWithParent: true,\n relevance: 0\n };\n var NAME = {\n keywords: keywords,\n lexemes: SYMBOL_RE,\n className: 'name', begin: SYMBOL_RE,\n starts: BODY\n };\n var DEFAULT_CONTAINS = [LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL, SYMBOL];\n\n LIST.contains = [hljs.COMMENT('comment', ''), NAME, BODY];\n BODY.contains = DEFAULT_CONTAINS;\n COLLECTION.contains = DEFAULT_CONTAINS;\n HINT_COL.contains = [COLLECTION];\n\n return {\n aliases: ['clj'],\n illegal: /\\S/,\n contains: [LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL]\n }\n};","module.exports = function(hljs) {\n return {\n contains: [\n {\n className: 'meta',\n begin: /^([\\w.-]+|\\s*#_)=>/,\n starts: {\n end: /$/,\n subLanguage: 'clojure'\n }\n }\n ]\n }\n};","module.exports = function(hljs) {\n return {\n aliases: ['cmake.in'],\n case_insensitive: true,\n keywords: {\n keyword:\n // scripting commands\n 'break cmake_host_system_information cmake_minimum_required cmake_parse_arguments ' +\n 'cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro ' +\n 'endwhile execute_process file find_file find_library find_package find_path ' +\n 'find_program foreach function get_cmake_property get_directory_property ' +\n 'get_filename_component get_property if include include_guard list macro ' +\n 'mark_as_advanced math message option return separate_arguments ' +\n 'set_directory_properties set_property set site_name string unset variable_watch while ' +\n // project commands\n 'add_compile_definitions add_compile_options add_custom_command add_custom_target ' +\n 'add_definitions add_dependencies add_executable add_library add_link_options ' +\n 'add_subdirectory add_test aux_source_directory build_command create_test_sourcelist ' +\n 'define_property enable_language enable_testing export fltk_wrap_ui ' +\n 'get_source_file_property get_target_property get_test_property include_directories ' +\n 'include_external_msproject include_regular_expression install link_directories ' +\n 'link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions ' +\n 'set_source_files_properties set_target_properties set_tests_properties source_group ' +\n 'target_compile_definitions target_compile_features target_compile_options ' +\n 'target_include_directories target_link_directories target_link_libraries ' +\n 'target_link_options target_sources try_compile try_run ' +\n // CTest commands\n 'ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ' +\n 'ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ' +\n 'ctest_test ctest_update ctest_upload ' +\n // deprecated commands\n 'build_name exec_program export_library_dependencies install_files install_programs ' +\n 'install_targets load_command make_directory output_required_files remove ' +\n 'subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file ' +\n 'qt5_use_modules qt5_use_package qt5_wrap_cpp ' +\n // core keywords\n 'on off true false and or not command policy target test exists is_newer_than ' +\n 'is_directory is_symlink is_absolute matches less greater equal less_equal ' +\n 'greater_equal strless strgreater strequal strless_equal strgreater_equal version_less ' +\n 'version_greater version_equal version_less_equal version_greater_equal in_list defined'\n },\n contains: [\n {\n className: 'variable',\n begin: '\\\\${', end: '}'\n },\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n // JS keywords\n 'in if for while finally new do return else break catch instanceof throw try this ' +\n 'switch continue typeof delete debugger super yield import export from as default await ' +\n // Coffee keywords\n 'then unless until loop of by when and or is isnt not',\n literal:\n // JS literals\n 'true false null undefined ' +\n // Coffee literals\n 'yes no on off',\n built_in:\n 'npm require console print module global window document'\n };\n var JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\n var SUBST = {\n className: 'subst',\n begin: /#\\{/, end: /}/,\n keywords: KEYWORDS\n };\n var EXPRESSIONS = [\n hljs.BINARY_NUMBER_MODE,\n hljs.inherit(hljs.C_NUMBER_MODE, {starts: {end: '(\\\\s*/)?', relevance: 0}}), // a number tries to eat the following slash to prevent treating it as a regexp\n {\n className: 'string',\n variants: [\n {\n begin: /'''/, end: /'''/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /'/, end: /'/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /\"\"\"/, end: /\"\"\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n {\n begin: /\"/, end: /\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n }\n ]\n },\n {\n className: 'regexp',\n variants: [\n {\n begin: '///', end: '///',\n contains: [SUBST, hljs.HASH_COMMENT_MODE]\n },\n {\n begin: '//[gim]*',\n relevance: 0\n },\n {\n // regex can't start with space to parse x / 2 / 3 as two divisions\n // regex can't start with *, and it supports an \"illegal\" in the main mode\n begin: /\\/(?![ *])(\\\\\\/|.)*?\\/[gim]*(?=\\W|$)/\n }\n ]\n },\n {\n begin: '@' + JS_IDENT_RE // relevance booster\n },\n {\n subLanguage: 'javascript',\n excludeBegin: true, excludeEnd: true,\n variants: [\n {\n begin: '```', end: '```',\n },\n {\n begin: '`', end: '`',\n }\n ]\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: JS_IDENT_RE});\n var PARAMS_RE = '(\\\\(.*\\\\))?\\\\s*\\\\B[-=]>';\n var PARAMS = {\n className: 'params',\n begin: '\\\\([^\\\\(]', returnBegin: true,\n /* We need another contained nameless mode to not have every nested\n pair of parens to be called \"params\" */\n contains: [{\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n contains: ['self'].concat(EXPRESSIONS)\n }]\n };\n\n return {\n aliases: ['coffee', 'cson', 'iced'],\n keywords: KEYWORDS,\n illegal: /\\/\\*/,\n contains: EXPRESSIONS.concat([\n hljs.COMMENT('###', '###'),\n hljs.HASH_COMMENT_MODE,\n {\n className: 'function',\n begin: '^\\\\s*' + JS_IDENT_RE + '\\\\s*=\\\\s*' + PARAMS_RE, end: '[-=]>',\n returnBegin: true,\n contains: [TITLE, PARAMS]\n },\n {\n // anonymous function start\n begin: /[:\\(,=]\\s*/,\n relevance: 0,\n contains: [\n {\n className: 'function',\n begin: PARAMS_RE, end: '[-=]>',\n returnBegin: true,\n contains: [PARAMS]\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class',\n end: '$',\n illegal: /[:=\"\\[\\]]/,\n contains: [\n {\n beginKeywords: 'extends',\n endsWithParent: true,\n illegal: /[:=\"\\[\\]]/,\n contains: [TITLE]\n },\n TITLE\n ]\n },\n {\n begin: JS_IDENT_RE + ':', end: ':',\n returnBegin: true, returnEnd: true,\n relevance: 0\n }\n ])\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword:\n '_ as at cofix else end exists exists2 fix for forall fun if IF in let ' +\n 'match mod Prop return Set then Type using where with ' +\n 'Abort About Add Admit Admitted All Arguments Assumptions Axiom Back BackTo ' +\n 'Backtrack Bind Blacklist Canonical Cd Check Class Classes Close Coercion ' +\n 'Coercions CoFixpoint CoInductive Collection Combined Compute Conjecture ' +\n 'Conjectures Constant constr Constraint Constructors Context Corollary ' +\n 'CreateHintDb Cut Declare Defined Definition Delimit Dependencies Dependent' +\n 'Derive Drop eauto End Equality Eval Example Existential Existentials ' +\n 'Existing Export exporting Extern Extract Extraction Fact Field Fields File ' +\n 'Fixpoint Focus for From Function Functional Generalizable Global Goal Grab ' +\n 'Grammar Graph Guarded Heap Hint HintDb Hints Hypotheses Hypothesis ident ' +\n 'Identity If Immediate Implicit Import Include Inductive Infix Info Initial ' +\n 'Inline Inspect Instance Instances Intro Intros Inversion Inversion_clear ' +\n 'Language Left Lemma Let Libraries Library Load LoadPath Local Locate Ltac ML ' +\n 'Mode Module Modules Monomorphic Morphism Next NoInline Notation Obligation ' +\n 'Obligations Opaque Open Optimize Options Parameter Parameters Parametric ' +\n 'Path Paths pattern Polymorphic Preterm Print Printing Program Projections ' +\n 'Proof Proposition Pwd Qed Quit Rec Record Recursive Redirect Relation Remark ' +\n 'Remove Require Reserved Reset Resolve Restart Rewrite Right Ring Rings Save ' +\n 'Scheme Scope Scopes Script Search SearchAbout SearchHead SearchPattern ' +\n 'SearchRewrite Section Separate Set Setoid Show Solve Sorted Step Strategies ' +\n 'Strategy Structure SubClass Table Tables Tactic Term Test Theorem Time ' +\n 'Timeout Transparent Type Typeclasses Types Undelimit Undo Unfocus Unfocused ' +\n 'Unfold Universe Universes Unset Unshelve using Variable Variables Variant ' +\n 'Verbose Visibility where with',\n built_in:\n 'abstract absurd admit after apply as assert assumption at auto autorewrite ' +\n 'autounfold before bottom btauto by case case_eq cbn cbv change ' +\n 'classical_left classical_right clear clearbody cofix compare compute ' +\n 'congruence constr_eq constructor contradict contradiction cut cutrewrite ' +\n 'cycle decide decompose dependent destruct destruction dintuition ' +\n 'discriminate discrR do double dtauto eapply eassumption eauto ecase ' +\n 'econstructor edestruct ediscriminate eelim eexact eexists einduction ' +\n 'einjection eleft elim elimtype enough equality erewrite eright ' +\n 'esimplify_eq esplit evar exact exactly_once exfalso exists f_equal fail ' +\n 'field field_simplify field_simplify_eq first firstorder fix fold fourier ' +\n 'functional generalize generalizing gfail give_up has_evar hnf idtac in ' +\n 'induction injection instantiate intro intro_pattern intros intuition ' +\n 'inversion inversion_clear is_evar is_var lapply lazy left lia lra move ' +\n 'native_compute nia nsatz omega once pattern pose progress proof psatz quote ' +\n 'record red refine reflexivity remember rename repeat replace revert ' +\n 'revgoals rewrite rewrite_strat right ring ring_simplify rtauto set ' +\n 'setoid_reflexivity setoid_replace setoid_rewrite setoid_symmetry ' +\n 'setoid_transitivity shelve shelve_unifiable simpl simple simplify_eq solve ' +\n 'specialize split split_Rabs split_Rmult stepl stepr subst sum swap ' +\n 'symmetry tactic tauto time timeout top transitivity trivial try tryif ' +\n 'unfold unify until using vm_compute with'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.COMMENT('\\\\(\\\\*', '\\\\*\\\\)'),\n hljs.C_NUMBER_MODE,\n {\n className: 'type',\n excludeBegin: true,\n begin: '\\\\|\\\\s*',\n end: '\\\\w+'\n },\n {begin: /[-=]>/} // relevance booster\n ]\n };\n};","module.exports = function cos (hljs) {\n\n var STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '\"',\n end: '\"',\n contains: [{ // escaped\n begin: \"\\\"\\\"\",\n relevance: 0\n }]\n }\n ]\n };\n\n var NUMBERS = {\n className: \"number\",\n begin: \"\\\\b(\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)\",\n relevance: 0\n };\n\n var COS_KEYWORDS =\n 'property parameter class classmethod clientmethod extends as break ' +\n 'catch close continue do d|0 else elseif for goto halt hang h|0 if job ' +\n 'j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 ' +\n 'tcommit throw trollback try tstart use view while write w|0 xecute x|0 ' +\n 'zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert ' +\n 'zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit ' +\n 'zsync ascii';\n\n // registered function - no need in them due to all functions are highlighted,\n // but I'll just leave this here.\n\n //\"$bit\", \"$bitcount\",\n //\"$bitfind\", \"$bitlogic\", \"$case\", \"$char\", \"$classmethod\", \"$classname\",\n //\"$compile\", \"$data\", \"$decimal\", \"$double\", \"$extract\", \"$factor\",\n //\"$find\", \"$fnumber\", \"$get\", \"$increment\", \"$inumber\", \"$isobject\",\n //\"$isvaliddouble\", \"$isvalidnum\", \"$justify\", \"$length\", \"$list\",\n //\"$listbuild\", \"$listdata\", \"$listfind\", \"$listfromstring\", \"$listget\",\n //\"$listlength\", \"$listnext\", \"$listsame\", \"$listtostring\", \"$listvalid\",\n //\"$locate\", \"$match\", \"$method\", \"$name\", \"$nconvert\", \"$next\",\n //\"$normalize\", \"$now\", \"$number\", \"$order\", \"$parameter\", \"$piece\",\n //\"$prefetchoff\", \"$prefetchon\", \"$property\", \"$qlength\", \"$qsubscript\",\n //\"$query\", \"$random\", \"$replace\", \"$reverse\", \"$sconvert\", \"$select\",\n //\"$sortbegin\", \"$sortend\", \"$stack\", \"$text\", \"$translate\", \"$view\",\n //\"$wascii\", \"$wchar\", \"$wextract\", \"$wfind\", \"$wiswide\", \"$wlength\",\n //\"$wreverse\", \"$xecute\", \"$zabs\", \"$zarccos\", \"$zarcsin\", \"$zarctan\",\n //\"$zcos\", \"$zcot\", \"$zcsc\", \"$zdate\", \"$zdateh\", \"$zdatetime\",\n //\"$zdatetimeh\", \"$zexp\", \"$zhex\", \"$zln\", \"$zlog\", \"$zpower\", \"$zsec\",\n //\"$zsin\", \"$zsqr\", \"$ztan\", \"$ztime\", \"$ztimeh\", \"$zboolean\",\n //\"$zconvert\", \"$zcrc\", \"$zcyc\", \"$zdascii\", \"$zdchar\", \"$zf\",\n //\"$ziswide\", \"$zlascii\", \"$zlchar\", \"$zname\", \"$zposition\", \"$zqascii\",\n //\"$zqchar\", \"$zsearch\", \"$zseek\", \"$zstrip\", \"$zwascii\", \"$zwchar\",\n //\"$zwidth\", \"$zwpack\", \"$zwbpack\", \"$zwunpack\", \"$zwbunpack\", \"$zzenkaku\",\n //\"$change\", \"$mv\", \"$mvat\", \"$mvfmt\", \"$mvfmts\", \"$mviconv\",\n //\"$mviconvs\", \"$mvinmat\", \"$mvlover\", \"$mvoconv\", \"$mvoconvs\", \"$mvraise\",\n //\"$mvtrans\", \"$mvv\", \"$mvname\", \"$zbitand\", \"$zbitcount\", \"$zbitfind\",\n //\"$zbitget\", \"$zbitlen\", \"$zbitnot\", \"$zbitor\", \"$zbitset\", \"$zbitstr\",\n //\"$zbitxor\", \"$zincrement\", \"$znext\", \"$zorder\", \"$zprevious\", \"$zsort\",\n //\"device\", \"$ecode\", \"$estack\", \"$etrap\", \"$halt\", \"$horolog\",\n //\"$io\", \"$job\", \"$key\", \"$namespace\", \"$principal\", \"$quit\", \"$roles\",\n //\"$storage\", \"$system\", \"$test\", \"$this\", \"$tlevel\", \"$username\",\n //\"$x\", \"$y\", \"$za\", \"$zb\", \"$zchild\", \"$zeof\", \"$zeos\", \"$zerror\",\n //\"$zhorolog\", \"$zio\", \"$zjob\", \"$zmode\", \"$znspace\", \"$zparent\", \"$zpi\",\n //\"$zpos\", \"$zreference\", \"$zstorage\", \"$ztimestamp\", \"$ztimezone\",\n //\"$ztrap\", \"$zversion\"\n\n return {\n case_insensitive: true,\n aliases: [\"cos\", \"cls\"],\n keywords: COS_KEYWORDS,\n contains: [\n NUMBERS,\n STRINGS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: \"comment\",\n begin: /;/, end: \"$\",\n relevance: 0\n },\n { // Functions and user-defined functions: write $ztime(60*60*3), $$myFunc(10), $$^Val(1)\n className: \"built_in\",\n begin: /(?:\\$\\$?|\\.\\.)\\^?[a-zA-Z]+/\n },\n { // Macro command: quit $$$OK\n className: \"built_in\",\n begin: /\\$\\$\\$[a-zA-Z]+/\n },\n { // Special (global) variables: write %request.Content; Built-in classes: %Library.Integer\n className: \"built_in\",\n begin: /%[a-z]+(?:\\.[a-z]+)*/\n },\n { // Global variable: set ^globalName = 12 write ^globalName\n className: \"symbol\",\n begin: /\\^%?[a-zA-Z][\\w]*/\n },\n { // Some control constructions: do ##class(Package.ClassName).Method(), ##super()\n className: \"keyword\",\n begin: /##class|##super|#define|#dim/\n },\n\n // sub-languages: are not fully supported by hljs by 11/15/2015\n // left for the future implementation.\n {\n begin: /&sql\\(/, end: /\\)/,\n excludeBegin: true, excludeEnd: true,\n subLanguage: \"sql\"\n },\n {\n begin: /&(js|jscript|javascript)</, end: />/,\n excludeBegin: true, excludeEnd: true,\n subLanguage: \"javascript\"\n },\n {\n // this brakes first and last tag, but this is the only way to embed a valid html\n begin: /&html<\\s*</, end: />\\s*>/,\n subLanguage: \"xml\"\n }\n ]\n };\n};","module.exports = function(hljs) {\n var RESOURCES = 'primitive rsc_template';\n\n var COMMANDS = 'group clone ms master location colocation order fencing_topology ' +\n 'rsc_ticket acl_target acl_group user role ' +\n 'tag xml';\n\n var PROPERTY_SETS = 'property rsc_defaults op_defaults';\n\n var KEYWORDS = 'params meta operations op rule attributes utilization';\n\n var OPERATORS = 'read write deny defined not_defined in_range date spec in ' +\n 'ref reference attribute type xpath version and or lt gt tag ' +\n 'lte gte eq ne \\\\';\n\n var TYPES = 'number string';\n\n var LITERALS = 'Master Started Slave Stopped start promote demote stop monitor true false';\n\n return {\n aliases: ['crm', 'pcmk'],\n case_insensitive: true,\n keywords: {\n keyword: KEYWORDS + ' ' + OPERATORS + ' ' + TYPES,\n literal: LITERALS\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n beginKeywords: 'node',\n starts: {\n end: '\\\\s*([\\\\w_-]+:)?',\n starts: {\n className: 'title',\n end: '\\\\s*[\\\\$\\\\w_][\\\\w_-]*'\n }\n }\n },\n {\n beginKeywords: RESOURCES,\n starts: {\n className: 'title',\n end: '\\\\s*[\\\\$\\\\w_][\\\\w_-]*',\n starts: {\n end: '\\\\s*@?[\\\\w_][\\\\w_\\\\.:-]*'\n }\n }\n },\n {\n begin: '\\\\b(' + COMMANDS.split(' ').join('|') + ')\\\\s+',\n keywords: COMMANDS,\n starts: {\n className: 'title',\n end: '[\\\\$\\\\w_][\\\\w_-]*'\n }\n },\n {\n beginKeywords: PROPERTY_SETS,\n starts: {\n className: 'title',\n end: '\\\\s*([\\\\w_-]+:)?'\n }\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'meta',\n begin: '(ocf|systemd|service|lsb):[\\\\w_:-]+',\n relevance: 0\n },\n {\n className: 'number',\n begin: '\\\\b\\\\d+(\\\\.\\\\d+)?(ms|s|h|m)?',\n relevance: 0\n },\n {\n className: 'literal',\n begin: '[-]?(infinity|inf)',\n relevance: 0\n },\n {\n className: 'attr',\n begin: /([A-Za-z\\$_\\#][\\w_-]+)=/,\n relevance: 0\n },\n {\n className: 'tag',\n begin: '</?',\n end: '/?>',\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n var NUM_SUFFIX = '(_[uif](8|16|32|64))?';\n var CRYSTAL_IDENT_RE = '[a-zA-Z_]\\\\w*[!?=]?';\n var RE_STARTER = '!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|' +\n '>>|>|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n var CRYSTAL_METHOD_RE = '[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\][=?]?';\n var CRYSTAL_KEYWORDS = {\n keyword:\n 'abstract alias as as? asm begin break case class def do else elsif end ensure enum extend for fun if ' +\n 'include instance_sizeof is_a? lib macro module next nil? of out pointerof private protected rescue responds_to? ' +\n 'return require select self sizeof struct super then type typeof union uninitialized unless until when while with yield ' +\n '__DIR__ __END_LINE__ __FILE__ __LINE__',\n literal: 'false nil true'\n };\n var SUBST = {\n className: 'subst',\n begin: '#{', end: '}',\n keywords: CRYSTAL_KEYWORDS\n };\n var EXPANSION = {\n className: 'template-variable',\n variants: [\n {begin: '\\\\{\\\\{', end: '\\\\}\\\\}'},\n {begin: '\\\\{%', end: '%\\\\}'}\n ],\n keywords: CRYSTAL_KEYWORDS\n };\n\n function recursiveParen(begin, end) {\n var\n contains = [{begin: begin, end: end}];\n contains[0].contains = contains;\n return contains;\n }\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {begin: /'/, end: /'/},\n {begin: /\"/, end: /\"/},\n {begin: /`/, end: /`/},\n {begin: '%w?\\\\(', end: '\\\\)', contains: recursiveParen('\\\\(', '\\\\)')},\n {begin: '%w?\\\\[', end: '\\\\]', contains: recursiveParen('\\\\[', '\\\\]')},\n {begin: '%w?{', end: '}', contains: recursiveParen('{', '}')},\n {begin: '%w?<', end: '>', contains: recursiveParen('<', '>')},\n {begin: '%w?/', end: '/'},\n {begin: '%w?%', end: '%'},\n {begin: '%w?-', end: '-'},\n {begin: '%w?\\\\|', end: '\\\\|'},\n {begin: /<<-\\w+$/, end: /^\\s*\\w+$/},\n ],\n relevance: 0,\n };\n var Q_STRING = {\n className: 'string',\n variants: [\n {begin: '%q\\\\(', end: '\\\\)', contains: recursiveParen('\\\\(', '\\\\)')},\n {begin: '%q\\\\[', end: '\\\\]', contains: recursiveParen('\\\\[', '\\\\]')},\n {begin: '%q{', end: '}', contains: recursiveParen('{', '}')},\n {begin: '%q<', end: '>', contains: recursiveParen('<', '>')},\n {begin: '%q/', end: '/'},\n {begin: '%q%', end: '%'},\n {begin: '%q-', end: '-'},\n {begin: '%q\\\\|', end: '\\\\|'},\n {begin: /<<-'\\w+'$/, end: /^\\s*\\w+$/},\n ],\n relevance: 0,\n };\n var REGEXP = {\n begin: '(' + RE_STARTER + ')\\\\s*',\n contains: [\n {\n className: 'regexp',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {begin: '//[a-z]*', relevance: 0},\n {begin: '/', end: '/[a-z]*'},\n {begin: '%r\\\\(', end: '\\\\)', contains: recursiveParen('\\\\(', '\\\\)')},\n {begin: '%r\\\\[', end: '\\\\]', contains: recursiveParen('\\\\[', '\\\\]')},\n {begin: '%r{', end: '}', contains: recursiveParen('{', '}')},\n {begin: '%r<', end: '>', contains: recursiveParen('<', '>')},\n {begin: '%r/', end: '/'},\n {begin: '%r%', end: '%'},\n {begin: '%r-', end: '-'},\n {begin: '%r\\\\|', end: '\\\\|'},\n ]\n }\n ],\n relevance: 0\n };\n var REGEXP2 = {\n className: 'regexp',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {begin: '%r\\\\(', end: '\\\\)', contains: recursiveParen('\\\\(', '\\\\)')},\n {begin: '%r\\\\[', end: '\\\\]', contains: recursiveParen('\\\\[', '\\\\]')},\n {begin: '%r{', end: '}', contains: recursiveParen('{', '}')},\n {begin: '%r<', end: '>', contains: recursiveParen('<', '>')},\n {begin: '%r/', end: '/'},\n {begin: '%r%', end: '%'},\n {begin: '%r-', end: '-'},\n {begin: '%r\\\\|', end: '\\\\|'},\n ],\n relevance: 0\n };\n var ATTRIBUTE = {\n className: 'meta',\n begin: '@\\\\[', end: '\\\\]',\n contains: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'meta-string'})\n ]\n };\n var CRYSTAL_DEFAULT_CONTAINS = [\n EXPANSION,\n STRING,\n Q_STRING,\n REGEXP,\n REGEXP2,\n ATTRIBUTE,\n hljs.HASH_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'class module struct', end: '$|;',\n illegal: /=/,\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.inherit(hljs.TITLE_MODE, {begin: '[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?'}),\n {begin: '<'} // relevance booster for inheritance\n ]\n },\n {\n className: 'class',\n beginKeywords: 'lib enum union', end: '$|;',\n illegal: /=/,\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.inherit(hljs.TITLE_MODE, {begin: '[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?'}),\n ],\n relevance: 10\n },\n {\n className: 'function',\n beginKeywords: 'def', end: /\\B\\b/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: CRYSTAL_METHOD_RE,\n endsParent: true\n })\n ]\n },\n {\n className: 'function',\n beginKeywords: 'fun macro', end: /\\B\\b/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: CRYSTAL_METHOD_RE,\n endsParent: true\n })\n ],\n relevance: 5\n },\n {\n className: 'symbol',\n begin: hljs.UNDERSCORE_IDENT_RE + '(\\\\!|\\\\?)?:',\n relevance: 0\n },\n {\n className: 'symbol',\n begin: ':',\n contains: [STRING, {begin: CRYSTAL_METHOD_RE}],\n relevance: 0\n },\n {\n className: 'number',\n variants: [\n { begin: '\\\\b0b([01_]*[01])' + NUM_SUFFIX },\n { begin: '\\\\b0o([0-7_]*[0-7])' + NUM_SUFFIX },\n { begin: '\\\\b0x([A-Fa-f0-9_]*[A-Fa-f0-9])' + NUM_SUFFIX },\n { begin: '\\\\b(([0-9][0-9_]*[0-9]|[0-9])(\\\\.[0-9_]*[0-9])?([eE][+-]?[0-9_]*[0-9])?)' + NUM_SUFFIX}\n ],\n relevance: 0\n }\n ];\n SUBST.contains = CRYSTAL_DEFAULT_CONTAINS;\n EXPANSION.contains = CRYSTAL_DEFAULT_CONTAINS.slice(1); // without EXPANSION\n\n return {\n aliases: ['cr'],\n lexemes: CRYSTAL_IDENT_RE,\n keywords: CRYSTAL_KEYWORDS,\n contains: CRYSTAL_DEFAULT_CONTAINS\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n // Normal keywords.\n 'abstract as base bool break byte case catch char checked const continue decimal ' +\n 'default delegate do double enum event explicit extern finally fixed float ' +\n 'for foreach goto if implicit in int interface internal is lock long nameof ' +\n 'object operator out override params private protected public readonly ref sbyte ' +\n 'sealed short sizeof stackalloc static string struct switch this try typeof ' +\n 'uint ulong unchecked unsafe ushort using virtual void volatile while ' +\n // Contextual keywords.\n 'add alias ascending async await by descending dynamic equals from get global group into join ' +\n 'let on orderby partial remove select set value var where yield',\n literal:\n 'null false true'\n };\n var NUMBERS = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0b[01\\']+)' },\n { begin: '(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)(u|U|l|L|ul|UL|f|F|b|B)' },\n { begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)' }\n ],\n relevance: 0\n };\n var VERBATIM_STRING = {\n className: 'string',\n begin: '@\"', end: '\"',\n contains: [{begin: '\"\"'}]\n };\n var VERBATIM_STRING_NO_LF = hljs.inherit(VERBATIM_STRING, {illegal: /\\n/});\n var SUBST = {\n className: 'subst',\n begin: '{', end: '}',\n keywords: KEYWORDS\n };\n var SUBST_NO_LF = hljs.inherit(SUBST, {illegal: /\\n/});\n var INTERPOLATED_STRING = {\n className: 'string',\n begin: /\\$\"/, end: '\"',\n illegal: /\\n/,\n contains: [{begin: '{{'}, {begin: '}}'}, hljs.BACKSLASH_ESCAPE, SUBST_NO_LF]\n };\n var INTERPOLATED_VERBATIM_STRING = {\n className: 'string',\n begin: /\\$@\"/, end: '\"',\n contains: [{begin: '{{'}, {begin: '}}'}, {begin: '\"\"'}, SUBST]\n };\n var INTERPOLATED_VERBATIM_STRING_NO_LF = hljs.inherit(INTERPOLATED_VERBATIM_STRING, {\n illegal: /\\n/,\n contains: [{begin: '{{'}, {begin: '}}'}, {begin: '\"\"'}, SUBST_NO_LF]\n });\n SUBST.contains = [\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMBERS,\n hljs.C_BLOCK_COMMENT_MODE\n ];\n SUBST_NO_LF.contains = [\n INTERPOLATED_VERBATIM_STRING_NO_LF,\n INTERPOLATED_STRING,\n VERBATIM_STRING_NO_LF,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMBERS,\n hljs.inherit(hljs.C_BLOCK_COMMENT_MODE, {illegal: /\\n/})\n ];\n var STRING = {\n variants: [\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n\n var TYPE_IDENT_RE = hljs.IDENT_RE + '(<' + hljs.IDENT_RE + '(\\\\s*,\\\\s*' + hljs.IDENT_RE + ')*>)?(\\\\[\\\\])?';\n\n return {\n aliases: ['csharp'],\n keywords: KEYWORDS,\n illegal: /::/,\n contains: [\n hljs.COMMENT(\n '///',\n '$',\n {\n returnBegin: true,\n contains: [\n {\n className: 'doctag',\n variants: [\n {\n begin: '///', relevance: 0\n },\n {\n begin: '<!--|-->'\n },\n {\n begin: '</?', end: '>'\n }\n ]\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'meta',\n begin: '#', end: '$',\n keywords: {\n 'meta-keyword': 'if else elif endif define undef warning error line region endregion pragma checksum'\n }\n },\n STRING,\n NUMBERS,\n {\n beginKeywords: 'class interface', end: /[{;=]/,\n illegal: /[^\\s:,]/,\n contains: [\n hljs.TITLE_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n beginKeywords: 'namespace', end: /[{;=]/,\n illegal: /[^\\s:]/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: '[a-zA-Z](\\\\.?\\\\w)*'}),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n // [Attributes(\"\")]\n className: 'meta',\n begin: '^\\\\s*\\\\[', excludeBegin: true, end: '\\\\]', excludeEnd: true,\n contains: [\n {className: 'meta-string', begin: /\"/, end: /\"/}\n ]\n },\n {\n // Expression keywords prevent 'keyword Name(...)' from being\n // recognized as a function definition\n beginKeywords: 'new return throw await else',\n relevance: 0\n },\n {\n className: 'function',\n begin: '(' + TYPE_IDENT_RE + '\\\\s+)+' + hljs.IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\n end: /[{;=]/, excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n {\n begin: hljs.IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\n contains: [hljs.TITLE_MODE],\n relevance: 0\n },\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n STRING,\n NUMBERS,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n case_insensitive: false,\n lexemes: '[a-zA-Z][a-zA-Z0-9_-]*',\n keywords: {\n keyword: 'base-uri child-src connect-src default-src font-src form-action' +\n ' frame-ancestors frame-src img-src media-src object-src plugin-types' +\n ' report-uri sandbox script-src style-src', \n },\n contains: [\n {\n className: 'string',\n begin: \"'\", end: \"'\"\n },\n {\n className: 'attribute',\n begin: '^Content', end: ':', excludeEnd: true,\n },\n ]\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n var RULE = {\n begin: /[A-Z\\_\\.\\-]+\\s*:/, returnBegin: true, end: ';', endsWithParent: true,\n contains: [\n {\n className: 'attribute',\n begin: /\\S/, end: ':', excludeEnd: true,\n starts: {\n endsWithParent: true, excludeEnd: true,\n contains: [\n {\n begin: /[\\w-]+\\(/, returnBegin: true,\n contains: [\n {\n className: 'built_in',\n begin: /[\\w-]+/\n },\n {\n begin: /\\(/, end: /\\)/,\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n }\n ]\n },\n hljs.CSS_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'number', begin: '#[0-9A-Fa-f]+'\n },\n {\n className: 'meta', begin: '!important'\n }\n ]\n }\n }\n ]\n };\n\n return {\n case_insensitive: true,\n illegal: /[=\\/|'\\$]/,\n contains: [\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'selector-id', begin: /#[A-Za-z0-9_-]+/\n },\n {\n className: 'selector-class', begin: /\\.[A-Za-z0-9_-]+/\n },\n {\n className: 'selector-attr',\n begin: /\\[/, end: /\\]/,\n illegal: '$'\n },\n {\n className: 'selector-pseudo',\n begin: /:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"'.]+/\n },\n {\n begin: '@(font-face|page)',\n lexemes: '[a-z-]+',\n keywords: 'font-face page'\n },\n {\n begin: '@', end: '[{;]', // at_rule eating first \"{\" is a good thing\n // because it doesn’t let it to be parsed as\n // a rule set but instead drops parser into\n // the default mode which is how it should be.\n illegal: /:/, // break on Less variables @var: ...\n contains: [\n {\n className: 'keyword',\n begin: /\\w+/\n },\n {\n begin: /\\s/, endsWithParent: true, excludeEnd: true,\n relevance: 0,\n contains: [\n hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE,\n hljs.CSS_NUMBER_MODE\n ]\n }\n ]\n },\n {\n className: 'selector-tag', begin: IDENT_RE,\n relevance: 0\n },\n {\n begin: '{', end: '}',\n illegal: /\\S/,\n contains: [\n hljs.C_BLOCK_COMMENT_MODE,\n RULE,\n ]\n }\n ]\n };\n};","module.exports = /**\n * Known issues:\n *\n * - invalid hex string literals will be recognized as a double quoted strings\n * but 'x' at the beginning of string will not be matched\n *\n * - delimited string literals are not checked for matching end delimiter\n * (not possible to do with js regexp)\n *\n * - content of token string is colored as a string (i.e. no keyword coloring inside a token string)\n * also, content of token string is not validated to contain only valid D tokens\n *\n * - special token sequence rule is not strictly following D grammar (anything following #line\n * up to the end of line is matched as special token sequence)\n */\n\nfunction(hljs) {\n /**\n * Language keywords\n *\n * @type {Object}\n */\n var D_KEYWORDS = {\n keyword:\n 'abstract alias align asm assert auto body break byte case cast catch class ' +\n 'const continue debug default delete deprecated do else enum export extern final ' +\n 'finally for foreach foreach_reverse|10 goto if immutable import in inout int ' +\n 'interface invariant is lazy macro mixin module new nothrow out override package ' +\n 'pragma private protected public pure ref return scope shared static struct ' +\n 'super switch synchronized template this throw try typedef typeid typeof union ' +\n 'unittest version void volatile while with __FILE__ __LINE__ __gshared|10 ' +\n '__thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__',\n built_in:\n 'bool cdouble cent cfloat char creal dchar delegate double dstring float function ' +\n 'idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar ' +\n 'wstring',\n literal:\n 'false null true'\n };\n\n /**\n * Number literal regexps\n *\n * @type {String}\n */\n var decimal_integer_re = '(0|[1-9][\\\\d_]*)',\n decimal_integer_nosus_re = '(0|[1-9][\\\\d_]*|\\\\d[\\\\d_]*|[\\\\d_]+?\\\\d)',\n binary_integer_re = '0[bB][01_]+',\n hexadecimal_digits_re = '([\\\\da-fA-F][\\\\da-fA-F_]*|_[\\\\da-fA-F][\\\\da-fA-F_]*)',\n hexadecimal_integer_re = '0[xX]' + hexadecimal_digits_re,\n\n decimal_exponent_re = '([eE][+-]?' + decimal_integer_nosus_re + ')',\n decimal_float_re = '(' + decimal_integer_nosus_re + '(\\\\.\\\\d*|' + decimal_exponent_re + ')|' +\n '\\\\d+\\\\.' + decimal_integer_nosus_re + decimal_integer_nosus_re + '|' +\n '\\\\.' + decimal_integer_re + decimal_exponent_re + '?' +\n ')',\n hexadecimal_float_re = '(0[xX](' +\n hexadecimal_digits_re + '\\\\.' + hexadecimal_digits_re + '|'+\n '\\\\.?' + hexadecimal_digits_re +\n ')[pP][+-]?' + decimal_integer_nosus_re + ')',\n\n integer_re = '(' +\n decimal_integer_re + '|' +\n binary_integer_re + '|' +\n hexadecimal_integer_re +\n ')',\n\n float_re = '(' +\n hexadecimal_float_re + '|' +\n decimal_float_re +\n ')';\n\n /**\n * Escape sequence supported in D string and character literals\n *\n * @type {String}\n */\n var escape_sequence_re = '\\\\\\\\(' +\n '[\\'\"\\\\?\\\\\\\\abfnrtv]|' + // common escapes\n 'u[\\\\dA-Fa-f]{4}|' + // four hex digit unicode codepoint\n '[0-7]{1,3}|' + // one to three octal digit ascii char code\n 'x[\\\\dA-Fa-f]{2}|' + // two hex digit ascii char code\n 'U[\\\\dA-Fa-f]{8}' + // eight hex digit unicode codepoint\n ')|' +\n '&[a-zA-Z\\\\d]{2,};'; // named character entity\n\n /**\n * D integer number literals\n *\n * @type {Object}\n */\n var D_INTEGER_MODE = {\n className: 'number',\n begin: '\\\\b' + integer_re + '(L|u|U|Lu|LU|uL|UL)?',\n relevance: 0\n };\n\n /**\n * [D_FLOAT_MODE description]\n * @type {Object}\n */\n var D_FLOAT_MODE = {\n className: 'number',\n begin: '\\\\b(' +\n float_re + '([fF]|L|i|[fF]i|Li)?|' +\n integer_re + '(i|[fF]i|Li)' +\n ')',\n relevance: 0\n };\n\n /**\n * D character literal\n *\n * @type {Object}\n */\n var D_CHARACTER_MODE = {\n className: 'string',\n begin: '\\'(' + escape_sequence_re + '|.)', end: '\\'',\n illegal: '.'\n };\n\n /**\n * D string escape sequence\n *\n * @type {Object}\n */\n var D_ESCAPE_SEQUENCE = {\n begin: escape_sequence_re,\n relevance: 0\n };\n\n /**\n * D double quoted string literal\n *\n * @type {Object}\n */\n var D_STRING_MODE = {\n className: 'string',\n begin: '\"',\n contains: [D_ESCAPE_SEQUENCE],\n end: '\"[cwd]?'\n };\n\n /**\n * D wysiwyg and delimited string literals\n *\n * @type {Object}\n */\n var D_WYSIWYG_DELIMITED_STRING_MODE = {\n className: 'string',\n begin: '[rq]\"',\n end: '\"[cwd]?',\n relevance: 5\n };\n\n /**\n * D alternate wysiwyg string literal\n *\n * @type {Object}\n */\n var D_ALTERNATE_WYSIWYG_STRING_MODE = {\n className: 'string',\n begin: '`',\n end: '`[cwd]?'\n };\n\n /**\n * D hexadecimal string literal\n *\n * @type {Object}\n */\n var D_HEX_STRING_MODE = {\n className: 'string',\n begin: 'x\"[\\\\da-fA-F\\\\s\\\\n\\\\r]*\"[cwd]?',\n relevance: 10\n };\n\n /**\n * D delimited string literal\n *\n * @type {Object}\n */\n var D_TOKEN_STRING_MODE = {\n className: 'string',\n begin: 'q\"\\\\{',\n end: '\\\\}\"'\n };\n\n /**\n * Hashbang support\n *\n * @type {Object}\n */\n var D_HASHBANG_MODE = {\n className: 'meta',\n begin: '^#!',\n end: '$',\n relevance: 5\n };\n\n /**\n * D special token sequence\n *\n * @type {Object}\n */\n var D_SPECIAL_TOKEN_SEQUENCE_MODE = {\n className: 'meta',\n begin: '#(line)',\n end: '$',\n relevance: 5\n };\n\n /**\n * D attributes\n *\n * @type {Object}\n */\n var D_ATTRIBUTE_MODE = {\n className: 'keyword',\n begin: '@[a-zA-Z_][a-zA-Z_\\\\d]*'\n };\n\n /**\n * D nesting comment\n *\n * @type {Object}\n */\n var D_NESTING_COMMENT_MODE = hljs.COMMENT(\n '\\\\/\\\\+',\n '\\\\+\\\\/',\n {\n contains: ['self'],\n relevance: 10\n }\n );\n\n return {\n lexemes: hljs.UNDERSCORE_IDENT_RE,\n keywords: D_KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n D_NESTING_COMMENT_MODE,\n D_HEX_STRING_MODE,\n D_STRING_MODE,\n D_WYSIWYG_DELIMITED_STRING_MODE,\n D_ALTERNATE_WYSIWYG_STRING_MODE,\n D_TOKEN_STRING_MODE,\n D_FLOAT_MODE,\n D_INTEGER_MODE,\n D_CHARACTER_MODE,\n D_HASHBANG_MODE,\n D_SPECIAL_TOKEN_SEQUENCE_MODE,\n D_ATTRIBUTE_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['md', 'mkdown', 'mkd'],\n contains: [\n // highlight headers\n {\n className: 'section',\n variants: [\n { begin: '^#{1,6}', end: '$' },\n { begin: '^.+?\\\\n[=-]{2,}$' }\n ]\n },\n // inline html\n {\n begin: '<', end: '>',\n subLanguage: 'xml',\n relevance: 0\n },\n // lists (indicators only)\n {\n className: 'bullet',\n begin: '^([*+-]|(\\\\d+\\\\.))\\\\s+'\n },\n // strong segments\n {\n className: 'strong',\n begin: '[*_]{2}.+?[*_]{2}'\n },\n // emphasis segments\n {\n className: 'emphasis',\n variants: [\n { begin: '\\\\*.+?\\\\*' },\n { begin: '_.+?_'\n , relevance: 0\n }\n ]\n },\n // blockquotes\n {\n className: 'quote',\n begin: '^>\\\\s+', end: '$'\n },\n // code snippets\n {\n className: 'code',\n variants: [\n {\n begin: '^```\\w*\\s*$', end: '^```\\s*$'\n },\n {\n begin: '`.+?`'\n },\n {\n begin: '^( {4}|\\t)', end: '$',\n relevance: 0\n }\n ]\n },\n // horizontal rules\n {\n begin: '^[-\\\\*]{3,}', end: '$'\n },\n // using links - title and link\n {\n begin: '\\\\[.+?\\\\][\\\\(\\\\[].*?[\\\\)\\\\]]',\n returnBegin: true,\n contains: [\n {\n className: 'string',\n begin: '\\\\[', end: '\\\\]',\n excludeBegin: true,\n returnEnd: true,\n relevance: 0\n },\n {\n className: 'link',\n begin: '\\\\]\\\\(', end: '\\\\)',\n excludeBegin: true, excludeEnd: true\n },\n {\n className: 'symbol',\n begin: '\\\\]\\\\[', end: '\\\\]',\n excludeBegin: true, excludeEnd: true\n }\n ],\n relevance: 10\n },\n {\n begin: /^\\[[^\\n]+\\]:/,\n returnBegin: true,\n contains: [\n {\n className: 'symbol',\n begin: /\\[/, end: /\\]/,\n excludeBegin: true, excludeEnd: true\n },\n {\n className: 'link',\n begin: /:\\s*/, end: /$/,\n excludeBegin: true\n }\n ]\n }\n ]\n };\n};","module.exports = function (hljs) {\n var SUBST = {\n className: 'subst',\n variants: [\n {begin: '\\\\${', end: '}'},\n {begin: '\\\\$[A-Za-z0-9_]+'}\n ],\n keywords: 'true false null this is new super'\n };\n\n var STRING = {\n className: 'string',\n variants: [\n {\n begin: 'r\\'\\'\\'', end: '\\'\\'\\''\n },\n {\n begin: 'r\"\"\"', end: '\"\"\"'\n },\n {\n begin: 'r\\'', end: '\\'',\n illegal: '\\\\n'\n },\n {\n begin: 'r\"', end: '\"',\n illegal: '\\\\n'\n },\n {\n begin: '\\'\\'\\'', end: '\\'\\'\\'',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n {\n begin: '\"\"\"', end: '\"\"\"',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n {\n begin: '\\'', end: '\\'',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n {\n begin: '\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n }\n ]\n };\n SUBST.contains = [\n hljs.C_NUMBER_MODE, STRING\n ];\n\n var KEYWORDS = {\n keyword: 'assert async await break case catch class const continue default do else enum extends false final ' +\n 'finally for if in is new null rethrow return super switch sync this throw true try var void while with yield ' +\n 'abstract as dynamic export external factory get implements import library operator part set static typedef',\n built_in:\n // dart:core\n 'print Comparable DateTime Duration Function Iterable Iterator List Map Match Null Object Pattern RegExp Set ' +\n 'Stopwatch String StringBuffer StringSink Symbol Type Uri bool double int num ' +\n // dart:html\n 'document window querySelector querySelectorAll Element ElementList'\n };\n\n return {\n keywords: KEYWORDS,\n contains: [\n STRING,\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n subLanguage: 'markdown'\n }\n ),\n hljs.COMMENT(\n '///',\n '$',\n {\n subLanguage: 'markdown'\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'class interface', end: '{', excludeEnd: true,\n contains: [\n {\n beginKeywords: 'extends implements'\n },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n hljs.C_NUMBER_MODE,\n {\n className: 'meta', begin: '@[A-Za-z]+'\n },\n {\n begin: '=>' // No markup, just a relevance booster\n }\n ]\n }\n};","module.exports = function(hljs) {\n var KEYWORDS =\n 'exports register file shl array record property for mod while set ally label uses raise not ' +\n 'stored class safecall var interface or private static exit index inherited to else stdcall ' +\n 'override shr asm far resourcestring finalization packed virtual out and protected library do ' +\n 'xorwrite goto near function end div overload object unit begin string on inline repeat until ' +\n 'destructor write message program with read initialization except default nil if case cdecl in ' +\n 'downto threadvar of try pascal const external constructor type public then implementation ' +\n 'finally published procedure absolute reintroduce operator as is abstract alias assembler ' +\n 'bitpacked break continue cppdecl cvar enumerator experimental platform deprecated ' +\n 'unimplemented dynamic export far16 forward generic helper implements interrupt iochecks ' +\n 'local name nodefault noreturn nostackframe oldfpccall otherwise saveregisters softfloat ' +\n 'specialize strict unaligned varargs ';\n var COMMENT_MODES = [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT(/\\{/, /\\}/, {relevance: 0}),\n hljs.COMMENT(/\\(\\*/, /\\*\\)/, {relevance: 10})\n ];\n var DIRECTIVE = {\n className: 'meta',\n variants: [\n {begin: /\\{\\$/, end: /\\}/},\n {begin: /\\(\\*\\$/, end: /\\*\\)/}\n ]\n };\n var STRING = {\n className: 'string',\n begin: /'/, end: /'/,\n contains: [{begin: /''/}]\n };\n var CHAR_STRING = {\n className: 'string', begin: /(#\\d+)+/\n };\n var CLASS = {\n begin: hljs.IDENT_RE + '\\\\s*=\\\\s*class\\\\s*\\\\(', returnBegin: true,\n contains: [\n hljs.TITLE_MODE\n ]\n };\n var FUNCTION = {\n className: 'function',\n beginKeywords: 'function constructor destructor procedure', end: /[:;]/,\n keywords: 'function constructor|10 destructor|10 procedure|10',\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n contains: [STRING, CHAR_STRING, DIRECTIVE].concat(COMMENT_MODES)\n },\n DIRECTIVE\n ].concat(COMMENT_MODES)\n };\n return {\n aliases: ['dpr', 'dfm', 'pas', 'pascal', 'freepascal', 'lazarus', 'lpr', 'lfm'],\n case_insensitive: true,\n keywords: KEYWORDS,\n illegal: /\"|\\$[G-Zg-z]|\\/\\*|<\\/|\\|/,\n contains: [\n STRING, CHAR_STRING,\n hljs.NUMBER_MODE,\n CLASS,\n FUNCTION,\n DIRECTIVE\n ].concat(COMMENT_MODES)\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['patch'],\n contains: [\n {\n className: 'meta',\n relevance: 10,\n variants: [\n {begin: /^@@ +\\-\\d+,\\d+ +\\+\\d+,\\d+ +@@$/},\n {begin: /^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$/},\n {begin: /^\\-\\-\\- +\\d+,\\d+ +\\-\\-\\-\\-$/}\n ]\n },\n {\n className: 'comment',\n variants: [\n {begin: /Index: /, end: /$/},\n {begin: /={3,}/, end: /$/},\n {begin: /^\\-{3}/, end: /$/},\n {begin: /^\\*{3} /, end: /$/},\n {begin: /^\\+{3}/, end: /$/},\n {begin: /\\*{5}/, end: /\\*{5}$/}\n ]\n },\n {\n className: 'addition',\n begin: '^\\\\+', end: '$'\n },\n {\n className: 'deletion',\n begin: '^\\\\-', end: '$'\n },\n {\n className: 'addition',\n begin: '^\\\\!', end: '$'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var FILTER = {\n begin: /\\|[A-Za-z]+:?/,\n keywords: {\n name:\n 'truncatewords removetags linebreaksbr yesno get_digit timesince random striptags ' +\n 'filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands ' +\n 'title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode ' +\n 'timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort ' +\n 'dictsortreversed default_if_none pluralize lower join center default ' +\n 'truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first ' +\n 'escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize ' +\n 'localtime utc timezone'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE\n ]\n };\n\n return {\n aliases: ['jinja'],\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT(/\\{%\\s*comment\\s*%}/, /\\{%\\s*endcomment\\s*%}/),\n hljs.COMMENT(/\\{#/, /#}/),\n {\n className: 'template-tag',\n begin: /\\{%/, end: /%}/,\n contains: [\n {\n className: 'name',\n begin: /\\w+/,\n keywords: {\n name:\n 'comment endcomment load templatetag ifchanged endifchanged if endif firstof for ' +\n 'endfor ifnotequal endifnotequal widthratio extends include spaceless ' +\n 'endspaceless regroup ifequal endifequal ssi now with cycle url filter ' +\n 'endfilter debug block endblock else autoescape endautoescape csrf_token empty elif ' +\n 'endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix ' +\n 'plural get_current_language language get_available_languages ' +\n 'get_current_language_bidi get_language_info get_language_info_list localize ' +\n 'endlocalize localtime endlocaltime timezone endtimezone get_current_timezone ' +\n 'verbatim'\n },\n starts: {\n endsWithParent: true,\n keywords: 'in by as',\n contains: [FILTER],\n relevance: 0\n }\n }\n ]\n },\n {\n className: 'template-variable',\n begin: /\\{\\{/, end: /}}/,\n contains: [FILTER]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['bind', 'zone'],\n keywords: {\n keyword:\n 'IN A AAAA AFSDB APL CAA CDNSKEY CDS CERT CNAME DHCID DLV DNAME DNSKEY DS HIP IPSECKEY KEY KX ' +\n 'LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM PTR RRSIG RP SIG SOA SRV SSHFP TA TKEY TLSA TSIG TXT'\n },\n contains: [\n hljs.COMMENT(';', '$', {relevance: 0}),\n {\n className: 'meta',\n begin: /^\\$(TTL|GENERATE|INCLUDE|ORIGIN)\\b/\n },\n // IPv6\n {\n className: 'number',\n begin: '((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:)))\\\\b'\n },\n // IPv4\n {\n className: 'number',\n begin: '((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\b'\n },\n hljs.inherit(hljs.NUMBER_MODE, {begin: /\\b\\d+[dhwm]?/})\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['docker'],\n case_insensitive: true,\n keywords: 'from maintainer expose env arg user onbuild stopsignal',\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n {\n beginKeywords: 'run cmd entrypoint volume add copy workdir label healthcheck shell',\n starts: {\n end: /[^\\\\]\\n/,\n subLanguage: 'bash'\n }\n }\n ],\n illegal: '</'\n }\n};","module.exports = function(hljs) {\n var COMMENT = hljs.COMMENT(\n /^\\s*@?rem\\b/, /$/,\n {\n relevance: 10\n }\n );\n var LABEL = {\n className: 'symbol',\n begin: '^\\\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\\\s+label)',\n relevance: 0\n };\n return {\n aliases: ['bat', 'cmd'],\n case_insensitive: true,\n illegal: /\\/\\*/,\n keywords: {\n keyword:\n 'if else goto for in do call exit not exist errorlevel defined ' +\n 'equ neq lss leq gtr geq',\n built_in:\n 'prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux ' +\n 'shift cd dir echo setlocal endlocal set pause copy ' +\n 'append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color ' +\n 'comp compact convert date dir diskcomp diskcopy doskey erase fs ' +\n 'find findstr format ftype graftabl help keyb label md mkdir mode more move path ' +\n 'pause print popd pushd promt rd recover rem rename replace restore rmdir shift' +\n 'sort start subst time title tree type ver verify vol ' +\n // winutils\n 'ping net ipconfig taskkill xcopy ren del'\n },\n contains: [\n {\n className: 'variable', begin: /%%[^ ]|%[^ ]+?%|![^ ]+?!/\n },\n {\n className: 'function',\n begin: LABEL.begin, end: 'goto:eof',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: '([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*'}),\n COMMENT\n ]\n },\n {\n className: 'number', begin: '\\\\b\\\\d+',\n relevance: 0\n },\n COMMENT\n ]\n };\n};","module.exports = function(hljs) {\n var QUOTED_PROPERTY = {\n className: 'string',\n begin: /\"/, end: /\"/\n };\n var APOS_PROPERTY = {\n className: 'string',\n begin: /'/, end: /'/\n };\n var UNQUOTED_PROPERTY = {\n className: 'string',\n begin: '[\\\\w-?]+:\\\\w+', end: '\\\\W',\n relevance: 0\n };\n var VALUELESS_PROPERTY = {\n className: 'string',\n begin: '\\\\w+-?\\\\w+', end: '\\\\W',\n relevance: 0\n };\n\n return {\n keywords: 'dsconfig',\n contains: [\n {\n className: 'keyword',\n begin: '^dsconfig', end: '\\\\s', excludeEnd: true,\n relevance: 10\n },\n {\n className: 'built_in',\n begin: '(list|create|get|set|delete)-(\\\\w+)', end: '\\\\s', excludeEnd: true,\n illegal: '!@#$%^&*()',\n relevance: 10\n },\n {\n className: 'built_in',\n begin: '--(\\\\w+)', end: '\\\\s', excludeEnd: true\n },\n QUOTED_PROPERTY,\n APOS_PROPERTY,\n UNQUOTED_PROPERTY,\n VALUELESS_PROPERTY,\n hljs.HASH_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var STRINGS = {\n className: 'string',\n variants: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, { begin: '((u8?|U)|L)?\"' }),\n {\n begin: '(u8?|U)?R\"', end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\\'\\\\\\\\?.', end: '\\'',\n illegal: '.'\n }\n ]\n };\n\n var NUMBERS = {\n className: 'number',\n variants: [\n { begin: '\\\\b(\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)(u|U|l|L|ul|UL|f|F)' },\n { begin: hljs.C_NUMBER_RE }\n ],\n relevance: 0\n };\n\n var PREPROCESSOR = {\n className: 'meta',\n begin: '#', end: '$',\n keywords: {'meta-keyword': 'if else elif endif define undef ifdef ifndef'},\n contains: [\n {\n begin: /\\\\\\n/, relevance: 0\n },\n {\n beginKeywords: 'include', end: '$',\n keywords: {'meta-keyword': 'include'},\n contains: [\n hljs.inherit(STRINGS, {className: 'meta-string'}),\n {\n className: 'meta-string',\n begin: '<', end: '>',\n illegal: '\\\\n'\n }\n ]\n },\n STRINGS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n var DTS_REFERENCE = {\n className: 'variable',\n begin: '\\\\&[a-z\\\\d_]*\\\\b'\n };\n\n var DTS_KEYWORD = {\n className: 'meta-keyword',\n begin: '/[a-z][a-z\\\\d-]*/'\n };\n\n var DTS_LABEL = {\n className: 'symbol',\n begin: '^\\\\s*[a-zA-Z_][a-zA-Z\\\\d_]*:'\n };\n\n var DTS_CELL_PROPERTY = {\n className: 'params',\n begin: '<',\n end: '>',\n contains: [\n NUMBERS,\n DTS_REFERENCE\n ]\n };\n\n var DTS_NODE = {\n className: 'class',\n begin: /[a-zA-Z_][a-zA-Z\\d_@]*\\s{/,\n end: /[{;=]/,\n returnBegin: true,\n excludeEnd: true\n };\n\n var DTS_ROOT_NODE = {\n className: 'class',\n begin: '/\\\\s*{',\n end: '};',\n relevance: 10,\n contains: [\n DTS_REFERENCE,\n DTS_KEYWORD,\n DTS_LABEL,\n DTS_NODE,\n DTS_CELL_PROPERTY,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ]\n };\n\n return {\n keywords: \"\",\n contains: [\n DTS_ROOT_NODE,\n DTS_REFERENCE,\n DTS_KEYWORD,\n DTS_LABEL,\n DTS_NODE,\n DTS_CELL_PROPERTY,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS,\n PREPROCESSOR,\n {\n begin: hljs.IDENT_RE + '::',\n keywords: \"\"\n }\n ]\n };\n};","module.exports = function(hljs) {\n var EXPRESSION_KEYWORDS = 'if eq ne lt lte gt gte select default math sep';\n return {\n aliases: ['dst'],\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n {\n className: 'template-tag',\n begin: /\\{[#\\/]/, end: /\\}/, illegal: /;/,\n contains: [\n {\n className: 'name',\n begin: /[a-zA-Z\\.-]+/,\n starts: {\n endsWithParent: true, relevance: 0,\n contains: [\n hljs.QUOTE_STRING_MODE\n ]\n }\n }\n ]\n },\n {\n className: 'template-variable',\n begin: /\\{/, end: /\\}/, illegal: /;/,\n keywords: EXPRESSION_KEYWORDS\n }\n ]\n };\n};","module.exports = function(hljs) {\n var commentMode = hljs.COMMENT(/\\(\\*/, /\\*\\)/);\n\n var nonTerminalMode = {\n className: \"attribute\",\n begin: /^[ ]*[a-zA-Z][a-zA-Z-]*([\\s-]+[a-zA-Z][a-zA-Z]*)*/\n };\n\n var specialSequenceMode = {\n className: \"meta\",\n begin: /\\?.*\\?/\n };\n\n var ruleBodyMode = {\n begin: /=/, end: /;/,\n contains: [\n commentMode,\n specialSequenceMode,\n // terminals\n hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE\n ]\n };\n\n return {\n illegal: /\\S/,\n contains: [\n commentMode,\n nonTerminalMode,\n ruleBodyMode\n ]\n };\n};","module.exports = function(hljs) {\n var ELIXIR_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9_.]*(\\\\!|\\\\?)?';\n var ELIXIR_METHOD_RE = '[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?';\n var ELIXIR_KEYWORDS =\n 'and false then defined module in return redo retry end for true self when ' +\n 'next until do begin unless nil break not case cond alias while ensure or ' +\n 'include use alias fn quote require import with|0';\n var SUBST = {\n className: 'subst',\n begin: '#\\\\{', end: '}',\n lexemes: ELIXIR_IDENT_RE,\n keywords: ELIXIR_KEYWORDS\n };\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {\n begin: /'/, end: /'/\n },\n {\n begin: /\"/, end: /\"/\n }\n ]\n };\n var FUNCTION = {\n className: 'function',\n beginKeywords: 'def defp defmacro', end: /\\B\\b/, // the mode is ended by the title\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: ELIXIR_IDENT_RE,\n endsParent: true\n })\n ]\n };\n var CLASS = hljs.inherit(FUNCTION, {\n className: 'class',\n beginKeywords: 'defimpl defmodule defprotocol defrecord', end: /\\bdo\\b|$|;/\n });\n var ELIXIR_DEFAULT_CONTAINS = [\n STRING,\n hljs.HASH_COMMENT_MODE,\n CLASS,\n FUNCTION,\n {\n begin: '::'\n },\n {\n className: 'symbol',\n begin: ':(?![\\\\s:])',\n contains: [STRING, {begin: ELIXIR_METHOD_RE}],\n relevance: 0\n },\n {\n className: 'symbol',\n begin: ELIXIR_IDENT_RE + ':(?!:)',\n relevance: 0\n },\n {\n className: 'number',\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n relevance: 0\n },\n {\n className: 'variable',\n begin: '(\\\\$\\\\W)|((\\\\$|\\\\@\\\\@?)(\\\\w+))'\n },\n {\n begin: '->'\n },\n { // regexp container\n begin: '(' + hljs.RE_STARTERS_RE + ')\\\\s*',\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: 'regexp',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {\n begin: '/', end: '/[a-z]*'\n },\n {\n begin: '%r\\\\[', end: '\\\\][a-z]*'\n }\n ]\n }\n ],\n relevance: 0\n }\n ];\n SUBST.contains = ELIXIR_DEFAULT_CONTAINS;\n\n return {\n lexemes: ELIXIR_IDENT_RE,\n keywords: ELIXIR_KEYWORDS,\n contains: ELIXIR_DEFAULT_CONTAINS\n };\n};","module.exports = function(hljs) {\n var COMMENT = {\n variants: [\n hljs.COMMENT('--', '$'),\n hljs.COMMENT(\n '{-',\n '-}',\n {\n contains: ['self']\n }\n )\n ]\n };\n\n var CONSTRUCTOR = {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*', // TODO: other constructors (built-in, infix).\n relevance: 0\n };\n\n var LIST = {\n begin: '\\\\(', end: '\\\\)',\n illegal: '\"',\n contains: [\n {className: 'type', begin: '\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?'},\n COMMENT\n ]\n };\n\n var RECORD = {\n begin: '{', end: '}',\n contains: LIST.contains\n };\n\n var CHARACTER = {\n className: 'string',\n begin: '\\'\\\\\\\\?.', end: '\\'',\n illegal: '.'\n };\n\n return {\n keywords:\n 'let in if then else case of where module import exposing ' +\n 'type alias as infix infixl infixr port effect command subscription',\n contains: [\n\n // Top-level constructions.\n\n {\n beginKeywords: 'port effect module', end: 'exposing',\n keywords: 'port effect module where command subscription exposing',\n contains: [LIST, COMMENT],\n illegal: '\\\\W\\\\.|;'\n },\n {\n begin: 'import', end: '$',\n keywords: 'import as exposing',\n contains: [LIST, COMMENT],\n illegal: '\\\\W\\\\.|;'\n },\n {\n begin: 'type', end: '$',\n keywords: 'type alias',\n contains: [CONSTRUCTOR, LIST, RECORD, COMMENT]\n },\n {\n beginKeywords: 'infix infixl infixr', end: '$',\n contains: [hljs.C_NUMBER_MODE, COMMENT]\n },\n {\n begin: 'port', end: '$',\n keywords: 'port',\n contains: [COMMENT]\n },\n\n // Literals and names.\n\n CHARACTER,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n CONSTRUCTOR,\n hljs.inherit(hljs.TITLE_MODE, {begin: '^[_a-z][\\\\w\\']*'}),\n COMMENT,\n\n {begin: '->|<-'} // No markup, relevance booster\n ],\n illegal: /;/\n };\n};","module.exports = function(hljs) {\n var RUBY_METHOD_RE = '[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?';\n var RUBY_KEYWORDS = {\n keyword:\n 'and then defined module in return redo if BEGIN retry end for self when ' +\n 'next until do begin unless END rescue else break undef not super class case ' +\n 'require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor',\n literal:\n 'true false nil'\n };\n var YARDOCTAG = {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n };\n var IRB_OBJECT = {\n begin: '#<', end: '>'\n };\n var COMMENT_MODES = [\n hljs.COMMENT(\n '#',\n '$',\n {\n contains: [YARDOCTAG]\n }\n ),\n hljs.COMMENT(\n '^\\\\=begin',\n '^\\\\=end',\n {\n contains: [YARDOCTAG],\n relevance: 10\n }\n ),\n hljs.COMMENT('^__END__', '\\\\n$')\n ];\n var SUBST = {\n className: 'subst',\n begin: '#\\\\{', end: '}',\n keywords: RUBY_KEYWORDS\n };\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {begin: /'/, end: /'/},\n {begin: /\"/, end: /\"/},\n {begin: /`/, end: /`/},\n {begin: '%[qQwWx]?\\\\(', end: '\\\\)'},\n {begin: '%[qQwWx]?\\\\[', end: '\\\\]'},\n {begin: '%[qQwWx]?{', end: '}'},\n {begin: '%[qQwWx]?<', end: '>'},\n {begin: '%[qQwWx]?/', end: '/'},\n {begin: '%[qQwWx]?%', end: '%'},\n {begin: '%[qQwWx]?-', end: '-'},\n {begin: '%[qQwWx]?\\\\|', end: '\\\\|'},\n {\n // \\B in the beginning suppresses recognition of ?-sequences where ?\n // is the last character of a preceding identifier, as in: `func?4`\n begin: /\\B\\?(\\\\\\d{1,3}|\\\\x[A-Fa-f0-9]{1,2}|\\\\u[A-Fa-f0-9]{4}|\\\\?\\S)\\b/\n },\n {\n begin: /<<(-?)\\w+$/, end: /^\\s*\\w+$/,\n }\n ]\n };\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)', endsParent: true,\n keywords: RUBY_KEYWORDS\n };\n\n var RUBY_DEFAULT_CONTAINS = [\n STRING,\n IRB_OBJECT,\n {\n className: 'class',\n beginKeywords: 'class module', end: '$|;',\n illegal: /=/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: '[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?'}),\n {\n begin: '<\\\\s*',\n contains: [{\n begin: '(' + hljs.IDENT_RE + '::)?' + hljs.IDENT_RE\n }]\n }\n ].concat(COMMENT_MODES)\n },\n {\n className: 'function',\n beginKeywords: 'def', end: '$|;',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: RUBY_METHOD_RE}),\n PARAMS\n ].concat(COMMENT_MODES)\n },\n {\n // swallow namespace qualifiers before symbols\n begin: hljs.IDENT_RE + '::'\n },\n {\n className: 'symbol',\n begin: hljs.UNDERSCORE_IDENT_RE + '(\\\\!|\\\\?)?:',\n relevance: 0\n },\n {\n className: 'symbol',\n begin: ':(?!\\\\s)',\n contains: [STRING, {begin: RUBY_METHOD_RE}],\n relevance: 0\n },\n {\n className: 'number',\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n relevance: 0\n },\n {\n begin: '(\\\\$\\\\W)|((\\\\$|\\\\@\\\\@?)(\\\\w+))' // variables\n },\n {\n className: 'params',\n begin: /\\|/, end: /\\|/,\n keywords: RUBY_KEYWORDS\n },\n { // regexp container\n begin: '(' + hljs.RE_STARTERS_RE + '|unless)\\\\s*',\n keywords: 'unless',\n contains: [\n IRB_OBJECT,\n {\n className: 'regexp',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n illegal: /\\n/,\n variants: [\n {begin: '/', end: '/[a-z]*'},\n {begin: '%r{', end: '}[a-z]*'},\n {begin: '%r\\\\(', end: '\\\\)[a-z]*'},\n {begin: '%r!', end: '![a-z]*'},\n {begin: '%r\\\\[', end: '\\\\][a-z]*'}\n ]\n }\n ].concat(COMMENT_MODES),\n relevance: 0\n }\n ].concat(COMMENT_MODES);\n\n SUBST.contains = RUBY_DEFAULT_CONTAINS;\n PARAMS.contains = RUBY_DEFAULT_CONTAINS;\n\n var SIMPLE_PROMPT = \"[>?]>\";\n var DEFAULT_PROMPT = \"[\\\\w#]+\\\\(\\\\w+\\\\):\\\\d+:\\\\d+>\";\n var RVM_PROMPT = \"(\\\\w+-)?\\\\d+\\\\.\\\\d+\\\\.\\\\d(p\\\\d+)?[^>]+>\";\n\n var IRB_DEFAULT = [\n {\n begin: /^\\s*=>/,\n starts: {\n end: '$', contains: RUBY_DEFAULT_CONTAINS\n }\n },\n {\n className: 'meta',\n begin: '^('+SIMPLE_PROMPT+\"|\"+DEFAULT_PROMPT+'|'+RVM_PROMPT+')',\n starts: {\n end: '$', contains: RUBY_DEFAULT_CONTAINS\n }\n }\n ];\n\n return {\n aliases: ['rb', 'gemspec', 'podspec', 'thor', 'irb'],\n keywords: RUBY_KEYWORDS,\n illegal: /\\/\\*/,\n contains: COMMENT_MODES.concat(IRB_DEFAULT).concat(RUBY_DEFAULT_CONTAINS)\n };\n};","module.exports = function(hljs) {\n return {\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT('<%#', '%>'),\n {\n begin: '<%[%=-]?', end: '[%-]?%>',\n subLanguage: 'ruby',\n excludeBegin: true,\n excludeEnd: true\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n built_in:\n 'spawn spawn_link self',\n keyword:\n 'after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if ' +\n 'let not of or orelse|10 query receive rem try when xor'\n },\n contains: [\n {\n className: 'meta', begin: '^[0-9]+> ',\n relevance: 10\n },\n hljs.COMMENT('%', '$'),\n {\n className: 'number',\n begin: '\\\\b(\\\\d+#[a-fA-F0-9]+|\\\\d+(\\\\.\\\\d+)?([eE][-+]?\\\\d+)?)',\n relevance: 0\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n begin: '\\\\?(::)?([A-Z]\\\\w*(::)?)+'\n },\n {\n begin: '->'\n },\n {\n begin: 'ok'\n },\n {\n begin: '!'\n },\n {\n begin: '(\\\\b[a-z\\'][a-zA-Z0-9_\\']*:[a-z\\'][a-zA-Z0-9_\\']*)|(\\\\b[a-z\\'][a-zA-Z0-9_\\']*)',\n relevance: 0\n },\n {\n begin: '[A-Z][a-zA-Z0-9_\\']*',\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n var BASIC_ATOM_RE = '[a-z\\'][a-zA-Z0-9_\\']*';\n var FUNCTION_NAME_RE = '(' + BASIC_ATOM_RE + ':' + BASIC_ATOM_RE + '|' + BASIC_ATOM_RE + ')';\n var ERLANG_RESERVED = {\n keyword:\n 'after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if ' +\n 'let not of orelse|10 query receive rem try when xor',\n literal:\n 'false true'\n };\n\n var COMMENT = hljs.COMMENT('%', '$');\n var NUMBER = {\n className: 'number',\n begin: '\\\\b(\\\\d+#[a-fA-F0-9]+|\\\\d+(\\\\.\\\\d+)?([eE][-+]?\\\\d+)?)',\n relevance: 0\n };\n var NAMED_FUN = {\n begin: 'fun\\\\s+' + BASIC_ATOM_RE + '/\\\\d+'\n };\n var FUNCTION_CALL = {\n begin: FUNCTION_NAME_RE + '\\\\(', end: '\\\\)',\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n begin: FUNCTION_NAME_RE, relevance: 0\n },\n {\n begin: '\\\\(', end: '\\\\)', endsWithParent: true,\n returnEnd: true,\n relevance: 0\n // \"contains\" defined later\n }\n ]\n };\n var TUPLE = {\n begin: '{', end: '}',\n relevance: 0\n // \"contains\" defined later\n };\n var VAR1 = {\n begin: '\\\\b_([A-Z][A-Za-z0-9_]*)?',\n relevance: 0\n };\n var VAR2 = {\n begin: '[A-Z][a-zA-Z0-9_]*',\n relevance: 0\n };\n var RECORD_ACCESS = {\n begin: '#' + hljs.UNDERSCORE_IDENT_RE,\n relevance: 0,\n returnBegin: true,\n contains: [\n {\n begin: '#' + hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n begin: '{', end: '}',\n relevance: 0\n // \"contains\" defined later\n }\n ]\n };\n\n var BLOCK_STATEMENTS = {\n beginKeywords: 'fun receive if try case', end: 'end',\n keywords: ERLANG_RESERVED\n };\n BLOCK_STATEMENTS.contains = [\n COMMENT,\n NAMED_FUN,\n hljs.inherit(hljs.APOS_STRING_MODE, {className: ''}),\n BLOCK_STATEMENTS,\n FUNCTION_CALL,\n hljs.QUOTE_STRING_MODE,\n NUMBER,\n TUPLE,\n VAR1, VAR2,\n RECORD_ACCESS\n ];\n\n var BASIC_MODES = [\n COMMENT,\n NAMED_FUN,\n BLOCK_STATEMENTS,\n FUNCTION_CALL,\n hljs.QUOTE_STRING_MODE,\n NUMBER,\n TUPLE,\n VAR1, VAR2,\n RECORD_ACCESS\n ];\n FUNCTION_CALL.contains[1].contains = BASIC_MODES;\n TUPLE.contains = BASIC_MODES;\n RECORD_ACCESS.contains[1].contains = BASIC_MODES;\n\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n contains: BASIC_MODES\n };\n return {\n aliases: ['erl'],\n keywords: ERLANG_RESERVED,\n illegal: '(</|\\\\*=|\\\\+=|-=|/\\\\*|\\\\*/|\\\\(\\\\*|\\\\*\\\\))',\n contains: [\n {\n className: 'function',\n begin: '^' + BASIC_ATOM_RE + '\\\\s*\\\\(', end: '->',\n returnBegin: true,\n illegal: '\\\\(|#|//|/\\\\*|\\\\\\\\|:|;',\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, {begin: BASIC_ATOM_RE})\n ],\n starts: {\n end: ';|\\\\.',\n keywords: ERLANG_RESERVED,\n contains: BASIC_MODES\n }\n },\n COMMENT,\n {\n begin: '^-', end: '\\\\.',\n relevance: 0,\n excludeEnd: true,\n returnBegin: true,\n lexemes: '-' + hljs.IDENT_RE,\n keywords:\n '-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn ' +\n '-import -include -include_lib -compile -define -else -endif -file -behaviour ' +\n '-behavior -spec',\n contains: [PARAMS]\n },\n NUMBER,\n hljs.QUOTE_STRING_MODE,\n RECORD_ACCESS,\n VAR1, VAR2,\n TUPLE,\n {begin: /\\.$/} // relevance booster\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['xlsx', 'xls'],\n case_insensitive: true,\n lexemes: /[a-zA-Z][\\w\\.]*/,\n // built-in functions imported from https://web.archive.org/web/20160513042710/https://support.office.com/en-us/article/Excel-functions-alphabetical-b3944572-255d-4efb-bb96-c6d90033e188\n keywords: {\n built_in: 'ABS ACCRINT ACCRINTM ACOS ACOSH ACOT ACOTH AGGREGATE ADDRESS AMORDEGRC AMORLINC AND ARABIC AREAS ASC ASIN ASINH ATAN ATAN2 ATANH AVEDEV AVERAGE AVERAGEA AVERAGEIF AVERAGEIFS BAHTTEXT BASE BESSELI BESSELJ BESSELK BESSELY BETADIST BETA.DIST BETAINV BETA.INV BIN2DEC BIN2HEX BIN2OCT BINOMDIST BINOM.DIST BINOM.DIST.RANGE BINOM.INV BITAND BITLSHIFT BITOR BITRSHIFT BITXOR CALL CEILING CEILING.MATH CEILING.PRECISE CELL CHAR CHIDIST CHIINV CHITEST CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT CHISQ.TEST CHOOSE CLEAN CODE COLUMN COLUMNS COMBIN COMBINA COMPLEX CONCAT CONCATENATE CONFIDENCE CONFIDENCE.NORM CONFIDENCE.T CONVERT CORREL COS COSH COT COTH COUNT COUNTA COUNTBLANK COUNTIF COUNTIFS COUPDAYBS COUPDAYS COUPDAYSNC COUPNCD COUPNUM COUPPCD COVAR COVARIANCE.P COVARIANCE.S CRITBINOM CSC CSCH CUBEKPIMEMBER CUBEMEMBER CUBEMEMBERPROPERTY CUBERANKEDMEMBER CUBESET CUBESETCOUNT CUBEVALUE CUMIPMT CUMPRINC DATE DATEDIF DATEVALUE DAVERAGE DAY DAYS DAYS360 DB DBCS DCOUNT DCOUNTA DDB DEC2BIN DEC2HEX DEC2OCT DECIMAL DEGREES DELTA DEVSQ DGET DISC DMAX DMIN DOLLAR DOLLARDE DOLLARFR DPRODUCT DSTDEV DSTDEVP DSUM DURATION DVAR DVARP EDATE EFFECT ENCODEURL EOMONTH ERF ERF.PRECISE ERFC ERFC.PRECISE ERROR.TYPE EUROCONVERT EVEN EXACT EXP EXPON.DIST EXPONDIST FACT FACTDOUBLE FALSE|0 F.DIST FDIST F.DIST.RT FILTERXML FIND FINDB F.INV F.INV.RT FINV FISHER FISHERINV FIXED FLOOR FLOOR.MATH FLOOR.PRECISE FORECAST FORECAST.ETS FORECAST.ETS.CONFINT FORECAST.ETS.SEASONALITY FORECAST.ETS.STAT FORECAST.LINEAR FORMULATEXT FREQUENCY F.TEST FTEST FV FVSCHEDULE GAMMA GAMMA.DIST GAMMADIST GAMMA.INV GAMMAINV GAMMALN GAMMALN.PRECISE GAUSS GCD GEOMEAN GESTEP GETPIVOTDATA GROWTH HARMEAN HEX2BIN HEX2DEC HEX2OCT HLOOKUP HOUR HYPERLINK HYPGEOM.DIST HYPGEOMDIST IF|0 IFERROR IFNA IFS IMABS IMAGINARY IMARGUMENT IMCONJUGATE IMCOS IMCOSH IMCOT IMCSC IMCSCH IMDIV IMEXP IMLN IMLOG10 IMLOG2 IMPOWER IMPRODUCT IMREAL IMSEC IMSECH IMSIN IMSINH IMSQRT IMSUB IMSUM IMTAN INDEX INDIRECT INFO INT INTERCEPT INTRATE IPMT IRR ISBLANK ISERR ISERROR ISEVEN ISFORMULA ISLOGICAL ISNA ISNONTEXT ISNUMBER ISODD ISREF ISTEXT ISO.CEILING ISOWEEKNUM ISPMT JIS KURT LARGE LCM LEFT LEFTB LEN LENB LINEST LN LOG LOG10 LOGEST LOGINV LOGNORM.DIST LOGNORMDIST LOGNORM.INV LOOKUP LOWER MATCH MAX MAXA MAXIFS MDETERM MDURATION MEDIAN MID MIDBs MIN MINIFS MINA MINUTE MINVERSE MIRR MMULT MOD MODE MODE.MULT MODE.SNGL MONTH MROUND MULTINOMIAL MUNIT N NA NEGBINOM.DIST NEGBINOMDIST NETWORKDAYS NETWORKDAYS.INTL NOMINAL NORM.DIST NORMDIST NORMINV NORM.INV NORM.S.DIST NORMSDIST NORM.S.INV NORMSINV NOT NOW NPER NPV NUMBERVALUE OCT2BIN OCT2DEC OCT2HEX ODD ODDFPRICE ODDFYIELD ODDLPRICE ODDLYIELD OFFSET OR PDURATION PEARSON PERCENTILE.EXC PERCENTILE.INC PERCENTILE PERCENTRANK.EXC PERCENTRANK.INC PERCENTRANK PERMUT PERMUTATIONA PHI PHONETIC PI PMT POISSON.DIST POISSON POWER PPMT PRICE PRICEDISC PRICEMAT PROB PRODUCT PROPER PV QUARTILE QUARTILE.EXC QUARTILE.INC QUOTIENT RADIANS RAND RANDBETWEEN RANK.AVG RANK.EQ RANK RATE RECEIVED REGISTER.ID REPLACE REPLACEB REPT RIGHT RIGHTB ROMAN ROUND ROUNDDOWN ROUNDUP ROW ROWS RRI RSQ RTD SEARCH SEARCHB SEC SECH SECOND SERIESSUM SHEET SHEETS SIGN SIN SINH SKEW SKEW.P SLN SLOPE SMALL SQL.REQUEST SQRT SQRTPI STANDARDIZE STDEV STDEV.P STDEV.S STDEVA STDEVP STDEVPA STEYX SUBSTITUTE SUBTOTAL SUM SUMIF SUMIFS SUMPRODUCT SUMSQ SUMX2MY2 SUMX2PY2 SUMXMY2 SWITCH SYD T TAN TANH TBILLEQ TBILLPRICE TBILLYIELD T.DIST T.DIST.2T T.DIST.RT TDIST TEXT TEXTJOIN TIME TIMEVALUE T.INV T.INV.2T TINV TODAY TRANSPOSE TREND TRIM TRIMMEAN TRUE|0 TRUNC T.TEST TTEST TYPE UNICHAR UNICODE UPPER VALUE VAR VAR.P VAR.S VARA VARP VARPA VDB VLOOKUP WEBSERVICE WEEKDAY WEEKNUM WEIBULL WEIBULL.DIST WORKDAY WORKDAY.INTL XIRR XNPV XOR YEAR YEARFRAC YIELD YIELDDISC YIELDMAT Z.TEST ZTEST'\n },\n contains: [\n {\n /* matches a beginning equal sign found in Excel formula examples */ \n begin: /^=/,\n end: /[^=]/, returnEnd: true, illegal: /=/, /* only allow single equal sign at front of line */\n relevance: 10\n },\n /* technically, there can be more than 2 letters in column names, but this prevents conflict with some keywords */\n {\n /* matches a reference to a single cell */\n className: 'symbol',\n begin: /\\b[A-Z]{1,2}\\d+\\b/,\n end: /[^\\d]/, excludeEnd: true,\n relevance: 0\n },\n {\n /* matches a reference to a range of cells */\n className: 'symbol',\n begin: /[A-Z]{0,2}\\d*:[A-Z]{0,2}\\d*/,\n relevance: 0\n },\n hljs.BACKSLASH_ESCAPE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'number',\n begin: hljs.NUMBER_RE + '(%)?',\n relevance: 0\n },\n /* Excel formula comments are done by putting the comment in a function call to N() */\n hljs.COMMENT(/\\bN\\(/,/\\)/,\n {\n excludeBegin: true,\n excludeEnd: true,\n illegal: /\\n/\n })\n ]\n };\n};","module.exports = function(hljs) {\n return {\n contains: [\n {\n begin: /[^\\u2401\\u0001]+/,\n end: /[\\u2401\\u0001]/,\n excludeEnd: true,\n returnBegin: true,\n returnEnd: false,\n contains: [\n {\n begin: /([^\\u2401\\u0001=]+)/,\n end: /=([^\\u2401\\u0001=]+)/,\n returnEnd: true,\n returnBegin: false,\n className: 'attr'\n },\n {\n begin: /=/,\n end: /([\\u2401\\u0001])/,\n excludeEnd: true,\n excludeBegin: true,\n className: 'string'\n }]\n }],\n case_insensitive: true\n };\n};","module.exports = function (hljs) {\n\n var CHAR = {\n className: 'string',\n begin: /'(.|\\\\[xXuU][a-zA-Z0-9]+)'/\n };\n\n var STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"', end: '\"'\n }\n ]\n };\n\n var NAME = {\n className: 'title',\n begin: /[^0-9\\n\\t \"'(),.`{}\\[\\]:;][^\\n\\t \"'(),.`{}\\[\\]:;]+|[^0-9\\n\\t \"'(),.`{}\\[\\]:;=]/\n };\n\n var METHOD = {\n className: 'function',\n beginKeywords: 'def',\n end: /[:={\\[(\\n;]/,\n excludeEnd: true,\n contains: [NAME]\n };\n\n return {\n keywords: {\n literal: 'true false',\n keyword: 'case class def else enum if impl import in lat rel index let match namespace switch type yield with'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n CHAR,\n STRING,\n METHOD,\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)'\n };\n\n var F_KEYWORDS = {\n literal: '.False. .True.',\n keyword: 'kind do while private call intrinsic where elsewhere ' +\n 'type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then ' +\n 'public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. ' +\n 'goto save else use module select case ' +\n 'access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit ' +\n 'continue format pause cycle exit ' +\n 'c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg ' +\n 'synchronous nopass non_overridable pass protected volatile abstract extends import ' +\n 'non_intrinsic value deferred generic final enumerator class associate bind enum ' +\n 'c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t ' +\n 'c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double ' +\n 'c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr ' +\n 'c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer ' +\n 'c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor ' +\n 'numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ' +\n 'ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive ' +\n 'pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure ' +\n 'integer real character complex logical dimension allocatable|10 parameter ' +\n 'external implicit|10 none double precision assign intent optional pointer ' +\n 'target in out common equivalence data',\n built_in: 'alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint ' +\n 'dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl ' +\n 'algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama ' +\n 'iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod ' +\n 'qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log ' +\n 'log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate ' +\n 'adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product ' +\n 'eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul ' +\n 'maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product ' +\n 'radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind ' +\n 'set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer ' +\n 'dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ' +\n 'ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode ' +\n 'is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of' +\n 'acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 ' +\n 'atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits ' +\n 'bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr ' +\n 'num_images parity popcnt poppar shifta shiftl shiftr this_image'\n };\n return {\n case_insensitive: true,\n aliases: ['f90', 'f95'],\n keywords: F_KEYWORDS,\n illegal: /\\/\\*/,\n contains: [\n hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'string', relevance: 0}),\n {\n className: 'function',\n beginKeywords: 'subroutine function program',\n illegal: '[${=\\\\n]',\n contains: [hljs.UNDERSCORE_TITLE_MODE, PARAMS]\n },\n hljs.COMMENT('!', '$', {relevance: 0}),\n {\n className: 'number',\n begin: '(?=\\\\b|\\\\+|\\\\-|\\\\.)(?=\\\\.\\\\d|\\\\d)(?:\\\\d+)?(?:\\\\.?\\\\d*)(?:[de][+-]?\\\\d+)?\\\\b\\\\.?',\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n var TYPEPARAM = {\n begin: '<', end: '>',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: /'[a-zA-Z0-9_]+/})\n ]\n };\n\n return {\n aliases: ['fs'],\n keywords:\n 'abstract and as assert base begin class default delegate do done ' +\n 'downcast downto elif else end exception extern false finally for ' +\n 'fun function global if in inherit inline interface internal lazy let ' +\n 'match member module mutable namespace new null of open or ' +\n 'override private public rec return sig static struct then to ' +\n 'true try type upcast use val void when while with yield',\n illegal: /\\/\\*/,\n contains: [\n {\n // monad builder keywords (matches before non-bang kws)\n className: 'keyword',\n begin: /\\b(yield|return|let|do)!/\n },\n {\n className: 'string',\n begin: '@\"', end: '\"',\n contains: [{begin: '\"\"'}]\n },\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"'\n },\n hljs.COMMENT('\\\\(\\\\*', '\\\\*\\\\)'),\n {\n className: 'class',\n beginKeywords: 'type', end: '\\\\(|=|$', excludeEnd: true,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n TYPEPARAM\n ]\n },\n {\n className: 'meta',\n begin: '\\\\[<', end: '>\\\\]',\n relevance: 10\n },\n {\n className: 'symbol',\n begin: '\\\\B(\\'[A-Za-z])\\\\b',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function (hljs) {\n var KEYWORDS = {\n 'keyword':\n 'abort acronym acronyms alias all and assign binary card diag display ' +\n 'else eq file files for free ge gt if integer le loop lt maximizing ' +\n 'minimizing model models ne negative no not option options or ord ' +\n 'positive prod put putpage puttl repeat sameas semicont semiint smax ' +\n 'smin solve sos1 sos2 sum system table then until using while xor yes',\n 'literal': 'eps inf na',\n 'built-in':\n 'abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy ' +\n 'cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact ' +\n 'floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max ' +\n 'min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power ' +\n 'randBinomial randLinear randTriangle round rPower sigmoid sign ' +\n 'signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt ' +\n 'tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp ' +\n 'bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt ' +\n 'rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear ' +\n 'jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion ' +\n 'handleCollect handleDelete handleStatus handleSubmit heapFree ' +\n 'heapLimit heapSize jobHandle jobKill jobStatus jobTerminate ' +\n 'licenseLevel licenseStatus maxExecError sleep timeClose timeComp ' +\n 'timeElapsed timeExec timeStart'\n };\n var PARAMS = {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n };\n var SYMBOLS = {\n className: 'symbol',\n variants: [\n {begin: /\\=[lgenxc]=/},\n {begin: /\\$/},\n ]\n };\n var QSTR = { // One-line quoted comment string\n className: 'comment',\n variants: [\n {begin: '\\'', end: '\\''},\n {begin: '\"', end: '\"'},\n ],\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n var ASSIGNMENT = {\n begin: '/',\n end: '/',\n keywords: KEYWORDS,\n contains: [\n QSTR,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_NUMBER_MODE,\n ],\n };\n var DESCTEXT = { // Parameter/set/variable description text\n begin: /[a-z][a-z0-9_]*(\\([a-z0-9_, ]*\\))?[ \\t]+/,\n excludeBegin: true,\n end: '$',\n endsWithParent: true,\n contains: [\n QSTR,\n ASSIGNMENT,\n {\n className: 'comment',\n begin: /([ ]*[a-z0-9&#*=?@>\\\\<:\\-,()$\\[\\]_.{}!+%^]+)+/,\n relevance: 0\n },\n ],\n };\n\n return {\n aliases: ['gms'],\n case_insensitive: true,\n keywords: KEYWORDS,\n contains: [\n hljs.COMMENT(/^\\$ontext/, /^\\$offtext/),\n {\n className: 'meta',\n begin: '^\\\\$[a-z0-9]+',\n end: '$',\n returnBegin: true,\n contains: [\n {\n className: 'meta-keyword',\n begin: '^\\\\$[a-z0-9]+',\n }\n ]\n },\n hljs.COMMENT('^\\\\*', '$'),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n // Declarations\n {\n beginKeywords:\n 'set sets parameter parameters variable variables ' +\n 'scalar scalars equation equations',\n end: ';',\n contains: [\n hljs.COMMENT('^\\\\*', '$'),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n ASSIGNMENT,\n DESCTEXT,\n ]\n },\n { // table environment\n beginKeywords: 'table',\n end: ';',\n returnBegin: true,\n contains: [\n { // table header row\n beginKeywords: 'table',\n end: '$',\n contains: [DESCTEXT],\n },\n hljs.COMMENT('^\\\\*', '$'),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_NUMBER_MODE,\n // Table does not contain DESCTEXT or ASSIGNMENT\n ]\n },\n // Function definitions\n {\n className: 'function',\n begin: /^[a-z][a-z0-9_,\\-+' ()$]+\\.{2}/,\n returnBegin: true,\n contains: [\n { // Function title\n className: 'title',\n begin: /^[a-z0-9_]+/,\n },\n PARAMS,\n SYMBOLS,\n ],\n },\n hljs.C_NUMBER_MODE,\n SYMBOLS,\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword: 'and bool break call callexe checkinterrupt clear clearg closeall cls comlog compile ' +\n 'continue create debug declare delete disable dlibrary dllcall do dos ed edit else ' +\n 'elseif enable end endfor endif endp endo errorlog errorlogat expr external fn ' +\n 'for format goto gosub graph if keyword let lib library line load loadarray loadexe ' +\n 'loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow ' +\n 'matrix msym ndpclex new not open or output outwidth plot plotsym pop prcsn print ' +\n 'printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen ' +\n 'scroll setarray show sparse stop string struct system trace trap threadfor ' +\n 'threadendfor threadbegin threadjoin threadstat threadend until use while winprint',\n built_in: 'abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol ' +\n 'AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks ' +\n 'AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults ' +\n 'annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness ' +\n 'annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd ' +\n 'astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar ' +\n 'base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 ' +\n 'cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv ' +\n 'cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn ' +\n 'cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi ' +\n 'cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ' +\n 'ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated ' +\n 'complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs ' +\n 'cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos ' +\n 'datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd ' +\n 'dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName ' +\n 'dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy ' +\n 'dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen ' +\n 'dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA ' +\n 'dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField ' +\n 'dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition ' +\n 'dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows ' +\n 'dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly ' +\n 'dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy ' +\n 'dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl ' +\n 'dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt ' +\n 'dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday ' +\n 'dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays ' +\n 'endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error ' +\n 'etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut ' +\n 'EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol ' +\n 'EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq ' +\n 'feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt ' +\n 'floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC ' +\n 'gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders ' +\n 'gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse ' +\n 'gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray ' +\n 'getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders ' +\n 'getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT ' +\n 'gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm ' +\n 'hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 ' +\n 'indicesf indicesfn indnv indsav integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 ' +\n 'inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf ' +\n 'isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv ' +\n 'lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn ' +\n 'lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind ' +\n 'loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars ' +\n 'makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli ' +\n 'mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave ' +\n 'movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate ' +\n 'olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto ' +\n 'pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox ' +\n 'plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea ' +\n 'plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout ' +\n 'plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill ' +\n 'plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol ' +\n 'plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange ' +\n 'plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel ' +\n 'plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot ' +\n 'pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames ' +\n 'pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector ' +\n 'pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate ' +\n 'qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr ' +\n 'real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn ' +\n 'rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel ' +\n 'rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn ' +\n 'rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh ' +\n 'rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind ' +\n 'scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa ' +\n 'setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind ' +\n 'sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL ' +\n 'spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense ' +\n 'spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet ' +\n 'sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt ' +\n 'strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr ' +\n 'surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname threadBegin threadEnd threadEndFor threadFor ' +\n 'threadJoin threadStat time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk ' +\n 'trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt ' +\n 'utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs ' +\n 'vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window ' +\n 'writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM ' +\n 'xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics cdfEmpirical dot h5create h5open h5read h5readAttribute ' +\n 'h5write h5writeAttribute ldl plotAddErrorBar plotAddSurface plotCDFEmpirical plotSetColormap plotSetContourLabels ' +\n 'plotSetLegendFont plotSetTextInterpreter plotSetXTicCount plotSetYTicCount plotSetZLevels powerm strjoin strtrim sylvester',\n literal: 'DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS ' +\n 'DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 ' +\n 'DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS ' +\n 'DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES ' +\n 'DB_TRANSACTIONS DB_UNICODE DB_VIEWS'\n };\n\n var PREPROCESSOR =\n {\n className: 'meta',\n begin: '#', end: '$',\n keywords: {'meta-keyword': 'define definecs|10 undef ifdef ifndef iflight ifdllcall ifmac ifos2win ifunix else endif lineson linesoff srcfile srcline'},\n contains: [\n {\n begin: /\\\\\\n/, relevance: 0\n },\n {\n beginKeywords: 'include', end: '$',\n keywords: {'meta-keyword': 'include'},\n contains: [\n {\n className: 'meta-string',\n begin: '\"', end: '\"',\n illegal: '\\\\n'\n }\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n var FUNCTION_TITLE = hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(?';\n var PARSE_PARAMS = [\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n }\n ];\n\n return {\n aliases: ['gss'],\n case_insensitive: true, // language is case-insensitive\n keywords: KEYWORDS,\n illegal: '(\\\\{[%#]|[%#]\\\\})',\n contains: [\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT('@', '@'),\n PREPROCESSOR,\n {\n className: 'string',\n begin: '\"', end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n className: 'function',\n beginKeywords: 'proc keyword',\n end: ';',\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n {\n begin: FUNCTION_TITLE, returnBegin: true,\n contains: [hljs.UNDERSCORE_TITLE_MODE],\n relevance: 0\n },\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ].concat(PARSE_PARAMS)\n },\n {\n className: 'function',\n beginKeywords: 'fn',\n end: ';',\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n {\n begin: FUNCTION_TITLE + hljs.IDENT_RE + '\\\\)?\\\\s*\\\\=\\\\s*', returnBegin: true,\n contains: [hljs.UNDERSCORE_TITLE_MODE],\n relevance: 0\n },\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ].concat(PARSE_PARAMS)\n },\n {\n className: 'function',\n begin: '\\\\bexternal (proc|keyword|fn)\\\\s+',\n end: ';',\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n {\n begin: FUNCTION_TITLE, returnBegin: true,\n contains: [hljs.UNDERSCORE_TITLE_MODE],\n relevance: 0\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n className: 'function',\n begin: '\\\\bexternal (matrix|string|array|sparse matrix|struct ' + hljs.IDENT_RE + ')\\\\s+',\n end: ';',\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var GCODE_IDENT_RE = '[A-Z_][A-Z0-9_.]*';\n var GCODE_CLOSE_RE = '\\\\%';\n var GCODE_KEYWORDS =\n 'IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT ' +\n 'EQ LT GT NE GE LE OR XOR';\n var GCODE_START = {\n className: 'meta',\n begin: '([O])([0-9]+)'\n };\n var GCODE_CODE = [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT(/\\(/, /\\)/),\n hljs.inherit(hljs.C_NUMBER_MODE, {begin: '([-+]?([0-9]*\\\\.?[0-9]+\\\\.?))|' + hljs.C_NUMBER_RE}),\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n {\n className: 'name',\n begin: '([G])([0-9]+\\\\.?[0-9]?)'\n },\n {\n className: 'name',\n begin: '([M])([0-9]+\\\\.?[0-9]?)'\n },\n {\n className: 'attr',\n begin: '(VC|VS|#)',\n end: '(\\\\d+)'\n },\n {\n className: 'attr',\n begin: '(VZOFX|VZOFY|VZOFZ)'\n },\n {\n className: 'built_in',\n begin: '(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\\\[)',\n end: '([-+]?([0-9]*\\\\.?[0-9]+\\\\.?))(\\\\])'\n },\n {\n className: 'symbol',\n variants: [\n {\n begin: 'N', end: '\\\\d+',\n illegal: '\\\\W'\n }\n ]\n }\n ];\n\n return {\n aliases: ['nc'],\n // Some implementations (CNC controls) of G-code are interoperable with uppercase and lowercase letters seamlessly.\n // However, most prefer all uppercase and uppercase is customary.\n case_insensitive: true,\n lexemes: GCODE_IDENT_RE,\n keywords: GCODE_KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: GCODE_CLOSE_RE\n },\n GCODE_START\n ].concat(GCODE_CODE)\n };\n};","module.exports = function (hljs) {\n return {\n aliases: ['feature'],\n keywords: 'Feature Background Ability Business\\ Need Scenario Scenarios Scenario\\ Outline Scenario\\ Template Examples Given And Then But When',\n contains: [\n {\n className: 'symbol',\n begin: '\\\\*',\n relevance: 0\n },\n {\n className: 'meta',\n begin: '@[^@\\\\s]+'\n },\n {\n begin: '\\\\|', end: '\\\\|\\\\w*$',\n contains: [\n {\n className: 'string',\n begin: '[^|]+'\n }\n ]\n },\n {\n className: 'variable',\n begin: '<', end: '>'\n },\n hljs.HASH_COMMENT_MODE,\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"'\n },\n hljs.QUOTE_STRING_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword:\n // Statements\n 'break continue discard do else for if return while switch case default ' +\n // Qualifiers\n 'attribute binding buffer ccw centroid centroid varying coherent column_major const cw ' +\n 'depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing ' +\n 'flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant ' +\n 'invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y ' +\n 'local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left ' +\n 'out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f '+\n 'r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict ' +\n 'rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 ' +\n 'rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 ' +\n 'rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip ' +\n 'triangles triangles_adjacency uniform varying vertices volatile writeonly',\n type:\n 'atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 ' +\n 'dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray ' +\n 'iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBuffer' +\n 'iimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray ' +\n 'image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray ' +\n 'isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D ' +\n 'isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 ' +\n 'mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray ' +\n 'sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow ' +\n 'sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D ' +\n 'samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow ' +\n 'image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect ' +\n 'uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray ' +\n 'usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D ' +\n 'samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void',\n built_in:\n // Constants\n 'gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes ' +\n 'gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms ' +\n 'gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers ' +\n 'gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits ' +\n 'gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize ' +\n 'gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters ' +\n 'gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors ' +\n 'gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers ' +\n 'gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents ' +\n 'gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits ' +\n 'gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents ' +\n 'gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset ' +\n 'gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms ' +\n 'gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits ' +\n 'gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents ' +\n 'gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters ' +\n 'gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents ' +\n 'gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents ' +\n 'gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits ' +\n 'gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors ' +\n 'gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms ' +\n 'gl_MaxVertexOutputComponents gl_MaxVertexOutputVectors gl_MaxVertexTextureImageUnits ' +\n 'gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffset ' +\n // Variables\n 'gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial ' +\n 'gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color ' +\n 'gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord ' +\n 'gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor ' +\n 'gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial ' +\n 'gl_FrontSecondaryColor gl_GlobalInvocationID gl_InstanceID gl_InvocationID gl_Layer gl_LightModel ' +\n 'gl_LightSource gl_LocalInvocationID gl_LocalInvocationIndex gl_ModelViewMatrix ' +\n 'gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose ' +\n 'gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose ' +\n 'gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 ' +\n 'gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 ' +\n 'gl_Normal gl_NormalMatrix gl_NormalScale gl_NumSamples gl_NumWorkGroups gl_ObjectPlaneQ ' +\n 'gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_Point gl_PointCoord ' +\n 'gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse ' +\n 'gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask ' +\n 'gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter ' +\n 'gl_TexCoord gl_TextureEnvColor gl_TextureMatrix gl_TextureMatrixInverse gl_TextureMatrixInverseTranspose ' +\n 'gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize gl_in gl_out ' +\n // Functions\n 'EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin ' +\n 'asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement ' +\n 'atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier ' +\n 'bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross ' +\n 'dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB ' +\n 'floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan ' +\n 'greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap ' +\n 'imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad ' +\n 'imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset ' +\n 'interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log ' +\n 'log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer ' +\n 'memoryBarrierImage memoryBarrierShared min mix mod modf noise1 noise2 noise3 noise4 ' +\n 'normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 ' +\n 'packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod ' +\n 'shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh ' +\n 'smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod ' +\n 'texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod ' +\n 'texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod ' +\n 'textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset ' +\n 'textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset ' +\n 'textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod ' +\n 'textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 ' +\n 'unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow',\n literal: 'true false'\n },\n illegal: '\"',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '#', end: '$'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var GML_KEYWORDS = {\n keywords: 'begin end if then else while do for break continue with until ' +\n 'repeat exit and or xor not return mod div switch case default var ' +\n 'globalvar enum #macro #region #endregion',\n built_in: 'is_real is_string is_array is_undefined is_int32 is_int64 ' +\n 'is_ptr is_vec3 is_vec4 is_matrix is_bool typeof ' +\n 'variable_global_exists variable_global_get variable_global_set ' +\n 'variable_instance_exists variable_instance_get variable_instance_set ' +\n 'variable_instance_get_names array_length_1d array_length_2d ' +\n 'array_height_2d array_equals array_create array_copy random ' +\n 'random_range irandom irandom_range random_set_seed random_get_seed ' +\n 'randomize randomise choose abs round floor ceil sign frac sqrt sqr ' +\n 'exp ln log2 log10 sin cos tan arcsin arccos arctan arctan2 dsin dcos ' +\n 'dtan darcsin darccos darctan darctan2 degtorad radtodeg power logn ' +\n 'min max mean median clamp lerp dot_product dot_product_3d ' +\n 'dot_product_normalised dot_product_3d_normalised ' +\n 'dot_product_normalized dot_product_3d_normalized math_set_epsilon ' +\n 'math_get_epsilon angle_difference point_distance_3d point_distance ' +\n 'point_direction lengthdir_x lengthdir_y real string int64 ptr ' +\n 'string_format chr ansi_char ord string_length string_byte_length ' +\n 'string_pos string_copy string_char_at string_ord_at string_byte_at ' +\n 'string_set_byte_at string_delete string_insert string_lower ' +\n 'string_upper string_repeat string_letters string_digits ' +\n 'string_lettersdigits string_replace string_replace_all string_count ' +\n 'string_hash_to_newline clipboard_has_text clipboard_set_text ' +\n 'clipboard_get_text date_current_datetime date_create_datetime ' +\n 'date_valid_datetime date_inc_year date_inc_month date_inc_week ' +\n 'date_inc_day date_inc_hour date_inc_minute date_inc_second ' +\n 'date_get_year date_get_month date_get_week date_get_day ' +\n 'date_get_hour date_get_minute date_get_second date_get_weekday ' +\n 'date_get_day_of_year date_get_hour_of_year date_get_minute_of_year ' +\n 'date_get_second_of_year date_year_span date_month_span ' +\n 'date_week_span date_day_span date_hour_span date_minute_span ' +\n 'date_second_span date_compare_datetime date_compare_date ' +\n 'date_compare_time date_date_of date_time_of date_datetime_string ' +\n 'date_date_string date_time_string date_days_in_month ' +\n 'date_days_in_year date_leap_year date_is_today date_set_timezone ' +\n 'date_get_timezone game_set_speed game_get_speed motion_set ' +\n 'motion_add place_free place_empty place_meeting place_snapped ' +\n 'move_random move_snap move_towards_point move_contact_solid ' +\n 'move_contact_all move_outside_solid move_outside_all ' +\n 'move_bounce_solid move_bounce_all move_wrap distance_to_point ' +\n 'distance_to_object position_empty position_meeting path_start ' +\n 'path_end mp_linear_step mp_potential_step mp_linear_step_object ' +\n 'mp_potential_step_object mp_potential_settings mp_linear_path ' +\n 'mp_potential_path mp_linear_path_object mp_potential_path_object ' +\n 'mp_grid_create mp_grid_destroy mp_grid_clear_all mp_grid_clear_cell ' +\n 'mp_grid_clear_rectangle mp_grid_add_cell mp_grid_get_cell ' +\n 'mp_grid_add_rectangle mp_grid_add_instances mp_grid_path ' +\n 'mp_grid_draw mp_grid_to_ds_grid collision_point collision_rectangle ' +\n 'collision_circle collision_ellipse collision_line ' +\n 'collision_point_list collision_rectangle_list collision_circle_list ' +\n 'collision_ellipse_list collision_line_list instance_position_list ' +\n 'instance_place_list point_in_rectangle ' +\n 'point_in_triangle point_in_circle rectangle_in_rectangle ' +\n 'rectangle_in_triangle rectangle_in_circle instance_find ' +\n 'instance_exists instance_number instance_position instance_nearest ' +\n 'instance_furthest instance_place instance_create_depth ' +\n 'instance_create_layer instance_copy instance_change instance_destroy ' +\n 'position_destroy position_change instance_id_get ' +\n 'instance_deactivate_all instance_deactivate_object ' +\n 'instance_deactivate_region instance_activate_all ' +\n 'instance_activate_object instance_activate_region room_goto ' +\n 'room_goto_previous room_goto_next room_previous room_next ' +\n 'room_restart game_end game_restart game_load game_save ' +\n 'game_save_buffer game_load_buffer event_perform event_user ' +\n 'event_perform_object event_inherited show_debug_message ' +\n 'show_debug_overlay debug_event debug_get_callstack alarm_get ' +\n 'alarm_set font_texture_page_size keyboard_set_map keyboard_get_map ' +\n 'keyboard_unset_map keyboard_check keyboard_check_pressed ' +\n 'keyboard_check_released keyboard_check_direct keyboard_get_numlock ' +\n 'keyboard_set_numlock keyboard_key_press keyboard_key_release ' +\n 'keyboard_clear io_clear mouse_check_button ' +\n 'mouse_check_button_pressed mouse_check_button_released ' +\n 'mouse_wheel_up mouse_wheel_down mouse_clear draw_self draw_sprite ' +\n 'draw_sprite_pos draw_sprite_ext draw_sprite_stretched ' +\n 'draw_sprite_stretched_ext draw_sprite_tiled draw_sprite_tiled_ext ' +\n 'draw_sprite_part draw_sprite_part_ext draw_sprite_general draw_clear ' +\n 'draw_clear_alpha draw_point draw_line draw_line_width draw_rectangle ' +\n 'draw_roundrect draw_roundrect_ext draw_triangle draw_circle ' +\n 'draw_ellipse draw_set_circle_precision draw_arrow draw_button ' +\n 'draw_path draw_healthbar draw_getpixel draw_getpixel_ext ' +\n 'draw_set_colour draw_set_color draw_set_alpha draw_get_colour ' +\n 'draw_get_color draw_get_alpha merge_colour make_colour_rgb ' +\n 'make_colour_hsv colour_get_red colour_get_green colour_get_blue ' +\n 'colour_get_hue colour_get_saturation colour_get_value merge_color ' +\n 'make_color_rgb make_color_hsv color_get_red color_get_green ' +\n 'color_get_blue color_get_hue color_get_saturation color_get_value ' +\n 'merge_color screen_save screen_save_part draw_set_font ' +\n 'draw_set_halign draw_set_valign draw_text draw_text_ext string_width ' +\n 'string_height string_width_ext string_height_ext ' +\n 'draw_text_transformed draw_text_ext_transformed draw_text_colour ' +\n 'draw_text_ext_colour draw_text_transformed_colour ' +\n 'draw_text_ext_transformed_colour draw_text_color draw_text_ext_color ' +\n 'draw_text_transformed_color draw_text_ext_transformed_color ' +\n 'draw_point_colour draw_line_colour draw_line_width_colour ' +\n 'draw_rectangle_colour draw_roundrect_colour ' +\n 'draw_roundrect_colour_ext draw_triangle_colour draw_circle_colour ' +\n 'draw_ellipse_colour draw_point_color draw_line_color ' +\n 'draw_line_width_color draw_rectangle_color draw_roundrect_color ' +\n 'draw_roundrect_color_ext draw_triangle_color draw_circle_color ' +\n 'draw_ellipse_color draw_primitive_begin draw_vertex ' +\n 'draw_vertex_colour draw_vertex_color draw_primitive_end ' +\n 'sprite_get_uvs font_get_uvs sprite_get_texture font_get_texture ' +\n 'texture_get_width texture_get_height texture_get_uvs ' +\n 'draw_primitive_begin_texture draw_vertex_texture ' +\n 'draw_vertex_texture_colour draw_vertex_texture_color ' +\n 'texture_global_scale surface_create surface_create_ext ' +\n 'surface_resize surface_free surface_exists surface_get_width ' +\n 'surface_get_height surface_get_texture surface_set_target ' +\n 'surface_set_target_ext surface_reset_target surface_depth_disable ' +\n 'surface_get_depth_disable draw_surface draw_surface_stretched ' +\n 'draw_surface_tiled draw_surface_part draw_surface_ext ' +\n 'draw_surface_stretched_ext draw_surface_tiled_ext ' +\n 'draw_surface_part_ext draw_surface_general surface_getpixel ' +\n 'surface_getpixel_ext surface_save surface_save_part surface_copy ' +\n 'surface_copy_part application_surface_draw_enable ' +\n 'application_get_position application_surface_enable ' +\n 'application_surface_is_enabled display_get_width display_get_height ' +\n 'display_get_orientation display_get_gui_width display_get_gui_height ' +\n 'display_reset display_mouse_get_x display_mouse_get_y ' +\n 'display_mouse_set display_set_ui_visibility ' +\n 'window_set_fullscreen window_get_fullscreen ' +\n 'window_set_caption window_set_min_width window_set_max_width ' +\n 'window_set_min_height window_set_max_height window_get_visible_rects ' +\n 'window_get_caption window_set_cursor window_get_cursor ' +\n 'window_set_colour window_get_colour window_set_color ' +\n 'window_get_color window_set_position window_set_size ' +\n 'window_set_rectangle window_center window_get_x window_get_y ' +\n 'window_get_width window_get_height window_mouse_get_x ' +\n 'window_mouse_get_y window_mouse_set window_view_mouse_get_x ' +\n 'window_view_mouse_get_y window_views_mouse_get_x ' +\n 'window_views_mouse_get_y audio_listener_position ' +\n 'audio_listener_velocity audio_listener_orientation ' +\n 'audio_emitter_position audio_emitter_create audio_emitter_free ' +\n 'audio_emitter_exists audio_emitter_pitch audio_emitter_velocity ' +\n 'audio_emitter_falloff audio_emitter_gain audio_play_sound ' +\n 'audio_play_sound_on audio_play_sound_at audio_stop_sound ' +\n 'audio_resume_music audio_music_is_playing audio_resume_sound ' +\n 'audio_pause_sound audio_pause_music audio_channel_num ' +\n 'audio_sound_length audio_get_type audio_falloff_set_model ' +\n 'audio_play_music audio_stop_music audio_master_gain audio_music_gain ' +\n 'audio_sound_gain audio_sound_pitch audio_stop_all audio_resume_all ' +\n 'audio_pause_all audio_is_playing audio_is_paused audio_exists ' +\n 'audio_sound_set_track_position audio_sound_get_track_position ' +\n 'audio_emitter_get_gain audio_emitter_get_pitch audio_emitter_get_x ' +\n 'audio_emitter_get_y audio_emitter_get_z audio_emitter_get_vx ' +\n 'audio_emitter_get_vy audio_emitter_get_vz ' +\n 'audio_listener_set_position audio_listener_set_velocity ' +\n 'audio_listener_set_orientation audio_listener_get_data ' +\n 'audio_set_master_gain audio_get_master_gain audio_sound_get_gain ' +\n 'audio_sound_get_pitch audio_get_name audio_sound_set_track_position ' +\n 'audio_sound_get_track_position audio_create_stream ' +\n 'audio_destroy_stream audio_create_sync_group ' +\n 'audio_destroy_sync_group audio_play_in_sync_group ' +\n 'audio_start_sync_group audio_stop_sync_group audio_pause_sync_group ' +\n 'audio_resume_sync_group audio_sync_group_get_track_pos ' +\n 'audio_sync_group_debug audio_sync_group_is_playing audio_debug ' +\n 'audio_group_load audio_group_unload audio_group_is_loaded ' +\n 'audio_group_load_progress audio_group_name audio_group_stop_all ' +\n 'audio_group_set_gain audio_create_buffer_sound ' +\n 'audio_free_buffer_sound audio_create_play_queue ' +\n 'audio_free_play_queue audio_queue_sound audio_get_recorder_count ' +\n 'audio_get_recorder_info audio_start_recording audio_stop_recording ' +\n 'audio_sound_get_listener_mask audio_emitter_get_listener_mask ' +\n 'audio_get_listener_mask audio_sound_set_listener_mask ' +\n 'audio_emitter_set_listener_mask audio_set_listener_mask ' +\n 'audio_get_listener_count audio_get_listener_info audio_system ' +\n 'show_message show_message_async clickable_add clickable_add_ext ' +\n 'clickable_change clickable_change_ext clickable_delete ' +\n 'clickable_exists clickable_set_style show_question ' +\n 'show_question_async get_integer get_string get_integer_async ' +\n 'get_string_async get_login_async get_open_filename get_save_filename ' +\n 'get_open_filename_ext get_save_filename_ext show_error ' +\n 'highscore_clear highscore_add highscore_value highscore_name ' +\n 'draw_highscore sprite_exists sprite_get_name sprite_get_number ' +\n 'sprite_get_width sprite_get_height sprite_get_xoffset ' +\n 'sprite_get_yoffset sprite_get_bbox_left sprite_get_bbox_right ' +\n 'sprite_get_bbox_top sprite_get_bbox_bottom sprite_save ' +\n 'sprite_save_strip sprite_set_cache_size sprite_set_cache_size_ext ' +\n 'sprite_get_tpe sprite_prefetch sprite_prefetch_multi sprite_flush ' +\n 'sprite_flush_multi sprite_set_speed sprite_get_speed_type ' +\n 'sprite_get_speed font_exists font_get_name font_get_fontname ' +\n 'font_get_bold font_get_italic font_get_first font_get_last ' +\n 'font_get_size font_set_cache_size path_exists path_get_name ' +\n 'path_get_length path_get_time path_get_kind path_get_closed ' +\n 'path_get_precision path_get_number path_get_point_x path_get_point_y ' +\n 'path_get_point_speed path_get_x path_get_y path_get_speed ' +\n 'script_exists script_get_name timeline_add timeline_delete ' +\n 'timeline_clear timeline_exists timeline_get_name ' +\n 'timeline_moment_clear timeline_moment_add_script timeline_size ' +\n 'timeline_max_moment object_exists object_get_name object_get_sprite ' +\n 'object_get_solid object_get_visible object_get_persistent ' +\n 'object_get_mask object_get_parent object_get_physics ' +\n 'object_is_ancestor room_exists room_get_name sprite_set_offset ' +\n 'sprite_duplicate sprite_assign sprite_merge sprite_add ' +\n 'sprite_replace sprite_create_from_surface sprite_add_from_surface ' +\n 'sprite_delete sprite_set_alpha_from_sprite sprite_collision_mask ' +\n 'font_add_enable_aa font_add_get_enable_aa font_add font_add_sprite ' +\n 'font_add_sprite_ext font_replace font_replace_sprite ' +\n 'font_replace_sprite_ext font_delete path_set_kind path_set_closed ' +\n 'path_set_precision path_add path_assign path_duplicate path_append ' +\n 'path_delete path_add_point path_insert_point path_change_point ' +\n 'path_delete_point path_clear_points path_reverse path_mirror ' +\n 'path_flip path_rotate path_rescale path_shift script_execute ' +\n 'object_set_sprite object_set_solid object_set_visible ' +\n 'object_set_persistent object_set_mask room_set_width room_set_height ' +\n 'room_set_persistent room_set_background_colour ' +\n 'room_set_background_color room_set_view room_set_viewport ' +\n 'room_get_viewport room_set_view_enabled room_add room_duplicate ' +\n 'room_assign room_instance_add room_instance_clear room_get_camera ' +\n 'room_set_camera asset_get_index asset_get_type ' +\n 'file_text_open_from_string file_text_open_read file_text_open_write ' +\n 'file_text_open_append file_text_close file_text_write_string ' +\n 'file_text_write_real file_text_writeln file_text_read_string ' +\n 'file_text_read_real file_text_readln file_text_eof file_text_eoln ' +\n 'file_exists file_delete file_rename file_copy directory_exists ' +\n 'directory_create directory_destroy file_find_first file_find_next ' +\n 'file_find_close file_attributes filename_name filename_path ' +\n 'filename_dir filename_drive filename_ext filename_change_ext ' +\n 'file_bin_open file_bin_rewrite file_bin_close file_bin_position ' +\n 'file_bin_size file_bin_seek file_bin_write_byte file_bin_read_byte ' +\n 'parameter_count parameter_string environment_get_variable ' +\n 'ini_open_from_string ini_open ini_close ini_read_string ' +\n 'ini_read_real ini_write_string ini_write_real ini_key_exists ' +\n 'ini_section_exists ini_key_delete ini_section_delete ' +\n 'ds_set_precision ds_exists ds_stack_create ds_stack_destroy ' +\n 'ds_stack_clear ds_stack_copy ds_stack_size ds_stack_empty ' +\n 'ds_stack_push ds_stack_pop ds_stack_top ds_stack_write ds_stack_read ' +\n 'ds_queue_create ds_queue_destroy ds_queue_clear ds_queue_copy ' +\n 'ds_queue_size ds_queue_empty ds_queue_enqueue ds_queue_dequeue ' +\n 'ds_queue_head ds_queue_tail ds_queue_write ds_queue_read ' +\n 'ds_list_create ds_list_destroy ds_list_clear ds_list_copy ' +\n 'ds_list_size ds_list_empty ds_list_add ds_list_insert ' +\n 'ds_list_replace ds_list_delete ds_list_find_index ds_list_find_value ' +\n 'ds_list_mark_as_list ds_list_mark_as_map ds_list_sort ' +\n 'ds_list_shuffle ds_list_write ds_list_read ds_list_set ds_map_create ' +\n 'ds_map_destroy ds_map_clear ds_map_copy ds_map_size ds_map_empty ' +\n 'ds_map_add ds_map_add_list ds_map_add_map ds_map_replace ' +\n 'ds_map_replace_map ds_map_replace_list ds_map_delete ds_map_exists ' +\n 'ds_map_find_value ds_map_find_previous ds_map_find_next ' +\n 'ds_map_find_first ds_map_find_last ds_map_write ds_map_read ' +\n 'ds_map_secure_save ds_map_secure_load ds_map_secure_load_buffer ' +\n 'ds_map_secure_save_buffer ds_map_set ds_priority_create ' +\n 'ds_priority_destroy ds_priority_clear ds_priority_copy ' +\n 'ds_priority_size ds_priority_empty ds_priority_add ' +\n 'ds_priority_change_priority ds_priority_find_priority ' +\n 'ds_priority_delete_value ds_priority_delete_min ds_priority_find_min ' +\n 'ds_priority_delete_max ds_priority_find_max ds_priority_write ' +\n 'ds_priority_read ds_grid_create ds_grid_destroy ds_grid_copy ' +\n 'ds_grid_resize ds_grid_width ds_grid_height ds_grid_clear ' +\n 'ds_grid_set ds_grid_add ds_grid_multiply ds_grid_set_region ' +\n 'ds_grid_add_region ds_grid_multiply_region ds_grid_set_disk ' +\n 'ds_grid_add_disk ds_grid_multiply_disk ds_grid_set_grid_region ' +\n 'ds_grid_add_grid_region ds_grid_multiply_grid_region ds_grid_get ' +\n 'ds_grid_get_sum ds_grid_get_max ds_grid_get_min ds_grid_get_mean ' +\n 'ds_grid_get_disk_sum ds_grid_get_disk_min ds_grid_get_disk_max ' +\n 'ds_grid_get_disk_mean ds_grid_value_exists ds_grid_value_x ' +\n 'ds_grid_value_y ds_grid_value_disk_exists ds_grid_value_disk_x ' +\n 'ds_grid_value_disk_y ds_grid_shuffle ds_grid_write ds_grid_read ' +\n 'ds_grid_sort ds_grid_set ds_grid_get effect_create_below ' +\n 'effect_create_above effect_clear part_type_create part_type_destroy ' +\n 'part_type_exists part_type_clear part_type_shape part_type_sprite ' +\n 'part_type_size part_type_scale part_type_orientation part_type_life ' +\n 'part_type_step part_type_death part_type_speed part_type_direction ' +\n 'part_type_gravity part_type_colour1 part_type_colour2 ' +\n 'part_type_colour3 part_type_colour_mix part_type_colour_rgb ' +\n 'part_type_colour_hsv part_type_color1 part_type_color2 ' +\n 'part_type_color3 part_type_color_mix part_type_color_rgb ' +\n 'part_type_color_hsv part_type_alpha1 part_type_alpha2 ' +\n 'part_type_alpha3 part_type_blend part_system_create ' +\n 'part_system_create_layer part_system_destroy part_system_exists ' +\n 'part_system_clear part_system_draw_order part_system_depth ' +\n 'part_system_position part_system_automatic_update ' +\n 'part_system_automatic_draw part_system_update part_system_drawit ' +\n 'part_system_get_layer part_system_layer part_particles_create ' +\n 'part_particles_create_colour part_particles_create_color ' +\n 'part_particles_clear part_particles_count part_emitter_create ' +\n 'part_emitter_destroy part_emitter_destroy_all part_emitter_exists ' +\n 'part_emitter_clear part_emitter_region part_emitter_burst ' +\n 'part_emitter_stream external_call external_define external_free ' +\n 'window_handle window_device matrix_get matrix_set ' +\n 'matrix_build_identity matrix_build matrix_build_lookat ' +\n 'matrix_build_projection_ortho matrix_build_projection_perspective ' +\n 'matrix_build_projection_perspective_fov matrix_multiply ' +\n 'matrix_transform_vertex matrix_stack_push matrix_stack_pop ' +\n 'matrix_stack_multiply matrix_stack_set matrix_stack_clear ' +\n 'matrix_stack_top matrix_stack_is_empty browser_input_capture ' +\n 'os_get_config os_get_info os_get_language os_get_region ' +\n 'os_lock_orientation display_get_dpi_x display_get_dpi_y ' +\n 'display_set_gui_size display_set_gui_maximise ' +\n 'display_set_gui_maximize device_mouse_dbclick_enable ' +\n 'display_set_timing_method display_get_timing_method ' +\n 'display_set_sleep_margin display_get_sleep_margin virtual_key_add ' +\n 'virtual_key_hide virtual_key_delete virtual_key_show ' +\n 'draw_enable_drawevent draw_enable_swf_aa draw_set_swf_aa_level ' +\n 'draw_get_swf_aa_level draw_texture_flush draw_flush ' +\n 'gpu_set_blendenable gpu_set_ztestenable gpu_set_zfunc ' +\n 'gpu_set_zwriteenable gpu_set_lightingenable gpu_set_fog ' +\n 'gpu_set_cullmode gpu_set_blendmode gpu_set_blendmode_ext ' +\n 'gpu_set_blendmode_ext_sepalpha gpu_set_colorwriteenable ' +\n 'gpu_set_colourwriteenable gpu_set_alphatestenable ' +\n 'gpu_set_alphatestref gpu_set_alphatestfunc gpu_set_texfilter ' +\n 'gpu_set_texfilter_ext gpu_set_texrepeat gpu_set_texrepeat_ext ' +\n 'gpu_set_tex_filter gpu_set_tex_filter_ext gpu_set_tex_repeat ' +\n 'gpu_set_tex_repeat_ext gpu_set_tex_mip_filter ' +\n 'gpu_set_tex_mip_filter_ext gpu_set_tex_mip_bias ' +\n 'gpu_set_tex_mip_bias_ext gpu_set_tex_min_mip gpu_set_tex_min_mip_ext ' +\n 'gpu_set_tex_max_mip gpu_set_tex_max_mip_ext gpu_set_tex_max_aniso ' +\n 'gpu_set_tex_max_aniso_ext gpu_set_tex_mip_enable ' +\n 'gpu_set_tex_mip_enable_ext gpu_get_blendenable gpu_get_ztestenable ' +\n 'gpu_get_zfunc gpu_get_zwriteenable gpu_get_lightingenable ' +\n 'gpu_get_fog gpu_get_cullmode gpu_get_blendmode gpu_get_blendmode_ext ' +\n 'gpu_get_blendmode_ext_sepalpha gpu_get_blendmode_src ' +\n 'gpu_get_blendmode_dest gpu_get_blendmode_srcalpha ' +\n 'gpu_get_blendmode_destalpha gpu_get_colorwriteenable ' +\n 'gpu_get_colourwriteenable gpu_get_alphatestenable ' +\n 'gpu_get_alphatestref gpu_get_alphatestfunc gpu_get_texfilter ' +\n 'gpu_get_texfilter_ext gpu_get_texrepeat gpu_get_texrepeat_ext ' +\n 'gpu_get_tex_filter gpu_get_tex_filter_ext gpu_get_tex_repeat ' +\n 'gpu_get_tex_repeat_ext gpu_get_tex_mip_filter ' +\n 'gpu_get_tex_mip_filter_ext gpu_get_tex_mip_bias ' +\n 'gpu_get_tex_mip_bias_ext gpu_get_tex_min_mip gpu_get_tex_min_mip_ext ' +\n 'gpu_get_tex_max_mip gpu_get_tex_max_mip_ext gpu_get_tex_max_aniso ' +\n 'gpu_get_tex_max_aniso_ext gpu_get_tex_mip_enable ' +\n 'gpu_get_tex_mip_enable_ext gpu_push_state gpu_pop_state ' +\n 'gpu_get_state gpu_set_state draw_light_define_ambient ' +\n 'draw_light_define_direction draw_light_define_point ' +\n 'draw_light_enable draw_set_lighting draw_light_get_ambient ' +\n 'draw_light_get draw_get_lighting shop_leave_rating url_get_domain ' +\n 'url_open url_open_ext url_open_full get_timer achievement_login ' +\n 'achievement_logout achievement_post achievement_increment ' +\n 'achievement_post_score achievement_available ' +\n 'achievement_show_achievements achievement_show_leaderboards ' +\n 'achievement_load_friends achievement_load_leaderboard ' +\n 'achievement_send_challenge achievement_load_progress ' +\n 'achievement_reset achievement_login_status achievement_get_pic ' +\n 'achievement_show_challenge_notifications achievement_get_challenges ' +\n 'achievement_event achievement_show achievement_get_info ' +\n 'cloud_file_save cloud_string_save cloud_synchronise ads_enable ' +\n 'ads_disable ads_setup ads_engagement_launch ads_engagement_available ' +\n 'ads_engagement_active ads_event ads_event_preload ' +\n 'ads_set_reward_callback ads_get_display_height ads_get_display_width ' +\n 'ads_move ads_interstitial_available ads_interstitial_display ' +\n 'device_get_tilt_x device_get_tilt_y device_get_tilt_z ' +\n 'device_is_keypad_open device_mouse_check_button ' +\n 'device_mouse_check_button_pressed device_mouse_check_button_released ' +\n 'device_mouse_x device_mouse_y device_mouse_raw_x device_mouse_raw_y ' +\n 'device_mouse_x_to_gui device_mouse_y_to_gui iap_activate iap_status ' +\n 'iap_enumerate_products iap_restore_all iap_acquire iap_consume ' +\n 'iap_product_details iap_purchase_details facebook_init ' +\n 'facebook_login facebook_status facebook_graph_request ' +\n 'facebook_dialog facebook_logout facebook_launch_offerwall ' +\n 'facebook_post_message facebook_send_invite facebook_user_id ' +\n 'facebook_accesstoken facebook_check_permission ' +\n 'facebook_request_read_permissions ' +\n 'facebook_request_publish_permissions gamepad_is_supported ' +\n 'gamepad_get_device_count gamepad_is_connected ' +\n 'gamepad_get_description gamepad_get_button_threshold ' +\n 'gamepad_set_button_threshold gamepad_get_axis_deadzone ' +\n 'gamepad_set_axis_deadzone gamepad_button_count gamepad_button_check ' +\n 'gamepad_button_check_pressed gamepad_button_check_released ' +\n 'gamepad_button_value gamepad_axis_count gamepad_axis_value ' +\n 'gamepad_set_vibration gamepad_set_colour gamepad_set_color ' +\n 'os_is_paused window_has_focus code_is_compiled http_get ' +\n 'http_get_file http_post_string http_request json_encode json_decode ' +\n 'zip_unzip load_csv base64_encode base64_decode md5_string_unicode ' +\n 'md5_string_utf8 md5_file os_is_network_connected sha1_string_unicode ' +\n 'sha1_string_utf8 sha1_file os_powersave_enable analytics_event ' +\n 'analytics_event_ext win8_livetile_tile_notification ' +\n 'win8_livetile_tile_clear win8_livetile_badge_notification ' +\n 'win8_livetile_badge_clear win8_livetile_queue_enable ' +\n 'win8_secondarytile_pin win8_secondarytile_badge_notification ' +\n 'win8_secondarytile_delete win8_livetile_notification_begin ' +\n 'win8_livetile_notification_secondary_begin ' +\n 'win8_livetile_notification_expiry win8_livetile_notification_tag ' +\n 'win8_livetile_notification_text_add ' +\n 'win8_livetile_notification_image_add win8_livetile_notification_end ' +\n 'win8_appbar_enable win8_appbar_add_element ' +\n 'win8_appbar_remove_element win8_settingscharm_add_entry ' +\n 'win8_settingscharm_add_html_entry win8_settingscharm_add_xaml_entry ' +\n 'win8_settingscharm_set_xaml_property ' +\n 'win8_settingscharm_get_xaml_property win8_settingscharm_remove_entry ' +\n 'win8_share_image win8_share_screenshot win8_share_file ' +\n 'win8_share_url win8_share_text win8_search_enable ' +\n 'win8_search_disable win8_search_add_suggestions ' +\n 'win8_device_touchscreen_available win8_license_initialize_sandbox ' +\n 'win8_license_trial_version winphone_license_trial_version ' +\n 'winphone_tile_title winphone_tile_count winphone_tile_back_title ' +\n 'winphone_tile_back_content winphone_tile_back_content_wide ' +\n 'winphone_tile_front_image winphone_tile_front_image_small ' +\n 'winphone_tile_front_image_wide winphone_tile_back_image ' +\n 'winphone_tile_back_image_wide winphone_tile_background_colour ' +\n 'winphone_tile_background_color winphone_tile_icon_image ' +\n 'winphone_tile_small_icon_image winphone_tile_wide_content ' +\n 'winphone_tile_cycle_images winphone_tile_small_background_image ' +\n 'physics_world_create physics_world_gravity ' +\n 'physics_world_update_speed physics_world_update_iterations ' +\n 'physics_world_draw_debug physics_pause_enable physics_fixture_create ' +\n 'physics_fixture_set_kinematic physics_fixture_set_density ' +\n 'physics_fixture_set_awake physics_fixture_set_restitution ' +\n 'physics_fixture_set_friction physics_fixture_set_collision_group ' +\n 'physics_fixture_set_sensor physics_fixture_set_linear_damping ' +\n 'physics_fixture_set_angular_damping physics_fixture_set_circle_shape ' +\n 'physics_fixture_set_box_shape physics_fixture_set_edge_shape ' +\n 'physics_fixture_set_polygon_shape physics_fixture_set_chain_shape ' +\n 'physics_fixture_add_point physics_fixture_bind ' +\n 'physics_fixture_bind_ext physics_fixture_delete physics_apply_force ' +\n 'physics_apply_impulse physics_apply_angular_impulse ' +\n 'physics_apply_local_force physics_apply_local_impulse ' +\n 'physics_apply_torque physics_mass_properties physics_draw_debug ' +\n 'physics_test_overlap physics_remove_fixture physics_set_friction ' +\n 'physics_set_density physics_set_restitution physics_get_friction ' +\n 'physics_get_density physics_get_restitution ' +\n 'physics_joint_distance_create physics_joint_rope_create ' +\n 'physics_joint_revolute_create physics_joint_prismatic_create ' +\n 'physics_joint_pulley_create physics_joint_wheel_create ' +\n 'physics_joint_weld_create physics_joint_friction_create ' +\n 'physics_joint_gear_create physics_joint_enable_motor ' +\n 'physics_joint_get_value physics_joint_set_value physics_joint_delete ' +\n 'physics_particle_create physics_particle_delete ' +\n 'physics_particle_delete_region_circle ' +\n 'physics_particle_delete_region_box ' +\n 'physics_particle_delete_region_poly physics_particle_set_flags ' +\n 'physics_particle_set_category_flags physics_particle_draw ' +\n 'physics_particle_draw_ext physics_particle_count ' +\n 'physics_particle_get_data physics_particle_get_data_particle ' +\n 'physics_particle_group_begin physics_particle_group_circle ' +\n 'physics_particle_group_box physics_particle_group_polygon ' +\n 'physics_particle_group_add_point physics_particle_group_end ' +\n 'physics_particle_group_join physics_particle_group_delete ' +\n 'physics_particle_group_count physics_particle_group_get_data ' +\n 'physics_particle_group_get_mass physics_particle_group_get_inertia ' +\n 'physics_particle_group_get_centre_x ' +\n 'physics_particle_group_get_centre_y physics_particle_group_get_vel_x ' +\n 'physics_particle_group_get_vel_y physics_particle_group_get_ang_vel ' +\n 'physics_particle_group_get_x physics_particle_group_get_y ' +\n 'physics_particle_group_get_angle physics_particle_set_group_flags ' +\n 'physics_particle_get_group_flags physics_particle_get_max_count ' +\n 'physics_particle_get_radius physics_particle_get_density ' +\n 'physics_particle_get_damping physics_particle_get_gravity_scale ' +\n 'physics_particle_set_max_count physics_particle_set_radius ' +\n 'physics_particle_set_density physics_particle_set_damping ' +\n 'physics_particle_set_gravity_scale network_create_socket ' +\n 'network_create_socket_ext network_create_server ' +\n 'network_create_server_raw network_connect network_connect_raw ' +\n 'network_send_packet network_send_raw network_send_broadcast ' +\n 'network_send_udp network_send_udp_raw network_set_timeout ' +\n 'network_set_config network_resolve network_destroy buffer_create ' +\n 'buffer_write buffer_read buffer_seek buffer_get_surface ' +\n 'buffer_set_surface buffer_delete buffer_exists buffer_get_type ' +\n 'buffer_get_alignment buffer_poke buffer_peek buffer_save ' +\n 'buffer_save_ext buffer_load buffer_load_ext buffer_load_partial ' +\n 'buffer_copy buffer_fill buffer_get_size buffer_tell buffer_resize ' +\n 'buffer_md5 buffer_sha1 buffer_base64_encode buffer_base64_decode ' +\n 'buffer_base64_decode_ext buffer_sizeof buffer_get_address ' +\n 'buffer_create_from_vertex_buffer ' +\n 'buffer_create_from_vertex_buffer_ext buffer_copy_from_vertex_buffer ' +\n 'buffer_async_group_begin buffer_async_group_option ' +\n 'buffer_async_group_end buffer_load_async buffer_save_async ' +\n 'gml_release_mode gml_pragma steam_activate_overlay ' +\n 'steam_is_overlay_enabled steam_is_overlay_activated ' +\n 'steam_get_persona_name steam_initialised ' +\n 'steam_is_cloud_enabled_for_app steam_is_cloud_enabled_for_account ' +\n 'steam_file_persisted steam_get_quota_total steam_get_quota_free ' +\n 'steam_file_write steam_file_write_file steam_file_read ' +\n 'steam_file_delete steam_file_exists steam_file_size steam_file_share ' +\n 'steam_is_screenshot_requested steam_send_screenshot ' +\n 'steam_is_user_logged_on steam_get_user_steam_id steam_user_owns_dlc ' +\n 'steam_user_installed_dlc steam_set_achievement steam_get_achievement ' +\n 'steam_clear_achievement steam_set_stat_int steam_set_stat_float ' +\n 'steam_set_stat_avg_rate steam_get_stat_int steam_get_stat_float ' +\n 'steam_get_stat_avg_rate steam_reset_all_stats ' +\n 'steam_reset_all_stats_achievements steam_stats_ready ' +\n 'steam_create_leaderboard steam_upload_score steam_upload_score_ext ' +\n 'steam_download_scores_around_user steam_download_scores ' +\n 'steam_download_friends_scores steam_upload_score_buffer ' +\n 'steam_upload_score_buffer_ext steam_current_game_language ' +\n 'steam_available_languages steam_activate_overlay_browser ' +\n 'steam_activate_overlay_user steam_activate_overlay_store ' +\n 'steam_get_user_persona_name steam_get_app_id ' +\n 'steam_get_user_account_id steam_ugc_download steam_ugc_create_item ' +\n 'steam_ugc_start_item_update steam_ugc_set_item_title ' +\n 'steam_ugc_set_item_description steam_ugc_set_item_visibility ' +\n 'steam_ugc_set_item_tags steam_ugc_set_item_content ' +\n 'steam_ugc_set_item_preview steam_ugc_submit_item_update ' +\n 'steam_ugc_get_item_update_progress steam_ugc_subscribe_item ' +\n 'steam_ugc_unsubscribe_item steam_ugc_num_subscribed_items ' +\n 'steam_ugc_get_subscribed_items steam_ugc_get_item_install_info ' +\n 'steam_ugc_get_item_update_info steam_ugc_request_item_details ' +\n 'steam_ugc_create_query_user steam_ugc_create_query_user_ex ' +\n 'steam_ugc_create_query_all steam_ugc_create_query_all_ex ' +\n 'steam_ugc_query_set_cloud_filename_filter ' +\n 'steam_ugc_query_set_match_any_tag steam_ugc_query_set_search_text ' +\n 'steam_ugc_query_set_ranked_by_trend_days ' +\n 'steam_ugc_query_add_required_tag steam_ugc_query_add_excluded_tag ' +\n 'steam_ugc_query_set_return_long_description ' +\n 'steam_ugc_query_set_return_total_only ' +\n 'steam_ugc_query_set_allow_cached_response steam_ugc_send_query ' +\n 'shader_set shader_get_name shader_reset shader_current ' +\n 'shader_is_compiled shader_get_sampler_index shader_get_uniform ' +\n 'shader_set_uniform_i shader_set_uniform_i_array shader_set_uniform_f ' +\n 'shader_set_uniform_f_array shader_set_uniform_matrix ' +\n 'shader_set_uniform_matrix_array shader_enable_corner_id ' +\n 'texture_set_stage texture_get_texel_width texture_get_texel_height ' +\n 'shaders_are_supported vertex_format_begin vertex_format_end ' +\n 'vertex_format_delete vertex_format_add_position ' +\n 'vertex_format_add_position_3d vertex_format_add_colour ' +\n 'vertex_format_add_color vertex_format_add_normal ' +\n 'vertex_format_add_texcoord vertex_format_add_textcoord ' +\n 'vertex_format_add_custom vertex_create_buffer ' +\n 'vertex_create_buffer_ext vertex_delete_buffer vertex_begin ' +\n 'vertex_end vertex_position vertex_position_3d vertex_colour ' +\n 'vertex_color vertex_argb vertex_texcoord vertex_normal vertex_float1 ' +\n 'vertex_float2 vertex_float3 vertex_float4 vertex_ubyte4 ' +\n 'vertex_submit vertex_freeze vertex_get_number vertex_get_buffer_size ' +\n 'vertex_create_buffer_from_buffer ' +\n 'vertex_create_buffer_from_buffer_ext push_local_notification ' +\n 'push_get_first_local_notification push_get_next_local_notification ' +\n 'push_cancel_local_notification skeleton_animation_set ' +\n 'skeleton_animation_get skeleton_animation_mix ' +\n 'skeleton_animation_set_ext skeleton_animation_get_ext ' +\n 'skeleton_animation_get_duration skeleton_animation_get_frames ' +\n 'skeleton_animation_clear skeleton_skin_set skeleton_skin_get ' +\n 'skeleton_attachment_set skeleton_attachment_get ' +\n 'skeleton_attachment_create skeleton_collision_draw_set ' +\n 'skeleton_bone_data_get skeleton_bone_data_set ' +\n 'skeleton_bone_state_get skeleton_bone_state_set skeleton_get_minmax ' +\n 'skeleton_get_num_bounds skeleton_get_bounds ' +\n 'skeleton_animation_get_frame skeleton_animation_set_frame ' +\n 'draw_skeleton draw_skeleton_time draw_skeleton_instance ' +\n 'draw_skeleton_collision skeleton_animation_list skeleton_skin_list ' +\n 'skeleton_slot_data layer_get_id layer_get_id_at_depth ' +\n 'layer_get_depth layer_create layer_destroy layer_destroy_instances ' +\n 'layer_add_instance layer_has_instance layer_set_visible ' +\n 'layer_get_visible layer_exists layer_x layer_y layer_get_x ' +\n 'layer_get_y layer_hspeed layer_vspeed layer_get_hspeed ' +\n 'layer_get_vspeed layer_script_begin layer_script_end layer_shader ' +\n 'layer_get_script_begin layer_get_script_end layer_get_shader ' +\n 'layer_set_target_room layer_get_target_room layer_reset_target_room ' +\n 'layer_get_all layer_get_all_elements layer_get_name layer_depth ' +\n 'layer_get_element_layer layer_get_element_type layer_element_move ' +\n 'layer_force_draw_depth layer_is_draw_depth_forced ' +\n 'layer_get_forced_depth layer_background_get_id ' +\n 'layer_background_exists layer_background_create ' +\n 'layer_background_destroy layer_background_visible ' +\n 'layer_background_change layer_background_sprite ' +\n 'layer_background_htiled layer_background_vtiled ' +\n 'layer_background_stretch layer_background_yscale ' +\n 'layer_background_xscale layer_background_blend ' +\n 'layer_background_alpha layer_background_index layer_background_speed ' +\n 'layer_background_get_visible layer_background_get_sprite ' +\n 'layer_background_get_htiled layer_background_get_vtiled ' +\n 'layer_background_get_stretch layer_background_get_yscale ' +\n 'layer_background_get_xscale layer_background_get_blend ' +\n 'layer_background_get_alpha layer_background_get_index ' +\n 'layer_background_get_speed layer_sprite_get_id layer_sprite_exists ' +\n 'layer_sprite_create layer_sprite_destroy layer_sprite_change ' +\n 'layer_sprite_index layer_sprite_speed layer_sprite_xscale ' +\n 'layer_sprite_yscale layer_sprite_angle layer_sprite_blend ' +\n 'layer_sprite_alpha layer_sprite_x layer_sprite_y ' +\n 'layer_sprite_get_sprite layer_sprite_get_index ' +\n 'layer_sprite_get_speed layer_sprite_get_xscale ' +\n 'layer_sprite_get_yscale layer_sprite_get_angle ' +\n 'layer_sprite_get_blend layer_sprite_get_alpha layer_sprite_get_x ' +\n 'layer_sprite_get_y layer_tilemap_get_id layer_tilemap_exists ' +\n 'layer_tilemap_create layer_tilemap_destroy tilemap_tileset tilemap_x ' +\n 'tilemap_y tilemap_set tilemap_set_at_pixel tilemap_get_tileset ' +\n 'tilemap_get_tile_width tilemap_get_tile_height tilemap_get_width ' +\n 'tilemap_get_height tilemap_get_x tilemap_get_y tilemap_get ' +\n 'tilemap_get_at_pixel tilemap_get_cell_x_at_pixel ' +\n 'tilemap_get_cell_y_at_pixel tilemap_clear draw_tilemap draw_tile ' +\n 'tilemap_set_global_mask tilemap_get_global_mask tilemap_set_mask ' +\n 'tilemap_get_mask tilemap_get_frame tile_set_empty tile_set_index ' +\n 'tile_set_flip tile_set_mirror tile_set_rotate tile_get_empty ' +\n 'tile_get_index tile_get_flip tile_get_mirror tile_get_rotate ' +\n 'layer_tile_exists layer_tile_create layer_tile_destroy ' +\n 'layer_tile_change layer_tile_xscale layer_tile_yscale ' +\n 'layer_tile_blend layer_tile_alpha layer_tile_x layer_tile_y ' +\n 'layer_tile_region layer_tile_visible layer_tile_get_sprite ' +\n 'layer_tile_get_xscale layer_tile_get_yscale layer_tile_get_blend ' +\n 'layer_tile_get_alpha layer_tile_get_x layer_tile_get_y ' +\n 'layer_tile_get_region layer_tile_get_visible ' +\n 'layer_instance_get_instance instance_activate_layer ' +\n 'instance_deactivate_layer camera_create camera_create_view ' +\n 'camera_destroy camera_apply camera_get_active camera_get_default ' +\n 'camera_set_default camera_set_view_mat camera_set_proj_mat ' +\n 'camera_set_update_script camera_set_begin_script ' +\n 'camera_set_end_script camera_set_view_pos camera_set_view_size ' +\n 'camera_set_view_speed camera_set_view_border camera_set_view_angle ' +\n 'camera_set_view_target camera_get_view_mat camera_get_proj_mat ' +\n 'camera_get_update_script camera_get_begin_script ' +\n 'camera_get_end_script camera_get_view_x camera_get_view_y ' +\n 'camera_get_view_width camera_get_view_height camera_get_view_speed_x ' +\n 'camera_get_view_speed_y camera_get_view_border_x ' +\n 'camera_get_view_border_y camera_get_view_angle ' +\n 'camera_get_view_target view_get_camera view_get_visible ' +\n 'view_get_xport view_get_yport view_get_wport view_get_hport ' +\n 'view_get_surface_id view_set_camera view_set_visible view_set_xport ' +\n 'view_set_yport view_set_wport view_set_hport view_set_surface_id ' +\n 'gesture_drag_time gesture_drag_distance gesture_flick_speed ' +\n 'gesture_double_tap_time gesture_double_tap_distance ' +\n 'gesture_pinch_distance gesture_pinch_angle_towards ' +\n 'gesture_pinch_angle_away gesture_rotate_time gesture_rotate_angle ' +\n 'gesture_tap_count gesture_get_drag_time gesture_get_drag_distance ' +\n 'gesture_get_flick_speed gesture_get_double_tap_time ' +\n 'gesture_get_double_tap_distance gesture_get_pinch_distance ' +\n 'gesture_get_pinch_angle_towards gesture_get_pinch_angle_away ' +\n 'gesture_get_rotate_time gesture_get_rotate_angle ' +\n 'gesture_get_tap_count keyboard_virtual_show keyboard_virtual_hide ' +\n 'keyboard_virtual_status keyboard_virtual_height',\n literal: 'self other all noone global local undefined pointer_invalid ' +\n 'pointer_null path_action_stop path_action_restart ' +\n 'path_action_continue path_action_reverse true false pi GM_build_date ' +\n 'GM_version GM_runtime_version timezone_local timezone_utc ' +\n 'gamespeed_fps gamespeed_microseconds ev_create ev_destroy ev_step ' +\n 'ev_alarm ev_keyboard ev_mouse ev_collision ev_other ev_draw ' +\n 'ev_draw_begin ev_draw_end ev_draw_pre ev_draw_post ev_keypress ' +\n 'ev_keyrelease ev_trigger ev_left_button ev_right_button ' +\n 'ev_middle_button ev_no_button ev_left_press ev_right_press ' +\n 'ev_middle_press ev_left_release ev_right_release ev_middle_release ' +\n 'ev_mouse_enter ev_mouse_leave ev_mouse_wheel_up ev_mouse_wheel_down ' +\n 'ev_global_left_button ev_global_right_button ev_global_middle_button ' +\n 'ev_global_left_press ev_global_right_press ev_global_middle_press ' +\n 'ev_global_left_release ev_global_right_release ' +\n 'ev_global_middle_release ev_joystick1_left ev_joystick1_right ' +\n 'ev_joystick1_up ev_joystick1_down ev_joystick1_button1 ' +\n 'ev_joystick1_button2 ev_joystick1_button3 ev_joystick1_button4 ' +\n 'ev_joystick1_button5 ev_joystick1_button6 ev_joystick1_button7 ' +\n 'ev_joystick1_button8 ev_joystick2_left ev_joystick2_right ' +\n 'ev_joystick2_up ev_joystick2_down ev_joystick2_button1 ' +\n 'ev_joystick2_button2 ev_joystick2_button3 ev_joystick2_button4 ' +\n 'ev_joystick2_button5 ev_joystick2_button6 ev_joystick2_button7 ' +\n 'ev_joystick2_button8 ev_outside ev_boundary ev_game_start ' +\n 'ev_game_end ev_room_start ev_room_end ev_no_more_lives ' +\n 'ev_animation_end ev_end_of_path ev_no_more_health ev_close_button ' +\n 'ev_user0 ev_user1 ev_user2 ev_user3 ev_user4 ev_user5 ev_user6 ' +\n 'ev_user7 ev_user8 ev_user9 ev_user10 ev_user11 ev_user12 ev_user13 ' +\n 'ev_user14 ev_user15 ev_step_normal ev_step_begin ev_step_end ev_gui ' +\n 'ev_gui_begin ev_gui_end ev_cleanup ev_gesture ev_gesture_tap ' +\n 'ev_gesture_double_tap ev_gesture_drag_start ev_gesture_dragging ' +\n 'ev_gesture_drag_end ev_gesture_flick ev_gesture_pinch_start ' +\n 'ev_gesture_pinch_in ev_gesture_pinch_out ev_gesture_pinch_end ' +\n 'ev_gesture_rotate_start ev_gesture_rotating ev_gesture_rotate_end ' +\n 'ev_global_gesture_tap ev_global_gesture_double_tap ' +\n 'ev_global_gesture_drag_start ev_global_gesture_dragging ' +\n 'ev_global_gesture_drag_end ev_global_gesture_flick ' +\n 'ev_global_gesture_pinch_start ev_global_gesture_pinch_in ' +\n 'ev_global_gesture_pinch_out ev_global_gesture_pinch_end ' +\n 'ev_global_gesture_rotate_start ev_global_gesture_rotating ' +\n 'ev_global_gesture_rotate_end vk_nokey vk_anykey vk_enter vk_return ' +\n 'vk_shift vk_control vk_alt vk_escape vk_space vk_backspace vk_tab ' +\n 'vk_pause vk_printscreen vk_left vk_right vk_up vk_down vk_home ' +\n 'vk_end vk_delete vk_insert vk_pageup vk_pagedown vk_f1 vk_f2 vk_f3 ' +\n 'vk_f4 vk_f5 vk_f6 vk_f7 vk_f8 vk_f9 vk_f10 vk_f11 vk_f12 vk_numpad0 ' +\n 'vk_numpad1 vk_numpad2 vk_numpad3 vk_numpad4 vk_numpad5 vk_numpad6 ' +\n 'vk_numpad7 vk_numpad8 vk_numpad9 vk_divide vk_multiply vk_subtract ' +\n 'vk_add vk_decimal vk_lshift vk_lcontrol vk_lalt vk_rshift ' +\n 'vk_rcontrol vk_ralt mb_any mb_none mb_left mb_right mb_middle ' +\n 'c_aqua c_black c_blue c_dkgray c_fuchsia c_gray c_green c_lime ' +\n 'c_ltgray c_maroon c_navy c_olive c_purple c_red c_silver c_teal ' +\n 'c_white c_yellow c_orange fa_left fa_center fa_right fa_top ' +\n 'fa_middle fa_bottom pr_pointlist pr_linelist pr_linestrip ' +\n 'pr_trianglelist pr_trianglestrip pr_trianglefan bm_complex bm_normal ' +\n 'bm_add bm_max bm_subtract bm_zero bm_one bm_src_colour ' +\n 'bm_inv_src_colour bm_src_color bm_inv_src_color bm_src_alpha ' +\n 'bm_inv_src_alpha bm_dest_alpha bm_inv_dest_alpha bm_dest_colour ' +\n 'bm_inv_dest_colour bm_dest_color bm_inv_dest_color bm_src_alpha_sat ' +\n 'tf_point tf_linear tf_anisotropic mip_off mip_on mip_markedonly ' +\n 'audio_falloff_none audio_falloff_inverse_distance ' +\n 'audio_falloff_inverse_distance_clamped audio_falloff_linear_distance ' +\n 'audio_falloff_linear_distance_clamped ' +\n 'audio_falloff_exponent_distance ' +\n 'audio_falloff_exponent_distance_clamped audio_old_system ' +\n 'audio_new_system audio_mono audio_stereo audio_3d cr_default cr_none ' +\n 'cr_arrow cr_cross cr_beam cr_size_nesw cr_size_ns cr_size_nwse ' +\n 'cr_size_we cr_uparrow cr_hourglass cr_drag cr_appstart cr_handpoint ' +\n 'cr_size_all spritespeed_framespersecond ' +\n 'spritespeed_framespergameframe asset_object asset_unknown ' +\n 'asset_sprite asset_sound asset_room asset_path asset_script ' +\n 'asset_font asset_timeline asset_tiles asset_shader fa_readonly ' +\n 'fa_hidden fa_sysfile fa_volumeid fa_directory fa_archive ' +\n 'ds_type_map ds_type_list ds_type_stack ds_type_queue ds_type_grid ' +\n 'ds_type_priority ef_explosion ef_ring ef_ellipse ef_firework ' +\n 'ef_smoke ef_smokeup ef_star ef_spark ef_flare ef_cloud ef_rain ' +\n 'ef_snow pt_shape_pixel pt_shape_disk pt_shape_square pt_shape_line ' +\n 'pt_shape_star pt_shape_circle pt_shape_ring pt_shape_sphere ' +\n 'pt_shape_flare pt_shape_spark pt_shape_explosion pt_shape_cloud ' +\n 'pt_shape_smoke pt_shape_snow ps_distr_linear ps_distr_gaussian ' +\n 'ps_distr_invgaussian ps_shape_rectangle ps_shape_ellipse ' +\n 'ps_shape_diamond ps_shape_line ty_real ty_string dll_cdecl ' +\n 'dll_stdcall matrix_view matrix_projection matrix_world os_win32 ' +\n 'os_windows os_macosx os_ios os_android os_symbian os_linux ' +\n 'os_unknown os_winphone os_tizen os_win8native ' +\n 'os_wiiu os_3ds os_psvita os_bb10 os_ps4 os_xboxone ' +\n 'os_ps3 os_xbox360 os_uwp os_tvos os_switch ' +\n 'browser_not_a_browser browser_unknown browser_ie browser_firefox ' +\n 'browser_chrome browser_safari browser_safari_mobile browser_opera ' +\n 'browser_tizen browser_edge browser_windows_store browser_ie_mobile ' +\n 'device_ios_unknown device_ios_iphone device_ios_iphone_retina ' +\n 'device_ios_ipad device_ios_ipad_retina device_ios_iphone5 ' +\n 'device_ios_iphone6 device_ios_iphone6plus device_emulator ' +\n 'device_tablet display_landscape display_landscape_flipped ' +\n 'display_portrait display_portrait_flipped tm_sleep tm_countvsyncs ' +\n 'of_challenge_win of_challen ge_lose of_challenge_tie ' +\n 'leaderboard_type_number leaderboard_type_time_mins_secs ' +\n 'cmpfunc_never cmpfunc_less cmpfunc_equal cmpfunc_lessequal ' +\n 'cmpfunc_greater cmpfunc_notequal cmpfunc_greaterequal cmpfunc_always ' +\n 'cull_noculling cull_clockwise cull_counterclockwise lighttype_dir ' +\n 'lighttype_point iap_ev_storeload iap_ev_product iap_ev_purchase ' +\n 'iap_ev_consume iap_ev_restore iap_storeload_ok iap_storeload_failed ' +\n 'iap_status_uninitialised iap_status_unavailable iap_status_loading ' +\n 'iap_status_available iap_status_processing iap_status_restoring ' +\n 'iap_failed iap_unavailable iap_available iap_purchased iap_canceled ' +\n 'iap_refunded fb_login_default fb_login_fallback_to_webview ' +\n 'fb_login_no_fallback_to_webview fb_login_forcing_webview ' +\n 'fb_login_use_system_account fb_login_forcing_safari ' +\n 'phy_joint_anchor_1_x phy_joint_anchor_1_y phy_joint_anchor_2_x ' +\n 'phy_joint_anchor_2_y phy_joint_reaction_force_x ' +\n 'phy_joint_reaction_force_y phy_joint_reaction_torque ' +\n 'phy_joint_motor_speed phy_joint_angle phy_joint_motor_torque ' +\n 'phy_joint_max_motor_torque phy_joint_translation phy_joint_speed ' +\n 'phy_joint_motor_force phy_joint_max_motor_force phy_joint_length_1 ' +\n 'phy_joint_length_2 phy_joint_damping_ratio phy_joint_frequency ' +\n 'phy_joint_lower_angle_limit phy_joint_upper_angle_limit ' +\n 'phy_joint_angle_limits phy_joint_max_length phy_joint_max_torque ' +\n 'phy_joint_max_force phy_debug_render_aabb ' +\n 'phy_debug_render_collision_pairs phy_debug_render_coms ' +\n 'phy_debug_render_core_shapes phy_debug_render_joints ' +\n 'phy_debug_render_obb phy_debug_render_shapes ' +\n 'phy_particle_flag_water phy_particle_flag_zombie ' +\n 'phy_particle_flag_wall phy_particle_flag_spring ' +\n 'phy_particle_flag_elastic phy_particle_flag_viscous ' +\n 'phy_particle_flag_powder phy_particle_flag_tensile ' +\n 'phy_particle_flag_colourmixing phy_particle_flag_colormixing ' +\n 'phy_particle_group_flag_solid phy_particle_group_flag_rigid ' +\n 'phy_particle_data_flag_typeflags phy_particle_data_flag_position ' +\n 'phy_particle_data_flag_velocity phy_particle_data_flag_colour ' +\n 'phy_particle_data_flag_color phy_particle_data_flag_category ' +\n 'achievement_our_info achievement_friends_info ' +\n 'achievement_leaderboard_info achievement_achievement_info ' +\n 'achievement_filter_all_players achievement_filter_friends_only ' +\n 'achievement_filter_favorites_only ' +\n 'achievement_type_achievement_challenge ' +\n 'achievement_type_score_challenge achievement_pic_loaded ' +\n 'achievement_show_ui achievement_show_profile ' +\n 'achievement_show_leaderboard achievement_show_achievement ' +\n 'achievement_show_bank achievement_show_friend_picker ' +\n 'achievement_show_purchase_prompt network_socket_tcp ' +\n 'network_socket_udp network_socket_bluetooth network_type_connect ' +\n 'network_type_disconnect network_type_data ' +\n 'network_type_non_blocking_connect network_config_connect_timeout ' +\n 'network_config_use_non_blocking_socket ' +\n 'network_config_enable_reliable_udp ' +\n 'network_config_disable_reliable_udp buffer_fixed buffer_grow ' +\n 'buffer_wrap buffer_fast buffer_vbuffer buffer_network buffer_u8 ' +\n 'buffer_s8 buffer_u16 buffer_s16 buffer_u32 buffer_s32 buffer_u64 ' +\n 'buffer_f16 buffer_f32 buffer_f64 buffer_bool buffer_text ' +\n 'buffer_string buffer_surface_copy buffer_seek_start ' +\n 'buffer_seek_relative buffer_seek_end ' +\n 'buffer_generalerror buffer_outofspace buffer_outofbounds ' +\n 'buffer_invalidtype text_type button_type input_type ANSI_CHARSET ' +\n 'DEFAULT_CHARSET EASTEUROPE_CHARSET RUSSIAN_CHARSET SYMBOL_CHARSET ' +\n 'SHIFTJIS_CHARSET HANGEUL_CHARSET GB2312_CHARSET CHINESEBIG5_CHARSET ' +\n 'JOHAB_CHARSET HEBREW_CHARSET ARABIC_CHARSET GREEK_CHARSET ' +\n 'TURKISH_CHARSET VIETNAMESE_CHARSET THAI_CHARSET MAC_CHARSET ' +\n 'BALTIC_CHARSET OEM_CHARSET gp_face1 gp_face2 gp_face3 gp_face4 ' +\n 'gp_shoulderl gp_shoulderr gp_shoulderlb gp_shoulderrb gp_select ' +\n 'gp_start gp_stickl gp_stickr gp_padu gp_padd gp_padl gp_padr ' +\n 'gp_axislh gp_axislv gp_axisrh gp_axisrv ov_friends ov_community ' +\n 'ov_players ov_settings ov_gamegroup ov_achievements lb_sort_none ' +\n 'lb_sort_ascending lb_sort_descending lb_disp_none lb_disp_numeric ' +\n 'lb_disp_time_sec lb_disp_time_ms ugc_result_success ' +\n 'ugc_filetype_community ugc_filetype_microtrans ugc_visibility_public ' +\n 'ugc_visibility_friends_only ugc_visibility_private ' +\n 'ugc_query_RankedByVote ugc_query_RankedByPublicationDate ' +\n 'ugc_query_AcceptedForGameRankedByAcceptanceDate ' +\n 'ugc_query_RankedByTrend ' +\n 'ugc_query_FavoritedByFriendsRankedByPublicationDate ' +\n 'ugc_query_CreatedByFriendsRankedByPublicationDate ' +\n 'ugc_query_RankedByNumTimesReported ' +\n 'ugc_query_CreatedByFollowedUsersRankedByPublicationDate ' +\n 'ugc_query_NotYetRated ugc_query_RankedByTotalVotesAsc ' +\n 'ugc_query_RankedByVotesUp ugc_query_RankedByTextSearch ' +\n 'ugc_sortorder_CreationOrderDesc ugc_sortorder_CreationOrderAsc ' +\n 'ugc_sortorder_TitleAsc ugc_sortorder_LastUpdatedDesc ' +\n 'ugc_sortorder_SubscriptionDateDesc ugc_sortorder_VoteScoreDesc ' +\n 'ugc_sortorder_ForModeration ugc_list_Published ugc_list_VotedOn ' +\n 'ugc_list_VotedUp ugc_list_VotedDown ugc_list_WillVoteLater ' +\n 'ugc_list_Favorited ugc_list_Subscribed ugc_list_UsedOrPlayed ' +\n 'ugc_list_Followed ugc_match_Items ugc_match_Items_Mtx ' +\n 'ugc_match_Items_ReadyToUse ugc_match_Collections ugc_match_Artwork ' +\n 'ugc_match_Videos ugc_match_Screenshots ugc_match_AllGuides ' +\n 'ugc_match_WebGuides ugc_match_IntegratedGuides ' +\n 'ugc_match_UsableInGame ugc_match_ControllerBindings ' +\n 'vertex_usage_position vertex_usage_colour vertex_usage_color ' +\n 'vertex_usage_normal vertex_usage_texcoord vertex_usage_textcoord ' +\n 'vertex_usage_blendweight vertex_usage_blendindices ' +\n 'vertex_usage_psize vertex_usage_tangent vertex_usage_binormal ' +\n 'vertex_usage_fog vertex_usage_depth vertex_usage_sample ' +\n 'vertex_type_float1 vertex_type_float2 vertex_type_float3 ' +\n 'vertex_type_float4 vertex_type_colour vertex_type_color ' +\n 'vertex_type_ubyte4 layerelementtype_undefined ' +\n 'layerelementtype_background layerelementtype_instance ' +\n 'layerelementtype_oldtilemap layerelementtype_sprite ' +\n 'layerelementtype_tilemap layerelementtype_particlesystem ' +\n 'layerelementtype_tile tile_rotate tile_flip tile_mirror ' +\n 'tile_index_mask kbv_type_default kbv_type_ascii kbv_type_url ' +\n 'kbv_type_email kbv_type_numbers kbv_type_phone kbv_type_phone_name ' +\n 'kbv_returnkey_default kbv_returnkey_go kbv_returnkey_google ' +\n 'kbv_returnkey_join kbv_returnkey_next kbv_returnkey_route ' +\n 'kbv_returnkey_search kbv_returnkey_send kbv_returnkey_yahoo ' +\n 'kbv_returnkey_done kbv_returnkey_continue kbv_returnkey_emergency ' +\n 'kbv_autocapitalize_none kbv_autocapitalize_words ' +\n 'kbv_autocapitalize_sentences kbv_autocapitalize_characters',\n symbol: 'argument_relative argument argument0 argument1 argument2 ' +\n 'argument3 argument4 argument5 argument6 argument7 argument8 ' +\n 'argument9 argument10 argument11 argument12 argument13 argument14 ' +\n 'argument15 argument_count x y xprevious yprevious xstart ystart ' +\n 'hspeed vspeed direction speed friction gravity gravity_direction ' +\n 'path_index path_position path_positionprevious path_speed ' +\n 'path_scale path_orientation path_endaction object_index id solid ' +\n 'persistent mask_index instance_count instance_id room_speed fps ' +\n 'fps_real current_time current_year current_month current_day ' +\n 'current_weekday current_hour current_minute current_second alarm ' +\n 'timeline_index timeline_position timeline_speed timeline_running ' +\n 'timeline_loop room room_first room_last room_width room_height ' +\n 'room_caption room_persistent score lives health show_score ' +\n 'show_lives show_health caption_score caption_lives caption_health ' +\n 'event_type event_number event_object event_action ' +\n 'application_surface gamemaker_pro gamemaker_registered ' +\n 'gamemaker_version error_occurred error_last debug_mode ' +\n 'keyboard_key keyboard_lastkey keyboard_lastchar keyboard_string ' +\n 'mouse_x mouse_y mouse_button mouse_lastbutton cursor_sprite ' +\n 'visible sprite_index sprite_width sprite_height sprite_xoffset ' +\n 'sprite_yoffset image_number image_index image_speed depth ' +\n 'image_xscale image_yscale image_angle image_alpha image_blend ' +\n 'bbox_left bbox_right bbox_top bbox_bottom layer background_colour ' +\n 'background_showcolour background_color background_showcolor ' +\n 'view_enabled view_current view_visible view_xview view_yview ' +\n 'view_wview view_hview view_xport view_yport view_wport view_hport ' +\n 'view_angle view_hborder view_vborder view_hspeed view_vspeed ' +\n 'view_object view_surface_id view_camera game_id game_display_name ' +\n 'game_project_name game_save_id working_directory temp_directory ' +\n 'program_directory browser_width browser_height os_type os_device ' +\n 'os_browser os_version display_aa async_load delta_time ' +\n 'webgl_enabled event_data iap_data phy_rotation phy_position_x ' +\n 'phy_position_y phy_angular_velocity phy_linear_velocity_x ' +\n 'phy_linear_velocity_y phy_speed_x phy_speed_y phy_speed ' +\n 'phy_angular_damping phy_linear_damping phy_bullet ' +\n 'phy_fixed_rotation phy_active phy_mass phy_inertia phy_com_x ' +\n 'phy_com_y phy_dynamic phy_kinematic phy_sleeping ' +\n 'phy_collision_points phy_collision_x phy_collision_y ' +\n 'phy_col_normal_x phy_col_normal_y phy_position_xprevious ' +\n 'phy_position_yprevious'\n };\n\n return {\n aliases: ['gml', 'GML'],\n case_insensitive: false, // language is case-insensitive\n keywords: GML_KEYWORDS,\n\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var GO_KEYWORDS = {\n keyword:\n 'break default func interface select case map struct chan else goto package switch ' +\n 'const fallthrough if range type continue for import return var go defer ' +\n 'bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 ' +\n 'uint16 uint32 uint64 int uint uintptr rune',\n literal:\n 'true false iota nil',\n built_in:\n 'append cap close complex copy imag len make new panic print println real recover delete'\n };\n return {\n aliases: ['golang'],\n keywords: GO_KEYWORDS,\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'string',\n variants: [\n hljs.QUOTE_STRING_MODE,\n {begin: '\\'', end: '[^\\\\\\\\]\\''},\n {begin: '`', end: '`'},\n ]\n },\n {\n className: 'number',\n variants: [\n {begin: hljs.C_NUMBER_RE + '[dflsi]', relevance: 1},\n hljs.C_NUMBER_MODE\n ]\n },\n {\n begin: /:=/ // relevance booster\n },\n {\n className: 'function',\n beginKeywords: 'func', end: /\\s*\\{/, excludeEnd: true,\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n keywords: GO_KEYWORDS,\n illegal: /[\"']/\n }\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword:\n 'println readln print import module function local return let var ' +\n 'while for foreach times in case when match with break continue ' +\n 'augment augmentation each find filter reduce ' +\n 'if then else otherwise try catch finally raise throw orIfNull ' +\n 'DynamicObject|10 DynamicVariable struct Observable map set vector list array',\n literal:\n 'true false null'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta', begin: '@[A-Za-z]+'\n }\n ]\n }\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n keywords: {\n keyword:\n 'task project allprojects subprojects artifacts buildscript configurations ' +\n 'dependencies repositories sourceSets description delete from into include ' +\n 'exclude source classpath destinationDir includes options sourceCompatibility ' +\n 'targetCompatibility group flatDir doLast doFirst flatten todir fromdir ant ' +\n 'def abstract break case catch continue default do else extends final finally ' +\n 'for if implements instanceof native new private protected public return static ' +\n 'switch synchronized throw throws transient try volatile while strictfp package ' +\n 'import false null super this true antlrtask checkstyle codenarc copy boolean ' +\n 'byte char class double float int interface long short void compile runTime ' +\n 'file fileTree abs any append asList asWritable call collect compareTo count ' +\n 'div dump each eachByte eachFile eachLine every find findAll flatten getAt ' +\n 'getErr getIn getOut getText grep immutable inject inspect intersect invokeMethods ' +\n 'isCase join leftShift minus multiply newInputStream newOutputStream newPrintWriter ' +\n 'newReader newWriter next plus pop power previous print println push putAt read ' +\n 'readBytes readLines reverse reverseEach round size sort splitEachLine step subMap ' +\n 'times toInteger toList tokenize upto waitForOrKill withPrintWriter withReader ' +\n 'withStream withWriter withWriterAppend write writeLine'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n hljs.REGEXP_MODE\n\n ]\n }\n};","module.exports = function(hljs) {\n return {\n keywords: {\n literal : 'true false null',\n keyword:\n 'byte short char int long boolean float double void ' +\n // groovy specific keywords\n 'def as in assert trait ' +\n // common keywords with Java\n 'super this abstract static volatile transient public private protected synchronized final ' +\n 'class interface enum if else for while switch case break default continue ' +\n 'throw throws try catch finally implements extends new import package return instanceof'\n },\n\n contains: [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance : 0,\n contains : [\n {\n // eat up @'s in emails to prevent them to be recognized as doctags\n begin: /\\w+@/, relevance: 0\n },\n {\n className : 'doctag',\n begin : '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"'\n },\n {\n className: 'string',\n begin: \"'''\", end: \"'''\"\n },\n {\n className: 'string',\n begin: \"\\\\$/\", end: \"/\\\\$\",\n relevance: 10\n },\n hljs.APOS_STRING_MODE,\n {\n className: 'regexp',\n begin: /~?\\/[^\\/\\n]+\\//,\n contains: [\n hljs.BACKSLASH_ESCAPE\n ]\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'meta',\n begin: \"^#!/usr/bin/env\", end: '$',\n illegal: '\\n'\n },\n hljs.BINARY_NUMBER_MODE,\n {\n className: 'class',\n beginKeywords: 'class interface trait enum', end: '{',\n illegal: ':',\n contains: [\n {beginKeywords: 'extends implements'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n hljs.C_NUMBER_MODE,\n {\n className: 'meta', begin: '@[A-Za-z]+'\n },\n {\n // highlight map keys and named parameters as strings\n className: 'string', begin: /[^\\?]{0}[A-Za-z0-9_$]+ *:/\n },\n {\n // catch middle element of the ternary operator\n // to avoid highlight it as a label, named parameter, or map key\n begin: /\\?/, end: /\\:/\n },\n {\n // highlight labeled statements\n className: 'symbol', begin: '^\\\\s*[A-Za-z0-9_$]+:',\n relevance: 0\n }\n ],\n illegal: /#|<\\//\n }\n};","module.exports = // TODO support filter tags like :javascript, support inline HTML\nfunction(hljs) {\n return {\n case_insensitive: true,\n contains: [\n {\n className: 'meta',\n begin: '^!!!( (5|1\\\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\\\b.*))?$',\n relevance: 10\n },\n // FIXME these comments should be allowed to span indented lines\n hljs.COMMENT(\n '^\\\\s*(!=#|=#|-#|/).*$',\n false,\n {\n relevance: 0\n }\n ),\n {\n begin: '^\\\\s*(-|=|!=)(?!#)',\n starts: {\n end: '\\\\n',\n subLanguage: 'ruby'\n }\n },\n {\n className: 'tag',\n begin: '^\\\\s*%',\n contains: [\n {\n className: 'selector-tag',\n begin: '\\\\w+'\n },\n {\n className: 'selector-id',\n begin: '#[\\\\w-]+'\n },\n {\n className: 'selector-class',\n begin: '\\\\.[\\\\w-]+'\n },\n {\n begin: '{\\\\s*',\n end: '\\\\s*}',\n contains: [\n {\n begin: ':\\\\w+\\\\s*=>',\n end: ',\\\\s+',\n returnBegin: true,\n endsWithParent: true,\n contains: [\n {\n className: 'attr',\n begin: ':\\\\w+'\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n begin: '\\\\w+',\n relevance: 0\n }\n ]\n }\n ]\n },\n {\n begin: '\\\\(\\\\s*',\n end: '\\\\s*\\\\)',\n excludeEnd: true,\n contains: [\n {\n begin: '\\\\w+\\\\s*=',\n end: '\\\\s+',\n returnBegin: true,\n endsWithParent: true,\n contains: [\n {\n className: 'attr',\n begin: '\\\\w+',\n relevance: 0\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n begin: '\\\\w+',\n relevance: 0\n }\n ]\n }\n ]\n }\n ]\n },\n {\n begin: '^\\\\s*[=~]\\\\s*'\n },\n {\n begin: '#{',\n starts: {\n end: '}',\n subLanguage: 'ruby'\n }\n }\n ]\n };\n};","module.exports = function(hljs) {\n var BUILT_INS = {'builtin-name': 'each in with if else unless bindattr action collection debugger log outlet template unbound view yield'};\n return {\n aliases: ['hbs', 'html.hbs', 'html.handlebars'],\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT('{{!(--)?', '(--)?}}'),\n {\n className: 'template-tag',\n begin: /\\{\\{[#\\/]/, end: /\\}\\}/,\n contains: [\n {\n className: 'name',\n begin: /[a-zA-Z\\.-]+/,\n keywords: BUILT_INS,\n starts: {\n endsWithParent: true, relevance: 0,\n contains: [\n hljs.QUOTE_STRING_MODE\n ]\n }\n }\n ]\n },\n {\n className: 'template-variable',\n begin: /\\{\\{/, end: /\\}\\}/,\n keywords: BUILT_INS\n }\n ]\n };\n};","module.exports = function(hljs) {\n var COMMENT = {\n variants: [\n hljs.COMMENT('--', '$'),\n hljs.COMMENT(\n '{-',\n '-}',\n {\n contains: ['self']\n }\n )\n ]\n };\n\n var PRAGMA = {\n className: 'meta',\n begin: '{-#', end: '#-}'\n };\n\n var PREPROCESSOR = {\n className: 'meta',\n begin: '^#', end: '$'\n };\n\n var CONSTRUCTOR = {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*', // TODO: other constructors (build-in, infix).\n relevance: 0\n };\n\n var LIST = {\n begin: '\\\\(', end: '\\\\)',\n illegal: '\"',\n contains: [\n PRAGMA,\n PREPROCESSOR,\n {className: 'type', begin: '\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?'},\n hljs.inherit(hljs.TITLE_MODE, {begin: '[_a-z][\\\\w\\']*'}),\n COMMENT\n ]\n };\n\n var RECORD = {\n begin: '{', end: '}',\n contains: LIST.contains\n };\n\n return {\n aliases: ['hs'],\n keywords:\n 'let in if then else case of where do module import hiding ' +\n 'qualified type data newtype deriving class instance as default ' +\n 'infix infixl infixr foreign export ccall stdcall cplusplus ' +\n 'jvm dotnet safe unsafe family forall mdo proc rec',\n contains: [\n\n // Top-level constructions.\n\n {\n beginKeywords: 'module', end: 'where',\n keywords: 'module where',\n contains: [LIST, COMMENT],\n illegal: '\\\\W\\\\.|;'\n },\n {\n begin: '\\\\bimport\\\\b', end: '$',\n keywords: 'import qualified as hiding',\n contains: [LIST, COMMENT],\n illegal: '\\\\W\\\\.|;'\n },\n\n {\n className: 'class',\n begin: '^(\\\\s*)?(class|instance)\\\\b', end: 'where',\n keywords: 'class family instance where',\n contains: [CONSTRUCTOR, LIST, COMMENT]\n },\n {\n className: 'class',\n begin: '\\\\b(data|(new)?type)\\\\b', end: '$',\n keywords: 'data family type newtype deriving',\n contains: [PRAGMA, CONSTRUCTOR, LIST, RECORD, COMMENT]\n },\n {\n beginKeywords: 'default', end: '$',\n contains: [CONSTRUCTOR, LIST, COMMENT]\n },\n {\n beginKeywords: 'infix infixl infixr', end: '$',\n contains: [hljs.C_NUMBER_MODE, COMMENT]\n },\n {\n begin: '\\\\bforeign\\\\b', end: '$',\n keywords: 'foreign import export ccall stdcall cplusplus jvm ' +\n 'dotnet safe unsafe',\n contains: [CONSTRUCTOR, hljs.QUOTE_STRING_MODE, COMMENT]\n },\n {\n className: 'meta',\n begin: '#!\\\\/usr\\\\/bin\\\\/env\\ runhaskell', end: '$'\n },\n\n // \"Whitespaces\".\n\n PRAGMA,\n PREPROCESSOR,\n\n // Literals and names.\n\n // TODO: characters.\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n CONSTRUCTOR,\n hljs.inherit(hljs.TITLE_MODE, {begin: '^[_a-z][\\\\w\\']*'}),\n\n COMMENT,\n\n {begin: '->|<-'} // No markup, relevance booster\n ]\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[a-zA-Z_$][a-zA-Z0-9_$]*';\n var IDENT_FUNC_RETURN_TYPE_RE = '([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)';\n\n var HAXE_BASIC_TYPES = 'Int Float String Bool Dynamic Void Array ';\n\n return {\n aliases: ['hx'],\n keywords: {\n keyword: 'break case cast catch continue default do dynamic else enum extern ' +\n 'for function here if import in inline never new override package private get set ' +\n 'public return static super switch this throw trace try typedef untyped using var while ' +\n HAXE_BASIC_TYPES,\n built_in:\n 'trace this',\n literal:\n 'true false null _'\n },\n contains: [\n { className: 'string', // interpolate-able strings\n begin: '\\'', end: '\\'',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n { className: 'subst', // interpolation\n begin: '\\\\$\\\\{', end: '\\\\}'\n },\n { className: 'subst', // interpolation\n begin: '\\\\$', end: '\\\\W}'\n }\n ]\n },\n hljs.QUOTE_STRING_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n { className: 'meta', // compiler meta\n begin: '@:', end: '$'\n },\n { className: 'meta', // compiler conditionals\n begin: '#', end: '$',\n keywords: {'meta-keyword': 'if else elseif end error'}\n },\n { className: 'type', // function types\n begin: ':[ \\t]*', end: '[^A-Za-z0-9_ \\t\\\\->]',\n excludeBegin: true, excludeEnd: true,\n relevance: 0\n },\n { className: 'type', // types\n begin: ':[ \\t]*', end: '\\\\W',\n excludeBegin: true, excludeEnd: true\n },\n { className: 'type', // instantiation\n begin: 'new *', end: '\\\\W',\n excludeBegin: true, excludeEnd: true\n },\n { className: 'class', // enums\n beginKeywords: 'enum', end: '\\\\{',\n contains: [\n hljs.TITLE_MODE\n ]\n },\n { className: 'class', // abstracts\n beginKeywords: 'abstract', end: '[\\\\{$]',\n contains: [\n { className: 'type',\n begin: '\\\\(', end: '\\\\)',\n excludeBegin: true, excludeEnd: true\n },\n { className: 'type',\n begin: 'from +', end: '\\\\W',\n excludeBegin: true, excludeEnd: true\n },\n { className: 'type',\n begin: 'to +', end: '\\\\W',\n excludeBegin: true, excludeEnd: true\n },\n hljs.TITLE_MODE\n ],\n keywords: {\n keyword: 'abstract from to'\n }\n },\n { className: 'class', // classes\n begin: '\\\\b(class|interface) +', end: '[\\\\{$]', excludeEnd: true,\n keywords: 'class interface',\n contains: [\n { className: 'keyword',\n begin: '\\\\b(extends|implements) +',\n keywords: 'extends implements',\n contains: [\n {\n className: 'type',\n begin: hljs.IDENT_RE,\n relevance: 0\n }\n ]\n },\n hljs.TITLE_MODE\n ]\n },\n { className: 'function',\n beginKeywords: 'function', end: '\\\\(', excludeEnd: true,\n illegal: '\\\\S',\n contains: [\n hljs.TITLE_MODE\n ]\n }\n ],\n illegal: /<\\//\n };\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n lexemes: /[\\w\\._]+/,\n keywords: 'goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n\n {\n // multi-line string\n className: 'string',\n begin: '{\"', end: '\"}',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n\n hljs.COMMENT(';', '$', {relevance: 0}),\n\n {\n // pre-processor\n className: 'meta',\n begin: '#', end: '$',\n keywords: {'meta-keyword': 'addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib'},\n contains: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'meta-string'}),\n hljs.NUMBER_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n\n {\n // label\n className: 'symbol',\n begin: '^\\\\*(\\\\w+|@)'\n },\n\n hljs.NUMBER_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var BUILT_INS = 'action collection component concat debugger each each-in else get hash if input link-to loc log mut outlet partial query-params render textarea unbound unless with yield view';\n\n var ATTR_ASSIGNMENT = {\n illegal: /\\}\\}/,\n begin: /[a-zA-Z0-9_]+=/,\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'attr', begin: /[a-zA-Z0-9_]+/\n }\n ]\n };\n\n var SUB_EXPR = {\n illegal: /\\}\\}/,\n begin: /\\)/, end: /\\)/,\n contains: [\n {\n begin: /[a-zA-Z\\.\\-]+/,\n keywords: {built_in: BUILT_INS},\n starts: {\n endsWithParent: true, relevance: 0,\n contains: [\n hljs.QUOTE_STRING_MODE,\n ]\n }\n }\n ]\n };\n\n var TAG_INNARDS = {\n endsWithParent: true, relevance: 0,\n keywords: {keyword: 'as', built_in: BUILT_INS},\n contains: [\n hljs.QUOTE_STRING_MODE,\n ATTR_ASSIGNMENT,\n hljs.NUMBER_MODE\n ]\n };\n\n return {\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT('{{!(--)?', '(--)?}}'),\n {\n className: 'template-tag',\n begin: /\\{\\{[#\\/]/, end: /\\}\\}/,\n contains: [\n {\n className: 'name',\n begin: /[a-zA-Z\\.\\-]+/,\n keywords: {'builtin-name': BUILT_INS},\n starts: TAG_INNARDS\n }\n ]\n },\n {\n className: 'template-variable',\n begin: /\\{\\{[a-zA-Z][a-zA-Z\\-]+/, end: /\\}\\}/,\n keywords: {keyword: 'as', built_in: BUILT_INS},\n contains: [\n hljs.QUOTE_STRING_MODE\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var VERSION = 'HTTP/[0-9\\\\.]+';\n return {\n aliases: ['https'],\n illegal: '\\\\S',\n contains: [\n {\n begin: '^' + VERSION, end: '$',\n contains: [{className: 'number', begin: '\\\\b\\\\d{3}\\\\b'}]\n },\n {\n begin: '^[A-Z]+ (.*?) ' + VERSION + '$', returnBegin: true, end: '$',\n contains: [\n {\n className: 'string',\n begin: ' ', end: ' ',\n excludeBegin: true, excludeEnd: true\n },\n {\n begin: VERSION\n },\n {\n className: 'keyword',\n begin: '[A-Z]+'\n }\n ]\n },\n {\n className: 'attribute',\n begin: '^\\\\w', end: ': ', excludeEnd: true,\n illegal: '\\\\n|\\\\s|=',\n starts: {end: '$', relevance: 0}\n },\n {\n begin: '\\\\n\\\\n',\n starts: {subLanguage: [], endsWithParent: true}\n }\n ]\n };\n};","module.exports = function(hljs) {\n var keywords = {\n 'builtin-name':\n // keywords\n '!= % %= & &= * ** **= *= *map ' +\n '+ += , --build-class-- --import-- -= . / // //= ' +\n '/= < << <<= <= = > >= >> >>= ' +\n '@ @= ^ ^= abs accumulate all and any ap-compose ' +\n 'ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ' +\n 'ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast ' +\n 'callable calling-module-name car case cdr chain chr coll? combinations compile ' +\n 'compress cond cons cons? continue count curry cut cycle dec ' +\n 'def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn ' +\n 'defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir ' +\n 'disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? ' +\n 'end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first ' +\n 'flatten float? fn fnc fnr for for* format fraction genexpr ' +\n 'gensym get getattr global globals group-by hasattr hash hex id ' +\n 'identity if if* if-not if-python2 import in inc input instance? ' +\n 'integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even ' +\n 'is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none ' +\n 'is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass ' +\n 'iter iterable? iterate iterator? keyword keyword? lambda last len let ' +\n 'lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all ' +\n 'map max merge-with method-decorator min multi-decorator multicombinations name neg? next ' +\n 'none? nonlocal not not-in not? nth numeric? oct odd? open ' +\n 'or ord partition permutations pos? post-route postwalk pow prewalk print ' +\n 'product profile/calls profile/cpu put-route quasiquote quote raise range read read-str ' +\n 'recursive-replace reduce remove repeat repeatedly repr require rest round route ' +\n 'route-with-methods rwm second seq set-comp setattr setv some sorted string ' +\n 'string? sum switch symbol? take take-nth take-while tee try unless ' +\n 'unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms ' +\n 'xi xor yield yield-from zero? zip zip-longest | |= ~'\n };\n\n var SYMBOLSTART = 'a-zA-Z_\\\\-!.?+*=<>&#\\'';\n var SYMBOL_RE = '[' + SYMBOLSTART + '][' + SYMBOLSTART + '0-9/;:]*';\n var SIMPLE_NUMBER_RE = '[-+]?\\\\d+(\\\\.\\\\d+)?';\n\n var SHEBANG = {\n className: 'meta',\n begin: '^#!', end: '$'\n };\n\n var SYMBOL = {\n begin: SYMBOL_RE,\n relevance: 0\n };\n var NUMBER = {\n className: 'number', begin: SIMPLE_NUMBER_RE,\n relevance: 0\n };\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});\n var COMMENT = hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n );\n var LITERAL = {\n className: 'literal',\n begin: /\\b([Tt]rue|[Ff]alse|nil|None)\\b/\n };\n var COLLECTION = {\n begin: '[\\\\[\\\\{]', end: '[\\\\]\\\\}]'\n };\n var HINT = {\n className: 'comment',\n begin: '\\\\^' + SYMBOL_RE\n };\n var HINT_COL = hljs.COMMENT('\\\\^\\\\{', '\\\\}');\n var KEY = {\n className: 'symbol',\n begin: '[:]{1,2}' + SYMBOL_RE\n };\n var LIST = {\n begin: '\\\\(', end: '\\\\)'\n };\n var BODY = {\n endsWithParent: true,\n relevance: 0\n };\n var NAME = {\n keywords: keywords,\n lexemes: SYMBOL_RE,\n className: 'name', begin: SYMBOL_RE,\n starts: BODY\n };\n var DEFAULT_CONTAINS = [LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL, SYMBOL];\n\n LIST.contains = [hljs.COMMENT('comment', ''), NAME, BODY];\n BODY.contains = DEFAULT_CONTAINS;\n COLLECTION.contains = DEFAULT_CONTAINS;\n\n return {\n aliases: ['hylang'],\n illegal: /\\S/,\n contains: [SHEBANG, LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL]\n }\n};","module.exports = function(hljs) {\n var START_BRACKET = '\\\\[';\n var END_BRACKET = '\\\\]';\n return {\n aliases: ['i7'],\n case_insensitive: true,\n keywords: {\n // Some keywords more or less unique to I7, for relevance.\n keyword:\n // kind:\n 'thing room person man woman animal container ' +\n 'supporter backdrop door ' +\n // characteristic:\n 'scenery open closed locked inside gender ' +\n // verb:\n 'is are say understand ' +\n // misc keyword:\n 'kind of rule'\n },\n contains: [\n {\n className: 'string',\n begin: '\"', end: '\"',\n relevance: 0,\n contains: [\n {\n className: 'subst',\n begin: START_BRACKET, end: END_BRACKET\n }\n ]\n },\n {\n className: 'section',\n begin: /^(Volume|Book|Part|Chapter|Section|Table)\\b/,\n end: '$'\n },\n {\n // Rule definition\n // This is here for relevance.\n begin: /^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\\b/,\n end: ':',\n contains: [\n {\n //Rule name\n begin: '\\\\(This', end: '\\\\)'\n }\n ]\n },\n {\n className: 'comment',\n begin: START_BRACKET, end: END_BRACKET,\n contains: ['self']\n }\n ]\n };\n};","module.exports = function(hljs) {\n var STRING = {\n className: \"string\",\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {\n begin: \"'''\", end: \"'''\",\n relevance: 10\n }, {\n begin: '\"\"\"', end: '\"\"\"',\n relevance: 10\n }, {\n begin: '\"', end: '\"'\n }, {\n begin: \"'\", end: \"'\"\n }\n ]\n };\n return {\n aliases: ['toml'],\n case_insensitive: true,\n illegal: /\\S/,\n contains: [\n hljs.COMMENT(';', '$'),\n hljs.HASH_COMMENT_MODE,\n {\n className: 'section',\n begin: /^\\s*\\[+/, end: /\\]+/\n },\n {\n begin: /^[a-z0-9\\[\\]_-]+\\s*=\\s*/, end: '$',\n returnBegin: true,\n contains: [\n {\n className: 'attr',\n begin: /[a-z0-9\\[\\]_-]+/\n },\n {\n begin: /=/, endsWithParent: true,\n relevance: 0,\n contains: [\n {\n className: 'literal',\n begin: /\\bon|off|true|false|yes|no\\b/\n },\n {\n className: 'variable',\n variants: [\n {begin: /\\$[\\w\\d\"][\\w\\d_]*/},\n {begin: /\\$\\{(.*?)}/}\n ]\n },\n STRING,\n {\n className: 'number',\n begin: /([\\+\\-]+)?[\\d]+_[\\d_]+/\n },\n hljs.NUMBER_MODE\n ]\n }\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)'\n };\n\n var F_KEYWORDS = {\n literal: '.False. .True.',\n keyword: 'kind do while private call intrinsic where elsewhere ' +\n 'type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then ' +\n 'public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. ' +\n 'goto save else use module select case ' +\n 'access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit ' +\n 'continue format pause cycle exit ' +\n 'c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg ' +\n 'synchronous nopass non_overridable pass protected volatile abstract extends import ' +\n 'non_intrinsic value deferred generic final enumerator class associate bind enum ' +\n 'c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t ' +\n 'c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double ' +\n 'c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr ' +\n 'c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer ' +\n 'c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor ' +\n 'numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ' +\n 'ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive ' +\n 'pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure ' +\n 'integer real character complex logical dimension allocatable|10 parameter ' +\n 'external implicit|10 none double precision assign intent optional pointer ' +\n 'target in out common equivalence data ' +\n // IRPF90 special keywords\n 'begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch ' +\n 'soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read',\n built_in: 'alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint ' +\n 'dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl ' +\n 'algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama ' +\n 'iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod ' +\n 'qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log ' +\n 'log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate ' +\n 'adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product ' +\n 'eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul ' +\n 'maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product ' +\n 'radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind ' +\n 'set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer ' +\n 'dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ' +\n 'ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode ' +\n 'is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of' +\n 'acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 ' +\n 'atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits ' +\n 'bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr ' +\n 'num_images parity popcnt poppar shifta shiftl shiftr this_image ' +\n // IRPF90 special built_ins\n 'IRP_ALIGN irp_here'\n };\n return {\n case_insensitive: true,\n keywords: F_KEYWORDS,\n illegal: /\\/\\*/,\n contains: [\n hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'string', relevance: 0}),\n {\n className: 'function',\n beginKeywords: 'subroutine function program',\n illegal: '[${=\\\\n]',\n contains: [hljs.UNDERSCORE_TITLE_MODE, PARAMS]\n },\n hljs.COMMENT('!', '$', {relevance: 0}),\n hljs.COMMENT('begin_doc', 'end_doc', {relevance: 10}),\n {\n className: 'number',\n begin: '(?=\\\\b|\\\\+|\\\\-|\\\\.)(?=\\\\.\\\\d|\\\\d)(?:\\\\d+)?(?:\\\\.?\\\\d*)(?:[de][+-]?\\\\d+)?\\\\b\\\\.?',\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n // Определение идентификаторов\n var UNDERSCORE_IDENT_RE = \"[A-Za-zА-Яа-яёЁ_!][A-Za-zА-Яа-яёЁ_0-9]*\";\n\n // Определение имен функций\n var FUNCTION_NAME_IDENT_RE = \"[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*\";\n\n // keyword : ключевые слова\n var KEYWORD =\n \"and и else иначе endexcept endfinally endforeach конецвсе endif конецесли endwhile конецпока \" +\n \"except exitfor finally foreach все if если in в not не or или try while пока \";\n\n // SYSRES Constants\n var sysres_constants =\n \"SYSRES_CONST_ACCES_RIGHT_TYPE_EDIT \" +\n \"SYSRES_CONST_ACCES_RIGHT_TYPE_FULL \" +\n \"SYSRES_CONST_ACCES_RIGHT_TYPE_VIEW \" +\n \"SYSRES_CONST_ACCESS_MODE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_NO_ACCESS_VIEW \" +\n \"SYSRES_CONST_ACCESS_NO_ACCESS_VIEW_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_VIEW \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_VIEW_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_TYPE_CHANGE \" +\n \"SYSRES_CONST_ACCESS_TYPE_CHANGE_CODE \" +\n \"SYSRES_CONST_ACCESS_TYPE_EXISTS \" +\n \"SYSRES_CONST_ACCESS_TYPE_EXISTS_CODE \" +\n \"SYSRES_CONST_ACCESS_TYPE_FULL \" +\n \"SYSRES_CONST_ACCESS_TYPE_FULL_CODE \" +\n \"SYSRES_CONST_ACCESS_TYPE_VIEW \" +\n \"SYSRES_CONST_ACCESS_TYPE_VIEW_CODE \" +\n \"SYSRES_CONST_ACTION_TYPE_ABORT \" +\n \"SYSRES_CONST_ACTION_TYPE_ACCEPT \" +\n \"SYSRES_CONST_ACTION_TYPE_ACCESS_RIGHTS \" +\n \"SYSRES_CONST_ACTION_TYPE_ADD_ATTACHMENT \" +\n \"SYSRES_CONST_ACTION_TYPE_CHANGE_CARD \" +\n \"SYSRES_CONST_ACTION_TYPE_CHANGE_KIND \" +\n \"SYSRES_CONST_ACTION_TYPE_CHANGE_STORAGE \" +\n \"SYSRES_CONST_ACTION_TYPE_CONTINUE \" +\n \"SYSRES_CONST_ACTION_TYPE_COPY \" +\n \"SYSRES_CONST_ACTION_TYPE_CREATE \" +\n \"SYSRES_CONST_ACTION_TYPE_CREATE_VERSION \" +\n \"SYSRES_CONST_ACTION_TYPE_DELETE \" +\n \"SYSRES_CONST_ACTION_TYPE_DELETE_ATTACHMENT \" +\n \"SYSRES_CONST_ACTION_TYPE_DELETE_VERSION \" +\n \"SYSRES_CONST_ACTION_TYPE_DISABLE_DELEGATE_ACCESS_RIGHTS \" +\n \"SYSRES_CONST_ACTION_TYPE_ENABLE_DELEGATE_ACCESS_RIGHTS \" +\n \"SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE \" +\n \"SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE_AND_PASSWORD \" +\n \"SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_PASSWORD \" +\n \"SYSRES_CONST_ACTION_TYPE_EXPORT_WITH_LOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_EXPORT_WITHOUT_LOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_IMPORT_WITH_UNLOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_IMPORT_WITHOUT_UNLOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_LIFE_CYCLE_STAGE \" +\n \"SYSRES_CONST_ACTION_TYPE_LOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_LOCK_FOR_SERVER \" +\n \"SYSRES_CONST_ACTION_TYPE_LOCK_MODIFY \" +\n \"SYSRES_CONST_ACTION_TYPE_MARK_AS_READED \" +\n \"SYSRES_CONST_ACTION_TYPE_MARK_AS_UNREADED \" +\n \"SYSRES_CONST_ACTION_TYPE_MODIFY \" +\n \"SYSRES_CONST_ACTION_TYPE_MODIFY_CARD \" +\n \"SYSRES_CONST_ACTION_TYPE_MOVE_TO_ARCHIVE \" +\n \"SYSRES_CONST_ACTION_TYPE_OFF_ENCRYPTION \" +\n \"SYSRES_CONST_ACTION_TYPE_PASSWORD_CHANGE \" +\n \"SYSRES_CONST_ACTION_TYPE_PERFORM \" +\n \"SYSRES_CONST_ACTION_TYPE_RECOVER_FROM_LOCAL_COPY \" +\n \"SYSRES_CONST_ACTION_TYPE_RESTART \" +\n \"SYSRES_CONST_ACTION_TYPE_RESTORE_FROM_ARCHIVE \" +\n \"SYSRES_CONST_ACTION_TYPE_REVISION \" +\n \"SYSRES_CONST_ACTION_TYPE_SEND_BY_MAIL \" +\n \"SYSRES_CONST_ACTION_TYPE_SIGN \" +\n \"SYSRES_CONST_ACTION_TYPE_START \" +\n \"SYSRES_CONST_ACTION_TYPE_UNLOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_UNLOCK_FROM_SERVER \" +\n \"SYSRES_CONST_ACTION_TYPE_VERSION_STATE \" +\n \"SYSRES_CONST_ACTION_TYPE_VERSION_VISIBILITY \" +\n \"SYSRES_CONST_ACTION_TYPE_VIEW \" +\n \"SYSRES_CONST_ACTION_TYPE_VIEW_SHADOW_COPY \" +\n \"SYSRES_CONST_ACTION_TYPE_WORKFLOW_DESCRIPTION_MODIFY \" +\n \"SYSRES_CONST_ACTION_TYPE_WRITE_HISTORY \" +\n \"SYSRES_CONST_ACTIVE_VERSION_STATE_PICK_VALUE \" +\n \"SYSRES_CONST_ADD_REFERENCE_MODE_NAME \" +\n \"SYSRES_CONST_ADDITION_REQUISITE_CODE \" +\n \"SYSRES_CONST_ADDITIONAL_PARAMS_REQUISITE_CODE \" +\n \"SYSRES_CONST_ADITIONAL_JOB_END_DATE_REQUISITE_NAME \" +\n \"SYSRES_CONST_ADITIONAL_JOB_READ_REQUISITE_NAME \" +\n \"SYSRES_CONST_ADITIONAL_JOB_START_DATE_REQUISITE_NAME \" +\n \"SYSRES_CONST_ADITIONAL_JOB_STATE_REQUISITE_NAME \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE_ACTION \" +\n \"SYSRES_CONST_ALL_ACCEPT_CONDITION_RUS \" +\n \"SYSRES_CONST_ALL_USERS_GROUP \" +\n \"SYSRES_CONST_ALL_USERS_GROUP_NAME \" +\n \"SYSRES_CONST_ALL_USERS_SERVER_GROUP_NAME \" +\n \"SYSRES_CONST_ALLOWED_ACCESS_TYPE_CODE \" +\n \"SYSRES_CONST_ALLOWED_ACCESS_TYPE_NAME \" +\n \"SYSRES_CONST_APP_VIEWER_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_APPROVING_SIGNATURE_NAME \" +\n \"SYSRES_CONST_APPROVING_SIGNATURE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE \" +\n \"SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE_CODE \" +\n \"SYSRES_CONST_ATTACH_TYPE_COMPONENT_TOKEN \" +\n \"SYSRES_CONST_ATTACH_TYPE_DOC \" +\n \"SYSRES_CONST_ATTACH_TYPE_EDOC \" +\n \"SYSRES_CONST_ATTACH_TYPE_FOLDER \" +\n \"SYSRES_CONST_ATTACH_TYPE_JOB \" +\n \"SYSRES_CONST_ATTACH_TYPE_REFERENCE \" +\n \"SYSRES_CONST_ATTACH_TYPE_TASK \" +\n \"SYSRES_CONST_AUTH_ENCODED_PASSWORD \" +\n \"SYSRES_CONST_AUTH_ENCODED_PASSWORD_CODE \" +\n \"SYSRES_CONST_AUTH_NOVELL \" +\n \"SYSRES_CONST_AUTH_PASSWORD \" +\n \"SYSRES_CONST_AUTH_PASSWORD_CODE \" +\n \"SYSRES_CONST_AUTH_WINDOWS \" +\n \"SYSRES_CONST_AUTHENTICATING_SIGNATURE_NAME \" +\n \"SYSRES_CONST_AUTHENTICATING_SIGNATURE_REQUISITE_CODE \" +\n \"SYSRES_CONST_AUTO_ENUM_METHOD_FLAG \" +\n \"SYSRES_CONST_AUTO_NUMERATION_CODE \" +\n \"SYSRES_CONST_AUTO_STRONG_ENUM_METHOD_FLAG \" +\n \"SYSRES_CONST_AUTOTEXT_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_TEXT_REQUISITE_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_ALL \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_ALL_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_SIGN \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_SIGN_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_WORK \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_WORK_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USE_ANYWHERE_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USE_ON_SIGNING_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USE_ON_WORK_CODE \" +\n \"SYSRES_CONST_BEGIN_DATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_BLACK_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_BLUE_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_BTN_PART \" +\n \"SYSRES_CONST_CALCULATED_ROLE_TYPE_CODE \" +\n \"SYSRES_CONST_CALL_TYPE_VARIABLE_BUTTON_VALUE \" +\n \"SYSRES_CONST_CALL_TYPE_VARIABLE_PROGRAM_VALUE \" +\n \"SYSRES_CONST_CANCEL_MESSAGE_FUNCTION_RESULT \" +\n \"SYSRES_CONST_CARD_PART \" +\n \"SYSRES_CONST_CARD_REFERENCE_MODE_NAME \" +\n \"SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_ENCRYPT_VALUE \" +\n \"SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_AND_ENCRYPT_VALUE \" +\n \"SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_VALUE \" +\n \"SYSRES_CONST_CHECK_PARAM_VALUE_DATE_PARAM_TYPE \" +\n \"SYSRES_CONST_CHECK_PARAM_VALUE_FLOAT_PARAM_TYPE \" +\n \"SYSRES_CONST_CHECK_PARAM_VALUE_INTEGER_PARAM_TYPE \" +\n \"SYSRES_CONST_CHECK_PARAM_VALUE_PICK_PARAM_TYPE \" +\n \"SYSRES_CONST_CHECK_PARAM_VALUE_REEFRENCE_PARAM_TYPE \" +\n \"SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_FEMININE \" +\n \"SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_MASCULINE \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_ADMIN \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_DEVELOPER \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_DOCS \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_EDOC_CARDS \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_EXTERNAL_EXECUTABLE \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_OTHER \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_REFERENCE \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_REPORT \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_SCRIPT \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_URL \" +\n \"SYSRES_CONST_CODE_REQUISITE_ACCESS \" +\n \"SYSRES_CONST_CODE_REQUISITE_CODE \" +\n \"SYSRES_CONST_CODE_REQUISITE_COMPONENT \" +\n \"SYSRES_CONST_CODE_REQUISITE_DESCRIPTION \" +\n \"SYSRES_CONST_CODE_REQUISITE_EXCLUDE_COMPONENT \" +\n \"SYSRES_CONST_CODE_REQUISITE_RECORD \" +\n \"SYSRES_CONST_COMMENT_REQ_CODE \" +\n \"SYSRES_CONST_COMMON_SETTINGS_REQUISITE_CODE \" +\n \"SYSRES_CONST_COMP_CODE_GRD \" +\n \"SYSRES_CONST_COMPONENT_GROUP_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_COMPONENT_TYPE_ADMIN_COMPONENTS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_DEVELOPER_COMPONENTS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_DOCS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_EDOC_CARDS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_EDOCS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_EXTERNAL_EXECUTABLE \" +\n \"SYSRES_CONST_COMPONENT_TYPE_OTHER \" +\n \"SYSRES_CONST_COMPONENT_TYPE_REFERENCE_TYPES \" +\n \"SYSRES_CONST_COMPONENT_TYPE_REFERENCES \" +\n \"SYSRES_CONST_COMPONENT_TYPE_REPORTS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_SCRIPTS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_URL \" +\n \"SYSRES_CONST_COMPONENTS_REMOTE_SERVERS_VIEW_CODE \" +\n \"SYSRES_CONST_CONDITION_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_CONST_FIRM_STATUS_COMMON \" +\n \"SYSRES_CONST_CONST_FIRM_STATUS_INDIVIDUAL \" +\n \"SYSRES_CONST_CONST_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_CONST_POSITIVE_VALUE \" +\n \"SYSRES_CONST_CONST_SERVER_STATUS_DONT_REPLICATE \" +\n \"SYSRES_CONST_CONST_SERVER_STATUS_REPLICATE \" +\n \"SYSRES_CONST_CONTENTS_REQUISITE_CODE \" +\n \"SYSRES_CONST_DATA_TYPE_BOOLEAN \" +\n \"SYSRES_CONST_DATA_TYPE_DATE \" +\n \"SYSRES_CONST_DATA_TYPE_FLOAT \" +\n \"SYSRES_CONST_DATA_TYPE_INTEGER \" +\n \"SYSRES_CONST_DATA_TYPE_PICK \" +\n \"SYSRES_CONST_DATA_TYPE_REFERENCE \" +\n \"SYSRES_CONST_DATA_TYPE_STRING \" +\n \"SYSRES_CONST_DATA_TYPE_TEXT \" +\n \"SYSRES_CONST_DATA_TYPE_VARIANT \" +\n \"SYSRES_CONST_DATE_CLOSE_REQ_CODE \" +\n \"SYSRES_CONST_DATE_FORMAT_DATE_ONLY_CHAR \" +\n \"SYSRES_CONST_DATE_OPEN_REQ_CODE \" +\n \"SYSRES_CONST_DATE_REQUISITE \" +\n \"SYSRES_CONST_DATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_DATE_REQUISITE_NAME \" +\n \"SYSRES_CONST_DATE_REQUISITE_TYPE \" +\n \"SYSRES_CONST_DATE_TYPE_CHAR \" +\n \"SYSRES_CONST_DATETIME_FORMAT_VALUE \" +\n \"SYSRES_CONST_DEA_ACCESS_RIGHTS_ACTION_CODE \" +\n \"SYSRES_CONST_DESCRIPTION_LOCALIZE_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_DESCRIPTION_REQUISITE_CODE \" +\n \"SYSRES_CONST_DET1_PART \" +\n \"SYSRES_CONST_DET2_PART \" +\n \"SYSRES_CONST_DET3_PART \" +\n \"SYSRES_CONST_DET4_PART \" +\n \"SYSRES_CONST_DET5_PART \" +\n \"SYSRES_CONST_DET6_PART \" +\n \"SYSRES_CONST_DETAIL_DATASET_KEY_REQUISITE_CODE \" +\n \"SYSRES_CONST_DETAIL_PICK_REQUISITE_CODE \" +\n \"SYSRES_CONST_DETAIL_REQ_CODE \" +\n \"SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_CODE \" +\n \"SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_NAME \" +\n \"SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_CODE \" +\n \"SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_NAME \" +\n \"SYSRES_CONST_DOCUMENT_STORAGES_CODE \" +\n \"SYSRES_CONST_DOCUMENT_TEMPLATES_TYPE_NAME \" +\n \"SYSRES_CONST_DOUBLE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITOR_CLOSE_FILE_OBSERV_TYPE_CODE \" +\n \"SYSRES_CONST_EDITOR_CLOSE_PROCESS_OBSERV_TYPE_CODE \" +\n \"SYSRES_CONST_EDITOR_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_APPLICATION_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_CREATE_SEVERAL_PROCESSES_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_EXTENSION_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_OBSERVER_BY_PROCESS_TYPE \" +\n \"SYSRES_CONST_EDITORS_REFERENCE_CODE \" +\n \"SYSRES_CONST_EDITORS_REPLACE_SPEC_CHARS_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_USE_PLUGINS_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_VIEW_DOCUMENT_OPENED_TO_EDIT_CODE \" +\n \"SYSRES_CONST_EDOC_CARD_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_CARD_TYPES_LINK_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_CERTIFICATE_AND_PASSWORD_ENCODE_CODE \" +\n \"SYSRES_CONST_EDOC_CERTIFICATE_ENCODE_CODE \" +\n \"SYSRES_CONST_EDOC_DATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_KIND_REFERENCE_CODE \" +\n \"SYSRES_CONST_EDOC_KINDS_BY_TEMPLATE_ACTION_CODE \" +\n \"SYSRES_CONST_EDOC_MANAGE_ACCESS_CODE \" +\n \"SYSRES_CONST_EDOC_NONE_ENCODE_CODE \" +\n \"SYSRES_CONST_EDOC_NUMBER_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_PASSWORD_ENCODE_CODE \" +\n \"SYSRES_CONST_EDOC_READONLY_ACCESS_CODE \" +\n \"SYSRES_CONST_EDOC_SHELL_LIFE_TYPE_VIEW_VALUE \" +\n \"SYSRES_CONST_EDOC_SIZE_RESTRICTION_PRIORITY_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_CHECK_ACCESS_RIGHTS_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_COMPUTER_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_DATABASE_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_EDIT_IN_STORAGE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_LOCAL_PATH_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_SHARED_SOURCE_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_TEMPLATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_TYPES_REFERENCE_CODE \" +\n \"SYSRES_CONST_EDOC_VERSION_ACTIVE_STAGE_CODE \" +\n \"SYSRES_CONST_EDOC_VERSION_DESIGN_STAGE_CODE \" +\n \"SYSRES_CONST_EDOC_VERSION_OBSOLETE_STAGE_CODE \" +\n \"SYSRES_CONST_EDOC_WRITE_ACCES_CODE \" +\n \"SYSRES_CONST_EDOCUMENT_CARD_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE \" +\n \"SYSRES_CONST_ENCODE_CERTIFICATE_TYPE_CODE \" +\n \"SYSRES_CONST_END_DATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ENUMERATION_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EXECUTE_ACCESS_RIGHTS_TYPE_CODE \" +\n \"SYSRES_CONST_EXECUTIVE_FILE_STORAGE_TYPE \" +\n \"SYSRES_CONST_EXIST_CONST \" +\n \"SYSRES_CONST_EXIST_VALUE \" +\n \"SYSRES_CONST_EXPORT_LOCK_TYPE_ASK \" +\n \"SYSRES_CONST_EXPORT_LOCK_TYPE_WITH_LOCK \" +\n \"SYSRES_CONST_EXPORT_LOCK_TYPE_WITHOUT_LOCK \" +\n \"SYSRES_CONST_EXPORT_VERSION_TYPE_ASK \" +\n \"SYSRES_CONST_EXPORT_VERSION_TYPE_LAST \" +\n \"SYSRES_CONST_EXPORT_VERSION_TYPE_LAST_ACTIVE \" +\n \"SYSRES_CONST_EXTENSION_REQUISITE_CODE \" +\n \"SYSRES_CONST_FILTER_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_FILTER_REQUISITE_CODE \" +\n \"SYSRES_CONST_FILTER_TYPE_COMMON_CODE \" +\n \"SYSRES_CONST_FILTER_TYPE_COMMON_NAME \" +\n \"SYSRES_CONST_FILTER_TYPE_USER_CODE \" +\n \"SYSRES_CONST_FILTER_TYPE_USER_NAME \" +\n \"SYSRES_CONST_FILTER_VALUE_REQUISITE_NAME \" +\n \"SYSRES_CONST_FLOAT_NUMBER_FORMAT_CHAR \" +\n \"SYSRES_CONST_FLOAT_REQUISITE_TYPE \" +\n \"SYSRES_CONST_FOLDER_AUTHOR_VALUE \" +\n \"SYSRES_CONST_FOLDER_KIND_ANY_OBJECTS \" +\n \"SYSRES_CONST_FOLDER_KIND_COMPONENTS \" +\n \"SYSRES_CONST_FOLDER_KIND_EDOCS \" +\n \"SYSRES_CONST_FOLDER_KIND_JOBS \" +\n \"SYSRES_CONST_FOLDER_KIND_TASKS \" +\n \"SYSRES_CONST_FOLDER_TYPE_COMMON \" +\n \"SYSRES_CONST_FOLDER_TYPE_COMPONENT \" +\n \"SYSRES_CONST_FOLDER_TYPE_FAVORITES \" +\n \"SYSRES_CONST_FOLDER_TYPE_INBOX \" +\n \"SYSRES_CONST_FOLDER_TYPE_OUTBOX \" +\n \"SYSRES_CONST_FOLDER_TYPE_QUICK_LAUNCH \" +\n \"SYSRES_CONST_FOLDER_TYPE_SEARCH \" +\n \"SYSRES_CONST_FOLDER_TYPE_SHORTCUTS \" +\n \"SYSRES_CONST_FOLDER_TYPE_USER \" +\n \"SYSRES_CONST_FROM_DICTIONARY_ENUM_METHOD_FLAG \" +\n \"SYSRES_CONST_FULL_SUBSTITUTE_TYPE \" +\n \"SYSRES_CONST_FULL_SUBSTITUTE_TYPE_CODE \" +\n \"SYSRES_CONST_FUNCTION_CANCEL_RESULT \" +\n \"SYSRES_CONST_FUNCTION_CATEGORY_SYSTEM \" +\n \"SYSRES_CONST_FUNCTION_CATEGORY_USER \" +\n \"SYSRES_CONST_FUNCTION_FAILURE_RESULT \" +\n \"SYSRES_CONST_FUNCTION_SAVE_RESULT \" +\n \"SYSRES_CONST_GENERATED_REQUISITE \" +\n \"SYSRES_CONST_GREEN_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_GROUP_ACCOUNT_TYPE_VALUE_CODE \" +\n \"SYSRES_CONST_GROUP_CATEGORY_NORMAL_CODE \" +\n \"SYSRES_CONST_GROUP_CATEGORY_NORMAL_NAME \" +\n \"SYSRES_CONST_GROUP_CATEGORY_SERVICE_CODE \" +\n \"SYSRES_CONST_GROUP_CATEGORY_SERVICE_NAME \" +\n \"SYSRES_CONST_GROUP_COMMON_CATEGORY_FIELD_VALUE \" +\n \"SYSRES_CONST_GROUP_FULL_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUP_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUP_RIGHTS_T_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUP_SERVER_CODES_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUP_SERVER_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUP_SERVICE_CATEGORY_FIELD_VALUE \" +\n \"SYSRES_CONST_GROUP_USER_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUPS_REFERENCE_CODE \" +\n \"SYSRES_CONST_GROUPS_REQUISITE_CODE \" +\n \"SYSRES_CONST_HIDDEN_MODE_NAME \" +\n \"SYSRES_CONST_HIGH_LVL_REQUISITE_CODE \" +\n \"SYSRES_CONST_HISTORY_ACTION_CREATE_CODE \" +\n \"SYSRES_CONST_HISTORY_ACTION_DELETE_CODE \" +\n \"SYSRES_CONST_HISTORY_ACTION_EDIT_CODE \" +\n \"SYSRES_CONST_HOUR_CHAR \" +\n \"SYSRES_CONST_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_IDSPS_REQUISITE_CODE \" +\n \"SYSRES_CONST_IMAGE_MODE_COLOR \" +\n \"SYSRES_CONST_IMAGE_MODE_GREYSCALE \" +\n \"SYSRES_CONST_IMAGE_MODE_MONOCHROME \" +\n \"SYSRES_CONST_IMPORTANCE_HIGH \" +\n \"SYSRES_CONST_IMPORTANCE_LOW \" +\n \"SYSRES_CONST_IMPORTANCE_NORMAL \" +\n \"SYSRES_CONST_IN_DESIGN_VERSION_STATE_PICK_VALUE \" +\n \"SYSRES_CONST_INCOMING_WORK_RULE_TYPE_CODE \" +\n \"SYSRES_CONST_INT_REQUISITE \" +\n \"SYSRES_CONST_INT_REQUISITE_TYPE \" +\n \"SYSRES_CONST_INTEGER_NUMBER_FORMAT_CHAR \" +\n \"SYSRES_CONST_INTEGER_TYPE_CHAR \" +\n \"SYSRES_CONST_IS_GENERATED_REQUISITE_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_IS_PUBLIC_ROLE_REQUISITE_CODE \" +\n \"SYSRES_CONST_IS_REMOTE_USER_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_IS_REMOTE_USER_POSITIVE_VALUE \" +\n \"SYSRES_CONST_IS_STORED_REQUISITE_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_IS_STORED_REQUISITE_STORED_VALUE \" +\n \"SYSRES_CONST_ITALIC_LIFE_CYCLE_STAGE_DRAW_STYLE \" +\n \"SYSRES_CONST_JOB_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_JOB_KIND_CONTROL_JOB \" +\n \"SYSRES_CONST_JOB_KIND_JOB \" +\n \"SYSRES_CONST_JOB_KIND_NOTICE \" +\n \"SYSRES_CONST_JOB_STATE_ABORTED \" +\n \"SYSRES_CONST_JOB_STATE_COMPLETE \" +\n \"SYSRES_CONST_JOB_STATE_WORKING \" +\n \"SYSRES_CONST_KIND_REQUISITE_CODE \" +\n \"SYSRES_CONST_KIND_REQUISITE_NAME \" +\n \"SYSRES_CONST_KINDS_CREATE_SHADOW_COPIES_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_DEFAULT_EDOC_LIFE_STAGE_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_ALL_TEPLATES_ALLOWED_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_ALLOW_LIFE_CYCLE_STAGE_CHANGING_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_ALLOW_MULTIPLE_ACTIVE_VERSIONS_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_SHARE_ACCES_RIGHTS_BY_DEFAULT_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_TEMPLATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_SIGNERS_REQUISITES_CODE \" +\n \"SYSRES_CONST_KOD_INPUT_TYPE \" +\n \"SYSRES_CONST_LAST_UPDATE_DATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_LIFE_CYCLE_START_STAGE_REQUISITE_CODE \" +\n \"SYSRES_CONST_LILAC_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_COMPONENT \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_DOCUMENT \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_EDOC \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_FOLDER \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_JOB \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_REFERENCE \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_TASK \" +\n \"SYSRES_CONST_LINK_REF_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_LIST_REFERENCE_MODE_NAME \" +\n \"SYSRES_CONST_LOCALIZATION_DICTIONARY_MAIN_VIEW_CODE \" +\n \"SYSRES_CONST_MAIN_VIEW_CODE \" +\n \"SYSRES_CONST_MANUAL_ENUM_METHOD_FLAG \" +\n \"SYSRES_CONST_MASTER_COMP_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_MASTER_TABLE_REC_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_MAXIMIZED_MODE_NAME \" +\n \"SYSRES_CONST_ME_VALUE \" +\n \"SYSRES_CONST_MESSAGE_ATTENTION_CAPTION \" +\n \"SYSRES_CONST_MESSAGE_CONFIRMATION_CAPTION \" +\n \"SYSRES_CONST_MESSAGE_ERROR_CAPTION \" +\n \"SYSRES_CONST_MESSAGE_INFORMATION_CAPTION \" +\n \"SYSRES_CONST_MINIMIZED_MODE_NAME \" +\n \"SYSRES_CONST_MINUTE_CHAR \" +\n \"SYSRES_CONST_MODULE_REQUISITE_CODE \" +\n \"SYSRES_CONST_MONITORING_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_MONTH_FORMAT_VALUE \" +\n \"SYSRES_CONST_NAME_LOCALIZE_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_NAME_SINGULAR_REQUISITE_CODE \" +\n \"SYSRES_CONST_NAMEAN_INPUT_TYPE \" +\n \"SYSRES_CONST_NEGATIVE_PICK_VALUE \" +\n \"SYSRES_CONST_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_NO \" +\n \"SYSRES_CONST_NO_PICK_VALUE \" +\n \"SYSRES_CONST_NO_SIGNATURE_REQUISITE_CODE \" +\n \"SYSRES_CONST_NO_VALUE \" +\n \"SYSRES_CONST_NONE_ACCESS_RIGHTS_TYPE_CODE \" +\n \"SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE \" +\n \"SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE_MASCULINE \" +\n \"SYSRES_CONST_NORMAL_ACCESS_RIGHTS_TYPE_CODE \" +\n \"SYSRES_CONST_NORMAL_LIFE_CYCLE_STAGE_DRAW_STYLE \" +\n \"SYSRES_CONST_NORMAL_MODE_NAME \" +\n \"SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_CODE \" +\n \"SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_NAME \" +\n \"SYSRES_CONST_NOTE_REQUISITE_CODE \" +\n \"SYSRES_CONST_NOTICE_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_NUM_REQUISITE \" +\n \"SYSRES_CONST_NUM_STR_REQUISITE_CODE \" +\n \"SYSRES_CONST_NUMERATION_AUTO_NOT_STRONG \" +\n \"SYSRES_CONST_NUMERATION_AUTO_STRONG \" +\n \"SYSRES_CONST_NUMERATION_FROM_DICTONARY \" +\n \"SYSRES_CONST_NUMERATION_MANUAL \" +\n \"SYSRES_CONST_NUMERIC_TYPE_CHAR \" +\n \"SYSRES_CONST_NUMREQ_REQUISITE_CODE \" +\n \"SYSRES_CONST_OBSOLETE_VERSION_STATE_PICK_VALUE \" +\n \"SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE \" +\n \"SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_CODE \" +\n \"SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_FEMININE \" +\n \"SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_MASCULINE \" +\n \"SYSRES_CONST_OPTIONAL_FORM_COMP_REQCODE_PREFIX \" +\n \"SYSRES_CONST_ORANGE_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_ORIGINALREF_REQUISITE_CODE \" +\n \"SYSRES_CONST_OURFIRM_REF_CODE \" +\n \"SYSRES_CONST_OURFIRM_REQUISITE_CODE \" +\n \"SYSRES_CONST_OURFIRM_VAR \" +\n \"SYSRES_CONST_OUTGOING_WORK_RULE_TYPE_CODE \" +\n \"SYSRES_CONST_PICK_NEGATIVE_RESULT \" +\n \"SYSRES_CONST_PICK_POSITIVE_RESULT \" +\n \"SYSRES_CONST_PICK_REQUISITE \" +\n \"SYSRES_CONST_PICK_REQUISITE_TYPE \" +\n \"SYSRES_CONST_PICK_TYPE_CHAR \" +\n \"SYSRES_CONST_PLAN_STATUS_REQUISITE_CODE \" +\n \"SYSRES_CONST_PLATFORM_VERSION_COMMENT \" +\n \"SYSRES_CONST_PLUGINS_SETTINGS_DESCRIPTION_REQUISITE_CODE \" +\n \"SYSRES_CONST_POSITIVE_PICK_VALUE \" +\n \"SYSRES_CONST_POWER_TO_CREATE_ACTION_CODE \" +\n \"SYSRES_CONST_POWER_TO_SIGN_ACTION_CODE \" +\n \"SYSRES_CONST_PRIORITY_REQUISITE_CODE \" +\n \"SYSRES_CONST_QUALIFIED_TASK_TYPE \" +\n \"SYSRES_CONST_QUALIFIED_TASK_TYPE_CODE \" +\n \"SYSRES_CONST_RECSTAT_REQUISITE_CODE \" +\n \"SYSRES_CONST_RED_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_REF_ID_T_REF_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_REF_REQUISITE \" +\n \"SYSRES_CONST_REF_REQUISITE_TYPE \" +\n \"SYSRES_CONST_REF_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE \" +\n \"SYSRES_CONST_REFERENCE_RECORD_HISTORY_CREATE_ACTION_CODE \" +\n \"SYSRES_CONST_REFERENCE_RECORD_HISTORY_DELETE_ACTION_CODE \" +\n \"SYSRES_CONST_REFERENCE_RECORD_HISTORY_MODIFY_ACTION_CODE \" +\n \"SYSRES_CONST_REFERENCE_TYPE_CHAR \" +\n \"SYSRES_CONST_REFERENCE_TYPE_REQUISITE_NAME \" +\n \"SYSRES_CONST_REFERENCES_ADD_PARAMS_REQUISITE_CODE \" +\n \"SYSRES_CONST_REFERENCES_DISPLAY_REQUISITE_REQUISITE_CODE \" +\n \"SYSRES_CONST_REMOTE_SERVER_STATUS_WORKING \" +\n \"SYSRES_CONST_REMOTE_SERVER_TYPE_MAIN \" +\n \"SYSRES_CONST_REMOTE_SERVER_TYPE_SECONDARY \" +\n \"SYSRES_CONST_REMOTE_USER_FLAG_VALUE_CODE \" +\n \"SYSRES_CONST_REPORT_APP_EDITOR_INTERNAL \" +\n \"SYSRES_CONST_REPORT_BASE_REPORT_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_REPORT_BASE_REPORT_REQUISITE_CODE \" +\n \"SYSRES_CONST_REPORT_SCRIPT_REQUISITE_CODE \" +\n \"SYSRES_CONST_REPORT_TEMPLATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_REPORT_VIEWER_CODE_REQUISITE_CODE \" +\n \"SYSRES_CONST_REQ_ALLOW_COMPONENT_DEFAULT_VALUE \" +\n \"SYSRES_CONST_REQ_ALLOW_RECORD_DEFAULT_VALUE \" +\n \"SYSRES_CONST_REQ_ALLOW_SERVER_COMPONENT_DEFAULT_VALUE \" +\n \"SYSRES_CONST_REQ_MODE_AVAILABLE_CODE \" +\n \"SYSRES_CONST_REQ_MODE_EDIT_CODE \" +\n \"SYSRES_CONST_REQ_MODE_HIDDEN_CODE \" +\n \"SYSRES_CONST_REQ_MODE_NOT_AVAILABLE_CODE \" +\n \"SYSRES_CONST_REQ_MODE_VIEW_CODE \" +\n \"SYSRES_CONST_REQ_NUMBER_REQUISITE_CODE \" +\n \"SYSRES_CONST_REQ_SECTION_VALUE \" +\n \"SYSRES_CONST_REQ_TYPE_VALUE \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_BY_UNIT \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_DATE_FULL \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_DATE_TIME \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_LEFT \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_RIGHT \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_WITHOUT_UNIT \" +\n \"SYSRES_CONST_REQUISITE_NUMBER_REQUISITE_CODE \" +\n \"SYSRES_CONST_REQUISITE_SECTION_ACTIONS \" +\n \"SYSRES_CONST_REQUISITE_SECTION_BUTTON \" +\n \"SYSRES_CONST_REQUISITE_SECTION_BUTTONS \" +\n \"SYSRES_CONST_REQUISITE_SECTION_CARD \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE10 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE11 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE12 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE13 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE14 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE15 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE16 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE17 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE18 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE19 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE2 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE20 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE21 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE22 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE23 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE24 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE3 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE4 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE5 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE6 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE7 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE8 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE9 \" +\n \"SYSRES_CONST_REQUISITES_PSEUDOREFERENCE_REQUISITE_NUMBER_REQUISITE_CODE \" +\n \"SYSRES_CONST_RIGHT_ALIGNMENT_CODE \" +\n \"SYSRES_CONST_ROLES_REFERENCE_CODE \" +\n \"SYSRES_CONST_ROUTE_STEP_AFTER_RUS \" +\n \"SYSRES_CONST_ROUTE_STEP_AND_CONDITION_RUS \" +\n \"SYSRES_CONST_ROUTE_STEP_OR_CONDITION_RUS \" +\n \"SYSRES_CONST_ROUTE_TYPE_COMPLEX \" +\n \"SYSRES_CONST_ROUTE_TYPE_PARALLEL \" +\n \"SYSRES_CONST_ROUTE_TYPE_SERIAL \" +\n \"SYSRES_CONST_SBDATASETDESC_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_SBDATASETDESC_POSITIVE_VALUE \" +\n \"SYSRES_CONST_SBVIEWSDESC_POSITIVE_VALUE \" +\n \"SYSRES_CONST_SCRIPT_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_SEARCH_BY_TEXT_REQUISITE_CODE \" +\n \"SYSRES_CONST_SEARCHES_COMPONENT_CONTENT \" +\n \"SYSRES_CONST_SEARCHES_CRITERIA_ACTION_NAME \" +\n \"SYSRES_CONST_SEARCHES_EDOC_CONTENT \" +\n \"SYSRES_CONST_SEARCHES_FOLDER_CONTENT \" +\n \"SYSRES_CONST_SEARCHES_JOB_CONTENT \" +\n \"SYSRES_CONST_SEARCHES_REFERENCE_CODE \" +\n \"SYSRES_CONST_SEARCHES_TASK_CONTENT \" +\n \"SYSRES_CONST_SECOND_CHAR \" +\n \"SYSRES_CONST_SECTION_REQUISITE_ACTIONS_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_CARD_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_CODE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_1_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_2_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_3_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_4_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_5_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_6_VALUE \" +\n \"SYSRES_CONST_SELECT_REFERENCE_MODE_NAME \" +\n \"SYSRES_CONST_SELECT_TYPE_SELECTABLE \" +\n \"SYSRES_CONST_SELECT_TYPE_SELECTABLE_ONLY_CHILD \" +\n \"SYSRES_CONST_SELECT_TYPE_SELECTABLE_WITH_CHILD \" +\n \"SYSRES_CONST_SELECT_TYPE_UNSLECTABLE \" +\n \"SYSRES_CONST_SERVER_TYPE_MAIN \" +\n \"SYSRES_CONST_SERVICE_USER_CATEGORY_FIELD_VALUE \" +\n \"SYSRES_CONST_SETTINGS_USER_REQUISITE_CODE \" +\n \"SYSRES_CONST_SIGNATURE_AND_ENCODE_CERTIFICATE_TYPE_CODE \" +\n \"SYSRES_CONST_SIGNATURE_CERTIFICATE_TYPE_CODE \" +\n \"SYSRES_CONST_SINGULAR_TITLE_REQUISITE_CODE \" +\n \"SYSRES_CONST_SQL_SERVER_AUTHENTIFICATION_FLAG_VALUE_CODE \" +\n \"SYSRES_CONST_SQL_SERVER_ENCODE_AUTHENTIFICATION_FLAG_VALUE_CODE \" +\n \"SYSRES_CONST_STANDART_ROUTE_REFERENCE_CODE \" +\n \"SYSRES_CONST_STANDART_ROUTE_REFERENCE_COMMENT_REQUISITE_CODE \" +\n \"SYSRES_CONST_STANDART_ROUTES_GROUPS_REFERENCE_CODE \" +\n \"SYSRES_CONST_STATE_REQ_NAME \" +\n \"SYSRES_CONST_STATE_REQUISITE_ACTIVE_VALUE \" +\n \"SYSRES_CONST_STATE_REQUISITE_CLOSED_VALUE \" +\n \"SYSRES_CONST_STATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_STATIC_ROLE_TYPE_CODE \" +\n \"SYSRES_CONST_STATUS_PLAN_DEFAULT_VALUE \" +\n \"SYSRES_CONST_STATUS_VALUE_AUTOCLEANING \" +\n \"SYSRES_CONST_STATUS_VALUE_BLUE_SQUARE \" +\n \"SYSRES_CONST_STATUS_VALUE_COMPLETE \" +\n \"SYSRES_CONST_STATUS_VALUE_GREEN_SQUARE \" +\n \"SYSRES_CONST_STATUS_VALUE_ORANGE_SQUARE \" +\n \"SYSRES_CONST_STATUS_VALUE_PURPLE_SQUARE \" +\n \"SYSRES_CONST_STATUS_VALUE_RED_SQUARE \" +\n \"SYSRES_CONST_STATUS_VALUE_SUSPEND \" +\n \"SYSRES_CONST_STATUS_VALUE_YELLOW_SQUARE \" +\n \"SYSRES_CONST_STDROUTE_SHOW_TO_USERS_REQUISITE_CODE \" +\n \"SYSRES_CONST_STORAGE_TYPE_FILE \" +\n \"SYSRES_CONST_STORAGE_TYPE_SQL_SERVER \" +\n \"SYSRES_CONST_STR_REQUISITE \" +\n \"SYSRES_CONST_STRIKEOUT_LIFE_CYCLE_STAGE_DRAW_STYLE \" +\n \"SYSRES_CONST_STRING_FORMAT_LEFT_ALIGN_CHAR \" +\n \"SYSRES_CONST_STRING_FORMAT_RIGHT_ALIGN_CHAR \" +\n \"SYSRES_CONST_STRING_REQUISITE_CODE \" +\n \"SYSRES_CONST_STRING_REQUISITE_TYPE \" +\n \"SYSRES_CONST_STRING_TYPE_CHAR \" +\n \"SYSRES_CONST_SUBSTITUTES_PSEUDOREFERENCE_CODE \" +\n \"SYSRES_CONST_SUBTASK_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_SYSTEM_SETTING_CURRENT_USER_PARAM_VALUE \" +\n \"SYSRES_CONST_SYSTEM_SETTING_EMPTY_VALUE_PARAM_VALUE \" +\n \"SYSRES_CONST_SYSTEM_VERSION_COMMENT \" +\n \"SYSRES_CONST_TASK_ACCESS_TYPE_ALL \" +\n \"SYSRES_CONST_TASK_ACCESS_TYPE_ALL_MEMBERS \" +\n \"SYSRES_CONST_TASK_ACCESS_TYPE_MANUAL \" +\n \"SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION \" +\n \"SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION_AND_PASSWORD \" +\n \"SYSRES_CONST_TASK_ENCODE_TYPE_NONE \" +\n \"SYSRES_CONST_TASK_ENCODE_TYPE_PASSWORD \" +\n \"SYSRES_CONST_TASK_ROUTE_ALL_CONDITION \" +\n \"SYSRES_CONST_TASK_ROUTE_AND_CONDITION \" +\n \"SYSRES_CONST_TASK_ROUTE_OR_CONDITION \" +\n \"SYSRES_CONST_TASK_STATE_ABORTED \" +\n \"SYSRES_CONST_TASK_STATE_COMPLETE \" +\n \"SYSRES_CONST_TASK_STATE_CONTINUED \" +\n \"SYSRES_CONST_TASK_STATE_CONTROL \" +\n \"SYSRES_CONST_TASK_STATE_INIT \" +\n \"SYSRES_CONST_TASK_STATE_WORKING \" +\n \"SYSRES_CONST_TASK_TITLE \" +\n \"SYSRES_CONST_TASK_TYPES_GROUPS_REFERENCE_CODE \" +\n \"SYSRES_CONST_TASK_TYPES_REFERENCE_CODE \" +\n \"SYSRES_CONST_TEMPLATES_REFERENCE_CODE \" +\n \"SYSRES_CONST_TEST_DATE_REQUISITE_NAME \" +\n \"SYSRES_CONST_TEST_DEV_DATABASE_NAME \" +\n \"SYSRES_CONST_TEST_DEV_SYSTEM_CODE \" +\n \"SYSRES_CONST_TEST_EDMS_DATABASE_NAME \" +\n \"SYSRES_CONST_TEST_EDMS_MAIN_CODE \" +\n \"SYSRES_CONST_TEST_EDMS_MAIN_DB_NAME \" +\n \"SYSRES_CONST_TEST_EDMS_SECOND_CODE \" +\n \"SYSRES_CONST_TEST_EDMS_SECOND_DB_NAME \" +\n \"SYSRES_CONST_TEST_EDMS_SYSTEM_CODE \" +\n \"SYSRES_CONST_TEST_NUMERIC_REQUISITE_NAME \" +\n \"SYSRES_CONST_TEXT_REQUISITE \" +\n \"SYSRES_CONST_TEXT_REQUISITE_CODE \" +\n \"SYSRES_CONST_TEXT_REQUISITE_TYPE \" +\n \"SYSRES_CONST_TEXT_TYPE_CHAR \" +\n \"SYSRES_CONST_TYPE_CODE_REQUISITE_CODE \" +\n \"SYSRES_CONST_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_UNDEFINED_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_UNITS_SECTION_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_UNITS_SECTION_REQUISITE_CODE \" +\n \"SYSRES_CONST_UNOPERATING_RECORD_FLAG_VALUE_CODE \" +\n \"SYSRES_CONST_UNSTORED_DATA_REQUISITE_CODE \" +\n \"SYSRES_CONST_UNSTORED_DATA_REQUISITE_NAME \" +\n \"SYSRES_CONST_USE_ACCESS_TYPE_CODE \" +\n \"SYSRES_CONST_USE_ACCESS_TYPE_NAME \" +\n \"SYSRES_CONST_USER_ACCOUNT_TYPE_VALUE_CODE \" +\n \"SYSRES_CONST_USER_ADDITIONAL_INFORMATION_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_AND_GROUP_ID_FROM_PSEUDOREFERENCE_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_CATEGORY_NORMAL \" +\n \"SYSRES_CONST_USER_CERTIFICATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_CERTIFICATE_STATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_CERTIFICATE_SUBJECT_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_CERTIFICATE_THUMBPRINT_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_COMMON_CATEGORY \" +\n \"SYSRES_CONST_USER_COMMON_CATEGORY_CODE \" +\n \"SYSRES_CONST_USER_FULL_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_GROUP_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_LOGIN_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_REMOTE_CONTROLLER_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_REMOTE_SYSTEM_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_RIGHTS_T_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_SERVER_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_SERVICE_CATEGORY \" +\n \"SYSRES_CONST_USER_SERVICE_CATEGORY_CODE \" +\n \"SYSRES_CONST_USER_STATUS_ADMINISTRATOR_CODE \" +\n \"SYSRES_CONST_USER_STATUS_ADMINISTRATOR_NAME \" +\n \"SYSRES_CONST_USER_STATUS_DEVELOPER_CODE \" +\n \"SYSRES_CONST_USER_STATUS_DEVELOPER_NAME \" +\n \"SYSRES_CONST_USER_STATUS_DISABLED_CODE \" +\n \"SYSRES_CONST_USER_STATUS_DISABLED_NAME \" +\n \"SYSRES_CONST_USER_STATUS_SYSTEM_DEVELOPER_CODE \" +\n \"SYSRES_CONST_USER_STATUS_USER_CODE \" +\n \"SYSRES_CONST_USER_STATUS_USER_NAME \" +\n \"SYSRES_CONST_USER_STATUS_USER_NAME_DEPRECATED \" +\n \"SYSRES_CONST_USER_TYPE_FIELD_VALUE_USER \" +\n \"SYSRES_CONST_USER_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_CONTROLLER_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_IS_MAIN_SERVER_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_REFERENCE_CODE \" +\n \"SYSRES_CONST_USERS_REGISTRATION_CERTIFICATES_ACTION_NAME \" +\n \"SYSRES_CONST_USERS_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_SYSTEM_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_USER_ACCESS_RIGHTS_TYPR_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_USER_AUTHENTICATION_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_USER_COMPONENT_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_USER_GROUP_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_VIEW_CERTIFICATES_ACTION_NAME \" +\n \"SYSRES_CONST_VIEW_DEFAULT_CODE \" +\n \"SYSRES_CONST_VIEW_DEFAULT_NAME \" +\n \"SYSRES_CONST_VIEWER_REQUISITE_CODE \" +\n \"SYSRES_CONST_WAITING_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_WIZARD_FORM_LABEL_TEST_STRING \" +\n \"SYSRES_CONST_WIZARD_QUERY_PARAM_HEIGHT_ETALON_STRING \" +\n \"SYSRES_CONST_WIZARD_REFERENCE_COMMENT_REQUISITE_CODE \" +\n \"SYSRES_CONST_WORK_RULES_DESCRIPTION_REQUISITE_CODE \" +\n \"SYSRES_CONST_WORK_TIME_CALENDAR_REFERENCE_CODE \" +\n \"SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE \" +\n \"SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE \" +\n \"SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE_RUS \" +\n \"SYSRES_CONST_WORK_WORKFLOW_SOFT_ROUTE_TYPE_VALUE_CODE_RUS \" +\n \"SYSRES_CONST_WORKFLOW_ROUTE_TYPR_HARD \" +\n \"SYSRES_CONST_WORKFLOW_ROUTE_TYPR_SOFT \" +\n \"SYSRES_CONST_XML_ENCODING \" +\n \"SYSRES_CONST_XREC_STAT_REQUISITE_CODE \" +\n \"SYSRES_CONST_XRECID_FIELD_NAME \" +\n \"SYSRES_CONST_YES \" +\n \"SYSRES_CONST_YES_NO_2_REQUISITE_CODE \" +\n \"SYSRES_CONST_YES_NO_REQUISITE_CODE \" +\n \"SYSRES_CONST_YES_NO_T_REF_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_YES_PICK_VALUE \" +\n \"SYSRES_CONST_YES_VALUE \";\n\n // Base constant\n var base_constants = \"CR FALSE nil NO_VALUE NULL TAB TRUE YES_VALUE \";\n\n // Base group name\n var base_group_name_constants =\n \"ADMINISTRATORS_GROUP_NAME CUSTOMIZERS_GROUP_NAME DEVELOPERS_GROUP_NAME SERVICE_USERS_GROUP_NAME \";\n\n // Decision block properties\n var decision_block_properties_constants =\n \"DECISION_BLOCK_FIRST_OPERAND_PROPERTY DECISION_BLOCK_NAME_PROPERTY DECISION_BLOCK_OPERATION_PROPERTY \" +\n \"DECISION_BLOCK_RESULT_TYPE_PROPERTY DECISION_BLOCK_SECOND_OPERAND_PROPERTY \";\n\n // File extension\n var file_extension_constants =\n \"ANY_FILE_EXTENTION COMPRESSED_DOCUMENT_EXTENSION EXTENDED_DOCUMENT_EXTENSION \" +\n \"SHORT_COMPRESSED_DOCUMENT_EXTENSION SHORT_EXTENDED_DOCUMENT_EXTENSION \";\n\n // Job block properties\n var job_block_properties_constants =\n \"JOB_BLOCK_ABORT_DEADLINE_PROPERTY \" +\n \"JOB_BLOCK_AFTER_FINISH_EVENT \" +\n \"JOB_BLOCK_AFTER_QUERY_PARAMETERS_EVENT \" +\n \"JOB_BLOCK_ATTACHMENT_PROPERTY \" +\n \"JOB_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY \" +\n \"JOB_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY \" +\n \"JOB_BLOCK_BEFORE_QUERY_PARAMETERS_EVENT \" +\n \"JOB_BLOCK_BEFORE_START_EVENT \" +\n \"JOB_BLOCK_CREATED_JOBS_PROPERTY \" +\n \"JOB_BLOCK_DEADLINE_PROPERTY \" +\n \"JOB_BLOCK_EXECUTION_RESULTS_PROPERTY \" +\n \"JOB_BLOCK_IS_PARALLEL_PROPERTY \" +\n \"JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY \" +\n \"JOB_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\n \"JOB_BLOCK_JOB_TEXT_PROPERTY \" +\n \"JOB_BLOCK_NAME_PROPERTY \" +\n \"JOB_BLOCK_NEED_SIGN_ON_PERFORM_PROPERTY \" +\n \"JOB_BLOCK_PERFORMER_PROPERTY \" +\n \"JOB_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY \" +\n \"JOB_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \" +\n \"JOB_BLOCK_SUBJECT_PROPERTY \";\n\n // Language code\n var language_code_constants = \"ENGLISH_LANGUAGE_CODE RUSSIAN_LANGUAGE_CODE \";\n\n // Launching external applications\n var launching_external_applications_constants =\n \"smHidden smMaximized smMinimized smNormal wmNo wmYes \";\n\n // Link kind\n var link_kind_constants =\n \"COMPONENT_TOKEN_LINK_KIND \" +\n \"DOCUMENT_LINK_KIND \" +\n \"EDOCUMENT_LINK_KIND \" +\n \"FOLDER_LINK_KIND \" +\n \"JOB_LINK_KIND \" +\n \"REFERENCE_LINK_KIND \" +\n \"TASK_LINK_KIND \";\n\n // Lock type\n var lock_type_constants =\n \"COMPONENT_TOKEN_LOCK_TYPE EDOCUMENT_VERSION_LOCK_TYPE \";\n\n // Monitor block properties\n var monitor_block_properties_constants =\n \"MONITOR_BLOCK_AFTER_FINISH_EVENT \" +\n \"MONITOR_BLOCK_BEFORE_START_EVENT \" +\n \"MONITOR_BLOCK_DEADLINE_PROPERTY \" +\n \"MONITOR_BLOCK_INTERVAL_PROPERTY \" +\n \"MONITOR_BLOCK_INTERVAL_TYPE_PROPERTY \" +\n \"MONITOR_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\n \"MONITOR_BLOCK_NAME_PROPERTY \" +\n \"MONITOR_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \" +\n \"MONITOR_BLOCK_SEARCH_SCRIPT_PROPERTY \";\n\n // Notice block properties\n var notice_block_properties_constants =\n \"NOTICE_BLOCK_AFTER_FINISH_EVENT \" +\n \"NOTICE_BLOCK_ATTACHMENT_PROPERTY \" +\n \"NOTICE_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY \" +\n \"NOTICE_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY \" +\n \"NOTICE_BLOCK_BEFORE_START_EVENT \" +\n \"NOTICE_BLOCK_CREATED_NOTICES_PROPERTY \" +\n \"NOTICE_BLOCK_DEADLINE_PROPERTY \" +\n \"NOTICE_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\n \"NOTICE_BLOCK_NAME_PROPERTY \" +\n \"NOTICE_BLOCK_NOTICE_TEXT_PROPERTY \" +\n \"NOTICE_BLOCK_PERFORMER_PROPERTY \" +\n \"NOTICE_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \" +\n \"NOTICE_BLOCK_SUBJECT_PROPERTY \";\n\n // Object events\n var object_events_constants =\n \"dseAfterCancel \" +\n \"dseAfterClose \" +\n \"dseAfterDelete \" +\n \"dseAfterDeleteOutOfTransaction \" +\n \"dseAfterInsert \" +\n \"dseAfterOpen \" +\n \"dseAfterScroll \" +\n \"dseAfterUpdate \" +\n \"dseAfterUpdateOutOfTransaction \" +\n \"dseBeforeCancel \" +\n \"dseBeforeClose \" +\n \"dseBeforeDelete \" +\n \"dseBeforeDetailUpdate \" +\n \"dseBeforeInsert \" +\n \"dseBeforeOpen \" +\n \"dseBeforeUpdate \" +\n \"dseOnAnyRequisiteChange \" +\n \"dseOnCloseRecord \" +\n \"dseOnDeleteError \" +\n \"dseOnOpenRecord \" +\n \"dseOnPrepareUpdate \" +\n \"dseOnUpdateError \" +\n \"dseOnUpdateRatifiedRecord \" +\n \"dseOnValidDelete \" +\n \"dseOnValidUpdate \" +\n \"reOnChange \" +\n \"reOnChangeValues \" +\n \"SELECTION_BEGIN_ROUTE_EVENT \" +\n \"SELECTION_END_ROUTE_EVENT \";\n\n // Object params\n var object_params_constants =\n \"CURRENT_PERIOD_IS_REQUIRED \" +\n \"PREVIOUS_CARD_TYPE_NAME \" +\n \"SHOW_RECORD_PROPERTIES_FORM \";\n\n // Other\n var other_constants =\n \"ACCESS_RIGHTS_SETTING_DIALOG_CODE \" +\n \"ADMINISTRATOR_USER_CODE \" +\n \"ANALYTIC_REPORT_TYPE \" +\n \"asrtHideLocal \" +\n \"asrtHideRemote \" +\n \"CALCULATED_ROLE_TYPE_CODE \" +\n \"COMPONENTS_REFERENCE_DEVELOPER_VIEW_CODE \" +\n \"DCTS_TEST_PROTOCOLS_FOLDER_PATH \" +\n \"E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED \" +\n \"E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED_BY_USER \" +\n \"E_EDOC_VERSION_ALREDY_SIGNED \" +\n \"E_EDOC_VERSION_ALREDY_SIGNED_BY_USER \" +\n \"EDOC_TYPES_CODE_REQUISITE_FIELD_NAME \" +\n \"EDOCUMENTS_ALIAS_NAME \" +\n \"FILES_FOLDER_PATH \" +\n \"FILTER_OPERANDS_DELIMITER \" +\n \"FILTER_OPERATIONS_DELIMITER \" +\n \"FORMCARD_NAME \" +\n \"FORMLIST_NAME \" +\n \"GET_EXTENDED_DOCUMENT_EXTENSION_CREATION_MODE \" +\n \"GET_EXTENDED_DOCUMENT_EXTENSION_IMPORT_MODE \" +\n \"INTEGRATED_REPORT_TYPE \" +\n \"IS_BUILDER_APPLICATION_ROLE \" +\n \"IS_BUILDER_APPLICATION_ROLE2 \" +\n \"IS_BUILDER_USERS \" +\n \"ISBSYSDEV \" +\n \"LOG_FOLDER_PATH \" +\n \"mbCancel \" +\n \"mbNo \" +\n \"mbNoToAll \" +\n \"mbOK \" +\n \"mbYes \" +\n \"mbYesToAll \" +\n \"MEMORY_DATASET_DESRIPTIONS_FILENAME \" +\n \"mrNo \" +\n \"mrNoToAll \" +\n \"mrYes \" +\n \"mrYesToAll \" +\n \"MULTIPLE_SELECT_DIALOG_CODE \" +\n \"NONOPERATING_RECORD_FLAG_FEMININE \" +\n \"NONOPERATING_RECORD_FLAG_MASCULINE \" +\n \"OPERATING_RECORD_FLAG_FEMININE \" +\n \"OPERATING_RECORD_FLAG_MASCULINE \" +\n \"PROFILING_SETTINGS_COMMON_SETTINGS_CODE_VALUE \" +\n \"PROGRAM_INITIATED_LOOKUP_ACTION \" +\n \"ratDelete \" +\n \"ratEdit \" +\n \"ratInsert \" +\n \"REPORT_TYPE \" +\n \"REQUIRED_PICK_VALUES_VARIABLE \" +\n \"rmCard \" +\n \"rmList \" +\n \"SBRTE_PROGID_DEV \" +\n \"SBRTE_PROGID_RELEASE \" +\n \"STATIC_ROLE_TYPE_CODE \" +\n \"SUPPRESS_EMPTY_TEMPLATE_CREATION \" +\n \"SYSTEM_USER_CODE \" +\n \"UPDATE_DIALOG_DATASET \" +\n \"USED_IN_OBJECT_HINT_PARAM \" +\n \"USER_INITIATED_LOOKUP_ACTION \" +\n \"USER_NAME_FORMAT \" +\n \"USER_SELECTION_RESTRICTIONS \" +\n \"WORKFLOW_TEST_PROTOCOLS_FOLDER_PATH \" +\n \"ELS_SUBTYPE_CONTROL_NAME \" +\n \"ELS_FOLDER_KIND_CONTROL_NAME \" +\n \"REPEAT_PROCESS_CURRENT_OBJECT_EXCEPTION_NAME \";\n\n // Privileges\n var privileges_constants =\n \"PRIVILEGE_COMPONENT_FULL_ACCESS \" +\n \"PRIVILEGE_DEVELOPMENT_EXPORT \" +\n \"PRIVILEGE_DEVELOPMENT_IMPORT \" +\n \"PRIVILEGE_DOCUMENT_DELETE \" +\n \"PRIVILEGE_ESD \" +\n \"PRIVILEGE_FOLDER_DELETE \" +\n \"PRIVILEGE_MANAGE_ACCESS_RIGHTS \" +\n \"PRIVILEGE_MANAGE_REPLICATION \" +\n \"PRIVILEGE_MANAGE_SESSION_SERVER \" +\n \"PRIVILEGE_OBJECT_FULL_ACCESS \" +\n \"PRIVILEGE_OBJECT_VIEW \" +\n \"PRIVILEGE_RESERVE_LICENSE \" +\n \"PRIVILEGE_SYSTEM_CUSTOMIZE \" +\n \"PRIVILEGE_SYSTEM_DEVELOP \" +\n \"PRIVILEGE_SYSTEM_INSTALL \" +\n \"PRIVILEGE_TASK_DELETE \" +\n \"PRIVILEGE_USER_PLUGIN_SETTINGS_CUSTOMIZE \" +\n \"PRIVILEGES_PSEUDOREFERENCE_CODE \";\n\n // Pseudoreference code\n var pseudoreference_code_constants =\n \"ACCESS_TYPES_PSEUDOREFERENCE_CODE \" +\n \"ALL_AVAILABLE_COMPONENTS_PSEUDOREFERENCE_CODE \" +\n \"ALL_AVAILABLE_PRIVILEGES_PSEUDOREFERENCE_CODE \" +\n \"ALL_REPLICATE_COMPONENTS_PSEUDOREFERENCE_CODE \" +\n \"AVAILABLE_DEVELOPERS_COMPONENTS_PSEUDOREFERENCE_CODE \" +\n \"COMPONENTS_PSEUDOREFERENCE_CODE \" +\n \"FILTRATER_SETTINGS_CONFLICTS_PSEUDOREFERENCE_CODE \" +\n \"GROUPS_PSEUDOREFERENCE_CODE \" +\n \"RECEIVE_PROTOCOL_PSEUDOREFERENCE_CODE \" +\n \"REFERENCE_REQUISITE_PSEUDOREFERENCE_CODE \" +\n \"REFERENCE_REQUISITES_PSEUDOREFERENCE_CODE \" +\n \"REFTYPES_PSEUDOREFERENCE_CODE \" +\n \"REPLICATION_SEANCES_DIARY_PSEUDOREFERENCE_CODE \" +\n \"SEND_PROTOCOL_PSEUDOREFERENCE_CODE \" +\n \"SUBSTITUTES_PSEUDOREFERENCE_CODE \" +\n \"SYSTEM_SETTINGS_PSEUDOREFERENCE_CODE \" +\n \"UNITS_PSEUDOREFERENCE_CODE \" +\n \"USERS_PSEUDOREFERENCE_CODE \" +\n \"VIEWERS_PSEUDOREFERENCE_CODE \";\n\n // Requisite ISBCertificateType values\n var requisite_ISBCertificateType_values_constants =\n \"CERTIFICATE_TYPE_ENCRYPT \" +\n \"CERTIFICATE_TYPE_SIGN \" +\n \"CERTIFICATE_TYPE_SIGN_AND_ENCRYPT \";\n\n // Requisite ISBEDocStorageType values\n var requisite_ISBEDocStorageType_values_constants =\n \"STORAGE_TYPE_FILE \" +\n \"STORAGE_TYPE_NAS_CIFS \" +\n \"STORAGE_TYPE_SAPERION \" +\n \"STORAGE_TYPE_SQL_SERVER \";\n\n // Requisite CompType2 values\n var requisite_compType2_values_constants =\n \"COMPTYPE2_REQUISITE_DOCUMENTS_VALUE \" +\n \"COMPTYPE2_REQUISITE_TASKS_VALUE \" +\n \"COMPTYPE2_REQUISITE_FOLDERS_VALUE \" +\n \"COMPTYPE2_REQUISITE_REFERENCES_VALUE \";\n\n // Requisite name\n var requisite_name_constants =\n \"SYSREQ_CODE \" +\n \"SYSREQ_COMPTYPE2 \" +\n \"SYSREQ_CONST_AVAILABLE_FOR_WEB \" +\n \"SYSREQ_CONST_COMMON_CODE \" +\n \"SYSREQ_CONST_COMMON_VALUE \" +\n \"SYSREQ_CONST_FIRM_CODE \" +\n \"SYSREQ_CONST_FIRM_STATUS \" +\n \"SYSREQ_CONST_FIRM_VALUE \" +\n \"SYSREQ_CONST_SERVER_STATUS \" +\n \"SYSREQ_CONTENTS \" +\n \"SYSREQ_DATE_OPEN \" +\n \"SYSREQ_DATE_CLOSE \" +\n \"SYSREQ_DESCRIPTION \" +\n \"SYSREQ_DESCRIPTION_LOCALIZE_ID \" +\n \"SYSREQ_DOUBLE \" +\n \"SYSREQ_EDOC_ACCESS_TYPE \" +\n \"SYSREQ_EDOC_AUTHOR \" +\n \"SYSREQ_EDOC_CREATED \" +\n \"SYSREQ_EDOC_DELEGATE_RIGHTS_REQUISITE_CODE \" +\n \"SYSREQ_EDOC_EDITOR \" +\n \"SYSREQ_EDOC_ENCODE_TYPE \" +\n \"SYSREQ_EDOC_ENCRYPTION_PLUGIN_NAME \" +\n \"SYSREQ_EDOC_ENCRYPTION_PLUGIN_VERSION \" +\n \"SYSREQ_EDOC_EXPORT_DATE \" +\n \"SYSREQ_EDOC_EXPORTER \" +\n \"SYSREQ_EDOC_KIND \" +\n \"SYSREQ_EDOC_LIFE_STAGE_NAME \" +\n \"SYSREQ_EDOC_LOCKED_FOR_SERVER_CODE \" +\n \"SYSREQ_EDOC_MODIFIED \" +\n \"SYSREQ_EDOC_NAME \" +\n \"SYSREQ_EDOC_NOTE \" +\n \"SYSREQ_EDOC_QUALIFIED_ID \" +\n \"SYSREQ_EDOC_SESSION_KEY \" +\n \"SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_NAME \" +\n \"SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_VERSION \" +\n \"SYSREQ_EDOC_SIGNATURE_TYPE \" +\n \"SYSREQ_EDOC_SIGNED \" +\n \"SYSREQ_EDOC_STORAGE \" +\n \"SYSREQ_EDOC_STORAGES_ARCHIVE_STORAGE \" +\n \"SYSREQ_EDOC_STORAGES_CHECK_RIGHTS \" +\n \"SYSREQ_EDOC_STORAGES_COMPUTER_NAME \" +\n \"SYSREQ_EDOC_STORAGES_EDIT_IN_STORAGE \" +\n \"SYSREQ_EDOC_STORAGES_EXECUTIVE_STORAGE \" +\n \"SYSREQ_EDOC_STORAGES_FUNCTION \" +\n \"SYSREQ_EDOC_STORAGES_INITIALIZED \" +\n \"SYSREQ_EDOC_STORAGES_LOCAL_PATH \" +\n \"SYSREQ_EDOC_STORAGES_SAPERION_DATABASE_NAME \" +\n \"SYSREQ_EDOC_STORAGES_SEARCH_BY_TEXT \" +\n \"SYSREQ_EDOC_STORAGES_SERVER_NAME \" +\n \"SYSREQ_EDOC_STORAGES_SHARED_SOURCE_NAME \" +\n \"SYSREQ_EDOC_STORAGES_TYPE \" +\n \"SYSREQ_EDOC_TEXT_MODIFIED \" +\n \"SYSREQ_EDOC_TYPE_ACT_CODE \" +\n \"SYSREQ_EDOC_TYPE_ACT_DESCRIPTION \" +\n \"SYSREQ_EDOC_TYPE_ACT_DESCRIPTION_LOCALIZE_ID \" +\n \"SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE \" +\n \"SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE_EXISTS \" +\n \"SYSREQ_EDOC_TYPE_ACT_SECTION \" +\n \"SYSREQ_EDOC_TYPE_ADD_PARAMS \" +\n \"SYSREQ_EDOC_TYPE_COMMENT \" +\n \"SYSREQ_EDOC_TYPE_EVENT_TEXT \" +\n \"SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR \" +\n \"SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID \" +\n \"SYSREQ_EDOC_TYPE_NAME_LOCALIZE_ID \" +\n \"SYSREQ_EDOC_TYPE_NUMERATION_METHOD \" +\n \"SYSREQ_EDOC_TYPE_PSEUDO_REQUISITE_CODE \" +\n \"SYSREQ_EDOC_TYPE_REQ_CODE \" +\n \"SYSREQ_EDOC_TYPE_REQ_DESCRIPTION \" +\n \"SYSREQ_EDOC_TYPE_REQ_DESCRIPTION_LOCALIZE_ID \" +\n \"SYSREQ_EDOC_TYPE_REQ_IS_LEADING \" +\n \"SYSREQ_EDOC_TYPE_REQ_IS_REQUIRED \" +\n \"SYSREQ_EDOC_TYPE_REQ_NUMBER \" +\n \"SYSREQ_EDOC_TYPE_REQ_ON_CHANGE \" +\n \"SYSREQ_EDOC_TYPE_REQ_ON_CHANGE_EXISTS \" +\n \"SYSREQ_EDOC_TYPE_REQ_ON_SELECT \" +\n \"SYSREQ_EDOC_TYPE_REQ_ON_SELECT_KIND \" +\n \"SYSREQ_EDOC_TYPE_REQ_SECTION \" +\n \"SYSREQ_EDOC_TYPE_VIEW_CARD \" +\n \"SYSREQ_EDOC_TYPE_VIEW_CODE \" +\n \"SYSREQ_EDOC_TYPE_VIEW_COMMENT \" +\n \"SYSREQ_EDOC_TYPE_VIEW_IS_MAIN \" +\n \"SYSREQ_EDOC_TYPE_VIEW_NAME \" +\n \"SYSREQ_EDOC_TYPE_VIEW_NAME_LOCALIZE_ID \" +\n \"SYSREQ_EDOC_VERSION_AUTHOR \" +\n \"SYSREQ_EDOC_VERSION_CRC \" +\n \"SYSREQ_EDOC_VERSION_DATA \" +\n \"SYSREQ_EDOC_VERSION_EDITOR \" +\n \"SYSREQ_EDOC_VERSION_EXPORT_DATE \" +\n \"SYSREQ_EDOC_VERSION_EXPORTER \" +\n \"SYSREQ_EDOC_VERSION_HIDDEN \" +\n \"SYSREQ_EDOC_VERSION_LIFE_STAGE \" +\n \"SYSREQ_EDOC_VERSION_MODIFIED \" +\n \"SYSREQ_EDOC_VERSION_NOTE \" +\n \"SYSREQ_EDOC_VERSION_SIGNATURE_TYPE \" +\n \"SYSREQ_EDOC_VERSION_SIGNED \" +\n \"SYSREQ_EDOC_VERSION_SIZE \" +\n \"SYSREQ_EDOC_VERSION_SOURCE \" +\n \"SYSREQ_EDOC_VERSION_TEXT_MODIFIED \" +\n \"SYSREQ_EDOCKIND_DEFAULT_VERSION_STATE_CODE \" +\n \"SYSREQ_FOLDER_KIND \" +\n \"SYSREQ_FUNC_CATEGORY \" +\n \"SYSREQ_FUNC_COMMENT \" +\n \"SYSREQ_FUNC_GROUP \" +\n \"SYSREQ_FUNC_GROUP_COMMENT \" +\n \"SYSREQ_FUNC_GROUP_NUMBER \" +\n \"SYSREQ_FUNC_HELP \" +\n \"SYSREQ_FUNC_PARAM_DEF_VALUE \" +\n \"SYSREQ_FUNC_PARAM_IDENT \" +\n \"SYSREQ_FUNC_PARAM_NUMBER \" +\n \"SYSREQ_FUNC_PARAM_TYPE \" +\n \"SYSREQ_FUNC_TEXT \" +\n \"SYSREQ_GROUP_CATEGORY \" +\n \"SYSREQ_ID \" +\n \"SYSREQ_LAST_UPDATE \" +\n \"SYSREQ_LEADER_REFERENCE \" +\n \"SYSREQ_LINE_NUMBER \" +\n \"SYSREQ_MAIN_RECORD_ID \" +\n \"SYSREQ_NAME \" +\n \"SYSREQ_NAME_LOCALIZE_ID \" +\n \"SYSREQ_NOTE \" +\n \"SYSREQ_ORIGINAL_RECORD \" +\n \"SYSREQ_OUR_FIRM \" +\n \"SYSREQ_PROFILING_SETTINGS_BATCH_LOGING \" +\n \"SYSREQ_PROFILING_SETTINGS_BATCH_SIZE \" +\n \"SYSREQ_PROFILING_SETTINGS_PROFILING_ENABLED \" +\n \"SYSREQ_PROFILING_SETTINGS_SQL_PROFILING_ENABLED \" +\n \"SYSREQ_PROFILING_SETTINGS_START_LOGGED \" +\n \"SYSREQ_RECORD_STATUS \" +\n \"SYSREQ_REF_REQ_FIELD_NAME \" +\n \"SYSREQ_REF_REQ_FORMAT \" +\n \"SYSREQ_REF_REQ_GENERATED \" +\n \"SYSREQ_REF_REQ_LENGTH \" +\n \"SYSREQ_REF_REQ_PRECISION \" +\n \"SYSREQ_REF_REQ_REFERENCE \" +\n \"SYSREQ_REF_REQ_SECTION \" +\n \"SYSREQ_REF_REQ_STORED \" +\n \"SYSREQ_REF_REQ_TOKENS \" +\n \"SYSREQ_REF_REQ_TYPE \" +\n \"SYSREQ_REF_REQ_VIEW \" +\n \"SYSREQ_REF_TYPE_ACT_CODE \" +\n \"SYSREQ_REF_TYPE_ACT_DESCRIPTION \" +\n \"SYSREQ_REF_TYPE_ACT_DESCRIPTION_LOCALIZE_ID \" +\n \"SYSREQ_REF_TYPE_ACT_ON_EXECUTE \" +\n \"SYSREQ_REF_TYPE_ACT_ON_EXECUTE_EXISTS \" +\n \"SYSREQ_REF_TYPE_ACT_SECTION \" +\n \"SYSREQ_REF_TYPE_ADD_PARAMS \" +\n \"SYSREQ_REF_TYPE_COMMENT \" +\n \"SYSREQ_REF_TYPE_COMMON_SETTINGS \" +\n \"SYSREQ_REF_TYPE_DISPLAY_REQUISITE_NAME \" +\n \"SYSREQ_REF_TYPE_EVENT_TEXT \" +\n \"SYSREQ_REF_TYPE_MAIN_LEADING_REF \" +\n \"SYSREQ_REF_TYPE_NAME_IN_SINGULAR \" +\n \"SYSREQ_REF_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID \" +\n \"SYSREQ_REF_TYPE_NAME_LOCALIZE_ID \" +\n \"SYSREQ_REF_TYPE_NUMERATION_METHOD \" +\n \"SYSREQ_REF_TYPE_REQ_CODE \" +\n \"SYSREQ_REF_TYPE_REQ_DESCRIPTION \" +\n \"SYSREQ_REF_TYPE_REQ_DESCRIPTION_LOCALIZE_ID \" +\n \"SYSREQ_REF_TYPE_REQ_IS_CONTROL \" +\n \"SYSREQ_REF_TYPE_REQ_IS_FILTER \" +\n \"SYSREQ_REF_TYPE_REQ_IS_LEADING \" +\n \"SYSREQ_REF_TYPE_REQ_IS_REQUIRED \" +\n \"SYSREQ_REF_TYPE_REQ_NUMBER \" +\n \"SYSREQ_REF_TYPE_REQ_ON_CHANGE \" +\n \"SYSREQ_REF_TYPE_REQ_ON_CHANGE_EXISTS \" +\n \"SYSREQ_REF_TYPE_REQ_ON_SELECT \" +\n \"SYSREQ_REF_TYPE_REQ_ON_SELECT_KIND \" +\n \"SYSREQ_REF_TYPE_REQ_SECTION \" +\n \"SYSREQ_REF_TYPE_VIEW_CARD \" +\n \"SYSREQ_REF_TYPE_VIEW_CODE \" +\n \"SYSREQ_REF_TYPE_VIEW_COMMENT \" +\n \"SYSREQ_REF_TYPE_VIEW_IS_MAIN \" +\n \"SYSREQ_REF_TYPE_VIEW_NAME \" +\n \"SYSREQ_REF_TYPE_VIEW_NAME_LOCALIZE_ID \" +\n \"SYSREQ_REFERENCE_TYPE_ID \" +\n \"SYSREQ_STATE \" +\n \"SYSREQ_STATЕ \" +\n \"SYSREQ_SYSTEM_SETTINGS_VALUE \" +\n \"SYSREQ_TYPE \" +\n \"SYSREQ_UNIT \" +\n \"SYSREQ_UNIT_ID \" +\n \"SYSREQ_USER_GROUPS_GROUP_FULL_NAME \" +\n \"SYSREQ_USER_GROUPS_GROUP_NAME \" +\n \"SYSREQ_USER_GROUPS_GROUP_SERVER_NAME \" +\n \"SYSREQ_USERS_ACCESS_RIGHTS \" +\n \"SYSREQ_USERS_AUTHENTICATION \" +\n \"SYSREQ_USERS_CATEGORY \" +\n \"SYSREQ_USERS_COMPONENT \" +\n \"SYSREQ_USERS_COMPONENT_USER_IS_PUBLIC \" +\n \"SYSREQ_USERS_DOMAIN \" +\n \"SYSREQ_USERS_FULL_USER_NAME \" +\n \"SYSREQ_USERS_GROUP \" +\n \"SYSREQ_USERS_IS_MAIN_SERVER \" +\n \"SYSREQ_USERS_LOGIN \" +\n \"SYSREQ_USERS_REFERENCE_USER_IS_PUBLIC \" +\n \"SYSREQ_USERS_STATUS \" +\n \"SYSREQ_USERS_USER_CERTIFICATE \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_INFO \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_NAME \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_VERSION \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_STATE \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_SUBJECT_NAME \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_THUMBPRINT \" +\n \"SYSREQ_USERS_USER_DEFAULT_CERTIFICATE \" +\n \"SYSREQ_USERS_USER_DESCRIPTION \" +\n \"SYSREQ_USERS_USER_GLOBAL_NAME \" +\n \"SYSREQ_USERS_USER_LOGIN \" +\n \"SYSREQ_USERS_USER_MAIN_SERVER \" +\n \"SYSREQ_USERS_USER_TYPE \" +\n \"SYSREQ_WORK_RULES_FOLDER_ID \";\n\n // Result\n var result_constants = \"RESULT_VAR_NAME RESULT_VAR_NAME_ENG \";\n\n // Rule identification\n var rule_identification_constants =\n \"AUTO_NUMERATION_RULE_ID \" +\n \"CANT_CHANGE_ID_REQUISITE_RULE_ID \" +\n \"CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID \" +\n \"CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID \" +\n \"CHECK_CODE_REQUISITE_RULE_ID \" +\n \"CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID \" +\n \"CHECK_FILTRATER_CHANGES_RULE_ID \" +\n \"CHECK_RECORD_INTERVAL_RULE_ID \" +\n \"CHECK_REFERENCE_INTERVAL_RULE_ID \" +\n \"CHECK_REQUIRED_DATA_FULLNESS_RULE_ID \" +\n \"CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID \" +\n \"MAKE_RECORD_UNRATIFIED_RULE_ID \" +\n \"RESTORE_AUTO_NUMERATION_RULE_ID \" +\n \"SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID \" +\n \"SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID \" +\n \"SET_IDSPS_VALUE_RULE_ID \" +\n \"SET_NEXT_CODE_VALUE_RULE_ID \" +\n \"SET_OURFIRM_BOUNDS_RULE_ID \" +\n \"SET_OURFIRM_REQUISITE_RULE_ID \";\n\n // Script block properties\n var script_block_properties_constants =\n \"SCRIPT_BLOCK_AFTER_FINISH_EVENT \" +\n \"SCRIPT_BLOCK_BEFORE_START_EVENT \" +\n \"SCRIPT_BLOCK_EXECUTION_RESULTS_PROPERTY \" +\n \"SCRIPT_BLOCK_NAME_PROPERTY \" +\n \"SCRIPT_BLOCK_SCRIPT_PROPERTY \";\n\n // Subtask block properties\n var subtask_block_properties_constants =\n \"SUBTASK_BLOCK_ABORT_DEADLINE_PROPERTY \" +\n \"SUBTASK_BLOCK_AFTER_FINISH_EVENT \" +\n \"SUBTASK_BLOCK_ASSIGN_PARAMS_EVENT \" +\n \"SUBTASK_BLOCK_ATTACHMENTS_PROPERTY \" +\n \"SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY \" +\n \"SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY \" +\n \"SUBTASK_BLOCK_BEFORE_START_EVENT \" +\n \"SUBTASK_BLOCK_CREATED_TASK_PROPERTY \" +\n \"SUBTASK_BLOCK_CREATION_EVENT \" +\n \"SUBTASK_BLOCK_DEADLINE_PROPERTY \" +\n \"SUBTASK_BLOCK_IMPORTANCE_PROPERTY \" +\n \"SUBTASK_BLOCK_INITIATOR_PROPERTY \" +\n \"SUBTASK_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY \" +\n \"SUBTASK_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\n \"SUBTASK_BLOCK_JOBS_TYPE_PROPERTY \" +\n \"SUBTASK_BLOCK_NAME_PROPERTY \" +\n \"SUBTASK_BLOCK_PARALLEL_ROUTE_PROPERTY \" +\n \"SUBTASK_BLOCK_PERFORMERS_PROPERTY \" +\n \"SUBTASK_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY \" +\n \"SUBTASK_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \" +\n \"SUBTASK_BLOCK_REQUIRE_SIGN_PROPERTY \" +\n \"SUBTASK_BLOCK_STANDARD_ROUTE_PROPERTY \" +\n \"SUBTASK_BLOCK_START_EVENT \" +\n \"SUBTASK_BLOCK_STEP_CONTROL_PROPERTY \" +\n \"SUBTASK_BLOCK_SUBJECT_PROPERTY \" +\n \"SUBTASK_BLOCK_TASK_CONTROL_PROPERTY \" +\n \"SUBTASK_BLOCK_TEXT_PROPERTY \" +\n \"SUBTASK_BLOCK_UNLOCK_ATTACHMENTS_ON_STOP_PROPERTY \" +\n \"SUBTASK_BLOCK_USE_STANDARD_ROUTE_PROPERTY \" +\n \"SUBTASK_BLOCK_WAIT_FOR_TASK_COMPLETE_PROPERTY \";\n\n // System component\n var system_component_constants =\n \"SYSCOMP_CONTROL_JOBS \" +\n \"SYSCOMP_FOLDERS \" +\n \"SYSCOMP_JOBS \" +\n \"SYSCOMP_NOTICES \" +\n \"SYSCOMP_TASKS \";\n\n // System dialogs\n var system_dialogs_constants =\n \"SYSDLG_CREATE_EDOCUMENT \" +\n \"SYSDLG_CREATE_EDOCUMENT_VERSION \" +\n \"SYSDLG_CURRENT_PERIOD \" +\n \"SYSDLG_EDIT_FUNCTION_HELP \" +\n \"SYSDLG_EDOCUMENT_KINDS_FOR_TEMPLATE \" +\n \"SYSDLG_EXPORT_MULTIPLE_EDOCUMENTS \" +\n \"SYSDLG_EXPORT_SINGLE_EDOCUMENT \" +\n \"SYSDLG_IMPORT_EDOCUMENT \" +\n \"SYSDLG_MULTIPLE_SELECT \" +\n \"SYSDLG_SETUP_ACCESS_RIGHTS \" +\n \"SYSDLG_SETUP_DEFAULT_RIGHTS \" +\n \"SYSDLG_SETUP_FILTER_CONDITION \" +\n \"SYSDLG_SETUP_SIGN_RIGHTS \" +\n \"SYSDLG_SETUP_TASK_OBSERVERS \" +\n \"SYSDLG_SETUP_TASK_ROUTE \" +\n \"SYSDLG_SETUP_USERS_LIST \" +\n \"SYSDLG_SIGN_EDOCUMENT \" +\n \"SYSDLG_SIGN_MULTIPLE_EDOCUMENTS \";\n\n // System reference names\n var system_reference_names_constants =\n \"SYSREF_ACCESS_RIGHTS_TYPES \" +\n \"SYSREF_ADMINISTRATION_HISTORY \" +\n \"SYSREF_ALL_AVAILABLE_COMPONENTS \" +\n \"SYSREF_ALL_AVAILABLE_PRIVILEGES \" +\n \"SYSREF_ALL_REPLICATING_COMPONENTS \" +\n \"SYSREF_AVAILABLE_DEVELOPERS_COMPONENTS \" +\n \"SYSREF_CALENDAR_EVENTS \" +\n \"SYSREF_COMPONENT_TOKEN_HISTORY \" +\n \"SYSREF_COMPONENT_TOKENS \" +\n \"SYSREF_COMPONENTS \" +\n \"SYSREF_CONSTANTS \" +\n \"SYSREF_DATA_RECEIVE_PROTOCOL \" +\n \"SYSREF_DATA_SEND_PROTOCOL \" +\n \"SYSREF_DIALOGS \" +\n \"SYSREF_DIALOGS_REQUISITES \" +\n \"SYSREF_EDITORS \" +\n \"SYSREF_EDOC_CARDS \" +\n \"SYSREF_EDOC_TYPES \" +\n \"SYSREF_EDOCUMENT_CARD_REQUISITES \" +\n \"SYSREF_EDOCUMENT_CARD_TYPES \" +\n \"SYSREF_EDOCUMENT_CARD_TYPES_REFERENCE \" +\n \"SYSREF_EDOCUMENT_CARDS \" +\n \"SYSREF_EDOCUMENT_HISTORY \" +\n \"SYSREF_EDOCUMENT_KINDS \" +\n \"SYSREF_EDOCUMENT_REQUISITES \" +\n \"SYSREF_EDOCUMENT_SIGNATURES \" +\n \"SYSREF_EDOCUMENT_TEMPLATES \" +\n \"SYSREF_EDOCUMENT_TEXT_STORAGES \" +\n \"SYSREF_EDOCUMENT_VIEWS \" +\n \"SYSREF_FILTERER_SETUP_CONFLICTS \" +\n \"SYSREF_FILTRATER_SETTING_CONFLICTS \" +\n \"SYSREF_FOLDER_HISTORY \" +\n \"SYSREF_FOLDERS \" +\n \"SYSREF_FUNCTION_GROUPS \" +\n \"SYSREF_FUNCTION_PARAMS \" +\n \"SYSREF_FUNCTIONS \" +\n \"SYSREF_JOB_HISTORY \" +\n \"SYSREF_LINKS \" +\n \"SYSREF_LOCALIZATION_DICTIONARY \" +\n \"SYSREF_LOCALIZATION_LANGUAGES \" +\n \"SYSREF_MODULES \" +\n \"SYSREF_PRIVILEGES \" +\n \"SYSREF_RECORD_HISTORY \" +\n \"SYSREF_REFERENCE_REQUISITES \" +\n \"SYSREF_REFERENCE_TYPE_VIEWS \" +\n \"SYSREF_REFERENCE_TYPES \" +\n \"SYSREF_REFERENCES \" +\n \"SYSREF_REFERENCES_REQUISITES \" +\n \"SYSREF_REMOTE_SERVERS \" +\n \"SYSREF_REPLICATION_SESSIONS_LOG \" +\n \"SYSREF_REPLICATION_SESSIONS_PROTOCOL \" +\n \"SYSREF_REPORTS \" +\n \"SYSREF_ROLES \" +\n \"SYSREF_ROUTE_BLOCK_GROUPS \" +\n \"SYSREF_ROUTE_BLOCKS \" +\n \"SYSREF_SCRIPTS \" +\n \"SYSREF_SEARCHES \" +\n \"SYSREF_SERVER_EVENTS \" +\n \"SYSREF_SERVER_EVENTS_HISTORY \" +\n \"SYSREF_STANDARD_ROUTE_GROUPS \" +\n \"SYSREF_STANDARD_ROUTES \" +\n \"SYSREF_STATUSES \" +\n \"SYSREF_SYSTEM_SETTINGS \" +\n \"SYSREF_TASK_HISTORY \" +\n \"SYSREF_TASK_KIND_GROUPS \" +\n \"SYSREF_TASK_KINDS \" +\n \"SYSREF_TASK_RIGHTS \" +\n \"SYSREF_TASK_SIGNATURES \" +\n \"SYSREF_TASKS \" +\n \"SYSREF_UNITS \" +\n \"SYSREF_USER_GROUPS \" +\n \"SYSREF_USER_GROUPS_REFERENCE \" +\n \"SYSREF_USER_SUBSTITUTION \" +\n \"SYSREF_USERS \" +\n \"SYSREF_USERS_REFERENCE \" +\n \"SYSREF_VIEWERS \" +\n \"SYSREF_WORKING_TIME_CALENDARS \";\n\n // Table name\n var table_name_constants =\n \"ACCESS_RIGHTS_TABLE_NAME \" +\n \"EDMS_ACCESS_TABLE_NAME \" +\n \"EDOC_TYPES_TABLE_NAME \";\n\n // Test\n var test_constants =\n \"TEST_DEV_DB_NAME \" +\n \"TEST_DEV_SYSTEM_CODE \" +\n \"TEST_EDMS_DB_NAME \" +\n \"TEST_EDMS_MAIN_CODE \" +\n \"TEST_EDMS_MAIN_DB_NAME \" +\n \"TEST_EDMS_SECOND_CODE \" +\n \"TEST_EDMS_SECOND_DB_NAME \" +\n \"TEST_EDMS_SYSTEM_CODE \" +\n \"TEST_ISB5_MAIN_CODE \" +\n \"TEST_ISB5_SECOND_CODE \" +\n \"TEST_SQL_SERVER_2005_NAME \" +\n \"TEST_SQL_SERVER_NAME \";\n\n // Using the dialog windows\n var using_the_dialog_windows_constants =\n \"ATTENTION_CAPTION \" +\n \"cbsCommandLinks \" +\n \"cbsDefault \" +\n \"CONFIRMATION_CAPTION \" +\n \"ERROR_CAPTION \" +\n \"INFORMATION_CAPTION \" +\n \"mrCancel \" +\n \"mrOk \";\n\n // Using the document\n var using_the_document_constants =\n \"EDOC_VERSION_ACTIVE_STAGE_CODE \" +\n \"EDOC_VERSION_DESIGN_STAGE_CODE \" +\n \"EDOC_VERSION_OBSOLETE_STAGE_CODE \";\n\n // Using the EA and encryption\n var using_the_EA_and_encryption_constants =\n \"cpDataEnciphermentEnabled \" +\n \"cpDigitalSignatureEnabled \" +\n \"cpID \" +\n \"cpIssuer \" +\n \"cpPluginVersion \" +\n \"cpSerial \" +\n \"cpSubjectName \" +\n \"cpSubjSimpleName \" +\n \"cpValidFromDate \" +\n \"cpValidToDate \";\n\n // Using the ISBL-editor\n var using_the_ISBL_editor_constants =\n \"ISBL_SYNTAX \" + \"NO_SYNTAX \" + \"XML_SYNTAX \";\n\n // Wait block properties\n var wait_block_properties_constants =\n \"WAIT_BLOCK_AFTER_FINISH_EVENT \" +\n \"WAIT_BLOCK_BEFORE_START_EVENT \" +\n \"WAIT_BLOCK_DEADLINE_PROPERTY \" +\n \"WAIT_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\n \"WAIT_BLOCK_NAME_PROPERTY \" +\n \"WAIT_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \";\n\n // SYSRES Common\n var sysres_common_constants =\n \"SYSRES_COMMON \" +\n \"SYSRES_CONST \" +\n \"SYSRES_MBFUNC \" +\n \"SYSRES_SBDATA \" +\n \"SYSRES_SBGUI \" +\n \"SYSRES_SBINTF \" +\n \"SYSRES_SBREFDSC \" +\n \"SYSRES_SQLERRORS \" +\n \"SYSRES_SYSCOMP \";\n\n // Константы ==> built_in\n var CONSTANTS =\n sysres_constants +\n base_constants +\n base_group_name_constants +\n decision_block_properties_constants +\n file_extension_constants +\n job_block_properties_constants +\n language_code_constants +\n launching_external_applications_constants +\n link_kind_constants +\n lock_type_constants +\n monitor_block_properties_constants +\n notice_block_properties_constants +\n object_events_constants +\n object_params_constants +\n other_constants +\n privileges_constants +\n pseudoreference_code_constants +\n requisite_ISBCertificateType_values_constants +\n requisite_ISBEDocStorageType_values_constants +\n requisite_compType2_values_constants +\n requisite_name_constants +\n result_constants +\n rule_identification_constants +\n script_block_properties_constants +\n subtask_block_properties_constants +\n system_component_constants +\n system_dialogs_constants +\n system_reference_names_constants +\n table_name_constants +\n test_constants +\n using_the_dialog_windows_constants +\n using_the_document_constants +\n using_the_EA_and_encryption_constants +\n using_the_ISBL_editor_constants +\n wait_block_properties_constants +\n sysres_common_constants;\n\n // enum TAccountType\n var TAccountType = \"atUser atGroup atRole \";\n\n // enum TActionEnabledMode\n var TActionEnabledMode =\n \"aemEnabledAlways \" +\n \"aemDisabledAlways \" +\n \"aemEnabledOnBrowse \" +\n \"aemEnabledOnEdit \" +\n \"aemDisabledOnBrowseEmpty \";\n\n // enum TAddPosition\n var TAddPosition = \"apBegin apEnd \";\n\n // enum TAlignment\n var TAlignment = \"alLeft alRight \";\n\n // enum TAreaShowMode\n var TAreaShowMode =\n \"asmNever \" +\n \"asmNoButCustomize \" +\n \"asmAsLastTime \" +\n \"asmYesButCustomize \" +\n \"asmAlways \";\n\n // enum TCertificateInvalidationReason\n var TCertificateInvalidationReason = \"cirCommon cirRevoked \";\n\n // enum TCertificateType\n var TCertificateType = \"ctSignature ctEncode ctSignatureEncode \";\n\n // enum TCheckListBoxItemState\n var TCheckListBoxItemState = \"clbUnchecked clbChecked clbGrayed \";\n\n // enum TCloseOnEsc\n var TCloseOnEsc = \"ceISB ceAlways ceNever \";\n\n // enum TCompType\n var TCompType =\n \"ctDocument \" +\n \"ctReference \" +\n \"ctScript \" +\n \"ctUnknown \" +\n \"ctReport \" +\n \"ctDialog \" +\n \"ctFunction \" +\n \"ctFolder \" +\n \"ctEDocument \" +\n \"ctTask \" +\n \"ctJob \" +\n \"ctNotice \" +\n \"ctControlJob \";\n\n // enum TConditionFormat\n var TConditionFormat = \"cfInternal cfDisplay \";\n\n // enum TConnectionIntent\n var TConnectionIntent = \"ciUnspecified ciWrite ciRead \";\n\n // enum TContentKind\n var TContentKind =\n \"ckFolder \" +\n \"ckEDocument \" +\n \"ckTask \" +\n \"ckJob \" +\n \"ckComponentToken \" +\n \"ckAny \" +\n \"ckReference \" +\n \"ckScript \" +\n \"ckReport \" +\n \"ckDialog \";\n\n // enum TControlType\n var TControlType =\n \"ctISBLEditor \" +\n \"ctBevel \" +\n \"ctButton \" +\n \"ctCheckListBox \" +\n \"ctComboBox \" +\n \"ctComboEdit \" +\n \"ctGrid \" +\n \"ctDBCheckBox \" +\n \"ctDBComboBox \" +\n \"ctDBEdit \" +\n \"ctDBEllipsis \" +\n \"ctDBMemo \" +\n \"ctDBNavigator \" +\n \"ctDBRadioGroup \" +\n \"ctDBStatusLabel \" +\n \"ctEdit \" +\n \"ctGroupBox \" +\n \"ctInplaceHint \" +\n \"ctMemo \" +\n \"ctPanel \" +\n \"ctListBox \" +\n \"ctRadioButton \" +\n \"ctRichEdit \" +\n \"ctTabSheet \" +\n \"ctWebBrowser \" +\n \"ctImage \" +\n \"ctHyperLink \" +\n \"ctLabel \" +\n \"ctDBMultiEllipsis \" +\n \"ctRibbon \" +\n \"ctRichView \" +\n \"ctInnerPanel \" +\n \"ctPanelGroup \" +\n \"ctBitButton \";\n\n // enum TCriterionContentType\n var TCriterionContentType =\n \"cctDate \" +\n \"cctInteger \" +\n \"cctNumeric \" +\n \"cctPick \" +\n \"cctReference \" +\n \"cctString \" +\n \"cctText \";\n\n // enum TCultureType\n var TCultureType = \"cltInternal cltPrimary cltGUI \";\n\n // enum TDataSetEventType\n var TDataSetEventType =\n \"dseBeforeOpen \" +\n \"dseAfterOpen \" +\n \"dseBeforeClose \" +\n \"dseAfterClose \" +\n \"dseOnValidDelete \" +\n \"dseBeforeDelete \" +\n \"dseAfterDelete \" +\n \"dseAfterDeleteOutOfTransaction \" +\n \"dseOnDeleteError \" +\n \"dseBeforeInsert \" +\n \"dseAfterInsert \" +\n \"dseOnValidUpdate \" +\n \"dseBeforeUpdate \" +\n \"dseOnUpdateRatifiedRecord \" +\n \"dseAfterUpdate \" +\n \"dseAfterUpdateOutOfTransaction \" +\n \"dseOnUpdateError \" +\n \"dseAfterScroll \" +\n \"dseOnOpenRecord \" +\n \"dseOnCloseRecord \" +\n \"dseBeforeCancel \" +\n \"dseAfterCancel \" +\n \"dseOnUpdateDeadlockError \" +\n \"dseBeforeDetailUpdate \" +\n \"dseOnPrepareUpdate \" +\n \"dseOnAnyRequisiteChange \";\n\n // enum TDataSetState\n var TDataSetState = \"dssEdit dssInsert dssBrowse dssInActive \";\n\n // enum TDateFormatType\n var TDateFormatType = \"dftDate dftShortDate dftDateTime dftTimeStamp \";\n\n // enum TDateOffsetType\n var TDateOffsetType = \"dotDays dotHours dotMinutes dotSeconds \";\n\n // enum TDateTimeKind\n var TDateTimeKind = \"dtkndLocal dtkndUTC \";\n\n // enum TDeaAccessRights\n var TDeaAccessRights = \"arNone arView arEdit arFull \";\n\n // enum TDocumentDefaultAction\n var TDocumentDefaultAction = \"ddaView ddaEdit \";\n\n // enum TEditMode\n var TEditMode =\n \"emLock \" +\n \"emEdit \" +\n \"emSign \" +\n \"emExportWithLock \" +\n \"emImportWithUnlock \" +\n \"emChangeVersionNote \" +\n \"emOpenForModify \" +\n \"emChangeLifeStage \" +\n \"emDelete \" +\n \"emCreateVersion \" +\n \"emImport \" +\n \"emUnlockExportedWithLock \" +\n \"emStart \" +\n \"emAbort \" +\n \"emReInit \" +\n \"emMarkAsReaded \" +\n \"emMarkAsUnreaded \" +\n \"emPerform \" +\n \"emAccept \" +\n \"emResume \" +\n \"emChangeRights \" +\n \"emEditRoute \" +\n \"emEditObserver \" +\n \"emRecoveryFromLocalCopy \" +\n \"emChangeWorkAccessType \" +\n \"emChangeEncodeTypeToCertificate \" +\n \"emChangeEncodeTypeToPassword \" +\n \"emChangeEncodeTypeToNone \" +\n \"emChangeEncodeTypeToCertificatePassword \" +\n \"emChangeStandardRoute \" +\n \"emGetText \" +\n \"emOpenForView \" +\n \"emMoveToStorage \" +\n \"emCreateObject \" +\n \"emChangeVersionHidden \" +\n \"emDeleteVersion \" +\n \"emChangeLifeCycleStage \" +\n \"emApprovingSign \" +\n \"emExport \" +\n \"emContinue \" +\n \"emLockFromEdit \" +\n \"emUnLockForEdit \" +\n \"emLockForServer \" +\n \"emUnlockFromServer \" +\n \"emDelegateAccessRights \" +\n \"emReEncode \";\n\n // enum TEditorCloseObservType\n var TEditorCloseObservType = \"ecotFile ecotProcess \";\n\n // enum TEdmsApplicationAction\n var TEdmsApplicationAction = \"eaGet eaCopy eaCreate eaCreateStandardRoute \";\n\n // enum TEDocumentLockType\n var TEDocumentLockType = \"edltAll edltNothing edltQuery \";\n\n // enum TEDocumentStepShowMode\n var TEDocumentStepShowMode = \"essmText essmCard \";\n\n // enum TEDocumentStepVersionType\n var TEDocumentStepVersionType = \"esvtLast esvtLastActive esvtSpecified \";\n\n // enum TEDocumentStorageFunction\n var TEDocumentStorageFunction = \"edsfExecutive edsfArchive \";\n\n // enum TEDocumentStorageType\n var TEDocumentStorageType = \"edstSQLServer edstFile \";\n\n // enum TEDocumentVersionSourceType\n var TEDocumentVersionSourceType =\n \"edvstNone edvstEDocumentVersionCopy edvstFile edvstTemplate edvstScannedFile \";\n\n // enum TEDocumentVersionState\n var TEDocumentVersionState = \"vsDefault vsDesign vsActive vsObsolete \";\n\n // enum TEncodeType\n var TEncodeType = \"etNone etCertificate etPassword etCertificatePassword \";\n\n // enum TExceptionCategory\n var TExceptionCategory = \"ecException ecWarning ecInformation \";\n\n // enum TExportedSignaturesType\n var TExportedSignaturesType = \"estAll estApprovingOnly \";\n\n // enum TExportedVersionType\n var TExportedVersionType = \"evtLast evtLastActive evtQuery \";\n\n // enum TFieldDataType\n var TFieldDataType =\n \"fdtString \" +\n \"fdtNumeric \" +\n \"fdtInteger \" +\n \"fdtDate \" +\n \"fdtText \" +\n \"fdtUnknown \" +\n \"fdtWideString \" +\n \"fdtLargeInteger \";\n\n // enum TFolderType\n var TFolderType =\n \"ftInbox \" +\n \"ftOutbox \" +\n \"ftFavorites \" +\n \"ftCommonFolder \" +\n \"ftUserFolder \" +\n \"ftComponents \" +\n \"ftQuickLaunch \" +\n \"ftShortcuts \" +\n \"ftSearch \";\n\n // enum TGridRowHeight\n var TGridRowHeight = \"grhAuto \" + \"grhX1 \" + \"grhX2 \" + \"grhX3 \";\n\n // enum THyperlinkType\n var THyperlinkType = \"hltText \" + \"hltRTF \" + \"hltHTML \";\n\n // enum TImageFileFormat\n var TImageFileFormat =\n \"iffBMP \" +\n \"iffJPEG \" +\n \"iffMultiPageTIFF \" +\n \"iffSinglePageTIFF \" +\n \"iffTIFF \" +\n \"iffPNG \";\n\n // enum TImageMode\n var TImageMode = \"im8bGrayscale \" + \"im24bRGB \" + \"im1bMonochrome \";\n\n // enum TImageType\n var TImageType = \"itBMP \" + \"itJPEG \" + \"itWMF \" + \"itPNG \";\n\n // enum TInplaceHintKind\n var TInplaceHintKind =\n \"ikhInformation \" + \"ikhWarning \" + \"ikhError \" + \"ikhNoIcon \";\n\n // enum TISBLContext\n var TISBLContext =\n \"icUnknown \" +\n \"icScript \" +\n \"icFunction \" +\n \"icIntegratedReport \" +\n \"icAnalyticReport \" +\n \"icDataSetEventHandler \" +\n \"icActionHandler \" +\n \"icFormEventHandler \" +\n \"icLookUpEventHandler \" +\n \"icRequisiteChangeEventHandler \" +\n \"icBeforeSearchEventHandler \" +\n \"icRoleCalculation \" +\n \"icSelectRouteEventHandler \" +\n \"icBlockPropertyCalculation \" +\n \"icBlockQueryParamsEventHandler \" +\n \"icChangeSearchResultEventHandler \" +\n \"icBlockEventHandler \" +\n \"icSubTaskInitEventHandler \" +\n \"icEDocDataSetEventHandler \" +\n \"icEDocLookUpEventHandler \" +\n \"icEDocActionHandler \" +\n \"icEDocFormEventHandler \" +\n \"icEDocRequisiteChangeEventHandler \" +\n \"icStructuredConversionRule \" +\n \"icStructuredConversionEventBefore \" +\n \"icStructuredConversionEventAfter \" +\n \"icWizardEventHandler \" +\n \"icWizardFinishEventHandler \" +\n \"icWizardStepEventHandler \" +\n \"icWizardStepFinishEventHandler \" +\n \"icWizardActionEnableEventHandler \" +\n \"icWizardActionExecuteEventHandler \" +\n \"icCreateJobsHandler \" +\n \"icCreateNoticesHandler \" +\n \"icBeforeLookUpEventHandler \" +\n \"icAfterLookUpEventHandler \" +\n \"icTaskAbortEventHandler \" +\n \"icWorkflowBlockActionHandler \" +\n \"icDialogDataSetEventHandler \" +\n \"icDialogActionHandler \" +\n \"icDialogLookUpEventHandler \" +\n \"icDialogRequisiteChangeEventHandler \" +\n \"icDialogFormEventHandler \" +\n \"icDialogValidCloseEventHandler \" +\n \"icBlockFormEventHandler \" +\n \"icTaskFormEventHandler \" +\n \"icReferenceMethod \" +\n \"icEDocMethod \" +\n \"icDialogMethod \" +\n \"icProcessMessageHandler \";\n\n // enum TItemShow\n var TItemShow = \"isShow \" + \"isHide \" + \"isByUserSettings \";\n\n // enum TJobKind\n var TJobKind = \"jkJob \" + \"jkNotice \" + \"jkControlJob \";\n\n // enum TJoinType\n var TJoinType = \"jtInner \" + \"jtLeft \" + \"jtRight \" + \"jtFull \" + \"jtCross \";\n\n // enum TLabelPos\n var TLabelPos = \"lbpAbove \" + \"lbpBelow \" + \"lbpLeft \" + \"lbpRight \";\n\n // enum TLicensingType\n var TLicensingType = \"eltPerConnection \" + \"eltPerUser \";\n\n // enum TLifeCycleStageFontColor\n var TLifeCycleStageFontColor =\n \"sfcUndefined \" +\n \"sfcBlack \" +\n \"sfcGreen \" +\n \"sfcRed \" +\n \"sfcBlue \" +\n \"sfcOrange \" +\n \"sfcLilac \";\n\n // enum TLifeCycleStageFontStyle\n var TLifeCycleStageFontStyle = \"sfsItalic \" + \"sfsStrikeout \" + \"sfsNormal \";\n\n // enum TLockableDevelopmentComponentType\n var TLockableDevelopmentComponentType =\n \"ldctStandardRoute \" +\n \"ldctWizard \" +\n \"ldctScript \" +\n \"ldctFunction \" +\n \"ldctRouteBlock \" +\n \"ldctIntegratedReport \" +\n \"ldctAnalyticReport \" +\n \"ldctReferenceType \" +\n \"ldctEDocumentType \" +\n \"ldctDialog \" +\n \"ldctServerEvents \";\n\n // enum TMaxRecordCountRestrictionType\n var TMaxRecordCountRestrictionType =\n \"mrcrtNone \" + \"mrcrtUser \" + \"mrcrtMaximal \" + \"mrcrtCustom \";\n\n // enum TRangeValueType\n var TRangeValueType =\n \"vtEqual \" + \"vtGreaterOrEqual \" + \"vtLessOrEqual \" + \"vtRange \";\n\n // enum TRelativeDate\n var TRelativeDate =\n \"rdYesterday \" +\n \"rdToday \" +\n \"rdTomorrow \" +\n \"rdThisWeek \" +\n \"rdThisMonth \" +\n \"rdThisYear \" +\n \"rdNextMonth \" +\n \"rdNextWeek \" +\n \"rdLastWeek \" +\n \"rdLastMonth \";\n\n // enum TReportDestination\n var TReportDestination = \"rdWindow \" + \"rdFile \" + \"rdPrinter \";\n\n // enum TReqDataType\n var TReqDataType =\n \"rdtString \" +\n \"rdtNumeric \" +\n \"rdtInteger \" +\n \"rdtDate \" +\n \"rdtReference \" +\n \"rdtAccount \" +\n \"rdtText \" +\n \"rdtPick \" +\n \"rdtUnknown \" +\n \"rdtLargeInteger \" +\n \"rdtDocument \";\n\n // enum TRequisiteEventType\n var TRequisiteEventType = \"reOnChange \" + \"reOnChangeValues \";\n\n // enum TSBTimeType\n var TSBTimeType = \"ttGlobal \" + \"ttLocal \" + \"ttUser \" + \"ttSystem \";\n\n // enum TSearchShowMode\n var TSearchShowMode =\n \"ssmBrowse \" + \"ssmSelect \" + \"ssmMultiSelect \" + \"ssmBrowseModal \";\n\n // enum TSelectMode\n var TSelectMode = \"smSelect \" + \"smLike \" + \"smCard \";\n\n // enum TSignatureType\n var TSignatureType = \"stNone \" + \"stAuthenticating \" + \"stApproving \";\n\n // enum TSignerContentType\n var TSignerContentType = \"sctString \" + \"sctStream \";\n\n // enum TStringsSortType\n var TStringsSortType = \"sstAnsiSort \" + \"sstNaturalSort \";\n\n // enum TStringValueType\n var TStringValueType = \"svtEqual \" + \"svtContain \";\n\n // enum TStructuredObjectAttributeType\n var TStructuredObjectAttributeType =\n \"soatString \" +\n \"soatNumeric \" +\n \"soatInteger \" +\n \"soatDatetime \" +\n \"soatReferenceRecord \" +\n \"soatText \" +\n \"soatPick \" +\n \"soatBoolean \" +\n \"soatEDocument \" +\n \"soatAccount \" +\n \"soatIntegerCollection \" +\n \"soatNumericCollection \" +\n \"soatStringCollection \" +\n \"soatPickCollection \" +\n \"soatDatetimeCollection \" +\n \"soatBooleanCollection \" +\n \"soatReferenceRecordCollection \" +\n \"soatEDocumentCollection \" +\n \"soatAccountCollection \" +\n \"soatContents \" +\n \"soatUnknown \";\n\n // enum TTaskAbortReason\n var TTaskAbortReason = \"tarAbortByUser \" + \"tarAbortByWorkflowException \";\n\n // enum TTextValueType\n var TTextValueType = \"tvtAllWords \" + \"tvtExactPhrase \" + \"tvtAnyWord \";\n\n // enum TUserObjectStatus\n var TUserObjectStatus =\n \"usNone \" +\n \"usCompleted \" +\n \"usRedSquare \" +\n \"usBlueSquare \" +\n \"usYellowSquare \" +\n \"usGreenSquare \" +\n \"usOrangeSquare \" +\n \"usPurpleSquare \" +\n \"usFollowUp \";\n\n // enum TUserType\n var TUserType =\n \"utUnknown \" +\n \"utUser \" +\n \"utDeveloper \" +\n \"utAdministrator \" +\n \"utSystemDeveloper \" +\n \"utDisconnected \";\n\n // enum TValuesBuildType\n var TValuesBuildType =\n \"btAnd \" + \"btDetailAnd \" + \"btOr \" + \"btNotOr \" + \"btOnly \";\n\n // enum TViewMode\n var TViewMode = \"vmView \" + \"vmSelect \" + \"vmNavigation \";\n\n // enum TViewSelectionMode\n var TViewSelectionMode =\n \"vsmSingle \" + \"vsmMultiple \" + \"vsmMultipleCheck \" + \"vsmNoSelection \";\n\n // enum TWizardActionType\n var TWizardActionType =\n \"wfatPrevious \" + \"wfatNext \" + \"wfatCancel \" + \"wfatFinish \";\n\n // enum TWizardFormElementProperty\n var TWizardFormElementProperty =\n \"wfepUndefined \" +\n \"wfepText3 \" +\n \"wfepText6 \" +\n \"wfepText9 \" +\n \"wfepSpinEdit \" +\n \"wfepDropDown \" +\n \"wfepRadioGroup \" +\n \"wfepFlag \" +\n \"wfepText12 \" +\n \"wfepText15 \" +\n \"wfepText18 \" +\n \"wfepText21 \" +\n \"wfepText24 \" +\n \"wfepText27 \" +\n \"wfepText30 \" +\n \"wfepRadioGroupColumn1 \" +\n \"wfepRadioGroupColumn2 \" +\n \"wfepRadioGroupColumn3 \";\n\n // enum TWizardFormElementType\n var TWizardFormElementType =\n \"wfetQueryParameter \" + \"wfetText \" + \"wfetDelimiter \" + \"wfetLabel \";\n\n // enum TWizardParamType\n var TWizardParamType =\n \"wptString \" +\n \"wptInteger \" +\n \"wptNumeric \" +\n \"wptBoolean \" +\n \"wptDateTime \" +\n \"wptPick \" +\n \"wptText \" +\n \"wptUser \" +\n \"wptUserList \" +\n \"wptEDocumentInfo \" +\n \"wptEDocumentInfoList \" +\n \"wptReferenceRecordInfo \" +\n \"wptReferenceRecordInfoList \" +\n \"wptFolderInfo \" +\n \"wptTaskInfo \" +\n \"wptContents \" +\n \"wptFileName \" +\n \"wptDate \";\n\n // enum TWizardStepResult\n var TWizardStepResult =\n \"wsrComplete \" +\n \"wsrGoNext \" +\n \"wsrGoPrevious \" +\n \"wsrCustom \" +\n \"wsrCancel \" +\n \"wsrGoFinal \";\n\n // enum TWizardStepType\n var TWizardStepType =\n \"wstForm \" +\n \"wstEDocument \" +\n \"wstTaskCard \" +\n \"wstReferenceRecordCard \" +\n \"wstFinal \";\n\n // enum TWorkAccessType\n var TWorkAccessType = \"waAll \" + \"waPerformers \" + \"waManual \";\n\n // enum TWorkflowBlockType\n var TWorkflowBlockType =\n \"wsbStart \" +\n \"wsbFinish \" +\n \"wsbNotice \" +\n \"wsbStep \" +\n \"wsbDecision \" +\n \"wsbWait \" +\n \"wsbMonitor \" +\n \"wsbScript \" +\n \"wsbConnector \" +\n \"wsbSubTask \" +\n \"wsbLifeCycleStage \" +\n \"wsbPause \";\n\n // enum TWorkflowDataType\n var TWorkflowDataType =\n \"wdtInteger \" +\n \"wdtFloat \" +\n \"wdtString \" +\n \"wdtPick \" +\n \"wdtDateTime \" +\n \"wdtBoolean \" +\n \"wdtTask \" +\n \"wdtJob \" +\n \"wdtFolder \" +\n \"wdtEDocument \" +\n \"wdtReferenceRecord \" +\n \"wdtUser \" +\n \"wdtGroup \" +\n \"wdtRole \" +\n \"wdtIntegerCollection \" +\n \"wdtFloatCollection \" +\n \"wdtStringCollection \" +\n \"wdtPickCollection \" +\n \"wdtDateTimeCollection \" +\n \"wdtBooleanCollection \" +\n \"wdtTaskCollection \" +\n \"wdtJobCollection \" +\n \"wdtFolderCollection \" +\n \"wdtEDocumentCollection \" +\n \"wdtReferenceRecordCollection \" +\n \"wdtUserCollection \" +\n \"wdtGroupCollection \" +\n \"wdtRoleCollection \" +\n \"wdtContents \" +\n \"wdtUserList \" +\n \"wdtSearchDescription \" +\n \"wdtDeadLine \" +\n \"wdtPickSet \" +\n \"wdtAccountCollection \";\n\n // enum TWorkImportance\n var TWorkImportance = \"wiLow \" + \"wiNormal \" + \"wiHigh \";\n\n // enum TWorkRouteType\n var TWorkRouteType = \"wrtSoft \" + \"wrtHard \";\n\n // enum TWorkState\n var TWorkState =\n \"wsInit \" +\n \"wsRunning \" +\n \"wsDone \" +\n \"wsControlled \" +\n \"wsAborted \" +\n \"wsContinued \";\n\n // enum TWorkTextBuildingMode\n var TWorkTextBuildingMode =\n \"wtmFull \" + \"wtmFromCurrent \" + \"wtmOnlyCurrent \";\n\n // Перечисления\n var ENUMS =\n TAccountType +\n TActionEnabledMode +\n TAddPosition +\n TAlignment +\n TAreaShowMode +\n TCertificateInvalidationReason +\n TCertificateType +\n TCheckListBoxItemState +\n TCloseOnEsc +\n TCompType +\n TConditionFormat +\n TConnectionIntent +\n TContentKind +\n TControlType +\n TCriterionContentType +\n TCultureType +\n TDataSetEventType +\n TDataSetState +\n TDateFormatType +\n TDateOffsetType +\n TDateTimeKind +\n TDeaAccessRights +\n TDocumentDefaultAction +\n TEditMode +\n TEditorCloseObservType +\n TEdmsApplicationAction +\n TEDocumentLockType +\n TEDocumentStepShowMode +\n TEDocumentStepVersionType +\n TEDocumentStorageFunction +\n TEDocumentStorageType +\n TEDocumentVersionSourceType +\n TEDocumentVersionState +\n TEncodeType +\n TExceptionCategory +\n TExportedSignaturesType +\n TExportedVersionType +\n TFieldDataType +\n TFolderType +\n TGridRowHeight +\n THyperlinkType +\n TImageFileFormat +\n TImageMode +\n TImageType +\n TInplaceHintKind +\n TISBLContext +\n TItemShow +\n TJobKind +\n TJoinType +\n TLabelPos +\n TLicensingType +\n TLifeCycleStageFontColor +\n TLifeCycleStageFontStyle +\n TLockableDevelopmentComponentType +\n TMaxRecordCountRestrictionType +\n TRangeValueType +\n TRelativeDate +\n TReportDestination +\n TReqDataType +\n TRequisiteEventType +\n TSBTimeType +\n TSearchShowMode +\n TSelectMode +\n TSignatureType +\n TSignerContentType +\n TStringsSortType +\n TStringValueType +\n TStructuredObjectAttributeType +\n TTaskAbortReason +\n TTextValueType +\n TUserObjectStatus +\n TUserType +\n TValuesBuildType +\n TViewMode +\n TViewSelectionMode +\n TWizardActionType +\n TWizardFormElementProperty +\n TWizardFormElementType +\n TWizardParamType +\n TWizardStepResult +\n TWizardStepType +\n TWorkAccessType +\n TWorkflowBlockType +\n TWorkflowDataType +\n TWorkImportance +\n TWorkRouteType +\n TWorkState +\n TWorkTextBuildingMode;\n\n // Системные функции ==> SYSFUNCTIONS\n var system_functions =\n \"AddSubString \" +\n \"AdjustLineBreaks \" +\n \"AmountInWords \" +\n \"Analysis \" +\n \"ArrayDimCount \" +\n \"ArrayHighBound \" +\n \"ArrayLowBound \" +\n \"ArrayOf \" +\n \"ArrayReDim \" +\n \"Assert \" +\n \"Assigned \" +\n \"BeginOfMonth \" +\n \"BeginOfPeriod \" +\n \"BuildProfilingOperationAnalysis \" +\n \"CallProcedure \" +\n \"CanReadFile \" +\n \"CArrayElement \" +\n \"CDataSetRequisite \" +\n \"ChangeDate \" +\n \"ChangeReferenceDataset \" +\n \"Char \" +\n \"CharPos \" +\n \"CheckParam \" +\n \"CheckParamValue \" +\n \"CompareStrings \" +\n \"ConstantExists \" +\n \"ControlState \" +\n \"ConvertDateStr \" +\n \"Copy \" +\n \"CopyFile \" +\n \"CreateArray \" +\n \"CreateCachedReference \" +\n \"CreateConnection \" +\n \"CreateDialog \" +\n \"CreateDualListDialog \" +\n \"CreateEditor \" +\n \"CreateException \" +\n \"CreateFile \" +\n \"CreateFolderDialog \" +\n \"CreateInputDialog \" +\n \"CreateLinkFile \" +\n \"CreateList \" +\n \"CreateLock \" +\n \"CreateMemoryDataSet \" +\n \"CreateObject \" +\n \"CreateOpenDialog \" +\n \"CreateProgress \" +\n \"CreateQuery \" +\n \"CreateReference \" +\n \"CreateReport \" +\n \"CreateSaveDialog \" +\n \"CreateScript \" +\n \"CreateSQLPivotFunction \" +\n \"CreateStringList \" +\n \"CreateTreeListSelectDialog \" +\n \"CSelectSQL \" +\n \"CSQL \" +\n \"CSubString \" +\n \"CurrentUserID \" +\n \"CurrentUserName \" +\n \"CurrentVersion \" +\n \"DataSetLocateEx \" +\n \"DateDiff \" +\n \"DateTimeDiff \" +\n \"DateToStr \" +\n \"DayOfWeek \" +\n \"DeleteFile \" +\n \"DirectoryExists \" +\n \"DisableCheckAccessRights \" +\n \"DisableCheckFullShowingRestriction \" +\n \"DisableMassTaskSendingRestrictions \" +\n \"DropTable \" +\n \"DupeString \" +\n \"EditText \" +\n \"EnableCheckAccessRights \" +\n \"EnableCheckFullShowingRestriction \" +\n \"EnableMassTaskSendingRestrictions \" +\n \"EndOfMonth \" +\n \"EndOfPeriod \" +\n \"ExceptionExists \" +\n \"ExceptionsOff \" +\n \"ExceptionsOn \" +\n \"Execute \" +\n \"ExecuteProcess \" +\n \"Exit \" +\n \"ExpandEnvironmentVariables \" +\n \"ExtractFileDrive \" +\n \"ExtractFileExt \" +\n \"ExtractFileName \" +\n \"ExtractFilePath \" +\n \"ExtractParams \" +\n \"FileExists \" +\n \"FileSize \" +\n \"FindFile \" +\n \"FindSubString \" +\n \"FirmContext \" +\n \"ForceDirectories \" +\n \"Format \" +\n \"FormatDate \" +\n \"FormatNumeric \" +\n \"FormatSQLDate \" +\n \"FormatString \" +\n \"FreeException \" +\n \"GetComponent \" +\n \"GetComponentLaunchParam \" +\n \"GetConstant \" +\n \"GetLastException \" +\n \"GetReferenceRecord \" +\n \"GetRefTypeByRefID \" +\n \"GetTableID \" +\n \"GetTempFolder \" +\n \"IfThen \" +\n \"In \" +\n \"IndexOf \" +\n \"InputDialog \" +\n \"InputDialogEx \" +\n \"InteractiveMode \" +\n \"IsFileLocked \" +\n \"IsGraphicFile \" +\n \"IsNumeric \" +\n \"Length \" +\n \"LoadString \" +\n \"LoadStringFmt \" +\n \"LocalTimeToUTC \" +\n \"LowerCase \" +\n \"Max \" +\n \"MessageBox \" +\n \"MessageBoxEx \" +\n \"MimeDecodeBinary \" +\n \"MimeDecodeString \" +\n \"MimeEncodeBinary \" +\n \"MimeEncodeString \" +\n \"Min \" +\n \"MoneyInWords \" +\n \"MoveFile \" +\n \"NewID \" +\n \"Now \" +\n \"OpenFile \" +\n \"Ord \" +\n \"Precision \" +\n \"Raise \" +\n \"ReadCertificateFromFile \" +\n \"ReadFile \" +\n \"ReferenceCodeByID \" +\n \"ReferenceNumber \" +\n \"ReferenceRequisiteMode \" +\n \"ReferenceRequisiteValue \" +\n \"RegionDateSettings \" +\n \"RegionNumberSettings \" +\n \"RegionTimeSettings \" +\n \"RegRead \" +\n \"RegWrite \" +\n \"RenameFile \" +\n \"Replace \" +\n \"Round \" +\n \"SelectServerCode \" +\n \"SelectSQL \" +\n \"ServerDateTime \" +\n \"SetConstant \" +\n \"SetManagedFolderFieldsState \" +\n \"ShowConstantsInputDialog \" +\n \"ShowMessage \" +\n \"Sleep \" +\n \"Split \" +\n \"SQL \" +\n \"SQL2XLSTAB \" +\n \"SQLProfilingSendReport \" +\n \"StrToDate \" +\n \"SubString \" +\n \"SubStringCount \" +\n \"SystemSetting \" +\n \"Time \" +\n \"TimeDiff \" +\n \"Today \" +\n \"Transliterate \" +\n \"Trim \" +\n \"UpperCase \" +\n \"UserStatus \" +\n \"UTCToLocalTime \" +\n \"ValidateXML \" +\n \"VarIsClear \" +\n \"VarIsEmpty \" +\n \"VarIsNull \" +\n \"WorkTimeDiff \" +\n \"WriteFile \" +\n \"WriteFileEx \" +\n \"WriteObjectHistory \" +\n \"Анализ \" +\n \"БазаДанных \" +\n \"БлокЕсть \" +\n \"БлокЕстьРасш \" +\n \"БлокИнфо \" +\n \"БлокСнять \" +\n \"БлокСнятьРасш \" +\n \"БлокУстановить \" +\n \"Ввод \" +\n \"ВводМеню \" +\n \"ВедС \" +\n \"ВедСпр \" +\n \"ВерхняяГраницаМассива \" +\n \"ВнешПрогр \" +\n \"Восст \" +\n \"ВременнаяПапка \" +\n \"Время \" +\n \"ВыборSQL \" +\n \"ВыбратьЗапись \" +\n \"ВыделитьСтр \" +\n \"Вызвать \" +\n \"Выполнить \" +\n \"ВыпПрогр \" +\n \"ГрафическийФайл \" +\n \"ГруппаДополнительно \" +\n \"ДатаВремяСерв \" +\n \"ДеньНедели \" +\n \"ДиалогДаНет \" +\n \"ДлинаСтр \" +\n \"ДобПодстр \" +\n \"ЕПусто \" +\n \"ЕслиТо \" +\n \"ЕЧисло \" +\n \"ЗамПодстр \" +\n \"ЗаписьСправочника \" +\n \"ЗначПоляСпр \" +\n \"ИДТипСпр \" +\n \"ИзвлечьДиск \" +\n \"ИзвлечьИмяФайла \" +\n \"ИзвлечьПуть \" +\n \"ИзвлечьРасширение \" +\n \"ИзмДат \" +\n \"ИзменитьРазмерМассива \" +\n \"ИзмеренийМассива \" +\n \"ИмяОрг \" +\n \"ИмяПоляСпр \" +\n \"Индекс \" +\n \"ИндикаторЗакрыть \" +\n \"ИндикаторОткрыть \" +\n \"ИндикаторШаг \" +\n \"ИнтерактивныйРежим \" +\n \"ИтогТблСпр \" +\n \"КодВидВедСпр \" +\n \"КодВидСпрПоИД \" +\n \"КодПоAnalit \" +\n \"КодСимвола \" +\n \"КодСпр \" +\n \"КолПодстр \" +\n \"КолПроп \" +\n \"КонМес \" +\n \"Конст \" +\n \"КонстЕсть \" +\n \"КонстЗнач \" +\n \"КонТран \" +\n \"КопироватьФайл \" +\n \"КопияСтр \" +\n \"КПериод \" +\n \"КСтрТблСпр \" +\n \"Макс \" +\n \"МаксСтрТблСпр \" +\n \"Массив \" +\n \"Меню \" +\n \"МенюРасш \" +\n \"Мин \" +\n \"НаборДанныхНайтиРасш \" +\n \"НаимВидСпр \" +\n \"НаимПоAnalit \" +\n \"НаимСпр \" +\n \"НастроитьПереводыСтрок \" +\n \"НачМес \" +\n \"НачТран \" +\n \"НижняяГраницаМассива \" +\n \"НомерСпр \" +\n \"НПериод \" +\n \"Окно \" +\n \"Окр \" +\n \"Окружение \" +\n \"ОтлИнфДобавить \" +\n \"ОтлИнфУдалить \" +\n \"Отчет \" +\n \"ОтчетАнал \" +\n \"ОтчетИнт \" +\n \"ПапкаСуществует \" +\n \"Пауза \" +\n \"ПВыборSQL \" +\n \"ПереименоватьФайл \" +\n \"Переменные \" +\n \"ПереместитьФайл \" +\n \"Подстр \" +\n \"ПоискПодстр \" +\n \"ПоискСтр \" +\n \"ПолучитьИДТаблицы \" +\n \"ПользовательДополнительно \" +\n \"ПользовательИД \" +\n \"ПользовательИмя \" +\n \"ПользовательСтатус \" +\n \"Прервать \" +\n \"ПроверитьПараметр \" +\n \"ПроверитьПараметрЗнач \" +\n \"ПроверитьУсловие \" +\n \"РазбСтр \" +\n \"РазнВремя \" +\n \"РазнДат \" +\n \"РазнДатаВремя \" +\n \"РазнРабВремя \" +\n \"РегУстВрем \" +\n \"РегУстДат \" +\n \"РегУстЧсл \" +\n \"РедТекст \" +\n \"РеестрЗапись \" +\n \"РеестрСписокИменПарам \" +\n \"РеестрЧтение \" +\n \"РеквСпр \" +\n \"РеквСпрПр \" +\n \"Сегодня \" +\n \"Сейчас \" +\n \"Сервер \" +\n \"СерверПроцессИД \" +\n \"СертификатФайлСчитать \" +\n \"СжПроб \" +\n \"Символ \" +\n \"СистемаДиректумКод \" +\n \"СистемаИнформация \" +\n \"СистемаКод \" +\n \"Содержит \" +\n \"СоединениеЗакрыть \" +\n \"СоединениеОткрыть \" +\n \"СоздатьДиалог \" +\n \"СоздатьДиалогВыбораИзДвухСписков \" +\n \"СоздатьДиалогВыбораПапки \" +\n \"СоздатьДиалогОткрытияФайла \" +\n \"СоздатьДиалогСохраненияФайла \" +\n \"СоздатьЗапрос \" +\n \"СоздатьИндикатор \" +\n \"СоздатьИсключение \" +\n \"СоздатьКэшированныйСправочник \" +\n \"СоздатьМассив \" +\n \"СоздатьНаборДанных \" +\n \"СоздатьОбъект \" +\n \"СоздатьОтчет \" +\n \"СоздатьПапку \" +\n \"СоздатьРедактор \" +\n \"СоздатьСоединение \" +\n \"СоздатьСписок \" +\n \"СоздатьСписокСтрок \" +\n \"СоздатьСправочник \" +\n \"СоздатьСценарий \" +\n \"СоздСпр \" +\n \"СостСпр \" +\n \"Сохр \" +\n \"СохрСпр \" +\n \"СписокСистем \" +\n \"Спр \" +\n \"Справочник \" +\n \"СпрБлокЕсть \" +\n \"СпрБлокСнять \" +\n \"СпрБлокСнятьРасш \" +\n \"СпрБлокУстановить \" +\n \"СпрИзмНабДан \" +\n \"СпрКод \" +\n \"СпрНомер \" +\n \"СпрОбновить \" +\n \"СпрОткрыть \" +\n \"СпрОтменить \" +\n \"СпрПарам \" +\n \"СпрПолеЗнач \" +\n \"СпрПолеИмя \" +\n \"СпрРекв \" +\n \"СпрРеквВведЗн \" +\n \"СпрРеквНовые \" +\n \"СпрРеквПр \" +\n \"СпрРеквПредЗн \" +\n \"СпрРеквРежим \" +\n \"СпрРеквТипТекст \" +\n \"СпрСоздать \" +\n \"СпрСост \" +\n \"СпрСохранить \" +\n \"СпрТблИтог \" +\n \"СпрТблСтр \" +\n \"СпрТблСтрКол \" +\n \"СпрТблСтрМакс \" +\n \"СпрТблСтрМин \" +\n \"СпрТблСтрПред \" +\n \"СпрТблСтрСлед \" +\n \"СпрТблСтрСозд \" +\n \"СпрТблСтрУд \" +\n \"СпрТекПредст \" +\n \"СпрУдалить \" +\n \"СравнитьСтр \" +\n \"СтрВерхРегистр \" +\n \"СтрНижнРегистр \" +\n \"СтрТблСпр \" +\n \"СумПроп \" +\n \"Сценарий \" +\n \"СценарийПарам \" +\n \"ТекВерсия \" +\n \"ТекОрг \" +\n \"Точн \" +\n \"Тран \" +\n \"Транслитерация \" +\n \"УдалитьТаблицу \" +\n \"УдалитьФайл \" +\n \"УдСпр \" +\n \"УдСтрТблСпр \" +\n \"Уст \" +\n \"УстановкиКонстант \" +\n \"ФайлАтрибутСчитать \" +\n \"ФайлАтрибутУстановить \" +\n \"ФайлВремя \" +\n \"ФайлВремяУстановить \" +\n \"ФайлВыбрать \" +\n \"ФайлЗанят \" +\n \"ФайлЗаписать \" +\n \"ФайлИскать \" +\n \"ФайлКопировать \" +\n \"ФайлМожноЧитать \" +\n \"ФайлОткрыть \" +\n \"ФайлПереименовать \" +\n \"ФайлПерекодировать \" +\n \"ФайлПереместить \" +\n \"ФайлПросмотреть \" +\n \"ФайлРазмер \" +\n \"ФайлСоздать \" +\n \"ФайлСсылкаСоздать \" +\n \"ФайлСуществует \" +\n \"ФайлСчитать \" +\n \"ФайлУдалить \" +\n \"ФмтSQLДат \" +\n \"ФмтДат \" +\n \"ФмтСтр \" +\n \"ФмтЧсл \" +\n \"Формат \" +\n \"ЦМассивЭлемент \" +\n \"ЦНаборДанныхРеквизит \" +\n \"ЦПодстр \";\n\n // Предопределенные переменные ==> built_in\n var predefined_variables =\n \"AltState \" +\n \"Application \" +\n \"CallType \" +\n \"ComponentTokens \" +\n \"CreatedJobs \" +\n \"CreatedNotices \" +\n \"ControlState \" +\n \"DialogResult \" +\n \"Dialogs \" +\n \"EDocuments \" +\n \"EDocumentVersionSource \" +\n \"Folders \" +\n \"GlobalIDs \" +\n \"Job \" +\n \"Jobs \" +\n \"InputValue \" +\n \"LookUpReference \" +\n \"LookUpRequisiteNames \" +\n \"LookUpSearch \" +\n \"Object \" +\n \"ParentComponent \" +\n \"Processes \" +\n \"References \" +\n \"Requisite \" +\n \"ReportName \" +\n \"Reports \" +\n \"Result \" +\n \"Scripts \" +\n \"Searches \" +\n \"SelectedAttachments \" +\n \"SelectedItems \" +\n \"SelectMode \" +\n \"Sender \" +\n \"ServerEvents \" +\n \"ServiceFactory \" +\n \"ShiftState \" +\n \"SubTask \" +\n \"SystemDialogs \" +\n \"Tasks \" +\n \"Wizard \" +\n \"Wizards \" +\n \"Work \" +\n \"ВызовСпособ \" +\n \"ИмяОтчета \" +\n \"РеквЗнач \";\n\n // Интерфейсы ==> type\n var interfaces =\n \"IApplication \" +\n \"IAccessRights \" +\n \"IAccountRepository \" +\n \"IAccountSelectionRestrictions \" +\n \"IAction \" +\n \"IActionList \" +\n \"IAdministrationHistoryDescription \" +\n \"IAnchors \" +\n \"IApplication \" +\n \"IArchiveInfo \" +\n \"IAttachment \" +\n \"IAttachmentList \" +\n \"ICheckListBox \" +\n \"ICheckPointedList \" +\n \"IColumn \" +\n \"IComponent \" +\n \"IComponentDescription \" +\n \"IComponentToken \" +\n \"IComponentTokenFactory \" +\n \"IComponentTokenInfo \" +\n \"ICompRecordInfo \" +\n \"IConnection \" +\n \"IContents \" +\n \"IControl \" +\n \"IControlJob \" +\n \"IControlJobInfo \" +\n \"IControlList \" +\n \"ICrypto \" +\n \"ICrypto2 \" +\n \"ICustomJob \" +\n \"ICustomJobInfo \" +\n \"ICustomListBox \" +\n \"ICustomObjectWizardStep \" +\n \"ICustomWork \" +\n \"ICustomWorkInfo \" +\n \"IDataSet \" +\n \"IDataSetAccessInfo \" +\n \"IDataSigner \" +\n \"IDateCriterion \" +\n \"IDateRequisite \" +\n \"IDateRequisiteDescription \" +\n \"IDateValue \" +\n \"IDeaAccessRights \" +\n \"IDeaObjectInfo \" +\n \"IDevelopmentComponentLock \" +\n \"IDialog \" +\n \"IDialogFactory \" +\n \"IDialogPickRequisiteItems \" +\n \"IDialogsFactory \" +\n \"IDICSFactory \" +\n \"IDocRequisite \" +\n \"IDocumentInfo \" +\n \"IDualListDialog \" +\n \"IECertificate \" +\n \"IECertificateInfo \" +\n \"IECertificates \" +\n \"IEditControl \" +\n \"IEditorForm \" +\n \"IEdmsExplorer \" +\n \"IEdmsObject \" +\n \"IEdmsObjectDescription \" +\n \"IEdmsObjectFactory \" +\n \"IEdmsObjectInfo \" +\n \"IEDocument \" +\n \"IEDocumentAccessRights \" +\n \"IEDocumentDescription \" +\n \"IEDocumentEditor \" +\n \"IEDocumentFactory \" +\n \"IEDocumentInfo \" +\n \"IEDocumentStorage \" +\n \"IEDocumentVersion \" +\n \"IEDocumentVersionListDialog \" +\n \"IEDocumentVersionSource \" +\n \"IEDocumentWizardStep \" +\n \"IEDocVerSignature \" +\n \"IEDocVersionState \" +\n \"IEnabledMode \" +\n \"IEncodeProvider \" +\n \"IEncrypter \" +\n \"IEvent \" +\n \"IEventList \" +\n \"IException \" +\n \"IExternalEvents \" +\n \"IExternalHandler \" +\n \"IFactory \" +\n \"IField \" +\n \"IFileDialog \" +\n \"IFolder \" +\n \"IFolderDescription \" +\n \"IFolderDialog \" +\n \"IFolderFactory \" +\n \"IFolderInfo \" +\n \"IForEach \" +\n \"IForm \" +\n \"IFormTitle \" +\n \"IFormWizardStep \" +\n \"IGlobalIDFactory \" +\n \"IGlobalIDInfo \" +\n \"IGrid \" +\n \"IHasher \" +\n \"IHistoryDescription \" +\n \"IHyperLinkControl \" +\n \"IImageButton \" +\n \"IImageControl \" +\n \"IInnerPanel \" +\n \"IInplaceHint \" +\n \"IIntegerCriterion \" +\n \"IIntegerList \" +\n \"IIntegerRequisite \" +\n \"IIntegerValue \" +\n \"IISBLEditorForm \" +\n \"IJob \" +\n \"IJobDescription \" +\n \"IJobFactory \" +\n \"IJobForm \" +\n \"IJobInfo \" +\n \"ILabelControl \" +\n \"ILargeIntegerCriterion \" +\n \"ILargeIntegerRequisite \" +\n \"ILargeIntegerValue \" +\n \"ILicenseInfo \" +\n \"ILifeCycleStage \" +\n \"IList \" +\n \"IListBox \" +\n \"ILocalIDInfo \" +\n \"ILocalization \" +\n \"ILock \" +\n \"IMemoryDataSet \" +\n \"IMessagingFactory \" +\n \"IMetadataRepository \" +\n \"INotice \" +\n \"INoticeInfo \" +\n \"INumericCriterion \" +\n \"INumericRequisite \" +\n \"INumericValue \" +\n \"IObject \" +\n \"IObjectDescription \" +\n \"IObjectImporter \" +\n \"IObjectInfo \" +\n \"IObserver \" +\n \"IPanelGroup \" +\n \"IPickCriterion \" +\n \"IPickProperty \" +\n \"IPickRequisite \" +\n \"IPickRequisiteDescription \" +\n \"IPickRequisiteItem \" +\n \"IPickRequisiteItems \" +\n \"IPickValue \" +\n \"IPrivilege \" +\n \"IPrivilegeList \" +\n \"IProcess \" +\n \"IProcessFactory \" +\n \"IProcessMessage \" +\n \"IProgress \" +\n \"IProperty \" +\n \"IPropertyChangeEvent \" +\n \"IQuery \" +\n \"IReference \" +\n \"IReferenceCriterion \" +\n \"IReferenceEnabledMode \" +\n \"IReferenceFactory \" +\n \"IReferenceHistoryDescription \" +\n \"IReferenceInfo \" +\n \"IReferenceRecordCardWizardStep \" +\n \"IReferenceRequisiteDescription \" +\n \"IReferencesFactory \" +\n \"IReferenceValue \" +\n \"IRefRequisite \" +\n \"IReport \" +\n \"IReportFactory \" +\n \"IRequisite \" +\n \"IRequisiteDescription \" +\n \"IRequisiteDescriptionList \" +\n \"IRequisiteFactory \" +\n \"IRichEdit \" +\n \"IRouteStep \" +\n \"IRule \" +\n \"IRuleList \" +\n \"ISchemeBlock \" +\n \"IScript \" +\n \"IScriptFactory \" +\n \"ISearchCriteria \" +\n \"ISearchCriterion \" +\n \"ISearchDescription \" +\n \"ISearchFactory \" +\n \"ISearchFolderInfo \" +\n \"ISearchForObjectDescription \" +\n \"ISearchResultRestrictions \" +\n \"ISecuredContext \" +\n \"ISelectDialog \" +\n \"IServerEvent \" +\n \"IServerEventFactory \" +\n \"IServiceDialog \" +\n \"IServiceFactory \" +\n \"ISignature \" +\n \"ISignProvider \" +\n \"ISignProvider2 \" +\n \"ISignProvider3 \" +\n \"ISimpleCriterion \" +\n \"IStringCriterion \" +\n \"IStringList \" +\n \"IStringRequisite \" +\n \"IStringRequisiteDescription \" +\n \"IStringValue \" +\n \"ISystemDialogsFactory \" +\n \"ISystemInfo \" +\n \"ITabSheet \" +\n \"ITask \" +\n \"ITaskAbortReasonInfo \" +\n \"ITaskCardWizardStep \" +\n \"ITaskDescription \" +\n \"ITaskFactory \" +\n \"ITaskInfo \" +\n \"ITaskRoute \" +\n \"ITextCriterion \" +\n \"ITextRequisite \" +\n \"ITextValue \" +\n \"ITreeListSelectDialog \" +\n \"IUser \" +\n \"IUserList \" +\n \"IValue \" +\n \"IView \" +\n \"IWebBrowserControl \" +\n \"IWizard \" +\n \"IWizardAction \" +\n \"IWizardFactory \" +\n \"IWizardFormElement \" +\n \"IWizardParam \" +\n \"IWizardPickParam \" +\n \"IWizardReferenceParam \" +\n \"IWizardStep \" +\n \"IWorkAccessRights \" +\n \"IWorkDescription \" +\n \"IWorkflowAskableParam \" +\n \"IWorkflowAskableParams \" +\n \"IWorkflowBlock \" +\n \"IWorkflowBlockResult \" +\n \"IWorkflowEnabledMode \" +\n \"IWorkflowParam \" +\n \"IWorkflowPickParam \" +\n \"IWorkflowReferenceParam \" +\n \"IWorkState \" +\n \"IWorkTreeCustomNode \" +\n \"IWorkTreeJobNode \" +\n \"IWorkTreeTaskNode \" +\n \"IXMLEditorForm \" +\n \"SBCrypto \";\n\n // built_in : встроенные или библиотечные объекты (константы, перечисления)\n var BUILTIN = CONSTANTS + ENUMS;\n\n // class: встроенные наборы значений, системные объекты, фабрики\n var CLASS = predefined_variables;\n\n // literal : примитивные типы\n var LITERAL = \"null true false nil \";\n\n // number : числа\n var NUMBERS = {\n className: \"number\",\n begin: hljs.NUMBER_RE,\n relevance: 0,\n };\n\n // string : строки\n var STRINGS = {\n className: \"string\",\n variants: [{ begin: '\"', end: '\"' }, { begin: \"'\", end: \"'\" }],\n };\n\n // Токены\n var DOCTAGS = {\n className: \"doctag\",\n begin: \"\\\\b(?:TODO|DONE|BEGIN|END|STUB|CHG|FIXME|NOTE|BUG|XXX)\\\\b\",\n relevance: 0,\n };\n\n // Однострочный комментарий\n var ISBL_LINE_COMMENT_MODE = {\n className: \"comment\",\n begin: \"//\",\n end: \"$\",\n relevance: 0,\n contains: [hljs.PHRASAL_WORDS_MODE, DOCTAGS],\n };\n\n // Многострочный комментарий\n var ISBL_BLOCK_COMMENT_MODE = {\n className: \"comment\",\n begin: \"/\\\\*\",\n end: \"\\\\*/\",\n relevance: 0,\n contains: [hljs.PHRASAL_WORDS_MODE, DOCTAGS],\n };\n\n // comment : комментарии\n var COMMENTS = {\n variants: [ISBL_LINE_COMMENT_MODE, ISBL_BLOCK_COMMENT_MODE],\n };\n\n // keywords : ключевые слова\n var KEYWORDS = {\n keyword: KEYWORD,\n built_in: BUILTIN,\n class: CLASS,\n literal: LITERAL,\n };\n\n // methods : методы\n var METHODS = {\n begin: \"\\\\.\\\\s*\" + hljs.UNDERSCORE_IDENT_RE,\n keywords: KEYWORDS,\n relevance: 0,\n };\n\n // type : встроенные типы\n var TYPES = {\n className: \"type\",\n begin: \":[ \\\\t]*(\" + interfaces.trim().replace(/\\s/g, \"|\") + \")\",\n end: \"[ \\\\t]*=\",\n excludeEnd: true,\n };\n\n // variables : переменные\n var VARIABLES = {\n className: \"variable\",\n lexemes: UNDERSCORE_IDENT_RE,\n keywords: KEYWORDS,\n begin: UNDERSCORE_IDENT_RE,\n relevance: 0,\n containts: [TYPES, METHODS],\n };\n\n // Имена функций\n var FUNCTION_TITLE = FUNCTION_NAME_IDENT_RE + \"\\\\(\";\n\n var TITLE_MODE = {\n className: \"title\",\n lexemes: UNDERSCORE_IDENT_RE,\n keywords: {\n built_in: system_functions,\n },\n begin: FUNCTION_TITLE,\n end: \"\\\\(\",\n returnBegin: true,\n excludeEnd: true,\n };\n\n // function : функции\n var FUNCTIONS = {\n className: \"function\",\n begin: FUNCTION_TITLE,\n end: \"\\\\)$\",\n returnBegin: true,\n lexemes: UNDERSCORE_IDENT_RE,\n keywords: KEYWORDS,\n illegal: \"[\\\\[\\\\]\\\\|\\\\$\\\\?%,~#@]\",\n contains: [TITLE_MODE, METHODS, VARIABLES, STRINGS, NUMBERS, COMMENTS],\n };\n\n return {\n aliases: [\"isbl\"],\n case_insensitive: true,\n lexemes: UNDERSCORE_IDENT_RE,\n keywords: KEYWORDS,\n illegal: \"\\\\$|\\\\?|%|,|;$|~|#|@|</\",\n contains: [\n FUNCTIONS,\n TYPES,\n METHODS,\n VARIABLES,\n STRINGS,\n NUMBERS,\n COMMENTS,\n ],\n };\n};","module.exports = function(hljs) {\n var JAVA_IDENT_RE = '[\\u00C0-\\u02B8a-zA-Z_$][\\u00C0-\\u02B8a-zA-Z_$0-9]*';\n var GENERIC_IDENT_RE = JAVA_IDENT_RE + '(<' + JAVA_IDENT_RE + '(\\\\s*,\\\\s*' + JAVA_IDENT_RE + ')*>)?';\n var KEYWORDS =\n 'false synchronized int abstract float private char boolean var static null if const ' +\n 'for true while long strictfp finally protected import native final void ' +\n 'enum else break transient catch instanceof byte super volatile case assert short ' +\n 'package default double public try this switch continue throws protected public private ' +\n 'module requires exports do';\n\n // https://docs.oracle.com/javase/7/docs/technotes/guides/language/underscores-literals.html\n var JAVA_NUMBER_RE = '\\\\b' +\n '(' +\n '0[bB]([01]+[01_]+[01]+|[01]+)' + // 0b...\n '|' +\n '0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)' + // 0x...\n '|' +\n '(' +\n '([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)(\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))?' +\n '|' +\n '\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)' +\n ')' +\n '([eE][-+]?\\\\d+)?' + // octal, decimal, float\n ')' +\n '[lLfF]?';\n var JAVA_NUMBER_MODE = {\n className: 'number',\n begin: JAVA_NUMBER_RE,\n relevance: 0\n };\n\n return {\n aliases: ['jsp'],\n keywords: KEYWORDS,\n illegal: /<\\/|#/,\n contains: [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance : 0,\n contains : [\n {\n // eat up @'s in emails to prevent them to be recognized as doctags\n begin: /\\w+@/, relevance: 0\n },\n {\n className : 'doctag',\n begin : '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'class',\n beginKeywords: 'class interface', end: /[{;=]/, excludeEnd: true,\n keywords: 'class interface',\n illegal: /[:\"\\[\\]]/,\n contains: [\n {beginKeywords: 'extends implements'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n // Expression keywords prevent 'keyword Name(...)' from being\n // recognized as a function definition\n beginKeywords: 'new throw return else',\n relevance: 0\n },\n {\n className: 'function',\n begin: '(' + GENERIC_IDENT_RE + '\\\\s+)+' + hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(', returnBegin: true, end: /[{;=]/,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\n relevance: 0,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n JAVA_NUMBER_MODE,\n {\n className: 'meta', begin: '@[A-Za-z]+'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\n var KEYWORDS = {\n keyword:\n 'in of if for while finally var new function do return void else break catch ' +\n 'instanceof with throw case default try this switch continue typeof delete ' +\n 'let yield const export super debugger as async await static ' +\n // ECMAScript 6 modules import\n 'import from as'\n ,\n literal:\n 'true false null undefined NaN Infinity',\n built_in:\n 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\n 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\n 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\n 'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\n 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\n 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\n 'module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect ' +\n 'Promise'\n };\n var EXPRESSIONS;\n var NUMBER = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0[bB][01]+)' },\n { begin: '\\\\b(0[oO][0-7]+)' },\n { begin: hljs.C_NUMBER_RE }\n ],\n relevance: 0\n };\n var SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{', end: '\\\\}',\n keywords: KEYWORDS,\n contains: [] // defined later\n };\n var TEMPLATE_STRING = {\n className: 'string',\n begin: '`', end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n SUBST.contains = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n TEMPLATE_STRING,\n NUMBER,\n hljs.REGEXP_MODE\n ]\n var PARAMS_CONTAINS = SUBST.contains.concat([\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]);\n\n return {\n aliases: ['js', 'jsx'],\n keywords: KEYWORDS,\n contains: [\n {\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n },\n {\n className: 'meta',\n begin: /^#!/, end: /$/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n TEMPLATE_STRING,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBER,\n { // object attr container\n begin: /[{,]\\s*/, relevance: 0,\n contains: [\n {\n begin: IDENT_RE + '\\\\s*:', returnBegin: true,\n relevance: 0,\n contains: [{className: 'attr', begin: IDENT_RE, relevance: 0}]\n }\n ]\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n begin: '(\\\\(.*?\\\\)|' + IDENT_RE + ')\\\\s*=>', returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: IDENT_RE\n },\n {\n begin: /\\(\\s*\\)/,\n },\n {\n begin: /\\(/, end: /\\)/,\n excludeBegin: true, excludeEnd: true,\n keywords: KEYWORDS,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n { // E4X / JSX\n begin: /</, end: /(\\/\\w+|\\w+\\/)>/,\n subLanguage: 'xml',\n contains: [\n {begin: /<\\w+\\s*\\/>/, skip: true},\n {\n begin: /<\\w+/, end: /(\\/\\w+|\\w+\\/)>/, skip: true,\n contains: [\n {begin: /<\\w+\\s*\\/>/, skip: true},\n 'self'\n ]\n }\n ]\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n beginKeywords: 'function', end: /\\{/, excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: IDENT_RE}),\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n contains: PARAMS_CONTAINS\n }\n ],\n illegal: /\\[|%/\n },\n {\n begin: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n },\n hljs.METHOD_GUARD,\n { // ES6 class\n className: 'class',\n beginKeywords: 'class', end: /[{;=]/, excludeEnd: true,\n illegal: /[:\"\\[\\]]/,\n contains: [\n {beginKeywords: 'extends'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n beginKeywords: 'constructor', end: /\\{/, excludeEnd: true\n }\n ],\n illegal: /#(?!!)/\n };\n};","module.exports = function (hljs) {\n var PARAM = {\n begin: /[\\w-]+ *=/, returnBegin: true,\n relevance: 0,\n contains: [{className: 'attr', begin: /[\\w-]+/}]\n };\n var PARAMSBLOCK = {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n contains: [PARAM],\n relevance : 0\n };\n var OPERATION = {\n className: 'function',\n begin: /:[\\w\\-.]+/,\n relevance: 0\n };\n var PATH = {\n className: 'string',\n begin: /\\B(([\\/.])[\\w\\-.\\/=]+)+/,\n };\n var COMMAND_PARAMS = {\n className: 'params',\n begin: /--[\\w\\-=\\/]+/,\n };\n return {\n aliases: ['wildfly-cli'],\n lexemes: '[a-z\\-]+',\n keywords: {\n keyword: 'alias batch cd clear command connect connection-factory connection-info data-source deploy ' +\n 'deployment-info deployment-overlay echo echo-dmr help history if jdbc-driver-info jms-queue|20 jms-topic|20 ls ' +\n 'patch pwd quit read-attribute read-operation reload rollout-plan run-batch set shutdown try unalias ' +\n 'undeploy unset version xa-data-source', // module\n literal: 'true false'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n COMMAND_PARAMS,\n OPERATION,\n PATH,\n PARAMSBLOCK\n ]\n }\n};","module.exports = function(hljs) {\n var LITERALS = {literal: 'true false null'};\n var TYPES = [\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ];\n var VALUE_CONTAINER = {\n end: ',', endsWithParent: true, excludeEnd: true,\n contains: TYPES,\n keywords: LITERALS\n };\n var OBJECT = {\n begin: '{', end: '}',\n contains: [\n {\n className: 'attr',\n begin: /\"/, end: /\"/,\n contains: [hljs.BACKSLASH_ESCAPE],\n illegal: '\\\\n',\n },\n hljs.inherit(VALUE_CONTAINER, {begin: /:/})\n ],\n illegal: '\\\\S'\n };\n var ARRAY = {\n begin: '\\\\[', end: '\\\\]',\n contains: [hljs.inherit(VALUE_CONTAINER)], // inherit is a workaround for a bug that makes shared modes with endsWithParent compile only the ending of one of the parents\n illegal: '\\\\S'\n };\n TYPES.splice(TYPES.length, 0, OBJECT, ARRAY);\n return {\n contains: TYPES,\n keywords: LITERALS,\n illegal: '\\\\S'\n };\n};","module.exports = function(hljs) {\n // Since there are numerous special names in Julia, it is too much trouble\n // to maintain them by hand. Hence these names (i.e. keywords, literals and\n // built-ins) are automatically generated from Julia v0.6 itself through\n // the following scripts for each.\n\n var KEYWORDS = {\n // # keyword generator, multi-word keywords handled manually below\n // foreach(println, [\"in\", \"isa\", \"where\"])\n // for kw in Base.REPLCompletions.complete_keyword(\"\")\n // if !(contains(kw, \" \") || kw == \"struct\")\n // println(kw)\n // end\n // end\n keyword:\n 'in isa where ' +\n 'baremodule begin break catch ccall const continue do else elseif end export false finally for function ' +\n 'global if import importall let local macro module quote return true try using while ' +\n // legacy, to be deprecated in the next release\n 'type immutable abstract bitstype typealias ',\n\n // # literal generator\n // println(\"true\")\n // println(\"false\")\n // for name in Base.REPLCompletions.completions(\"\", 0)[1]\n // try\n // v = eval(Symbol(name))\n // if !(v isa Function || v isa Type || v isa TypeVar || v isa Module || v isa Colon)\n // println(name)\n // end\n // end\n // end\n literal:\n 'true false ' +\n 'ARGS C_NULL DevNull ENDIAN_BOM ENV I Inf Inf16 Inf32 Inf64 InsertionSort JULIA_HOME LOAD_PATH MergeSort ' +\n 'NaN NaN16 NaN32 NaN64 PROGRAM_FILE QuickSort RoundDown RoundFromZero RoundNearest RoundNearestTiesAway ' +\n 'RoundNearestTiesUp RoundToZero RoundUp STDERR STDIN STDOUT VERSION catalan e|0 eu|0 eulergamma golden im ' +\n 'nothing pi γ π φ ',\n\n // # built_in generator:\n // for name in Base.REPLCompletions.completions(\"\", 0)[1]\n // try\n // v = eval(Symbol(name))\n // if v isa Type || v isa TypeVar\n // println(name)\n // end\n // end\n // end\n built_in:\n 'ANY AbstractArray AbstractChannel AbstractFloat AbstractMatrix AbstractRNG AbstractSerializer AbstractSet ' +\n 'AbstractSparseArray AbstractSparseMatrix AbstractSparseVector AbstractString AbstractUnitRange AbstractVecOrMat ' +\n 'AbstractVector Any ArgumentError Array AssertionError Associative Base64DecodePipe Base64EncodePipe Bidiagonal '+\n 'BigFloat BigInt BitArray BitMatrix BitVector Bool BoundsError BufferStream CachingPool CapturedException ' +\n 'CartesianIndex CartesianRange Cchar Cdouble Cfloat Channel Char Cint Cintmax_t Clong Clonglong ClusterManager ' +\n 'Cmd CodeInfo Colon Complex Complex128 Complex32 Complex64 CompositeException Condition ConjArray ConjMatrix ' +\n 'ConjVector Cptrdiff_t Cshort Csize_t Cssize_t Cstring Cuchar Cuint Cuintmax_t Culong Culonglong Cushort Cwchar_t ' +\n 'Cwstring DataType Date DateFormat DateTime DenseArray DenseMatrix DenseVecOrMat DenseVector Diagonal Dict ' +\n 'DimensionMismatch Dims DirectIndexString Display DivideError DomainError EOFError EachLine Enum Enumerate ' +\n 'ErrorException Exception ExponentialBackOff Expr Factorization FileMonitor Float16 Float32 Float64 Function ' +\n 'Future GlobalRef GotoNode HTML Hermitian IO IOBuffer IOContext IOStream IPAddr IPv4 IPv6 IndexCartesian IndexLinear ' +\n 'IndexStyle InexactError InitError Int Int128 Int16 Int32 Int64 Int8 IntSet Integer InterruptException ' +\n 'InvalidStateException Irrational KeyError LabelNode LinSpace LineNumberNode LoadError LowerTriangular MIME Matrix ' +\n 'MersenneTwister Method MethodError MethodTable Module NTuple NewvarNode NullException Nullable Number ObjectIdDict ' +\n 'OrdinalRange OutOfMemoryError OverflowError Pair ParseError PartialQuickSort PermutedDimsArray Pipe ' +\n 'PollingFileWatcher ProcessExitedException Ptr QuoteNode RandomDevice Range RangeIndex Rational RawFD ' +\n 'ReadOnlyMemoryError Real ReentrantLock Ref Regex RegexMatch RemoteChannel RemoteException RevString RoundingMode ' +\n 'RowVector SSAValue SegmentationFault SerializationState Set SharedArray SharedMatrix SharedVector Signed ' +\n 'SimpleVector Slot SlotNumber SparseMatrixCSC SparseVector StackFrame StackOverflowError StackTrace StepRange ' +\n 'StepRangeLen StridedArray StridedMatrix StridedVecOrMat StridedVector String SubArray SubString SymTridiagonal ' +\n 'Symbol Symmetric SystemError TCPSocket Task Text TextDisplay Timer Tridiagonal Tuple Type TypeError TypeMapEntry ' +\n 'TypeMapLevel TypeName TypeVar TypedSlot UDPSocket UInt UInt128 UInt16 UInt32 UInt64 UInt8 UndefRefError UndefVarError ' +\n 'UnicodeError UniformScaling Union UnionAll UnitRange Unsigned UpperTriangular Val Vararg VecElement VecOrMat Vector ' +\n 'VersionNumber Void WeakKeyDict WeakRef WorkerConfig WorkerPool '\n };\n\n // ref: http://julia.readthedocs.org/en/latest/manual/variables/#allowed-variable-names\n var VARIABLE_NAME_RE = '[A-Za-z_\\\\u00A1-\\\\uFFFF][A-Za-z_0-9\\\\u00A1-\\\\uFFFF]*';\n\n // placeholder for recursive self-reference\n var DEFAULT = {\n lexemes: VARIABLE_NAME_RE, keywords: KEYWORDS, illegal: /<\\//\n };\n\n // ref: http://julia.readthedocs.org/en/latest/manual/integers-and-floating-point-numbers/\n var NUMBER = {\n className: 'number',\n // supported numeric literals:\n // * binary literal (e.g. 0x10)\n // * octal literal (e.g. 0o76543210)\n // * hexadecimal literal (e.g. 0xfedcba876543210)\n // * hexadecimal floating point literal (e.g. 0x1p0, 0x1.2p2)\n // * decimal literal (e.g. 9876543210, 100_000_000)\n // * floating pointe literal (e.g. 1.2, 1.2f, .2, 1., 1.2e10, 1.2e-10)\n begin: /(\\b0x[\\d_]*(\\.[\\d_]*)?|0x\\.\\d[\\d_]*)p[-+]?\\d+|\\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\\b\\d[\\d_]*(\\.[\\d_]*)?|\\.\\d[\\d_]*)([eEfF][-+]?\\d+)?/,\n relevance: 0\n };\n\n var CHAR = {\n className: 'string',\n begin: /'(.|\\\\[xXuU][a-zA-Z0-9]+)'/\n };\n\n var INTERPOLATION = {\n className: 'subst',\n begin: /\\$\\(/, end: /\\)/,\n keywords: KEYWORDS\n };\n\n var INTERPOLATED_VARIABLE = {\n className: 'variable',\n begin: '\\\\$' + VARIABLE_NAME_RE\n };\n\n // TODO: neatly escape normal code in string literal\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, INTERPOLATION, INTERPOLATED_VARIABLE],\n variants: [\n { begin: /\\w*\"\"\"/, end: /\"\"\"\\w*/, relevance: 10 },\n { begin: /\\w*\"/, end: /\"\\w*/ }\n ]\n };\n\n var COMMAND = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, INTERPOLATION, INTERPOLATED_VARIABLE],\n begin: '`', end: '`'\n };\n\n var MACROCALL = {\n className: 'meta',\n begin: '@' + VARIABLE_NAME_RE\n };\n\n var COMMENT = {\n className: 'comment',\n variants: [\n { begin: '#=', end: '=#', relevance: 10 },\n { begin: '#', end: '$' }\n ]\n };\n\n DEFAULT.contains = [\n NUMBER,\n CHAR,\n STRING,\n COMMAND,\n MACROCALL,\n COMMENT,\n hljs.HASH_COMMENT_MODE,\n {\n className: 'keyword',\n begin:\n '\\\\b(((abstract|primitive)\\\\s+)type|(mutable\\\\s+)?struct)\\\\b'\n },\n {begin: /<:/} // relevance booster\n ];\n INTERPOLATION.contains = DEFAULT.contains;\n\n return DEFAULT;\n};","module.exports = function(hljs) {\n return {\n contains: [\n {\n className: 'meta',\n begin: /^julia>/,\n relevance: 10,\n starts: {\n // end the highlighting if we are on a new line and the line does not have at\n // least six spaces in the beginning\n end: /^(?![ ]{6})/,\n subLanguage: 'julia'\n },\n // jldoctest Markdown blocks are used in the Julia manual and package docs indicate\n // code snippets that should be verified when the documentation is built. They can be\n // either REPL-like or script-like, but are usually REPL-like and therefore we apply\n // julia-repl highlighting to them. More information can be found in Documenter's\n // manual: https://juliadocs.github.io/Documenter.jl/latest/man/doctests.html\n aliases: ['jldoctest']\n }\n ]\n }\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'abstract as val var vararg get set class object open private protected public noinline ' +\n 'crossinline dynamic final enum if else do while for when throw try catch finally ' +\n 'import package is in fun override companion reified inline lateinit init ' +\n 'interface annotation data sealed internal infix operator out by constructor super ' +\n 'tailrec where const inner suspend typealias external expect actual ' +\n // to be deleted soon\n 'trait volatile transient native default',\n built_in:\n 'Byte Short Char Int Long Boolean Float Double Void Unit Nothing',\n literal:\n 'true false null'\n };\n var KEYWORDS_WITH_LABEL = {\n className: 'keyword',\n begin: /\\b(break|continue|return|this)\\b/,\n starts: {\n contains: [\n {\n className: 'symbol',\n begin: /@\\w+/\n }\n ]\n }\n };\n var LABEL = {\n className: 'symbol', begin: hljs.UNDERSCORE_IDENT_RE + '@'\n };\n\n // for string templates\n var SUBST = {\n className: 'subst',\n begin: '\\\\${', end: '}', contains: [hljs.APOS_STRING_MODE, hljs.C_NUMBER_MODE]\n };\n var VARIABLE = {\n className: 'variable', begin: '\\\\$' + hljs.UNDERSCORE_IDENT_RE\n };\n var STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"\"\"', end: '\"\"\"',\n contains: [VARIABLE, SUBST]\n },\n // Can't use built-in modes easily, as we want to use STRING in the meta\n // context as 'meta-string' and there's no syntax to remove explicitly set\n // classNames in built-in modes.\n {\n begin: '\\'', end: '\\'',\n illegal: /\\n/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\"', end: '\"',\n illegal: /\\n/,\n contains: [hljs.BACKSLASH_ESCAPE, VARIABLE, SUBST]\n }\n ]\n };\n\n var ANNOTATION_USE_SITE = {\n className: 'meta', begin: '@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\\\s*:(?:\\\\s*' + hljs.UNDERSCORE_IDENT_RE + ')?'\n };\n var ANNOTATION = {\n className: 'meta', begin: '@' + hljs.UNDERSCORE_IDENT_RE,\n contains: [\n {\n begin: /\\(/, end: /\\)/,\n contains: [\n hljs.inherit(STRING, {className: 'meta-string'})\n ]\n }\n ]\n };\n\n // https://kotlinlang.org/docs/reference/whatsnew11.html#underscores-in-numeric-literals\n // According to the doc above, the number mode of kotlin is the same as java 8,\n // so the code below is copied from java.js\n var KOTLIN_NUMBER_RE = '\\\\b' +\n '(' +\n '0[bB]([01]+[01_]+[01]+|[01]+)' + // 0b...\n '|' +\n '0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)' + // 0x...\n '|' +\n '(' +\n '([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)(\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))?' +\n '|' +\n '\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)' +\n ')' +\n '([eE][-+]?\\\\d+)?' + // octal, decimal, float\n ')' +\n '[lLfF]?';\n var KOTLIN_NUMBER_MODE = {\n className: 'number',\n begin: KOTLIN_NUMBER_RE,\n relevance: 0\n };\n\n return {\n aliases: ['kt'],\n keywords: KEYWORDS,\n contains : [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance : 0,\n contains : [{\n className : 'doctag',\n begin : '@[A-Za-z]+'\n }]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n KEYWORDS_WITH_LABEL,\n LABEL,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n {\n className: 'function',\n beginKeywords: 'fun', end: '[(]|$',\n returnBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n illegal: /fun\\s+(<.*>)?[^\\s\\(]+(\\s+[^\\s\\(]+)\\s*=/,\n relevance: 5,\n contains: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\n relevance: 0,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n className: 'type',\n begin: /</, end: />/, keywords: 'reified',\n relevance: 0\n },\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n endsParent: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n {\n begin: /:/, end: /[=,\\/]/, endsWithParent: true,\n contains: [\n {className: 'type', begin: hljs.UNDERSCORE_IDENT_RE},\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n relevance: 0\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n STRING,\n hljs.C_NUMBER_MODE\n ]\n },\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface trait', end: /[:\\{(]|$/, // remove 'trait' when removed from KEYWORDS\n excludeEnd: true,\n illegal: 'extends implements',\n contains: [\n {beginKeywords: 'public protected internal private constructor'},\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'type',\n begin: /</, end: />/, excludeBegin: true, excludeEnd: true,\n relevance: 0\n },\n {\n className: 'type',\n begin: /[,:]\\s*/, end: /[<\\(,]|$/, excludeBegin: true, returnEnd: true\n },\n ANNOTATION_USE_SITE,\n ANNOTATION\n ]\n },\n STRING,\n {\n className: 'meta',\n begin: \"^#!/usr/bin/env\", end: '$',\n illegal: '\\n'\n },\n KOTLIN_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var LASSO_IDENT_RE = '[a-zA-Z_][\\\\w.]*';\n var LASSO_ANGLE_RE = '<\\\\?(lasso(script)?|=)';\n var LASSO_CLOSE_RE = '\\\\]|\\\\?>';\n var LASSO_KEYWORDS = {\n literal:\n 'true false none minimal full all void and or not ' +\n 'bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft',\n built_in:\n 'array date decimal duration integer map pair string tag xml null ' +\n 'boolean bytes keyword list locale queue set stack staticarray ' +\n 'local var variable global data self inherited currentcapture givenblock',\n keyword:\n 'cache database_names database_schemanames database_tablenames ' +\n 'define_tag define_type email_batch encode_set html_comment handle ' +\n 'handle_error header if inline iterate ljax_target link ' +\n 'link_currentaction link_currentgroup link_currentrecord link_detail ' +\n 'link_firstgroup link_firstrecord link_lastgroup link_lastrecord ' +\n 'link_nextgroup link_nextrecord link_prevgroup link_prevrecord log ' +\n 'loop namespace_using output_none portal private protect records ' +\n 'referer referrer repeating resultset rows search_args ' +\n 'search_arguments select sort_args sort_arguments thread_atomic ' +\n 'value_list while abort case else fail_if fail_ifnot fail if_empty ' +\n 'if_false if_null if_true loop_abort loop_continue loop_count params ' +\n 'params_up return return_value run_children soap_definetag ' +\n 'soap_lastrequest soap_lastresponse tag_name ascending average by ' +\n 'define descending do equals frozen group handle_failure import in ' +\n 'into join let match max min on order parent protected provide public ' +\n 'require returnhome skip split_thread sum take thread to trait type ' +\n 'where with yield yieldhome'\n };\n var HTML_COMMENT = hljs.COMMENT(\n '<!--',\n '-->',\n {\n relevance: 0\n }\n );\n var LASSO_NOPROCESS = {\n className: 'meta',\n begin: '\\\\[noprocess\\\\]',\n starts: {\n end: '\\\\[/noprocess\\\\]',\n returnEnd: true,\n contains: [HTML_COMMENT]\n }\n };\n var LASSO_START = {\n className: 'meta',\n begin: '\\\\[/noprocess|' + LASSO_ANGLE_RE\n };\n var LASSO_DATAMEMBER = {\n className: 'symbol',\n begin: '\\'' + LASSO_IDENT_RE + '\\''\n };\n var LASSO_CODE = [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.inherit(hljs.C_NUMBER_MODE, {begin: hljs.C_NUMBER_RE + '|(-?infinity|NaN)\\\\b'}),\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n {\n className: 'string',\n begin: '`', end: '`'\n },\n { // variables\n variants: [\n {\n begin: '[#$]' + LASSO_IDENT_RE\n },\n {\n begin: '#', end: '\\\\d+',\n illegal: '\\\\W'\n }\n ]\n },\n {\n className: 'type',\n begin: '::\\\\s*', end: LASSO_IDENT_RE,\n illegal: '\\\\W'\n },\n {\n className: 'params',\n variants: [\n {\n begin: '-(?!infinity)' + LASSO_IDENT_RE,\n relevance: 0\n },\n {\n begin: '(\\\\.\\\\.\\\\.)'\n }\n ]\n },\n {\n begin: /(->|\\.)\\s*/,\n relevance: 0,\n contains: [LASSO_DATAMEMBER]\n },\n {\n className: 'class',\n beginKeywords: 'define',\n returnEnd: true, end: '\\\\(|=>',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: LASSO_IDENT_RE + '(=(?!>))?|[-+*/%](?!>)'})\n ]\n }\n ];\n return {\n aliases: ['ls', 'lassoscript'],\n case_insensitive: true,\n lexemes: LASSO_IDENT_RE + '|&[lg]t;',\n keywords: LASSO_KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: LASSO_CLOSE_RE,\n relevance: 0,\n starts: { // markup\n end: '\\\\[|' + LASSO_ANGLE_RE,\n returnEnd: true,\n relevance: 0,\n contains: [HTML_COMMENT]\n }\n },\n LASSO_NOPROCESS,\n LASSO_START,\n {\n className: 'meta',\n begin: '\\\\[no_square_brackets',\n starts: {\n end: '\\\\[/no_square_brackets\\\\]', // not implemented in the language\n lexemes: LASSO_IDENT_RE + '|&[lg]t;',\n keywords: LASSO_KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: LASSO_CLOSE_RE,\n relevance: 0,\n starts: {\n end: '\\\\[noprocess\\\\]|' + LASSO_ANGLE_RE,\n returnEnd: true,\n contains: [HTML_COMMENT]\n }\n },\n LASSO_NOPROCESS,\n LASSO_START\n ].concat(LASSO_CODE)\n }\n },\n {\n className: 'meta',\n begin: '\\\\[',\n relevance: 0\n },\n {\n className: 'meta',\n begin: '^#!', end:'lasso9$',\n relevance: 10\n }\n ].concat(LASSO_CODE)\n };\n};","module.exports = function(hljs) {\n return {\n contains: [\n {\n className: 'attribute',\n begin: '^dn', end: ': ', excludeEnd: true,\n starts: {end: '$', relevance: 0},\n relevance: 10\n },\n {\n className: 'attribute',\n begin: '^\\\\w', end: ': ', excludeEnd: true,\n starts: {end: '$', relevance: 0}\n },\n {\n className: 'literal',\n begin: '^-', end: '$'\n },\n hljs.HASH_COMMENT_MODE\n ]\n };\n};","module.exports = function (hljs) {\n return {\n contains: [\n {\n className: 'function',\n begin: '#+' + '[A-Za-z_0-9]*' + '\\\\(',\n end:' {',\n returnBegin: true,\n excludeEnd: true,\n contains : [\n {\n className: 'keyword',\n begin: '#+'\n },\n {\n className: 'title',\n begin: '[A-Za-z_][A-Za-z_0-9]*'\n },\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n endsParent: true,\n contains: [\n {\n className: 'string',\n begin: '\"',\n end: '\"'\n },\n {\n className: 'variable',\n begin: '[A-Za-z_][A-Za-z_0-9]*'\n }\n ]\n }\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[\\\\w-]+'; // yes, Less identifiers may begin with a digit\n var INTERP_IDENT_RE = '(' + IDENT_RE + '|@{' + IDENT_RE + '})';\n\n /* Generic Modes */\n\n var RULES = [], VALUE = []; // forward def. for recursive modes\n\n var STRING_MODE = function(c) { return {\n // Less strings are not multiline (also include '~' for more consistent coloring of \"escaped\" strings)\n className: 'string', begin: '~?' + c + '.*?' + c\n };};\n\n var IDENT_MODE = function(name, begin, relevance) { return {\n className: name, begin: begin, relevance: relevance\n };};\n\n var PARENS_MODE = {\n // used only to properly balance nested parens inside mixin call, def. arg list\n begin: '\\\\(', end: '\\\\)', contains: VALUE, relevance: 0\n };\n\n // generic Less highlighter (used almost everywhere except selectors):\n VALUE.push(\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING_MODE(\"'\"),\n STRING_MODE('\"'),\n hljs.CSS_NUMBER_MODE, // fixme: it does not include dot for numbers like .5em :(\n {\n begin: '(url|data-uri)\\\\(',\n starts: {className: 'string', end: '[\\\\)\\\\n]', excludeEnd: true}\n },\n IDENT_MODE('number', '#[0-9A-Fa-f]+\\\\b'),\n PARENS_MODE,\n IDENT_MODE('variable', '@@?' + IDENT_RE, 10),\n IDENT_MODE('variable', '@{' + IDENT_RE + '}'),\n IDENT_MODE('built_in', '~?`[^`]*?`'), // inline javascript (or whatever host language) *multiline* string\n { // @media features (it’s here to not duplicate things in AT_RULE_MODE with extra PARENS_MODE overriding):\n className: 'attribute', begin: IDENT_RE + '\\\\s*:', end: ':', returnBegin: true, excludeEnd: true\n },\n {\n className: 'meta',\n begin: '!important'\n }\n );\n\n var VALUE_WITH_RULESETS = VALUE.concat({\n begin: '{', end: '}', contains: RULES\n });\n\n var MIXIN_GUARD_MODE = {\n beginKeywords: 'when', endsWithParent: true,\n contains: [{beginKeywords: 'and not'}].concat(VALUE) // using this form to override VALUE’s 'function' match\n };\n\n /* Rule-Level Modes */\n\n var RULE_MODE = {\n begin: INTERP_IDENT_RE + '\\\\s*:', returnBegin: true, end: '[;}]',\n relevance: 0,\n contains: [\n {\n className: 'attribute',\n begin: INTERP_IDENT_RE, end: ':', excludeEnd: true,\n starts: {\n endsWithParent: true, illegal: '[<=$]',\n relevance: 0,\n contains: VALUE\n }\n }\n ]\n };\n\n var AT_RULE_MODE = {\n className: 'keyword',\n begin: '@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\\\b',\n starts: {end: '[;{}]', returnEnd: true, contains: VALUE, relevance: 0}\n };\n\n // variable definitions and calls\n var VAR_RULE_MODE = {\n className: 'variable',\n variants: [\n // using more strict pattern for higher relevance to increase chances of Less detection.\n // this is *the only* Less specific statement used in most of the sources, so...\n // (we’ll still often loose to the css-parser unless there's '//' comment,\n // simply because 1 variable just can't beat 99 properties :)\n {begin: '@' + IDENT_RE + '\\\\s*:', relevance: 15},\n {begin: '@' + IDENT_RE}\n ],\n starts: {end: '[;}]', returnEnd: true, contains: VALUE_WITH_RULESETS}\n };\n\n var SELECTOR_MODE = {\n // first parse unambiguous selectors (i.e. those not starting with tag)\n // then fall into the scary lookahead-discriminator variant.\n // this mode also handles mixin definitions and calls\n variants: [{\n begin: '[\\\\.#:&\\\\[>]', end: '[;{}]' // mixin calls end with ';'\n }, {\n begin: INTERP_IDENT_RE, end: '{'\n }],\n returnBegin: true,\n returnEnd: true,\n illegal: '[<=\\'$\"]',\n relevance: 0,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n MIXIN_GUARD_MODE,\n IDENT_MODE('keyword', 'all\\\\b'),\n IDENT_MODE('variable', '@{' + IDENT_RE + '}'), // otherwise it’s identified as tag\n IDENT_MODE('selector-tag', INTERP_IDENT_RE + '%?', 0), // '%' for more consistent coloring of @keyframes \"tags\"\n IDENT_MODE('selector-id', '#' + INTERP_IDENT_RE),\n IDENT_MODE('selector-class', '\\\\.' + INTERP_IDENT_RE, 0),\n IDENT_MODE('selector-tag', '&', 0),\n {className: 'selector-attr', begin: '\\\\[', end: '\\\\]'},\n {className: 'selector-pseudo', begin: /:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"'.]+/},\n {begin: '\\\\(', end: '\\\\)', contains: VALUE_WITH_RULESETS}, // argument list of parametric mixins\n {begin: '!important'} // eat !important after mixin call or it will be colored as tag\n ]\n };\n\n RULES.push(\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n AT_RULE_MODE,\n VAR_RULE_MODE,\n RULE_MODE,\n SELECTOR_MODE\n );\n\n return {\n case_insensitive: true,\n illegal: '[=>\\'/<($\"]',\n contains: RULES\n };\n};","module.exports = function(hljs) {\n var LISP_IDENT_RE = '[a-zA-Z_\\\\-\\\\+\\\\*\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#][a-zA-Z0-9_\\\\-\\\\+\\\\*\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#!]*';\n var MEC_RE = '\\\\|[^]*?\\\\|';\n var LISP_SIMPLE_NUMBER_RE = '(\\\\-|\\\\+)?\\\\d+(\\\\.\\\\d+|\\\\/\\\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\\\+|\\\\-)?\\\\d+)?';\n var SHEBANG = {\n className: 'meta',\n begin: '^#!', end: '$'\n };\n var LITERAL = {\n className: 'literal',\n begin: '\\\\b(t{1}|nil)\\\\b'\n };\n var NUMBER = {\n className: 'number',\n variants: [\n {begin: LISP_SIMPLE_NUMBER_RE, relevance: 0},\n {begin: '#(b|B)[0-1]+(/[0-1]+)?'},\n {begin: '#(o|O)[0-7]+(/[0-7]+)?'},\n {begin: '#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?'},\n {begin: '#(c|C)\\\\(' + LISP_SIMPLE_NUMBER_RE + ' +' + LISP_SIMPLE_NUMBER_RE, end: '\\\\)'}\n ]\n };\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});\n var COMMENT = hljs.COMMENT(\n ';', '$',\n {\n relevance: 0\n }\n );\n var VARIABLE = {\n begin: '\\\\*', end: '\\\\*'\n };\n var KEYWORD = {\n className: 'symbol',\n begin: '[:&]' + LISP_IDENT_RE\n };\n var IDENT = {\n begin: LISP_IDENT_RE,\n relevance: 0\n };\n var MEC = {\n begin: MEC_RE\n };\n var QUOTED_LIST = {\n begin: '\\\\(', end: '\\\\)',\n contains: ['self', LITERAL, STRING, NUMBER, IDENT]\n };\n var QUOTED = {\n contains: [NUMBER, STRING, VARIABLE, KEYWORD, QUOTED_LIST, IDENT],\n variants: [\n {\n begin: '[\\'`]\\\\(', end: '\\\\)'\n },\n {\n begin: '\\\\(quote ', end: '\\\\)',\n keywords: {name: 'quote'}\n },\n {\n begin: '\\'' + MEC_RE\n }\n ]\n };\n var QUOTED_ATOM = {\n variants: [\n {begin: '\\'' + LISP_IDENT_RE},\n {begin: '#\\'' + LISP_IDENT_RE + '(::' + LISP_IDENT_RE + ')*'}\n ]\n };\n var LIST = {\n begin: '\\\\(\\\\s*', end: '\\\\)'\n };\n var BODY = {\n endsWithParent: true,\n relevance: 0\n };\n LIST.contains = [\n {\n className: 'name',\n variants: [\n {begin: LISP_IDENT_RE},\n {begin: MEC_RE}\n ]\n },\n BODY\n ];\n BODY.contains = [QUOTED, QUOTED_ATOM, LIST, LITERAL, NUMBER, STRING, COMMENT, VARIABLE, KEYWORD, MEC, IDENT];\n\n return {\n illegal: /\\S/,\n contains: [\n NUMBER,\n SHEBANG,\n LITERAL,\n STRING,\n COMMENT,\n QUOTED,\n QUOTED_ATOM,\n LIST,\n IDENT\n ]\n };\n};","module.exports = function(hljs) {\n var VARIABLE = {\n begin: '\\\\b[gtps][A-Z]+[A-Za-z0-9_\\\\-]*\\\\b|\\\\$_[A-Z]+',\n relevance: 0\n };\n var COMMENT_MODES = [\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT('--', '$'),\n hljs.COMMENT('[^:]//', '$')\n ];\n var TITLE1 = hljs.inherit(hljs.TITLE_MODE, {\n variants: [\n {begin: '\\\\b_*rig[A-Z]+[A-Za-z0-9_\\\\-]*'},\n {begin: '\\\\b_[a-z0-9\\\\-]+'}\n ]\n });\n var TITLE2 = hljs.inherit(hljs.TITLE_MODE, {begin: '\\\\b([A-Za-z0-9_\\\\-]+)\\\\b'});\n return {\n case_insensitive: false,\n keywords: {\n keyword:\n '$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER ' +\n 'codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph ' +\n 'after byte bytes english the until http forever descending using line real8 with seventh ' +\n 'for stdout finally element word words fourth before black ninth sixth characters chars stderr ' +\n 'uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid ' +\n 'at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 ' +\n 'int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat ' +\n 'end repeat URL in try into switch to words https token binfile each tenth as ticks tick ' +\n 'system real4 by dateItems without char character ascending eighth whole dateTime numeric short ' +\n 'first ftp integer abbreviated abbr abbrev private case while if ' +\n 'div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within ' +\n 'contains ends with begins the keys of keys',\n literal:\n 'SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE ' +\n 'QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO ' +\n 'six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five ' +\n 'quote empty one true return cr linefeed right backslash null seven tab three two ' +\n 'RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK ' +\n 'FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK',\n built_in:\n 'put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode ' +\n 'base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum ' +\n 'cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress ' +\n 'constantNames cos date dateFormat decompress directories ' +\n 'diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global ' +\n 'globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset ' +\n 'keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders ' +\n 'libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 ' +\n 'longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge millisec ' +\n 'millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar ' +\n 'numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets ' +\n 'paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation ' +\n 'populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile ' +\n 'revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull ' +\n 'revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered ' +\n 'revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames ' +\n 'revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull ' +\n 'revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections ' +\n 'revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype ' +\n 'revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext ' +\n 'revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames ' +\n 'revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase ' +\n 'revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute ' +\n 'revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces ' +\n 'revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode ' +\n 'revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling ' +\n 'revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error ' +\n 'revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute ' +\n 'revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort ' +\n 'revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree ' +\n 'revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance ' +\n 'sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound ' +\n 'stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper ' +\n 'transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames ' +\n 'variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet ' +\n 'xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process ' +\n 'combine constant convert create new alias folder directory decrypt delete variable word line folder ' +\n 'directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile ' +\n 'libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback ' +\n 'libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime ' +\n 'libURLSetStatusCallback load multiply socket prepare process post seek rel relative read from process rename ' +\n 'replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase ' +\n 'revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees ' +\n 'revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord ' +\n 'revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase ' +\n 'revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD ' +\n 'revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost ' +\n 'revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData ' +\n 'revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel ' +\n 'revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback ' +\n 'revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop ' +\n 'subtract union unload wait write'\n },\n contains: [\n VARIABLE,\n {\n className: 'keyword',\n begin: '\\\\bend\\\\sif\\\\b'\n },\n {\n className: 'function',\n beginKeywords: 'function', end: '$',\n contains: [\n VARIABLE,\n TITLE2,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.BINARY_NUMBER_MODE,\n hljs.C_NUMBER_MODE,\n TITLE1\n ]\n },\n {\n className: 'function',\n begin: '\\\\bend\\\\s+', end: '$',\n keywords: 'end',\n contains: [\n TITLE2,\n TITLE1\n ],\n relevance: 0\n },\n {\n beginKeywords: 'command on', end: '$',\n contains: [\n VARIABLE,\n TITLE2,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.BINARY_NUMBER_MODE,\n hljs.C_NUMBER_MODE,\n TITLE1\n ]\n },\n {\n className: 'meta',\n variants: [\n {\n begin: '<\\\\?(rev|lc|livecode)',\n relevance: 10\n },\n { begin: '<\\\\?' },\n { begin: '\\\\?>' }\n ]\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.BINARY_NUMBER_MODE,\n hljs.C_NUMBER_MODE,\n TITLE1\n ].concat(COMMENT_MODES),\n illegal: ';$|^\\\\[|^=|&|{'\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n // JS keywords\n 'in if for while finally new do return else break catch instanceof throw try this ' +\n 'switch continue typeof delete debugger case default function var with ' +\n // LiveScript keywords\n 'then unless until loop of by when and or is isnt not it that otherwise from to til fallthrough super ' +\n 'case default function var void const let enum export import native ' +\n '__hasProp __extends __slice __bind __indexOf',\n literal:\n // JS literals\n 'true false null undefined ' +\n // LiveScript literals\n 'yes no on off it that void',\n built_in:\n 'npm require console print module global window document'\n };\n var JS_IDENT_RE = '[A-Za-z$_](?:\\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*';\n var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: JS_IDENT_RE});\n var SUBST = {\n className: 'subst',\n begin: /#\\{/, end: /}/,\n keywords: KEYWORDS\n };\n var SUBST_SIMPLE = {\n className: 'subst',\n begin: /#[A-Za-z$_]/, end: /(?:\\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/,\n keywords: KEYWORDS\n };\n var EXPRESSIONS = [\n hljs.BINARY_NUMBER_MODE,\n {\n className: 'number',\n begin: '(\\\\b0[xX][a-fA-F0-9_]+)|(\\\\b\\\\d(\\\\d|_\\\\d)*(\\\\.(\\\\d(\\\\d|_\\\\d)*)?)?(_*[eE]([-+]\\\\d(_\\\\d|\\\\d)*)?)?[_a-z]*)',\n relevance: 0,\n starts: {end: '(\\\\s*/)?', relevance: 0} // a number tries to eat the following slash to prevent treating it as a regexp\n },\n {\n className: 'string',\n variants: [\n {\n begin: /'''/, end: /'''/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /'/, end: /'/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /\"\"\"/, end: /\"\"\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST, SUBST_SIMPLE]\n },\n {\n begin: /\"/, end: /\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST, SUBST_SIMPLE]\n },\n {\n begin: /\\\\/, end: /(\\s|$)/,\n excludeEnd: true\n }\n ]\n },\n {\n className: 'regexp',\n variants: [\n {\n begin: '//', end: '//[gim]*',\n contains: [SUBST, hljs.HASH_COMMENT_MODE]\n },\n {\n // regex can't start with space to parse x / 2 / 3 as two divisions\n // regex can't start with *, and it supports an \"illegal\" in the main mode\n begin: /\\/(?![ *])(\\\\\\/|.)*?\\/[gim]*(?=\\W|$)/\n }\n ]\n },\n {\n begin: '@' + JS_IDENT_RE\n },\n {\n begin: '``', end: '``',\n excludeBegin: true, excludeEnd: true,\n subLanguage: 'javascript'\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', returnBegin: true,\n /* We need another contained nameless mode to not have every nested\n pair of parens to be called \"params\" */\n contains: [\n {\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n contains: ['self'].concat(EXPRESSIONS)\n }\n ]\n };\n\n return {\n aliases: ['ls'],\n keywords: KEYWORDS,\n illegal: /\\/\\*/,\n contains: EXPRESSIONS.concat([\n hljs.COMMENT('\\\\/\\\\*', '\\\\*\\\\/'),\n hljs.HASH_COMMENT_MODE,\n {\n className: 'function',\n contains: [TITLE, PARAMS],\n returnBegin: true,\n variants: [\n {\n begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?(\\\\(.*\\\\))?\\\\s*\\\\B\\\\->\\\\*?', end: '\\\\->\\\\*?'\n },\n {\n begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?!?(\\\\(.*\\\\))?\\\\s*\\\\B[-~]{1,2}>\\\\*?', end: '[-~]{1,2}>\\\\*?'\n },\n {\n begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?(\\\\(.*\\\\))?\\\\s*\\\\B!?[-~]{1,2}>\\\\*?', end: '!?[-~]{1,2}>\\\\*?'\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class',\n end: '$',\n illegal: /[:=\"\\[\\]]/,\n contains: [\n {\n beginKeywords: 'extends',\n endsWithParent: true,\n illegal: /[:=\"\\[\\]]/,\n contains: [TITLE]\n },\n TITLE\n ]\n },\n {\n begin: JS_IDENT_RE + ':', end: ':',\n returnBegin: true, returnEnd: true,\n relevance: 0\n }\n ])\n };\n};","module.exports = function(hljs) {\n var identifier = '([-a-zA-Z$._][\\\\w\\\\-$.]*)';\n return {\n //lexemes: '[.%]?' + hljs.IDENT_RE,\n keywords:\n 'begin end true false declare define global ' +\n 'constant private linker_private internal ' +\n 'available_externally linkonce linkonce_odr weak ' +\n 'weak_odr appending dllimport dllexport common ' +\n 'default hidden protected extern_weak external ' +\n 'thread_local zeroinitializer undef null to tail ' +\n 'target triple datalayout volatile nuw nsw nnan ' +\n 'ninf nsz arcp fast exact inbounds align ' +\n 'addrspace section alias module asm sideeffect ' +\n 'gc dbg linker_private_weak attributes blockaddress ' +\n 'initialexec localdynamic localexec prefix unnamed_addr ' +\n 'ccc fastcc coldcc x86_stdcallcc x86_fastcallcc ' +\n 'arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ' +\n 'ptx_kernel intel_ocl_bicc msp430_intrcc spir_func ' +\n 'spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc ' +\n 'cc c signext zeroext inreg sret nounwind ' +\n 'noreturn noalias nocapture byval nest readnone ' +\n 'readonly inlinehint noinline alwaysinline optsize ssp ' +\n 'sspreq noredzone noimplicitfloat naked builtin cold ' +\n 'nobuiltin noduplicate nonlazybind optnone returns_twice ' +\n 'sanitize_address sanitize_memory sanitize_thread sspstrong ' +\n 'uwtable returned type opaque eq ne slt sgt ' +\n 'sle sge ult ugt ule uge oeq one olt ogt ' +\n 'ole oge ord uno ueq une x acq_rel acquire ' +\n 'alignstack atomic catch cleanup filter inteldialect ' +\n 'max min monotonic nand personality release seq_cst ' +\n 'singlethread umax umin unordered xchg add fadd ' +\n 'sub fsub mul fmul udiv sdiv fdiv urem srem ' +\n 'frem shl lshr ashr and or xor icmp fcmp ' +\n 'phi call trunc zext sext fptrunc fpext uitofp ' +\n 'sitofp fptoui fptosi inttoptr ptrtoint bitcast ' +\n 'addrspacecast select va_arg ret br switch invoke ' +\n 'unwind unreachable indirectbr landingpad resume ' +\n 'malloc alloca free load store getelementptr ' +\n 'extractelement insertelement shufflevector getresult ' +\n 'extractvalue insertvalue atomicrmw cmpxchg fence ' +\n 'argmemonly double',\n contains: [\n {\n className: 'keyword',\n begin: 'i\\\\d+'\n },\n hljs.COMMENT(\n ';', '\\\\n', {relevance: 0}\n ),\n // Double quote string\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n variants: [\n // Double-quoted string\n { begin: '\"', end: '[^\\\\\\\\]\"' },\n ],\n relevance: 0\n },\n {\n className: 'title',\n variants: [\n { begin: '@' + identifier },\n { begin: '@\\\\d+' },\n { begin: '!' + identifier },\n { begin: '!\\\\d+' + identifier }\n ]\n },\n {\n className: 'symbol',\n variants: [\n { begin: '%' + identifier },\n { begin: '%\\\\d+' },\n { begin: '#\\\\d+' },\n ]\n },\n {\n className: 'number',\n variants: [\n { begin: '0[xX][a-fA-F0-9]+' },\n { begin: '-?\\\\d+(?:[.]\\\\d+)?(?:[eE][-+]?\\\\d+(?:[.]\\\\d+)?)?' }\n ],\n relevance: 0\n },\n ]\n };\n};","module.exports = function(hljs) {\n\n var LSL_STRING_ESCAPE_CHARS = {\n className: 'subst',\n begin: /\\\\[tn\"\\\\]/\n };\n\n var LSL_STRINGS = {\n className: 'string',\n begin: '\"',\n end: '\"',\n contains: [\n LSL_STRING_ESCAPE_CHARS\n ]\n };\n\n var LSL_NUMBERS = {\n className: 'number',\n begin: hljs.C_NUMBER_RE\n };\n\n var LSL_CONSTANTS = {\n className: 'literal',\n variants: [\n {\n begin: '\\\\b(?:PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\\\b'\n },\n {\n begin: '\\\\b(?:XP_ERROR_(?:EXPERIENCES_DISABLED|EXPERIENCE_(?:DISABLED|SUSPENDED)|INVALID_(?:EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(?:FOUND|PERMITTED(?:_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(?:PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(?:_OBJECT)?|(?:DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(?:FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(?:_(?:BY_(?:LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(?:PARCEL(?:_OWNER)?|REGION)))?|CAMERA_(?:PITCH|DISTANCE|BEHINDNESS_(?:ANGLE|LAG)|(?:FOCUS|POSITION)(?:_(?:THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(?:ROOT|SET|ALL_(?:OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(?:IVE|_(?:ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(?:FWD|BACK|(?:ROT_)?(?:LEFT|RIGHT)|UP|DOWN|(?:ML_)?LBUTTON)|PERMISSION_(?:RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(?:CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(?:TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(?:INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(?:_START)?|TELEPORT|MEDIA)|OBJECT_(?:CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(?:PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_ON_REZ|NAME|DESC|POS|PRIM_(?:COUNT|EQUIVALENCE)|RETURN_(?:PARCEL(?:_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP|CREATOR|ATTACHED_POINT|RENDER_WEIGHT|(?:BODY_SHAPE|PATHFINDING)_TYPE|(?:RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(?:MEMORY|TIME))|TYPE_(?:INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(?:DEBUG|PUBLIC)_CHANNEL|ATTACH_(?:AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](?:SHOULDER|HAND|FOOT|EAR|EYE|[UL](?:ARM|LEG)|HIP)|(?:LEFT|RIGHT)_PEC|HUD_(?:CENTER_[12]|TOP_(?:RIGHT|CENTER|LEFT)|BOTTOM(?:_(?:RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(?:BASE|TIP)|[LR]WING|FACE_(?:JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(?:LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(?:ONLINE|NAME|BORN|SIM_(?:POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(?:ON_FILE|USED)|REMOTE_DATA_(?:CHANNEL|REQUEST|REPLY)|PSYS_(?:PART_(?:BF_(?:ZERO|ONE(?:_MINUS_(?:DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(?:START|END)_(?:COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(?:RIBBON|WIND|INTERP_(?:COLOR|SCALE)|BOUNCE|FOLLOW_(?:SRC|VELOCITY)|TARGET_(?:POS|LINEAR)|EMISSIVE)_MASK)|SRC_(?:MAX_AGE|PATTERN|ANGLE_(?:BEGIN|END)|BURST_(?:RATE|PART_COUNT|RADIUS|SPEED_(?:MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(?:DROP|EXPLODE|ANGLE(?:_CONE(?:_EMPTY)?)?)))|VEHICLE_(?:REFERENCE_FRAME|TYPE_(?:NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(?:LINEAR|ANGULAR)_(?:FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(?:HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(?:LINEAR|ANGULAR)_(?:DEFLECTION_(?:EFFICIENCY|TIMESCALE)|MOTOR_(?:DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(?:EFFICIENCY|TIMESCALE)|BANKING_(?:EFFICIENCY|MIX|TIMESCALE)|FLAG_(?:NO_DEFLECTION_UP|LIMIT_(?:ROLL_ONLY|MOTOR_UP)|HOVER_(?:(?:WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(?:STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(?:ALPHA_MODE(?:_(?:BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(?:_(?:BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(?:DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(?:_(?:STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(?:NONE|LOW|MEDIUM|HIGH)|BUMP_(?:NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(?:DEFAULT|PLANAR)|SCULPT_(?:TYPE_(?:SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(?:MIRROR|INVERT))|PHYSICS(?:_(?:SHAPE_(?:CONVEX|NONE|PRIM|TYPE)))?|(?:POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(?:ALT_IMAGE_ENABLE|CONTROLS|(?:CURRENT|HOME)_URL|AUTO_(?:LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(?:WIDTH|HEIGHT)_PIXELS|WHITELIST(?:_ENABLE)?|PERMS_(?:INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(?:STANDARD|MINI)|PERM_(?:NONE|OWNER|GROUP|ANYONE)|MAX_(?:URL_LENGTH|WHITELIST_(?:SIZE|COUNT)|(?:WIDTH|HEIGHT)_PIXELS)))|MASK_(?:BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(?:TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(?:MEDIA_COMMAND_(?:STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(?:ALLOW_(?:FLY|(?:GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(?:GROUP_)?OBJECTS)|USE_(?:ACCESS_(?:GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(?:GROUP|ALL)_OBJECT_ENTRY)|COUNT_(?:TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(?:NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(?:MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(?:_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(?:HIDE|DEFAULT)|REGION_FLAG_(?:ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(?:COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(?:METHOD|MIMETYPE|BODY_(?:MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|STRING_(?:TRIM(?:_(?:HEAD|TAIL))?)|CLICK_ACTION_(?:NONE|TOUCH|SIT|BUY|PAY|OPEN(?:_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(?:NONE|SCRIPT_MEMORY)|RC_(?:DATA_FLAGS|DETECT_PHANTOM|GET_(?:LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(?:TYPES|AGENTS|(?:NON)?PHYSICAL|LAND))|RCERR_(?:CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(?:ALLOWED_(?:AGENT|GROUP)_(?:ADD|REMOVE)|BANNED_AGENT_(?:ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(?:COMMAND|CMD_(?:PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(?:GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(?:CMD_(?:(?:SMOOTH_)?STOP|JUMP)|DESIRED_(?:TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(?:_(?:[ABCD]|NONE))?|MAX_(?:DECEL|TURN_RADIUS|(?:ACCEL|SPEED)))|PURSUIT_(?:OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(?:CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(?:EVADE_(?:HIDDEN|SPOTTED)|FAILURE_(?:DYNAMIC_PATHFINDING_DISABLED|INVALID_(?:GOAL|START)|NO_(?:NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(?:PARCEL_)?UNREACHABLE)|(?:GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(?:_(?:FAST|NONE|SLOW))?|CONTENT_TYPE_(?:ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(?:RADIUS|STATIC)|(?:PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(?:AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\\\b'\n },\n {\n begin: '\\\\b(?:FALSE|TRUE)\\\\b'\n },\n {\n begin: '\\\\b(?:ZERO_ROTATION)\\\\b'\n },\n {\n begin: '\\\\b(?:EOF|JSON_(?:ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(?:BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(?:GRANTED|DENIED))\\\\b'\n },\n {\n begin: '\\\\b(?:ZERO_VECTOR|TOUCH_INVALID_(?:TEXCOORD|VECTOR))\\\\b'\n }\n ]\n };\n\n var LSL_FUNCTIONS = {\n className: 'built_in',\n begin: '\\\\b(?:ll(?:AgentInExperience|(?:Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(?:Details|ErrorMessage)|ReturnObjectsBy(?:ID|Owner)|Json(?:2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(?:Mag|Norm|Dist)|Rot(?:Between|2(?:Euler|Fwd|Left|Up))|(?:Euler|Axes)2Rot|Whisper|(?:Region|Owner)?Say|Shout|Listen(?:Control|Remove)?|Sensor(?:Repeat|Remove)?|Detected(?:Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|(?:[GS]et)(?:AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(?:Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(?:Scale|Offset|Rotate)Texture|(?:Rot)?Target(?:Remove)?|(?:Stop)?MoveToTarget|Apply(?:Rotational)?Impulse|Set(?:KeyframedMotion|ContentType|RegionPos|(?:Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(?:Queueing|Radius)|Vehicle(?:Type|(?:Float|Vector|Rotation)Param)|(?:Touch|Sit)?Text|Camera(?:Eye|At)Offset|PrimitiveParams|ClickAction|Link(?:Alpha|Color|PrimitiveParams(?:Fast)?|Texture(?:Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get(?:(?:Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(?:PrimitiveParams|Number(?:OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(?:Details|PermMask|PrimCount)|Parcel(?:MaxPrims|Details|Prim(?:Count|Owners))|Attached(?:List)?|(?:SPMax|Free|Used)Memory|Region(?:Name|TimeDilation|FPS|Corner|AgentCount)|Root(?:Position|Rotation)|UnixTime|(?:Parcel|Region)Flags|(?:Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(?:Prims|NotecardLines|Sides)|Animation(?:List)?|(?:Camera|Local)(?:Pos|Rot)|Vel|Accel|Omega|Time(?:stamp|OfDay)|(?:Object|CenterOf)?Mass|MassMKS|Energy|Owner|(?:Owner)?Key|SunDirection|Texture(?:Offset|Scale|Rot)|Inventory(?:Number|Name|Key|Type|Creator|PermMask)|Permissions(?:Key)?|StartParameter|List(?:Length|EntryType)|Date|Agent(?:Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(?:Name|State))|(?:Get|Reset|GetAndReset)Time|PlaySound(?:Slave)?|LoopSound(?:Master|Slave)?|(?:Trigger|Stop|Preload)Sound|(?:(?:Get|Delete)Sub|Insert)String|To(?:Upper|Lower)|Give(?:InventoryList|Money)|RezObject|(?:Stop)?LookAt|Sleep|CollisionFilter|(?:Take|Release)Controls|DetachFromAvatar|AttachToAvatar(?:Temp)?|InstantMessage|(?:GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(?:Length|Trim)|(?:Start|Stop)Animation|TargetOmega|Request(?:Experience)?Permissions|(?:Create|Break)Link|BreakAllLinks|(?:Give|Remove)Inventory|Water|PassTouches|Request(?:Agent|Inventory)Data|TeleportAgent(?:Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(?:Axis|Angle)|A(?:cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(?:CSV|Integer|Json|Float|String|Key|Vector|Rot|List(?:Strided)?)|DeleteSubList|List(?:Statistics|Sort|Randomize|(?:Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(?:CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(?:Slope|Normal|Contour)|GroundRepel|(?:Set|Remove)VehicleFlags|(?:AvatarOn)?(?:Link)?SitTarget|Script(?:Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(?:Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(?:Integer|String)ToBase64|XorBase64|Log(?:10)?|Base64To(?:String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(?:Load|Release|(?:E|Une)scape)URL|ParcelMedia(?:CommandList|Query)|ModPow|MapDestination|(?:RemoveFrom|AddTo|Reset)Land(?:Pass|Ban)List|(?:Set|Clear)CameraParams|HTTP(?:Request|Response)|TextBox|DetectedTouch(?:UV|Face|Pos|(?:N|Bin)ormal|ST)|(?:MD5|SHA1|DumpList2)String|Request(?:Secure)?URL|Clear(?:Prim|Link)Media|(?:Link)?ParticleSystem|(?:Get|Request)(?:Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(?:Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\\\b'\n };\n\n return {\n illegal: ':',\n contains: [\n LSL_STRINGS,\n {\n className: 'comment',\n variants: [\n hljs.COMMENT('//', '$'),\n hljs.COMMENT('/\\\\*', '\\\\*/')\n ]\n },\n LSL_NUMBERS,\n {\n className: 'section',\n variants: [\n {\n begin: '\\\\b(?:state|default)\\\\b'\n },\n {\n begin: '\\\\b(?:state_(?:entry|exit)|touch(?:_(?:start|end))?|(?:land_)?collision(?:_(?:start|end))?|timer|listen|(?:no_)?sensor|control|(?:not_)?at_(?:rot_)?target|money|email|experience_permissions(?:_denied)?|run_time_permissions|changed|attach|dataserver|moving_(?:start|end)|link_message|(?:on|object)_rez|remote_data|http_re(?:sponse|quest)|path_update|transaction_result)\\\\b'\n }\n ]\n },\n LSL_FUNCTIONS,\n LSL_CONSTANTS,\n {\n className: 'type',\n begin: '\\\\b(?:integer|float|string|key|vector|quaternion|rotation|list)\\\\b'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var OPENING_LONG_BRACKET = '\\\\[=*\\\\[';\n var CLOSING_LONG_BRACKET = '\\\\]=*\\\\]';\n var LONG_BRACKETS = {\n begin: OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET,\n contains: ['self']\n };\n var COMMENTS = [\n hljs.COMMENT('--(?!' + OPENING_LONG_BRACKET + ')', '$'),\n hljs.COMMENT(\n '--' + OPENING_LONG_BRACKET,\n CLOSING_LONG_BRACKET,\n {\n contains: [LONG_BRACKETS],\n relevance: 10\n }\n )\n ];\n return {\n lexemes: hljs.UNDERSCORE_IDENT_RE,\n keywords: {\n literal: \"true false nil\",\n keyword: \"and break do else elseif end for goto if in local not or repeat return then until while\",\n built_in:\n //Metatags and globals:\n '_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len ' +\n '__gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert ' +\n //Standard methods and properties:\n 'collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring' +\n 'module next pairs pcall print rawequal rawget rawset require select setfenv' +\n 'setmetatable tonumber tostring type unpack xpcall arg self' +\n //Library methods and properties (one line per library):\n 'coroutine resume yield status wrap create running debug getupvalue ' +\n 'debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv ' +\n 'io lines write close flush open output type read stderr stdin input stdout popen tmpfile ' +\n 'math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan ' +\n 'os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall ' +\n 'string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower ' +\n 'table setn insert getn foreachi maxn foreach concat sort remove'\n },\n contains: COMMENTS.concat([\n {\n className: 'function',\n beginKeywords: 'function', end: '\\\\)',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: '([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*'}),\n {\n className: 'params',\n begin: '\\\\(', endsWithParent: true,\n contains: COMMENTS\n }\n ].concat(COMMENTS)\n },\n hljs.C_NUMBER_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET,\n contains: [LONG_BRACKETS],\n relevance: 5\n }\n ])\n };\n};","module.exports = function(hljs) {\n /* Variables: simple (eg $(var)) and special (eg $@) */\n var VARIABLE = {\n className: 'variable',\n variants: [\n {\n begin: '\\\\$\\\\(' + hljs.UNDERSCORE_IDENT_RE + '\\\\)',\n contains: [hljs.BACKSLASH_ESCAPE],\n },\n {\n begin: /\\$[@%<?\\^\\+\\*]/\n },\n ]\n };\n /* Quoted string with variables inside */\n var QUOTE_STRING = {\n className: 'string',\n begin: /\"/, end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VARIABLE,\n ]\n };\n /* Function: $(func arg,...) */\n var FUNC = {\n className: 'variable',\n begin: /\\$\\([\\w-]+\\s/, end: /\\)/,\n keywords: {\n built_in:\n 'subst patsubst strip findstring filter filter-out sort ' +\n 'word wordlist firstword lastword dir notdir suffix basename ' +\n 'addsuffix addprefix join wildcard realpath abspath error warning ' +\n 'shell origin flavor foreach if or and call eval file value',\n },\n contains: [\n VARIABLE,\n ]\n };\n /* Variable assignment */\n var VAR_ASSIG = {\n begin: '^' + hljs.UNDERSCORE_IDENT_RE + '\\\\s*[:+?]?=',\n illegal: '\\\\n',\n returnBegin: true,\n contains: [\n {\n begin: '^' + hljs.UNDERSCORE_IDENT_RE, end: '[:+?]?=',\n excludeEnd: true,\n }\n ]\n };\n /* Meta targets (.PHONY) */\n var META = {\n className: 'meta',\n begin: /^\\.PHONY:/, end: /$/,\n keywords: {'meta-keyword': '.PHONY'},\n lexemes: /[\\.\\w]+/\n };\n /* Targets */\n var TARGET = {\n className: 'section',\n begin: /^[^\\s]+:/, end: /$/,\n contains: [VARIABLE,]\n };\n return {\n aliases: ['mk', 'mak'],\n keywords:\n 'define endef undefine ifdef ifndef ifeq ifneq else endif ' +\n 'include -include sinclude override export unexport private vpath',\n lexemes: /[\\w-]+/,\n contains: [\n hljs.HASH_COMMENT_MODE,\n VARIABLE,\n QUOTE_STRING,\n FUNC,\n VAR_ASSIG,\n META,\n TARGET,\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['mma'],\n lexemes: '(\\\\$|\\\\b)' + hljs.IDENT_RE + '\\\\b',\n keywords: 'AbelianGroup Abort AbortKernels AbortProtect Above Abs Absolute AbsoluteCorrelation AbsoluteCorrelationFunction AbsoluteCurrentValue AbsoluteDashing AbsoluteFileName AbsoluteOptions AbsolutePointSize AbsoluteThickness AbsoluteTime AbsoluteTiming AccountingForm Accumulate Accuracy AccuracyGoal ActionDelay ActionMenu ActionMenuBox ActionMenuBoxOptions Active ActiveItem ActiveStyle AcyclicGraphQ AddOnHelpPath AddTo AdjacencyGraph AdjacencyList AdjacencyMatrix AdjustmentBox AdjustmentBoxOptions AdjustTimeSeriesForecast AffineTransform After AiryAi AiryAiPrime AiryAiZero AiryBi AiryBiPrime AiryBiZero AlgebraicIntegerQ AlgebraicNumber AlgebraicNumberDenominator AlgebraicNumberNorm AlgebraicNumberPolynomial AlgebraicNumberTrace AlgebraicRules AlgebraicRulesData Algebraics AlgebraicUnitQ Alignment AlignmentMarker AlignmentPoint All AllowedDimensions AllowGroupClose AllowInlineCells AllowKernelInitialization AllowReverseGroupClose AllowScriptLevelChange AlphaChannel AlternatingGroup AlternativeHypothesis Alternatives AmbientLight Analytic AnchoredSearch And AndersonDarlingTest AngerJ AngleBracket AngularGauge Animate AnimationCycleOffset AnimationCycleRepetitions AnimationDirection AnimationDisplayTime AnimationRate AnimationRepetitions AnimationRunning Animator AnimatorBox AnimatorBoxOptions AnimatorElements Annotation Annuity AnnuityDue Antialiasing Antisymmetric Apart ApartSquareFree Appearance AppearanceElements AppellF1 Append AppendTo Apply ArcCos ArcCosh ArcCot ArcCoth ArcCsc ArcCsch ArcSec ArcSech ArcSin ArcSinDistribution ArcSinh ArcTan ArcTanh Arg ArgMax ArgMin ArgumentCountQ ARIMAProcess ArithmeticGeometricMean ARMAProcess ARProcess Array ArrayComponents ArrayDepth ArrayFlatten ArrayPad ArrayPlot ArrayQ ArrayReshape ArrayRules Arrays Arrow Arrow3DBox ArrowBox Arrowheads AspectRatio AspectRatioFixed Assert Assuming Assumptions AstronomicalData Asynchronous AsynchronousTaskObject AsynchronousTasks AtomQ Attributes AugmentedSymmetricPolynomial AutoAction AutoDelete AutoEvaluateEvents AutoGeneratedPackage AutoIndent AutoIndentSpacings AutoItalicWords AutoloadPath AutoMatch Automatic AutomaticImageSize AutoMultiplicationSymbol AutoNumberFormatting AutoOpenNotebooks AutoOpenPalettes AutorunSequencing AutoScaling AutoScroll AutoSpacing AutoStyleOptions AutoStyleWords Axes AxesEdge AxesLabel AxesOrigin AxesStyle Axis ' +\n 'BabyMonsterGroupB Back Background BackgroundTasksSettings Backslash Backsubstitution Backward Band BandpassFilter BandstopFilter BarabasiAlbertGraphDistribution BarChart BarChart3D BarLegend BarlowProschanImportance BarnesG BarOrigin BarSpacing BartlettHannWindow BartlettWindow BaseForm Baseline BaselinePosition BaseStyle BatesDistribution BattleLemarieWavelet Because BeckmannDistribution Beep Before Begin BeginDialogPacket BeginFrontEndInteractionPacket BeginPackage BellB BellY Below BenfordDistribution BeniniDistribution BenktanderGibratDistribution BenktanderWeibullDistribution BernoulliB BernoulliDistribution BernoulliGraphDistribution BernoulliProcess BernsteinBasis BesselFilterModel BesselI BesselJ BesselJZero BesselK BesselY BesselYZero Beta BetaBinomialDistribution BetaDistribution BetaNegativeBinomialDistribution BetaPrimeDistribution BetaRegularized BetweennessCentrality BezierCurve BezierCurve3DBox BezierCurve3DBoxOptions BezierCurveBox BezierCurveBoxOptions BezierFunction BilateralFilter Binarize BinaryFormat BinaryImageQ BinaryRead BinaryReadList BinaryWrite BinCounts BinLists Binomial BinomialDistribution BinomialProcess BinormalDistribution BiorthogonalSplineWavelet BipartiteGraphQ BirnbaumImportance BirnbaumSaundersDistribution BitAnd BitClear BitGet BitLength BitNot BitOr BitSet BitShiftLeft BitShiftRight BitXor Black BlackmanHarrisWindow BlackmanNuttallWindow BlackmanWindow Blank BlankForm BlankNullSequence BlankSequence Blend Block BlockRandom BlomqvistBeta BlomqvistBetaTest Blue Blur BodePlot BohmanWindow Bold Bookmarks Boole BooleanConsecutiveFunction BooleanConvert BooleanCountingFunction BooleanFunction BooleanGraph BooleanMaxterms BooleanMinimize BooleanMinterms Booleans BooleanTable BooleanVariables BorderDimensions BorelTannerDistribution Bottom BottomHatTransform BoundaryStyle Bounds Box BoxBaselineShift BoxData BoxDimensions Boxed Boxes BoxForm BoxFormFormatTypes BoxFrame BoxID BoxMargins BoxMatrix BoxRatios BoxRotation BoxRotationPoint BoxStyle BoxWhiskerChart Bra BracketingBar BraKet BrayCurtisDistance BreadthFirstScan Break Brown BrownForsytheTest BrownianBridgeProcess BrowserCategory BSplineBasis BSplineCurve BSplineCurve3DBox BSplineCurveBox BSplineCurveBoxOptions BSplineFunction BSplineSurface BSplineSurface3DBox BubbleChart BubbleChart3D BubbleScale BubbleSizes BulletGauge BusinessDayQ ButterflyGraph ButterworthFilterModel Button ButtonBar ButtonBox ButtonBoxOptions ButtonCell ButtonContents ButtonData ButtonEvaluator ButtonExpandable ButtonFrame ButtonFunction ButtonMargins ButtonMinHeight ButtonNote ButtonNotebook ButtonSource ButtonStyle ButtonStyleMenuListing Byte ByteCount ByteOrdering ' +\n 'C CachedValue CacheGraphics CalendarData CalendarType CallPacket CanberraDistance Cancel CancelButton CandlestickChart Cap CapForm CapitalDifferentialD CardinalBSplineBasis CarmichaelLambda Cases Cashflow Casoratian Catalan CatalanNumber Catch CauchyDistribution CauchyWindow CayleyGraph CDF CDFDeploy CDFInformation CDFWavelet Ceiling Cell CellAutoOverwrite CellBaseline CellBoundingBox CellBracketOptions CellChangeTimes CellContents CellContext CellDingbat CellDynamicExpression CellEditDuplicate CellElementsBoundingBox CellElementSpacings CellEpilog CellEvaluationDuplicate CellEvaluationFunction CellEventActions CellFrame CellFrameColor CellFrameLabelMargins CellFrameLabels CellFrameMargins CellGroup CellGroupData CellGrouping CellGroupingRules CellHorizontalScrolling CellID CellLabel CellLabelAutoDelete CellLabelMargins CellLabelPositioning CellMargins CellObject CellOpen CellPrint CellProlog Cells CellSize CellStyle CellTags CellularAutomaton CensoredDistribution Censoring Center CenterDot CentralMoment CentralMomentGeneratingFunction CForm ChampernowneNumber ChanVeseBinarize Character CharacterEncoding CharacterEncodingsPath CharacteristicFunction CharacteristicPolynomial CharacterRange Characters ChartBaseStyle ChartElementData ChartElementDataFunction ChartElementFunction ChartElements ChartLabels ChartLayout ChartLegends ChartStyle Chebyshev1FilterModel Chebyshev2FilterModel ChebyshevDistance ChebyshevT ChebyshevU Check CheckAbort CheckAll Checkbox CheckboxBar CheckboxBox CheckboxBoxOptions ChemicalData ChessboardDistance ChiDistribution ChineseRemainder ChiSquareDistribution ChoiceButtons ChoiceDialog CholeskyDecomposition Chop Circle CircleBox CircleDot CircleMinus CirclePlus CircleTimes CirculantGraph CityData Clear ClearAll ClearAttributes ClearSystemCache ClebschGordan ClickPane Clip ClipboardNotebook ClipFill ClippingStyle ClipPlanes ClipRange Clock ClockGauge ClockwiseContourIntegral Close Closed CloseKernels ClosenessCentrality Closing ClosingAutoSave ClosingEvent ClusteringComponents CMYKColor Coarse Coefficient CoefficientArrays CoefficientDomain CoefficientList CoefficientRules CoifletWavelet Collect Colon ColonForm ColorCombine ColorConvert ColorData ColorDataFunction ColorFunction ColorFunctionScaling Colorize ColorNegate ColorOutput ColorProfileData ColorQuantize ColorReplace ColorRules ColorSelectorSettings ColorSeparate ColorSetter ColorSetterBox ColorSetterBoxOptions ColorSlider ColorSpace Column ColumnAlignments ColumnBackgrounds ColumnForm ColumnLines ColumnsEqual ColumnSpacings ColumnWidths CommonDefaultFormatTypes Commonest CommonestFilter CommonUnits CommunityBoundaryStyle CommunityGraphPlot CommunityLabels CommunityRegionStyle CompatibleUnitQ CompilationOptions CompilationTarget Compile Compiled CompiledFunction Complement CompleteGraph CompleteGraphQ CompleteKaryTree CompletionsListPacket Complex Complexes ComplexExpand ComplexInfinity ComplexityFunction ComponentMeasurements ' +\n 'ComponentwiseContextMenu Compose ComposeList ComposeSeries Composition CompoundExpression CompoundPoissonDistribution CompoundPoissonProcess CompoundRenewalProcess Compress CompressedData Condition ConditionalExpression Conditioned Cone ConeBox ConfidenceLevel ConfidenceRange ConfidenceTransform ConfigurationPath Congruent Conjugate ConjugateTranspose Conjunction Connect ConnectedComponents ConnectedGraphQ ConnesWindow ConoverTest ConsoleMessage ConsoleMessagePacket ConsolePrint Constant ConstantArray Constants ConstrainedMax ConstrainedMin ContentPadding ContentsBoundingBox ContentSelectable ContentSize Context ContextMenu Contexts ContextToFilename ContextToFileName Continuation Continue ContinuedFraction ContinuedFractionK ContinuousAction ContinuousMarkovProcess ContinuousTimeModelQ ContinuousWaveletData ContinuousWaveletTransform ContourDetect ContourGraphics ContourIntegral ContourLabels ContourLines ContourPlot ContourPlot3D Contours ContourShading ContourSmoothing ContourStyle ContraharmonicMean Control ControlActive ControlAlignment ControllabilityGramian ControllabilityMatrix ControllableDecomposition ControllableModelQ ControllerDuration ControllerInformation ControllerInformationData ControllerLinking ControllerManipulate ControllerMethod ControllerPath ControllerState ControlPlacement ControlsRendering ControlType Convergents ConversionOptions ConversionRules ConvertToBitmapPacket ConvertToPostScript ConvertToPostScriptPacket Convolve ConwayGroupCo1 ConwayGroupCo2 ConwayGroupCo3 CoordinateChartData CoordinatesToolOptions CoordinateTransform CoordinateTransformData CoprimeQ Coproduct CopulaDistribution Copyable CopyDirectory CopyFile CopyTag CopyToClipboard CornerFilter CornerNeighbors Correlation CorrelationDistance CorrelationFunction CorrelationTest Cos Cosh CoshIntegral CosineDistance CosineWindow CosIntegral Cot Coth Count CounterAssignments CounterBox CounterBoxOptions CounterClockwiseContourIntegral CounterEvaluator CounterFunction CounterIncrements CounterStyle CounterStyleMenuListing CountRoots CountryData Covariance CovarianceEstimatorFunction CovarianceFunction CoxianDistribution CoxIngersollRossProcess CoxModel CoxModelFit CramerVonMisesTest CreateArchive CreateDialog CreateDirectory CreateDocument CreateIntermediateDirectories CreatePalette CreatePalettePacket CreateScheduledTask CreateTemporary CreateWindow CriticalityFailureImportance CriticalitySuccessImportance CriticalSection Cross CrossingDetect CrossMatrix Csc Csch CubeRoot Cubics Cuboid CuboidBox Cumulant CumulantGeneratingFunction Cup CupCap Curl CurlyDoubleQuote CurlyQuote CurrentImage CurrentlySpeakingPacket CurrentValue CurvatureFlowFilter CurveClosed Cyan CycleGraph CycleIndexPolynomial Cycles CyclicGroup Cyclotomic Cylinder CylinderBox CylindricalDecomposition ' +\n 'D DagumDistribution DamerauLevenshteinDistance DampingFactor Darker Dashed Dashing DataCompression DataDistribution DataRange DataReversed Date DateDelimiters DateDifference DateFunction DateList DateListLogPlot DateListPlot DatePattern DatePlus DateRange DateString DateTicksFormat DaubechiesWavelet DavisDistribution DawsonF DayCount DayCountConvention DayMatchQ DayName DayPlus DayRange DayRound DeBruijnGraph Debug DebugTag Decimal DeclareKnownSymbols DeclarePackage Decompose Decrement DedekindEta Default DefaultAxesStyle DefaultBaseStyle DefaultBoxStyle DefaultButton DefaultColor DefaultControlPlacement DefaultDuplicateCellStyle DefaultDuration DefaultElement DefaultFaceGridsStyle DefaultFieldHintStyle DefaultFont DefaultFontProperties DefaultFormatType DefaultFormatTypeForStyle DefaultFrameStyle DefaultFrameTicksStyle DefaultGridLinesStyle DefaultInlineFormatType DefaultInputFormatType DefaultLabelStyle DefaultMenuStyle DefaultNaturalLanguage DefaultNewCellStyle DefaultNewInlineCellStyle DefaultNotebook DefaultOptions DefaultOutputFormatType DefaultStyle DefaultStyleDefinitions DefaultTextFormatType DefaultTextInlineFormatType DefaultTicksStyle DefaultTooltipStyle DefaultValues Defer DefineExternal DefineInputStreamMethod DefineOutputStreamMethod Definition Degree DegreeCentrality DegreeGraphDistribution DegreeLexicographic DegreeReverseLexicographic Deinitialization Del Deletable Delete DeleteBorderComponents DeleteCases DeleteContents DeleteDirectory DeleteDuplicates DeleteFile DeleteSmallComponents DeleteWithContents DeletionWarning Delimiter DelimiterFlashTime DelimiterMatching Delimiters Denominator DensityGraphics DensityHistogram DensityPlot DependentVariables Deploy Deployed Depth DepthFirstScan Derivative DerivativeFilter DescriptorStateSpace DesignMatrix Det DGaussianWavelet DiacriticalPositioning Diagonal DiagonalMatrix Dialog DialogIndent DialogInput DialogLevel DialogNotebook DialogProlog DialogReturn DialogSymbols Diamond DiamondMatrix DiceDissimilarity DictionaryLookup DifferenceDelta DifferenceOrder DifferenceRoot DifferenceRootReduce Differences DifferentialD DifferentialRoot DifferentialRootReduce DifferentiatorFilter DigitBlock DigitBlockMinimum DigitCharacter DigitCount DigitQ DihedralGroup Dilation Dimensions DiracComb DiracDelta DirectedEdge DirectedEdges DirectedGraph DirectedGraphQ DirectedInfinity Direction Directive Directory DirectoryName DirectoryQ DirectoryStack DirichletCharacter DirichletConvolve DirichletDistribution DirichletL DirichletTransform DirichletWindow DisableConsolePrintPacket DiscreteChirpZTransform DiscreteConvolve DiscreteDelta DiscreteHadamardTransform DiscreteIndicator DiscreteLQEstimatorGains DiscreteLQRegulatorGains DiscreteLyapunovSolve DiscreteMarkovProcess DiscretePlot DiscretePlot3D DiscreteRatio DiscreteRiccatiSolve DiscreteShift DiscreteTimeModelQ DiscreteUniformDistribution DiscreteVariables DiscreteWaveletData DiscreteWaveletPacketTransform ' +\n 'DiscreteWaveletTransform Discriminant Disjunction Disk DiskBox DiskMatrix Dispatch DispersionEstimatorFunction Display DisplayAllSteps DisplayEndPacket DisplayFlushImagePacket DisplayForm DisplayFunction DisplayPacket DisplayRules DisplaySetSizePacket DisplayString DisplayTemporary DisplayWith DisplayWithRef DisplayWithVariable DistanceFunction DistanceTransform Distribute Distributed DistributedContexts DistributeDefinitions DistributionChart DistributionDomain DistributionFitTest DistributionParameterAssumptions DistributionParameterQ Dithering Div Divergence Divide DivideBy Dividers Divisible Divisors DivisorSigma DivisorSum DMSList DMSString Do DockedCells DocumentNotebook DominantColors DOSTextFormat Dot DotDashed DotEqual Dotted DoubleBracketingBar DoubleContourIntegral DoubleDownArrow DoubleLeftArrow DoubleLeftRightArrow DoubleLeftTee DoubleLongLeftArrow DoubleLongLeftRightArrow DoubleLongRightArrow DoubleRightArrow DoubleRightTee DoubleUpArrow DoubleUpDownArrow DoubleVerticalBar DoublyInfinite Down DownArrow DownArrowBar DownArrowUpArrow DownLeftRightVector DownLeftTeeVector DownLeftVector DownLeftVectorBar DownRightTeeVector DownRightVector DownRightVectorBar Downsample DownTee DownTeeArrow DownValues DragAndDrop DrawEdges DrawFrontFaces DrawHighlighted Drop DSolve Dt DualLinearProgramming DualSystemsModel DumpGet DumpSave DuplicateFreeQ Dynamic DynamicBox DynamicBoxOptions DynamicEvaluationTimeout DynamicLocation DynamicModule DynamicModuleBox DynamicModuleBoxOptions DynamicModuleParent DynamicModuleValues DynamicName DynamicNamespace DynamicReference DynamicSetting DynamicUpdating DynamicWrapper DynamicWrapperBox DynamicWrapperBoxOptions ' +\n 'E EccentricityCentrality EdgeAdd EdgeBetweennessCentrality EdgeCapacity EdgeCapForm EdgeColor EdgeConnectivity EdgeCost EdgeCount EdgeCoverQ EdgeDashing EdgeDelete EdgeDetect EdgeForm EdgeIndex EdgeJoinForm EdgeLabeling EdgeLabels EdgeLabelStyle EdgeList EdgeOpacity EdgeQ EdgeRenderingFunction EdgeRules EdgeShapeFunction EdgeStyle EdgeThickness EdgeWeight Editable EditButtonSettings EditCellTagsSettings EditDistance EffectiveInterest Eigensystem Eigenvalues EigenvectorCentrality Eigenvectors Element ElementData Eliminate EliminationOrder EllipticE EllipticExp EllipticExpPrime EllipticF EllipticFilterModel EllipticK EllipticLog EllipticNomeQ EllipticPi EllipticReducedHalfPeriods EllipticTheta EllipticThetaPrime EmitSound EmphasizeSyntaxErrors EmpiricalDistribution Empty EmptyGraphQ EnableConsolePrintPacket Enabled Encode End EndAdd EndDialogPacket EndFrontEndInteractionPacket EndOfFile EndOfLine EndOfString EndPackage EngineeringForm Enter EnterExpressionPacket EnterTextPacket Entropy EntropyFilter Environment Epilog Equal EqualColumns EqualRows EqualTilde EquatedTo Equilibrium EquirippleFilterKernel Equivalent Erf Erfc Erfi ErlangB ErlangC ErlangDistribution Erosion ErrorBox ErrorBoxOptions ErrorNorm ErrorPacket ErrorsDialogSettings EstimatedDistribution EstimatedProcess EstimatorGains EstimatorRegulator EuclideanDistance EulerE EulerGamma EulerianGraphQ EulerPhi Evaluatable Evaluate Evaluated EvaluatePacket EvaluationCell EvaluationCompletionAction EvaluationElements EvaluationMode EvaluationMonitor EvaluationNotebook EvaluationObject EvaluationOrder Evaluator EvaluatorNames EvenQ EventData EventEvaluator EventHandler EventHandlerTag EventLabels ExactBlackmanWindow ExactNumberQ ExactRootIsolation ExampleData Except ExcludedForms ExcludePods Exclusions ExclusionsStyle Exists Exit ExitDialog Exp Expand ExpandAll ExpandDenominator ExpandFileName ExpandNumerator Expectation ExpectationE ExpectedValue ExpGammaDistribution ExpIntegralE ExpIntegralEi Exponent ExponentFunction ExponentialDistribution ExponentialFamily ExponentialGeneratingFunction ExponentialMovingAverage ExponentialPowerDistribution ExponentPosition ExponentStep Export ExportAutoReplacements ExportPacket ExportString Expression ExpressionCell ExpressionPacket ExpToTrig ExtendedGCD Extension ExtentElementFunction ExtentMarkers ExtentSize ExternalCall ExternalDataCharacterEncoding Extract ExtractArchive ExtremeValueDistribution ' +\n 'FaceForm FaceGrids FaceGridsStyle Factor FactorComplete Factorial Factorial2 FactorialMoment FactorialMomentGeneratingFunction FactorialPower FactorInteger FactorList FactorSquareFree FactorSquareFreeList FactorTerms FactorTermsList Fail FailureDistribution False FARIMAProcess FEDisableConsolePrintPacket FeedbackSector FeedbackSectorStyle FeedbackType FEEnableConsolePrintPacket Fibonacci FieldHint FieldHintStyle FieldMasked FieldSize File FileBaseName FileByteCount FileDate FileExistsQ FileExtension FileFormat FileHash FileInformation FileName FileNameDepth FileNameDialogSettings FileNameDrop FileNameJoin FileNames FileNameSetter FileNameSplit FileNameTake FilePrint FileType FilledCurve FilledCurveBox Filling FillingStyle FillingTransform FilterRules FinancialBond FinancialData FinancialDerivative FinancialIndicator Find FindArgMax FindArgMin FindClique FindClusters FindCurvePath FindDistributionParameters FindDivisions FindEdgeCover FindEdgeCut FindEulerianCycle FindFaces FindFile FindFit FindGeneratingFunction FindGeoLocation FindGeometricTransform FindGraphCommunities FindGraphIsomorphism FindGraphPartition FindHamiltonianCycle FindIndependentEdgeSet FindIndependentVertexSet FindInstance FindIntegerNullVector FindKClan FindKClique FindKClub FindKPlex FindLibrary FindLinearRecurrence FindList FindMaximum FindMaximumFlow FindMaxValue FindMinimum FindMinimumCostFlow FindMinimumCut FindMinValue FindPermutation FindPostmanTour FindProcessParameters FindRoot FindSequenceFunction FindSettings FindShortestPath FindShortestTour FindThreshold FindVertexCover FindVertexCut Fine FinishDynamic FiniteAbelianGroupCount FiniteGroupCount FiniteGroupData First FirstPassageTimeDistribution FischerGroupFi22 FischerGroupFi23 FischerGroupFi24Prime FisherHypergeometricDistribution FisherRatioTest FisherZDistribution Fit FitAll FittedModel FixedPoint FixedPointList FlashSelection Flat Flatten FlattenAt FlatTopWindow FlipView Floor FlushPrintOutputPacket Fold FoldList Font FontColor FontFamily FontForm FontName FontOpacity FontPostScriptName FontProperties FontReencoding FontSize FontSlant FontSubstitutions FontTracking FontVariations FontWeight For ForAll Format FormatRules FormatType FormatTypeAutoConvert FormatValues FormBox FormBoxOptions FortranForm Forward ForwardBackward Fourier FourierCoefficient FourierCosCoefficient FourierCosSeries FourierCosTransform FourierDCT FourierDCTFilter FourierDCTMatrix FourierDST FourierDSTMatrix FourierMatrix FourierParameters FourierSequenceTransform FourierSeries FourierSinCoefficient FourierSinSeries FourierSinTransform FourierTransform FourierTrigSeries FractionalBrownianMotionProcess FractionalPart FractionBox FractionBoxOptions FractionLine Frame FrameBox FrameBoxOptions Framed FrameInset FrameLabel Frameless FrameMargins FrameStyle FrameTicks FrameTicksStyle FRatioDistribution FrechetDistribution FreeQ FrequencySamplingFilterKernel FresnelC FresnelS Friday FrobeniusNumber FrobeniusSolve ' +\n 'FromCharacterCode FromCoefficientRules FromContinuedFraction FromDate FromDigits FromDMS Front FrontEndDynamicExpression FrontEndEventActions FrontEndExecute FrontEndObject FrontEndResource FrontEndResourceString FrontEndStackSize FrontEndToken FrontEndTokenExecute FrontEndValueCache FrontEndVersion FrontFaceColor FrontFaceOpacity Full FullAxes FullDefinition FullForm FullGraphics FullOptions FullSimplify Function FunctionExpand FunctionInterpolation FunctionSpace FussellVeselyImportance ' +\n 'GaborFilter GaborMatrix GaborWavelet GainMargins GainPhaseMargins Gamma GammaDistribution GammaRegularized GapPenalty Gather GatherBy GaugeFaceElementFunction GaugeFaceStyle GaugeFrameElementFunction GaugeFrameSize GaugeFrameStyle GaugeLabels GaugeMarkers GaugeStyle GaussianFilter GaussianIntegers GaussianMatrix GaussianWindow GCD GegenbauerC General GeneralizedLinearModelFit GenerateConditions GeneratedCell GeneratedParameters GeneratingFunction Generic GenericCylindricalDecomposition GenomeData GenomeLookup GeodesicClosing GeodesicDilation GeodesicErosion GeodesicOpening GeoDestination GeodesyData GeoDirection GeoDistance GeoGridPosition GeometricBrownianMotionProcess GeometricDistribution GeometricMean GeometricMeanFilter GeometricTransformation GeometricTransformation3DBox GeometricTransformation3DBoxOptions GeometricTransformationBox GeometricTransformationBoxOptions GeoPosition GeoPositionENU GeoPositionXYZ GeoProjectionData GestureHandler GestureHandlerTag Get GetBoundingBoxSizePacket GetContext GetEnvironment GetFileName GetFrontEndOptionsDataPacket GetLinebreakInformationPacket GetMenusPacket GetPageBreakInformationPacket Glaisher GlobalClusteringCoefficient GlobalPreferences GlobalSession Glow GoldenRatio GompertzMakehamDistribution GoodmanKruskalGamma GoodmanKruskalGammaTest Goto Grad Gradient GradientFilter GradientOrientationFilter Graph GraphAssortativity GraphCenter GraphComplement GraphData GraphDensity GraphDiameter GraphDifference GraphDisjointUnion ' +\n 'GraphDistance GraphDistanceMatrix GraphElementData GraphEmbedding GraphHighlight GraphHighlightStyle GraphHub Graphics Graphics3D Graphics3DBox Graphics3DBoxOptions GraphicsArray GraphicsBaseline GraphicsBox GraphicsBoxOptions GraphicsColor GraphicsColumn GraphicsComplex GraphicsComplex3DBox GraphicsComplex3DBoxOptions GraphicsComplexBox GraphicsComplexBoxOptions GraphicsContents GraphicsData GraphicsGrid GraphicsGridBox GraphicsGroup GraphicsGroup3DBox GraphicsGroup3DBoxOptions GraphicsGroupBox GraphicsGroupBoxOptions GraphicsGrouping GraphicsHighlightColor GraphicsRow GraphicsSpacing GraphicsStyle GraphIntersection GraphLayout GraphLinkEfficiency GraphPeriphery GraphPlot GraphPlot3D GraphPower GraphPropertyDistribution GraphQ GraphRadius GraphReciprocity GraphRoot GraphStyle GraphUnion Gray GrayLevel GreatCircleDistance Greater GreaterEqual GreaterEqualLess GreaterFullEqual GreaterGreater GreaterLess GreaterSlantEqual GreaterTilde Green Grid GridBaseline GridBox GridBoxAlignment GridBoxBackground GridBoxDividers GridBoxFrame GridBoxItemSize GridBoxItemStyle GridBoxOptions GridBoxSpacings GridCreationSettings GridDefaultElement GridElementStyleOptions GridFrame GridFrameMargins GridGraph GridLines GridLinesStyle GroebnerBasis GroupActionBase GroupCentralizer GroupElementFromWord GroupElementPosition GroupElementQ GroupElements GroupElementToWord GroupGenerators GroupMultiplicationTable GroupOrbits GroupOrder GroupPageBreakWithin GroupSetwiseStabilizer GroupStabilizer GroupStabilizerChain Gudermannian GumbelDistribution ' +\n 'HaarWavelet HadamardMatrix HalfNormalDistribution HamiltonianGraphQ HammingDistance HammingWindow HankelH1 HankelH2 HankelMatrix HannPoissonWindow HannWindow HaradaNortonGroupHN HararyGraph HarmonicMean HarmonicMeanFilter HarmonicNumber Hash HashTable Haversine HazardFunction Head HeadCompose Heads HeavisideLambda HeavisidePi HeavisideTheta HeldGroupHe HeldPart HelpBrowserLookup HelpBrowserNotebook HelpBrowserSettings HermiteDecomposition HermiteH HermitianMatrixQ HessenbergDecomposition Hessian HexadecimalCharacter Hexahedron HexahedronBox HexahedronBoxOptions HiddenSurface HighlightGraph HighlightImage HighpassFilter HigmanSimsGroupHS HilbertFilter HilbertMatrix Histogram Histogram3D HistogramDistribution HistogramList HistogramTransform HistogramTransformInterpolation HitMissTransform HITSCentrality HodgeDual HoeffdingD HoeffdingDTest Hold HoldAll HoldAllComplete HoldComplete HoldFirst HoldForm HoldPattern HoldRest HolidayCalendar HomeDirectory HomePage Horizontal HorizontalForm HorizontalGauge HorizontalScrollPosition HornerForm HotellingTSquareDistribution HoytDistribution HTMLSave Hue HumpDownHump HumpEqual HurwitzLerchPhi HurwitzZeta HyperbolicDistribution HypercubeGraph HyperexponentialDistribution Hyperfactorial Hypergeometric0F1 Hypergeometric0F1Regularized Hypergeometric1F1 Hypergeometric1F1Regularized Hypergeometric2F1 Hypergeometric2F1Regularized HypergeometricDistribution HypergeometricPFQ HypergeometricPFQRegularized HypergeometricU Hyperlink HyperlinkCreationSettings Hyphenation HyphenationOptions HypoexponentialDistribution HypothesisTestData ' +\n 'I Identity IdentityMatrix If IgnoreCase Im Image Image3D Image3DSlices ImageAccumulate ImageAdd ImageAdjust ImageAlign ImageApply ImageAspectRatio ImageAssemble ImageCache ImageCacheValid ImageCapture ImageChannels ImageClip ImageColorSpace ImageCompose ImageConvolve ImageCooccurrence ImageCorners ImageCorrelate ImageCorrespondingPoints ImageCrop ImageData ImageDataPacket ImageDeconvolve ImageDemosaic ImageDifference ImageDimensions ImageDistance ImageEffect ImageFeatureTrack ImageFileApply ImageFileFilter ImageFileScan ImageFilter ImageForestingComponents ImageForwardTransformation ImageHistogram ImageKeypoints ImageLevels ImageLines ImageMargins ImageMarkers ImageMeasurements ImageMultiply ImageOffset ImagePad ImagePadding ImagePartition ImagePeriodogram ImagePerspectiveTransformation ImageQ ImageRangeCache ImageReflect ImageRegion ImageResize ImageResolution ImageRotate ImageRotated ImageScaled ImageScan ImageSize ImageSizeAction ImageSizeCache ImageSizeMultipliers ImageSizeRaw ImageSubtract ImageTake ImageTransformation ImageTrim ImageType ImageValue ImageValuePositions Implies Import ImportAutoReplacements ImportString ImprovementImportance In IncidenceGraph IncidenceList IncidenceMatrix IncludeConstantBasis IncludeFileExtension IncludePods IncludeSingularTerm Increment Indent IndentingNewlineSpacings IndentMaxFraction IndependenceTest IndependentEdgeSetQ IndependentUnit IndependentVertexSetQ Indeterminate IndexCreationOptions Indexed IndexGraph IndexTag Inequality InexactNumberQ InexactNumbers Infinity Infix Information Inherited InheritScope Initialization InitializationCell InitializationCellEvaluation InitializationCellWarning InlineCounterAssignments InlineCounterIncrements InlineRules Inner Inpaint Input InputAliases InputAssumptions InputAutoReplacements InputField InputFieldBox InputFieldBoxOptions InputForm InputGrouping InputNamePacket InputNotebook InputPacket InputSettings InputStream InputString InputStringPacket InputToBoxFormPacket Insert InsertionPointObject InsertResults Inset Inset3DBox Inset3DBoxOptions InsetBox InsetBoxOptions Install InstallService InString Integer IntegerDigits IntegerExponent IntegerLength IntegerPart IntegerPartitions IntegerQ Integers IntegerString Integral Integrate Interactive InteractiveTradingChart Interlaced Interleaving InternallyBalancedDecomposition InterpolatingFunction InterpolatingPolynomial Interpolation InterpolationOrder InterpolationPoints InterpolationPrecision Interpretation InterpretationBox InterpretationBoxOptions InterpretationFunction ' +\n 'InterpretTemplate InterquartileRange Interrupt InterruptSettings Intersection Interval IntervalIntersection IntervalMemberQ IntervalUnion Inverse InverseBetaRegularized InverseCDF InverseChiSquareDistribution InverseContinuousWaveletTransform InverseDistanceTransform InverseEllipticNomeQ InverseErf InverseErfc InverseFourier InverseFourierCosTransform InverseFourierSequenceTransform InverseFourierSinTransform InverseFourierTransform InverseFunction InverseFunctions InverseGammaDistribution InverseGammaRegularized InverseGaussianDistribution InverseGudermannian InverseHaversine InverseJacobiCD InverseJacobiCN InverseJacobiCS InverseJacobiDC InverseJacobiDN InverseJacobiDS InverseJacobiNC InverseJacobiND InverseJacobiNS InverseJacobiSC InverseJacobiSD InverseJacobiSN InverseLaplaceTransform InversePermutation InverseRadon InverseSeries InverseSurvivalFunction InverseWaveletTransform InverseWeierstrassP InverseZTransform Invisible InvisibleApplication InvisibleTimes IrreduciblePolynomialQ IsolatingInterval IsomorphicGraphQ IsotopeData Italic Item ItemBox ItemBoxOptions ItemSize ItemStyle ItoProcess ' +\n 'JaccardDissimilarity JacobiAmplitude Jacobian JacobiCD JacobiCN JacobiCS JacobiDC JacobiDN JacobiDS JacobiNC JacobiND JacobiNS JacobiP JacobiSC JacobiSD JacobiSN JacobiSymbol JacobiZeta JankoGroupJ1 JankoGroupJ2 JankoGroupJ3 JankoGroupJ4 JarqueBeraALMTest JohnsonDistribution Join Joined JoinedCurve JoinedCurveBox JoinForm JordanDecomposition JordanModelDecomposition ' +\n 'K KagiChart KaiserBesselWindow KaiserWindow KalmanEstimator KalmanFilter KarhunenLoeveDecomposition KaryTree KatzCentrality KCoreComponents KDistribution KelvinBei KelvinBer KelvinKei KelvinKer KendallTau KendallTauTest KernelExecute KernelMixtureDistribution KernelObject Kernels Ket Khinchin KirchhoffGraph KirchhoffMatrix KleinInvariantJ KnightTourGraph KnotData KnownUnitQ KolmogorovSmirnovTest KroneckerDelta KroneckerModelDecomposition KroneckerProduct KroneckerSymbol KuiperTest KumaraswamyDistribution Kurtosis KuwaharaFilter ' +\n 'Label Labeled LabeledSlider LabelingFunction LabelStyle LaguerreL LambdaComponents LambertW LanczosWindow LandauDistribution Language LanguageCategory LaplaceDistribution LaplaceTransform Laplacian LaplacianFilter LaplacianGaussianFilter Large Larger Last Latitude LatitudeLongitude LatticeData LatticeReduce Launch LaunchKernels LayeredGraphPlot LayerSizeFunction LayoutInformation LCM LeafCount LeapYearQ LeastSquares LeastSquaresFilterKernel Left LeftArrow LeftArrowBar LeftArrowRightArrow LeftDownTeeVector LeftDownVector LeftDownVectorBar LeftRightArrow LeftRightVector LeftTee LeftTeeArrow LeftTeeVector LeftTriangle LeftTriangleBar LeftTriangleEqual LeftUpDownVector LeftUpTeeVector LeftUpVector LeftUpVectorBar LeftVector LeftVectorBar LegendAppearance Legended LegendFunction LegendLabel LegendLayout LegendMargins LegendMarkers LegendMarkerSize LegendreP LegendreQ LegendreType Length LengthWhile LerchPhi Less LessEqual LessEqualGreater LessFullEqual LessGreater LessLess LessSlantEqual LessTilde LetterCharacter LetterQ Level LeveneTest LeviCivitaTensor LevyDistribution Lexicographic LibraryFunction LibraryFunctionError LibraryFunctionInformation LibraryFunctionLoad LibraryFunctionUnload LibraryLoad LibraryUnload LicenseID LiftingFilterData LiftingWaveletTransform LightBlue LightBrown LightCyan Lighter LightGray LightGreen Lighting LightingAngle LightMagenta LightOrange LightPink LightPurple LightRed LightSources LightYellow Likelihood Limit LimitsPositioning LimitsPositioningTokens LindleyDistribution Line Line3DBox LinearFilter LinearFractionalTransform LinearModelFit LinearOffsetFunction LinearProgramming LinearRecurrence LinearSolve LinearSolveFunction LineBox LineBreak LinebreakAdjustments LineBreakChart LineBreakWithin LineColor LineForm LineGraph LineIndent LineIndentMaxFraction LineIntegralConvolutionPlot LineIntegralConvolutionScale LineLegend LineOpacity LineSpacing LineWrapParts LinkActivate LinkClose LinkConnect LinkConnectedQ LinkCreate LinkError LinkFlush LinkFunction LinkHost LinkInterrupt LinkLaunch LinkMode LinkObject LinkOpen LinkOptions LinkPatterns LinkProtocol LinkRead LinkReadHeld LinkReadyQ Links LinkWrite LinkWriteHeld LiouvilleLambda List Listable ListAnimate ListContourPlot ListContourPlot3D ListConvolve ListCorrelate ListCurvePathPlot ListDeconvolve ListDensityPlot Listen ListFourierSequenceTransform ListInterpolation ListLineIntegralConvolutionPlot ListLinePlot ListLogLinearPlot ListLogLogPlot ListLogPlot ListPicker ListPickerBox ListPickerBoxBackground ListPickerBoxOptions ListPlay ListPlot ListPlot3D ListPointPlot3D ListPolarPlot ListQ ListStreamDensityPlot ListStreamPlot ListSurfacePlot3D ListVectorDensityPlot ListVectorPlot ListVectorPlot3D ListZTransform Literal LiteralSearch LocalClusteringCoefficient LocalizeVariables LocationEquivalenceTest LocationTest Locator LocatorAutoCreate LocatorBox LocatorBoxOptions LocatorCentering LocatorPane LocatorPaneBox LocatorPaneBoxOptions ' +\n 'LocatorRegion Locked Log Log10 Log2 LogBarnesG LogGamma LogGammaDistribution LogicalExpand LogIntegral LogisticDistribution LogitModelFit LogLikelihood LogLinearPlot LogLogisticDistribution LogLogPlot LogMultinormalDistribution LogNormalDistribution LogPlot LogRankTest LogSeriesDistribution LongEqual Longest LongestAscendingSequence LongestCommonSequence LongestCommonSequencePositions LongestCommonSubsequence LongestCommonSubsequencePositions LongestMatch LongForm Longitude LongLeftArrow LongLeftRightArrow LongRightArrow Loopback LoopFreeGraphQ LowerCaseQ LowerLeftArrow LowerRightArrow LowerTriangularize LowpassFilter LQEstimatorGains LQGRegulator LQOutputRegulatorGains LQRegulatorGains LUBackSubstitution LucasL LuccioSamiComponents LUDecomposition LyapunovSolve LyonsGroupLy ' +\n 'MachineID MachineName MachineNumberQ MachinePrecision MacintoshSystemPageSetup Magenta Magnification Magnify MainSolve MaintainDynamicCaches Majority MakeBoxes MakeExpression MakeRules MangoldtLambda ManhattanDistance Manipulate Manipulator MannWhitneyTest MantissaExponent Manual Map MapAll MapAt MapIndexed MAProcess MapThread MarcumQ MardiaCombinedTest MardiaKurtosisTest MardiaSkewnessTest MarginalDistribution MarkovProcessProperties Masking MatchingDissimilarity MatchLocalNameQ MatchLocalNames MatchQ Material MathematicaNotation MathieuC MathieuCharacteristicA MathieuCharacteristicB MathieuCharacteristicExponent MathieuCPrime MathieuGroupM11 MathieuGroupM12 MathieuGroupM22 MathieuGroupM23 MathieuGroupM24 MathieuS MathieuSPrime MathMLForm MathMLText Matrices MatrixExp MatrixForm MatrixFunction MatrixLog MatrixPlot MatrixPower MatrixQ MatrixRank Max MaxBend MaxDetect MaxExtraBandwidths MaxExtraConditions MaxFeatures MaxFilter Maximize MaxIterations MaxMemoryUsed MaxMixtureKernels MaxPlotPoints MaxPoints MaxRecursion MaxStableDistribution MaxStepFraction MaxSteps MaxStepSize MaxValue MaxwellDistribution McLaughlinGroupMcL Mean MeanClusteringCoefficient MeanDegreeConnectivity MeanDeviation MeanFilter MeanGraphDistance MeanNeighborDegree MeanShift MeanShiftFilter Median MedianDeviation MedianFilter Medium MeijerG MeixnerDistribution MemberQ MemoryConstrained MemoryInUse Menu MenuAppearance MenuCommandKey MenuEvaluator MenuItem MenuPacket MenuSortingValue MenuStyle MenuView MergeDifferences Mesh MeshFunctions MeshRange MeshShading MeshStyle Message MessageDialog MessageList MessageName MessageOptions MessagePacket Messages MessagesNotebook MetaCharacters MetaInformation Method MethodOptions MexicanHatWavelet MeyerWavelet Min MinDetect MinFilter MinimalPolynomial MinimalStateSpaceModel Minimize Minors MinRecursion MinSize MinStableDistribution Minus MinusPlus MinValue Missing MissingDataMethod MittagLefflerE MixedRadix MixedRadixQuantity MixtureDistribution Mod Modal Mode Modular ModularLambda Module Modulus MoebiusMu Moment Momentary MomentConvert MomentEvaluate MomentGeneratingFunction Monday Monitor MonomialList MonomialOrder MonsterGroupM MorletWavelet MorphologicalBinarize MorphologicalBranchPoints MorphologicalComponents MorphologicalEulerNumber MorphologicalGraph MorphologicalPerimeter MorphologicalTransform Most MouseAnnotation MouseAppearance MouseAppearanceTag MouseButtons Mouseover MousePointerNote MousePosition MovingAverage MovingMedian MoyalDistribution MultiedgeStyle MultilaunchWarning MultiLetterItalics MultiLetterStyle MultilineFunction Multinomial MultinomialDistribution MultinormalDistribution MultiplicativeOrder Multiplicity Multiselection MultivariateHypergeometricDistribution MultivariatePoissonDistribution MultivariateTDistribution ' +\n 'N NakagamiDistribution NameQ Names NamespaceBox Nand NArgMax NArgMin NBernoulliB NCache NDSolve NDSolveValue Nearest NearestFunction NeedCurrentFrontEndPackagePacket NeedCurrentFrontEndSymbolsPacket NeedlemanWunschSimilarity Needs Negative NegativeBinomialDistribution NegativeMultinomialDistribution NeighborhoodGraph Nest NestedGreaterGreater NestedLessLess NestedScriptRules NestList NestWhile NestWhileList NevilleThetaC NevilleThetaD NevilleThetaN NevilleThetaS NewPrimitiveStyle NExpectation Next NextPrime NHoldAll NHoldFirst NHoldRest NicholsGridLines NicholsPlot NIntegrate NMaximize NMaxValue NMinimize NMinValue NominalVariables NonAssociative NoncentralBetaDistribution NoncentralChiSquareDistribution NoncentralFRatioDistribution NoncentralStudentTDistribution NonCommutativeMultiply NonConstants None NonlinearModelFit NonlocalMeansFilter NonNegative NonPositive Nor NorlundB Norm Normal NormalDistribution NormalGrouping Normalize NormalizedSquaredEuclideanDistance NormalsFunction NormFunction Not NotCongruent NotCupCap NotDoubleVerticalBar Notebook NotebookApply NotebookAutoSave NotebookClose NotebookConvertSettings NotebookCreate NotebookCreateReturnObject NotebookDefault NotebookDelete NotebookDirectory NotebookDynamicExpression NotebookEvaluate NotebookEventActions NotebookFileName NotebookFind NotebookFindReturnObject NotebookGet NotebookGetLayoutInformationPacket NotebookGetMisspellingsPacket NotebookInformation NotebookInterfaceObject NotebookLocate NotebookObject NotebookOpen NotebookOpenReturnObject NotebookPath NotebookPrint NotebookPut NotebookPutReturnObject NotebookRead NotebookResetGeneratedCells Notebooks NotebookSave NotebookSaveAs NotebookSelection NotebookSetupLayoutInformationPacket NotebooksMenu NotebookWrite NotElement NotEqualTilde NotExists NotGreater NotGreaterEqual NotGreaterFullEqual NotGreaterGreater NotGreaterLess NotGreaterSlantEqual NotGreaterTilde NotHumpDownHump NotHumpEqual NotLeftTriangle NotLeftTriangleBar NotLeftTriangleEqual NotLess NotLessEqual NotLessFullEqual NotLessGreater NotLessLess NotLessSlantEqual NotLessTilde NotNestedGreaterGreater NotNestedLessLess NotPrecedes NotPrecedesEqual NotPrecedesSlantEqual NotPrecedesTilde NotReverseElement NotRightTriangle NotRightTriangleBar NotRightTriangleEqual NotSquareSubset NotSquareSubsetEqual NotSquareSuperset NotSquareSupersetEqual NotSubset NotSubsetEqual NotSucceeds NotSucceedsEqual NotSucceedsSlantEqual NotSucceedsTilde NotSuperset NotSupersetEqual NotTilde NotTildeEqual NotTildeFullEqual NotTildeTilde NotVerticalBar NProbability NProduct NProductFactors NRoots NSolve NSum NSumTerms Null NullRecords NullSpace NullWords Number NumberFieldClassNumber NumberFieldDiscriminant NumberFieldFundamentalUnits NumberFieldIntegralBasis NumberFieldNormRepresentatives NumberFieldRegulator NumberFieldRootsOfUnity NumberFieldSignature NumberForm NumberFormat NumberMarks NumberMultiplier NumberPadding NumberPoint NumberQ NumberSeparator ' +\n 'NumberSigns NumberString Numerator NumericFunction NumericQ NuttallWindow NValues NyquistGridLines NyquistPlot ' +\n 'O ObservabilityGramian ObservabilityMatrix ObservableDecomposition ObservableModelQ OddQ Off Offset OLEData On ONanGroupON OneIdentity Opacity Open OpenAppend Opener OpenerBox OpenerBoxOptions OpenerView OpenFunctionInspectorPacket Opening OpenRead OpenSpecialOptions OpenTemporary OpenWrite Operate OperatingSystem OptimumFlowData Optional OptionInspectorSettings OptionQ Options OptionsPacket OptionsPattern OptionValue OptionValueBox OptionValueBoxOptions Or Orange Order OrderDistribution OrderedQ Ordering Orderless OrnsteinUhlenbeckProcess Orthogonalize Out Outer OutputAutoOverwrite OutputControllabilityMatrix OutputControllableModelQ OutputForm OutputFormData OutputGrouping OutputMathEditExpression OutputNamePacket OutputResponse OutputSizeLimit OutputStream Over OverBar OverDot Overflow OverHat Overlaps Overlay OverlayBox OverlayBoxOptions Overscript OverscriptBox OverscriptBoxOptions OverTilde OverVector OwenT OwnValues ' +\n 'PackingMethod PaddedForm Padding PadeApproximant PadLeft PadRight PageBreakAbove PageBreakBelow PageBreakWithin PageFooterLines PageFooters PageHeaderLines PageHeaders PageHeight PageRankCentrality PageWidth PairedBarChart PairedHistogram PairedSmoothHistogram PairedTTest PairedZTest PaletteNotebook PalettePath Pane PaneBox PaneBoxOptions Panel PanelBox PanelBoxOptions Paneled PaneSelector PaneSelectorBox PaneSelectorBoxOptions PaperWidth ParabolicCylinderD ParagraphIndent ParagraphSpacing ParallelArray ParallelCombine ParallelDo ParallelEvaluate Parallelization Parallelize ParallelMap ParallelNeeds ParallelProduct ParallelSubmit ParallelSum ParallelTable ParallelTry Parameter ParameterEstimator ParameterMixtureDistribution ParameterVariables ParametricFunction ParametricNDSolve ParametricNDSolveValue ParametricPlot ParametricPlot3D ParentConnect ParentDirectory ParentForm Parenthesize ParentList ParetoDistribution Part PartialCorrelationFunction PartialD ParticleData Partition PartitionsP PartitionsQ ParzenWindow PascalDistribution PassEventsDown PassEventsUp Paste PasteBoxFormInlineCells PasteButton Path PathGraph PathGraphQ Pattern PatternSequence PatternTest PauliMatrix PaulWavelet Pause PausedTime PDF PearsonChiSquareTest PearsonCorrelationTest PearsonDistribution PerformanceGoal PeriodicInterpolation Periodogram PeriodogramArray PermutationCycles PermutationCyclesQ PermutationGroup PermutationLength PermutationList PermutationListQ PermutationMax PermutationMin PermutationOrder PermutationPower PermutationProduct PermutationReplace Permutations PermutationSupport Permute PeronaMalikFilter Perpendicular PERTDistribution PetersenGraph PhaseMargins Pi Pick PIDData PIDDerivativeFilter PIDFeedforward PIDTune Piecewise PiecewiseExpand PieChart PieChart3D PillaiTrace PillaiTraceTest Pink Pivoting PixelConstrained PixelValue PixelValuePositions Placed Placeholder PlaceholderReplace Plain PlanarGraphQ Play PlayRange Plot Plot3D Plot3Matrix PlotDivision PlotJoined PlotLabel PlotLayout PlotLegends PlotMarkers PlotPoints PlotRange PlotRangeClipping PlotRangePadding PlotRegion PlotStyle Plus PlusMinus Pochhammer PodStates PodWidth Point Point3DBox PointBox PointFigureChart PointForm PointLegend PointSize PoissonConsulDistribution PoissonDistribution PoissonProcess PoissonWindow PolarAxes PolarAxesOrigin PolarGridLines PolarPlot PolarTicks PoleZeroMarkers PolyaAeppliDistribution PolyGamma Polygon Polygon3DBox Polygon3DBoxOptions PolygonBox PolygonBoxOptions PolygonHoleScale PolygonIntersections PolygonScale PolyhedronData PolyLog PolynomialExtendedGCD PolynomialForm PolynomialGCD PolynomialLCM PolynomialMod PolynomialQ PolynomialQuotient PolynomialQuotientRemainder PolynomialReduce PolynomialRemainder Polynomials PopupMenu PopupMenuBox PopupMenuBoxOptions PopupView PopupWindow Position Positive PositiveDefiniteMatrixQ PossibleZeroQ Postfix PostScript Power PowerDistribution PowerExpand PowerMod PowerModList ' +\n 'PowerSpectralDensity PowersRepresentations PowerSymmetricPolynomial Precedence PrecedenceForm Precedes PrecedesEqual PrecedesSlantEqual PrecedesTilde Precision PrecisionGoal PreDecrement PredictionRoot PreemptProtect PreferencesPath Prefix PreIncrement Prepend PrependTo PreserveImageOptions Previous PriceGraphDistribution PrimaryPlaceholder Prime PrimeNu PrimeOmega PrimePi PrimePowerQ PrimeQ Primes PrimeZetaP PrimitiveRoot PrincipalComponents PrincipalValue Print PrintAction PrintForm PrintingCopies PrintingOptions PrintingPageRange PrintingStartingPageNumber PrintingStyleEnvironment PrintPrecision PrintTemporary Prism PrismBox PrismBoxOptions PrivateCellOptions PrivateEvaluationOptions PrivateFontOptions PrivateFrontEndOptions PrivateNotebookOptions PrivatePaths Probability ProbabilityDistribution ProbabilityPlot ProbabilityPr ProbabilityScalePlot ProbitModelFit ProcessEstimator ProcessParameterAssumptions ProcessParameterQ ProcessStateDomain ProcessTimeDomain Product ProductDistribution ProductLog ProgressIndicator ProgressIndicatorBox ProgressIndicatorBoxOptions Projection Prolog PromptForm Properties Property PropertyList PropertyValue Proportion Proportional Protect Protected ProteinData Pruning PseudoInverse Purple Put PutAppend Pyramid PyramidBox PyramidBoxOptions ' +\n 'QBinomial QFactorial QGamma QHypergeometricPFQ QPochhammer QPolyGamma QRDecomposition QuadraticIrrationalQ Quantile QuantilePlot Quantity QuantityForm QuantityMagnitude QuantityQ QuantityUnit Quartics QuartileDeviation Quartiles QuartileSkewness QueueingNetworkProcess QueueingProcess QueueProperties Quiet Quit Quotient QuotientRemainder ' +\n 'RadialityCentrality RadicalBox RadicalBoxOptions RadioButton RadioButtonBar RadioButtonBox RadioButtonBoxOptions Radon RamanujanTau RamanujanTauL RamanujanTauTheta RamanujanTauZ Random RandomChoice RandomComplex RandomFunction RandomGraph RandomImage RandomInteger RandomPermutation RandomPrime RandomReal RandomSample RandomSeed RandomVariate RandomWalkProcess Range RangeFilter RangeSpecification RankedMax RankedMin Raster Raster3D Raster3DBox Raster3DBoxOptions RasterArray RasterBox RasterBoxOptions Rasterize RasterSize Rational RationalFunctions Rationalize Rationals Ratios Raw RawArray RawBoxes RawData RawMedium RayleighDistribution Re Read ReadList ReadProtected Real RealBlockDiagonalForm RealDigits RealExponent Reals Reap Record RecordLists RecordSeparators Rectangle RectangleBox RectangleBoxOptions RectangleChart RectangleChart3D RecurrenceFilter RecurrenceTable RecurringDigitsForm Red Reduce RefBox ReferenceLineStyle ReferenceMarkers ReferenceMarkerStyle Refine ReflectionMatrix ReflectionTransform Refresh RefreshRate RegionBinarize RegionFunction RegionPlot RegionPlot3D RegularExpression Regularization Reinstall Release ReleaseHold ReliabilityDistribution ReliefImage ReliefPlot Remove RemoveAlphaChannel RemoveAsynchronousTask Removed RemoveInputStreamMethod RemoveOutputStreamMethod RemoveProperty RemoveScheduledTask RenameDirectory RenameFile RenderAll RenderingOptions RenewalProcess RenkoChart Repeated RepeatedNull RepeatedString Replace ReplaceAll ReplaceHeldPart ReplaceImageValue ReplaceList ReplacePart ReplacePixelValue ReplaceRepeated Resampling Rescale RescalingTransform ResetDirectory ResetMenusPacket ResetScheduledTask Residue Resolve Rest Resultant ResumePacket Return ReturnExpressionPacket ReturnInputFormPacket ReturnPacket ReturnTextPacket Reverse ReverseBiorthogonalSplineWavelet ReverseElement ReverseEquilibrium ReverseGraph ReverseUpEquilibrium RevolutionAxis RevolutionPlot3D RGBColor RiccatiSolve RiceDistribution RidgeFilter RiemannR RiemannSiegelTheta RiemannSiegelZ Riffle Right RightArrow RightArrowBar RightArrowLeftArrow RightCosetRepresentative RightDownTeeVector RightDownVector RightDownVectorBar RightTee RightTeeArrow RightTeeVector RightTriangle RightTriangleBar RightTriangleEqual RightUpDownVector RightUpTeeVector RightUpVector RightUpVectorBar RightVector RightVectorBar RiskAchievementImportance RiskReductionImportance RogersTanimotoDissimilarity Root RootApproximant RootIntervals RootLocusPlot RootMeanSquare RootOfUnityQ RootReduce Roots RootSum Rotate RotateLabel RotateLeft RotateRight RotationAction RotationBox RotationBoxOptions RotationMatrix RotationTransform Round RoundImplies RoundingRadius Row RowAlignments RowBackgrounds RowBox RowHeights RowLines RowMinHeight RowReduce RowsEqual RowSpacings RSolve RudvalisGroupRu Rule RuleCondition RuleDelayed RuleForm RulerUnits Run RunScheduledTask RunThrough RuntimeAttributes RuntimeOptions RussellRaoDissimilarity ' +\n 'SameQ SameTest SampleDepth SampledSoundFunction SampledSoundList SampleRate SamplingPeriod SARIMAProcess SARMAProcess SatisfiabilityCount SatisfiabilityInstances SatisfiableQ Saturday Save Saveable SaveAutoDelete SaveDefinitions SawtoothWave Scale Scaled ScaleDivisions ScaledMousePosition ScaleOrigin ScalePadding ScaleRanges ScaleRangeStyle ScalingFunctions ScalingMatrix ScalingTransform Scan ScheduledTaskActiveQ ScheduledTaskData ScheduledTaskObject ScheduledTasks SchurDecomposition ScientificForm ScreenRectangle ScreenStyleEnvironment ScriptBaselineShifts ScriptLevel ScriptMinSize ScriptRules ScriptSizeMultipliers Scrollbars ScrollingOptions ScrollPosition Sec Sech SechDistribution SectionGrouping SectorChart SectorChart3D SectorOrigin SectorSpacing SeedRandom Select Selectable SelectComponents SelectedCells SelectedNotebook Selection SelectionAnimate SelectionCell SelectionCellCreateCell SelectionCellDefaultStyle SelectionCellParentStyle SelectionCreateCell SelectionDebuggerTag SelectionDuplicateCell SelectionEvaluate SelectionEvaluateCreateCell SelectionMove SelectionPlaceholder SelectionSetStyle SelectWithContents SelfLoops SelfLoopStyle SemialgebraicComponentInstances SendMail Sequence SequenceAlignment SequenceForm SequenceHold SequenceLimit Series SeriesCoefficient SeriesData SessionTime Set SetAccuracy SetAlphaChannel SetAttributes Setbacks SetBoxFormNamesPacket SetDelayed SetDirectory SetEnvironment SetEvaluationNotebook SetFileDate SetFileLoadingContext SetNotebookStatusLine SetOptions SetOptionsPacket SetPrecision SetProperty SetSelectedNotebook SetSharedFunction SetSharedVariable SetSpeechParametersPacket SetStreamPosition SetSystemOptions Setter SetterBar SetterBox SetterBoxOptions Setting SetValue Shading Shallow ShannonWavelet ShapiroWilkTest Share Sharpen ShearingMatrix ShearingTransform ShenCastanMatrix Short ShortDownArrow Shortest ShortestMatch ShortestPathFunction ShortLeftArrow ShortRightArrow ShortUpArrow Show ShowAutoStyles ShowCellBracket ShowCellLabel ShowCellTags ShowClosedCellArea ShowContents ShowControls ShowCursorTracker ShowGroupOpenCloseIcon ShowGroupOpener ShowInvisibleCharacters ShowPageBreaks ShowPredictiveInterface ShowSelection ShowShortBoxForm ShowSpecialCharacters ShowStringCharacters ShowSyntaxStyles ShrinkingDelay ShrinkWrapBoundingBox SiegelTheta SiegelTukeyTest Sign Signature SignedRankTest SignificanceLevel SignPadding SignTest SimilarityRules SimpleGraph SimpleGraphQ Simplify Sin Sinc SinghMaddalaDistribution SingleEvaluation SingleLetterItalics SingleLetterStyle SingularValueDecomposition SingularValueList SingularValuePlot SingularValues Sinh SinhIntegral SinIntegral SixJSymbol Skeleton SkeletonTransform SkellamDistribution Skewness SkewNormalDistribution Skip SliceDistribution Slider Slider2D Slider2DBox Slider2DBoxOptions SliderBox SliderBoxOptions SlideView Slot SlotSequence Small SmallCircle Smaller SmithDelayCompensator SmithWatermanSimilarity ' +\n 'SmoothDensityHistogram SmoothHistogram SmoothHistogram3D SmoothKernelDistribution SocialMediaData Socket SokalSneathDissimilarity Solve SolveAlways SolveDelayed Sort SortBy Sound SoundAndGraphics SoundNote SoundVolume Sow Space SpaceForm Spacer Spacings Span SpanAdjustments SpanCharacterRounding SpanFromAbove SpanFromBoth SpanFromLeft SpanLineThickness SpanMaxSize SpanMinSize SpanningCharacters SpanSymmetric SparseArray SpatialGraphDistribution Speak SpeakTextPacket SpearmanRankTest SpearmanRho Spectrogram SpectrogramArray Specularity SpellingCorrection SpellingDictionaries SpellingDictionariesPath SpellingOptions SpellingSuggestionsPacket Sphere SphereBox SphericalBesselJ SphericalBesselY SphericalHankelH1 SphericalHankelH2 SphericalHarmonicY SphericalPlot3D SphericalRegion SpheroidalEigenvalue SpheroidalJoiningFactor SpheroidalPS SpheroidalPSPrime SpheroidalQS SpheroidalQSPrime SpheroidalRadialFactor SpheroidalS1 SpheroidalS1Prime SpheroidalS2 SpheroidalS2Prime Splice SplicedDistribution SplineClosed SplineDegree SplineKnots SplineWeights Split SplitBy SpokenString Sqrt SqrtBox SqrtBoxOptions Square SquaredEuclideanDistance SquareFreeQ SquareIntersection SquaresR SquareSubset SquareSubsetEqual SquareSuperset SquareSupersetEqual SquareUnion SquareWave StabilityMargins StabilityMarginsStyle StableDistribution Stack StackBegin StackComplete StackInhibit StandardDeviation StandardDeviationFilter StandardForm Standardize StandbyDistribution Star StarGraph StartAsynchronousTask StartingStepSize StartOfLine StartOfString StartScheduledTask StartupSound StateDimensions StateFeedbackGains StateOutputEstimator StateResponse StateSpaceModel StateSpaceRealization StateSpaceTransform StationaryDistribution StationaryWaveletPacketTransform StationaryWaveletTransform StatusArea StatusCentrality StepMonitor StieltjesGamma StirlingS1 StirlingS2 StopAsynchronousTask StopScheduledTask StrataVariables StratonovichProcess StreamColorFunction StreamColorFunctionScaling StreamDensityPlot StreamPlot StreamPoints StreamPosition Streams StreamScale StreamStyle String StringBreak StringByteCount StringCases StringCount StringDrop StringExpression StringForm StringFormat StringFreeQ StringInsert StringJoin StringLength StringMatchQ StringPosition StringQ StringReplace StringReplaceList StringReplacePart StringReverse StringRotateLeft StringRotateRight StringSkeleton StringSplit StringTake StringToStream StringTrim StripBoxes StripOnInput StripWrapperBoxes StrokeForm StructuralImportance StructuredArray StructuredSelection StruveH StruveL Stub StudentTDistribution Style StyleBox StyleBoxAutoDelete StyleBoxOptions StyleData StyleDefinitions StyleForm StyleKeyMapping StyleMenuListing StyleNameDialogSettings StyleNames StylePrint StyleSheetPath Subfactorial Subgraph SubMinus SubPlus SubresultantPolynomialRemainders ' +\n 'SubresultantPolynomials Subresultants Subscript SubscriptBox SubscriptBoxOptions Subscripted Subset SubsetEqual Subsets SubStar Subsuperscript SubsuperscriptBox SubsuperscriptBoxOptions Subtract SubtractFrom SubValues Succeeds SucceedsEqual SucceedsSlantEqual SucceedsTilde SuchThat Sum SumConvergence Sunday SuperDagger SuperMinus SuperPlus Superscript SuperscriptBox SuperscriptBoxOptions Superset SupersetEqual SuperStar Surd SurdForm SurfaceColor SurfaceGraphics SurvivalDistribution SurvivalFunction SurvivalModel SurvivalModelFit SuspendPacket SuzukiDistribution SuzukiGroupSuz SwatchLegend Switch Symbol SymbolName SymletWavelet Symmetric SymmetricGroup SymmetricMatrixQ SymmetricPolynomial SymmetricReduction Symmetrize SymmetrizedArray SymmetrizedArrayRules SymmetrizedDependentComponents SymmetrizedIndependentComponents SymmetrizedReplacePart SynchronousInitialization SynchronousUpdating Syntax SyntaxForm SyntaxInformation SyntaxLength SyntaxPacket SyntaxQ SystemDialogInput SystemException SystemHelpPath SystemInformation SystemInformationData SystemOpen SystemOptions SystemsModelDelay SystemsModelDelayApproximate SystemsModelDelete SystemsModelDimensions SystemsModelExtract SystemsModelFeedbackConnect SystemsModelLabels SystemsModelOrder SystemsModelParallelConnect SystemsModelSeriesConnect SystemsModelStateFeedbackConnect SystemStub ' +\n 'Tab TabFilling Table TableAlignments TableDepth TableDirections TableForm TableHeadings TableSpacing TableView TableViewBox TabSpacings TabView TabViewBox TabViewBoxOptions TagBox TagBoxNote TagBoxOptions TaggingRules TagSet TagSetDelayed TagStyle TagUnset Take TakeWhile Tally Tan Tanh TargetFunctions TargetUnits TautologyQ TelegraphProcess TemplateBox TemplateBoxOptions TemplateSlotSequence TemporalData Temporary TemporaryVariable TensorContract TensorDimensions TensorExpand TensorProduct TensorQ TensorRank TensorReduce TensorSymmetry TensorTranspose TensorWedge Tetrahedron TetrahedronBox TetrahedronBoxOptions TeXForm TeXSave Text Text3DBox Text3DBoxOptions TextAlignment TextBand TextBoundingBox TextBox TextCell TextClipboardType TextData TextForm TextJustification TextLine TextPacket TextParagraph TextRecognize TextRendering TextStyle Texture TextureCoordinateFunction TextureCoordinateScaling Therefore ThermometerGauge Thick Thickness Thin Thinning ThisLink ThompsonGroupTh Thread ThreeJSymbol Threshold Through Throw Thumbnail Thursday Ticks TicksStyle Tilde TildeEqual TildeFullEqual TildeTilde TimeConstrained TimeConstraint Times TimesBy TimeSeriesForecast TimeSeriesInvertibility TimeUsed TimeValue TimeZone Timing Tiny TitleGrouping TitsGroupT ToBoxes ToCharacterCode ToColor ToContinuousTimeModel ToDate ToDiscreteTimeModel ToeplitzMatrix ToExpression ToFileName Together Toggle ToggleFalse Toggler TogglerBar TogglerBox TogglerBoxOptions ToHeldExpression ToInvertibleTimeSeries TokenWords Tolerance ToLowerCase ToNumberField TooBig Tooltip TooltipBox TooltipBoxOptions TooltipDelay TooltipStyle Top TopHatTransform TopologicalSort ToRadicals ToRules ToString Total TotalHeight TotalVariationFilter TotalWidth TouchscreenAutoZoom TouchscreenControlPlacement ToUpperCase Tr Trace TraceAbove TraceAction TraceBackward TraceDepth TraceDialog TraceForward TraceInternal TraceLevel TraceOff TraceOn TraceOriginal TracePrint TraceScan TrackedSymbols TradingChart TraditionalForm TraditionalFunctionNotation TraditionalNotation TraditionalOrder TransferFunctionCancel TransferFunctionExpand TransferFunctionFactor TransferFunctionModel TransferFunctionPoles TransferFunctionTransform TransferFunctionZeros TransformationFunction TransformationFunctions TransformationMatrix TransformedDistribution TransformedField Translate TranslationTransform TransparentColor Transpose TreeForm TreeGraph TreeGraphQ TreePlot TrendStyle TriangleWave TriangularDistribution Trig TrigExpand TrigFactor TrigFactorList Trigger TrigReduce TrigToExp TrimmedMean True TrueQ TruncatedDistribution TsallisQExponentialDistribution TsallisQGaussianDistribution TTest Tube TubeBezierCurveBox TubeBezierCurveBoxOptions TubeBox TubeBSplineCurveBox TubeBSplineCurveBoxOptions Tuesday TukeyLambdaDistribution TukeyWindow Tuples TuranGraph TuringMachine ' +\n 'Transparent ' +\n 'UnateQ Uncompress Undefined UnderBar Underflow Underlined Underoverscript UnderoverscriptBox UnderoverscriptBoxOptions Underscript UnderscriptBox UnderscriptBoxOptions UndirectedEdge UndirectedGraph UndirectedGraphQ UndocumentedTestFEParserPacket UndocumentedTestGetSelectionPacket Unequal Unevaluated UniformDistribution UniformGraphDistribution UniformSumDistribution Uninstall Union UnionPlus Unique UnitBox UnitConvert UnitDimensions Unitize UnitRootTest UnitSimplify UnitStep UnitTriangle UnitVector Unprotect UnsameQ UnsavedVariables Unset UnsetShared UntrackedVariables Up UpArrow UpArrowBar UpArrowDownArrow Update UpdateDynamicObjects UpdateDynamicObjectsSynchronous UpdateInterval UpDownArrow UpEquilibrium UpperCaseQ UpperLeftArrow UpperRightArrow UpperTriangularize Upsample UpSet UpSetDelayed UpTee UpTeeArrow UpValues URL URLFetch URLFetchAsynchronous URLSave URLSaveAsynchronous UseGraphicsRange Using UsingFrontEnd ' +\n 'V2Get ValidationLength Value ValueBox ValueBoxOptions ValueForm ValueQ ValuesData Variables Variance VarianceEquivalenceTest VarianceEstimatorFunction VarianceGammaDistribution VarianceTest VectorAngle VectorColorFunction VectorColorFunctionScaling VectorDensityPlot VectorGlyphData VectorPlot VectorPlot3D VectorPoints VectorQ Vectors VectorScale VectorStyle Vee Verbatim Verbose VerboseConvertToPostScriptPacket VerifyConvergence VerifySolutions VerifyTestAssumptions Version VersionNumber VertexAdd VertexCapacity VertexColors VertexComponent VertexConnectivity VertexCoordinateRules VertexCoordinates VertexCorrelationSimilarity VertexCosineSimilarity VertexCount VertexCoverQ VertexDataCoordinates VertexDegree VertexDelete VertexDiceSimilarity VertexEccentricity VertexInComponent VertexInDegree VertexIndex VertexJaccardSimilarity VertexLabeling VertexLabels VertexLabelStyle VertexList VertexNormals VertexOutComponent VertexOutDegree VertexQ VertexRenderingFunction VertexReplace VertexShape VertexShapeFunction VertexSize VertexStyle VertexTextureCoordinates VertexWeight Vertical VerticalBar VerticalForm VerticalGauge VerticalSeparator VerticalSlider VerticalTilde ViewAngle ViewCenter ViewMatrix ViewPoint ViewPointSelectorSettings ViewPort ViewRange ViewVector ViewVertical VirtualGroupData Visible VisibleCell VoigtDistribution VonMisesDistribution ' +\n 'WaitAll WaitAsynchronousTask WaitNext WaitUntil WakebyDistribution WalleniusHypergeometricDistribution WaringYuleDistribution WatershedComponents WatsonUSquareTest WattsStrogatzGraphDistribution WaveletBestBasis WaveletFilterCoefficients WaveletImagePlot WaveletListPlot WaveletMapIndexed WaveletMatrixPlot WaveletPhi WaveletPsi WaveletScale WaveletScalogram WaveletThreshold WeaklyConnectedComponents WeaklyConnectedGraphQ WeakStationarity WeatherData WeberE Wedge Wednesday WeibullDistribution WeierstrassHalfPeriods WeierstrassInvariants WeierstrassP WeierstrassPPrime WeierstrassSigma WeierstrassZeta WeightedAdjacencyGraph WeightedAdjacencyMatrix WeightedData WeightedGraphQ Weights WelchWindow WheelGraph WhenEvent Which While White Whitespace WhitespaceCharacter WhittakerM WhittakerW WienerFilter WienerProcess WignerD WignerSemicircleDistribution WilksW WilksWTest WindowClickSelect WindowElements WindowFloating WindowFrame WindowFrameElements WindowMargins WindowMovable WindowOpacity WindowSelected WindowSize WindowStatusArea WindowTitle WindowToolbars WindowWidth With WolframAlpha WolframAlphaDate WolframAlphaQuantity WolframAlphaResult Word WordBoundary WordCharacter WordData WordSearch WordSeparators WorkingPrecision Write WriteString Wronskian ' +\n 'XMLElement XMLObject Xnor Xor ' +\n 'Yellow YuleDissimilarity ' +\n 'ZernikeR ZeroSymmetric ZeroTest ZeroWidthTimes Zeta ZetaZero ZipfDistribution ZTest ZTransform ' +\n '$Aborted $ActivationGroupID $ActivationKey $ActivationUserRegistered $AddOnsDirectory $AssertFunction $Assumptions $AsynchronousTask $BaseDirectory $BatchInput $BatchOutput $BoxForms $ByteOrdering $Canceled $CharacterEncoding $CharacterEncodings $CommandLine $CompilationTarget $ConditionHold $ConfiguredKernels $Context $ContextPath $ControlActiveSetting $CreationDate $CurrentLink $DateStringFormat $DefaultFont $DefaultFrontEnd $DefaultImagingDevice $DefaultPath $Display $DisplayFunction $DistributedContexts $DynamicEvaluation $Echo $Epilog $ExportFormats $Failed $FinancialDataSource $FormatType $FrontEnd $FrontEndSession $GeoLocation $HistoryLength $HomeDirectory $HTTPCookies $IgnoreEOF $ImagingDevices $ImportFormats $InitialDirectory $Input $InputFileName $InputStreamMethods $Inspector $InstallationDate $InstallationDirectory $InterfaceEnvironment $IterationLimit $KernelCount $KernelID $Language $LaunchDirectory $LibraryPath $LicenseExpirationDate $LicenseID $LicenseProcesses $LicenseServer $LicenseSubprocesses $LicenseType $Line $Linked $LinkSupported $LoadedFiles $MachineAddresses $MachineDomain $MachineDomains $MachineEpsilon $MachineID $MachineName $MachinePrecision $MachineType $MaxExtraPrecision $MaxLicenseProcesses $MaxLicenseSubprocesses $MaxMachineNumber $MaxNumber $MaxPiecewiseCases $MaxPrecision $MaxRootDegree $MessageGroups $MessageList $MessagePrePrint $Messages $MinMachineNumber $MinNumber $MinorReleaseNumber $MinPrecision $ModuleNumber $NetworkLicense $NewMessage $NewSymbol $Notebooks $NumberMarks $Off $OperatingSystem $Output $OutputForms $OutputSizeLimit $OutputStreamMethods $Packages $ParentLink $ParentProcessID $PasswordFile $PatchLevelID $Path $PathnameSeparator $PerformanceGoal $PipeSupported $Post $Pre $PreferencesDirectory $PrePrint $PreRead $PrintForms $PrintLiteral $ProcessID $ProcessorCount $ProcessorType $ProductInformation $ProgramName $RandomState $RecursionLimit $ReleaseNumber $RootDirectory $ScheduledTask $ScriptCommandLine $SessionID $SetParentLink $SharedFunctions $SharedVariables $SoundDisplay $SoundDisplayFunction $SuppressInputFormHeads $SynchronousEvaluation $SyntaxHandler $System $SystemCharacterEncoding $SystemID $SystemWordLength $TemporaryDirectory $TemporaryPrefix $TextStyle $TimedOut $TimeUnit $TimeZone $TopDirectory $TraceOff $TraceOn $TracePattern $TracePostAction $TracePreAction $Urgent $UserAddOnsDirectory $UserBaseDirectory $UserDocumentsDirectory $UserName $Version $VersionNumber',\n contains: [\n {\n className: 'comment',\n begin: /\\(\\*/, end: /\\*\\)/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n begin: /\\{/, end: /\\}/,\n illegal: /:/\n }\n ]\n };\n};","module.exports = /*\n Formal syntax is not published, helpful link:\n https://github.com/kornilova-l/matlab-IntelliJ-plugin/blob/master/src/main/grammar/Matlab.bnf\n*/\nfunction(hljs) {\n\n var TRANSPOSE_RE = '(\\'|\\\\.\\')+';\n var TRANSPOSE = {\n relevance: 0,\n contains: [\n { begin: TRANSPOSE_RE }\n ]\n };\n\n return {\n keywords: {\n keyword:\n 'break case catch classdef continue else elseif end enumerated events for function ' +\n 'global if methods otherwise parfor persistent properties return spmd switch try while',\n built_in:\n 'sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan ' +\n 'atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot ' +\n 'cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog ' +\n 'realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal ' +\n 'cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli ' +\n 'besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma ' +\n 'gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms ' +\n 'nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones ' +\n 'eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ' +\n 'ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril ' +\n 'triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute ' +\n 'shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan ' +\n 'isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal ' +\n 'rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table ' +\n 'readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun ' +\n 'legend intersect ismember procrustes hold num2cell '\n },\n illegal: '(//|\"|#|/\\\\*|\\\\s+/\\\\w+)',\n contains: [\n {\n className: 'function',\n beginKeywords: 'function', end: '$',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'params',\n variants: [\n {begin: '\\\\(', end: '\\\\)'},\n {begin: '\\\\[', end: '\\\\]'}\n ]\n }\n ]\n },\n {\n className: 'built_in',\n begin: /true|false/,\n relevance: 0,\n starts: TRANSPOSE\n },\n {\n begin: '[a-zA-Z][a-zA-Z_0-9]*' + TRANSPOSE_RE,\n relevance: 0\n },\n {\n className: 'number',\n begin: hljs.C_NUMBER_RE,\n relevance: 0,\n starts: TRANSPOSE\n },\n {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {begin: '\\'\\''}]\n },\n {\n begin: /\\]|}|\\)/,\n relevance: 0,\n starts: TRANSPOSE\n },\n {\n className: 'string',\n begin: '\"', end: '\"',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {begin: '\"\"'}\n ],\n starts: TRANSPOSE\n },\n hljs.COMMENT('^\\\\s*\\\\%\\\\{\\\\s*$', '^\\\\s*\\\\%\\\\}\\\\s*$'),\n hljs.COMMENT('\\\\%', '$')\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = 'if then else elseif for thru do while unless step in and or not';\n var LITERALS = 'true false unknown inf minf ind und %e %i %pi %phi %gamma';\n var BUILTIN_FUNCTIONS =\n ' abasep abs absint absolute_real_time acos acosh acot acoth acsc acsch activate'\n + ' addcol add_edge add_edges addmatrices addrow add_vertex add_vertices adjacency_matrix'\n + ' adjoin adjoint af agd airy airy_ai airy_bi airy_dai airy_dbi algsys alg_type'\n + ' alias allroots alphacharp alphanumericp amortization %and annuity_fv'\n + ' annuity_pv antid antidiff AntiDifference append appendfile apply apply1 apply2'\n + ' applyb1 apropos args arit_amortization arithmetic arithsum array arrayapply'\n + ' arrayinfo arraymake arraysetapply ascii asec asech asin asinh askinteger'\n + ' asksign assoc assoc_legendre_p assoc_legendre_q assume assume_external_byte_order'\n + ' asympa at atan atan2 atanh atensimp atom atvalue augcoefmatrix augmented_lagrangian_method'\n + ' av average_degree backtrace bars barsplot barsplot_description base64 base64_decode'\n + ' bashindices batch batchload bc2 bdvac belln benefit_cost bern bernpoly bernstein_approx'\n + ' bernstein_expand bernstein_poly bessel bessel_i bessel_j bessel_k bessel_simplify'\n + ' bessel_y beta beta_incomplete beta_incomplete_generalized beta_incomplete_regularized'\n + ' bezout bfallroots bffac bf_find_root bf_fmin_cobyla bfhzeta bfloat bfloatp'\n + ' bfpsi bfpsi0 bfzeta biconnected_components bimetric binomial bipartition'\n + ' block blockmatrixp bode_gain bode_phase bothcoef box boxplot boxplot_description'\n + ' break bug_report build_info|10 buildq build_sample burn cabs canform canten'\n + ' cardinality carg cartan cartesian_product catch cauchy_matrix cbffac cdf_bernoulli'\n + ' cdf_beta cdf_binomial cdf_cauchy cdf_chi2 cdf_continuous_uniform cdf_discrete_uniform'\n + ' cdf_exp cdf_f cdf_gamma cdf_general_finite_discrete cdf_geometric cdf_gumbel'\n + ' cdf_hypergeometric cdf_laplace cdf_logistic cdf_lognormal cdf_negative_binomial'\n + ' cdf_noncentral_chi2 cdf_noncentral_student_t cdf_normal cdf_pareto cdf_poisson'\n + ' cdf_rank_sum cdf_rayleigh cdf_signed_rank cdf_student_t cdf_weibull cdisplay'\n + ' ceiling central_moment cequal cequalignore cf cfdisrep cfexpand cgeodesic'\n + ' cgreaterp cgreaterpignore changename changevar chaosgame charat charfun charfun2'\n + ' charlist charp charpoly chdir chebyshev_t chebyshev_u checkdiv check_overlaps'\n + ' chinese cholesky christof chromatic_index chromatic_number cint circulant_graph'\n + ' clear_edge_weight clear_rules clear_vertex_label clebsch_gordan clebsch_graph'\n + ' clessp clesspignore close closefile cmetric coeff coefmatrix cograd col collapse'\n + ' collectterms columnop columnspace columnswap columnvector combination combine'\n + ' comp2pui compare compfile compile compile_file complement_graph complete_bipartite_graph'\n + ' complete_graph complex_number_p components compose_functions concan concat'\n + ' conjugate conmetderiv connected_components connect_vertices cons constant'\n + ' constantp constituent constvalue cont2part content continuous_freq contortion'\n + ' contour_plot contract contract_edge contragrad contrib_ode convert coord'\n + ' copy copy_file copy_graph copylist copymatrix cor cos cosh cot coth cov cov1'\n + ' covdiff covect covers crc24sum create_graph create_list csc csch csetup cspline'\n + ' ctaylor ct_coordsys ctransform ctranspose cube_graph cuboctahedron_graph'\n + ' cunlisp cv cycle_digraph cycle_graph cylindrical days360 dblint deactivate'\n + ' declare declare_constvalue declare_dimensions declare_fundamental_dimensions'\n + ' declare_fundamental_units declare_qty declare_translated declare_unit_conversion'\n + ' declare_units declare_weights decsym defcon define define_alt_display define_variable'\n + ' defint defmatch defrule defstruct deftaylor degree_sequence del delete deleten'\n + ' delta demo demoivre denom depends derivdegree derivlist describe desolve'\n + ' determinant dfloat dgauss_a dgauss_b dgeev dgemm dgeqrf dgesv dgesvd diag'\n + ' diagmatrix diag_matrix diagmatrixp diameter diff digitcharp dimacs_export'\n + ' dimacs_import dimension dimensionless dimensions dimensions_as_list direct'\n + ' directory discrete_freq disjoin disjointp disolate disp dispcon dispform'\n + ' dispfun dispJordan display disprule dispterms distrib divide divisors divsum'\n + ' dkummer_m dkummer_u dlange dodecahedron_graph dotproduct dotsimp dpart'\n + ' draw draw2d draw3d drawdf draw_file draw_graph dscalar echelon edge_coloring'\n + ' edge_connectivity edges eigens_by_jacobi eigenvalues eigenvectors eighth'\n + ' einstein eivals eivects elapsed_real_time elapsed_run_time ele2comp ele2polynome'\n + ' ele2pui elem elementp elevation_grid elim elim_allbut eliminate eliminate_using'\n + ' ellipse elliptic_e elliptic_ec elliptic_eu elliptic_f elliptic_kc elliptic_pi'\n + ' ematrix empty_graph emptyp endcons entermatrix entertensor entier equal equalp'\n + ' equiv_classes erf erfc erf_generalized erfi errcatch error errormsg errors'\n + ' euler ev eval_string evenp every evolution evolution2d evundiff example exp'\n + ' expand expandwrt expandwrt_factored expint expintegral_chi expintegral_ci'\n + ' expintegral_e expintegral_e1 expintegral_ei expintegral_e_simplify expintegral_li'\n + ' expintegral_shi expintegral_si explicit explose exponentialize express expt'\n + ' exsec extdiff extract_linear_equations extremal_subset ezgcd %f f90 facsum'\n + ' factcomb factor factorfacsum factorial factorout factorsum facts fast_central_elements'\n + ' fast_linsolve fasttimes featurep fernfale fft fib fibtophi fifth filename_merge'\n + ' file_search file_type fillarray findde find_root find_root_abs find_root_error'\n + ' find_root_rel first fix flatten flength float floatnump floor flower_snark'\n + ' flush flush1deriv flushd flushnd flush_output fmin_cobyla forget fortran'\n + ' fourcos fourexpand fourier fourier_elim fourint fourintcos fourintsin foursimp'\n + ' foursin fourth fposition frame_bracket freeof freshline fresnel_c fresnel_s'\n + ' from_adjacency_matrix frucht_graph full_listify fullmap fullmapl fullratsimp'\n + ' fullratsubst fullsetify funcsolve fundamental_dimensions fundamental_units'\n + ' fundef funmake funp fv g0 g1 gamma gamma_greek gamma_incomplete gamma_incomplete_generalized'\n + ' gamma_incomplete_regularized gauss gauss_a gauss_b gaussprob gcd gcdex gcdivide'\n + ' gcfac gcfactor gd generalized_lambert_w genfact gen_laguerre genmatrix gensym'\n + ' geo_amortization geo_annuity_fv geo_annuity_pv geomap geometric geometric_mean'\n + ' geosum get getcurrentdirectory get_edge_weight getenv get_lu_factors get_output_stream_string'\n + ' get_pixel get_plot_option get_tex_environment get_tex_environment_default'\n + ' get_vertex_label gfactor gfactorsum ggf girth global_variances gn gnuplot_close'\n + ' gnuplot_replot gnuplot_reset gnuplot_restart gnuplot_start go Gosper GosperSum'\n + ' gr2d gr3d gradef gramschmidt graph6_decode graph6_encode graph6_export graph6_import'\n + ' graph_center graph_charpoly graph_eigenvalues graph_flow graph_order graph_periphery'\n + ' graph_product graph_size graph_union great_rhombicosidodecahedron_graph great_rhombicuboctahedron_graph'\n + ' grid_graph grind grobner_basis grotzch_graph hamilton_cycle hamilton_path'\n + ' hankel hankel_1 hankel_2 harmonic harmonic_mean hav heawood_graph hermite'\n + ' hessian hgfred hilbertmap hilbert_matrix hipow histogram histogram_description'\n + ' hodge horner hypergeometric i0 i1 %ibes ic1 ic2 ic_convert ichr1 ichr2 icosahedron_graph'\n + ' icosidodecahedron_graph icurvature ident identfor identity idiff idim idummy'\n + ' ieqn %if ifactors iframes ifs igcdex igeodesic_coords ilt image imagpart'\n + ' imetric implicit implicit_derivative implicit_plot indexed_tensor indices'\n + ' induced_subgraph inferencep inference_result infix info_display init_atensor'\n + ' init_ctensor in_neighbors innerproduct inpart inprod inrt integerp integer_partitions'\n + ' integrate intersect intersection intervalp intopois intosum invariant1 invariant2'\n + ' inverse_fft inverse_jacobi_cd inverse_jacobi_cn inverse_jacobi_cs inverse_jacobi_dc'\n + ' inverse_jacobi_dn inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd inverse_jacobi_ns'\n + ' inverse_jacobi_sc inverse_jacobi_sd inverse_jacobi_sn invert invert_by_adjoint'\n + ' invert_by_lu inv_mod irr is is_biconnected is_bipartite is_connected is_digraph'\n + ' is_edge_in_graph is_graph is_graph_or_digraph ishow is_isomorphic isolate'\n + ' isomorphism is_planar isqrt isreal_p is_sconnected is_tree is_vertex_in_graph'\n + ' items_inference %j j0 j1 jacobi jacobian jacobi_cd jacobi_cn jacobi_cs jacobi_dc'\n + ' jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_p jacobi_sc jacobi_sd'\n + ' jacobi_sn JF jn join jordan julia julia_set julia_sin %k kdels kdelta kill'\n + ' killcontext kostka kron_delta kronecker_product kummer_m kummer_u kurtosis'\n + ' kurtosis_bernoulli kurtosis_beta kurtosis_binomial kurtosis_chi2 kurtosis_continuous_uniform'\n + ' kurtosis_discrete_uniform kurtosis_exp kurtosis_f kurtosis_gamma kurtosis_general_finite_discrete'\n + ' kurtosis_geometric kurtosis_gumbel kurtosis_hypergeometric kurtosis_laplace'\n + ' kurtosis_logistic kurtosis_lognormal kurtosis_negative_binomial kurtosis_noncentral_chi2'\n + ' kurtosis_noncentral_student_t kurtosis_normal kurtosis_pareto kurtosis_poisson'\n + ' kurtosis_rayleigh kurtosis_student_t kurtosis_weibull label labels lagrange'\n + ' laguerre lambda lambert_w laplace laplacian_matrix last lbfgs lc2kdt lcharp'\n + ' lc_l lcm lc_u ldefint ldisp ldisplay legendre_p legendre_q leinstein length'\n + ' let letrules letsimp levi_civita lfreeof lgtreillis lhs li liediff limit'\n + ' Lindstedt linear linearinterpol linear_program linear_regression line_graph'\n + ' linsolve listarray list_correlations listify list_matrix_entries list_nc_monomials'\n + ' listoftens listofvars listp lmax lmin load loadfile local locate_matrix_entry'\n + ' log logcontract log_gamma lopow lorentz_gauge lowercasep lpart lratsubst'\n + ' lreduce lriemann lsquares_estimates lsquares_estimates_approximate lsquares_estimates_exact'\n + ' lsquares_mse lsquares_residual_mse lsquares_residuals lsum ltreillis lu_backsub'\n + ' lucas lu_factor %m macroexpand macroexpand1 make_array makebox makefact makegamma'\n + ' make_graph make_level_picture makelist makeOrders make_poly_continent make_poly_country'\n + ' make_polygon make_random_state make_rgb_picture makeset make_string_input_stream'\n + ' make_string_output_stream make_transform mandelbrot mandelbrot_set map mapatom'\n + ' maplist matchdeclare matchfix mat_cond mat_fullunblocker mat_function mathml_display'\n + ' mat_norm matrix matrixmap matrixp matrix_size mattrace mat_trace mat_unblocker'\n + ' max max_clique max_degree max_flow maximize_lp max_independent_set max_matching'\n + ' maybe md5sum mean mean_bernoulli mean_beta mean_binomial mean_chi2 mean_continuous_uniform'\n + ' mean_deviation mean_discrete_uniform mean_exp mean_f mean_gamma mean_general_finite_discrete'\n + ' mean_geometric mean_gumbel mean_hypergeometric mean_laplace mean_logistic'\n + ' mean_lognormal mean_negative_binomial mean_noncentral_chi2 mean_noncentral_student_t'\n + ' mean_normal mean_pareto mean_poisson mean_rayleigh mean_student_t mean_weibull'\n + ' median median_deviation member mesh metricexpandall mgf1_sha1 min min_degree'\n + ' min_edge_cut minfactorial minimalPoly minimize_lp minimum_spanning_tree minor'\n + ' minpack_lsquares minpack_solve min_vertex_cover min_vertex_cut mkdir mnewton'\n + ' mod mode_declare mode_identity ModeMatrix moebius mon2schur mono monomial_dimensions'\n + ' multibernstein_poly multi_display_for_texinfo multi_elem multinomial multinomial_coeff'\n + ' multi_orbit multiplot_mode multi_pui multsym multthru mycielski_graph nary'\n + ' natural_unit nc_degree ncexpt ncharpoly negative_picture neighbors new newcontext'\n + ' newdet new_graph newline newton new_variable next_prime nicedummies niceindices'\n + ' ninth nofix nonarray noncentral_moment nonmetricity nonnegintegerp nonscalarp'\n + ' nonzeroandfreeof notequal nounify nptetrad npv nroots nterms ntermst'\n + ' nthroot nullity nullspace num numbered_boundaries numberp number_to_octets'\n + ' num_distinct_partitions numerval numfactor num_partitions nusum nzeta nzetai'\n + ' nzetar octets_to_number octets_to_oid odd_girth oddp ode2 ode_check odelin'\n + ' oid_to_octets op opena opena_binary openr openr_binary openw openw_binary'\n + ' operatorp opsubst optimize %or orbit orbits ordergreat ordergreatp orderless'\n + ' orderlessp orthogonal_complement orthopoly_recur orthopoly_weight outermap'\n + ' out_neighbors outofpois pade parabolic_cylinder_d parametric parametric_surface'\n + ' parg parGosper parse_string parse_timedate part part2cont partfrac partition'\n + ' partition_set partpol path_digraph path_graph pathname_directory pathname_name'\n + ' pathname_type pdf_bernoulli pdf_beta pdf_binomial pdf_cauchy pdf_chi2 pdf_continuous_uniform'\n + ' pdf_discrete_uniform pdf_exp pdf_f pdf_gamma pdf_general_finite_discrete'\n + ' pdf_geometric pdf_gumbel pdf_hypergeometric pdf_laplace pdf_logistic pdf_lognormal'\n + ' pdf_negative_binomial pdf_noncentral_chi2 pdf_noncentral_student_t pdf_normal'\n + ' pdf_pareto pdf_poisson pdf_rank_sum pdf_rayleigh pdf_signed_rank pdf_student_t'\n + ' pdf_weibull pearson_skewness permanent permut permutation permutations petersen_graph'\n + ' petrov pickapart picture_equalp picturep piechart piechart_description planar_embedding'\n + ' playback plog plot2d plot3d plotdf ploteq plsquares pochhammer points poisdiff'\n + ' poisexpt poisint poismap poisplus poissimp poissubst poistimes poistrim polar'\n + ' polarform polartorect polar_to_xy poly_add poly_buchberger poly_buchberger_criterion'\n + ' poly_colon_ideal poly_content polydecomp poly_depends_p poly_elimination_ideal'\n + ' poly_exact_divide poly_expand poly_expt poly_gcd polygon poly_grobner poly_grobner_equal'\n + ' poly_grobner_member poly_grobner_subsetp poly_ideal_intersection poly_ideal_polysaturation'\n + ' poly_ideal_polysaturation1 poly_ideal_saturation poly_ideal_saturation1 poly_lcm'\n + ' poly_minimization polymod poly_multiply polynome2ele polynomialp poly_normal_form'\n + ' poly_normalize poly_normalize_list poly_polysaturation_extension poly_primitive_part'\n + ' poly_pseudo_divide poly_reduced_grobner poly_reduction poly_saturation_extension'\n + ' poly_s_polynomial poly_subtract polytocompanion pop postfix potential power_mod'\n + ' powerseries powerset prefix prev_prime primep primes principal_components'\n + ' print printf printfile print_graph printpois printprops prodrac product properties'\n + ' propvars psi psubst ptriangularize pui pui2comp pui2ele pui2polynome pui_direct'\n + ' puireduc push put pv qput qrange qty quad_control quad_qag quad_qagi quad_qagp'\n + ' quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quadrilateral quantile'\n + ' quantile_bernoulli quantile_beta quantile_binomial quantile_cauchy quantile_chi2'\n + ' quantile_continuous_uniform quantile_discrete_uniform quantile_exp quantile_f'\n + ' quantile_gamma quantile_general_finite_discrete quantile_geometric quantile_gumbel'\n + ' quantile_hypergeometric quantile_laplace quantile_logistic quantile_lognormal'\n + ' quantile_negative_binomial quantile_noncentral_chi2 quantile_noncentral_student_t'\n + ' quantile_normal quantile_pareto quantile_poisson quantile_rayleigh quantile_student_t'\n + ' quantile_weibull quartile_skewness quit qunit quotient racah_v racah_w radcan'\n + ' radius random random_bernoulli random_beta random_binomial random_bipartite_graph'\n + ' random_cauchy random_chi2 random_continuous_uniform random_digraph random_discrete_uniform'\n + ' random_exp random_f random_gamma random_general_finite_discrete random_geometric'\n + ' random_graph random_graph1 random_gumbel random_hypergeometric random_laplace'\n + ' random_logistic random_lognormal random_negative_binomial random_network'\n + ' random_noncentral_chi2 random_noncentral_student_t random_normal random_pareto'\n + ' random_permutation random_poisson random_rayleigh random_regular_graph random_student_t'\n + ' random_tournament random_tree random_weibull range rank rat ratcoef ratdenom'\n + ' ratdiff ratdisrep ratexpand ratinterpol rational rationalize ratnumer ratnump'\n + ' ratp ratsimp ratsubst ratvars ratweight read read_array read_binary_array'\n + ' read_binary_list read_binary_matrix readbyte readchar read_hashed_array readline'\n + ' read_list read_matrix read_nested_list readonly read_xpm real_imagpart_to_conjugate'\n + ' realpart realroots rearray rectangle rectform rectform_log_if_constant recttopolar'\n + ' rediff reduce_consts reduce_order region region_boundaries region_boundaries_plus'\n + ' rem remainder remarray rembox remcomps remcon remcoord remfun remfunction'\n + ' remlet remove remove_constvalue remove_dimensions remove_edge remove_fundamental_dimensions'\n + ' remove_fundamental_units remove_plot_option remove_vertex rempart remrule'\n + ' remsym remvalue rename rename_file reset reset_displays residue resolvante'\n + ' resolvante_alternee1 resolvante_bipartite resolvante_diedrale resolvante_klein'\n + ' resolvante_klein3 resolvante_produit_sym resolvante_unitaire resolvante_vierer'\n + ' rest resultant return reveal reverse revert revert2 rgb2level rhs ricci riemann'\n + ' rinvariant risch rk rmdir rncombine romberg room rootscontract round row'\n + ' rowop rowswap rreduce run_testsuite %s save saving scalarp scaled_bessel_i'\n + ' scaled_bessel_i0 scaled_bessel_i1 scalefactors scanmap scatterplot scatterplot_description'\n + ' scene schur2comp sconcat scopy scsimp scurvature sdowncase sec sech second'\n + ' sequal sequalignore set_alt_display setdifference set_draw_defaults set_edge_weight'\n + ' setelmx setequalp setify setp set_partitions set_plot_option set_prompt set_random_state'\n + ' set_tex_environment set_tex_environment_default setunits setup_autoload set_up_dot_simplifications'\n + ' set_vertex_label seventh sexplode sf sha1sum sha256sum shortest_path shortest_weighted_path'\n + ' show showcomps showratvars sierpinskiale sierpinskimap sign signum similaritytransform'\n + ' simp_inequality simplify_sum simplode simpmetderiv simtran sin sinh sinsert'\n + ' sinvertcase sixth skewness skewness_bernoulli skewness_beta skewness_binomial'\n + ' skewness_chi2 skewness_continuous_uniform skewness_discrete_uniform skewness_exp'\n + ' skewness_f skewness_gamma skewness_general_finite_discrete skewness_geometric'\n + ' skewness_gumbel skewness_hypergeometric skewness_laplace skewness_logistic'\n + ' skewness_lognormal skewness_negative_binomial skewness_noncentral_chi2 skewness_noncentral_student_t'\n + ' skewness_normal skewness_pareto skewness_poisson skewness_rayleigh skewness_student_t'\n + ' skewness_weibull slength smake small_rhombicosidodecahedron_graph small_rhombicuboctahedron_graph'\n + ' smax smin smismatch snowmap snub_cube_graph snub_dodecahedron_graph solve'\n + ' solve_rec solve_rec_rat some somrac sort sparse6_decode sparse6_encode sparse6_export'\n + ' sparse6_import specint spherical spherical_bessel_j spherical_bessel_y spherical_hankel1'\n + ' spherical_hankel2 spherical_harmonic spherical_to_xyz splice split sposition'\n + ' sprint sqfr sqrt sqrtdenest sremove sremovefirst sreverse ssearch ssort sstatus'\n + ' ssubst ssubstfirst staircase standardize standardize_inverse_trig starplot'\n + ' starplot_description status std std1 std_bernoulli std_beta std_binomial'\n + ' std_chi2 std_continuous_uniform std_discrete_uniform std_exp std_f std_gamma'\n + ' std_general_finite_discrete std_geometric std_gumbel std_hypergeometric std_laplace'\n + ' std_logistic std_lognormal std_negative_binomial std_noncentral_chi2 std_noncentral_student_t'\n + ' std_normal std_pareto std_poisson std_rayleigh std_student_t std_weibull'\n + ' stemplot stirling stirling1 stirling2 strim striml strimr string stringout'\n + ' stringp strong_components struve_h struve_l sublis sublist sublist_indices'\n + ' submatrix subsample subset subsetp subst substinpart subst_parallel substpart'\n + ' substring subvar subvarp sum sumcontract summand_to_rec supcase supcontext'\n + ' symbolp symmdifference symmetricp system take_channel take_inference tan'\n + ' tanh taylor taylorinfo taylorp taylor_simplifier taytorat tcl_output tcontract'\n + ' tellrat tellsimp tellsimpafter tentex tenth test_mean test_means_difference'\n + ' test_normality test_proportion test_proportions_difference test_rank_sum'\n + ' test_sign test_signed_rank test_variance test_variance_ratio tex tex1 tex_display'\n + ' texput %th third throw time timedate timer timer_info tldefint tlimit todd_coxeter'\n + ' toeplitz tokens to_lisp topological_sort to_poly to_poly_solve totaldisrep'\n + ' totalfourier totient tpartpol trace tracematrix trace_options transform_sample'\n + ' translate translate_file transpose treefale tree_reduce treillis treinat'\n + ' triangle triangularize trigexpand trigrat trigreduce trigsimp trunc truncate'\n + ' truncated_cube_graph truncated_dodecahedron_graph truncated_icosahedron_graph'\n + ' truncated_tetrahedron_graph tr_warnings_get tube tutte_graph ueivects uforget'\n + ' ultraspherical underlying_graph undiff union unique uniteigenvectors unitp'\n + ' units unit_step unitvector unorder unsum untellrat untimer'\n + ' untrace uppercasep uricci uriemann uvect vandermonde_matrix var var1 var_bernoulli'\n + ' var_beta var_binomial var_chi2 var_continuous_uniform var_discrete_uniform'\n + ' var_exp var_f var_gamma var_general_finite_discrete var_geometric var_gumbel'\n + ' var_hypergeometric var_laplace var_logistic var_lognormal var_negative_binomial'\n + ' var_noncentral_chi2 var_noncentral_student_t var_normal var_pareto var_poisson'\n + ' var_rayleigh var_student_t var_weibull vector vectorpotential vectorsimp'\n + ' verbify vers vertex_coloring vertex_connectivity vertex_degree vertex_distance'\n + ' vertex_eccentricity vertex_in_degree vertex_out_degree vertices vertices_to_cycle'\n + ' vertices_to_path %w weyl wheel_graph wiener_index wigner_3j wigner_6j'\n + ' wigner_9j with_stdout write_binary_data writebyte write_data writefile wronskian'\n + ' xreduce xthru %y Zeilberger zeroequiv zerofor zeromatrix zeromatrixp zeta'\n + ' zgeev zheev zlange zn_add_table zn_carmichael_lambda zn_characteristic_factors'\n + ' zn_determinant zn_factor_generators zn_invert_by_lu zn_log zn_mult_table'\n + ' absboxchar activecontexts adapt_depth additive adim aform algebraic'\n + ' algepsilon algexact aliases allbut all_dotsimp_denoms allocation allsym alphabetic'\n + ' animation antisymmetric arrays askexp assume_pos assume_pos_pred assumescalar'\n + ' asymbol atomgrad atrig1 axes axis_3d axis_bottom axis_left axis_right axis_top'\n + ' azimuth background background_color backsubst berlefact bernstein_explicit'\n + ' besselexpand beta_args_sum_to_integer beta_expand bftorat bftrunc bindtest'\n + ' border boundaries_array box boxchar breakup %c capping cauchysum cbrange'\n + ' cbtics center cflength cframe_flag cnonmet_flag color color_bar color_bar_tics'\n + ' colorbox columns commutative complex cone context contexts contour contour_levels'\n + ' cosnpiflag ctaypov ctaypt ctayswitch ctayvar ct_coords ctorsion_flag ctrgsimp'\n + ' cube current_let_rule_package cylinder data_file_name debugmode decreasing'\n + ' default_let_rule_package delay dependencies derivabbrev derivsubst detout'\n + ' diagmetric diff dim dimensions dispflag display2d|10 display_format_internal'\n + ' distribute_over doallmxops domain domxexpt domxmxops domxnctimes dontfactor'\n + ' doscmxops doscmxplus dot0nscsimp dot0simp dot1simp dotassoc dotconstrules'\n + ' dotdistrib dotexptsimp dotident dotscrules draw_graph_program draw_realpart'\n + ' edge_color edge_coloring edge_partition edge_type edge_width %edispflag'\n + ' elevation %emode endphi endtheta engineering_format_floats enhanced3d %enumer'\n + ' epsilon_lp erfflag erf_representation errormsg error_size error_syms error_type'\n + ' %e_to_numlog eval even evenfun evflag evfun ev_point expandwrt_denom expintexpand'\n + ' expintrep expon expop exptdispflag exptisolate exptsubst facexpand facsum_combine'\n + ' factlim factorflag factorial_expand factors_only fb feature features'\n + ' file_name file_output_append file_search_demo file_search_lisp file_search_maxima|10'\n + ' file_search_tests file_search_usage file_type_lisp file_type_maxima|10 fill_color'\n + ' fill_density filled_func fixed_vertices flipflag float2bf font font_size'\n + ' fortindent fortspaces fpprec fpprintprec functions gamma_expand gammalim'\n + ' gdet genindex gensumnum GGFCFMAX GGFINFINITY globalsolve gnuplot_command'\n + ' gnuplot_curve_styles gnuplot_curve_titles gnuplot_default_term_command gnuplot_dumb_term_command'\n + ' gnuplot_file_args gnuplot_file_name gnuplot_out_file gnuplot_pdf_term_command'\n + ' gnuplot_pm3d gnuplot_png_term_command gnuplot_postamble gnuplot_preamble'\n + ' gnuplot_ps_term_command gnuplot_svg_term_command gnuplot_term gnuplot_view_args'\n + ' Gosper_in_Zeilberger gradefs grid grid2d grind halfangles head_angle head_both'\n + ' head_length head_type height hypergeometric_representation %iargs ibase'\n + ' icc1 icc2 icounter idummyx ieqnprint ifb ifc1 ifc2 ifg ifgi ifr iframe_bracket_form'\n + ' ifri igeowedge_flag ikt1 ikt2 imaginary inchar increasing infeval'\n + ' infinity inflag infolists inm inmc1 inmc2 intanalysis integer integervalued'\n + ' integrate_use_rootsof integration_constant integration_constant_counter interpolate_color'\n + ' intfaclim ip_grid ip_grid_in irrational isolate_wrt_times iterations itr'\n + ' julia_parameter %k1 %k2 keepfloat key key_pos kinvariant kt label label_alignment'\n + ' label_orientation labels lassociative lbfgs_ncorrections lbfgs_nfeval_max'\n + ' leftjust legend letrat let_rule_packages lfg lg lhospitallim limsubst linear'\n + ' linear_solver linechar linel|10 linenum line_type linewidth line_width linsolve_params'\n + ' linsolvewarn lispdisp listarith listconstvars listdummyvars lmxchar load_pathname'\n + ' loadprint logabs logarc logcb logconcoeffp logexpand lognegint logsimp logx'\n + ' logx_secondary logy logy_secondary logz lriem m1pbranch macroexpansion macros'\n + ' mainvar manual_demo maperror mapprint matrix_element_add matrix_element_mult'\n + ' matrix_element_transpose maxapplydepth maxapplyheight maxima_tempdir|10 maxima_userdir|10'\n + ' maxnegex MAX_ORD maxposex maxpsifracdenom maxpsifracnum maxpsinegint maxpsiposint'\n + ' maxtayorder mesh_lines_color method mod_big_prime mode_check_errorp'\n + ' mode_checkp mode_check_warnp mod_test mod_threshold modular_linear_solver'\n + ' modulus multiplicative multiplicities myoptions nary negdistrib negsumdispflag'\n + ' newline newtonepsilon newtonmaxiter nextlayerfactor niceindicespref nm nmc'\n + ' noeval nolabels nonegative_lp noninteger nonscalar noun noundisp nouns np'\n + ' npi nticks ntrig numer numer_pbranch obase odd oddfun opacity opproperties'\n + ' opsubst optimprefix optionset orientation origin orthopoly_returns_intervals'\n + ' outative outchar packagefile palette partswitch pdf_file pfeformat phiresolution'\n + ' %piargs piece pivot_count_sx pivot_max_sx plot_format plot_options plot_realpart'\n + ' png_file pochhammer_max_index points pointsize point_size points_joined point_type'\n + ' poislim poisson poly_coefficient_ring poly_elimination_order polyfactor poly_grobner_algorithm'\n + ' poly_grobner_debug poly_monomial_order poly_primary_elimination_order poly_return_term_list'\n + ' poly_secondary_elimination_order poly_top_reduction_only posfun position'\n + ' powerdisp pred prederror primep_number_of_tests product_use_gamma program'\n + ' programmode promote_float_to_bigfloat prompt proportional_axes props psexpand'\n + ' ps_file radexpand radius radsubstflag rassociative ratalgdenom ratchristof'\n + ' ratdenomdivide rateinstein ratepsilon ratfac rational ratmx ratprint ratriemann'\n + ' ratsimpexpons ratvarswitch ratweights ratweyl ratwtlvl real realonly redraw'\n + ' refcheck resolution restart resultant ric riem rmxchar %rnum_list rombergabs'\n + ' rombergit rombergmin rombergtol rootsconmode rootsepsilon run_viewer same_xy'\n + ' same_xyz savedef savefactors scalar scalarmatrixp scale scale_lp setcheck'\n + ' setcheckbreak setval show_edge_color show_edges show_edge_type show_edge_width'\n + ' show_id show_label showtime show_vertex_color show_vertex_size show_vertex_type'\n + ' show_vertices show_weight simp simplified_output simplify_products simpproduct'\n + ' simpsum sinnpiflag solvedecomposes solveexplicit solvefactors solvenullwarn'\n + ' solveradcan solvetrigwarn space sparse sphere spring_embedding_depth sqrtdispflag'\n + ' stardisp startphi starttheta stats_numer stringdisp structures style sublis_apply_lambda'\n + ' subnumsimp sumexpand sumsplitfact surface surface_hide svg_file symmetric'\n + ' tab taylordepth taylor_logexpand taylor_order_coefficients taylor_truncate_polynomials'\n + ' tensorkill terminal testsuite_files thetaresolution timer_devalue title tlimswitch'\n + ' tr track transcompile transform transform_xy translate_fast_arrays transparent'\n + ' transrun tr_array_as_ref tr_bound_function_applyp tr_file_tty_messagesp tr_float_can_branch_complex'\n + ' tr_function_call_default trigexpandplus trigexpandtimes triginverses trigsign'\n + ' trivial_solutions tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars'\n + ' tr_warn_bad_function_calls tr_warn_fexpr tr_warn_meval tr_warn_mode'\n + ' tr_warn_undeclared tr_warn_undefined_variable tstep ttyoff tube_extremes'\n + ' ufg ug %unitexpand unit_vectors uric uriem use_fast_arrays user_preamble'\n + ' usersetunits values vect_cross verbose vertex_color vertex_coloring vertex_partition'\n + ' vertex_size vertex_type view warnings weyl width windowname windowtitle wired_surface'\n + ' wireframe xaxis xaxis_color xaxis_secondary xaxis_type xaxis_width xlabel'\n + ' xlabel_secondary xlength xrange xrange_secondary xtics xtics_axis xtics_rotate'\n + ' xtics_rotate_secondary xtics_secondary xtics_secondary_axis xu_grid x_voxel'\n + ' xy_file xyplane xy_scale yaxis yaxis_color yaxis_secondary yaxis_type yaxis_width'\n + ' ylabel ylabel_secondary ylength yrange yrange_secondary ytics ytics_axis'\n + ' ytics_rotate ytics_rotate_secondary ytics_secondary ytics_secondary_axis'\n + ' yv_grid y_voxel yx_ratio zaxis zaxis_color zaxis_type zaxis_width zeroa zerob'\n + ' zerobern zeta%pi zlabel zlabel_rotate zlength zmin zn_primroot_limit zn_primroot_pretest';\n var SYMBOLS = '_ __ %|0 %%|0';\n\n return {\n lexemes: '[A-Za-z_%][0-9A-Za-z_%]*',\n keywords: {\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILTIN_FUNCTIONS,\n symbol: SYMBOLS,\n },\n contains: [\n {\n className: 'comment',\n begin: '/\\\\*',\n end: '\\\\*/',\n contains: ['self']\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'number',\n relevance: 0,\n variants: [\n {\n // float number w/ exponent\n // hmm, I wonder if we ought to include other exponent markers?\n begin: '\\\\b(\\\\d+|\\\\d+\\\\.|\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)[Ee][-+]?\\\\d+\\\\b',\n },\n {\n // bigfloat number\n begin: '\\\\b(\\\\d+|\\\\d+\\\\.|\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)[Bb][-+]?\\\\d+\\\\b',\n relevance: 10\n },\n {\n // float number w/out exponent\n // Doesn't seem to recognize floats which start with '.'\n begin: '\\\\b(\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)\\\\b',\n },\n {\n // integer in base up to 36\n // Doesn't seem to recognize integers which end with '.'\n begin: '\\\\b(\\\\d+|0[0-9A-Za-z]+)\\\\.?\\\\b',\n }\n ]\n }\n ],\n illegal: /@/\n }\n};","module.exports = function(hljs) {\n return {\n keywords:\n 'int float string vector matrix if else switch case default while do for in break ' +\n 'continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic ' +\n 'addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey ' +\n 'affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve ' +\n 'alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor ' +\n 'animDisplay animView annotate appendStringArray applicationName applyAttrPreset ' +\n 'applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx ' +\n 'artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu ' +\n 'artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand ' +\n 'assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface ' +\n 'attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu ' +\n 'attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp ' +\n 'attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery ' +\n 'autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults ' +\n 'bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership ' +\n 'bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType ' +\n 'boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu ' +\n 'buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge ' +\n 'cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch ' +\n 'catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox ' +\n 'character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp ' +\n 'checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip ' +\n 'clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore ' +\n 'closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter ' +\n 'cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color ' +\n 'colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp ' +\n 'colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem ' +\n 'componentEditor compositingInterop computePolysetVolume condition cone confirmDialog ' +\n 'connectAttr connectControl connectDynamic connectJoint connectionInfo constrain ' +\n 'constrainValue constructionHistory container containsMultibyte contextInfo control ' +\n 'convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation ' +\n 'convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache ' +\n 'cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel ' +\n 'cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver ' +\n 'cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor ' +\n 'createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer ' +\n 'createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse ' +\n 'currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx ' +\n 'curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface ' +\n 'curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox ' +\n 'defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete ' +\n 'deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes ' +\n 'delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo ' +\n 'dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable ' +\n 'disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected ' +\n 'displayColor displayCull displayLevelOfDetail displayPref displayRGBColor ' +\n 'displaySmoothness displayStats displayString displaySurface distanceDimContext ' +\n 'distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct ' +\n 'doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator ' +\n 'duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression ' +\n 'dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor ' +\n 'dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers ' +\n 'editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor ' +\n 'editorTemplate effector emit emitter enableDevice encodeString endString endsWith env ' +\n 'equivalent equivalentTol erf error eval evalDeferred evalEcho event ' +\n 'exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp ' +\n 'expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof ' +\n 'fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo ' +\n 'filetest filletCurve filter filterCurve filterExpand filterStudioImport ' +\n 'findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster ' +\n 'finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar ' +\n 'floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo ' +\n 'fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint ' +\n 'frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss ' +\n 'geometryConstraint getApplicationVersionAsFloat getAttr getClassification ' +\n 'getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes ' +\n 'getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender ' +\n 'glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl ' +\n 'gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid ' +\n 'gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap ' +\n 'HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor ' +\n 'HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached ' +\n 'HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel ' +\n 'headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey ' +\n 'hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender ' +\n 'hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox ' +\n 'iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ' +\n 'ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ' +\n 'ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform ' +\n 'insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance ' +\n 'instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp ' +\n 'interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf ' +\n 'isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect ' +\n 'itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx ' +\n 'jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner ' +\n 'keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx ' +\n 'keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx ' +\n 'keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx ' +\n 'keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor ' +\n 'layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList ' +\n 'lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep ' +\n 'listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory ' +\n 'listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation ' +\n 'listNodeTypes listPanelCategories listRelatives listSets listTransforms ' +\n 'listUnselected listerEditor loadFluid loadNewShelf loadPlugin ' +\n 'loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log ' +\n 'longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive ' +\n 'makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext ' +\n 'manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx ' +\n 'manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout ' +\n 'menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp ' +\n 'mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move ' +\n 'moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute ' +\n 'nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast ' +\n 'nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint ' +\n 'normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect ' +\n 'nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref ' +\n 'nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType ' +\n 'objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface ' +\n 'offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit ' +\n 'orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier ' +\n 'paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration ' +\n 'panelHistory paramDimContext paramDimension paramLocator parent parentConstraint ' +\n 'particle particleExists particleInstancer particleRenderInfo partition pasteKey ' +\n 'pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture ' +\n 'pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo ' +\n 'pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult ' +\n 'pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend ' +\n 'polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal ' +\n 'polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge ' +\n 'polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge ' +\n 'polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet ' +\n 'polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet ' +\n 'polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection ' +\n 'polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge ' +\n 'polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet ' +\n 'polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix ' +\n 'polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut ' +\n 'polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet ' +\n 'polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge ' +\n 'polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex ' +\n 'polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection ' +\n 'polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection ' +\n 'polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint ' +\n 'polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate ' +\n 'polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge ' +\n 'polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing ' +\n 'polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet ' +\n 'polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace ' +\n 'popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer ' +\n 'projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx ' +\n 'propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd ' +\n 'python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection ' +\n 'radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl ' +\n 'readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference ' +\n 'referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE ' +\n 'registerPluginResource rehash reloadImage removeJoint removeMultiInstance ' +\n 'removePanelCategory rename renameAttr renameSelectionList renameUI render ' +\n 'renderGlobalsNode renderInfo renderLayerButton renderLayerParent ' +\n 'renderLayerPostProcess renderLayerUnparent renderManip renderPartition ' +\n 'renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor ' +\n 'renderWindowSelectContext renderer reorder reorderDeformers requires reroot ' +\n 'resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget ' +\n 'reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx ' +\n 'rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout ' +\n 'runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage ' +\n 'saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale ' +\n 'scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor ' +\n 'sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable ' +\n 'scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt ' +\n 'searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey ' +\n 'selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType ' +\n 'selectedNodes selectionConnection separator setAttr setAttrEnumResource ' +\n 'setAttrMapping setAttrNiceNameResource setConstraintRestPosition ' +\n 'setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr ' +\n 'setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe ' +\n 'setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag ' +\n 'setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject ' +\n 'setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets ' +\n 'shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare ' +\n 'shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField ' +\n 'shortNameOf showHelp showHidden showManipCtx showSelectionInTitle ' +\n 'showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface ' +\n 'size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep ' +\n 'snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound ' +\n 'soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort ' +\n 'spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString ' +\n 'startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp ' +\n 'stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex ' +\n 'stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex ' +\n 'stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString ' +\n 'stringToStringArray strip stripPrefixFromName stroke subdAutoProjection ' +\n 'subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV ' +\n 'subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror ' +\n 'subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease ' +\n 'subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring ' +\n 'surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton ' +\n 'symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext ' +\n 'texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext ' +\n 'texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text ' +\n 'textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList ' +\n 'textToShelf textureDisplacePlane textureHairColor texturePlacementContext ' +\n 'textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath ' +\n 'toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower ' +\n 'toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper ' +\n 'trace track trackCtx transferAttributes transformCompare transformLimits translator ' +\n 'trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence ' +\n 'twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit ' +\n 'unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink ' +\n 'uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane ' +\n 'viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex ' +\n 'waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire ' +\n 'wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform',\n illegal: '</',\n contains: [\n hljs.C_NUMBER_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '`', end: '`',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n { // eats variables\n begin: '[\\\\$\\\\%\\\\@](\\\\^\\\\w\\\\b|#\\\\w+|[^\\\\s\\\\w{]|{\\\\w+}|\\\\w+)'\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'module use_module import_module include_module end_module initialise ' +\n 'mutable initialize finalize finalise interface implementation pred ' +\n 'mode func type inst solver any_pred any_func is semidet det nondet ' +\n 'multi erroneous failure cc_nondet cc_multi typeclass instance where ' +\n 'pragma promise external trace atomic or_else require_complete_switch ' +\n 'require_det require_semidet require_multi require_nondet ' +\n 'require_cc_multi require_cc_nondet require_erroneous require_failure',\n meta:\n // pragma\n 'inline no_inline type_spec source_file fact_table obsolete memo ' +\n 'loop_check minimal_model terminates does_not_terminate ' +\n 'check_termination promise_equivalent_clauses ' +\n // preprocessor\n 'foreign_proc foreign_decl foreign_code foreign_type ' +\n 'foreign_import_module foreign_export_enum foreign_export ' +\n 'foreign_enum may_call_mercury will_not_call_mercury thread_safe ' +\n 'not_thread_safe maybe_thread_safe promise_pure promise_semipure ' +\n 'tabled_for_io local untrailed trailed attach_to_io_state ' +\n 'can_pass_as_mercury_type stable will_not_throw_exception ' +\n 'may_modify_trail will_not_modify_trail may_duplicate ' +\n 'may_not_duplicate affects_liveness does_not_affect_liveness ' +\n 'doesnt_affect_liveness no_sharing unknown_sharing sharing',\n built_in:\n 'some all not if then else true fail false try catch catch_any ' +\n 'semidet_true semidet_false semidet_fail impure_true impure semipure'\n };\n\n var COMMENT = hljs.COMMENT('%', '$');\n\n var NUMCODE = {\n className: 'number',\n begin: \"0'.\\\\|0[box][0-9a-fA-F]*\"\n };\n\n var ATOM = hljs.inherit(hljs.APOS_STRING_MODE, {relevance: 0});\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {relevance: 0});\n var STRING_FMT = {\n className: 'subst',\n begin: '\\\\\\\\[abfnrtv]\\\\|\\\\\\\\x[0-9a-fA-F]*\\\\\\\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]',\n relevance: 0\n };\n STRING.contains.push(STRING_FMT);\n\n var IMPLICATION = {\n className: 'built_in',\n variants: [\n {begin: '<=>'},\n {begin: '<=', relevance: 0},\n {begin: '=>', relevance: 0},\n {begin: '/\\\\\\\\'},\n {begin: '\\\\\\\\/'}\n ]\n };\n\n var HEAD_BODY_CONJUNCTION = {\n className: 'built_in',\n variants: [\n {begin: ':-\\\\|-->'},\n {begin: '=', relevance: 0}\n ]\n };\n\n return {\n aliases: ['m', 'moo'],\n keywords: KEYWORDS,\n contains: [\n IMPLICATION,\n HEAD_BODY_CONJUNCTION,\n COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMCODE,\n hljs.NUMBER_MODE,\n ATOM,\n STRING,\n {begin: /:-/} // relevance booster\n ]\n };\n};","module.exports = function(hljs) {\n //local labels: %?[FB]?[AT]?\\d{1,2}\\w+\n return {\n case_insensitive: true,\n aliases: ['mips'],\n lexemes: '\\\\.?' + hljs.IDENT_RE,\n keywords: {\n meta:\n //GNU preprocs\n '.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ',\n built_in:\n '$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 ' + // integer registers\n '$16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 ' + // integer registers\n 'zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 ' + // integer register aliases\n 't0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 ' + // integer register aliases\n 'k0 k1 gp sp fp ra ' + // integer register aliases\n '$f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 ' + // floating-point registers\n '$f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 ' + // floating-point registers\n 'Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi ' + // Coprocessor 0 registers\n 'HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId ' + // Coprocessor 0 registers\n 'EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ' + // Coprocessor 0 registers\n 'ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt ' // Coprocessor 0 registers\n },\n contains: [\n {\n className: 'keyword',\n begin: '\\\\b('+ //mnemonics\n // 32-bit integer instructions\n 'addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|' +\n 'bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(\\.hb)?|jr(\\.hb)?|lbu?|lhu?|' +\n 'll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|' +\n 'multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|' +\n 'srlv?|subu?|sw[lr]?|xori?|wsbh|' +\n // floating-point instructions\n 'abs\\.[sd]|add\\.[sd]|alnv.ps|bc1[ft]l?|' +\n 'c\\.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et])\\.[sd]|' +\n '(ceil|floor|round|trunc)\\.[lw]\\.[sd]|cfc1|cvt\\.d\\.[lsw]|' +\n 'cvt\\.l\\.[dsw]|cvt\\.ps\\.s|cvt\\.s\\.[dlw]|cvt\\.s\\.p[lu]|cvt\\.w\\.[dls]|' +\n 'div\\.[ds]|ldx?c1|luxc1|lwx?c1|madd\\.[sd]|mfc1|mov[fntz]?\\.[ds]|' +\n 'msub\\.[sd]|mth?c1|mul\\.[ds]|neg\\.[ds]|nmadd\\.[ds]|nmsub\\.[ds]|' +\n 'p[lu][lu]\\.ps|recip\\.fmt|r?sqrt\\.[ds]|sdx?c1|sub\\.[ds]|suxc1|' +\n 'swx?c1|' +\n // system control instructions\n 'break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|' +\n 'rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|' +\n 'tlti?u?|tnei?|wait|wrpgpr'+\n ')',\n end: '\\\\s'\n },\n hljs.COMMENT('[;#]', '$'),\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\'',\n end: '[^\\\\\\\\]\\'',\n relevance: 0\n },\n {\n className: 'title',\n begin: '\\\\|', end: '\\\\|',\n illegal: '\\\\n',\n relevance: 0\n },\n {\n className: 'number',\n variants: [\n {begin: '0x[0-9a-f]+'}, //hex\n {begin: '\\\\b-?\\\\d+'} //bare number\n ],\n relevance: 0\n },\n {\n className: 'symbol',\n variants: [\n {begin: '^\\\\s*[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+:'}, //GNU MIPS syntax\n {begin: '^\\\\s*[0-9]+:'}, // numbered local labels\n {begin: '[0-9]+[bf]' } // number local label reference (backwards, forwards)\n ],\n relevance: 0\n }\n ],\n illegal: '\\/'\n };\n};","module.exports = function(hljs) {\n return {\n keywords:\n 'environ vocabularies notations constructors definitions ' +\n 'registrations theorems schemes requirements begin end definition ' +\n 'registration cluster existence pred func defpred deffunc theorem ' +\n 'proof let take assume then thus hence ex for st holds consider ' +\n 'reconsider such that and in provided of as from be being by means ' +\n 'equals implies iff redefine define now not or attr is mode ' +\n 'suppose per cases set thesis contradiction scheme reserve struct ' +\n 'correctness compatibility coherence symmetry assymetry ' +\n 'reflexivity irreflexivity connectedness uniqueness commutativity ' +\n 'idempotence involutiveness projectivity',\n contains: [\n hljs.COMMENT('::', '$')\n ]\n };\n};","module.exports = function(hljs) {\n var PERL_KEYWORDS = 'getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ' +\n 'ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime ' +\n 'readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qq' +\n 'fileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent ' +\n 'shutdown dump chomp connect getsockname die socketpair close flock exists index shmget' +\n 'sub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr ' +\n 'unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 ' +\n 'getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline ' +\n 'endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand ' +\n 'mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink ' +\n 'getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr ' +\n 'untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link ' +\n 'getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller ' +\n 'lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and ' +\n 'sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 ' +\n 'chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach ' +\n 'tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedir' +\n 'ioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe ' +\n 'atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when';\n var SUBST = {\n className: 'subst',\n begin: '[$@]\\\\{', end: '\\\\}',\n keywords: PERL_KEYWORDS\n };\n var METHOD = {\n begin: '->{', end: '}'\n // contains defined later\n };\n var VAR = {\n variants: [\n {begin: /\\$\\d/},\n {begin: /[\\$%@](\\^\\w\\b|#\\w+(::\\w+)*|{\\w+}|\\w+(::\\w*)*)/},\n {begin: /[\\$%@][^\\s\\w{]/, relevance: 0}\n ]\n };\n var STRING_CONTAINS = [hljs.BACKSLASH_ESCAPE, SUBST, VAR];\n var PERL_DEFAULT_CONTAINS = [\n VAR,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT(\n '^\\\\=\\\\w',\n '\\\\=cut',\n {\n endsWithParent: true\n }\n ),\n METHOD,\n {\n className: 'string',\n contains: STRING_CONTAINS,\n variants: [\n {\n begin: 'q[qwxr]?\\\\s*\\\\(', end: '\\\\)',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\[', end: '\\\\]',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\{', end: '\\\\}',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\|', end: '\\\\|',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\<', end: '\\\\>',\n relevance: 5\n },\n {\n begin: 'qw\\\\s+q', end: 'q',\n relevance: 5\n },\n {\n begin: '\\'', end: '\\'',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\"', end: '\"'\n },\n {\n begin: '`', end: '`',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '{\\\\w+}',\n contains: [],\n relevance: 0\n },\n {\n begin: '\\-?\\\\w+\\\\s*\\\\=\\\\>',\n contains: [],\n relevance: 0\n }\n ]\n },\n {\n className: 'number',\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n relevance: 0\n },\n { // regexp container\n begin: '(\\\\/\\\\/|' + hljs.RE_STARTERS_RE + '|\\\\b(split|return|print|reverse|grep)\\\\b)\\\\s*',\n keywords: 'split return print reverse grep',\n relevance: 0,\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: 'regexp',\n begin: '(s|tr|y)/(\\\\\\\\.|[^/])*/(\\\\\\\\.|[^/])*/[a-z]*',\n relevance: 10\n },\n {\n className: 'regexp',\n begin: '(m|qr)?/', end: '/[a-z]*',\n contains: [hljs.BACKSLASH_ESCAPE],\n relevance: 0 // allows empty \"//\" which is a common comment delimiter in other languages\n }\n ]\n },\n {\n className: 'function',\n beginKeywords: 'sub', end: '(\\\\s*\\\\(.*?\\\\))?[;{]', excludeEnd: true,\n relevance: 5,\n contains: [hljs.TITLE_MODE]\n },\n {\n begin: '-\\\\w\\\\b',\n relevance: 0\n },\n {\n begin: \"^__DATA__$\",\n end: \"^__END__$\",\n subLanguage: 'mojolicious',\n contains: [\n {\n begin: \"^@@.*\",\n end: \"$\",\n className: \"comment\"\n }\n ]\n }\n ];\n SUBST.contains = PERL_DEFAULT_CONTAINS;\n METHOD.contains = PERL_DEFAULT_CONTAINS;\n\n return {\n aliases: ['pl', 'pm'],\n lexemes: /[\\w\\.]+/,\n keywords: PERL_KEYWORDS,\n contains: PERL_DEFAULT_CONTAINS\n };\n};","module.exports = function(hljs) {\n return {\n subLanguage: 'xml',\n contains: [\n {\n className: 'meta',\n begin: '^__(END|DATA)__$'\n },\n // mojolicious line\n {\n begin: \"^\\\\s*%{1,2}={0,2}\", end: '$',\n subLanguage: 'perl'\n },\n // mojolicious block\n {\n begin: \"<%{1,2}={0,2}\",\n end: \"={0,1}%>\",\n subLanguage: 'perl',\n excludeBegin: true,\n excludeEnd: true\n }\n ]\n };\n};","module.exports = function(hljs) {\n var NUMBER = {\n className: 'number', relevance: 0,\n variants: [\n {\n begin: '[$][a-fA-F0-9]+'\n },\n hljs.NUMBER_MODE\n ]\n };\n\n return {\n case_insensitive: true,\n keywords: {\n keyword: 'public private property continue exit extern new try catch ' +\n 'eachin not abstract final select case default const local global field ' +\n 'end if then else elseif endif while wend repeat until forever for ' +\n 'to step next return module inline throw import',\n\n built_in: 'DebugLog DebugStop Error Print ACos ACosr ASin ASinr ATan ATan2 ATan2r ATanr Abs Abs Ceil ' +\n 'Clamp Clamp Cos Cosr Exp Floor Log Max Max Min Min Pow Sgn Sgn Sin Sinr Sqrt Tan Tanr Seed PI HALFPI TWOPI',\n\n literal: 'true false null and or shl shr mod'\n },\n illegal: /\\/\\*/,\n contains: [\n hljs.COMMENT('#rem', '#end'),\n hljs.COMMENT(\n \"'\",\n '$',\n {\n relevance: 0\n }\n ),\n {\n className: 'function',\n beginKeywords: 'function method', end: '[(=:]|$',\n illegal: /\\n/,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface', end: '$',\n contains: [\n {\n beginKeywords: 'extends implements'\n },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n className: 'built_in',\n begin: '\\\\b(self|super)\\\\b'\n },\n {\n className: 'meta',\n begin: '\\\\s*#', end: '$',\n keywords: {'meta-keyword': 'if else elseif endif end then'}\n },\n {\n className: 'meta',\n begin: '^\\\\s*strict\\\\b'\n },\n {\n beginKeywords: 'alias', end: '=',\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n hljs.QUOTE_STRING_MODE,\n NUMBER\n ]\n }\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n // Moonscript keywords\n 'if then not for in while do return else elseif break continue switch and or ' +\n 'unless when class extends super local import export from using',\n literal:\n 'true false nil',\n built_in:\n '_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load ' +\n 'loadfile loadstring module next pairs pcall print rawequal rawget rawset require ' +\n 'select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug ' +\n 'io math os package string table'\n };\n var JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\n var SUBST = {\n className: 'subst',\n begin: /#\\{/, end: /}/,\n keywords: KEYWORDS\n };\n var EXPRESSIONS = [\n hljs.inherit(hljs.C_NUMBER_MODE,\n {starts: {end: '(\\\\s*/)?', relevance: 0}}), // a number tries to eat the following slash to prevent treating it as a regexp\n {\n className: 'string',\n variants: [\n {\n begin: /'/, end: /'/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /\"/, end: /\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n }\n ]\n },\n {\n className: 'built_in',\n begin: '@__' + hljs.IDENT_RE\n },\n {\n begin: '@' + hljs.IDENT_RE // relevance booster on par with CoffeeScript\n },\n {\n begin: hljs.IDENT_RE + '\\\\\\\\' + hljs.IDENT_RE // inst\\method\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: JS_IDENT_RE});\n var PARAMS_RE = '(\\\\(.*\\\\))?\\\\s*\\\\B[-=]>';\n var PARAMS = {\n className: 'params',\n begin: '\\\\([^\\\\(]', returnBegin: true,\n /* We need another contained nameless mode to not have every nested\n pair of parens to be called \"params\" */\n contains: [{\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n contains: ['self'].concat(EXPRESSIONS)\n }]\n };\n\n return {\n aliases: ['moon'],\n keywords: KEYWORDS,\n illegal: /\\/\\*/,\n contains: EXPRESSIONS.concat([\n hljs.COMMENT('--', '$'),\n {\n className: 'function', // function: -> =>\n begin: '^\\\\s*' + JS_IDENT_RE + '\\\\s*=\\\\s*' + PARAMS_RE, end: '[-=]>',\n returnBegin: true,\n contains: [TITLE, PARAMS]\n },\n {\n begin: /[\\(,:=]\\s*/, // anonymous function start\n relevance: 0,\n contains: [\n {\n className: 'function',\n begin: PARAMS_RE, end: '[-=]>',\n returnBegin: true,\n contains: [PARAMS]\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class',\n end: '$',\n illegal: /[:=\"\\[\\]]/,\n contains: [\n {\n beginKeywords: 'extends',\n endsWithParent: true,\n illegal: /[:=\"\\[\\]]/,\n contains: [TITLE]\n },\n TITLE\n ]\n },\n {\n className: 'name', // table\n begin: JS_IDENT_RE + ':', end: ':',\n returnBegin: true, returnEnd: true,\n relevance: 0\n }\n ])\n };\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n contains: [\n {\n beginKeywords:\n 'build create index delete drop explain infer|10 insert merge prepare select update upsert|10',\n end: /;/, endsWithParent: true,\n keywords: {\n // Taken from http://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/reservedwords.html\n keyword:\n 'all alter analyze and any array as asc begin between binary boolean break bucket build by call ' +\n 'case cast cluster collate collection commit connect continue correlate cover create database ' +\n 'dataset datastore declare decrement delete derived desc describe distinct do drop each element ' +\n 'else end every except exclude execute exists explain fetch first flatten for force from ' +\n 'function grant group gsi having if ignore ilike in include increment index infer inline inner ' +\n 'insert intersect into is join key keys keyspace known last left let letting like limit lsm map ' +\n 'mapping matched materialized merge minus namespace nest not number object offset on ' +\n 'option or order outer over parse partition password path pool prepare primary private privilege ' +\n 'procedure public raw realm reduce rename return returning revoke right role rollback satisfies ' +\n 'schema select self semi set show some start statistics string system then to transaction trigger ' +\n 'truncate under union unique unknown unnest unset update upsert use user using validate value ' +\n 'valued values via view when where while with within work xor',\n // Taken from http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/literals.html\n literal:\n 'true false null missing|5',\n // Taken from http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/functions.html\n built_in:\n 'array_agg array_append array_concat array_contains array_count array_distinct array_ifnull array_length ' +\n 'array_max array_min array_position array_prepend array_put array_range array_remove array_repeat array_replace ' +\n 'array_reverse array_sort array_sum avg count max min sum greatest least ifmissing ifmissingornull ifnull ' +\n 'missingif nullif ifinf ifnan ifnanorinf naninf neginfif posinfif clock_millis clock_str date_add_millis ' +\n 'date_add_str date_diff_millis date_diff_str date_part_millis date_part_str date_trunc_millis date_trunc_str ' +\n 'duration_to_str millis str_to_millis millis_to_str millis_to_utc millis_to_zone_name now_millis now_str ' +\n 'str_to_duration str_to_utc str_to_zone_name decode_json encode_json encoded_size poly_length base64 base64_encode ' +\n 'base64_decode meta uuid abs acos asin atan atan2 ceil cos degrees e exp ln log floor pi power radians random ' +\n 'round sign sin sqrt tan trunc object_length object_names object_pairs object_inner_pairs object_values ' +\n 'object_inner_values object_add object_put object_remove object_unwrap regexp_contains regexp_like regexp_position ' +\n 'regexp_replace contains initcap length lower ltrim position repeat replace rtrim split substr title trim upper ' +\n 'isarray isatom isboolean isnumber isobject isstring type toarray toatom toboolean tonumber toobject tostring'\n },\n contains: [\n {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [hljs.BACKSLASH_ESCAPE],\n relevance: 0\n },\n {\n className: 'string',\n begin: '\"', end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE],\n relevance: 0\n },\n {\n className: 'symbol',\n begin: '`', end: '`',\n contains: [hljs.BACKSLASH_ESCAPE],\n relevance: 2\n },\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var VAR = {\n className: 'variable',\n variants: [\n {begin: /\\$\\d+/},\n {begin: /\\$\\{/, end: /}/},\n {begin: '[\\\\$\\\\@]' + hljs.UNDERSCORE_IDENT_RE}\n ]\n };\n var DEFAULT = {\n endsWithParent: true,\n lexemes: '[a-z/_]+',\n keywords: {\n literal:\n 'on off yes no true false none blocked debug info notice warn error crit ' +\n 'select break last permanent redirect kqueue rtsig epoll poll /dev/poll'\n },\n relevance: 0,\n illegal: '=>',\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, VAR],\n variants: [\n {begin: /\"/, end: /\"/},\n {begin: /'/, end: /'/}\n ]\n },\n // this swallows entire URLs to avoid detecting numbers within\n {\n begin: '([a-z]+):/', end: '\\\\s', endsWithParent: true, excludeEnd: true,\n contains: [VAR]\n },\n {\n className: 'regexp',\n contains: [hljs.BACKSLASH_ESCAPE, VAR],\n variants: [\n {begin: \"\\\\s\\\\^\", end: \"\\\\s|{|;\", returnEnd: true},\n // regexp locations (~, ~*)\n {begin: \"~\\\\*?\\\\s+\", end: \"\\\\s|{|;\", returnEnd: true},\n // *.example.com\n {begin: \"\\\\*(\\\\.[a-z\\\\-]+)+\"},\n // sub.example.*\n {begin: \"([a-z\\\\-]+\\\\.)+\\\\*\"}\n ]\n },\n // IP\n {\n className: 'number',\n begin: '\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b'\n },\n // units\n {\n className: 'number',\n begin: '\\\\b\\\\d+[kKmMgGdshdwy]*\\\\b',\n relevance: 0\n },\n VAR\n ]\n };\n\n return {\n aliases: ['nginxconf'],\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s+{', returnBegin: true,\n end: '{',\n contains: [\n {\n className: 'section',\n begin: hljs.UNDERSCORE_IDENT_RE\n }\n ],\n relevance: 0\n },\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s', end: ';|{', returnBegin: true,\n contains: [\n {\n className: 'attribute',\n begin: hljs.UNDERSCORE_IDENT_RE,\n starts: DEFAULT\n }\n ],\n relevance: 0\n }\n ],\n illegal: '[^\\\\s\\\\}]'\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['nim'],\n keywords: {\n keyword:\n 'addr and as asm bind block break case cast const continue converter ' +\n 'discard distinct div do elif else end enum except export finally ' +\n 'for from generic if import in include interface is isnot iterator ' +\n 'let macro method mixin mod nil not notin object of or out proc ptr ' +\n 'raise ref return shl shr static template try tuple type using var ' +\n 'when while with without xor yield',\n literal:\n 'shared guarded stdin stdout stderr result true false',\n built_in:\n 'int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float ' +\n 'float32 float64 bool char string cstring pointer expr stmt void ' +\n 'auto any range array openarray varargs seq set clong culong cchar ' +\n 'cschar cshort cint csize clonglong cfloat cdouble clongdouble ' +\n 'cuchar cushort cuint culonglong cstringarray semistatic'\n },\n contains: [ {\n className: 'meta', // Actually pragma\n begin: /{\\./,\n end: /\\.}/,\n relevance: 10\n }, {\n className: 'string',\n begin: /[a-zA-Z]\\w*\"/,\n end: /\"/,\n contains: [{begin: /\"\"/}]\n }, {\n className: 'string',\n begin: /([a-zA-Z]\\w*)?\"\"\"/,\n end: /\"\"\"/\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'type',\n begin: /\\b[A-Z]\\w+\\b/,\n relevance: 0\n }, {\n className: 'number',\n relevance: 0,\n variants: [\n {begin: /\\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/},\n {begin: /\\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/},\n {begin: /\\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/},\n {begin: /\\b(\\d[_\\d]*)('?[iIuUfF](8|16|32|64))?/}\n ]\n },\n hljs.HASH_COMMENT_MODE\n ]\n }\n};","module.exports = function(hljs) {\n var NIX_KEYWORDS = {\n keyword:\n 'rec with let in inherit assert if else then',\n literal:\n 'true false or and null',\n built_in:\n 'import abort baseNameOf dirOf isNull builtins map removeAttrs throw ' +\n 'toString derivation'\n };\n var ANTIQUOTE = {\n className: 'subst',\n begin: /\\$\\{/,\n end: /}/,\n keywords: NIX_KEYWORDS\n };\n var ATTRS = {\n begin: /[a-zA-Z0-9-_]+(\\s*=)/, returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'attr',\n begin: /\\S+/\n }\n ]\n };\n var STRING = {\n className: 'string',\n contains: [ANTIQUOTE],\n variants: [\n {begin: \"''\", end: \"''\"},\n {begin: '\"', end: '\"'}\n ]\n };\n var EXPRESSIONS = [\n hljs.NUMBER_MODE,\n hljs.HASH_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n ATTRS\n ];\n ANTIQUOTE.contains = EXPRESSIONS;\n return {\n aliases: [\"nixos\"],\n keywords: NIX_KEYWORDS,\n contains: EXPRESSIONS\n };\n};","module.exports = function(hljs) {\n var CONSTANTS = {\n className: 'variable',\n begin: /\\$(ADMINTOOLS|APPDATA|CDBURN_AREA|CMDLINE|COMMONFILES32|COMMONFILES64|COMMONFILES|COOKIES|DESKTOP|DOCUMENTS|EXEDIR|EXEFILE|EXEPATH|FAVORITES|FONTS|HISTORY|HWNDPARENT|INSTDIR|INTERNET_CACHE|LANGUAGE|LOCALAPPDATA|MUSIC|NETHOOD|OUTDIR|PICTURES|PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES32|PROGRAMFILES64|PROGRAMFILES|QUICKLAUNCH|RECENT|RESOURCES_LOCALIZED|RESOURCES|SENDTO|SMPROGRAMS|SMSTARTUP|STARTMENU|SYSDIR|TEMP|TEMPLATES|VIDEOS|WINDIR)/\n };\n\n var DEFINES = {\n // ${defines}\n className: 'variable',\n begin: /\\$+{[\\w\\.:-]+}/\n };\n\n var VARIABLES = {\n // $variables\n className: 'variable',\n begin: /\\$+\\w+/,\n illegal: /\\(\\){}/\n };\n\n var LANGUAGES = {\n // $(language_strings)\n className: 'variable',\n begin: /\\$+\\([\\w\\^\\.:-]+\\)/\n };\n\n var PARAMETERS = {\n // command parameters\n className: 'params',\n begin: '(ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)'\n };\n\n var COMPILER = {\n // !compiler_flags\n className: 'keyword',\n begin: /\\!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|searchparse|searchreplace|system|tempfile|undef|verbose|warning)/\n };\n\n var METACHARS = {\n // $\\n, $\\r, $\\t, $$\n className: 'meta',\n begin: /\\$(\\\\[nrt]|\\$)/\n };\n\n var PLUGINS = {\n // plug::ins\n className: 'class',\n begin: /\\w+\\:\\:\\w+/\n };\n\n var STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"', end: '\"'\n },\n {\n begin: '\\'', end: '\\''\n },\n {\n begin: '`', end: '`'\n }\n ],\n illegal: /\\n/,\n contains: [\n METACHARS,\n CONSTANTS,\n DEFINES,\n VARIABLES,\n LANGUAGES\n ]\n };\n\n return {\n case_insensitive: false,\n keywords: {\n keyword:\n 'Abort AddBrandingImage AddSize AllowRootDirInstall AllowSkipFiles AutoCloseWindow BGFont BGGradient BrandingText BringToFront Call CallInstDLL Caption ChangeUI CheckBitmap ClearErrors CompletedText ComponentText CopyFiles CRCCheck CreateDirectory CreateFont CreateShortCut Delete DeleteINISec DeleteINIStr DeleteRegKey DeleteRegValue DetailPrint DetailsButtonText DirText DirVar DirVerify EnableWindow EnumRegKey EnumRegValue Exch Exec ExecShell ExecShellWait ExecWait ExpandEnvStrings File FileBufSize FileClose FileErrorText FileOpen FileRead FileReadByte FileReadUTF16LE FileReadWord FileSeek FileWrite FileWriteByte FileWriteUTF16LE FileWriteWord FindClose FindFirst FindNext FindWindow FlushINI FunctionEnd GetCurInstType GetCurrentAddress GetDlgItem GetDLLVersion GetDLLVersionLocal GetErrorLevel GetFileTime GetFileTimeLocal GetFullPathName GetFunctionAddress GetInstDirError GetLabelAddress GetTempFileName Goto HideWindow Icon IfAbort IfErrors IfFileExists IfRebootFlag IfSilent InitPluginsDir InstallButtonText InstallColors InstallDir InstallDirRegKey InstProgressFlags InstType InstTypeGetText InstTypeSetText Int64Cmp Int64CmpU Int64Fmt IntCmp IntCmpU IntFmt IntOp IntPtrCmp IntPtrCmpU IntPtrOp IsWindow LangString LicenseBkColor LicenseData LicenseForceSelection LicenseLangString LicenseText LoadLanguageFile LockWindow LogSet LogText ManifestDPIAware ManifestSupportedOS MessageBox MiscButtonText Name Nop OutFile Page PageCallbacks PageExEnd Pop Push Quit ReadEnvStr ReadINIStr ReadRegDWORD ReadRegStr Reboot RegDLL Rename RequestExecutionLevel ReserveFile Return RMDir SearchPath SectionEnd SectionGetFlags SectionGetInstTypes SectionGetSize SectionGetText SectionGroupEnd SectionIn SectionSetFlags SectionSetInstTypes SectionSetSize SectionSetText SendMessage SetAutoClose SetBrandingImage SetCompress SetCompressor SetCompressorDictSize SetCtlColors SetCurInstType SetDatablockOptimize SetDateSave SetDetailsPrint SetDetailsView SetErrorLevel SetErrors SetFileAttributes SetFont SetOutPath SetOverwrite SetRebootFlag SetRegView SetShellVarContext SetSilent ShowInstDetails ShowUninstDetails ShowWindow SilentInstall SilentUnInstall Sleep SpaceTexts StrCmp StrCmpS StrCpy StrLen SubCaption Unicode UninstallButtonText UninstallCaption UninstallIcon UninstallSubCaption UninstallText UninstPage UnRegDLL Var VIAddVersionKey VIFileVersion VIProductVersion WindowIcon WriteINIStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegMultiStr WriteRegNone WriteRegStr WriteUninstaller XPStyle',\n literal:\n 'admin all auto both bottom bzip2 colored components current custom directory false force hide highest ifdiff ifnewer instfiles lastused leave left license listonly lzma nevershow none normal notset off on open print right show silent silentlog smooth textonly top true try un.components un.custom un.directory un.instfiles un.license uninstConfirm user Win10 Win7 Win8 WinVista zlib'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n ),\n {\n className: 'function',\n beginKeywords: 'Function PageEx Section SectionGroup', end: '$'\n },\n STRING,\n COMPILER,\n DEFINES,\n VARIABLES,\n LANGUAGES,\n PARAMETERS,\n PLUGINS,\n hljs.NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var API_CLASS = {\n className: 'built_in',\n begin: '\\\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\\\w+',\n };\n var OBJC_KEYWORDS = {\n keyword:\n 'int float while char export sizeof typedef const struct for union ' +\n 'unsigned long volatile static bool mutable if do return goto void ' +\n 'enum else break extern asm case short default double register explicit ' +\n 'signed typename this switch continue wchar_t inline readonly assign ' +\n 'readwrite self @synchronized id typeof ' +\n 'nonatomic super unichar IBOutlet IBAction strong weak copy ' +\n 'in out inout bycopy byref oneway __strong __weak __block __autoreleasing ' +\n '@private @protected @public @try @property @end @throw @catch @finally ' +\n '@autoreleasepool @synthesize @dynamic @selector @optional @required ' +\n '@encode @package @import @defs @compatibility_alias ' +\n '__bridge __bridge_transfer __bridge_retained __bridge_retain ' +\n '__covariant __contravariant __kindof ' +\n '_Nonnull _Nullable _Null_unspecified ' +\n '__FUNCTION__ __PRETTY_FUNCTION__ __attribute__ ' +\n 'getter setter retain unsafe_unretained ' +\n 'nonnull nullable null_unspecified null_resettable class instancetype ' +\n 'NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER ' +\n 'NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED ' +\n 'NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE ' +\n 'NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END ' +\n 'NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW ' +\n 'NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN',\n literal:\n 'false true FALSE TRUE nil YES NO NULL',\n built_in:\n 'BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once'\n };\n var LEXEMES = /[a-zA-Z@][a-zA-Z0-9_]*/;\n var CLASS_KEYWORDS = '@interface @class @protocol @implementation';\n return {\n aliases: ['mm', 'objc', 'obj-c'],\n keywords: OBJC_KEYWORDS,\n lexemes: LEXEMES,\n illegal: '</',\n contains: [\n API_CLASS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n variants: [\n {\n begin: '@\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\\'', end: '[^\\\\\\\\]\\'',\n illegal: '[^\\\\\\\\][^\\']'\n }\n ]\n },\n {\n className: 'meta',\n begin: '#',\n end: '$',\n contains: [\n {\n className: 'meta-string',\n variants: [\n { begin: '\\\"', end: '\\\"' },\n { begin: '<', end: '>' }\n ]\n }\n ]\n },\n {\n className: 'class',\n begin: '(' + CLASS_KEYWORDS.split(' ').join('|') + ')\\\\b', end: '({|$)', excludeEnd: true,\n keywords: CLASS_KEYWORDS, lexemes: LEXEMES,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n begin: '\\\\.'+hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n /* missing support for heredoc-like string (OCaml 4.0.2+) */\n return {\n aliases: ['ml'],\n keywords: {\n keyword:\n 'and as assert asr begin class constraint do done downto else end ' +\n 'exception external for fun function functor if in include ' +\n 'inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method ' +\n 'mod module mutable new object of open! open or private rec sig struct ' +\n 'then to try type val! val virtual when while with ' +\n /* camlp4 */\n 'parser value',\n built_in:\n /* built-in types */\n 'array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit ' +\n /* (some) types in Pervasives */\n 'in_channel out_channel ref',\n literal:\n 'true false'\n },\n illegal: /\\/\\/|>>/,\n lexemes: '[a-z_]\\\\w*!?',\n contains: [\n {\n className: 'literal',\n begin: '\\\\[(\\\\|\\\\|)?\\\\]|\\\\(\\\\)',\n relevance: 0\n },\n hljs.COMMENT(\n '\\\\(\\\\*',\n '\\\\*\\\\)',\n {\n contains: ['self']\n }\n ),\n { /* type variable */\n className: 'symbol',\n begin: '\\'[A-Za-z_](?!\\')[\\\\w\\']*'\n /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */\n },\n { /* polymorphic variant */\n className: 'type',\n begin: '`[A-Z][\\\\w\\']*'\n },\n { /* module or constructor */\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*',\n relevance: 0\n },\n { /* don't color identifiers, but safely catch all identifiers with '*/\n begin: '[a-z_]\\\\w*\\'[\\\\w\\']*', relevance: 0\n },\n hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n {\n className: 'number',\n begin:\n '\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|' +\n '0[oO][0-7_]+[Lln]?|' +\n '0[bB][01_]+[Lln]?|' +\n '[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)',\n relevance: 0\n },\n {\n begin: /[-=]>/ // relevance booster\n }\n ]\n }\n};","module.exports = function(hljs) {\n\tvar SPECIAL_VARS = {\n\t\tclassName: 'keyword',\n\t\tbegin: '\\\\$(f[asn]|t|vp[rtd]|children)'\n\t},\n\tLITERALS = {\n\t\tclassName: 'literal',\n\t\tbegin: 'false|true|PI|undef'\n\t},\n\tNUMBERS = {\n\t\tclassName: 'number',\n\t\tbegin: '\\\\b\\\\d+(\\\\.\\\\d+)?(e-?\\\\d+)?', //adds 1e5, 1e-10\n\t\trelevance: 0\n\t},\n\tSTRING = hljs.inherit(hljs.QUOTE_STRING_MODE,{illegal: null}),\n\tPREPRO = {\n\t\tclassName: 'meta',\n\t\tkeywords: {'meta-keyword': 'include use'},\n\t\tbegin: 'include|use <',\n\t\tend: '>'\n\t},\n\tPARAMS = {\n\t\tclassName: 'params',\n\t\tbegin: '\\\\(', end: '\\\\)',\n\t\tcontains: ['self', NUMBERS, STRING, SPECIAL_VARS, LITERALS]\n\t},\n\tMODIFIERS = {\n\t\tbegin: '[*!#%]',\n\t\trelevance: 0\n\t},\n\tFUNCTIONS = {\n\t\tclassName: 'function',\n\t\tbeginKeywords: 'module function',\n\t\tend: '\\\\=|\\\\{',\n\t\tcontains: [PARAMS, hljs.UNDERSCORE_TITLE_MODE]\n\t};\n\n\treturn {\n\t\taliases: ['scad'],\n\t\tkeywords: {\n\t\t\tkeyword: 'function module include use for intersection_for if else \\\\%',\n\t\t\tliteral: 'false true PI undef',\n\t\t\tbuilt_in: 'circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign'\n\t\t},\n\t\tcontains: [\n\t\t\thljs.C_LINE_COMMENT_MODE,\n\t\t\thljs.C_BLOCK_COMMENT_MODE,\n\t\t\tNUMBERS,\n\t\t\tPREPRO,\n\t\t\tSTRING,\n\t\t\tSPECIAL_VARS,\n\t\t\tMODIFIERS,\n\t\t\tFUNCTIONS\n\t\t]\n\t}\n};","module.exports = function(hljs) {\n var OXYGENE_KEYWORDS = 'abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue '+\n 'create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false '+\n 'final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited '+\n 'inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of '+\n 'old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly '+\n 'record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple '+\n 'type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal '+\n 'register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained';\n var CURLY_COMMENT = hljs.COMMENT(\n '{',\n '}',\n {\n relevance: 0\n }\n );\n var PAREN_COMMENT = hljs.COMMENT(\n '\\\\(\\\\*',\n '\\\\*\\\\)',\n {\n relevance: 10\n }\n );\n var STRING = {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [{begin: '\\'\\''}]\n };\n var CHAR_STRING = {\n className: 'string', begin: '(#\\\\d+)+'\n };\n var FUNCTION = {\n className: 'function',\n beginKeywords: 'function constructor destructor procedure method', end: '[:;]',\n keywords: 'function constructor|10 destructor|10 procedure|10 method|10',\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n keywords: OXYGENE_KEYWORDS,\n contains: [STRING, CHAR_STRING]\n },\n CURLY_COMMENT, PAREN_COMMENT\n ]\n };\n return {\n case_insensitive: true,\n lexemes: /\\.?\\w+/,\n keywords: OXYGENE_KEYWORDS,\n illegal: '(\"|\\\\$[G-Zg-z]|\\\\/\\\\*|</|=>|->)',\n contains: [\n CURLY_COMMENT, PAREN_COMMENT, hljs.C_LINE_COMMENT_MODE,\n STRING, CHAR_STRING,\n hljs.NUMBER_MODE,\n FUNCTION,\n {\n className: 'class',\n begin: '=\\\\bclass\\\\b', end: 'end;',\n keywords: OXYGENE_KEYWORDS,\n contains: [\n STRING, CHAR_STRING,\n CURLY_COMMENT, PAREN_COMMENT, hljs.C_LINE_COMMENT_MODE,\n FUNCTION\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var CURLY_SUBCOMMENT = hljs.COMMENT(\n '{',\n '}',\n {\n contains: ['self']\n }\n );\n return {\n subLanguage: 'xml', relevance: 0,\n contains: [\n hljs.COMMENT('^#', '$'),\n hljs.COMMENT(\n '\\\\^rem{',\n '}',\n {\n relevance: 10,\n contains: [\n CURLY_SUBCOMMENT\n ]\n }\n ),\n {\n className: 'meta',\n begin: '^@(?:BASE|USE|CLASS|OPTIONS)$',\n relevance: 10\n },\n {\n className: 'title',\n begin: '@[\\\\w\\\\-]+\\\\[[\\\\w^;\\\\-]*\\\\](?:\\\\[[\\\\w^;\\\\-]*\\\\])?(?:.*)$'\n },\n {\n className: 'variable',\n begin: '\\\\$\\\\{?[\\\\w\\\\-\\\\.\\\\:]+\\\\}?'\n },\n {\n className: 'keyword',\n begin: '\\\\^[\\\\w\\\\-\\\\.\\\\:]+'\n },\n {\n className: 'number',\n begin: '\\\\^#[0-9a-fA-F]+'\n },\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var MACRO = {\n className: 'variable',\n begin: /\\$[\\w\\d#@][\\w\\d_]*/\n };\n var TABLE = {\n className: 'variable',\n begin: /<(?!\\/)/, end: />/\n };\n var QUOTE_STRING = {\n className: 'string',\n begin: /\"/, end: /\"/\n };\n\n return {\n aliases: ['pf.conf'],\n lexemes: /[a-z0-9_<>-]+/,\n keywords: {\n built_in: /* block match pass are \"actions\" in pf.conf(5), the rest are\n * lexically similar top-level commands.\n */\n 'block match pass load anchor|5 antispoof|10 set table',\n keyword:\n 'in out log quick on rdomain inet inet6 proto from port os to route' +\n 'allow-opts divert-packet divert-reply divert-to flags group icmp-type' +\n 'icmp6-type label once probability recieved-on rtable prio queue' +\n 'tos tag tagged user keep fragment for os drop' +\n 'af-to|10 binat-to|10 nat-to|10 rdr-to|10 bitmask least-stats random round-robin' +\n 'source-hash static-port' +\n 'dup-to reply-to route-to' +\n 'parent bandwidth default min max qlimit' +\n 'block-policy debug fingerprints hostid limit loginterface optimization' +\n 'reassemble ruleset-optimization basic none profile skip state-defaults' +\n 'state-policy timeout' +\n 'const counters persist' +\n 'no modulate synproxy state|5 floating if-bound no-sync pflow|10 sloppy' +\n 'source-track global rule max-src-nodes max-src-states max-src-conn' +\n 'max-src-conn-rate overload flush' +\n 'scrub|5 max-mss min-ttl no-df|10 random-id',\n literal:\n 'all any no-route self urpf-failed egress|5 unknown'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n MACRO,\n TABLE\n ]\n };\n};","module.exports = function(hljs) {\n var COMMENT_MODE = hljs.COMMENT('--', '$');\n var UNQUOTED_IDENT = '[a-zA-Z_][a-zA-Z_0-9$]*';\n var DOLLAR_STRING = '\\\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\\\$';\n var LABEL = '<<\\\\s*' + UNQUOTED_IDENT + '\\\\s*>>';\n\n var SQL_KW = \n // https://www.postgresql.org/docs/11/static/sql-keywords-appendix.html\n // https://www.postgresql.org/docs/11/static/sql-commands.html\n // SQL commands (starting words)\n 'ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE ' +\n 'DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY ' +\n 'PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW ' +\n 'START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES ' +\n // SQL commands (others)\n 'AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN ' +\n 'WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS ' +\n 'FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM ' +\n 'TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS ' +\n 'METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION ' +\n 'INDEX PROCEDURE ASSERTION ' +\n // additional reserved key words\n 'ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK ' +\n 'COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS ' +\n 'DEFERRABLE RANGE ' +\n 'DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ' +\n 'ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT ' +\n 'NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY ' +\n 'REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN ' +\n 'TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH ' +\n // some of non-reserved (which are used in clauses or as PL/pgSQL keyword)\n 'BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN ' +\n 'BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT ' +\n 'TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN ' +\n 'EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH ' +\n 'REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ' +\n 'ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED ' +\n 'INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 ' +\n 'INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ' +\n 'ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES ' +\n 'RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS ' +\n 'UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF ' +\n // some parameters of VACUUM/ANALYZE/EXPLAIN\n 'FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING ' +\n //\n 'RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED ' +\n 'OF NOTHING NONE EXCLUDE ATTRIBUTE ' +\n // from GRANT (not keywords actually)\n 'USAGE ROUTINES ' +\n // actually literals, but look better this way (due to IS TRUE, IS FALSE, ISNULL etc)\n 'TRUE FALSE NAN INFINITY ';\n\n var ROLE_ATTRS = // only those not in keywrods already\n 'SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT ' +\n 'LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS ';\n\n var PLPGSQL_KW = \n 'ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS ' +\n 'STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT ' +\n 'OPEN ';\n\n var TYPES =\n // https://www.postgresql.org/docs/11/static/datatype.html\n 'BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR ' +\n 'CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 ' +\n 'MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL PATH POINT POLYGON REAL FLOAT4 SMALLINT INT2 ' +\n 'SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 ' +\n 'TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR ' +\n 'INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ' +\n // pseudotypes\n 'ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL ' +\n 'RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR ' +\n // spec. type\n 'NAME ' +\n // OID-types\n 'OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 ' +\n 'REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 ';// +\n // some types from standard extensions\n 'HSTORE|10 LO LTREE|10 ';\n \n var TYPES_RE = \n TYPES.trim()\n .split(' ')\n .map( function(val) { return val.split('|')[0]; } )\n .join('|');\n\n var SQL_BI =\n 'CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP ' +\n 'CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC ';\n\n var PLPGSQL_BI =\n 'FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 ' +\n 'TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ' +\n // get diagnostics\n 'ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME ' +\n 'PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 ' +\n 'PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 ';\n\n var PLPGSQL_EXCEPTIONS =\n // exceptions https://www.postgresql.org/docs/current/static/errcodes-appendix.html\n 'SQLSTATE SQLERRM|10 ' +\n 'SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING ' +\n 'NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED ' +\n 'STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED ' +\n 'SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE ' +\n 'SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION ' +\n 'TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED ' +\n 'INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR ' +\n 'INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION ' +\n 'STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION ' +\n 'DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW ' +\n 'DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW ' +\n 'INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION ' +\n 'INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION ' +\n 'INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST ' +\n 'INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE ' +\n 'NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE ' +\n 'INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE ' +\n 'INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT ' +\n 'INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH ' +\n 'NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE ' +\n 'SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION ' +\n 'SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING ' +\n 'FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION ' +\n 'BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT ' +\n 'INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION ' +\n 'INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION ' +\n 'UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE ' +\n 'INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE ' +\n 'HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION ' +\n 'INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION ' +\n 'NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION ' +\n 'SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION ' +\n 'IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME ' +\n 'TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD ' +\n 'DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST ' +\n 'INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT ' +\n 'MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED ' +\n 'READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION ' +\n 'CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED ' +\n 'PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED ' +\n 'EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED ' +\n 'TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED ' +\n 'SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME ' +\n 'INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION ' +\n 'SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED ' +\n 'SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE ' +\n 'GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME ' +\n 'NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH ' +\n 'INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN ' +\n 'UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT ' +\n 'DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION ' +\n 'DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS ' +\n 'DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS ' +\n 'INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION ' +\n 'INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION ' +\n 'INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION ' +\n 'INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL ' +\n 'OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED ' +\n 'STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE ' +\n 'OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION ' +\n 'QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED ' +\n 'SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR ' +\n 'LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED ' +\n 'FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION ' +\n 'FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER ' +\n 'FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS ' +\n 'FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX ' +\n 'FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH ' +\n 'FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES ' +\n 'FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE ' +\n 'FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION ' +\n 'FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR ' +\n 'RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED ' +\n 'INDEX_CORRUPTED ';\n\n var FUNCTIONS =\n // https://www.postgresql.org/docs/11/static/functions-aggregate.html\n 'ARRAY_AGG AVG BIT_AND BIT_OR BOOL_AND BOOL_OR COUNT EVERY JSON_AGG JSONB_AGG JSON_OBJECT_AGG ' +\n 'JSONB_OBJECT_AGG MAX MIN MODE STRING_AGG SUM XMLAGG ' +\n 'CORR COVAR_POP COVAR_SAMP REGR_AVGX REGR_AVGY REGR_COUNT REGR_INTERCEPT REGR_R2 REGR_SLOPE ' +\n 'REGR_SXX REGR_SXY REGR_SYY STDDEV STDDEV_POP STDDEV_SAMP VARIANCE VAR_POP VAR_SAMP ' +\n 'PERCENTILE_CONT PERCENTILE_DISC ' +\n // https://www.postgresql.org/docs/11/static/functions-window.html\n 'ROW_NUMBER RANK DENSE_RANK PERCENT_RANK CUME_DIST NTILE LAG LEAD FIRST_VALUE LAST_VALUE NTH_VALUE ' +\n // https://www.postgresql.org/docs/11/static/functions-comparison.html\n 'NUM_NONNULLS NUM_NULLS ' +\n // https://www.postgresql.org/docs/11/static/functions-math.html\n 'ABS CBRT CEIL CEILING DEGREES DIV EXP FLOOR LN LOG MOD PI POWER RADIANS ROUND SCALE SIGN SQRT ' +\n 'TRUNC WIDTH_BUCKET ' +\n 'RANDOM SETSEED ' +\n 'ACOS ACOSD ASIN ASIND ATAN ATAND ATAN2 ATAN2D COS COSD COT COTD SIN SIND TAN TAND ' +\n // https://www.postgresql.org/docs/11/static/functions-string.html\n 'BIT_LENGTH CHAR_LENGTH CHARACTER_LENGTH LOWER OCTET_LENGTH OVERLAY POSITION SUBSTRING TREAT TRIM UPPER ' +\n 'ASCII BTRIM CHR CONCAT CONCAT_WS CONVERT CONVERT_FROM CONVERT_TO DECODE ENCODE INITCAP' +\n 'LEFT LENGTH LPAD LTRIM MD5 PARSE_IDENT PG_CLIENT_ENCODING QUOTE_IDENT|10 QUOTE_LITERAL|10 ' +\n 'QUOTE_NULLABLE|10 REGEXP_MATCH REGEXP_MATCHES REGEXP_REPLACE REGEXP_SPLIT_TO_ARRAY ' +\n 'REGEXP_SPLIT_TO_TABLE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SPLIT_PART STRPOS SUBSTR ' +\n 'TO_ASCII TO_HEX TRANSLATE ' +\n // https://www.postgresql.org/docs/11/static/functions-binarystring.html\n 'OCTET_LENGTH GET_BIT GET_BYTE SET_BIT SET_BYTE ' +\n // https://www.postgresql.org/docs/11/static/functions-formatting.html\n 'TO_CHAR TO_DATE TO_NUMBER TO_TIMESTAMP ' +\n // https://www.postgresql.org/docs/11/static/functions-datetime.html\n 'AGE CLOCK_TIMESTAMP|10 DATE_PART DATE_TRUNC ISFINITE JUSTIFY_DAYS JUSTIFY_HOURS JUSTIFY_INTERVAL ' +\n 'MAKE_DATE MAKE_INTERVAL|10 MAKE_TIME MAKE_TIMESTAMP|10 MAKE_TIMESTAMPTZ|10 NOW STATEMENT_TIMESTAMP|10 ' +\n 'TIMEOFDAY TRANSACTION_TIMESTAMP|10 ' +\n // https://www.postgresql.org/docs/11/static/functions-enum.html\n 'ENUM_FIRST ENUM_LAST ENUM_RANGE ' +\n // https://www.postgresql.org/docs/11/static/functions-geometry.html\n 'AREA CENTER DIAMETER HEIGHT ISCLOSED ISOPEN NPOINTS PCLOSE POPEN RADIUS WIDTH ' +\n 'BOX BOUND_BOX CIRCLE LINE LSEG PATH POLYGON ' +\n // https://www.postgresql.org/docs/11/static/functions-net.html\n 'ABBREV BROADCAST HOST HOSTMASK MASKLEN NETMASK NETWORK SET_MASKLEN TEXT INET_SAME_FAMILY' +\n 'INET_MERGE MACADDR8_SET7BIT ' +\n // https://www.postgresql.org/docs/11/static/functions-textsearch.html\n 'ARRAY_TO_TSVECTOR GET_CURRENT_TS_CONFIG NUMNODE PLAINTO_TSQUERY PHRASETO_TSQUERY WEBSEARCH_TO_TSQUERY ' +\n 'QUERYTREE SETWEIGHT STRIP TO_TSQUERY TO_TSVECTOR JSON_TO_TSVECTOR JSONB_TO_TSVECTOR TS_DELETE ' +\n 'TS_FILTER TS_HEADLINE TS_RANK TS_RANK_CD TS_REWRITE TSQUERY_PHRASE TSVECTOR_TO_ARRAY ' +\n 'TSVECTOR_UPDATE_TRIGGER TSVECTOR_UPDATE_TRIGGER_COLUMN ' +\n // https://www.postgresql.org/docs/11/static/functions-xml.html\n 'XMLCOMMENT XMLCONCAT XMLELEMENT XMLFOREST XMLPI XMLROOT ' +\n 'XMLEXISTS XML_IS_WELL_FORMED XML_IS_WELL_FORMED_DOCUMENT XML_IS_WELL_FORMED_CONTENT ' +\n 'XPATH XPATH_EXISTS XMLTABLE XMLNAMESPACES ' +\n 'TABLE_TO_XML TABLE_TO_XMLSCHEMA TABLE_TO_XML_AND_XMLSCHEMA ' +\n 'QUERY_TO_XML QUERY_TO_XMLSCHEMA QUERY_TO_XML_AND_XMLSCHEMA ' +\n 'CURSOR_TO_XML CURSOR_TO_XMLSCHEMA ' +\n 'SCHEMA_TO_XML SCHEMA_TO_XMLSCHEMA SCHEMA_TO_XML_AND_XMLSCHEMA ' +\n 'DATABASE_TO_XML DATABASE_TO_XMLSCHEMA DATABASE_TO_XML_AND_XMLSCHEMA ' +\n 'XMLATTRIBUTES ' +\n // https://www.postgresql.org/docs/11/static/functions-json.html\n 'TO_JSON TO_JSONB ARRAY_TO_JSON ROW_TO_JSON JSON_BUILD_ARRAY JSONB_BUILD_ARRAY JSON_BUILD_OBJECT ' +\n 'JSONB_BUILD_OBJECT JSON_OBJECT JSONB_OBJECT JSON_ARRAY_LENGTH JSONB_ARRAY_LENGTH JSON_EACH ' +\n 'JSONB_EACH JSON_EACH_TEXT JSONB_EACH_TEXT JSON_EXTRACT_PATH JSONB_EXTRACT_PATH ' +\n 'JSON_OBJECT_KEYS JSONB_OBJECT_KEYS JSON_POPULATE_RECORD JSONB_POPULATE_RECORD JSON_POPULATE_RECORDSET ' +\n 'JSONB_POPULATE_RECORDSET JSON_ARRAY_ELEMENTS JSONB_ARRAY_ELEMENTS JSON_ARRAY_ELEMENTS_TEXT ' +\n 'JSONB_ARRAY_ELEMENTS_TEXT JSON_TYPEOF JSONB_TYPEOF JSON_TO_RECORD JSONB_TO_RECORD JSON_TO_RECORDSET ' +\n 'JSONB_TO_RECORDSET JSON_STRIP_NULLS JSONB_STRIP_NULLS JSONB_SET JSONB_INSERT JSONB_PRETTY ' +\n // https://www.postgresql.org/docs/11/static/functions-sequence.html\n 'CURRVAL LASTVAL NEXTVAL SETVAL ' +\n // https://www.postgresql.org/docs/11/static/functions-conditional.html\n 'COALESCE NULLIF GREATEST LEAST ' +\n // https://www.postgresql.org/docs/11/static/functions-array.html\n 'ARRAY_APPEND ARRAY_CAT ARRAY_NDIMS ARRAY_DIMS ARRAY_FILL ARRAY_LENGTH ARRAY_LOWER ARRAY_POSITION ' +\n 'ARRAY_POSITIONS ARRAY_PREPEND ARRAY_REMOVE ARRAY_REPLACE ARRAY_TO_STRING ARRAY_UPPER CARDINALITY ' +\n 'STRING_TO_ARRAY UNNEST ' +\n // https://www.postgresql.org/docs/11/static/functions-range.html\n 'ISEMPTY LOWER_INC UPPER_INC LOWER_INF UPPER_INF RANGE_MERGE ' +\n // https://www.postgresql.org/docs/11/static/functions-srf.html\n 'GENERATE_SERIES GENERATE_SUBSCRIPTS ' +\n // https://www.postgresql.org/docs/11/static/functions-info.html\n 'CURRENT_DATABASE CURRENT_QUERY CURRENT_SCHEMA|10 CURRENT_SCHEMAS|10 INET_CLIENT_ADDR INET_CLIENT_PORT ' +\n 'INET_SERVER_ADDR INET_SERVER_PORT ROW_SECURITY_ACTIVE FORMAT_TYPE ' +\n 'TO_REGCLASS TO_REGPROC TO_REGPROCEDURE TO_REGOPER TO_REGOPERATOR TO_REGTYPE TO_REGNAMESPACE TO_REGROLE ' +\n 'COL_DESCRIPTION OBJ_DESCRIPTION SHOBJ_DESCRIPTION ' +\n 'TXID_CURRENT TXID_CURRENT_IF_ASSIGNED TXID_CURRENT_SNAPSHOT TXID_SNAPSHOT_XIP TXID_SNAPSHOT_XMAX ' +\n 'TXID_SNAPSHOT_XMIN TXID_VISIBLE_IN_SNAPSHOT TXID_STATUS ' +\n // https://www.postgresql.org/docs/11/static/functions-admin.html\n 'CURRENT_SETTING SET_CONFIG BRIN_SUMMARIZE_NEW_VALUES BRIN_SUMMARIZE_RANGE BRIN_DESUMMARIZE_RANGE ' +\n 'GIN_CLEAN_PENDING_LIST ' +\n // https://www.postgresql.org/docs/11/static/functions-trigger.html\n 'SUPPRESS_REDUNDANT_UPDATES_TRIGGER ' +\n // ihttps://www.postgresql.org/docs/devel/static/lo-funcs.html\n 'LO_FROM_BYTEA LO_PUT LO_GET LO_CREAT LO_CREATE LO_UNLINK LO_IMPORT LO_EXPORT LOREAD LOWRITE ' +\n //\n 'GROUPING CAST ';\n\n var FUNCTIONS_RE = \n FUNCTIONS.trim()\n .split(' ')\n .map( function(val) { return val.split('|')[0]; } )\n .join('|');\n\n return {\n aliases: ['postgres','postgresql'],\n case_insensitive: true,\n keywords: {\n keyword:\n SQL_KW + PLPGSQL_KW + ROLE_ATTRS,\n built_in:\n SQL_BI + PLPGSQL_BI + PLPGSQL_EXCEPTIONS,\n },\n // Forbid some cunstructs from other languages to improve autodetect. In fact\n // \"[a-z]:\" is legal (as part of array slice), but improbabal.\n illegal: /:==|\\W\\s*\\(\\*|(^|\\s)\\$[a-z]|{{|[a-z]:\\s*$|\\.\\.\\.|TO:|DO:/,\n contains: [\n // special handling of some words, which are reserved only in some contexts\n {\n className: 'keyword',\n variants: [\n { begin: /\\bTEXT\\s*SEARCH\\b/ },\n { begin: /\\b(PRIMARY|FOREIGN|FOR(\\s+NO)?)\\s+KEY\\b/ },\n { begin: /\\bPARALLEL\\s+(UNSAFE|RESTRICTED|SAFE)\\b/ },\n { begin: /\\bSTORAGE\\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\\b/ },\n { begin: /\\bMATCH\\s+(FULL|PARTIAL|SIMPLE)\\b/ },\n { begin: /\\bNULLS\\s+(FIRST|LAST)\\b/ },\n { begin: /\\bEVENT\\s+TRIGGER\\b/ },\n { begin: /\\b(MAPPING|OR)\\s+REPLACE\\b/ },\n { begin: /\\b(FROM|TO)\\s+(PROGRAM|STDIN|STDOUT)\\b/ },\n { begin: /\\b(SHARE|EXCLUSIVE)\\s+MODE\\b/ },\n { begin: /\\b(LEFT|RIGHT)\\s+(OUTER\\s+)?JOIN\\b/ },\n { begin: /\\b(FETCH|MOVE)\\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\\b/ },\n { begin: /\\bPRESERVE\\s+ROWS\\b/ },\n { begin: /\\bDISCARD\\s+PLANS\\b/ },\n { begin: /\\bREFERENCING\\s+(OLD|NEW)\\b/ },\n { begin: /\\bSKIP\\s+LOCKED\\b/ },\n { begin: /\\bGROUPING\\s+SETS\\b/ },\n { begin: /\\b(BINARY|INSENSITIVE|SCROLL|NO\\s+SCROLL)\\s+(CURSOR|FOR)\\b/ },\n { begin: /\\b(WITH|WITHOUT)\\s+HOLD\\b/ },\n { begin: /\\bWITH\\s+(CASCADED|LOCAL)\\s+CHECK\\s+OPTION\\b/ },\n { begin: /\\bEXCLUDE\\s+(TIES|NO\\s+OTHERS)\\b/ },\n { begin: /\\bFORMAT\\s+(TEXT|XML|JSON|YAML)\\b/ },\n { begin: /\\bSET\\s+((SESSION|LOCAL)\\s+)?NAMES\\b/ },\n { begin: /\\bIS\\s+(NOT\\s+)?UNKNOWN\\b/ },\n { begin: /\\bSECURITY\\s+LABEL\\b/ },\n { begin: /\\bSTANDALONE\\s+(YES|NO|NO\\s+VALUE)\\b/ },\n { begin: /\\bWITH\\s+(NO\\s+)?DATA\\b/ },\n { begin: /\\b(FOREIGN|SET)\\s+DATA\\b/ },\n { begin: /\\bSET\\s+(CATALOG|CONSTRAINTS)\\b/ },\n { begin: /\\b(WITH|FOR)\\s+ORDINALITY\\b/ },\n { begin: /\\bIS\\s+(NOT\\s+)?DOCUMENT\\b/ },\n { begin: /\\bXML\\s+OPTION\\s+(DOCUMENT|CONTENT)\\b/ },\n { begin: /\\b(STRIP|PRESERVE)\\s+WHITESPACE\\b/ },\n { begin: /\\bNO\\s+(ACTION|MAXVALUE|MINVALUE)\\b/ },\n { begin: /\\bPARTITION\\s+BY\\s+(RANGE|LIST|HASH)\\b/ },\n { begin: /\\bAT\\s+TIME\\s+ZONE\\b/ },\n { begin: /\\bGRANTED\\s+BY\\b/ },\n { begin: /\\bRETURN\\s+(QUERY|NEXT)\\b/ },\n { begin: /\\b(ATTACH|DETACH)\\s+PARTITION\\b/ },\n { begin: /\\bFORCE\\s+ROW\\s+LEVEL\\s+SECURITY\\b/ },\n { begin: /\\b(INCLUDING|EXCLUDING)\\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\\b/ },\n { begin: /\\bAS\\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\\b/ }\n ]\n },\n // functions named as keywords, followed by '('\n {\n begin: /\\b(FORMAT|FAMILY|VERSION)\\s*\\(/,\n //keywords: { built_in: 'FORMAT FAMILY VERSION' }\n },\n // INCLUDE ( ... ) in index_parameters in CREATE TABLE\n {\n begin: /\\bINCLUDE\\s*\\(/,\n keywords: 'INCLUDE'\n },\n // not highlight RANGE if not in frame_clause (not 100% correct, but seems satisfactory)\n {\n begin: /\\bRANGE(?!\\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))/\n },\n // disable highlighting in commands CREATE AGGREGATE/COLLATION/DATABASE/OPERTOR/TEXT SEARCH .../TYPE\n // and in PL/pgSQL RAISE ... USING\n {\n begin: /\\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\\s*=/\n },\n // PG_smth; HAS_some_PRIVILEGE\n {\n //className: 'built_in',\n begin: /\\b(PG_\\w+?|HAS_[A-Z_]+_PRIVILEGE)\\b/,\n relevance: 10\n },\n // extract\n {\n begin: /\\bEXTRACT\\s*\\(/,\n end: /\\bFROM\\b/,\n returnEnd: true,\n keywords: {\n //built_in: 'EXTRACT',\n type: 'CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS ' +\n 'MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR ' +\n 'TIMEZONE_MINUTE WEEK YEAR'\n }\n },\n // xmlelement, xmlpi - special NAME\n {\n begin: /\\b(XMLELEMENT|XMLPI)\\s*\\(\\s*NAME/,\n keywords: {\n //built_in: 'XMLELEMENT XMLPI',\n keyword: 'NAME'\n }\n },\n // xmlparse, xmlserialize\n {\n begin: /\\b(XMLPARSE|XMLSERIALIZE)\\s*\\(\\s*(DOCUMENT|CONTENT)/,\n keywords: {\n //built_in: 'XMLPARSE XMLSERIALIZE',\n keyword: 'DOCUMENT CONTENT'\n }\n },\n // Sequences. We actually skip everything between CACHE|INCREMENT|MAXVALUE|MINVALUE and\n // nearest following numeric constant. Without with trick we find a lot of \"keywords\"\n // in 'avrasm' autodetection test...\n {\n beginKeywords: 'CACHE INCREMENT MAXVALUE MINVALUE',\n end: hljs.C_NUMBER_RE,\n returnEnd: true,\n keywords: 'BY CACHE INCREMENT MAXVALUE MINVALUE'\n },\n // WITH|WITHOUT TIME ZONE as part of datatype\n {\n className: 'type',\n begin: /\\b(WITH|WITHOUT)\\s+TIME\\s+ZONE\\b/\n },\n // INTERVAL optional fields\n {\n className: 'type',\n begin: /\\bINTERVAL\\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\\s+TO\\s+(MONTH|HOUR|MINUTE|SECOND))?\\b/\n },\n // Pseudo-types which allowed only as return type\n {\n begin: /\\bRETURNS\\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\\b/,\n keywords: {\n keyword: 'RETURNS',\n type: 'LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER'\n }\n },\n // Known functions - only when followed by '('\n {\n begin: '\\\\b(' + FUNCTIONS_RE + ')\\\\s*\\\\('\n //keywords: { built_in: FUNCTIONS }\n },\n // Types\n {\n begin: '\\\\.(' + TYPES_RE + ')\\\\b' // prevent highlight as type, say, 'oid' in 'pgclass.oid'\n },\n {\n begin: '\\\\b(' + TYPES_RE + ')\\\\s+PATH\\\\b', // in XMLTABLE\n keywords: {\n keyword: 'PATH', // hopefully no one would use PATH type in XMLTABLE...\n type: TYPES.replace('PATH ','')\n }\n },\n {\n className: 'type',\n begin: '\\\\b(' + TYPES_RE + ')\\\\b'\n },\n // Strings, see https://www.postgresql.org/docs/11/static/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS\n {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [{begin: '\\'\\''}]\n },\n {\n className: 'string',\n begin: '(e|E|u&|U&)\\'', end: '\\'',\n contains: [{begin: '\\\\\\\\.'}],\n relevance: 10\n },\n {\n begin: DOLLAR_STRING,\n endSameAsBegin: true,\n contains: [\n {\n // actually we want them all except SQL; listed are those with known implementations\n // and XML + JSON just in case\n subLanguage: ['pgsql','perl','python','tcl','r','lua','java','php','ruby','bash','scheme','xml','json'],\n endsWithParent: true\n }\n ]\n },\n // identifiers in quotes\n {\n begin: '\"', end: '\"',\n contains: [{begin: '\"\"'}]\n },\n // numbers\n hljs.C_NUMBER_MODE,\n // comments\n hljs.C_BLOCK_COMMENT_MODE,\n COMMENT_MODE,\n // PL/pgSQL staff\n // %ROWTYPE, %TYPE, $n\n {\n className: 'meta',\n variants: [\n {begin: '%(ROW)?TYPE', relevance: 10}, // %TYPE, %ROWTYPE\n {begin: '\\\\$\\\\d+'}, // $n\n {begin: '^#\\\\w', end: '$'} // #compiler option\n ]\n },\n // <<labeles>>\n {\n className: 'symbol',\n begin: LABEL,\n relevance: 10\n }\n ]\n };\n};","module.exports = function(hljs) {\n var VARIABLE = {\n begin: '\\\\$+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*'\n };\n var PREPROCESSOR = {\n className: 'meta', begin: /<\\?(php)?|\\?>/\n };\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, PREPROCESSOR],\n variants: [\n {\n begin: 'b\"', end: '\"'\n },\n {\n begin: 'b\\'', end: '\\''\n },\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null})\n ]\n };\n var NUMBER = {variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]};\n return {\n aliases: ['php', 'php3', 'php4', 'php5', 'php6', 'php7'],\n case_insensitive: true,\n keywords:\n 'and include_once list abstract global private echo interface as static endswitch ' +\n 'array null if endwhile or const for endforeach self var while isset public ' +\n 'protected exit foreach throw elseif include __FILE__ empty require_once do xor ' +\n 'return parent clone use __CLASS__ __LINE__ else break print eval new ' +\n 'catch __METHOD__ case exception default die require __FUNCTION__ ' +\n 'enddeclare final try switch continue endfor endif declare unset true false ' +\n 'trait goto instanceof insteadof __DIR__ __NAMESPACE__ ' +\n 'yield finally',\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT('//', '$', {contains: [PREPROCESSOR]}),\n hljs.COMMENT(\n '/\\\\*',\n '\\\\*/',\n {\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.COMMENT(\n '__halt_compiler.+?;',\n false,\n {\n endsWithParent: true,\n keywords: '__halt_compiler',\n lexemes: hljs.UNDERSCORE_IDENT_RE\n }\n ),\n {\n className: 'string',\n begin: /<<<['\"]?\\w+['\"]?$/, end: /^\\w+;?$/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {\n className: 'subst',\n variants: [\n {begin: /\\$\\w+/},\n {begin: /\\{\\$/, end: /\\}/}\n ]\n }\n ]\n },\n PREPROCESSOR,\n {\n className: 'keyword', begin: /\\$this\\b/\n },\n VARIABLE,\n {\n // swallow composed identifiers to avoid parsing them as keywords\n begin: /(::|->)+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/\n },\n {\n className: 'function',\n beginKeywords: 'function', end: /[;{]/, excludeEnd: true,\n illegal: '\\\\$|\\\\[|%',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n contains: [\n 'self',\n VARIABLE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER\n ]\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface', end: '{', excludeEnd: true,\n illegal: /[:\\(\\$\"]/,\n contains: [\n {beginKeywords: 'extends implements'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n beginKeywords: 'namespace', end: ';',\n illegal: /[\\.']/,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n beginKeywords: 'use', end: ';',\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n begin: '=>' // No markup, just a relevance booster\n },\n STRING,\n NUMBER\n ]\n };\n};","module.exports = function(hljs) {\n return {\n disableAutodetect: true\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'actor addressof and as be break class compile_error compile_intrinsic' +\n 'consume continue delegate digestof do else elseif embed end error' +\n 'for fun if ifdef in interface is isnt lambda let match new not object' +\n 'or primitive recover repeat return struct then trait try type until ' +\n 'use var where while with xor',\n meta:\n 'iso val tag trn box ref',\n literal:\n 'this false true'\n };\n\n var TRIPLE_QUOTE_STRING_MODE = {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"',\n relevance: 10\n };\n\n var QUOTE_STRING_MODE = {\n className: 'string',\n begin: '\"', end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n\n var SINGLE_QUOTE_CHAR_MODE = {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [hljs.BACKSLASH_ESCAPE],\n relevance: 0\n };\n\n var TYPE_NAME = {\n className: 'type',\n begin: '\\\\b_?[A-Z][\\\\w]*',\n relevance: 0\n };\n\n var PRIMED_NAME = {\n begin: hljs.IDENT_RE + '\\'', relevance: 0\n };\n\n var CLASS = {\n className: 'class',\n beginKeywords: 'class actor', end: '$',\n contains: [\n hljs.TITLE_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]\n }\n\n var FUNCTION = {\n className: 'function',\n beginKeywords: 'new fun', end: '=>',\n contains: [\n hljs.TITLE_MODE,\n {\n begin: /\\(/, end: /\\)/,\n contains: [\n TYPE_NAME,\n PRIMED_NAME,\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n begin: /:/, endsWithParent: true,\n contains: [TYPE_NAME]\n },\n hljs.C_LINE_COMMENT_MODE\n ]\n }\n\n return {\n keywords: KEYWORDS,\n contains: [\n CLASS,\n FUNCTION,\n TYPE_NAME,\n TRIPLE_QUOTE_STRING_MODE,\n QUOTE_STRING_MODE,\n SINGLE_QUOTE_CHAR_MODE,\n PRIMED_NAME,\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var BACKTICK_ESCAPE = {\n begin: '`[\\\\s\\\\S]',\n relevance: 0\n };\n var VAR = {\n className: 'variable',\n variants: [\n {begin: /\\$[\\w\\d][\\w\\d_:]*/}\n ]\n };\n var LITERAL = {\n className: 'literal',\n begin: /\\$(null|true|false)\\b/\n };\n var QUOTE_STRING = {\n className: 'string',\n variants: [\n { begin: /\"/, end: /\"/ },\n { begin: /@\"/, end: /^\"@/ }\n ],\n contains: [\n BACKTICK_ESCAPE,\n VAR,\n {\n className: 'variable',\n begin: /\\$[A-z]/, end: /[^A-z]/\n }\n ]\n };\n var APOS_STRING = {\n className: 'string',\n variants: [\n { begin: /'/, end: /'/ },\n { begin: /@'/, end: /^'@/ }\n ]\n };\n\n var PS_HELPTAGS = {\n className: 'doctag',\n variants: [\n /* no paramater help tags */ \n { begin: /\\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/ },\n /* one parameter help tags */\n { begin: /\\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\\s+\\S+/ }\n ]\n };\n var PS_COMMENT = hljs.inherit(\n hljs.COMMENT(null, null),\n {\n variants: [\n /* single-line comment */\n { begin: /#/, end: /$/ },\n /* multi-line comment */\n { begin: /<#/, end: /#>/ }\n ],\n contains: [PS_HELPTAGS]\n }\n );\n\n return {\n aliases: ['ps'],\n lexemes: /-?[A-z\\.\\-]+/,\n case_insensitive: true,\n keywords: {\n keyword: 'if else foreach return function do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch',\n built_in: 'Add-Computer Add-Content Add-History Add-JobTrigger Add-Member Add-PSSnapin Add-Type Checkpoint-Computer Clear-Content Clear-EventLog Clear-History Clear-Host Clear-Item Clear-ItemProperty Clear-Variable Compare-Object Complete-Transaction Connect-PSSession Connect-WSMan Convert-Path ConvertFrom-Csv ConvertFrom-Json ConvertFrom-SecureString ConvertFrom-StringData ConvertTo-Csv ConvertTo-Html ConvertTo-Json ConvertTo-SecureString ConvertTo-Xml Copy-Item Copy-ItemProperty Debug-Process Disable-ComputerRestore Disable-JobTrigger Disable-PSBreakpoint Disable-PSRemoting Disable-PSSessionConfiguration Disable-WSManCredSSP Disconnect-PSSession Disconnect-WSMan Disable-ScheduledJob Enable-ComputerRestore Enable-JobTrigger Enable-PSBreakpoint Enable-PSRemoting Enable-PSSessionConfiguration Enable-ScheduledJob Enable-WSManCredSSP Enter-PSSession Exit-PSSession Export-Alias Export-Clixml Export-Console Export-Counter Export-Csv Export-FormatData Export-ModuleMember Export-PSSession ForEach-Object Format-Custom Format-List Format-Table Format-Wide Get-Acl Get-Alias Get-AuthenticodeSignature Get-ChildItem Get-Command Get-ComputerRestorePoint Get-Content Get-ControlPanelItem Get-Counter Get-Credential Get-Culture Get-Date Get-Event Get-EventLog Get-EventSubscriber Get-ExecutionPolicy Get-FormatData Get-Host Get-HotFix Get-Help Get-History Get-IseSnippet Get-Item Get-ItemProperty Get-Job Get-JobTrigger Get-Location Get-Member Get-Module Get-PfxCertificate Get-Process Get-PSBreakpoint Get-PSCallStack Get-PSDrive Get-PSProvider Get-PSSession Get-PSSessionConfiguration Get-PSSnapin Get-Random Get-ScheduledJob Get-ScheduledJobOption Get-Service Get-TraceSource Get-Transaction Get-TypeData Get-UICulture Get-Unique Get-Variable Get-Verb Get-WinEvent Get-WmiObject Get-WSManCredSSP Get-WSManInstance Group-Object Import-Alias Import-Clixml Import-Counter Import-Csv Import-IseSnippet Import-LocalizedData Import-PSSession Import-Module Invoke-AsWorkflow Invoke-Command Invoke-Expression Invoke-History Invoke-Item Invoke-RestMethod Invoke-WebRequest Invoke-WmiMethod Invoke-WSManAction Join-Path Limit-EventLog Measure-Command Measure-Object Move-Item Move-ItemProperty New-Alias New-Event New-EventLog New-IseSnippet New-Item New-ItemProperty New-JobTrigger New-Object New-Module New-ModuleManifest New-PSDrive New-PSSession New-PSSessionConfigurationFile New-PSSessionOption New-PSTransportOption New-PSWorkflowExecutionOption New-PSWorkflowSession New-ScheduledJobOption New-Service New-TimeSpan New-Variable New-WebServiceProxy New-WinEvent New-WSManInstance New-WSManSessionOption Out-Default Out-File Out-GridView Out-Host Out-Null Out-Printer Out-String Pop-Location Push-Location Read-Host Receive-Job Register-EngineEvent Register-ObjectEvent Register-PSSessionConfiguration Register-ScheduledJob Register-WmiEvent Remove-Computer Remove-Event Remove-EventLog Remove-Item Remove-ItemProperty Remove-Job Remove-JobTrigger Remove-Module Remove-PSBreakpoint Remove-PSDrive Remove-PSSession Remove-PSSnapin Remove-TypeData Remove-Variable Remove-WmiObject Remove-WSManInstance Rename-Computer Rename-Item Rename-ItemProperty Reset-ComputerMachinePassword Resolve-Path Restart-Computer Restart-Service Restore-Computer Resume-Job Resume-Service Save-Help Select-Object Select-String Select-Xml Send-MailMessage Set-Acl Set-Alias Set-AuthenticodeSignature Set-Content Set-Date Set-ExecutionPolicy Set-Item Set-ItemProperty Set-JobTrigger Set-Location Set-PSBreakpoint Set-PSDebug Set-PSSessionConfiguration Set-ScheduledJob Set-ScheduledJobOption Set-Service Set-StrictMode Set-TraceSource Set-Variable Set-WmiInstance Set-WSManInstance Set-WSManQuickConfig Show-Command Show-ControlPanelItem Show-EventLog Sort-Object Split-Path Start-Job Start-Process Start-Service Start-Sleep Start-Transaction Start-Transcript Stop-Computer Stop-Job Stop-Process Stop-Service Stop-Transcript Suspend-Job Suspend-Service Tee-Object Test-ComputerSecureChannel Test-Connection Test-ModuleManifest Test-Path Test-PSSessionConfigurationFile Trace-Command Unblock-File Undo-Transaction Unregister-Event Unregister-PSSessionConfiguration Unregister-ScheduledJob Update-FormatData Update-Help Update-List Update-TypeData Use-Transaction Wait-Event Wait-Job Wait-Process Where-Object Write-Debug Write-Error Write-EventLog Write-Host Write-Output Write-Progress Write-Verbose Write-Warning Add-MDTPersistentDrive Disable-MDTMonitorService Enable-MDTMonitorService Get-MDTDeploymentShareStatistics Get-MDTMonitorData Get-MDTOperatingSystemCatalog Get-MDTPersistentDrive Import-MDTApplication Import-MDTDriver Import-MDTOperatingSystem Import-MDTPackage Import-MDTTaskSequence New-MDTDatabase Remove-MDTMonitorData Remove-MDTPersistentDrive Restore-MDTPersistentDrive Set-MDTMonitorData Test-MDTDeploymentShare Test-MDTMonitorData Update-MDTDatabaseSchema Update-MDTDeploymentShare Update-MDTLinkedDS Update-MDTMedia Update-MDTMedia Add-VamtProductKey Export-VamtData Find-VamtManagedMachine Get-VamtConfirmationId Get-VamtProduct Get-VamtProductKey Import-VamtData Initialize-VamtData Install-VamtConfirmationId Install-VamtProductActivation Install-VamtProductKey Update-VamtProduct',\n nomarkup: '-ne -eq -lt -gt -ge -le -not -like -notlike -match -notmatch -contains -notcontains -in -notin -replace'\n },\n contains: [\n BACKTICK_ESCAPE,\n hljs.NUMBER_MODE,\n QUOTE_STRING,\n APOS_STRING,\n LITERAL,\n VAR,\n PS_COMMENT\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword: 'BufferedReader PVector PFont PImage PGraphics HashMap boolean byte char color ' +\n 'double float int long String Array FloatDict FloatList IntDict IntList JSONArray JSONObject ' +\n 'Object StringDict StringList Table TableRow XML ' +\n // Java keywords\n 'false synchronized int abstract float private char boolean static null if const ' +\n 'for true while long throw strictfp finally protected import native final return void ' +\n 'enum else break transient new catch instanceof byte super volatile case assert short ' +\n 'package default double public try this switch continue throws protected public private',\n literal: 'P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI',\n title: 'setup draw',\n built_in: 'displayHeight displayWidth mouseY mouseX mousePressed pmouseX pmouseY key ' +\n 'keyCode pixels focused frameCount frameRate height width ' +\n 'size createGraphics beginDraw createShape loadShape PShape arc ellipse line point ' +\n 'quad rect triangle bezier bezierDetail bezierPoint bezierTangent curve curveDetail curvePoint ' +\n 'curveTangent curveTightness shape shapeMode beginContour beginShape bezierVertex curveVertex ' +\n 'endContour endShape quadraticVertex vertex ellipseMode noSmooth rectMode smooth strokeCap ' +\n 'strokeJoin strokeWeight mouseClicked mouseDragged mouseMoved mousePressed mouseReleased ' +\n 'mouseWheel keyPressed keyPressedkeyReleased keyTyped print println save saveFrame day hour ' +\n 'millis minute month second year background clear colorMode fill noFill noStroke stroke alpha ' +\n 'blue brightness color green hue lerpColor red saturation modelX modelY modelZ screenX screenY ' +\n 'screenZ ambient emissive shininess specular add createImage beginCamera camera endCamera frustum ' +\n 'ortho perspective printCamera printProjection cursor frameRate noCursor exit loop noLoop popStyle ' +\n 'pushStyle redraw binary boolean byte char float hex int str unbinary unhex join match matchAll nf ' +\n 'nfc nfp nfs split splitTokens trim append arrayCopy concat expand reverse shorten sort splice subset ' +\n 'box sphere sphereDetail createInput createReader loadBytes loadJSONArray loadJSONObject loadStrings ' +\n 'loadTable loadXML open parseXML saveTable selectFolder selectInput beginRaw beginRecord createOutput ' +\n 'createWriter endRaw endRecord PrintWritersaveBytes saveJSONArray saveJSONObject saveStream saveStrings ' +\n 'saveXML selectOutput popMatrix printMatrix pushMatrix resetMatrix rotate rotateX rotateY rotateZ scale ' +\n 'shearX shearY translate ambientLight directionalLight lightFalloff lights lightSpecular noLights normal ' +\n 'pointLight spotLight image imageMode loadImage noTint requestImage tint texture textureMode textureWrap ' +\n 'blend copy filter get loadPixels set updatePixels blendMode loadShader PShaderresetShader shader createFont ' +\n 'loadFont text textFont textAlign textLeading textMode textSize textWidth textAscent textDescent abs ceil ' +\n 'constrain dist exp floor lerp log mag map max min norm pow round sq sqrt acos asin atan atan2 cos degrees ' +\n 'radians sin tan noise noiseDetail noiseSeed random randomGaussian randomSeed'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n contains: [\n hljs.C_NUMBER_MODE,\n {\n begin: '[a-zA-Z_][\\\\da-zA-Z_]+\\\\.[\\\\da-zA-Z_]{1,3}', end: ':',\n excludeEnd: true\n },\n {\n begin: '(ncalls|tottime|cumtime)', end: '$',\n keywords: 'ncalls tottime|10 cumtime|10 filename',\n relevance: 10\n },\n {\n begin: 'function calls', end: '$',\n contains: [hljs.C_NUMBER_MODE],\n relevance: 10\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\\\(', end: '\\\\)$',\n excludeBegin: true, excludeEnd: true,\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n\n var ATOM = {\n\n begin: /[a-z][A-Za-z0-9_]*/,\n relevance: 0\n };\n\n var VAR = {\n\n className: 'symbol',\n variants: [\n {begin: /[A-Z][a-zA-Z0-9_]*/},\n {begin: /_[A-Za-z0-9_]*/},\n ],\n relevance: 0\n };\n\n var PARENTED = {\n\n begin: /\\(/,\n end: /\\)/,\n relevance: 0\n };\n\n var LIST = {\n\n begin: /\\[/,\n end: /\\]/\n };\n\n var LINE_COMMENT = {\n\n className: 'comment',\n begin: /%/, end: /$/,\n contains: [hljs.PHRASAL_WORDS_MODE]\n };\n\n var BACKTICK_STRING = {\n\n className: 'string',\n begin: /`/, end: /`/,\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n\n var CHAR_CODE = {\n\n className: 'string', // 0'a etc.\n begin: /0\\'(\\\\\\'|.)/\n };\n\n var SPACE_CODE = {\n\n className: 'string',\n begin: /0\\'\\\\s/ // 0'\\s\n };\n\n var PRED_OP = { // relevance booster\n begin: /:-/\n };\n\n var inner = [\n\n ATOM,\n VAR,\n PARENTED,\n PRED_OP,\n LIST,\n LINE_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n BACKTICK_STRING,\n CHAR_CODE,\n SPACE_CODE,\n hljs.C_NUMBER_MODE\n ];\n\n PARENTED.contains = inner;\n LIST.contains = inner;\n\n return {\n contains: inner.concat([\n {begin: /\\.$/} // relevance booster\n ])\n };\n};","module.exports = function(hljs) {\n\n // whitespaces: space, tab, formfeed\n var WS0 = '[ \\\\t\\\\f]*';\n var WS1 = '[ \\\\t\\\\f]+';\n // delimiter\n var DELIM = '(' + WS0+'[:=]'+WS0+ '|' + WS1 + ')';\n var KEY_ALPHANUM = '([^\\\\\\\\\\\\W:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+';\n var KEY_OTHER = '([^\\\\\\\\:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+';\n\n var DELIM_AND_VALUE = {\n // skip DELIM\n end: DELIM,\n relevance: 0,\n starts: {\n // value: everything until end of line (again, taking into account backslashes)\n className: 'string',\n end: /$/,\n relevance: 0,\n contains: [\n { begin: '\\\\\\\\\\\\n' }\n ]\n }\n };\n\n return {\n case_insensitive: true,\n illegal: /\\S/,\n contains: [\n hljs.COMMENT('^\\\\s*[!#]', '$'),\n // key: everything until whitespace or = or : (taking into account backslashes)\n // case of a \"normal\" key\n {\n begin: KEY_ALPHANUM + DELIM,\n returnBegin: true,\n contains: [\n {\n className: 'attr',\n begin: KEY_ALPHANUM,\n endsParent: true,\n relevance: 0\n }\n ],\n starts: DELIM_AND_VALUE\n },\n // case of key containing non-alphanumeric chars => relevance = 0\n {\n begin: KEY_OTHER + DELIM,\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'meta',\n begin: KEY_OTHER,\n endsParent: true,\n relevance: 0\n }\n ],\n starts: DELIM_AND_VALUE\n },\n // case of an empty key\n {\n className: 'attr',\n relevance: 0,\n begin: KEY_OTHER + WS0 + '$'\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword: 'package import option optional required repeated group oneof',\n built_in: 'double float int32 int64 uint32 uint64 sint32 sint64 ' +\n 'fixed32 fixed64 sfixed32 sfixed64 bool string bytes',\n literal: 'true false'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'message enum service', end: /\\{/,\n illegal: /\\n/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\n })\n ]\n },\n {\n className: 'function',\n beginKeywords: 'rpc',\n end: /;/, excludeEnd: true,\n keywords: 'rpc returns'\n },\n {\n begin: /^\\s*[A-Z_]+/,\n end: /\\s*=/, excludeEnd: true\n }\n ]\n };\n};","module.exports = function(hljs) {\n\n var PUPPET_KEYWORDS = {\n keyword:\n /* language keywords */\n 'and case default else elsif false if in import enherits node or true undef unless main settings $string ',\n literal:\n /* metaparameters */\n 'alias audit before loglevel noop require subscribe tag ' +\n /* normal attributes */\n 'owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check ' +\n 'en_address ip_address realname command environment hour monute month monthday special target weekday '+\n 'creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore ' +\n 'links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source ' +\n 'souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid '+\n 'ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel ' +\n 'native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options ' +\n 'device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use ' +\n 'message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform ' +\n 'responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running ' +\n 'start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age ' +\n 'password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled ' +\n 'enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist ' +\n 'priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey ' +\n 'sslverify mounted',\n built_in:\n /* core facts */\n 'architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers ' +\n 'domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces '+\n 'ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion ' +\n 'kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease ' +\n 'lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major ' +\n 'macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease '+\n 'operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion '+\n 'rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced '+\n 'selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime '+\n 'uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version'\n };\n\n var COMMENT = hljs.COMMENT('#', '$');\n\n var IDENT_RE = '([A-Za-z_]|::)(\\\\w|::)*';\n\n var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: IDENT_RE});\n\n var VARIABLE = {className: 'variable', begin: '\\\\$' + IDENT_RE};\n\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, VARIABLE],\n variants: [\n {begin: /'/, end: /'/},\n {begin: /\"/, end: /\"/}\n ]\n };\n\n return {\n aliases: ['pp'],\n contains: [\n COMMENT,\n VARIABLE,\n STRING,\n {\n beginKeywords: 'class', end: '\\\\{|;',\n illegal: /=/,\n contains: [TITLE, COMMENT]\n },\n {\n beginKeywords: 'define', end: /\\{/,\n contains: [\n {\n className: 'section', begin: hljs.IDENT_RE, endsParent: true\n }\n ]\n },\n {\n begin: hljs.IDENT_RE + '\\\\s+\\\\{', returnBegin: true,\n end: /\\S/,\n contains: [\n {\n className: 'keyword',\n begin: hljs.IDENT_RE\n },\n {\n begin: /\\{/, end: /\\}/,\n keywords: PUPPET_KEYWORDS,\n relevance: 0,\n contains: [\n STRING,\n COMMENT,\n {\n begin:'[a-zA-Z_]+\\\\s*=>',\n returnBegin: true, end: '=>',\n contains: [\n {\n className: 'attr',\n begin: hljs.IDENT_RE,\n }\n ]\n },\n {\n className: 'number',\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n relevance: 0\n },\n VARIABLE\n ]\n }\n ],\n relevance: 0\n }\n ]\n }\n};","module.exports = // Base deafult colors in PB IDE: background: #FFFFDF; foreground: #000000;\n\nfunction(hljs) {\n var STRINGS = { // PB IDE color: #0080FF (Azure Radiance)\n className: 'string',\n begin: '(~)?\"', end: '\"',\n illegal: '\\\\n'\n };\n var CONSTANTS = { // PB IDE color: #924B72 (Cannon Pink)\n // \"#\" + a letter or underscore + letters, digits or underscores + (optional) \"$\"\n className: 'symbol',\n begin: '#[a-zA-Z_]\\\\w*\\\\$?'\n };\n\n return {\n aliases: ['pb', 'pbi'],\n keywords: // PB IDE color: #006666 (Blue Stone) + Bold\n // The following keywords list was taken and adapted from GuShH's PureBasic language file for GeSHi...\n 'And As Break CallDebugger Case CompilerCase CompilerDefault CompilerElse CompilerEndIf CompilerEndSelect ' +\n 'CompilerError CompilerIf CompilerSelect Continue Data DataSection EndDataSection Debug DebugLevel ' +\n 'Default Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM ' +\n 'EnableDebugger EnableExplicit End EndEnumeration EndIf EndImport EndInterface EndMacro EndProcedure ' +\n 'EndSelect EndStructure EndStructureUnion EndWith Enumeration Extends FakeReturn For Next ForEach ' +\n 'ForEver Global Gosub Goto If Import ImportC IncludeBinary IncludeFile IncludePath Interface Macro ' +\n 'NewList Not Or ProcedureReturn Protected Prototype ' +\n 'PrototypeC Read ReDim Repeat Until Restore Return Select Shared Static Step Structure StructureUnion ' +\n 'Swap To Wend While With XIncludeFile XOr ' +\n 'Procedure ProcedureC ProcedureCDLL ProcedureDLL Declare DeclareC DeclareCDLL DeclareDLL',\n contains: [\n // COMMENTS | PB IDE color: #00AAAA (Persian Green)\n hljs.COMMENT(';', '$', {relevance: 0}),\n\n { // PROCEDURES DEFINITIONS\n className: 'function',\n begin: '\\\\b(Procedure|Declare)(C|CDLL|DLL)?\\\\b',\n end: '\\\\(',\n excludeEnd: true,\n returnBegin: true,\n contains: [\n { // PROCEDURE KEYWORDS | PB IDE color: #006666 (Blue Stone) + Bold\n className: 'keyword',\n begin: '(Procedure|Declare)(C|CDLL|DLL)?',\n excludeEnd: true\n },\n { // PROCEDURE RETURN TYPE SETTING | PB IDE color: #000000 (Black)\n className: 'type',\n begin: '\\\\.\\\\w*'\n // end: ' ',\n },\n hljs.UNDERSCORE_TITLE_MODE // PROCEDURE NAME | PB IDE color: #006666 (Blue Stone)\n ]\n },\n STRINGS,\n CONSTANTS\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'and elif is global as in if from raise for except finally print import pass return ' +\n 'exec else break not with class assert yield try while continue del or def lambda ' +\n 'async await nonlocal|10 None True False',\n built_in:\n 'Ellipsis NotImplemented'\n };\n var PROMPT = {\n className: 'meta', begin: /^(>>>|\\.\\.\\.) /\n };\n var SUBST = {\n className: 'subst',\n begin: /\\{/, end: /\\}/,\n keywords: KEYWORDS,\n illegal: /#/\n };\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {\n begin: /(u|b)?r?'''/, end: /'''/,\n contains: [hljs.BACKSLASH_ESCAPE, PROMPT],\n relevance: 10\n },\n {\n begin: /(u|b)?r?\"\"\"/, end: /\"\"\"/,\n contains: [hljs.BACKSLASH_ESCAPE, PROMPT],\n relevance: 10\n },\n {\n begin: /(fr|rf|f)'''/, end: /'''/,\n contains: [hljs.BACKSLASH_ESCAPE, PROMPT, SUBST]\n },\n {\n begin: /(fr|rf|f)\"\"\"/, end: /\"\"\"/,\n contains: [hljs.BACKSLASH_ESCAPE, PROMPT, SUBST]\n },\n {\n begin: /(u|r|ur)'/, end: /'/,\n relevance: 10\n },\n {\n begin: /(u|r|ur)\"/, end: /\"/,\n relevance: 10\n },\n {\n begin: /(b|br)'/, end: /'/\n },\n {\n begin: /(b|br)\"/, end: /\"/\n },\n {\n begin: /(fr|rf|f)'/, end: /'/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n {\n begin: /(fr|rf|f)\"/, end: /\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n var NUMBER = {\n className: 'number', relevance: 0,\n variants: [\n {begin: hljs.BINARY_NUMBER_RE + '[lLjJ]?'},\n {begin: '\\\\b(0o[0-7]+)[lLjJ]?'},\n {begin: hljs.C_NUMBER_RE + '[lLjJ]?'}\n ]\n };\n var PARAMS = {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n contains: ['self', PROMPT, NUMBER, STRING]\n };\n SUBST.contains = [STRING, NUMBER, PROMPT];\n return {\n aliases: ['py', 'gyp'],\n keywords: KEYWORDS,\n illegal: /(<\\/|->|\\?)|=>/,\n contains: [\n PROMPT,\n NUMBER,\n STRING,\n hljs.HASH_COMMENT_MODE,\n {\n variants: [\n {className: 'function', beginKeywords: 'def'},\n {className: 'class', beginKeywords: 'class'}\n ],\n end: /:/,\n illegal: /[${=;\\n,]/,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n PARAMS,\n {\n begin: /->/, endsWithParent: true,\n keywords: 'None'\n }\n ]\n },\n {\n className: 'meta',\n begin: /^[\\t ]*@/, end: /$/\n },\n {\n begin: /\\b(print|exec)\\(/ // don’t highlight keywords-turned-functions in Python 3\n }\n ]\n };\n};","module.exports = function(hljs) {\n var Q_KEYWORDS = {\n keyword:\n 'do while select delete by update from',\n literal:\n '0b 1b',\n built_in:\n 'neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum',\n type:\n '`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid'\n };\n return {\n aliases:['k', 'kdb'],\n keywords: Q_KEYWORDS,\n lexemes: /(`?)[A-Za-z0-9_]+\\b/,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'in of on if for while finally var new function do return void else break catch ' +\n 'instanceof with throw case default try this switch continue typeof delete ' +\n 'let yield const export super debugger as async await import',\n literal:\n 'true false null undefined NaN Infinity',\n built_in:\n 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\n 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\n 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\n 'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\n 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\n 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\n 'module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect ' +\n 'Behavior bool color coordinate date double enumeration font geocircle georectangle ' +\n 'geoshape int list matrix4x4 parent point quaternion real rect ' +\n 'size string url variant vector2d vector3d vector4d' +\n 'Promise'\n };\n\n var QML_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9\\\\._]*';\n\n // Isolate property statements. Ends at a :, =, ;, ,, a comment or end of line.\n // Use property class.\n var PROPERTY = {\n className: 'keyword',\n begin: '\\\\bproperty\\\\b',\n starts: {\n className: 'string',\n end: '(:|=|;|,|//|/\\\\*|$)',\n returnEnd: true\n }\n };\n\n // Isolate signal statements. Ends at a ) a comment or end of line.\n // Use property class.\n var SIGNAL = {\n className: 'keyword',\n begin: '\\\\bsignal\\\\b',\n starts: {\n className: 'string',\n end: '(\\\\(|:|=|;|,|//|/\\\\*|$)',\n returnEnd: true\n }\n };\n\n // id: is special in QML. When we see id: we want to mark the id: as attribute and\n // emphasize the token following.\n var ID_ID = {\n className: 'attribute',\n begin: '\\\\bid\\\\s*:',\n starts: {\n className: 'string',\n end: QML_IDENT_RE,\n returnEnd: false\n }\n };\n\n // Find QML object attribute. An attribute is a QML identifier followed by :.\n // Unfortunately it's hard to know where it ends, as it may contain scalars,\n // objects, object definitions, or javascript. The true end is either when the parent\n // ends or the next attribute is detected.\n var QML_ATTRIBUTE = {\n begin: QML_IDENT_RE + '\\\\s*:',\n returnBegin: true,\n contains: [\n {\n className: 'attribute',\n begin: QML_IDENT_RE,\n end: '\\\\s*:',\n excludeEnd: true,\n relevance: 0\n }\n ],\n relevance: 0\n };\n\n // Find QML object. A QML object is a QML identifier followed by { and ends at the matching }.\n // All we really care about is finding IDENT followed by { and just mark up the IDENT and ignore the {.\n var QML_OBJECT = {\n begin: QML_IDENT_RE + '\\\\s*{', end: '{',\n returnBegin: true,\n relevance: 0,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: QML_IDENT_RE})\n ]\n };\n\n return {\n aliases: ['qt'],\n case_insensitive: false,\n keywords: KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n { // template string\n className: 'string',\n begin: '`', end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {\n className: 'subst',\n begin: '\\\\$\\\\{', end: '\\\\}'\n }\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'number',\n variants: [\n { begin: '\\\\b(0[bB][01]+)' },\n { begin: '\\\\b(0[oO][0-7]+)' },\n { begin: hljs.C_NUMBER_RE }\n ],\n relevance: 0\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.REGEXP_MODE,\n { // E4X / JSX\n begin: /</, end: />\\s*[);\\]]/,\n relevance: 0,\n subLanguage: 'xml'\n }\n ],\n relevance: 0\n },\n SIGNAL,\n PROPERTY,\n {\n className: 'function',\n beginKeywords: 'function', end: /\\{/, excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: /[A-Za-z$_][0-9A-Za-z$_]*/}),\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n }\n ],\n illegal: /\\[|%/\n },\n {\n begin: '\\\\.' + hljs.IDENT_RE, relevance: 0 // hack: prevents detection of keywords after dots\n },\n ID_ID,\n QML_ATTRIBUTE,\n QML_OBJECT\n ],\n illegal: /#/\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '([a-zA-Z]|\\\\.[a-zA-Z.])[a-zA-Z0-9._]*';\n\n return {\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n begin: IDENT_RE,\n lexemes: IDENT_RE,\n keywords: {\n keyword:\n 'function if in break next repeat else for return switch while try tryCatch ' +\n 'stop warning require library attach detach source setMethod setGeneric ' +\n 'setGroupGeneric setClass ...',\n literal:\n 'NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 ' +\n 'NA_complex_|10'\n },\n relevance: 0\n },\n {\n // hex value\n className: 'number',\n begin: \"0[xX][0-9a-fA-F]+[Li]?\\\\b\",\n relevance: 0\n },\n {\n // explicit integer\n className: 'number',\n begin: \"\\\\d+(?:[eE][+\\\\-]?\\\\d*)?L\\\\b\",\n relevance: 0\n },\n {\n // number with trailing decimal\n className: 'number',\n begin: \"\\\\d+\\\\.(?!\\\\d)(?:i\\\\b)?\",\n relevance: 0\n },\n {\n // number\n className: 'number',\n begin: \"\\\\d+(?:\\\\.\\\\d*)?(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\n relevance: 0\n },\n {\n // number with leading decimal\n className: 'number',\n begin: \"\\\\.\\\\d+(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\n relevance: 0\n },\n\n {\n // escaped identifier\n begin: '`',\n end: '`',\n relevance: 0\n },\n\n {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {begin: '\"', end: '\"'},\n {begin: \"'\", end: \"'\"}\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n function orReValues(ops){\n return ops\n .map(function(op) {\n return op\n .split('')\n .map(function(char) {\n return '\\\\' + char;\n })\n .join('');\n })\n .join('|');\n }\n\n var RE_IDENT = '~?[a-z$_][0-9a-zA-Z$_]*';\n var RE_MODULE_IDENT = '`?[A-Z$_][0-9a-zA-Z$_]*';\n \n var RE_PARAM_TYPEPARAM = '\\'?[a-z$_][0-9a-z$_]*';\n var RE_PARAM_TYPE = '\\s*:\\s*[a-z$_][0-9a-z$_]*(\\(\\s*(' + RE_PARAM_TYPEPARAM + '\\s*(,' + RE_PARAM_TYPEPARAM + ')*)?\\s*\\))?';\n var RE_PARAM = RE_IDENT + '(' + RE_PARAM_TYPE + ')?(' + RE_PARAM_TYPE + ')?';\n var RE_OPERATOR = \"(\" + orReValues(['||', '&&', '++', '**', '+.', '*', '/', '*.', '/.', '...', '|>']) + \"|==|===)\";\n var RE_OPERATOR_SPACED = \"\\\\s+\" + RE_OPERATOR + \"\\\\s+\";\n\n var KEYWORDS = {\n keyword:\n 'and as asr assert begin class constraint do done downto else end exception external' +\n 'for fun function functor if in include inherit initializer' +\n 'land lazy let lor lsl lsr lxor match method mod module mutable new nonrec' +\n 'object of open or private rec sig struct then to try type val virtual when while with',\n built_in:\n 'array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ',\n literal:\n 'true false'\n };\n\n const RE_NUMBER = '\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|' +\n '0[oO][0-7_]+[Lln]?|' +\n '0[bB][01_]+[Lln]?|' +\n '[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)';\n\n const NUMBER_MODE = {\n className: 'number', \n relevance: 0,\n variants: [\n {\n begin: RE_NUMBER\n },\n {\n begin: '\\\\(\\\\-' + RE_NUMBER + '\\\\)'\n }\n ]\n };\n\n const OPERATOR_MODE = {\n className: 'operator',\n relevance: 0,\n begin: RE_OPERATOR\n };\n const LIST_CONTENTS_MODES = [\n {\n className: 'identifier',\n relevance: 0,\n begin: RE_IDENT\n },\n OPERATOR_MODE,\n NUMBER_MODE\n ];\n\n const MODULE_ACCESS_CONTENTS = [\n hljs.QUOTE_STRING_MODE,\n OPERATOR_MODE,\n {\n className: 'module',\n begin: \"\\\\b\" + RE_MODULE_IDENT, returnBegin: true,\n end: \"\\.\",\n contains: [\n {\n className: 'identifier',\n begin: RE_MODULE_IDENT,\n relevance: 0\n }\n ]\n }\n ];\n\n const PARAMS_CONTENTS = [\n {\n className: 'module',\n begin: \"\\\\b\" + RE_MODULE_IDENT, returnBegin: true,\n end: \"\\.\",\n relevance: 0,\n contains: [\n {\n className: 'identifier',\n begin: RE_MODULE_IDENT,\n relevance: 0\n }\n ]\n }\n ];\n\n const PARAMS_MODE = {\n begin: RE_IDENT,\n end: '(,|\\\\n|\\\\))',\n relevance: 0,\n contains: [\n OPERATOR_MODE,\n {\n className: 'typing',\n begin: ':',\n end: '(,|\\\\n)',\n returnBegin: true,\n relevance: 0,\n contains: PARAMS_CONTENTS\n }\n ]\n };\n\n const FUNCTION_BLOCK_MODE = {\n className: 'function',\n relevance: 0,\n keywords: KEYWORDS,\n variants: [\n {\n begin: '\\\\s(\\\\(\\\\.?.*?\\\\)|' + RE_IDENT + ')\\\\s*=>',\n end: '\\\\s*=>',\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: RE_IDENT\n },\n {\n begin: RE_PARAM\n },\n {\n begin: /\\(\\s*\\)/,\n }\n ]\n }\n ]\n },\n {\n begin: '\\\\s\\\\(\\\\.?[^;\\\\|]*\\\\)\\\\s*=>',\n end: '\\\\s=>',\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'params',\n relevance: 0,\n variants: [\n PARAMS_MODE\n ]\n }\n ]\n },\n {\n begin: '\\\\(\\\\.\\\\s' + RE_IDENT + '\\\\)\\\\s*=>'\n }\n ]\n };\n MODULE_ACCESS_CONTENTS.push(FUNCTION_BLOCK_MODE);\n\n const CONSTRUCTOR_MODE = {\n className: 'constructor',\n begin: RE_MODULE_IDENT + '\\\\(',\n end: '\\\\)',\n illegal: '\\\\n',\n keywords: KEYWORDS,\n contains: [\n hljs.QUOTE_STRING_MODE,\n OPERATOR_MODE,\n {\n className: 'params',\n begin: '\\\\b' + RE_IDENT\n }\n ]\n };\n\n const PATTERN_MATCH_BLOCK_MODE = {\n className: 'pattern-match',\n begin: '\\\\|',\n returnBegin: true,\n keywords: KEYWORDS,\n end: '=>',\n relevance: 0,\n contains: [\n CONSTRUCTOR_MODE,\n OPERATOR_MODE, \n {\n relevance: 0,\n className: 'constructor',\n begin: RE_MODULE_IDENT\n }\n ]\n };\n\n const MODULE_ACCESS_MODE = {\n className: 'module-access',\n keywords: KEYWORDS,\n returnBegin: true,\n variants: [\n {\n begin: \"\\\\b(\" + RE_MODULE_IDENT + \"\\\\.)+\" + RE_IDENT\n },\n {\n begin: \"\\\\b(\" + RE_MODULE_IDENT + \"\\\\.)+\\\\(\",\n end: \"\\\\)\",\n returnBegin: true,\n contains: [\n FUNCTION_BLOCK_MODE,\n {\n begin: '\\\\(',\n end: '\\\\)',\n skip: true\n }\n ].concat(MODULE_ACCESS_CONTENTS)\n },\n {\n begin: \"\\\\b(\" + RE_MODULE_IDENT + \"\\\\.)+{\",\n end: \"}\"\n }\n ],\n contains: MODULE_ACCESS_CONTENTS\n };\n\n PARAMS_CONTENTS.push(MODULE_ACCESS_MODE);\n \n return {\n aliases: ['re'],\n keywords: KEYWORDS,\n illegal: '(:\\\\-|:=|\\\\${|\\\\+=)',\n contains: [\n hljs.COMMENT('/\\\\*', '\\\\*/', { illegal: '^(\\\\#,\\\\/\\\\/)' }),\n {\n className: 'character',\n begin: '\\'(\\\\\\\\[^\\']+|[^\\'])\\'',\n illegal: '\\\\n',\n relevance: 0\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'literal',\n begin: '\\\\(\\\\)',\n relevance: 0\n },\n {\n className: 'literal',\n begin: '\\\\[\\\\|',\n end: '\\\\|\\\\]',\n relevance: 0,\n contains: LIST_CONTENTS_MODES\n },\n {\n className: 'literal',\n begin: '\\\\[',\n end: '\\\\]',\n relevance: 0,\n contains: LIST_CONTENTS_MODES\n },\n CONSTRUCTOR_MODE,\n {\n className: 'operator',\n begin: RE_OPERATOR_SPACED,\n illegal: '\\\\-\\\\->',\n relevance: 0\n },\n NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n PATTERN_MATCH_BLOCK_MODE,\n FUNCTION_BLOCK_MODE,\n {\n className: 'module-def',\n begin: \"\\\\bmodule\\\\s+\" + RE_IDENT + \"\\\\s+\" + RE_MODULE_IDENT + \"\\\\s+=\\\\s+{\",\n end: \"}\",\n returnBegin: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n {\n className: 'module',\n relevance: 0,\n begin: RE_MODULE_IDENT\n },\n {\n begin: '{',\n end: '}',\n skip: true\n }\n ].concat(MODULE_ACCESS_CONTENTS)\n },\n MODULE_ACCESS_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords:\n 'ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis ' +\n 'Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone ' +\n 'CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail ' +\n 'DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format ' +\n 'FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry ' +\n 'Hider Hyperboloid Identity Illuminate Imager Interior LightSource ' +\n 'MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte ' +\n 'MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option ' +\n 'Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples ' +\n 'PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection ' +\n 'Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ' +\n 'ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere ' +\n 'SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd ' +\n 'TransformPoints Translate TrimCurve WorldBegin WorldEnd',\n illegal: '</',\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var IDENTIFIER = '[a-zA-Z-_][^\\\\n{]+\\\\{';\n\n var PROPERTY = {\n className: 'attribute',\n begin: /[a-zA-Z-_]+/, end: /\\s*:/, excludeEnd: true,\n starts: {\n end: ';',\n relevance: 0,\n contains: [\n {\n className: 'variable',\n begin: /\\.[a-zA-Z-_]+/\n },\n {\n className: 'keyword',\n begin: /\\(optional\\)/\n }\n ]\n }\n };\n\n return {\n aliases: ['graph', 'instances'],\n case_insensitive: true,\n keywords: 'import',\n contains: [\n // Facet sections\n {\n begin: '^facet ' + IDENTIFIER,\n end: '}',\n keywords: 'facet',\n contains: [\n PROPERTY,\n hljs.HASH_COMMENT_MODE\n ]\n },\n\n // Instance sections\n {\n begin: '^\\\\s*instance of ' + IDENTIFIER,\n end: '}',\n keywords: 'name count channels instance-data instance-state instance of',\n illegal: /\\S/,\n contains: [\n 'self',\n PROPERTY,\n hljs.HASH_COMMENT_MODE\n ]\n },\n\n // Component sections\n {\n begin: '^' + IDENTIFIER,\n end: '}',\n contains: [\n PROPERTY,\n hljs.HASH_COMMENT_MODE\n ]\n },\n\n // Comments\n hljs.HASH_COMMENT_MODE\n ]\n };\n};","module.exports = // Colors from RouterOS terminal:\n// green - #0E9A00\n// teal - #0C9A9A\n// purple - #99069A\n// light-brown - #9A9900\n\nfunction(hljs) {\n\n var STATEMENTS = 'foreach do while for if from to step else on-error and or not in';\n\n // Global commands: Every global command should start with \":\" token, otherwise it will be treated as variable.\n var GLOBAL_COMMANDS = 'global local beep delay put len typeof pick log time set find environment terminal error execute parse resolve toarray tobool toid toip toip6 tonum tostr totime';\n\n // Common commands: Following commands available from most sub-menus:\n var COMMON_COMMANDS = 'add remove enable disable set get print export edit find run debug error info warning';\n\n var LITERALS = 'true false yes no nothing nil null';\n\n var OBJECTS = 'traffic-flow traffic-generator firewall scheduler aaa accounting address-list address align area bandwidth-server bfd bgp bridge client clock community config connection console customer default dhcp-client dhcp-server discovery dns e-mail ethernet filter firewall firmware gps graphing group hardware health hotspot identity igmp-proxy incoming instance interface ip ipsec ipv6 irq l2tp-server lcd ldp logging mac-server mac-winbox mangle manual mirror mme mpls nat nd neighbor network note ntp ospf ospf-v3 ovpn-server page peer pim ping policy pool port ppp pppoe-client pptp-server prefix profile proposal proxy queue radius resource rip ripng route routing screen script security-profiles server service service-port settings shares smb sms sniffer snmp snooper socks sstp-server system tool tracking type upgrade upnp user-manager users user vlan secret vrrp watchdog web-access wireless pptp pppoe lan wan layer7-protocol lease simple raw';\n\n // print parameters\n // Several parameters are available for print command:\n // ToDo: var PARAMETERS_PRINT = 'append as-value brief detail count-only file follow follow-only from interval terse value-list without-paging where info';\n // ToDo: var OPERATORS = '&& and ! not || or in ~ ^ & << >> + - * /';\n // ToDo: var TYPES = 'num number bool boolean str string ip ip6-prefix id time array';\n // ToDo: The following tokens serve as delimiters in the grammar: () [] {} : ; $ / \n\n var VAR_PREFIX = 'global local set for foreach';\n\n var VAR = {\n className: 'variable',\n variants: [\n {begin: /\\$[\\w\\d#@][\\w\\d_]*/},\n {begin: /\\$\\{(.*?)}/}\n ]\n };\n \n var QUOTE_STRING = {\n className: 'string',\n begin: /\"/, end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR,\n {\n className: 'variable',\n begin: /\\$\\(/, end: /\\)/,\n contains: [hljs.BACKSLASH_ESCAPE]\n }\n ]\n };\n \n var APOS_STRING = {\n className: 'string',\n begin: /'/, end: /'/\n };\n \n var IPADDR = '((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\b';\n var IPADDR_wBITMASK = IPADDR+'/(3[0-2]|[1-2][0-9]|\\\\d)';\n //////////////////////////////////////////////////////////////////////\n return {\n aliases: ['routeros', 'mikrotik'],\n case_insensitive: true,\n lexemes: /:?[\\w-]+/,\n keywords: {\n literal: LITERALS,\n keyword: STATEMENTS + ' :' + STATEMENTS.split(' ').join(' :') + ' :' + GLOBAL_COMMANDS.split(' ').join(' :'),\n },\n contains: [\n { // недопустимые конструкции\n variants: [\n { begin: /^@/, end: /$/, }, // dns\n { begin: /\\/\\*/, end: /\\*\\//, }, // -- comment\n { begin: /%%/, end: /$/, }, // -- comment\n { begin: /^'/, end: /$/, }, // Monkey one line comment\n { begin: /^\\s*\\/[\\w-]+=/, end: /$/, }, // jboss-cli\n { begin: /\\/\\//, end: /$/, }, // Stan comment\n { begin: /^\\[\\</, end: /\\>\\]$/, }, // F# class declaration?\n { begin: /<\\//, end: />/, }, // HTML tags\n { begin: /^facet /, end: /\\}/, }, // roboconf - лютый костыль )))\n { begin: '^1\\\\.\\\\.(\\\\d+)$', end: /$/, }, // tap \n ],\n illegal: /./,\n },\n hljs.COMMENT('^#', '$'),\n QUOTE_STRING,\n APOS_STRING,\n VAR,\n { // attribute=value\n begin: /[\\w-]+\\=([^\\s\\{\\}\\[\\]\\(\\)]+)/, \n relevance: 0,\n returnBegin: true,\n contains: [\n {\n className: 'attribute',\n begin: /[^=]+/\n },\n {\n begin: /=/, \n endsWithParent: true,\n relevance: 0,\n contains: [\n QUOTE_STRING,\n APOS_STRING,\n VAR,\n {\n className: 'literal',\n begin: '\\\\b(' + LITERALS.split(' ').join('|') + ')\\\\b',\n },\n /*{\n // IPv4 addresses and subnets\n className: 'number',\n variants: [\n {begin: IPADDR_wBITMASK+'(,'+IPADDR_wBITMASK+')*'}, //192.168.0.0/24,1.2.3.0/24\n {begin: IPADDR+'-'+IPADDR}, // 192.168.0.1-192.168.0.3\n {begin: IPADDR+'(,'+IPADDR+')*'}, // 192.168.0.1,192.168.0.34,192.168.24.1,192.168.0.1\n ]\n }, // */\n /*{\n // MAC addresses and DHCP Client IDs\n className: 'number',\n begin: /\\b(1:)?([0-9A-Fa-f]{1,2}[:-]){5}([0-9A-Fa-f]){1,2}\\b/,\n }, //*/\n {\n // Не форматировать не классифицированные значения. Необходимо для исключения подсветки значений как built_in.\n // className: 'number', \n begin: /(\"[^\"]*\"|[^\\s\\{\\}\\[\\]]+)/,\n }, //*/\n ]\n } //*/\n ]\n },//*/\n {\n // HEX values\n className: 'number',\n begin: /\\*[0-9a-fA-F]+/,\n }, //*/\n\n { \n begin: '\\\\b(' + COMMON_COMMANDS.split(' ').join('|') + ')([\\\\s\\[\\(]|\\])',\n returnBegin: true,\n contains: [\n {\n className: 'builtin-name', //'function',\n begin: /\\w+/,\n },\n ], \n },\n \n { \n className: 'built_in',\n variants: [\n {begin: '(\\\\.\\\\./|/|\\\\s)((' + OBJECTS.split(' ').join('|') + ');?\\\\s)+',relevance: 10,},\n {begin: /\\.\\./,},\n ],\n },//*/\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword:\n 'float color point normal vector matrix while for if do return else break extern continue',\n built_in:\n 'abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise ' +\n 'clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp ' +\n 'faceforward filterstep floor format fresnel incident length lightsource log match ' +\n 'max min mod noise normalize ntransform opposite option phong pnoise pow printf ' +\n 'ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp ' +\n 'setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan ' +\n 'texture textureinfo trace transform vtransform xcomp ycomp zcomp'\n },\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '#', end: '$'\n },\n {\n className: 'class',\n beginKeywords: 'surface displacement light volume imager', end: '\\\\('\n },\n {\n beginKeywords: 'illuminate illuminance gather', end: '\\\\('\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword: 'BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE ' +\n 'INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 ' +\n 'INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 ' +\n 'INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 ' +\n 'INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 ' +\n 'INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 ' +\n 'INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 ' +\n 'INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 ' +\n 'INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 ' +\n 'INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 ' +\n 'INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 ' +\n 'INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 ' +\n 'INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 ' +\n 'INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 ' +\n 'INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 ' +\n 'MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER ' +\n 'OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE ' +\n 'NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH ' +\n 'IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND ' +\n 'UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ' +\n 'ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE ' +\n 'GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE ' +\n 'SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING ' +\n 'DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF ' +\n 'MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY ' +\n 'YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE ' +\n 'COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR ' +\n 'READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ' +\n 'ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE ' +\n 'EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE ' +\n 'SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL ' +\n 'COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN ' +\n 'MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING ' +\n 'FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM ' +\n 'NUMDAYS READ_DATE STAGING',\n built_in: 'IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML ' +\n 'DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT ' +\n 'DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE ' +\n 'DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT ' +\n 'DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'literal',\n variants: [\n {begin: '#\\\\s+[a-zA-Z\\\\ \\\\.]*', relevance: 0}, // looks like #-comment\n {begin: '#[a-zA-Z\\\\ \\\\.]+'}\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var NUM_SUFFIX = '([ui](8|16|32|64|128|size)|f(32|64))\\?';\n var KEYWORDS =\n 'alignof as be box break const continue crate do else enum extern ' +\n 'false fn for if impl in let loop match mod mut offsetof once priv ' +\n 'proc pub pure ref return self Self sizeof static struct super trait true ' +\n 'type typeof unsafe unsized use virtual while where yield move default';\n var BUILTINS =\n // functions\n 'drop ' +\n // types\n 'i8 i16 i32 i64 i128 isize ' +\n 'u8 u16 u32 u64 u128 usize ' +\n 'f32 f64 ' +\n 'str char bool ' +\n 'Box Option Result String Vec ' +\n // traits\n 'Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug ' +\n 'PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator ' +\n 'Extend IntoIterator DoubleEndedIterator ExactSizeIterator ' +\n 'SliceConcatExt ToString ' +\n // macros\n 'assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! ' +\n 'debug_assert! debug_assert_eq! env! panic! file! format! format_args! ' +\n 'include_bin! include_str! line! local_data_key! module_path! ' +\n 'option_env! print! println! select! stringify! try! unimplemented! ' +\n 'unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!';\n return {\n aliases: ['rs'],\n keywords: {\n keyword:\n KEYWORDS,\n literal:\n 'true false Some None Ok Err',\n built_in:\n BUILTINS\n },\n lexemes: hljs.IDENT_RE + '!?',\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT('/\\\\*', '\\\\*/', {contains: ['self']}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {begin: /b?\"/, illegal: null}),\n {\n className: 'string',\n variants: [\n { begin: /r(#*)\"(.|\\n)*?\"\\1(?!#)/ },\n { begin: /b?'\\\\?(x\\w{2}|u\\w{4}|U\\w{8}|.)'/ }\n ]\n },\n {\n className: 'symbol',\n begin: /'[a-zA-Z_][a-zA-Z0-9_]*/\n },\n {\n className: 'number',\n variants: [\n { begin: '\\\\b0b([01_]+)' + NUM_SUFFIX },\n { begin: '\\\\b0o([0-7_]+)' + NUM_SUFFIX },\n { begin: '\\\\b0x([A-Fa-f0-9_]+)' + NUM_SUFFIX },\n { begin: '\\\\b(\\\\d[\\\\d_]*(\\\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)' +\n NUM_SUFFIX\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n beginKeywords: 'fn', end: '(\\\\(|<)', excludeEnd: true,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n className: 'meta',\n begin: '#\\\\!?\\\\[', end: '\\\\]',\n contains: [\n {\n className: 'meta-string',\n begin: /\"/, end: /\"/\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'type', end: ';',\n contains: [\n hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, {endsParent: true})\n ],\n illegal: '\\\\S'\n },\n {\n className: 'class',\n beginKeywords: 'trait enum struct union', end: '{',\n contains: [\n hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, {endsParent: true})\n ],\n illegal: '[\\\\w\\\\d]'\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: {built_in: BUILTINS}\n },\n {\n begin: '->'\n }\n ]\n };\n};","module.exports = function(hljs) {\n\n // Data step and PROC SQL statements\n var SAS_KEYWORDS = ''+\n 'do if then else end until while '+\n ''+\n 'abort array attrib by call cards cards4 catname continue '+\n 'datalines datalines4 delete delim delimiter display dm drop '+\n 'endsas error file filename footnote format goto in infile '+\n 'informat input keep label leave length libname link list '+\n 'lostcard merge missing modify options output out page put '+\n 'redirect remove rename replace retain return select set skip '+\n 'startsas stop title update waitsas where window x systask '+\n ''+\n 'add and alter as cascade check create delete describe '+\n 'distinct drop foreign from group having index insert into in '+\n 'key like message modify msgtype not null on or order primary '+\n 'references reset restrict select set table unique update '+\n 'validate view where';\n\n // Built-in SAS functions\n var SAS_FUN = ''+\n 'abs|addr|airy|arcos|arsin|atan|attrc|attrn|band|'+\n 'betainv|blshift|bnot|bor|brshift|bxor|byte|cdf|ceil|'+\n 'cexist|cinv|close|cnonct|collate|compbl|compound|'+\n 'compress|cos|cosh|css|curobs|cv|daccdb|daccdbsl|'+\n 'daccsl|daccsyd|dacctab|dairy|date|datejul|datepart|'+\n 'datetime|day|dclose|depdb|depdbsl|depdbsl|depsl|'+\n 'depsl|depsyd|depsyd|deptab|deptab|dequote|dhms|dif|'+\n 'digamma|dim|dinfo|dnum|dopen|doptname|doptnum|dread|'+\n 'dropnote|dsname|erf|erfc|exist|exp|fappend|fclose|'+\n 'fcol|fdelete|fetch|fetchobs|fexist|fget|fileexist|'+\n 'filename|fileref|finfo|finv|fipname|fipnamel|'+\n 'fipstate|floor|fnonct|fnote|fopen|foptname|foptnum|'+\n 'fpoint|fpos|fput|fread|frewind|frlen|fsep|fuzz|'+\n 'fwrite|gaminv|gamma|getoption|getvarc|getvarn|hbound|'+\n 'hms|hosthelp|hour|ibessel|index|indexc|indexw|input|'+\n 'inputc|inputn|int|intck|intnx|intrr|irr|jbessel|'+\n 'juldate|kurtosis|lag|lbound|left|length|lgamma|'+\n 'libname|libref|log|log10|log2|logpdf|logpmf|logsdf|'+\n 'lowcase|max|mdy|mean|min|minute|mod|month|mopen|'+\n 'mort|n|netpv|nmiss|normal|note|npv|open|ordinal|'+\n 'pathname|pdf|peek|peekc|pmf|point|poisson|poke|'+\n 'probbeta|probbnml|probchi|probf|probgam|probhypr|'+\n 'probit|probnegb|probnorm|probt|put|putc|putn|qtr|'+\n 'quote|ranbin|rancau|ranexp|rangam|range|rank|rannor|'+\n 'ranpoi|rantbl|rantri|ranuni|repeat|resolve|reverse|'+\n 'rewind|right|round|saving|scan|sdf|second|sign|'+\n 'sin|sinh|skewness|soundex|spedis|sqrt|std|stderr|'+\n 'stfips|stname|stnamel|substr|sum|symget|sysget|'+\n 'sysmsg|sysprod|sysrc|system|tan|tanh|time|timepart|'+\n 'tinv|tnonct|today|translate|tranwrd|trigamma|'+\n 'trim|trimn|trunc|uniform|upcase|uss|var|varfmt|'+\n 'varinfmt|varlabel|varlen|varname|varnum|varray|'+\n 'varrayx|vartype|verify|vformat|vformatd|vformatdx|'+\n 'vformatn|vformatnx|vformatw|vformatwx|vformatx|'+\n 'vinarray|vinarrayx|vinformat|vinformatd|vinformatdx|'+\n 'vinformatn|vinformatnx|vinformatw|vinformatwx|'+\n 'vinformatx|vlabel|vlabelx|vlength|vlengthx|vname|'+\n 'vnamex|vtype|vtypex|weekday|year|yyq|zipfips|zipname|'+\n 'zipnamel|zipstate';\n\n // Built-in macro functions\n var SAS_MACRO_FUN = 'bquote|nrbquote|cmpres|qcmpres|compstor|'+\n 'datatyp|display|do|else|end|eval|global|goto|'+\n 'if|index|input|keydef|label|left|length|let|'+\n 'local|lowcase|macro|mend|nrbquote|nrquote|'+\n 'nrstr|put|qcmpres|qleft|qlowcase|qscan|'+\n 'qsubstr|qsysfunc|qtrim|quote|qupcase|scan|str|'+\n 'substr|superq|syscall|sysevalf|sysexec|sysfunc|'+\n 'sysget|syslput|sysprod|sysrc|sysrput|then|to|'+\n 'trim|unquote|until|upcase|verify|while|window';\n\n return {\n aliases: ['sas', 'SAS'],\n case_insensitive: true, // SAS is case-insensitive\n keywords: {\n literal:\n 'null missing _all_ _automatic_ _character_ _infile_ '+\n '_n_ _name_ _null_ _numeric_ _user_ _webout_',\n meta:\n SAS_KEYWORDS\n },\n contains: [\n {\n // Distinct highlight for proc <proc>, data, run, quit\n className: 'keyword',\n begin: /^\\s*(proc [\\w\\d_]+|data|run|quit)[\\s\\;]/\n },\n {\n // Macro variables\n className: 'variable',\n begin: /\\&[a-zA-Z_\\&][a-zA-Z0-9_]*\\.?/\n },\n {\n // Special emphasis for datalines|cards\n className: 'emphasis',\n begin: /^\\s*datalines|cards.*;/,\n end: /^\\s*;\\s*$/\n },\n { // Built-in macro variables take precedence\n className: 'built_in',\n begin: '%(' + SAS_MACRO_FUN + ')'\n },\n {\n // User-defined macro functions highlighted after\n className: 'name',\n begin: /%[a-zA-Z_][a-zA-Z_0-9]*/\n },\n {\n className: 'meta',\n begin: '[^%](' + SAS_FUN + ')[\\(]'\n },\n {\n className: 'string',\n variants: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n },\n hljs.COMMENT('\\\\*', ';'),\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n\n var ANNOTATION = { className: 'meta', begin: '@[A-Za-z]+' };\n\n // used in strings for escaping/interpolation/substitution\n var SUBST = {\n className: 'subst',\n variants: [\n {begin: '\\\\$[A-Za-z0-9_]+'},\n {begin: '\\\\${', end: '}'}\n ]\n };\n\n var STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\"\"\"', end: '\"\"\"',\n relevance: 10\n },\n {\n begin: '[a-z]+\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n {\n className: 'string',\n begin: '[a-z]+\"\"\"', end: '\"\"\"',\n contains: [SUBST],\n relevance: 10\n }\n ]\n\n };\n\n var SYMBOL = {\n className: 'symbol',\n begin: '\\'\\\\w[\\\\w\\\\d_]*(?!\\')'\n };\n\n var TYPE = {\n className: 'type',\n begin: '\\\\b[A-Z][A-Za-z0-9_]*',\n relevance: 0\n };\n\n var NAME = {\n className: 'title',\n begin: /[^0-9\\n\\t \"'(),.`{}\\[\\]:;][^\\n\\t \"'(),.`{}\\[\\]:;]+|[^0-9\\n\\t \"'(),.`{}\\[\\]:;=]/,\n relevance: 0\n };\n\n var CLASS = {\n className: 'class',\n beginKeywords: 'class object trait type',\n end: /[:={\\[\\n;]/,\n excludeEnd: true,\n contains: [\n {\n beginKeywords: 'extends with',\n relevance: 10\n },\n {\n begin: /\\[/,\n end: /\\]/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0,\n contains: [TYPE]\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0,\n contains: [TYPE]\n },\n NAME\n ]\n };\n\n var METHOD = {\n className: 'function',\n beginKeywords: 'def',\n end: /[:={\\[(\\n;]/,\n excludeEnd: true,\n contains: [NAME]\n };\n\n return {\n keywords: {\n literal: 'true false null',\n keyword: 'type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n SYMBOL,\n TYPE,\n METHOD,\n CLASS,\n hljs.C_NUMBER_MODE,\n ANNOTATION\n ]\n };\n};","module.exports = function(hljs) {\n var SCHEME_IDENT_RE = '[^\\\\(\\\\)\\\\[\\\\]\\\\{\\\\}\",\\'`;#|\\\\\\\\\\\\s]+';\n var SCHEME_SIMPLE_NUMBER_RE = '(\\\\-|\\\\+)?\\\\d+([./]\\\\d+)?';\n var SCHEME_COMPLEX_NUMBER_RE = SCHEME_SIMPLE_NUMBER_RE + '[+\\\\-]' + SCHEME_SIMPLE_NUMBER_RE + 'i';\n var BUILTINS = {\n 'builtin-name':\n 'case-lambda call/cc class define-class exit-handler field import ' +\n 'inherit init-field interface let*-values let-values let/ec mixin ' +\n 'opt-lambda override protect provide public rename require ' +\n 'require-for-syntax syntax syntax-case syntax-error unit/sig unless ' +\n 'when with-syntax and begin call-with-current-continuation ' +\n 'call-with-input-file call-with-output-file case cond define ' +\n 'define-syntax delay do dynamic-wind else for-each if lambda let let* ' +\n 'let-syntax letrec letrec-syntax map or syntax-rules \\' * + , ,@ - ... / ' +\n '; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan ' +\n 'boolean? caar cadr call-with-input-file call-with-output-file ' +\n 'call-with-values car cdddar cddddr cdr ceiling char->integer ' +\n 'char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? ' +\n 'char-downcase char-lower-case? char-numeric? char-ready? char-upcase ' +\n 'char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? ' +\n 'char? close-input-port close-output-port complex? cons cos ' +\n 'current-input-port current-output-port denominator display eof-object? ' +\n 'eq? equal? eqv? eval even? exact->inexact exact? exp expt floor ' +\n 'force gcd imag-part inexact->exact inexact? input-port? integer->char ' +\n 'integer? interaction-environment lcm length list list->string ' +\n 'list->vector list-ref list-tail list? load log magnitude make-polar ' +\n 'make-rectangular make-string make-vector max member memq memv min ' +\n 'modulo negative? newline not null-environment null? number->string ' +\n 'number? numerator odd? open-input-file open-output-file output-port? ' +\n 'pair? peek-char port? positive? procedure? quasiquote quote quotient ' +\n 'rational? rationalize read read-char real-part real? remainder reverse ' +\n 'round scheme-report-environment set! set-car! set-cdr! sin sqrt string ' +\n 'string->list string->number string->symbol string-append string-ci<=? ' +\n 'string-ci<? string-ci=? string-ci>=? string-ci>? string-copy ' +\n 'string-fill! string-length string-ref string-set! string<=? string<? ' +\n 'string=? string>=? string>? string? substring symbol->string symbol? ' +\n 'tan transcript-off transcript-on truncate values vector ' +\n 'vector->list vector-fill! vector-length vector-ref vector-set! ' +\n 'with-input-from-file with-output-to-file write write-char zero?'\n };\n\n var SHEBANG = {\n className: 'meta',\n begin: '^#!',\n end: '$'\n };\n\n var LITERAL = {\n className: 'literal',\n begin: '(#t|#f|#\\\\\\\\' + SCHEME_IDENT_RE + '|#\\\\\\\\.)'\n };\n\n var NUMBER = {\n className: 'number',\n variants: [\n { begin: SCHEME_SIMPLE_NUMBER_RE, relevance: 0 },\n { begin: SCHEME_COMPLEX_NUMBER_RE, relevance: 0 },\n { begin: '#b[0-1]+(/[0-1]+)?' },\n { begin: '#o[0-7]+(/[0-7]+)?' },\n { begin: '#x[0-9a-f]+(/[0-9a-f]+)?' }\n ]\n };\n\n var STRING = hljs.QUOTE_STRING_MODE;\n\n var REGULAR_EXPRESSION = {\n className: 'regexp',\n begin: '#[pr]x\"',\n end: '[^\\\\\\\\]\"'\n };\n\n var COMMENT_MODES = [\n hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n ),\n hljs.COMMENT('#\\\\|', '\\\\|#')\n ];\n\n var IDENT = {\n begin: SCHEME_IDENT_RE,\n relevance: 0\n };\n\n var QUOTED_IDENT = {\n className: 'symbol',\n begin: '\\'' + SCHEME_IDENT_RE\n };\n\n var BODY = {\n endsWithParent: true,\n relevance: 0\n };\n\n var QUOTED_LIST = {\n variants: [\n { begin: /'/ },\n { begin: '`' }\n ],\n contains: [\n {\n begin: '\\\\(', end: '\\\\)',\n contains: ['self', LITERAL, STRING, NUMBER, IDENT, QUOTED_IDENT]\n }\n ]\n };\n\n var NAME = {\n className: 'name',\n begin: SCHEME_IDENT_RE,\n lexemes: SCHEME_IDENT_RE,\n keywords: BUILTINS\n };\n\n var LAMBDA = {\n begin: /lambda/, endsWithParent: true, returnBegin: true,\n contains: [\n NAME,\n {\n begin: /\\(/, end: /\\)/, endsParent: true,\n contains: [IDENT],\n }\n ]\n };\n\n var LIST = {\n variants: [\n { begin: '\\\\(', end: '\\\\)' },\n { begin: '\\\\[', end: '\\\\]' }\n ],\n contains: [LAMBDA, NAME, BODY]\n };\n\n BODY.contains = [LITERAL, NUMBER, STRING, IDENT, QUOTED_IDENT, QUOTED_LIST, LIST].concat(COMMENT_MODES);\n\n return {\n illegal: /\\S/,\n contains: [SHEBANG, NUMBER, STRING, QUOTED_IDENT, QUOTED_LIST, LIST].concat(COMMENT_MODES)\n };\n};","module.exports = function(hljs) {\n\n var COMMON_CONTAINS = [\n hljs.C_NUMBER_MODE,\n {\n className: 'string',\n begin: '\\'|\\\"', end: '\\'|\\\"',\n contains: [hljs.BACKSLASH_ESCAPE, {begin: '\\'\\''}]\n }\n ];\n\n return {\n aliases: ['sci'],\n lexemes: /%?\\w+/,\n keywords: {\n keyword: 'abort break case clear catch continue do elseif else endfunction end for function '+\n 'global if pause return resume select try then while',\n literal:\n '%f %F %t %T %pi %eps %inf %nan %e %i %z %s',\n built_in: // Scilab has more than 2000 functions. Just list the most commons\n 'abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error '+\n 'exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty '+\n 'isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log '+\n 'max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real '+\n 'round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan '+\n 'type typename warning zeros matrix'\n },\n illegal: '(\"|#|/\\\\*|\\\\s+/\\\\w+)',\n contains: [\n {\n className: 'function',\n beginKeywords: 'function', end: '$',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)'\n }\n ]\n },\n {\n begin: '[a-zA-Z_][a-zA-Z_0-9]*(\\'+[\\\\.\\']*|[\\\\.\\']+)', end: '',\n relevance: 0\n },\n {\n begin: '\\\\[', end: '\\\\]\\'*[\\\\.\\']*',\n relevance: 0,\n contains: COMMON_CONTAINS\n },\n hljs.COMMENT('//', '$')\n ].concat(COMMON_CONTAINS)\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n var VARIABLE = {\n className: 'variable',\n begin: '(\\\\$' + IDENT_RE + ')\\\\b'\n };\n var HEXCOLOR = {\n className: 'number', begin: '#[0-9A-Fa-f]+'\n };\n var DEF_INTERNALS = {\n className: 'attribute',\n begin: '[A-Z\\\\_\\\\.\\\\-]+', end: ':',\n excludeEnd: true,\n illegal: '[^\\\\s]',\n starts: {\n endsWithParent: true, excludeEnd: true,\n contains: [\n HEXCOLOR,\n hljs.CSS_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'meta', begin: '!important'\n }\n ]\n }\n };\n return {\n case_insensitive: true,\n illegal: '[=/|\\']',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'selector-id', begin: '\\\\#[A-Za-z0-9_-]+',\n relevance: 0\n },\n {\n className: 'selector-class', begin: '\\\\.[A-Za-z0-9_-]+',\n relevance: 0\n },\n {\n className: 'selector-attr', begin: '\\\\[', end: '\\\\]',\n illegal: '$'\n },\n {\n className: 'selector-tag', // begin: IDENT_RE, end: '[,|\\\\s]'\n begin: '\\\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\\\b',\n relevance: 0\n },\n {\n begin: ':(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)'\n },\n {\n begin: '::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)'\n },\n VARIABLE,\n {\n className: 'attribute',\n begin: '\\\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\\\b',\n illegal: '[^\\\\s]'\n },\n {\n begin: '\\\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\\\b'\n },\n {\n begin: ':', end: ';',\n contains: [\n VARIABLE,\n HEXCOLOR,\n hljs.CSS_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n {\n className: 'meta', begin: '!important'\n }\n ]\n },\n {\n begin: '@', end: '[{;]',\n keywords: 'mixin include extend for if else each while charset import debug media page content font-face namespace warn',\n contains: [\n VARIABLE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n HEXCOLOR,\n hljs.CSS_NUMBER_MODE,\n {\n begin: '\\\\s[A-Za-z0-9_.-]+',\n relevance: 0\n }\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['console'],\n contains: [\n {\n className: 'meta',\n begin: '^\\\\s{0,3}[\\\\w\\\\d\\\\[\\\\]()@-]*[>%$#]',\n starts: {\n end: '$', subLanguage: 'bash'\n }\n }\n ]\n }\n};","module.exports = function(hljs) {\n var smali_instr_low_prio = ['add', 'and', 'cmp', 'cmpg', 'cmpl', 'const', 'div', 'double', 'float', 'goto', 'if', 'int', 'long', 'move', 'mul', 'neg', 'new', 'nop', 'not', 'or', 'rem', 'return', 'shl', 'shr', 'sput', 'sub', 'throw', 'ushr', 'xor'];\n var smali_instr_high_prio = ['aget', 'aput', 'array', 'check', 'execute', 'fill', 'filled', 'goto/16', 'goto/32', 'iget', 'instance', 'invoke', 'iput', 'monitor', 'packed', 'sget', 'sparse'];\n var smali_keywords = ['transient', 'constructor', 'abstract', 'final', 'synthetic', 'public', 'private', 'protected', 'static', 'bridge', 'system'];\n return {\n aliases: ['smali'],\n contains: [\n {\n className: 'string',\n begin: '\"', end: '\"',\n relevance: 0\n },\n hljs.COMMENT(\n '#',\n '$',\n {\n relevance: 0\n }\n ),\n {\n className: 'keyword',\n variants: [\n {begin: '\\\\s*\\\\.end\\\\s[a-zA-Z0-9]*'},\n {begin: '^[ ]*\\\\.[a-zA-Z]*', relevance: 0},\n {begin: '\\\\s:[a-zA-Z_0-9]*', relevance: 0},\n {begin: '\\\\s(' + smali_keywords.join('|') + ')'}\n ]\n },\n {\n className: 'built_in',\n variants : [\n {\n begin: '\\\\s('+smali_instr_low_prio.join('|')+')\\\\s'\n },\n {\n begin: '\\\\s('+smali_instr_low_prio.join('|')+')((\\\\-|/)[a-zA-Z0-9]+)+\\\\s',\n relevance: 10\n },\n {\n begin: '\\\\s('+smali_instr_high_prio.join('|')+')((\\\\-|/)[a-zA-Z0-9]+)*\\\\s',\n relevance: 10\n },\n ]\n },\n {\n className: 'class',\n begin: 'L[^\\(;:\\n]*;',\n relevance: 0\n },\n {\n begin: '[vp][0-9]+',\n }\n ]\n };\n};","module.exports = function(hljs) {\n var VAR_IDENT_RE = '[a-z][a-zA-Z0-9_]*';\n var CHAR = {\n className: 'string',\n begin: '\\\\$.{1}'\n };\n var SYMBOL = {\n className: 'symbol',\n begin: '#' + hljs.UNDERSCORE_IDENT_RE\n };\n return {\n aliases: ['st'],\n keywords: 'self super nil true false thisContext', // only 6\n contains: [\n hljs.COMMENT('\"', '\"'),\n hljs.APOS_STRING_MODE,\n {\n className: 'type',\n begin: '\\\\b[A-Z][A-Za-z0-9_]*',\n relevance: 0\n },\n {\n begin: VAR_IDENT_RE + ':',\n relevance: 0\n },\n hljs.C_NUMBER_MODE,\n SYMBOL,\n CHAR,\n {\n // This looks more complicated than needed to avoid combinatorial\n // explosion under V8. It effectively means `| var1 var2 ... |` with\n // whitespace adjacent to `|` being optional.\n begin: '\\\\|[ ]*' + VAR_IDENT_RE + '([ ]+' + VAR_IDENT_RE + ')*[ ]*\\\\|',\n returnBegin: true, end: /\\|/,\n illegal: /\\S/,\n contains: [{begin: '(\\\\|[ ]*)?' + VAR_IDENT_RE}]\n },\n {\n begin: '\\\\#\\\\(', end: '\\\\)',\n contains: [\n hljs.APOS_STRING_MODE,\n CHAR,\n hljs.C_NUMBER_MODE,\n SYMBOL\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['ml'],\n keywords: {\n keyword:\n /* according to Definition of Standard ML 97 */\n 'abstype and andalso as case datatype do else end eqtype ' +\n 'exception fn fun functor handle if in include infix infixr ' +\n 'let local nonfix of op open orelse raise rec sharing sig ' +\n 'signature struct structure then type val with withtype where while',\n built_in:\n /* built-in types according to basis library */\n 'array bool char exn int list option order real ref string substring vector unit word',\n literal:\n 'true false NONE SOME LESS EQUAL GREATER nil'\n },\n illegal: /\\/\\/|>>/,\n lexemes: '[a-z_]\\\\w*!?',\n contains: [\n {\n className: 'literal',\n begin: /\\[(\\|\\|)?\\]|\\(\\)/,\n relevance: 0\n },\n hljs.COMMENT(\n '\\\\(\\\\*',\n '\\\\*\\\\)',\n {\n contains: ['self']\n }\n ),\n { /* type variable */\n className: 'symbol',\n begin: '\\'[A-Za-z_](?!\\')[\\\\w\\']*'\n /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */\n },\n { /* polymorphic variant */\n className: 'type',\n begin: '`[A-Z][\\\\w\\']*'\n },\n { /* module or constructor */\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*',\n relevance: 0\n },\n { /* don't color identifiers, but safely catch all identifiers with '*/\n begin: '[a-z_]\\\\w*\\'[\\\\w\\']*'\n },\n hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n {\n className: 'number',\n begin:\n '\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|' +\n '0[oO][0-7_]+[Lln]?|' +\n '0[bB][01_]+[Lln]?|' +\n '[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)',\n relevance: 0\n },\n {\n begin: /[-=]>/ // relevance booster\n }\n ]\n };\n};","module.exports = function(hljs) {\n var CPP = hljs.getLanguage('cpp').exports;\n\n // In SQF, a variable start with _\n var VARIABLE = {\n className: 'variable',\n begin: /\\b_+[a-zA-Z_]\\w*/\n };\n\n // In SQF, a function should fit myTag_fnc_myFunction pattern\n // https://community.bistudio.com/wiki/Functions_Library_(Arma_3)#Adding_a_Function\n var FUNCTION = {\n className: 'title',\n begin: /[a-zA-Z][a-zA-Z0-9]+_fnc_\\w*/\n };\n\n // In SQF strings, quotes matching the start are escaped by adding a consecutive.\n // Example of single escaped quotes: \" \"\" \" and ' '' '.\n var STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '\"',\n end: '\"',\n contains: [{begin: '\"\"', relevance: 0}]\n },\n {\n begin: '\\'',\n end: '\\'',\n contains: [{begin: '\\'\\'', relevance: 0}]\n }\n ]\n };\n\n return {\n aliases: ['sqf'],\n case_insensitive: true,\n keywords: {\n keyword:\n 'case catch default do else exit exitWith for forEach from if ' +\n 'private switch then throw to try waitUntil while with',\n built_in:\n 'abs accTime acos action actionIDs actionKeys actionKeysImages actionKeysNames ' +\n 'actionKeysNamesArray actionName actionParams activateAddons activatedAddons activateKey ' +\n 'add3DENConnection add3DENEventHandler add3DENLayer addAction addBackpack addBackpackCargo ' +\n 'addBackpackCargoGlobal addBackpackGlobal addCamShake addCuratorAddons addCuratorCameraArea ' +\n 'addCuratorEditableObjects addCuratorEditingArea addCuratorPoints addEditorObject addEventHandler ' +\n 'addForce addGoggles addGroupIcon addHandgunItem addHeadgear addItem addItemCargo ' +\n 'addItemCargoGlobal addItemPool addItemToBackpack addItemToUniform addItemToVest addLiveStats ' +\n 'addMagazine addMagazineAmmoCargo addMagazineCargo addMagazineCargoGlobal addMagazineGlobal ' +\n 'addMagazinePool addMagazines addMagazineTurret addMenu addMenuItem addMissionEventHandler ' +\n 'addMPEventHandler addMusicEventHandler addOwnedMine addPlayerScores addPrimaryWeaponItem ' +\n 'addPublicVariableEventHandler addRating addResources addScore addScoreSide addSecondaryWeaponItem ' +\n 'addSwitchableUnit addTeamMember addToRemainsCollector addTorque addUniform addVehicle addVest ' +\n 'addWaypoint addWeapon addWeaponCargo addWeaponCargoGlobal addWeaponGlobal addWeaponItem ' +\n 'addWeaponPool addWeaponTurret admin agent agents AGLToASL aimedAtTarget aimPos airDensityRTD ' +\n 'airplaneThrottle airportSide AISFinishHeal alive all3DENEntities allAirports allControls ' +\n 'allCurators allCutLayers allDead allDeadMen allDisplays allGroups allMapMarkers allMines ' +\n 'allMissionObjects allow3DMode allowCrewInImmobile allowCuratorLogicIgnoreAreas allowDamage ' +\n 'allowDammage allowFileOperations allowFleeing allowGetIn allowSprint allPlayers allSimpleObjects ' +\n 'allSites allTurrets allUnits allUnitsUAV allVariables ammo ammoOnPylon and animate animateBay ' +\n 'animateDoor animatePylon animateSource animationNames animationPhase animationSourcePhase ' +\n 'animationState append apply armoryPoints arrayIntersect asin ASLToAGL ASLToATL assert ' +\n 'assignAsCargo assignAsCargoIndex assignAsCommander assignAsDriver assignAsGunner assignAsTurret ' +\n 'assignCurator assignedCargo assignedCommander assignedDriver assignedGunner assignedItems ' +\n 'assignedTarget assignedTeam assignedVehicle assignedVehicleRole assignItem assignTeam ' +\n 'assignToAirport atan atan2 atg ATLToASL attachedObject attachedObjects attachedTo attachObject ' +\n 'attachTo attackEnabled backpack backpackCargo backpackContainer backpackItems backpackMagazines ' +\n 'backpackSpaceFor behaviour benchmark binocular boundingBox boundingBoxReal boundingCenter ' +\n 'breakOut breakTo briefingName buildingExit buildingPos buttonAction buttonSetAction cadetMode ' +\n 'call callExtension camCommand camCommit camCommitPrepared camCommitted camConstuctionSetParams ' +\n 'camCreate camDestroy cameraEffect cameraEffectEnableHUD cameraInterest cameraOn cameraView ' +\n 'campaignConfigFile camPreload camPreloaded camPrepareBank camPrepareDir camPrepareDive ' +\n 'camPrepareFocus camPrepareFov camPrepareFovRange camPreparePos camPrepareRelPos camPrepareTarget ' +\n 'camSetBank camSetDir camSetDive camSetFocus camSetFov camSetFovRange camSetPos camSetRelPos ' +\n 'camSetTarget camTarget camUseNVG canAdd canAddItemToBackpack canAddItemToUniform canAddItemToVest ' +\n 'cancelSimpleTaskDestination canFire canMove canSlingLoad canStand canSuspend ' +\n 'canTriggerDynamicSimulation canUnloadInCombat canVehicleCargo captive captiveNum cbChecked ' +\n 'cbSetChecked ceil channelEnabled cheatsEnabled checkAIFeature checkVisibility className ' +\n 'clearAllItemsFromBackpack clearBackpackCargo clearBackpackCargoGlobal clearGroupIcons ' +\n 'clearItemCargo clearItemCargoGlobal clearItemPool clearMagazineCargo clearMagazineCargoGlobal ' +\n 'clearMagazinePool clearOverlay clearRadio clearWeaponCargo clearWeaponCargoGlobal clearWeaponPool ' +\n 'clientOwner closeDialog closeDisplay closeOverlay collapseObjectTree collect3DENHistory ' +\n 'collectiveRTD combatMode commandArtilleryFire commandChat commander commandFire commandFollow ' +\n 'commandFSM commandGetOut commandingMenu commandMove commandRadio commandStop ' +\n 'commandSuppressiveFire commandTarget commandWatch comment commitOverlay compile compileFinal ' +\n 'completedFSM composeText configClasses configFile configHierarchy configName configProperties ' +\n 'configSourceAddonList configSourceMod configSourceModList confirmSensorTarget ' +\n 'connectTerminalToUAV controlsGroupCtrl copyFromClipboard copyToClipboard copyWaypoints cos count ' +\n 'countEnemy countFriendly countSide countType countUnknown create3DENComposition create3DENEntity ' +\n 'createAgent createCenter createDialog createDiaryLink createDiaryRecord createDiarySubject ' +\n 'createDisplay createGearDialog createGroup createGuardedPoint createLocation createMarker ' +\n 'createMarkerLocal createMenu createMine createMissionDisplay createMPCampaignDisplay ' +\n 'createSimpleObject createSimpleTask createSite createSoundSource createTask createTeam ' +\n 'createTrigger createUnit createVehicle createVehicleCrew createVehicleLocal crew ctAddHeader ' +\n 'ctAddRow ctClear ctCurSel ctData ctFindHeaderRows ctFindRowHeader ctHeaderControls ctHeaderCount ' +\n 'ctRemoveHeaders ctRemoveRows ctrlActivate ctrlAddEventHandler ctrlAngle ctrlAutoScrollDelay ' +\n 'ctrlAutoScrollRewind ctrlAutoScrollSpeed ctrlChecked ctrlClassName ctrlCommit ctrlCommitted ' +\n 'ctrlCreate ctrlDelete ctrlEnable ctrlEnabled ctrlFade ctrlHTMLLoaded ctrlIDC ctrlIDD ' +\n 'ctrlMapAnimAdd ctrlMapAnimClear ctrlMapAnimCommit ctrlMapAnimDone ctrlMapCursor ctrlMapMouseOver ' +\n 'ctrlMapScale ctrlMapScreenToWorld ctrlMapWorldToScreen ctrlModel ctrlModelDirAndUp ctrlModelScale ' +\n 'ctrlParent ctrlParentControlsGroup ctrlPosition ctrlRemoveAllEventHandlers ctrlRemoveEventHandler ' +\n 'ctrlScale ctrlSetActiveColor ctrlSetAngle ctrlSetAutoScrollDelay ctrlSetAutoScrollRewind ' +\n 'ctrlSetAutoScrollSpeed ctrlSetBackgroundColor ctrlSetChecked ctrlSetEventHandler ctrlSetFade ' +\n 'ctrlSetFocus ctrlSetFont ctrlSetFontH1 ctrlSetFontH1B ctrlSetFontH2 ctrlSetFontH2B ctrlSetFontH3 ' +\n 'ctrlSetFontH3B ctrlSetFontH4 ctrlSetFontH4B ctrlSetFontH5 ctrlSetFontH5B ctrlSetFontH6 ' +\n 'ctrlSetFontH6B ctrlSetFontHeight ctrlSetFontHeightH1 ctrlSetFontHeightH2 ctrlSetFontHeightH3 ' +\n 'ctrlSetFontHeightH4 ctrlSetFontHeightH5 ctrlSetFontHeightH6 ctrlSetFontHeightSecondary ' +\n 'ctrlSetFontP ctrlSetFontPB ctrlSetFontSecondary ctrlSetForegroundColor ctrlSetModel ' +\n 'ctrlSetModelDirAndUp ctrlSetModelScale ctrlSetPixelPrecision ctrlSetPosition ctrlSetScale ' +\n 'ctrlSetStructuredText ctrlSetText ctrlSetTextColor ctrlSetTooltip ctrlSetTooltipColorBox ' +\n 'ctrlSetTooltipColorShade ctrlSetTooltipColorText ctrlShow ctrlShown ctrlText ctrlTextHeight ' +\n 'ctrlTextWidth ctrlType ctrlVisible ctRowControls ctRowCount ctSetCurSel ctSetData ' +\n 'ctSetHeaderTemplate ctSetRowTemplate ctSetValue ctValue curatorAddons curatorCamera ' +\n 'curatorCameraArea curatorCameraAreaCeiling curatorCoef curatorEditableObjects curatorEditingArea ' +\n 'curatorEditingAreaType curatorMouseOver curatorPoints curatorRegisteredObjects curatorSelected ' +\n 'curatorWaypointCost current3DENOperation currentChannel currentCommand currentMagazine ' +\n 'currentMagazineDetail currentMagazineDetailTurret currentMagazineTurret currentMuzzle ' +\n 'currentNamespace currentTask currentTasks currentThrowable currentVisionMode currentWaypoint ' +\n 'currentWeapon currentWeaponMode currentWeaponTurret currentZeroing cursorObject cursorTarget ' +\n 'customChat customRadio cutFadeOut cutObj cutRsc cutText damage date dateToNumber daytime ' +\n 'deActivateKey debriefingText debugFSM debugLog deg delete3DENEntities deleteAt deleteCenter ' +\n 'deleteCollection deleteEditorObject deleteGroup deleteGroupWhenEmpty deleteIdentity ' +\n 'deleteLocation deleteMarker deleteMarkerLocal deleteRange deleteResources deleteSite deleteStatus ' +\n 'deleteTeam deleteVehicle deleteVehicleCrew deleteWaypoint detach detectedMines ' +\n 'diag_activeMissionFSMs diag_activeScripts diag_activeSQFScripts diag_activeSQSScripts ' +\n 'diag_captureFrame diag_captureFrameToFile diag_captureSlowFrame diag_codePerformance ' +\n 'diag_drawMode diag_enable diag_enabled diag_fps diag_fpsMin diag_frameNo diag_lightNewLoad ' +\n 'diag_list diag_log diag_logSlowFrame diag_mergeConfigFile diag_recordTurretLimits ' +\n 'diag_setLightNew diag_tickTime diag_toggle dialog diarySubjectExists didJIP didJIPOwner ' +\n 'difficulty difficultyEnabled difficultyEnabledRTD difficultyOption direction directSay disableAI ' +\n 'disableCollisionWith disableConversation disableDebriefingStats disableMapIndicators ' +\n 'disableNVGEquipment disableRemoteSensors disableSerialization disableTIEquipment ' +\n 'disableUAVConnectability disableUserInput displayAddEventHandler displayCtrl displayParent ' +\n 'displayRemoveAllEventHandlers displayRemoveEventHandler displaySetEventHandler dissolveTeam ' +\n 'distance distance2D distanceSqr distributionRegion do3DENAction doArtilleryFire doFire doFollow ' +\n 'doFSM doGetOut doMove doorPhase doStop doSuppressiveFire doTarget doWatch drawArrow drawEllipse ' +\n 'drawIcon drawIcon3D drawLine drawLine3D drawLink drawLocation drawPolygon drawRectangle ' +\n 'drawTriangle driver drop dynamicSimulationDistance dynamicSimulationDistanceCoef ' +\n 'dynamicSimulationEnabled dynamicSimulationSystemEnabled echo edit3DENMissionAttributes editObject ' +\n 'editorSetEventHandler effectiveCommander emptyPositions enableAI enableAIFeature ' +\n 'enableAimPrecision enableAttack enableAudioFeature enableAutoStartUpRTD enableAutoTrimRTD ' +\n 'enableCamShake enableCaustics enableChannel enableCollisionWith enableCopilot ' +\n 'enableDebriefingStats enableDiagLegend enableDynamicSimulation enableDynamicSimulationSystem ' +\n 'enableEndDialog enableEngineArtillery enableEnvironment enableFatigue enableGunLights ' +\n 'enableInfoPanelComponent enableIRLasers enableMimics enablePersonTurret enableRadio enableReload ' +\n 'enableRopeAttach enableSatNormalOnDetail enableSaving enableSentences enableSimulation ' +\n 'enableSimulationGlobal enableStamina enableTeamSwitch enableTraffic enableUAVConnectability ' +\n 'enableUAVWaypoints enableVehicleCargo enableVehicleSensor enableWeaponDisassembly ' +\n 'endLoadingScreen endMission engineOn enginesIsOnRTD enginesRpmRTD enginesTorqueRTD entities ' +\n 'environmentEnabled estimatedEndServerTime estimatedTimeLeft evalObjectArgument everyBackpack ' +\n 'everyContainer exec execEditorScript execFSM execVM exp expectedDestination exportJIPMessages ' +\n 'eyeDirection eyePos face faction fadeMusic fadeRadio fadeSound fadeSpeech failMission ' +\n 'fillWeaponsFromPool find findCover findDisplay findEditorObject findEmptyPosition ' +\n 'findEmptyPositionReady findIf findNearestEnemy finishMissionInit finite fire fireAtTarget ' +\n 'firstBackpack flag flagAnimationPhase flagOwner flagSide flagTexture fleeing floor flyInHeight ' +\n 'flyInHeightASL fog fogForecast fogParams forceAddUniform forcedMap forceEnd forceFlagTexture ' +\n 'forceFollowRoad forceMap forceRespawn forceSpeed forceWalk forceWeaponFire forceWeatherChange ' +\n 'forEachMember forEachMemberAgent forEachMemberTeam forgetTarget format formation ' +\n 'formationDirection formationLeader formationMembers formationPosition formationTask formatText ' +\n 'formLeader freeLook fromEditor fuel fullCrew gearIDCAmmoCount gearSlotAmmoCount gearSlotData ' +\n 'get3DENActionState get3DENAttribute get3DENCamera get3DENConnections get3DENEntity ' +\n 'get3DENEntityID get3DENGrid get3DENIconsVisible get3DENLayerEntities get3DENLinesVisible ' +\n 'get3DENMissionAttribute get3DENMouseOver get3DENSelected getAimingCoef getAllEnvSoundControllers ' +\n 'getAllHitPointsDamage getAllOwnedMines getAllSoundControllers getAmmoCargo getAnimAimPrecision ' +\n 'getAnimSpeedCoef getArray getArtilleryAmmo getArtilleryComputerSettings getArtilleryETA ' +\n 'getAssignedCuratorLogic getAssignedCuratorUnit getBackpackCargo getBleedingRemaining ' +\n 'getBurningValue getCameraViewDirection getCargoIndex getCenterOfMass getClientState ' +\n 'getClientStateNumber getCompatiblePylonMagazines getConnectedUAV getContainerMaxLoad ' +\n 'getCursorObjectParams getCustomAimCoef getDammage getDescription getDir getDirVisual ' +\n 'getDLCAssetsUsage getDLCAssetsUsageByName getDLCs getEditorCamera getEditorMode ' +\n 'getEditorObjectScope getElevationOffset getEnvSoundController getFatigue getForcedFlagTexture ' +\n 'getFriend getFSMVariable getFuelCargo getGroupIcon getGroupIconParams getGroupIcons getHideFrom ' +\n 'getHit getHitIndex getHitPointDamage getItemCargo getMagazineCargo getMarkerColor getMarkerPos ' +\n 'getMarkerSize getMarkerType getMass getMissionConfig getMissionConfigValue getMissionDLCs ' +\n 'getMissionLayerEntities getModelInfo getMousePosition getMusicPlayedTime getNumber ' +\n 'getObjectArgument getObjectChildren getObjectDLC getObjectMaterials getObjectProxy ' +\n 'getObjectTextures getObjectType getObjectViewDistance getOxygenRemaining getPersonUsedDLCs ' +\n 'getPilotCameraDirection getPilotCameraPosition getPilotCameraRotation getPilotCameraTarget ' +\n 'getPlateNumber getPlayerChannel getPlayerScores getPlayerUID getPos getPosASL getPosASLVisual ' +\n 'getPosASLW getPosATL getPosATLVisual getPosVisual getPosWorld getPylonMagazines getRelDir ' +\n 'getRelPos getRemoteSensorsDisabled getRepairCargo getResolution getShadowDistance getShotParents ' +\n 'getSlingLoad getSoundController getSoundControllerResult getSpeed getStamina getStatValue ' +\n 'getSuppression getTerrainGrid getTerrainHeightASL getText getTotalDLCUsageTime getUnitLoadout ' +\n 'getUnitTrait getUserMFDText getUserMFDvalue getVariable getVehicleCargo getWeaponCargo ' +\n 'getWeaponSway getWingsOrientationRTD getWingsPositionRTD getWPPos glanceAt globalChat globalRadio ' +\n 'goggles goto group groupChat groupFromNetId groupIconSelectable groupIconsVisible groupId ' +\n 'groupOwner groupRadio groupSelectedUnits groupSelectUnit gunner gusts halt handgunItems ' +\n 'handgunMagazine handgunWeapon handsHit hasInterface hasPilotCamera hasWeapon hcAllGroups ' +\n 'hcGroupParams hcLeader hcRemoveAllGroups hcRemoveGroup hcSelected hcSelectGroup hcSetGroup ' +\n 'hcShowBar hcShownBar headgear hideBody hideObject hideObjectGlobal hideSelection hint hintC ' +\n 'hintCadet hintSilent hmd hostMission htmlLoad HUDMovementLevels humidity image importAllGroups ' +\n 'importance in inArea inAreaArray incapacitatedState inflame inflamed infoPanel ' +\n 'infoPanelComponentEnabled infoPanelComponents infoPanels inGameUISetEventHandler inheritsFrom ' +\n 'initAmbientLife inPolygon inputAction inRangeOfArtillery insertEditorObject intersect is3DEN ' +\n 'is3DENMultiplayer isAbleToBreathe isAgent isArray isAutoHoverOn isAutonomous isAutotest ' +\n 'isBleeding isBurning isClass isCollisionLightOn isCopilotEnabled isDamageAllowed isDedicated ' +\n 'isDLCAvailable isEngineOn isEqualTo isEqualType isEqualTypeAll isEqualTypeAny isEqualTypeArray ' +\n 'isEqualTypeParams isFilePatchingEnabled isFlashlightOn isFlatEmpty isForcedWalk isFormationLeader ' +\n 'isGroupDeletedWhenEmpty isHidden isInRemainsCollector isInstructorFigureEnabled isIRLaserOn ' +\n 'isKeyActive isKindOf isLaserOn isLightOn isLocalized isManualFire isMarkedForCollection ' +\n 'isMultiplayer isMultiplayerSolo isNil isNull isNumber isObjectHidden isObjectRTD isOnRoad ' +\n 'isPipEnabled isPlayer isRealTime isRemoteExecuted isRemoteExecutedJIP isServer isShowing3DIcons ' +\n 'isSimpleObject isSprintAllowed isStaminaEnabled isSteamMission isStreamFriendlyUIEnabled isText ' +\n 'isTouchingGround isTurnedOut isTutHintsEnabled isUAVConnectable isUAVConnected isUIContext ' +\n 'isUniformAllowed isVehicleCargo isVehicleRadarOn isVehicleSensorEnabled isWalking ' +\n 'isWeaponDeployed isWeaponRested itemCargo items itemsWithMagazines join joinAs joinAsSilent ' +\n 'joinSilent joinString kbAddDatabase kbAddDatabaseTargets kbAddTopic kbHasTopic kbReact ' +\n 'kbRemoveTopic kbTell kbWasSaid keyImage keyName knowsAbout land landAt landResult language ' +\n 'laserTarget lbAdd lbClear lbColor lbColorRight lbCurSel lbData lbDelete lbIsSelected lbPicture ' +\n 'lbPictureRight lbSelection lbSetColor lbSetColorRight lbSetCurSel lbSetData lbSetPicture ' +\n 'lbSetPictureColor lbSetPictureColorDisabled lbSetPictureColorSelected lbSetPictureRight ' +\n 'lbSetPictureRightColor lbSetPictureRightColorDisabled lbSetPictureRightColorSelected ' +\n 'lbSetSelectColor lbSetSelectColorRight lbSetSelected lbSetText lbSetTextRight lbSetTooltip ' +\n 'lbSetValue lbSize lbSort lbSortByValue lbText lbTextRight lbValue leader leaderboardDeInit ' +\n 'leaderboardGetRows leaderboardInit leaderboardRequestRowsFriends leaderboardsRequestUploadScore ' +\n 'leaderboardsRequestUploadScoreKeepBest leaderboardState leaveVehicle libraryCredits ' +\n 'libraryDisclaimers lifeState lightAttachObject lightDetachObject lightIsOn lightnings limitSpeed ' +\n 'linearConversion lineIntersects lineIntersectsObjs lineIntersectsSurfaces lineIntersectsWith ' +\n 'linkItem list listObjects listRemoteTargets listVehicleSensors ln lnbAddArray lnbAddColumn ' +\n 'lnbAddRow lnbClear lnbColor lnbCurSelRow lnbData lnbDeleteColumn lnbDeleteRow ' +\n 'lnbGetColumnsPosition lnbPicture lnbSetColor lnbSetColumnsPos lnbSetCurSelRow lnbSetData ' +\n 'lnbSetPicture lnbSetText lnbSetValue lnbSize lnbSort lnbSortByValue lnbText lnbValue load loadAbs ' +\n 'loadBackpack loadFile loadGame loadIdentity loadMagazine loadOverlay loadStatus loadUniform ' +\n 'loadVest local localize locationPosition lock lockCameraTo lockCargo lockDriver locked ' +\n 'lockedCargo lockedDriver lockedTurret lockIdentity lockTurret lockWP log logEntities logNetwork ' +\n 'logNetworkTerminate lookAt lookAtPos magazineCargo magazines magazinesAllTurrets magazinesAmmo ' +\n 'magazinesAmmoCargo magazinesAmmoFull magazinesDetail magazinesDetailBackpack ' +\n 'magazinesDetailUniform magazinesDetailVest magazinesTurret magazineTurretAmmo mapAnimAdd ' +\n 'mapAnimClear mapAnimCommit mapAnimDone mapCenterOnCamera mapGridPosition markAsFinishedOnSteam ' +\n 'markerAlpha markerBrush markerColor markerDir markerPos markerShape markerSize markerText ' +\n 'markerType max members menuAction menuAdd menuChecked menuClear menuCollapse menuData menuDelete ' +\n 'menuEnable menuEnabled menuExpand menuHover menuPicture menuSetAction menuSetCheck menuSetData ' +\n 'menuSetPicture menuSetValue menuShortcut menuShortcutText menuSize menuSort menuText menuURL ' +\n 'menuValue min mineActive mineDetectedBy missionConfigFile missionDifficulty missionName ' +\n 'missionNamespace missionStart missionVersion mod modelToWorld modelToWorldVisual ' +\n 'modelToWorldVisualWorld modelToWorldWorld modParams moonIntensity moonPhase morale move ' +\n 'move3DENCamera moveInAny moveInCargo moveInCommander moveInDriver moveInGunner moveInTurret ' +\n 'moveObjectToEnd moveOut moveTime moveTo moveToCompleted moveToFailed musicVolume name nameSound ' +\n 'nearEntities nearestBuilding nearestLocation nearestLocations nearestLocationWithDubbing ' +\n 'nearestObject nearestObjects nearestTerrainObjects nearObjects nearObjectsReady nearRoads ' +\n 'nearSupplies nearTargets needReload netId netObjNull newOverlay nextMenuItemIndex ' +\n 'nextWeatherChange nMenuItems not numberOfEnginesRTD numberToDate objectCurators objectFromNetId ' +\n 'objectParent objStatus onBriefingGroup onBriefingNotes onBriefingPlan onBriefingTeamSwitch ' +\n 'onCommandModeChanged onDoubleClick onEachFrame onGroupIconClick onGroupIconOverEnter ' +\n 'onGroupIconOverLeave onHCGroupSelectionChanged onMapSingleClick onPlayerConnected ' +\n 'onPlayerDisconnected onPreloadFinished onPreloadStarted onShowNewObject onTeamSwitch ' +\n 'openCuratorInterface openDLCPage openMap openSteamApp openYoutubeVideo or orderGetIn overcast ' +\n 'overcastForecast owner param params parseNumber parseSimpleArray parseText parsingNamespace ' +\n 'particlesQuality pickWeaponPool pitch pixelGrid pixelGridBase pixelGridNoUIScale pixelH pixelW ' +\n 'playableSlotsNumber playableUnits playAction playActionNow player playerRespawnTime playerSide ' +\n 'playersNumber playGesture playMission playMove playMoveNow playMusic playScriptedMission ' +\n 'playSound playSound3D position positionCameraToWorld posScreenToWorld posWorldToScreen ' +\n 'ppEffectAdjust ppEffectCommit ppEffectCommitted ppEffectCreate ppEffectDestroy ppEffectEnable ' +\n 'ppEffectEnabled ppEffectForceInNVG precision preloadCamera preloadObject preloadSound ' +\n 'preloadTitleObj preloadTitleRsc preprocessFile preprocessFileLineNumbers primaryWeapon ' +\n 'primaryWeaponItems primaryWeaponMagazine priority processDiaryLink productVersion profileName ' +\n 'profileNamespace profileNameSteam progressLoadingScreen progressPosition progressSetPosition ' +\n 'publicVariable publicVariableClient publicVariableServer pushBack pushBackUnique putWeaponPool ' +\n 'queryItemsPool queryMagazinePool queryWeaponPool rad radioChannelAdd radioChannelCreate ' +\n 'radioChannelRemove radioChannelSetCallSign radioChannelSetLabel radioVolume rain rainbow random ' +\n 'rank rankId rating rectangular registeredTasks registerTask reload reloadEnabled remoteControl ' +\n 'remoteExec remoteExecCall remoteExecutedOwner remove3DENConnection remove3DENEventHandler ' +\n 'remove3DENLayer removeAction removeAll3DENEventHandlers removeAllActions removeAllAssignedItems ' +\n 'removeAllContainers removeAllCuratorAddons removeAllCuratorCameraAreas ' +\n 'removeAllCuratorEditingAreas removeAllEventHandlers removeAllHandgunItems removeAllItems ' +\n 'removeAllItemsWithMagazines removeAllMissionEventHandlers removeAllMPEventHandlers ' +\n 'removeAllMusicEventHandlers removeAllOwnedMines removeAllPrimaryWeaponItems removeAllWeapons ' +\n 'removeBackpack removeBackpackGlobal removeCuratorAddons removeCuratorCameraArea ' +\n 'removeCuratorEditableObjects removeCuratorEditingArea removeDrawIcon removeDrawLinks ' +\n 'removeEventHandler removeFromRemainsCollector removeGoggles removeGroupIcon removeHandgunItem ' +\n 'removeHeadgear removeItem removeItemFromBackpack removeItemFromUniform removeItemFromVest ' +\n 'removeItems removeMagazine removeMagazineGlobal removeMagazines removeMagazinesTurret ' +\n 'removeMagazineTurret removeMenuItem removeMissionEventHandler removeMPEventHandler ' +\n 'removeMusicEventHandler removeOwnedMine removePrimaryWeaponItem removeSecondaryWeaponItem ' +\n 'removeSimpleTask removeSwitchableUnit removeTeamMember removeUniform removeVest removeWeapon ' +\n 'removeWeaponAttachmentCargo removeWeaponCargo removeWeaponGlobal removeWeaponTurret ' +\n 'reportRemoteTarget requiredVersion resetCamShake resetSubgroupDirection resize resources ' +\n 'respawnVehicle restartEditorCamera reveal revealMine reverse reversedMouseY roadAt ' +\n 'roadsConnectedTo roleDescription ropeAttachedObjects ropeAttachedTo ropeAttachEnabled ' +\n 'ropeAttachTo ropeCreate ropeCut ropeDestroy ropeDetach ropeEndPosition ropeLength ropes ' +\n 'ropeUnwind ropeUnwound rotorsForcesRTD rotorsRpmRTD round runInitScript safeZoneH safeZoneW ' +\n 'safeZoneWAbs safeZoneX safeZoneXAbs safeZoneY save3DENInventory saveGame saveIdentity ' +\n 'saveJoysticks saveOverlay saveProfileNamespace saveStatus saveVar savingEnabled say say2D say3D ' +\n 'scopeName score scoreSide screenshot screenToWorld scriptDone scriptName scudState ' +\n 'secondaryWeapon secondaryWeaponItems secondaryWeaponMagazine select selectBestPlaces ' +\n 'selectDiarySubject selectedEditorObjects selectEditorObject selectionNames selectionPosition ' +\n 'selectLeader selectMax selectMin selectNoPlayer selectPlayer selectRandom selectRandomWeighted ' +\n 'selectWeapon selectWeaponTurret sendAUMessage sendSimpleCommand sendTask sendTaskResult ' +\n 'sendUDPMessage serverCommand serverCommandAvailable serverCommandExecutable serverName serverTime ' +\n 'set set3DENAttribute set3DENAttributes set3DENGrid set3DENIconsVisible set3DENLayer ' +\n 'set3DENLinesVisible set3DENLogicType set3DENMissionAttribute set3DENMissionAttributes ' +\n 'set3DENModelsVisible set3DENObjectType set3DENSelected setAccTime setActualCollectiveRTD ' +\n 'setAirplaneThrottle setAirportSide setAmmo setAmmoCargo setAmmoOnPylon setAnimSpeedCoef ' +\n 'setAperture setApertureNew setArmoryPoints setAttributes setAutonomous setBehaviour ' +\n 'setBleedingRemaining setBrakesRTD setCameraInterest setCamShakeDefParams setCamShakeParams ' +\n 'setCamUseTI setCaptive setCenterOfMass setCollisionLight setCombatMode setCompassOscillation ' +\n 'setConvoySeparation setCuratorCameraAreaCeiling setCuratorCoef setCuratorEditingAreaType ' +\n 'setCuratorWaypointCost setCurrentChannel setCurrentTask setCurrentWaypoint setCustomAimCoef ' +\n 'setCustomWeightRTD setDamage setDammage setDate setDebriefingText setDefaultCamera setDestination ' +\n 'setDetailMapBlendPars setDir setDirection setDrawIcon setDriveOnPath setDropInterval ' +\n 'setDynamicSimulationDistance setDynamicSimulationDistanceCoef setEditorMode setEditorObjectScope ' +\n 'setEffectCondition setEngineRPMRTD setFace setFaceAnimation setFatigue setFeatureType ' +\n 'setFlagAnimationPhase setFlagOwner setFlagSide setFlagTexture setFog setFormation ' +\n 'setFormationTask setFormDir setFriend setFromEditor setFSMVariable setFuel setFuelCargo ' +\n 'setGroupIcon setGroupIconParams setGroupIconsSelectable setGroupIconsVisible setGroupId ' +\n 'setGroupIdGlobal setGroupOwner setGusts setHideBehind setHit setHitIndex setHitPointDamage ' +\n 'setHorizonParallaxCoef setHUDMovementLevels setIdentity setImportance setInfoPanel setLeader ' +\n 'setLightAmbient setLightAttenuation setLightBrightness setLightColor setLightDayLight ' +\n 'setLightFlareMaxDistance setLightFlareSize setLightIntensity setLightnings setLightUseFlare ' +\n 'setLocalWindParams setMagazineTurretAmmo setMarkerAlpha setMarkerAlphaLocal setMarkerBrush ' +\n 'setMarkerBrushLocal setMarkerColor setMarkerColorLocal setMarkerDir setMarkerDirLocal ' +\n 'setMarkerPos setMarkerPosLocal setMarkerShape setMarkerShapeLocal setMarkerSize ' +\n 'setMarkerSizeLocal setMarkerText setMarkerTextLocal setMarkerType setMarkerTypeLocal setMass ' +\n 'setMimic setMousePosition setMusicEffect setMusicEventHandler setName setNameSound ' +\n 'setObjectArguments setObjectMaterial setObjectMaterialGlobal setObjectProxy setObjectTexture ' +\n 'setObjectTextureGlobal setObjectViewDistance setOvercast setOwner setOxygenRemaining ' +\n 'setParticleCircle setParticleClass setParticleFire setParticleParams setParticleRandom ' +\n 'setPilotCameraDirection setPilotCameraRotation setPilotCameraTarget setPilotLight setPiPEffect ' +\n 'setPitch setPlateNumber setPlayable setPlayerRespawnTime setPos setPosASL setPosASL2 setPosASLW ' +\n 'setPosATL setPosition setPosWorld setPylonLoadOut setPylonsPriority setRadioMsg setRain ' +\n 'setRainbow setRandomLip setRank setRectangular setRepairCargo setRotorBrakeRTD setShadowDistance ' +\n 'setShotParents setSide setSimpleTaskAlwaysVisible setSimpleTaskCustomData ' +\n 'setSimpleTaskDescription setSimpleTaskDestination setSimpleTaskTarget setSimpleTaskType ' +\n 'setSimulWeatherLayers setSize setSkill setSlingLoad setSoundEffect setSpeaker setSpeech ' +\n 'setSpeedMode setStamina setStaminaScheme setStatValue setSuppression setSystemOfUnits ' +\n 'setTargetAge setTaskMarkerOffset setTaskResult setTaskState setTerrainGrid setText ' +\n 'setTimeMultiplier setTitleEffect setTrafficDensity setTrafficDistance setTrafficGap ' +\n 'setTrafficSpeed setTriggerActivation setTriggerArea setTriggerStatements setTriggerText ' +\n 'setTriggerTimeout setTriggerType setType setUnconscious setUnitAbility setUnitLoadout setUnitPos ' +\n 'setUnitPosWeak setUnitRank setUnitRecoilCoefficient setUnitTrait setUnloadInCombat ' +\n 'setUserActionText setUserMFDText setUserMFDvalue setVariable setVectorDir setVectorDirAndUp ' +\n 'setVectorUp setVehicleAmmo setVehicleAmmoDef setVehicleArmor setVehicleCargo setVehicleId ' +\n 'setVehicleLock setVehiclePosition setVehicleRadar setVehicleReceiveRemoteTargets ' +\n 'setVehicleReportOwnPosition setVehicleReportRemoteTargets setVehicleTIPars setVehicleVarName ' +\n 'setVelocity setVelocityModelSpace setVelocityTransformation setViewDistance ' +\n 'setVisibleIfTreeCollapsed setWantedRPMRTD setWaves setWaypointBehaviour setWaypointCombatMode ' +\n 'setWaypointCompletionRadius setWaypointDescription setWaypointForceBehaviour setWaypointFormation ' +\n 'setWaypointHousePosition setWaypointLoiterRadius setWaypointLoiterType setWaypointName ' +\n 'setWaypointPosition setWaypointScript setWaypointSpeed setWaypointStatements setWaypointTimeout ' +\n 'setWaypointType setWaypointVisible setWeaponReloadingTime setWind setWindDir setWindForce ' +\n 'setWindStr setWingForceScaleRTD setWPPos show3DIcons showChat showCinemaBorder showCommandingMenu ' +\n 'showCompass showCuratorCompass showGPS showHUD showLegend showMap shownArtilleryComputer ' +\n 'shownChat shownCompass shownCuratorCompass showNewEditorObject shownGPS shownHUD shownMap ' +\n 'shownPad shownRadio shownScoretable shownUAVFeed shownWarrant shownWatch showPad showRadio ' +\n 'showScoretable showSubtitles showUAVFeed showWarrant showWatch showWaypoint showWaypoints side ' +\n 'sideChat sideEnemy sideFriendly sideRadio simpleTasks simulationEnabled simulCloudDensity ' +\n 'simulCloudOcclusion simulInClouds simulWeatherSync sin size sizeOf skill skillFinal skipTime ' +\n 'sleep sliderPosition sliderRange sliderSetPosition sliderSetRange sliderSetSpeed sliderSpeed ' +\n 'slingLoadAssistantShown soldierMagazines someAmmo sort soundVolume spawn speaker speed speedMode ' +\n 'splitString sqrt squadParams stance startLoadingScreen step stop stopEngineRTD stopped str ' +\n 'sunOrMoon supportInfo suppressFor surfaceIsWater surfaceNormal surfaceType swimInDepth ' +\n 'switchableUnits switchAction switchCamera switchGesture switchLight switchMove ' +\n 'synchronizedObjects synchronizedTriggers synchronizedWaypoints synchronizeObjectsAdd ' +\n 'synchronizeObjectsRemove synchronizeTrigger synchronizeWaypoint systemChat systemOfUnits tan ' +\n 'targetKnowledge targets targetsAggregate targetsQuery taskAlwaysVisible taskChildren ' +\n 'taskCompleted taskCustomData taskDescription taskDestination taskHint taskMarkerOffset taskParent ' +\n 'taskResult taskState taskType teamMember teamName teams teamSwitch teamSwitchEnabled teamType ' +\n 'terminate terrainIntersect terrainIntersectASL terrainIntersectAtASL text textLog textLogFormat ' +\n 'tg time timeMultiplier titleCut titleFadeOut titleObj titleRsc titleText toArray toFixed toLower ' +\n 'toString toUpper triggerActivated triggerActivation triggerArea triggerAttachedVehicle ' +\n 'triggerAttachObject triggerAttachVehicle triggerDynamicSimulation triggerStatements triggerText ' +\n 'triggerTimeout triggerTimeoutCurrent triggerType turretLocal turretOwner turretUnit tvAdd tvClear ' +\n 'tvCollapse tvCollapseAll tvCount tvCurSel tvData tvDelete tvExpand tvExpandAll tvPicture ' +\n 'tvSetColor tvSetCurSel tvSetData tvSetPicture tvSetPictureColor tvSetPictureColorDisabled ' +\n 'tvSetPictureColorSelected tvSetPictureRight tvSetPictureRightColor tvSetPictureRightColorDisabled ' +\n 'tvSetPictureRightColorSelected tvSetText tvSetTooltip tvSetValue tvSort tvSortByValue tvText ' +\n 'tvTooltip tvValue type typeName typeOf UAVControl uiNamespace uiSleep unassignCurator ' +\n 'unassignItem unassignTeam unassignVehicle underwater uniform uniformContainer uniformItems ' +\n 'uniformMagazines unitAddons unitAimPosition unitAimPositionVisual unitBackpack unitIsUAV unitPos ' +\n 'unitReady unitRecoilCoefficient units unitsBelowHeight unlinkItem unlockAchievement ' +\n 'unregisterTask updateDrawIcon updateMenuItem updateObjectTree useAISteeringComponent ' +\n 'useAudioTimeForMoves userInputDisabled vectorAdd vectorCos vectorCrossProduct vectorDiff ' +\n 'vectorDir vectorDirVisual vectorDistance vectorDistanceSqr vectorDotProduct vectorFromTo ' +\n 'vectorMagnitude vectorMagnitudeSqr vectorModelToWorld vectorModelToWorldVisual vectorMultiply ' +\n 'vectorNormalized vectorUp vectorUpVisual vectorWorldToModel vectorWorldToModelVisual vehicle ' +\n 'vehicleCargoEnabled vehicleChat vehicleRadio vehicleReceiveRemoteTargets vehicleReportOwnPosition ' +\n 'vehicleReportRemoteTargets vehicles vehicleVarName velocity velocityModelSpace verifySignature ' +\n 'vest vestContainer vestItems vestMagazines viewDistance visibleCompass visibleGPS visibleMap ' +\n 'visiblePosition visiblePositionASL visibleScoretable visibleWatch waves waypointAttachedObject ' +\n 'waypointAttachedVehicle waypointAttachObject waypointAttachVehicle waypointBehaviour ' +\n 'waypointCombatMode waypointCompletionRadius waypointDescription waypointForceBehaviour ' +\n 'waypointFormation waypointHousePosition waypointLoiterRadius waypointLoiterType waypointName ' +\n 'waypointPosition waypoints waypointScript waypointsEnabledUAV waypointShow waypointSpeed ' +\n 'waypointStatements waypointTimeout waypointTimeoutCurrent waypointType waypointVisible ' +\n 'weaponAccessories weaponAccessoriesCargo weaponCargo weaponDirection weaponInertia weaponLowered ' +\n 'weapons weaponsItems weaponsItemsCargo weaponState weaponsTurret weightRTD WFSideText wind ',\n literal:\n 'blufor civilian configNull controlNull displayNull east endl false grpNull independent lineBreak ' +\n 'locationNull nil objNull opfor pi resistance scriptNull sideAmbientLife sideEmpty sideLogic ' +\n 'sideUnknown taskNull teamMemberNull true west',\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.NUMBER_MODE,\n VARIABLE,\n FUNCTION,\n STRINGS,\n CPP.preprocessor\n ],\n illegal: /#|^\\$ /\n };\n};","module.exports = function(hljs) {\n var COMMENT_MODE = hljs.COMMENT('--', '$');\n return {\n case_insensitive: true,\n illegal: /[<>{}*]/,\n contains: [\n {\n beginKeywords:\n 'begin end start commit rollback savepoint lock alter create drop rename call ' +\n 'delete do handler insert load replace select truncate update set show pragma grant ' +\n 'merge describe use explain help declare prepare execute deallocate release ' +\n 'unlock purge reset change stop analyze cache flush optimize repair kill ' +\n 'install uninstall checksum restore check backup revoke comment with',\n end: /;/, endsWithParent: true,\n lexemes: /[\\w\\.]+/,\n keywords: {\n keyword:\n 'as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add ' +\n 'addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias ' +\n 'allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply ' +\n 'archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan ' +\n 'atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid ' +\n 'authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile ' +\n 'before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float ' +\n 'binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound ' +\n 'buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel ' +\n 'capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base ' +\n 'char_length character_length characters characterset charindex charset charsetform charsetid check ' +\n 'checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close ' +\n 'cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation ' +\n 'collect colu colum column column_value columns columns_updated comment commit compact compatibility ' +\n 'compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn ' +\n 'connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection ' +\n 'consider consistent constant constraint constraints constructor container content contents context ' +\n 'contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost ' +\n 'count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation ' +\n 'critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user ' +\n 'cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add ' +\n 'date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts ' +\n 'day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate ' +\n 'declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults ' +\n 'deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank ' +\n 'depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor ' +\n 'deterministic diagnostics difference dimension direct_load directory disable disable_all ' +\n 'disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div ' +\n 'do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable ' +\n 'editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt ' +\n 'end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors ' +\n 'escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding ' +\n 'execu execut execute exempt exists exit exp expire explain export export_set extended extent external ' +\n 'external_1 external_2 externally extract failed failed_login_attempts failover failure far fast ' +\n 'feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final ' +\n 'finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign ' +\n 'form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ' +\n 'ftp full function general generated get get_format get_lock getdate getutcdate global global_name ' +\n 'globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups ' +\n 'gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex ' +\n 'hierarchy high high_priority hosts hour http id ident_current ident_incr ident_seed identified ' +\n 'identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment ' +\n 'index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile ' +\n 'initial initialized initially initrans inmemory inner innodb input insert install instance instantiable ' +\n 'instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat ' +\n 'is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists ' +\n 'keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lax lcase ' +\n 'lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit ' +\n 'lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate ' +\n 'locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call ' +\n 'logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime ' +\n 'managed management manual map mapping mask master master_pos_wait match matched materialized max ' +\n 'maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans ' +\n 'md5 measures median medium member memcompress memory merge microsecond mid migration min minextents ' +\n 'minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month ' +\n 'months mount move movement multiset mutex name name_const names nan national native natural nav nchar ' +\n 'nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile ' +\n 'nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile ' +\n 'nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder ' +\n 'nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck ' +\n 'noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe ' +\n 'nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ' +\n 'ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old ' +\n 'on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date ' +\n 'oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary ' +\n 'out outer outfile outline output over overflow overriding package pad parallel parallel_enable ' +\n 'parameters parent parse partial partition partitions pascal passing password password_grace_time ' +\n 'password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex ' +\n 'pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc ' +\n 'performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin ' +\n 'policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction ' +\n 'prediction_cost prediction_details prediction_probability prediction_set prepare present preserve ' +\n 'prior priority private private_sga privileges procedural procedure procedure_analyze processlist ' +\n 'profiles project prompt protection public publishingservername purge quarter query quick quiesce quota ' +\n 'quotename radians raise rand range rank raw read reads readsize rebuild record records ' +\n 'recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh ' +\n 'regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy ' +\n 'reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename ' +\n 'repair repeat replace replicate replication required reset resetlogs resize resource respect restore ' +\n 'restricted result result_cache resumable resume retention return returning returns reuse reverse revoke ' +\n 'right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows ' +\n 'rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll ' +\n 'sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select ' +\n 'self sequence sequential serializable server servererror session session_user sessions_per_user set ' +\n 'sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor ' +\n 'si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin ' +\n 'size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex ' +\n 'source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows ' +\n 'sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone ' +\n 'standby start starting startup statement static statistics stats_binomial_test stats_crosstab ' +\n 'stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep ' +\n 'stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev ' +\n 'stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate ' +\n 'subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum ' +\n 'suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate ' +\n 'sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tan tdo ' +\n 'template temporary terminated tertiary_weights test than then thread through tier ties time time_format ' +\n 'time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr ' +\n 'timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking ' +\n 'transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate ' +\n 'try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress ' +\n 'under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot ' +\n 'unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert ' +\n 'url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date ' +\n 'utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var ' +\n 'var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray ' +\n 'verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear ' +\n 'wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped ' +\n 'xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces ' +\n 'xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek',\n literal:\n 'true false null unknown',\n built_in:\n 'array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number ' +\n 'numeric real record serial serial8 smallint text time timestamp varchar varying void'\n },\n contains: [\n {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [hljs.BACKSLASH_ESCAPE, {begin: '\\'\\''}]\n },\n {\n className: 'string',\n begin: '\"', end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE, {begin: '\"\"'}]\n },\n {\n className: 'string',\n begin: '`', end: '`',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n COMMENT_MODE,\n hljs.HASH_COMMENT_MODE\n ]\n },\n hljs.C_BLOCK_COMMENT_MODE,\n COMMENT_MODE,\n hljs.HASH_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n begin: hljs.UNDERSCORE_IDENT_RE,\n lexemes: hljs.UNDERSCORE_IDENT_RE,\n keywords: {\n // Stan's keywords\n name:\n 'for in while repeat until if then else',\n // Stan's probablity distributions (less beta and gamma, as commonly\n // used for parameter names). So far, _log and _rng variants are not\n // included\n symbol:\n 'bernoulli bernoulli_logit binomial binomial_logit ' +\n 'beta_binomial hypergeometric categorical categorical_logit ' +\n 'ordered_logistic neg_binomial neg_binomial_2 ' +\n 'neg_binomial_2_log poisson poisson_log multinomial normal ' +\n 'exp_mod_normal skew_normal student_t cauchy double_exponential ' +\n 'logistic gumbel lognormal chi_square inv_chi_square ' +\n 'scaled_inv_chi_square exponential inv_gamma weibull frechet ' +\n 'rayleigh wiener pareto pareto_type_2 von_mises uniform ' +\n 'multi_normal multi_normal_prec multi_normal_cholesky multi_gp ' +\n 'multi_gp_cholesky multi_student_t gaussian_dlm_obs dirichlet ' +\n 'lkj_corr lkj_corr_cholesky wishart inv_wishart',\n // Stan's data types\n 'selector-tag':\n 'int real vector simplex unit_vector ordered positive_ordered ' +\n 'row_vector matrix cholesky_factor_corr cholesky_factor_cov ' +\n 'corr_matrix cov_matrix',\n // Stan's model blocks\n title:\n 'functions model data parameters quantities transformed ' +\n 'generated',\n literal:\n 'true false'\n },\n relevance: 0\n },\n // The below is all taken from the R language definition\n {\n // hex value\n className: 'number',\n begin: \"0[xX][0-9a-fA-F]+[Li]?\\\\b\",\n relevance: 0\n },\n {\n // hex value\n className: 'number',\n begin: \"0[xX][0-9a-fA-F]+[Li]?\\\\b\",\n relevance: 0\n },\n {\n // explicit integer\n className: 'number',\n begin: \"\\\\d+(?:[eE][+\\\\-]?\\\\d*)?L\\\\b\",\n relevance: 0\n },\n {\n // number with trailing decimal\n className: 'number',\n begin: \"\\\\d+\\\\.(?!\\\\d)(?:i\\\\b)?\",\n relevance: 0\n },\n {\n // number\n className: 'number',\n begin: \"\\\\d+(?:\\\\.\\\\d*)?(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\n relevance: 0\n },\n {\n // number with leading decimal\n className: 'number',\n begin: \"\\\\.\\\\d+(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['do', 'ado'],\n case_insensitive: true,\n keywords: 'if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize meqparse mer merg merge mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5',\n contains: [\n {\n className: 'symbol',\n begin: /`[a-zA-Z0-9_]+'/\n },\n {\n className: 'variable',\n begin: /\\$\\{?[a-zA-Z0-9_]+\\}?/\n },\n {\n className: 'string',\n variants: [\n {begin: '`\"[^\\r\\n]*?\"\\''},\n {begin: '\"[^\\r\\n\"]*\"'}\n ]\n },\n\n {\n className: 'built_in',\n variants: [\n {\n begin: '\\\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\\\(|$)'\n }\n ]\n },\n\n hljs.COMMENT('^[ \\t]*\\\\*.*$', false),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var STEP21_IDENT_RE = '[A-Z_][A-Z0-9_.]*';\n var STEP21_KEYWORDS = {\n keyword: 'HEADER ENDSEC DATA'\n };\n var STEP21_START = {\n className: 'meta',\n begin: 'ISO-10303-21;',\n relevance: 10\n };\n var STEP21_CLOSE = {\n className: 'meta',\n begin: 'END-ISO-10303-21;',\n relevance: 10\n };\n\n return {\n aliases: ['p21', 'step', 'stp'],\n case_insensitive: true, // STEP 21 is case insensitive in theory, in practice all non-comments are capitalized.\n lexemes: STEP21_IDENT_RE,\n keywords: STEP21_KEYWORDS,\n contains: [\n STEP21_START,\n STEP21_CLOSE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT('/\\\\*\\\\*!', '\\\\*/'),\n hljs.C_NUMBER_MODE,\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n {\n className: 'string',\n begin: \"'\", end: \"'\"\n },\n {\n className: 'symbol',\n variants: [\n {\n begin: '#', end: '\\\\d+',\n illegal: '\\\\W'\n }\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n\n var VARIABLE = {\n className: 'variable',\n begin: '\\\\$' + hljs.IDENT_RE\n };\n\n var HEX_COLOR = {\n className: 'number',\n begin: '#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})'\n };\n\n var AT_KEYWORDS = [\n 'charset',\n 'css',\n 'debug',\n 'extend',\n 'font-face',\n 'for',\n 'import',\n 'include',\n 'media',\n 'mixin',\n 'page',\n 'warn',\n 'while'\n ];\n\n var PSEUDO_SELECTORS = [\n 'after',\n 'before',\n 'first-letter',\n 'first-line',\n 'active',\n 'first-child',\n 'focus',\n 'hover',\n 'lang',\n 'link',\n 'visited'\n ];\n\n var TAGS = [\n 'a',\n 'abbr',\n 'address',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'blockquote',\n 'body',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'mark',\n 'menu',\n 'nav',\n 'object',\n 'ol',\n 'p',\n 'q',\n 'quote',\n 'samp',\n 'section',\n 'span',\n 'strong',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'var',\n 'video'\n ];\n\n var TAG_END = '[\\\\.\\\\s\\\\n\\\\[\\\\:,]';\n\n var ATTRIBUTES = [\n 'align-content',\n 'align-items',\n 'align-self',\n 'animation',\n 'animation-delay',\n 'animation-direction',\n 'animation-duration',\n 'animation-fill-mode',\n 'animation-iteration-count',\n 'animation-name',\n 'animation-play-state',\n 'animation-timing-function',\n 'auto',\n 'backface-visibility',\n 'background',\n 'background-attachment',\n 'background-clip',\n 'background-color',\n 'background-image',\n 'background-origin',\n 'background-position',\n 'background-repeat',\n 'background-size',\n 'border',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-style',\n 'border-bottom-width',\n 'border-collapse',\n 'border-color',\n 'border-image',\n 'border-image-outset',\n 'border-image-repeat',\n 'border-image-slice',\n 'border-image-source',\n 'border-image-width',\n 'border-left',\n 'border-left-color',\n 'border-left-style',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-style',\n 'border-right-width',\n 'border-spacing',\n 'border-style',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-style',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-decoration-break',\n 'box-shadow',\n 'box-sizing',\n 'break-after',\n 'break-before',\n 'break-inside',\n 'caption-side',\n 'clear',\n 'clip',\n 'clip-path',\n 'color',\n 'column-count',\n 'column-fill',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-style',\n 'column-rule-width',\n 'column-span',\n 'column-width',\n 'columns',\n 'content',\n 'counter-increment',\n 'counter-reset',\n 'cursor',\n 'direction',\n 'display',\n 'empty-cells',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-direction',\n 'flex-flow',\n 'flex-grow',\n 'flex-shrink',\n 'flex-wrap',\n 'float',\n 'font',\n 'font-family',\n 'font-feature-settings',\n 'font-kerning',\n 'font-language-override',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-variant-ligatures',\n 'font-weight',\n 'height',\n 'hyphens',\n 'icon',\n 'image-orientation',\n 'image-rendering',\n 'image-resolution',\n 'ime-mode',\n 'inherit',\n 'initial',\n 'justify-content',\n 'left',\n 'letter-spacing',\n 'line-height',\n 'list-style',\n 'list-style-image',\n 'list-style-position',\n 'list-style-type',\n 'margin',\n 'margin-bottom',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'marks',\n 'mask',\n 'max-height',\n 'max-width',\n 'min-height',\n 'min-width',\n 'nav-down',\n 'nav-index',\n 'nav-left',\n 'nav-right',\n 'nav-up',\n 'none',\n 'normal',\n 'object-fit',\n 'object-position',\n 'opacity',\n 'order',\n 'orphans',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-style',\n 'outline-width',\n 'overflow',\n 'overflow-wrap',\n 'overflow-x',\n 'overflow-y',\n 'padding',\n 'padding-bottom',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'page-break-after',\n 'page-break-before',\n 'page-break-inside',\n 'perspective',\n 'perspective-origin',\n 'pointer-events',\n 'position',\n 'quotes',\n 'resize',\n 'right',\n 'tab-size',\n 'table-layout',\n 'text-align',\n 'text-align-last',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-line',\n 'text-decoration-style',\n 'text-indent',\n 'text-overflow',\n 'text-rendering',\n 'text-shadow',\n 'text-transform',\n 'text-underline-position',\n 'top',\n 'transform',\n 'transform-origin',\n 'transform-style',\n 'transition',\n 'transition-delay',\n 'transition-duration',\n 'transition-property',\n 'transition-timing-function',\n 'unicode-bidi',\n 'vertical-align',\n 'visibility',\n 'white-space',\n 'widows',\n 'width',\n 'word-break',\n 'word-spacing',\n 'word-wrap',\n 'z-index'\n ];\n\n // illegals\n var ILLEGAL = [\n '\\\\?',\n '(\\\\bReturn\\\\b)', // monkey\n '(\\\\bEnd\\\\b)', // monkey\n '(\\\\bend\\\\b)', // vbscript\n '(\\\\bdef\\\\b)', // gradle\n ';', // a whole lot of languages\n '#\\\\s', // markdown\n '\\\\*\\\\s', // markdown\n '===\\\\s', // markdown\n '\\\\|',\n '%', // prolog\n ];\n\n return {\n aliases: ['styl'],\n case_insensitive: false,\n keywords: 'if else for in',\n illegal: '(' + ILLEGAL.join('|') + ')',\n contains: [\n\n // strings\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n\n // comments\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n\n // hex colors\n HEX_COLOR,\n\n // class tag\n {\n begin: '\\\\.[a-zA-Z][a-zA-Z0-9_-]*' + TAG_END,\n returnBegin: true,\n contains: [\n {className: 'selector-class', begin: '\\\\.[a-zA-Z][a-zA-Z0-9_-]*'}\n ]\n },\n\n // id tag\n {\n begin: '\\\\#[a-zA-Z][a-zA-Z0-9_-]*' + TAG_END,\n returnBegin: true,\n contains: [\n {className: 'selector-id', begin: '\\\\#[a-zA-Z][a-zA-Z0-9_-]*'}\n ]\n },\n\n // tags\n {\n begin: '\\\\b(' + TAGS.join('|') + ')' + TAG_END,\n returnBegin: true,\n contains: [\n {className: 'selector-tag', begin: '\\\\b[a-zA-Z][a-zA-Z0-9_-]*'}\n ]\n },\n\n // psuedo selectors\n {\n begin: '&?:?:\\\\b(' + PSEUDO_SELECTORS.join('|') + ')' + TAG_END\n },\n\n // @ keywords\n {\n begin: '\\@(' + AT_KEYWORDS.join('|') + ')\\\\b'\n },\n\n // variables\n VARIABLE,\n\n // dimension\n hljs.CSS_NUMBER_MODE,\n\n // number\n hljs.NUMBER_MODE,\n\n // functions\n // - only from beginning of line + whitespace\n {\n className: 'function',\n begin: '^[a-zA-Z][a-zA-Z0-9_\\-]*\\\\(.*\\\\)',\n illegal: '[\\\\n]',\n returnBegin: true,\n contains: [\n {className: 'title', begin: '\\\\b[a-zA-Z][a-zA-Z0-9_\\-]*'},\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n contains: [\n HEX_COLOR,\n VARIABLE,\n hljs.APOS_STRING_MODE,\n hljs.CSS_NUMBER_MODE,\n hljs.NUMBER_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n }\n ]\n },\n\n // attributes\n // - only from beginning of line + whitespace\n // - must have whitespace after it\n {\n className: 'attribute',\n begin: '\\\\b(' + ATTRIBUTES.reverse().join('|') + ')\\\\b',\n starts: {\n // value container\n end: /;|$/,\n contains: [\n HEX_COLOR,\n VARIABLE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.CSS_NUMBER_MODE,\n hljs.NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n illegal: /\\./,\n relevance: 0\n }\n }\n ]\n };\n};","module.exports = function(hljs) {\n var DETAILS = {\n className: 'string',\n begin: '\\\\[\\n(multipart)?', end: '\\\\]\\n'\n };\n var TIME = {\n className: 'string',\n begin: '\\\\d{4}-\\\\d{2}-\\\\d{2}(\\\\s+)\\\\d{2}:\\\\d{2}:\\\\d{2}\\.\\\\d+Z'\n };\n var PROGRESSVALUE = {\n className: 'string',\n begin: '(\\\\+|-)\\\\d+'\n };\n var KEYWORDS = {\n className: 'keyword',\n relevance: 10,\n variants: [\n { begin: '^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\\\s+(test)?' },\n { begin: '^progress(:?)(\\\\s+)?(pop|push)?' },\n { begin: '^tags:' },\n { begin: '^time:' }\n ],\n };\n return {\n case_insensitive: true,\n contains: [\n DETAILS,\n TIME,\n PROGRESSVALUE,\n KEYWORDS\n ]\n };\n};","module.exports = function(hljs) {\n var SWIFT_KEYWORDS = {\n keyword: '__COLUMN__ __FILE__ __FUNCTION__ __LINE__ as as! as? associatedtype associativity ' +\n 'break case catch class continue convenience default defer deinit didSet do ' +\n 'dynamic dynamicType else enum extension fallthrough false fileprivate final for func ' +\n 'get guard if import in indirect infix init inout internal is lazy left let ' +\n 'mutating nil none nonmutating open operator optional override postfix precedence ' +\n 'prefix private protocol Protocol public repeat required rethrows return ' +\n 'right self Self set static struct subscript super switch throw throws true ' +\n 'try try! try? Type typealias unowned var weak where while willSet',\n literal: 'true false nil',\n built_in: 'abs advance alignof alignofValue anyGenerator assert assertionFailure ' +\n 'bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC ' +\n 'bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros ' +\n 'debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords ' +\n 'enumerate equal fatalError filter find getBridgedObjectiveCType getVaList ' +\n 'indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC ' +\n 'isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare ' +\n 'map max maxElement min minElement numericCast overlaps partition posix ' +\n 'precondition preconditionFailure print println quickSort readLine reduce reflect ' +\n 'reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split ' +\n 'startsWith stride strideof strideofValue swap toString transcode ' +\n 'underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap ' +\n 'unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer ' +\n 'withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers ' +\n 'withUnsafePointer withUnsafePointers withVaList zip'\n };\n\n var TYPE = {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\u00C0-\\u02B8\\']*',\n relevance: 0\n };\n var BLOCK_COMMENT = hljs.COMMENT(\n '/\\\\*',\n '\\\\*/',\n {\n contains: ['self']\n }\n );\n var SUBST = {\n className: 'subst',\n begin: /\\\\\\(/, end: '\\\\)',\n keywords: SWIFT_KEYWORDS,\n contains: [] // assigned later\n };\n var NUMBERS = {\n className: 'number',\n begin: '\\\\b([\\\\d_]+(\\\\.[\\\\deE_]+)?|0x[a-fA-F0-9_]+(\\\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\\\b',\n relevance: 0\n };\n var QUOTE_STRING_MODE = hljs.inherit(hljs.QUOTE_STRING_MODE, {\n contains: [SUBST, hljs.BACKSLASH_ESCAPE]\n });\n SUBST.contains = [NUMBERS];\n\n return {\n keywords: SWIFT_KEYWORDS,\n contains: [\n QUOTE_STRING_MODE,\n hljs.C_LINE_COMMENT_MODE,\n BLOCK_COMMENT,\n TYPE,\n NUMBERS,\n {\n className: 'function',\n beginKeywords: 'func', end: '{', excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: /[A-Za-z$_][0-9A-Za-z$_]*/\n }),\n {\n begin: /</, end: />/\n },\n {\n className: 'params',\n begin: /\\(/, end: /\\)/, endsParent: true,\n keywords: SWIFT_KEYWORDS,\n contains: [\n 'self',\n NUMBERS,\n QUOTE_STRING_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {begin: ':'} // relevance booster\n ],\n illegal: /[\"']/\n }\n ],\n illegal: /\\[|%/\n },\n {\n className: 'class',\n beginKeywords: 'struct protocol class extension enum',\n keywords: SWIFT_KEYWORDS,\n end: '\\\\{',\n excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: /[A-Za-z$_][\\u00C0-\\u02B80-9A-Za-z$_]*/})\n ]\n },\n {\n className: 'meta', // @attributes\n begin: '(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|' +\n '@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|' +\n '@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|' +\n '@infix|@prefix|@postfix|@autoclosure|@testable|@available|' +\n '@nonobjc|@NSApplicationMain|@UIApplicationMain)'\n\n },\n {\n beginKeywords: 'import', end: /$/,\n contains: [hljs.C_LINE_COMMENT_MODE, BLOCK_COMMENT]\n }\n ]\n };\n};","module.exports = function(hljs) {\n\n var COMMENT = {\n className: 'comment',\n begin: /\\$noop\\(/,\n end: /\\)/,\n contains: [{\n begin: /\\(/,\n end: /\\)/,\n contains: ['self', {\n begin: /\\\\./\n }]\n }],\n relevance: 10\n };\n\n var FUNCTION = {\n className: 'keyword',\n begin: /\\$(?!noop)[a-zA-Z][_a-zA-Z0-9]*/,\n end: /\\(/,\n excludeEnd: true\n };\n\n var VARIABLE = {\n className: 'variable',\n begin: /%[_a-zA-Z0-9:]*/,\n end: '%'\n };\n\n var ESCAPE_SEQUENCE = {\n className: 'symbol',\n begin: /\\\\./\n };\n\n return {\n contains: [\n COMMENT,\n FUNCTION,\n VARIABLE,\n ESCAPE_SEQUENCE\n ]\n };\n};","module.exports = function(hljs) {\n var LITERALS = 'true false yes no null';\n\n var keyPrefix = '^[ \\\\-]*';\n var keyName = '[a-zA-Z_][\\\\w\\\\-]*';\n var KEY = {\n className: 'attr',\n variants: [\n { begin: keyPrefix + keyName + \":\"},\n { begin: keyPrefix + '\"' + keyName + '\"' + \":\"},\n { begin: keyPrefix + \"'\" + keyName + \"'\" + \":\"}\n ]\n };\n\n var TEMPLATE_VARIABLES = {\n className: 'template-variable',\n variants: [\n { begin: '\\{\\{', end: '\\}\\}' }, // jinja templates Ansible\n { begin: '%\\{', end: '\\}' } // Ruby i18n\n ]\n };\n var STRING = {\n className: 'string',\n relevance: 0,\n variants: [\n {begin: /'/, end: /'/},\n {begin: /\"/, end: /\"/},\n {begin: /\\S+/}\n ],\n contains: [\n hljs.BACKSLASH_ESCAPE,\n TEMPLATE_VARIABLES\n ]\n };\n\n return {\n case_insensitive: true,\n aliases: ['yml', 'YAML', 'yaml'],\n contains: [\n KEY,\n {\n className: 'meta',\n begin: '^---\\s*$',\n relevance: 10\n },\n { // multi line string\n className: 'string',\n begin: '[\\\\|>] *$',\n returnEnd: true,\n contains: STRING.contains,\n // very simple termination: next hash key\n end: KEY.variants[0].begin\n },\n { // Ruby/Rails erb\n begin: '<%[%=-]?', end: '[%-]?%>',\n subLanguage: 'ruby',\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n },\n { // local tags\n className: 'type',\n begin: '!' + hljs.UNDERSCORE_IDENT_RE,\n },\n { // data type\n className: 'type',\n begin: '!!' + hljs.UNDERSCORE_IDENT_RE,\n },\n { // fragment id &ref\n className: 'meta',\n begin: '&' + hljs.UNDERSCORE_IDENT_RE + '$',\n },\n { // fragment reference *ref\n className: 'meta',\n begin: '\\\\*' + hljs.UNDERSCORE_IDENT_RE + '$'\n },\n { // array listing\n className: 'bullet',\n begin: '^ *-',\n relevance: 0\n },\n hljs.HASH_COMMENT_MODE,\n {\n beginKeywords: LITERALS,\n keywords: {literal: LITERALS}\n },\n hljs.C_NUMBER_MODE,\n STRING\n ]\n };\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n contains: [\n hljs.HASH_COMMENT_MODE,\n // version of format and total amount of testcases\n {\n className: 'meta',\n variants: [\n { begin: '^TAP version (\\\\d+)$' },\n { begin: '^1\\\\.\\\\.(\\\\d+)$' }\n ],\n },\n // YAML block\n {\n begin: '(\\s+)?---$', end: '\\\\.\\\\.\\\\.$',\n subLanguage: 'yaml',\n relevance: 0\n },\n\t // testcase number\n {\n className: 'number',\n begin: ' (\\\\d+) '\n },\n\t // testcase status and description\n {\n className: 'symbol',\n variants: [\n { begin: '^ok' },\n { begin: '^not ok' }\n ],\n },\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['tk'],\n keywords: 'after append apply array auto_execok auto_import auto_load auto_mkindex ' +\n 'auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock ' +\n 'close concat continue dde dict encoding eof error eval exec exit expr fblocked ' +\n 'fconfigure fcopy file fileevent filename flush for foreach format gets glob global ' +\n 'history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list ' +\n 'llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 '+\n 'mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex '+\n 'platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename '+\n 'return safe scan seek set socket source split string subst switch tcl_endOfWord '+\n 'tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter '+\n 'tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update '+\n 'uplevel upvar variable vwait while',\n contains: [\n hljs.COMMENT(';[ \\\\t]*#', '$'),\n hljs.COMMENT('^[ \\\\t]*#', '$'),\n {\n beginKeywords: 'proc',\n end: '[\\\\{]',\n excludeEnd: true,\n contains: [\n {\n className: 'title',\n begin: '[ \\\\t\\\\n\\\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*',\n end: '[ \\\\t\\\\n\\\\r]',\n endsWithParent: true,\n excludeEnd: true\n }\n ]\n },\n {\n excludeEnd: true,\n variants: [\n {\n begin: '\\\\$(\\\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\\\(([a-zA-Z0-9_])*\\\\)',\n end: '[^a-zA-Z0-9_\\\\}\\\\$]'\n },\n {\n begin: '\\\\$(\\\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*',\n end: '(\\\\))?[^a-zA-Z0-9_\\\\}\\\\$]'\n }\n ]\n },\n {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null})\n ]\n },\n {\n className: 'number',\n variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]\n }\n ]\n }\n};","module.exports = function(hljs) {\n var COMMAND = {\n className: 'tag',\n begin: /\\\\/,\n relevance: 0,\n contains: [\n {\n className: 'name',\n variants: [\n {begin: /[a-zA-Zа-яА-я]+[*]?/},\n {begin: /[^a-zA-Zа-яА-я0-9]/}\n ],\n starts: {\n endsWithParent: true,\n relevance: 0,\n contains: [\n {\n className: 'string', // because it looks like attributes in HTML tags\n variants: [\n {begin: /\\[/, end: /\\]/},\n {begin: /\\{/, end: /\\}/}\n ]\n },\n {\n begin: /\\s*=\\s*/, endsWithParent: true,\n relevance: 0,\n contains: [\n {\n className: 'number',\n begin: /-?\\d*\\.?\\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?/\n }\n ]\n }\n ]\n }\n }\n ]\n };\n\n return {\n contains: [\n COMMAND,\n {\n className: 'formula',\n contains: [COMMAND],\n relevance: 0,\n variants: [\n {begin: /\\$\\$/, end: /\\$\\$/},\n {begin: /\\$/, end: /\\$/}\n ]\n },\n hljs.COMMENT(\n '%',\n '$',\n {\n relevance: 0\n }\n )\n ]\n };\n};","module.exports = function(hljs) {\n var BUILT_IN_TYPES = 'bool byte i16 i32 i64 double string binary';\n return {\n keywords: {\n keyword:\n 'namespace const typedef struct enum service exception void oneway set list map required optional',\n built_in:\n BUILT_IN_TYPES,\n literal:\n 'true false'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'struct enum service exception', end: /\\{/,\n illegal: /\\n/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\n })\n ]\n },\n {\n begin: '\\\\b(set|list|map)\\\\s*<', end: '>',\n keywords: BUILT_IN_TYPES,\n contains: ['self']\n }\n ]\n };\n};","module.exports = function(hljs) {\n var TPID = {\n className: 'number',\n begin: '[1-9][0-9]*', /* no leading zeros */\n relevance: 0\n };\n var TPLABEL = {\n className: 'symbol',\n begin: ':[^\\\\]]+'\n };\n var TPDATA = {\n className: 'built_in',\n begin: '(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER|\\\n TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\\\[', end: '\\\\]',\n contains: [\n 'self',\n TPID,\n TPLABEL\n ]\n };\n var TPIO = {\n className: 'built_in',\n begin: '(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\\\[', end: '\\\\]',\n contains: [\n 'self',\n TPID,\n hljs.QUOTE_STRING_MODE, /* for pos section at bottom */\n TPLABEL\n ]\n };\n\n return {\n keywords: {\n keyword:\n 'ABORT ACC ADJUST AND AP_LD BREAK CALL CNT COL CONDITION CONFIG DA DB ' +\n 'DIV DETECT ELSE END ENDFOR ERR_NUM ERROR_PROG FINE FOR GP GUARD INC ' +\n 'IF JMP LINEAR_MAX_SPEED LOCK MOD MONITOR OFFSET Offset OR OVERRIDE ' +\n 'PAUSE PREG PTH RT_LD RUN SELECT SKIP Skip TA TB TO TOOL_OFFSET ' +\n 'Tool_Offset UF UT UFRAME_NUM UTOOL_NUM UNLOCK WAIT X Y Z W P R STRLEN ' +\n 'SUBSTR FINDSTR VOFFSET PROG ATTR MN POS',\n literal:\n 'ON OFF max_speed LPOS JPOS ENABLE DISABLE START STOP RESET'\n },\n contains: [\n TPDATA,\n TPIO,\n {\n className: 'keyword',\n begin: '/(PROG|ATTR|MN|POS|END)\\\\b'\n },\n {\n /* this is for cases like ,CALL */\n className: 'keyword',\n begin: '(CALL|RUN|POINT_LOGIC|LBL)\\\\b'\n },\n {\n /* this is for cases like CNT100 where the default lexemes do not\n * separate the keyword and the number */\n className: 'keyword',\n begin: '\\\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)'\n },\n {\n /* to catch numbers that do not have a word boundary on the left */\n className: 'number',\n begin: '\\\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\\\b',\n relevance: 0\n },\n hljs.COMMENT('//', '[;$]'),\n hljs.COMMENT('!', '[;$]'),\n hljs.COMMENT('--eg:', '$'),\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\'', end: '\\''\n },\n hljs.C_NUMBER_MODE,\n {\n className: 'variable',\n begin: '\\\\$[A-Za-z0-9_]+'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)'\n };\n\n var FUNCTION_NAMES = 'attribute block constant cycle date dump include ' +\n 'max min parent random range source template_from_string';\n\n var FUNCTIONS = {\n beginKeywords: FUNCTION_NAMES,\n keywords: {name: FUNCTION_NAMES},\n relevance: 0,\n contains: [\n PARAMS\n ]\n };\n\n var FILTER = {\n begin: /\\|[A-Za-z_]+:?/,\n keywords:\n 'abs batch capitalize convert_encoding date date_modify default ' +\n 'escape first format join json_encode keys last length lower ' +\n 'merge nl2br number_format raw replace reverse round slice sort split ' +\n 'striptags title trim upper url_encode',\n contains: [\n FUNCTIONS\n ]\n };\n\n var TAGS = 'autoescape block do embed extends filter flush for ' +\n 'if import include macro sandbox set spaceless use verbatim';\n\n TAGS = TAGS + ' ' + TAGS.split(' ').map(function(t){return 'end' + t}).join(' ');\n\n return {\n aliases: ['craftcms'],\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT(/\\{#/, /#}/),\n {\n className: 'template-tag',\n begin: /\\{%/, end: /%}/,\n contains: [\n {\n className: 'name',\n begin: /\\w+/,\n keywords: TAGS,\n starts: {\n endsWithParent: true,\n contains: [FILTER, FUNCTIONS],\n relevance: 0\n }\n }\n ]\n },\n {\n className: 'template-variable',\n begin: /\\{\\{/, end: /}}/,\n contains: ['self', FILTER, FUNCTIONS]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'in if for while finally var new function do return void else break catch ' +\n 'instanceof with throw case default try this switch continue typeof delete ' +\n 'let yield const class public private protected get set super ' +\n 'static implements enum export import declare type namespace abstract ' +\n 'as from extends async await',\n literal:\n 'true false null undefined NaN Infinity',\n built_in:\n 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\n 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\n 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\n 'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\n 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\n 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\n 'module console window document any number boolean string void Promise'\n };\n\n return {\n aliases: ['ts'],\n keywords: KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: /^\\s*['\"]use strict['\"]/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n { // template string\n className: 'string',\n begin: '`', end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {\n className: 'subst',\n begin: '\\\\$\\\\{', end: '\\\\}'\n }\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'number',\n variants: [\n { begin: '\\\\b(0[bB][01]+)' },\n { begin: '\\\\b(0[oO][0-7]+)' },\n { begin: hljs.C_NUMBER_RE }\n ],\n relevance: 0\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n begin: '(\\\\(.*?\\\\)|' + hljs.IDENT_RE + ')\\\\s*=>', returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: hljs.IDENT_RE\n },\n {\n begin: /\\(\\s*\\)/,\n },\n {\n begin: /\\(/, end: /\\)/,\n excludeBegin: true, excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n 'self',\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n }\n ]\n }\n ]\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n begin: 'function', end: /[\\{;]/, excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n 'self',\n hljs.inherit(hljs.TITLE_MODE, {begin: /[A-Za-z$_][0-9A-Za-z$_]*/}),\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n illegal: /[\"'\\(]/\n }\n ],\n illegal: /%/,\n relevance: 0 // () => {} is more typical in TypeScript\n },\n {\n beginKeywords: 'constructor', end: /\\{/, excludeEnd: true,\n contains: [\n 'self',\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n illegal: /[\"'\\(]/\n }\n ]\n },\n { // prevent references like module.id from being higlighted as module definitions\n begin: /module\\./,\n keywords: {built_in: 'module'},\n relevance: 0\n },\n {\n beginKeywords: 'module', end: /\\{/, excludeEnd: true\n },\n {\n beginKeywords: 'interface', end: /\\{/, excludeEnd: true,\n keywords: 'interface extends'\n },\n {\n begin: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n },\n {\n begin: '\\\\.' + hljs.IDENT_RE, relevance: 0 // hack: prevents detection of keywords after dots\n },\n {\n className: 'meta', begin: '@[A-Za-z]+'\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword:\n // Value types\n 'char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 ' +\n 'uint16 uint32 uint64 float double bool struct enum string void ' +\n // Reference types\n 'weak unowned owned ' +\n // Modifiers\n 'async signal static abstract interface override virtual delegate ' +\n // Control Structures\n 'if while do for foreach else switch case break default return try catch ' +\n // Visibility\n 'public private protected internal ' +\n // Other\n 'using new this get set const stdout stdin stderr var',\n built_in:\n 'DBus GLib CCode Gee Object Gtk Posix',\n literal:\n 'false true null'\n },\n contains: [\n {\n className: 'class',\n beginKeywords: 'class interface namespace', end: '{', excludeEnd: true,\n illegal: '[^,:\\\\n\\\\s\\\\.]',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"',\n relevance: 5\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '^#', end: '$',\n relevance: 2\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['vb'],\n case_insensitive: true,\n keywords: {\n keyword:\n 'addhandler addressof alias and andalso aggregate ansi as assembly auto binary by byref byval ' + /* a-b */\n 'call case catch class compare const continue custom declare default delegate dim distinct do ' + /* c-d */\n 'each equals else elseif end enum erase error event exit explicit finally for friend from function ' + /* e-f */\n 'get global goto group handles if implements imports in inherits interface into is isfalse isnot istrue ' + /* g-i */\n 'join key let lib like loop me mid mod module mustinherit mustoverride mybase myclass ' + /* j-m */\n 'namespace narrowing new next not notinheritable notoverridable ' + /* n */\n 'of off on operator option optional or order orelse overloads overridable overrides ' + /* o */\n 'paramarray partial preserve private property protected public ' + /* p */\n 'raiseevent readonly redim rem removehandler resume return ' + /* r */\n 'select set shadows shared skip static step stop structure strict sub synclock ' + /* s */\n 'take text then throw to try unicode until using when where while widening with withevents writeonly xor', /* t-x */\n built_in:\n 'boolean byte cbool cbyte cchar cdate cdec cdbl char cint clng cobj csbyte cshort csng cstr ctype ' + /* b-c */\n 'date decimal directcast double gettype getxmlnamespace iif integer long object ' + /* d-o */\n 'sbyte short single string trycast typeof uinteger ulong ushort', /* s-u */\n literal:\n 'true false nothing'\n },\n illegal: '//|{|}|endif|gosub|variant|wend|^\\\\$ ', /* reserved deprecated keywords */\n contains: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [{begin: '\"\"'}]}),\n hljs.COMMENT(\n '\\'',\n '$',\n {\n returnBegin: true,\n contains: [\n {\n className: 'doctag',\n begin: '\\'\\'\\'|<!--|-->',\n contains: [hljs.PHRASAL_WORDS_MODE]\n },\n {\n className: 'doctag',\n begin: '</?', end: '>',\n contains: [hljs.PHRASAL_WORDS_MODE]\n }\n ]\n }\n ),\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '#', end: '$',\n keywords: {'meta-keyword': 'if else elseif end region externalsource'}\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['vbs'],\n case_insensitive: true,\n keywords: {\n keyword:\n 'call class const dim do loop erase execute executeglobal exit for each next function ' +\n 'if then else on error option explicit new private property let get public randomize ' +\n 'redim rem select case set stop sub while wend with end to elseif is or xor and not ' +\n 'class_initialize class_terminate default preserve in me byval byref step resume goto',\n built_in:\n 'lcase month vartype instrrev ubound setlocale getobject rgb getref string ' +\n 'weekdayname rnd dateadd monthname now day minute isarray cbool round formatcurrency ' +\n 'conversions csng timevalue second year space abs clng timeserial fixs len asc ' +\n 'isempty maths dateserial atn timer isobject filter weekday datevalue ccur isdate ' +\n 'instr datediff formatdatetime replace isnull right sgn array snumeric log cdbl hex ' +\n 'chr lbound msgbox ucase getlocale cos cdate cbyte rtrim join hour oct typename trim ' +\n 'strcomp int createobject loadpicture tan formatnumber mid scriptenginebuildversion ' +\n 'scriptengine split scriptengineminorversion cint sin datepart ltrim sqr ' +\n 'scriptenginemajorversion time derived eval date formatpercent exp inputbox left ascw ' +\n 'chrw regexp server response request cstr err',\n literal:\n 'true false null nothing empty'\n },\n illegal: '//',\n contains: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [{begin: '\"\"'}]}),\n hljs.COMMENT(\n /'/,\n /$/,\n {\n relevance: 0\n }\n ),\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n subLanguage: 'xml',\n contains: [\n {\n begin: '<%', end: '%>',\n subLanguage: 'vbscript'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var SV_KEYWORDS = {\n keyword:\n 'accept_on alias always always_comb always_ff always_latch and assert assign ' +\n 'assume automatic before begin bind bins binsof bit break buf|0 bufif0 bufif1 ' +\n 'byte case casex casez cell chandle checker class clocking cmos config const ' +\n 'constraint context continue cover covergroup coverpoint cross deassign default ' +\n 'defparam design disable dist do edge else end endcase endchecker endclass ' +\n 'endclocking endconfig endfunction endgenerate endgroup endinterface endmodule ' +\n 'endpackage endprimitive endprogram endproperty endspecify endsequence endtable ' +\n 'endtask enum event eventually expect export extends extern final first_match for ' +\n 'force foreach forever fork forkjoin function generate|5 genvar global highz0 highz1 ' +\n 'if iff ifnone ignore_bins illegal_bins implements implies import incdir include ' +\n 'initial inout input inside instance int integer interconnect interface intersect ' +\n 'join join_any join_none large let liblist library local localparam logic longint ' +\n 'macromodule matches medium modport module nand negedge nettype new nexttime nmos ' +\n 'nor noshowcancelled not notif0 notif1 or output package packed parameter pmos ' +\n 'posedge primitive priority program property protected pull0 pull1 pulldown pullup ' +\n 'pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos ' +\n 'real realtime ref reg reject_on release repeat restrict return rnmos rpmos rtran ' +\n 'rtranif0 rtranif1 s_always s_eventually s_nexttime s_until s_until_with scalared ' +\n 'sequence shortint shortreal showcancelled signed small soft solve specify specparam ' +\n 'static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on ' +\n 'sync_reject_on table tagged task this throughout time timeprecision timeunit tran ' +\n 'tranif0 tranif1 tri tri0 tri1 triand trior trireg type typedef union unique unique0 ' +\n 'unsigned until until_with untyped use uwire var vectored virtual void wait wait_order ' +\n 'wand weak weak0 weak1 while wildcard wire with within wor xnor xor',\n literal:\n 'null',\n built_in:\n '$finish $stop $exit $fatal $error $warning $info $realtime $time $printtimescale ' +\n '$bitstoreal $bitstoshortreal $itor $signed $cast $bits $stime $timeformat ' +\n '$realtobits $shortrealtobits $rtoi $unsigned $asserton $assertkill $assertpasson ' +\n '$assertfailon $assertnonvacuouson $assertoff $assertcontrol $assertpassoff ' +\n '$assertfailoff $assertvacuousoff $isunbounded $sampled $fell $changed $past_gclk ' +\n '$fell_gclk $changed_gclk $rising_gclk $steady_gclk $coverage_control ' +\n '$coverage_get $coverage_save $set_coverage_db_name $rose $stable $past ' +\n '$rose_gclk $stable_gclk $future_gclk $falling_gclk $changing_gclk $display ' +\n '$coverage_get_max $coverage_merge $get_coverage $load_coverage_db $typename ' +\n '$unpacked_dimensions $left $low $increment $clog2 $ln $log10 $exp $sqrt $pow ' +\n '$floor $ceil $sin $cos $tan $countbits $onehot $isunknown $fatal $warning ' +\n '$dimensions $right $high $size $asin $acos $atan $atan2 $hypot $sinh $cosh ' +\n '$tanh $asinh $acosh $atanh $countones $onehot0 $error $info $random ' +\n '$dist_chi_square $dist_erlang $dist_exponential $dist_normal $dist_poisson ' +\n '$dist_t $dist_uniform $q_initialize $q_remove $q_exam $async$and$array ' +\n '$async$nand$array $async$or$array $async$nor$array $sync$and$array ' +\n '$sync$nand$array $sync$or$array $sync$nor$array $q_add $q_full $psprintf ' +\n '$async$and$plane $async$nand$plane $async$or$plane $async$nor$plane ' +\n '$sync$and$plane $sync$nand$plane $sync$or$plane $sync$nor$plane $system ' +\n '$display $displayb $displayh $displayo $strobe $strobeb $strobeh $strobeo ' +\n '$write $readmemb $readmemh $writememh $value$plusargs ' +\n '$dumpvars $dumpon $dumplimit $dumpports $dumpportson $dumpportslimit ' +\n '$writeb $writeh $writeo $monitor $monitorb $monitorh $monitoro $writememb ' +\n '$dumpfile $dumpoff $dumpall $dumpflush $dumpportsoff $dumpportsall ' +\n '$dumpportsflush $fclose $fdisplay $fdisplayb $fdisplayh $fdisplayo ' +\n '$fstrobe $fstrobeb $fstrobeh $fstrobeo $swrite $swriteb $swriteh ' +\n '$swriteo $fscanf $fread $fseek $fflush $feof $fopen $fwrite $fwriteb ' +\n '$fwriteh $fwriteo $fmonitor $fmonitorb $fmonitorh $fmonitoro $sformat ' +\n '$sformatf $fgetc $ungetc $fgets $sscanf $rewind $ftell $ferror'\n };\n return {\n aliases: ['v', 'sv', 'svh'],\n case_insensitive: false,\n keywords: SV_KEYWORDS, lexemes: /[\\w\\$]+/,\n contains: [\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'number',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {begin: '\\\\b((\\\\d+\\'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)'},\n {begin: '\\\\B((\\'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)'},\n {begin: '\\\\b([0-9_])+', relevance: 0}\n ]\n },\n /* parameters to instances */\n {\n className: 'variable',\n variants: [\n {begin: '#\\\\((?!parameter).+\\\\)'},\n {begin: '\\\\.\\\\w+', relevance: 0},\n ]\n },\n {\n className: 'meta',\n begin: '`', end: '$',\n keywords: {'meta-keyword': 'define __FILE__ ' +\n '__LINE__ begin_keywords celldefine default_nettype define ' +\n 'else elsif end_keywords endcelldefine endif ifdef ifndef ' +\n 'include line nounconnected_drive pragma resetall timescale ' +\n 'unconnected_drive undef undefineall'},\n relevance: 0\n }\n ]\n }; // return\n};","module.exports = function(hljs) {\n // Regular expression for VHDL numeric literals.\n\n // Decimal literal:\n var INTEGER_RE = '\\\\d(_|\\\\d)*';\n var EXPONENT_RE = '[eE][-+]?' + INTEGER_RE;\n var DECIMAL_LITERAL_RE = INTEGER_RE + '(\\\\.' + INTEGER_RE + ')?' + '(' + EXPONENT_RE + ')?';\n // Based literal:\n var BASED_INTEGER_RE = '\\\\w+';\n var BASED_LITERAL_RE = INTEGER_RE + '#' + BASED_INTEGER_RE + '(\\\\.' + BASED_INTEGER_RE + ')?' + '#' + '(' + EXPONENT_RE + ')?';\n\n var NUMBER_RE = '\\\\b(' + BASED_LITERAL_RE + '|' + DECIMAL_LITERAL_RE + ')';\n\n return {\n case_insensitive: true,\n keywords: {\n keyword:\n 'abs access after alias all and architecture array assert assume assume_guarantee attribute ' +\n 'begin block body buffer bus case component configuration constant context cover disconnect ' +\n 'downto default else elsif end entity exit fairness file for force function generate ' +\n 'generic group guarded if impure in inertial inout is label library linkage literal ' +\n 'loop map mod nand new next nor not null of on open or others out package parameter port ' +\n 'postponed procedure process property protected pure range record register reject ' +\n 'release rem report restrict restrict_guarantee return rol ror select sequence ' +\n 'severity shared signal sla sll sra srl strong subtype then to transport type ' +\n 'unaffected units until use variable view vmode vprop vunit wait when while with xnor xor',\n built_in:\n 'boolean bit character ' +\n 'integer time delay_length natural positive ' +\n 'string bit_vector file_open_kind file_open_status ' +\n 'std_logic std_logic_vector unsigned signed boolean_vector integer_vector ' +\n 'std_ulogic std_ulogic_vector unresolved_unsigned u_unsigned unresolved_signed u_signed ' +\n 'real_vector time_vector',\n literal:\n 'false true note warning error failure ' + // severity_level\n 'line text side width' // textio\n },\n illegal: '{',\n contains: [\n hljs.C_BLOCK_COMMENT_MODE, // VHDL-2008 block commenting.\n hljs.COMMENT('--', '$'),\n hljs.QUOTE_STRING_MODE,\n {\n className: 'number',\n begin: NUMBER_RE,\n relevance: 0\n },\n {\n className: 'string',\n begin: '\\'(U|X|0|1|Z|W|L|H|-)\\'',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n className: 'symbol',\n begin: '\\'[A-Za-z](_?[A-Za-z0-9])*',\n contains: [hljs.BACKSLASH_ESCAPE]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n lexemes: /[!#@\\w]+/,\n keywords: {\n keyword:\n // express version except: ! & * < = > !! # @ @@\n 'N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope '+\n 'cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc '+\n 'ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 '+\n 'profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor '+\n 'so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew '+\n 'tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ '+\n // full version\n 'Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload '+\n 'bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap '+\n 'cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor '+\n 'endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap '+\n 'imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview '+\n 'lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap '+\n 'nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext '+\n 'ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding '+\n 'scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace '+\n 'startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious '+'trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew '+\n 'vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank',\n built_in: //built in func\n 'synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv ' +\n 'complete_check add getwinposx getqflist getwinposy screencol ' +\n 'clearmatches empty extend getcmdpos mzeval garbagecollect setreg ' +\n 'ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable ' +\n 'shiftwidth max sinh isdirectory synID system inputrestore winline ' +\n 'atan visualmode inputlist tabpagewinnr round getregtype mapcheck ' +\n 'hasmapto histdel argidx findfile sha256 exists toupper getcmdline ' +\n 'taglist string getmatches bufnr strftime winwidth bufexists ' +\n 'strtrans tabpagebuflist setcmdpos remote_read printf setloclist ' +\n 'getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval ' +\n 'resolve libcallnr foldclosedend reverse filter has_key bufname ' +\n 'str2float strlen setline getcharmod setbufvar index searchpos ' +\n 'shellescape undofile foldclosed setqflist buflisted strchars str2nr ' +\n 'virtcol floor remove undotree remote_expr winheight gettabwinvar ' +\n 'reltime cursor tabpagenr finddir localtime acos getloclist search ' +\n 'tanh matchend rename gettabvar strdisplaywidth type abs py3eval ' +\n 'setwinvar tolower wildmenumode log10 spellsuggest bufloaded ' +\n 'synconcealed nextnonblank server2client complete settabwinvar ' +\n 'executable input wincol setmatches getftype hlID inputsave ' +\n 'searchpair or screenrow line settabvar histadd deepcopy strpart ' +\n 'remote_peek and eval getftime submatch screenchar winsaveview ' +\n 'matchadd mkdir screenattr getfontname libcall reltimestr getfsize ' +\n 'winnr invert pow getbufline byte2line soundfold repeat fnameescape ' +\n 'tagfiles sin strwidth spellbadword trunc maparg log lispindent ' +\n 'hostname setpos globpath remote_foreground getchar synIDattr ' +\n 'fnamemodify cscope_connection stridx winbufnr indent min ' +\n 'complete_add nr2char searchpairpos inputdialog values matchlist ' +\n 'items hlexists strridx browsedir expand fmod pathshorten line2byte ' +\n 'argc count getwinvar glob foldtextresult getreg foreground cosh ' +\n 'matchdelete has char2nr simplify histget searchdecl iconv ' +\n 'winrestcmd pumvisible writefile foldlevel haslocaldir keys cos ' +\n 'matchstr foldtext histnr tan tempname getcwd byteidx getbufvar ' +\n 'islocked escape eventhandler remote_send serverlist winrestview ' +\n 'synstack pyeval prevnonblank readfile cindent filereadable changenr ' +\n 'exp'\n },\n illegal: /;/,\n contains: [\n hljs.NUMBER_MODE,\n {\n className: 'string',\n begin: '\\'', end: '\\'',\n illegal: '\\\\n'\n },\n\n /*\n A double quote can start either a string or a line comment. Strings are\n ended before the end of a line by another double quote and can contain\n escaped double-quotes and post-escaped line breaks.\n\n Also, any double quote at the beginning of a line is a comment but we\n don't handle that properly at the moment: any double quote inside will\n turn them into a string. Handling it properly will require a smarter\n parser.\n */\n {\n className: 'string',\n begin: /\"(\\\\\"|\\n\\\\|[^\"\\n])*\"/\n },\n hljs.COMMENT('\"', '$'),\n\n {\n className: 'variable',\n begin: /[bwtglsav]:[\\w\\d_]*/\n },\n {\n className: 'function',\n beginKeywords: 'function function!', end: '$',\n relevance: 0,\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)'\n }\n ]\n },\n {\n className: 'symbol',\n begin: /<[\\w-]+>/\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n lexemes: '[.%]?' + hljs.IDENT_RE,\n keywords: {\n keyword:\n 'lock rep repe repz repne repnz xaquire xrelease bnd nobnd ' +\n 'aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63',\n built_in:\n // Instruction pointer\n 'ip eip rip ' +\n // 8-bit registers\n 'al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ' +\n // 16-bit registers\n 'ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w ' +\n // 32-bit registers\n 'eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d ' +\n // 64-bit registers\n 'rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 ' +\n // Segment registers\n 'cs ds es fs gs ss ' +\n // Floating point stack registers\n 'st st0 st1 st2 st3 st4 st5 st6 st7 ' +\n // MMX Registers\n 'mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 ' +\n // SSE registers\n 'xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 ' +\n 'xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ' +\n // AVX registers\n 'ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ' +\n 'ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 ' +\n // AVX-512F registers\n 'zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 ' +\n 'zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 ' +\n // AVX-512F mask registers\n 'k0 k1 k2 k3 k4 k5 k6 k7 ' +\n // Bound (MPX) register\n 'bnd0 bnd1 bnd2 bnd3 ' +\n // Special register\n 'cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 ' +\n // NASM altreg package\n 'r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b ' +\n 'r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d ' +\n 'r0h r1h r2h r3h ' +\n 'r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l ' +\n\n 'db dw dd dq dt ddq do dy dz ' +\n 'resb resw resd resq rest resdq reso resy resz ' +\n 'incbin equ times ' +\n 'byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr',\n\n meta:\n '%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif ' +\n '%if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep ' +\n '%endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment ' +\n '.nolist ' +\n '__FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ ' +\n '__UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend ' +\n 'align alignb sectalign daz nodaz up down zero default option assume public ' +\n\n 'bits use16 use32 use64 default section segment absolute extern global common cpu float ' +\n '__utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ ' +\n '__float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ ' +\n '__Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e ' +\n 'float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__'\n },\n contains: [\n hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n ),\n {\n className: 'number',\n variants: [\n // Float number and x87 BCD\n {\n begin: '\\\\b(?:([0-9][0-9_]*)?\\\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|' +\n '(0[Xx])?[0-9][0-9_]*\\\\.?[0-9_]*(?:[pP](?:[+-]?[0-9_]+)?)?)\\\\b',\n relevance: 0\n },\n\n // Hex number in $\n { begin: '\\\\$[0-9][0-9A-Fa-f]*', relevance: 0 },\n\n // Number in H,D,T,Q,O,B,Y suffix\n { begin: '\\\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\\\b' },\n\n // Number in X,D,T,Q,O,B,Y prefix\n { begin: '\\\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\\\b'}\n ]\n },\n // Double quote string\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n variants: [\n // Single-quoted string\n { begin: '\\'', end: '[^\\\\\\\\]\\'' },\n // Backquoted string\n { begin: '`', end: '[^\\\\\\\\]`' }\n ],\n relevance: 0\n },\n {\n className: 'symbol',\n variants: [\n // Global label and local label\n { begin: '^\\\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\\\s+label)' },\n // Macro-local label\n { begin: '^\\\\s*%%[A-Za-z0-9_$#@~.?]*:' }\n ],\n relevance: 0\n },\n // Macro parameter\n {\n className: 'subst',\n begin: '%[0-9]+',\n relevance: 0\n },\n // Macro parameter\n {\n className: 'subst',\n begin: '%!\\S+',\n relevance: 0\n },\n {\n className: 'meta',\n begin: /^\\s*\\.[\\w_-]+/\n }\n ]\n };\n};","module.exports = function(hljs) {\n var BUILTIN_MODULES =\n 'ObjectLoader Animate MovieCredits Slides Filters Shading Materials LensFlare Mapping VLCAudioVideo ' +\n 'StereoDecoder PointCloud NetworkAccess RemoteControl RegExp ChromaKey Snowfall NodeJS Speech Charts';\n\n var XL_KEYWORDS = {\n keyword:\n 'if then else do while until for loop import with is as where when by data constant ' +\n 'integer real text name boolean symbol infix prefix postfix block tree',\n literal:\n 'true false nil',\n built_in:\n 'in mod rem and or xor not abs sign floor ceil sqrt sin cos tan asin ' +\n 'acos atan exp expm1 log log2 log10 log1p pi at text_length text_range ' +\n 'text_find text_replace contains page slide basic_slide title_slide ' +\n 'title subtitle fade_in fade_out fade_at clear_color color line_color ' +\n 'line_width texture_wrap texture_transform texture scale_?x scale_?y ' +\n 'scale_?z? translate_?x translate_?y translate_?z? rotate_?x rotate_?y ' +\n 'rotate_?z? rectangle circle ellipse sphere path line_to move_to ' +\n 'quad_to curve_to theme background contents locally time mouse_?x ' +\n 'mouse_?y mouse_buttons ' +\n BUILTIN_MODULES\n };\n\n var DOUBLE_QUOTE_TEXT = {\n className: 'string',\n begin: '\"', end: '\"', illegal: '\\\\n'\n };\n var SINGLE_QUOTE_TEXT = {\n className: 'string',\n begin: '\\'', end: '\\'', illegal: '\\\\n'\n };\n var LONG_TEXT = {\n className: 'string',\n begin: '<<', end: '>>'\n };\n var BASED_NUMBER = {\n className: 'number',\n begin: '[0-9]+#[0-9A-Z_]+(\\\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?'\n };\n var IMPORT = {\n beginKeywords: 'import', end: '$',\n keywords: XL_KEYWORDS,\n contains: [DOUBLE_QUOTE_TEXT]\n };\n var FUNCTION_DEFINITION = {\n className: 'function',\n begin: /[a-z][^\\n]*->/, returnBegin: true, end: /->/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {starts: {\n endsWithParent: true,\n keywords: XL_KEYWORDS\n }})\n ]\n };\n return {\n aliases: ['tao'],\n lexemes: /[a-zA-Z][a-zA-Z0-9_?]*/,\n keywords: XL_KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n DOUBLE_QUOTE_TEXT,\n SINGLE_QUOTE_TEXT,\n LONG_TEXT,\n FUNCTION_DEFINITION,\n IMPORT,\n BASED_NUMBER,\n hljs.NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = 'for let if while then else return where group by xquery encoding version' +\n 'module namespace boundary-space preserve strip default collation base-uri ordering' +\n 'copy-namespaces order declare import schema namespace function option in allowing empty' +\n 'at tumbling window sliding window start when only end when previous next stable ascending' +\n 'descending empty greatest least some every satisfies switch case typeswitch try catch and' +\n 'or to union intersect instance of treat as castable cast map array delete insert into' +\n 'replace value rename copy modify update';\n var LITERAL = 'false true xs:string xs:integer element item xs:date xs:datetime xs:float xs:double xs:decimal QName xs:anyURI xs:long xs:int xs:short xs:byte attribute';\n var VAR = {\n begin: /\\$[a-zA-Z0-9\\-]+/\n };\n\n var NUMBER = {\n className: 'number',\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n relevance: 0\n };\n\n var STRING = {\n className: 'string',\n variants: [\n {begin: /\"/, end: /\"/, contains: [{begin: /\"\"/, relevance: 0}]},\n {begin: /'/, end: /'/, contains: [{begin: /''/, relevance: 0}]}\n ]\n };\n\n var ANNOTATION = {\n className: 'meta',\n begin: '%\\\\w+'\n };\n\n var COMMENT = {\n className: 'comment',\n begin: '\\\\(:', end: ':\\\\)',\n relevance: 10,\n contains: [\n {\n className: 'doctag', begin: '@\\\\w+'\n }\n ]\n };\n\n var METHOD = {\n begin: '{', end: '}'\n };\n\n var CONTAINS = [\n VAR,\n STRING,\n NUMBER,\n COMMENT,\n ANNOTATION,\n METHOD\n ];\n METHOD.contains = CONTAINS;\n\n\n return {\n aliases: ['xpath', 'xq'],\n case_insensitive: false,\n lexemes: /[a-zA-Z\\$][a-zA-Z0-9_:\\-]*/,\n illegal: /(proc)|(abstract)|(extends)|(until)|(#)/,\n keywords: {\n keyword: KEYWORDS,\n literal: LITERAL\n },\n contains: CONTAINS\n };\n};","module.exports = function(hljs) {\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {\n begin: 'b\"', end: '\"'\n },\n {\n begin: 'b\\'', end: '\\''\n },\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null})\n ]\n };\n var NUMBER = {variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]};\n return {\n aliases: ['zep'],\n case_insensitive: true,\n keywords:\n 'and include_once list abstract global private echo interface as static endswitch ' +\n 'array null if endwhile or const for endforeach self var let while isset public ' +\n 'protected exit foreach throw elseif include __FILE__ empty require_once do xor ' +\n 'return parent clone use __CLASS__ __LINE__ else break print eval new ' +\n 'catch __METHOD__ case exception default die require __FUNCTION__ ' +\n 'enddeclare final try switch continue endfor endif declare unset true false ' +\n 'trait goto instanceof insteadof __DIR__ __NAMESPACE__ ' +\n 'yield finally int uint long ulong char uchar double float bool boolean string' +\n 'likely unlikely',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT(\n '/\\\\*',\n '\\\\*/',\n {\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.COMMENT(\n '__halt_compiler.+?;',\n false,\n {\n endsWithParent: true,\n keywords: '__halt_compiler',\n lexemes: hljs.UNDERSCORE_IDENT_RE\n }\n ),\n {\n className: 'string',\n begin: '<<<[\\'\"]?\\\\w+[\\'\"]?$', end: '^\\\\w+;',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n // swallow composed identifiers to avoid parsing them as keywords\n begin: /(::|->)+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/\n },\n {\n className: 'function',\n beginKeywords: 'function', end: /[;{]/, excludeEnd: true,\n illegal: '\\\\$|\\\\[|%',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n contains: [\n 'self',\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER\n ]\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface', end: '{', excludeEnd: true,\n illegal: /[:\\(\\$\"]/,\n contains: [\n {beginKeywords: 'extends implements'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n beginKeywords: 'namespace', end: ';',\n illegal: /[\\.']/,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n beginKeywords: 'use', end: ';',\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n begin: '=>' // No markup, just a relevance booster\n },\n STRING,\n NUMBER\n ]\n };\n};","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _InteractiveAuthEntryComponents = require('../views/login/InteractiveAuthEntryComponents');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar InteractiveAuth = _matrixJsSdk2.default.InteractiveAuth; /*\n Copyright 2017 Vector Creations Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = _react2.default.createClass({\n displayName: 'InteractiveAuth',\n\n propTypes: {\n // matrix client to use for UI auth requests\n matrixClient: _propTypes2.default.object.isRequired,\n\n // response from initial request. If not supplied, will do a request on\n // mount.\n authData: _propTypes2.default.shape({\n flows: _propTypes2.default.array,\n params: _propTypes2.default.object,\n session: _propTypes2.default.string\n }),\n\n // callback\n makeRequest: _propTypes2.default.func.isRequired,\n\n // callback called when the auth process has finished,\n // successfully or unsuccessfully.\n // @param {bool} status True if the operation requiring\n // auth was completed sucessfully, false if canceled.\n // @param {object} result The result of the authenticated call\n // if successful, otherwise the error object\n // @param {object} extra Additional information about the UI Auth\n // process:\n // * emailSid {string} If email auth was performed, the sid of\n // the auth session.\n // * clientSecret {string} The client secret used in auth\n // sessions with the ID server.\n onAuthFinished: _propTypes2.default.func.isRequired,\n\n // Inputs provided by the user to the auth process\n // and used by various stages. As passed to js-sdk\n // interactive-auth\n inputs: _propTypes2.default.object,\n\n // As js-sdk interactive-auth\n makeRegistrationUrl: _propTypes2.default.func,\n sessionId: _propTypes2.default.string,\n clientSecret: _propTypes2.default.string,\n emailSid: _propTypes2.default.string,\n\n // If true, poll to see if the auth flow has been completed\n // out-of-band\n poll: _propTypes2.default.bool\n },\n\n getInitialState: function getInitialState() {\n return {\n authStage: null,\n busy: false,\n errorText: null,\n stageErrorText: null,\n submitButtonEnabled: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this._unmounted = false;\n this._authLogic = new InteractiveAuth({\n authData: this.props.authData,\n doRequest: this._requestCallback,\n inputs: this.props.inputs,\n stateUpdated: this._authStateUpdated,\n matrixClient: this.props.matrixClient,\n sessionId: this.props.sessionId,\n clientSecret: this.props.clientSecret,\n emailSid: this.props.emailSid\n });\n\n this._authLogic.attemptAuth().then(function (result) {\n var extra = {\n emailSid: _this._authLogic.getEmailSid(),\n clientSecret: _this._authLogic.getClientSecret()\n };\n _this.props.onAuthFinished(true, result, extra);\n }).catch(function (error) {\n _this.props.onAuthFinished(false, error);\n console.error(\"Error during user-interactive auth:\", error);\n if (_this._unmounted) {\n return;\n }\n\n var msg = error.message || error.toString();\n _this.setState({\n errorText: msg\n });\n }).done();\n\n this._intervalId = null;\n if (this.props.poll) {\n this._intervalId = setInterval(function () {\n _this._authLogic.poll();\n }, 2000);\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n\n if (this._intervalId !== null) {\n clearInterval(this._intervalId);\n }\n },\n\n _authStateUpdated: function _authStateUpdated(stageType, stageState) {\n var _this2 = this;\n\n var oldStage = this.state.authStage;\n this.setState({\n authStage: stageType,\n stageState: stageState,\n errorText: stageState.error\n }, function () {\n if (oldStage != stageType) _this2._setFocus();\n });\n },\n\n _requestCallback: function _requestCallback(auth, background) {\n var _this3 = this;\n\n var makeRequestPromise = this.props.makeRequest(auth);\n\n // if it's a background request, just do it: we don't want\n // it to affect the state of our UI.\n if (background) return makeRequestPromise;\n\n // otherwise, manage the state of the spinner and error messages\n this.setState({\n busy: true,\n errorText: null,\n stageErrorText: null\n });\n return makeRequestPromise.finally(function () {\n if (_this3._unmounted) {\n return;\n }\n _this3.setState({\n busy: false\n });\n });\n },\n\n _setFocus: function _setFocus() {\n if (this.refs.stageComponent && this.refs.stageComponent.focus) {\n this.refs.stageComponent.focus();\n }\n },\n\n _submitAuthDict: function _submitAuthDict(authData) {\n this._authLogic.submitAuthDict(authData);\n },\n\n _renderCurrentStage: function _renderCurrentStage() {\n var stage = this.state.authStage;\n if (!stage) return null;\n\n var StageComponent = (0, _InteractiveAuthEntryComponents.getEntryComponentForLoginType)(stage);\n return _react2.default.createElement(StageComponent, { ref: 'stageComponent',\n loginType: stage,\n matrixClient: this.props.matrixClient,\n authSessionId: this._authLogic.getSessionId(),\n clientSecret: this._authLogic.getClientSecret(),\n stageParams: this._authLogic.getStageParams(stage),\n submitAuthDict: this._submitAuthDict,\n errorText: this.state.stageErrorText,\n busy: this.state.busy,\n inputs: this.props.inputs,\n stageState: this.state.stageState,\n fail: this._onAuthStageFailed,\n setEmailSid: this._setEmailSid,\n makeRegistrationUrl: this.props.makeRegistrationUrl\n });\n },\n\n _onAuthStageFailed: function _onAuthStageFailed(e) {\n this.props.onAuthFinished(false, e);\n },\n _setEmailSid: function _setEmailSid(sid) {\n this._authLogic.setEmailSid(sid);\n },\n\n render: function render() {\n var error = null;\n if (this.state.errorText) {\n error = _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.errorText\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n this._renderCurrentStage(),\n error\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=InteractiveAuth.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _Keyboard = require('../../Keyboard');\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _VectorConferenceHandler = require('../../VectorConferenceHandler');\n\nvar _VectorConferenceHandler2 = _interopRequireDefault(_VectorConferenceHandler);\n\nvar _SettingsStore = require('../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LeftPanel = _react2.default.createClass({\n displayName: 'LeftPanel',\n\n // NB. If you add props, don't forget to update\n // shouldComponentUpdate!\n propTypes: {\n collapsed: _propTypes2.default.bool.isRequired\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getInitialState: function getInitialState() {\n return {\n searchFilter: ''\n };\n },\n\n componentWillMount: function componentWillMount() {\n this.focusedElement = null;\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n // MatrixChat will update whenever the user switches\n // rooms, but propagating this change all the way down\n // the react tree is quite slow, so we cut this off\n // here. The RoomTiles listen for the room change\n // events themselves to know when to update.\n // We just need to update if any of these things change.\n if (this.props.collapsed !== nextProps.collapsed || this.props.disabled !== nextProps.disabled) {\n return true;\n }\n\n if (this.state.searchFilter !== nextState.searchFilter) {\n return true;\n }\n\n return false;\n },\n\n _onFocus: function _onFocus(ev) {\n this.focusedElement = ev.target;\n },\n\n _onBlur: function _onBlur(ev) {\n this.focusedElement = null;\n },\n\n _onKeyDown: function _onKeyDown(ev) {\n if (!this.focusedElement) return;\n var handled = true;\n\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.TAB:\n this._onMoveFocus(ev.shiftKey);\n break;\n case _Keyboard.KeyCode.UP:\n this._onMoveFocus(true);\n break;\n case _Keyboard.KeyCode.DOWN:\n this._onMoveFocus(false);\n break;\n case _Keyboard.KeyCode.ENTER:\n this._onMoveFocus(false);\n if (this.focusedElement) {\n this.focusedElement.click();\n }\n break;\n default:\n handled = false;\n }\n\n if (handled) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n },\n\n _onMoveFocus: function _onMoveFocus(up) {\n var element = this.focusedElement;\n\n // unclear why this isn't needed\n // var descending = (up == this.focusDirection) ? this.focusDescending : !this.focusDescending;\n // this.focusDirection = up;\n\n var descending = false; // are we currently descending or ascending through the DOM tree?\n var classes = void 0;\n\n do {\n var child = up ? element.lastElementChild : element.firstElementChild;\n var sibling = up ? element.previousElementSibling : element.nextElementSibling;\n\n if (descending) {\n if (child) {\n element = child;\n } else if (sibling) {\n element = sibling;\n } else {\n descending = false;\n element = element.parentElement;\n }\n } else {\n if (sibling) {\n element = sibling;\n descending = true;\n } else {\n element = element.parentElement;\n }\n }\n\n if (element) {\n classes = element.classList;\n if (classes.contains(\"mx_LeftPanel\")) {\n // we hit the top\n element = up ? element.lastElementChild : element.firstElementChild;\n descending = true;\n }\n }\n } while (element && !(classes.contains(\"mx_RoomTile\") || classes.contains(\"mx_SearchBox_search\") || classes.contains(\"mx_RoomSubList_ellipsis\")));\n\n if (element) {\n element.focus();\n this.focusedElement = element;\n this.focusedDescending = descending;\n }\n },\n\n onHideClick: function onHideClick() {\n _dispatcher2.default.dispatch({\n action: 'hide_left_panel'\n });\n },\n\n onSearch: function onSearch(term) {\n this.setState({ searchFilter: term });\n },\n\n collectRoomList: function collectRoomList(ref) {\n this._roomList = ref;\n },\n\n render: function render() {\n var RoomList = _index2.default.getComponent('rooms.RoomList');\n var TagPanel = _index2.default.getComponent('structures.TagPanel');\n var BottomLeftMenu = _index2.default.getComponent('structures.BottomLeftMenu');\n var CallPreview = _index2.default.getComponent('voip.CallPreview');\n\n var SearchBox = _index2.default.getComponent('structures.SearchBox');\n var topBox = _react2.default.createElement(SearchBox, { collapsed: this.props.collapsed, onSearch: this.onSearch });\n\n var classes = (0, _classnames2.default)(\"mx_LeftPanel\", {\n \"collapsed\": this.props.collapsed\n });\n\n var tagPanelEnabled = !_SettingsStore2.default.getValue(\"TagPanel.disableTagPanel\");\n var tagPanel = tagPanelEnabled ? _react2.default.createElement(TagPanel, null) : _react2.default.createElement('div', null);\n\n var containerClasses = (0, _classnames2.default)(\"mx_LeftPanel_container\", \"mx_fadable\", {\n \"mx_LeftPanel_container_collapsed\": this.props.collapsed,\n \"mx_LeftPanel_container_hasTagPanel\": tagPanelEnabled,\n \"mx_fadable_faded\": this.props.disabled\n });\n\n return _react2.default.createElement(\n 'div',\n { className: containerClasses },\n tagPanel,\n _react2.default.createElement(\n 'aside',\n { className: classes, onKeyDown: this._onKeyDown, onFocus: this._onFocus, onBlur: this._onBlur },\n topBox,\n _react2.default.createElement(CallPreview, { ConferenceHandler: _VectorConferenceHandler2.default }),\n _react2.default.createElement(RoomList, {\n ref: this.collectRoomList,\n collapsed: this.props.collapsed,\n searchFilter: this.state.searchFilter,\n ConferenceHandler: _VectorConferenceHandler2.default }),\n _react2.default.createElement(BottomLeftMenu, { collapsed: this.props.collapsed })\n )\n );\n }\n});\n\nmodule.exports = LeftPanel;\n//# sourceMappingURL=LeftPanel.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _set = require('babel-runtime/core-js/set');\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _bluebird = require('bluebird');\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar Matrix = _interopRequireWildcard(_matrixJsSdk);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactBeautifulDnd = require('react-beautiful-dnd');\n\nvar _Keyboard = require('../../Keyboard');\n\nvar _Notifier = require('../../Notifier');\n\nvar _Notifier2 = _interopRequireDefault(_Notifier);\n\nvar _PageTypes = require('../../PageTypes');\n\nvar _PageTypes2 = _interopRequireDefault(_PageTypes);\n\nvar _CallMediaHandler = require('../../CallMediaHandler');\n\nvar _CallMediaHandler2 = _interopRequireDefault(_CallMediaHandler);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _SessionStore = require('../../stores/SessionStore');\n\nvar _SessionStore2 = _interopRequireDefault(_SessionStore);\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _SettingsStore = require('../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _RoomListStore = require('../../stores/RoomListStore');\n\nvar _RoomListStore2 = _interopRequireDefault(_RoomListStore);\n\nvar _TagOrderActions = require('../../actions/TagOrderActions');\n\nvar _TagOrderActions2 = _interopRequireDefault(_TagOrderActions);\n\nvar _RoomListActions = require('../../actions/RoomListActions');\n\nvar _RoomListActions2 = _interopRequireDefault(_RoomListActions);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// We need to fetch each pinned message individually (if we don't already have it)\n// so each pinned message may trigger a request. Limit the number per room for sanity.\n// NB. this is just for server notices rather than pinned messages in general.\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MAX_PINNED_NOTICES_PER_ROOM = 2;\n\n/**\n * This is what our MatrixChat shows when we are logged in. The precise view is\n * determined by the page_type property.\n *\n * Currently it's very tightly coupled with MatrixChat. We should try to do\n * something about that.\n *\n * Components mounted below us can access the matrix client via the react context.\n */\nvar LoggedInView = _react2.default.createClass({\n displayName: 'LoggedInView',\n\n propTypes: {\n matrixClient: _propTypes2.default.instanceOf(Matrix.MatrixClient).isRequired,\n page_type: _propTypes2.default.string.isRequired,\n onRoomCreated: _propTypes2.default.func,\n onUserSettingsClose: _propTypes2.default.func,\n\n // Called with the credentials of a registered user (if they were a ROU that\n // transitioned to PWLU)\n onRegistered: _propTypes2.default.func,\n\n teamToken: _propTypes2.default.string\n\n // and lots and lots of other stuff.\n },\n\n childContextTypes: {\n matrixClient: _propTypes2.default.instanceOf(Matrix.MatrixClient),\n authCache: _propTypes2.default.object\n },\n\n getChildContext: function getChildContext() {\n return {\n matrixClient: this._matrixClient,\n authCache: {\n auth: {},\n lastUpdate: 0\n }\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n // use compact timeline view\n useCompactLayout: _SettingsStore2.default.getValue('useCompactLayout'),\n // any currently active server notice events\n serverNoticeEvents: []\n };\n },\n\n componentWillMount: function componentWillMount() {\n // stash the MatrixClient in case we log out before we are unmounted\n this._matrixClient = this.props.matrixClient;\n\n _CallMediaHandler2.default.loadDevices();\n\n document.addEventListener('keydown', this._onKeyDown);\n\n this._sessionStore = _SessionStore2.default;\n this._sessionStoreToken = this._sessionStore.addListener(this._setStateFromSessionStore);\n this._setStateFromSessionStore();\n\n this._updateServerNoticeEvents();\n\n this._matrixClient.on(\"accountData\", this.onAccountData);\n this._matrixClient.on(\"sync\", this.onSync);\n this._matrixClient.on(\"RoomState.events\", this.onRoomStateEvents);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n document.removeEventListener('keydown', this._onKeyDown);\n this._matrixClient.removeListener(\"accountData\", this.onAccountData);\n this._matrixClient.removeListener(\"sync\", this.onSync);\n this._matrixClient.removeListener(\"RoomState.events\", this.onRoomStateEvents);\n if (this._sessionStoreToken) {\n this._sessionStoreToken.remove();\n }\n },\n\n // Child components assume that the client peg will not be null, so give them some\n // sort of assurance here by only allowing a re-render if the client is truthy.\n //\n // This is required because `LoggedInView` maintains its own state and if this state\n // updates after the client peg has been made null (during logout), then it will\n // attempt to re-render and the children will throw errors.\n shouldComponentUpdate: function shouldComponentUpdate() {\n return Boolean(_MatrixClientPeg2.default.get());\n },\n\n canResetTimelineInRoom: function canResetTimelineInRoom(roomId) {\n if (!this.refs.roomView) {\n return true;\n }\n return this.refs.roomView.canResetTimeline();\n },\n\n _setStateFromSessionStore: function _setStateFromSessionStore() {\n this.setState({\n userHasGeneratedPassword: Boolean(this._sessionStore.getCachedPassword())\n });\n },\n\n\n onAccountData: function onAccountData(event) {\n if (event.getType() === \"im.vector.web.settings\") {\n this.setState({\n useCompactLayout: event.getContent().useCompactLayout\n });\n }\n if (event.getType() === \"m.ignored_user_list\") {\n _dispatcher2.default.dispatch({ action: \"ignore_state_changed\" });\n }\n },\n\n onSync: function onSync(syncState, oldSyncState, data) {\n var oldErrCode = this.state.syncErrorData && this.state.syncErrorData.error && this.state.syncErrorData.error.errcode;\n var newErrCode = data && data.error && data.error.errcode;\n if (syncState === oldSyncState && oldErrCode === newErrCode) return;\n\n if (syncState === 'ERROR') {\n this.setState({\n syncErrorData: data\n });\n } else {\n this.setState({\n syncErrorData: null\n });\n }\n\n if (oldSyncState === 'PREPARED' && syncState === 'SYNCING') {\n this._updateServerNoticeEvents();\n }\n },\n\n onRoomStateEvents: function onRoomStateEvents(ev, state) {\n var roomLists = _RoomListStore2.default.getRoomLists();\n if (roomLists['m.server_notice'] && roomLists['m.server_notice'].some(function (r) {\n return r.roomId === ev.getRoomId();\n })) {\n this._updateServerNoticeEvents();\n }\n },\n\n _updateServerNoticeEvents: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this = this;\n\n var roomLists, pinnedEvents, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, room, pinStateEvent, pinnedEventIds, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _loop, _iterator2, _step2;\n\n return _regenerator2.default.wrap(function _callee$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n roomLists = _RoomListStore2.default.getRoomLists();\n\n if (roomLists['m.server_notice']) {\n _context2.next = 3;\n break;\n }\n\n return _context2.abrupt('return', []);\n\n case 3:\n pinnedEvents = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context2.prev = 7;\n _iterator = (0, _getIterator3.default)(roomLists['m.server_notice']);\n\n case 9:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context2.next = 43;\n break;\n }\n\n room = _step.value;\n pinStateEvent = room.currentState.getStateEvents(\"m.room.pinned_events\", \"\");\n\n if (!(!pinStateEvent || !pinStateEvent.getContent().pinned)) {\n _context2.next = 14;\n break;\n }\n\n return _context2.abrupt('continue', 40);\n\n case 14:\n pinnedEventIds = pinStateEvent.getContent().pinned.slice(0, MAX_PINNED_NOTICES_PER_ROOM);\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context2.prev = 18;\n _loop = /*#__PURE__*/_regenerator2.default.mark(function _loop() {\n var eventId, timeline, ev;\n return _regenerator2.default.wrap(function _loop$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n eventId = _step2.value;\n _context.next = 3;\n return (0, _bluebird.resolve)(_this._matrixClient.getEventTimeline(room.getUnfilteredTimelineSet(), eventId, 0));\n\n case 3:\n timeline = _context.sent;\n ev = timeline.getEvents().find(function (ev) {\n return ev.getId() === eventId;\n });\n\n if (ev) pinnedEvents.push(ev);\n\n case 6:\n case 'end':\n return _context.stop();\n }\n }\n }, _loop, _this);\n });\n _iterator2 = (0, _getIterator3.default)(pinnedEventIds);\n\n case 21:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context2.next = 26;\n break;\n }\n\n return _context2.delegateYield(_loop(), 't0', 23);\n\n case 23:\n _iteratorNormalCompletion2 = true;\n _context2.next = 21;\n break;\n\n case 26:\n _context2.next = 32;\n break;\n\n case 28:\n _context2.prev = 28;\n _context2.t1 = _context2['catch'](18);\n _didIteratorError2 = true;\n _iteratorError2 = _context2.t1;\n\n case 32:\n _context2.prev = 32;\n _context2.prev = 33;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n\n case 35:\n _context2.prev = 35;\n\n if (!_didIteratorError2) {\n _context2.next = 38;\n break;\n }\n\n throw _iteratorError2;\n\n case 38:\n return _context2.finish(35);\n\n case 39:\n return _context2.finish(32);\n\n case 40:\n _iteratorNormalCompletion = true;\n _context2.next = 9;\n break;\n\n case 43:\n _context2.next = 49;\n break;\n\n case 45:\n _context2.prev = 45;\n _context2.t2 = _context2['catch'](7);\n _didIteratorError = true;\n _iteratorError = _context2.t2;\n\n case 49:\n _context2.prev = 49;\n _context2.prev = 50;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 52:\n _context2.prev = 52;\n\n if (!_didIteratorError) {\n _context2.next = 55;\n break;\n }\n\n throw _iteratorError;\n\n case 55:\n return _context2.finish(52);\n\n case 56:\n return _context2.finish(49);\n\n case 57:\n this.setState({\n serverNoticeEvents: pinnedEvents\n });\n\n case 58:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee, this, [[7, 45, 49, 57], [18, 28, 32, 40], [33,, 35, 39], [50,, 52, 56]]);\n }));\n\n function _updateServerNoticeEvents() {\n return _ref.apply(this, arguments);\n }\n\n return _updateServerNoticeEvents;\n }(),\n\n _onKeyDown: function _onKeyDown(ev) {\n /*\n // Remove this for now as ctrl+alt = alt-gr so this breaks keyboards which rely on alt-gr for numbers\n // Will need to find a better meta key if anyone actually cares about using this.\n if (ev.altKey && ev.ctrlKey && ev.keyCode > 48 && ev.keyCode < 58) {\n dis.dispatch({\n action: 'view_indexed_room',\n roomIndex: ev.keyCode - 49,\n });\n ev.stopPropagation();\n ev.preventDefault();\n return;\n }\n */\n\n var handled = false;\n var ctrlCmdOnly = (0, _Keyboard.isOnlyCtrlOrCmdKeyEvent)(ev);\n\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.UP:\n case _Keyboard.KeyCode.DOWN:\n if (ev.altKey && !ev.shiftKey && !ev.ctrlKey && !ev.metaKey) {\n var action = ev.keyCode == _Keyboard.KeyCode.UP ? 'view_prev_room' : 'view_next_room';\n _dispatcher2.default.dispatch({ action: action });\n handled = true;\n }\n break;\n\n case _Keyboard.KeyCode.PAGE_UP:\n case _Keyboard.KeyCode.PAGE_DOWN:\n if (!ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n this._onScrollKeyPressed(ev);\n handled = true;\n }\n break;\n\n case _Keyboard.KeyCode.HOME:\n case _Keyboard.KeyCode.END:\n if (ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n this._onScrollKeyPressed(ev);\n handled = true;\n }\n break;\n case _Keyboard.KeyCode.KEY_K:\n if (ctrlCmdOnly) {\n _dispatcher2.default.dispatch({\n action: 'focus_room_filter'\n });\n handled = true;\n }\n break;\n }\n\n if (handled) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n },\n\n /** dispatch a page-up/page-down/etc to the appropriate component */\n _onScrollKeyPressed: function _onScrollKeyPressed(ev) {\n if (this.refs.roomView) {\n this.refs.roomView.handleScrollKey(ev);\n } else if (this.refs.roomDirectory) {\n this.refs.roomDirectory.handleScrollKey(ev);\n }\n },\n\n _onDragEnd: function _onDragEnd(result) {\n // Dragged to an invalid destination, not onto a droppable\n if (!result.destination) {\n return;\n }\n\n var dest = result.destination.droppableId;\n\n if (dest === 'tag-panel-droppable') {\n // Could be \"GroupTile +groupId:domain\"\n var draggableId = result.draggableId.split(' ').pop();\n\n // Dispatch synchronously so that the TagPanel receives an\n // optimistic update from TagOrderStore before the previous\n // state is shown.\n _dispatcher2.default.dispatch(_TagOrderActions2.default.moveTag(this._matrixClient, draggableId, result.destination.index), true);\n } else if (dest.startsWith('room-sub-list-droppable_')) {\n this._onRoomTileEndDrag(result);\n }\n },\n\n _onRoomTileEndDrag: function _onRoomTileEndDrag(result) {\n var newTag = result.destination.droppableId.split('_')[1];\n var prevTag = result.source.droppableId.split('_')[1];\n if (newTag === 'undefined') newTag = undefined;\n if (prevTag === 'undefined') prevTag = undefined;\n\n var roomId = result.draggableId.split('_')[1];\n\n var oldIndex = result.source.index;\n var newIndex = result.destination.index;\n\n _dispatcher2.default.dispatch(_RoomListActions2.default.tagRoom(this._matrixClient, this._matrixClient.getRoom(roomId), prevTag, newTag, oldIndex, newIndex), true);\n },\n\n _onMouseDown: function _onMouseDown(ev) {\n // When the panels are disabled, clicking on them results in a mouse event\n // which bubbles to certain elements in the tree. When this happens, close\n // any settings page that is currently open (user/room/group).\n if (this.props.leftDisabled && this.props.rightDisabled) {\n var targetClasses = new _set2.default(ev.target.className.split(' '));\n if (targetClasses.has('mx_MatrixChat') || targetClasses.has('mx_MatrixChat_middlePanel') || targetClasses.has('mx_RoomView')) {\n this.setState({\n mouseDown: {\n x: ev.pageX,\n y: ev.pageY\n }\n });\n }\n }\n },\n\n _onMouseUp: function _onMouseUp(ev) {\n if (!this.state.mouseDown) return;\n\n var deltaX = ev.pageX - this.state.mouseDown.x;\n var deltaY = ev.pageY - this.state.mouseDown.y;\n var distance = Math.sqrt(deltaX * deltaX + (deltaY + deltaY));\n var maxRadius = 5; // People shouldn't be straying too far, hopefully\n\n // Note: we track how far the user moved their mouse to help\n // combat against https://github.com/vector-im/riot-web/issues/7158\n\n if (distance < maxRadius) {\n // This is probably a real click, and not a drag\n _dispatcher2.default.dispatch({ action: 'close_settings' });\n }\n\n // Always clear the mouseDown state to ensure we don't accidentally\n // use stale values due to the mouseDown checks.\n this.setState({ mouseDown: null });\n },\n\n render: function render() {\n var LeftPanel = _index2.default.getComponent('structures.LeftPanel');\n var RightPanel = _index2.default.getComponent('structures.RightPanel');\n var RoomView = _index2.default.getComponent('structures.RoomView');\n var UserSettings = _index2.default.getComponent('structures.UserSettings');\n var CreateRoom = _index2.default.getComponent('structures.CreateRoom');\n var RoomDirectory = _index2.default.getComponent('structures.RoomDirectory');\n var HomePage = _index2.default.getComponent('structures.HomePage');\n var GroupView = _index2.default.getComponent('structures.GroupView');\n var MyGroups = _index2.default.getComponent('structures.MyGroups');\n var MatrixToolbar = _index2.default.getComponent('globals.MatrixToolbar');\n var CookieBar = _index2.default.getComponent('globals.CookieBar');\n var NewVersionBar = _index2.default.getComponent('globals.NewVersionBar');\n var UpdateCheckBar = _index2.default.getComponent('globals.UpdateCheckBar');\n var PasswordNagBar = _index2.default.getComponent('globals.PasswordNagBar');\n var ServerLimitBar = _index2.default.getComponent('globals.ServerLimitBar');\n\n var page_element = void 0;\n var right_panel = '';\n\n switch (this.props.page_type) {\n case _PageTypes2.default.RoomView:\n page_element = _react2.default.createElement(RoomView, {\n ref: 'roomView',\n autoJoin: this.props.autoJoin,\n onRegistered: this.props.onRegistered,\n thirdPartyInvite: this.props.thirdPartyInvite,\n oobData: this.props.roomOobData,\n eventPixelOffset: this.props.initialEventPixelOffset,\n key: this.props.currentRoomId || 'roomview',\n disabled: this.props.middleDisabled,\n collapsedRhs: this.props.collapseRhs,\n ConferenceHandler: this.props.ConferenceHandler\n });\n if (!this.props.collapseRhs) {\n right_panel = _react2.default.createElement(RightPanel, { roomId: this.props.currentRoomId, disabled: this.props.rightDisabled });\n }\n break;\n\n case _PageTypes2.default.UserSettings:\n page_element = _react2.default.createElement(UserSettings, {\n onClose: this.props.onCloseAllSettings,\n brand: this.props.config.brand,\n referralBaseUrl: this.props.config.referralBaseUrl,\n teamToken: this.props.teamToken\n });\n if (!this.props.collapseRhs) right_panel = _react2.default.createElement(RightPanel, { disabled: this.props.rightDisabled });\n break;\n\n case _PageTypes2.default.MyGroups:\n page_element = _react2.default.createElement(MyGroups, null);\n break;\n\n case _PageTypes2.default.CreateRoom:\n page_element = _react2.default.createElement(CreateRoom, {\n onRoomCreated: this.props.onRoomCreated,\n collapsedRhs: this.props.collapseRhs\n });\n if (!this.props.collapseRhs) right_panel = _react2.default.createElement(RightPanel, { disabled: this.props.rightDisabled });\n break;\n\n case _PageTypes2.default.RoomDirectory:\n page_element = _react2.default.createElement(RoomDirectory, {\n ref: 'roomDirectory',\n config: this.props.config.roomDirectory\n });\n break;\n\n case _PageTypes2.default.HomePage:\n {\n // If team server config is present, pass the teamServerURL. props.teamToken\n // must also be set for the team page to be displayed, otherwise the\n // welcomePageUrl is used (which might be undefined).\n var teamServerUrl = this.props.config.teamServerConfig ? this.props.config.teamServerConfig.teamServerURL : null;\n\n page_element = _react2.default.createElement(HomePage, {\n teamServerUrl: teamServerUrl,\n teamToken: this.props.teamToken,\n homePageUrl: this.props.config.welcomePageUrl\n });\n }\n break;\n\n case _PageTypes2.default.UserView:\n page_element = null; // deliberately null for now\n right_panel = _react2.default.createElement(RightPanel, { disabled: this.props.rightDisabled });\n break;\n case _PageTypes2.default.GroupView:\n page_element = _react2.default.createElement(GroupView, {\n groupId: this.props.currentGroupId,\n isNew: this.props.currentGroupIsNew,\n collapsedRhs: this.props.collapseRhs\n });\n if (!this.props.collapseRhs) right_panel = _react2.default.createElement(RightPanel, { groupId: this.props.currentGroupId, disabled: this.props.rightDisabled });\n break;\n }\n\n var usageLimitEvent = this.state.serverNoticeEvents.find(function (e) {\n return e && e.getType() === 'm.room.message' && e.getContent()['server_notice_type'] === 'm.server_notice.usage_limit_reached';\n });\n\n var topBar = void 0;\n var isGuest = this.props.matrixClient.isGuest();\n if (this.state.syncErrorData && this.state.syncErrorData.error.errcode === 'M_RESOURCE_LIMIT_EXCEEDED') {\n topBar = _react2.default.createElement(ServerLimitBar, { kind: 'hard',\n adminContact: this.state.syncErrorData.error.data.admin_contact,\n limitType: this.state.syncErrorData.error.data.limit_type\n });\n } else if (usageLimitEvent) {\n topBar = _react2.default.createElement(ServerLimitBar, { kind: 'soft',\n adminContact: usageLimitEvent.getContent().admin_contact,\n limitType: usageLimitEvent.getContent().limit_type\n });\n } else if (this.props.showCookieBar && this.props.config.piwik) {\n var policyUrl = this.props.config.piwik.policyUrl || null;\n topBar = _react2.default.createElement(CookieBar, { policyUrl: policyUrl });\n } else if (this.props.hasNewVersion) {\n topBar = _react2.default.createElement(NewVersionBar, { version: this.props.version, newVersion: this.props.newVersion,\n releaseNotes: this.props.newVersionReleaseNotes\n });\n } else if (this.props.checkingForUpdate) {\n topBar = _react2.default.createElement(UpdateCheckBar, this.props.checkingForUpdate);\n } else if (this.state.userHasGeneratedPassword) {\n topBar = _react2.default.createElement(PasswordNagBar, null);\n } else if (!isGuest && _Notifier2.default.supportsDesktopNotifications() && !_Notifier2.default.isEnabled() && !_Notifier2.default.isToolbarHidden()) {\n topBar = _react2.default.createElement(MatrixToolbar, null);\n }\n\n var bodyClasses = 'mx_MatrixChat';\n if (topBar) {\n bodyClasses += ' mx_MatrixChat_toolbarShowing';\n }\n if (this.state.useCompactLayout) {\n bodyClasses += ' mx_MatrixChat_useCompactLayout';\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixChat_wrapper', 'aria-hidden': this.props.hideToSRUsers, onMouseDown: this._onMouseDown, onMouseUp: this._onMouseUp },\n topBar,\n _react2.default.createElement(\n _reactBeautifulDnd.DragDropContext,\n { onDragEnd: this._onDragEnd },\n _react2.default.createElement(\n 'div',\n { className: bodyClasses },\n _react2.default.createElement(LeftPanel, {\n collapsed: this.props.collapseLhs || false,\n disabled: this.props.leftDisabled\n }),\n _react2.default.createElement(\n 'main',\n { className: 'mx_MatrixChat_middlePanel' },\n page_element\n ),\n right_panel\n )\n )\n );\n }\n});\n\nexports.default = LoggedInView;\nmodule.exports = exports['default'];\n//# sourceMappingURL=LoggedInView.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _dragDropContext = require('./drag-drop-context');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_dragDropContext).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _DragDropContext$chil;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _createStore = require('../../state/create-store');\n\nvar _createStore2 = _interopRequireDefault(_createStore);\n\nvar _fireHooks = require('../../state/fire-hooks');\n\nvar _fireHooks2 = _interopRequireDefault(_fireHooks);\n\nvar _dimensionMarshal = require('../../state/dimension-marshal/dimension-marshal');\n\nvar _dimensionMarshal2 = _interopRequireDefault(_dimensionMarshal);\n\nvar _styleMarshal = require('../style-marshal/style-marshal');\n\nvar _styleMarshal2 = _interopRequireDefault(_styleMarshal);\n\nvar _canStartDrag = require('../../state/can-start-drag');\n\nvar _canStartDrag2 = _interopRequireDefault(_canStartDrag);\n\nvar _contextKeys = require('../context-keys');\n\nvar _actionCreators = require('../../state/action-creators');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DragDropContext = function (_React$Component) {\n (0, _inherits3.default)(DragDropContext, _React$Component);\n\n function DragDropContext() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, DragDropContext);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = DragDropContext.__proto__ || (0, _getPrototypeOf2.default)(DragDropContext)).call.apply(_ref, [this].concat(args))), _this), _this.canLift = function (id) {\n return (0, _canStartDrag2.default)(_this.store.getState(), id);\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(DragDropContext, [{\n key: 'getChildContext',\n value: function getChildContext() {\n var _ref2;\n\n return _ref2 = {}, (0, _defineProperty3.default)(_ref2, _contextKeys.storeKey, this.store), (0, _defineProperty3.default)(_ref2, _contextKeys.dimensionMarshalKey, this.dimensionMarshal), (0, _defineProperty3.default)(_ref2, _contextKeys.styleContextKey, this.styleMarshal.styleContext), (0, _defineProperty3.default)(_ref2, _contextKeys.canLiftContextKey, this.canLift), _ref2;\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n this.store = (0, _createStore2.default)();\n\n this.styleMarshal = (0, _styleMarshal2.default)();\n\n var callbacks = {\n cancel: function cancel() {\n _this2.store.dispatch((0, _actionCreators.clean)());\n },\n publishDraggables: function publishDraggables(dimensions) {\n _this2.store.dispatch((0, _actionCreators.publishDraggableDimensions)(dimensions));\n },\n publishDroppables: function publishDroppables(dimensions) {\n _this2.store.dispatch((0, _actionCreators.publishDroppableDimensions)(dimensions));\n },\n updateDroppableScroll: function updateDroppableScroll(id, newScroll) {\n _this2.store.dispatch((0, _actionCreators.updateDroppableDimensionScroll)(id, newScroll));\n },\n updateDroppableIsEnabled: function updateDroppableIsEnabled(id, isEnabled) {\n _this2.store.dispatch((0, _actionCreators.updateDroppableDimensionIsEnabled)(id, isEnabled));\n }\n };\n this.dimensionMarshal = (0, _dimensionMarshal2.default)(callbacks);\n\n var previous = this.store.getState();\n\n this.unsubscribe = this.store.subscribe(function () {\n var previousValue = previous;\n var current = _this2.store.getState();\n\n previous = current;\n\n if (current.phase === previousValue.phase) {\n return;\n }\n\n var hooks = {\n onDragStart: _this2.props.onDragStart,\n onDragEnd: _this2.props.onDragEnd\n };\n (0, _fireHooks2.default)(hooks, previousValue, current);\n\n _this2.styleMarshal.onPhaseChange(current);\n\n _this2.dimensionMarshal.onPhaseChange(current);\n });\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.styleMarshal.mount();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unsubscribe();\n this.styleMarshal.unmount();\n }\n }, {\n key: 'render',\n value: function render() {\n return this.props.children;\n }\n }]);\n return DragDropContext;\n}(_react2.default.Component);\n\nDragDropContext.childContextTypes = (_DragDropContext$chil = {}, (0, _defineProperty3.default)(_DragDropContext$chil, _contextKeys.storeKey, _propTypes2.default.shape({\n dispatch: _propTypes2.default.func.isRequired,\n subscribe: _propTypes2.default.func.isRequired,\n getState: _propTypes2.default.func.isRequired\n}).isRequired), (0, _defineProperty3.default)(_DragDropContext$chil, _contextKeys.dimensionMarshalKey, _propTypes2.default.object.isRequired), (0, _defineProperty3.default)(_DragDropContext$chil, _contextKeys.styleContextKey, _propTypes2.default.string.isRequired), (0, _defineProperty3.default)(_DragDropContext$chil, _contextKeys.canLiftContextKey, _propTypes2.default.func.isRequired), _DragDropContext$chil);\nexports.default = DragDropContext;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof2 = require('babel-runtime/helpers/typeof');\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _redux = require('redux');\n\nvar _reduxThunk = require('redux-thunk');\n\nvar _reduxThunk2 = _interopRequireDefault(_reduxThunk);\n\nvar _reducer = require('./reducer');\n\nvar _reducer2 = _interopRequireDefault(_reducer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar composeEnhancers = (typeof window === 'undefined' ? 'undefined' : (0, _typeof3.default)(window)) === 'object' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : _redux.compose;\n\nexports.default = function () {\n return (0, _redux.createStore)(_reducer2.default, composeEnhancers((0, _redux.applyMiddleware)(_reduxThunk2.default)));\n};","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","function createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexport default thunk;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends4 = require('babel-runtime/helpers/extends');\n\nvar _extends5 = _interopRequireDefault(_extends4);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _position = require('./position');\n\nvar _noImpact = require('./no-impact');\n\nvar _getDragImpact = require('./get-drag-impact/');\n\nvar _getDragImpact2 = _interopRequireDefault(_getDragImpact);\n\nvar _moveToNextIndex = require('./move-to-next-index/');\n\nvar _moveToNextIndex2 = _interopRequireDefault(_moveToNextIndex);\n\nvar _moveCrossAxis = require('./move-cross-axis/');\n\nvar _moveCrossAxis2 = _interopRequireDefault(_moveCrossAxis);\n\nvar _dimension = require('./dimension');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar noDimensions = {\n request: null,\n draggable: {},\n droppable: {}\n};\n\nvar origin = { x: 0, y: 0 };\n\nvar clean = (0, _memoizeOne2.default)(function () {\n var phase = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'IDLE';\n return {\n phase: phase,\n drag: null,\n drop: null,\n dimension: noDimensions\n };\n});\n\nvar canPublishDimension = function canPublishDimension(phase) {\n return ['IDLE', 'DROP_ANIMATING', 'DROP_COMPLETE'].indexOf(phase) === -1;\n};\n\nvar move = function move(_ref) {\n var state = _ref.state,\n clientSelection = _ref.clientSelection,\n shouldAnimate = _ref.shouldAnimate,\n windowScroll = _ref.windowScroll,\n impact = _ref.impact;\n\n if (state.phase !== 'DRAGGING') {\n console.error('cannot move while not dragging');\n return clean();\n }\n\n var last = state.drag;\n\n if (last == null) {\n console.error('cannot move if there is no drag information');\n return clean();\n }\n\n var previous = last.current;\n var initial = last.initial;\n var currentWindowScroll = windowScroll || previous.windowScroll;\n\n var client = function () {\n var offset = (0, _position.subtract)(clientSelection, initial.client.selection);\n\n var result = {\n offset: offset,\n selection: clientSelection,\n center: (0, _position.add)(offset, initial.client.center)\n };\n return result;\n }();\n\n var page = {\n selection: (0, _position.add)(client.selection, currentWindowScroll),\n offset: (0, _position.add)(client.offset, currentWindowScroll),\n center: (0, _position.add)(client.center, currentWindowScroll)\n };\n\n var current = {\n client: client,\n page: page,\n shouldAnimate: shouldAnimate,\n windowScroll: currentWindowScroll\n };\n\n var newImpact = impact || (0, _getDragImpact2.default)({\n pageCenter: page.center,\n draggable: state.dimension.draggable[initial.descriptor.id],\n draggables: state.dimension.draggable,\n droppables: state.dimension.droppable,\n previousImpact: last.impact\n });\n\n var drag = {\n initial: initial,\n impact: newImpact,\n current: current\n };\n\n return (0, _extends5.default)({}, state, {\n drag: drag\n });\n};\n\nvar updateStateAfterDimensionChange = function updateStateAfterDimensionChange(newState) {\n if (newState.phase === 'COLLECTING_INITIAL_DIMENSIONS') {\n return newState;\n }\n\n if (newState.phase !== 'DRAGGING') {\n return newState;\n }\n\n if (!newState.drag) {\n console.error('cannot update a draggable dimension in an existing drag as there is invalid drag state');\n return clean();\n }\n\n return move({\n state: newState,\n\n clientSelection: newState.drag.current.client.selection,\n shouldAnimate: newState.drag.current.shouldAnimate\n });\n};\n\nexports.default = function () {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : clean('IDLE');\n var action = arguments[1];\n\n if (action.type === 'CLEAN') {\n return clean();\n }\n\n if (action.type === 'PREPARE') {\n return clean('PREPARING');\n }\n\n if (action.type === 'REQUEST_DIMENSIONS') {\n if (state.phase !== 'PREPARING') {\n console.error('trying to start a lift while not preparing for a lift');\n return clean();\n }\n\n var id = action.payload;\n\n return {\n phase: 'COLLECTING_INITIAL_DIMENSIONS',\n drag: null,\n drop: null,\n dimension: {\n request: id,\n draggable: {},\n droppable: {}\n }\n };\n }\n\n if (action.type === 'PUBLISH_DRAGGABLE_DIMENSIONS') {\n var dimensions = action.payload;\n\n if (!canPublishDimension(state.phase)) {\n console.warn('dimensions rejected as no longer allowing dimension capture in phase', state.phase);\n return state;\n }\n\n var additions = dimensions.reduce(function (previous, current) {\n previous[current.descriptor.id] = current;\n return previous;\n }, {});\n\n var newState = (0, _extends5.default)({}, state, {\n dimension: {\n request: state.dimension.request,\n droppable: state.dimension.droppable,\n draggable: (0, _extends5.default)({}, state.dimension.draggable, additions)\n }\n });\n\n return updateStateAfterDimensionChange(newState);\n }\n\n if (action.type === 'PUBLISH_DROPPABLE_DIMENSIONS') {\n var _dimensions = action.payload;\n\n if (!canPublishDimension(state.phase)) {\n console.warn('dimensions rejected as no longer allowing dimension capture in phase', state.phase);\n return state;\n }\n\n var _additions = _dimensions.reduce(function (previous, current) {\n previous[current.descriptor.id] = current;\n return previous;\n }, {});\n\n var _newState = (0, _extends5.default)({}, state, {\n dimension: {\n request: state.dimension.request,\n draggable: state.dimension.draggable,\n droppable: (0, _extends5.default)({}, state.dimension.droppable, _additions)\n }\n });\n\n return updateStateAfterDimensionChange(_newState);\n }\n\n if (action.type === 'COMPLETE_LIFT') {\n if (state.phase !== 'COLLECTING_INITIAL_DIMENSIONS') {\n console.error('trying complete lift without collecting dimensions');\n return state;\n }\n\n var _action$payload = action.payload,\n _id = _action$payload.id,\n client = _action$payload.client,\n _windowScroll = _action$payload.windowScroll,\n isScrollAllowed = _action$payload.isScrollAllowed;\n\n var page = {\n selection: (0, _position.add)(client.selection, _windowScroll),\n center: (0, _position.add)(client.center, _windowScroll)\n };\n\n var draggable = state.dimension.draggable[_id];\n\n if (!draggable) {\n console.error('could not find draggable in store after lift');\n return clean();\n }\n\n var descriptor = draggable.descriptor;\n\n var initial = {\n descriptor: descriptor,\n isScrollAllowed: isScrollAllowed,\n client: client,\n page: page,\n windowScroll: _windowScroll\n };\n\n var current = {\n client: {\n selection: client.selection,\n center: client.center,\n offset: origin\n },\n page: {\n selection: page.selection,\n center: page.center,\n offset: origin\n },\n windowScroll: _windowScroll,\n shouldAnimate: false\n };\n\n var home = state.dimension.droppable[descriptor.droppableId];\n\n if (!home) {\n console.error('Cannot find home dimension for initial lift');\n return clean();\n }\n\n var destination = {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n };\n\n var _impact = {\n movement: _noImpact.noMovement,\n direction: home.axis.direction,\n destination: destination\n };\n\n return (0, _extends5.default)({}, state, {\n phase: 'DRAGGING',\n drag: {\n initial: initial,\n current: current,\n impact: _impact\n }\n });\n }\n\n if (action.type === 'UPDATE_DROPPABLE_DIMENSION_SCROLL') {\n if (state.phase !== 'DRAGGING') {\n console.error('cannot update a droppable dimensions scroll when not dragging');\n return clean();\n }\n\n if (state.drag == null) {\n console.error('invalid store state');\n return clean();\n }\n\n if (!state.drag.initial.isScrollAllowed) {\n return clean();\n }\n\n var _action$payload2 = action.payload,\n _id2 = _action$payload2.id,\n offset = _action$payload2.offset;\n\n\n var target = state.dimension.droppable[_id2];\n\n if (!target) {\n console.warn('cannot update scroll for droppable as it has not yet been collected');\n return state;\n }\n\n var dimension = (0, _dimension.scrollDroppable)(target, offset);\n\n var _newState2 = (0, _extends5.default)({}, state, {\n dimension: {\n request: state.dimension.request,\n draggable: state.dimension.draggable,\n droppable: (0, _extends5.default)({}, state.dimension.droppable, (0, _defineProperty3.default)({}, _id2, dimension))\n }\n });\n\n return updateStateAfterDimensionChange(_newState2);\n }\n\n if (action.type === 'UPDATE_DROPPABLE_DIMENSION_IS_ENABLED') {\n if (!(0, _keys2.default)(state.dimension.droppable).length) {\n return state;\n }\n\n var _action$payload3 = action.payload,\n _id3 = _action$payload3.id,\n isEnabled = _action$payload3.isEnabled;\n\n var _target = state.dimension.droppable[_id3];\n\n if (!_target) {\n console.warn('cannot update enabled state for droppable as it has not yet been collected');\n return state;\n }\n\n if (_target.isEnabled === isEnabled) {\n console.warn('trying to set droppable isEnabled to ' + String(isEnabled) + ' but it is already ' + String(isEnabled));\n return state;\n }\n\n var updatedDroppableDimension = (0, _extends5.default)({}, _target, {\n isEnabled: isEnabled\n });\n\n var result = (0, _extends5.default)({}, state, {\n dimension: (0, _extends5.default)({}, state.dimension, {\n droppable: (0, _extends5.default)({}, state.dimension.droppable, (0, _defineProperty3.default)({}, _id3, updatedDroppableDimension))\n })\n });\n\n return updateStateAfterDimensionChange(result);\n }\n\n if (action.type === 'MOVE') {\n var _action$payload4 = action.payload,\n _client = _action$payload4.client,\n _windowScroll2 = _action$payload4.windowScroll;\n\n return move({\n state: state,\n clientSelection: _client,\n windowScroll: _windowScroll2,\n shouldAnimate: false\n });\n }\n\n if (action.type === 'MOVE_BY_WINDOW_SCROLL') {\n var _windowScroll3 = action.payload.windowScroll;\n\n\n if (!state.drag) {\n console.error('cannot move with window scrolling if no current drag');\n return clean();\n }\n\n return move({\n state: state,\n clientSelection: state.drag.current.client.selection,\n windowScroll: _windowScroll3,\n shouldAnimate: false\n });\n }\n\n if (action.type === 'MOVE_FORWARD' || action.type === 'MOVE_BACKWARD') {\n if (state.phase !== 'DRAGGING') {\n console.error('cannot move while not dragging', action);\n return clean();\n }\n\n if (!state.drag) {\n console.error('cannot move if there is no drag information');\n return clean();\n }\n\n var existing = state.drag;\n var isMovingForward = action.type === 'MOVE_FORWARD';\n\n if (!existing.impact.destination) {\n console.error('cannot move if there is no previous destination');\n return clean();\n }\n\n var droppable = state.dimension.droppable[existing.impact.destination.droppableId];\n\n var _result = (0, _moveToNextIndex2.default)({\n isMovingForward: isMovingForward,\n draggableId: existing.initial.descriptor.id,\n droppable: droppable,\n draggables: state.dimension.draggable,\n previousImpact: existing.impact\n });\n\n if (!_result) {\n return state;\n }\n\n var _impact2 = _result.impact;\n var _page = _result.pageCenter;\n var _client2 = (0, _position.subtract)(_page, existing.current.windowScroll);\n\n return move({\n state: state,\n impact: _impact2,\n clientSelection: _client2,\n shouldAnimate: true\n });\n }\n\n if (action.type === 'CROSS_AXIS_MOVE_FORWARD' || action.type === 'CROSS_AXIS_MOVE_BACKWARD') {\n if (state.phase !== 'DRAGGING') {\n console.error('cannot move cross axis when not dragging');\n return clean();\n }\n\n if (!state.drag) {\n console.error('cannot move cross axis if there is no drag information');\n return clean();\n }\n\n if (!state.drag.impact.destination) {\n console.error('cannot move cross axis if not in a droppable');\n return clean();\n }\n\n var _current = state.drag.current;\n var _descriptor = state.drag.initial.descriptor;\n var draggableId = _descriptor.id;\n var center = _current.page.center;\n var droppableId = state.drag.impact.destination.droppableId;\n var _home = {\n index: _descriptor.index,\n droppableId: _descriptor.droppableId\n };\n\n var _result2 = (0, _moveCrossAxis2.default)({\n isMovingForward: action.type === 'CROSS_AXIS_MOVE_FORWARD',\n pageCenter: center,\n draggableId: draggableId,\n droppableId: droppableId,\n home: _home,\n draggables: state.dimension.draggable,\n droppables: state.dimension.droppable,\n previousImpact: state.drag.impact\n });\n\n if (!_result2) {\n return state;\n }\n\n var _page2 = _result2.pageCenter;\n var _client3 = (0, _position.subtract)(_page2, _current.windowScroll);\n\n return move({\n state: state,\n clientSelection: _client3,\n impact: _result2.impact,\n shouldAnimate: true\n });\n }\n\n if (action.type === 'DROP_ANIMATE') {\n var _action$payload5 = action.payload,\n trigger = _action$payload5.trigger,\n newHomeOffset = _action$payload5.newHomeOffset,\n _impact3 = _action$payload5.impact,\n _result3 = _action$payload5.result;\n\n\n if (state.phase !== 'DRAGGING') {\n console.error('cannot animate drop while not dragging', action);\n return state;\n }\n\n if (!state.drag) {\n console.error('cannot animate drop - invalid drag state');\n return clean();\n }\n\n var pending = {\n trigger: trigger,\n newHomeOffset: newHomeOffset,\n result: _result3,\n impact: _impact3\n };\n\n return {\n phase: 'DROP_ANIMATING',\n drag: null,\n drop: {\n pending: pending,\n result: null\n },\n dimension: state.dimension\n };\n }\n\n if (action.type === 'DROP_COMPLETE') {\n var _result4 = action.payload;\n\n return {\n phase: 'DROP_COMPLETE',\n drag: null,\n drop: {\n pending: null,\n result: _result4\n },\n dimension: noDimensions\n };\n }\n\n return state;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getDroppableOver = require('../get-droppable-over');\n\nvar _getDroppableOver2 = _interopRequireDefault(_getDroppableOver);\n\nvar _getDraggablesInsideDroppable = require('../get-draggables-inside-droppable');\n\nvar _getDraggablesInsideDroppable2 = _interopRequireDefault(_getDraggablesInsideDroppable);\n\nvar _noImpact = require('../no-impact');\n\nvar _noImpact2 = _interopRequireDefault(_noImpact);\n\nvar _inHomeList = require('./in-home-list');\n\nvar _inHomeList2 = _interopRequireDefault(_inHomeList);\n\nvar _inForeignList = require('./in-foreign-list');\n\nvar _inForeignList2 = _interopRequireDefault(_inForeignList);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var pageCenter = _ref.pageCenter,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n droppables = _ref.droppables,\n previousImpact = _ref.previousImpact;\n\n var previousDroppableOverId = previousImpact.destination && previousImpact.destination.droppableId;\n\n var destinationId = (0, _getDroppableOver2.default)({\n target: pageCenter,\n draggable: draggable,\n draggables: draggables,\n droppables: droppables,\n previousDroppableOverId: previousDroppableOverId\n });\n\n if (!destinationId) {\n return _noImpact2.default;\n }\n\n var destination = droppables[destinationId];\n\n if (!destination.isEnabled) {\n return _noImpact2.default;\n }\n\n var home = droppables[draggable.descriptor.droppableId];\n var isWithinHomeDroppable = home.descriptor.id === destinationId;\n var insideDestination = (0, _getDraggablesInsideDroppable2.default)(destination, draggables);\n\n if (isWithinHomeDroppable) {\n return (0, _inHomeList2.default)({\n pageCenter: pageCenter,\n draggable: draggable,\n home: home,\n insideHome: insideDestination,\n previousImpact: previousImpact || _noImpact2.default\n });\n }\n\n return (0, _inForeignList2.default)({\n pageCenter: pageCenter,\n draggable: draggable,\n destination: destination,\n insideDestination: insideDestination,\n previousImpact: previousImpact || _noImpact2.default\n });\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _getArea = require('./get-area');\n\nvar _getArea2 = _interopRequireDefault(_getArea);\n\nvar _getDraggablesInsideDroppable = require('./get-draggables-inside-droppable');\n\nvar _getDraggablesInsideDroppable2 = _interopRequireDefault(_getDraggablesInsideDroppable);\n\nvar _isPositionInFrame = require('./visibility/is-position-in-frame');\n\nvar _isPositionInFrame2 = _interopRequireDefault(_isPositionInFrame);\n\nvar _position = require('./position');\n\nvar _spacing = require('./spacing');\n\nvar _dimension = require('./dimension');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getRequiredGrowth = (0, _memoizeOne2.default)(function (draggable, draggables, droppable) {\n\n var getResult = function getResult(existingSpace) {\n var requiredSpace = draggable.page.withMargin[droppable.axis.size];\n\n if (requiredSpace <= existingSpace) {\n return null;\n }\n var requiredGrowth = (0, _position.patch)(droppable.axis.line, requiredSpace - existingSpace);\n\n return requiredGrowth;\n };\n\n var dimensions = (0, _getDraggablesInsideDroppable2.default)(droppable, draggables);\n\n if (!dimensions.length) {\n var _existingSpace = droppable.page.withMargin[droppable.axis.size];\n return getResult(_existingSpace);\n }\n\n var endOfDraggables = dimensions[dimensions.length - 1].page.withMargin[droppable.axis.end];\n var endOfDroppable = droppable.page.withMargin[droppable.axis.end];\n var existingSpace = endOfDroppable - endOfDraggables;\n\n return getResult(existingSpace);\n});\n\nvar getWithGrowth = (0, _memoizeOne2.default)(function (area, growth) {\n return (0, _getArea2.default)((0, _spacing.addPosition)(area, growth));\n});\n\nvar getClippedAreaWithPlaceholder = function getClippedAreaWithPlaceholder(_ref) {\n var draggable = _ref.draggable,\n draggables = _ref.draggables,\n droppable = _ref.droppable,\n previousDroppableOverId = _ref.previousDroppableOverId;\n\n var isHome = draggable.descriptor.droppableId === droppable.descriptor.id;\n var wasOver = Boolean(previousDroppableOverId && previousDroppableOverId === droppable.descriptor.id);\n var subject = droppable.viewport.subject;\n var frame = droppable.viewport.frame;\n var clipped = droppable.viewport.clipped;\n\n if (!clipped) {\n return clipped;\n }\n\n if (isHome || !wasOver) {\n return clipped;\n }\n\n var requiredGrowth = getRequiredGrowth(draggable, draggables, droppable);\n\n if (!requiredGrowth) {\n return clipped;\n }\n\n var isClippedByFrame = subject[droppable.axis.size] !== frame[droppable.axis.size];\n\n var subjectWithGrowth = getWithGrowth(clipped, requiredGrowth);\n\n if (!isClippedByFrame) {\n return subjectWithGrowth;\n }\n\n return (0, _dimension.clip)(frame, subjectWithGrowth);\n};\n\nexports.default = function (_ref2) {\n var target = _ref2.target,\n draggable = _ref2.draggable,\n draggables = _ref2.draggables,\n droppables = _ref2.droppables,\n previousDroppableOverId = _ref2.previousDroppableOverId;\n\n var maybe = (0, _keys2.default)(droppables).map(function (id) {\n return droppables[id];\n }).filter(function (droppable) {\n return droppable.isEnabled;\n }).find(function (droppable) {\n var withPlaceholder = getClippedAreaWithPlaceholder({\n draggable: draggable, draggables: draggables, droppable: droppable, previousDroppableOverId: previousDroppableOverId\n });\n\n if (!withPlaceholder) {\n return false;\n }\n\n return (0, _isPositionInFrame2.default)(withPlaceholder)(target);\n });\n\n return maybe ? maybe.descriptor.id : null;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _isWithin = require('../is-within');\n\nvar _isWithin2 = _interopRequireDefault(_isWithin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (frame) {\n var isWithinVertical = (0, _isWithin2.default)(frame.top, frame.bottom);\n var isWithinHorizontal = (0, _isWithin2.default)(frame.left, frame.right);\n\n return function (point) {\n return isWithinVertical(point.y) && isWithinVertical(point.y) && isWithinHorizontal(point.x) && isWithinHorizontal(point.x);\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar vertical = exports.vertical = {\n direction: 'vertical',\n line: 'y',\n crossLine: 'x',\n start: 'top',\n end: 'bottom',\n size: 'height',\n crossAxisStart: 'left',\n crossAxisEnd: 'right',\n crossAxisSize: 'width'\n};\n\nvar horizontal = exports.horizontal = {\n direction: 'horizontal',\n line: 'x',\n crossLine: 'y',\n start: 'left',\n end: 'right',\n size: 'width',\n crossAxisStart: 'top',\n crossAxisEnd: 'bottom',\n crossAxisSize: 'height'\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _position = require('../position');\n\nvar _getDisplacement = require('../get-displacement');\n\nvar _getDisplacement2 = _interopRequireDefault(_getDisplacement);\n\nvar _getViewport = require('../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var pageCenter = _ref.pageCenter,\n draggable = _ref.draggable,\n home = _ref.home,\n insideHome = _ref.insideHome,\n previousImpact = _ref.previousImpact;\n\n var viewport = (0, _getViewport2.default)();\n var axis = home.axis;\n\n var originalCenter = draggable.page.withoutMargin.center;\n\n var homeScrollDiff = home.viewport.frameScroll.diff.value;\n\n var currentCenter = (0, _position.add)(pageCenter, homeScrollDiff);\n\n var isBeyondStartPosition = currentCenter[axis.line] - originalCenter[axis.line] > 0;\n\n var amount = (0, _position.patch)(axis.line, draggable.client.withMargin[axis.size]);\n\n var displaced = insideHome.filter(function (child) {\n if (child === draggable) {\n return false;\n }\n\n var area = child.page.withoutMargin;\n\n if (isBeyondStartPosition) {\n if (area.center[axis.line] < originalCenter[axis.line]) {\n return false;\n }\n\n return currentCenter[axis.line] > area[axis.start];\n }\n\n if (originalCenter[axis.line] < area.center[axis.line]) {\n return false;\n }\n\n return currentCenter[axis.line] < area[axis.end];\n }).map(function (dimension) {\n return (0, _getDisplacement2.default)({\n draggable: dimension,\n destination: home,\n previousImpact: previousImpact,\n viewport: viewport\n });\n });\n\n var ordered = isBeyondStartPosition ? displaced.reverse() : displaced;\n var index = function () {\n var startIndex = insideHome.indexOf(draggable);\n var length = ordered.length;\n if (!length) {\n return startIndex;\n }\n\n if (isBeyondStartPosition) {\n return startIndex + length;\n }\n\n return startIndex - length;\n }();\n\n var movement = {\n amount: amount,\n displaced: ordered,\n isBeyondStartPosition: isBeyondStartPosition\n };\n\n var impact = {\n movement: movement,\n direction: axis.direction,\n destination: {\n droppableId: home.descriptor.id,\n index: index\n }\n };\n\n return impact;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _position = require('../position');\n\nvar _getDisplacement = require('../get-displacement');\n\nvar _getDisplacement2 = _interopRequireDefault(_getDisplacement);\n\nvar _getViewport = require('../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var pageCenter = _ref.pageCenter,\n draggable = _ref.draggable,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination,\n previousImpact = _ref.previousImpact;\n\n var axis = destination.axis;\n var viewport = (0, _getViewport2.default)();\n\n var destinationScrollDiff = destination.viewport.frameScroll.diff.value;\n var currentCenter = (0, _position.add)(pageCenter, destinationScrollDiff);\n\n var displaced = insideDestination.filter(function (child) {\n var threshold = child.page.withoutMargin[axis.end];\n return threshold > currentCenter[axis.line];\n }).map(function (dimension) {\n return (0, _getDisplacement2.default)({\n draggable: dimension,\n destination: destination,\n previousImpact: previousImpact,\n viewport: viewport\n });\n });\n\n var newIndex = insideDestination.length - displaced.length;\n\n var movement = {\n amount: (0, _position.patch)(axis.line, draggable.page.withMargin[axis.size]),\n displaced: displaced,\n isBeyondStartPosition: false\n };\n\n var impact = {\n movement: movement,\n direction: axis.direction,\n destination: {\n droppableId: destination.descriptor.id,\n index: newIndex\n }\n };\n\n return impact;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inHomeList = require('./in-home-list');\n\nvar _inHomeList2 = _interopRequireDefault(_inHomeList);\n\nvar _inForeignList = require('./in-foreign-list');\n\nvar _inForeignList2 = _interopRequireDefault(_inForeignList);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (args) {\n var draggableId = args.draggableId,\n draggables = args.draggables,\n droppable = args.droppable;\n\n\n var draggable = draggables[draggableId];\n var isInHomeList = draggable.descriptor.droppableId === droppable.descriptor.id;\n\n if (!droppable.isEnabled) {\n return null;\n }\n\n if (isInHomeList) {\n return (0, _inHomeList2.default)(args);\n }\n\n return (0, _inForeignList2.default)(args);\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _getDraggablesInsideDroppable = require('../get-draggables-inside-droppable');\n\nvar _getDraggablesInsideDroppable2 = _interopRequireDefault(_getDraggablesInsideDroppable);\n\nvar _position = require('../position');\n\nvar _isVisibleInNewLocation = require('./is-visible-in-new-location');\n\nvar _isVisibleInNewLocation2 = _interopRequireDefault(_isVisibleInNewLocation);\n\nvar _getViewport = require('../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nvar _moveToEdge = require('../move-to-edge');\n\nvar _moveToEdge2 = _interopRequireDefault(_moveToEdge);\n\nvar _getDisplacement = require('../get-displacement');\n\nvar _getDisplacement2 = _interopRequireDefault(_getDisplacement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getIndex = (0, _memoizeOne2.default)(function (draggables, target) {\n return draggables.indexOf(target);\n});\n\nexports.default = function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n draggableId = _ref.draggableId,\n previousImpact = _ref.previousImpact,\n droppable = _ref.droppable,\n draggables = _ref.draggables;\n\n var location = previousImpact.destination;\n\n if (!location) {\n console.error('cannot move to next index when there is not previous destination');\n return null;\n }\n\n var draggable = draggables[draggableId];\n var axis = droppable.axis;\n\n var insideDroppable = (0, _getDraggablesInsideDroppable2.default)(droppable, draggables);\n\n var startIndex = getIndex(insideDroppable, draggable);\n var currentIndex = location.index;\n var proposedIndex = isMovingForward ? currentIndex + 1 : currentIndex - 1;\n\n if (startIndex === -1) {\n console.error('could not find draggable inside current droppable');\n return null;\n }\n\n if (proposedIndex > insideDroppable.length - 1) {\n return null;\n }\n\n if (proposedIndex < 0) {\n return null;\n }\n\n var destination = insideDroppable[proposedIndex];\n var isMovingTowardStart = isMovingForward && proposedIndex <= startIndex || !isMovingForward && proposedIndex >= startIndex;\n\n var edge = function () {\n if (!isMovingTowardStart) {\n return isMovingForward ? 'end' : 'start';\n }\n\n return isMovingForward ? 'start' : 'end';\n }();\n\n var newCenter = (0, _moveToEdge2.default)({\n source: draggable.page.withoutMargin,\n sourceEdge: edge,\n destination: destination.page.withoutMargin,\n destinationEdge: edge,\n destinationAxis: droppable.axis\n });\n\n var viewport = (0, _getViewport2.default)();\n\n var isVisible = (0, _isVisibleInNewLocation2.default)({\n draggable: draggable,\n destination: droppable,\n newCenter: newCenter,\n viewport: viewport\n });\n\n if (!isVisible) {\n return null;\n }\n\n var destinationDisplacement = {\n draggableId: destination.descriptor.id,\n isVisible: true,\n shouldAnimate: true\n };\n\n var modified = isMovingTowardStart ? previousImpact.movement.displaced.slice(1, previousImpact.movement.displaced.length) : [destinationDisplacement].concat((0, _toConsumableArray3.default)(previousImpact.movement.displaced));\n\n var displaced = modified.map(function (displacement) {\n var target = draggables[displacement.draggableId];\n\n var updated = (0, _getDisplacement2.default)({\n draggable: target,\n destination: droppable,\n previousImpact: previousImpact,\n viewport: viewport\n });\n\n return updated;\n });\n\n var newImpact = {\n movement: {\n displaced: displaced,\n\n amount: (0, _position.patch)(axis.line, draggable.page.withMargin[axis.size]),\n isBeyondStartPosition: proposedIndex > startIndex\n },\n destination: {\n droppableId: droppable.descriptor.id,\n index: proposedIndex\n },\n direction: droppable.axis.direction\n };\n\n var result = {\n pageCenter: newCenter,\n impact: newImpact\n };\n\n return result;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _getDraggablesInsideDroppable = require('../get-draggables-inside-droppable');\n\nvar _getDraggablesInsideDroppable2 = _interopRequireDefault(_getDraggablesInsideDroppable);\n\nvar _position = require('../position');\n\nvar _moveToEdge = require('../move-to-edge');\n\nvar _moveToEdge2 = _interopRequireDefault(_moveToEdge);\n\nvar _getDisplacement = require('../get-displacement');\n\nvar _getDisplacement2 = _interopRequireDefault(_getDisplacement);\n\nvar _getViewport = require('../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nvar _isVisibleInNewLocation = require('./is-visible-in-new-location');\n\nvar _isVisibleInNewLocation2 = _interopRequireDefault(_isVisibleInNewLocation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n draggableId = _ref.draggableId,\n previousImpact = _ref.previousImpact,\n droppable = _ref.droppable,\n draggables = _ref.draggables;\n\n if (!previousImpact.destination) {\n console.error('cannot move to next index when there is not previous destination');\n return null;\n }\n\n var location = previousImpact.destination;\n var draggable = draggables[draggableId];\n var axis = droppable.axis;\n\n var insideForeignDroppable = (0, _getDraggablesInsideDroppable2.default)(droppable, draggables);\n\n var currentIndex = location.index;\n var proposedIndex = isMovingForward ? currentIndex + 1 : currentIndex - 1;\n var lastIndex = insideForeignDroppable.length - 1;\n\n if (proposedIndex > insideForeignDroppable.length) {\n return null;\n }\n\n if (proposedIndex < 0) {\n return null;\n }\n\n var movingRelativeTo = insideForeignDroppable[Math.min(proposedIndex, lastIndex)];\n\n var isMovingPastLastIndex = proposedIndex > lastIndex;\n var sourceEdge = 'start';\n var destinationEdge = function () {\n if (isMovingPastLastIndex) {\n return 'end';\n }\n\n return 'start';\n }();\n\n var viewport = (0, _getViewport2.default)();\n var newCenter = (0, _moveToEdge2.default)({\n source: draggable.page.withoutMargin,\n sourceEdge: sourceEdge,\n destination: movingRelativeTo.page.withMargin,\n destinationEdge: destinationEdge,\n destinationAxis: droppable.axis\n });\n\n var isVisible = function () {\n if (isMovingPastLastIndex) {\n return true;\n }\n\n return (0, _isVisibleInNewLocation2.default)({\n draggable: draggable,\n destination: droppable,\n newCenter: newCenter,\n viewport: viewport\n });\n }();\n\n if (!isVisible) {\n return null;\n }\n\n var movingRelativeToDisplacement = {\n draggableId: movingRelativeTo.descriptor.id,\n isVisible: true,\n shouldAnimate: true\n };\n\n var modified = isMovingForward ? previousImpact.movement.displaced.slice(1, previousImpact.movement.displaced.length) : [movingRelativeToDisplacement].concat((0, _toConsumableArray3.default)(previousImpact.movement.displaced));\n\n var displaced = modified.map(function (displacement) {\n if (displacement === movingRelativeToDisplacement) {\n return displacement;\n }\n\n var target = draggables[displacement.draggableId];\n\n var updated = (0, _getDisplacement2.default)({\n draggable: target,\n destination: droppable,\n viewport: viewport,\n previousImpact: previousImpact\n });\n\n return updated;\n });\n\n var newImpact = {\n movement: {\n displaced: displaced,\n\n amount: (0, _position.patch)(axis.line, draggable.page.withMargin[axis.size]),\n\n isBeyondStartPosition: false\n },\n destination: {\n droppableId: droppable.descriptor.id,\n index: proposedIndex\n },\n direction: droppable.axis.direction\n };\n\n return {\n pageCenter: newCenter,\n impact: newImpact\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getBestCrossAxisDroppable = require('./get-best-cross-axis-droppable');\n\nvar _getBestCrossAxisDroppable2 = _interopRequireDefault(_getBestCrossAxisDroppable);\n\nvar _getClosestDraggable = require('./get-closest-draggable');\n\nvar _getClosestDraggable2 = _interopRequireDefault(_getClosestDraggable);\n\nvar _moveToNewDroppable = require('./move-to-new-droppable/');\n\nvar _moveToNewDroppable2 = _interopRequireDefault(_moveToNewDroppable);\n\nvar _noImpact = require('../no-impact');\n\nvar _noImpact2 = _interopRequireDefault(_noImpact);\n\nvar _getDraggablesInsideDroppable = require('../get-draggables-inside-droppable');\n\nvar _getDraggablesInsideDroppable2 = _interopRequireDefault(_getDraggablesInsideDroppable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n pageCenter = _ref.pageCenter,\n draggableId = _ref.draggableId,\n droppableId = _ref.droppableId,\n home = _ref.home,\n draggables = _ref.draggables,\n droppables = _ref.droppables,\n previousImpact = _ref.previousImpact;\n\n var draggable = draggables[draggableId];\n var source = droppables[droppableId];\n\n var destination = (0, _getBestCrossAxisDroppable2.default)({\n isMovingForward: isMovingForward,\n pageCenter: pageCenter,\n source: source,\n droppables: droppables\n });\n\n if (!destination) {\n return null;\n }\n\n var insideDestination = (0, _getDraggablesInsideDroppable2.default)(destination, draggables);\n\n var target = (0, _getClosestDraggable2.default)({\n axis: destination.axis,\n pageCenter: pageCenter,\n destination: destination,\n insideDestination: insideDestination\n });\n\n if (insideDestination.length && !target) {\n return null;\n }\n\n return (0, _moveToNewDroppable2.default)({\n pageCenter: pageCenter,\n destination: destination,\n draggable: draggable,\n target: target,\n insideDestination: insideDestination,\n home: home,\n previousImpact: previousImpact || _noImpact2.default\n });\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _position = require('../position');\n\nvar _isWithin = require('../is-within');\n\nvar _isWithin2 = _interopRequireDefault(_isWithin);\n\nvar _spacing = require('../spacing');\n\nvar _getViewport = require('../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nvar _isVisibleThroughFrame = require('../visibility/is-visible-through-frame');\n\nvar _isVisibleThroughFrame2 = _interopRequireDefault(_isVisibleThroughFrame);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getSafeClipped = function getSafeClipped(droppable) {\n var area = droppable.viewport.clipped;\n\n if (!area) {\n throw new Error('cannot get clipped area from droppable');\n }\n return area;\n};\n\nexports.default = function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n pageCenter = _ref.pageCenter,\n source = _ref.source,\n droppables = _ref.droppables;\n\n var sourceClipped = source.viewport.clipped;\n\n if (!sourceClipped) {\n return null;\n }\n\n var axis = source.axis;\n var isBetweenSourceClipped = (0, _isWithin2.default)(sourceClipped[axis.start], sourceClipped[axis.end]);\n var viewport = (0, _getViewport2.default)();\n\n var candidates = (0, _keys2.default)(droppables).map(function (id) {\n return droppables[id];\n }).filter(function (droppable) {\n return droppable !== source;\n }).filter(function (droppable) {\n return droppable.isEnabled;\n }).filter(function (droppable) {\n return Boolean(droppable.viewport.clipped);\n }).filter(function (droppable) {\n return (0, _isVisibleThroughFrame2.default)(viewport)(droppable.viewport.frame);\n }).filter(function (droppable) {\n var targetClipped = getSafeClipped(droppable);\n\n if (isMovingForward) {\n return sourceClipped[axis.crossAxisEnd] <= targetClipped[axis.crossAxisStart];\n }\n\n return targetClipped[axis.crossAxisEnd] <= sourceClipped[axis.crossAxisStart];\n }).filter(function (droppable) {\n var targetClipped = getSafeClipped(droppable);\n\n var isBetweenDestinationClipped = (0, _isWithin2.default)(targetClipped[axis.start], targetClipped[axis.end]);\n\n return isBetweenSourceClipped(targetClipped[axis.start]) || isBetweenSourceClipped(targetClipped[axis.end]) || isBetweenDestinationClipped(sourceClipped[axis.start]) || isBetweenDestinationClipped(sourceClipped[axis.end]);\n }).sort(function (a, b) {\n var first = getSafeClipped(a)[axis.crossAxisStart];\n var second = getSafeClipped(b)[axis.crossAxisStart];\n\n if (isMovingForward) {\n return first - second;\n }\n return second - first;\n }).filter(function (droppable, index, array) {\n return getSafeClipped(droppable)[axis.crossAxisStart] === getSafeClipped(array[0])[axis.crossAxisStart];\n });\n\n if (!candidates.length) {\n return null;\n }\n\n if (candidates.length === 1) {\n return candidates[0];\n }\n\n var contains = candidates.filter(function (droppable) {\n var isWithinDroppable = (0, _isWithin2.default)(getSafeClipped(droppable)[axis.start], getSafeClipped(droppable)[axis.end]);\n return isWithinDroppable(pageCenter[axis.line]);\n });\n\n if (contains.length === 1) {\n return contains[0];\n }\n\n if (contains.length > 1) {\n return contains.sort(function (a, b) {\n return getSafeClipped(a)[axis.start] - getSafeClipped(b)[axis.start];\n })[0];\n }\n\n return candidates.sort(function (a, b) {\n var first = (0, _position.closest)(pageCenter, (0, _spacing.getCorners)(getSafeClipped(a)));\n var second = (0, _position.closest)(pageCenter, (0, _spacing.getCorners)(getSafeClipped(b)));\n\n if (first !== second) {\n return first - second;\n }\n\n return getSafeClipped(a)[axis.start] - getSafeClipped(b)[axis.start];\n })[0];\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _position = require('../position');\n\nvar _getViewport = require('../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nvar _isPartiallyVisible = require('../visibility/is-partially-visible');\n\nvar _isPartiallyVisible2 = _interopRequireDefault(_isPartiallyVisible);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var axis = _ref.axis,\n pageCenter = _ref.pageCenter,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination;\n\n if (!insideDestination.length) {\n return null;\n }\n\n var viewport = (0, _getViewport2.default)();\n\n var result = insideDestination.filter(function (draggable) {\n return (0, _isPartiallyVisible2.default)({\n target: draggable.page.withMargin,\n destination: destination,\n viewport: viewport\n });\n }).sort(function (a, b) {\n var distanceToA = (0, _position.distance)(pageCenter, a.page.withMargin.center);\n var distanceToB = (0, _position.distance)(pageCenter, b.page.withMargin.center);\n\n if (distanceToA < distanceToB) {\n return -1;\n }\n\n if (distanceToB < distanceToA) {\n return 1;\n }\n\n return a.page.withMargin[axis.start] - b.page.withMargin[axis.start];\n });\n\n return result.length ? result[0] : null;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toHomeList = require('./to-home-list');\n\nvar _toHomeList2 = _interopRequireDefault(_toHomeList);\n\nvar _toForeignList = require('./to-foreign-list');\n\nvar _toForeignList2 = _interopRequireDefault(_toForeignList);\n\nvar _position = require('../../position');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var pageCenter = _ref.pageCenter,\n destination = _ref.destination,\n draggable = _ref.draggable,\n target = _ref.target,\n home = _ref.home,\n insideDestination = _ref.insideDestination,\n previousImpact = _ref.previousImpact;\n\n var amount = (0, _position.patch)(destination.axis.line, draggable.client.withMargin[destination.axis.size]);\n\n if (destination.descriptor.id === draggable.descriptor.droppableId) {\n return (0, _toHomeList2.default)({\n amount: amount,\n originalIndex: home.index,\n target: target,\n insideDroppable: insideDestination,\n draggable: draggable,\n droppable: destination,\n previousImpact: previousImpact\n });\n }\n\n return (0, _toForeignList2.default)({\n amount: amount,\n pageCenter: pageCenter,\n target: target,\n insideDroppable: insideDestination,\n draggable: draggable,\n droppable: destination,\n previousImpact: previousImpact\n });\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _moveToEdge = require('../../move-to-edge');\n\nvar _moveToEdge2 = _interopRequireDefault(_moveToEdge);\n\nvar _getViewport = require('../../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nvar _getDisplacement = require('../../get-displacement');\n\nvar _getDisplacement2 = _interopRequireDefault(_getDisplacement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var amount = _ref.amount,\n originalIndex = _ref.originalIndex,\n target = _ref.target,\n insideDroppable = _ref.insideDroppable,\n draggable = _ref.draggable,\n droppable = _ref.droppable,\n previousImpact = _ref.previousImpact;\n\n if (!target) {\n console.error('there will always be a target in the original list');\n return null;\n }\n\n var axis = droppable.axis;\n var targetIndex = insideDroppable.indexOf(target);\n\n if (targetIndex === -1) {\n console.error('unable to find target in destination droppable');\n return null;\n }\n\n if (targetIndex === originalIndex) {\n var _newCenter = draggable.page.withoutMargin.center;\n var _newImpact = {\n movement: {\n displaced: [],\n amount: amount,\n isBeyondStartPosition: false\n },\n direction: droppable.axis.direction,\n destination: {\n droppableId: droppable.descriptor.id,\n index: originalIndex\n }\n };\n\n return {\n pageCenter: _newCenter,\n impact: _newImpact\n };\n }\n\n var isMovingPastOriginalIndex = targetIndex > originalIndex;\n var edge = isMovingPastOriginalIndex ? 'end' : 'start';\n\n var newCenter = (0, _moveToEdge2.default)({\n source: draggable.page.withoutMargin,\n sourceEdge: edge,\n destination: isMovingPastOriginalIndex ? target.page.withoutMargin : target.page.withMargin,\n destinationEdge: edge,\n destinationAxis: axis\n });\n\n var modified = function () {\n if (!isMovingPastOriginalIndex) {\n return insideDroppable.slice(targetIndex, originalIndex);\n }\n\n var from = originalIndex + 1;\n\n var to = targetIndex + 1;\n\n return insideDroppable.slice(from, to).reverse();\n }();\n\n var viewport = (0, _getViewport2.default)();\n var displaced = modified.map(function (dimension) {\n return (0, _getDisplacement2.default)({\n draggable: dimension,\n destination: droppable,\n previousImpact: previousImpact,\n viewport: viewport\n });\n });\n\n var newImpact = {\n movement: {\n displaced: displaced,\n amount: amount,\n isBeyondStartPosition: isMovingPastOriginalIndex\n },\n direction: axis.direction,\n destination: {\n droppableId: droppable.descriptor.id,\n index: targetIndex\n }\n };\n\n return {\n pageCenter: newCenter,\n impact: newImpact\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _moveToEdge = require('../../move-to-edge');\n\nvar _moveToEdge2 = _interopRequireDefault(_moveToEdge);\n\nvar _getDisplacement = require('../../get-displacement');\n\nvar _getDisplacement2 = _interopRequireDefault(_getDisplacement);\n\nvar _getViewport = require('../../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var amount = _ref.amount,\n pageCenter = _ref.pageCenter,\n target = _ref.target,\n insideDroppable = _ref.insideDroppable,\n draggable = _ref.draggable,\n droppable = _ref.droppable,\n previousImpact = _ref.previousImpact;\n\n var axis = droppable.axis;\n var isGoingBeforeTarget = Boolean(target && pageCenter[droppable.axis.line] < target.page.withMargin.center[droppable.axis.line]);\n\n if (!target) {\n\n var _newCenter = (0, _moveToEdge2.default)({\n source: draggable.page.withoutMargin,\n sourceEdge: 'start',\n destination: droppable.page.withMarginAndPadding,\n destinationEdge: 'start',\n destinationAxis: axis\n });\n\n var _newImpact = {\n movement: {\n displaced: [],\n amount: amount,\n isBeyondStartPosition: false\n },\n direction: axis.direction,\n destination: {\n droppableId: droppable.descriptor.id,\n index: 0\n }\n };\n\n return {\n pageCenter: _newCenter,\n impact: _newImpact\n };\n }\n\n var targetIndex = insideDroppable.indexOf(target);\n var proposedIndex = isGoingBeforeTarget ? targetIndex : targetIndex + 1;\n\n if (targetIndex === -1) {\n console.error('could not find target inside destination');\n return null;\n }\n\n var newCenter = (0, _moveToEdge2.default)({\n source: draggable.page.withoutMargin,\n sourceEdge: 'start',\n destination: target.page.withMargin,\n destinationEdge: isGoingBeforeTarget ? 'start' : 'end',\n destinationAxis: axis\n });\n\n var viewport = (0, _getViewport2.default)();\n var displaced = insideDroppable.slice(proposedIndex, insideDroppable.length).map(function (dimension) {\n return (0, _getDisplacement2.default)({\n draggable: dimension,\n destination: droppable,\n viewport: viewport,\n previousImpact: previousImpact\n });\n });\n\n var newImpact = {\n movement: {\n displaced: displaced,\n amount: amount,\n isBeyondStartPosition: false\n },\n direction: axis.direction,\n destination: {\n droppableId: droppable.descriptor.id,\n index: proposedIndex\n }\n };\n\n return {\n pageCenter: newCenter,\n impact: newImpact\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (hooks, previous, current) {\n var onDragStart = hooks.onDragStart,\n onDragEnd = hooks.onDragEnd;\n\n var currentPhase = current.phase;\n var previousPhase = previous.phase;\n\n if (currentPhase === previousPhase) {\n return;\n }\n\n if (currentPhase === 'DRAGGING' && previousPhase !== 'DRAGGING') {\n if (!onDragStart) {\n return;\n }\n\n if (!current.drag) {\n console.error('cannot fire onDragStart hook without drag state', { current: current, previous: previous });\n return;\n }\n\n var descriptor = current.drag.initial.descriptor;\n var home = current.dimension.droppable[descriptor.droppableId];\n\n if (!home) {\n console.error('cannot find dimension for home droppable');\n return;\n }\n\n var source = {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n };\n\n var start = {\n draggableId: descriptor.id,\n type: home.descriptor.type,\n source: source\n };\n\n onDragStart(start);\n return;\n }\n\n if (currentPhase === 'DROP_COMPLETE' && previousPhase !== 'DROP_COMPLETE') {\n if (!current.drop || !current.drop.result) {\n console.error('cannot fire onDragEnd hook without drag state', { current: current, previous: previous });\n return;\n }\n\n var _current$drop$result = current.drop.result,\n _source = _current$drop$result.source,\n destination = _current$drop$result.destination,\n draggableId = _current$drop$result.draggableId,\n type = _current$drop$result.type;\n\n if (!destination) {\n onDragEnd(current.drop.result);\n return;\n }\n\n var didMove = _source.droppableId !== destination.droppableId || _source.index !== destination.index;\n\n if (didMove) {\n onDragEnd(current.drop.result);\n return;\n }\n\n var muted = {\n draggableId: draggableId,\n type: type,\n source: _source,\n destination: null\n };\n\n onDragEnd(muted);\n return;\n }\n\n if (currentPhase === 'IDLE' && previousPhase === 'DRAGGING') {\n if (!previous.drag) {\n console.error('cannot fire onDragEnd for cancel because cannot find previous drag');\n return;\n }\n\n var _descriptor = previous.drag.initial.descriptor;\n var _home = previous.dimension.droppable[_descriptor.droppableId];\n\n if (!_home) {\n console.error('cannot find dimension for home droppable');\n return;\n }\n\n var _source2 = {\n index: _descriptor.index,\n droppableId: _descriptor.droppableId\n };\n\n var result = {\n draggableId: _descriptor.id,\n type: _home.descriptor.type,\n source: _source2,\n destination: null\n };\n onDragEnd(result);\n return;\n }\n\n if (currentPhase === 'IDLE' && previousPhase === 'DROP_ANIMATING') {\n if (!previous.drop || !previous.drop.pending) {\n console.error('cannot fire onDragEnd for cancel because cannot find previous pending drop');\n return;\n }\n\n var _result = {\n draggableId: previous.drop.pending.result.draggableId,\n type: previous.drop.pending.result.type,\n source: previous.drop.pending.result.source,\n destination: null\n };\n onDragEnd(_result);\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends4 = require('babel-runtime/helpers/extends');\n\nvar _extends5 = _interopRequireDefault(_extends4);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (callbacks) {\n var state = {\n droppables: {},\n draggables: {},\n isCollecting: false,\n request: null,\n frameId: null\n };\n\n var setState = function setState(partial) {\n var newState = (0, _extends5.default)({}, state, partial);\n state = newState;\n };\n\n var cancel = function cancel() {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n\n if (!state.isCollecting) {\n return;\n }\n\n stopCollecting();\n callbacks.cancel();\n };\n\n var registerDraggable = function registerDraggable(descriptor, getDimension) {\n var id = descriptor.id;\n\n if (!state.droppables[descriptor.droppableId]) {\n cancel('Cannot register Draggable ' + id + ' as there is no entry for the Droppable ' + descriptor.droppableId);\n return;\n }\n\n var entry = {\n descriptor: descriptor,\n getDimension: getDimension\n };\n var draggables = (0, _extends5.default)({}, state.draggables, (0, _defineProperty3.default)({}, id, entry));\n\n setState({\n draggables: draggables\n });\n\n if (!state.isCollecting) {\n return;\n }\n\n console.warn('Adding a draggable during a drag is currently not supported');\n };\n\n var registerDroppable = function registerDroppable(descriptor, droppableCallbacks) {\n var id = descriptor.id;\n\n var entry = {\n descriptor: descriptor,\n callbacks: droppableCallbacks\n };\n\n var droppables = (0, _extends5.default)({}, state.droppables, (0, _defineProperty3.default)({}, id, entry));\n\n setState({\n droppables: droppables\n });\n\n if (!state.isCollecting) {\n return;\n }\n\n console.warn('Currently not supporting updating Droppables during a drag');\n };\n\n var updateDroppableIsEnabled = function updateDroppableIsEnabled(id, isEnabled) {\n if (!state.droppables[id]) {\n cancel('Cannot update the scroll on Droppable ' + id + ' as it is not registered');\n return;\n }\n\n if (!state.isCollecting) {\n return;\n }\n callbacks.updateDroppableIsEnabled(id, isEnabled);\n };\n\n var updateDroppableScroll = function updateDroppableScroll(id, newScroll) {\n if (!state.droppables[id]) {\n cancel('Cannot update the scroll on Droppable ' + id + ' as it is not registered');\n return;\n }\n\n if (!state.isCollecting) {\n return;\n }\n callbacks.updateDroppableScroll(id, newScroll);\n };\n\n var unregisterDraggable = function unregisterDraggable(descriptor) {\n var entry = state.draggables[descriptor.id];\n\n if (!entry) {\n cancel('Cannot unregister Draggable with id ' + descriptor.id + ' as it is not registered');\n return;\n }\n\n if (entry.descriptor !== descriptor) {\n return;\n }\n\n var newMap = (0, _extends5.default)({}, state.draggables);\n delete newMap[descriptor.id];\n\n setState({\n draggables: newMap\n });\n\n if (!state.isCollecting) {\n return;\n }\n\n console.warn('currently not supporting unmounting a Draggable during a drag');\n };\n\n var unregisterDroppable = function unregisterDroppable(descriptor) {\n var entry = state.droppables[descriptor.id];\n\n if (!entry) {\n cancel('Cannot unregister Droppable with id ' + descriptor.id + ' as as it is not registered');\n return;\n }\n\n if (entry.descriptor !== descriptor) {\n return;\n }\n\n var newMap = (0, _extends5.default)({}, state.droppables);\n delete newMap[descriptor.id];\n\n setState({\n droppables: newMap\n });\n\n if (!state.isCollecting) {\n return;\n }\n\n console.warn('currently not supporting unmounting a Droppable during a drag');\n };\n\n var getToBeCollected = function getToBeCollected() {\n var draggables = state.draggables;\n var droppables = state.droppables;\n var request = state.request;\n\n if (!request) {\n console.error('cannot find request in state');\n return [];\n }\n\n var descriptor = draggables[request].descriptor;\n var home = droppables[descriptor.droppableId].descriptor;\n\n var draggablesToBeCollected = (0, _keys2.default)(draggables).map(function (id) {\n return draggables[id].descriptor;\n }).filter(function (item) {\n return item.id !== descriptor.id;\n }).filter(function (item) {\n var entry = droppables[item.droppableId];\n\n if (!entry) {\n console.warn('Orphan Draggable found ' + item.id + ' which says it belongs to unknown Droppable ' + item.droppableId);\n return false;\n }\n\n return entry.descriptor.type === home.type;\n });\n\n var droppablesToBeCollected = (0, _keys2.default)(droppables).map(function (id) {\n return droppables[id].descriptor;\n }).filter(function (item) {\n return item.id !== home.id;\n }).filter(function (item) {\n var droppable = droppables[item.id].descriptor;\n return droppable.type === home.type;\n });\n\n var toBeCollected = [].concat((0, _toConsumableArray3.default)(droppablesToBeCollected), (0, _toConsumableArray3.default)(draggablesToBeCollected));\n\n return toBeCollected;\n };\n\n var processPrimaryDimensions = function processPrimaryDimensions(request) {\n if (state.isCollecting) {\n cancel('Cannot start capturing dimensions for a drag it is already dragging');\n return;\n }\n\n if (!request) {\n cancel('Cannot start capturing dimensions with an invalid request', request);\n return;\n }\n\n setState({\n isCollecting: true,\n request: request\n });\n\n var draggables = state.draggables;\n var droppables = state.droppables;\n var draggableEntry = draggables[request];\n\n if (!draggableEntry) {\n cancel('Cannot find Draggable with id ' + request + ' to start collecting dimensions');\n return;\n }\n\n var homeEntry = droppables[draggableEntry.descriptor.droppableId];\n\n if (!homeEntry) {\n cancel('Cannot find home Droppable [id:' + draggableEntry.descriptor.droppableId + '] for Draggable [id:' + request + ']');\n return;\n }\n\n var home = homeEntry.callbacks.getDimension();\n var draggable = draggableEntry.getDimension();\n\n callbacks.publishDroppables([home]);\n callbacks.publishDraggables([draggable]);\n\n homeEntry.callbacks.watchScroll();\n };\n\n var setFrameId = function setFrameId(frameId) {\n setState({\n frameId: frameId\n });\n };\n\n var processSecondaryDimensions = function processSecondaryDimensions() {\n if (!state.isCollecting) {\n cancel('Cannot collect secondary dimensions when collection is not occurring');\n return;\n }\n\n var toBeCollected = getToBeCollected();\n\n var collectFrameId = requestAnimationFrame(function () {\n var toBePublishedBuffer = toBeCollected.map(function (descriptor) {\n if (descriptor.type) {\n return state.droppables[descriptor.id].callbacks.getDimension();\n }\n\n return state.draggables[descriptor.id].getDimension();\n });\n\n var publishFrameId = requestAnimationFrame(function () {\n var toBePublished = toBePublishedBuffer.reduce(function (previous, dimension) {\n if (dimension.placeholder) {\n previous.draggables.push(dimension);\n } else {\n previous.droppables.push(dimension);\n }\n return previous;\n }, { draggables: [], droppables: [] });\n\n if (toBePublished.droppables.length) {\n callbacks.publishDroppables(toBePublished.droppables);\n }\n if (toBePublished.draggables.length) {\n callbacks.publishDraggables(toBePublished.draggables);\n }\n\n toBePublished.droppables.forEach(function (dimension) {\n var entry = state.droppables[dimension.descriptor.id];\n entry.callbacks.watchScroll();\n });\n\n setFrameId(null);\n });\n\n setFrameId(publishFrameId);\n });\n\n setFrameId(collectFrameId);\n };\n\n var stopCollecting = function stopCollecting() {\n (0, _keys2.default)(state.droppables).forEach(function (id) {\n return state.droppables[id].callbacks.unwatchScroll();\n });\n\n if (state.frameId) {\n cancelAnimationFrame(state.frameId);\n }\n\n setState({\n isCollecting: false,\n request: null,\n frameId: null\n });\n };\n\n var onPhaseChange = function onPhaseChange(current) {\n var phase = current.phase;\n\n if (phase === 'COLLECTING_INITIAL_DIMENSIONS') {\n processPrimaryDimensions(current.dimension.request);\n return;\n }\n\n if (phase === 'DRAGGING') {\n if (current.dimension.request !== state.request) {\n cancel('Request in local state does not match that of the store');\n return;\n }\n\n processSecondaryDimensions();\n return;\n }\n\n if (phase === 'DROP_ANIMATING' || phase === 'DROP_COMPLETE') {\n if (state.isCollecting) {\n stopCollecting();\n }\n return;\n }\n\n if (phase === 'IDLE') {\n if (state.isCollecting) {\n stopCollecting();\n }\n }\n };\n\n var marshal = {\n registerDraggable: registerDraggable,\n unregisterDraggable: unregisterDraggable,\n registerDroppable: registerDroppable,\n unregisterDroppable: unregisterDroppable,\n updateDroppableIsEnabled: updateDroppableIsEnabled,\n updateDroppableScroll: updateDroppableScroll,\n onPhaseChange: onPhaseChange\n };\n\n return marshal;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _getStyles = require('./get-styles');\n\nvar _getStyles2 = _interopRequireDefault(_getStyles);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar count = 0;\n\nvar prefix = 'data-react-beautiful-dnd';\n\nexports.default = function () {\n var context = '' + count++;\n var styles = (0, _getStyles2.default)(context);\n\n var state = {\n el: null\n };\n\n var setState = function setState(newState) {\n state = newState;\n };\n\n var setStyle = (0, _memoizeOne2.default)(function (proposed) {\n if (!state.el) {\n console.error('cannot set style of style tag if not mounted');\n return;\n }\n\n state.el.innerHTML = proposed;\n });\n\n var mount = function mount() {\n if (state.el) {\n console.error('Style marshal already mounted');\n return;\n }\n\n var el = document.createElement('style');\n el.type = 'text/css';\n\n el.setAttribute(prefix, context);\n var head = document.querySelector('head');\n\n if (!head) {\n throw new Error('Cannot find the head to append a style to');\n }\n\n head.appendChild(el);\n setState({\n el: el\n });\n\n setStyle(styles.resting);\n };\n\n var onPhaseChange = function onPhaseChange(current) {\n if (!state.el) {\n console.error('cannot update styles until style marshal is mounted');\n return;\n }\n\n var phase = current.phase;\n\n if (phase === 'DRAGGING') {\n setStyle(styles.dragging);\n return;\n }\n\n if (phase === 'DROP_ANIMATING') {\n if (!current.drop || !current.drop.pending) {\n console.error('Invalid state found in style-marshal');\n return;\n }\n\n var trigger = current.drop.pending.trigger;\n\n if (trigger === 'DROP') {\n setStyle(styles.dropAnimating);\n return;\n }\n setStyle(styles.userCancel);\n return;\n }\n\n setStyle(styles.resting);\n };\n\n var unmount = function unmount() {\n if (!state.el) {\n console.error('Cannot unmount style marshal as it is already unmounted');\n return;\n }\n var previous = state.el;\n\n setState({\n el: null\n });\n\n if (!previous.parentNode) {\n console.error('Cannot unmount style marshal as cannot find parent');\n return;\n }\n\n previous.parentNode.removeChild(previous);\n };\n\n var marshal = {\n onPhaseChange: onPhaseChange,\n styleContext: context,\n mount: mount,\n unmount: unmount\n };\n\n return marshal;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _animation = require('../animation');\n\nvar prefix = 'data-react-beautiful-dnd';\n\nexports.default = function (styleContext) {\n var dragHandleSelector = '[' + prefix + '-drag-handle=\"' + styleContext + '\"]';\n var draggableSelector = '[' + prefix + '-draggable=\"' + styleContext + '\"]';\n\n var dragHandleStyles = {\n base: '\\n ' + dragHandleSelector + ' {\\n -webkit-touch-callout: none;\\n -webkit-tap-highlight-color: rgba(0,0,0,0);\\n touch-action: manipulation;\\n }\\n ',\n grabCursor: '\\n ' + dragHandleSelector + ' {\\n cursor: -webkit-grab;\\n cursor: grab;\\n }\\n ',\n blockPointerEvents: '\\n ' + dragHandleSelector + ' {\\n pointer-events: none;\\n }\\n '\n };\n\n var draggableStyles = {\n animateMovement: '\\n ' + draggableSelector + ' {\\n transition: ' + _animation.css.outOfTheWay + ';\\n }\\n '\n };\n\n var bodyStyles = {\n whileActiveDragging: '\\n body {\\n cursor: grabbing;\\n cursor: -webkit-grabbing;\\n user-select: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n }\\n '\n };\n\n var resting = [dragHandleStyles.base, dragHandleStyles.grabCursor].join('');\n\n var dragging = [dragHandleStyles.base, dragHandleStyles.blockPointerEvents, draggableStyles.animateMovement, bodyStyles.whileActiveDragging].join('');\n\n var dropAnimating = [dragHandleStyles.base, dragHandleStyles.grabCursor, draggableStyles.animateMovement].join('');\n\n var userCancel = [dragHandleStyles.base, draggableStyles.animateMovement].join('');\n\n return { resting: resting, dragging: dragging, dropAnimating: dropAnimating, userCancel: userCancel };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (state, id) {\n var phase = state.phase;\n\n if (phase === 'IDLE' || phase === 'DROP_COMPLETE') {\n return true;\n }\n\n if (phase === 'PREPARING' || phase === 'COLLECTING_INITIAL_DIMENSIONS' || phase === 'DRAGGING') {\n return false;\n }\n\n if (phase === 'DROP_ANIMATING') {\n if (!state.drop || !state.drop.pending) {\n console.error('Invalid state shape for drop animating');\n return false;\n }\n\n if (state.drop.pending.result.draggableId === id) {\n return false;\n }\n\n return state.drop.pending.trigger === 'DROP';\n }\n\n console.warn('unhandled phase ' + phase + ' in canLift check');\n return false;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _moveToEdge = require('./move-to-edge');\n\nvar _moveToEdge2 = _interopRequireDefault(_moveToEdge);\n\nvar _getDraggablesInsideDroppable = require('./get-draggables-inside-droppable');\n\nvar _getDraggablesInsideDroppable2 = _interopRequireDefault(_getDraggablesInsideDroppable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var movement = _ref.movement,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n destination = _ref.destination;\n\n var homeCenter = draggable.client.withMargin.center;\n\n if (destination == null) {\n return homeCenter;\n }\n\n var displaced = movement.displaced,\n isBeyondStartPosition = movement.isBeyondStartPosition;\n\n var axis = destination.axis;\n\n var isWithinHomeDroppable = destination.descriptor.id === draggable.descriptor.droppableId;\n\n if (isWithinHomeDroppable && !displaced.length) {\n return homeCenter;\n }\n\n var draggablesInDestination = (0, _getDraggablesInsideDroppable2.default)(destination, draggables);\n\n var destinationFragment = function () {\n if (isWithinHomeDroppable) {\n return draggables[displaced[0].draggableId].client.withMargin;\n }\n\n if (displaced.length) {\n return draggables[displaced[0].draggableId].client.withMargin;\n }\n\n if (draggablesInDestination.length) {\n return draggablesInDestination[draggablesInDestination.length - 1].client.withMargin;\n }\n\n return destination.client.withMarginAndPadding;\n }();\n\n var _ref2 = function () {\n if (isWithinHomeDroppable) {\n if (isBeyondStartPosition) {\n return { sourceEdge: 'end', destinationEdge: 'end' };\n }\n\n return { sourceEdge: 'start', destinationEdge: 'start' };\n }\n\n if (!displaced.length && draggablesInDestination.length) {\n return { sourceEdge: 'start', destinationEdge: 'end' };\n }\n\n return { sourceEdge: 'start', destinationEdge: 'start' };\n }(),\n sourceEdge = _ref2.sourceEdge,\n destinationEdge = _ref2.destinationEdge;\n\n var source = draggable.client.withMargin;\n\n var targetCenter = (0, _moveToEdge2.default)({\n source: source,\n sourceEdge: sourceEdge,\n destination: destinationFragment,\n destinationEdge: destinationEdge,\n destinationAxis: axis\n });\n\n return targetCenter;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _connectedDroppable = require('./connected-droppable');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_connectedDroppable).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.makeSelector = undefined;\n\nvar _reactRedux = require('react-redux');\n\nvar _reselect = require('reselect');\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _contextKeys = require('../context-keys');\n\nvar _selectors = require('../../state/selectors');\n\nvar _droppable = require('./droppable');\n\nvar _droppable2 = _interopRequireDefault(_droppable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar makeSelector = exports.makeSelector = function makeSelector() {\n var idSelector = function idSelector(state, ownProps) {\n return ownProps.droppableId;\n };\n var isDropDisabledSelector = function isDropDisabledSelector(state, ownProps) {\n return ownProps.isDropDisabled || false;\n };\n\n var getIsDraggingOver = (0, _memoizeOne2.default)(function (id, destination) {\n if (!destination) {\n return false;\n }\n return destination.droppableId === id;\n });\n\n var getPlaceholder = (0, _memoizeOne2.default)(function (id, destination, draggable) {\n if (!draggable) {\n return null;\n }\n\n if (!destination) {\n return null;\n }\n\n if (id === draggable.descriptor.droppableId) {\n return null;\n }\n\n if (id !== destination.droppableId) {\n return null;\n }\n\n return draggable.placeholder;\n });\n\n var getMapProps = (0, _memoizeOne2.default)(function (isDraggingOver, placeholder) {\n return {\n isDraggingOver: isDraggingOver,\n placeholder: placeholder\n };\n });\n\n return (0, _reselect.createSelector)([_selectors.phaseSelector, _selectors.dragSelector, _selectors.draggingDraggableSelector, _selectors.pendingDropSelector, idSelector, isDropDisabledSelector], function (phase, drag, draggable, pending, id, isDropDisabled) {\n if (isDropDisabled) {\n return getMapProps(false, null);\n }\n\n if (phase === 'DRAGGING') {\n if (!drag) {\n console.error('cannot determine dragging over as there is not drag');\n return getMapProps(false, null);\n }\n\n var isDraggingOver = getIsDraggingOver(id, drag.impact.destination);\n\n var placeholder = getPlaceholder(id, drag.impact.destination, draggable);\n return getMapProps(isDraggingOver, placeholder);\n }\n\n if (phase === 'DROP_ANIMATING') {\n if (!pending) {\n console.error('cannot determine dragging over as there is no pending result');\n return getMapProps(false, null);\n }\n\n var _isDraggingOver = getIsDraggingOver(id, pending.impact.destination);\n var _placeholder = getPlaceholder(id, pending.result.destination, draggable);\n return getMapProps(_isDraggingOver, _placeholder);\n }\n\n return getMapProps(false, null);\n });\n};\n\nvar makeMapStateToProps = function makeMapStateToProps() {\n var selector = makeSelector();\n return function (state, props) {\n return selector(state, props);\n };\n};\n\nexports.default = (0, _reactRedux.connect)(makeMapStateToProps, null, null, { storeKey: _contextKeys.storeKey })(_droppable2.default);","/** @license React v16.6.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,r=b?Symbol.for(\"react.memo\"):\n60115,t=b?Symbol.for(\"react.lazy\"):60116;function u(a){if(\"object\"===typeof a&&null!==a){var q=a.$$typeof;switch(q){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return q}}case d:return q}}}function v(a){return u(a)===m}exports.typeOf=u;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;\nexports.Profiler=g;exports.Portal=d;exports.StrictMode=f;exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||u(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return u(a)===k};exports.isContextProvider=function(a){return u(a)===h};\nexports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return u(a)===n};exports.isFragment=function(a){return u(a)===e};exports.isProfiler=function(a){return u(a)===g};exports.isPortal=function(a){return u(a)===d};exports.isStrictMode=function(a){return u(a)===f};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.draggingDraggableSelector = exports.dragSelector = exports.pendingDropSelector = exports.phaseSelector = undefined;\n\nvar _reselect = require('reselect');\n\nvar phaseSelector = exports.phaseSelector = function phaseSelector(state) {\n return state.phase;\n};\n\nvar pendingDropSelector = exports.pendingDropSelector = function pendingDropSelector(state) {\n if (!state.drop || !state.drop.pending) {\n return null;\n }\n return state.drop.pending;\n};\n\nvar dragSelector = exports.dragSelector = function dragSelector(state) {\n return state.drag;\n};\n\nvar draggableMapSelector = function draggableMapSelector(state) {\n return state.dimension.draggable;\n};\n\nvar draggingDraggableSelector = exports.draggingDraggableSelector = (0, _reselect.createSelector)([phaseSelector, dragSelector, pendingDropSelector, draggableMapSelector], function (phase, drag, pending, draggables) {\n if (phase === 'DRAGGING') {\n if (!drag) {\n console.error('cannot get placeholder dimensions as there is an invalid drag state');\n return null;\n }\n\n var draggable = draggables[drag.initial.descriptor.id];\n return draggable;\n }\n\n if (phase === 'DROP_ANIMATING') {\n if (!pending) {\n console.error('cannot get placeholder dimensions as there is an invalid drag state');\n return null;\n }\n\n if (!pending.result.destination) {\n return null;\n }\n\n var _draggable = draggables[pending.result.draggableId];\n return _draggable;\n }\n\n return null;\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _droppableDimensionPublisher = require('../droppable-dimension-publisher/');\n\nvar _droppableDimensionPublisher2 = _interopRequireDefault(_droppableDimensionPublisher);\n\nvar _placeholder = require('../placeholder/');\n\nvar _placeholder2 = _interopRequireDefault(_placeholder);\n\nvar _contextKeys = require('../context-keys');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Droppable = function (_Component) {\n (0, _inherits3.default)(Droppable, _Component);\n\n function Droppable() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, Droppable);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = Droppable.__proto__ || (0, _getPrototypeOf2.default)(Droppable)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n ref: null\n }, _this.setRef = function (ref) {\n if (ref === null) {\n return;\n }\n\n if (ref === _this.state.ref) {\n return;\n }\n\n _this.setState({\n ref: ref\n });\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(Droppable, [{\n key: 'getChildContext',\n value: function getChildContext() {\n var value = (0, _defineProperty3.default)({}, _contextKeys.droppableIdKey, this.props.droppableId);\n return value;\n }\n }, {\n key: 'getPlaceholder',\n value: function getPlaceholder() {\n if (!this.props.placeholder) {\n return null;\n }\n\n return _react2.default.createElement(_placeholder2.default, { placeholder: this.props.placeholder });\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n direction = _props.direction,\n droppableId = _props.droppableId,\n ignoreContainerClipping = _props.ignoreContainerClipping,\n isDraggingOver = _props.isDraggingOver,\n isDropDisabled = _props.isDropDisabled,\n type = _props.type;\n\n var provided = {\n innerRef: this.setRef,\n placeholder: this.getPlaceholder()\n };\n var snapshot = {\n isDraggingOver: isDraggingOver\n };\n\n return _react2.default.createElement(\n _droppableDimensionPublisher2.default,\n {\n droppableId: droppableId,\n type: type,\n direction: direction,\n ignoreContainerClipping: ignoreContainerClipping,\n isDropDisabled: isDropDisabled,\n targetRef: this.state.ref\n },\n children(provided, snapshot)\n );\n }\n }]);\n return Droppable;\n}(_react.Component);\n\nDroppable.defaultProps = {\n type: 'DEFAULT',\n isDropDisabled: false,\n direction: 'vertical',\n ignoreContainerClipping: false\n};\nDroppable.childContextTypes = (0, _defineProperty3.default)({}, _contextKeys.droppableIdKey, _propTypes2.default.string.isRequired);\nexports.default = Droppable;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _droppableDimensionPublisher = require('./droppable-dimension-publisher');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_droppableDimensionPublisher).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _rafSchd = require('raf-schd');\n\nvar _rafSchd2 = _interopRequireDefault(_rafSchd);\n\nvar _getWindowScrollPosition = require('../get-window-scroll-position');\n\nvar _getWindowScrollPosition2 = _interopRequireDefault(_getWindowScrollPosition);\n\nvar _getArea = require('../../state/get-area');\n\nvar _getArea2 = _interopRequireDefault(_getArea);\n\nvar _dimension = require('../../state/dimension');\n\nvar _getClosestScrollable = require('../get-closest-scrollable');\n\nvar _getClosestScrollable2 = _interopRequireDefault(_getClosestScrollable);\n\nvar _contextKeys = require('../context-keys');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar origin = { x: 0, y: 0 };\n\nvar DroppableDimensionPublisher = function (_Component) {\n (0, _inherits3.default)(DroppableDimensionPublisher, _Component);\n\n function DroppableDimensionPublisher(props, context) {\n (0, _classCallCheck3.default)(this, DroppableDimensionPublisher);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DroppableDimensionPublisher.__proto__ || (0, _getPrototypeOf2.default)(DroppableDimensionPublisher)).call(this, props, context));\n\n _this.closestScrollable = null;\n _this.isWatchingScroll = false;\n _this.publishedDescriptor = null;\n\n _this.getScrollOffset = function () {\n if (!_this.closestScrollable) {\n return origin;\n }\n\n var offset = {\n x: _this.closestScrollable.scrollLeft,\n y: _this.closestScrollable.scrollTop\n };\n\n return offset;\n };\n\n _this.memoizedUpdateScroll = (0, _memoizeOne2.default)(function (x, y) {\n if (!_this.publishedDescriptor) {\n console.error('Cannot update scroll on unpublished droppable');\n return;\n }\n\n var newScroll = { x: x, y: y };\n var marshal = _this.context[_contextKeys.dimensionMarshalKey];\n marshal.updateDroppableScroll(_this.publishedDescriptor.id, newScroll);\n });\n _this.scheduleScrollUpdate = (0, _rafSchd2.default)(function (offset) {\n if (_this.isWatchingScroll) {\n _this.memoizedUpdateScroll(offset.x, offset.y);\n }\n });\n\n _this.onClosestScroll = function () {\n _this.scheduleScrollUpdate(_this.getScrollOffset());\n };\n\n _this.watchScroll = function () {\n if (!_this.props.targetRef) {\n console.error('cannot watch droppable scroll if not in the dom');\n return;\n }\n\n if (_this.closestScrollable == null) {\n return;\n }\n\n if (_this.isWatchingScroll) {\n return;\n }\n\n _this.isWatchingScroll = true;\n _this.closestScrollable.addEventListener('scroll', _this.onClosestScroll, { passive: true });\n };\n\n _this.unwatchScroll = function () {\n if (!_this.isWatchingScroll) {\n return;\n }\n\n _this.isWatchingScroll = false;\n\n if (!_this.closestScrollable) {\n console.error('cannot unbind event listener if element is null');\n return;\n }\n\n _this.closestScrollable.removeEventListener('scroll', _this.onClosestScroll);\n };\n\n _this.getMemoizedDescriptor = (0, _memoizeOne2.default)(function (id, type) {\n return {\n id: id,\n type: type\n };\n });\n\n _this.unpublish = function () {\n if (!_this.publishedDescriptor) {\n console.error('cannot unpublish descriptor when none is published');\n return;\n }\n\n var marshal = _this.context[_contextKeys.dimensionMarshalKey];\n marshal.unregisterDroppable(_this.publishedDescriptor);\n _this.publishedDescriptor = null;\n };\n\n _this.publish = function (descriptor) {\n if (descriptor === _this.publishedDescriptor) {\n return;\n }\n\n if (_this.publishedDescriptor) {\n _this.unpublish();\n }\n\n var marshal = _this.context[_contextKeys.dimensionMarshalKey];\n marshal.registerDroppable(descriptor, _this.callbacks);\n _this.publishedDescriptor = descriptor;\n };\n\n _this.getDimension = function () {\n var _this$props = _this.props,\n direction = _this$props.direction,\n ignoreContainerClipping = _this$props.ignoreContainerClipping,\n isDropDisabled = _this$props.isDropDisabled,\n targetRef = _this$props.targetRef;\n\n\n if (!targetRef) {\n throw new Error('DimensionPublisher cannot calculate a dimension when not attached to the DOM');\n }\n\n if (_this.isWatchingScroll) {\n throw new Error('Attempting to recapture Droppable dimension while already watching scroll on previous capture');\n }\n\n var descriptor = _this.publishedDescriptor;\n\n if (!descriptor) {\n throw new Error('Cannot get dimension for unpublished droppable');\n }\n\n _this.closestScrollable = (0, _getClosestScrollable2.default)(targetRef);\n var frameScroll = _this.getScrollOffset();\n var style = window.getComputedStyle(targetRef);\n\n var margin = {\n top: parseInt(style.marginTop, 10),\n right: parseInt(style.marginRight, 10),\n bottom: parseInt(style.marginBottom, 10),\n left: parseInt(style.marginLeft, 10)\n };\n var padding = {\n top: parseInt(style.paddingTop, 10),\n right: parseInt(style.paddingRight, 10),\n bottom: parseInt(style.paddingBottom, 10),\n left: parseInt(style.paddingLeft, 10)\n };\n\n var client = (0, _getArea2.default)(targetRef.getBoundingClientRect());\n\n var frameClient = function () {\n if (ignoreContainerClipping) {\n return null;\n }\n if (!_this.closestScrollable) {\n return null;\n }\n if (_this.closestScrollable === targetRef) {\n return null;\n }\n return (0, _getArea2.default)(_this.closestScrollable.getBoundingClientRect());\n }();\n\n var dimension = (0, _dimension.getDroppableDimension)({\n descriptor: descriptor,\n direction: direction,\n client: client,\n frameClient: frameClient,\n frameScroll: frameScroll,\n margin: margin,\n padding: padding,\n windowScroll: (0, _getWindowScrollPosition2.default)(),\n isEnabled: !isDropDisabled\n });\n\n return dimension;\n };\n\n var callbacks = {\n getDimension: _this.getDimension,\n watchScroll: _this.watchScroll,\n unwatchScroll: _this.unwatchScroll\n };\n _this.callbacks = callbacks;\n return _this;\n }\n\n (0, _createClass3.default)(DroppableDimensionPublisher, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (!nextProps.targetRef) {\n console.error('Cannot update droppable dimension publisher without a target ref');\n return;\n }\n\n var droppableId = nextProps.droppableId,\n type = nextProps.type;\n\n var descriptor = this.getMemoizedDescriptor(droppableId, type);\n\n this.publish(descriptor);\n\n if (this.props.isDropDisabled === nextProps.isDropDisabled) {\n return;\n }\n\n var marshal = this.context[_contextKeys.dimensionMarshalKey];\n marshal.updateDroppableIsEnabled(nextProps.droppableId, !nextProps.isDropDisabled);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.isWatchingScroll) {\n console.warn('unmounting droppable while it was watching scroll');\n this.unwatchScroll();\n }\n\n this.unpublish();\n }\n }, {\n key: 'render',\n value: function render() {\n return this.props.children;\n }\n }]);\n return DroppableDimensionPublisher;\n}(_react.Component);\n\nDroppableDimensionPublisher.contextTypes = (0, _defineProperty3.default)({}, _contextKeys.dimensionMarshalKey, _propTypes2.default.object.isRequired);\nexports.default = DroppableDimensionPublisher;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar isScrollable = function isScrollable() {\n for (var _len = arguments.length, values = Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n\n return values.some(function (value) {\n return value === 'auto' || value === 'scroll';\n });\n};\n\nvar isElementScrollable = function isElementScrollable(el) {\n var style = window.getComputedStyle(el);\n return isScrollable(style.overflow, style.overflowY, style.overflowX);\n};\n\nvar getClosestScrollable = function getClosestScrollable(el) {\n if (el == null) {\n return null;\n }\n\n if (!isElementScrollable(el)) {\n return getClosestScrollable(el.parentElement);\n }\n\n return el;\n};\n\nexports.default = getClosestScrollable;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Placeholder = function (_PureComponent) {\n (0, _inherits3.default)(Placeholder, _PureComponent);\n\n function Placeholder() {\n (0, _classCallCheck3.default)(this, Placeholder);\n return (0, _possibleConstructorReturn3.default)(this, (Placeholder.__proto__ || (0, _getPrototypeOf2.default)(Placeholder)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(Placeholder, [{\n key: 'render',\n value: function render() {\n\n var placeholder = this.props.placeholder;\n var _placeholder$margin = placeholder.margin,\n top = _placeholder$margin.top,\n left = _placeholder$margin.left,\n bottom = _placeholder$margin.bottom,\n right = _placeholder$margin.right;\n var _placeholder$withoutM = placeholder.withoutMargin,\n width = _placeholder$withoutM.width,\n height = _placeholder$withoutM.height;\n\n\n var style = {\n width: width,\n height: height,\n marginTop: top,\n marginLeft: left,\n marginBottom: bottom,\n marginRight: right,\n pointerEvents: 'none',\n boxSizing: 'border-box'\n };\n return _react2.default.createElement('div', { style: style });\n }\n }]);\n return Placeholder;\n}(_react.PureComponent);\n\nexports.default = Placeholder;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _connectedDraggable = require('./connected-draggable');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_connectedDraggable).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.makeSelector = undefined;\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _reactRedux = require('react-redux');\n\nvar _reselect = require('reselect');\n\nvar _draggable = require('./draggable');\n\nvar _draggable2 = _interopRequireDefault(_draggable);\n\nvar _contextKeys = require('../context-keys');\n\nvar _position = require('../../state/position');\n\nvar _getDisplacementMap = require('../../state/get-displacement-map');\n\nvar _getDisplacementMap2 = _interopRequireDefault(_getDisplacementMap);\n\nvar _actionCreators = require('../../state/action-creators');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar origin = { x: 0, y: 0 };\n\nvar defaultMapProps = {\n isDropAnimating: false,\n isDragging: false,\n offset: origin,\n shouldAnimateDragMovement: false,\n\n shouldAnimateDisplacement: true,\n\n dimension: null,\n direction: null\n};\n\nvar makeSelector = exports.makeSelector = function makeSelector() {\n var memoizedOffset = (0, _memoizeOne2.default)(function (x, y) {\n return {\n x: x, y: y\n };\n });\n\n var getNotDraggingProps = (0, _memoizeOne2.default)(function (offset, shouldAnimateDisplacement) {\n return {\n isDropAnimating: false,\n isDragging: false,\n offset: offset,\n shouldAnimateDisplacement: shouldAnimateDisplacement,\n\n shouldAnimateDragMovement: false,\n dimension: null,\n direction: null\n };\n });\n\n var getDraggingProps = (0, _memoizeOne2.default)(function (offset, shouldAnimateDragMovement, dimension, direction) {\n return {\n isDragging: true,\n isDropAnimating: false,\n shouldAnimateDisplacement: false,\n offset: offset,\n shouldAnimateDragMovement: shouldAnimateDragMovement,\n dimension: dimension,\n direction: direction\n };\n });\n\n var draggingSelector = function draggingSelector(state, ownProps) {\n if (state.phase !== 'DRAGGING' && state.phase !== 'DROP_ANIMATING') {\n return null;\n }\n\n if (state.phase === 'DRAGGING') {\n if (!state.drag) {\n console.error('invalid drag state found in selector');\n return null;\n }\n\n if (state.drag.initial.descriptor.id !== ownProps.draggableId) {\n return null;\n }\n\n var offset = state.drag.current.client.offset;\n var dimension = state.dimension.draggable[ownProps.draggableId];\n var direction = state.drag.impact.direction;\n var shouldAnimateDragMovement = state.drag.current.shouldAnimate;\n\n return getDraggingProps(memoizedOffset(offset.x, offset.y), shouldAnimateDragMovement, dimension, direction);\n }\n\n if (!state.drop || !state.drop.pending) {\n console.error('cannot provide props for dropping item when there is invalid state');\n return null;\n }\n\n if (state.drop.pending.result.draggableId !== ownProps.draggableId) {\n return null;\n }\n\n return {\n isDragging: false,\n isDropAnimating: true,\n offset: state.drop.pending.newHomeOffset,\n\n dimension: state.dimension.draggable[ownProps.draggableId],\n\n direction: null,\n\n shouldAnimateDragMovement: false,\n\n shouldAnimateDisplacement: false\n };\n };\n\n var getOutOfTheWayMovement = function getOutOfTheWayMovement(id, movement) {\n var map = (0, _getDisplacementMap2.default)(movement.displaced);\n var displacement = map[id];\n\n if (!displacement) {\n return null;\n }\n\n if (!displacement.isVisible) {\n return null;\n }\n\n var amount = movement.isBeyondStartPosition ? (0, _position.negate)(movement.amount) : movement.amount;\n\n return getNotDraggingProps(memoizedOffset(amount.x, amount.y), displacement.shouldAnimate);\n };\n\n var movingOutOfTheWaySelector = function movingOutOfTheWaySelector(state, ownProps) {\n if (state.phase !== 'DRAGGING' && state.phase !== 'DROP_ANIMATING') {\n return null;\n }\n\n if (state.phase === 'DRAGGING') {\n if (!state.drag) {\n console.error('cannot correctly move item out of the way when there is invalid state');\n return null;\n }\n\n if (state.drag.initial.descriptor.id === ownProps.draggableId) {\n return null;\n }\n\n return getOutOfTheWayMovement(ownProps.draggableId, state.drag.impact.movement);\n }\n\n if (!state.drop || !state.drop.pending) {\n console.error('cannot provide props for dropping item when there is invalid state');\n return null;\n }\n\n if (state.drop.pending.result.draggableId === ownProps.draggableId) {\n return null;\n }\n\n return getOutOfTheWayMovement(ownProps.draggableId, state.drop.pending.impact.movement);\n };\n\n return (0, _reselect.createSelector)([draggingSelector, movingOutOfTheWaySelector], function (dragging, movingOutOfTheWay) {\n if (dragging) {\n return dragging;\n }\n\n if (movingOutOfTheWay) {\n return movingOutOfTheWay;\n }\n\n return defaultMapProps;\n });\n};\n\nvar makeMapStateToProps = function makeMapStateToProps() {\n var selector = makeSelector();\n\n return function (state, props) {\n return selector(state, props);\n };\n};\n\nvar mapDispatchToProps = {\n lift: _actionCreators.lift,\n move: _actionCreators.move,\n moveForward: _actionCreators.moveForward,\n moveBackward: _actionCreators.moveBackward,\n crossAxisMoveForward: _actionCreators.crossAxisMoveForward,\n crossAxisMoveBackward: _actionCreators.crossAxisMoveBackward,\n moveByWindowScroll: _actionCreators.moveByWindowScroll,\n drop: _actionCreators.drop,\n dropAnimationFinished: _actionCreators.dropAnimationFinished,\n cancel: _actionCreators.cancel\n};\n\nexports.default = (0, _reactRedux.connect)(makeMapStateToProps, mapDispatchToProps, null, { storeKey: _contextKeys.storeKey })(_draggable2.default);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.zIndexOptions = undefined;\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Draggable$contextTyp;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _draggableDimensionPublisher = require('../draggable-dimension-publisher/');\n\nvar _draggableDimensionPublisher2 = _interopRequireDefault(_draggableDimensionPublisher);\n\nvar _moveable = require('../moveable/');\n\nvar _moveable2 = _interopRequireDefault(_moveable);\n\nvar _dragHandle = require('../drag-handle');\n\nvar _dragHandle2 = _interopRequireDefault(_dragHandle);\n\nvar _getWindowScrollPosition = require('../get-window-scroll-position');\n\nvar _getWindowScrollPosition2 = _interopRequireDefault(_getWindowScrollPosition);\n\nvar _getCenterPosition = require('../get-center-position');\n\nvar _getCenterPosition2 = _interopRequireDefault(_getCenterPosition);\n\nvar _placeholder = require('../placeholder');\n\nvar _placeholder2 = _interopRequireDefault(_placeholder);\n\nvar _contextKeys = require('../context-keys');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar zIndexOptions = exports.zIndexOptions = {\n dragging: 5000,\n dropAnimating: 4500\n};\n\nvar Draggable = function (_Component) {\n (0, _inherits3.default)(Draggable, _Component);\n\n function Draggable(props, context) {\n (0, _classCallCheck3.default)(this, Draggable);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Draggable.__proto__ || (0, _getPrototypeOf2.default)(Draggable)).call(this, props, context));\n\n _this.state = {\n ref: null\n };\n\n _this.onMoveEnd = function () {\n if (!_this.props.isDropAnimating) {\n return;\n }\n\n _this.props.dropAnimationFinished();\n };\n\n _this.onLift = function (options) {\n _this.throwIfCannotDrag();\n var client = options.client,\n isScrollAllowed = options.isScrollAllowed;\n var _this$props = _this.props,\n lift = _this$props.lift,\n draggableId = _this$props.draggableId;\n var ref = _this.state.ref;\n\n\n if (!ref) {\n throw new Error('cannot lift at this time');\n }\n\n var initial = {\n selection: client,\n center: (0, _getCenterPosition2.default)(ref)\n };\n\n var windowScroll = (0, _getWindowScrollPosition2.default)();\n\n lift(draggableId, initial, windowScroll, isScrollAllowed);\n };\n\n _this.onMove = function (client) {\n _this.throwIfCannotDrag();\n\n var _this$props2 = _this.props,\n draggableId = _this$props2.draggableId,\n dimension = _this$props2.dimension,\n move = _this$props2.move;\n\n if (!dimension) {\n return;\n }\n\n var windowScroll = (0, _getWindowScrollPosition2.default)();\n\n move(draggableId, client, windowScroll);\n };\n\n _this.onMoveForward = function () {\n _this.throwIfCannotDrag();\n _this.props.moveForward(_this.props.draggableId);\n };\n\n _this.onMoveBackward = function () {\n _this.throwIfCannotDrag();\n _this.props.moveBackward(_this.props.draggableId);\n };\n\n _this.onCrossAxisMoveForward = function () {\n _this.throwIfCannotDrag();\n _this.props.crossAxisMoveForward(_this.props.draggableId);\n };\n\n _this.onCrossAxisMoveBackward = function () {\n _this.throwIfCannotDrag();\n _this.props.crossAxisMoveBackward(_this.props.draggableId);\n };\n\n _this.onWindowScroll = function () {\n _this.throwIfCannotDrag();\n var windowScroll = (0, _getWindowScrollPosition2.default)();\n _this.props.moveByWindowScroll(_this.props.draggableId, windowScroll);\n };\n\n _this.onDrop = function () {\n _this.throwIfCannotDrag();\n _this.props.drop();\n };\n\n _this.onCancel = function () {\n _this.props.cancel();\n };\n\n _this.setRef = function (ref) {\n if (ref === null) {\n return;\n }\n\n if (ref === _this.state.ref) {\n return;\n }\n\n _this.setState({\n ref: ref\n });\n };\n\n _this.getDraggableRef = function () {\n return _this.state.ref;\n };\n\n _this.getDraggingStyle = (0, _memoizeOne2.default)(function (dimension, isDropAnimating, movementStyle) {\n var _dimension$client$wit = dimension.client.withoutMargin,\n width = _dimension$client$wit.width,\n height = _dimension$client$wit.height,\n top = _dimension$client$wit.top,\n left = _dimension$client$wit.left;\n\n var style = {\n position: 'fixed',\n boxSizing: 'border-box',\n zIndex: isDropAnimating ? zIndexOptions.dropAnimating : zIndexOptions.dragging,\n width: width,\n height: height,\n top: top,\n left: left,\n margin: 0,\n pointerEvents: 'none',\n transition: 'none',\n transform: movementStyle.transform ? '' + movementStyle.transform : null\n };\n return style;\n });\n _this.getNotDraggingStyle = (0, _memoizeOne2.default)(function (movementStyle, shouldAnimateDisplacement) {\n var style = {\n transform: movementStyle.transform,\n\n transition: shouldAnimateDisplacement ? null : 'none'\n };\n return style;\n });\n _this.getProvided = (0, _memoizeOne2.default)(function (isDragging, isDropAnimating, shouldAnimateDisplacement, dimension, dragHandleProps, movementStyle) {\n var useDraggingStyle = isDragging || isDropAnimating;\n\n var draggableStyle = function () {\n if (!useDraggingStyle) {\n return _this.getNotDraggingStyle(movementStyle, shouldAnimateDisplacement);\n }\n\n (0, _invariant2.default)(dimension, 'draggable dimension required for dragging');\n\n return _this.getDraggingStyle(dimension, isDropAnimating, movementStyle);\n }();\n\n var provided = {\n innerRef: _this.setRef,\n draggableProps: {\n 'data-react-beautiful-dnd-draggable': _this.styleContext,\n style: draggableStyle\n },\n dragHandleProps: dragHandleProps,\n placeholder: useDraggingStyle ? _this.getPlaceholder() : null\n };\n return provided;\n });\n _this.getSnapshot = (0, _memoizeOne2.default)(function (isDragging, isDropAnimating) {\n return {\n isDragging: isDragging || isDropAnimating\n };\n });\n _this.getSpeed = (0, _memoizeOne2.default)(function (isDragging, shouldAnimateDragMovement, isDropAnimating) {\n if (isDropAnimating) {\n return 'STANDARD';\n }\n\n if (isDragging && shouldAnimateDragMovement) {\n return 'FAST';\n }\n\n return 'INSTANT';\n });\n\n\n var callbacks = {\n onLift: _this.onLift,\n onMove: _this.onMove,\n onDrop: _this.onDrop,\n onCancel: _this.onCancel,\n onMoveBackward: _this.onMoveBackward,\n onMoveForward: _this.onMoveForward,\n onCrossAxisMoveForward: _this.onCrossAxisMoveForward,\n onCrossAxisMoveBackward: _this.onCrossAxisMoveBackward,\n onWindowScroll: _this.onWindowScroll\n };\n\n _this.callbacks = callbacks;\n _this.styleContext = context[_contextKeys.styleContextKey];\n return _this;\n }\n\n (0, _createClass3.default)(Draggable, [{\n key: 'throwIfCannotDrag',\n value: function throwIfCannotDrag() {\n (0, _invariant2.default)(this.state.ref, 'Draggable: cannot drag as no DOM node has been provided');\n (0, _invariant2.default)(!this.props.isDragDisabled, 'Draggable: cannot drag as dragging is not enabled');\n }\n }, {\n key: 'getPlaceholder',\n value: function getPlaceholder() {\n var dimension = this.props.dimension;\n (0, _invariant2.default)(dimension, 'cannot get a drag placeholder when not dragging');\n\n return _react2.default.createElement(_placeholder2.default, { placeholder: dimension.placeholder });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n draggableId = _props.draggableId,\n index = _props.index,\n offset = _props.offset,\n isDragging = _props.isDragging,\n isDropAnimating = _props.isDropAnimating,\n isDragDisabled = _props.isDragDisabled,\n dimension = _props.dimension,\n children = _props.children,\n direction = _props.direction,\n shouldAnimateDragMovement = _props.shouldAnimateDragMovement,\n shouldAnimateDisplacement = _props.shouldAnimateDisplacement,\n disableInteractiveElementBlocking = _props.disableInteractiveElementBlocking;\n\n var droppableId = this.context[_contextKeys.droppableIdKey];\n\n var speed = this.getSpeed(isDragging, shouldAnimateDragMovement, isDropAnimating);\n\n return _react2.default.createElement(\n _draggableDimensionPublisher2.default,\n {\n draggableId: draggableId,\n droppableId: droppableId,\n index: index,\n targetRef: this.state.ref\n },\n _react2.default.createElement(\n _moveable2.default,\n {\n speed: speed,\n destination: offset,\n onMoveEnd: this.onMoveEnd\n },\n function (movementStyle) {\n return _react2.default.createElement(\n _dragHandle2.default,\n {\n draggableId: draggableId,\n isDragging: isDragging,\n direction: direction,\n isEnabled: !isDragDisabled,\n callbacks: _this2.callbacks,\n getDraggableRef: _this2.getDraggableRef,\n\n canDragInteractiveElements: disableInteractiveElementBlocking\n },\n function (dragHandleProps) {\n return children(_this2.getProvided(isDragging, isDropAnimating, shouldAnimateDisplacement, dimension, dragHandleProps, movementStyle), _this2.getSnapshot(isDragging, isDropAnimating));\n }\n );\n }\n )\n );\n }\n }]);\n return Draggable;\n}(_react.Component);\n\nDraggable.defaultProps = {\n isDragDisabled: false,\n\n disableInteractiveElementBlocking: false\n};\nDraggable.contextTypes = (_Draggable$contextTyp = {}, (0, _defineProperty3.default)(_Draggable$contextTyp, _contextKeys.droppableIdKey, _propTypes2.default.string.isRequired), (0, _defineProperty3.default)(_Draggable$contextTyp, _contextKeys.styleContextKey, _propTypes2.default.string.isRequired), _Draggable$contextTyp);\nexports.default = Draggable;","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _draggableDimensionPublisher = require('./draggable-dimension-publisher');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_draggableDimensionPublisher).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _getWindowScrollPosition = require('../get-window-scroll-position');\n\nvar _getWindowScrollPosition2 = _interopRequireDefault(_getWindowScrollPosition);\n\nvar _dimension = require('../../state/dimension');\n\nvar _contextKeys = require('../context-keys');\n\nvar _getArea = require('../../state/get-area');\n\nvar _getArea2 = _interopRequireDefault(_getArea);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DraggableDimensionPublisher = function (_Component) {\n (0, _inherits3.default)(DraggableDimensionPublisher, _Component);\n\n function DraggableDimensionPublisher() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, DraggableDimensionPublisher);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = DraggableDimensionPublisher.__proto__ || (0, _getPrototypeOf2.default)(DraggableDimensionPublisher)).call.apply(_ref, [this].concat(args))), _this), _this.publishedDescriptor = null, _this.getMemoizedDescriptor = (0, _memoizeOne2.default)(function (id, droppableId, index) {\n return {\n id: id,\n droppableId: droppableId,\n index: index\n };\n }), _this.unpublish = function () {\n if (!_this.publishedDescriptor) {\n console.error('cannot unpublish descriptor when none is published');\n return;\n }\n\n var marshal = _this.context[_contextKeys.dimensionMarshalKey];\n marshal.unregisterDraggable(_this.publishedDescriptor);\n _this.publishedDescriptor = null;\n }, _this.publish = function (descriptor) {\n if (descriptor === _this.publishedDescriptor) {\n return;\n }\n\n if (_this.publishedDescriptor) {\n _this.unpublish();\n }\n\n var marshal = _this.context[_contextKeys.dimensionMarshalKey];\n marshal.registerDraggable(descriptor, _this.getDimension);\n _this.publishedDescriptor = descriptor;\n }, _this.getDimension = function () {\n var targetRef = _this.props.targetRef;\n\n if (!targetRef) {\n throw new Error('DraggableDimensionPublisher cannot calculate a dimension when not attached to the DOM');\n }\n\n var descriptor = _this.publishedDescriptor;\n\n if (!descriptor) {\n throw new Error('Cannot get dimension for unpublished draggable');\n }\n\n var style = window.getComputedStyle(targetRef);\n\n var margin = {\n top: parseInt(style.marginTop, 10),\n right: parseInt(style.marginRight, 10),\n bottom: parseInt(style.marginBottom, 10),\n left: parseInt(style.marginLeft, 10)\n };\n\n var client = (0, _getArea2.default)(targetRef.getBoundingClientRect());\n\n var dimension = (0, _dimension.getDraggableDimension)({\n descriptor: descriptor,\n client: client,\n margin: margin,\n windowScroll: (0, _getWindowScrollPosition2.default)()\n });\n\n return dimension;\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(DraggableDimensionPublisher, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var draggableId = nextProps.draggableId,\n droppableId = nextProps.droppableId,\n index = nextProps.index,\n targetRef = nextProps.targetRef;\n\n\n if (!targetRef) {\n console.error('Updating draggable dimension handler without a targetRef');\n return;\n }\n\n var descriptor = this.getMemoizedDescriptor(draggableId, droppableId, index);\n\n this.publish(descriptor);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unpublish();\n }\n }, {\n key: 'render',\n value: function render() {\n return this.props.children;\n }\n }]);\n return DraggableDimensionPublisher;\n}(_react.Component);\n\nDraggableDimensionPublisher.contextTypes = (0, _defineProperty3.default)({}, _contextKeys.dimensionMarshalKey, _propTypes2.default.object.isRequired);\nexports.default = DraggableDimensionPublisher;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _moveable = require('./moveable');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_moveable).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactMotion = require('react-motion');\n\nvar _animation = require('../animation');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar origin = {\n x: 0,\n y: 0\n};\n\nvar noMovement = {\n transform: null\n};\n\nvar isAtOrigin = function isAtOrigin(point) {\n return point.x === origin.x && point.y === origin.y;\n};\n\nvar getStyle = function getStyle(isNotMoving, x, y) {\n if (isNotMoving) {\n return noMovement;\n }\n\n var point = { x: x, y: y };\n\n if (isAtOrigin(point)) {\n return noMovement;\n }\n var style = {\n transform: 'translate(' + point.x + 'px, ' + point.y + 'px)'\n };\n return style;\n};\n\nvar Movable = function (_Component) {\n (0, _inherits3.default)(Movable, _Component);\n\n function Movable() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, Movable);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = Movable.__proto__ || (0, _getPrototypeOf2.default)(Movable)).call.apply(_ref, [this].concat(args))), _this), _this.onRest = function () {\n var onMoveEnd = _this.props.onMoveEnd;\n\n\n if (!onMoveEnd) {\n return;\n }\n\n setTimeout(function () {\n return onMoveEnd();\n });\n }, _this.getFinal = function () {\n var destination = _this.props.destination;\n var speed = _this.props.speed;\n\n if (speed === 'INSTANT') {\n return destination;\n }\n\n var selected = speed === 'FAST' ? _animation.physics.fast : _animation.physics.standard;\n\n return {\n x: (0, _reactMotion.spring)(destination.x, selected),\n y: (0, _reactMotion.spring)(destination.y, selected)\n };\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(Movable, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var final = this.getFinal();\n\n var isNotMoving = isAtOrigin(final);\n\n return _react2.default.createElement(\n _reactMotion.Motion,\n { defaultStyle: origin, style: final, onRest: this.onRest },\n function (current) {\n return _this2.props.children(getStyle(isNotMoving, current.x, current.y));\n }\n );\n }\n }]);\n return Movable;\n}(_react.Component);\n\nMovable.defaultProps = {\n destination: origin\n};\nexports.default = Movable;","'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequire(obj) { return obj && obj.__esModule ? obj['default'] : obj; }\n\nvar _Motion = require('./Motion');\n\nexports.Motion = _interopRequire(_Motion);\n\nvar _StaggeredMotion = require('./StaggeredMotion');\n\nexports.StaggeredMotion = _interopRequire(_StaggeredMotion);\n\nvar _TransitionMotion = require('./TransitionMotion');\n\nexports.TransitionMotion = _interopRequire(_TransitionMotion);\n\nvar _spring = require('./spring');\n\nexports.spring = _interopRequire(_spring);\n\nvar _presets = require('./presets');\n\nexports.presets = _interopRequire(_presets);\n\nvar _stripStyle = require('./stripStyle');\n\nexports.stripStyle = _interopRequire(_stripStyle);\n\n// deprecated, dummy warning function\n\nvar _reorderKeys = require('./reorderKeys');\n\nexports.reorderKeys = _interopRequire(_reorderKeys);","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _mapToZero = require('./mapToZero');\n\nvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\nvar _stripStyle = require('./stripStyle');\n\nvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\nvar _stepper3 = require('./stepper');\n\nvar _stepper4 = _interopRequireDefault(_stepper3);\n\nvar _performanceNow = require('performance-now');\n\nvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\nvar _raf = require('raf');\n\nvar _raf2 = _interopRequireDefault(_raf);\n\nvar _shouldStopAnimation = require('./shouldStopAnimation');\n\nvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar msPerFrame = 1000 / 60;\n\nvar Motion = (function (_React$Component) {\n _inherits(Motion, _React$Component);\n\n _createClass(Motion, null, [{\n key: 'propTypes',\n value: {\n // TOOD: warn against putting a config in here\n defaultStyle: _propTypes2['default'].objectOf(_propTypes2['default'].number),\n style: _propTypes2['default'].objectOf(_propTypes2['default'].oneOfType([_propTypes2['default'].number, _propTypes2['default'].object])).isRequired,\n children: _propTypes2['default'].func.isRequired,\n onRest: _propTypes2['default'].func\n },\n enumerable: true\n }]);\n\n function Motion(props) {\n var _this = this;\n\n _classCallCheck(this, Motion);\n\n _React$Component.call(this, props);\n this.wasAnimating = false;\n this.animationID = null;\n this.prevTime = 0;\n this.accumulatedTime = 0;\n this.unreadPropStyle = null;\n\n this.clearUnreadPropStyle = function (destStyle) {\n var dirty = false;\n var _state = _this.state;\n var currentStyle = _state.currentStyle;\n var currentVelocity = _state.currentVelocity;\n var lastIdealStyle = _state.lastIdealStyle;\n var lastIdealVelocity = _state.lastIdealVelocity;\n\n for (var key in destStyle) {\n if (!Object.prototype.hasOwnProperty.call(destStyle, key)) {\n continue;\n }\n\n var styleValue = destStyle[key];\n if (typeof styleValue === 'number') {\n if (!dirty) {\n dirty = true;\n currentStyle = _extends({}, currentStyle);\n currentVelocity = _extends({}, currentVelocity);\n lastIdealStyle = _extends({}, lastIdealStyle);\n lastIdealVelocity = _extends({}, lastIdealVelocity);\n }\n\n currentStyle[key] = styleValue;\n currentVelocity[key] = 0;\n lastIdealStyle[key] = styleValue;\n lastIdealVelocity[key] = 0;\n }\n }\n\n if (dirty) {\n _this.setState({ currentStyle: currentStyle, currentVelocity: currentVelocity, lastIdealStyle: lastIdealStyle, lastIdealVelocity: lastIdealVelocity });\n }\n };\n\n this.startAnimationIfNecessary = function () {\n // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n // call cb? No, otherwise accidental parent rerender causes cb trigger\n _this.animationID = _raf2['default'](function (timestamp) {\n // check if we need to animate in the first place\n var propsStyle = _this.props.style;\n if (_shouldStopAnimation2['default'](_this.state.currentStyle, propsStyle, _this.state.currentVelocity)) {\n if (_this.wasAnimating && _this.props.onRest) {\n _this.props.onRest();\n }\n\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.wasAnimating = false;\n _this.accumulatedTime = 0;\n return;\n }\n\n _this.wasAnimating = true;\n\n var currentTime = timestamp || _performanceNow2['default']();\n var timeDelta = currentTime - _this.prevTime;\n _this.prevTime = currentTime;\n _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n // more than 10 frames? prolly switched browser tab. Restart\n if (_this.accumulatedTime > msPerFrame * 10) {\n _this.accumulatedTime = 0;\n }\n\n if (_this.accumulatedTime === 0) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.startAnimationIfNecessary();\n return;\n }\n\n var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\n var newLastIdealStyle = {};\n var newLastIdealVelocity = {};\n var newCurrentStyle = {};\n var newCurrentVelocity = {};\n\n for (var key in propsStyle) {\n if (!Object.prototype.hasOwnProperty.call(propsStyle, key)) {\n continue;\n }\n\n var styleValue = propsStyle[key];\n if (typeof styleValue === 'number') {\n newCurrentStyle[key] = styleValue;\n newCurrentVelocity[key] = 0;\n newLastIdealStyle[key] = styleValue;\n newLastIdealVelocity[key] = 0;\n } else {\n var newLastIdealStyleValue = _this.state.lastIdealStyle[key];\n var newLastIdealVelocityValue = _this.state.lastIdealVelocity[key];\n for (var i = 0; i < framesToCatchUp; i++) {\n var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n newLastIdealStyleValue = _stepper[0];\n newLastIdealVelocityValue = _stepper[1];\n }\n\n var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n var nextIdealX = _stepper2[0];\n var nextIdealV = _stepper2[1];\n\n newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n newLastIdealStyle[key] = newLastIdealStyleValue;\n newLastIdealVelocity[key] = newLastIdealVelocityValue;\n }\n }\n\n _this.animationID = null;\n // the amount we're looped over above\n _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\n _this.setState({\n currentStyle: newCurrentStyle,\n currentVelocity: newCurrentVelocity,\n lastIdealStyle: newLastIdealStyle,\n lastIdealVelocity: newLastIdealVelocity\n });\n\n _this.unreadPropStyle = null;\n\n _this.startAnimationIfNecessary();\n });\n };\n\n this.state = this.defaultState();\n }\n\n Motion.prototype.defaultState = function defaultState() {\n var _props = this.props;\n var defaultStyle = _props.defaultStyle;\n var style = _props.style;\n\n var currentStyle = defaultStyle || _stripStyle2['default'](style);\n var currentVelocity = _mapToZero2['default'](currentStyle);\n return {\n currentStyle: currentStyle,\n currentVelocity: currentVelocity,\n lastIdealStyle: currentStyle,\n lastIdealVelocity: currentVelocity\n };\n };\n\n // it's possible that currentStyle's value is stale: if props is immediately\n // changed from 0 to 400 to spring(0) again, the async currentStyle is still\n // at 0 (didn't have time to tick and interpolate even once). If we naively\n // compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n // In reality currentStyle should be 400\n\n Motion.prototype.componentDidMount = function componentDidMount() {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n };\n\n Motion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n if (this.unreadPropStyle != null) {\n // previous props haven't had the chance to be set yet; set them here\n this.clearUnreadPropStyle(this.unreadPropStyle);\n }\n\n this.unreadPropStyle = props.style;\n if (this.animationID == null) {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n }\n };\n\n Motion.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.animationID != null) {\n _raf2['default'].cancel(this.animationID);\n this.animationID = null;\n }\n };\n\n Motion.prototype.render = function render() {\n var renderedChildren = this.props.children(this.state.currentStyle);\n return renderedChildren && _react2['default'].Children.only(renderedChildren);\n };\n\n return Motion;\n})(_react2['default'].Component);\n\nexports['default'] = Motion;\nmodule.exports = exports['default'];\n\n// after checking for unreadPropStyle != null, we manually go set the\n// non-interpolating values (those that are a number, without a spring\n// config)","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _mapToZero = require('./mapToZero');\n\nvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\nvar _stripStyle = require('./stripStyle');\n\nvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\nvar _stepper3 = require('./stepper');\n\nvar _stepper4 = _interopRequireDefault(_stepper3);\n\nvar _performanceNow = require('performance-now');\n\nvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\nvar _raf = require('raf');\n\nvar _raf2 = _interopRequireDefault(_raf);\n\nvar _shouldStopAnimation = require('./shouldStopAnimation');\n\nvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar msPerFrame = 1000 / 60;\n\nfunction shouldStopAnimationAll(currentStyles, styles, currentVelocities) {\n for (var i = 0; i < currentStyles.length; i++) {\n if (!_shouldStopAnimation2['default'](currentStyles[i], styles[i], currentVelocities[i])) {\n return false;\n }\n }\n return true;\n}\n\nvar StaggeredMotion = (function (_React$Component) {\n _inherits(StaggeredMotion, _React$Component);\n\n _createClass(StaggeredMotion, null, [{\n key: 'propTypes',\n value: {\n // TOOD: warn against putting a config in here\n defaultStyles: _propTypes2['default'].arrayOf(_propTypes2['default'].objectOf(_propTypes2['default'].number)),\n styles: _propTypes2['default'].func.isRequired,\n children: _propTypes2['default'].func.isRequired\n },\n enumerable: true\n }]);\n\n function StaggeredMotion(props) {\n var _this = this;\n\n _classCallCheck(this, StaggeredMotion);\n\n _React$Component.call(this, props);\n this.animationID = null;\n this.prevTime = 0;\n this.accumulatedTime = 0;\n this.unreadPropStyles = null;\n\n this.clearUnreadPropStyle = function (unreadPropStyles) {\n var _state = _this.state;\n var currentStyles = _state.currentStyles;\n var currentVelocities = _state.currentVelocities;\n var lastIdealStyles = _state.lastIdealStyles;\n var lastIdealVelocities = _state.lastIdealVelocities;\n\n var someDirty = false;\n for (var i = 0; i < unreadPropStyles.length; i++) {\n var unreadPropStyle = unreadPropStyles[i];\n var dirty = false;\n\n for (var key in unreadPropStyle) {\n if (!Object.prototype.hasOwnProperty.call(unreadPropStyle, key)) {\n continue;\n }\n\n var styleValue = unreadPropStyle[key];\n if (typeof styleValue === 'number') {\n if (!dirty) {\n dirty = true;\n someDirty = true;\n currentStyles[i] = _extends({}, currentStyles[i]);\n currentVelocities[i] = _extends({}, currentVelocities[i]);\n lastIdealStyles[i] = _extends({}, lastIdealStyles[i]);\n lastIdealVelocities[i] = _extends({}, lastIdealVelocities[i]);\n }\n currentStyles[i][key] = styleValue;\n currentVelocities[i][key] = 0;\n lastIdealStyles[i][key] = styleValue;\n lastIdealVelocities[i][key] = 0;\n }\n }\n }\n\n if (someDirty) {\n _this.setState({ currentStyles: currentStyles, currentVelocities: currentVelocities, lastIdealStyles: lastIdealStyles, lastIdealVelocities: lastIdealVelocities });\n }\n };\n\n this.startAnimationIfNecessary = function () {\n // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n // call cb? No, otherwise accidental parent rerender causes cb trigger\n _this.animationID = _raf2['default'](function (timestamp) {\n var destStyles = _this.props.styles(_this.state.lastIdealStyles);\n\n // check if we need to animate in the first place\n if (shouldStopAnimationAll(_this.state.currentStyles, destStyles, _this.state.currentVelocities)) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.accumulatedTime = 0;\n return;\n }\n\n var currentTime = timestamp || _performanceNow2['default']();\n var timeDelta = currentTime - _this.prevTime;\n _this.prevTime = currentTime;\n _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n // more than 10 frames? prolly switched browser tab. Restart\n if (_this.accumulatedTime > msPerFrame * 10) {\n _this.accumulatedTime = 0;\n }\n\n if (_this.accumulatedTime === 0) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.startAnimationIfNecessary();\n return;\n }\n\n var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\n var newLastIdealStyles = [];\n var newLastIdealVelocities = [];\n var newCurrentStyles = [];\n var newCurrentVelocities = [];\n\n for (var i = 0; i < destStyles.length; i++) {\n var destStyle = destStyles[i];\n var newCurrentStyle = {};\n var newCurrentVelocity = {};\n var newLastIdealStyle = {};\n var newLastIdealVelocity = {};\n\n for (var key in destStyle) {\n if (!Object.prototype.hasOwnProperty.call(destStyle, key)) {\n continue;\n }\n\n var styleValue = destStyle[key];\n if (typeof styleValue === 'number') {\n newCurrentStyle[key] = styleValue;\n newCurrentVelocity[key] = 0;\n newLastIdealStyle[key] = styleValue;\n newLastIdealVelocity[key] = 0;\n } else {\n var newLastIdealStyleValue = _this.state.lastIdealStyles[i][key];\n var newLastIdealVelocityValue = _this.state.lastIdealVelocities[i][key];\n for (var j = 0; j < framesToCatchUp; j++) {\n var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n newLastIdealStyleValue = _stepper[0];\n newLastIdealVelocityValue = _stepper[1];\n }\n\n var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n var nextIdealX = _stepper2[0];\n var nextIdealV = _stepper2[1];\n\n newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n newLastIdealStyle[key] = newLastIdealStyleValue;\n newLastIdealVelocity[key] = newLastIdealVelocityValue;\n }\n }\n\n newCurrentStyles[i] = newCurrentStyle;\n newCurrentVelocities[i] = newCurrentVelocity;\n newLastIdealStyles[i] = newLastIdealStyle;\n newLastIdealVelocities[i] = newLastIdealVelocity;\n }\n\n _this.animationID = null;\n // the amount we're looped over above\n _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\n _this.setState({\n currentStyles: newCurrentStyles,\n currentVelocities: newCurrentVelocities,\n lastIdealStyles: newLastIdealStyles,\n lastIdealVelocities: newLastIdealVelocities\n });\n\n _this.unreadPropStyles = null;\n\n _this.startAnimationIfNecessary();\n });\n };\n\n this.state = this.defaultState();\n }\n\n StaggeredMotion.prototype.defaultState = function defaultState() {\n var _props = this.props;\n var defaultStyles = _props.defaultStyles;\n var styles = _props.styles;\n\n var currentStyles = defaultStyles || styles().map(_stripStyle2['default']);\n var currentVelocities = currentStyles.map(function (currentStyle) {\n return _mapToZero2['default'](currentStyle);\n });\n return {\n currentStyles: currentStyles,\n currentVelocities: currentVelocities,\n lastIdealStyles: currentStyles,\n lastIdealVelocities: currentVelocities\n };\n };\n\n StaggeredMotion.prototype.componentDidMount = function componentDidMount() {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n };\n\n StaggeredMotion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n if (this.unreadPropStyles != null) {\n // previous props haven't had the chance to be set yet; set them here\n this.clearUnreadPropStyle(this.unreadPropStyles);\n }\n\n this.unreadPropStyles = props.styles(this.state.lastIdealStyles);\n if (this.animationID == null) {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n }\n };\n\n StaggeredMotion.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.animationID != null) {\n _raf2['default'].cancel(this.animationID);\n this.animationID = null;\n }\n };\n\n StaggeredMotion.prototype.render = function render() {\n var renderedChildren = this.props.children(this.state.currentStyles);\n return renderedChildren && _react2['default'].Children.only(renderedChildren);\n };\n\n return StaggeredMotion;\n})(_react2['default'].Component);\n\nexports['default'] = StaggeredMotion;\nmodule.exports = exports['default'];\n\n// it's possible that currentStyle's value is stale: if props is immediately\n// changed from 0 to 400 to spring(0) again, the async currentStyle is still\n// at 0 (didn't have time to tick and interpolate even once). If we naively\n// compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n// In reality currentStyle should be 400\n\n// after checking for unreadPropStyles != null, we manually go set the\n// non-interpolating values (those that are a number, without a spring\n// config)","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _mapToZero = require('./mapToZero');\n\nvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\nvar _stripStyle = require('./stripStyle');\n\nvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\nvar _stepper3 = require('./stepper');\n\nvar _stepper4 = _interopRequireDefault(_stepper3);\n\nvar _mergeDiff = require('./mergeDiff');\n\nvar _mergeDiff2 = _interopRequireDefault(_mergeDiff);\n\nvar _performanceNow = require('performance-now');\n\nvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\nvar _raf = require('raf');\n\nvar _raf2 = _interopRequireDefault(_raf);\n\nvar _shouldStopAnimation = require('./shouldStopAnimation');\n\nvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar msPerFrame = 1000 / 60;\n\n// the children function & (potential) styles function asks as param an\n// Array<TransitionPlainStyle>, where each TransitionPlainStyle is of the format\n// {key: string, data?: any, style: PlainStyle}. However, the way we keep\n// internal states doesn't contain such a data structure (check the state and\n// TransitionMotionState). So when children function and others ask for such\n// data we need to generate them on the fly by combining mergedPropsStyles and\n// currentStyles/lastIdealStyles\nfunction rehydrateStyles(mergedPropsStyles, unreadPropStyles, plainStyles) {\n // Copy the value to a `const` so that Flow understands that the const won't\n // change and will be non-nullable in the callback below.\n var cUnreadPropStyles = unreadPropStyles;\n if (cUnreadPropStyles == null) {\n return mergedPropsStyles.map(function (mergedPropsStyle, i) {\n return {\n key: mergedPropsStyle.key,\n data: mergedPropsStyle.data,\n style: plainStyles[i]\n };\n });\n }\n return mergedPropsStyles.map(function (mergedPropsStyle, i) {\n for (var j = 0; j < cUnreadPropStyles.length; j++) {\n if (cUnreadPropStyles[j].key === mergedPropsStyle.key) {\n return {\n key: cUnreadPropStyles[j].key,\n data: cUnreadPropStyles[j].data,\n style: plainStyles[i]\n };\n }\n }\n return { key: mergedPropsStyle.key, data: mergedPropsStyle.data, style: plainStyles[i] };\n });\n}\n\nfunction shouldStopAnimationAll(currentStyles, destStyles, currentVelocities, mergedPropsStyles) {\n if (mergedPropsStyles.length !== destStyles.length) {\n return false;\n }\n\n for (var i = 0; i < mergedPropsStyles.length; i++) {\n if (mergedPropsStyles[i].key !== destStyles[i].key) {\n return false;\n }\n }\n\n // we have the invariant that mergedPropsStyles and\n // currentStyles/currentVelocities/last* are synced in terms of cells, see\n // mergeAndSync comment for more info\n for (var i = 0; i < mergedPropsStyles.length; i++) {\n if (!_shouldStopAnimation2['default'](currentStyles[i], destStyles[i].style, currentVelocities[i])) {\n return false;\n }\n }\n\n return true;\n}\n\n// core key merging logic\n\n// things to do: say previously merged style is {a, b}, dest style (prop) is {b,\n// c}, previous current (interpolating) style is {a, b}\n// **invariant**: current[i] corresponds to merged[i] in terms of key\n\n// steps:\n// turn merged style into {a?, b, c}\n// add c, value of c is destStyles.c\n// maybe remove a, aka call willLeave(a), then merged is either {b, c} or {a, b, c}\n// turn current (interpolating) style from {a, b} into {a?, b, c}\n// maybe remove a\n// certainly add c, value of c is willEnter(c)\n// loop over merged and construct new current\n// dest doesn't change, that's owner's\nfunction mergeAndSync(willEnter, willLeave, didLeave, oldMergedPropsStyles, destStyles, oldCurrentStyles, oldCurrentVelocities, oldLastIdealStyles, oldLastIdealVelocities) {\n var newMergedPropsStyles = _mergeDiff2['default'](oldMergedPropsStyles, destStyles, function (oldIndex, oldMergedPropsStyle) {\n var leavingStyle = willLeave(oldMergedPropsStyle);\n if (leavingStyle == null) {\n didLeave({ key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data });\n return null;\n }\n if (_shouldStopAnimation2['default'](oldCurrentStyles[oldIndex], leavingStyle, oldCurrentVelocities[oldIndex])) {\n didLeave({ key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data });\n return null;\n }\n return { key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data, style: leavingStyle };\n });\n\n var newCurrentStyles = [];\n var newCurrentVelocities = [];\n var newLastIdealStyles = [];\n var newLastIdealVelocities = [];\n for (var i = 0; i < newMergedPropsStyles.length; i++) {\n var newMergedPropsStyleCell = newMergedPropsStyles[i];\n var foundOldIndex = null;\n for (var j = 0; j < oldMergedPropsStyles.length; j++) {\n if (oldMergedPropsStyles[j].key === newMergedPropsStyleCell.key) {\n foundOldIndex = j;\n break;\n }\n }\n // TODO: key search code\n if (foundOldIndex == null) {\n var plainStyle = willEnter(newMergedPropsStyleCell);\n newCurrentStyles[i] = plainStyle;\n newLastIdealStyles[i] = plainStyle;\n\n var velocity = _mapToZero2['default'](newMergedPropsStyleCell.style);\n newCurrentVelocities[i] = velocity;\n newLastIdealVelocities[i] = velocity;\n } else {\n newCurrentStyles[i] = oldCurrentStyles[foundOldIndex];\n newLastIdealStyles[i] = oldLastIdealStyles[foundOldIndex];\n newCurrentVelocities[i] = oldCurrentVelocities[foundOldIndex];\n newLastIdealVelocities[i] = oldLastIdealVelocities[foundOldIndex];\n }\n }\n\n return [newMergedPropsStyles, newCurrentStyles, newCurrentVelocities, newLastIdealStyles, newLastIdealVelocities];\n}\n\nvar TransitionMotion = (function (_React$Component) {\n _inherits(TransitionMotion, _React$Component);\n\n _createClass(TransitionMotion, null, [{\n key: 'propTypes',\n value: {\n defaultStyles: _propTypes2['default'].arrayOf(_propTypes2['default'].shape({\n key: _propTypes2['default'].string.isRequired,\n data: _propTypes2['default'].any,\n style: _propTypes2['default'].objectOf(_propTypes2['default'].number).isRequired\n })),\n styles: _propTypes2['default'].oneOfType([_propTypes2['default'].func, _propTypes2['default'].arrayOf(_propTypes2['default'].shape({\n key: _propTypes2['default'].string.isRequired,\n data: _propTypes2['default'].any,\n style: _propTypes2['default'].objectOf(_propTypes2['default'].oneOfType([_propTypes2['default'].number, _propTypes2['default'].object])).isRequired\n }))]).isRequired,\n children: _propTypes2['default'].func.isRequired,\n willEnter: _propTypes2['default'].func,\n willLeave: _propTypes2['default'].func,\n didLeave: _propTypes2['default'].func\n },\n enumerable: true\n }, {\n key: 'defaultProps',\n value: {\n willEnter: function willEnter(styleThatEntered) {\n return _stripStyle2['default'](styleThatEntered.style);\n },\n // recall: returning null makes the current unmounting TransitionStyle\n // disappear immediately\n willLeave: function willLeave() {\n return null;\n },\n didLeave: function didLeave() {}\n },\n enumerable: true\n }]);\n\n function TransitionMotion(props) {\n var _this = this;\n\n _classCallCheck(this, TransitionMotion);\n\n _React$Component.call(this, props);\n this.unmounting = false;\n this.animationID = null;\n this.prevTime = 0;\n this.accumulatedTime = 0;\n this.unreadPropStyles = null;\n\n this.clearUnreadPropStyle = function (unreadPropStyles) {\n var _mergeAndSync = mergeAndSync(_this.props.willEnter, _this.props.willLeave, _this.props.didLeave, _this.state.mergedPropsStyles, unreadPropStyles, _this.state.currentStyles, _this.state.currentVelocities, _this.state.lastIdealStyles, _this.state.lastIdealVelocities);\n\n var mergedPropsStyles = _mergeAndSync[0];\n var currentStyles = _mergeAndSync[1];\n var currentVelocities = _mergeAndSync[2];\n var lastIdealStyles = _mergeAndSync[3];\n var lastIdealVelocities = _mergeAndSync[4];\n\n for (var i = 0; i < unreadPropStyles.length; i++) {\n var unreadPropStyle = unreadPropStyles[i].style;\n var dirty = false;\n\n for (var key in unreadPropStyle) {\n if (!Object.prototype.hasOwnProperty.call(unreadPropStyle, key)) {\n continue;\n }\n\n var styleValue = unreadPropStyle[key];\n if (typeof styleValue === 'number') {\n if (!dirty) {\n dirty = true;\n currentStyles[i] = _extends({}, currentStyles[i]);\n currentVelocities[i] = _extends({}, currentVelocities[i]);\n lastIdealStyles[i] = _extends({}, lastIdealStyles[i]);\n lastIdealVelocities[i] = _extends({}, lastIdealVelocities[i]);\n mergedPropsStyles[i] = {\n key: mergedPropsStyles[i].key,\n data: mergedPropsStyles[i].data,\n style: _extends({}, mergedPropsStyles[i].style)\n };\n }\n currentStyles[i][key] = styleValue;\n currentVelocities[i][key] = 0;\n lastIdealStyles[i][key] = styleValue;\n lastIdealVelocities[i][key] = 0;\n mergedPropsStyles[i].style[key] = styleValue;\n }\n }\n }\n\n // unlike the other 2 components, we can't detect staleness and optionally\n // opt out of setState here. each style object's data might contain new\n // stuff we're not/cannot compare\n _this.setState({\n currentStyles: currentStyles,\n currentVelocities: currentVelocities,\n mergedPropsStyles: mergedPropsStyles,\n lastIdealStyles: lastIdealStyles,\n lastIdealVelocities: lastIdealVelocities\n });\n };\n\n this.startAnimationIfNecessary = function () {\n if (_this.unmounting) {\n return;\n }\n\n // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n // call cb? No, otherwise accidental parent rerender causes cb trigger\n _this.animationID = _raf2['default'](function (timestamp) {\n // https://github.com/chenglou/react-motion/pull/420\n // > if execution passes the conditional if (this.unmounting), then\n // executes async defaultRaf and after that component unmounts and after\n // that the callback of defaultRaf is called, then setState will be called\n // on unmounted component.\n if (_this.unmounting) {\n return;\n }\n\n var propStyles = _this.props.styles;\n var destStyles = typeof propStyles === 'function' ? propStyles(rehydrateStyles(_this.state.mergedPropsStyles, _this.unreadPropStyles, _this.state.lastIdealStyles)) : propStyles;\n\n // check if we need to animate in the first place\n if (shouldStopAnimationAll(_this.state.currentStyles, destStyles, _this.state.currentVelocities, _this.state.mergedPropsStyles)) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.accumulatedTime = 0;\n return;\n }\n\n var currentTime = timestamp || _performanceNow2['default']();\n var timeDelta = currentTime - _this.prevTime;\n _this.prevTime = currentTime;\n _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n // more than 10 frames? prolly switched browser tab. Restart\n if (_this.accumulatedTime > msPerFrame * 10) {\n _this.accumulatedTime = 0;\n }\n\n if (_this.accumulatedTime === 0) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.startAnimationIfNecessary();\n return;\n }\n\n var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\n var _mergeAndSync2 = mergeAndSync(_this.props.willEnter, _this.props.willLeave, _this.props.didLeave, _this.state.mergedPropsStyles, destStyles, _this.state.currentStyles, _this.state.currentVelocities, _this.state.lastIdealStyles, _this.state.lastIdealVelocities);\n\n var newMergedPropsStyles = _mergeAndSync2[0];\n var newCurrentStyles = _mergeAndSync2[1];\n var newCurrentVelocities = _mergeAndSync2[2];\n var newLastIdealStyles = _mergeAndSync2[3];\n var newLastIdealVelocities = _mergeAndSync2[4];\n\n for (var i = 0; i < newMergedPropsStyles.length; i++) {\n var newMergedPropsStyle = newMergedPropsStyles[i].style;\n var newCurrentStyle = {};\n var newCurrentVelocity = {};\n var newLastIdealStyle = {};\n var newLastIdealVelocity = {};\n\n for (var key in newMergedPropsStyle) {\n if (!Object.prototype.hasOwnProperty.call(newMergedPropsStyle, key)) {\n continue;\n }\n\n var styleValue = newMergedPropsStyle[key];\n if (typeof styleValue === 'number') {\n newCurrentStyle[key] = styleValue;\n newCurrentVelocity[key] = 0;\n newLastIdealStyle[key] = styleValue;\n newLastIdealVelocity[key] = 0;\n } else {\n var newLastIdealStyleValue = newLastIdealStyles[i][key];\n var newLastIdealVelocityValue = newLastIdealVelocities[i][key];\n for (var j = 0; j < framesToCatchUp; j++) {\n var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n newLastIdealStyleValue = _stepper[0];\n newLastIdealVelocityValue = _stepper[1];\n }\n\n var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n var nextIdealX = _stepper2[0];\n var nextIdealV = _stepper2[1];\n\n newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n newLastIdealStyle[key] = newLastIdealStyleValue;\n newLastIdealVelocity[key] = newLastIdealVelocityValue;\n }\n }\n\n newLastIdealStyles[i] = newLastIdealStyle;\n newLastIdealVelocities[i] = newLastIdealVelocity;\n newCurrentStyles[i] = newCurrentStyle;\n newCurrentVelocities[i] = newCurrentVelocity;\n }\n\n _this.animationID = null;\n // the amount we're looped over above\n _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\n _this.setState({\n currentStyles: newCurrentStyles,\n currentVelocities: newCurrentVelocities,\n lastIdealStyles: newLastIdealStyles,\n lastIdealVelocities: newLastIdealVelocities,\n mergedPropsStyles: newMergedPropsStyles\n });\n\n _this.unreadPropStyles = null;\n\n _this.startAnimationIfNecessary();\n });\n };\n\n this.state = this.defaultState();\n }\n\n TransitionMotion.prototype.defaultState = function defaultState() {\n var _props = this.props;\n var defaultStyles = _props.defaultStyles;\n var styles = _props.styles;\n var willEnter = _props.willEnter;\n var willLeave = _props.willLeave;\n var didLeave = _props.didLeave;\n\n var destStyles = typeof styles === 'function' ? styles(defaultStyles) : styles;\n\n // this is special. for the first time around, we don't have a comparison\n // between last (no last) and current merged props. we'll compute last so:\n // say default is {a, b} and styles (dest style) is {b, c}, we'll\n // fabricate last as {a, b}\n var oldMergedPropsStyles = undefined;\n if (defaultStyles == null) {\n oldMergedPropsStyles = destStyles;\n } else {\n oldMergedPropsStyles = defaultStyles.map(function (defaultStyleCell) {\n // TODO: key search code\n for (var i = 0; i < destStyles.length; i++) {\n if (destStyles[i].key === defaultStyleCell.key) {\n return destStyles[i];\n }\n }\n return defaultStyleCell;\n });\n }\n var oldCurrentStyles = defaultStyles == null ? destStyles.map(function (s) {\n return _stripStyle2['default'](s.style);\n }) : defaultStyles.map(function (s) {\n return _stripStyle2['default'](s.style);\n });\n var oldCurrentVelocities = defaultStyles == null ? destStyles.map(function (s) {\n return _mapToZero2['default'](s.style);\n }) : defaultStyles.map(function (s) {\n return _mapToZero2['default'](s.style);\n });\n\n var _mergeAndSync3 = mergeAndSync(\n // Because this is an old-style createReactClass component, Flow doesn't\n // understand that the willEnter and willLeave props have default values\n // and will always be present.\n willEnter, willLeave, didLeave, oldMergedPropsStyles, destStyles, oldCurrentStyles, oldCurrentVelocities, oldCurrentStyles, // oldLastIdealStyles really\n oldCurrentVelocities);\n\n var mergedPropsStyles = _mergeAndSync3[0];\n var currentStyles = _mergeAndSync3[1];\n var currentVelocities = _mergeAndSync3[2];\n var lastIdealStyles = _mergeAndSync3[3];\n var lastIdealVelocities = _mergeAndSync3[4];\n // oldLastIdealVelocities really\n\n return {\n currentStyles: currentStyles,\n currentVelocities: currentVelocities,\n lastIdealStyles: lastIdealStyles,\n lastIdealVelocities: lastIdealVelocities,\n mergedPropsStyles: mergedPropsStyles\n };\n };\n\n // after checking for unreadPropStyles != null, we manually go set the\n // non-interpolating values (those that are a number, without a spring\n // config)\n\n TransitionMotion.prototype.componentDidMount = function componentDidMount() {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n };\n\n TransitionMotion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n if (this.unreadPropStyles) {\n // previous props haven't had the chance to be set yet; set them here\n this.clearUnreadPropStyle(this.unreadPropStyles);\n }\n\n var styles = props.styles;\n if (typeof styles === 'function') {\n this.unreadPropStyles = styles(rehydrateStyles(this.state.mergedPropsStyles, this.unreadPropStyles, this.state.lastIdealStyles));\n } else {\n this.unreadPropStyles = styles;\n }\n\n if (this.animationID == null) {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n }\n };\n\n TransitionMotion.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unmounting = true;\n if (this.animationID != null) {\n _raf2['default'].cancel(this.animationID);\n this.animationID = null;\n }\n };\n\n TransitionMotion.prototype.render = function render() {\n var hydratedStyles = rehydrateStyles(this.state.mergedPropsStyles, this.unreadPropStyles, this.state.currentStyles);\n var renderedChildren = this.props.children(hydratedStyles);\n return renderedChildren && _react2['default'].Children.only(renderedChildren);\n };\n\n return TransitionMotion;\n})(_react2['default'].Component);\n\nexports['default'] = TransitionMotion;\nmodule.exports = exports['default'];\n\n// list of styles, each containing interpolating values. Part of what's passed\n// to children function. Notice that this is\n// Array<ActualInterpolatingStyleObject>, without the wrapper that is {key: ...,\n// data: ... style: ActualInterpolatingStyleObject}. Only mergedPropsStyles\n// contains the key & data info (so that we only have a single source of truth\n// for these, and to save space). Check the comment for `rehydrateStyles` to\n// see how we regenerate the entirety of what's passed to children function\n\n// the array that keeps track of currently rendered stuff! Including stuff\n// that you've unmounted but that's still animating. This is where it lives\n\n// it's possible that currentStyle's value is stale: if props is immediately\n// changed from 0 to 400 to spring(0) again, the async currentStyle is still\n// at 0 (didn't have time to tick and interpolate even once). If we naively\n// compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n// In reality currentStyle should be 400","\n\n// core keys merging algorithm. If previous render's keys are [a, b], and the\n// next render's [c, b, d], what's the final merged keys and ordering?\n\n// - c and a must both be before b\n// - b before d\n// - ordering between a and c ambiguous\n\n// this reduces to merging two partially ordered lists (e.g. lists where not\n// every item has a definite ordering, like comparing a and c above). For the\n// ambiguous ordering we deterministically choose to place the next render's\n// item after the previous'; so c after a\n\n// this is called a topological sorting. Except the existing algorithms don't\n// work well with js bc of the amount of allocation, and isn't optimized for our\n// current use-case bc the runtime is linear in terms of edges (see wiki for\n// meaning), which is huge when two lists have many common elements\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = mergeDiff;\n\nfunction mergeDiff(prev, next, onRemove) {\n // bookkeeping for easier access of a key's index below. This is 2 allocations +\n // potentially triggering chrome hash map mode for objs (so it might be faster\n\n var prevKeyIndex = {};\n for (var i = 0; i < prev.length; i++) {\n prevKeyIndex[prev[i].key] = i;\n }\n var nextKeyIndex = {};\n for (var i = 0; i < next.length; i++) {\n nextKeyIndex[next[i].key] = i;\n }\n\n // first, an overly elaborate way of merging prev and next, eliminating\n // duplicates (in terms of keys). If there's dupe, keep the item in next).\n // This way of writing it saves allocations\n var ret = [];\n for (var i = 0; i < next.length; i++) {\n ret[i] = next[i];\n }\n for (var i = 0; i < prev.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(nextKeyIndex, prev[i].key)) {\n // this is called my TM's `mergeAndSync`, which calls willLeave. We don't\n // merge in keys that the user desires to kill\n var fill = onRemove(i, prev[i]);\n if (fill != null) {\n ret.push(fill);\n }\n }\n }\n\n // now all the items all present. Core sorting logic to have the right order\n return ret.sort(function (a, b) {\n var nextOrderA = nextKeyIndex[a.key];\n var nextOrderB = nextKeyIndex[b.key];\n var prevOrderA = prevKeyIndex[a.key];\n var prevOrderB = prevKeyIndex[b.key];\n\n if (nextOrderA != null && nextOrderB != null) {\n // both keys in next\n return nextKeyIndex[a.key] - nextKeyIndex[b.key];\n } else if (prevOrderA != null && prevOrderB != null) {\n // both keys in prev\n return prevKeyIndex[a.key] - prevKeyIndex[b.key];\n } else if (nextOrderA != null) {\n // key a in next, key b in prev\n\n // how to determine the order between a and b? We find a \"pivot\" (term\n // abuse), a key present in both prev and next, that is sandwiched between\n // a and b. In the context of our above example, if we're comparing a and\n // d, b's (the only) pivot\n for (var i = 0; i < next.length; i++) {\n var pivot = next[i].key;\n if (!Object.prototype.hasOwnProperty.call(prevKeyIndex, pivot)) {\n continue;\n }\n\n if (nextOrderA < nextKeyIndex[pivot] && prevOrderB > prevKeyIndex[pivot]) {\n return -1;\n } else if (nextOrderA > nextKeyIndex[pivot] && prevOrderB < prevKeyIndex[pivot]) {\n return 1;\n }\n }\n // pluggable. default to: next bigger than prev\n return 1;\n }\n // prevOrderA, nextOrderB\n for (var i = 0; i < next.length; i++) {\n var pivot = next[i].key;\n if (!Object.prototype.hasOwnProperty.call(prevKeyIndex, pivot)) {\n continue;\n }\n if (nextOrderB < nextKeyIndex[pivot] && prevOrderA > prevKeyIndex[pivot]) {\n return 1;\n } else if (nextOrderB > nextKeyIndex[pivot] && prevOrderA < prevKeyIndex[pivot]) {\n return -1;\n }\n }\n // pluggable. default to: next bigger than prev\n return -1;\n });\n}\n\nmodule.exports = exports['default'];\n// to loop through and find a key's index each time), but I no longer care","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports['default'] = spring;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _presets = require('./presets');\n\nvar _presets2 = _interopRequireDefault(_presets);\n\nvar defaultConfig = _extends({}, _presets2['default'].noWobble, {\n precision: 0.01\n});\n\nfunction spring(val, config) {\n return _extends({}, defaultConfig, config, { val: val });\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = reorderKeys;\n\nvar hasWarned = false;\n\nfunction reorderKeys() {\n if (process.env.NODE_ENV === 'development') {\n if (!hasWarned) {\n hasWarned = true;\n console.error('`reorderKeys` has been removed, since it is no longer needed for TransitionMotion\\'s new styles array API.');\n }\n }\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _dragHandle = require('./drag-handle');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_dragHandle).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _DragHandle$contextTy;\n\nvar _react = require('react');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _contextKeys = require('../context-keys');\n\nvar _shouldAllowDraggingFromTarget = require('./util/should-allow-dragging-from-target');\n\nvar _shouldAllowDraggingFromTarget2 = _interopRequireDefault(_shouldAllowDraggingFromTarget);\n\nvar _createMouseSensor = require('./sensor/create-mouse-sensor');\n\nvar _createMouseSensor2 = _interopRequireDefault(_createMouseSensor);\n\nvar _createKeyboardSensor = require('./sensor/create-keyboard-sensor');\n\nvar _createKeyboardSensor2 = _interopRequireDefault(_createKeyboardSensor);\n\nvar _createTouchSensor = require('./sensor/create-touch-sensor');\n\nvar _createTouchSensor2 = _interopRequireDefault(_createTouchSensor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getFalse = function getFalse() {\n return false;\n};\n\nvar DragHandle = function (_Component) {\n (0, _inherits3.default)(DragHandle, _Component);\n\n function DragHandle(props, context) {\n (0, _classCallCheck3.default)(this, DragHandle);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DragHandle.__proto__ || (0, _getPrototypeOf2.default)(DragHandle)).call(this, props, context));\n\n _this.onKeyDown = function (event) {\n if (_this.mouseSensor.isCapturing()) {\n return;\n }\n\n _this.keyboardSensor.onKeyDown(event, _this.props);\n };\n\n _this.onMouseDown = function (event) {\n if (_this.keyboardSensor.isCapturing() || _this.mouseSensor.isCapturing()) {\n return;\n }\n\n _this.mouseSensor.onMouseDown(event);\n };\n\n _this.onTouchStart = function (event) {\n if (_this.mouseSensor.isCapturing() || _this.keyboardSensor.isCapturing()) {\n console.error('mouse or keyboard already listening when attempting to touch drag');\n return;\n }\n\n _this.touchSensor.onTouchStart(event);\n };\n\n _this.onTouchMove = function (event) {\n _this.touchSensor.onTouchMove(event);\n };\n\n _this.onClick = function (event) {\n _this.mouseSensor.onClick(event);\n _this.touchSensor.onClick(event);\n };\n\n _this.canStartCapturing = function (event) {\n if (_this.isAnySensorCapturing()) {\n return false;\n }\n\n if (!_this.canLift(_this.props.draggableId)) {\n return false;\n }\n\n return (0, _shouldAllowDraggingFromTarget2.default)(event, _this.props);\n };\n\n _this.isAnySensorDragging = function () {\n return _this.sensors.some(function (sensor) {\n return sensor.isDragging();\n });\n };\n\n _this.isAnySensorCapturing = function () {\n return _this.sensors.some(function (sensor) {\n return sensor.isCapturing();\n });\n };\n\n _this.getProvided = (0, _memoizeOne2.default)(function (isEnabled, isDragging) {\n if (!isEnabled) {\n return null;\n }\n\n var provided = {\n onMouseDown: _this.onMouseDown,\n onKeyDown: _this.onKeyDown,\n onTouchStart: _this.onTouchStart,\n onTouchMove: _this.onTouchMove,\n onClick: _this.onClick,\n tabIndex: 0,\n 'aria-grabbed': isDragging,\n 'data-react-beautiful-dnd-drag-handle': _this.styleContext,\n draggable: false,\n onDragStart: getFalse,\n onDrop: getFalse\n };\n\n return provided;\n });\n\n\n var args = {\n callbacks: _this.props.callbacks,\n getDraggableRef: _this.props.getDraggableRef,\n canStartCapturing: _this.canStartCapturing\n };\n\n _this.mouseSensor = (0, _createMouseSensor2.default)(args);\n _this.keyboardSensor = (0, _createKeyboardSensor2.default)(args);\n _this.touchSensor = (0, _createTouchSensor2.default)(args);\n _this.sensors = [_this.mouseSensor, _this.keyboardSensor, _this.touchSensor];\n _this.styleContext = context[_contextKeys.styleContextKey];\n\n _this.canLift = context[_contextKeys.canLiftContextKey];\n return _this;\n }\n\n (0, _createClass3.default)(DragHandle, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var _this2 = this;\n\n this.sensors.forEach(function (sensor) {\n var wasCapturing = sensor.isCapturing();\n var wasDragging = sensor.isDragging();\n\n if (wasCapturing) {\n sensor.kill();\n }\n\n if (wasDragging) {\n _this2.props.callbacks.onCancel();\n }\n });\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var _this3 = this;\n\n var isCapturing = this.isAnySensorCapturing();\n\n if (!isCapturing) {\n return;\n }\n\n var isDragStopping = this.props.isDragging && !nextProps.isDragging;\n\n if (isDragStopping) {\n this.sensors.forEach(function (sensor) {\n if (sensor.isCapturing()) {\n sensor.kill();\n }\n });\n return;\n }\n\n if (!nextProps.isEnabled) {\n this.sensors.forEach(function (sensor) {\n if (sensor.isCapturing()) {\n var wasDragging = sensor.isDragging();\n\n sensor.kill();\n\n if (wasDragging) {\n _this3.props.callbacks.onCancel();\n }\n }\n });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n isEnabled = _props.isEnabled;\n\n\n return children(this.getProvided(isEnabled, this.isAnySensorDragging()));\n }\n }]);\n return DragHandle;\n}(_react.Component);\n\nDragHandle.contextTypes = (_DragHandle$contextTy = {}, (0, _defineProperty3.default)(_DragHandle$contextTy, _contextKeys.styleContextKey, _propTypes2.default.string.isRequired), (0, _defineProperty3.default)(_DragHandle$contextTy, _contextKeys.canLiftContextKey, _propTypes2.default.func.isRequired), _DragHandle$contextTy);\nexports.default = DragHandle;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar interactiveTagNames = exports.interactiveTagNames = ['input', 'button', 'textarea', 'select', 'option', 'optgroup', 'video', 'audio'];\n\nvar isContentEditable = function isContentEditable(parent, current) {\n if (current == null) {\n return false;\n }\n\n var attribute = current.getAttribute('contenteditable');\n if (attribute === 'true' || attribute === '') {\n return true;\n }\n\n if (current === parent) {\n return false;\n }\n\n return isContentEditable(parent, current.parentElement);\n};\n\nexports.default = function (event, props) {\n if (props.canDragInteractiveElements) {\n return true;\n }\n\n var target = event.target,\n currentTarget = event.currentTarget;\n\n if (!(target instanceof HTMLElement) || !(currentTarget instanceof HTMLElement)) {\n return true;\n }\n\n var isTargetInteractive = interactiveTagNames.indexOf(target.tagName.toLowerCase()) !== -1;\n\n if (isTargetInteractive) {\n return false;\n }\n\n return !isContentEditable(currentTarget, target);\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _stopEvent = require('../util/stop-event');\n\nvar _stopEvent2 = _interopRequireDefault(_stopEvent);\n\nvar _createScheduler = require('../util/create-scheduler');\n\nvar _createScheduler2 = _interopRequireDefault(_createScheduler);\n\nvar _isSloppyClickThresholdExceeded = require('../util/is-sloppy-click-threshold-exceeded');\n\nvar _isSloppyClickThresholdExceeded2 = _interopRequireDefault(_isSloppyClickThresholdExceeded);\n\nvar _getWindowFromRef = require('../../get-window-from-ref');\n\nvar _getWindowFromRef2 = _interopRequireDefault(_getWindowFromRef);\n\nvar _keyCodes = require('../../key-codes');\n\nvar keyCodes = _interopRequireWildcard(_keyCodes);\n\nvar _blockStandardKeyEvents = require('../util/block-standard-key-events');\n\nvar _blockStandardKeyEvents2 = _interopRequireDefault(_blockStandardKeyEvents);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar primaryButton = 0;\nvar noop = function noop() {};\n\nexports.default = function (_ref) {\n var callbacks = _ref.callbacks,\n getDraggableRef = _ref.getDraggableRef,\n canStartCapturing = _ref.canStartCapturing;\n\n var state = {\n isDragging: false,\n pending: null,\n preventClick: false\n };\n var setState = function setState(partial) {\n var newState = (0, _extends3.default)({}, state, partial);\n state = newState;\n };\n var isDragging = function isDragging() {\n return state.isDragging;\n };\n var isCapturing = function isCapturing() {\n return Boolean(state.pending || state.isDragging);\n };\n var schedule = (0, _createScheduler2.default)(callbacks, isDragging);\n\n var startDragging = function startDragging() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n setState({\n pending: null,\n isDragging: true,\n preventClick: true\n });\n fn();\n };\n var stopDragging = function stopDragging() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n unbindWindowEvents();\n setState({\n isDragging: false,\n pending: null\n });\n fn();\n };\n var startPendingDrag = function startPendingDrag(point) {\n setState({ pending: point, isDragging: false });\n bindWindowEvents();\n };\n var stopPendingDrag = function stopPendingDrag() {\n setState({\n preventClick: false\n });\n stopDragging();\n };\n\n var kill = function kill() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n if (state.pending) {\n stopPendingDrag();\n return;\n }\n stopDragging(fn);\n };\n\n var cancel = function cancel() {\n kill(callbacks.onCancel);\n };\n\n var windowBindings = {\n mousemove: function mousemove(event) {\n var button = event.button,\n clientX = event.clientX,\n clientY = event.clientY;\n\n if (button !== primaryButton) {\n return;\n }\n\n var point = {\n x: clientX,\n y: clientY\n };\n\n if (state.isDragging) {\n schedule.move(point);\n return;\n }\n\n if (!state.pending) {\n console.error('invalid state');\n return;\n }\n\n if (!(0, _isSloppyClickThresholdExceeded2.default)(state.pending, point)) {\n return;\n }\n\n startDragging(function () {\n return callbacks.onLift({ client: point, isScrollAllowed: true });\n });\n },\n mouseup: function mouseup() {\n if (state.pending) {\n stopPendingDrag();\n return;\n }\n\n stopDragging(callbacks.onDrop);\n },\n mousedown: function mousedown() {\n stopDragging(callbacks.onCancel);\n },\n keydown: function keydown(event) {\n if (event.keyCode === keyCodes.escape) {\n (0, _stopEvent2.default)(event);\n cancel();\n return;\n }\n\n (0, _blockStandardKeyEvents2.default)(event);\n },\n resize: cancel,\n scroll: function scroll() {\n if (state.pending) {\n stopPendingDrag();\n return;\n }\n schedule.windowScrollMove();\n },\n\n webkitmouseforcechanged: function webkitmouseforcechanged(event) {\n if (event.webkitForce == null || MouseEvent.WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN == null) {\n console.error('handling a mouse force changed event when it is not supported');\n return;\n }\n\n var forcePressThreshold = MouseEvent.WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN;\n var isForcePressing = event.webkitForce >= forcePressThreshold;\n\n if (isForcePressing) {\n cancel();\n }\n }\n };\n\n var eventKeys = (0, _keys2.default)(windowBindings);\n\n var bindWindowEvents = function bindWindowEvents() {\n var win = (0, _getWindowFromRef2.default)(getDraggableRef());\n\n eventKeys.forEach(function (eventKey) {\n if (eventKey === 'scroll') {\n win.addEventListener(eventKey, windowBindings.scroll, { passive: true });\n return;\n }\n\n win.addEventListener(eventKey, windowBindings[eventKey]);\n });\n };\n\n var unbindWindowEvents = function unbindWindowEvents() {\n var win = (0, _getWindowFromRef2.default)(getDraggableRef());\n\n eventKeys.forEach(function (eventKey) {\n return win.removeEventListener(eventKey, windowBindings[eventKey]);\n });\n };\n\n var onMouseDown = function onMouseDown(event) {\n if (!canStartCapturing(event)) {\n return;\n }\n\n if (isCapturing()) {\n console.error('should not be able to perform a mouse down while a drag or pending drag is occurring');\n cancel();\n return;\n }\n\n var button = event.button,\n clientX = event.clientX,\n clientY = event.clientY;\n\n if (button !== primaryButton) {\n return;\n }\n\n (0, _stopEvent2.default)(event);\n var point = {\n x: clientX,\n y: clientY\n };\n\n startPendingDrag(point);\n };\n\n var onClick = function onClick(event) {\n if (!state.preventClick) {\n return;\n }\n\n setState({\n preventClick: false\n });\n (0, _stopEvent2.default)(event);\n };\n\n var sensor = {\n onMouseDown: onMouseDown,\n onClick: onClick,\n kill: kill,\n isCapturing: isCapturing,\n isDragging: isDragging\n };\n\n return sensor;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar sloppyClickThreshold = exports.sloppyClickThreshold = 5;\n\nexports.default = function (original, current) {\n return Math.abs(current.x - original.x) >= sloppyClickThreshold || Math.abs(current.y - original.y) >= sloppyClickThreshold;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _stopEvent = require('../util/stop-event');\n\nvar _stopEvent2 = _interopRequireDefault(_stopEvent);\n\nvar _createScheduler = require('../util/create-scheduler');\n\nvar _createScheduler2 = _interopRequireDefault(_createScheduler);\n\nvar _blockStandardKeyEvents = require('../util/block-standard-key-events');\n\nvar _blockStandardKeyEvents2 = _interopRequireDefault(_blockStandardKeyEvents);\n\nvar _keyCodes = require('../../key-codes');\n\nvar keyCodes = _interopRequireWildcard(_keyCodes);\n\nvar _getWindowFromRef = require('../../get-window-from-ref');\n\nvar _getWindowFromRef2 = _interopRequireDefault(_getWindowFromRef);\n\nvar _getCenterPosition = require('../../get-center-position');\n\nvar _getCenterPosition2 = _interopRequireDefault(_getCenterPosition);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar noop = function noop() {};\n\nexports.default = function (_ref) {\n var callbacks = _ref.callbacks,\n getDraggableRef = _ref.getDraggableRef,\n canStartCapturing = _ref.canStartCapturing;\n\n var state = {\n isDragging: false\n };\n var setState = function setState(newState) {\n state = newState;\n };\n var startDragging = function startDragging() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n setState({\n isDragging: true\n });\n bindWindowEvents();\n fn();\n };\n var stopDragging = function stopDragging() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n unbindWindowEvents();\n setState({\n isDragging: false\n });\n fn();\n };\n var kill = function kill() {\n return stopDragging();\n };\n var cancel = function cancel() {\n stopDragging(callbacks.onCancel);\n };\n var isDragging = function isDragging() {\n return state.isDragging;\n };\n var schedule = (0, _createScheduler2.default)(callbacks, isDragging);\n\n var onKeyDown = function onKeyDown(event, props) {\n var direction = props.direction;\n\n if (!isDragging()) {\n if (!canStartCapturing(event)) {\n return;\n }\n\n if (event.keyCode !== keyCodes.space) {\n return;\n }\n\n (0, _stopEvent2.default)(event);\n\n var ref = getDraggableRef();\n\n if (!ref) {\n console.error('cannot start a keyboard drag without a draggable ref');\n return;\n }\n\n var center = (0, _getCenterPosition2.default)(ref);\n\n startDragging(function () {\n return callbacks.onLift({ client: center, isScrollAllowed: false });\n });\n return;\n }\n\n if (event.keyCode === keyCodes.escape) {\n (0, _stopEvent2.default)(event);\n cancel();\n return;\n }\n\n if (event.keyCode === keyCodes.space) {\n (0, _stopEvent2.default)(event);\n stopDragging(callbacks.onDrop);\n return;\n }\n\n if (!direction) {\n console.error('Cannot handle keyboard movement event if direction is not provided');\n (0, _stopEvent2.default)(event);\n cancel();\n return;\n }\n\n var executeBasedOnDirection = function executeBasedOnDirection(fns) {\n if (direction === 'vertical') {\n fns.vertical();\n return;\n }\n fns.horizontal();\n };\n\n if (event.keyCode === keyCodes.arrowDown) {\n (0, _stopEvent2.default)(event);\n executeBasedOnDirection({\n vertical: schedule.moveForward,\n horizontal: schedule.crossAxisMoveForward\n });\n return;\n }\n\n if (event.keyCode === keyCodes.arrowUp) {\n (0, _stopEvent2.default)(event);\n executeBasedOnDirection({\n vertical: schedule.moveBackward,\n horizontal: schedule.crossAxisMoveBackward\n });\n return;\n }\n\n if (event.keyCode === keyCodes.arrowRight) {\n (0, _stopEvent2.default)(event);\n executeBasedOnDirection({\n vertical: schedule.crossAxisMoveForward,\n horizontal: schedule.moveForward\n });\n return;\n }\n\n if (event.keyCode === keyCodes.arrowLeft) {\n (0, _stopEvent2.default)(event);\n executeBasedOnDirection({\n vertical: schedule.crossAxisMoveBackward,\n horizontal: schedule.moveBackward\n });\n }\n\n (0, _blockStandardKeyEvents2.default)(event);\n };\n\n var windowBindings = {\n mousedown: cancel,\n resize: cancel,\n\n scroll: cancel\n };\n\n var eventKeys = (0, _keys2.default)(windowBindings);\n\n var bindWindowEvents = function bindWindowEvents() {\n var win = (0, _getWindowFromRef2.default)(getDraggableRef());\n\n eventKeys.forEach(function (eventKey) {\n win.addEventListener(eventKey, windowBindings[eventKey]);\n });\n };\n\n var unbindWindowEvents = function unbindWindowEvents() {\n var win = (0, _getWindowFromRef2.default)(getDraggableRef());\n\n eventKeys.forEach(function (eventKey) {\n win.removeEventListener(eventKey, windowBindings[eventKey]);\n });\n };\n\n var sensor = {\n onKeyDown: onKeyDown,\n kill: kill,\n isDragging: isDragging,\n\n isCapturing: isDragging\n };\n\n return sensor;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.forcePressThreshold = exports.timeForLongPress = undefined;\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _stopEvent = require('../util/stop-event');\n\nvar _stopEvent2 = _interopRequireDefault(_stopEvent);\n\nvar _createScheduler = require('../util/create-scheduler');\n\nvar _createScheduler2 = _interopRequireDefault(_createScheduler);\n\nvar _getWindowFromRef = require('../../get-window-from-ref');\n\nvar _getWindowFromRef2 = _interopRequireDefault(_getWindowFromRef);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeForLongPress = exports.timeForLongPress = 150;\nvar forcePressThreshold = exports.forcePressThreshold = 0.15;\n\nvar noop = function noop() {};\n\nvar initial = {\n isDragging: false,\n pending: null,\n hasMoved: false,\n preventClick: false,\n longPressTimerId: null\n};\n\nexports.default = function (_ref) {\n var callbacks = _ref.callbacks,\n getDraggableRef = _ref.getDraggableRef,\n canStartCapturing = _ref.canStartCapturing;\n\n var state = initial;\n\n var setState = function setState(partial) {\n state = (0, _extends3.default)({}, state, partial);\n };\n var isDragging = function isDragging() {\n return state.isDragging;\n };\n var isCapturing = function isCapturing() {\n return Boolean(state.pending || state.isDragging || state.longPressTimerId);\n };\n var schedule = (0, _createScheduler2.default)(callbacks, isDragging);\n\n var startDragging = function startDragging() {\n var pending = state.pending;\n\n if (!pending) {\n console.error('cannot start a touch drag without a pending position');\n kill();\n return;\n }\n\n setState({\n isDragging: true,\n\n hasMoved: false,\n\n pending: null,\n longPressTimerId: null\n });\n\n callbacks.onLift({\n client: pending,\n\n isScrollAllowed: false\n });\n };\n var stopDragging = function stopDragging() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n unbindWindowEvents();\n setState((0, _extends3.default)({}, initial, {\n preventClick: true\n }));\n fn();\n };\n\n var startPendingDrag = function startPendingDrag(event) {\n var touch = event.touches[0];\n var clientX = touch.clientX,\n clientY = touch.clientY;\n\n var point = {\n x: clientX,\n y: clientY\n };\n\n var longPressTimerId = setTimeout(startDragging, timeForLongPress);\n\n setState({\n longPressTimerId: longPressTimerId,\n pending: point,\n isDragging: false,\n hasMoved: false\n });\n bindWindowEvents();\n };\n\n var stopPendingDrag = function stopPendingDrag() {\n clearTimeout(state.longPressTimerId);\n unbindWindowEvents();\n\n setState(initial);\n };\n\n var kill = function kill() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n if (state.pending) {\n stopPendingDrag();\n return;\n }\n stopDragging(fn);\n };\n\n var cancel = function cancel() {\n kill(callbacks.onCancel);\n };\n\n var windowBindings = {\n touchmove: function touchmove(event) {\n if (state.pending) {\n stopPendingDrag();\n return;\n }\n\n if (!state.hasMoved) {\n setState({\n hasMoved: true\n });\n }\n\n (0, _stopEvent2.default)(event);\n\n var _event$touches$ = event.touches[0],\n clientX = _event$touches$.clientX,\n clientY = _event$touches$.clientY;\n\n\n var point = {\n x: clientX,\n y: clientY\n };\n\n schedule.move(point);\n },\n touchend: function touchend(event) {\n if (state.pending) {\n stopPendingDrag();\n\n return;\n }\n\n stopDragging(callbacks.onDrop);\n (0, _stopEvent2.default)(event);\n },\n touchcancel: cancel,\n touchstart: function touchstart() {\n if (isDragging()) {\n console.error('touch start fired while already dragging');\n cancel();\n }\n },\n\n orientationchange: cancel,\n\n resize: cancel,\n\n scroll: cancel,\n\n contextmenu: _stopEvent2.default,\n\n keydown: cancel,\n\n touchforcechange: function touchforcechange(event) {\n if (state.hasMoved) {\n return;\n }\n\n var touch = event.touches[0];\n\n if (touch.force >= forcePressThreshold) {\n cancel();\n }\n }\n };\n\n var eventKeys = (0, _keys2.default)(windowBindings);\n\n var bindWindowEvents = function bindWindowEvents() {\n var win = (0, _getWindowFromRef2.default)(getDraggableRef());\n\n eventKeys.forEach(function (eventKey) {\n var fn = windowBindings[eventKey];\n\n if (eventKey === 'touchmove') {\n win.addEventListener(eventKey, fn, { passive: false });\n return;\n }\n\n win.addEventListener(eventKey, fn);\n });\n };\n\n var unbindWindowEvents = function unbindWindowEvents() {\n var win = (0, _getWindowFromRef2.default)(getDraggableRef());\n\n eventKeys.forEach(function (eventKey) {\n return win.removeEventListener(eventKey, windowBindings[eventKey]);\n });\n };\n\n var onTouchStart = function onTouchStart(event) {\n if (!canStartCapturing(event)) {\n return;\n }\n\n if (isCapturing()) {\n console.error('should not be able to perform a touch start while a drag or pending drag is occurring');\n cancel();\n return;\n }\n\n event.stopPropagation();\n\n startPendingDrag(event);\n };\n\n var onTouchMove = function onTouchMove() {\n if (state.pending) {\n stopPendingDrag();\n }\n };\n\n var onClick = function onClick(event) {\n if (!state.preventClick) {\n return;\n }\n\n (0, _stopEvent2.default)(event);\n setState(initial);\n };\n\n var sensor = {\n onTouchStart: onTouchStart,\n onTouchMove: onTouchMove,\n onClick: onClick,\n kill: kill,\n isCapturing: isCapturing,\n isDragging: isDragging\n };\n\n return sensor;\n};","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxContainer\n * \n */\n'use strict';\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FluxStoreGroup = require('./FluxStoreGroup');\n\nvar invariant = require('fbjs/lib/invariant');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\n\nvar DEFAULT_OPTIONS = {\n pure: true,\n withProps: false\n};\n\n/**\n * A FluxContainer is used to subscribe a react component to multiple stores.\n * The stores that are used must be returned from a static `getStores()` method.\n *\n * The component receives information from the stores via state. The state\n * is generated using a static `calculateState()` method that each container\n * must implement. A simple container may look like:\n */\nfunction create(Base, options) {\n enforceInterface(Base);\n\n // Construct the options using default, override with user values as necessary\n var realOptions = _extends({}, DEFAULT_OPTIONS, options || {});\n\n var FluxContainerClass = (function (_Base) {\n _inherits(FluxContainerClass, _Base);\n\n function FluxContainerClass(props) {\n _classCallCheck(this, FluxContainerClass);\n\n _Base.call(this, props);\n this.state = realOptions.withProps ? Base.calculateState(null, props) : Base.calculateState(null, undefined);\n }\n\n // Make sure we override shouldComponentUpdate only if the pure option is\n // specified. We can't override this above because we don't want to override\n // the default behavior on accident. Super works weird with react ES6 classes\n // right now\n\n FluxContainerClass.prototype.componentDidMount = function componentDidMount() {\n var _this = this;\n\n if (_Base.prototype.componentDidMount) {\n _Base.prototype.componentDidMount.call(this);\n }\n\n var stores = Base.getStores();\n\n // This tracks when any store has changed and we may need to update.\n var changed = false;\n var setChanged = function () {\n changed = true;\n };\n\n // This adds subscriptions to stores. When a store changes all we do is\n // set changed to true.\n this._fluxContainerSubscriptions = stores.map(function (store) {\n return store.addListener(setChanged);\n });\n\n // This callback is called after the dispatch of the relevant stores. If\n // any have reported a change we update the state, then reset changed.\n var callback = function () {\n if (changed) {\n _this.setState(function (prevState) {\n return realOptions.withProps ? Base.calculateState(prevState, _this.props) : Base.calculateState(prevState, undefined);\n });\n }\n changed = false;\n };\n this._fluxContainerStoreGroup = new FluxStoreGroup(stores, callback);\n };\n\n FluxContainerClass.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps, nextContext) {\n if (_Base.prototype.componentWillReceiveProps) {\n _Base.prototype.componentWillReceiveProps.call(this, nextProps, nextContext);\n }\n\n // Don't do anything else if the container is not configured to use props\n if (!realOptions.withProps) {\n return;\n }\n\n // If it's pure we can potentially optimize out the calculate state\n if (realOptions.pure && shallowEqual(this.props, nextProps)) {\n return;\n }\n\n // Finally update the state using the new props\n this.setState(function (prevState) {\n return Base.calculateState(prevState, nextProps);\n });\n };\n\n FluxContainerClass.prototype.componentWillUnmount = function componentWillUnmount() {\n if (_Base.prototype.componentWillUnmount) {\n _Base.prototype.componentWillUnmount.call(this);\n }\n\n this._fluxContainerStoreGroup.release();\n for (var _iterator = this._fluxContainerSubscriptions, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var subscription = _ref;\n\n subscription.remove();\n }\n this._fluxContainerSubscriptions = [];\n };\n\n return FluxContainerClass;\n })(Base);\n\n var container = realOptions.pure ? createPureContainer(FluxContainerClass) : FluxContainerClass;\n\n // Update the name of the container before returning\n var componentName = Base.displayName || Base.name;\n container.displayName = 'FluxContainer(' + componentName + ')';\n\n return container;\n}\n\n// TODO: typecheck this better\nfunction createPureContainer(FluxContainerBase) {\n var PureFluxContainerClass = (function (_FluxContainerBase) {\n _inherits(PureFluxContainerClass, _FluxContainerBase);\n\n function PureFluxContainerClass() {\n _classCallCheck(this, PureFluxContainerClass);\n\n _FluxContainerBase.apply(this, arguments);\n }\n\n PureFluxContainerClass.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {\n return !shallowEqual(this.props, nextProps) || !shallowEqual(this.state, nextState);\n };\n\n return PureFluxContainerClass;\n })(FluxContainerBase);\n\n return PureFluxContainerClass;\n}\n\nfunction enforceInterface(o) {\n !o.getStores ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Components that use FluxContainer must implement `static getStores()`') : invariant(false) : undefined;\n !o.calculateState ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Components that use FluxContainer must implement `static calculateState()`') : invariant(false) : undefined;\n}\n\nmodule.exports = { create: create };","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule shallowEqual\n * @typechecks\n * \n */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n var bHasOwnProperty = hasOwnProperty.bind(objB);\n for (var i = 0; i < keysA.length; i++) {\n if (!bHasOwnProperty(keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxMapStore\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FluxReduceStore = require('./FluxReduceStore');\nvar Immutable = require('immutable');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * This is a simple store. It allows caching key value pairs. An implementation\n * of a store using this might look like:\n *\n * class FooStore extends FluxMapStore {\n * reduce(state, action) {\n * switch (action.type) {\n * case 'foo':\n * return state.set(action.id, action.foo);\n * case 'bar':\n * return state.delete(action.id);\n * default:\n * return state;\n * }\n * }\n * }\n *\n */\n\nvar FluxMapStore = (function (_FluxReduceStore) {\n _inherits(FluxMapStore, _FluxReduceStore);\n\n function FluxMapStore() {\n _classCallCheck(this, FluxMapStore);\n\n _FluxReduceStore.apply(this, arguments);\n }\n\n FluxMapStore.prototype.getInitialState = function getInitialState() {\n return Immutable.Map();\n };\n\n /**\n * Access the value at the given key. throws an error if the key does not\n * exist in the cache.\n */\n\n FluxMapStore.prototype.at = function at(key) {\n !this.has(key) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected store to have key %s', key) : invariant(false) : undefined;\n return this.get(key);\n };\n\n /**\n * Check if the cache has a particular key\n */\n\n FluxMapStore.prototype.has = function has(key) {\n return this.getState().has(key);\n };\n\n /**\n * Get the value of a particular key. Returns undefined if the key does not\n * exist in the cache.\n */\n\n FluxMapStore.prototype.get = function get(key) {\n return this.getState().get(key);\n };\n\n /**\n * Gets an array of keys and puts the values in a map if they exist, it allows\n * providing a previous result to update instead of generating a new map.\n *\n * Providing a previous result allows the possibility of keeping the same\n * reference if the keys did not change.\n */\n\n FluxMapStore.prototype.getAll = function getAll(keys, prev) {\n var _this = this;\n\n var newKeys = Immutable.Set(keys);\n var start = prev || Immutable.Map();\n return start.withMutations(function (map) {\n // remove any old keys that are not in new keys or are no longer in\n // the cache\n for (var _iterator = start, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var entry = _ref;\n var oldKey = entry[0];\n\n if (!newKeys.has(oldKey) || !_this.has(oldKey)) {\n map['delete'](oldKey);\n }\n }\n\n // then add all of the new keys that exist in the cache\n for (var _iterator2 = newKeys, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n var key = _ref2;\n\n if (_this.has(key)) {\n map.set(key, _this.at(key));\n }\n }\n });\n };\n\n return FluxMapStore;\n})(FluxReduceStore);\n\nmodule.exports = FluxMapStore;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nvar fbemitter = {\n EventEmitter: require('./lib/BaseEventEmitter'),\n EmitterSubscription : require('./lib/EmitterSubscription')\n};\n\nmodule.exports = fbemitter;\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule BaseEventEmitter\n * @typechecks\n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar EmitterSubscription = require('./EmitterSubscription');\nvar EventSubscriptionVendor = require('./EventSubscriptionVendor');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * @class BaseEventEmitter\n * @description\n * An EventEmitter is responsible for managing a set of listeners and publishing\n * events to them when it is told that such events happened. In addition to the\n * data for the given event it also sends a event control object which allows\n * the listeners/handlers to prevent the default behavior of the given event.\n *\n * The emitter is designed to be generic enough to support all the different\n * contexts in which one might want to emit events. It is a simple multicast\n * mechanism on top of which extra functionality can be composed. For example, a\n * more advanced emitter may use an EventHolder and EventFactory.\n */\n\nvar BaseEventEmitter = (function () {\n /**\n * @constructor\n */\n\n function BaseEventEmitter() {\n _classCallCheck(this, BaseEventEmitter);\n\n this._subscriber = new EventSubscriptionVendor();\n this._currentSubscription = null;\n }\n\n /**\n * Adds a listener to be invoked when events of the specified type are\n * emitted. An optional calling context may be provided. The data arguments\n * emitted will be passed to the listener function.\n *\n * TODO: Annotate the listener arg's type. This is tricky because listeners\n * can be invoked with varargs.\n *\n * @param {string} eventType - Name of the event to listen to\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n\n BaseEventEmitter.prototype.addListener = function addListener(eventType, listener, context) {\n return this._subscriber.addSubscription(eventType, new EmitterSubscription(this._subscriber, listener, context));\n };\n\n /**\n * Similar to addListener, except that the listener is removed after it is\n * invoked once.\n *\n * @param {string} eventType - Name of the event to listen to\n * @param {function} listener - Function to invoke only once when the\n * specified event is emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n\n BaseEventEmitter.prototype.once = function once(eventType, listener, context) {\n var emitter = this;\n return this.addListener(eventType, function () {\n emitter.removeCurrentListener();\n listener.apply(context, arguments);\n });\n };\n\n /**\n * Removes all of the registered listeners, including those registered as\n * listener maps.\n *\n * @param {?string} eventType - Optional name of the event whose registered\n * listeners to remove\n */\n\n BaseEventEmitter.prototype.removeAllListeners = function removeAllListeners(eventType) {\n this._subscriber.removeAllSubscriptions(eventType);\n };\n\n /**\n * Provides an API that can be called during an eventing cycle to remove the\n * last listener that was invoked. This allows a developer to provide an event\n * object that can remove the listener (or listener map) during the\n * invocation.\n *\n * If it is called when not inside of an emitting cycle it will throw.\n *\n * @throws {Error} When called not during an eventing cycle\n *\n * @example\n * var subscription = emitter.addListenerMap({\n * someEvent: function(data, event) {\n * console.log(data);\n * emitter.removeCurrentListener();\n * }\n * });\n *\n * emitter.emit('someEvent', 'abc'); // logs 'abc'\n * emitter.emit('someEvent', 'def'); // does not log anything\n */\n\n BaseEventEmitter.prototype.removeCurrentListener = function removeCurrentListener() {\n !!!this._currentSubscription ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Not in an emitting cycle; there is no current subscription') : invariant(false) : undefined;\n this._subscriber.removeSubscription(this._currentSubscription);\n };\n\n /**\n * Returns an array of listeners that are currently registered for the given\n * event.\n *\n * @param {string} eventType - Name of the event to query\n * @return {array}\n */\n\n BaseEventEmitter.prototype.listeners = function listeners(eventType) /* TODO: Array<EventSubscription> */{\n var subscriptions = this._subscriber.getSubscriptionsForType(eventType);\n return subscriptions ? subscriptions.filter(emptyFunction.thatReturnsTrue).map(function (subscription) {\n return subscription.listener;\n }) : [];\n };\n\n /**\n * Emits an event of the given type with the given data. All handlers of that\n * particular type will be notified.\n *\n * @param {string} eventType - Name of the event to emit\n * @param {*} Arbitrary arguments to be passed to each registered listener\n *\n * @example\n * emitter.addListener('someEvent', function(message) {\n * console.log(message);\n * });\n *\n * emitter.emit('someEvent', 'abc'); // logs 'abc'\n */\n\n BaseEventEmitter.prototype.emit = function emit(eventType) {\n var subscriptions = this._subscriber.getSubscriptionsForType(eventType);\n if (subscriptions) {\n var keys = Object.keys(subscriptions);\n for (var ii = 0; ii < keys.length; ii++) {\n var key = keys[ii];\n var subscription = subscriptions[key];\n // The subscription may have been removed during this event loop.\n if (subscription) {\n this._currentSubscription = subscription;\n this.__emitToSubscription.apply(this, [subscription].concat(Array.prototype.slice.call(arguments)));\n }\n }\n this._currentSubscription = null;\n }\n };\n\n /**\n * Provides a hook to override how the emitter emits an event to a specific\n * subscription. This allows you to set up logging and error boundaries\n * specific to your environment.\n *\n * @param {EmitterSubscription} subscription\n * @param {string} eventType\n * @param {*} Arbitrary arguments to be passed to each registered listener\n */\n\n BaseEventEmitter.prototype.__emitToSubscription = function __emitToSubscription(subscription, eventType) {\n var args = Array.prototype.slice.call(arguments, 2);\n subscription.listener.apply(subscription.context, args);\n };\n\n return BaseEventEmitter;\n})();\n\nmodule.exports = BaseEventEmitter;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventSubscription\n * @typechecks\n */\n\n'use strict';\n\n/**\n * EventSubscription represents a subscription to a particular event. It can\n * remove its own subscription.\n */\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar EventSubscription = (function () {\n\n /**\n * @param {EventSubscriptionVendor} subscriber the subscriber that controls\n * this subscription.\n */\n\n function EventSubscription(subscriber) {\n _classCallCheck(this, EventSubscription);\n\n this.subscriber = subscriber;\n }\n\n /**\n * Removes this subscription from the subscriber that controls it.\n */\n\n EventSubscription.prototype.remove = function remove() {\n if (this.subscriber) {\n this.subscriber.removeSubscription(this);\n this.subscriber = null;\n }\n };\n\n return EventSubscription;\n})();\n\nmodule.exports = EventSubscription;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n * \n * @providesModule EventSubscriptionVendor\n * @typechecks\n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * EventSubscriptionVendor stores a set of EventSubscriptions that are\n * subscribed to a particular event type.\n */\n\nvar EventSubscriptionVendor = (function () {\n function EventSubscriptionVendor() {\n _classCallCheck(this, EventSubscriptionVendor);\n\n this._subscriptionsForType = {};\n this._currentSubscription = null;\n }\n\n /**\n * Adds a subscription keyed by an event type.\n *\n * @param {string} eventType\n * @param {EventSubscription} subscription\n */\n\n EventSubscriptionVendor.prototype.addSubscription = function addSubscription(eventType, subscription) {\n !(subscription.subscriber === this) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'The subscriber of the subscription is incorrectly set.') : invariant(false) : undefined;\n if (!this._subscriptionsForType[eventType]) {\n this._subscriptionsForType[eventType] = [];\n }\n var key = this._subscriptionsForType[eventType].length;\n this._subscriptionsForType[eventType].push(subscription);\n subscription.eventType = eventType;\n subscription.key = key;\n return subscription;\n };\n\n /**\n * Removes a bulk set of the subscriptions.\n *\n * @param {?string} eventType - Optional name of the event type whose\n * registered supscriptions to remove, if null remove all subscriptions.\n */\n\n EventSubscriptionVendor.prototype.removeAllSubscriptions = function removeAllSubscriptions(eventType) {\n if (eventType === undefined) {\n this._subscriptionsForType = {};\n } else {\n delete this._subscriptionsForType[eventType];\n }\n };\n\n /**\n * Removes a specific subscription. Instead of calling this function, call\n * `subscription.remove()` directly.\n *\n * @param {object} subscription\n */\n\n EventSubscriptionVendor.prototype.removeSubscription = function removeSubscription(subscription) {\n var eventType = subscription.eventType;\n var key = subscription.key;\n\n var subscriptionsForType = this._subscriptionsForType[eventType];\n if (subscriptionsForType) {\n delete subscriptionsForType[key];\n }\n };\n\n /**\n * Returns the array of subscriptions that are currently registered for the\n * given event type.\n *\n * Note: This array can be potentially sparse as subscriptions are deleted\n * from it when they are removed.\n *\n * TODO: This returns a nullable array. wat?\n *\n * @param {string} eventType\n * @return {?array}\n */\n\n EventSubscriptionVendor.prototype.getSubscriptionsForType = function getSubscriptionsForType(eventType) {\n return this._subscriptionsForType[eventType];\n };\n\n return EventSubscriptionVendor;\n})();\n\nmodule.exports = EventSubscriptionVendor;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule abstractMethod\n * \n */\n\n'use strict';\n\nvar invariant = require('fbjs/lib/invariant');\n\nfunction abstractMethod(className, methodName) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Subclasses of %s must override %s() with their own implementation.', className, methodName) : invariant(false) : undefined;\n}\n\nmodule.exports = abstractMethod;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxMixinLegacy\n * \n */\n\n'use strict';\n\nvar FluxStoreGroup = require('./FluxStoreGroup');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * `FluxContainer` should be preferred over this mixin, but it requires using\n * react with classes. So this mixin is provided where it is not yet possible\n * to convert a container to be a class.\n *\n * This mixin should be used for React components that have state based purely\n * on stores. `this.props` will not be available inside of `calculateState()`.\n *\n * This mixin will only `setState` not replace it, so you should always return\n * every key in your state unless you know what you are doing. Consider this:\n *\n * var Foo = React.createClass({\n * mixins: [\n * FluxMixinLegacy([FooStore])\n * ],\n *\n * statics: {\n * calculateState(prevState) {\n * if (!prevState) {\n * return {\n * foo: FooStore.getFoo(),\n * };\n * }\n *\n * return {\n * bar: FooStore.getBar(),\n * };\n * }\n * },\n * });\n *\n * On the second calculateState when prevState is not null, the state will be\n * updated to contain the previous foo AND the bar that was just returned. Only\n * returning bar will not delete foo.\n *\n */\nfunction FluxMixinLegacy(stores) {\n return {\n getInitialState: function () {\n enforceInterface(this);\n return this.constructor.calculateState(null);\n },\n\n componentDidMount: function () {\n var _this = this;\n\n // This tracks when any store has changed and we may need to update.\n var changed = false;\n var setChanged = function () {\n changed = true;\n };\n\n // This adds subscriptions to stores. When a store changes all we do is\n // set changed to true.\n this._fluxMixinSubscriptions = stores.map(function (store) {\n return store.addListener(setChanged);\n });\n\n // This callback is called after the dispatch of the relevant stores. If\n // any have reported a change we update the state, then reset changed.\n var callback = function () {\n if (changed) {\n _this.setState(function (prevState) {\n return _this.constructor.calculateState(_this.state);\n });\n }\n changed = false;\n };\n this._fluxMixinStoreGroup = new FluxStoreGroup(stores, callback);\n },\n\n componentWillUnmount: function () {\n this._fluxMixinStoreGroup.release();\n for (var _iterator = this._fluxMixinSubscriptions, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var subscription = _ref;\n\n subscription.remove();\n }\n this._fluxMixinSubscriptions = [];\n }\n };\n}\n\nfunction enforceInterface(o) {\n !o.constructor.calculateState ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Components that use FluxMixinLegacy must implement ' + '`calculateState()` on the statics object') : invariant(false) : undefined;\n}\n\nmodule.exports = FluxMixinLegacy;","require('../../modules/es6.number.max-safe-integer');\nmodule.exports = 0x1fffffffffffff;\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _languageHandler = require('../../languageHandler');\n\nvar React = require('react');\n\nvar dis = require('../../dispatcher');\nvar AccessibleButton = require('../../components/views/elements/AccessibleButton');\n\nmodule.exports = React.createClass({\n displayName: 'LoginBox',\n\n propTypes: {},\n\n onLoginClick: function onLoginClick() {\n dis.dispatch({ action: 'start_login' });\n },\n\n onRegisterClick: function onRegisterClick() {\n dis.dispatch({ action: 'start_registration' });\n },\n\n render: function render() {\n var loginButton = React.createElement(\n 'div',\n { className: 'mx_LoginBox_loginButton_wrapper' },\n React.createElement(\n AccessibleButton,\n { className: 'mx_LoginBox_loginButton', element: 'button', onClick: this.onLoginClick },\n (0, _languageHandler._t)(\"Login\")\n ),\n React.createElement(\n AccessibleButton,\n { className: 'mx_LoginBox_registerButton', element: 'button', onClick: this.onRegisterClick },\n (0, _languageHandler._t)(\"Register\")\n )\n );\n\n return React.createElement(\n 'div',\n { className: 'mx_LoginBox' },\n loginButton\n );\n }\n});\n//# sourceMappingURL=LoginBox.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _create = require('babel-runtime/core-js/object/create');\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _Analytics = require('../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _DecryptionFailureTracker = require('../../DecryptionFailureTracker');\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _PlatformPeg = require('../../PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _SdkConfig = require('../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _RoomListSorter = require('../../RoomListSorter');\n\nvar RoomListSorter = _interopRequireWildcard(_RoomListSorter);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Modal = require('../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _Tinter = require('../../Tinter');\n\nvar _Tinter2 = _interopRequireDefault(_Tinter);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _RoomInvite = require('../../RoomInvite');\n\nvar _Rooms = require('../../Rooms');\n\nvar Rooms = _interopRequireWildcard(_Rooms);\n\nvar _linkifyMatrix = require('../../linkify-matrix');\n\nvar _linkifyMatrix2 = _interopRequireDefault(_linkifyMatrix);\n\nvar _Lifecycle = require('../../Lifecycle');\n\nvar Lifecycle = _interopRequireWildcard(_Lifecycle);\n\nvar _PageTypes = require('../../PageTypes');\n\nvar _PageTypes2 = _interopRequireDefault(_PageTypes);\n\nvar _createRoom2 = require('../../createRoom');\n\nvar _createRoom3 = _interopRequireDefault(_createRoom2);\n\nvar _KeyRequestHandler = require('../../KeyRequestHandler');\n\nvar _KeyRequestHandler2 = _interopRequireDefault(_KeyRequestHandler);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _SettingsStore = require('../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _Registration = require('../../Registration.js');\n\nvar _ErrorUtils = require('../../utils/ErrorUtils');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// LifecycleStore is not used but does listen to and dispatch actions\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nrequire('../../stores/LifecycleStore');\n\n\n// Disable warnings for now: we use deprecated bluebird functions\n// and need to migrate, but they spam the console with warnings.\n_bluebird2.default.config({ warnings: false });\n\n/** constants for MatrixChat.state.view */\nvar VIEWS = {\n // a special initial state which is only used at startup, while we are\n // trying to re-animate a matrix client or register as a guest.\n LOADING: 0,\n\n // we are showing the login view\n LOGIN: 1,\n\n // we are showing the registration view\n REGISTER: 2,\n\n // completeing the registration flow\n POST_REGISTRATION: 3,\n\n // showing the 'forgot password' view\n FORGOT_PASSWORD: 4,\n\n // we have valid matrix credentials (either via an explicit login, via the\n // initial re-animation/guest registration, or via a registration), and are\n // now setting up a matrixclient to talk to it. This isn't an instant\n // process because (a) we need to clear out indexeddb, and (b) we need to\n // talk to the team server; while it is going on we show a big spinner.\n LOGGING_IN: 5,\n\n // we are logged in with an active matrix client.\n LOGGED_IN: 6\n};\n\n// Actions that are redirected through the onboarding process prior to being\n// re-dispatched. NOTE: some actions are non-trivial and would require\n// re-factoring to be included in this list in future.\nvar ONBOARDING_FLOW_STARTERS = ['view_user_settings', 'view_create_chat', 'view_create_room', 'view_create_group'];\n\nexports.default = _react2.default.createClass({\n // we export this so that the integration tests can use it :-S\n statics: {\n VIEWS: VIEWS\n },\n\n displayName: 'MatrixChat',\n\n propTypes: {\n config: _propTypes2.default.object,\n ConferenceHandler: _propTypes2.default.any,\n onNewScreen: _propTypes2.default.func,\n registrationUrl: _propTypes2.default.string,\n enableGuest: _propTypes2.default.bool,\n\n // the queryParams extracted from the [real] query-string of the URI\n realQueryParams: _propTypes2.default.object,\n\n // the initial queryParams extracted from the hash-fragment of the URI\n startingFragmentQueryParams: _propTypes2.default.object,\n\n // called when we have completed a token login\n onTokenLoginCompleted: _propTypes2.default.func,\n\n // Represents the screen to display as a result of parsing the initial\n // window.location\n initialScreenAfterLogin: _propTypes2.default.shape({\n screen: _propTypes2.default.string.isRequired,\n params: _propTypes2.default.object\n }),\n\n // displayname, if any, to set on the device when logging\n // in/registering.\n defaultDeviceDisplayName: _propTypes2.default.string,\n\n // A function that makes a registration URL\n makeRegistrationUrl: _propTypes2.default.func.isRequired\n },\n\n childContextTypes: {\n appConfig: _propTypes2.default.object\n },\n\n AuxPanel: {\n RoomSettings: \"room_settings\"\n },\n\n getChildContext: function getChildContext() {\n return {\n appConfig: this.props.config\n };\n },\n\n getInitialState: function getInitialState() {\n var s = {\n // the master view we are showing.\n view: VIEWS.LOADING,\n\n // What the LoggedInView would be showing if visible\n page_type: null,\n\n // The ID of the room we're viewing. This is either populated directly\n // in the case where we view a room by ID or by RoomView when it resolves\n // what ID an alias points at.\n currentRoomId: null,\n\n // If we're trying to just view a user ID (i.e. /user URL), this is it\n viewUserId: null,\n\n collapseLhs: false,\n collapseRhs: false,\n leftDisabled: false,\n middleDisabled: false,\n rightDisabled: false,\n\n version: null,\n newVersion: null,\n hasNewVersion: false,\n newVersionReleaseNotes: null,\n checkingForUpdate: null,\n\n showCookieBar: false,\n\n // Parameters used in the registration dance with the IS\n register_client_secret: null,\n register_session_id: null,\n register_hs_url: null,\n register_is_url: null,\n register_id_sid: null,\n\n // When showing Modal dialogs we need to set aria-hidden on the root app element\n // and disable it when there are no dialogs\n hideToSRUsers: false,\n\n syncError: null // If the current syncing status is ERROR, the error object, otherwise null.\n };\n return s;\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n realQueryParams: {},\n startingFragmentQueryParams: {},\n config: {},\n onTokenLoginCompleted: function onTokenLoginCompleted() {}\n };\n },\n\n getCurrentHsUrl: function getCurrentHsUrl() {\n if (this.state.register_hs_url) {\n return this.state.register_hs_url;\n } else if (_MatrixClientPeg2.default.get()) {\n return _MatrixClientPeg2.default.get().getHomeserverUrl();\n } else if (window.localStorage && window.localStorage.getItem(\"mx_hs_url\")) {\n return window.localStorage.getItem(\"mx_hs_url\");\n } else {\n return this.getDefaultHsUrl();\n }\n },\n\n getDefaultHsUrl: function getDefaultHsUrl() {\n return this.props.config.default_hs_url || \"https://matrix.org\";\n },\n\n\n getFallbackHsUrl: function getFallbackHsUrl() {\n return this.props.config.fallback_hs_url;\n },\n\n getCurrentIsUrl: function getCurrentIsUrl() {\n if (this.state.register_is_url) {\n return this.state.register_is_url;\n } else if (_MatrixClientPeg2.default.get()) {\n return _MatrixClientPeg2.default.get().getIdentityServerUrl();\n } else if (window.localStorage && window.localStorage.getItem(\"mx_is_url\")) {\n return window.localStorage.getItem(\"mx_is_url\");\n } else {\n return this.getDefaultIsUrl();\n }\n },\n\n getDefaultIsUrl: function getDefaultIsUrl() {\n return this.props.config.default_is_url || \"https://vector.im\";\n },\n\n\n componentWillMount: function componentWillMount() {\n _SdkConfig2.default.put(this.props.config);\n\n // Used by _viewRoom before getting state from sync\n this.firstSyncComplete = false;\n this.firstSyncPromise = _bluebird2.default.defer();\n\n if (this.props.config.sync_timeline_limit) {\n _MatrixClientPeg2.default.opts.initialSyncLimit = this.props.config.sync_timeline_limit;\n }\n\n // To enable things like riot.im/geektime in a nicer way than rewriting the URL\n // and appending a team token query parameter, use the first path segment to\n // indicate a team, with \"public\" team tokens stored in the config teamTokenMap.\n var routedTeamToken = null;\n if (this.props.config.teamTokenMap) {\n var teamName = window.location.pathname.split('/')[1];\n if (teamName && this.props.config.teamTokenMap.hasOwnProperty(teamName)) {\n routedTeamToken = this.props.config.teamTokenMap[teamName];\n }\n }\n\n // Persist the team token across refreshes using sessionStorage. A new window or\n // tab will not persist sessionStorage, but refreshes will.\n if (this.props.startingFragmentQueryParams.team_token) {\n window.sessionStorage.setItem('mx_team_token', this.props.startingFragmentQueryParams.team_token);\n }\n\n // Use the locally-stored team token first, then as a fall-back, check to see if\n // a referral link was used, which will contain a query parameter `team_token`.\n this._teamToken = routedTeamToken || window.localStorage.getItem('mx_team_token') || window.sessionStorage.getItem('mx_team_token');\n\n // Some users have ended up with \"undefined\" as their local storage team token,\n // treat that as undefined.\n if (this._teamToken === \"undefined\") {\n this._teamToken = undefined;\n }\n\n if (this._teamToken) {\n console.info('Team token set to ' + this._teamToken);\n }\n\n // Set a default HS with query param `hs_url`\n var paramHs = this.props.startingFragmentQueryParams.hs_url;\n if (paramHs) {\n console.log('Setting register_hs_url ', paramHs);\n this.setState({\n register_hs_url: paramHs\n });\n }\n // Set a default IS with query param `is_url`\n var paramIs = this.props.startingFragmentQueryParams.is_url;\n if (paramIs) {\n console.log('Setting register_is_url ', paramIs);\n this.setState({\n register_is_url: paramIs\n });\n }\n\n // a thing to call showScreen with once login completes. this is kept\n // outside this.state because updating it should never trigger a\n // rerender.\n this._screenAfterLogin = this.props.initialScreenAfterLogin;\n\n this._windowWidth = 10000;\n this.handleResize();\n window.addEventListener('resize', this.handleResize);\n\n this._pageChanging = false;\n\n // check we have the right tint applied for this theme.\n // N.B. we don't call the whole of setTheme() here as we may be\n // racing with the theme CSS download finishing from index.js\n _Tinter2.default.tint();\n },\n\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n\n this.focusComposer = false;\n\n // this can technically be done anywhere but doing this here keeps all\n // the routing url path logic together.\n if (this.onAliasClick) {\n _linkifyMatrix2.default.onAliasClick = this.onAliasClick;\n }\n if (this.onUserClick) {\n _linkifyMatrix2.default.onUserClick = this.onUserClick;\n }\n if (this.onGroupClick) {\n _linkifyMatrix2.default.onGroupClick = this.onGroupClick;\n }\n\n var teamServerConfig = this.props.config.teamServerConfig || {};\n Lifecycle.initRtsClient(teamServerConfig.teamServerURL);\n\n // the first thing to do is to try the token params in the query-string\n Lifecycle.attemptTokenLogin(this.props.realQueryParams).then(function (loggedIn) {\n if (loggedIn) {\n _this.props.onTokenLoginCompleted();\n\n // don't do anything else until the page reloads - just stay in\n // the 'loading' state.\n return;\n }\n\n // if the user has followed a login or register link, don't reanimate\n // the old creds, but rather go straight to the relevant page\n var firstScreen = _this._screenAfterLogin ? _this._screenAfterLogin.screen : null;\n\n if (firstScreen === 'login' || firstScreen === 'register' || firstScreen === 'forgot_password') {\n _this._showScreenAfterLogin();\n return;\n }\n\n // the extra Promise.resolve() ensures that synchronous exceptions hit the same codepath as\n // asynchronous ones.\n return _bluebird2.default.resolve().then(function () {\n return Lifecycle.loadSession({\n fragmentQueryParams: _this.props.startingFragmentQueryParams,\n enableGuest: _this.props.enableGuest,\n guestHsUrl: _this.getCurrentHsUrl(),\n guestIsUrl: _this.getCurrentIsUrl(),\n defaultDeviceDisplayName: _this.props.defaultDeviceDisplayName\n });\n }).then(function (loadedSession) {\n if (!loadedSession) {\n // fall back to showing the login screen\n _dispatcher2.default.dispatch({ action: \"start_login\" });\n }\n });\n // Note we don't catch errors from this: we catch everything within\n // loadSession as there's logic there to ask the user if they want\n // to try logging out.\n });\n\n if (_SettingsStore2.default.getValue(\"showCookieBar\")) {\n this.setState({\n showCookieBar: true\n });\n }\n\n if (_SettingsStore2.default.getValue(\"analyticsOptIn\")) {\n _Analytics2.default.enable();\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n Lifecycle.stopMatrixClient();\n _dispatcher2.default.unregister(this.dispatcherRef);\n window.removeEventListener(\"focus\", this.onFocus);\n window.removeEventListener('resize', this.handleResize);\n },\n\n componentWillUpdate: function componentWillUpdate(props, state) {\n if (this.shouldTrackPageChange(this.state, state)) {\n this.startPageChangeTimer();\n }\n },\n\n componentDidUpdate: function componentDidUpdate(prevProps, prevState) {\n if (this.shouldTrackPageChange(prevState, this.state)) {\n var durationMs = this.stopPageChangeTimer();\n _Analytics2.default.trackPageChange(durationMs);\n }\n if (this.focusComposer) {\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n this.focusComposer = false;\n }\n },\n\n startPageChangeTimer: function startPageChangeTimer() {\n // Tor doesn't support performance\n if (!performance || !performance.mark) return null;\n\n // This shouldn't happen because componentWillUpdate and componentDidUpdate\n // are used.\n if (this._pageChanging) {\n console.warn('MatrixChat.startPageChangeTimer: timer already started');\n return;\n }\n this._pageChanging = true;\n performance.mark('riot_MatrixChat_page_change_start');\n },\n stopPageChangeTimer: function stopPageChangeTimer() {\n // Tor doesn't support performance\n if (!performance || !performance.mark) return null;\n\n if (!this._pageChanging) {\n console.warn('MatrixChat.stopPageChangeTimer: timer not started');\n return;\n }\n this._pageChanging = false;\n performance.mark('riot_MatrixChat_page_change_stop');\n performance.measure('riot_MatrixChat_page_change_delta', 'riot_MatrixChat_page_change_start', 'riot_MatrixChat_page_change_stop');\n performance.clearMarks('riot_MatrixChat_page_change_start');\n performance.clearMarks('riot_MatrixChat_page_change_stop');\n var measurement = performance.getEntriesByName('riot_MatrixChat_page_change_delta').pop();\n\n // In practice, sometimes the entries list is empty, so we get no measurement\n if (!measurement) return null;\n\n return measurement.duration;\n },\n shouldTrackPageChange: function shouldTrackPageChange(prevState, state) {\n return prevState.currentRoomId !== state.currentRoomId || prevState.view !== state.view || prevState.page_type !== state.page_type;\n },\n\n\n setStateForNewView: function setStateForNewView(state) {\n if (state.view === undefined) {\n throw new Error(\"setStateForNewView with no view!\");\n }\n var newState = {\n viewUserId: null\n };\n (0, _assign2.default)(newState, state);\n this.setState(newState);\n },\n\n onAction: function onAction(payload) {\n var _this2 = this;\n\n // console.log(`MatrixClientPeg.onAction: ${payload.action}`);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n\n // Start the onboarding process for certain actions\n if (_MatrixClientPeg2.default.get() && _MatrixClientPeg2.default.get().isGuest() && ONBOARDING_FLOW_STARTERS.includes(payload.action)) {\n // This will cause `payload` to be dispatched later, once a\n // sync has reached the \"prepared\" state. Setting a matrix ID\n // will cause a full login and sync and finally the deferred\n // action will be dispatched.\n _dispatcher2.default.dispatch({\n action: 'do_after_sync_prepared',\n deferred_action: payload\n });\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n return;\n }\n\n switch (payload.action) {\n case 'logout':\n Lifecycle.logout();\n break;\n case 'require_registration':\n (0, _Registration.startAnyRegistrationFlow)(payload);\n break;\n case 'start_registration':\n // This starts the full registration flow\n this._startRegistration(payload.params || {});\n break;\n case 'start_login':\n this.setStateForNewView({\n view: VIEWS.LOGIN\n });\n this.notifyNewScreen('login');\n break;\n case 'start_post_registration':\n this.setState({\n view: VIEWS.POST_REGISTRATION\n });\n break;\n case 'start_password_recovery':\n this.setStateForNewView({\n view: VIEWS.FORGOT_PASSWORD\n });\n this.notifyNewScreen('forgot_password');\n break;\n case 'start_chat':\n (0, _createRoom3.default)({\n dmUserId: payload.user_id\n });\n break;\n case 'leave_room':\n this._leaveRoom(payload.room_id);\n break;\n case 'reject_invite':\n _Modal2.default.createTrackedDialog('Reject invitation', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Reject invitation'),\n description: (0, _languageHandler._t)('Are you sure you want to reject the invitation?'),\n onFinished: function onFinished(confirm) {\n if (confirm) {\n // FIXME: controller shouldn't be loading a view :(\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n var modal = _Modal2.default.createDialog(Loader, null, 'mx_Dialog_spinner');\n\n _MatrixClientPeg2.default.get().leave(payload.room_id).done(function () {\n modal.close();\n if (_this2.state.currentRoomId === payload.room_id) {\n _dispatcher2.default.dispatch({ action: 'view_next_room' });\n }\n }, function (err) {\n modal.close();\n _Modal2.default.createTrackedDialog('Failed to reject invitation', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to reject invitation'),\n description: err.toString()\n });\n });\n }\n }\n });\n break;\n case 'view_user':\n // FIXME: ugly hack to expand the RightPanel and then re-dispatch.\n if (this.state.collapseRhs) {\n setTimeout(function () {\n _dispatcher2.default.dispatch({\n action: 'show_right_panel'\n });\n _dispatcher2.default.dispatch({\n action: 'view_user',\n member: payload.member\n });\n }, 0);\n }\n break;\n case 'view_room':\n // Takes either a room ID or room alias: if switching to a room the client is already\n // known to be in (eg. user clicks on a room in the recents panel), supply the ID\n // If the user is clicking on a room in the context of the alias being presented\n // to them, supply the room alias. If both are supplied, the room ID will be ignored.\n this._viewRoom(payload);\n break;\n case 'view_prev_room':\n this._viewNextRoom(-1);\n break;\n case 'view_next_room':\n this._viewNextRoom(1);\n break;\n case 'view_indexed_room':\n this._viewIndexedRoom(payload.roomIndex);\n break;\n case 'view_user_settings':\n this._setPage(_PageTypes2.default.UserSettings);\n this.notifyNewScreen('settings');\n break;\n case 'close_settings':\n this.setState({\n leftDisabled: false,\n rightDisabled: false,\n middleDisabled: false\n });\n if (this.state.page_type === _PageTypes2.default.UserSettings) {\n // We do this to get setPage and notifyNewScreen\n if (this.state.currentRoomId) {\n this._viewRoom({\n room_id: this.state.currentRoomId\n });\n } else if (this.state.currentGroupId) {\n this._viewGroup({\n group_id: this.state.currentGroupId\n });\n } else {\n this._viewHome();\n }\n }\n break;\n case 'view_create_room':\n this._createRoom();\n break;\n case 'view_create_group':\n {\n var CreateGroupDialog = _index2.default.getComponent(\"dialogs.CreateGroupDialog\");\n _Modal2.default.createTrackedDialog('Create Community', '', CreateGroupDialog);\n }\n break;\n case 'view_room_directory':\n this._setPage(_PageTypes2.default.RoomDirectory);\n this.notifyNewScreen('directory');\n break;\n case 'view_my_groups':\n this._setPage(_PageTypes2.default.MyGroups);\n this.notifyNewScreen('groups');\n break;\n case 'view_group':\n this._viewGroup(payload);\n break;\n case 'view_home_page':\n this._viewHome();\n break;\n case 'view_set_mxid':\n this._setMxId(payload);\n break;\n case 'view_start_chat_or_reuse':\n this._chatCreateOrReuse(payload.user_id, payload.go_home_on_cancel);\n break;\n case 'view_create_chat':\n (0, _RoomInvite.showStartChatInviteDialog)();\n break;\n case 'view_invite':\n (0, _RoomInvite.showRoomInviteDialog)(payload.roomId);\n break;\n case 'notifier_enabled':\n this.forceUpdate();\n break;\n case 'hide_left_panel':\n this.setState({\n collapseLhs: true\n });\n break;\n case 'show_left_panel':\n this.setState({\n collapseLhs: false\n });\n break;\n case 'hide_right_panel':\n this.setState({\n collapseRhs: true\n });\n break;\n case 'show_right_panel':\n this.setState({\n collapseRhs: false\n });\n break;\n case 'panel_disable':\n {\n this.setState({\n leftDisabled: payload.leftDisabled || payload.sideDisabled || false,\n middleDisabled: payload.middleDisabled || false,\n rightDisabled: payload.rightDisabled || payload.sideDisabled || false\n });\n break;\n }\n case 'set_theme':\n this._onSetTheme(payload.value);\n break;\n case 'on_logging_in':\n // We are now logging in, so set the state to reflect that\n // NB. This does not touch 'ready' since if our dispatches\n // are delayed, the sync could already have completed\n this.setStateForNewView({\n view: VIEWS.LOGGING_IN\n });\n break;\n case 'on_logged_in':\n this._onLoggedIn(payload.teamToken);\n break;\n case 'on_logged_out':\n this._onLoggedOut();\n break;\n case 'will_start_client':\n this.setState({ ready: false }, function () {\n // if the client is about to start, we are, by definition, not ready.\n // Set ready to false now, then it'll be set to true when the sync\n // listener we set below fires.\n _this2._onWillStartClient();\n });\n break;\n case 'client_started':\n this._onClientStarted();\n break;\n case 'new_version':\n this.onVersion(payload.currentVersion, payload.newVersion, payload.releaseNotes);\n break;\n case 'check_updates':\n this.setState({ checkingForUpdate: payload.value });\n break;\n case 'send_event':\n this.onSendEvent(payload.room_id, payload.event);\n break;\n case 'aria_hide_main_app':\n this.setState({\n hideToSRUsers: true\n });\n break;\n case 'aria_unhide_main_app':\n this.setState({\n hideToSRUsers: false\n });\n break;\n case 'accept_cookies':\n _SettingsStore2.default.setValue(\"analyticsOptIn\", null, _SettingsStore.SettingLevel.DEVICE, true);\n _SettingsStore2.default.setValue(\"showCookieBar\", null, _SettingsStore.SettingLevel.DEVICE, false);\n\n this.setState({\n showCookieBar: false\n });\n _Analytics2.default.enable();\n break;\n case 'reject_cookies':\n _SettingsStore2.default.setValue(\"analyticsOptIn\", null, _SettingsStore.SettingLevel.DEVICE, false);\n _SettingsStore2.default.setValue(\"showCookieBar\", null, _SettingsStore.SettingLevel.DEVICE, false);\n\n this.setState({\n showCookieBar: false\n });\n break;\n }\n },\n\n _setPage: function _setPage(pageType) {\n this.setState({\n page_type: pageType\n });\n },\n\n _startRegistration: function _startRegistration(params) {\n var newState = {\n view: VIEWS.REGISTER\n };\n\n // Only honour params if they are all present, otherwise we reset\n // HS and IS URLs when switching to registration.\n if (params.client_secret && params.session_id && params.hs_url && params.is_url && params.sid) {\n newState.register_client_secret = params.client_secret;\n newState.register_session_id = params.session_id;\n newState.register_hs_url = params.hs_url;\n newState.register_is_url = params.is_url;\n newState.register_id_sid = params.sid;\n }\n\n this.setStateForNewView(newState);\n this.notifyNewScreen('register');\n },\n\n // TODO: Move to RoomViewStore\n _viewNextRoom: function _viewNextRoom(roomIndexDelta) {\n var allRooms = RoomListSorter.mostRecentActivityFirst(_MatrixClientPeg2.default.get().getRooms());\n // If there are 0 rooms or 1 room, view the home page because otherwise\n // if there are 0, we end up trying to index into an empty array, and\n // if there is 1, we end up viewing the same room.\n if (allRooms.length < 2) {\n _dispatcher2.default.dispatch({\n action: 'view_home_page'\n });\n return;\n }\n var roomIndex = -1;\n for (var i = 0; i < allRooms.length; ++i) {\n if (allRooms[i].roomId == this.state.currentRoomId) {\n roomIndex = i;\n break;\n }\n }\n roomIndex = (roomIndex + roomIndexDelta) % allRooms.length;\n if (roomIndex < 0) roomIndex = allRooms.length - 1;\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: allRooms[roomIndex].roomId\n });\n },\n\n // TODO: Move to RoomViewStore\n _viewIndexedRoom: function _viewIndexedRoom(roomIndex) {\n var allRooms = RoomListSorter.mostRecentActivityFirst(_MatrixClientPeg2.default.get().getRooms());\n if (allRooms[roomIndex]) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: allRooms[roomIndex].roomId\n });\n }\n },\n\n // switch view to the given room\n //\n // @param {Object} roomInfo Object containing data about the room to be joined\n // @param {string=} roomInfo.room_id ID of the room to join. One of room_id or room_alias must be given.\n // @param {string=} roomInfo.room_alias Alias of the room to join. One of room_id or room_alias must be given.\n // @param {boolean=} roomInfo.auto_join If true, automatically attempt to join the room if not already a member.\n // @param {string=} roomInfo.event_id ID of the event in this room to show: this will cause a switch to the\n // context of that particular event.\n // @param {boolean=} roomInfo.highlighted If true, add event_id to the hash of the URL\n // and alter the EventTile to appear highlighted.\n // @param {Object=} roomInfo.third_party_invite Object containing data about the third party\n // we received to join the room, if any.\n // @param {string=} roomInfo.third_party_invite.inviteSignUrl 3pid invite sign URL\n // @param {string=} roomInfo.third_party_invite.invitedEmail The email address the invite was sent to\n // @param {Object=} roomInfo.oob_data Object of additional data about the room\n // that has been passed out-of-band (eg.\n // room name and avatar from an invite email)\n _viewRoom: function _viewRoom(roomInfo) {\n var _this3 = this;\n\n this.focusComposer = true;\n\n var newState = {\n currentRoomId: roomInfo.room_id || null,\n page_type: _PageTypes2.default.RoomView,\n thirdPartyInvite: roomInfo.third_party_invite,\n roomOobData: roomInfo.oob_data\n };\n\n if (roomInfo.room_alias) {\n console.log('Switching to room alias ' + roomInfo.room_alias + ' at event ' + roomInfo.event_id);\n } else {\n console.log('Switching to room id ' + roomInfo.room_id + ' at event ' + roomInfo.event_id);\n }\n\n // Wait for the first sync to complete so that if a room does have an alias,\n // it would have been retrieved.\n var waitFor = _bluebird2.default.resolve(null);\n if (!this.firstSyncComplete) {\n if (!this.firstSyncPromise) {\n console.warn('Cannot view a room before first sync. room_id:', roomInfo.room_id);\n return;\n }\n waitFor = this.firstSyncPromise.promise;\n }\n\n waitFor.done(function () {\n var presentedId = roomInfo.room_alias || roomInfo.room_id;\n var room = _MatrixClientPeg2.default.get().getRoom(roomInfo.room_id);\n if (room) {\n var theAlias = Rooms.getDisplayAliasForRoom(room);\n if (theAlias) presentedId = theAlias;\n\n // Store this as the ID of the last room accessed. This is so that we can\n // persist which room is being stored across refreshes and browser quits.\n if (localStorage) {\n localStorage.setItem('mx_last_room_id', room.roomId);\n }\n }\n\n if (roomInfo.event_id && roomInfo.highlighted) {\n presentedId += \"/\" + roomInfo.event_id;\n }\n _this3.notifyNewScreen('room/' + presentedId);\n newState.ready = true;\n _this3.setState(newState);\n });\n },\n\n _viewGroup: function _viewGroup(payload) {\n var groupId = payload.group_id;\n this.setState({\n currentGroupId: groupId,\n currentGroupIsNew: payload.group_is_new\n });\n this._setPage(_PageTypes2.default.GroupView);\n this.notifyNewScreen('group/' + groupId);\n },\n\n _viewHome: function _viewHome() {\n this._setPage(_PageTypes2.default.HomePage);\n this.notifyNewScreen('home');\n },\n\n _setMxId: function _setMxId(payload) {\n var _this4 = this;\n\n var SetMxIdDialog = _index2.default.getComponent('views.dialogs.SetMxIdDialog');\n var close = _Modal2.default.createTrackedDialog('Set MXID', '', SetMxIdDialog, {\n homeserverUrl: _MatrixClientPeg2.default.get().getHomeserverUrl(),\n onFinished: function onFinished(submitted, credentials) {\n if (!submitted) {\n _dispatcher2.default.dispatch({\n action: 'cancel_after_sync_prepared'\n });\n if (payload.go_home_on_cancel) {\n _dispatcher2.default.dispatch({\n action: 'view_home_page'\n });\n }\n return;\n }\n _this4.onRegistered(credentials);\n },\n onDifferentServerClicked: function onDifferentServerClicked(ev) {\n _dispatcher2.default.dispatch({ action: 'start_registration' });\n close();\n },\n onLoginClick: function onLoginClick(ev) {\n _dispatcher2.default.dispatch({ action: 'start_login' });\n close();\n }\n }).close;\n },\n\n _createRoom: function _createRoom() {\n var CreateRoomDialog = _index2.default.getComponent('dialogs.CreateRoomDialog');\n _Modal2.default.createTrackedDialog('Create Room', '', CreateRoomDialog, {\n onFinished: function onFinished(shouldCreate, name, noFederate) {\n if (shouldCreate) {\n var createOpts = {};\n if (name) createOpts.name = name;\n if (noFederate) createOpts.creation_content = { 'm.federate': false };\n (0, _createRoom3.default)({ createOpts: createOpts }).done();\n }\n }\n });\n },\n\n _chatCreateOrReuse: function _chatCreateOrReuse(userId, goHomeOnCancel) {\n if (goHomeOnCancel === undefined) goHomeOnCancel = true;\n\n var ChatCreateOrReuseDialog = _index2.default.getComponent('views.dialogs.ChatCreateOrReuseDialog');\n // Use a deferred action to reshow the dialog once the user has registered\n if (_MatrixClientPeg2.default.get().isGuest()) {\n // No point in making 2 DMs with welcome bot. This assumes view_set_mxid will\n // result in a new DM with the welcome user.\n if (userId !== this.props.config.welcomeUserId) {\n _dispatcher2.default.dispatch({\n action: 'do_after_sync_prepared',\n deferred_action: {\n action: 'view_start_chat_or_reuse',\n user_id: userId\n }\n });\n }\n _dispatcher2.default.dispatch({\n action: 'require_registration',\n // If the set_mxid dialog is cancelled, view /home because if the browser\n // was pointing at /user/@someone:domain?action=chat, the URL needs to be\n // reset so that they can revisit /user/.. // (and trigger\n // `_chatCreateOrReuse` again)\n go_home_on_cancel: true\n });\n return;\n }\n\n var close = _Modal2.default.createTrackedDialog('Chat create or reuse', '', ChatCreateOrReuseDialog, {\n userId: userId,\n onFinished: function onFinished(success) {\n if (!success && goHomeOnCancel) {\n // Dialog cancelled, default to home\n _dispatcher2.default.dispatch({ action: 'view_home_page' });\n }\n },\n onNewDMClick: function onNewDMClick() {\n _dispatcher2.default.dispatch({\n action: 'start_chat',\n user_id: userId\n });\n // Close the dialog, indicate success (calls onFinished(true))\n close(true);\n },\n onExistingRoomSelected: function onExistingRoomSelected(roomId) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: roomId\n });\n close(true);\n }\n }).close;\n },\n\n _leaveRoomWarnings: function _leaveRoomWarnings(roomId) {\n var roomToLeave = _MatrixClientPeg2.default.get().getRoom(roomId);\n // Show a warning if there are additional complications.\n var joinRules = roomToLeave.currentState.getStateEvents('m.room.join_rules', '');\n var warnings = [];\n if (joinRules) {\n var rule = joinRules.getContent().join_rule;\n if (rule !== \"public\") {\n warnings.push(_react2.default.createElement(\n 'span',\n { className: 'warning', key: 'non_public_warning' },\n ' ' /* Whitespace, otherwise the sentences get smashed together */,\n (0, _languageHandler._t)(\"This room is not public. You will not be able to rejoin without an invite.\")\n ));\n }\n }\n return warnings;\n },\n\n _leaveRoom: function _leaveRoom(roomId) {\n var _this5 = this;\n\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n var roomToLeave = _MatrixClientPeg2.default.get().getRoom(roomId);\n var warnings = this._leaveRoomWarnings(roomId);\n\n _Modal2.default.createTrackedDialog('Leave room', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Leave room\"),\n description: _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Are you sure you want to leave the room '%(roomName)s'?\", { roomName: roomToLeave.name }),\n warnings\n ),\n button: (0, _languageHandler._t)(\"Leave\"),\n onFinished: function onFinished(shouldLeave) {\n if (shouldLeave) {\n var d = _MatrixClientPeg2.default.get().leave(roomId);\n\n // FIXME: controller shouldn't be loading a view :(\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n var modal = _Modal2.default.createDialog(Loader, null, 'mx_Dialog_spinner');\n\n d.then(function () {\n modal.close();\n if (_this5.state.currentRoomId === roomId) {\n _dispatcher2.default.dispatch({ action: 'view_next_room' });\n }\n }, function (err) {\n modal.close();\n console.error(\"Failed to leave room \" + roomId + \" \" + err);\n var title = (0, _languageHandler._t)(\"Failed to leave room\");\n var message = (0, _languageHandler._t)(\"Server may be unavailable, overloaded, or you hit a bug.\");\n if (err.errcode == 'M_CANNOT_LEAVE_SERVER_NOTICE_ROOM') {\n title = (0, _languageHandler._t)(\"Can't leave Server Notices room\");\n message = (0, _languageHandler._t)(\"This room is used for important messages from the Homeserver, \" + \"so you cannot leave it.\");\n } else if (err && err.message) {\n message = err.message;\n }\n _Modal2.default.createTrackedDialog('Failed to leave room', '', ErrorDialog, {\n title: title,\n description: message\n });\n });\n }\n }\n });\n },\n\n /**\n * Called whenever someone changes the theme\n *\n * @param {string} theme new theme\n */\n _onSetTheme: function _onSetTheme(theme) {\n if (!theme) {\n theme = _SettingsStore2.default.getValue(\"theme\");\n }\n\n // look for the stylesheet elements.\n // styleElements is a map from style name to HTMLLinkElement.\n var styleElements = (0, _create2.default)(null);\n var a = void 0;\n for (var i = 0; a = document.getElementsByTagName(\"link\")[i]; i++) {\n var href = a.getAttribute(\"href\");\n // shouldn't we be using the 'title' tag rather than the href?\n var match = href.match(/^bundles\\/.*\\/theme-(.*)\\.css$/);\n if (match) {\n styleElements[match[1]] = a;\n }\n }\n\n if (!(theme in styleElements)) {\n throw new Error(\"Unknown theme \" + theme);\n }\n\n // disable all of them first, then enable the one we want. Chrome only\n // bothers to do an update on a true->false transition, so this ensures\n // that we get exactly one update, at the right time.\n //\n // ^ This comment was true when we used to use alternative stylesheets\n // for the CSS. Nowadays we just set them all as disabled in index.html\n // and enable them as needed. It might be cleaner to disable them all\n // at the same time to prevent loading two themes simultaneously and\n // having them interact badly... but this causes a flash of unstyled app\n // which is even uglier. So we don't.\n\n styleElements[theme].disabled = false;\n\n var switchTheme = function switchTheme() {\n // we re-enable our theme here just in case we raced with another\n // theme set request as per https://github.com/vector-im/riot-web/issues/5601.\n // We could alternatively lock or similar to stop the race, but\n // this is probably good enough for now.\n styleElements[theme].disabled = false;\n (0, _values2.default)(styleElements).forEach(function (a) {\n if (a == styleElements[theme]) return;\n a.disabled = true;\n });\n _Tinter2.default.setTheme(theme);\n };\n\n // turns out that Firefox preloads the CSS for link elements with\n // the disabled attribute, but Chrome doesn't.\n\n var cssLoaded = false;\n\n styleElements[theme].onload = function () {\n switchTheme();\n };\n\n for (var _i = 0; _i < document.styleSheets.length; _i++) {\n var ss = document.styleSheets[_i];\n if (ss && ss.href === styleElements[theme].href) {\n cssLoaded = true;\n break;\n }\n }\n\n if (cssLoaded) {\n styleElements[theme].onload = undefined;\n switchTheme();\n }\n },\n\n /**\n * Called when a new logged in session has started\n *\n * @param {string} teamToken\n */\n _onLoggedIn: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(teamToken) {\n var roomId;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.setState({\n view: VIEWS.LOGGED_IN\n });\n\n if (!teamToken) {\n _context.next = 6;\n break;\n }\n\n // A team member has logged in, not a guest\n this._teamToken = teamToken;\n _dispatcher2.default.dispatch({ action: 'view_home_page' });\n _context.next = 18;\n break;\n\n case 6:\n if (!this._is_registered) {\n _context.next = 17;\n break;\n }\n\n this._is_registered = false;\n\n if (!(this.props.config.welcomeUserId && (0, _languageHandler.getCurrentLanguage)().startsWith(\"en\"))) {\n _context.next = 14;\n break;\n }\n\n _context.next = 11;\n return (0, _bluebird.resolve)((0, _createRoom3.default)({\n dmUserId: this.props.config.welcomeUserId,\n // Only view the welcome user if we're NOT looking at a room\n andView: !this.state.currentRoomId\n }));\n\n case 11:\n roomId = _context.sent;\n\n if (!roomId) {\n _context.next = 14;\n break;\n }\n\n return _context.abrupt('return');\n\n case 14:\n // The user has just logged in after registering\n _dispatcher2.default.dispatch({ action: 'view_home_page' });\n _context.next = 18;\n break;\n\n case 17:\n this._showScreenAfterLogin();\n\n case 18:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function _onLoggedIn(_x) {\n return _ref.apply(this, arguments);\n }\n\n return _onLoggedIn;\n }(),\n\n _showScreenAfterLogin: function _showScreenAfterLogin() {\n // If screenAfterLogin is set, use that, then null it so that a second login will\n // result in view_home_page, _user_settings or _room_directory\n if (this._screenAfterLogin && this._screenAfterLogin.screen) {\n this.showScreen(this._screenAfterLogin.screen, this._screenAfterLogin.params);\n this._screenAfterLogin = null;\n } else if (localStorage && localStorage.getItem('mx_last_room_id')) {\n // Before defaulting to directory, show the last viewed room\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: localStorage.getItem('mx_last_room_id')\n });\n } else {\n _dispatcher2.default.dispatch({ action: 'view_home_page' });\n }\n },\n\n /**\n * Called when the session is logged out\n */\n _onLoggedOut: function _onLoggedOut() {\n this.notifyNewScreen('login');\n this.setStateForNewView({\n view: VIEWS.LOGIN,\n ready: false,\n collapseLhs: false,\n collapseRhs: false,\n currentRoomId: null,\n page_type: _PageTypes2.default.RoomDirectory\n });\n this._teamToken = null;\n this._setPageSubtitle();\n },\n\n /**\n * Called just before the matrix client is started\n * (useful for setting listeners)\n */\n _onWillStartClient: function _onWillStartClient() {\n var self = this;\n\n // reset the 'have completed first sync' flag,\n // since we're about to start the client and therefore about\n // to do the first sync\n this.firstSyncComplete = false;\n this.firstSyncPromise = _bluebird2.default.defer();\n var cli = _MatrixClientPeg2.default.get();\n\n // Allow the JS SDK to reap timeline events. This reduces the amount of\n // memory consumed as the JS SDK stores multiple distinct copies of room\n // state (each of which can be 10s of MBs) for each DISJOINT timeline. This is\n // particularly noticeable when there are lots of 'limited' /sync responses\n // such as when laptops unsleep.\n // https://github.com/vector-im/riot-web/issues/3307#issuecomment-282895568\n cli.setCanResetTimelineCallback(function (roomId) {\n console.log(\"Request to reset timeline in room \", roomId, \" viewing:\", self.state.currentRoomId);\n if (roomId !== self.state.currentRoomId) {\n // It is safe to remove events from rooms we are not viewing.\n return true;\n }\n // We are viewing the room which we want to reset. It is only safe to do\n // this if we are not scrolled up in the view. To find out, delegate to\n // the timeline panel. If the timeline panel doesn't exist, then we assume\n // it is safe to reset the timeline.\n if (!self._loggedInView || !self._loggedInView.child) {\n return true;\n }\n return self._loggedInView.child.canResetTimelineInRoom(roomId);\n });\n\n cli.on('sync', function (state, prevState, data) {\n // LifecycleStore and others cannot directly subscribe to matrix client for\n // events because flux only allows store state changes during flux dispatches.\n // So dispatch directly from here. Ideally we'd use a SyncStateStore that\n // would do this dispatch and expose the sync state itself (by listening to\n // its own dispatch).\n _dispatcher2.default.dispatch({ action: 'sync_state', prevState: prevState, state: state });\n\n if (state === \"ERROR\" || state === \"RECONNECTING\") {\n if (data.error instanceof _matrixJsSdk2.default.InvalidStoreError) {\n Lifecycle.handleInvalidStoreError(data.error);\n }\n self.setState({ syncError: data.error || true });\n } else if (self.state.syncError) {\n self.setState({ syncError: null });\n }\n\n self.updateStatusIndicator(state, prevState);\n if (state === \"SYNCING\" && prevState === \"SYNCING\") {\n return;\n }\n console.log(\"MatrixClient sync state => %s\", state);\n if (state !== \"PREPARED\") {\n return;\n }\n\n self.firstSyncComplete = true;\n self.firstSyncPromise.resolve();\n\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n self.setState({ ready: true });\n });\n cli.on('Call.incoming', function (call) {\n // we dispatch this synchronously to make sure that the event\n // handlers on the call are set up immediately (so that if\n // we get an immediate hangup, we don't get a stuck call)\n _dispatcher2.default.dispatch({\n action: 'incoming_call',\n call: call\n }, true);\n });\n cli.on('Session.logged_out', function (call) {\n if (Lifecycle.isLoggingOut()) return;\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Signed out', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Signed Out'),\n description: (0, _languageHandler._t)('For security, this session has been signed out. Please sign in again.')\n });\n _dispatcher2.default.dispatch({\n action: 'logout'\n });\n });\n cli.on('no_consent', function (message, consentUri) {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('No Consent Dialog', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Terms and Conditions'),\n description: _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n ' ',\n (0, _languageHandler._t)('To continue using the %(homeserverDomain)s homeserver ' + 'you must review and agree to our terms and conditions.', { homeserverDomain: cli.getDomain() })\n )\n ),\n button: (0, _languageHandler._t)('Review terms and conditions'),\n cancelButton: (0, _languageHandler._t)('Dismiss'),\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n window.open(consentUri, '_blank');\n }\n }\n }, null, true);\n });\n\n cli.on(\"accountData\", function (ev) {\n if (ev.getType() === 'im.vector.web.settings') {\n if (ev.getContent() && ev.getContent().theme) {\n _dispatcher2.default.dispatch({\n action: 'set_theme',\n value: ev.getContent().theme\n });\n }\n }\n });\n\n var dft = new _DecryptionFailureTracker.DecryptionFailureTracker(function (total, errorCode) {\n _Analytics2.default.trackEvent('E2E', 'Decryption failure', errorCode, total);\n }, function (errorCode) {\n // Map JS-SDK error codes to tracker codes for aggregation\n switch (errorCode) {\n case 'MEGOLM_UNKNOWN_INBOUND_SESSION_ID':\n return 'olm_keys_not_sent_error';\n case 'OLM_UNKNOWN_MESSAGE_INDEX':\n return 'olm_index_error';\n case undefined:\n return 'unexpected_error';\n default:\n return 'unspecified_error';\n }\n });\n\n // Shelved for later date when we have time to think about persisting history of\n // tracked events across sessions.\n // dft.loadTrackedEventHashMap();\n\n dft.start();\n\n // When logging out, stop tracking failures and destroy state\n cli.on(\"Session.logged_out\", function () {\n return dft.stop();\n });\n cli.on(\"Event.decrypted\", function (e, err) {\n return dft.eventDecrypted(e, err);\n });\n\n var krh = new _KeyRequestHandler2.default(cli);\n cli.on(\"crypto.roomKeyRequest\", function (req) {\n krh.handleKeyRequest(req);\n });\n cli.on(\"crypto.roomKeyRequestCancellation\", function (req) {\n krh.handleKeyRequestCancellation(req);\n });\n cli.on(\"Room\", function (room) {\n if (_MatrixClientPeg2.default.get().isCryptoEnabled()) {\n var blacklistEnabled = _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.ROOM_DEVICE, \"blacklistUnverifiedDevices\", room.roomId,\n /*explicit=*/true);\n room.setBlacklistUnverifiedDevices(blacklistEnabled);\n }\n });\n cli.on(\"crypto.warning\", function (type) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n switch (type) {\n case 'CRYPTO_WARNING_OLD_VERSION_DETECTED':\n _Modal2.default.createTrackedDialog('Crypto migrated', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Old cryptography data detected'),\n description: (0, _languageHandler._t)(\"Data from an older version of Riot has been detected. \" + \"This will have caused end-to-end cryptography to malfunction \" + \"in the older version. End-to-end encrypted messages exchanged \" + \"recently whilst using the older version may not be decryptable \" + \"in this version. This may also cause messages exchanged with this \" + \"version to fail. If you experience problems, log out and back in \" + \"again. To retain message history, export and re-import your keys.\")\n });\n break;\n }\n });\n\n // Fire the tinter right on startup to ensure the default theme is applied\n // A later sync can/will correct the tint to be the right value for the user\n var colorScheme = _SettingsStore2.default.getValue(\"roomColor\");\n _Tinter2.default.tint(colorScheme.primary_color, colorScheme.secondary_color);\n },\n\n\n /**\n * Called shortly after the matrix client has started. Useful for\n * setting up anything that requires the client to be started.\n * @private\n */\n _onClientStarted: function _onClientStarted() {\n var cli = _MatrixClientPeg2.default.get();\n\n if (cli.isCryptoEnabled()) {\n var blacklistEnabled = _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, \"blacklistUnverifiedDevices\");\n cli.setGlobalBlacklistUnverifiedDevices(blacklistEnabled);\n }\n },\n\n showScreen: function showScreen(screen, params) {\n var _this6 = this;\n\n if (screen == 'register') {\n _dispatcher2.default.dispatch({\n action: 'start_registration',\n params: params\n });\n } else if (screen == 'login') {\n _dispatcher2.default.dispatch({\n action: 'start_login',\n params: params\n });\n } else if (screen == 'forgot_password') {\n _dispatcher2.default.dispatch({\n action: 'start_password_recovery',\n params: params\n });\n } else if (screen == 'new') {\n _dispatcher2.default.dispatch({\n action: 'view_create_room'\n });\n } else if (screen == 'settings') {\n _dispatcher2.default.dispatch({\n action: 'view_user_settings'\n });\n } else if (screen == 'home') {\n _dispatcher2.default.dispatch({\n action: 'view_home_page'\n });\n } else if (screen == 'start') {\n this.showScreen('home');\n _dispatcher2.default.dispatch({\n action: 'require_registration'\n });\n } else if (screen == 'directory') {\n _dispatcher2.default.dispatch({\n action: 'view_room_directory'\n });\n } else if (screen == 'groups') {\n _dispatcher2.default.dispatch({\n action: 'view_my_groups'\n });\n } else if (screen == 'post_registration') {\n _dispatcher2.default.dispatch({\n action: 'start_post_registration'\n });\n } else if (screen.indexOf('room/') == 0) {\n var segments = screen.substring(5).split('/');\n var roomString = segments[0];\n var eventId = segments[1]; // undefined if no event id given\n\n // FIXME: sort_out caseConsistency\n var thirdPartyInvite = {\n inviteSignUrl: params.signurl,\n invitedEmail: params.email\n };\n var oobData = {\n name: params.room_name,\n avatarUrl: params.room_avatar_url,\n inviterName: params.inviter_name\n };\n\n var payload = {\n action: 'view_room',\n event_id: eventId,\n // If an event ID is given in the URL hash, notify RoomViewStore to mark\n // it as highlighted, which will propagate to RoomView and highlight the\n // associated EventTile.\n highlighted: Boolean(eventId),\n third_party_invite: thirdPartyInvite,\n oob_data: oobData\n };\n if (roomString[0] == '#') {\n payload.room_alias = roomString;\n } else {\n payload.room_id = roomString;\n }\n\n // we can't view a room unless we're logged in\n // (a guest account is fine)\n if (this.state.view === VIEWS.LOGGED_IN) {\n _dispatcher2.default.dispatch(payload);\n }\n } else if (screen.indexOf('user/') == 0) {\n var userId = screen.substring(5);\n\n // Wait for the first sync so that `getRoom` gives us a room object if it's\n // in the sync response\n var waitFor = this.firstSyncPromise ? this.firstSyncPromise.promise : _bluebird2.default.resolve();\n waitFor.then(function () {\n if (params.action === 'chat') {\n _this6._chatCreateOrReuse(userId);\n return;\n }\n\n _this6._setPage(_PageTypes2.default.UserView);\n _this6.notifyNewScreen('user/' + userId);\n var member = new _matrixJsSdk2.default.RoomMember(null, userId);\n _dispatcher2.default.dispatch({\n action: 'view_user',\n member: member\n });\n });\n } else if (screen.indexOf('group/') == 0) {\n var groupId = screen.substring(6);\n\n // TODO: Check valid group ID\n\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: groupId\n });\n } else {\n console.info(\"Ignoring showScreen for '%s'\", screen);\n }\n },\n\n notifyNewScreen: function notifyNewScreen(screen) {\n if (this.props.onNewScreen) {\n this.props.onNewScreen(screen);\n }\n },\n\n onAliasClick: function onAliasClick(event, alias) {\n event.preventDefault();\n _dispatcher2.default.dispatch({ action: 'view_room', room_alias: alias });\n },\n\n onUserClick: function onUserClick(event, userId) {\n event.preventDefault();\n\n var member = new _matrixJsSdk2.default.RoomMember(null, userId);\n if (!member) {\n return;\n }\n _dispatcher2.default.dispatch({\n action: 'view_user',\n member: member\n });\n },\n\n onGroupClick: function onGroupClick(event, groupId) {\n event.preventDefault();\n _dispatcher2.default.dispatch({ action: 'view_group', group_id: groupId });\n },\n\n onLogoutClick: function onLogoutClick(event) {\n _dispatcher2.default.dispatch({\n action: 'logout'\n });\n event.stopPropagation();\n event.preventDefault();\n },\n\n handleResize: function handleResize(e) {\n var hideLhsThreshold = 1000;\n var showLhsThreshold = 1000;\n var hideRhsThreshold = 820;\n var showRhsThreshold = 820;\n\n if (this._windowWidth > hideLhsThreshold && window.innerWidth <= hideLhsThreshold) {\n _dispatcher2.default.dispatch({ action: 'hide_left_panel' });\n }\n if (this._windowWidth <= showLhsThreshold && window.innerWidth > showLhsThreshold) {\n _dispatcher2.default.dispatch({ action: 'show_left_panel' });\n }\n if (this._windowWidth > hideRhsThreshold && window.innerWidth <= hideRhsThreshold) {\n _dispatcher2.default.dispatch({ action: 'hide_right_panel' });\n }\n if (this._windowWidth <= showRhsThreshold && window.innerWidth > showRhsThreshold) {\n _dispatcher2.default.dispatch({ action: 'show_right_panel' });\n }\n\n this._windowWidth = window.innerWidth;\n },\n\n onRoomCreated: function onRoomCreated(roomId) {\n _dispatcher2.default.dispatch({\n action: \"view_room\",\n room_id: roomId\n });\n },\n\n onRegisterClick: function onRegisterClick() {\n this.showScreen(\"register\");\n },\n\n onLoginClick: function onLoginClick() {\n this.showScreen(\"login\");\n },\n\n onForgotPasswordClick: function onForgotPasswordClick() {\n this.showScreen(\"forgot_password\");\n },\n\n onReturnToAppClick: function onReturnToAppClick() {\n // treat it the same as if the user had completed the login\n this._onLoggedIn(null);\n },\n\n // returns a promise which resolves to the new MatrixClient\n onRegistered: function onRegistered(credentials, teamToken) {\n // XXX: These both should be in state or ideally store(s) because we risk not\n // rendering the most up-to-date view of state otherwise.\n // teamToken may not be truthy\n this._teamToken = teamToken;\n this._is_registered = true;\n return Lifecycle.setLoggedIn(credentials);\n },\n\n onFinishPostRegistration: function onFinishPostRegistration() {\n // Don't confuse this with \"PageType\" which is the middle window to show\n this.setState({\n view: VIEWS.LOGGED_IN\n });\n this.showScreen(\"settings\");\n },\n\n onVersion: function onVersion(current, latest, releaseNotes) {\n this.setState({\n version: current,\n newVersion: latest,\n hasNewVersion: current !== latest,\n newVersionReleaseNotes: releaseNotes,\n checkingForUpdate: null\n });\n },\n\n onSendEvent: function onSendEvent(roomId, event) {\n var cli = _MatrixClientPeg2.default.get();\n if (!cli) {\n _dispatcher2.default.dispatch({ action: 'message_send_failed' });\n return;\n }\n\n cli.sendEvent(roomId, event.getType(), event.getContent()).done(function () {\n _dispatcher2.default.dispatch({ action: 'message_sent' });\n }, function (err) {\n _dispatcher2.default.dispatch({ action: 'message_send_failed' });\n });\n },\n\n _setPageSubtitle: function _setPageSubtitle() {\n var subtitle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n document.title = 'Riot ' + subtitle;\n },\n\n updateStatusIndicator: function updateStatusIndicator(state, prevState) {\n var notifCount = 0;\n\n var rooms = _MatrixClientPeg2.default.get().getRooms();\n for (var i = 0; i < rooms.length; ++i) {\n if (rooms[i].hasMembershipState(_MatrixClientPeg2.default.get().credentials.userId, 'invite')) {\n notifCount++;\n } else if (rooms[i].getUnreadNotificationCount()) {\n // if we were summing unread notifs:\n // notifCount += rooms[i].getUnreadNotificationCount();\n // instead, we just count the number of rooms with notifs.\n notifCount++;\n }\n }\n\n if (_PlatformPeg2.default.get()) {\n _PlatformPeg2.default.get().setErrorStatus(state === 'ERROR');\n _PlatformPeg2.default.get().setNotificationCount(notifCount);\n }\n\n var subtitle = '';\n if (state === \"ERROR\") {\n subtitle += '[' + (0, _languageHandler._t)(\"Offline\") + '] ';\n }\n if (notifCount > 0) {\n subtitle += '[' + notifCount + ']';\n }\n\n this._setPageSubtitle(subtitle);\n },\n\n onCloseAllSettings: function onCloseAllSettings() {\n _dispatcher2.default.dispatch({ action: 'close_settings' });\n },\n onServerConfigChange: function onServerConfigChange(config) {\n var newState = {};\n if (config.hsUrl) {\n newState.register_hs_url = config.hsUrl;\n }\n if (config.isUrl) {\n newState.register_is_url = config.isUrl;\n }\n this.setState(newState);\n },\n\n\n _makeRegistrationUrl: function _makeRegistrationUrl(params) {\n if (this.props.startingFragmentQueryParams.referrer) {\n params.referrer = this.props.startingFragmentQueryParams.referrer;\n }\n return this.props.makeRegistrationUrl(params);\n },\n\n _collectLoggedInView: function _collectLoggedInView(ref) {\n this._loggedInView = ref;\n },\n\n render: function render() {\n // console.log(`Rendering MatrixChat with view ${this.state.view}`);\n\n if (this.state.view === VIEWS.LOADING || this.state.view === VIEWS.LOGGING_IN) {\n var Spinner = _index2.default.getComponent('elements.Spinner');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixChat_splash' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n // needs to be before normal PageTypes as you are logged in technically\n if (this.state.view === VIEWS.POST_REGISTRATION) {\n var PostRegistration = _index2.default.getComponent('structures.login.PostRegistration');\n return _react2.default.createElement(PostRegistration, {\n onComplete: this.onFinishPostRegistration });\n }\n\n if (this.state.view === VIEWS.LOGGED_IN) {\n // store errors stop the client syncing and require user intervention, so we'll\n // be showing a dialog. Don't show anything else.\n var isStoreError = this.state.syncError && this.state.syncError instanceof _matrixJsSdk2.default.InvalidStoreError;\n\n // `ready` and `view==LOGGED_IN` may be set before `page_type` (because the\n // latter is set via the dispatcher). If we don't yet have a `page_type`,\n // keep showing the spinner for now.\n if (this.state.ready && this.state.page_type && !isStoreError) {\n /* for now, we stuff the entirety of our props and state into the LoggedInView.\n * we should go through and figure out what we actually need to pass down, as well\n * as using something like redux to avoid having a billion bits of state kicking around.\n */\n var LoggedInView = _index2.default.getComponent('structures.LoggedInView');\n return _react2.default.createElement(LoggedInView, (0, _extends3.default)({ ref: this._collectLoggedInView, matrixClient: _MatrixClientPeg2.default.get(),\n onRoomCreated: this.onRoomCreated,\n onCloseAllSettings: this.onCloseAllSettings,\n onRegistered: this.onRegistered,\n currentRoomId: this.state.currentRoomId,\n teamToken: this._teamToken,\n showCookieBar: this.state.showCookieBar\n }, this.props, this.state));\n } else {\n // we think we are logged in, but are still waiting for the /sync to complete\n var _Spinner = _index2.default.getComponent('elements.Spinner');\n var errorBox = void 0;\n if (this.state.syncError && !isStoreError) {\n errorBox = _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixChat_syncError' },\n (0, _ErrorUtils.messageForSyncError)(this.state.syncError)\n );\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixChat_splash' },\n errorBox,\n _react2.default.createElement(_Spinner, null),\n _react2.default.createElement(\n 'a',\n { href: '#', className: 'mx_MatrixChat_splashButtons', onClick: this.onLogoutClick },\n (0, _languageHandler._t)('Logout')\n )\n );\n }\n }\n\n if (this.state.view === VIEWS.REGISTER) {\n var Registration = _index2.default.getComponent('structures.login.Registration');\n return _react2.default.createElement(Registration, {\n clientSecret: this.state.register_client_secret,\n sessionId: this.state.register_session_id,\n idSid: this.state.register_id_sid,\n email: this.props.startingFragmentQueryParams.email,\n referrer: this.props.startingFragmentQueryParams.referrer,\n defaultHsUrl: this.getDefaultHsUrl(),\n defaultIsUrl: this.getDefaultIsUrl(),\n brand: this.props.config.brand,\n teamServerConfig: this.props.config.teamServerConfig,\n customHsUrl: this.getCurrentHsUrl(),\n customIsUrl: this.getCurrentIsUrl(),\n makeRegistrationUrl: this._makeRegistrationUrl,\n defaultDeviceDisplayName: this.props.defaultDeviceDisplayName,\n onLoggedIn: this.onRegistered,\n onLoginClick: this.onLoginClick,\n onRegisterClick: this.onRegisterClick,\n onCancelClick: _MatrixClientPeg2.default.get() ? this.onReturnToAppClick : null,\n onServerConfigChange: this.onServerConfigChange\n });\n }\n\n if (this.state.view === VIEWS.FORGOT_PASSWORD) {\n var ForgotPassword = _index2.default.getComponent('structures.login.ForgotPassword');\n return _react2.default.createElement(ForgotPassword, {\n defaultHsUrl: this.getDefaultHsUrl(),\n defaultIsUrl: this.getDefaultIsUrl(),\n customHsUrl: this.getCurrentHsUrl(),\n customIsUrl: this.getCurrentIsUrl(),\n onComplete: this.onLoginClick,\n onRegisterClick: this.onRegisterClick,\n onLoginClick: this.onLoginClick });\n }\n\n if (this.state.view === VIEWS.LOGIN) {\n var Login = _index2.default.getComponent('structures.login.Login');\n return _react2.default.createElement(Login, {\n onLoggedIn: Lifecycle.setLoggedIn,\n onRegisterClick: this.onRegisterClick,\n defaultHsUrl: this.getDefaultHsUrl(),\n defaultIsUrl: this.getDefaultIsUrl(),\n customHsUrl: this.getCurrentHsUrl(),\n customIsUrl: this.getCurrentIsUrl(),\n fallbackHsUrl: this.getFallbackHsUrl(),\n defaultDeviceDisplayName: this.props.defaultDeviceDisplayName,\n onForgotPasswordClick: this.onForgotPasswordClick,\n enableGuest: this.props.enableGuest,\n onCancelClick: _MatrixClientPeg2.default.get() ? this.onReturnToAppClick : null,\n onServerConfigChange: this.onServerConfigChange\n });\n }\n\n console.error('Unknown view ' + this.state.view);\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=MatrixChat.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DecryptionFailureTracker = exports.DecryptionFailure = undefined;\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends3 = require('babel-runtime/helpers/extends');\n\nvar _extends4 = _interopRequireDefault(_extends3);\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _map = require('babel-runtime/core-js/map');\n\nvar _map2 = _interopRequireDefault(_map);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DecryptionFailure = exports.DecryptionFailure = function DecryptionFailure(failedEventId, errorCode) {\n (0, _classCallCheck3.default)(this, DecryptionFailure);\n\n this.failedEventId = failedEventId;\n this.errorCode = errorCode;\n this.ts = Date.now();\n};\n\nvar DecryptionFailureTracker = exports.DecryptionFailureTracker = function () {\n\n /**\n * Create a new DecryptionFailureTracker.\n *\n * Call `eventDecrypted(event, err)` on this instance when an event is decrypted.\n *\n * Call `start()` to start the tracker, and `stop()` to stop tracking.\n *\n * @param {function} fn The tracking function, which will be called when failures\n * are tracked. The function should have a signature `(count, trackedErrorCode) => {...}`,\n * where `count` is the number of failures and `errorCode` matches the `.code` of\n * provided DecryptionError errors (by default, unless `errorCodeMapFn` is specified.\n * @param {function?} errorCodeMapFn The function used to map error codes to the\n * trackedErrorCode. If not provided, the `.code` of errors will be used.\n */\n\n\n // Call `checkFailures` every `CHECK_INTERVAL_MS`.\n\n\n // Event IDs of failures that were tracked previously\n\n // Array of items of type DecryptionFailure. Every `CHECK_INTERVAL_MS`, this list\n // is checked for failures that happened > `GRACE_PERIOD_MS` ago. Those that did\n // are accumulated in `failureCounts`.\n function DecryptionFailureTracker(fn, errorCodeMapFn) {\n (0, _classCallCheck3.default)(this, DecryptionFailureTracker);\n this.failures = [];\n this.failureCounts = {\n // [errorCode]: 42\n };\n this.trackedEventHashMap = {\n // [eventId]: true\n };\n this.checkInterval = null;\n this.trackInterval = null;\n\n if (!fn || typeof fn !== 'function') {\n throw new Error('DecryptionFailureTracker requires tracking function');\n }\n\n if (errorCodeMapFn && typeof errorCodeMapFn !== 'function') {\n throw new Error('DecryptionFailureTracker second constructor argument should be a function');\n }\n\n this._trackDecryptionFailure = fn;\n this._mapErrorCode = errorCodeMapFn;\n }\n\n // loadTrackedEventHashMap() {\n // this.trackedEventHashMap = JSON.parse(localStorage.getItem('mx-decryption-failure-event-id-hashes')) || {};\n // }\n\n // saveTrackedEventHashMap() {\n // localStorage.setItem('mx-decryption-failure-event-id-hashes', JSON.stringify(this.trackedEventHashMap));\n // }\n\n // Give events a chance to be decrypted by waiting `GRACE_PERIOD_MS` before counting\n // the failure in `failureCounts`.\n\n\n // Spread the load on `Analytics` by tracking at a low frequency, `TRACK_INTERVAL_MS`.\n\n\n // Set to an interval ID when `start` is called\n\n\n // A histogram of the number of failures that will be tracked at the next tracking\n // interval, split by failure error code.\n\n\n (0, _createClass3.default)(DecryptionFailureTracker, [{\n key: 'eventDecrypted',\n value: function eventDecrypted(e, err) {\n if (err) {\n this.addDecryptionFailure(new DecryptionFailure(e.getId(), err.code));\n } else {\n // Could be an event in the failures, remove it\n this.removeDecryptionFailuresForEvent(e);\n }\n }\n }, {\n key: 'addDecryptionFailure',\n value: function addDecryptionFailure(failure) {\n this.failures.push(failure);\n }\n }, {\n key: 'removeDecryptionFailuresForEvent',\n value: function removeDecryptionFailuresForEvent(e) {\n this.failures = this.failures.filter(function (f) {\n return f.failedEventId !== e.getId();\n });\n }\n\n /**\n * Start checking for and tracking failures.\n */\n\n }, {\n key: 'start',\n value: function start() {\n var _this = this;\n\n this.checkInterval = setInterval(function () {\n return _this.checkFailures(Date.now());\n }, DecryptionFailureTracker.CHECK_INTERVAL_MS);\n\n this.trackInterval = setInterval(function () {\n return _this.trackFailures();\n }, DecryptionFailureTracker.TRACK_INTERVAL_MS);\n }\n\n /**\n * Clear state and stop checking for and tracking failures.\n */\n\n }, {\n key: 'stop',\n value: function stop() {\n clearInterval(this.checkInterval);\n clearInterval(this.trackInterval);\n\n this.failures = [];\n this.failureCounts = {};\n }\n\n /**\n * Mark failures that occured before nowTs - GRACE_PERIOD_MS as failures that should be\n * tracked. Only mark one failure per event ID.\n * @param {number} nowTs the timestamp that represents the time now.\n */\n\n }, {\n key: 'checkFailures',\n value: function checkFailures(nowTs) {\n var _this2 = this;\n\n var failuresGivenGrace = [];\n var failuresNotReady = [];\n while (this.failures.length > 0) {\n var f = this.failures.shift();\n if (nowTs > f.ts + DecryptionFailureTracker.GRACE_PERIOD_MS) {\n failuresGivenGrace.push(f);\n } else {\n failuresNotReady.push(f);\n }\n }\n this.failures = failuresNotReady;\n\n // Only track one failure per event\n var dedupedFailuresMap = failuresGivenGrace.reduce(function (map, failure) {\n if (!_this2.trackedEventHashMap[failure.failedEventId]) {\n return map.set(failure.failedEventId, failure);\n } else {\n return map;\n }\n },\n // Use a map to preseve key ordering\n new _map2.default());\n\n var trackedEventIds = [].concat((0, _toConsumableArray3.default)(dedupedFailuresMap.keys()));\n\n this.trackedEventHashMap = trackedEventIds.reduce(function (result, eventId) {\n return (0, _extends4.default)({}, result, (0, _defineProperty3.default)({}, eventId, true));\n }, this.trackedEventHashMap);\n\n // Commented out for now for expediency, we need to consider unbound nature of storing\n // this in localStorage\n // this.saveTrackedEventHashMap();\n\n var dedupedFailures = dedupedFailuresMap.values();\n\n this._aggregateFailures(dedupedFailures);\n }\n }, {\n key: '_aggregateFailures',\n value: function _aggregateFailures(failures) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(failures), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var failure = _step.value;\n\n var errorCode = failure.errorCode;\n this.failureCounts[errorCode] = (this.failureCounts[errorCode] || 0) + 1;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n\n /**\n * If there are failures that should be tracked, call the given trackDecryptionFailure\n * function with the number of failures that should be tracked.\n */\n\n }, {\n key: 'trackFailures',\n value: function trackFailures() {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(this.failureCounts)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var errorCode = _step2.value;\n\n if (this.failureCounts[errorCode] > 0) {\n var trackedErrorCode = this._mapErrorCode ? this._mapErrorCode(errorCode) : errorCode;\n\n this._trackDecryptionFailure(this.failureCounts[errorCode], trackedErrorCode);\n this.failureCounts[errorCode] = 0;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n }]);\n return DecryptionFailureTracker;\n}();\n\nDecryptionFailureTracker.TRACK_INTERVAL_MS = 60000;\nDecryptionFailureTracker.CHECK_INTERVAL_MS = 5000;\nDecryptionFailureTracker.GRACE_PERIOD_MS = 60000;\n//# sourceMappingURL=DecryptionFailureTracker.js.map","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.map');\nrequire('../modules/es7.map.to-json');\nrequire('../modules/es7.map.of');\nrequire('../modules/es7.map.from');\nmodule.exports = require('../modules/_core').Map;\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Map', { toJSON: require('./_collection-to-json')('Map') });\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\nrequire('./_set-collection-of')('Map');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\nrequire('./_set-collection-from')('Map');\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _maxSafeInteger = require('babel-runtime/core-js/number/max-safe-integer');\n\nvar _maxSafeInteger2 = _interopRequireDefault(_maxSafeInteger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction tsOfNewestEvent(room) {\n if (room.timeline.length) {\n return room.timeline[room.timeline.length - 1].getTs();\n } else {\n return _maxSafeInteger2.default;\n }\n}\n\nfunction mostRecentActivityFirst(roomList) {\n return roomList.sort(function (a, b) {\n return tsOfNewestEvent(b) - tsOfNewestEvent(a);\n });\n}\n\nmodule.exports = {\n mostRecentActivityFirst: mostRecentActivityFirst\n};\n//# sourceMappingURL=RoomListSorter.js.map","\"use strict\";\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MatrixClientPeg = require(\"./MatrixClientPeg\");\nvar dis = require(\"./dispatcher\");\n\n// Time in ms after that a user is considered as unavailable/away\nvar UNAVAILABLE_TIME_MS = 3 * 60 * 1000; // 3 mins\nvar PRESENCE_STATES = [\"online\", \"offline\", \"unavailable\"];\n\nvar Presence = function () {\n function Presence() {\n (0, _classCallCheck3.default)(this, Presence);\n }\n\n (0, _createClass3.default)(Presence, [{\n key: \"start\",\n\n\n /**\n * Start listening the user activity to evaluate his presence state.\n * Any state change will be sent to the Home Server.\n */\n value: function start() {\n this.running = true;\n if (undefined === this.state) {\n this._resetTimer();\n this.dispatcherRef = dis.register(this._onAction.bind(this));\n }\n }\n\n /**\n * Stop tracking user activity\n */\n\n }, {\n key: \"stop\",\n value: function stop() {\n this.running = false;\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = undefined;\n dis.unregister(this.dispatcherRef);\n }\n this.state = undefined;\n }\n\n /**\n * Get the current presence state.\n * @returns {string} the presence state (see PRESENCE enum)\n */\n\n }, {\n key: \"getState\",\n value: function getState() {\n return this.state;\n }\n\n /**\n * Set the presence state.\n * If the state has changed, the Home Server will be notified.\n * @param {string} newState the new presence state (see PRESENCE enum)\n */\n\n }, {\n key: \"setState\",\n value: function setState(newState) {\n if (newState === this.state) {\n return;\n }\n if (PRESENCE_STATES.indexOf(newState) === -1) {\n throw new Error(\"Bad presence state: \" + newState);\n }\n if (!this.running) {\n return;\n }\n var old_state = this.state;\n this.state = newState;\n\n if (MatrixClientPeg.get().isGuest()) {\n return; // don't try to set presence when a guest; it won't work.\n }\n\n var self = this;\n MatrixClientPeg.get().setPresence(this.state).done(function () {\n console.log(\"Presence: %s\", newState);\n }, function (err) {\n console.error(\"Failed to set presence: %s\", err);\n self.state = old_state;\n });\n }\n\n /**\n * Callback called when the user made no action on the page for UNAVAILABLE_TIME ms.\n * @private\n */\n\n }, {\n key: \"_onUnavailableTimerFire\",\n value: function _onUnavailableTimerFire() {\n this.setState(\"unavailable\");\n }\n }, {\n key: \"_onAction\",\n value: function _onAction(payload) {\n if (payload.action === \"user_activity\") {\n this._resetTimer();\n }\n }\n\n /**\n * Callback called when the user made an action on the page\n * @private\n */\n\n }, {\n key: \"_resetTimer\",\n value: function _resetTimer() {\n var self = this;\n this.setState(\"online\");\n // Re-arm the timer\n clearTimeout(this.timer);\n this.timer = setTimeout(function () {\n self._onUnavailableTimerFire();\n }, UNAVAILABLE_TIME_MS);\n }\n }]);\n return Presence;\n}();\n\nmodule.exports = new Presence();\n//# sourceMappingURL=Presence.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _create = require('babel-runtime/core-js/object/create');\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar KeyRequestHandler = function () {\n function KeyRequestHandler(matrixClient) {\n (0, _classCallCheck3.default)(this, KeyRequestHandler);\n\n this._matrixClient = matrixClient;\n\n // the user/device for which we currently have a dialog open\n this._currentUser = null;\n this._currentDevice = null;\n\n // userId -> deviceId -> [keyRequest]\n this._pendingKeyRequests = (0, _create2.default)(null);\n }\n\n (0, _createClass3.default)(KeyRequestHandler, [{\n key: 'handleKeyRequest',\n value: function handleKeyRequest(keyRequest) {\n var userId = keyRequest.userId;\n var deviceId = keyRequest.deviceId;\n var requestId = keyRequest.requestId;\n\n if (!this._pendingKeyRequests[userId]) {\n this._pendingKeyRequests[userId] = (0, _create2.default)(null);\n }\n if (!this._pendingKeyRequests[userId][deviceId]) {\n this._pendingKeyRequests[userId][deviceId] = [];\n }\n\n // check if we already have this request\n var requests = this._pendingKeyRequests[userId][deviceId];\n if (requests.find(function (r) {\n return r.requestId === requestId;\n })) {\n console.log(\"Already have this key request, ignoring\");\n return;\n }\n\n requests.push(keyRequest);\n\n if (this._currentUser) {\n // ignore for now\n console.log(\"Key request, but we already have a dialog open\");\n return;\n }\n\n this._processNextRequest();\n }\n }, {\n key: 'handleKeyRequestCancellation',\n value: function handleKeyRequestCancellation(cancellation) {\n // see if we can find the request in the queue\n var userId = cancellation.userId;\n var deviceId = cancellation.deviceId;\n var requestId = cancellation.requestId;\n\n if (userId === this._currentUser && deviceId === this._currentDevice) {\n console.log(\"room key request cancellation for the user we currently have a\" + \" dialog open for\");\n // TODO: update the dialog. For now, we just ignore the\n // cancellation.\n return;\n }\n\n if (!this._pendingKeyRequests[userId]) {\n return;\n }\n var requests = this._pendingKeyRequests[userId][deviceId];\n if (!requests) {\n return;\n }\n var idx = requests.findIndex(function (r) {\n return r.requestId === requestId;\n });\n if (idx < 0) {\n return;\n }\n console.log(\"Forgetting room key request\");\n requests.splice(idx, 1);\n if (requests.length === 0) {\n delete this._pendingKeyRequests[userId][deviceId];\n if ((0, _keys2.default)(this._pendingKeyRequests[userId]).length === 0) {\n delete this._pendingKeyRequests[userId];\n }\n }\n }\n }, {\n key: '_processNextRequest',\n value: function _processNextRequest() {\n var _this = this;\n\n var userId = (0, _keys2.default)(this._pendingKeyRequests)[0];\n if (!userId) {\n return;\n }\n var deviceId = (0, _keys2.default)(this._pendingKeyRequests[userId])[0];\n if (!deviceId) {\n return;\n }\n console.log('Starting KeyShareDialog for ' + userId + ':' + deviceId);\n\n var finished = function finished(r) {\n _this._currentUser = null;\n _this._currentDevice = null;\n\n if (r) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(_this._pendingKeyRequests[userId][deviceId]), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var req = _step.value;\n\n req.share();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n delete _this._pendingKeyRequests[userId][deviceId];\n if ((0, _keys2.default)(_this._pendingKeyRequests[userId]).length === 0) {\n delete _this._pendingKeyRequests[userId];\n }\n\n _this._processNextRequest();\n };\n\n var KeyShareDialog = _index2.default.getComponent(\"dialogs.KeyShareDialog\");\n _Modal2.default.createTrackedDialog('Key Share', 'Process Next Request', KeyShareDialog, {\n matrixClient: this._matrixClient,\n userId: userId,\n deviceId: deviceId,\n onFinished: finished\n });\n this._currentUser = userId;\n this._currentDevice = deviceId;\n }\n }]);\n return KeyRequestHandler;\n}();\n\nexports.default = KeyRequestHandler;\nmodule.exports = exports['default'];\n//# sourceMappingURL=KeyRequestHandler.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.startAnyRegistrationFlow = undefined;\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\n/**\n * Starts either the ILAG or full registration flow, depending\n * on what the HS supports\n *\n * @param {object} options\n * @param {bool} options.go_home_on_cancel If true, goes to\n * the hame page if the user cancels the action\n */\nvar startAnyRegistrationFlow = exports.startAnyRegistrationFlow = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(options) {\n var flows, hasIlagFlow, QuestionDialog;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (options === undefined) options = {};\n _context.next = 3;\n return (0, _bluebird.resolve)(_getRegistrationFlows());\n\n case 3:\n flows = _context.sent;\n\n // look for an ILAG compatible flow. We define this as one\n // which has only dummy or recaptcha flows. In practice it\n // would support any stage InteractiveAuth supports, just not\n // ones like email & msisdn which require the user to supply\n // the relevant details in advance. We err on the side of\n // caution though.\n hasIlagFlow = flows.some(function (flow) {\n return flow.stages.every(function (stage) {\n return ['m.login.dummy', 'm.login.recaptcha'].includes(stage);\n });\n });\n\n\n if (hasIlagFlow) {\n _dispatcher2.default.dispatch({\n action: 'view_set_mxid',\n go_home_on_cancel: options.go_home_on_cancel\n });\n } else {\n QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n\n _Modal2.default.createTrackedDialog('Registration required', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Registration Required\"),\n description: (0, _languageHandler._t)(\"You need to register to do this. Would you like to register now?\"),\n button: (0, _languageHandler._t)(\"Register\"),\n onFinished: function onFinished(proceed) {\n if (proceed) {\n _dispatcher2.default.dispatch({ action: 'start_registration' });\n } else if (options.go_home_on_cancel) {\n _dispatcher2.default.dispatch({ action: 'view_home_page' });\n }\n }\n });\n }\n\n case 6:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function startAnyRegistrationFlow(_x) {\n return _ref.apply(this, arguments);\n };\n}(); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/**\n * Utility code for registering with a homeserver\n * Note that this is currently *not* used by the actual\n * registration code.\n */\n\nvar _getRegistrationFlows = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n _context2.next = 3;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().register(null, null, undefined, {}, {}));\n\n case 3:\n console.log(\"Register request succeeded when it should have returned 401!\");\n _context2.next = 11;\n break;\n\n case 6:\n _context2.prev = 6;\n _context2.t0 = _context2['catch'](0);\n\n if (!(_context2.t0.httpStatus === 401)) {\n _context2.next = 10;\n break;\n }\n\n return _context2.abrupt('return', _context2.t0.data.flows);\n\n case 10:\n throw _context2.t0;\n\n case 11:\n throw new Error(\"Register request succeeded when it should have returned 401!\");\n\n case 12:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[0, 6]]);\n }));\n\n return function _getRegistrationFlows() {\n return _ref2.apply(this, arguments);\n };\n}();\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n//# sourceMappingURL=Registration.js.map","'use strict';\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _utils = require('flux/utils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar INITIAL_STATE = {\n deferred_action: null\n};\n\n/**\n * A class for storing application state to do with login/registration. This is a simple\n * flux store that listens for actions and updates its state accordingly, informing any\n * listeners (views) of state changes.\n */\n\nvar LifecycleStore = function (_Store) {\n (0, _inherits3.default)(LifecycleStore, _Store);\n\n function LifecycleStore() {\n (0, _classCallCheck3.default)(this, LifecycleStore);\n\n // Initialise state\n var _this = (0, _possibleConstructorReturn3.default)(this, (LifecycleStore.__proto__ || (0, _getPrototypeOf2.default)(LifecycleStore)).call(this, _dispatcher2.default));\n\n _this._state = INITIAL_STATE;\n return _this;\n }\n\n (0, _createClass3.default)(LifecycleStore, [{\n key: '_setState',\n value: function _setState(newState) {\n this._state = (0, _assign2.default)(this._state, newState);\n this.__emitChange();\n }\n }, {\n key: '__onDispatch',\n value: function __onDispatch(payload) {\n switch (payload.action) {\n case 'do_after_sync_prepared':\n this._setState({\n deferred_action: payload.deferred_action\n });\n break;\n case 'cancel_after_sync_prepared':\n this._setState({\n deferred_action: null\n });\n break;\n case 'sync_state':\n {\n if (payload.state !== 'PREPARED') {\n break;\n }\n if (!this._state.deferred_action) break;\n var deferredAction = (0, _assign2.default)({}, this._state.deferred_action);\n this._setState({\n deferred_action: null\n });\n _dispatcher2.default.dispatch(deferredAction);\n break;\n }\n case 'on_logged_out':\n this.reset();\n break;\n }\n }\n }, {\n key: 'reset',\n value: function reset() {\n this._state = (0, _assign2.default)({}, INITIAL_STATE);\n }\n }]);\n return LifecycleStore;\n}(_utils.Store);\n\nvar singletonLifecycleStore = null;\nif (!singletonLifecycleStore) {\n singletonLifecycleStore = new LifecycleStore();\n}\nmodule.exports = singletonLifecycleStore;\n//# sourceMappingURL=LifecycleStore.js.map","'use strict';\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _shouldHideEvent = require('../../shouldHideEvent');\n\nvar _shouldHideEvent2 = _interopRequireDefault(_shouldHideEvent);\n\nvar _DateUtils = require('../../DateUtils');\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar CONTINUATION_MAX_INTERVAL = 5 * 60 * 1000; // 5 minutes\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar continuedTypes = ['m.sticker', 'm.room.message'];\n\n/* (almost) stateless UI component which builds the event tiles in the room timeline.\n */\nmodule.exports = _react2.default.createClass({\n displayName: 'MessagePanel',\n\n propTypes: {\n // true to give the component a 'display: none' style.\n hidden: _propTypes2.default.bool,\n\n // true to show a spinner at the top of the timeline to indicate\n // back-pagination in progress\n backPaginating: _propTypes2.default.bool,\n\n // true to show a spinner at the end of the timeline to indicate\n // forward-pagination in progress\n forwardPaginating: _propTypes2.default.bool,\n\n // the list of MatrixEvents to display\n events: _propTypes2.default.array.isRequired,\n\n // ID of an event to highlight. If undefined, no event will be highlighted.\n highlightedEventId: _propTypes2.default.string,\n\n // Should we show URL Previews\n showUrlPreview: _propTypes2.default.bool,\n\n // event after which we should show a read marker\n readMarkerEventId: _propTypes2.default.string,\n\n // whether the read marker should be visible\n readMarkerVisible: _propTypes2.default.bool,\n\n // the userid of our user. This is used to suppress the read marker\n // for pending messages.\n ourUserId: _propTypes2.default.string,\n\n // true to suppress the date at the start of the timeline\n suppressFirstDateSeparator: _propTypes2.default.bool,\n\n // whether to show read receipts\n showReadReceipts: _propTypes2.default.bool,\n\n // true if updates to the event list should cause the scroll panel to\n // scroll down when we are at the bottom of the window. See ScrollPanel\n // for more details.\n stickyBottom: _propTypes2.default.bool,\n\n // callback which is called when the panel is scrolled.\n onScroll: _propTypes2.default.func,\n\n // callback which is called when more content is needed.\n onFillRequest: _propTypes2.default.func,\n\n // className for the panel\n className: _propTypes2.default.string.isRequired,\n\n // shape parameter to be passed to EventTiles\n tileShape: _propTypes2.default.string,\n\n // show twelve hour timestamps\n isTwelveHour: _propTypes2.default.bool,\n\n // show timestamps always\n alwaysShowTimestamps: _propTypes2.default.bool\n },\n\n componentWillMount: function componentWillMount() {\n // the event after which we put a visible unread marker on the last\n // render cycle; null if readMarkerVisible was false or the RM was\n // suppressed (eg because it was at the end of the timeline)\n this.currentReadMarkerEventId = null;\n\n // the event after which we are showing a disappearing read marker\n // animation\n this.currentGhostEventId = null;\n\n // opaque readreceipt info for each userId; used by ReadReceiptMarker\n // to manage its animations\n this._readReceiptMap = {};\n\n // Remember the read marker ghost node so we can do the cleanup that\n // Velocity requires\n this._readMarkerGhostNode = null;\n\n this._isMounted = true;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._isMounted = false;\n },\n\n /* get the DOM node representing the given event */\n getNodeForEventId: function getNodeForEventId(eventId) {\n if (!this.eventNodes) {\n return undefined;\n }\n\n return this.eventNodes[eventId];\n },\n\n /* return true if the content is fully scrolled down right now; else false.\n */\n isAtBottom: function isAtBottom() {\n return this.refs.scrollPanel && this.refs.scrollPanel.isAtBottom();\n },\n\n /* get the current scroll state. See ScrollPanel.getScrollState for\n * details.\n *\n * returns null if we are not mounted.\n */\n getScrollState: function getScrollState() {\n if (!this.refs.scrollPanel) {\n return null;\n }\n return this.refs.scrollPanel.getScrollState();\n },\n\n // returns one of:\n //\n // null: there is no read marker\n // -1: read marker is above the window\n // 0: read marker is within the window\n // +1: read marker is below the window\n getReadMarkerPosition: function getReadMarkerPosition() {\n var readMarker = this.refs.readMarkerNode;\n var messageWrapper = this.refs.scrollPanel;\n\n if (!readMarker || !messageWrapper) {\n return null;\n }\n\n var wrapperRect = _reactDom2.default.findDOMNode(messageWrapper).getBoundingClientRect();\n var readMarkerRect = readMarker.getBoundingClientRect();\n\n // the read-marker pretends to have zero height when it is actually\n // two pixels high; +2 here to account for that.\n if (readMarkerRect.bottom + 2 < wrapperRect.top) {\n return -1;\n } else if (readMarkerRect.top < wrapperRect.bottom) {\n return 0;\n } else {\n return 1;\n }\n },\n\n /* jump to the top of the content.\n */\n scrollToTop: function scrollToTop() {\n if (this.refs.scrollPanel) {\n this.refs.scrollPanel.scrollToTop();\n }\n },\n\n /* jump to the bottom of the content.\n */\n scrollToBottom: function scrollToBottom() {\n if (this.refs.scrollPanel) {\n this.refs.scrollPanel.scrollToBottom();\n }\n },\n\n /**\n * Page up/down.\n *\n * @param {number} mult: -1 to page up, +1 to page down\n */\n scrollRelative: function scrollRelative(mult) {\n if (this.refs.scrollPanel) {\n this.refs.scrollPanel.scrollRelative(mult);\n }\n },\n\n /**\n * Scroll up/down in response to a scroll key\n *\n * @param {KeyboardEvent} ev: the keyboard event to handle\n */\n handleScrollKey: function handleScrollKey(ev) {\n if (this.refs.scrollPanel) {\n this.refs.scrollPanel.handleScrollKey(ev);\n }\n },\n\n /* jump to the given event id.\n *\n * offsetBase gives the reference point for the pixelOffset. 0 means the\n * top of the container, 1 means the bottom, and fractional values mean\n * somewhere in the middle. If omitted, it defaults to 0.\n *\n * pixelOffset gives the number of pixels *above* the offsetBase that the\n * node (specifically, the bottom of it) will be positioned. If omitted, it\n * defaults to 0.\n */\n scrollToEvent: function scrollToEvent(eventId, pixelOffset, offsetBase) {\n if (this.refs.scrollPanel) {\n this.refs.scrollPanel.scrollToToken(eventId, pixelOffset, offsetBase);\n }\n },\n\n /* check the scroll state and send out pagination requests if necessary.\n */\n checkFillState: function checkFillState() {\n if (this.refs.scrollPanel) {\n this.refs.scrollPanel.checkFillState();\n }\n },\n\n _isUnmounting: function _isUnmounting() {\n return !this._isMounted;\n },\n\n // TODO: Implement granular (per-room) hide options\n _shouldShowEvent: function _shouldShowEvent(mxEv) {\n if (mxEv.sender && _MatrixClientPeg2.default.get().isUserIgnored(mxEv.sender.userId)) {\n return false; // ignored = no show (only happens if the ignore happens after an event was received)\n }\n\n var EventTile = _index2.default.getComponent('rooms.EventTile');\n if (!EventTile.haveTileForEvent(mxEv)) {\n return false; // no tile = no show\n }\n\n // Always show highlighted event\n if (this.props.highlightedEventId === mxEv.getId()) return true;\n\n return !(0, _shouldHideEvent2.default)(mxEv);\n },\n\n _getEventTiles: function _getEventTiles() {\n var _this = this;\n\n var DateSeparator = _index2.default.getComponent('messages.DateSeparator');\n var MemberEventListSummary = _index2.default.getComponent('views.elements.MemberEventListSummary');\n\n this.eventNodes = {};\n\n var visible = false;\n var i = void 0;\n\n // first figure out which is the last event in the list which we're\n // actually going to show; this allows us to behave slightly\n // differently for the last event in the list. (eg show timestamp)\n //\n // we also need to figure out which is the last event we show which isn't\n // a local echo, to manage the read-marker.\n var lastShownEvent = void 0;\n\n var lastShownNonLocalEchoIndex = -1;\n for (i = this.props.events.length - 1; i >= 0; i--) {\n var mxEv = this.props.events[i];\n if (!this._shouldShowEvent(mxEv)) {\n continue;\n }\n\n if (lastShownEvent === undefined) {\n lastShownEvent = mxEv;\n }\n\n if (mxEv.status) {\n // this is a local echo\n continue;\n }\n\n lastShownNonLocalEchoIndex = i;\n break;\n }\n\n var ret = [];\n\n var prevEvent = null; // the last event we showed\n\n // assume there is no read marker until proven otherwise\n var readMarkerVisible = false;\n\n // if the readmarker has moved, cancel any active ghost.\n if (this.currentReadMarkerEventId && this.props.readMarkerEventId && this.props.readMarkerVisible && this.currentReadMarkerEventId !== this.props.readMarkerEventId) {\n this.currentGhostEventId = null;\n }\n\n var isMembershipChange = function isMembershipChange(e) {\n return e.getType() === 'm.room.member';\n };\n\n for (i = 0; i < this.props.events.length; i++) {\n var _mxEv = this.props.events[i];\n var eventId = _mxEv.getId();\n var last = _mxEv === lastShownEvent;\n\n var wantTile = this._shouldShowEvent(_mxEv);\n\n // Wrap consecutive member events in a ListSummary, ignore if redacted\n if (isMembershipChange(_mxEv) && wantTile) {\n var readMarkerInMels = false;\n var ts1 = _mxEv.getTs();\n // Ensure that the key of the MemberEventListSummary does not change with new\n // member events. This will prevent it from being re-created unnecessarily, and\n // instead will allow new props to be provided. In turn, the shouldComponentUpdate\n // method on MELS can be used to prevent unnecessary renderings.\n //\n // Whilst back-paginating with a MELS at the top of the panel, prevEvent will be null,\n // so use the key \"membereventlistsummary-initial\". Otherwise, use the ID of the first\n // membership event, which will not change during forward pagination.\n var key = \"membereventlistsummary-\" + (prevEvent ? _mxEv.getId() : \"initial\");\n\n if (this._wantsDateSeparator(prevEvent, _mxEv.getDate())) {\n var dateSeparator = _react2.default.createElement(\n 'li',\n { key: ts1 + '~' },\n _react2.default.createElement(DateSeparator, { key: ts1 + '~', ts: ts1 })\n );\n ret.push(dateSeparator);\n }\n\n // If RM event is the first in the MELS, append the RM after MELS\n if (_mxEv.getId() === this.props.readMarkerEventId) {\n readMarkerInMels = true;\n }\n\n var summarisedEvents = [_mxEv];\n for (; i + 1 < this.props.events.length; i++) {\n var collapsedMxEv = this.props.events[i + 1];\n\n // Ignore redacted/hidden member events\n if (!this._shouldShowEvent(collapsedMxEv)) {\n // If this hidden event is the RM and in or at end of a MELS put RM after MELS.\n if (collapsedMxEv.getId() === this.props.readMarkerEventId) {\n readMarkerInMels = true;\n }\n continue;\n }\n\n if (!isMembershipChange(collapsedMxEv) || this._wantsDateSeparator(_mxEv, collapsedMxEv.getDate())) {\n break;\n }\n\n // If RM event is in MELS mark it as such and the RM will be appended after MELS.\n if (collapsedMxEv.getId() === this.props.readMarkerEventId) {\n readMarkerInMels = true;\n }\n\n summarisedEvents.push(collapsedMxEv);\n }\n\n var highlightInMels = false;\n\n // At this point, i = the index of the last event in the summary sequence\n var eventTiles = summarisedEvents.map(function (e) {\n if (e.getId() === _this.props.highlightedEventId) {\n highlightInMels = true;\n }\n // In order to prevent DateSeparators from appearing in the expanded form\n // of MemberEventListSummary, render each member event as if the previous\n // one was itself. This way, the timestamp of the previous event === the\n // timestamp of the current event, and no DateSeperator is inserted.\n return _this._getTilesForEvent(e, e, e === lastShownEvent);\n }).reduce(function (a, b) {\n return a.concat(b);\n });\n\n if (eventTiles.length === 0) {\n eventTiles = null;\n }\n\n ret.push(_react2.default.createElement(\n MemberEventListSummary,\n { key: key,\n events: summarisedEvents,\n onToggle: this._onWidgetLoad // Update scroll state\n , startExpanded: highlightInMels\n },\n eventTiles\n ));\n\n if (readMarkerInMels) {\n ret.push(this._getReadMarkerTile(visible));\n }\n\n prevEvent = _mxEv;\n continue;\n }\n\n if (wantTile) {\n // make sure we unpack the array returned by _getTilesForEvent,\n // otherwise react will auto-generate keys and we will end up\n // replacing all of the DOM elements every time we paginate.\n ret.push.apply(ret, (0, _toConsumableArray3.default)(this._getTilesForEvent(prevEvent, _mxEv, last)));\n prevEvent = _mxEv;\n }\n\n var isVisibleReadMarker = false;\n\n if (eventId === this.props.readMarkerEventId) {\n visible = this.props.readMarkerVisible;\n\n // if the read marker comes at the end of the timeline (except\n // for local echoes, which are excluded from RMs, because they\n // don't have useful event ids), we don't want to show it, but\n // we still want to create the <li/> for it so that the\n // algorithms which depend on its position on the screen aren't\n // confused.\n if (i >= lastShownNonLocalEchoIndex) {\n visible = false;\n }\n ret.push(this._getReadMarkerTile(visible));\n readMarkerVisible = visible;\n isVisibleReadMarker = visible;\n }\n\n // XXX: there should be no need for a ghost tile - we should just use a\n // a dispatch (user_activity_end) to start the RM animation.\n if (eventId === this.currentGhostEventId) {\n // if we're showing an animation, continue to show it.\n ret.push(this._getReadMarkerGhostTile());\n } else if (!isVisibleReadMarker && eventId === this.currentReadMarkerEventId) {\n // there is currently a read-up-to marker at this point, but no\n // more. Show an animation of it disappearing.\n ret.push(this._getReadMarkerGhostTile());\n this.currentGhostEventId = eventId;\n }\n }\n\n this.currentReadMarkerEventId = readMarkerVisible ? this.props.readMarkerEventId : null;\n return ret;\n },\n\n _getTilesForEvent: function _getTilesForEvent(prevEvent, mxEv, last) {\n var EventTile = _index2.default.getComponent('rooms.EventTile');\n var DateSeparator = _index2.default.getComponent('messages.DateSeparator');\n var ret = [];\n\n // is this a continuation of the previous message?\n var continuation = false;\n\n // Some events should appear as continuations from previous events of\n // different types.\n\n var eventTypeContinues = prevEvent !== null && continuedTypes.includes(mxEv.getType()) && continuedTypes.includes(prevEvent.getType());\n\n // if there is a previous event and it has the same sender as this event\n // and the types are the same/is in continuedTypes and the time between them is <= CONTINUATION_MAX_INTERVAL\n if (prevEvent !== null && prevEvent.sender && mxEv.sender && mxEv.sender.userId === prevEvent.sender.userId && (mxEv.getType() === prevEvent.getType() || eventTypeContinues) && mxEv.getTs() - prevEvent.getTs() <= CONTINUATION_MAX_INTERVAL) {\n continuation = true;\n }\n\n /*\n // Work out if this is still a continuation, as we are now showing commands\n // and /me messages with their own little avatar. The case of a change of\n // event type (commands) is handled above, but we need to handle the /me\n // messages seperately as they have a msgtype of 'm.emote' but are classed\n // as normal messages\n if (prevEvent !== null && prevEvent.sender && mxEv.sender\n && mxEv.sender.userId === prevEvent.sender.userId\n && mxEv.getType() == prevEvent.getType()\n && prevEvent.getContent().msgtype === 'm.emote') {\n continuation = false;\n }\n */\n\n // local echoes have a fake date, which could even be yesterday. Treat them\n // as 'today' for the date separators.\n var ts1 = mxEv.getTs();\n var eventDate = mxEv.getDate();\n if (mxEv.status) {\n eventDate = new Date();\n ts1 = eventDate.getTime();\n }\n\n // do we need a date separator since the last event?\n if (this._wantsDateSeparator(prevEvent, eventDate)) {\n var dateSeparator = _react2.default.createElement(\n 'li',\n { key: ts1 },\n _react2.default.createElement(DateSeparator, { key: ts1, ts: ts1 })\n );\n ret.push(dateSeparator);\n continuation = false;\n }\n\n var eventId = mxEv.getId();\n var highlight = eventId === this.props.highlightedEventId;\n\n // we can't use local echoes as scroll tokens, because their event IDs change.\n // Local echos have a send \"status\".\n var scrollToken = mxEv.status ? undefined : eventId;\n\n var readReceipts = void 0;\n if (this.props.showReadReceipts) {\n readReceipts = this._getReadReceiptsForEvent(mxEv);\n }\n ret.push(_react2.default.createElement(\n 'li',\n { key: eventId,\n ref: this._collectEventNode.bind(this, eventId),\n 'data-scroll-tokens': scrollToken },\n _react2.default.createElement(EventTile, { mxEvent: mxEv, continuation: continuation,\n isRedacted: mxEv.isRedacted(),\n onWidgetLoad: this._onWidgetLoad,\n readReceipts: readReceipts,\n readReceiptMap: this._readReceiptMap,\n showUrlPreview: this.props.showUrlPreview,\n checkUnmounting: this._isUnmounting,\n eventSendStatus: mxEv.status,\n tileShape: this.props.tileShape,\n isTwelveHour: this.props.isTwelveHour,\n last: last, isSelectedEvent: highlight })\n ));\n\n return ret;\n },\n\n _wantsDateSeparator: function _wantsDateSeparator(prevEvent, nextEventDate) {\n if (prevEvent == null) {\n // first event in the panel: depends if we could back-paginate from\n // here.\n return !this.props.suppressFirstDateSeparator;\n }\n return (0, _DateUtils.wantsDateSeparator)(prevEvent.getDate(), nextEventDate);\n },\n\n // get a list of read receipts that should be shown next to this event\n // Receipts are objects which have a 'userId', 'roomMember' and 'ts'.\n _getReadReceiptsForEvent: function _getReadReceiptsForEvent(event) {\n var myUserId = _MatrixClientPeg2.default.get().credentials.userId;\n\n // get list of read receipts, sorted most recent first\n var room = _MatrixClientPeg2.default.get().getRoom(event.getRoomId());\n if (!room) {\n return null;\n }\n var receipts = [];\n room.getReceiptsForEvent(event).forEach(function (r) {\n if (!r.userId || r.type !== \"m.read\" || r.userId === myUserId) {\n return; // ignore non-read receipts and receipts from self.\n }\n if (_MatrixClientPeg2.default.get().isUserIgnored(r.userId)) {\n return; // ignore ignored users\n }\n var member = room.getMember(r.userId);\n receipts.push({\n userId: r.userId,\n roomMember: member,\n ts: r.data ? r.data.ts : 0\n });\n });\n\n return receipts.sort(function (r1, r2) {\n return r2.ts - r1.ts;\n });\n },\n\n _getReadMarkerTile: function _getReadMarkerTile(visible) {\n var hr = void 0;\n if (visible) {\n hr = _react2.default.createElement('hr', { className: 'mx_RoomView_myReadMarker',\n style: { opacity: 1, width: '99%' }\n });\n }\n\n return _react2.default.createElement(\n 'li',\n { key: '_readupto', ref: 'readMarkerNode',\n className: 'mx_RoomView_myReadMarker_container' },\n hr\n );\n },\n\n _startAnimation: function _startAnimation(ghostNode) {\n if (this._readMarkerGhostNode) {\n Velocity.Utilities.removeData(this._readMarkerGhostNode);\n }\n this._readMarkerGhostNode = ghostNode;\n\n if (ghostNode) {\n Velocity(ghostNode, { opacity: '0', width: '10%' }, { duration: 400, easing: 'easeInSine',\n delay: 1000 });\n }\n },\n\n _getReadMarkerGhostTile: function _getReadMarkerGhostTile() {\n var hr = _react2.default.createElement('hr', { className: 'mx_RoomView_myReadMarker',\n style: { opacity: 1, width: '99%' },\n ref: this._startAnimation\n });\n\n // give it a key which depends on the event id. That will ensure that\n // we get a new DOM node (restarting the animation) when the ghost\n // moves to a different event.\n return _react2.default.createElement(\n 'li',\n { key: \"_readuptoghost_\" + this.currentGhostEventId,\n className: 'mx_RoomView_myReadMarker_container' },\n hr\n );\n },\n\n _collectEventNode: function _collectEventNode(eventId, node) {\n this.eventNodes[eventId] = node;\n },\n\n // once dynamic content in the events load, make the scrollPanel check the\n // scroll offsets.\n _onWidgetLoad: function _onWidgetLoad() {\n var scrollPanel = this.refs.scrollPanel;\n if (scrollPanel) {\n scrollPanel.forceUpdate();\n }\n },\n\n onResize: function onResize() {\n _dispatcher2.default.dispatch({ action: 'timeline_resize' }, true);\n },\n\n render: function render() {\n var ScrollPanel = _index2.default.getComponent(\"structures.ScrollPanel\");\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n var topSpinner = void 0;\n var bottomSpinner = void 0;\n if (this.props.backPaginating) {\n topSpinner = _react2.default.createElement(\n 'li',\n { key: '_topSpinner' },\n _react2.default.createElement(Spinner, null)\n );\n }\n if (this.props.forwardPaginating) {\n bottomSpinner = _react2.default.createElement(\n 'li',\n { key: '_bottomSpinner' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n var style = this.props.hidden ? { display: 'none' } : {};\n\n var className = (0, _classnames2.default)(this.props.className, {\n \"mx_MessagePanel_alwaysShowTimestamps\": this.props.alwaysShowTimestamps\n });\n\n return _react2.default.createElement(\n ScrollPanel,\n { ref: 'scrollPanel', className: className,\n onScroll: this.props.onScroll,\n onResize: this.onResize,\n onFillRequest: this.props.onFillRequest,\n onUnfillRequest: this.props.onUnfillRequest,\n style: style,\n stickyBottom: this.props.stickyBottom },\n topSpinner,\n this._getEventTiles(),\n bottomSpinner\n );\n }\n});\n//# sourceMappingURL=MessagePanel.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _withMatrixClient = require('../../wrappers/withMatrixClient');\n\nvar _withMatrixClient2 = _interopRequireDefault(_withMatrixClient);\n\nvar _AccessibleButton = require('../views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _withMatrixClient2.default)(_react2.default.createClass({\n displayName: 'MyGroups',\n\n propTypes: {\n matrixClient: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n groups: null,\n error: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._fetch();\n },\n\n _onCreateGroupClick: function _onCreateGroupClick() {\n _dispatcher2.default.dispatch({ action: 'view_create_group' });\n },\n\n _fetch: function _fetch() {\n var _this = this;\n\n this.props.matrixClient.getJoinedGroups().done(function (result) {\n _this.setState({ groups: result.groups, error: null });\n }, function (err) {\n if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN') {\n // Indicate that the guest isn't in any groups (which should be true)\n _this.setState({ groups: [], error: null });\n return;\n }\n _this.setState({ groups: null, error: err });\n });\n },\n\n render: function render() {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n var SimpleRoomHeader = _index2.default.getComponent('rooms.SimpleRoomHeader');\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var GroupTile = _index2.default.getComponent(\"groups.GroupTile\");\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n\n var content = void 0;\n var contentHeader = void 0;\n if (this.state.groups) {\n var groupNodes = [];\n this.state.groups.forEach(function (g) {\n groupNodes.push(_react2.default.createElement(GroupTile, { key: g, groupId: g }));\n });\n contentHeader = groupNodes.length > 0 ? _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Your Communities')\n ) : _react2.default.createElement('div', null);\n content = groupNodes.length > 0 ? _react2.default.createElement(\n GeminiScrollbarWrapper,\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_microcopy' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Did you know: you can use communities to filter your Riot.im experience!\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"To set up a filter, drag a community avatar over to the filter panel on \" + \"the far left hand side of the screen. You can click on an avatar in the \" + \"filter panel at any time to see only the rooms and people associated \" + \"with that community.\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_joinedGroups' },\n groupNodes\n )\n ) : _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_placeholder' },\n (0, _languageHandler._t)(\"You're not currently a member of any communities.\")\n );\n } else if (this.state.error) {\n content = _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_error' },\n (0, _languageHandler._t)('Error whilst fetching joined communities')\n );\n } else {\n content = _react2.default.createElement(Loader, null);\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups' },\n _react2.default.createElement(SimpleRoomHeader, { title: (0, _languageHandler._t)(\"Communities\"), icon: 'img/icons-groups.svg' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_header' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_headerCard' },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MyGroups_headerCard_button', onClick: this._onCreateGroupClick },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-create-room.svg', width: '50', height: '50' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_headerCard_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_headerCard_header' },\n (0, _languageHandler._t)('Create a new community')\n ),\n (0, _languageHandler._t)('Create a community to group together users and rooms! ' + 'Build a custom homepage to mark out your space in the Matrix universe.')\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_content' },\n contentHeader,\n content\n )\n );\n }\n})); /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=MyGroups.js.map","'use strict';\n\nvar _languageHandler = require('../../languageHandler');\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require('react');\nvar ReactDOM = require(\"react-dom\");\n\nvar Matrix = require(\"matrix-js-sdk\");\nvar sdk = require('../../index');\nvar MatrixClientPeg = require(\"../../MatrixClientPeg\");\nvar dis = require(\"../../dispatcher\");\n\n/*\n * Component which shows the global notification list using a TimelinePanel\n */\nvar NotificationPanel = React.createClass({\n displayName: 'NotificationPanel',\n\n propTypes: {},\n\n render: function render() {\n // wrap a TimelinePanel with the jump-to-event bits turned off.\n var TimelinePanel = sdk.getComponent(\"structures.TimelinePanel\");\n var Loader = sdk.getComponent(\"elements.Spinner\");\n\n var timelineSet = MatrixClientPeg.get().getNotifTimelineSet();\n if (timelineSet) {\n return React.createElement(TimelinePanel, { key: \"NotificationPanel_\" + this.props.roomId,\n className: 'mx_NotificationPanel',\n manageReadReceipts: false,\n manageReadMarkers: false,\n timelineSet: timelineSet,\n showUrlPreview: false,\n tileShape: 'notif',\n empty: (0, _languageHandler._t)('You have no visible notifications')\n });\n } else {\n console.error(\"No notifTimelineSet available!\");\n return React.createElement(\n 'div',\n { className: 'mx_NotificationPanel' },\n React.createElement(Loader, null)\n );\n }\n }\n});\n\nmodule.exports = NotificationPanel;\n//# sourceMappingURL=NotificationPanel.js.map","'use strict';\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _Analytics = require('../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _ratelimitedfunc = require('../../ratelimitedfunc');\n\nvar _ratelimitedfunc2 = _interopRequireDefault(_ratelimitedfunc);\n\nvar _AccessibleButton = require('../../components/views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _GroupAddressPicker = require('../../GroupAddressPicker');\n\nvar _GroupStore = require('../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _FormattingUtils = require('../../utils/FormattingUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HeaderButton = function (_React$Component) {\n (0, _inherits3.default)(HeaderButton, _React$Component);\n\n function HeaderButton() {\n (0, _classCallCheck3.default)(this, HeaderButton);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (HeaderButton.__proto__ || (0, _getPrototypeOf2.default)(HeaderButton)).call(this));\n\n _this.onClick = _this.onClick.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(HeaderButton, [{\n key: 'onClick',\n value: function onClick(ev) {\n _Analytics2.default.trackEvent.apply(_Analytics2.default, (0, _toConsumableArray3.default)(this.props.analytics));\n _dispatcher2.default.dispatch({\n action: 'view_right_panel_phase',\n phase: this.props.clickPhase\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var AccessibleButton = _index2.default.getComponent(\"elements.AccessibleButton\");\n\n return _react2.default.createElement(\n AccessibleButton,\n {\n 'aria-label': this.props.title,\n 'aria-expanded': this.props.isHighlighted,\n title: this.props.title,\n className: 'mx_RightPanel_headerButton',\n onClick: this.onClick },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_headerButton_badge' },\n this.props.badge ? this.props.badge : _react2.default.createElement(\n 'span',\n null,\n '\\xA0'\n )\n ),\n _react2.default.createElement(TintableSvg, { src: this.props.iconSrc, width: '25', height: '25' }),\n this.props.isHighlighted ? _react2.default.createElement('div', { className: 'mx_RightPanel_headerButton_highlight' }) : _react2.default.createElement('div', null)\n );\n }\n }]);\n return HeaderButton;\n}(_react2.default.Component); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nHeaderButton.propTypes = {\n // Whether this button is highlighted\n isHighlighted: _propTypes2.default.bool.isRequired,\n // The phase to swap to when the button is clicked\n clickPhase: _propTypes2.default.string.isRequired,\n // The source file of the icon to display\n iconSrc: _propTypes2.default.string.isRequired,\n\n // The badge to display above the icon\n badge: _propTypes2.default.node,\n // The parameters to track the click event\n analytics: _propTypes2.default.arrayOf(_propTypes2.default.string).isRequired,\n\n // Button title\n title: _propTypes2.default.string.isRequired\n};\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RightPanel',\n\n propTypes: {\n // TODO: We're trying to move away from these being props, but we need to know\n // whether we should be displaying a room or group member list\n roomId: _react2.default.PropTypes.string, // if showing panels for a given room, this is set\n groupId: _react2.default.PropTypes.string, // if showing panels for a given group, this is set\n collapsed: _react2.default.PropTypes.bool // currently unused property to request for a minimized view of the panel\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n Phase: {\n RoomMemberList: 'RoomMemberList',\n GroupMemberList: 'GroupMemberList',\n GroupRoomList: 'GroupRoomList',\n GroupRoomInfo: 'GroupRoomInfo',\n FilePanel: 'FilePanel',\n NotificationPanel: 'NotificationPanel',\n RoomMemberInfo: 'RoomMemberInfo',\n GroupMemberInfo: 'GroupMemberInfo'\n },\n\n componentWillMount: function componentWillMount() {\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n var cli = this.context.matrixClient;\n cli.on(\"RoomState.members\", this.onRoomStateMember);\n this._initGroupStore(this.props.groupId);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n if (this.context.matrixClient) {\n this.context.matrixClient.removeListener(\"RoomState.members\", this.onRoomStateMember);\n }\n this._unregisterGroupStore(this.props.groupId);\n },\n\n getInitialState: function getInitialState() {\n return {\n phase: this.props.groupId ? this.Phase.GroupMemberList : this.Phase.RoomMemberList,\n isUserPrivilegedInGroup: null\n };\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n if (newProps.groupId !== this.props.groupId) {\n this._unregisterGroupStore(this.props.groupId);\n this._initGroupStore(newProps.groupId);\n }\n },\n _initGroupStore: function _initGroupStore(groupId) {\n if (!groupId) return;\n _GroupStore2.default.registerListener(groupId, this.onGroupStoreUpdated);\n },\n _unregisterGroupStore: function _unregisterGroupStore() {\n _GroupStore2.default.unregisterListener(this.onGroupStoreUpdated);\n },\n\n\n onGroupStoreUpdated: function onGroupStoreUpdated() {\n this.setState({\n isUserPrivilegedInGroup: _GroupStore2.default.isUserPrivileged(this.props.groupId)\n });\n },\n\n onCollapseClick: function onCollapseClick() {\n _dispatcher2.default.dispatch({\n action: 'hide_right_panel'\n });\n },\n\n onInviteButtonClick: function onInviteButtonClick() {\n if (this.context.matrixClient.isGuest()) {\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n return;\n }\n\n // call AddressPickerDialog\n _dispatcher2.default.dispatch({\n action: 'view_invite',\n roomId: this.props.roomId\n });\n },\n\n onInviteToGroupButtonClick: function onInviteToGroupButtonClick() {\n var _this2 = this;\n\n (0, _GroupAddressPicker.showGroupInviteDialog)(this.props.groupId).then(function () {\n _this2.setState({\n phase: _this2.Phase.GroupMemberList\n });\n });\n },\n\n onAddRoomToGroupButtonClick: function onAddRoomToGroupButtonClick() {\n var _this3 = this;\n\n (0, _GroupAddressPicker.showGroupAddRoomDialog)(this.props.groupId).then(function () {\n _this3.forceUpdate();\n });\n },\n\n onRoomStateMember: function onRoomStateMember(ev, state, member) {\n if (member.roomId !== this.props.roomId) {\n return;\n }\n // redraw the badge on the membership list\n if (this.state.phase === this.Phase.RoomMemberList && member.roomId === this.props.roomId) {\n this._delayedUpdate();\n } else if (this.state.phase === this.Phase.RoomMemberInfo && member.roomId === this.props.roomId && member.userId === this.state.member.userId) {\n // refresh the member info (e.g. new power level)\n this._delayedUpdate();\n }\n },\n\n _delayedUpdate: new _ratelimitedfunc2.default(function () {\n this.forceUpdate(); // eslint-disable-line babel/no-invalid-this\n }, 500),\n\n onAction: function onAction(payload) {\n if (payload.action === \"view_user\") {\n _dispatcher2.default.dispatch({\n action: 'show_right_panel'\n });\n if (payload.member) {\n this.setState({\n phase: this.Phase.RoomMemberInfo,\n member: payload.member\n });\n } else {\n if (this.props.roomId) {\n this.setState({\n phase: this.Phase.RoomMemberList\n });\n } else if (this.props.groupId) {\n this.setState({\n phase: this.Phase.GroupMemberList,\n member: payload.member\n });\n }\n }\n } else if (payload.action === \"view_group\") {\n this.setState({\n phase: this.Phase.GroupMemberList,\n member: null\n });\n } else if (payload.action === \"view_group_room\") {\n this.setState({\n phase: this.Phase.GroupRoomInfo,\n groupRoomId: payload.groupRoomId\n });\n } else if (payload.action === \"view_group_room_list\") {\n this.setState({\n phase: this.Phase.GroupRoomList\n });\n } else if (payload.action === \"view_group_member_list\") {\n this.setState({\n phase: this.Phase.GroupMemberList\n });\n } else if (payload.action === \"view_group_user\") {\n this.setState({\n phase: this.Phase.GroupMemberInfo,\n member: payload.member\n });\n } else if (payload.action === \"view_room\") {\n this.setState({\n phase: this.Phase.RoomMemberList\n });\n } else if (payload.action === \"view_right_panel_phase\") {\n this.setState({\n phase: payload.phase\n });\n }\n },\n\n render: function render() {\n var MemberList = _index2.default.getComponent('rooms.MemberList');\n var MemberInfo = _index2.default.getComponent('rooms.MemberInfo');\n var NotificationPanel = _index2.default.getComponent('structures.NotificationPanel');\n var FilePanel = _index2.default.getComponent('structures.FilePanel');\n\n var GroupMemberList = _index2.default.getComponent('groups.GroupMemberList');\n var GroupMemberInfo = _index2.default.getComponent('groups.GroupMemberInfo');\n var GroupRoomList = _index2.default.getComponent('groups.GroupRoomList');\n var GroupRoomInfo = _index2.default.getComponent('groups.GroupRoomInfo');\n\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n\n var inviteGroup = void 0;\n\n var membersBadge = void 0;\n var membersTitle = (0, _languageHandler._t)('Members');\n if ((this.state.phase === this.Phase.RoomMemberList || this.state.phase === this.Phase.RoomMemberInfo) && this.props.roomId) {\n var cli = this.context.matrixClient;\n var room = cli.getRoom(this.props.roomId);\n var isUserInRoom = void 0;\n if (room) {\n var numMembers = room.getJoinedMemberCount();\n membersTitle = (0, _languageHandler._t)('%(count)s Members', { count: numMembers });\n membersBadge = _react2.default.createElement(\n 'div',\n { title: membersTitle },\n (0, _FormattingUtils.formatCount)(numMembers)\n );\n isUserInRoom = room.hasMembershipState(this.context.matrixClient.credentials.userId, 'join');\n }\n\n if (isUserInRoom) {\n inviteGroup = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RightPanel_invite', onClick: this.onInviteButtonClick },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_icon' },\n _react2.default.createElement(TintableSvg, { src: 'img/icon-invite-people.svg', width: '35', height: '35' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_message' },\n (0, _languageHandler._t)('Invite to this room')\n )\n );\n }\n }\n\n var isPhaseGroup = [this.Phase.GroupMemberInfo, this.Phase.GroupMemberList].includes(this.state.phase);\n\n var headerButtons = [];\n if (this.props.roomId) {\n headerButtons = [_react2.default.createElement(HeaderButton, { key: '_membersButton', title: membersTitle, iconSrc: 'img/icons-people.svg',\n isHighlighted: [this.Phase.RoomMemberList, this.Phase.RoomMemberInfo].includes(this.state.phase),\n clickPhase: this.Phase.RoomMemberList,\n badge: membersBadge,\n analytics: ['Right Panel', 'Member List Button', 'click']\n }), _react2.default.createElement(HeaderButton, { key: '_filesButton', title: (0, _languageHandler._t)('Files'), iconSrc: 'img/icons-files.svg',\n isHighlighted: this.state.phase === this.Phase.FilePanel,\n clickPhase: this.Phase.FilePanel,\n analytics: ['Right Panel', 'File List Button', 'click']\n }), _react2.default.createElement(HeaderButton, { key: '_notifsButton', title: (0, _languageHandler._t)('Notifications'), iconSrc: 'img/icons-notifications.svg',\n isHighlighted: this.state.phase === this.Phase.NotificationPanel,\n clickPhase: this.Phase.NotificationPanel,\n analytics: ['Right Panel', 'Notification List Button', 'click']\n })];\n } else if (this.props.groupId) {\n headerButtons = [_react2.default.createElement(HeaderButton, { key: '_groupMembersButton', title: (0, _languageHandler._t)('Members'), iconSrc: 'img/icons-people.svg',\n isHighlighted: isPhaseGroup,\n clickPhase: this.Phase.GroupMemberList,\n analytics: ['Right Panel', 'Group Member List Button', 'click']\n }), _react2.default.createElement(HeaderButton, { key: '_roomsButton', title: (0, _languageHandler._t)('Rooms'), iconSrc: 'img/icons-room.svg',\n isHighlighted: [this.Phase.GroupRoomList, this.Phase.GroupRoomInfo].includes(this.state.phase),\n clickPhase: this.Phase.GroupRoomList,\n analytics: ['Right Panel', 'Group Room List Button', 'click']\n })];\n }\n\n if (this.props.roomId || this.props.groupId) {\n // Hiding the right panel hides it completely and relies on an 'expand' button\n // being put in the RoomHeader or GroupView header, so only show the minimise\n // button on these 2 screens or you won't be able to re-expand the panel.\n headerButtons.push(_react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RightPanel_headerButton mx_RightPanel_collapsebutton', key: '_minimizeButton',\n title: (0, _languageHandler._t)(\"Hide panel\"), 'aria-label': (0, _languageHandler._t)(\"Hide panel\"), onClick: this.onCollapseClick\n },\n _react2.default.createElement(TintableSvg, { src: 'img/minimise.svg', width: '10', height: '16', alt: '' })\n ));\n }\n\n var panel = _react2.default.createElement('div', null);\n if (!this.props.collapsed) {\n if (this.props.roomId && this.state.phase === this.Phase.RoomMemberList) {\n panel = _react2.default.createElement(MemberList, { roomId: this.props.roomId, key: this.props.roomId });\n } else if (this.props.groupId && this.state.phase === this.Phase.GroupMemberList) {\n panel = _react2.default.createElement(GroupMemberList, { groupId: this.props.groupId, key: this.props.groupId });\n } else if (this.state.phase === this.Phase.GroupRoomList) {\n panel = _react2.default.createElement(GroupRoomList, { groupId: this.props.groupId, key: this.props.groupId });\n } else if (this.state.phase === this.Phase.RoomMemberInfo) {\n panel = _react2.default.createElement(MemberInfo, { member: this.state.member, key: this.props.roomId || this.state.member.userId });\n } else if (this.state.phase === this.Phase.GroupMemberInfo) {\n panel = _react2.default.createElement(GroupMemberInfo, {\n groupMember: this.state.member,\n groupId: this.props.groupId,\n key: this.state.member.user_id });\n } else if (this.state.phase === this.Phase.GroupRoomInfo) {\n panel = _react2.default.createElement(GroupRoomInfo, {\n groupRoomId: this.state.groupRoomId,\n groupId: this.props.groupId,\n key: this.state.groupRoomId });\n } else if (this.state.phase === this.Phase.NotificationPanel) {\n panel = _react2.default.createElement(NotificationPanel, null);\n } else if (this.state.phase === this.Phase.FilePanel) {\n panel = _react2.default.createElement(FilePanel, { roomId: this.props.roomId });\n }\n }\n\n if (!panel) {\n panel = _react2.default.createElement('div', { className: 'mx_RightPanel_blank' });\n }\n\n if (this.props.groupId && this.state.isUserPrivilegedInGroup) {\n inviteGroup = isPhaseGroup ? _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RightPanel_invite', onClick: this.onInviteToGroupButtonClick },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_icon' },\n _react2.default.createElement(TintableSvg, { src: 'img/icon-invite-people.svg', width: '35', height: '35' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_message' },\n (0, _languageHandler._t)('Invite to this community')\n )\n ) : _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RightPanel_invite', onClick: this.onAddRoomToGroupButtonClick },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_icon' },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-room-add.svg', width: '35', height: '35' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_message' },\n (0, _languageHandler._t)('Add rooms to this community')\n )\n );\n }\n\n var classes = (0, _classnames2.default)(\"mx_RightPanel\", \"mx_fadable\", {\n \"collapsed\": this.props.collapsed,\n \"mx_fadable_faded\": this.props.disabled\n });\n\n return _react2.default.createElement(\n 'aside',\n { className: classes },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_header' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_headerButtonGroup' },\n headerButtons\n )\n ),\n panel,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_footer' },\n inviteGroup\n )\n );\n }\n});\n//# sourceMappingURL=RightPanel.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _DirectoryUtils = require('../../utils/DirectoryUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar MatrixClientPeg = require('../../MatrixClientPeg');\nvar ContentRepo = require(\"matrix-js-sdk\").ContentRepo;\nvar Modal = require('../../Modal');\nvar sdk = require('../../index');\nvar dis = require('../../dispatcher');\n\nvar linkify = require('linkifyjs');\nvar linkifyString = require('linkifyjs/string');\nvar linkifyMatrix = require('../../linkify-matrix');\nvar sanitizeHtml = require('sanitize-html');\n\n\nlinkifyMatrix(linkify);\n\nmodule.exports = React.createClass({\n displayName: 'RoomDirectory',\n\n propTypes: {\n config: React.PropTypes.object\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n config: {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n publicRooms: [],\n loading: true,\n protocolsLoading: true,\n instanceId: null,\n includeAll: false,\n roomServer: null,\n filterString: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this._unmounted = false;\n this.nextBatch = null;\n this.filterTimeout = null;\n this.scrollPanel = null;\n this.protocols = null;\n\n this.setState({ protocolsLoading: true });\n MatrixClientPeg.get().getThirdpartyProtocols().done(function (response) {\n _this.protocols = response;\n _this.setState({ protocolsLoading: false });\n }, function (err) {\n console.warn('error loading thirdparty protocols: ' + err);\n _this.setState({ protocolsLoading: false });\n if (MatrixClientPeg.get().isGuest()) {\n // Guests currently aren't allowed to use this API, so\n // ignore this as otherwise this error is literally the\n // thing you see when loading the client!\n return;\n }\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Failed to get protocol list from Home Server', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to get protocol list from Home Server'),\n description: (0, _languageHandler._t)('The Home Server may be too old to support third party networks')\n });\n });\n\n // dis.dispatch({\n // action: 'panel_disable',\n // sideDisabled: true,\n // middleDisabled: true,\n // });\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // dis.dispatch({\n // action: 'panel_disable',\n // sideDisabled: false,\n // middleDisabled: false,\n // });\n if (this.filterTimeout) {\n clearTimeout(this.filterTimeout);\n }\n this._unmounted = true;\n },\n\n refreshRoomList: function refreshRoomList() {\n this.nextBatch = null;\n this.setState({\n publicRooms: [],\n loading: true\n });\n this.getMoreRooms().done();\n },\n\n getMoreRooms: function getMoreRooms() {\n var _this2 = this;\n\n if (!MatrixClientPeg.get()) return _bluebird2.default.resolve();\n\n var my_filter_string = this.state.filterString;\n var my_server = this.state.roomServer;\n // remember the next batch token when we sent the request\n // too. If it's changed, appending to the list will corrupt it.\n var my_next_batch = this.nextBatch;\n var opts = { limit: 20 };\n if (my_server != MatrixClientPeg.getHomeServerName()) {\n opts.server = my_server;\n }\n if (this.state.instanceId) {\n opts.third_party_instance_id = this.state.instanceId;\n } else if (this.state.includeAll) {\n opts.include_all_networks = true;\n }\n if (this.nextBatch) opts.since = this.nextBatch;\n if (my_filter_string) opts.filter = { generic_search_term: my_filter_string };\n return MatrixClientPeg.get().publicRooms(opts).then(function (data) {\n if (my_filter_string != _this2.state.filterString || my_server != _this2.state.roomServer || my_next_batch != _this2.nextBatch) {\n // if the filter or server has changed since this request was sent,\n // throw away the result (don't even clear the busy flag\n // since we must still have a request in flight)\n return;\n }\n\n if (_this2._unmounted) {\n // if we've been unmounted, we don't care either.\n return;\n }\n\n _this2.nextBatch = data.next_batch;\n _this2.setState(function (s) {\n var _s$publicRooms;\n\n (_s$publicRooms = s.publicRooms).push.apply(_s$publicRooms, (0, _toConsumableArray3.default)(data.chunk));\n s.loading = false;\n return s;\n });\n return Boolean(data.next_batch);\n }, function (err) {\n if (my_filter_string != _this2.state.filterString || my_server != _this2.state.roomServer || my_next_batch != _this2.nextBatch) {\n // as above: we don't care about errors for old\n // requests either\n return;\n }\n\n if (_this2._unmounted) {\n // if we've been unmounted, we don't care either.\n return;\n }\n\n _this2.setState({ loading: false });\n console.error(\"Failed to get publicRooms: %s\", (0, _stringify2.default)(err));\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Failed to get public room list', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to get public room list'),\n description: err && err.message ? err.message : (0, _languageHandler._t)('The server may be unavailable or overloaded')\n });\n });\n },\n\n /**\n * A limited interface for removing rooms from the directory.\n * Will set the room to not be publicly visible and delete the\n * default alias. In the long term, it would be better to allow\n * HS admins to do this through the RoomSettings interface, but\n * this needs SPEC-417.\n */\n removeFromDirectory: function removeFromDirectory(room) {\n var _this3 = this;\n\n var alias = get_display_alias_for_room(room);\n var name = room.name || alias || (0, _languageHandler._t)('Unnamed room');\n\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n\n var desc;\n if (alias) {\n desc = (0, _languageHandler._t)('Delete the room alias %(alias)s and remove %(name)s from the directory?', { alias: alias, name: name });\n } else {\n desc = (0, _languageHandler._t)('Remove %(name)s from the directory?', { name: name });\n }\n\n Modal.createTrackedDialog('Remove from Directory', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Remove from Directory'),\n description: desc,\n onFinished: function onFinished(should_delete) {\n if (!should_delete) return;\n\n var Loader = sdk.getComponent(\"elements.Spinner\");\n var modal = Modal.createDialog(Loader);\n var step = (0, _languageHandler._t)('remove %(name)s from the directory.', { name: name });\n\n MatrixClientPeg.get().setRoomDirectoryVisibility(room.room_id, 'private').then(function () {\n if (!alias) return;\n step = (0, _languageHandler._t)('delete the alias.');\n return MatrixClientPeg.get().deleteAlias(alias);\n }).done(function () {\n modal.close();\n _this3.refreshRoomList();\n }, function (err) {\n modal.close();\n _this3.refreshRoomList();\n console.error(\"Failed to \" + step + \": \" + err);\n Modal.createTrackedDialog('Remove from Directory Error', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: err && err.message ? err.message : (0, _languageHandler._t)('The server may be unavailable or overloaded')\n });\n });\n }\n });\n },\n\n onRoomClicked: function onRoomClicked(room, ev) {\n if (ev.shiftKey) {\n ev.preventDefault();\n this.removeFromDirectory(room);\n } else {\n this.showRoom(room);\n }\n },\n\n onOptionChange: function onOptionChange(server, instanceId, includeAll) {\n // clear next batch so we don't try to load more rooms\n this.nextBatch = null;\n this.setState({\n // Clear the public rooms out here otherwise we needlessly\n // spend time filtering lots of rooms when we're about to\n // to clear the list anyway.\n publicRooms: [],\n roomServer: server,\n instanceId: instanceId,\n includeAll: includeAll\n }, this.refreshRoomList);\n // We also refresh the room list each time even though this\n // filtering is client-side. It hopefully won't be client side\n // for very long, and we may have fetched a thousand rooms to\n // find the five gitter ones, at which point we do not want\n // to render all those rooms when switching back to 'all networks'.\n // Easiest to just blow away the state & re-fetch.\n },\n\n onFillRequest: function onFillRequest(backwards) {\n if (backwards || !this.nextBatch) return _bluebird2.default.resolve(false);\n\n return this.getMoreRooms();\n },\n\n onFilterChange: function onFilterChange(alias) {\n var _this4 = this;\n\n this.setState({\n filterString: alias || null\n });\n\n // don't send the request for a little bit,\n // no point hammering the server with a\n // request for every keystroke, let the\n // user finish typing.\n if (this.filterTimeout) {\n clearTimeout(this.filterTimeout);\n }\n this.filterTimeout = setTimeout(function () {\n _this4.filterTimeout = null;\n _this4.refreshRoomList();\n }, 700);\n },\n\n onFilterClear: function onFilterClear() {\n // update immediately\n this.setState({\n filterString: null\n }, this.refreshRoomList);\n\n if (this.filterTimeout) {\n clearTimeout(this.filterTimeout);\n }\n },\n\n onJoinClick: function onJoinClick(alias) {\n var _this5 = this;\n\n // If we don't have a particular instance id selected, just show that rooms alias\n if (!this.state.instanceId) {\n // If the user specified an alias without a domain, add on whichever server is selected\n // in the dropdown\n if (alias.indexOf(':') == -1) {\n alias = alias + ':' + this.state.roomServer;\n }\n this.showRoomAlias(alias);\n } else {\n // This is a 3rd party protocol. Let's see if we can join it\n var protocolName = (0, _DirectoryUtils.protocolNameForInstanceId)(this.protocols, this.state.instanceId);\n var instance = (0, _DirectoryUtils.instanceForInstanceId)(this.protocols, this.state.instanceId);\n var fields = protocolName ? this._getFieldsForThirdPartyLocation(alias, this.protocols[protocolName], instance) : null;\n if (!fields) {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Unable to join network', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Unable to join network'),\n description: (0, _languageHandler._t)('Riot does not know how to join a room on this network')\n });\n return;\n }\n MatrixClientPeg.get().getThirdpartyLocation(protocolName, fields).done(function (resp) {\n if (resp.length > 0 && resp[0].alias) {\n _this5.showRoomAlias(resp[0].alias);\n } else {\n var _ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Room not found', '', _ErrorDialog, {\n title: (0, _languageHandler._t)('Room not found'),\n description: (0, _languageHandler._t)('Couldn\\'t find a matching Matrix room')\n });\n }\n }, function (e) {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Fetching third party location failed', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Fetching third party location failed'),\n description: (0, _languageHandler._t)('Unable to look up room ID from server')\n });\n });\n }\n },\n\n showRoomAlias: function showRoomAlias(alias) {\n this.showRoom(null, alias);\n },\n\n showRoom: function showRoom(room, room_alias) {\n var payload = { action: 'view_room' };\n if (room) {\n // Don't let the user view a room they won't be able to either\n // peek or join: fail earlier so they don't have to click back\n // to the directory.\n if (MatrixClientPeg.get().isGuest()) {\n if (!room.world_readable && !room.guest_can_join) {\n dis.dispatch({ action: 'require_registration' });\n return;\n }\n }\n\n if (!room_alias) {\n room_alias = get_display_alias_for_room(room);\n }\n\n payload.oob_data = {\n avatarUrl: room.avatar_url,\n // XXX: This logic is duplicated from the JS SDK which\n // would normally decide what the name is.\n name: room.name || room_alias || (0, _languageHandler._t)('Unnamed room')\n };\n }\n // It's not really possible to join Matrix rooms by ID because the HS has no way to know\n // which servers to start querying. However, there's no other way to join rooms in\n // this list without aliases at present, so if roomAlias isn't set here we have no\n // choice but to supply the ID.\n if (room_alias) {\n payload.room_alias = room_alias;\n } else {\n payload.room_id = room.room_id;\n }\n dis.dispatch(payload);\n },\n\n getRows: function getRows() {\n var BaseAvatar = sdk.getComponent('avatars.BaseAvatar');\n\n if (!this.state.publicRooms) return [];\n\n var rooms = this.state.publicRooms;\n var rows = [];\n var self = this;\n var guestRead, guestJoin, perms;\n for (var i = 0; i < rooms.length; i++) {\n var name = rooms[i].name || get_display_alias_for_room(rooms[i]) || (0, _languageHandler._t)('Unnamed room');\n guestRead = null;\n guestJoin = null;\n\n if (rooms[i].world_readable) {\n guestRead = React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perm' },\n (0, _languageHandler._t)('World readable')\n );\n }\n if (rooms[i].guest_can_join) {\n guestJoin = React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perm' },\n (0, _languageHandler._t)('Guests can join')\n );\n }\n\n perms = null;\n if (guestRead || guestJoin) {\n perms = React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perms' },\n guestRead,\n guestJoin\n );\n }\n\n var topic = rooms[i].topic || '';\n topic = linkifyString(sanitizeHtml(topic));\n\n rows.push(React.createElement(\n 'tr',\n { key: rooms[i].room_id,\n onClick: self.onRoomClicked.bind(self, rooms[i])\n // cancel onMouseDown otherwise shift-clicking highlights text\n , onMouseDown: function onMouseDown(ev) {\n ev.preventDefault();\n }\n },\n React.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomAvatar' },\n React.createElement(BaseAvatar, { width: 24, height: 24, resizeMethod: 'crop',\n name: name, idName: name,\n url: ContentRepo.getHttpUriForMxc(MatrixClientPeg.get().getHomeserverUrl(), rooms[i].avatar_url, 24, 24, \"crop\") })\n ),\n React.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomDescription' },\n React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_name' },\n name\n ),\n '\\xA0',\n perms,\n React.createElement('div', { className: 'mx_RoomDirectory_topic',\n onClick: function onClick(e) {\n e.stopPropagation();\n },\n dangerouslySetInnerHTML: { __html: topic } }),\n React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_alias' },\n get_display_alias_for_room(rooms[i])\n )\n ),\n React.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomMemberCount' },\n rooms[i].num_joined_members\n )\n ));\n }\n return rows;\n },\n\n collectScrollPanel: function collectScrollPanel(element) {\n this.scrollPanel = element;\n },\n\n _stringLooksLikeId: function _stringLooksLikeId(s, field_type) {\n var pat = /^#[^\\s]+:[^\\s]/;\n if (field_type && field_type.regexp) {\n pat = new RegExp(field_type.regexp);\n }\n\n return pat.test(s);\n },\n\n _getFieldsForThirdPartyLocation: function _getFieldsForThirdPartyLocation(userInput, protocol, instance) {\n // make an object with the fields specified by that protocol. We\n // require that the values of all but the last field come from the\n // instance. The last is the user input.\n var requiredFields = protocol.location_fields;\n if (!requiredFields) return null;\n var fields = {};\n for (var i = 0; i < requiredFields.length - 1; ++i) {\n var thisField = requiredFields[i];\n if (instance.fields[thisField] === undefined) return null;\n fields[thisField] = instance.fields[thisField];\n }\n fields[requiredFields[requiredFields.length - 1]] = userInput;\n return fields;\n },\n\n /**\n * called by the parent component when PageUp/Down/etc is pressed.\n *\n * We pass it down to the scroll panel.\n */\n handleScrollKey: function handleScrollKey(ev) {\n if (this.scrollPanel) {\n this.scrollPanel.handleScrollKey(ev);\n }\n },\n\n render: function render() {\n var SimpleRoomHeader = sdk.getComponent('rooms.SimpleRoomHeader');\n var Loader = sdk.getComponent(\"elements.Spinner\");\n\n if (this.state.protocolsLoading) {\n return React.createElement(\n 'div',\n { className: 'mx_RoomDirectory' },\n React.createElement(SimpleRoomHeader, { title: (0, _languageHandler._t)('Directory') }),\n React.createElement(Loader, null)\n );\n }\n\n var content = void 0;\n if (this.state.loading) {\n content = React.createElement(\n 'div',\n { className: 'mx_RoomDirectory' },\n React.createElement(Loader, null)\n );\n } else {\n var rows = this.getRows();\n // we still show the scrollpanel, at least for now, because\n // otherwise we don't fetch more because we don't get a fill\n // request from the scrollpanel because there isn't one\n var scrollpanel_content = void 0;\n if (rows.length == 0) {\n scrollpanel_content = React.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('No rooms to show')\n );\n } else {\n scrollpanel_content = React.createElement(\n 'table',\n { ref: 'directory_table', className: 'mx_RoomDirectory_table' },\n React.createElement(\n 'tbody',\n null,\n this.getRows()\n )\n );\n }\n var ScrollPanel = sdk.getComponent(\"structures.ScrollPanel\");\n content = React.createElement(\n ScrollPanel,\n { ref: this.collectScrollPanel,\n className: 'mx_RoomDirectory_tableWrapper',\n onFillRequest: this.onFillRequest,\n stickyBottom: false,\n startAtBottom: false,\n onResize: function onResize() {}\n },\n scrollpanel_content\n );\n }\n\n var protocolName = (0, _DirectoryUtils.protocolNameForInstanceId)(this.protocols, this.state.instanceId);\n var instance_expected_field_type = void 0;\n if (protocolName && this.protocols && this.protocols[protocolName] && this.protocols[protocolName].location_fields.length > 0 && this.protocols[protocolName].field_types) {\n var last_field = this.protocols[protocolName].location_fields.slice(-1)[0];\n instance_expected_field_type = this.protocols[protocolName].field_types[last_field];\n }\n\n var placeholder = (0, _languageHandler._t)('Search for a room');\n if (!this.state.instanceId) {\n placeholder = (0, _languageHandler._t)('#example') + ':' + this.state.roomServer;\n } else if (instance_expected_field_type) {\n placeholder = instance_expected_field_type.placeholder;\n }\n\n var showJoinButton = this._stringLooksLikeId(this.state.filterString, instance_expected_field_type);\n if (protocolName) {\n var instance = (0, _DirectoryUtils.instanceForInstanceId)(this.protocols, this.state.instanceId);\n if (this._getFieldsForThirdPartyLocation(this.state.filterString, this.protocols[protocolName], instance) === null) {\n showJoinButton = false;\n }\n }\n\n var NetworkDropdown = sdk.getComponent('directory.NetworkDropdown');\n var DirectorySearchBox = sdk.getComponent('elements.DirectorySearchBox');\n return React.createElement(\n 'div',\n { className: 'mx_RoomDirectory' },\n React.createElement(SimpleRoomHeader, { title: (0, _languageHandler._t)('Directory'), icon: 'img/icons-directory.svg' }),\n React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_list' },\n React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_listheader' },\n React.createElement(DirectorySearchBox, {\n className: 'mx_RoomDirectory_searchbox',\n onChange: this.onFilterChange, onClear: this.onFilterClear, onJoinClick: this.onJoinClick,\n placeholder: placeholder, showJoinButton: showJoinButton\n }),\n React.createElement(NetworkDropdown, { config: this.props.config, protocols: this.protocols, onOptionChange: this.onOptionChange })\n ),\n content\n )\n );\n }\n});\n\n// Similar to matrix-react-sdk's MatrixTools.getDisplayAliasForRoom\n// but works with the objects we get from the public room list\nfunction get_display_alias_for_room(room) {\n return room.canonical_alias || (room.aliases ? room.aliases[0] : \"\");\n}\n//# sourceMappingURL=RoomDirectory.js.map","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar defaults = {\n\tdefaultProtocol: 'http',\n\tevents: null,\n\tformat: noop,\n\tformatHref: noop,\n\tnl2br: false,\n\ttagName: 'a',\n\ttarget: typeToTarget,\n\tvalidate: true,\n\tignoreTags: [],\n\tattributes: null,\n\tclassName: 'linkified' // Deprecated value - no default class will be provided in the future\n};\n\nexports.defaults = defaults;\nexports.Options = Options;\nexports.contains = contains;\n\n\nfunction Options(opts) {\n\topts = opts || {};\n\n\tthis.defaultProtocol = opts.hasOwnProperty('defaultProtocol') ? opts.defaultProtocol : defaults.defaultProtocol;\n\tthis.events = opts.hasOwnProperty('events') ? opts.events : defaults.events;\n\tthis.format = opts.hasOwnProperty('format') ? opts.format : defaults.format;\n\tthis.formatHref = opts.hasOwnProperty('formatHref') ? opts.formatHref : defaults.formatHref;\n\tthis.nl2br = opts.hasOwnProperty('nl2br') ? opts.nl2br : defaults.nl2br;\n\tthis.tagName = opts.hasOwnProperty('tagName') ? opts.tagName : defaults.tagName;\n\tthis.target = opts.hasOwnProperty('target') ? opts.target : defaults.target;\n\tthis.validate = opts.hasOwnProperty('validate') ? opts.validate : defaults.validate;\n\tthis.ignoreTags = [];\n\n\t// linkAttributes and linkClass is deprecated\n\tthis.attributes = opts.attributes || opts.linkAttributes || defaults.attributes;\n\tthis.className = opts.hasOwnProperty('className') ? opts.className : opts.linkClass || defaults.className;\n\n\t// Make all tags names upper case\n\tvar ignoredTags = opts.hasOwnProperty('ignoreTags') ? opts.ignoreTags : defaults.ignoreTags;\n\tfor (var i = 0; i < ignoredTags.length; i++) {\n\t\tthis.ignoreTags.push(ignoredTags[i].toUpperCase());\n\t}\n}\n\nOptions.prototype = {\n\t/**\n * Given the token, return all options for how it should be displayed\n */\n\tresolve: function resolve(token) {\n\t\tvar href = token.toHref(this.defaultProtocol);\n\t\treturn {\n\t\t\tformatted: this.get('format', token.toString(), token),\n\t\t\tformattedHref: this.get('formatHref', href, token),\n\t\t\ttagName: this.get('tagName', href, token),\n\t\t\tclassName: this.get('className', href, token),\n\t\t\ttarget: this.get('target', href, token),\n\t\t\tevents: this.getObject('events', href, token),\n\t\t\tattributes: this.getObject('attributes', href, token)\n\t\t};\n\t},\n\n\n\t/**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options. By default,\n */\n\tcheck: function check(token) {\n\t\treturn this.get('validate', token.toString(), token);\n\t},\n\n\n\t// Private methods\n\n\t/**\n * Resolve an option's value based on the value of the option and the given\n * params.\n * @param {String} key Name of option to use\n * @param operator will be passed to the target option if it's method\n * @param {MultiToken} token The token from linkify.tokenize\n */\n\tget: function get(key, operator, token) {\n\t\tvar optionValue = void 0,\n\t\t option = this[key];\n\t\tif (!option) {\n\t\t\treturn option;\n\t\t}\n\n\t\tswitch (typeof option === 'undefined' ? 'undefined' : _typeof(option)) {\n\t\t\tcase 'function':\n\t\t\t\treturn option(operator, token.type);\n\t\t\tcase 'object':\n\t\t\t\toptionValue = option.hasOwnProperty(token.type) ? option[token.type] : defaults[key];\n\t\t\t\treturn typeof optionValue === 'function' ? optionValue(operator, token.type) : optionValue;\n\t\t}\n\n\t\treturn option;\n\t},\n\tgetObject: function getObject(key, operator, token) {\n\t\tvar option = this[key];\n\t\treturn typeof option === 'function' ? option(operator, token.type) : option;\n\t}\n};\n\n/**\n * Quick indexOf replacement for checking the ignoreTags option\n */\nfunction contains(arr, value) {\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tif (arr[i] === value) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction noop(val) {\n\treturn val;\n}\n\nfunction typeToTarget(href, type) {\n\treturn type === 'url' ? '_blank' : null;\n}","'use strict';\n\nexports.__esModule = true;\nexports.start = exports.run = exports.TOKENS = exports.State = undefined;\n\nvar _state = require('./state');\n\nvar _text = require('./tokens/text');\n\nvar TOKENS = _interopRequireWildcard(_text);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar tlds = 'aaa|aarp|abarth|abb|abbott|abbvie|abc|able|abogado|abudhabi|ac|academy|accenture|accountant|accountants|aco|active|actor|ad|adac|ads|adult|ae|aeg|aero|aetna|af|afamilycompany|afl|africa|ag|agakhan|agency|ai|aig|aigo|airbus|airforce|airtel|akdn|al|alfaromeo|alibaba|alipay|allfinanz|allstate|ally|alsace|alstom|am|americanexpress|americanfamily|amex|amfam|amica|amsterdam|analytics|android|anquan|anz|ao|aol|apartments|app|apple|aq|aquarelle|ar|arab|aramco|archi|army|arpa|art|arte|as|asda|asia|associates|at|athleta|attorney|au|auction|audi|audible|audio|auspost|author|auto|autos|avianca|aw|aws|ax|axa|az|azure|ba|baby|baidu|banamex|bananarepublic|band|bank|bar|barcelona|barclaycard|barclays|barefoot|bargains|baseball|basketball|bauhaus|bayern|bb|bbc|bbt|bbva|bcg|bcn|bd|be|beats|beauty|beer|bentley|berlin|best|bestbuy|bet|bf|bg|bh|bharti|bi|bible|bid|bike|bing|bingo|bio|biz|bj|black|blackfriday|blanco|blockbuster|blog|bloomberg|blue|bm|bms|bmw|bn|bnl|bnpparibas|bo|boats|boehringer|bofa|bom|bond|boo|book|booking|boots|bosch|bostik|boston|bot|boutique|box|br|bradesco|bridgestone|broadway|broker|brother|brussels|bs|bt|budapest|bugatti|build|builders|business|buy|buzz|bv|bw|by|bz|bzh|ca|cab|cafe|cal|call|calvinklein|cam|camera|camp|cancerresearch|canon|capetown|capital|capitalone|car|caravan|cards|care|career|careers|cars|cartier|casa|case|caseih|cash|casino|cat|catering|catholic|cba|cbn|cbre|cbs|cc|cd|ceb|center|ceo|cern|cf|cfa|cfd|cg|ch|chanel|channel|chase|chat|cheap|chintai|chloe|christmas|chrome|chrysler|church|ci|cipriani|circle|cisco|citadel|citi|citic|city|cityeats|ck|cl|claims|cleaning|click|clinic|clinique|clothing|cloud|club|clubmed|cm|cn|co|coach|codes|coffee|college|cologne|com|comcast|commbank|community|company|compare|computer|comsec|condos|construction|consulting|contact|contractors|cooking|cookingchannel|cool|coop|corsica|country|coupon|coupons|courses|cr|credit|creditcard|creditunion|cricket|crown|crs|cruise|cruises|csc|cu|cuisinella|cv|cw|cx|cy|cymru|cyou|cz|dabur|dad|dance|data|date|dating|datsun|day|dclk|dds|de|deal|dealer|deals|degree|delivery|dell|deloitte|delta|democrat|dental|dentist|desi|design|dev|dhl|diamonds|diet|digital|direct|directory|discount|discover|dish|diy|dj|dk|dm|dnp|do|docs|doctor|dodge|dog|doha|domains|dot|download|drive|dtv|dubai|duck|dunlop|duns|dupont|durban|dvag|dvr|dz|earth|eat|ec|eco|edeka|edu|education|ee|eg|email|emerck|energy|engineer|engineering|enterprises|epost|epson|equipment|er|ericsson|erni|es|esq|estate|esurance|et|etisalat|eu|eurovision|eus|events|everbank|exchange|expert|exposed|express|extraspace|fage|fail|fairwinds|faith|family|fan|fans|farm|farmers|fashion|fast|fedex|feedback|ferrari|ferrero|fi|fiat|fidelity|fido|film|final|finance|financial|fire|firestone|firmdale|fish|fishing|fit|fitness|fj|fk|flickr|flights|flir|florist|flowers|fly|fm|fo|foo|food|foodnetwork|football|ford|forex|forsale|forum|foundation|fox|fr|free|fresenius|frl|frogans|frontdoor|frontier|ftr|fujitsu|fujixerox|fun|fund|furniture|futbol|fyi|ga|gal|gallery|gallo|gallup|game|games|gap|garden|gb|gbiz|gd|gdn|ge|gea|gent|genting|george|gf|gg|ggee|gh|gi|gift|gifts|gives|giving|gl|glade|glass|gle|global|globo|gm|gmail|gmbh|gmo|gmx|gn|godaddy|gold|goldpoint|golf|goo|goodhands|goodyear|goog|google|gop|got|gov|gp|gq|gr|grainger|graphics|gratis|green|gripe|grocery|group|gs|gt|gu|guardian|gucci|guge|guide|guitars|guru|gw|gy|hair|hamburg|hangout|haus|hbo|hdfc|hdfcbank|health|healthcare|help|helsinki|here|hermes|hgtv|hiphop|hisamitsu|hitachi|hiv|hk|hkt|hm|hn|hockey|holdings|holiday|homedepot|homegoods|homes|homesense|honda|honeywell|horse|hospital|host|hosting|hot|hoteles|hotels|hotmail|house|how|hr|hsbc|ht|htc|hu|hughes|hyatt|hyundai|ibm|icbc|ice|icu|id|ie|ieee|ifm|ikano|il|im|imamat|imdb|immo|immobilien|in|industries|infiniti|info|ing|ink|institute|insurance|insure|int|intel|international|intuit|investments|io|ipiranga|iq|ir|irish|is|iselect|ismaili|ist|istanbul|it|itau|itv|iveco|iwc|jaguar|java|jcb|jcp|je|jeep|jetzt|jewelry|jio|jlc|jll|jm|jmp|jnj|jo|jobs|joburg|jot|joy|jp|jpmorgan|jprs|juegos|juniper|kaufen|kddi|ke|kerryhotels|kerrylogistics|kerryproperties|kfh|kg|kh|ki|kia|kim|kinder|kindle|kitchen|kiwi|km|kn|koeln|komatsu|kosher|kp|kpmg|kpn|kr|krd|kred|kuokgroup|kw|ky|kyoto|kz|la|lacaixa|ladbrokes|lamborghini|lamer|lancaster|lancia|lancome|land|landrover|lanxess|lasalle|lat|latino|latrobe|law|lawyer|lb|lc|lds|lease|leclerc|lefrak|legal|lego|lexus|lgbt|li|liaison|lidl|life|lifeinsurance|lifestyle|lighting|like|lilly|limited|limo|lincoln|linde|link|lipsy|live|living|lixil|lk|loan|loans|locker|locus|loft|lol|london|lotte|lotto|love|lpl|lplfinancial|lr|ls|lt|ltd|ltda|lu|lundbeck|lupin|luxe|luxury|lv|ly|ma|macys|madrid|maif|maison|makeup|man|management|mango|map|market|marketing|markets|marriott|marshalls|maserati|mattel|mba|mc|mckinsey|md|me|med|media|meet|melbourne|meme|memorial|men|menu|meo|merckmsd|metlife|mg|mh|miami|microsoft|mil|mini|mint|mit|mitsubishi|mk|ml|mlb|mls|mm|mma|mn|mo|mobi|mobile|mobily|moda|moe|moi|mom|monash|money|monster|mopar|mormon|mortgage|moscow|moto|motorcycles|mov|movie|movistar|mp|mq|mr|ms|msd|mt|mtn|mtr|mu|museum|mutual|mv|mw|mx|my|mz|na|nab|nadex|nagoya|name|nationwide|natura|navy|nba|nc|ne|nec|net|netbank|netflix|network|neustar|new|newholland|news|next|nextdirect|nexus|nf|nfl|ng|ngo|nhk|ni|nico|nike|nikon|ninja|nissan|nissay|nl|no|nokia|northwesternmutual|norton|now|nowruz|nowtv|np|nr|nra|nrw|ntt|nu|nyc|nz|obi|observer|off|office|okinawa|olayan|olayangroup|oldnavy|ollo|om|omega|one|ong|onl|online|onyourside|ooo|open|oracle|orange|org|organic|origins|osaka|otsuka|ott|ovh|pa|page|panasonic|panerai|paris|pars|partners|parts|party|passagens|pay|pccw|pe|pet|pf|pfizer|pg|ph|pharmacy|phd|philips|phone|photo|photography|photos|physio|piaget|pics|pictet|pictures|pid|pin|ping|pink|pioneer|pizza|pk|pl|place|play|playstation|plumbing|plus|pm|pn|pnc|pohl|poker|politie|porn|post|pr|pramerica|praxi|press|prime|pro|prod|productions|prof|progressive|promo|properties|property|protection|pru|prudential|ps|pt|pub|pw|pwc|py|qa|qpon|quebec|quest|qvc|racing|radio|raid|re|read|realestate|realtor|realty|recipes|red|redstone|redumbrella|rehab|reise|reisen|reit|reliance|ren|rent|rentals|repair|report|republican|rest|restaurant|review|reviews|rexroth|rich|richardli|ricoh|rightathome|ril|rio|rip|rmit|ro|rocher|rocks|rodeo|rogers|room|rs|rsvp|ru|rugby|ruhr|run|rw|rwe|ryukyu|sa|saarland|safe|safety|sakura|sale|salon|samsclub|samsung|sandvik|sandvikcoromant|sanofi|sap|sapo|sarl|sas|save|saxo|sb|sbi|sbs|sc|sca|scb|schaeffler|schmidt|scholarships|school|schule|schwarz|science|scjohnson|scor|scot|sd|se|search|seat|secure|security|seek|select|sener|services|ses|seven|sew|sex|sexy|sfr|sg|sh|shangrila|sharp|shaw|shell|shia|shiksha|shoes|shop|shopping|shouji|show|showtime|shriram|si|silk|sina|singles|site|sj|sk|ski|skin|sky|skype|sl|sling|sm|smart|smile|sn|sncf|so|soccer|social|softbank|software|sohu|solar|solutions|song|sony|soy|space|spiegel|spot|spreadbetting|sr|srl|srt|st|stada|staples|star|starhub|statebank|statefarm|statoil|stc|stcgroup|stockholm|storage|store|stream|studio|study|style|su|sucks|supplies|supply|support|surf|surgery|suzuki|sv|swatch|swiftcover|swiss|sx|sy|sydney|symantec|systems|sz|tab|taipei|talk|taobao|target|tatamotors|tatar|tattoo|tax|taxi|tc|tci|td|tdk|team|tech|technology|tel|telecity|telefonica|temasek|tennis|teva|tf|tg|th|thd|theater|theatre|tiaa|tickets|tienda|tiffany|tips|tires|tirol|tj|tjmaxx|tjx|tk|tkmaxx|tl|tm|tmall|tn|to|today|tokyo|tools|top|toray|toshiba|total|tours|town|toyota|toys|tr|trade|trading|training|travel|travelchannel|travelers|travelersinsurance|trust|trv|tt|tube|tui|tunes|tushu|tv|tvs|tw|tz|ua|ubank|ubs|uconnect|ug|uk|unicom|university|uno|uol|ups|us|uy|uz|va|vacations|vana|vanguard|vc|ve|vegas|ventures|verisign|versicherung|vet|vg|vi|viajes|video|vig|viking|villas|vin|vip|virgin|visa|vision|vista|vistaprint|viva|vivo|vlaanderen|vn|vodka|volkswagen|volvo|vote|voting|voto|voyage|vu|vuelos|wales|walmart|walter|wang|wanggou|warman|watch|watches|weather|weatherchannel|webcam|weber|website|wed|wedding|weibo|weir|wf|whoswho|wien|wiki|williamhill|win|windows|wine|winners|wme|wolterskluwer|woodside|work|works|world|wow|ws|wtc|wtf|xbox|xerox|xfinity|xihuan|xin|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--30rr7y|xn--3bst00m|xn--3ds443g|xn--3e0b707e|xn--3hcrj9c|xn--3oq18vl8pn36a|xn--3pxu8k|xn--42c2d9a|xn--45br5cyl|xn--45brj9c|xn--45q11c|xn--4gbrim|xn--54b7fta0cc|xn--55qw42g|xn--55qx5d|xn--5su34j936bgsg|xn--5tzm5g|xn--6frz82g|xn--6qq986b3xl|xn--80adxhks|xn--80ao21a|xn--80aqecdr1a|xn--80asehdb|xn--80aswg|xn--8y0a063a|xn--90a3ac|xn--90ae|xn--90ais|xn--9dbq2a|xn--9et52u|xn--9krt00a|xn--b4w605ferd|xn--bck1b9a5dre4c|xn--c1avg|xn--c2br7g|xn--cck2b3b|xn--cg4bki|xn--clchc0ea0b2g2a9gcd|xn--czr694b|xn--czrs0t|xn--czru2d|xn--d1acj3b|xn--d1alf|xn--e1a4c|xn--eckvdtc9d|xn--efvy88h|xn--estv75g|xn--fct429k|xn--fhbei|xn--fiq228c5hs|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--fjq720a|xn--flw351e|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--fzys8d69uvgm|xn--g2xx48c|xn--gckr3f0f|xn--gecrj9c|xn--gk3at1e|xn--h2breg3eve|xn--h2brj9c|xn--h2brj9c8c|xn--hxt814e|xn--i1b6b1a6a2e|xn--imr513n|xn--io0a7i|xn--j1aef|xn--j1amh|xn--j6w193g|xn--jlq61u9w7b|xn--jvr189m|xn--kcrx77d1x4a|xn--kprw13d|xn--kpry57d|xn--kpu716f|xn--kput3i|xn--l1acc|xn--lgbbat1ad8j|xn--mgb9awbf|xn--mgba3a3ejt|xn--mgba3a4f16a|xn--mgba7c0bbn0a|xn--mgbaakc7dvf|xn--mgbaam7a8h|xn--mgbab2bd|xn--mgbai9azgqp6j|xn--mgbayh7gpa|xn--mgbb9fbpob|xn--mgbbh1a|xn--mgbbh1a71e|xn--mgbc0a9azcg|xn--mgbca7dzdo|xn--mgberp4a5d4ar|xn--mgbgu82a|xn--mgbi4ecexp|xn--mgbpl2fh|xn--mgbt3dhd|xn--mgbtx2b|xn--mgbx4cd0ab|xn--mix891f|xn--mk1bu44c|xn--mxtq1m|xn--ngbc5azd|xn--ngbe9e0a|xn--ngbrx|xn--node|xn--nqv7f|xn--nqv7fs00ema|xn--nyqy26a|xn--o3cw4h|xn--ogbpf8fl|xn--p1acf|xn--p1ai|xn--pbt977c|xn--pgbs0dh|xn--pssy2u|xn--q9jyb4c|xn--qcka1pmc|xn--qxam|xn--rhqv96g|xn--rovu88b|xn--rvc1e0am3e|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--tckwe|xn--tiq49xqyj|xn--unup4y|xn--vermgensberater-ctb|xn--vermgensberatung-pwb|xn--vhquv|xn--vuq861b|xn--w4r85el8fhu5dnra|xn--w4rs40l|xn--wgbh1c|xn--wgbl6a|xn--xhq521b|xn--xkc2al3hye2a|xn--xkc2dl3a5ee0h|xn--y9a3aq|xn--yfro4i67o|xn--ygbi2ammx|xn--zfr164b|xperia|xxx|xyz|yachts|yahoo|yamaxun|yandex|ye|yodobashi|yoga|yokohama|you|youtube|yt|yun|za|zappos|zara|zero|zip|zippo|zm|zone|zuerich|zw'.split('|'); // macro, see gulpfile.js\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n\n\t@module linkify\n\t@submodule scanner\n\t@main scanner\n*/\n\nvar NUMBERS = '0123456789'.split('');\nvar ALPHANUM = '0123456789abcdefghijklmnopqrstuvwxyz'.split('');\nvar WHITESPACE = [' ', '\\f', '\\r', '\\t', '\\v', '\\xA0', '\\u1680', '\\u180E']; // excluding line breaks\n\nvar domainStates = []; // states that jump to DOMAIN on /[a-z0-9]/\nvar makeState = function makeState(tokenClass) {\n\treturn new _state.CharacterState(tokenClass);\n};\n\n// Frequently used states\nvar S_START = makeState();\nvar S_NUM = makeState(_text.NUM);\nvar S_DOMAIN = makeState(_text.DOMAIN);\nvar S_DOMAIN_HYPHEN = makeState(); // domain followed by 1 or more hyphen characters\nvar S_WS = makeState(_text.WS);\n\n// States for special URL symbols\nS_START.on('@', makeState(_text.AT)).on('.', makeState(_text.DOT)).on('+', makeState(_text.PLUS)).on('#', makeState(_text.POUND)).on('?', makeState(_text.QUERY)).on('/', makeState(_text.SLASH)).on('_', makeState(_text.UNDERSCORE)).on(':', makeState(_text.COLON)).on('{', makeState(_text.OPENBRACE)).on('[', makeState(_text.OPENBRACKET)).on('<', makeState(_text.OPENANGLEBRACKET)).on('(', makeState(_text.OPENPAREN)).on('}', makeState(_text.CLOSEBRACE)).on(']', makeState(_text.CLOSEBRACKET)).on('>', makeState(_text.CLOSEANGLEBRACKET)).on(')', makeState(_text.CLOSEPAREN)).on('&', makeState(_text.AMPERSAND)).on([',', ';', '!', '\"', '\\''], makeState(_text.PUNCTUATION));\n\n// Whitespace jumps\n// Tokens of only non-newline whitespace are arbitrarily long\nS_START.on('\\n', makeState(_text.NL)).on(WHITESPACE, S_WS);\n\n// If any whitespace except newline, more whitespace!\nS_WS.on(WHITESPACE, S_WS);\n\n// Generates states for top-level domains\n// Note that this is most accurate when tlds are in alphabetical order\nfor (var i = 0; i < tlds.length; i++) {\n\tvar newStates = (0, _state.stateify)(tlds[i], S_START, _text.TLD, _text.DOMAIN);\n\tdomainStates.push.apply(domainStates, newStates);\n}\n\n// Collect the states generated by different protocls\nvar partialProtocolFileStates = (0, _state.stateify)('file', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolFtpStates = (0, _state.stateify)('ftp', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolHttpStates = (0, _state.stateify)('http', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolMailtoStates = (0, _state.stateify)('mailto', S_START, _text.DOMAIN, _text.DOMAIN);\n\n// Add the states to the array of DOMAINeric states\ndomainStates.push.apply(domainStates, partialProtocolFileStates);\ndomainStates.push.apply(domainStates, partialProtocolFtpStates);\ndomainStates.push.apply(domainStates, partialProtocolHttpStates);\ndomainStates.push.apply(domainStates, partialProtocolMailtoStates);\n\n// Protocol states\nvar S_PROTOCOL_FILE = partialProtocolFileStates.pop();\nvar S_PROTOCOL_FTP = partialProtocolFtpStates.pop();\nvar S_PROTOCOL_HTTP = partialProtocolHttpStates.pop();\nvar S_MAILTO = partialProtocolMailtoStates.pop();\nvar S_PROTOCOL_SECURE = makeState(_text.DOMAIN);\nvar S_FULL_PROTOCOL = makeState(_text.PROTOCOL); // Full protocol ends with COLON\nvar S_FULL_MAILTO = makeState(_text.MAILTO); // Mailto ends with COLON\n\n// Secure protocols (end with 's')\nS_PROTOCOL_FTP.on('s', S_PROTOCOL_SECURE).on(':', S_FULL_PROTOCOL);\n\nS_PROTOCOL_HTTP.on('s', S_PROTOCOL_SECURE).on(':', S_FULL_PROTOCOL);\n\ndomainStates.push(S_PROTOCOL_SECURE);\n\n// Become protocol tokens after a COLON\nS_PROTOCOL_FILE.on(':', S_FULL_PROTOCOL);\nS_PROTOCOL_SECURE.on(':', S_FULL_PROTOCOL);\nS_MAILTO.on(':', S_FULL_MAILTO);\n\n// Localhost\nvar partialLocalhostStates = (0, _state.stateify)('localhost', S_START, _text.LOCALHOST, _text.DOMAIN);\ndomainStates.push.apply(domainStates, partialLocalhostStates);\n\n// Everything else\n// DOMAINs make more DOMAINs\n// Number and character transitions\nS_START.on(NUMBERS, S_NUM);\nS_NUM.on('-', S_DOMAIN_HYPHEN).on(NUMBERS, S_NUM).on(ALPHANUM, S_DOMAIN); // number becomes DOMAIN\n\nS_DOMAIN.on('-', S_DOMAIN_HYPHEN).on(ALPHANUM, S_DOMAIN);\n\n// All the generated states should have a jump to DOMAIN\nfor (var _i = 0; _i < domainStates.length; _i++) {\n\tdomainStates[_i].on('-', S_DOMAIN_HYPHEN).on(ALPHANUM, S_DOMAIN);\n}\n\nS_DOMAIN_HYPHEN.on('-', S_DOMAIN_HYPHEN).on(NUMBERS, S_DOMAIN).on(ALPHANUM, S_DOMAIN);\n\n// Set default transition\nS_START.defaultTransition = makeState(_text.SYM);\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {String} str Input string to scan\n\t@return {Array} Array of TOKEN instances\n*/\nvar run = function run(str) {\n\n\t// The state machine only looks at lowercase strings.\n\t// This selective `toLowerCase` is used because lowercasing the entire\n\t// string causes the length and character position to vary in some in some\n\t// non-English strings. This happens only on V8-based runtimes.\n\tvar lowerStr = str.replace(/[A-Z]/g, function (c) {\n\t\treturn c.toLowerCase();\n\t});\n\tvar len = str.length;\n\tvar tokens = []; // return value\n\n\tvar cursor = 0;\n\n\t// Tokenize the string\n\twhile (cursor < len) {\n\t\tvar state = S_START;\n\t\tvar nextState = null;\n\t\tvar tokenLength = 0;\n\t\tvar latestAccepting = null;\n\t\tvar sinceAccepts = -1;\n\n\t\twhile (cursor < len && (nextState = state.next(lowerStr[cursor]))) {\n\t\t\tstate = nextState;\n\n\t\t\t// Keep track of the latest accepting state\n\t\t\tif (state.accepts()) {\n\t\t\t\tsinceAccepts = 0;\n\t\t\t\tlatestAccepting = state;\n\t\t\t} else if (sinceAccepts >= 0) {\n\t\t\t\tsinceAccepts++;\n\t\t\t}\n\n\t\t\ttokenLength++;\n\t\t\tcursor++;\n\t\t}\n\n\t\tif (sinceAccepts < 0) {\n\t\t\tcontinue;\n\t\t} // Should never happen\n\n\t\t// Roll back to the latest accepting state\n\t\tcursor -= sinceAccepts;\n\t\ttokenLength -= sinceAccepts;\n\n\t\t// Get the class for the new token\n\t\tvar TOKEN = latestAccepting.emit(); // Current token class\n\n\t\t// No more jumps, just make a new token\n\t\ttokens.push(new TOKEN(str.substr(cursor - tokenLength, tokenLength)));\n\t}\n\n\treturn tokens;\n};\n\nvar start = S_START;\nexports.State = _state.CharacterState;\nexports.TOKENS = TOKENS;\nexports.run = run;\nexports.start = start;","'use strict';\n\nexports.__esModule = true;\nexports.start = exports.run = exports.TOKENS = exports.State = undefined;\n\nvar _state = require('./state');\n\nvar _multi = require('./tokens/multi');\n\nvar MULTI_TOKENS = _interopRequireWildcard(_multi);\n\nvar _text = require('./tokens/text');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/Email_address (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main parser\n*/\n\nvar makeState = function makeState(tokenClass) {\n\treturn new _state.TokenState(tokenClass);\n};\n\n// The universal starting state.\nvar S_START = makeState();\n\n// Intermediate states for URLs. Note that domains that begin with a protocol\n// are treated slighly differently from those that don't.\nvar S_PROTOCOL = makeState(); // e.g., 'http:'\nvar S_MAILTO = makeState(); // 'mailto:'\nvar S_PROTOCOL_SLASH = makeState(); // e.g., '/', 'http:/''\nvar S_PROTOCOL_SLASH_SLASH = makeState(); // e.g., '//', 'http://'\nvar S_DOMAIN = makeState(); // parsed string ends with a potential domain name (A)\nvar S_DOMAIN_DOT = makeState(); // (A) domain followed by DOT\nvar S_TLD = makeState(_multi.URL); // (A) Simplest possible URL with no query string\nvar S_TLD_COLON = makeState(); // (A) URL followed by colon (potential port number here)\nvar S_TLD_PORT = makeState(_multi.URL); // TLD followed by a port number\nvar S_URL = makeState(_multi.URL); // Long URL with optional port and maybe query string\nvar S_URL_NON_ACCEPTING = makeState(); // URL followed by some symbols (will not be part of the final URL)\nvar S_URL_OPENBRACE = makeState(); // URL followed by {\nvar S_URL_OPENBRACKET = makeState(); // URL followed by [\nvar S_URL_OPENANGLEBRACKET = makeState(); // URL followed by <\nvar S_URL_OPENPAREN = makeState(); // URL followed by (\nvar S_URL_OPENBRACE_Q = makeState(_multi.URL); // URL followed by { and some symbols that the URL can end it\nvar S_URL_OPENBRACKET_Q = makeState(_multi.URL); // URL followed by [ and some symbols that the URL can end it\nvar S_URL_OPENANGLEBRACKET_Q = makeState(_multi.URL); // URL followed by < and some symbols that the URL can end it\nvar S_URL_OPENPAREN_Q = makeState(_multi.URL); // URL followed by ( and some symbols that the URL can end it\nvar S_URL_OPENBRACE_SYMS = makeState(); // S_URL_OPENBRACE_Q followed by some symbols it cannot end it\nvar S_URL_OPENBRACKET_SYMS = makeState(); // S_URL_OPENBRACKET_Q followed by some symbols it cannot end it\nvar S_URL_OPENANGLEBRACKET_SYMS = makeState(); // S_URL_OPENANGLEBRACKET_Q followed by some symbols it cannot end it\nvar S_URL_OPENPAREN_SYMS = makeState(); // S_URL_OPENPAREN_Q followed by some symbols it cannot end it\nvar S_EMAIL_DOMAIN = makeState(); // parsed string starts with local email info + @ with a potential domain name (C)\nvar S_EMAIL_DOMAIN_DOT = makeState(); // (C) domain followed by DOT\nvar S_EMAIL = makeState(_multi.EMAIL); // (C) Possible email address (could have more tlds)\nvar S_EMAIL_COLON = makeState(); // (C) URL followed by colon (potential port number here)\nvar S_EMAIL_PORT = makeState(_multi.EMAIL); // (C) Email address with a port\nvar S_MAILTO_EMAIL = makeState(_multi.MAILTOEMAIL); // Email that begins with the mailto prefix (D)\nvar S_MAILTO_EMAIL_NON_ACCEPTING = makeState(); // (D) Followed by some non-query string chars\nvar S_LOCALPART = makeState(); // Local part of the email address\nvar S_LOCALPART_AT = makeState(); // Local part of the email address plus @\nvar S_LOCALPART_DOT = makeState(); // Local part of the email address plus '.' (localpart cannot end in .)\nvar S_NL = makeState(_multi.NL); // single new line\n\n// Make path from start to protocol (with '//')\nS_START.on(_text.NL, S_NL).on(_text.PROTOCOL, S_PROTOCOL).on(_text.MAILTO, S_MAILTO).on(_text.SLASH, S_PROTOCOL_SLASH);\n\nS_PROTOCOL.on(_text.SLASH, S_PROTOCOL_SLASH);\nS_PROTOCOL_SLASH.on(_text.SLASH, S_PROTOCOL_SLASH_SLASH);\n\n// The very first potential domain name\nS_START.on(_text.TLD, S_DOMAIN).on(_text.DOMAIN, S_DOMAIN).on(_text.LOCALHOST, S_TLD).on(_text.NUM, S_DOMAIN);\n\n// Force URL for protocol followed by anything sane\nS_PROTOCOL_SLASH_SLASH.on(_text.TLD, S_URL).on(_text.DOMAIN, S_URL).on(_text.NUM, S_URL).on(_text.LOCALHOST, S_URL);\n\n// Account for dots and hyphens\n// hyphens are usually parts of domain names\nS_DOMAIN.on(_text.DOT, S_DOMAIN_DOT);\nS_EMAIL_DOMAIN.on(_text.DOT, S_EMAIL_DOMAIN_DOT);\n\n// Hyphen can jump back to a domain name\n\n// After the first domain and a dot, we can find either a URL or another domain\nS_DOMAIN_DOT.on(_text.TLD, S_TLD).on(_text.DOMAIN, S_DOMAIN).on(_text.NUM, S_DOMAIN).on(_text.LOCALHOST, S_DOMAIN);\n\nS_EMAIL_DOMAIN_DOT.on(_text.TLD, S_EMAIL).on(_text.DOMAIN, S_EMAIL_DOMAIN).on(_text.NUM, S_EMAIL_DOMAIN).on(_text.LOCALHOST, S_EMAIL_DOMAIN);\n\n// S_TLD accepts! But the URL could be longer, try to find a match greedily\n// The `run` function should be able to \"rollback\" to the accepting state\nS_TLD.on(_text.DOT, S_DOMAIN_DOT);\nS_EMAIL.on(_text.DOT, S_EMAIL_DOMAIN_DOT);\n\n// Become real URLs after `SLASH` or `COLON NUM SLASH`\n// Here PSS and non-PSS converge\nS_TLD.on(_text.COLON, S_TLD_COLON).on(_text.SLASH, S_URL);\nS_TLD_COLON.on(_text.NUM, S_TLD_PORT);\nS_TLD_PORT.on(_text.SLASH, S_URL);\nS_EMAIL.on(_text.COLON, S_EMAIL_COLON);\nS_EMAIL_COLON.on(_text.NUM, S_EMAIL_PORT);\n\n// Types of characters the URL can definitely end in\nvar qsAccepting = [_text.DOMAIN, _text.AT, _text.LOCALHOST, _text.NUM, _text.PLUS, _text.POUND, _text.PROTOCOL, _text.SLASH, _text.TLD, _text.UNDERSCORE, _text.SYM, _text.AMPERSAND];\n\n// Types of tokens that can follow a URL and be part of the query string\n// but cannot be the very last characters\n// Characters that cannot appear in the URL at all should be excluded\nvar qsNonAccepting = [_text.COLON, _text.DOT, _text.QUERY, _text.PUNCTUATION, _text.CLOSEBRACE, _text.CLOSEBRACKET, _text.CLOSEANGLEBRACKET, _text.CLOSEPAREN, _text.OPENBRACE, _text.OPENBRACKET, _text.OPENANGLEBRACKET, _text.OPENPAREN];\n\n// These states are responsible primarily for determining whether or not to\n// include the final round bracket.\n\n// URL, followed by an opening bracket\nS_URL.on(_text.OPENBRACE, S_URL_OPENBRACE).on(_text.OPENBRACKET, S_URL_OPENBRACKET).on(_text.OPENANGLEBRACKET, S_URL_OPENANGLEBRACKET).on(_text.OPENPAREN, S_URL_OPENPAREN);\n\n// URL with extra symbols at the end, followed by an opening bracket\nS_URL_NON_ACCEPTING.on(_text.OPENBRACE, S_URL_OPENBRACE).on(_text.OPENBRACKET, S_URL_OPENBRACKET).on(_text.OPENANGLEBRACKET, S_URL_OPENANGLEBRACKET).on(_text.OPENPAREN, S_URL_OPENPAREN);\n\n// Closing bracket component. This character WILL be included in the URL\nS_URL_OPENBRACE.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN.on(_text.CLOSEPAREN, S_URL);\nS_URL_OPENBRACE_Q.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET_Q.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET_Q.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN_Q.on(_text.CLOSEPAREN, S_URL);\nS_URL_OPENBRACE_SYMS.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET_SYMS.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET_SYMS.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN_SYMS.on(_text.CLOSEPAREN, S_URL);\n\n// URL that beings with an opening bracket, followed by a symbols.\n// Note that the final state can still be `S_URL_OPENBRACE_Q` (if the URL only\n// has a single opening bracket for some reason).\nS_URL_OPENBRACE.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE.on(qsNonAccepting, S_URL_OPENBRACE_SYMS);\nS_URL_OPENBRACKET.on(qsNonAccepting, S_URL_OPENBRACKET_SYMS);\nS_URL_OPENANGLEBRACKET.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_SYMS);\nS_URL_OPENPAREN.on(qsNonAccepting, S_URL_OPENPAREN_SYMS);\n\n// URL that begins with an opening bracket, followed by some symbols\nS_URL_OPENBRACE_Q.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_Q.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_Q.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_Q.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE_Q.on(qsNonAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_Q.on(qsNonAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_Q.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_Q.on(qsNonAccepting, S_URL_OPENPAREN_Q);\n\nS_URL_OPENBRACE_SYMS.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_SYMS.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_SYMS.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_SYMS.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE_SYMS.on(qsNonAccepting, S_URL_OPENBRACE_SYMS);\nS_URL_OPENBRACKET_SYMS.on(qsNonAccepting, S_URL_OPENBRACKET_SYMS);\nS_URL_OPENANGLEBRACKET_SYMS.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_SYMS);\nS_URL_OPENPAREN_SYMS.on(qsNonAccepting, S_URL_OPENPAREN_SYMS);\n\n// Account for the query string\nS_URL.on(qsAccepting, S_URL);\nS_URL_NON_ACCEPTING.on(qsAccepting, S_URL);\n\nS_URL.on(qsNonAccepting, S_URL_NON_ACCEPTING);\nS_URL_NON_ACCEPTING.on(qsNonAccepting, S_URL_NON_ACCEPTING);\n\n// Email address-specific state definitions\n// Note: We are not allowing '/' in email addresses since this would interfere\n// with real URLs\n\n// For addresses with the mailto prefix\n// 'mailto:' followed by anything sane is a valid email\nS_MAILTO.on(_text.TLD, S_MAILTO_EMAIL).on(_text.DOMAIN, S_MAILTO_EMAIL).on(_text.NUM, S_MAILTO_EMAIL).on(_text.LOCALHOST, S_MAILTO_EMAIL);\n\n// Greedily get more potential valid email values\nS_MAILTO_EMAIL.on(qsAccepting, S_MAILTO_EMAIL).on(qsNonAccepting, S_MAILTO_EMAIL_NON_ACCEPTING);\nS_MAILTO_EMAIL_NON_ACCEPTING.on(qsAccepting, S_MAILTO_EMAIL).on(qsNonAccepting, S_MAILTO_EMAIL_NON_ACCEPTING);\n\n// For addresses without the mailto prefix\n// Tokens allowed in the localpart of the email\nvar localpartAccepting = [_text.DOMAIN, _text.NUM, _text.PLUS, _text.POUND, _text.QUERY, _text.UNDERSCORE, _text.SYM, _text.AMPERSAND, _text.TLD];\n\n// Some of the tokens in `localpartAccepting` are already accounted for here and\n// will not be overwritten (don't worry)\nS_DOMAIN.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT);\nS_TLD.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT);\nS_DOMAIN_DOT.on(localpartAccepting, S_LOCALPART);\n\n// Okay we're on a localpart. Now what?\n// TODO: IP addresses and what if the email starts with numbers?\nS_LOCALPART.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT) // close to an email address now\n.on(_text.DOT, S_LOCALPART_DOT);\nS_LOCALPART_DOT.on(localpartAccepting, S_LOCALPART);\nS_LOCALPART_AT.on(_text.TLD, S_EMAIL_DOMAIN).on(_text.DOMAIN, S_EMAIL_DOMAIN).on(_text.LOCALHOST, S_EMAIL);\n// States following `@` defined above\n\nvar run = function run(tokens) {\n\tvar len = tokens.length;\n\tvar cursor = 0;\n\tvar multis = [];\n\tvar textTokens = [];\n\n\twhile (cursor < len) {\n\t\tvar state = S_START;\n\t\tvar secondState = null;\n\t\tvar nextState = null;\n\t\tvar multiLength = 0;\n\t\tvar latestAccepting = null;\n\t\tvar sinceAccepts = -1;\n\n\t\twhile (cursor < len && !(secondState = state.next(tokens[cursor]))) {\n\t\t\t// Starting tokens with nowhere to jump to.\n\t\t\t// Consider these to be just plain text\n\t\t\ttextTokens.push(tokens[cursor++]);\n\t\t}\n\n\t\twhile (cursor < len && (nextState = secondState || state.next(tokens[cursor]))) {\n\n\t\t\t// Get the next state\n\t\t\tsecondState = null;\n\t\t\tstate = nextState;\n\n\t\t\t// Keep track of the latest accepting state\n\t\t\tif (state.accepts()) {\n\t\t\t\tsinceAccepts = 0;\n\t\t\t\tlatestAccepting = state;\n\t\t\t} else if (sinceAccepts >= 0) {\n\t\t\t\tsinceAccepts++;\n\t\t\t}\n\n\t\t\tcursor++;\n\t\t\tmultiLength++;\n\t\t}\n\n\t\tif (sinceAccepts < 0) {\n\n\t\t\t// No accepting state was found, part of a regular text token\n\t\t\t// Add all the tokens we looked at to the text tokens array\n\t\t\tfor (var i = cursor - multiLength; i < cursor; i++) {\n\t\t\t\ttextTokens.push(tokens[i]);\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Accepting state!\n\n\t\t\t// First close off the textTokens (if available)\n\t\t\tif (textTokens.length > 0) {\n\t\t\t\tmultis.push(new _multi.TEXT(textTokens));\n\t\t\t\ttextTokens = [];\n\t\t\t}\n\n\t\t\t// Roll back to the latest accepting state\n\t\t\tcursor -= sinceAccepts;\n\t\t\tmultiLength -= sinceAccepts;\n\n\t\t\t// Create a new multitoken\n\t\t\tvar MULTI = latestAccepting.emit();\n\t\t\tmultis.push(new MULTI(tokens.slice(cursor - multiLength, cursor)));\n\t\t}\n\t}\n\n\t// Finally close off the textTokens (if available)\n\tif (textTokens.length > 0) {\n\t\tmultis.push(new _multi.TEXT(textTokens));\n\t}\n\n\treturn multis;\n};\n\nexports.State = _state.TokenState;\nexports.TOKENS = MULTI_TOKENS;\nexports.run = run;\nexports.start = S_START;","'use strict';\n\nexports.__esModule = true;\nexports.URL = exports.TEXT = exports.NL = exports.EMAIL = exports.MAILTOEMAIL = exports.Base = undefined;\n\nvar _createTokenClass = require('./create-token-class');\n\nvar _class = require('../../utils/class');\n\nvar _text = require('./text');\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n// Is the given token a valid domain token?\n// Should nums be included here?\nfunction isDomainToken(token) {\n\treturn token instanceof _text.DOMAIN || token instanceof _text.TLD;\n}\n\n/**\n\tAbstract class used for manufacturing tokens of text tokens. That is rather\n\tthan the value for a token being a small string of text, it's value an array\n\tof text tokens.\n\n\tUsed for grouping together URLs, emails, hashtags, and other potential\n\tcreations.\n\n\t@class MultiToken\n\t@abstract\n*/\nvar MultiToken = (0, _createTokenClass.createTokenClass)();\n\nMultiToken.prototype = {\n\t/**\n \tString representing the type for this token\n \t@property type\n \t@default 'TOKEN'\n */\n\ttype: 'token',\n\n\t/**\n \tIs this multitoken a link?\n \t@property isLink\n \t@default false\n */\n\tisLink: false,\n\n\t/**\n \tReturn the string this token represents.\n \t@method toString\n \t@return {String}\n */\n\ttoString: function toString() {\n\t\tvar result = [];\n\t\tfor (var i = 0; i < this.v.length; i++) {\n\t\t\tresult.push(this.v[i].toString());\n\t\t}\n\t\treturn result.join('');\n\t},\n\n\n\t/**\n \tWhat should the value for this token be in the `href` HTML attribute?\n \tReturns the `.toString` value by default.\n \t\t@method toHref\n \t@return {String}\n */\n\ttoHref: function toHref() {\n\t\treturn this.toString();\n\t},\n\n\n\t/**\n \tReturns a hash of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {String} [protocol] `'http'` by default\n \t@return {Object}\n */\n\ttoObject: function toObject() {\n\t\tvar protocol = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'http';\n\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tvalue: this.toString(),\n\t\t\thref: this.toHref(protocol)\n\t\t};\n\t}\n};\n\n/**\n\tRepresents an arbitrarily mailto email address with the prefix included\n\t@class MAILTO\n\t@extends MultiToken\n*/\nvar MAILTOEMAIL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'email',\n\tisLink: true\n});\n\n/**\n\tRepresents a list of tokens making up a valid email address\n\t@class EMAIL\n\t@extends MultiToken\n*/\nvar EMAIL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'email',\n\tisLink: true,\n\ttoHref: function toHref() {\n\t\treturn 'mailto:' + this.toString();\n\t}\n});\n\n/**\n\tRepresents some plain text\n\t@class TEXT\n\t@extends MultiToken\n*/\nvar TEXT = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), { type: 'text' });\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class NL\n\t@extends MultiToken\n*/\nvar NL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), { type: 'nl' });\n\n/**\n\tRepresents a list of tokens making up a valid URL\n\t@class URL\n\t@extends MultiToken\n*/\nvar URL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'url',\n\tisLink: true,\n\n\t/**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@method href\n \t@param {String} protocol\n \t@return {String}\n */\n\ttoHref: function toHref() {\n\t\tvar protocol = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'http';\n\n\t\tvar hasProtocol = false;\n\t\tvar hasSlashSlash = false;\n\t\tvar tokens = this.v;\n\t\tvar result = [];\n\t\tvar i = 0;\n\n\t\t// Make the first part of the domain lowercase\n\t\t// Lowercase protocol\n\t\twhile (tokens[i] instanceof _text.PROTOCOL) {\n\t\t\thasProtocol = true;\n\t\t\tresult.push(tokens[i].toString().toLowerCase());\n\t\t\ti++;\n\t\t}\n\n\t\t// Skip slash-slash\n\t\twhile (tokens[i] instanceof _text.SLASH) {\n\t\t\thasSlashSlash = true;\n\t\t\tresult.push(tokens[i].toString());\n\t\t\ti++;\n\t\t}\n\n\t\t// Lowercase all other characters in the domain\n\t\twhile (isDomainToken(tokens[i])) {\n\t\t\tresult.push(tokens[i].toString().toLowerCase());\n\t\t\ti++;\n\t\t}\n\n\t\t// Leave all other characters as they were written\n\t\tfor (; i < tokens.length; i++) {\n\t\t\tresult.push(tokens[i].toString());\n\t\t}\n\n\t\tresult = result.join('');\n\n\t\tif (!(hasProtocol || hasSlashSlash)) {\n\t\t\tresult = protocol + '://' + result;\n\t\t}\n\n\t\treturn result;\n\t},\n\thasProtocol: function hasProtocol() {\n\t\treturn this.v[0] instanceof _text.PROTOCOL;\n\t}\n});\n\nexports.Base = MultiToken;\nexports.MAILTOEMAIL = MAILTOEMAIL;\nexports.EMAIL = EMAIL;\nexports.NL = NL;\nexports.TEXT = TEXT;\nexports.URL = URL;","module.exports = require('./lib/linkify-string').default;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _linkify = require('./linkify');\n\nvar linkify = _interopRequireWildcard(_linkify);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar tokenize = linkify.tokenize,\n options = linkify.options; /**\n \tConvert strings of text into linkable HTML text\n */\n\nvar Options = options.Options;\n\n\nfunction escapeText(text) {\n\treturn text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n}\n\nfunction escapeAttr(href) {\n\treturn href.replace(/\"/g, '"');\n}\n\nfunction attributesToString(attributes) {\n\tif (!attributes) {\n\t\treturn '';\n\t}\n\tvar result = [];\n\n\tfor (var attr in attributes) {\n\t\tvar val = attributes[attr] + '';\n\t\tresult.push(attr + '=\"' + escapeAttr(val) + '\"');\n\t}\n\treturn result.join(' ');\n}\n\nfunction linkifyStr(str) {\n\tvar opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\topts = new Options(opts);\n\n\tvar tokens = tokenize(str);\n\tvar result = [];\n\n\tfor (var i = 0; i < tokens.length; i++) {\n\t\tvar token = tokens[i];\n\n\t\tif (token.type === 'nl' && opts.nl2br) {\n\t\t\tresult.push('<br>\\n');\n\t\t\tcontinue;\n\t\t} else if (!token.isLink || !opts.check(token)) {\n\t\t\tresult.push(escapeText(token.toString()));\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar _opts$resolve = opts.resolve(token),\n\t\t formatted = _opts$resolve.formatted,\n\t\t formattedHref = _opts$resolve.formattedHref,\n\t\t tagName = _opts$resolve.tagName,\n\t\t className = _opts$resolve.className,\n\t\t target = _opts$resolve.target,\n\t\t attributes = _opts$resolve.attributes;\n\n\t\tvar link = '<' + tagName + ' href=\"' + escapeAttr(formattedHref) + '\"';\n\n\t\tif (className) {\n\t\t\tlink += ' class=\"' + escapeAttr(className) + '\"';\n\t\t}\n\n\t\tif (target) {\n\t\t\tlink += ' target=\"' + escapeAttr(target) + '\"';\n\t\t}\n\n\t\tif (attributes) {\n\t\t\tlink += ' ' + attributesToString(attributes);\n\t\t}\n\n\t\tlink += '>' + escapeText(formatted) + '</' + tagName + '>';\n\t\tresult.push(link);\n\t}\n\n\treturn result.join('');\n}\n\nif (!String.prototype.linkify) {\n\ttry {\n\t\tObject.defineProperty(String.prototype, 'linkify', {\n\t\t\tset: function set() {},\n\t\t\tget: function get() {\n\t\t\t\treturn function linkify(opts) {\n\t\t\t\t\treturn linkifyStr(this, opts);\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t} catch (e) {\n\t\t// IE 8 doesn't like Object.defineProperty on non-DOM objects\n\t\tif (!String.prototype.linkify) {\n\t\t\tString.prototype.linkify = function (opts) {\n\t\t\t\treturn linkifyStr(this, opts);\n\t\t\t};\n\t\t}\n\t}\n}\n\nexports.default = linkifyStr;","'use strict';\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _WhoIsTyping = require('../../WhoIsTyping');\n\nvar _WhoIsTyping2 = _interopRequireDefault(_WhoIsTyping);\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _MemberAvatar = require('../views/avatars/MemberAvatar');\n\nvar _MemberAvatar2 = _interopRequireDefault(_MemberAvatar);\n\nvar _Resend = require('../../Resend');\n\nvar _Resend2 = _interopRequireDefault(_Resend);\n\nvar _cryptodevices = require('../../cryptodevices');\n\nvar cryptodevices = _interopRequireWildcard(_cryptodevices);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _ErrorUtils = require('../../utils/ErrorUtils');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar STATUS_BAR_HIDDEN = 0;\nvar STATUS_BAR_EXPANDED = 1;\nvar STATUS_BAR_EXPANDED_LARGE = 2;\n\nfunction getUnsentMessages(room) {\n if (!room) {\n return [];\n }\n return room.getPendingEvents().filter(function (ev) {\n return ev.status === _matrixJsSdk2.default.EventStatus.NOT_SENT;\n });\n};\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomStatusBar',\n\n propTypes: {\n // the room this statusbar is representing.\n room: _propTypes2.default.object.isRequired,\n\n // the number of messages which have arrived since we've been scrolled up\n numUnreadMessages: _propTypes2.default.number,\n\n // this is true if we are fully scrolled-down, and are looking at\n // the end of the live timeline.\n atEndOfLiveTimeline: _propTypes2.default.bool,\n\n // This is true when the user is alone in the room, but has also sent a message.\n // Used to suggest to the user to invite someone\n sentMessageAndIsAlone: _propTypes2.default.bool,\n\n // true if there is an active call in this room (means we show\n // the 'Active Call' text in the status bar if there is nothing\n // more interesting)\n hasActiveCall: _propTypes2.default.bool,\n\n // Number of names to display in typing indication. E.g. set to 3, will\n // result in \"X, Y, Z and 100 others are typing.\"\n whoIsTypingLimit: _propTypes2.default.number,\n\n // true if the room is being peeked at. This affects components that shouldn't\n // logically be shown when peeking, such as a prompt to invite people to a room.\n isPeeking: _propTypes2.default.bool,\n\n // callback for when the user clicks on the 'resend all' button in the\n // 'unsent messages' bar\n onResendAllClick: _propTypes2.default.func,\n\n // callback for when the user clicks on the 'cancel all' button in the\n // 'unsent messages' bar\n onCancelAllClick: _propTypes2.default.func,\n\n // callback for when the user clicks on the 'invite others' button in the\n // 'you are alone' bar\n onInviteClick: _propTypes2.default.func,\n\n // callback for when the user clicks on the 'stop warning me' button in the\n // 'you are alone' bar\n onStopWarningClick: _propTypes2.default.func,\n\n // callback for when the user clicks on the 'scroll to bottom' button\n onScrollToBottomClick: _propTypes2.default.func,\n\n // callback for when we do something that changes the size of the\n // status bar. This is used to trigger a re-layout in the parent\n // component.\n onResize: _propTypes2.default.func,\n\n // callback for when the status bar can be hidden from view, as it is\n // not displaying anything\n onHidden: _propTypes2.default.func,\n\n // callback for when the status bar is displaying something and should\n // be visible\n onVisible: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n whoIsTypingLimit: 3\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n syncState: _MatrixClientPeg2.default.get().getSyncState(),\n syncStateData: _MatrixClientPeg2.default.get().getSyncStateData(),\n usersTyping: _WhoIsTyping2.default.usersTypingApartFromMe(this.props.room),\n unsentMessages: getUnsentMessages(this.props.room)\n };\n },\n\n componentWillMount: function componentWillMount() {\n _MatrixClientPeg2.default.get().on(\"sync\", this.onSyncStateChange);\n _MatrixClientPeg2.default.get().on(\"RoomMember.typing\", this.onRoomMemberTyping);\n _MatrixClientPeg2.default.get().on(\"Room.localEchoUpdated\", this._onRoomLocalEchoUpdated);\n\n this._checkSize();\n },\n\n componentDidUpdate: function componentDidUpdate() {\n this._checkSize();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // we may have entirely lost our client as we're logging out before clicking login on the guest bar...\n var client = _MatrixClientPeg2.default.get();\n if (client) {\n client.removeListener(\"sync\", this.onSyncStateChange);\n client.removeListener(\"RoomMember.typing\", this.onRoomMemberTyping);\n client.removeListener(\"Room.localEchoUpdated\", this._onRoomLocalEchoUpdated);\n }\n },\n\n onSyncStateChange: function onSyncStateChange(state, prevState, data) {\n if (state === \"SYNCING\" && prevState === \"SYNCING\") {\n return;\n }\n this.setState({\n syncState: state,\n syncStateData: data\n });\n },\n\n onRoomMemberTyping: function onRoomMemberTyping(ev, member) {\n this.setState({\n usersTyping: _WhoIsTyping2.default.usersTypingApartFromMeAndIgnored(this.props.room)\n });\n },\n\n _onSendWithoutVerifyingClick: function _onSendWithoutVerifyingClick() {\n var _this = this;\n\n cryptodevices.getUnknownDevicesForRoom(_MatrixClientPeg2.default.get(), this.props.room).then(function (devices) {\n cryptodevices.markAllDevicesKnown(_MatrixClientPeg2.default.get(), devices);\n _Resend2.default.resendUnsentEvents(_this.props.room);\n });\n },\n\n _onResendAllClick: function _onResendAllClick() {\n _Resend2.default.resendUnsentEvents(this.props.room);\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n },\n\n _onCancelAllClick: function _onCancelAllClick() {\n _Resend2.default.cancelUnsentEvents(this.props.room);\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n },\n\n _onShowDevicesClick: function _onShowDevicesClick() {\n cryptodevices.showUnknownDeviceDialogForMessages(_MatrixClientPeg2.default.get(), this.props.room);\n },\n\n _onRoomLocalEchoUpdated: function _onRoomLocalEchoUpdated(event, room, oldEventId, oldStatus) {\n if (room.roomId !== this.props.room.roomId) return;\n\n this.setState({\n unsentMessages: getUnsentMessages(this.props.room)\n });\n },\n\n // Check whether current size is greater than 0, if yes call props.onVisible\n _checkSize: function _checkSize() {\n if (this._getSize()) {\n if (this.props.onVisible) this.props.onVisible();\n } else {\n if (this.props.onHidden) this.props.onHidden();\n }\n },\n\n // We don't need the actual height - just whether it is likely to have\n // changed - so we use '0' to indicate normal size, and other values to\n // indicate other sizes.\n _getSize: function _getSize() {\n if (this._shouldShowConnectionError() || this.state.usersTyping.length > 0 || this.props.numUnreadMessages || !this.props.atEndOfLiveTimeline || this.props.hasActiveCall || this.props.sentMessageAndIsAlone) {\n return STATUS_BAR_EXPANDED;\n } else if (this.state.unsentMessages.length > 0) {\n return STATUS_BAR_EXPANDED_LARGE;\n }\n return STATUS_BAR_HIDDEN;\n },\n\n // return suitable content for the image on the left of the status bar.\n //\n // if wantPlaceholder is true, we include a \"...\" placeholder if\n // there is nothing better to put in.\n _getIndicator: function _getIndicator(wantPlaceholder) {\n if (this.props.numUnreadMessages) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_scrollDownIndicator',\n onClick: this.props.onScrollToBottomClick },\n _react2.default.createElement('img', { src: 'img/newmessages.svg', width: '24', height: '24',\n alt: '' })\n );\n }\n\n var AccessibleButton = _index2.default.getComponent(\"elements.AccessibleButton\");\n if (!this.props.atEndOfLiveTimeline) {\n return _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_RoomStatusBar_scrollDownIndicator',\n onClick: this.props.onScrollToBottomClick },\n _react2.default.createElement('img', { src: 'img/scrolldown.svg', width: '24', height: '24',\n alt: (0, _languageHandler._t)(\"Scroll to bottom of page\"),\n title: (0, _languageHandler._t)(\"Scroll to bottom of page\") })\n );\n }\n\n if (this.props.hasActiveCall) {\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n return _react2.default.createElement(TintableSvg, { src: 'img/sound-indicator.svg', width: '23', height: '20' });\n }\n\n if (this._shouldShowConnectionError()) {\n return null;\n }\n\n if (wantPlaceholder) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_typingIndicatorAvatars' },\n this._renderTypingIndicatorAvatars(this.props.whoIsTypingLimit)\n );\n }\n\n return null;\n },\n\n _renderTypingIndicatorAvatars: function _renderTypingIndicatorAvatars(limit) {\n var users = this.state.usersTyping;\n\n var othersCount = 0;\n if (users.length > limit) {\n othersCount = users.length - limit + 1;\n users = users.slice(0, limit - 1);\n }\n\n var avatars = users.map(function (u) {\n return _react2.default.createElement(_MemberAvatar2.default, {\n key: u.userId,\n member: u,\n width: 24,\n height: 24,\n resizeMethod: 'crop'\n });\n });\n\n if (othersCount > 0) {\n avatars.push(_react2.default.createElement(\n 'span',\n { className: 'mx_RoomStatusBar_typingIndicatorRemaining', key: 'others' },\n '+',\n othersCount\n ));\n }\n\n return avatars;\n },\n\n _shouldShowConnectionError: function _shouldShowConnectionError() {\n // no conn bar trumps unread count since you can't get unread messages\n // without a connection! (technically may already have some but meh)\n // It also trumps the \"some not sent\" msg since you can't resend without\n // a connection!\n // There's one situation in which we don't show this 'no connection' bar, and that's\n // if it's a resource limit exceeded error: those are shown in the top bar.\n var errorIsMauError = Boolean(this.state.syncStateData && this.state.syncStateData.error && this.state.syncStateData.error.errcode === 'M_RESOURCE_LIMIT_EXCEEDED');\n return this.state.syncState === \"ERROR\" && !errorIsMauError;\n },\n\n _getUnsentMessageContent: function _getUnsentMessageContent() {\n var _this2 = this;\n\n var unsentMessages = this.state.unsentMessages;\n if (!unsentMessages.length) return null;\n\n var title = void 0;\n var content = void 0;\n\n var hasUDE = unsentMessages.some(function (m) {\n return m.error && m.error.name === \"UnknownDeviceError\";\n });\n\n if (hasUDE) {\n title = (0, _languageHandler._t)(\"Message not sent due to unknown devices being present\");\n content = (0, _languageHandler._t)(\"<showDevicesText>Show devices</showDevicesText>, <sendAnywayText>send anyway</sendAnywayText> or <cancelText>cancel</cancelText>.\", {}, {\n 'showDevicesText': function showDevicesText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'resend', onClick: _this2._onShowDevicesClick },\n sub\n );\n },\n 'sendAnywayText': function sendAnywayText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'sendAnyway', onClick: _this2._onSendWithoutVerifyingClick },\n sub\n );\n },\n 'cancelText': function cancelText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'cancel', onClick: _this2._onCancelAllClick },\n sub\n );\n }\n });\n } else {\n var consentError = null;\n var resourceLimitError = null;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(unsentMessages), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var m = _step.value;\n\n if (m.error && m.error.errcode === 'M_CONSENT_NOT_GIVEN') {\n consentError = m.error;\n break;\n } else if (m.error && m.error.errcode === 'M_RESOURCE_LIMIT_EXCEEDED') {\n resourceLimitError = m.error;\n break;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (consentError) {\n title = (0, _languageHandler._t)(\"You can't send any messages until you review and agree to \" + \"<consentLink>our terms and conditions</consentLink>.\", {}, {\n 'consentLink': function consentLink(sub) {\n return _react2.default.createElement(\n 'a',\n { href: consentError.data && consentError.data.consent_uri, target: '_blank' },\n sub\n );\n }\n });\n } else if (resourceLimitError) {\n title = (0, _ErrorUtils.messageForResourceLimitError)(resourceLimitError.data.limit_type, resourceLimitError.data.admin_contact, {\n 'monthly_active_user': (0, _languageHandler._td)(\"Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. \" + \"Please <a>contact your service administrator</a> to continue using the service.\"),\n '': (0, _languageHandler._td)(\"Your message wasn't sent because this homeserver has exceeded a resource limit. \" + \"Please <a>contact your service administrator</a> to continue using the service.\")\n });\n } else if (unsentMessages.length === 1 && unsentMessages[0].error && unsentMessages[0].error.data && unsentMessages[0].error.data.error) {\n title = unsentMessages[0].error.data.error;\n } else {\n title = (0, _languageHandler._t)('%(count)s of your messages have not been sent.', { count: unsentMessages.length });\n }\n content = (0, _languageHandler._t)(\"%(count)s <resendText>Resend all</resendText> or <cancelText>cancel all</cancelText> now. \" + \"You can also select individual messages to resend or cancel.\", { count: unsentMessages.length }, {\n 'resendText': function resendText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'resend', onClick: _this2._onResendAllClick },\n sub\n );\n },\n 'cancelText': function cancelText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'cancel', onClick: _this2._onCancelAllClick },\n sub\n );\n }\n });\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_connectionLostBar' },\n _react2.default.createElement('img', { src: 'img/warning.svg', width: '24', height: '23', title: (0, _languageHandler._t)(\"Warning\"), alt: '' }),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_connectionLostBar_title' },\n title\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_connectionLostBar_desc' },\n content\n )\n )\n );\n },\n\n // return suitable content for the main (text) part of the status bar.\n _getContent: function _getContent() {\n var _this3 = this;\n\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n\n if (this._shouldShowConnectionError()) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_connectionLostBar' },\n _react2.default.createElement('img', { src: 'img/warning.svg', width: '24', height: '23', title: '/!\\\\ ', alt: '/!\\\\ ' }),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_connectionLostBar_title' },\n (0, _languageHandler._t)('Connectivity to the server has been lost.')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_connectionLostBar_desc' },\n (0, _languageHandler._t)('Sent messages will be stored until your connection has returned.')\n )\n )\n );\n }\n\n if (this.state.unsentMessages.length > 0) {\n return this._getUnsentMessageContent();\n }\n\n // unread count trumps who is typing since the unread count is only\n // set when you've scrolled up\n if (this.props.numUnreadMessages) {\n // MUST use var name \"count\" for pluralization to kick in\n var unreadMsgs = (0, _languageHandler._t)(\"%(count)s new messages\", { count: this.props.numUnreadMessages });\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_unreadMessagesBar',\n onClick: this.props.onScrollToBottomClick },\n unreadMsgs\n );\n }\n\n var typingString = _WhoIsTyping2.default.whoIsTypingString(this.state.usersTyping, this.props.whoIsTypingLimit);\n if (typingString) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_typingBar' },\n _react2.default.createElement(\n EmojiText,\n null,\n typingString\n )\n );\n }\n\n if (this.props.hasActiveCall) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_callBar' },\n _react2.default.createElement(\n 'b',\n null,\n (0, _languageHandler._t)('Active call')\n )\n );\n }\n\n // If you're alone in the room, and have sent a message, suggest to invite someone\n if (this.props.sentMessageAndIsAlone && !this.props.isPeeking) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_isAlone' },\n (0, _languageHandler._t)(\"There's no one else here! Would you like to <inviteText>invite others</inviteText> \" + \"or <nowarnText>stop warning about the empty room</nowarnText>?\", {}, {\n 'inviteText': function inviteText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'invite', onClick: _this3.props.onInviteClick },\n sub\n );\n },\n 'nowarnText': function nowarnText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'nowarn', onClick: _this3.props.onStopWarningClick },\n sub\n );\n }\n })\n );\n }\n\n return null;\n },\n\n render: function render() {\n var content = this._getContent();\n var indicator = this._getIndicator(this.state.usersTyping.length > 0);\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_indicator' },\n indicator\n ),\n _react2.default.createElement(\n 'div',\n { role: 'alert' },\n content\n )\n );\n }\n});\n//# sourceMappingURL=RoomStatusBar.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MatrixClientPeg = require(\"./MatrixClientPeg\");\n\n\nmodule.exports = {\n usersTypingApartFromMeAndIgnored: function usersTypingApartFromMeAndIgnored(room) {\n return this.usersTyping(room, [MatrixClientPeg.get().credentials.userId].concat(MatrixClientPeg.get().getIgnoredUsers()));\n },\n\n usersTypingApartFromMe: function usersTypingApartFromMe(room) {\n return this.usersTyping(room, [MatrixClientPeg.get().credentials.userId]);\n },\n\n /**\n * Given a Room object and, optionally, a list of userID strings\n * to exclude, return a list of user objects who are typing.\n */\n usersTyping: function usersTyping(room, exclude) {\n var whoIsTyping = [];\n\n if (exclude === undefined) {\n exclude = [];\n }\n\n var memberKeys = (0, _keys2.default)(room.currentState.members);\n for (var i = 0; i < memberKeys.length; ++i) {\n var userId = memberKeys[i];\n\n if (room.currentState.members[userId].typing) {\n if (exclude.indexOf(userId) == -1) {\n whoIsTyping.push(room.currentState.members[userId]);\n }\n }\n }\n\n return whoIsTyping;\n },\n\n whoIsTypingString: function whoIsTypingString(whoIsTyping, limit) {\n var othersCount = 0;\n if (whoIsTyping.length > limit) {\n othersCount = whoIsTyping.length - limit + 1;\n }\n if (whoIsTyping.length == 0) {\n return '';\n } else if (whoIsTyping.length == 1) {\n return (0, _languageHandler._t)('%(displayName)s is typing', { displayName: whoIsTyping[0].name });\n }\n var names = whoIsTyping.map(function (m) {\n return m.name;\n });\n if (othersCount >= 1) {\n return (0, _languageHandler._t)('%(names)s and %(count)s others are typing', { names: names.slice(0, limit - 1).join(', '), count: othersCount });\n } else {\n var lastPerson = names.pop();\n return (0, _languageHandler._t)('%(names)s and %(lastPerson)s are typing', { names: names.join(', '), lastPerson: lastPerson });\n }\n }\n};\n//# sourceMappingURL=WhoIsTyping.js.map","'use strict';\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _reactBeautifulDnd = require('react-beautiful-dnd');\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Unread = require('../../Unread');\n\nvar _Unread2 = _interopRequireDefault(_Unread);\n\nvar _RoomNotifs = require('../../RoomNotifs');\n\nvar RoomNotifs = _interopRequireWildcard(_RoomNotifs);\n\nvar _FormattingUtils = require('../../utils/FormattingUtils');\n\nvar FormattingUtils = _interopRequireWildcard(_FormattingUtils);\n\nvar _Keyboard = require('../../Keyboard');\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// turn this on for drop & drag console debugging galore\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar debug = false;\n\nvar TRUNCATE_AT = 10;\n\nvar RoomSubList = _react2.default.createClass({\n displayName: 'RoomSubList',\n\n debug: debug,\n\n propTypes: {\n list: _propTypes2.default.arrayOf(_propTypes2.default.object).isRequired,\n label: _propTypes2.default.string.isRequired,\n tagName: _propTypes2.default.string,\n editable: _propTypes2.default.bool,\n\n order: _propTypes2.default.string.isRequired,\n\n // passed through to RoomTile and used to highlight room with `!` regardless of notifications count\n isInvite: _propTypes2.default.bool,\n\n startAsHidden: _propTypes2.default.bool,\n showSpinner: _propTypes2.default.bool, // true to show a spinner if 0 elements when expanded\n collapsed: _propTypes2.default.bool.isRequired, // is LeftPanel collapsed?\n onHeaderClick: _propTypes2.default.func,\n alwaysShowHeader: _propTypes2.default.bool,\n incomingCall: _propTypes2.default.object,\n onShowMoreRooms: _propTypes2.default.func,\n searchFilter: _propTypes2.default.string,\n emptyContent: _propTypes2.default.node, // content shown if the list is empty\n headerItems: _propTypes2.default.node, // content shown in the sublist header\n extraTiles: _propTypes2.default.arrayOf(_propTypes2.default.node), // extra elements added beneath tiles\n showEmpty: _propTypes2.default.bool\n },\n\n getInitialState: function getInitialState() {\n return {\n hidden: this.props.startAsHidden || false,\n truncateAt: TRUNCATE_AT,\n sortedList: []\n };\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onHeaderClick: function onHeaderClick() {}, // NOP\n onShowMoreRooms: function onShowMoreRooms() {}, // NOP\n extraTiles: [],\n isInvite: false,\n showEmpty: true\n };\n },\n\n componentWillMount: function componentWillMount() {\n this.setState({\n sortedList: this.applySearchFilter(this.props.list, this.props.searchFilter)\n });\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n // order the room list appropriately before we re-render\n //if (debug) console.log(\"received new props, list = \" + newProps.list);\n this.setState({\n sortedList: this.applySearchFilter(newProps.list, newProps.searchFilter)\n });\n },\n\n applySearchFilter: function applySearchFilter(list, filter) {\n if (filter === \"\") return list;\n var lcFilter = filter.toLowerCase();\n // case insensitive if room name includes filter,\n // or if starts with `#` and one of room's aliases starts with filter\n return list.filter(function (room) {\n return room.name && room.name.toLowerCase().includes(lcFilter) || filter[0] === '#' && room.getAliases().some(function (alias) {\n return alias.toLowerCase().startsWith(lcFilter);\n });\n });\n },\n\n // The header is collapsable if it is hidden or not stuck\n // The dataset elements are added in the RoomList _initAndPositionStickyHeaders method\n isCollapsableOnClick: function isCollapsableOnClick() {\n var stuck = this.refs.header.dataset.stuck;\n if (this.state.hidden || stuck === undefined || stuck === \"none\") {\n return true;\n } else {\n return false;\n }\n },\n\n onAction: function onAction(payload) {\n // XXX: Previously RoomList would forceUpdate whenever on_room_read is dispatched,\n // but this is no longer true, so we must do it here (and can apply the small\n // optimisation of checking that we care about the room being read).\n //\n // Ultimately we need to transition to a state pushing flow where something\n // explicitly notifies the components concerned that the notif count for a room\n // has change (e.g. a Flux store).\n if (payload.action === 'on_room_read' && this.props.list.some(function (r) {\n return r.roomId === payload.roomId;\n })) {\n this.forceUpdate();\n }\n },\n\n onClick: function onClick(ev) {\n if (this.isCollapsableOnClick()) {\n // The header isCollapsable, so the click is to be interpreted as collapse and truncation logic\n var isHidden = !this.state.hidden;\n this.setState({ hidden: isHidden });\n\n if (isHidden) {\n // as good a way as any to reset the truncate state\n this.setState({ truncateAt: TRUNCATE_AT });\n }\n\n this.props.onShowMoreRooms();\n this.props.onHeaderClick(isHidden);\n } else {\n // The header is stuck, so the click is to be interpreted as a scroll to the header\n this.props.onHeaderClick(this.state.hidden, this.refs.header.dataset.originalPosition);\n }\n },\n\n onRoomTileClick: function onRoomTileClick(roomId, ev) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: roomId,\n clear_search: ev && (ev.keyCode === _Keyboard.KeyCode.ENTER || ev.keyCode === _Keyboard.KeyCode.SPACE)\n });\n },\n\n\n _shouldShowNotifBadge: function _shouldShowNotifBadge(roomNotifState) {\n var showBadgeInStates = [RoomNotifs.ALL_MESSAGES, RoomNotifs.ALL_MESSAGES_LOUD];\n return showBadgeInStates.indexOf(roomNotifState) > -1;\n },\n\n _shouldShowMentionBadge: function _shouldShowMentionBadge(roomNotifState) {\n return roomNotifState !== RoomNotifs.MUTE;\n },\n\n /**\n * Total up all the notification counts from the rooms\n *\n * @param {Number} truncateAt If supplied will only total notifications for rooms outside the truncation number\n * @returns {Array} The array takes the form [total, highlight] where highlight is a bool\n */\n roomNotificationCount: function roomNotificationCount(truncateAt) {\n var self = this;\n\n if (this.props.isInvite) {\n return [0, true];\n }\n\n return this.props.list.reduce(function (result, room, index) {\n if (truncateAt === undefined || index >= truncateAt) {\n var roomNotifState = RoomNotifs.getRoomNotifsState(room.roomId);\n var highlight = room.getUnreadNotificationCount('highlight') > 0;\n var notificationCount = room.getUnreadNotificationCount();\n\n var notifBadges = notificationCount > 0 && self._shouldShowNotifBadge(roomNotifState);\n var mentionBadges = highlight && self._shouldShowMentionBadge(roomNotifState);\n var badges = notifBadges || mentionBadges;\n\n if (badges) {\n result[0] += notificationCount;\n if (highlight) {\n result[1] = true;\n }\n }\n }\n return result;\n }, [0, false]);\n },\n\n _updateSubListCount: function _updateSubListCount() {\n // Force an update by setting the state to the current state\n // Doing it this way rather than using forceUpdate(), so that the shouldComponentUpdate()\n // method is honoured\n this.setState(this.state);\n },\n\n makeRoomTiles: function makeRoomTiles() {\n var _this = this;\n\n var DNDRoomTile = _index2.default.getComponent(\"rooms.DNDRoomTile\");\n var RoomTile = _index2.default.getComponent(\"rooms.RoomTile\");\n return this.state.sortedList.map(function (room, index) {\n // XXX: is it evil to pass in this as a prop to RoomTile? Yes.\n\n // We should only use <DNDRoomTile /> when editable\n var RoomTileComponent = _this.props.editable ? DNDRoomTile : RoomTile;\n return _react2.default.createElement(RoomTileComponent, {\n index: index // For DND\n , room: room,\n roomSubList: _this,\n tagName: _this.props.tagName,\n key: room.roomId,\n collapsed: _this.props.collapsed || false,\n unread: _Unread2.default.doesRoomHaveUnreadMessages(room),\n highlight: room.getUnreadNotificationCount('highlight') > 0 || _this.props.isInvite,\n isInvite: _this.props.isInvite,\n refreshSubList: _this._updateSubListCount,\n incomingCall: null,\n onClick: _this.onRoomTileClick\n });\n });\n },\n\n _onNotifBadgeClick: function _onNotifBadgeClick(e) {\n // prevent the roomsublist collapsing\n e.preventDefault();\n e.stopPropagation();\n // find first room which has notifications and switch to it\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this.state.sortedList), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var room = _step.value;\n\n var roomNotifState = RoomNotifs.getRoomNotifsState(room.roomId);\n var highlight = room.getUnreadNotificationCount('highlight') > 0;\n var notificationCount = room.getUnreadNotificationCount();\n\n var notifBadges = notificationCount > 0 && this._shouldShowNotifBadge(roomNotifState);\n var mentionBadges = highlight && this._shouldShowMentionBadge(roomNotifState);\n\n if (notifBadges || mentionBadges) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: room.roomId\n });\n return;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n },\n\n _onInviteBadgeClick: function _onInviteBadgeClick(e) {\n // prevent the roomsublist collapsing\n e.preventDefault();\n e.stopPropagation();\n // switch to first room in sortedList as that'll be the top of the list for the user\n if (this.state.sortedList && this.state.sortedList.length > 0) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: this.state.sortedList[0].roomId\n });\n } else if (this.props.extraTiles && this.props.extraTiles.length > 0) {\n // Group Invites are different in that they are all extra tiles and not rooms\n // XXX: this is a horrible special case because Group Invite sublist is a hack\n if (this.props.extraTiles[0].props && this.props.extraTiles[0].props.group instanceof _matrixJsSdk.Group) {\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: this.props.extraTiles[0].props.group.groupId\n });\n }\n }\n },\n\n _getHeaderJsx: function _getHeaderJsx() {\n var subListNotifications = this.roomNotificationCount();\n var subListNotifCount = subListNotifications[0];\n var subListNotifHighlight = subListNotifications[1];\n\n var totalTiles = this.props.list.length + (this.props.extraTiles || []).length;\n var roomCount = totalTiles > 0 ? totalTiles : '';\n\n var chevronClasses = (0, _classnames2.default)({\n 'mx_RoomSubList_chevron': true,\n 'mx_RoomSubList_chevronRight': this.state.hidden,\n 'mx_RoomSubList_chevronDown': !this.state.hidden\n });\n\n var badgeClasses = (0, _classnames2.default)({\n 'mx_RoomSubList_badge': true,\n 'mx_RoomSubList_badgeHighlight': subListNotifHighlight\n });\n\n var badge = void 0;\n if (subListNotifCount > 0) {\n badge = _react2.default.createElement(\n 'div',\n { className: badgeClasses, onClick: this._onNotifBadgeClick },\n FormattingUtils.formatCount(subListNotifCount)\n );\n } else if (this.props.isInvite) {\n // no notifications but highlight anyway because this is an invite badge\n badge = _react2.default.createElement(\n 'div',\n { className: badgeClasses, onClick: this._onInviteBadgeClick },\n '!'\n );\n }\n\n // When collapsed, allow a long hover on the header to show user\n // the full tag name and room count\n var title = void 0;\n if (this.props.collapsed) {\n title = this.props.label;\n if (roomCount !== '') {\n title += \" [\" + roomCount + \"]\";\n }\n }\n\n var incomingCall = void 0;\n if (this.props.incomingCall) {\n var self = this;\n // Check if the incoming call is for this section\n var incomingCallRoom = this.props.list.filter(function (room) {\n return self.props.incomingCall.roomId === room.roomId;\n });\n\n if (incomingCallRoom.length === 1) {\n var IncomingCallBox = _index2.default.getComponent(\"voip.IncomingCallBox\");\n incomingCall = _react2.default.createElement(IncomingCallBox, { className: 'mx_RoomSubList_incomingCall', incomingCall: this.props.incomingCall });\n }\n }\n\n var tabindex = this.props.searchFilter === \"\" ? \"0\" : \"-1\";\n\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSubList_labelContainer', title: title, ref: 'header' },\n _react2.default.createElement(\n AccessibleButton,\n { onClick: this.onClick, className: 'mx_RoomSubList_label', tabIndex: tabindex },\n this.props.collapsed ? '' : this.props.label,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSubList_roomCount' },\n roomCount\n ),\n _react2.default.createElement('div', { className: chevronClasses }),\n badge,\n incomingCall\n )\n );\n },\n\n _createOverflowTile: function _createOverflowTile(overflowCount, totalCount) {\n var content = _react2.default.createElement('div', { className: 'mx_RoomSubList_chevronDown' });\n\n var overflowNotifications = this.roomNotificationCount(TRUNCATE_AT);\n var overflowNotifCount = overflowNotifications[0];\n var overflowNotifHighlight = overflowNotifications[1];\n if (overflowNotifCount && !this.props.collapsed) {\n content = FormattingUtils.formatCount(overflowNotifCount);\n }\n\n var badgeClasses = (0, _classnames2.default)({\n 'mx_RoomSubList_moreBadge': true,\n 'mx_RoomSubList_moreBadgeNotify': overflowNotifCount && !this.props.collapsed,\n 'mx_RoomSubList_moreBadgeHighlight': overflowNotifHighlight && !this.props.collapsed\n });\n\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n return _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_RoomSubList_ellipsis', onClick: this._showFullMemberList },\n _react2.default.createElement('div', { className: 'mx_RoomSubList_line' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSubList_more' },\n (0, _languageHandler._t)(\"more\")\n ),\n _react2.default.createElement(\n 'div',\n { className: badgeClasses },\n content\n )\n );\n },\n\n _showFullMemberList: function _showFullMemberList() {\n this.setState({\n truncateAt: -1\n });\n\n this.props.onShowMoreRooms();\n this.props.onHeaderClick(false);\n },\n\n render: function render() {\n var TruncatedList = _index2.default.getComponent('elements.TruncatedList');\n\n var content = void 0;\n\n if (this.props.showEmpty) {\n // this is new behaviour with still controversial UX in that in hiding RoomSubLists the drop zones for DnD\n // are also gone so when filtering users can't DnD rooms to some tags but is a lot cleaner otherwise.\n if (this.state.sortedList.length === 0 && !this.props.searchFilter && this.props.extraTiles.length === 0) {\n content = this.props.emptyContent;\n } else {\n var _content;\n\n content = this.makeRoomTiles();\n (_content = content).push.apply(_content, (0, _toConsumableArray3.default)(this.props.extraTiles));\n }\n } else {\n if (this.state.sortedList.length === 0 && this.props.extraTiles.length === 0) {\n // if no search filter is applied and there is a placeholder defined then show it, otherwise show nothing\n if (!this.props.searchFilter && this.props.emptyContent) {\n content = this.props.emptyContent;\n } else {\n // don't show an empty sublist\n return null;\n }\n } else {\n var _content2;\n\n content = this.makeRoomTiles();\n (_content2 = content).push.apply(_content2, (0, _toConsumableArray3.default)(this.props.extraTiles));\n }\n }\n\n if (this.state.sortedList.length > 0 || this.props.extraTiles.length > 0 || this.props.editable) {\n var subList = void 0;\n var classes = \"mx_RoomSubList\";\n\n if (!this.state.hidden) {\n subList = _react2.default.createElement(\n TruncatedList,\n { className: classes, truncateAt: this.state.truncateAt,\n createOverflowElement: this._createOverflowTile },\n content\n );\n } else {\n subList = _react2.default.createElement(TruncatedList, { className: classes });\n }\n\n var subListContent = _react2.default.createElement(\n 'div',\n null,\n this._getHeaderJsx(),\n subList\n );\n\n return this.props.editable ? _react2.default.createElement(\n _reactBeautifulDnd.Droppable,\n {\n droppableId: \"room-sub-list-droppable_\" + this.props.tagName,\n type: 'draggable-RoomTile'\n },\n function (provided, snapshot) {\n return _react2.default.createElement(\n 'div',\n { ref: provided.innerRef },\n subListContent\n );\n }\n ) : subListContent;\n } else {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n if (this.props.showSpinner) {\n content = _react2.default.createElement(Loader, null);\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSubList' },\n this.props.alwaysShowHeader ? this._getHeaderJsx() : undefined,\n this.state.hidden ? undefined : content\n );\n }\n }\n});\n\nmodule.exports = RoomSubList;\n//# sourceMappingURL=RoomSubList.js.map","\"use strict\";\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _toConsumableArray2 = require(\"babel-runtime/helpers/toConsumableArray\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _shouldHideEvent = require(\"../../shouldHideEvent\");\n\nvar _shouldHideEvent2 = _interopRequireDefault(_shouldHideEvent);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require(\"../../languageHandler\");\n\nvar _Keyboard = require(\"../../Keyboard\");\n\nvar _RoomViewStore = require(\"../../stores/RoomViewStore\");\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _RoomScrollStateStore = require(\"../../stores/RoomScrollStateStore\");\n\nvar _RoomScrollStateStore2 = _interopRequireDefault(_RoomScrollStateStore);\n\nvar _WidgetEchoStore = require(\"../../stores/WidgetEchoStore\");\n\nvar _WidgetEchoStore2 = _interopRequireDefault(_WidgetEchoStore);\n\nvar _SettingsStore = require(\"../../settings/SettingsStore\");\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _WidgetUtils = require(\"../../utils/WidgetUtils\");\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require(\"react\"); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n// TODO: This component is enormous! There's several things which could stand-alone:\n// - Search results component\n// - Drag and drop\n// - File uploading - uploadFile()\n\nvar ReactDOM = require(\"react-dom\");\n\nvar classNames = require(\"classnames\");\n\n\nvar MatrixClientPeg = require(\"../../MatrixClientPeg\");\nvar ContentMessages = require(\"../../ContentMessages\");\nvar Modal = require(\"../../Modal\");\nvar sdk = require('../../index');\nvar CallHandler = require('../../CallHandler');\nvar dis = require(\"../../dispatcher\");\nvar Tinter = require(\"../../Tinter\");\nvar rate_limited_func = require('../../ratelimitedfunc');\nvar ObjectUtils = require('../../ObjectUtils');\nvar Rooms = require('../../Rooms');\n\nvar DEBUG = false;\nvar debuglog = function debuglog() {};\n\nvar BROWSER_SUPPORTS_SANDBOX = 'sandbox' in document.createElement('iframe');\n\nif (DEBUG) {\n // using bind means that we get to keep useful line numbers in the console\n debuglog = console.log.bind(console);\n}\n\nmodule.exports = React.createClass({\n displayName: 'RoomView',\n propTypes: {\n ConferenceHandler: _propTypes2.default.any,\n\n // Called with the credentials of a registered user (if they were a ROU that\n // transitioned to PWLU)\n onRegistered: _propTypes2.default.func,\n\n // An object representing a third party invite to join this room\n // Fields:\n // * inviteSignUrl (string) The URL used to join this room from an email invite\n // (given as part of the link in the invite email)\n // * invitedEmail (string) The email address that was invited to this room\n thirdPartyInvite: _propTypes2.default.object,\n\n // Any data about the room that would normally come from the Home Server\n // but has been passed out-of-band, eg. the room name and avatar URL\n // from an email invite (a workaround for the fact that we can't\n // get this information from the HS using an email invite).\n // Fields:\n // * name (string) The room's name\n // * avatarUrl (string) The mxc:// avatar URL for the room\n // * inviterName (string) The display name of the person who\n // * invited us tovthe room\n oobData: _propTypes2.default.object,\n\n // is the RightPanel collapsed?\n collapsedRhs: _propTypes2.default.bool\n },\n\n getInitialState: function getInitialState() {\n var llMembers = MatrixClientPeg.get().hasLazyLoadMembersEnabled();\n return {\n room: null,\n roomId: null,\n roomLoading: true,\n peekLoading: false,\n shouldPeek: true,\n // used to trigger a rerender in TimelinePanel once the members are loaded,\n // so RR are rendered again (now with the members available), ...\n membersLoaded: !llMembers,\n // The event to be scrolled to initially\n initialEventId: null,\n // The offset in pixels from the event with which to scroll vertically\n initialEventPixelOffset: null,\n // Whether to highlight the event scrolled to\n isInitialEventHighlighted: null,\n\n forwardingEvent: null,\n editingRoomSettings: false,\n uploadingRoomSettings: false,\n numUnreadMessages: 0,\n draggingFile: false,\n searching: false,\n searchResults: null,\n callState: null,\n guestsCanJoin: false,\n canPeek: false,\n showApps: false,\n isAlone: false,\n isPeeking: false,\n showingPinned: false,\n\n // error object, as from the matrix client/server API\n // If we failed to load information about the room,\n // store the error here.\n roomLoadError: null,\n\n // Have we sent a request to join the room that we're waiting to complete?\n joining: false,\n\n // this is true if we are fully scrolled-down, and are looking at\n // the end of the live timeline. It has the effect of hiding the\n // 'scroll to bottom' knob, among a couple of other things.\n atEndOfLiveTimeline: true,\n\n showTopUnreadMessagesBar: false,\n\n auxPanelMaxHeight: undefined,\n\n statusBarVisible: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n this.dispatcherRef = dis.register(this.onAction);\n MatrixClientPeg.get().on(\"Room\", this.onRoom);\n MatrixClientPeg.get().on(\"Room.timeline\", this.onRoomTimeline);\n MatrixClientPeg.get().on(\"Room.name\", this.onRoomName);\n MatrixClientPeg.get().on(\"Room.accountData\", this.onRoomAccountData);\n MatrixClientPeg.get().on(\"RoomState.members\", this.onRoomStateMember);\n MatrixClientPeg.get().on(\"Room.myMembership\", this.onMyMembership);\n MatrixClientPeg.get().on(\"accountData\", this.onAccountData);\n\n // Start listening for RoomViewStore updates\n this._roomStoreToken = _RoomViewStore2.default.addListener(this._onRoomViewStoreUpdate);\n this._onRoomViewStoreUpdate(true);\n\n _WidgetEchoStore2.default.on('update', this._onWidgetEchoStoreUpdate);\n },\n\n _onRoomViewStoreUpdate: function _onRoomViewStoreUpdate(initial) {\n if (this.unmounted) {\n return;\n }\n\n if (!initial && this.state.roomId !== _RoomViewStore2.default.getRoomId()) {\n // RoomView explicitly does not support changing what room\n // is being viewed: instead it should just be re-mounted when\n // switching rooms. Therefore, if the room ID changes, we\n // ignore this. We either need to do this or add code to handle\n // saving the scroll position (otherwise we end up saving the\n // scroll position against the wrong room).\n\n // Given that doing the setState here would cause a bunch of\n // unnecessary work, we just ignore the change since we know\n // that if the current room ID has changed from what we thought\n // it was, it means we're about to be unmounted.\n return;\n }\n\n var newState = {\n roomId: _RoomViewStore2.default.getRoomId(),\n roomAlias: _RoomViewStore2.default.getRoomAlias(),\n roomLoading: _RoomViewStore2.default.isRoomLoading(),\n roomLoadError: _RoomViewStore2.default.getRoomLoadError(),\n joining: _RoomViewStore2.default.isJoining(),\n initialEventId: _RoomViewStore2.default.getInitialEventId(),\n isInitialEventHighlighted: _RoomViewStore2.default.isInitialEventHighlighted(),\n forwardingEvent: _RoomViewStore2.default.getForwardingEvent(),\n shouldPeek: _RoomViewStore2.default.shouldPeek(),\n showingPinned: _SettingsStore2.default.getValue(\"PinnedEvents.isOpen\", _RoomViewStore2.default.getRoomId()),\n editingRoomSettings: _RoomViewStore2.default.isEditingSettings()\n };\n\n if (this.state.editingRoomSettings && !newState.editingRoomSettings) dis.dispatch({ action: 'focus_composer' });\n\n // Temporary logging to diagnose https://github.com/vector-im/riot-web/issues/4307\n console.log('RVS update:', newState.roomId, newState.roomAlias, 'loading?', newState.roomLoading, 'joining?', newState.joining, 'initial?', initial, 'shouldPeek?', newState.shouldPeek);\n\n // NB: This does assume that the roomID will not change for the lifetime of\n // the RoomView instance\n if (initial) {\n newState.room = MatrixClientPeg.get().getRoom(newState.roomId);\n if (newState.room) {\n newState.showApps = this._shouldShowApps(newState.room);\n this._onRoomLoaded(newState.room);\n }\n }\n\n if (this.state.roomId === null && newState.roomId !== null) {\n // Get the scroll state for the new room\n\n // If an event ID wasn't specified, default to the one saved for this room\n // in the scroll state store. Assume initialEventPixelOffset should be set.\n if (!newState.initialEventId) {\n var roomScrollState = _RoomScrollStateStore2.default.getScrollState(newState.roomId);\n if (roomScrollState) {\n newState.initialEventId = roomScrollState.focussedEvent;\n newState.initialEventPixelOffset = roomScrollState.pixelOffset;\n }\n }\n }\n\n // Clear the search results when clicking a search result (which changes the\n // currently scrolled to event, this.state.initialEventId).\n if (this.state.initialEventId !== newState.initialEventId) {\n newState.searchResults = null;\n }\n\n this.setState(newState);\n // At this point, newState.roomId could be null (e.g. the alias might not\n // have been resolved yet) so anything called here must handle this case.\n\n // We pass the new state into this function for it to read: it needs to\n // observe the new state but we don't want to put it in the setState\n // callback because this would prevent the setStates from being batched,\n // ie. cause it to render RoomView twice rather than the once that is necessary.\n if (initial) {\n this._setupRoom(newState.room, newState.roomId, newState.joining, newState.shouldPeek);\n }\n },\n\n _onWidgetEchoStoreUpdate: function _onWidgetEchoStoreUpdate() {\n this.setState({\n showApps: this._shouldShowApps(this.state.room)\n });\n },\n\n _setupRoom: function _setupRoom(room, roomId, joining, shouldPeek) {\n var _this = this;\n\n // if this is an unknown room then we're in one of three states:\n // - This is a room we can peek into (search engine) (we can /peek)\n // - This is a room we can publicly join or were invited to. (we can /join)\n // - This is a room we cannot join at all. (no action can help us)\n // We can't try to /join because this may implicitly accept invites (!)\n // We can /peek though. If it fails then we present the join UI. If it\n // succeeds then great, show the preview (but we still may be able to /join!).\n // Note that peeking works by room ID and room ID only, as opposed to joining\n // which must be by alias or invite wherever possible (peeking currently does\n // not work over federation).\n\n // NB. We peek if we have never seen the room before (i.e. js-sdk does not know\n // about it). We don't peek in the historical case where we were joined but are\n // now not joined because the js-sdk peeking API will clobber our historical room,\n // making it impossible to indicate a newly joined room.\n if (!joining && roomId) {\n if (this.props.autoJoin) {\n this.onJoinButtonClicked();\n } else if (!room && shouldPeek) {\n console.log(\"Attempting to peek into room %s\", roomId);\n this.setState({\n peekLoading: true,\n isPeeking: true // this will change to false if peeking fails\n });\n MatrixClientPeg.get().peekInRoom(roomId).then(function (room) {\n if (_this.unmounted) {\n return;\n }\n _this.setState({\n room: room,\n peekLoading: false\n });\n _this._onRoomLoaded(room);\n }, function (err) {\n if (_this.unmounted) {\n return;\n }\n\n // Stop peeking if anything went wrong\n _this.setState({\n isPeeking: false\n });\n\n // This won't necessarily be a MatrixError, but we duck-type\n // here and say if it's got an 'errcode' key with the right value,\n // it means we can't peek.\n if (err.errcode == \"M_GUEST_ACCESS_FORBIDDEN\") {\n // This is fine: the room just isn't peekable (we assume).\n _this.setState({\n peekLoading: false\n });\n } else {\n throw err;\n }\n });\n } else if (room) {\n //viewing a previously joined room, try to lazy load members\n\n // Stop peeking because we have joined this room previously\n MatrixClientPeg.get().stopPeeking();\n this.setState({ isPeeking: false });\n }\n }\n },\n\n _shouldShowApps: function _shouldShowApps(room) {\n if (!BROWSER_SUPPORTS_SANDBOX) return false;\n\n // Check if user has previously chosen to hide the app drawer for this\n // room. If so, do not show apps\n var hideWidgetDrawer = localStorage.getItem(room.roomId + \"_hide_widget_drawer\");\n\n if (hideWidgetDrawer === \"true\") {\n return false;\n }\n\n var widgets = _WidgetEchoStore2.default.getEchoedRoomWidgets(room.roomId, _WidgetUtils2.default.getRoomWidgets(room));\n\n return widgets.length > 0 || _WidgetEchoStore2.default.roomHasPendingWidgets(room.roomId, _WidgetUtils2.default.getRoomWidgets(room));\n },\n\n componentDidMount: function componentDidMount() {\n var call = this._getCallForRoom();\n var callState = call ? call.call_state : \"ended\";\n this.setState({\n callState: callState\n });\n\n this._updateConfCallNotification();\n\n window.addEventListener('beforeunload', this.onPageUnload);\n window.addEventListener('resize', this.onResize);\n this.onResize();\n\n document.addEventListener(\"keydown\", this.onKeyDown);\n\n // XXX: EVIL HACK to autofocus inviting on empty rooms.\n // We use the setTimeout to avoid racing with focus_composer.\n if (this.state.room && this.state.room.getJoinedMemberCount() == 1 && this.state.room.getLiveTimeline() && this.state.room.getLiveTimeline().getEvents() && this.state.room.getLiveTimeline().getEvents().length <= 6) {\n var inviteBox = document.getElementById(\"mx_SearchableEntityList_query\");\n setTimeout(function () {\n if (inviteBox) {\n inviteBox.focus();\n }\n }, 50);\n }\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n return !ObjectUtils.shallowEqual(this.props, nextProps) || !ObjectUtils.shallowEqual(this.state, nextState);\n },\n\n componentDidUpdate: function componentDidUpdate() {\n if (this.refs.roomView) {\n var roomView = ReactDOM.findDOMNode(this.refs.roomView);\n if (!roomView.ondrop) {\n roomView.addEventListener('drop', this.onDrop);\n roomView.addEventListener('dragover', this.onDragOver);\n roomView.addEventListener('dragleave', this.onDragLeaveOrEnd);\n roomView.addEventListener('dragend', this.onDragLeaveOrEnd);\n }\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // set a boolean to say we've been unmounted, which any pending\n // promises can use to throw away their results.\n //\n // (We could use isMounted, but facebook have deprecated that.)\n this.unmounted = true;\n\n // update the scroll map before we get unmounted\n if (this.state.roomId) {\n _RoomScrollStateStore2.default.setScrollState(this.state.roomId, this._getScrollState());\n }\n\n if (this.refs.roomView) {\n // disconnect the D&D event listeners from the room view. This\n // is really just for hygiene - we're going to be\n // deleted anyway, so it doesn't matter if the event listeners\n // don't get cleaned up.\n var roomView = ReactDOM.findDOMNode(this.refs.roomView);\n roomView.removeEventListener('drop', this.onDrop);\n roomView.removeEventListener('dragover', this.onDragOver);\n roomView.removeEventListener('dragleave', this.onDragLeaveOrEnd);\n roomView.removeEventListener('dragend', this.onDragLeaveOrEnd);\n }\n dis.unregister(this.dispatcherRef);\n if (MatrixClientPeg.get()) {\n MatrixClientPeg.get().removeListener(\"Room\", this.onRoom);\n MatrixClientPeg.get().removeListener(\"Room.timeline\", this.onRoomTimeline);\n MatrixClientPeg.get().removeListener(\"Room.name\", this.onRoomName);\n MatrixClientPeg.get().removeListener(\"Room.accountData\", this.onRoomAccountData);\n MatrixClientPeg.get().removeListener(\"Room.myMembership\", this.onMyMembership);\n MatrixClientPeg.get().removeListener(\"RoomState.members\", this.onRoomStateMember);\n MatrixClientPeg.get().removeListener(\"accountData\", this.onAccountData);\n }\n\n window.removeEventListener('beforeunload', this.onPageUnload);\n window.removeEventListener('resize', this.onResize);\n\n document.removeEventListener(\"keydown\", this.onKeyDown);\n\n // Remove RoomStore listener\n if (this._roomStoreToken) {\n this._roomStoreToken.remove();\n }\n\n _WidgetEchoStore2.default.removeListener('update', this._onWidgetEchoStoreUpdate);\n\n // cancel any pending calls to the rate_limited_funcs\n this._updateRoomMembers.cancelPendingCall();\n\n // no need to do this as Dir & Settings are now overlays. It just burnt CPU.\n // console.log(\"Tinter.tint from RoomView.unmount\");\n // Tinter.tint(); // reset colourscheme\n },\n\n onPageUnload: function onPageUnload(event) {\n if (ContentMessages.getCurrentUploads().length > 0) {\n return event.returnValue = (0, _languageHandler._t)(\"You seem to be uploading files, are you sure you want to quit?\");\n } else if (this._getCallForRoom() && this.state.callState !== 'ended') {\n return event.returnValue = (0, _languageHandler._t)(\"You seem to be in a call, are you sure you want to quit?\");\n }\n },\n\n\n onKeyDown: function onKeyDown(ev) {\n var handled = false;\n var ctrlCmdOnly = (0, _Keyboard.isOnlyCtrlOrCmdKeyEvent)(ev);\n\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.KEY_D:\n if (ctrlCmdOnly) {\n this.onMuteAudioClick();\n handled = true;\n }\n break;\n\n case _Keyboard.KeyCode.KEY_E:\n if (ctrlCmdOnly) {\n this.onMuteVideoClick();\n handled = true;\n }\n break;\n }\n\n if (handled) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n case 'message_send_failed':\n case 'message_sent':\n this._checkIfAlone(this.state.room);\n break;\n case 'post_sticker_message':\n this.injectSticker(payload.data.content.url, payload.data.content.info, payload.data.description || payload.data.name);\n break;\n case 'picture_snapshot':\n this.uploadFile(payload.file);\n break;\n case 'notifier_enabled':\n case 'upload_failed':\n case 'upload_started':\n case 'upload_finished':\n this.forceUpdate();\n break;\n case 'call_state':\n // don't filter out payloads for room IDs other than props.room because\n // we may be interested in the conf 1:1 room\n\n if (!payload.room_id) {\n return;\n }\n\n var call = this._getCallForRoom();\n var callState;\n\n if (call) {\n callState = call.call_state;\n } else {\n callState = \"ended\";\n }\n\n // possibly remove the conf call notification if we're now in\n // the conf\n this._updateConfCallNotification();\n\n this.setState({\n callState: callState\n });\n\n break;\n case 'appsDrawer':\n this.setState({\n showApps: payload.show\n });\n break;\n }\n },\n\n onRoomTimeline: function onRoomTimeline(ev, room, toStartOfTimeline, removed, data) {\n if (this.unmounted) return;\n\n // ignore events for other rooms\n if (!room) return;\n if (!this.state.room || room.roomId != this.state.room.roomId) return;\n\n // ignore events from filtered timelines\n if (data.timeline.getTimelineSet() !== room.getUnfilteredTimelineSet()) return;\n\n if (ev.getType() === \"org.matrix.room.preview_urls\") {\n this._updatePreviewUrlVisibility(room);\n }\n\n // ignore anything but real-time updates at the end of the room:\n // updates from pagination will happen when the paginate completes.\n if (toStartOfTimeline || !data || !data.liveEvent) return;\n\n // no point handling anything while we're waiting for the join to finish:\n // we'll only be showing a spinner.\n if (this.state.joining) return;\n\n if (ev.getSender() !== MatrixClientPeg.get().credentials.userId) {\n // update unread count when scrolled up\n if (!this.state.searchResults && this.state.atEndOfLiveTimeline) {\n // no change\n } else if (!(0, _shouldHideEvent2.default)(ev)) {\n this.setState(function (state, props) {\n return { numUnreadMessages: state.numUnreadMessages + 1 };\n });\n }\n }\n },\n\n onRoomName: function onRoomName(room) {\n if (this.state.room && room.roomId == this.state.room.roomId) {\n this.forceUpdate();\n }\n },\n\n canResetTimeline: function canResetTimeline() {\n if (!this.refs.messagePanel) {\n return true;\n }\n return this.refs.messagePanel.canResetTimeline();\n },\n\n // called when state.room is first initialised (either at initial load,\n // after a successful peek, or after we join the room).\n _onRoomLoaded: function _onRoomLoaded(room) {\n this._warnAboutEncryption(room);\n this._calculatePeekRules(room);\n this._updatePreviewUrlVisibility(room);\n this._loadMembersIfJoined(room);\n },\n\n _loadMembersIfJoined: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(room) {\n var cli, errorMessage;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // lazy load members if enabled\n cli = MatrixClientPeg.get();\n\n if (!cli.hasLazyLoadMembersEnabled()) {\n _context.next = 14;\n break;\n }\n\n if (!(room && room.getMyMembership() === 'join')) {\n _context.next = 14;\n break;\n }\n\n _context.prev = 3;\n _context.next = 6;\n return (0, _bluebird.resolve)(room.loadMembersIfNeeded());\n\n case 6:\n if (!this.unmounted) {\n this.setState({ membersLoaded: true });\n }\n _context.next = 14;\n break;\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context[\"catch\"](3);\n errorMessage = \"Fetching room members for \" + room.roomId + \" failed.\" + \" Room members will appear incomplete.\";\n\n console.error(errorMessage);\n console.error(_context.t0);\n\n case 14:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[3, 9]]);\n }));\n\n function _loadMembersIfJoined(_x) {\n return _ref.apply(this, arguments);\n }\n\n return _loadMembersIfJoined;\n }(),\n\n _warnAboutEncryption: function _warnAboutEncryption(room) {\n if (!MatrixClientPeg.get().isRoomEncrypted(room.roomId)) {\n return;\n }\n var userHasUsedEncryption = false;\n if (localStorage) {\n userHasUsedEncryption = localStorage.getItem('mx_user_has_used_encryption');\n }\n if (!userHasUsedEncryption) {\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n Modal.createTrackedDialog('E2E Warning', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Warning!\"),\n hasCancelButton: false,\n description: React.createElement(\n \"div\",\n null,\n React.createElement(\n \"p\",\n null,\n (0, _languageHandler._t)(\"End-to-end encryption is in beta and may not be reliable\"),\n \".\"\n ),\n React.createElement(\n \"p\",\n null,\n (0, _languageHandler._t)(\"You should not yet trust it to secure data\"),\n \".\"\n ),\n React.createElement(\n \"p\",\n null,\n (0, _languageHandler._t)(\"Devices will not yet be able to decrypt history from before they joined the room\"),\n \".\"\n ),\n React.createElement(\n \"p\",\n null,\n (0, _languageHandler._t)(\"Encrypted messages will not be visible on clients that do not yet implement encryption\"),\n \".\"\n )\n )\n });\n }\n if (localStorage) {\n localStorage.setItem('mx_user_has_used_encryption', true);\n }\n },\n\n _calculatePeekRules: function _calculatePeekRules(room) {\n var guestAccessEvent = room.currentState.getStateEvents(\"m.room.guest_access\", \"\");\n if (guestAccessEvent && guestAccessEvent.getContent().guest_access === \"can_join\") {\n this.setState({\n guestsCanJoin: true\n });\n }\n\n var historyVisibility = room.currentState.getStateEvents(\"m.room.history_visibility\", \"\");\n if (historyVisibility && historyVisibility.getContent().history_visibility === \"world_readable\") {\n this.setState({\n canPeek: true\n });\n }\n },\n\n _updatePreviewUrlVisibility: function _updatePreviewUrlVisibility(_ref2) {\n var roomId = _ref2.roomId;\n\n // URL Previews in E2EE rooms can be a privacy leak so use a different setting which is per-room explicit\n var key = MatrixClientPeg.get().isRoomEncrypted(roomId) ? 'urlPreviewsEnabled_e2ee' : 'urlPreviewsEnabled';\n this.setState({\n showUrlPreview: _SettingsStore2.default.getValue(key, roomId)\n });\n },\n\n onRoom: function onRoom(room) {\n var _this2 = this;\n\n if (!room || room.roomId !== this.state.roomId) {\n return;\n }\n this.setState({\n room: room\n }, function () {\n _this2._onRoomLoaded(room);\n });\n },\n\n updateTint: function updateTint() {\n var room = this.state.room;\n if (!room) return;\n\n console.log(\"Tinter.tint from updateTint\");\n var colorScheme = _SettingsStore2.default.getValue(\"roomColor\", room.roomId);\n Tinter.tint(colorScheme.primary_color, colorScheme.secondary_color);\n },\n\n onAccountData: function onAccountData(event) {\n var type = event.getType();\n if ((type === \"org.matrix.preview_urls\" || type === \"im.vector.web.settings\") && this.state.room) {\n // non-e2ee url previews are stored in legacy event type `org.matrix.room.preview_urls`\n this._updatePreviewUrlVisibility(this.state.room);\n }\n },\n\n onRoomAccountData: function onRoomAccountData(event, room) {\n if (room.roomId == this.state.roomId) {\n var type = event.getType();\n if (type === \"org.matrix.room.color_scheme\") {\n var colorScheme = event.getContent();\n // XXX: we should validate the event\n console.log(\"Tinter.tint from onRoomAccountData\");\n Tinter.tint(colorScheme.primary_color, colorScheme.secondary_color);\n } else if (type === \"org.matrix.room.preview_urls\" || type === \"im.vector.web.settings\") {\n // non-e2ee url previews are stored in legacy event type `org.matrix.room.preview_urls`\n this._updatePreviewUrlVisibility(room);\n }\n }\n },\n\n onRoomStateMember: function onRoomStateMember(ev, state, member) {\n // ignore if we don't have a room yet\n if (!this.state.room) {\n return;\n }\n\n // ignore members in other rooms\n if (member.roomId !== this.state.room.roomId) {\n return;\n }\n\n this._updateRoomMembers();\n },\n\n onMyMembership: function onMyMembership(room, membership, oldMembership) {\n if (room.roomId === this.state.roomId) {\n this.forceUpdate();\n this._loadMembersIfJoined(room);\n }\n },\n\n // rate limited because a power level change will emit an event for every\n // member in the room.\n _updateRoomMembers: new rate_limited_func(function () {\n // a member state changed in this room\n // refresh the conf call notification state\n this._updateConfCallNotification();\n this._updateDMState();\n this._checkIfAlone(this.state.room);\n }, 500),\n\n _checkIfAlone: function _checkIfAlone(room) {\n var warnedAboutLonelyRoom = false;\n if (localStorage) {\n warnedAboutLonelyRoom = localStorage.getItem('mx_user_alone_warned_' + this.state.room.roomId);\n }\n if (warnedAboutLonelyRoom) {\n if (this.state.isAlone) this.setState({ isAlone: false });\n return;\n }\n\n var joinedOrInvitedMemberCount = room.getJoinedMemberCount() + room.getInvitedMemberCount();\n this.setState({ isAlone: joinedOrInvitedMemberCount === 1 });\n },\n\n _updateConfCallNotification: function _updateConfCallNotification() {\n var room = this.state.room;\n if (!room || !this.props.ConferenceHandler) {\n return;\n }\n var confMember = room.getMember(this.props.ConferenceHandler.getConferenceUserIdForRoom(room.roomId));\n\n if (!confMember) {\n return;\n }\n var confCall = this.props.ConferenceHandler.getConferenceCallForRoom(confMember.roomId);\n\n // A conf call notification should be displayed if there is an ongoing\n // conf call but this cilent isn't a part of it.\n this.setState({\n displayConfCallNotification: (!confCall || confCall.call_state === \"ended\") && confMember.membership === \"join\"\n });\n },\n\n _updateDMState: function _updateDMState() {\n var room = this.state.room;\n if (room.getMyMembership() != \"join\") {\n return;\n }\n var dmInviter = room.getDMInviter();\n if (dmInviter) {\n Rooms.setDMRoom(room.roomId, dmInviter);\n }\n },\n\n\n onSearchResultsResize: function onSearchResultsResize() {\n dis.dispatch({ action: 'timeline_resize' }, true);\n },\n\n onSearchResultsFillRequest: function onSearchResultsFillRequest(backwards) {\n if (!backwards) {\n return _bluebird2.default.resolve(false);\n }\n\n if (this.state.searchResults.next_batch) {\n debuglog(\"requesting more search results\");\n var searchPromise = MatrixClientPeg.get().backPaginateRoomEventsSearch(this.state.searchResults);\n return this._handleSearchResult(searchPromise);\n } else {\n debuglog(\"no more search results\");\n return _bluebird2.default.resolve(false);\n }\n },\n\n onInviteButtonClick: function onInviteButtonClick() {\n // call AddressPickerDialog\n dis.dispatch({\n action: 'view_invite',\n roomId: this.state.room.roomId\n });\n this.setState({ isAlone: false }); // there's a good chance they'll invite someone\n },\n\n onStopAloneWarningClick: function onStopAloneWarningClick() {\n if (localStorage) {\n localStorage.setItem('mx_user_alone_warned_' + this.state.room.roomId, true);\n }\n this.setState({ isAlone: false });\n },\n\n onJoinButtonClicked: function onJoinButtonClicked(ev) {\n var _this3 = this;\n\n var cli = MatrixClientPeg.get();\n\n // If the user is a ROU, allow them to transition to a PWLU\n if (cli && cli.isGuest()) {\n // Join this room once the user has registered and logged in\n var signUrl = this.props.thirdPartyInvite ? this.props.thirdPartyInvite.inviteSignUrl : undefined;\n dis.dispatch({\n action: 'do_after_sync_prepared',\n deferred_action: {\n action: 'join_room',\n opts: { inviteSignUrl: signUrl }\n }\n });\n\n // Don't peek whilst registering otherwise getPendingEventList complains\n // Do this by indicating our intention to join\n dis.dispatch({\n action: 'will_join'\n });\n\n var SetMxIdDialog = sdk.getComponent('views.dialogs.SetMxIdDialog');\n var close = Modal.createTrackedDialog('Set MXID', '', SetMxIdDialog, {\n homeserverUrl: cli.getHomeserverUrl(),\n onFinished: function onFinished(submitted, credentials) {\n if (submitted) {\n _this3.props.onRegistered(credentials);\n } else {\n dis.dispatch({\n action: 'cancel_after_sync_prepared'\n });\n dis.dispatch({\n action: 'cancel_join'\n });\n }\n },\n onDifferentServerClicked: function onDifferentServerClicked(ev) {\n dis.dispatch({ action: 'start_registration' });\n close();\n },\n onLoginClick: function onLoginClick(ev) {\n dis.dispatch({ action: 'start_login' });\n close();\n }\n }).close;\n return;\n }\n\n _bluebird2.default.resolve().then(function () {\n var signUrl = _this3.props.thirdPartyInvite ? _this3.props.thirdPartyInvite.inviteSignUrl : undefined;\n dis.dispatch({\n action: 'join_room',\n opts: { inviteSignUrl: signUrl }\n });\n return _bluebird2.default.resolve();\n });\n },\n\n onMessageListScroll: function onMessageListScroll(ev) {\n if (this.refs.messagePanel.isAtEndOfLiveTimeline()) {\n this.setState({\n numUnreadMessages: 0,\n atEndOfLiveTimeline: true\n });\n } else {\n this.setState({\n atEndOfLiveTimeline: false\n });\n }\n this._updateTopUnreadMessagesBar();\n },\n\n onDragOver: function onDragOver(ev) {\n ev.stopPropagation();\n ev.preventDefault();\n\n ev.dataTransfer.dropEffect = 'none';\n\n var items = [].concat((0, _toConsumableArray3.default)(ev.dataTransfer.items));\n if (items.length >= 1) {\n var isDraggingFiles = items.every(function (item) {\n return item.kind == 'file';\n });\n\n if (isDraggingFiles) {\n this.setState({ draggingFile: true });\n ev.dataTransfer.dropEffect = 'copy';\n }\n }\n },\n\n onDrop: function onDrop(ev) {\n ev.stopPropagation();\n ev.preventDefault();\n this.setState({ draggingFile: false });\n var files = [].concat((0, _toConsumableArray3.default)(ev.dataTransfer.files));\n files.forEach(this.uploadFile);\n },\n\n onDragLeaveOrEnd: function onDragLeaveOrEnd(ev) {\n ev.stopPropagation();\n ev.preventDefault();\n this.setState({ draggingFile: false });\n },\n\n uploadFile: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(file) {\n var ErrorDialog;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n dis.dispatch({ action: 'focus_composer' });\n\n if (!MatrixClientPeg.get().isGuest()) {\n _context2.next = 4;\n break;\n }\n\n dis.dispatch({ action: 'require_registration' });\n return _context2.abrupt(\"return\");\n\n case 4:\n _context2.prev = 4;\n _context2.next = 7;\n return (0, _bluebird.resolve)(ContentMessages.sendContentToRoom(file, this.state.room.roomId, MatrixClientPeg.get()));\n\n case 7:\n _context2.next = 17;\n break;\n\n case 9:\n _context2.prev = 9;\n _context2.t0 = _context2[\"catch\"](4);\n\n if (!(_context2.t0.name === \"UnknownDeviceError\")) {\n _context2.next = 13;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 13:\n ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n\n console.error(\"Failed to upload file \" + file + \" \" + _context2.t0);\n Modal.createTrackedDialog('Failed to upload file', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to upload file'),\n description: _context2.t0 && _context2.t0.message ? _context2.t0.message : (0, _languageHandler._t)(\"Server may be unavailable, overloaded, or the file too big\")\n });\n\n // bail early to avoid calling the dispatch below\n return _context2.abrupt(\"return\");\n\n case 17:\n\n // Send message_sent callback, for things like _checkIfAlone because after all a file is still a message.\n dis.dispatch({\n action: 'message_sent'\n });\n\n case 18:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[4, 9]]);\n }));\n\n function uploadFile(_x2) {\n return _ref3.apply(this, arguments);\n }\n\n return uploadFile;\n }(),\n\n injectSticker: function injectSticker(url, info, text) {\n if (MatrixClientPeg.get().isGuest()) {\n dis.dispatch({ action: 'require_registration' });\n return;\n }\n\n ContentMessages.sendStickerContentToRoom(url, this.state.room.roomId, info, text, MatrixClientPeg.get()).done(undefined, function (error) {\n if (error.name === \"UnknownDeviceError\") {\n // Let the staus bar handle this\n return;\n }\n });\n },\n\n onSearch: function onSearch(term, scope) {\n this.setState({\n searchTerm: term,\n searchScope: scope,\n searchResults: {},\n searchHighlights: []\n });\n\n // if we already have a search panel, we need to tell it to forget\n // about its scroll state.\n if (this.refs.searchResultsPanel) {\n this.refs.searchResultsPanel.resetScrollState();\n }\n\n // make sure that we don't end up showing results from\n // an aborted search by keeping a unique id.\n //\n // todo: should cancel any previous search requests.\n this.searchId = new Date().getTime();\n\n var filter = void 0;\n if (scope === \"Room\") {\n filter = {\n // XXX: it's unintuitive that the filter for searching doesn't have the same shape as the v2 filter API :(\n rooms: [this.state.room.roomId]\n };\n }\n\n debuglog(\"sending search request\");\n\n var searchPromise = MatrixClientPeg.get().searchRoomEvents({\n filter: filter,\n term: term\n });\n this._handleSearchResult(searchPromise).done();\n },\n\n _handleSearchResult: function _handleSearchResult(searchPromise) {\n var self = this;\n\n // keep a record of the current search id, so that if the search terms\n // change before we get a response, we can ignore the results.\n var localSearchId = this.searchId;\n\n this.setState({\n searchInProgress: true\n });\n\n return searchPromise.then(function (results) {\n debuglog(\"search complete\");\n if (self.unmounted || !self.state.searching || self.searchId != localSearchId) {\n console.error(\"Discarding stale search results\");\n return;\n }\n\n // postgres on synapse returns us precise details of the strings\n // which actually got matched for highlighting.\n //\n // In either case, we want to highlight the literal search term\n // whether it was used by the search engine or not.\n\n var highlights = results.highlights;\n if (highlights.indexOf(self.state.searchTerm) < 0) {\n highlights = highlights.concat(self.state.searchTerm);\n }\n\n // For overlapping highlights,\n // favour longer (more specific) terms first\n highlights = highlights.sort(function (a, b) {\n return b.length - a.length;\n });\n\n self.setState({\n searchHighlights: highlights,\n searchResults: results\n });\n }, function (error) {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Search failed: \" + error);\n Modal.createTrackedDialog('Search failed', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Search failed\"),\n description: error && error.message ? error.message : (0, _languageHandler._t)(\"Server may be unavailable, overloaded, or search timed out :(\")\n });\n }).finally(function () {\n self.setState({\n searchInProgress: false\n });\n });\n },\n\n getSearchResultTiles: function getSearchResultTiles() {\n var _this4 = this;\n\n var EventTile = sdk.getComponent('rooms.EventTile');\n var SearchResultTile = sdk.getComponent('rooms.SearchResultTile');\n var Spinner = sdk.getComponent(\"elements.Spinner\");\n\n var cli = MatrixClientPeg.get();\n\n // XXX: todo: merge overlapping results somehow?\n // XXX: why doesn't searching on name work?\n\n if (this.state.searchResults.results === undefined) {\n // awaiting results\n return [];\n }\n\n var ret = [];\n\n if (this.state.searchInProgress) {\n ret.push(React.createElement(\n \"li\",\n { key: \"search-spinner\" },\n React.createElement(Spinner, null)\n ));\n }\n\n if (!this.state.searchResults.next_batch) {\n if (this.state.searchResults.results.length == 0) {\n ret.push(React.createElement(\n \"li\",\n { key: \"search-top-marker\" },\n React.createElement(\n \"h2\",\n { className: \"mx_RoomView_topMarker\" },\n (0, _languageHandler._t)(\"No results\")\n )\n ));\n } else {\n ret.push(React.createElement(\n \"li\",\n { key: \"search-top-marker\" },\n React.createElement(\n \"h2\",\n { className: \"mx_RoomView_topMarker\" },\n (0, _languageHandler._t)(\"No more results\")\n )\n ));\n }\n }\n\n // once dynamic content in the search results load, make the scrollPanel check\n // the scroll offsets.\n var onWidgetLoad = function onWidgetLoad() {\n var scrollPanel = _this4.refs.searchResultsPanel;\n if (scrollPanel) {\n scrollPanel.checkScroll();\n }\n };\n\n var lastRoomId = void 0;\n\n for (var i = this.state.searchResults.results.length - 1; i >= 0; i--) {\n var result = this.state.searchResults.results[i];\n\n var mxEv = result.context.getEvent();\n var roomId = mxEv.getRoomId();\n\n if (!EventTile.haveTileForEvent(mxEv)) {\n // XXX: can this ever happen? It will make the result count\n // not match the displayed count.\n continue;\n }\n\n if (this.state.searchScope === 'All') {\n if (roomId != lastRoomId) {\n var room = cli.getRoom(roomId);\n\n // XXX: if we've left the room, we might not know about\n // it. We should tell the js sdk to go and find out about\n // it. But that's not an issue currently, as synapse only\n // returns results for rooms we're joined to.\n var roomName = room ? room.name : (0, _languageHandler._t)(\"Unknown room %(roomId)s\", { roomId: roomId });\n\n ret.push(React.createElement(\n \"li\",\n { key: mxEv.getId() + \"-room\" },\n React.createElement(\n \"h1\",\n null,\n (0, _languageHandler._t)(\"Room\"),\n \": \",\n roomName\n )\n ));\n lastRoomId = roomId;\n }\n }\n\n var resultLink = \"#/room/\" + roomId + \"/\" + mxEv.getId();\n\n ret.push(React.createElement(SearchResultTile, { key: mxEv.getId(),\n searchResult: result,\n searchHighlights: this.state.searchHighlights,\n resultLink: resultLink,\n onWidgetLoad: onWidgetLoad }));\n }\n return ret;\n },\n\n onPinnedClick: function onPinnedClick() {\n var nowShowingPinned = !this.state.showingPinned;\n var roomId = this.state.room.roomId;\n this.setState({ showingPinned: nowShowingPinned, searching: false });\n _SettingsStore2.default.setValue(\"PinnedEvents.isOpen\", roomId, _SettingsStore.SettingLevel.ROOM_DEVICE, nowShowingPinned);\n },\n\n onSettingsClick: function onSettingsClick() {\n dis.dispatch({ action: 'open_room_settings' });\n },\n\n onSettingsSaveClick: function onSettingsSaveClick() {\n var _this5 = this;\n\n if (!this.refs.room_settings) return;\n\n this.setState({\n uploadingRoomSettings: true\n });\n\n var newName = this.refs.header.getEditedName();\n if (newName !== undefined) {\n this.refs.room_settings.setName(newName);\n }\n var newTopic = this.refs.header.getEditedTopic();\n if (newTopic !== undefined) {\n this.refs.room_settings.setTopic(newTopic);\n }\n\n this.refs.room_settings.save().then(function (results) {\n var fails = results.filter(function (result) {\n return result.state !== \"fulfilled\";\n });\n console.log(\"Settings saved with %s errors\", fails.length);\n if (fails.length) {\n fails.forEach(function (result) {\n console.error(result.reason);\n });\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Failed to save room settings', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to save settings\"),\n description: fails.map(function (result) {\n return result.reason;\n }).join(\"\\n\")\n });\n // still editing room settings\n } else {\n dis.dispatch({ action: 'close_settings' });\n }\n }).finally(function () {\n _this5.setState({\n uploadingRoomSettings: false\n });\n dis.dispatch({ action: 'close_settings' });\n }).done();\n },\n\n onCancelClick: function onCancelClick() {\n console.log(\"updateTint from onCancelClick\");\n this.updateTint();\n dis.dispatch({ action: 'close_settings' });\n if (this.state.forwardingEvent) {\n dis.dispatch({\n action: 'forward_event',\n event: null\n });\n }\n dis.dispatch({ action: 'focus_composer' });\n },\n\n onLeaveClick: function onLeaveClick() {\n dis.dispatch({\n action: 'leave_room',\n room_id: this.state.room.roomId\n });\n },\n\n onForgetClick: function onForgetClick() {\n MatrixClientPeg.get().forget(this.state.room.roomId).done(function () {\n dis.dispatch({ action: 'view_next_room' });\n }, function (err) {\n var errCode = err.errcode || (0, _languageHandler._t)(\"unknown error code\");\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Failed to forget room', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Failed to forget room %(errCode)s\", { errCode: errCode })\n });\n });\n },\n\n onRejectButtonClicked: function onRejectButtonClicked(ev) {\n var self = this;\n this.setState({\n rejecting: true\n });\n MatrixClientPeg.get().leave(this.state.roomId).done(function () {\n dis.dispatch({ action: 'view_next_room' });\n self.setState({\n rejecting: false\n });\n }, function (error) {\n console.error(\"Failed to reject invite: %s\", error);\n\n var msg = error.message ? error.message : (0, _stringify2.default)(error);\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Failed to reject invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to reject invite\"),\n description: msg\n });\n\n self.setState({\n rejecting: false,\n rejectError: error\n });\n });\n },\n\n onRejectThreepidInviteButtonClicked: function onRejectThreepidInviteButtonClicked(ev) {\n // We can reject 3pid invites in the same way that we accept them,\n // using /leave rather than /join. In the short term though, we\n // just ignore them.\n // https://github.com/vector-im/vector-web/issues/1134\n dis.dispatch({\n action: 'view_room_directory'\n });\n },\n\n onSearchClick: function onSearchClick() {\n this.setState({ searching: true, showingPinned: false });\n },\n\n onCancelSearchClick: function onCancelSearchClick() {\n this.setState({\n searching: false,\n searchResults: null\n });\n },\n\n // jump down to the bottom of this room, where new events are arriving\n jumpToLiveTimeline: function jumpToLiveTimeline() {\n this.refs.messagePanel.jumpToLiveTimeline();\n dis.dispatch({ action: 'focus_composer' });\n },\n\n // jump up to wherever our read marker is\n jumpToReadMarker: function jumpToReadMarker() {\n this.refs.messagePanel.jumpToReadMarker();\n },\n\n // update the read marker to match the read-receipt\n forgetReadMarker: function forgetReadMarker(ev) {\n ev.stopPropagation();\n this.refs.messagePanel.forgetReadMarker();\n },\n\n // decide whether or not the top 'unread messages' bar should be shown\n _updateTopUnreadMessagesBar: function _updateTopUnreadMessagesBar() {\n if (!this.refs.messagePanel) {\n return;\n }\n\n var showBar = this.refs.messagePanel.canJumpToReadMarker();\n if (this.state.showTopUnreadMessagesBar != showBar) {\n this.setState({ showTopUnreadMessagesBar: showBar }, this.onChildResize);\n }\n },\n\n // get the current scroll position of the room, so that it can be\n // restored when we switch back to it.\n //\n _getScrollState: function _getScrollState() {\n var messagePanel = this.refs.messagePanel;\n if (!messagePanel) return null;\n\n // if we're following the live timeline, we want to return null; that\n // means that, if we switch back, we will jump to the read-up-to mark.\n //\n // That should be more intuitive than slavishly preserving the current\n // scroll state, in the case where the room advances in the meantime\n // (particularly in the case that the user reads some stuff on another\n // device).\n //\n if (this.state.atEndOfLiveTimeline) {\n return null;\n }\n\n var scrollState = messagePanel.getScrollState();\n\n if (scrollState.stuckAtBottom) {\n // we don't really expect to be in this state, but it will\n // occasionally happen when no scroll state has been set on the\n // messagePanel (ie, we didn't have an initial event (so it's\n // probably a new room), there has been no user-initiated scroll, and\n // no read-receipts have arrived to update the scroll position).\n //\n // Return null, which will cause us to scroll to last unread on\n // reload.\n return null;\n }\n\n return {\n focussedEvent: scrollState.trackedScrollToken,\n pixelOffset: scrollState.pixelOffset\n };\n },\n\n onResize: function onResize(e) {\n // It seems flexbox doesn't give us a way to constrain the auxPanel height to have\n // a minimum of the height of the video element, whilst also capping it from pushing out the page\n // so we have to do it via JS instead. In this implementation we cap the height by putting\n // a maxHeight on the underlying remote video tag.\n\n // header + footer + status + give us at least 120px of scrollback at all times.\n var auxPanelMaxHeight = window.innerHeight - (83 + // height of RoomHeader\n 36 + // height of the status area\n 72 + ( // minimum height of the message compmoser\n this.state.editingRoomSettings ? window.innerHeight * 0.3 : 120)); // amount of desired scrollback\n\n // XXX: this is a bit of a hack and might possibly cause the video to push out the page anyway\n // but it's better than the video going missing entirely\n if (auxPanelMaxHeight < 50) auxPanelMaxHeight = 50;\n\n this.setState({ auxPanelMaxHeight: auxPanelMaxHeight });\n\n // changing the maxHeight on the auxpanel will trigger a callback go\n // onChildResize, so no need to worry about that here.\n },\n\n onFullscreenClick: function onFullscreenClick() {\n dis.dispatch({\n action: 'video_fullscreen',\n fullscreen: true\n }, true);\n },\n\n onMuteAudioClick: function onMuteAudioClick() {\n var call = this._getCallForRoom();\n if (!call) {\n return;\n }\n var newState = !call.isMicrophoneMuted();\n call.setMicrophoneMuted(newState);\n this.forceUpdate(); // TODO: just update the voip buttons\n },\n\n onMuteVideoClick: function onMuteVideoClick() {\n var call = this._getCallForRoom();\n if (!call) {\n return;\n }\n var newState = !call.isLocalVideoMuted();\n call.setLocalVideoMuted(newState);\n this.forceUpdate(); // TODO: just update the voip buttons\n },\n\n onChildResize: function onChildResize() {\n // no longer anything to do here\n },\n\n onStatusBarVisible: function onStatusBarVisible() {\n if (this.unmounted) return;\n this.setState({\n statusBarVisible: true\n });\n },\n\n onStatusBarHidden: function onStatusBarHidden() {\n // This is currently not desired as it is annoying if it keeps expanding and collapsing\n // TODO: Find a less annoying way of hiding the status bar\n /*if (this.unmounted) return;\n this.setState({\n statusBarVisible: false,\n });*/\n },\n\n /**\n * called by the parent component when PageUp/Down/etc is pressed.\n *\n * We pass it down to the scroll panel.\n */\n handleScrollKey: function handleScrollKey(ev) {\n var panel = void 0;\n if (this.refs.searchResultsPanel) {\n panel = this.refs.searchResultsPanel;\n } else if (this.refs.messagePanel) {\n panel = this.refs.messagePanel;\n }\n\n if (panel) {\n panel.handleScrollKey(ev);\n }\n },\n\n /**\n * get any current call for this room\n */\n _getCallForRoom: function _getCallForRoom() {\n if (!this.state.room) {\n return null;\n }\n return CallHandler.getCallForRoom(this.state.room.roomId);\n },\n\n // this has to be a proper method rather than an unnamed function,\n // otherwise react calls it with null on each update.\n _gatherTimelinePanelRef: function _gatherTimelinePanelRef(r) {\n this.refs.messagePanel = r;\n if (r) {\n console.log(\"updateTint from RoomView._gatherTimelinePanelRef\");\n this.updateTint();\n }\n },\n\n render: function render() {\n var RoomHeader = sdk.getComponent('rooms.RoomHeader');\n var MessageComposer = sdk.getComponent('rooms.MessageComposer');\n var ForwardMessage = sdk.getComponent(\"rooms.ForwardMessage\");\n var RoomSettings = sdk.getComponent(\"rooms.RoomSettings\");\n var AuxPanel = sdk.getComponent(\"rooms.AuxPanel\");\n var SearchBar = sdk.getComponent(\"rooms.SearchBar\");\n var PinnedEventsPanel = sdk.getComponent(\"rooms.PinnedEventsPanel\");\n var ScrollPanel = sdk.getComponent(\"structures.ScrollPanel\");\n var TintableSvg = sdk.getComponent(\"elements.TintableSvg\");\n var RoomPreviewBar = sdk.getComponent(\"rooms.RoomPreviewBar\");\n var Loader = sdk.getComponent(\"elements.Spinner\");\n var TimelinePanel = sdk.getComponent(\"structures.TimelinePanel\");\n var RoomUpgradeWarningBar = sdk.getComponent(\"rooms.RoomUpgradeWarningBar\");\n\n if (!this.state.room) {\n if (this.state.roomLoading || this.state.peekLoading) {\n return React.createElement(\n \"div\",\n { className: \"mx_RoomView\" },\n React.createElement(Loader, null)\n );\n } else {\n var inviterName = undefined;\n if (this.props.oobData) {\n inviterName = this.props.oobData.inviterName;\n }\n var invitedEmail = undefined;\n if (this.props.thirdPartyInvite) {\n invitedEmail = this.props.thirdPartyInvite.invitedEmail;\n }\n\n // We have no room object for this room, only the ID.\n // We've got to this room by following a link, possibly a third party invite.\n var roomAlias = this.state.roomAlias;\n return React.createElement(\n \"div\",\n { className: \"mx_RoomView\" },\n React.createElement(RoomHeader, { ref: \"header\",\n room: this.state.room,\n oobData: this.props.oobData,\n collapsedRhs: this.props.collapsedRhs\n }),\n React.createElement(\n \"div\",\n { className: \"mx_RoomView_auxPanel\" },\n React.createElement(RoomPreviewBar, { onJoinClick: this.onJoinButtonClicked,\n onForgetClick: this.onForgetClick,\n onRejectClick: this.onRejectThreepidInviteButtonClicked,\n canPreview: false, error: this.state.roomLoadError,\n roomAlias: roomAlias,\n spinner: this.state.joining,\n spinnerState: \"joining\",\n inviterName: inviterName,\n invitedEmail: invitedEmail,\n room: this.state.room\n })\n ),\n React.createElement(\"div\", { className: \"mx_RoomView_messagePanel\" })\n );\n }\n }\n\n var myMembership = this.state.room.getMyMembership();\n if (myMembership == 'invite') {\n if (this.state.joining || this.state.rejecting) {\n return React.createElement(\n \"div\",\n { className: \"mx_RoomView\" },\n React.createElement(Loader, null)\n );\n } else {\n var myUserId = MatrixClientPeg.get().credentials.userId;\n var myMember = this.state.room.getMember(myUserId);\n var inviteEvent = myMember.events.member;\n var inviterName = inviteEvent.sender ? inviteEvent.sender.name : inviteEvent.getSender();\n\n // We deliberately don't try to peek into invites, even if we have permission to peek\n // as they could be a spam vector.\n // XXX: in future we could give the option of a 'Preview' button which lets them view anyway.\n\n // We have a regular invite for this room.\n return React.createElement(\n \"div\",\n { className: \"mx_RoomView\" },\n React.createElement(RoomHeader, {\n ref: \"header\",\n room: this.state.room,\n collapsedRhs: this.props.collapsedRhs\n }),\n React.createElement(\n \"div\",\n { className: \"mx_RoomView_auxPanel\" },\n React.createElement(RoomPreviewBar, { onJoinClick: this.onJoinButtonClicked,\n onForgetClick: this.onForgetClick,\n onRejectClick: this.onRejectButtonClicked,\n inviterName: inviterName,\n canPreview: false,\n spinner: this.state.joining,\n spinnerState: \"joining\",\n room: this.state.room\n })\n ),\n React.createElement(\"div\", { className: \"mx_RoomView_messagePanel\" })\n );\n }\n }\n\n // We have successfully loaded this room, and are not previewing.\n // Display the \"normal\" room view.\n\n var call = this._getCallForRoom();\n var inCall = false;\n if (call && this.state.callState !== 'ended' && this.state.callState !== 'ringing') {\n inCall = true;\n }\n\n var scrollheader_classes = classNames({\n mx_RoomView_scrollheader: true\n });\n\n var statusBar = void 0;\n var isStatusAreaExpanded = true;\n\n if (ContentMessages.getCurrentUploads().length > 0) {\n var UploadBar = sdk.getComponent('structures.UploadBar');\n statusBar = React.createElement(UploadBar, { room: this.state.room });\n } else if (!this.state.searchResults) {\n var RoomStatusBar = sdk.getComponent('structures.RoomStatusBar');\n isStatusAreaExpanded = this.state.statusBarVisible;\n statusBar = React.createElement(RoomStatusBar, {\n room: this.state.room,\n numUnreadMessages: this.state.numUnreadMessages,\n atEndOfLiveTimeline: this.state.atEndOfLiveTimeline,\n sentMessageAndIsAlone: this.state.isAlone,\n hasActiveCall: inCall,\n isPeeking: myMembership !== \"join\",\n onInviteClick: this.onInviteButtonClick,\n onStopWarningClick: this.onStopAloneWarningClick,\n onScrollToBottomClick: this.jumpToLiveTimeline,\n onResize: this.onChildResize,\n onVisible: this.onStatusBarVisible,\n onHidden: this.onStatusBarHidden,\n whoIsTypingLimit: 3\n });\n }\n\n var showRoomUpgradeBar = this.state.room.shouldUpgradeToVersion() && this.state.room.userMayUpgradeRoom(MatrixClientPeg.get().credentials.userId);\n\n var aux = null;\n var hideCancel = false;\n if (this.state.editingRoomSettings) {\n aux = React.createElement(RoomSettings, { ref: \"room_settings\", onSaveClick: this.onSettingsSaveClick, onCancelClick: this.onCancelClick, room: this.state.room });\n } else if (this.state.uploadingRoomSettings) {\n aux = React.createElement(Loader, null);\n } else if (this.state.forwardingEvent !== null) {\n aux = React.createElement(ForwardMessage, { onCancelClick: this.onCancelClick });\n } else if (this.state.searching) {\n hideCancel = true; // has own cancel\n aux = React.createElement(SearchBar, { ref: \"search_bar\", searchInProgress: this.state.searchInProgress, onCancelClick: this.onCancelSearchClick, onSearch: this.onSearch });\n } else if (showRoomUpgradeBar) {\n aux = React.createElement(RoomUpgradeWarningBar, { room: this.state.room });\n hideCancel = true;\n } else if (this.state.showingPinned) {\n hideCancel = true; // has own cancel\n aux = React.createElement(PinnedEventsPanel, { room: this.state.room, onCancelClick: this.onPinnedClick });\n } else if (myMembership !== \"join\") {\n // We do have a room object for this room, but we're not currently in it.\n // We may have a 3rd party invite to it.\n var inviterName = undefined;\n if (this.props.oobData) {\n inviterName = this.props.oobData.inviterName;\n }\n var invitedEmail = undefined;\n if (this.props.thirdPartyInvite) {\n invitedEmail = this.props.thirdPartyInvite.invitedEmail;\n }\n hideCancel = true;\n aux = React.createElement(RoomPreviewBar, { onJoinClick: this.onJoinButtonClicked,\n onForgetClick: this.onForgetClick,\n onRejectClick: this.onRejectThreepidInviteButtonClicked,\n spinner: this.state.joining,\n spinnerState: \"joining\",\n inviterName: inviterName,\n invitedEmail: invitedEmail,\n canPreview: this.state.canPeek,\n room: this.state.room\n });\n }\n\n var auxPanel = React.createElement(\n AuxPanel,\n { ref: \"auxPanel\", room: this.state.room,\n userId: MatrixClientPeg.get().credentials.userId,\n conferenceHandler: this.props.ConferenceHandler,\n draggingFile: this.state.draggingFile,\n displayConfCallNotification: this.state.displayConfCallNotification,\n maxHeight: this.state.auxPanelMaxHeight,\n onResize: this.onChildResize,\n showApps: this.state.showApps,\n hideAppsDrawer: this.state.editingRoomSettings },\n aux\n );\n\n var messageComposer = void 0,\n searchInfo = void 0;\n var canSpeak =\n // joined and not showing search results\n myMembership === 'join' && !this.state.searchResults;\n if (canSpeak) {\n messageComposer = React.createElement(MessageComposer, {\n room: this.state.room,\n onResize: this.onChildResize,\n uploadFile: this.uploadFile,\n callState: this.state.callState,\n disabled: this.props.disabled,\n showApps: this.state.showApps\n });\n }\n\n if (MatrixClientPeg.get().isGuest()) {\n var LoginBox = sdk.getComponent('structures.LoginBox');\n messageComposer = React.createElement(LoginBox, null);\n }\n\n // TODO: Why aren't we storing the term/scope/count in this format\n // in this.state if this is what RoomHeader desires?\n if (this.state.searchResults) {\n searchInfo = {\n searchTerm: this.state.searchTerm,\n searchScope: this.state.searchScope,\n searchCount: this.state.searchResults.count\n };\n }\n\n if (inCall) {\n var zoomButton = void 0,\n voiceMuteButton = void 0,\n videoMuteButton = void 0;\n\n if (call.type === \"video\") {\n zoomButton = React.createElement(\n \"div\",\n { className: \"mx_RoomView_voipButton\", onClick: this.onFullscreenClick, title: (0, _languageHandler._t)(\"Fill screen\") },\n React.createElement(TintableSvg, { src: \"img/fullscreen.svg\", width: \"29\", height: \"22\", style: { marginTop: 1, marginRight: 4 } })\n );\n\n videoMuteButton = React.createElement(\n \"div\",\n { className: \"mx_RoomView_voipButton\", onClick: this.onMuteVideoClick },\n React.createElement(TintableSvg, { src: call.isLocalVideoMuted() ? \"img/video-unmute.svg\" : \"img/video-mute.svg\",\n alt: call.isLocalVideoMuted() ? (0, _languageHandler._t)(\"Click to unmute video\") : (0, _languageHandler._t)(\"Click to mute video\"),\n width: \"31\", height: \"27\" })\n );\n }\n voiceMuteButton = React.createElement(\n \"div\",\n { className: \"mx_RoomView_voipButton\", onClick: this.onMuteAudioClick },\n React.createElement(TintableSvg, { src: call.isMicrophoneMuted() ? \"img/voice-unmute.svg\" : \"img/voice-mute.svg\",\n alt: call.isMicrophoneMuted() ? (0, _languageHandler._t)(\"Click to unmute audio\") : (0, _languageHandler._t)(\"Click to mute audio\"),\n width: \"21\", height: \"26\" })\n );\n\n // wrap the existing status bar into a 'callStatusBar' which adds more knobs.\n statusBar = React.createElement(\n \"div\",\n { className: \"mx_RoomView_callStatusBar\" },\n voiceMuteButton,\n videoMuteButton,\n zoomButton,\n statusBar,\n React.createElement(TintableSvg, { className: \"mx_RoomView_voipChevron\", src: \"img/voip-chevron.svg\", width: \"22\", height: \"17\" })\n );\n }\n\n // if we have search results, we keep the messagepanel (so that it preserves its\n // scroll state), but hide it.\n var searchResultsPanel = void 0;\n var hideMessagePanel = false;\n\n if (this.state.searchResults) {\n searchResultsPanel = React.createElement(\n ScrollPanel,\n { ref: \"searchResultsPanel\",\n className: \"mx_RoomView_messagePanel mx_RoomView_searchResultsPanel\",\n onFillRequest: this.onSearchResultsFillRequest,\n onResize: this.onSearchResultsResize\n },\n React.createElement(\"li\", { className: scrollheader_classes }),\n this.getSearchResultTiles()\n );\n hideMessagePanel = true;\n }\n\n var shouldHighlight = this.state.isInitialEventHighlighted;\n var highlightedEventId = null;\n if (this.state.forwardingEvent) {\n highlightedEventId = this.state.forwardingEvent.getId();\n } else if (shouldHighlight) {\n highlightedEventId = this.state.initialEventId;\n }\n\n // console.log(\"ShowUrlPreview for %s is %s\", this.state.room.roomId, this.state.showUrlPreview);\n var messagePanel = React.createElement(TimelinePanel, { ref: this._gatherTimelinePanelRef,\n timelineSet: this.state.room.getUnfilteredTimelineSet(),\n showReadReceipts: !_SettingsStore2.default.getValue('hideReadReceipts'),\n manageReadReceipts: !this.state.isPeeking,\n manageReadMarkers: !this.state.isPeeking,\n hidden: hideMessagePanel,\n highlightedEventId: highlightedEventId,\n eventId: this.state.initialEventId,\n eventPixelOffset: this.state.initialEventPixelOffset,\n onScroll: this.onMessageListScroll,\n onReadMarkerUpdated: this._updateTopUnreadMessagesBar,\n showUrlPreview: this.state.showUrlPreview,\n className: \"mx_RoomView_messagePanel\",\n membersLoaded: this.state.membersLoaded\n });\n\n var topUnreadMessagesBar = null;\n if (this.state.showTopUnreadMessagesBar) {\n var TopUnreadMessagesBar = sdk.getComponent('rooms.TopUnreadMessagesBar');\n topUnreadMessagesBar = React.createElement(\n \"div\",\n { className: \"mx_RoomView_topUnreadMessagesBar\" },\n React.createElement(TopUnreadMessagesBar, {\n onScrollUpClick: this.jumpToReadMarker,\n onCloseClick: this.forgetReadMarker\n })\n );\n }\n var statusBarAreaClass = classNames(\"mx_RoomView_statusArea\", {\n \"mx_RoomView_statusArea_expanded\": isStatusAreaExpanded\n });\n\n var fadableSectionClasses = classNames(\"mx_RoomView_body\", \"mx_fadable\", {\n \"mx_fadable_faded\": this.props.disabled\n });\n\n return React.createElement(\n \"div\",\n { className: \"mx_RoomView\" + (inCall ? \" mx_RoomView_inCall\" : \"\"), ref: \"roomView\" },\n React.createElement(RoomHeader, { ref: \"header\", room: this.state.room, searchInfo: searchInfo,\n oobData: this.props.oobData,\n editing: this.state.editingRoomSettings,\n saving: this.state.uploadingRoomSettings,\n inRoom: myMembership === 'join',\n collapsedRhs: this.props.collapsedRhs,\n onSearchClick: this.onSearchClick,\n onSettingsClick: this.onSettingsClick,\n onPinnedClick: this.onPinnedClick,\n onSaveClick: this.onSettingsSaveClick,\n onCancelClick: aux && !hideCancel ? this.onCancelClick : null,\n onForgetClick: myMembership === \"leave\" ? this.onForgetClick : null,\n onLeaveClick: myMembership === \"join\" ? this.onLeaveClick : null\n }),\n auxPanel,\n React.createElement(\n \"div\",\n { className: fadableSectionClasses },\n topUnreadMessagesBar,\n messagePanel,\n searchResultsPanel,\n React.createElement(\n \"div\",\n { className: statusBarAreaClass },\n React.createElement(\n \"div\",\n { className: \"mx_RoomView_statusAreaBox\" },\n React.createElement(\"div\", { className: \"mx_RoomView_statusAreaBox_line\" }),\n statusBar\n )\n ),\n messageComposer\n )\n );\n }\n});\n//# sourceMappingURL=RoomView.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Stores where the user has scrolled to in each room\n */\nvar RoomScrollStateStore = function () {\n function RoomScrollStateStore() {\n (0, _classCallCheck3.default)(this, RoomScrollStateStore);\n\n // A map from room id to scroll state.\n //\n // If there is no special scroll state (ie, we are following the live\n // timeline), the scroll state is null. Otherwise, it is an object with\n // the following properties:\n //\n // focussedEvent: the ID of the 'focussed' event. Typically this is\n // the last event fully visible in the viewport, though if we\n // have done an explicit scroll to an explicit event, it will be\n // that event.\n //\n // pixelOffset: the number of pixels the window is scrolled down\n // from the focussedEvent.\n this._scrollStateMap = {};\n }\n\n (0, _createClass3.default)(RoomScrollStateStore, [{\n key: \"getScrollState\",\n value: function getScrollState(roomId) {\n return this._scrollStateMap[roomId];\n }\n }, {\n key: \"setScrollState\",\n value: function setScrollState(roomId, scrollState) {\n this._scrollStateMap[roomId] = scrollState;\n }\n }]);\n return RoomScrollStateStore;\n}();\n\nif (global.mx_RoomScrollStateStore === undefined) {\n global.mx_RoomScrollStateStore = new RoomScrollStateStore();\n}\nexports.default = global.mx_RoomScrollStateStore;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=RoomScrollStateStore.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nmodule.exports = function (dest, src) {\n for (var i in src) {\n if (src.hasOwnProperty(i)) {\n dest[i] = src[i];\n }\n }\n return dest;\n};\n//# sourceMappingURL=extend.js.map","/*\n * JavaScript Canvas to Blob\n * https://github.com/blueimp/JavaScript-Canvas-to-Blob\n *\n * Copyright 2012, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on stackoverflow user Stoive's code snippet:\n * http://stackoverflow.com/q/4998908\n */\n\n/* global atob, Blob, define */\n\n;(function (window) {\n 'use strict'\n\n var CanvasPrototype =\n window.HTMLCanvasElement && window.HTMLCanvasElement.prototype\n var hasBlobConstructor =\n window.Blob &&\n (function () {\n try {\n return Boolean(new Blob())\n } catch (e) {\n return false\n }\n })()\n var hasArrayBufferViewSupport =\n hasBlobConstructor &&\n window.Uint8Array &&\n (function () {\n try {\n return new Blob([new Uint8Array(100)]).size === 100\n } catch (e) {\n return false\n }\n })()\n var BlobBuilder =\n window.BlobBuilder ||\n window.WebKitBlobBuilder ||\n window.MozBlobBuilder ||\n window.MSBlobBuilder\n var dataURIPattern = /^data:((.*?)(;charset=.*?)?)(;base64)?,/\n var dataURLtoBlob =\n (hasBlobConstructor || BlobBuilder) &&\n window.atob &&\n window.ArrayBuffer &&\n window.Uint8Array &&\n function (dataURI) {\n var matches,\n mediaType,\n isBase64,\n dataString,\n byteString,\n arrayBuffer,\n intArray,\n i,\n bb\n // Parse the dataURI components as per RFC 2397\n matches = dataURI.match(dataURIPattern)\n if (!matches) {\n throw new Error('invalid data URI')\n }\n // Default to text/plain;charset=US-ASCII\n mediaType = matches[2]\n ? matches[1]\n : 'text/plain' + (matches[3] || ';charset=US-ASCII')\n isBase64 = !!matches[4]\n dataString = dataURI.slice(matches[0].length)\n if (isBase64) {\n // Convert base64 to raw binary data held in a string:\n byteString = atob(dataString)\n } else {\n // Convert base64/URLEncoded data component to raw binary:\n byteString = decodeURIComponent(dataString)\n }\n // Write the bytes of the string to an ArrayBuffer:\n arrayBuffer = new ArrayBuffer(byteString.length)\n intArray = new Uint8Array(arrayBuffer)\n for (i = 0; i < byteString.length; i += 1) {\n intArray[i] = byteString.charCodeAt(i)\n }\n // Write the ArrayBuffer (or ArrayBufferView) to a blob:\n if (hasBlobConstructor) {\n return new Blob([hasArrayBufferViewSupport ? intArray : arrayBuffer], {\n type: mediaType\n })\n }\n bb = new BlobBuilder()\n bb.append(arrayBuffer)\n return bb.getBlob(mediaType)\n }\n if (window.HTMLCanvasElement && !CanvasPrototype.toBlob) {\n if (CanvasPrototype.mozGetAsFile) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this\n setTimeout(function () {\n if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) {\n callback(dataURLtoBlob(self.toDataURL(type, quality)))\n } else {\n callback(self.mozGetAsFile('blob', type))\n }\n })\n }\n } else if (CanvasPrototype.toDataURL && dataURLtoBlob) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this\n setTimeout(function () {\n callback(dataURLtoBlob(self.toDataURL(type, quality)))\n })\n }\n }\n }\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return dataURLtoBlob\n })\n } else if (typeof module === 'object' && module.exports) {\n module.exports = dataURLtoBlob\n } else {\n window.dataURLtoBlob = dataURLtoBlob\n }\n})(window)\n","\"use strict\";\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _Keyboard = require(\"../../Keyboard\");\n\nvar _index = require(\"../../index.js\");\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require(\"react\");\nvar ReactDOM = require(\"react-dom\");\n\n\nvar DEBUG_SCROLL = false;\n// var DEBUG_SCROLL = true;\n\n// The amount of extra scroll distance to allow prior to unfilling.\n// See _getExcessHeight.\nvar UNPAGINATION_PADDING = 6000;\n// The number of milliseconds to debounce calls to onUnfillRequest, to prevent\n// many scroll events causing many unfilling requests.\nvar UNFILL_REQUEST_DEBOUNCE_MS = 200;\n\nif (DEBUG_SCROLL) {\n // using bind means that we get to keep useful line numbers in the console\n var debuglog = console.log.bind(console);\n} else {\n var debuglog = function debuglog() {};\n}\n\n/* This component implements an intelligent scrolling list.\n *\n * It wraps a list of <li> children; when items are added to the start or end\n * of the list, the scroll position is updated so that the user still sees the\n * same position in the list.\n *\n * It also provides a hook which allows parents to provide more list elements\n * when we get close to the start or end of the list.\n *\n * Each child element should have a 'data-scroll-tokens'. This string of\n * comma-separated tokens may contain a single token or many, where many indicates\n * that the element contains elements that have scroll tokens themselves. The first\n * token in 'data-scroll-tokens' is used to serialise the scroll state, and returned\n * as the 'trackedScrollToken' attribute by getScrollState().\n *\n * IMPORTANT: INDIVIDUAL TOKENS WITHIN 'data-scroll-tokens' MUST NOT CONTAIN COMMAS.\n *\n * Some notes about the implementation:\n *\n * The saved 'scrollState' can exist in one of two states:\n *\n * - stuckAtBottom: (the default, and restored by resetScrollState): the\n * viewport is scrolled down as far as it can be. When the children are\n * updated, the scroll position will be updated to ensure it is still at\n * the bottom.\n *\n * - fixed, in which the viewport is conceptually tied at a specific scroll\n * offset. We don't save the absolute scroll offset, because that would be\n * affected by window width, zoom level, amount of scrollback, etc. Instead\n * we save an identifier for the last fully-visible message, and the number\n * of pixels the window was scrolled below it - which is hopefully near\n * enough.\n *\n * The 'stickyBottom' property controls the behaviour when we reach the bottom\n * of the window (either through a user-initiated scroll, or by calling\n * scrollToBottom). If stickyBottom is enabled, the scrollState will enter\n * 'stuckAtBottom' state - ensuring that new additions cause the window to\n * scroll down further. If stickyBottom is disabled, we just save the scroll\n * offset as normal.\n */\nmodule.exports = React.createClass({\n displayName: 'ScrollPanel',\n\n propTypes: {\n /* stickyBottom: if set to true, then once the user hits the bottom of\n * the list, any new children added to the list will cause the list to\n * scroll down to show the new element, rather than preserving the\n * existing view.\n */\n stickyBottom: _propTypes2.default.bool,\n\n /* startAtBottom: if set to true, the view is assumed to start\n * scrolled to the bottom.\n * XXX: It's likley this is unecessary and can be derived from\n * stickyBottom, but I'm adding an extra parameter to ensure\n * behaviour stays the same for other uses of ScrollPanel.\n * If so, let's remove this parameter down the line.\n */\n startAtBottom: _propTypes2.default.bool,\n\n /* onFillRequest(backwards): a callback which is called on scroll when\n * the user nears the start (backwards = true) or end (backwards =\n * false) of the list.\n *\n * This should return a promise; no more calls will be made until the\n * promise completes.\n *\n * The promise should resolve to true if there is more data to be\n * retrieved in this direction (in which case onFillRequest may be\n * called again immediately), or false if there is no more data in this\n * directon (at this time) - which will stop the pagination cycle until\n * the user scrolls again.\n */\n onFillRequest: _propTypes2.default.func,\n\n /* onUnfillRequest(backwards): a callback which is called on scroll when\n * there are children elements that are far out of view and could be removed\n * without causing pagination to occur.\n *\n * This function should accept a boolean, which is true to indicate the back/top\n * of the panel and false otherwise, and a scroll token, which refers to the\n * first element to remove if removing from the front/bottom, and last element\n * to remove if removing from the back/top.\n */\n onUnfillRequest: _propTypes2.default.func,\n\n /* onScroll: a callback which is called whenever any scroll happens.\n */\n onScroll: _propTypes2.default.func,\n\n /* onResize: a callback which is called whenever the Gemini scroll\n * panel is resized\n */\n onResize: _propTypes2.default.func,\n\n /* className: classnames to add to the top-level div\n */\n className: _propTypes2.default.string,\n\n /* style: styles to add to the top-level div\n */\n style: _propTypes2.default.object\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n stickyBottom: true,\n startAtBottom: true,\n onFillRequest: function onFillRequest(backwards) {\n return _bluebird2.default.resolve(false);\n },\n onUnfillRequest: function onUnfillRequest(backwards, scrollToken) {},\n onScroll: function onScroll() {},\n onResize: function onResize() {}\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._pendingFillRequests = { b: null, f: null };\n this.resetScrollState();\n },\n\n componentDidMount: function componentDidMount() {\n this.checkScroll();\n },\n\n componentDidUpdate: function componentDidUpdate() {\n // after adding event tiles, we may need to tweak the scroll (either to\n // keep at the bottom of the timeline, or to maintain the view after\n // adding events to the top).\n //\n // This will also re-check the fill state, in case the paginate was inadequate\n this.checkScroll();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // set a boolean to say we've been unmounted, which any pending\n // promises can use to throw away their results.\n //\n // (We could use isMounted(), but facebook have deprecated that.)\n this.unmounted = true;\n },\n\n onScroll: function onScroll(ev) {\n var sn = this._getScrollNode();\n debuglog(\"Scroll event: offset now:\", sn.scrollTop, \"_lastSetScroll:\", this._lastSetScroll);\n\n // Sometimes we see attempts to write to scrollTop essentially being\n // ignored. (Or rather, it is successfully written, but on the next\n // scroll event, it's been reset again).\n //\n // This was observed on Chrome 47, when scrolling using the trackpad in OS\n // X Yosemite. Can't reproduce on El Capitan. Our theory is that this is\n // due to Chrome not being able to cope with the scroll offset being reset\n // while a two-finger drag is in progress.\n //\n // By way of a workaround, we detect this situation and just keep\n // resetting scrollTop until we see the scroll node have the right\n // value.\n if (this._lastSetScroll !== undefined && sn.scrollTop < this._lastSetScroll - 200) {\n console.log(\"Working around vector-im/vector-web#528\");\n this._restoreSavedScrollState();\n return;\n }\n\n // If there weren't enough children to fill the viewport, the scroll we\n // got might be different to the scroll we wanted; we don't want to\n // forget what we wanted, so don't overwrite the saved state unless\n // this appears to be a user-initiated scroll.\n if (sn.scrollTop != this._lastSetScroll) {\n this._saveScrollState();\n } else {\n debuglog(\"Ignoring scroll echo\");\n\n // only ignore the echo once, otherwise we'll get confused when the\n // user scrolls away from, and back to, the autoscroll point.\n this._lastSetScroll = undefined;\n }\n\n this.props.onScroll(ev);\n\n this.checkFillState();\n },\n\n onResize: function onResize() {\n this.props.onResize();\n this.checkScroll();\n if (this._gemScroll) this._gemScroll.forceUpdate();\n },\n\n // after an update to the contents of the panel, check that the scroll is\n // where it ought to be, and set off pagination requests if necessary.\n checkScroll: function checkScroll() {\n this._restoreSavedScrollState();\n this.checkFillState();\n },\n\n // return true if the content is fully scrolled down right now; else false.\n //\n // note that this is independent of the 'stuckAtBottom' state - it is simply\n // about whether the the content is scrolled down right now, irrespective of\n // whether it will stay that way when the children update.\n isAtBottom: function isAtBottom() {\n var sn = this._getScrollNode();\n\n // there seems to be some bug with flexbox/gemini/chrome/richvdh's\n // understanding of the box model, wherein the scrollNode ends up 2\n // pixels higher than the available space, even when there are less\n // than a screenful of messages. + 3 is a fudge factor to pretend\n // that we're at the bottom when we're still a few pixels off.\n\n return sn.scrollHeight - Math.ceil(sn.scrollTop) <= sn.clientHeight + 3;\n },\n\n // returns the vertical height in the given direction that can be removed from\n // the content box (which has a height of scrollHeight, see checkFillState) without\n // pagination occuring.\n //\n // padding* = UNPAGINATION_PADDING\n //\n // ### Region determined as excess.\n //\n // .---------. - -\n // |#########| | |\n // |#########| - | scrollTop |\n // | | | padding* | |\n // | | | | |\n // .-+---------+-. - - | |\n // : | | : | | |\n // : | | : | clientHeight | |\n // : | | : | | |\n // .-+---------+-. - - |\n // | | | | | |\n // | | | | | clientHeight | scrollHeight\n // | | | | | |\n // `-+---------+-' - |\n // : | | : | |\n // : | | : | clientHeight |\n // : | | : | |\n // `-+---------+-' - - |\n // | | | padding* |\n // | | | |\n // |#########| - |\n // |#########| |\n // `---------' -\n _getExcessHeight: function _getExcessHeight(backwards) {\n var sn = this._getScrollNode();\n if (backwards) {\n return sn.scrollTop - sn.clientHeight - UNPAGINATION_PADDING;\n } else {\n return sn.scrollHeight - (sn.scrollTop + 2 * sn.clientHeight) - UNPAGINATION_PADDING;\n }\n },\n\n // check the scroll state and send out backfill requests if necessary.\n checkFillState: function checkFillState() {\n if (this.unmounted) {\n return;\n }\n\n var sn = this._getScrollNode();\n\n // if there is less than a screenful of messages above or below the\n // viewport, try to get some more messages.\n //\n // scrollTop is the number of pixels between the top of the content and\n // the top of the viewport.\n //\n // scrollHeight is the total height of the content.\n //\n // clientHeight is the height of the viewport (excluding borders,\n // margins, and scrollbars).\n //\n //\n // .---------. - -\n // | | | scrollTop |\n // .-+---------+-. - - |\n // | | | | | |\n // | | | | | clientHeight | scrollHeight\n // | | | | | |\n // `-+---------+-' - |\n // | | |\n // | | |\n // `---------' -\n //\n\n if (sn.scrollTop < sn.clientHeight) {\n // need to back-fill\n this._maybeFill(true);\n }\n if (sn.scrollTop > sn.scrollHeight - sn.clientHeight * 2) {\n // need to forward-fill\n this._maybeFill(false);\n }\n },\n\n // check if unfilling is possible and send an unfill request if necessary\n _checkUnfillState: function _checkUnfillState(backwards) {\n var _this = this;\n\n var excessHeight = this._getExcessHeight(backwards);\n if (excessHeight <= 0) {\n return;\n }\n var tiles = this.refs.itemlist.children;\n\n // The scroll token of the first/last tile to be unpaginated\n var markerScrollToken = null;\n\n // Subtract heights of tiles to simulate the tiles being unpaginated until the\n // excess height is less than the height of the next tile to subtract. This\n // prevents excessHeight becoming negative, which could lead to future\n // pagination.\n //\n // If backwards is true, we unpaginate (remove) tiles from the back (top).\n for (var i = 0; i < tiles.length; i++) {\n var tile = tiles[backwards ? i : tiles.length - 1 - i];\n // Subtract height of tile as if it were unpaginated\n excessHeight -= tile.clientHeight;\n //If removing the tile would lead to future pagination, break before setting scroll token\n if (tile.clientHeight > excessHeight) {\n break;\n }\n // The tile may not have a scroll token, so guard it\n if (tile.dataset.scrollTokens) {\n markerScrollToken = tile.dataset.scrollTokens.split(',')[0];\n }\n }\n\n if (markerScrollToken) {\n // Use a debouncer to prevent multiple unfill calls in quick succession\n // This is to make the unfilling process less aggressive\n if (this._unfillDebouncer) {\n clearTimeout(this._unfillDebouncer);\n }\n this._unfillDebouncer = setTimeout(function () {\n _this._unfillDebouncer = null;\n _this.props.onUnfillRequest(backwards, markerScrollToken);\n }, UNFILL_REQUEST_DEBOUNCE_MS);\n }\n },\n\n // check if there is already a pending fill request. If not, set one off.\n _maybeFill: function _maybeFill(backwards) {\n var _this2 = this;\n\n var dir = backwards ? 'b' : 'f';\n if (this._pendingFillRequests[dir]) {\n debuglog(\"ScrollPanel: Already a \" + dir + \" fill in progress - not starting another\");\n return;\n }\n\n debuglog(\"ScrollPanel: starting \" + dir + \" fill\");\n\n // onFillRequest can end up calling us recursively (via onScroll\n // events) so make sure we set this before firing off the call.\n this._pendingFillRequests[dir] = true;\n\n _bluebird2.default.try(function () {\n return _this2.props.onFillRequest(backwards);\n }).finally(function () {\n _this2._pendingFillRequests[dir] = false;\n }).then(function (hasMoreResults) {\n if (_this2.unmounted) {\n return;\n }\n // Unpaginate once filling is complete\n _this2._checkUnfillState(!backwards);\n\n debuglog(\"ScrollPanel: \" + dir + \" fill complete; hasMoreResults:\" + hasMoreResults);\n if (hasMoreResults) {\n // further pagination requests have been disabled until now, so\n // it's time to check the fill state again in case the pagination\n // was insufficient.\n _this2.checkFillState();\n }\n }).done();\n },\n\n /* get the current scroll state. This returns an object with the following\n * properties:\n *\n * boolean stuckAtBottom: true if we are tracking the bottom of the\n * scroll. false if we are tracking a particular child.\n *\n * string trackedScrollToken: undefined if stuckAtBottom is true; if it is\n * false, the first token in data-scroll-tokens of the child which we are\n * tracking.\n *\n * number pixelOffset: undefined if stuckAtBottom is true; if it is false,\n * the number of pixels the bottom of the tracked child is above the\n * bottom of the scroll panel.\n */\n getScrollState: function getScrollState() {\n return this.scrollState;\n },\n\n /* reset the saved scroll state.\n *\n * This is useful if the list is being replaced, and you don't want to\n * preserve scroll even if new children happen to have the same scroll\n * tokens as old ones.\n *\n * This will cause the viewport to be scrolled down to the bottom on the\n * next update of the child list. This is different to scrollToBottom(),\n * which would save the current bottom-most child as the active one (so is\n * no use if no children exist yet, or if you are about to replace the\n * child list.)\n */\n resetScrollState: function resetScrollState() {\n this.scrollState = { stuckAtBottom: this.props.startAtBottom };\n },\n\n /**\n * jump to the top of the content.\n */\n scrollToTop: function scrollToTop() {\n this._setScrollTop(0);\n this._saveScrollState();\n },\n\n /**\n * jump to the bottom of the content.\n */\n scrollToBottom: function scrollToBottom() {\n // the easiest way to make sure that the scroll state is correctly\n // saved is to do the scroll, then save the updated state. (Calculating\n // it ourselves is hard, and we can't rely on an onScroll callback\n // happening, since there may be no user-visible change here).\n this._setScrollTop(Number.MAX_VALUE);\n this._saveScrollState();\n },\n\n /**\n * Page up/down.\n *\n * mult: -1 to page up, +1 to page down\n */\n scrollRelative: function scrollRelative(mult) {\n var scrollNode = this._getScrollNode();\n var delta = mult * scrollNode.clientHeight * 0.5;\n this._setScrollTop(scrollNode.scrollTop + delta);\n this._saveScrollState();\n },\n\n /**\n * Scroll up/down in response to a scroll key\n */\n handleScrollKey: function handleScrollKey(ev) {\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.PAGE_UP:\n if (!ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n this.scrollRelative(-1);\n }\n break;\n\n case _Keyboard.KeyCode.PAGE_DOWN:\n if (!ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n this.scrollRelative(1);\n }\n break;\n\n case _Keyboard.KeyCode.HOME:\n if (ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n this.scrollToTop();\n }\n break;\n\n case _Keyboard.KeyCode.END:\n if (ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n this.scrollToBottom();\n }\n break;\n }\n },\n\n /* Scroll the panel to bring the DOM node with the scroll token\n * `scrollToken` into view.\n *\n * offsetBase gives the reference point for the pixelOffset. 0 means the\n * top of the container, 1 means the bottom, and fractional values mean\n * somewhere in the middle. If omitted, it defaults to 0.\n *\n * pixelOffset gives the number of pixels *above* the offsetBase that the\n * node (specifically, the bottom of it) will be positioned. If omitted, it\n * defaults to 0.\n */\n scrollToToken: function scrollToToken(scrollToken, pixelOffset, offsetBase) {\n pixelOffset = pixelOffset || 0;\n offsetBase = offsetBase || 0;\n\n // convert pixelOffset so that it is based on the bottom of the\n // container.\n pixelOffset += this._getScrollNode().clientHeight * (1 - offsetBase);\n\n // save the desired scroll state. It's important we do this here rather\n // than as a result of the scroll event, because (a) we might not *get*\n // a scroll event, and (b) it might not currently be possible to set\n // the requested scroll state (eg, because we hit the end of the\n // timeline and need to do more pagination); we want to save the\n // *desired* scroll state rather than what we end up achieving.\n this.scrollState = {\n stuckAtBottom: false,\n trackedScrollToken: scrollToken,\n pixelOffset: pixelOffset\n };\n\n // ... then make it so.\n this._restoreSavedScrollState();\n },\n\n // set the scrollTop attribute appropriately to position the given child at the\n // given offset in the window. A helper for _restoreSavedScrollState.\n _scrollToToken: function _scrollToToken(scrollToken, pixelOffset) {\n /* find the dom node with the right scrolltoken */\n var node = void 0;\n var messages = this.refs.itemlist.children;\n for (var i = messages.length - 1; i >= 0; --i) {\n var m = messages[i];\n // 'data-scroll-tokens' is a DOMString of comma-separated scroll tokens\n // There might only be one scroll token\n if (m.dataset.scrollTokens && m.dataset.scrollTokens.split(',').indexOf(scrollToken) !== -1) {\n node = m;\n break;\n }\n }\n\n if (!node) {\n debuglog(\"ScrollPanel: No node with scrollToken '\" + scrollToken + \"'\");\n return;\n }\n\n var scrollNode = this._getScrollNode();\n var wrapperRect = ReactDOM.findDOMNode(this).getBoundingClientRect();\n var boundingRect = node.getBoundingClientRect();\n var scrollDelta = boundingRect.bottom + pixelOffset - wrapperRect.bottom;\n\n debuglog(\"ScrollPanel: scrolling to token '\" + scrollToken + \"'+\" + pixelOffset + \" (delta: \" + scrollDelta + \")\");\n\n if (scrollDelta != 0) {\n this._setScrollTop(scrollNode.scrollTop + scrollDelta);\n }\n },\n\n _saveScrollState: function _saveScrollState() {\n if (this.props.stickyBottom && this.isAtBottom()) {\n this.scrollState = { stuckAtBottom: true };\n debuglog(\"ScrollPanel: Saved scroll state\", this.scrollState);\n return;\n }\n\n var itemlist = this.refs.itemlist;\n var wrapperRect = ReactDOM.findDOMNode(this).getBoundingClientRect();\n var messages = itemlist.children;\n var newScrollState = null;\n\n for (var i = messages.length - 1; i >= 0; --i) {\n var node = messages[i];\n if (!node.dataset.scrollTokens) continue;\n\n var boundingRect = node.getBoundingClientRect();\n newScrollState = {\n stuckAtBottom: false,\n trackedScrollToken: node.dataset.scrollTokens.split(',')[0],\n pixelOffset: wrapperRect.bottom - boundingRect.bottom\n };\n // If the bottom of the panel intersects the ClientRect of node, use this node\n // as the scrollToken.\n // If this is false for the entire for-loop, we default to the last node\n // (which is why newScrollState is set on every iteration).\n if (boundingRect.top < wrapperRect.bottom) {\n // Use this node as the scrollToken\n break;\n }\n }\n // This is only false if there were no nodes with `node.dataset.scrollTokens` set.\n if (newScrollState) {\n this.scrollState = newScrollState;\n debuglog(\"ScrollPanel: saved scroll state\", this.scrollState);\n } else {\n debuglog(\"ScrollPanel: unable to save scroll state: found no children in the viewport\");\n }\n },\n\n _restoreSavedScrollState: function _restoreSavedScrollState() {\n var scrollState = this.scrollState;\n var scrollNode = this._getScrollNode();\n\n if (scrollState.stuckAtBottom) {\n this._setScrollTop(Number.MAX_VALUE);\n } else if (scrollState.trackedScrollToken) {\n this._scrollToToken(scrollState.trackedScrollToken, scrollState.pixelOffset);\n }\n },\n\n _setScrollTop: function _setScrollTop(scrollTop) {\n var scrollNode = this._getScrollNode();\n\n var prevScroll = scrollNode.scrollTop;\n\n // FF ignores attempts to set scrollTop to very large numbers\n scrollNode.scrollTop = Math.min(scrollTop, scrollNode.scrollHeight);\n\n // If this change generates a scroll event, we should not update the\n // saved scroll state on it. See the comments in onScroll.\n //\n // If we *don't* expect a scroll event, we need to leave _lastSetScroll\n // alone, otherwise we'll end up ignoring a future scroll event which is\n // nothing to do with this change.\n\n if (scrollNode.scrollTop != prevScroll) {\n this._lastSetScroll = scrollNode.scrollTop;\n }\n\n debuglog(\"ScrollPanel: set scrollTop:\", scrollNode.scrollTop, \"requested:\", scrollTop, \"_lastSetScroll:\", this._lastSetScroll);\n },\n\n /* get the DOM node which has the scrollTop property we care about for our\n * message panel.\n */\n _getScrollNode: function _getScrollNode() {\n if (this.unmounted) {\n // this shouldn't happen, but when it does, turn the NPE into\n // something more meaningful.\n throw new Error(\"ScrollPanel._getScrollNode called when unmounted\");\n }\n\n if (!this._gemScroll) {\n // Likewise, we should have the ref by this point, but if not\n // turn the NPE into something meaningful.\n throw new Error(\"ScrollPanel._getScrollNode called before gemini ref collected\");\n }\n\n return this._gemScroll.scrollbar.getViewElement();\n },\n\n _collectGeminiScroll: function _collectGeminiScroll(gemScroll) {\n this._gemScroll = gemScroll;\n },\n\n render: function render() {\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n // TODO: the classnames on the div and ol could do with being updated to\n // reflect the fact that we don't necessarily contain a list of messages.\n // it's not obvious why we have a separate div and ol anyway.\n return React.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true, wrappedRef: this._collectGeminiScroll,\n onScroll: this.onScroll, onResize: this.onResize,\n className: this.props.className, style: this.props.style },\n React.createElement(\n \"div\",\n { className: \"mx_RoomView_messageListWrapper\" },\n React.createElement(\n \"ol\",\n { ref: \"itemlist\", className: \"mx_RoomView_MessageList\", \"aria-live\": \"polite\" },\n this.props.children\n )\n )\n );\n }\n});\n//# sourceMappingURL=ScrollPanel.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _Keyboard = require('../../Keyboard');\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _ratelimitedfunc = require('../../ratelimitedfunc');\n\nvar _ratelimitedfunc2 = _interopRequireDefault(_ratelimitedfunc);\n\nvar _AccessibleButton = require('../../components/views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'SearchBox',\n\n propTypes: {\n collapsed: _react2.default.PropTypes.bool,\n onSearch: _react2.default.PropTypes.func\n },\n\n getInitialState: function getInitialState() {\n return {\n searchTerm: \"\"\n };\n },\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n case 'view_room':\n if (this.refs.search && payload.clear_search) {\n this._clearSearch();\n }\n break;\n case 'focus_room_filter':\n if (this.refs.search) {\n this.refs.search.focus();\n this.refs.search.select();\n }\n break;\n }\n },\n\n onChange: function onChange() {\n if (!this.refs.search) return;\n this.setState({ searchTerm: this.refs.search.value });\n this.onSearch();\n },\n\n onSearch: new _ratelimitedfunc2.default(function () {\n this.props.onSearch(this.refs.search.value);\n }, 100),\n\n onToggleCollapse: function onToggleCollapse(show) {\n if (show) {\n _dispatcher2.default.dispatch({\n action: 'show_left_panel'\n });\n } else {\n _dispatcher2.default.dispatch({\n action: 'hide_left_panel'\n });\n }\n },\n\n _onKeyDown: function _onKeyDown(ev) {\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.ESCAPE:\n this._clearSearch();\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n break;\n }\n },\n\n _clearSearch: function _clearSearch() {\n this.refs.search.value = \"\";\n this.onChange();\n },\n\n render: function render() {\n var _this = this;\n\n var TintableSvg = _index2.default.getComponent('elements.TintableSvg');\n\n var collapseTabIndex = this.refs.search && this.refs.search.value !== \"\" ? \"-1\" : \"0\";\n\n var toggleCollapse;\n if (this.props.collapsed) {\n toggleCollapse = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_SearchBox_maximise', tabIndex: collapseTabIndex, onClick: this.onToggleCollapse.bind(this, true) },\n _react2.default.createElement(TintableSvg, { src: 'img/maximise.svg', width: '10', height: '16', alt: (0, _languageHandler._t)(\"Expand panel\") })\n );\n } else {\n toggleCollapse = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_SearchBox_minimise', tabIndex: collapseTabIndex, onClick: this.onToggleCollapse.bind(this, false) },\n _react2.default.createElement(TintableSvg, { src: 'img/minimise.svg', width: '10', height: '16', alt: (0, _languageHandler._t)(\"Collapse panel\") })\n );\n }\n\n var searchControls;\n if (!this.props.collapsed) {\n searchControls = [this.state.searchTerm.length > 0 ? _react2.default.createElement(\n _AccessibleButton2.default,\n { key: 'button',\n className: 'mx_SearchBox_closeButton',\n onClick: function onClick() {\n _this._clearSearch();\n } },\n _react2.default.createElement(TintableSvg, {\n className: 'mx_SearchBox_searchButton',\n src: 'img/icons-close.svg', width: '24', height: '24'\n })\n ) : _react2.default.createElement(TintableSvg, {\n key: 'button',\n className: 'mx_SearchBox_searchButton',\n src: 'img/icons-search-copy.svg', width: '13', height: '13'\n }), _react2.default.createElement('input', {\n key: 'searchfield',\n type: 'text',\n ref: 'search',\n className: 'mx_SearchBox_search',\n value: this.state.searchTerm,\n onChange: this.onChange,\n onKeyDown: this._onKeyDown,\n placeholder: (0, _languageHandler._t)('Filter room names')\n })];\n }\n\n var self = this;\n return _react2.default.createElement(\n 'div',\n { className: 'mx_SearchBox' },\n searchControls,\n toggleCollapse\n );\n }\n});\n//# sourceMappingURL=SearchBox.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _TagOrderStore = require('../../stores/TagOrderStore');\n\nvar _TagOrderStore2 = _interopRequireDefault(_TagOrderStore);\n\nvar _GroupActions = require('../../actions/GroupActions');\n\nvar _GroupActions2 = _interopRequireDefault(_GroupActions);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _reactBeautifulDnd = require('react-beautiful-dnd');\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017, 2018 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar TagPanel = _react2.default.createClass({\n displayName: 'TagPanel',\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getInitialState: function getInitialState() {\n return {\n orderedTags: [],\n selectedTags: []\n };\n },\n\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this.unmounted = false;\n this.context.matrixClient.on(\"Group.myMembership\", this._onGroupMyMembership);\n this.context.matrixClient.on(\"sync\", this._onClientSync);\n\n this._tagOrderStoreToken = _TagOrderStore2.default.addListener(function () {\n if (_this.unmounted) {\n return;\n }\n _this.setState({\n orderedTags: _TagOrderStore2.default.getOrderedTags() || [],\n selectedTags: _TagOrderStore2.default.getSelectedTags()\n });\n });\n // This could be done by anything with a matrix client\n _dispatcher2.default.dispatch(_GroupActions2.default.fetchJoinedGroups(this.context.matrixClient));\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this.unmounted = true;\n this.context.matrixClient.removeListener(\"Group.myMembership\", this._onGroupMyMembership);\n this.context.matrixClient.removeListener(\"sync\", this._onClientSync);\n if (this._filterStoreToken) {\n this._filterStoreToken.remove();\n }\n },\n _onGroupMyMembership: function _onGroupMyMembership() {\n if (this.unmounted) return;\n _dispatcher2.default.dispatch(_GroupActions2.default.fetchJoinedGroups(this.context.matrixClient));\n },\n _onClientSync: function _onClientSync(syncState, prevState) {\n // Consider the client reconnected if there is no error with syncing.\n // This means the state could be RECONNECTING, SYNCING, PREPARED or CATCHUP.\n var reconnected = syncState !== \"ERROR\" && prevState !== syncState;\n if (reconnected) {\n // Load joined groups\n _dispatcher2.default.dispatch(_GroupActions2.default.fetchJoinedGroups(this.context.matrixClient));\n }\n },\n onMouseDown: function onMouseDown(e) {\n // only dispatch if its not a no-op\n if (this.state.selectedTags.length > 0) {\n _dispatcher2.default.dispatch({ action: 'deselect_tags' });\n }\n },\n onCreateGroupClick: function onCreateGroupClick(ev) {\n ev.stopPropagation();\n _dispatcher2.default.dispatch({ action: 'view_create_group' });\n },\n onClearFilterClick: function onClearFilterClick(ev) {\n _dispatcher2.default.dispatch({ action: 'deselect_tags' });\n },\n render: function render() {\n var _this2 = this;\n\n var GroupsButton = _index2.default.getComponent('elements.GroupsButton');\n var DNDTagTile = _index2.default.getComponent('elements.DNDTagTile');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var TintableSvg = _index2.default.getComponent('elements.TintableSvg');\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n\n var tags = this.state.orderedTags.map(function (tag, index) {\n return _react2.default.createElement(DNDTagTile, {\n key: tag,\n tag: tag,\n index: index,\n selected: _this2.state.selectedTags.includes(tag)\n });\n });\n\n var itemsSelected = this.state.selectedTags.length > 0;\n\n var clearButton = void 0;\n if (itemsSelected) {\n clearButton = _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_TagPanel_clearButton', onClick: this.onClearFilterClick },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-close.svg', width: '24', height: '24',\n alt: (0, _languageHandler._t)(\"Clear filter\"),\n title: (0, _languageHandler._t)(\"Clear filter\")\n })\n );\n }\n\n var classes = (0, _classnames2.default)('mx_TagPanel', {\n mx_TagPanel_items_selected: itemsSelected\n });\n\n return _react2.default.createElement(\n 'div',\n { className: classes },\n _react2.default.createElement(\n 'div',\n { className: 'mx_TagPanel_clearButton_container' },\n clearButton\n ),\n _react2.default.createElement('div', { className: 'mx_TagPanel_divider' }),\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n {\n className: 'mx_TagPanel_scroller',\n autoshow: true\n // XXX: Use onMouseDown as a workaround for https://github.com/atlassian/react-beautiful-dnd/issues/273\n // instead of onClick. Otherwise we experience https://github.com/vector-im/riot-web/issues/6253\n , onMouseDown: this.onMouseDown\n },\n _react2.default.createElement(\n _reactBeautifulDnd.Droppable,\n {\n droppableId: 'tag-panel-droppable',\n type: 'draggable-TagTile'\n },\n function (provided, snapshot) {\n return _react2.default.createElement(\n 'div',\n {\n className: 'mx_TagPanel_tagTileContainer',\n ref: provided.innerRef\n },\n tags,\n provided.placeholder\n );\n }\n )\n ),\n _react2.default.createElement('div', { className: 'mx_TagPanel_divider' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_TagPanel_groupsButton' },\n _react2.default.createElement(GroupsButton, { tooltip: true })\n )\n );\n }\n});\nexports.default = TagPanel;\nmodule.exports = exports['default'];\n//# sourceMappingURL=TagPanel.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _actionCreators = require('./actionCreators');\n\nvar GroupActions = {};\n\n/**\n * Creates an action thunk that will do an asynchronous request to fetch\n * the groups to which a user is joined.\n *\n * @param {MatrixClient} matrixClient the matrix client to query.\n * @returns {function} an action thunk that will dispatch actions\n * indicating the status of the request.\n * @see asyncAction\n */\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nGroupActions.fetchJoinedGroups = function (matrixClient) {\n return (0, _actionCreators.asyncAction)('GroupActions.fetchJoinedGroups', function () {\n return matrixClient.getJoinedGroups();\n });\n};\n\nexports.default = GroupActions;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupActions.js.map","\"use strict\";\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _toConsumableArray2 = require(\"babel-runtime/helpers/toConsumableArray\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _SettingsStore = require(\"../../settings/SettingsStore\");\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _languageHandler = require(\"../../languageHandler\");\n\nvar _Keyboard = require(\"../../Keyboard\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react'); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar ReactDOM = require(\"react-dom\");\n\n\nvar Matrix = require(\"matrix-js-sdk\");\nvar EventTimeline = Matrix.EventTimeline;\n\nvar sdk = require('../../index');\n\nvar MatrixClientPeg = require(\"../../MatrixClientPeg\");\nvar dis = require(\"../../dispatcher\");\nvar ObjectUtils = require('../../ObjectUtils');\nvar Modal = require(\"../../Modal\");\nvar UserActivity = require(\"../../UserActivity\");\n\n\nvar PAGINATE_SIZE = 20;\nvar INITIAL_SIZE = 20;\n\nvar DEBUG = false;\n\nif (DEBUG) {\n // using bind means that we get to keep useful line numbers in the console\n var debuglog = console.log.bind(console);\n} else {\n var debuglog = function debuglog() {};\n}\n\n/*\n * Component which shows the event timeline in a room view.\n *\n * Also responsible for handling and sending read receipts.\n */\nvar TimelinePanel = React.createClass({\n displayName: 'TimelinePanel',\n\n propTypes: {\n // The js-sdk EventTimelineSet object for the timeline sequence we are\n // representing. This may or may not have a room, depending on what it's\n // a timeline representing. If it has a room, we maintain RRs etc for\n // that room.\n timelineSet: _propTypes2.default.object.isRequired,\n\n showReadReceipts: _propTypes2.default.bool,\n // Enable managing RRs and RMs. These require the timelineSet to have a room.\n manageReadReceipts: _propTypes2.default.bool,\n manageReadMarkers: _propTypes2.default.bool,\n\n // true to give the component a 'display: none' style.\n hidden: _propTypes2.default.bool,\n\n // ID of an event to highlight. If undefined, no event will be highlighted.\n // typically this will be either 'eventId' or undefined.\n highlightedEventId: _propTypes2.default.string,\n\n // id of an event to jump to. If not given, will go to the end of the\n // live timeline.\n eventId: _propTypes2.default.string,\n\n // where to position the event given by eventId, in pixels from the\n // bottom of the viewport. If not given, will try to put the event\n // half way down the viewport.\n eventPixelOffset: _propTypes2.default.number,\n\n // Should we show URL Previews\n showUrlPreview: _propTypes2.default.bool,\n\n // callback which is called when the panel is scrolled.\n onScroll: _propTypes2.default.func,\n\n // callback which is called when the read-up-to mark is updated.\n onReadMarkerUpdated: _propTypes2.default.func,\n\n // maximum number of events to show in a timeline\n timelineCap: _propTypes2.default.number,\n\n // classname to use for the messagepanel\n className: _propTypes2.default.string,\n\n // shape property to be passed to EventTiles\n tileShape: _propTypes2.default.string,\n\n // placeholder text to use if the timeline is empty\n empty: _propTypes2.default.string\n },\n\n statics: {\n // a map from room id to read marker event timestamp\n roomReadMarkerTsMap: {}\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n // By default, disable the timelineCap in favour of unpaginating based on\n // event tile heights. (See _unpaginateEvents)\n timelineCap: Number.MAX_VALUE,\n className: 'mx_RoomView_messagePanel'\n };\n },\n\n getInitialState: function getInitialState() {\n // XXX: we could track RM per TimelineSet rather than per Room.\n // but for now we just do it per room for simplicity.\n var initialReadMarker = null;\n if (this.props.manageReadMarkers) {\n var readmarker = this.props.timelineSet.room.getAccountData('m.fully_read');\n if (readmarker) {\n initialReadMarker = readmarker.getContent().event_id;\n } else {\n initialReadMarker = this._getCurrentReadReceipt();\n }\n }\n\n return {\n events: [],\n timelineLoading: true, // track whether our room timeline is loading\n\n // canBackPaginate == false may mean:\n //\n // * we haven't (successfully) loaded the timeline yet, or:\n //\n // * we have got to the point where the room was created, or:\n //\n // * the server indicated that there were no more visible events\n // (normally implying we got to the start of the room), or:\n //\n // * we gave up asking the server for more events\n canBackPaginate: false,\n\n // canForwardPaginate == false may mean:\n //\n // * we haven't (successfully) loaded the timeline yet\n //\n // * we have got to the end of time and are now tracking the live\n // timeline, or:\n //\n // * the server indicated that there were no more visible events\n // (not sure if this ever happens when we're not at the live\n // timeline), or:\n //\n // * we are looking at some historical point, but gave up asking\n // the server for more events\n canForwardPaginate: false,\n\n // start with the read-marker visible, so that we see its animated\n // disappearance when switching into the room.\n readMarkerVisible: true,\n\n readMarkerEventId: initialReadMarker,\n\n backPaginating: false,\n forwardPaginating: false,\n\n // cache of matrixClient.getSyncState() (but from the 'sync' event)\n clientSyncState: MatrixClientPeg.get().getSyncState(),\n\n // should the event tiles have twelve hour times\n isTwelveHour: _SettingsStore2.default.getValue(\"showTwelveHourTimestamps\"),\n\n // always show timestamps on event tiles?\n alwaysShowTimestamps: _SettingsStore2.default.getValue(\"alwaysShowTimestamps\")\n };\n },\n\n componentWillMount: function componentWillMount() {\n debuglog(\"TimelinePanel: mounting\");\n\n this.lastRRSentEventId = undefined;\n this.lastRMSentEventId = undefined;\n\n this.dispatcherRef = dis.register(this.onAction);\n MatrixClientPeg.get().on(\"Room.timeline\", this.onRoomTimeline);\n MatrixClientPeg.get().on(\"Room.timelineReset\", this.onRoomTimelineReset);\n MatrixClientPeg.get().on(\"Room.redaction\", this.onRoomRedaction);\n MatrixClientPeg.get().on(\"Room.receipt\", this.onRoomReceipt);\n MatrixClientPeg.get().on(\"Room.localEchoUpdated\", this.onLocalEchoUpdated);\n MatrixClientPeg.get().on(\"Room.accountData\", this.onAccountData);\n MatrixClientPeg.get().on(\"Event.decrypted\", this.onEventDecrypted);\n MatrixClientPeg.get().on(\"sync\", this.onSync);\n\n this._initTimeline(this.props);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n if (newProps.timelineSet !== this.props.timelineSet) {\n // throw new Error(\"changing timelineSet on a TimelinePanel is not supported\");\n\n // regrettably, this does happen; in particular, when joining a\n // room with /join. In that case, there are two Rooms in\n // circulation - one which is created by the MatrixClient.joinRoom\n // call and used to create the RoomView, and a second which is\n // created by the sync loop once the room comes back down the /sync\n // pipe. Once the latter happens, our room is replaced with the new one.\n //\n // for now, just warn about this. But we're going to end up paginating\n // both rooms separately, and it's all bad.\n console.warn(\"Replacing timelineSet on a TimelinePanel - confusion may ensue\");\n }\n\n if (newProps.eventId != this.props.eventId) {\n console.log(\"TimelinePanel switching to eventId \" + newProps.eventId + \" (was \" + this.props.eventId + \")\");\n return this._initTimeline(newProps);\n }\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n if (!ObjectUtils.shallowEqual(this.props, nextProps)) {\n if (DEBUG) {\n console.group(\"Timeline.shouldComponentUpdate: props change\");\n console.log(\"props before:\", this.props);\n console.log(\"props after:\", nextProps);\n console.groupEnd();\n }\n return true;\n }\n\n if (!ObjectUtils.shallowEqual(this.state, nextState)) {\n if (DEBUG) {\n console.group(\"Timeline.shouldComponentUpdate: state change\");\n console.log(\"state before:\", this.state);\n console.log(\"state after:\", nextState);\n console.groupEnd();\n }\n return true;\n }\n\n return false;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // set a boolean to say we've been unmounted, which any pending\n // promises can use to throw away their results.\n //\n // (We could use isMounted, but facebook have deprecated that.)\n this.unmounted = true;\n\n dis.unregister(this.dispatcherRef);\n\n var client = MatrixClientPeg.get();\n if (client) {\n client.removeListener(\"Room.timeline\", this.onRoomTimeline);\n client.removeListener(\"Room.timelineReset\", this.onRoomTimelineReset);\n client.removeListener(\"Room.redaction\", this.onRoomRedaction);\n client.removeListener(\"Room.receipt\", this.onRoomReceipt);\n client.removeListener(\"Room.localEchoUpdated\", this.onLocalEchoUpdated);\n client.removeListener(\"Room.accountData\", this.onAccountData);\n client.removeListener(\"Event.decrypted\", this.onEventDecrypted);\n client.removeListener(\"sync\", this.onSync);\n }\n },\n\n onMessageListUnfillRequest: function onMessageListUnfillRequest(backwards, scrollToken) {\n // If backwards, unpaginate from the back (i.e. the start of the timeline)\n var dir = backwards ? EventTimeline.BACKWARDS : EventTimeline.FORWARDS;\n debuglog(\"TimelinePanel: unpaginating events in direction\", dir);\n\n // All tiles are inserted by MessagePanel to have a scrollToken === eventId, and\n // this particular event should be the first or last to be unpaginated.\n var eventId = scrollToken;\n\n var marker = this.state.events.findIndex(function (ev) {\n return ev.getId() === eventId;\n });\n\n var count = backwards ? marker + 1 : this.state.events.length - marker;\n\n if (count > 0) {\n var _setState;\n\n debuglog(\"TimelinePanel: Unpaginating\", count, \"in direction\", dir);\n this._timelineWindow.unpaginate(count, backwards);\n\n // We can now paginate in the unpaginated direction\n var canPaginateKey = backwards ? 'canBackPaginate' : 'canForwardPaginate';\n this.setState((_setState = {}, (0, _defineProperty3.default)(_setState, canPaginateKey, true), (0, _defineProperty3.default)(_setState, \"events\", this._getEvents()), _setState));\n }\n },\n\n // set off a pagination request.\n onMessageListFillRequest: function onMessageListFillRequest(backwards) {\n var _this = this;\n\n if (!this._shouldPaginate()) return _bluebird2.default.resolve(false);\n\n var dir = backwards ? EventTimeline.BACKWARDS : EventTimeline.FORWARDS;\n var canPaginateKey = backwards ? 'canBackPaginate' : 'canForwardPaginate';\n var paginatingKey = backwards ? 'backPaginating' : 'forwardPaginating';\n\n if (!this.state[canPaginateKey]) {\n debuglog(\"TimelinePanel: have given up\", dir, \"paginating this timeline\");\n return _bluebird2.default.resolve(false);\n }\n\n if (!this._timelineWindow.canPaginate(dir)) {\n debuglog(\"TimelinePanel: can't\", dir, \"paginate any further\");\n this.setState((0, _defineProperty3.default)({}, canPaginateKey, false));\n return _bluebird2.default.resolve(false);\n }\n\n debuglog(\"TimelinePanel: Initiating paginate; backwards:\" + backwards);\n this.setState((0, _defineProperty3.default)({}, paginatingKey, true));\n\n return this._timelineWindow.paginate(dir, PAGINATE_SIZE).then(function (r) {\n var _newState;\n\n if (_this.unmounted) {\n return;\n }\n\n debuglog(\"TimelinePanel: paginate complete backwards:\" + backwards + \"; success:\" + r);\n\n var newState = (_newState = {}, (0, _defineProperty3.default)(_newState, paginatingKey, false), (0, _defineProperty3.default)(_newState, canPaginateKey, r), (0, _defineProperty3.default)(_newState, \"events\", _this._getEvents()), _newState);\n\n // moving the window in this direction may mean that we can now\n // paginate in the other where we previously could not.\n var otherDirection = backwards ? EventTimeline.FORWARDS : EventTimeline.BACKWARDS;\n var canPaginateOtherWayKey = backwards ? 'canForwardPaginate' : 'canBackPaginate';\n if (!_this.state[canPaginateOtherWayKey] && _this._timelineWindow.canPaginate(otherDirection)) {\n debuglog('TimelinePanel: can now', otherDirection, 'paginate again');\n newState[canPaginateOtherWayKey] = true;\n }\n\n // Don't resolve until the setState has completed: we need to let\n // the component update before we consider the pagination completed,\n // otherwise we'll end up paginating in all the history the js-sdk\n // has in memory because we never gave the component a chance to scroll\n // itself into the right place\n return new _bluebird2.default(function (resolve) {\n _this.setState(newState, function () {\n resolve(r);\n });\n });\n });\n },\n\n onMessageListScroll: function onMessageListScroll(e) {\n if (this.props.onScroll) {\n this.props.onScroll(e);\n }\n\n if (this.props.manageReadMarkers) {\n // we hide the read marker when it first comes onto the screen, but if\n // it goes back off the top of the screen (presumably because the user\n // clicks on the 'jump to bottom' button), we need to re-enable it.\n if (this.getReadMarkerPosition() < 0) {\n this.setState({ readMarkerVisible: true });\n }\n }\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n case 'user_activity':\n case 'user_activity_end':\n // we could treat user_activity_end differently and not\n // send receipts for messages that have arrived between\n // the actual user activity and the time they stopped\n // being active, but let's see if this is actually\n // necessary.\n this.sendReadReceipt();\n this.updateReadMarker();\n break;\n case 'ignore_state_changed':\n this.forceUpdate();\n break;\n }\n },\n\n onRoomTimeline: function onRoomTimeline(ev, room, toStartOfTimeline, removed, data) {\n var _this2 = this;\n\n // ignore events for other timeline sets\n if (data.timeline.getTimelineSet() !== this.props.timelineSet) return;\n\n // ignore anything but real-time updates at the end of the room:\n // updates from pagination will happen when the paginate completes.\n if (toStartOfTimeline || !data || !data.liveEvent) return;\n\n if (!this.refs.messagePanel) return;\n\n if (!this.refs.messagePanel.getScrollState().stuckAtBottom) {\n // we won't load this event now, because we don't want to push any\n // events off the other end of the timeline. But we need to note\n // that we can now paginate.\n this.setState({ canForwardPaginate: true });\n return;\n }\n\n // tell the timeline window to try to advance itself, but not to make\n // an http request to do so.\n //\n // we deliberately avoid going via the ScrollPanel for this call - the\n // ScrollPanel might already have an active pagination promise, which\n // will fail, but would stop us passing the pagination request to the\n // timeline window.\n //\n // see https://github.com/vector-im/vector-web/issues/1035\n this._timelineWindow.paginate(EventTimeline.FORWARDS, 1, false).done(function () {\n if (_this2.unmounted) {\n return;\n }\n\n var events = _this2._timelineWindow.getEvents();\n var lastEv = events[events.length - 1];\n\n // if we're at the end of the live timeline, append the pending events\n if (_this2.props.timelineSet.room && !_this2._timelineWindow.canPaginate(EventTimeline.FORWARDS)) {\n events.push.apply(events, (0, _toConsumableArray3.default)(_this2.props.timelineSet.room.getPendingEvents()));\n }\n\n var updatedState = { events: events };\n\n if (_this2.props.manageReadMarkers) {\n // when a new event arrives when the user is not watching the\n // window, but the window is in its auto-scroll mode, make sure the\n // read marker is visible.\n //\n // We ignore events we have sent ourselves; we don't want to see the\n // read-marker when a remote echo of an event we have just sent takes\n // more than the timeout on userCurrentlyActive.\n //\n var myUserId = MatrixClientPeg.get().credentials.userId;\n var sender = ev.sender ? ev.sender.userId : null;\n var callback = null;\n if (sender != myUserId && !UserActivity.userCurrentlyActive()) {\n updatedState.readMarkerVisible = true;\n } else if (lastEv && _this2.getReadMarkerPosition() === 0) {\n // we know we're stuckAtBottom, so we can advance the RM\n // immediately, to save a later render cycle\n\n _this2._setReadMarker(lastEv.getId(), lastEv.getTs(), true);\n updatedState.readMarkerVisible = false;\n updatedState.readMarkerEventId = lastEv.getId();\n callback = _this2.props.onReadMarkerUpdated;\n }\n }\n\n _this2.setState(updatedState, callback);\n });\n },\n\n onRoomTimelineReset: function onRoomTimelineReset(room, timelineSet) {\n if (timelineSet !== this.props.timelineSet) return;\n\n if (this.refs.messagePanel && this.refs.messagePanel.isAtBottom()) {\n this._loadTimeline();\n }\n },\n\n canResetTimeline: function canResetTimeline() {\n return this.refs.messagePanel && this.refs.messagePanel.isAtBottom();\n },\n\n onRoomRedaction: function onRoomRedaction(ev, room) {\n if (this.unmounted) return;\n\n // ignore events for other rooms\n if (room !== this.props.timelineSet.room) return;\n\n // we could skip an update if the event isn't in our timeline,\n // but that's probably an early optimisation.\n this.forceUpdate();\n },\n\n onRoomReceipt: function onRoomReceipt(ev, room) {\n if (this.unmounted) return;\n\n // ignore events for other rooms\n if (room !== this.props.timelineSet.room) return;\n\n this.forceUpdate();\n },\n\n onLocalEchoUpdated: function onLocalEchoUpdated(ev, room, oldEventId) {\n if (this.unmounted) return;\n\n // ignore events for other rooms\n if (room !== this.props.timelineSet.room) return;\n\n this._reloadEvents();\n },\n\n onAccountData: function onAccountData(ev, room) {\n if (this.unmounted) return;\n\n // ignore events for other rooms\n if (room !== this.props.timelineSet.room) return;\n\n if (ev.getType() !== \"m.fully_read\") return;\n\n // XXX: roomReadMarkerTsMap not updated here so it is now inconsistent. Replace\n // this mechanism of determining where the RM is relative to the view-port with\n // one supported by the server (the client needs more than an event ID).\n this.setState({\n readMarkerEventId: ev.getContent().event_id\n }, this.props.onReadMarkerUpdated);\n },\n\n onEventDecrypted: function onEventDecrypted(ev) {\n // Need to update as we don't display event tiles for events that\n // haven't yet been decrypted. The event will have just been updated\n // in place so we just need to re-render.\n // TODO: We should restrict this to only events in our timeline,\n // but possibly the event tile itself should just update when this\n // happens to save us re-rendering the whole timeline.\n if (ev.getRoomId() === this.props.timelineSet.room.roomId) {\n this.forceUpdate();\n }\n },\n\n onSync: function onSync(state, prevState, data) {\n this.setState({ clientSyncState: state });\n },\n\n sendReadReceipt: function sendReadReceipt() {\n var _this3 = this;\n\n if (!this.refs.messagePanel) return;\n if (!this.props.manageReadReceipts) return;\n // This happens on user_activity_end which is delayed, and it's\n // very possible have logged out within that timeframe, so check\n // we still have a client.\n var cli = MatrixClientPeg.get();\n // if no client or client is guest don't send RR or RM\n if (!cli || cli.isGuest()) return;\n\n var shouldSendRR = true;\n\n var currentRREventId = this._getCurrentReadReceipt(true);\n var currentRREventIndex = this._indexForEventId(currentRREventId);\n // We want to avoid sending out read receipts when we are looking at\n // events in the past which are before the latest RR.\n //\n // For now, let's apply a heuristic: if (a) the event corresponding to\n // the latest RR (either from the server, or sent by ourselves) doesn't\n // appear in our timeline, and (b) we could forward-paginate the event\n // timeline, then don't send any more RRs.\n //\n // This isn't watertight, as we could be looking at a section of\n // timeline which is *after* the latest RR (so we should actually send\n // RRs) - but that is a bit of a niche case. It will sort itself out when\n // the user eventually hits the live timeline.\n //\n if (currentRREventId && currentRREventIndex === null && this._timelineWindow.canPaginate(EventTimeline.FORWARDS)) {\n shouldSendRR = false;\n }\n\n var lastReadEventIndex = this._getLastDisplayedEventIndex({\n ignoreOwn: true\n });\n if (lastReadEventIndex === null) {\n shouldSendRR = false;\n }\n var lastReadEvent = this.state.events[lastReadEventIndex];\n shouldSendRR = shouldSendRR &&\n // Only send a RR if the last read event is ahead in the timeline relative to\n // the current RR event.\n lastReadEventIndex > currentRREventIndex &&\n // Only send a RR if the last RR set != the one we would send\n this.lastRRSentEventId != lastReadEvent.getId();\n\n // Only send a RM if the last RM sent != the one we would send\n var shouldSendRM = this.lastRMSentEventId != this.state.readMarkerEventId;\n\n // we also remember the last read receipt we sent to avoid spamming the\n // same one at the server repeatedly\n if (shouldSendRR || shouldSendRM) {\n if (shouldSendRR) {\n this.lastRRSentEventId = lastReadEvent.getId();\n } else {\n lastReadEvent = null;\n }\n this.lastRMSentEventId = this.state.readMarkerEventId;\n\n debuglog('TimelinePanel: Sending Read Markers for ', this.props.timelineSet.room.roomId, 'rm', this.state.readMarkerEventId, lastReadEvent ? 'rr ' + lastReadEvent.getId() : '');\n MatrixClientPeg.get().setRoomReadMarkers(this.props.timelineSet.room.roomId, this.state.readMarkerEventId, lastReadEvent // Could be null, in which case no RR is sent\n ).catch(function (e) {\n // /read_markers API is not implemented on this HS, fallback to just RR\n if (e.errcode === 'M_UNRECOGNIZED' && lastReadEvent) {\n return MatrixClientPeg.get().sendReadReceipt(lastReadEvent).catch(function () {\n _this3.lastRRSentEventId = undefined;\n });\n }\n // it failed, so allow retries next time the user is active\n _this3.lastRRSentEventId = undefined;\n _this3.lastRMSentEventId = undefined;\n });\n\n // do a quick-reset of our unreadNotificationCount to avoid having\n // to wait from the remote echo from the homeserver.\n // we only do this if we're right at the end, because we're just assuming\n // that sending an RR for the latest message will set our notif counter\n // to zero: it may not do this if we send an RR for somewhere before the end.\n if (this.isAtEndOfLiveTimeline()) {\n this.props.timelineSet.room.setUnreadNotificationCount('total', 0);\n this.props.timelineSet.room.setUnreadNotificationCount('highlight', 0);\n dis.dispatch({\n action: 'on_room_read',\n roomId: this.props.timelineSet.room.roomId\n });\n }\n }\n },\n\n // if the read marker is on the screen, we can now assume we've caught up to the end\n // of the screen, so move the marker down to the bottom of the screen.\n updateReadMarker: function updateReadMarker() {\n if (!this.props.manageReadMarkers) return;\n if (this.getReadMarkerPosition() !== 0) {\n return;\n }\n\n // move the RM to *after* the message at the bottom of the screen. This\n // avoids a problem whereby we never advance the RM if there is a huge\n // message which doesn't fit on the screen.\n //\n // But ignore local echoes for this - they have a temporary event ID\n // and we'll get confused when their ID changes and we can't figure out\n // where the RM is pointing to. The read marker will be invisible for\n // now anyway, so this doesn't really matter.\n var lastDisplayedIndex = this._getLastDisplayedEventIndex({\n allowPartial: true,\n ignoreEchoes: true\n });\n\n if (lastDisplayedIndex === null) {\n return;\n }\n\n var lastDisplayedEvent = this.state.events[lastDisplayedIndex];\n this._setReadMarker(lastDisplayedEvent.getId(), lastDisplayedEvent.getTs());\n\n // the read-marker should become invisible, so that if the user scrolls\n // down, they don't see it.\n if (this.state.readMarkerVisible) {\n this.setState({\n readMarkerVisible: false\n });\n }\n },\n\n // advance the read marker past any events we sent ourselves.\n _advanceReadMarkerPastMyEvents: function _advanceReadMarkerPastMyEvents() {\n if (!this.props.manageReadMarkers) return;\n\n // we call _timelineWindow.getEvents() rather than using\n // this.state.events, because react batches the update to the latter, so it\n // may not have been updated yet.\n var events = this._timelineWindow.getEvents();\n\n // first find where the current RM is\n for (var i = 0; i < events.length; i++) {\n if (events[i].getId() == this.state.readMarkerEventId) {\n break;\n }\n }\n if (i >= events.length) {\n return;\n }\n\n // now think about advancing it\n var myUserId = MatrixClientPeg.get().credentials.userId;\n for (i++; i < events.length; i++) {\n var ev = events[i];\n if (!ev.sender || ev.sender.userId != myUserId) {\n break;\n }\n }\n // i is now the first unread message which we didn't send ourselves.\n i--;\n\n var ev = events[i];\n this._setReadMarker(ev.getId(), ev.getTs());\n },\n\n /* jump down to the bottom of this room, where new events are arriving\n */\n jumpToLiveTimeline: function jumpToLiveTimeline() {\n // if we can't forward-paginate the existing timeline, then there\n // is no point reloading it - just jump straight to the bottom.\n //\n // Otherwise, reload the timeline rather than trying to paginate\n // through all of space-time.\n if (this._timelineWindow.canPaginate(EventTimeline.FORWARDS)) {\n this._loadTimeline();\n } else {\n if (this.refs.messagePanel) {\n this.refs.messagePanel.scrollToBottom();\n }\n }\n },\n\n /* scroll to show the read-up-to marker. We put it 1/3 of the way down\n * the container.\n */\n jumpToReadMarker: function jumpToReadMarker() {\n if (!this.props.manageReadMarkers) return;\n if (!this.refs.messagePanel) return;\n if (!this.state.readMarkerEventId) return;\n\n // we may not have loaded the event corresponding to the read-marker\n // into the _timelineWindow. In that case, attempts to scroll to it\n // will fail.\n //\n // a quick way to figure out if we've loaded the relevant event is\n // simply to check if the messagepanel knows where the read-marker is.\n var ret = this.refs.messagePanel.getReadMarkerPosition();\n if (ret !== null) {\n // The messagepanel knows where the RM is, so we must have loaded\n // the relevant event.\n this.refs.messagePanel.scrollToEvent(this.state.readMarkerEventId, 0, 1 / 3);\n return;\n }\n\n // Looks like we haven't loaded the event corresponding to the read-marker.\n // As with jumpToLiveTimeline, we want to reload the timeline around the\n // read-marker.\n this._loadTimeline(this.state.readMarkerEventId, 0, 1 / 3);\n },\n\n /* update the read-up-to marker to match the read receipt\n */\n forgetReadMarker: function forgetReadMarker() {\n if (!this.props.manageReadMarkers) return;\n\n var rmId = this._getCurrentReadReceipt();\n\n // see if we know the timestamp for the rr event\n var tl = this.props.timelineSet.getTimelineForEvent(rmId);\n var rmTs = void 0;\n if (tl) {\n var event = tl.getEvents().find(function (e) {\n return e.getId() == rmId;\n });\n if (event) {\n rmTs = event.getTs();\n }\n }\n\n this._setReadMarker(rmId, rmTs);\n },\n\n /* return true if the content is fully scrolled down and we are\n * at the end of the live timeline.\n */\n isAtEndOfLiveTimeline: function isAtEndOfLiveTimeline() {\n return this.refs.messagePanel && this.refs.messagePanel.isAtBottom() && this._timelineWindow && !this._timelineWindow.canPaginate(EventTimeline.FORWARDS);\n },\n\n /* get the current scroll state. See ScrollPanel.getScrollState for\n * details.\n *\n * returns null if we are not mounted.\n */\n getScrollState: function getScrollState() {\n if (!this.refs.messagePanel) {\n return null;\n }\n return this.refs.messagePanel.getScrollState();\n },\n\n // returns one of:\n //\n // null: there is no read marker\n // -1: read marker is above the window\n // 0: read marker is visible\n // +1: read marker is below the window\n getReadMarkerPosition: function getReadMarkerPosition() {\n if (!this.props.manageReadMarkers) return null;\n if (!this.refs.messagePanel) return null;\n\n var ret = this.refs.messagePanel.getReadMarkerPosition();\n if (ret !== null) {\n return ret;\n }\n\n // the messagePanel doesn't know where the read marker is.\n // if we know the timestamp of the read marker, make a guess based on that.\n var rmTs = TimelinePanel.roomReadMarkerTsMap[this.props.timelineSet.room.roomId];\n if (rmTs && this.state.events.length > 0) {\n if (rmTs < this.state.events[0].getTs()) {\n return -1;\n } else {\n return 1;\n }\n }\n\n return null;\n },\n\n canJumpToReadMarker: function canJumpToReadMarker() {\n // 1. Do not show jump bar if neither the RM nor the RR are set.\n // 2. Only show jump bar if RR !== RM. If they are the same, there are only fully\n // read messages and unread messages. We already have a badge count and the bottom\n // bar to jump to \"live\" when we have unread messages.\n // 3. We want to show the bar if the read-marker is off the top of the screen.\n // 4. Also, if pos === null, the event might not be paginated - show the unread bar\n var pos = this.getReadMarkerPosition();\n return this.state.readMarkerEventId !== null && // 1.\n this.state.readMarkerEventId !== this._getCurrentReadReceipt() && ( // 2.\n pos < 0 || pos === null); // 3., 4.\n },\n\n /**\n * called by the parent component when PageUp/Down/etc is pressed.\n *\n * We pass it down to the scroll panel.\n */\n handleScrollKey: function handleScrollKey(ev) {\n if (!this.refs.messagePanel) {\n return;\n }\n\n // jump to the live timeline on ctrl-end, rather than the end of the\n // timeline window.\n if (ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey && ev.keyCode == _Keyboard.KeyCode.END) {\n this.jumpToLiveTimeline();\n } else {\n this.refs.messagePanel.handleScrollKey(ev);\n }\n },\n\n _initTimeline: function _initTimeline(props) {\n var initialEvent = props.eventId;\n var pixelOffset = props.eventPixelOffset;\n\n // if a pixelOffset is given, it is relative to the bottom of the\n // container. If not, put the event in the middle of the container.\n var offsetBase = 1;\n if (pixelOffset == null) {\n offsetBase = 0.5;\n }\n\n return this._loadTimeline(initialEvent, pixelOffset, offsetBase);\n },\n\n /**\n * (re)-load the event timeline, and initialise the scroll state, centered\n * around the given event.\n *\n * @param {string?} eventId the event to focus on. If undefined, will\n * scroll to the bottom of the room.\n *\n * @param {number?} pixelOffset offset to position the given event at\n * (pixels from the offsetBase). If omitted, defaults to 0.\n *\n * @param {number?} offsetBase the reference point for the pixelOffset. 0\n * means the top of the container, 1 means the bottom, and fractional\n * values mean somewhere in the middle. If omitted, it defaults to 0.\n *\n * returns a promise which will resolve when the load completes.\n */\n _loadTimeline: function _loadTimeline(eventId, pixelOffset, offsetBase) {\n var _this4 = this;\n\n this._timelineWindow = new Matrix.TimelineWindow(MatrixClientPeg.get(), this.props.timelineSet, { windowLimit: this.props.timelineCap });\n\n var onLoaded = function onLoaded() {\n _this4._reloadEvents();\n\n // If we switched away from the room while there were pending\n // outgoing events, the read-marker will be before those events.\n // We need to skip over any which have subsequently been sent.\n _this4._advanceReadMarkerPastMyEvents();\n\n _this4.setState({\n canBackPaginate: _this4._timelineWindow.canPaginate(EventTimeline.BACKWARDS),\n canForwardPaginate: _this4._timelineWindow.canPaginate(EventTimeline.FORWARDS),\n timelineLoading: false\n }, function () {\n // initialise the scroll state of the message panel\n if (!_this4.refs.messagePanel) {\n // this shouldn't happen - we know we're mounted because\n // we're in a setState callback, and we know\n // timelineLoading is now false, so render() should have\n // mounted the message panel.\n console.log(\"can't initialise scroll state because \" + \"messagePanel didn't load\");\n return;\n }\n if (eventId) {\n _this4.refs.messagePanel.scrollToEvent(eventId, pixelOffset, offsetBase);\n } else {\n _this4.refs.messagePanel.scrollToBottom();\n }\n\n _this4.sendReadReceipt();\n _this4.updateReadMarker();\n });\n };\n\n var onError = function onError(error) {\n _this4.setState({ timelineLoading: false });\n console.error(\"Error loading timeline panel at \" + eventId + \": \" + error);\n var msg = error.message ? error.message : (0, _stringify2.default)(error);\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n\n var onFinished = void 0;\n\n // if we were given an event ID, then when the user closes the\n // dialog, let's jump to the end of the timeline. If we weren't,\n // something has gone badly wrong and rather than causing a loop of\n // undismissable dialogs, let's just give up.\n if (eventId) {\n onFinished = function onFinished() {\n // go via the dispatcher so that the URL is updated\n dis.dispatch({\n action: 'view_room',\n room_id: _this4.props.timelineSet.room.roomId\n });\n };\n }\n var message = error.errcode == 'M_FORBIDDEN' ? (0, _languageHandler._t)(\"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.\") : (0, _languageHandler._t)(\"Tried to load a specific point in this room's timeline, but was unable to find it.\");\n Modal.createTrackedDialog('Failed to load timeline position', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to load timeline position\"),\n description: message,\n onFinished: onFinished\n });\n };\n\n var prom = this._timelineWindow.load(eventId, INITIAL_SIZE);\n\n // if we already have the event in question, TimelineWindow.load\n // returns a resolved promise.\n //\n // In this situation, we don't really want to defer the update of the\n // state to the next event loop, because it makes room-switching feel\n // quite slow. So we detect that situation and shortcut straight to\n // calling _reloadEvents and updating the state.\n\n if (prom.isFulfilled()) {\n onLoaded();\n } else {\n this.setState({\n events: [],\n canBackPaginate: false,\n canForwardPaginate: false,\n timelineLoading: true\n });\n\n prom = prom.then(onLoaded, onError);\n }\n\n prom.done();\n },\n\n // handle the completion of a timeline load or localEchoUpdate, by\n // reloading the events from the timelinewindow and pending event list into\n // the state.\n _reloadEvents: function _reloadEvents() {\n // we might have switched rooms since the load started - just bin\n // the results if so.\n if (this.unmounted) return;\n\n this.setState({\n events: this._getEvents()\n });\n },\n\n // get the list of events from the timeline window and the pending event list\n _getEvents: function _getEvents() {\n var events = this._timelineWindow.getEvents();\n\n // if we're at the end of the live timeline, append the pending events\n if (!this._timelineWindow.canPaginate(EventTimeline.FORWARDS)) {\n events.push.apply(events, (0, _toConsumableArray3.default)(this.props.timelineSet.getPendingEvents()));\n }\n\n return events;\n },\n\n _indexForEventId: function _indexForEventId(evId) {\n for (var i = 0; i < this.state.events.length; ++i) {\n if (evId == this.state.events[i].getId()) {\n return i;\n }\n }\n return null;\n },\n\n _getLastDisplayedEventIndex: function _getLastDisplayedEventIndex(opts) {\n opts = opts || {};\n var ignoreOwn = opts.ignoreOwn || false;\n var ignoreEchoes = opts.ignoreEchoes || false;\n var allowPartial = opts.allowPartial || false;\n\n var messagePanel = this.refs.messagePanel;\n if (messagePanel === undefined) return null;\n\n var wrapperRect = ReactDOM.findDOMNode(messagePanel).getBoundingClientRect();\n var myUserId = MatrixClientPeg.get().credentials.userId;\n\n for (var i = this.state.events.length - 1; i >= 0; --i) {\n var ev = this.state.events[i];\n\n if (ignoreOwn && ev.sender && ev.sender.userId == myUserId) {\n continue;\n }\n\n // local echoes have a fake event ID\n if (ignoreEchoes && ev.status) {\n continue;\n }\n\n var node = messagePanel.getNodeForEventId(ev.getId());\n if (!node) continue;\n\n var boundingRect = node.getBoundingClientRect();\n if (allowPartial && boundingRect.top < wrapperRect.bottom || !allowPartial && boundingRect.bottom < wrapperRect.bottom) {\n return i;\n }\n }\n return null;\n },\n\n /**\n * get the id of the event corresponding to our user's latest read-receipt.\n *\n * @param {Boolean} ignoreSynthesized If true, return only receipts that\n * have been sent by the server, not\n * implicit ones generated by the JS\n * SDK.\n */\n _getCurrentReadReceipt: function _getCurrentReadReceipt(ignoreSynthesized) {\n var client = MatrixClientPeg.get();\n // the client can be null on logout\n if (client == null) {\n return null;\n }\n\n var myUserId = client.credentials.userId;\n return this.props.timelineSet.room.getEventReadUpTo(myUserId, ignoreSynthesized);\n },\n\n _setReadMarker: function _setReadMarker(eventId, eventTs, inhibitSetState) {\n var roomId = this.props.timelineSet.room.roomId;\n\n // don't update the state (and cause a re-render) if there is\n // no change to the RM.\n if (eventId === this.state.readMarkerEventId) {\n return;\n }\n\n // in order to later figure out if the read marker is\n // above or below the visible timeline, we stash the timestamp.\n TimelinePanel.roomReadMarkerTsMap[roomId] = eventTs;\n\n if (inhibitSetState) {\n return;\n }\n\n // Do the local echo of the RM\n // run the render cycle before calling the callback, so that\n // getReadMarkerPosition() returns the right thing.\n this.setState({\n readMarkerEventId: eventId\n }, this.props.onReadMarkerUpdated);\n },\n\n _shouldPaginate: function _shouldPaginate() {\n // don't try to paginate while events in the timeline are\n // still being decrypted. We don't render events while they're\n // being decrypted, so they don't take up space in the timeline.\n // This means we can pull quite a lot of events into the timeline\n // and end up trying to render a lot of events.\n return !this.state.events.some(function (e) {\n return e.isBeingDecrypted();\n });\n },\n\n render: function render() {\n var MessagePanel = sdk.getComponent(\"structures.MessagePanel\");\n var Loader = sdk.getComponent(\"elements.Spinner\");\n\n // just show a spinner while the timeline loads.\n //\n // put it in a div of the right class (mx_RoomView_messagePanel) so\n // that the order in the roomview flexbox is correct, and\n // mx_RoomView_messageListWrapper to position the inner div in the\n // right place.\n //\n // Note that the click-on-search-result functionality relies on the\n // fact that the messagePanel is hidden while the timeline reloads,\n // but that the RoomHeader (complete with search term) continues to\n // exist.\n if (this.state.timelineLoading) {\n return React.createElement(\n \"div\",\n { className: \"mx_RoomView_messagePanelSpinner\" },\n React.createElement(Loader, null)\n );\n }\n\n if (this.state.events.length == 0 && !this.state.canBackPaginate && this.props.empty) {\n return React.createElement(\n \"div\",\n { className: this.props.className + \" mx_RoomView_messageListWrapper\" },\n React.createElement(\n \"div\",\n { className: \"mx_RoomView_empty\" },\n this.props.empty\n )\n );\n }\n\n // give the messagepanel a stickybottom if we're at the end of the\n // live timeline, so that the arrival of new events triggers a\n // scroll.\n //\n // Make sure that stickyBottom is *false* if we can paginate\n // forwards, otherwise if somebody hits the bottom of the loaded\n // events when viewing historical messages, we get stuck in a loop\n // of paginating our way through the entire history of the room.\n var stickyBottom = !this._timelineWindow.canPaginate(EventTimeline.FORWARDS);\n\n // If the state is PREPARED or CATCHUP, we're still waiting for the js-sdk to sync with\n // the HS and fetch the latest events, so we are effectively forward paginating.\n var forwardPaginating = this.state.forwardPaginating || ['PREPARED', 'CATCHUP'].includes(this.state.clientSyncState);\n return React.createElement(MessagePanel, { ref: \"messagePanel\",\n hidden: this.props.hidden,\n backPaginating: this.state.backPaginating,\n forwardPaginating: forwardPaginating,\n events: this.state.events,\n highlightedEventId: this.props.highlightedEventId,\n readMarkerEventId: this.state.readMarkerEventId,\n readMarkerVisible: this.state.readMarkerVisible,\n suppressFirstDateSeparator: this.state.canBackPaginate,\n showUrlPreview: this.props.showUrlPreview,\n showReadReceipts: this.props.showReadReceipts,\n ourUserId: MatrixClientPeg.get().credentials.userId,\n stickyBottom: stickyBottom,\n onScroll: this.onMessageListScroll,\n onFillRequest: this.onMessageListFillRequest,\n onUnfillRequest: this.onMessageListUnfillRequest,\n isTwelveHour: this.state.isTwelveHour,\n alwaysShowTimestamps: this.state.alwaysShowTimestamps,\n className: this.props.className,\n tileShape: this.props.tileShape\n });\n }\n});\n\nmodule.exports = TimelinePanel;\n//# sourceMappingURL=TimelinePanel.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require('react');\n\nvar ContentMessages = require('../../ContentMessages');\nvar dis = require('../../dispatcher');\nvar filesize = require('filesize');\n\n\nmodule.exports = React.createClass({ displayName: 'UploadBar',\n propTypes: {\n room: _propTypes2.default.object\n },\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = dis.register(this.onAction);\n this.mounted = true;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this.mounted = false;\n dis.unregister(this.dispatcherRef);\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n case 'upload_progress':\n case 'upload_finished':\n case 'upload_failed':\n if (this.mounted) this.forceUpdate();\n break;\n }\n },\n\n render: function render() {\n var uploads = ContentMessages.getCurrentUploads();\n\n // for testing UI... - also fix up the ContentMessages.getCurrentUploads().length\n // check in RoomView\n //\n // uploads = [{\n // roomId: this.props.room.roomId,\n // loaded: 123493,\n // total: 347534,\n // fileName: \"testing_fooble.jpg\",\n // }];\n\n if (uploads.length == 0) {\n return React.createElement('div', null);\n }\n\n var upload = void 0;\n for (var i = 0; i < uploads.length; ++i) {\n if (uploads[i].roomId == this.props.room.roomId) {\n upload = uploads[i];\n break;\n }\n }\n if (!upload) {\n return React.createElement('div', null);\n }\n\n var innerProgressStyle = {\n width: upload.loaded / (upload.total || 1) * 100 + '%'\n };\n var uploadedSize = filesize(upload.loaded);\n var totalSize = filesize(upload.total);\n if (uploadedSize.replace(/^.* /, '') === totalSize.replace(/^.* /, '')) {\n uploadedSize = uploadedSize.replace(/ .*/, '');\n }\n\n // MUST use var name 'count' for pluralization to kick in\n var uploadText = (0, _languageHandler._t)(\"Uploading %(filename)s and %(count)s others\", { filename: upload.fileName, count: uploads.length - 1 });\n\n return React.createElement(\n 'div',\n { className: 'mx_UploadBar' },\n React.createElement(\n 'div',\n { className: 'mx_UploadBar_uploadProgressOuter' },\n React.createElement('div', { className: 'mx_UploadBar_uploadProgressInner', style: innerProgressStyle })\n ),\n React.createElement('img', { className: 'mx_UploadBar_uploadIcon mx_filterFlipColor', src: 'img/fileicon.png', width: '17', height: '22' }),\n React.createElement('img', { className: 'mx_UploadBar_uploadCancel mx_filterFlipColor', src: 'img/cancel.svg', width: '18', height: '18',\n onClick: function onClick() {\n ContentMessages.cancelUpload(upload.promise);\n }\n }),\n React.createElement(\n 'div',\n { className: 'mx_UploadBar_uploadBytes' },\n uploadedSize,\n ' / ',\n totalSize\n ),\n React.createElement(\n 'div',\n { className: 'mx_UploadBar_uploadFilename' },\n uploadText\n )\n );\n }\n});\n//# sourceMappingURL=UploadBar.js.map","'use strict';\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _SettingsStore = require('../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _SessionStore = require('../../stores/SessionStore');\n\nvar _SessionStore2 = _interopRequireDefault(_SessionStore);\n\nvar _Analytics = require('../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _AccessibleButton = require('../views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar languageHandler = _interopRequireWildcard(_languageHandler);\n\nvar _FormattingUtils = require('../../utils/FormattingUtils');\n\nvar FormattingUtils = _interopRequireWildcard(_FormattingUtils);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react'); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2017, 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar ReactDOM = require('react-dom');\n\nvar sdk = require('../../index');\nvar MatrixClientPeg = require(\"../../MatrixClientPeg\");\nvar PlatformPeg = require(\"../../PlatformPeg\");\nvar Modal = require('../../Modal');\nvar dis = require(\"../../dispatcher\");\n\nvar packageJson = require('../../../package.json');\nvar UserSettingsStore = require('../../UserSettingsStore');\nvar CallMediaHandler = require('../../CallMediaHandler');\nvar Email = require('../../email');\nvar AddThreepid = require('../../AddThreepid');\nvar SdkConfig = require('../../SdkConfig');\n\n\n// if this looks like a release, use the 'version' from package.json; else use\n// the git sha. Prepend version with v, to look like riot-web version\nvar REACT_SDK_VERSION = 'dist' in packageJson ? packageJson.version : packageJson.gitHead || '<local>';\n\n// Simple method to help prettify GH Release Tags and Commit Hashes.\nvar semVerRegex = /^v?(\\d+\\.\\d+\\.\\d+(?:-rc.+)?)(?:-(?:\\d+-g)?([0-9a-fA-F]+))?(?:-dirty)?$/i;\nvar gHVersionLabel = function gHVersionLabel(repo) {\n var token = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var match = token.match(semVerRegex);\n var url = void 0;\n if (match && match[1]) {\n // basic semVer string possibly with commit hash\n url = match.length > 1 && match[2] ? 'https://github.com/' + repo + '/commit/' + match[2] : 'https://github.com/' + repo + '/releases/tag/v' + match[1];\n } else {\n url = 'https://github.com/' + repo + '/commit/' + token.split('-')[0];\n }\n return React.createElement(\n 'a',\n { target: '_blank', rel: 'noopener', href: url },\n token\n );\n};\n\n// Enumerate some simple 'flip a bit' UI settings (if any). The strings provided here\n// must be settings defined in SettingsStore.\nvar SIMPLE_SETTINGS = [{ id: \"urlPreviewsEnabled\" }, { id: \"autoplayGifsAndVideos\" }, { id: \"alwaysShowEncryptionIcons\" }, { id: \"hideReadReceipts\" }, { id: \"dontSendTypingNotifications\" }, { id: \"alwaysShowTimestamps\" }, { id: \"showTwelveHourTimestamps\" }, { id: \"hideJoinLeaves\" }, { id: \"hideAvatarChanges\" }, { id: \"hideDisplaynameChanges\" }, { id: \"useCompactLayout\" }, { id: \"hideRedactions\" }, { id: \"enableSyntaxHighlightLanguageDetection\" }, { id: \"MessageComposerInput.autoReplaceEmoji\" }, { id: \"MessageComposerInput.dontSuggestEmoji\" }, { id: \"Pill.shouldHidePillAvatar\" }, { id: \"TextualBody.disableBigEmoji\" }, { id: \"VideoView.flipVideoHorizontally\" }, { id: \"TagPanel.disableTagPanel\" }, { id: \"enableWidgetScreenshots\" }, { id: \"RoomSubList.showEmpty\" }];\n\n// These settings must be defined in SettingsStore\nvar ANALYTICS_SETTINGS = [{\n id: 'analyticsOptIn',\n fn: function fn(checked) {\n checked ? _Analytics2.default.enable() : _Analytics2.default.disable();\n }\n}];\n\n// These settings must be defined in SettingsStore\nvar WEBRTC_SETTINGS = [{\n id: 'webRtcForceTURN',\n fn: function fn(val) {\n MatrixClientPeg.get().setForceTURN(val);\n }\n}];\n\n// These settings must be defined in SettingsStore\nvar CRYPTO_SETTINGS = [{\n id: 'blacklistUnverifiedDevices',\n fn: function fn(checked) {\n MatrixClientPeg.get().setGlobalBlacklistUnverifiedDevices(checked);\n }\n}];\n\n// Enumerate the available themes, with a nice human text label.\n// 'label' is how we describe it in the UI.\n// 'value' is the value for the theme setting\n//\n// XXX: Ideally we would have a theme manifest or something and they'd be nicely\n// packaged up in a single directory, and/or located at the application layer.\n// But for now for expedience we just hardcode them here.\nvar THEMES = [{ label: (0, _languageHandler._td)('Light theme'), value: 'light' }, { label: (0, _languageHandler._td)('Dark theme'), value: 'dark' }, { label: (0, _languageHandler._td)('Status.im theme'), value: 'status' }];\n\nvar IgnoredUser = React.createClass({\n displayName: 'IgnoredUser',\n\n propTypes: {\n userId: _propTypes2.default.string.isRequired,\n onUnignored: _propTypes2.default.func.isRequired\n },\n\n _onUnignoreClick: function _onUnignoreClick() {\n var _this = this;\n\n var ignoredUsers = MatrixClientPeg.get().getIgnoredUsers();\n var index = ignoredUsers.indexOf(this.props.userId);\n if (index !== -1) {\n ignoredUsers.splice(index, 1);\n MatrixClientPeg.get().setIgnoredUsers(ignoredUsers).then(function () {\n return _this.props.onUnignored(_this.props.userId);\n });\n } else this.props.onUnignored(this.props.userId);\n },\n\n render: function render() {\n return React.createElement(\n 'li',\n null,\n React.createElement(\n _AccessibleButton2.default,\n { onClick: this._onUnignoreClick, className: 'mx_textButton' },\n (0, _languageHandler._t)(\"Unignore\")\n ),\n this.props.userId\n );\n }\n});\n\nmodule.exports = React.createClass({\n displayName: 'UserSettings',\n\n propTypes: {\n onClose: _propTypes2.default.func,\n // The brand string given when creating email pushers\n brand: _propTypes2.default.string,\n\n // The base URL to use in the referral link. Defaults to window.location.origin.\n referralBaseUrl: _propTypes2.default.string,\n\n // Team token for the referral link. If falsy, the referral section will\n // not appear\n teamToken: _propTypes2.default.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onClose: function onClose() {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n avatarUrl: null,\n threepids: [],\n phase: \"UserSettings.LOADING\", // LOADING, DISPLAY\n email_add_pending: false,\n vectorVersion: undefined,\n rejectingInvites: false,\n mediaDevices: null,\n ignoredUsers: []\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this2 = this;\n\n this._unmounted = false;\n this._addThreepid = null;\n\n if (PlatformPeg.get()) {\n _bluebird2.default.resolve().then(function () {\n return PlatformPeg.get().getAppVersion();\n }).done(function (appVersion) {\n if (_this2._unmounted) return;\n _this2.setState({\n vectorVersion: appVersion\n });\n }, function (e) {\n console.log(\"Failed to fetch app version\", e);\n });\n }\n\n this._refreshMediaDevices();\n this._refreshIgnoredUsers();\n\n // Bulk rejecting invites:\n // /sync won't have had time to return when UserSettings re-renders from state changes, so getRooms()\n // will still return rooms with invites. To get around this, add a listener for\n // membership updates and kick the UI.\n MatrixClientPeg.get().on(\"RoomMember.membership\", this._onInviteStateChange);\n\n dis.dispatch({\n action: 'panel_disable',\n sideDisabled: true,\n middleDisabled: true\n });\n this._refreshFromServer();\n\n if (PlatformPeg.get().isElectron()) {\n var _require = require('electron'),\n ipcRenderer = _require.ipcRenderer;\n\n ipcRenderer.on('settings', this._electronSettings);\n ipcRenderer.send('settings_get');\n }\n\n this.setState({\n language: languageHandler.getCurrentLanguage()\n });\n\n this._sessionStore = _SessionStore2.default;\n this._sessionStoreToken = this._sessionStore.addListener(this._setStateFromSessionStore);\n this._setStateFromSessionStore();\n },\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = dis.register(this.onAction);\n this._me = MatrixClientPeg.get().credentials.userId;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n dis.dispatch({\n action: 'panel_disable',\n sideDisabled: false,\n middleDisabled: false\n });\n dis.unregister(this.dispatcherRef);\n var cli = MatrixClientPeg.get();\n if (cli) {\n cli.removeListener(\"RoomMember.membership\", this._onInviteStateChange);\n }\n\n if (PlatformPeg.get().isElectron()) {\n var _require2 = require('electron'),\n ipcRenderer = _require2.ipcRenderer;\n\n ipcRenderer.removeListener('settings', this._electronSettings);\n }\n },\n\n // `UserSettings` assumes that the client peg will not be null, so give it some\n // sort of assurance here by only allowing a re-render if the client is truthy.\n //\n // This is required because `UserSettings` maintains its own state and if this state\n // updates (e.g. during _setStateFromSessionStore) after the client peg has been made\n // null (during logout), then it will attempt to re-render and throw errors.\n shouldComponentUpdate: function shouldComponentUpdate() {\n return Boolean(MatrixClientPeg.get());\n },\n\n _setStateFromSessionStore: function _setStateFromSessionStore() {\n this.setState({\n userHasGeneratedPassword: Boolean(this._sessionStore.getCachedPassword())\n });\n },\n\n _electronSettings: function _electronSettings(ev, settings) {\n this.setState({ electron_settings: settings });\n },\n\n _refreshMediaDevices: function _refreshMediaDevices(stream) {\n var _this3 = this;\n\n if (stream) {\n // kill stream so that we don't leave it lingering around with webcam enabled etc\n // as here we called gUM to ask user for permission to their device names only\n stream.getTracks().forEach(function (track) {\n return track.stop();\n });\n }\n\n _bluebird2.default.resolve().then(function () {\n return CallMediaHandler.getDevices();\n }).then(function (mediaDevices) {\n // console.log(\"got mediaDevices\", mediaDevices, this._unmounted);\n if (_this3._unmounted) return;\n _this3.setState({\n mediaDevices: mediaDevices,\n activeAudioOutput: _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, 'webrtc_audiooutput'),\n activeAudioInput: _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, 'webrtc_audioinput'),\n activeVideoInput: _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, 'webrtc_videoinput')\n });\n });\n },\n\n _refreshFromServer: function _refreshFromServer() {\n var self = this;\n _bluebird2.default.all([UserSettingsStore.loadProfileInfo(), UserSettingsStore.loadThreePids()]).done(function (resps) {\n self.setState({\n avatarUrl: resps[0].avatar_url,\n threepids: resps[1].threepids,\n phase: \"UserSettings.DISPLAY\"\n });\n }, function (error) {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to load user settings: \" + error);\n Modal.createTrackedDialog('Can\\'t load user settings', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Can't load user settings\"),\n description: error && error.message ? error.message : (0, _languageHandler._t)(\"Server may be unavailable or overloaded\")\n });\n });\n },\n\n _refreshIgnoredUsers: function _refreshIgnoredUsers() {\n var userIdUnignored = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n var users = MatrixClientPeg.get().getIgnoredUsers();\n if (userIdUnignored) {\n var index = users.indexOf(userIdUnignored);\n if (index !== -1) users.splice(index, 1);\n }\n this.setState({\n ignoredUsers: users\n });\n },\n\n onAction: function onAction(payload) {\n if (payload.action === \"notifier_enabled\") {\n this.forceUpdate();\n } else if (payload.action === \"ignore_state_changed\") {\n this._refreshIgnoredUsers();\n }\n },\n\n onAvatarPickerClick: function onAvatarPickerClick(ev) {\n if (this.refs.file_label) {\n this.refs.file_label.click();\n }\n },\n\n onAvatarSelected: function onAvatarSelected(ev) {\n var self = this;\n var changeAvatar = this.refs.changeAvatar;\n if (!changeAvatar) {\n console.error(\"No ChangeAvatar found to upload image to!\");\n return;\n }\n changeAvatar.onFileSelected(ev).done(function () {\n // dunno if the avatar changed, re-check it.\n self._refreshFromServer();\n }, function (err) {\n // const errMsg = (typeof err === \"string\") ? err : (err.error || \"\");\n console.error(\"Failed to set avatar: \" + err);\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Failed to set avatar', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to set avatar.\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n },\n\n onAvatarRemoveClick: function onAvatarRemoveClick() {\n MatrixClientPeg.get().setAvatarUrl(null);\n this.setState({ avatarUrl: null }); // the avatar update will complete async for us\n },\n\n onLogoutClicked: function onLogoutClicked(ev) {\n var _this4 = this;\n\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n Modal.createTrackedDialog('Logout E2E Export', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Sign out\"),\n description: React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"For security, logging out will delete any end-to-end \" + \"encryption keys from this browser. If you want to be able \" + \"to decrypt your conversation history from future Riot sessions, \" + \"please export your room keys for safe-keeping.\")\n ),\n button: (0, _languageHandler._t)(\"Sign out\"),\n extraButtons: [React.createElement(\n 'button',\n { key: 'export', className: 'mx_Dialog_primary',\n onClick: this._onExportE2eKeysClicked },\n (0, _languageHandler._t)(\"Export E2E room keys\")\n )],\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n dis.dispatch({ action: 'logout' });\n if (_this4.props.onFinished) {\n _this4.props.onFinished();\n }\n }\n }\n });\n },\n\n onPasswordChangeError: function onPasswordChangeError(err) {\n var errMsg = err.error || \"\";\n if (err.httpStatus === 403) {\n errMsg = (0, _languageHandler._t)(\"Failed to change password. Is your password correct?\");\n } else if (err.httpStatus) {\n errMsg += ' (HTTP status ' + err.httpStatus + ')';\n }\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to change password: \" + errMsg);\n Modal.createTrackedDialog('Failed to change password', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: errMsg\n });\n },\n\n onPasswordChanged: function onPasswordChanged() {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Password changed', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Success\"),\n description: (0, _languageHandler._t)(\"Your password was successfully changed. You will not receive \" + \"push notifications on other devices until you log back in to them\") + \".\"\n });\n },\n\n _onAddEmailEditFinished: function _onAddEmailEditFinished(value, shouldSubmit) {\n if (!shouldSubmit) return;\n this._addEmail();\n },\n\n _addEmail: function _addEmail() {\n var _this5 = this;\n\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n\n var emailAddress = this.refs.add_email_input.value;\n if (!Email.looksValid(emailAddress)) {\n Modal.createTrackedDialog('Invalid email address', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Invalid Email Address\"),\n description: (0, _languageHandler._t)(\"This doesn't appear to be a valid email address\")\n });\n return;\n }\n this._addThreepid = new AddThreepid();\n // we always bind emails when registering, so let's do the\n // same here.\n this._addThreepid.addEmailAddress(emailAddress, true).done(function () {\n Modal.createTrackedDialog('Verification Pending', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Verification Pending\"),\n description: (0, _languageHandler._t)(\"Please check your email and click on the link it contains. Once this \" + \"is done, click continue.\"),\n button: (0, _languageHandler._t)('Continue'),\n onFinished: _this5.onEmailDialogFinished\n });\n }, function (err) {\n _this5.setState({ email_add_pending: false });\n console.error(\"Unable to add email address \" + emailAddress + \" \" + err);\n Modal.createTrackedDialog('Unable to add email address', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Unable to add email address\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n ReactDOM.findDOMNode(this.refs.add_email_input).blur();\n this.setState({ email_add_pending: true });\n },\n\n onRemoveThreepidClicked: function onRemoveThreepidClicked(threepid) {\n var _this6 = this;\n\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n Modal.createTrackedDialog('Remove 3pid', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Remove Contact Information?\"),\n description: (0, _languageHandler._t)(\"Remove %(threePid)s?\", { threePid: threepid.address }),\n button: (0, _languageHandler._t)('Remove'),\n onFinished: function onFinished(submit) {\n if (submit) {\n _this6.setState({\n phase: \"UserSettings.LOADING\"\n });\n MatrixClientPeg.get().deleteThreePid(threepid.medium, threepid.address).then(function () {\n return _this6._refreshFromServer();\n }).catch(function (err) {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Unable to remove contact information: \" + err);\n Modal.createTrackedDialog('Remove 3pid failed', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Unable to remove contact information\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n }).done();\n }\n }\n });\n },\n\n onEmailDialogFinished: function onEmailDialogFinished(ok) {\n if (ok) {\n this.verifyEmailAddress();\n } else {\n this.setState({ email_add_pending: false });\n }\n },\n\n verifyEmailAddress: function verifyEmailAddress() {\n var _this7 = this;\n\n this._addThreepid.checkEmailLinkClicked().done(function () {\n _this7._addThreepid = null;\n _this7.setState({\n phase: \"UserSettings.LOADING\"\n });\n _this7._refreshFromServer();\n _this7.setState({ email_add_pending: false });\n }, function (err) {\n _this7.setState({ email_add_pending: false });\n if (err.errcode == 'M_THREEPID_AUTH_FAILED') {\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n var message = (0, _languageHandler._t)(\"Unable to verify email address.\") + \" \" + (0, _languageHandler._t)(\"Please check your email and click on the link it contains. Once this is done, click continue.\");\n Modal.createTrackedDialog('Verification Pending', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Verification Pending\"),\n description: message,\n button: (0, _languageHandler._t)('Continue'),\n onFinished: _this7.onEmailDialogFinished\n });\n } else {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Unable to verify email address: \" + err);\n Modal.createTrackedDialog('Unable to verify email address', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Unable to verify email address.\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n }\n });\n },\n\n _onDeactivateAccountClicked: function _onDeactivateAccountClicked() {\n var DeactivateAccountDialog = sdk.getComponent(\"dialogs.DeactivateAccountDialog\");\n Modal.createTrackedDialog('Deactivate Account', '', DeactivateAccountDialog, {});\n },\n\n _onBugReportClicked: function _onBugReportClicked() {\n var BugReportDialog = sdk.getComponent(\"dialogs.BugReportDialog\");\n if (!BugReportDialog) {\n return;\n }\n Modal.createTrackedDialog('Bug Report Dialog', '', BugReportDialog, {});\n },\n\n _onClearCacheClicked: function _onClearCacheClicked() {\n if (!PlatformPeg.get()) return;\n\n MatrixClientPeg.get().stopClient();\n MatrixClientPeg.get().store.deleteAllData().done(function () {\n PlatformPeg.get().reload();\n });\n },\n\n _onInviteStateChange: function _onInviteStateChange(event, member, oldMembership) {\n if (member.userId === this._me && oldMembership === \"invite\") {\n this.forceUpdate();\n }\n },\n\n _onRejectAllInvitesClicked: function _onRejectAllInvitesClicked(rooms, ev) {\n var _this8 = this;\n\n this.setState({\n rejectingInvites: true\n });\n // reject the invites\n var promises = rooms.map(function (room) {\n return MatrixClientPeg.get().leave(room.roomId).catch(function (e) {\n // purposefully drop errors to the floor: we'll just have a non-zero number on the UI\n // after trying to reject all the invites.\n });\n });\n _bluebird2.default.all(promises).then(function () {\n _this8.setState({\n rejectingInvites: false\n });\n });\n },\n\n _onExportE2eKeysClicked: function _onExportE2eKeysClicked() {\n Modal.createTrackedDialogAsync('Export E2E Keys', '', function (cb) {\n require.ensure(['../../async-components/views/dialogs/ExportE2eKeysDialog'], function () {\n cb(require('../../async-components/views/dialogs/ExportE2eKeysDialog'));\n }, \"e2e-export\");\n }, {\n matrixClient: MatrixClientPeg.get()\n });\n },\n\n _onImportE2eKeysClicked: function _onImportE2eKeysClicked() {\n Modal.createTrackedDialogAsync('Import E2E Keys', '', function (cb) {\n require.ensure(['../../async-components/views/dialogs/ImportE2eKeysDialog'], function () {\n cb(require('../../async-components/views/dialogs/ImportE2eKeysDialog'));\n }, \"e2e-export\");\n }, {\n matrixClient: MatrixClientPeg.get()\n });\n },\n\n _renderGroupSettings: function _renderGroupSettings() {\n var GroupUserSettings = sdk.getComponent('groups.GroupUserSettings');\n return React.createElement(GroupUserSettings, null);\n },\n\n _renderReferral: function _renderReferral() {\n var teamToken = this.props.teamToken;\n if (!teamToken) {\n return null;\n }\n if (typeof teamToken !== 'string') {\n console.warn('Team token not a string');\n return null;\n }\n var href = (this.props.referralBaseUrl || window.location.origin) + ('/#/register?referrer=' + this._me + '&team_token=' + teamToken);\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n 'Referral'\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n (0, _languageHandler._t)(\"Refer a friend to Riot:\"),\n ' ',\n React.createElement(\n 'a',\n { href: href },\n href\n )\n )\n );\n },\n\n onLanguageChange: function onLanguageChange(newLang) {\n if (this.state.language !== newLang) {\n _SettingsStore2.default.setValue(\"language\", null, _SettingsStore.SettingLevel.DEVICE, newLang);\n this.setState({\n language: newLang\n });\n PlatformPeg.get().reload();\n }\n },\n\n _renderLanguageSetting: function _renderLanguageSetting() {\n var LanguageDropdown = sdk.getComponent('views.elements.LanguageDropdown');\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'label',\n { htmlFor: 'languageSelector' },\n (0, _languageHandler._t)('Interface Language')\n ),\n React.createElement(LanguageDropdown, { ref: 'language', onOptionChange: this.onLanguageChange,\n className: 'mx_UserSettings_language',\n value: this.state.language\n })\n );\n },\n\n _renderUserInterfaceSettings: function _renderUserInterfaceSettings() {\n // TODO: this ought to be a separate component so that we don't need\n // to rebind the onChange each time we render\n var onChange = function onChange(e) {\n return _SettingsStore2.default.setValue(\"autocompleteDelay\", null, _SettingsStore.SettingLevel.DEVICE, e.target.value);\n };\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"User Interface\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n SIMPLE_SETTINGS.map(this._renderAccountSetting),\n THEMES.map(this._renderThemeOption),\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'strong',\n null,\n (0, _languageHandler._t)('Autocomplete Delay (ms):')\n )\n ),\n React.createElement(\n 'td',\n null,\n React.createElement('input', {\n type: 'number',\n defaultValue: _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, \"autocompleteDelay\"),\n onChange: onChange\n })\n )\n )\n )\n ),\n this._renderLanguageSetting()\n )\n );\n },\n\n _renderAccountSetting: function _renderAccountSetting(setting) {\n var SettingsFlag = sdk.getComponent(\"elements.SettingsFlag\");\n return React.createElement(\n 'div',\n { className: 'mx_UserSettings_toggle', key: setting.id },\n React.createElement(SettingsFlag, { name: setting.id,\n label: setting.label,\n level: _SettingsStore.SettingLevel.ACCOUNT,\n onChange: setting.fn })\n );\n },\n\n _renderThemeOption: function _renderThemeOption(setting) {\n var SettingsFlag = sdk.getComponent(\"elements.SettingsFlag\");\n var onChange = function onChange(v) {\n return dis.dispatch({ action: 'set_theme', value: setting.value });\n };\n return React.createElement(\n 'div',\n { className: 'mx_UserSettings_toggle', key: setting.id + '_' + setting.value },\n React.createElement(SettingsFlag, { name: 'theme',\n label: setting.label,\n level: _SettingsStore.SettingLevel.ACCOUNT,\n onChange: onChange,\n group: 'theme',\n value: setting.value })\n );\n },\n\n _renderCryptoInfo: function _renderCryptoInfo() {\n var client = MatrixClientPeg.get();\n var deviceId = client.deviceId;\n var identityKey = client.getDeviceEd25519Key();\n if (!identityKey) {\n identityKey = (0, _languageHandler._t)(\"<not supported>\");\n } else {\n identityKey = FormattingUtils.formatCryptoKey(identityKey);\n }\n\n var importExportButtons = null;\n\n if (client.isCryptoEnabled) {\n importExportButtons = React.createElement(\n 'div',\n { className: 'mx_UserSettings_importExportButtons' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_button',\n onClick: this._onExportE2eKeysClicked },\n (0, _languageHandler._t)(\"Export E2E room keys\")\n ),\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_button',\n onClick: this._onImportE2eKeysClicked },\n (0, _languageHandler._t)(\"Import E2E room keys\")\n )\n );\n }\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Cryptography\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section mx_UserSettings_cryptoSection' },\n React.createElement(\n 'ul',\n null,\n React.createElement(\n 'li',\n null,\n React.createElement(\n 'label',\n null,\n (0, _languageHandler._t)(\"Device ID:\")\n ),\n React.createElement(\n 'span',\n null,\n React.createElement(\n 'code',\n null,\n deviceId\n )\n )\n ),\n React.createElement(\n 'li',\n null,\n React.createElement(\n 'label',\n null,\n (0, _languageHandler._t)(\"Device key:\")\n ),\n React.createElement(\n 'span',\n null,\n React.createElement(\n 'code',\n null,\n React.createElement(\n 'b',\n null,\n identityKey\n )\n )\n )\n )\n ),\n importExportButtons\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n CRYPTO_SETTINGS.map(this._renderDeviceSetting)\n )\n );\n },\n\n _renderIgnoredUsers: function _renderIgnoredUsers() {\n if (this.state.ignoredUsers.length > 0) {\n var updateHandler = this._refreshIgnoredUsers;\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Ignored Users\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section mx_UserSettings_ignoredUsersSection' },\n React.createElement(\n 'ul',\n null,\n this.state.ignoredUsers.map(function (userId) {\n return React.createElement(IgnoredUser, { key: userId,\n userId: userId,\n onUnignored: updateHandler });\n })\n )\n )\n );\n } else return React.createElement('div', null);\n },\n\n _renderDeviceSetting: function _renderDeviceSetting(setting) {\n var SettingsFlag = sdk.getComponent(\"elements.SettingsFlag\");\n return React.createElement(\n 'div',\n { className: 'mx_UserSettings_toggle', key: setting.id },\n React.createElement(SettingsFlag, { name: setting.id,\n label: setting.label,\n level: _SettingsStore.SettingLevel.DEVICE,\n onChange: setting.fn })\n );\n },\n\n _renderDevicesPanel: function _renderDevicesPanel() {\n var DevicesPanel = sdk.getComponent('settings.DevicesPanel');\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Devices\")\n ),\n React.createElement(DevicesPanel, { className: 'mx_UserSettings_section' })\n );\n },\n\n _renderBugReport: function _renderBugReport() {\n if (!SdkConfig.get().bug_report_endpoint_url) {\n return React.createElement('div', null);\n }\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Submit Debug Logs\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"If you've submitted a bug via GitHub, debug logs can help \" + \"us track down the problem. Debug logs contain application \" + \"usage data including your username, the IDs or aliases of \" + \"the rooms or groups you have visited and the usernames of \" + \"other users. They do not contain messages.\")\n ),\n React.createElement(\n 'button',\n { className: 'mx_UserSettings_button',\n onClick: this._onBugReportClicked },\n (0, _languageHandler._t)('Submit debug logs')\n )\n )\n );\n },\n\n _renderAnalyticsControl: function _renderAnalyticsControl() {\n if (!SdkConfig.get().piwik) return React.createElement('div', null);\n\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Analytics')\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n (0, _languageHandler._t)('Riot collects anonymous analytics to allow us to improve the application.'),\n React.createElement('br', null),\n (0, _languageHandler._t)('Privacy is important to us, so we don\\'t collect any personal' + ' or identifiable data for our analytics.'),\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_advanced_spoiler', onClick: _Analytics2.default.showDetailsModal },\n (0, _languageHandler._t)('Learn more about how we use analytics.')\n ),\n ANALYTICS_SETTINGS.map(this._renderDeviceSetting)\n )\n );\n },\n\n _renderLabs: function _renderLabs() {\n var _this9 = this;\n\n var features = [];\n _SettingsStore2.default.getLabsFeatures().forEach(function (featureId) {\n // TODO: this ought to be a separate component so that we don't need\n // to rebind the onChange each time we render\n var onChange = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(e) {\n var checked, confirmed;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n checked = e.target.checked;\n\n if (!(featureId === \"feature_lazyloading\")) {\n _context.next = 8;\n break;\n }\n\n _context.next = 4;\n return (0, _bluebird.resolve)(_this9._onLazyLoadChanging(checked));\n\n case 4:\n confirmed = _context.sent;\n\n if (confirmed) {\n _context.next = 8;\n break;\n }\n\n e.preventDefault();\n return _context.abrupt('return');\n\n case 8:\n _context.next = 10;\n return (0, _bluebird.resolve)(_SettingsStore2.default.setFeatureEnabled(featureId, checked));\n\n case 10:\n _this9.forceUpdate();\n\n case 11:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this9);\n }));\n\n return function onChange(_x3) {\n return _ref.apply(this, arguments);\n };\n }();\n\n features.push(React.createElement(\n 'div',\n { key: featureId, className: 'mx_UserSettings_toggle' },\n React.createElement('input', {\n type: 'checkbox',\n id: featureId,\n name: featureId,\n checked: _SettingsStore2.default.isFeatureEnabled(featureId),\n onChange: onChange\n }),\n React.createElement(\n 'label',\n { htmlFor: featureId },\n _SettingsStore2.default.getDisplayName(featureId)\n )\n ));\n });\n\n // No labs section when there are no features in labs\n if (features.length === 0) {\n return null;\n }\n\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Labs\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"These are experimental features that may break in unexpected ways\"),\n '. ',\n (0, _languageHandler._t)(\"Use with caution\"),\n '.'\n ),\n features\n )\n );\n },\n\n _onLazyLoadChanging: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(enabling) {\n var supported;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!enabling) {\n _context2.next = 8;\n break;\n }\n\n _context2.next = 3;\n return (0, _bluebird.resolve)(MatrixClientPeg.get().doesServerSupportLazyLoading());\n\n case 3:\n supported = _context2.sent;\n\n if (supported) {\n _context2.next = 8;\n break;\n }\n\n _context2.next = 7;\n return (0, _bluebird.resolve)(new _bluebird2.default(function (resolve) {\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n Modal.createDialog(QuestionDialog, {\n title: (0, _languageHandler._t)(\"Lazy loading members not supported\"),\n description: React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Lazy loading is not supported by your \" + \"current homeserver.\")\n ),\n button: (0, _languageHandler._t)(\"OK\"),\n onFinished: resolve\n });\n }));\n\n case 7:\n return _context2.abrupt('return', false);\n\n case 8:\n return _context2.abrupt('return', true);\n\n case 9:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function _onLazyLoadChanging(_x4) {\n return _ref2.apply(this, arguments);\n }\n\n return _onLazyLoadChanging;\n }(),\n\n _renderDeactivateAccount: function _renderDeactivateAccount() {\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Deactivate Account\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_button danger',\n onClick: this._onDeactivateAccountClicked },\n ' ',\n (0, _languageHandler._t)(\"Deactivate my account\")\n )\n )\n );\n },\n\n _renderTermsAndConditionsLinks: function _renderTermsAndConditionsLinks() {\n if (SdkConfig.get().terms_and_conditions_links) {\n var tncLinks = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(SdkConfig.get().terms_and_conditions_links), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var tncEntry = _step.value;\n\n tncLinks.push(React.createElement(\n 'div',\n { key: tncEntry.url },\n React.createElement(\n 'a',\n { href: tncEntry.url, rel: 'noopener', target: '_blank' },\n tncEntry.text\n )\n ));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Legal\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n tncLinks\n )\n );\n } else {\n return null;\n }\n },\n\n _renderClearCache: function _renderClearCache() {\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Clear Cache\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_button danger',\n onClick: this._onClearCacheClicked },\n (0, _languageHandler._t)(\"Clear Cache and Reload\")\n )\n )\n );\n },\n\n _renderCheckUpdate: function _renderCheckUpdate() {\n var platform = PlatformPeg.get();\n if ('canSelfUpdate' in platform && platform.canSelfUpdate() && 'startUpdateCheck' in platform) {\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Updates')\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_button', onClick: platform.startUpdateCheck },\n (0, _languageHandler._t)('Check for update')\n )\n )\n );\n }\n return React.createElement('div', null);\n },\n\n _renderBulkOptions: function _renderBulkOptions() {\n var _this10 = this;\n\n var invitedRooms = MatrixClientPeg.get().getRooms().filter(function (r) {\n return r.hasMembershipState(_this10._me, \"invite\");\n });\n if (invitedRooms.length === 0) {\n return null;\n }\n\n var Spinner = sdk.getComponent(\"elements.Spinner\");\n\n var reject = React.createElement(Spinner, null);\n if (!this.state.rejectingInvites) {\n // bind() the invited rooms so any new invites that may come in as this button is clicked\n // don't inadvertently get rejected as well.\n var onClick = this._onRejectAllInvitesClicked.bind(this, invitedRooms);\n reject = React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_button danger',\n onClick: onClick },\n (0, _languageHandler._t)(\"Reject all %(invitedRooms)s invites\", { invitedRooms: invitedRooms.length })\n );\n }\n\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Bulk Options\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n reject\n )\n );\n },\n\n _renderElectronSettings: function _renderElectronSettings() {\n var settings = this.state.electron_settings;\n if (!settings) return;\n\n // TODO: This should probably be a granular setting, but it only applies to electron\n // and ends up being get/set outside of matrix anyways (local system setting).\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Desktop specific')\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_toggle' },\n React.createElement('input', { type: 'checkbox',\n name: 'auto-launch',\n defaultChecked: settings['auto-launch'],\n onChange: this._onAutoLaunchChanged\n }),\n React.createElement(\n 'label',\n { htmlFor: 'auto-launch' },\n (0, _languageHandler._t)('Start automatically after system login')\n )\n )\n )\n );\n },\n\n _onAutoLaunchChanged: function _onAutoLaunchChanged(e) {\n var _require3 = require('electron'),\n ipcRenderer = _require3.ipcRenderer;\n\n ipcRenderer.send('settings_set', 'auto-launch', e.target.checked);\n },\n\n _mapWebRtcDevicesToSpans: function _mapWebRtcDevicesToSpans(devices) {\n return devices.map(function (device) {\n return React.createElement(\n 'span',\n { key: device.deviceId },\n device.label\n );\n });\n },\n\n _setAudioOutput: function _setAudioOutput(deviceId) {\n this.setState({ activeAudioOutput: deviceId });\n CallMediaHandler.setAudioOutput(deviceId);\n },\n\n _setAudioInput: function _setAudioInput(deviceId) {\n this.setState({ activeAudioInput: deviceId });\n CallMediaHandler.setAudioInput(deviceId);\n },\n\n _setVideoInput: function _setVideoInput(deviceId) {\n this.setState({ activeVideoInput: deviceId });\n CallMediaHandler.setVideoInput(deviceId);\n },\n\n _requestMediaPermissions: function _requestMediaPermissions(event) {\n var getUserMedia = window.navigator.getUserMedia || window.navigator.webkitGetUserMedia || window.navigator.mozGetUserMedia;\n if (getUserMedia) {\n return getUserMedia.apply(window.navigator, [{ video: true, audio: true }, this._refreshMediaDevices, function () {\n var ErrorDialog = sdk.getComponent('dialogs.ErrorDialog');\n Modal.createTrackedDialog('No media permissions', '', ErrorDialog, {\n title: (0, _languageHandler._t)('No media permissions'),\n description: (0, _languageHandler._t)('You may need to manually permit Riot to access your microphone/webcam')\n });\n }]);\n }\n },\n\n _renderWebRtcDeviceSettings: function _renderWebRtcDeviceSettings() {\n if (this.state.mediaDevices === false) {\n return React.createElement(\n _AccessibleButton2.default,\n { element: 'p', className: 'mx_UserSettings_link', onClick: this._requestMediaPermissions },\n (0, _languageHandler._t)('Missing Media Permissions, click here to request.')\n );\n } else if (!this.state.mediaDevices) return;\n\n var Dropdown = sdk.getComponent('elements.Dropdown');\n\n var speakerDropdown = React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('No Audio Outputs detected')\n );\n var microphoneDropdown = React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('No Microphones detected')\n );\n var webcamDropdown = React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('No Webcams detected')\n );\n\n var defaultOption = {\n deviceId: '',\n label: (0, _languageHandler._t)('Default Device')\n };\n\n var audioOutputs = this.state.mediaDevices.audiooutput.slice(0);\n if (audioOutputs.length > 0) {\n var defaultOutput = '';\n if (!audioOutputs.some(function (input) {\n return input.deviceId === 'default';\n })) {\n audioOutputs.unshift(defaultOption);\n } else {\n defaultOutput = 'default';\n }\n\n speakerDropdown = React.createElement(\n 'div',\n null,\n React.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)('Audio Output')\n ),\n React.createElement(\n Dropdown,\n {\n className: 'mx_UserSettings_webRtcDevices_dropdown',\n value: this.state.activeAudioOutput || defaultOutput,\n onOptionChange: this._setAudioOutput },\n this._mapWebRtcDevicesToSpans(audioOutputs)\n )\n );\n }\n\n var audioInputs = this.state.mediaDevices.audioinput.slice(0);\n if (audioInputs.length > 0) {\n var defaultInput = '';\n if (!audioInputs.some(function (input) {\n return input.deviceId === 'default';\n })) {\n audioInputs.unshift(defaultOption);\n } else {\n defaultInput = 'default';\n }\n\n microphoneDropdown = React.createElement(\n 'div',\n null,\n React.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)('Microphone')\n ),\n React.createElement(\n Dropdown,\n {\n className: 'mx_UserSettings_webRtcDevices_dropdown',\n value: this.state.activeAudioInput || defaultInput,\n onOptionChange: this._setAudioInput },\n this._mapWebRtcDevicesToSpans(audioInputs)\n )\n );\n }\n\n var videoInputs = this.state.mediaDevices.videoinput.slice(0);\n if (videoInputs.length > 0) {\n var _defaultInput = '';\n if (!videoInputs.some(function (input) {\n return input.deviceId === 'default';\n })) {\n videoInputs.unshift(defaultOption);\n } else {\n _defaultInput = 'default';\n }\n\n webcamDropdown = React.createElement(\n 'div',\n null,\n React.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)('Camera')\n ),\n React.createElement(\n Dropdown,\n {\n className: 'mx_UserSettings_webRtcDevices_dropdown',\n value: this.state.activeVideoInput || _defaultInput,\n onOptionChange: this._setVideoInput },\n this._mapWebRtcDevicesToSpans(videoInputs)\n )\n );\n }\n\n return React.createElement(\n 'div',\n null,\n speakerDropdown,\n microphoneDropdown,\n webcamDropdown\n );\n },\n\n _renderWebRtcSettings: function _renderWebRtcSettings() {\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('VoIP')\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n WEBRTC_SETTINGS.map(this._renderDeviceSetting),\n this._renderWebRtcDeviceSettings()\n )\n );\n },\n\n onSelfShareClick: function onSelfShareClick() {\n var cli = MatrixClientPeg.get();\n var ShareDialog = sdk.getComponent(\"dialogs.ShareDialog\");\n Modal.createTrackedDialog('share self dialog', '', ShareDialog, {\n target: cli.getUser(this._me)\n });\n },\n\n _showSpoiler: function _showSpoiler(event) {\n var target = event.target;\n target.innerHTML = target.getAttribute('data-spoiler');\n\n var range = document.createRange();\n range.selectNodeContents(target);\n\n var selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n\n nameForMedium: function nameForMedium(medium) {\n if (medium === 'msisdn') return (0, _languageHandler._t)('Phone');\n if (medium === 'email') return (0, _languageHandler._t)('Email');\n return medium[0].toUpperCase() + medium.slice(1);\n },\n\n presentableTextForThreepid: function presentableTextForThreepid(threepid) {\n if (threepid.medium === 'msisdn') {\n return '+' + threepid.address;\n } else {\n return threepid.address;\n }\n },\n\n render: function render() {\n var _this11 = this;\n\n var Loader = sdk.getComponent(\"elements.Spinner\");\n switch (this.state.phase) {\n case \"UserSettings.LOADING\":\n return React.createElement(Loader, null);\n case \"UserSettings.DISPLAY\":\n break; // quit the switch to return the common state\n default:\n throw new Error(\"Unknown state.phase => \" + this.state.phase);\n }\n // can only get here if phase is UserSettings.DISPLAY\n var SimpleRoomHeader = sdk.getComponent('rooms.SimpleRoomHeader');\n var ChangeDisplayName = sdk.getComponent(\"views.settings.ChangeDisplayName\");\n var ChangePassword = sdk.getComponent(\"views.settings.ChangePassword\");\n var ChangeAvatar = sdk.getComponent('settings.ChangeAvatar');\n var Notifications = sdk.getComponent(\"settings.Notifications\");\n var EditableText = sdk.getComponent('elements.EditableText');\n var GeminiScrollbarWrapper = sdk.getComponent(\"elements.GeminiScrollbarWrapper\");\n\n var avatarUrl = this.state.avatarUrl ? MatrixClientPeg.get().mxcUrlToHttp(this.state.avatarUrl) : null;\n\n var threepidsSection = this.state.threepids.map(function (val, pidIndex) {\n var id = \"3pid-\" + val.address;\n // TODO: make a separate component to avoid having to rebind onClick\n // each time we render\n var onRemoveClick = function onRemoveClick(e) {\n return _this11.onRemoveThreepidClicked(val);\n };\n return React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileTableRow', key: pidIndex },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileLabelCell' },\n React.createElement(\n 'label',\n { htmlFor: id },\n _this11.nameForMedium(val.medium)\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileInputCell' },\n React.createElement('input', { type: 'text', key: val.address, id: id,\n value: _this11.presentableTextForThreepid(val), disabled: true\n })\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_threepidButton mx_filterFlipColor' },\n React.createElement(_AccessibleButton2.default, { element: 'img', src: 'img/cancel-small.svg', width: '14', height: '14', alt: (0, _languageHandler._t)(\"Remove\"),\n onClick: onRemoveClick })\n )\n );\n });\n var addEmailSection = void 0;\n if (this.state.email_add_pending) {\n addEmailSection = React.createElement(Loader, { key: '_email_add_spinner' });\n } else {\n addEmailSection = React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileTableRow', key: '_newEmail' },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileLabelCell' },\n React.createElement(\n 'label',\n null,\n (0, _languageHandler._t)('Email')\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileInputCell' },\n React.createElement(EditableText, {\n ref: 'add_email_input',\n className: 'mx_UserSettings_editable',\n placeholderClassName: 'mx_UserSettings_threepidPlaceholder',\n placeholder: (0, _languageHandler._t)(\"Add email address\"),\n blurToCancel: false,\n onValueChanged: this._onAddEmailEditFinished })\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_threepidButton mx_filterFlipColor' },\n React.createElement(_AccessibleButton2.default, { element: 'img', src: 'img/plus.svg', width: '14', height: '14', alt: (0, _languageHandler._t)(\"Add\"), onClick: this._addEmail })\n )\n );\n }\n var AddPhoneNumber = sdk.getComponent('views.settings.AddPhoneNumber');\n var addMsisdnSection = React.createElement(AddPhoneNumber, { key: '_addMsisdn', onThreepidAdded: this._refreshFromServer });\n threepidsSection.push(addEmailSection);\n threepidsSection.push(addMsisdnSection);\n\n var accountJsx = React.createElement(ChangePassword, {\n className: 'mx_UserSettings_accountTable',\n rowClassName: 'mx_UserSettings_profileTableRow',\n rowLabelClassName: 'mx_UserSettings_profileLabelCell',\n rowInputClassName: 'mx_UserSettings_profileInputCell',\n buttonClassName: 'mx_UserSettings_button mx_UserSettings_changePasswordButton',\n onError: this.onPasswordChangeError,\n onFinished: this.onPasswordChanged });\n\n var notificationArea = void 0;\n if (this.state.threepids !== undefined) {\n notificationArea = React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Notifications\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(Notifications, { threepids: this.state.threepids, brand: this.props.brand })\n )\n );\n }\n\n var olmVersion = MatrixClientPeg.get().olmVersion;\n // If the olmVersion is not defined then either crypto is disabled, or\n // we are using a version old version of olm. We assume the former.\n var olmVersionString = \"<not-enabled>\";\n if (olmVersion !== undefined) {\n olmVersionString = olmVersion[0] + '.' + olmVersion[1] + '.' + olmVersion[2];\n }\n\n return React.createElement(\n 'div',\n { className: 'mx_UserSettings' },\n React.createElement(SimpleRoomHeader, {\n title: (0, _languageHandler._t)(\"Settings\"),\n onCancelClick: this.props.onClose\n }),\n React.createElement(\n GeminiScrollbarWrapper,\n {\n className: 'mx_UserSettings_body',\n autoshow: true },\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Profile\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileTable' },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileTableRow' },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileLabelCell' },\n React.createElement(\n 'label',\n { htmlFor: 'displayName' },\n (0, _languageHandler._t)('Display name')\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileInputCell' },\n React.createElement(ChangeDisplayName, null)\n )\n ),\n threepidsSection\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_avatarPicker' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_avatarPicker_remove', onClick: this.onAvatarRemoveClick },\n React.createElement('img', { src: 'img/cancel.svg',\n width: '15', height: '15',\n className: 'mx_filterFlipColor',\n alt: (0, _languageHandler._t)(\"Remove avatar\"),\n title: (0, _languageHandler._t)(\"Remove avatar\") })\n ),\n React.createElement(\n 'div',\n { onClick: this.onAvatarPickerClick, className: 'mx_UserSettings_avatarPicker_imgContainer' },\n React.createElement(ChangeAvatar, { ref: 'changeAvatar', initialAvatarUrl: avatarUrl,\n showUploadSection: false, className: 'mx_UserSettings_avatarPicker_img' })\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_avatarPicker_edit' },\n React.createElement(\n 'label',\n { htmlFor: 'avatarInput', ref: 'file_label' },\n React.createElement('img', { src: 'img/camera.svg', className: 'mx_filterFlipColor',\n alt: (0, _languageHandler._t)(\"Upload avatar\"), title: (0, _languageHandler._t)(\"Upload avatar\"),\n width: '17', height: '15' })\n ),\n React.createElement('input', { id: 'avatarInput', type: 'file', onChange: this.onAvatarSelected })\n )\n )\n ),\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Account\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section cadcampoHide' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_logout mx_UserSettings_button', onClick: this.onLogoutClicked },\n (0, _languageHandler._t)(\"Sign out\")\n ),\n this.state.userHasGeneratedPassword ? React.createElement(\n 'div',\n { className: 'mx_UserSettings_passwordWarning' },\n (0, _languageHandler._t)(\"To return to your account in future you need to set a password\")\n ) : null,\n accountJsx\n ),\n this._renderGroupSettings(),\n this._renderReferral(),\n notificationArea,\n this._renderUserInterfaceSettings(),\n this._renderLabs(),\n this._renderWebRtcSettings(),\n this._renderDevicesPanel(),\n this._renderCryptoInfo(),\n this._renderIgnoredUsers(),\n this._renderBulkOptions(),\n this._renderBugReport(),\n PlatformPeg.get().isElectron() && this._renderElectronSettings(),\n this._renderAnalyticsControl(),\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Advanced\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_advanced' },\n (0, _languageHandler._t)(\"Logged in as:\") + ' ',\n React.createElement(\n 'a',\n { onClick: this.onSelfShareClick, className: 'mx_UserSettings_link' },\n this._me\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_advanced' },\n (0, _languageHandler._t)('Access Token:') + ' ',\n React.createElement(\n _AccessibleButton2.default,\n { element: 'span', className: 'mx_UserSettings_advanced_spoiler',\n onClick: this._showSpoiler,\n 'data-spoiler': MatrixClientPeg.get().getAccessToken() },\n '<',\n (0, _languageHandler._t)(\"click to reveal\"),\n '>'\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_advanced' },\n (0, _languageHandler._t)(\"Homeserver is\"),\n ' ',\n MatrixClientPeg.get().getHomeserverUrl()\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_advanced' },\n (0, _languageHandler._t)(\"Identity Server is\"),\n ' ',\n MatrixClientPeg.get().getIdentityServerUrl()\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_advanced' },\n (0, _languageHandler._t)('matrix-react-sdk version:'),\n ' ',\n REACT_SDK_VERSION !== '<local>' ? gHVersionLabel('matrix-org/matrix-react-sdk', REACT_SDK_VERSION) : REACT_SDK_VERSION,\n React.createElement('br', null),\n (0, _languageHandler._t)('riot-web version:'),\n ' ',\n this.state.vectorVersion !== undefined ? gHVersionLabel('vector-im/riot-web', this.state.vectorVersion) : 'unknown',\n React.createElement('br', null),\n (0, _languageHandler._t)(\"olm version:\"),\n ' ',\n olmVersionString,\n React.createElement('br', null)\n )\n ),\n this._renderCheckUpdate(),\n this._renderClearCache(),\n this._renderDeactivateAccount(),\n this._renderTermsAndConditionsLinks()\n )\n );\n }\n});\n//# sourceMappingURL=UserSettings.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _SyntaxHighlight = require('../views/elements/SyntaxHighlight');\n\nvar _SyntaxHighlight2 = _interopRequireDefault(_SyntaxHighlight);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'ViewSource',\n\n propTypes: {\n content: _propTypes2.default.object.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n componentDidMount: function componentDidMount() {\n document.addEventListener(\"keydown\", this.onKeyDown);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n document.removeEventListener(\"keydown\", this.onKeyDown);\n },\n\n onKeyDown: function onKeyDown(ev) {\n if (ev.keyCode == 27) {\n // escape\n ev.stopPropagation();\n ev.preventDefault();\n this.props.onFinished();\n }\n },\n\n render: function render() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ViewSource' },\n _react2.default.createElement(\n _SyntaxHighlight2.default,\n { className: 'json' },\n (0, _stringify2.default)(this.props.content, null, 2)\n )\n );\n }\n});\n//# sourceMappingURL=ViewSource.js.map","'use strict';\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _PasswordReset = require('../../../PasswordReset');\n\nvar _PasswordReset2 = _interopRequireDefault(_PasswordReset);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'ForgotPassword',\n\n propTypes: {\n defaultHsUrl: _propTypes2.default.string,\n defaultIsUrl: _propTypes2.default.string,\n customHsUrl: _propTypes2.default.string,\n customIsUrl: _propTypes2.default.string,\n onLoginClick: _propTypes2.default.func,\n onRegisterClick: _propTypes2.default.func,\n onComplete: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n enteredHomeserverUrl: this.props.customHsUrl || this.props.defaultHsUrl,\n enteredIdentityServerUrl: this.props.customIsUrl || this.props.defaultIsUrl,\n progress: null,\n password: null,\n password2: null\n };\n },\n\n submitPasswordReset: function submitPasswordReset(hsUrl, identityUrl, email, password) {\n var _this = this;\n\n this.setState({\n progress: \"sending_email\"\n });\n this.reset = new _PasswordReset2.default(hsUrl, identityUrl);\n this.reset.resetPassword(email, password).done(function () {\n _this.setState({\n progress: \"sent_email\"\n });\n }, function (err) {\n _this.showErrorDialog((0, _languageHandler._t)('Failed to send email') + \": \" + err.message);\n _this.setState({\n progress: null\n });\n });\n },\n\n onVerify: function onVerify(ev) {\n var _this2 = this;\n\n ev.preventDefault();\n if (!this.reset) {\n console.error(\"onVerify called before submitPasswordReset!\");\n return;\n }\n this.reset.checkEmailLinkClicked().done(function (res) {\n _this2.setState({ progress: \"complete\" });\n }, function (err) {\n _this2.showErrorDialog(err.message);\n });\n },\n\n onSubmitForm: function onSubmitForm(ev) {\n var _this3 = this;\n\n ev.preventDefault();\n\n if (!this.state.email) {\n this.showErrorDialog((0, _languageHandler._t)('The email address linked to your account must be entered.'));\n } else if (!this.state.password || !this.state.password2) {\n this.showErrorDialog((0, _languageHandler._t)('A new password must be entered.'));\n } else if (this.state.password !== this.state.password2) {\n this.showErrorDialog((0, _languageHandler._t)('New passwords must match each other.'));\n } else {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('Forgot Password Warning', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Warning!'),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Resetting password will currently reset any ' + 'end-to-end encryption keys on all devices, ' + 'making encrypted chat history unreadable, ' + 'unless you first export your room keys and re-import ' + 'them afterwards. In future this will be improved.')\n ),\n button: (0, _languageHandler._t)('Continue'),\n extraButtons: [_react2.default.createElement(\n 'button',\n { key: 'export_keys', className: 'mx_Dialog_primary',\n onClick: this._onExportE2eKeysClicked },\n (0, _languageHandler._t)('Export E2E room keys')\n )],\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n _this3.submitPasswordReset(_this3.state.enteredHomeserverUrl, _this3.state.enteredIdentityServerUrl, _this3.state.email, _this3.state.password);\n }\n }\n });\n }\n },\n\n _onExportE2eKeysClicked: function _onExportE2eKeysClicked() {\n _Modal2.default.createTrackedDialogAsync('Export E2E Keys', 'Forgot Password', function (cb) {\n require.ensure(['../../../async-components/views/dialogs/ExportE2eKeysDialog'], function () {\n cb(require('../../../async-components/views/dialogs/ExportE2eKeysDialog'));\n }, \"e2e-export\");\n }, {\n matrixClient: _MatrixClientPeg2.default.get()\n });\n },\n\n onInputChanged: function onInputChanged(stateKey, ev) {\n this.setState((0, _defineProperty3.default)({}, stateKey, ev.target.value));\n },\n\n onServerConfigChange: function onServerConfigChange(config) {\n var newState = {};\n if (config.hsUrl !== undefined) {\n newState.enteredHomeserverUrl = config.hsUrl;\n }\n if (config.isUrl !== undefined) {\n newState.enteredIdentityServerUrl = config.isUrl;\n }\n this.setState(newState);\n },\n\n showErrorDialog: function showErrorDialog(body, title) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Forgot Password Error', '', ErrorDialog, {\n title: title,\n description: body\n });\n },\n\n render: function render() {\n var LoginPage = _index2.default.getComponent(\"login.LoginPage\");\n var LoginHeader = _index2.default.getComponent(\"login.LoginHeader\");\n var LoginFooter = _index2.default.getComponent(\"login.LoginFooter\");\n var ServerConfig = _index2.default.getComponent(\"login.ServerConfig\");\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n\n var resetPasswordJsx = void 0;\n\n if (this.state.progress === \"sending_email\") {\n resetPasswordJsx = _react2.default.createElement(Spinner, null);\n } else if (this.state.progress === \"sent_email\") {\n resetPasswordJsx = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_prompt' },\n (0, _languageHandler._t)(\"An email has been sent to %(emailAddress)s. Once you've followed the link it contains, \" + \"click below.\", { emailAddress: this.state.email }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { className: 'mx_Login_submit', type: 'button', onClick: this.onVerify,\n value: (0, _languageHandler._t)('I have verified my email address') })\n );\n } else if (this.state.progress === \"complete\") {\n resetPasswordJsx = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_prompt' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Your password has been reset'),\n '.'\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('You have been logged out of all devices and will no longer receive push notifications. ' + 'To re-enable notifications, sign in again on each device'),\n '.'\n ),\n _react2.default.createElement('input', { className: 'mx_Login_submit', type: 'button', onClick: this.props.onComplete,\n value: (0, _languageHandler._t)('Return to login screen') })\n );\n } else {\n var serverConfigSection = void 0;\n if (!_SdkConfig2.default.get()['disable_custom_urls']) {\n serverConfigSection = _react2.default.createElement(ServerConfig, { ref: 'serverConfig',\n withToggleButton: true,\n defaultHsUrl: this.props.defaultHsUrl,\n defaultIsUrl: this.props.defaultIsUrl,\n customHsUrl: this.props.customHsUrl,\n customIsUrl: this.props.customIsUrl,\n onServerConfigChange: this.onServerConfigChange,\n delayTimeMs: 0 });\n }\n\n var LanguageSelector = _index2.default.getComponent('structures.login.LanguageSelector');\n\n resetPasswordJsx = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_prompt' },\n (0, _languageHandler._t)('To reset your password, enter the email address linked to your account'),\n ':'\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'form',\n { onSubmit: this.onSubmitForm },\n _react2.default.createElement('input', { className: 'mx_Login_field', ref: 'user', type: 'text',\n name: 'reset_email' // define a name so browser's password autofill gets less confused\n , value: this.state.email,\n onChange: this.onInputChanged.bind(this, \"email\"),\n placeholder: (0, _languageHandler._t)('Email address'), autoFocus: true }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { className: 'mx_Login_field', ref: 'pass', type: 'password',\n name: 'reset_password',\n value: this.state.password,\n onChange: this.onInputChanged.bind(this, \"password\"),\n placeholder: (0, _languageHandler._t)('New password') }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { className: 'mx_Login_field', ref: 'pass', type: 'password',\n name: 'reset_password_confirm',\n value: this.state.password2,\n onChange: this.onInputChanged.bind(this, \"password2\"),\n placeholder: (0, _languageHandler._t)('Confirm your new password') }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { className: 'mx_Login_submit', type: 'submit', value: (0, _languageHandler._t)('Send Reset Email') })\n ),\n serverConfigSection,\n _react2.default.createElement(\n 'a',\n { className: 'mx_Login_create', onClick: this.props.onLoginClick, href: '#' },\n (0, _languageHandler._t)('Return to login screen')\n ),\n _react2.default.createElement(\n 'a',\n { className: 'mx_Login_create', onClick: this.props.onRegisterClick, href: '#' },\n (0, _languageHandler._t)('Create an account')\n ),\n _react2.default.createElement(LanguageSelector, null),\n _react2.default.createElement(LoginFooter, null)\n )\n );\n }\n\n return _react2.default.createElement(\n LoginPage,\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_box' },\n _react2.default.createElement(LoginHeader, null),\n resetPasswordJsx\n )\n );\n }\n});\n//# sourceMappingURL=ForgotPassword.js.map","'use strict';\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar Matrix = _interopRequireWildcard(_matrixJsSdk);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Allows a user to reset their password on a homeserver.\n *\n * This involves getting an email token from the identity server to \"prove\" that\n * the client owns the given email address, which is then passed to the password\n * API on the homeserver in question with the new password.\n */\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar PasswordReset = function () {\n\n /**\n * Configure the endpoints for password resetting.\n * @param {string} homeserverUrl The URL to the HS which has the account to reset.\n * @param {string} identityUrl The URL to the IS which has linked the email -> mxid mapping.\n */\n function PasswordReset(homeserverUrl, identityUrl) {\n (0, _classCallCheck3.default)(this, PasswordReset);\n\n this.client = Matrix.createClient({\n baseUrl: homeserverUrl,\n idBaseUrl: identityUrl\n });\n this.clientSecret = this.client.generateClientSecret();\n this.identityServerDomain = identityUrl.split(\"://\")[1];\n }\n\n /**\n * Attempt to reset the user's password. This will trigger a side-effect of\n * sending an email to the provided email address.\n * @param {string} emailAddress The email address\n * @param {string} newPassword The new password for the account.\n * @return {Promise} Resolves when the email has been sent. Then call checkEmailLinkClicked().\n */\n\n\n (0, _createClass3.default)(PasswordReset, [{\n key: 'resetPassword',\n value: function resetPassword(emailAddress, newPassword) {\n var _this = this;\n\n this.password = newPassword;\n return this.client.requestPasswordEmailToken(emailAddress, this.clientSecret, 1).then(function (res) {\n _this.sessionId = res.sid;\n return res;\n }, function (err) {\n if (err.errcode === 'M_THREEPID_NOT_FOUND') {\n err.message = (0, _languageHandler._t)('This email address was not found');\n } else if (err.httpStatus) {\n err.message = err.message + (' (Status ' + err.httpStatus + ')');\n }\n throw err;\n });\n }\n\n /**\n * Checks if the email link has been clicked by attempting to change the password\n * for the mxid linked to the email.\n * @return {Promise} Resolves if the password was reset. Rejects with an object\n * with a \"message\" property which contains a human-readable message detailing why\n * the reset failed, e.g. \"There is no mapped matrix user ID for the given email address\".\n */\n\n }, {\n key: 'checkEmailLinkClicked',\n value: function checkEmailLinkClicked() {\n return this.client.setPassword({\n type: \"m.login.email.identity\",\n threepid_creds: {\n sid: this.sessionId,\n client_secret: this.clientSecret,\n id_server: this.identityServerDomain\n }\n }, this.password).catch(function (err) {\n if (err.httpStatus === 401) {\n err.message = (0, _languageHandler._t)('Failed to verify email address: make sure you clicked the link in the email');\n } else if (err.httpStatus === 404) {\n err.message = (0, _languageHandler._t)('Your email address does not appear to be associated with a Matrix ID on this Homeserver.');\n } else if (err.httpStatus) {\n err.message += ' (Status ' + err.httpStatus + ')';\n }\n throw err;\n });\n }\n }]);\n return PasswordReset;\n}();\n\nmodule.exports = PasswordReset;\n//# sourceMappingURL=PasswordReset.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = LanguageSelector;\n\nvar _SdkConfig = require(\"../../../SdkConfig\");\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nvar _SettingsStore = require(\"../../../settings/SettingsStore\");\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _PlatformPeg = require(\"../../../PlatformPeg\");\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _index = require(\"../../../index\");\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction onChange(newLang) {\n if ((0, _languageHandler.getCurrentLanguage)() !== newLang) {\n _SettingsStore2.default.setValue(\"language\", null, _SettingsStore.SettingLevel.DEVICE, newLang);\n _PlatformPeg2.default.get().reload();\n }\n}\n\nfunction LanguageSelector() {\n if (_SdkConfig2.default.get()['disable_login_language_selector']) return _react2.default.createElement(\"div\", null);\n\n var LanguageDropdown = _index2.default.getComponent('views.elements.LanguageDropdown');\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_Login_language_div\" },\n _react2.default.createElement(LanguageDropdown, { onOptionChange: onChange, className: \"mx_Login_language\", value: (0, _languageHandler.getCurrentLanguage)() })\n );\n}\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=LanguageSelector.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Login = require('../../../Login');\n\nvar _Login2 = _interopRequireDefault(_Login);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _ErrorUtils = require('../../../utils/ErrorUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// For validating phone numbers without country codes\nvar PHONE_NUMBER_REGEX = /^[0-9()\\-\\s]*$/;\n\n/**\n * A wire component which glues together login UI components and Login logic\n */\nmodule.exports = _react2.default.createClass({\n displayName: 'Login',\n\n propTypes: {\n onLoggedIn: _propTypes2.default.func.isRequired,\n\n enableGuest: _propTypes2.default.bool,\n\n customHsUrl: _propTypes2.default.string,\n customIsUrl: _propTypes2.default.string,\n defaultHsUrl: _propTypes2.default.string,\n defaultIsUrl: _propTypes2.default.string,\n // Secondary HS which we try to log into if the user is using\n // the default HS but login fails. Useful for migrating to a\n // different home server without confusing users.\n fallbackHsUrl: _propTypes2.default.string,\n\n defaultDeviceDisplayName: _propTypes2.default.string,\n\n // login shouldn't know or care how registration is done.\n onRegisterClick: _propTypes2.default.func.isRequired,\n\n // login shouldn't care how password recovery is done.\n onForgotPasswordClick: _propTypes2.default.func,\n onCancelClick: _propTypes2.default.func,\n onServerConfigChange: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n busy: false,\n errorText: null,\n loginIncorrect: false,\n enteredHomeserverUrl: this.props.customHsUrl || this.props.defaultHsUrl,\n enteredIdentityServerUrl: this.props.customIsUrl || this.props.defaultIsUrl,\n\n // used for preserving form values when changing homeserver\n username: \"\",\n phoneCountry: null,\n phoneNumber: \"\",\n currentFlow: \"m.login.password\"\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n\n // map from login step type to a function which will render a control\n // letting you do that login type\n this._stepRendererMap = {\n 'm.login.password': this._renderPasswordStep,\n 'm.login.cas': this._renderCasStep\n };\n\n this._initLoginLogic();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n onPasswordLoginError: function onPasswordLoginError(errorText) {\n this.setState({\n errorText: errorText,\n loginIncorrect: Boolean(errorText)\n });\n },\n\n onPasswordLogin: function onPasswordLogin(username, phoneCountry, phoneNumber, password) {\n var _this = this;\n\n this.setState({\n busy: true,\n errorText: null,\n loginIncorrect: false\n });\n\n this._loginLogic.loginViaPassword(username, phoneCountry, phoneNumber, password).then(function (data) {\n _this.props.onLoggedIn(data);\n }, function (error) {\n if (_this._unmounted) {\n return;\n }\n var errorText = void 0;\n\n // Some error strings only apply for logging in\n var usingEmail = username.indexOf(\"@\") > 0;\n if (error.httpStatus === 400 && usingEmail) {\n errorText = (0, _languageHandler._t)('This Home Server does not support login using email address.');\n } else if (error.errcode == 'M_RESOURCE_LIMIT_EXCEEDED') {\n var errorTop = (0, _ErrorUtils.messageForResourceLimitError)(error.data.limit_type, error.data.admin_contact, {\n 'monthly_active_user': (0, _languageHandler._td)(\"This homeserver has hit its Monthly Active User limit.\"),\n '': (0, _languageHandler._td)(\"This homeserver has exceeded one of its resource limits.\")\n });\n var errorDetail = (0, _ErrorUtils.messageForResourceLimitError)(error.data.limit_type, error.data.admin_contact, {\n '': (0, _languageHandler._td)(\"Please <a>contact your service administrator</a> to continue using this service.\")\n });\n errorText = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n errorTop\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_smallError' },\n errorDetail\n )\n );\n } else if (error.httpStatus === 401 || error.httpStatus === 403) {\n if (_SdkConfig2.default.get()['disable_custom_urls']) {\n errorText = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Incorrect username and/or password.')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_smallError' },\n (0, _languageHandler._t)('Please note you are logging into the %(hs)s server, not matrix.org.', {\n hs: _this.props.defaultHsUrl.replace(/^https?:\\/\\//, '')\n })\n )\n );\n } else {\n errorText = (0, _languageHandler._t)('Incorrect username and/or password.');\n }\n } else {\n // other errors, not specific to doing a password login\n errorText = _this._errorTextFromError(error);\n }\n\n _this.setState({\n errorText: errorText,\n // 401 would be the sensible status code for 'incorrect password'\n // but the login API gives a 403 https://matrix.org/jira/browse/SYN-744\n // mentions this (although the bug is for UI auth which is not this)\n // We treat both as an incorrect password\n loginIncorrect: error.httpStatus === 401 || error.httpStatus === 403\n });\n }).finally(function () {\n if (_this._unmounted) {\n return;\n }\n _this.setState({\n busy: false\n });\n }).done();\n },\n\n onCasLogin: function onCasLogin() {\n this._loginLogic.redirectToCas();\n },\n\n _onLoginAsGuestClick: function _onLoginAsGuestClick() {\n var self = this;\n self.setState({\n busy: true,\n errorText: null,\n loginIncorrect: false\n });\n\n this._loginLogic.loginAsGuest().then(function (data) {\n self.props.onLoggedIn(data);\n }, function (error) {\n var errorText = void 0;\n if (error.httpStatus === 403) {\n errorText = (0, _languageHandler._t)(\"Guest access is disabled on this Home Server.\");\n } else {\n errorText = self._errorTextFromError(error);\n }\n self.setState({\n errorText: errorText,\n loginIncorrect: false\n });\n }).finally(function () {\n self.setState({\n busy: false\n });\n }).done();\n },\n\n onUsernameChanged: function onUsernameChanged(username) {\n this.setState({ username: username });\n },\n\n onPhoneCountryChanged: function onPhoneCountryChanged(phoneCountry) {\n this.setState({ phoneCountry: phoneCountry });\n },\n\n onPhoneNumberChanged: function onPhoneNumberChanged(phoneNumber) {\n // Validate the phone number entered\n if (!PHONE_NUMBER_REGEX.test(phoneNumber)) {\n this.setState({ errorText: (0, _languageHandler._t)('The phone number entered looks invalid') });\n return;\n }\n\n this.setState({\n phoneNumber: phoneNumber,\n errorText: null\n });\n },\n\n onServerConfigChange: function onServerConfigChange(config) {\n var self = this;\n var newState = {\n errorText: null // reset err messages\n };\n if (config.hsUrl !== undefined) {\n newState.enteredHomeserverUrl = config.hsUrl;\n }\n if (config.isUrl !== undefined) {\n newState.enteredIdentityServerUrl = config.isUrl;\n }\n\n this.props.onServerConfigChange(config);\n this.setState(newState, function () {\n self._initLoginLogic(config.hsUrl || null, config.isUrl);\n });\n },\n\n _initLoginLogic: function _initLoginLogic(hsUrl, isUrl) {\n var _this2 = this;\n\n var self = this;\n hsUrl = hsUrl || this.state.enteredHomeserverUrl;\n isUrl = isUrl || this.state.enteredIdentityServerUrl;\n\n var fallbackHsUrl = hsUrl === this.props.defaultHsUrl ? this.props.fallbackHsUrl : null;\n\n var loginLogic = new _Login2.default(hsUrl, isUrl, fallbackHsUrl, {\n defaultDeviceDisplayName: this.props.defaultDeviceDisplayName\n });\n this._loginLogic = loginLogic;\n\n this.setState({\n enteredHomeserverUrl: hsUrl,\n enteredIdentityServerUrl: isUrl,\n busy: true,\n loginIncorrect: false\n });\n\n loginLogic.getFlows().then(function (flows) {\n // look for a flow where we understand all of the steps.\n for (var i = 0; i < flows.length; i++) {\n if (!_this2._isSupportedFlow(flows[i])) {\n continue;\n }\n\n // we just pick the first flow where we support all the\n // steps. (we don't have a UI for multiple logins so let's skip\n // that for now).\n loginLogic.chooseFlow(i);\n _this2.setState({\n currentFlow: _this2._getCurrentFlowStep()\n });\n return;\n }\n // we got to the end of the list without finding a suitable\n // flow.\n _this2.setState({\n errorText: (0, _languageHandler._t)(\"This homeserver doesn't offer any login flows which are \" + \"supported by this client.\")\n });\n }, function (err) {\n self.setState({\n errorText: self._errorTextFromError(err),\n loginIncorrect: false\n });\n }).finally(function () {\n self.setState({\n busy: false\n });\n }).done();\n },\n\n _isSupportedFlow: function _isSupportedFlow(flow) {\n // technically the flow can have multiple steps, but no one does this\n // for login and loginLogic doesn't support it so we can ignore it.\n if (!this._stepRendererMap[flow.type]) {\n console.log(\"Skipping flow\", flow, \"due to unsupported login type\", flow.type);\n return false;\n }\n return true;\n },\n\n _getCurrentFlowStep: function _getCurrentFlowStep() {\n return this._loginLogic ? this._loginLogic.getCurrentFlowStep() : null;\n },\n\n _errorTextFromError: function _errorTextFromError(err) {\n var _this3 = this;\n\n var errCode = err.errcode;\n if (!errCode && err.httpStatus) {\n errCode = \"HTTP \" + err.httpStatus;\n }\n\n var errorText = (0, _languageHandler._t)(\"Error: Problem communicating with the given homeserver.\") + (errCode ? \" (\" + errCode + \")\" : \"\");\n\n if (err.cors === 'rejected') {\n if (window.location.protocol === 'https:' && (this.state.enteredHomeserverUrl.startsWith(\"http:\") || !this.state.enteredHomeserverUrl.startsWith(\"http\"))) {\n errorText = _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. \" + \"Either use HTTPS or <a>enable unsafe scripts</a>.\", {}, {\n 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: 'https://www.google.com/search?&q=enable%20unsafe%20scripts' },\n sub\n );\n }\n })\n );\n } else {\n errorText = _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Can't connect to homeserver - please check your connectivity, ensure your \" + \"<a>homeserver's SSL certificate</a> is trusted, and that a browser extension \" + \"is not blocking requests.\", {}, {\n 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: _this3.state.enteredHomeserverUrl },\n sub\n );\n }\n })\n );\n }\n }\n\n return errorText;\n },\n\n\n componentForStep: function componentForStep(step) {\n if (!step) {\n return null;\n }\n\n var stepRenderer = this._stepRendererMap[step];\n\n if (stepRenderer) {\n return stepRenderer();\n }\n\n return null;\n },\n\n _renderPasswordStep: function _renderPasswordStep() {\n var PasswordLogin = _index2.default.getComponent('login.PasswordLogin');\n return _react2.default.createElement(PasswordLogin, {\n onSubmit: this.onPasswordLogin,\n onError: this.onPasswordLoginError,\n initialUsername: this.state.username,\n initialPhoneCountry: this.state.phoneCountry,\n initialPhoneNumber: this.state.phoneNumber,\n onUsernameChanged: this.onUsernameChanged,\n onPhoneCountryChanged: this.onPhoneCountryChanged,\n onPhoneNumberChanged: this.onPhoneNumberChanged,\n onForgotPasswordClick: this.props.onForgotPasswordClick,\n loginIncorrect: this.state.loginIncorrect,\n hsUrl: this.state.enteredHomeserverUrl\n });\n },\n\n _renderCasStep: function _renderCasStep() {\n var CasLogin = _index2.default.getComponent('login.CasLogin');\n return _react2.default.createElement(CasLogin, { onSubmit: this.onCasLogin });\n },\n\n render: function render() {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n var LoginPage = _index2.default.getComponent(\"login.LoginPage\");\n var LoginHeader = _index2.default.getComponent(\"login.LoginHeader\");\n var LoginFooter = _index2.default.getComponent(\"login.LoginFooter\");\n var ServerConfig = _index2.default.getComponent(\"login.ServerConfig\");\n var loader = this.state.busy ? _react2.default.createElement(\n 'div',\n { className: 'mx_Login_loader' },\n _react2.default.createElement(Loader, null)\n ) : null;\n\n var loginAsGuestJsx = void 0;\n if (this.props.enableGuest) {\n loginAsGuestJsx = _react2.default.createElement(\n 'a',\n { className: 'mx_Login_create', onClick: this._onLoginAsGuestClick, href: '#' },\n (0, _languageHandler._t)('Try the app first')\n );\n }\n\n var serverConfig = void 0;\n var header = void 0;\n\n if (!_SdkConfig2.default.get()['disable_custom_urls']) {\n serverConfig = _react2.default.createElement(ServerConfig, { ref: 'serverConfig',\n withToggleButton: true,\n customHsUrl: this.props.customHsUrl,\n customIsUrl: this.props.customIsUrl,\n defaultHsUrl: this.props.defaultHsUrl,\n defaultIsUrl: this.props.defaultIsUrl,\n onServerConfigChange: this.onServerConfigChange,\n delayTimeMs: 1000 });\n }\n\n // FIXME: remove status.im theme tweaks\n var theme = _SettingsStore2.default.getValue(\"theme\");\n if (theme !== \"status\") {\n header = _react2.default.createElement(\n 'h2',\n null,\n (0, _languageHandler._t)('Sign in'),\n ' ',\n loader\n );\n } else {\n if (!this.state.errorText) {\n header = _react2.default.createElement(\n 'h2',\n null,\n (0, _languageHandler._t)('Sign in to get started'),\n ' ',\n loader\n );\n }\n }\n\n var errorTextSection = void 0;\n if (this.state.errorText) {\n errorTextSection = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_error' },\n this.state.errorText\n );\n }\n\n var LanguageSelector = _index2.default.getComponent('structures.login.LanguageSelector');\n\n return _react2.default.createElement(\n LoginPage,\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_box' },\n _react2.default.createElement(LoginHeader, null),\n _react2.default.createElement(\n 'div',\n null,\n header,\n errorTextSection,\n this.componentForStep(this.state.currentFlow),\n serverConfig,\n _react2.default.createElement(\n 'a',\n { className: 'mx_Login_create', onClick: this.props.onRegisterClick, href: '#' },\n (0, _languageHandler._t)('Create an account')\n ),\n loginAsGuestJsx,\n _react2.default.createElement(LanguageSelector, null),\n _react2.default.createElement(LoginFooter, null)\n )\n )\n );\n }\n});\n//# sourceMappingURL=Login.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _matrixJsSdk = require(\"matrix-js-sdk\");\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _languageHandler = require(\"./languageHandler\");\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _url = require(\"url\");\n\nvar _url2 = _interopRequireDefault(_url);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar Login = function () {\n function Login(hsUrl, isUrl, fallbackHsUrl, opts) {\n (0, _classCallCheck3.default)(this, Login);\n\n this._hsUrl = hsUrl;\n this._isUrl = isUrl;\n this._fallbackHsUrl = fallbackHsUrl;\n this._currentFlowIndex = 0;\n this._flows = [];\n this._defaultDeviceDisplayName = opts.defaultDeviceDisplayName;\n }\n\n (0, _createClass3.default)(Login, [{\n key: \"getHomeserverUrl\",\n value: function getHomeserverUrl() {\n return this._hsUrl;\n }\n }, {\n key: \"getIdentityServerUrl\",\n value: function getIdentityServerUrl() {\n return this._isUrl;\n }\n }, {\n key: \"setHomeserverUrl\",\n value: function setHomeserverUrl(hsUrl) {\n this._hsUrl = hsUrl;\n }\n }, {\n key: \"setIdentityServerUrl\",\n value: function setIdentityServerUrl(isUrl) {\n this._isUrl = isUrl;\n }\n\n /**\n * Get a temporary MatrixClient, which can be used for login or register\n * requests.\n */\n\n }, {\n key: \"_createTemporaryClient\",\n value: function _createTemporaryClient() {\n return _matrixJsSdk2.default.createClient({\n baseUrl: this._hsUrl,\n idBaseUrl: this._isUrl\n });\n }\n }, {\n key: \"getFlows\",\n value: function getFlows() {\n var self = this;\n var client = this._createTemporaryClient();\n return client.loginFlows().then(function (result) {\n self._flows = result.flows;\n self._currentFlowIndex = 0;\n // technically the UI should display options for all flows for the\n // user to then choose one, so return all the flows here.\n return self._flows;\n });\n }\n }, {\n key: \"chooseFlow\",\n value: function chooseFlow(flowIndex) {\n this._currentFlowIndex = flowIndex;\n }\n }, {\n key: \"getCurrentFlowStep\",\n value: function getCurrentFlowStep() {\n // technically the flow can have multiple steps, but no one does this\n // for login so we can ignore it.\n var flowStep = this._flows[this._currentFlowIndex];\n return flowStep ? flowStep.type : null;\n }\n }, {\n key: \"loginAsGuest\",\n value: function loginAsGuest() {\n var _this = this;\n\n var client = this._createTemporaryClient();\n return client.registerGuest({\n body: {\n initial_device_display_name: this._defaultDeviceDisplayName\n }\n }).then(function (creds) {\n return {\n userId: creds.user_id,\n deviceId: creds.device_id,\n accessToken: creds.access_token,\n homeserverUrl: _this._hsUrl,\n identityServerUrl: _this._isUrl,\n guest: true\n };\n }, function (error) {\n throw error;\n });\n }\n }, {\n key: \"loginViaPassword\",\n value: function loginViaPassword(username, phoneCountry, phoneNumber, pass) {\n var _this2 = this;\n\n var self = this;\n\n var isEmail = username.indexOf(\"@\") > 0;\n\n var identifier = void 0;\n var legacyParams = void 0; // parameters added to support old HSes\n if (phoneCountry && phoneNumber) {\n identifier = {\n type: 'm.id.phone',\n country: phoneCountry,\n number: phoneNumber\n };\n // No legacy support for phone number login\n } else if (isEmail) {\n identifier = {\n type: 'm.id.thirdparty',\n medium: 'email',\n address: username\n };\n legacyParams = {\n medium: 'email',\n address: username\n };\n } else {\n identifier = {\n type: 'm.id.user',\n user: username\n };\n legacyParams = {\n user: username\n };\n }\n\n var loginParams = {\n password: pass,\n identifier: identifier,\n initial_device_display_name: this._defaultDeviceDisplayName\n };\n (0, _assign2.default)(loginParams, legacyParams);\n\n var client = this._createTemporaryClient();\n\n var tryFallbackHs = function tryFallbackHs(originalError) {\n var fbClient = _matrixJsSdk2.default.createClient({\n baseUrl: self._fallbackHsUrl,\n idBaseUrl: _this2._isUrl\n });\n\n return fbClient.login('m.login.password', loginParams).then(function (data) {\n return _bluebird2.default.resolve({\n homeserverUrl: self._fallbackHsUrl,\n identityServerUrl: self._isUrl,\n userId: data.user_id,\n deviceId: data.device_id,\n accessToken: data.access_token\n });\n }).catch(function (fallback_error) {\n console.log(\"fallback HS login failed\", fallback_error);\n // throw the original error\n throw originalError;\n });\n };\n var tryLowercaseUsername = function tryLowercaseUsername(originalError) {\n var loginParamsLowercase = (0, _assign2.default)({}, loginParams, {\n user: username.toLowerCase(),\n identifier: {\n user: username.toLowerCase()\n }\n });\n return client.login('m.login.password', loginParamsLowercase).then(function (data) {\n return _bluebird2.default.resolve({\n homeserverUrl: self._hsUrl,\n identityServerUrl: self._isUrl,\n userId: data.user_id,\n deviceId: data.device_id,\n accessToken: data.access_token\n });\n }).catch(function (fallback_error) {\n console.log(\"Lowercase username login failed\", fallback_error);\n // throw the original error\n throw originalError;\n });\n };\n\n var originalLoginError = null;\n return client.login('m.login.password', loginParams).then(function (data) {\n return _bluebird2.default.resolve({\n homeserverUrl: self._hsUrl,\n identityServerUrl: self._isUrl,\n userId: data.user_id,\n deviceId: data.device_id,\n accessToken: data.access_token\n });\n }).catch(function (error) {\n originalLoginError = error;\n if (error.httpStatus === 403) {\n if (self._fallbackHsUrl) {\n return tryFallbackHs(originalLoginError);\n }\n }\n throw originalLoginError;\n }).catch(function (error) {\n // We apparently squash case at login serverside these days:\n // https://github.com/matrix-org/synapse/blob/1189be43a2479f5adf034613e8d10e3f4f452eb9/synapse/handlers/auth.py#L475\n // so this wasn't needed after all. Keeping the code around in case the\n // the situation changes...\n\n /*\n if (\n error.httpStatus === 403 &&\n loginParams.identifier.type === 'm.id.user' &&\n username.search(/[A-Z]/) > -1\n ) {\n return tryLowercaseUsername(originalLoginError);\n }\n */\n throw originalLoginError;\n }).catch(function (error) {\n console.log(\"Login failed\", error);\n throw error;\n });\n }\n }, {\n key: \"redirectToCas\",\n value: function redirectToCas() {\n var client = this._createTemporaryClient();\n var parsedUrl = _url2.default.parse(window.location.href, true);\n\n // XXX: at this point, the fragment will always be #/login, which is no\n // use to anyone. Ideally, we would get the intended fragment from\n // MatrixChat.screenAfterLogin so that you could follow #/room links etc\n // through a CAS login.\n parsedUrl.hash = \"\";\n\n parsedUrl.query[\"homeserver\"] = client.getHomeserverUrl();\n parsedUrl.query[\"identityServer\"] = client.getIdentityServerUrl();\n var casUrl = client.getCasLoginUrl(_url2.default.format(parsedUrl));\n window.location.href = casUrl;\n }\n }]);\n return Login;\n}();\n\nexports.default = Login;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=Login.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'PostRegistration',\n\n propTypes: {\n onComplete: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n avatarUrl: null,\n errorString: null,\n busy: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n // There is some assymetry between ChangeDisplayName and ChangeAvatar,\n // as ChangeDisplayName will auto-get the name but ChangeAvatar expects\n // the URL to be passed to you (because it's also used for room avatars).\n var cli = _MatrixClientPeg2.default.get();\n this.setState({ busy: true });\n var self = this;\n cli.getProfileInfo(cli.credentials.userId).done(function (result) {\n self.setState({\n avatarUrl: _MatrixClientPeg2.default.get().mxcUrlToHttp(result.avatar_url),\n busy: false\n });\n }, function (error) {\n self.setState({\n errorString: (0, _languageHandler._t)(\"Failed to fetch avatar URL\"),\n busy: false\n });\n });\n },\n\n render: function render() {\n var ChangeDisplayName = _index2.default.getComponent('settings.ChangeDisplayName');\n var ChangeAvatar = _index2.default.getComponent('settings.ChangeAvatar');\n var LoginPage = _index2.default.getComponent('login.LoginPage');\n var LoginHeader = _index2.default.getComponent('login.LoginHeader');\n return _react2.default.createElement(\n LoginPage,\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_box' },\n _react2.default.createElement(LoginHeader, null),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_profile' },\n (0, _languageHandler._t)('Set a display name:'),\n _react2.default.createElement(ChangeDisplayName, null),\n (0, _languageHandler._t)('Upload an avatar:'),\n _react2.default.createElement(ChangeAvatar, {\n initialAvatarUrl: this.state.avatarUrl }),\n _react2.default.createElement(\n 'button',\n { onClick: this.props.onComplete },\n (0, _languageHandler._t)('Continue')\n ),\n this.state.errorString\n )\n )\n );\n }\n});\n//# sourceMappingURL=PostRegistration.js.map","'use strict';\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _RegistrationForm = require('../../views/login/RegistrationForm');\n\nvar _RegistrationForm2 = _interopRequireDefault(_RegistrationForm);\n\nvar _RtsClient = require('../../../RtsClient');\n\nvar _RtsClient2 = _interopRequireDefault(_RtsClient);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _ErrorUtils = require('../../../utils/ErrorUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MIN_PASSWORD_LENGTH = 6;\n\nmodule.exports = _react2.default.createClass({\n displayName: 'Registration',\n\n propTypes: {\n onLoggedIn: _propTypes2.default.func.isRequired,\n clientSecret: _propTypes2.default.string,\n sessionId: _propTypes2.default.string,\n makeRegistrationUrl: _propTypes2.default.func.isRequired,\n idSid: _propTypes2.default.string,\n customHsUrl: _propTypes2.default.string,\n customIsUrl: _propTypes2.default.string,\n defaultHsUrl: _propTypes2.default.string,\n defaultIsUrl: _propTypes2.default.string,\n brand: _propTypes2.default.string,\n email: _propTypes2.default.string,\n referrer: _propTypes2.default.string,\n teamServerConfig: _propTypes2.default.shape({\n // Email address to request new teams\n supportEmail: _propTypes2.default.string.isRequired,\n // URL of the riot-team-server to get team configurations and track referrals\n teamServerURL: _propTypes2.default.string.isRequired\n }),\n teamSelected: _propTypes2.default.object,\n\n defaultDeviceDisplayName: _propTypes2.default.string,\n\n // registration shouldn't know or care how login is done.\n onLoginClick: _propTypes2.default.func.isRequired,\n onCancelClick: _propTypes2.default.func,\n onServerConfigChange: _propTypes2.default.func.isRequired,\n\n rtsClient: _propTypes2.default.shape({\n getTeamsConfig: _propTypes2.default.func.isRequired,\n trackReferral: _propTypes2.default.func.isRequired,\n getTeam: _propTypes2.default.func.isRequired\n })\n },\n\n getInitialState: function getInitialState() {\n return {\n busy: false,\n teamServerBusy: false,\n errorText: null,\n // We remember the values entered by the user because\n // the registration form will be unmounted during the\n // course of registration, but if there's an error we\n // want to bring back the registration form with the\n // values the user entered still in it. We can keep\n // them in this component's state since this component\n // persist for the duration of the registration process.\n formVals: {\n email: this.props.email\n },\n // true if we're waiting for the user to complete\n // user-interactive auth\n // If we've been given a session ID, we're resuming\n // straight back into UI auth\n doingUIAuth: Boolean(this.props.sessionId),\n hsUrl: this.props.customHsUrl,\n isUrl: this.props.customIsUrl,\n flows: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this._unmounted = false;\n\n this._replaceClient();\n\n if (this.props.teamServerConfig && this.props.teamServerConfig.teamServerURL && !this._rtsClient) {\n this._rtsClient = this.props.rtsClient || new _RtsClient2.default(this.props.teamServerConfig.teamServerURL);\n\n this.setState({\n teamServerBusy: true\n });\n // GET team configurations including domains, names and icons\n this._rtsClient.getTeamsConfig().then(function (data) {\n var teamsConfig = {\n teams: data,\n supportEmail: _this.props.teamServerConfig.supportEmail\n };\n console.log('Setting teams config to ', teamsConfig);\n _this.setState({\n teamsConfig: teamsConfig,\n teamServerBusy: false\n });\n }, function (err) {\n console.error('Error retrieving config for teams', err);\n _this.setState({\n teamServerBusy: false\n });\n });\n }\n },\n\n onServerConfigChange: function onServerConfigChange(config) {\n var _this2 = this;\n\n var newState = {};\n if (config.hsUrl !== undefined) {\n newState.hsUrl = config.hsUrl;\n }\n if (config.isUrl !== undefined) {\n newState.isUrl = config.isUrl;\n }\n this.props.onServerConfigChange(config);\n this.setState(newState, function () {\n _this2._replaceClient();\n });\n },\n\n _replaceClient: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this._matrixClient = _matrixJsSdk2.default.createClient({\n baseUrl: this.state.hsUrl,\n idBaseUrl: this.state.isUrl\n });\n _context.prev = 1;\n _context.next = 4;\n return (0, _bluebird.resolve)(this._makeRegisterRequest({}));\n\n case 4:\n // This should never succeed since we specified an empty\n // auth object.\n console.log(\"Expecting 401 from register request but got success!\");\n _context.next = 10;\n break;\n\n case 7:\n _context.prev = 7;\n _context.t0 = _context['catch'](1);\n\n if (_context.t0.httpStatus === 401) {\n this.setState({\n flows: _context.t0.data.flows\n });\n } else {\n this.setState({\n errorText: (0, _languageHandler._t)(\"Unable to query for supported registration methods\")\n });\n }\n\n case 10:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[1, 7]]);\n }));\n\n function _replaceClient() {\n return _ref.apply(this, arguments);\n }\n\n return _replaceClient;\n }(),\n\n onFormSubmit: function onFormSubmit(formVals) {\n this.setState({\n errorText: \"\",\n busy: true,\n formVals: formVals,\n doingUIAuth: true\n });\n },\n\n _onUIAuthFinished: function _onUIAuthFinished(success, response, extra) {\n var _this3 = this;\n\n if (!success) {\n var msg = response.message || response.toString();\n // can we give a better error message?\n if (response.errcode == 'M_RESOURCE_LIMIT_EXCEEDED') {\n var errorTop = (0, _ErrorUtils.messageForResourceLimitError)(response.data.limit_type, response.data.admin_contact, {\n 'monthly_active_user': (0, _languageHandler._td)(\"This homeserver has hit its Monthly Active User limit.\"),\n '': (0, _languageHandler._td)(\"This homeserver has exceeded one of its resource limits.\")\n });\n var errorDetail = (0, _ErrorUtils.messageForResourceLimitError)(response.data.limit_type, response.data.admin_contact, {\n '': (0, _languageHandler._td)(\"Please <a>contact your service administrator</a> to continue using this service.\")\n });\n msg = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n errorTop\n ),\n _react2.default.createElement(\n 'p',\n null,\n errorDetail\n )\n );\n } else if (response.required_stages && response.required_stages.indexOf('m.login.msisdn') > -1) {\n var msisdnAvailable = false;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(response.available_flows), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var flow = _step.value;\n\n msisdnAvailable |= flow.stages.indexOf('m.login.msisdn') > -1;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (!msisdnAvailable) {\n msg = (0, _languageHandler._t)('This server does not support authentication with a phone number.');\n }\n }\n this.setState({\n busy: false,\n doingUIAuth: false,\n errorText: msg\n });\n return;\n }\n\n this.setState({\n // we're still busy until we get unmounted: don't show the registration form again\n busy: true,\n doingUIAuth: false\n });\n\n // Done regardless of `teamSelected`. People registering with non-team emails\n // will just nop. The point of this being we might not have the email address\n // that the user registered with at this stage (depending on whether this\n // is the client they initiated registration).\n var trackPromise = _bluebird2.default.resolve(null);\n if (this._rtsClient && extra.emailSid) {\n // Track referral if this.props.referrer set, get team_token in order to\n // retrieve team config and see welcome page etc.\n trackPromise = this._rtsClient.trackReferral(this.props.referrer || '', // Default to empty string = not referred\n extra.emailSid, extra.clientSecret).then(function (data) {\n var teamToken = data.team_token;\n // Store for use /w welcome pages\n window.localStorage.setItem('mx_team_token', teamToken);\n\n _this3._rtsClient.getTeam(teamToken).then(function (team) {\n console.log('User successfully registered with team ' + team.name);\n if (!team.rooms) {\n return;\n }\n // Auto-join rooms\n team.rooms.forEach(function (room) {\n if (room.auto_join && room.room_id) {\n console.log('Auto-joining ' + room.room_id);\n _MatrixClientPeg2.default.get().joinRoom(room.room_id);\n }\n });\n }, function (err) {\n console.error('Error getting team config', err);\n });\n\n return teamToken;\n }, function (err) {\n console.error('Error tracking referral', err);\n });\n }\n\n trackPromise.then(function (teamToken) {\n return _this3.props.onLoggedIn({\n userId: response.user_id,\n deviceId: response.device_id,\n homeserverUrl: _this3._matrixClient.getHomeserverUrl(),\n identityServerUrl: _this3._matrixClient.getIdentityServerUrl(),\n accessToken: response.access_token\n }, teamToken);\n }).then(function (cli) {\n return _this3._setupPushers(cli);\n });\n },\n\n _setupPushers: function _setupPushers(matrixClient) {\n var _this4 = this;\n\n if (!this.props.brand) {\n return _bluebird2.default.resolve();\n }\n return matrixClient.getPushers().then(function (resp) {\n var pushers = resp.pushers;\n for (var i = 0; i < pushers.length; ++i) {\n if (pushers[i].kind === 'email') {\n var emailPusher = pushers[i];\n emailPusher.data = { brand: _this4.props.brand };\n matrixClient.setPusher(emailPusher).done(function () {\n console.log(\"Set email branding to \" + _this4.props.brand);\n }, function (error) {\n console.error(\"Couldn't set email branding: \" + error);\n });\n }\n }\n }, function (error) {\n console.error(\"Couldn't get pushers: \" + error);\n });\n },\n\n onFormValidationFailed: function onFormValidationFailed(errCode) {\n var errMsg = void 0;\n switch (errCode) {\n case \"RegistrationForm.ERR_PASSWORD_MISSING\":\n errMsg = (0, _languageHandler._t)('Missing password.');\n break;\n case \"RegistrationForm.ERR_PASSWORD_MISMATCH\":\n errMsg = (0, _languageHandler._t)('Passwords don\\'t match.');\n break;\n case \"RegistrationForm.ERR_PASSWORD_LENGTH\":\n errMsg = (0, _languageHandler._t)('Password too short (min %(MIN_PASSWORD_LENGTH)s).', { MIN_PASSWORD_LENGTH: MIN_PASSWORD_LENGTH });\n break;\n case \"RegistrationForm.ERR_EMAIL_INVALID\":\n errMsg = (0, _languageHandler._t)('This doesn\\'t look like a valid email address.');\n break;\n case \"RegistrationForm.ERR_PHONE_NUMBER_INVALID\":\n errMsg = (0, _languageHandler._t)('This doesn\\'t look like a valid phone number.');\n break;\n case \"RegistrationForm.ERR_MISSING_EMAIL\":\n errMsg = (0, _languageHandler._t)('An email address is required to register on this homeserver.');\n break;\n case \"RegistrationForm.ERR_MISSING_PHONE_NUMBER\":\n errMsg = (0, _languageHandler._t)('A phone number is required to register on this homeserver.');\n break;\n case \"RegistrationForm.ERR_USERNAME_INVALID\":\n errMsg = (0, _languageHandler._t)('User names may only contain letters, numbers, dots, hyphens and underscores.');\n break;\n case \"RegistrationForm.ERR_USERNAME_BLANK\":\n errMsg = (0, _languageHandler._t)('You need to enter a user name.');\n break;\n default:\n console.error(\"Unknown error code: %s\", errCode);\n errMsg = (0, _languageHandler._t)('An unknown error occurred.');\n break;\n }\n this.setState({\n errorText: errMsg\n });\n },\n\n onTeamSelected: function onTeamSelected(teamSelected) {\n if (!this._unmounted) {\n this.setState({ teamSelected: teamSelected });\n }\n },\n\n _makeRegisterRequest: function _makeRegisterRequest(auth) {\n // Only send the bind params if we're sending username / pw params\n // (Since we need to send no params at all to use the ones saved in the\n // session).\n var bindThreepids = this.state.formVals.password ? {\n email: true,\n msisdn: true\n } : {};\n\n return this._matrixClient.register(this.state.formVals.username, this.state.formVals.password, undefined, // session id: included in the auth dict already\n auth, bindThreepids, null);\n },\n\n _getUIAuthInputs: function _getUIAuthInputs() {\n return {\n emailAddress: this.state.formVals.email,\n phoneCountry: this.state.formVals.phoneCountry,\n phoneNumber: this.state.formVals.phoneNumber\n };\n },\n\n render: function render() {\n var LoginHeader = _index2.default.getComponent('login.LoginHeader');\n var LoginFooter = _index2.default.getComponent('login.LoginFooter');\n var LoginPage = _index2.default.getComponent('login.LoginPage');\n var InteractiveAuth = _index2.default.getComponent('structures.InteractiveAuth');\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n var ServerConfig = _index2.default.getComponent('views.login.ServerConfig');\n\n var theme = _SettingsStore2.default.getValue(\"theme\");\n\n var registerBody = void 0;\n if (this.state.doingUIAuth) {\n registerBody = _react2.default.createElement(InteractiveAuth, {\n matrixClient: this._matrixClient,\n makeRequest: this._makeRegisterRequest,\n onAuthFinished: this._onUIAuthFinished,\n inputs: this._getUIAuthInputs(),\n makeRegistrationUrl: this.props.makeRegistrationUrl,\n sessionId: this.props.sessionId,\n clientSecret: this.props.clientSecret,\n emailSid: this.props.idSid,\n poll: true\n });\n } else if (this.state.busy || this.state.teamServerBusy || !this.state.flows) {\n registerBody = _react2.default.createElement(Spinner, null);\n } else {\n var serverConfigSection = void 0;\n if (!_SdkConfig2.default.get()['disable_custom_urls']) {\n serverConfigSection = _react2.default.createElement(ServerConfig, { ref: 'serverConfig',\n withToggleButton: true,\n customHsUrl: this.props.customHsUrl,\n customIsUrl: this.props.customIsUrl,\n defaultHsUrl: this.props.defaultHsUrl,\n defaultIsUrl: this.props.defaultIsUrl,\n onServerConfigChange: this.onServerConfigChange,\n delayTimeMs: 1000\n });\n }\n registerBody = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(_RegistrationForm2.default, {\n defaultUsername: this.state.formVals.username,\n defaultEmail: this.state.formVals.email,\n defaultPhoneCountry: this.state.formVals.phoneCountry,\n defaultPhoneNumber: this.state.formVals.phoneNumber,\n defaultPassword: this.state.formVals.password,\n teamsConfig: this.state.teamsConfig,\n minPasswordLength: MIN_PASSWORD_LENGTH,\n onError: this.onFormValidationFailed,\n onRegisterClick: this.onFormSubmit,\n onTeamSelected: this.onTeamSelected,\n flows: this.state.flows\n }),\n serverConfigSection\n );\n }\n\n var header = void 0;\n var errorText = void 0;\n // FIXME: remove hardcoded Status team tweaks at some point\n if (theme === 'status' && this.state.errorText) {\n header = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_error' },\n this.state.errorText\n );\n } else {\n header = _react2.default.createElement(\n 'h2',\n null,\n (0, _languageHandler._t)('Create an account')\n );\n if (this.state.errorText) {\n errorText = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_error' },\n this.state.errorText\n );\n }\n }\n\n var signIn = void 0;\n if (!this.state.doingUIAuth) {\n signIn = _react2.default.createElement(\n 'a',\n { className: 'mx_Login_create', onClick: this.props.onLoginClick, href: '#' },\n theme === 'status' ? (0, _languageHandler._t)('Sign in') : (0, _languageHandler._t)('I already have an account')\n );\n }\n\n var LanguageSelector = _index2.default.getComponent('structures.login.LanguageSelector');\n\n return _react2.default.createElement(\n LoginPage,\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_box' },\n _react2.default.createElement(LoginHeader, {\n icon: this.state.teamSelected ? this.props.teamServerConfig.teamServerURL + \"/static/common/\" + this.state.teamSelected.domain + \"/icon.png\" : null\n }),\n header,\n registerBody,\n signIn,\n errorText,\n _react2.default.createElement(LanguageSelector, null),\n _react2.default.createElement(LoginFooter, null)\n )\n );\n }\n});\n//# sourceMappingURL=Registration.js.map","'use strict';\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _Avatar = require('../../../Avatar');\n\nvar _Avatar2 = _interopRequireDefault(_Avatar);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'BaseAvatar',\n\n propTypes: {\n name: _propTypes2.default.string.isRequired, // The name (first initial used as default)\n idName: _propTypes2.default.string, // ID for generating hash colours\n title: _propTypes2.default.string, // onHover title text\n url: _propTypes2.default.string, // highest priority of them all, shortcut to set in urls[0]\n urls: _propTypes2.default.array, // [highest_priority, ... , lowest_priority]\n width: _propTypes2.default.number,\n height: _propTypes2.default.number,\n // XXX resizeMethod not actually used.\n resizeMethod: _propTypes2.default.string,\n defaultToInitialLetter: _propTypes2.default.bool // true to add default url\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n width: 40,\n height: 40,\n resizeMethod: 'crop',\n defaultToInitialLetter: true\n };\n },\n\n getInitialState: function getInitialState() {\n return this._getState(this.props);\n },\n\n componentWillMount: function componentWillMount() {\n this.unmounted = false;\n this.context.matrixClient.on('sync', this.onClientSync);\n },\n componentWillUnmount: function componentWillUnmount() {\n this.unmounted = true;\n this.context.matrixClient.removeListener('sync', this.onClientSync);\n },\n\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n // work out if we need to call setState (if the image URLs array has changed)\n var newState = this._getState(nextProps);\n var newImageUrls = newState.imageUrls;\n var oldImageUrls = this.state.imageUrls;\n if (newImageUrls.length !== oldImageUrls.length) {\n this.setState(newState); // detected a new entry\n } else {\n // check each one to see if they are the same\n for (var i = 0; i < newImageUrls.length; i++) {\n if (oldImageUrls[i] !== newImageUrls[i]) {\n this.setState(newState); // detected a diff\n break;\n }\n }\n }\n },\n\n onClientSync: function onClientSync(syncState, prevState) {\n if (this.unmounted) return;\n\n // Consider the client reconnected if there is no error with syncing.\n // This means the state could be RECONNECTING, SYNCING, PREPARED or CATCHUP.\n var reconnected = syncState !== \"ERROR\" && prevState !== syncState;\n if (reconnected &&\n // Did we fall back?\n this.state.urlsIndex > 0) {\n // Start from the highest priority URL again\n this.setState({\n urlsIndex: 0\n });\n }\n },\n\n _getState: function _getState(props) {\n // work out the full set of urls to try to load. This is formed like so:\n // imageUrls: [ props.url, props.urls, default image ]\n\n var urls = props.urls || [];\n if (props.url) {\n urls.unshift(props.url); // put in urls[0]\n }\n\n var defaultImageUrl = null;\n if (props.defaultToInitialLetter) {\n defaultImageUrl = _Avatar2.default.defaultAvatarUrlForString(props.idName || props.name);\n urls.push(defaultImageUrl); // lowest priority\n }\n return {\n imageUrls: urls,\n defaultImageUrl: defaultImageUrl,\n urlsIndex: 0\n };\n },\n\n onError: function onError(ev) {\n var nextIndex = this.state.urlsIndex + 1;\n if (nextIndex < this.state.imageUrls.length) {\n // try the next one\n this.setState({\n urlsIndex: nextIndex\n });\n }\n },\n\n /**\n * returns the first (non-sigil) character of 'name',\n * converted to uppercase\n */\n _getInitialLetter: function _getInitialLetter(name) {\n if (name.length < 1) {\n return undefined;\n }\n\n var idx = 0;\n var initial = name[0];\n if ((initial === '@' || initial === '#' || initial === '+') && name[1]) {\n idx++;\n }\n\n // string.codePointAt(0) would do this, but that isn't supported by\n // some browsers (notably PhantomJS).\n var chars = 1;\n var first = name.charCodeAt(idx);\n\n // check if it’s the start of a surrogate pair\n if (first >= 0xD800 && first <= 0xDBFF && name[idx + 1]) {\n var second = name.charCodeAt(idx + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n chars++;\n }\n }\n\n var firstChar = name.substring(idx, idx + chars);\n return firstChar.toUpperCase();\n },\n\n render: function render() {\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var imageUrl = this.state.imageUrls[this.state.urlsIndex];\n\n var _props = this.props,\n name = _props.name,\n idName = _props.idName,\n title = _props.title,\n url = _props.url,\n urls = _props.urls,\n width = _props.width,\n height = _props.height,\n resizeMethod = _props.resizeMethod,\n defaultToInitialLetter = _props.defaultToInitialLetter,\n onClick = _props.onClick,\n otherProps = (0, _objectWithoutProperties3.default)(_props, ['name', 'idName', 'title', 'url', 'urls', 'width', 'height', 'resizeMethod', 'defaultToInitialLetter', 'onClick']);\n\n\n if (imageUrl === this.state.defaultImageUrl) {\n var initialLetter = this._getInitialLetter(name);\n var textNode = _react2.default.createElement(\n EmojiText,\n { className: 'mx_BaseAvatar_initial', 'aria-hidden': 'true',\n style: { fontSize: width * 0.65 + \"px\",\n width: width + \"px\",\n lineHeight: height + \"px\" }\n },\n initialLetter\n );\n var imgNode = _react2.default.createElement('img', { className: 'mx_BaseAvatar_image', src: imageUrl,\n alt: '', title: title, onError: this.onError,\n width: width, height: height });\n if (onClick != null) {\n return _react2.default.createElement(\n _AccessibleButton2.default,\n (0, _extends3.default)({ element: 'span', className: 'mx_BaseAvatar',\n onClick: onClick }, otherProps),\n textNode,\n imgNode\n );\n } else {\n return _react2.default.createElement(\n 'span',\n (0, _extends3.default)({ className: 'mx_BaseAvatar' }, otherProps),\n textNode,\n imgNode\n );\n }\n }\n if (onClick != null) {\n return _react2.default.createElement(_AccessibleButton2.default, (0, _extends3.default)({ className: 'mx_BaseAvatar mx_BaseAvatar_image',\n element: 'img',\n src: imageUrl,\n onClick: onClick,\n onError: this.onError,\n width: width, height: height,\n title: title, alt: ''\n }, otherProps));\n } else {\n return _react2.default.createElement('img', (0, _extends3.default)({ className: 'mx_BaseAvatar mx_BaseAvatar_image', src: imageUrl,\n onError: this.onError,\n width: width, height: height,\n title: title, alt: ''\n }, otherProps));\n }\n }\n});\n//# sourceMappingURL=BaseAvatar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'GroupAvatar',\n\n propTypes: {\n groupId: _propTypes2.default.string,\n groupName: _propTypes2.default.string,\n groupAvatarUrl: _propTypes2.default.string,\n width: _propTypes2.default.number,\n height: _propTypes2.default.number,\n resizeMethod: _propTypes2.default.string,\n onClick: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n width: 36,\n height: 36,\n resizeMethod: 'crop'\n };\n },\n\n getGroupAvatarUrl: function getGroupAvatarUrl() {\n return _MatrixClientPeg2.default.get().mxcUrlToHttp(this.props.groupAvatarUrl, this.props.width, this.props.height, this.props.resizeMethod);\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n // extract the props we use from props so we can pass any others through\n // should consider adding this as a global rule in js-sdk?\n /*eslint no-unused-vars: [\"error\", { \"ignoreRestSiblings\": true }]*/\n var _props = this.props,\n groupId = _props.groupId,\n groupAvatarUrl = _props.groupAvatarUrl,\n groupName = _props.groupName,\n otherProps = (0, _objectWithoutProperties3.default)(_props, ['groupId', 'groupAvatarUrl', 'groupName']);\n\n\n return _react2.default.createElement(BaseAvatar, (0, _extends3.default)({\n name: groupName || this.props.groupId[1],\n idName: this.props.groupId,\n url: this.getGroupAvatarUrl()\n }, otherProps));\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupAvatar.js.map","\"use strict\";\n\nvar _extends2 = require(\"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require(\"babel-runtime/helpers/objectWithoutProperties\");\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require(\"matrix-js-sdk\");\n\nvar _MatrixClientPeg = require(\"../../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require(\"../../../Modal\");\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require(\"../../../index\");\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _DMRoomMap = require(\"../../../utils/DMRoomMap\");\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomAvatar',\n\n // Room may be left unset here, but if it is,\n // oobData.avatarUrl should be set (else there\n // would be nowhere to get the avatar from)\n propTypes: {\n room: _propTypes2.default.object,\n oobData: _propTypes2.default.object,\n width: _propTypes2.default.number,\n height: _propTypes2.default.number,\n resizeMethod: _propTypes2.default.string,\n viewAvatarOnClick: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n width: 36,\n height: 36,\n resizeMethod: 'crop',\n oobData: {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n urls: this.getImageUrls(this.props)\n };\n },\n\n componentWillMount: function componentWillMount() {\n _MatrixClientPeg2.default.get().on(\"RoomState.events\", this.onRoomStateEvents);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var cli = _MatrixClientPeg2.default.get();\n if (cli) {\n cli.removeListener(\"RoomState.events\", this.onRoomStateEvents);\n }\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n this.setState({\n urls: this.getImageUrls(newProps)\n });\n },\n\n onRoomStateEvents: function onRoomStateEvents(ev) {\n if (!this.props.room || ev.getRoomId() !== this.props.room.roomId || ev.getType() !== 'm.room.avatar') return;\n\n this.setState({\n urls: this.getImageUrls(this.props)\n });\n },\n\n getImageUrls: function getImageUrls(props) {\n return [_matrixJsSdk.ContentRepo.getHttpUriForMxc(_MatrixClientPeg2.default.get().getHomeserverUrl(), props.oobData.avatarUrl, Math.floor(props.width * window.devicePixelRatio), Math.floor(props.height * window.devicePixelRatio), props.resizeMethod), // highest priority\n this.getRoomAvatarUrl(props), this.getOneToOneAvatar(props)].filter(function (url) {\n return url != null && url != \"\";\n });\n },\n\n getRoomAvatarUrl: function getRoomAvatarUrl(props) {\n if (!props.room) return null;\n\n return props.room.getAvatarUrl(_MatrixClientPeg2.default.get().getHomeserverUrl(), Math.floor(props.width * window.devicePixelRatio), Math.floor(props.height * window.devicePixelRatio), props.resizeMethod, false);\n },\n\n getOneToOneAvatar: function getOneToOneAvatar(props) {\n var room = props.room;\n if (!room) {\n return null;\n }\n var otherMember = null;\n var otherUserId = _DMRoomMap2.default.shared().getUserIdForRoomId(room.roomId);\n if (otherUserId) {\n otherMember = room.getMember(otherUserId);\n } else {\n // if the room is not marked as a 1:1, but only has max 2 members\n // then still try to show any avatar (pref. other member)\n otherMember = room.getAvatarFallbackMember();\n }\n if (otherMember) {\n return otherMember.getAvatarUrl(_MatrixClientPeg2.default.get().getHomeserverUrl(), Math.floor(props.width * window.devicePixelRatio), Math.floor(props.height * window.devicePixelRatio), props.resizeMethod, false);\n }\n return null;\n },\n\n onRoomAvatarClick: function onRoomAvatarClick() {\n var avatarUrl = this.props.room.getAvatarUrl(_MatrixClientPeg2.default.get().getHomeserverUrl(), null, null, null, false);\n var ImageView = _index2.default.getComponent(\"elements.ImageView\");\n var params = {\n src: avatarUrl,\n name: this.props.room.name\n };\n\n _Modal2.default.createDialog(ImageView, params, \"mx_Dialog_lightbox\");\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n\n /*eslint no-unused-vars: [\"error\", { \"ignoreRestSiblings\": true }]*/\n var _props = this.props,\n room = _props.room,\n oobData = _props.oobData,\n viewAvatarOnClick = _props.viewAvatarOnClick,\n otherProps = (0, _objectWithoutProperties3.default)(_props, [\"room\", \"oobData\", \"viewAvatarOnClick\"]);\n\n\n var roomName = room ? room.name : oobData.name;\n\n return _react2.default.createElement(BaseAvatar, (0, _extends3.default)({}, otherProps, { name: roomName,\n idName: room ? room.roomId : null,\n urls: this.state.urls,\n onClick: this.props.viewAvatarOnClick ? this.onRoomAvatarClick : null }));\n }\n}); /*\n Copyright 2015, 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=RoomAvatar.js.map","/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * This component can be used to display generic HTML content in a contextual\n * menu.\n */\n\nvar GenericElementContextMenu = function (_React$Component) {\n (0, _inherits3.default)(GenericElementContextMenu, _React$Component);\n\n function GenericElementContextMenu(props) {\n (0, _classCallCheck3.default)(this, GenericElementContextMenu);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (GenericElementContextMenu.__proto__ || (0, _getPrototypeOf2.default)(GenericElementContextMenu)).call(this, props));\n\n _this.resize = _this.resize.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(GenericElementContextMenu, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.resize = this.resize.bind(this);\n window.addEventListener(\"resize\", this.resize);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n window.removeEventListener(\"resize\", this.resize);\n }\n }, {\n key: 'resize',\n value: function resize() {\n if (this.props.onResize) {\n this.props.onResize();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'div',\n null,\n this.props.element\n );\n }\n }]);\n return GenericElementContextMenu;\n}(_react2.default.Component);\n\nGenericElementContextMenu.PropTypes = {\n element: _propTypes2.default.element.isRequired,\n // Function to be called when the parent window is resized\n // This can be used to reposition or close the menu on resize and\n // ensure that it is not displayed in a stale position.\n onResize: _propTypes2.default.func\n};\nexports.default = GenericElementContextMenu;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GenericElementContextMenu.js.map","/*\nCopyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar GenericTextContextMenu = function (_React$Component) {\n (0, _inherits3.default)(GenericTextContextMenu, _React$Component);\n\n function GenericTextContextMenu() {\n (0, _classCallCheck3.default)(this, GenericTextContextMenu);\n return (0, _possibleConstructorReturn3.default)(this, (GenericTextContextMenu.__proto__ || (0, _getPrototypeOf2.default)(GenericTextContextMenu)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(GenericTextContextMenu, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'div',\n null,\n this.props.message\n );\n }\n }]);\n return GenericTextContextMenu;\n}(_react2.default.Component);\n\nGenericTextContextMenu.PropTypes = {\n message: _propTypes2.default.string.isRequired\n};\nexports.default = GenericTextContextMenu;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GenericTextContextMenu.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar GroupInviteTileContextMenu = function (_React$Component) {\n (0, _inherits3.default)(GroupInviteTileContextMenu, _React$Component);\n\n function GroupInviteTileContextMenu(props, context) {\n (0, _classCallCheck3.default)(this, GroupInviteTileContextMenu);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (GroupInviteTileContextMenu.__proto__ || (0, _getPrototypeOf2.default)(GroupInviteTileContextMenu)).call(this, props, context));\n\n _this._onClickReject = _this._onClickReject.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(GroupInviteTileContextMenu, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this._unmounted = false;\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: '_onClickReject',\n value: function _onClickReject() {\n var _this2 = this;\n\n var QuestionDialog = _index2.default.getComponent('dialogs.QuestionDialog');\n _Modal2.default.createTrackedDialog('Reject community invite', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Reject invitation'),\n description: (0, _languageHandler._t)('Are you sure you want to reject the invitation?'),\n onFinished: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(shouldLeave) {\n var Loader, modal, ErrorDialog;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (shouldLeave) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt('return');\n\n case 2:\n\n // FIXME: controller shouldn't be loading a view :(\n Loader = _index2.default.getComponent(\"elements.Spinner\");\n modal = _Modal2.default.createDialog(Loader, null, 'mx_Dialog_spinner');\n _context.prev = 4;\n _context.next = 7;\n return (0, _bluebird.resolve)(_GroupStore2.default.leaveGroup(_this2.props.group.groupId));\n\n case 7:\n _context.next = 14;\n break;\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context['catch'](4);\n\n console.error(\"Error rejecting community invite: \", _context.t0);\n ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n _Modal2.default.createTrackedDialog('Error rejecting invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Unable to reject invite\")\n });\n\n case 14:\n _context.prev = 14;\n\n modal.close();\n return _context.finish(14);\n\n case 17:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this2, [[4, 9, 14, 17]]);\n }));\n\n return function onFinished(_x) {\n return _ref.apply(this, arguments);\n };\n }()\n });\n\n // Close the context menu\n if (this.props.onFinished) {\n this.props.onFinished();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTileContextMenu_leave', onClick: this._onClickReject },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon', src: 'img/icon_context_delete.svg', width: '15', height: '15' }),\n (0, _languageHandler._t)('Reject')\n )\n );\n }\n }]);\n return GroupInviteTileContextMenu;\n}(_react2.default.Component); /*\n Copyright 2018 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nGroupInviteTileContextMenu.propTypes = {\n group: _propTypes2.default.instanceOf(_matrixJsSdk.Group).isRequired,\n /* callback called when the menu is dismissed */\n onFinished: _propTypes2.default.func\n};\nexports.default = GroupInviteTileContextMenu;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupInviteTileContextMenu.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _Resend = require('../../../Resend');\n\nvar _Resend2 = _interopRequireDefault(_Resend);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _matrixTo = require('../../../matrix-to');\n\nvar _HtmlUtils = require('../../../HtmlUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MessageContextMenu',\n\n propTypes: {\n /* the MatrixEvent associated with the context menu */\n mxEvent: _propTypes2.default.object.isRequired,\n\n /* an optional EventTileOps implementation that can be used to unhide preview widgets */\n eventTileOps: _propTypes2.default.object,\n\n /* an optional function to be called when the user clicks collapse thread, if not provided hide button */\n collapseReplyThread: _propTypes2.default.func,\n\n /* callback called when the menu is dismissed */\n onFinished: _propTypes2.default.func\n },\n\n getInitialState: function getInitialState() {\n return {\n canRedact: false,\n canPin: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n _MatrixClientPeg2.default.get().on('RoomMember.powerLevel', this._checkPermissions);\n this._checkPermissions();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var cli = _MatrixClientPeg2.default.get();\n if (cli) {\n cli.removeListener('RoomMember.powerLevel', this._checkPermissions);\n }\n },\n\n _checkPermissions: function _checkPermissions() {\n var cli = _MatrixClientPeg2.default.get();\n var room = cli.getRoom(this.props.mxEvent.getRoomId());\n\n var canRedact = room.currentState.maySendRedactionForEvent(this.props.mxEvent, cli.credentials.userId);\n var canPin = room.currentState.mayClientSendStateEvent('m.room.pinned_events', cli);\n\n // HACK: Intentionally say we can't pin if the user doesn't want to use the functionality\n if (!_SettingsStore2.default.isFeatureEnabled(\"feature_pinning\")) canPin = false;\n\n this.setState({ canRedact: canRedact, canPin: canPin });\n },\n\n _isPinned: function _isPinned() {\n var room = _MatrixClientPeg2.default.get().getRoom(this.props.mxEvent.getRoomId());\n var pinnedEvent = room.currentState.getStateEvents('m.room.pinned_events', '');\n if (!pinnedEvent) return false;\n return pinnedEvent.getContent().pinned.includes(this.props.mxEvent.getId());\n },\n\n onResendClick: function onResendClick() {\n _Resend2.default.resend(this.props.mxEvent);\n this.closeMenu();\n },\n\n onViewSourceClick: function onViewSourceClick() {\n var ViewSource = _index2.default.getComponent('structures.ViewSource');\n _Modal2.default.createTrackedDialog('View Event Source', '', ViewSource, {\n content: this.props.mxEvent.event\n }, 'mx_Dialog_viewsource');\n this.closeMenu();\n },\n\n onViewClearSourceClick: function onViewClearSourceClick() {\n var ViewSource = _index2.default.getComponent('structures.ViewSource');\n _Modal2.default.createTrackedDialog('View Clear Event Source', '', ViewSource, {\n // FIXME: _clearEvent is private\n content: this.props.mxEvent._clearEvent\n }, 'mx_Dialog_viewsource');\n this.closeMenu();\n },\n\n onRedactClick: function onRedactClick() {\n var _this = this;\n\n var ConfirmRedactDialog = _index2.default.getComponent(\"dialogs.ConfirmRedactDialog\");\n _Modal2.default.createTrackedDialog('Confirm Redact Dialog', '', ConfirmRedactDialog, {\n onFinished: function onFinished(proceed) {\n if (!proceed) return;\n\n var cli = _MatrixClientPeg2.default.get();\n cli.redactEvent(_this.props.mxEvent.getRoomId(), _this.props.mxEvent.getId()).catch(function (e) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n // display error message stating you couldn't delete this.\n var code = e.errcode || e.statusCode;\n _Modal2.default.createTrackedDialog('You cannot delete this message', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: (0, _languageHandler._t)('You cannot delete this message. (%(code)s)', { code: code })\n });\n }).done();\n }\n }, 'mx_Dialog_confirmredact');\n this.closeMenu();\n },\n\n onCancelSendClick: function onCancelSendClick() {\n _Resend2.default.removeFromQueue(this.props.mxEvent);\n this.closeMenu();\n },\n\n onForwardClick: function onForwardClick() {\n _dispatcher2.default.dispatch({\n action: 'forward_event',\n event: this.props.mxEvent\n });\n this.closeMenu();\n },\n\n onPinClick: function onPinClick() {\n var _this2 = this;\n\n _MatrixClientPeg2.default.get().getStateEvent(this.props.mxEvent.getRoomId(), 'm.room.pinned_events', '').catch(function (e) {\n // Intercept the Event Not Found error and fall through the promise chain with no event.\n if (e.errcode === \"M_NOT_FOUND\") return null;\n throw e;\n }).then(function (event) {\n var eventIds = (event ? event.pinned : []) || [];\n if (!eventIds.includes(_this2.props.mxEvent.getId())) {\n // Not pinned - add\n eventIds.push(_this2.props.mxEvent.getId());\n } else {\n // Pinned - remove\n eventIds.splice(eventIds.indexOf(_this2.props.mxEvent.getId()), 1);\n }\n\n var cli = _MatrixClientPeg2.default.get();\n cli.sendStateEvent(_this2.props.mxEvent.getRoomId(), 'm.room.pinned_events', { pinned: eventIds }, '');\n });\n this.closeMenu();\n },\n\n closeMenu: function closeMenu() {\n if (this.props.onFinished) this.props.onFinished();\n },\n\n onUnhidePreviewClick: function onUnhidePreviewClick() {\n if (this.props.eventTileOps) {\n this.props.eventTileOps.unhideWidget();\n }\n this.closeMenu();\n },\n\n onQuoteClick: function onQuoteClick() {\n _dispatcher2.default.dispatch({\n action: 'quote',\n event: this.props.mxEvent\n });\n this.closeMenu();\n },\n\n onPermalinkClick: function onPermalinkClick(e) {\n e.preventDefault();\n var ShareDialog = _index2.default.getComponent(\"dialogs.ShareDialog\");\n _Modal2.default.createTrackedDialog('share room message dialog', '', ShareDialog, {\n target: this.props.mxEvent\n });\n this.closeMenu();\n },\n\n onReplyClick: function onReplyClick() {\n _dispatcher2.default.dispatch({\n action: 'reply_to_event',\n event: this.props.mxEvent\n });\n this.closeMenu();\n },\n\n onCollapseReplyThreadClick: function onCollapseReplyThreadClick() {\n this.props.collapseReplyThread();\n this.closeMenu();\n },\n\n render: function render() {\n var eventStatus = this.props.mxEvent.status;\n var resendButton = void 0;\n var redactButton = void 0;\n var cancelButton = void 0;\n var forwardButton = void 0;\n var pinButton = void 0;\n var viewClearSourceButton = void 0;\n var unhidePreviewButton = void 0;\n var externalURLButton = void 0;\n var quoteButton = void 0;\n var replyButton = void 0;\n var collapseReplyThread = void 0;\n\n // status is SENT before remote-echo, null after\n var isSent = !eventStatus || eventStatus === _matrixJsSdk.EventStatus.SENT;\n\n if (eventStatus === _matrixJsSdk.EventStatus.NOT_SENT) {\n resendButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onResendClick },\n (0, _languageHandler._t)('Resend')\n );\n }\n\n if (isSent && this.state.canRedact) {\n redactButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onRedactClick },\n (0, _languageHandler._t)('Remove')\n );\n }\n\n if (eventStatus === _matrixJsSdk.EventStatus.QUEUED || eventStatus === _matrixJsSdk.EventStatus.NOT_SENT) {\n cancelButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onCancelSendClick },\n (0, _languageHandler._t)('Cancel Sending')\n );\n }\n\n if (isSent && this.props.mxEvent.getType() === 'm.room.message') {\n var content = this.props.mxEvent.getContent();\n if (content.msgtype && content.msgtype !== 'm.bad.encrypted' && content.hasOwnProperty('body')) {\n forwardButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onForwardClick },\n (0, _languageHandler._t)('Forward Message')\n );\n\n replyButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onReplyClick },\n (0, _languageHandler._t)('Reply')\n );\n\n if (this.state.canPin) {\n pinButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onPinClick },\n this._isPinned() ? (0, _languageHandler._t)('Unpin Message') : (0, _languageHandler._t)('Pin Message')\n );\n }\n }\n }\n\n var viewSourceButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onViewSourceClick },\n (0, _languageHandler._t)('View Source')\n );\n\n if (this.props.mxEvent.getType() !== this.props.mxEvent.getWireType()) {\n viewClearSourceButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onViewClearSourceClick },\n (0, _languageHandler._t)('View Decrypted Source')\n );\n }\n\n if (this.props.eventTileOps) {\n if (this.props.eventTileOps.isWidgetHidden()) {\n unhidePreviewButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onUnhidePreviewClick },\n (0, _languageHandler._t)('Unhide Preview')\n );\n }\n }\n\n // XXX: if we use room ID, we should also include a server where the event can be found (other than in the domain of the event ID)\n var permalinkButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field' },\n _react2.default.createElement(\n 'a',\n { href: (0, _matrixTo.makeEventPermalink)(this.props.mxEvent.getRoomId(), this.props.mxEvent.getId()),\n target: '_blank', rel: 'noopener', onClick: this.onPermalinkClick },\n (0, _languageHandler._t)('Share Message')\n )\n );\n\n if (this.props.eventTileOps && this.props.eventTileOps.getInnerText) {\n quoteButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onQuoteClick },\n (0, _languageHandler._t)('Quote')\n );\n }\n\n // Bridges can provide a 'external_url' to link back to the source.\n if (typeof this.props.mxEvent.event.content.external_url === \"string\" && (0, _HtmlUtils.isUrlPermitted)(this.props.mxEvent.event.content.external_url)) {\n externalURLButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field' },\n _react2.default.createElement(\n 'a',\n { href: this.props.mxEvent.event.content.external_url,\n rel: 'noopener', target: '_blank', onClick: this.closeMenu },\n (0, _languageHandler._t)('Source URL')\n )\n );\n }\n\n if (this.props.collapseReplyThread) {\n collapseReplyThread = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onCollapseReplyThreadClick },\n (0, _languageHandler._t)('Collapse Reply Thread')\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n resendButton,\n redactButton,\n cancelButton,\n forwardButton,\n pinButton,\n viewSourceButton,\n viewClearSourceButton,\n unhidePreviewButton,\n permalinkButton,\n quoteButton,\n replyButton,\n externalURLButton,\n collapseReplyThread\n );\n }\n});\n//# sourceMappingURL=MessageContextMenu.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _DMRoomMap = require('../../../utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _Rooms = require('../../../Rooms');\n\nvar Rooms = _interopRequireWildcard(_Rooms);\n\nvar _RoomNotifs = require('../../../RoomNotifs');\n\nvar RoomNotifs = _interopRequireWildcard(_RoomNotifs);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _RoomListActions = require('../../../actions/RoomListActions');\n\nvar _RoomListActions2 = _interopRequireDefault(_RoomListActions);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomTileContextMenu',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired,\n /* callback called when the menu is dismissed */\n onFinished: _propTypes2.default.func\n },\n\n getInitialState: function getInitialState() {\n var dmRoomMap = new _DMRoomMap2.default(_MatrixClientPeg2.default.get());\n return {\n roomNotifState: RoomNotifs.getRoomNotifsState(this.props.room.roomId),\n isFavourite: this.props.room.tags.hasOwnProperty(\"m.favourite\"),\n isLowPriority: this.props.room.tags.hasOwnProperty(\"m.lowpriority\"),\n isDirectMessage: Boolean(dmRoomMap.getUserIdForRoomId(this.props.room.roomId))\n };\n },\n\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n _toggleTag: function _toggleTag(tagNameOn, tagNameOff) {\n var _this = this;\n\n if (!_MatrixClientPeg2.default.get().isGuest()) {\n _bluebird2.default.delay(500).then(function () {\n _dispatcher2.default.dispatch(_RoomListActions2.default.tagRoom(_MatrixClientPeg2.default.get(), _this.props.room, tagNameOff, tagNameOn, undefined, 0), true);\n\n _this.props.onFinished();\n });\n }\n },\n\n _onClickFavourite: function _onClickFavourite() {\n // Tag room as 'Favourite'\n if (!this.state.isFavourite && this.state.isLowPriority) {\n this.setState({\n isFavourite: true,\n isLowPriority: false\n });\n this._toggleTag(\"m.favourite\", \"m.lowpriority\");\n } else if (this.state.isFavourite) {\n this.setState({ isFavourite: false });\n this._toggleTag(null, \"m.favourite\");\n } else if (!this.state.isFavourite) {\n this.setState({ isFavourite: true });\n this._toggleTag(\"m.favourite\");\n }\n },\n\n _onClickLowPriority: function _onClickLowPriority() {\n // Tag room as 'Low Priority'\n if (!this.state.isLowPriority && this.state.isFavourite) {\n this.setState({\n isFavourite: false,\n isLowPriority: true\n });\n this._toggleTag(\"m.lowpriority\", \"m.favourite\");\n } else if (this.state.isLowPriority) {\n this.setState({ isLowPriority: false });\n this._toggleTag(null, \"m.lowpriority\");\n } else if (!this.state.isLowPriority) {\n this.setState({ isLowPriority: true });\n this._toggleTag(\"m.lowpriority\");\n }\n },\n\n _onClickDM: function _onClickDM() {\n var _this2 = this;\n\n if (_MatrixClientPeg2.default.get().isGuest()) return;\n\n var newIsDirectMessage = !this.state.isDirectMessage;\n this.setState({\n isDirectMessage: newIsDirectMessage\n });\n\n Rooms.guessAndSetDMRoom(this.props.room, newIsDirectMessage).delay(500).finally(function () {\n // Close the context menu\n if (_this2.props.onFinished) {\n _this2.props.onFinished();\n }\n }, function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to set Direct Message status of room', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to set Direct Message status of room'),\n description: err && err.message ? err.message : (0, _languageHandler._t)('Operation failed')\n });\n });\n },\n\n _onClickLeave: function _onClickLeave() {\n // Leave room\n _dispatcher2.default.dispatch({\n action: 'leave_room',\n room_id: this.props.room.roomId\n });\n\n // Close the context menu\n if (this.props.onFinished) {\n this.props.onFinished();\n }\n },\n\n _onClickReject: function _onClickReject() {\n _dispatcher2.default.dispatch({\n action: 'reject_invite',\n room_id: this.props.room.roomId\n });\n\n // Close the context menu\n if (this.props.onFinished) {\n this.props.onFinished();\n }\n },\n\n _onClickForget: function _onClickForget() {\n // FIXME: duplicated with RoomSettings (and dead code in RoomView)\n _MatrixClientPeg2.default.get().forget(this.props.room.roomId).done(function () {\n _dispatcher2.default.dispatch({ action: 'view_next_room' });\n }, function (err) {\n var errCode = err.errcode || (0, _languageHandler._td)(\"unknown error code\");\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to forget room', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to forget room %(errCode)s', { errCode: errCode }),\n description: err && err.message ? err.message : (0, _languageHandler._t)('Operation failed')\n });\n });\n\n // Close the context menu\n if (this.props.onFinished) {\n this.props.onFinished();\n }\n },\n\n _saveNotifState: function _saveNotifState(newState) {\n var _this3 = this;\n\n if (_MatrixClientPeg2.default.get().isGuest()) return;\n\n var oldState = this.state.roomNotifState;\n var roomId = this.props.room.roomId;\n\n this.setState({\n roomNotifState: newState\n });\n RoomNotifs.setRoomNotifsState(roomId, newState).done(function () {\n // delay slightly so that the user can see their state change\n // before closing the menu\n return _bluebird2.default.delay(500).then(function () {\n if (_this3._unmounted) return;\n // Close the context menu\n if (_this3.props.onFinished) {\n _this3.props.onFinished();\n }\n });\n }, function (error) {\n // TODO: some form of error notification to the user\n // to inform them that their state change failed.\n // For now we at least set the state back\n if (_this3._unmounted) return;\n _this3.setState({\n roomNotifState: oldState\n });\n });\n },\n\n _onClickAlertMe: function _onClickAlertMe() {\n this._saveNotifState(RoomNotifs.ALL_MESSAGES_LOUD);\n },\n\n _onClickAllNotifs: function _onClickAllNotifs() {\n this._saveNotifState(RoomNotifs.ALL_MESSAGES);\n },\n\n _onClickMentions: function _onClickMentions() {\n this._saveNotifState(RoomNotifs.MENTIONS_ONLY);\n },\n\n _onClickMute: function _onClickMute() {\n this._saveNotifState(RoomNotifs.MUTE);\n },\n\n _renderNotifMenu: function _renderNotifMenu() {\n var alertMeClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_notif_field': true,\n 'mx_RoomTileContextMenu_notif_fieldSet': this.state.roomNotifState == RoomNotifs.ALL_MESSAGES_LOUD\n });\n\n var allNotifsClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_notif_field': true,\n 'mx_RoomTileContextMenu_notif_fieldSet': this.state.roomNotifState == RoomNotifs.ALL_MESSAGES\n });\n\n var mentionsClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_notif_field': true,\n 'mx_RoomTileContextMenu_notif_fieldSet': this.state.roomNotifState == RoomNotifs.MENTIONS_ONLY\n });\n\n var muteNotifsClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_notif_field': true,\n 'mx_RoomTileContextMenu_notif_fieldSet': this.state.roomNotifState == RoomNotifs.MUTE\n });\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTileContextMenu_notif_picker' },\n _react2.default.createElement('img', { src: 'img/notif-slider.svg', width: '20', height: '107' })\n ),\n _react2.default.createElement(\n 'div',\n { className: alertMeClasses, onClick: this._onClickAlertMe },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_activeIcon', src: 'img/notif-active.svg', width: '12', height: '12' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_icon mx_filterFlipColor', src: 'img/icon-context-mute-off-copy.svg', width: '16', height: '12' }),\n (0, _languageHandler._t)('All messages (noisy)')\n ),\n _react2.default.createElement(\n 'div',\n { className: allNotifsClasses, onClick: this._onClickAllNotifs },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_activeIcon', src: 'img/notif-active.svg', width: '12', height: '12' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_icon mx_filterFlipColor', src: 'img/icon-context-mute-off.svg', width: '16', height: '12' }),\n (0, _languageHandler._t)('All messages')\n ),\n _react2.default.createElement(\n 'div',\n { className: mentionsClasses, onClick: this._onClickMentions },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_activeIcon', src: 'img/notif-active.svg', width: '12', height: '12' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_icon mx_filterFlipColor', src: 'img/icon-context-mute-mentions.svg', width: '16', height: '12' }),\n (0, _languageHandler._t)('Mentions only')\n ),\n _react2.default.createElement(\n 'div',\n { className: muteNotifsClasses, onClick: this._onClickMute },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_activeIcon', src: 'img/notif-active.svg', width: '12', height: '12' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_icon mx_filterFlipColor', src: 'img/icon-context-mute.svg', width: '16', height: '12' }),\n (0, _languageHandler._t)('Mute')\n )\n );\n },\n\n _renderLeaveMenu: function _renderLeaveMenu(membership) {\n if (!membership) {\n return null;\n }\n\n var leaveClickHandler = null;\n var leaveText = null;\n\n switch (membership) {\n case \"join\":\n leaveClickHandler = this._onClickLeave;\n leaveText = (0, _languageHandler._t)('Leave');\n break;\n case \"leave\":\n case \"ban\":\n leaveClickHandler = this._onClickForget;\n leaveText = (0, _languageHandler._t)('Forget');\n break;\n case \"invite\":\n leaveClickHandler = this._onClickReject;\n leaveText = (0, _languageHandler._t)('Reject');\n break;\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTileContextMenu_leave', onClick: leaveClickHandler },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon', src: 'img/icon_context_delete.svg', width: '15', height: '15' }),\n leaveText\n )\n );\n },\n\n _renderRoomTagMenu: function _renderRoomTagMenu() {\n var favouriteClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_tag_field': true,\n 'mx_RoomTileContextMenu_tag_fieldSet': this.state.isFavourite,\n 'mx_RoomTileContextMenu_tag_fieldDisabled': false\n });\n\n var lowPriorityClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_tag_field': true,\n 'mx_RoomTileContextMenu_tag_fieldSet': this.state.isLowPriority,\n 'mx_RoomTileContextMenu_tag_fieldDisabled': false\n });\n\n var dmClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_tag_field': true,\n 'mx_RoomTileContextMenu_tag_fieldSet': this.state.isDirectMessage,\n 'mx_RoomTileContextMenu_tag_fieldDisabled': false\n });\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: favouriteClasses, onClick: this._onClickFavourite },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon', src: 'img/icon_context_fave.svg', width: '15', height: '15' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon_set', src: 'img/icon_context_fave_on.svg', width: '15', height: '15' }),\n (0, _languageHandler._t)('Favourite')\n ),\n _react2.default.createElement(\n 'div',\n { className: lowPriorityClasses, onClick: this._onClickLowPriority },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon', src: 'img/icon_context_low.svg', width: '15', height: '15' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon_set', src: 'img/icon_context_low_on.svg', width: '15', height: '15' }),\n (0, _languageHandler._t)('Low Priority')\n ),\n _react2.default.createElement(\n 'div',\n { className: dmClasses, onClick: this._onClickDM },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon', src: 'img/icon_context_person.svg', width: '15', height: '15' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon_set', src: 'img/icon_context_person_on.svg', width: '15', height: '15' }),\n (0, _languageHandler._t)('Direct Chat')\n )\n );\n },\n\n render: function render() {\n var myMembership = this.props.room.getMyMembership();\n\n // Can't set notif level or tags on non-join rooms\n if (myMembership !== 'join') {\n return this._renderLeaveMenu(myMembership);\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n this._renderNotifMenu(),\n _react2.default.createElement('hr', { className: 'mx_RoomTileContextMenu_separator' }),\n this._renderLeaveMenu(myMembership),\n _react2.default.createElement('hr', { className: 'mx_RoomTileContextMenu_separator' }),\n this._renderRoomTagMenu()\n );\n }\n});\n//# sourceMappingURL=RoomTileContextMenu.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _TagOrderActions = require('../../../actions/TagOrderActions');\n\nvar _TagOrderActions2 = _interopRequireDefault(_TagOrderActions);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TagTileContextMenu = function (_React$Component) {\n (0, _inherits3.default)(TagTileContextMenu, _React$Component);\n\n function TagTileContextMenu() {\n (0, _classCallCheck3.default)(this, TagTileContextMenu);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (TagTileContextMenu.__proto__ || (0, _getPrototypeOf2.default)(TagTileContextMenu)).call(this));\n\n _this._onViewCommunityClick = _this._onViewCommunityClick.bind(_this);\n _this._onRemoveClick = _this._onRemoveClick.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(TagTileContextMenu, [{\n key: '_onViewCommunityClick',\n value: function _onViewCommunityClick() {\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: this.props.tag\n });\n this.props.onFinished();\n }\n }, {\n key: '_onRemoveClick',\n value: function _onRemoveClick() {\n _dispatcher2.default.dispatch(_TagOrderActions2.default.removeTag(\n // XXX: Context menus don't have a MatrixClient context\n _MatrixClientPeg2.default.get(), this.props.tag));\n this.props.onFinished();\n }\n }, {\n key: 'render',\n value: function render() {\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_TagTileContextMenu_item', onClick: this._onViewCommunityClick },\n _react2.default.createElement(TintableSvg, {\n className: 'mx_TagTileContextMenu_item_icon',\n src: 'img/icons-groups.svg',\n width: '15',\n height: '15'\n }),\n (0, _languageHandler._t)('View Community')\n ),\n _react2.default.createElement('hr', { className: 'mx_TagTileContextMenu_separator' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_TagTileContextMenu_item', onClick: this._onRemoveClick },\n _react2.default.createElement('img', { className: 'mx_TagTileContextMenu_item_icon', src: 'img/icon_context_delete.svg', width: '15', height: '15' }),\n (0, _languageHandler._t)('Remove')\n )\n );\n }\n }]);\n return TagTileContextMenu;\n}(_react2.default.Component); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nTagTileContextMenu.propTypes = {\n tag: _propTypes2.default.string.isRequired,\n /* callback called when the menu is dismissed */\n onFinished: _propTypes2.default.func.isRequired\n};\nexports.default = TagTileContextMenu;\nmodule.exports = exports['default'];\n//# sourceMappingURL=TagTileContextMenu.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'CreateRoomButton',\n propTypes: {\n onCreateRoom: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onCreateRoom: function onCreateRoom() {}\n };\n },\n\n onClick: function onClick() {\n this.props.onCreateRoom();\n },\n\n render: function render() {\n return _react2.default.createElement(\n 'button',\n { className: 'mx_CreateRoomButton', onClick: this.onClick },\n (0, _languageHandler._t)(\"Create Room\")\n );\n }\n});\n//# sourceMappingURL=CreateRoomButton.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nvar Presets = {\n PrivateChat: \"private_chat\",\n PublicChat: \"public_chat\",\n Custom: \"custom\"\n};\n\nmodule.exports = React.createClass({\n displayName: 'CreateRoomPresets',\n propTypes: {\n onChange: _propTypes2.default.func,\n preset: _propTypes2.default.string\n },\n\n Presets: Presets,\n\n getDefaultProps: function getDefaultProps() {\n return {\n onChange: function onChange() {}\n };\n },\n\n onValueChanged: function onValueChanged(ev) {\n this.props.onChange(ev.target.value);\n },\n\n render: function render() {\n return React.createElement(\n 'select',\n { className: 'mx_Presets', onChange: this.onValueChanged, value: this.props.preset },\n React.createElement(\n 'option',\n { value: this.Presets.PrivateChat },\n (0, _languageHandler._t)(\"Private Chat\")\n ),\n React.createElement(\n 'option',\n { value: this.Presets.PublicChat },\n (0, _languageHandler._t)(\"Public Chat\")\n ),\n React.createElement(\n 'option',\n { value: this.Presets.Custom },\n (0, _languageHandler._t)(\"Custom\")\n )\n );\n }\n});\n//# sourceMappingURL=Presets.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require('react');\n\n\nmodule.exports = React.createClass({\n displayName: 'RoomAlias',\n propTypes: {\n // Specifying a homeserver will make magical things happen when you,\n // e.g. start typing in the room alias box.\n homeserver: _propTypes2.default.string,\n alias: _propTypes2.default.string,\n onChange: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onChange: function onChange() {},\n alias: ''\n };\n },\n\n getAliasLocalpart: function getAliasLocalpart() {\n var room_alias = this.props.alias;\n\n if (room_alias && this.props.homeserver) {\n var suffix = \":\" + this.props.homeserver;\n if (room_alias.startsWith(\"#\") && room_alias.endsWith(suffix)) {\n room_alias = room_alias.slice(1, -suffix.length);\n }\n }\n\n return room_alias;\n },\n\n onValueChanged: function onValueChanged(ev) {\n this.props.onChange(ev.target.value);\n },\n\n onFocus: function onFocus(ev) {\n var target = ev.target;\n var curr_val = ev.target.value;\n\n if (this.props.homeserver) {\n if (curr_val == \"\") {\n var self = this;\n setTimeout(function () {\n target.value = \"#:\" + self.props.homeserver;\n target.setSelectionRange(1, 1);\n }, 0);\n } else {\n var suffix = \":\" + this.props.homeserver;\n setTimeout(function () {\n target.setSelectionRange(curr_val.startsWith(\"#\") ? 1 : 0, curr_val.endsWith(suffix) ? target.value.length - suffix.length : target.value.length);\n }, 0);\n }\n }\n },\n\n onBlur: function onBlur(ev) {\n var curr_val = ev.target.value;\n\n if (this.props.homeserver) {\n if (curr_val == \"#:\" + this.props.homeserver) {\n ev.target.value = \"\";\n return;\n }\n\n if (curr_val != \"\") {\n var new_val = ev.target.value;\n var suffix = \":\" + this.props.homeserver;\n if (!curr_val.startsWith(\"#\")) new_val = \"#\" + new_val;\n if (!curr_val.endsWith(suffix)) new_val = new_val + suffix;\n ev.target.value = new_val;\n }\n }\n },\n\n render: function render() {\n return React.createElement('input', { type: 'text', className: 'mx_RoomAlias', placeholder: (0, _languageHandler._t)(\"Alias (optional)\"),\n onChange: this.onValueChanged, onFocus: this.onFocus, onBlur: this.onBlur,\n value: this.props.alias });\n }\n});\n//# sourceMappingURL=RoomAlias.js.map","'use strict';\n\nvar _set = require('babel-runtime/core-js/set');\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _UserAddress = require('../../../UserAddress.js');\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar TRUNCATE_QUERY_LIST = 40;\nvar QUERY_USER_DIRECTORY_DEBOUNCE_MS = 200;\n\nvar addressTypeName = {\n 'mx-user-id': (0, _languageHandler._td)(\"Matrix ID\"),\n 'mx-room-id': (0, _languageHandler._td)(\"Matrix Room ID\"),\n 'email': (0, _languageHandler._td)(\"email address\")\n};\n\nmodule.exports = _react2.default.createClass({\n displayName: \"AddressPickerDialog\",\n\n propTypes: {\n title: _propTypes2.default.string.isRequired,\n description: _propTypes2.default.node,\n // Extra node inserted after picker input, dropdown and errors\n extraNode: _propTypes2.default.node,\n value: _propTypes2.default.string,\n placeholder: _propTypes2.default.string,\n roomId: _propTypes2.default.string,\n button: _propTypes2.default.string,\n focus: _propTypes2.default.bool,\n validAddressTypes: _propTypes2.default.arrayOf(_propTypes2.default.oneOf(_UserAddress.addressTypes)),\n onFinished: _propTypes2.default.func.isRequired,\n groupId: _propTypes2.default.string,\n // The type of entity to search for. Default: 'user'.\n pickerType: _propTypes2.default.oneOf(['user', 'room']),\n // Whether the current user should be included in the addresses returned. Only\n // applicable when pickerType is `user`. Default: false.\n includeSelf: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n value: \"\",\n focus: true,\n validAddressTypes: _UserAddress.addressTypes,\n pickerType: 'user',\n includeSelf: false\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n error: false,\n\n // List of UserAddressType objects representing\n // the list of addresses we're going to invite\n selectedList: [],\n\n // Whether a search is ongoing\n busy: false,\n // An error message generated during the user directory search\n searchError: null,\n // Whether the server supports the user_directory API\n serverSupportsUserDirectory: true,\n // The query being searched for\n query: \"\",\n // List of UserAddressType objects representing the set of\n // auto-completion results for the current search query.\n suggestedList: []\n };\n },\n\n componentDidMount: function componentDidMount() {\n if (this.props.focus) {\n // Set the cursor at the end of the text input\n this.refs.textinput.value = this.props.value;\n }\n },\n\n onButtonClick: function onButtonClick() {\n var selectedList = this.state.selectedList.slice();\n // Check the text input field to see if user has an unconverted address\n // If there is and it's valid add it to the local selectedList\n if (this.refs.textinput.value !== '') {\n selectedList = this._addInputToList();\n if (selectedList === null) return;\n }\n this.props.onFinished(true, selectedList);\n },\n\n onCancel: function onCancel() {\n this.props.onFinished(false);\n },\n\n onKeyDown: function onKeyDown(e) {\n if (e.keyCode === 27) {\n // escape\n e.stopPropagation();\n e.preventDefault();\n this.props.onFinished(false);\n } else if (e.keyCode === 38) {\n // up arrow\n e.stopPropagation();\n e.preventDefault();\n if (this.addressSelector) this.addressSelector.moveSelectionUp();\n } else if (e.keyCode === 40) {\n // down arrow\n e.stopPropagation();\n e.preventDefault();\n if (this.addressSelector) this.addressSelector.moveSelectionDown();\n } else if (this.state.suggestedList.length > 0 && (e.keyCode === 188 || e.keyCode === 13 || e.keyCode === 9)) {\n // comma or enter or tab\n e.stopPropagation();\n e.preventDefault();\n if (this.addressSelector) this.addressSelector.chooseSelection();\n } else if (this.refs.textinput.value.length === 0 && this.state.selectedList.length && e.keyCode === 8) {\n // backspace\n e.stopPropagation();\n e.preventDefault();\n this.onDismissed(this.state.selectedList.length - 1)();\n } else if (e.keyCode === 13) {\n // enter\n e.stopPropagation();\n e.preventDefault();\n if (this.refs.textinput.value === '') {\n // if there's nothing in the input box, submit the form\n this.onButtonClick();\n } else {\n this._addInputToList();\n }\n } else if (e.keyCode === 188 || e.keyCode === 9) {\n // comma or tab\n e.stopPropagation();\n e.preventDefault();\n this._addInputToList();\n }\n },\n\n onQueryChanged: function onQueryChanged(ev) {\n var _this = this;\n\n var query = ev.target.value;\n if (this.queryChangedDebouncer) {\n clearTimeout(this.queryChangedDebouncer);\n }\n // Only do search if there is something to search\n if (query.length > 0 && query !== '@' && query.length >= 2) {\n this.queryChangedDebouncer = setTimeout(function () {\n if (_this.props.pickerType === 'user') {\n if (_this.props.groupId) {\n _this._doNaiveGroupSearch(query);\n } else if (_this.state.serverSupportsUserDirectory) {\n _this._doUserDirectorySearch(query);\n } else {\n _this._doLocalSearch(query);\n }\n } else if (_this.props.pickerType === 'room') {\n if (_this.props.groupId) {\n _this._doNaiveGroupRoomSearch(query);\n } else {\n _this._doRoomSearch(query);\n }\n } else {\n console.error('Unknown pickerType', _this.props.pickerType);\n }\n }, QUERY_USER_DIRECTORY_DEBOUNCE_MS);\n } else {\n this.setState({\n suggestedList: [],\n query: \"\",\n searchError: null\n });\n }\n },\n\n onDismissed: function onDismissed(index) {\n var _this2 = this;\n\n return function () {\n var selectedList = _this2.state.selectedList.slice();\n selectedList.splice(index, 1);\n _this2.setState({\n selectedList: selectedList,\n suggestedList: [],\n query: \"\"\n });\n if (_this2._cancelThreepidLookup) _this2._cancelThreepidLookup();\n };\n },\n\n onClick: function onClick(index) {\n var _this3 = this;\n\n return function () {\n _this3.onSelected(index);\n };\n },\n\n onSelected: function onSelected(index) {\n var selectedList = this.state.selectedList.slice();\n selectedList.push(this.state.suggestedList[index]);\n this.setState({\n selectedList: selectedList,\n suggestedList: [],\n query: \"\"\n });\n if (this._cancelThreepidLookup) this._cancelThreepidLookup();\n },\n\n _doNaiveGroupSearch: function _doNaiveGroupSearch(query) {\n var _this4 = this;\n\n var lowerCaseQuery = query.toLowerCase();\n this.setState({\n busy: true,\n query: query,\n searchError: null\n });\n _MatrixClientPeg2.default.get().getGroupUsers(this.props.groupId).then(function (resp) {\n var results = [];\n resp.chunk.forEach(function (u) {\n var userIdMatch = u.user_id.toLowerCase().includes(lowerCaseQuery);\n var displayNameMatch = (u.displayname || '').toLowerCase().includes(lowerCaseQuery);\n if (!(userIdMatch || displayNameMatch)) {\n return;\n }\n results.push({\n user_id: u.user_id,\n avatar_url: u.avatar_url,\n display_name: u.displayname\n });\n });\n _this4._processResults(results, query);\n }).catch(function (err) {\n console.error('Error whilst searching group rooms: ', err);\n _this4.setState({\n searchError: err.errcode ? err.message : (0, _languageHandler._t)('Something went wrong!')\n });\n }).done(function () {\n _this4.setState({\n busy: false\n });\n });\n },\n\n _doNaiveGroupRoomSearch: function _doNaiveGroupRoomSearch(query) {\n var lowerCaseQuery = query.toLowerCase();\n var results = [];\n _GroupStore2.default.getGroupRooms(this.props.groupId).forEach(function (r) {\n var nameMatch = (r.name || '').toLowerCase().includes(lowerCaseQuery);\n var topicMatch = (r.topic || '').toLowerCase().includes(lowerCaseQuery);\n var aliasMatch = (r.canonical_alias || '').toLowerCase().includes(lowerCaseQuery);\n if (!(nameMatch || topicMatch || aliasMatch)) {\n return;\n }\n results.push({\n room_id: r.room_id,\n avatar_url: r.avatar_url,\n name: r.name || r.canonical_alias\n });\n });\n this._processResults(results, query);\n this.setState({\n busy: false\n });\n },\n\n _doRoomSearch: function _doRoomSearch(query) {\n var lowerCaseQuery = query.toLowerCase();\n var rooms = _MatrixClientPeg2.default.get().getRooms();\n var results = [];\n rooms.forEach(function (room) {\n var rank = Infinity;\n var nameEvent = room.currentState.getStateEvents('m.room.name', '');\n var name = nameEvent ? nameEvent.getContent().name : '';\n var canonicalAlias = room.getCanonicalAlias();\n var aliasEvents = room.currentState.getStateEvents('m.room.aliases');\n var aliases = aliasEvents.map(function (ev) {\n return ev.getContent().aliases;\n }).reduce(function (a, b) {\n return a.concat(b);\n }, []);\n\n var nameMatch = (name || '').toLowerCase().includes(lowerCaseQuery);\n var aliasMatch = false;\n var shortestMatchingAliasLength = Infinity;\n aliases.forEach(function (alias) {\n if ((alias || '').toLowerCase().includes(lowerCaseQuery)) {\n aliasMatch = true;\n if (shortestMatchingAliasLength > alias.length) {\n shortestMatchingAliasLength = alias.length;\n }\n }\n });\n\n if (!(nameMatch || aliasMatch)) {\n return;\n }\n\n if (aliasMatch) {\n // A shorter matching alias will give a better rank\n rank = shortestMatchingAliasLength;\n }\n\n var avatarEvent = room.currentState.getStateEvents('m.room.avatar', '');\n var avatarUrl = avatarEvent ? avatarEvent.getContent().url : undefined;\n\n results.push({\n rank: rank,\n room_id: room.roomId,\n avatar_url: avatarUrl,\n name: name || canonicalAlias || aliases[0] || (0, _languageHandler._t)('Unnamed Room')\n });\n });\n\n // Sort by rank ascending (a high rank being less relevant)\n var sortedResults = results.sort(function (a, b) {\n return a.rank - b.rank;\n });\n\n this._processResults(sortedResults, query);\n this.setState({\n busy: false\n });\n },\n\n _doUserDirectorySearch: function _doUserDirectorySearch(query) {\n var _this5 = this;\n\n this.setState({\n busy: true,\n query: query,\n searchError: null\n });\n _MatrixClientPeg2.default.get().searchUserDirectory({\n term: query\n }).then(function (resp) {\n // The query might have changed since we sent the request, so ignore\n // responses for anything other than the latest query.\n if (_this5.state.query !== query) {\n return;\n }\n _this5._processResults(resp.results, query);\n }).catch(function (err) {\n console.error('Error whilst searching user directory: ', err);\n _this5.setState({\n searchError: err.errcode ? err.message : (0, _languageHandler._t)('Something went wrong!')\n });\n if (err.errcode === 'M_UNRECOGNIZED') {\n _this5.setState({\n serverSupportsUserDirectory: false\n });\n // Do a local search immediately\n _this5._doLocalSearch(query);\n }\n }).done(function () {\n _this5.setState({\n busy: false\n });\n });\n },\n\n _doLocalSearch: function _doLocalSearch(query) {\n this.setState({\n query: query,\n searchError: null\n });\n var queryLowercase = query.toLowerCase();\n var results = [];\n _MatrixClientPeg2.default.get().getUsers().forEach(function (user) {\n if (user.userId.toLowerCase().indexOf(queryLowercase) === -1 && user.displayName.toLowerCase().indexOf(queryLowercase) === -1) {\n return;\n }\n\n // Put results in the format of the new API\n results.push({\n user_id: user.userId,\n display_name: user.displayName,\n avatar_url: user.avatarUrl\n });\n });\n this._processResults(results, query);\n },\n\n _processResults: function _processResults(results, query) {\n var _this6 = this;\n\n var suggestedList = [];\n results.forEach(function (result) {\n if (result.room_id) {\n suggestedList.push({\n addressType: 'mx-room-id',\n address: result.room_id,\n displayName: result.name,\n avatarMxc: result.avatar_url,\n isKnown: true\n });\n return;\n }\n if (!_this6.props.includeSelf && result.user_id === _MatrixClientPeg2.default.get().credentials.userId) {\n return;\n }\n\n // Return objects, structure of which is defined\n // by UserAddressType\n suggestedList.push({\n addressType: 'mx-user-id',\n address: result.user_id,\n displayName: result.display_name,\n avatarMxc: result.avatar_url,\n isKnown: true\n });\n });\n\n // If the query is a valid address, add an entry for that\n // This is important, otherwise there's no way to invite\n // a perfectly valid address if there are close matches.\n var addrType = (0, _UserAddress.getAddressType)(query);\n if (this.props.validAddressTypes.includes(addrType)) {\n suggestedList.unshift({\n addressType: addrType,\n address: query,\n isKnown: false\n });\n if (this._cancelThreepidLookup) this._cancelThreepidLookup();\n if (addrType === 'email') {\n this._lookupThreepid(addrType, query).done();\n }\n }\n this.setState({\n suggestedList: suggestedList,\n error: false\n }, function () {\n if (_this6.addressSelector) _this6.addressSelector.moveSelectionTop();\n });\n },\n\n _addInputToList: function _addInputToList() {\n var addressText = this.refs.textinput.value.trim();\n var addrType = (0, _UserAddress.getAddressType)(addressText);\n var addrObj = {\n addressType: addrType,\n address: addressText,\n isKnown: false\n };\n if (!this.props.validAddressTypes.includes(addrType)) {\n this.setState({ error: true });\n return null;\n } else if (addrType === 'mx-user-id') {\n var user = _MatrixClientPeg2.default.get().getUser(addrObj.address);\n if (user) {\n addrObj.displayName = user.displayName;\n addrObj.avatarMxc = user.avatarUrl;\n addrObj.isKnown = true;\n }\n } else if (addrType === 'mx-room-id') {\n var room = _MatrixClientPeg2.default.get().getRoom(addrObj.address);\n if (room) {\n addrObj.displayName = room.name;\n addrObj.avatarMxc = room.avatarUrl;\n addrObj.isKnown = true;\n }\n }\n\n var selectedList = this.state.selectedList.slice();\n selectedList.push(addrObj);\n this.setState({\n selectedList: selectedList,\n suggestedList: [],\n query: \"\"\n });\n if (this._cancelThreepidLookup) this._cancelThreepidLookup();\n return selectedList;\n },\n\n _lookupThreepid: function _lookupThreepid(medium, address) {\n var _this7 = this;\n\n var cancelled = false;\n // Note that we can't safely remove this after we're done\n // because we don't know that it's the same one, so we just\n // leave it: it's replacing the old one each time so it's\n // not like they leak.\n this._cancelThreepidLookup = function () {\n cancelled = true;\n };\n\n // wait a bit to let the user finish typing\n return _bluebird2.default.delay(500).then(function () {\n if (cancelled) return null;\n return _MatrixClientPeg2.default.get().lookupThreePid(medium, address);\n }).then(function (res) {\n if (res === null || !res.mxid) return null;\n if (cancelled) return null;\n\n return _MatrixClientPeg2.default.get().getProfileInfo(res.mxid);\n }).then(function (res) {\n if (res === null) return null;\n if (cancelled) return null;\n _this7.setState({\n suggestedList: [{\n // a UserAddressType\n addressType: medium,\n address: address,\n displayName: res.displayname,\n avatarMxc: res.avatar_url,\n isKnown: true\n }]\n });\n });\n },\n\n render: function render() {\n var _this8 = this;\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n var AddressSelector = _index2.default.getComponent(\"elements.AddressSelector\");\n this.scrollElement = null;\n\n // map addressType => set of addresses to avoid O(n*m) operation\n var selectedAddresses = {};\n this.state.selectedList.forEach(function (_ref) {\n var address = _ref.address,\n addressType = _ref.addressType;\n\n if (!selectedAddresses[addressType]) selectedAddresses[addressType] = new _set2.default();\n selectedAddresses[addressType].add(address);\n });\n\n // Filter out any addresses in the above already selected addresses (matching both type and address)\n var filteredSuggestedList = this.state.suggestedList.filter(function (_ref2) {\n var address = _ref2.address,\n addressType = _ref2.addressType;\n\n return !(selectedAddresses[addressType] && selectedAddresses[addressType].has(address));\n });\n\n var query = [];\n // create the invite list\n if (this.state.selectedList.length > 0) {\n var AddressTile = _index2.default.getComponent(\"elements.AddressTile\");\n for (var i = 0; i < this.state.selectedList.length; i++) {\n query.push(_react2.default.createElement(AddressTile, {\n key: i,\n address: this.state.selectedList[i],\n canDismiss: true,\n onDismissed: this.onDismissed(i),\n showAddress: this.props.pickerType === 'user' }));\n }\n }\n\n // Add the query at the end\n query.push(_react2.default.createElement('textarea', { key: this.state.selectedList.length,\n rows: '1',\n id: 'textinput',\n ref: 'textinput',\n className: 'mx_ChatInviteDialog_input',\n onChange: this.onQueryChanged,\n placeholder: this.props.placeholder,\n defaultValue: this.props.value,\n autoFocus: this.props.focus }));\n\n var error = void 0;\n var addressSelector = void 0;\n if (this.state.error) {\n var validTypeDescriptions = this.props.validAddressTypes.map(function (t) {\n return (0, _languageHandler._t)(addressTypeName[t]);\n });\n error = _react2.default.createElement(\n 'div',\n { className: 'mx_ChatInviteDialog_error' },\n (0, _languageHandler._t)(\"You have entered an invalid address.\"),\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)(\"Try using one of the following valid address types: %(validTypesList)s.\", {\n validTypesList: validTypeDescriptions.join(\", \")\n })\n );\n } else if (this.state.searchError) {\n error = _react2.default.createElement(\n 'div',\n { className: 'mx_ChatInviteDialog_error' },\n this.state.searchError\n );\n } else if (this.state.query.length > 0 && filteredSuggestedList.length === 0 && !this.state.busy) {\n error = _react2.default.createElement(\n 'div',\n { className: 'mx_ChatInviteDialog_error' },\n (0, _languageHandler._t)(\"No results\")\n );\n } else {\n addressSelector = _react2.default.createElement(AddressSelector, { ref: function ref(_ref3) {\n _this8.addressSelector = _ref3;\n },\n addressList: filteredSuggestedList,\n showAddress: this.props.pickerType === 'user',\n onSelected: this.onSelected,\n truncateAt: TRUNCATE_QUERY_LIST\n });\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_ChatInviteDialog', onKeyDown: this.onKeyDown,\n onFinished: this.props.onFinished, title: this.props.title },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ChatInviteDialog_label' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'textinput' },\n this.props.description\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ChatInviteDialog_inputContainer' },\n query\n ),\n error,\n addressSelector,\n this.props.extraNode\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: this.props.button,\n onPrimaryButtonClick: this.onButtonClick,\n onCancel: this.onCancel })\n );\n }\n});\n//# sourceMappingURL=AddressPickerDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _focusTrapReact = require('focus-trap-react');\n\nvar _focusTrapReact2 = _interopRequireDefault(_focusTrapReact);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _Keyboard = require('../../../Keyboard');\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Basic container for modal dialogs.\n *\n * Includes a div for the title, and a keypress handler which cancels the\n * dialog on escape.\n */\nexports.default = _react2.default.createClass({\n displayName: 'BaseDialog',\n\n propTypes: {\n // onFinished callback to call when Escape is pressed\n // Take a boolean which is true if the dialog was dismissed\n // with a positive / confirm action or false if it was\n // cancelled (BaseDialog itself only calls this with false).\n onFinished: _propTypes2.default.func.isRequired,\n\n // Whether the dialog should have a 'close' button that will\n // cause the dialog to be cancelled. This should only be set\n // to false if there is nothing the app can sensibly do if the\n // dialog is cancelled, eg. \"We can't restore your session and\n // the app cannot work\". Default: true.\n hasCancel: _propTypes2.default.bool,\n\n // called when a key is pressed\n onKeyDown: _propTypes2.default.func,\n\n // CSS class to apply to dialog div\n className: _propTypes2.default.string,\n\n // Title for the dialog.\n // (could probably actually be something more complicated than a string if desired)\n title: _propTypes2.default.string.isRequired,\n\n // children should be the content of the dialog\n children: _propTypes2.default.node,\n\n // Id of content element\n // If provided, this is used to add a aria-describedby attribute\n contentId: _propTypes2.default.string,\n\n // optional additional class for the title element\n titleClass: _propTypes2.default.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n hasCancel: true\n };\n },\n\n childContextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getChildContext: function getChildContext() {\n return {\n matrixClient: this._matrixClient\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._matrixClient = _MatrixClientPeg2.default.get();\n },\n\n\n _onKeyDown: function _onKeyDown(e) {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n if (this.props.hasCancel && e.keyCode === _Keyboard.KeyCode.ESCAPE) {\n e.stopPropagation();\n e.preventDefault();\n this.props.onFinished(false);\n }\n },\n\n _onCancelClick: function _onCancelClick(e) {\n this.props.onFinished(false);\n },\n\n render: function render() {\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n\n var cancelButton = void 0;\n if (this.props.hasCancel) {\n cancelButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._onCancelClick, className: 'mx_Dialog_cancelButton' },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-close-button.svg', width: '35', height: '35' })\n );\n }\n\n return _react2.default.createElement(\n _focusTrapReact2.default,\n { onKeyDown: this._onKeyDown,\n className: this.props.className,\n role: 'dialog',\n 'aria-labelledby': 'mx_BaseDialog_title'\n // This should point to a node describing the dialog.\n // If we were about to completely follow this recommendation we'd need to\n // make all the components relying on BaseDialog to be aware of it.\n // So instead we will use the whole content as the description.\n // Description comes first and if the content contains more text,\n // AT users can skip its presentation.\n , 'aria-describedby': this.props.contentId\n },\n cancelButton,\n _react2.default.createElement(\n 'div',\n { className: (0, _classnames2.default)('mx_Dialog_title', this.props.titleClass), id: 'mx_BaseDialog_title' },\n this.props.title\n ),\n this.props.children\n );\n }\n}); /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=BaseDialog.js.map","'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar createFocusTrap = require('focus-trap');\n\nvar checkedProps = ['active', 'paused', 'tag', 'focusTrapOptions', '_createFocusTrap'];\n\nvar FocusTrap = function (_React$Component) {\n _inherits(FocusTrap, _React$Component);\n\n function FocusTrap(props) {\n _classCallCheck(this, FocusTrap);\n\n var _this = _possibleConstructorReturn(this, (FocusTrap.__proto__ || Object.getPrototypeOf(FocusTrap)).call(this, props));\n\n _this.setNode = function (el) {\n _this.node = el;\n };\n\n if (typeof document !== 'undefined') {\n _this.previouslyFocusedElement = document.activeElement;\n }\n return _this;\n }\n\n _createClass(FocusTrap, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n // We need to hijack the returnFocusOnDeactivate option,\n // because React can move focus into the element before we arrived at\n // this lifecycle hook (e.g. with autoFocus inputs). So the component\n // captures the previouslyFocusedElement in componentWillMount,\n // then (optionally) returns focus to it in componentWillUnmount.\n var specifiedFocusTrapOptions = this.props.focusTrapOptions;\n var tailoredFocusTrapOptions = {\n returnFocusOnDeactivate: false\n };\n for (var optionName in specifiedFocusTrapOptions) {\n if (!specifiedFocusTrapOptions.hasOwnProperty(optionName)) continue;\n if (optionName === 'returnFocusOnDeactivate') continue;\n tailoredFocusTrapOptions[optionName] = specifiedFocusTrapOptions[optionName];\n }\n\n this.focusTrap = this.props._createFocusTrap(this.node, tailoredFocusTrapOptions);\n if (this.props.active) {\n this.focusTrap.activate();\n }\n if (this.props.paused) {\n this.focusTrap.pause();\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (prevProps.active && !this.props.active) {\n this.focusTrap.deactivate();\n } else if (!prevProps.active && this.props.active) {\n this.focusTrap.activate();\n }\n\n if (prevProps.paused && !this.props.paused) {\n this.focusTrap.unpause();\n } else if (!prevProps.paused && this.props.paused) {\n this.focusTrap.pause();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.focusTrap.deactivate();\n if (this.props.focusTrapOptions.returnFocusOnDeactivate !== false && this.previouslyFocusedElement && this.previouslyFocusedElement.focus) {\n this.previouslyFocusedElement.focus();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var elementProps = {\n ref: this.setNode\n };\n\n // This will get id, className, style, etc. -- arbitrary element props\n for (var prop in this.props) {\n if (!this.props.hasOwnProperty(prop)) continue;\n if (checkedProps.indexOf(prop) !== -1) continue;\n elementProps[prop] = this.props[prop];\n }\n\n return React.createElement(this.props.tag, elementProps, this.props.children);\n }\n }]);\n\n return FocusTrap;\n}(React.Component);\n\nFocusTrap.defaultProps = {\n active: true,\n tag: 'div',\n paused: false,\n focusTrapOptions: {},\n _createFocusTrap: createFocusTrap\n};\n\nmodule.exports = FocusTrap;","var tabbable = require('tabbable');\n\nvar listeningFocusTrap = null;\n\nfunction focusTrap(element, userOptions) {\n var tabbableNodes = [];\n var firstTabbableNode = null;\n var lastTabbableNode = null;\n var nodeFocusedBeforeActivation = null;\n var active = false;\n var paused = false;\n var tabEvent = null;\n\n var container = (typeof element === 'string')\n ? document.querySelector(element)\n : element;\n\n var config = userOptions || {};\n config.returnFocusOnDeactivate = (userOptions && userOptions.returnFocusOnDeactivate !== undefined)\n ? userOptions.returnFocusOnDeactivate\n : true;\n config.escapeDeactivates = (userOptions && userOptions.escapeDeactivates !== undefined)\n ? userOptions.escapeDeactivates\n : true;\n\n var trap = {\n activate: activate,\n deactivate: deactivate,\n pause: pause,\n unpause: unpause,\n };\n\n return trap;\n\n function activate(activateOptions) {\n if (active) return;\n\n var defaultedActivateOptions = {\n onActivate: (activateOptions && activateOptions.onActivate !== undefined)\n ? activateOptions.onActivate\n : config.onActivate,\n };\n\n active = true;\n paused = false;\n nodeFocusedBeforeActivation = document.activeElement;\n\n if (defaultedActivateOptions.onActivate) {\n defaultedActivateOptions.onActivate();\n }\n\n addListeners();\n return trap;\n }\n\n function deactivate(deactivateOptions) {\n if (!active) return;\n\n var defaultedDeactivateOptions = {\n returnFocus: (deactivateOptions && deactivateOptions.returnFocus !== undefined)\n ? deactivateOptions.returnFocus\n : config.returnFocusOnDeactivate,\n onDeactivate: (deactivateOptions && deactivateOptions.onDeactivate !== undefined)\n ? deactivateOptions.onDeactivate\n : config.onDeactivate,\n };\n\n removeListeners();\n\n if (defaultedDeactivateOptions.onDeactivate) {\n defaultedDeactivateOptions.onDeactivate();\n }\n\n if (defaultedDeactivateOptions.returnFocus) {\n setTimeout(function () {\n tryFocus(nodeFocusedBeforeActivation);\n }, 0);\n }\n\n active = false;\n paused = false;\n return this;\n }\n\n function pause() {\n if (paused || !active) return;\n paused = true;\n removeListeners();\n }\n\n function unpause() {\n if (!paused || !active) return;\n paused = false;\n addListeners();\n }\n\n function addListeners() {\n if (!active) return;\n\n // There can be only one listening focus trap at a time\n if (listeningFocusTrap) {\n listeningFocusTrap.pause();\n }\n listeningFocusTrap = trap;\n\n updateTabbableNodes();\n // Ensure that the focused element doesn't capture the event that caused the focus trap activation\n setTimeout(function () {\n tryFocus(firstFocusNode());\n }, 0);\n document.addEventListener('focus', checkFocus, true);\n document.addEventListener('click', checkClick, true);\n document.addEventListener('mousedown', checkPointerDown, true);\n document.addEventListener('touchstart', checkPointerDown, true);\n document.addEventListener('keydown', checkKey, true);\n\n return trap;\n }\n\n function removeListeners() {\n if (!active || listeningFocusTrap !== trap) return;\n\n document.removeEventListener('focus', checkFocus, true);\n document.removeEventListener('click', checkClick, true);\n document.removeEventListener('mousedown', checkPointerDown, true);\n document.removeEventListener('touchstart', checkPointerDown, true);\n document.removeEventListener('keydown', checkKey, true);\n\n listeningFocusTrap = null;\n\n return trap;\n }\n\n function getNodeForOption(optionName) {\n var optionValue = config[optionName];\n var node = optionValue;\n if (!optionValue) {\n return null;\n }\n if (typeof optionValue === 'string') {\n node = document.querySelector(optionValue);\n if (!node) {\n throw new Error('`' + optionName + '` refers to no known node');\n }\n }\n if (typeof optionValue === 'function') {\n node = optionValue();\n if (!node) {\n throw new Error('`' + optionName + '` did not return a node');\n }\n }\n return node;\n }\n\n function firstFocusNode() {\n var node;\n if (getNodeForOption('initialFocus') !== null) {\n node = getNodeForOption('initialFocus');\n } else if (container.contains(document.activeElement)) {\n node = document.activeElement;\n } else {\n node = tabbableNodes[0] || getNodeForOption('fallbackFocus');\n }\n\n if (!node) {\n throw new Error('You can\\'t have a focus-trap without at least one focusable element');\n }\n\n return node;\n }\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event\n function checkPointerDown(e) {\n if (config.clickOutsideDeactivates && !container.contains(e.target)) {\n deactivate({ returnFocus: false });\n }\n }\n\n function checkClick(e) {\n if (config.clickOutsideDeactivates) return;\n if (container.contains(e.target)) return;\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n\n function checkFocus(e) {\n if (container.contains(e.target)) return;\n e.preventDefault();\n e.stopImmediatePropagation();\n // Checking for a blur method here resolves a Firefox issue (#15)\n if (typeof e.target.blur === 'function') e.target.blur();\n\n if (tabEvent) {\n readjustFocus(tabEvent);\n }\n }\n\n function checkKey(e) {\n if (e.key === 'Tab' || e.keyCode === 9) {\n handleTab(e);\n }\n\n if (config.escapeDeactivates !== false && isEscapeEvent(e)) {\n deactivate();\n }\n }\n\n function handleTab(e) {\n updateTabbableNodes();\n\n if (e.target.hasAttribute('tabindex') && Number(e.target.getAttribute('tabindex')) < 0) {\n return tabEvent = e;\n }\n\n e.preventDefault();\n var currentFocusIndex = tabbableNodes.indexOf(e.target);\n\n if (e.shiftKey) {\n if (e.target === firstTabbableNode || tabbableNodes.indexOf(e.target) === -1) {\n return tryFocus(lastTabbableNode);\n }\n return tryFocus(tabbableNodes[currentFocusIndex - 1]);\n }\n\n if (e.target === lastTabbableNode) return tryFocus(firstTabbableNode);\n\n tryFocus(tabbableNodes[currentFocusIndex + 1]);\n }\n\n function updateTabbableNodes() {\n tabbableNodes = tabbable(container);\n firstTabbableNode = tabbableNodes[0];\n lastTabbableNode = tabbableNodes[tabbableNodes.length - 1];\n }\n\n function readjustFocus(e) {\n if (e.shiftKey) return tryFocus(lastTabbableNode);\n\n tryFocus(firstTabbableNode);\n }\n}\n\nfunction isEscapeEvent(e) {\n return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;\n}\n\nfunction tryFocus(node) {\n if (!node || !node.focus) return;\n if (node === document.activeElement) return;\n\n node.focus();\n if (node.tagName.toLowerCase() === 'input') {\n node.select();\n }\n}\n\nmodule.exports = focusTrap;\n","module.exports = function(el, options) {\n options = options || {};\n\n var elementDocument = el.ownerDocument || el;\n var basicTabbables = [];\n var orderedTabbables = [];\n\n // A node is \"available\" if\n // - it's computed style\n var isUnavailable = createIsUnavailable(elementDocument);\n\n var candidateSelectors = [\n 'input',\n 'select',\n 'a[href]',\n 'textarea',\n 'button',\n '[tabindex]',\n ];\n\n var candidates = el.querySelectorAll(candidateSelectors.join(','));\n\n if (options.includeContainer) {\n var matches = Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n if (\n candidateSelectors.some(function(candidateSelector) {\n return matches.call(el, candidateSelector);\n })\n ) {\n candidates = Array.prototype.slice.apply(candidates);\n candidates.unshift(el);\n }\n }\n\n var candidate, candidateIndexAttr, candidateIndex;\n for (var i = 0, l = candidates.length; i < l; i++) {\n candidate = candidates[i];\n candidateIndexAttr = parseInt(candidate.getAttribute('tabindex'), 10)\n candidateIndex = isNaN(candidateIndexAttr) ? candidate.tabIndex : candidateIndexAttr;\n\n if (\n candidateIndex < 0\n || (candidate.tagName === 'INPUT' && candidate.type === 'hidden')\n || candidate.disabled\n || isUnavailable(candidate, elementDocument)\n ) {\n continue;\n }\n\n if (candidateIndex === 0) {\n basicTabbables.push(candidate);\n } else {\n orderedTabbables.push({\n index: i,\n tabIndex: candidateIndex,\n node: candidate,\n });\n }\n }\n\n var tabbableNodes = orderedTabbables\n .sort(function(a, b) {\n return a.tabIndex === b.tabIndex ? a.index - b.index : a.tabIndex - b.tabIndex;\n })\n .map(function(a) {\n return a.node\n });\n\n Array.prototype.push.apply(tabbableNodes, basicTabbables);\n\n return tabbableNodes;\n}\n\nfunction createIsUnavailable(elementDocument) {\n // Node cache must be refreshed on every check, in case\n // the content of the element has changed\n var isOffCache = [];\n\n // \"off\" means `display: none;`, as opposed to \"hidden\",\n // which means `visibility: hidden;`. getComputedStyle\n // accurately reflects visiblity in context but not\n // \"off\" state, so we need to recursively check parents.\n\n function isOff(node, nodeComputedStyle) {\n if (node === elementDocument.documentElement) return false;\n\n // Find the cached node (Array.prototype.find not available in IE9)\n for (var i = 0, length = isOffCache.length; i < length; i++) {\n if (isOffCache[i][0] === node) return isOffCache[i][1];\n }\n\n nodeComputedStyle = nodeComputedStyle || elementDocument.defaultView.getComputedStyle(node);\n\n var result = false;\n\n if (nodeComputedStyle.display === 'none') {\n result = true;\n } else if (node.parentNode) {\n result = isOff(node.parentNode);\n }\n\n isOffCache.push([node, result]);\n\n return result;\n }\n\n return function isUnavailable(node) {\n if (node === elementDocument.documentElement) return false;\n\n var computedStyle = elementDocument.defaultView.getComputedStyle(node);\n\n if (isOff(node, computedStyle)) return true;\n\n return computedStyle.visibility === 'hidden';\n }\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BugReportDialog = function (_React$Component) {\n (0, _inherits3.default)(BugReportDialog, _React$Component);\n\n function BugReportDialog(props, context) {\n (0, _classCallCheck3.default)(this, BugReportDialog);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (BugReportDialog.__proto__ || (0, _getPrototypeOf2.default)(BugReportDialog)).call(this, props, context));\n\n _this.state = {\n sendLogs: true,\n busy: false,\n err: null,\n issueUrl: \"\",\n text: \"\",\n progress: null\n };\n _this._unmounted = false;\n _this._onSubmit = _this._onSubmit.bind(_this);\n _this._onCancel = _this._onCancel.bind(_this);\n _this._onTextChange = _this._onTextChange.bind(_this);\n _this._onIssueUrlChange = _this._onIssueUrlChange.bind(_this);\n _this._onSendLogsChange = _this._onSendLogsChange.bind(_this);\n _this._sendProgressCallback = _this._sendProgressCallback.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(BugReportDialog, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: '_onCancel',\n value: function _onCancel(ev) {\n this.props.onFinished(false);\n }\n }, {\n key: '_onSubmit',\n value: function _onSubmit(ev) {\n var _this2 = this;\n\n var userText = (this.state.text.length > 0 ? this.state.text + '\\n\\n' : '') + 'Issue: ' + (this.state.issueUrl.length > 0 ? this.state.issueUrl : 'No issue link given');\n\n this.setState({ busy: true, progress: null, err: null });\n this._sendProgressCallback((0, _languageHandler._t)(\"Preparing to send logs\"));\n\n require(['../../../rageshake/submit-rageshake'], function (s) {\n s(_SdkConfig2.default.get().bug_report_endpoint_url, {\n userText: userText,\n sendLogs: true,\n progressCallback: _this2._sendProgressCallback\n }).then(function () {\n if (!_this2._unmounted) {\n _this2.props.onFinished(false);\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n // N.B. first param is passed to piwik and so doesn't want i18n\n _Modal2.default.createTrackedDialog('Bug report sent', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Logs sent'),\n description: (0, _languageHandler._t)('Thank you!'),\n hasCancelButton: false\n });\n }\n }, function (err) {\n if (!_this2._unmounted) {\n _this2.setState({\n busy: false,\n progress: null,\n err: (0, _languageHandler._t)(\"Failed to send logs: \") + ('' + err.message)\n });\n }\n });\n });\n }\n }, {\n key: '_onTextChange',\n value: function _onTextChange(ev) {\n this.setState({ text: ev.target.value });\n }\n }, {\n key: '_onIssueUrlChange',\n value: function _onIssueUrlChange(ev) {\n this.setState({ issueUrl: ev.target.value });\n }\n }, {\n key: '_onSendLogsChange',\n value: function _onSendLogsChange(ev) {\n this.setState({ sendLogs: ev.target.checked });\n }\n }, {\n key: '_sendProgressCallback',\n value: function _sendProgressCallback(progress) {\n if (this._unmounted) {\n return;\n }\n this.setState({ progress: progress });\n }\n }, {\n key: 'render',\n value: function render() {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n\n var error = null;\n if (this.state.err) {\n error = _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.err\n );\n }\n\n var progress = null;\n if (this.state.busy) {\n progress = _react2.default.createElement(\n 'div',\n { className: 'progress' },\n _react2.default.createElement(Loader, null),\n this.state.progress,\n ' ...'\n );\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_BugReportDialog', onFinished: this._onCancel,\n title: (0, _languageHandler._t)('Submit debug logs'),\n contentId: 'mx_Dialog_content'\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Debug logs contain application usage data including your \" + \"username, the IDs or aliases of the rooms or groups you \" + \"have visited and the usernames of other users. They do \" + \"not contain messages.\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n _react2.default.createElement(\n 'b',\n null,\n (0, _languageHandler._t)(\"Before submitting logs, you must <a>create a GitHub issue</a> to describe your problem.\", {}, {\n a: function a(sub) {\n return _react2.default.createElement(\n 'a',\n {\n target: '_blank',\n href: 'https://github.com/vector-im/riot-web/issues/new'\n },\n sub\n );\n }\n })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_BugReportDialog_field_container' },\n _react2.default.createElement(\n 'label',\n {\n htmlFor: 'mx_BugReportDialog_issueUrl',\n className: 'mx_BugReportDialog_field_label'\n },\n (0, _languageHandler._t)(\"What GitHub issue are these logs for?\")\n ),\n _react2.default.createElement('input', {\n id: 'mx_BugReportDialog_issueUrl',\n type: 'text',\n className: 'mx_BugReportDialog_field_input',\n onChange: this._onIssueUrlChange,\n value: this.state.issueUrl,\n placeholder: 'https://github.com/vector-im/riot-web/issues/...'\n })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_BugReportDialog_field_container' },\n _react2.default.createElement(\n 'label',\n {\n htmlFor: 'mx_BugReportDialog_notes_label',\n className: 'mx_BugReportDialog_field_label'\n },\n (0, _languageHandler._t)(\"Notes:\")\n ),\n _react2.default.createElement('textarea', {\n className: 'mx_BugReportDialog_field_input',\n rows: 5,\n onChange: this._onTextChange,\n value: this.state.text\n })\n ),\n progress,\n error\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: (0, _languageHandler._t)(\"Send logs\"),\n onPrimaryButtonClick: this._onSubmit,\n focus: true,\n onCancel: this._onCancel,\n disabled: this.state.busy\n })\n );\n }\n }]);\n return BugReportDialog;\n}(_react2.default.Component); /*\n Copyright 2017 OpenMarket Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = BugReportDialog;\n\n\nBugReportDialog.propTypes = {\n onFinished: _react2.default.PropTypes.func.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=BugReportDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _browserRequest = require('browser-request');\n\nvar _browserRequest2 = _interopRequireDefault(_browserRequest);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n Copyright 2016 Aviral Dasgupta\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar REPOS = ['vector-im/riot-web', 'matrix-org/matrix-react-sdk', 'matrix-org/matrix-js-sdk'];\n\nvar ChangelogDialog = function (_React$Component) {\n (0, _inherits3.default)(ChangelogDialog, _React$Component);\n\n function ChangelogDialog(props) {\n (0, _classCallCheck3.default)(this, ChangelogDialog);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ChangelogDialog.__proto__ || (0, _getPrototypeOf2.default)(ChangelogDialog)).call(this, props));\n\n _this.state = {};\n return _this;\n }\n\n (0, _createClass3.default)(ChangelogDialog, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n var version = this.props.newVersion.split('-');\n var version2 = this.props.version.split('-');\n if (version == null || version2 == null) return;\n // parse versions of form: [vectorversion]-react-[react-sdk-version]-js-[js-sdk-version]\n\n var _loop = function _loop(i) {\n var oldVersion = version2[2 * i];\n var newVersion = version[2 * i];\n (0, _browserRequest2.default)('https://api.github.com/repos/' + REPOS[i] + '/compare/' + oldVersion + '...' + newVersion, function (a, b, body) {\n if (body == null) return;\n _this2.setState((0, _defineProperty3.default)({}, REPOS[i], JSON.parse(body).commits));\n });\n };\n\n for (var i = 0; i < REPOS.length; i++) {\n _loop(i);\n }\n }\n }, {\n key: '_elementsForCommit',\n value: function _elementsForCommit(commit) {\n return _react2.default.createElement(\n 'li',\n { key: commit.sha, className: 'mx_ChangelogDialog_li' },\n _react2.default.createElement(\n 'a',\n { href: commit.html_url, target: '_blank', rel: 'noopener' },\n commit.commit.message\n )\n );\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var Spinner = _index2.default.getComponent('views.elements.Spinner');\n var QuestionDialog = _index2.default.getComponent('dialogs.QuestionDialog');\n\n var logs = REPOS.map(function (repo) {\n if (_this3.state[repo] == null) return _react2.default.createElement(Spinner, { key: repo });\n return _react2.default.createElement(\n 'div',\n { key: repo },\n _react2.default.createElement(\n 'h2',\n null,\n repo\n ),\n _react2.default.createElement(\n 'ul',\n null,\n _this3.state[repo].map(_this3._elementsForCommit)\n )\n );\n });\n\n var content = _react2.default.createElement(\n 'div',\n { className: 'mx_ChangelogDialog_content' },\n this.props.version == null || this.props.newVersion == null ? _react2.default.createElement(\n 'h2',\n null,\n (0, _languageHandler._t)(\"Unavailable\")\n ) : logs\n );\n\n return _react2.default.createElement(QuestionDialog, {\n title: (0, _languageHandler._t)(\"Changelog\"),\n description: content,\n button: (0, _languageHandler._t)(\"Update\"),\n onFinished: this.props.onFinished\n });\n }\n }]);\n return ChangelogDialog;\n}(_react2.default.Component);\n\nexports.default = ChangelogDialog;\n\n\nChangelogDialog.propTypes = {\n version: _react2.default.PropTypes.string.isRequired,\n newVersion: _react2.default.PropTypes.string.isRequired,\n onFinished: _react2.default.PropTypes.func.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=ChangelogDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _DMRoomMap = require('../../../utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _Unread = require('../../../Unread');\n\nvar _Unread2 = _interopRequireDefault(_Unread);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ChatCreateOrReuseDialog = function (_React$Component) {\n (0, _inherits3.default)(ChatCreateOrReuseDialog, _React$Component);\n\n function ChatCreateOrReuseDialog(props) {\n (0, _classCallCheck3.default)(this, ChatCreateOrReuseDialog);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ChatCreateOrReuseDialog.__proto__ || (0, _getPrototypeOf2.default)(ChatCreateOrReuseDialog)).call(this, props));\n\n _this.onFinished = _this.onFinished.bind(_this);\n _this.onRoomTileClick = _this.onRoomTileClick.bind(_this);\n\n _this.state = {\n tiles: [],\n profile: {\n displayName: null,\n avatarUrl: null\n },\n profileError: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(ChatCreateOrReuseDialog, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n var client = _MatrixClientPeg2.default.get();\n\n var dmRoomMap = new _DMRoomMap2.default(client);\n var dmRooms = dmRoomMap.getDMRoomsForUserId(this.props.userId);\n\n var RoomTile = _index2.default.getComponent(\"rooms.RoomTile\");\n\n var tiles = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(dmRooms), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var roomId = _step.value;\n\n var room = client.getRoom(roomId);\n if (room) {\n var isInvite = room.getMyMembership() === \"invite\";\n var highlight = room.getUnreadNotificationCount('highlight') > 0 || isInvite;\n tiles.push(_react2.default.createElement(RoomTile, { key: room.roomId, room: room,\n transparent: true,\n collapsed: false,\n selected: false,\n unread: _Unread2.default.doesRoomHaveUnreadMessages(room),\n highlight: highlight,\n isInvite: isInvite,\n onClick: this.onRoomTileClick\n }));\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n this.setState({\n tiles: tiles\n });\n\n if (tiles.length === 0) {\n this.setState({\n busyProfile: true\n });\n _MatrixClientPeg2.default.get().getProfileInfo(this.props.userId).done(function (resp) {\n var profile = {\n displayName: resp.displayname,\n avatarUrl: null\n };\n if (resp.avatar_url) {\n profile.avatarUrl = _MatrixClientPeg2.default.get().mxcUrlToHttp(resp.avatar_url, 48, 48, \"crop\");\n }\n _this2.setState({\n busyProfile: false,\n profile: profile\n });\n }, function (err) {\n console.error('Unable to get profile for user ' + _this2.props.userId + ':', err);\n _this2.setState({\n busyProfile: false,\n profileError: err\n });\n });\n }\n }\n }, {\n key: 'onRoomTileClick',\n value: function onRoomTileClick(roomId) {\n this.props.onExistingRoomSelected(roomId);\n }\n }, {\n key: 'onFinished',\n value: function onFinished() {\n this.props.onFinished(false);\n }\n }, {\n key: 'render',\n value: function render() {\n var title = '';\n var content = null;\n if (this.state.tiles.length > 0) {\n // Show the existing rooms with a \"+\" to add a new dm\n title = (0, _languageHandler._t)('Create a new chat or reuse an existing one');\n var labelClasses = (0, _classnames2.default)({\n mx_MemberInfo_createRoom_label: true,\n mx_RoomTile_name: true\n });\n var startNewChat = _react2.default.createElement(\n _AccessibleButton2.default,\n {\n className: 'mx_MemberInfo_createRoom',\n onClick: this.props.onNewDMClick\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_avatar' },\n _react2.default.createElement('img', { src: 'img/create-big.svg', width: '26', height: '26' })\n ),\n _react2.default.createElement(\n 'div',\n { className: labelClasses },\n _react2.default.createElement(\n 'i',\n null,\n (0, _languageHandler._t)(\"Start new chat\")\n )\n )\n );\n content = _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n (0, _languageHandler._t)('You already have existing direct chats with this user:'),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ChatCreateOrReuseDialog_tiles' },\n this.state.tiles,\n startNewChat\n )\n );\n } else {\n // Show the avatar, name and a button to confirm that a new chat is requested\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n var Spinner = _index2.default.getComponent('elements.Spinner');\n title = (0, _languageHandler._t)('Start chatting');\n\n var profile = null;\n if (this.state.busyProfile) {\n profile = _react2.default.createElement(Spinner, null);\n } else if (this.state.profileError) {\n profile = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n 'Unable to load profile information for ',\n this.props.userId\n );\n } else {\n profile = _react2.default.createElement(\n 'div',\n { className: 'mx_ChatCreateOrReuseDialog_profile' },\n _react2.default.createElement(BaseAvatar, {\n name: this.state.profile.displayName || this.props.userId,\n url: this.state.profile.avatarUrl,\n width: 48, height: 48\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ChatCreateOrReuseDialog_profile_name' },\n this.state.profile.displayName || this.props.userId\n )\n );\n }\n content = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Click on the button below to start chatting!')\n ),\n profile\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: (0, _languageHandler._t)('Start Chatting'),\n onPrimaryButtonClick: this.props.onNewDMClick, focus: true })\n );\n }\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_ChatCreateOrReuseDialog',\n onFinished: this.onFinished,\n title: title,\n contentId: 'mx_Dialog_content'\n },\n content\n );\n }\n }]);\n return ChatCreateOrReuseDialog;\n}(_react2.default.Component); /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = ChatCreateOrReuseDialog;\n\n\nChatCreateOrReuseDialog.propTypes = {\n userId: _propTypes2.default.string.isRequired,\n // Called when clicking outside of the dialog\n onFinished: _propTypes2.default.func.isRequired,\n onNewDMClick: _propTypes2.default.func.isRequired,\n onExistingRoomSelected: _propTypes2.default.func.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=ChatCreateOrReuseDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * A dialog for confirming a redaction.\n */\nexports.default = _react2.default.createClass({\n displayName: 'ConfirmRedactDialog',\n\n render: function render() {\n var QuestionDialog = _index2.default.getComponent('views.dialogs.QuestionDialog');\n return _react2.default.createElement(QuestionDialog, { onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)(\"Confirm Removal\"),\n description: (0, _languageHandler._t)(\"Are you sure you wish to remove (delete) this event? \" + \"Note that if you delete a room name or topic change, it could undo the change.\"),\n button: (0, _languageHandler._t)(\"Remove\") });\n }\n}); /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=ConfirmRedactDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _groups = require('../../../groups');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * A dialog for confirming an operation on another user.\n * Takes a user ID and a verb, displays the target user prominently\n * such that it should be easy to confirm that the operation is being\n * performed on the right person, and displays the operation prominently\n * to make it obvious what is going to happen.\n * Also tweaks the style for 'dangerous' actions (albeit only with colour)\n */\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'ConfirmUserActionDialog',\n propTypes: {\n // matrix-js-sdk (room) member object. Supply either this or 'groupMember'\n member: _propTypes2.default.object,\n // group member object. Supply either this or 'member'\n groupMember: _groups.GroupMemberType,\n // needed if a group member is specified\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient),\n action: _propTypes2.default.string.isRequired, // eg. 'Ban'\n title: _propTypes2.default.string.isRequired, // eg. 'Ban this user?'\n\n // Whether to display a text field for a reason\n // If true, the second argument to onFinished will\n // be the string entered.\n askReason: _propTypes2.default.bool,\n danger: _propTypes2.default.bool,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n defaultProps: {\n danger: false,\n askReason: false\n },\n\n componentWillMount: function componentWillMount() {\n this._reasonField = null;\n },\n\n onOk: function onOk() {\n var reason = void 0;\n if (this._reasonField) {\n reason = this._reasonField.value;\n }\n this.props.onFinished(true, reason);\n },\n\n onCancel: function onCancel() {\n this.props.onFinished(false);\n },\n\n _collectReasonField: function _collectReasonField(e) {\n this._reasonField = e;\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n var MemberAvatar = _index2.default.getComponent(\"views.avatars.MemberAvatar\");\n var BaseAvatar = _index2.default.getComponent(\"views.avatars.BaseAvatar\");\n\n var confirmButtonClass = this.props.danger ? 'danger' : '';\n\n var reasonBox = void 0;\n if (this.props.askReason) {\n reasonBox = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'form',\n { onSubmit: this.onOk },\n _react2.default.createElement('input', { className: 'mx_ConfirmUserActionDialog_reasonField',\n ref: this._collectReasonField,\n placeholder: (0, _languageHandler._t)(\"Reason\"),\n autoFocus: true\n })\n )\n );\n }\n\n var avatar = void 0;\n var name = void 0;\n var userId = void 0;\n if (this.props.member) {\n avatar = _react2.default.createElement(MemberAvatar, { member: this.props.member, width: 48, height: 48 });\n name = this.props.member.name;\n userId = this.props.member.userId;\n } else {\n var httpAvatarUrl = this.props.groupMember.avatarUrl ? this.props.matrixClient.mxcUrlToHttp(this.props.groupMember.avatarUrl, 48, 48) : null;\n name = this.props.groupMember.displayname || this.props.groupMember.userId;\n userId = this.props.groupMember.userId;\n avatar = _react2.default.createElement(BaseAvatar, { name: name, url: httpAvatarUrl, width: 48, height: 48 });\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_ConfirmUserActionDialog', onFinished: this.props.onFinished,\n title: this.props.title,\n contentId: 'mx_Dialog_content'\n },\n _react2.default.createElement(\n 'div',\n { id: 'mx_Dialog_content', className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ConfirmUserActionDialog_avatar' },\n avatar\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ConfirmUserActionDialog_name' },\n name\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ConfirmUserActionDialog_userId' },\n userId\n )\n ),\n reasonBox,\n _react2.default.createElement(DialogButtons, { primaryButton: this.props.action,\n onPrimaryButtonClick: this.onOk,\n primaryButtonClass: confirmButtonClass,\n focus: !this.props.askReason,\n onCancel: this.onCancel })\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=ConfirmUserActionDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'CreateGroupDialog',\n propTypes: {\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n groupName: '',\n groupId: '',\n groupError: null,\n creating: false,\n createError: null\n };\n },\n\n _onGroupNameChange: function _onGroupNameChange(e) {\n this.setState({\n groupName: e.target.value\n });\n },\n\n _onGroupIdChange: function _onGroupIdChange(e) {\n this.setState({\n groupId: e.target.value\n });\n },\n\n _onGroupIdBlur: function _onGroupIdBlur(e) {\n this._checkGroupId();\n },\n\n _checkGroupId: function _checkGroupId(e) {\n var error = null;\n if (!this.state.groupId) {\n error = (0, _languageHandler._t)(\"Community IDs cannot be empty.\");\n } else if (!/^[a-z0-9=_\\-\\.\\/]*$/.test(this.state.groupId)) {\n error = (0, _languageHandler._t)(\"Community IDs may only contain characters a-z, 0-9, or '=_-./'\");\n }\n this.setState({\n groupIdError: error,\n // Reset createError to get rid of now stale error message\n createError: null\n });\n return error;\n },\n\n _onFormSubmit: function _onFormSubmit(e) {\n var _this = this;\n\n e.preventDefault();\n\n if (this._checkGroupId()) return;\n\n var profile = {};\n if (this.state.groupName !== '') {\n profile.name = this.state.groupName;\n }\n this.setState({ creating: true });\n _MatrixClientPeg2.default.get().createGroup({\n localpart: this.state.groupId,\n profile: profile\n }).then(function (result) {\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: result.group_id,\n group_is_new: true\n });\n _this.props.onFinished(true);\n }).catch(function (e) {\n _this.setState({ createError: e });\n }).finally(function () {\n _this.setState({ creating: false });\n }).done();\n },\n\n _onCancel: function _onCancel() {\n this.props.onFinished(false);\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var Spinner = _index2.default.getComponent('elements.Spinner');\n\n if (this.state.creating) {\n return _react2.default.createElement(Spinner, null);\n }\n\n var createErrorNode = void 0;\n if (this.state.createError) {\n // XXX: We should catch errcodes and give sensible i18ned messages for them,\n // rather than displaying what the server gives us, but synapse doesn't give\n // any yet.\n createErrorNode = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Something went wrong whilst creating your community')\n ),\n _react2.default.createElement(\n 'div',\n null,\n this.state.createError.message\n )\n );\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_CreateGroupDialog', onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('Create Community')\n },\n _react2.default.createElement(\n 'form',\n { onSubmit: this._onFormSubmit },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateGroupDialog_inputRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateGroupDialog_label' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'groupname' },\n (0, _languageHandler._t)('Community Name')\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { id: 'groupname', className: 'mx_CreateGroupDialog_input',\n autoFocus: true, size: '64',\n placeholder: (0, _languageHandler._t)('Example'),\n onChange: this._onGroupNameChange,\n value: this.state.groupName\n })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateGroupDialog_inputRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateGroupDialog_label' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'groupid' },\n (0, _languageHandler._t)('Community ID')\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateGroupDialog_input_group' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_CreateGroupDialog_prefix' },\n '+'\n ),\n _react2.default.createElement('input', { id: 'groupid',\n className: 'mx_CreateGroupDialog_input mx_CreateGroupDialog_input_hasPrefixAndSuffix',\n size: '32',\n placeholder: (0, _languageHandler._t)('example'),\n onChange: this._onGroupIdChange,\n onBlur: this._onGroupIdBlur,\n value: this.state.groupId\n }),\n _react2.default.createElement(\n 'span',\n { className: 'mx_CreateGroupDialog_suffix' },\n ':',\n _MatrixClientPeg2.default.get().getDomain()\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.groupIdError\n ),\n createErrorNode\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement('input', { type: 'submit', value: (0, _languageHandler._t)('Create'), className: 'mx_Dialog_primary' }),\n _react2.default.createElement(\n 'button',\n { onClick: this._onCancel },\n (0, _languageHandler._t)(\"Cancel\")\n )\n )\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=CreateGroupDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'CreateRoomDialog',\n propTypes: {\n onFinished: _propTypes2.default.func.isRequired\n },\n\n componentWillMount: function componentWillMount() {\n var config = _SdkConfig2.default.get();\n // Dialog shows inverse of m.federate (noFederate) strict false check to skip undefined check (default = true)\n this.defaultNoFederate = config.default_federate === false;\n },\n\n onOk: function onOk() {\n this.props.onFinished(true, this.refs.textinput.value, this.refs.checkbox.checked);\n },\n\n onCancel: function onCancel() {\n this.props.onFinished(false);\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_CreateRoomDialog', onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('Create Room')\n },\n _react2.default.createElement(\n 'form',\n { onSubmit: this.onOk },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateRoomDialog_label' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'textinput' },\n ' ',\n (0, _languageHandler._t)('Room name (optional)'),\n ' '\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateRoomDialog_input_container' },\n _react2.default.createElement('input', { id: 'textinput', ref: 'textinput', className: 'mx_CreateRoomDialog_input', autoFocus: true })\n ),\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n 'details',\n { className: 'mx_CreateRoomDialog_details' },\n _react2.default.createElement(\n 'summary',\n { className: 'mx_CreateRoomDialog_details_summary' },\n (0, _languageHandler._t)('Advanced options')\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { type: 'checkbox', id: 'checkbox', ref: 'checkbox', defaultChecked: this.defaultNoFederate }),\n _react2.default.createElement(\n 'label',\n { htmlFor: 'checkbox' },\n (0, _languageHandler._t)('Block users on other matrix homeservers from joining this room'),\n _react2.default.createElement('br', null),\n '(',\n (0, _languageHandler._t)('This setting cannot be changed later!'),\n ')'\n )\n )\n )\n )\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: (0, _languageHandler._t)('Create Room'),\n onPrimaryButtonClick: this.onOk,\n onCancel: this.onCancel })\n );\n }\n}); /*\n Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=CreateRoomDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Analytics = require('../../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Lifecycle = require('../../../Lifecycle');\n\nvar Lifecycle = _interopRequireWildcard(_Lifecycle);\n\nvar _velocityVector = require('velocity-vector');\n\nvar _velocityVector2 = _interopRequireDefault(_velocityVector);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DeactivateAccountDialog = function (_React$Component) {\n (0, _inherits3.default)(DeactivateAccountDialog, _React$Component);\n\n function DeactivateAccountDialog(props, context) {\n (0, _classCallCheck3.default)(this, DeactivateAccountDialog);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DeactivateAccountDialog.__proto__ || (0, _getPrototypeOf2.default)(DeactivateAccountDialog)).call(this, props, context));\n\n _this._passwordField = null;\n\n _this._onOk = _this._onOk.bind(_this);\n _this._onCancel = _this._onCancel.bind(_this);\n _this._onPasswordFieldChange = _this._onPasswordFieldChange.bind(_this);\n _this._onEraseFieldChange = _this._onEraseFieldChange.bind(_this);\n\n var deactivationPreferences = _MatrixClientPeg2.default.get().getAccountData('im.riot.account_deactivation_preferences');\n\n var shouldErase = deactivationPreferences && deactivationPreferences.getContent() && deactivationPreferences.getContent().shouldErase || false;\n\n _this.state = {\n confirmButtonEnabled: false,\n busy: false,\n shouldErase: shouldErase,\n errStr: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(DeactivateAccountDialog, [{\n key: '_onPasswordFieldChange',\n value: function _onPasswordFieldChange(ev) {\n this.setState({\n confirmButtonEnabled: Boolean(ev.target.value)\n });\n }\n }, {\n key: '_onEraseFieldChange',\n value: function _onEraseFieldChange(ev) {\n this.setState({\n shouldErase: ev.target.checked\n });\n }\n }, {\n key: '_onOk',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var auth, errStr;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.setState({ busy: true });\n\n // Before we deactivate the account insert an event into\n // the user's account data indicating that they wish to be\n // erased from the homeserver.\n //\n // We do this because the API for erasing after deactivation\n // might not be supported by the connected homeserver. Leaving\n // an indication in account data is only best-effort, and\n // in the worse case, the HS maintainer would have to run a\n // script to erase deactivated accounts that have shouldErase\n // set to true in im.riot.account_deactivation_preferences.\n //\n // Note: The preferences are scoped to Riot, hence the\n // \"im.riot...\" event type.\n //\n // Note: This may have already been set on previous attempts\n // where, for example, the user entered the wrong password.\n // This is fine because the UI always indicates the preference\n // prior to us calling `deactivateAccount`.\n _context.prev = 1;\n _context.next = 4;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().setAccountData('im.riot.account_deactivation_preferences', {\n shouldErase: this.state.shouldErase\n }));\n\n case 4:\n _context.next = 10;\n break;\n\n case 6:\n _context.prev = 6;\n _context.t0 = _context['catch'](1);\n\n this.setState({\n busy: false,\n errStr: (0, _languageHandler._t)('Failed to indicate account erasure')\n });\n return _context.abrupt('return');\n\n case 10:\n _context.prev = 10;\n\n // This assumes that the HS requires password UI auth\n // for this endpoint. In reality it could be any UI auth.\n auth = {\n type: 'm.login.password',\n user: _MatrixClientPeg2.default.get().credentials.userId,\n password: this._passwordField.value\n };\n _context.next = 14;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().deactivateAccount(auth, this.state.shouldErase));\n\n case 14:\n _context.next = 22;\n break;\n\n case 16:\n _context.prev = 16;\n _context.t1 = _context['catch'](10);\n errStr = (0, _languageHandler._t)('Unknown error');\n // https://matrix.org/jira/browse/SYN-744\n\n if (_context.t1.httpStatus == 401 || _context.t1.httpStatus == 403) {\n errStr = (0, _languageHandler._t)('Incorrect password');\n (0, _velocityVector2.default)(this._passwordField, \"callout.shake\", 300);\n }\n this.setState({\n busy: false,\n errStr: errStr\n });\n return _context.abrupt('return');\n\n case 22:\n\n _Analytics2.default.trackEvent('Account', 'Deactivate Account');\n Lifecycle.onLoggedOut();\n this.props.onFinished(false);\n\n case 25:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[1, 6], [10, 16]]);\n }));\n\n function _onOk() {\n return _ref.apply(this, arguments);\n }\n\n return _onOk;\n }()\n }, {\n key: '_onCancel',\n value: function _onCancel() {\n this.props.onFinished(false);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n var passwordBoxClass = '';\n\n var error = null;\n if (this.state.errStr) {\n error = _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.errStr\n );\n passwordBoxClass = 'error';\n }\n\n var okLabel = this.state.busy ? _react2.default.createElement(Loader, null) : (0, _languageHandler._t)('Deactivate Account');\n var okEnabled = this.state.confirmButtonEnabled && !this.state.busy;\n\n var cancelButton = null;\n if (!this.state.busy) {\n cancelButton = _react2.default.createElement(\n 'button',\n { onClick: this._onCancel, autoFocus: true },\n (0, _languageHandler._t)(\"Cancel\")\n );\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_DeactivateAccountDialog',\n onFinished: this.props.onFinished,\n onEnterPressed: this.onOk,\n titleClass: 'danger',\n title: (0, _languageHandler._t)(\"Deactivate Account\")\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"This will make your account permanently unusable. \" + \"You will not be able to log in, and no one will be able to re-register the same \" + \"user ID. \" + \"This will cause your account to leave all rooms it is participating in, and it \" + \"will remove your account details from your identity server. \" + \"<b>This action is irreversible.</b>\", {}, { b: function b(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n ' ',\n sub,\n ' '\n );\n } })\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Deactivating your account <b>does not by default cause us to forget messages you \" + \"have sent.</b> \" + \"If you would like us to forget your messages, please tick the box below.\", {}, { b: function b(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n ' ',\n sub,\n ' '\n );\n } })\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Message visibility in Matrix is similar to email. \" + \"Our forgetting your messages means that messages you have sent will not be shared \" + \"with any new or unregistered users, but registered users who already have access \" + \"to these messages will still have access to their copy.\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DeactivateAccountDialog_input_section' },\n _react2.default.createElement(\n 'p',\n null,\n _react2.default.createElement(\n 'label',\n { htmlFor: 'mx_DeactivateAccountDialog_erase_account_input' },\n _react2.default.createElement('input', {\n id: 'mx_DeactivateAccountDialog_erase_account_input',\n type: 'checkbox',\n checked: this.state.shouldErase,\n onChange: this._onEraseFieldChange\n }),\n (0, _languageHandler._t)(\"Please forget all messages I have sent when my account is deactivated \" + \"(<b>Warning:</b> this will cause future users to see an incomplete view \" + \"of conversations)\", {}, { b: function b(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n sub\n );\n } })\n )\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"To continue, please enter your password:\")\n ),\n _react2.default.createElement('input', {\n type: 'password',\n placeholder: (0, _languageHandler._t)(\"password\"),\n onChange: this._onPasswordFieldChange,\n ref: function ref(e) {\n _this2._passwordField = e;\n },\n className: passwordBoxClass\n })\n ),\n error\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n {\n className: 'mx_Dialog_primary danger',\n onClick: this._onOk,\n disabled: !okEnabled\n },\n okLabel\n ),\n cancelButton\n )\n );\n }\n }]);\n return DeactivateAccountDialog;\n}(_react2.default.Component);\n\nexports.default = DeactivateAccountDialog;\n\n\nDeactivateAccountDialog.propTypes = {\n onFinished: _propTypes2.default.func.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=DeactivateAccountDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = DeviceVerifyDialog;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _FormattingUtils = require('../../../utils/FormattingUtils');\n\nvar FormattingUtils = _interopRequireWildcard(_FormattingUtils);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction DeviceVerifyDialog(props) {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n\n var key = FormattingUtils.formatCryptoKey(props.device.getFingerprint());\n var body = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"To verify that this device can be trusted, please contact its \" + \"owner using some other means (e.g. in person or a phone call) \" + \"and ask them whether the key they see in their User Settings \" + \"for this device matches the key below:\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_cryptoSection' },\n _react2.default.createElement(\n 'ul',\n null,\n _react2.default.createElement(\n 'li',\n null,\n _react2.default.createElement(\n 'label',\n null,\n (0, _languageHandler._t)(\"Device name\"),\n ':'\n ),\n ' ',\n _react2.default.createElement(\n 'span',\n null,\n props.device.getDisplayName()\n )\n ),\n _react2.default.createElement(\n 'li',\n null,\n _react2.default.createElement(\n 'label',\n null,\n (0, _languageHandler._t)(\"Device ID\"),\n ':'\n ),\n ' ',\n _react2.default.createElement(\n 'span',\n null,\n _react2.default.createElement(\n 'code',\n null,\n props.device.deviceId\n )\n )\n ),\n _react2.default.createElement(\n 'li',\n null,\n _react2.default.createElement(\n 'label',\n null,\n (0, _languageHandler._t)(\"Device key\"),\n ':'\n ),\n ' ',\n _react2.default.createElement(\n 'span',\n null,\n _react2.default.createElement(\n 'code',\n null,\n _react2.default.createElement(\n 'b',\n null,\n key\n )\n )\n )\n )\n )\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"If it matches, press the verify button below. \" + \"If it doesn't, then someone else is intercepting this device \" + \"and you probably want to press the blacklist button instead.\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"In future this verification process will be more sophisticated.\")\n )\n );\n\n function onFinished(confirm) {\n if (confirm) {\n _MatrixClientPeg2.default.get().setDeviceVerified(props.userId, props.device.deviceId, true);\n }\n props.onFinished(confirm);\n }\n\n return _react2.default.createElement(QuestionDialog, {\n title: (0, _languageHandler._t)(\"Verify device\"),\n description: body,\n button: (0, _languageHandler._t)(\"I verify that the keys match\"),\n onFinished: onFinished\n });\n}\n\nDeviceVerifyDialog.propTypes = {\n userId: _propTypes2.default.string.isRequired,\n device: _propTypes2.default.object.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=DeviceVerifyDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SyntaxHighlight = require('../elements/SyntaxHighlight');\n\nvar _SyntaxHighlight2 = _interopRequireDefault(_SyntaxHighlight);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DevtoolsComponent = function (_React$Component) {\n (0, _inherits3.default)(DevtoolsComponent, _React$Component);\n\n function DevtoolsComponent() {\n (0, _classCallCheck3.default)(this, DevtoolsComponent);\n return (0, _possibleConstructorReturn3.default)(this, (DevtoolsComponent.__proto__ || (0, _getPrototypeOf2.default)(DevtoolsComponent)).apply(this, arguments));\n }\n\n return DevtoolsComponent;\n}(_react2.default.Component);\n\nDevtoolsComponent.contextTypes = {\n roomId: _propTypes2.default.string.isRequired\n};\n\nvar GenericEditor = function (_DevtoolsComponent) {\n (0, _inherits3.default)(GenericEditor, _DevtoolsComponent);\n\n // static propTypes = {onBack: PropTypes.func.isRequired};\n\n function GenericEditor(props, context) {\n (0, _classCallCheck3.default)(this, GenericEditor);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (GenericEditor.__proto__ || (0, _getPrototypeOf2.default)(GenericEditor)).call(this, props, context));\n\n _this2._onChange = _this2._onChange.bind(_this2);\n _this2.onBack = _this2.onBack.bind(_this2);\n return _this2;\n }\n\n (0, _createClass3.default)(GenericEditor, [{\n key: 'onBack',\n value: function onBack() {\n if (this.state.message) {\n this.setState({ message: null });\n } else {\n this.props.onBack();\n }\n }\n }, {\n key: '_onChange',\n value: function _onChange(e) {\n this.setState((0, _defineProperty3.default)({}, e.target.id, e.target.type === 'checkbox' ? e.target.checked : e.target.value));\n }\n }, {\n key: '_buttons',\n value: function _buttons() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n ),\n !this.state.message && _react2.default.createElement(\n 'button',\n { onClick: this._send },\n (0, _languageHandler._t)('Send')\n )\n );\n }\n }, {\n key: 'textInput',\n value: function textInput(id, label) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_inputRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_inputLabelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: id },\n label\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_inputCell' },\n _react2.default.createElement('input', { id: id, className: 'mx_TextInputDialog_input', onChange: this._onChange, value: this.state[id], size: '32', autoFocus: true })\n )\n );\n }\n }]);\n return GenericEditor;\n}(DevtoolsComponent);\n\nvar SendCustomEvent = function (_GenericEditor) {\n (0, _inherits3.default)(SendCustomEvent, _GenericEditor);\n (0, _createClass3.default)(SendCustomEvent, null, [{\n key: 'getLabel',\n value: function getLabel() {\n return (0, _languageHandler._t)('Send Custom Event');\n }\n }]);\n\n function SendCustomEvent(props, context) {\n (0, _classCallCheck3.default)(this, SendCustomEvent);\n\n var _this3 = (0, _possibleConstructorReturn3.default)(this, (SendCustomEvent.__proto__ || (0, _getPrototypeOf2.default)(SendCustomEvent)).call(this, props, context));\n\n _this3._send = _this3._send.bind(_this3);\n\n var _Object$assign = (0, _assign2.default)({\n eventType: '',\n stateKey: '',\n evContent: '{\\n\\n}'\n }, _this3.props.inputs),\n eventType = _Object$assign.eventType,\n stateKey = _Object$assign.stateKey,\n evContent = _Object$assign.evContent;\n\n _this3.state = {\n isStateEvent: Boolean(_this3.props.forceStateEvent),\n\n eventType: eventType,\n stateKey: stateKey,\n evContent: evContent\n };\n return _this3;\n }\n\n (0, _createClass3.default)(SendCustomEvent, [{\n key: 'send',\n value: function send(content) {\n var cli = _MatrixClientPeg2.default.get();\n if (this.state.isStateEvent) {\n return cli.sendStateEvent(this.context.roomId, this.state.eventType, content, this.state.stateKey);\n } else {\n return cli.sendEvent(this.context.roomId, this.state.eventType, content);\n }\n }\n }, {\n key: '_send',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var message, content;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(this.state.eventType === '')) {\n _context.next = 3;\n break;\n }\n\n this.setState({ message: (0, _languageHandler._t)('You must specify an event type!') });\n return _context.abrupt('return');\n\n case 3:\n message = void 0;\n _context.prev = 4;\n content = JSON.parse(this.state.evContent);\n _context.next = 8;\n return (0, _bluebird.resolve)(this.send(content));\n\n case 8:\n message = (0, _languageHandler._t)('Event sent!');\n _context.next = 14;\n break;\n\n case 11:\n _context.prev = 11;\n _context.t0 = _context['catch'](4);\n\n message = (0, _languageHandler._t)('Failed to send custom event.') + ' (' + _context.t0.toString() + ')';\n\n case 14:\n this.setState({ message: message });\n\n case 15:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 11]]);\n }));\n\n function _send() {\n return _ref.apply(this, arguments);\n }\n\n return _send;\n }()\n }, {\n key: 'render',\n value: function render() {\n if (this.state.message) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n this.state.message\n ),\n this._buttons()\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_content' },\n this.textInput('eventType', (0, _languageHandler._t)('Event Type')),\n this.state.isStateEvent && this.textInput('stateKey', (0, _languageHandler._t)('State Key')),\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_inputLabelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'evContent' },\n ' ',\n (0, _languageHandler._t)('Event Content'),\n ' '\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('textarea', { id: 'evContent', onChange: this._onChange, value: this.state.evContent, className: 'mx_DevTools_textarea' })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n ),\n !this.state.message && _react2.default.createElement(\n 'button',\n { onClick: this._send },\n (0, _languageHandler._t)('Send')\n ),\n !this.state.message && !this.props.forceStateEvent && _react2.default.createElement(\n 'div',\n { style: { float: \"right\" } },\n _react2.default.createElement('input', { id: 'isStateEvent', className: 'mx_DevTools_tgl mx_DevTools_tgl-flip', type: 'checkbox', onChange: this._onChange, checked: this.state.isStateEvent }),\n _react2.default.createElement('label', { className: 'mx_DevTools_tgl-btn', 'data-tg-off': 'Event', 'data-tg-on': 'State Event', htmlFor: 'isStateEvent' })\n )\n )\n );\n }\n }]);\n return SendCustomEvent;\n}(GenericEditor);\n\nSendCustomEvent.propTypes = {\n onBack: _propTypes2.default.func.isRequired,\n forceStateEvent: _propTypes2.default.bool,\n inputs: _propTypes2.default.object\n};\n\nvar SendAccountData = function (_GenericEditor2) {\n (0, _inherits3.default)(SendAccountData, _GenericEditor2);\n (0, _createClass3.default)(SendAccountData, null, [{\n key: 'getLabel',\n value: function getLabel() {\n return (0, _languageHandler._t)('Send Account Data');\n }\n }]);\n\n function SendAccountData(props, context) {\n (0, _classCallCheck3.default)(this, SendAccountData);\n\n var _this4 = (0, _possibleConstructorReturn3.default)(this, (SendAccountData.__proto__ || (0, _getPrototypeOf2.default)(SendAccountData)).call(this, props, context));\n\n _this4._send = _this4._send.bind(_this4);\n\n var _Object$assign3 = (0, _assign2.default)({\n eventType: '',\n evContent: '{\\n\\n}'\n }, _this4.props.inputs),\n eventType = _Object$assign3.eventType,\n evContent = _Object$assign3.evContent;\n\n _this4.state = {\n isRoomAccountData: Boolean(_this4.props.isRoomAccountData),\n\n eventType: eventType,\n evContent: evContent\n };\n return _this4;\n }\n\n (0, _createClass3.default)(SendAccountData, [{\n key: 'send',\n value: function send(content) {\n var cli = _MatrixClientPeg2.default.get();\n if (this.state.isRoomAccountData) {\n return cli.setRoomAccountData(this.context.roomId, this.state.eventType, content);\n }\n return cli.setAccountData(this.state.eventType, content);\n }\n }, {\n key: '_send',\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var message, content;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(this.state.eventType === '')) {\n _context2.next = 3;\n break;\n }\n\n this.setState({ message: (0, _languageHandler._t)('You must specify an event type!') });\n return _context2.abrupt('return');\n\n case 3:\n message = void 0;\n _context2.prev = 4;\n content = JSON.parse(this.state.evContent);\n _context2.next = 8;\n return (0, _bluebird.resolve)(this.send(content));\n\n case 8:\n message = (0, _languageHandler._t)('Event sent!');\n _context2.next = 14;\n break;\n\n case 11:\n _context2.prev = 11;\n _context2.t0 = _context2['catch'](4);\n\n message = (0, _languageHandler._t)('Failed to send custom event.') + ' (' + _context2.t0.toString() + ')';\n\n case 14:\n this.setState({ message: message });\n\n case 15:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[4, 11]]);\n }));\n\n function _send() {\n return _ref2.apply(this, arguments);\n }\n\n return _send;\n }()\n }, {\n key: 'render',\n value: function render() {\n if (this.state.message) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n this.state.message\n ),\n this._buttons()\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_content' },\n this.textInput('eventType', (0, _languageHandler._t)('Event Type')),\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_inputLabelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'evContent' },\n ' ',\n (0, _languageHandler._t)('Event Content'),\n ' '\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('textarea', { id: 'evContent', onChange: this._onChange, value: this.state.evContent, className: 'mx_DevTools_textarea' })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n ),\n !this.state.message && _react2.default.createElement(\n 'button',\n { onClick: this._send },\n (0, _languageHandler._t)('Send')\n ),\n !this.state.message && _react2.default.createElement(\n 'div',\n { style: { float: \"right\" } },\n _react2.default.createElement('input', { id: 'isRoomAccountData', className: 'mx_DevTools_tgl mx_DevTools_tgl-flip', type: 'checkbox', onChange: this._onChange, checked: this.state.isRoomAccountData, disabled: this.props.forceMode }),\n _react2.default.createElement('label', { className: 'mx_DevTools_tgl-btn', 'data-tg-off': 'Account Data', 'data-tg-on': 'Room Data', htmlFor: 'isRoomAccountData' })\n )\n )\n );\n }\n }]);\n return SendAccountData;\n}(GenericEditor);\n\nSendAccountData.propTypes = {\n isRoomAccountData: _propTypes2.default.bool,\n forceMode: _propTypes2.default.bool,\n inputs: _propTypes2.default.object\n};\n\n\nvar INITIAL_LOAD_TILES = 20;\nvar LOAD_TILES_STEP_SIZE = 50;\n\nvar FilteredList = function (_React$Component2) {\n (0, _inherits3.default)(FilteredList, _React$Component2);\n (0, _createClass3.default)(FilteredList, null, [{\n key: 'filterChildren',\n value: function filterChildren(children, query) {\n if (!query) return children;\n var lcQuery = query.toLowerCase();\n return children.filter(function (child) {\n return child.key.toLowerCase().includes(lcQuery);\n });\n }\n }]);\n\n function FilteredList(props, context) {\n (0, _classCallCheck3.default)(this, FilteredList);\n\n var _this5 = (0, _possibleConstructorReturn3.default)(this, (FilteredList.__proto__ || (0, _getPrototypeOf2.default)(FilteredList)).call(this, props, context));\n\n _this5.showAll = function () {\n _this5.setState({\n truncateAt: _this5.state.truncateAt + LOAD_TILES_STEP_SIZE\n });\n };\n\n _this5.createOverflowElement = function (overflowCount, totalCount) {\n return _react2.default.createElement(\n 'button',\n { className: 'mx_DevTools_RoomStateExplorer_button', onClick: _this5.showAll },\n (0, _languageHandler._t)(\"and %(count)s others...\", { count: overflowCount })\n );\n };\n\n _this5.onQuery = function (ev) {\n if (_this5.props.onChange) _this5.props.onChange(ev.target.value);\n };\n\n _this5.getChildren = function (start, end) {\n return _this5.state.filteredChildren.slice(start, end);\n };\n\n _this5.getChildCount = function () {\n return _this5.state.filteredChildren.length;\n };\n\n _this5.state = {\n filteredChildren: FilteredList.filterChildren(_this5.props.children, _this5.props.query),\n truncateAt: INITIAL_LOAD_TILES\n };\n return _this5;\n }\n\n (0, _createClass3.default)(FilteredList, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (this.props.children === nextProps.children && this.props.query === nextProps.query) return;\n this.setState({\n filteredChildren: FilteredList.filterChildren(nextProps.children, nextProps.query),\n truncateAt: INITIAL_LOAD_TILES\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var TruncatedList = _index2.default.getComponent(\"elements.TruncatedList\");\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { size: '64',\n autoFocus: true,\n onChange: this.onQuery,\n value: this.props.query,\n placeholder: (0, _languageHandler._t)('Filter results'),\n className: 'mx_TextInputDialog_input mx_DevTools_RoomStateExplorer_query'\n // force re-render so that autoFocus is applied when this component is re-used\n , key: this.props.children[0] ? this.props.children[0].key : '' }),\n _react2.default.createElement(TruncatedList, { getChildren: this.getChildren,\n getChildCount: this.getChildCount,\n truncateAt: this.state.truncateAt,\n createOverflowElement: this.createOverflowElement })\n );\n }\n }]);\n return FilteredList;\n}(_react2.default.Component);\n\nFilteredList.propTypes = {\n children: _propTypes2.default.any,\n query: _propTypes2.default.string,\n onChange: _propTypes2.default.func\n};\n\nvar RoomStateExplorer = function (_DevtoolsComponent2) {\n (0, _inherits3.default)(RoomStateExplorer, _DevtoolsComponent2);\n (0, _createClass3.default)(RoomStateExplorer, null, [{\n key: 'getLabel',\n value: function getLabel() {\n return (0, _languageHandler._t)('Explore Room State');\n }\n }]);\n\n function RoomStateExplorer(props, context) {\n (0, _classCallCheck3.default)(this, RoomStateExplorer);\n\n var _this6 = (0, _possibleConstructorReturn3.default)(this, (RoomStateExplorer.__proto__ || (0, _getPrototypeOf2.default)(RoomStateExplorer)).call(this, props, context));\n\n var room = _MatrixClientPeg2.default.get().getRoom(_this6.context.roomId);\n _this6.roomStateEvents = room.currentState.events;\n\n _this6.onBack = _this6.onBack.bind(_this6);\n _this6.editEv = _this6.editEv.bind(_this6);\n _this6.onQueryEventType = _this6.onQueryEventType.bind(_this6);\n _this6.onQueryStateKey = _this6.onQueryStateKey.bind(_this6);\n\n _this6.state = {\n eventType: null,\n event: null,\n editing: false,\n\n queryEventType: '',\n queryStateKey: ''\n };\n return _this6;\n }\n\n (0, _createClass3.default)(RoomStateExplorer, [{\n key: 'browseEventType',\n value: function browseEventType(eventType) {\n var _this7 = this;\n\n return function () {\n _this7.setState({ eventType: eventType });\n };\n }\n }, {\n key: 'onViewSourceClick',\n value: function onViewSourceClick(event) {\n var _this8 = this;\n\n return function () {\n _this8.setState({ event: event });\n };\n }\n }, {\n key: 'onBack',\n value: function onBack() {\n if (this.state.editing) {\n this.setState({ editing: false });\n } else if (this.state.event) {\n this.setState({ event: null });\n } else if (this.state.eventType) {\n this.setState({ eventType: null });\n } else {\n this.props.onBack();\n }\n }\n }, {\n key: 'editEv',\n value: function editEv() {\n this.setState({ editing: true });\n }\n }, {\n key: 'onQueryEventType',\n value: function onQueryEventType(filterEventType) {\n this.setState({ queryEventType: filterEventType });\n }\n }, {\n key: 'onQueryStateKey',\n value: function onQueryStateKey(filterStateKey) {\n this.setState({ queryStateKey: filterStateKey });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this9 = this;\n\n if (this.state.event) {\n if (this.state.editing) {\n return _react2.default.createElement(SendCustomEvent, { forceStateEvent: true, onBack: this.onBack, inputs: {\n eventType: this.state.event.getType(),\n evContent: (0, _stringify2.default)(this.state.event.getContent(), null, '\\t'),\n stateKey: this.state.event.getStateKey()\n } });\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ViewSource' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n _SyntaxHighlight2.default,\n { className: 'json' },\n (0, _stringify2.default)(this.state.event.event, null, 2)\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n ),\n _react2.default.createElement(\n 'button',\n { onClick: this.editEv },\n (0, _languageHandler._t)('Edit')\n )\n )\n );\n }\n\n var list = null;\n\n var classes = 'mx_DevTools_RoomStateExplorer_button';\n if (this.state.eventType === null) {\n list = _react2.default.createElement(\n FilteredList,\n { query: this.state.queryEventType, onChange: this.onQueryEventType },\n (0, _keys2.default)(this.roomStateEvents).map(function (evType) {\n var stateGroup = _this9.roomStateEvents[evType];\n var stateKeys = (0, _keys2.default)(stateGroup);\n\n var onClickFn = void 0;\n if (stateKeys.length === 1 && stateKeys[0] === '') {\n onClickFn = _this9.onViewSourceClick(stateGroup[stateKeys[0]]);\n } else {\n onClickFn = _this9.browseEventType(evType);\n }\n\n return _react2.default.createElement(\n 'button',\n { className: classes, key: evType, onClick: onClickFn },\n evType\n );\n })\n );\n } else {\n var stateGroup = this.roomStateEvents[this.state.eventType];\n\n list = _react2.default.createElement(\n FilteredList,\n { query: this.state.queryStateKey, onChange: this.onQueryStateKey },\n (0, _keys2.default)(stateGroup).map(function (stateKey) {\n var ev = stateGroup[stateKey];\n return _react2.default.createElement(\n 'button',\n { className: classes, key: stateKey, onClick: _this9.onViewSourceClick(ev) },\n stateKey\n );\n })\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n list\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n )\n )\n );\n }\n }]);\n return RoomStateExplorer;\n}(DevtoolsComponent);\n\nRoomStateExplorer.propTypes = {\n onBack: _propTypes2.default.func.isRequired\n};\n\nvar AccountDataExplorer = function (_DevtoolsComponent3) {\n (0, _inherits3.default)(AccountDataExplorer, _DevtoolsComponent3);\n (0, _createClass3.default)(AccountDataExplorer, null, [{\n key: 'getLabel',\n value: function getLabel() {\n return (0, _languageHandler._t)('Explore Account Data');\n }\n }]);\n\n function AccountDataExplorer(props, context) {\n (0, _classCallCheck3.default)(this, AccountDataExplorer);\n\n var _this10 = (0, _possibleConstructorReturn3.default)(this, (AccountDataExplorer.__proto__ || (0, _getPrototypeOf2.default)(AccountDataExplorer)).call(this, props, context));\n\n _this10.onBack = _this10.onBack.bind(_this10);\n _this10.editEv = _this10.editEv.bind(_this10);\n _this10._onChange = _this10._onChange.bind(_this10);\n _this10.onQueryEventType = _this10.onQueryEventType.bind(_this10);\n\n _this10.state = {\n isRoomAccountData: false,\n event: null,\n editing: false,\n\n queryEventType: ''\n };\n return _this10;\n }\n\n (0, _createClass3.default)(AccountDataExplorer, [{\n key: 'getData',\n value: function getData() {\n var cli = _MatrixClientPeg2.default.get();\n if (this.state.isRoomAccountData) {\n return cli.getRoom(this.context.roomId).accountData;\n }\n return cli.store.accountData;\n }\n }, {\n key: 'onViewSourceClick',\n value: function onViewSourceClick(event) {\n var _this11 = this;\n\n return function () {\n _this11.setState({ event: event });\n };\n }\n }, {\n key: 'onBack',\n value: function onBack() {\n if (this.state.editing) {\n this.setState({ editing: false });\n } else if (this.state.event) {\n this.setState({ event: null });\n } else {\n this.props.onBack();\n }\n }\n }, {\n key: '_onChange',\n value: function _onChange(e) {\n this.setState((0, _defineProperty3.default)({}, e.target.id, e.target.type === 'checkbox' ? e.target.checked : e.target.value));\n }\n }, {\n key: 'editEv',\n value: function editEv() {\n this.setState({ editing: true });\n }\n }, {\n key: 'onQueryEventType',\n value: function onQueryEventType(queryEventType) {\n this.setState({ queryEventType: queryEventType });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this12 = this;\n\n if (this.state.event) {\n if (this.state.editing) {\n return _react2.default.createElement(SendAccountData, { isRoomAccountData: this.state.isRoomAccountData, onBack: this.onBack, inputs: {\n eventType: this.state.event.getType(),\n evContent: (0, _stringify2.default)(this.state.event.getContent(), null, '\\t')\n }, forceMode: true });\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ViewSource' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_content' },\n _react2.default.createElement(\n _SyntaxHighlight2.default,\n { className: 'json' },\n (0, _stringify2.default)(this.state.event.event, null, 2)\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n ),\n _react2.default.createElement(\n 'button',\n { onClick: this.editEv },\n (0, _languageHandler._t)('Edit')\n )\n )\n );\n }\n\n var rows = [];\n\n var classes = 'mx_DevTools_RoomStateExplorer_button';\n\n var data = this.getData();\n (0, _keys2.default)(data).forEach(function (evType) {\n var ev = data[evType];\n rows.push(_react2.default.createElement(\n 'button',\n { className: classes, key: evType, onClick: _this12.onViewSourceClick(ev) },\n evType\n ));\n });\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n FilteredList,\n { query: this.state.queryEventType, onChange: this.onQueryEventType },\n rows\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n ),\n !this.state.message && _react2.default.createElement(\n 'div',\n { style: { float: \"right\" } },\n _react2.default.createElement('input', { id: 'isRoomAccountData', className: 'mx_DevTools_tgl mx_DevTools_tgl-flip', type: 'checkbox', onChange: this._onChange, checked: this.state.isRoomAccountData }),\n _react2.default.createElement('label', { className: 'mx_DevTools_tgl-btn', 'data-tg-off': 'Account Data', 'data-tg-on': 'Room Data', htmlFor: 'isRoomAccountData' })\n )\n )\n );\n }\n }]);\n return AccountDataExplorer;\n}(DevtoolsComponent);\n\nAccountDataExplorer.propTypes = {\n onBack: _propTypes2.default.func.isRequired\n};\n\n\nvar Entries = [SendCustomEvent, RoomStateExplorer, SendAccountData, AccountDataExplorer];\n\nvar DevtoolsDialog = function (_React$Component3) {\n (0, _inherits3.default)(DevtoolsDialog, _React$Component3);\n\n function DevtoolsDialog(props, context) {\n (0, _classCallCheck3.default)(this, DevtoolsDialog);\n\n var _this13 = (0, _possibleConstructorReturn3.default)(this, (DevtoolsDialog.__proto__ || (0, _getPrototypeOf2.default)(DevtoolsDialog)).call(this, props, context));\n\n _this13.onBack = _this13.onBack.bind(_this13);\n _this13.onCancel = _this13.onCancel.bind(_this13);\n\n _this13.state = {\n mode: null\n };\n return _this13;\n }\n\n (0, _createClass3.default)(DevtoolsDialog, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: 'getChildContext',\n value: function getChildContext() {\n return { roomId: this.props.roomId };\n }\n }, {\n key: '_setMode',\n value: function _setMode(mode) {\n var _this14 = this;\n\n return function () {\n _this14.setState({ mode: mode });\n };\n }\n }, {\n key: 'onBack',\n value: function onBack() {\n if (this.prevMode) {\n this.setState({ mode: this.prevMode });\n this.prevMode = null;\n } else {\n this.setState({ mode: null });\n }\n }\n }, {\n key: 'onCancel',\n value: function onCancel() {\n this.props.onFinished(false);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this15 = this;\n\n var body = void 0;\n\n if (this.state.mode) {\n body = _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_dialog' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_label_left' },\n this.state.mode.getLabel()\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_label_right' },\n 'Room ID: ',\n this.props.roomId\n ),\n _react2.default.createElement('div', { className: 'mx_DevTools_label_bottom' }),\n _react2.default.createElement(this.state.mode, { onBack: this.onBack })\n );\n } else {\n var classes = \"mx_DevTools_RoomStateExplorer_button\";\n body = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_dialog' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_label_left' },\n (0, _languageHandler._t)('Toolbox')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_label_right' },\n 'Room ID: ',\n this.props.roomId\n ),\n _react2.default.createElement('div', { className: 'mx_DevTools_label_bottom' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n Entries.map(function (Entry) {\n var label = Entry.getLabel();\n var onClick = _this15._setMode(Entry);\n return _react2.default.createElement(\n 'button',\n { className: classes, key: label, onClick: onClick },\n label\n );\n })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onCancel },\n (0, _languageHandler._t)('Cancel')\n )\n )\n );\n }\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_QuestionDialog', onFinished: this.props.onFinished, title: (0, _languageHandler._t)('Developer Tools') },\n body\n );\n }\n }]);\n return DevtoolsDialog;\n}(_react2.default.Component);\n\nDevtoolsDialog.childContextTypes = {\n roomId: _propTypes2.default.string.isRequired\n // client: PropTypes.instanceOf(MatixClient),\n};\nDevtoolsDialog.propTypes = {\n roomId: _propTypes2.default.string.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n};\nexports.default = DevtoolsDialog;\nmodule.exports = exports['default'];\n//# sourceMappingURL=DevtoolsDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/*\n * Usage:\n * Modal.createTrackedDialog('An Identifier', 'some detail', ErrorDialog, {\n * title: \"some text\", (default: \"Error\")\n * description: \"some more text\",\n * button: \"Button Text\",\n * onFinished: someFunction,\n * focus: true|false (default: true)\n * });\n */\n\nexports.default = _react2.default.createClass({\n displayName: 'ErrorDialog',\n propTypes: {\n title: _propTypes2.default.string,\n description: _propTypes2.default.oneOfType([_propTypes2.default.element, _propTypes2.default.string]),\n button: _propTypes2.default.string,\n focus: _propTypes2.default.bool,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n focus: true,\n title: null,\n description: null,\n button: null\n };\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_ErrorDialog', onFinished: this.props.onFinished,\n title: this.props.title || (0, _languageHandler._t)('Error'),\n contentId: 'mx_Dialog_content'\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n this.props.description || (0, _languageHandler._t)('An error has occurred.')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { className: 'mx_Dialog_primary', onClick: this.props.onFinished, autoFocus: this.props.focus },\n this.props.button || (0, _languageHandler._t)('OK')\n )\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=ErrorDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'InteractiveAuthDialog',\n\n propTypes: {\n // matrix client to use for UI auth requests\n matrixClient: _propTypes2.default.object.isRequired,\n\n // response from initial request. If not supplied, will do a request on\n // mount.\n authData: _propTypes2.default.shape({\n flows: _propTypes2.default.array,\n params: _propTypes2.default.object,\n session: _propTypes2.default.string\n }),\n\n // callback\n makeRequest: _propTypes2.default.func.isRequired,\n\n onFinished: _propTypes2.default.func.isRequired,\n\n title: _propTypes2.default.string\n },\n\n getInitialState: function getInitialState() {\n return {\n authError: null\n };\n },\n\n _onAuthFinished: function _onAuthFinished(success, result) {\n if (success) {\n this.props.onFinished(true, result);\n } else {\n this.setState({\n authError: result\n });\n }\n },\n\n _onDismissClick: function _onDismissClick() {\n this.props.onFinished(false);\n },\n\n render: function render() {\n var InteractiveAuth = _index2.default.getComponent(\"structures.InteractiveAuth\");\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n\n var content = void 0;\n if (this.state.authError) {\n content = _react2.default.createElement(\n 'div',\n { id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { role: 'alert' },\n this.state.authError.message || this.state.authError.toString()\n ),\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._onDismissClick,\n className: 'mx_UserSettings_button',\n autoFocus: 'true'\n },\n (0, _languageHandler._t)(\"Dismiss\")\n )\n );\n } else {\n content = _react2.default.createElement(\n 'div',\n { id: 'mx_Dialog_content' },\n _react2.default.createElement(InteractiveAuth, { ref: this._collectInteractiveAuth,\n matrixClient: this.props.matrixClient,\n authData: this.props.authData,\n makeRequest: this.props.makeRequest,\n onAuthFinished: this._onAuthFinished\n })\n );\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_InteractiveAuthDialog',\n onFinished: this.props.onFinished,\n title: this.state.authError ? 'Error' : this.props.title || (0, _languageHandler._t)('Authentication'),\n contentId: 'mx_Dialog_content'\n },\n content\n );\n }\n}); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=InteractiveAuthDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Dialog which asks the user whether they want to share their keys with\n * an unverified device.\n *\n * onFinished is called with `true` if the key should be shared, `false` if it\n * should not, and `undefined` if the dialog is cancelled. (In other words:\n * truthy: do the key share. falsy: don't share the keys).\n */\nexports.default = _react2.default.createClass({\n displayName: 'KeyShareDialog',\n\n propTypes: {\n matrixClient: _propTypes2.default.object.isRequired,\n userId: _propTypes2.default.string.isRequired,\n deviceId: _propTypes2.default.string.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n deviceInfo: null,\n wasNewDevice: false\n };\n },\n\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n this._unmounted = false;\n var userId = this.props.userId;\n var deviceId = this.props.deviceId;\n\n // give the client a chance to refresh the device list\n this.props.matrixClient.downloadKeys([userId], false).then(function (r) {\n if (_this._unmounted) {\n return;\n }\n\n var deviceInfo = r[userId][deviceId];\n\n if (!deviceInfo) {\n console.warn('No details found for device ' + userId + ':' + deviceId);\n\n _this.props.onFinished(false);\n return;\n }\n\n var wasNewDevice = !deviceInfo.isKnown();\n\n _this.setState({\n deviceInfo: deviceInfo,\n wasNewDevice: wasNewDevice\n });\n\n // if the device was new before, it's not any more.\n if (wasNewDevice) {\n _this.props.matrixClient.setDeviceKnown(userId, deviceId, true);\n }\n }).done();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n _onVerifyClicked: function _onVerifyClicked() {\n var _this2 = this;\n\n var DeviceVerifyDialog = _index2.default.getComponent('views.dialogs.DeviceVerifyDialog');\n\n console.log(\"KeyShareDialog: Starting verify dialog\");\n _Modal2.default.createTrackedDialog('Key Share', 'Starting dialog', DeviceVerifyDialog, {\n userId: this.props.userId,\n device: this.state.deviceInfo,\n onFinished: function onFinished(verified) {\n if (verified) {\n // can automatically share the keys now.\n _this2.props.onFinished(true);\n }\n }\n });\n },\n\n _onShareClicked: function _onShareClicked() {\n console.log(\"KeyShareDialog: User clicked 'share'\");\n this.props.onFinished(true);\n },\n\n _onIgnoreClicked: function _onIgnoreClicked() {\n console.log(\"KeyShareDialog: User clicked 'ignore'\");\n this.props.onFinished(false);\n },\n\n _renderContent: function _renderContent() {\n var displayName = this.state.deviceInfo.getDisplayName() || this.state.deviceInfo.deviceId;\n\n var text = void 0;\n if (this.state.wasNewDevice) {\n text = (0, _languageHandler._td)(\"You added a new device '%(displayName)s', which is\" + \" requesting encryption keys.\");\n } else {\n text = (0, _languageHandler._td)(\"Your unverified device '%(displayName)s' is requesting\" + \" encryption keys.\");\n }\n text = (0, _languageHandler._t)(text, { displayName: displayName });\n\n return _react2.default.createElement(\n 'div',\n { id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n text\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this._onVerifyClicked, autoFocus: 'true' },\n (0, _languageHandler._t)('Start verification')\n ),\n _react2.default.createElement(\n 'button',\n { onClick: this._onShareClicked },\n (0, _languageHandler._t)('Share without verifying')\n ),\n _react2.default.createElement(\n 'button',\n { onClick: this._onIgnoreClicked },\n (0, _languageHandler._t)('Ignore request')\n )\n )\n );\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var Spinner = _index2.default.getComponent('views.elements.Spinner');\n\n var content = void 0;\n\n if (this.state.deviceInfo) {\n content = this._renderContent();\n } else {\n content = _react2.default.createElement(\n 'div',\n { id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Loading device info...')\n ),\n _react2.default.createElement(Spinner, null)\n );\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_KeyShareRequestDialog',\n onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('Encryption key request'),\n contentId: 'mx_Dialog_content'\n },\n content\n );\n }\n}); /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=KeyShareDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _QuestionDialog = require('./QuestionDialog');\n\nvar _QuestionDialog2 = _interopRequireDefault(_QuestionDialog);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (props) {\n var description1 = (0, _languageHandler._t)(\"You've previously used Riot on %(host)s with lazy loading of members enabled. \" + \"In this version lazy loading is disabled. \" + \"As the local cache is not compatible between these two settings, \" + \"Riot needs to resync your account.\", { host: props.host });\n var description2 = (0, _languageHandler._t)(\"If the other version of Riot is still open in another tab, \" + \"please close it as using Riot on the same host with both \" + \"lazy loading enabled and disabled simultaneously will cause issues.\");\n\n return _react2.default.createElement(_QuestionDialog2.default, {\n hasCancelButton: false,\n title: (0, _languageHandler._t)(\"Incompatible local cache\"),\n description: _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n description1\n ),\n _react2.default.createElement(\n 'p',\n null,\n description2\n )\n ),\n button: (0, _languageHandler._t)(\"Clear cache and resync\"),\n onFinished: props.onFinished\n });\n}; /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=LazyLoadingDisabledDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _QuestionDialog = require('./QuestionDialog');\n\nvar _QuestionDialog2 = _interopRequireDefault(_QuestionDialog);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (props) {\n var description = (0, _languageHandler._t)(\"Riot now uses 3-5x less memory, by only loading information about other users\" + \" when needed. Please wait whilst we resynchronise with the server!\");\n\n return _react2.default.createElement(_QuestionDialog2.default, {\n hasCancelButton: false,\n title: (0, _languageHandler._t)(\"Updating Riot\"),\n description: _react2.default.createElement(\n 'div',\n null,\n description\n ),\n button: (0, _languageHandler._t)(\"OK\"),\n onFinished: props.onFinished\n });\n}; /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=LazyLoadingResyncDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'RoomUpgradeDialog',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n componentWillMount: function componentWillMount() {\n this._targetVersion = this.props.room.shouldUpgradeToVersion();\n },\n\n getInitialState: function getInitialState() {\n return {\n busy: false\n };\n },\n\n _onCancelClick: function _onCancelClick() {\n this.props.onFinished(false);\n },\n\n _onUpgradeClick: function _onUpgradeClick() {\n var _this = this;\n\n this.setState({ busy: true });\n _MatrixClientPeg2.default.get().upgradeRoom(this.props.room.roomId, this._targetVersion).catch(function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to upgrade room', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to upgrade room\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"The room upgrade could not be completed\")\n });\n }).finally(function () {\n _this.setState({ busy: false });\n });\n },\n\n render: function render() {\n var _React$createElement;\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n var Spinner = _index2.default.getComponent('views.elements.Spinner');\n\n var buttons = void 0;\n if (this.state.busy) {\n buttons = _react2.default.createElement(Spinner, null);\n } else {\n buttons = _react2.default.createElement(DialogButtons, {\n primaryButton: (0, _languageHandler._t)('Upgrade this room to version %(version)s', { version: this._targetVersion }),\n primaryButtonClass: 'danger',\n hasCancel: true,\n onPrimaryButtonClick: this._onUpgradeClick,\n focus: this.props.focus,\n onCancel: this._onCancelClick\n });\n }\n\n return _react2.default.createElement(\n BaseDialog,\n (_React$createElement = { className: 'mx_RoomUpgradeDialog',\n onFinished: this.onCancelled,\n title: (0, _languageHandler._t)(\"Upgrade Room Version\"),\n contentId: 'mx_Dialog_content'\n }, (0, _defineProperty3.default)(_React$createElement, 'onFinished', this.props.onFinished), (0, _defineProperty3.default)(_React$createElement, 'hasCancel', true), _React$createElement),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Upgrading this room requires closing down the current \" + \"instance of the room and creating a new room it its place. \" + \"To give room members the best possible experience, we will:\")\n ),\n _react2.default.createElement(\n 'ol',\n null,\n _react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)(\"Create a new room with the same name, description and avatar\")\n ),\n _react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)(\"Update any local room aliases to point to the new room\")\n ),\n _react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)(\"Stop users from speaking in the old version of the room, and post a message advising users to move to the new room\")\n ),\n _react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)(\"Put a link back to the old room at the start of the new room so people can see old messages\")\n )\n ),\n buttons\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomUpgradeDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'SessionRestoreErrorDialog',\n\n propTypes: {\n error: _propTypes2.default.string.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n _sendBugReport: function _sendBugReport() {\n var BugReportDialog = _index2.default.getComponent(\"dialogs.BugReportDialog\");\n _Modal2.default.createTrackedDialog('Session Restore Error', 'Send Bug Report Dialog', BugReportDialog, {});\n },\n\n _onClearStorageClick: function _onClearStorageClick() {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('Session Restore Confirm Logout', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Sign out\"),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Log out and remove encryption keys?\")\n ),\n button: (0, _languageHandler._t)(\"Sign out\"),\n danger: true,\n onFinished: this.props.onFinished\n });\n },\n\n _onRefreshClick: function _onRefreshClick() {\n // Is this likely to help? Probably not, but giving only one button\n // that clears your storage seems awful.\n window.location.reload(true);\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n\n var clearStorageButton = _react2.default.createElement(\n 'button',\n { onClick: this._onClearStorageClick, className: 'danger' },\n (0, _languageHandler._t)(\"Clear Storage and Sign Out\")\n );\n\n var dialogButtons = void 0;\n if (_SdkConfig2.default.get().bug_report_endpoint_url) {\n dialogButtons = _react2.default.createElement(\n DialogButtons,\n { primaryButton: (0, _languageHandler._t)(\"Send Logs\"),\n onPrimaryButtonClick: this._sendBugReport,\n focus: true,\n hasCancel: false\n },\n clearStorageButton\n );\n } else {\n dialogButtons = _react2.default.createElement(\n DialogButtons,\n { primaryButton: (0, _languageHandler._t)(\"Refresh\"),\n onPrimaryButtonClick: this._onRefreshClick,\n focus: true,\n hasCancel: false\n },\n clearStorageButton\n );\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_ErrorDialog', onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('Unable to restore session'),\n contentId: 'mx_Dialog_content',\n hasCancel: false\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"We encountered an error trying to restore your previous session.\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"If you have previously used a more recent version of Riot, your session \" + \"may be incompatible with this version. Close this window and return \" + \"to the more recent version.\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Clearing your browser's storage may fix the problem, but will sign you \" + \"out and cause any encrypted chat history to become unreadable.\")\n )\n ),\n dialogButtons\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=SessionRestoreErrorDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _email = require('../../../email');\n\nvar _email2 = _interopRequireDefault(_email);\n\nvar _AddThreepid = require('../../../AddThreepid');\n\nvar _AddThreepid2 = _interopRequireDefault(_AddThreepid);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Prompt the user to set an email address.\n *\n * On success, `onFinished(true)` is called.\n */\nexports.default = _react2.default.createClass({\n displayName: 'SetEmailDialog',\n propTypes: {\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n emailAddress: '',\n emailBusy: false\n };\n },\n\n onEmailAddressChanged: function onEmailAddressChanged(value) {\n this.setState({\n emailAddress: value\n });\n },\n\n onSubmit: function onSubmit() {\n var _this = this;\n\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n\n var emailAddress = this.state.emailAddress;\n if (!_email2.default.looksValid(emailAddress)) {\n _Modal2.default.createTrackedDialog('Invalid Email Address', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Invalid Email Address\"),\n description: (0, _languageHandler._t)(\"This doesn't appear to be a valid email address\")\n });\n return;\n }\n this._addThreepid = new _AddThreepid2.default();\n // we always bind emails when registering, so let's do the\n // same here.\n this._addThreepid.addEmailAddress(emailAddress, true).done(function () {\n _Modal2.default.createTrackedDialog('Verification Pending', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Verification Pending\"),\n description: (0, _languageHandler._t)(\"Please check your email and click on the link it contains. Once this \" + \"is done, click continue.\"),\n button: (0, _languageHandler._t)('Continue'),\n onFinished: _this.onEmailDialogFinished\n });\n }, function (err) {\n _this.setState({ emailBusy: false });\n console.error(\"Unable to add email address \" + emailAddress + \" \" + err);\n _Modal2.default.createTrackedDialog('Unable to add email address', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Unable to add email address\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n this.setState({ emailBusy: true });\n },\n\n onCancelled: function onCancelled() {\n this.props.onFinished(false);\n },\n\n onEmailDialogFinished: function onEmailDialogFinished(ok) {\n if (ok) {\n this.verifyEmailAddress();\n } else {\n this.setState({ emailBusy: false });\n }\n },\n\n verifyEmailAddress: function verifyEmailAddress() {\n var _this2 = this;\n\n this._addThreepid.checkEmailLinkClicked().done(function () {\n _this2.props.onFinished(true);\n }, function (err) {\n _this2.setState({ emailBusy: false });\n if (err.errcode == 'M_THREEPID_AUTH_FAILED') {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n var message = (0, _languageHandler._t)(\"Unable to verify email address.\") + \" \" + (0, _languageHandler._t)(\"Please check your email and click on the link it contains. Once this is done, click continue.\");\n _Modal2.default.createTrackedDialog('Verification Pending', '3pid Auth Failed', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Verification Pending\"),\n description: message,\n button: (0, _languageHandler._t)('Continue'),\n onFinished: _this2.onEmailDialogFinished\n });\n } else {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Unable to verify email address: \" + err);\n _Modal2.default.createTrackedDialog('Unable to verify email address', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Unable to verify email address.\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n }\n });\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var Spinner = _index2.default.getComponent('elements.Spinner');\n var EditableText = _index2.default.getComponent('elements.EditableText');\n\n var emailInput = this.state.emailBusy ? _react2.default.createElement(Spinner, null) : _react2.default.createElement(EditableText, {\n initialValue: this.state.emailAddress,\n className: 'mx_SetEmailDialog_email_input',\n autoFocus: 'true',\n placeholder: (0, _languageHandler._t)(\"Email address\"),\n placeholderClassName: 'mx_SetEmailDialog_email_input_placeholder',\n blurToCancel: false,\n onValueChanged: this.onEmailAddressChanged });\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_SetEmailDialog',\n onFinished: this.onCancelled,\n title: this.props.title,\n contentId: 'mx_Dialog_content'\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n { id: 'mx_Dialog_content' },\n (0, _languageHandler._t)('This will allow you to reset your password and receive notifications.')\n ),\n emailInput\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement('input', { className: 'mx_Dialog_primary',\n type: 'submit',\n value: (0, _languageHandler._t)(\"Continue\"),\n onClick: this.onSubmit\n }),\n _react2.default.createElement('input', {\n type: 'submit',\n value: (0, _languageHandler._t)(\"Skip\"),\n onClick: this.onCancelled\n })\n )\n );\n }\n}); /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=SetEmailDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _Keyboard = require('../../../Keyboard');\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The amount of time to wait for further changes to the input username before\n// sending a request to the server\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar USERNAME_CHECK_DEBOUNCE_MS = 250;\n\n/**\n * Prompt the user to set a display name.\n *\n * On success, `onFinished(true, newDisplayName)` is called.\n */\nexports.default = _react2.default.createClass({\n displayName: 'SetMxIdDialog',\n propTypes: {\n onFinished: _propTypes2.default.func.isRequired,\n // Called when the user requests to register with a different homeserver\n onDifferentServerClicked: _propTypes2.default.func.isRequired,\n // Called if the user wants to switch to login instead\n onLoginClick: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n // The entered username\n username: '',\n // Indicate ongoing work on the username\n usernameBusy: false,\n // Indicate error with username\n usernameError: '',\n // Assume the homeserver supports username checking until \"M_UNRECOGNIZED\"\n usernameCheckSupport: true,\n\n // Whether the auth UI is currently being used\n doingUIAuth: false,\n // Indicate error with auth\n authError: ''\n };\n },\n\n componentDidMount: function componentDidMount() {\n this.refs.input_value.select();\n\n this._matrixClient = _MatrixClientPeg2.default.get();\n },\n\n onValueChange: function onValueChange(ev) {\n var _this = this;\n\n this.setState({\n username: ev.target.value,\n usernameBusy: true,\n usernameError: ''\n }, function () {\n if (!_this.state.username || !_this.state.usernameCheckSupport) {\n _this.setState({\n usernameBusy: false\n });\n return;\n }\n\n // Debounce the username check to limit number of requests sent\n if (_this._usernameCheckTimeout) {\n clearTimeout(_this._usernameCheckTimeout);\n }\n _this._usernameCheckTimeout = setTimeout(function () {\n _this._doUsernameCheck().finally(function () {\n _this.setState({\n usernameBusy: false\n });\n });\n }, USERNAME_CHECK_DEBOUNCE_MS);\n });\n },\n\n onKeyUp: function onKeyUp(ev) {\n if (ev.keyCode === _Keyboard.KeyCode.ENTER) {\n this.onSubmit();\n }\n },\n\n onSubmit: function onSubmit(ev) {\n this.setState({\n doingUIAuth: true\n });\n },\n\n _doUsernameCheck: function _doUsernameCheck() {\n var _this2 = this;\n\n // XXX: SPEC-1\n // Check if username is valid\n // Naive impl copied from https://github.com/matrix-org/matrix-react-sdk/blob/66c3a6d9ca695780eb6b662e242e88323053ff33/src/components/views/login/RegistrationForm.js#L190\n if (encodeURIComponent(this.state.username) !== this.state.username) {\n this.setState({\n usernameError: (0, _languageHandler._t)('User names may only contain letters, numbers, dots, hyphens and underscores.')\n });\n return _bluebird2.default.reject();\n }\n\n // Check if username is available\n return this._matrixClient.isUsernameAvailable(this.state.username).then(function (isAvailable) {\n if (isAvailable) {\n _this2.setState({ usernameError: '' });\n }\n }, function (err) {\n // Indicate whether the homeserver supports username checking\n var newState = {\n usernameCheckSupport: err.errcode !== \"M_UNRECOGNIZED\"\n };\n console.error('Error whilst checking username availability: ', err);\n switch (err.errcode) {\n case \"M_USER_IN_USE\":\n newState.usernameError = (0, _languageHandler._t)('Username not available');\n break;\n case \"M_INVALID_USERNAME\":\n newState.usernameError = (0, _languageHandler._t)('Username invalid: %(errMessage)s', { errMessage: err.message });\n break;\n case \"M_UNRECOGNIZED\":\n // This homeserver doesn't support username checking, assume it's\n // fine and rely on the error appearing in registration step.\n newState.usernameError = '';\n break;\n case undefined:\n newState.usernameError = (0, _languageHandler._t)('Something went wrong!');\n break;\n default:\n newState.usernameError = (0, _languageHandler._t)('An error occurred: %(error_string)s', { error_string: err.message });\n break;\n }\n _this2.setState(newState);\n });\n },\n\n _generatePassword: function _generatePassword() {\n return Math.random().toString(36).slice(2);\n },\n\n _makeRegisterRequest: function _makeRegisterRequest(auth) {\n // Not upgrading - changing mxids\n var guestAccessToken = null;\n if (!this._generatedPassword) {\n this._generatedPassword = this._generatePassword();\n }\n return this._matrixClient.register(this.state.username, this._generatedPassword, undefined, // session id: included in the auth dict already\n auth, {}, guestAccessToken);\n },\n\n _onUIAuthFinished: function _onUIAuthFinished(success, response) {\n this.setState({\n doingUIAuth: false\n });\n\n if (!success) {\n this.setState({ authError: response.message });\n return;\n }\n\n // XXX Implement RTS /register here\n var teamToken = null;\n\n this.props.onFinished(true, {\n userId: response.user_id,\n deviceId: response.device_id,\n homeserverUrl: this._matrixClient.getHomeserverUrl(),\n identityServerUrl: this._matrixClient.getIdentityServerUrl(),\n accessToken: response.access_token,\n password: this._generatedPassword,\n teamToken: teamToken\n });\n },\n\n render: function render() {\n var _this3 = this;\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var InteractiveAuth = _index2.default.getComponent('structures.InteractiveAuth');\n var Spinner = _index2.default.getComponent('elements.Spinner');\n\n var auth = void 0;\n if (this.state.doingUIAuth) {\n auth = _react2.default.createElement(InteractiveAuth, {\n matrixClient: this._matrixClient,\n makeRequest: this._makeRegisterRequest,\n onAuthFinished: this._onUIAuthFinished,\n inputs: {},\n poll: true\n });\n }\n var inputClasses = (0, _classnames2.default)({\n \"mx_SetMxIdDialog_input\": true,\n \"error\": Boolean(this.state.usernameError)\n });\n\n var usernameIndicator = null;\n var usernameBusyIndicator = null;\n if (this.state.usernameBusy) {\n usernameBusyIndicator = _react2.default.createElement(Spinner, { w: '24', h: '24' });\n } else {\n var usernameAvailable = this.state.username && this.state.usernameCheckSupport && !this.state.usernameError;\n var usernameIndicatorClasses = (0, _classnames2.default)({\n \"error\": Boolean(this.state.usernameError),\n \"success\": usernameAvailable\n });\n usernameIndicator = _react2.default.createElement(\n 'div',\n { className: usernameIndicatorClasses, role: 'alert' },\n usernameAvailable ? (0, _languageHandler._t)('Username available') : this.state.usernameError\n );\n }\n\n var authErrorIndicator = null;\n if (this.state.authError) {\n authErrorIndicator = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.state.authError\n );\n }\n var canContinue = this.state.username && !this.state.usernameError && !this.state.usernameBusy;\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_SetMxIdDialog',\n onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('To get started, please pick a username!'),\n contentId: 'mx_Dialog_content'\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_SetMxIdDialog_input_group' },\n _react2.default.createElement('input', { type: 'text', ref: 'input_value', value: this.state.username,\n autoFocus: true,\n onChange: this.onValueChange,\n onKeyUp: this.onKeyUp,\n size: '30',\n className: inputClasses\n }),\n usernameBusyIndicator\n ),\n usernameIndicator,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('This will be your account name on the <span></span> ' + 'homeserver, or you can pick a <a>different server</a>.', {}, {\n 'span': _react2.default.createElement(\n 'span',\n null,\n this.props.homeserverUrl\n ),\n 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: '#', onClick: _this3.props.onDifferentServerClicked },\n sub\n );\n }\n })\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('If you already have a Matrix account you can <a>log in</a> instead.', {}, { 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: '#', onClick: _this3.props.onLoginClick },\n sub\n );\n } })\n ),\n auth,\n authErrorIndicator\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement('input', { className: 'mx_Dialog_primary',\n type: 'submit',\n value: (0, _languageHandler._t)(\"Continue\"),\n onClick: this.onSubmit,\n disabled: !canContinue\n })\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=SetMxIdDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar WarmFuzzy = function WarmFuzzy(props) {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var title = (0, _languageHandler._t)('You have successfully set a password!');\n if (props.didSetEmail) {\n title = (0, _languageHandler._t)('You have successfully set a password and an email address!');\n }\n var advice = (0, _languageHandler._t)('You can now return to your account after signing out, and sign in on other devices.');\n var extraAdvice = null;\n if (!props.didSetEmail) {\n extraAdvice = (0, _languageHandler._t)('Remember, you can always set an email address in user settings if you change your mind.');\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_SetPasswordDialog',\n onFinished: props.onFinished,\n title: title\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n advice\n ),\n _react2.default.createElement(\n 'p',\n null,\n extraAdvice\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n {\n className: 'mx_Dialog_primary',\n autoFocus: true,\n onClick: props.onFinished },\n (0, _languageHandler._t)('Continue')\n )\n )\n );\n};\n\n/**\n * Prompt the user to set a password\n *\n * On success, `onFinished()` when finished\n */\nexports.default = _react2.default.createClass({\n displayName: 'SetPasswordDialog',\n propTypes: {\n onFinished: _react2.default.PropTypes.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n error: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n console.info('SetPasswordDialog component will mount');\n },\n\n _onPasswordChanged: function _onPasswordChanged(res) {\n var _this = this;\n\n _Modal2.default.createDialog(WarmFuzzy, {\n didSetEmail: res.didSetEmail,\n onFinished: function onFinished() {\n _this.props.onFinished();\n }\n });\n },\n\n _onPasswordChangeError: function _onPasswordChangeError(err) {\n var errMsg = err.error || \"\";\n if (err.httpStatus === 403) {\n errMsg = (0, _languageHandler._t)('Failed to change password. Is your password correct?');\n } else if (err.httpStatus) {\n errMsg += ' ' + (0, _languageHandler._t)('(HTTP status %(httpStatus)s)', { httpStatus: err.httpStatus });\n }\n this.setState({\n error: errMsg\n });\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var ChangePassword = _index2.default.getComponent('views.settings.ChangePassword');\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_SetPasswordDialog',\n onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('Please set a password!')\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('This will allow you to return to your account after signing out, and sign in on other devices.')\n ),\n _react2.default.createElement(ChangePassword, {\n className: 'mx_SetPasswordDialog_change_password',\n rowClassName: '',\n rowLabelClassName: '',\n rowInputClassName: '',\n buttonClassName: 'mx_Dialog_primary mx_SetPasswordDialog_change_password_button',\n confirm: false,\n autoFocusNewPasswordInput: true,\n shouldAskForEmail: true,\n onError: this._onPasswordChangeError,\n onFinished: this._onPasswordChanged }),\n _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.error\n )\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=SetPasswordDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _qrcodeReact = require('qrcode-react');\n\nvar _qrcodeReact2 = _interopRequireDefault(_qrcodeReact);\n\nvar _matrixTo = require('../../../matrix-to');\n\nvar _ContextualMenu = require('../../structures/ContextualMenu');\n\nvar ContextualMenu = _interopRequireWildcard(_ContextualMenu);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar socials = [{\n name: 'Facebook',\n img: 'img/social/facebook.png',\n url: function url(_url) {\n return 'https://www.facebook.com/sharer/sharer.php?u=' + _url;\n }\n}, {\n name: 'Twitter',\n img: 'img/social/twitter-2.png',\n url: function url(_url2) {\n return 'https://twitter.com/home?status=' + _url2;\n }\n}, /* // icon missing\n name: 'Google Plus',\n img: 'img/social/',\n url: (url) => `https://plus.google.com/share?url=${url}`,\n },*/{\n name: 'LinkedIn',\n img: 'img/social/linkedin.png',\n url: function url(_url3) {\n return 'https://www.linkedin.com/shareArticle?mini=true&url=' + _url3;\n }\n}, {\n name: 'Reddit',\n img: 'img/social/reddit.png',\n url: function url(_url4) {\n return 'http://www.reddit.com/submit?url=' + _url4;\n }\n}, {\n name: 'email',\n img: 'img/social/email-1.png',\n url: function url(_url5) {\n return 'mailto:?body=' + _url5;\n }\n}];\n\nvar ShareDialog = function (_React$Component) {\n (0, _inherits3.default)(ShareDialog, _React$Component);\n\n function ShareDialog(props) {\n (0, _classCallCheck3.default)(this, ShareDialog);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ShareDialog.__proto__ || (0, _getPrototypeOf2.default)(ShareDialog)).call(this, props));\n\n _this.onCopyClick = _this.onCopyClick.bind(_this);\n _this.onLinkSpecificEventCheckboxClick = _this.onLinkSpecificEventCheckboxClick.bind(_this);\n\n _this.state = {\n // MatrixEvent defaults to share linkSpecificEvent\n linkSpecificEvent: _this.props.target instanceof _matrixJsSdk.MatrixEvent\n };\n return _this;\n }\n\n (0, _createClass3.default)(ShareDialog, [{\n key: 'onCopyClick',\n value: function onCopyClick(e) {\n e.preventDefault();\n\n ShareDialog._selectText(this.refs.link);\n\n var successful = void 0;\n try {\n successful = document.execCommand('copy');\n } catch (err) {\n console.error('Failed to copy: ', err);\n }\n\n var GenericTextContextMenu = _index2.default.getComponent('context_menus.GenericTextContextMenu');\n var buttonRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = buttonRect.right + window.pageXOffset;\n var y = buttonRect.top + buttonRect.height / 2 + window.pageYOffset - 19;\n\n var _ContextualMenu$creat = ContextualMenu.createMenu(GenericTextContextMenu, {\n chevronOffset: 10,\n left: x,\n top: y,\n message: successful ? (0, _languageHandler._t)('Copied!') : (0, _languageHandler._t)('Failed to copy')\n }, false),\n close = _ContextualMenu$creat.close;\n\n e.target.onmouseleave = close;\n }\n }, {\n key: 'onLinkSpecificEventCheckboxClick',\n value: function onLinkSpecificEventCheckboxClick() {\n this.setState({\n linkSpecificEvent: !this.state.linkSpecificEvent\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var title = void 0;\n var matrixToUrl = void 0;\n\n var checkbox = void 0;\n\n if (this.props.target instanceof _matrixJsSdk.Room) {\n title = (0, _languageHandler._t)('Share Room');\n\n var events = this.props.target.getLiveTimeline().getEvents();\n if (events.length > 0) {\n checkbox = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { type: 'checkbox',\n id: 'mx_ShareDialog_checkbox',\n checked: this.state.linkSpecificEvent,\n onClick: this.onLinkSpecificEventCheckboxClick }),\n _react2.default.createElement(\n 'label',\n { htmlFor: 'mx_ShareDialog_checkbox' },\n (0, _languageHandler._t)('Link to most recent message')\n )\n );\n }\n\n if (this.state.linkSpecificEvent) {\n matrixToUrl = (0, _matrixTo.makeEventPermalink)(this.props.target.roomId, events[events.length - 1].getId());\n } else {\n matrixToUrl = (0, _matrixTo.makeRoomPermalink)(this.props.target.roomId);\n }\n } else if (this.props.target instanceof _matrixJsSdk.User || this.props.target instanceof _matrixJsSdk.RoomMember) {\n title = (0, _languageHandler._t)('Share User');\n matrixToUrl = (0, _matrixTo.makeUserPermalink)(this.props.target.userId);\n } else if (this.props.target instanceof _matrixJsSdk.Group) {\n title = (0, _languageHandler._t)('Share Community');\n matrixToUrl = (0, _matrixTo.makeGroupPermalink)(this.props.target.groupId);\n } else if (this.props.target instanceof _matrixJsSdk.MatrixEvent) {\n title = (0, _languageHandler._t)('Share Room Message');\n checkbox = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { type: 'checkbox',\n id: 'mx_ShareDialog_checkbox',\n checked: this.state.linkSpecificEvent,\n onClick: this.onLinkSpecificEventCheckboxClick }),\n _react2.default.createElement(\n 'label',\n { htmlFor: 'mx_ShareDialog_checkbox' },\n (0, _languageHandler._t)('Link to selected message')\n )\n );\n\n if (this.state.linkSpecificEvent) {\n matrixToUrl = (0, _matrixTo.makeEventPermalink)(this.props.target.getRoomId(), this.props.target.getId());\n } else {\n matrixToUrl = (0, _matrixTo.makeRoomPermalink)(this.props.target.getRoomId());\n }\n }\n\n var encodedUrl = encodeURIComponent(matrixToUrl);\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n return _react2.default.createElement(\n BaseDialog,\n { title: title,\n className: 'mx_ShareDialog',\n contentId: 'mx_Dialog_content',\n onFinished: this.props.onFinished\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ShareDialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ShareDialog_matrixto' },\n _react2.default.createElement(\n 'a',\n { ref: 'link',\n href: matrixToUrl,\n onClick: ShareDialog.onLinkClick,\n className: 'mx_ShareDialog_matrixto_link'\n },\n matrixToUrl\n ),\n _react2.default.createElement(\n 'a',\n { href: matrixToUrl, className: 'mx_ShareDialog_matrixto_copy', onClick: this.onCopyClick },\n (0, _languageHandler._t)('COPY'),\n _react2.default.createElement(\n 'div',\n null,\n '\\xA0'\n )\n )\n ),\n checkbox,\n _react2.default.createElement('hr', null),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ShareDialog_split' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ShareDialog_qrcode_container' },\n _react2.default.createElement(_qrcodeReact2.default, { value: matrixToUrl, size: 256, logoWidth: 48, logo: 'img/matrix-m.svg' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ShareDialog_social_container' },\n socials.map(function (social) {\n return _react2.default.createElement(\n 'a',\n { rel: 'noopener',\n target: '_blank',\n key: social.name,\n name: social.name,\n href: social.url(encodedUrl),\n className: 'mx_ShareDialog_social_icon'\n },\n _react2.default.createElement('img', { src: social.img, alt: social.name, height: 64, width: 64 })\n );\n })\n )\n )\n )\n );\n }\n }], [{\n key: '_selectText',\n value: function _selectText(target) {\n var range = document.createRange();\n range.selectNodeContents(target);\n\n var selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }, {\n key: 'onLinkClick',\n value: function onLinkClick(e) {\n e.preventDefault();\n var target = e.target;\n\n ShareDialog._selectText(target);\n }\n }]);\n return ShareDialog;\n}(_react2.default.Component);\n\nShareDialog.propTypes = {\n onFinished: _propTypes2.default.func.isRequired,\n target: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_matrixJsSdk.Room), _propTypes2.default.instanceOf(_matrixJsSdk.User), _propTypes2.default.instanceOf(_matrixJsSdk.Group), _propTypes2.default.instanceOf(_matrixJsSdk.RoomMember), _propTypes2.default.instanceOf(_matrixJsSdk.MatrixEvent)]).isRequired\n};\nexports.default = ShareDialog;\nmodule.exports = exports['default'];\n//# sourceMappingURL=ShareDialog.js.map","'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar PropTypes = require('prop-types');\nvar ReactDOM = require('react-dom');\nvar qr = require('qr.js');\n\nfunction getBackingStorePixelRatio(ctx) {\n return ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1;\n}\n\nvar getDOMNode;\nif (/^0\\.14/.test(React.version)) {\n getDOMNode = function getDOMNode(ref) {\n return ref;\n };\n} else {\n getDOMNode = function getDOMNode(ref) {\n return ReactDOM.findDOMNode(ref);\n };\n}\n\nvar QRCode = function (_React$Component) {\n _inherits(QRCode, _React$Component);\n\n function QRCode() {\n _classCallCheck(this, QRCode);\n\n return _possibleConstructorReturn(this, (QRCode.__proto__ || Object.getPrototypeOf(QRCode)).apply(this, arguments));\n }\n\n _createClass(QRCode, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps) {\n var that = this;\n return Object.keys(QRCode.propTypes).some(function (k) {\n return that.props[k] !== nextProps[k];\n });\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.update();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.update();\n }\n }, {\n key: 'utf16to8',\n value: function utf16to8(str) {\n var out, i, len, c;\n out = \"\";\n len = str.length;\n for (i = 0; i < len; i++) {\n c = str.charCodeAt(i);\n if (c >= 0x0001 && c <= 0x007F) {\n out += str.charAt(i);\n } else if (c > 0x07FF) {\n out += String.fromCharCode(0xE0 | c >> 12 & 0x0F);\n out += String.fromCharCode(0x80 | c >> 6 & 0x3F);\n out += String.fromCharCode(0x80 | c >> 0 & 0x3F);\n } else {\n out += String.fromCharCode(0xC0 | c >> 6 & 0x1F);\n out += String.fromCharCode(0x80 | c >> 0 & 0x3F);\n }\n }\n return out;\n }\n }, {\n key: 'update',\n value: function update() {\n var value = this.utf16to8(this.props.value);\n var qrcode = qr(value);\n var canvas = getDOMNode(this.refs.canvas);\n\n var ctx = canvas.getContext('2d');\n var cells = qrcode.modules;\n var tileW = this.props.size / cells.length;\n var tileH = this.props.size / cells.length;\n var scale = (window.devicePixelRatio || 1) / getBackingStorePixelRatio(ctx);\n canvas.height = canvas.width = this.props.size * scale;\n ctx.scale(scale, scale);\n\n cells.forEach(function (row, rdx) {\n row.forEach(function (cell, cdx) {\n ctx.fillStyle = cell ? this.props.fgColor : this.props.bgColor;\n var w = Math.ceil((cdx + 1) * tileW) - Math.floor(cdx * tileW);\n var h = Math.ceil((rdx + 1) * tileH) - Math.floor(rdx * tileH);\n ctx.fillRect(Math.round(cdx * tileW), Math.round(rdx * tileH), w, h);\n }, this);\n }, this);\n\n if (this.props.logo) {\n var self = this;\n var size = this.props.size;\n var image = document.createElement('img');\n image.src = this.props.logo;\n image.onload = function () {\n var dwidth = self.props.logoWidth || size * 0.2;\n var dheight = self.props.logoHeight || image.height / image.width * dwidth;\n var dx = (size - dwidth) / 2;\n var dy = (size - dheight) / 2;\n image.width = dwidth;\n image.height = dheight;\n ctx.drawImage(image, dx, dy, dwidth, dheight);\n };\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return React.createElement('canvas', {\n style: { height: this.props.size, width: this.props.size },\n height: this.props.size,\n width: this.props.size,\n ref: 'canvas'\n });\n }\n }]);\n\n return QRCode;\n}(React.Component);\n\nQRCode.propTypes = {\n value: PropTypes.string.isRequired,\n size: PropTypes.number,\n bgColor: PropTypes.string,\n fgColor: PropTypes.string,\n logo: PropTypes.string,\n logoWidth: PropTypes.number,\n logoHeight: PropTypes.number\n};\n\nQRCode.defaultProps = {\n size: 128,\n bgColor: '#FFFFFF',\n fgColor: '#000000',\n value: 'http://facebook.github.io/react/'\n};\n\nmodule.exports = QRCode;\n","var QRCode = require('./lib/QRCode');\r\nvar ErrorCorrectLevel = require('./lib/ErrorCorrectLevel');\r\n\r\nvar qrcode = function(data, opt) {\r\n\topt = opt || {};\r\n\tvar qr = new QRCode(opt.typeNumber || -1,\r\n\t\t\t\t\t\topt.errorCorrectLevel || ErrorCorrectLevel.H);\r\n\tqr.addData(data);\r\n\tqr.make();\r\n\r\n\treturn qr;\r\n};\r\n\r\nqrcode.ErrorCorrectLevel = ErrorCorrectLevel;\r\n\r\nmodule.exports = qrcode;\r\n\r\n","var BitByte = require('./8BitByte');\nvar RSBlock = require('./RSBlock');\nvar BitBuffer = require('./BitBuffer');\nvar util = require('./util');\nvar Polynomial = require('./Polynomial');\n\nfunction QRCode(typeNumber, errorCorrectLevel) {\n\tthis.typeNumber = typeNumber;\n\tthis.errorCorrectLevel = errorCorrectLevel;\n\tthis.modules = null;\n\tthis.moduleCount = 0;\n\tthis.dataCache = null;\n\tthis.dataList = [];\n}\n\n// for client side minification\nvar proto = QRCode.prototype;\n\nproto.addData = function(data) {\n\tvar newData = new BitByte(data);\n\tthis.dataList.push(newData);\n\tthis.dataCache = null;\n};\n\nproto.isDark = function(row, col) {\n\tif (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n\t\tthrow new Error(row + \",\" + col);\n\t}\n\treturn this.modules[row][col];\n};\n\nproto.getModuleCount = function() {\n\treturn this.moduleCount;\n};\n\nproto.make = function() {\n\t// Calculate automatically typeNumber if provided is < 1\n\tif (this.typeNumber < 1 ){\n\t\tvar typeNumber = 1;\n\t\tfor (typeNumber = 1; typeNumber < 40; typeNumber++) {\n\t\t\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);\n\n\t\t\tvar buffer = new BitBuffer();\n\t\t\tvar totalDataCount = 0;\n\t\t\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\t\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < this.dataList.length; i++) {\n\t\t\t\tvar data = this.dataList[i];\n\t\t\t\tbuffer.put(data.mode, 4);\n\t\t\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\t\t\tdata.write(buffer);\n\t\t\t}\n\t\t\tif (buffer.getLengthInBits() <= totalDataCount * 8)\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.typeNumber = typeNumber;\n\t}\n\tthis.makeImpl(false, this.getBestMaskPattern() );\n};\n\nproto.makeImpl = function(test, maskPattern) {\n\t\n\tthis.moduleCount = this.typeNumber * 4 + 17;\n\tthis.modules = new Array(this.moduleCount);\n\t\n\tfor (var row = 0; row < this.moduleCount; row++) {\n\t\t\n\t\tthis.modules[row] = new Array(this.moduleCount);\n\t\t\n\t\tfor (var col = 0; col < this.moduleCount; col++) {\n\t\t\tthis.modules[row][col] = null;//(col + row) % 3;\n\t\t}\n\t}\n\n\tthis.setupPositionProbePattern(0, 0);\n\tthis.setupPositionProbePattern(this.moduleCount - 7, 0);\n\tthis.setupPositionProbePattern(0, this.moduleCount - 7);\n\tthis.setupPositionAdjustPattern();\n\tthis.setupTimingPattern();\n\tthis.setupTypeInfo(test, maskPattern);\n\t\n\tif (this.typeNumber >= 7) {\n\t\tthis.setupTypeNumber(test);\n\t}\n\n\tif (this.dataCache == null) {\n\t\tthis.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList);\n\t}\n\n\tthis.mapData(this.dataCache, maskPattern);\n};\n\nproto.setupPositionProbePattern = function(row, col) {\n\t\n\tfor (var r = -1; r <= 7; r++) {\n\t\t\n\t\tif (row + r <= -1 || this.moduleCount <= row + r) continue;\n\t\t\n\t\tfor (var c = -1; c <= 7; c++) {\n\t\t\t\n\t\t\tif (col + c <= -1 || this.moduleCount <= col + c) continue;\n\t\t\t\n\t\t\tif ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n\t\t\t\t\t|| (0 <= c && c <= 6 && (r == 0 || r == 6) )\n\t\t\t\t\t|| (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t} else {\n\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t}\n\t\t}\t\t\n\t}\t\t\n};\n\nproto.getBestMaskPattern = function() {\n\n\tvar minLostPoint = 0;\n\tvar pattern = 0;\n\n\tfor (var i = 0; i < 8; i++) {\n\t\t\n\t\tthis.makeImpl(true, i);\n\n\t\tvar lostPoint = util.getLostPoint(this);\n\n\t\tif (i == 0 || minLostPoint > lostPoint) {\n\t\t\tminLostPoint = lostPoint;\n\t\t\tpattern = i;\n\t\t}\n\t}\n\n\treturn pattern;\n};\n\nproto.createMovieClip = function(target_mc, instance_name, depth) {\n\n\tvar qr_mc = target_mc.createEmptyMovieClip(instance_name, depth);\n\tvar cs = 1;\n\n\tthis.make();\n\n\tfor (var row = 0; row < this.modules.length; row++) {\n\t\t\n\t\tvar y = row * cs;\n\t\t\n\t\tfor (var col = 0; col < this.modules[row].length; col++) {\n\n\t\t\tvar x = col * cs;\n\t\t\tvar dark = this.modules[row][col];\n\t\t\n\t\t\tif (dark) {\n\t\t\t\tqr_mc.beginFill(0, 100);\n\t\t\t\tqr_mc.moveTo(x, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y + cs);\n\t\t\t\tqr_mc.lineTo(x, y + cs);\n\t\t\t\tqr_mc.endFill();\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn qr_mc;\n};\n\nproto.setupTimingPattern = function() {\n\t\n\tfor (var r = 8; r < this.moduleCount - 8; r++) {\n\t\tif (this.modules[r][6] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[r][6] = (r % 2 == 0);\n\t}\n\n\tfor (var c = 8; c < this.moduleCount - 8; c++) {\n\t\tif (this.modules[6][c] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[6][c] = (c % 2 == 0);\n\t}\n};\n\nproto.setupPositionAdjustPattern = function() {\n\n\tvar pos = util.getPatternPosition(this.typeNumber);\n\t\n\tfor (var i = 0; i < pos.length; i++) {\n\t\n\t\tfor (var j = 0; j < pos.length; j++) {\n\t\t\n\t\t\tvar row = pos[i];\n\t\t\tvar col = pos[j];\n\t\t\t\n\t\t\tif (this.modules[row][col] != null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tfor (var r = -2; r <= 2; r++) {\n\t\t\t\n\t\t\t\tfor (var c = -2; c <= 2; c++) {\n\t\t\t\t\n\t\t\t\t\tif (r == -2 || r == 2 || c == -2 || c == 2\n\t\t\t\t\t\t\t|| (r == 0 && c == 0) ) {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nproto.setupTypeNumber = function(test) {\n\n\tvar bits = util.getBCHTypeNumber(this.typeNumber);\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;\n\t}\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n\t}\n};\n\nproto.setupTypeInfo = function(test, maskPattern) {\n\n\tvar data = (this.errorCorrectLevel << 3) | maskPattern;\n\tvar bits = util.getBCHTypeInfo(data);\n\n\t// vertical\t\t\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\n\t\tif (i < 6) {\n\t\t\tthis.modules[i][8] = mod;\n\t\t} else if (i < 8) {\n\t\t\tthis.modules[i + 1][8] = mod;\n\t\t} else {\n\t\t\tthis.modules[this.moduleCount - 15 + i][8] = mod;\n\t\t}\n\t}\n\n\t// horizontal\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\t\n\t\tif (i < 8) {\n\t\t\tthis.modules[8][this.moduleCount - i - 1] = mod;\n\t\t} else if (i < 9) {\n\t\t\tthis.modules[8][15 - i - 1 + 1] = mod;\n\t\t} else {\n\t\t\tthis.modules[8][15 - i - 1] = mod;\n\t\t}\n\t}\n\n\t// fixed module\n\tthis.modules[this.moduleCount - 8][8] = (!test);\n};\n\nproto.mapData = function(data, maskPattern) {\n\t\n\tvar inc = -1;\n\tvar row = this.moduleCount - 1;\n\tvar bitIndex = 7;\n\tvar byteIndex = 0;\n\t\n\tfor (var col = this.moduleCount - 1; col > 0; col -= 2) {\n\n\t\tif (col == 6) col--;\n\n\t\twhile (true) {\n\n\t\t\tfor (var c = 0; c < 2; c++) {\n\t\t\t\t\n\t\t\t\tif (this.modules[row][col - c] == null) {\n\t\t\t\t\t\n\t\t\t\t\tvar dark = false;\n\n\t\t\t\t\tif (byteIndex < data.length) {\n\t\t\t\t\t\tdark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar mask = util.getMask(maskPattern, row, col - c);\n\n\t\t\t\t\tif (mask) {\n\t\t\t\t\t\tdark = !dark;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.modules[row][col - c] = dark;\n\t\t\t\t\tbitIndex--;\n\n\t\t\t\t\tif (bitIndex == -1) {\n\t\t\t\t\t\tbyteIndex++;\n\t\t\t\t\t\tbitIndex = 7;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\trow += inc;\n\n\t\t\tif (row < 0 || this.moduleCount <= row) {\n\t\t\t\trow -= inc;\n\t\t\t\tinc = -inc;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n};\n\nQRCode.PAD0 = 0xEC;\nQRCode.PAD1 = 0x11;\n\nQRCode.createData = function(typeNumber, errorCorrectLevel, dataList) {\n\t\n\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n\t\n\tvar buffer = new BitBuffer();\n\t\n\tfor (var i = 0; i < dataList.length; i++) {\n\t\tvar data = dataList[i];\n\t\tbuffer.put(data.mode, 4);\n\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\tdata.write(buffer);\n\t}\n\n\t// calc num max data.\n\tvar totalDataCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t}\n\n\tif (buffer.getLengthInBits() > totalDataCount * 8) {\n\t\tthrow new Error(\"code length overflow. (\"\n\t\t\t+ buffer.getLengthInBits()\n\t\t\t+ \">\"\n\t\t\t+ totalDataCount * 8\n\t\t\t+ \")\");\n\t}\n\n\t// end code\n\tif (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n\t\tbuffer.put(0, 4);\n\t}\n\n\t// padding\n\twhile (buffer.getLengthInBits() % 8 != 0) {\n\t\tbuffer.putBit(false);\n\t}\n\n\t// padding\n\twhile (true) {\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD0, 8);\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD1, 8);\n\t}\n\n\treturn QRCode.createBytes(buffer, rsBlocks);\n};\n\nQRCode.createBytes = function(buffer, rsBlocks) {\n\n\tvar offset = 0;\n\t\n\tvar maxDcCount = 0;\n\tvar maxEcCount = 0;\n\t\n\tvar dcdata = new Array(rsBlocks.length);\n\tvar ecdata = new Array(rsBlocks.length);\n\t\n\tfor (var r = 0; r < rsBlocks.length; r++) {\n\n\t\tvar dcCount = rsBlocks[r].dataCount;\n\t\tvar ecCount = rsBlocks[r].totalCount - dcCount;\n\n\t\tmaxDcCount = Math.max(maxDcCount, dcCount);\n\t\tmaxEcCount = Math.max(maxEcCount, ecCount);\n\t\t\n\t\tdcdata[r] = new Array(dcCount);\n\t\t\n\t\tfor (var i = 0; i < dcdata[r].length; i++) {\n\t\t\tdcdata[r][i] = 0xff & buffer.buffer[i + offset];\n\t\t}\n\t\toffset += dcCount;\n\t\t\n\t\tvar rsPoly = util.getErrorCorrectPolynomial(ecCount);\n\t\tvar rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1);\n\n\t\tvar modPoly = rawPoly.mod(rsPoly);\n\t\tecdata[r] = new Array(rsPoly.getLength() - 1);\n\t\tfor (var i = 0; i < ecdata[r].length; i++) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n\t\t\tecdata[r][i] = (modIndex >= 0)? modPoly.get(modIndex) : 0;\n\t\t}\n\n\t}\n\t\n\tvar totalCodeCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalCodeCount += rsBlocks[i].totalCount;\n\t}\n\n\tvar data = new Array(totalCodeCount);\n\tvar index = 0;\n\n\tfor (var i = 0; i < maxDcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < dcdata[r].length) {\n\t\t\t\tdata[index++] = dcdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (var i = 0; i < maxEcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < ecdata[r].length) {\n\t\t\t\tdata[index++] = ecdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn data;\n};\n\nmodule.exports = QRCode;\n\n","var mode = require('./mode');\n\nfunction QR8bitByte(data) {\n\tthis.mode = mode.MODE_8BIT_BYTE;\n\tthis.data = data;\n}\n\nQR8bitByte.prototype = {\n\n\tgetLength : function(buffer) {\n\t\treturn this.data.length;\n\t},\n\t\n\twrite : function(buffer) {\n\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t// not JIS ...\n\t\t\tbuffer.put(this.data.charCodeAt(i), 8);\n\t\t}\n\t}\n};\n\nmodule.exports = QR8bitByte;\n\n","// ErrorCorrectLevel\nvar ECL = require('./ErrorCorrectLevel');\n\nfunction QRRSBlock(totalCount, dataCount) {\n\tthis.totalCount = totalCount;\n\tthis.dataCount = dataCount;\n}\n\nQRRSBlock.RS_BLOCK_TABLE = [\n\n\t// L\n\t// M\n\t// Q\n\t// H\n\n\t// 1\n\t[1, 26, 19],\n\t[1, 26, 16],\n\t[1, 26, 13],\n\t[1, 26, 9],\n\t\n\t// 2\n\t[1, 44, 34],\n\t[1, 44, 28],\n\t[1, 44, 22],\n\t[1, 44, 16],\n\n\t// 3\n\t[1, 70, 55],\n\t[1, 70, 44],\n\t[2, 35, 17],\n\t[2, 35, 13],\n\n\t// 4\t\t\n\t[1, 100, 80],\n\t[2, 50, 32],\n\t[2, 50, 24],\n\t[4, 25, 9],\n\t\n\t// 5\n\t[1, 134, 108],\n\t[2, 67, 43],\n\t[2, 33, 15, 2, 34, 16],\n\t[2, 33, 11, 2, 34, 12],\n\t\n\t// 6\n\t[2, 86, 68],\n\t[4, 43, 27],\n\t[4, 43, 19],\n\t[4, 43, 15],\n\t\n\t// 7\t\t\n\t[2, 98, 78],\n\t[4, 49, 31],\n\t[2, 32, 14, 4, 33, 15],\n\t[4, 39, 13, 1, 40, 14],\n\t\n\t// 8\n\t[2, 121, 97],\n\t[2, 60, 38, 2, 61, 39],\n\t[4, 40, 18, 2, 41, 19],\n\t[4, 40, 14, 2, 41, 15],\n\t\n\t// 9\n\t[2, 146, 116],\n\t[3, 58, 36, 2, 59, 37],\n\t[4, 36, 16, 4, 37, 17],\n\t[4, 36, 12, 4, 37, 13],\n\t\n\t// 10\t\t\n\t[2, 86, 68, 2, 87, 69],\n\t[4, 69, 43, 1, 70, 44],\n\t[6, 43, 19, 2, 44, 20],\n\t[6, 43, 15, 2, 44, 16],\n\n\t// 11\n\t[4, 101, 81],\n\t[1, 80, 50, 4, 81, 51],\n\t[4, 50, 22, 4, 51, 23],\n\t[3, 36, 12, 8, 37, 13],\n\n\t// 12\n\t[2, 116, 92, 2, 117, 93],\n\t[6, 58, 36, 2, 59, 37],\n\t[4, 46, 20, 6, 47, 21],\n\t[7, 42, 14, 4, 43, 15],\n\n\t// 13\n\t[4, 133, 107],\n\t[8, 59, 37, 1, 60, 38],\n\t[8, 44, 20, 4, 45, 21],\n\t[12, 33, 11, 4, 34, 12],\n\n\t// 14\n\t[3, 145, 115, 1, 146, 116],\n\t[4, 64, 40, 5, 65, 41],\n\t[11, 36, 16, 5, 37, 17],\n\t[11, 36, 12, 5, 37, 13],\n\n\t// 15\n\t[5, 109, 87, 1, 110, 88],\n\t[5, 65, 41, 5, 66, 42],\n\t[5, 54, 24, 7, 55, 25],\n\t[11, 36, 12],\n\n\t// 16\n\t[5, 122, 98, 1, 123, 99],\n\t[7, 73, 45, 3, 74, 46],\n\t[15, 43, 19, 2, 44, 20],\n\t[3, 45, 15, 13, 46, 16],\n\n\t// 17\n\t[1, 135, 107, 5, 136, 108],\n\t[10, 74, 46, 1, 75, 47],\n\t[1, 50, 22, 15, 51, 23],\n\t[2, 42, 14, 17, 43, 15],\n\n\t// 18\n\t[5, 150, 120, 1, 151, 121],\n\t[9, 69, 43, 4, 70, 44],\n\t[17, 50, 22, 1, 51, 23],\n\t[2, 42, 14, 19, 43, 15],\n\n\t// 19\n\t[3, 141, 113, 4, 142, 114],\n\t[3, 70, 44, 11, 71, 45],\n\t[17, 47, 21, 4, 48, 22],\n\t[9, 39, 13, 16, 40, 14],\n\n\t// 20\n\t[3, 135, 107, 5, 136, 108],\n\t[3, 67, 41, 13, 68, 42],\n\t[15, 54, 24, 5, 55, 25],\n\t[15, 43, 15, 10, 44, 16],\n\n\t// 21\n\t[4, 144, 116, 4, 145, 117],\n\t[17, 68, 42],\n\t[17, 50, 22, 6, 51, 23],\n\t[19, 46, 16, 6, 47, 17],\n\n\t// 22\n\t[2, 139, 111, 7, 140, 112],\n\t[17, 74, 46],\n\t[7, 54, 24, 16, 55, 25],\n\t[34, 37, 13],\n\n\t// 23\n\t[4, 151, 121, 5, 152, 122],\n\t[4, 75, 47, 14, 76, 48],\n\t[11, 54, 24, 14, 55, 25],\n\t[16, 45, 15, 14, 46, 16],\n\n\t// 24\n\t[6, 147, 117, 4, 148, 118],\n\t[6, 73, 45, 14, 74, 46],\n\t[11, 54, 24, 16, 55, 25],\n\t[30, 46, 16, 2, 47, 17],\n\n\t// 25\n\t[8, 132, 106, 4, 133, 107],\n\t[8, 75, 47, 13, 76, 48],\n\t[7, 54, 24, 22, 55, 25],\n\t[22, 45, 15, 13, 46, 16],\n\n\t// 26\n\t[10, 142, 114, 2, 143, 115],\n\t[19, 74, 46, 4, 75, 47],\n\t[28, 50, 22, 6, 51, 23],\n\t[33, 46, 16, 4, 47, 17],\n\n\t// 27\n\t[8, 152, 122, 4, 153, 123],\n\t[22, 73, 45, 3, 74, 46],\n\t[8, 53, 23, 26, 54, 24],\n\t[12, 45, 15, 28, 46, 16],\n\n\t// 28\n\t[3, 147, 117, 10, 148, 118],\n\t[3, 73, 45, 23, 74, 46],\n\t[4, 54, 24, 31, 55, 25],\n\t[11, 45, 15, 31, 46, 16],\n\n\t// 29\n\t[7, 146, 116, 7, 147, 117],\n\t[21, 73, 45, 7, 74, 46],\n\t[1, 53, 23, 37, 54, 24],\n\t[19, 45, 15, 26, 46, 16],\n\n\t// 30\n\t[5, 145, 115, 10, 146, 116],\n\t[19, 75, 47, 10, 76, 48],\n\t[15, 54, 24, 25, 55, 25],\n\t[23, 45, 15, 25, 46, 16],\n\n\t// 31\n\t[13, 145, 115, 3, 146, 116],\n\t[2, 74, 46, 29, 75, 47],\n\t[42, 54, 24, 1, 55, 25],\n\t[23, 45, 15, 28, 46, 16],\n\n\t// 32\n\t[17, 145, 115],\n\t[10, 74, 46, 23, 75, 47],\n\t[10, 54, 24, 35, 55, 25],\n\t[19, 45, 15, 35, 46, 16],\n\n\t// 33\n\t[17, 145, 115, 1, 146, 116],\n\t[14, 74, 46, 21, 75, 47],\n\t[29, 54, 24, 19, 55, 25],\n\t[11, 45, 15, 46, 46, 16],\n\n\t// 34\n\t[13, 145, 115, 6, 146, 116],\n\t[14, 74, 46, 23, 75, 47],\n\t[44, 54, 24, 7, 55, 25],\n\t[59, 46, 16, 1, 47, 17],\n\n\t// 35\n\t[12, 151, 121, 7, 152, 122],\n\t[12, 75, 47, 26, 76, 48],\n\t[39, 54, 24, 14, 55, 25],\n\t[22, 45, 15, 41, 46, 16],\n\n\t// 36\n\t[6, 151, 121, 14, 152, 122],\n\t[6, 75, 47, 34, 76, 48],\n\t[46, 54, 24, 10, 55, 25],\n\t[2, 45, 15, 64, 46, 16],\n\n\t// 37\n\t[17, 152, 122, 4, 153, 123],\n\t[29, 74, 46, 14, 75, 47],\n\t[49, 54, 24, 10, 55, 25],\n\t[24, 45, 15, 46, 46, 16],\n\n\t// 38\n\t[4, 152, 122, 18, 153, 123],\n\t[13, 74, 46, 32, 75, 47],\n\t[48, 54, 24, 14, 55, 25],\n\t[42, 45, 15, 32, 46, 16],\n\n\t// 39\n\t[20, 147, 117, 4, 148, 118],\n\t[40, 75, 47, 7, 76, 48],\n\t[43, 54, 24, 22, 55, 25],\n\t[10, 45, 15, 67, 46, 16],\n\n\t// 40\n\t[19, 148, 118, 6, 149, 119],\n\t[18, 75, 47, 31, 76, 48],\n\t[34, 54, 24, 34, 55, 25],\n\t[20, 45, 15, 61, 46, 16]\n];\n\nQRRSBlock.getRSBlocks = function(typeNumber, errorCorrectLevel) {\n\t\n\tvar rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n\t\n\tif (rsBlock == undefined) {\n\t\tthrow new Error(\"bad rs block @ typeNumber:\" + typeNumber + \"/errorCorrectLevel:\" + errorCorrectLevel);\n\t}\n\n\tvar length = rsBlock.length / 3;\n\t\n\tvar list = new Array();\n\t\n\tfor (var i = 0; i < length; i++) {\n\n\t\tvar count = rsBlock[i * 3 + 0];\n\t\tvar totalCount = rsBlock[i * 3 + 1];\n\t\tvar dataCount = rsBlock[i * 3 + 2];\n\n\t\tfor (var j = 0; j < count; j++) {\n\t\t\tlist.push(new QRRSBlock(totalCount, dataCount) );\t\n\t\t}\n\t}\n\t\n\treturn list;\n}\n\nQRRSBlock.getRsBlockTable = function(typeNumber, errorCorrectLevel) {\n\n\tswitch(errorCorrectLevel) {\n\tcase ECL.L :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n\tcase ECL.M :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n\tcase ECL.Q :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n\tcase ECL.H :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n\tdefault :\n\t\treturn undefined;\n\t}\n}\n\nmodule.exports = QRRSBlock;\n","function QRBitBuffer() {\n\tthis.buffer = new Array();\n\tthis.length = 0;\n}\n\nQRBitBuffer.prototype = {\n\n\tget : function(index) {\n\t\tvar bufIndex = Math.floor(index / 8);\n\t\treturn ( (this.buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n\t},\n\t\n\tput : function(num, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tthis.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n\t\t}\n\t},\n\t\n\tgetLengthInBits : function() {\n\t\treturn this.length;\n\t},\n\t\n\tputBit : function(bit) {\n\t\n\t\tvar bufIndex = Math.floor(this.length / 8);\n\t\tif (this.buffer.length <= bufIndex) {\n\t\t\tthis.buffer.push(0);\n\t\t}\n\t\n\t\tif (bit) {\n\t\t\tthis.buffer[bufIndex] |= (0x80 >>> (this.length % 8) );\n\t\t}\n\t\n\t\tthis.length++;\n\t}\n};\n\nmodule.exports = QRBitBuffer;\n","var Mode = require('./mode');\nvar Polynomial = require('./Polynomial');\nvar math = require('./math');\n\nvar QRMaskPattern = {\n\tPATTERN000 : 0,\n\tPATTERN001 : 1,\n\tPATTERN010 : 2,\n\tPATTERN011 : 3,\n\tPATTERN100 : 4,\n\tPATTERN101 : 5,\n\tPATTERN110 : 6,\n\tPATTERN111 : 7\n};\n\nvar QRUtil = {\n\n PATTERN_POSITION_TABLE : [\n\t [],\n\t [6, 18],\n\t [6, 22],\n\t [6, 26],\n\t [6, 30],\n\t [6, 34],\n\t [6, 22, 38],\n\t [6, 24, 42],\n\t [6, 26, 46],\n\t [6, 28, 50],\n\t [6, 30, 54],\t\t\n\t [6, 32, 58],\n\t [6, 34, 62],\n\t [6, 26, 46, 66],\n\t [6, 26, 48, 70],\n\t [6, 26, 50, 74],\n\t [6, 30, 54, 78],\n\t [6, 30, 56, 82],\n\t [6, 30, 58, 86],\n\t [6, 34, 62, 90],\n\t [6, 28, 50, 72, 94],\n\t [6, 26, 50, 74, 98],\n\t [6, 30, 54, 78, 102],\n\t [6, 28, 54, 80, 106],\n\t [6, 32, 58, 84, 110],\n\t [6, 30, 58, 86, 114],\n\t [6, 34, 62, 90, 118],\n\t [6, 26, 50, 74, 98, 122],\n\t [6, 30, 54, 78, 102, 126],\n\t [6, 26, 52, 78, 104, 130],\n\t [6, 30, 56, 82, 108, 134],\n\t [6, 34, 60, 86, 112, 138],\n\t [6, 30, 58, 86, 114, 142],\n\t [6, 34, 62, 90, 118, 146],\n\t [6, 30, 54, 78, 102, 126, 150],\n\t [6, 24, 50, 76, 102, 128, 154],\n\t [6, 28, 54, 80, 106, 132, 158],\n\t [6, 32, 58, 84, 110, 136, 162],\n\t [6, 26, 54, 82, 110, 138, 166],\n\t [6, 30, 58, 86, 114, 142, 170]\n ],\n\n G15 : (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),\n G18 : (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),\n G15_MASK : (1 << 14) | (1 << 12) | (1 << 10)\t| (1 << 4) | (1 << 1),\n\n getBCHTypeInfo : function(data) {\n\t var d = data << 10;\n\t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n\t\t d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) ) ); \t\n\t }\n\t return ( (data << 10) | d) ^ QRUtil.G15_MASK;\n },\n\n getBCHTypeNumber : function(data) {\n\t var d = data << 12;\n\t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n\t\t d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) ) ); \t\n\t }\n\t return (data << 12) | d;\n },\n\n getBCHDigit : function(data) {\n\n\t var digit = 0;\n\n\t while (data != 0) {\n\t\t digit++;\n\t\t data >>>= 1;\n\t }\n\n\t return digit;\n },\n\n getPatternPosition : function(typeNumber) {\n\t return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n },\n\n getMask : function(maskPattern, i, j) {\n\t \n\t switch (maskPattern) {\n\t\t \n\t case QRMaskPattern.PATTERN000 : return (i + j) % 2 == 0;\n\t case QRMaskPattern.PATTERN001 : return i % 2 == 0;\n\t case QRMaskPattern.PATTERN010 : return j % 3 == 0;\n\t case QRMaskPattern.PATTERN011 : return (i + j) % 3 == 0;\n\t case QRMaskPattern.PATTERN100 : return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0;\n\t case QRMaskPattern.PATTERN101 : return (i * j) % 2 + (i * j) % 3 == 0;\n\t case QRMaskPattern.PATTERN110 : return ( (i * j) % 2 + (i * j) % 3) % 2 == 0;\n\t case QRMaskPattern.PATTERN111 : return ( (i * j) % 3 + (i + j) % 2) % 2 == 0;\n\n\t default :\n\t\t throw new Error(\"bad maskPattern:\" + maskPattern);\n\t }\n },\n\n getErrorCorrectPolynomial : function(errorCorrectLength) {\n\n\t var a = new Polynomial([1], 0);\n\n\t for (var i = 0; i < errorCorrectLength; i++) {\n\t\t a = a.multiply(new Polynomial([1, math.gexp(i)], 0) );\n\t }\n\n\t return a;\n },\n\n getLengthInBits : function(mode, type) {\n\n\t if (1 <= type && type < 10) {\n\n\t\t // 1 - 9\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 10;\n\t\t case Mode.MODE_ALPHA_NUM \t: return 9;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 8;\n\t\t case Mode.MODE_KANJI \t: return 8;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else if (type < 27) {\n\n\t\t // 10 - 26\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 12;\n\t\t case Mode.MODE_ALPHA_NUM \t: return 11;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t case Mode.MODE_KANJI \t: return 10;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else if (type < 41) {\n\n\t\t // 27 - 40\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 14;\n\t\t case Mode.MODE_ALPHA_NUM\t: return 13;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t case Mode.MODE_KANJI \t: return 12;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else {\n\t\t throw new Error(\"type:\" + type);\n\t }\n },\n\n getLostPoint : function(qrCode) {\n\t \n\t var moduleCount = qrCode.getModuleCount();\n\t \n\t var lostPoint = 0;\n\t \n\t // LEVEL1\n\t \n\t for (var row = 0; row < moduleCount; row++) {\n\n\t\t for (var col = 0; col < moduleCount; col++) {\n\n\t\t\t var sameCount = 0;\n\t\t\t var dark = qrCode.isDark(row, col);\n\n\t\t\t\tfor (var r = -1; r <= 1; r++) {\n\n\t\t\t\t if (row + r < 0 || moduleCount <= row + r) {\n\t\t\t\t\t continue;\n\t\t\t\t }\n\n\t\t\t\t for (var c = -1; c <= 1; c++) {\n\n\t\t\t\t\t if (col + c < 0 || moduleCount <= col + c) {\n\t\t\t\t\t\t continue;\n\t\t\t\t\t }\n\n\t\t\t\t\t if (r == 0 && c == 0) {\n\t\t\t\t\t\t continue;\n\t\t\t\t\t }\n\n\t\t\t\t\t if (dark == qrCode.isDark(row + r, col + c) ) {\n\t\t\t\t\t\t sameCount++;\n\t\t\t\t\t }\n\t\t\t\t }\n\t\t\t }\n\n\t\t\t if (sameCount > 5) {\n\t\t\t\t lostPoint += (3 + sameCount - 5);\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL2\n\n\t for (var row = 0; row < moduleCount - 1; row++) {\n\t\t for (var col = 0; col < moduleCount - 1; col++) {\n\t\t\t var count = 0;\n\t\t\t if (qrCode.isDark(row, col ) ) count++;\n\t\t\t if (qrCode.isDark(row + 1, col ) ) count++;\n\t\t\t if (qrCode.isDark(row, col + 1) ) count++;\n\t\t\t if (qrCode.isDark(row + 1, col + 1) ) count++;\n\t\t\t if (count == 0 || count == 4) {\n\t\t\t\t lostPoint += 3;\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL3\n\n\t for (var row = 0; row < moduleCount; row++) {\n\t\t for (var col = 0; col < moduleCount - 6; col++) {\n\t\t\t if (qrCode.isDark(row, col)\n\t\t\t\t\t && !qrCode.isDark(row, col + 1)\n\t\t\t\t\t && qrCode.isDark(row, col + 2)\n\t\t\t\t\t && qrCode.isDark(row, col + 3)\n\t\t\t\t\t && qrCode.isDark(row, col + 4)\n\t\t\t\t\t && !qrCode.isDark(row, col + 5)\n\t\t\t\t\t && qrCode.isDark(row, col + 6) ) {\n\t\t\t\t lostPoint += 40;\n\t\t\t }\n\t\t }\n\t }\n\n\t for (var col = 0; col < moduleCount; col++) {\n\t\t for (var row = 0; row < moduleCount - 6; row++) {\n\t\t\t if (qrCode.isDark(row, col)\n\t\t\t\t\t && !qrCode.isDark(row + 1, col)\n\t\t\t\t\t && qrCode.isDark(row + 2, col)\n\t\t\t\t\t && qrCode.isDark(row + 3, col)\n\t\t\t\t\t && qrCode.isDark(row + 4, col)\n\t\t\t\t\t && !qrCode.isDark(row + 5, col)\n\t\t\t\t\t && qrCode.isDark(row + 6, col) ) {\n\t\t\t\t lostPoint += 40;\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL4\n\t \n\t var darkCount = 0;\n\n\t for (var col = 0; col < moduleCount; col++) {\n\t\t for (var row = 0; row < moduleCount; row++) {\n\t\t\t if (qrCode.isDark(row, col) ) {\n\t\t\t\t darkCount++;\n\t\t\t }\n\t\t }\n\t }\n\t \n\t var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n\t lostPoint += ratio * 10;\n\n\t return lostPoint;\t\t\n }\n};\n\nmodule.exports = QRUtil;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'TextInputDialog',\n propTypes: {\n title: _propTypes2.default.string,\n description: _propTypes2.default.oneOfType([_propTypes2.default.element, _propTypes2.default.string]),\n value: _propTypes2.default.string,\n button: _propTypes2.default.string,\n focus: _propTypes2.default.bool,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n title: \"\",\n value: \"\",\n description: \"\",\n focus: true\n };\n },\n\n componentDidMount: function componentDidMount() {\n if (this.props.focus) {\n // Set the cursor at the end of the text input\n this.refs.textinput.value = this.props.value;\n }\n },\n\n onOk: function onOk() {\n this.props.onFinished(true, this.refs.textinput.value);\n },\n\n onCancel: function onCancel() {\n this.props.onFinished(false);\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_TextInputDialog', onFinished: this.props.onFinished,\n title: this.props.title\n },\n _react2.default.createElement(\n 'form',\n { onSubmit: this.onOk },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_TextInputDialog_label' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'textinput' },\n ' ',\n this.props.description,\n ' '\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { id: 'textinput', ref: 'textinput', className: 'mx_TextInputDialog_input', defaultValue: this.props.value, autoFocus: this.props.focus, size: '64' })\n )\n )\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: this.props.button,\n onPrimaryButtonClick: this.onOk,\n onCancel: this.onCancel })\n );\n }\n}); /*\n Copyright 2015, 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=TextInputDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _reactGeminiScrollbar = require('react-gemini-scrollbar');\n\nvar _reactGeminiScrollbar2 = _interopRequireDefault(_reactGeminiScrollbar);\n\nvar _Resend = require('../../../Resend');\n\nvar _Resend2 = _interopRequireDefault(_Resend);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _cryptodevices = require('../../../cryptodevices');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction DeviceListEntry(props) {\n var userId = props.userId,\n device = props.device;\n\n\n var DeviceVerifyButtons = _index2.default.getComponent('elements.DeviceVerifyButtons');\n\n return _react2.default.createElement(\n 'li',\n null,\n _react2.default.createElement(DeviceVerifyButtons, { device: device, userId: userId }),\n device.deviceId,\n _react2.default.createElement('br', null),\n device.getDisplayName()\n );\n} /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nDeviceListEntry.propTypes = {\n userId: _propTypes2.default.string.isRequired,\n\n // deviceinfo\n device: _propTypes2.default.object.isRequired\n};\n\nfunction UserUnknownDeviceList(props) {\n var userId = props.userId,\n userDevices = props.userDevices;\n\n\n var deviceListEntries = (0, _keys2.default)(userDevices).map(function (deviceId) {\n return _react2.default.createElement(DeviceListEntry, { key: deviceId, userId: userId,\n device: userDevices[deviceId] });\n });\n\n return _react2.default.createElement(\n 'ul',\n { className: 'mx_UnknownDeviceDialog_deviceList' },\n deviceListEntries\n );\n}\n\nUserUnknownDeviceList.propTypes = {\n userId: _propTypes2.default.string.isRequired,\n\n // map from deviceid -> deviceinfo\n userDevices: _propTypes2.default.object.isRequired\n};\n\nfunction UnknownDeviceList(props) {\n var devices = props.devices;\n\n\n var userListEntries = (0, _keys2.default)(devices).map(function (userId) {\n return _react2.default.createElement(\n 'li',\n { key: userId },\n _react2.default.createElement(\n 'p',\n null,\n userId,\n ':'\n ),\n _react2.default.createElement(UserUnknownDeviceList, { userId: userId, userDevices: devices[userId] })\n );\n });\n\n return _react2.default.createElement(\n 'ul',\n null,\n userListEntries\n );\n}\n\nUnknownDeviceList.propTypes = {\n // map from userid -> deviceid -> deviceinfo\n devices: _propTypes2.default.object.isRequired\n};\n\nexports.default = _react2.default.createClass({\n displayName: 'UnknownDeviceDialog',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired,\n\n // map from userid -> deviceid -> deviceinfo or null if devices are not yet loaded\n devices: _propTypes2.default.object,\n\n onFinished: _propTypes2.default.func.isRequired,\n\n // Label for the button that marks all devices known and tries the send again\n sendAnywayLabel: _propTypes2.default.string.isRequired,\n\n // Label for the button that to send the event if you've verified all devices\n sendLabel: _propTypes2.default.string.isRequired,\n\n // function to retry the request once all devices are verified / known\n onSend: _propTypes2.default.func.isRequired\n },\n\n componentWillMount: function componentWillMount() {\n _MatrixClientPeg2.default.get().on(\"deviceVerificationChanged\", this._onDeviceVerificationChanged);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener(\"deviceVerificationChanged\", this._onDeviceVerificationChanged);\n }\n },\n\n _onDeviceVerificationChanged: function _onDeviceVerificationChanged(userId, deviceId, deviceInfo) {\n if (this.props.devices[userId] && this.props.devices[userId][deviceId]) {\n // XXX: Mutating props :/\n this.props.devices[userId][deviceId] = deviceInfo;\n this.forceUpdate();\n }\n },\n\n _onDismissClicked: function _onDismissClicked() {\n this.props.onFinished();\n },\n\n _onSendAnywayClicked: function _onSendAnywayClicked() {\n (0, _cryptodevices.markAllDevicesKnown)(_MatrixClientPeg2.default.get(), this.props.devices);\n\n this.props.onFinished();\n this.props.onSend();\n },\n\n _onSendClicked: function _onSendClicked() {\n this.props.onFinished();\n this.props.onSend();\n },\n\n render: function render() {\n var _this = this;\n\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n if (this.props.devices === null) {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Spinner, null);\n }\n\n var warning = void 0;\n if (_SettingsStore2.default.getValue(\"blacklistUnverifiedDevices\", this.props.room.roomId)) {\n warning = _react2.default.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)(\"You are currently blacklisting unverified devices; to send \" + \"messages to these devices you must verify them.\")\n );\n } else {\n warning = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"We recommend you go through the verification process \" + \"for each device to confirm they belong to their legitimate owner, \" + \"but you can resend the message without verifying if you prefer.\")\n )\n );\n }\n\n var haveUnknownDevices = false;\n (0, _keys2.default)(this.props.devices).forEach(function (userId) {\n (0, _keys2.default)(_this.props.devices[userId]).map(function (deviceId) {\n var device = _this.props.devices[userId][deviceId];\n if (device.isUnverified() && !device.isKnown()) {\n haveUnknownDevices = true;\n }\n });\n });\n var sendButtonOnClick = haveUnknownDevices ? this._onSendAnywayClicked : this._onSendClicked;\n var sendButtonLabel = haveUnknownDevices ? this.props.sendAnywayLabel : this.props.sendAnywayLabel;\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_UnknownDeviceDialog',\n onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('Room contains unknown devices'),\n contentId: 'mx_Dialog_content'\n },\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: false, className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)('\"%(RoomName)s\" contains devices that you haven\\'t seen before.', { RoomName: this.props.room.name })\n ),\n warning,\n (0, _languageHandler._t)(\"Unknown devices\"),\n ':',\n _react2.default.createElement(UnknownDeviceList, { devices: this.props.devices })\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: sendButtonLabel,\n onPrimaryButtonClick: sendButtonOnClick,\n onCancel: this._onDismissClicked })\n );\n // XXX: do we want to give the user the option to enable blacklistUnverifiedDevices for this room (or globally) at this point?\n // It feels like confused users will likely turn it on and then disappear in a cloud of UISIs...\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=UnknownDeviceDialog.js.map","/**\n * gemini-scrollbar\n * @version 1.4.3\n * @link http://noeldelgado.github.io/gemini-scrollbar/\n * @license MIT\n */\n(function() {\n var SCROLLBAR_WIDTH, DONT_CREATE_GEMINI, CLASSNAMES;\n\n CLASSNAMES = {\n element: 'gm-scrollbar-container',\n verticalScrollbar: 'gm-scrollbar -vertical',\n horizontalScrollbar: 'gm-scrollbar -horizontal',\n thumb: 'thumb',\n view: 'gm-scroll-view',\n autoshow: 'gm-autoshow',\n disable: 'gm-scrollbar-disable-selection',\n prevented: 'gm-prevented',\n resizeTrigger: 'gm-resize-trigger',\n };\n\n function getScrollbarWidth() {\n var e = document.createElement('div'), sw;\n e.style.position = 'absolute';\n e.style.top = '-9999px';\n e.style.width = '100px';\n e.style.height = '100px';\n e.style.overflow = 'scroll';\n e.style.msOverflowStyle = 'scrollbar';\n document.body.appendChild(e);\n sw = (e.offsetWidth - e.clientWidth);\n document.body.removeChild(e);\n return sw;\n }\n\n function addClass(el, classNames) {\n if (el.classList) {\n return classNames.forEach(function(cl) {\n el.classList.add(cl);\n });\n }\n el.className += ' ' + classNames.join(' ');\n }\n\n function removeClass(el, classNames) {\n if (el.classList) {\n return classNames.forEach(function(cl) {\n el.classList.remove(cl);\n });\n }\n el.className = el.className.replace(new RegExp('(^|\\\\b)' + classNames.join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n\n /* Copyright (c) 2015 Lucas Wiener\n * https://github.com/wnr/element-resize-detector\n */\n function isIE() {\n var agent = navigator.userAgent.toLowerCase();\n return agent.indexOf(\"msie\") !== -1 || agent.indexOf(\"trident\") !== -1 || agent.indexOf(\" edge/\") !== -1;\n }\n\n function GeminiScrollbar(config) {\n this.element = null;\n this.autoshow = false;\n this.createElements = true;\n this.forceGemini = false;\n this.onResize = null;\n\n Object.keys(config || {}).forEach(function (propertyName) {\n this[propertyName] = config[propertyName];\n }, this);\n\n SCROLLBAR_WIDTH = getScrollbarWidth();\n DONT_CREATE_GEMINI = ((SCROLLBAR_WIDTH === 0) && (this.forceGemini === false));\n\n this._cache = {events: {}};\n this._created = false;\n this._cursorDown = false;\n this._prevPageX = 0;\n this._prevPageY = 0;\n\n this._document = null;\n this._viewElement = this.element;\n this._scrollbarVerticalElement = null;\n this._thumbVerticalElement = null;\n this._scrollbarHorizontalElement = null;\n this._scrollbarHorizontalElement = null;\n }\n\n GeminiScrollbar.prototype.create = function create() {\n if (DONT_CREATE_GEMINI) {\n addClass(this.element, [CLASSNAMES.prevented]);\n\n if (this.onResize) {\n // still need a resize trigger if we have an onResize callback, which\n // also means we need a separate _viewElement to do the scrolling.\n if (this.createElements === true) {\n this._viewElement = document.createElement('div');\n while(this.element.childNodes.length > 0) {\n this._viewElement.appendChild(this.element.childNodes[0]);\n }\n this.element.appendChild(this._viewElement);\n } else {\n this._viewElement = this.element.querySelector('.' + CLASSNAMES.view);\n }\n addClass(this.element, [CLASSNAMES.element]);\n addClass(this._viewElement, [CLASSNAMES.view]);\n this._createResizeTrigger();\n }\n\n return this;\n }\n\n if (this._created === true) {\n console.warn('calling on a already-created object');\n return this;\n }\n\n if (this.autoshow) {\n addClass(this.element, [CLASSNAMES.autoshow]);\n }\n\n this._document = document;\n\n if (this.createElements === true) {\n this._viewElement = document.createElement('div');\n this._scrollbarVerticalElement = document.createElement('div');\n this._thumbVerticalElement = document.createElement('div');\n this._scrollbarHorizontalElement = document.createElement('div');\n this._thumbHorizontalElement = document.createElement('div');\n while(this.element.childNodes.length > 0) {\n this._viewElement.appendChild(this.element.childNodes[0]);\n }\n\n this._scrollbarVerticalElement.appendChild(this._thumbVerticalElement);\n this._scrollbarHorizontalElement.appendChild(this._thumbHorizontalElement);\n this.element.appendChild(this._scrollbarVerticalElement);\n this.element.appendChild(this._scrollbarHorizontalElement);\n this.element.appendChild(this._viewElement);\n } else {\n this._viewElement = this.element.querySelector('.' + CLASSNAMES.view);\n this._scrollbarVerticalElement = this.element.querySelector('.' + CLASSNAMES.verticalScrollbar.split(' ').join('.'));\n this._thumbVerticalElement = this._scrollbarVerticalElement.querySelector('.' + CLASSNAMES.thumb);\n this._scrollbarHorizontalElement = this.element.querySelector('.' + CLASSNAMES.horizontalScrollbar.split(' ').join('.'));\n this._thumbHorizontalElement = this._scrollbarHorizontalElement.querySelector('.' + CLASSNAMES.thumb);\n }\n\n addClass(this.element, [CLASSNAMES.element]);\n addClass(this._viewElement, [CLASSNAMES.view]);\n addClass(this._scrollbarVerticalElement, CLASSNAMES.verticalScrollbar.split(/\\s/));\n addClass(this._scrollbarHorizontalElement, CLASSNAMES.horizontalScrollbar.split(/\\s/));\n addClass(this._thumbVerticalElement, [CLASSNAMES.thumb]);\n addClass(this._thumbHorizontalElement, [CLASSNAMES.thumb]);\n\n this._scrollbarVerticalElement.style.display = '';\n this._scrollbarHorizontalElement.style.display = '';\n\n this._createResizeTrigger();\n\n this._created = true;\n\n return this._bindEvents().update();\n };\n\n GeminiScrollbar.prototype._createResizeTrigger = function createResizeTrigger() {\n // We need to arrange for self.scrollbar.update to be called whenever\n // the DOM is changed resulting in a size-change for our div. To make\n // this happen, we use a technique described here:\n // http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/.\n //\n // The idea is that we create an <object> element in our div, which we\n // arrange to have the same size as that div. The <object> element\n // contains a Window object, to which we can attach an onresize\n // handler.\n //\n // (React appears to get very confused by the object (we end up with\n // Chrome windows which only show half of the text they are supposed\n // to), so we always do this manually.)\n\n var obj = document.createElement('object');\n addClass(obj, [CLASSNAMES.resizeTrigger]);\n obj.type = 'text/html';\n var resizeHandler = this._resizeHandler.bind(this);\n obj.onload = function () {\n var win = obj.contentDocument.defaultView;\n win.addEventListener('resize', resizeHandler);\n };\n\n //IE: Does not like that this happens before, even if it is also added after.\n if (!isIE()) {\n obj.data = 'about:blank';\n }\n\n this.element.appendChild(obj);\n\n //IE: This must occur after adding the object to the DOM.\n if (isIE()) {\n obj.data = 'about:blank';\n }\n\n this._resizeTriggerElement = obj;\n };\n\n GeminiScrollbar.prototype.update = function update() {\n if (DONT_CREATE_GEMINI) {\n return this;\n }\n\n if (this._created === false) {\n console.warn('calling on a not-yet-created object');\n return this;\n }\n\n var heightPercentage, widthPercentage;\n\n this._viewElement.style.width = ((this.element.offsetWidth + SCROLLBAR_WIDTH).toString() + 'px');\n this._viewElement.style.height = ((this.element.offsetHeight + SCROLLBAR_WIDTH).toString() + 'px');\n\n heightPercentage = (this._viewElement.clientHeight * 100 / this._viewElement.scrollHeight);\n widthPercentage = (this._viewElement.clientWidth * 100 / this._viewElement.scrollWidth);\n\n this._thumbVerticalElement.style.height = (heightPercentage < 100) ? (heightPercentage + '%') : '';\n this._thumbHorizontalElement.style.width = (widthPercentage < 100) ? (widthPercentage + '%') : '';\n\n this._scrollHandler();\n\n return this;\n };\n\n GeminiScrollbar.prototype.destroy = function destroy() {\n if (this._resizeTriggerElement) {\n this.element.removeChild(this._resizeTriggerElement);\n this._resizeTriggerElement = null;\n }\n\n if (DONT_CREATE_GEMINI) {\n return this;\n }\n\n if (this._created === false) {\n console.warn('calling on a not-yet-created object');\n return this;\n }\n\n this._unbinEvents();\n\n removeClass(this.element, [CLASSNAMES.element, CLASSNAMES.autoshow]);\n\n if (this.createElements === true) {\n this.element.removeChild(this._scrollbarVerticalElement);\n this.element.removeChild(this._scrollbarHorizontalElement);\n while(this._viewElement.childNodes.length > 0) {\n this.element.appendChild(this._viewElement.childNodes[0]);\n }\n this.element.removeChild(this._viewElement);\n } else {\n this._viewElement.style.width = '';\n this._viewElement.style.height = '';\n this._scrollbarVerticalElement.style.display = 'none';\n this._scrollbarHorizontalElement.style.display = 'none';\n }\n\n this._created = false;\n this._document = null;\n\n return null;\n };\n\n GeminiScrollbar.prototype.getViewElement = function getViewElement() {\n return this._viewElement;\n };\n\n GeminiScrollbar.prototype._bindEvents = function _bindEvents() {\n this._cache.events.scrollHandler = this._scrollHandler.bind(this);\n this._cache.events.clickVerticalTrackHandler = this._clickVerticalTrackHandler.bind(this);\n this._cache.events.clickHorizontalTrackHandler = this._clickHorizontalTrackHandler.bind(this);\n this._cache.events.clickVerticalThumbHandler = this._clickVerticalThumbHandler.bind(this);\n this._cache.events.clickHorizontalThumbHandler = this._clickHorizontalThumbHandler.bind(this);\n this._cache.events.mouseUpDocumentHandler = this._mouseUpDocumentHandler.bind(this);\n this._cache.events.mouseMoveDocumentHandler = this._mouseMoveDocumentHandler.bind(this);\n\n this._viewElement.addEventListener('scroll', this._cache.events.scrollHandler);\n this._scrollbarVerticalElement.addEventListener('mousedown', this._cache.events.clickVerticalTrackHandler);\n this._scrollbarHorizontalElement.addEventListener('mousedown', this._cache.events.clickHorizontalTrackHandler);\n this._thumbVerticalElement.addEventListener('mousedown', this._cache.events.clickVerticalThumbHandler);\n this._thumbHorizontalElement.addEventListener('mousedown', this._cache.events.clickHorizontalThumbHandler);\n this._document.addEventListener('mouseup', this._cache.events.mouseUpDocumentHandler);\n\n return this;\n };\n\n GeminiScrollbar.prototype._unbinEvents = function _unbinEvents() {\n this._viewElement.removeEventListener('scroll', this._cache.events.scrollHandler);\n this._scrollbarVerticalElement.removeEventListener('mousedown', this._cache.events.clickVerticalTrackHandler);\n this._scrollbarHorizontalElement.removeEventListener('mousedown', this._cache.events.clickHorizontalTrackHandler);\n this._thumbVerticalElement.removeEventListener('mousedown', this._cache.events.clickVerticalThumbHandler);\n this._thumbHorizontalElement.removeEventListener('mousedown', this._cache.events.clickHorizontalThumbHandler);\n this._document.removeEventListener('mouseup', this._cache.events.mouseUpDocumentHandler);\n this._document.removeEventListener('mousemove', this._cache.events.mouseMoveDocumentHandler);\n\n return this;\n };\n\n GeminiScrollbar.prototype._scrollHandler = function _scrollHandler() {\n var viewElement, x, y;\n\n viewElement = this._viewElement;\n y = ((viewElement.scrollTop * 100) / viewElement.clientHeight);\n x = ((viewElement.scrollLeft * 100) / viewElement.clientWidth);\n\n this._thumbVerticalElement.style.msTransform = 'translateY(' + y + '%)';\n this._thumbVerticalElement.style.webkitTransform = 'translateY(' + y + '%)';\n this._thumbVerticalElement.style.transform = 'translateY(' + y + '%)';\n\n this._thumbHorizontalElement.style.msTransform = 'translateX(' + x + '%)';\n this._thumbHorizontalElement.style.webkitTransform = 'translateX(' + x + '%)';\n this._thumbHorizontalElement.style.transform = 'translateX(' + x + '%)';\n };\n\n GeminiScrollbar.prototype._resizeHandler = function _resizeHandler() {\n this.update();\n if (this.onResize) {\n this.onResize();\n }\n };\n\n GeminiScrollbar.prototype._clickVerticalTrackHandler = function _clickVerticalTrackHandler(e) {\n var offset = Math.abs(e.target.getBoundingClientRect().top - e.clientY)\n , thumbHalf = (this._thumbVerticalElement.offsetHeight / 2)\n , thumbPositionPercentage = ((offset - thumbHalf) * 100 / this._scrollbarVerticalElement.offsetHeight);\n this._viewElement.scrollTop = (thumbPositionPercentage * this._viewElement.scrollHeight / 100);\n };\n\n GeminiScrollbar.prototype._clickHorizontalTrackHandler = function _clickHorizontalTrackHandler(e) {\n var offset = Math.abs(e.target.getBoundingClientRect().left - e.clientX)\n , thumbHalf = (this._thumbHorizontalElement.offsetWidth / 2)\n , thumbPositionPercentage = ((offset - thumbHalf) * 100 / this._scrollbarHorizontalElement.offsetWidth);\n this._viewElement.scrollLeft = (thumbPositionPercentage * this._viewElement.scrollWidth / 100);\n };\n\n GeminiScrollbar.prototype._clickVerticalThumbHandler = function _clickVerticalThumbHandler(e) {\n this._startDrag(e);\n this._prevPageY = (e.currentTarget.offsetHeight - (e.clientY - e.currentTarget.getBoundingClientRect().top));\n };\n\n GeminiScrollbar.prototype._clickHorizontalThumbHandler = function _clickHorizontalThumbHandler(e) {\n this._startDrag(e);\n this._prevPageX = (e.currentTarget.offsetWidth - (e.clientX - e.currentTarget.getBoundingClientRect().left));\n };\n\n GeminiScrollbar.prototype._startDrag = function _startDrag(e) {\n e.stopImmediatePropagation();\n this._cursorDown = true;\n addClass(document.body, [CLASSNAMES.disable]);\n this._document.addEventListener('mousemove', this._cache.events.mouseMoveDocumentHandler);\n this._document.onselectstart = function() {return false;};\n };\n\n GeminiScrollbar.prototype._mouseUpDocumentHandler = function _mouseUpDocumentHandler() {\n this._cursorDown = false;\n this._prevPageX = this._prevPageY = 0;\n removeClass(document.body, [CLASSNAMES.disable]);\n this._document.removeEventListener('mousemove', this._cache.events.mouseMoveDocumentHandler);\n this._document.onselectstart = null;\n };\n\n GeminiScrollbar.prototype._mouseMoveDocumentHandler = function _mouseMoveDocumentHandler(e) {\n if (this._cursorDown === false) {return;}\n\n var offset, thumbClickPosition, thumbPositionPercentage;\n\n if (this._prevPageY) {\n offset = ((this._scrollbarVerticalElement.getBoundingClientRect().top - e.clientY) * -1);\n thumbClickPosition = (this._thumbVerticalElement.offsetHeight - this._prevPageY);\n thumbPositionPercentage = ((offset - thumbClickPosition) * 100 / this._scrollbarVerticalElement.offsetHeight);\n this._viewElement.scrollTop = (thumbPositionPercentage * this._viewElement.scrollHeight / 100);\n return void 0;\n }\n\n if (this._prevPageX) {\n offset = ((this._scrollbarHorizontalElement.getBoundingClientRect().left - e.clientX) * -1);\n thumbClickPosition = (this._thumbHorizontalElement.offsetWidth - this._prevPageX);\n thumbPositionPercentage = ((offset - thumbClickPosition) * 100 / this._scrollbarHorizontalElement.offsetWidth);\n this._viewElement.scrollLeft = (thumbPositionPercentage * this._viewElement.scrollWidth / 100);\n }\n };\n\n if (typeof exports === 'object') {\n module.exports = GeminiScrollbar;\n } else {\n window.GeminiScrollbar = GeminiScrollbar;\n }\n})();\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _DirectoryUtils = require('../../../utils/DirectoryUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DEFAULT_ICON_URL = \"img/network-matrix.svg\"; /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar NetworkDropdown = function (_React$Component) {\n (0, _inherits3.default)(NetworkDropdown, _React$Component);\n\n function NetworkDropdown(props) {\n (0, _classCallCheck3.default)(this, NetworkDropdown);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (NetworkDropdown.__proto__ || (0, _getPrototypeOf2.default)(NetworkDropdown)).call(this, props));\n\n _this.dropdownRootElement = null;\n _this.ignoreEvent = null;\n\n _this.onInputClick = _this.onInputClick.bind(_this);\n _this.onRootClick = _this.onRootClick.bind(_this);\n _this.onDocumentClick = _this.onDocumentClick.bind(_this);\n _this.onMenuOptionClick = _this.onMenuOptionClick.bind(_this);\n _this.onInputKeyUp = _this.onInputKeyUp.bind(_this);\n _this.collectRoot = _this.collectRoot.bind(_this);\n _this.collectInputTextBox = _this.collectInputTextBox.bind(_this);\n\n _this.inputTextBox = null;\n\n var server = _MatrixClientPeg2.default.getHomeServerName();\n _this.state = {\n expanded: false,\n selectedServer: server,\n selectedInstance: null,\n includeAllNetworks: false\n };\n return _this;\n }\n\n (0, _createClass3.default)(NetworkDropdown, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n // Listen for all clicks on the document so we can close the\n // menu when the user clicks somewhere else\n document.addEventListener('click', this.onDocumentClick, false);\n\n // fire this now so the defaults can be set up\n this.props.onOptionChange(this.state.selectedServer, this.state.selectedInstance, this.state.includeAllNetworks);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n document.removeEventListener('click', this.onDocumentClick, false);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (this.state.expanded && this.inputTextBox) {\n this.inputTextBox.focus();\n }\n }\n }, {\n key: 'onDocumentClick',\n value: function onDocumentClick(ev) {\n // Close the dropdown if the user clicks anywhere that isn't\n // within our root element\n if (ev !== this.ignoreEvent) {\n this.setState({\n expanded: false\n });\n }\n }\n }, {\n key: 'onRootClick',\n value: function onRootClick(ev) {\n // This captures any clicks that happen within our elements,\n // such that we can then ignore them when they're seen by the\n // click listener on the document handler, ie. not close the\n // dropdown immediately after opening it.\n // NB. We can't just stopPropagation() because then the event\n // doesn't reach the React onClick().\n this.ignoreEvent = ev;\n }\n }, {\n key: 'onInputClick',\n value: function onInputClick(ev) {\n this.setState({\n expanded: !this.state.expanded\n });\n ev.preventDefault();\n }\n }, {\n key: 'onMenuOptionClick',\n value: function onMenuOptionClick(server, instance, includeAll) {\n this.setState({\n expanded: false,\n selectedServer: server,\n selectedInstanceId: instance ? instance.instance_id : null,\n includeAll: includeAll\n });\n this.props.onOptionChange(server, instance ? instance.instance_id : null, includeAll);\n }\n }, {\n key: 'onInputKeyUp',\n value: function onInputKeyUp(e) {\n if (e.key == 'Enter') {\n this.setState({\n expanded: false,\n selectedServer: e.target.value,\n selectedNetwork: null\n });\n this.props.onOptionChange(e.target.value, null);\n }\n }\n }, {\n key: 'collectRoot',\n value: function collectRoot(e) {\n if (this.dropdownRootElement) {\n this.dropdownRootElement.removeEventListener('click', this.onRootClick, false);\n }\n if (e) {\n e.addEventListener('click', this.onRootClick, false);\n }\n this.dropdownRootElement = e;\n }\n }, {\n key: 'collectInputTextBox',\n value: function collectInputTextBox(e) {\n this.inputTextBox = e;\n }\n }, {\n key: '_getMenuOptions',\n value: function _getMenuOptions() {\n var options = [];\n\n var servers = [];\n if (this.props.config.servers) {\n servers = servers.concat(this.props.config.servers);\n }\n\n if (servers.indexOf(_MatrixClientPeg2.default.getHomeServerName()) == -1) {\n servers.unshift(_MatrixClientPeg2.default.getHomeServerName());\n }\n\n // For our own HS, we can use the instance_ids given in the third party protocols\n // response to get the server to filter the room list by network for us.\n // We can't get thirdparty protocols for remote server yet though, so for those\n // we can only show the default room list.\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(servers), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var server = _step.value;\n\n options.push(this._makeMenuOption(server, null, true));\n if (server == _MatrixClientPeg2.default.getHomeServerName()) {\n options.push(this._makeMenuOption(server, null, false));\n if (this.props.protocols) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(this.props.protocols)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var proto = _step2.value;\n\n if (!this.props.protocols[proto].instances) continue;\n\n var sortedInstances = this.props.protocols[proto].instances;\n sortedInstances.sort(function (x, y) {\n var a = x.desc;\n var b = y.desc;\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n } else {\n return 0;\n }\n });\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(sortedInstances), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var instance = _step3.value;\n\n if (!instance.instance_id) continue;\n options.push(this._makeMenuOption(server, instance, false));\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return options;\n }\n }, {\n key: '_makeMenuOption',\n value: function _makeMenuOption(server, instance, includeAll, handleClicks) {\n if (handleClicks === undefined) handleClicks = true;\n\n var icon = void 0;\n var name = void 0;\n var span_class = void 0;\n var key = void 0;\n\n if (!instance && includeAll) {\n key = server;\n name = server;\n span_class = 'mx_NetworkDropdown_menu_all';\n } else if (!instance) {\n key = server + '_all';\n name = 'Matrix';\n icon = _react2.default.createElement('img', { src: 'img/network-matrix.svg' });\n span_class = 'mx_NetworkDropdown_menu_network';\n } else {\n key = server + '_inst_' + instance.instance_id;\n var imgUrl = instance.icon ? _MatrixClientPeg2.default.get().mxcUrlToHttp(instance.icon, 25, 25, 'crop', true) : DEFAULT_ICON_URL;\n icon = _react2.default.createElement('img', { src: imgUrl });\n name = instance.desc;\n span_class = 'mx_NetworkDropdown_menu_network';\n }\n\n var click_handler = handleClicks ? this.onMenuOptionClick.bind(this, server, instance, includeAll) : null;\n\n return _react2.default.createElement(\n 'div',\n { key: key, className: 'mx_NetworkDropdown_networkoption', onClick: click_handler },\n icon,\n _react2.default.createElement(\n 'span',\n { className: 'mx_NetworkDropdown_menu_network' },\n name\n )\n );\n }\n }, {\n key: 'render',\n value: function render() {\n var current_value = void 0;\n\n var menu = void 0;\n if (this.state.expanded) {\n var menu_options = this._getMenuOptions();\n menu = _react2.default.createElement(\n 'div',\n { className: 'mx_NetworkDropdown_menu' },\n menu_options\n );\n current_value = _react2.default.createElement('input', { type: 'text', className: 'mx_NetworkDropdown_networkoption',\n ref: this.collectInputTextBox, onKeyUp: this.onInputKeyUp,\n placeholder: 'matrix.org' // 'matrix.org' as an example of an HS name\n });\n } else {\n var instance = (0, _DirectoryUtils.instanceForInstanceId)(this.props.protocols, this.state.selectedInstanceId);\n current_value = this._makeMenuOption(this.state.selectedServer, instance, this.state.includeAll, false);\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_NetworkDropdown', ref: this.collectRoot },\n _react2.default.createElement(\n 'div',\n { className: 'mx_NetworkDropdown_input', onClick: this.onInputClick },\n current_value,\n _react2.default.createElement('span', { className: 'mx_NetworkDropdown_arrow' }),\n menu\n )\n );\n }\n }]);\n return NetworkDropdown;\n}(_react2.default.Component);\n\nexports.default = NetworkDropdown;\n\n\nNetworkDropdown.propTypes = {\n onOptionChange: _react2.default.PropTypes.func.isRequired,\n protocols: _react2.default.PropTypes.object,\n // The room directory config. May have a 'servers' key that is a list of server names to include in the dropdown\n config: _react2.default.PropTypes.object\n};\n\nNetworkDropdown.defaultProps = {\n protocols: {},\n config: {}\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=NetworkDropdown.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _AccessibleButton = require('./AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Analytics = require('../../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'RoleButton',\n\n propTypes: {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool,\n action: _propTypes2.default.string.isRequired,\n mouseOverAction: _propTypes2.default.string,\n label: _propTypes2.default.string.isRequired,\n iconPath: _propTypes2.default.string.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n size: \"25\",\n tooltip: false\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n showTooltip: false\n };\n },\n\n _onClick: function _onClick(ev) {\n ev.stopPropagation();\n _Analytics2.default.trackEvent('Action Button', 'click', this.props.action);\n _dispatcher2.default.dispatch({ action: this.props.action });\n },\n\n _onMouseEnter: function _onMouseEnter() {\n if (this.props.tooltip) this.setState({ showTooltip: true });\n if (this.props.mouseOverAction) {\n _dispatcher2.default.dispatch({ action: this.props.mouseOverAction });\n }\n },\n\n _onMouseLeave: function _onMouseLeave() {\n this.setState({ showTooltip: false });\n },\n\n render: function render() {\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n\n var tooltip = void 0;\n if (this.state.showTooltip) {\n var RoomTooltip = _index2.default.getComponent(\"rooms.RoomTooltip\");\n tooltip = _react2.default.createElement(RoomTooltip, { className: 'mx_RoleButton_tooltip', label: this.props.label });\n }\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoleButton',\n onClick: this._onClick,\n onMouseEnter: this._onMouseEnter,\n onMouseLeave: this._onMouseLeave,\n 'aria-label': this.props.label\n },\n _react2.default.createElement(TintableSvg, { src: this.props.iconPath, width: this.props.size, height: this.props.size }),\n tooltip\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=ActionButton.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _UserAddress = require('../../../UserAddress');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'AddressSelector',\n\n propTypes: {\n onSelected: _propTypes2.default.func.isRequired,\n\n // List of the addresses to display\n addressList: _propTypes2.default.arrayOf(_UserAddress.UserAddressType).isRequired,\n // Whether to show the address on the address tiles\n showAddress: _propTypes2.default.bool,\n truncateAt: _propTypes2.default.number.isRequired,\n selected: _propTypes2.default.number,\n\n // Element to put as a header on top of the list\n header: _propTypes2.default.node\n },\n\n getInitialState: function getInitialState() {\n return {\n selected: this.props.selected === undefined ? 0 : this.props.selected,\n hover: false\n };\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(props) {\n // Make sure the selected item isn't outside the list bounds\n var selected = this.state.selected;\n var maxSelected = this._maxSelected(props.addressList);\n if (selected > maxSelected) {\n this.setState({ selected: maxSelected });\n }\n },\n\n componentDidUpdate: function componentDidUpdate() {\n // As the user scrolls with the arrow keys keep the selected item\n // at the top of the window.\n if (this.scrollElement && this.props.addressList.length > 0 && !this.state.hover) {\n var elementHeight = this.addressListElement.getBoundingClientRect().height;\n this.scrollElement.scrollTop = this.state.selected * elementHeight - elementHeight;\n }\n },\n\n moveSelectionTop: function moveSelectionTop() {\n if (this.state.selected > 0) {\n this.setState({\n selected: 0,\n hover: false\n });\n }\n },\n\n moveSelectionUp: function moveSelectionUp() {\n if (this.state.selected > 0) {\n this.setState({\n selected: this.state.selected - 1,\n hover: false\n });\n }\n },\n\n moveSelectionDown: function moveSelectionDown() {\n if (this.state.selected < this._maxSelected(this.props.addressList)) {\n this.setState({\n selected: this.state.selected + 1,\n hover: false\n });\n }\n },\n\n chooseSelection: function chooseSelection() {\n this.selectAddress(this.state.selected);\n },\n\n onClick: function onClick(index) {\n this.selectAddress(index);\n },\n\n onMouseEnter: function onMouseEnter(index) {\n this.setState({\n selected: index,\n hover: true\n });\n },\n\n onMouseLeave: function onMouseLeave() {\n this.setState({ hover: false });\n },\n\n selectAddress: function selectAddress(index) {\n // Only try to select an address if one exists\n if (this.props.addressList.length !== 0) {\n this.props.onSelected(index);\n this.setState({ hover: false });\n }\n },\n\n createAddressListTiles: function createAddressListTiles() {\n var _this = this;\n\n var self = this;\n var AddressTile = _index2.default.getComponent(\"elements.AddressTile\");\n var maxSelected = this._maxSelected(this.props.addressList);\n var addressList = [];\n\n // Only create the address elements if there are address\n if (this.props.addressList.length > 0) {\n for (var i = 0; i <= maxSelected; i++) {\n var classes = (0, _classnames2.default)({\n \"mx_AddressSelector_addressListElement\": true,\n \"mx_AddressSelector_selected\": this.state.selected === i\n });\n\n // NOTE: Defaulting to \"vector\" as the network, until the network backend stuff is done.\n // Saving the addressListElement so we can use it to work out, in the componentDidUpdate\n // method, how far to scroll when using the arrow keys\n addressList.push(_react2.default.createElement(\n 'div',\n {\n className: classes,\n onClick: this.onClick.bind(this, i),\n onMouseEnter: this.onMouseEnter.bind(this, i),\n onMouseLeave: this.onMouseLeave,\n key: this.props.addressList[i].addressType + \"/\" + this.props.addressList[i].address,\n ref: function ref(_ref) {\n _this.addressListElement = _ref;\n }\n },\n _react2.default.createElement(AddressTile, {\n address: this.props.addressList[i],\n showAddress: this.props.showAddress,\n justified: true,\n networkName: 'vector',\n networkUrl: 'img/search-icon-vector.svg'\n })\n ));\n }\n }\n return addressList;\n },\n\n _maxSelected: function _maxSelected(list) {\n var listSize = list.length === 0 ? 0 : list.length - 1;\n var maxSelected = listSize > this.props.truncateAt - 1 ? this.props.truncateAt - 1 : listSize;\n return maxSelected;\n },\n\n render: function render() {\n var _this2 = this;\n\n var classes = (0, _classnames2.default)({\n \"mx_AddressSelector\": true,\n \"mx_AddressSelector_empty\": this.props.addressList.length === 0\n });\n\n return _react2.default.createElement(\n 'div',\n { className: classes, ref: function ref(_ref2) {\n _this2.scrollElement = _ref2;\n } },\n this.props.header,\n this.createAddressListTiles()\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=AddressSelector.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _UserAddress = require('../../../UserAddress.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'AddressTile',\n\n propTypes: {\n address: _UserAddress.UserAddressType.isRequired,\n canDismiss: _propTypes2.default.bool,\n onDismissed: _propTypes2.default.func,\n justified: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n canDismiss: false,\n onDismissed: function onDismissed() {}, // NOP\n justified: false\n };\n },\n\n render: function render() {\n var address = this.props.address;\n var name = address.displayName || address.address;\n\n var imgUrls = [];\n var isMatrixAddress = ['mx-user-id', 'mx-room-id'].includes(address.addressType);\n\n if (isMatrixAddress && address.avatarMxc) {\n imgUrls.push(_MatrixClientPeg2.default.get().mxcUrlToHttp(address.avatarMxc, 25, 25, 'crop'));\n } else if (address.addressType === 'email') {\n imgUrls.push('img/icon-email-user.svg');\n }\n\n // Removing networks for now as they're not really supported\n /*\n var network;\n if (this.props.networkUrl !== \"\") {\n network = (\n <div className=\"mx_AddressTile_network\">\n <BaseAvatar width={25} height={25} name={this.props.networkName} title=\"Riot\" url={this.props.networkUrl} />\n </div>\n );\n }\n */\n\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n\n var nameClasses = (0, _classnames2.default)({\n \"mx_AddressTile_name\": true,\n \"mx_AddressTile_justified\": this.props.justified\n });\n\n var info = void 0;\n var error = false;\n if (isMatrixAddress && address.isKnown) {\n var idClasses = (0, _classnames2.default)({\n \"mx_AddressTile_id\": true,\n \"mx_AddressTile_justified\": this.props.justified\n });\n\n info = _react2.default.createElement(\n 'div',\n { className: 'mx_AddressTile_mx' },\n _react2.default.createElement(\n 'div',\n { className: nameClasses },\n name\n ),\n this.props.showAddress ? _react2.default.createElement(\n 'div',\n { className: idClasses },\n address.address\n ) : _react2.default.createElement('div', null)\n );\n } else if (isMatrixAddress) {\n var unknownMxClasses = (0, _classnames2.default)({\n \"mx_AddressTile_unknownMx\": true,\n \"mx_AddressTile_justified\": this.props.justified\n });\n\n info = _react2.default.createElement(\n 'div',\n { className: unknownMxClasses },\n this.props.address.address\n );\n } else if (address.addressType === \"email\") {\n var emailClasses = (0, _classnames2.default)({\n \"mx_AddressTile_email\": true,\n \"mx_AddressTile_justified\": this.props.justified\n });\n\n var nameNode = null;\n if (address.displayName) {\n nameNode = _react2.default.createElement(\n 'div',\n { className: nameClasses },\n address.displayName\n );\n }\n\n info = _react2.default.createElement(\n 'div',\n { className: 'mx_AddressTile_mx' },\n _react2.default.createElement(\n 'div',\n { className: emailClasses },\n address.address\n ),\n nameNode\n );\n } else {\n error = true;\n var unknownClasses = (0, _classnames2.default)({\n \"mx_AddressTile_unknown\": true,\n \"mx_AddressTile_justified\": this.props.justified\n });\n\n info = _react2.default.createElement(\n 'div',\n { className: unknownClasses },\n (0, _languageHandler._t)(\"Unknown Address\")\n );\n }\n\n var classes = (0, _classnames2.default)({\n \"mx_AddressTile\": true,\n \"mx_AddressTile_error\": error\n });\n\n var dismiss = void 0;\n if (this.props.canDismiss) {\n dismiss = _react2.default.createElement(\n 'div',\n { className: 'mx_AddressTile_dismiss', onClick: this.props.onDismissed },\n _react2.default.createElement(TintableSvg, { src: 'img/icon-address-delete.svg', width: '9', height: '9' })\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { className: classes },\n _react2.default.createElement(\n 'div',\n { className: 'mx_AddressTile_avatar' },\n _react2.default.createElement(BaseAvatar, { defaultToInitialLetter: true, width: 25, height: 25, name: name, title: name, urls: imgUrls })\n ),\n info,\n dismiss\n );\n }\n}); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=AddressTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _FromWidgetPostMessageApi = require('./FromWidgetPostMessageApi');\n\nvar _FromWidgetPostMessageApi2 = _interopRequireDefault(_FromWidgetPostMessageApi);\n\nvar _ToWidgetPostMessageApi = require('./ToWidgetPostMessageApi');\n\nvar _ToWidgetPostMessageApi2 = _interopRequireDefault(_ToWidgetPostMessageApi);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/*\n* See - https://docs.google.com/document/d/1uPF7XWY_dXTKVKV7jZQ2KmsI19wn9-kFRgQ1tFQP7wQ/edit?usp=sharing for\n* spec. details / documentation.\n*/\n\nif (!global.mxFromWidgetMessaging) {\n global.mxFromWidgetMessaging = new _FromWidgetPostMessageApi2.default();\n global.mxFromWidgetMessaging.start();\n}\nif (!global.mxToWidgetMessaging) {\n global.mxToWidgetMessaging = new _ToWidgetPostMessageApi2.default();\n global.mxToWidgetMessaging.start();\n}\n\nvar OUTBOUND_API_NAME = 'toWidget';\n\nvar WidgetMessaging = function () {\n function WidgetMessaging(widgetId, widgetUrl, target) {\n (0, _classCallCheck3.default)(this, WidgetMessaging);\n\n this.widgetId = widgetId;\n this.widgetUrl = widgetUrl;\n this.target = target;\n this.fromWidget = global.mxFromWidgetMessaging;\n this.toWidget = global.mxToWidgetMessaging;\n this.start();\n }\n\n (0, _createClass3.default)(WidgetMessaging, [{\n key: 'messageToWidget',\n value: function messageToWidget(action) {\n action.widgetId = this.widgetId; // Required to be sent for all outbound requests\n\n return this.toWidget.exec(action, this.target).then(function (data) {\n // Check for errors and reject if found\n if (data.response === undefined) {\n // null is valid\n throw new Error(\"Missing 'response' field\");\n }\n if (data.response && data.response.error) {\n var err = data.response.error;\n var msg = String(err.message ? err.message : \"An error was returned\");\n if (err._error) {\n console.error(err._error);\n }\n // Potential XSS attack if 'msg' is not appropriately sanitized,\n // as it is untrusted input by our parent window (which we assume is Riot).\n // We can't aggressively sanitize [A-z0-9] since it might be a translation.\n throw new Error(msg);\n }\n // Return the response field for the request\n return data.response;\n });\n }\n\n /**\n * Request a screenshot from a widget\n * @return {Promise} To be resolved with screenshot data when it has been generated\n */\n\n }, {\n key: 'getScreenshot',\n value: function getScreenshot() {\n console.warn('Requesting screenshot for', this.widgetId);\n return this.messageToWidget({\n api: OUTBOUND_API_NAME,\n action: \"screenshot\"\n }).catch(function (error) {\n return new Error(\"Failed to get screenshot: \" + error.message);\n }).then(function (response) {\n return response.screenshot;\n });\n }\n\n /**\n * Request capabilities required by the widget\n * @return {Promise} To be resolved with an array of requested widget capabilities\n */\n\n }, {\n key: 'getCapabilities',\n value: function getCapabilities() {\n var _this = this;\n\n console.warn('Requesting capabilities for', this.widgetId);\n return this.messageToWidget({\n api: OUTBOUND_API_NAME,\n action: \"capabilities\"\n }).then(function (response) {\n console.warn('Got capabilities for', _this.widgetId, response.capabilities);\n return response.capabilities;\n });\n }\n }, {\n key: 'sendVisibility',\n value: function sendVisibility(visible) {\n return this.messageToWidget({\n api: OUTBOUND_API_NAME,\n action: \"visibility\",\n visible: visible\n }).catch(function (error) {\n console.error(\"Failed to send visibility: \", error);\n });\n }\n }, {\n key: 'start',\n value: function start() {\n this.fromWidget.addEndpoint(this.widgetId, this.widgetUrl);\n }\n }, {\n key: 'stop',\n value: function stop() {\n this.fromWidget.removeEndpoint(this.widgetId, this.widgetUrl);\n }\n }]);\n return WidgetMessaging;\n}();\n\nexports.default = WidgetMessaging;\nmodule.exports = exports['default'];\n//# sourceMappingURL=WidgetMessaging.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _IntegrationManager = require('./IntegrationManager');\n\nvar _IntegrationManager2 = _interopRequireDefault(_IntegrationManager);\n\nvar _WidgetMessagingEndpoint = require('./WidgetMessagingEndpoint');\n\nvar _WidgetMessagingEndpoint2 = _interopRequireDefault(_WidgetMessagingEndpoint);\n\nvar _ActiveWidgetStore = require('./stores/ActiveWidgetStore');\n\nvar _ActiveWidgetStore2 = _interopRequireDefault(_ActiveWidgetStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar WIDGET_API_VERSION = '0.0.1'; // Current API version\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the 'License');\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an 'AS IS' BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar SUPPORTED_WIDGET_API_VERSIONS = ['0.0.1'];\nvar INBOUND_API_NAME = 'fromWidget';\n\n// Listen for and handle incomming requests using the 'fromWidget' postMessage\n// API and initiate responses\n\nvar FromWidgetPostMessageApi = function () {\n function FromWidgetPostMessageApi() {\n (0, _classCallCheck3.default)(this, FromWidgetPostMessageApi);\n\n this.widgetMessagingEndpoints = [];\n\n this.start = this.start.bind(this);\n this.stop = this.stop.bind(this);\n this.onPostMessage = this.onPostMessage.bind(this);\n }\n\n (0, _createClass3.default)(FromWidgetPostMessageApi, [{\n key: 'start',\n value: function start() {\n window.addEventListener('message', this.onPostMessage);\n }\n }, {\n key: 'stop',\n value: function stop() {\n window.removeEventListener('message', this.onPostMessage);\n }\n\n /**\n * Register a widget endpoint for trusted postMessage communication\n * @param {string} widgetId Unique widget identifier\n * @param {string} endpointUrl Widget wurl origin (protocol + (optional port) + host)\n */\n\n }, {\n key: 'addEndpoint',\n value: function addEndpoint(widgetId, endpointUrl) {\n var u = _url2.default.parse(endpointUrl);\n if (!u || !u.protocol || !u.host) {\n console.warn('Add FromWidgetPostMessageApi endpoint - Invalid origin:', endpointUrl);\n return;\n }\n\n var origin = u.protocol + '//' + u.host;\n var endpoint = new _WidgetMessagingEndpoint2.default(widgetId, origin);\n if (this.widgetMessagingEndpoints.some(function (ep) {\n return ep.widgetId === widgetId && ep.endpointUrl === endpointUrl;\n })) {\n // Message endpoint already registered\n console.warn('Add FromWidgetPostMessageApi - Endpoint already registered');\n return;\n } else {\n console.warn('Adding fromWidget messaging endpoint for ' + widgetId, endpoint);\n this.widgetMessagingEndpoints.push(endpoint);\n }\n }\n\n /**\n * De-register a widget endpoint from trusted communication sources\n * @param {string} widgetId Unique widget identifier\n * @param {string} endpointUrl Widget wurl origin (protocol + (optional port) + host)\n * @return {boolean} True if endpoint was successfully removed\n */\n\n }, {\n key: 'removeEndpoint',\n value: function removeEndpoint(widgetId, endpointUrl) {\n var u = _url2.default.parse(endpointUrl);\n if (!u || !u.protocol || !u.host) {\n console.warn('Remove widget messaging endpoint - Invalid origin');\n return;\n }\n\n var origin = u.protocol + '//' + u.host;\n if (this.widgetMessagingEndpoints && this.widgetMessagingEndpoints.length > 0) {\n var length = this.widgetMessagingEndpoints.length;\n this.widgetMessagingEndpoints = this.widgetMessagingEndpoints.filter(function (endpoint) {\n return endpoint.widgetId != widgetId || endpoint.endpointUrl != origin;\n });\n return length > this.widgetMessagingEndpoints.length;\n }\n return false;\n }\n\n /**\n * Handle widget postMessage events\n * Messages are only handled where a valid, registered messaging endpoints\n * @param {Event} event Event to handle\n * @return {undefined}\n */\n\n }, {\n key: 'onPostMessage',\n value: function onPostMessage(event) {\n if (!event.origin) {\n // Handle chrome\n event.origin = event.originalEvent.origin;\n }\n\n // Event origin is empty string if undefined\n if (event.origin.length === 0 || !this.trustedEndpoint(event.origin) || event.data.api !== INBOUND_API_NAME || !event.data.widgetId) {\n return; // don't log this - debugging APIs like to spam postMessage which floods the log otherwise\n }\n\n // Although the requestId is required, we don't use it. We'll be nice and process the message\n // if the property is missing, but with a warning for widget developers.\n if (!event.data.requestId) {\n console.warn(\"fromWidget action '\" + event.data.action + \"' does not have a requestId\");\n }\n\n var action = event.data.action;\n var widgetId = event.data.widgetId;\n if (action === 'content_loaded') {\n console.warn('Widget reported content loaded for', widgetId);\n _dispatcher2.default.dispatch({\n action: 'widget_content_loaded',\n widgetId: widgetId\n });\n this.sendResponse(event, { success: true });\n } else if (action === 'supported_api_versions') {\n this.sendResponse(event, {\n api: INBOUND_API_NAME,\n supported_versions: SUPPORTED_WIDGET_API_VERSIONS\n });\n } else if (action === 'api_version') {\n this.sendResponse(event, {\n api: INBOUND_API_NAME,\n version: WIDGET_API_VERSION\n });\n } else if (action === 'm.sticker') {\n // console.warn('Got sticker message from widget', widgetId);\n // NOTE -- The widgetData field is deprecated (in favour of the 'data' field) and will be removed eventually\n var data = event.data.data || event.data.widgetData;\n _dispatcher2.default.dispatch({ action: 'm.sticker', data: data, widgetId: event.data.widgetId });\n } else if (action === 'integration_manager_open') {\n // Close the stickerpicker\n _dispatcher2.default.dispatch({ action: 'stickerpicker_close' });\n // Open the integration manager\n // NOTE -- The widgetData field is deprecated (in favour of the 'data' field) and will be removed eventually\n var _data = event.data.data || event.data.widgetData;\n var integType = _data && _data.integType ? _data.integType : null;\n var integId = _data && _data.integId ? _data.integId : null;\n _IntegrationManager2.default.open(integType, integId);\n } else if (action === 'set_always_on_screen') {\n // This is a new message: there is no reason to support the deprecated widgetData here\n var _data2 = event.data.data;\n var val = _data2.value;\n\n if (_ActiveWidgetStore2.default.widgetHasCapability(widgetId, 'm.always_on_screen')) {\n _ActiveWidgetStore2.default.setWidgetPersistence(widgetId, val);\n }\n } else {\n console.warn('Widget postMessage event unhandled');\n this.sendError(event, { message: 'The postMessage was unhandled' });\n }\n }\n\n /**\n * Check if message origin is registered as trusted\n * @param {string} origin PostMessage origin to check\n * @return {boolean} True if trusted\n */\n\n }, {\n key: 'trustedEndpoint',\n value: function trustedEndpoint(origin) {\n if (!origin) {\n return false;\n }\n\n return this.widgetMessagingEndpoints.some(function (endpoint) {\n // TODO / FIXME -- Should this also check the widgetId?\n return endpoint.endpointUrl === origin;\n });\n }\n\n /**\n * Send a postmessage response to a postMessage request\n * @param {Event} event The original postMessage request event\n * @param {Object} res Response data\n */\n\n }, {\n key: 'sendResponse',\n value: function sendResponse(event, res) {\n var data = JSON.parse((0, _stringify2.default)(event.data));\n data.response = res;\n event.source.postMessage(data, event.origin);\n }\n\n /**\n * Send an error response to a postMessage request\n * @param {Event} event The original postMessage request event\n * @param {string} msg Error message\n * @param {Error} nestedError Nested error event (optional)\n */\n\n }, {\n key: 'sendError',\n value: function sendError(event, msg, nestedError) {\n console.error('Action:' + event.data.action + ' failed with message: ' + msg);\n var data = JSON.parse((0, _stringify2.default)(event.data));\n data.response = {\n error: {\n message: msg\n }\n };\n if (nestedError) {\n data.response.error._error = nestedError;\n }\n event.source.postMessage(data, event.origin);\n }\n }]);\n return FromWidgetPostMessageApi;\n}();\n\nexports.default = FromWidgetPostMessageApi;\nmodule.exports = exports['default'];\n//# sourceMappingURL=FromWidgetPostMessageApi.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SdkConfig = require('./SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _ScalarMessaging = require('./ScalarMessaging');\n\nvar _ScalarMessaging2 = _interopRequireDefault(_ScalarMessaging);\n\nvar _ScalarAuthClient = require('./ScalarAuthClient');\n\nvar _ScalarAuthClient2 = _interopRequireDefault(_ScalarAuthClient);\n\nvar _RoomViewStore = require('./stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nif (!global.mxIntegrationManager) {\n global.mxIntegrationManager = {};\n}\n\nvar IntegrationManager = function () {\n function IntegrationManager() {\n (0, _classCallCheck3.default)(this, IntegrationManager);\n }\n\n (0, _createClass3.default)(IntegrationManager, null, [{\n key: '_init',\n value: function _init() {\n if (!global.mxIntegrationManager.client || !global.mxIntegrationManager.connected) {\n if (_SdkConfig2.default.get().integrations_ui_url && _SdkConfig2.default.get().integrations_rest_url) {\n _ScalarMessaging2.default.startListening();\n global.mxIntegrationManager.client = new _ScalarAuthClient2.default();\n\n return global.mxIntegrationManager.client.connect().then(function () {\n global.mxIntegrationManager.connected = true;\n }).catch(function (e) {\n console.error(\"Failed to connect to integrations server\", e);\n global.mxIntegrationManager.error = e;\n });\n } else {\n console.error('Invalid integration manager config', _SdkConfig2.default.get());\n }\n }\n }\n\n /**\n * Launch the integrations manager on the stickers integration page\n * @param {string} integName integration / widget type\n * @param {string} integId integration / widget ID\n * @param {function} onFinished Callback to invoke on integration manager close\n */\n\n }, {\n key: 'open',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(integName, integId, onFinished) {\n var IntegrationsManager, integType, src;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(IntegrationManager._init());\n\n case 2:\n IntegrationsManager = _index2.default.getComponent(\"views.settings.IntegrationsManager\");\n\n if (!(global.mxIntegrationManager.error || !(global.mxIntegrationManager.client && global.mxIntegrationManager.client.hasCredentials()))) {\n _context.next = 6;\n break;\n }\n\n console.error(\"Scalar error\", global.mxIntegrationManager);\n return _context.abrupt('return');\n\n case 6:\n integType = 'type_' + integName;\n src = global.mxIntegrationManager.client && global.mxIntegrationManager.client.hasCredentials() ? global.mxIntegrationManager.client.getScalarInterfaceUrlForRoom({ roomId: _RoomViewStore2.default.getRoomId() }, integType, integId) : null;\n\n _Modal2.default.createTrackedDialog('Integrations Manager', '', IntegrationsManager, {\n src: src,\n onFinished: onFinished\n }, \"mx_IntegrationsManager\");\n\n case 9:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function open(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return open;\n }()\n }]);\n return IntegrationManager;\n}();\n\nexports.default = IntegrationManager;\nmodule.exports = exports['default'];\n//# sourceMappingURL=IntegrationManager.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Represents mapping of widget instance to URLs for trusted postMessage communication.\n */\nvar WidgetMessageEndpoint =\n/**\n * Mapping of widget instance to URL for trusted postMessage communication.\n * @param {string} widgetId Unique widget identifier\n * @param {string} endpointUrl Widget wurl origin.\n */\nfunction WidgetMessageEndpoint(widgetId, endpointUrl) {\n (0, _classCallCheck3.default)(this, WidgetMessageEndpoint);\n\n if (!widgetId) {\n throw new Error(\"No widgetId specified in widgetMessageEndpoint constructor\");\n }\n if (!endpointUrl) {\n throw new Error(\"No endpoint specified in widgetMessageEndpoint constructor\");\n }\n this.widgetId = widgetId;\n this.endpointUrl = endpointUrl;\n};\n\nexports.default = WidgetMessageEndpoint;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=WidgetMessagingEndpoint.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// const OUTBOUND_API_NAME = 'toWidget';\n\n// Initiate requests using the \"toWidget\" postMessage API and handle responses\n// NOTE: ToWidgetPostMessageApi only handles message events with a data payload with a\n// response field\nvar ToWidgetPostMessageApi = function () {\n function ToWidgetPostMessageApi(timeoutMs) {\n (0, _classCallCheck3.default)(this, ToWidgetPostMessageApi);\n\n this._timeoutMs = timeoutMs || 5000; // default to 5s timer\n this._counter = 0;\n this._requestMap = {\n // $ID: {resolve, reject}\n };\n this.start = this.start.bind(this);\n this.stop = this.stop.bind(this);\n this.onPostMessage = this.onPostMessage.bind(this);\n }\n\n (0, _createClass3.default)(ToWidgetPostMessageApi, [{\n key: 'start',\n value: function start() {\n window.addEventListener('message', this.onPostMessage);\n }\n }, {\n key: 'stop',\n value: function stop() {\n window.removeEventListener('message', this.onPostMessage);\n }\n }, {\n key: 'onPostMessage',\n value: function onPostMessage(ev) {\n // THIS IS ALL UNSAFE EXECUTION.\n // We do not verify who the sender of `ev` is!\n var payload = ev.data;\n // NOTE: Workaround for running in a mobile WebView where a\n // postMessage immediately triggers this callback even though it is\n // not the response.\n if (payload.response === undefined) {\n return;\n }\n var promise = this._requestMap[payload.requestId];\n if (!promise) {\n return;\n }\n delete this._requestMap[payload.requestId];\n promise.resolve(payload);\n }\n\n // Initiate outbound requests (toWidget)\n\n }, {\n key: 'exec',\n value: function exec(action, targetWindow, targetOrigin) {\n var _this = this;\n\n targetWindow = targetWindow || window.parent; // default to parent window\n targetOrigin = targetOrigin || \"*\";\n this._counter += 1;\n action.requestId = Date.now() + \"-\" + Math.random().toString(36) + \"-\" + this._counter;\n\n return new _bluebird2.default(function (resolve, reject) {\n _this._requestMap[action.requestId] = { resolve: resolve, reject: reject };\n targetWindow.postMessage(action, targetOrigin);\n\n if (_this._timeoutMs > 0) {\n setTimeout(function () {\n if (!_this._requestMap[action.requestId]) {\n return;\n }\n console.error(\"postMessage request timed out. Sent object: \" + (0, _stringify2.default)(action), _this._requestMap);\n _this._requestMap[action.requestId].reject(new Error(\"Timed out\"));\n delete _this._requestMap[action.requestId];\n }, _this._timeoutMs);\n }\n });\n }\n }]);\n return ToWidgetPostMessageApi;\n}(); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = ToWidgetPostMessageApi;\nmodule.exports = exports['default'];\n//# sourceMappingURL=ToWidgetPostMessageApi.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar CreateRoomButton = function CreateRoomButton(props) {\n var ActionButton = _index2.default.getComponent('elements.ActionButton');\n return _react2.default.createElement(ActionButton, { action: 'view_create_room',\n mouseOverAction: props.callout ? \"callout_create_room\" : null,\n label: (0, _languageHandler._t)(\"Create new room\"),\n iconPath: 'img/icons-create-room.svg',\n size: props.size,\n tooltip: props.tooltip\n });\n};\n\nCreateRoomButton.propTypes = {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool\n};\n\nexports.default = CreateRoomButton;\nmodule.exports = exports['default'];\n//# sourceMappingURL=CreateRoomButton.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.default = DNDTagTile;\n\nvar _TagTile = require('./TagTile');\n\nvar _TagTile2 = _interopRequireDefault(_TagTile);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactBeautifulDnd = require('react-beautiful-dnd');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction DNDTagTile(props) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n _reactBeautifulDnd.Draggable,\n {\n key: props.tag,\n draggableId: props.tag,\n index: props.index,\n type: 'draggable-TagTile'\n },\n function (provided, snapshot) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n (0, _extends3.default)({\n ref: provided.innerRef\n }, provided.draggableProps, provided.dragHandleProps),\n _react2.default.createElement(_TagTile2.default, props)\n ),\n provided.placeholder\n );\n }\n )\n );\n} /* eslint new-cap: \"off\" */\n/*\nCopyright 2017 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=DNDTagTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'DeviceVerifyButtons',\n\n propTypes: {\n userId: _propTypes2.default.string.isRequired,\n device: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n device: this.props.device\n };\n },\n\n componentWillMount: function componentWillMount() {\n var cli = _MatrixClientPeg2.default.get();\n cli.on(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var cli = _MatrixClientPeg2.default.get();\n cli.removeListener(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n },\n\n onDeviceVerificationChanged: function onDeviceVerificationChanged(userId, deviceId, deviceInfo) {\n if (userId === this.props.userId && deviceId === this.props.device.deviceId) {\n this.setState({ device: deviceInfo });\n }\n },\n\n onVerifyClick: function onVerifyClick() {\n var DeviceVerifyDialog = _index2.default.getComponent('views.dialogs.DeviceVerifyDialog');\n _Modal2.default.createTrackedDialog('Device Verify Dialog', '', DeviceVerifyDialog, {\n userId: this.props.userId,\n device: this.state.device\n });\n },\n\n onUnverifyClick: function onUnverifyClick() {\n _MatrixClientPeg2.default.get().setDeviceVerified(this.props.userId, this.state.device.deviceId, false);\n },\n\n onBlacklistClick: function onBlacklistClick() {\n _MatrixClientPeg2.default.get().setDeviceBlocked(this.props.userId, this.state.device.deviceId, true);\n },\n\n onUnblacklistClick: function onUnblacklistClick() {\n _MatrixClientPeg2.default.get().setDeviceBlocked(this.props.userId, this.state.device.deviceId, false);\n },\n\n render: function render() {\n var blacklistButton = null,\n verifyButton = null;\n\n if (this.state.device.isBlocked()) {\n blacklistButton = _react2.default.createElement(\n 'button',\n { className: 'mx_MemberDeviceInfo_textButton mx_MemberDeviceInfo_unblacklist',\n onClick: this.onUnblacklistClick },\n (0, _languageHandler._t)(\"Unblacklist\")\n );\n } else {\n blacklistButton = _react2.default.createElement(\n 'button',\n { className: 'mx_MemberDeviceInfo_textButton mx_MemberDeviceInfo_blacklist',\n onClick: this.onBlacklistClick },\n (0, _languageHandler._t)(\"Blacklist\")\n );\n }\n\n if (this.state.device.isVerified()) {\n verifyButton = _react2.default.createElement(\n 'button',\n { className: 'mx_MemberDeviceInfo_textButton mx_MemberDeviceInfo_unverify',\n onClick: this.onUnverifyClick },\n (0, _languageHandler._t)(\"Unverify\")\n );\n } else {\n verifyButton = _react2.default.createElement(\n 'button',\n { className: 'mx_MemberDeviceInfo_textButton mx_MemberDeviceInfo_verify',\n onClick: this.onVerifyClick },\n (0, _languageHandler._t)(\"Verify...\")\n );\n }\n\n // mx_MemberDeviceInfo because the vector's CSS on EncryptedEventDialog is awful\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo mx_DeviceVerifyButtons' },\n verifyButton,\n blacklistButton\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=DeviceVerifyButtons.js.map","\"use strict\";\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Basic container for buttons in modal dialogs.\n */\nmodule.exports = _react2.default.createClass({\n displayName: \"DialogButtons\",\n\n propTypes: {\n // The primary button which is styled differently and has default focus.\n primaryButton: _propTypes2.default.node.isRequired,\n\n // A node to insert into the cancel button instead of default \"Cancel\"\n cancelButton: _propTypes2.default.node,\n\n // onClick handler for the primary button.\n onPrimaryButtonClick: _propTypes2.default.func.isRequired,\n\n // should there be a cancel button? default: true\n hasCancel: _propTypes2.default.bool,\n\n // onClick handler for the cancel button.\n onCancel: _propTypes2.default.func,\n\n focus: _propTypes2.default.bool,\n\n disabled: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n hasCancel: true,\n disabled: false\n };\n },\n\n _onCancelClick: function _onCancelClick() {\n this.props.onCancel();\n },\n\n render: function render() {\n var primaryButtonClassName = \"mx_Dialog_primary\";\n if (this.props.primaryButtonClass) {\n primaryButtonClassName += \" \" + this.props.primaryButtonClass;\n }\n var cancelButton = void 0;\n if (this.props.cancelButton || this.props.hasCancel) {\n cancelButton = _react2.default.createElement(\n \"button\",\n { onClick: this._onCancelClick, disabled: this.props.disabled },\n this.props.cancelButton || (0, _languageHandler._t)(\"Cancel\")\n );\n }\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_Dialog_buttons\" },\n cancelButton,\n this.props.children,\n _react2.default.createElement(\n \"button\",\n { className: primaryButtonClassName,\n onClick: this.props.onPrimaryButtonClick,\n autoFocus: this.props.focus,\n disabled: this.props.disabled\n },\n this.props.primaryButton\n )\n );\n }\n}); /*\n Copyright 2017 Aidan Gauland\n Copyright 2018 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=DialogButtons.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DirectorySearchBox = function (_React$Component) {\n (0, _inherits3.default)(DirectorySearchBox, _React$Component);\n\n function DirectorySearchBox() {\n (0, _classCallCheck3.default)(this, DirectorySearchBox);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DirectorySearchBox.__proto__ || (0, _getPrototypeOf2.default)(DirectorySearchBox)).call(this));\n\n _this._collectInput = _this._collectInput.bind(_this);\n _this._onClearClick = _this._onClearClick.bind(_this);\n _this._onChange = _this._onChange.bind(_this);\n _this._onKeyUp = _this._onKeyUp.bind(_this);\n _this._onJoinButtonClick = _this._onJoinButtonClick.bind(_this);\n\n _this.input = null;\n\n _this.state = {\n value: ''\n };\n return _this;\n }\n\n (0, _createClass3.default)(DirectorySearchBox, [{\n key: '_collectInput',\n value: function _collectInput(e) {\n this.input = e;\n }\n }, {\n key: '_onClearClick',\n value: function _onClearClick() {\n this.setState({ value: '' });\n\n if (this.input) {\n this.input.focus();\n\n if (this.props.onClear) {\n this.props.onClear();\n }\n }\n }\n }, {\n key: '_onChange',\n value: function _onChange(ev) {\n if (!this.input) return;\n this.setState({ value: ev.target.value });\n\n if (this.props.onChange) {\n this.props.onChange(ev.target.value);\n }\n }\n }, {\n key: '_onKeyUp',\n value: function _onKeyUp(ev) {\n if (ev.key == 'Enter' && this.props.showJoinButton) {\n if (this.props.onJoinClick) {\n this.props.onJoinClick(this.state.value);\n }\n }\n }\n }, {\n key: '_onJoinButtonClick',\n value: function _onJoinButtonClick() {\n if (this.props.onJoinClick) {\n this.props.onJoinClick(this.state.value);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var searchbox_classes = {\n mx_DirectorySearchBox: true\n };\n searchbox_classes[this.props.className] = true;\n\n var join_button = void 0;\n if (this.props.showJoinButton) {\n join_button = _react2.default.createElement(\n 'span',\n { className: 'mx_DirectorySearchBox_joinButton',\n onClick: this._onJoinButtonClick\n },\n 'Join'\n );\n }\n\n return _react2.default.createElement(\n 'span',\n { className: (0, _classnames2.default)(searchbox_classes) },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DirectorySearchBox_container' },\n _react2.default.createElement('input', { type: 'text', name: 'dirsearch', value: this.state.value,\n className: 'mx_DirectorySearchBox_input',\n ref: this._collectInput,\n onChange: this._onChange, onKeyUp: this._onKeyUp,\n placeholder: this.props.placeholder, autoFocus: true\n }),\n join_button,\n _react2.default.createElement(\n 'span',\n { className: 'mx_DirectorySearchBox_clear_wrapper' },\n _react2.default.createElement('span', { className: 'mx_DirectorySearchBox_clear', onClick: this._onClearClick })\n )\n )\n );\n }\n }]);\n return DirectorySearchBox;\n}(_react2.default.Component); /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = DirectorySearchBox;\n\n\nDirectorySearchBox.propTypes = {\n className: _propTypes2.default.string,\n onChange: _propTypes2.default.func,\n onClear: _propTypes2.default.func,\n onJoinClick: _propTypes2.default.func,\n placeholder: _propTypes2.default.string,\n showJoinButton: _propTypes2.default.bool\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=DirectorySearchBox.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _AccessibleButton = require('./AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MenuOption = function (_React$Component) {\n (0, _inherits3.default)(MenuOption, _React$Component);\n\n function MenuOption(props) {\n (0, _classCallCheck3.default)(this, MenuOption);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (MenuOption.__proto__ || (0, _getPrototypeOf2.default)(MenuOption)).call(this, props));\n\n _this._onMouseEnter = _this._onMouseEnter.bind(_this);\n _this._onClick = _this._onClick.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(MenuOption, [{\n key: '_onMouseEnter',\n value: function _onMouseEnter() {\n this.props.onMouseEnter(this.props.dropdownKey);\n }\n }, {\n key: '_onClick',\n value: function _onClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.onClick(this.props.dropdownKey);\n }\n }, {\n key: 'render',\n value: function render() {\n var optClasses = (0, _classnames2.default)({\n mx_Dropdown_option: true,\n mx_Dropdown_option_highlight: this.props.highlighted\n });\n\n return _react2.default.createElement(\n 'div',\n { className: optClasses,\n onClick: this._onClick, onKeyPress: this._onKeyPress,\n onMouseEnter: this._onMouseEnter\n },\n this.props.children\n );\n }\n }]);\n return MenuOption;\n}(_react2.default.Component); /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nMenuOption.defaultProps = {\n disabled: false\n};\n\n\nMenuOption.propTypes = {\n children: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_react2.default.PropTypes.node), _propTypes2.default.node]),\n highlighted: _propTypes2.default.bool,\n dropdownKey: _propTypes2.default.string,\n onClick: _propTypes2.default.func.isRequired,\n onMouseEnter: _propTypes2.default.func.isRequired\n};\n\n/*\n * Reusable dropdown select control, akin to react-select,\n * but somewhat simpler as react-select is 79KB of minified\n * javascript.\n *\n * TODO: Port NetworkDropdown to use this.\n */\n\nvar Dropdown = function (_React$Component2) {\n (0, _inherits3.default)(Dropdown, _React$Component2);\n\n function Dropdown(props) {\n (0, _classCallCheck3.default)(this, Dropdown);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (Dropdown.__proto__ || (0, _getPrototypeOf2.default)(Dropdown)).call(this, props));\n\n _this2.dropdownRootElement = null;\n _this2.ignoreEvent = null;\n\n _this2._onInputClick = _this2._onInputClick.bind(_this2);\n _this2._onRootClick = _this2._onRootClick.bind(_this2);\n _this2._onDocumentClick = _this2._onDocumentClick.bind(_this2);\n _this2._onMenuOptionClick = _this2._onMenuOptionClick.bind(_this2);\n _this2._onInputKeyPress = _this2._onInputKeyPress.bind(_this2);\n _this2._onInputKeyUp = _this2._onInputKeyUp.bind(_this2);\n _this2._onInputChange = _this2._onInputChange.bind(_this2);\n _this2._collectRoot = _this2._collectRoot.bind(_this2);\n _this2._collectInputTextBox = _this2._collectInputTextBox.bind(_this2);\n _this2._setHighlightedOption = _this2._setHighlightedOption.bind(_this2);\n\n _this2.inputTextBox = null;\n\n _this2._reindexChildren(_this2.props.children);\n\n var firstChild = _react2.default.Children.toArray(props.children)[0];\n\n _this2.state = {\n // True if the menu is dropped-down\n expanded: false,\n // The key of the highlighted option\n // (the option that would become selected if you pressed enter)\n highlightedOption: firstChild ? firstChild.key : null,\n // the current search query\n searchQuery: ''\n };\n return _this2;\n }\n\n (0, _createClass3.default)(Dropdown, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n // Listen for all clicks on the document so we can close the\n // menu when the user clicks somewhere else\n document.addEventListener('click', this._onDocumentClick, false);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n document.removeEventListener('click', this._onDocumentClick, false);\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (!nextProps.children || nextProps.children.length === 0) {\n return;\n }\n this._reindexChildren(nextProps.children);\n var firstChild = nextProps.children[0];\n this.setState({\n highlightedOption: firstChild ? firstChild.key : null\n });\n }\n }, {\n key: '_reindexChildren',\n value: function _reindexChildren(children) {\n var _this3 = this;\n\n this.childrenByKey = {};\n _react2.default.Children.forEach(children, function (child) {\n _this3.childrenByKey[child.key] = child;\n });\n }\n }, {\n key: '_onDocumentClick',\n value: function _onDocumentClick(ev) {\n // Close the dropdown if the user clicks anywhere that isn't\n // within our root element\n if (ev !== this.ignoreEvent) {\n this.setState({\n expanded: false\n });\n }\n }\n }, {\n key: '_onRootClick',\n value: function _onRootClick(ev) {\n // This captures any clicks that happen within our elements,\n // such that we can then ignore them when they're seen by the\n // click listener on the document handler, ie. not close the\n // dropdown immediately after opening it.\n // NB. We can't just stopPropagation() because then the event\n // doesn't reach the React onClick().\n this.ignoreEvent = ev;\n }\n }, {\n key: '_onInputClick',\n value: function _onInputClick(ev) {\n if (this.props.disabled) return;\n\n if (!this.state.expanded) {\n this.setState({\n expanded: true\n });\n ev.preventDefault();\n }\n }\n }, {\n key: '_onMenuOptionClick',\n value: function _onMenuOptionClick(dropdownKey) {\n this.setState({\n expanded: false\n });\n this.props.onOptionChange(dropdownKey);\n }\n }, {\n key: '_onInputKeyPress',\n value: function _onInputKeyPress(e) {\n // This needs to be on the keypress event because otherwise\n // it can't cancel the form submission\n if (e.key == 'Enter') {\n this.setState({\n expanded: false\n });\n this.props.onOptionChange(this.state.highlightedOption);\n e.preventDefault();\n }\n }\n }, {\n key: '_onInputKeyUp',\n value: function _onInputKeyUp(e) {\n // These keys don't generate keypress events and so needs to\n // be on keyup\n if (e.key == 'Escape') {\n this.setState({\n expanded: false\n });\n } else if (e.key == 'ArrowDown') {\n this.setState({\n highlightedOption: this._nextOption(this.state.highlightedOption)\n });\n } else if (e.key == 'ArrowUp') {\n this.setState({\n highlightedOption: this._prevOption(this.state.highlightedOption)\n });\n }\n }\n }, {\n key: '_onInputChange',\n value: function _onInputChange(e) {\n this.setState({\n searchQuery: e.target.value\n });\n if (this.props.onSearchChange) {\n this.props.onSearchChange(e.target.value);\n }\n }\n }, {\n key: '_collectRoot',\n value: function _collectRoot(e) {\n if (this.dropdownRootElement) {\n this.dropdownRootElement.removeEventListener('click', this._onRootClick, false);\n }\n if (e) {\n e.addEventListener('click', this._onRootClick, false);\n }\n this.dropdownRootElement = e;\n }\n }, {\n key: '_collectInputTextBox',\n value: function _collectInputTextBox(e) {\n this.inputTextBox = e;\n if (e) e.focus();\n }\n }, {\n key: '_setHighlightedOption',\n value: function _setHighlightedOption(optionKey) {\n this.setState({\n highlightedOption: optionKey\n });\n }\n }, {\n key: '_nextOption',\n value: function _nextOption(optionKey) {\n var keys = (0, _keys2.default)(this.childrenByKey);\n var index = keys.indexOf(optionKey);\n return keys[(index + 1) % keys.length];\n }\n }, {\n key: '_prevOption',\n value: function _prevOption(optionKey) {\n var keys = (0, _keys2.default)(this.childrenByKey);\n var index = keys.indexOf(optionKey);\n return keys[(index - 1) % keys.length];\n }\n }, {\n key: '_getMenuOptions',\n value: function _getMenuOptions() {\n var _this4 = this;\n\n var options = _react2.default.Children.map(this.props.children, function (child) {\n return _react2.default.createElement(\n MenuOption,\n { key: child.key, dropdownKey: child.key,\n highlighted: _this4.state.highlightedOption == child.key,\n onMouseEnter: _this4._setHighlightedOption,\n onClick: _this4._onMenuOptionClick\n },\n child\n );\n });\n if (options.length === 0) {\n return [_react2.default.createElement(\n 'div',\n { key: '0', className: 'mx_Dropdown_option' },\n (0, _languageHandler._t)(\"No results\")\n )];\n }\n return options;\n }\n }, {\n key: 'render',\n value: function render() {\n var currentValue = void 0;\n\n var menuStyle = {};\n if (this.props.menuWidth) menuStyle.width = this.props.menuWidth;\n\n var menu = void 0;\n if (this.state.expanded) {\n if (this.props.searchEnabled) {\n currentValue = _react2.default.createElement('input', { type: 'text', className: 'mx_Dropdown_option',\n ref: this._collectInputTextBox, onKeyPress: this._onInputKeyPress,\n onKeyUp: this._onInputKeyUp,\n onChange: this._onInputChange,\n value: this.state.searchQuery\n });\n }\n menu = _react2.default.createElement(\n 'div',\n { className: 'mx_Dropdown_menu', style: menuStyle },\n this._getMenuOptions()\n );\n }\n\n if (!currentValue) {\n var selectedChild = this.props.getShortOption ? this.props.getShortOption(this.props.value) : this.childrenByKey[this.props.value];\n currentValue = _react2.default.createElement(\n 'div',\n { className: 'mx_Dropdown_option' },\n selectedChild\n );\n }\n\n var dropdownClasses = {\n mx_Dropdown: true,\n mx_Dropdown_disabled: this.props.disabled\n };\n if (this.props.className) {\n dropdownClasses[this.props.className] = true;\n }\n\n // Note the menu sits inside the AccessibleButton div so it's anchored\n // to the input, but overflows below it. The root contains both.\n return _react2.default.createElement(\n 'div',\n { className: (0, _classnames2.default)(dropdownClasses), ref: this._collectRoot },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_Dropdown_input', onClick: this._onInputClick },\n currentValue,\n _react2.default.createElement('span', { className: 'mx_Dropdown_arrow' }),\n menu\n )\n );\n }\n }]);\n return Dropdown;\n}(_react2.default.Component);\n\nexports.default = Dropdown;\n\n\nDropdown.propTypes = {\n // The width that the dropdown should be. If specified,\n // the dropped-down part of the menu will be set to this\n // width.\n menuWidth: _propTypes2.default.number,\n // Called when the selected option changes\n onOptionChange: _propTypes2.default.func.isRequired,\n // Called when the value of the search field changes\n onSearchChange: _propTypes2.default.func,\n searchEnabled: _propTypes2.default.bool,\n // Function that, given the key of an option, returns\n // a node representing that option to be displayed in the\n // box itself as the currently-selected option (ie. as\n // opposed to in the actual dropped-down part). If\n // unspecified, the appropriate child element is used as\n // in the dropped-down menu.\n getShortOption: _propTypes2.default.func,\n value: _propTypes2.default.string,\n // negative for consistency with HTML\n disabled: _propTypes2.default.bool\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=Dropdown.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar EditableItem = _react2.default.createClass({\n displayName: 'EditableItem',\n\n propTypes: {\n initialValue: _propTypes2.default.string,\n index: _propTypes2.default.number,\n placeholder: _propTypes2.default.string,\n\n onChange: _propTypes2.default.func,\n onRemove: _propTypes2.default.func,\n onAdd: _propTypes2.default.func,\n\n addOnChange: _propTypes2.default.bool\n },\n\n onChange: function onChange(value) {\n this.setState({ value: value });\n if (this.props.onChange) this.props.onChange(value, this.props.index);\n if (this.props.addOnChange && this.props.onAdd) this.props.onAdd(value);\n },\n\n onRemove: function onRemove() {\n if (this.props.onRemove) this.props.onRemove(this.props.index);\n },\n\n onAdd: function onAdd() {\n if (this.props.onAdd) this.props.onAdd(this.state.value);\n },\n\n render: function render() {\n var EditableText = _index2.default.getComponent('elements.EditableText');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_EditableItem' },\n _react2.default.createElement(EditableText, {\n className: 'mx_EditableItem_editable',\n placeholderClassName: 'mx_EditableItem_editablePlaceholder',\n placeholder: this.props.placeholder,\n blurToCancel: false,\n editable: true,\n initialValue: this.props.initialValue,\n onValueChanged: this.onChange }),\n this.props.onAdd ? _react2.default.createElement(\n 'div',\n { className: 'mx_EditableItem_addButton' },\n _react2.default.createElement('img', { className: 'mx_filterFlipColor',\n src: 'img/plus.svg', width: '14', height: '14',\n alt: (0, _languageHandler._t)(\"Add\"), onClick: this.onAdd })\n ) : _react2.default.createElement(\n 'div',\n { className: 'mx_EditableItem_removeButton' },\n _react2.default.createElement('img', { className: 'mx_filterFlipColor',\n src: 'img/cancel-small.svg', width: '14', height: '14',\n alt: (0, _languageHandler._t)(\"Delete\"), onClick: this.onRemove })\n )\n );\n }\n});\n\nmodule.exports = _react2.default.createClass({\n displayName: 'EditableItemList',\n\n propTypes: {\n items: _propTypes2.default.arrayOf(_propTypes2.default.string).isRequired,\n onNewItemChanged: _propTypes2.default.func,\n onItemAdded: _propTypes2.default.func,\n onItemEdited: _propTypes2.default.func,\n onItemRemoved: _propTypes2.default.func,\n\n canEdit: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onItemAdded: function onItemAdded() {},\n onItemEdited: function onItemEdited() {},\n onItemRemoved: function onItemRemoved() {},\n onNewItemChanged: function onNewItemChanged() {}\n };\n },\n\n onItemAdded: function onItemAdded(value) {\n this.props.onItemAdded(value);\n },\n\n onItemEdited: function onItemEdited(value, index) {\n if (value.length === 0) {\n this.onItemRemoved(index);\n } else {\n this.props.onItemEdited(value, index);\n }\n },\n\n onItemRemoved: function onItemRemoved(index) {\n this.props.onItemRemoved(index);\n },\n\n onNewItemChanged: function onNewItemChanged(value) {\n this.props.onNewItemChanged(value);\n },\n\n render: function render() {\n var _this = this;\n\n var editableItems = this.props.items.map(function (item, index) {\n return _react2.default.createElement(EditableItem, {\n key: index,\n index: index,\n initialValue: item,\n onChange: _this.onItemEdited,\n onRemove: _this.onItemRemoved,\n placeholder: _this.props.placeholder\n });\n });\n\n var label = this.props.items.length > 0 ? this.props.itemsLabel : this.props.noItemsLabel;\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_EditableItemList' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_EditableItemList_label' },\n label\n ),\n editableItems,\n this.props.canEdit ?\n // This is slightly evil; we want a new instance of\n // EditableItem when the list grows. To make sure it's\n // reset to its initial state.\n _react2.default.createElement(EditableItem, {\n key: editableItems.length,\n initialValue: this.props.newItem,\n onAdd: this.onItemAdded,\n onChange: this.onNewItemChanged,\n addOnChange: true,\n placeholder: this.props.placeholder\n }) : _react2.default.createElement('div', null)\n );\n }\n});\n//# sourceMappingURL=EditableItemList.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'EditableText',\n\n propTypes: {\n onValueChanged: _propTypes2.default.func,\n initialValue: _propTypes2.default.string,\n label: _propTypes2.default.string,\n placeholder: _propTypes2.default.string,\n className: _propTypes2.default.string,\n labelClassName: _propTypes2.default.string,\n placeholderClassName: _propTypes2.default.string,\n // Overrides blurToSubmit if true\n blurToCancel: _propTypes2.default.bool,\n // Will cause onValueChanged(value, true) to fire on blur\n blurToSubmit: _propTypes2.default.bool,\n editable: _propTypes2.default.bool\n },\n\n Phases: {\n Display: \"display\",\n Edit: \"edit\"\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onValueChanged: function onValueChanged() {},\n initialValue: '',\n label: '',\n placeholder: '',\n editable: true,\n className: \"mx_EditableText\",\n placeholderClassName: \"mx_EditableText_placeholder\",\n blurToSubmit: false\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n phase: this.Phases.Display\n };\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n if (nextProps.initialValue !== this.props.initialValue) {\n this.value = nextProps.initialValue;\n if (this.refs.editable_div) {\n this.showPlaceholder(!this.value);\n }\n }\n },\n\n componentWillMount: function componentWillMount() {\n // we track value as an JS object field rather than in React state\n // as React doesn't play nice with contentEditable.\n this.value = '';\n this.placeholder = false;\n },\n\n componentDidMount: function componentDidMount() {\n this.value = this.props.initialValue;\n if (this.refs.editable_div) {\n this.showPlaceholder(!this.value);\n }\n },\n\n showPlaceholder: function showPlaceholder(show) {\n if (show) {\n this.refs.editable_div.textContent = this.props.placeholder;\n this.refs.editable_div.setAttribute(\"class\", this.props.className + \" \" + this.props.placeholderClassName);\n this.placeholder = true;\n this.value = '';\n } else {\n this.refs.editable_div.textContent = this.value;\n this.refs.editable_div.setAttribute(\"class\", this.props.className);\n this.placeholder = false;\n }\n },\n\n getValue: function getValue() {\n return this.value;\n },\n\n setValue: function setValue(value) {\n this.value = value;\n this.showPlaceholder(!this.value);\n },\n\n edit: function edit() {\n this.setState({\n phase: this.Phases.Edit\n });\n },\n\n cancelEdit: function cancelEdit() {\n this.setState({\n phase: this.Phases.Display\n });\n this.value = this.props.initialValue;\n this.showPlaceholder(!this.value);\n this.onValueChanged(false);\n this.refs.editable_div.blur();\n },\n\n onValueChanged: function onValueChanged(shouldSubmit) {\n this.props.onValueChanged(this.value, shouldSubmit);\n },\n\n onKeyDown: function onKeyDown(ev) {\n // console.log(\"keyDown: textContent=\" + ev.target.textContent + \", value=\" + this.value + \", placeholder=\" + this.placeholder);\n\n if (this.placeholder) {\n this.showPlaceholder(false);\n }\n\n if (ev.key === \"Enter\") {\n ev.stopPropagation();\n ev.preventDefault();\n }\n\n // console.log(\"keyDown: textContent=\" + ev.target.textContent + \", value=\" + this.value + \", placeholder=\" + this.placeholder);\n },\n\n onKeyUp: function onKeyUp(ev) {\n // console.log(\"keyUp: textContent=\" + ev.target.textContent + \", value=\" + this.value + \", placeholder=\" + this.placeholder);\n\n if (!ev.target.textContent) {\n this.showPlaceholder(true);\n } else if (!this.placeholder) {\n this.value = ev.target.textContent;\n }\n\n if (ev.key === \"Enter\") {\n this.onFinish(ev);\n } else if (ev.key === \"Escape\") {\n this.cancelEdit();\n }\n\n // console.log(\"keyUp: textContent=\" + ev.target.textContent + \", value=\" + this.value + \", placeholder=\" + this.placeholder);\n },\n\n onClickDiv: function onClickDiv(ev) {\n if (!this.props.editable) return;\n\n this.setState({\n phase: this.Phases.Edit\n });\n },\n\n onFocus: function onFocus(ev) {\n //ev.target.setSelectionRange(0, ev.target.textContent.length);\n\n var node = ev.target.childNodes[0];\n if (node) {\n var range = document.createRange();\n range.setStart(node, 0);\n range.setEnd(node, node.length);\n\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n }\n },\n\n onFinish: function onFinish(ev, shouldSubmit) {\n var _this = this;\n\n var self = this;\n var submit = ev.key === \"Enter\" || shouldSubmit;\n this.setState({\n phase: this.Phases.Display\n }, function () {\n if (_this.value !== _this.props.initialValue) {\n self.onValueChanged(submit);\n }\n });\n },\n\n onBlur: function onBlur(ev) {\n var sel = window.getSelection();\n sel.removeAllRanges();\n\n if (this.props.blurToCancel) {\n this.cancelEdit();\n } else {\n this.onFinish(ev, this.props.blurToSubmit);\n }\n\n this.showPlaceholder(!this.value);\n },\n\n render: function render() {\n var _props = this.props,\n className = _props.className,\n editable = _props.editable,\n initialValue = _props.initialValue,\n label = _props.label,\n labelClassName = _props.labelClassName;\n\n var editableEl = void 0;\n\n if (!editable || this.state.phase === this.Phases.Display && (label || labelClassName) && !this.value) {\n // show the label\n editableEl = _react2.default.createElement(\n 'div',\n { className: className + \" \" + labelClassName, onClick: this.onClickDiv },\n label || initialValue\n );\n } else {\n // show the content editable div, but manually manage its contents as react and contentEditable don't play nice together\n editableEl = _react2.default.createElement('div', { ref: 'editable_div',\n contentEditable: true,\n className: className,\n onKeyDown: this.onKeyDown,\n onKeyUp: this.onKeyUp,\n onFocus: this.onFocus,\n onBlur: this.onBlur });\n }\n\n return editableEl;\n }\n});\n//# sourceMappingURL=EditableText.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A component which wraps an EditableText, with a spinner while updates take\n * place.\n *\n * Parent components should supply an 'onSubmit' callback which returns a\n * promise; a spinner is shown until the promise resolves.\n *\n * The parent can also supply a 'getIntialValue' callback, which works in a\n * similarly asynchronous way. If this is not provided, the initial value is\n * taken from the 'initialValue' property.\n */\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar EditableTextContainer = function (_React$Component) {\n (0, _inherits3.default)(EditableTextContainer, _React$Component);\n\n function EditableTextContainer(props, context) {\n (0, _classCallCheck3.default)(this, EditableTextContainer);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (EditableTextContainer.__proto__ || (0, _getPrototypeOf2.default)(EditableTextContainer)).call(this, props, context));\n\n _this._unmounted = false;\n _this.state = {\n busy: false,\n errorString: null,\n value: props.initialValue\n };\n _this._onValueChanged = _this._onValueChanged.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(EditableTextContainer, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n if (this.props.getInitialValue === undefined) {\n // use whatever was given in the initialValue property.\n return;\n }\n\n this.setState({ busy: true });\n\n this.props.getInitialValue().done(function (result) {\n if (_this2._unmounted) {\n return;\n }\n _this2.setState({\n busy: false,\n value: result\n });\n }, function (error) {\n if (_this2._unmounted) {\n return;\n }\n _this2.setState({\n errorString: error.toString(),\n busy: false\n });\n });\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: '_onValueChanged',\n value: function _onValueChanged(value, shouldSubmit) {\n var _this3 = this;\n\n if (!shouldSubmit) {\n return;\n }\n\n this.setState({\n busy: true,\n errorString: null\n });\n\n this.props.onSubmit(value).done(function () {\n if (_this3._unmounted) {\n return;\n }\n _this3.setState({\n busy: false,\n value: value\n });\n }, function (error) {\n if (_this3._unmounted) {\n return;\n }\n _this3.setState({\n errorString: error.toString(),\n busy: false\n });\n });\n }\n }, {\n key: 'render',\n value: function render() {\n if (this.state.busy) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n } else if (this.state.errorString) {\n return _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.errorString\n );\n } else {\n var EditableText = _index2.default.getComponent('elements.EditableText');\n return _react2.default.createElement(EditableText, { initialValue: this.state.value,\n placeholder: this.props.placeholder,\n onValueChanged: this._onValueChanged,\n blurToSubmit: this.props.blurToSubmit\n });\n }\n }\n }]);\n return EditableTextContainer;\n}(_react2.default.Component);\n\nexports.default = EditableTextContainer;\n\n\nEditableTextContainer.propTypes = {\n /* callback to retrieve the initial value. */\n getInitialValue: _propTypes2.default.func,\n\n /* initial value; used if getInitialValue is not given */\n initialValue: _propTypes2.default.string,\n\n /* placeholder text to use when the value is empty (and not being\n * edited) */\n placeholder: _propTypes2.default.string,\n\n /* callback to update the value. Called with a single argument: the new\n * value. */\n onSubmit: _propTypes2.default.func,\n\n /* should the input submit when focus is lost? */\n blurToSubmit: _propTypes2.default.bool\n};\n\nEditableTextContainer.defaultProps = {\n initialValue: \"\",\n placeholder: \"\",\n blurToSubmit: false,\n onSubmit: function onSubmit(v) {\n return _bluebird2.default.resolve();\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=EditableTextContainer.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nexports.default = EmojiText;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _HtmlUtils = require('../../../HtmlUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction EmojiText(props) {\n var element = props.element,\n children = props.children,\n restProps = (0, _objectWithoutProperties3.default)(props, ['element', 'children']);\n\n // fast path: simple regex to detect strings that don't contain\n // emoji and just return them\n\n if ((0, _HtmlUtils.containsEmoji)(children)) {\n restProps.dangerouslySetInnerHTML = (0, _HtmlUtils.emojifyText)(children);\n return _react2.default.createElement(element, restProps);\n } else {\n return _react2.default.createElement(element, restProps, children);\n }\n} /*\n Copyright 2016 Aviral Dasgupta\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nEmojiText.propTypes = {\n element: _propTypes2.default.string,\n children: _propTypes2.default.string.isRequired\n};\n\nEmojiText.defaultProps = {\n element: 'span'\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=EmojiText.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactGeminiScrollbar = require('react-gemini-scrollbar');\n\nvar _reactGeminiScrollbar2 = _interopRequireDefault(_reactGeminiScrollbar);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction GeminiScrollbarWrapper(props) {\n var wrappedRef = props.wrappedRef,\n wrappedProps = (0, _objectWithoutProperties3.default)(props, ['wrappedRef']);\n\n // Enable forceGemini so that gemini is always enabled. This is\n // to avoid future issues where a feature is implemented without\n // doing QA on every OS/browser combination.\n //\n // By default GeminiScrollbar allows native scrollbars to be used\n // on macOS. Use forceGemini to enable Gemini's non-native\n // scrollbars on all OSs.\n\n return _react2.default.createElement(\n _reactGeminiScrollbar2.default,\n (0, _extends3.default)({ ref: wrappedRef, forceGemini: true }, wrappedProps),\n props.children\n );\n}\nexports.default = GeminiScrollbarWrapper;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GeminiScrollbarWrapper.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar GroupsButton = function GroupsButton(props) {\n var ActionButton = _index2.default.getComponent('elements.ActionButton');\n return _react2.default.createElement(ActionButton, { action: 'view_my_groups',\n label: (0, _languageHandler._t)(\"Communities\"),\n iconPath: 'img/icons-groups.svg',\n size: props.size,\n tooltip: props.tooltip\n });\n};\n\nGroupsButton.propTypes = {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool\n};\n\nexports.default = GroupsButton;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupsButton.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar HomeButton = function HomeButton(props) {\n var ActionButton = _index2.default.getComponent('elements.ActionButton');\n return _react2.default.createElement(ActionButton, { action: 'view_home_page',\n label: (0, _languageHandler._t)(\"Home\"),\n iconPath: 'img/icons-home.svg',\n size: props.size,\n tooltip: props.tooltip\n });\n};\n\nHomeButton.propTypes = {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool\n};\n\nexports.default = HomeButton;\nmodule.exports = exports['default'];\n//# sourceMappingURL=HomeButton.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _DateUtils = require('../../../DateUtils');\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar React = require('react');\n\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar filesize = require('filesize');\nvar AccessibleButton = require('../../../components/views/elements/AccessibleButton');\nvar Modal = require('../../../Modal');\nvar sdk = require('../../../index');\n\n\nmodule.exports = React.createClass({\n displayName: 'ImageView',\n\n propTypes: {\n src: React.PropTypes.string.isRequired, // the source of the image being displayed\n name: React.PropTypes.string, // the main title ('name') for the image\n link: React.PropTypes.string, // the link (if any) applied to the name of the image\n width: React.PropTypes.number, // width of the image src in pixels\n height: React.PropTypes.number, // height of the image src in pixels\n fileSize: React.PropTypes.number, // size of the image src in bytes\n onFinished: React.PropTypes.func.isRequired, // callback when the lightbox is dismissed\n\n // the event (if any) that the Image is displaying. Used for event-specific stuff like\n // redactions, senders, timestamps etc. Other descriptors are taken from the explicit\n // properties above, which let us use lightboxes to display images which aren't associated\n // with events.\n mxEvent: React.PropTypes.object\n },\n\n // XXX: keyboard shortcuts for managing dialogs should be done by the modal\n // dialog base class somehow, surely...\n componentDidMount: function componentDidMount() {\n document.addEventListener(\"keydown\", this.onKeyDown);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n document.removeEventListener(\"keydown\", this.onKeyDown);\n },\n\n onKeyDown: function onKeyDown(ev) {\n if (ev.keyCode == 27) {\n // escape\n ev.stopPropagation();\n ev.preventDefault();\n this.props.onFinished();\n }\n },\n\n onRedactClick: function onRedactClick() {\n var _this = this;\n\n var ConfirmRedactDialog = sdk.getComponent(\"dialogs.ConfirmRedactDialog\");\n Modal.createTrackedDialog('Confirm Redact Dialog', 'Image View', ConfirmRedactDialog, {\n onFinished: function onFinished(proceed) {\n if (!proceed) return;\n var self = _this;\n MatrixClientPeg.get().redactEvent(_this.props.mxEvent.getRoomId(), _this.props.mxEvent.getId()).catch(function (e) {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n // display error message stating you couldn't delete this.\n var code = e.errcode || e.statusCode;\n Modal.createTrackedDialog('You cannot delete this image.', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: (0, _languageHandler._t)('You cannot delete this image. (%(code)s)', { code: code })\n });\n }).done();\n }\n });\n },\n\n getName: function getName() {\n var name = this.props.name;\n if (name && this.props.link) {\n name = React.createElement(\n 'a',\n { href: this.props.link, target: '_blank', rel: 'noopener' },\n name\n );\n }\n return name;\n },\n\n render: function render() {\n\n /*\n // In theory max-width: 80%, max-height: 80% on the CSS should work\n // but in practice, it doesn't, so do it manually:\n \n var width = this.props.width || 500;\n var height = this.props.height || 500;\n \n var maxWidth = document.documentElement.clientWidth * 0.8;\n var maxHeight = document.documentElement.clientHeight * 0.8;\n \n var widthFrac = width / maxWidth;\n var heightFrac = height / maxHeight;\n \n var displayWidth;\n var displayHeight;\n if (widthFrac > heightFrac) {\n displayWidth = Math.min(width, maxWidth);\n displayHeight = (displayWidth / width) * height;\n } else {\n displayHeight = Math.min(height, maxHeight);\n displayWidth = (displayHeight / height) * width;\n }\n \n var style = {\n width: displayWidth,\n height: displayHeight\n };\n */\n var style, res;\n\n if (this.props.width && this.props.height) {\n style = {\n width: this.props.width,\n height: this.props.height\n };\n res = style.width + \"x\" + style.height + \"px\";\n }\n\n var size;\n if (this.props.fileSize) {\n size = filesize(this.props.fileSize);\n }\n\n var size_res;\n if (size && res) {\n size_res = size + \", \" + res;\n } else {\n size_res = size || res;\n }\n\n var showEventMeta = !!this.props.mxEvent;\n\n var eventMeta;\n if (showEventMeta) {\n // Figure out the sender, defaulting to mxid\n var sender = this.props.mxEvent.getSender();\n var room = MatrixClientPeg.get().getRoom(this.props.mxEvent.getRoomId());\n if (room) {\n var member = room.getMember(sender);\n if (member) sender = member.name;\n }\n\n eventMeta = React.createElement(\n 'div',\n { className: 'mx_ImageView_metadata' },\n (0, _languageHandler._t)('Uploaded on %(date)s by %(user)s', { date: (0, _DateUtils.formatDate)(new Date(this.props.mxEvent.getTs())), user: sender })\n );\n }\n\n var eventRedact;\n if (showEventMeta) {\n eventRedact = React.createElement(\n 'div',\n { className: 'mx_ImageView_button', onClick: this.onRedactClick },\n (0, _languageHandler._t)('Remove')\n );\n }\n\n return React.createElement(\n 'div',\n { className: 'mx_ImageView' },\n React.createElement('div', { className: 'mx_ImageView_lhs' }),\n React.createElement(\n 'div',\n { className: 'mx_ImageView_content' },\n React.createElement('img', { src: this.props.src, style: style }),\n React.createElement(\n 'div',\n { className: 'mx_ImageView_labelWrapper' },\n React.createElement(\n 'div',\n { className: 'mx_ImageView_label' },\n React.createElement(\n AccessibleButton,\n { className: 'mx_ImageView_cancel', onClick: this.props.onFinished },\n React.createElement('img', { src: 'img/cancel-white.svg', width: '18', height: '18', alt: (0, _languageHandler._t)('Close') })\n ),\n React.createElement('div', { className: 'mx_ImageView_shim' }),\n React.createElement(\n 'div',\n { className: 'mx_ImageView_name' },\n this.getName()\n ),\n eventMeta,\n React.createElement(\n 'a',\n { className: 'mx_ImageView_link', href: this.props.src, download: this.props.name, target: '_blank', rel: 'noopener' },\n React.createElement(\n 'div',\n { className: 'mx_ImageView_download' },\n (0, _languageHandler._t)('Download this file'),\n React.createElement('br', null),\n React.createElement(\n 'span',\n { className: 'mx_ImageView_size' },\n size_res\n )\n )\n ),\n eventRedact,\n React.createElement('div', { className: 'mx_ImageView_shim' })\n )\n )\n ),\n React.createElement('div', { className: 'mx_ImageView_rhs' })\n );\n }\n});\n//# sourceMappingURL=ImageView.js.map","'use strict';\n\n/*\nCopyright 2017 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require('react');\n\nmodule.exports = React.createClass({\n displayName: 'InlineSpinner',\n\n render: function render() {\n var w = this.props.w || 16;\n var h = this.props.h || 16;\n var imgClass = this.props.imgClassName || \"\";\n\n return React.createElement(\n 'div',\n { className: 'mx_InlineSpinner' },\n React.createElement('img', { src: 'img/spinner.gif', width: w, height: h, className: imgClass })\n );\n }\n});\n//# sourceMappingURL=InlineSpinner.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar languageHandler = _interopRequireWildcard(_languageHandler);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction languageMatchesSearchQuery(query, language) {\n if (language.label.toUpperCase().indexOf(query.toUpperCase()) == 0) return true;\n if (language.value.toUpperCase() == query.toUpperCase()) return true;\n return false;\n} /*\n Copyright 2017 Marcel Radzio (MTRNord)\n Copyright 2017 Vector Creations Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar LanguageDropdown = function (_React$Component) {\n (0, _inherits3.default)(LanguageDropdown, _React$Component);\n\n function LanguageDropdown(props) {\n (0, _classCallCheck3.default)(this, LanguageDropdown);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (LanguageDropdown.__proto__ || (0, _getPrototypeOf2.default)(LanguageDropdown)).call(this, props));\n\n _this._onSearchChange = _this._onSearchChange.bind(_this);\n\n _this.state = {\n searchQuery: '',\n langs: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(LanguageDropdown, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n languageHandler.getAllLanguagesFromJson().then(function (langs) {\n langs.sort(function (a, b) {\n if (a.label < b.label) return -1;\n if (a.label > b.label) return 1;\n return 0;\n });\n _this2.setState({ langs: langs });\n }).catch(function () {\n _this2.setState({ langs: ['en'] });\n }).done();\n\n if (!this.props.value) {\n // If no value is given, we start with the first\n // country selected, but our parent component\n // doesn't know this, therefore we do this.\n var language = _SettingsStore2.default.getValue(\"language\", null, /*excludeDefault:*/true);\n if (language) {\n this.props.onOptionChange(language);\n } else {\n var _language = languageHandler.normalizeLanguageKey(languageHandler.getLanguageFromBrowser());\n this.props.onOptionChange(_language);\n }\n }\n }\n }, {\n key: '_onSearchChange',\n value: function _onSearchChange(search) {\n this.setState({\n searchQuery: search\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n if (this.state.langs === null) {\n var Spinner = _index2.default.getComponent('elements.Spinner');\n return _react2.default.createElement(Spinner, null);\n }\n\n var Dropdown = _index2.default.getComponent('elements.Dropdown');\n\n var displayedLanguages = void 0;\n if (this.state.searchQuery) {\n displayedLanguages = this.state.langs.filter(function (lang) {\n return languageMatchesSearchQuery(_this3.state.searchQuery, lang);\n });\n } else {\n displayedLanguages = this.state.langs;\n }\n\n var options = displayedLanguages.map(function (language) {\n return _react2.default.createElement(\n 'div',\n { key: language.value },\n language.label\n );\n });\n\n // default value here too, otherwise we need to handle null / undefined\n // values between mounting and the initial value propgating\n var language = _SettingsStore2.default.getValue(\"language\", null, /*excludeDefault:*/true);\n var value = null;\n if (language) {\n value = this.props.value || language;\n } else {\n language = navigator.language || navigator.userLanguage;\n value = this.props.value || language;\n }\n\n return _react2.default.createElement(\n Dropdown,\n { className: this.props.className,\n onOptionChange: this.props.onOptionChange, onSearchChange: this._onSearchChange,\n searchEnabled: true, value: value\n },\n options\n );\n }\n }]);\n return LanguageDropdown;\n}(_react2.default.Component);\n\nexports.default = LanguageDropdown;\n\n\nLanguageDropdown.propTypes = {\n className: _propTypes2.default.string,\n onOptionChange: _propTypes2.default.func.isRequired,\n value: _propTypes2.default.string\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=LanguageDropdown.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MemberAvatar = require('../avatars/MemberAvatar.js'); /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MemberEventListSummary',\n\n propTypes: {\n // An array of member events to summarise\n events: _propTypes2.default.array.isRequired,\n // An array of EventTiles to render when expanded\n children: _propTypes2.default.array.isRequired,\n // The maximum number of names to show in either each summary e.g. 2 would result \"A, B and 234 others left\"\n summaryLength: _propTypes2.default.number,\n // The maximum number of avatars to display in the summary\n avatarsMaxLength: _propTypes2.default.number,\n // The minimum number of events needed to trigger summarisation\n threshold: _propTypes2.default.number,\n // Called when the MELS expansion is toggled\n onToggle: _propTypes2.default.func,\n // Whether or not to begin with state.expanded=true\n startExpanded: _propTypes2.default.bool\n },\n\n getInitialState: function getInitialState() {\n return {\n expanded: Boolean(this.props.startExpanded)\n };\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n summaryLength: 1,\n threshold: 3,\n avatarsMaxLength: 5\n };\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n // Update if\n // - The number of summarised events has changed\n // - or if the summary is currently expanded\n // - or if the summary is about to toggle to become collapsed\n // - or if there are fewEvents, meaning the child eventTiles are shown as-is\n return nextProps.events.length !== this.props.events.length || this.state.expanded || nextState.expanded || nextProps.events.length < this.props.threshold;\n },\n\n _toggleSummary: function _toggleSummary() {\n this.setState({\n expanded: !this.state.expanded\n });\n this.props.onToggle();\n },\n\n /**\n * Render the JSX for users aggregated by their transition sequences (`eventAggregates`) where\n * the sequences are ordered by `orderedTransitionSequences`.\n * @param {object[]} eventAggregates a map of transition sequence to array of user display names\n * or user IDs.\n * @param {string[]} orderedTransitionSequences an array which is some ordering of\n * `Object.keys(eventAggregates)`.\n * @returns {ReactElement} a single <span> containing the textual summary of the aggregated\n * events that occurred.\n */\n _renderSummary: function _renderSummary(eventAggregates, orderedTransitionSequences) {\n var _this = this;\n\n var summaries = orderedTransitionSequences.map(function (transitions) {\n var userNames = eventAggregates[transitions];\n var nameList = _this._renderNameList(userNames);\n\n var splitTransitions = transitions.split(',');\n\n // Some neighbouring transitions are common, so canonicalise some into \"pair\"\n // transitions\n var canonicalTransitions = _this._getCanonicalTransitions(splitTransitions);\n // Transform into consecutive repetitions of the same transition (like 5\n // consecutive 'joined_and_left's)\n var coalescedTransitions = _this._coalesceRepeatedTransitions(canonicalTransitions);\n\n var descs = coalescedTransitions.map(function (t) {\n return _this._getDescriptionForTransition(t.transitionType, userNames.length, t.repeats);\n });\n\n var desc = _this._renderCommaSeparatedList(descs);\n\n return (0, _languageHandler._t)('%(nameList)s %(transitionList)s', { nameList: nameList, transitionList: desc });\n });\n\n if (!summaries) {\n return null;\n }\n\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n\n return _react2.default.createElement(\n 'span',\n { className: 'mx_TextualEvent mx_MemberEventListSummary_summary' },\n _react2.default.createElement(\n EmojiText,\n null,\n summaries.join(\", \")\n )\n );\n },\n\n /**\n * @param {string[]} users an array of user display names or user IDs.\n * @returns {string} a comma-separated list that ends with \"and [n] others\" if there are\n * more items in `users` than `this.props.summaryLength`, which is the number of names\n * included before \"and [n] others\".\n */\n _renderNameList: function _renderNameList(users) {\n return this._renderCommaSeparatedList(users, this.props.summaryLength);\n },\n\n /**\n * Canonicalise an array of transitions such that some pairs of transitions become\n * single transitions. For example an input ['joined','left'] would result in an output\n * ['joined_and_left'].\n * @param {string[]} transitions an array of transitions.\n * @returns {string[]} an array of transitions.\n */\n _getCanonicalTransitions: function _getCanonicalTransitions(transitions) {\n var modMap = {\n 'joined': {\n 'after': 'left',\n 'newTransition': 'joined_and_left'\n },\n 'left': {\n 'after': 'joined',\n 'newTransition': 'left_and_joined'\n }\n // $currentTransition : {\n // 'after' : $nextTransition,\n // 'newTransition' : 'new_transition_type',\n // },\n };\n var res = [];\n\n for (var i = 0; i < transitions.length; i++) {\n var t = transitions[i];\n var t2 = transitions[i + 1];\n\n var transition = t;\n\n if (i < transitions.length - 1 && modMap[t] && modMap[t].after === t2) {\n transition = modMap[t].newTransition;\n i++;\n }\n\n res.push(transition);\n }\n return res;\n },\n\n /**\n * Transform an array of transitions into an array of transitions and how many times\n * they are repeated consecutively.\n *\n * An array of 123 \"joined_and_left\" transitions, would result in:\n * ```\n * [{\n * transitionType: \"joined_and_left\"\n * repeats: 123\n * }]\n * ```\n * @param {string[]} transitions the array of transitions to transform.\n * @returns {object[]} an array of coalesced transitions.\n */\n _coalesceRepeatedTransitions: function _coalesceRepeatedTransitions(transitions) {\n var res = [];\n for (var i = 0; i < transitions.length; i++) {\n if (res.length > 0 && res[res.length - 1].transitionType === transitions[i]) {\n res[res.length - 1].repeats += 1;\n } else {\n res.push({\n transitionType: transitions[i],\n repeats: 1\n });\n }\n }\n return res;\n },\n\n /**\n * For a certain transition, t, describe what happened to the users that\n * underwent the transition.\n * @param {string} t the transition type.\n * @param {integer} userCount number of usernames\n * @param {number} repeats the number of times the transition was repeated in a row.\n * @returns {string} the written Human Readable equivalent of the transition.\n */\n _getDescriptionForTransition: function _getDescriptionForTransition(t, userCount, repeats) {\n // The empty interpolations 'severalUsers' and 'oneUser'\n // are there only to show translators to non-English languages\n // that the verb is conjugated to plural or singular Subject.\n var res = null;\n switch (t) {\n case \"joined\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)sjoined %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)sjoined %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"left\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)sleft %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)sleft %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"joined_and_left\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)sjoined and left %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)sjoined and left %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"left_and_joined\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)sleft and rejoined %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)sleft and rejoined %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"invite_reject\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)srejected their invitations %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)srejected their invitation %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"invite_withdrawal\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)shad their invitations withdrawn %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)shad their invitation withdrawn %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"invited\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"were invited %(count)s times\", { count: repeats }) : (0, _languageHandler._t)(\"was invited %(count)s times\", { count: repeats });\n break;\n case \"banned\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"were banned %(count)s times\", { count: repeats }) : (0, _languageHandler._t)(\"was banned %(count)s times\", { count: repeats });\n break;\n case \"unbanned\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"were unbanned %(count)s times\", { count: repeats }) : (0, _languageHandler._t)(\"was unbanned %(count)s times\", { count: repeats });\n break;\n case \"kicked\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"were kicked %(count)s times\", { count: repeats }) : (0, _languageHandler._t)(\"was kicked %(count)s times\", { count: repeats });\n break;\n case \"changed_name\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)schanged their name %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)schanged their name %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"changed_avatar\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)schanged their avatar %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)schanged their avatar %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n }\n\n return res;\n },\n\n\n /**\n * Constructs a written English string representing `items`, with an optional limit on\n * the number of items included in the result. If specified and if the length of\n *`items` is greater than the limit, the string \"and n others\" will be appended onto\n * the result.\n * If `items` is empty, returns the empty string. If there is only one item, return\n * it.\n * @param {string[]} items the items to construct a string from.\n * @param {number?} itemLimit the number by which to limit the list.\n * @returns {string} a string constructed by joining `items` with a comma between each\n * item, but with the last item appended as \" and [lastItem]\".\n */\n _renderCommaSeparatedList: function _renderCommaSeparatedList(items, itemLimit) {\n var remaining = itemLimit === undefined ? 0 : Math.max(items.length - itemLimit, 0);\n if (items.length === 0) {\n return \"\";\n } else if (items.length === 1) {\n return items[0];\n } else if (remaining > 0) {\n items = items.slice(0, itemLimit);\n return (0, _languageHandler._t)(\"%(items)s and %(count)s others\", { items: items.join(', '), count: remaining });\n } else {\n var lastItem = items.pop();\n return (0, _languageHandler._t)(\"%(items)s and %(lastItem)s\", { items: items.join(', '), lastItem: lastItem });\n }\n },\n\n\n _renderAvatars: function _renderAvatars(roomMembers) {\n var avatars = roomMembers.slice(0, this.props.avatarsMaxLength).map(function (m) {\n return _react2.default.createElement(MemberAvatar, { key: m.userId, member: m, width: 14, height: 14 });\n });\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MemberEventListSummary_avatars', onClick: this._toggleSummary },\n avatars\n );\n },\n\n _getTransitionSequence: function _getTransitionSequence(events) {\n return events.map(this._getTransition);\n },\n\n /**\n * Label a given membership event, `e`, where `getContent().membership` has\n * changed for each transition allowed by the Matrix protocol. This attempts to\n * label the membership changes that occur in `../../../TextForEvent.js`.\n * @param {MatrixEvent} e the membership change event to label.\n * @returns {string?} the transition type given to this event. This defaults to `null`\n * if a transition is not recognised.\n */\n _getTransition: function _getTransition(e) {\n switch (e.mxEvent.getContent().membership) {\n case 'invite':\n return 'invited';\n case 'ban':\n return 'banned';\n case 'join':\n if (e.mxEvent.getPrevContent().membership === 'join') {\n if (e.mxEvent.getContent().displayname !== e.mxEvent.getPrevContent().displayname) {\n return 'changed_name';\n } else if (e.mxEvent.getContent().avatar_url !== e.mxEvent.getPrevContent().avatar_url) {\n return 'changed_avatar';\n }\n // console.log(\"MELS ignoring duplicate membership join event\");\n return null;\n } else {\n return 'joined';\n }\n case 'leave':\n if (e.mxEvent.getSender() === e.mxEvent.getStateKey()) {\n switch (e.mxEvent.getPrevContent().membership) {\n case 'invite':\n return 'invite_reject';\n default:\n return 'left';\n }\n }\n switch (e.mxEvent.getPrevContent().membership) {\n case 'invite':\n return 'invite_withdrawal';\n case 'ban':\n return 'unbanned';\n case 'join':\n return 'kicked';\n default:\n return 'left';\n }\n default:\n return null;\n }\n },\n\n _getAggregate: function _getAggregate(userEvents) {\n var _this2 = this;\n\n // A map of aggregate type to arrays of display names. Each aggregate type\n // is a comma-delimited string of transitions, e.g. \"joined,left,kicked\".\n // The array of display names is the array of users who went through that\n // sequence during eventsToRender.\n var aggregate = {\n // $aggregateType : []:string\n };\n // A map of aggregate types to the indices that order them (the index of\n // the first event for a given transition sequence)\n var aggregateIndices = {\n // $aggregateType : int\n };\n\n var users = (0, _keys2.default)(userEvents);\n users.forEach(function (userId) {\n var firstEvent = userEvents[userId][0];\n var displayName = firstEvent.displayName;\n\n var seq = _this2._getTransitionSequence(userEvents[userId]);\n if (!aggregate[seq]) {\n aggregate[seq] = [];\n aggregateIndices[seq] = -1;\n }\n\n aggregate[seq].push(displayName);\n\n if (aggregateIndices[seq] === -1 || firstEvent.index < aggregateIndices[seq]) {\n aggregateIndices[seq] = firstEvent.index;\n }\n });\n\n return {\n names: aggregate,\n indices: aggregateIndices\n };\n },\n\n render: function render() {\n var eventsToRender = this.props.events;\n var eventIds = eventsToRender.map(function (e) {\n return e.getId();\n }).join(',');\n var fewEvents = eventsToRender.length < this.props.threshold;\n var expanded = this.state.expanded || fewEvents;\n\n var expandedEvents = null;\n if (expanded) {\n expandedEvents = this.props.children;\n }\n\n if (fewEvents) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberEventListSummary', 'data-scroll-tokens': eventIds },\n expandedEvents\n );\n }\n\n // Map user IDs to an array of objects:\n var userEvents = {\n // $userId : [{\n // // The original event\n // mxEvent: e,\n // // The display name of the user (if not, then user ID)\n // displayName: e.target.name || userId,\n // // The original index of the event in this.props.events\n // index: index,\n // }]\n };\n\n var avatarMembers = [];\n eventsToRender.forEach(function (e, index) {\n var userId = e.getStateKey();\n // Initialise a user's events\n if (!userEvents[userId]) {\n userEvents[userId] = [];\n if (e.target) avatarMembers.push(e.target);\n }\n userEvents[userId].push({\n mxEvent: e,\n displayName: (e.target ? e.target.name : null) || userId,\n index: index\n });\n });\n\n var aggregate = this._getAggregate(userEvents);\n\n // Sort types by order of lowest event index within sequence\n var orderedTransitionSequences = (0, _keys2.default)(aggregate.names).sort(function (seq1, seq2) {\n return aggregate.indices[seq1] > aggregate.indices[seq2];\n });\n\n var summaryContainer = null;\n if (!expanded) {\n summaryContainer = _react2.default.createElement(\n 'div',\n { className: 'mx_EventTile_line' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_EventTile_info' },\n this._renderAvatars(avatarMembers),\n this._renderSummary(aggregate.names, orderedTransitionSequences)\n )\n );\n }\n var toggleButton = _react2.default.createElement(\n 'div',\n { className: \"mx_MemberEventListSummary_toggle\", onClick: this._toggleSummary },\n expanded ? (0, _languageHandler._t)('collapse') : (0, _languageHandler._t)('expand')\n );\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberEventListSummary', 'data-scroll-tokens': eventIds },\n toggleButton,\n summaryContainer,\n expanded ? _react2.default.createElement(\n 'div',\n { className: 'mx_MemberEventListSummary_line' },\n '\\xA0'\n ) : null,\n expandedEvents\n );\n }\n});\n//# sourceMappingURL=MemberEventListSummary.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _resizeObserverPolyfill = require('resize-observer-polyfill');\n\nvar _resizeObserverPolyfill2 = _interopRequireDefault(_resizeObserverPolyfill);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Shamelessly ripped off Modal.js. There's probably a better way\n// of doing reusable widgets like dialog boxes & menus where we go and\n// pass in a custom control as the actual body.\n\nfunction getContainer(containerId) {\n return document.getElementById(containerId);\n} /*\n Copyright 2018 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction getOrCreateContainer(containerId) {\n var container = getContainer(containerId);\n\n if (!container) {\n container = document.createElement(\"div\");\n container.id = containerId;\n document.body.appendChild(container);\n }\n\n return container;\n}\n\n/*\n * Class of component that renders its children in a separate ReactDOM virtual tree\n * in a container element appended to document.body.\n *\n * This prevents the children from being unmounted when the parent of PersistedElement\n * unmounts, allowing them to persist.\n *\n * When PE is unmounted, it hides the children using CSS. When mounted or updated, the\n * children are made visible and are positioned into a div that is given the same\n * bounding rect as the parent of PE.\n */\n\nvar PersistedElement = function (_React$Component) {\n (0, _inherits3.default)(PersistedElement, _React$Component);\n\n function PersistedElement() {\n (0, _classCallCheck3.default)(this, PersistedElement);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (PersistedElement.__proto__ || (0, _getPrototypeOf2.default)(PersistedElement)).call(this));\n\n _this.collectChildContainer = _this.collectChildContainer.bind(_this);\n _this.collectChild = _this.collectChild.bind(_this);\n _this._repositionChild = _this._repositionChild.bind(_this);\n _this._onAction = _this._onAction.bind(_this);\n\n _this.resizeObserver = new _resizeObserverPolyfill2.default(_this._repositionChild);\n // Annoyingly, a resize observer is insufficient, since we also care\n // about when the element moves on the screen without changing its\n // dimensions. Doesn't look like there's a ResizeObserver equivalent\n // for this, so we bodge it by listening for document resize and\n // the timeline_resize action.\n window.addEventListener('resize', _this._repositionChild);\n _this._dispatcherRef = _dispatcher2.default.register(_this._onAction);\n return _this;\n }\n\n /**\n * Removes the DOM elements created when a PersistedElement with the given\n * persistKey was mounted. The DOM elements will be re-added if another\n * PeristedElement is mounted in the future.\n *\n * @param {string} persistKey Key used to uniquely identify this PersistedElement\n */\n\n\n (0, _createClass3.default)(PersistedElement, [{\n key: 'collectChildContainer',\n value: function collectChildContainer(ref) {\n if (this.childContainer) {\n this.resizeObserver.unobserve(this.childContainer);\n }\n this.childContainer = ref;\n if (ref) {\n this.resizeObserver.observe(ref);\n }\n }\n }, {\n key: 'collectChild',\n value: function collectChild(ref) {\n this.child = ref;\n this.updateChild();\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.updateChild();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.updateChild();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.updateChildVisibility(this.child, false);\n this.resizeObserver.disconnect();\n window.removeEventListener('resize', this._repositionChild);\n _dispatcher2.default.unregister(this._dispatcherRef);\n }\n }, {\n key: '_onAction',\n value: function _onAction(payload) {\n if (payload.action === 'timeline_resize') {\n this._repositionChild();\n }\n }\n }, {\n key: '_repositionChild',\n value: function _repositionChild() {\n this.updateChildPosition(this.child, this.childContainer);\n }\n }, {\n key: 'updateChild',\n value: function updateChild() {\n this.updateChildPosition(this.child, this.childContainer);\n this.updateChildVisibility(this.child, true);\n }\n }, {\n key: 'updateChildVisibility',\n value: function updateChildVisibility(child, visible) {\n if (!child) return;\n child.style.display = visible ? 'block' : 'none';\n }\n }, {\n key: 'updateChildPosition',\n value: function updateChildPosition(child, parent) {\n if (!child || !parent) return;\n\n var parentRect = parent.getBoundingClientRect();\n (0, _assign2.default)(child.style, {\n position: 'absolute',\n top: parentRect.top + 'px',\n left: parentRect.left + 'px',\n width: parentRect.width + 'px',\n height: parentRect.height + 'px'\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var content = _react2.default.createElement(\n 'div',\n { ref: this.collectChild, style: this.props.style },\n this.props.children\n );\n\n _reactDom2.default.render(content, getOrCreateContainer('mx_persistedElement_' + this.props.persistKey));\n\n return _react2.default.createElement('div', { ref: this.collectChildContainer });\n }\n }], [{\n key: 'destroyElement',\n value: function destroyElement(persistKey) {\n var container = getContainer('mx_persistedElement_' + persistKey);\n if (container) {\n container.remove();\n }\n }\n }, {\n key: 'isMounted',\n value: function isMounted(persistKey) {\n return Boolean(getContainer('mx_persistedElement_' + persistKey));\n }\n }]);\n return PersistedElement;\n}(_react2.default.Component);\n\nPersistedElement.propTypes = {\n // Unique identifier for this PersistedElement instance\n // Any PersistedElements with the same persistKey will use\n // the same DOM container.\n persistKey: _propTypes2.default.string.isRequired\n};\nexports.default = PersistedElement;\nmodule.exports = exports['default'];\n//# sourceMappingURL=PersistedElement.js.map","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\n/* eslint-disable require-jsdoc, valid-jsdoc */\nvar MapShim = (function () {\n if (typeof Map !== 'undefined') {\n return Map;\n }\n\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array<Array>} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\n function getIndex(arr, key) {\n var result = -1;\n\n arr.some(function (entry, index) {\n if (entry[0] === key) {\n result = index;\n\n return true;\n }\n\n return false;\n });\n\n return result;\n }\n\n return (function () {\n function anonymous() {\n this.__entries__ = [];\n }\n\n var prototypeAccessors = { size: { configurable: true } };\n\n /**\r\n * @returns {boolean}\r\n */\n prototypeAccessors.size.get = function () {\n return this.__entries__.length;\n };\n\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\n anonymous.prototype.get = function (key) {\n var index = getIndex(this.__entries__, key);\n var entry = this.__entries__[index];\n\n return entry && entry[1];\n };\n\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\n anonymous.prototype.set = function (key, value) {\n var index = getIndex(this.__entries__, key);\n\n if (~index) {\n this.__entries__[index][1] = value;\n } else {\n this.__entries__.push([key, value]);\n }\n };\n\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n anonymous.prototype.delete = function (key) {\n var entries = this.__entries__;\n var index = getIndex(entries, key);\n\n if (~index) {\n entries.splice(index, 1);\n }\n };\n\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n anonymous.prototype.has = function (key) {\n return !!~getIndex(this.__entries__, key);\n };\n\n /**\r\n * @returns {void}\r\n */\n anonymous.prototype.clear = function () {\n this.__entries__.splice(0);\n };\n\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\n anonymous.prototype.forEach = function (callback, ctx) {\n var this$1 = this;\n if ( ctx === void 0 ) ctx = null;\n\n for (var i = 0, list = this$1.__entries__; i < list.length; i += 1) {\n var entry = list[i];\n\n callback.call(ctx, entry[1], entry[0]);\n }\n };\n\n Object.defineProperties( anonymous.prototype, prototypeAccessors );\n\n return anonymous;\n }());\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\nvar global$1 = (function () {\n if (typeof global !== 'undefined' && global.Math === Math) {\n return global;\n }\n\n if (typeof self !== 'undefined' && self.Math === Math) {\n return self;\n }\n\n if (typeof window !== 'undefined' && window.Math === Math) {\n return window;\n }\n\n // eslint-disable-next-line no-new-func\n return Function('return this')();\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\nvar requestAnimationFrame$1 = (function () {\n if (typeof requestAnimationFrame === 'function') {\n // It's required to use a bounded function because IE sometimes throws\n // an \"Invalid calling object\" error if rAF is invoked without the global\n // object on the left hand side.\n return requestAnimationFrame.bind(global$1);\n }\n\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\n})();\n\n// Defines minimum timeout before adding a trailing call.\nvar trailingTimeout = 2;\n\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\nvar throttle = function (callback, delay) {\n var leadingCall = false,\n trailingCall = false,\n lastCallTime = 0;\n\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\n function resolvePending() {\n if (leadingCall) {\n leadingCall = false;\n\n callback();\n }\n\n if (trailingCall) {\n proxy();\n }\n }\n\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\n function timeoutCallback() {\n requestAnimationFrame$1(resolvePending);\n }\n\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\n function proxy() {\n var timeStamp = Date.now();\n\n if (leadingCall) {\n // Reject immediately following calls.\n if (timeStamp - lastCallTime < trailingTimeout) {\n return;\n }\n\n // Schedule new call to be in invoked when the pending one is resolved.\n // This is important for \"transitions\" which never actually start\n // immediately so there is a chance that we might miss one if change\n // happens amids the pending invocation.\n trailingCall = true;\n } else {\n leadingCall = true;\n trailingCall = false;\n\n setTimeout(timeoutCallback, delay);\n }\n\n lastCallTime = timeStamp;\n }\n\n return proxy;\n};\n\n// Minimum delay before invoking the update of observers.\nvar REFRESH_DELAY = 20;\n\n// A list of substrings of CSS properties used to find transition events that\n// might affect dimensions of observed elements.\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\n\n// Check if MutationObserver is available.\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\n\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\nvar ResizeObserverController = function() {\n this.connected_ = false;\n this.mutationEventsAdded_ = false;\n this.mutationsObserver_ = null;\n this.observers_ = [];\n\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\n};\n\n/**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\n\n\n/**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\n\n\n/**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\n\n/**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\nResizeObserverController.prototype.addObserver = function (observer) {\n if (!~this.observers_.indexOf(observer)) {\n this.observers_.push(observer);\n }\n\n // Add listeners if they haven't been added yet.\n if (!this.connected_) {\n this.connect_();\n }\n};\n\n/**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\nResizeObserverController.prototype.removeObserver = function (observer) {\n var observers = this.observers_;\n var index = observers.indexOf(observer);\n\n // Remove observer if it's present in registry.\n if (~index) {\n observers.splice(index, 1);\n }\n\n // Remove listeners if controller has no connected observers.\n if (!observers.length && this.connected_) {\n this.disconnect_();\n }\n};\n\n/**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\nResizeObserverController.prototype.refresh = function () {\n var changesDetected = this.updateObservers_();\n\n // Continue running updates if changes have been detected as there might\n // be future ones caused by CSS transitions.\n if (changesDetected) {\n this.refresh();\n }\n};\n\n/**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\nResizeObserverController.prototype.updateObservers_ = function () {\n // Collect observers that have active observations.\n var activeObservers = this.observers_.filter(function (observer) {\n return observer.gatherActive(), observer.hasActive();\n });\n\n // Deliver notifications in a separate cycle in order to avoid any\n // collisions between observers, e.g. when multiple instances of\n // ResizeObserver are tracking the same element and the callback of one\n // of them changes content dimensions of the observed target. Sometimes\n // this may result in notifications being blocked for the rest of observers.\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\n\n return activeObservers.length > 0;\n};\n\n/**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\nResizeObserverController.prototype.connect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already added.\n if (!isBrowser || this.connected_) {\n return;\n }\n\n // Subscription to the \"Transitionend\" event is used as a workaround for\n // delayed transitions. This way it's possible to capture at least the\n // final state of an element.\n document.addEventListener('transitionend', this.onTransitionEnd_);\n\n window.addEventListener('resize', this.refresh);\n\n if (mutationObserverSupported) {\n this.mutationsObserver_ = new MutationObserver(this.refresh);\n\n this.mutationsObserver_.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n } else {\n document.addEventListener('DOMSubtreeModified', this.refresh);\n\n this.mutationEventsAdded_ = true;\n }\n\n this.connected_ = true;\n};\n\n/**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\nResizeObserverController.prototype.disconnect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already removed.\n if (!isBrowser || !this.connected_) {\n return;\n }\n\n document.removeEventListener('transitionend', this.onTransitionEnd_);\n window.removeEventListener('resize', this.refresh);\n\n if (this.mutationsObserver_) {\n this.mutationsObserver_.disconnect();\n }\n\n if (this.mutationEventsAdded_) {\n document.removeEventListener('DOMSubtreeModified', this.refresh);\n }\n\n this.mutationsObserver_ = null;\n this.mutationEventsAdded_ = false;\n this.connected_ = false;\n};\n\n/**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\nResizeObserverController.prototype.onTransitionEnd_ = function (ref) {\n var propertyName = ref.propertyName; if ( propertyName === void 0 ) propertyName = '';\n\n // Detect whether transition may affect dimensions of an element.\n var isReflowProperty = transitionKeys.some(function (key) {\n return !!~propertyName.indexOf(key);\n });\n\n if (isReflowProperty) {\n this.refresh();\n }\n};\n\n/**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\nResizeObserverController.getInstance = function () {\n if (!this.instance_) {\n this.instance_ = new ResizeObserverController();\n }\n\n return this.instance_;\n};\n\nResizeObserverController.instance_ = null;\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\nvar defineConfigurable = (function (target, props) {\n for (var i = 0, list = Object.keys(props); i < list.length; i += 1) {\n var key = list[i];\n\n Object.defineProperty(target, key, {\n value: props[key],\n enumerable: false,\n writable: false,\n configurable: true\n });\n }\n\n return target;\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\nvar getWindowOf = (function (target) {\n // Assume that the element is an instance of Node, which means that it\n // has the \"ownerDocument\" property from which we can retrieve a\n // corresponding global object.\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\n\n // Return the local global object if it's not possible extract one from\n // provided element.\n return ownerGlobal || global$1;\n});\n\n// Placeholder of an empty content rectangle.\nvar emptyRect = createRectInit(0, 0, 0, 0);\n\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\nfunction toFloat(value) {\n return parseFloat(value) || 0;\n}\n\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\nfunction getBordersSize(styles) {\n var positions = [], len = arguments.length - 1;\n while ( len-- > 0 ) positions[ len ] = arguments[ len + 1 ];\n\n return positions.reduce(function (size, position) {\n var value = styles['border-' + position + '-width'];\n\n return size + toFloat(value);\n }, 0);\n}\n\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\nfunction getPaddings(styles) {\n var positions = ['top', 'right', 'bottom', 'left'];\n var paddings = {};\n\n for (var i = 0, list = positions; i < list.length; i += 1) {\n var position = list[i];\n\n var value = styles['padding-' + position];\n\n paddings[position] = toFloat(value);\n }\n\n return paddings;\n}\n\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\nfunction getSVGContentRect(target) {\n var bbox = target.getBBox();\n\n return createRectInit(0, 0, bbox.width, bbox.height);\n}\n\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\nfunction getHTMLElementContentRect(target) {\n // Client width & height properties can't be\n // used exclusively as they provide rounded values.\n var clientWidth = target.clientWidth;\n var clientHeight = target.clientHeight;\n\n // By this condition we can catch all non-replaced inline, hidden and\n // detached elements. Though elements with width & height properties less\n // than 0.5 will be discarded as well.\n //\n // Without it we would need to implement separate methods for each of\n // those cases and it's not possible to perform a precise and performance\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\n // gives wrong results for elements with width & height less than 0.5.\n if (!clientWidth && !clientHeight) {\n return emptyRect;\n }\n\n var styles = getWindowOf(target).getComputedStyle(target);\n var paddings = getPaddings(styles);\n var horizPad = paddings.left + paddings.right;\n var vertPad = paddings.top + paddings.bottom;\n\n // Computed styles of width & height are being used because they are the\n // only dimensions available to JS that contain non-rounded values. It could\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\n // affected by CSS transformations let alone paddings, borders and scroll bars.\n var width = toFloat(styles.width),\n height = toFloat(styles.height);\n\n // Width & height include paddings and borders when the 'border-box' box\n // model is applied (except for IE).\n if (styles.boxSizing === 'border-box') {\n // Following conditions are required to handle Internet Explorer which\n // doesn't include paddings and borders to computed CSS dimensions.\n //\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\n // properties then it's either IE, and thus we don't need to subtract\n // anything, or an element merely doesn't have paddings/borders styles.\n if (Math.round(width + horizPad) !== clientWidth) {\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\n }\n\n if (Math.round(height + vertPad) !== clientHeight) {\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\n }\n }\n\n // Following steps can't be applied to the document's root element as its\n // client[Width/Height] properties represent viewport area of the window.\n // Besides, it's as well not necessary as the <html> itself neither has\n // rendered scroll bars nor it can be clipped.\n if (!isDocumentElement(target)) {\n // In some browsers (only in Firefox, actually) CSS width & height\n // include scroll bars size which can be removed at this step as scroll\n // bars are the only difference between rounded dimensions + paddings\n // and \"client\" properties, though that is not always true in Chrome.\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\n\n // Chrome has a rather weird rounding of \"client\" properties.\n // E.g. for an element with content width of 314.2px it sometimes gives\n // the client width of 315px and for the width of 314.7px it may give\n // 314px. And it doesn't happen all the time. So just ignore this delta\n // as a non-relevant.\n if (Math.abs(vertScrollbar) !== 1) {\n width -= vertScrollbar;\n }\n\n if (Math.abs(horizScrollbar) !== 1) {\n height -= horizScrollbar;\n }\n }\n\n return createRectInit(paddings.left, paddings.top, width, height);\n}\n\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\nvar isSVGGraphicsElement = (function () {\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\n // interface.\n if (typeof SVGGraphicsElement !== 'undefined') {\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\n }\n\n // If it's so, then check that element is at least an instance of the\n // SVGElement and that it has the \"getBBox\" method.\n // eslint-disable-next-line no-extra-parens\n return function (target) { return target instanceof getWindowOf(target).SVGElement && typeof target.getBBox === 'function'; };\n})();\n\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\nfunction isDocumentElement(target) {\n return target === getWindowOf(target).document.documentElement;\n}\n\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\nfunction getContentRect(target) {\n if (!isBrowser) {\n return emptyRect;\n }\n\n if (isSVGGraphicsElement(target)) {\n return getSVGContentRect(target);\n }\n\n return getHTMLElementContentRect(target);\n}\n\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\nfunction createReadOnlyRect(ref) {\n var x = ref.x;\n var y = ref.y;\n var width = ref.width;\n var height = ref.height;\n\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\n var rect = Object.create(Constr.prototype);\n\n // Rectangle's properties are not writable and non-enumerable.\n defineConfigurable(rect, {\n x: x, y: y, width: width, height: height,\n top: y,\n right: x + width,\n bottom: height + y,\n left: x\n });\n\n return rect;\n}\n\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\nfunction createRectInit(x, y, width, height) {\n return { x: x, y: y, width: width, height: height };\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\nvar ResizeObservation = function(target) {\n this.broadcastWidth = 0;\n this.broadcastHeight = 0;\n this.contentRect_ = createRectInit(0, 0, 0, 0);\n\n this.target = target;\n};\n\n/**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\n\n\n/**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\n\n\n/**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\nResizeObservation.prototype.isActive = function () {\n var rect = getContentRect(this.target);\n\n this.contentRect_ = rect;\n\n return rect.width !== this.broadcastWidth || rect.height !== this.broadcastHeight;\n};\n\n/**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\nResizeObservation.prototype.broadcastRect = function () {\n var rect = this.contentRect_;\n\n this.broadcastWidth = rect.width;\n this.broadcastHeight = rect.height;\n\n return rect;\n};\n\nvar ResizeObserverEntry = function(target, rectInit) {\n var contentRect = createReadOnlyRect(rectInit);\n\n // According to the specification following properties are not writable\n // and are also not enumerable in the native implementation.\n //\n // Property accessors are not being used as they'd require to define a\n // private WeakMap storage which may cause memory leaks in browsers that\n // don't support this type of collections.\n defineConfigurable(this, { target: target, contentRect: contentRect });\n};\n\nvar ResizeObserverSPI = function(callback, controller, callbackCtx) {\n this.activeObservations_ = [];\n this.observations_ = new MapShim();\n\n if (typeof callback !== 'function') {\n throw new TypeError('The callback provided as parameter 1 is not a function.');\n }\n\n this.callback_ = callback;\n this.controller_ = controller;\n this.callbackCtx_ = callbackCtx;\n};\n\n/**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\n\n\n/**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map<Element, ResizeObservation>}\r\n */\n\n\n/**\r\n * Public ResizeObserver instance which will be passed to the callback\r\n * function and used as a value of it's \"this\" binding.\r\n *\r\n * @private {ResizeObserver}\r\n */\n\n/**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array<ResizeObservation>}\r\n */\nResizeObserverSPI.prototype.observe = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n\n // Do nothing if current environment doesn't have the Element interface.\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n\n var observations = this.observations_;\n\n // Do nothing if element is already being observed.\n if (observations.has(target)) {\n return;\n }\n\n observations.set(target, new ResizeObservation(target));\n\n this.controller_.addObserver(this);\n\n // Force the update of observations.\n this.controller_.refresh();\n};\n\n/**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\nResizeObserverSPI.prototype.unobserve = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n\n // Do nothing if current environment doesn't have the Element interface.\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n\n var observations = this.observations_;\n\n // Do nothing if element is not being observed.\n if (!observations.has(target)) {\n return;\n }\n\n observations.delete(target);\n\n if (!observations.size) {\n this.controller_.removeObserver(this);\n }\n};\n\n/**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\nResizeObserverSPI.prototype.disconnect = function () {\n this.clearActive();\n this.observations_.clear();\n this.controller_.removeObserver(this);\n};\n\n/**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\nResizeObserverSPI.prototype.gatherActive = function () {\n var this$1 = this;\n\n this.clearActive();\n\n this.observations_.forEach(function (observation) {\n if (observation.isActive()) {\n this$1.activeObservations_.push(observation);\n }\n });\n};\n\n/**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\nResizeObserverSPI.prototype.broadcastActive = function () {\n // Do nothing if observer doesn't have active observations.\n if (!this.hasActive()) {\n return;\n }\n\n var ctx = this.callbackCtx_;\n\n // Create ResizeObserverEntry instance for every active observation.\n var entries = this.activeObservations_.map(function (observation) {\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\n });\n\n this.callback_.call(ctx, entries, ctx);\n this.clearActive();\n};\n\n/**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\nResizeObserverSPI.prototype.clearActive = function () {\n this.activeObservations_.splice(0);\n};\n\n/**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\nResizeObserverSPI.prototype.hasActive = function () {\n return this.activeObservations_.length > 0;\n};\n\n// Registry of internal observers. If WeakMap is not available use current shim\n// for the Map collection as it has all required methods and because WeakMap\n// can't be fully polyfilled anyway.\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\n\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\nvar ResizeObserver = function(callback) {\n if (!(this instanceof ResizeObserver)) {\n throw new TypeError('Cannot call a class as a function.');\n }\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n\n var controller = ResizeObserverController.getInstance();\n var observer = new ResizeObserverSPI(callback, controller, this);\n\n observers.set(this, observer);\n};\n\n// Expose public methods of ResizeObserver.\n['observe', 'unobserve', 'disconnect'].forEach(function (method) {\n ResizeObserver.prototype[method] = function () {\n return (ref = observers.get(this))[method].apply(ref, arguments);\n var ref;\n };\n});\n\nvar index = (function () {\n // Export existing implementation if available.\n if (typeof global$1.ResizeObserver !== 'undefined') {\n return global$1.ResizeObserver;\n }\n\n return ResizeObserver;\n})();\n\nexport default index;\n","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _ActiveWidgetStore = require('../../../stores/ActiveWidgetStore');\n\nvar _ActiveWidgetStore2 = _interopRequireDefault(_ActiveWidgetStore);\n\nvar _WidgetUtils = require('../../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'PersistentApp',\n\n getInitialState: function getInitialState() {\n return {\n roomId: _RoomViewStore2.default.getRoomId(),\n persistentWidgetId: _ActiveWidgetStore2.default.getPersistentWidgetId()\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._roomStoreToken = _RoomViewStore2.default.addListener(this._onRoomViewStoreUpdate);\n _ActiveWidgetStore2.default.on('update', this._onActiveWidgetStoreUpdate);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (this._roomStoreToken) {\n this._roomStoreToken.remove();\n }\n _ActiveWidgetStore2.default.removeListener('update', this._onActiveWidgetStoreUpdate);\n },\n\n _onRoomViewStoreUpdate: function _onRoomViewStoreUpdate(payload) {\n if (_RoomViewStore2.default.getRoomId() === this.state.roomId) return;\n this.setState({\n roomId: _RoomViewStore2.default.getRoomId()\n });\n },\n\n _onActiveWidgetStoreUpdate: function _onActiveWidgetStoreUpdate() {\n this.setState({\n persistentWidgetId: _ActiveWidgetStore2.default.getPersistentWidgetId()\n });\n },\n\n render: function render() {\n if (this.state.persistentWidgetId) {\n var persistentWidgetInRoomId = _ActiveWidgetStore2.default.getRoomId(this.state.persistentWidgetId);\n if (this.state.roomId !== persistentWidgetInRoomId) {\n var persistentWidgetInRoom = _MatrixClientPeg2.default.get().getRoom(persistentWidgetInRoomId);\n // get the widget data\n var appEvent = _WidgetUtils2.default.getRoomWidgets(persistentWidgetInRoom).find(function (ev) {\n return ev.getStateKey() === _ActiveWidgetStore2.default.getPersistentWidgetId();\n });\n var app = _WidgetUtils2.default.makeAppConfig(appEvent.getStateKey(), appEvent.getContent(), appEvent.sender, persistentWidgetInRoomId);\n var capWhitelist = _WidgetUtils2.default.getCapWhitelistForAppTypeInRoomId(app.type, persistentWidgetInRoomId);\n var AppTile = _index2.default.getComponent('elements.AppTile');\n return _react2.default.createElement(AppTile, {\n key: app.id,\n id: app.id,\n url: app.url,\n name: app.name,\n type: app.type,\n fullWidth: true,\n room: persistentWidgetInRoom,\n userId: _MatrixClientPeg2.default.get().credentials.userId,\n show: true,\n creatorUserId: app.creatorUserId,\n widgetPageTitle: app.data && app.data.title ? app.data.title : '',\n waitForIframeLoad: app.waitForIframeLoad,\n whitelistCapabilities: capWhitelist,\n showDelete: false,\n showMinimise: false,\n miniMode: true\n });\n }\n }\n return null;\n }\n});\n//# sourceMappingURL=PersistentApp.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _linkifyMatrix = require('../../../linkify-matrix');\n\nvar _Rooms = require('../../../Rooms');\n\nvar _FlairStore = require('../../../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar REGEX_MATRIXTO = new RegExp(_linkifyMatrix.MATRIXTO_URL_PATTERN);\n\n// For URLs of matrix.to links in the timeline which have been reformatted by\n// HttpUtils transformTags to relative links. This excludes event URLs (with `[^\\/]*`)\nvar REGEX_LOCAL_MATRIXTO = /^#\\/(?:user|room|group)\\/(([#!@+])[^\\/]*)$/;\n\nvar Pill = _react2.default.createClass({\n displayName: 'Pill',\n\n statics: {\n isPillUrl: function isPillUrl(url) {\n return !!REGEX_MATRIXTO.exec(url);\n },\n isMessagePillUrl: function isMessagePillUrl(url) {\n return !!REGEX_LOCAL_MATRIXTO.exec(url);\n },\n roomNotifPos: function roomNotifPos(text) {\n return text.indexOf(\"@room\");\n },\n roomNotifLen: function roomNotifLen() {\n return \"@room\".length;\n },\n TYPE_USER_MENTION: 'TYPE_USER_MENTION',\n TYPE_ROOM_MENTION: 'TYPE_ROOM_MENTION',\n TYPE_GROUP_MENTION: 'TYPE_GROUP_MENTION',\n TYPE_AT_ROOM_MENTION: 'TYPE_AT_ROOM_MENTION' // '@room' mention\n },\n\n props: {\n // The Type of this Pill. If url is given, this is auto-detected.\n type: _propTypes2.default.string,\n // The URL to pillify (no validation is done, see isPillUrl and isMessagePillUrl)\n url: _propTypes2.default.string,\n // Whether the pill is in a message\n inMessage: _propTypes2.default.bool,\n // The room in which this pill is being rendered\n room: _propTypes2.default.instanceOf(_matrixJsSdk.Room),\n // Whether to include an avatar in the pill\n shouldShowPillAvatar: _propTypes2.default.bool,\n // Whether to render this pill as if it were highlit by a selection\n isSelected: _propTypes2.default.bool\n },\n\n childContextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getChildContext: function getChildContext() {\n return {\n matrixClient: this._matrixClient\n };\n },\n getInitialState: function getInitialState() {\n return {\n // ID/alias of the room/user\n resourceId: null,\n // Type of pill\n pillType: null,\n\n // The member related to the user pill\n member: null,\n // The group related to the group pill\n group: null,\n // The room related to the room pill\n room: null\n };\n },\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n var _this = this;\n\n return (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var regex, matrixToMatch, resourceId, prefix, pillType, member, group, room, localMember, localRoom, cli;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n regex = REGEX_MATRIXTO;\n\n if (nextProps.inMessage) {\n regex = REGEX_LOCAL_MATRIXTO;\n }\n\n matrixToMatch = void 0;\n resourceId = void 0;\n prefix = void 0;\n\n\n if (nextProps.url) {\n // Default to the empty array if no match for simplicity\n // resource and prefix will be undefined instead of throwing\n matrixToMatch = regex.exec(nextProps.url) || [];\n\n resourceId = matrixToMatch[1]; // The room/user ID\n prefix = matrixToMatch[2]; // The first character of prefix\n }\n\n pillType = _this.props.type || {\n '@': Pill.TYPE_USER_MENTION,\n '#': Pill.TYPE_ROOM_MENTION,\n '!': Pill.TYPE_ROOM_MENTION,\n '+': Pill.TYPE_GROUP_MENTION\n }[prefix];\n member = void 0;\n group = void 0;\n room = void 0;\n _context.t0 = pillType;\n _context.next = _context.t0 === Pill.TYPE_AT_ROOM_MENTION ? 13 : _context.t0 === Pill.TYPE_USER_MENTION ? 15 : _context.t0 === Pill.TYPE_ROOM_MENTION ? 19 : _context.t0 === Pill.TYPE_GROUP_MENTION ? 23 : 33;\n break;\n\n case 13:\n room = nextProps.room;\n return _context.abrupt('break', 33);\n\n case 15:\n localMember = nextProps.room.getMember(resourceId);\n\n member = localMember;\n if (!localMember) {\n member = new _matrixJsSdk.RoomMember(null, resourceId);\n _this.doProfileLookup(resourceId, member);\n }\n return _context.abrupt('break', 33);\n\n case 19:\n localRoom = resourceId[0] === '#' ? _MatrixClientPeg2.default.get().getRooms().find(function (r) {\n return r.getAliases().includes(resourceId);\n }) : _MatrixClientPeg2.default.get().getRoom(resourceId);\n\n room = localRoom;\n if (!localRoom) {\n // TODO: This would require a new API to resolve a room alias to\n // a room avatar and name.\n // this.doRoomProfileLookup(resourceId, member);\n }\n return _context.abrupt('break', 33);\n\n case 23:\n cli = _MatrixClientPeg2.default.get();\n _context.prev = 24;\n _context.next = 27;\n return (0, _bluebird.resolve)(_FlairStore2.default.getGroupProfileCached(cli, resourceId));\n\n case 27:\n group = _context.sent;\n _context.next = 33;\n break;\n\n case 30:\n _context.prev = 30;\n _context.t1 = _context['catch'](24);\n // if FlairStore failed, fall back to just groupId\n group = {\n groupId: resourceId,\n avatarUrl: null,\n name: null\n };\n\n case 33:\n _this.setState({ resourceId: resourceId, pillType: pillType, member: member, group: group, room: room });\n\n case 34:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this, [[24, 30]]);\n }))();\n },\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n this._matrixClient = _MatrixClientPeg2.default.get();\n this.componentWillReceiveProps(this.props);\n },\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n\n doProfileLookup: function doProfileLookup(userId, member) {\n var _this2 = this;\n\n _MatrixClientPeg2.default.get().getProfileInfo(userId).then(function (resp) {\n if (_this2._unmounted) {\n return;\n }\n member.name = resp.displayname;\n member.rawDisplayName = resp.displayname;\n member.events.member = {\n getContent: function getContent() {\n return { avatar_url: resp.avatar_url };\n },\n getDirectionalContent: function getDirectionalContent() {\n return this.getContent();\n }\n };\n _this2.setState({ member: member });\n }).catch(function (err) {\n console.error('Could not retrieve profile data for ' + userId + ':', err);\n });\n },\n\n onUserPillClicked: function onUserPillClicked() {\n _dispatcher2.default.dispatch({\n action: 'view_user',\n member: this.state.member\n });\n },\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('views.avatars.BaseAvatar');\n var MemberAvatar = _index2.default.getComponent('avatars.MemberAvatar');\n var RoomAvatar = _index2.default.getComponent('avatars.RoomAvatar');\n\n var resource = this.state.resourceId;\n\n var avatar = null;\n var linkText = resource;\n var pillClass = void 0;\n var userId = void 0;\n var href = this.props.url;\n var onClick = void 0;\n switch (this.state.pillType) {\n case Pill.TYPE_AT_ROOM_MENTION:\n {\n var _room = this.props.room;\n if (_room) {\n linkText = \"@room\";\n if (this.props.shouldShowPillAvatar) {\n avatar = _react2.default.createElement(RoomAvatar, { room: _room, width: 16, height: 16 });\n }\n pillClass = 'mx_AtRoomPill';\n }\n }\n break;\n case Pill.TYPE_USER_MENTION:\n {\n // If this user is not a member of this room, default to the empty member\n var _member = this.state.member;\n if (_member) {\n userId = _member.userId;\n _member.rawDisplayName = _member.rawDisplayName || '';\n linkText = _member.rawDisplayName;\n if (this.props.shouldShowPillAvatar) {\n avatar = _react2.default.createElement(MemberAvatar, { member: _member, width: 16, height: 16 });\n }\n pillClass = 'mx_UserPill';\n href = null;\n onClick = this.onUserPillClicked;\n }\n }\n break;\n case Pill.TYPE_ROOM_MENTION:\n {\n var _room2 = this.state.room;\n if (_room2) {\n linkText = (_room2 ? (0, _Rooms.getDisplayAliasForRoom)(_room2) : null) || resource;\n if (this.props.shouldShowPillAvatar) {\n avatar = _react2.default.createElement(RoomAvatar, { room: _room2, width: 16, height: 16 });\n }\n pillClass = 'mx_RoomPill';\n }\n }\n break;\n case Pill.TYPE_GROUP_MENTION:\n {\n if (this.state.group) {\n var _state$group = this.state.group,\n avatarUrl = _state$group.avatarUrl,\n groupId = _state$group.groupId,\n name = _state$group.name;\n\n var cli = _MatrixClientPeg2.default.get();\n\n linkText = groupId;\n if (this.props.shouldShowPillAvatar) {\n avatar = _react2.default.createElement(BaseAvatar, { name: name || groupId, width: 16, height: 16,\n url: avatarUrl ? cli.mxcUrlToHttp(avatarUrl, 16, 16) : null });\n }\n pillClass = 'mx_GroupPill';\n }\n }\n break;\n }\n\n var classes = (0, _classnames2.default)(pillClass, {\n \"mx_UserPill_me\": userId === _MatrixClientPeg2.default.get().credentials.userId,\n \"mx_UserPill_selected\": this.props.isSelected\n });\n\n if (this.state.pillType) {\n return this.props.inMessage ? _react2.default.createElement(\n 'a',\n { className: classes, href: href, onClick: onClick, title: resource, 'data-offset-key': this.props.offsetKey },\n avatar,\n linkText\n ) : _react2.default.createElement(\n 'span',\n { className: classes, title: resource, 'data-offset-key': this.props.offsetKey },\n avatar,\n linkText\n );\n } else {\n // Deliberately render nothing if the URL isn't recognised\n return null;\n }\n }\n});\n\nexports.default = Pill;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Pill.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _Roles = require('../../../Roles');\n\nvar Roles = _interopRequireWildcard(_Roles);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'PowerSelector',\n\n propTypes: {\n value: _propTypes2.default.number.isRequired,\n // The maximum value that can be set with the power selector\n maxValue: _propTypes2.default.number.isRequired,\n\n // Default user power level for the room\n usersDefault: _propTypes2.default.number.isRequired,\n\n // if true, the <select/> should be a 'controlled' form element and updated by React\n // to reflect the current value, rather than left freeform.\n // MemberInfo uses controlled; RoomSettings uses non-controlled.\n //\n // ignored if disabled is truthy. false by default.\n controlled: _propTypes2.default.bool,\n\n // should the user be able to change the value? false by default.\n disabled: _propTypes2.default.bool,\n onChange: _propTypes2.default.func,\n\n // Optional key to pass as the second argument to `onChange`\n powerLevelKey: _propTypes2.default.string\n },\n\n getInitialState: function getInitialState() {\n return {\n levelRoleMap: {},\n // List of power levels to show in the drop-down\n options: []\n };\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n maxValue: Infinity,\n usersDefault: 0\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._initStateFromProps(this.props);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n this._initStateFromProps(newProps);\n },\n\n _initStateFromProps: function _initStateFromProps(newProps) {\n // This needs to be done now because levelRoleMap has translated strings\n var levelRoleMap = Roles.levelRoleMap(newProps.usersDefault);\n var options = (0, _keys2.default)(levelRoleMap).filter(function (l) {\n return l === undefined || l <= newProps.maxValue;\n });\n\n this.setState({\n levelRoleMap: levelRoleMap,\n options: options,\n custom: levelRoleMap[newProps.value] === undefined\n });\n },\n\n onSelectChange: function onSelectChange(event) {\n this.setState({ custom: event.target.value === \"SELECT_VALUE_CUSTOM\" });\n if (event.target.value !== \"SELECT_VALUE_CUSTOM\") {\n this.props.onChange(event.target.value, this.props.powerLevelKey);\n }\n },\n\n onCustomBlur: function onCustomBlur(event) {\n this.props.onChange(parseInt(this.refs.custom.value), this.props.powerLevelKey);\n },\n\n onCustomKeyDown: function onCustomKeyDown(event) {\n if (event.key == \"Enter\") {\n this.props.onChange(parseInt(this.refs.custom.value), this.props.powerLevelKey);\n }\n },\n\n render: function render() {\n var _this = this;\n\n var customPicker = void 0;\n if (this.state.custom) {\n if (this.props.disabled) {\n customPicker = _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Custom of %(powerLevel)s\", { powerLevel: this.props.value })\n );\n } else {\n customPicker = _react2.default.createElement(\n 'span',\n null,\n ' = ',\n _react2.default.createElement('input', {\n ref: 'custom',\n type: 'text',\n size: '3',\n defaultValue: this.props.value,\n onBlur: this.onCustomBlur,\n onKeyDown: this.onCustomKeyDown\n })\n );\n }\n }\n\n var selectValue = void 0;\n if (this.state.custom) {\n selectValue = \"SELECT_VALUE_CUSTOM\";\n } else {\n selectValue = this.state.levelRoleMap[this.props.value] ? this.props.value : \"SELECT_VALUE_CUSTOM\";\n }\n var select = void 0;\n if (this.props.disabled) {\n select = _react2.default.createElement(\n 'span',\n null,\n this.state.levelRoleMap[selectValue]\n );\n } else {\n // Each level must have a definition in this.state.levelRoleMap\n var options = this.state.options.map(function (level) {\n return {\n value: level,\n text: Roles.textualPowerLevel(level, _this.props.usersDefault)\n };\n });\n options.push({ value: \"SELECT_VALUE_CUSTOM\", text: (0, _languageHandler._t)(\"Custom level\") });\n options = options.map(function (op) {\n return _react2.default.createElement(\n 'option',\n { value: op.value, key: op.value },\n op.text\n );\n });\n\n select = _react2.default.createElement(\n 'select',\n { ref: 'select',\n value: this.props.controlled ? selectValue : undefined,\n defaultValue: !this.props.controlled ? selectValue : undefined,\n onChange: this.onSelectChange },\n options\n );\n }\n\n return _react2.default.createElement(\n 'span',\n { className: 'mx_PowerSelector' },\n select,\n customPicker\n );\n }\n});\n//# sourceMappingURL=PowerSelector.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nmodule.exports = React.createClass({\n displayName: 'ProgressBar',\n propTypes: {\n value: _propTypes2.default.number,\n max: _propTypes2.default.number\n },\n\n render: function render() {\n // Would use an HTML5 progress tag but if that doesn't animate if you\n // use the HTML attributes rather than styles\n var progressStyle = {\n width: this.props.value / this.props.max * 100 + \"%\"\n };\n return React.createElement(\n 'div',\n { className: 'mx_ProgressBar' },\n React.createElement('div', { className: 'mx_ProgressBar_fill', style: progressStyle })\n );\n }\n});\n//# sourceMappingURL=ProgressBar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar RoomDirectoryButton = function RoomDirectoryButton(props) {\n var ActionButton = _index2.default.getComponent('elements.ActionButton');\n return _react2.default.createElement(ActionButton, { action: 'view_room_directory',\n mouseOverAction: props.callout ? \"callout_room_directory\" : null,\n label: (0, _languageHandler._t)(\"Room directory\"),\n iconPath: 'img/icons-directory.svg',\n size: props.size,\n tooltip: props.tooltip\n });\n};\n\nRoomDirectoryButton.propTypes = {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool\n};\n\nexports.default = RoomDirectoryButton;\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomDirectoryButton.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar SettingsButton = function SettingsButton(props) {\n var ActionButton = _index2.default.getComponent('elements.ActionButton');\n return _react2.default.createElement(ActionButton, { action: 'view_user_settings',\n label: (0, _languageHandler._t)(\"Settings\"),\n iconPath: 'img/icons-settings.svg',\n size: props.size,\n tooltip: props.tooltip\n });\n};\n\nSettingsButton.propTypes = {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool\n};\n\nexports.default = SettingsButton;\nmodule.exports = exports['default'];\n//# sourceMappingURL=SettingsButton.js.map","\"use strict\";\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _SettingsStore = require(\"../../../settings/SettingsStore\");\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'SettingsFlag',\n propTypes: {\n name: _propTypes2.default.string.isRequired,\n level: _propTypes2.default.string.isRequired,\n roomId: _propTypes2.default.string, // for per-room settings\n label: _propTypes2.default.string, // untranslated\n onChange: _propTypes2.default.func,\n isExplicit: _propTypes2.default.bool,\n manualSave: _propTypes2.default.bool,\n\n // If group is supplied, then this will create a radio button instead.\n group: _propTypes2.default.string,\n value: _propTypes2.default.any // the value for the radio button\n },\n\n getInitialState: function getInitialState() {\n return {\n value: _SettingsStore2.default.getValueAt(this.props.level, this.props.name, this.props.roomId, this.props.isExplicit)\n };\n },\n\n onChange: function onChange(e) {\n if (this.props.group && !e.target.checked) return;\n\n var newState = this.props.group ? this.props.value : e.target.checked;\n if (!this.props.manualSave) this.save(newState);else this.setState({ value: newState });\n if (this.props.onChange) this.props.onChange(newState);\n },\n\n save: function save() {\n var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n return _SettingsStore2.default.setValue(this.props.name, this.props.roomId, this.props.level, val !== undefined ? val : this.state.value);\n },\n\n render: function render() {\n var value = this.props.manualSave ? this.state.value : _SettingsStore2.default.getValueAt(this.props.level, this.props.name, this.props.roomId, this.props.isExplicit);\n\n var canChange = _SettingsStore2.default.canSetValue(this.props.name, this.props.roomId, this.props.level);\n\n var label = this.props.label;\n if (!label) label = _SettingsStore2.default.getDisplayName(this.props.name, this.props.level);else label = (0, _languageHandler._t)(label);\n\n // We generate a relatively complex ID to avoid conflicts\n var id = this.props.name + \"_\" + this.props.group + \"_\" + this.props.value + \"_\" + this.props.level;\n var checkbox = _react2.default.createElement(\"input\", { id: id,\n type: \"checkbox\",\n defaultChecked: value,\n onChange: this.onChange,\n disabled: !canChange\n });\n if (this.props.group) {\n checkbox = _react2.default.createElement(\"input\", { id: id,\n type: \"radio\",\n name: this.props.group,\n value: this.props.value,\n checked: value === this.props.value,\n onChange: this.onChange,\n disabled: !canChange\n });\n }\n\n return _react2.default.createElement(\n \"label\",\n null,\n checkbox,\n label\n );\n }\n});\n//# sourceMappingURL=SettingsFlag.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar React = require('react');\n\nmodule.exports = React.createClass({\n displayName: 'Spinner',\n\n render: function render() {\n var w = this.props.w || 32;\n var h = this.props.h || 32;\n var imgClass = this.props.imgClassName || \"\";\n return React.createElement(\n 'div',\n { className: 'mx_Spinner' },\n React.createElement('img', { src: 'img/spinner.gif', width: w, height: h, className: imgClass })\n );\n }\n});\n//# sourceMappingURL=Spinner.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar StartChatButton = function StartChatButton(props) {\n var ActionButton = _index2.default.getComponent('elements.ActionButton');\n return _react2.default.createElement(ActionButton, { action: 'view_create_chat',\n mouseOverAction: props.callout ? \"callout_start_chat\" : null,\n label: (0, _languageHandler._t)(\"Start chat\"),\n iconPath: 'img/icons-people.svg',\n size: props.size,\n tooltip: props.tooltip\n });\n};\n\nStartChatButton.propTypes = {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool\n};\n\nexports.default = StartChatButton;\nmodule.exports = exports['default'];\n//# sourceMappingURL=StartChatButton.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'ToolTipButton',\n\n getInitialState: function getInitialState() {\n return {\n hover: false\n };\n },\n\n onMouseOver: function onMouseOver() {\n this.setState({\n hover: true\n });\n },\n\n onMouseOut: function onMouseOut() {\n this.setState({\n hover: false\n });\n },\n\n render: function render() {\n var RoomTooltip = _index2.default.getComponent(\"rooms.RoomTooltip\");\n var tip = this.state.hover ? _react2.default.createElement(RoomTooltip, {\n className: 'mx_ToolTipButton_container',\n tooltipClassName: 'mx_ToolTipButton_helpText',\n label: this.props.helpText\n }) : _react2.default.createElement('div', null);\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ToolTipButton', onMouseOver: this.onMouseOver, onMouseOut: this.onMouseOut },\n '?',\n tip\n );\n }\n});\n//# sourceMappingURL=ToolTipButton.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'TruncatedList',\n\n propTypes: {\n // The number of elements to show before truncating. If negative, no truncation is done.\n truncateAt: _propTypes2.default.number,\n // The className to apply to the wrapping div\n className: _propTypes2.default.string,\n // A function that returns the children to be rendered into the element.\n // function getChildren(start: number, end: number): Array<React.Node>\n // The start element is included, the end is not (as in `slice`).\n // If omitted, the React child elements will be used. This parameter can be used\n // to avoid creating unnecessary React elements.\n getChildren: _propTypes2.default.func,\n // A function that should return the total number of child element available.\n // Required if getChildren is supplied.\n getChildCount: _propTypes2.default.func,\n // A function which will be invoked when an overflow element is required.\n // This will be inserted after the children.\n createOverflowElement: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n truncateAt: 2,\n createOverflowElement: function createOverflowElement(overflowCount, totalCount) {\n return _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"And %(count)s more...\", { count: overflowCount })\n );\n }\n };\n },\n\n _getChildren: function _getChildren(start, end) {\n if (this.props.getChildren && this.props.getChildCount) {\n return this.props.getChildren(start, end);\n } else {\n // XXX: I'm not sure why anything would pass null into this, it seems\n // like a bizzare case to handle, but I'm preserving the behaviour.\n // (see commit 38d5c7d5c5d5a34dc16ef5d46278315f5c57f542)\n return _react2.default.Children.toArray(this.props.children).filter(function (c) {\n return c != null;\n }).slice(start, end);\n }\n },\n\n _getChildCount: function _getChildCount() {\n if (this.props.getChildren && this.props.getChildCount) {\n return this.props.getChildCount();\n } else {\n return _react2.default.Children.toArray(this.props.children).filter(function (c) {\n return c != null;\n }).length;\n }\n },\n\n render: function render() {\n var overflowNode = null;\n\n var totalChildren = this._getChildCount();\n var upperBound = totalChildren;\n if (this.props.truncateAt >= 0) {\n var overflowCount = totalChildren - this.props.truncateAt;\n if (overflowCount > 1) {\n overflowNode = this.props.createOverflowElement(overflowCount, totalChildren);\n upperBound = this.props.truncateAt;\n }\n }\n var childNodes = this._getChildren(0, upperBound);\n\n return _react2.default.createElement(\n 'div',\n { className: this.props.className },\n childNodes,\n overflowNode\n );\n }\n}); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=TruncatedList.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'UserSelector',\n\n propTypes: {\n onChange: _propTypes2.default.func,\n selected_users: _propTypes2.default.arrayOf(_react2.default.PropTypes.string)\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onChange: function onChange() {},\n selected: []\n };\n },\n\n addUser: function addUser(user_id) {\n if (this.props.selected_users.indexOf(user_id == -1)) {\n this.props.onChange(this.props.selected_users.concat([user_id]));\n }\n },\n\n removeUser: function removeUser(user_id) {\n this.props.onChange(this.props.selected_users.filter(function (e) {\n return e != user_id;\n }));\n },\n\n onAddUserId: function onAddUserId() {\n this.addUser(this.refs.user_id_input.value);\n this.refs.user_id_input.value = \"\";\n },\n\n render: function render() {\n var self = this;\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'ul',\n { className: 'mx_UserSelector_UserIdList', ref: 'list' },\n this.props.selected_users.map(function (user_id, i) {\n return _react2.default.createElement(\n 'li',\n { key: user_id },\n user_id,\n ' - ',\n _react2.default.createElement(\n 'span',\n { onClick: function onClick() {\n self.removeUser(user_id);\n } },\n 'X'\n )\n );\n })\n ),\n _react2.default.createElement('input', { type: 'text', ref: 'user_id_input', defaultValue: '', className: 'mx_UserSelector_userIdInput', placeholder: (0, _languageHandler._t)(\"ex. @bob:example.com\") }),\n _react2.default.createElement(\n 'button',\n { onClick: this.onAddUserId, className: 'mx_UserSelector_AddUserId' },\n (0, _languageHandler._t)(\"Add User\")\n )\n );\n }\n});\n//# sourceMappingURL=UserSelector.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Analytics = require('../../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar CookieBar = function (_React$Component) {\n (0, _inherits3.default)(CookieBar, _React$Component);\n\n function CookieBar() {\n (0, _classCallCheck3.default)(this, CookieBar);\n return (0, _possibleConstructorReturn3.default)(this, (CookieBar.__proto__ || (0, _getPrototypeOf2.default)(CookieBar)).call(this));\n }\n\n (0, _createClass3.default)(CookieBar, [{\n key: 'onUsageDataClicked',\n value: function onUsageDataClicked() {\n _Analytics2.default.showDetailsModal();\n }\n }, {\n key: 'onAccept',\n value: function onAccept() {\n _dispatcher2.default.dispatch({\n action: 'accept_cookies'\n });\n }\n }, {\n key: 'onReject',\n value: function onReject() {\n _dispatcher2.default.dispatch({\n action: 'reject_cookies'\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var toolbarClasses = \"mx_MatrixToolbar\";\n return _react2.default.createElement(\n 'div',\n { className: toolbarClasses },\n _react2.default.createElement('img', { className: 'mx_MatrixToolbar_warning', src: 'img/warning.svg', width: '24', height: '23', alt: '' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_content' },\n this.props.policyUrl ? (0, _languageHandler._t)(\"Please help improve Riot.im by sending <UsageDataLink>anonymous usage data</UsageDataLink>. \" + \"This will use a cookie \" + \"(please see our <PolicyLink>Cookie Policy</PolicyLink>).\", {}, {\n 'UsageDataLink': function UsageDataLink(sub) {\n return _react2.default.createElement(\n 'a',\n {\n className: 'mx_MatrixToolbar_link',\n href: 'javascript:;',\n onClick: _this2.onUsageDataClicked\n },\n sub\n );\n },\n // XXX: We need to link to the page that explains our cookies\n 'PolicyLink': function PolicyLink(sub) {\n return _react2.default.createElement(\n 'a',\n {\n className: 'mx_MatrixToolbar_link',\n target: '_blank',\n href: _this2.props.policyUrl\n },\n sub\n );\n }\n\n }) : (0, _languageHandler._t)(\"Please help improve Riot.im by sending <UsageDataLink>anonymous usage data</UsageDataLink>. \" + \"This will use a cookie.\", {}, {\n 'UsageDataLink': function UsageDataLink(sub) {\n return _react2.default.createElement(\n 'a',\n {\n className: 'mx_MatrixToolbar_link',\n href: 'javascript:;',\n onClick: _this2.onUsageDataClicked\n },\n sub\n );\n }\n })\n ),\n _react2.default.createElement(\n AccessibleButton,\n { element: 'button', className: 'mx_MatrixToolbar_action', onClick: this.onAccept },\n (0, _languageHandler._t)(\"Yes, I want to help!\")\n ),\n _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_MatrixToolbar_close', onClick: this.onReject },\n _react2.default.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18', alt: (0, _languageHandler._t)('Close') })\n )\n );\n }\n }]);\n return CookieBar;\n}(_react2.default.Component);\n\nCookieBar.propTypes = {\n policyUrl: _propTypes2.default.string\n};\nexports.default = CookieBar;\nmodule.exports = exports['default'];\n//# sourceMappingURL=CookieBar.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Notifier = require('../../../Notifier');\n\nvar _Notifier2 = _interopRequireDefault(_Notifier);\n\nvar _AccessibleButton = require('../../../components/views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MatrixToolbar',\n\n hideToolbar: function hideToolbar() {\n _Notifier2.default.setToolbarHidden(true);\n },\n\n onClick: function onClick() {\n _Notifier2.default.setEnabled(true);\n },\n\n render: function render() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar' },\n _react2.default.createElement('img', { className: 'mx_MatrixToolbar_warning', src: 'img/warning.svg', width: '24', height: '23' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_content' },\n (0, _languageHandler._t)('You are not receiving desktop notifications'),\n ' ',\n _react2.default.createElement(\n 'a',\n { className: 'mx_MatrixToolbar_link', onClick: this.onClick },\n ' ',\n (0, _languageHandler._t)('Enable them now')\n )\n ),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MatrixToolbar_close', onClick: this.hideToolbar },\n _react2.default.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18', alt: (0, _languageHandler._t)('Close') })\n )\n );\n }\n});\n//# sourceMappingURL=MatrixToolbar.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _PlatformPeg = require('../../../PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Check a version string is compatible with the Changelog\n * dialog ([vectorversion]-react-[react-sdk-version]-js-[js-sdk-version])\n */\nfunction checkVersion(ver) {\n var parts = ver.split('-');\n return parts.length == 5 && parts[1] == 'react' && parts[3] == 'js';\n}\n\nexports.default = _react2.default.createClass({\n displayName: 'NewVersionBar',\n\n propTypes: {\n version: _react2.default.PropTypes.string.isRequired,\n newVersion: _react2.default.PropTypes.string.isRequired,\n releaseNotes: _react2.default.PropTypes.string\n },\n\n displayReleaseNotes: function displayReleaseNotes(releaseNotes) {\n var QuestionDialog = _index2.default.getComponent('dialogs.QuestionDialog');\n _Modal2.default.createTrackedDialog('Display release notes', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"What's New\"),\n description: _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_changelog' },\n releaseNotes\n ),\n button: (0, _languageHandler._t)(\"Update\"),\n onFinished: function onFinished(update) {\n if (update && _PlatformPeg2.default.get()) {\n _PlatformPeg2.default.get().installUpdate();\n }\n }\n });\n },\n\n displayChangelog: function displayChangelog() {\n var ChangelogDialog = _index2.default.getComponent('dialogs.ChangelogDialog');\n _Modal2.default.createTrackedDialog('Display Changelog', '', ChangelogDialog, {\n version: this.props.version,\n newVersion: this.props.newVersion,\n onFinished: function onFinished(update) {\n if (update && _PlatformPeg2.default.get()) {\n _PlatformPeg2.default.get().installUpdate();\n }\n }\n });\n },\n\n onUpdateClicked: function onUpdateClicked() {\n _PlatformPeg2.default.get().installUpdate();\n },\n\n render: function render() {\n var action_button = void 0;\n // If we have release notes to display, we display them. Otherwise,\n // we display the Changelog Dialog which takes two versions and\n // automatically tells you what's changed (provided the versions\n // are in the right format)\n if (this.props.releaseNotes) {\n action_button = _react2.default.createElement(\n 'button',\n { className: 'mx_MatrixToolbar_action', onClick: this.displayReleaseNotes },\n (0, _languageHandler._t)(\"What's new?\")\n );\n } else if (checkVersion(this.props.version) && checkVersion(this.props.newVersion)) {\n action_button = _react2.default.createElement(\n 'button',\n { className: 'mx_MatrixToolbar_action', onClick: this.displayChangelog },\n (0, _languageHandler._t)(\"What's new?\")\n );\n } else if (_PlatformPeg2.default.get()) {\n action_button = _react2.default.createElement(\n 'button',\n { className: 'mx_MatrixToolbar_action', onClick: this.onUpdateClicked },\n (0, _languageHandler._t)(\"Update\")\n );\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar' },\n _react2.default.createElement('img', { className: 'mx_MatrixToolbar_warning', src: 'img/warning.svg', width: '24', height: '23' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_content' },\n (0, _languageHandler._t)(\"A new version of Riot is available.\")\n ),\n action_button\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=NewVersionBar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'PasswordNagBar',\n\n onUpdateClicked: function onUpdateClicked() {\n var SetPasswordDialog = _index2.default.getComponent('dialogs.SetPasswordDialog');\n _Modal2.default.createTrackedDialog('Set Password Dialog', 'Password Nag Bar', SetPasswordDialog);\n },\n\n render: function render() {\n var toolbarClasses = \"mx_MatrixToolbar mx_MatrixToolbar_clickable\";\n return _react2.default.createElement(\n 'div',\n { className: toolbarClasses, onClick: this.onUpdateClicked },\n _react2.default.createElement('img', { className: 'mx_MatrixToolbar_warning',\n src: 'img/warning.svg',\n width: '24',\n height: '23',\n alt: ''\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_content' },\n (0, _languageHandler._t)(\"To return to your account in future you need to <u>set a password</u>\", {}, { 'u': function u(sub) {\n return _react2.default.createElement(\n 'u',\n null,\n sub\n );\n } })\n ),\n _react2.default.createElement(\n 'button',\n { className: 'mx_MatrixToolbar_action' },\n (0, _languageHandler._t)(\"Set Password\")\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=PasswordNagBar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _ErrorUtils = require('../../../utils/ErrorUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'ServerLimitBar',\n\n propTypes: {\n // 'hard' if the logged in user has been locked out, 'soft' if they haven't\n kind: _propTypes2.default.string,\n adminContact: _propTypes2.default.string,\n // The type of limit that has been hit.\n limitType: _propTypes2.default.string.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n kind: 'hard'\n };\n },\n\n render: function render() {\n var toolbarClasses = {\n 'mx_MatrixToolbar': true\n };\n\n var adminContact = void 0;\n var limitError = void 0;\n if (this.props.kind === 'hard') {\n toolbarClasses['mx_MatrixToolbar_error'] = true;\n\n adminContact = (0, _ErrorUtils.messageForResourceLimitError)(this.props.limitType, this.props.adminContact, {\n '': (0, _languageHandler._td)(\"Please <a>contact your service administrator</a> to continue using the service.\")\n });\n limitError = (0, _ErrorUtils.messageForResourceLimitError)(this.props.limitType, this.props.adminContact, {\n 'monthly_active_user': (0, _languageHandler._td)(\"This homeserver has hit its Monthly Active User limit.\"),\n '': (0, _languageHandler._td)(\"This homeserver has exceeded one of its resource limits.\")\n });\n } else {\n toolbarClasses['mx_MatrixToolbar_info'] = true;\n adminContact = (0, _ErrorUtils.messageForResourceLimitError)(this.props.limitType, this.props.adminContact, {\n '': (0, _languageHandler._td)(\"Please <a>contact your service administrator</a> to get this limit increased.\")\n });\n limitError = (0, _ErrorUtils.messageForResourceLimitError)(this.props.limitType, this.props.adminContact, {\n 'monthly_active_user': (0, _languageHandler._td)(\"This homeserver has hit its Monthly Active User limit so \" + \"<b>some users will not be able to log in</b>.\"),\n '': (0, _languageHandler._td)(\"This homeserver has exceeded one of its resource limits so \" + \"<b>some users will not be able to log in</b>.\")\n }, { 'b': function b(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n sub\n );\n } });\n }\n return _react2.default.createElement(\n 'div',\n { className: (0, _classnames2.default)(toolbarClasses) },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_content' },\n limitError,\n ' ',\n adminContact\n )\n );\n }\n}); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=ServerLimitBar.js.map","/*\nCopyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _PlatformPeg = require('../../../PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _AccessibleButton = require('../../../components/views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'UpdateCheckBar',\n\n propTypes: {\n status: _react2.default.PropTypes.string.isRequired,\n // Currently for error detail but will be usable for download progress\n // once that is a thing that squirrel passes through electron.\n detail: _react2.default.PropTypes.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n detail: ''\n };\n },\n\n getStatusText: function getStatusText() {\n // we can't import the enum from riot-web as we don't want matrix-react-sdk\n // to depend on riot-web. so we grab it as a normal object via API instead.\n var updateCheckStatusEnum = _PlatformPeg2.default.get().getUpdateCheckStatusEnum();\n switch (this.props.status) {\n case updateCheckStatusEnum.ERROR:\n return (0, _languageHandler._t)('Error encountered (%(errorDetail)s).', { errorDetail: this.props.detail });\n case updateCheckStatusEnum.CHECKING:\n return (0, _languageHandler._t)('Checking for an update...');\n case updateCheckStatusEnum.NOTAVAILABLE:\n return (0, _languageHandler._t)('No update available.');\n case updateCheckStatusEnum.DOWNLOADING:\n return (0, _languageHandler._t)('Downloading update...');\n }\n },\n\n hideToolbar: function hideToolbar() {\n _PlatformPeg2.default.get().stopUpdateCheck();\n },\n\n render: function render() {\n var message = this.getStatusText();\n var warning = (0, _languageHandler._t)('Warning');\n\n if (!'getUpdateCheckStatusEnum' in _PlatformPeg2.default.get()) {\n return _react2.default.createElement('div', null);\n }\n\n var updateCheckStatusEnum = _PlatformPeg2.default.get().getUpdateCheckStatusEnum();\n var doneStatuses = [updateCheckStatusEnum.ERROR, updateCheckStatusEnum.NOTAVAILABLE];\n\n var image = void 0;\n if (doneStatuses.includes(this.props.status)) {\n image = _react2.default.createElement('img', { className: 'mx_MatrixToolbar_warning', src: 'img/warning.svg', width: '24', height: '23', alt: '' });\n } else {\n image = _react2.default.createElement('img', { className: 'mx_MatrixToolbar_warning', src: 'img/spinner.gif', width: '24', height: '23', alt: '' });\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar' },\n image,\n _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_content' },\n message\n ),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MatrixToolbar_close', onClick: this.hideToolbar },\n _react2.default.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18', alt: (0, _languageHandler._t)('Close') })\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=UpdateCheckBar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _ContextualMenu = require('../../structures/ContextualMenu');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'GroupInviteTile',\n\n propTypes: {\n group: _propTypes2.default.object.isRequired\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getInitialState: function getInitialState() {\n return {\n hover: false,\n badgeHover: false,\n menuDisplayed: false,\n selected: this.props.group.groupId === null // XXX: this needs linking to LoggedInView/GroupView state\n };\n },\n\n onClick: function onClick(e) {\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: this.props.group.groupId\n });\n },\n\n onMouseEnter: function onMouseEnter() {\n var state = { hover: true };\n // Only allow non-guests to access the context menu\n if (!this.context.matrixClient.isGuest()) {\n state.badgeHover = true;\n }\n this.setState(state);\n },\n\n onMouseLeave: function onMouseLeave() {\n this.setState({\n badgeHover: false,\n hover: false\n });\n },\n\n _showContextMenu: function _showContextMenu(x, y, chevronOffset) {\n var _this = this;\n\n var GroupInviteTileContextMenu = _index2.default.getComponent('context_menus.GroupInviteTileContextMenu');\n\n (0, _ContextualMenu.createMenu)(GroupInviteTileContextMenu, {\n chevronOffset: chevronOffset,\n left: x,\n top: y,\n group: this.props.group,\n onFinished: function onFinished() {\n _this.setState({ menuDisplayed: false });\n }\n });\n this.setState({ menuDisplayed: true });\n },\n\n onContextMenu: function onContextMenu(e) {\n // Prevent the RoomTile onClick event firing as well\n e.preventDefault();\n // Only allow non-guests to access the context menu\n if (_MatrixClientPeg2.default.get().isGuest()) return;\n\n var chevronOffset = 12;\n this._showContextMenu(e.clientX, e.clientY - (chevronOffset + 8), chevronOffset);\n },\n\n onBadgeClicked: function onBadgeClicked(e) {\n // Prevent the RoomTile onClick event firing as well\n e.stopPropagation();\n // Only allow non-guests to access the context menu\n if (_MatrixClientPeg2.default.get().isGuest()) return;\n\n // If the badge is clicked, then no longer show tooltip\n if (this.props.collapsed) {\n this.setState({ hover: false });\n }\n\n var elementRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = elementRect.right + window.pageXOffset + 3;\n var chevronOffset = 12;\n var y = elementRect.top + elementRect.height / 2 + window.pageYOffset;\n y = y - (chevronOffset + 8); // where 8 is half the height of the chevron\n\n this._showContextMenu(x, y, chevronOffset);\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n\n var groupName = this.props.group.name || this.props.group.groupId;\n var httpAvatarUrl = this.props.group.avatarUrl ? this.context.matrixClient.mxcUrlToHttp(this.props.group.avatarUrl, 24, 24) : null;\n\n var av = _react2.default.createElement(BaseAvatar, { name: groupName, width: 24, height: 24, url: httpAvatarUrl });\n\n var nameClasses = (0, _classnames2.default)('mx_RoomTile_name mx_RoomTile_invite mx_RoomTile_badgeShown', {\n 'mx_RoomTile_badgeShown': this.state.badgeHover || this.state.menuDisplayed\n });\n\n var label = _react2.default.createElement(\n EmojiText,\n { element: 'div', title: this.props.group.groupId, className: nameClasses, dir: 'auto' },\n groupName\n );\n\n var badgeEllipsis = this.state.badgeHover || this.state.menuDisplayed;\n var badgeClasses = (0, _classnames2.default)('mx_RoomTile_badge mx_RoomTile_highlight', {\n 'mx_RoomTile_badgeButton': badgeEllipsis\n });\n\n var badgeContent = badgeEllipsis ? '\\xB7\\xB7\\xB7' : '!';\n var badge = _react2.default.createElement(\n 'div',\n { className: badgeClasses, onClick: this.onBadgeClicked },\n badgeContent\n );\n\n var tooltip = void 0;\n if (this.props.collapsed && this.state.hover) {\n var RoomTooltip = _index2.default.getComponent(\"rooms.RoomTooltip\");\n tooltip = _react2.default.createElement(RoomTooltip, { className: 'mx_RoomTile_tooltip', label: groupName, dir: 'auto' });\n }\n\n var classes = (0, _classnames2.default)('mx_RoomTile mx_RoomTile_highlight', {\n 'mx_RoomTile_menuDisplayed': this.state.menuDisplayed,\n 'mx_RoomTile_selected': this.state.selected\n });\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { className: classes,\n onClick: this.onClick,\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave,\n onContextMenu: this.onContextMenu\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_avatar' },\n av\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_nameContainer' },\n label,\n badge\n ),\n tooltip\n );\n }\n}); /*\n Copyright 2017, 2018 New Vector Ltd\n Copyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupInviteTile.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _groups = require('../../../groups');\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'GroupMemberInfo',\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n propTypes: {\n groupId: _propTypes2.default.string,\n groupMember: _groups.GroupMemberType,\n isInvited: _propTypes2.default.bool\n },\n\n getInitialState: function getInitialState() {\n return {\n removingUser: false,\n isUserPrivilegedInGroup: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n this._initGroupStore(this.props.groupId);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n if (newProps.groupId !== this.props.groupId) {\n this._unregisterGroupStore(this.props.groupId);\n this._initGroupStore(newProps.groupId);\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n this._unregisterGroupStore(this.props.groupId);\n },\n _initGroupStore: function _initGroupStore(groupId) {\n _GroupStore2.default.registerListener(groupId, this.onGroupStoreUpdated);\n },\n _unregisterGroupStore: function _unregisterGroupStore(groupId) {\n _GroupStore2.default.unregisterListener(this.onGroupStoreUpdated);\n },\n\n\n onGroupStoreUpdated: function onGroupStoreUpdated() {\n var _this = this;\n\n if (this._unmounted) return;\n this.setState({\n isUserInvited: _GroupStore2.default.getGroupInvitedMembers(this.props.groupId).some(function (m) {\n return m.userId === _this.props.groupMember.userId;\n }),\n isUserPrivilegedInGroup: _GroupStore2.default.isUserPrivileged(this.props.groupId)\n });\n },\n\n _onKick: function _onKick() {\n var _this2 = this;\n\n var ConfirmUserActionDialog = _index2.default.getComponent(\"dialogs.ConfirmUserActionDialog\");\n _Modal2.default.createDialog(ConfirmUserActionDialog, {\n matrixClient: this.context.matrixClient,\n groupMember: this.props.groupMember,\n action: this.state.isUserInvited ? (0, _languageHandler._t)('Disinvite') : (0, _languageHandler._t)('Remove from community'),\n title: this.state.isUserInvited ? (0, _languageHandler._t)('Disinvite this user from community?') : (0, _languageHandler._t)('Remove this user from community?'),\n danger: true,\n onFinished: function onFinished(proceed) {\n if (!proceed) return;\n\n _this2.setState({ removingUser: true });\n _this2.context.matrixClient.removeUserFromGroup(_this2.props.groupId, _this2.props.groupMember.userId).then(function () {\n // return to the user list\n _dispatcher2.default.dispatch({\n action: \"view_user\",\n member: null\n });\n }).catch(function (e) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to remove user from group', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: _this2.state.isUserInvited ? (0, _languageHandler._t)('Failed to withdraw invitation') : (0, _languageHandler._t)('Failed to remove user from community')\n });\n }).finally(function () {\n _this2.setState({ removingUser: false });\n });\n }\n });\n },\n\n _onCancel: function _onCancel(e) {\n // Go back to the user list\n _dispatcher2.default.dispatch({\n action: \"view_user\",\n member: null\n });\n },\n\n onRoomTileClick: function onRoomTileClick(roomId) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: roomId\n });\n },\n\n\n render: function render() {\n if (this.state.removingUser) {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n var adminTools = void 0;\n if (this.state.isUserPrivilegedInGroup) {\n var kickButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_field',\n onClick: this._onKick },\n this.state.isUserInvited ? (0, _languageHandler._t)('Disinvite') : (0, _languageHandler._t)('Remove from community')\n );\n\n // No make/revoke admin API yet\n /*const opLabel = this.state.isTargetMod ? _t(\"Revoke Moderator\") : _t(\"Make Moderator\");\n giveModButton = <AccessibleButton className=\"mx_MemberInfo_field\" onClick={this.onModToggle}>\n {giveOpLabel}\n </AccessibleButton>;*/\n\n if (kickButton) {\n adminTools = _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_adminTools' },\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Admin Tools\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_buttons' },\n kickButton\n )\n );\n }\n }\n\n var avatarUrl = this.context.matrixClient.mxcUrlToHttp(this.props.groupMember.avatarUrl, 36, 36, 'crop');\n\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var avatar = _react2.default.createElement(BaseAvatar, { name: this.props.groupMember.userId, width: 36, height: 36,\n url: avatarUrl\n });\n\n var groupMemberName = this.props.groupMember.displayname || this.props.groupMember.userId;\n\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var GeminiScrollbarWrapper = _index2.default.getComponent('elements.GeminiScrollbarWrapper');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo' },\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_cancel', onClick: this._onCancel },\n _react2.default.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18', className: 'mx_filterFlipColor' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_avatar' },\n avatar\n ),\n _react2.default.createElement(\n EmojiText,\n { element: 'h2' },\n groupMemberName\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profile' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profileField' },\n this.props.groupMember.userId\n )\n ),\n adminTools\n )\n );\n }\n});\n//# sourceMappingURL=GroupMemberInfo.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar INITIAL_LOAD_NUM_MEMBERS = 30; /*\n Copyright 2017 Vector Creations Ltd.\n Copyright 2017 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nexports.default = _react2.default.createClass({\n displayName: 'GroupMemberList',\n\n propTypes: {\n groupId: _propTypes2.default.string.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n members: null,\n invitedMembers: null,\n truncateAt: INITIAL_LOAD_NUM_MEMBERS\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n this._initGroupStore(this.props.groupId);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n _initGroupStore: function _initGroupStore(groupId) {\n var _this = this;\n\n _GroupStore2.default.registerListener(groupId, function () {\n _this._fetchMembers();\n });\n },\n\n _fetchMembers: function _fetchMembers() {\n if (this._unmounted) return;\n this.setState({\n members: _GroupStore2.default.getGroupMembers(this.props.groupId),\n invitedMembers: _GroupStore2.default.getGroupInvitedMembers(this.props.groupId)\n });\n },\n\n _createOverflowTile: function _createOverflowTile(overflowCount, totalCount) {\n // For now we'll pretend this is any entity. It should probably be a separate tile.\n var EntityTile = _index2.default.getComponent(\"rooms.EntityTile\");\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n var text = (0, _languageHandler._t)(\"and %(count)s others...\", { count: overflowCount });\n return _react2.default.createElement(EntityTile, { className: 'mx_EntityTile_ellipsis', avatarJsx: _react2.default.createElement(BaseAvatar, { url: 'img/ellipsis.svg', name: '...', width: 36, height: 36 }), name: text, presenceState: 'online', suppressOnHover: true,\n onClick: this._showFullMemberList });\n },\n\n _showFullMemberList: function _showFullMemberList() {\n this.setState({\n truncateAt: -1\n });\n },\n\n onSearchQueryChanged: function onSearchQueryChanged(ev) {\n this.setState({ searchQuery: ev.target.value });\n },\n\n makeGroupMemberTiles: function makeGroupMemberTiles(query, memberList) {\n var _this2 = this;\n\n var GroupMemberTile = _index2.default.getComponent(\"groups.GroupMemberTile\");\n var TruncatedList = _index2.default.getComponent(\"elements.TruncatedList\");\n query = (query || \"\").toLowerCase();\n if (query) {\n memberList = memberList.filter(function (m) {\n var matchesName = (m.displayname || \"\").toLowerCase().includes(query);\n var matchesId = m.userId.toLowerCase().includes(query);\n\n if (!matchesName && !matchesId) {\n return false;\n }\n\n return true;\n });\n }\n\n var uniqueMembers = {};\n memberList.forEach(function (m) {\n if (!uniqueMembers[m.userId]) uniqueMembers[m.userId] = m;\n });\n memberList = (0, _keys2.default)(uniqueMembers).map(function (userId) {\n return uniqueMembers[userId];\n });\n // Descending sort on isPrivileged = true = 1 to isPrivileged = false = 0\n memberList.sort(function (a, b) {\n if (a.isPrivileged === b.isPrivileged) {\n var aName = a.displayname || a.userId;\n var bName = b.displayname || b.userId;\n if (aName < bName) {\n return -1;\n } else if (aName > bName) {\n return 1;\n } else {\n return 0;\n }\n } else {\n return a.isPrivileged ? -1 : 1;\n }\n });\n\n var memberTiles = memberList.map(function (m) {\n return _react2.default.createElement(GroupMemberTile, { key: m.userId, groupId: _this2.props.groupId, member: m });\n });\n\n return _react2.default.createElement(\n TruncatedList,\n { className: 'mx_MemberList_wrapper', truncateAt: this.state.truncateAt,\n createOverflowElement: this._createOverflowTile\n },\n memberTiles\n );\n },\n\n render: function render() {\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n if (this.state.fetching || this.state.fetchingInvitedMembers) {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n var inputBox = _react2.default.createElement(\n 'form',\n { autoComplete: 'off' },\n _react2.default.createElement('input', { className: 'mx_GroupMemberList_query', id: 'mx_GroupMemberList_query', type: 'text',\n onChange: this.onSearchQueryChanged, value: this.state.searchQuery,\n placeholder: (0, _languageHandler._t)('Filter community members') })\n );\n\n var joined = this.state.members ? _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList_joined' },\n this.makeGroupMemberTiles(this.state.searchQuery, this.state.members)\n ) : _react2.default.createElement('div', null);\n\n var invited = this.state.invitedMembers && this.state.invitedMembers.length > 0 ? _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList_invited' },\n _react2.default.createElement(\n 'h2',\n null,\n (0, _languageHandler._t)(\"Invited\")\n ),\n this.makeGroupMemberTiles(this.state.searchQuery, this.state.invitedMembers)\n ) : _react2.default.createElement('div', null);\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList' },\n inputBox,\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true },\n joined,\n invited\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupMemberList.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _groups = require('../../../groups');\n\nvar _withMatrixClient = require('../../../wrappers/withMatrixClient');\n\nvar _withMatrixClient2 = _interopRequireDefault(_withMatrixClient);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = (0, _withMatrixClient2.default)(_react2.default.createClass({\n displayName: 'GroupMemberTile',\n\n propTypes: {\n matrixClient: _propTypes2.default.object,\n groupId: _propTypes2.default.string.isRequired,\n member: _groups.GroupMemberType.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {};\n },\n\n onClick: function onClick(e) {\n _dispatcher2.default.dispatch({\n action: 'view_group_user',\n member: this.props.member,\n groupId: this.props.groupId\n });\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var EntityTile = _index2.default.getComponent('rooms.EntityTile');\n\n var name = this.props.member.displayname || this.props.member.userId;\n var avatarUrl = this.props.matrixClient.mxcUrlToHttp(this.props.member.avatarUrl, 36, 36, 'crop');\n\n var av = _react2.default.createElement(BaseAvatar, { name: this.props.member.userId,\n width: 36, height: 36,\n url: avatarUrl\n });\n\n return _react2.default.createElement(EntityTile, { name: name, avatarJsx: av, onClick: this.onClick,\n suppressOnHover: true, presenceState: 'online',\n powerStatus: this.props.member.isPrivileged ? EntityTile.POWER_STATUS_ADMIN : null\n });\n }\n}));\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupMemberTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _languageHandler = require('../../../languageHandler.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'GroupPublicityToggle',\n\n propTypes: {\n groupId: _propTypes2.default.string.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n busy: false,\n ready: false,\n isGroupPublicised: null\n };\n },\n\n\n componentWillMount: function componentWillMount() {\n this._initGroupStore(this.props.groupId);\n },\n\n _initGroupStore: function _initGroupStore(groupId) {\n var _this = this;\n\n this._groupStoreToken = _GroupStore2.default.registerListener(groupId, function () {\n _this.setState({\n isGroupPublicised: _GroupStore2.default.getGroupPublicity(groupId),\n ready: _GroupStore2.default.isStateReady(groupId, _GroupStore2.default.STATE_KEY.Summary)\n });\n });\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (this._groupStoreToken) this._groupStoreToken.unregister();\n },\n\n\n _onPublicityToggle: function _onPublicityToggle(e) {\n var _this2 = this;\n\n e.stopPropagation();\n this.setState({\n busy: true,\n // Optimistic early update\n isGroupPublicised: !this.state.isGroupPublicised\n });\n _GroupStore2.default.setGroupPublicity(this.props.groupId, !this.state.isGroupPublicised).then(function () {\n _this2.setState({\n busy: false\n });\n });\n },\n\n render: function render() {\n var GroupTile = _index2.default.getComponent('groups.GroupTile');\n var input = _react2.default.createElement('input', { type: 'checkbox',\n onChange: this._onPublicityToggle,\n checked: this.state.isGroupPublicised\n });\n var labelText = !this.state.ready ? (0, _languageHandler._t)(\"Loading...\") : this.state.isGroupPublicised ? (0, _languageHandler._t)(\"Flair will appear if enabled in room settings\") : (0, _languageHandler._t)(\"Flair will not appear\");\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupPublicity_toggle' },\n _react2.default.createElement(GroupTile, { groupId: this.props.groupId, showDescription: false, avatarHeight: 40 }),\n _react2.default.createElement(\n 'label',\n { onClick: this._onPublicityToggle },\n input,\n labelText\n )\n );\n }\n}); /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupPublicityToggle.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'GroupRoomInfo',\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n propTypes: {\n groupId: _propTypes2.default.string,\n groupRoomId: _propTypes2.default.string\n },\n\n getInitialState: function getInitialState() {\n return {\n isUserPrivilegedInGroup: null,\n groupRoom: null,\n groupRoomPublicityLoading: false,\n groupRoomRemoveLoading: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._initGroupStore(this.props.groupId);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n if (newProps.groupId !== this.props.groupId) {\n this._unregisterGroupStore(this.props.groupId);\n this._initGroupStore(newProps.groupId);\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n this._unregisterGroupStore(this.props.groupId);\n },\n _initGroupStore: function _initGroupStore(groupId) {\n _GroupStore2.default.registerListener(groupId, this.onGroupStoreUpdated);\n },\n _unregisterGroupStore: function _unregisterGroupStore(groupId) {\n _GroupStore2.default.unregisterListener(this.onGroupStoreUpdated);\n },\n _updateGroupRoom: function _updateGroupRoom() {\n var _this = this;\n\n this.setState({\n groupRoom: _GroupStore2.default.getGroupRooms(this.props.groupId).find(function (r) {\n return r.roomId === _this.props.groupRoomId;\n })\n });\n },\n\n\n onGroupStoreUpdated: function onGroupStoreUpdated() {\n this.setState({\n isUserPrivilegedInGroup: _GroupStore2.default.isUserPrivileged(this.props.groupId)\n });\n this._updateGroupRoom();\n },\n\n _onRemove: function _onRemove(e) {\n var _this2 = this;\n\n var groupId = this.props.groupId;\n var roomName = this.state.groupRoom.displayname;\n e.preventDefault();\n e.stopPropagation();\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('Confirm removal of group from room', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Are you sure you want to remove '%(roomName)s' from %(groupId)s?\", { roomName: roomName, groupId: groupId }),\n description: (0, _languageHandler._t)(\"Removing a room from the community will also remove it from the community page.\"),\n button: (0, _languageHandler._t)(\"Remove\"),\n onFinished: function onFinished(proceed) {\n if (!proceed) return;\n _this2.setState({ groupRoomRemoveLoading: true });\n var groupId = _this2.props.groupId;\n var roomId = _this2.props.groupRoomId;\n _GroupStore2.default.removeRoomFromGroup(_this2.props.groupId, roomId).then(function () {\n _dispatcher2.default.dispatch({\n action: \"view_group_room_list\"\n });\n }).catch(function (err) {\n console.error('Error whilst removing ' + roomId + ' from ' + groupId, err);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to remove room from group', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to remove room from community\"),\n description: (0, _languageHandler._t)(\"Failed to remove '%(roomName)s' from %(groupId)s\", { groupId: groupId, roomName: roomName })\n });\n }).finally(function () {\n _this2.setState({ groupRoomRemoveLoading: false });\n });\n }\n });\n },\n\n _onCancel: function _onCancel(e) {\n _dispatcher2.default.dispatch({\n action: \"view_group_room_list\"\n });\n },\n\n _changeGroupRoomPublicity: function _changeGroupRoomPublicity(e) {\n var _this3 = this;\n\n var isPublic = e.target.value === \"public\";\n this.setState({\n groupRoomPublicityLoading: true\n });\n var groupId = this.props.groupId;\n var roomId = this.props.groupRoomId;\n var roomName = this.state.groupRoom.displayname;\n _GroupStore2.default.updateGroupRoomVisibility(this.props.groupId, roomId, isPublic).catch(function (err) {\n console.error('Error whilst changing visibility of ' + roomId + ' in ' + groupId + ' to ' + isPublic, err);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to remove room from group', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Something went wrong!\"),\n description: (0, _languageHandler._t)(\"The visibility of '%(roomName)s' in %(groupId)s could not be updated.\", { roomName: roomName, groupId: groupId })\n });\n }).finally(function () {\n _this3.setState({\n groupRoomPublicityLoading: false\n });\n });\n },\n\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var InlineSpinner = _index2.default.getComponent('elements.InlineSpinner');\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n if (this.state.groupRoomRemoveLoading || !this.state.groupRoom) {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n var adminTools = void 0;\n if (this.state.isUserPrivilegedInGroup) {\n adminTools = _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_adminTools' },\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Admin Tools\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_buttons' },\n _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_MemberInfo_field', onClick: this._onRemove },\n (0, _languageHandler._t)('Remove from community')\n )\n ),\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Visibility in Room List'),\n this.state.groupRoomPublicityLoading ? _react2.default.createElement(InlineSpinner, null) : _react2.default.createElement('div', null)\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio',\n value: 'public',\n checked: this.state.groupRoom.isPublic,\n onClick: this._changeGroupRoomPublicity\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_label_text' },\n (0, _languageHandler._t)('Visible to everyone')\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio',\n value: 'private',\n checked: !this.state.groupRoom.isPublic,\n onClick: this._changeGroupRoomPublicity\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_label_text' },\n (0, _languageHandler._t)('Only visible to community members')\n )\n )\n )\n );\n }\n\n var avatarUrl = this.context.matrixClient.mxcUrlToHttp(this.state.groupRoom.avatarUrl, 36, 36, 'crop');\n\n var groupRoomName = this.state.groupRoom.displayname;\n var avatar = _react2.default.createElement(BaseAvatar, { name: groupRoomName, width: 36, height: 36, url: avatarUrl });\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo' },\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true },\n _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_MemberInfo_cancel', onClick: this._onCancel },\n _react2.default.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18', className: 'mx_filterFlipColor' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_avatar' },\n avatar\n ),\n _react2.default.createElement(\n EmojiText,\n { element: 'h2' },\n groupRoomName\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profile' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profileField' },\n this.state.groupRoom.canonical_alias\n )\n ),\n adminTools\n )\n );\n }\n});\n//# sourceMappingURL=GroupRoomInfo.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar INITIAL_LOAD_NUM_ROOMS = 30; /*\n Copyright 2017 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nexports.default = _react2.default.createClass({\n displayName: 'GroupRoomList',\n\n propTypes: {\n groupId: _propTypes2.default.string.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n rooms: null,\n truncateAt: INITIAL_LOAD_NUM_ROOMS,\n searchQuery: \"\"\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n this._initGroupStore(this.props.groupId);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n this._unregisterGroupStore();\n },\n _unregisterGroupStore: function _unregisterGroupStore() {\n _GroupStore2.default.unregisterListener(this.onGroupStoreUpdated);\n },\n\n\n _initGroupStore: function _initGroupStore(groupId) {\n var _this = this;\n\n _GroupStore2.default.registerListener(groupId, this.onGroupStoreUpdated);\n // XXX: This should be more fluxy - let's get the error from GroupStore .getError or something\n // XXX: This is also leaked - we should remove it when unmounting\n _GroupStore2.default.on('error', function (err, errorGroupId) {\n if (errorGroupId !== groupId) return;\n _this.setState({\n rooms: null\n });\n });\n },\n\n onGroupStoreUpdated: function onGroupStoreUpdated() {\n if (this._unmounted) return;\n this.setState({\n rooms: _GroupStore2.default.getGroupRooms(this.props.groupId)\n });\n },\n\n _createOverflowTile: function _createOverflowTile(overflowCount, totalCount) {\n // For now we'll pretend this is any entity. It should probably be a separate tile.\n var EntityTile = _index2.default.getComponent(\"rooms.EntityTile\");\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n var text = (0, _languageHandler._t)(\"and %(count)s others...\", { count: overflowCount });\n return _react2.default.createElement(EntityTile, { className: 'mx_EntityTile_ellipsis', avatarJsx: _react2.default.createElement(BaseAvatar, { url: 'img/ellipsis.svg', name: '...', width: 36, height: 36 }), name: text, presenceState: 'online', suppressOnHover: true,\n onClick: this._showFullRoomList });\n },\n\n _showFullRoomList: function _showFullRoomList() {\n this.setState({\n truncateAt: -1\n });\n },\n\n onSearchQueryChanged: function onSearchQueryChanged(ev) {\n this.setState({ searchQuery: ev.target.value });\n },\n\n makeGroupRoomTiles: function makeGroupRoomTiles(query) {\n var _this2 = this;\n\n var GroupRoomTile = _index2.default.getComponent(\"groups.GroupRoomTile\");\n query = (query || \"\").toLowerCase();\n\n var roomList = this.state.rooms;\n if (query) {\n roomList = roomList.filter(function (room) {\n var matchesName = (room.name || \"\").toLowerCase().includes(query);\n var matchesAlias = (room.canonicalAlias || \"\").toLowerCase().includes(query);\n return matchesName || matchesAlias;\n });\n }\n\n roomList = roomList.map(function (groupRoom, index) {\n return _react2.default.createElement(GroupRoomTile, {\n key: index,\n groupId: _this2.props.groupId,\n groupRoom: groupRoom });\n });\n\n return roomList;\n },\n\n render: function render() {\n if (this.state.rooms === null) {\n return null;\n }\n\n var inputBox = _react2.default.createElement(\n 'form',\n { autoComplete: 'off' },\n _react2.default.createElement('input', { className: 'mx_GroupRoomList_query', id: 'mx_GroupRoomList_query', type: 'text',\n onChange: this.onSearchQueryChanged, value: this.state.searchQuery,\n placeholder: (0, _languageHandler._t)('Filter community rooms') })\n );\n\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n var TruncatedList = _index2.default.getComponent(\"elements.TruncatedList\");\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupRoomList' },\n inputBox,\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true, className: 'mx_GroupRoomList_joined mx_GroupRoomList_outerWrapper' },\n _react2.default.createElement(\n TruncatedList,\n { className: 'mx_GroupRoomList_wrapper', truncateAt: this.state.truncateAt,\n createOverflowElement: this._createOverflowTile },\n this.makeGroupRoomTiles(this.state.searchQuery)\n )\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupRoomList.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _groups = require('../../../groups');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar GroupRoomTile = _react2.default.createClass({\n displayName: 'GroupRoomTile',\n\n propTypes: {\n groupId: _propTypes2.default.string.isRequired,\n groupRoom: _groups.GroupRoomType.isRequired\n },\n\n onClick: function onClick(e) {\n _dispatcher2.default.dispatch({\n action: 'view_group_room',\n groupId: this.props.groupId,\n groupRoomId: this.props.groupRoom.roomId\n });\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var avatarUrl = this.context.matrixClient.mxcUrlToHttp(this.props.groupRoom.avatarUrl, 36, 36, 'crop');\n\n var av = _react2.default.createElement(BaseAvatar, { name: this.props.groupRoom.displayname,\n width: 36, height: 36,\n url: avatarUrl\n });\n\n return _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_GroupRoomTile', onClick: this.onClick },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupRoomTile_avatar' },\n av\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupRoomTile_name' },\n this.props.groupRoom.displayname\n )\n );\n }\n});\n\nGroupRoomTile.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n};\n\nexports.default = GroupRoomTile;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupRoomTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _reactBeautifulDnd = require('react-beautiful-dnd');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _FlairStore = require('../../../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction nop() {} /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar GroupTile = _react2.default.createClass({\n displayName: 'GroupTile',\n\n propTypes: {\n groupId: _propTypes2.default.string.isRequired,\n // Whether to show the short description of the group on the tile\n showDescription: _propTypes2.default.bool,\n // Height of the group avatar in pixels\n avatarHeight: _propTypes2.default.number\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n profile: null\n };\n },\n getDefaultProps: function getDefaultProps() {\n return {\n showDescription: true,\n avatarHeight: 50\n };\n },\n\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n _FlairStore2.default.getGroupProfileCached(this.context.matrixClient, this.props.groupId).then(function (profile) {\n _this.setState({ profile: profile });\n }).catch(function (err) {\n console.error('Error whilst getting cached profile for GroupTile', err);\n });\n },\n\n onMouseDown: function onMouseDown(e) {\n e.preventDefault();\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: this.props.groupId\n });\n },\n\n render: function render() {\n var _this2 = this;\n\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var profile = this.state.profile || {};\n var name = profile.name || this.props.groupId;\n var avatarHeight = this.props.avatarHeight;\n var descElement = this.props.showDescription ? _react2.default.createElement(\n 'div',\n { className: 'mx_GroupTile_desc' },\n profile.shortDescription\n ) : _react2.default.createElement('div', null);\n var httpUrl = profile.avatarUrl ? this.context.matrixClient.mxcUrlToHttp(profile.avatarUrl, avatarHeight, avatarHeight, \"crop\") : null;\n // XXX: Use onMouseDown as a workaround for https://github.com/atlassian/react-beautiful-dnd/issues/273\n // instead of onClick. Otherwise we experience https://github.com/vector-im/riot-web/issues/6156\n return _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_GroupTile', onMouseDown: this.onMouseDown, onClick: nop },\n _react2.default.createElement(\n _reactBeautifulDnd.Droppable,\n { droppableId: 'my-groups-droppable', type: 'draggable-TagTile' },\n function (droppableProvided, droppableSnapshot) {\n return _react2.default.createElement(\n 'div',\n { ref: droppableProvided.innerRef },\n _react2.default.createElement(\n _reactBeautifulDnd.Draggable,\n {\n key: \"GroupTile \" + _this2.props.groupId,\n draggableId: \"GroupTile \" + _this2.props.groupId,\n index: _this2.props.groupId,\n type: 'draggable-TagTile'\n },\n function (provided, snapshot) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n (0, _extends3.default)({\n ref: provided.innerRef\n }, provided.draggableProps, provided.dragHandleProps),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupTile_avatar' },\n _react2.default.createElement(BaseAvatar, {\n name: name,\n idName: _this2.props.groupId,\n url: httpUrl,\n width: avatarHeight,\n height: avatarHeight })\n )\n ),\n provided.placeholder ? _react2.default.createElement(\n 'div',\n { className: 'mx_GroupTile_avatar' },\n _react2.default.createElement(BaseAvatar, {\n name: name,\n idName: _this2.props.groupId,\n url: httpUrl,\n width: avatarHeight,\n height: avatarHeight })\n ) : _react2.default.createElement('div', null)\n );\n }\n )\n );\n }\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupTile_profile' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupTile_name' },\n name\n ),\n descElement,\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupTile_groupId' },\n this.props.groupId\n )\n )\n );\n }\n});\n\nexports.default = GroupTile;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'GroupUserSettings',\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getInitialState: function getInitialState() {\n return {\n error: null,\n groups: null\n };\n },\n\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this.context.matrixClient.getJoinedGroups().done(function (result) {\n _this.setState({ groups: result.groups || [], error: null });\n }, function (err) {\n console.error(err);\n _this.setState({ groups: null, error: err });\n });\n },\n\n _renderGroupPublicity: function _renderGroupPublicity() {\n var text = \"\";\n var scrollbox = _react2.default.createElement('div', null);\n var groups = this.state.groups;\n\n if (this.state.error) {\n text = (0, _languageHandler._t)('Something went wrong when trying to get your communities.');\n } else if (groups === null) {\n text = (0, _languageHandler._t)('Loading...');\n } else if (groups.length > 0) {\n var GroupPublicityToggle = _index2.default.getComponent('groups.GroupPublicityToggle');\n var GeminiScrollbarWrapper = _index2.default.getComponent('elements.GeminiScrollbarWrapper');\n var groupPublicityToggles = groups.map(function (groupId, index) {\n return _react2.default.createElement(GroupPublicityToggle, { key: index, groupId: groupId });\n });\n text = (0, _languageHandler._t)('Display your community flair in rooms configured to show it.');\n scrollbox = _react2.default.createElement(\n 'div',\n { className: 'mx_GroupUserSettings_groupPublicity_scrollbox' },\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n null,\n groupPublicityToggles\n )\n );\n } else {\n text = (0, _languageHandler._t)(\"You're not currently a member of any communities.\");\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Flair')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n _react2.default.createElement(\n 'p',\n null,\n text\n ),\n scrollbox\n )\n );\n },\n render: function render() {\n var groupPublicity = this._renderGroupPublicity();\n\n return _react2.default.createElement(\n 'div',\n null,\n groupPublicity\n );\n }\n}); /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupUserSettings.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DIV_ID = 'mx_recaptcha';\n\n/**\n * A pure UI component which displays a captcha form.\n */\nmodule.exports = _react2.default.createClass({\n displayName: 'CaptchaForm',\n\n propTypes: {\n sitePublicKey: _propTypes2.default.string,\n\n // called with the captcha response\n onCaptchaResponse: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onCaptchaResponse: function onCaptchaResponse() {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n errorText: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._captchaWidgetId = null;\n },\n\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n // Just putting a script tag into the returned jsx doesn't work, annoyingly,\n // so we do this instead.\n if (global.grecaptcha) {\n // already loaded\n this._onCaptchaLoaded();\n } else {\n console.log(\"Loading recaptcha script...\");\n window.mx_on_recaptcha_loaded = function () {\n _this._onCaptchaLoaded();\n };\n var protocol = global.location.protocol;\n if (protocol === \"file:\") {\n var warning = document.createElement('div');\n // XXX: fix hardcoded app URL. Better solutions include:\n // * jumping straight to a hosted captcha page (but we don't support that yet)\n // * embedding the captcha in an iframe (if that works)\n // * using a better captcha lib\n _reactDom2.default.render((0, _languageHandler._t)(\"Robot check is currently unavailable on desktop - please use a <a>web browser</a>\", {}, { 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: 'https://riot.im/app' },\n sub\n );\n } }), warning);\n this.refs.recaptchaContainer.appendChild(warning);\n } else {\n var scriptTag = document.createElement('script');\n scriptTag.setAttribute('src', protocol + \"//www.google.com/recaptcha/api.js?onload=mx_on_recaptcha_loaded&render=explicit\");\n this.refs.recaptchaContainer.appendChild(scriptTag);\n }\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._resetRecaptcha();\n },\n\n _renderRecaptcha: function _renderRecaptcha(divId) {\n if (!global.grecaptcha) {\n console.error(\"grecaptcha not loaded!\");\n throw new Error(\"Recaptcha did not load successfully\");\n }\n\n var publicKey = this.props.sitePublicKey;\n if (!publicKey) {\n console.error(\"No public key for recaptcha!\");\n throw new Error(\"This server has not supplied enough information for Recaptcha \" + \"authentication\");\n }\n\n console.log(\"Rendering to %s\", divId);\n this._captchaWidgetId = global.grecaptcha.render(divId, {\n sitekey: publicKey,\n callback: this.props.onCaptchaResponse\n });\n },\n\n _resetRecaptcha: function _resetRecaptcha() {\n if (this._captchaWidgetId !== null) {\n global.grecaptcha.reset(this._captchaWidgetId);\n }\n },\n\n _onCaptchaLoaded: function _onCaptchaLoaded() {\n console.log(\"Loaded recaptcha script.\");\n try {\n this._renderRecaptcha(DIV_ID);\n } catch (e) {\n this.setState({\n errorText: e.toString()\n });\n }\n },\n\n render: function render() {\n var error = null;\n if (this.state.errorText) {\n error = _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.errorText\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { ref: 'recaptchaContainer' },\n (0, _languageHandler._t)(\"This Home Server would like to make sure you are not a robot\"),\n _react2.default.createElement('br', null),\n _react2.default.createElement('div', { id: DIV_ID }),\n error\n );\n }\n});\n//# sourceMappingURL=CaptchaForm.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'CasLogin',\n\n propTypes: {\n onSubmit: _propTypes2.default.func // fn()\n },\n\n render: function render() {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'button',\n { onClick: this.props.onSubmit },\n (0, _languageHandler._t)(\"Sign in with CAS\")\n )\n );\n }\n\n});\n//# sourceMappingURL=CasLogin.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _phonenumber = require('../../../phonenumber');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar COUNTRIES_BY_ISO2 = new Object(null);\nvar _iteratorNormalCompletion = true;\nvar _didIteratorError = false;\nvar _iteratorError = undefined;\n\ntry {\n for (var _iterator = (0, _getIterator3.default)(_phonenumber.COUNTRIES), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var c = _step.value;\n\n COUNTRIES_BY_ISO2[c.iso2] = c;\n }\n} catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n} finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n}\n\nfunction countryMatchesSearchQuery(query, country) {\n // Remove '+' if present (when searching for a prefix)\n if (query[0] === '+') {\n query = query.slice(1);\n }\n\n if (country.name.toUpperCase().indexOf(query.toUpperCase()) == 0) return true;\n if (country.iso2 == query.toUpperCase()) return true;\n if (country.prefix.indexOf(query) !== -1) return true;\n return false;\n}\n\nvar CountryDropdown = function (_React$Component) {\n (0, _inherits3.default)(CountryDropdown, _React$Component);\n\n function CountryDropdown(props) {\n (0, _classCallCheck3.default)(this, CountryDropdown);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (CountryDropdown.__proto__ || (0, _getPrototypeOf2.default)(CountryDropdown)).call(this, props));\n\n _this._onSearchChange = _this._onSearchChange.bind(_this);\n _this._onOptionChange = _this._onOptionChange.bind(_this);\n _this._getShortOption = _this._getShortOption.bind(_this);\n\n _this.state = {\n searchQuery: ''\n };\n return _this;\n }\n\n (0, _createClass3.default)(CountryDropdown, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n if (!this.props.value) {\n // If no value is given, we start with the first\n // country selected, but our parent component\n // doesn't know this, therefore we do this.\n this.props.onOptionChange(_phonenumber.COUNTRIES[0]);\n }\n }\n }, {\n key: '_onSearchChange',\n value: function _onSearchChange(search) {\n this.setState({\n searchQuery: search\n });\n }\n }, {\n key: '_onOptionChange',\n value: function _onOptionChange(iso2) {\n this.props.onOptionChange(COUNTRIES_BY_ISO2[iso2]);\n }\n }, {\n key: '_flagImgForIso2',\n value: function _flagImgForIso2(iso2) {\n return _react2.default.createElement('img', { src: 'img/flags/' + iso2 + '.png' });\n }\n }, {\n key: '_getShortOption',\n value: function _getShortOption(iso2) {\n if (!this.props.isSmall) {\n return undefined;\n }\n var countryPrefix = void 0;\n if (this.props.showPrefix) {\n countryPrefix = '+' + COUNTRIES_BY_ISO2[iso2].prefix;\n }\n return _react2.default.createElement(\n 'span',\n null,\n this._flagImgForIso2(iso2),\n countryPrefix\n );\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var Dropdown = _index2.default.getComponent('elements.Dropdown');\n\n var displayedCountries = void 0;\n if (this.state.searchQuery) {\n displayedCountries = _phonenumber.COUNTRIES.filter(countryMatchesSearchQuery.bind(this, this.state.searchQuery));\n if (this.state.searchQuery.length == 2 && COUNTRIES_BY_ISO2[this.state.searchQuery.toUpperCase()]) {\n // exact ISO2 country name match: make the first result the matches ISO2\n var matched = COUNTRIES_BY_ISO2[this.state.searchQuery.toUpperCase()];\n displayedCountries = displayedCountries.filter(function (c) {\n return c.iso2 != matched.iso2;\n });\n displayedCountries.unshift(matched);\n }\n } else {\n displayedCountries = _phonenumber.COUNTRIES;\n }\n\n var options = displayedCountries.map(function (country) {\n return _react2.default.createElement(\n 'div',\n { key: country.iso2 },\n _this2._flagImgForIso2(country.iso2),\n country.name,\n ' ',\n _react2.default.createElement(\n 'span',\n null,\n '(+',\n country.prefix,\n ')'\n )\n );\n });\n\n // default value here too, otherwise we need to handle null / undefined\n // values between mounting and the initial value propgating\n var value = this.props.value || _phonenumber.COUNTRIES[0].iso2;\n\n return _react2.default.createElement(\n Dropdown,\n { className: this.props.className + \" left_aligned\",\n onOptionChange: this._onOptionChange, onSearchChange: this._onSearchChange,\n menuWidth: 298, getShortOption: this._getShortOption,\n value: value, searchEnabled: true, disabled: this.props.disabled\n },\n options\n );\n }\n }]);\n return CountryDropdown;\n}(_react2.default.Component);\n\nexports.default = CountryDropdown;\n\n\nCountryDropdown.propTypes = {\n className: _propTypes2.default.string,\n isSmall: _propTypes2.default.bool,\n // if isSmall, show +44 in the selected value\n showPrefix: _propTypes2.default.bool,\n onOptionChange: _propTypes2.default.func.isRequired,\n value: _propTypes2.default.string,\n disabled: _propTypes2.default.bool\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=CountryDropdown.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'CustomServerDialog',\n\n render: function render() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ErrorDialog' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_title' },\n (0, _languageHandler._t)(\"Custom Server Options\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"You can use the custom server options to sign into other Matrix \" + \"servers by specifying a different Home server URL.\"),\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)(\"This allows you to use this app with an existing Matrix account on \" + \"a different home server.\"),\n _react2.default.createElement('br', null),\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)(\"You can also set a custom identity server but this will typically prevent \" + \"interaction with users based on email address.\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.props.onFinished, autoFocus: true },\n (0, _languageHandler._t)(\"Dismiss\")\n )\n )\n );\n }\n});\n//# sourceMappingURL=CustomServerDialog.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'LoginFooter',\n\n render: function render() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Login_links' },\n _react2.default.createElement(\n 'a',\n { href: 'https://matrix.org' },\n (0, _languageHandler._t)(\"powered by Matrix\")\n )\n );\n }\n});\n//# sourceMappingURL=LoginFooter.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar React = require('react');\n\nmodule.exports = React.createClass({\n displayName: 'LoginHeader',\n\n render: function render() {\n return React.createElement(\n 'div',\n { className: 'mx_Login_logo' },\n 'Matrix'\n );\n }\n});\n//# sourceMappingURL=LoginHeader.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nmodule.exports = React.createClass({\n displayName: 'LoginPage',\n\n render: function render() {\n // FIXME: this should be turned into a proper skin with a StatusLoginPage component\n if (_SettingsStore2.default.getValue(\"theme\") === 'status') {\n return React.createElement(\n 'div',\n { className: 'mx_StatusLogin' },\n React.createElement(\n 'div',\n { className: 'mx_StatusLogin_brand' },\n React.createElement('img', { src: 'themes/status/img/logo.svg', alt: 'Status', width: '221', height: '53' })\n ),\n React.createElement(\n 'div',\n { className: 'mx_StatusLogin_content' },\n React.createElement(\n 'div',\n { className: 'mx_StatusLogin_header' },\n React.createElement(\n 'h1',\n null,\n 'Status Community Chat'\n ),\n React.createElement(\n 'div',\n { className: 'mx_StatusLogin_subtitle' },\n 'A safer, decentralised communication platform ',\n React.createElement(\n 'a',\n { href: 'https://riot.im' },\n 'powered by Riot'\n )\n )\n ),\n this.props.children,\n React.createElement(\n 'div',\n { className: 'mx_StatusLogin_footer' },\n React.createElement(\n 'p',\n null,\n 'This channel is for our development community.'\n ),\n React.createElement(\n 'p',\n null,\n 'Interested in SNT and discussions on the cryptocurrency market?'\n ),\n React.createElement(\n 'p',\n null,\n React.createElement(\n 'a',\n { href: 'https://t.me/StatusNetworkChat', target: '_blank', className: 'mx_StatusLogin_footer_cta' },\n 'Join Telegram Chat'\n )\n )\n )\n )\n );\n } else {\n return React.createElement(\n 'div',\n { className: 'mx_Login' },\n this.props.children\n );\n }\n }\n});\n//# sourceMappingURL=LoginPage.js.map","'use strict';\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _UiEffects = require('../../../UiEffects');\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A pure UI component which displays a username/password form.\n */\nvar PasswordLogin = function (_React$Component) {\n (0, _inherits3.default)(PasswordLogin, _React$Component);\n\n function PasswordLogin(props) {\n (0, _classCallCheck3.default)(this, PasswordLogin);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (PasswordLogin.__proto__ || (0, _getPrototypeOf2.default)(PasswordLogin)).call(this, props));\n\n _this.state = {\n username: _this.props.initialUsername,\n password: _this.props.initialPassword,\n phoneCountry: _this.props.initialPhoneCountry,\n phoneNumber: _this.props.initialPhoneNumber,\n loginType: PasswordLogin.LOGIN_FIELD_MXID\n };\n\n _this.onSubmitForm = _this.onSubmitForm.bind(_this);\n _this.onUsernameChanged = _this.onUsernameChanged.bind(_this);\n _this.onLoginTypeChange = _this.onLoginTypeChange.bind(_this);\n _this.onPhoneCountryChanged = _this.onPhoneCountryChanged.bind(_this);\n _this.onPhoneNumberChanged = _this.onPhoneNumberChanged.bind(_this);\n _this.onPasswordChanged = _this.onPasswordChanged.bind(_this);\n _this.isLoginEmpty = _this.isLoginEmpty.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(PasswordLogin, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this._passwordField = null;\n this._loginField = null;\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (!this.props.loginIncorrect && nextProps.loginIncorrect) {\n (0, _UiEffects.field_input_incorrect)(this.isLoginEmpty() ? this._loginField : this._passwordField);\n }\n }\n }, {\n key: 'onSubmitForm',\n value: function onSubmitForm(ev) {\n ev.preventDefault();\n\n var username = ''; // XXX: Synapse breaks if you send null here:\n var phoneCountry = null;\n var phoneNumber = null;\n var error = void 0;\n\n switch (this.state.loginType) {\n case PasswordLogin.LOGIN_FIELD_EMAIL:\n username = this.state.username;\n if (!username) {\n error = (0, _languageHandler._t)('The email field must not be blank.');\n }\n break;\n case PasswordLogin.LOGIN_FIELD_MXID:\n username = this.state.username;\n if (!username) {\n error = (0, _languageHandler._t)('The user name field must not be blank.');\n }\n break;\n case PasswordLogin.LOGIN_FIELD_PHONE:\n phoneCountry = this.state.phoneCountry;\n phoneNumber = this.state.phoneNumber;\n if (!phoneNumber) {\n error = (0, _languageHandler._t)('The phone number field must not be blank.');\n }\n break;\n }\n\n if (error) {\n this.props.onError(error);\n return;\n }\n\n if (!this.state.password) {\n this.props.onError((0, _languageHandler._t)('The password field must not be blank.'));\n return;\n }\n\n this.props.onSubmit(username, phoneCountry, phoneNumber, this.state.password);\n }\n }, {\n key: 'onUsernameChanged',\n value: function onUsernameChanged(ev) {\n this.setState({ username: ev.target.value });\n this.props.onUsernameChanged(ev.target.value);\n }\n }, {\n key: 'onLoginTypeChange',\n value: function onLoginTypeChange(loginType) {\n this.props.onError(null); // send a null error to clear any error messages\n this.setState({\n loginType: loginType,\n username: \"\" // Reset because email and username use the same state\n });\n }\n }, {\n key: 'onPhoneCountryChanged',\n value: function onPhoneCountryChanged(country) {\n this.setState({\n phoneCountry: country.iso2,\n phonePrefix: country.prefix\n });\n this.props.onPhoneCountryChanged(country.iso2);\n }\n }, {\n key: 'onPhoneNumberChanged',\n value: function onPhoneNumberChanged(ev) {\n this.setState({ phoneNumber: ev.target.value });\n this.props.onPhoneNumberChanged(ev.target.value);\n }\n }, {\n key: 'onPasswordChanged',\n value: function onPasswordChanged(ev) {\n this.setState({ password: ev.target.value });\n this.props.onPasswordChanged(ev.target.value);\n }\n }, {\n key: 'renderLoginField',\n value: function renderLoginField(loginType, disabled) {\n var _this2 = this;\n\n var classes = {\n mx_Login_field: true,\n mx_Login_field_disabled: disabled\n };\n\n switch (loginType) {\n case PasswordLogin.LOGIN_FIELD_EMAIL:\n classes.mx_Login_email = true;\n classes.error = this.props.loginIncorrect && !this.state.username;\n return _react2.default.createElement('input', {\n className: (0, _classnames2.default)(classes),\n ref: function ref(e) {\n _this2._loginField = e;\n },\n key: 'email_input',\n type: 'text',\n name: 'username' // make it a little easier for browser's remember-password\n , onChange: this.onUsernameChanged,\n placeholder: 'joe@example.com',\n value: this.state.username,\n autoFocus: true,\n disabled: disabled\n });\n case PasswordLogin.LOGIN_FIELD_MXID:\n classes.mx_Login_username = true;\n classes.error = this.props.loginIncorrect && !this.state.username;\n return _react2.default.createElement('input', {\n className: (0, _classnames2.default)(classes),\n ref: function ref(e) {\n _this2._loginField = e;\n },\n key: 'username_input',\n type: 'text',\n name: 'username' // make it a little easier for browser's remember-password\n , onChange: this.onUsernameChanged,\n placeholder: _SdkConfig2.default.get().disable_custom_urls ? (0, _languageHandler._t)(\"Username on %(hs)s\", {\n hs: this.props.hsUrl.replace(/^https?:\\/\\//, '')\n }) : (0, _languageHandler._t)(\"User name\"),\n value: this.state.username,\n autoFocus: true,\n disabled: disabled\n });\n case PasswordLogin.LOGIN_FIELD_PHONE:\n {\n var CountryDropdown = _index2.default.getComponent('views.login.CountryDropdown');\n classes.mx_Login_phoneNumberField = true;\n classes.mx_Login_field_has_prefix = true;\n classes.error = this.props.loginIncorrect && !this.state.phoneNumber;\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Login_phoneSection' },\n _react2.default.createElement(CountryDropdown, {\n className: 'mx_Login_phoneCountry mx_Login_field_prefix',\n onOptionChange: this.onPhoneCountryChanged,\n value: this.state.phoneCountry,\n isSmall: true,\n showPrefix: true,\n disabled: disabled\n }),\n _react2.default.createElement('input', {\n className: (0, _classnames2.default)(classes),\n ref: function ref(e) {\n _this2._loginField = e;\n },\n key: 'phone_input',\n type: 'text',\n name: 'phoneNumber',\n onChange: this.onPhoneNumberChanged,\n placeholder: (0, _languageHandler._t)(\"Mobile phone number\"),\n value: this.state.phoneNumber,\n autoFocus: true,\n disabled: disabled\n })\n );\n }\n }\n }\n }, {\n key: 'isLoginEmpty',\n value: function isLoginEmpty() {\n switch (this.state.loginType) {\n case PasswordLogin.LOGIN_FIELD_EMAIL:\n case PasswordLogin.LOGIN_FIELD_MXID:\n return !this.state.username;\n case PasswordLogin.LOGIN_FIELD_PHONE:\n return !this.state.phoneCountry || !this.state.phoneNumber;\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var forgotPasswordJsx = void 0;\n\n if (this.props.onForgotPasswordClick) {\n forgotPasswordJsx = _react2.default.createElement(\n 'a',\n { className: 'mx_Login_forgot', onClick: this.props.onForgotPasswordClick, href: '#' },\n (0, _languageHandler._t)('Forgot your password?')\n );\n }\n\n var matrixIdText = '';\n if (this.props.hsUrl) {\n try {\n var parsedHsUrl = new URL(this.props.hsUrl);\n matrixIdText = (0, _languageHandler._t)('%(serverName)s Matrix ID', { serverName: parsedHsUrl.hostname });\n } catch (e) {\n // pass\n }\n }\n\n var pwFieldClass = (0, _classnames2.default)({\n mx_Login_field: true,\n mx_Login_field_disabled: matrixIdText === '',\n error: this.props.loginIncorrect && !this.isLoginEmpty() // only error password if error isn't top field\n });\n\n var Dropdown = _index2.default.getComponent('elements.Dropdown');\n\n var loginField = this.renderLoginField(this.state.loginType, matrixIdText === '');\n\n var loginType = void 0;\n if (!_SdkConfig2.default.get().disable_3pid_login) {\n loginType = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_type_container' },\n _react2.default.createElement(\n 'label',\n { className: 'mx_Login_type_label' },\n (0, _languageHandler._t)('Sign in with')\n ),\n _react2.default.createElement(\n Dropdown,\n {\n className: 'mx_Login_type_dropdown',\n value: this.state.loginType,\n disabled: matrixIdText === '',\n onOptionChange: this.onLoginTypeChange },\n _react2.default.createElement(\n 'span',\n { key: PasswordLogin.LOGIN_FIELD_MXID },\n matrixIdText\n ),\n _react2.default.createElement(\n 'span',\n { key: PasswordLogin.LOGIN_FIELD_EMAIL },\n (0, _languageHandler._t)('Email address')\n ),\n _react2.default.createElement(\n 'span',\n { key: PasswordLogin.LOGIN_FIELD_PHONE },\n (0, _languageHandler._t)('Phone')\n )\n )\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'form',\n { onSubmit: this.onSubmitForm },\n loginType,\n loginField,\n _react2.default.createElement('input', { className: pwFieldClass, ref: function ref(e) {\n _this3._passwordField = e;\n }, type: 'password',\n name: 'password',\n value: this.state.password, onChange: this.onPasswordChanged,\n placeholder: (0, _languageHandler._t)('Password'),\n disabled: matrixIdText === ''\n }),\n _react2.default.createElement('br', null),\n forgotPasswordJsx,\n _react2.default.createElement('input', { className: 'mx_Login_submit', type: 'submit', value: (0, _languageHandler._t)('Sign in'), disabled: matrixIdText === '' })\n )\n );\n }\n }]);\n return PasswordLogin;\n}(_react2.default.Component); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nPasswordLogin.defaultProps = {\n onError: function onError() {},\n onUsernameChanged: function onUsernameChanged() {},\n onPasswordChanged: function onPasswordChanged() {},\n onPhoneCountryChanged: function onPhoneCountryChanged() {},\n onPhoneNumberChanged: function onPhoneNumberChanged() {},\n initialUsername: \"\",\n initialPhoneCountry: \"\",\n initialPhoneNumber: \"\",\n initialPassword: \"\",\n loginIncorrect: false,\n hsDomain: \"\"\n};\n\n\nPasswordLogin.LOGIN_FIELD_EMAIL = \"login_field_email\";\nPasswordLogin.LOGIN_FIELD_MXID = \"login_field_mxid\";\nPasswordLogin.LOGIN_FIELD_PHONE = \"login_field_phone\";\n\nPasswordLogin.propTypes = {\n onSubmit: _propTypes2.default.func.isRequired, // fn(username, password)\n onError: _propTypes2.default.func,\n onForgotPasswordClick: _propTypes2.default.func, // fn()\n initialUsername: _propTypes2.default.string,\n initialPhoneCountry: _propTypes2.default.string,\n initialPhoneNumber: _propTypes2.default.string,\n initialPassword: _propTypes2.default.string,\n onUsernameChanged: _propTypes2.default.func,\n onPhoneCountryChanged: _propTypes2.default.func,\n onPhoneNumberChanged: _propTypes2.default.func,\n onPasswordChanged: _propTypes2.default.func,\n loginIncorrect: _propTypes2.default.bool\n};\n\nmodule.exports = PasswordLogin;\n//# sourceMappingURL=PasswordLogin.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar Modal = require('../../../Modal');\nvar sdk = require('../../../index');\n\n\n/**\n * A pure UI component which displays the HS and IS to use.\n */\nmodule.exports = React.createClass({\n displayName: 'ServerConfig',\n\n propTypes: {\n onServerConfigChange: _propTypes2.default.func,\n\n // default URLs are defined in config.json (or the hardcoded defaults)\n // they are used if the user has not overridden them with a custom URL.\n // In other words, if the custom URL is blank, the default is used.\n defaultHsUrl: _propTypes2.default.string, // e.g. https://matrix.org\n defaultIsUrl: _propTypes2.default.string, // e.g. https://vector.im\n\n // custom URLs are explicitly provided by the user and override the\n // default URLs. The user enters them via the component's input fields,\n // which is reflected on these properties whenever on..UrlChanged fires.\n // They are persisted in localStorage by MatrixClientPeg, and so can\n // override the default URLs when the component initially loads.\n customHsUrl: _propTypes2.default.string,\n customIsUrl: _propTypes2.default.string,\n\n withToggleButton: _propTypes2.default.bool,\n delayTimeMs: _propTypes2.default.number // time to wait before invoking onChanged\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onServerConfigChange: function onServerConfigChange() {},\n customHsUrl: \"\",\n customIsUrl: \"\",\n withToggleButton: false,\n delayTimeMs: 0\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n hs_url: this.props.customHsUrl,\n is_url: this.props.customIsUrl,\n // if withToggleButton is false, then show the config all the time given we have no way otherwise of making it visible\n configVisible: !this.props.withToggleButton || this.props.customHsUrl !== this.props.defaultHsUrl || this.props.customIsUrl !== this.props.defaultIsUrl\n };\n },\n\n onHomeserverChanged: function onHomeserverChanged(ev) {\n this.setState({ hs_url: ev.target.value }, function () {\n this._hsTimeoutId = this._waitThenInvoke(this._hsTimeoutId, function () {\n var hsUrl = this.state.hs_url.trim().replace(/\\/$/, \"\");\n if (hsUrl === \"\") hsUrl = this.props.defaultHsUrl;\n this.props.onServerConfigChange({\n hsUrl: this.state.hs_url,\n isUrl: this.state.is_url\n });\n });\n });\n },\n\n onIdentityServerChanged: function onIdentityServerChanged(ev) {\n this.setState({ is_url: ev.target.value }, function () {\n this._isTimeoutId = this._waitThenInvoke(this._isTimeoutId, function () {\n var isUrl = this.state.is_url.trim().replace(/\\/$/, \"\");\n if (isUrl === \"\") isUrl = this.props.defaultIsUrl;\n this.props.onServerConfigChange({\n hsUrl: this.state.hs_url,\n isUrl: this.state.is_url\n });\n });\n });\n },\n\n _waitThenInvoke: function _waitThenInvoke(existingTimeoutId, fn) {\n if (existingTimeoutId) {\n clearTimeout(existingTimeoutId);\n }\n return setTimeout(fn.bind(this), this.props.delayTimeMs);\n },\n\n onServerConfigVisibleChange: function onServerConfigVisibleChange(visible, ev) {\n this.setState({\n configVisible: visible\n });\n if (!visible) {\n this.props.onServerConfigChange({\n hsUrl: this.props.defaultHsUrl,\n isUrl: this.props.defaultIsUrl\n });\n } else {\n this.props.onServerConfigChange({\n hsUrl: this.state.hs_url,\n isUrl: this.state.is_url\n });\n }\n },\n\n showHelpPopup: function showHelpPopup() {\n var CustomServerDialog = sdk.getComponent('login.CustomServerDialog');\n Modal.createTrackedDialog('Custom Server Dialog', '', CustomServerDialog);\n },\n\n render: function render() {\n var serverConfigStyle = {};\n serverConfigStyle.display = this.state.configVisible ? 'block' : 'none';\n\n var toggleButton = void 0;\n if (this.props.withToggleButton) {\n toggleButton = React.createElement(\n 'div',\n { className: 'mx_ServerConfig_selector' },\n React.createElement('input', { className: 'mx_Login_radio', id: 'basic', name: 'configVisible', type: 'radio',\n checked: !this.state.configVisible,\n onChange: this.onServerConfigVisibleChange.bind(this, false) }),\n React.createElement(\n 'label',\n { className: 'mx_Login_label', htmlFor: 'basic' },\n (0, _languageHandler._t)(\"Default server\")\n ),\n '\\xA0\\xA0',\n React.createElement('input', { className: 'mx_Login_radio', id: 'advanced', name: 'configVisible', type: 'radio',\n checked: this.state.configVisible,\n onChange: this.onServerConfigVisibleChange.bind(this, true) }),\n React.createElement(\n 'label',\n { className: 'mx_Login_label', htmlFor: 'advanced' },\n (0, _languageHandler._t)(\"Custom server\")\n )\n );\n }\n\n return React.createElement(\n 'div',\n null,\n toggleButton,\n React.createElement(\n 'div',\n { style: serverConfigStyle },\n React.createElement(\n 'div',\n { className: 'mx_ServerConfig' },\n React.createElement(\n 'label',\n { className: 'mx_Login_label mx_ServerConfig_hslabel', htmlFor: 'hsurl' },\n (0, _languageHandler._t)(\"Home server URL\")\n ),\n React.createElement('input', { className: 'mx_Login_field', id: 'hsurl', type: 'text',\n placeholder: this.props.defaultHsUrl,\n disabled: !this.props.withToggleButton,\n value: this.state.hs_url,\n onChange: this.onHomeserverChanged }),\n React.createElement(\n 'label',\n { className: 'mx_Login_label mx_ServerConfig_islabel', htmlFor: 'isurl' },\n (0, _languageHandler._t)(\"Identity server URL\")\n ),\n React.createElement('input', { className: 'mx_Login_field', id: 'isurl', type: 'text',\n placeholder: this.props.defaultIsUrl,\n disabled: !this.props.withToggleButton,\n value: this.state.is_url,\n onChange: this.onIdentityServerChanged }),\n React.createElement(\n 'a',\n { className: 'mx_ServerConfig_help', href: '#', onClick: this.showHelpPopup },\n (0, _languageHandler._t)(\"What does this mean?\")\n )\n )\n )\n );\n }\n});\n//# sourceMappingURL=ServerConfig.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _DateUtils = require('../../../DateUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction getdaysArray() {\n return [(0, _languageHandler._t)('Sunday'), (0, _languageHandler._t)('Monday'), (0, _languageHandler._t)('Tuesday'), (0, _languageHandler._t)('Wednesday'), (0, _languageHandler._t)('Thursday'), (0, _languageHandler._t)('Friday'), (0, _languageHandler._t)('Saturday')];\n}\n\nvar DateSeparator = function (_React$Component) {\n (0, _inherits3.default)(DateSeparator, _React$Component);\n\n function DateSeparator() {\n (0, _classCallCheck3.default)(this, DateSeparator);\n return (0, _possibleConstructorReturn3.default)(this, (DateSeparator.__proto__ || (0, _getPrototypeOf2.default)(DateSeparator)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(DateSeparator, [{\n key: 'getLabel',\n value: function getLabel() {\n var date = new Date(this.props.ts);\n var today = new Date();\n var yesterday = new Date();\n var days = getdaysArray();\n yesterday.setDate(today.getDate() - 1);\n\n if (date.toDateString() === today.toDateString()) {\n return (0, _languageHandler._t)('Today');\n } else if (date.toDateString() === yesterday.toDateString()) {\n return (0, _languageHandler._t)('Yesterday');\n } else if (today.getTime() - date.getTime() < 6 * 24 * 60 * 60 * 1000) {\n return days[date.getDay()];\n } else {\n return (0, _DateUtils.formatFullDateNoTime)(date);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'h2',\n { className: 'mx_DateSeparator' },\n this.getLabel()\n );\n }\n }]);\n return DateSeparator;\n}(_react2.default.Component);\n\nDateSeparator.propTypes = {\n ts: _propTypes2.default.number.isRequired\n};\nexports.default = DateSeparator;\nmodule.exports = exports['default'];\n//# sourceMappingURL=DateSeparator.js.map","/*\n Copyright 2016 OpenMarket Ltd\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _MFileBody = require('./MFileBody');\n\nvar _MFileBody2 = _interopRequireDefault(_MFileBody);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _DecryptFile = require('../../../utils/DecryptFile');\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MAudioBody = function (_React$Component) {\n (0, _inherits3.default)(MAudioBody, _React$Component);\n\n function MAudioBody(props) {\n (0, _classCallCheck3.default)(this, MAudioBody);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (MAudioBody.__proto__ || (0, _getPrototypeOf2.default)(MAudioBody)).call(this, props));\n\n _this.state = {\n playing: false,\n decryptedUrl: null,\n decryptedBlob: null,\n error: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(MAudioBody, [{\n key: 'onPlayToggle',\n value: function onPlayToggle() {\n this.setState({\n playing: !this.state.playing\n });\n }\n }, {\n key: '_getContentUrl',\n value: function _getContentUrl() {\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined) {\n return this.state.decryptedUrl;\n } else {\n return _MatrixClientPeg2.default.get().mxcUrlToHttp(content.url);\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined && this.state.decryptedUrl === null) {\n var decryptedBlob = void 0;\n (0, _DecryptFile.decryptFile)(content.file).then(function (blob) {\n decryptedBlob = blob;\n return URL.createObjectURL(decryptedBlob);\n }).done(function (url) {\n _this2.setState({\n decryptedUrl: url,\n decryptedBlob: decryptedBlob\n });\n }, function (err) {\n console.warn(\"Unable to decrypt attachment: \", err);\n _this2.setState({\n error: err\n });\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.state.decryptedUrl) {\n URL.revokeObjectURL(this.state.decryptedUrl);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var content = this.props.mxEvent.getContent();\n\n if (this.state.error !== null) {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MAudioBody', ref: 'body' },\n _react2.default.createElement('img', { src: 'img/warning.svg', width: '16', height: '16' }),\n (0, _languageHandler._t)(\"Error decrypting audio\")\n );\n }\n\n if (content.file !== undefined && this.state.decryptedUrl === null) {\n // Need to decrypt the attachment\n // The attachment is decrypted in componentDidMount.\n // For now add an img tag with a 16x16 spinner.\n // Not sure how tall the audio player is so not sure how tall it should actually be.\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MAudioBody' },\n _react2.default.createElement('img', { src: 'img/spinner.gif', alt: content.body, width: '16', height: '16' })\n );\n }\n\n var contentUrl = this._getContentUrl();\n\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MAudioBody' },\n _react2.default.createElement('audio', { src: contentUrl, controls: true }),\n _react2.default.createElement(_MFileBody2.default, (0, _extends3.default)({}, this.props, { decryptedBlob: this.state.decryptedBlob }))\n );\n }\n }]);\n return MAudioBody;\n}(_react2.default.Component);\n\nexports.default = MAudioBody;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MAudioBody.js.map","// the whatwg-fetch polyfill installs the fetch() function\n// on the global object (window or self)\n//\n// Return that as the export for use in Webpack, Browserify etc.\nrequire('whatwg-fetch');\nmodule.exports = self.fetch.bind(self);\n","(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue+','+value : value\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _MImageBody2 = require('./MImageBody');\n\nvar _MImageBody3 = _interopRequireDefault(_MImageBody2);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MStickerBody = function (_MImageBody) {\n (0, _inherits3.default)(MStickerBody, _MImageBody);\n\n function MStickerBody() {\n (0, _classCallCheck3.default)(this, MStickerBody);\n return (0, _possibleConstructorReturn3.default)(this, (MStickerBody.__proto__ || (0, _getPrototypeOf2.default)(MStickerBody)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(MStickerBody, [{\n key: 'onClick',\n\n // Empty to prevent default behaviour of MImageBody\n value: function onClick() {}\n\n // MStickerBody doesn't need a wrapping `<a href=...>`, but it does need extra padding\n // which is added by mx_MStickerBody_wrapper\n\n }, {\n key: 'wrapImage',\n value: function wrapImage(contentUrl, children) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MStickerBody_wrapper' },\n ' ',\n children,\n ' '\n );\n }\n\n // Placeholder to show in place of the sticker image if\n // img onLoad hasn't fired yet.\n\n }, {\n key: 'getPlaceholder',\n value: function getPlaceholder() {\n var TintableSVG = _index2.default.getComponent('elements.TintableSvg');\n return _react2.default.createElement(TintableSVG, { src: 'img/icons-show-stickers.svg', width: '75', height: '75' });\n }\n\n // Tooltip to show on mouse over\n\n }, {\n key: 'getTooltip',\n value: function getTooltip() {\n var content = this.props.mxEvent && this.props.mxEvent.getContent();\n\n if (!content || !content.body || !content.info || !content.info.w) return null;\n\n var RoomTooltip = _index2.default.getComponent('rooms.RoomTooltip');\n return _react2.default.createElement(\n 'div',\n { style: { left: content.info.w + 'px' }, className: 'mx_MStickerBody_tooltip' },\n _react2.default.createElement(RoomTooltip, { label: content.body })\n );\n }\n\n // Don't show \"Download this_file.png ...\"\n\n }, {\n key: 'getFileBody',\n value: function getFileBody() {\n return null;\n }\n }]);\n return MStickerBody;\n}(_MImageBody3.default);\n\nexports.default = MStickerBody;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MStickerBody.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MFileBody = require('./MFileBody');\n\nvar _MFileBody2 = _interopRequireDefault(_MFileBody);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _DecryptFile = require('../../../utils/DecryptFile');\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MVideoBody',\n\n propTypes: {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired,\n\n /* called when the video has loaded */\n onWidgetLoad: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n decryptedUrl: null,\n decryptedThumbnailUrl: null,\n decryptedBlob: null,\n error: null\n };\n },\n\n thumbScale: function thumbScale(fullWidth, fullHeight, thumbWidth, thumbHeight) {\n if (!fullWidth || !fullHeight) {\n // Cannot calculate thumbnail height for image: missing w/h in metadata. We can't even\n // log this because it's spammy\n return undefined;\n }\n if (fullWidth < thumbWidth && fullHeight < thumbHeight) {\n // no scaling needs to be applied\n return 1;\n }\n var widthMulti = thumbWidth / fullWidth;\n var heightMulti = thumbHeight / fullHeight;\n if (widthMulti < heightMulti) {\n // width is the dominant dimension so scaling will be fixed on that\n return widthMulti;\n } else {\n // height is the dominant dimension so scaling will be fixed on that\n return heightMulti;\n }\n },\n\n _getContentUrl: function _getContentUrl() {\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined) {\n return this.state.decryptedUrl;\n } else {\n return _MatrixClientPeg2.default.get().mxcUrlToHttp(content.url);\n }\n },\n\n _getThumbUrl: function _getThumbUrl() {\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined) {\n return this.state.decryptedThumbnailUrl;\n } else if (content.info && content.info.thumbnail_url) {\n return _MatrixClientPeg2.default.get().mxcUrlToHttp(content.info.thumbnail_url);\n } else {\n return null;\n }\n },\n\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined && this.state.decryptedUrl === null) {\n var thumbnailPromise = _bluebird2.default.resolve(null);\n if (content.info.thumbnail_file) {\n thumbnailPromise = (0, _DecryptFile.decryptFile)(content.info.thumbnail_file).then(function (blob) {\n return URL.createObjectURL(blob);\n });\n }\n var decryptedBlob = void 0;\n thumbnailPromise.then(function (thumbnailUrl) {\n return (0, _DecryptFile.decryptFile)(content.file).then(function (blob) {\n decryptedBlob = blob;\n return URL.createObjectURL(blob);\n }).then(function (contentUrl) {\n _this.setState({\n decryptedUrl: contentUrl,\n decryptedThumbnailUrl: thumbnailUrl,\n decryptedBlob: decryptedBlob\n });\n _this.props.onWidgetLoad();\n });\n }).catch(function (err) {\n console.warn(\"Unable to decrypt attachment: \", err);\n // Set a placeholder image when we can't decrypt the image.\n _this.setState({\n error: err\n });\n }).done();\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (this.state.decryptedUrl) {\n URL.revokeObjectURL(this.state.decryptedUrl);\n }\n if (this.state.decryptedThumbnailUrl) {\n URL.revokeObjectURL(this.state.decryptedThumbnailUrl);\n }\n },\n\n render: function render() {\n var content = this.props.mxEvent.getContent();\n\n if (this.state.error !== null) {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MVideoBody', ref: 'body' },\n _react2.default.createElement('img', { src: 'img/warning.svg', width: '16', height: '16' }),\n (0, _languageHandler._t)(\"Error decrypting video\")\n );\n }\n\n if (content.file !== undefined && this.state.decryptedUrl === null) {\n // Need to decrypt the attachment\n // The attachment is decrypted in componentDidMount.\n // For now add an img tag with a spinner.\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MVideoBody', ref: 'body' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MImageBody_thumbnail mx_MImageBody_thumbnail_spinner', ref: 'image' },\n _react2.default.createElement('img', { src: 'img/spinner.gif', alt: content.body, width: '16', height: '16' })\n )\n );\n }\n\n var contentUrl = this._getContentUrl();\n var thumbUrl = this._getThumbUrl();\n var autoplay = _SettingsStore2.default.getValue(\"autoplayGifsAndVideos\");\n var height = null;\n var width = null;\n var poster = null;\n var preload = \"metadata\";\n if (content.info) {\n var scale = this.thumbScale(content.info.w, content.info.h, 480, 360);\n if (scale) {\n width = Math.floor(content.info.w * scale);\n height = Math.floor(content.info.h * scale);\n }\n\n if (thumbUrl) {\n poster = thumbUrl;\n preload = \"none\";\n }\n }\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MVideoBody' },\n _react2.default.createElement('video', { className: 'mx_MVideoBody', src: contentUrl, alt: content.body,\n controls: true, preload: preload, muted: autoplay, autoPlay: autoplay,\n height: height, width: width, poster: poster }),\n _react2.default.createElement(_MFileBody2.default, (0, _extends3.default)({}, this.props, { decryptedBlob: this.state.decryptedBlob }))\n );\n }\n});\n//# sourceMappingURL=MVideoBody.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _DateUtils = require('../../../DateUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MessageTimestamp = function (_React$Component) {\n (0, _inherits3.default)(MessageTimestamp, _React$Component);\n\n function MessageTimestamp() {\n (0, _classCallCheck3.default)(this, MessageTimestamp);\n return (0, _possibleConstructorReturn3.default)(this, (MessageTimestamp.__proto__ || (0, _getPrototypeOf2.default)(MessageTimestamp)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(MessageTimestamp, [{\n key: 'render',\n value: function render() {\n var date = new Date(this.props.ts);\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MessageTimestamp', title: (0, _DateUtils.formatFullDate)(date, this.props.showTwelveHour) },\n (0, _DateUtils.formatTime)(date, this.props.showTwelveHour)\n );\n }\n }]);\n return MessageTimestamp;\n}(_react2.default.Component); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nMessageTimestamp.propTypes = {\n ts: _propTypes2.default.number.isRequired,\n showTwelveHour: _propTypes2.default.bool\n};\nexports.default = MessageTimestamp;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MessageTimestamp.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomAvatarEvent',\n\n propTypes: {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired\n },\n\n onAvatarClick: function onAvatarClick(name) {\n var httpUrl = _MatrixClientPeg2.default.get().mxcUrlToHttp(this.props.mxEvent.getContent().url);\n var ImageView = _index2.default.getComponent(\"elements.ImageView\");\n var params = {\n src: httpUrl,\n name: name\n };\n _Modal2.default.createDialog(ImageView, params, \"mx_Dialog_lightbox\");\n },\n\n render: function render() {\n var _this = this;\n\n var ev = this.props.mxEvent;\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n\n var room = _MatrixClientPeg2.default.get().getRoom(this.props.mxEvent.getRoomId());\n var name = (0, _languageHandler._t)('%(senderDisplayName)s changed the avatar for %(roomName)s', {\n senderDisplayName: senderDisplayName,\n roomName: room ? room.name : ''\n });\n\n if (!ev.getContent().url || ev.getContent().url.trim().length === 0) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_TextualEvent' },\n (0, _languageHandler._t)('%(senderDisplayName)s removed the room avatar.', { senderDisplayName: senderDisplayName })\n );\n }\n\n var url = _matrixJsSdk.ContentRepo.getHttpUriForMxc(_MatrixClientPeg2.default.get().getHomeserverUrl(), ev.getContent().url, Math.ceil(14 * window.devicePixelRatio), Math.ceil(14 * window.devicePixelRatio), 'crop');\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomAvatarEvent' },\n (0, _languageHandler._t)('%(senderDisplayName)s changed the room avatar to <img/>', { senderDisplayName: senderDisplayName }, {\n 'img': function img() {\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { key: 'avatar', className: 'mx_RoomAvatarEvent_avatar',\n onClick: _this.onAvatarClick.bind(_this, name) },\n _react2.default.createElement(BaseAvatar, { width: 14, height: 14, url: url, name: name })\n );\n }\n })\n );\n }\n});\n//# sourceMappingURL=RoomAvatarEvent.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _matrixTo = require('../../../matrix-to');\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomCreate',\n\n propTypes: {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired\n },\n\n _onLinkClicked: function _onLinkClicked(e) {\n e.preventDefault();\n\n var predecessor = this.props.mxEvent.getContent()['predecessor'];\n\n _dispatcher2.default.dispatch({\n action: 'view_room',\n event_id: predecessor['event_id'],\n highlighted: true,\n room_id: predecessor['room_id']\n });\n },\n\n render: function render() {\n var predecessor = this.props.mxEvent.getContent()['predecessor'];\n if (predecessor === undefined) {\n return _react2.default.createElement('div', null); // We should never have been instaniated in this case\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_CreateEvent' },\n _react2.default.createElement('img', { className: 'mx_CreateEvent_image', src: 'img/room-continuation.svg' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateEvent_header' },\n (0, _languageHandler._t)(\"This room is a continuation of another conversation.\")\n ),\n _react2.default.createElement(\n 'a',\n { className: 'mx_CreateEvent_link',\n href: (0, _matrixTo.makeEventPermalink)(predecessor['room_id'], predecessor['event_id']),\n onClick: this._onLinkClicked\n },\n (0, _languageHandler._t)(\"Click here to see older messages.\")\n )\n );\n }\n}); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=RoomCreate.js.map","/*\n Copyright 2015, 2016 OpenMarket Ltd\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Flair = require('../elements/Flair.js');\n\nvar _Flair2 = _interopRequireDefault(_Flair);\n\nvar _FlairStore = require('../../../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'SenderProfile',\n propTypes: {\n mxEvent: _propTypes2.default.object.isRequired, // event whose sender we're showing\n text: _propTypes2.default.string, // Text to show. Defaults to sender name\n onClick: _propTypes2.default.func\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getInitialState: function getInitialState() {\n return {\n userGroups: null,\n relatedGroups: []\n };\n },\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this.unmounted = false;\n this._updateRelatedGroups();\n\n _FlairStore2.default.getPublicisedGroupsCached(this.context.matrixClient, this.props.mxEvent.getSender()).then(function (userGroups) {\n if (_this.unmounted) return;\n _this.setState({ userGroups: userGroups });\n });\n\n this.context.matrixClient.on('RoomState.events', this.onRoomStateEvents);\n },\n componentWillUnmount: function componentWillUnmount() {\n this.unmounted = true;\n this.context.matrixClient.removeListener('RoomState.events', this.onRoomStateEvents);\n },\n onRoomStateEvents: function onRoomStateEvents(event) {\n if (event.getType() === 'm.room.related_groups' && event.getRoomId() === this.props.mxEvent.getRoomId()) {\n this._updateRelatedGroups();\n }\n },\n _updateRelatedGroups: function _updateRelatedGroups() {\n if (this.unmounted) return;\n var room = this.context.matrixClient.getRoom(this.props.mxEvent.getRoomId());\n if (!room) return;\n\n var relatedGroupsEvent = room.currentState.getStateEvents('m.room.related_groups', '');\n this.setState({\n relatedGroups: relatedGroupsEvent ? relatedGroupsEvent.getContent().groups || [] : []\n });\n },\n _getDisplayedGroups: function _getDisplayedGroups(userGroups, relatedGroups) {\n var displayedGroups = userGroups || [];\n if (relatedGroups && relatedGroups.length > 0) {\n displayedGroups = displayedGroups.filter(function (groupId) {\n return relatedGroups.includes(groupId);\n });\n } else {\n displayedGroups = [];\n }\n return displayedGroups;\n },\n render: function render() {\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var mxEvent = this.props.mxEvent;\n\n var name = mxEvent.sender ? mxEvent.sender.name : mxEvent.getSender();\n\n var _mxEvent$getContent = mxEvent.getContent(),\n msgtype = _mxEvent$getContent.msgtype;\n\n if (msgtype === 'm.emote') {\n return _react2.default.createElement('span', null); // emote message must include the name so don't duplicate it\n }\n\n var flair = _react2.default.createElement('div', null);\n if (this.props.enableFlair) {\n var displayedGroups = this._getDisplayedGroups(this.state.userGroups, this.state.relatedGroups);\n\n flair = _react2.default.createElement(_Flair2.default, { key: 'flair',\n userId: mxEvent.getSender(),\n groups: displayedGroups\n });\n }\n\n var nameElem = _react2.default.createElement(\n EmojiText,\n { key: 'name' },\n name || ''\n );\n\n // Name + flair\n var nameFlair = _react2.default.createElement(\n 'span',\n null,\n _react2.default.createElement(\n 'span',\n { className: 'mx_SenderProfile_name' },\n nameElem\n ),\n flair\n );\n\n var content = this.props.text ? _react2.default.createElement(\n 'span',\n { className: 'mx_SenderProfile_aux' },\n (0, _languageHandler._t)(this.props.text, { senderName: function senderName() {\n return nameElem;\n } })\n ) : nameFlair;\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_SenderProfile', dir: 'auto', onClick: this.props.onClick },\n content\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=SenderProfile.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _from = require('babel-runtime/core-js/array/from');\n\nvar _from2 = _interopRequireDefault(_from);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _set = require('babel-runtime/core-js/set');\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _highlight = require('highlight.js');\n\nvar _highlight2 = _interopRequireDefault(_highlight);\n\nvar _HtmlUtils = require('../../../HtmlUtils');\n\nvar HtmlUtils = _interopRequireWildcard(_HtmlUtils);\n\nvar _linkifyjs = require('linkifyjs');\n\nvar linkify = _interopRequireWildcard(_linkifyjs);\n\nvar _element = require('linkifyjs/element');\n\nvar _element2 = _interopRequireDefault(_element);\n\nvar _linkifyMatrix = require('../../../linkify-matrix');\n\nvar _linkifyMatrix2 = _interopRequireDefault(_linkifyMatrix);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ScalarAuthClient = require('../../../ScalarAuthClient');\n\nvar _ScalarAuthClient2 = _interopRequireDefault(_ScalarAuthClient);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _ContextualMenu = require('../../structures/ContextualMenu');\n\nvar ContextualMenu = _interopRequireWildcard(_ContextualMenu);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _pushprocessor = require('matrix-js-sdk/lib/pushprocessor');\n\nvar _pushprocessor2 = _interopRequireDefault(_pushprocessor);\n\nvar _ReplyThread = require('../elements/ReplyThread');\n\nvar _ReplyThread2 = _interopRequireDefault(_ReplyThread);\n\nvar _matrixTo = require('../../../matrix-to');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _linkifyMatrix2.default)(linkify);\n\nmodule.exports = _react2.default.createClass({\n displayName: 'TextualBody',\n\n propTypes: {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired,\n\n /* a list of words to highlight */\n highlights: _propTypes2.default.array,\n\n /* link URL for the highlights */\n highlightLink: _propTypes2.default.string,\n\n /* should show URL previews for this event */\n showUrlPreview: _propTypes2.default.bool,\n\n /* callback for when our widget has loaded */\n onWidgetLoad: _propTypes2.default.func,\n\n /* the shape of the tile, used */\n tileShape: _propTypes2.default.string\n },\n\n getInitialState: function getInitialState() {\n return {\n // the URLs (if any) to be previewed with a LinkPreviewWidget\n // inside this TextualBody.\n links: [],\n\n // track whether the preview widget is hidden\n widgetHidden: false\n };\n },\n\n copyToClipboard: function copyToClipboard(text) {\n var textArea = document.createElement(\"textarea\");\n textArea.value = text;\n document.body.appendChild(textArea);\n textArea.select();\n\n var successful = false;\n try {\n successful = document.execCommand('copy');\n } catch (err) {\n console.log('Unable to copy');\n }\n\n document.body.removeChild(textArea);\n return successful;\n },\n\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n this._unmounted = false;\n\n // pillifyLinks BEFORE linkifyElement because plain room/user URLs in the composer\n // are still sent as plaintext URLs. If these are ever pillified in the composer,\n // we should be pillify them here by doing the linkifying BEFORE the pillifying.\n this.pillifyLinks(this.refs.content.children);\n (0, _element2.default)(this.refs.content, _linkifyMatrix2.default.options);\n this.calculateUrlPreview();\n\n if (this.props.mxEvent.getContent().format === \"org.matrix.custom.html\") {\n var blocks = _reactDom2.default.findDOMNode(this).getElementsByTagName(\"code\");\n if (blocks.length > 0) {\n // Do this asynchronously: parsing code takes time and we don't\n // need to block the DOM update on it.\n setTimeout(function () {\n if (_this._unmounted) return;\n for (var i = 0; i < blocks.length; i++) {\n if (_SettingsStore2.default.getValue(\"enableSyntaxHighlightLanguageDetection\")) {\n _highlight2.default.highlightBlock(blocks[i]);\n } else {\n // Only syntax highlight if there's a class starting with language-\n var classes = blocks[i].className.split(/\\s+/).filter(function (cl) {\n return cl.startsWith('language-');\n });\n\n if (classes.length != 0) {\n _highlight2.default.highlightBlock(blocks[i]);\n }\n }\n }\n }, 10);\n }\n this._addCodeCopyButton();\n }\n },\n\n componentDidUpdate: function componentDidUpdate() {\n this.calculateUrlPreview();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n //console.log(\"shouldComponentUpdate: ShowUrlPreview for %s is %s\", this.props.mxEvent.getId(), this.props.showUrlPreview);\n\n // exploit that events are immutable :)\n return nextProps.mxEvent.getId() !== this.props.mxEvent.getId() || nextProps.highlights !== this.props.highlights || nextProps.highlightLink !== this.props.highlightLink || nextProps.showUrlPreview !== this.props.showUrlPreview || nextState.links !== this.state.links || nextState.widgetHidden !== this.state.widgetHidden;\n },\n\n calculateUrlPreview: function calculateUrlPreview() {\n //console.log(\"calculateUrlPreview: ShowUrlPreview for %s is %s\", this.props.mxEvent.getId(), this.props.showUrlPreview);\n\n if (this.props.showUrlPreview && !this.state.links.length) {\n var links = this.findLinks(this.refs.content.children);\n if (links.length) {\n // de-dup the links (but preserve ordering)\n var seen = new _set2.default();\n links = links.filter(function (link) {\n if (seen.has(link)) return false;\n seen.add(link);\n return true;\n });\n\n this.setState({ links: links });\n\n // lazy-load the hidden state of the preview widget from localstorage\n if (global.localStorage) {\n var hidden = global.localStorage.getItem(\"hide_preview_\" + this.props.mxEvent.getId());\n this.setState({ widgetHidden: hidden });\n }\n }\n }\n },\n\n pillifyLinks: function pillifyLinks(nodes) {\n var shouldShowPillAvatar = !_SettingsStore2.default.getValue(\"Pill.shouldHidePillAvatar\");\n var node = nodes[0];\n while (node) {\n var pillified = false;\n\n if (node.tagName === \"A\" && node.getAttribute(\"href\")) {\n var href = node.getAttribute(\"href\");\n\n // If the link is a (localised) matrix.to link, replace it with a pill\n var Pill = _index2.default.getComponent('elements.Pill');\n if (Pill.isMessagePillUrl(href)) {\n var pillContainer = document.createElement('span');\n\n var room = _MatrixClientPeg2.default.get().getRoom(this.props.mxEvent.getRoomId());\n var pill = _react2.default.createElement(Pill, {\n url: href,\n inMessage: true,\n room: room,\n shouldShowPillAvatar: shouldShowPillAvatar\n });\n\n _reactDom2.default.render(pill, pillContainer);\n node.parentNode.replaceChild(pillContainer, node);\n // Pills within pills aren't going to go well, so move on\n pillified = true;\n\n // update the current node with one that's now taken its place\n node = pillContainer;\n }\n } else if (node.nodeType === Node.TEXT_NODE) {\n var _Pill = _index2.default.getComponent('elements.Pill');\n\n var currentTextNode = node;\n var roomNotifTextNodes = [];\n\n // Take a textNode and break it up to make all the instances of @room their\n // own textNode, adding those nodes to roomNotifTextNodes\n while (currentTextNode !== null) {\n var roomNotifPos = _Pill.roomNotifPos(currentTextNode.textContent);\n var nextTextNode = null;\n if (roomNotifPos > -1) {\n var roomTextNode = currentTextNode;\n\n if (roomNotifPos > 0) roomTextNode = roomTextNode.splitText(roomNotifPos);\n if (roomTextNode.textContent.length > _Pill.roomNotifLen()) {\n nextTextNode = roomTextNode.splitText(_Pill.roomNotifLen());\n }\n roomNotifTextNodes.push(roomTextNode);\n }\n currentTextNode = nextTextNode;\n }\n\n if (roomNotifTextNodes.length > 0) {\n var pushProcessor = new _pushprocessor2.default(_MatrixClientPeg2.default.get());\n var atRoomRule = pushProcessor.getPushRuleById(\".m.rule.roomnotif\");\n if (atRoomRule && pushProcessor.ruleMatchesEvent(atRoomRule, this.props.mxEvent)) {\n // Now replace all those nodes with Pills\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(roomNotifTextNodes), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var roomNotifTextNode = _step.value;\n\n // Set the next node to be processed to the one after the node\n // we're adding now, since we've just inserted nodes into the structure\n // we're iterating over.\n // Note we've checked roomNotifTextNodes.length > 0 so we'll do this at least once\n node = roomNotifTextNode.nextSibling;\n\n var _pillContainer = document.createElement('span');\n var _room = _MatrixClientPeg2.default.get().getRoom(this.props.mxEvent.getRoomId());\n var _pill = _react2.default.createElement(_Pill, {\n type: _Pill.TYPE_AT_ROOM_MENTION,\n inMessage: true,\n room: _room,\n shouldShowPillAvatar: true\n });\n\n _reactDom2.default.render(_pill, _pillContainer);\n roomNotifTextNode.parentNode.replaceChild(_pillContainer, roomNotifTextNode);\n }\n // Nothing else to do for a text node (and we don't need to advance\n // the loop pointer because we did it above)\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n continue;\n }\n }\n }\n\n if (node.childNodes && node.childNodes.length && !pillified) {\n this.pillifyLinks(node.childNodes);\n }\n\n node = node.nextSibling;\n }\n },\n\n findLinks: function findLinks(nodes) {\n var links = [];\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n if (node.tagName === \"A\" && node.getAttribute(\"href\")) {\n if (this.isLinkPreviewable(node)) {\n links.push(node.getAttribute(\"href\"));\n }\n } else if (node.tagName === \"PRE\" || node.tagName === \"CODE\" || node.tagName === \"BLOCKQUOTE\") {\n continue;\n } else if (node.children && node.children.length) {\n links = links.concat(this.findLinks(node.children));\n }\n }\n return links;\n },\n\n isLinkPreviewable: function isLinkPreviewable(node) {\n // don't try to preview relative links\n if (!node.getAttribute(\"href\").startsWith(\"http://\") && !node.getAttribute(\"href\").startsWith(\"https://\")) {\n return false;\n }\n\n // as a random heuristic to avoid highlighting things like \"foo.pl\"\n // we require the linked text to either include a / (either from http://\n // or from a full foo.bar/baz style schemeless URL) - or be a markdown-style\n // link, in which case we check the target text differs from the link value.\n // TODO: make this configurable?\n if (node.textContent.indexOf(\"/\") > -1) {\n return true;\n } else {\n var url = node.getAttribute(\"href\");\n var host = url.match(/^https?:\\/\\/(.*?)(\\/|$)/)[1];\n\n // never preview matrix.to links (if anything we should give a smart\n // preview of the room/user they point to: nobody needs to be reminded\n // what the matrix.to site looks like).\n if (host === _matrixTo.host) return false;\n\n if (node.textContent.toLowerCase().trim().startsWith(host.toLowerCase())) {\n // it's a \"foo.pl\" style link\n return false;\n } else {\n // it's a [foo bar](http://foo.com) style link\n return true;\n }\n }\n },\n\n _addCodeCopyButton: function _addCodeCopyButton() {\n var _this2 = this;\n\n // Add 'copy' buttons to pre blocks\n (0, _from2.default)(_reactDom2.default.findDOMNode(this).querySelectorAll('.mx_EventTile_body pre')).forEach(function (p) {\n var button = document.createElement(\"span\");\n button.className = \"mx_EventTile_copyButton\";\n button.onclick = function (e) {\n var copyCode = button.parentNode.getElementsByTagName(\"code\")[0];\n var successful = _this2.copyToClipboard(copyCode.textContent);\n\n var GenericTextContextMenu = _index2.default.getComponent('context_menus.GenericTextContextMenu');\n var buttonRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = buttonRect.right + window.pageXOffset;\n var y = buttonRect.top + buttonRect.height / 2 + window.pageYOffset - 19;\n\n var _ContextualMenu$creat = ContextualMenu.createMenu(GenericTextContextMenu, {\n chevronOffset: 10,\n left: x,\n top: y,\n message: successful ? (0, _languageHandler._t)('Copied!') : (0, _languageHandler._t)('Failed to copy')\n }, false),\n close = _ContextualMenu$creat.close;\n\n e.target.onmouseleave = close;\n };\n\n // Wrap a div around <pre> so that the copy button can be correctly positioned\n // when the <pre> overflows and is scrolled horizontally.\n var div = document.createElement(\"div\");\n div.className = \"mx_EventTile_pre_container\";\n\n // Insert containing div in place of <pre> block\n p.parentNode.replaceChild(div, p);\n\n // Append <pre> block and copy button to container\n div.appendChild(p);\n div.appendChild(button);\n });\n },\n\n\n onCancelClick: function onCancelClick(event) {\n this.setState({ widgetHidden: true });\n // FIXME: persist this somewhere smarter than local storage\n if (global.localStorage) {\n global.localStorage.setItem(\"hide_preview_\" + this.props.mxEvent.getId(), \"1\");\n }\n this.forceUpdate();\n },\n\n onEmoteSenderClick: function onEmoteSenderClick(event) {\n var mxEvent = this.props.mxEvent;\n _dispatcher2.default.dispatch({\n action: 'insert_mention',\n user_id: mxEvent.getSender()\n });\n },\n\n getEventTileOps: function getEventTileOps() {\n var _this3 = this;\n\n return {\n isWidgetHidden: function isWidgetHidden() {\n return _this3.state.widgetHidden;\n },\n\n unhideWidget: function unhideWidget() {\n _this3.setState({ widgetHidden: false });\n if (global.localStorage) {\n global.localStorage.removeItem(\"hide_preview_\" + _this3.props.mxEvent.getId());\n }\n },\n\n getInnerText: function getInnerText() {\n return _this3.refs.content.innerText;\n }\n };\n },\n\n onStarterLinkClick: function onStarterLinkClick(starterLink, ev) {\n ev.preventDefault();\n // We need to add on our scalar token to the starter link, but we may not have one!\n // In addition, we can't fetch one on click and then go to it immediately as that\n // is then treated as a popup!\n // We can get around this by fetching one now and showing a \"confirmation dialog\" (hurr hurr)\n // which requires the user to click through and THEN we can open the link in a new tab because\n // the window.open command occurs in the same stack frame as the onClick callback.\n\n // Go fetch a scalar token\n var scalarClient = new _ScalarAuthClient2.default();\n scalarClient.connect().then(function () {\n var completeUrl = scalarClient.getStarterLink(starterLink);\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n var integrationsUrl = _SdkConfig2.default.get().integrations_ui_url;\n _Modal2.default.createTrackedDialog('Add an integration', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Add an Integration\"),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"You are about to be taken to a third-party site so you can \" + \"authenticate your account for use with %(integrationsUrl)s. \" + \"Do you wish to continue?\", { integrationsUrl: integrationsUrl })\n ),\n button: (0, _languageHandler._t)(\"Continue\"),\n onFinished: function onFinished(confirmed) {\n if (!confirmed) {\n return;\n }\n var width = window.screen.width > 1024 ? 1024 : window.screen.width;\n var height = window.screen.height > 800 ? 800 : window.screen.height;\n var left = (window.screen.width - width) / 2;\n var top = (window.screen.height - height) / 2;\n window.open(completeUrl, '_blank', 'height=' + height + ', width=' + width + ', top=' + top + ', left=' + left + ',');\n }\n });\n });\n },\n\n render: function render() {\n var _this4 = this;\n\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var mxEvent = this.props.mxEvent;\n var content = mxEvent.getContent();\n\n var stripReply = _ReplyThread2.default.getParentEventId(mxEvent);\n var body = HtmlUtils.bodyToHtml(content, this.props.highlights, {\n disableBigEmoji: _SettingsStore2.default.getValue('TextualBody.disableBigEmoji'),\n // Part of Replies fallback support\n stripReplyFallback: stripReply\n });\n\n if (this.props.highlightLink) {\n body = _react2.default.createElement(\n 'a',\n { href: this.props.highlightLink },\n body\n );\n } else if (content.data && typeof content.data[\"org.matrix.neb.starter_link\"] === \"string\") {\n body = _react2.default.createElement(\n 'a',\n { href: '#', onClick: this.onStarterLinkClick.bind(this, content.data[\"org.matrix.neb.starter_link\"]) },\n body\n );\n }\n\n var widgets = void 0;\n if (this.state.links.length && !this.state.widgetHidden && this.props.showUrlPreview) {\n var LinkPreviewWidget = _index2.default.getComponent('rooms.LinkPreviewWidget');\n widgets = this.state.links.map(function (link) {\n return _react2.default.createElement(LinkPreviewWidget, {\n key: link,\n link: link,\n mxEvent: _this4.props.mxEvent,\n onCancelClick: _this4.onCancelClick,\n onWidgetLoad: _this4.props.onWidgetLoad });\n });\n }\n\n switch (content.msgtype) {\n case \"m.emote\":\n var name = mxEvent.sender ? mxEvent.sender.name : mxEvent.getSender();\n return _react2.default.createElement(\n 'span',\n { ref: 'content', className: 'mx_MEmoteBody mx_EventTile_content' },\n '*\\xA0',\n _react2.default.createElement(\n EmojiText,\n {\n className: 'mx_MEmoteBody_sender',\n onClick: this.onEmoteSenderClick\n },\n name\n ),\n '\\xA0',\n body,\n widgets\n );\n case \"m.notice\":\n return _react2.default.createElement(\n 'span',\n { ref: 'content', className: 'mx_MNoticeBody mx_EventTile_content' },\n body,\n widgets\n );\n default:\n // including \"m.text\"\n return _react2.default.createElement(\n 'span',\n { ref: 'content', className: 'mx_MTextBody mx_EventTile_content' },\n body,\n widgets\n );\n }\n }\n});\n//# sourceMappingURL=TextualBody.js.map","'use strict';\n\nexports.__esModule = true;\n\nvar _linkify = require('./linkify');\n\nvar linkify = _interopRequireWildcard(_linkify);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar tokenize = linkify.tokenize,\n options = linkify.options; /**\n \tLinkify a HTML DOM node\n */\n\nvar Options = options.Options;\n\n\nvar TEXT_TOKEN = linkify.parser.TOKENS.TEXT;\n\nvar HTML_NODE = 1,\n TXT_NODE = 3;\n\n/**\n\tGiven a parent element and child node that the parent contains, replaces\n\tthat child with the given array of new children\n*/\nfunction replaceChildWithChildren(parent, oldChild, newChildren) {\n\tvar lastNewChild = newChildren[newChildren.length - 1];\n\tparent.replaceChild(lastNewChild, oldChild);\n\tfor (var i = newChildren.length - 2; i >= 0; i--) {\n\t\tparent.insertBefore(newChildren[i], lastNewChild);\n\t\tlastNewChild = newChildren[i];\n\t}\n}\n\n/**\n\tGiven an array of MultiTokens, return an array of Nodes that are either\n\t(a) Plain Text nodes (node type 3)\n\t(b) Anchor tag nodes (usually, unless tag name is overridden in the options)\n\n\tTakes the same options as linkifyElement and an optional doc element\n\t(this should be passed in by linkifyElement)\n*/\nfunction tokensToNodes(tokens, opts, doc) {\n\tvar result = [];\n\n\tfor (var _iterator = tokens, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n\t\tvar _ref;\n\n\t\tif (_isArray) {\n\t\t\tif (_i >= _iterator.length) break;\n\t\t\t_ref = _iterator[_i++];\n\t\t} else {\n\t\t\t_i = _iterator.next();\n\t\t\tif (_i.done) break;\n\t\t\t_ref = _i.value;\n\t\t}\n\n\t\tvar token = _ref;\n\n\t\tif (token.type === 'nl' && opts.nl2br) {\n\t\t\tresult.push(doc.createElement('br'));\n\t\t\tcontinue;\n\t\t} else if (!token.isLink || !opts.check(token)) {\n\t\t\tresult.push(doc.createTextNode(token.toString()));\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar _opts$resolve = opts.resolve(token),\n\t\t formatted = _opts$resolve.formatted,\n\t\t formattedHref = _opts$resolve.formattedHref,\n\t\t tagName = _opts$resolve.tagName,\n\t\t className = _opts$resolve.className,\n\t\t target = _opts$resolve.target,\n\t\t events = _opts$resolve.events,\n\t\t attributes = _opts$resolve.attributes;\n\n\t\t// Build the link\n\n\n\t\tvar link = doc.createElement(tagName);\n\t\tlink.setAttribute('href', formattedHref);\n\n\t\tif (className) {\n\t\t\tlink.setAttribute('class', className);\n\t\t}\n\n\t\tif (target) {\n\t\t\tlink.setAttribute('target', target);\n\t\t}\n\n\t\t// Build up additional attributes\n\t\tif (attributes) {\n\t\t\tfor (var attr in attributes) {\n\t\t\t\tlink.setAttribute(attr, attributes[attr]);\n\t\t\t}\n\t\t}\n\n\t\tif (events) {\n\t\t\tfor (var event in events) {\n\t\t\t\tif (link.addEventListener) {\n\t\t\t\t\tlink.addEventListener(event, events[event]);\n\t\t\t\t} else if (link.attachEvent) {\n\t\t\t\t\tlink.attachEvent('on' + event, events[event]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlink.appendChild(doc.createTextNode(formatted));\n\t\tresult.push(link);\n\t}\n\n\treturn result;\n}\n\n// Requires document.createElement\nfunction linkifyElementHelper(element, opts, doc) {\n\n\t// Can the element be linkified?\n\tif (!element || element.nodeType !== HTML_NODE) {\n\t\tthrow new Error('Cannot linkify ' + element + ' - Invalid DOM Node type');\n\t}\n\n\tvar ignoreTags = opts.ignoreTags;\n\n\t// Is this element already a link?\n\tif (element.tagName === 'A' || options.contains(ignoreTags, element.tagName)) {\n\t\t// No need to linkify\n\t\treturn element;\n\t}\n\n\tvar childElement = element.firstChild;\n\n\twhile (childElement) {\n\t\tvar str = void 0,\n\t\t tokens = void 0,\n\t\t nodes = void 0;\n\n\t\tswitch (childElement.nodeType) {\n\t\t\tcase HTML_NODE:\n\t\t\t\tlinkifyElementHelper(childElement, opts, doc);\n\t\t\t\tbreak;\n\t\t\tcase TXT_NODE:\n\t\t\t\t{\n\t\t\t\t\tstr = childElement.nodeValue;\n\t\t\t\t\ttokens = tokenize(str);\n\n\t\t\t\t\tif (tokens.length === 0 || tokens.length === 1 && tokens[0] instanceof TEXT_TOKEN) {\n\t\t\t\t\t\t// No node replacement required\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tnodes = tokensToNodes(tokens, opts, doc);\n\n\t\t\t\t\t// Swap out the current child for the set of nodes\n\t\t\t\t\treplaceChildWithChildren(element, childElement, nodes);\n\n\t\t\t\t\t// so that the correct sibling is selected next\n\t\t\t\t\tchildElement = nodes[nodes.length - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\n\t\tchildElement = childElement.nextSibling;\n\t}\n\n\treturn element;\n}\n\nfunction linkifyElement(element, opts) {\n\tvar doc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\n\ttry {\n\t\tdoc = doc || document || window && window.document || global && global.document;\n\t} catch (e) {/* do nothing for now */}\n\n\tif (!doc) {\n\t\tthrow new Error('Cannot find document implementation. ' + 'If you are in a non-browser environment like Node.js, ' + 'pass the document implementation as the third argument to linkifyElement.');\n\t}\n\n\topts = new Options(opts);\n\treturn linkifyElementHelper(element, opts, doc);\n}\n\n// Maintain reference to the recursive helper to cache option-normalization\nlinkifyElement.helper = linkifyElementHelper;\nlinkifyElement.normalize = function (opts) {\n\treturn new Options(opts);\n};\n\nexports.default = linkifyElement;","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nvar TextForEvent = require('../../../TextForEvent');\n\n\nmodule.exports = React.createClass({\n displayName: 'TextualEvent',\n\n propTypes: {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired\n },\n\n render: function render() {\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var text = TextForEvent.textForEvent(this.props.mxEvent);\n if (text == null || text.length === 0) return null;\n return React.createElement(\n EmojiText,\n { element: 'div', className: 'mx_TextualEvent' },\n text\n );\n }\n});\n//# sourceMappingURL=TextualEvent.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'UnknownBody',\n\n render: function render() {\n var tooltip = (0, _languageHandler._t)(\"Removed or unknown message type\");\n if (this.props.mxEvent.isRedacted()) {\n var redactedBecauseUserId = this.props.mxEvent.getUnsigned().redacted_because.sender;\n tooltip = redactedBecauseUserId ? (0, _languageHandler._t)(\"Message removed by %(userId)s\", { userId: redactedBecauseUserId }) : (0, _languageHandler._t)(\"Message removed\");\n }\n\n var text = this.props.mxEvent.getContent().body;\n return _react2.default.createElement(\n 'span',\n { className: 'mx_UnknownBody', title: tooltip },\n text\n );\n }\n});\n//# sourceMappingURL=UnknownBody.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react'); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar ObjectUtils = require(\"../../../ObjectUtils\");\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar sdk = require(\"../../../index\");\n\nvar Modal = require(\"../../../Modal\");\n\nmodule.exports = React.createClass({\n displayName: 'AliasSettings',\n\n propTypes: {\n roomId: _propTypes2.default.string.isRequired,\n canSetCanonicalAlias: _propTypes2.default.bool.isRequired,\n canSetAliases: _propTypes2.default.bool.isRequired,\n aliasEvents: _propTypes2.default.array, // [MatrixEvent]\n canonicalAliasEvent: _propTypes2.default.object // MatrixEvent\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n canSetAliases: false,\n canSetCanonicalAlias: false,\n aliasEvents: []\n };\n },\n\n getInitialState: function getInitialState() {\n return this.recalculateState(this.props.aliasEvents, this.props.canonicalAliasEvent);\n },\n\n recalculateState: function recalculateState(aliasEvents, canonicalAliasEvent) {\n aliasEvents = aliasEvents || [];\n\n var state = {\n domainToAliases: {}, // { domain.com => [#alias1:domain.com, #alias2:domain.com] }\n remoteDomains: [], // [ domain.com, foobar.com ]\n canonicalAlias: null // #canonical:domain.com\n };\n var localDomain = MatrixClientPeg.get().getDomain();\n\n state.domainToAliases = this.aliasEventsToDictionary(aliasEvents);\n\n state.remoteDomains = (0, _keys2.default)(state.domainToAliases).filter(function (domain) {\n return domain !== localDomain && state.domainToAliases[domain].length > 0;\n });\n\n if (canonicalAliasEvent) {\n state.canonicalAlias = canonicalAliasEvent.getContent().alias;\n }\n\n return state;\n },\n\n saveSettings: function saveSettings() {\n var promises = [];\n\n // save new aliases for m.room.aliases\n var aliasOperations = this.getAliasOperations();\n for (var i = 0; i < aliasOperations.length; i++) {\n var alias_operation = aliasOperations[i];\n console.log(\"alias %s %s\", alias_operation.place, alias_operation.val);\n switch (alias_operation.place) {\n case 'add':\n promises.push(MatrixClientPeg.get().createAlias(alias_operation.val, this.props.roomId));\n break;\n case 'del':\n promises.push(MatrixClientPeg.get().deleteAlias(alias_operation.val));\n break;\n default:\n console.log(\"Unknown alias operation, ignoring: \" + alias_operation.place);\n }\n }\n\n var oldCanonicalAlias = null;\n if (this.props.canonicalAliasEvent) {\n oldCanonicalAlias = this.props.canonicalAliasEvent.getContent().alias;\n }\n\n var newCanonicalAlias = this.state.canonicalAlias;\n\n if (this.props.canSetCanonicalAlias && oldCanonicalAlias !== newCanonicalAlias) {\n console.log(\"AliasSettings: Updating canonical alias\");\n promises = [_bluebird2.default.all(promises).then(MatrixClientPeg.get().sendStateEvent(this.props.roomId, \"m.room.canonical_alias\", {\n alias: newCanonicalAlias\n }, \"\"))];\n }\n\n return promises;\n },\n\n aliasEventsToDictionary: function aliasEventsToDictionary(aliasEvents) {\n // m.room.alias events\n var dict = {};\n aliasEvents.forEach(function (event) {\n dict[event.getStateKey()] = (event.getContent().aliases || []).slice() // shallow-copy\n ;\n });\n return dict;\n },\n\n isAliasValid: function isAliasValid(alias) {\n // XXX: FIXME SPEC-1\n return alias.match(/^#([^\\/:,]+?):(.+)$/) && encodeURI(alias) === alias;\n },\n\n getAliasOperations: function getAliasOperations() {\n var oldAliases = this.aliasEventsToDictionary(this.props.aliasEvents);\n return ObjectUtils.getKeyValueArrayDiffs(oldAliases, this.state.domainToAliases);\n },\n\n onNewAliasChanged: function onNewAliasChanged(value) {\n this.setState({ newAlias: value });\n },\n\n onLocalAliasAdded: function onLocalAliasAdded(alias) {\n if (!alias || alias.length === 0) return; // ignore attempts to create blank aliases\n\n var localDomain = MatrixClientPeg.get().getDomain();\n if (!alias.includes(':')) alias += ':' + localDomain;\n if (this.isAliasValid(alias) && alias.endsWith(localDomain)) {\n this.state.domainToAliases[localDomain] = this.state.domainToAliases[localDomain] || [];\n this.state.domainToAliases[localDomain].push(alias);\n\n this.setState({\n domainToAliases: this.state.domainToAliases,\n // Reset the add field\n newAlias: \"\"\n });\n } else {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Invalid alias format', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Invalid alias format'),\n description: (0, _languageHandler._t)('\\'%(alias)s\\' is not a valid format for an alias', { alias: alias })\n });\n }\n\n if (!this.props.canonicalAlias) {\n this.setState({\n canonicalAlias: alias\n });\n }\n },\n\n onLocalAliasChanged: function onLocalAliasChanged(alias, index) {\n if (alias === \"\") return; // hit the delete button to delete please\n var localDomain = MatrixClientPeg.get().getDomain();\n if (!alias.includes(':')) alias += ':' + localDomain;\n if (this.isAliasValid(alias) && alias.endsWith(localDomain)) {\n this.state.domainToAliases[localDomain][index] = alias;\n } else {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Invalid address format', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Invalid address format'),\n description: (0, _languageHandler._t)('\\'%(alias)s\\' is not a valid format for an address', { alias: alias })\n });\n }\n },\n\n onLocalAliasDeleted: function onLocalAliasDeleted(index) {\n var localDomain = MatrixClientPeg.get().getDomain();\n // It's a bit naughty to directly manipulate this.state, and React would\n // normally whine at you, but it can't see us doing the splice. Given we\n // promptly setState anyway, it's just about acceptable. The alternative\n // would be to arbitrarily deepcopy to a temp variable and then setState\n // that, but why bother when we can cut this corner.\n var alias = this.state.domainToAliases[localDomain].splice(index, 1);\n this.setState({\n domainToAliases: this.state.domainToAliases\n });\n if (this.props.canonicalAlias === alias) {\n this.setState({\n canonicalAlias: null\n });\n }\n },\n\n onCanonicalAliasChange: function onCanonicalAliasChange(event) {\n this.setState({\n canonicalAlias: event.target.value\n });\n },\n\n render: function render() {\n var _this = this;\n\n var self = this;\n var EditableText = sdk.getComponent(\"elements.EditableText\");\n var EditableItemList = sdk.getComponent(\"elements.EditableItemList\");\n var localDomain = MatrixClientPeg.get().getDomain();\n\n var canonical_alias_section = void 0;\n if (this.props.canSetCanonicalAlias) {\n var found = false;\n var canonicalValue = this.state.canonicalAlias || \"\";\n canonical_alias_section = React.createElement(\n 'select',\n { onChange: this.onCanonicalAliasChange, value: canonicalValue },\n React.createElement(\n 'option',\n { value: '', key: 'unset' },\n (0, _languageHandler._t)('not specified')\n ),\n (0, _keys2.default)(self.state.domainToAliases).map(function (domain, i) {\n return self.state.domainToAliases[domain].map(function (alias, j) {\n if (alias === _this.state.canonicalAlias) found = true;\n return React.createElement(\n 'option',\n { value: alias, key: i + \"_\" + j },\n alias\n );\n });\n }),\n found || !this.stateCanonicalAlias ? '' : React.createElement(\n 'option',\n { value: this.state.canonicalAlias, key: 'arbitrary' },\n this.state.canonicalAlias\n )\n );\n } else {\n canonical_alias_section = React.createElement(\n 'b',\n null,\n this.state.canonicalAlias || (0, _languageHandler._t)('not set')\n );\n }\n\n var remote_aliases_section = void 0;\n if (this.state.remoteDomains.length) {\n remote_aliases_section = React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { className: 'mx_RoomSettings_aliasLabel' },\n (0, _languageHandler._t)(\"Remote addresses for this room:\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_RoomSettings_aliasesTable' },\n this.state.remoteDomains.map(function (domain, i) {\n return _this.state.domainToAliases[domain].map(function (alias, j) {\n return React.createElement(\n 'div',\n { className: 'mx_RoomSettings_aliasesTableRow', key: i + \"_\" + j },\n React.createElement(EditableText, {\n className: 'mx_RoomSettings_alias mx_RoomSettings_editable',\n blurToCancel: false,\n editable: false,\n initialValue: alias })\n );\n });\n })\n )\n );\n }\n\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Addresses')\n ),\n React.createElement(\n 'div',\n { className: 'mx_RoomSettings_aliasLabel' },\n (0, _languageHandler._t)('The main address for this room is'),\n ': ',\n canonical_alias_section\n ),\n React.createElement(EditableItemList, {\n className: \"mx_RoomSettings_localAliases\",\n items: this.state.domainToAliases[localDomain] || [],\n newItem: this.state.newAlias,\n onNewItemChanged: this.onNewAliasChanged,\n canEdit: this.props.canSetAliases,\n onItemAdded: this.onLocalAliasAdded,\n onItemEdited: this.onLocalAliasChanged,\n onItemRemoved: this.onLocalAliasDeleted,\n itemsLabel: (0, _languageHandler._t)('Local addresses for this room:'),\n noItemsLabel: (0, _languageHandler._t)('This room has no local addresses'),\n placeholder: (0, _languageHandler._t)('New address (e.g. #foo:%(localDomain)s)', { localDomain: localDomain })\n }),\n remote_aliases_section\n );\n }\n});\n//# sourceMappingURL=AliasSettings.js.map","'use strict';\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react'); /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n\nvar sdk = require('../../../index');\nvar Tinter = require('../../../Tinter');\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\");\nvar Modal = require(\"../../../Modal\");\n\nvar ROOM_COLORS = [\n// magic room default values courtesy of Ribot\n[Tinter.getKeyRgb()[0], Tinter.getKeyRgb()[1]], [\"#81bddb\", \"#eaf1f4\"], [\"#bd79cb\", \"#f3eaf5\"], [\"#c65d94\", \"#f5eaef\"], [\"#e55e5e\", \"#f5eaea\"], [\"#eca46f\", \"#f5eeea\"], [\"#dad658\", \"#f5f4ea\"], [\"#80c553\", \"#eef5ea\"], [\"#bb814e\", \"#eee8e3\"]];\n\nmodule.exports = React.createClass({\n displayName: 'ColorSettings',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n var data = {\n index: 0,\n primary_color: ROOM_COLORS[0][0],\n secondary_color: ROOM_COLORS[0][1],\n hasChanged: false\n };\n var scheme = _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.ROOM_ACCOUNT, \"roomColor\", this.props.room.roomId);\n\n if (scheme.primary_color && scheme.secondary_color) {\n // We only use the user's scheme if the scheme is valid.\n data.primary_color = scheme.primary_color;\n data.secondary_color = scheme.secondary_color;\n }\n data.index = this._getColorIndex(data);\n\n if (data.index === -1) {\n // append the unrecognised colours to our palette\n data.index = ROOM_COLORS.length;\n ROOM_COLORS.push([scheme.primary_color, scheme.secondary_color]);\n }\n return data;\n },\n\n saveSettings: function saveSettings() {\n // : Promise\n if (!this.state.hasChanged) {\n return _bluebird2.default.resolve(); // They didn't explicitly give a color to save.\n }\n var originalState = this.getInitialState();\n if (originalState.primary_color !== this.state.primary_color || originalState.secondary_color !== this.state.secondary_color) {\n console.log(\"ColorSettings: Saving new color\");\n // We would like guests to be able to set room colour but currently\n // they can't, so we still send the request but display a sensible\n // error if it fails.\n // TODO: Support guests for room color. Technically this is possible via granular settings\n // Granular settings would mean the guest is forced to use the DEVICE level though.\n _SettingsStore2.default.setValue(\"roomColor\", this.props.room.roomId, _SettingsStore.SettingLevel.ROOM_ACCOUNT, {\n primary_color: this.state.primary_color,\n secondary_color: this.state.secondary_color\n }).catch(function (err) {\n if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN') {\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n }\n });\n }\n return _bluebird2.default.resolve(); // no color diff\n },\n\n _getColorIndex: function _getColorIndex(scheme) {\n if (!scheme || !scheme.primary_color || !scheme.secondary_color) {\n return -1;\n }\n // XXX: we should validate these values\n for (var i = 0; i < ROOM_COLORS.length; i++) {\n var room_color = ROOM_COLORS[i];\n if (room_color[0] === String(scheme.primary_color).toLowerCase() && room_color[1] === String(scheme.secondary_color).toLowerCase()) {\n return i;\n }\n }\n return -1;\n },\n\n _onColorSchemeChanged: function _onColorSchemeChanged(index) {\n // preview what the user just changed the scheme to.\n Tinter.tint(ROOM_COLORS[index][0], ROOM_COLORS[index][1]);\n this.setState({\n index: index,\n primary_color: ROOM_COLORS[index][0],\n secondary_color: ROOM_COLORS[index][1],\n hasChanged: true\n });\n },\n\n render: function render() {\n var _this = this;\n\n return React.createElement(\n 'div',\n { className: 'mx_RoomSettings_roomColors' },\n ROOM_COLORS.map(function (room_color, i) {\n var selected = void 0;\n if (i === _this.state.index) {\n selected = React.createElement(\n 'div',\n { className: 'mx_RoomSettings_roomColor_selected' },\n React.createElement('img', { src: 'img/tick.svg', width: '17', height: '14', alt: './' })\n );\n }\n var boundClick = _this._onColorSchemeChanged.bind(_this, i);\n return React.createElement(\n 'div',\n { className: 'mx_RoomSettings_roomColor',\n key: \"room_color_\" + i,\n style: { backgroundColor: room_color[1] },\n onClick: boundClick },\n selected,\n React.createElement('div', { className: 'mx_RoomSettings_roomColorPrimary', style: { backgroundColor: room_color[0] } })\n );\n })\n );\n }\n});\n//# sourceMappingURL=ColorSettings.js.map","'use strict';\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _isEqual = require('lodash/isEqual');\n\nvar _isEqual2 = _interopRequireDefault(_isEqual);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar GROUP_ID_REGEX = /\\+\\S+\\:\\S+/; /*\n Copyright 2017 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RelatedGroupSettings',\n\n propTypes: {\n roomId: _propTypes2.default.string.isRequired,\n canSetRelatedGroups: _propTypes2.default.bool.isRequired,\n relatedGroupsEvent: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixEvent)\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n canSetRelatedGroups: false\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n newGroupsList: this.getInitialGroupList(),\n newGroupId: null\n };\n },\n\n getInitialGroupList: function getInitialGroupList() {\n return this.props.relatedGroupsEvent ? this.props.relatedGroupsEvent.getContent().groups || [] : [];\n },\n\n needsSaving: function needsSaving() {\n var cli = this.context.matrixClient;\n var room = cli.getRoom(this.props.roomId);\n if (!room.currentState.maySendStateEvent('m.room.related_groups', cli.getUserId())) return false;\n return !(0, _isEqual2.default)(this.getInitialGroupList(), this.state.newGroupsList);\n },\n\n saveSettings: function saveSettings() {\n if (!this.needsSaving()) return _promise2.default.resolve();\n\n return this.context.matrixClient.sendStateEvent(this.props.roomId, 'm.room.related_groups', {\n groups: this.state.newGroupsList\n }, '');\n },\n\n validateGroupId: function validateGroupId(groupId) {\n if (!GROUP_ID_REGEX.test(groupId)) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Invalid related community ID', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Invalid community ID'),\n description: (0, _languageHandler._t)('\\'%(groupId)s\\' is not a valid community ID', { groupId: groupId })\n });\n return false;\n }\n return true;\n },\n\n onNewGroupChanged: function onNewGroupChanged(newGroupId) {\n this.setState({ newGroupId: newGroupId });\n },\n\n onGroupAdded: function onGroupAdded(groupId) {\n if (groupId.length === 0 || !this.validateGroupId(groupId)) {\n return;\n }\n this.setState({\n newGroupsList: this.state.newGroupsList.concat([groupId]),\n newGroupId: ''\n });\n },\n\n onGroupEdited: function onGroupEdited(groupId, index) {\n if (groupId.length === 0 || !this.validateGroupId(groupId)) {\n return;\n }\n this.setState({\n newGroupsList: (0, _assign2.default)(this.state.newGroupsList, (0, _defineProperty3.default)({}, index, groupId))\n });\n },\n\n onGroupDeleted: function onGroupDeleted(index) {\n var newGroupsList = this.state.newGroupsList.slice();\n newGroupsList.splice(index, 1);\n this.setState({ newGroupsList: newGroupsList });\n },\n\n render: function render() {\n var localDomain = this.context.matrixClient.getDomain();\n var EditableItemList = _index2.default.getComponent('elements.EditableItemList');\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Flair')\n ),\n _react2.default.createElement(EditableItemList, {\n items: this.state.newGroupsList,\n className: \"mx_RelatedGroupSettings\",\n newItem: this.state.newGroupId,\n canEdit: this.props.canSetRelatedGroups,\n onNewItemChanged: this.onNewGroupChanged,\n onItemAdded: this.onGroupAdded,\n onItemEdited: this.onGroupEdited,\n onItemRemoved: this.onGroupDeleted,\n itemsLabel: (0, _languageHandler._t)('Showing flair for these communities:'),\n noItemsLabel: (0, _languageHandler._t)('This room is not showing flair for any communities'),\n placeholder: (0, _languageHandler._t)('New community ID (e.g. +foo:%(localDomain)s)', { localDomain: localDomain })\n })\n );\n }\n});\n//# sourceMappingURL=RelatedGroupSettings.js.map","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","'use strict';\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react'); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 Travis Ralston\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar sdk = require(\"../../../index\");\n\n\nmodule.exports = React.createClass({\n displayName: 'UrlPreviewSettings',\n\n propTypes: {\n room: _propTypes2.default.object\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n },\n\n saveSettings: function saveSettings() {\n var promises = [];\n if (this.refs.urlPreviewsRoom) promises.push(this.refs.urlPreviewsRoom.save());\n if (this.refs.urlPreviewsSelf) promises.push(this.refs.urlPreviewsSelf.save());\n return promises;\n },\n\n render: function render() {\n var SettingsFlag = sdk.getComponent(\"elements.SettingsFlag\");\n var roomId = this.props.room.roomId;\n var isEncrypted = this.context.matrixClient.isRoomEncrypted(roomId);\n\n var previewsForAccount = null;\n var previewsForRoom = null;\n\n if (!isEncrypted) {\n // Only show account setting state and room state setting state in non-e2ee rooms where they apply\n var accountEnabled = _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.ACCOUNT, \"urlPreviewsEnabled\");\n if (accountEnabled) {\n previewsForAccount = (0, _languageHandler._t)(\"You have <a>enabled</a> URL previews by default.\", {}, {\n 'a': function a(sub) {\n return React.createElement(\n 'a',\n { href: '#/settings' },\n sub\n );\n }\n });\n } else if (accountEnabled) {\n previewsForAccount = (0, _languageHandler._t)(\"You have <a>disabled</a> URL previews by default.\", {}, {\n 'a': function a(sub) {\n return React.createElement(\n 'a',\n { href: '#/settings' },\n sub\n );\n }\n });\n }\n\n if (_SettingsStore2.default.canSetValue(\"urlPreviewsEnabled\", roomId, \"room\")) {\n previewsForRoom = React.createElement(\n 'label',\n null,\n React.createElement(SettingsFlag, { name: 'urlPreviewsEnabled',\n level: _SettingsStore.SettingLevel.ROOM,\n roomId: roomId,\n isExplicit: true,\n manualSave: true,\n ref: 'urlPreviewsRoom' })\n );\n } else {\n var str = (0, _languageHandler._td)(\"URL previews are enabled by default for participants in this room.\");\n if (!_SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.ROOM, \"urlPreviewsEnabled\", roomId, /*explicit=*/true)) {\n str = (0, _languageHandler._td)(\"URL previews are disabled by default for participants in this room.\");\n }\n previewsForRoom = React.createElement(\n 'label',\n null,\n (0, _languageHandler._t)(str)\n );\n }\n } else {\n previewsForAccount = (0, _languageHandler._t)(\"In encrypted rooms, like this one, URL previews are disabled by default to ensure that your \" + \"homeserver (where the previews are generated) cannot gather information about links you see in \" + \"this room.\");\n }\n\n var previewsForRoomAccount = // in an e2ee room we use a special key to enforce per-room opt-in\n React.createElement(SettingsFlag, { name: isEncrypted ? 'urlPreviewsEnabled_e2ee' : 'urlPreviewsEnabled',\n level: _SettingsStore.SettingLevel.ROOM_ACCOUNT,\n roomId: roomId,\n manualSave: true,\n ref: 'urlPreviewsSelf'\n });\n\n return React.createElement(\n 'div',\n { className: 'mx_RoomSettings_toggles' },\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"URL Previews\")\n ),\n React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('When someone puts a URL in their message, a URL preview can be shown to give more ' + 'information about that link such as the title, description, and an image from the website.')\n ),\n React.createElement(\n 'div',\n null,\n previewsForAccount\n ),\n previewsForRoom,\n React.createElement(\n 'label',\n null,\n previewsForRoomAccount\n )\n );\n }\n});\n//# sourceMappingURL=UrlPreviewSettings.js.map","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nvar _QueryMatcher = require('./QueryMatcher');\n\nvar _QueryMatcher2 = _interopRequireDefault(_QueryMatcher);\n\nvar _Components = require('./Components');\n\nvar _SlashCommands = require('../SlashCommands');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2017 Vector Creations Ltd\nCopyright 2017 New Vector Ltd\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar COMMANDS = (0, _values2.default)(_SlashCommands.CommandMap);\n\nvar COMMAND_RE = /(^\\/\\w*)(?: .*)?/g;\n\nvar CommandProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(CommandProvider, _AutocompleteProvider);\n\n function CommandProvider() {\n (0, _classCallCheck3.default)(this, CommandProvider);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (CommandProvider.__proto__ || (0, _getPrototypeOf2.default)(CommandProvider)).call(this, COMMAND_RE));\n\n _this.matcher = new _QueryMatcher2.default(COMMANDS, {\n keys: ['command', 'args', 'description']\n });\n return _this;\n }\n\n (0, _createClass3.default)(CommandProvider, [{\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.method)(function (query, selection, force) {\n var _getCurrentCommand = this.getCurrentCommand(query, selection),\n command = _getCurrentCommand.command,\n range = _getCurrentCommand.range;\n\n if (!command) return [];\n\n var matches = [];\n // check if the full match differs from the first word (i.e. returns false if the command has args)\n if (command[0] !== command[1]) {\n // The input looks like a command with arguments, perform exact match\n var name = command[1].substr(1); // strip leading `/`\n if (_SlashCommands.CommandMap[name]) {\n // some commands, namely `me` and `ddg` don't suit having the usage shown whilst typing their arguments\n if (_SlashCommands.CommandMap[name].hideCompletionAfterSpace) return [];\n matches = [_SlashCommands.CommandMap[name]];\n }\n } else {\n if (query === '/') {\n // If they have just entered `/` show everything\n matches = COMMANDS;\n } else {\n // otherwise fuzzy match against all of the fields\n matches = this.matcher.match(command[1]);\n }\n }\n\n return matches.map(function (result) {\n return {\n // If the command is the same as the one they entered, we don't want to discard their arguments\n completion: result.command === command[1] ? command[0] : result.command + ' ',\n component: _react2.default.createElement(_Components.TextualCompletion, {\n title: result.command,\n subtitle: result.args,\n description: (0, _languageHandler._t)(result.description) }),\n range: range\n };\n });\n });\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '*️⃣ ' + (0, _languageHandler._t)('Commands');\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_block' },\n completions\n );\n }\n }]);\n return CommandProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = CommandProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=CommandProvider.js.map","var baseAt = require('./_baseAt'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\nvar at = flatRest(baseAt);\n\nmodule.exports = at;\n","var get = require('./get');\n\n/**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\nfunction baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n}\n\nmodule.exports = baseAt;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _QueryMatcher = require('./QueryMatcher');\n\nvar _QueryMatcher2 = _interopRequireDefault(_QueryMatcher);\n\nvar _Components = require('./Components');\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _sortBy2 = require('lodash/sortBy');\n\nvar _sortBy3 = _interopRequireDefault(_sortBy2);\n\nvar _matrixTo = require('../matrix-to');\n\nvar _FlairStore = require('../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar COMMUNITY_REGEX = /\\B\\+\\S*/g;\n\nfunction score(query, space) {\n var index = space.indexOf(query);\n if (index === -1) {\n return Infinity;\n } else {\n return index;\n }\n}\n\nvar CommunityProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(CommunityProvider, _AutocompleteProvider);\n\n function CommunityProvider() {\n (0, _classCallCheck3.default)(this, CommunityProvider);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (CommunityProvider.__proto__ || (0, _getPrototypeOf2.default)(CommunityProvider)).call(this, COMMUNITY_REGEX));\n\n _this.matcher = new _QueryMatcher2.default([], {\n keys: ['groupId', 'name', 'shortDescription']\n });\n return _this;\n }\n\n (0, _createClass3.default)(CommunityProvider, [{\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(query, selection) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var BaseAvatar, cli, completions, _getCurrentCommand, command, range, joinedGroups, groups, matchedString;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n BaseAvatar = _index2.default.getComponent('views.avatars.BaseAvatar');\n\n // Disable autocompletions when composing commands because of various issues\n // (see https://github.com/vector-im/riot-web/issues/4762)\n\n if (!/^(\\/join|\\/leave)/.test(query)) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt('return', []);\n\n case 3:\n cli = _MatrixClientPeg2.default.get();\n completions = [];\n _getCurrentCommand = this.getCurrentCommand(query, selection, force), command = _getCurrentCommand.command, range = _getCurrentCommand.range;\n\n if (!command) {\n _context.next = 15;\n break;\n }\n\n joinedGroups = cli.getGroups().filter(function (_ref2) {\n var myMembership = _ref2.myMembership;\n return myMembership === 'join';\n });\n _context.next = 10;\n return (0, _bluebird.resolve)(_promise2.default.all(joinedGroups.map(function () {\n var _ref3 = (0, _bluebird.method)(function (_ref4) {\n var groupId = _ref4.groupId;\n\n try {\n return _FlairStore2.default.getGroupProfileCached(cli, groupId);\n } catch (e) {\n // if FlairStore failed, fall back to just groupId\n return _promise2.default.resolve({\n name: '',\n groupId: groupId,\n avatarUrl: '',\n shortDescription: ''\n });\n }\n });\n\n return function (_x5) {\n return _ref3.apply(this, arguments);\n };\n }())));\n\n case 10:\n groups = _context.sent;\n\n\n this.matcher.setObjects(groups);\n\n matchedString = command[0];\n\n completions = this.matcher.match(matchedString);\n completions = (0, _sortBy3.default)(completions, [function (c) {\n return score(matchedString, c.groupId);\n }, function (c) {\n return c.groupId.length;\n }]).map(function (_ref5) {\n var avatarUrl = _ref5.avatarUrl,\n groupId = _ref5.groupId,\n name = _ref5.name;\n return {\n completion: groupId,\n suffix: ' ',\n href: (0, _matrixTo.makeGroupPermalink)(groupId),\n component: _react2.default.createElement(_Components.PillCompletion, { initialComponent: _react2.default.createElement(BaseAvatar, { name: name || groupId,\n width: 24, height: 24,\n url: avatarUrl ? cli.mxcUrlToHttp(avatarUrl, 24, 24) : null }), title: name, description: groupId }),\n range: range\n };\n }).slice(0, 4);\n\n case 15:\n return _context.abrupt('return', completions);\n\n case 16:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '💬 ' + (0, _languageHandler._t)('Communities');\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_pill mx_Autocomplete_Completion_container_truncate' },\n completions\n );\n }\n }]);\n return CommunityProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = CommunityProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=CommunityProvider.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nrequire('whatwg-fetch');\n\nvar _Components = require('./Components');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DDG_REGEX = /\\/ddg\\s+(.+)$/g; /*\n Copyright 2016 Aviral Dasgupta\n Copyright 2017 Vector Creations Ltd\n Copyright 2017, 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar REFERRER = 'vector';\n\nvar DuckDuckGoProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(DuckDuckGoProvider, _AutocompleteProvider);\n\n function DuckDuckGoProvider() {\n (0, _classCallCheck3.default)(this, DuckDuckGoProvider);\n return (0, _possibleConstructorReturn3.default)(this, (DuckDuckGoProvider.__proto__ || (0, _getPrototypeOf2.default)(DuckDuckGoProvider)).call(this, DDG_REGEX));\n }\n\n (0, _createClass3.default)(DuckDuckGoProvider, [{\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(query, selection) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var _getCurrentCommand, command, range, response, json, results;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _getCurrentCommand = this.getCurrentCommand(query, selection), command = _getCurrentCommand.command, range = _getCurrentCommand.range;\n\n if (!(!query || !command)) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt('return', []);\n\n case 3:\n _context.next = 5;\n return (0, _bluebird.resolve)(fetch(DuckDuckGoProvider.getQueryUri(command[1]), {\n method: 'GET'\n }));\n\n case 5:\n response = _context.sent;\n _context.next = 8;\n return (0, _bluebird.resolve)(response.json());\n\n case 8:\n json = _context.sent;\n results = json.Results.map(function (result) {\n return {\n completion: result.Text,\n component: _react2.default.createElement(_Components.TextualCompletion, {\n title: result.Text,\n description: result.Result }),\n range: range\n };\n });\n\n if (json.Answer) {\n results.unshift({\n completion: json.Answer,\n component: _react2.default.createElement(_Components.TextualCompletion, {\n title: json.Answer,\n description: json.AnswerType }),\n range: range\n });\n }\n if (json.RelatedTopics && json.RelatedTopics.length > 0) {\n results.unshift({\n completion: json.RelatedTopics[0].Text,\n component: _react2.default.createElement(_Components.TextualCompletion, {\n title: json.RelatedTopics[0].Text }),\n range: range\n });\n }\n if (json.AbstractText) {\n results.unshift({\n completion: json.AbstractText,\n component: _react2.default.createElement(_Components.TextualCompletion, {\n title: json.AbstractText }),\n range: range\n });\n }\n return _context.abrupt('return', results);\n\n case 14:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '🔍 ' + (0, _languageHandler._t)('Results from DuckDuckGo');\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_block' },\n completions\n );\n }\n }], [{\n key: 'getQueryUri',\n value: function getQueryUri(query) {\n return 'https://api.duckduckgo.com/?q=' + encodeURIComponent(query) + ('&format=json&no_redirect=1&no_html=1&t=' + encodeURIComponent(REFERRER));\n }\n }]);\n return DuckDuckGoProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = DuckDuckGoProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=DuckDuckGoProvider.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _QueryMatcher = require('./QueryMatcher');\n\nvar _QueryMatcher2 = _interopRequireDefault(_QueryMatcher);\n\nvar _Components = require('./Components');\n\nvar _Rooms = require('../Rooms');\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _sortBy2 = require('lodash/sortBy');\n\nvar _sortBy3 = _interopRequireDefault(_sortBy2);\n\nvar _matrixTo = require('../matrix-to');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2017 Vector Creations Ltd\nCopyright 2017, 2018 New Vector Ltd\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ROOM_REGEX = /\\B#\\S*/g;\n\nfunction score(query, space) {\n var index = space.indexOf(query);\n if (index === -1) {\n return Infinity;\n } else {\n return index;\n }\n}\n\nvar RoomProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(RoomProvider, _AutocompleteProvider);\n\n function RoomProvider() {\n (0, _classCallCheck3.default)(this, RoomProvider);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (RoomProvider.__proto__ || (0, _getPrototypeOf2.default)(RoomProvider)).call(this, ROOM_REGEX));\n\n _this.matcher = new _QueryMatcher2.default([], {\n keys: ['displayedAlias', 'name']\n });\n return _this;\n }\n\n (0, _createClass3.default)(RoomProvider, [{\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.method)(function (query, selection) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var RoomAvatar = _index2.default.getComponent('views.avatars.RoomAvatar');\n\n var client = _MatrixClientPeg2.default.get();\n var completions = [];\n\n var _getCurrentCommand = this.getCurrentCommand(query, selection, force),\n command = _getCurrentCommand.command,\n range = _getCurrentCommand.range;\n\n if (command) {\n // the only reason we need to do this is because Fuse only matches on properties\n this.matcher.setObjects(client.getRooms().filter(function (room) {\n return !!room && !!(0, _Rooms.getDisplayAliasForRoom)(room);\n }).map(function (room) {\n return {\n room: room,\n name: room.name,\n displayedAlias: (0, _Rooms.getDisplayAliasForRoom)(room)\n };\n }));\n var matchedString = command[0];\n completions = this.matcher.match(matchedString);\n completions = (0, _sortBy3.default)(completions, [function (c) {\n return score(matchedString, c.displayedAlias);\n }, function (c) {\n return c.displayedAlias.length;\n }]).map(function (room) {\n var displayAlias = (0, _Rooms.getDisplayAliasForRoom)(room.room) || room.roomId;\n return {\n completion: displayAlias,\n completionId: displayAlias,\n suffix: ' ',\n href: (0, _matrixTo.makeRoomPermalink)(displayAlias),\n component: _react2.default.createElement(_Components.PillCompletion, { initialComponent: _react2.default.createElement(RoomAvatar, { width: 24, height: 24, room: room.room }), title: room.name, description: displayAlias }),\n range: range\n };\n }).filter(function (completion) {\n return !!completion.completion && completion.completion.length > 0;\n }).slice(0, 4);\n }\n return completions;\n });\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '💬 ' + (0, _languageHandler._t)('Rooms');\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_pill mx_Autocomplete_Completion_container_truncate' },\n completions\n );\n }\n }]);\n return RoomProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = RoomProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomProvider.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nvar _Components = require('./Components');\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _QueryMatcher = require('./QueryMatcher');\n\nvar _QueryMatcher2 = _interopRequireDefault(_QueryMatcher);\n\nvar _sortBy2 = require('lodash/sortBy');\n\nvar _sortBy3 = _interopRequireDefault(_sortBy2);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _matrixTo = require('../matrix-to');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar USER_REGEX = /\\B@\\S*/g;\n\n// used when you hit 'tab' - we allow some separator chars at the beginning\n// to allow you to tab-complete /mat into /(matthew)\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2017 Vector Creations Ltd\nCopyright 2017, 2018 New Vector Ltd\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar FORCED_USER_REGEX = /[^/,:; \\t\\n]\\S*/g;\n\nvar UserProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(UserProvider, _AutocompleteProvider);\n\n function UserProvider(room) {\n (0, _classCallCheck3.default)(this, UserProvider);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (UserProvider.__proto__ || (0, _getPrototypeOf2.default)(UserProvider)).call(this, USER_REGEX, FORCED_USER_REGEX));\n\n _this.users = null;\n _this.room = null;\n\n _this.room = room;\n _this.matcher = new _QueryMatcher2.default([], {\n keys: ['name'],\n funcs: [function (obj) {\n return obj.userId.slice(1);\n }], // index by user id minus the leading '@'\n shouldMatchPrefix: true,\n shouldMatchWordsOnly: false\n });\n\n _this._onRoomTimelineBound = _this._onRoomTimeline.bind(_this);\n _this._onRoomStateMemberBound = _this._onRoomStateMember.bind(_this);\n\n _MatrixClientPeg2.default.get().on(\"Room.timeline\", _this._onRoomTimelineBound);\n _MatrixClientPeg2.default.get().on(\"RoomState.members\", _this._onRoomStateMemberBound);\n return _this;\n }\n\n (0, _createClass3.default)(UserProvider, [{\n key: 'destroy',\n value: function destroy() {\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener(\"Room.timeline\", this._onRoomTimelineBound);\n _MatrixClientPeg2.default.get().removeListener(\"RoomState.members\", this._onRoomStateMemberBound);\n }\n }\n }, {\n key: '_onRoomTimeline',\n value: function _onRoomTimeline(ev, room, toStartOfTimeline, removed, data) {\n if (!room) return;\n if (removed) return;\n if (room.roomId !== this.room.roomId) return;\n\n // ignore events from filtered timelines\n if (data.timeline.getTimelineSet() !== room.getUnfilteredTimelineSet()) return;\n\n // ignore anything but real-time updates at the end of the room:\n // updates from pagination will happen when the paginate completes.\n if (toStartOfTimeline || !data || !data.liveEvent) return;\n\n // TODO: lazyload if we have no ev.sender room member?\n this.onUserSpoke(ev.sender);\n }\n }, {\n key: '_onRoomStateMember',\n value: function _onRoomStateMember(ev, state, member) {\n // ignore members in other rooms\n if (member.roomId !== this.room.roomId) {\n return;\n }\n\n // blow away the users cache\n this.users = null;\n }\n }, {\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.method)(function (query, selection) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var MemberAvatar = _index2.default.getComponent('views.avatars.MemberAvatar');\n\n // lazy-load user list into matcher\n if (this.users === null) this._makeUsers();\n\n var completions = [];\n\n var _getCurrentCommand = this.getCurrentCommand(query, selection, force),\n command = _getCurrentCommand.command,\n range = _getCurrentCommand.range;\n\n if (!command) return completions;\n\n var fullMatch = command[0];\n // Don't search if the query is a single \"@\"\n if (fullMatch && fullMatch !== '@') {\n // Don't include the '@' in our search query - it's only used as a way to trigger completion\n var _query = fullMatch.startsWith('@') ? fullMatch.substring(1) : fullMatch;\n completions = this.matcher.match(_query).map(function (user) {\n var displayName = user.name || user.userId || '';\n return {\n // Length of completion should equal length of text in decorator. draft-js\n // relies on the length of the entity === length of the text in the decoration.\n completion: user.rawDisplayName,\n completionId: user.userId,\n suffix: selection.beginning && range.start === 0 ? ': ' : ' ',\n href: (0, _matrixTo.makeUserPermalink)(user.userId),\n component: _react2.default.createElement(_Components.PillCompletion, {\n initialComponent: _react2.default.createElement(MemberAvatar, { member: user, width: 24, height: 24 }),\n title: displayName,\n description: user.userId }),\n range: range\n };\n });\n }\n return completions;\n });\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '👥 ' + (0, _languageHandler._t)('Users');\n }\n }, {\n key: '_makeUsers',\n value: function _makeUsers() {\n var events = this.room.getLiveTimeline().getEvents();\n var lastSpoken = {};\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(events), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var event = _step.value;\n\n lastSpoken[event.getSender()] = event.getTs();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var currentUserId = _MatrixClientPeg2.default.get().credentials.userId;\n this.users = this.room.getJoinedMembers().filter(function (_ref2) {\n var userId = _ref2.userId;\n return userId !== currentUserId;\n });\n\n this.users = (0, _sortBy3.default)(this.users, function (member) {\n return 1E20 - lastSpoken[member.userId] || 1E20;\n });\n\n this.matcher.setObjects(this.users);\n }\n }, {\n key: 'onUserSpoke',\n value: function onUserSpoke(user) {\n if (this.users === null) return;\n if (!user) return;\n if (user.userId === _MatrixClientPeg2.default.get().credentials.userId) return;\n\n // Move the user that spoke to the front of the array\n this.users.splice(this.users.findIndex(function (user2) {\n return user2.userId === user.userId;\n }), 1);\n this.users = [user].concat((0, _toConsumableArray3.default)(this.users));\n\n this.matcher.setObjects(this.users);\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_pill' },\n completions\n );\n }\n }, {\n key: 'shouldForceComplete',\n value: function shouldForceComplete() {\n return true;\n }\n }]);\n return UserProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = UserProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=UserProvider.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nvar _emojione = require('emojione');\n\nvar _QueryMatcher = require('./QueryMatcher');\n\nvar _QueryMatcher2 = _interopRequireDefault(_QueryMatcher);\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Components = require('./Components');\n\nvar _uniq2 = require('lodash/uniq');\n\nvar _uniq3 = _interopRequireDefault(_uniq2);\n\nvar _sortBy2 = require('lodash/sortBy');\n\nvar _sortBy3 = _interopRequireDefault(_sortBy2);\n\nvar _SettingsStore = require('../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _strippedEmoji = require('../stripped-emoji.json');\n\nvar _strippedEmoji2 = _interopRequireDefault(_strippedEmoji);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LIMIT = 20; /*\n Copyright 2016 Aviral Dasgupta\n Copyright 2017 Vector Creations Ltd\n Copyright 2017, 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar CATEGORY_ORDER = ['people', 'food', 'objects', 'activity', 'nature', 'travel', 'flags', 'regional', 'symbols', 'modifier'];\n\n// Match for \":wink:\" or ascii-style \";-)\" provided by emojione\n// (^|\\s|(emojiUnicode)) to make sure we're either at the start of the string or there's a\n// whitespace character or an emoji before the emoji. The reason for unicodeRegexp is\n// that we need to support inputting multiple emoji with no space between them.\nvar EMOJI_REGEX = new RegExp('(?:^|\\\\s|' + _emojione.unicodeRegexp + ')(' + _emojione.asciiRegexp + '|:[+-\\\\w]*:?)$', 'g');\n\n// We also need to match the non-zero-length prefixes to remove them from the final match,\n// and update the range so that we don't replace the whitespace or the previous emoji.\nvar MATCH_PREFIX_REGEX = new RegExp('(\\\\s|' + _emojione.unicodeRegexp + ')');\n\nvar EMOJI_SHORTNAMES = (0, _keys2.default)(_strippedEmoji2.default).map(function (key) {\n return _strippedEmoji2.default[key];\n}).sort(function (a, b) {\n if (a.category === b.category) {\n return a.emoji_order - b.emoji_order;\n }\n return CATEGORY_ORDER.indexOf(a.category) - CATEGORY_ORDER.indexOf(b.category);\n}).map(function (a, index) {\n return {\n name: a.name,\n shortname: a.shortname,\n aliases: a.aliases ? a.aliases.join(' ') : '',\n aliases_ascii: a.aliases_ascii ? a.aliases_ascii.join(' ') : '',\n // Include the index so that we can preserve the original order\n _orderBy: index\n };\n});\n\nfunction score(query, space) {\n var index = space.indexOf(query);\n if (index === -1) {\n return Infinity;\n } else {\n return index;\n }\n}\n\nvar EmojiProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(EmojiProvider, _AutocompleteProvider);\n\n function EmojiProvider() {\n (0, _classCallCheck3.default)(this, EmojiProvider);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (EmojiProvider.__proto__ || (0, _getPrototypeOf2.default)(EmojiProvider)).call(this, EMOJI_REGEX));\n\n _this.matcher = new _QueryMatcher2.default(EMOJI_SHORTNAMES, {\n keys: ['aliases_ascii', 'shortname', 'aliases'],\n // For matching against ascii equivalents\n shouldMatchWordsOnly: false\n });\n _this.nameMatcher = new _QueryMatcher2.default(EMOJI_SHORTNAMES, {\n keys: ['name'],\n // For removing punctuation\n shouldMatchWordsOnly: true\n });\n return _this;\n }\n\n (0, _createClass3.default)(EmojiProvider, [{\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.method)(function (query, selection, force) {\n if (_SettingsStore2.default.getValue(\"MessageComposerInput.dontSuggestEmoji\")) {\n return []; // don't give any suggestions if the user doesn't want them\n }\n\n var EmojiText = _index2.default.getComponent('views.elements.EmojiText');\n\n var completions = [];\n\n var _getCurrentCommand = this.getCurrentCommand(query, selection),\n command = _getCurrentCommand.command,\n range = _getCurrentCommand.range;\n\n if (command) {\n var matchedString = command[0];\n\n // Remove prefix of any length (single whitespace or unicode emoji)\n var prefixMatch = MATCH_PREFIX_REGEX.exec(matchedString);\n if (prefixMatch) {\n matchedString = matchedString.slice(prefixMatch[0].length);\n range.start += prefixMatch[0].length;\n }\n completions = this.matcher.match(matchedString);\n\n // Do second match with shouldMatchWordsOnly in order to match against 'name'\n completions = completions.concat(this.nameMatcher.match(matchedString));\n\n var sorters = [];\n // First, sort by score (Infinity if matchedString not in shortname)\n sorters.push(function (c) {\n return score(matchedString, c.shortname);\n });\n // If the matchedString is not empty, sort by length of shortname. Example:\n // matchedString = \":bookmark\"\n // completions = [\":bookmark:\", \":bookmark_tabs:\", ...]\n if (matchedString.length > 1) {\n sorters.push(function (c) {\n return c.shortname.length;\n });\n }\n // Finally, sort by original ordering\n sorters.push(function (c) {\n return c._orderBy;\n });\n completions = (0, _sortBy3.default)((0, _uniq3.default)(completions), sorters);\n\n completions = completions.map(function (result) {\n var shortname = result.shortname;\n\n var unicode = (0, _emojione.shortnameToUnicode)(shortname);\n return {\n completion: unicode,\n component: _react2.default.createElement(_Components.PillCompletion, { title: shortname, initialComponent: _react2.default.createElement(\n EmojiText,\n { style: { maxWidth: '1em' } },\n unicode\n ) }),\n range: range\n };\n }).slice(0, LIMIT);\n }\n return completions;\n });\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '😃 ' + (0, _languageHandler._t)('Emoji');\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_pill' },\n completions\n );\n }\n }]);\n return EmojiProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = EmojiProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=EmojiProvider.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Components = require('./Components');\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar AT_ROOM_REGEX = /@\\S*/g;\n\nvar NotifProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(NotifProvider, _AutocompleteProvider);\n\n function NotifProvider(room) {\n (0, _classCallCheck3.default)(this, NotifProvider);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (NotifProvider.__proto__ || (0, _getPrototypeOf2.default)(NotifProvider)).call(this, AT_ROOM_REGEX));\n\n _this.room = room;\n return _this;\n }\n\n (0, _createClass3.default)(NotifProvider, [{\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.method)(function (query, selection) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var RoomAvatar = _index2.default.getComponent('views.avatars.RoomAvatar');\n\n var client = _MatrixClientPeg2.default.get();\n\n if (!this.room.currentState.mayTriggerNotifOfType('room', client.credentials.userId)) return [];\n\n var _getCurrentCommand = this.getCurrentCommand(query, selection, force),\n command = _getCurrentCommand.command,\n range = _getCurrentCommand.range;\n\n if (command && command[0] && '@room'.startsWith(command[0]) && command[0].length > 1) {\n return [{\n completion: '@room',\n completionId: '@room',\n suffix: ' ',\n component: _react2.default.createElement(_Components.PillCompletion, { initialComponent: _react2.default.createElement(RoomAvatar, { width: 24, height: 24, room: this.room }), title: '@room', description: (0, _languageHandler._t)(\"Notify the whole room\") }),\n range: range\n }];\n }\n return [];\n });\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '❗️ ' + (0, _languageHandler._t)('Room Notification');\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_pill mx_Autocomplete_Completion_container_truncate' },\n completions\n );\n }\n }]);\n return NotifProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = NotifProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=NotifProvider.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _ObjectUtils = require('../../../ObjectUtils');\n\nvar _ObjectUtils2 = _interopRequireDefault(_ObjectUtils);\n\nvar _AppsDrawer = require('./AppsDrawer');\n\nvar _AppsDrawer2 = _interopRequireDefault(_AppsDrawer);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'AuxPanel',\n\n propTypes: {\n // js-sdk room object\n room: _propTypes2.default.object.isRequired,\n userId: _propTypes2.default.string.isRequired,\n showApps: _propTypes2.default.bool, // Render apps\n hideAppsDrawer: _propTypes2.default.bool, // Do not display apps drawer and content (may still be rendered)\n\n // Conference Handler implementation\n conferenceHandler: _propTypes2.default.object,\n\n // set to true to show the file drop target\n draggingFile: _propTypes2.default.bool,\n\n // set to true to show the 'active conf call' banner\n displayConfCallNotification: _propTypes2.default.bool,\n\n // maxHeight attribute for the aux panel and the video\n // therein\n maxHeight: _propTypes2.default.number,\n\n // a callback which is called when the content of the aux panel changes\n // content in a way that is likely to make it change size.\n onResize: _propTypes2.default.func\n },\n\n defaultProps: {\n showApps: true,\n hideAppsDrawer: false\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n return !_ObjectUtils2.default.shallowEqual(this.props, nextProps) || !_ObjectUtils2.default.shallowEqual(this.state, nextState);\n },\n\n componentDidUpdate: function componentDidUpdate(prevProps, prevState) {\n // most changes are likely to cause a resize\n if (this.props.onResize) {\n this.props.onResize();\n }\n },\n\n onConferenceNotificationClick: function onConferenceNotificationClick(ev, type) {\n _dispatcher2.default.dispatch({\n action: 'place_call',\n type: type,\n room_id: this.props.room.roomId\n });\n ev.stopPropagation();\n ev.preventDefault();\n },\n\n render: function render() {\n var _this = this;\n\n var CallView = _index2.default.getComponent(\"voip.CallView\");\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n\n var fileDropTarget = null;\n if (this.props.draggingFile) {\n fileDropTarget = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_fileDropTarget' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_fileDropTargetLabel',\n title: (0, _languageHandler._t)(\"Drop File Here\") },\n _react2.default.createElement(TintableSvg, { src: 'img/upload-big.svg', width: '45', height: '59' }),\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)(\"Drop file here to upload\")\n )\n );\n }\n\n var conferenceCallNotification = null;\n if (this.props.displayConfCallNotification) {\n var supportedText = '';\n var joinNode = void 0;\n if (!_MatrixClientPeg2.default.get().supportsVoip()) {\n supportedText = (0, _languageHandler._t)(\" (unsupported)\");\n } else {\n joinNode = _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Join as <voiceText>voice</voiceText> or <videoText>video</videoText>.\", {}, {\n 'voiceText': function voiceText(sub) {\n return _react2.default.createElement(\n 'a',\n { onClick: function onClick(event) {\n _this.onConferenceNotificationClick(event, 'voice');\n }, href: '#' },\n sub\n );\n },\n 'videoText': function videoText(sub) {\n return _react2.default.createElement(\n 'a',\n { onClick: function onClick(event) {\n _this.onConferenceNotificationClick(event, 'video');\n }, href: '#' },\n sub\n );\n }\n })\n );\n }\n // XXX: the translation here isn't great: appending ' (unsupported)' is likely to not make sense in many languages,\n // but there are translations for this in the languages we do have so I'm leaving it for now.\n conferenceCallNotification = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_ongoingConfCallNotification' },\n (0, _languageHandler._t)(\"Ongoing conference call%(supportedText)s.\", { supportedText: supportedText }),\n '\\xA0',\n joinNode\n );\n }\n\n var callView = _react2.default.createElement(CallView, { ref: 'callView', room: this.props.room,\n ConferenceHandler: this.props.conferenceHandler,\n onResize: this.props.onResize,\n maxVideoHeight: this.props.maxHeight\n });\n\n var appsDrawer = _react2.default.createElement(_AppsDrawer2.default, { ref: 'appsDrawer',\n room: this.props.room,\n userId: this.props.userId,\n maxHeight: this.props.maxHeight,\n showApps: this.props.showApps,\n hide: this.props.hideAppsDrawer\n });\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_auxPanel', style: { maxHeight: this.props.maxHeight } },\n appsDrawer,\n fileDropTarget,\n callView,\n conferenceCallNotification,\n this.props.children\n );\n }\n});\n//# sourceMappingURL=AuxPanel.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactBeautifulDnd = require('react-beautiful-dnd');\n\nvar _RoomTile = require('../../../components/views/rooms/RoomTile');\n\nvar _RoomTile2 = _interopRequireDefault(_RoomTile);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DNDRoomTile = function (_React$PureComponent) {\n (0, _inherits3.default)(DNDRoomTile, _React$PureComponent);\n\n function DNDRoomTile() {\n (0, _classCallCheck3.default)(this, DNDRoomTile);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DNDRoomTile.__proto__ || (0, _getPrototypeOf2.default)(DNDRoomTile)).call(this));\n\n _this.getClassName = _this.getClassName.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(DNDRoomTile, [{\n key: 'getClassName',\n value: function getClassName(isDragging) {\n return (0, _classnames2.default)({\n \"mx_DNDRoomTile\": true,\n \"mx_DNDRoomTile_dragging\": isDragging\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var props = this.props;\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n _reactBeautifulDnd.Draggable,\n {\n key: props.room.roomId,\n draggableId: props.tagName + '_' + props.room.roomId,\n index: props.index,\n type: 'draggable-RoomTile'\n },\n function (provided, snapshot) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n (0, _extends3.default)({\n ref: provided.innerRef\n }, provided.draggableProps, provided.dragHandleProps),\n _react2.default.createElement(\n 'div',\n { className: _this2.getClassName(snapshot.isDragging) },\n _react2.default.createElement(_RoomTile2.default, props)\n )\n ),\n provided.placeholder\n );\n }\n )\n );\n }\n }]);\n return DNDRoomTile;\n}(_react2.default.PureComponent);\n\nexports.default = DNDRoomTile;\nmodule.exports = exports['default'];\n//# sourceMappingURL=DNDRoomTile.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _RoomViewStore = require(\"./stores/RoomViewStore\");\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Consumes changes from the RoomViewStore and notifies specific things\n * about when the active room changes. Unlike listening for RoomViewStore\n * changes, you can subscribe to only changes relevant to a particular\n * room.\n *\n * TODO: If we introduce an observer for something else, factor out\n * the adding / removing of listeners & emitting into a common class.\n */\nvar ActiveRoomObserver = function () {\n function ActiveRoomObserver() {\n (0, _classCallCheck3.default)(this, ActiveRoomObserver);\n\n this._listeners = {};\n\n this._activeRoomId = _RoomViewStore2.default.getRoomId();\n // TODO: We could self-destruct when the last listener goes away, or at least\n // stop listening.\n this._roomStoreToken = _RoomViewStore2.default.addListener(this._onRoomViewStoreUpdate.bind(this));\n }\n\n (0, _createClass3.default)(ActiveRoomObserver, [{\n key: \"addListener\",\n value: function addListener(roomId, listener) {\n if (!this._listeners[roomId]) this._listeners[roomId] = [];\n this._listeners[roomId].push(listener);\n }\n }, {\n key: \"removeListener\",\n value: function removeListener(roomId, listener) {\n if (this._listeners[roomId]) {\n var i = this._listeners[roomId].indexOf(listener);\n if (i > -1) {\n this._listeners[roomId].splice(i, 1);\n }\n } else {\n console.warn(\"Unregistering unrecognised listener (roomId=\" + roomId + \")\");\n }\n }\n }, {\n key: \"_emit\",\n value: function _emit(roomId) {\n if (!this._listeners[roomId]) return;\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this._listeners[roomId]), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var l = _step.value;\n\n l.call();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }, {\n key: \"_onRoomViewStoreUpdate\",\n value: function _onRoomViewStoreUpdate() {\n // emit for the old room ID\n if (this._activeRoomId) this._emit(this._activeRoomId);\n\n // update our cache\n this._activeRoomId = _RoomViewStore2.default.getRoomId();\n\n // and emit for the new one\n if (this._activeRoomId) this._emit(this._activeRoomId);\n }\n }]);\n return ActiveRoomObserver;\n}(); /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nif (global.mx_ActiveRoomObserver === undefined) {\n global.mx_ActiveRoomObserver = new ActiveRoomObserver();\n}\nexports.default = global.mx_ActiveRoomObserver;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=ActiveRoomObserver.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar sdk = require('../../../index');\n\n\nvar PRESENCE_CLASS = {\n \"offline\": \"mx_EntityTile_offline\",\n \"online\": \"mx_EntityTile_online\",\n \"unavailable\": \"mx_EntityTile_unavailable\"\n};\n\nfunction presenceClassForMember(presenceState, lastActiveAgo, showPresence) {\n if (showPresence === false) {\n return 'mx_EntityTile_online_beenactive';\n }\n\n // offline is split into two categories depending on whether we have\n // a last_active_ago for them.\n if (presenceState == 'offline') {\n if (lastActiveAgo) {\n return PRESENCE_CLASS['offline'] + '_beenactive';\n } else {\n return PRESENCE_CLASS['offline'] + '_neveractive';\n }\n } else if (presenceState) {\n return PRESENCE_CLASS[presenceState];\n } else {\n return PRESENCE_CLASS['offline'] + '_neveractive';\n }\n}\n\nvar EntityTile = React.createClass({\n displayName: 'EntityTile',\n\n propTypes: {\n name: _propTypes2.default.string,\n title: _propTypes2.default.string,\n avatarJsx: _propTypes2.default.any, // <BaseAvatar />\n className: _propTypes2.default.string,\n presenceState: _propTypes2.default.string,\n presenceLastActiveAgo: _propTypes2.default.number,\n presenceLastTs: _propTypes2.default.number,\n presenceCurrentlyActive: _propTypes2.default.bool,\n showInviteButton: _propTypes2.default.bool,\n shouldComponentUpdate: _propTypes2.default.func,\n onClick: _propTypes2.default.func,\n suppressOnHover: _propTypes2.default.bool,\n showPresence: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n return true;\n },\n onClick: function onClick() {},\n presenceState: \"offline\",\n presenceLastActiveAgo: 0,\n presenceLastTs: 0,\n showInviteButton: false,\n suppressOnHover: false,\n showPresence: true\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n hover: false\n };\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n if (this.state.hover !== nextState.hover) return true;\n return this.props.shouldComponentUpdate(nextProps, nextState);\n },\n\n mouseEnter: function mouseEnter(e) {\n this.setState({ 'hover': true });\n },\n\n mouseLeave: function mouseLeave(e) {\n this.setState({ 'hover': false });\n },\n\n render: function render() {\n var presenceClass = presenceClassForMember(this.props.presenceState, this.props.presenceLastActiveAgo, this.props.showPresence);\n\n var mainClassName = \"mx_EntityTile \";\n mainClassName += presenceClass + (this.props.className ? \" \" + this.props.className : \"\");\n var nameEl = void 0;\n var name = this.props.name;\n\n\n var EmojiText = sdk.getComponent('elements.EmojiText');\n if (this.state.hover && !this.props.suppressOnHover) {\n var activeAgo = this.props.presenceLastActiveAgo ? Date.now() - (this.props.presenceLastTs - this.props.presenceLastActiveAgo) : -1;\n\n mainClassName += \" mx_EntityTile_hover\";\n var PresenceLabel = sdk.getComponent(\"rooms.PresenceLabel\");\n var presenceLabel = null;\n var nameClasses = 'mx_EntityTile_name';\n if (this.props.showPresence) {\n presenceLabel = React.createElement(PresenceLabel, { activeAgo: activeAgo,\n currentlyActive: this.props.presenceCurrentlyActive,\n presenceState: this.props.presenceState });\n nameClasses += ' mx_EntityTile_name_hover';\n }\n nameEl = React.createElement(\n 'div',\n { className: 'mx_EntityTile_details' },\n React.createElement('img', { className: 'mx_EntityTile_chevron', src: 'img/member_chevron.png', width: '8', height: '12' }),\n React.createElement(\n EmojiText,\n { element: 'div', className: nameClasses, dir: 'auto' },\n name\n ),\n presenceLabel\n );\n } else {\n nameEl = React.createElement(\n EmojiText,\n { element: 'div', className: 'mx_EntityTile_name', dir: 'auto' },\n name\n );\n }\n\n var inviteButton = void 0;\n if (this.props.showInviteButton) {\n inviteButton = React.createElement(\n 'div',\n { className: 'mx_EntityTile_invite' },\n React.createElement('img', { src: 'img/plus.svg', width: '16', height: '16' })\n );\n }\n\n var power = void 0;\n var powerStatus = this.props.powerStatus;\n if (powerStatus) {\n var _EntityTile$POWER_STA, _EntityTile$POWER_STA2;\n\n var src = (_EntityTile$POWER_STA = {}, (0, _defineProperty3.default)(_EntityTile$POWER_STA, EntityTile.POWER_STATUS_MODERATOR, \"img/mod.svg\"), (0, _defineProperty3.default)(_EntityTile$POWER_STA, EntityTile.POWER_STATUS_ADMIN, \"img/admin.svg\"), _EntityTile$POWER_STA)[powerStatus];\n var alt = (_EntityTile$POWER_STA2 = {}, (0, _defineProperty3.default)(_EntityTile$POWER_STA2, EntityTile.POWER_STATUS_MODERATOR, (0, _languageHandler._t)(\"Moderator\")), (0, _defineProperty3.default)(_EntityTile$POWER_STA2, EntityTile.POWER_STATUS_ADMIN, (0, _languageHandler._t)(\"Admin\")), _EntityTile$POWER_STA2)[powerStatus];\n power = React.createElement('img', { src: src, className: 'mx_EntityTile_power', width: '16', height: '17', alt: alt });\n }\n\n var BaseAvatar = sdk.getComponent('avatars.BaseAvatar');\n\n var av = this.props.avatarJsx || React.createElement(BaseAvatar, { name: this.props.name, width: 36, height: 36 });\n\n return React.createElement(\n _AccessibleButton2.default,\n { className: mainClassName, title: this.props.title,\n onClick: this.props.onClick, onMouseEnter: this.mouseEnter,\n onMouseLeave: this.mouseLeave },\n React.createElement(\n 'div',\n { className: 'mx_EntityTile_avatar' },\n av,\n power\n ),\n nameEl,\n inviteButton\n );\n }\n});\n\nEntityTile.POWER_STATUS_MODERATOR = \"moderator\";\nEntityTile.POWER_STATUS_ADMIN = \"admin\";\n\nexports.default = EntityTile;\nmodule.exports = exports['default'];\n//# sourceMappingURL=EntityTile.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _ReplyThread = require('../elements/ReplyThread');\n\nvar _ReplyThread2 = _interopRequireDefault(_ReplyThread);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _withMatrixClient = require('../../../wrappers/withMatrixClient');\n\nvar _withMatrixClient2 = _interopRequireDefault(_withMatrixClient);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _matrixTo = require('../../../matrix-to');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar classNames = require(\"classnames\");\n\nvar Modal = require('../../../Modal');\n\nvar sdk = require('../../../index');\nvar TextForEvent = require('../../../TextForEvent');\n\n\nvar ContextualMenu = require('../../structures/ContextualMenu');\n\n\nvar ObjectUtils = require('../../../ObjectUtils');\n\nvar eventTileTypes = {\n 'm.room.message': 'messages.MessageEvent',\n 'm.sticker': 'messages.MessageEvent',\n 'm.call.invite': 'messages.TextualEvent',\n 'm.call.answer': 'messages.TextualEvent',\n 'm.call.hangup': 'messages.TextualEvent'\n};\n\nvar stateEventTileTypes = {\n 'm.room.aliases': 'messages.TextualEvent',\n // 'm.room.aliases': 'messages.RoomAliasesEvent', // too complex\n 'm.room.canonical_alias': 'messages.TextualEvent',\n 'm.room.create': 'messages.RoomCreate',\n 'm.room.member': 'messages.TextualEvent',\n 'm.room.name': 'messages.TextualEvent',\n 'm.room.avatar': 'messages.RoomAvatarEvent',\n 'm.room.third_party_invite': 'messages.TextualEvent',\n 'm.room.history_visibility': 'messages.TextualEvent',\n 'm.room.encryption': 'messages.TextualEvent',\n 'm.room.topic': 'messages.TextualEvent',\n 'm.room.power_levels': 'messages.TextualEvent',\n 'm.room.pinned_events': 'messages.TextualEvent',\n 'm.room.server_acl': 'messages.TextualEvent',\n 'im.vector.modular.widgets': 'messages.TextualEvent'\n};\n\nfunction getHandlerTile(ev) {\n var type = ev.getType();\n return ev.isState() ? stateEventTileTypes[type] : eventTileTypes[type];\n}\n\nvar MAX_READ_AVATARS = 5;\n\n// Our component structure for EventTiles on the timeline is:\n//\n// .-EventTile------------------------------------------------.\n// | MemberAvatar (SenderProfile) TimeStamp |\n// | .-{Message,Textual}Event---------------. Read Avatars |\n// | | .-MFooBody-------------------. | |\n// | | | (only if MessageEvent) | | |\n// | | '----------------------------' | |\n// | '--------------------------------------' |\n// '----------------------------------------------------------'\n\nmodule.exports = (0, _withMatrixClient2.default)(React.createClass({\n displayName: 'EventTile',\n\n propTypes: {\n /* MatrixClient instance for sender verification etc */\n matrixClient: _propTypes2.default.object.isRequired,\n\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired,\n\n /* true if mxEvent is redacted. This is a prop because using mxEvent.isRedacted()\n * might not be enough when deciding shouldComponentUpdate - prevProps.mxEvent\n * references the same this.props.mxEvent.\n */\n isRedacted: _propTypes2.default.bool,\n\n /* true if this is a continuation of the previous event (which has the\n * effect of not showing another avatar/displayname\n */\n continuation: _propTypes2.default.bool,\n\n /* true if this is the last event in the timeline (which has the effect\n * of always showing the timestamp)\n */\n last: _propTypes2.default.bool,\n\n /* true if this is search context (which has the effect of greying out\n * the text\n */\n contextual: _propTypes2.default.bool,\n\n /* a list of words to highlight, ordered by longest first */\n highlights: _propTypes2.default.array,\n\n /* link URL for the highlights */\n highlightLink: _propTypes2.default.string,\n\n /* should show URL previews for this event */\n showUrlPreview: _propTypes2.default.bool,\n\n /* is this the focused event */\n isSelectedEvent: _propTypes2.default.bool,\n\n /* callback called when dynamic content in events are loaded */\n onWidgetLoad: _propTypes2.default.func,\n\n /* a list of read-receipts we should show. Each object has a 'roomMember' and 'ts'. */\n readReceipts: _propTypes2.default.arrayOf(React.PropTypes.object),\n\n /* opaque readreceipt info for each userId; used by ReadReceiptMarker\n * to manage its animations. Should be an empty object when the room\n * first loads\n */\n readReceiptMap: _propTypes2.default.object,\n\n /* A function which is used to check if the parent panel is being\n * unmounted, to avoid unnecessary work. Should return true if we\n * are being unmounted.\n */\n checkUnmounting: _propTypes2.default.func,\n\n /* the status of this event - ie, mxEvent.status. Denormalised to here so\n * that we can tell when it changes. */\n eventSendStatus: _propTypes2.default.string,\n\n /* the shape of the tile. by default, the layout is intended for the\n * normal room timeline. alternative values are: \"file_list\", \"file_grid\"\n * and \"notif\". This could be done by CSS, but it'd be horribly inefficient.\n * It could also be done by subclassing EventTile, but that'd be quite\n * boiilerplatey. So just make the necessary render decisions conditional\n * for now.\n */\n tileShape: _propTypes2.default.string,\n\n // show twelve hour timestamps\n isTwelveHour: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n // no-op function because onWidgetLoad is optional yet some sub-components assume its existence\n onWidgetLoad: function onWidgetLoad() {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n // Whether the context menu is being displayed.\n menu: false,\n // Whether all read receipts are being displayed. If not, only display\n // a truncation of them.\n allReadAvatars: false,\n // Whether the event's sender has been verified.\n verified: null,\n // Whether onRequestKeysClick has been called since mounting.\n previouslyRequestedKeys: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n // don't do RR animations until we are mounted\n this._suppressReadReceiptAnimation = true;\n this._verifyEvent(this.props.mxEvent);\n },\n\n componentDidMount: function componentDidMount() {\n this._suppressReadReceiptAnimation = false;\n this.props.matrixClient.on(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n this.props.mxEvent.on(\"Event.decrypted\", this._onDecrypted);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n // re-check the sender verification as outgoing events progress through\n // the send process.\n if (nextProps.eventSendStatus !== this.props.eventSendStatus) {\n this._verifyEvent(nextProps.mxEvent);\n }\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n if (!ObjectUtils.shallowEqual(this.state, nextState)) {\n return true;\n }\n\n return !this._propsEqual(this.props, nextProps);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var client = this.props.matrixClient;\n client.removeListener(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n this.props.mxEvent.removeListener(\"Event.decrypted\", this._onDecrypted);\n },\n\n /** called when the event is decrypted after we show it.\n */\n _onDecrypted: function _onDecrypted() {\n // we need to re-verify the sending device.\n // (we call onWidgetLoad in _verifyEvent to handle the case where decryption\n // has caused a change in size of the event tile)\n this._verifyEvent(this.props.mxEvent);\n this.forceUpdate();\n },\n\n onDeviceVerificationChanged: function onDeviceVerificationChanged(userId, device) {\n if (userId === this.props.mxEvent.getSender()) {\n this._verifyEvent(this.props.mxEvent);\n }\n },\n\n _verifyEvent: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(mxEvent) {\n var _this = this;\n\n var verified;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (mxEvent.isEncrypted()) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt('return');\n\n case 2:\n _context.next = 4;\n return (0, _bluebird.resolve)(this.props.matrixClient.isEventSenderVerified(mxEvent));\n\n case 4:\n verified = _context.sent;\n\n this.setState({\n verified: verified\n }, function () {\n // Decryption may have caused a change in size\n _this.props.onWidgetLoad();\n });\n\n case 6:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function _verifyEvent(_x) {\n return _ref.apply(this, arguments);\n }\n\n return _verifyEvent;\n }(),\n\n _propsEqual: function _propsEqual(objA, objB) {\n var keysA = (0, _keys2.default)(objA);\n var keysB = (0, _keys2.default)(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n for (var i = 0; i < keysA.length; i++) {\n var key = keysA[i];\n\n if (!objB.hasOwnProperty(key)) {\n return false;\n }\n\n // need to deep-compare readReceipts\n if (key === 'readReceipts') {\n var rA = objA[key];\n var rB = objB[key];\n if (rA === rB) {\n continue;\n }\n\n if (!rA || !rB) {\n return false;\n }\n\n if (rA.length !== rB.length) {\n return false;\n }\n for (var j = 0; j < rA.length; j++) {\n if (rA[j].userId !== rB[j].userId) {\n return false;\n }\n // one has a member set and the other doesn't?\n if (rA[j].roomMember !== rB[j].roomMember) {\n return false;\n }\n }\n } else {\n if (objA[key] !== objB[key]) {\n return false;\n }\n }\n }\n return true;\n },\n\n shouldHighlight: function shouldHighlight() {\n var actions = this.props.matrixClient.getPushActionsForEvent(this.props.mxEvent);\n if (!actions || !actions.tweaks) {\n return false;\n }\n\n // don't show self-highlights from another of our clients\n if (this.props.mxEvent.getSender() === this.props.matrixClient.credentials.userId) {\n return false;\n }\n\n return actions.tweaks.highlight;\n },\n\n onEditClicked: function onEditClicked(e) {\n var MessageContextMenu = sdk.getComponent('context_menus.MessageContextMenu');\n var buttonRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = buttonRect.right + window.pageXOffset;\n var y = buttonRect.top + buttonRect.height / 2 + window.pageYOffset - 19;\n var self = this;\n\n var _refs = this.refs,\n tile = _refs.tile,\n replyThread = _refs.replyThread;\n\n\n ContextualMenu.createMenu(MessageContextMenu, {\n chevronOffset: 10,\n mxEvent: this.props.mxEvent,\n left: x,\n top: y,\n eventTileOps: tile && tile.getEventTileOps ? tile.getEventTileOps() : undefined,\n collapseReplyThread: replyThread && replyThread.canCollapse() ? replyThread.collapse : undefined,\n onFinished: function onFinished() {\n self.setState({ menu: false });\n }\n });\n this.setState({ menu: true });\n },\n\n toggleAllReadAvatars: function toggleAllReadAvatars() {\n this.setState({\n allReadAvatars: !this.state.allReadAvatars\n });\n },\n\n getReadAvatars: function getReadAvatars() {\n // return early if there are no read receipts\n if (!this.props.readReceipts || this.props.readReceipts.length === 0) {\n return React.createElement('span', { className: 'mx_EventTile_readAvatars' });\n }\n\n var ReadReceiptMarker = sdk.getComponent('rooms.ReadReceiptMarker');\n var avatars = [];\n var receiptOffset = 15;\n var left = 0;\n\n var receipts = this.props.readReceipts || [];\n for (var i = 0; i < receipts.length; ++i) {\n var receipt = receipts[i];\n\n var hidden = true;\n if (i < MAX_READ_AVATARS || this.state.allReadAvatars) {\n hidden = false;\n }\n // TODO: we keep the extra read avatars in the dom to make animation simpler\n // we could optimise this to reduce the dom size.\n\n // If hidden, set offset equal to the offset of the final visible avatar or\n // else set it proportional to index\n left = (hidden ? MAX_READ_AVATARS - 1 : i) * -receiptOffset;\n\n var userId = receipt.userId;\n var readReceiptInfo = void 0;\n\n if (this.props.readReceiptMap) {\n readReceiptInfo = this.props.readReceiptMap[userId];\n if (!readReceiptInfo) {\n readReceiptInfo = {};\n this.props.readReceiptMap[userId] = readReceiptInfo;\n }\n }\n\n // add to the start so the most recent is on the end (ie. ends up rightmost)\n avatars.unshift(React.createElement(ReadReceiptMarker, { key: userId, member: receipt.roomMember,\n fallbackUserId: userId,\n leftOffset: left, hidden: hidden,\n readReceiptInfo: readReceiptInfo,\n checkUnmounting: this.props.checkUnmounting,\n suppressAnimation: this._suppressReadReceiptAnimation,\n onClick: this.toggleAllReadAvatars,\n timestamp: receipt.ts,\n showTwelveHour: this.props.isTwelveHour\n }));\n }\n var remText = void 0;\n if (!this.state.allReadAvatars) {\n var remainder = receipts.length - MAX_READ_AVATARS;\n if (remainder > 0) {\n remText = React.createElement(\n 'span',\n { className: 'mx_EventTile_readAvatarRemainder',\n onClick: this.toggleAllReadAvatars,\n style: { right: -(left - receiptOffset) } },\n remainder,\n '+'\n );\n }\n }\n\n return React.createElement(\n 'span',\n { className: 'mx_EventTile_readAvatars' },\n remText,\n avatars\n );\n },\n\n onSenderProfileClick: function onSenderProfileClick(event) {\n var mxEvent = this.props.mxEvent;\n _dispatcher2.default.dispatch({\n action: 'insert_mention',\n user_id: mxEvent.getSender()\n });\n },\n\n onCryptoClicked: function onCryptoClicked(e) {\n var event = this.props.mxEvent;\n\n Modal.createTrackedDialogAsync('Encrypted Event Dialog', '', function (cb) {\n require(['../../../async-components/views/dialogs/EncryptedEventDialog'], cb);\n }, {\n event: event\n });\n },\n\n onRequestKeysClick: function onRequestKeysClick() {\n this.setState({\n // Indicate in the UI that the keys have been requested (this is expected to\n // be reset if the component is mounted in the future).\n previouslyRequestedKeys: true\n });\n\n // Cancel any outgoing key request for this event and resend it. If a response\n // is received for the request with the required keys, the event could be\n // decrypted successfully.\n this.props.matrixClient.cancelAndResendEventRoomKeyRequest(this.props.mxEvent);\n },\n\n onPermalinkClicked: function onPermalinkClicked(e) {\n // This allows the permalink to be opened in a new tab/window or copied as\n // matrix.to, but also for it to enable routing within Riot when clicked.\n e.preventDefault();\n _dispatcher2.default.dispatch({\n action: 'view_room',\n event_id: this.props.mxEvent.getId(),\n highlighted: true,\n room_id: this.props.mxEvent.getRoomId()\n });\n },\n\n _renderE2EPadlock: function _renderE2EPadlock() {\n var ev = this.props.mxEvent;\n var props = { onClick: this.onCryptoClicked };\n\n // event could not be decrypted\n if (ev.getContent().msgtype === 'm.bad.encrypted') {\n return React.createElement(E2ePadlockUndecryptable, props);\n }\n\n // event is encrypted, display padlock corresponding to whether or not it is verified\n if (ev.isEncrypted()) {\n return this.state.verified ? React.createElement(E2ePadlockVerified, props) : React.createElement(E2ePadlockUnverified, props);\n }\n\n if (this.props.matrixClient.isRoomEncrypted(ev.getRoomId())) {\n // else if room is encrypted\n // and event is being encrypted or is not_sent (Unknown Devices/Network Error)\n if (ev.status === _matrixJsSdk.EventStatus.ENCRYPTING) {\n return React.createElement(E2ePadlockEncrypting, props);\n }\n if (ev.status === _matrixJsSdk.EventStatus.NOT_SENT) {\n return React.createElement(E2ePadlockNotSent, props);\n }\n // if the event is not encrypted, but it's an e2e room, show the open padlock\n return React.createElement(E2ePadlockUnencrypted, props);\n }\n\n // no padlock needed\n return null;\n },\n\n render: function render() {\n var _this2 = this;\n\n var MessageTimestamp = sdk.getComponent('messages.MessageTimestamp');\n var SenderProfile = sdk.getComponent('messages.SenderProfile');\n var MemberAvatar = sdk.getComponent('avatars.MemberAvatar');\n\n //console.log(\"EventTile showUrlPreview for %s is %s\", this.props.mxEvent.getId(), this.props.showUrlPreview);\n\n var content = this.props.mxEvent.getContent();\n var msgtype = content.msgtype;\n var eventType = this.props.mxEvent.getType();\n\n // Info messages are basically information about commands processed on a room\n var isInfoMessage = eventType !== 'm.room.message' && eventType !== 'm.sticker' && eventType != 'm.room.create';\n\n var tileHandler = getHandlerTile(this.props.mxEvent);\n // This shouldn't happen: the caller should check we support this type\n // before trying to instantiate us\n if (!tileHandler) {\n var mxEvent = this.props.mxEvent;\n\n console.warn('Event type not supported: type:' + mxEvent.getType() + ' isState:' + mxEvent.isState());\n return React.createElement(\n 'div',\n { className: 'mx_EventTile mx_EventTile_info mx_MNoticeBody' },\n React.createElement(\n 'div',\n { className: 'mx_EventTile_line' },\n (0, _languageHandler._t)('This event could not be displayed')\n )\n );\n }\n var EventTileType = sdk.getComponent(tileHandler);\n\n var isSending = ['sending', 'queued', 'encrypting'].indexOf(this.props.eventSendStatus) !== -1;\n var isRedacted = isMessageEvent(this.props.mxEvent) && this.props.isRedacted;\n var isEncryptionFailure = this.props.mxEvent.isDecryptionFailure();\n\n var classes = classNames({\n mx_EventTile: true,\n mx_EventTile_info: isInfoMessage,\n mx_EventTile_12hr: this.props.isTwelveHour,\n mx_EventTile_encrypting: this.props.eventSendStatus === 'encrypting',\n mx_EventTile_sending: isSending,\n mx_EventTile_notSent: this.props.eventSendStatus === 'not_sent',\n mx_EventTile_highlight: this.props.tileShape === 'notif' ? false : this.shouldHighlight(),\n mx_EventTile_selected: this.props.isSelectedEvent,\n mx_EventTile_continuation: this.props.tileShape ? '' : this.props.continuation,\n mx_EventTile_last: this.props.last,\n mx_EventTile_contextual: this.props.contextual,\n menu: this.state.menu,\n mx_EventTile_verified: this.state.verified === true,\n mx_EventTile_unverified: this.state.verified === false,\n mx_EventTile_bad: isEncryptionFailure,\n mx_EventTile_emote: msgtype === 'm.emote',\n mx_EventTile_redacted: isRedacted\n });\n\n var permalink = (0, _matrixTo.makeEventPermalink)(this.props.mxEvent.getRoomId(), this.props.mxEvent.getId());\n\n var readAvatars = this.getReadAvatars();\n\n var avatar = void 0;\n var sender = void 0;\n var avatarSize = void 0;\n var needsSenderProfile = void 0;\n\n if (this.props.tileShape === \"notif\") {\n avatarSize = 24;\n needsSenderProfile = true;\n } else if (tileHandler === 'messages.RoomCreate') {\n avatarSize = 0;\n needsSenderProfile = false;\n } else if (isInfoMessage) {\n // a small avatar, with no sender profile, for\n // joins/parts/etc\n avatarSize = 14;\n needsSenderProfile = false;\n } else if (this.props.continuation && this.props.tileShape !== \"file_grid\") {\n // no avatar or sender profile for continuation messages\n avatarSize = 0;\n needsSenderProfile = false;\n } else {\n avatarSize = 30;\n needsSenderProfile = true;\n }\n\n if (this.props.mxEvent.sender && avatarSize) {\n avatar = React.createElement(\n 'div',\n { className: 'mx_EventTile_avatar' },\n React.createElement(MemberAvatar, { member: this.props.mxEvent.sender,\n width: avatarSize, height: avatarSize,\n viewUserOnClick: true\n })\n );\n }\n\n if (needsSenderProfile) {\n var text = null;\n if (!this.props.tileShape || this.props.tileShape === 'reply' || this.props.tileShape === 'reply_preview') {\n if (msgtype === 'm.image') text = (0, _languageHandler._td)('%(senderName)s sent an image');else if (msgtype === 'm.video') text = (0, _languageHandler._td)('%(senderName)s sent a video');else if (msgtype === 'm.file') text = (0, _languageHandler._td)('%(senderName)s uploaded a file');\n sender = React.createElement(SenderProfile, { onClick: this.onSenderProfileClick,\n mxEvent: this.props.mxEvent,\n enableFlair: !text,\n text: text });\n } else {\n sender = React.createElement(SenderProfile, { mxEvent: this.props.mxEvent, enableFlair: true });\n }\n }\n\n var editButton = React.createElement('span', { className: 'mx_EventTile_editButton', title: (0, _languageHandler._t)(\"Options\"), onClick: this.onEditClicked });\n\n var timestamp = this.props.mxEvent.getTs() ? React.createElement(MessageTimestamp, { showTwelveHour: this.props.isTwelveHour, ts: this.props.mxEvent.getTs() }) : null;\n\n var keyRequestHelpText = React.createElement(\n 'div',\n { className: 'mx_EventTile_keyRequestInfo_tooltip_contents' },\n React.createElement(\n 'p',\n null,\n this.state.previouslyRequestedKeys ? (0, _languageHandler._t)('Your key share request has been sent - please check your other devices ' + 'for key share requests.') : (0, _languageHandler._t)('Key share requests are sent to your other devices automatically. If you ' + 'rejected or dismissed the key share request on your other devices, click ' + 'here to request the keys for this session again.')\n ),\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('If your other devices do not have the key for this message you will not ' + 'be able to decrypt them.')\n )\n );\n var keyRequestInfoContent = this.state.previouslyRequestedKeys ? (0, _languageHandler._t)('Key request sent.') : (0, _languageHandler._t)('<requestLink>Re-request encryption keys</requestLink> from your other devices.', {}, { 'requestLink': function requestLink(sub) {\n return React.createElement(\n 'a',\n { onClick: _this2.onRequestKeysClick },\n sub\n );\n } });\n\n var ToolTipButton = sdk.getComponent('elements.ToolTipButton');\n var keyRequestInfo = isEncryptionFailure ? React.createElement(\n 'div',\n { className: 'mx_EventTile_keyRequestInfo' },\n React.createElement(\n 'span',\n { className: 'mx_EventTile_keyRequestInfo_text' },\n keyRequestInfoContent\n ),\n React.createElement(ToolTipButton, { helpText: keyRequestHelpText })\n ) : null;\n\n switch (this.props.tileShape) {\n case 'notif':\n {\n var EmojiText = sdk.getComponent('elements.EmojiText');\n var room = this.props.matrixClient.getRoom(this.props.mxEvent.getRoomId());\n return React.createElement(\n 'div',\n { className: classes },\n React.createElement(\n 'div',\n { className: 'mx_EventTile_roomName' },\n React.createElement(\n EmojiText,\n { element: 'a', href: permalink, onClick: this.onPermalinkClicked },\n room ? room.name : ''\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_EventTile_senderDetails' },\n avatar,\n React.createElement(\n 'a',\n { href: permalink, onClick: this.onPermalinkClicked },\n sender,\n timestamp\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_EventTile_line' },\n React.createElement(EventTileType, { ref: 'tile',\n mxEvent: this.props.mxEvent,\n highlights: this.props.highlights,\n highlightLink: this.props.highlightLink,\n showUrlPreview: this.props.showUrlPreview,\n onWidgetLoad: this.props.onWidgetLoad })\n )\n );\n }\n case 'file_grid':\n {\n return React.createElement(\n 'div',\n { className: classes },\n React.createElement(\n 'div',\n { className: 'mx_EventTile_line' },\n React.createElement(EventTileType, { ref: 'tile',\n mxEvent: this.props.mxEvent,\n highlights: this.props.highlights,\n highlightLink: this.props.highlightLink,\n showUrlPreview: this.props.showUrlPreview,\n tileShape: this.props.tileShape,\n onWidgetLoad: this.props.onWidgetLoad })\n ),\n React.createElement(\n 'a',\n {\n className: 'mx_EventTile_senderDetailsLink',\n href: permalink,\n onClick: this.onPermalinkClicked\n },\n React.createElement(\n 'div',\n { className: 'mx_EventTile_senderDetails' },\n sender,\n timestamp\n )\n )\n );\n }\n\n case 'reply':\n case 'reply_preview':\n {\n return React.createElement(\n 'div',\n { className: classes },\n avatar,\n sender,\n React.createElement(\n 'div',\n { className: 'mx_EventTile_reply' },\n React.createElement(\n 'a',\n { href: permalink, onClick: this.onPermalinkClicked },\n timestamp\n ),\n this._renderE2EPadlock(),\n this.props.tileShape === 'reply_preview' && _ReplyThread2.default.makeThread(this.props.mxEvent, this.props.onWidgetLoad, 'replyThread'),\n React.createElement(EventTileType, { ref: 'tile',\n mxEvent: this.props.mxEvent,\n highlights: this.props.highlights,\n highlightLink: this.props.highlightLink,\n onWidgetLoad: this.props.onWidgetLoad,\n showUrlPreview: false })\n )\n );\n }\n default:\n {\n return React.createElement(\n 'div',\n { className: classes },\n React.createElement(\n 'div',\n { className: 'mx_EventTile_msgOption' },\n readAvatars\n ),\n sender,\n React.createElement(\n 'div',\n { className: 'mx_EventTile_line' },\n React.createElement(\n 'a',\n { href: permalink, onClick: this.onPermalinkClicked },\n timestamp\n ),\n this._renderE2EPadlock(),\n _ReplyThread2.default.makeThread(this.props.mxEvent, this.props.onWidgetLoad, 'replyThread'),\n React.createElement(EventTileType, { ref: 'tile',\n mxEvent: this.props.mxEvent,\n highlights: this.props.highlights,\n highlightLink: this.props.highlightLink,\n showUrlPreview: this.props.showUrlPreview,\n onWidgetLoad: this.props.onWidgetLoad }),\n keyRequestInfo,\n editButton\n ),\n avatar\n );\n }\n }\n }\n}));\n\n// XXX this'll eventually be dynamic based on the fields once we have extensible event types\nvar messageTypes = ['m.room.message', 'm.sticker'];\nfunction isMessageEvent(ev) {\n return messageTypes.includes(ev.getType());\n}\n\nmodule.exports.haveTileForEvent = function (e) {\n // Only messages have a tile (black-rectangle) if redacted\n if (e.isRedacted() && !isMessageEvent(e)) return false;\n\n var handler = getHandlerTile(e);\n if (handler === undefined) return false;\n if (handler === 'messages.TextualEvent') {\n return TextForEvent.textForEvent(e) !== '';\n } else if (handler === 'messages.RoomCreate') {\n return Boolean(e.getContent()['predecessor']);\n } else {\n return true;\n }\n};\n\nfunction E2ePadlockUndecryptable(props) {\n return React.createElement(E2ePadlock, (0, _extends3.default)({ alt: (0, _languageHandler._t)(\"Undecryptable\"),\n src: 'img/e2e-blocked.svg', width: '12', height: '12',\n style: { marginLeft: \"-1px\" } }, props));\n}\n\nfunction E2ePadlockEncrypting(props) {\n return React.createElement(E2ePadlock, (0, _extends3.default)({ alt: (0, _languageHandler._t)(\"Encrypting\"), src: 'img/e2e-encrypting.svg', width: '10', height: '12' }, props));\n}\n\nfunction E2ePadlockNotSent(props) {\n return React.createElement(E2ePadlock, (0, _extends3.default)({ alt: (0, _languageHandler._t)(\"Encrypted, not sent\"), src: 'img/e2e-not_sent.svg', width: '10', height: '12' }, props));\n}\n\nfunction E2ePadlockVerified(props) {\n return React.createElement(E2ePadlock, (0, _extends3.default)({ alt: (0, _languageHandler._t)(\"Encrypted by a verified device\"),\n src: 'img/e2e-verified.svg', width: '10', height: '12'\n }, props));\n}\n\nfunction E2ePadlockUnverified(props) {\n return React.createElement(E2ePadlock, (0, _extends3.default)({ alt: (0, _languageHandler._t)(\"Encrypted by an unverified device\"),\n src: 'img/e2e-warning.svg', width: '15', height: '12',\n style: { marginLeft: \"-2px\" } }, props));\n}\n\nfunction E2ePadlockUnencrypted(props) {\n return React.createElement(E2ePadlock, (0, _extends3.default)({ alt: (0, _languageHandler._t)(\"Unencrypted message\"),\n src: 'img/e2e-unencrypted.svg', width: '12', height: '12'\n }, props));\n}\n\nfunction E2ePadlock(props) {\n if (_SettingsStore2.default.getValue(\"alwaysShowEncryptionIcons\")) {\n return React.createElement('img', (0, _extends3.default)({ className: 'mx_EventTile_e2eIcon' }, props));\n } else {\n return React.createElement('img', (0, _extends3.default)({ className: 'mx_EventTile_e2eIcon mx_EventTile_e2eIcon_hidden' }, props));\n }\n}\n\nmodule.exports.getHandlerTile = getHandlerTile;\n//# sourceMappingURL=EventTile.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Keyboard = require('../../../Keyboard');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'ForwardMessage',\n\n propTypes: {\n onCancelClick: _propTypes2.default.func.isRequired\n },\n\n componentWillMount: function componentWillMount() {\n _dispatcher2.default.dispatch({\n action: 'panel_disable',\n rightDisabled: true,\n middleDisabled: true\n });\n },\n\n componentDidMount: function componentDidMount() {\n document.addEventListener('keydown', this._onKeyDown);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.dispatch({\n action: 'panel_disable',\n sideDisabled: false,\n middleDisabled: false\n });\n document.removeEventListener('keydown', this._onKeyDown);\n },\n\n _onKeyDown: function _onKeyDown(ev) {\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.ESCAPE:\n this.props.onCancelClick();\n break;\n }\n },\n\n render: function render() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ForwardMessage' },\n _react2.default.createElement(\n 'h1',\n null,\n (0, _languageHandler._t)('Please select the destination room for this message')\n )\n );\n }\n}); /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2017 Michael Telatynski\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=ForwardMessage.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nvar sdk = require('../../../index');\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar ImageUtils = require('../../../ImageUtils');\nvar Modal = require('../../../Modal');\n\nvar linkify = require('linkifyjs');\nvar linkifyElement = require('linkifyjs/element');\nvar linkifyMatrix = require('../../../linkify-matrix');\nlinkifyMatrix(linkify);\n\nmodule.exports = React.createClass({\n displayName: 'LinkPreviewWidget',\n\n propTypes: {\n link: _propTypes2.default.string.isRequired, // the URL being previewed\n mxEvent: _propTypes2.default.object.isRequired, // the Event associated with the preview\n onCancelClick: _propTypes2.default.func, // called when the preview's cancel ('hide') button is clicked\n onWidgetLoad: _propTypes2.default.func // called when the preview's contents has loaded\n },\n\n getInitialState: function getInitialState() {\n return {\n preview: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this.unmounted = false;\n MatrixClientPeg.get().getUrlPreview(this.props.link, this.props.mxEvent.getTs()).then(function (res) {\n if (_this.unmounted) {\n return;\n }\n _this.setState({ preview: res }, _this.props.onWidgetLoad);\n }, function (error) {\n console.error(\"Failed to get preview for \" + _this.props.link + \" \" + error);\n }).done();\n },\n\n componentDidMount: function componentDidMount() {\n if (this.refs.description) {\n linkifyElement(this.refs.description, linkifyMatrix.options);\n }\n },\n\n componentDidUpdate: function componentDidUpdate() {\n if (this.refs.description) {\n linkifyElement(this.refs.description, linkifyMatrix.options);\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this.unmounted = true;\n },\n\n onImageClick: function onImageClick(ev) {\n var p = this.state.preview;\n if (ev.button != 0 || ev.metaKey) return;\n ev.preventDefault();\n var ImageView = sdk.getComponent(\"elements.ImageView\");\n\n var src = p[\"og:image\"];\n if (src && src.startsWith(\"mxc://\")) {\n src = MatrixClientPeg.get().mxcUrlToHttp(src);\n }\n\n var params = {\n src: src,\n width: p[\"og:image:width\"],\n height: p[\"og:image:height\"],\n name: p[\"og:title\"] || p[\"og:description\"] || this.props.link,\n fileSize: p[\"matrix:image:size\"],\n link: this.props.link\n };\n\n Modal.createDialog(ImageView, params, \"mx_Dialog_lightbox\");\n },\n\n render: function render() {\n var p = this.state.preview;\n if (!p || (0, _keys2.default)(p).length === 0) {\n return React.createElement('div', null);\n }\n\n // FIXME: do we want to factor out all image displaying between this and MImageBody - especially for lightboxing?\n var image = p[\"og:image\"];\n var imageMaxWidth = 100,\n imageMaxHeight = 100;\n if (image && image.startsWith(\"mxc://\")) {\n image = MatrixClientPeg.get().mxcUrlToHttp(image, imageMaxWidth, imageMaxHeight);\n }\n\n var thumbHeight = imageMaxHeight;\n if (p[\"og:image:width\"] && p[\"og:image:height\"]) {\n thumbHeight = ImageUtils.thumbHeight(p[\"og:image:width\"], p[\"og:image:height\"], imageMaxWidth, imageMaxHeight);\n }\n\n var img = void 0;\n if (image) {\n img = React.createElement(\n 'div',\n { className: 'mx_LinkPreviewWidget_image', style: { height: thumbHeight } },\n React.createElement('img', { style: { maxWidth: imageMaxWidth, maxHeight: imageMaxHeight }, src: image, onClick: this.onImageClick })\n );\n }\n\n return React.createElement(\n 'div',\n { className: 'mx_LinkPreviewWidget' },\n img,\n React.createElement(\n 'div',\n { className: 'mx_LinkPreviewWidget_caption' },\n React.createElement(\n 'div',\n { className: 'mx_LinkPreviewWidget_title' },\n React.createElement(\n 'a',\n { href: this.props.link, target: '_blank', rel: 'noopener' },\n p[\"og:title\"]\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_LinkPreviewWidget_siteName' },\n p[\"og:site_name\"] ? \" - \" + p[\"og:site_name\"] : null\n ),\n React.createElement(\n 'div',\n { className: 'mx_LinkPreviewWidget_description', ref: 'description' },\n p[\"og:description\"]\n )\n ),\n React.createElement('img', { className: 'mx_LinkPreviewWidget_cancel mx_filterFlipColor',\n src: 'img/cancel.svg', width: '18', height: '18',\n onClick: this.props.onCancelClick })\n );\n }\n});\n//# sourceMappingURL=LinkPreviewWidget.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nmodule.exports = {\n\n /**\n * Returns the actual height that an image of dimensions (fullWidth, fullHeight)\n * will occupy if resized to fit inside a thumbnail bounding box of size\n * (thumbWidth, thumbHeight).\n *\n * If the aspect ratio of the source image is taller than the aspect ratio of\n * the thumbnail bounding box, then we return the thumbHeight parameter unchanged.\n * Otherwise we return the thumbHeight parameter scaled down appropriately to\n * reflect the actual height the scaled thumbnail occupies.\n *\n * This is very useful for calculating how much height a thumbnail will actually\n * consume in the timeline, when performing scroll offset calcuations\n * (e.g. scroll locking)\n */\n thumbHeight: function thumbHeight(fullWidth, fullHeight, thumbWidth, _thumbHeight) {\n if (!fullWidth || !fullHeight) {\n // Cannot calculate thumbnail height for image: missing w/h in metadata. We can't even\n // log this because it's spammy\n return undefined;\n }\n if (fullWidth < thumbWidth && fullHeight < _thumbHeight) {\n // no scaling needs to be applied\n return fullHeight;\n }\n var widthMulti = thumbWidth / fullWidth;\n var heightMulti = _thumbHeight / fullHeight;\n if (widthMulti < heightMulti) {\n // width is the dominant dimension so scaling will be fixed on that\n return Math.floor(widthMulti * fullHeight);\n } else {\n // height is the dominant dimension so scaling will be fixed on that\n return Math.floor(heightMulti * fullHeight);\n }\n }\n};\n//# sourceMappingURL=ImageUtils.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MemberDeviceInfo = function (_React$Component) {\n (0, _inherits3.default)(MemberDeviceInfo, _React$Component);\n\n function MemberDeviceInfo() {\n (0, _classCallCheck3.default)(this, MemberDeviceInfo);\n return (0, _possibleConstructorReturn3.default)(this, (MemberDeviceInfo.__proto__ || (0, _getPrototypeOf2.default)(MemberDeviceInfo)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(MemberDeviceInfo, [{\n key: 'render',\n value: function render() {\n var indicator = null;\n var DeviceVerifyButtons = _index2.default.getComponent('elements.DeviceVerifyButtons');\n\n if (this.props.device.isBlocked()) {\n indicator = _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo_blacklisted' },\n _react2.default.createElement('img', { src: 'img/e2e-blocked.svg', width: '12', height: '12', style: { marginLeft: \"-1px\" }, alt: (0, _languageHandler._t)(\"Blacklisted\") })\n );\n } else if (this.props.device.isVerified()) {\n indicator = _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo_verified' },\n _react2.default.createElement('img', { src: 'img/e2e-verified.svg', width: '10', height: '12', alt: (0, _languageHandler._t)(\"Verified\") })\n );\n } else {\n indicator = _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo_unverified' },\n _react2.default.createElement('img', { src: 'img/e2e-warning.svg', width: '15', height: '12', style: { marginLeft: \"-2px\" }, alt: (0, _languageHandler._t)(\"Unverified\") })\n );\n }\n\n var deviceName = this.props.device.ambiguous ? (this.props.device.getDisplayName() ? this.props.device.getDisplayName() : \"\") + \" (\" + this.props.device.deviceId + \")\" : this.props.device.getDisplayName();\n\n // add the deviceId as a titletext to help with debugging\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo',\n title: (0, _languageHandler._t)(\"device id: \") + this.props.device.deviceId },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo_deviceInfo' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo_deviceId' },\n deviceName,\n indicator\n )\n ),\n _react2.default.createElement(DeviceVerifyButtons, { userId: this.props.userId, device: this.props.device })\n );\n }\n }]);\n return MemberDeviceInfo;\n}(_react2.default.Component);\n\nexports.default = MemberDeviceInfo;\n\n\nMemberDeviceInfo.displayName = 'MemberDeviceInfo';\nMemberDeviceInfo.propTypes = {\n userId: _propTypes2.default.string.isRequired,\n device: _propTypes2.default.object.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=MemberDeviceInfo.js.map","'use strict';\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _create = require('babel-runtime/core-js/object/create');\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _createRoom = require('../../../createRoom');\n\nvar _createRoom2 = _interopRequireDefault(_createRoom);\n\nvar _DMRoomMap = require('../../../utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _Unread = require('../../../Unread');\n\nvar _Unread2 = _interopRequireDefault(_Unread);\n\nvar _Receipt = require('../../../utils/Receipt');\n\nvar _withMatrixClient = require('../../../wrappers/withMatrixClient');\n\nvar _withMatrixClient2 = _interopRequireDefault(_withMatrixClient);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = (0, _withMatrixClient2.default)(_react2.default.createClass({\n displayName: 'MemberInfo',\n\n propTypes: {\n matrixClient: _propTypes2.default.object.isRequired,\n member: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n can: {\n kick: false,\n ban: false,\n mute: false,\n modifyLevel: false\n },\n muted: false,\n isTargetMod: false,\n updating: 0,\n devicesLoading: true,\n devices: null,\n isIgnoring: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._cancelDeviceList = null;\n\n // only display the devices list if our client supports E2E\n this._enableDevices = this.props.matrixClient.isCryptoEnabled();\n\n var cli = this.props.matrixClient;\n cli.on(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n cli.on(\"Room\", this.onRoom);\n cli.on(\"deleteRoom\", this.onDeleteRoom);\n cli.on(\"Room.timeline\", this.onRoomTimeline);\n cli.on(\"Room.name\", this.onRoomName);\n cli.on(\"Room.receipt\", this.onRoomReceipt);\n cli.on(\"RoomState.events\", this.onRoomStateEvents);\n cli.on(\"RoomMember.name\", this.onRoomMemberName);\n cli.on(\"RoomMember.membership\", this.onRoomMemberMembership);\n cli.on(\"accountData\", this.onAccountData);\n\n this._checkIgnoreState();\n },\n\n componentDidMount: function componentDidMount() {\n this._updateStateForNewMember(this.props.member);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n if (this.props.member.userId !== newProps.member.userId) {\n this._updateStateForNewMember(newProps.member);\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var client = this.props.matrixClient;\n if (client) {\n client.removeListener(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n client.removeListener(\"Room\", this.onRoom);\n client.removeListener(\"deleteRoom\", this.onDeleteRoom);\n client.removeListener(\"Room.timeline\", this.onRoomTimeline);\n client.removeListener(\"Room.name\", this.onRoomName);\n client.removeListener(\"Room.receipt\", this.onRoomReceipt);\n client.removeListener(\"RoomState.events\", this.onRoomStateEvents);\n client.removeListener(\"RoomMember.name\", this.onRoomMemberName);\n client.removeListener(\"RoomMember.membership\", this.onRoomMemberMembership);\n client.removeListener(\"accountData\", this.onAccountData);\n }\n if (this._cancelDeviceList) {\n this._cancelDeviceList();\n }\n },\n\n _checkIgnoreState: function _checkIgnoreState() {\n var isIgnoring = this.props.matrixClient.isUserIgnored(this.props.member.userId);\n this.setState({ isIgnoring: isIgnoring });\n },\n\n _disambiguateDevices: function _disambiguateDevices(devices) {\n var names = (0, _create2.default)(null);\n for (var i = 0; i < devices.length; i++) {\n var name = devices[i].getDisplayName();\n var indexList = names[name] || [];\n indexList.push(i);\n names[name] = indexList;\n }\n for (var _name in names) {\n if (names[_name].length > 1) {\n names[_name].forEach(function (j) {\n devices[j].ambiguous = true;\n });\n }\n }\n },\n\n onDeviceVerificationChanged: function onDeviceVerificationChanged(userId, device) {\n var _this = this;\n\n if (!this._enableDevices) {\n return;\n }\n\n if (userId === this.props.member.userId) {\n // no need to re-download the whole thing; just update our copy of\n // the list.\n\n // Promise.resolve to handle transition from static result to promise; can be removed\n // in future\n _promise2.default.resolve(this.props.matrixClient.getStoredDevicesForUser(userId)).then(function (devices) {\n _this.setState({ devices: devices });\n });\n }\n },\n\n onRoom: function onRoom(room) {\n this.forceUpdate();\n },\n\n onDeleteRoom: function onDeleteRoom(roomId) {\n this.forceUpdate();\n },\n\n onRoomTimeline: function onRoomTimeline(ev, room, toStartOfTimeline) {\n if (toStartOfTimeline) return;\n this.forceUpdate();\n },\n\n onRoomName: function onRoomName(room) {\n this.forceUpdate();\n },\n\n onRoomReceipt: function onRoomReceipt(receiptEvent, room) {\n // because if we read a notification, it will affect notification count\n // only bother updating if there's a receipt from us\n if ((0, _Receipt.findReadReceiptFromUserId)(receiptEvent, this.props.matrixClient.credentials.userId)) {\n this.forceUpdate();\n }\n },\n\n onRoomStateEvents: function onRoomStateEvents(ev, state) {\n this.forceUpdate();\n },\n\n onRoomMemberName: function onRoomMemberName(ev, member) {\n this.forceUpdate();\n },\n\n onRoomMemberMembership: function onRoomMemberMembership(ev, member) {\n if (this.props.member.userId === member.userId) this.forceUpdate();\n },\n\n onAccountData: function onAccountData(ev) {\n if (ev.getType() === 'm.direct') {\n this.forceUpdate();\n }\n },\n\n _updateStateForNewMember: function _updateStateForNewMember(member) {\n var newState = this._calculateOpsPermissions(member);\n newState.devicesLoading = true;\n newState.devices = null;\n this.setState(newState);\n\n if (this._cancelDeviceList) {\n this._cancelDeviceList();\n this._cancelDeviceList = null;\n }\n\n this._downloadDeviceList(member);\n },\n\n _downloadDeviceList: function _downloadDeviceList(member) {\n if (!this._enableDevices) {\n return;\n }\n\n var cancelled = false;\n this._cancelDeviceList = function () {\n cancelled = true;\n };\n\n var client = this.props.matrixClient;\n var self = this;\n client.downloadKeys([member.userId], true).then(function () {\n return client.getStoredDevicesForUser(member.userId);\n }).finally(function () {\n self._cancelDeviceList = null;\n }).done(function (devices) {\n if (cancelled) {\n // we got cancelled - presumably a different user now\n return;\n }\n self._disambiguateDevices(devices);\n self.setState({ devicesLoading: false, devices: devices });\n }, function (err) {\n console.log(\"Error downloading devices\", err);\n self.setState({ devicesLoading: false });\n });\n },\n\n onIgnoreToggle: function onIgnoreToggle() {\n var _this2 = this;\n\n var ignoredUsers = this.props.matrixClient.getIgnoredUsers();\n if (this.state.isIgnoring) {\n var index = ignoredUsers.indexOf(this.props.member.userId);\n if (index !== -1) ignoredUsers.splice(index, 1);\n } else {\n ignoredUsers.push(this.props.member.userId);\n }\n\n this.props.matrixClient.setIgnoredUsers(ignoredUsers).then(function () {\n return _this2.setState({ isIgnoring: !_this2.state.isIgnoring });\n });\n },\n\n onKick: function onKick() {\n var _this3 = this;\n\n var membership = this.props.member.membership;\n var ConfirmUserActionDialog = _index2.default.getComponent(\"dialogs.ConfirmUserActionDialog\");\n _Modal2.default.createTrackedDialog('Confirm User Action Dialog', 'onKick', ConfirmUserActionDialog, {\n member: this.props.member,\n action: membership === \"invite\" ? (0, _languageHandler._t)(\"Disinvite\") : (0, _languageHandler._t)(\"Kick\"),\n title: membership === \"invite\" ? (0, _languageHandler._t)(\"Disinvite this user?\") : (0, _languageHandler._t)(\"Kick this user?\"),\n askReason: membership === \"join\",\n danger: true,\n onFinished: function onFinished(proceed, reason) {\n if (!proceed) return;\n\n _this3.setState({ updating: _this3.state.updating + 1 });\n _this3.props.matrixClient.kick(_this3.props.member.roomId, _this3.props.member.userId, reason || undefined).then(function () {\n // NO-OP; rely on the m.room.member event coming down else we could\n // get out of sync if we force setState here!\n console.log(\"Kick success\");\n }, function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Kick error: \" + err);\n _Modal2.default.createTrackedDialog('Failed to kick', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to kick\"),\n description: err && err.message ? err.message : \"Operation failed\"\n });\n }).finally(function () {\n _this3.setState({ updating: _this3.state.updating - 1 });\n });\n }\n });\n },\n\n onBanOrUnban: function onBanOrUnban() {\n var _this4 = this;\n\n var ConfirmUserActionDialog = _index2.default.getComponent(\"dialogs.ConfirmUserActionDialog\");\n _Modal2.default.createTrackedDialog('Confirm User Action Dialog', 'onBanOrUnban', ConfirmUserActionDialog, {\n member: this.props.member,\n action: this.props.member.membership === 'ban' ? (0, _languageHandler._t)(\"Unban\") : (0, _languageHandler._t)(\"Ban\"),\n title: this.props.member.membership === 'ban' ? (0, _languageHandler._t)(\"Unban this user?\") : (0, _languageHandler._t)(\"Ban this user?\"),\n askReason: this.props.member.membership !== 'ban',\n danger: this.props.member.membership !== 'ban',\n onFinished: function onFinished(proceed, reason) {\n if (!proceed) return;\n\n _this4.setState({ updating: _this4.state.updating + 1 });\n var promise = void 0;\n if (_this4.props.member.membership === 'ban') {\n promise = _this4.props.matrixClient.unban(_this4.props.member.roomId, _this4.props.member.userId);\n } else {\n promise = _this4.props.matrixClient.ban(_this4.props.member.roomId, _this4.props.member.userId, reason || undefined);\n }\n promise.then(function () {\n // NO-OP; rely on the m.room.member event coming down else we could\n // get out of sync if we force setState here!\n console.log(\"Ban success\");\n }, function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Ban error: \" + err);\n _Modal2.default.createTrackedDialog('Failed to ban user', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Failed to ban user\")\n });\n }).finally(function () {\n _this4.setState({ updating: _this4.state.updating - 1 });\n });\n }\n });\n },\n\n _warnSelfDemote: function _warnSelfDemote() {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n return new _promise2.default(function (resolve) {\n _Modal2.default.createTrackedDialog('Demoting Self', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Demote yourself?\"),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"You will not be able to undo this change as you are demoting yourself, \" + \"if you are the last privileged user in the room it will be impossible \" + \"to regain privileges.\")\n ),\n button: (0, _languageHandler._t)(\"Demote\"),\n onFinished: resolve\n });\n });\n },\n\n onMuteToggle: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this5 = this;\n\n var ErrorDialog, roomId, target, room, powerLevelEvent, isMuted, powerLevels, levelToSend, level;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n roomId = this.props.member.roomId;\n target = this.props.member.userId;\n room = this.props.matrixClient.getRoom(roomId);\n\n if (room) {\n _context.next = 6;\n break;\n }\n\n return _context.abrupt('return');\n\n case 6:\n if (!(target === this.props.matrixClient.getUserId())) {\n _context.next = 18;\n break;\n }\n\n _context.prev = 7;\n _context.next = 10;\n return (0, _bluebird.resolve)(this._warnSelfDemote());\n\n case 10:\n if (_context.sent) {\n _context.next = 12;\n break;\n }\n\n return _context.abrupt('return');\n\n case 12:\n _context.next = 18;\n break;\n\n case 14:\n _context.prev = 14;\n _context.t0 = _context['catch'](7);\n\n console.error(\"Failed to warn about self demotion: \", _context.t0);\n return _context.abrupt('return');\n\n case 18:\n powerLevelEvent = room.currentState.getStateEvents(\"m.room.power_levels\", \"\");\n\n if (powerLevelEvent) {\n _context.next = 21;\n break;\n }\n\n return _context.abrupt('return');\n\n case 21:\n isMuted = this.state.muted;\n powerLevels = powerLevelEvent.getContent();\n levelToSend = (powerLevels.events ? powerLevels.events[\"m.room.message\"] : null) || powerLevels.events_default;\n level = void 0;\n\n if (isMuted) {\n // unmute\n level = levelToSend;\n } else {\n // mute\n level = levelToSend - 1;\n }\n level = parseInt(level);\n\n if (!isNaN(level)) {\n this.setState({ updating: this.state.updating + 1 });\n this.props.matrixClient.setPowerLevel(roomId, target, level, powerLevelEvent).then(function () {\n // NO-OP; rely on the m.room.member event coming down else we could\n // get out of sync if we force setState here!\n console.log(\"Mute toggle success\");\n }, function (err) {\n console.error(\"Mute error: \" + err);\n _Modal2.default.createTrackedDialog('Failed to mute user', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Failed to mute user\")\n });\n }).finally(function () {\n _this5.setState({ updating: _this5.state.updating - 1 });\n });\n }\n\n case 28:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[7, 14]]);\n }));\n\n function onMuteToggle() {\n return _ref.apply(this, arguments);\n }\n\n return onMuteToggle;\n }(),\n\n onModToggle: function onModToggle() {\n var _this6 = this;\n\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n var roomId = this.props.member.roomId;\n var target = this.props.member.userId;\n var room = this.props.matrixClient.getRoom(roomId);\n if (!room) return;\n\n var powerLevelEvent = room.currentState.getStateEvents(\"m.room.power_levels\", \"\");\n if (!powerLevelEvent) return;\n\n var me = room.getMember(this.props.matrixClient.credentials.userId);\n if (!me) return;\n\n var defaultLevel = powerLevelEvent.getContent().users_default;\n var modLevel = me.powerLevel - 1;\n if (modLevel > 50 && defaultLevel < 50) modLevel = 50; // try to stick with the vector level defaults\n // toggle the level\n var newLevel = this.state.isTargetMod ? defaultLevel : modLevel;\n this.setState({ updating: this.state.updating + 1 });\n this.props.matrixClient.setPowerLevel(roomId, target, parseInt(newLevel), powerLevelEvent).then(function () {\n // NO-OP; rely on the m.room.member event coming down else we could\n // get out of sync if we force setState here!\n console.log(\"Mod toggle success\");\n }, function (err) {\n if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN') {\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n } else {\n console.error(\"Toggle moderator error:\" + err);\n _Modal2.default.createTrackedDialog('Failed to toggle moderator status', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Failed to toggle moderator status\")\n });\n }\n }).finally(function () {\n _this6.setState({ updating: _this6.state.updating - 1 });\n });\n },\n\n _applyPowerChange: function _applyPowerChange(roomId, target, powerLevel, powerLevelEvent) {\n var _this7 = this;\n\n this.setState({ updating: this.state.updating + 1 });\n this.props.matrixClient.setPowerLevel(roomId, target, parseInt(powerLevel), powerLevelEvent).then(function () {\n // NO-OP; rely on the m.room.member event coming down else we could\n // get out of sync if we force setState here!\n console.log(\"Power change success\");\n }, function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to change power level \" + err);\n _Modal2.default.createTrackedDialog('Failed to change power level', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Failed to change power level\")\n });\n }).finally(function () {\n _this7.setState({ updating: _this7.state.updating - 1 });\n }).done();\n },\n\n onPowerChange: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(powerLevel) {\n var _this8 = this;\n\n var roomId, target, room, powerLevelEvent, myUserId, QuestionDialog, myPower;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n roomId = this.props.member.roomId;\n target = this.props.member.userId;\n room = this.props.matrixClient.getRoom(roomId);\n\n if (room) {\n _context2.next = 5;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 5:\n powerLevelEvent = room.currentState.getStateEvents(\"m.room.power_levels\", \"\");\n\n if (powerLevelEvent) {\n _context2.next = 8;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 8:\n if (powerLevelEvent.getContent().users) {\n _context2.next = 11;\n break;\n }\n\n this._applyPowerChange(roomId, target, powerLevel, powerLevelEvent);\n return _context2.abrupt('return');\n\n case 11:\n myUserId = this.props.matrixClient.getUserId();\n QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n\n // If we are changing our own PL it can only ever be decreasing, which we cannot reverse.\n\n if (!(myUserId === target)) {\n _context2.next = 26;\n break;\n }\n\n _context2.prev = 14;\n _context2.next = 17;\n return (0, _bluebird.resolve)(this._warnSelfDemote());\n\n case 17:\n if (_context2.sent) {\n _context2.next = 19;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 19:\n this._applyPowerChange(roomId, target, powerLevel, powerLevelEvent);\n _context2.next = 25;\n break;\n\n case 22:\n _context2.prev = 22;\n _context2.t0 = _context2['catch'](14);\n\n console.error(\"Failed to warn about self demotion: \", _context2.t0);\n\n case 25:\n return _context2.abrupt('return');\n\n case 26:\n myPower = powerLevelEvent.getContent().users[myUserId];\n\n if (!(parseInt(myPower) === parseInt(powerLevel))) {\n _context2.next = 30;\n break;\n }\n\n _Modal2.default.createTrackedDialog('Promote to PL100 Warning', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Warning!\"),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"You will not be able to undo this change as you are promoting the user \" + \"to have the same power level as yourself.\"),\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)(\"Are you sure?\")\n ),\n button: (0, _languageHandler._t)(\"Continue\"),\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n _this8._applyPowerChange(roomId, target, powerLevel, powerLevelEvent);\n }\n }\n });\n return _context2.abrupt('return');\n\n case 30:\n this._applyPowerChange(roomId, target, powerLevel, powerLevelEvent);\n\n case 31:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[14, 22]]);\n }));\n\n function onPowerChange(_x) {\n return _ref2.apply(this, arguments);\n }\n\n return onPowerChange;\n }(),\n\n onNewDMClick: function onNewDMClick() {\n var _this9 = this;\n\n this.setState({ updating: this.state.updating + 1 });\n (0, _createRoom2.default)({ dmUserId: this.props.member.userId }).finally(function () {\n _this9.setState({ updating: _this9.state.updating - 1 });\n }).done();\n },\n\n onLeaveClick: function onLeaveClick() {\n _dispatcher2.default.dispatch({\n action: 'leave_room',\n room_id: this.props.member.roomId\n });\n },\n\n _calculateOpsPermissions: function _calculateOpsPermissions(member) {\n var defaultPerms = {\n can: {},\n muted: false\n };\n var room = this.props.matrixClient.getRoom(member.roomId);\n if (!room) return defaultPerms;\n\n var powerLevels = room.currentState.getStateEvents(\"m.room.power_levels\", \"\");\n if (!powerLevels) return defaultPerms;\n\n var me = room.getMember(this.props.matrixClient.credentials.userId);\n if (!me) return defaultPerms;\n\n var them = member;\n return {\n can: this._calculateCanPermissions(me, them, powerLevels.getContent()),\n muted: this._isMuted(them, powerLevels.getContent()),\n isTargetMod: them.powerLevel > powerLevels.getContent().users_default\n };\n },\n\n _calculateCanPermissions: function _calculateCanPermissions(me, them, powerLevels) {\n var isMe = me.userId === them.userId;\n var can = {\n kick: false,\n ban: false,\n mute: false,\n modifyLevel: false,\n modifyLevelMax: 0\n };\n var canAffectUser = them.powerLevel < me.powerLevel || isMe;\n if (!canAffectUser) {\n //console.log(\"Cannot affect user: %s >= %s\", them.powerLevel, me.powerLevel);\n return can;\n }\n var editPowerLevel = (powerLevels.events ? powerLevels.events[\"m.room.power_levels\"] : null) || powerLevels.state_default;\n\n can.kick = me.powerLevel >= powerLevels.kick;\n can.ban = me.powerLevel >= powerLevels.ban;\n can.mute = me.powerLevel >= editPowerLevel;\n can.modifyLevel = me.powerLevel >= editPowerLevel && (isMe || me.powerLevel > them.powerLevel);\n can.modifyLevelMax = me.powerLevel;\n\n return can;\n },\n\n _isMuted: function _isMuted(member, powerLevelContent) {\n if (!powerLevelContent || !member) return false;\n\n var levelToSend = (powerLevelContent.events ? powerLevelContent.events[\"m.room.message\"] : null) || powerLevelContent.events_default;\n return member.powerLevel < levelToSend;\n },\n\n onCancel: function onCancel(e) {\n _dispatcher2.default.dispatch({\n action: \"view_user\",\n member: null\n });\n },\n\n onMemberAvatarClick: function onMemberAvatarClick() {\n var member = this.props.member;\n var avatarUrl = member.getMxcAvatarUrl();\n if (!avatarUrl) return;\n\n var httpUrl = this.props.matrixClient.mxcUrlToHttp(avatarUrl);\n var ImageView = _index2.default.getComponent(\"elements.ImageView\");\n var params = {\n src: httpUrl,\n name: member.name\n };\n\n _Modal2.default.createDialog(ImageView, params, \"mx_Dialog_lightbox\");\n },\n\n onRoomTileClick: function onRoomTileClick(roomId) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: roomId\n });\n },\n\n\n _renderDevices: function _renderDevices() {\n if (!this._enableDevices) return null;\n\n var devices = this.state.devices;\n var MemberDeviceInfo = _index2.default.getComponent('rooms.MemberDeviceInfo');\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n\n var devComponents = void 0;\n if (this.state.devicesLoading) {\n // still loading\n devComponents = _react2.default.createElement(Spinner, null);\n } else if (devices === null) {\n devComponents = (0, _languageHandler._t)(\"Unable to load device list\");\n } else if (devices.length === 0) {\n devComponents = (0, _languageHandler._t)(\"No devices with registered encryption keys\");\n } else {\n devComponents = [];\n for (var i = 0; i < devices.length; i++) {\n devComponents.push(_react2.default.createElement(MemberDeviceInfo, { key: i,\n userId: this.props.member.userId,\n device: devices[i] }));\n }\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Devices\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_devices' },\n devComponents\n )\n );\n },\n\n onShareUserClick: function onShareUserClick() {\n var ShareDialog = _index2.default.getComponent(\"dialogs.ShareDialog\");\n _Modal2.default.createTrackedDialog('share room member dialog', '', ShareDialog, {\n target: this.props.member\n });\n },\n\n _renderUserOptions: function _renderUserOptions() {\n var _this10 = this;\n\n var cli = this.props.matrixClient;\n var member = this.props.member;\n\n var ignoreButton = null;\n var insertPillButton = null;\n var inviteUserButton = null;\n var readReceiptButton = null;\n\n // Only allow the user to ignore the user if its not ourselves\n // same goes for jumping to read receipt\n if (member.userId !== cli.getUserId()) {\n ignoreButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this.onIgnoreToggle, className: 'mx_MemberInfo_field' },\n this.state.isIgnoring ? (0, _languageHandler._t)(\"Unignore\") : (0, _languageHandler._t)(\"Ignore\")\n );\n\n if (member.roomId) {\n var room = cli.getRoom(member.roomId);\n var eventId = room.getEventReadUpTo(member.userId);\n\n var onReadReceiptButton = function onReadReceiptButton() {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n highlighted: true,\n event_id: eventId,\n room_id: member.roomId\n });\n };\n\n var onInsertPillButton = function onInsertPillButton() {\n _dispatcher2.default.dispatch({\n action: 'insert_mention',\n user_id: member.userId\n });\n };\n\n readReceiptButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: onReadReceiptButton, className: 'mx_MemberInfo_field' },\n (0, _languageHandler._t)('Jump to read receipt')\n );\n\n insertPillButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: onInsertPillButton, className: \"mx_MemberInfo_field\" },\n (0, _languageHandler._t)('Mention')\n );\n }\n\n if (!member || !member.membership || member.membership === 'leave') {\n var roomId = member && member.roomId ? member.roomId : _RoomViewStore2.default.getRoomId();\n var onInviteUserButton = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var ErrorDialog;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n _context3.next = 3;\n return (0, _bluebird.resolve)(cli.invite(roomId, member.userId));\n\n case 3:\n _context3.next = 9;\n break;\n\n case 5:\n _context3.prev = 5;\n _context3.t0 = _context3['catch'](0);\n ErrorDialog = _index2.default.getComponent('dialogs.ErrorDialog');\n\n _Modal2.default.createTrackedDialog('Failed to invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to invite'),\n description: _context3.t0 && _context3.t0.message ? _context3.t0.message : \"Operation failed\"\n });\n\n case 9:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, _this10, [[0, 5]]);\n }));\n\n return function onInviteUserButton() {\n return _ref3.apply(this, arguments);\n };\n }();\n\n inviteUserButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: onInviteUserButton, className: 'mx_MemberInfo_field' },\n (0, _languageHandler._t)('Invite')\n );\n }\n }\n\n var shareUserButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this.onShareUserClick, className: 'mx_MemberInfo_field' },\n (0, _languageHandler._t)('Share Link to User')\n );\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"User Options\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_buttons' },\n readReceiptButton,\n shareUserButton,\n insertPillButton,\n ignoreButton,\n inviteUserButton\n )\n );\n },\n\n render: function render() {\n var startChat = void 0;\n var kickButton = void 0;\n var banButton = void 0;\n var muteButton = void 0;\n var giveModButton = void 0;\n var spinner = void 0;\n\n if (this.props.member.userId !== this.props.matrixClient.credentials.userId) {\n var dmRoomMap = new _DMRoomMap2.default(this.props.matrixClient);\n // dmRooms will not include dmRooms that we have been invited into but did not join.\n // Because DMRoomMap runs off account_data[m.direct] which is only set on join of dm room.\n // XXX: we potentially want DMs we have been invited to, to also show up here :L\n // especially as logic below concerns specially if we haven't joined but have been invited\n var dmRooms = dmRoomMap.getDMRoomsForUserId(this.props.member.userId);\n\n var RoomTile = _index2.default.getComponent(\"rooms.RoomTile\");\n\n var tiles = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(dmRooms), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var roomId = _step.value;\n\n var _room = this.props.matrixClient.getRoom(roomId);\n if (_room) {\n var myMembership = _room.getMyMembership();\n // not a DM room if we have are not joined\n if (myMembership !== 'join') continue;\n\n var them = this.props.member;\n // not a DM room if they are not joined\n if (!them.membership || them.membership !== 'join') continue;\n\n var highlight = _room.getUnreadNotificationCount('highlight') > 0;\n\n tiles.push(_react2.default.createElement(RoomTile, { key: _room.roomId, room: _room,\n transparent: true,\n collapsed: false,\n selected: false,\n unread: _Unread2.default.doesRoomHaveUnreadMessages(_room),\n highlight: highlight,\n isInvite: false,\n onClick: this.onRoomTileClick\n }));\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var labelClasses = (0, _classnames2.default)({\n mx_MemberInfo_createRoom_label: true,\n mx_RoomTile_name: true\n });\n var startNewChat = _react2.default.createElement(\n _AccessibleButton2.default,\n {\n className: 'mx_MemberInfo_createRoom',\n onClick: this.onNewDMClick\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_avatar' },\n _react2.default.createElement('img', { src: 'img/create-big.svg', width: '26', height: '26' })\n ),\n _react2.default.createElement(\n 'div',\n { className: labelClasses },\n _react2.default.createElement(\n 'i',\n null,\n (0, _languageHandler._t)(\"Start a chat\")\n )\n )\n );\n\n startChat = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Direct chats\")\n ),\n tiles,\n startNewChat\n );\n }\n\n if (this.state.updating) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n spinner = _react2.default.createElement(Loader, { imgClassName: 'mx_ContextualMenu_spinner' });\n }\n\n if (this.state.can.kick) {\n var membership = this.props.member.membership;\n var kickLabel = membership === \"invite\" ? (0, _languageHandler._t)(\"Disinvite\") : (0, _languageHandler._t)(\"Kick\");\n kickButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_field',\n onClick: this.onKick },\n kickLabel\n );\n }\n if (this.state.can.ban) {\n var label = (0, _languageHandler._t)(\"Ban\");\n if (this.props.member.membership === 'ban') {\n label = (0, _languageHandler._t)(\"Unban\");\n }\n banButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_field',\n onClick: this.onBanOrUnban },\n label\n );\n }\n if (this.state.can.mute) {\n var muteLabel = this.state.muted ? (0, _languageHandler._t)(\"Unmute\") : (0, _languageHandler._t)(\"Mute\");\n muteButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_field',\n onClick: this.onMuteToggle },\n muteLabel\n );\n }\n if (this.state.can.toggleMod) {\n var giveOpLabel = this.state.isTargetMod ? (0, _languageHandler._t)(\"Revoke Moderator\") : (0, _languageHandler._t)(\"Make Moderator\");\n giveModButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_field', onClick: this.onModToggle },\n giveOpLabel\n );\n }\n\n var adminTools = void 0;\n if (kickButton || banButton || muteButton || giveModButton) {\n adminTools = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Admin Tools\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_buttons' },\n muteButton,\n kickButton,\n banButton,\n giveModButton\n )\n );\n }\n\n var memberName = this.props.member.name;\n\n var presenceState = void 0;\n var presenceLastActiveAgo = void 0;\n var presenceCurrentlyActive = void 0;\n\n if (this.props.member.user) {\n presenceState = this.props.member.user.presence;\n presenceLastActiveAgo = this.props.member.user.lastActiveAgo;\n presenceCurrentlyActive = this.props.member.user.currentlyActive;\n }\n\n var room = this.props.matrixClient.getRoom(this.props.member.roomId);\n var powerLevelEvent = room ? room.currentState.getStateEvents(\"m.room.power_levels\", \"\") : null;\n var powerLevelUsersDefault = powerLevelEvent ? powerLevelEvent.getContent().users_default : 0;\n\n var enablePresenceByHsUrl = _SdkConfig2.default.get()[\"enable_presence_by_hs_url\"];\n var hsUrl = this.props.matrixClient.baseUrl;\n var showPresence = true;\n if (enablePresenceByHsUrl && enablePresenceByHsUrl[hsUrl] !== undefined) {\n showPresence = enablePresenceByHsUrl[hsUrl];\n }\n\n var presenceLabel = null;\n if (showPresence) {\n var PresenceLabel = _index2.default.getComponent('rooms.PresenceLabel');\n presenceLabel = _react2.default.createElement(PresenceLabel, { activeAgo: presenceLastActiveAgo,\n currentlyActive: presenceCurrentlyActive,\n presenceState: presenceState });\n }\n\n var roomMemberDetails = null;\n if (this.props.member.roomId) {\n // is in room\n var PowerSelector = _index2.default.getComponent('elements.PowerSelector');\n roomMemberDetails = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profileField' },\n (0, _languageHandler._t)(\"Level:\"),\n ' ',\n _react2.default.createElement(\n 'b',\n null,\n _react2.default.createElement(PowerSelector, { controlled: true,\n value: parseInt(this.props.member.powerLevel),\n maxValue: this.state.can.modifyLevelMax,\n disabled: !this.state.can.modifyLevel,\n usersDefault: powerLevelUsersDefault,\n onChange: this.onPowerChange })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profileField' },\n presenceLabel\n )\n );\n }\n\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n var MemberAvatar = _index2.default.getComponent('avatars.MemberAvatar');\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo' },\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_cancel', onClick: this.onCancel },\n _react2.default.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18', className: 'mx_filterFlipColor', alt: (0, _languageHandler._t)('Close') })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_avatar' },\n _react2.default.createElement(MemberAvatar, { onClick: this.onMemberAvatarClick, member: this.props.member, width: 48, height: 48 })\n ),\n _react2.default.createElement(\n EmojiText,\n { element: 'h2' },\n memberName\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profile' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profileField' },\n this.props.member.userId\n ),\n roomMemberDetails\n ),\n this._renderUserOptions(),\n adminTools,\n startChat,\n this._renderDevices(),\n spinner\n )\n );\n }\n})); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017, 2018 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/*\n * State vars:\n * 'can': {\n * kick: boolean,\n * ban: boolean,\n * mute: boolean,\n * modifyLevel: boolean\n * },\n * 'muted': boolean,\n * 'isTargetMod': boolean\n */\n//# sourceMappingURL=MemberInfo.js.map","'use strict';\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\"); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2017, 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar sdk = require('../../../index');\nvar rate_limited_func = require('../../../ratelimitedfunc');\nvar CallHandler = require(\"../../../CallHandler\");\n\nvar INITIAL_LOAD_NUM_MEMBERS = 30;\nvar INITIAL_LOAD_NUM_INVITED = 5;\nvar SHOW_MORE_INCREMENT = 100;\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MemberList',\n\n getInitialState: function getInitialState() {\n var cli = MatrixClientPeg.get();\n if (cli.hasLazyLoadMembersEnabled()) {\n // show an empty list\n return this._getMembersState([]);\n } else {\n return this._getMembersState(this.roomMembers());\n }\n },\n\n componentWillMount: function componentWillMount() {\n this._mounted = true;\n var cli = MatrixClientPeg.get();\n if (cli.hasLazyLoadMembersEnabled()) {\n this._showMembersAccordingToMembershipWithLL();\n cli.on(\"Room.myMembership\", this.onMyMembership);\n } else {\n this._listenForMembersChanges();\n }\n cli.on(\"Room\", this.onRoom); // invites & joining after peek\n var enablePresenceByHsUrl = _SdkConfig2.default.get()[\"enable_presence_by_hs_url\"];\n var hsUrl = MatrixClientPeg.get().baseUrl;\n this._showPresence = true;\n if (enablePresenceByHsUrl && enablePresenceByHsUrl[hsUrl] !== undefined) {\n this._showPresence = enablePresenceByHsUrl[hsUrl];\n }\n },\n\n _listenForMembersChanges: function _listenForMembersChanges() {\n var cli = MatrixClientPeg.get();\n cli.on(\"RoomState.members\", this.onRoomStateMember);\n cli.on(\"RoomMember.name\", this.onRoomMemberName);\n cli.on(\"RoomState.events\", this.onRoomStateEvent);\n // We listen for changes to the lastPresenceTs which is essentially\n // listening for all presence events (we display most of not all of\n // the information contained in presence events).\n cli.on(\"User.lastPresenceTs\", this.onUserLastPresenceTs);\n // cli.on(\"Room.timeline\", this.onRoomTimeline);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._mounted = false;\n var cli = MatrixClientPeg.get();\n if (cli) {\n cli.removeListener(\"RoomState.members\", this.onRoomStateMember);\n cli.removeListener(\"RoomMember.name\", this.onRoomMemberName);\n cli.removeListener(\"Room.myMembership\", this.onMyMembership);\n cli.removeListener(\"RoomState.events\", this.onRoomStateEvent);\n cli.removeListener(\"Room\", this.onRoom);\n cli.removeListener(\"User.lastPresenceTs\", this.onUserLastPresenceTs);\n }\n\n // cancel any pending calls to the rate_limited_funcs\n this._updateList.cancelPendingCall();\n },\n\n /**\n * If lazy loading is enabled, either:\n * show a spinner and load the members if the user is joined,\n * or show the members available so far if the user is invited\n */\n _showMembersAccordingToMembershipWithLL: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var cli, _cli, room, membership;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n cli = MatrixClientPeg.get();\n\n if (!cli.hasLazyLoadMembersEnabled()) {\n _context.next = 18;\n break;\n }\n\n _cli = MatrixClientPeg.get();\n room = _cli.getRoom(this.props.roomId);\n membership = room && room.getMyMembership();\n\n if (!(membership === \"join\")) {\n _context.next = 17;\n break;\n }\n\n this.setState({ loading: true });\n _context.prev = 7;\n _context.next = 10;\n return (0, _bluebird.resolve)(room.loadMembersIfNeeded());\n\n case 10:\n _context.next = 14;\n break;\n\n case 12:\n _context.prev = 12;\n _context.t0 = _context['catch'](7);\n\n case 14:\n if (this._mounted) {\n this.setState(this._getMembersState(this.roomMembers()));\n this._listenForMembersChanges();\n }\n _context.next = 18;\n break;\n\n case 17:\n if (membership === \"invite\") {\n // show the members we've got when invited\n this.setState(this._getMembersState(this.roomMembers()));\n }\n\n case 18:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[7, 12]]);\n }));\n\n function _showMembersAccordingToMembershipWithLL() {\n return _ref.apply(this, arguments);\n }\n\n return _showMembersAccordingToMembershipWithLL;\n }(),\n\n _getMembersState: function _getMembersState(members) {\n // set the state after determining _showPresence to make sure it's\n // taken into account while rerendering\n return {\n loading: false,\n members: members,\n filteredJoinedMembers: this._filterMembers(members, 'join'),\n filteredInvitedMembers: this._filterMembers(members, 'invite'),\n\n // ideally we'd size this to the page height, but\n // in practice I find that a little constraining\n truncateAtJoined: INITIAL_LOAD_NUM_MEMBERS,\n truncateAtInvited: INITIAL_LOAD_NUM_INVITED,\n searchQuery: \"\"\n };\n },\n\n onUserLastPresenceTs: function onUserLastPresenceTs(event, user) {\n // Attach a SINGLE listener for global presence changes then locate the\n // member tile and re-render it. This is more efficient than every tile\n // evar attaching their own listener.\n // console.log(\"explicit presence from \" + user.userId);\n var tile = this.refs[user.userId];\n if (tile) {\n this._updateList(); // reorder the membership list\n }\n },\n\n\n onRoom: function onRoom(room) {\n if (room.roomId !== this.props.roomId) {\n return;\n }\n // We listen for room events because when we accept an invite\n // we need to wait till the room is fully populated with state\n // before refreshing the member list else we get a stale list.\n this._showMembersAccordingToMembershipWithLL();\n },\n\n onMyMembership: function onMyMembership(room, membership, oldMembership) {\n if (room.roomId === this.props.roomId && membership === \"join\") {\n this._showMembersAccordingToMembershipWithLL();\n }\n },\n\n onRoomStateMember: function onRoomStateMember(ev, state, member) {\n if (member.roomId !== this.props.roomId) {\n return;\n }\n this._updateList();\n },\n\n onRoomMemberName: function onRoomMemberName(ev, member) {\n if (member.roomId !== this.props.roomId) {\n return;\n }\n this._updateList();\n },\n\n onRoomStateEvent: function onRoomStateEvent(event, state) {\n if (event.getRoomId() === this.props.roomId && event.getType() === \"m.room.third_party_invite\") {\n this._updateList();\n }\n },\n\n _updateList: new rate_limited_func(function () {\n // console.log(\"Updating memberlist\");\n var newState = {\n loading: false,\n members: this.roomMembers()\n };\n newState.filteredJoinedMembers = this._filterMembers(newState.members, 'join', this.state.searchQuery);\n newState.filteredInvitedMembers = this._filterMembers(newState.members, 'invite', this.state.searchQuery);\n this.setState(newState);\n }, 500),\n\n getMembersWithUser: function getMembersWithUser() {\n if (!this.props.roomId) return [];\n var cli = MatrixClientPeg.get();\n var room = cli.getRoom(this.props.roomId);\n if (!room) return [];\n\n var allMembers = (0, _values2.default)(room.currentState.members);\n\n allMembers.forEach(function (member) {\n // work around a race where you might have a room member object\n // before the user object exists. This may or may not cause\n // https://github.com/vector-im/vector-web/issues/186\n if (member.user === null) {\n member.user = cli.getUser(member.userId);\n }\n\n // XXX: this user may have no lastPresenceTs value!\n // the right solution here is to fix the race rather than leave it as 0\n });\n\n return allMembers;\n },\n\n roomMembers: function roomMembers() {\n var ConferenceHandler = CallHandler.getConferenceHandler();\n\n var allMembers = this.getMembersWithUser();\n var filteredAndSortedMembers = allMembers.filter(function (m) {\n return (m.membership === 'join' || m.membership === 'invite') && (!ConferenceHandler || ConferenceHandler && !ConferenceHandler.isConferenceUser(m.userId));\n });\n filteredAndSortedMembers.sort(this.memberSort);\n return filteredAndSortedMembers;\n },\n\n _createOverflowTileJoined: function _createOverflowTileJoined(overflowCount, totalCount) {\n return this._createOverflowTile(overflowCount, totalCount, this._showMoreJoinedMemberList);\n },\n\n _createOverflowTileInvited: function _createOverflowTileInvited(overflowCount, totalCount) {\n return this._createOverflowTile(overflowCount, totalCount, this._showMoreInvitedMemberList);\n },\n\n _createOverflowTile: function _createOverflowTile(overflowCount, totalCount, onClick) {\n // For now we'll pretend this is any entity. It should probably be a separate tile.\n var EntityTile = sdk.getComponent(\"rooms.EntityTile\");\n var BaseAvatar = sdk.getComponent(\"avatars.BaseAvatar\");\n var text = (0, _languageHandler._t)(\"and %(count)s others...\", { count: overflowCount });\n return _react2.default.createElement(EntityTile, { className: 'mx_EntityTile_ellipsis', avatarJsx: _react2.default.createElement(BaseAvatar, { url: 'img/ellipsis.svg', name: '...', width: 36, height: 36 }), name: text, presenceState: 'online', suppressOnHover: true,\n onClick: onClick });\n },\n\n _showMoreJoinedMemberList: function _showMoreJoinedMemberList() {\n this.setState({\n truncateAtJoined: this.state.truncateAtJoined + SHOW_MORE_INCREMENT\n });\n },\n\n _showMoreInvitedMemberList: function _showMoreInvitedMemberList() {\n this.setState({\n truncateAtInvited: this.state.truncateAtInvited + SHOW_MORE_INCREMENT\n });\n },\n\n memberString: function memberString(member) {\n if (!member) {\n return \"(null)\";\n } else {\n return \"(\" + member.name + \", \" + member.powerLevel + \", \" + member.user.lastActiveAgo + \", \" + member.user.currentlyActive + \")\";\n }\n },\n\n // returns negative if a comes before b,\n // returns 0 if a and b are equivalent in ordering\n // returns positive if a comes after b.\n memberSort: function memberSort(memberA, memberB) {\n // order by last active, with \"active now\" first.\n // ...and then by power\n // ...and then alphabetically.\n // We could tiebreak instead by \"last recently spoken in this room\" if we wanted to.\n\n var userA = memberA.user;\n var userB = memberB.user;\n\n // if (!userA || !userB) {\n // console.log(\"comparing \" + memberA.name + \" user=\" + memberA.user + \" with \" + memberB.name + \" user=\" + memberB.user);\n // }\n\n if (!userA && !userB) return 0;\n if (userA && !userB) return -1;\n if (!userA && userB) return 1;\n\n // console.log(\"comparing \" + this.memberString(memberA) + \" and \" + this.memberString(memberB));\n\n if (userA.currentlyActive && userB.currentlyActive || !this._showPresence) {\n // console.log(memberA.name + \" and \" + memberB.name + \" are both active\");\n if (memberA.powerLevel === memberB.powerLevel) {\n // console.log(memberA + \" and \" + memberB + \" have same power level\");\n if (memberA.name && memberB.name) {\n // console.log(\"comparing names: \" + memberA.name + \" and \" + memberB.name);\n var nameA = memberA.name[0] === '@' ? memberA.name.substr(1) : memberA.name;\n var nameB = memberB.name[0] === '@' ? memberB.name.substr(1) : memberB.name;\n return nameA.localeCompare(nameB);\n } else {\n return 0;\n }\n } else {\n // console.log(\"comparing power: \" + memberA.powerLevel + \" and \" + memberB.powerLevel);\n return memberB.powerLevel - memberA.powerLevel;\n }\n }\n\n if (userA.currentlyActive && !userB.currentlyActive) return -1;\n if (!userA.currentlyActive && userB.currentlyActive) return 1;\n\n // For now, let's just order things by timestamp. It's really annoying\n // that a user disappears from sight just because they temporarily go offline\n return userB.getLastActiveTs() - userA.getLastActiveTs();\n },\n\n onSearchQueryChanged: function onSearchQueryChanged(ev) {\n var q = ev.target.value;\n this.setState({\n searchQuery: q,\n filteredJoinedMembers: this._filterMembers(this.state.members, 'join', q),\n filteredInvitedMembers: this._filterMembers(this.state.members, 'invite', q)\n });\n },\n\n _filterMembers: function _filterMembers(members, membership, query) {\n return members.filter(function (m) {\n if (query) {\n query = query.toLowerCase();\n var matchesName = m.name.toLowerCase().indexOf(query) !== -1;\n var matchesId = m.userId.toLowerCase().indexOf(query) !== -1;\n\n if (!matchesName && !matchesId) {\n return false;\n }\n }\n\n return m.membership === membership;\n });\n },\n\n _getPending3PidInvites: function _getPending3PidInvites() {\n // include 3pid invites (m.room.third_party_invite) state events.\n // The HS may have already converted these into m.room.member invites so\n // we shouldn't add them if the 3pid invite state key (token) is in the\n // member invite (content.third_party_invite.signed.token)\n var room = MatrixClientPeg.get().getRoom(this.props.roomId);\n\n if (room) {\n return room.currentState.getStateEvents(\"m.room.third_party_invite\").filter(function (e) {\n // any events without these keys are not valid 3pid invites, so we ignore them\n var requiredKeys = ['key_validity_url', 'public_key', 'display_name'];\n for (var i = 0; i < requiredKeys.length; ++i) {\n if (e.getContent()[requiredKeys[i]] === undefined) return false;\n }\n\n // discard all invites which have a m.room.member event since we've\n // already added them.\n var memberEvent = room.currentState.getInviteForThreePidToken(e.getStateKey());\n if (memberEvent) return false;\n return true;\n });\n }\n },\n\n _makeMemberTiles: function _makeMemberTiles(members, membership) {\n var _this = this;\n\n var MemberTile = sdk.getComponent(\"rooms.MemberTile\");\n\n var memberList = members.map(function (m) {\n return _react2.default.createElement(MemberTile, { key: m.userId, member: m, ref: m.userId, showPresence: _this._showPresence });\n });\n\n // XXX: surely this is not the right home for this logic.\n // Double XXX: Now it's really, really not the right home for this logic:\n // we shouldn't even be passing in the 'membership' param to this function.\n // Ew, ew, and ew.\n // Triple XXX: This violates the size constraint, the output is expected/desired\n // to be the same length as the members input array.\n if (membership === \"invite\") {\n var EntityTile = sdk.getComponent(\"rooms.EntityTile\");\n memberList.push.apply(memberList, (0, _toConsumableArray3.default)(this._getPending3PidInvites().map(function (e) {\n return _react2.default.createElement(EntityTile, { key: e.getStateKey(),\n name: e.getContent().display_name,\n suppressOnHover: true\n });\n })));\n }\n\n return memberList;\n },\n\n _getChildrenJoined: function _getChildrenJoined(start, end) {\n return this._makeMemberTiles(this.state.filteredJoinedMembers.slice(start, end));\n },\n\n _getChildCountJoined: function _getChildCountJoined() {\n return this.state.filteredJoinedMembers.length;\n },\n\n _getChildrenInvited: function _getChildrenInvited(start, end) {\n return this._makeMemberTiles(this.state.filteredInvitedMembers.slice(start, end), 'invite');\n },\n\n _getChildCountInvited: function _getChildCountInvited() {\n return this.state.filteredInvitedMembers.length + (this._getPending3PidInvites() || []).length;\n },\n\n render: function render() {\n if (this.state.loading) {\n var Spinner = sdk.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n var TruncatedList = sdk.getComponent(\"elements.TruncatedList\");\n var GeminiScrollbarWrapper = sdk.getComponent(\"elements.GeminiScrollbarWrapper\");\n\n var invitedSection = null;\n if (this._getChildCountInvited() > 0) {\n invitedSection = _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList_invited' },\n _react2.default.createElement(\n 'h2',\n null,\n (0, _languageHandler._t)(\"Invited\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList_wrapper' },\n _react2.default.createElement(TruncatedList, { className: 'mx_MemberList_wrapper', truncateAt: this.state.truncateAtInvited,\n createOverflowElement: this._createOverflowTileInvited,\n getChildren: this._getChildrenInvited,\n getChildCount: this._getChildCountInvited\n })\n )\n );\n }\n\n var inputBox = _react2.default.createElement(\n 'form',\n { autoComplete: 'off' },\n _react2.default.createElement('input', { className: 'mx_MemberList_query', id: 'mx_MemberList_query', type: 'text',\n onChange: this.onSearchQueryChanged, value: this.state.searchQuery,\n placeholder: (0, _languageHandler._t)('Filter room members') })\n );\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList' },\n inputBox,\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true, className: 'mx_MemberList_joined' },\n _react2.default.createElement(TruncatedList, { className: 'mx_MemberList_wrapper', truncateAt: this.state.truncateAtJoined,\n createOverflowElement: this._createOverflowTileJoined,\n getChildren: this._getChildrenJoined,\n getChildCount: this._getChildCountJoined\n }),\n invitedSection\n )\n );\n }\n});\n//# sourceMappingURL=MemberList.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar sdk = require('../../../index');\nvar dis = require('../../../dispatcher');\nvar Modal = require(\"../../../Modal\");\n\n\nmodule.exports = React.createClass({\n displayName: 'MemberTile',\n\n propTypes: {\n member: _propTypes2.default.any.isRequired, // RoomMember\n showPresence: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n showPresence: true\n };\n },\n\n getInitialState: function getInitialState() {\n return {};\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n if (this.member_last_modified_time === undefined || this.member_last_modified_time < nextProps.member.getLastModifiedTime()) {\n return true;\n }\n if (nextProps.member.user && (this.user_last_modified_time === undefined || this.user_last_modified_time < nextProps.member.user.getLastModifiedTime())) {\n return true;\n }\n return false;\n },\n\n onClick: function onClick(e) {\n dis.dispatch({\n action: 'view_user',\n member: this.props.member\n });\n },\n\n _getDisplayName: function _getDisplayName() {\n return this.props.member.name;\n },\n\n getPowerLabel: function getPowerLabel() {\n return (0, _languageHandler._t)(\"%(userName)s (power %(powerLevelNumber)s)\", { userName: this.props.member.userId, powerLevelNumber: this.props.member.powerLevel });\n },\n\n render: function render() {\n var MemberAvatar = sdk.getComponent('avatars.MemberAvatar');\n var BaseAvatar = sdk.getComponent('avatars.BaseAvatar');\n var EntityTile = sdk.getComponent('rooms.EntityTile');\n\n var member = this.props.member;\n var name = this._getDisplayName();\n var active = -1;\n var presenceState = member.user ? member.user.presence : null;\n\n var av = React.createElement(MemberAvatar, { member: member, width: 36, height: 36 });\n\n if (member.user) {\n this.user_last_modified_time = member.user.getLastModifiedTime();\n }\n this.member_last_modified_time = member.getLastModifiedTime();\n\n // We deliberately leave power levels that are not 100 or 50 undefined\n var powerStatus = {\n 100: EntityTile.POWER_STATUS_ADMIN,\n 50: EntityTile.POWER_STATUS_MODERATOR\n }[this.props.member.powerLevel];\n\n return React.createElement(EntityTile, (0, _extends3.default)({}, this.props, { presenceState: presenceState,\n presenceLastActiveAgo: member.user ? member.user.lastActiveAgo : 0,\n presenceLastTs: member.user ? member.user.lastPresenceTs : 0,\n presenceCurrentlyActive: member.user ? member.user.currentlyActive : false,\n avatarJsx: av, title: this.getPowerLabel(), onClick: this.onClick,\n name: name, powerStatus: powerStatus, showPresence: this.props.showPresence }));\n }\n});\n//# sourceMappingURL=MemberTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _CallHandler = require('../../../CallHandler');\n\nvar _CallHandler2 = _interopRequireDefault(_CallHandler);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _Stickerpicker = require('./Stickerpicker');\n\nvar _Stickerpicker2 = _interopRequireDefault(_Stickerpicker);\n\nvar _matrixTo = require('../../../matrix-to');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar formatButtonList = [(0, _languageHandler._td)(\"bold\"), (0, _languageHandler._td)(\"italic\"), (0, _languageHandler._td)(\"deleted\"), (0, _languageHandler._td)(\"underlined\"), (0, _languageHandler._td)(\"inline-code\"), (0, _languageHandler._td)(\"block-quote\"), (0, _languageHandler._td)(\"bulleted-list\"), (0, _languageHandler._td)(\"numbered-list\")];\n\nvar MessageComposer = function (_React$Component) {\n (0, _inherits3.default)(MessageComposer, _React$Component);\n\n function MessageComposer(props, context) {\n (0, _classCallCheck3.default)(this, MessageComposer);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (MessageComposer.__proto__ || (0, _getPrototypeOf2.default)(MessageComposer)).call(this, props, context));\n\n _this.onCallClick = _this.onCallClick.bind(_this);\n _this.onHangupClick = _this.onHangupClick.bind(_this);\n _this.onUploadClick = _this.onUploadClick.bind(_this);\n _this.onUploadFileSelected = _this.onUploadFileSelected.bind(_this);\n _this.uploadFiles = _this.uploadFiles.bind(_this);\n _this.onVoiceCallClick = _this.onVoiceCallClick.bind(_this);\n _this._onAutocompleteConfirm = _this._onAutocompleteConfirm.bind(_this);\n _this.onToggleFormattingClicked = _this.onToggleFormattingClicked.bind(_this);\n _this.onToggleMarkdownClicked = _this.onToggleMarkdownClicked.bind(_this);\n _this.onInputStateChanged = _this.onInputStateChanged.bind(_this);\n _this.onEvent = _this.onEvent.bind(_this);\n _this._onRoomStateEvents = _this._onRoomStateEvents.bind(_this);\n _this._onRoomViewStoreUpdate = _this._onRoomViewStoreUpdate.bind(_this);\n _this._onTombstoneClick = _this._onTombstoneClick.bind(_this);\n\n _this.state = {\n inputState: {\n marks: [],\n blockType: null,\n isRichTextEnabled: _SettingsStore2.default.getValue('MessageComposerInput.isRichTextEnabled')\n },\n showFormatting: _SettingsStore2.default.getValue('MessageComposer.showFormatting'),\n isQuoting: Boolean(_RoomViewStore2.default.getQuotingEvent()),\n tombstone: _this._getRoomTombstone()\n };\n return _this;\n }\n\n (0, _createClass3.default)(MessageComposer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n // N.B. using 'event' rather than 'RoomEvents' otherwise the crypto handler\n // for 'event' fires *after* 'RoomEvent', and our room won't have yet been\n // marked as encrypted.\n // XXX: fragile as all hell - fixme somehow, perhaps with a dedicated Room.encryption event or something.\n _MatrixClientPeg2.default.get().on(\"event\", this.onEvent);\n _MatrixClientPeg2.default.get().on(\"RoomState.events\", this._onRoomStateEvents);\n this._roomStoreToken = _RoomViewStore2.default.addListener(this._onRoomViewStoreUpdate);\n this._waitForOwnMember();\n }\n }, {\n key: '_waitForOwnMember',\n value: function _waitForOwnMember() {\n var _this2 = this;\n\n // if we have the member already, do that\n var me = this.props.room.getMember(_MatrixClientPeg2.default.get().getUserId());\n if (me) {\n this.setState({ me: me });\n return;\n }\n // Otherwise, wait for member loading to finish and then update the member for the avatar.\n // The members should already be loading, and loadMembersIfNeeded\n // will return the promise for the existing operation\n this.props.room.loadMembersIfNeeded().then(function () {\n var me = _this2.props.room.getMember(_MatrixClientPeg2.default.get().getUserId());\n _this2.setState({ me: me });\n });\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener(\"event\", this.onEvent);\n _MatrixClientPeg2.default.get().removeListener(\"RoomState.events\", this._onRoomStateEvents);\n }\n if (this._roomStoreToken) {\n this._roomStoreToken.remove();\n }\n }\n }, {\n key: 'onEvent',\n value: function onEvent(event) {\n if (event.getType() !== 'm.room.encryption') return;\n if (event.getRoomId() !== this.props.room.roomId) return;\n this.forceUpdate();\n }\n }, {\n key: '_onRoomStateEvents',\n value: function _onRoomStateEvents(ev, state) {\n if (ev.getRoomId() !== this.props.room.roomId) return;\n\n if (ev.getType() === 'm.room.tombstone') {\n this.setState({ tombstone: this._getRoomTombstone() });\n }\n }\n }, {\n key: '_getRoomTombstone',\n value: function _getRoomTombstone() {\n return this.props.room.currentState.getStateEvents('m.room.tombstone', '');\n }\n }, {\n key: '_onRoomViewStoreUpdate',\n value: function _onRoomViewStoreUpdate() {\n var isQuoting = Boolean(_RoomViewStore2.default.getQuotingEvent());\n if (this.state.isQuoting === isQuoting) return;\n this.setState({ isQuoting: isQuoting });\n }\n }, {\n key: 'onUploadClick',\n value: function onUploadClick(ev) {\n if (_MatrixClientPeg2.default.get().isGuest()) {\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n return;\n }\n\n this.refs.uploadInput.click();\n }\n }, {\n key: 'onUploadFileSelected',\n value: function onUploadFileSelected(files) {\n this.uploadFiles(files.target.files);\n }\n }, {\n key: 'uploadFiles',\n value: function uploadFiles(files) {\n var _this3 = this;\n\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n\n var fileList = [];\n for (var i = 0; i < files.length; i++) {\n fileList.push(_react2.default.createElement(\n 'li',\n { key: i },\n _react2.default.createElement(TintableSvg, { key: i, src: 'img/files.svg', width: '16', height: '16' }),\n ' ',\n files[i].name || (0, _languageHandler._t)('Attachment')\n ));\n }\n\n var isQuoting = Boolean(_RoomViewStore2.default.getQuotingEvent());\n var replyToWarning = null;\n if (isQuoting) {\n replyToWarning = _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('At this time it is not possible to reply with a file so this will be sent without being a reply.')\n );\n }\n\n _Modal2.default.createTrackedDialog('Upload Files confirmation', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Upload Files'),\n description: _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Are you sure you want to upload the following files?')\n ),\n _react2.default.createElement(\n 'ul',\n { style: { listStyle: 'none', textAlign: 'left' } },\n fileList\n ),\n replyToWarning\n ),\n onFinished: function onFinished(shouldUpload) {\n if (shouldUpload) {\n // MessageComposer shouldn't have to rely on its parent passing in a callback to upload a file\n if (files) {\n for (var _i = 0; _i < files.length; _i++) {\n _this3.props.uploadFile(files[_i]);\n }\n }\n }\n\n _this3.refs.uploadInput.value = null;\n }\n });\n }\n }, {\n key: 'onHangupClick',\n value: function onHangupClick() {\n var call = _CallHandler2.default.getCallForRoom(this.props.room.roomId);\n //var call = CallHandler.getAnyActiveCall();\n if (!call) {\n return;\n }\n _dispatcher2.default.dispatch({\n action: 'hangup',\n // hangup the call for this room, which may not be the room in props\n // (e.g. conferences which will hangup the 1:1 room instead)\n room_id: call.roomId\n });\n }\n }, {\n key: 'onCallClick',\n value: function onCallClick(ev) {\n _dispatcher2.default.dispatch({\n action: 'place_call',\n type: ev.shiftKey ? \"screensharing\" : \"video\",\n room_id: this.props.room.roomId\n });\n }\n }, {\n key: 'onVoiceCallClick',\n value: function onVoiceCallClick(ev) {\n _dispatcher2.default.dispatch({\n action: 'place_call',\n type: \"voice\",\n room_id: this.props.room.roomId\n });\n }\n }, {\n key: 'onInputStateChanged',\n value: function onInputStateChanged(inputState) {\n this.setState({ inputState: inputState });\n }\n }, {\n key: '_onAutocompleteConfirm',\n value: function _onAutocompleteConfirm(range, completion) {\n if (this.messageComposerInput) {\n this.messageComposerInput.setDisplayedCompletion(range, completion);\n }\n }\n }, {\n key: 'onFormatButtonClicked',\n value: function onFormatButtonClicked(name, event) {\n event.preventDefault();\n this.messageComposerInput.onFormatButtonClicked(name, event);\n }\n }, {\n key: 'onToggleFormattingClicked',\n value: function onToggleFormattingClicked() {\n _SettingsStore2.default.setValue(\"MessageComposer.showFormatting\", null, _SettingsStore.SettingLevel.DEVICE, !this.state.showFormatting);\n this.setState({ showFormatting: !this.state.showFormatting });\n }\n }, {\n key: 'onToggleMarkdownClicked',\n value: function onToggleMarkdownClicked(e) {\n e.preventDefault(); // don't steal focus from the editor!\n this.messageComposerInput.enableRichtext(!this.state.inputState.isRichTextEnabled);\n }\n }, {\n key: '_onTombstoneClick',\n value: function _onTombstoneClick(ev) {\n ev.preventDefault();\n\n var replacementRoomId = this.state.tombstone.getContent()['replacement_room'];\n _dispatcher2.default.dispatch({\n action: 'view_room',\n highlighted: true,\n room_id: replacementRoomId\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var uploadInputStyle = { display: 'none' };\n var MemberAvatar = _index2.default.getComponent('avatars.MemberAvatar');\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var MessageComposerInput = _index2.default.getComponent(\"rooms.MessageComposerInput\");\n\n var controls = [];\n\n if (this.state.me) {\n controls.push(_react2.default.createElement(\n 'div',\n { key: 'controls_avatar', className: 'mx_MessageComposer_avatar' },\n _react2.default.createElement(MemberAvatar, { member: this.state.me, width: 24, height: 24 })\n ));\n }\n\n var e2eImg = void 0,\n e2eTitle = void 0,\n e2eClass = void 0;\n var roomIsEncrypted = _MatrixClientPeg2.default.get().isRoomEncrypted(this.props.room.roomId);\n if (roomIsEncrypted) {\n // FIXME: show a /!\\ if there are untrusted devices in the room...\n e2eImg = 'img/e2e-verified.svg';\n e2eTitle = (0, _languageHandler._t)('Encrypted room');\n e2eClass = 'mx_MessageComposer_e2eIcon';\n } else {\n e2eImg = 'img/e2e-unencrypted.svg';\n e2eTitle = (0, _languageHandler._t)('Unencrypted room');\n e2eClass = 'mx_MessageComposer_e2eIcon mx_filterFlipColor';\n }\n\n controls.push(_react2.default.createElement('img', { key: 'e2eIcon', className: e2eClass, src: e2eImg, width: '12', height: '12',\n alt: e2eTitle, title: e2eTitle\n }));\n\n var callButton = void 0;\n var videoCallButton = void 0;\n var hangupButton = void 0;\n\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n // Call buttons\n if (this.props.callState && this.props.callState !== 'ended') {\n hangupButton = _react2.default.createElement(\n AccessibleButton,\n { key: 'controls_hangup', className: 'mx_MessageComposer_hangup', onClick: this.onHangupClick },\n _react2.default.createElement('img', { src: 'img/hangup.svg', alt: (0, _languageHandler._t)('Hangup'), title: (0, _languageHandler._t)('Hangup'), width: '25', height: '26' })\n );\n } else {\n callButton = _react2.default.createElement(\n AccessibleButton,\n { key: 'controls_call', className: 'mx_MessageComposer_voicecall', onClick: this.onVoiceCallClick, title: (0, _languageHandler._t)('Voice call') },\n _react2.default.createElement(TintableSvg, { src: 'img/icon-call.svg', width: '35', height: '35' })\n );\n videoCallButton = _react2.default.createElement(\n AccessibleButton,\n { key: 'controls_videocall', className: 'mx_MessageComposer_videocall', onClick: this.onCallClick, title: (0, _languageHandler._t)('Video call') },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-video.svg', width: '35', height: '35' })\n );\n }\n\n var canSendMessages = !this.state.tombstone && this.props.room.maySendMessage();\n\n if (canSendMessages) {\n // This also currently includes the call buttons. Really we should\n // check separately for whether we can call, but this is slightly\n // complex because of conference calls.\n var uploadButton = _react2.default.createElement(\n AccessibleButton,\n { key: 'controls_upload', className: 'mx_MessageComposer_upload',\n onClick: this.onUploadClick, title: (0, _languageHandler._t)('Upload file') },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-upload.svg', width: '35', height: '35' }),\n _react2.default.createElement('input', { ref: 'uploadInput', type: 'file',\n style: uploadInputStyle,\n multiple: true,\n onChange: this.onUploadFileSelected })\n );\n\n var formattingButton = this.state.inputState.isRichTextEnabled ? _react2.default.createElement(AccessibleButton, { element: 'img', className: 'mx_MessageComposer_formatting',\n alt: (0, _languageHandler._t)(\"Show Text Formatting Toolbar\"),\n title: (0, _languageHandler._t)(\"Show Text Formatting Toolbar\"),\n src: 'img/button-text-formatting.svg',\n onClick: this.onToggleFormattingClicked,\n style: { visibility: this.state.showFormatting ? 'hidden' : 'visible' },\n key: 'controls_formatting' }) : null;\n\n var placeholderText = void 0;\n if (this.state.isQuoting) {\n if (roomIsEncrypted) {\n placeholderText = (0, _languageHandler._t)('Send an encrypted reply…');\n } else {\n placeholderText = (0, _languageHandler._t)('Send a reply (unencrypted)…');\n }\n } else {\n if (roomIsEncrypted) {\n placeholderText = (0, _languageHandler._t)('Send an encrypted message…');\n } else {\n placeholderText = (0, _languageHandler._t)('Send a message (unencrypted)…');\n }\n }\n\n var stickerpickerButton = _react2.default.createElement(_Stickerpicker2.default, { key: 'stickerpicker_controls_button', room: this.props.room });\n\n controls.push(_react2.default.createElement(MessageComposerInput, {\n ref: function ref(c) {\n return _this4.messageComposerInput = c;\n },\n key: 'controls_input',\n onResize: this.props.onResize,\n room: this.props.room,\n placeholder: placeholderText,\n onFilesPasted: this.uploadFiles,\n onInputStateChanged: this.onInputStateChanged }), formattingButton, stickerpickerButton, uploadButton, hangupButton, callButton, videoCallButton);\n } else if (this.state.tombstone) {\n var replacementRoomId = this.state.tombstone.getContent()['replacement_room'];\n\n controls.push(_react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_replaced_wrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_replaced_valign' },\n _react2.default.createElement('img', { className: 'mx_MessageComposer_roomReplaced_icon', src: 'img/room_replaced.svg' }),\n _react2.default.createElement(\n 'span',\n { className: 'mx_MessageComposer_roomReplaced_header' },\n (0, _languageHandler._t)(\"This room has been replaced and is no longer active.\")\n ),\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n 'a',\n { href: (0, _matrixTo.makeRoomPermalink)(replacementRoomId),\n className: 'mx_MessageComposer_roomReplaced_link',\n onClick: this._onTombstoneClick\n },\n (0, _languageHandler._t)(\"The conversation continues here.\")\n )\n )\n ));\n } else {\n controls.push(_react2.default.createElement(\n 'div',\n { key: 'controls_error', className: 'mx_MessageComposer_noperm_error' },\n (0, _languageHandler._t)('You do not have permission to post to this room')\n ));\n }\n\n var formatBar = void 0;\n if (this.state.showFormatting && this.state.inputState.isRichTextEnabled) {\n var _state$inputState = this.state.inputState,\n marks = _state$inputState.marks,\n blockType = _state$inputState.blockType;\n\n var formatButtons = formatButtonList.map(function (name) {\n // special-case to match the md serializer and the special-case in MessageComposerInput.js\n var markName = name === 'inline-code' ? 'code' : name;\n var active = marks.some(function (mark) {\n return mark.type === markName;\n }) || blockType === name;\n var suffix = active ? '-on' : '';\n var onFormatButtonClicked = _this4.onFormatButtonClicked.bind(_this4, name);\n var className = 'mx_MessageComposer_format_button mx_filterFlipColor';\n return _react2.default.createElement('img', { className: className,\n title: (0, _languageHandler._t)(name),\n onMouseDown: onFormatButtonClicked,\n key: name,\n src: 'img/button-text-' + name + suffix + '.svg',\n height: '17' });\n });\n\n formatBar = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_formatbar_wrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_formatbar' },\n formatButtons,\n _react2.default.createElement('div', { style: { flex: 1 } }),\n _react2.default.createElement('img', { title: this.state.inputState.isRichTextEnabled ? (0, _languageHandler._t)(\"Turn Markdown on\") : (0, _languageHandler._t)(\"Turn Markdown off\"),\n onMouseDown: this.onToggleMarkdownClicked,\n className: 'mx_MessageComposer_formatbar_markdown mx_filterFlipColor',\n src: 'img/button-md-' + !this.state.inputState.isRichTextEnabled + '.png' }),\n _react2.default.createElement(AccessibleButton, { element: 'img', title: (0, _languageHandler._t)(\"Hide Text Formatting Toolbar\"),\n onClick: this.onToggleFormattingClicked,\n className: 'mx_MessageComposer_formatbar_cancel mx_filterFlipColor',\n src: 'img/icon-text-cancel.svg' })\n )\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_wrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_row' },\n controls\n )\n ),\n formatBar\n );\n }\n }]);\n return MessageComposer;\n}(_react2.default.Component);\n\nexports.default = MessageComposer;\n\n\nMessageComposer.propTypes = {\n // a callback which is called when the height of the composer is\n // changed due to a change in content.\n onResize: _propTypes2.default.func,\n\n // js-sdk Room object\n room: _propTypes2.default.object.isRequired,\n\n // string representing the current voip call state\n callState: _propTypes2.default.string,\n\n // callback when a file to upload is chosen\n uploadFile: _propTypes2.default.func.isRequired,\n\n // string representing the current room app drawer state\n showApps: _propTypes2.default.bool\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=MessageComposer.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _setImmediate2 = require('babel-runtime/core-js/set-immediate');\n\nvar _setImmediate3 = _interopRequireDefault(_setImmediate2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _slateReact = require('slate-react');\n\nvar _slate = require('slate');\n\nvar _slateHtmlSerializer = require('slate-html-serializer');\n\nvar _slateHtmlSerializer2 = _interopRequireDefault(_slateHtmlSerializer);\n\nvar _slateMdSerializer = require('slate-md-serializer');\n\nvar _slateMdSerializer2 = _interopRequireDefault(_slateMdSerializer);\n\nvar _slatePlainSerializer = require('slate-plain-serializer');\n\nvar _slatePlainSerializer2 = _interopRequireDefault(_slatePlainSerializer);\n\nvar _PlainWithPillsSerializer = require('../../../autocomplete/PlainWithPillsSerializer');\n\nvar _PlainWithPillsSerializer2 = _interopRequireDefault(_PlainWithPillsSerializer);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _SlashCommands = require('../../../SlashCommands');\n\nvar _Keyboard = require('../../../Keyboard');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Analytics = require('../../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _RichText = require('../../../RichText');\n\nvar RichText = _interopRequireWildcard(_RichText);\n\nvar _HtmlUtils = require('../../../HtmlUtils');\n\nvar HtmlUtils = _interopRequireWildcard(_HtmlUtils);\n\nvar _Autocomplete = require('./Autocomplete');\n\nvar _Autocomplete2 = _interopRequireDefault(_Autocomplete);\n\nvar _Autocompleter = require('../../../autocomplete/Autocompleter');\n\nvar _Markdown = require('../../../Markdown');\n\nvar _Markdown2 = _interopRequireDefault(_Markdown);\n\nvar _ComposerHistoryManager = require('../../../ComposerHistoryManager');\n\nvar _ComposerHistoryManager2 = _interopRequireDefault(_ComposerHistoryManager);\n\nvar _MessageComposerStore = require('../../../stores/MessageComposerStore');\n\nvar _MessageComposerStore2 = _interopRequireDefault(_MessageComposerStore);\n\nvar _linkifyMatrix = require('../../../linkify-matrix');\n\nvar _emojione = require('emojione');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _matrixTo = require('../../../matrix-to');\n\nvar _ReplyPreview = require('./ReplyPreview');\n\nvar _ReplyPreview2 = _interopRequireDefault(_ReplyPreview);\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _ReplyThread = require('../elements/ReplyThread');\n\nvar _ReplyThread2 = _interopRequireDefault(_ReplyThread);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar REGEX_MATRIXTO_MARKDOWN_GLOBAL = new RegExp(_linkifyMatrix.MATRIXTO_MD_LINK_PATTERN, 'g');\n\nvar EMOJI_SHORTNAMES = (0, _keys2.default)(_emojione.emojioneList);\nvar EMOJI_UNICODE_TO_SHORTNAME = (0, _emojione.mapUnicodeToShort)();\nvar REGEX_EMOJI_WHITESPACE = new RegExp('(?:^|\\\\s)(' + _emojione.asciiRegexp + ')\\\\s$');\nvar EMOJI_REGEX = new RegExp(_emojione.unicodeRegexp, 'g');\n\nvar TYPING_USER_TIMEOUT = 10000,\n TYPING_SERVER_TIMEOUT = 30000;\n\nvar ENTITY_TYPES = {\n AT_ROOM_PILL: 'ATROOMPILL'\n};\n\n// the Slate node type to default to for unstyled text\nvar DEFAULT_NODE = 'paragraph';\n\n// map HTML elements through to our Slate schema node types\n// used for the HTML deserializer.\n// (The names here are chosen to match the MD serializer's schema for convenience)\nvar BLOCK_TAGS = {\n p: 'paragraph',\n blockquote: 'block-quote',\n ul: 'bulleted-list',\n h1: 'heading1',\n h2: 'heading2',\n h3: 'heading3',\n h4: 'heading4',\n h5: 'heading5',\n h6: 'heading6',\n li: 'list-item',\n ol: 'numbered-list',\n pre: 'code'\n};\n\nvar MARK_TAGS = {\n strong: 'bold',\n b: 'bold', // deprecated\n em: 'italic',\n i: 'italic', // deprecated\n code: 'code',\n u: 'underlined',\n del: 'deleted',\n strike: 'deleted', // deprecated\n s: 'deleted' // deprecated\n};\n\nvar SLATE_SCHEMA = {\n inlines: {\n pill: {\n isVoid: true\n },\n emoji: {\n isVoid: true\n }\n }\n};\n\nfunction onSendMessageFailed(err, room) {\n // XXX: temporary logging to try to diagnose\n // https://github.com/vector-im/riot-web/issues/3148\n console.log('MessageComposer got send failure: ' + err.name + '(' + err + ')');\n _dispatcher2.default.dispatch({\n action: 'message_send_failed'\n });\n}\n\nfunction rangeEquals(a, b) {\n return a.anchor.key === b.anchor.key && a.anchor.offset === b.anchorOffset && a.focus.key === b.focusKey && a.focus.offset === b.focusOffset && a.isFocused === b.isFocused && a.isBackward === b.isBackward;\n}\n\n/*\n * The textInput part of the MessageComposer\n */\n\nvar MessageComposerInput = function (_React$Component) {\n (0, _inherits3.default)(MessageComposerInput, _React$Component);\n\n function MessageComposerInput(props, context) {\n (0, _classCallCheck3.default)(this, MessageComposerInput);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (MessageComposerInput.__proto__ || (0, _getPrototypeOf2.default)(MessageComposerInput)).call(this, props, context));\n\n _initialiseProps.call(_this);\n\n var isRichTextEnabled = _SettingsStore2.default.getValue('MessageComposerInput.isRichTextEnabled');\n\n _Analytics2.default.setRichtextMode(isRichTextEnabled);\n\n _this.client = _MatrixClientPeg2.default.get();\n\n // track whether we should be trying to show autocomplete suggestions on the current editor\n // contents. currently it's only suppressed when navigating history to avoid ugly flashes\n // of unexpected corrections as you navigate.\n // XXX: should this be in state?\n _this.suppressAutoComplete = false;\n\n // track whether we've just pressed an arrowkey left or right in order to skip void nodes.\n // see https://github.com/ianstormtaylor/slate/issues/762#issuecomment-304855095\n _this.direction = '';\n\n _this.plainWithMdPills = new _PlainWithPillsSerializer2.default({ pillFormat: 'md' });\n _this.plainWithIdPills = new _PlainWithPillsSerializer2.default({ pillFormat: 'id' });\n _this.plainWithPlainPills = new _PlainWithPillsSerializer2.default({ pillFormat: 'plain' });\n\n _this.md = new _slateMdSerializer2.default({\n rules: [{\n // if serialize returns undefined it falls through to the default hardcoded\n // serialization rules\n serialize: function serialize(obj, children) {\n if (obj.object !== 'inline') return;\n switch (obj.type) {\n case 'pill':\n return '[' + obj.data.get('completion') + '](' + obj.data.get('href') + ')';\n case 'emoji':\n return obj.data.get('emojiUnicode');\n }\n }\n }, {\n serialize: function serialize(obj, children) {\n if (obj.object !== 'mark') return;\n // XXX: slate-md-serializer consumes marks other than bold, italic, code, inserted, deleted\n switch (obj.type) {\n case 'underlined':\n return '<u>' + children + '</u>';\n case 'deleted':\n return '<del>' + children + '</del>';\n case 'code':\n // XXX: we only ever get given `code` regardless of whether it was inline or block\n // XXX: workaround for https://github.com/tommoor/slate-md-serializer/issues/14\n // strip single backslashes from children, as they would have been escaped here\n return '`' + children.split('\\\\').map(function (v) {\n return v ? v : '\\\\';\n }).join('') + '`';\n }\n }\n }]\n });\n\n _this.html = new _slateHtmlSerializer2.default({\n rules: [{\n deserialize: function deserialize(el, next) {\n var tag = el.tagName.toLowerCase();\n var type = BLOCK_TAGS[tag];\n if (type) {\n return {\n object: 'block',\n type: type,\n nodes: next(el.childNodes)\n };\n }\n type = MARK_TAGS[tag];\n if (type) {\n return {\n object: 'mark',\n type: type,\n nodes: next(el.childNodes)\n };\n }\n // special case links\n if (tag === 'a') {\n var href = el.getAttribute('href');\n var m = void 0;\n if (href) {\n m = href.match(_linkifyMatrix.MATRIXTO_URL_PATTERN);\n }\n if (m) {\n return {\n object: 'inline',\n type: 'pill',\n data: {\n href: href,\n completion: el.innerText,\n completionId: m[1]\n }\n };\n } else {\n return {\n object: 'inline',\n type: 'link',\n data: { href: href },\n nodes: next(el.childNodes)\n };\n }\n }\n },\n serialize: function serialize(obj, children) {\n if (obj.object === 'block') {\n return _this.renderNode({\n node: obj,\n children: children\n });\n } else if (obj.object === 'mark') {\n return _this.renderMark({\n mark: obj,\n children: children\n });\n } else if (obj.object === 'inline') {\n // special case links, pills and emoji otherwise we\n // end up with React components getting rendered out(!)\n switch (obj.type) {\n case 'pill':\n return _react2.default.createElement(\n 'a',\n { href: obj.data.get('href') },\n obj.data.get('completion')\n );\n case 'link':\n return _react2.default.createElement(\n 'a',\n { href: obj.data.get('href') },\n children\n );\n case 'emoji':\n // XXX: apparently you can't return plain strings from serializer rules\n // until https://github.com/ianstormtaylor/slate/pull/1854 is merged.\n // So instead we temporarily wrap emoji from RTE in an arbitrary tag\n // (<b/>). <span/> would be nicer, but in practice it causes CSS issues.\n return _react2.default.createElement(\n 'b',\n null,\n obj.data.get('emojiUnicode')\n );\n }\n return _this.renderNode({\n node: obj,\n children: children\n });\n }\n }\n }]\n });\n\n var savedState = _MessageComposerStore2.default.getEditorState(_this.props.room.roomId);\n _this.state = {\n // whether we're in rich text or markdown mode\n isRichTextEnabled: isRichTextEnabled,\n\n // the currently displayed editor state (note: this is always what is modified on input)\n editorState: _this.createEditorState(isRichTextEnabled, savedState ? savedState.editor_state : undefined, savedState ? savedState.rich_text : undefined),\n\n // the original editor state, before we started tabbing through completions\n originalEditorState: null,\n\n // the virtual state \"above\" the history stack, the message currently being composed that\n // we want to persist whilst browsing history\n currentlyComposedEditorState: null,\n\n // whether there were any completions\n someCompletions: null\n };\n return _this;\n }\n\n /*\n * \"Does the right thing\" to create an Editor value, based on:\n * - whether we've got rich text mode enabled\n * - contentState was passed in\n * - whether the contentState that was passed in was rich text\n */\n\n\n (0, _createClass3.default)(MessageComposerInput, [{\n key: 'createEditorState',\n value: function createEditorState(wantRichText, editorState, wasRichText) {\n if (editorState instanceof _slate.Value) {\n if (wantRichText && !wasRichText) {\n return this.mdToRichEditorState(editorState);\n }\n if (wasRichText && !wantRichText) {\n return this.richToMdEditorState(editorState);\n }\n return editorState;\n } else {\n // ...or create a new one. and explicitly focus it otherwise tab in-out issues\n var base = _slatePlainSerializer2.default.deserialize('', { defaultBlock: DEFAULT_NODE });\n return base.change().focus().value;\n }\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n this.historyManager = new _ComposerHistoryManager2.default(this.props.room.roomId, 'mx_slate_composer_history_');\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n }\n }, {\n key: 'onTypingActivity',\n value: function onTypingActivity() {\n this.isTyping = true;\n if (!this.userTypingTimer) {\n this.sendTyping(true);\n }\n this.startUserTypingTimer();\n this.startServerTypingTimer();\n }\n }, {\n key: 'onFinishedTyping',\n value: function onFinishedTyping() {\n this.isTyping = false;\n this.sendTyping(false);\n this.stopUserTypingTimer();\n this.stopServerTypingTimer();\n }\n }, {\n key: 'startUserTypingTimer',\n value: function startUserTypingTimer() {\n this.stopUserTypingTimer();\n var self = this;\n this.userTypingTimer = setTimeout(function () {\n self.isTyping = false;\n self.sendTyping(self.isTyping);\n self.userTypingTimer = null;\n }, TYPING_USER_TIMEOUT);\n }\n }, {\n key: 'stopUserTypingTimer',\n value: function stopUserTypingTimer() {\n if (this.userTypingTimer) {\n clearTimeout(this.userTypingTimer);\n this.userTypingTimer = null;\n }\n }\n }, {\n key: 'startServerTypingTimer',\n value: function startServerTypingTimer() {\n if (!this.serverTypingTimer) {\n var self = this;\n this.serverTypingTimer = setTimeout(function () {\n if (self.isTyping) {\n self.sendTyping(self.isTyping);\n self.startServerTypingTimer();\n }\n }, TYPING_SERVER_TIMEOUT / 2);\n }\n }\n }, {\n key: 'stopServerTypingTimer',\n value: function stopServerTypingTimer() {\n if (this.serverTypingTimer) {\n clearTimeout(this.serverTypingTimer);\n this.serverTypingTimer = null;\n }\n }\n }, {\n key: 'sendTyping',\n value: function sendTyping(isTyping) {\n if (_SettingsStore2.default.getValue('dontSendTypingNotifications')) return;\n _MatrixClientPeg2.default.get().sendTyping(this.props.room.roomId, this.isTyping, TYPING_SERVER_TIMEOUT).done();\n }\n }, {\n key: 'refreshTyping',\n value: function refreshTyping() {\n if (this.typingTimeout) {\n clearTimeout(this.typingTimeout);\n this.typingTimeout = null;\n }\n }\n }, {\n key: 'mdToRichEditorState',\n value: function mdToRichEditorState(editorState) {\n // for consistency when roundtripping, we could use slate-md-serializer rather than\n // commonmark, but then we would lose pills as the MD deserialiser doesn't know about\n // them and doesn't have any extensibility hooks.\n //\n // The code looks like this:\n //\n // const markdown = this.plainWithMdPills.serialize(editorState);\n //\n // // weirdly, the Md serializer can't deserialize '' to a valid Value...\n // if (markdown !== '') {\n // editorState = this.md.deserialize(markdown);\n // }\n // else {\n // editorState = Plain.deserialize('', { defaultBlock: DEFAULT_NODE });\n // }\n\n // so, instead, we use commonmark proper (which is arguably more logical to the user\n // anyway, as they'll expect the RTE view to match what they'll see in the timeline,\n // but the HTML->MD conversion is anyone's guess).\n\n var textWithMdPills = this.plainWithMdPills.serialize(editorState);\n var markdown = new _Markdown2.default(textWithMdPills);\n // HTML deserialize has custom rules to turn matrix.to links into pill objects.\n return this.html.deserialize(markdown.toHTML());\n }\n }, {\n key: 'richToMdEditorState',\n value: function richToMdEditorState(editorState) {\n // FIXME: this conversion loses pills (turning them into pure MD links).\n // We need to add a pill-aware deserialize method\n // to PlainWithPillsSerializer which recognises pills in raw MD and turns them into pills.\n return _slatePlainSerializer2.default.deserialize(\n // FIXME: we compile the MD out of the RTE state using slate-md-serializer\n // which doesn't roundtrip symmetrically with commonmark, which we use for\n // compiling MD out of the MD editor state above.\n this.md.serialize(editorState), { defaultBlock: DEFAULT_NODE });\n }\n }, {\n key: 'enableRichtext',\n value: function enableRichtext(enabled) {\n var _this2 = this;\n\n if (enabled === this.state.isRichTextEnabled) return;\n\n var editorState = null;\n if (enabled) {\n editorState = this.mdToRichEditorState(this.state.editorState);\n } else {\n editorState = this.richToMdEditorState(this.state.editorState);\n }\n\n _Analytics2.default.setRichtextMode(enabled);\n\n this.setState({\n editorState: this.createEditorState(enabled, editorState),\n isRichTextEnabled: enabled\n }, function () {\n _this2._editor.focus();\n });\n\n _SettingsStore2.default.setValue(\"MessageComposerInput.isRichTextEnabled\", null, _SettingsStore.SettingLevel.ACCOUNT, enabled);\n }\n\n /**\n * Check if the current selection has a mark with `type` in it.\n *\n * @param {String} type\n * @return {Boolean}\n */\n\n /**\n * Check if the any of the currently selected blocks are of `type`.\n *\n * @param {String} type\n * @return {Boolean}\n */\n\n /* If passed null, restores the original editor content from state.originalEditorState.\n * If passed a non-null displayedCompletion, modifies state.originalEditorState to compute new state.editorState.\n */\n\n }, {\n key: 'getAutocompleteQuery',\n value: function getAutocompleteQuery(editorState) {\n // We can just return the current block where the selection begins, which\n // should be enough to capture any autocompletion input, given autocompletion\n // providers only search for the first match which intersects with the current selection.\n // This avoids us having to serialize the whole thing to plaintext and convert\n // selection offsets in & out of the plaintext domain.\n\n if (editorState.selection.anchor.key) {\n return editorState.document.getDescendant(editorState.selection.anchor.key).text;\n } else {\n return '';\n }\n }\n }, {\n key: 'getSelectionRange',\n value: function getSelectionRange(editorState) {\n var beginning = false;\n var query = this.getAutocompleteQuery(editorState);\n var firstChild = editorState.document.nodes.get(0);\n var firstGrandChild = firstChild && firstChild.nodes.get(0);\n beginning = firstChild && firstGrandChild && firstChild.object === 'block' && firstGrandChild.object === 'text' && editorState.selection.anchor.key === firstGrandChild.key;\n\n // return a character range suitable for handing to an autocomplete provider.\n // the range is relative to the anchor of the current editor selection.\n // if the selection spans multiple blocks, then we collapse it for the calculation.\n var range = {\n beginning: beginning, // whether the selection is in the first block of the editor or not\n start: editorState.selection.anchor.offset,\n end: editorState.selection.anchor.key == editorState.selection.focus.key ? editorState.selection.focus.offset : editorState.selection.anchor.offset\n };\n if (range.start > range.end) {\n var tmp = range.start;\n range.start = range.end;\n range.end = tmp;\n }\n return range;\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var activeEditorState = this.state.originalEditorState || this.state.editorState;\n\n var className = (0, _classnames2.default)('mx_MessageComposer_input', {\n mx_MessageComposer_input_error: this.state.someCompletions === false\n });\n\n var isEmpty = _slatePlainSerializer2.default.serialize(this.state.editorState) === '';\n\n var placeholder = this.props.placeholder;\n // XXX: workaround for placeholder being shown when there is a formatting block e.g blockquote but no text\n\n if (isEmpty && this.state.editorState.startBlock && this.state.editorState.startBlock.type !== DEFAULT_NODE) {\n placeholder = undefined;\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_input_wrapper', onClick: this.focusComposer },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_autocomplete_wrapper' },\n _react2.default.createElement(_ReplyPreview2.default, null),\n _react2.default.createElement(_Autocomplete2.default, {\n ref: function ref(e) {\n return _this3.autocomplete = e;\n },\n room: this.props.room,\n onConfirm: this.onAutocompleteConfirm,\n onSelectionChange: this.setDisplayedCompletion,\n query: this.suppressAutoComplete ? '' : this.getAutocompleteQuery(activeEditorState),\n selection: this.getSelectionRange(activeEditorState)\n })\n ),\n _react2.default.createElement(\n 'div',\n { className: className },\n _react2.default.createElement('img', { className: 'mx_MessageComposer_input_markdownIndicator mx_filterFlipColor',\n onMouseDown: this.onMarkdownToggleClicked,\n title: this.state.isRichTextEnabled ? (0, _languageHandler._t)(\"Markdown is disabled\") : (0, _languageHandler._t)(\"Markdown is enabled\"),\n src: 'img/button-md-' + !this.state.isRichTextEnabled + '.png' }),\n _react2.default.createElement(_slateReact.Editor, { ref: this._collectEditor,\n dir: 'auto',\n className: 'mx_MessageComposer_editor',\n placeholder: placeholder,\n value: this.state.editorState,\n onChange: this.onChange,\n onKeyDown: this.onKeyDown,\n onPaste: this.onPaste,\n renderNode: this.renderNode,\n renderMark: this.renderMark\n // disable spell check for the placeholder because browsers don't like \"unencrypted\"\n , spellCheck: !isEmpty,\n schema: SLATE_SCHEMA\n })\n )\n );\n }\n }]);\n return MessageComposerInput;\n}(_react2.default.Component);\n\nMessageComposerInput.propTypes = {\n // a callback which is called when the height of the composer is\n // changed due to a change in content.\n onResize: _propTypes2.default.func,\n\n // js-sdk Room object\n room: _propTypes2.default.object.isRequired,\n\n onFilesPasted: _propTypes2.default.func,\n\n onInputStateChanged: _propTypes2.default.func\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this4 = this;\n\n this._collectEditor = function (e) {\n _this4._editor = e;\n };\n\n this.onAction = function (payload) {\n var editor = _this4._editor;\n var editorState = _this4.state.editorState;\n\n switch (payload.action) {\n case 'reply_to_event':\n case 'focus_composer':\n _this4.focusComposer();\n break;\n case 'insert_mention':\n {\n // Pretend that we've autocompleted this user because keeping two code\n // paths for inserting a user pill is not fun\n var selection = _this4.getSelectionRange(_this4.state.editorState);\n var member = _this4.props.room.getMember(payload.user_id);\n var completion = member ? member.rawDisplayName : payload.user_id;\n _this4.setDisplayedCompletion({\n completion: completion,\n completionId: payload.user_id,\n selection: selection,\n href: (0, _matrixTo.makeUserPermalink)(payload.user_id),\n suffix: selection.beginning && selection.start === 0 ? ': ' : ' '\n });\n }\n break;\n case 'quote':\n {\n var html = HtmlUtils.bodyToHtml(payload.event.getContent(), null, {\n forComposerQuote: true,\n returnString: true,\n emojiOne: false\n });\n var fragment = _this4.html.deserialize(html);\n // FIXME: do we want to put in a permalink to the original quote here?\n // If so, what should be the format, and how do we differentiate it from replies?\n\n var quote = _slate.Block.create('block-quote');\n if (_this4.state.isRichTextEnabled) {\n var change = editorState.change();\n var anchorText = editorState.anchorText;\n if ((!anchorText || anchorText.text === '') && editorState.anchorBlock.nodes.size === 1) {\n // replace the current block rather than split the block\n // XXX: this destroys our focus by deleting the thing we are anchored/focused on\n change = change.replaceNodeByKey(editorState.anchorBlock.key, quote);\n } else {\n // insert it into the middle of the block (splitting it)\n change = change.insertBlock(quote);\n }\n\n // XXX: heuristic to strip out wrapping <p> which breaks quoting in RT mode\n if (fragment.document.nodes.size && fragment.document.nodes.get(0).type === DEFAULT_NODE) {\n change = change.insertFragmentByKey(quote.key, 0, fragment.document.nodes.get(0));\n } else {\n change = change.insertFragmentByKey(quote.key, 0, fragment.document);\n }\n\n // XXX: this is to bring back the focus in a sane place and add a paragraph after it\n change = change.select(_slate.Range.create({\n anchor: {\n key: quote.key\n },\n focus: {\n key: quote.key\n }\n })).moveToEndOfBlock().insertBlock(_slate.Block.create(DEFAULT_NODE)).focus();\n\n _this4.onChange(change);\n } else {\n var fragmentChange = fragment.change();\n fragmentChange.moveToRangeOfNode(fragment.document).wrapBlock(quote);\n\n // FIXME: handle pills and use commonmark rather than md-serialize\n var md = _this4.md.serialize(fragmentChange.value);\n var _change = editorState.change().insertText(md + '\\n\\n').focus();\n _this4.onChange(_change);\n }\n }\n break;\n }\n };\n\n this.onChange = function (change, originalEditorState) {\n var editorState = change.value;\n\n if (_this4.direction !== '') {\n var focusedNode = editorState.focusInline || editorState.focusText;\n if (editorState.schema.isVoid(focusedNode)) {\n // XXX: does this work in RTL?\n var edge = _this4.direction === 'Previous' ? 'End' : 'Start';\n if (editorState.selection.isCollapsed) {\n change = change['moveTo' + edge + 'Of' + _this4.direction + 'Text']();\n } else {\n var block = _this4.direction === 'Previous' ? editorState.previousText : editorState.nextText;\n if (block) {\n change = change['moveFocusTo' + edge + 'OfNode'](block);\n }\n }\n editorState = change.value;\n }\n }\n\n // when in autocomplete mode and selection changes hide the autocomplete.\n // Selection changes when we enter text so use a heuristic to compare documents without doing it recursively\n if (_this4.autocomplete.state.completionList.length > 0 && !_this4.autocomplete.state.hide && !rangeEquals(_this4.state.editorState.selection, editorState.selection) &&\n // XXX: the heuristic failed when inlines like pills weren't taken into account. This is inideal\n _this4.state.editorState.document.toJSON() === editorState.document.toJSON()) {\n _this4.autocomplete.hide();\n }\n\n if (_slatePlainSerializer2.default.serialize(editorState) !== '') {\n _this4.onTypingActivity();\n } else {\n _this4.onFinishedTyping();\n }\n\n if (editorState.startText !== null) {\n var text = editorState.startText.text;\n var currentStartOffset = editorState.selection.start.offset;\n\n // Automatic replacement of plaintext emoji to Unicode emoji\n if (_SettingsStore2.default.getValue('MessageComposerInput.autoReplaceEmoji')) {\n // The first matched group includes just the matched plaintext emoji\n var emojiMatch = REGEX_EMOJI_WHITESPACE.exec(text.slice(0, currentStartOffset));\n if (emojiMatch) {\n // plaintext -> hex unicode\n var emojiUc = _emojione.asciiList[emojiMatch[1]];\n // hex unicode -> shortname -> actual unicode\n var unicodeEmoji = (0, _emojione.shortnameToUnicode)(EMOJI_UNICODE_TO_SHORTNAME[emojiUc]);\n\n var range = _slate.Range.create({\n anchor: {\n key: editorState.startText.key,\n offset: currentStartOffset - emojiMatch[1].length - 1\n },\n focus: {\n key: editorState.startText.key,\n offset: currentStartOffset - 1\n }\n });\n change = change.insertTextAtRange(range, unicodeEmoji);\n editorState = change.value;\n }\n }\n }\n\n // emojioneify any emoji\n editorState.document.getTexts().forEach(function (node) {\n if (node.text !== '' && HtmlUtils.containsEmoji(node.text)) {\n var match = void 0;\n while ((match = EMOJI_REGEX.exec(node.text)) !== null) {\n var _range = _slate.Range.create({\n anchor: {\n key: node.key,\n offset: match.index\n },\n focus: {\n key: node.key,\n offset: match.index + match[0].length\n }\n });\n var inline = _slate.Inline.create({\n type: 'emoji',\n data: { emojiUnicode: match[0] }\n });\n change = change.insertInlineAtRange(_range, inline);\n editorState = change.value;\n }\n }\n });\n\n // work around weird bug where inserting emoji via the macOS\n // emoji picker can leave the selection stuck in the emoji's\n // child text. This seems to happen due to selection getting\n // moved in the normalisation phase after calculating these changes\n if (editorState.selection.anchor.key && editorState.document.getParent(editorState.selection.anchor.key).type === 'emoji') {\n change = change.moveToStartOfNextText();\n editorState = change.value;\n }\n\n if (_this4.props.onInputStateChanged && editorState.blocks.size > 0) {\n var blockType = editorState.blocks.first().type;\n // console.log(\"onInputStateChanged; current block type is \" + blockType + \" and marks are \" + editorState.activeMarks);\n\n if (blockType === 'list-item') {\n var parent = editorState.document.getParent(editorState.blocks.first().key);\n if (parent.type === 'numbered-list') {\n blockType = 'numbered-list';\n } else if (parent.type === 'bulleted-list') {\n blockType = 'bulleted-list';\n }\n }\n var inputState = {\n marks: editorState.activeMarks,\n isRichTextEnabled: _this4.state.isRichTextEnabled,\n blockType: blockType\n };\n _this4.props.onInputStateChanged(inputState);\n }\n\n // Record the editor state for this room so that it can be retrieved after switching to another room and back\n _MessageComposerStore2.default.setEditorState(_this4.props.room.roomId, editorState, _this4.state.isRichTextEnabled);\n\n _this4.setState({\n editorState: editorState,\n originalEditorState: originalEditorState || null\n });\n };\n\n this.hasMark = function (type) {\n var editorState = _this4.state.editorState;\n\n return editorState.activeMarks.some(function (mark) {\n return mark.type === type;\n });\n };\n\n this.hasBlock = function (type) {\n var editorState = _this4.state.editorState;\n\n return editorState.blocks.some(function (node) {\n return node.type === type;\n });\n };\n\n this.onKeyDown = function (ev, change, editor) {\n _this4.suppressAutoComplete = false;\n\n // skip void nodes - see\n // https://github.com/ianstormtaylor/slate/issues/762#issuecomment-304855095\n if (ev.keyCode === _Keyboard.KeyCode.LEFT) {\n _this4.direction = 'Previous';\n } else if (ev.keyCode === _Keyboard.KeyCode.RIGHT) {\n _this4.direction = 'Next';\n } else {\n _this4.direction = '';\n }\n\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.ENTER:\n return _this4.handleReturn(ev, change);\n case _Keyboard.KeyCode.BACKSPACE:\n return _this4.onBackspace(ev, change);\n case _Keyboard.KeyCode.UP:\n return _this4.onVerticalArrow(ev, true);\n case _Keyboard.KeyCode.DOWN:\n return _this4.onVerticalArrow(ev, false);\n case _Keyboard.KeyCode.TAB:\n return _this4.onTab(ev);\n case _Keyboard.KeyCode.ESCAPE:\n return _this4.onEscape(ev);\n case _Keyboard.KeyCode.SPACE:\n return _this4.onSpace(ev, change);\n }\n\n if ((0, _Keyboard.isOnlyCtrlOrCmdKeyEvent)(ev)) {\n var _KeyCode$KEY_M$KeyCod;\n\n var ctrlCmdCommand = (_KeyCode$KEY_M$KeyCod = {}, (0, _defineProperty3.default)(_KeyCode$KEY_M$KeyCod, _Keyboard.KeyCode.KEY_M, 'toggle-mode'), (0, _defineProperty3.default)(_KeyCode$KEY_M$KeyCod, _Keyboard.KeyCode.KEY_B, 'bold'), (0, _defineProperty3.default)(_KeyCode$KEY_M$KeyCod, _Keyboard.KeyCode.KEY_I, 'italic'), (0, _defineProperty3.default)(_KeyCode$KEY_M$KeyCod, _Keyboard.KeyCode.KEY_U, 'underlined'), (0, _defineProperty3.default)(_KeyCode$KEY_M$KeyCod, _Keyboard.KeyCode.KEY_J, 'inline-code'), _KeyCode$KEY_M$KeyCod)[ev.keyCode];\n\n if (ctrlCmdCommand) {\n ev.preventDefault(); // to prevent clashing with Mac's minimize window\n return _this4.handleKeyCommand(ctrlCmdCommand);\n }\n }\n };\n\n this.onSpace = function (ev, change) {\n if (ev.metaKey || ev.altKey || ev.shiftKey || ev.ctrlKey) {\n return;\n }\n\n // drop a point in history so the user can undo a word\n // XXX: this seems nasty but adding to history manually seems a no-go\n ev.preventDefault();\n return change.withoutMerging(function () {\n change.insertText(ev.key);\n });\n };\n\n this.onBackspace = function (ev, change) {\n if (ev.metaKey || ev.altKey || ev.shiftKey) {\n return;\n }\n\n var editorState = _this4.state.editorState;\n\n // Allow Ctrl/Cmd-Backspace when focus starts at the start of the composer (e.g select-all)\n // for some reason if slate sees you Ctrl-backspace and your anchor.offset=0 it just resets your focus\n // XXX: Doing this now seems to put slate into a broken state, and it didn't appear to be doing\n // what it claims to do on the old version of slate anyway...\n /*if (!editorState.isCollapsed && editorState.selection.anchor.offset === 0) {\n return change.delete();\n }*/\n\n if (_this4.state.isRichTextEnabled) {\n // let backspace exit lists\n var isList = _this4.hasBlock('list-item');\n\n if (isList && editorState.selection.anchor.offset == 0) {\n change.setBlocks(DEFAULT_NODE).unwrapBlock('bulleted-list').unwrapBlock('numbered-list');\n return change;\n } else if (editorState.selection.anchor.offset == 0 && editorState.isCollapsed) {\n // turn blocks back into paragraphs\n if (_this4.hasBlock('block-quote') || _this4.hasBlock('heading1') || _this4.hasBlock('heading2') || _this4.hasBlock('heading3') || _this4.hasBlock('heading4') || _this4.hasBlock('heading5') || _this4.hasBlock('heading6') || _this4.hasBlock('code')) {\n return change.setBlocks(DEFAULT_NODE);\n }\n\n // remove paragraphs entirely if they're nested\n var parent = editorState.document.getParent(editorState.anchorBlock.key);\n if (editorState.selection.anchor.offset == 0 && _this4.hasBlock('paragraph') && parent.nodes.size == 1 && parent.object !== 'document') {\n return change.replaceNodeByKey(editorState.anchorBlock.key, editorState.anchorText).moveToEndOfNode(parent).focus();\n }\n }\n }\n return;\n };\n\n this.handleKeyCommand = function (command) {\n if (command === 'toggle-mode') {\n _this4.enableRichtext(!_this4.state.isRichTextEnabled);\n return true;\n }\n\n var newState = null;\n\n // Draft handles rich text mode commands by default but we need to do it ourselves for Markdown.\n if (_this4.state.isRichTextEnabled) {\n var type = command;\n var editorState = _this4.state.editorState;\n\n var change = editorState.change();\n var _document = editorState.document;\n\n switch (type) {\n // list-blocks:\n case 'bulleted-list':\n case 'numbered-list':\n {\n // Handle the extra wrapping required for list buttons.\n var isList = _this4.hasBlock('list-item');\n var isType = editorState.blocks.some(function (block) {\n return !!_document.getClosest(block.key, function (parent) {\n return parent.type === type;\n });\n });\n\n if (isList && isType) {\n change.setBlocks(DEFAULT_NODE).unwrapBlock('bulleted-list').unwrapBlock('numbered-list');\n } else if (isList) {\n change.unwrapBlock(type === 'bulleted-list' ? 'numbered-list' : 'bulleted-list').wrapBlock(type);\n } else {\n change.setBlocks('list-item').wrapBlock(type);\n }\n }\n break;\n\n // simple blocks\n case 'paragraph':\n case 'block-quote':\n case 'heading1':\n case 'heading2':\n case 'heading3':\n case 'heading4':\n case 'heading5':\n case 'heading6':\n case 'list-item':\n case 'code':\n {\n var isActive = _this4.hasBlock(type);\n var _isList = _this4.hasBlock('list-item');\n\n if (_isList) {\n change.setBlocks(isActive ? DEFAULT_NODE : type).unwrapBlock('bulleted-list').unwrapBlock('numbered-list');\n } else {\n change.setBlocks(isActive ? DEFAULT_NODE : type);\n }\n }\n break;\n\n // marks:\n case 'bold':\n case 'italic':\n case 'inline-code':\n case 'underlined':\n case 'deleted':\n {\n change.toggleMark(type === 'inline-code' ? 'code' : type);\n }\n break;\n\n default:\n console.warn('ignoring unrecognised RTE command ' + type);\n return false;\n }\n\n _this4.onChange(change);\n\n return true;\n } else {\n /*\n const contentState = this.state.editorState.getCurrentContent();\n const multipleLinesSelected = RichText.hasMultiLineSelection(this.state.editorState);\n \n const selectionState = this.state.editorState.getSelection();\n const start = selectionState.getStartOffset();\n const end = selectionState.getEndOffset();\n \n // If multiple lines are selected or nothing is selected, insert a code block\n // instead of applying inline code formatting. This is an attempt to mimic what\n // happens in non-MD mode.\n const treatInlineCodeAsBlock = multipleLinesSelected || start === end;\n const textMdCodeBlock = (text) => `\\`\\`\\`\\n${text}\\n\\`\\`\\`\\n`;\n const modifyFn = {\n 'bold': (text) => `**${text}**`,\n 'italic': (text) => `*${text}*`,\n 'underline': (text) => `<u>${text}</u>`,\n 'strike': (text) => `<del>${text}</del>`,\n // (\"code\" is triggered by ctrl+j by draft-js by default)\n 'code': (text) => treatInlineCodeAsBlock ? textMdCodeBlock(text) : `\\`${text}\\``,\n 'code': textMdCodeBlock,\n 'blockquote': (text) => text.split('\\n').map((line) => `> ${line}\\n`).join('') + '\\n',\n 'unordered-list-item': (text) => text.split('\\n').map((line) => `\\n- ${line}`).join(''),\n 'ordered-list-item': (text) => text.split('\\n').map((line, i) => `\\n${i + 1}. ${line}`).join(''),\n }[command];\n \n const selectionAfterOffset = {\n 'bold': -2,\n 'italic': -1,\n 'underline': -4,\n 'strike': -6,\n 'code': treatInlineCodeAsBlock ? -5 : -1,\n 'code': -5,\n 'blockquote': -2,\n }[command];\n \n // Returns a function that collapses a selection to its end and moves it by offset\n const collapseAndOffsetSelection = (selection, offset) => {\n const key = selection.endKey();\n return new Range({\n anchorKey: key, anchor.offset: offset,\n focus.key: key, focus.offset: offset,\n });\n };\n \n if (modifyFn) {\n \n const previousSelection = this.state.editorState.getSelection();\n const newContentState = RichText.modifyText(contentState, previousSelection, modifyFn);\n newState = EditorState.push(\n this.state.editorState,\n newContentState,\n 'insert-characters',\n );\n \n let newSelection = newContentState.getSelectionAfter();\n // If the selection range is 0, move the cursor inside the formatted body\n if (previousSelection.getStartOffset() === previousSelection.getEndOffset() &&\n previousSelection.getStartKey() === previousSelection.getEndKey() &&\n selectionAfterOffset !== undefined\n ) {\n const selectedBlock = newContentState.getBlockForKey(previousSelection.getAnchorKey());\n const blockLength = selectedBlock.getText().length;\n const newOffset = blockLength + selectionAfterOffset;\n newSelection = collapseAndOffsetSelection(newSelection, newOffset);\n }\n \n newState = EditorState.forceSelection(newState, newSelection);\n }\n }\n \n if (newState != null) {\n this.setState({editorState: newState});\n return true;\n }\n */\n }\n return false;\n };\n\n this.onPaste = function (event, change, editor) {\n var transfer = (0, _slateReact.getEventTransfer)(event);\n\n switch (transfer.type) {\n case 'files':\n return _this4.props.onFilesPasted(transfer.files);\n case 'html':\n {\n if (_this4.state.isRichTextEnabled) {\n // FIXME: https://github.com/ianstormtaylor/slate/issues/1497 means\n // that we will silently discard nested blocks (e.g. nested lists) :(\n var fragment = _this4.html.deserialize(transfer.html);\n return change\n // XXX: this somehow makes Slate barf on undo and get too empty and break entirely\n // .setOperationFlag(\"skip\", false)\n // .setOperationFlag(\"merge\", false)\n .insertFragment(fragment.document);\n } else {\n // in MD mode we don't want the rich content pasted as the magic was annoying people so paste plain\n return change.withoutMerging(function () {\n change.insertText(transfer.text);\n });\n }\n }\n case 'text':\n // don't skip/merge so that multiple consecutive pastes can be undone individually\n return change.withoutMerging(function () {\n change.insertText(transfer.text);\n });\n }\n };\n\n this.handleReturn = function (ev, change) {\n if (ev.shiftKey) {\n return change.insertText('\\n');\n }\n\n var editorState = _this4.state.editorState;\n\n var lastBlock = editorState.blocks.last();\n if (['code', 'block-quote', 'list-item'].includes(lastBlock.type)) {\n var text = lastBlock.text;\n if (text === '') {\n // allow the user to cancel empty block by hitting return, useful in conjunction with below `inBlock`\n return change.setBlocks(DEFAULT_NODE).unwrapBlock('bulleted-list').unwrapBlock('numbered-list');\n }\n\n // TODO strip trailing lines from blockquotes/list entries\n // the below code seemingly works but doesn't account for edge cases like return with caret not at end\n /* const trailingNewlines = text.match(/\\n*$/);\n if (trailingNewlines && trailingNewlines[0]) {\n remove trailing newlines at the end of this block before making a new one\n return change.deleteBackward(trailingNewlines[0].length);\n }*/\n\n return;\n }\n\n var contentText = void 0;\n var contentHTML = void 0;\n\n // only look for commands if the first block contains simple unformatted text\n // i.e. no pills or rich-text formatting and begins with a /.\n var cmd = void 0,\n commandText = void 0;\n var firstChild = editorState.document.nodes.get(0);\n var firstGrandChild = firstChild && firstChild.nodes.get(0);\n if (firstChild && firstGrandChild && firstChild.object === 'block' && firstGrandChild.object === 'text' && firstGrandChild.text[0] === '/') {\n commandText = _this4.plainWithIdPills.serialize(editorState);\n cmd = (0, _SlashCommands.processCommandInput)(_this4.props.room.roomId, commandText);\n }\n\n if (cmd) {\n if (!cmd.error) {\n _this4.historyManager.save(editorState, _this4.state.isRichTextEnabled ? 'rich' : 'markdown');\n _this4.setState({\n editorState: _this4.createEditorState()\n }, function () {\n _this4._editor.focus();\n });\n }\n if (cmd.promise) {\n cmd.promise.then(function () {\n console.log(\"Command success.\");\n }, function (err) {\n console.error(\"Command failure: %s\", err);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Server error', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Server error\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Server unavailable, overloaded, or something else went wrong.\")\n });\n });\n } else if (cmd.error) {\n console.error(cmd.error);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n // TODO possibly track which command they ran (not its Arguments) here\n _Modal2.default.createTrackedDialog('Command error', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Command error\"),\n description: cmd.error\n });\n }\n return true;\n }\n\n var replyingToEv = _RoomViewStore2.default.getQuotingEvent();\n var mustSendHTML = Boolean(replyingToEv);\n\n if (_this4.state.isRichTextEnabled) {\n // We should only send HTML if any block is styled or contains inline style\n var shouldSendHTML = false;\n\n if (mustSendHTML) shouldSendHTML = true;\n\n if (!shouldSendHTML) {\n shouldSendHTML = !!editorState.document.findDescendant(function (node) {\n // N.B. node.getMarks() might be private?\n return node.object === 'block' && node.type !== 'paragraph' || node.object === 'inline' || node.object === 'text' && node.getMarks().size > 0;\n });\n }\n\n contentText = _this4.plainWithPlainPills.serialize(editorState);\n if (contentText === '') return true;\n\n if (shouldSendHTML) {\n contentHTML = HtmlUtils.processHtmlForSending(_this4.html.serialize(editorState));\n }\n } else {\n var sourceWithPills = _this4.plainWithMdPills.serialize(editorState);\n if (sourceWithPills === '') return true;\n\n var mdWithPills = new _Markdown2.default(sourceWithPills);\n\n // if contains no HTML and we're not quoting (needing HTML)\n if (mdWithPills.isPlainText() && !mustSendHTML) {\n // N.B. toPlainText is only usable here because we know that the MD\n // didn't contain any formatting in the first place...\n contentText = mdWithPills.toPlaintext();\n } else {\n // to avoid ugliness on clients which ignore the HTML body we don't\n // send pills in the plaintext body.\n contentText = _this4.plainWithPlainPills.serialize(editorState);\n contentHTML = mdWithPills.toHTML();\n }\n }\n\n var sendHtmlFn = _matrixJsSdk.ContentHelpers.makeHtmlMessage;\n var sendTextFn = _matrixJsSdk.ContentHelpers.makeTextMessage;\n\n _this4.historyManager.save(editorState, _this4.state.isRichTextEnabled ? 'rich' : 'markdown');\n\n if (commandText && commandText.startsWith('/me')) {\n if (replyingToEv) {\n var _ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Emote Reply Fail', '', _ErrorDialog, {\n title: (0, _languageHandler._t)(\"Unable to reply\"),\n description: (0, _languageHandler._t)(\"At this time it is not possible to reply with an emote.\")\n });\n return false;\n }\n\n contentText = contentText.substring(4);\n // bit of a hack, but the alternative would be quite complicated\n if (contentHTML) contentHTML = contentHTML.replace(/\\/me ?/, '');\n sendHtmlFn = _matrixJsSdk.ContentHelpers.makeHtmlEmote;\n sendTextFn = _matrixJsSdk.ContentHelpers.makeEmoteMessage;\n }\n\n var content = contentHTML ? sendHtmlFn(contentText, contentHTML) : sendTextFn(contentText);\n\n if (replyingToEv) {\n var replyContent = _ReplyThread2.default.makeReplyMixIn(replyingToEv);\n content = (0, _assign2.default)(replyContent, content);\n\n // Part of Replies fallback support - prepend the text we're sending\n // with the text we're replying to\n var nestedReply = _ReplyThread2.default.getNestedReplyText(replyingToEv);\n if (nestedReply) {\n if (content.formatted_body) {\n content.formatted_body = nestedReply.html + content.formatted_body;\n }\n content.body = nestedReply.body + content.body;\n }\n\n // Clear reply_to_event as we put the message into the queue\n // if the send fails, retry will handle resending.\n _dispatcher2.default.dispatch({\n action: 'reply_to_event',\n event: null\n });\n }\n\n _this4.client.sendMessage(_this4.props.room.roomId, content).then(function (res) {\n _dispatcher2.default.dispatch({\n action: 'message_sent'\n });\n }).catch(function (e) {\n onSendMessageFailed(e, _this4.props.room);\n });\n\n _this4.setState({\n editorState: _this4.createEditorState()\n }, function () {\n _this4._editor.focus();\n });\n\n return true;\n };\n\n this.onVerticalArrow = function (e, up) {\n if (e.ctrlKey || e.shiftKey || e.altKey || e.metaKey) {\n return;\n }\n\n // Select history only if we are not currently auto-completing\n if (_this4.autocomplete.state.completionList.length === 0) {\n var selection = _this4.state.editorState.selection;\n\n // selection must be collapsed\n if (!selection.isCollapsed) return;\n var _document2 = _this4.state.editorState.document;\n\n // and we must be at the edge of the document (up=start, down=end)\n if (up) {\n if (!selection.anchor.isAtStartOfNode(_document2)) return;\n } else {\n if (!selection.anchor.isAtEndOfNode(_document2)) return;\n }\n\n var selected = _this4.selectHistory(up);\n if (selected) {\n // We're selecting history, so prevent the key event from doing anything else\n e.preventDefault();\n }\n } else {\n _this4.moveAutocompleteSelection(up);\n e.preventDefault();\n }\n };\n\n this.selectHistory = function () {\n var _ref = (0, _bluebird.method)(function (up) {\n var delta = up ? -1 : 1;\n\n // True if we are not currently selecting history, but composing a message\n if (_this4.historyManager.currentIndex === _this4.historyManager.history.length) {\n // We can't go any further - there isn't any more history, so nop.\n if (!up) {\n return;\n }\n _this4.setState({\n currentlyComposedEditorState: _this4.state.editorState\n });\n } else if (_this4.historyManager.currentIndex + delta === _this4.historyManager.history.length) {\n // True when we return to the message being composed currently\n _this4.setState({\n editorState: _this4.state.currentlyComposedEditorState\n });\n _this4.historyManager.currentIndex = _this4.historyManager.history.length;\n return;\n }\n\n var editorState = void 0;\n var historyItem = _this4.historyManager.getItem(delta);\n if (!historyItem) return;\n\n if (historyItem.format === 'rich' && !_this4.state.isRichTextEnabled) {\n editorState = _this4.richToMdEditorState(historyItem.value);\n } else if (historyItem.format === 'markdown' && _this4.state.isRichTextEnabled) {\n editorState = _this4.mdToRichEditorState(historyItem.value);\n } else {\n editorState = historyItem.value;\n }\n\n // Move selection to the end of the selected history\n var change = editorState.change().moveToEndOfNode(editorState.document);\n\n // We don't call this.onChange(change) now, as fixups on stuff like emoji\n // should already have been done and persisted in the history.\n editorState = change.value;\n\n _this4.suppressAutoComplete = true;\n\n _this4.setState({ editorState: editorState }, function () {\n _this4._editor.focus();\n });\n return true;\n });\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.onTab = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(e) {\n var completionCount;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this4.setState({\n someCompletions: null\n });\n e.preventDefault();\n\n if (!(_this4.autocomplete.state.completionList.length === 0)) {\n _context.next = 11;\n break;\n }\n\n _context.next = 5;\n return (0, _bluebird.resolve)(_this4.autocomplete.forceComplete());\n\n case 5:\n completionCount = _context.sent;\n\n _this4.setState({\n someCompletions: completionCount > 0\n });\n // Select the first item by moving \"down\"\n _context.next = 9;\n return (0, _bluebird.resolve)(_this4.moveAutocompleteSelection(false));\n\n case 9:\n _context.next = 13;\n break;\n\n case 11:\n _context.next = 13;\n return (0, _bluebird.resolve)(_this4.moveAutocompleteSelection(e.shiftKey));\n\n case 13:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this4);\n }));\n\n return function (_x2) {\n return _ref2.apply(this, arguments);\n };\n }();\n\n this.moveAutocompleteSelection = function (up) {\n up ? _this4.autocomplete.onUpArrow() : _this4.autocomplete.onDownArrow();\n };\n\n this.onEscape = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(e) {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n e.preventDefault();\n if (_this4.autocomplete) {\n _this4.autocomplete.onEscape(e);\n }\n _context2.next = 4;\n return (0, _bluebird.resolve)(_this4.setDisplayedCompletion(null));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, _this4);\n }));\n\n return function (_x3) {\n return _ref3.apply(this, arguments);\n };\n }();\n\n this.onAutocompleteConfirm = function (displayedCompletion) {\n _this4.focusComposer();\n // XXX: this fails if the composer isn't focused so focus it and delay the completion until next tick\n (0, _setImmediate3.default)(function () {\n _this4.setDisplayedCompletion(displayedCompletion);\n });\n };\n\n this.setDisplayedCompletion = function () {\n var _ref4 = (0, _bluebird.method)(function (displayedCompletion) {\n var activeEditorState = _this4.state.originalEditorState || _this4.state.editorState;\n\n if (displayedCompletion == null) {\n if (_this4.state.originalEditorState) {\n var _editorState = _this4.state.originalEditorState;\n _this4.setState({ editorState: _editorState });\n }\n return false;\n }\n\n var _displayedCompletion$ = displayedCompletion.range,\n range = _displayedCompletion$ === undefined ? null : _displayedCompletion$,\n _displayedCompletion$2 = displayedCompletion.completion,\n completion = _displayedCompletion$2 === undefined ? '' : _displayedCompletion$2,\n _displayedCompletion$3 = displayedCompletion.completionId,\n completionId = _displayedCompletion$3 === undefined ? '' : _displayedCompletion$3,\n _displayedCompletion$4 = displayedCompletion.href,\n href = _displayedCompletion$4 === undefined ? null : _displayedCompletion$4,\n _displayedCompletion$5 = displayedCompletion.suffix,\n suffix = _displayedCompletion$5 === undefined ? '' : _displayedCompletion$5;\n\n\n var inline = void 0;\n if (href) {\n inline = _slate.Inline.create({\n type: 'pill',\n data: { completion: completion, completionId: completionId, href: href }\n });\n } else if (completion === '@room') {\n inline = _slate.Inline.create({\n type: 'pill',\n data: { completion: completion, completionId: completionId }\n });\n }\n\n var editorState = activeEditorState;\n\n if (range) {\n var _change2 = editorState.change().moveToAnchor().moveAnchorTo(range.start).moveFocusTo(range.end).focus();\n editorState = _change2.value;\n }\n\n var change = void 0;\n if (inline) {\n change = editorState.change().insertInlineAtRange(editorState.selection, inline).insertText(suffix).focus();\n } else {\n change = editorState.change().insertTextAtRange(editorState.selection, completion).insertText(suffix).focus();\n }\n // for good hygiene, keep editorState updated to track the result of the change\n // even though we don't do anything subsequently with it\n editorState = change.value;\n\n _this4.onChange(change, activeEditorState);\n\n return true;\n });\n\n return function (_x4) {\n return _ref4.apply(this, arguments);\n };\n }();\n\n this.renderNode = function (props) {\n var attributes = props.attributes,\n children = props.children,\n node = props.node,\n isSelected = props.isSelected;\n\n\n switch (node.type) {\n case 'paragraph':\n return _react2.default.createElement(\n 'p',\n attributes,\n children\n );\n case 'block-quote':\n return _react2.default.createElement(\n 'blockquote',\n attributes,\n children\n );\n case 'bulleted-list':\n return _react2.default.createElement(\n 'ul',\n attributes,\n children\n );\n case 'heading1':\n return _react2.default.createElement(\n 'h1',\n attributes,\n children\n );\n case 'heading2':\n return _react2.default.createElement(\n 'h2',\n attributes,\n children\n );\n case 'heading3':\n return _react2.default.createElement(\n 'h3',\n attributes,\n children\n );\n case 'heading4':\n return _react2.default.createElement(\n 'h4',\n attributes,\n children\n );\n case 'heading5':\n return _react2.default.createElement(\n 'h5',\n attributes,\n children\n );\n case 'heading6':\n return _react2.default.createElement(\n 'h6',\n attributes,\n children\n );\n case 'list-item':\n return _react2.default.createElement(\n 'li',\n attributes,\n children\n );\n case 'numbered-list':\n return _react2.default.createElement(\n 'ol',\n attributes,\n children\n );\n case 'code':\n return _react2.default.createElement(\n 'pre',\n attributes,\n children\n );\n case 'link':\n return _react2.default.createElement(\n 'a',\n (0, _extends3.default)({}, attributes, { href: node.data.get('href') }),\n children\n );\n case 'pill':\n {\n var data = node.data;\n\n var url = data.get('href');\n var completion = data.get('completion');\n\n var shouldShowPillAvatar = !_SettingsStore2.default.getValue(\"Pill.shouldHidePillAvatar\");\n var Pill = _index2.default.getComponent('elements.Pill');\n\n if (completion === '@room') {\n return _react2.default.createElement(Pill, (0, _extends3.default)({\n type: Pill.TYPE_AT_ROOM_MENTION,\n room: _this4.props.room,\n shouldShowPillAvatar: shouldShowPillAvatar,\n isSelected: isSelected\n }, attributes));\n } else if (Pill.isPillUrl(url)) {\n return _react2.default.createElement(Pill, (0, _extends3.default)({\n url: url,\n room: _this4.props.room,\n shouldShowPillAvatar: shouldShowPillAvatar,\n isSelected: isSelected\n }, attributes));\n } else {\n var text = node.text;\n\n return _react2.default.createElement(\n 'a',\n (0, _extends3.default)({ href: url }, props.attributes),\n text\n );\n }\n }\n case 'emoji':\n {\n var _data = node.data;\n\n var emojiUnicode = _data.get('emojiUnicode');\n var uri = RichText.unicodeToEmojiUri(emojiUnicode);\n var shortname = (0, _emojione.toShort)(emojiUnicode);\n var className = (0, _classnames2.default)('mx_emojione', {\n mx_emojione_selected: isSelected\n });\n var style = {};\n if (props.selected) style.border = '1px solid blue';\n return _react2.default.createElement('img', { className: className, src: uri, title: shortname, alt: emojiUnicode, style: style });\n }\n }\n };\n\n this.renderMark = function (props) {\n var children = props.children,\n mark = props.mark,\n attributes = props.attributes;\n\n switch (mark.type) {\n case 'bold':\n return _react2.default.createElement(\n 'strong',\n attributes,\n children\n );\n case 'italic':\n return _react2.default.createElement(\n 'em',\n attributes,\n children\n );\n case 'code':\n return _react2.default.createElement(\n 'code',\n attributes,\n children\n );\n case 'underlined':\n return _react2.default.createElement(\n 'u',\n attributes,\n children\n );\n case 'deleted':\n return _react2.default.createElement(\n 'del',\n attributes,\n children\n );\n }\n };\n\n this.onFormatButtonClicked = function (name, e) {\n e.preventDefault();\n\n // XXX: horrible evil hack to ensure the editor is focused so the act\n // of focusing it doesn't then cancel the format button being pressed\n // FIXME: can we just tell handleKeyCommand's change to invoke .focus()?\n if (document.activeElement && document.activeElement.className !== 'mx_MessageComposer_editor') {\n _this4._editor.focus();\n setTimeout(function () {\n _this4.handleKeyCommand(name);\n }, 500); // can't find any callback to hook this to. onFocus and onChange and willComponentUpdate fire too early.\n return;\n }\n\n _this4.handleKeyCommand(name);\n };\n\n this.onMarkdownToggleClicked = function (e) {\n e.preventDefault(); // don't steal focus from the editor!\n _this4.handleKeyCommand('toggle-mode');\n };\n\n this.focusComposer = function () {\n _this4._editor.focus();\n };\n};\n\nexports.default = MessageComposerInput;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MessageComposerInput.js.map","\"use strict\";\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nfunction setup(env) {\n createDebug.debug = createDebug;\n createDebug.default = createDebug;\n createDebug.coerce = coerce;\n createDebug.disable = disable;\n createDebug.enable = enable;\n createDebug.enabled = enabled;\n createDebug.humanize = require('ms');\n Object.keys(env).forEach(function (key) {\n createDebug[key] = env[key];\n });\n /**\n * Active `debug` instances.\n */\n\n createDebug.instances = [];\n /**\n * The currently active debug mode names, and names to skip.\n */\n\n createDebug.names = [];\n createDebug.skips = [];\n /**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\n createDebug.formatters = {};\n /**\n * Selects a color for a debug namespace\n * @param {String} namespace The namespace string for the for the debug instance to be colored\n * @return {Number|String} An ANSI color code for the given namespace\n * @api private\n */\n\n function selectColor(namespace) {\n var hash = 0;\n\n for (var i = 0; i < namespace.length; i++) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n }\n\n createDebug.selectColor = selectColor;\n /**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\n function createDebug(namespace) {\n var prevTime;\n\n function debug() {\n // Disabled?\n if (!debug.enabled) {\n return;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var self = debug; // Set `diff` timestamp\n\n var curr = Number(new Date());\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n args[0] = createDebug.coerce(args[0]);\n\n if (typeof args[0] !== 'string') {\n // Anything else let's inspect with %O\n args.unshift('%O');\n } // Apply any `formatters` transformations\n\n\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n // If we encounter an escaped % then don't increase the array index\n if (match === '%%') {\n return match;\n }\n\n index++;\n var formatter = createDebug.formatters[format];\n\n if (typeof formatter === 'function') {\n var val = args[index];\n match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format`\n\n args.splice(index, 1);\n index--;\n }\n\n return match;\n }); // Apply env-specific formatting (colors, etc.)\n\n createDebug.formatArgs.call(self, args);\n var logFn = self.log || createDebug.log;\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = createDebug.enabled(namespace);\n debug.useColors = createDebug.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n debug.extend = extend; // Debug.formatArgs = formatArgs;\n // debug.rawLog = rawLog;\n // env-specific initialization logic for debug instances\n\n if (typeof createDebug.init === 'function') {\n createDebug.init(debug);\n }\n\n createDebug.instances.push(debug);\n return debug;\n }\n\n function destroy() {\n var index = createDebug.instances.indexOf(this);\n\n if (index !== -1) {\n createDebug.instances.splice(index, 1);\n return true;\n }\n\n return false;\n }\n\n function extend(namespace, delimiter) {\n return createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n }\n /**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\n\n function enable(namespaces) {\n createDebug.save(namespaces);\n createDebug.names = [];\n createDebug.skips = [];\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue;\n }\n\n namespaces = split[i].replace(/\\*/g, '.*?');\n\n if (namespaces[0] === '-') {\n createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n createDebug.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < createDebug.instances.length; i++) {\n var instance = createDebug.instances[i];\n instance.enabled = createDebug.enabled(instance.namespace);\n }\n }\n /**\n * Disable debug output.\n *\n * @api public\n */\n\n\n function disable() {\n createDebug.enable('');\n }\n /**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\n\n function enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n\n var i;\n var len;\n\n for (i = 0, len = createDebug.skips.length; i < len; i++) {\n if (createDebug.skips[i].test(name)) {\n return false;\n }\n }\n\n for (i = 0, len = createDebug.names.length; i < len; i++) {\n if (createDebug.names[i].test(name)) {\n return true;\n }\n }\n\n return false;\n }\n /**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\n\n function coerce(val) {\n if (val instanceof Error) {\n return val.stack || val.message;\n }\n\n return val;\n }\n\n createDebug.enable(createDebug.load());\n return createDebug;\n}\n\nmodule.exports = setup;\n\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\-?\\d?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","/*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isObject(val) {\n return val != null && typeof val === 'object' && Array.isArray(val) === false;\n};\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n\n return result;\n }\n\n if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n\n return result;\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var basePickBy = require('./_basePickBy'),\n hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","\"use strict\";\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nfunction setup(env) {\n createDebug.debug = createDebug;\n createDebug.default = createDebug;\n createDebug.coerce = coerce;\n createDebug.disable = disable;\n createDebug.enable = enable;\n createDebug.enabled = enabled;\n createDebug.humanize = require('ms');\n Object.keys(env).forEach(function (key) {\n createDebug[key] = env[key];\n });\n /**\n * Active `debug` instances.\n */\n\n createDebug.instances = [];\n /**\n * The currently active debug mode names, and names to skip.\n */\n\n createDebug.names = [];\n createDebug.skips = [];\n /**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\n createDebug.formatters = {};\n /**\n * Selects a color for a debug namespace\n * @param {String} namespace The namespace string for the for the debug instance to be colored\n * @return {Number|String} An ANSI color code for the given namespace\n * @api private\n */\n\n function selectColor(namespace) {\n var hash = 0;\n\n for (var i = 0; i < namespace.length; i++) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n }\n\n createDebug.selectColor = selectColor;\n /**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\n function createDebug(namespace) {\n var prevTime;\n\n function debug() {\n // Disabled?\n if (!debug.enabled) {\n return;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var self = debug; // Set `diff` timestamp\n\n var curr = Number(new Date());\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n args[0] = createDebug.coerce(args[0]);\n\n if (typeof args[0] !== 'string') {\n // Anything else let's inspect with %O\n args.unshift('%O');\n } // Apply any `formatters` transformations\n\n\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n // If we encounter an escaped % then don't increase the array index\n if (match === '%%') {\n return match;\n }\n\n index++;\n var formatter = createDebug.formatters[format];\n\n if (typeof formatter === 'function') {\n var val = args[index];\n match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format`\n\n args.splice(index, 1);\n index--;\n }\n\n return match;\n }); // Apply env-specific formatting (colors, etc.)\n\n createDebug.formatArgs.call(self, args);\n var logFn = self.log || createDebug.log;\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = createDebug.enabled(namespace);\n debug.useColors = createDebug.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n debug.extend = extend; // Debug.formatArgs = formatArgs;\n // debug.rawLog = rawLog;\n // env-specific initialization logic for debug instances\n\n if (typeof createDebug.init === 'function') {\n createDebug.init(debug);\n }\n\n createDebug.instances.push(debug);\n return debug;\n }\n\n function destroy() {\n var index = createDebug.instances.indexOf(this);\n\n if (index !== -1) {\n createDebug.instances.splice(index, 1);\n return true;\n }\n\n return false;\n }\n\n function extend(namespace, delimiter) {\n return createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n }\n /**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\n\n function enable(namespaces) {\n createDebug.save(namespaces);\n createDebug.names = [];\n createDebug.skips = [];\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue;\n }\n\n namespaces = split[i].replace(/\\*/g, '.*?');\n\n if (namespaces[0] === '-') {\n createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n createDebug.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < createDebug.instances.length; i++) {\n var instance = createDebug.instances[i];\n instance.enabled = createDebug.enabled(instance.namespace);\n }\n }\n /**\n * Disable debug output.\n *\n * @api public\n */\n\n\n function disable() {\n createDebug.enable('');\n }\n /**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\n\n function enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n\n var i;\n var len;\n\n for (i = 0, len = createDebug.skips.length; i < len; i++) {\n if (createDebug.skips[i].test(name)) {\n return false;\n }\n }\n\n for (i = 0, len = createDebug.names.length; i < len; i++) {\n if (createDebug.names[i].test(name)) {\n return true;\n }\n }\n\n return false;\n }\n /**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\n\n function coerce(val) {\n if (val instanceof Error) {\n return val.stack || val.message;\n }\n\n return val;\n }\n\n createDebug.enable(createDebug.load());\n return createDebug;\n}\n\nmodule.exports = setup;\n\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\-?\\d?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * Module exports.\n */\n\nmodule.exports = getDocument;\n\n// defined by w3c\nvar DOCUMENT_NODE = 9;\n\n/**\n * Returns `true` if `w` is a Document object, or `false` otherwise.\n *\n * @param {?} d - Document object, maybe\n * @return {Boolean}\n * @private\n */\n\nfunction isDocument (d) {\n return d && d.nodeType === DOCUMENT_NODE;\n}\n\n/**\n * Returns the `document` object associated with the given `node`, which may be\n * a DOM element, the Window object, a Selection, a Range. Basically any DOM\n * object that references the Document in some way, this function will find it.\n *\n * @param {Mixed} node - DOM node, selection, or range in which to find the `document` object\n * @return {Document} the `document` object associated with `node`\n * @public\n */\n\nfunction getDocument(node) {\n if (isDocument(node)) {\n return node;\n\n } else if (isDocument(node.ownerDocument)) {\n return node.ownerDocument;\n\n } else if (isDocument(node.document)) {\n return node.document;\n\n } else if (node.parentNode) {\n return getDocument(node.parentNode);\n\n // Range support\n } else if (node.commonAncestorContainer) {\n return getDocument(node.commonAncestorContainer);\n\n } else if (node.startContainer) {\n return getDocument(node.startContainer);\n\n // Selection support\n } else if (node.anchorNode) {\n return getDocument(node.anchorNode);\n }\n}\n","// this is a browser-only module. There is a non-browser equivalent in the same\n// directory. This is done using a `package.json` browser field.\n// old-IE fallback logic: http://stackoverflow.com/a/10260692\nmodule.exports = !!document.attachEvent && window !== document.parentWindow;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","import React from 'react';\nimport { renderToStaticMarkup } from 'react-dom/server';\nimport typeOf from 'type-of';\nimport { Node, Value } from 'slate';\nimport { Record } from 'immutable';\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n\n\n\n\n\n\n\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n/**\n * String.\n *\n * @type {String}\n */\n\nvar String = new Record({\n object: 'string',\n text: ''\n});\n\n/**\n * A rule to (de)serialize text nodes. This is automatically added to the HTML\n * serializer so that users don't have to worry about text-level serialization.\n *\n * @type {Object}\n */\n\nvar TEXT_RULE = {\n deserialize: function deserialize(el) {\n if (el.tagName && el.tagName.toLowerCase() === 'br') {\n return {\n object: 'text',\n leaves: [{\n object: 'leaf',\n text: '\\n'\n }]\n };\n }\n\n if (el.nodeName == '#text') {\n if (el.nodeValue && el.nodeValue.match(/<!--.*?-->/)) return;\n\n return {\n object: 'text',\n leaves: [{\n object: 'leaf',\n text: el.nodeValue\n }]\n };\n }\n },\n serialize: function serialize(obj, children) {\n if (obj.object === 'string') {\n return children.split('\\n').reduce(function (array, text, i) {\n if (i != 0) array.push(React.createElement('br', { key: i }));\n array.push(text);\n return array;\n }, []);\n }\n }\n};\n\n/**\n * A default `parseHtml` function that returns the `<body>` using `DOMParser`.\n *\n * @param {String} html\n * @return {Object}\n */\n\nfunction defaultParseHtml(html) {\n if (typeof DOMParser === 'undefined') {\n throw new Error('The native `DOMParser` global which the `Html` serializer uses by default is not present in this environment. You must supply the `options.parseHtml` function instead.');\n }\n\n var parsed = new DOMParser().parseFromString(html, 'text/html');\n var body = parsed.body;\n // COMPAT: in IE 11 body is null if html is an empty string\n\n return body || window.document.createElement('body');\n}\n\n/**\n * HTML serializer.\n *\n * @type {Html}\n */\n\nvar Html =\n/**\n * Create a new serializer with `rules`.\n *\n * @param {Object} options\n * @property {Array} rules\n * @property {String|Object|Block} defaultBlock\n * @property {Function} parseHtml\n */\n\nfunction Html() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, Html);\n\n _initialiseProps.call(this);\n\n var _options$defaultBlock = options.defaultBlock,\n defaultBlock = _options$defaultBlock === undefined ? 'paragraph' : _options$defaultBlock,\n _options$parseHtml = options.parseHtml,\n parseHtml = _options$parseHtml === undefined ? defaultParseHtml : _options$parseHtml,\n _options$rules = options.rules,\n rules = _options$rules === undefined ? [] : _options$rules;\n\n\n defaultBlock = Node.createProperties(defaultBlock);\n\n this.rules = [].concat(toConsumableArray(rules), [TEXT_RULE]);\n this.defaultBlock = defaultBlock;\n this.parseHtml = parseHtml;\n};\n\n/**\n * Add a unique key to a React `element`.\n *\n * @param {Element} element\n * @return {Element}\n */\n\nvar _initialiseProps = function _initialiseProps() {\n var _this = this;\n\n this.deserialize = function (html) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$toJSON = options.toJSON,\n toJSON = _options$toJSON === undefined ? false : _options$toJSON;\n var defaultBlock = _this.defaultBlock,\n parseHtml = _this.parseHtml;\n\n var fragment = parseHtml(html);\n var children = Array.from(fragment.childNodes);\n var nodes = _this.deserializeElements(children);\n\n // COMPAT: ensure that all top-level inline nodes are wrapped into a block.\n nodes = nodes.reduce(function (memo, node, i, original) {\n if (node.object == 'block') {\n memo.push(node);\n return memo;\n }\n\n if (i > 0 && original[i - 1].object != 'block') {\n var _block = memo[memo.length - 1];\n _block.nodes.push(node);\n return memo;\n }\n\n var block = _extends({\n object: 'block',\n data: {},\n isVoid: false\n }, defaultBlock, {\n nodes: [node]\n });\n\n memo.push(block);\n return memo;\n }, []);\n\n // TODO: pretty sure this is no longer needed.\n if (nodes.length == 0) {\n nodes = [_extends({\n object: 'block',\n data: {},\n isVoid: false\n }, defaultBlock, {\n nodes: [{\n object: 'text',\n leaves: [{\n object: 'leaf',\n text: '',\n marks: []\n }]\n }]\n })];\n }\n\n var json = {\n object: 'value',\n document: {\n object: 'document',\n data: {},\n nodes: nodes\n }\n };\n\n var ret = toJSON ? json : Value.fromJSON(json);\n return ret;\n };\n\n this.deserializeElements = function () {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var nodes = [];\n\n elements.filter(_this.cruftNewline).forEach(function (element) {\n var node = _this.deserializeElement(element);\n\n switch (typeOf(node)) {\n case 'array':\n nodes = nodes.concat(node);\n break;\n case 'object':\n nodes.push(node);\n break;\n }\n });\n\n return nodes;\n };\n\n this.deserializeElement = function (element) {\n var node = void 0;\n\n if (!element.tagName) {\n element.tagName = '';\n }\n\n var next = function next(elements) {\n if (Object.prototype.toString.call(elements) == '[object NodeList]') {\n elements = Array.from(elements);\n }\n\n switch (typeOf(elements)) {\n case 'array':\n return _this.deserializeElements(elements);\n case 'object':\n return _this.deserializeElement(elements);\n case 'null':\n case 'undefined':\n return;\n default:\n throw new Error('The `next` argument was called with invalid children: \"' + elements + '\".');\n }\n };\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = _this.rules[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var rule = _step.value;\n\n if (!rule.deserialize) continue;\n var ret = rule.deserialize(element, next);\n var type = typeOf(ret);\n\n if (type != 'array' && type != 'object' && type != 'null' && type != 'undefined') {\n throw new Error('A rule returned an invalid deserialized representation: \"' + node + '\".');\n }\n\n if (ret === undefined) {\n continue;\n } else if (ret === null) {\n return null;\n } else if (ret.object == 'mark') {\n node = _this.deserializeMark(ret);\n } else {\n node = ret;\n }\n\n break;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return node || next(element.childNodes);\n };\n\n this.deserializeMark = function (mark) {\n var type = mark.type,\n data = mark.data;\n\n\n var applyMark = function applyMark(node) {\n if (node.object == 'mark') {\n return _this.deserializeMark(node);\n } else if (node.object == 'text') {\n node.leaves = node.leaves.map(function (leaf) {\n leaf.marks = leaf.marks || [];\n leaf.marks.push({ type: type, data: data });\n return leaf;\n });\n } else if (node.nodes) {\n node.nodes = node.nodes.map(applyMark);\n }\n\n return node;\n };\n\n return mark.nodes.reduce(function (nodes, node) {\n var ret = applyMark(node);\n if (Array.isArray(ret)) return nodes.concat(ret);\n nodes.push(ret);\n return nodes;\n }, []);\n };\n\n this.serialize = function (value) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var document = value.document;\n\n var elements = document.nodes.map(_this.serializeNode).filter(function (el) {\n return el;\n });\n if (options.render === false) return elements;\n\n var html = renderToStaticMarkup(React.createElement(\n 'body',\n null,\n elements\n ));\n var inner = html.slice(6, -7);\n return inner;\n };\n\n this.serializeNode = function (node) {\n if (node.object === 'text') {\n var leaves = node.getLeaves();\n return leaves.map(_this.serializeLeaf);\n }\n\n var children = node.nodes.map(_this.serializeNode);\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = _this.rules[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var rule = _step2.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(node, children);\n if (ret === null) return;\n if (ret) return addKey(ret);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n throw new Error('No serializer defined for node of type \"' + node.type + '\".');\n };\n\n this.serializeLeaf = function (leaf) {\n var string = new String({ text: leaf.text });\n var text = _this.serializeString(string);\n\n return leaf.marks.reduce(function (children, mark) {\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = _this.rules[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var rule = _step3.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(mark, children);\n if (ret === null) return;\n if (ret) return addKey(ret);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n throw new Error('No serializer defined for mark of type \"' + mark.type + '\".');\n }, text);\n };\n\n this.serializeString = function (string) {\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = _this.rules[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var rule = _step4.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(string, string.text);\n if (ret) return ret;\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n };\n\n this.cruftNewline = function (element) {\n return !(element.nodeName === '#text' && element.nodeValue == '\\n');\n };\n};\n\nvar key = 0;\n\nfunction addKey(element) {\n return React.cloneElement(element, { key: key++ });\n}\n\nexport default Html;\n//# sourceMappingURL=slate-html-serializer.es.js.map\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDefaultInjection = require('./ReactDefaultInjection');\nvar ReactServerRendering = require('./ReactServerRendering');\nvar ReactVersion = require('./ReactVersion');\n\nReactDefaultInjection.inject();\n\nvar ReactDOMServer = {\n renderToString: ReactServerRendering.renderToString,\n renderToStaticMarkup: ReactServerRendering.renderToStaticMarkup,\n version: ReactVersion\n};\n\nmodule.exports = ReactDOMServer;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar React = require('react/lib/React');\nvar ReactDOMContainerInfo = require('./ReactDOMContainerInfo');\nvar ReactDefaultBatchingStrategy = require('./ReactDefaultBatchingStrategy');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMarkupChecksum = require('./ReactMarkupChecksum');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactServerBatchingStrategy = require('./ReactServerBatchingStrategy');\nvar ReactServerRenderingTransaction = require('./ReactServerRenderingTransaction');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar invariant = require('fbjs/lib/invariant');\n\nvar pendingTransactions = 0;\n\n/**\n * @param {ReactElement} element\n * @return {string} the HTML markup\n */\nfunction renderToStringImpl(element, makeStaticMarkup) {\n var transaction;\n try {\n ReactUpdates.injection.injectBatchingStrategy(ReactServerBatchingStrategy);\n\n transaction = ReactServerRenderingTransaction.getPooled(makeStaticMarkup);\n\n pendingTransactions++;\n\n return transaction.perform(function () {\n var componentInstance = instantiateReactComponent(element, true);\n var markup = ReactReconciler.mountComponent(componentInstance, transaction, null, ReactDOMContainerInfo(), emptyObject, 0 /* parentDebugID */\n );\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onUnmountComponent(componentInstance._debugID);\n }\n if (!makeStaticMarkup) {\n markup = ReactMarkupChecksum.addChecksumToMarkup(markup);\n }\n return markup;\n }, null);\n } finally {\n pendingTransactions--;\n ReactServerRenderingTransaction.release(transaction);\n // Revert to the DOM batching strategy since these two renderers\n // currently share these stateful modules.\n if (!pendingTransactions) {\n ReactUpdates.injection.injectBatchingStrategy(ReactDefaultBatchingStrategy);\n }\n }\n}\n\n/**\n * Render a ReactElement to its initial HTML. This should only be used on the\n * server.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdomserver.rendertostring\n */\nfunction renderToString(element) {\n !React.isValidElement(element) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'renderToString(): You must pass a valid ReactElement.') : _prodInvariant('46') : void 0;\n return renderToStringImpl(element, false);\n}\n\n/**\n * Similar to renderToString, except this doesn't create extra DOM attributes\n * such as data-react-id that React uses internally.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdomserver.rendertostaticmarkup\n */\nfunction renderToStaticMarkup(element) {\n !React.isValidElement(element) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'renderToStaticMarkup(): You must pass a valid ReactElement.') : _prodInvariant('47') : void 0;\n return renderToStringImpl(element, true);\n}\n\nmodule.exports = {\n renderToString: renderToString,\n renderToStaticMarkup: renderToStaticMarkup\n};","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactServerBatchingStrategy = {\n isBatchingUpdates: false,\n batchedUpdates: function (callback) {\n // Don't do anything here. During the server rendering we don't want to\n // schedule any updates. We will simply ignore them.\n }\n};\n\nmodule.exports = ReactServerBatchingStrategy;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parser = require(\"./parser\");\n\nvar _parser2 = _interopRequireDefault(_parser);\n\nvar _slate = require(\"slate\");\n\nvar _immutable = require(\"immutable\");\n\nvar _urls = require(\"./urls\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar String = new _immutable.Record({\n object: \"string\",\n text: \"\"\n});\n\n/**\n * Rules to (de)serialize nodes.\n *\n * @type {Object}\n */\n\nvar tableHeader = \"\";\n\nvar RULES = [{\n serialize: function serialize(obj, children) {\n if (obj.object === \"string\") {\n return children;\n }\n }\n}, {\n serialize: function serialize(obj, children, document) {\n if (obj.object !== \"block\") return;\n var parent = document.getParent(obj.key);\n\n // add newline after blocks which must be separated by\n // newlines - i.e. paragraphs, blockquotes and lists.\n var addNewLine = function addNewLine(children) {\n if (document.getNextSibling(obj.key)) {\n return children + \"\\n\\n\";\n } else {\n return children;\n }\n };\n\n switch (obj.type) {\n case \"table\":\n tableHeader = \"\";\n\n // trim removes trailing newline\n return children.trim();\n case \"table-head\":\n {\n switch (obj.getIn([\"data\", \"align\"])) {\n case \"left\":\n tableHeader += \"|:--- \";\n break;\n case \"center\":\n tableHeader += \"|:---:\";\n break;\n case \"right\":\n tableHeader += \"| ---:\";\n break;\n default:\n tableHeader += \"| --- \";\n }\n return \"| \" + children + \" \";\n }\n case \"table-row\":\n var output = \"\";\n if (tableHeader) {\n output = tableHeader + \"|\\n\";\n tableHeader = \"\";\n }\n return children + \"|\\n\" + output;\n case \"table-cell\":\n return \"| \" + children + \" \";\n case \"paragraph\":\n return addNewLine(\"\" + children);\n case \"code\":\n return addNewLine(\"```\\n\" + children + \"\\n```\");\n case \"code-line\":\n return children + \"\\n\";\n case \"block-quote\":\n return addNewLine(\"\" + children.replace(/^/gm, \"> \"));\n case \"todo-list\":\n case \"bulleted-list\":\n case \"ordered-list\":\n if (parent === document) {\n return children;\n }\n return \"\\n\" + addNewLine(children.replace(/^/gm, \" \"));\n case \"list-item\":\n {\n switch (parent.type) {\n case \"ordered-list\":\n return \"1. \" + children + \"\\n\";\n case \"todo-list\":\n var checked = obj.getIn([\"data\", \"checked\"]);\n var box = checked ? \"[x]\" : \"[ ]\";\n return box + \" \" + children + \"\\n\";\n default:\n case \"bulleted-list\":\n return \"* \" + children + \"\\n\";\n }\n }\n case \"heading1\":\n return \"\\n\" + children.replace(/^/gm, \"# \") + \"\\n\";\n case \"heading2\":\n return \"\\n\" + children.replace(/^/gm, \"## \") + \"\\n\";\n case \"heading3\":\n return \"\\n\" + children.replace(/^/gm, \"### \") + \"\\n\";\n case \"heading4\":\n return \"\\n\" + children.replace(/^/gm, \"#### \") + \"\\n\";\n case \"heading5\":\n return \"\\n\" + children.replace(/^/gm, \"##### \") + \"\\n\";\n case \"heading6\":\n return \"\\n\" + children.replace(/^/gm, \"###### \") + \"\\n\";\n case \"horizontal-rule\":\n return \"---\";\n case \"image\":\n var alt = obj.getIn([\"data\", \"alt\"]);\n var src = (0, _urls.encode)(obj.getIn([\"data\", \"src\"]) || \"\");\n return \"![\" + alt + \"](\" + src + \")\";\n }\n }\n}, {\n serialize: function serialize(obj, children) {\n if (obj.object !== \"inline\") return;\n switch (obj.type) {\n case \"link\":\n var href = (0, _urls.encode)(obj.getIn([\"data\", \"href\"]) || \"\");\n return href ? \"[\" + children.trim() + \"](\" + href + \")\" : children.trim();\n }\n }\n},\n// Add a new rule that handles marks...\n{\n serialize: function serialize(obj, children) {\n if (obj.object !== \"mark\") return;\n switch (obj.type) {\n case \"bold\":\n return \"**\" + children + \"**\";\n case \"italic\":\n return \"_\" + children + \"_\";\n case \"code\":\n return \"`\" + children + \"`\";\n case \"inserted\":\n return \"++\" + children + \"++\";\n case \"deleted\":\n return \"~~\" + children + \"~~\";\n }\n }\n}];\n\n/**\n * Markdown serializer.\n *\n * @type {Markdown}\n */\n\nvar Markdown = function () {\n /**\n * Create a new serializer with `rules`.\n *\n * @param {Object} options\n * @property {Array} rules\n * @return {Markdown} serializer\n */\n\n function Markdown() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Markdown);\n\n this.rules = [].concat(_toConsumableArray(options.rules || []), RULES);\n\n this.serializeNode = this.serializeNode.bind(this);\n this.serializeLeaves = this.serializeLeaves.bind(this);\n this.serializeString = this.serializeString.bind(this);\n }\n\n /**\n * Serialize a `state` object into an HTML string.\n *\n * @param {State} state\n * @return {String} markdown\n */\n\n _createClass(Markdown, [{\n key: \"serialize\",\n value: function serialize(state) {\n var _this = this;\n\n var document = state.document;\n\n var elements = document.nodes.map(function (node) {\n return _this.serializeNode(node, document);\n });\n\n var output = elements.join(\"\\n\");\n\n // trim beginning whitespace\n return output.replace(/^\\s+/g, \"\");\n }\n\n /**\n * Serialize a `node`.\n *\n * @param {Node} node\n * @return {String}\n */\n\n }, {\n key: \"serializeNode\",\n value: function serializeNode(node, document) {\n var _this2 = this;\n\n if (node.object == \"text\") {\n var leaves = node.getLeaves();\n var inCodeBlock = !!document.getClosest(node.key, function (n) {\n n.type === 'code';\n });\n return leaves.map(this.serializeLeaves, !inCodeBlock);\n }\n\n var children = node.nodes.map(function (node) {\n return _this2.serializeNode(node, document);\n });\n children = children.flatten().size === 0 ? \"\" : children.flatten().join(\"\");\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = this.rules[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var rule = _step.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(node, children, document);\n if (ret) return ret;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n\n /**\n * Serialize `leaves`.\n *\n * @param {Leave[]} leaves\n * @return {String}\n */\n\n }, {\n key: \"serializeLeaves\",\n value: function serializeLeaves(leaves, escape) {\n var _this3 = this;\n\n var leavesText = leaves.text;\n if (escape) {\n // escape markdown characters\n leavesText = leavesText.replace(/([\\\\`*{}\\[\\]()#+\\-.!_>])/gi, \"\\\\$1\");\n }\n var string = new String({ text: leavesText });\n var text = this.serializeString(string);\n\n return leaves.marks.reduce(function (children, mark) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = _this3.rules[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var rule = _step2.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(mark, children);\n if (ret) return ret;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }, text);\n }\n\n /**\n * Serialize a `string`.\n *\n * @param {String} string\n * @return {String}\n */\n\n }, {\n key: \"serializeString\",\n value: function serializeString(string) {\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = this.rules[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var rule = _step3.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(string, string.text);\n if (ret) return ret;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n\n /**\n * Deserialize a markdown `string`.\n *\n * @param {String} markdown\n * @return {State} state\n */\n\n }, {\n key: \"deserialize\",\n value: function deserialize(markdown) {\n var document = _parser2.default.parse(markdown);\n var state = _slate.Value.fromJSON({ document: document });\n return state;\n }\n }]);\n\n return Markdown;\n}();\n\nexports.default = Markdown;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _urls = require(\"./urls\");\n\n/**\n * Ported from:\n * https://github.com/chjj/marked/blob/49b7eaca/lib/marked.js\n * TODO:\n * Use ES6 classes\n * Add flow annotations\n */\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar assign = Object.assign || function (obj) {\n var i = 1;\n for (; i < arguments.length; i++) {\n var target = arguments[i];\n for (var key in target) {\n if (hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n return obj;\n};\n\nvar flatten = function flatten(ary) {\n return [].concat.apply([], ary);\n};\n\nvar noop = function noop() {};\nnoop.exec = noop;\n\nvar defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n smartLists: true,\n silent: false,\n langPrefix: \"lang-\",\n renderer: new Renderer()\n};\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*(?:\\n|$))+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n(?! )(?!\\1bull )\\n|\\s*$)/,\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n|$)/,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|def))+)(?:\\n|$)/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.|\\[[x\\s]\\])/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, \"gm\")(/bull/g, block.bullet)();\n\nblock.list = replace(block.list)(/bull/g, block.bullet)(\"hr\", \"\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))\")(\"def\", \"\\\\n+(?=\" + block.def.source + \")\")();\n\nblock.blockquote = replace(block.blockquote)(\"def\", block.def)();\n\nblock.paragraph = replace(block.paragraph)(\"hr\", block.hr)(\"heading\", block.heading)(\"lheading\", block.lheading)(\"blockquote\", block.blockquote)(\"def\", block.def)();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = assign({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = assign({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]+?)\\s*\\1 *(?:\\n|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n{1,2}|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)(\"(?!\", \"(?!\" + block.gfm.fences.source.replace(\"\\\\1\", \"\\\\2\") + \"|\" + block.list.source.replace(\"\\\\1\", \"\\\\3\") + \"|\")();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = assign({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = assign({}, options || defaults);\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.parse = function (src, options) {\n var lexer = new Lexer(options);\n return lexer.parse(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.parse = function (src) {\n src = src.replace(/\\r\\n|\\r/g, \"\\n\").replace(/\\t/g, \" \").replace(/\\u00a0/g, \" \").replace(/\\u2424/g, \"\\n\");\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function (src, top, bq) {\n var next;\n var loose;\n var cap;\n var bull;\n var b;\n var item;\n var space;\n var i;\n var l;\n\n src = src.replace(/^ +$/gm, \"\");\n src = src.replace(/^\\n/, \"\");\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n var newlines = cap[0].length;\n\n if (top) {\n for (var _i = 0; _i < newlines; _i++) {\n this.tokens.push({\n type: \"paragraph\",\n text: \"\"\n });\n }\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, \"\");\n this.tokens.push({\n type: \"code\",\n text: !this.options.pedantic ? cap.replace(/\\n+$/, \"\") : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: \"code\",\n lang: cap[2],\n text: cap[3]\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n\n var last = this.tokens[this.tokens.length - 1];\n if (last && last.type === \"paragraph\" && last.text === \"\") {\n this.tokens.splice(-1, 1);\n }\n\n this.tokens.push({\n type: \"heading\",\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: \"table\",\n header: cap[1].replace(/^ *| *\\| *$/g, \"\").split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, \"\").split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, \"\").split(\"\\n\")\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = \"right\";\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = \"center\";\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = \"left\";\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: \"heading\",\n depth: cap[2] === \"=\" ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: \"hr\"\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: \"blockquote_start\"\n });\n\n cap = cap[0].replace(/^ *> ?/gm, \"\");\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: \"blockquote_end\"\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n var ordered = bull.length > 1;\n var todo = bull[0] === \"[\";\n\n this.tokens.push({\n type: \"list_start\",\n style: todo ? \"todo\" : ordered ? \"ordered\" : \"bulleted\"\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n var checked = todo ? !!item.match(/^ *(\\[x\\])/) : undefined;\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.|\\[[x\\s]\\]) +/, \"\");\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf(\"\\n \")) {\n space -= item.length;\n item = !this.options.pedantic ? item.replace(new RegExp(\"^ {1,\" + space + \"}\", \"gm\"), \"\") : item.replace(/^ {1,4}/gm, \"\");\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join(\"\\n\") + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === \"\\n\";\n if (!loose) {\n loose = next;\n }\n }\n\n this.tokens.push({\n checked: checked,\n type: loose ? \"loose_item_start\" : \"list_item_start\"\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: \"list_item_end\"\n });\n }\n\n this.tokens.push({\n type: \"list_end\"\n });\n\n continue;\n }\n\n // def\n if (!bq && top && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: \"table\",\n header: cap[1].replace(/^ *| *\\| *$/g, \"\").split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, \"\").split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, \"\").split(\"\\n\")\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = \"right\";\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = \"center\";\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = \"left\";\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].replace(/^ *\\| *| *\\| *$/g, \"\").split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n var endsWithNewline = cap[1].charAt(cap[1].length - 1) === \"\\n\";\n this.tokens.push({\n type: \"paragraph\",\n text: endsWithNewline ? cap[1].slice(0, -1) : cap[1]\n });\n if (endsWithNewline) {\n this.tokens.push({\n type: \"paragraph\",\n text: \"\"\n });\n }\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: \"text\",\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new Error(\"Infinite loop on byte: \" + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:__|[\\s\\S])+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n ins: noop,\n text: /^[\\s\\S]+?(?=[\\\\<!\\[_*`]| {2,}\\n|$)/\n};\n\ninline._inside = /(?:\\[[^\\]]*\\]|[^\\[\\]]|\\](?=[^\\[]*\\]))*/;\ninline._href = /\\s*<?([\\s\\S]*?)>?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)(\"inside\", inline._inside)(\"href\", inline._href)();\n\ninline.reflink = replace(inline.reflink)(\"inside\", inline._inside)();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = assign({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = assign({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = assign({}, inline.normal, {\n escape: replace(inline.escape)(\"])\", \"~|])\")(),\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n ins: /^\\+\\+(?=\\S)([\\s\\S]*?\\S)\\+\\+/,\n text: replace(inline.text)(\"]|\", \"~+]|\")()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = assign({}, inline.gfm, {\n br: replace(inline.br)(\"{2,}\", \"*\")(),\n text: replace(inline.gfm.text)(\"{2,}\", \"*\")()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = assign({}, options || defaults);\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer();\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new Error(\"Tokens array requires a `links` property.\");\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.parse = function (src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.parse(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.parse = function (src) {\n var out = [];\n var link;\n var cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out.push({\n object: \"text\",\n leaves: [{\n text: cap[1]\n }]\n });\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out.push(this.outputLink(cap, { href: cap[2], title: cap[3] }));\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n // TODO\n if ((cap = this.rules.reflink.exec(src)) || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, \" \");\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out.push({\n object: \"text\",\n leaves: [{\n text: cap[0].charAt(0)\n }]\n });\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out.push(this.outputLink(cap, link));\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.strong(this.parse(cap[2] || cap[1])));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.em(this.parse(cap[2] || cap[1])));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.codespan(cap[2]));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.br());\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.del(this.parse(cap[1])));\n continue;\n }\n\n // ins (gfm extended)\n if (cap = this.rules.ins.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.ins(this.parse(cap[1])));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.text(cap[0]));\n continue;\n }\n\n if (src) {\n throw new Error(\"Infinite loop on byte: \" + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function (cap, link) {\n var href = link.href;\n var title = link.title;\n\n return cap[0].charAt(0) !== \"!\" ? this.renderer.link(href, title, this.parse(cap[1])) : this.renderer.image(href, title, cap[1]);\n};\n\"\";\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.groupTextInLeaves = function (childNode) {\n var _this = this;\n\n var node = flatten(childNode);\n return node.reduce(function (acc, current) {\n var accLast = acc.length - 1;\n var lastIsText = accLast >= 0 && acc[accLast] && acc[accLast][\"object\"] === \"text\";\n\n if (current instanceof TextNode) {\n if (lastIsText) {\n // If the previous item was a text object, push the current text to it's range\n acc[accLast].leaves.push(current);\n return acc;\n } else {\n // Else, create a new text object\n acc.push({\n object: \"text\",\n leaves: [current]\n });\n return acc;\n }\n } else if (current instanceof Array) {\n return acc.concat(_this.groupTextInLeaves(current));\n } else {\n acc.push(current);\n return acc;\n }\n }, []);\n};\n\nRenderer.prototype.code = function (childNode, lang) {\n var data = {};\n\n if (lang) {\n data.language = this.options.langPrefix + lang;\n }\n\n return {\n object: \"block\",\n type: \"code\",\n data: data,\n nodes: this.groupTextInLeaves(childNode)\n };\n};\n\nRenderer.prototype.blockquote = function (childNode) {\n return {\n object: \"block\",\n type: \"block-quote\",\n nodes: this.groupTextInLeaves(childNode)\n };\n};\n\nRenderer.prototype.heading = function (childNode, level) {\n return {\n object: \"block\",\n type: \"heading\" + level,\n nodes: this.groupTextInLeaves(childNode)\n };\n};\n\nRenderer.prototype.hr = function () {\n return {\n object: \"block\",\n type: \"horizontal-rule\",\n isVoid: true\n };\n};\n\nRenderer.prototype.list = function (childNode, style) {\n return {\n object: \"block\",\n type: style + \"-list\",\n nodes: childNode\n };\n};\n\nRenderer.prototype.listitem = function (childNode) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var data = void 0;\n if (flags.checked !== undefined) {\n data = { checked: flags.checked };\n }\n\n return {\n object: \"block\",\n type: \"list-item\",\n data: data,\n nodes: this.groupTextInLeaves(childNode)\n };\n};\n\nRenderer.prototype.paragraph = function (childNode) {\n return {\n object: \"block\",\n type: \"paragraph\",\n nodes: this.groupTextInLeaves(childNode)\n };\n};\n\nRenderer.prototype.table = function (childNode) {\n return {\n object: \"block\",\n type: \"table\",\n nodes: childNode\n };\n};\n\nRenderer.prototype.tablerow = function (childNode) {\n return {\n object: \"block\",\n type: \"table-row\",\n nodes: childNode\n };\n};\n\nRenderer.prototype.tablecell = function (childNode, flags) {\n var align = flags.align;\n\n return {\n object: \"block\",\n data: { align: align },\n type: flags.header ? \"table-head\" : \"table-cell\",\n nodes: this.groupTextInLeaves(childNode)\n };\n};\n\n// span level renderer\nRenderer.prototype.strong = function (childNode) {\n return childNode.map(function (node) {\n if (node.marks) {\n node.marks.push({ type: \"bold\" });\n } else {\n node.marks = [{ type: \"bold\" }];\n }\n return node;\n });\n};\n\nRenderer.prototype.em = function (childNode) {\n return childNode.map(function (node) {\n if (node.marks) {\n node.marks.push({ type: \"italic\" });\n } else {\n node.marks = [{ type: \"italic\" }];\n }\n return node;\n });\n};\n\nRenderer.prototype.codespan = function (text) {\n return new TextNode(text, { type: \"code\" });\n};\n\nRenderer.prototype.br = function () {\n return new TextNode(\"\");\n};\n\nRenderer.prototype.del = function (childNode) {\n return childNode.map(function (node) {\n if (node.marks) {\n node.marks.push({ type: \"deleted\" });\n } else {\n node.marks = [{ type: \"deleted\" }];\n }\n return node;\n });\n};\n\nRenderer.prototype.ins = function (childNode) {\n return childNode.map(function (node) {\n if (node.marks) {\n node.marks.push({ type: \"inserted\" });\n } else {\n node.marks = [{ type: \"inserted\" }];\n }\n return node;\n });\n};\n\nRenderer.prototype.link = function (href, title, childNode) {\n var data = {\n href: (0, _urls.decode)(href)\n };\n if (title) {\n data.title = title;\n }\n return {\n object: \"inline\",\n type: \"link\",\n nodes: this.groupTextInLeaves(childNode),\n data: data\n };\n};\n\nRenderer.prototype.image = function (href, title, alt) {\n var data = {\n src: (0, _urls.decode)(href)\n };\n\n if (title) {\n data.title = title;\n }\n if (alt) {\n data.alt = alt;\n }\n\n return {\n object: \"block\",\n type: \"image\",\n nodes: [{\n object: \"text\",\n leaves: [{\n text: \"\"\n }]\n }],\n isVoid: true,\n data: data\n };\n};\n\nRenderer.prototype.text = function (childNode) {\n return new TextNode(childNode);\n};\n\n// Auxiliary object constructors:\nfunction TextNode(text, marks) {\n this.text = text;\n if (marks) {\n this.marks = [marks];\n }\n}\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = assign({}, options || defaults);\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function (src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function (src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.slice().reverse();\n\n var out = [];\n while (this.next()) {\n out.push(this.tok());\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function () {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function () {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function () {\n var body = this.token.text;\n\n while (this.peek().type === \"text\") {\n body += \"\\n\" + this.next().text;\n }\n\n return this.inline.parse(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function () {\n switch (this.token.type) {\n case \"space\":\n {\n return {\n object: \"text\",\n leaves: [{\n text: \"\"\n }]\n };\n }\n case \"hr\":\n {\n return this.renderer.hr();\n }\n case \"heading\":\n {\n return this.renderer.heading(this.inline.parse(this.token.text), this.token.depth);\n }\n case \"code\":\n {\n return this.renderer.code(this.inline.parse(this.token.text), this.token.lang);\n }\n case \"table\":\n {\n var body = [];\n var i = void 0,\n row = void 0,\n flags = void 0,\n j = void 0;\n\n // header\n var cells = [];\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cells.push(this.renderer.tablecell(this.inline.parse(this.token.header[i]), {\n header: true,\n align: this.token.align[i]\n }));\n }\n body.push(this.renderer.tablerow(cells));\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n var _cells = [];\n for (j = 0; j < row.length; j++) {\n _cells.push(this.renderer.tablecell(this.inline.parse(row[j]), {\n header: false,\n align: this.token.align[j]\n }));\n }\n\n body.push(this.renderer.tablerow(_cells));\n }\n return this.renderer.table(body);\n }\n case \"blockquote_start\":\n {\n var _body = [];\n\n while (this.next().type !== \"blockquote_end\") {\n _body.push(this.inline.parse(this.token.text));\n }\n return this.renderer.blockquote(_body);\n }\n case \"list_start\":\n {\n var _body2 = [];\n var style = this.token.style;\n\n while (this.next().type !== \"list_end\") {\n _body2.push(this.tok());\n }\n\n return this.renderer.list(_body2, style);\n }\n case \"loose_item_start\":\n case \"list_item_start\":\n {\n var _body3 = [];\n var _flags = { checked: this.token.checked };\n\n while (this.next().type !== \"list_item_end\") {\n _body3.push(this.token.type === \"text\" ? this.renderer.paragraph(this.inline.parse(this.token.text)) : this.tok());\n }\n\n return this.renderer.listitem(_body3, _flags);\n }\n case \"paragraph\":\n {\n return this.renderer.paragraph(this.inline.parse(this.token.text));\n }\n case \"text\":\n {\n return this.renderer.text(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction replace(regex, options) {\n regex = regex.source;\n options = options || \"\";\n return function self(name, val) {\n if (!name) {\n return new RegExp(regex, options);\n }\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, \"$1\");\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nvar MarkdownParser = {\n parse: function parse(src, options) {\n options = assign({}, defaults, options);\n try {\n var fragment = Parser.parse(Lexer.parse(src, options), options);\n } catch (e) {\n if (options.silent) {\n fragment = [{\n object: \"block\",\n type: \"paragraph\",\n nodes: [{\n object: \"text\",\n leaves: [{\n text: \"An error occured:\"\n }, {\n text: e.message\n }]\n }]\n }];\n } else {\n throw e;\n }\n }\n var mainNode = { nodes: fragment };\n return mainNode;\n }\n};\n\nexports.default = MarkdownParser;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _slate = require('slate');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Plain text serializer, which converts a Slate `value` to a plain text string,\n * serializing pills into various different formats as required.\n *\n * @type {PlainWithPillsSerializer}\n */\n\nvar PlainWithPillsSerializer =\n\n/*\n * @param {String} options.pillFormat - either 'md', 'plain', 'id'\n */\nfunction PlainWithPillsSerializer() {\n var _this = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n (0, _classCallCheck3.default)(this, PlainWithPillsSerializer);\n\n this.serialize = function (value) {\n return _this._serializeNode(value.document);\n };\n\n this._serializeNode = function (node) {\n if (node.object == 'document' || node.object == 'block' && _slate.Block.isBlockList(node.nodes)) {\n return node.nodes.map(_this._serializeNode).join('\\n');\n } else if (node.type == 'emoji') {\n return node.data.get('emojiUnicode');\n } else if (node.type == 'pill') {\n var completion = node.data.get('completion');\n // over the wire the @room pill is just plaintext\n if (completion === '@room') return completion;\n\n switch (_this.pillFormat) {\n case 'plain':\n return completion;\n case 'md':\n return '[' + completion + '](' + node.data.get('href') + ')';\n case 'id':\n return node.data.get('completionId') || completion;\n }\n } else if (node.nodes) {\n return node.nodes.map(_this._serializeNode).join('');\n } else {\n return node.text;\n }\n };\n\n var _options$pillFormat = options.pillFormat,\n pillFormat = _options$pillFormat === undefined ? 'plain' : _options$pillFormat;\n\n this.pillFormat = pillFormat;\n}\n\n/**\n * Serialize a Slate `value` to a plain text string,\n * serializing pills as either MD links, plain text representations or\n * ID representations as required.\n *\n * @param {Value} value\n * @return {String}\n */\n\n\n/**\n * Serialize a `node` to plain text.\n *\n * @param {Node} node\n * @return {String}\n */\n;\n\n/**\n * Export.\n *\n * @type {PlainWithPillsSerializer}\n */\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// Based originally on slate-plain-serializer\n\nexports.default = PlainWithPillsSerializer;\nmodule.exports = exports['default'];\n//# sourceMappingURL=PlainWithPillsSerializer.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.unicodeToEmojiUri = unicodeToEmojiUri;\n\nvar _emojione = require('emojione');\n\nvar emojione = _interopRequireWildcard(_emojione);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction unicodeToEmojiUri(str) {\n var mappedUnicode = emojione.mapUnicodeToShort();\n\n // remove any zero width joiners/spaces used in conjugate emojis as the emojione URIs don't contain them\n return str.replace(emojione.regUnicode, function (unicodeChar) {\n if (typeof unicodeChar === 'undefined' || unicodeChar === '' || !(unicodeChar in emojione.jsEscapeMap)) {\n // if the unicodeChar doesn't exist just return the entire match\n return unicodeChar;\n } else {\n // get the unicode codepoint from the actual char\n var unicode = emojione.jsEscapeMap[unicodeChar];\n\n var short = mappedUnicode[unicode];\n var fname = emojione.emojioneList[short].fname;\n\n return emojione.imagePathSVG + fname + '.svg' + emojione.cacheBustParam;\n }\n });\n} /*\n Copyright 2015 - 2017 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=RichText.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _commonmark = require('commonmark');\n\nvar _commonmark2 = _interopRequireDefault(_commonmark);\n\nvar _escape = require('lodash/escape');\n\nvar _escape2 = _interopRequireDefault(_escape);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ALLOWED_HTML_TAGS = ['sub', 'sup', 'del', 'u'];\n\n// These types of node are definitely text\nvar TEXT_NODES = ['text', 'softbreak', 'linebreak', 'paragraph', 'document'];\n\nfunction is_allowed_html_tag(node) {\n // Regex won't work for tags with attrs, but we only\n // allow <del> anyway.\n var matches = /^<\\/?(.*)>$/.exec(node.literal);\n if (matches && matches.length == 2) {\n var tag = matches[1];\n return ALLOWED_HTML_TAGS.indexOf(tag) > -1;\n }\n return false;\n}\n\nfunction html_if_tag_allowed(node) {\n if (is_allowed_html_tag(node)) {\n this.lit(node.literal);\n return;\n } else {\n this.lit((0, _escape2.default)(node.literal));\n }\n}\n\n/*\n * Returns true if the parse output containing the node\n * comprises multiple block level elements (ie. lines),\n * or false if it is only a single line.\n */\nfunction is_multi_line(node) {\n var par = node;\n while (par.parent) {\n par = par.parent;\n }\n return par.firstChild != par.lastChild;\n}\n\n/**\n * Class that wraps commonmark, adding the ability to see whether\n * a given message actually uses any markdown syntax or whether\n * it's plain text.\n */\n\nvar Markdown = function () {\n function Markdown(input) {\n (0, _classCallCheck3.default)(this, Markdown);\n\n this.input = input;\n\n var parser = new _commonmark2.default.Parser();\n this.parsed = parser.parse(this.input);\n }\n\n (0, _createClass3.default)(Markdown, [{\n key: 'isPlainText',\n value: function isPlainText() {\n var walker = this.parsed.walker();\n\n var ev = void 0;\n while (ev = walker.next()) {\n var node = ev.node;\n if (TEXT_NODES.indexOf(node.type) > -1) {\n // definitely text\n continue;\n } else if (node.type == 'html_inline' || node.type == 'html_block') {\n // if it's an allowed html tag, we need to render it and therefore\n // we will need to use HTML. If it's not allowed, it's not HTML since\n // we'll just be treating it as text.\n if (is_allowed_html_tag(node)) {\n return false;\n }\n } else {\n return false;\n }\n }\n return true;\n }\n }, {\n key: 'toHTML',\n value: function toHTML() {\n var renderer = new _commonmark2.default.HtmlRenderer({\n safe: false,\n\n // Set soft breaks to hard HTML breaks: commonmark\n // puts softbreaks in for multiple lines in a blockquote,\n // so if these are just newline characters then the\n // block quote ends up all on one line\n // (https://github.com/vector-im/riot-web/issues/3154)\n softbreak: '<br />'\n });\n\n // Trying to strip out the wrapping <p/> causes a lot more complication\n // than it's worth, i think. For instance, this code will go and strip\n // out any <p/> tag (no matter where it is in the tree) which doesn't\n // contain \\n's.\n // On the flip side, <p/>s are quite opionated and restricted on where\n // you can nest them.\n //\n // Let's try sending with <p/>s anyway for now, though.\n\n var real_paragraph = renderer.paragraph;\n\n renderer.paragraph = function (node, entering) {\n // If there is only one top level node, just return the\n // bare text: it's a single line of text and so should be\n // 'inline', rather than unnecessarily wrapped in its own\n // p tag. If, however, we have multiple nodes, each gets\n // its own p tag to keep them as separate paragraphs.\n if (is_multi_line(node)) {\n real_paragraph.call(this, node, entering);\n }\n };\n\n renderer.html_inline = html_if_tag_allowed;\n\n renderer.html_block = function (node) {\n /*\n // as with `paragraph`, we only insert line breaks\n // if there are multiple lines in the markdown.\n const isMultiLine = is_multi_line(node);\n if (isMultiLine) this.cr();\n */\n html_if_tag_allowed.call(this, node);\n /*\n if (isMultiLine) this.cr();\n */\n };\n\n return renderer.render(this.parsed);\n }\n\n /*\n * Render the markdown message to plain text. That is, essentially\n * just remove any backslashes escaping what would otherwise be\n * markdown syntax\n * (to fix https://github.com/vector-im/riot-web/issues/2870).\n *\n * N.B. this does **NOT** render arbitrary MD to plain text - only MD\n * which has no formatting. Otherwise it emits HTML(!).\n */\n\n }, {\n key: 'toPlaintext',\n value: function toPlaintext() {\n var renderer = new _commonmark2.default.HtmlRenderer({ safe: false });\n var real_paragraph = renderer.paragraph;\n\n // The default `out` function only sends the input through an XML\n // escaping function, which causes messages to be entity encoded,\n // which we don't want in this case.\n renderer.out = function (s) {\n // The `lit` function adds a string literal to the output buffer.\n this.lit(s);\n };\n\n renderer.paragraph = function (node, entering) {\n // as with toHTML, only append lines to paragraphs if there are\n // multiple paragraphs\n if (is_multi_line(node)) {\n if (!entering && node.next) {\n this.lit('\\n\\n');\n }\n }\n };\n\n renderer.html_block = function (node) {\n this.lit(node.literal);\n if (is_multi_line(node) && node.next) this.lit('\\n\\n');\n };\n\n return renderer.render(this.parsed);\n }\n }]);\n return Markdown;\n}();\n\nexports.default = Markdown;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Markdown.js.map","\"use strict\";\n\n// commonmark.js - CommomMark in JavaScript\n// Copyright (C) 2014 John MacFarlane\n// License: BSD3.\n\n// Basic usage:\n//\n// var commonmark = require('commonmark');\n// var parser = new commonmark.Parser();\n// var renderer = new commonmark.HtmlRenderer();\n// console.log(renderer.render(parser.parse('Hello *world*')));\n\nmodule.exports.Node = require('./node');\nmodule.exports.Parser = require('./blocks');\nmodule.exports.HtmlRenderer = require('./render/html');\nmodule.exports.XmlRenderer = require('./render/xml');\n","\"use strict\";\n\nvar Node = require('./node');\nvar unescapeString = require('./common').unescapeString;\nvar OPENTAG = require('./common').OPENTAG;\nvar CLOSETAG = require('./common').CLOSETAG;\n\nvar CODE_INDENT = 4;\n\nvar C_TAB = 9;\nvar C_NEWLINE = 10;\nvar C_GREATERTHAN = 62;\nvar C_LESSTHAN = 60;\nvar C_SPACE = 32;\nvar C_OPEN_BRACKET = 91;\n\nvar InlineParser = require('./inlines');\n\nvar reHtmlBlockOpen = [\n /./, // dummy for 0\n /^<(?:script|pre|style)(?:\\s|>|$)/i,\n /^<!--/,\n /^<[?]/,\n /^<![A-Z]/,\n /^<!\\[CDATA\\[/,\n /^<[/]?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[123456]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|title|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\\s|[/]?[>]|$)/i,\n new RegExp('^(?:' + OPENTAG + '|' + CLOSETAG + ')\\\\s*$', 'i')\n];\n\nvar reHtmlBlockClose = [\n /./, // dummy for 0\n /<\\/(?:script|pre|style)>/i,\n /-->/,\n /\\?>/,\n />/,\n /\\]\\]>/\n];\n\nvar reThematicBreak = /^(?:(?:\\*[ \\t]*){3,}|(?:_[ \\t]*){3,}|(?:-[ \\t]*){3,})[ \\t]*$/;\n\nvar reMaybeSpecial = /^[#`~*+_=<>0-9-]/;\n\nvar reNonSpace = /[^ \\t\\f\\v\\r\\n]/;\n\nvar reBulletListMarker = /^[*+-]/;\n\nvar reOrderedListMarker = /^(\\d{1,9})([.)])/;\n\nvar reATXHeadingMarker = /^#{1,6}(?:[ \\t]+|$)/;\n\nvar reCodeFence = /^`{3,}(?!.*`)|^~{3,}(?!.*~)/;\n\nvar reClosingCodeFence = /^(?:`{3,}|~{3,})(?= *$)/;\n\nvar reSetextHeadingLine = /^(?:=+|-+)[ \\t]*$/;\n\nvar reLineEnding = /\\r\\n|\\n|\\r/;\n\n// Returns true if string contains only space characters.\nvar isBlank = function(s) {\n return !(reNonSpace.test(s));\n};\n\nvar isSpaceOrTab = function(c) {\n return c === C_SPACE || c === C_TAB;\n};\n\nvar peek = function(ln, pos) {\n if (pos < ln.length) {\n return ln.charCodeAt(pos);\n } else {\n return -1;\n }\n};\n\n// DOC PARSER\n\n// These are methods of a Parser object, defined below.\n\n// Returns true if block ends with a blank line, descending if needed\n// into lists and sublists.\nvar endsWithBlankLine = function(block) {\n while (block) {\n if (block._lastLineBlank) {\n return true;\n }\n var t = block.type;\n if (t === 'list' || t === 'item') {\n block = block._lastChild;\n } else {\n break;\n }\n }\n return false;\n};\n\n// Add a line to the block at the tip. We assume the tip\n// can accept lines -- that check should be done before calling this.\nvar addLine = function() {\n if (this.partiallyConsumedTab) {\n this.offset += 1; // skip over tab\n // add space characters:\n var charsToTab = 4 - (this.column % 4);\n this.tip._string_content += (' '.repeat(charsToTab));\n }\n this.tip._string_content += this.currentLine.slice(this.offset) + '\\n';\n};\n\n// Add block of type tag as a child of the tip. If the tip can't\n// accept children, close and finalize it and try its parent,\n// and so on til we find a block that can accept children.\nvar addChild = function(tag, offset) {\n while (!this.blocks[this.tip.type].canContain(tag)) {\n this.finalize(this.tip, this.lineNumber - 1);\n }\n\n var column_number = offset + 1; // offset 0 = column 1\n var newBlock = new Node(tag, [[this.lineNumber, column_number], [0, 0]]);\n newBlock._string_content = '';\n this.tip.appendChild(newBlock);\n this.tip = newBlock;\n return newBlock;\n};\n\n// Parse a list marker and return data on the marker (type,\n// start, delimiter, bullet character, padding) or null.\nvar parseListMarker = function(parser, container) {\n var rest = parser.currentLine.slice(parser.nextNonspace);\n var match;\n var nextc;\n var spacesStartCol;\n var spacesStartOffset;\n var data = { type: null,\n tight: true, // lists are tight by default\n bulletChar: null,\n start: null,\n delimiter: null,\n padding: null,\n markerOffset: parser.indent };\n if ((match = rest.match(reBulletListMarker))) {\n data.type = 'bullet';\n data.bulletChar = match[0][0];\n\n } else if ((match = rest.match(reOrderedListMarker)) &&\n (container.type !== 'paragraph' ||\n match[1] === '1')) {\n data.type = 'ordered';\n data.start = parseInt(match[1]);\n data.delimiter = match[2];\n } else {\n return null;\n }\n // make sure we have spaces after\n nextc = peek(parser.currentLine, parser.nextNonspace + match[0].length);\n if (!(nextc === -1 || nextc === C_TAB || nextc === C_SPACE)) {\n return null;\n }\n\n // if it interrupts paragraph, make sure first line isn't blank\n if (container.type === 'paragraph' && !parser.currentLine.slice(parser.nextNonspace + match[0].length).match(reNonSpace)) {\n return null;\n }\n\n // we've got a match! advance offset and calculate padding\n parser.advanceNextNonspace(); // to start of marker\n parser.advanceOffset(match[0].length, true); // to end of marker\n spacesStartCol = parser.column;\n spacesStartOffset = parser.offset;\n do {\n parser.advanceOffset(1, true);\n nextc = peek(parser.currentLine, parser.offset);\n } while (parser.column - spacesStartCol < 5 &&\n isSpaceOrTab(nextc));\n var blank_item = peek(parser.currentLine, parser.offset) === -1;\n var spaces_after_marker = parser.column - spacesStartCol;\n if (spaces_after_marker >= 5 ||\n spaces_after_marker < 1 ||\n blank_item) {\n data.padding = match[0].length + 1;\n parser.column = spacesStartCol;\n parser.offset = spacesStartOffset;\n if (isSpaceOrTab(peek(parser.currentLine, parser.offset))) {\n parser.advanceOffset(1, true);\n }\n } else {\n data.padding = match[0].length + spaces_after_marker;\n }\n return data;\n};\n\n// Returns true if the two list items are of the same type,\n// with the same delimiter and bullet character. This is used\n// in agglomerating list items into lists.\nvar listsMatch = function(list_data, item_data) {\n return (list_data.type === item_data.type &&\n list_data.delimiter === item_data.delimiter &&\n list_data.bulletChar === item_data.bulletChar);\n};\n\n// Finalize and close any unmatched blocks.\nvar closeUnmatchedBlocks = function() {\n if (!this.allClosed) {\n // finalize any blocks not matched\n while (this.oldtip !== this.lastMatchedContainer) {\n var parent = this.oldtip._parent;\n this.finalize(this.oldtip, this.lineNumber - 1);\n this.oldtip = parent;\n }\n this.allClosed = true;\n }\n};\n\n// 'finalize' is run when the block is closed.\n// 'continue' is run to check whether the block is continuing\n// at a certain line and offset (e.g. whether a block quote\n// contains a `>`. It returns 0 for matched, 1 for not matched,\n// and 2 for \"we've dealt with this line completely, go to next.\"\nvar blocks = {\n document: {\n continue: function() { return 0; },\n finalize: function() { return; },\n canContain: function(t) { return (t !== 'item'); },\n acceptsLines: false\n },\n list: {\n continue: function() { return 0; },\n finalize: function(parser, block) {\n var item = block._firstChild;\n while (item) {\n // check for non-final list item ending with blank line:\n if (endsWithBlankLine(item) && item._next) {\n block._listData.tight = false;\n break;\n }\n // recurse into children of list item, to see if there are\n // spaces between any of them:\n var subitem = item._firstChild;\n while (subitem) {\n if (endsWithBlankLine(subitem) &&\n (item._next || subitem._next)) {\n block._listData.tight = false;\n break;\n }\n subitem = subitem._next;\n }\n item = item._next;\n }\n },\n canContain: function(t) { return (t === 'item'); },\n acceptsLines: false\n },\n block_quote: {\n continue: function(parser) {\n var ln = parser.currentLine;\n if (!parser.indented &&\n peek(ln, parser.nextNonspace) === C_GREATERTHAN) {\n parser.advanceNextNonspace();\n parser.advanceOffset(1, false);\n if (isSpaceOrTab(peek(ln, parser.offset))) {\n parser.advanceOffset(1, true);\n }\n } else {\n return 1;\n }\n return 0;\n },\n finalize: function() { return; },\n canContain: function(t) { return (t !== 'item'); },\n acceptsLines: false\n },\n item: {\n continue: function(parser, container) {\n if (parser.blank) {\n if (container._firstChild == null) {\n // Blank line after empty list item\n return 1;\n } else {\n parser.advanceNextNonspace();\n }\n } else if (parser.indent >=\n container._listData.markerOffset +\n container._listData.padding) {\n parser.advanceOffset(container._listData.markerOffset +\n container._listData.padding, true);\n } else {\n return 1;\n }\n return 0;\n },\n finalize: function() { return; },\n canContain: function(t) { return (t !== 'item'); },\n acceptsLines: false\n },\n heading: {\n continue: function() {\n // a heading can never container > 1 line, so fail to match:\n return 1;\n },\n finalize: function() { return; },\n canContain: function() { return false; },\n acceptsLines: false\n },\n thematic_break: {\n continue: function() {\n // a thematic break can never container > 1 line, so fail to match:\n return 1;\n },\n finalize: function() { return; },\n canContain: function() { return false; },\n acceptsLines: false\n },\n code_block: {\n continue: function(parser, container) {\n var ln = parser.currentLine;\n var indent = parser.indent;\n if (container._isFenced) { // fenced\n var match = (indent <= 3 &&\n ln.charAt(parser.nextNonspace) === container._fenceChar &&\n ln.slice(parser.nextNonspace).match(reClosingCodeFence));\n if (match && match[0].length >= container._fenceLength) {\n // closing fence - we're at end of line, so we can return\n parser.finalize(container, parser.lineNumber);\n return 2;\n } else {\n // skip optional spaces of fence offset\n var i = container._fenceOffset;\n while (i > 0 && isSpaceOrTab(peek(ln, parser.offset))) {\n parser.advanceOffset(1, true);\n i--;\n }\n }\n } else { // indented\n if (indent >= CODE_INDENT) {\n parser.advanceOffset(CODE_INDENT, true);\n } else if (parser.blank) {\n parser.advanceNextNonspace();\n } else {\n return 1;\n }\n }\n return 0;\n },\n finalize: function(parser, block) {\n if (block._isFenced) { // fenced\n // first line becomes info string\n var content = block._string_content;\n var newlinePos = content.indexOf('\\n');\n var firstLine = content.slice(0, newlinePos);\n var rest = content.slice(newlinePos + 1);\n block.info = unescapeString(firstLine.trim());\n block._literal = rest;\n } else { // indented\n block._literal = block._string_content.replace(/(\\n *)+$/, '\\n');\n }\n block._string_content = null; // allow GC\n },\n canContain: function() { return false; },\n acceptsLines: true\n },\n html_block: {\n continue: function(parser, container) {\n return ((parser.blank &&\n (container._htmlBlockType === 6 ||\n container._htmlBlockType === 7)) ? 1 : 0);\n },\n finalize: function(parser, block) {\n block._literal = block._string_content.replace(/(\\n *)+$/, '');\n block._string_content = null; // allow GC\n },\n canContain: function() { return false; },\n acceptsLines: true\n },\n paragraph: {\n continue: function(parser) {\n return (parser.blank ? 1 : 0);\n },\n finalize: function(parser, block) {\n var pos;\n var hasReferenceDefs = false;\n\n // try parsing the beginning as link reference definitions:\n while (peek(block._string_content, 0) === C_OPEN_BRACKET &&\n (pos =\n parser.inlineParser.parseReference(block._string_content,\n parser.refmap))) {\n block._string_content = block._string_content.slice(pos);\n hasReferenceDefs = true;\n }\n if (hasReferenceDefs && isBlank(block._string_content)) {\n block.unlink();\n }\n },\n canContain: function() { return false; },\n acceptsLines: true\n }\n};\n\n// block start functions. Return values:\n// 0 = no match\n// 1 = matched container, keep going\n// 2 = matched leaf, no more block starts\nvar blockStarts = [\n // block quote\n function(parser) {\n if (!parser.indented &&\n peek(parser.currentLine, parser.nextNonspace) === C_GREATERTHAN) {\n parser.advanceNextNonspace();\n parser.advanceOffset(1, false);\n // optional following space\n if (isSpaceOrTab(peek(parser.currentLine, parser.offset))) {\n parser.advanceOffset(1, true);\n }\n parser.closeUnmatchedBlocks();\n parser.addChild('block_quote', parser.nextNonspace);\n return 1;\n } else {\n return 0;\n }\n },\n\n // ATX heading\n function(parser) {\n var match;\n if (!parser.indented &&\n (match = parser.currentLine.slice(parser.nextNonspace).match(reATXHeadingMarker))) {\n parser.advanceNextNonspace();\n parser.advanceOffset(match[0].length, false);\n parser.closeUnmatchedBlocks();\n var container = parser.addChild('heading', parser.nextNonspace);\n container.level = match[0].trim().length; // number of #s\n // remove trailing ###s:\n container._string_content =\n parser.currentLine.slice(parser.offset).replace(/^[ \\t]*#+[ \\t]*$/, '').replace(/[ \\t]+#+[ \\t]*$/, '');\n parser.advanceOffset(parser.currentLine.length - parser.offset);\n return 2;\n } else {\n return 0;\n }\n },\n\n // Fenced code block\n function(parser) {\n var match;\n if (!parser.indented &&\n (match = parser.currentLine.slice(parser.nextNonspace).match(reCodeFence))) {\n var fenceLength = match[0].length;\n parser.closeUnmatchedBlocks();\n var container = parser.addChild('code_block', parser.nextNonspace);\n container._isFenced = true;\n container._fenceLength = fenceLength;\n container._fenceChar = match[0][0];\n container._fenceOffset = parser.indent;\n parser.advanceNextNonspace();\n parser.advanceOffset(fenceLength, false);\n return 2;\n } else {\n return 0;\n }\n },\n\n // HTML block\n function(parser, container) {\n if (!parser.indented &&\n peek(parser.currentLine, parser.nextNonspace) === C_LESSTHAN) {\n var s = parser.currentLine.slice(parser.nextNonspace);\n var blockType;\n\n for (blockType = 1; blockType <= 7; blockType++) {\n if (reHtmlBlockOpen[blockType].test(s) &&\n (blockType < 7 ||\n container.type !== 'paragraph')) {\n parser.closeUnmatchedBlocks();\n // We don't adjust parser.offset;\n // spaces are part of the HTML block:\n var b = parser.addChild('html_block',\n parser.offset);\n b._htmlBlockType = blockType;\n return 2;\n }\n }\n }\n\n return 0;\n\n },\n\n // Setext heading\n function(parser, container) {\n var match;\n if (!parser.indented &&\n container.type === 'paragraph' &&\n ((match = parser.currentLine.slice(parser.nextNonspace).match(reSetextHeadingLine)))) {\n parser.closeUnmatchedBlocks();\n var heading = new Node('heading', container.sourcepos);\n heading.level = match[0][0] === '=' ? 1 : 2;\n heading._string_content = container._string_content;\n container.insertAfter(heading);\n container.unlink();\n parser.tip = heading;\n parser.advanceOffset(parser.currentLine.length - parser.offset, false);\n return 2;\n } else {\n return 0;\n }\n },\n\n // thematic break\n function(parser) {\n if (!parser.indented &&\n reThematicBreak.test(parser.currentLine.slice(parser.nextNonspace))) {\n parser.closeUnmatchedBlocks();\n parser.addChild('thematic_break', parser.nextNonspace);\n parser.advanceOffset(parser.currentLine.length - parser.offset, false);\n return 2;\n } else {\n return 0;\n }\n },\n\n // list item\n function(parser, container) {\n var data;\n\n if ((!parser.indented || container.type === 'list')\n && (data = parseListMarker(parser, container))) {\n parser.closeUnmatchedBlocks();\n\n // add the list if needed\n if (parser.tip.type !== 'list' ||\n !(listsMatch(container._listData, data))) {\n container = parser.addChild('list', parser.nextNonspace);\n container._listData = data;\n }\n\n // add the list item\n container = parser.addChild('item', parser.nextNonspace);\n container._listData = data;\n return 1;\n } else {\n return 0;\n }\n },\n\n // indented code block\n function(parser) {\n if (parser.indented &&\n parser.tip.type !== 'paragraph' &&\n !parser.blank) {\n // indented code\n parser.advanceOffset(CODE_INDENT, true);\n parser.closeUnmatchedBlocks();\n parser.addChild('code_block', parser.offset);\n return 2;\n } else {\n return 0;\n }\n }\n\n];\n\nvar advanceOffset = function(count, columns) {\n var currentLine = this.currentLine;\n var charsToTab, charsToAdvance;\n var c;\n while (count > 0 && (c = currentLine[this.offset])) {\n if (c === '\\t') {\n charsToTab = 4 - (this.column % 4);\n if (columns) {\n this.partiallyConsumedTab = charsToTab > count;\n charsToAdvance = charsToTab > count ? count : charsToTab;\n this.column += charsToAdvance;\n this.offset += this.partiallyConsumedTab ? 0 : 1;\n count -= charsToAdvance;\n } else {\n this.partiallyConsumedTab = false;\n this.column += charsToTab;\n this.offset += 1;\n count -= 1;\n }\n } else {\n this.partiallyConsumedTab = false;\n this.offset += 1;\n this.column += 1; // assume ascii; block starts are ascii\n count -= 1;\n }\n }\n};\n\nvar advanceNextNonspace = function() {\n this.offset = this.nextNonspace;\n this.column = this.nextNonspaceColumn;\n this.partiallyConsumedTab = false;\n};\n\nvar findNextNonspace = function() {\n var currentLine = this.currentLine;\n var i = this.offset;\n var cols = this.column;\n var c;\n\n while ((c = currentLine.charAt(i)) !== '') {\n if (c === ' ') {\n i++;\n cols++;\n } else if (c === '\\t') {\n i++;\n cols += (4 - (cols % 4));\n } else {\n break;\n }\n }\n this.blank = (c === '\\n' || c === '\\r' || c === '');\n this.nextNonspace = i;\n this.nextNonspaceColumn = cols;\n this.indent = this.nextNonspaceColumn - this.column;\n this.indented = this.indent >= CODE_INDENT;\n};\n\n// Analyze a line of text and update the document appropriately.\n// We parse markdown text by calling this on each line of input,\n// then finalizing the document.\nvar incorporateLine = function(ln) {\n var all_matched = true;\n var t;\n\n var container = this.doc;\n this.oldtip = this.tip;\n this.offset = 0;\n this.column = 0;\n this.blank = false;\n this.partiallyConsumedTab = false;\n this.lineNumber += 1;\n\n // replace NUL characters for security\n if (ln.indexOf('\\u0000') !== -1) {\n ln = ln.replace(/\\0/g, '\\uFFFD');\n }\n\n this.currentLine = ln;\n\n // For each containing block, try to parse the associated line start.\n // Bail out on failure: container will point to the last matching block.\n // Set all_matched to false if not all containers match.\n var lastChild;\n while ((lastChild = container._lastChild) && lastChild._open) {\n container = lastChild;\n\n this.findNextNonspace();\n\n switch (this.blocks[container.type].continue(this, container)) {\n case 0: // we've matched, keep going\n break;\n case 1: // we've failed to match a block\n all_matched = false;\n break;\n case 2: // we've hit end of line for fenced code close and can return\n this.lastLineLength = ln.length;\n return;\n default:\n throw 'continue returned illegal value, must be 0, 1, or 2';\n }\n if (!all_matched) {\n container = container._parent; // back up to last matching block\n break;\n }\n }\n\n this.allClosed = (container === this.oldtip);\n this.lastMatchedContainer = container;\n\n var matchedLeaf = container.type !== 'paragraph' &&\n blocks[container.type].acceptsLines;\n var starts = this.blockStarts;\n var startsLen = starts.length;\n // Unless last matched container is a code block, try new container starts,\n // adding children to the last matched container:\n while (!matchedLeaf) {\n\n this.findNextNonspace();\n\n // this is a little performance optimization:\n if (!this.indented &&\n !reMaybeSpecial.test(ln.slice(this.nextNonspace))) {\n this.advanceNextNonspace();\n break;\n }\n\n var i = 0;\n while (i < startsLen) {\n var res = starts[i](this, container);\n if (res === 1) {\n container = this.tip;\n break;\n } else if (res === 2) {\n container = this.tip;\n matchedLeaf = true;\n break;\n } else {\n i++;\n }\n }\n\n if (i === startsLen) { // nothing matched\n this.advanceNextNonspace();\n break;\n }\n }\n\n // What remains at the offset is a text line. Add the text to the\n // appropriate container.\n\n // First check for a lazy paragraph continuation:\n if (!this.allClosed && !this.blank &&\n this.tip.type === 'paragraph') {\n // lazy paragraph continuation\n this.addLine();\n\n } else { // not a lazy continuation\n\n // finalize any blocks not matched\n this.closeUnmatchedBlocks();\n if (this.blank && container.lastChild) {\n container.lastChild._lastLineBlank = true;\n }\n\n t = container.type;\n\n // Block quote lines are never blank as they start with >\n // and we don't count blanks in fenced code for purposes of tight/loose\n // lists or breaking out of lists. We also don't set _lastLineBlank\n // on an empty list item, or if we just closed a fenced block.\n var lastLineBlank = this.blank &&\n !(t === 'block_quote' ||\n (t === 'code_block' && container._isFenced) ||\n (t === 'item' &&\n !container._firstChild &&\n container.sourcepos[0][0] === this.lineNumber));\n\n // propagate lastLineBlank up through parents:\n var cont = container;\n while (cont) {\n cont._lastLineBlank = lastLineBlank;\n cont = cont._parent;\n }\n\n if (this.blocks[t].acceptsLines) {\n this.addLine();\n // if HtmlBlock, check for end condition\n if (t === 'html_block' &&\n container._htmlBlockType >= 1 &&\n container._htmlBlockType <= 5 &&\n reHtmlBlockClose[container._htmlBlockType].test(this.currentLine.slice(this.offset))) {\n this.finalize(container, this.lineNumber);\n }\n\n } else if (this.offset < ln.length && !this.blank) {\n // create paragraph container for line\n container = this.addChild('paragraph', this.offset);\n this.advanceNextNonspace();\n this.addLine();\n }\n }\n this.lastLineLength = ln.length;\n};\n\n// Finalize a block. Close it and do any necessary postprocessing,\n// e.g. creating string_content from strings, setting the 'tight'\n// or 'loose' status of a list, and parsing the beginnings\n// of paragraphs for reference definitions. Reset the tip to the\n// parent of the closed block.\nvar finalize = function(block, lineNumber) {\n var above = block._parent;\n block._open = false;\n block.sourcepos[1] = [lineNumber, this.lastLineLength];\n\n this.blocks[block.type].finalize(this, block);\n\n this.tip = above;\n};\n\n// Walk through a block & children recursively, parsing string content\n// into inline content where appropriate.\nvar processInlines = function(block) {\n var node, event, t;\n var walker = block.walker();\n this.inlineParser.refmap = this.refmap;\n this.inlineParser.options = this.options;\n while ((event = walker.next())) {\n node = event.node;\n t = node.type;\n if (!event.entering && (t === 'paragraph' || t === 'heading')) {\n this.inlineParser.parse(node);\n }\n }\n};\n\nvar Document = function() {\n var doc = new Node('document', [[1, 1], [0, 0]]);\n return doc;\n};\n\n// The main parsing function. Returns a parsed document AST.\nvar parse = function(input) {\n this.doc = new Document();\n this.tip = this.doc;\n this.refmap = {};\n this.lineNumber = 0;\n this.lastLineLength = 0;\n this.offset = 0;\n this.column = 0;\n this.lastMatchedContainer = this.doc;\n this.currentLine = \"\";\n if (this.options.time) { console.time(\"preparing input\"); }\n var lines = input.split(reLineEnding);\n var len = lines.length;\n if (input.charCodeAt(input.length - 1) === C_NEWLINE) {\n // ignore last blank line created by final newline\n len -= 1;\n }\n if (this.options.time) { console.timeEnd(\"preparing input\"); }\n if (this.options.time) { console.time(\"block parsing\"); }\n for (var i = 0; i < len; i++) {\n this.incorporateLine(lines[i]);\n }\n while (this.tip) {\n this.finalize(this.tip, len);\n }\n if (this.options.time) { console.timeEnd(\"block parsing\"); }\n if (this.options.time) { console.time(\"inline parsing\"); }\n this.processInlines(this.doc);\n if (this.options.time) { console.timeEnd(\"inline parsing\"); }\n return this.doc;\n};\n\n\n// The Parser object.\nfunction Parser(options){\n return {\n doc: new Document(),\n blocks: blocks,\n blockStarts: blockStarts,\n tip: this.doc,\n oldtip: this.doc,\n currentLine: \"\",\n lineNumber: 0,\n offset: 0,\n column: 0,\n nextNonspace: 0,\n nextNonspaceColumn: 0,\n indent: 0,\n indented: false,\n blank: false,\n partiallyConsumedTab: false,\n allClosed: true,\n lastMatchedContainer: this.doc,\n refmap: {},\n lastLineLength: 0,\n inlineParser: new InlineParser(options),\n findNextNonspace: findNextNonspace,\n advanceOffset: advanceOffset,\n advanceNextNonspace: advanceNextNonspace,\n addLine: addLine,\n addChild: addChild,\n incorporateLine: incorporateLine,\n finalize: finalize,\n processInlines: processInlines,\n closeUnmatchedBlocks: closeUnmatchedBlocks,\n parse: parse,\n options: options || {}\n };\n}\n\nmodule.exports = Parser;\n","\n'use strict';\n\n\nvar encodeCache = {};\n\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache(exclude) {\n var i, ch, cache = encodeCache[exclude];\n if (cache) { return cache; }\n\n cache = encodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache;\n}\n\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode(string, exclude, keepEscaped) {\n var i, l, code, nextCode, cache,\n result = '';\n\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode.defaultChars;\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n\n cache = getEncodeCache(exclude);\n\n for (i = 0, l = string.length; i < l; i++) {\n code = string.charCodeAt(i);\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n\n if (code < 128) {\n result += cache[code];\n continue;\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n result += '%EF%BF%BD';\n continue;\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result;\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\n\n\nmodule.exports = encode;\n","\n'use strict';\n\n\n/* eslint-disable no-bitwise */\n\nvar decodeCache = {};\n\nfunction getDecodeCache(exclude) {\n var i, ch, cache = decodeCache[exclude];\n if (cache) { return cache; }\n\n cache = decodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n cache.push(ch);\n }\n\n for (i = 0; i < exclude.length; i++) {\n ch = exclude.charCodeAt(i);\n cache[ch] = '%' + ('0' + ch.toString(16).toUpperCase()).slice(-2);\n }\n\n return cache;\n}\n\n\n// Decode percent-encoded string.\n//\nfunction decode(string, exclude) {\n var cache;\n\n if (typeof exclude !== 'string') {\n exclude = decode.defaultChars;\n }\n\n cache = getDecodeCache(exclude);\n\n return string.replace(/(%[a-f0-9]{2})+/gi, function(seq) {\n var i, l, b1, b2, b3, b4, chr,\n result = '';\n\n for (i = 0, l = seq.length; i < l; i += 3) {\n b1 = parseInt(seq.slice(i + 1, i + 3), 16);\n\n if (b1 < 0x80) {\n result += cache[b1];\n continue;\n }\n\n if ((b1 & 0xE0) === 0xC0 && (i + 3 < l)) {\n // 110xxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n\n if ((b2 & 0xC0) === 0x80) {\n chr = ((b1 << 6) & 0x7C0) | (b2 & 0x3F);\n\n if (chr < 0x80) {\n result += '\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 3;\n continue;\n }\n }\n\n if ((b1 & 0xF0) === 0xE0 && (i + 6 < l)) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n chr = ((b1 << 12) & 0xF000) | ((b2 << 6) & 0xFC0) | (b3 & 0x3F);\n\n if (chr < 0x800 || (chr >= 0xD800 && chr <= 0xDFFF)) {\n result += '\\ufffd\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 6;\n continue;\n }\n }\n\n if ((b1 & 0xF8) === 0xF0 && (i + 9 < l)) {\n // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n b4 = parseInt(seq.slice(i + 10, i + 12), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {\n chr = ((b1 << 18) & 0x1C0000) | ((b2 << 12) & 0x3F000) | ((b3 << 6) & 0xFC0) | (b4 & 0x3F);\n\n if (chr < 0x10000 || chr > 0x10FFFF) {\n result += '\\ufffd\\ufffd\\ufffd\\ufffd';\n } else {\n chr -= 0x10000;\n result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF));\n }\n\n i += 9;\n continue;\n }\n }\n\n result += '\\ufffd';\n }\n\n return result;\n });\n}\n\n\ndecode.defaultChars = ';/?:@&=+$,#';\ndecode.componentChars = '';\n\n\nmodule.exports = decode;\n","\"use strict\";\n\nvar Node = require('./node');\nvar common = require('./common');\nvar normalizeReference = require('./normalize-reference');\n\nvar normalizeURI = common.normalizeURI;\nvar unescapeString = common.unescapeString;\nvar fromCodePoint = require('./from-code-point.js');\nvar decodeHTML = require('entities').decodeHTML;\nrequire('string.prototype.repeat'); // Polyfill for String.prototype.repeat\n\n// Constants for character codes:\n\nvar C_NEWLINE = 10;\nvar C_ASTERISK = 42;\nvar C_UNDERSCORE = 95;\nvar C_BACKTICK = 96;\nvar C_OPEN_BRACKET = 91;\nvar C_CLOSE_BRACKET = 93;\nvar C_LESSTHAN = 60;\nvar C_BANG = 33;\nvar C_BACKSLASH = 92;\nvar C_AMPERSAND = 38;\nvar C_OPEN_PAREN = 40;\nvar C_CLOSE_PAREN = 41;\nvar C_COLON = 58;\nvar C_SINGLEQUOTE = 39;\nvar C_DOUBLEQUOTE = 34;\n\n// Some regexps used in inline parser:\n\nvar ESCAPABLE = common.ESCAPABLE;\nvar ESCAPED_CHAR = '\\\\\\\\' + ESCAPABLE;\n\nvar ENTITY = common.ENTITY;\nvar reHtmlTag = common.reHtmlTag;\n\nvar rePunctuation = new RegExp(/[!\"#$%&'()*+,\\-./:;<=>?@\\[\\]^_`{|}~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E42\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC9\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDF3C-\\uDF3E]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]/);\n\nvar reLinkTitle = new RegExp(\n '^(?:\"(' + ESCAPED_CHAR + '|[^\"\\\\x00])*\"' +\n '|' +\n '\\'(' + ESCAPED_CHAR + '|[^\\'\\\\x00])*\\'' +\n '|' +\n '\\\\((' + ESCAPED_CHAR + '|[^)\\\\x00])*\\\\))');\n\nvar reLinkDestinationBraces = new RegExp(\n '^(?:[<](?:[^ <>\\\\t\\\\n\\\\\\\\\\\\x00]' + '|' + ESCAPED_CHAR + '|' + '\\\\\\\\)*[>])');\n\nvar reEscapable = new RegExp('^' + ESCAPABLE);\n\nvar reEntityHere = new RegExp('^' + ENTITY, 'i');\n\nvar reTicks = /`+/;\n\nvar reTicksHere = /^`+/;\n\nvar reEllipses = /\\.\\.\\./g;\n\nvar reDash = /--+/g;\n\nvar reEmailAutolink = /^<([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/;\n\nvar reAutolink = /^<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\\x00-\\x20]*>/i;\n\nvar reSpnl = /^ *(?:\\n *)?/;\n\nvar reWhitespaceChar = /^[ \\t\\n\\x0b\\x0c\\x0d]/;\n\nvar reWhitespace = /[ \\t\\n\\x0b\\x0c\\x0d]+/g;\n\nvar reUnicodeWhitespaceChar = /^\\s/;\n\nvar reFinalSpace = / *$/;\n\nvar reInitialSpace = /^ */;\n\nvar reSpaceAtEndOfLine = /^ *(?:\\n|$)/;\n\nvar reLinkLabel = new RegExp('^\\\\[(?:[^\\\\\\\\\\\\[\\\\]]|' + ESCAPED_CHAR +\n '|\\\\\\\\){0,1000}\\\\]');\n\n// Matches a string of non-special characters.\nvar reMain = /^[^\\n`\\[\\]\\\\!<&*_'\"]+/m;\n\nvar text = function(s) {\n var node = new Node('text');\n node._literal = s;\n return node;\n};\n\n// INLINE PARSER\n\n// These are methods of an InlineParser object, defined below.\n// An InlineParser keeps track of a subject (a string to be\n// parsed) and a position in that subject.\n\n// If re matches at current position in the subject, advance\n// position in subject and return the match; otherwise return null.\nvar match = function(re) {\n var m = re.exec(this.subject.slice(this.pos));\n if (m === null) {\n return null;\n } else {\n this.pos += m.index + m[0].length;\n return m[0];\n }\n};\n\n// Returns the code for the character at the current subject position, or -1\n// there are no more characters.\nvar peek = function() {\n if (this.pos < this.subject.length) {\n return this.subject.charCodeAt(this.pos);\n } else {\n return -1;\n }\n};\n\n// Parse zero or more space characters, including at most one newline\nvar spnl = function() {\n this.match(reSpnl);\n return true;\n};\n\n// All of the parsers below try to match something at the current position\n// in the subject. If they succeed in matching anything, they\n// return the inline matched, advancing the subject.\n\n// Attempt to parse backticks, adding either a backtick code span or a\n// literal sequence of backticks.\nvar parseBackticks = function(block) {\n var ticks = this.match(reTicksHere);\n if (ticks === null) {\n return false;\n }\n var afterOpenTicks = this.pos;\n var matched;\n var node;\n while ((matched = this.match(reTicks)) !== null) {\n if (matched === ticks) {\n node = new Node('code');\n node._literal = this.subject.slice(afterOpenTicks,\n this.pos - ticks.length)\n .trim().replace(reWhitespace, ' ');\n block.appendChild(node);\n return true;\n }\n }\n // If we got here, we didn't match a closing backtick sequence.\n this.pos = afterOpenTicks;\n block.appendChild(text(ticks));\n return true;\n};\n\n// Parse a backslash-escaped special character, adding either the escaped\n// character, a hard line break (if the backslash is followed by a newline),\n// or a literal backslash to the block's children. Assumes current character\n// is a backslash.\nvar parseBackslash = function(block) {\n var subj = this.subject;\n var node;\n this.pos += 1;\n if (this.peek() === C_NEWLINE) {\n this.pos += 1;\n node = new Node('linebreak');\n block.appendChild(node);\n } else if (reEscapable.test(subj.charAt(this.pos))) {\n block.appendChild(text(subj.charAt(this.pos)));\n this.pos += 1;\n } else {\n block.appendChild(text('\\\\'));\n }\n return true;\n};\n\n// Attempt to parse an autolink (URL or email in pointy brackets).\nvar parseAutolink = function(block) {\n var m;\n var dest;\n var node;\n if ((m = this.match(reEmailAutolink))) {\n dest = m.slice(1, m.length - 1);\n node = new Node('link');\n node._destination = normalizeURI('mailto:' + dest);\n node._title = '';\n node.appendChild(text(dest));\n block.appendChild(node);\n return true;\n } else if ((m = this.match(reAutolink))) {\n dest = m.slice(1, m.length - 1);\n node = new Node('link');\n node._destination = normalizeURI(dest);\n node._title = '';\n node.appendChild(text(dest));\n block.appendChild(node);\n return true;\n } else {\n return false;\n }\n};\n\n// Attempt to parse a raw HTML tag.\nvar parseHtmlTag = function(block) {\n var m = this.match(reHtmlTag);\n if (m === null) {\n return false;\n } else {\n var node = new Node('html_inline');\n node._literal = m;\n block.appendChild(node);\n return true;\n }\n};\n\n// Scan a sequence of characters with code cc, and return information about\n// the number of delimiters and whether they are positioned such that\n// they can open and/or close emphasis or strong emphasis. A utility\n// function for strong/emph parsing.\nvar scanDelims = function(cc) {\n var numdelims = 0;\n var char_before, char_after, cc_after;\n var startpos = this.pos;\n var left_flanking, right_flanking, can_open, can_close;\n var after_is_whitespace, after_is_punctuation, before_is_whitespace, before_is_punctuation;\n\n if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {\n numdelims++;\n this.pos++;\n } else {\n while (this.peek() === cc) {\n numdelims++;\n this.pos++;\n }\n }\n\n if (numdelims === 0) {\n return null;\n }\n\n char_before = startpos === 0 ? '\\n' : this.subject.charAt(startpos - 1);\n\n cc_after = this.peek();\n if (cc_after === -1) {\n char_after = '\\n';\n } else {\n char_after = fromCodePoint(cc_after);\n }\n\n after_is_whitespace = reUnicodeWhitespaceChar.test(char_after);\n after_is_punctuation = rePunctuation.test(char_after);\n before_is_whitespace = reUnicodeWhitespaceChar.test(char_before);\n before_is_punctuation = rePunctuation.test(char_before);\n\n left_flanking = !after_is_whitespace &&\n (!after_is_punctuation || before_is_whitespace || before_is_punctuation);\n right_flanking = !before_is_whitespace &&\n (!before_is_punctuation || after_is_whitespace || after_is_punctuation);\n if (cc === C_UNDERSCORE) {\n can_open = left_flanking &&\n (!right_flanking || before_is_punctuation);\n can_close = right_flanking &&\n (!left_flanking || after_is_punctuation);\n } else if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {\n can_open = left_flanking && !right_flanking;\n can_close = right_flanking;\n } else {\n can_open = left_flanking;\n can_close = right_flanking;\n }\n this.pos = startpos;\n return { numdelims: numdelims,\n can_open: can_open,\n can_close: can_close };\n};\n\n// Handle a delimiter marker for emphasis or a quote.\nvar handleDelim = function(cc, block) {\n var res = this.scanDelims(cc);\n if (!res) {\n return false;\n }\n var numdelims = res.numdelims;\n var startpos = this.pos;\n var contents;\n\n this.pos += numdelims;\n if (cc === C_SINGLEQUOTE) {\n contents = \"\\u2019\";\n } else if (cc === C_DOUBLEQUOTE) {\n contents = \"\\u201C\";\n } else {\n contents = this.subject.slice(startpos, this.pos);\n }\n var node = text(contents);\n block.appendChild(node);\n\n // Add entry to stack for this opener\n this.delimiters = { cc: cc,\n numdelims: numdelims,\n origdelims: numdelims,\n node: node,\n previous: this.delimiters,\n next: null,\n can_open: res.can_open,\n can_close: res.can_close };\n if (this.delimiters.previous !== null) {\n this.delimiters.previous.next = this.delimiters;\n }\n\n return true;\n\n};\n\nvar removeDelimiter = function(delim) {\n if (delim.previous !== null) {\n delim.previous.next = delim.next;\n }\n if (delim.next === null) {\n // top of stack\n this.delimiters = delim.previous;\n } else {\n delim.next.previous = delim.previous;\n }\n};\n\nvar removeDelimitersBetween = function(bottom, top) {\n if (bottom.next !== top) {\n bottom.next = top;\n top.previous = bottom;\n }\n};\n\nvar processEmphasis = function(stack_bottom) {\n var opener, closer, old_closer;\n var opener_inl, closer_inl;\n var tempstack;\n var use_delims;\n var tmp, next;\n var opener_found;\n var openers_bottom = [];\n var odd_match = false;\n\n openers_bottom[C_UNDERSCORE] = stack_bottom;\n openers_bottom[C_ASTERISK] = stack_bottom;\n openers_bottom[C_SINGLEQUOTE] = stack_bottom;\n openers_bottom[C_DOUBLEQUOTE] = stack_bottom;\n\n // find first closer above stack_bottom:\n closer = this.delimiters;\n while (closer !== null && closer.previous !== stack_bottom) {\n closer = closer.previous;\n }\n // move forward, looking for closers, and handling each\n while (closer !== null) {\n var closercc = closer.cc;\n if (!closer.can_close) {\n closer = closer.next;\n } else {\n // found emphasis closer. now look back for first matching opener:\n opener = closer.previous;\n opener_found = false;\n while (opener !== null && opener !== stack_bottom &&\n opener !== openers_bottom[closercc]) {\n odd_match = (closer.can_open || opener.can_close) &&\n (opener.origdelims + closer.origdelims) % 3 === 0;\n if (opener.cc === closer.cc && opener.can_open && !odd_match) {\n opener_found = true;\n break;\n }\n opener = opener.previous;\n }\n old_closer = closer;\n\n if (closercc === C_ASTERISK || closercc === C_UNDERSCORE) {\n if (!opener_found) {\n closer = closer.next;\n } else {\n // calculate actual number of delimiters used from closer\n use_delims =\n (closer.numdelims >= 2 && opener.numdelims >= 2) ? 2 : 1;\n\n opener_inl = opener.node;\n closer_inl = closer.node;\n\n // remove used delimiters from stack elts and inlines\n opener.numdelims -= use_delims;\n closer.numdelims -= use_delims;\n opener_inl._literal =\n opener_inl._literal.slice(0,\n opener_inl._literal.length - use_delims);\n closer_inl._literal =\n closer_inl._literal.slice(0,\n closer_inl._literal.length - use_delims);\n\n // build contents for new emph element\n var emph = new Node(use_delims === 1 ? 'emph' : 'strong');\n\n tmp = opener_inl._next;\n while (tmp && tmp !== closer_inl) {\n next = tmp._next;\n tmp.unlink();\n emph.appendChild(tmp);\n tmp = next;\n }\n\n opener_inl.insertAfter(emph);\n\n // remove elts between opener and closer in delimiters stack\n removeDelimitersBetween(opener, closer);\n\n // if opener has 0 delims, remove it and the inline\n if (opener.numdelims === 0) {\n opener_inl.unlink();\n this.removeDelimiter(opener);\n }\n\n if (closer.numdelims === 0) {\n closer_inl.unlink();\n tempstack = closer.next;\n this.removeDelimiter(closer);\n closer = tempstack;\n }\n\n }\n\n } else if (closercc === C_SINGLEQUOTE) {\n closer.node._literal = \"\\u2019\";\n if (opener_found) {\n opener.node._literal = \"\\u2018\";\n }\n closer = closer.next;\n\n } else if (closercc === C_DOUBLEQUOTE) {\n closer.node._literal = \"\\u201D\";\n if (opener_found) {\n opener.node.literal = \"\\u201C\";\n }\n closer = closer.next;\n\n }\n if (!opener_found && !odd_match) {\n // Set lower bound for future searches for openers:\n // We don't do this with odd_match because a **\n // that doesn't match an earlier * might turn into\n // an opener, and the * might be matched by something\n // else.\n openers_bottom[closercc] = old_closer.previous;\n if (!old_closer.can_open) {\n // We can remove a closer that can't be an opener,\n // once we've seen there's no matching opener:\n this.removeDelimiter(old_closer);\n }\n }\n }\n\n }\n\n // remove all delimiters\n while (this.delimiters !== null && this.delimiters !== stack_bottom) {\n this.removeDelimiter(this.delimiters);\n }\n};\n\n// Attempt to parse link title (sans quotes), returning the string\n// or null if no match.\nvar parseLinkTitle = function() {\n var title = this.match(reLinkTitle);\n if (title === null) {\n return null;\n } else {\n // chop off quotes from title and unescape:\n return unescapeString(title.substr(1, title.length - 2));\n }\n};\n\n// Attempt to parse link destination, returning the string or\n// null if no match.\nvar parseLinkDestination = function() {\n var res = this.match(reLinkDestinationBraces);\n if (res === null) {\n // TODO handrolled parser; res should be null or the string\n var savepos = this.pos;\n var openparens = 0;\n var c;\n while ((c = this.peek()) !== -1) {\n if (c === C_BACKSLASH) {\n this.pos += 1;\n if (this.peek() !== -1) {\n this.pos += 1;\n }\n } else if (c === C_OPEN_PAREN) {\n this.pos += 1;\n openparens += 1;\n } else if (c === C_CLOSE_PAREN) {\n if (openparens < 1) {\n break;\n } else {\n this.pos += 1;\n openparens -= 1;\n }\n } else if (reWhitespaceChar.exec(fromCodePoint(c)) !== null) {\n break;\n } else {\n this.pos += 1;\n }\n }\n res = this.subject.substr(savepos, this.pos - savepos);\n return normalizeURI(unescapeString(res));\n } else { // chop off surrounding <..>:\n return normalizeURI(unescapeString(res.substr(1, res.length - 2)));\n }\n};\n\n// Attempt to parse a link label, returning number of characters parsed.\nvar parseLinkLabel = function() {\n var m = this.match(reLinkLabel);\n // Note: our regex will allow something of form [..\\];\n // we disallow it here rather than using lookahead in the regex:\n if (m === null || m.length > 1001 || /[^\\\\]\\\\\\]$/.exec(m)) {\n return 0;\n } else {\n return m.length;\n }\n};\n\n// Add open bracket to delimiter stack and add a text node to block's children.\nvar parseOpenBracket = function(block) {\n var startpos = this.pos;\n this.pos += 1;\n\n var node = text('[');\n block.appendChild(node);\n\n // Add entry to stack for this opener\n this.addBracket(node, startpos, false);\n return true;\n};\n\n// IF next character is [, and ! delimiter to delimiter stack and\n// add a text node to block's children. Otherwise just add a text node.\nvar parseBang = function(block) {\n var startpos = this.pos;\n this.pos += 1;\n if (this.peek() === C_OPEN_BRACKET) {\n this.pos += 1;\n\n var node = text('![');\n block.appendChild(node);\n\n // Add entry to stack for this opener\n this.addBracket(node, startpos + 1, true);\n } else {\n block.appendChild(text('!'));\n }\n return true;\n};\n\n// Try to match close bracket against an opening in the delimiter\n// stack. Add either a link or image, or a plain [ character,\n// to block's children. If there is a matching delimiter,\n// remove it from the delimiter stack.\nvar parseCloseBracket = function(block) {\n var startpos;\n var is_image;\n var dest;\n var title;\n var matched = false;\n var reflabel;\n var opener;\n\n this.pos += 1;\n startpos = this.pos;\n\n // get last [ or ![\n opener = this.brackets;\n\n if (opener === null) {\n // no matched opener, just return a literal\n block.appendChild(text(']'));\n return true;\n }\n\n if (!opener.active) {\n // no matched opener, just return a literal\n block.appendChild(text(']'));\n // take opener off brackets stack\n this.removeBracket();\n return true;\n }\n\n // If we got here, open is a potential opener\n is_image = opener.image;\n\n // Check to see if we have a link/image\n\n var savepos = this.pos;\n\n // Inline link?\n if (this.peek() === C_OPEN_PAREN) {\n this.pos++;\n if (this.spnl() &&\n ((dest = this.parseLinkDestination()) !== null) &&\n this.spnl() &&\n // make sure there's a space before the title:\n (reWhitespaceChar.test(this.subject.charAt(this.pos - 1)) &&\n (title = this.parseLinkTitle()) || true) &&\n this.spnl() &&\n this.peek() === C_CLOSE_PAREN) {\n this.pos += 1;\n matched = true;\n } else {\n this.pos = savepos;\n }\n }\n\n if (!matched) {\n\n // Next, see if there's a link label\n var beforelabel = this.pos;\n var n = this.parseLinkLabel();\n if (n > 2) {\n reflabel = this.subject.slice(beforelabel, beforelabel + n);\n } else if (!opener.bracketAfter) {\n // Empty or missing second label means to use the first label as the reference.\n // The reference must not contain a bracket. If we know there's a bracket, we don't even bother checking it.\n reflabel = this.subject.slice(opener.index, startpos);\n }\n if (n === 0) {\n // If shortcut reference link, rewind before spaces we skipped.\n this.pos = savepos;\n }\n\n if (reflabel) {\n // lookup rawlabel in refmap\n var link = this.refmap[normalizeReference(reflabel)];\n if (link) {\n dest = link.destination;\n title = link.title;\n matched = true;\n }\n }\n }\n\n if (matched) {\n var node = new Node(is_image ? 'image' : 'link');\n node._destination = dest;\n node._title = title || '';\n\n var tmp, next;\n tmp = opener.node._next;\n while (tmp) {\n next = tmp._next;\n tmp.unlink();\n node.appendChild(tmp);\n tmp = next;\n }\n block.appendChild(node);\n this.processEmphasis(opener.previousDelimiter);\n this.removeBracket();\n opener.node.unlink();\n\n // We remove this bracket and processEmphasis will remove later delimiters.\n // Now, for a link, we also deactivate earlier link openers.\n // (no links in links)\n if (!is_image) {\n opener = this.brackets;\n while (opener !== null) {\n if (!opener.image) {\n opener.active = false; // deactivate this opener\n }\n opener = opener.previous;\n }\n }\n\n return true;\n\n } else { // no match\n\n this.removeBracket(); // remove this opener from stack\n this.pos = startpos;\n block.appendChild(text(']'));\n return true;\n }\n\n};\n\nvar addBracket = function(node, index, image) {\n if (this.brackets !== null) {\n this.brackets.bracketAfter = true;\n }\n this.brackets = { node: node,\n previous: this.brackets,\n previousDelimiter: this.delimiters,\n index: index,\n image: image,\n active: true };\n};\n\nvar removeBracket = function() {\n this.brackets = this.brackets.previous;\n};\n\n// Attempt to parse an entity.\nvar parseEntity = function(block) {\n var m;\n if ((m = this.match(reEntityHere))) {\n block.appendChild(text(decodeHTML(m)));\n return true;\n } else {\n return false;\n }\n};\n\n// Parse a run of ordinary characters, or a single character with\n// a special meaning in markdown, as a plain string.\nvar parseString = function(block) {\n var m;\n if ((m = this.match(reMain))) {\n if (this.options.smart) {\n block.appendChild(text(\n m.replace(reEllipses, \"\\u2026\")\n .replace(reDash, function(chars) {\n var enCount = 0;\n var emCount = 0;\n if (chars.length % 3 === 0) { // If divisible by 3, use all em dashes\n emCount = chars.length / 3;\n } else if (chars.length % 2 === 0) { // If divisible by 2, use all en dashes\n enCount = chars.length / 2;\n } else if (chars.length % 3 === 2) { // If 2 extra dashes, use en dash for last 2; em dashes for rest\n enCount = 1;\n emCount = (chars.length - 2) / 3;\n } else { // Use en dashes for last 4 hyphens; em dashes for rest\n enCount = 2;\n emCount = (chars.length - 4) / 3;\n }\n return \"\\u2014\".repeat(emCount) + \"\\u2013\".repeat(enCount);\n })));\n } else {\n block.appendChild(text(m));\n }\n return true;\n } else {\n return false;\n }\n};\n\n// Parse a newline. If it was preceded by two spaces, return a hard\n// line break; otherwise a soft line break.\nvar parseNewline = function(block) {\n this.pos += 1; // assume we're at a \\n\n // check previous node for trailing spaces\n var lastc = block._lastChild;\n if (lastc && lastc.type === 'text' && lastc._literal[lastc._literal.length - 1] === ' ') {\n var hardbreak = lastc._literal[lastc._literal.length - 2] === ' ';\n lastc._literal = lastc._literal.replace(reFinalSpace, '');\n block.appendChild(new Node(hardbreak ? 'linebreak' : 'softbreak'));\n } else {\n block.appendChild(new Node('softbreak'));\n }\n this.match(reInitialSpace); // gobble leading spaces in next line\n return true;\n};\n\n// Attempt to parse a link reference, modifying refmap.\nvar parseReference = function(s, refmap) {\n this.subject = s;\n this.pos = 0;\n var rawlabel;\n var dest;\n var title;\n var matchChars;\n var startpos = this.pos;\n\n // label:\n matchChars = this.parseLinkLabel();\n if (matchChars === 0) {\n return 0;\n } else {\n rawlabel = this.subject.substr(0, matchChars);\n }\n\n // colon:\n if (this.peek() === C_COLON) {\n this.pos++;\n } else {\n this.pos = startpos;\n return 0;\n }\n\n // link url\n this.spnl();\n\n dest = this.parseLinkDestination();\n if (dest === null || dest.length === 0) {\n this.pos = startpos;\n return 0;\n }\n\n var beforetitle = this.pos;\n this.spnl();\n title = this.parseLinkTitle();\n if (title === null) {\n title = '';\n // rewind before spaces\n this.pos = beforetitle;\n }\n\n // make sure we're at line end:\n var atLineEnd = true;\n if (this.match(reSpaceAtEndOfLine) === null) {\n if (title === '') {\n atLineEnd = false;\n } else {\n // the potential title we found is not at the line end,\n // but it could still be a legal link reference if we\n // discard the title\n title = '';\n // rewind before spaces\n this.pos = beforetitle;\n // and instead check if the link URL is at the line end\n atLineEnd = this.match(reSpaceAtEndOfLine) !== null;\n }\n }\n\n if (!atLineEnd) {\n this.pos = startpos;\n return 0;\n }\n\n var normlabel = normalizeReference(rawlabel);\n if (normlabel === '') {\n // label must contain non-whitespace characters\n this.pos = startpos;\n return 0;\n }\n\n if (!refmap[normlabel]) {\n refmap[normlabel] = { destination: dest, title: title };\n }\n return this.pos - startpos;\n};\n\n// Parse the next inline element in subject, advancing subject position.\n// On success, add the result to block's children and return true.\n// On failure, return false.\nvar parseInline = function(block) {\n var res = false;\n var c = this.peek();\n if (c === -1) {\n return false;\n }\n switch(c) {\n case C_NEWLINE:\n res = this.parseNewline(block);\n break;\n case C_BACKSLASH:\n res = this.parseBackslash(block);\n break;\n case C_BACKTICK:\n res = this.parseBackticks(block);\n break;\n case C_ASTERISK:\n case C_UNDERSCORE:\n res = this.handleDelim(c, block);\n break;\n case C_SINGLEQUOTE:\n case C_DOUBLEQUOTE:\n res = this.options.smart && this.handleDelim(c, block);\n break;\n case C_OPEN_BRACKET:\n res = this.parseOpenBracket(block);\n break;\n case C_BANG:\n res = this.parseBang(block);\n break;\n case C_CLOSE_BRACKET:\n res = this.parseCloseBracket(block);\n break;\n case C_LESSTHAN:\n res = this.parseAutolink(block) || this.parseHtmlTag(block);\n break;\n case C_AMPERSAND:\n res = this.parseEntity(block);\n break;\n default:\n res = this.parseString(block);\n break;\n }\n if (!res) {\n this.pos += 1;\n block.appendChild(text(fromCodePoint(c)));\n }\n\n return true;\n};\n\n// Parse string content in block into inline children,\n// using refmap to resolve references.\nvar parseInlines = function(block) {\n this.subject = block._string_content.trim();\n this.pos = 0;\n this.delimiters = null;\n this.brackets = null;\n while (this.parseInline(block)) {\n }\n block._string_content = null; // allow raw string to be garbage collected\n this.processEmphasis(null);\n};\n\n// The InlineParser object.\nfunction InlineParser(options){\n return {\n subject: '',\n delimiters: null, // used by handleDelim method\n brackets: null,\n pos: 0,\n refmap: {},\n match: match,\n peek: peek,\n spnl: spnl,\n parseBackticks: parseBackticks,\n parseBackslash: parseBackslash,\n parseAutolink: parseAutolink,\n parseHtmlTag: parseHtmlTag,\n scanDelims: scanDelims,\n handleDelim: handleDelim,\n parseLinkTitle: parseLinkTitle,\n parseLinkDestination: parseLinkDestination,\n parseLinkLabel: parseLinkLabel,\n parseOpenBracket: parseOpenBracket,\n parseBang: parseBang,\n parseCloseBracket: parseCloseBracket,\n addBracket: addBracket,\n removeBracket: removeBracket,\n parseEntity: parseEntity,\n parseString: parseString,\n parseNewline: parseNewline,\n parseReference: parseReference,\n parseInline: parseInline,\n processEmphasis: processEmphasis,\n removeDelimiter: removeDelimiter,\n options: options || {},\n parse: parseInlines\n };\n}\n\nmodule.exports = InlineParser;\n","\"use strict\";\n\n/* The bulk of this code derives from https://github.com/dmoscrop/fold-case\nBut in addition to case-folding, we also normalize whitespace.\n\nfold-case is Copyright Mathias Bynens <https://mathiasbynens.be/>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\n/*eslint-disable key-spacing, comma-spacing */\n\nvar regex = /[ \\t\\r\\n]+|[A-Z\\xB5\\xC0-\\xD6\\xD8-\\xDF\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u0149\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u017F\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C5\\u01C7\\u01C8\\u01CA\\u01CB\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F0-\\u01F2\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0345\\u0370\\u0372\\u0376\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03AB\\u03B0\\u03C2\\u03CF-\\u03D1\\u03D5\\u03D6\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F0\\u03F1\\u03F4\\u03F5\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0528\\u052A\\u052C\\u052E\\u0531-\\u0556\\u0587\\u10A0-\\u10C5\\u10C7\\u10CD\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E96-\\u1E9B\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F50\\u1F52\\u1F54\\u1F56\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1F80-\\u1FAF\\u1FB2-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD2\\u1FD3\\u1FD6-\\u1FDB\\u1FE2-\\u1FE4\\u1FE6-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2126\\u212A\\u212B\\u2132\\u2160-\\u216F\\u2183\\u24B6-\\u24CF\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\u2CF2\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA698\\uA69A\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA792\\uA796\\uA798\\uA79A\\uA79C\\uA79E\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uA7AA-\\uA7AD\\uA7B0\\uA7B1\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF21-\\uFF3A]|\\uD801[\\uDC00-\\uDC27]|\\uD806[\\uDCA0-\\uDCBF]/g;\n\nvar map = {'A':'a','B':'b','C':'c','D':'d','E':'e','F':'f','G':'g','H':'h','I':'i','J':'j','K':'k','L':'l','M':'m','N':'n','O':'o','P':'p','Q':'q','R':'r','S':'s','T':'t','U':'u','V':'v','W':'w','X':'x','Y':'y','Z':'z','\\xB5':'\\u03BC','\\xC0':'\\xE0','\\xC1':'\\xE1','\\xC2':'\\xE2','\\xC3':'\\xE3','\\xC4':'\\xE4','\\xC5':'\\xE5','\\xC6':'\\xE6','\\xC7':'\\xE7','\\xC8':'\\xE8','\\xC9':'\\xE9','\\xCA':'\\xEA','\\xCB':'\\xEB','\\xCC':'\\xEC','\\xCD':'\\xED','\\xCE':'\\xEE','\\xCF':'\\xEF','\\xD0':'\\xF0','\\xD1':'\\xF1','\\xD2':'\\xF2','\\xD3':'\\xF3','\\xD4':'\\xF4','\\xD5':'\\xF5','\\xD6':'\\xF6','\\xD8':'\\xF8','\\xD9':'\\xF9','\\xDA':'\\xFA','\\xDB':'\\xFB','\\xDC':'\\xFC','\\xDD':'\\xFD','\\xDE':'\\xFE','\\u0100':'\\u0101','\\u0102':'\\u0103','\\u0104':'\\u0105','\\u0106':'\\u0107','\\u0108':'\\u0109','\\u010A':'\\u010B','\\u010C':'\\u010D','\\u010E':'\\u010F','\\u0110':'\\u0111','\\u0112':'\\u0113','\\u0114':'\\u0115','\\u0116':'\\u0117','\\u0118':'\\u0119','\\u011A':'\\u011B','\\u011C':'\\u011D','\\u011E':'\\u011F','\\u0120':'\\u0121','\\u0122':'\\u0123','\\u0124':'\\u0125','\\u0126':'\\u0127','\\u0128':'\\u0129','\\u012A':'\\u012B','\\u012C':'\\u012D','\\u012E':'\\u012F','\\u0132':'\\u0133','\\u0134':'\\u0135','\\u0136':'\\u0137','\\u0139':'\\u013A','\\u013B':'\\u013C','\\u013D':'\\u013E','\\u013F':'\\u0140','\\u0141':'\\u0142','\\u0143':'\\u0144','\\u0145':'\\u0146','\\u0147':'\\u0148','\\u014A':'\\u014B','\\u014C':'\\u014D','\\u014E':'\\u014F','\\u0150':'\\u0151','\\u0152':'\\u0153','\\u0154':'\\u0155','\\u0156':'\\u0157','\\u0158':'\\u0159','\\u015A':'\\u015B','\\u015C':'\\u015D','\\u015E':'\\u015F','\\u0160':'\\u0161','\\u0162':'\\u0163','\\u0164':'\\u0165','\\u0166':'\\u0167','\\u0168':'\\u0169','\\u016A':'\\u016B','\\u016C':'\\u016D','\\u016E':'\\u016F','\\u0170':'\\u0171','\\u0172':'\\u0173','\\u0174':'\\u0175','\\u0176':'\\u0177','\\u0178':'\\xFF','\\u0179':'\\u017A','\\u017B':'\\u017C','\\u017D':'\\u017E','\\u017F':'s','\\u0181':'\\u0253','\\u0182':'\\u0183','\\u0184':'\\u0185','\\u0186':'\\u0254','\\u0187':'\\u0188','\\u0189':'\\u0256','\\u018A':'\\u0257','\\u018B':'\\u018C','\\u018E':'\\u01DD','\\u018F':'\\u0259','\\u0190':'\\u025B','\\u0191':'\\u0192','\\u0193':'\\u0260','\\u0194':'\\u0263','\\u0196':'\\u0269','\\u0197':'\\u0268','\\u0198':'\\u0199','\\u019C':'\\u026F','\\u019D':'\\u0272','\\u019F':'\\u0275','\\u01A0':'\\u01A1','\\u01A2':'\\u01A3','\\u01A4':'\\u01A5','\\u01A6':'\\u0280','\\u01A7':'\\u01A8','\\u01A9':'\\u0283','\\u01AC':'\\u01AD','\\u01AE':'\\u0288','\\u01AF':'\\u01B0','\\u01B1':'\\u028A','\\u01B2':'\\u028B','\\u01B3':'\\u01B4','\\u01B5':'\\u01B6','\\u01B7':'\\u0292','\\u01B8':'\\u01B9','\\u01BC':'\\u01BD','\\u01C4':'\\u01C6','\\u01C5':'\\u01C6','\\u01C7':'\\u01C9','\\u01C8':'\\u01C9','\\u01CA':'\\u01CC','\\u01CB':'\\u01CC','\\u01CD':'\\u01CE','\\u01CF':'\\u01D0','\\u01D1':'\\u01D2','\\u01D3':'\\u01D4','\\u01D5':'\\u01D6','\\u01D7':'\\u01D8','\\u01D9':'\\u01DA','\\u01DB':'\\u01DC','\\u01DE':'\\u01DF','\\u01E0':'\\u01E1','\\u01E2':'\\u01E3','\\u01E4':'\\u01E5','\\u01E6':'\\u01E7','\\u01E8':'\\u01E9','\\u01EA':'\\u01EB','\\u01EC':'\\u01ED','\\u01EE':'\\u01EF','\\u01F1':'\\u01F3','\\u01F2':'\\u01F3','\\u01F4':'\\u01F5','\\u01F6':'\\u0195','\\u01F7':'\\u01BF','\\u01F8':'\\u01F9','\\u01FA':'\\u01FB','\\u01FC':'\\u01FD','\\u01FE':'\\u01FF','\\u0200':'\\u0201','\\u0202':'\\u0203','\\u0204':'\\u0205','\\u0206':'\\u0207','\\u0208':'\\u0209','\\u020A':'\\u020B','\\u020C':'\\u020D','\\u020E':'\\u020F','\\u0210':'\\u0211','\\u0212':'\\u0213','\\u0214':'\\u0215','\\u0216':'\\u0217','\\u0218':'\\u0219','\\u021A':'\\u021B','\\u021C':'\\u021D','\\u021E':'\\u021F','\\u0220':'\\u019E','\\u0222':'\\u0223','\\u0224':'\\u0225','\\u0226':'\\u0227','\\u0228':'\\u0229','\\u022A':'\\u022B','\\u022C':'\\u022D','\\u022E':'\\u022F','\\u0230':'\\u0231','\\u0232':'\\u0233','\\u023A':'\\u2C65','\\u023B':'\\u023C','\\u023D':'\\u019A','\\u023E':'\\u2C66','\\u0241':'\\u0242','\\u0243':'\\u0180','\\u0244':'\\u0289','\\u0245':'\\u028C','\\u0246':'\\u0247','\\u0248':'\\u0249','\\u024A':'\\u024B','\\u024C':'\\u024D','\\u024E':'\\u024F','\\u0345':'\\u03B9','\\u0370':'\\u0371','\\u0372':'\\u0373','\\u0376':'\\u0377','\\u037F':'\\u03F3','\\u0386':'\\u03AC','\\u0388':'\\u03AD','\\u0389':'\\u03AE','\\u038A':'\\u03AF','\\u038C':'\\u03CC','\\u038E':'\\u03CD','\\u038F':'\\u03CE','\\u0391':'\\u03B1','\\u0392':'\\u03B2','\\u0393':'\\u03B3','\\u0394':'\\u03B4','\\u0395':'\\u03B5','\\u0396':'\\u03B6','\\u0397':'\\u03B7','\\u0398':'\\u03B8','\\u0399':'\\u03B9','\\u039A':'\\u03BA','\\u039B':'\\u03BB','\\u039C':'\\u03BC','\\u039D':'\\u03BD','\\u039E':'\\u03BE','\\u039F':'\\u03BF','\\u03A0':'\\u03C0','\\u03A1':'\\u03C1','\\u03A3':'\\u03C3','\\u03A4':'\\u03C4','\\u03A5':'\\u03C5','\\u03A6':'\\u03C6','\\u03A7':'\\u03C7','\\u03A8':'\\u03C8','\\u03A9':'\\u03C9','\\u03AA':'\\u03CA','\\u03AB':'\\u03CB','\\u03C2':'\\u03C3','\\u03CF':'\\u03D7','\\u03D0':'\\u03B2','\\u03D1':'\\u03B8','\\u03D5':'\\u03C6','\\u03D6':'\\u03C0','\\u03D8':'\\u03D9','\\u03DA':'\\u03DB','\\u03DC':'\\u03DD','\\u03DE':'\\u03DF','\\u03E0':'\\u03E1','\\u03E2':'\\u03E3','\\u03E4':'\\u03E5','\\u03E6':'\\u03E7','\\u03E8':'\\u03E9','\\u03EA':'\\u03EB','\\u03EC':'\\u03ED','\\u03EE':'\\u03EF','\\u03F0':'\\u03BA','\\u03F1':'\\u03C1','\\u03F4':'\\u03B8','\\u03F5':'\\u03B5','\\u03F7':'\\u03F8','\\u03F9':'\\u03F2','\\u03FA':'\\u03FB','\\u03FD':'\\u037B','\\u03FE':'\\u037C','\\u03FF':'\\u037D','\\u0400':'\\u0450','\\u0401':'\\u0451','\\u0402':'\\u0452','\\u0403':'\\u0453','\\u0404':'\\u0454','\\u0405':'\\u0455','\\u0406':'\\u0456','\\u0407':'\\u0457','\\u0408':'\\u0458','\\u0409':'\\u0459','\\u040A':'\\u045A','\\u040B':'\\u045B','\\u040C':'\\u045C','\\u040D':'\\u045D','\\u040E':'\\u045E','\\u040F':'\\u045F','\\u0410':'\\u0430','\\u0411':'\\u0431','\\u0412':'\\u0432','\\u0413':'\\u0433','\\u0414':'\\u0434','\\u0415':'\\u0435','\\u0416':'\\u0436','\\u0417':'\\u0437','\\u0418':'\\u0438','\\u0419':'\\u0439','\\u041A':'\\u043A','\\u041B':'\\u043B','\\u041C':'\\u043C','\\u041D':'\\u043D','\\u041E':'\\u043E','\\u041F':'\\u043F','\\u0420':'\\u0440','\\u0421':'\\u0441','\\u0422':'\\u0442','\\u0423':'\\u0443','\\u0424':'\\u0444','\\u0425':'\\u0445','\\u0426':'\\u0446','\\u0427':'\\u0447','\\u0428':'\\u0448','\\u0429':'\\u0449','\\u042A':'\\u044A','\\u042B':'\\u044B','\\u042C':'\\u044C','\\u042D':'\\u044D','\\u042E':'\\u044E','\\u042F':'\\u044F','\\u0460':'\\u0461','\\u0462':'\\u0463','\\u0464':'\\u0465','\\u0466':'\\u0467','\\u0468':'\\u0469','\\u046A':'\\u046B','\\u046C':'\\u046D','\\u046E':'\\u046F','\\u0470':'\\u0471','\\u0472':'\\u0473','\\u0474':'\\u0475','\\u0476':'\\u0477','\\u0478':'\\u0479','\\u047A':'\\u047B','\\u047C':'\\u047D','\\u047E':'\\u047F','\\u0480':'\\u0481','\\u048A':'\\u048B','\\u048C':'\\u048D','\\u048E':'\\u048F','\\u0490':'\\u0491','\\u0492':'\\u0493','\\u0494':'\\u0495','\\u0496':'\\u0497','\\u0498':'\\u0499','\\u049A':'\\u049B','\\u049C':'\\u049D','\\u049E':'\\u049F','\\u04A0':'\\u04A1','\\u04A2':'\\u04A3','\\u04A4':'\\u04A5','\\u04A6':'\\u04A7','\\u04A8':'\\u04A9','\\u04AA':'\\u04AB','\\u04AC':'\\u04AD','\\u04AE':'\\u04AF','\\u04B0':'\\u04B1','\\u04B2':'\\u04B3','\\u04B4':'\\u04B5','\\u04B6':'\\u04B7','\\u04B8':'\\u04B9','\\u04BA':'\\u04BB','\\u04BC':'\\u04BD','\\u04BE':'\\u04BF','\\u04C0':'\\u04CF','\\u04C1':'\\u04C2','\\u04C3':'\\u04C4','\\u04C5':'\\u04C6','\\u04C7':'\\u04C8','\\u04C9':'\\u04CA','\\u04CB':'\\u04CC','\\u04CD':'\\u04CE','\\u04D0':'\\u04D1','\\u04D2':'\\u04D3','\\u04D4':'\\u04D5','\\u04D6':'\\u04D7','\\u04D8':'\\u04D9','\\u04DA':'\\u04DB','\\u04DC':'\\u04DD','\\u04DE':'\\u04DF','\\u04E0':'\\u04E1','\\u04E2':'\\u04E3','\\u04E4':'\\u04E5','\\u04E6':'\\u04E7','\\u04E8':'\\u04E9','\\u04EA':'\\u04EB','\\u04EC':'\\u04ED','\\u04EE':'\\u04EF','\\u04F0':'\\u04F1','\\u04F2':'\\u04F3','\\u04F4':'\\u04F5','\\u04F6':'\\u04F7','\\u04F8':'\\u04F9','\\u04FA':'\\u04FB','\\u04FC':'\\u04FD','\\u04FE':'\\u04FF','\\u0500':'\\u0501','\\u0502':'\\u0503','\\u0504':'\\u0505','\\u0506':'\\u0507','\\u0508':'\\u0509','\\u050A':'\\u050B','\\u050C':'\\u050D','\\u050E':'\\u050F','\\u0510':'\\u0511','\\u0512':'\\u0513','\\u0514':'\\u0515','\\u0516':'\\u0517','\\u0518':'\\u0519','\\u051A':'\\u051B','\\u051C':'\\u051D','\\u051E':'\\u051F','\\u0520':'\\u0521','\\u0522':'\\u0523','\\u0524':'\\u0525','\\u0526':'\\u0527','\\u0528':'\\u0529','\\u052A':'\\u052B','\\u052C':'\\u052D','\\u052E':'\\u052F','\\u0531':'\\u0561','\\u0532':'\\u0562','\\u0533':'\\u0563','\\u0534':'\\u0564','\\u0535':'\\u0565','\\u0536':'\\u0566','\\u0537':'\\u0567','\\u0538':'\\u0568','\\u0539':'\\u0569','\\u053A':'\\u056A','\\u053B':'\\u056B','\\u053C':'\\u056C','\\u053D':'\\u056D','\\u053E':'\\u056E','\\u053F':'\\u056F','\\u0540':'\\u0570','\\u0541':'\\u0571','\\u0542':'\\u0572','\\u0543':'\\u0573','\\u0544':'\\u0574','\\u0545':'\\u0575','\\u0546':'\\u0576','\\u0547':'\\u0577','\\u0548':'\\u0578','\\u0549':'\\u0579','\\u054A':'\\u057A','\\u054B':'\\u057B','\\u054C':'\\u057C','\\u054D':'\\u057D','\\u054E':'\\u057E','\\u054F':'\\u057F','\\u0550':'\\u0580','\\u0551':'\\u0581','\\u0552':'\\u0582','\\u0553':'\\u0583','\\u0554':'\\u0584','\\u0555':'\\u0585','\\u0556':'\\u0586','\\u10A0':'\\u2D00','\\u10A1':'\\u2D01','\\u10A2':'\\u2D02','\\u10A3':'\\u2D03','\\u10A4':'\\u2D04','\\u10A5':'\\u2D05','\\u10A6':'\\u2D06','\\u10A7':'\\u2D07','\\u10A8':'\\u2D08','\\u10A9':'\\u2D09','\\u10AA':'\\u2D0A','\\u10AB':'\\u2D0B','\\u10AC':'\\u2D0C','\\u10AD':'\\u2D0D','\\u10AE':'\\u2D0E','\\u10AF':'\\u2D0F','\\u10B0':'\\u2D10','\\u10B1':'\\u2D11','\\u10B2':'\\u2D12','\\u10B3':'\\u2D13','\\u10B4':'\\u2D14','\\u10B5':'\\u2D15','\\u10B6':'\\u2D16','\\u10B7':'\\u2D17','\\u10B8':'\\u2D18','\\u10B9':'\\u2D19','\\u10BA':'\\u2D1A','\\u10BB':'\\u2D1B','\\u10BC':'\\u2D1C','\\u10BD':'\\u2D1D','\\u10BE':'\\u2D1E','\\u10BF':'\\u2D1F','\\u10C0':'\\u2D20','\\u10C1':'\\u2D21','\\u10C2':'\\u2D22','\\u10C3':'\\u2D23','\\u10C4':'\\u2D24','\\u10C5':'\\u2D25','\\u10C7':'\\u2D27','\\u10CD':'\\u2D2D','\\u1E00':'\\u1E01','\\u1E02':'\\u1E03','\\u1E04':'\\u1E05','\\u1E06':'\\u1E07','\\u1E08':'\\u1E09','\\u1E0A':'\\u1E0B','\\u1E0C':'\\u1E0D','\\u1E0E':'\\u1E0F','\\u1E10':'\\u1E11','\\u1E12':'\\u1E13','\\u1E14':'\\u1E15','\\u1E16':'\\u1E17','\\u1E18':'\\u1E19','\\u1E1A':'\\u1E1B','\\u1E1C':'\\u1E1D','\\u1E1E':'\\u1E1F','\\u1E20':'\\u1E21','\\u1E22':'\\u1E23','\\u1E24':'\\u1E25','\\u1E26':'\\u1E27','\\u1E28':'\\u1E29','\\u1E2A':'\\u1E2B','\\u1E2C':'\\u1E2D','\\u1E2E':'\\u1E2F','\\u1E30':'\\u1E31','\\u1E32':'\\u1E33','\\u1E34':'\\u1E35','\\u1E36':'\\u1E37','\\u1E38':'\\u1E39','\\u1E3A':'\\u1E3B','\\u1E3C':'\\u1E3D','\\u1E3E':'\\u1E3F','\\u1E40':'\\u1E41','\\u1E42':'\\u1E43','\\u1E44':'\\u1E45','\\u1E46':'\\u1E47','\\u1E48':'\\u1E49','\\u1E4A':'\\u1E4B','\\u1E4C':'\\u1E4D','\\u1E4E':'\\u1E4F','\\u1E50':'\\u1E51','\\u1E52':'\\u1E53','\\u1E54':'\\u1E55','\\u1E56':'\\u1E57','\\u1E58':'\\u1E59','\\u1E5A':'\\u1E5B','\\u1E5C':'\\u1E5D','\\u1E5E':'\\u1E5F','\\u1E60':'\\u1E61','\\u1E62':'\\u1E63','\\u1E64':'\\u1E65','\\u1E66':'\\u1E67','\\u1E68':'\\u1E69','\\u1E6A':'\\u1E6B','\\u1E6C':'\\u1E6D','\\u1E6E':'\\u1E6F','\\u1E70':'\\u1E71','\\u1E72':'\\u1E73','\\u1E74':'\\u1E75','\\u1E76':'\\u1E77','\\u1E78':'\\u1E79','\\u1E7A':'\\u1E7B','\\u1E7C':'\\u1E7D','\\u1E7E':'\\u1E7F','\\u1E80':'\\u1E81','\\u1E82':'\\u1E83','\\u1E84':'\\u1E85','\\u1E86':'\\u1E87','\\u1E88':'\\u1E89','\\u1E8A':'\\u1E8B','\\u1E8C':'\\u1E8D','\\u1E8E':'\\u1E8F','\\u1E90':'\\u1E91','\\u1E92':'\\u1E93','\\u1E94':'\\u1E95','\\u1E9B':'\\u1E61','\\u1EA0':'\\u1EA1','\\u1EA2':'\\u1EA3','\\u1EA4':'\\u1EA5','\\u1EA6':'\\u1EA7','\\u1EA8':'\\u1EA9','\\u1EAA':'\\u1EAB','\\u1EAC':'\\u1EAD','\\u1EAE':'\\u1EAF','\\u1EB0':'\\u1EB1','\\u1EB2':'\\u1EB3','\\u1EB4':'\\u1EB5','\\u1EB6':'\\u1EB7','\\u1EB8':'\\u1EB9','\\u1EBA':'\\u1EBB','\\u1EBC':'\\u1EBD','\\u1EBE':'\\u1EBF','\\u1EC0':'\\u1EC1','\\u1EC2':'\\u1EC3','\\u1EC4':'\\u1EC5','\\u1EC6':'\\u1EC7','\\u1EC8':'\\u1EC9','\\u1ECA':'\\u1ECB','\\u1ECC':'\\u1ECD','\\u1ECE':'\\u1ECF','\\u1ED0':'\\u1ED1','\\u1ED2':'\\u1ED3','\\u1ED4':'\\u1ED5','\\u1ED6':'\\u1ED7','\\u1ED8':'\\u1ED9','\\u1EDA':'\\u1EDB','\\u1EDC':'\\u1EDD','\\u1EDE':'\\u1EDF','\\u1EE0':'\\u1EE1','\\u1EE2':'\\u1EE3','\\u1EE4':'\\u1EE5','\\u1EE6':'\\u1EE7','\\u1EE8':'\\u1EE9','\\u1EEA':'\\u1EEB','\\u1EEC':'\\u1EED','\\u1EEE':'\\u1EEF','\\u1EF0':'\\u1EF1','\\u1EF2':'\\u1EF3','\\u1EF4':'\\u1EF5','\\u1EF6':'\\u1EF7','\\u1EF8':'\\u1EF9','\\u1EFA':'\\u1EFB','\\u1EFC':'\\u1EFD','\\u1EFE':'\\u1EFF','\\u1F08':'\\u1F00','\\u1F09':'\\u1F01','\\u1F0A':'\\u1F02','\\u1F0B':'\\u1F03','\\u1F0C':'\\u1F04','\\u1F0D':'\\u1F05','\\u1F0E':'\\u1F06','\\u1F0F':'\\u1F07','\\u1F18':'\\u1F10','\\u1F19':'\\u1F11','\\u1F1A':'\\u1F12','\\u1F1B':'\\u1F13','\\u1F1C':'\\u1F14','\\u1F1D':'\\u1F15','\\u1F28':'\\u1F20','\\u1F29':'\\u1F21','\\u1F2A':'\\u1F22','\\u1F2B':'\\u1F23','\\u1F2C':'\\u1F24','\\u1F2D':'\\u1F25','\\u1F2E':'\\u1F26','\\u1F2F':'\\u1F27','\\u1F38':'\\u1F30','\\u1F39':'\\u1F31','\\u1F3A':'\\u1F32','\\u1F3B':'\\u1F33','\\u1F3C':'\\u1F34','\\u1F3D':'\\u1F35','\\u1F3E':'\\u1F36','\\u1F3F':'\\u1F37','\\u1F48':'\\u1F40','\\u1F49':'\\u1F41','\\u1F4A':'\\u1F42','\\u1F4B':'\\u1F43','\\u1F4C':'\\u1F44','\\u1F4D':'\\u1F45','\\u1F59':'\\u1F51','\\u1F5B':'\\u1F53','\\u1F5D':'\\u1F55','\\u1F5F':'\\u1F57','\\u1F68':'\\u1F60','\\u1F69':'\\u1F61','\\u1F6A':'\\u1F62','\\u1F6B':'\\u1F63','\\u1F6C':'\\u1F64','\\u1F6D':'\\u1F65','\\u1F6E':'\\u1F66','\\u1F6F':'\\u1F67','\\u1FB8':'\\u1FB0','\\u1FB9':'\\u1FB1','\\u1FBA':'\\u1F70','\\u1FBB':'\\u1F71','\\u1FBE':'\\u03B9','\\u1FC8':'\\u1F72','\\u1FC9':'\\u1F73','\\u1FCA':'\\u1F74','\\u1FCB':'\\u1F75','\\u1FD8':'\\u1FD0','\\u1FD9':'\\u1FD1','\\u1FDA':'\\u1F76','\\u1FDB':'\\u1F77','\\u1FE8':'\\u1FE0','\\u1FE9':'\\u1FE1','\\u1FEA':'\\u1F7A','\\u1FEB':'\\u1F7B','\\u1FEC':'\\u1FE5','\\u1FF8':'\\u1F78','\\u1FF9':'\\u1F79','\\u1FFA':'\\u1F7C','\\u1FFB':'\\u1F7D','\\u2126':'\\u03C9','\\u212A':'k','\\u212B':'\\xE5','\\u2132':'\\u214E','\\u2160':'\\u2170','\\u2161':'\\u2171','\\u2162':'\\u2172','\\u2163':'\\u2173','\\u2164':'\\u2174','\\u2165':'\\u2175','\\u2166':'\\u2176','\\u2167':'\\u2177','\\u2168':'\\u2178','\\u2169':'\\u2179','\\u216A':'\\u217A','\\u216B':'\\u217B','\\u216C':'\\u217C','\\u216D':'\\u217D','\\u216E':'\\u217E','\\u216F':'\\u217F','\\u2183':'\\u2184','\\u24B6':'\\u24D0','\\u24B7':'\\u24D1','\\u24B8':'\\u24D2','\\u24B9':'\\u24D3','\\u24BA':'\\u24D4','\\u24BB':'\\u24D5','\\u24BC':'\\u24D6','\\u24BD':'\\u24D7','\\u24BE':'\\u24D8','\\u24BF':'\\u24D9','\\u24C0':'\\u24DA','\\u24C1':'\\u24DB','\\u24C2':'\\u24DC','\\u24C3':'\\u24DD','\\u24C4':'\\u24DE','\\u24C5':'\\u24DF','\\u24C6':'\\u24E0','\\u24C7':'\\u24E1','\\u24C8':'\\u24E2','\\u24C9':'\\u24E3','\\u24CA':'\\u24E4','\\u24CB':'\\u24E5','\\u24CC':'\\u24E6','\\u24CD':'\\u24E7','\\u24CE':'\\u24E8','\\u24CF':'\\u24E9','\\u2C00':'\\u2C30','\\u2C01':'\\u2C31','\\u2C02':'\\u2C32','\\u2C03':'\\u2C33','\\u2C04':'\\u2C34','\\u2C05':'\\u2C35','\\u2C06':'\\u2C36','\\u2C07':'\\u2C37','\\u2C08':'\\u2C38','\\u2C09':'\\u2C39','\\u2C0A':'\\u2C3A','\\u2C0B':'\\u2C3B','\\u2C0C':'\\u2C3C','\\u2C0D':'\\u2C3D','\\u2C0E':'\\u2C3E','\\u2C0F':'\\u2C3F','\\u2C10':'\\u2C40','\\u2C11':'\\u2C41','\\u2C12':'\\u2C42','\\u2C13':'\\u2C43','\\u2C14':'\\u2C44','\\u2C15':'\\u2C45','\\u2C16':'\\u2C46','\\u2C17':'\\u2C47','\\u2C18':'\\u2C48','\\u2C19':'\\u2C49','\\u2C1A':'\\u2C4A','\\u2C1B':'\\u2C4B','\\u2C1C':'\\u2C4C','\\u2C1D':'\\u2C4D','\\u2C1E':'\\u2C4E','\\u2C1F':'\\u2C4F','\\u2C20':'\\u2C50','\\u2C21':'\\u2C51','\\u2C22':'\\u2C52','\\u2C23':'\\u2C53','\\u2C24':'\\u2C54','\\u2C25':'\\u2C55','\\u2C26':'\\u2C56','\\u2C27':'\\u2C57','\\u2C28':'\\u2C58','\\u2C29':'\\u2C59','\\u2C2A':'\\u2C5A','\\u2C2B':'\\u2C5B','\\u2C2C':'\\u2C5C','\\u2C2D':'\\u2C5D','\\u2C2E':'\\u2C5E','\\u2C60':'\\u2C61','\\u2C62':'\\u026B','\\u2C63':'\\u1D7D','\\u2C64':'\\u027D','\\u2C67':'\\u2C68','\\u2C69':'\\u2C6A','\\u2C6B':'\\u2C6C','\\u2C6D':'\\u0251','\\u2C6E':'\\u0271','\\u2C6F':'\\u0250','\\u2C70':'\\u0252','\\u2C72':'\\u2C73','\\u2C75':'\\u2C76','\\u2C7E':'\\u023F','\\u2C7F':'\\u0240','\\u2C80':'\\u2C81','\\u2C82':'\\u2C83','\\u2C84':'\\u2C85','\\u2C86':'\\u2C87','\\u2C88':'\\u2C89','\\u2C8A':'\\u2C8B','\\u2C8C':'\\u2C8D','\\u2C8E':'\\u2C8F','\\u2C90':'\\u2C91','\\u2C92':'\\u2C93','\\u2C94':'\\u2C95','\\u2C96':'\\u2C97','\\u2C98':'\\u2C99','\\u2C9A':'\\u2C9B','\\u2C9C':'\\u2C9D','\\u2C9E':'\\u2C9F','\\u2CA0':'\\u2CA1','\\u2CA2':'\\u2CA3','\\u2CA4':'\\u2CA5','\\u2CA6':'\\u2CA7','\\u2CA8':'\\u2CA9','\\u2CAA':'\\u2CAB','\\u2CAC':'\\u2CAD','\\u2CAE':'\\u2CAF','\\u2CB0':'\\u2CB1','\\u2CB2':'\\u2CB3','\\u2CB4':'\\u2CB5','\\u2CB6':'\\u2CB7','\\u2CB8':'\\u2CB9','\\u2CBA':'\\u2CBB','\\u2CBC':'\\u2CBD','\\u2CBE':'\\u2CBF','\\u2CC0':'\\u2CC1','\\u2CC2':'\\u2CC3','\\u2CC4':'\\u2CC5','\\u2CC6':'\\u2CC7','\\u2CC8':'\\u2CC9','\\u2CCA':'\\u2CCB','\\u2CCC':'\\u2CCD','\\u2CCE':'\\u2CCF','\\u2CD0':'\\u2CD1','\\u2CD2':'\\u2CD3','\\u2CD4':'\\u2CD5','\\u2CD6':'\\u2CD7','\\u2CD8':'\\u2CD9','\\u2CDA':'\\u2CDB','\\u2CDC':'\\u2CDD','\\u2CDE':'\\u2CDF','\\u2CE0':'\\u2CE1','\\u2CE2':'\\u2CE3','\\u2CEB':'\\u2CEC','\\u2CED':'\\u2CEE','\\u2CF2':'\\u2CF3','\\uA640':'\\uA641','\\uA642':'\\uA643','\\uA644':'\\uA645','\\uA646':'\\uA647','\\uA648':'\\uA649','\\uA64A':'\\uA64B','\\uA64C':'\\uA64D','\\uA64E':'\\uA64F','\\uA650':'\\uA651','\\uA652':'\\uA653','\\uA654':'\\uA655','\\uA656':'\\uA657','\\uA658':'\\uA659','\\uA65A':'\\uA65B','\\uA65C':'\\uA65D','\\uA65E':'\\uA65F','\\uA660':'\\uA661','\\uA662':'\\uA663','\\uA664':'\\uA665','\\uA666':'\\uA667','\\uA668':'\\uA669','\\uA66A':'\\uA66B','\\uA66C':'\\uA66D','\\uA680':'\\uA681','\\uA682':'\\uA683','\\uA684':'\\uA685','\\uA686':'\\uA687','\\uA688':'\\uA689','\\uA68A':'\\uA68B','\\uA68C':'\\uA68D','\\uA68E':'\\uA68F','\\uA690':'\\uA691','\\uA692':'\\uA693','\\uA694':'\\uA695','\\uA696':'\\uA697','\\uA698':'\\uA699','\\uA69A':'\\uA69B','\\uA722':'\\uA723','\\uA724':'\\uA725','\\uA726':'\\uA727','\\uA728':'\\uA729','\\uA72A':'\\uA72B','\\uA72C':'\\uA72D','\\uA72E':'\\uA72F','\\uA732':'\\uA733','\\uA734':'\\uA735','\\uA736':'\\uA737','\\uA738':'\\uA739','\\uA73A':'\\uA73B','\\uA73C':'\\uA73D','\\uA73E':'\\uA73F','\\uA740':'\\uA741','\\uA742':'\\uA743','\\uA744':'\\uA745','\\uA746':'\\uA747','\\uA748':'\\uA749','\\uA74A':'\\uA74B','\\uA74C':'\\uA74D','\\uA74E':'\\uA74F','\\uA750':'\\uA751','\\uA752':'\\uA753','\\uA754':'\\uA755','\\uA756':'\\uA757','\\uA758':'\\uA759','\\uA75A':'\\uA75B','\\uA75C':'\\uA75D','\\uA75E':'\\uA75F','\\uA760':'\\uA761','\\uA762':'\\uA763','\\uA764':'\\uA765','\\uA766':'\\uA767','\\uA768':'\\uA769','\\uA76A':'\\uA76B','\\uA76C':'\\uA76D','\\uA76E':'\\uA76F','\\uA779':'\\uA77A','\\uA77B':'\\uA77C','\\uA77D':'\\u1D79','\\uA77E':'\\uA77F','\\uA780':'\\uA781','\\uA782':'\\uA783','\\uA784':'\\uA785','\\uA786':'\\uA787','\\uA78B':'\\uA78C','\\uA78D':'\\u0265','\\uA790':'\\uA791','\\uA792':'\\uA793','\\uA796':'\\uA797','\\uA798':'\\uA799','\\uA79A':'\\uA79B','\\uA79C':'\\uA79D','\\uA79E':'\\uA79F','\\uA7A0':'\\uA7A1','\\uA7A2':'\\uA7A3','\\uA7A4':'\\uA7A5','\\uA7A6':'\\uA7A7','\\uA7A8':'\\uA7A9','\\uA7AA':'\\u0266','\\uA7AB':'\\u025C','\\uA7AC':'\\u0261','\\uA7AD':'\\u026C','\\uA7B0':'\\u029E','\\uA7B1':'\\u0287','\\uFF21':'\\uFF41','\\uFF22':'\\uFF42','\\uFF23':'\\uFF43','\\uFF24':'\\uFF44','\\uFF25':'\\uFF45','\\uFF26':'\\uFF46','\\uFF27':'\\uFF47','\\uFF28':'\\uFF48','\\uFF29':'\\uFF49','\\uFF2A':'\\uFF4A','\\uFF2B':'\\uFF4B','\\uFF2C':'\\uFF4C','\\uFF2D':'\\uFF4D','\\uFF2E':'\\uFF4E','\\uFF2F':'\\uFF4F','\\uFF30':'\\uFF50','\\uFF31':'\\uFF51','\\uFF32':'\\uFF52','\\uFF33':'\\uFF53','\\uFF34':'\\uFF54','\\uFF35':'\\uFF55','\\uFF36':'\\uFF56','\\uFF37':'\\uFF57','\\uFF38':'\\uFF58','\\uFF39':'\\uFF59','\\uFF3A':'\\uFF5A','\\uD801\\uDC00':'\\uD801\\uDC28','\\uD801\\uDC01':'\\uD801\\uDC29','\\uD801\\uDC02':'\\uD801\\uDC2A','\\uD801\\uDC03':'\\uD801\\uDC2B','\\uD801\\uDC04':'\\uD801\\uDC2C','\\uD801\\uDC05':'\\uD801\\uDC2D','\\uD801\\uDC06':'\\uD801\\uDC2E','\\uD801\\uDC07':'\\uD801\\uDC2F','\\uD801\\uDC08':'\\uD801\\uDC30','\\uD801\\uDC09':'\\uD801\\uDC31','\\uD801\\uDC0A':'\\uD801\\uDC32','\\uD801\\uDC0B':'\\uD801\\uDC33','\\uD801\\uDC0C':'\\uD801\\uDC34','\\uD801\\uDC0D':'\\uD801\\uDC35','\\uD801\\uDC0E':'\\uD801\\uDC36','\\uD801\\uDC0F':'\\uD801\\uDC37','\\uD801\\uDC10':'\\uD801\\uDC38','\\uD801\\uDC11':'\\uD801\\uDC39','\\uD801\\uDC12':'\\uD801\\uDC3A','\\uD801\\uDC13':'\\uD801\\uDC3B','\\uD801\\uDC14':'\\uD801\\uDC3C','\\uD801\\uDC15':'\\uD801\\uDC3D','\\uD801\\uDC16':'\\uD801\\uDC3E','\\uD801\\uDC17':'\\uD801\\uDC3F','\\uD801\\uDC18':'\\uD801\\uDC40','\\uD801\\uDC19':'\\uD801\\uDC41','\\uD801\\uDC1A':'\\uD801\\uDC42','\\uD801\\uDC1B':'\\uD801\\uDC43','\\uD801\\uDC1C':'\\uD801\\uDC44','\\uD801\\uDC1D':'\\uD801\\uDC45','\\uD801\\uDC1E':'\\uD801\\uDC46','\\uD801\\uDC1F':'\\uD801\\uDC47','\\uD801\\uDC20':'\\uD801\\uDC48','\\uD801\\uDC21':'\\uD801\\uDC49','\\uD801\\uDC22':'\\uD801\\uDC4A','\\uD801\\uDC23':'\\uD801\\uDC4B','\\uD801\\uDC24':'\\uD801\\uDC4C','\\uD801\\uDC25':'\\uD801\\uDC4D','\\uD801\\uDC26':'\\uD801\\uDC4E','\\uD801\\uDC27':'\\uD801\\uDC4F','\\uD806\\uDCA0':'\\uD806\\uDCC0','\\uD806\\uDCA1':'\\uD806\\uDCC1','\\uD806\\uDCA2':'\\uD806\\uDCC2','\\uD806\\uDCA3':'\\uD806\\uDCC3','\\uD806\\uDCA4':'\\uD806\\uDCC4','\\uD806\\uDCA5':'\\uD806\\uDCC5','\\uD806\\uDCA6':'\\uD806\\uDCC6','\\uD806\\uDCA7':'\\uD806\\uDCC7','\\uD806\\uDCA8':'\\uD806\\uDCC8','\\uD806\\uDCA9':'\\uD806\\uDCC9','\\uD806\\uDCAA':'\\uD806\\uDCCA','\\uD806\\uDCAB':'\\uD806\\uDCCB','\\uD806\\uDCAC':'\\uD806\\uDCCC','\\uD806\\uDCAD':'\\uD806\\uDCCD','\\uD806\\uDCAE':'\\uD806\\uDCCE','\\uD806\\uDCAF':'\\uD806\\uDCCF','\\uD806\\uDCB0':'\\uD806\\uDCD0','\\uD806\\uDCB1':'\\uD806\\uDCD1','\\uD806\\uDCB2':'\\uD806\\uDCD2','\\uD806\\uDCB3':'\\uD806\\uDCD3','\\uD806\\uDCB4':'\\uD806\\uDCD4','\\uD806\\uDCB5':'\\uD806\\uDCD5','\\uD806\\uDCB6':'\\uD806\\uDCD6','\\uD806\\uDCB7':'\\uD806\\uDCD7','\\uD806\\uDCB8':'\\uD806\\uDCD8','\\uD806\\uDCB9':'\\uD806\\uDCD9','\\uD806\\uDCBA':'\\uD806\\uDCDA','\\uD806\\uDCBB':'\\uD806\\uDCDB','\\uD806\\uDCBC':'\\uD806\\uDCDC','\\uD806\\uDCBD':'\\uD806\\uDCDD','\\uD806\\uDCBE':'\\uD806\\uDCDE','\\uD806\\uDCBF':'\\uD806\\uDCDF','\\xDF':'ss','\\u0130':'i\\u0307','\\u0149':'\\u02BCn','\\u01F0':'j\\u030C','\\u0390':'\\u03B9\\u0308\\u0301','\\u03B0':'\\u03C5\\u0308\\u0301','\\u0587':'\\u0565\\u0582','\\u1E96':'h\\u0331','\\u1E97':'t\\u0308','\\u1E98':'w\\u030A','\\u1E99':'y\\u030A','\\u1E9A':'a\\u02BE','\\u1E9E':'ss','\\u1F50':'\\u03C5\\u0313','\\u1F52':'\\u03C5\\u0313\\u0300','\\u1F54':'\\u03C5\\u0313\\u0301','\\u1F56':'\\u03C5\\u0313\\u0342','\\u1F80':'\\u1F00\\u03B9','\\u1F81':'\\u1F01\\u03B9','\\u1F82':'\\u1F02\\u03B9','\\u1F83':'\\u1F03\\u03B9','\\u1F84':'\\u1F04\\u03B9','\\u1F85':'\\u1F05\\u03B9','\\u1F86':'\\u1F06\\u03B9','\\u1F87':'\\u1F07\\u03B9','\\u1F88':'\\u1F00\\u03B9','\\u1F89':'\\u1F01\\u03B9','\\u1F8A':'\\u1F02\\u03B9','\\u1F8B':'\\u1F03\\u03B9','\\u1F8C':'\\u1F04\\u03B9','\\u1F8D':'\\u1F05\\u03B9','\\u1F8E':'\\u1F06\\u03B9','\\u1F8F':'\\u1F07\\u03B9','\\u1F90':'\\u1F20\\u03B9','\\u1F91':'\\u1F21\\u03B9','\\u1F92':'\\u1F22\\u03B9','\\u1F93':'\\u1F23\\u03B9','\\u1F94':'\\u1F24\\u03B9','\\u1F95':'\\u1F25\\u03B9','\\u1F96':'\\u1F26\\u03B9','\\u1F97':'\\u1F27\\u03B9','\\u1F98':'\\u1F20\\u03B9','\\u1F99':'\\u1F21\\u03B9','\\u1F9A':'\\u1F22\\u03B9','\\u1F9B':'\\u1F23\\u03B9','\\u1F9C':'\\u1F24\\u03B9','\\u1F9D':'\\u1F25\\u03B9','\\u1F9E':'\\u1F26\\u03B9','\\u1F9F':'\\u1F27\\u03B9','\\u1FA0':'\\u1F60\\u03B9','\\u1FA1':'\\u1F61\\u03B9','\\u1FA2':'\\u1F62\\u03B9','\\u1FA3':'\\u1F63\\u03B9','\\u1FA4':'\\u1F64\\u03B9','\\u1FA5':'\\u1F65\\u03B9','\\u1FA6':'\\u1F66\\u03B9','\\u1FA7':'\\u1F67\\u03B9','\\u1FA8':'\\u1F60\\u03B9','\\u1FA9':'\\u1F61\\u03B9','\\u1FAA':'\\u1F62\\u03B9','\\u1FAB':'\\u1F63\\u03B9','\\u1FAC':'\\u1F64\\u03B9','\\u1FAD':'\\u1F65\\u03B9','\\u1FAE':'\\u1F66\\u03B9','\\u1FAF':'\\u1F67\\u03B9','\\u1FB2':'\\u1F70\\u03B9','\\u1FB3':'\\u03B1\\u03B9','\\u1FB4':'\\u03AC\\u03B9','\\u1FB6':'\\u03B1\\u0342','\\u1FB7':'\\u03B1\\u0342\\u03B9','\\u1FBC':'\\u03B1\\u03B9','\\u1FC2':'\\u1F74\\u03B9','\\u1FC3':'\\u03B7\\u03B9','\\u1FC4':'\\u03AE\\u03B9','\\u1FC6':'\\u03B7\\u0342','\\u1FC7':'\\u03B7\\u0342\\u03B9','\\u1FCC':'\\u03B7\\u03B9','\\u1FD2':'\\u03B9\\u0308\\u0300','\\u1FD3':'\\u03B9\\u0308\\u0301','\\u1FD6':'\\u03B9\\u0342','\\u1FD7':'\\u03B9\\u0308\\u0342','\\u1FE2':'\\u03C5\\u0308\\u0300','\\u1FE3':'\\u03C5\\u0308\\u0301','\\u1FE4':'\\u03C1\\u0313','\\u1FE6':'\\u03C5\\u0342','\\u1FE7':'\\u03C5\\u0308\\u0342','\\u1FF2':'\\u1F7C\\u03B9','\\u1FF3':'\\u03C9\\u03B9','\\u1FF4':'\\u03CE\\u03B9','\\u1FF6':'\\u03C9\\u0342','\\u1FF7':'\\u03C9\\u0342\\u03B9','\\u1FFC':'\\u03C9\\u03B9','\\uFB00':'ff','\\uFB01':'fi','\\uFB02':'fl','\\uFB03':'ffi','\\uFB04':'ffl','\\uFB05':'st','\\uFB06':'st','\\uFB13':'\\u0574\\u0576','\\uFB14':'\\u0574\\u0565','\\uFB15':'\\u0574\\u056B','\\uFB16':'\\u057E\\u0576','\\uFB17':'\\u0574\\u056D'};\n\n// Normalize reference label: collapse internal whitespace\n// to single space, remove leading/trailing whitespace, case fold.\nmodule.exports = function(string) {\n return string.slice(1, string.length - 1).trim().replace(regex, function($0) {\n // Note: there is no need to check `hasOwnProperty($0)` here.\n // If character not found in lookup table, it must be whitespace.\n return map[$0] || ' ';\n });\n};\n","\"use strict\";\n\n// derived from https://github.com/mathiasbynens/String.fromCodePoint\n/*! http://mths.be/fromcodepoint v0.2.1 by @mathias */\nif (String.fromCodePoint) {\n module.exports = function (_) {\n try {\n return String.fromCodePoint(_);\n } catch (e) {\n if (e instanceof RangeError) {\n return String.fromCharCode(0xFFFD);\n }\n throw e;\n }\n };\n\n} else {\n\n var stringFromCharCode = String.fromCharCode;\n var floor = Math.floor;\n var fromCodePoint = function() {\n var MAX_SIZE = 0x4000;\n var codeUnits = [];\n var highSurrogate;\n var lowSurrogate;\n var index = -1;\n var length = arguments.length;\n if (!length) {\n return '';\n }\n var result = '';\n while (++index < length) {\n var codePoint = Number(arguments[index]);\n if (\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10FFFF || // not a valid Unicode code point\n floor(codePoint) !== codePoint // not an integer\n ) {\n return String.fromCharCode(0xFFFD);\n }\n if (codePoint <= 0xFFFF) { // BMP code point\n codeUnits.push(codePoint);\n } else { // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000;\n highSurrogate = (codePoint >> 10) + 0xD800;\n lowSurrogate = (codePoint % 0x400) + 0xDC00;\n codeUnits.push(highSurrogate, lowSurrogate);\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode.apply(null, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n };\n module.exports = fromCodePoint;\n}\n","/*! http://mths.be/repeat v0.2.0 by @mathias */\nif (!String.prototype.repeat) {\n\t(function() {\n\t\t'use strict'; // needed to support `apply`/`call` with `undefined`/`null`\n\t\tvar defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\ttry {\n\t\t\t\tvar object = {};\n\t\t\t\tvar $defineProperty = Object.defineProperty;\n\t\t\t\tvar result = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {}\n\t\t\treturn result;\n\t\t}());\n\t\tvar repeat = function(count) {\n\t\t\tif (this == null) {\n\t\t\t\tthrow TypeError();\n\t\t\t}\n\t\t\tvar string = String(this);\n\t\t\t// `ToInteger`\n\t\t\tvar n = count ? Number(count) : 0;\n\t\t\tif (n != n) { // better `isNaN`\n\t\t\t\tn = 0;\n\t\t\t}\n\t\t\t// Account for out-of-bounds indices\n\t\t\tif (n < 0 || n == Infinity) {\n\t\t\t\tthrow RangeError();\n\t\t\t}\n\t\t\tvar result = '';\n\t\t\twhile (n) {\n\t\t\t\tif (n % 2 == 1) {\n\t\t\t\t\tresult += string;\n\t\t\t\t}\n\t\t\t\tif (n > 1) {\n\t\t\t\t\tstring += string;\n\t\t\t\t}\n\t\t\t\tn >>= 1;\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String.prototype, 'repeat', {\n\t\t\t\t'value': repeat,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.prototype.repeat = repeat;\n\t\t}\n\t}());\n}\n","\"use strict\";\n\nvar Renderer = require('./renderer');\n\nvar reUnsafeProtocol = /^javascript:|vbscript:|file:|data:/i;\nvar reSafeDataProtocol = /^data:image\\/(?:png|gif|jpeg|webp)/i;\n\nvar potentiallyUnsafe = function(url) {\n return reUnsafeProtocol.test(url) &&\n !reSafeDataProtocol.test(url);\n};\n\n// Helper function to produce an HTML tag.\nfunction tag(name, attrs, selfclosing) {\n if (this.disableTags > 0) {\n return;\n }\n this.buffer += ('<' + name);\n if (attrs && attrs.length > 0) {\n var i = 0;\n var attrib;\n while ((attrib = attrs[i]) !== undefined) {\n this.buffer += (' ' + attrib[0] + '=\"' + attrib[1] + '\"');\n i++;\n }\n }\n if (selfclosing) {\n this.buffer += ' /';\n }\n this.buffer += '>';\n this.lastOut = '>';\n}\n\nfunction HtmlRenderer(options) {\n options = options || {};\n // by default, soft breaks are rendered as newlines in HTML\n options.softbreak = options.softbreak || '\\n';\n // set to \"<br />\" to make them hard breaks\n // set to \" \" if you want to ignore line wrapping in source\n\n this.disableTags = 0;\n this.lastOut = \"\\n\";\n this.options = options;\n}\n\n/* Node methods */\n\nfunction text(node) {\n this.out(node.literal);\n}\n\nfunction softbreak() {\n this.lit(this.options.softbreak);\n}\n\nfunction linebreak() {\n this.tag('br', [], true);\n this.cr();\n}\n\nfunction link(node, entering) {\n var attrs = this.attrs(node);\n if (entering) {\n if (!(this.options.safe && potentiallyUnsafe(node.destination))) {\n attrs.push(['href', this.esc(node.destination, true)]);\n }\n if (node.title) {\n attrs.push(['title', this.esc(node.title, true)]);\n }\n this.tag('a', attrs);\n } else {\n this.tag('/a');\n }\n}\n\nfunction image(node, entering) {\n if (entering) {\n if (this.disableTags === 0) {\n if (this.options.safe && potentiallyUnsafe(node.destination)) {\n this.lit('<img src=\"\" alt=\"');\n } else {\n this.lit('<img src=\"' + this.esc(node.destination, true) +\n '\" alt=\"');\n }\n }\n this.disableTags += 1;\n } else {\n this.disableTags -= 1;\n if (this.disableTags === 0) {\n if (node.title) {\n this.lit('\" title=\"' + this.esc(node.title, true));\n }\n this.lit('\" />');\n }\n }\n}\n\nfunction emph(node, entering) {\n this.tag(entering ? 'em' : '/em');\n}\n\nfunction strong(node, entering) {\n this.tag(entering ? 'strong' : '/strong');\n}\n\nfunction paragraph(node, entering) {\n var grandparent = node.parent.parent\n , attrs = this.attrs(node);\n if (grandparent !== null &&\n grandparent.type === 'list') {\n if (grandparent.listTight) {\n return;\n }\n }\n if (entering) {\n this.cr();\n this.tag('p', attrs);\n } else {\n this.tag('/p');\n this.cr();\n }\n}\n\nfunction heading(node, entering) {\n var tagname = 'h' + node.level\n , attrs = this.attrs(node);\n if (entering) {\n this.cr();\n this.tag(tagname, attrs);\n } else {\n this.tag('/' + tagname);\n this.cr();\n }\n}\n\nfunction code(node) {\n this.tag('code');\n this.out(node.literal);\n this.tag('/code');\n}\n\nfunction code_block(node) {\n var info_words = node.info ? node.info.split(/\\s+/) : []\n , attrs = this.attrs(node);\n if (info_words.length > 0 && info_words[0].length > 0) {\n attrs.push(['class', 'language-' + this.esc(info_words[0], true)]);\n }\n this.cr();\n this.tag('pre');\n this.tag('code', attrs);\n this.out(node.literal);\n this.tag('/code');\n this.tag('/pre');\n this.cr();\n}\n\nfunction thematic_break(node) {\n var attrs = this.attrs(node);\n this.cr();\n this.tag('hr', attrs, true);\n this.cr();\n}\n\nfunction block_quote(node, entering) {\n var attrs = this.attrs(node);\n if (entering) {\n this.cr();\n this.tag('blockquote', attrs);\n this.cr();\n } else {\n this.cr();\n this.tag('/blockquote');\n this.cr();\n }\n}\n\nfunction list(node, entering) {\n var tagname = node.listType === 'bullet' ? 'ul' : 'ol'\n , attrs = this.attrs(node);\n\n if (entering) {\n var start = node.listStart;\n if (start !== null && start !== 1) {\n attrs.push(['start', start.toString()]);\n }\n this.cr();\n this.tag(tagname, attrs);\n this.cr();\n } else {\n this.cr();\n this.tag('/' + tagname);\n this.cr();\n }\n}\n\nfunction item(node, entering) {\n var attrs = this.attrs(node);\n if (entering) {\n this.tag('li', attrs);\n } else {\n this.tag('/li');\n this.cr();\n }\n}\n\nfunction html_inline(node) {\n if (this.options.safe) {\n this.lit('<!-- raw HTML omitted -->');\n } else {\n this.lit(node.literal);\n }\n}\n\nfunction html_block(node) {\n this.cr();\n if (this.options.safe) {\n this.lit('<!-- raw HTML omitted -->');\n } else {\n this.lit(node.literal);\n }\n this.cr();\n}\n\nfunction custom_inline(node, entering) {\n if (entering && node.onEnter) {\n this.lit(node.onEnter);\n } else if (!entering && node.onExit) {\n this.lit(node.onExit);\n }\n}\n\nfunction custom_block(node, entering) {\n this.cr();\n if (entering && node.onEnter) {\n this.lit(node.onEnter);\n } else if (!entering && node.onExit) {\n this.lit(node.onExit);\n }\n this.cr();\n}\n\n/* Helper methods */\n\nfunction out(s) {\n this.lit(this.esc(s, false));\n}\n\nfunction attrs (node) {\n var att = [];\n if (this.options.sourcepos) {\n var pos = node.sourcepos;\n if (pos) {\n att.push(['data-sourcepos', String(pos[0][0]) + ':' +\n String(pos[0][1]) + '-' + String(pos[1][0]) + ':' +\n String(pos[1][1])]);\n }\n }\n return att;\n}\n\n// quick browser-compatible inheritance\nHtmlRenderer.prototype = Object.create(Renderer.prototype);\n\nHtmlRenderer.prototype.text = text;\nHtmlRenderer.prototype.html_inline = html_inline;\nHtmlRenderer.prototype.html_block = html_block;\nHtmlRenderer.prototype.softbreak = softbreak;\nHtmlRenderer.prototype.linebreak = linebreak;\nHtmlRenderer.prototype.link = link;\nHtmlRenderer.prototype.image = image;\nHtmlRenderer.prototype.emph = emph;\nHtmlRenderer.prototype.strong = strong;\nHtmlRenderer.prototype.paragraph = paragraph;\nHtmlRenderer.prototype.heading = heading;\nHtmlRenderer.prototype.code = code;\nHtmlRenderer.prototype.code_block = code_block;\nHtmlRenderer.prototype.thematic_break = thematic_break;\nHtmlRenderer.prototype.block_quote = block_quote;\nHtmlRenderer.prototype.list = list;\nHtmlRenderer.prototype.item = item;\nHtmlRenderer.prototype.custom_inline = custom_inline;\nHtmlRenderer.prototype.custom_block = custom_block;\n\nHtmlRenderer.prototype.esc = require('../common').escapeXml;\n\nHtmlRenderer.prototype.out = out;\nHtmlRenderer.prototype.tag = tag;\nHtmlRenderer.prototype.attrs = attrs;\n\nmodule.exports = HtmlRenderer;\n","\"use strict\";\n\nvar Renderer = require('./renderer');\n\nvar reXMLTag = /\\<[^>]*\\>/;\n\nfunction toTagName(s) {\n return s.replace(/([a-z])([A-Z])/g, \"$1_$2\").toLowerCase();\n}\n\nfunction XmlRenderer(options) {\n options = options || {};\n\n this.disableTags = 0;\n this.lastOut = \"\\n\";\n\n this.indentLevel = 0;\n this.indent = ' ';\n\n this.options = options;\n}\n\nfunction render(ast) {\n\n this.buffer = '';\n\n var attrs;\n var tagname;\n var walker = ast.walker();\n var event, node, entering;\n var container;\n var selfClosing;\n var nodetype;\n\n var options = this.options;\n\n if (options.time) { console.time(\"rendering\"); }\n\n this.buffer += '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n';\n this.buffer += '<!DOCTYPE document SYSTEM \"CommonMark.dtd\">\\n';\n\n while ((event = walker.next())) {\n entering = event.entering;\n node = event.node;\n nodetype = node.type;\n\n container = node.isContainer;\n\n selfClosing = nodetype === 'thematic_break'\n || nodetype === 'linebreak'\n || nodetype === 'softbreak';\n\n tagname = toTagName(nodetype);\n\n if (entering) {\n\n attrs = [];\n\n switch (nodetype) {\n case 'document':\n attrs.push(['xmlns', 'http://commonmark.org/xml/1.0']);\n break;\n case 'list':\n if (node.listType !== null) {\n attrs.push(['type', node.listType.toLowerCase()]);\n }\n if (node.listStart !== null) {\n attrs.push(['start', String(node.listStart)]);\n }\n if (node.listTight !== null) {\n attrs.push(['tight', (node.listTight ? 'true' : 'false')]);\n }\n var delim = node.listDelimiter;\n if (delim !== null) {\n var delimword = '';\n if (delim === '.') {\n delimword = 'period';\n } else {\n delimword = 'paren';\n }\n attrs.push(['delimiter', delimword]);\n }\n break;\n case 'code_block':\n if (node.info) {\n attrs.push(['info', node.info]);\n }\n break;\n case 'heading':\n attrs.push(['level', String(node.level)]);\n break;\n case 'link':\n case 'image':\n attrs.push(['destination', node.destination]);\n attrs.push(['title', node.title]);\n break;\n case 'custom_inline':\n case 'custom_block':\n attrs.push(['on_enter', node.onEnter]);\n attrs.push(['on_exit', node.onExit]);\n break;\n default:\n break;\n }\n if (options.sourcepos) {\n var pos = node.sourcepos;\n if (pos) {\n attrs.push(['sourcepos', String(pos[0][0]) + ':' +\n String(pos[0][1]) + '-' + String(pos[1][0]) + ':' +\n String(pos[1][1])]);\n }\n }\n\n this.cr();\n this.out(this.tag(tagname, attrs, selfClosing));\n if (container) {\n this.indentLevel += 1;\n } else if (!container && !selfClosing) {\n var lit = node.literal;\n if (lit) {\n this.out(this.esc(lit));\n }\n this.out(this.tag('/' + tagname));\n }\n } else {\n this.indentLevel -= 1;\n this.cr();\n this.out(this.tag('/' + tagname));\n }\n }\n if (options.time) { console.timeEnd(\"rendering\"); }\n this.buffer += '\\n';\n return this.buffer;\n}\n\nfunction out(s) {\n if(this.disableTags > 0) {\n this.buffer += s.replace(reXMLTag, '');\n }else{\n this.buffer += s;\n }\n this.lastOut = s;\n}\n\nfunction cr() {\n if(this.lastOut !== '\\n') {\n this.buffer += '\\n';\n this.lastOut = '\\n';\n for(var i = this.indentLevel; i > 0; i--) {\n this.buffer += this.indent;\n }\n }\n}\n\n// Helper function to produce an XML tag.\nfunction tag(name, attrs, selfclosing) {\n var result = '<' + name;\n if(attrs && attrs.length > 0) {\n var i = 0;\n var attrib;\n while ((attrib = attrs[i]) !== undefined) {\n result += ' ' + attrib[0] + '=\"' + this.esc(attrib[1]) + '\"';\n i++;\n }\n }\n if(selfclosing) {\n result += ' /';\n }\n result += '>';\n return result;\n}\n\n// quick browser-compatible inheritance\nXmlRenderer.prototype = Object.create(Renderer.prototype);\n\nXmlRenderer.prototype.render = render;\nXmlRenderer.prototype.out = out;\nXmlRenderer.prototype.cr = cr;\nXmlRenderer.prototype.tag = tag;\nXmlRenderer.prototype.esc = require('../common').escapeXml;\n\nmodule.exports = XmlRenderer;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _slate = require('slate');\n\nvar _clamp2 = require('lodash/clamp');\n\nvar _clamp3 = _interopRequireDefault(_clamp2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Aviral Dasgupta\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar HistoryItem = function () {\n\n // We store history items in their native format to ensure history is accurate\n // and then convert them if our RTE has subsequently changed format.\n function HistoryItem(value, format) {\n (0, _classCallCheck3.default)(this, HistoryItem);\n this.format = 'rich';\n\n this.value = value;\n this.format = format;\n }\n\n (0, _createClass3.default)(HistoryItem, [{\n key: 'toJSON',\n value: function toJSON() {\n return {\n value: this.value.toJSON(),\n format: this.format\n };\n }\n }], [{\n key: 'fromJSON',\n value: function fromJSON(obj) {\n return new HistoryItem(_slate.Value.fromJSON(obj.value), obj.format);\n }\n }]);\n return HistoryItem;\n}();\n\nvar ComposerHistoryManager = function () {\n // used for indexing the loaded validated history Array\n\n function ComposerHistoryManager(roomId) {\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'mx_composer_history_';\n (0, _classCallCheck3.default)(this, ComposerHistoryManager);\n this.history = [];\n this.lastIndex = 0;\n this.currentIndex = 0;\n\n this.prefix = prefix + roomId;\n\n // TODO: Performance issues?\n var item = void 0;\n for (; item = sessionStorage.getItem(this.prefix + '[' + this.currentIndex + ']'); this.currentIndex++) {\n try {\n this.history.push(HistoryItem.fromJSON(JSON.parse(item)));\n } catch (e) {\n console.warn(\"Throwing away unserialisable history\", e);\n }\n }\n this.lastIndex = this.currentIndex;\n // reset currentIndex to account for any unserialisable history\n this.currentIndex = this.history.length;\n } // used for indexing the storage\n\n\n (0, _createClass3.default)(ComposerHistoryManager, [{\n key: 'save',\n value: function save(value, format) {\n var item = new HistoryItem(value, format);\n this.history.push(item);\n this.currentIndex = this.history.length;\n sessionStorage.setItem(this.prefix + '[' + this.lastIndex++ + ']', (0, _stringify2.default)(item.toJSON()));\n }\n }, {\n key: 'getItem',\n value: function getItem(offset) {\n this.currentIndex = (0, _clamp3.default)(this.currentIndex + offset, 0, this.history.length - 1);\n return this.history[this.currentIndex];\n }\n }]);\n return ComposerHistoryManager;\n}();\n\nexports.default = ComposerHistoryManager;\nmodule.exports = exports['default'];\n//# sourceMappingURL=ComposerHistoryManager.js.map","var baseClamp = require('./_baseClamp'),\n toNumber = require('./toNumber');\n\n/**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\nfunction clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n}\n\nmodule.exports = clamp;\n","/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n}\n\nmodule.exports = baseClamp;\n","'use strict';\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _slate = require('slate');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar localStoragePrefix = 'editor_state_';\n\n/**\n * A class for storing application state to do with the message composer (specifically in-progress message drafts).\n * It does not worry about cleaning up on log out as this is handled in Lifecycle.js by localStorage.clear()\n */\n/*\nCopyright 2017, 2018 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MessageComposerStore = function () {\n function MessageComposerStore() {\n (0, _classCallCheck3.default)(this, MessageComposerStore);\n\n this.prefix = localStoragePrefix;\n }\n\n (0, _createClass3.default)(MessageComposerStore, [{\n key: '_getKey',\n value: function _getKey(roomId) {\n return this.prefix + roomId;\n }\n }, {\n key: 'setEditorState',\n value: function setEditorState(roomId, editorState, richText) {\n localStorage.setItem(this._getKey(roomId), (0, _stringify2.default)({\n editor_state: editorState.toJSON({\n preserveSelection: true,\n // XXX: re-hydrating history is not currently supported by fromJSON\n // preserveHistory: true,\n // XXX: this seems like a workaround for selection.isSet being based on anchorKey instead of anchorPath\n preserveKeys: true\n }),\n rich_text: richText\n }));\n }\n }, {\n key: 'getEditorState',\n value: function getEditorState(roomId) {\n var stateStr = localStorage.getItem(this._getKey(roomId));\n\n var state = void 0;\n if (stateStr) {\n state = JSON.parse(stateStr);\n\n // if it does not have the fields we expect then bail\n if (!state || state.rich_text === undefined || state.editor_state === undefined) return;\n state.editor_state = _slate.Value.fromJSON(state.editor_state);\n }\n\n return state;\n }\n }]);\n return MessageComposerStore;\n}();\n\nvar singletonMessageComposerStore = null;\nif (!singletonMessageComposerStore) {\n singletonMessageComposerStore = new MessageComposerStore();\n}\nmodule.exports = singletonMessageComposerStore;\n//# sourceMappingURL=MessageComposerStore.js.map","\"use strict\";\n\nvar _promise = require(\"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require(\"../../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _AccessibleButton = require(\"../elements/AccessibleButton\");\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _PinnedEventTile = require(\"./PinnedEventTile\");\n\nvar _PinnedEventTile2 = _interopRequireDefault(_PinnedEventTile);\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nvar _PinningUtils = require(\"../../../utils/PinningUtils\");\n\nvar _PinningUtils2 = _interopRequireDefault(_PinningUtils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'PinnedEventsPanel',\n propTypes: {\n // The Room from the js-sdk we're going to show pinned events for\n room: _propTypes2.default.object.isRequired,\n\n onCancelClick: _propTypes2.default.func\n },\n\n getInitialState: function getInitialState() {\n return {\n loading: true\n };\n },\n\n componentDidMount: function componentDidMount() {\n this._updatePinnedMessages();\n _MatrixClientPeg2.default.get().on(\"RoomState.events\", this._onStateEvent);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener(\"RoomState.events\", this._onStateEvent);\n }\n },\n\n _onStateEvent: function _onStateEvent(ev) {\n if (ev.getRoomId() === this.props.room.roomId && ev.getType() === \"m.room.pinned_events\") {\n this._updatePinnedMessages();\n }\n },\n\n _updatePinnedMessages: function _updatePinnedMessages() {\n var _this = this;\n\n var pinnedEvents = this.props.room.currentState.getStateEvents(\"m.room.pinned_events\", \"\");\n if (!pinnedEvents || !pinnedEvents.getContent().pinned) {\n this.setState({ loading: false, pinned: [] });\n } else {\n var promises = [];\n var cli = _MatrixClientPeg2.default.get();\n\n pinnedEvents.getContent().pinned.map(function (eventId) {\n promises.push(cli.getEventTimeline(_this.props.room.getUnfilteredTimelineSet(), eventId, 0).then(function (timeline) {\n var event = timeline.getEvents().find(function (e) {\n return e.getId() === eventId;\n });\n return { eventId: eventId, timeline: timeline, event: event };\n }).catch(function (err) {\n console.error(\"Error looking up pinned event \" + eventId + \" in room \" + _this.props.room.roomId);\n console.error(err);\n return null; // return lack of context to avoid unhandled errors\n }));\n });\n\n _promise2.default.all(promises).then(function (contexts) {\n // Filter out the messages before we try to render them\n var pinned = contexts.filter(function (context) {\n return _PinningUtils2.default.isPinnable(context.event);\n });\n\n _this.setState({ loading: false, pinned: pinned });\n });\n }\n\n this._updateReadState();\n },\n\n _updateReadState: function _updateReadState() {\n var pinnedEvents = this.props.room.currentState.getStateEvents(\"m.room.pinned_events\", \"\");\n if (!pinnedEvents) return; // nothing to read\n\n var readStateEvents = [];\n var readPinsEvent = this.props.room.getAccountData(\"im.vector.room.read_pins\");\n if (readPinsEvent && readPinsEvent.getContent()) {\n readStateEvents = readPinsEvent.getContent().event_ids || [];\n }\n\n if (!readStateEvents.includes(pinnedEvents.getId())) {\n readStateEvents.push(pinnedEvents.getId());\n\n // Only keep the last 10 event IDs to avoid infinite growth\n readStateEvents = readStateEvents.reverse().splice(0, 10).reverse();\n\n _MatrixClientPeg2.default.get().setRoomAccountData(this.props.room.roomId, \"im.vector.room.read_pins\", {\n event_ids: readStateEvents\n });\n }\n },\n\n _getPinnedTiles: function _getPinnedTiles() {\n var _this2 = this;\n\n if (this.state.pinned.length === 0) {\n return _react2.default.createElement(\n \"div\",\n null,\n (0, _languageHandler._t)(\"No pinned messages.\")\n );\n }\n\n return this.state.pinned.map(function (context) {\n return _react2.default.createElement(_PinnedEventTile2.default, { key: context.event.getId(),\n mxRoom: _this2.props.room,\n mxEvent: context.event,\n onUnpinned: _this2._updatePinnedMessages });\n });\n },\n\n render: function render() {\n var tiles = _react2.default.createElement(\n \"div\",\n null,\n (0, _languageHandler._t)(\"Loading...\")\n );\n if (this.state && !this.state.loading) {\n tiles = this._getPinnedTiles();\n }\n\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_PinnedEventsPanel\" },\n _react2.default.createElement(\n \"div\",\n { className: \"mx_PinnedEventsPanel_body\" },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: \"mx_PinnedEventsPanel_cancel\", onClick: this.props.onCancelClick },\n _react2.default.createElement(\"img\", { className: \"mx_filterFlipColor\", src: \"img/cancel.svg\", width: \"18\", height: \"18\" })\n ),\n _react2.default.createElement(\n \"h3\",\n { className: \"mx_PinnedEventsPanel_header\" },\n (0, _languageHandler._t)(\"Pinned Messages\")\n ),\n tiles\n )\n );\n }\n}); /*\n Copyright 2017 Travis Ralston\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=PinnedEventsPanel.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar PinningUtils = function () {\n function PinningUtils() {\n (0, _classCallCheck3.default)(this, PinningUtils);\n }\n\n (0, _createClass3.default)(PinningUtils, null, [{\n key: \"isPinnable\",\n\n /**\n * Determines if the given event may be pinned.\n * @param {MatrixEvent} event The event to check.\n * @return {boolean} True if the event may be pinned, false otherwise.\n */\n value: function isPinnable(event) {\n if (!event) return false;\n if (event.getType() !== \"m.room.message\") return false;\n if (event.isRedacted()) return false;\n\n return true;\n }\n }]);\n return PinningUtils;\n}();\n\nexports.default = PinningUtils;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=PinningUtils.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'PresenceLabel',\n\n propTypes: {\n // number of milliseconds ago this user was last active.\n // zero = unknown\n activeAgo: _propTypes2.default.number,\n\n // if true, activeAgo is an approximation and \"Now\" should\n // be shown instead\n currentlyActive: _propTypes2.default.bool,\n\n // offline, online, etc\n presenceState: _propTypes2.default.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n ago: -1,\n presenceState: null\n };\n },\n\n // Return duration as a string using appropriate time units\n // XXX: This would be better handled using a culture-aware library, but we don't use one yet.\n getDuration: function getDuration(time) {\n if (!time) return;\n var t = parseInt(time / 1000);\n var s = t % 60;\n var m = parseInt(t / 60) % 60;\n var h = parseInt(t / (60 * 60)) % 24;\n var d = parseInt(t / (60 * 60 * 24));\n if (t < 60) {\n if (t < 0) {\n return (0, _languageHandler._t)(\"%(duration)ss\", { duration: 0 });\n }\n return (0, _languageHandler._t)(\"%(duration)ss\", { duration: s });\n }\n if (t < 60 * 60) {\n return (0, _languageHandler._t)(\"%(duration)sm\", { duration: m });\n }\n if (t < 24 * 60 * 60) {\n return (0, _languageHandler._t)(\"%(duration)sh\", { duration: h });\n }\n return (0, _languageHandler._t)(\"%(duration)sd\", { duration: d });\n },\n\n getPrettyPresence: function getPrettyPresence(presence, activeAgo, currentlyActive) {\n if (!currentlyActive && activeAgo !== undefined && activeAgo > 0) {\n var duration = this.getDuration(activeAgo);\n if (presence === \"online\") return (0, _languageHandler._t)(\"Online for %(duration)s\", { duration: duration });\n if (presence === \"unavailable\") return (0, _languageHandler._t)(\"Idle for %(duration)s\", { duration: duration }); // XXX: is this actually right?\n if (presence === \"offline\") return (0, _languageHandler._t)(\"Offline for %(duration)s\", { duration: duration });\n return (0, _languageHandler._t)(\"Unknown for %(duration)s\", { duration: duration });\n } else {\n if (presence === \"online\") return (0, _languageHandler._t)(\"Online\");\n if (presence === \"unavailable\") return (0, _languageHandler._t)(\"Idle\"); // XXX: is this actually right?\n if (presence === \"offline\") return (0, _languageHandler._t)(\"Offline\");\n return (0, _languageHandler._t)(\"Unknown\");\n }\n },\n\n render: function render() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_PresenceLabel' },\n this.getPrettyPresence(this.props.presenceState, this.props.activeAgo, this.props.currentlyActive)\n );\n }\n});\n//# sourceMappingURL=PresenceLabel.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _DateUtils = require('../../../DateUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\nvar ReactDOM = require('react-dom');\n\n\nvar sdk = require('../../../index');\n\nvar Velociraptor = require('../../../Velociraptor');\nrequire('../../../VelocityBounce');\n\n\nvar bounce = false;\ntry {\n if (global.localStorage) {\n bounce = global.localStorage.getItem('avatar_bounce') == 'true';\n }\n} catch (e) {}\n\nmodule.exports = React.createClass({\n displayName: 'ReadReceiptMarker',\n\n propTypes: {\n // the RoomMember to show the RR for\n member: _propTypes2.default.object,\n // userId to fallback the avatar to\n // if the member hasn't been loaded yet\n fallbackUserId: _propTypes2.default.string.isRequired,\n\n // number of pixels to offset the avatar from the right of its parent;\n // typically a negative value.\n leftOffset: _propTypes2.default.number,\n\n // true to hide the avatar (it will still be animated)\n hidden: _propTypes2.default.bool,\n\n // don't animate this RR into position\n suppressAnimation: _propTypes2.default.bool,\n\n // an opaque object for storing information about this user's RR in\n // this room\n readReceiptInfo: _propTypes2.default.object,\n\n // A function which is used to check if the parent panel is being\n // unmounted, to avoid unnecessary work. Should return true if we\n // are being unmounted.\n checkUnmounting: _propTypes2.default.func,\n\n // callback for clicks on this RR\n onClick: _propTypes2.default.func,\n\n // Timestamp when the receipt was read\n timestamp: _propTypes2.default.number,\n\n // True to show twelve hour format, false otherwise\n showTwelveHour: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n leftOffset: 0\n };\n },\n\n getInitialState: function getInitialState() {\n // if we are going to animate the RR, we don't show it on first render,\n // and instead just add a placeholder to the DOM; once we've been\n // mounted, we start an animation which moves the RR from its old\n // position.\n return {\n suppressDisplay: !this.props.suppressAnimation\n };\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // before we remove the rr, store its location in the map, so that if\n // it reappears, it can be animated from the right place.\n var rrInfo = this.props.readReceiptInfo;\n if (!rrInfo) {\n return;\n }\n\n // checking the DOM properties can force a re-layout, which can be\n // quite expensive; so if the parent messagepanel is being unmounted,\n // then don't bother with this.\n if (this.props.checkUnmounting && this.props.checkUnmounting()) {\n return;\n }\n\n var avatarNode = ReactDOM.findDOMNode(this);\n rrInfo.top = avatarNode.offsetTop;\n rrInfo.left = avatarNode.offsetLeft;\n rrInfo.parent = avatarNode.offsetParent;\n },\n\n componentDidMount: function componentDidMount() {\n if (!this.state.suppressDisplay) {\n // we've already done our display - nothing more to do.\n return;\n }\n\n // treat new RRs as though they were off the top of the screen\n var oldTop = -15;\n\n var oldInfo = this.props.readReceiptInfo;\n if (oldInfo && oldInfo.parent) {\n oldTop = oldInfo.top + oldInfo.parent.getBoundingClientRect().top;\n }\n\n var newElement = ReactDOM.findDOMNode(this);\n var startTopOffset = void 0;\n if (!newElement.offsetParent) {\n // this seems to happen sometimes for reasons I don't understand\n // the docs for `offsetParent` say it may be null if `display` is\n // `none`, but I can't see why that would happen.\n console.warn('ReadReceiptMarker for ' + this.props.fallbackUserId + ' in has no offsetParent');\n startTopOffset = 0;\n } else {\n startTopOffset = oldTop - newElement.offsetParent.getBoundingClientRect().top;\n }\n\n var startStyles = [];\n var enterTransitionOpts = [];\n\n if (oldInfo && oldInfo.left) {\n // start at the old height and in the old h pos\n\n startStyles.push({ top: startTopOffset + \"px\",\n left: oldInfo.left + \"px\" });\n\n var reorderTransitionOpts = {\n duration: 100,\n easing: 'easeOut'\n };\n\n enterTransitionOpts.push(reorderTransitionOpts);\n }\n\n // then shift to the rightmost column,\n // and then it will drop down to its resting position\n startStyles.push({ top: startTopOffset + 'px', left: '0px' });\n enterTransitionOpts.push({\n duration: bounce ? Math.min(Math.log(Math.abs(startTopOffset)) * 200, 3000) : 300,\n easing: bounce ? 'easeOutBounce' : 'easeOutCubic'\n });\n\n this.setState({\n suppressDisplay: false,\n startStyles: startStyles,\n enterTransitionOpts: enterTransitionOpts\n });\n },\n\n render: function render() {\n var MemberAvatar = sdk.getComponent('avatars.MemberAvatar');\n if (this.state.suppressDisplay) {\n return React.createElement('div', null);\n }\n\n var style = {\n left: this.props.leftOffset + 'px',\n top: '0px',\n visibility: this.props.hidden ? 'hidden' : 'visible'\n };\n\n var title = void 0;\n if (this.props.timestamp) {\n var dateString = (0, _DateUtils.formatDate)(new Date(this.props.timestamp), this.props.showTwelveHour);\n if (!this.props.member || this.props.fallbackUserId === this.props.member.rawDisplayName) {\n title = (0, _languageHandler._t)(\"Seen by %(userName)s at %(dateTime)s\", { userName: this.props.fallbackUserId,\n dateTime: dateString });\n } else {\n title = (0, _languageHandler._t)(\"Seen by %(displayName)s (%(userName)s) at %(dateTime)s\", { displayName: this.props.member.rawDisplayName,\n userName: this.props.fallbackUserId,\n dateTime: dateString });\n }\n }\n\n return React.createElement(\n Velociraptor,\n {\n startStyles: this.state.startStyles,\n enterTransitionOpts: this.state.enterTransitionOpts },\n React.createElement(MemberAvatar, {\n member: this.props.member,\n fallbackUserId: this.props.fallbackUserId,\n 'aria-hidden': 'true',\n width: 14, height: 14, resizeMethod: 'crop',\n style: style,\n title: title,\n onClick: this.props.onClick\n })\n );\n }\n});\n//# sourceMappingURL=ReadReceiptMarker.js.map","'use strict';\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\nvar ReactDom = require('react-dom');\n\nvar Velocity = require('velocity-vector');\n\n/**\n * The Velociraptor contains components and animates transitions with velocity.\n * It will only pick up direct changes to properties ('left', currently), and so\n * will not work for animating positional changes where the position is implicit\n * from DOM order. This makes it a lot simpler and lighter: if you need fully\n * automatic positional animation, look at react-shuffle or similar libraries.\n */\nmodule.exports = React.createClass({\n displayName: 'Velociraptor',\n\n propTypes: {\n // either a list of child nodes, or a single child.\n children: _propTypes2.default.any,\n\n // optional transition information for changing existing children\n transition: _propTypes2.default.object,\n\n // a list of state objects to apply to each child node in turn\n startStyles: _propTypes2.default.array,\n\n // a list of transition options from the corresponding startStyle\n enterTransitionOpts: _propTypes2.default.array\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n startStyles: [],\n enterTransitionOpts: []\n };\n },\n\n componentWillMount: function componentWillMount() {\n this.nodes = {};\n this._updateChildren(this.props.children);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n this._updateChildren(nextProps.children);\n },\n\n /**\n * update `this.children` according to the new list of children given\n */\n _updateChildren: function _updateChildren(newChildren) {\n var self = this;\n var oldChildren = this.children || {};\n this.children = {};\n React.Children.toArray(newChildren).forEach(function (c) {\n if (oldChildren[c.key]) {\n var old = oldChildren[c.key];\n var oldNode = ReactDom.findDOMNode(self.nodes[old.key]);\n\n if (oldNode && oldNode.style.left != c.props.style.left) {\n Velocity(oldNode, { left: c.props.style.left }, self.props.transition).then(function () {\n // special case visibility because it's nonsensical to animate an invisible element\n // so we always hidden->visible pre-transition and visible->hidden after\n if (oldNode.style.visibility == 'visible' && c.props.style.visibility == 'hidden') {\n oldNode.style.visibility = c.props.style.visibility;\n }\n });\n //console.log(\"translation: \"+oldNode.style.left+\" -> \"+c.props.style.left);\n }\n if (oldNode && oldNode.style.visibility == 'hidden' && c.props.style.visibility == 'visible') {\n oldNode.style.visibility = c.props.style.visibility;\n }\n // clone the old element with the props (and children) of the new element\n // so prop updates are still received by the children.\n self.children[c.key] = React.cloneElement(old, c.props, c.props.children);\n } else {\n // new element. If we have a startStyle, use that as the style and go through\n // the enter animations\n var newProps = {};\n var restingStyle = c.props.style;\n\n var startStyles = self.props.startStyles;\n if (startStyles.length > 0) {\n var startStyle = startStyles[0];\n newProps.style = startStyle;\n // console.log(\"mounted@startstyle0: \"+JSON.stringify(startStyle));\n }\n\n newProps.ref = function (n) {\n return self._collectNode(c.key, n, restingStyle);\n };\n\n self.children[c.key] = React.cloneElement(c, newProps);\n }\n });\n },\n\n /**\n * called when a child element is mounted/unmounted\n *\n * @param {string} k key of the child\n * @param {null|Object} node On mount: React node. On unmount: null\n * @param {Object} restingStyle final style\n */\n _collectNode: function _collectNode(k, node, restingStyle) {\n if (node && this.nodes[k] === undefined && this.props.startStyles.length > 0) {\n var startStyles = this.props.startStyles;\n var transitionOpts = this.props.enterTransitionOpts;\n var domNode = ReactDom.findDOMNode(node);\n // start from startStyle 1: 0 is the one we gave it\n // to start with, so now we animate 1 etc.\n for (var i = 1; i < startStyles.length; ++i) {\n Velocity(domNode, startStyles[i], transitionOpts[i - 1]);\n /*\n console.log(\"start:\",\n JSON.stringify(transitionOpts[i-1]),\n \"->\",\n JSON.stringify(startStyles[i]),\n );\n */\n }\n\n // and then we animate to the resting state\n Velocity(domNode, restingStyle, transitionOpts[i - 1]).then(function () {\n // once we've reached the resting state, hide the element if\n // appropriate\n domNode.style.visibility = restingStyle.visibility;\n });\n\n /*\n console.log(\"enter:\",\n JSON.stringify(transitionOpts[i-1]),\n \"->\",\n JSON.stringify(restingStyle));\n */\n } else if (node === null) {\n // Velocity stores data on elements using the jQuery .data()\n // method, and assumes you'll be using jQuery's .remove() to\n // remove the element, but we don't use jQuery, so we need to\n // blow away the element's data explicitly otherwise it will leak.\n // This uses Velocity's internal jQuery compatible wrapper.\n // See the bug at\n // https://github.com/julianshapiro/velocity/issues/300\n // and the FAQ entry, \"Preventing memory leaks when\n // creating/destroying large numbers of elements\"\n // (https://github.com/julianshapiro/velocity/issues/47)\n var _domNode = ReactDom.findDOMNode(this.nodes[k]);\n if (_domNode) Velocity.Utilities.removeData(_domNode);\n }\n this.nodes[k] = node;\n },\n\n render: function render() {\n return React.createElement(\n 'span',\n null,\n (0, _values2.default)(this.children)\n );\n }\n});\n//# sourceMappingURL=Velociraptor.js.map","'use strict';\n\nvar Velocity = require('velocity-vector');\n\n// courtesy of https://github.com/julianshapiro/velocity/issues/283\n// We only use easeOutBounce (easeInBounce is just sort of nonsensical)\nfunction bounce(p) {\n var pow2 = void 0,\n bounce = 4;\n\n while (p < ((pow2 = Math.pow(2, --bounce)) - 1) / 11) {\n // just sets pow2\n }\n return 1 / Math.pow(4, 3 - bounce) - 7.5625 * Math.pow((pow2 * 3 - 2) / 22 - p, 2);\n}\n\nVelocity.Easings.easeOutBounce = function (p) {\n return 1 - bounce(1 - p);\n};\n//# sourceMappingURL=VelocityBounce.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _RoomDetailRow = require('./RoomDetailRow');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'RoomDetailList',\n\n propTypes: {\n rooms: _propTypes2.default.arrayOf(_RoomDetailRow.roomShape),\n className: _propTypes2.default.string\n },\n\n getRows: function getRows() {\n var _this = this;\n\n if (!this.props.rooms) return [];\n\n var RoomDetailRow = _index2.default.getComponent('rooms.RoomDetailRow');\n return this.props.rooms.map(function (room, index) {\n return _react2.default.createElement(RoomDetailRow, { key: index, room: room, onClick: _this.onDetailsClick });\n });\n },\n\n onDetailsClick: function onDetailsClick(ev, room) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: room.roomId,\n room_alias: room.canonicalAlias || (room.aliases || [])[0]\n });\n },\n\n render: function render() {\n var rows = this.getRows();\n var rooms = void 0;\n if (rows.length === 0) {\n rooms = _react2.default.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('No rooms to show')\n );\n } else {\n rooms = _react2.default.createElement(\n 'table',\n { ref: 'directory_table', className: 'mx_RoomDirectory_table' },\n _react2.default.createElement(\n 'tbody',\n null,\n this.getRows()\n )\n );\n }\n return _react2.default.createElement(\n 'div',\n { className: (0, _classnames2.default)(\"mx_RoomDetailList\", this.props.className) },\n rooms\n );\n }\n}); /*\n Copyright 2017 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomDetailList.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar React = require('react');\n\nmodule.exports = React.createClass({\n displayName: 'RoomDropTarget',\n\n render: function render() {\n return React.createElement(\n 'div',\n { className: 'mx_RoomDropTarget_container' },\n React.createElement(\n 'div',\n { className: 'mx_RoomDropTarget' },\n React.createElement(\n 'div',\n { className: 'mx_RoomDropTarget_label' },\n this.props.label\n )\n )\n );\n }\n});\n//# sourceMappingURL=RoomDropTarget.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _ratelimitedfunc = require('../../../ratelimitedfunc');\n\nvar _ratelimitedfunc2 = _interopRequireDefault(_ratelimitedfunc);\n\nvar _linkifyjs = require('linkifyjs');\n\nvar linkify = _interopRequireWildcard(_linkifyjs);\n\nvar _element = require('linkifyjs/element');\n\nvar _element2 = _interopRequireDefault(_element);\n\nvar _linkifyMatrix = require('../../../linkify-matrix');\n\nvar _linkifyMatrix2 = _interopRequireDefault(_linkifyMatrix);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _ManageIntegsButton = require('../elements/ManageIntegsButton');\n\nvar _ManageIntegsButton2 = _interopRequireDefault(_ManageIntegsButton);\n\nvar _SimpleRoomHeader = require('./SimpleRoomHeader');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _linkifyMatrix2.default)(linkify);\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomHeader',\n\n propTypes: {\n room: _propTypes2.default.object,\n oobData: _propTypes2.default.object,\n editing: _propTypes2.default.bool,\n saving: _propTypes2.default.bool,\n inRoom: _propTypes2.default.bool,\n collapsedRhs: _propTypes2.default.bool,\n onSettingsClick: _propTypes2.default.func,\n onPinnedClick: _propTypes2.default.func,\n onSaveClick: _propTypes2.default.func,\n onSearchClick: _propTypes2.default.func,\n onLeaveClick: _propTypes2.default.func,\n onCancelClick: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n editing: false,\n inRoom: false,\n onSaveClick: function onSaveClick() {},\n onCancelClick: null\n };\n },\n\n componentDidMount: function componentDidMount() {\n var cli = _MatrixClientPeg2.default.get();\n cli.on(\"RoomState.events\", this._onRoomStateEvents);\n cli.on(\"Room.accountData\", this._onRoomAccountData);\n\n // When a room name occurs, RoomState.events is fired *before*\n // room.name is updated. So we have to listen to Room.name as well as\n // RoomState.events.\n if (this.props.room) {\n this.props.room.on(\"Room.name\", this._onRoomNameChange);\n }\n },\n\n componentDidUpdate: function componentDidUpdate() {\n if (this.refs.topic) {\n (0, _element2.default)(this.refs.topic, _linkifyMatrix2.default.options);\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (this.props.room) {\n this.props.room.removeListener(\"Room.name\", this._onRoomNameChange);\n }\n var cli = _MatrixClientPeg2.default.get();\n if (cli) {\n cli.removeListener(\"RoomState.events\", this._onRoomStateEvents);\n cli.removeListener(\"Room.accountData\", this._onRoomAccountData);\n }\n },\n\n _onRoomStateEvents: function _onRoomStateEvents(event, state) {\n if (!this.props.room || event.getRoomId() !== this.props.room.roomId) {\n return;\n }\n\n // redisplay the room name, topic, etc.\n this._rateLimitedUpdate();\n },\n\n _onRoomAccountData: function _onRoomAccountData(event, room) {\n if (!this.props.room || room.roomId !== this.props.room.roomId) return;\n if (event.getType() !== \"im.vector.room.read_pins\") return;\n\n this._rateLimitedUpdate();\n },\n\n _rateLimitedUpdate: new _ratelimitedfunc2.default(function () {\n /* eslint-disable babel/no-invalid-this */\n this.forceUpdate();\n }, 500),\n\n _onRoomNameChange: function _onRoomNameChange(room) {\n this.forceUpdate();\n },\n\n onAvatarPickerClick: function onAvatarPickerClick(ev) {\n if (this.refs.file_label) {\n this.refs.file_label.click();\n }\n },\n\n onAvatarSelected: function onAvatarSelected(ev) {\n var changeAvatar = this.refs.changeAvatar;\n if (!changeAvatar) {\n console.error(\"No ChangeAvatar found to upload image to!\");\n return;\n }\n changeAvatar.onFileSelected(ev).catch(function (err) {\n var errMsg = typeof err === \"string\" ? err : err.error || \"\";\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to set avatar: \" + errMsg);\n _Modal2.default.createTrackedDialog('Failed to set avatar', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Failed to set avatar.\")\n });\n }).done();\n },\n\n onAvatarRemoveClick: function onAvatarRemoveClick() {\n _MatrixClientPeg2.default.get().sendStateEvent(this.props.room.roomId, 'm.room.avatar', { url: null }, '');\n },\n\n onShowRhsClick: function onShowRhsClick(ev) {\n _dispatcher2.default.dispatch({ action: 'show_right_panel' });\n },\n\n onShareRoomClick: function onShareRoomClick(ev) {\n var ShareDialog = _index2.default.getComponent(\"dialogs.ShareDialog\");\n _Modal2.default.createTrackedDialog('share room dialog', '', ShareDialog, {\n target: this.props.room\n });\n },\n\n _hasUnreadPins: function _hasUnreadPins() {\n var currentPinEvent = this.props.room.currentState.getStateEvents(\"m.room.pinned_events\", '');\n if (!currentPinEvent) return false;\n if (currentPinEvent.getContent().pinned && currentPinEvent.getContent().pinned.length <= 0) {\n return false; // no pins == nothing to read\n }\n\n var readPinsEvent = this.props.room.getAccountData(\"im.vector.room.read_pins\");\n if (readPinsEvent && readPinsEvent.getContent()) {\n var readStateEvents = readPinsEvent.getContent().event_ids || [];\n if (readStateEvents) {\n return !readStateEvents.includes(currentPinEvent.getId());\n }\n }\n\n // There's pins, and we haven't read any of them\n return true;\n },\n\n _hasPins: function _hasPins() {\n var currentPinEvent = this.props.room.currentState.getStateEvents(\"m.room.pinned_events\", '');\n if (!currentPinEvent) return false;\n\n return !(currentPinEvent.getContent().pinned && currentPinEvent.getContent().pinned.length <= 0);\n },\n\n /**\n * After editing the settings, get the new name for the room\n *\n * @return {?string} newName or undefined if we didn't let the user edit the room name\n */\n getEditedName: function getEditedName() {\n var newName = void 0;\n if (this.refs.nameEditor) {\n newName = this.refs.nameEditor.getRoomName();\n }\n return newName;\n },\n\n /**\n * After editing the settings, get the new topic for the room\n *\n * @return {?string} newTopic or undefined if we didn't let the user edit the room topic\n */\n getEditedTopic: function getEditedTopic() {\n var newTopic = void 0;\n if (this.refs.topicEditor) {\n newTopic = this.refs.topicEditor.getTopic();\n }\n return newTopic;\n },\n\n render: function render() {\n var RoomAvatar = _index2.default.getComponent(\"avatars.RoomAvatar\");\n var ChangeAvatar = _index2.default.getComponent(\"settings.ChangeAvatar\");\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n\n var name = null;\n var searchStatus = null;\n var topicElement = null;\n var cancelButton = null;\n var spinner = null;\n var saveButton = null;\n var settingsButton = null;\n var pinnedEventsButton = null;\n\n var canSetRoomName = void 0;\n var canSetRoomAvatar = void 0;\n var canSetRoomTopic = void 0;\n if (this.props.editing) {\n // calculate permissions. XXX: this should be done on mount or something\n var userId = _MatrixClientPeg2.default.get().credentials.userId;\n\n canSetRoomName = this.props.room.currentState.maySendStateEvent('m.room.name', userId);\n canSetRoomAvatar = this.props.room.currentState.maySendStateEvent('m.room.avatar', userId);\n canSetRoomTopic = this.props.room.currentState.maySendStateEvent('m.room.topic', userId);\n\n saveButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_textButton', onClick: this.props.onSaveClick },\n (0, _languageHandler._t)(\"Save\")\n );\n }\n\n if (this.props.onCancelClick) {\n cancelButton = _react2.default.createElement(_SimpleRoomHeader.CancelButton, { onClick: this.props.onCancelClick });\n }\n\n if (this.props.saving) {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n spinner = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_spinner' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n if (canSetRoomName) {\n var RoomNameEditor = _index2.default.getComponent(\"rooms.RoomNameEditor\");\n name = _react2.default.createElement(RoomNameEditor, { ref: 'nameEditor', room: this.props.room });\n } else {\n // don't display the search count until the search completes and\n // gives us a valid (possibly zero) searchCount.\n if (this.props.searchInfo && this.props.searchInfo.searchCount !== undefined && this.props.searchInfo.searchCount !== null) {\n searchStatus = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_searchStatus' },\n '\\xA0',\n (0, _languageHandler._t)(\"(~%(count)s results)\", { count: this.props.searchInfo.searchCount })\n );\n }\n\n // XXX: this is a bit inefficient - we could just compare room.name for 'Empty room'...\n var settingsHint = false;\n var members = this.props.room ? this.props.room.getJoinedMembers() : undefined;\n if (members) {\n if (members.length === 1 && members[0].userId === _MatrixClientPeg2.default.get().credentials.userId) {\n var nameEvent = this.props.room.currentState.getStateEvents('m.room.name', '');\n if (!nameEvent || !nameEvent.getContent().name) {\n settingsHint = true;\n }\n }\n }\n\n var roomName = (0, _languageHandler._t)(\"Join Room\");\n if (this.props.oobData && this.props.oobData.name) {\n roomName = this.props.oobData.name;\n } else if (this.props.room) {\n roomName = this.props.room.name;\n }\n\n var emojiTextClasses = (0, _classnames2.default)('mx_RoomHeader_nametext', { mx_RoomHeader_settingsHint: settingsHint });\n name = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_name', onClick: this.props.onSettingsClick },\n _react2.default.createElement(\n EmojiText,\n { dir: 'auto', element: 'div', className: emojiTextClasses, title: roomName },\n roomName\n ),\n searchStatus\n );\n }\n\n if (canSetRoomTopic) {\n var RoomTopicEditor = _index2.default.getComponent(\"rooms.RoomTopicEditor\");\n topicElement = _react2.default.createElement(RoomTopicEditor, { ref: 'topicEditor', room: this.props.room });\n } else {\n var topic = void 0;\n if (this.props.room) {\n var ev = this.props.room.currentState.getStateEvents('m.room.topic', '');\n if (ev) {\n topic = ev.getContent().topic;\n }\n }\n if (topic) {\n topicElement = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_topic', ref: 'topic', title: topic, dir: 'auto' },\n topic\n );\n }\n }\n\n var roomAvatar = null;\n if (canSetRoomAvatar) {\n roomAvatar = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_avatarPicker' },\n _react2.default.createElement(\n 'div',\n { onClick: this.onAvatarPickerClick },\n _react2.default.createElement(ChangeAvatar, { ref: 'changeAvatar', room: this.props.room, showUploadSection: false, width: 48, height: 48 })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_avatarPicker_edit' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'avatarInput', ref: 'file_label' },\n _react2.default.createElement('img', { src: 'img/camera.svg',\n alt: (0, _languageHandler._t)(\"Upload avatar\"), title: (0, _languageHandler._t)(\"Upload avatar\"),\n width: '17', height: '15' })\n ),\n _react2.default.createElement('input', { id: 'avatarInput', type: 'file', onChange: this.onAvatarSelected })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_avatarPicker_remove', onClick: this.onAvatarRemoveClick },\n _react2.default.createElement('img', { src: 'img/cancel.svg',\n className: 'mx_filterFlipColor',\n width: '10',\n alt: (0, _languageHandler._t)(\"Remove avatar\"),\n title: (0, _languageHandler._t)(\"Remove avatar\") })\n )\n );\n } else if (this.props.room || this.props.oobData && this.props.oobData.name) {\n roomAvatar = _react2.default.createElement(RoomAvatar, { room: this.props.room, width: 48, height: 48, oobData: this.props.oobData,\n viewAvatarOnClick: true });\n }\n\n if (this.props.onSettingsClick) {\n settingsButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_button', onClick: this.props.onSettingsClick, title: (0, _languageHandler._t)(\"Settings\") },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-settings-room.svg', width: '16', height: '16' })\n );\n }\n\n if (this.props.onPinnedClick && _SettingsStore2.default.isFeatureEnabled('feature_pinning')) {\n var pinsIndicator = null;\n if (this._hasUnreadPins()) {\n pinsIndicator = _react2.default.createElement('div', { className: 'mx_RoomHeader_pinsIndicator mx_RoomHeader_pinsIndicatorUnread' });\n } else if (this._hasPins()) {\n pinsIndicator = _react2.default.createElement('div', { className: 'mx_RoomHeader_pinsIndicator' });\n }\n\n pinnedEventsButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_button mx_RoomHeader_pinnedButton',\n onClick: this.props.onPinnedClick, title: (0, _languageHandler._t)(\"Pinned Messages\") },\n pinsIndicator,\n _react2.default.createElement(TintableSvg, { src: 'img/icons-pin.svg', width: '16', height: '16' })\n );\n }\n\n // var leave_button;\n // if (this.props.onLeaveClick) {\n // leave_button =\n // <div className=\"mx_RoomHeader_button\" onClick={this.props.onLeaveClick} title=\"Leave room\">\n // <TintableSvg src=\"img/leave.svg\" width=\"26\" height=\"20\"/>\n // </div>;\n // }\n\n var forgetButton = void 0;\n if (this.props.onForgetClick) {\n forgetButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_button', onClick: this.props.onForgetClick, title: (0, _languageHandler._t)(\"Forget room\") },\n _react2.default.createElement(TintableSvg, { src: 'img/leave.svg', width: '26', height: '20' })\n );\n }\n\n var searchButton = void 0;\n if (this.props.onSearchClick && this.props.inRoom) {\n searchButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_button', onClick: this.props.onSearchClick, title: (0, _languageHandler._t)(\"Search\") },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-search.svg', width: '35', height: '35' })\n );\n }\n\n var shareRoomButton = void 0;\n if (this.props.inRoom) {\n shareRoomButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_button', onClick: this.onShareRoomClick, title: (0, _languageHandler._t)('Share room') },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-share.svg', width: '16', height: '16' })\n );\n }\n\n var rightPanelButtons = void 0;\n if (this.props.collapsedRhs) {\n rightPanelButtons = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_button', onClick: this.onShowRhsClick, title: (0, _languageHandler._t)('Show panel') },\n _react2.default.createElement(TintableSvg, { src: 'img/maximise.svg', width: '10', height: '16' })\n );\n }\n\n var rightRow = void 0;\n var manageIntegsButton = void 0;\n if (this.props.room && this.props.room.roomId && this.props.inRoom) {\n manageIntegsButton = _react2.default.createElement(_ManageIntegsButton2.default, {\n room: this.props.room\n });\n }\n\n if (!this.props.editing) {\n rightRow = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_rightRow' },\n settingsButton,\n pinnedEventsButton,\n shareRoomButton,\n manageIntegsButton,\n forgetButton,\n searchButton,\n rightPanelButtons\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { className: \"mx_RoomHeader \" + (this.props.editing ? \"mx_RoomHeader_editing\" : \"\") },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_wrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_leftRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_avatar' },\n roomAvatar\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_info' },\n name,\n topicElement\n )\n ),\n spinner,\n saveButton,\n cancelButton,\n rightRow\n )\n );\n }\n});\n//# sourceMappingURL=RoomHeader.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017, 2018 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _values = require(\"babel-runtime/core-js/object/values\");\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _from = require(\"babel-runtime/core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nvar _set = require(\"babel-runtime/core-js/set\");\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _SettingsStore = require(\"../../../settings/SettingsStore\");\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nvar _Rooms = require(\"../../../Rooms\");\n\nvar Rooms = _interopRequireWildcard(_Rooms);\n\nvar _DMRoomMap = require(\"../../../utils/DMRoomMap\");\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _TagOrderStore = require(\"../../../stores/TagOrderStore\");\n\nvar _TagOrderStore2 = _interopRequireDefault(_TagOrderStore);\n\nvar _RoomListStore = require(\"../../../stores/RoomListStore\");\n\nvar _RoomListStore2 = _interopRequireDefault(_RoomListStore);\n\nvar _GroupStore = require(\"../../../stores/GroupStore\");\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require(\"react\");\nvar ReactDOM = require(\"react-dom\");\n\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\");\nvar CallHandler = require('../../../CallHandler');\nvar dis = require(\"../../../dispatcher\");\nvar sdk = require('../../../index');\nvar rate_limited_func = require('../../../ratelimitedfunc');\n\nvar Receipt = require('../../../utils/Receipt');\n\n\nvar HIDE_CONFERENCE_CHANS = true;\nvar STANDARD_TAGS_REGEX = /^(m\\.(favourite|lowpriority|server_notice)|im\\.vector\\.fake\\.(invite|recent|direct|archived))$/;\n\nfunction labelForTagName(tagName) {\n if (tagName.startsWith('u.')) return tagName.slice(2);\n return tagName;\n}\n\nfunction phraseForSection(section) {\n switch (section) {\n case 'm.favourite':\n return (0, _languageHandler._t)('Drop here to favourite');\n case 'im.vector.fake.direct':\n return (0, _languageHandler._t)('Drop here to tag direct chat');\n case 'im.vector.fake.recent':\n return (0, _languageHandler._t)('Drop here to restore');\n case 'm.lowpriority':\n return (0, _languageHandler._t)('Drop here to demote');\n default:\n return (0, _languageHandler._t)('Drop here to tag %(section)s', { section: section });\n }\n}\n\nmodule.exports = React.createClass({\n displayName: 'RoomList',\n\n propTypes: {\n ConferenceHandler: _propTypes2.default.any,\n collapsed: _propTypes2.default.bool.isRequired,\n searchFilter: _propTypes2.default.string\n },\n\n getInitialState: function getInitialState() {\n return {\n isLoadingLeftRooms: false,\n totalRoomCount: null,\n lists: {},\n incomingCall: null,\n selectedTags: []\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this.mounted = false;\n\n var cli = MatrixClientPeg.get();\n\n cli.on(\"Room\", this.onRoom);\n cli.on(\"deleteRoom\", this.onDeleteRoom);\n cli.on(\"Room.receipt\", this.onRoomReceipt);\n cli.on(\"RoomMember.name\", this.onRoomMemberName);\n cli.on(\"Event.decrypted\", this.onEventDecrypted);\n cli.on(\"accountData\", this.onAccountData);\n cli.on(\"Group.myMembership\", this._onGroupMyMembership);\n\n var dmRoomMap = _DMRoomMap2.default.shared();\n // A map between tags which are group IDs and the room IDs of rooms that should be kept\n // in the room list when filtering by that tag.\n this._visibleRoomsForGroup = {\n // $groupId: [$roomId1, $roomId2, ...],\n };\n // All rooms that should be kept in the room list when filtering.\n // By default, show all rooms.\n this._visibleRooms = MatrixClientPeg.get().getVisibleRooms();\n\n // Listen to updates to group data. RoomList cares about members and rooms in order\n // to filter the room list when group tags are selected.\n this._groupStoreToken = _GroupStore2.default.registerListener(null, function () {\n (_TagOrderStore2.default.getOrderedTags() || []).forEach(function (tag) {\n if (tag[0] !== '+') {\n return;\n }\n // This group's rooms or members may have updated, update rooms for its tag\n _this.updateVisibleRoomsForTag(dmRoomMap, tag);\n _this.updateVisibleRooms();\n });\n });\n\n this._tagStoreToken = _TagOrderStore2.default.addListener(function () {\n // Filters themselves have changed\n _this.updateVisibleRooms();\n });\n\n this._roomListStoreToken = _RoomListStore2.default.addListener(function () {\n _this._delayedRefreshRoomList();\n });\n\n this.refreshRoomList();\n\n // order of the sublists\n //this.listOrder = [];\n\n // loop count to stop a stack overflow if the user keeps waggling the\n // mouse for >30s in a row, or if running under mocha\n this._delayedRefreshRoomListLoopCount = 0;\n },\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = dis.register(this.onAction);\n // Initialise the stickyHeaders when the component is created\n this._updateStickyHeaders(true);\n\n this.mounted = true;\n },\n\n componentDidUpdate: function componentDidUpdate() {\n // Reinitialise the stickyHeaders when the component is updated\n this._updateStickyHeaders(true);\n this._repositionIncomingCallBox(undefined, false);\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n case 'view_tooltip':\n this.tooltip = payload.tooltip;\n break;\n case 'call_state':\n var call = CallHandler.getCall(payload.room_id);\n if (call && call.call_state === 'ringing') {\n this.setState({\n incomingCall: call\n });\n this._repositionIncomingCallBox(undefined, true);\n } else {\n this.setState({\n incomingCall: null\n });\n }\n break;\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this.mounted = false;\n\n dis.unregister(this.dispatcherRef);\n if (MatrixClientPeg.get()) {\n MatrixClientPeg.get().removeListener(\"Room\", this.onRoom);\n MatrixClientPeg.get().removeListener(\"deleteRoom\", this.onDeleteRoom);\n MatrixClientPeg.get().removeListener(\"Room.receipt\", this.onRoomReceipt);\n MatrixClientPeg.get().removeListener(\"RoomMember.name\", this.onRoomMemberName);\n MatrixClientPeg.get().removeListener(\"Event.decrypted\", this.onEventDecrypted);\n MatrixClientPeg.get().removeListener(\"accountData\", this.onAccountData);\n MatrixClientPeg.get().removeListener(\"Group.myMembership\", this._onGroupMyMembership);\n }\n\n if (this._tagStoreToken) {\n this._tagStoreToken.remove();\n }\n\n if (this._roomListStoreToken) {\n this._roomListStoreToken.remove();\n }\n\n // NB: GroupStore is not a Flux.Store\n if (this._groupStoreToken) {\n this._groupStoreToken.unregister();\n }\n\n // cancel any pending calls to the rate_limited_funcs\n this._delayedRefreshRoomList.cancelPendingCall();\n },\n\n onRoom: function onRoom(room) {\n this.updateVisibleRooms();\n },\n\n onDeleteRoom: function onDeleteRoom(roomId) {\n this.updateVisibleRooms();\n },\n\n onArchivedHeaderClick: function onArchivedHeaderClick(isHidden, scrollToPosition) {\n if (!isHidden) {\n var self = this;\n this.setState({ isLoadingLeftRooms: true });\n\n // Try scrolling to position\n this._updateStickyHeaders(true, scrollToPosition);\n\n // we don't care about the response since it comes down via \"Room\"\n // events.\n MatrixClientPeg.get().syncLeftRooms().catch(function (err) {\n console.error(\"Failed to sync left rooms: %s\", err);\n console.error(err);\n }).finally(function () {\n self.setState({ isLoadingLeftRooms: false });\n });\n }\n },\n\n onSubListHeaderClick: function onSubListHeaderClick(isHidden, scrollToPosition) {\n // The scroll area has expanded or contracted, so re-calculate sticky headers positions\n this._updateStickyHeaders(true, scrollToPosition);\n },\n\n onRoomReceipt: function onRoomReceipt(receiptEvent, room) {\n // because if we read a notification, it will affect notification count\n // only bother updating if there's a receipt from us\n if (Receipt.findReadReceiptFromUserId(receiptEvent, MatrixClientPeg.get().credentials.userId)) {\n this._delayedRefreshRoomList();\n }\n },\n\n onRoomMemberName: function onRoomMemberName(ev, member) {\n this._delayedRefreshRoomList();\n },\n\n onEventDecrypted: function onEventDecrypted(ev) {\n // An event being decrypted may mean we need to re-order the room list\n this._delayedRefreshRoomList();\n },\n\n onAccountData: function onAccountData(ev) {\n if (ev.getType() == 'm.direct') {\n this._delayedRefreshRoomList();\n }\n },\n\n _onGroupMyMembership: function _onGroupMyMembership(group) {\n this.forceUpdate();\n },\n\n _delayedRefreshRoomList: new rate_limited_func(function () {\n this.refreshRoomList();\n }, 500),\n\n // Update which rooms and users should appear in RoomList for a given group tag\n updateVisibleRoomsForTag: function updateVisibleRoomsForTag(dmRoomMap, tag) {\n var _this2 = this;\n\n if (!this.mounted) return;\n // For now, only handle group tags\n if (tag[0] !== '+') return;\n\n this._visibleRoomsForGroup[tag] = [];\n _GroupStore2.default.getGroupRooms(tag).forEach(function (room) {\n return _this2._visibleRoomsForGroup[tag].push(room.roomId);\n });\n _GroupStore2.default.getGroupMembers(tag).forEach(function (member) {\n if (member.userId === MatrixClientPeg.get().credentials.userId) return;\n dmRoomMap.getDMRoomsForUserId(member.userId).forEach(function (roomId) {\n return _this2._visibleRoomsForGroup[tag].push(roomId);\n });\n });\n // TODO: Check if room has been tagged to the group by the user\n },\n\n // Update which rooms and users should appear according to which tags are selected\n updateVisibleRooms: function updateVisibleRooms() {\n var _this3 = this;\n\n var selectedTags = _TagOrderStore2.default.getSelectedTags();\n var visibleGroupRooms = [];\n selectedTags.forEach(function (tag) {\n (_this3._visibleRoomsForGroup[tag] || []).forEach(function (roomId) {\n return visibleGroupRooms.push(roomId);\n });\n });\n\n // If there are any tags selected, constrain the rooms listed to the\n // visible rooms as determined by visibleGroupRooms. Here, we\n // de-duplicate and filter out rooms that the client doesn't know\n // about (hence the Set and the null-guard on `room`).\n if (selectedTags.length > 0) {\n var roomSet = new _set2.default();\n visibleGroupRooms.forEach(function (roomId) {\n var room = MatrixClientPeg.get().getRoom(roomId);\n if (room) {\n roomSet.add(room);\n }\n });\n this._visibleRooms = (0, _from2.default)(roomSet);\n } else {\n // Show all rooms\n this._visibleRooms = MatrixClientPeg.get().getVisibleRooms();\n }\n this._delayedRefreshRoomList();\n },\n\n refreshRoomList: function refreshRoomList() {\n // TODO: ideally we'd calculate this once at start, and then maintain\n // any changes to it incrementally, updating the appropriate sublists\n // as needed.\n // Alternatively we'd do something magical with Immutable.js or similar.\n var lists = this.getRoomLists();\n var totalRooms = 0;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _values2.default)(lists)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var l = _step.value;\n\n totalRooms += l.length;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n this.setState({\n lists: lists,\n totalRoomCount: totalRooms,\n // Do this here so as to not render every time the selected tags\n // themselves change.\n selectedTags: _TagOrderStore2.default.getSelectedTags()\n });\n\n // this._lastRefreshRoomListTs = Date.now();\n },\n\n getRoomLists: function getRoomLists() {\n var _this4 = this;\n\n var lists = _RoomListStore2.default.getRoomLists();\n\n var filteredLists = {};\n\n var isRoomVisible = {\n // $roomId: true,\n };\n\n this._visibleRooms.forEach(function (r) {\n isRoomVisible[r.roomId] = true;\n });\n\n (0, _keys2.default)(lists).forEach(function (tagName) {\n var filteredRooms = lists[tagName].filter(function (taggedRoom) {\n // Somewhat impossible, but guard against it anyway\n if (!taggedRoom) {\n return;\n }\n var myUserId = MatrixClientPeg.get().getUserId();\n if (HIDE_CONFERENCE_CHANS && Rooms.isConfCallRoom(taggedRoom, myUserId, _this4.props.ConferenceHandler)) {\n return;\n }\n\n return Boolean(isRoomVisible[taggedRoom.roomId]);\n });\n\n if (filteredRooms.length > 0 || tagName.match(STANDARD_TAGS_REGEX)) {\n filteredLists[tagName] = filteredRooms;\n }\n });\n\n return filteredLists;\n },\n\n _getScrollNode: function _getScrollNode() {\n if (!this.mounted) return null;\n var panel = ReactDOM.findDOMNode(this);\n if (!panel) return null;\n\n if (panel.classList.contains('gm-prevented')) {\n return panel;\n } else {\n return panel.children[2]; // XXX: Fragile!\n }\n },\n\n _whenScrolling: function _whenScrolling(e) {\n this._hideTooltip(e);\n this._repositionIncomingCallBox(e, false);\n this._updateStickyHeaders(false);\n },\n\n _hideTooltip: function _hideTooltip(e) {\n // Hide tooltip when scrolling, as we'll no longer be over the one we were on\n if (this.tooltip && this.tooltip.style.display !== \"none\") {\n this.tooltip.style.display = \"none\";\n }\n },\n\n _repositionIncomingCallBox: function _repositionIncomingCallBox(e, firstTime) {\n var incomingCallBox = document.getElementById(\"incomingCallBox\");\n if (incomingCallBox && incomingCallBox.parentElement) {\n var scrollArea = this._getScrollNode();\n if (!scrollArea) return;\n // Use the offset of the top of the scroll area from the window\n // as this is used to calculate the CSS fixed top position for the stickies\n var scrollAreaOffset = scrollArea.getBoundingClientRect().top + window.pageYOffset;\n // Use the offset of the top of the component from the window\n // as this is used to calculate the CSS fixed top position for the stickies\n var scrollAreaHeight = ReactDOM.findDOMNode(this).getBoundingClientRect().height;\n\n var top = incomingCallBox.parentElement.getBoundingClientRect().top + window.pageYOffset;\n // Make sure we don't go too far up, if the headers aren't sticky\n top = top < scrollAreaOffset ? scrollAreaOffset : top;\n // make sure we don't go too far down, if the headers aren't sticky\n var bottomMargin = scrollAreaOffset + (scrollAreaHeight - 45);\n top = top > bottomMargin ? bottomMargin : top;\n\n incomingCallBox.style.top = top + \"px\";\n incomingCallBox.style.left = scrollArea.offsetLeft + scrollArea.offsetWidth + 12 + \"px\";\n }\n },\n\n // Doing the sticky headers as raw DOM, for speed, as it gets very stuttery if done\n // properly through React\n _initAndPositionStickyHeaders: function _initAndPositionStickyHeaders(initialise, scrollToPosition) {\n var scrollArea = this._getScrollNode();\n if (!scrollArea) return;\n // Use the offset of the top of the scroll area from the window\n // as this is used to calculate the CSS fixed top position for the stickies\n var scrollAreaOffset = scrollArea.getBoundingClientRect().top + window.pageYOffset;\n // Use the offset of the top of the componet from the window\n // as this is used to calculate the CSS fixed top position for the stickies\n var scrollAreaHeight = ReactDOM.findDOMNode(this).getBoundingClientRect().height;\n\n if (initialise) {\n // Get a collection of sticky header containers references\n this.stickies = document.getElementsByClassName(\"mx_RoomSubList_labelContainer\");\n\n if (!this.stickies.length) return;\n\n // Make sure there is sufficient space to do sticky headers: 120px plus all the sticky headers\n this.scrollAreaSufficient = 120 + this.stickies[0].getBoundingClientRect().height * this.stickies.length < scrollAreaHeight;\n\n // Initialise the sticky headers\n if ((0, _typeof3.default)(this.stickies) === \"object\" && this.stickies.length > 0) {\n // Initialise the sticky headers\n Array.prototype.forEach.call(this.stickies, function (sticky, i) {\n // Save the positions of all the stickies within scroll area.\n // These positions are relative to the LHS Panel top\n sticky.dataset.originalPosition = sticky.offsetTop - scrollArea.offsetTop;\n\n // Save and set the sticky heights\n var originalHeight = sticky.getBoundingClientRect().height;\n sticky.dataset.originalHeight = originalHeight;\n sticky.style.height = originalHeight;\n\n return sticky;\n });\n }\n }\n\n if (!this.stickies) return;\n\n var self = this;\n var scrollStuckOffset = 0;\n // Scroll to the passed in position, i.e. a header was clicked and in a scroll to state\n // rather than a collapsable one (see RoomSubList.isCollapsableOnClick method for details)\n if (scrollToPosition !== undefined) {\n scrollArea.scrollTop = scrollToPosition;\n }\n // Stick headers to top and bottom, or free them\n Array.prototype.forEach.call(this.stickies, function (sticky, i, stickyWrappers) {\n var stickyPosition = sticky.dataset.originalPosition;\n var stickyHeight = sticky.dataset.originalHeight;\n var stickyHeader = sticky.childNodes[0];\n var topStuckHeight = stickyHeight * i;\n var bottomStuckHeight = stickyHeight * (stickyWrappers.length - i);\n\n if (self.scrollAreaSufficient && stickyPosition < scrollArea.scrollTop + topStuckHeight) {\n // Top stickies\n sticky.dataset.stuck = \"top\";\n stickyHeader.classList.add(\"mx_RoomSubList_fixed\");\n stickyHeader.style.top = scrollAreaOffset + topStuckHeight + \"px\";\n // If stuck at top adjust the scroll back down to take account of all the stuck headers\n if (scrollToPosition !== undefined && stickyPosition === scrollToPosition) {\n scrollStuckOffset = topStuckHeight;\n }\n } else if (self.scrollAreaSufficient && stickyPosition > scrollArea.scrollTop + scrollAreaHeight - bottomStuckHeight) {\n /// Bottom stickies\n sticky.dataset.stuck = \"bottom\";\n stickyHeader.classList.add(\"mx_RoomSubList_fixed\");\n stickyHeader.style.top = scrollAreaOffset + scrollAreaHeight - bottomStuckHeight + \"px\";\n } else {\n // Not sticky\n sticky.dataset.stuck = \"none\";\n stickyHeader.classList.remove(\"mx_RoomSubList_fixed\");\n stickyHeader.style.top = null;\n }\n });\n // Adjust the scroll to take account of top stuck headers\n if (scrollToPosition !== undefined) {\n scrollArea.scrollTop -= scrollStuckOffset;\n }\n },\n\n _updateStickyHeaders: function _updateStickyHeaders(initialise, scrollToPosition) {\n var self = this;\n\n if (initialise) {\n // Useing setTimeout to ensure that the code is run after the painting\n // of the newly rendered object as using requestAnimationFrame caused\n // artefacts to appear on screen briefly\n window.setTimeout(function () {\n self._initAndPositionStickyHeaders(initialise, scrollToPosition);\n });\n } else {\n this._initAndPositionStickyHeaders(initialise, scrollToPosition);\n }\n },\n\n onShowMoreRooms: function onShowMoreRooms() {\n // kick gemini in the balls to get it to wake up\n // XXX: uuuuuuugh.\n if (!this._gemScroll) return;\n this._gemScroll.forceUpdate();\n },\n\n _getEmptyContent: function _getEmptyContent(section) {\n if (this.state.selectedTags.length > 0) {\n return null;\n }\n\n var RoomDropTarget = sdk.getComponent('rooms.RoomDropTarget');\n\n if (this.props.collapsed) {\n return React.createElement(RoomDropTarget, { label: \"\" });\n }\n\n var StartChatButton = sdk.getComponent('elements.StartChatButton');\n var RoomDirectoryButton = sdk.getComponent('elements.RoomDirectoryButton');\n var CreateRoomButton = sdk.getComponent('elements.CreateRoomButton');\n\n var tip = null;\n\n switch (section) {\n case 'im.vector.fake.direct':\n tip = React.createElement(\n \"div\",\n { className: \"mx_RoomList_emptySubListTip\" },\n (0, _languageHandler._t)(\"Press <StartChatButton> to start a chat with someone\", {}, { 'StartChatButton': React.createElement(StartChatButton, { size: \"16\", callout: true }) })\n );\n break;\n case 'im.vector.fake.recent':\n tip = React.createElement(\n \"div\",\n { className: \"mx_RoomList_emptySubListTip\" },\n (0, _languageHandler._t)(\"You're not in any rooms yet! Press <CreateRoomButton> to make a room or\" + \" <RoomDirectoryButton> to browse the directory\", {}, {\n 'CreateRoomButton': React.createElement(CreateRoomButton, { size: \"16\", callout: true }),\n 'RoomDirectoryButton': React.createElement(RoomDirectoryButton, { size: \"16\", callout: true })\n })\n );\n break;\n }\n\n if (tip) {\n return React.createElement(\n \"div\",\n { className: \"mx_RoomList_emptySubListTip_container\" },\n tip\n );\n }\n\n // We don't want to display drop targets if there are no room tiles to drag'n'drop\n if (this.state.totalRoomCount === 0) {\n return null;\n }\n\n var labelText = phraseForSection(section);\n\n return React.createElement(RoomDropTarget, { label: labelText });\n },\n\n _getHeaderItems: function _getHeaderItems(section) {\n var StartChatButton = sdk.getComponent('elements.StartChatButton');\n var RoomDirectoryButton = sdk.getComponent('elements.RoomDirectoryButton');\n var CreateRoomButton = sdk.getComponent('elements.CreateRoomButton');\n switch (section) {\n case 'im.vector.fake.direct':\n return React.createElement(\n \"span\",\n { className: \"mx_RoomList_headerButtons\" },\n React.createElement(StartChatButton, { size: \"16\" })\n );\n case 'im.vector.fake.recent':\n return React.createElement(\n \"span\",\n { className: \"mx_RoomList_headerButtons\" },\n React.createElement(RoomDirectoryButton, { size: \"16\" }),\n React.createElement(CreateRoomButton, { size: \"16\" })\n );\n }\n },\n\n _makeGroupInviteTiles: function _makeGroupInviteTiles(filter) {\n var ret = [];\n var lcFilter = filter && filter.toLowerCase();\n\n var GroupInviteTile = sdk.getComponent('groups.GroupInviteTile');\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(MatrixClientPeg.get().getGroups()), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var group = _step2.value;\n var groupId = group.groupId,\n name = group.name,\n myMembership = group.myMembership;\n // filter to only groups in invite state and group_id starts with filter or group name includes it\n\n if (myMembership !== 'invite') continue;\n if (lcFilter && !groupId.toLowerCase().startsWith(lcFilter) && !(name && name.toLowerCase().includes(lcFilter))) continue;\n ret.push(React.createElement(GroupInviteTile, { key: groupId, group: group, collapsed: this.props.collapsed }));\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return ret;\n },\n _collectGemini: function _collectGemini(gemScroll) {\n this._gemScroll = gemScroll;\n },\n\n\n render: function render() {\n var _this5 = this;\n\n var RoomSubList = sdk.getComponent('structures.RoomSubList');\n var GeminiScrollbarWrapper = sdk.getComponent(\"elements.GeminiScrollbarWrapper\");\n\n // XXX: we can't detect device-level (localStorage) settings onChange as the SettingsStore does not notify\n // so checking on every render is the sanest thing at this time.\n var showEmpty = _SettingsStore2.default.getValue('RoomSubList.showEmpty');\n\n var self = this;\n return React.createElement(\n GeminiScrollbarWrapper,\n { className: \"mx_RoomList_scrollbar\",\n autoshow: true, onScroll: self._whenScrolling, onResize: self._whenScrolling, wrappedRef: this._collectGemini },\n React.createElement(\n \"div\",\n { className: \"mx_RoomList\" },\n React.createElement(RoomSubList, { list: [],\n extraTiles: this._makeGroupInviteTiles(self.props.searchFilter),\n label: (0, _languageHandler._t)('Community Invites'),\n editable: false,\n order: \"recent\",\n isInvite: true,\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty\n }),\n React.createElement(RoomSubList, { list: self.state.lists['im.vector.fake.invite'],\n label: (0, _languageHandler._t)('Invites'),\n editable: false,\n order: \"recent\",\n isInvite: true,\n incomingCall: self.state.incomingCall,\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty\n }),\n React.createElement(RoomSubList, { list: self.state.lists['m.favourite'],\n label: (0, _languageHandler._t)('Favourites'),\n tagName: \"m.favourite\",\n emptyContent: this._getEmptyContent('m.favourite'),\n editable: true,\n order: \"manual\",\n incomingCall: self.state.incomingCall,\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty }),\n React.createElement(RoomSubList, { list: self.state.lists['im.vector.fake.direct'],\n label: (0, _languageHandler._t)('People'),\n tagName: \"im.vector.fake.direct\",\n emptyContent: this._getEmptyContent('im.vector.fake.direct'),\n headerItems: this._getHeaderItems('im.vector.fake.direct'),\n editable: true,\n order: \"recent\",\n incomingCall: self.state.incomingCall,\n collapsed: self.props.collapsed,\n alwaysShowHeader: true,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty }),\n React.createElement(RoomSubList, { list: self.state.lists['im.vector.fake.recent'],\n label: (0, _languageHandler._t)('Rooms'),\n editable: true,\n emptyContent: this._getEmptyContent('im.vector.fake.recent'),\n headerItems: this._getHeaderItems('im.vector.fake.recent'),\n order: \"recent\",\n incomingCall: self.state.incomingCall,\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty }),\n (0, _keys2.default)(self.state.lists).map(function (tagName) {\n if (!tagName.match(STANDARD_TAGS_REGEX)) {\n return React.createElement(RoomSubList, { list: self.state.lists[tagName],\n key: tagName,\n label: labelForTagName(tagName),\n tagName: tagName,\n emptyContent: _this5._getEmptyContent(tagName),\n editable: true,\n order: \"manual\",\n incomingCall: self.state.incomingCall,\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty });\n }\n }),\n React.createElement(RoomSubList, { list: self.state.lists['m.lowpriority'],\n label: (0, _languageHandler._t)('Low priority'),\n tagName: \"m.lowpriority\",\n emptyContent: this._getEmptyContent('m.lowpriority'),\n editable: true,\n order: \"recent\",\n incomingCall: self.state.incomingCall,\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty }),\n React.createElement(RoomSubList, { list: self.state.lists['im.vector.fake.archived'],\n emptyContent: self.props.collapsed ? null : React.createElement(\n \"div\",\n { className: \"mx_RoomList_emptySubListTip_container\" },\n React.createElement(\n \"div\",\n { className: \"mx_RoomList_emptySubListTip\" },\n (0, _languageHandler._t)('You have no historical rooms')\n )\n ),\n label: (0, _languageHandler._t)('Historical'),\n editable: false,\n order: \"recent\",\n collapsed: self.props.collapsed,\n alwaysShowHeader: true,\n startAsHidden: true,\n showSpinner: self.state.isLoadingLeftRooms,\n onHeaderClick: self.onArchivedHeaderClick,\n incomingCall: self.state.incomingCall,\n searchFilter: self.props.searchFilter,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty }),\n React.createElement(RoomSubList, { list: self.state.lists['m.server_notice'],\n label: (0, _languageHandler._t)('System Alerts'),\n tagName: \"m.lowpriority\",\n editable: false,\n order: \"recent\",\n incomingCall: self.state.incomingCall,\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: false })\n )\n );\n }\n});\n//# sourceMappingURL=RoomList.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar sdk = require('../../../index');\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\n\n\nmodule.exports = React.createClass({\n displayName: 'RoomNameEditor',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n name: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n var room = this.props.room;\n var name = room.currentState.getStateEvents('m.room.name', '');\n var myId = MatrixClientPeg.get().credentials.userId;\n var defaultName = room.getDefaultRoomName(myId);\n\n this.setState({\n name: name ? name.getContent().name : ''\n });\n\n this._placeholderName = (0, _languageHandler._t)(\"Unnamed Room\");\n if (defaultName && defaultName !== 'Empty room') {\n // default name from JS SDK, needs no translation as we don't ever show it.\n this._placeholderName += \" (\" + defaultName + \")\";\n }\n },\n\n getRoomName: function getRoomName() {\n return this.state.name;\n },\n\n _onValueChanged: function _onValueChanged(value, shouldSubmit) {\n this.setState({\n name: value\n });\n },\n\n render: function render() {\n var EditableText = sdk.getComponent(\"elements.EditableText\");\n\n return React.createElement(\n 'div',\n { className: 'mx_RoomHeader_name' },\n React.createElement(EditableText, { ref: 'editor',\n className: 'mx_RoomHeader_nametext mx_RoomHeader_editable',\n placeholderClassName: 'mx_RoomHeader_placeholder',\n placeholder: this._placeholderName,\n blurToCancel: false,\n initialValue: this.state.name,\n onValueChanged: this._onValueChanged,\n dir: 'auto' })\n );\n }\n});\n//# sourceMappingURL=RoomNameEditor.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar sdk = require('../../../index');\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\n\nmodule.exports = React.createClass({\n displayName: 'RoomPreviewBar',\n\n propTypes: {\n onJoinClick: _propTypes2.default.func,\n onRejectClick: _propTypes2.default.func,\n onForgetClick: _propTypes2.default.func,\n\n // if inviterName is specified, the preview bar will shown an invite to the room.\n // You should also specify onRejectClick if specifiying inviterName\n inviterName: _propTypes2.default.string,\n\n // If invited by 3rd party invite, the email address the invite was sent to\n invitedEmail: _propTypes2.default.string,\n\n // A standard client/server API error object. If supplied, indicates that the\n // caller was unable to fetch details about the room for the given reason.\n error: _propTypes2.default.object,\n\n canPreview: _propTypes2.default.bool,\n room: _propTypes2.default.object,\n\n // When a spinner is present, a spinnerState can be specified to indicate the\n // purpose of the spinner.\n spinner: _propTypes2.default.bool,\n spinnerState: _propTypes2.default.oneOf([\"joining\"]),\n\n // The alias that was used to access this room, if appropriate\n // If given, this will be how the room is referred to (eg.\n // in error messages).\n roomAlias: _propTypes2.default.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onJoinClick: function onJoinClick() {},\n canPreview: true\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n busy: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n // If this is an invite and we've been told what email\n // address was invited, fetch the user's list of 3pids\n // so we can check them against the one that was invited\n if (this.props.inviterName && this.props.invitedEmail) {\n this.setState({ busy: true });\n MatrixClientPeg.get().lookupThreePid('email', this.props.invitedEmail).finally(function () {\n _this.setState({ busy: false });\n }).done(function (result) {\n _this.setState({ invitedEmailMxid: result.mxid });\n }, function (err) {\n _this.setState({ threePidFetchError: err });\n });\n }\n },\n\n _roomNameElement: function _roomNameElement() {\n return this.props.room ? this.props.room.name : this.props.room_alias || \"\";\n },\n\n render: function render() {\n var _this2 = this;\n\n var joinBlock = void 0,\n previewBlock = void 0;\n\n if (this.props.spinner || this.state.busy) {\n var Spinner = sdk.getComponent(\"elements.Spinner\");\n var spinnerIntro = \"\";\n if (this.props.spinnerState === \"joining\") {\n spinnerIntro = (0, _languageHandler._t)(\"Joining room...\");\n }\n return React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar' },\n React.createElement(\n 'p',\n { className: 'mx_RoomPreviewBar_spinnerIntro' },\n spinnerIntro\n ),\n React.createElement(Spinner, null)\n );\n }\n\n var myMember = this.props.room ? this.props.room.getMember(MatrixClientPeg.get().getUserId()) : null;\n var kicked = myMember && myMember.isKicked();\n var banned = myMember && myMember && myMember.membership == 'ban';\n\n if (this.props.inviterName) {\n var emailMatchBlock = void 0;\n if (this.props.invitedEmail) {\n if (this.state.threePidFetchError) {\n emailMatchBlock = React.createElement(\n 'div',\n { className: 'error' },\n (0, _languageHandler._t)(\"Unable to ascertain that the address this invite was sent to matches one associated with your account.\")\n );\n } else if (this.state.invitedEmailMxid != MatrixClientPeg.get().credentials.userId) {\n emailMatchBlock = React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_warning' },\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_warningIcon' },\n React.createElement('img', { src: 'img/warning.svg', width: '24', height: '23', title: '/!\\\\\\\\', alt: '/!\\\\\\\\' })\n ),\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_warningText' },\n (0, _languageHandler._t)(\"This invitation was sent to an email address which is not associated with this account:\"),\n React.createElement(\n 'b',\n null,\n React.createElement(\n 'span',\n { className: 'email' },\n this.props.invitedEmail\n )\n ),\n React.createElement('br', null),\n (0, _languageHandler._t)(\"You may wish to login with a different account, or add this email to this account.\")\n )\n );\n }\n }\n joinBlock = React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_invite_text' },\n (0, _languageHandler._t)('You have been invited to join this room by %(inviterName)s', { inviterName: this.props.inviterName })\n ),\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_join_text' },\n (0, _languageHandler._t)('Would you like to <acceptText>accept</acceptText> or <declineText>decline</declineText> this invitation?', {}, {\n 'acceptText': function acceptText(sub) {\n return React.createElement(\n 'a',\n { onClick: _this2.props.onJoinClick },\n sub\n );\n },\n 'declineText': function declineText(sub) {\n return React.createElement(\n 'a',\n { onClick: _this2.props.onRejectClick },\n sub\n );\n }\n })\n ),\n emailMatchBlock\n );\n } else if (kicked || banned) {\n var roomName = this._roomNameElement();\n var kickerMember = this.props.room.currentState.getMember(myMember.events.member.getSender());\n var kickerName = kickerMember ? kickerMember.name : myMember.events.member.getSender();\n var reason = void 0;\n if (myMember.events.member.getContent().reason) {\n reason = React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Reason: %(reasonText)s\", { reasonText: myMember.events.member.getContent().reason })\n );\n }\n var rejoinBlock = void 0;\n if (!banned) {\n rejoinBlock = React.createElement(\n 'div',\n null,\n React.createElement(\n 'a',\n { onClick: this.props.onJoinClick },\n React.createElement(\n 'b',\n null,\n (0, _languageHandler._t)(\"Rejoin\")\n )\n )\n );\n }\n\n var actionText = void 0;\n if (kicked) {\n if (roomName) {\n actionText = (0, _languageHandler._t)(\"You have been kicked from %(roomName)s by %(userName)s.\", { roomName: roomName, userName: kickerName });\n } else {\n actionText = (0, _languageHandler._t)(\"You have been kicked from this room by %(userName)s.\", { userName: kickerName });\n }\n } else if (banned) {\n if (roomName) {\n actionText = (0, _languageHandler._t)(\"You have been banned from %(roomName)s by %(userName)s.\", { roomName: roomName, userName: kickerName });\n } else {\n actionText = (0, _languageHandler._t)(\"You have been banned from this room by %(userName)s.\", { userName: kickerName });\n }\n } // no other options possible due to the kicked || banned check above.\n\n joinBlock = React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_join_text' },\n actionText,\n React.createElement('br', null),\n reason,\n rejoinBlock,\n React.createElement(\n 'a',\n { onClick: this.props.onForgetClick },\n React.createElement(\n 'b',\n null,\n (0, _languageHandler._t)(\"Forget room\")\n )\n )\n )\n );\n } else if (this.props.error) {\n var name = this.props.roomAlias || (0, _languageHandler._t)(\"This room\");\n var error = void 0;\n if (this.props.error.errcode == 'M_NOT_FOUND') {\n error = (0, _languageHandler._t)(\"%(roomName)s does not exist.\", { roomName: name });\n } else {\n error = (0, _languageHandler._t)(\"%(roomName)s is not accessible at this time.\", { roomName: name });\n }\n joinBlock = React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_join_text' },\n error\n )\n );\n } else {\n var _name = this._roomNameElement();\n joinBlock = React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_join_text' },\n _name ? (0, _languageHandler._t)('You are trying to access %(roomName)s.', { roomName: _name }) : (0, _languageHandler._t)('You are trying to access a room.'),\n React.createElement('br', null),\n (0, _languageHandler._t)(\"<a>Click here</a> to join the discussion!\", {}, { 'a': function a(sub) {\n return React.createElement(\n 'a',\n { onClick: _this2.props.onJoinClick },\n React.createElement(\n 'b',\n null,\n sub\n )\n );\n } })\n )\n );\n }\n\n if (this.props.canPreview) {\n previewBlock = React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_preview_text' },\n (0, _languageHandler._t)('This is a preview of this room. Room interactions have been disabled'),\n '.'\n );\n }\n\n return React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar' },\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_wrapper' },\n joinBlock,\n previewBlock\n )\n );\n }\n});\n//# sourceMappingURL=RoomPreviewBar.js.map","'use strict';\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _ObjectUtils = require('../../../ObjectUtils');\n\nvar _ObjectUtils2 = _interopRequireDefault(_ObjectUtils);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// parse a string as an integer; if the input is undefined, or cannot be parsed\n// as an integer, return a default.\nfunction parseIntWithDefault(val, def) {\n var res = parseInt(val);\n return isNaN(res) ? def : res;\n} /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar plEventsToLabels = {\n // These will be translated for us later.\n \"m.room.avatar\": (0, _languageHandler._td)(\"To change the room's avatar, you must be a\"),\n \"m.room.name\": (0, _languageHandler._td)(\"To change the room's name, you must be a\"),\n \"m.room.canonical_alias\": (0, _languageHandler._td)(\"To change the room's main address, you must be a\"),\n \"m.room.history_visibility\": (0, _languageHandler._td)(\"To change the room's history visibility, you must be a\"),\n \"m.room.power_levels\": (0, _languageHandler._td)(\"To change the permissions in the room, you must be a\"),\n \"m.room.topic\": (0, _languageHandler._td)(\"To change the topic, you must be a\"),\n\n \"im.vector.modular.widgets\": (0, _languageHandler._td)(\"To modify widgets in the room, you must be a\")\n};\n\nvar plEventsToShow = {\n // If an event is listed here, it will be shown in the PL settings. Defaults will be calculated.\n \"m.room.avatar\": { isState: true },\n \"m.room.name\": { isState: true },\n \"m.room.canonical_alias\": { isState: true },\n \"m.room.history_visibility\": { isState: true },\n \"m.room.power_levels\": { isState: true },\n \"m.room.topic\": { isState: true },\n\n \"im.vector.modular.widgets\": { isState: true }\n};\n\nvar BannedUser = _react2.default.createClass({\n displayName: 'BannedUser',\n\n propTypes: {\n canUnban: _propTypes2.default.bool,\n member: _propTypes2.default.object.isRequired, // js-sdk RoomMember\n by: _propTypes2.default.string.isRequired,\n reason: _propTypes2.default.string\n },\n\n _onUnbanClick: function _onUnbanClick() {\n var _this = this;\n\n var ConfirmUserActionDialog = _index2.default.getComponent(\"dialogs.ConfirmUserActionDialog\");\n _Modal2.default.createTrackedDialog('Confirm User Action Dialog', 'onUnbanClick', ConfirmUserActionDialog, {\n member: this.props.member,\n action: (0, _languageHandler._t)('Unban'),\n title: (0, _languageHandler._t)('Unban this user?'),\n danger: false,\n onFinished: function onFinished(proceed) {\n if (!proceed) return;\n\n _MatrixClientPeg2.default.get().unban(_this.props.member.roomId, _this.props.member.userId).catch(function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to unban: \" + err);\n _Modal2.default.createTrackedDialog('Failed to unban', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: (0, _languageHandler._t)('Failed to unban')\n });\n }).done();\n }\n });\n },\n\n render: function render() {\n var unbanButton = void 0;\n\n if (this.props.canUnban) {\n unbanButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomSettings_unbanButton', onClick: this._onUnbanClick },\n (0, _languageHandler._t)('Unban')\n );\n }\n\n return _react2.default.createElement(\n 'li',\n null,\n unbanButton,\n _react2.default.createElement(\n 'span',\n { title: (0, _languageHandler._t)(\"Banned by %(displayName)s\", { displayName: this.props.by }) },\n _react2.default.createElement(\n 'strong',\n null,\n this.props.member.name\n ),\n ' ',\n this.props.member.userId,\n this.props.reason ? \" \" + (0, _languageHandler._t)('Reason') + \": \" + this.props.reason : \"\"\n )\n );\n }\n});\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomSettings',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n var tags = {};\n (0, _keys2.default)(this.props.room.tags).forEach(function (tagName) {\n tags[tagName] = ['yep'];\n });\n\n return {\n name: this._yankValueFromEvent(\"m.room.name\", \"name\"),\n topic: this._yankValueFromEvent(\"m.room.topic\", \"topic\"),\n join_rule: this._yankValueFromEvent(\"m.room.join_rules\", \"join_rule\"),\n history_visibility: this._yankValueFromEvent(\"m.room.history_visibility\", \"history_visibility\"),\n guest_access: this._yankValueFromEvent(\"m.room.guest_access\", \"guest_access\"),\n powerLevels: this._yankContentFromEvent(\"m.room.power_levels\", {}),\n powerLevelsChanged: false,\n tags_changed: false,\n tags: tags,\n // isRoomPublished is loaded async in componentWillMount so when the component\n // inits, the saved value will always be undefined, however getInitialState()\n // is also called from the saving code so we must return the correct value here\n // if we have it (although this could race if the user saves before we load whether\n // the room is published or not).\n // Default to false if it's undefined, otherwise react complains about changing\n // components from uncontrolled to controlled\n isRoomPublished: this._originalIsRoomPublished || false\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this2 = this;\n\n _MatrixClientPeg2.default.get().on(\"RoomMember.membership\", this._onRoomMemberMembership);\n\n _MatrixClientPeg2.default.get().getRoomDirectoryVisibility(this.props.room.roomId).done(function () {\n var result = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _this2.setState({ isRoomPublished: result.visibility === \"public\" });\n _this2._originalIsRoomPublished = result.visibility === \"public\";\n }, function (err) {\n console.error(\"Failed to get room visibility: \" + err);\n });\n\n _dispatcher2.default.dispatch({\n action: 'panel_disable',\n sideDisabled: true,\n middleDisabled: true\n });\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var cli = _MatrixClientPeg2.default.get();\n if (cli) {\n cli.removeListener(\"RoomMember.membership\", this._onRoomMemberMembership);\n }\n\n _dispatcher2.default.dispatch({\n action: 'panel_disable',\n sideDisabled: false,\n middleDisabled: false\n });\n },\n\n setName: function setName(name) {\n this.setState({\n name: name\n });\n },\n\n setTopic: function setTopic(topic) {\n this.setState({\n topic: topic\n });\n },\n\n /**\n * Returns a promise which resolves once all of the save operations have completed or failed.\n *\n * The result is a list of promise state snapshots, each with the form\n * `{ state: \"fulfilled\", value: v }` or `{ state: \"rejected\", reason: r }`.\n */\n save: function save() {\n var _this3 = this;\n\n var stateWasSetDefer = _bluebird2.default.defer();\n // the caller may have JUST called setState on stuff, so we need to re-render before saving\n // else we won't use the latest values of things.\n // We can be a bit cheeky here and set a loading flag, and listen for the callback on that\n // to know when things have been set.\n this.setState({ _loading: true }, function () {\n stateWasSetDefer.resolve();\n _this3.setState({ _loading: false });\n });\n\n function mapPromiseToSnapshot(p) {\n return p.then(function (r) {\n return { state: \"fulfilled\", value: r };\n }, function (e) {\n return { state: \"rejected\", reason: e };\n });\n }\n\n return stateWasSetDefer.promise.then(function () {\n return _bluebird2.default.all(_this3._calcSavePromises().map(mapPromiseToSnapshot));\n });\n },\n\n _calcSavePromises: function _calcSavePromises() {\n var roomId = this.props.room.roomId;\n var promises = this.saveAliases(); // returns Promise[]\n var originalState = this.getInitialState();\n\n // diff between original state and this.state to work out what has been changed\n console.log(\"Original: %s\", (0, _stringify2.default)(originalState));\n console.log(\"New: %s\", (0, _stringify2.default)(this.state));\n\n // name and topic\n if (this._hasDiff(this.state.name, originalState.name)) {\n promises.push(_MatrixClientPeg2.default.get().setRoomName(roomId, this.state.name));\n }\n if (this._hasDiff(this.state.topic, originalState.topic)) {\n promises.push(_MatrixClientPeg2.default.get().setRoomTopic(roomId, this.state.topic));\n }\n\n if (this.state.history_visibility !== originalState.history_visibility) {\n promises.push(_MatrixClientPeg2.default.get().sendStateEvent(roomId, \"m.room.history_visibility\", { history_visibility: this.state.history_visibility }, \"\"));\n }\n\n if (this.state.isRoomPublished !== originalState.isRoomPublished) {\n promises.push(_MatrixClientPeg2.default.get().setRoomDirectoryVisibility(roomId, this.state.isRoomPublished ? \"public\" : \"private\"));\n }\n\n if (this.state.join_rule !== originalState.join_rule) {\n promises.push(_MatrixClientPeg2.default.get().sendStateEvent(roomId, \"m.room.join_rules\", { join_rule: this.state.join_rule }, \"\"));\n }\n\n if (this.state.guest_access !== originalState.guest_access) {\n promises.push(_MatrixClientPeg2.default.get().sendStateEvent(roomId, \"m.room.guest_access\", { guest_access: this.state.guest_access }, \"\"));\n }\n\n // power levels\n var powerLevels = this.state.powerLevels;\n if (this.state.powerLevelsChanged) {\n promises.push(_MatrixClientPeg2.default.get().sendStateEvent(roomId, \"m.room.power_levels\", powerLevels, \"\"));\n }\n\n // tags\n if (this.state.tags_changed) {\n var tagDiffs = _ObjectUtils2.default.getKeyValueArrayDiffs(originalState.tags, this.state.tags);\n // [ {place: add, key: \"m.favourite\", val: [\"yep\"]} ]\n tagDiffs.forEach(function (diff) {\n switch (diff.place) {\n case \"add\":\n promises.push(_MatrixClientPeg2.default.get().setRoomTag(roomId, diff.key, {}));\n break;\n case \"del\":\n promises.push(_MatrixClientPeg2.default.get().deleteRoomTag(roomId, diff.key));\n break;\n default:\n console.error(\"Unknown tag operation: %s\", diff.place);\n break;\n }\n });\n }\n\n // color scheme\n var p = void 0;\n p = this.saveColor();\n if (!p.isFulfilled()) {\n promises.push(p);\n }\n\n // url preview settings\n var ps = this.saveUrlPreviewSettings();\n if (ps.length > 0) {\n ps.map(function (p) {\n return promises.push(p);\n });\n }\n\n // related groups\n promises.push(this.saveRelatedGroups());\n\n // encryption\n p = this.saveEnableEncryption();\n if (!p.isFulfilled()) {\n promises.push(p);\n }\n\n this.saveBlacklistUnverifiedDevicesPerRoom();\n\n console.log(\"Performing %s operations: %s\", promises.length, (0, _stringify2.default)(promises));\n return promises;\n },\n\n saveAliases: function saveAliases() {\n if (!this.refs.alias_settings) {\n return [_bluebird2.default.resolve()];\n }\n return this.refs.alias_settings.saveSettings();\n },\n\n saveRelatedGroups: function saveRelatedGroups() {\n if (!this.refs.related_groups) {\n return _bluebird2.default.resolve();\n }\n return this.refs.related_groups.saveSettings();\n },\n\n saveColor: function saveColor() {\n if (!this.refs.color_settings) {\n return _bluebird2.default.resolve();\n }\n return this.refs.color_settings.saveSettings();\n },\n\n saveUrlPreviewSettings: function saveUrlPreviewSettings() {\n if (!this.refs.url_preview_settings) {\n return _bluebird2.default.resolve();\n }\n return this.refs.url_preview_settings.saveSettings();\n },\n\n saveEnableEncryption: function saveEnableEncryption() {\n if (!this.refs.encrypt) {\n return _bluebird2.default.resolve();\n }\n\n var encrypt = this.refs.encrypt.checked;\n if (!encrypt) {\n return _bluebird2.default.resolve();\n }\n\n var roomId = this.props.room.roomId;\n return _MatrixClientPeg2.default.get().sendStateEvent(roomId, \"m.room.encryption\", { algorithm: \"m.megolm.v1.aes-sha2\" });\n },\n\n saveBlacklistUnverifiedDevicesPerRoom: function saveBlacklistUnverifiedDevicesPerRoom() {\n var _this4 = this;\n\n if (!this.refs.blacklistUnverifiedDevices) return;\n this.refs.blacklistUnverifiedDevices.save().then(function () {\n var value = _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.ROOM_DEVICE, \"blacklistUnverifiedDevices\", _this4.props.room.roomId,\n /*explicit=*/true);\n _this4.props.room.setBlacklistUnverifiedDevices(value);\n });\n },\n\n _hasDiff: function _hasDiff(strA, strB) {\n // treat undefined as an empty string because other components may blindly\n // call setName(\"\") when there has been no diff made to the name!\n strA = strA || \"\";\n strB = strB || \"\";\n return strA !== strB;\n },\n\n onPowerLevelsChanged: function onPowerLevelsChanged(value, powerLevelKey) {\n var powerLevels = (0, _assign2.default)({}, this.state.powerLevels);\n var eventsLevelPrefix = \"event_levels_\";\n\n value = parseInt(value);\n\n if (powerLevelKey.startsWith(eventsLevelPrefix)) {\n // deep copy \"events\" object, Object.assign itself won't deep copy\n powerLevels[\"events\"] = (0, _assign2.default)({}, this.state.powerLevels[\"events\"] || {});\n powerLevels[\"events\"][powerLevelKey.slice(eventsLevelPrefix.length)] = value;\n } else {\n var keyPath = powerLevelKey.split('.');\n var parentObj = void 0;\n var currentObj = powerLevels;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(keyPath), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n\n if (!currentObj[key]) {\n currentObj[key] = {};\n }\n parentObj = currentObj;\n currentObj = currentObj[key];\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n parentObj[keyPath[keyPath.length - 1]] = value;\n }\n this.setState({\n powerLevels: powerLevels,\n powerLevelsChanged: true\n });\n },\n\n _yankContentFromEvent: function _yankContentFromEvent(stateEventType, defaultValue) {\n // E.g.(\"m.room.name\") would yank the content of \"m.room.name\"\n var event = this.props.room.currentState.getStateEvents(stateEventType, '');\n if (!event) {\n return defaultValue;\n }\n return event.getContent() || defaultValue;\n },\n\n _yankValueFromEvent: function _yankValueFromEvent(stateEventType, keyName, defaultValue) {\n // E.g.(\"m.room.name\",\"name\") would yank the \"name\" content key from \"m.room.name\"\n var event = this.props.room.currentState.getStateEvents(stateEventType, '');\n if (!event) {\n return defaultValue;\n }\n var content = event.getContent();\n return keyName in content ? content[keyName] : defaultValue;\n },\n\n _onHistoryRadioToggle: function _onHistoryRadioToggle(ev) {\n var self = this;\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n\n // cancel the click unless the user confirms it\n ev.preventDefault();\n var value = ev.target.value;\n\n _Modal2.default.createTrackedDialog('Privacy warning', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Privacy warning'),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Changes to who can read history will only apply to future messages in this room'),\n '.',\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)('The visibility of existing history will be unchanged'),\n '.'\n ),\n button: (0, _languageHandler._t)('Continue'),\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n self.setState({\n history_visibility: value\n });\n }\n }\n });\n },\n\n _onRoomAccessRadioToggle: function _onRoomAccessRadioToggle(ev) {\n // join_rule\n // INVITE | PUBLIC\n // ----------------------+----------------\n // guest CAN_JOIN | inv_only | pub_with_guest\n // access ----------------------+----------------\n // FORBIDDEN | inv_only | pub_no_guest\n // ----------------------+----------------\n\n switch (ev.target.value) {\n case \"invite_only\":\n this.setState({\n join_rule: \"invite\",\n // we always set guests can_join here as it makes no sense to have\n // an invite-only room that guests can't join. If you explicitly\n // invite them, you clearly want them to join, whether they're a\n // guest or not. In practice, guest_access should probably have\n // been implemented as part of the join_rules enum.\n guest_access: \"can_join\"\n });\n break;\n case \"public_no_guests\":\n this.setState({\n join_rule: \"public\",\n guest_access: \"forbidden\"\n });\n break;\n case \"public_with_guests\":\n this.setState({\n join_rule: \"public\",\n guest_access: \"can_join\"\n });\n break;\n }\n },\n\n _onToggle: function _onToggle(keyName, checkedValue, uncheckedValue, ev) {\n console.log(\"Checkbox toggle: %s %s\", keyName, ev.target.checked);\n var state = {};\n state[keyName] = ev.target.checked ? checkedValue : uncheckedValue;\n this.setState(state);\n },\n\n _onTagChange: function _onTagChange(tagName, event) {\n if (event.target.checked) {\n if (tagName === 'm.favourite') {\n delete this.state.tags['m.lowpriority'];\n } else if (tagName === 'm.lowpriority') {\n delete this.state.tags['m.favourite'];\n }\n\n this.state.tags[tagName] = this.state.tags[tagName] || [\"yep\"];\n } else {\n delete this.state.tags[tagName];\n }\n\n this.setState({\n tags: this.state.tags,\n tags_changed: true\n });\n },\n\n mayChangeRoomAccess: function mayChangeRoomAccess() {\n var cli = _MatrixClientPeg2.default.get();\n var roomState = this.props.room.currentState;\n return roomState.mayClientSendStateEvent(\"m.room.join_rules\", cli) && roomState.mayClientSendStateEvent(\"m.room.guest_access\", cli);\n },\n\n onLeaveClick: function onLeaveClick() {\n _dispatcher2.default.dispatch({\n action: 'leave_room',\n room_id: this.props.room.roomId\n });\n },\n onForgetClick: function onForgetClick() {\n // FIXME: duplicated with RoomTagContextualMenu (and dead code in RoomView)\n _MatrixClientPeg2.default.get().forget(this.props.room.roomId).done(function () {\n _dispatcher2.default.dispatch({ action: 'view_next_room' });\n }, function (err) {\n var errCode = err.errcode || (0, _languageHandler._t)('unknown error code');\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to forget room', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: (0, _languageHandler._t)(\"Failed to forget room %(errCode)s\", { errCode: errCode })\n });\n });\n },\n onEnableEncryptionClick: function onEnableEncryptionClick() {\n var _this5 = this;\n\n if (!this.refs.encrypt.checked) return;\n\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('E2E Enable Warning', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Warning!'),\n description: _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('End-to-end encryption is in beta and may not be reliable'),\n '.'\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('You should not yet trust it to secure data'),\n '.'\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Devices will not yet be able to decrypt history from before they joined the room'),\n '.'\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Once encryption is enabled for a room it cannot be turned off again (for now)'),\n '.'\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Encrypted messages will not be visible on clients that do not yet implement encryption'),\n '.'\n )\n ),\n onFinished: function onFinished(confirm) {\n if (!confirm) {\n _this5.refs.encrypt.checked = false;\n }\n }\n });\n },\n\n\n _onRoomUpgradeClick: function _onRoomUpgradeClick() {\n var RoomUpgradeDialog = _index2.default.getComponent('dialogs.RoomUpgradeDialog');\n _Modal2.default.createTrackedDialog('Upgrade Room Version', '', RoomUpgradeDialog, { room: this.props.room });\n },\n\n _onRoomMemberMembership: function _onRoomMemberMembership() {\n // Update, since our banned user list may have changed\n this.forceUpdate();\n },\n\n _populateDefaultPlEvents: function _populateDefaultPlEvents(eventsSection, stateLevel, eventsLevel) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(plEventsToShow)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var desiredEvent = _step2.value;\n\n if (!(desiredEvent in eventsSection)) {\n eventsSection[desiredEvent] = plEventsToShow[desiredEvent].isState ? stateLevel : eventsLevel;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n },\n\n _renderEncryptionSection: function _renderEncryptionSection() {\n var SettingsFlag = _index2.default.getComponent(\"elements.SettingsFlag\");\n\n var cli = _MatrixClientPeg2.default.get();\n var roomState = this.props.room.currentState;\n var isEncrypted = cli.isRoomEncrypted(this.props.room.roomId);\n\n var settings = _react2.default.createElement(SettingsFlag, { name: 'blacklistUnverifiedDevices',\n level: _SettingsStore.SettingLevel.ROOM_DEVICE,\n roomId: this.props.room.roomId,\n manualSave: true,\n ref: 'blacklistUnverifiedDevices'\n });\n\n if (!isEncrypted && roomState.mayClientSendStateEvent(\"m.room.encryption\", cli)) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'checkbox', ref: 'encrypt', onClick: this.onEnableEncryptionClick }),\n _react2.default.createElement('img', { className: 'mx_RoomSettings_e2eIcon mx_filterFlipColor', src: 'img/e2e-unencrypted.svg', width: '12', height: '12' }),\n (0, _languageHandler._t)('Enable encryption'),\n ' ',\n (0, _languageHandler._t)('(warning: cannot be disabled again!)')\n ),\n settings\n );\n } else {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n isEncrypted ? _react2.default.createElement('img', { className: 'mx_RoomSettings_e2eIcon', src: 'img/e2e-verified.svg', width: '10', height: '12' }) : _react2.default.createElement('img', { className: 'mx_RoomSettings_e2eIcon mx_filterFlipColor', src: 'img/e2e-unencrypted.svg', width: '12', height: '12' }),\n isEncrypted ? (0, _languageHandler._t)(\"Encryption is enabled in this room\") : (0, _languageHandler._t)(\"Encryption is not enabled in this room\"),\n '.'\n ),\n settings\n );\n }\n },\n\n render: function render() {\n var _this6 = this;\n\n // TODO: go through greying out things you don't have permission to change\n // (or turning them into informative stuff)\n\n var AliasSettings = _index2.default.getComponent(\"room_settings.AliasSettings\");\n var ColorSettings = _index2.default.getComponent(\"room_settings.ColorSettings\");\n var UrlPreviewSettings = _index2.default.getComponent(\"room_settings.UrlPreviewSettings\");\n var RelatedGroupSettings = _index2.default.getComponent(\"room_settings.RelatedGroupSettings\");\n var PowerSelector = _index2.default.getComponent('elements.PowerSelector');\n\n var cli = _MatrixClientPeg2.default.get();\n var roomState = this.props.room.currentState;\n var myUserId = cli.credentials.userId;\n\n var powerLevels = this.state.powerLevels;\n var eventsLevels = powerLevels.events || {};\n var userLevels = powerLevels.users || {};\n\n var powerLevelDescriptors = {\n users_default: {\n desc: (0, _languageHandler._t)('The default role for new room members is'),\n defaultValue: 0\n },\n events_default: {\n desc: (0, _languageHandler._t)('To send messages, you must be a'),\n defaultValue: 0\n },\n invite: {\n desc: (0, _languageHandler._t)('To invite users into the room, you must be a'),\n defaultValue: 50\n },\n state_default: {\n desc: (0, _languageHandler._t)('To configure the room, you must be a'),\n defaultValue: 50\n },\n kick: {\n desc: (0, _languageHandler._t)('To kick users, you must be a'),\n defaultValue: 50\n },\n ban: {\n desc: (0, _languageHandler._t)('To ban users, you must be a'),\n defaultValue: 50\n },\n redact: {\n desc: (0, _languageHandler._t)('To remove other users\\' messages, you must be a'),\n defaultValue: 50\n },\n \"notifications.room\": {\n desc: (0, _languageHandler._t)('To notify everyone in the room, you must be a'),\n defaultValue: 50\n }\n };\n\n var banLevel = parseIntWithDefault(powerLevels.ban, powerLevelDescriptors.ban.defaultValue);\n var defaultUserLevel = parseIntWithDefault(powerLevels.users_default, powerLevelDescriptors.users_default.defaultValue);\n\n this._populateDefaultPlEvents(eventsLevels, parseIntWithDefault(powerLevels.state_default, powerLevelDescriptors.state_default.defaultValue), parseIntWithDefault(powerLevels.events_default, powerLevelDescriptors.events_default.defaultValue));\n\n var currentUserLevel = userLevels[myUserId];\n if (currentUserLevel === undefined) {\n currentUserLevel = defaultUserLevel;\n }\n\n var canChangeLevels = roomState.mayClientSendStateEvent(\"m.room.power_levels\", cli);\n\n var canSetTag = !cli.isGuest();\n\n var self = this;\n\n var relatedGroupsSection = _react2.default.createElement(RelatedGroupSettings, { ref: 'related_groups',\n roomId: this.props.room.roomId,\n canSetRelatedGroups: roomState.mayClientSendStateEvent(\"m.room.related_groups\", cli),\n relatedGroupsEvent: this.props.room.currentState.getStateEvents('m.room.related_groups', '')\n });\n\n var privilegedUsersSection = _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('No users have specific privileges in this room'),\n '.'\n ); // default\n var mutedUsersSection = void 0;\n if ((0, _keys2.default)(userLevels).length) {\n var privilegedUsers = [];\n var mutedUsers = [];\n\n (0, _keys2.default)(userLevels).forEach(function (user) {\n if (userLevels[user] > defaultUserLevel) {\n // privileged\n privilegedUsers.push(_react2.default.createElement(\n 'li',\n { className: 'mx_RoomSettings_userLevel', key: user },\n (0, _languageHandler._t)(\"%(user)s is a %(userRole)s\", {\n user: user,\n userRole: _react2.default.createElement(PowerSelector, { value: userLevels[user], disabled: true })\n })\n ));\n } else if (userLevels[user] < defaultUserLevel) {\n // muted\n mutedUsers.push(_react2.default.createElement(\n 'li',\n { className: 'mx_RoomSettings_userLevel', key: user },\n (0, _languageHandler._t)(\"%(user)s is a %(userRole)s\", {\n user: user,\n userRole: _react2.default.createElement(PowerSelector, { value: userLevels[user], disabled: true })\n })\n ));\n }\n });\n\n // comparator for sorting PL users lexicographically on PL descending, MXID ascending. (case-insensitive)\n var comparator = function comparator(a, b) {\n var plDiff = userLevels[b.key] - userLevels[a.key];\n return plDiff !== 0 ? plDiff : a.key.toLocaleLowerCase().localeCompare(b.key.toLocaleLowerCase());\n };\n\n privilegedUsers.sort(comparator);\n mutedUsers.sort(comparator);\n\n if (privilegedUsers.length) {\n privilegedUsersSection = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Privileged Users')\n ),\n _react2.default.createElement(\n 'ul',\n { className: 'mx_RoomSettings_userLevels' },\n privilegedUsers\n )\n );\n }\n if (mutedUsers.length) {\n mutedUsersSection = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Muted Users')\n ),\n _react2.default.createElement(\n 'ul',\n { className: 'mx_RoomSettings_userLevels' },\n mutedUsers\n )\n );\n }\n }\n\n var banned = this.props.room.getMembersWithMembership(\"ban\");\n var bannedUsersSection = void 0;\n if (banned.length) {\n var canBanUsers = currentUserLevel >= banLevel;\n bannedUsersSection = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Banned users')\n ),\n _react2.default.createElement(\n 'ul',\n { className: 'mx_RoomSettings_banned' },\n banned.map(function (member) {\n var banEvent = member.events.member.getContent();\n var sender = self.props.room.getMember(member.events.member.getSender());\n var bannedBy = member.events.member.getSender(); // start by falling back to mxid\n if (sender) bannedBy = sender.name;\n return _react2.default.createElement(BannedUser, { key: member.userId, canUnban: canBanUsers, member: member, reason: banEvent.reason, by: bannedBy });\n })\n )\n );\n }\n\n var unfederatableSection = void 0;\n if (this._yankValueFromEvent(\"m.room.create\", \"m.federate\", true) === false) {\n unfederatableSection = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_powerLevel' },\n (0, _languageHandler._t)('This room is not accessible by remote Matrix servers'),\n '.'\n );\n }\n\n var leaveButton = null;\n var myMemberShip = this.props.room.getMyMembership();\n if (myMemberShip) {\n if (myMemberShip === \"join\") {\n leaveButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomSettings_leaveButton', onClick: this.onLeaveClick },\n (0, _languageHandler._t)('Leave room')\n );\n } else if (myMemberShip === \"leave\") {\n leaveButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomSettings_leaveButton', onClick: this.onForgetClick },\n (0, _languageHandler._t)('Forget room')\n );\n }\n }\n\n // TODO: support editing custom events_levels\n // TODO: support editing custom user_levels\n\n var tags = [{ name: \"m.favourite\", label: (0, _languageHandler._t)('Favourite'), ref: \"tag_favourite\" }, { name: \"m.lowpriority\", label: (0, _languageHandler._t)('Low priority'), ref: \"tag_lowpriority\" }];\n\n (0, _keys2.default)(this.state.tags).sort().forEach(function (tagName) {\n if (tagName !== 'm.favourite' && tagName !== 'm.lowpriority') {\n tags.push({ name: tagName, label: tagName });\n }\n });\n\n var tagsSection = null;\n if (canSetTag || self.state.tags) {\n tagsSection = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_tags' },\n (0, _languageHandler._t)(\"Tagged as: \"),\n canSetTag ? tags.map(function (tag, i) {\n return _react2.default.createElement(\n 'label',\n { key: i },\n _react2.default.createElement('input', { type: 'checkbox',\n ref: tag.ref,\n checked: tag.name in self.state.tags,\n onChange: self._onTagChange.bind(self, tag.name) }),\n tag.label\n );\n }) : self.state.tags && self.state.tags.join ? self.state.tags.join(\", \") : \"\"\n );\n }\n\n // If there is no history_visibility, it is assumed to be 'shared'.\n // http://matrix.org/docs/spec/r0.0.0/client_server.html#id31\n var historyVisibility = this.state.history_visibility || \"shared\";\n\n var addressWarning = void 0;\n var aliasEvents = this.props.room.currentState.getStateEvents('m.room.aliases') || [];\n var aliasCount = 0;\n aliasEvents.forEach(function (event) {\n var aliases = event.getContent().aliases || [];\n aliasCount += aliases.length;\n });\n\n if (this.state.join_rule === \"public\" && aliasCount == 0) {\n addressWarning = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_warning' },\n (0, _languageHandler._t)('To link to a room it must have <a>an address</a>.', {}, { 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: '#addresses' },\n sub\n );\n } })\n );\n }\n\n var inviteGuestWarning = void 0;\n if (this.state.join_rule !== \"public\" && this.state.guest_access === \"forbidden\") {\n inviteGuestWarning = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_warning' },\n (0, _languageHandler._t)('Guests cannot join this room even if explicitly invited.'),\n ' ',\n _react2.default.createElement(\n 'a',\n { href: '#', onClick: function onClick(e) {\n _this6.setState({ join_rule: \"invite\", guest_access: \"can_join\" });\n e.preventDefault();\n } },\n (0, _languageHandler._t)('Click here to fix')\n ),\n '.'\n );\n }\n\n var powerSelectors = (0, _keys2.default)(powerLevelDescriptors).map(function (key, index) {\n var descriptor = powerLevelDescriptors[key];\n\n var keyPath = key.split('.');\n var currentObj = powerLevels;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(keyPath), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var prop = _step3.value;\n\n if (currentObj === undefined) {\n break;\n }\n currentObj = currentObj[prop];\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n var value = parseIntWithDefault(currentObj, descriptor.defaultValue);\n return _react2.default.createElement(\n 'div',\n { key: index, className: 'mx_RoomSettings_powerLevel' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_RoomSettings_powerLevelKey' },\n descriptor.desc\n ),\n _react2.default.createElement(PowerSelector, {\n value: value,\n usersDefault: defaultUserLevel,\n controlled: false,\n disabled: !canChangeLevels || currentUserLevel < value,\n powerLevelKey: key // Will be sent as the second parameter to `onChange`\n , onChange: _this6.onPowerLevelsChanged\n })\n );\n });\n\n var eventPowerSelectors = (0, _keys2.default)(eventsLevels).map(function (eventType, i) {\n var label = plEventsToLabels[eventType];\n if (label) {\n label = (0, _languageHandler._t)(label);\n } else {\n label = (0, _languageHandler._t)(\"To send events of type <eventType/>, you must be a\", {}, { 'eventType': _react2.default.createElement(\n 'code',\n null,\n eventType\n ) });\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_powerLevel', key: eventType },\n _react2.default.createElement(\n 'span',\n { className: 'mx_RoomSettings_powerLevelKey' },\n label,\n ' '\n ),\n _react2.default.createElement(PowerSelector, {\n value: eventsLevels[eventType],\n usersDefault: defaultUserLevel,\n controlled: false,\n disabled: !canChangeLevels || currentUserLevel < eventsLevels[eventType],\n powerLevelKey: \"event_levels_\" + eventType,\n onChange: self.onPowerLevelsChanged\n })\n );\n });\n\n var roomUpgradeButton = null;\n if (this.props.room.shouldUpgradeToVersion() && this.props.room.userMayUpgradeRoom(myUserId)) {\n roomUpgradeButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomSettings_upgradeButton danger', onClick: this._onRoomUpgradeClick },\n (0, _languageHandler._t)(\"Upgrade room to version %(ver)s\", { ver: this.props.room.shouldUpgradeToVersion() })\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings' },\n leaveButton,\n tagsSection,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_toggles' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_settings' },\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Who can access this room?')\n ),\n inviteGuestWarning,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'roomVis', value: 'invite_only',\n disabled: !this.mayChangeRoomAccess(),\n onChange: this._onRoomAccessRadioToggle,\n checked: this.state.join_rule !== \"public\" }),\n (0, _languageHandler._t)('Only people who have been invited')\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'roomVis', value: 'public_no_guests',\n disabled: !this.mayChangeRoomAccess(),\n onChange: this._onRoomAccessRadioToggle,\n checked: this.state.join_rule === \"public\" && this.state.guest_access !== \"can_join\" }),\n (0, _languageHandler._t)('Anyone who knows the room\\'s link, apart from guests')\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'roomVis', value: 'public_with_guests',\n disabled: !this.mayChangeRoomAccess(),\n onChange: this._onRoomAccessRadioToggle,\n checked: this.state.join_rule === \"public\" && this.state.guest_access === \"can_join\" }),\n (0, _languageHandler._t)('Anyone who knows the room\\'s link, including guests')\n ),\n addressWarning,\n _react2.default.createElement('br', null),\n this._renderEncryptionSection(),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'checkbox', disabled: !roomState.mayClientSendStateEvent(\"m.room.aliases\", cli),\n onChange: this._onToggle.bind(this, \"isRoomPublished\", true, false),\n checked: this.state.isRoomPublished }),\n (0, _languageHandler._t)(\"Publish this room to the public in %(domain)s's room directory?\", { domain: _MatrixClientPeg2.default.get().getDomain() })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_settings' },\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Who can read history?')\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'historyVis', value: 'world_readable',\n disabled: !roomState.mayClientSendStateEvent(\"m.room.history_visibility\", cli),\n checked: historyVisibility === \"world_readable\",\n onChange: this._onHistoryRadioToggle }),\n (0, _languageHandler._t)(\"Anyone\")\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'historyVis', value: 'shared',\n disabled: !roomState.mayClientSendStateEvent(\"m.room.history_visibility\", cli),\n checked: historyVisibility === \"shared\",\n onChange: this._onHistoryRadioToggle }),\n (0, _languageHandler._t)('Members only (since the point in time of selecting this option)')\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'historyVis', value: 'invited',\n disabled: !roomState.mayClientSendStateEvent(\"m.room.history_visibility\", cli),\n checked: historyVisibility === \"invited\",\n onChange: this._onHistoryRadioToggle }),\n (0, _languageHandler._t)('Members only (since they were invited)')\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'historyVis', value: 'joined',\n disabled: !roomState.mayClientSendStateEvent(\"m.room.history_visibility\", cli),\n checked: historyVisibility === \"joined\",\n onChange: this._onHistoryRadioToggle }),\n (0, _languageHandler._t)('Members only (since they joined)')\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Room Colour')\n ),\n _react2.default.createElement(ColorSettings, { ref: 'color_settings', room: this.props.room })\n ),\n _react2.default.createElement('a', { id: 'addresses' }),\n _react2.default.createElement(AliasSettings, { ref: 'alias_settings',\n roomId: this.props.room.roomId,\n canSetCanonicalAlias: roomState.mayClientSendStateEvent(\"m.room.canonical_alias\", cli),\n canSetAliases: true\n /* Originally, we arbitrarily restricted creating aliases to room admins: roomState.mayClientSendStateEvent(\"m.room.aliases\", cli) */\n ,\n canonicalAliasEvent: this.props.room.currentState.getStateEvents('m.room.canonical_alias', ''),\n aliasEvents: this.props.room.currentState.getStateEvents('m.room.aliases') }),\n relatedGroupsSection,\n _react2.default.createElement(UrlPreviewSettings, { ref: 'url_preview_settings', room: this.props.room }),\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Permissions')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_powerLevels mx_RoomSettings_settings' },\n powerSelectors,\n eventPowerSelectors,\n unfederatableSection\n ),\n privilegedUsersSection,\n mutedUsersSection,\n bannedUsersSection,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Advanced')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_settings' },\n (0, _languageHandler._t)('Internal room ID: '),\n ' ',\n _react2.default.createElement(\n 'code',\n null,\n this.props.room.roomId\n ),\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)('Room version number: '),\n ' ',\n _react2.default.createElement(\n 'code',\n null,\n this.props.room.getVersion()\n ),\n _react2.default.createElement('br', null),\n roomUpgradeButton\n )\n );\n }\n});\n//# sourceMappingURL=RoomSettings.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MIN_TOOLTIP_HEIGHT = 25;\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomTooltip',\n\n propTypes: {\n // Class applied to the element used to position the tooltip\n className: _react2.default.PropTypes.string.isRequired,\n // Class applied to the tooltip itself\n tooltipClassName: _react2.default.PropTypes.string,\n // The tooltip is derived from either the room name or a label\n room: _react2.default.PropTypes.object,\n label: _react2.default.PropTypes.node\n },\n\n // Create a wrapper for the tooltip outside the parent and attach it to the body element\n componentDidMount: function componentDidMount() {\n this.tooltipContainer = document.createElement(\"div\");\n this.tooltipContainer.className = \"mx_RoomTileTooltip_wrapper\";\n document.body.appendChild(this.tooltipContainer);\n window.addEventListener('scroll', this._renderTooltip, true);\n\n this.parent = _reactDom2.default.findDOMNode(this).parentNode;\n\n this._renderTooltip();\n },\n\n componentDidUpdate: function componentDidUpdate() {\n this._renderTooltip();\n },\n\n // Remove the wrapper element, as the tooltip has finished using it\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.dispatch({\n action: 'view_tooltip',\n tooltip: null,\n parent: null\n });\n\n _reactDom2.default.unmountComponentAtNode(this.tooltipContainer);\n document.body.removeChild(this.tooltipContainer);\n window.removeEventListener('scroll', this._renderTooltip, true);\n },\n\n _updatePosition: function _updatePosition(style) {\n var parentBox = this.parent.getBoundingClientRect();\n var offset = 0;\n if (parentBox.height > MIN_TOOLTIP_HEIGHT) {\n offset = Math.floor((parentBox.height - MIN_TOOLTIP_HEIGHT) / 2);\n }\n style.top = parentBox.top - 2 + window.pageYOffset + offset;\n style.left = 6 + parentBox.right + window.pageXOffset;\n return style;\n },\n\n\n _renderTooltip: function _renderTooltip() {\n // Add the parent's position to the tooltips, so it's correctly\n // positioned, also taking into account any window zoom\n // NOTE: The additional 6 pixels for the left position, is to take account of the\n // tooltips chevron\n var parent = _reactDom2.default.findDOMNode(this).parentNode;\n var style = {};\n style = this._updatePosition(style);\n style.display = \"block\";\n\n var tooltipClasses = (0, _classnames2.default)(\"mx_RoomTooltip\", this.props.tooltipClassName);\n\n var tooltip = _react2.default.createElement(\n 'div',\n { className: tooltipClasses, style: style },\n _react2.default.createElement('div', { className: 'mx_RoomTooltip_chevron' }),\n this.props.label\n );\n\n // Render the tooltip manually, as we wish it not to be rendered within the parent\n this.tooltip = _reactDom2.default.render(tooltip, this.tooltipContainer);\n\n // Tell the roomlist about us so it can manipulate us if it wishes\n _dispatcher2.default.dispatch({\n action: 'view_tooltip',\n tooltip: this.tooltip,\n parent: parent\n });\n },\n\n render: function render() {\n // Render a placeholder\n return _react2.default.createElement('div', { className: this.props.className });\n }\n});\n//# sourceMappingURL=RoomTooltip.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar sdk = require('../../../index');\n\n\nmodule.exports = React.createClass({\n displayName: 'RoomTopicEditor',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n topic: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n var room = this.props.room;\n var topic = room.currentState.getStateEvents('m.room.topic', '');\n this.setState({\n topic: topic ? topic.getContent().topic : ''\n });\n },\n\n getTopic: function getTopic() {\n return this.state.topic;\n },\n\n _onValueChanged: function _onValueChanged(value) {\n this.setState({\n topic: value\n });\n },\n\n render: function render() {\n var EditableText = sdk.getComponent(\"elements.EditableText\");\n\n return React.createElement(EditableText, {\n className: 'mx_RoomHeader_topic mx_RoomHeader_editable',\n placeholderClassName: 'mx_RoomHeader_placeholder',\n placeholder: (0, _languageHandler._t)(\"Add a topic\"),\n blurToCancel: false,\n initialValue: this.state.topic,\n onValueChanged: this._onValueChanged,\n dir: 'auto' });\n }\n});\n//# sourceMappingURL=RoomTopicEditor.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomUpgradeWarningBar',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired\n },\n\n onUpgradeClick: function onUpgradeClick() {\n var RoomUpgradeDialog = _index2.default.getComponent('dialogs.RoomUpgradeDialog');\n _Modal2.default.createTrackedDialog('Upgrade Room Version', '', RoomUpgradeDialog, { room: this.props.room });\n },\n\n render: function render() {\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomUpgradeWarningBar' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomUpgradeWarningBar_header' },\n (0, _languageHandler._t)(\"There is a known vulnerability affecting this room.\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomUpgradeWarningBar_body' },\n (0, _languageHandler._t)(\"This room version is vulnerable to malicious modification of room state.\")\n ),\n _react2.default.createElement(\n 'p',\n { className: 'mx_RoomUpgradeWarningBar_upgradelink' },\n _react2.default.createElement(\n AccessibleButton,\n { onClick: this.onUpgradeClick },\n (0, _languageHandler._t)(\"Click here to upgrade to the latest room version and ensure room integrity is protected.\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomUpgradeWarningBar_small' },\n (0, _languageHandler._t)(\"Only room administrators will see this warning\")\n )\n );\n }\n}); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=RoomUpgradeWarningBar.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar React = require('react');\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar sdk = require('../../../index');\nvar classNames = require('classnames');\nvar AccessibleButton = require('../../../components/views/elements/AccessibleButton');\n\n\nmodule.exports = React.createClass({\n displayName: 'SearchBar',\n\n getInitialState: function getInitialState() {\n return {\n scope: 'Room'\n };\n },\n\n onThisRoomClick: function onThisRoomClick() {\n this.setState({ scope: 'Room' });\n },\n\n onAllRoomsClick: function onAllRoomsClick() {\n this.setState({ scope: 'All' });\n },\n\n onSearchChange: function onSearchChange(e) {\n if (e.keyCode === 13) {\n // on enter...\n this.onSearch();\n }\n if (e.keyCode === 27) {\n // escape...\n this.props.onCancelClick();\n }\n },\n\n onSearch: function onSearch() {\n this.props.onSearch(this.refs.search_term.value, this.state.scope);\n },\n\n render: function render() {\n var searchButtonClasses = classNames({ mx_SearchBar_searchButton: true, mx_SearchBar_searching: this.props.searchInProgress });\n var thisRoomClasses = classNames({ mx_SearchBar_button: true, mx_SearchBar_unselected: this.state.scope !== 'Room' });\n var allRoomsClasses = classNames({ mx_SearchBar_button: true, mx_SearchBar_unselected: this.state.scope !== 'All' });\n\n return React.createElement(\n 'div',\n { className: 'mx_SearchBar' },\n React.createElement('input', { ref: 'search_term', className: 'mx_SearchBar_input', type: 'text', autoFocus: true, placeholder: (0, _languageHandler._t)(\"Search…\"), onKeyDown: this.onSearchChange }),\n React.createElement(\n AccessibleButton,\n { className: searchButtonClasses, onClick: this.onSearch },\n React.createElement('img', { src: 'img/search-button.svg', width: '37', height: '37', alt: (0, _languageHandler._t)(\"Search\") })\n ),\n React.createElement(\n AccessibleButton,\n { className: thisRoomClasses, onClick: this.onThisRoomClick },\n (0, _languageHandler._t)(\"This Room\")\n ),\n React.createElement(\n AccessibleButton,\n { className: allRoomsClasses, onClick: this.onAllRoomsClick },\n (0, _languageHandler._t)(\"All Rooms\")\n ),\n React.createElement(\n AccessibleButton,\n { className: 'mx_SearchBar_cancel', onClick: this.props.onCancelClick },\n React.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18' })\n )\n );\n }\n});\n//# sourceMappingURL=SearchBar.js.map","/*\nCopyright 2015 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar sdk = require('../../../index');\n\nmodule.exports = React.createClass({\n displayName: 'SearchResult',\n\n propTypes: {\n // a matrix-js-sdk SearchResult containing the details of this result\n searchResult: _propTypes2.default.object.isRequired,\n\n // a list of strings to be highlighted in the results\n searchHighlights: _propTypes2.default.array,\n\n // href for the highlights in this result\n resultLink: _propTypes2.default.string,\n\n onWidgetLoad: _propTypes2.default.func\n },\n\n render: function render() {\n var DateSeparator = sdk.getComponent('messages.DateSeparator');\n var EventTile = sdk.getComponent('rooms.EventTile');\n var result = this.props.searchResult;\n var mxEv = result.context.getEvent();\n var eventId = mxEv.getId();\n\n var ts1 = mxEv.getTs();\n var ret = [React.createElement(DateSeparator, { key: ts1 + \"-search\", ts: ts1 })];\n\n var timeline = result.context.getTimeline();\n for (var j = 0; j < timeline.length; j++) {\n var ev = timeline[j];\n var highlights;\n var contextual = j != result.context.getOurEventIndex();\n if (!contextual) {\n highlights = this.props.searchHighlights;\n }\n if (EventTile.haveTileForEvent(ev)) {\n ret.push(React.createElement(EventTile, { key: eventId + \"+\" + j, mxEvent: ev, contextual: contextual, highlights: highlights,\n highlightLink: this.props.resultLink,\n onWidgetLoad: this.props.onWidgetLoad }));\n }\n }\n return React.createElement(\n 'li',\n { 'data-scroll-tokens': eventId + \"+\" + j },\n ret\n );\n }\n});\n//# sourceMappingURL=SearchResultTile.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar React = require('react');\n\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\");\nvar Modal = require(\"../../../Modal\");\nvar sdk = require(\"../../../index\");\n\n\n// A list capable of displaying entities which conform to the SearchableEntity\n// interface which is an object containing getJsx(): Jsx and matches(query: string): boolean\nvar SearchableEntityList = React.createClass({\n displayName: 'SearchableEntityList',\n\n propTypes: {\n emptyQueryShowsAll: _propTypes2.default.bool,\n showInputBox: _propTypes2.default.bool,\n onQueryChanged: _propTypes2.default.func, // fn(inputText)\n onSubmit: _propTypes2.default.func, // fn(inputText)\n entities: _propTypes2.default.array,\n truncateAt: _propTypes2.default.number\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n showInputBox: true,\n entities: [],\n emptyQueryShowsAll: false,\n onSubmit: function onSubmit() {},\n onQueryChanged: function onQueryChanged(input) {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n query: \"\",\n focused: false,\n truncateAt: this.props.truncateAt,\n results: this.getSearchResults(\"\", this.props.entities)\n };\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n // recalculate the search results in case we got new entities\n this.setState({\n results: this.getSearchResults(this.state.query, newProps.entities)\n });\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // pretend the query box was blanked out else filters could still be\n // applied to other components which rely on onQueryChanged.\n this.props.onQueryChanged(\"\");\n },\n\n /**\n * Public-facing method to set the input query text to the given input.\n * @param {string} input\n */\n setQuery: function setQuery(input) {\n this.setState({\n query: input,\n results: this.getSearchResults(input, this.props.entities)\n });\n },\n\n onQueryChanged: function onQueryChanged(ev) {\n var _this = this;\n\n var q = ev.target.value;\n this.setState({\n query: q,\n // reset truncation if they back out the entire text\n truncateAt: q.length === 0 ? this.props.truncateAt : this.state.truncateAt,\n results: this.getSearchResults(q, this.props.entities)\n }, function () {\n // invoke the callback AFTER we've flushed the new state. We need to\n // do this because onQueryChanged can result in new props being passed\n // to this component, which will then try to recalculate the search\n // list. If we do this without flushing, we'll recalc with the last\n // search term and not the current one!\n _this.props.onQueryChanged(q);\n });\n },\n\n onQuerySubmit: function onQuerySubmit(ev) {\n ev.preventDefault();\n this.props.onSubmit(this.state.query);\n },\n\n getSearchResults: function getSearchResults(query, entities) {\n if (!query || query.length === 0) {\n return this.props.emptyQueryShowsAll ? entities : [];\n }\n return entities.filter(function (e) {\n return e.matches(query);\n });\n },\n\n _showAll: function _showAll() {\n this.setState({\n truncateAt: -1\n });\n },\n\n _createOverflowEntity: function _createOverflowEntity(overflowCount, totalCount) {\n var EntityTile = sdk.getComponent(\"rooms.EntityTile\");\n var BaseAvatar = sdk.getComponent(\"avatars.BaseAvatar\");\n var text = (0, _languageHandler._t)(\"and %(count)s others...\", { count: overflowCount });\n return React.createElement(EntityTile, { className: 'mx_EntityTile_ellipsis', avatarJsx: React.createElement(BaseAvatar, { url: 'img/ellipsis.svg', name: '...', width: 36, height: 36 }), name: text, presenceState: 'online', suppressOnHover: true,\n onClick: this._showAll });\n },\n\n render: function render() {\n var _this2 = this;\n\n var inputBox = void 0;\n\n if (this.props.showInputBox) {\n inputBox = React.createElement(\n 'form',\n { onSubmit: this.onQuerySubmit, autoComplete: 'off' },\n React.createElement('input', { className: 'mx_SearchableEntityList_query', id: 'mx_SearchableEntityList_query', type: 'text',\n onChange: this.onQueryChanged, value: this.state.query,\n onFocus: function onFocus() {\n _this2.setState({ focused: true });\n },\n onBlur: function onBlur() {\n _this2.setState({ focused: false });\n },\n placeholder: (0, _languageHandler._t)(\"Search\") })\n );\n }\n\n var list = void 0;\n if (this.state.results.length > 1 || this.state.focused) {\n if (this.props.truncateAt) {\n // caller wants list truncated\n var TruncatedList = sdk.getComponent(\"elements.TruncatedList\");\n list = React.createElement(\n TruncatedList,\n { className: 'mx_SearchableEntityList_list',\n truncateAt: this.state.truncateAt // use state truncation as it may be expanded\n , createOverflowElement: this._createOverflowEntity },\n this.state.results.map(function (entity) {\n return entity.getJsx();\n })\n );\n } else {\n list = React.createElement(\n 'div',\n { className: 'mx_SearchableEntityList_list' },\n this.state.results.map(function (entity) {\n return entity.getJsx();\n })\n );\n }\n var GeminiScrollbarWrapper = sdk.getComponent(\"elements.GeminiScrollbarWrapper\");\n list = React.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true,\n className: 'mx_SearchableEntityList_listWrapper' },\n list\n );\n }\n\n return React.createElement(\n 'div',\n { className: \"mx_SearchableEntityList \" + (list ? \"mx_SearchableEntityList_expanded\" : \"\") },\n inputBox,\n list,\n list ? React.createElement(\n 'div',\n { className: 'mx_SearchableEntityList_hrWrapper' },\n React.createElement('hr', null)\n ) : ''\n );\n }\n});\n\nmodule.exports = SearchableEntityList;\n//# sourceMappingURL=SearchableEntityList.js.map","/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar sdk = require('../../../index');\n\nmodule.exports = React.createClass({\n displayName: 'TopUnreadMessagesBar',\n\n propTypes: {\n onScrollUpClick: _propTypes2.default.func,\n onCloseClick: _propTypes2.default.func\n },\n\n render: function render() {\n return React.createElement(\n 'div',\n { className: 'mx_TopUnreadMessagesBar' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_TopUnreadMessagesBar_scrollUp',\n onClick: this.props.onScrollUpClick },\n React.createElement('img', { src: 'img/scrollto.svg', width: '24', height: '24'\n // No point on setting up non empty alt on this image\n // as it only complements the text which follows it.\n , alt: '',\n title: (0, _languageHandler._t)('Scroll to unread messages')\n // In order not to use this title attribute for accessible name\n // calculation of the parent button set the role presentation\n , role: 'presentation' }),\n (0, _languageHandler._t)(\"Jump to first unread message.\")\n ),\n React.createElement(_AccessibleButton2.default, { element: 'img', className: 'mx_TopUnreadMessagesBar_close mx_filterFlipColor',\n src: 'img/cancel.svg', width: '18', height: '18',\n alt: (0, _languageHandler._t)(\"Close\"), title: (0, _languageHandler._t)(\"Close\"),\n onClick: this.props.onCloseClick })\n );\n }\n});\n//# sourceMappingURL=TopUnreadMessagesBar.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nvar Avatar = require(\"../../../Avatar\");\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar sdk = require('../../../index');\nvar dis = require('../../../dispatcher');\nvar Modal = require(\"../../../Modal\");\n\nmodule.exports = React.createClass({\n displayName: 'UserTile',\n\n propTypes: {\n user: _propTypes2.default.any.isRequired // User\n },\n\n render: function render() {\n var EntityTile = sdk.getComponent(\"rooms.EntityTile\");\n var user = this.props.user;\n var name = user.displayName || user.userId;\n var active = -1;\n\n // FIXME: make presence data update whenever User.presence changes...\n active = user.lastActiveAgo ? Date.now() - (user.lastPresenceTs - user.lastActiveAgo) : -1;\n\n var BaseAvatar = sdk.getComponent('avatars.BaseAvatar');\n var avatarJsx = React.createElement(BaseAvatar, { width: 36, height: 36, name: name, idName: user.userId,\n url: Avatar.avatarUrlForUser(user, 36, 36, \"crop\") });\n\n return React.createElement(EntityTile, (0, _extends3.default)({}, this.props, { presenceState: user.presence, presenceActiveAgo: active,\n presenceCurrentlyActive: user.currentlyActive,\n name: name, title: user.userId, avatarJsx: avatarJsx }));\n }\n});\n//# sourceMappingURL=UserTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _AddThreepid = require('../../../AddThreepid');\n\nvar _AddThreepid2 = _interopRequireDefault(_AddThreepid);\n\nvar _withMatrixClient = require('../../../wrappers/withMatrixClient');\n\nvar _withMatrixClient2 = _interopRequireDefault(_withMatrixClient);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _withMatrixClient2.default)(_react2.default.createClass({\n displayName: 'AddPhoneNumber',\n\n propTypes: {\n matrixClient: _propTypes2.default.object.isRequired,\n onThreepidAdded: _propTypes2.default.func\n },\n\n getInitialState: function getInitialState() {\n return {\n busy: false,\n phoneCountry: null,\n phoneNumber: \"\",\n msisdn_add_pending: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._addThreepid = null;\n this._addMsisdnInput = null;\n this._unmounted = false;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n _onPhoneCountryChange: function _onPhoneCountryChange(phoneCountry) {\n this.setState({ phoneCountry: phoneCountry.iso2 });\n },\n\n _onPhoneNumberChange: function _onPhoneNumberChange(ev) {\n this.setState({ phoneNumber: ev.target.value });\n },\n\n _onAddMsisdnEditFinished: function _onAddMsisdnEditFinished(value, shouldSubmit) {\n if (!shouldSubmit) return;\n this._addMsisdn();\n },\n\n _onAddMsisdnSubmit: function _onAddMsisdnSubmit(ev) {\n ev.preventDefault();\n this._addMsisdn();\n },\n\n _collectAddMsisdnInput: function _collectAddMsisdnInput(e) {\n this._addMsisdnInput = e;\n },\n\n _addMsisdn: function _addMsisdn() {\n var _this = this;\n\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n this._addThreepid = new _AddThreepid2.default();\n // we always bind phone numbers when registering, so let's do the\n // same here.\n this._addThreepid.addMsisdn(this.state.phoneCountry, this.state.phoneNumber, true).then(function (resp) {\n _this._promptForMsisdnVerificationCode(resp.msisdn);\n }).catch(function (err) {\n console.error(\"Unable to add phone number: \" + err);\n var msg = err.message;\n _Modal2.default.createTrackedDialog('Add Phone Number Error', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: msg\n });\n }).finally(function () {\n if (_this._unmounted) return;\n _this.setState({ msisdn_add_pending: false });\n }).done();\n this._addMsisdnInput.blur();\n this.setState({ msisdn_add_pending: true });\n },\n\n _promptForMsisdnVerificationCode: function _promptForMsisdnVerificationCode(msisdn, err) {\n var _this2 = this;\n\n if (this._unmounted) return;\n var TextInputDialog = _index2.default.getComponent(\"dialogs.TextInputDialog\");\n var msgElements = [_react2.default.createElement(\n 'div',\n { key: '_static' },\n (0, _languageHandler._t)(\"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains\", { msisdn: msisdn })\n )];\n if (err) {\n var msg = err.error;\n if (err.errcode == 'M_THREEPID_AUTH_FAILED') {\n msg = (0, _languageHandler._t)(\"Incorrect verification code\");\n }\n msgElements.push(_react2.default.createElement(\n 'div',\n { key: '_error', className: 'error' },\n msg\n ));\n }\n _Modal2.default.createTrackedDialog('Prompt for MSISDN Verification Code', '', TextInputDialog, {\n title: (0, _languageHandler._t)(\"Enter Code\"),\n description: _react2.default.createElement(\n 'div',\n null,\n msgElements\n ),\n button: (0, _languageHandler._t)(\"Submit\"),\n onFinished: function onFinished(should_verify, token) {\n if (!should_verify) {\n _this2._addThreepid = null;\n return;\n }\n if (_this2._unmounted) return;\n _this2.setState({ msisdn_add_pending: true });\n _this2._addThreepid.haveMsisdnToken(token).then(function () {\n _this2._addThreepid = null;\n _this2.setState({ phoneNumber: '' });\n if (_this2.props.onThreepidAdded) _this2.props.onThreepidAdded();\n }).catch(function (err) {\n _this2._promptForMsisdnVerificationCode(msisdn, err);\n }).finally(function () {\n if (_this2._unmounted) return;\n _this2.setState({ msisdn_add_pending: false });\n }).done();\n }\n });\n },\n\n render: function render() {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n if (this.state.msisdn_add_pending) {\n return _react2.default.createElement(Loader, null);\n } else if (this.props.matrixClient.isGuest()) {\n return _react2.default.createElement('div', null);\n }\n\n var CountryDropdown = _index2.default.getComponent('views.login.CountryDropdown');\n // XXX: This CSS relies on the CSS surrounding it in UserSettings as its in\n // a tabular format to align the submit buttons\n return _react2.default.createElement(\n 'form',\n { className: 'mx_UserSettings_profileTableRow', onSubmit: this._onAddMsisdnSubmit },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_profileLabelCell' },\n _react2.default.createElement(\n 'label',\n null,\n (0, _languageHandler._t)('Phone')\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_profileInputCell' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_phoneSection' },\n _react2.default.createElement(CountryDropdown, { onOptionChange: this._onPhoneCountryChange,\n className: 'mx_UserSettings_phoneCountry',\n value: this.state.phoneCountry,\n isSmall: true\n }),\n _react2.default.createElement('input', { type: 'text',\n ref: this._collectAddMsisdnInput,\n className: 'mx_UserSettings_phoneNumberField',\n placeholder: (0, _languageHandler._t)('Add phone number'),\n value: this.state.phoneNumber,\n onChange: this._onPhoneNumberChange\n })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_threepidButton mx_filterFlipColor' },\n _react2.default.createElement('input', { type: 'image', value: (0, _languageHandler._t)(\"Add\"), src: 'img/plus.svg', width: '14', height: '14' })\n )\n );\n }\n})); /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=AddPhoneNumber.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require('react');\n\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\");\nvar sdk = require('../../../index');\n\n\nmodule.exports = React.createClass({\n displayName: 'ChangeAvatar',\n propTypes: {\n initialAvatarUrl: _propTypes2.default.string,\n room: _propTypes2.default.object,\n // if false, you need to call changeAvatar.onFileSelected yourself.\n showUploadSection: _propTypes2.default.bool,\n width: _propTypes2.default.number,\n height: _propTypes2.default.number,\n className: _propTypes2.default.string\n },\n\n Phases: {\n Display: \"display\",\n Uploading: \"uploading\",\n Error: \"error\"\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n showUploadSection: true,\n className: \"\",\n width: 80,\n height: 80\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n avatarUrl: this.props.initialAvatarUrl,\n phase: this.Phases.Display\n };\n },\n\n componentWillMount: function componentWillMount() {\n MatrixClientPeg.get().on(\"RoomState.events\", this.onRoomStateEvents);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n if (this.avatarSet) {\n // don't clobber what the user has just set\n return;\n }\n this.setState({\n avatarUrl: newProps.initialAvatarUrl\n });\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (MatrixClientPeg.get()) {\n MatrixClientPeg.get().removeListener(\"RoomState.events\", this.onRoomStateEvents);\n }\n },\n\n onRoomStateEvents: function onRoomStateEvents(ev) {\n if (!this.props.room) {\n return;\n }\n\n if (ev.getRoomId() !== this.props.room.roomId || ev.getType() !== 'm.room.avatar' || ev.getSender() !== MatrixClientPeg.get().getUserId()) {\n return;\n }\n\n if (!ev.getContent().url) {\n this.avatarSet = false;\n this.setState({}); // force update\n }\n },\n\n setAvatarFromFile: function setAvatarFromFile(file) {\n var newUrl = null;\n\n this.setState({\n phase: this.Phases.Uploading\n });\n var self = this;\n var httpPromise = MatrixClientPeg.get().uploadContent(file).then(function (url) {\n newUrl = url;\n if (self.props.room) {\n return MatrixClientPeg.get().sendStateEvent(self.props.room.roomId, 'm.room.avatar', { url: url }, '');\n } else {\n return MatrixClientPeg.get().setAvatarUrl(url);\n }\n });\n\n httpPromise.done(function () {\n self.setState({\n phase: self.Phases.Display,\n avatarUrl: MatrixClientPeg.get().mxcUrlToHttp(newUrl)\n });\n }, function (error) {\n self.setState({\n phase: self.Phases.Error\n });\n self.onError(error);\n });\n\n return httpPromise;\n },\n\n onFileSelected: function onFileSelected(ev) {\n this.avatarSet = true;\n return this.setAvatarFromFile(ev.target.files[0]);\n },\n\n onError: function onError(error) {\n this.setState({\n errorText: (0, _languageHandler._t)(\"Failed to upload profile picture!\")\n });\n },\n\n render: function render() {\n var avatarImg = void 0;\n // Having just set an avatar we just display that since it will take a little\n // time to propagate through to the RoomAvatar.\n if (this.props.room && !this.avatarSet) {\n var RoomAvatar = sdk.getComponent('avatars.RoomAvatar');\n avatarImg = React.createElement(RoomAvatar, { room: this.props.room, width: this.props.width, height: this.props.height, resizeMethod: 'crop' });\n } else {\n var BaseAvatar = sdk.getComponent(\"avatars.BaseAvatar\");\n // XXX: FIXME: once we track in the JS what our own displayname is(!) then use it here rather than ?\n avatarImg = React.createElement(BaseAvatar, { width: this.props.width, height: this.props.height, resizeMethod: 'crop',\n name: '?', idName: MatrixClientPeg.get().getUserIdLocalpart(), url: this.state.avatarUrl });\n }\n\n var uploadSection = void 0;\n if (this.props.showUploadSection) {\n uploadSection = React.createElement(\n 'div',\n { className: this.props.className },\n (0, _languageHandler._t)(\"Upload new:\"),\n React.createElement('input', { type: 'file', accept: 'image/*', onChange: this.onFileSelected }),\n this.state.errorText\n );\n }\n\n switch (this.state.phase) {\n case this.Phases.Display:\n case this.Phases.Error:\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { className: this.props.className },\n avatarImg\n ),\n uploadSection\n );\n case this.Phases.Uploading:\n var Loader = sdk.getComponent(\"elements.Spinner\");\n return React.createElement(Loader, null);\n }\n }\n});\n//# sourceMappingURL=ChangeAvatar.js.map","'use strict';\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'ChangeDisplayName',\n\n _getDisplayName: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var cli, res;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n cli = _MatrixClientPeg2.default.get();\n _context.prev = 1;\n _context.next = 4;\n return (0, _bluebird.resolve)(cli.getProfileInfo(cli.getUserId()));\n\n case 4:\n res = _context.sent;\n return _context.abrupt('return', res.displayname);\n\n case 8:\n _context.prev = 8;\n _context.t0 = _context['catch'](1);\n throw new Error(\"Failed to fetch display name\");\n\n case 11:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[1, 8]]);\n }));\n\n function _getDisplayName() {\n return _ref.apply(this, arguments);\n }\n\n return _getDisplayName;\n }(),\n\n _changeDisplayName: function _changeDisplayName(newDisplayname) {\n var cli = _MatrixClientPeg2.default.get();\n return cli.setDisplayName(newDisplayname).catch(function (e) {\n throw new Error(\"Failed to set display name\", e);\n });\n },\n\n render: function render() {\n var EditableTextContainer = _index2.default.getComponent('elements.EditableTextContainer');\n return _react2.default.createElement(EditableTextContainer, {\n getInitialValue: this._getDisplayName,\n placeholder: (0, _languageHandler._t)(\"No display name\"),\n blurToSubmit: true,\n onSubmit: this._changeDisplayName });\n }\n});\n//# sourceMappingURL=ChangeDisplayName.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SessionStore = require('../../../stores/SessionStore');\n\nvar _SessionStore2 = _interopRequireDefault(_SessionStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require('react');\n\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\");\nvar Modal = require(\"../../../Modal\");\nvar sdk = require(\"../../../index\");\n\nmodule.exports = React.createClass({\n displayName: 'ChangePassword',\n propTypes: {\n onFinished: _propTypes2.default.func,\n onError: _propTypes2.default.func,\n onCheckPassword: _propTypes2.default.func,\n rowClassName: _propTypes2.default.string,\n rowLabelClassName: _propTypes2.default.string,\n rowInputClassName: _propTypes2.default.string,\n buttonClassName: _propTypes2.default.string,\n confirm: _propTypes2.default.bool,\n // Whether to autoFocus the new password input\n autoFocusNewPasswordInput: _propTypes2.default.bool\n },\n\n Phases: {\n Edit: \"edit\",\n Uploading: \"uploading\",\n Error: \"error\"\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onFinished: function onFinished() {},\n onError: function onError() {},\n onCheckPassword: function onCheckPassword(oldPass, newPass, confirmPass) {\n if (newPass !== confirmPass) {\n return {\n error: (0, _languageHandler._t)(\"New passwords don't match\")\n };\n } else if (!newPass || newPass.length === 0) {\n return {\n error: (0, _languageHandler._t)(\"Passwords can't be empty\")\n };\n }\n },\n confirm: true\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n phase: this.Phases.Edit,\n cachedPassword: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._sessionStore = _SessionStore2.default;\n this._sessionStoreToken = this._sessionStore.addListener(this._setStateFromSessionStore);\n\n this._setStateFromSessionStore();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (this._sessionStoreToken) {\n this._sessionStoreToken.remove();\n }\n },\n\n _setStateFromSessionStore: function _setStateFromSessionStore() {\n this.setState({\n cachedPassword: this._sessionStore.getCachedPassword()\n });\n },\n\n changePassword: function changePassword(oldPassword, newPassword) {\n var _this = this;\n\n var cli = MatrixClientPeg.get();\n\n if (!this.props.confirm) {\n this._changePassword(cli, oldPassword, newPassword);\n return;\n }\n\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n Modal.createTrackedDialog('Change Password', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Warning!\"),\n description: React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Changing password will currently reset any end-to-end encryption keys on all devices, ' + 'making encrypted chat history unreadable, unless you first export your room keys ' + 'and re-import them afterwards. ' + 'In future this will be improved.'),\n ' (',\n React.createElement(\n 'a',\n { href: 'https://github.com/vector-im/riot-web/issues/2671' },\n 'https://github.com/vector-im/riot-web/issues/2671'\n ),\n ')'\n ),\n button: (0, _languageHandler._t)(\"Continue\"),\n extraButtons: [React.createElement(\n 'button',\n { className: 'mx_Dialog_primary',\n onClick: this._onExportE2eKeysClicked },\n (0, _languageHandler._t)('Export E2E room keys')\n )],\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n _this._changePassword(cli, oldPassword, newPassword);\n }\n }\n });\n },\n\n _changePassword: function _changePassword(cli, oldPassword, newPassword) {\n var _this2 = this;\n\n var authDict = {\n type: 'm.login.password',\n user: cli.credentials.userId,\n password: oldPassword\n };\n\n this.setState({\n phase: this.Phases.Uploading\n });\n\n cli.setPassword(authDict, newPassword).then(function () {\n // Notify SessionStore that the user's password was changed\n _dispatcher2.default.dispatch({ action: 'password_changed' });\n\n if (_this2.props.shouldAskForEmail) {\n return _this2._optionallySetEmail().then(function (confirmed) {\n _this2.props.onFinished({\n didSetEmail: confirmed\n });\n });\n } else {\n _this2.props.onFinished();\n }\n }, function (err) {\n _this2.props.onError(err);\n }).finally(function () {\n _this2.setState({\n phase: _this2.Phases.Edit\n });\n }).done();\n },\n\n _optionallySetEmail: function _optionallySetEmail() {\n var deferred = _bluebird2.default.defer();\n // Ask for an email otherwise the user has no way to reset their password\n var SetEmailDialog = sdk.getComponent(\"dialogs.SetEmailDialog\");\n Modal.createTrackedDialog('Do you want to set an email address?', '', SetEmailDialog, {\n title: (0, _languageHandler._t)('Do you want to set an email address?'),\n onFinished: function onFinished(confirmed) {\n // ignore confirmed, setting an email is optional\n deferred.resolve(confirmed);\n }\n });\n return deferred.promise;\n },\n\n _onExportE2eKeysClicked: function _onExportE2eKeysClicked() {\n Modal.createTrackedDialogAsync('Export E2E Keys', 'Change Password', function (cb) {\n require.ensure(['../../../async-components/views/dialogs/ExportE2eKeysDialog'], function () {\n cb(require('../../../async-components/views/dialogs/ExportE2eKeysDialog'));\n }, \"e2e-export\");\n }, {\n matrixClient: MatrixClientPeg.get()\n });\n },\n\n onClickChange: function onClickChange(ev) {\n ev.preventDefault();\n var oldPassword = this.state.cachedPassword || this.refs.old_input.value;\n var newPassword = this.refs.new_input.value;\n var confirmPassword = this.refs.confirm_input.value;\n var err = this.props.onCheckPassword(oldPassword, newPassword, confirmPassword);\n if (err) {\n this.props.onError(err);\n } else {\n this.changePassword(oldPassword, newPassword);\n }\n },\n\n render: function render() {\n var rowClassName = this.props.rowClassName;\n var rowLabelClassName = this.props.rowLabelClassName;\n var rowInputClassName = this.props.rowInputClassName;\n var buttonClassName = this.props.buttonClassName;\n\n var currentPassword = null;\n if (!this.state.cachedPassword) {\n currentPassword = React.createElement(\n 'div',\n { className: rowClassName },\n React.createElement(\n 'div',\n { className: rowLabelClassName },\n React.createElement(\n 'label',\n { htmlFor: 'passwordold' },\n (0, _languageHandler._t)('Current password')\n )\n ),\n React.createElement(\n 'div',\n { className: rowInputClassName },\n React.createElement('input', { id: 'passwordold', type: 'password', ref: 'old_input' })\n )\n );\n }\n\n switch (this.state.phase) {\n case this.Phases.Edit:\n var passwordLabel = this.state.cachedPassword ? (0, _languageHandler._t)('Password') : (0, _languageHandler._t)('New Password');\n return React.createElement(\n 'form',\n { className: this.props.className, onSubmit: this.onClickChange },\n currentPassword,\n React.createElement(\n 'div',\n { className: rowClassName },\n React.createElement(\n 'div',\n { className: rowLabelClassName },\n React.createElement(\n 'label',\n { htmlFor: 'password1' },\n passwordLabel\n )\n ),\n React.createElement(\n 'div',\n { className: rowInputClassName },\n React.createElement('input', { id: 'password1', type: 'password', ref: 'new_input', autoFocus: this.props.autoFocusNewPasswordInput })\n )\n ),\n React.createElement(\n 'div',\n { className: rowClassName },\n React.createElement(\n 'div',\n { className: rowLabelClassName },\n React.createElement(\n 'label',\n { htmlFor: 'password2' },\n (0, _languageHandler._t)('Confirm password')\n )\n ),\n React.createElement(\n 'div',\n { className: rowInputClassName },\n React.createElement('input', { id: 'password2', type: 'password', ref: 'confirm_input' })\n )\n ),\n React.createElement(\n _AccessibleButton2.default,\n { className: buttonClassName,\n onClick: this.onClickChange,\n element: 'button' },\n (0, _languageHandler._t)('Change Password')\n )\n );\n case this.Phases.Uploading:\n var Loader = sdk.getComponent(\"elements.Spinner\");\n return React.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n React.createElement(Loader, null)\n );\n }\n }\n});\n//# sourceMappingURL=ChangePassword.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DevicesPanel = function (_React$Component) {\n (0, _inherits3.default)(DevicesPanel, _React$Component);\n\n function DevicesPanel(props, context) {\n (0, _classCallCheck3.default)(this, DevicesPanel);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DevicesPanel.__proto__ || (0, _getPrototypeOf2.default)(DevicesPanel)).call(this, props, context));\n\n _this.state = {\n devices: undefined,\n deviceLoadError: undefined,\n\n selectedDevices: [],\n deleting: false\n };\n\n _this._unmounted = false;\n\n _this._renderDevice = _this._renderDevice.bind(_this);\n _this._onDeviceSelectionToggled = _this._onDeviceSelectionToggled.bind(_this);\n _this._onDeleteClick = _this._onDeleteClick.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(DevicesPanel, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this._loadDevices();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: '_loadDevices',\n value: function _loadDevices() {\n var _this2 = this;\n\n _MatrixClientPeg2.default.get().getDevices().done(function (resp) {\n if (_this2._unmounted) {\n return;\n }\n _this2.setState({ devices: resp.devices || [] });\n }, function (error) {\n if (_this2._unmounted) {\n return;\n }\n var errtxt = void 0;\n if (error.httpStatus == 404) {\n // 404 probably means the HS doesn't yet support the API.\n errtxt = (0, _languageHandler._t)(\"Your home server does not support device management.\");\n } else {\n console.error(\"Error loading devices:\", error);\n errtxt = (0, _languageHandler._t)(\"Unable to load device list\");\n }\n _this2.setState({ deviceLoadError: errtxt });\n });\n }\n\n /**\n * compare two devices, sorting from most-recently-seen to least-recently-seen\n * (and then, for stability, by device id)\n */\n\n }, {\n key: '_deviceCompare',\n value: function _deviceCompare(a, b) {\n // return < 0 if a comes before b, > 0 if a comes after b.\n var lastSeenDelta = (b.last_seen_ts || 0) - (a.last_seen_ts || 0);\n\n if (lastSeenDelta !== 0) {\n return lastSeenDelta;\n }\n\n var idA = a.device_id;\n var idB = b.device_id;\n return idA < idB ? -1 : idA > idB ? 1 : 0;\n }\n }, {\n key: '_onDeviceSelectionToggled',\n value: function _onDeviceSelectionToggled(device) {\n if (this._unmounted) {\n return;\n }\n\n var deviceId = device.device_id;\n this.setState(function (state, props) {\n // Make a copy of the selected devices, then add or remove the device\n var selectedDevices = state.selectedDevices.slice();\n\n var i = selectedDevices.indexOf(deviceId);\n if (i === -1) {\n selectedDevices.push(deviceId);\n } else {\n selectedDevices.splice(i, 1);\n }\n\n return { selectedDevices: selectedDevices };\n });\n }\n }, {\n key: '_onDeleteClick',\n value: function _onDeleteClick() {\n var _this3 = this;\n\n this.setState({\n deleting: true\n });\n\n this._makeDeleteRequest(null).catch(function (error) {\n if (_this3._unmounted) {\n return;\n }\n if (error.httpStatus !== 401 || !error.data || !error.data.flows) {\n // doesn't look like an interactive-auth failure\n throw error;\n }\n\n // pop up an interactive auth dialog\n var InteractiveAuthDialog = _index2.default.getComponent(\"dialogs.InteractiveAuthDialog\");\n\n _Modal2.default.createTrackedDialog('Delete Device Dialog', '', InteractiveAuthDialog, {\n title: (0, _languageHandler._t)(\"Authentication\"),\n matrixClient: _MatrixClientPeg2.default.get(),\n authData: error.data,\n makeRequest: _this3._makeDeleteRequest.bind(_this3)\n });\n }).catch(function (e) {\n console.error(\"Error deleting devices\", e);\n if (_this3._unmounted) {\n return;\n }\n }).finally(function () {\n _this3.setState({\n deleting: false\n });\n });\n }\n }, {\n key: '_makeDeleteRequest',\n value: function _makeDeleteRequest(auth) {\n var _this4 = this;\n\n return _MatrixClientPeg2.default.get().deleteMultipleDevices(this.state.selectedDevices, auth).then(function () {\n // Remove the deleted devices from `devices`, reset selection to []\n _this4.setState({\n devices: _this4.state.devices.filter(function (d) {\n return !_this4.state.selectedDevices.includes(d.device_id);\n }),\n selectedDevices: []\n });\n });\n }\n }, {\n key: '_renderDevice',\n value: function _renderDevice(device) {\n var DevicesPanelEntry = _index2.default.getComponent('settings.DevicesPanelEntry');\n return _react2.default.createElement(DevicesPanelEntry, {\n key: device.device_id,\n device: device,\n selected: this.state.selectedDevices.includes(device.device_id),\n onDeviceToggled: this._onDeviceSelectionToggled\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n var AccessibleButton = _index2.default.getComponent(\"elements.AccessibleButton\");\n\n if (this.state.deviceLoadError !== undefined) {\n var _classes = (0, _classnames2.default)(this.props.className, \"error\");\n return _react2.default.createElement(\n 'div',\n { className: _classes },\n this.state.deviceLoadError\n );\n }\n\n var devices = this.state.devices;\n if (devices === undefined) {\n // still loading\n var _classes2 = this.props.className;\n return _react2.default.createElement(Spinner, { className: _classes2 });\n }\n\n devices.sort(this._deviceCompare);\n\n var deleteButton = this.state.deleting ? _react2.default.createElement(Spinner, { w: 22, h: 22 }) : _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_textButton', onClick: this._onDeleteClick },\n (0, _languageHandler._t)(\"Delete %(count)s devices\", { count: this.state.selectedDevices.length })\n );\n\n var classes = (0, _classnames2.default)(this.props.className, \"mx_DevicesPanel\");\n return _react2.default.createElement(\n 'div',\n { className: classes },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_header' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceId' },\n (0, _languageHandler._t)(\"Device ID\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceName' },\n (0, _languageHandler._t)(\"Device Name\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceLastSeen' },\n (0, _languageHandler._t)(\"Last seen\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceButtons' },\n this.state.selectedDevices.length > 0 ? deleteButton : (0, _languageHandler._t)('Select devices')\n )\n ),\n devices.map(this._renderDevice)\n );\n }\n }]);\n return DevicesPanel;\n}(_react2.default.Component); /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = DevicesPanel;\n\n\nDevicesPanel.displayName = 'MemberDeviceInfo';\nDevicesPanel.propTypes = {\n className: _propTypes2.default.string\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=DevicesPanel.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _DateUtils = require('../../../DateUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DevicesPanelEntry = function (_React$Component) {\n (0, _inherits3.default)(DevicesPanelEntry, _React$Component);\n\n function DevicesPanelEntry(props, context) {\n (0, _classCallCheck3.default)(this, DevicesPanelEntry);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DevicesPanelEntry.__proto__ || (0, _getPrototypeOf2.default)(DevicesPanelEntry)).call(this, props, context));\n\n _this._unmounted = false;\n _this.onDeviceToggled = _this.onDeviceToggled.bind(_this);\n _this._onDisplayNameChanged = _this._onDisplayNameChanged.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(DevicesPanelEntry, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: '_onDisplayNameChanged',\n value: function _onDisplayNameChanged(value) {\n var device = this.props.device;\n return _MatrixClientPeg2.default.get().setDeviceDetails(device.device_id, {\n display_name: value\n }).catch(function (e) {\n console.error(\"Error setting device display name\", e);\n throw new Error((0, _languageHandler._t)(\"Failed to set display name\"));\n });\n }\n }, {\n key: 'onDeviceToggled',\n value: function onDeviceToggled() {\n this.props.onDeviceToggled(this.props.device);\n }\n }, {\n key: 'render',\n value: function render() {\n var EditableTextContainer = _index2.default.getComponent('elements.EditableTextContainer');\n\n var device = this.props.device;\n\n var lastSeen = \"\";\n if (device.last_seen_ts) {\n var lastSeenDate = (0, _DateUtils.formatDate)(new Date(device.last_seen_ts));\n lastSeen = device.last_seen_ip + \" @ \" + lastSeenDate.toLocaleString();\n }\n\n var myDeviceClass = '';\n if (device.device_id === _MatrixClientPeg2.default.get().getDeviceId()) {\n myDeviceClass = \" mx_DevicesPanel_myDevice\";\n }\n\n return _react2.default.createElement(\n 'div',\n { className: \"mx_DevicesPanel_device\" + myDeviceClass },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceId' },\n device.device_id\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceName' },\n _react2.default.createElement(EditableTextContainer, { initialValue: device.display_name,\n onSubmit: this._onDisplayNameChanged,\n placeholder: device.device_id\n })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_lastSeen' },\n lastSeen\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceButtons' },\n _react2.default.createElement('input', { type: 'checkbox', onClick: this.onDeviceToggled, checked: this.props.selected })\n )\n );\n }\n }]);\n return DevicesPanelEntry;\n}(_react2.default.Component);\n\nexports.default = DevicesPanelEntry;\n\n\nDevicesPanelEntry.propTypes = {\n device: _propTypes2.default.object.isRequired,\n onDeviceToggled: _propTypes2.default.func\n};\n\nDevicesPanelEntry.defaultProps = {\n onDeviceToggled: function onDeviceToggled() {}\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=DevicesPanelEntry.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nvar React = require(\"react\");\nvar Notifier = require(\"../../../Notifier\");\nvar dis = require(\"../../../dispatcher\");\n\n\nmodule.exports = React.createClass({\n displayName: 'EnableNotificationsButton',\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = dis.register(this.onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n dis.unregister(this.dispatcherRef);\n },\n\n onAction: function onAction(payload) {\n if (payload.action !== \"notifier_enabled\") {\n return;\n }\n this.forceUpdate();\n },\n\n enabled: function enabled() {\n return Notifier.isEnabled();\n },\n\n onClick: function onClick() {\n var self = this;\n if (!Notifier.supportsDesktopNotifications()) {\n return;\n }\n if (!Notifier.isEnabled()) {\n Notifier.setEnabled(true, function () {\n self.forceUpdate();\n });\n } else {\n Notifier.setEnabled(false);\n }\n this.forceUpdate();\n },\n\n render: function render() {\n if (this.enabled()) {\n return React.createElement(\n \"button\",\n { className: \"mx_EnableNotificationsButton\", onClick: this.onClick },\n (0, _languageHandler._t)(\"Disable Notifications\")\n );\n } else {\n return React.createElement(\n \"button\",\n { className: \"mx_EnableNotificationsButton\", onClick: this.onClick },\n (0, _languageHandler._t)(\"Enable Notifications\")\n );\n }\n }\n});\n//# sourceMappingURL=EnableNotificationsButton.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar React = require('react');\nvar sdk = require('../../../index');\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar dis = require('../../../dispatcher');\n\nmodule.exports = React.createClass({\n displayName: 'IntegrationsManager',\n\n propTypes: {\n src: React.PropTypes.string.isRequired, // the source of the integration manager being embedded\n onFinished: React.PropTypes.func.isRequired // callback when the lightbox is dismissed\n },\n\n // XXX: keyboard shortcuts for managing dialogs should be done by the modal\n // dialog base class somehow, surely...\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = dis.register(this.onAction);\n document.addEventListener(\"keydown\", this.onKeyDown);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n dis.unregister(this.dispatcherRef);\n document.removeEventListener(\"keydown\", this.onKeyDown);\n },\n\n onKeyDown: function onKeyDown(ev) {\n if (ev.keyCode == 27) {\n // escape\n ev.stopPropagation();\n ev.preventDefault();\n this.props.onFinished();\n }\n },\n\n onAction: function onAction(payload) {\n if (payload.action === 'close_scalar') {\n this.props.onFinished();\n }\n },\n\n render: function render() {\n return React.createElement('iframe', { src: this.props.src });\n }\n});\n//# sourceMappingURL=IntegrationsManager.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _UserSettingsStore = require('../../../UserSettingsStore');\n\nvar _UserSettingsStore2 = _interopRequireDefault(_UserSettingsStore);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _notifications = require('../../../notifications');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// TODO: this \"view\" component still has far too much application logic in it,\n// which should be factored out to other files.\n\n// TODO: this component also does a lot of direct poking into this.state, which\n// is VERY NAUGHTY.\n\n\n/**\n * Rules that Vector used to set in order to override the actions of default rules.\n * These are used to port peoples existing overrides to match the current API.\n * These can be removed and forgotten once everyone has moved to the new client.\n */\nvar LEGACY_RULES = {\n \"im.vector.rule.contains_display_name\": \".m.rule.contains_display_name\",\n \"im.vector.rule.room_one_to_one\": \".m.rule.room_one_to_one\",\n \"im.vector.rule.room_message\": \".m.rule.message\",\n \"im.vector.rule.invite_for_me\": \".m.rule.invite_for_me\",\n \"im.vector.rule.call\": \".m.rule.call\",\n \"im.vector.rule.notices\": \".m.rule.suppress_notices\"\n}; /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction portLegacyActions(actions) {\n var decoded = _notifications.NotificationUtils.decodeActions(actions);\n if (decoded !== null) {\n return _notifications.NotificationUtils.encodeActions(decoded);\n } else {\n // We don't recognise one of the actions here, so we don't try to\n // canonicalise them.\n return actions;\n }\n}\n\nmodule.exports = _react2.default.createClass({\n displayName: 'Notifications',\n\n phases: {\n LOADING: \"LOADING\", // The component is loading or sending data to the hs\n DISPLAY: \"DISPLAY\", // The component is ready and display data\n ERROR: \"ERROR\" // There was an error\n },\n\n propTypes: {\n // The array of threepids from the JS SDK (required for email notifications)\n threepids: _react2.default.PropTypes.array.isRequired,\n // The brand string set when creating an email pusher\n brand: _react2.default.PropTypes.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n threepids: []\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n phase: this.phases.LOADING,\n masterPushRule: undefined, // The master rule ('.m.rule.master')\n vectorPushRules: [], // HS default push rules displayed in Vector UI\n vectorContentRules: { // Keyword push rules displayed in Vector UI\n vectorState: _notifications.PushRuleVectorState.ON,\n rules: []\n },\n externalPushRules: [], // Push rules (except content rule) that have been defined outside Vector UI\n externalContentRules: [] // Keyword push rules that have been defined outside Vector UI\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._refreshFromServer();\n },\n\n onEnableNotificationsChange: function onEnableNotificationsChange(event) {\n var self = this;\n this.setState({\n phase: this.phases.LOADING\n });\n\n _MatrixClientPeg2.default.get().setPushRuleEnabled('global', self.state.masterPushRule.kind, self.state.masterPushRule.rule_id, !event.target.checked).done(function () {\n self._refreshFromServer();\n });\n },\n\n onEnableDesktopNotificationsChange: function onEnableDesktopNotificationsChange(event) {\n var _this = this;\n\n _SettingsStore2.default.setValue(\"notificationsEnabled\", null, _SettingsStore.SettingLevel.DEVICE, event.target.checked).finally(function () {\n _this.forceUpdate();\n });\n },\n\n onEnableDesktopNotificationBodyChange: function onEnableDesktopNotificationBodyChange(event) {\n var _this2 = this;\n\n _SettingsStore2.default.setValue(\"notificationBodyEnabled\", null, _SettingsStore.SettingLevel.DEVICE, event.target.checked).finally(function () {\n _this2.forceUpdate();\n });\n },\n\n onEnableAudioNotificationsChange: function onEnableAudioNotificationsChange(event) {\n var _this3 = this;\n\n _SettingsStore2.default.setValue(\"audioNotificationsEnabled\", null, _SettingsStore.SettingLevel.DEVICE, event.target.checked).finally(function () {\n _this3.forceUpdate();\n });\n },\n\n onEnableEmailNotificationsChange: function onEnableEmailNotificationsChange(address, event) {\n var _this4 = this;\n\n var emailPusherPromise = void 0;\n if (event.target.checked) {\n var data = {};\n data['brand'] = this.props.brand || 'Riot';\n emailPusherPromise = _UserSettingsStore2.default.addEmailPusher(address, data);\n } else {\n var emailPusher = _UserSettingsStore2.default.getEmailPusher(this.state.pushers, address);\n emailPusher.kind = null;\n emailPusherPromise = _MatrixClientPeg2.default.get().setPusher(emailPusher);\n }\n emailPusherPromise.done(function () {\n _this4._refreshFromServer();\n }, function (error) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Error saving email notification preferences', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error saving email notification preferences'),\n description: (0, _languageHandler._t)('An error occurred whilst saving your email notification preferences.')\n });\n });\n },\n\n onNotifStateButtonClicked: function onNotifStateButtonClicked(event) {\n // FIXME: use .bind() rather than className metadata here surely\n var vectorRuleId = event.target.className.split(\"-\")[0];\n var newPushRuleVectorState = event.target.className.split(\"-\")[1];\n\n if (\"_keywords\" === vectorRuleId) {\n this._setKeywordsPushRuleVectorState(newPushRuleVectorState);\n } else {\n var rule = this.getRule(vectorRuleId);\n if (rule) {\n this._setPushRuleVectorState(rule, newPushRuleVectorState);\n }\n }\n },\n\n onKeywordsClicked: function onKeywordsClicked(event) {\n var self = this;\n\n // Compute the keywords list to display\n var keywords = [];\n for (var i in this.state.vectorContentRules.rules) {\n var rule = this.state.vectorContentRules.rules[i];\n keywords.push(rule.pattern);\n }\n if (keywords.length) {\n // As keeping the order of per-word push rules hs side is a bit tricky to code,\n // display the keywords in alphabetical order to the user\n keywords.sort();\n\n keywords = keywords.join(\", \");\n } else {\n keywords = \"\";\n }\n\n var TextInputDialog = _index2.default.getComponent(\"dialogs.TextInputDialog\");\n _Modal2.default.createTrackedDialog('Keywords Dialog', '', TextInputDialog, {\n title: (0, _languageHandler._t)('Keywords'),\n description: (0, _languageHandler._t)('Enter keywords separated by a comma:'),\n button: (0, _languageHandler._t)('OK'),\n value: keywords,\n onFinished: function onFinished(should_leave, newValue) {\n if (should_leave && newValue !== keywords) {\n var newKeywords = newValue.split(',');\n for (var _i in newKeywords) {\n newKeywords[_i] = newKeywords[_i].trim();\n }\n\n // Remove duplicates and empty\n newKeywords = newKeywords.reduce(function (array, keyword) {\n if (keyword !== \"\" && array.indexOf(keyword) < 0) {\n array.push(keyword);\n }\n return array;\n }, []);\n\n self._setKeywords(newKeywords);\n }\n }\n });\n },\n\n getRule: function getRule(vectorRuleId) {\n for (var i in this.state.vectorPushRules) {\n var rule = this.state.vectorPushRules[i];\n if (rule.vectorRuleId === vectorRuleId) {\n return rule;\n }\n }\n },\n\n _setPushRuleVectorState: function _setPushRuleVectorState(rule, newPushRuleVectorState) {\n if (rule && rule.vectorState !== newPushRuleVectorState) {\n this.setState({\n phase: this.phases.LOADING\n });\n\n var self = this;\n var cli = _MatrixClientPeg2.default.get();\n var deferreds = [];\n var ruleDefinition = _notifications.VectorPushRulesDefinitions[rule.vectorRuleId];\n\n if (rule.rule) {\n var actions = ruleDefinition.vectorStateToActions[newPushRuleVectorState];\n\n if (!actions) {\n // The new state corresponds to disabling the rule.\n deferreds.push(cli.setPushRuleEnabled('global', rule.rule.kind, rule.rule.rule_id, false));\n } else {\n // The new state corresponds to enabling the rule and setting specific actions\n deferreds.push(this._updatePushRuleActions(rule.rule, actions, true));\n }\n }\n\n _bluebird2.default.all(deferreds).done(function () {\n self._refreshFromServer();\n }, function (error) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to change settings: \" + error);\n _Modal2.default.createTrackedDialog('Failed to change settings', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to change settings'),\n description: error && error.message ? error.message : (0, _languageHandler._t)('Operation failed'),\n onFinished: self._refreshFromServer\n });\n });\n }\n },\n\n _setKeywordsPushRuleVectorState: function _setKeywordsPushRuleVectorState(newPushRuleVectorState) {\n // Is there really a change?\n if (this.state.vectorContentRules.vectorState === newPushRuleVectorState || this.state.vectorContentRules.rules.length === 0) {\n return;\n }\n\n var self = this;\n var cli = _MatrixClientPeg2.default.get();\n\n this.setState({\n phase: this.phases.LOADING\n });\n\n // Update all rules in self.state.vectorContentRules\n var deferreds = [];\n for (var i in this.state.vectorContentRules.rules) {\n var rule = this.state.vectorContentRules.rules[i];\n\n var enabled = void 0,\n actions = void 0;\n switch (newPushRuleVectorState) {\n case _notifications.PushRuleVectorState.ON:\n if (rule.actions.length !== 1) {\n actions = _notifications.PushRuleVectorState.actionsFor(_notifications.PushRuleVectorState.ON);\n }\n\n if (this.state.vectorContentRules.vectorState === _notifications.PushRuleVectorState.OFF) {\n enabled = true;\n }\n break;\n\n case _notifications.PushRuleVectorState.LOUD:\n if (rule.actions.length !== 3) {\n actions = _notifications.PushRuleVectorState.actionsFor(_notifications.PushRuleVectorState.LOUD);\n }\n\n if (this.state.vectorContentRules.vectorState === _notifications.PushRuleVectorState.OFF) {\n enabled = true;\n }\n break;\n\n case _notifications.PushRuleVectorState.OFF:\n enabled = false;\n break;\n }\n\n if (actions) {\n // Note that the workaround in _updatePushRuleActions will automatically\n // enable the rule\n deferreds.push(this._updatePushRuleActions(rule, actions, enabled));\n } else if (enabled != undefined) {\n deferreds.push(cli.setPushRuleEnabled('global', rule.kind, rule.rule_id, enabled));\n }\n }\n\n _bluebird2.default.all(deferreds).done(function (resps) {\n self._refreshFromServer();\n }, function (error) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Can't update user notification settings: \" + error);\n _Modal2.default.createTrackedDialog('Can\\'t update user notifcation settings', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Can\\'t update user notification settings'),\n description: error && error.message ? error.message : (0, _languageHandler._t)('Operation failed'),\n onFinished: self._refreshFromServer\n });\n });\n },\n\n _setKeywords: function _setKeywords(newKeywords) {\n this.setState({\n phase: this.phases.LOADING\n });\n\n var self = this;\n var cli = _MatrixClientPeg2.default.get();\n var removeDeferreds = [];\n\n // Remove per-word push rules of keywords that are no more in the list\n var vectorContentRulesPatterns = [];\n for (var i in self.state.vectorContentRules.rules) {\n var rule = self.state.vectorContentRules.rules[i];\n\n vectorContentRulesPatterns.push(rule.pattern);\n\n if (newKeywords.indexOf(rule.pattern) < 0) {\n removeDeferreds.push(cli.deletePushRule('global', rule.kind, rule.rule_id));\n }\n }\n\n // If the keyword is part of `externalContentRules`, remove the rule\n // before recreating it in the right Vector path\n for (var _i2 in self.state.externalContentRules) {\n var _rule = self.state.externalContentRules[_i2];\n\n if (newKeywords.indexOf(_rule.pattern) >= 0) {\n removeDeferreds.push(cli.deletePushRule('global', _rule.kind, _rule.rule_id));\n }\n }\n\n var onError = function onError(error) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to update keywords: \" + error);\n _Modal2.default.createTrackedDialog('Failed to update keywords', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to update keywords'),\n description: error && error.message ? error.message : (0, _languageHandler._t)('Operation failed'),\n onFinished: self._refreshFromServer\n });\n };\n\n // Then, add the new ones\n _bluebird2.default.all(removeDeferreds).done(function (resps) {\n var deferreds = [];\n\n var pushRuleVectorStateKind = self.state.vectorContentRules.vectorState;\n if (pushRuleVectorStateKind === _notifications.PushRuleVectorState.OFF) {\n // When the current global keywords rule is OFF, we need to look at\n // the flavor of rules in 'vectorContentRules' to apply the same actions\n // when creating the new rule.\n // Thus, this new rule will join the 'vectorContentRules' set.\n if (self.state.vectorContentRules.rules.length) {\n pushRuleVectorStateKind = _notifications.PushRuleVectorState.contentRuleVectorStateKind(self.state.vectorContentRules.rules[0]);\n } else {\n // ON is default\n pushRuleVectorStateKind = _notifications.PushRuleVectorState.ON;\n }\n }\n\n for (var _i3 in newKeywords) {\n var keyword = newKeywords[_i3];\n\n if (vectorContentRulesPatterns.indexOf(keyword) < 0) {\n if (self.state.vectorContentRules.vectorState !== _notifications.PushRuleVectorState.OFF) {\n deferreds.push(cli.addPushRule('global', 'content', keyword, {\n actions: _notifications.PushRuleVectorState.actionsFor(pushRuleVectorStateKind),\n pattern: keyword\n }));\n } else {\n deferreds.push(self._addDisabledPushRule('global', 'content', keyword, {\n actions: _notifications.PushRuleVectorState.actionsFor(pushRuleVectorStateKind),\n pattern: keyword\n }));\n }\n }\n }\n\n _bluebird2.default.all(deferreds).done(function (resps) {\n self._refreshFromServer();\n }, onError);\n }, onError);\n },\n\n // Create a push rule but disabled\n _addDisabledPushRule: function _addDisabledPushRule(scope, kind, ruleId, body) {\n var cli = _MatrixClientPeg2.default.get();\n return cli.addPushRule(scope, kind, ruleId, body).then(function () {\n return cli.setPushRuleEnabled(scope, kind, ruleId, false);\n });\n },\n\n // Check if any legacy im.vector rules need to be ported to the new API\n // for overriding the actions of default rules.\n _portRulesToNewAPI: function _portRulesToNewAPI(rulesets) {\n var self = this;\n var needsUpdate = [];\n var cli = _MatrixClientPeg2.default.get();\n\n for (var kind in rulesets.global) {\n var ruleset = rulesets.global[kind];\n for (var i = 0; i < ruleset.length; ++i) {\n var rule = ruleset[i];\n if (rule.rule_id in LEGACY_RULES) {\n console.log(\"Porting legacy rule\", rule);\n needsUpdate.push(function (kind, rule) {\n return cli.setPushRuleActions('global', kind, LEGACY_RULES[rule.rule_id], portLegacyActions(rule.actions)).then(function () {\n return cli.deletePushRule('global', kind, rule.rule_id);\n }).catch(function (e) {\n console.warn('Error when porting legacy rule: ' + e);\n });\n }(kind, rule));\n }\n }\n }\n\n if (needsUpdate.length > 0) {\n // If some of the rules need to be ported then wait for the porting\n // to happen and then fetch the rules again.\n return _bluebird2.default.all(needsUpdate).then(function () {\n return cli.getPushRules();\n });\n } else {\n // Otherwise return the rules that we already have.\n return rulesets;\n }\n },\n\n _refreshFromServer: function _refreshFromServer() {\n var self = this;\n var pushRulesPromise = _MatrixClientPeg2.default.get().getPushRules().then(self._portRulesToNewAPI).then(function (rulesets) {\n /// XXX seriously? wtf is this?\n _MatrixClientPeg2.default.get().pushRules = rulesets;\n\n // Get homeserver default rules and triage them by categories\n var rule_categories = {\n // The master rule (all notifications disabling)\n '.m.rule.master': 'master',\n\n // The default push rules displayed by Vector UI\n '.m.rule.contains_display_name': 'vector',\n '.m.rule.contains_user_name': 'vector',\n '.m.rule.room_one_to_one': 'vector',\n '.m.rule.message': 'vector',\n '.m.rule.invite_for_me': 'vector',\n //'.m.rule.member_event': 'vector',\n '.m.rule.call': 'vector',\n '.m.rule.suppress_notices': 'vector'\n\n // Others go to others\n };\n\n // HS default rules\n var defaultRules = { master: [], vector: {}, others: [] };\n\n for (var kind in rulesets.global) {\n for (var i = 0; i < (0, _keys2.default)(rulesets.global[kind]).length; ++i) {\n var r = rulesets.global[kind][i];\n var cat = rule_categories[r.rule_id];\n r.kind = kind;\n\n if (r.rule_id[0] === '.') {\n if (cat === 'vector') {\n defaultRules.vector[r.rule_id] = r;\n } else if (cat === 'master') {\n defaultRules.master.push(r);\n } else {\n defaultRules['others'].push(r);\n }\n }\n }\n }\n\n // Get the master rule if any defined by the hs\n if (defaultRules.master.length > 0) {\n self.state.masterPushRule = defaultRules.master[0];\n }\n\n // parse the keyword rules into our state\n var contentRules = _notifications.ContentRules.parseContentRules(rulesets);\n self.state.vectorContentRules = {\n vectorState: contentRules.vectorState,\n rules: contentRules.rules\n };\n self.state.externalContentRules = contentRules.externalRules;\n\n // Build the rules displayed in the Vector UI matrix table\n self.state.vectorPushRules = [];\n self.state.externalPushRules = [];\n\n var vectorRuleIds = ['.m.rule.contains_display_name', '.m.rule.contains_user_name', '_keywords', '.m.rule.room_one_to_one', '.m.rule.message', '.m.rule.invite_for_me',\n //'im.vector.rule.member_event',\n '.m.rule.call', '.m.rule.suppress_notices'];\n for (var _i4 in vectorRuleIds) {\n var vectorRuleId = vectorRuleIds[_i4];\n\n if (vectorRuleId === '_keywords') {\n // keywords needs a special handling\n // For Vector UI, this is a single global push rule but translated in Matrix,\n // it corresponds to all content push rules (stored in self.state.vectorContentRule)\n self.state.vectorPushRules.push({\n \"vectorRuleId\": \"_keywords\",\n \"description\": _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)('Messages containing <span>keywords</span>', {}, { 'span': function span(sub) {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_UserNotifSettings_keywords', onClick: self.onKeywordsClicked },\n sub\n );\n }\n })\n ),\n \"vectorState\": self.state.vectorContentRules.vectorState\n });\n } else {\n var ruleDefinition = _notifications.VectorPushRulesDefinitions[vectorRuleId];\n var rule = defaultRules.vector[vectorRuleId];\n\n var vectorState = ruleDefinition.ruleToVectorState(rule);\n\n //console.log(\"Refreshing vectorPushRules for \" + vectorRuleId +\", \"+ ruleDefinition.description +\", \" + rule +\", \" + vectorState);\n\n self.state.vectorPushRules.push({\n \"vectorRuleId\": vectorRuleId,\n \"description\": (0, _languageHandler._t)(ruleDefinition.description), // Text from VectorPushRulesDefinitions.js\n \"rule\": rule,\n \"vectorState\": vectorState\n });\n\n // if there was a rule which we couldn't parse, add it to the external list\n if (rule && !vectorState) {\n rule.description = ruleDefinition.description;\n self.state.externalPushRules.push(rule);\n }\n }\n }\n\n // Build the rules not managed by Vector UI\n var otherRulesDescriptions = {\n '.m.rule.message': (0, _languageHandler._t)('Notify for all other messages/rooms'),\n '.m.rule.fallback': (0, _languageHandler._t)('Notify me for anything else')\n };\n\n for (var _i5 in defaultRules.others) {\n var _rule2 = defaultRules.others[_i5];\n var ruleDescription = otherRulesDescriptions[_rule2.rule_id];\n\n // Show enabled default rules that was modified by the user\n if (ruleDescription && _rule2.enabled && !_rule2.default) {\n _rule2.description = ruleDescription;\n self.state.externalPushRules.push(_rule2);\n }\n }\n });\n\n var pushersPromise = _MatrixClientPeg2.default.get().getPushers().then(function (resp) {\n self.setState({ pushers: resp.pushers });\n });\n\n _bluebird2.default.all([pushRulesPromise, pushersPromise]).then(function () {\n self.setState({\n phase: self.phases.DISPLAY\n });\n }, function (error) {\n console.error(error);\n self.setState({\n phase: self.phases.ERROR\n });\n }).finally(function () {\n // actually explicitly update our state having been deep-manipulating it\n self.setState({\n masterPushRule: self.state.masterPushRule,\n vectorContentRules: self.state.vectorContentRules,\n vectorPushRules: self.state.vectorPushRules,\n externalContentRules: self.state.externalContentRules,\n externalPushRules: self.state.externalPushRules\n });\n }).done();\n },\n\n _updatePushRuleActions: function _updatePushRuleActions(rule, actions, enabled) {\n var cli = _MatrixClientPeg2.default.get();\n\n return cli.setPushRuleActions('global', rule.kind, rule.rule_id, actions).then(function () {\n // Then, if requested, enabled or disabled the rule\n if (undefined != enabled) {\n return cli.setPushRuleEnabled('global', rule.kind, rule.rule_id, enabled);\n }\n });\n },\n\n renderNotifRulesTableRow: function renderNotifRulesTableRow(title, className, pushRuleVectorState) {\n return _react2.default.createElement(\n 'tr',\n { key: className },\n _react2.default.createElement(\n 'th',\n null,\n title\n ),\n _react2.default.createElement(\n 'th',\n null,\n _react2.default.createElement('input', { className: className + \"-\" + _notifications.PushRuleVectorState.OFF,\n type: 'radio',\n checked: pushRuleVectorState === _notifications.PushRuleVectorState.OFF,\n onChange: this.onNotifStateButtonClicked })\n ),\n _react2.default.createElement(\n 'th',\n null,\n _react2.default.createElement('input', { className: className + \"-\" + _notifications.PushRuleVectorState.ON,\n type: 'radio',\n checked: pushRuleVectorState === _notifications.PushRuleVectorState.ON,\n onChange: this.onNotifStateButtonClicked })\n ),\n _react2.default.createElement(\n 'th',\n null,\n _react2.default.createElement('input', { className: className + \"-\" + _notifications.PushRuleVectorState.LOUD,\n type: 'radio',\n checked: pushRuleVectorState === _notifications.PushRuleVectorState.LOUD,\n onChange: this.onNotifStateButtonClicked })\n )\n );\n },\n\n renderNotifRulesTableRows: function renderNotifRulesTableRows() {\n var rows = [];\n for (var i in this.state.vectorPushRules) {\n var rule = this.state.vectorPushRules[i];\n //console.log(\"rendering: \" + rule.description + \", \" + rule.vectorRuleId + \", \" + rule.vectorState);\n rows.push(this.renderNotifRulesTableRow(rule.description, rule.vectorRuleId, rule.vectorState));\n }\n return rows;\n },\n\n emailNotificationsRow: function emailNotificationsRow(address, label) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_tableRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_inputCell' },\n _react2.default.createElement('input', { id: 'enableEmailNotifications_{address}',\n ref: 'enableEmailNotifications_{address}',\n type: 'checkbox',\n checked: _UserSettingsStore2.default.hasEmailPusher(this.state.pushers, address),\n onChange: this.onEnableEmailNotificationsChange.bind(this, address)\n })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_labelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'enableEmailNotifications_{address}' },\n label\n )\n )\n );\n },\n\n render: function render() {\n var self = this;\n\n var spinner = void 0;\n if (this.state.phase === this.phases.LOADING) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n spinner = _react2.default.createElement(Loader, null);\n }\n\n var masterPushRuleDiv = void 0;\n if (this.state.masterPushRule) {\n masterPushRuleDiv = _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_tableRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_inputCell' },\n _react2.default.createElement('input', { id: 'enableNotifications',\n ref: 'enableNotifications',\n type: 'checkbox',\n checked: !this.state.masterPushRule.enabled,\n onChange: this.onEnableNotificationsChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_labelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'enableNotifications' },\n (0, _languageHandler._t)('Enable notifications for this account')\n )\n )\n );\n }\n\n // When enabled, the master rule inhibits all existing rules\n // So do not show all notification settings\n if (this.state.masterPushRule && this.state.masterPushRule.enabled) {\n return _react2.default.createElement(\n 'div',\n null,\n masterPushRuleDiv,\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_notifTable' },\n (0, _languageHandler._t)('All notifications are currently disabled for all targets.'),\n '.'\n )\n );\n }\n\n var emailThreepids = this.props.threepids.filter(function (tp) {\n return tp.medium === \"email\";\n });\n var emailNotificationsRow = void 0;\n if (emailThreepids.length === 0) {\n emailNotificationsRow = _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Add an email address above to configure email notifications')\n );\n } else {\n // This only supports the first email address in your profile for now\n emailNotificationsRow = this.emailNotificationsRow(emailThreepids[0].address, (0, _languageHandler._t)('Enable email notifications') + ' (' + emailThreepids[0].address + ')');\n }\n\n // Build external push rules\n var externalRules = [];\n for (var i in this.state.externalPushRules) {\n var rule = this.state.externalPushRules[i];\n externalRules.push(_react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)(rule.description)\n ));\n }\n\n // Show keywords not displayed by the vector UI as a single external push rule\n var externalKeywords = [];\n for (var _i6 in this.state.externalContentRules) {\n var _rule3 = this.state.externalContentRules[_i6];\n externalKeywords.push(_rule3.pattern);\n }\n if (externalKeywords.length) {\n externalKeywords = externalKeywords.join(\", \");\n externalRules.push(_react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)('Notifications on the following keywords follow rules which can’t be displayed here:'),\n ' ',\n externalKeywords\n ));\n }\n\n var devicesSection = void 0;\n if (this.state.pushers === undefined) {\n devicesSection = _react2.default.createElement(\n 'div',\n { className: 'error' },\n (0, _languageHandler._t)('Unable to fetch notification target list')\n );\n } else if (this.state.pushers.length == 0) {\n devicesSection = null;\n } else {\n // TODO: It would be great to be able to delete pushers from here too,\n // and this wouldn't be hard to add.\n var rows = [];\n for (var _i7 = 0; _i7 < this.state.pushers.length; ++_i7) {\n rows.push(_react2.default.createElement(\n 'tr',\n { key: _i7 },\n _react2.default.createElement(\n 'td',\n null,\n this.state.pushers[_i7].app_display_name\n ),\n _react2.default.createElement(\n 'td',\n null,\n this.state.pushers[_i7].device_display_name\n )\n ));\n }\n devicesSection = _react2.default.createElement(\n 'table',\n { className: 'mx_UserSettings_devicesTable' },\n _react2.default.createElement(\n 'tbody',\n null,\n rows\n )\n );\n }\n if (devicesSection) {\n devicesSection = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Notification targets')\n ),\n devicesSection\n );\n }\n\n var advancedSettings = void 0;\n if (externalRules.length) {\n advancedSettings = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Advanced notification settings')\n ),\n (0, _languageHandler._t)('There are advanced notifications which are not shown here'),\n '.',\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)('You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply'),\n '.',\n _react2.default.createElement(\n 'ul',\n null,\n externalRules\n )\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n masterPushRuleDiv,\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_notifTable' },\n spinner,\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_tableRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_inputCell' },\n _react2.default.createElement('input', { id: 'enableDesktopNotifications',\n ref: 'enableDesktopNotifications',\n type: 'checkbox',\n checked: _SettingsStore2.default.getValue(\"notificationsEnabled\"),\n onChange: this.onEnableDesktopNotificationsChange })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_labelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'enableDesktopNotifications' },\n (0, _languageHandler._t)('Enable desktop notifications')\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_tableRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_inputCell' },\n _react2.default.createElement('input', { id: 'enableDesktopNotificationBody',\n ref: 'enableDesktopNotificationBody',\n type: 'checkbox',\n checked: _SettingsStore2.default.getValue(\"notificationBodyEnabled\"),\n onChange: this.onEnableDesktopNotificationBodyChange })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_labelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'enableDesktopNotificationBody' },\n (0, _languageHandler._t)('Show message in desktop notification')\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_tableRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_inputCell' },\n _react2.default.createElement('input', { id: 'enableDesktopAudioNotifications',\n ref: 'enableDesktopAudioNotifications',\n type: 'checkbox',\n checked: _SettingsStore2.default.getValue(\"audioNotificationsEnabled\"),\n onChange: this.onEnableAudioNotificationsChange })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_labelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'enableDesktopAudioNotifications' },\n (0, _languageHandler._t)('Enable audible notifications in web client')\n )\n )\n ),\n emailNotificationsRow,\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_pushRulesTableWrapper' },\n _react2.default.createElement(\n 'table',\n { className: 'mx_UserNotifSettings_pushRulesTable' },\n _react2.default.createElement(\n 'thead',\n null,\n _react2.default.createElement(\n 'tr',\n null,\n _react2.default.createElement('th', { width: '55%' }),\n _react2.default.createElement(\n 'th',\n { width: '15%' },\n (0, _languageHandler._t)('Off')\n ),\n _react2.default.createElement(\n 'th',\n { width: '15%' },\n (0, _languageHandler._t)('On')\n ),\n _react2.default.createElement(\n 'th',\n { width: '15%' },\n (0, _languageHandler._t)('Noisy')\n )\n )\n ),\n _react2.default.createElement(\n 'tbody',\n null,\n this.renderNotifRulesTableRows()\n )\n )\n ),\n advancedSettings,\n devicesSection\n )\n );\n }\n});\n//# sourceMappingURL=Notifications.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nmodule.exports = {\n NotificationUtils: require('./NotificationUtils'),\n PushRuleVectorState: require('./PushRuleVectorState'),\n VectorPushRulesDefinitions: require('./VectorPushRulesDefinitions'),\n ContentRules: require('./ContentRules')\n};\n//# sourceMappingURL=index.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _languageHandler = require('../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar StandardActions = require('./StandardActions');\nvar PushRuleVectorState = require('./PushRuleVectorState');\n\nvar VectorPushRuleDefinition = function () {\n function VectorPushRuleDefinition(opts) {\n (0, _classCallCheck3.default)(this, VectorPushRuleDefinition);\n\n this.kind = opts.kind;\n this.description = opts.description;\n this.vectorStateToActions = opts.vectorStateToActions;\n }\n\n // Translate the rule actions and its enabled value into vector state\n\n\n (0, _createClass3.default)(VectorPushRuleDefinition, [{\n key: 'ruleToVectorState',\n value: function ruleToVectorState(rule) {\n var enabled = false;\n var actions = null;\n if (rule) {\n enabled = rule.enabled;\n actions = rule.actions;\n }\n\n for (var stateKey in PushRuleVectorState.states) {\n var state = PushRuleVectorState.states[stateKey];\n var vectorStateToActions = this.vectorStateToActions[state];\n\n if (!vectorStateToActions) {\n // No defined actions means that this vector state expects a disabled (or absent) rule\n if (!enabled) {\n return state;\n }\n } else {\n // The actions must match to the ones expected by vector state\n if (enabled && (0, _stringify2.default)(rule.actions) === (0, _stringify2.default)(vectorStateToActions)) {\n return state;\n }\n }\n }\n\n console.error(\"Cannot translate rule actions into Vector rule state. Rule: \" + (0, _stringify2.default)(rule));\n return undefined;\n }\n }]);\n return VectorPushRuleDefinition;\n}();\n\n/**\n * The descriptions of rules managed by the Vector UI.\n */\n\n\nmodule.exports = {\n // Messages containing user's display name\n \".m.rule.contains_display_name\": new VectorPushRuleDefinition({\n kind: \"override\",\n description: (0, _languageHandler._td)(\"Messages containing my display name\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: { // The actions for each vector state, or null to disable the rule.\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_HIGHLIGHT_DEFAULT_SOUND,\n off: StandardActions.ACTION_DISABLED\n }\n }),\n\n // Messages containing user's username (localpart/MXID)\n \".m.rule.contains_user_name\": new VectorPushRuleDefinition({\n kind: \"override\",\n description: (0, _languageHandler._td)(\"Messages containing my user name\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: { // The actions for each vector state, or null to disable the rule.\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_HIGHLIGHT_DEFAULT_SOUND,\n off: StandardActions.ACTION_DISABLED\n }\n }),\n\n // Messages just sent to the user in a 1:1 room\n \".m.rule.room_one_to_one\": new VectorPushRuleDefinition({\n kind: \"underride\",\n description: (0, _languageHandler._td)(\"Messages in one-to-one chats\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: {\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND,\n off: StandardActions.ACTION_DONT_NOTIFY\n }\n }),\n\n // Messages just sent to a group chat room\n // 1:1 room messages are catched by the .m.rule.room_one_to_one rule if any defined\n // By opposition, all other room messages are from group chat rooms.\n \".m.rule.message\": new VectorPushRuleDefinition({\n kind: \"underride\",\n description: (0, _languageHandler._td)(\"Messages in group chats\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: {\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND,\n off: StandardActions.ACTION_DONT_NOTIFY\n }\n }),\n\n // Invitation for the user\n \".m.rule.invite_for_me\": new VectorPushRuleDefinition({\n kind: \"underride\",\n description: (0, _languageHandler._td)(\"When I'm invited to a room\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: {\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND,\n off: StandardActions.ACTION_DISABLED\n }\n }),\n\n // Incoming call\n \".m.rule.call\": new VectorPushRuleDefinition({\n kind: \"underride\",\n description: (0, _languageHandler._td)(\"Call invitation\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: {\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_NOTIFY_RING_SOUND,\n off: StandardActions.ACTION_DISABLED\n }\n }),\n\n // Notifications from bots\n \".m.rule.suppress_notices\": new VectorPushRuleDefinition({\n kind: \"override\",\n description: (0, _languageHandler._td)(\"Messages sent by bot\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: {\n // .m.rule.suppress_notices is a \"negative\" rule, we have to invert its enabled value for vector UI\n on: StandardActions.ACTION_DISABLED,\n loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND,\n off: StandardActions.ACTION_DONT_NOTIFY\n }\n })\n};\n//# sourceMappingURL=VectorPushRulesDefinitions.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PushRuleVectorState = require('./PushRuleVectorState');\n\nmodule.exports = {\n /**\n * Extract the keyword rules from a list of rules, and parse them\n * into a form which is useful for Vector's UI.\n *\n * Returns an object containing:\n * rules: the primary list of keyword rules\n * vectorState: a PushRuleVectorState indicating whether those rules are\n * OFF/ON/LOUD\n * externalRules: a list of other keyword rules, with states other than\n * vectorState\n */\n parseContentRules: function parseContentRules(rulesets) {\n // first categorise the keyword rules in terms of their actions\n var contentRules = this._categoriseContentRules(rulesets);\n\n // Decide which content rules to display in Vector UI.\n // Vector displays a single global rule for a list of keywords\n // whereas Matrix has a push rule per keyword.\n // Vector can set the unique rule in ON, LOUD or OFF state.\n // Matrix has enabled/disabled plus a combination of (highlight, sound) tweaks.\n\n // The code below determines which set of user's content push rules can be\n // displayed by the vector UI.\n // Push rules that does not fit, ie defined by another Matrix client, ends\n // in externalRules.\n // There is priority in the determination of which set will be the displayed one.\n // The set with rules that have LOUD tweaks is the first choice. Then, the ones\n // with ON tweaks (no tweaks).\n\n if (contentRules.loud.length) {\n return {\n vectorState: PushRuleVectorState.LOUD,\n rules: contentRules.loud,\n externalRules: [].concat(contentRules.loud_but_disabled, contentRules.on, contentRules.on_but_disabled, contentRules.other)\n };\n } else if (contentRules.loud_but_disabled.length) {\n return {\n vectorState: PushRuleVectorState.OFF,\n rules: contentRules.loud_but_disabled,\n externalRules: [].concat(contentRules.on, contentRules.on_but_disabled, contentRules.other)\n };\n } else if (contentRules.on.length) {\n return {\n vectorState: PushRuleVectorState.ON,\n rules: contentRules.on,\n externalRules: [].concat(contentRules.on_but_disabled, contentRules.other)\n };\n } else if (contentRules.on_but_disabled.length) {\n return {\n vectorState: PushRuleVectorState.OFF,\n rules: contentRules.on_but_disabled,\n externalRules: contentRules.other\n };\n } else {\n return {\n vectorState: PushRuleVectorState.ON,\n rules: [],\n externalRules: contentRules.other\n };\n }\n },\n\n _categoriseContentRules: function _categoriseContentRules(rulesets) {\n var contentRules = { on: [], on_but_disabled: [], loud: [], loud_but_disabled: [], other: [] };\n for (var kind in rulesets.global) {\n for (var i = 0; i < (0, _keys2.default)(rulesets.global[kind]).length; ++i) {\n var r = rulesets.global[kind][i];\n\n // check it's not a default rule\n if (r.rule_id[0] === '.' || kind !== 'content') {\n continue;\n }\n\n r.kind = kind; // is this needed? not sure\n\n switch (PushRuleVectorState.contentRuleVectorStateKind(r)) {\n case PushRuleVectorState.ON:\n if (r.enabled) {\n contentRules.on.push(r);\n } else {\n contentRules.on_but_disabled.push(r);\n }\n break;\n case PushRuleVectorState.LOUD:\n if (r.enabled) {\n contentRules.loud.push(r);\n } else {\n contentRules.loud_but_disabled.push(r);\n }\n break;\n default:\n contentRules.other.push(r);\n break;\n }\n }\n }\n return contentRules;\n }\n};\n//# sourceMappingURL=ContentRules.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _CallHandler = require('../../../CallHandler');\n\nvar _CallHandler2 = _interopRequireDefault(_CallHandler);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'CallPreview',\n\n propTypes: {\n // A Conference Handler implementation\n // Must have a function signature:\n // getConferenceCallForRoom(roomId: string): MatrixCall\n ConferenceHandler: _propTypes2.default.object\n },\n\n getInitialState: function getInitialState() {\n return {\n roomId: _RoomViewStore2.default.getRoomId(),\n activeCall: _CallHandler2.default.getAnyActiveCall()\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._roomStoreToken = _RoomViewStore2.default.addListener(this._onRoomViewStoreUpdate);\n this.dispatcherRef = _dispatcher2.default.register(this._onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (this._roomStoreToken) {\n this._roomStoreToken.remove();\n }\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n _onRoomViewStoreUpdate: function _onRoomViewStoreUpdate(payload) {\n if (_RoomViewStore2.default.getRoomId() === this.state.roomId) return;\n this.setState({\n roomId: _RoomViewStore2.default.getRoomId()\n });\n },\n\n _onAction: function _onAction(payload) {\n switch (payload.action) {\n // listen for call state changes to prod the render method, which\n // may hide the global CallView if the call it is tracking is dead\n case 'call_state':\n this.setState({\n activeCall: _CallHandler2.default.getAnyActiveCall()\n });\n break;\n }\n },\n\n _onCallViewClick: function _onCallViewClick() {\n var call = _CallHandler2.default.getAnyActiveCall();\n if (call) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: call.groupRoomId || call.roomId\n });\n }\n },\n\n render: function render() {\n var callForRoom = _CallHandler2.default.getCallForRoom(this.state.roomId);\n var showCall = this.state.activeCall && this.state.activeCall.call_state === 'connected' && !callForRoom;\n\n if (showCall) {\n var CallView = _index2.default.getComponent('voip.CallView');\n return _react2.default.createElement(CallView, {\n className: 'mx_LeftPanel_callView', showVoice: true, onClick: this._onCallViewClick,\n ConferenceHandler: this.props.ConferenceHandler\n });\n }\n var PersistentApp = _index2.default.getComponent('elements.PersistentApp');\n return _react2.default.createElement(PersistentApp, null);\n }\n});\n//# sourceMappingURL=CallPreview.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _CallHandler = require('../../../CallHandler');\n\nvar _CallHandler2 = _interopRequireDefault(_CallHandler);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'CallView',\n\n propTypes: {\n // js-sdk room object. If set, we will only show calls for the given\n // room; if not, we will show any active call.\n room: _propTypes2.default.object,\n\n // A Conference Handler implementation\n // Must have a function signature:\n // getConferenceCallForRoom(roomId: string): MatrixCall\n ConferenceHandler: _propTypes2.default.object,\n\n // maxHeight style attribute for the video panel\n maxVideoHeight: _propTypes2.default.number,\n\n // a callback which is called when the user clicks on the video div\n onClick: _propTypes2.default.func,\n\n // a callback which is called when the content in the callview changes\n // in a way that is likely to cause a resize.\n onResize: _propTypes2.default.func,\n\n // render ongoing audio call details - useful when in LeftPanel\n showVoice: _propTypes2.default.bool\n },\n\n getInitialState: function getInitialState() {\n return {\n // the call this view is displaying (if any)\n call: null\n };\n },\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n this.showCall();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n onAction: function onAction(payload) {\n // don't filter out payloads for room IDs other than props.room because\n // we may be interested in the conf 1:1 room\n if (payload.action !== 'call_state') {\n return;\n }\n this.showCall();\n },\n\n showCall: function showCall() {\n var call = void 0;\n\n if (this.props.room) {\n var roomId = this.props.room.roomId;\n call = _CallHandler2.default.getCallForRoom(roomId) || (this.props.ConferenceHandler ? this.props.ConferenceHandler.getConferenceCallForRoom(roomId) : null);\n\n if (this.call) {\n this.setState({ call: call });\n }\n } else {\n call = _CallHandler2.default.getAnyActiveCall();\n this.setState({ call: call });\n }\n\n if (call) {\n call.setLocalVideoElement(this.getVideoView().getLocalVideoElement());\n call.setRemoteVideoElement(this.getVideoView().getRemoteVideoElement());\n // always use a separate element for audio stream playback.\n // this is to let us move CallView around the DOM without interrupting remote audio\n // during playback, by having the audio rendered by a top-level <audio/> element.\n // rather than being rendered by the main remoteVideo <video/> element.\n call.setRemoteAudioElement(this.getVideoView().getRemoteAudioElement());\n }\n if (call && call.type === \"video\" && call.call_state !== \"ended\" && call.call_state !== \"ringing\") {\n // if this call is a conf call, don't display local video as the\n // conference will have us in it\n this.getVideoView().getLocalVideoElement().style.display = call.confUserId ? \"none\" : \"block\";\n this.getVideoView().getRemoteVideoElement().style.display = \"block\";\n } else {\n this.getVideoView().getLocalVideoElement().style.display = \"none\";\n this.getVideoView().getRemoteVideoElement().style.display = \"none\";\n _dispatcher2.default.dispatch({ action: 'video_fullscreen', fullscreen: false });\n }\n\n if (this.props.onResize) {\n this.props.onResize();\n }\n },\n\n getVideoView: function getVideoView() {\n return this.refs.video;\n },\n\n render: function render() {\n var VideoView = _index2.default.getComponent('voip.VideoView');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n\n var voice = void 0;\n if (this.state.call && this.state.call.type === \"voice\" && this.props.showVoice) {\n var callRoom = _MatrixClientPeg2.default.get().getRoom(this.state.call.roomId);\n voice = _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_CallView_voice', onClick: this.props.onClick },\n (0, _languageHandler._t)(\"Active call (%(roomName)s)\", { roomName: callRoom.name })\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(VideoView, { ref: 'video', onClick: this.props.onClick,\n onResize: this.props.onResize,\n maxHeight: this.props.maxVideoHeight\n }),\n voice\n );\n }\n}); /*\n Copyright 2015, 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=CallView.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nmodule.exports = _react2.default.createClass({\n displayName: 'IncomingCallBox',\n\n propTypes: {\n incomingCall: _propTypes2.default.object\n },\n\n onAnswerClick: function onAnswerClick(e) {\n e.stopPropagation();\n _dispatcher2.default.dispatch({\n action: 'answer',\n room_id: this.props.incomingCall.roomId\n });\n },\n\n onRejectClick: function onRejectClick(e) {\n e.stopPropagation();\n _dispatcher2.default.dispatch({\n action: 'hangup',\n room_id: this.props.incomingCall.roomId\n });\n },\n\n render: function render() {\n var room = null;\n if (this.props.incomingCall) {\n room = _MatrixClientPeg2.default.get().getRoom(this.props.incomingCall.roomId);\n }\n\n var caller = room ? room.name : (0, _languageHandler._t)(\"unknown caller\");\n\n var incomingCallText = null;\n if (this.props.incomingCall) {\n if (this.props.incomingCall.type === \"voice\") {\n incomingCallText = (0, _languageHandler._t)(\"Incoming voice call from %(name)s\", { name: caller });\n } else if (this.props.incomingCall.type === \"video\") {\n incomingCallText = (0, _languageHandler._t)(\"Incoming video call from %(name)s\", { name: caller });\n } else {\n incomingCallText = (0, _languageHandler._t)(\"Incoming call from %(name)s\", { name: caller });\n }\n }\n\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_IncomingCallBox', id: 'incomingCallBox' },\n _react2.default.createElement('img', { className: 'mx_IncomingCallBox_chevron', src: 'img/chevron-left.png', width: '9', height: '16' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_IncomingCallBox_title' },\n incomingCallText\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_IncomingCallBox_buttons' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_IncomingCallBox_buttons_cell' },\n _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_IncomingCallBox_buttons_decline', onClick: this.onRejectClick },\n (0, _languageHandler._t)(\"Decline\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_IncomingCallBox_buttons_cell' },\n _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_IncomingCallBox_buttons_accept', onClick: this.onAnswerClick },\n (0, _languageHandler._t)(\"Accept\")\n )\n )\n )\n );\n }\n});\n//# sourceMappingURL=IncomingCallBox.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'VideoFeed',\n\n propTypes: {\n // maxHeight style attribute for the video element\n maxHeight: _propTypes2.default.number,\n\n // a callback which is called when the video element is resized\n // due to a change in video metadata\n onResize: _propTypes2.default.func\n },\n\n componentDidMount: function componentDidMount() {\n this.refs.vid.addEventListener('resize', this.onResize);\n },\n componentWillUnmount: function componentWillUnmount() {\n this.refs.vid.removeEventListener('resize', this.onResize);\n },\n\n\n onResize: function onResize(e) {\n if (this.props.onResize) {\n this.props.onResize(e);\n }\n },\n\n render: function render() {\n return _react2.default.createElement('video', { ref: 'vid', style: { maxHeight: this.props.maxHeight } });\n }\n});\n//# sourceMappingURL=VideoFeed.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getFullScreenElement() {\n return document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement;\n}\n\nmodule.exports = _react2.default.createClass({\n displayName: 'VideoView',\n\n propTypes: {\n // maxHeight style attribute for the video element\n maxHeight: _propTypes2.default.number,\n\n // a callback which is called when the user clicks on the video div\n onClick: _propTypes2.default.func,\n\n // a callback which is called when the video element is resized due to\n // a change in video metadata\n onResize: _propTypes2.default.func\n },\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n getRemoteVideoElement: function getRemoteVideoElement() {\n return _reactDom2.default.findDOMNode(this.refs.remote);\n },\n\n getRemoteAudioElement: function getRemoteAudioElement() {\n // this needs to be somewhere at the top of the DOM which\n // always exists to avoid audio interruptions.\n // Might as well just use DOM.\n var remoteAudioElement = document.getElementById(\"remoteAudio\");\n if (!remoteAudioElement) {\n console.error(\"Failed to find remoteAudio element - cannot play audio!\" + \"You need to add an <audio/> to the DOM.\");\n }\n return remoteAudioElement;\n },\n\n getLocalVideoElement: function getLocalVideoElement() {\n return _reactDom2.default.findDOMNode(this.refs.local);\n },\n\n setContainer: function setContainer(c) {\n this.container = c;\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n case 'video_fullscreen':\n {\n if (!this.container) {\n return;\n }\n var element = this.container;\n if (payload.fullscreen) {\n var requestMethod = element.requestFullScreen || element.webkitRequestFullScreen || element.mozRequestFullScreen || element.msRequestFullscreen;\n requestMethod.call(element);\n } else if (getFullScreenElement()) {\n var exitMethod = document.exitFullscreen || document.mozCancelFullScreen || document.webkitExitFullscreen || document.msExitFullscreen;\n if (exitMethod) {\n exitMethod.call(document);\n }\n }\n break;\n }\n }\n },\n\n render: function render() {\n var VideoFeed = _index2.default.getComponent('voip.VideoFeed');\n\n // if we're fullscreen, we don't want to set a maxHeight on the video element.\n var maxVideoHeight = getFullScreenElement() ? null : this.props.maxHeight;\n var localVideoFeedClasses = (0, _classnames2.default)(\"mx_VideoView_localVideoFeed\", { \"mx_VideoView_localVideoFeed_flipped\": _SettingsStore2.default.getValue('VideoView.flipVideoHorizontally')\n });\n return _react2.default.createElement(\n 'div',\n { className: 'mx_VideoView', ref: this.setContainer, onClick: this.props.onClick },\n _react2.default.createElement(\n 'div',\n { className: 'mx_VideoView_remoteVideoFeed' },\n _react2.default.createElement(VideoFeed, { ref: 'remote', onResize: this.props.onResize,\n maxHeight: maxVideoHeight })\n ),\n _react2.default.createElement(\n 'div',\n { className: localVideoFeedClasses },\n _react2.default.createElement(VideoFeed, { ref: 'local' })\n )\n );\n }\n});\n//# sourceMappingURL=VideoView.js.map","import { Block, Change, Data, Document, History, Inline, Leaf, Mark, Node, Range, Schema, Stack, Value, Text } from 'slate';\n\n/**\n * Create a prop type checker for Slate objects with `name` and `validate`.\n *\n * @param {String} name\n * @param {Function} validate\n * @return {Function}\n */\n\nfunction create(name, validate) {\n function check(isRequired, props, propName, componentName, location) {\n var value = props[propName];\n if (value == null && !isRequired) return null;\n if (value == null && isRequired) return new Error('The ' + location + ' `' + propName + '` is marked as required in `' + componentName + '`, but it was not supplied.');\n if (validate(value)) return null;\n return new Error('Invalid ' + location + ' `' + propName + '` supplied to `' + componentName + '`, expected a Slate `' + name + '` but received: ' + value);\n }\n\n function propType() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return check.apply(undefined, [false].concat(args));\n }\n\n propType.isRequired = function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return check.apply(undefined, [true].concat(args));\n };\n\n return propType;\n}\n\n/**\n * Prop type checkers.\n *\n * @type {Object}\n */\n\nvar Types = {\n block: create('Block', function (v) {\n return Block.isBlock(v);\n }),\n blocks: create('List<Block>', function (v) {\n return Block.isBlockList(v);\n }),\n change: create('Change', function (v) {\n return Change.isChange(v);\n }),\n data: create('Data', function (v) {\n return Data.isData(v);\n }),\n document: create('Document', function (v) {\n return Document.isDocument(v);\n }),\n history: create('History', function (v) {\n return History.isHistory(v);\n }),\n inline: create('Inline', function (v) {\n return Inline.isInline(v);\n }),\n inlines: create('Inline', function (v) {\n return Inline.isInlineList(v);\n }),\n leaf: create('Leaf', function (v) {\n return Leaf.isLeaf(v);\n }),\n leaves: create('List<Leaf>', function (v) {\n return Leaf.isLeafList(v);\n }),\n mark: create('Mark', function (v) {\n return Mark.isMark(v);\n }),\n marks: create('Set<Mark>', function (v) {\n return Mark.isMarkSet(v);\n }),\n node: create('Node', function (v) {\n return Node.isNode(v);\n }),\n nodes: create('List<Node>', function (v) {\n return Node.isNodeList(v);\n }),\n range: create('Range', function (v) {\n return Range.isRange(v);\n }),\n ranges: create('List<Range>', function (v) {\n return Range.isRangeList(v);\n }),\n schema: create('Schema', function (v) {\n return Schema.isSchema(v);\n }),\n stack: create('Stack', function (v) {\n return Stack.isStack(v);\n }),\n value: create('Value', function (v) {\n return Value.isValue(v);\n }),\n text: create('Text', function (v) {\n return Text.isText(v);\n }),\n texts: create('List<Text>', function (v) {\n return Text.isTextList(v);\n })\n\n /**\n * Export.\n *\n * @type {Object}\n */\n\n};\n\nexport default Types;\n//# sourceMappingURL=slate-prop-types.es.js.map\n","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexport var isBrowser = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\" && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === 'object' && document.nodeType === 9;\n\nexport default isBrowser;\n","import isBrowser from 'is-in-browser';\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\n/**\n * Browser matching rules.\n *\n * @type {Array}\n */\n\nvar BROWSER_RULES = [['edge', /Edge\\/([0-9\\._]+)/], ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/], ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/], ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/], ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)$/], ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+)\\).*Gecko$/], ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/], ['ie', /MSIE\\s(7\\.0)/], ['android', /Android\\s([0-9\\.]+)/], ['safari', /Version\\/([0-9\\._]+).*Safari/]];\n\nvar browser = void 0;\n\nif (isBrowser) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = BROWSER_RULES[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ref = _step.value;\n\n var _ref2 = slicedToArray(_ref, 2);\n\n var name = _ref2[0];\n var regexp = _ref2[1];\n\n if (regexp.test(window.navigator.userAgent)) {\n browser = name;\n break;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\n/**\n * Operating system matching rules.\n *\n * @type {Array}\n */\n\nvar OS_RULES = [['ios', /os ([\\.\\_\\d]+) like mac os/i], // must be before the macos rule\n['macos', /mac os x/i], ['android', /android/i], ['firefoxos', /mozilla\\/[a-z\\.\\_\\d]+ \\((?:mobile)|(?:tablet)/i], ['windows', /windows\\s*(?:nt)?\\s*([\\.\\_\\d]+)/i]];\n\nvar os = void 0;\n\nif (isBrowser) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = OS_RULES[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _ref3 = _step2.value;\n\n var _ref4 = slicedToArray(_ref3, 2);\n\n var _name = _ref4[0];\n var _regexp = _ref4[1];\n\n if (_regexp.test(window.navigator.userAgent)) {\n os = _name;\n break;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n}\n\n/**\n * Feature matching rules.\n *\n * @type {Array}\n */\n\nvar FEATURE_RULES = [['inputeventslevel1', function (window) {\n var event = window.InputEvent ? new InputEvent('input') : {};\n var support = 'inputType' in event;\n return support;\n}], ['inputeventslevel2', function (window) {\n var element = window.document.createElement('div');\n element.contentEditable = true;\n var support = 'onbeforeinput' in element;\n return support;\n}]];\n\nvar features = [];\n\nif (isBrowser) {\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = FEATURE_RULES[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _ref5 = _step3.value;\n\n var _ref6 = slicedToArray(_ref5, 2);\n\n var _name2 = _ref6[0];\n var test = _ref6[1];\n\n if (test(window)) {\n features.push(_name2);\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n}\n\n/**\n * Export.\n *\n * @type {Boolean}\n */\n\nvar IS_CHROME = browser === 'chrome';\nvar IS_OPERA = browser === 'opera';\nvar IS_FIREFOX = browser === 'firefox';\nvar IS_SAFARI = browser === 'safari';\nvar IS_IE = browser === 'ie';\nvar IS_EDGE = browser === 'edge';\n\nvar IS_ANDROID = os === 'android';\nvar IS_IOS = os === 'ios';\nvar IS_MAC = os === 'macos';\nvar IS_WINDOWS = os === 'windows';\n\nvar HAS_INPUT_EVENTS_LEVEL_1 = features.includes('inputeventslevel1');\nvar HAS_INPUT_EVENTS_LEVEL_2 = features.includes('inputeventslevel2');\n\nexport { IS_CHROME, IS_OPERA, IS_FIREFOX, IS_SAFARI, IS_IE, IS_EDGE, IS_ANDROID, IS_IOS, IS_MAC, IS_WINDOWS, HAS_INPUT_EVENTS_LEVEL_1, HAS_INPUT_EVENTS_LEVEL_2 };\n//# sourceMappingURL=slate-dev-environment.es.js.map\n","import { Node, Value } from 'slate';\nimport { atob, btoa } from 'isomorphic-base64';\n\n/**\n * Encode a JSON `object` as base-64 `string`.\n *\n * @param {Object} object\n * @return {String}\n */\n\nfunction encode(object) {\n var string = JSON.stringify(object);\n var encoded = btoa(encodeURIComponent(string));\n return encoded;\n}\n\n/**\n * Decode a base-64 `string` to a JSON `object`.\n *\n * @param {String} string\n * @return {Object}\n */\n\nfunction decode(string) {\n var decoded = decodeURIComponent(atob(string));\n var object = JSON.parse(decoded);\n return object;\n}\n\n/**\n * Deserialize a Value `string`.\n *\n * @param {String} string\n * @return {Value}\n */\n\nfunction deserialize(string, options) {\n var raw = decode(string);\n var value = Value.fromJSON(raw, options);\n return value;\n}\n\n/**\n * Deserialize a Node `string`.\n *\n * @param {String} string\n * @return {Node}\n */\n\nfunction deserializeNode(string, options) {\n var raw = decode(string);\n var node = Node.fromJSON(raw, options);\n return node;\n}\n\n/**\n * Serialize a `value`.\n *\n * @param {Value} value\n * @return {String}\n */\n\nfunction serialize(value, options) {\n var raw = value.toJSON(options);\n var encoded = encode(raw);\n return encoded;\n}\n\n/**\n * Serialize a `node`.\n *\n * @param {Node} node\n * @return {String}\n */\n\nfunction serializeNode(node, options) {\n var raw = node.toJSON(options);\n var encoded = encode(raw);\n return encoded;\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar index = {\n deserialize: deserialize,\n deserializeNode: deserializeNode,\n serialize: serialize,\n serializeNode: serializeNode\n};\n\nexport default index;\n//# sourceMappingURL=slate-base64-serializer.es.js.map\n","import { isKeyHotkey } from 'is-hotkey';\nimport { IS_IOS, IS_MAC } from 'slate-dev-environment';\n\n/**\n * Hotkey mappings for each platform.\n *\n * @type {Object}\n */\n\nvar HOTKEYS = {\n bold: 'mod+b',\n compose: ['down', 'left', 'right', 'up', 'backspace', 'enter'],\n moveBackward: 'left',\n moveForward: 'right',\n moveWordBackward: 'ctrl+left',\n moveWordForward: 'ctrl+right',\n deleteBackward: 'shift?+backspace',\n deleteForward: 'shift?+delete',\n extendBackward: 'shift+left',\n extendForward: 'shift+right',\n italic: 'mod+i',\n splitBlock: 'shift?+enter',\n undo: 'mod+z'\n};\n\nvar APPLE_HOTKEYS = {\n moveLineBackward: 'opt+up',\n moveLineForward: 'opt+down',\n moveWordBackward: 'opt+left',\n moveWordForward: 'opt+right',\n deleteBackward: ['ctrl+backspace', 'ctrl+h'],\n deleteForward: ['ctrl+delete', 'ctrl+d'],\n deleteLineBackward: 'cmd+shift?+backspace',\n deleteLineForward: ['cmd+shift?+delete', 'ctrl+k'],\n deleteWordBackward: 'opt+shift?+backspace',\n deleteWordForward: 'opt+shift?+delete',\n extendLineBackward: 'opt+shift+up',\n extendLineForward: 'opt+shift+down',\n redo: 'cmd+shift+z',\n transposeCharacter: 'ctrl+t'\n};\n\nvar WINDOWS_HOTKEYS = {\n deleteWordBackward: 'ctrl+shift?+backspace',\n deleteWordForward: 'ctrl+shift?+delete',\n redo: 'ctrl+y'\n\n /**\n * Hotkeys.\n *\n * @type {Object}\n */\n\n};var Hotkeys = {};\n\nvar IS_APPLE = IS_IOS || IS_MAC;\nvar IS_WINDOWS = !IS_APPLE;\nvar KEYS = [].concat(Object.keys(HOTKEYS)).concat(Object.keys(APPLE_HOTKEYS)).concat(Object.keys(WINDOWS_HOTKEYS));\n\nKEYS.forEach(function (key) {\n var method = 'is' + key[0].toUpperCase() + key.slice(1);\n if (Hotkeys[method]) return;\n\n var generic = HOTKEYS[key];\n var apple = APPLE_HOTKEYS[key];\n var windows = WINDOWS_HOTKEYS[key];\n\n var isGeneric = generic && isKeyHotkey(generic);\n var isApple = apple && isKeyHotkey(apple);\n var isWindows = windows && isKeyHotkey(windows);\n\n Hotkeys[method] = function (event) {\n if (isGeneric && isGeneric(event)) return true;\n if (IS_APPLE && isApple && isApple(event)) return true;\n if (IS_WINDOWS && isWindows && isWindows(event)) return true;\n return false;\n };\n});\n\nexport default Hotkeys;\n//# sourceMappingURL=slate-hotkeys.es.js.map\n","var simpleIsEqual = function simpleIsEqual(a, b) {\n return a === b;\n};\n\nfunction index (resultFn, isEqual) {\n if (isEqual === void 0) {\n isEqual = simpleIsEqual;\n }\n\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n\n var isNewArgEqualToLast = function isNewArgEqualToLast(newArg, index) {\n return isEqual(newArg, lastArgs[index]);\n };\n\n var result = function result() {\n for (var _len = arguments.length, newArgs = new Array(_len), _key = 0; _key < _len; _key++) {\n newArgs[_key] = arguments[_key];\n }\n\n if (calledOnce && lastThis === this && newArgs.length === lastArgs.length && newArgs.every(isNewArgEqualToLast)) {\n return lastResult;\n }\n\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n };\n\n return result;\n}\n\nexport default index;\n","import Debug from 'debug';\nimport React from 'react';\nimport Types from 'prop-types';\nimport SlateTypes from 'slate-prop-types';\nimport ImmutableTypes from 'react-immutable-proptypes';\nimport { PathUtils, Node, Value, Text, Schema, Stack } from 'slate';\nimport { Set } from 'immutable';\nimport warning from 'slate-dev-warning';\nimport getWindow from 'get-window';\nimport { IS_IE, IS_EDGE, IS_SAFARI, IS_IOS, IS_FIREFOX, HAS_INPUT_EVENTS_LEVEL_2 } from 'slate-dev-environment';\nimport isBackward from 'selection-is-backward';\nimport throttle from 'lodash/throttle';\nimport Base64 from 'slate-base64-serializer';\nimport Plain from 'slate-plain-serializer';\nimport Hotkeys from 'slate-hotkeys';\nimport { findDOMNode } from 'react-dom';\nimport memoizeOne from 'memoize-one';\n\n/**\n * Event handlers used by Slate plugins.\n *\n * @type {Array}\n */\n\nvar EVENT_HANDLERS = ['onBeforeInput', 'onBlur', 'onClick', 'onContextMenu', 'onCompositionEnd', 'onCompositionStart', 'onCopy', 'onCut', 'onDragEnd', 'onDragEnter', 'onDragExit', 'onDragLeave', 'onDragOver', 'onDragStart', 'onDrop', 'onInput', 'onFocus', 'onKeyDown', 'onKeyUp', 'onPaste', 'onSelect'];\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\n\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n/**\n * Props that can be defined by plugins.\n *\n * @type {Array}\n */\n\nvar PLUGIN_PROPS = [].concat(toConsumableArray(EVENT_HANDLERS), ['decorateNode', 'onChange', 'renderEditor', 'renderMark', 'renderNode', 'renderPlaceholder', 'renderPortal', 'schema', 'validateNode']);\n\n/**\n * Offset key parser regex.\n *\n * @type {RegExp}\n */\n\nvar PARSER = /^([\\w-]+)(?::(\\d+))?$/;\n\n/**\n * Parse an offset key `string`.\n *\n * @param {String} string\n * @return {Object}\n */\n\nfunction parse(string) {\n var matches = PARSER.exec(string);\n\n if (!matches) {\n throw new Error(\"Invalid offset key string \\\"\" + string + \"\\\".\");\n }\n\n var _matches = slicedToArray(matches, 3),\n original = _matches[0],\n key = _matches[1],\n index = _matches[2]; // eslint-disable-line no-unused-vars\n\n\n return {\n key: key,\n index: parseInt(index, 10)\n };\n}\n\n/**\n * Stringify an offset key `object`.\n *\n * @param {Object} object\n * @property {String} key\n * @property {Number} index\n * @return {String}\n */\n\nfunction stringify(object) {\n return object.key + \":\" + object.index;\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar OffsetKey = {\n parse: parse,\n stringify: stringify\n};\n\n/**\n * Debugger.\n *\n * @type {Function}\n */\n\nvar debug = Debug('slate:leaves');\n\n/**\n * Leaf.\n *\n * @type {Component}\n */\n\nvar Leaf = function (_React$Component) {\n inherits(Leaf, _React$Component);\n\n function Leaf() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Leaf);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Leaf.__proto__ || Object.getPrototypeOf(Leaf)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Debug.\n *\n * @param {String} message\n * @param {Mixed} ...args\n */\n\n createClass(Leaf, [{\n key: 'shouldComponentUpdate',\n\n\n /**\n * Should component update?\n *\n * @param {Object} props\n * @return {Boolean}\n */\n\n value: function shouldComponentUpdate(props) {\n // If any of the regular properties have changed, re-render.\n if (props.index != this.props.index || props.marks != this.props.marks || props.text != this.props.text || props.parent != this.props.parent) {\n return true;\n }\n\n // Otherwise, don't update.\n return false;\n }\n\n /**\n * Render the leaf.\n *\n * @return {Element}\n */\n\n }, {\n key: 'render',\n value: function render() {\n this.debug('render', this);\n\n var _props = this.props,\n node = _props.node,\n index = _props.index;\n\n var offsetKey = OffsetKey.stringify({\n key: node.key,\n index: index\n });\n\n return React.createElement(\n 'span',\n { 'data-offset-key': offsetKey },\n this.renderMarks()\n );\n }\n\n /**\n * Render all of the leaf's mark components.\n *\n * @return {Element}\n */\n\n }, {\n key: 'renderMarks',\n value: function renderMarks() {\n var _props2 = this.props,\n marks = _props2.marks,\n node = _props2.node,\n offset = _props2.offset,\n text = _props2.text,\n editor = _props2.editor;\n var stack = editor.stack;\n\n var leaf = this.renderText();\n var attributes = {\n 'data-slate-leaf': true\n };\n\n return marks.reduce(function (children, mark) {\n var props = {\n editor: editor,\n mark: mark,\n marks: marks,\n node: node,\n offset: offset,\n text: text,\n children: children,\n attributes: attributes\n };\n var element = stack.find('renderMark', props);\n return element || children;\n }, leaf);\n }\n\n /**\n * Render the text content of the leaf, accounting for browsers.\n *\n * @return {Element}\n */\n\n }, {\n key: 'renderText',\n value: function renderText() {\n var _props3 = this.props,\n block = _props3.block,\n node = _props3.node,\n editor = _props3.editor,\n parent = _props3.parent,\n text = _props3.text,\n index = _props3.index,\n leaves = _props3.leaves;\n var value = editor.value;\n var schema = value.schema;\n\n // COMPAT: Render text inside void nodes with a zero-width space.\n // So the node can contain selection but the text is not visible.\n\n if (schema.isVoid(parent)) {\n return React.createElement(\n 'span',\n { 'data-slate-zero-width': 'z' },\n '\\uFEFF'\n );\n }\n\n // COMPAT: If this is the last text node in an empty block, render a zero-\n // width space that will convert into a line break when copying and pasting\n // to support expected plain text.\n if (text === '' && parent.object === 'block' && parent.text === '' && parent.nodes.last() === node) {\n return React.createElement(\n 'span',\n { 'data-slate-zero-width': 'n' },\n '\\uFEFF'\n );\n }\n\n // COMPAT: If the text is empty, it's because it's on the edge of an inline\n // node, so we render a zero-width space so that the selection can be\n // inserted next to it still.\n if (text === '') {\n return React.createElement(\n 'span',\n { 'data-slate-zero-width': 'z' },\n '\\uFEFF'\n );\n }\n\n // COMPAT: Browsers will collapse trailing new lines at the end of blocks,\n // so we need to add an extra trailing new lines to prevent that.\n var lastText = block.getLastText();\n var lastChar = text.charAt(text.length - 1);\n var isLastText = node === lastText;\n var isLastLeaf = index === leaves.size - 1;\n if (isLastText && isLastLeaf && lastChar === '\\n') return text + '\\n';\n\n // Otherwise, just return the text.\n return text;\n }\n }]);\n return Leaf;\n}(React.Component);\n\n/**\n * Export.\n *\n * @type {Component}\n */\n\nLeaf.propTypes = {\n block: SlateTypes.block.isRequired,\n editor: Types.object.isRequired,\n index: Types.number.isRequired,\n leaves: SlateTypes.leaves.isRequired,\n marks: SlateTypes.marks.isRequired,\n node: SlateTypes.node.isRequired,\n offset: Types.number.isRequired,\n parent: SlateTypes.node.isRequired,\n text: Types.string.isRequired };\n\nvar _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.debug = function (message) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n debug.apply(undefined, [message, _this2.props.node.key + '-' + _this2.props.index].concat(args));\n };\n};\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$1 = Debug('slate:node');\n\n/**\n * Text.\n *\n * @type {Component}\n */\n\nvar Text$1 = function (_React$Component) {\n inherits(Text$$1, _React$Component);\n\n function Text$$1() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Text$$1);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Text$$1.__proto__ || Object.getPrototypeOf(Text$$1)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps$1.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Default prop types.\n *\n * @type {Object}\n */\n\n /**\n * Debug.\n *\n * @param {String} message\n * @param {Mixed} ...args\n */\n\n /**\n * Should the node update?\n *\n * @param {Object} nextProps\n * @param {Object} value\n * @return {Boolean}\n */\n\n createClass(Text$$1, [{\n key: 'render',\n\n\n /**\n * Render.\n *\n * @return {Element}\n */\n\n value: function render() {\n var _this2 = this;\n\n this.debug('render', this);\n\n var _props = this.props,\n decorations = _props.decorations,\n editor = _props.editor,\n node = _props.node,\n style = _props.style;\n var value = editor.value;\n var document = value.document;\n var key = node.key;\n\n\n var decs = decorations.filter(function (d) {\n var start = d.start,\n end = d.end;\n\n // If either of the decoration's keys match, include it.\n\n if (start.key === key || end.key === key) return true;\n\n // Otherwise, if the decoration is in a single node, it's not ours.\n if (start.key === end.key) return false;\n\n // If the node's path is before the start path, ignore it.\n var path = document.assertPath(key);\n if (PathUtils.compare(path, start.path) === -1) return false;\n\n // If the node's path is after the end path, ignore it.\n if (PathUtils.compare(path, end.path) === 1) return false;\n\n // Otherwise, include it.\n return true;\n });\n\n // PERF: Take advantage of cache by avoiding arguments\n var leaves = decs.size === 0 ? node.getLeaves() : node.getLeaves(decs);\n var offset = 0;\n\n var children = leaves.map(function (leaf, i) {\n var child = _this2.renderLeaf(leaves, leaf, i, offset);\n offset += leaf.text.length;\n return child;\n });\n\n return React.createElement(\n 'span',\n { 'data-key': key, style: style },\n children\n );\n }\n\n /**\n * Render a single leaf given a `leaf` and `offset`.\n *\n * @param {List<Leaf>} leaves\n * @param {Leaf} leaf\n * @param {Number} index\n * @param {Number} offset\n * @return {Element} leaf\n */\n\n }]);\n return Text$$1;\n}(React.Component);\n\n/**\n * Export.\n *\n * @type {Component}\n */\n\nText$1.propTypes = {\n block: SlateTypes.block,\n decorations: ImmutableTypes.list.isRequired,\n editor: Types.object.isRequired,\n node: SlateTypes.node.isRequired,\n parent: SlateTypes.node.isRequired,\n style: Types.object };\nText$1.defaultProps = {\n style: null };\n\nvar _initialiseProps$1 = function _initialiseProps() {\n var _this3 = this;\n\n this.debug = function (message) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var node = _this3.props.node;\n var key = node.key;\n\n debug$1.apply(undefined, [message, key + ' (text)'].concat(args));\n };\n\n this.shouldComponentUpdate = function (nextProps) {\n var props = _this3.props;\n\n var n = nextProps;\n var p = props;\n\n // If the node has changed, update. PERF: There are cases where it will have\n // changed, but it's properties will be exactly the same (eg. copy-paste)\n // which this won't catch. But that's rare and not a drag on performance, so\n // for simplicity we just let them through.\n if (n.node != p.node) return true;\n\n // If the node parent is a block node, and it was the last child of the\n // block, re-render to cleanup extra `\\n`.\n if (n.parent.object == 'block') {\n var pLast = p.parent.nodes.last();\n var nLast = n.parent.nodes.last();\n if (p.node == pLast && n.node != nLast) return true;\n }\n\n // Re-render if the current decorations have changed.\n if (!n.decorations.equals(p.decorations)) return true;\n\n // Otherwise, don't update.\n return false;\n };\n\n this.renderLeaf = function (leaves, leaf, index, offset) {\n var _props2 = _this3.props,\n block = _props2.block,\n node = _props2.node,\n parent = _props2.parent,\n editor = _props2.editor;\n var text = leaf.text,\n marks = leaf.marks;\n\n\n return React.createElement(Leaf, {\n key: node.key + '-' + index,\n block: block,\n editor: editor,\n index: index,\n marks: marks,\n node: node,\n offset: offset,\n parent: parent,\n leaves: leaves,\n text: text\n });\n };\n};\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$2 = Debug('slate:void');\n\n/**\n * Void.\n *\n * @type {Component}\n */\n\nvar Void = function (_React$Component) {\n inherits(Void, _React$Component);\n\n function Void() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Void);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Void.__proto__ || Object.getPrototypeOf(Void)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps$2.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Debug.\n *\n * @param {String} message\n * @param {Mixed} ...args\n */\n\n createClass(Void, [{\n key: 'render',\n\n\n /**\n * Render.\n *\n * @return {Element}\n */\n\n value: function render() {\n var props = this.props;\n var children = props.children,\n node = props.node,\n readOnly = props.readOnly;\n\n var Tag = node.object == 'block' ? 'div' : 'span';\n var style = {\n height: '0',\n color: 'transparent',\n outline: 'none',\n position: 'absolute'\n };\n\n var spacer = React.createElement(\n Tag,\n { 'data-slate-spacer': true, style: style },\n this.renderText()\n );\n\n var content = React.createElement(\n Tag,\n { contentEditable: readOnly ? null : false },\n children\n );\n\n this.debug('render', { props: props });\n\n return React.createElement(\n Tag,\n {\n 'data-slate-void': true,\n 'data-key': node.key,\n contentEditable: readOnly || node.object == 'block' ? null : false\n },\n readOnly ? null : spacer,\n content\n );\n }\n\n /**\n * Render the void node's text node, which will catch the cursor when it the\n * void node is navigated to with the arrow keys.\n *\n * Having this text node there means the browser continues to manage the\n * selection natively, so it keeps track of the right offset when moving\n * across the block.\n *\n * @return {Element}\n */\n\n }]);\n return Void;\n}(React.Component);\n\n/**\n * Export.\n *\n * @type {Component}\n */\n\nVoid.propTypes = {\n block: SlateTypes.block,\n children: Types.any.isRequired,\n editor: Types.object.isRequired,\n node: SlateTypes.node.isRequired,\n parent: SlateTypes.node.isRequired,\n readOnly: Types.bool.isRequired };\n\nvar _initialiseProps$2 = function _initialiseProps() {\n var _this2 = this;\n\n this.debug = function (message) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var node = _this2.props.node;\n var key = node.key,\n type = node.type;\n\n var id = key + ' (' + type + ')';\n debug$2.apply(undefined, [message, '' + id].concat(args));\n };\n\n this.renderText = function () {\n var _props = _this2.props,\n block = _props.block,\n decorations = _props.decorations,\n node = _props.node,\n readOnly = _props.readOnly,\n editor = _props.editor;\n\n var child = node.getFirstText();\n return React.createElement(Text$1, {\n block: node.object == 'block' ? node : block,\n decorations: decorations,\n editor: editor,\n key: child.key,\n node: child,\n parent: node,\n readOnly: readOnly\n });\n };\n};\n\n/**\n * Split the decorations in lists of relevant decorations for each child.\n *\n * @param {Node} node\n * @param {List} decorations\n * @return {Array<List<Decoration>>}\n */\n\nfunction getChildrenDecorations(node, decorations) {\n var activeDecorations = Set().asMutable();\n var childrenDecorations = [];\n\n orderChildDecorations(node, decorations).forEach(function (item) {\n if (item.isRangeStart) {\n // Item is a decoration start\n activeDecorations.add(item.decoration);\n } else if (item.isRangeEnd) {\n // item is a decoration end\n activeDecorations.remove(item.decoration);\n } else {\n // Item is a child node\n childrenDecorations.push(activeDecorations.toList());\n }\n });\n\n return childrenDecorations;\n}\n\n/**\n * Orders the children of provided node and its decoration endpoints (start, end)\n * so that decorations can be passed only to relevant children (see use in Node.render())\n *\n * @param {Node} node\n * @param {List} decorations\n * @return {Array<Item>}\n *\n * where type Item =\n * {\n * child: Node,\n * // Index of the child in its parent\n * index: number\n * }\n * or {\n * // True if this represents the start of the given decoration\n * isRangeStart: boolean,\n * // True if this represents the end of the given decoration\n * isRangeEnd: boolean,\n * decoration: Range\n * }\n */\n\nfunction orderChildDecorations(node, decorations) {\n if (decorations.isEmpty()) {\n return node.nodes.toArray().map(function (child, index) {\n return {\n child: child,\n index: index\n };\n });\n }\n\n // Map each key to its global order\n var keyOrders = defineProperty({}, node.key, 0);\n var globalOrder = 1;\n\n node.forEachDescendant(function (child) {\n keyOrders[child.key] = globalOrder;\n globalOrder = globalOrder + 1;\n });\n\n var childNodes = node.nodes.toArray();\n\n var endPoints = childNodes.map(function (child, index) {\n return {\n child: child,\n index: index,\n order: keyOrders[child.key]\n };\n });\n\n decorations.forEach(function (decoration) {\n // Range start.\n // A rangeStart should be before the child containing its startKey, in order\n // to consider it active before going down the child.\n var startKeyOrder = keyOrders[decoration.start.key];\n var containingChildOrder = startKeyOrder === undefined ? 0 : getContainingChildOrder(childNodes, keyOrders, startKeyOrder);\n\n endPoints.push({\n isRangeStart: true,\n order: containingChildOrder - 0.5,\n decoration: decoration\n });\n\n // Range end.\n var endKeyOrder = (keyOrders[decoration.end.key] || globalOrder) + 0.5;\n\n endPoints.push({\n isRangeEnd: true,\n order: endKeyOrder,\n decoration: decoration\n });\n });\n\n return endPoints.sort(function (a, b) {\n return a.order > b.order ? 1 : -1;\n });\n}\n\n/*\n * Returns the key order of the child right before the given order.\n */\n\nfunction getContainingChildOrder(children, keyOrders, order) {\n // Find the first child that is after the given key\n var nextChildIndex = children.findIndex(function (child) {\n return order < keyOrders[child.key];\n });\n\n if (nextChildIndex <= 0) {\n return 0;\n }\n\n var containingChild = children[nextChildIndex - 1];\n return keyOrders[containingChild.key];\n}\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$3 = Debug('slate:node');\n\n/**\n * Node.\n *\n * @type {Component}\n */\n\nvar Node$1 = function (_React$Component) {\n inherits(Node$$1, _React$Component);\n\n function Node$$1() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Node$$1);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Node$$1.__proto__ || Object.getPrototypeOf(Node$$1)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps$3.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Debug.\n *\n * @param {String} message\n * @param {Mixed} ...args\n */\n\n createClass(Node$$1, [{\n key: 'shouldComponentUpdate',\n\n\n /**\n * Should the node update?\n *\n * @param {Object} nextProps\n * @param {Object} value\n * @return {Boolean}\n */\n\n value: function shouldComponentUpdate(nextProps) {\n var props = this.props;\n var stack = props.editor.stack;\n\n var shouldUpdate = stack.find('shouldNodeComponentUpdate', props, nextProps);\n var n = nextProps;\n var p = props;\n\n // If the `Component` has a custom logic to determine whether the component\n // needs to be updated or not, return true if it returns true. If it returns\n // false, we need to ignore it, because it shouldn't be allowed it.\n if (shouldUpdate != null) {\n if (shouldUpdate) {\n return true;\n }\n\n warning(shouldUpdate !== false, \"Returning false in `shouldNodeComponentUpdate` does not disable Slate's internal `shouldComponentUpdate` logic. If you want to prevent updates, use React's `shouldComponentUpdate` instead.\");\n }\n\n // If the `readOnly` status has changed, re-render in case there is any\n // user-land logic that depends on it, like nested editable contents.\n if (n.readOnly != p.readOnly) return true;\n\n // If the node has changed, update. PERF: There are cases where it will have\n // changed, but it's properties will be exactly the same (eg. copy-paste)\n // which this won't catch. But that's rare and not a drag on performance, so\n // for simplicity we just let them through.\n if (n.node != p.node) return true;\n\n // If the selection value of the node or of some of its children has changed,\n // re-render in case there is any user-land logic depends on it to render.\n // if the node is selected update it, even if it was already selected: the\n // selection value of some of its children could have been changed and they\n // need to be rendered again.\n if (n.isSelected || p.isSelected) return true;\n if (n.isFocused || p.isFocused) return true;\n\n // If the decorations have changed, update.\n if (!n.decorations.equals(p.decorations)) return true;\n\n // Otherwise, don't update.\n return false;\n }\n\n /**\n * Render.\n *\n * @return {Element}\n */\n\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n this.debug('render', this);\n var _props = this.props,\n editor = _props.editor,\n isSelected = _props.isSelected,\n isFocused = _props.isFocused,\n node = _props.node,\n decorations = _props.decorations,\n parent = _props.parent,\n readOnly = _props.readOnly;\n var value = editor.value;\n var selection = value.selection,\n schema = value.schema;\n var stack = editor.stack;\n\n var indexes = node.getSelectionIndexes(selection, isSelected);\n var decs = decorations.concat(node.getDecorations(stack));\n var childrenDecorations = getChildrenDecorations(node, decs);\n\n var children = [];\n\n node.nodes.forEach(function (child, i) {\n var isChildSelected = !!indexes && indexes.start <= i && i < indexes.end;\n\n children.push(_this2.renderNode(child, isChildSelected, childrenDecorations[i]));\n });\n\n // Attributes that the developer must mix into the element in their\n // custom node renderer component.\n var attributes = { 'data-key': node.key\n\n // If it's a block node with inline children, add the proper `dir` attribute\n // for text direction.\n };if (node.object == 'block' && node.nodes.first().object != 'block') {\n var direction = node.getTextDirection();\n if (direction == 'rtl') attributes.dir = 'rtl';\n }\n\n var props = {\n key: node.key,\n editor: editor,\n isFocused: isFocused,\n isSelected: isSelected,\n node: node,\n parent: parent,\n readOnly: readOnly\n };\n\n var placeholder = stack.find('renderPlaceholder', props);\n\n if (placeholder) {\n placeholder = React.cloneElement(placeholder, {\n key: node.key + '-placeholder'\n });\n\n children = [placeholder].concat(toConsumableArray(children));\n }\n\n var element = stack.find('renderNode', _extends({}, props, {\n attributes: attributes,\n children: children\n }));\n\n return schema.isVoid(node) ? React.createElement(\n Void,\n this.props,\n element\n ) : element;\n }\n\n /**\n * Render a `child` node.\n *\n * @param {Node} child\n * @param {Boolean} isSelected\n * @param {Array<Decoration>} decorations\n * @return {Element}\n */\n\n }]);\n return Node$$1;\n}(React.Component);\n\n/**\n * Export.\n *\n * @type {Component}\n */\n\nNode$1.propTypes = {\n block: SlateTypes.block,\n decorations: ImmutableTypes.list.isRequired,\n editor: Types.object.isRequired,\n isFocused: Types.bool.isRequired,\n isSelected: Types.bool.isRequired,\n node: SlateTypes.node.isRequired,\n parent: SlateTypes.node.isRequired,\n readOnly: Types.bool.isRequired };\n\nvar _initialiseProps$3 = function _initialiseProps() {\n var _this3 = this;\n\n this.debug = function (message) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var node = _this3.props.node;\n var key = node.key,\n type = node.type;\n\n debug$3.apply(undefined, [message, key + ' (' + type + ')'].concat(args));\n };\n\n this.renderNode = function (child, isSelected, decorations) {\n var _props2 = _this3.props,\n block = _props2.block,\n editor = _props2.editor,\n node = _props2.node,\n readOnly = _props2.readOnly,\n isFocused = _props2.isFocused;\n\n var Component = child.object == 'text' ? Text$1 : Node$1;\n\n return React.createElement(Component, {\n block: node.object == 'block' ? node : block,\n decorations: decorations,\n editor: editor,\n isSelected: isSelected,\n isFocused: isFocused && isSelected,\n key: child.key,\n node: child,\n parent: node,\n readOnly: readOnly\n });\n };\n};\n\n/**\n * Find the DOM node for a `key`.\n *\n * @param {String|Node} key\n * @param {Window} win (optional)\n * @return {Element}\n */\n\nfunction findDOMNode$1(key) {\n var win = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;\n\n if (Node.isNode(key)) {\n key = key.key;\n }\n\n var el = win.document.querySelector('[data-key=\"' + key + '\"]');\n\n if (!el) {\n throw new Error('Unable to find a DOM node for \"' + key + '\". This is often because of forgetting to add `props.attributes` to a custom component.');\n }\n\n return el;\n}\n\n/**\n * Find a native DOM selection point from a Slate `point`.\n *\n * @param {Point} point\n * @param {Window} win (optional)\n * @return {Object|Null}\n */\n\nfunction findDOMPoint(point) {\n var win = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;\n\n var el = findDOMNode$1(point.key, win);\n var start = 0;\n var n = void 0;\n\n // COMPAT: In IE, this method's arguments are not optional, so we have to\n // pass in all four even though the last two are defaults. (2017/10/25)\n var iterator = win.document.createNodeIterator(el, NodeFilter.SHOW_TEXT, function () {\n return NodeFilter.FILTER_ACCEPT;\n }, false);\n\n while (n = iterator.nextNode()) {\n var length = n.textContent.length;\n\n var end = start + length;\n\n if (point.offset <= end) {\n var o = point.offset - start;\n return { node: n, offset: o >= 0 ? o : 0 };\n }\n\n start = end;\n }\n\n return null;\n}\n\n/**\n * Find a native DOM range Slate `range`.\n *\n * @param {Range} range\n * @param {Window} win (optional)\n * @return {Object|Null}\n */\n\nfunction findDOMRange(range) {\n var win = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;\n var anchor = range.anchor,\n focus = range.focus,\n isBackward$$1 = range.isBackward,\n isCollapsed = range.isCollapsed;\n\n var domAnchor = findDOMPoint(anchor, win);\n var domFocus = isCollapsed ? domAnchor : findDOMPoint(focus, win);\n\n if (!domAnchor || !domFocus) return null;\n\n var r = win.document.createRange();\n var start = isBackward$$1 ? domFocus : domAnchor;\n var end = isBackward$$1 ? domAnchor : domFocus;\n r.setStart(start.node, start.offset);\n r.setEnd(end.node, end.offset);\n return r;\n}\n\n/**\n * Constants.\n *\n * @type {String}\n */\n\nvar ZERO_WIDTH_ATTRIBUTE = 'data-slate-zero-width';\nvar ZERO_WIDTH_SELECTOR = '[' + ZERO_WIDTH_ATTRIBUTE + ']';\nvar OFFSET_KEY_ATTRIBUTE = 'data-offset-key';\nvar RANGE_SELECTOR = '[' + OFFSET_KEY_ATTRIBUTE + ']';\nvar TEXT_SELECTOR = '[data-key]';\nvar VOID_SELECTOR = '[data-slate-void]';\n\n/**\n * Find a Slate point from a DOM selection's `nativeNode` and `nativeOffset`.\n *\n * @param {Element} nativeNode\n * @param {Number} nativeOffset\n * @param {Value} value\n * @return {Point}\n */\n\nfunction findPoint(nativeNode, nativeOffset, value) {\n var _normalizeNodeAndOffs = normalizeNodeAndOffset(nativeNode, nativeOffset),\n nearestNode = _normalizeNodeAndOffs.node,\n nearestOffset = _normalizeNodeAndOffs.offset;\n\n var window = getWindow(nativeNode);\n var parentNode = nearestNode.parentNode;\n\n var rangeNode = parentNode.closest(RANGE_SELECTOR);\n var offset = void 0;\n var node = void 0;\n\n // Calculate how far into the text node the `nearestNode` is, so that we can\n // determine what the offset relative to the text node is.\n if (rangeNode) {\n var range = window.document.createRange();\n var textNode = rangeNode.closest(TEXT_SELECTOR);\n range.setStart(textNode, 0);\n range.setEnd(nearestNode, nearestOffset);\n node = textNode;\n offset = range.toString().length;\n } else {\n // For void nodes, the element with the offset key will be a cousin, not an\n // ancestor, so find it by going down from the nearest void parent.\n var voidNode = parentNode.closest(VOID_SELECTOR);\n if (!voidNode) return null;\n rangeNode = voidNode.querySelector(RANGE_SELECTOR);\n if (!rangeNode) return null;\n node = rangeNode;\n offset = node.textContent.length;\n }\n\n // COMPAT: If the parent node is a Slate zero-width space, this is because the\n // text node should have no characters. However, during IME composition the\n // ASCII characters will be prepended to the zero-width space, so subtract 1\n // from the offset to account for the zero-width space character.\n if (offset == node.textContent.length && parentNode.hasAttribute(ZERO_WIDTH_ATTRIBUTE)) {\n offset--;\n }\n\n // Get the string value of the offset key attribute.\n var offsetKey = rangeNode.getAttribute(OFFSET_KEY_ATTRIBUTE);\n if (!offsetKey) return null;\n\n var _OffsetKey$parse = OffsetKey.parse(offsetKey),\n key = _OffsetKey$parse.key;\n\n // COMPAT: If someone is clicking from one Slate editor into another, the\n // select event fires twice, once for the old editor's `element` first, and\n // then afterwards for the correct `element`. (2017/03/03)\n\n\n if (!value.document.hasDescendant(key)) return null;\n\n var point = value.document.createPoint({ key: key, offset: offset });\n return point;\n}\n\n/**\n * From a DOM selection's `node` and `offset`, normalize so that it always\n * refers to a text node.\n *\n * @param {Element} node\n * @param {Number} offset\n * @return {Object}\n */\n\nfunction normalizeNodeAndOffset(node, offset) {\n // If it's an element node, its offset refers to the index of its children\n // including comment nodes, so try to find the right text child node.\n if (node.nodeType == 1 && node.childNodes.length) {\n var isLast = offset == node.childNodes.length;\n var direction = isLast ? 'backward' : 'forward';\n var index = isLast ? offset - 1 : offset;\n node = getEditableChild(node, index, direction);\n\n // If the node has children, traverse until we have a leaf node. Leaf nodes\n // can be either text nodes, or other void DOM nodes.\n while (node.nodeType == 1 && node.childNodes.length) {\n var i = isLast ? node.childNodes.length - 1 : 0;\n node = getEditableChild(node, i, direction);\n }\n\n // Determine the new offset inside the text node.\n offset = isLast ? node.textContent.length : 0;\n }\n\n // Return the node and offset.\n return { node: node, offset: offset };\n}\n\n/**\n * Get the nearest editable child at `index` in a `parent`, preferring\n * `direction`.\n *\n * @param {Element} parent\n * @param {Number} index\n * @param {String} direction ('forward' or 'backward')\n * @return {Element|Null}\n */\n\nfunction getEditableChild(parent, index, direction) {\n var childNodes = parent.childNodes;\n\n var child = childNodes[index];\n var i = index;\n var triedForward = false;\n var triedBackward = false;\n\n // While the child is a comment node, or an element node with no children,\n // keep iterating to find a sibling non-void, non-comment node.\n while (child.nodeType == 8 || child.nodeType == 1 && child.childNodes.length == 0 || child.nodeType == 1 && child.getAttribute('contenteditable') == 'false') {\n if (triedForward && triedBackward) break;\n\n if (i >= childNodes.length) {\n triedForward = true;\n i = index - 1;\n direction = 'backward';\n continue;\n }\n\n if (i < 0) {\n triedBackward = true;\n i = index + 1;\n direction = 'forward';\n continue;\n }\n\n child = childNodes[i];\n if (direction == 'forward') i++;\n if (direction == 'backward') i--;\n }\n\n return child || null;\n}\n\n/**\n * Find a Slate range from a DOM `native` selection.\n *\n * @param {Selection} native\n * @param {Value} value\n * @return {Range}\n */\n\nfunction findRange(native, value) {\n var el = native.anchorNode || native.startContainer;\n if (!el) return null;\n\n var window = getWindow(el);\n\n // If the `native` object is a DOM `Range` or `StaticRange` object, change it\n // into something that looks like a DOM `Selection` instead.\n if (native instanceof window.Range || window.StaticRange && native instanceof window.StaticRange) {\n native = {\n anchorNode: native.startContainer,\n anchorOffset: native.startOffset,\n focusNode: native.endContainer,\n focusOffset: native.endOffset\n };\n }\n\n var _native = native,\n anchorNode = _native.anchorNode,\n anchorOffset = _native.anchorOffset,\n focusNode = _native.focusNode,\n focusOffset = _native.focusOffset,\n isCollapsed = _native.isCollapsed;\n\n var anchor = findPoint(anchorNode, anchorOffset, value);\n var focus = isCollapsed ? anchor : findPoint(focusNode, focusOffset, value);\n if (!anchor || !focus) return null;\n\n // COMPAT: ??? The Edge browser seems to have a case where if you select the\n // last word of a span, it sets the endContainer to the containing span.\n // `selection-is-backward` doesn't handle this case.\n if (IS_IE || IS_EDGE) {\n var domAnchor = findDOMPoint(anchor);\n var domFocus = findDOMPoint(focus);\n\n native = {\n anchorNode: domAnchor.node,\n anchorOffset: domAnchor.offset,\n focusNode: domFocus.node,\n focusOffset: domFocus.offset\n };\n }\n\n var document = value.document;\n\n var range = document.createRange({\n anchor: anchor,\n focus: focus\n });\n\n return range;\n}\n\n/**\n * CSS overflow values that would cause scrolling.\n *\n * @type {Array}\n */\n\nvar OVERFLOWS = ['auto', 'overlay', 'scroll'];\n\n/**\n * Detect whether we are running IOS version 11\n */\n\nvar IS_IOS_11 = IS_IOS && !!window.navigator.userAgent.match(/os 11_/i);\n\n/**\n * Find the nearest parent with scrolling, or window.\n *\n * @param {el} Element\n */\n\nfunction findScrollContainer(el, window) {\n var parent = el.parentNode;\n var scroller = void 0;\n\n while (!scroller) {\n if (!parent.parentNode) break;\n\n var style = window.getComputedStyle(parent);\n var overflowY = style.overflowY;\n\n\n if (OVERFLOWS.includes(overflowY)) {\n scroller = parent;\n break;\n }\n\n parent = parent.parentNode;\n }\n\n // COMPAT: Because Chrome does not allow doucment.body.scrollTop, we're\n // assuming that window.scrollTo() should be used if the scrollable element\n // turns out to be document.body or document.documentElement. This will work\n // unless body is intentionally set to scrollable by restricting its height\n // (e.g. height: 100vh).\n if (!scroller) {\n return window.document.body;\n }\n\n return scroller;\n}\n\n/**\n * Scroll the current selection's focus point into view if needed.\n *\n * @param {Selection} selection\n */\n\nfunction scrollToSelection(selection) {\n if (IS_IOS_11) return;\n if (!selection.anchorNode) return;\n\n var window = getWindow(selection.anchorNode);\n var scroller = findScrollContainer(selection.anchorNode, window);\n var isWindow = scroller == window.document.body || scroller == window.document.documentElement;\n var backward = isBackward(selection);\n\n var range = selection.getRangeAt(0).cloneRange();\n range.collapse(backward);\n var cursorRect = range.getBoundingClientRect();\n\n // COMPAT: range.getBoundingClientRect() returns 0s in Safari when range is\n // collapsed. Expanding the range by 1 is a relatively effective workaround\n // for vertical scroll, although horizontal may be off by 1 character.\n // https://bugs.webkit.org/show_bug.cgi?id=138949\n // https://bugs.chromium.org/p/chromium/issues/detail?id=435438\n if (IS_SAFARI) {\n if (range.collapsed && cursorRect.top == 0 && cursorRect.height == 0) {\n if (range.startOffset == 0) {\n range.setEnd(range.endContainer, 1);\n } else {\n range.setStart(range.startContainer, range.startOffset - 1);\n }\n\n cursorRect = range.getBoundingClientRect();\n\n if (cursorRect.top == 0 && cursorRect.height == 0) {\n if (range.getClientRects().length) {\n cursorRect = range.getClientRects()[0];\n }\n }\n }\n }\n\n var width = void 0;\n var height = void 0;\n var yOffset = void 0;\n var xOffset = void 0;\n var scrollerTop = 0;\n var scrollerLeft = 0;\n var scrollerBordersY = 0;\n var scrollerBordersX = 0;\n var scrollerPaddingTop = 0;\n var scrollerPaddingBottom = 0;\n var scrollerPaddingLeft = 0;\n var scrollerPaddingRight = 0;\n\n if (isWindow) {\n var innerWidth = window.innerWidth,\n innerHeight = window.innerHeight,\n pageYOffset = window.pageYOffset,\n pageXOffset = window.pageXOffset;\n\n width = innerWidth;\n height = innerHeight;\n yOffset = pageYOffset;\n xOffset = pageXOffset;\n } else {\n var offsetWidth = scroller.offsetWidth,\n offsetHeight = scroller.offsetHeight,\n scrollTop = scroller.scrollTop,\n scrollLeft = scroller.scrollLeft;\n\n var _window$getComputedSt = window.getComputedStyle(scroller),\n borderTopWidth = _window$getComputedSt.borderTopWidth,\n borderBottomWidth = _window$getComputedSt.borderBottomWidth,\n borderLeftWidth = _window$getComputedSt.borderLeftWidth,\n borderRightWidth = _window$getComputedSt.borderRightWidth,\n paddingTop = _window$getComputedSt.paddingTop,\n paddingBottom = _window$getComputedSt.paddingBottom,\n paddingLeft = _window$getComputedSt.paddingLeft,\n paddingRight = _window$getComputedSt.paddingRight;\n\n var scrollerRect = scroller.getBoundingClientRect();\n width = offsetWidth;\n height = offsetHeight;\n scrollerTop = scrollerRect.top + parseInt(borderTopWidth, 10);\n scrollerLeft = scrollerRect.left + parseInt(borderLeftWidth, 10);\n\n scrollerBordersY = parseInt(borderTopWidth, 10) + parseInt(borderBottomWidth, 10);\n\n scrollerBordersX = parseInt(borderLeftWidth, 10) + parseInt(borderRightWidth, 10);\n\n scrollerPaddingTop = parseInt(paddingTop, 10);\n scrollerPaddingBottom = parseInt(paddingBottom, 10);\n scrollerPaddingLeft = parseInt(paddingLeft, 10);\n scrollerPaddingRight = parseInt(paddingRight, 10);\n yOffset = scrollTop;\n xOffset = scrollLeft;\n }\n\n var cursorTop = cursorRect.top + yOffset - scrollerTop;\n var cursorLeft = cursorRect.left + xOffset - scrollerLeft;\n\n var x = xOffset;\n var y = yOffset;\n\n if (cursorLeft < xOffset) {\n // selection to the left of viewport\n x = cursorLeft - scrollerPaddingLeft;\n } else if (cursorLeft + cursorRect.width + scrollerBordersX > xOffset + width) {\n // selection to the right of viewport\n x = cursorLeft + scrollerBordersX + scrollerPaddingRight - width;\n }\n\n if (cursorTop < yOffset) {\n // selection above viewport\n y = cursorTop - scrollerPaddingTop;\n } else if (cursorTop + cursorRect.height + scrollerBordersY > yOffset + height) {\n // selection below viewport\n y = cursorTop + scrollerBordersY + scrollerPaddingBottom + cursorRect.height - height;\n }\n\n if (isWindow) {\n window.scrollTo(x, y);\n } else {\n scroller.scrollTop = y;\n scroller.scrollLeft = x;\n }\n}\n\n/**\n * COMPAT: if we are in <= IE11 and the selection contains\n * tables, `removeAllRanges()` will throw\n * \"unable to complete the operation due to error 800a025e\"\n *\n * @param {Selection} selection document selection\n */\n\nfunction removeAllRanges(selection) {\n var doc = window.document;\n\n if (doc && doc.body.createTextRange) {\n // All IE but Edge\n var range = doc.body.createTextRange();\n range.collapse();\n range.select();\n } else {\n selection.removeAllRanges();\n }\n}\n\nvar FIREFOX_NODE_TYPE_ACCESS_ERROR = /Permission denied to access property \"nodeType\"/;\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$4 = Debug('slate:content');\n\n/**\n * Content.\n *\n * @type {Component}\n */\n\nvar Content = function (_React$Component) {\n inherits(Content, _React$Component);\n\n function Content() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Content);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Content.__proto__ || Object.getPrototypeOf(Content)).call.apply(_ref, [this].concat(args))), _this), _this.tmp = {\n isUpdatingSelection: false\n\n /**\n * Create a set of bound event handlers.\n *\n * @type {Object}\n */\n\n }, _this.handlers = EVENT_HANDLERS.reduce(function (obj, handler) {\n obj[handler] = function (event) {\n return _this.onEvent(handler, event);\n };\n return obj;\n }, {}), _this.updateSelection = function () {\n var editor = _this.props.editor;\n var value = editor.value;\n var selection = value.selection;\n var isBackward$$1 = selection.isBackward;\n\n var window = getWindow(_this.element);\n var native = window.getSelection();\n\n // .getSelection() can return null in some cases\n // https://bugzilla.mozilla.org/show_bug.cgi?id=827585\n if (!native) return;\n\n var rangeCount = native.rangeCount,\n anchorNode = native.anchorNode;\n\n // If both selections are blurred, do nothing.\n\n if (!rangeCount && selection.isBlurred) return;\n\n // If the selection has been blurred, but is still inside the editor in the\n // DOM, blur it manually.\n if (selection.isBlurred) {\n if (!_this.isInEditor(anchorNode)) return;\n removeAllRanges(native);\n _this.element.blur();\n debug$4('updateSelection', { selection: selection, native: native });\n return;\n }\n\n // If the selection isn't set, do nothing.\n if (selection.isUnset) return;\n\n // Otherwise, figure out which DOM nodes should be selected...\n var current = !!rangeCount && native.getRangeAt(0);\n var range = findDOMRange(selection, window);\n\n if (!range) {\n warning(false, 'Unable to find a native DOM range from the current selection.');\n\n return;\n }\n\n var startContainer = range.startContainer,\n startOffset = range.startOffset,\n endContainer = range.endContainer,\n endOffset = range.endOffset;\n\n // If the new range matches the current selection, there is nothing to fix.\n // COMPAT: The native `Range` object always has it's \"start\" first and \"end\"\n // last in the DOM. It has no concept of \"backwards/forwards\", so we have\n // to check both orientations here. (2017/10/31)\n\n if (current) {\n if (startContainer == current.startContainer && startOffset == current.startOffset && endContainer == current.endContainer && endOffset == current.endOffset || startContainer == current.endContainer && startOffset == current.endOffset && endContainer == current.startContainer && endOffset == current.startOffset) {\n return;\n }\n }\n\n // Otherwise, set the `isUpdatingSelection` flag and update the selection.\n _this.tmp.isUpdatingSelection = true;\n removeAllRanges(native);\n\n // COMPAT: IE 11 does not support Selection.setBaseAndExtent\n if (native.setBaseAndExtent) {\n // COMPAT: Since the DOM range has no concept of backwards/forwards\n // we need to check and do the right thing here.\n if (isBackward$$1) {\n native.setBaseAndExtent(range.endContainer, range.endOffset, range.startContainer, range.startOffset);\n } else {\n native.setBaseAndExtent(range.startContainer, range.startOffset, range.endContainer, range.endOffset);\n }\n } else {\n // COMPAT: IE 11 does not support Selection.extend, fallback to addRange\n native.addRange(range);\n }\n\n // Scroll to the selection, in case it's out of view.\n scrollToSelection(native);\n\n // Then unset the `isUpdatingSelection` flag after a delay.\n setTimeout(function () {\n // COMPAT: In Firefox, it's not enough to create a range, you also need to\n // focus the contenteditable element too. (2016/11/16)\n if (IS_FIREFOX && _this.element) _this.element.focus();\n _this.tmp.isUpdatingSelection = false;\n });\n\n debug$4('updateSelection', { selection: selection, native: native });\n }, _this.ref = function (element) {\n _this.element = element;\n }, _this.isInEditor = function (target) {\n var _this2 = _this,\n element = _this2.element;\n\n\n var el = void 0;\n\n try {\n // COMPAT: In Firefox, sometimes the node can be comment which doesn't\n // have .closest and it crashes.\n if (target.nodeType === 8) {\n return false;\n }\n\n // COMPAT: Text nodes don't have `isContentEditable` property. So, when\n // `target` is a text node use its parent node for check.\n el = target.nodeType === 3 ? target.parentNode : target;\n } catch (err) {\n // COMPAT: In Firefox, `target.nodeType` will throw an error if target is\n // originating from an internal \"restricted\" element (e.g. a stepper\n // arrow on a number input)\n // see github.com/ianstormtaylor/slate/issues/1819\n if (IS_FIREFOX && FIREFOX_NODE_TYPE_ACCESS_ERROR.test(err.message)) {\n return false;\n }\n\n throw err;\n }\n\n var allowEdit = el.isContentEditable || el.closest('[data-slate-void]');\n return allowEdit && (el === element || el.closest('[data-slate-editor]') === element);\n }, _this.onNativeSelectionChange = throttle(function (event) {\n if (_this.props.readOnly) return;\n\n var window = getWindow(event.target);\n var activeElement = window.document.activeElement;\n\n if (activeElement !== _this.element) return;\n\n _this.props.onSelect(event);\n }, 100), _this.renderNode = function (child, isSelected, decorations) {\n var _this$props = _this.props,\n editor = _this$props.editor,\n readOnly = _this$props.readOnly;\n var value = editor.value;\n var document = value.document,\n selection = value.selection;\n var isFocused = selection.isFocused;\n\n\n return React.createElement(Node$1, {\n block: null,\n editor: editor,\n decorations: decorations,\n isSelected: isSelected,\n isFocused: isFocused && isSelected,\n key: child.key,\n node: child,\n parent: document,\n readOnly: readOnly\n });\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Default properties.\n *\n * @type {Object}\n */\n\n /**\n * Temporary values.\n *\n * @type {Object}\n */\n\n createClass(Content, [{\n key: 'componentDidMount',\n\n\n /**\n * When the editor first mounts in the DOM we need to:\n *\n * - Add native DOM event listeners.\n * - Update the selection, in case it starts focused.\n */\n\n value: function componentDidMount() {\n var window = getWindow(this.element);\n\n window.document.addEventListener('selectionchange', this.onNativeSelectionChange);\n\n // COMPAT: Restrict scope of `beforeinput` to clients that support the\n // Input Events Level 2 spec, since they are preventable events.\n if (HAS_INPUT_EVENTS_LEVEL_2) {\n this.element.addEventListener('beforeinput', this.handlers.onBeforeInput);\n }\n\n this.updateSelection();\n }\n\n /**\n * When unmounting, remove DOM event listeners.\n */\n\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var window = getWindow(this.element);\n\n if (window) {\n window.document.removeEventListener('selectionchange', this.onNativeSelectionChange);\n }\n\n if (HAS_INPUT_EVENTS_LEVEL_2) {\n this.element.removeEventListener('beforeinput', this.handlers.onBeforeInput);\n }\n }\n\n /**\n * On update, update the selection.\n */\n\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.updateSelection();\n }\n\n /**\n * Update the native DOM selection to reflect the internal model.\n */\n\n /**\n * The React ref method to set the root content element locally.\n *\n * @param {Element} element\n */\n\n /**\n * Check if an event `target` is fired from within the contenteditable\n * element. This should be false for edits happening in non-contenteditable\n * children, such as void nodes and other nested Slate editors.\n *\n * @param {Element} target\n * @return {Boolean}\n */\n\n }, {\n key: 'onEvent',\n\n\n /**\n * On `event` with `handler`.\n *\n * @param {String} handler\n * @param {Event} event\n */\n\n value: function onEvent(handler, event) {\n debug$4('onEvent', handler);\n\n // Ignore `onBlur`, `onFocus` and `onSelect` events generated\n // programmatically while updating selection.\n if (this.tmp.isUpdatingSelection && (handler == 'onSelect' || handler == 'onBlur' || handler == 'onFocus')) {\n return;\n }\n\n // COMPAT: There are situations where a select event will fire with a new\n // native selection that resolves to the same internal position. In those\n // cases we don't need to trigger any changes, since our internal model is\n // already up to date, but we do want to update the native selection again\n // to make sure it is in sync. (2017/10/16)\n if (handler == 'onSelect') {\n var editor = this.props.editor;\n var value = editor.value;\n var selection = value.selection;\n\n var window = getWindow(event.target);\n var native = window.getSelection();\n var range = findRange(native, value);\n\n if (range && range.equals(selection.toRange())) {\n this.updateSelection();\n return;\n }\n }\n\n // Don't handle drag and drop events coming from embedded editors.\n if (handler == 'onDragEnd' || handler == 'onDragEnter' || handler == 'onDragExit' || handler == 'onDragLeave' || handler == 'onDragOver' || handler == 'onDragStart' || handler == 'onDrop') {\n var target = event.target;\n\n var targetEditorNode = target.closest('[data-slate-editor]');\n if (targetEditorNode !== this.element) return;\n }\n\n // Some events require being in editable in the editor, so if the event\n // target isn't, ignore them.\n if (handler == 'onBeforeInput' || handler == 'onBlur' || handler == 'onCompositionEnd' || handler == 'onCompositionStart' || handler == 'onCopy' || handler == 'onCut' || handler == 'onFocus' || handler == 'onInput' || handler == 'onKeyDown' || handler == 'onKeyUp' || handler == 'onPaste' || handler == 'onSelect') {\n if (!this.isInEditor(event.target)) return;\n }\n\n this.props[handler](event);\n }\n\n /**\n * On native `selectionchange` event, trigger the `onSelect` handler. This is\n * needed to account for React's `onSelect` being non-standard and not firing\n * until after a selection has been released. This causes issues in situations\n * where another change happens while a selection is being made.\n *\n * @param {Event} event\n */\n\n }, {\n key: 'render',\n\n\n /**\n * Render the editor content.\n *\n * @return {Element}\n */\n\n value: function render() {\n var _this3 = this;\n\n var props = this.props,\n handlers = this.handlers;\n var className = props.className,\n readOnly = props.readOnly,\n editor = props.editor,\n tabIndex = props.tabIndex,\n role = props.role,\n tagName = props.tagName,\n spellCheck = props.spellCheck;\n var value = editor.value,\n stack = editor.stack;\n\n var Container = tagName;\n var document = value.document,\n selection = value.selection,\n decorations = value.decorations;\n\n var indexes = document.getSelectionIndexes(selection);\n var decs = document.getDecorations(stack).concat(decorations);\n var childrenDecorations = getChildrenDecorations(document, decs);\n\n var children = document.nodes.toArray().map(function (child, i) {\n var isSelected = !!indexes && indexes.start <= i && i < indexes.end;\n\n return _this3.renderNode(child, isSelected, childrenDecorations[i]);\n });\n\n var style = _extends({\n // Prevent the default outline styles.\n outline: 'none',\n // Preserve adjacent whitespace and new lines.\n whiteSpace: 'pre-wrap',\n // Allow words to break if they are too long.\n wordWrap: 'break-word'\n }, readOnly ? {} : { WebkitUserModify: 'read-write-plaintext-only' }, props.style);\n\n debug$4('render', { props: props });\n\n return React.createElement(\n Container,\n _extends({}, handlers, {\n 'data-slate-editor': true,\n ref: this.ref,\n 'data-key': document.key,\n contentEditable: readOnly ? null : true,\n suppressContentEditableWarning: true,\n className: className,\n autoCorrect: props.autoCorrect ? 'on' : 'off',\n spellCheck: spellCheck,\n style: style,\n role: readOnly ? null : role || 'textbox',\n tabIndex: tabIndex\n // COMPAT: The Grammarly Chrome extension works by changing the DOM out\n // from under `contenteditable` elements, which leads to weird behaviors\n // so we have to disable it like this. (2017/04/24)\n , 'data-gramm': false\n }),\n children\n );\n }\n\n /**\n * Render a `child` node of the document.\n *\n * @param {Node} child\n * @param {Boolean} isSelected\n * @return {Element}\n */\n\n }]);\n return Content;\n}(React.Component);\n\n/**\n * Mix in handler prop types.\n */\n\nContent.propTypes = {\n autoCorrect: Types.bool.isRequired,\n className: Types.string,\n editor: Types.object.isRequired,\n readOnly: Types.bool.isRequired,\n role: Types.string,\n spellCheck: Types.bool.isRequired,\n style: Types.object,\n tabIndex: Types.number,\n tagName: Types.string };\nContent.defaultProps = {\n style: {},\n tagName: 'div' };\nEVENT_HANDLERS.forEach(function (handler) {\n Content.propTypes[handler] = Types.func.isRequired;\n});\n\n/**\n * The transfer types that Slate recognizes.\n *\n * @type {Object}\n */\n\nvar TRANSFER_TYPES = {\n FRAGMENT: 'application/x-slate-fragment',\n HTML: 'text/html',\n NODE: 'application/x-slate-node',\n RICH: 'text/rtf',\n TEXT: 'text/plain'\n\n /**\n * Export.\n *\n * @type {Object}\n */\n\n};\n\nvar FRAGMENT = TRANSFER_TYPES.FRAGMENT;\nvar HTML = TRANSFER_TYPES.HTML;\nvar TEXT = TRANSFER_TYPES.TEXT;\n\n/**\n * Prepares a Slate document fragment to be copied to the clipboard.\n *\n * @param {Event} event\n * @param {Value} value\n * @param {Document} [fragment]\n */\n\nfunction cloneFragment(event, value) {\n var fragment = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : value.fragment;\n var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {\n return undefined;\n };\n\n var window = getWindow(event.target);\n var native = window.getSelection();\n var schema = value.schema;\n var _value$selection = value.selection,\n start = _value$selection.start,\n end = _value$selection.end;\n\n var startVoid = value.document.getClosestVoid(start.key, schema);\n var endVoid = value.document.getClosestVoid(end.key, schema);\n\n // If the selection is collapsed, and it isn't inside a void node, abort.\n if (native.isCollapsed && !startVoid) return;\n\n // Create a fake selection so that we can add a Base64-encoded copy of the\n // fragment to the HTML, to decode on future pastes.\n var encoded = Base64.serializeNode(fragment);\n var range = native.getRangeAt(0);\n var contents = range.cloneContents();\n var attach = contents.childNodes[0];\n\n // Make sure attach is a non-empty node, since empty nodes will not get copied\n contents.childNodes.forEach(function (node) {\n if (node.textContent && node.textContent.trim() !== '') {\n attach = node;\n }\n });\n\n // COMPAT: If the end node is a void node, we need to move the end of the\n // range from the void node's spacer span, to the end of the void node's\n // content, since the spacer is before void's content in the DOM.\n if (endVoid) {\n var r = range.cloneRange();\n var node = findDOMNode$1(endVoid, window);\n r.setEndAfter(node);\n contents = r.cloneContents();\n }\n\n // COMPAT: If the start node is a void node, we need to attach the encoded\n // fragment to the void node's content node instead of the spacer, because\n // attaching it to empty `<div>/<span>` nodes will end up having it erased by\n // most browsers. (2018/04/27)\n if (startVoid) {\n attach = contents.childNodes[0].childNodes[1].firstChild;\n }\n\n // Remove any zero-width space spans from the cloned DOM so that they don't\n // show up elsewhere when pasted.\n [].slice.call(contents.querySelectorAll(ZERO_WIDTH_SELECTOR)).forEach(function (zw) {\n var isNewline = zw.getAttribute(ZERO_WIDTH_ATTRIBUTE) === 'n';\n zw.textContent = isNewline ? '\\n' : '';\n });\n\n // Set a `data-slate-fragment` attribute on a non-empty node, so it shows up\n // in the HTML, and can be used for intra-Slate pasting. If it's a text\n // node, wrap it in a `<span>` so we have something to set an attribute on.\n if (attach.nodeType == 3) {\n var span = window.document.createElement('span');\n\n // COMPAT: In Chrome and Safari, if we don't add the `white-space` style\n // then leading and trailing spaces will be ignored. (2017/09/21)\n span.style.whiteSpace = 'pre';\n\n span.appendChild(attach);\n contents.appendChild(span);\n attach = span;\n }\n\n attach.setAttribute('data-slate-fragment', encoded);\n\n // Creates value from only the selected blocks\n // Then gets plaintext for clipboard with proper linebreaks for BLOCK elements\n // Via Plain serializer\n var valFromSelection = Value.create({ document: fragment });\n var plainText = Plain.serialize(valFromSelection);\n\n // Add the phony content to a div element. This is needed to copy the\n // contents into the html clipboard register.\n var div = window.document.createElement('div');\n div.appendChild(contents);\n\n // For browsers supporting it, we set the clipboard registers manually,\n // since the result is more predictable.\n // COMPAT: IE supports the setData method, but only in restricted sense.\n // IE doesn't support arbitrary MIME types or common ones like 'text/plain';\n // it only accepts \"Text\" (which gets mapped to 'text/plain') and \"Url\"\n // (mapped to 'text/url-list'); so, we should only enter block if !IS_IE\n if (event.clipboardData && event.clipboardData.setData && !IS_IE) {\n event.preventDefault();\n event.clipboardData.setData(TEXT, plainText);\n event.clipboardData.setData(FRAGMENT, encoded);\n event.clipboardData.setData(HTML, div.innerHTML);\n callback();\n }\n\n // COMPAT: For browser that don't support the Clipboard API's setData method,\n // we must rely on the browser to natively copy what's selected.\n // So we add the div (containing our content) to the DOM, and select it.\n var editor = event.target.closest('[data-slate-editor]');\n div.setAttribute('contenteditable', true);\n div.style.position = 'absolute';\n div.style.left = '-9999px';\n editor.appendChild(div);\n native.selectAllChildren(div);\n\n // Revert to the previous selection right after copying.\n window.requestAnimationFrame(function () {\n editor.removeChild(div);\n removeAllRanges(native);\n native.addRange(range);\n callback();\n });\n}\n\n/**\n * Find a Slate node from a DOM `element`.\n *\n * @param {Element} element\n * @param {Value} value\n * @return {Node|Null}\n */\n\nfunction findNode(element, value) {\n var closest = element.closest('[data-key]');\n if (!closest) return null;\n\n var key = closest.getAttribute('data-key');\n if (!key) return null;\n\n var node = value.document.getNode(key);\n return node || null;\n}\n\n/**\n * Get the target range from a DOM `event`.\n *\n * @param {Event} event\n * @param {Value} value\n * @return {Range}\n */\n\nfunction getEventRange(event, value) {\n if (event.nativeEvent) {\n event = event.nativeEvent;\n }\n\n var _event = event,\n x = _event.x,\n y = _event.y,\n target = _event.target;\n\n if (x == null || y == null) return null;\n\n var document = value.document,\n schema = value.schema;\n\n var node = findNode(target, value);\n if (!node) return null;\n\n // If the drop target is inside a void node, move it into either the next or\n // previous node, depending on which side the `x` and `y` coordinates are\n // closest to.\n if (schema.isVoid(node)) {\n var rect = target.getBoundingClientRect();\n var isPrevious = node.object == 'inline' ? x - rect.left < rect.left + rect.width - x : y - rect.top < rect.top + rect.height - y;\n\n var text = node.getFirstText();\n var _range = document.createRange();\n\n if (isPrevious) {\n var previousText = document.getPreviousText(text.key);\n\n if (previousText) {\n return _range.moveToEndOfNode(previousText);\n }\n }\n\n var nextText = document.getNextText(text.key);\n return nextText ? _range.moveToStartOfNode(nextText) : null;\n }\n\n // Else resolve a range from the caret position where the drop occured.\n var window = getWindow(target);\n var native = void 0;\n\n // COMPAT: In Firefox, `caretRangeFromPoint` doesn't exist. (2016/07/25)\n if (window.document.caretRangeFromPoint) {\n native = window.document.caretRangeFromPoint(x, y);\n } else if (window.document.caretPositionFromPoint) {\n var position = window.document.caretPositionFromPoint(x, y);\n native = window.document.createRange();\n native.setStart(position.offsetNode, position.offset);\n native.setEnd(position.offsetNode, position.offset);\n } else if (window.document.body.createTextRange) {\n // COMPAT: In IE, `caretRangeFromPoint` and\n // `caretPositionFromPoint` don't exist. (2018/07/11)\n native = window.document.body.createTextRange();\n\n try {\n native.moveToPoint(x, y);\n } catch (error) {\n // IE11 will raise an `unspecified error` if `moveToPoint` is\n // called during a dropEvent.\n return null;\n }\n }\n\n // Resolve a Slate range from the DOM range.\n var range = findRange(native, value);\n if (!range) return null;\n\n return range;\n}\n\n/**\n * Transfer types.\n *\n * @type {String}\n */\n\nvar FRAGMENT$1 = TRANSFER_TYPES.FRAGMENT;\nvar HTML$1 = TRANSFER_TYPES.HTML;\nvar NODE = TRANSFER_TYPES.NODE;\nvar RICH = TRANSFER_TYPES.RICH;\nvar TEXT$1 = TRANSFER_TYPES.TEXT;\n\n/**\n * Fragment matching regexp for HTML nodes.\n *\n * @type {RegExp}\n */\n\nvar FRAGMENT_MATCHER = / data-slate-fragment=\"([^\\s\"]+)\"/;\n\n/**\n * Get the transfer data from an `event`.\n *\n * @param {Event} event\n * @return {Object}\n */\n\nfunction getEventTransfer(event) {\n // COMPAT: IE 11 doesn't populate nativeEvent with either\n // dataTransfer or clipboardData. We'll need to use the base event\n // object (2018/14/6)\n if (!IS_IE && event.nativeEvent) {\n event = event.nativeEvent;\n }\n\n var transfer = event.dataTransfer || event.clipboardData;\n var fragment = getType(transfer, FRAGMENT$1);\n var node = getType(transfer, NODE);\n var html = getType(transfer, HTML$1);\n var rich = getType(transfer, RICH);\n var text = getType(transfer, TEXT$1);\n var files = void 0;\n\n // If there isn't a fragment, but there is HTML, check to see if the HTML is\n // actually an encoded fragment.\n if (!fragment && html && ~html.indexOf(' data-slate-fragment=\"')) {\n var matches = FRAGMENT_MATCHER.exec(html);\n\n var _matches = slicedToArray(matches, 2),\n full = _matches[0],\n encoded = _matches[1]; // eslint-disable-line no-unused-vars\n\n\n if (encoded) fragment = encoded;\n }\n\n // COMPAT: Edge doesn't handle custom data types\n // These will be embedded in text/plain in this case (2017/7/12)\n if (text) {\n var embeddedTypes = getEmbeddedTypes(text);\n\n if (embeddedTypes[FRAGMENT$1]) fragment = embeddedTypes[FRAGMENT$1];\n if (embeddedTypes[NODE]) node = embeddedTypes[NODE];\n if (embeddedTypes[TEXT$1]) text = embeddedTypes[TEXT$1];\n }\n\n // Decode a fragment or node if they exist.\n if (fragment) fragment = Base64.deserializeNode(fragment);\n if (node) node = Base64.deserializeNode(node);\n\n // COMPAT: Edge sometimes throws 'NotSupportedError'\n // when accessing `transfer.items` (2017/7/12)\n try {\n // Get and normalize files if they exist.\n if (transfer.items && transfer.items.length) {\n files = Array.from(transfer.items).map(function (item) {\n return item.kind == 'file' ? item.getAsFile() : null;\n }).filter(function (exists) {\n return exists;\n });\n } else if (transfer.files && transfer.files.length) {\n files = Array.from(transfer.files);\n }\n } catch (err) {\n if (transfer.files && transfer.files.length) {\n files = Array.from(transfer.files);\n }\n }\n\n // Determine the type of the data.\n var data = { files: files, fragment: fragment, html: html, node: node, rich: rich, text: text };\n data.type = getTransferType(data);\n return data;\n}\n\n/**\n * Takes text input, checks whether contains embedded data\n * and returns object with original text +/- additional data\n *\n * @param {String} text\n * @return {Object}\n */\n\nfunction getEmbeddedTypes(text) {\n var prefix = 'SLATE-DATA-EMBED::';\n\n if (text.substring(0, prefix.length) != prefix) {\n return { TEXT: text };\n }\n\n // Attempt to parse, if fails then just standard text/plain\n // Otherwise, already had data embedded\n try {\n return JSON.parse(text.substring(prefix.length));\n } catch (err) {\n throw new Error('Unable to parse custom Slate drag event data.');\n }\n}\n\n/**\n * Get the type of a transfer from its `data`.\n *\n * @param {Object} data\n * @return {String}\n */\n\nfunction getTransferType(data) {\n if (data.fragment) return 'fragment';\n if (data.node) return 'node';\n\n // COMPAT: Microsoft Word adds an image of the selected text to the data.\n // Since files are preferred over HTML or text, this would cause the type to\n // be considered `files`. But it also adds rich text data so we can check\n // for that and properly set the type to `html` or `text`. (2016/11/21)\n if (data.rich && data.html) return 'html';\n if (data.rich && data.text) return 'text';\n\n if (data.files && data.files.length) return 'files';\n if (data.html) return 'html';\n if (data.text) return 'text';\n return 'unknown';\n}\n\n/**\n * Get one of types `TYPES.FRAGMENT`, `TYPES.NODE`, `text/html`, `text/rtf` or\n * `text/plain` from transfers's `data` if possible, otherwise return null.\n *\n * @param {Object} transfer\n * @param {String} type\n * @return {String}\n */\n\nfunction getType(transfer, type) {\n if (!transfer.types || !transfer.types.length) {\n // COMPAT: In IE 11, there is no `types` field but `getData('Text')`\n // is supported`. (2017/06/23)\n return type == TEXT$1 ? transfer.getData('Text') || null : null;\n }\n\n // COMPAT: In Edge, transfer.types doesn't respond to `indexOf`. (2017/10/25)\n var types = Array.from(transfer.types);\n\n return types.indexOf(type) !== -1 ? transfer.getData(type) || null : null;\n}\n\n/**\n * The default plain text transfer type.\n *\n * @type {String}\n */\n\nvar TEXT$2 = TRANSFER_TYPES.TEXT;\n\n/**\n * Set data with `type` and `content` on an `event`.\n *\n * COMPAT: In Edge, custom types throw errors, so embed all non-standard\n * types in text/plain compound object. (2017/7/12)\n *\n * @param {Event} event\n * @param {String} type\n * @param {String} content\n */\n\nfunction setEventTransfer(event, type, content) {\n var mime = TRANSFER_TYPES[type.toUpperCase()];\n\n if (!mime) {\n throw new Error('Cannot set unknown transfer type \"' + mime + '\".');\n }\n\n if (event.nativeEvent) {\n event = event.nativeEvent;\n }\n\n var transfer = event.dataTransfer || event.clipboardData;\n\n try {\n transfer.setData(mime, content);\n // COMPAT: Safari needs to have the 'text' (and not 'text/plain') value in dataTransfer\n // to display the cursor while dragging internally.\n transfer.setData('text', transfer.getData('text'));\n } catch (err) {\n var prefix = 'SLATE-DATA-EMBED::';\n var text = transfer.getData(TEXT$2);\n var obj = {};\n\n // If the existing plain text data is prefixed, it's Slate JSON data.\n if (text.substring(0, prefix.length) === prefix) {\n try {\n obj = JSON.parse(text.substring(prefix.length));\n } catch (e) {\n throw new Error('Failed to parse Slate data from `DataTransfer` object.');\n }\n } else {\n // Otherwise, it's just set it as is.\n obj[TEXT$2] = text;\n }\n\n obj[mime] = content;\n var string = '' + prefix + JSON.stringify(obj);\n transfer.setData(TEXT$2, string);\n }\n}\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$5 = Debug('slate:after');\n\n/**\n * The after plugin.\n *\n * @return {Object}\n */\n\nfunction AfterPlugin() {\n var isDraggingInternally = null;\n\n /**\n * On before input.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onBeforeInput(event, change, editor) {\n debug$5('onBeforeInput', { event: event });\n\n var isSynthetic = !!event.nativeEvent;\n\n // If the event is synthetic, it's React's polyfill of `beforeinput` that\n // isn't a true `beforeinput` event with meaningful information. It only\n // gets triggered for character insertions, so we can just insert directly.\n if (isSynthetic) {\n event.preventDefault();\n change.insertText(event.data);\n return;\n }\n\n // Otherwise, we can use the information in the `beforeinput` event to\n // figure out the exact change that will occur, and prevent it.\n\n var _event$getTargetRange = event.getTargetRanges(),\n _event$getTargetRange2 = slicedToArray(_event$getTargetRange, 1),\n targetRange = _event$getTargetRange2[0];\n\n if (!targetRange) return;\n\n event.preventDefault();\n\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n schema = value.schema;\n\n var range = findRange(targetRange, value);\n\n switch (event.inputType) {\n case 'deleteByDrag':\n case 'deleteByCut':\n case 'deleteContent':\n case 'deleteContentBackward':\n case 'deleteContentForward':\n {\n change.deleteAtRange(range);\n return;\n }\n\n case 'deleteWordBackward':\n {\n change.deleteWordBackwardAtRange(range);\n return;\n }\n\n case 'deleteWordForward':\n {\n change.deleteWordForwardAtRange(range);\n return;\n }\n\n case 'deleteSoftLineBackward':\n case 'deleteHardLineBackward':\n {\n change.deleteLineBackwardAtRange(range);\n return;\n }\n\n case 'deleteSoftLineForward':\n case 'deleteHardLineForward':\n {\n change.deleteLineForwardAtRange(range);\n return;\n }\n\n case 'insertLineBreak':\n case 'insertParagraph':\n {\n var hasVoidParent = document.hasVoidParent(selection.start.path, schema);\n\n if (hasVoidParent) {\n change.moveToStartOfNextText();\n } else {\n change.splitBlockAtRange(range);\n }\n\n return;\n }\n\n case 'insertFromYank':\n case 'insertReplacementText':\n case 'insertText':\n {\n // COMPAT: `data` should have the text for the `insertText` input type\n // and `dataTransfer` should have the text for the\n // `insertReplacementText` input type, but Safari uses `insertText` for\n // spell check replacements and sets `data` to `null`. (2018/08/09)\n var text = event.data == null ? event.dataTransfer.getData('text/plain') : event.data;\n\n if (text == null) return;\n\n change.insertTextAtRange(range, text, selection.marks);\n\n // If the text was successfully inserted, and the selection had marks\n // on it, unset the selection's marks.\n if (selection.marks && value.document != change.value.document) {\n change.select({ marks: null });\n }\n\n return;\n }\n }\n }\n\n /**\n * On blur.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onBlur(event, change, editor) {\n debug$5('onBlur', { event: event });\n\n change.blur();\n }\n\n /**\n * On click.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onClick(event, change, editor) {\n if (editor.props.readOnly) {\n return true;\n }\n\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n\n var node = findNode(event.target, value);\n\n if (!node) {\n return;\n }\n\n var ancestors = document.getAncestors(node.key);\n var isVoid = node && (schema.isVoid(node) || ancestors.some(function (a) {\n return schema.isVoid(a);\n }));\n\n if (isVoid) {\n // COMPAT: In Chrome & Safari, selections that are at the zero offset of\n // an inline node will be automatically replaced to be at the last offset\n // of a previous inline node, which screws us up, so we always want to set\n // it to the end of the node. (2016/11/29)\n change.focus().moveToEndOfNode(node);\n }\n\n debug$5('onClick', { event: event });\n }\n\n /**\n * On copy.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onCopy(event, change, editor) {\n debug$5('onCopy', { event: event });\n\n cloneFragment(event, change.value);\n }\n\n /**\n * On cut.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onCut(event, change, editor) {\n debug$5('onCut', { event: event });\n\n // Once the fake cut content has successfully been added to the clipboard,\n // delete the content in the current selection.\n cloneFragment(event, change.value, change.value.fragment, function () {\n // If user cuts a void block node or a void inline node,\n // manually removes it since selection is collapsed in this case.\n var value = change.value;\n var endBlock = value.endBlock,\n endInline = value.endInline,\n selection = value.selection,\n schema = value.schema;\n var isCollapsed = selection.isCollapsed;\n\n var isVoidBlock = endBlock && schema.isVoid(endBlock) && isCollapsed;\n var isVoidInline = endInline && schema.isVoid(endInline) && isCollapsed;\n\n if (isVoidBlock) {\n editor.change(function (c) {\n return c.removeNodeByKey(endBlock.key);\n });\n } else if (isVoidInline) {\n editor.change(function (c) {\n return c.removeNodeByKey(endInline.key);\n });\n } else {\n editor.change(function (c) {\n return c.delete();\n });\n }\n });\n }\n\n /**\n * On drag end.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragEnd(event, change, editor) {\n debug$5('onDragEnd', { event: event });\n\n isDraggingInternally = null;\n }\n\n /**\n * On drag over.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragOver(event, change, editor) {\n debug$5('onDragOver', { event: event });\n }\n\n /**\n * On drag start.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragStart(event, change, editor) {\n debug$5('onDragStart', { event: event });\n\n isDraggingInternally = true;\n\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n\n var node = findNode(event.target, value);\n var ancestors = document.getAncestors(node.key);\n var isVoid = node && (schema.isVoid(node) || ancestors.some(function (a) {\n return schema.isVoid(a);\n }));\n var selectionIncludesNode = value.blocks.some(function (block) {\n return block.key === node.key;\n });\n\n // If a void block is dragged and is not selected, select it (necessary for local drags).\n if (isVoid && !selectionIncludesNode) {\n change.moveToRangeOfNode(node);\n }\n\n var fragment = change.value.fragment;\n var encoded = Base64.serializeNode(fragment);\n setEventTransfer(event, 'fragment', encoded);\n }\n\n /**\n * On drop.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDrop(event, change, editor) {\n debug$5('onDrop', { event: event });\n\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n schema = value.schema;\n\n var window = getWindow(event.target);\n var target = getEventRange(event, value);\n if (!target) return;\n\n var transfer = getEventTransfer(event);\n var type = transfer.type,\n fragment = transfer.fragment,\n text = transfer.text;\n\n\n change.focus();\n\n // If the drag is internal and the target is after the selection, it\n // needs to account for the selection's content being deleted.\n if (isDraggingInternally && selection.end.key == target.end.key && selection.end.offset < target.end.offset) {\n target = target.moveForward(selection.start.key == selection.end.key ? 0 - selection.end.offset + selection.start.offset : 0 - selection.end.offset);\n }\n\n if (isDraggingInternally) {\n change.delete();\n }\n\n change.select(target);\n\n if (type == 'text' || type == 'html') {\n var _target = target,\n anchor = _target.anchor;\n\n var hasVoidParent = document.hasVoidParent(anchor.key, schema);\n\n if (hasVoidParent) {\n var n = document.getNode(anchor.key);\n\n while (hasVoidParent) {\n n = document.getNextText(n.key);\n if (!n) break;\n hasVoidParent = document.hasVoidParent(n.key, schema);\n }\n\n if (n) change.moveToStartOfNode(n);\n }\n\n if (text) {\n text.split('\\n').forEach(function (line, i) {\n if (i > 0) change.splitBlock();\n change.insertText(line);\n });\n }\n }\n\n if (type == 'fragment') {\n change.insertFragment(fragment);\n }\n\n // COMPAT: React's onSelect event breaks after an onDrop event\n // has fired in a node: https://github.com/facebook/react/issues/11379.\n // Until this is fixed in React, we dispatch a mouseup event on that\n // DOM node, since that will make it go back to normal.\n var focusNode = document.getNode(target.focus.key);\n var el = findDOMNode$1(focusNode, window);\n if (!el) return;\n\n el.dispatchEvent(new MouseEvent('mouseup', {\n view: window,\n bubbles: true,\n cancelable: true\n }));\n }\n\n /**\n * On input.\n *\n * @param {Event} eventvent\n * @param {Change} change\n */\n\n function onInput(event, change, editor) {\n debug$5('onInput', { event: event });\n\n var window = getWindow(event.target);\n var value = change.value;\n\n // Get the selection point.\n\n var native = window.getSelection();\n var anchorNode = native.anchorNode;\n\n var point = findPoint(anchorNode, 0, value);\n if (!point) return;\n\n // Get the text node and leaf in question.\n var document = value.document,\n selection = value.selection;\n\n var node = document.getDescendant(point.key);\n var block = document.getClosestBlock(node.key);\n var leaves = node.getLeaves();\n var lastText = block.getLastText();\n var lastLeaf = leaves.last();\n var start = 0;\n var end = 0;\n\n var leaf = leaves.find(function (r) {\n start = end;\n end += r.text.length;\n if (end > point.offset) return true;\n }) || lastLeaf;\n\n // Get the text information.\n var text = leaf.text;\n var textContent = anchorNode.textContent;\n\n var isLastText = node == lastText;\n var isLastLeaf = leaf == lastLeaf;\n var lastChar = textContent.charAt(textContent.length - 1);\n\n // COMPAT: If this is the last leaf, and the DOM text ends in a new line,\n // we will have added another new line in <Leaf>'s render method to account\n // for browsers collapsing a single trailing new lines, so remove it.\n if (isLastText && isLastLeaf && lastChar == '\\n') {\n textContent = textContent.slice(0, -1);\n }\n\n // If the text is no different, abort.\n if (textContent == text) return;\n\n // Determine what the selection should be after changing the text.\n var delta = textContent.length - text.length;\n var corrected = selection.moveToEnd().moveForward(delta);\n var entire = selection.moveAnchorTo(point.key, start).moveFocusTo(point.key, end);\n\n entire = document.resolveRange(entire);\n\n // Change the current value to have the leaf's text replaced.\n change.insertTextAtRange(entire, textContent, leaf.marks).select(corrected);\n }\n\n /**\n * On key down.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onKeyDown(event, change, editor) {\n debug$5('onKeyDown', { event: event });\n\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n schema = value.schema;\n\n var hasVoidParent = document.hasVoidParent(selection.start.path, schema);\n\n // COMPAT: In iOS, some of these hotkeys are handled in the\n // `onNativeBeforeInput` handler of the `<Content>` component in order to\n // preserve native autocorrect behavior, so they shouldn't be handled here.\n if (Hotkeys.isSplitBlock(event) && !IS_IOS) {\n return hasVoidParent ? change.moveToStartOfNextText() : change.splitBlock();\n }\n\n if (Hotkeys.isDeleteBackward(event) && !IS_IOS) {\n return change.deleteCharBackward();\n }\n\n if (Hotkeys.isDeleteForward(event) && !IS_IOS) {\n return change.deleteCharForward();\n }\n\n if (Hotkeys.isDeleteLineBackward(event)) {\n return change.deleteLineBackward();\n }\n\n if (Hotkeys.isDeleteLineForward(event)) {\n return change.deleteLineForward();\n }\n\n if (Hotkeys.isDeleteWordBackward(event)) {\n return change.deleteWordBackward();\n }\n\n if (Hotkeys.isDeleteWordForward(event)) {\n return change.deleteWordForward();\n }\n\n if (Hotkeys.isRedo(event)) {\n return change.redo();\n }\n\n if (Hotkeys.isUndo(event)) {\n return change.undo();\n }\n\n // COMPAT: Certain browsers don't handle the selection updates properly. In\n // Chrome, the selection isn't properly extended. And in Firefox, the\n // selection isn't properly collapsed. (2017/10/17)\n if (Hotkeys.isMoveLineBackward(event)) {\n event.preventDefault();\n return change.moveToStartOfBlock();\n }\n\n if (Hotkeys.isMoveLineForward(event)) {\n event.preventDefault();\n return change.moveToEndOfBlock();\n }\n\n if (Hotkeys.isExtendLineBackward(event)) {\n event.preventDefault();\n return change.moveFocusToStartOfBlock();\n }\n\n if (Hotkeys.isExtendLineForward(event)) {\n event.preventDefault();\n return change.moveFocusToEndOfBlock();\n }\n\n // COMPAT: If a void node is selected, or a zero-width text node adjacent to\n // an inline is selected, we need to handle these hotkeys manually because\n // browsers won't know what to do.\n if (Hotkeys.isMoveBackward(event)) {\n var previousText = value.previousText,\n startText = value.startText;\n\n var isPreviousInVoid = previousText && document.hasVoidParent(previousText.key, schema);\n\n if (hasVoidParent || isPreviousInVoid || startText.text == '') {\n event.preventDefault();\n return change.moveBackward();\n }\n }\n\n if (Hotkeys.isMoveForward(event)) {\n var nextText = value.nextText,\n _startText = value.startText;\n\n var isNextInVoid = nextText && document.hasVoidParent(nextText.key, schema);\n\n if (hasVoidParent || isNextInVoid || _startText.text == '') {\n event.preventDefault();\n return change.moveForward();\n }\n }\n\n if (Hotkeys.isExtendBackward(event)) {\n var _previousText = value.previousText,\n _startText2 = value.startText;\n\n var _isPreviousInVoid = _previousText && document.hasVoidParent(_previousText.key, schema);\n\n if (hasVoidParent || _isPreviousInVoid || _startText2.text == '') {\n event.preventDefault();\n return change.moveFocusBackward();\n }\n }\n\n if (Hotkeys.isExtendForward(event)) {\n var _nextText = value.nextText,\n _startText3 = value.startText;\n\n var _isNextInVoid = _nextText && document.hasVoidParent(_nextText.key, schema);\n\n if (hasVoidParent || _isNextInVoid || _startText3.text == '') {\n event.preventDefault();\n return change.moveFocusForward();\n }\n }\n }\n\n /**\n * On paste.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onPaste(event, change, editor) {\n debug$5('onPaste', { event: event });\n\n var transfer = getEventTransfer(event);\n var type = transfer.type,\n fragment = transfer.fragment,\n text = transfer.text;\n\n\n if (type == 'fragment') {\n change.insertFragment(fragment);\n }\n\n if (type == 'text' || type == 'html') {\n if (!text) return;\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n startBlock = value.startBlock,\n schema = value.schema;\n\n if (schema.isVoid(startBlock)) return;\n\n var defaultBlock = startBlock;\n var defaultMarks = document.getInsertMarksAtRange(selection);\n var frag = Plain.deserialize(text, { defaultBlock: defaultBlock, defaultMarks: defaultMarks }).document;\n change.insertFragment(frag);\n }\n }\n\n /**\n * On select.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onSelect(event, change, editor) {\n debug$5('onSelect', { event: event });\n\n var window = getWindow(event.target);\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n\n var native = window.getSelection();\n\n // If there are no ranges, the editor was blurred natively.\n if (!native.rangeCount) {\n change.blur();\n return;\n }\n\n // Otherwise, determine the Slate selection from the native one.\n var range = findRange(native, value);\n if (!range) return;\n\n var _range = range,\n anchor = _range.anchor,\n focus = _range.focus;\n\n var anchorText = document.getNode(anchor.key);\n var focusText = document.getNode(focus.key);\n var anchorInline = document.getClosestInline(anchor.key);\n var focusInline = document.getClosestInline(focus.key);\n var focusBlock = document.getClosestBlock(focus.key);\n var anchorBlock = document.getClosestBlock(anchor.key);\n\n // COMPAT: If the anchor point is at the start of a non-void, and the\n // focus point is inside a void node with an offset that isn't `0`, set\n // the focus offset to `0`. This is due to void nodes <span>'s being\n // positioned off screen, resulting in the offset always being greater\n // than `0`. Since we can't know what it really should be, and since an\n // offset of `0` is less destructive because it creates a hanging\n // selection, go with `0`. (2017/09/07)\n if (anchorBlock && !schema.isVoid(anchorBlock) && anchor.offset == 0 && focusBlock && schema.isVoid(focusBlock) && focus.offset != 0) {\n range = range.setFocus(focus.setOffset(0));\n }\n\n // COMPAT: If the selection is at the end of a non-void inline node, and\n // there is a node after it, put it in the node after instead. This\n // standardizes the behavior, since it's indistinguishable to the user.\n if (anchorInline && !schema.isVoid(anchorInline) && anchor.offset == anchorText.text.length) {\n var block = document.getClosestBlock(anchor.key);\n var next = block.getNextText(anchor.key);\n if (next) range = range.moveAnchorTo(next.key, 0);\n }\n\n if (focusInline && !schema.isVoid(focusInline) && focus.offset == focusText.text.length) {\n var _block = document.getClosestBlock(focus.key);\n var _next = _block.getNextText(focus.key);\n if (_next) range = range.moveFocusTo(_next.key, 0);\n }\n\n var selection = document.createSelection(range);\n selection = selection.setIsFocused(true);\n\n // Preserve active marks from the current selection.\n // They will be cleared by `change.select` if the selection actually moved.\n selection = selection.set('marks', value.selection.marks);\n\n change.select(selection);\n }\n\n /**\n * Render editor.\n *\n * @param {Object} props\n * @param {Editor} editor\n * @return {Object}\n */\n\n function renderEditor(props, editor) {\n var handlers = editor.handlers;\n\n return React.createElement(Content, _extends({}, handlers, {\n autoCorrect: props.autoCorrect,\n className: props.className,\n editor: editor,\n readOnly: props.readOnly,\n role: props.role,\n spellCheck: props.spellCheck,\n style: props.style,\n tabIndex: props.tabIndex,\n tagName: props.tagName\n }));\n }\n\n /**\n * Render node.\n *\n * @param {Object} props\n * @return {Element}\n */\n\n function renderNode(props) {\n var attributes = props.attributes,\n children = props.children,\n node = props.node;\n\n if (node.object != 'block' && node.object != 'inline') return;\n var Tag = node.object == 'block' ? 'div' : 'span';\n var style = { position: 'relative' };\n return React.createElement(\n Tag,\n _extends({}, attributes, { style: style }),\n children\n );\n }\n\n /**\n * Render placeholder.\n *\n * @param {Object} props\n * @return {Element}\n */\n\n function renderPlaceholder(props) {\n var editor = props.editor,\n node = props.node;\n\n if (!editor.props.placeholder) return;\n if (editor.state.isComposing) return;\n if (node.object != 'block') return;\n if (!Text.isTextList(node.nodes)) return;\n if (node.text != '') return;\n if (editor.value.document.getBlocks().size > 1) return;\n\n var style = {\n pointerEvents: 'none',\n display: 'inline-block',\n width: '0',\n maxWidth: '100%',\n whiteSpace: 'nowrap',\n opacity: '0.333'\n };\n\n return React.createElement(\n 'span',\n { contentEditable: false, style: style },\n editor.props.placeholder\n );\n }\n\n /**\n * Return the plugin.\n *\n * @type {Object}\n */\n\n return {\n onBeforeInput: onBeforeInput,\n onBlur: onBlur,\n onClick: onClick,\n onCopy: onCopy,\n onCut: onCut,\n onDragEnd: onDragEnd,\n onDragOver: onDragOver,\n onDragStart: onDragStart,\n onDrop: onDrop,\n onInput: onInput,\n onKeyDown: onKeyDown,\n onPaste: onPaste,\n onSelect: onSelect,\n renderEditor: renderEditor,\n renderNode: renderNode,\n renderPlaceholder: renderPlaceholder\n };\n}\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$6 = Debug('slate:before');\n\n/**\n * The core before plugin.\n *\n * @return {Object}\n */\n\nfunction BeforePlugin() {\n var activeElement = null;\n var compositionCount = 0;\n var isComposing = false;\n var isCopying = false;\n var isDragging = false;\n\n /**\n * On before input.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onBeforeInput(event, change, editor) {\n if (editor.props.readOnly) return true;\n\n var isSynthetic = !!event.nativeEvent;\n\n // COMPAT: If the browser supports Input Events Level 2, we will have\n // attached a custom handler for the real `beforeinput` events, instead of\n // allowing React's synthetic polyfill, so we need to ignore synthetics.\n if (isSynthetic && HAS_INPUT_EVENTS_LEVEL_2) return true;\n\n debug$6('onBeforeInput', { event: event });\n }\n\n /**\n * On blur.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onBlur(event, change, editor) {\n if (isCopying) return true;\n if (editor.props.readOnly) return true;\n\n var value = change.value;\n var schema = value.schema;\n var relatedTarget = event.relatedTarget,\n target = event.target;\n\n var window = getWindow(target);\n\n // COMPAT: If the current `activeElement` is still the previous one, this is\n // due to the window being blurred when the tab itself becomes unfocused, so\n // we want to abort early to allow to editor to stay focused when the tab\n // becomes focused again.\n if (activeElement == window.document.activeElement) return true;\n\n // COMPAT: The `relatedTarget` can be null when the new focus target is not\n // a \"focusable\" element (eg. a `<div>` without `tabindex` set).\n if (relatedTarget) {\n var el = findDOMNode(editor);\n\n // COMPAT: The event should be ignored if the focus is returning to the\n // editor from an embedded editable element (eg. an <input> element inside\n // a void node).\n if (relatedTarget == el) return true;\n\n // COMPAT: The event should be ignored if the focus is moving from the\n // editor to inside a void node's spacer element.\n if (relatedTarget.hasAttribute('data-slate-spacer')) return true;\n\n // COMPAT: The event should be ignored if the focus is moving to a non-\n // editable section of an element that isn't a void node (eg. a list item\n // of the check list example).\n var node = findNode(relatedTarget, value);\n if (el.contains(relatedTarget) && node && !schema.isVoid(node)) return true;\n }\n\n debug$6('onBlur', { event: event });\n }\n\n /**\n * On change.\n *\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onChange(change, editor) {\n var value = change.value;\n\n // If the value's schema isn't the editor's schema, update it. This can\n // happen on the initialization of the editor, or if the schema changes.\n // This change isn't save into history since only schema is updated.\n\n if (value.schema != editor.schema) {\n change.withoutSaving(function () {\n change.setValue({ schema: editor.schema }).normalize();\n });\n }\n\n debug$6('onChange');\n }\n\n /**\n * On composition end.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onCompositionEnd(event, change, editor) {\n var n = compositionCount;\n\n // The `count` check here ensures that if another composition starts\n // before the timeout has closed out this one, we will abort unsetting the\n // `isComposing` flag, since a composition is still in affect.\n window.requestAnimationFrame(function () {\n if (compositionCount > n) return;\n isComposing = false;\n\n // HACK: we need to re-render the editor here so that it will update its\n // placeholder in case one is currently rendered. This should be handled\n // differently ideally, in a less invasive way?\n // (apply force re-render if isComposing changes)\n if (editor.state.isComposing) {\n editor.setState({ isComposing: false });\n }\n });\n\n debug$6('onCompositionEnd', { event: event });\n }\n\n /**\n * On composition start.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onCompositionStart(event, change, editor) {\n isComposing = true;\n compositionCount++;\n\n // HACK: we need to re-render the editor here so that it will update its\n // placeholder in case one is currently rendered. This should be handled\n // differently ideally, in a less invasive way?\n // (apply force re-render if isComposing changes)\n if (!editor.state.isComposing) {\n editor.setState({ isComposing: true });\n }\n\n debug$6('onCompositionStart', { event: event });\n }\n\n /**\n * On copy.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onCopy(event, change, editor) {\n var window = getWindow(event.target);\n isCopying = true;\n window.requestAnimationFrame(function () {\n return isCopying = false;\n });\n\n debug$6('onCopy', { event: event });\n }\n\n /**\n * On cut.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onCut(event, change, editor) {\n if (editor.props.readOnly) return true;\n\n var window = getWindow(event.target);\n isCopying = true;\n window.requestAnimationFrame(function () {\n return isCopying = false;\n });\n\n debug$6('onCut', { event: event });\n }\n\n /**\n * On drag end.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragEnd(event, change, editor) {\n isDragging = false;\n\n debug$6('onDragEnd', { event: event });\n }\n\n /**\n * On drag enter.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragEnter(event, change, editor) {\n debug$6('onDragEnter', { event: event });\n }\n\n /**\n * On drag exit.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragExit(event, change, editor) {\n debug$6('onDragExit', { event: event });\n }\n\n /**\n * On drag leave.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragLeave(event, change, editor) {\n debug$6('onDragLeave', { event: event });\n }\n\n /**\n * On drag over.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragOver(event, change, editor) {\n // If the target is inside a void node, and only in this case,\n // call `preventDefault` to signal that drops are allowed.\n // When the target is editable, dropping is already allowed by\n // default, and calling `preventDefault` hides the cursor.\n var value = editor.value;\n var schema = value.schema;\n\n var node = findNode(event.target, editor.value);\n if (schema.isVoid(node)) event.preventDefault();\n\n // COMPAT: IE won't call onDrop on contentEditables unless the\n // default dragOver is prevented:\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/913982/\n // (2018/07/11)\n if (IS_IE) event.preventDefault();\n\n // If a drag is already in progress, don't do this again.\n if (!isDragging) {\n isDragging = true;\n\n // COMPAT: IE will raise an `unspecified error` if dropEffect is\n // set. (2018/07/11)\n if (!IS_IE) {\n event.nativeEvent.dataTransfer.dropEffect = 'move';\n }\n }\n\n debug$6('onDragOver', { event: event });\n }\n\n /**\n * On drag start.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragStart(event, change, editor) {\n isDragging = true;\n\n debug$6('onDragStart', { event: event });\n }\n\n /**\n * On drop.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDrop(event, change, editor) {\n // Nothing happens in read-only mode.\n if (editor.props.readOnly) return true;\n\n // Prevent default so the DOM's value isn't corrupted.\n event.preventDefault();\n\n debug$6('onDrop', { event: event });\n }\n\n /**\n * On focus.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onFocus(event, change, editor) {\n if (isCopying) return true;\n if (editor.props.readOnly) return true;\n\n var el = findDOMNode(editor);\n\n // Save the new `activeElement`.\n var window = getWindow(event.target);\n activeElement = window.document.activeElement;\n\n // COMPAT: If the editor has nested editable elements, the focus can go to\n // those elements. In Firefox, this must be prevented because it results in\n // issues with keyboard navigation. (2017/03/30)\n if (IS_FIREFOX && event.target != el) {\n el.focus();\n return true;\n }\n\n debug$6('onFocus', { event: event });\n }\n\n /**\n * On input.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onInput(event, change, editor) {\n if (isComposing) return true;\n if (change.value.selection.isBlurred) return true;\n\n debug$6('onInput', { event: event });\n }\n\n /**\n * On key down.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onKeyDown(event, change, editor) {\n if (editor.props.readOnly) return true;\n\n // When composing, we need to prevent all hotkeys from executing while\n // typing. However, certain characters also move the selection before\n // we're able to handle it, so prevent their default behavior.\n if (isComposing) {\n if (Hotkeys.isCompose(event)) event.preventDefault();\n return true;\n }\n\n // Certain hotkeys have native editing behaviors in `contenteditable`\n // elements which will change the DOM and cause our value to be out of sync,\n // so they need to always be prevented.\n if (!IS_IOS && (Hotkeys.isBold(event) || Hotkeys.isDeleteBackward(event) || Hotkeys.isDeleteForward(event) || Hotkeys.isDeleteLineBackward(event) || Hotkeys.isDeleteLineForward(event) || Hotkeys.isDeleteWordBackward(event) || Hotkeys.isDeleteWordForward(event) || Hotkeys.isItalic(event) || Hotkeys.isRedo(event) || Hotkeys.isSplitBlock(event) || Hotkeys.isTransposeCharacter(event) || Hotkeys.isUndo(event))) {\n event.preventDefault();\n }\n\n debug$6('onKeyDown', { event: event });\n }\n\n /**\n * On paste.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onPaste(event, change, editor) {\n if (editor.props.readOnly) return true;\n\n // Prevent defaults so the DOM state isn't corrupted.\n event.preventDefault();\n\n debug$6('onPaste', { event: event });\n }\n\n /**\n * On select.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onSelect(event, change, editor) {\n if (isCopying) return true;\n if (isComposing) return true;\n if (editor.props.readOnly) return true;\n\n // Save the new `activeElement`.\n var window = getWindow(event.target);\n activeElement = window.document.activeElement;\n\n debug$6('onSelect', { event: event });\n }\n\n /**\n * Return the plugin.\n *\n * @type {Object}\n */\n\n return {\n onBeforeInput: onBeforeInput,\n onBlur: onBlur,\n onChange: onChange,\n onCompositionEnd: onCompositionEnd,\n onCompositionStart: onCompositionStart,\n onCopy: onCopy,\n onCut: onCut,\n onDragEnd: onDragEnd,\n onDragEnter: onDragEnter,\n onDragExit: onDragExit,\n onDragLeave: onDragLeave,\n onDragOver: onDragOver,\n onDragStart: onDragStart,\n onDrop: onDrop,\n onFocus: onFocus,\n onInput: onInput,\n onKeyDown: onKeyDown,\n onPaste: onPaste,\n onSelect: onSelect\n };\n}\n\n/**\n * Noop.\n *\n * @return {Void}\n */\n\nfunction noop() {}\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$7 = Debug('slate:editor');\n\n/**\n * Editor.\n *\n * @type {Component}\n */\n\nvar Editor = function (_React$Component) {\n inherits(Editor, _React$Component);\n\n function Editor() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Editor);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Editor.__proto__ || Object.getPrototypeOf(Editor)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps$4.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Default properties.\n *\n * @type {Object}\n */\n\n /**\n * Initial state.\n *\n * @type {Object}\n */\n\n /**\n * Temporary values.\n *\n * @type {Object}\n */\n\n /**\n * Create a set of bound event handlers.\n *\n * @type {Object}\n */\n\n createClass(Editor, [{\n key: 'componentDidMount',\n\n\n /**\n * When the component first mounts, flush any temporary changes, and then,\n * focus the editor if `autoFocus` is set.\n */\n\n value: function componentDidMount() {\n this.tmp.updates++;\n\n var autoFocus = this.props.autoFocus;\n var change = this.tmp.change;\n\n\n if (autoFocus) {\n if (change) {\n change.focus();\n } else {\n this.focus();\n }\n }\n\n if (change) {\n this.onChange(change);\n }\n }\n\n /**\n * When the component updates, flush any temporary change.\n */\n\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n this.tmp.updates++;\n\n var _tmp = this.tmp,\n change = _tmp.change,\n resolves = _tmp.resolves,\n updates = _tmp.updates;\n\n // If we've resolved a few times already, and it's exactly in line with\n // the updates, then warn the user that they may be doing something wrong.\n\n warning(resolves < 5 || resolves !== updates, 'A Slate <Editor> component is re-resolving `props.plugins` or `props.schema` on each update, which leads to poor performance. This is often due to passing in a new `schema` or `plugins` prop with each render by declaring them inline in your render function. Do not do this!');\n\n if (change) {\n this.onChange(change);\n }\n }\n\n /**\n * Render the editor.\n *\n * @return {Element}\n */\n\n }, {\n key: 'render',\n value: function render() {\n debug$7('render', this);\n var props = _extends({}, this.props);\n var tree = this.stack.render('renderEditor', props, this);\n return tree;\n }\n\n /**\n * Get the editor's current plugins.\n *\n * @return {Array}\n */\n\n }, {\n key: 'plugins',\n get: function get$$1() {\n var plugins = this.resolvePlugins(this.props.plugins, this.props.schema);\n return plugins;\n }\n\n /**\n * Get the editor's current schema.\n *\n * @return {Schema}\n */\n\n }, {\n key: 'schema',\n get: function get$$1() {\n var schema = this.resolveSchema(this.plugins);\n return schema;\n }\n\n /**\n * Get the editor's current stack.\n *\n * @return {Stack}\n */\n\n }, {\n key: 'stack',\n get: function get$$1() {\n var stack = this.resolveStack(this.plugins);\n return stack;\n }\n\n /**\n * Get the editor's current value.\n *\n * @return {Value}\n */\n\n }, {\n key: 'value',\n get: function get$$1() {\n // If the current `plugins` and `value` are the same as the last seen ones\n // that were saved in `tmp`, don't re-resolve because that will trigger\n // extra `onChange` runs.\n if (this.plugins === this.tmp.plugins && this.props.value === this.tmp.value) {\n return this.tmp.value;\n }\n\n var value = this.resolveValue(this.plugins, this.props.value);\n return value;\n }\n\n /**\n * Perform a change on the editor, passing `...args` to `change.call`.\n *\n * @param {Mixed} ...args\n */\n\n /**\n * Programmatically blur the editor.\n */\n\n /**\n * Programmatically focus the editor.\n */\n\n /**\n * On change.\n *\n * @param {Change} change\n */\n\n /**\n * On event.\n *\n * @param {String} handler\n * @param {Event} event\n */\n\n /**\n * Resolve a change from the current `plugins`, a potential `change` and its\n * current operations `size`.\n *\n * @param {Array} plugins\n * @param {Change} change\n * @param {Number} size\n */\n\n /**\n * Resolve a set of plugins from potential `plugins` and a `schema`.\n *\n * In addition to the plugins provided in props, this will initialize three\n * other plugins:\n *\n * - The top-level editor plugin, which allows for top-level handlers, etc.\n * - The two \"core\" plugins, one before all the other and one after.\n *\n * @param {Array|Void} plugins\n * @param {Schema|Object|Void} schema\n * @return {Array}\n */\n\n /**\n * Resolve a schema from the current `plugins`.\n *\n * @param {Array} plugins\n * @return {Schema}\n */\n\n /**\n * Resolve a stack from the current `plugins`.\n *\n * @param {Array} plugins\n * @return {Stack}\n */\n\n /**\n * Resolve a value from the current `plugins` and a potential `value`.\n *\n * @param {Array} plugins\n * @param {Value} value\n * @return {Change}\n */\n\n }]);\n return Editor;\n}(React.Component);\n\n/**\n * Mix in the prop types for the event handlers.\n */\n\nEditor.propTypes = {\n autoCorrect: Types.bool,\n autoFocus: Types.bool,\n className: Types.string,\n onChange: Types.func,\n placeholder: Types.any,\n plugins: Types.array,\n readOnly: Types.bool,\n role: Types.string,\n schema: Types.object,\n spellCheck: Types.bool,\n style: Types.object,\n tabIndex: Types.number,\n value: SlateTypes.value.isRequired };\nEditor.defaultProps = {\n autoFocus: false,\n autoCorrect: true,\n onChange: noop,\n plugins: [],\n readOnly: false,\n schema: {},\n spellCheck: true };\n\nvar _initialiseProps$4 = function _initialiseProps() {\n var _this2 = this;\n\n this.state = {};\n this.tmp = {\n change: null,\n isChanging: false,\n operationsSize: null,\n plugins: null,\n resolves: 0,\n updates: 0,\n value: null };\n this.handlers = EVENT_HANDLERS.reduce(function (obj, handler) {\n obj[handler] = function (event) {\n return _this2.onEvent(handler, event);\n };\n return obj;\n }, {});\n\n this.change = function () {\n if (_this2.tmp.isChanging) {\n warning(false, \"The `editor.change` method was called from within an existing `editor.change` callback. This is not allowed, and often due to calling `editor.change` directly from a plugin's event handler which is unnecessary.\");\n\n return;\n }\n\n var change = _this2.value.change();\n\n try {\n _this2.tmp.isChanging = true;\n change.call.apply(change, arguments);\n } catch (error) {\n throw error;\n } finally {\n _this2.tmp.isChanging = false;\n }\n\n _this2.onChange(change);\n };\n\n this.blur = function () {\n _this2.change(function (c) {\n return c.blur();\n });\n };\n\n this.focus = function () {\n _this2.change(function (c) {\n return c.focus();\n });\n };\n\n this.onChange = function (change) {\n // If the change doesn't define any operations to apply, abort.\n if (change.operations.size === 0) {\n return;\n }\n\n debug$7('onChange', { change: change });\n change = _this2.resolveChange(_this2.plugins, change, change.operations.size);\n\n // Store a reference to the last `value` and `plugins` that were seen by the\n // editor, so we can know whether to normalize a new unknown value if one\n // is passed in via `this.props`.\n _this2.tmp.value = change.value;\n _this2.tmp.plugins = _this2.plugins;\n\n // Remove the temporary `change`, since it's being flushed.\n delete _this2.tmp.change;\n delete _this2.tmp.operationsSize;\n\n _this2.props.onChange(change);\n };\n\n this.onEvent = function (handler, event) {\n _this2.change(function (change) {\n _this2.stack.run(handler, event, change, _this2);\n });\n };\n\n this.resolveChange = memoizeOne(function (plugins, change, size) {\n var stack = _this2.resolveStack(plugins);\n stack.run('onChange', change, _this2);\n return change;\n });\n this.resolvePlugins = memoizeOne(function () {\n var plugins = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n debug$7('resolvePlugins', { plugins: plugins, schema: schema });\n _this2.tmp.resolves++;\n\n var beforePlugin = BeforePlugin();\n var afterPlugin = AfterPlugin();\n var editorPlugin = { schema: schema };\n\n var _loop = function _loop(_prop) {\n // Skip `onChange` because the editor's `onChange` is special.\n if (_prop == 'onChange') return 'continue';\n\n // Skip `schema` because it can't be proxied easily, so it must be passed\n // in as an argument to this function instead.\n if (_prop == 'schema') return 'continue';\n\n // Define a function that will just proxies into `props`.\n editorPlugin[_prop] = function () {\n var _props;\n\n return _this2.props[_prop] && (_props = _this2.props)[_prop].apply(_props, arguments);\n };\n };\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = PLUGIN_PROPS[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _prop = _step2.value;\n\n var _ret2 = _loop(_prop);\n\n if (_ret2 === 'continue') continue;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return [beforePlugin, editorPlugin].concat(toConsumableArray(plugins), [afterPlugin]);\n });\n this.resolveSchema = memoizeOne(function (plugins) {\n debug$7('resolveSchema', { plugins: plugins });\n var schema = Schema.create({ plugins: plugins });\n return schema;\n });\n this.resolveStack = memoizeOne(function (plugins) {\n debug$7('resolveStack', { plugins: plugins });\n var stack = Stack.create({ plugins: plugins });\n return stack;\n });\n this.resolveValue = memoizeOne(function (plugins, value) {\n debug$7('resolveValue', { plugins: plugins, value: value });\n var change = value.change();\n change = _this2.resolveChange(plugins, change, change.operations.size);\n\n // Store the change and it's operations count so that it can be flushed once\n // the component next updates.\n _this2.tmp.change = change;\n _this2.tmp.operationsSize = change.operations.size;\n\n return change.value;\n });\n};\n\nvar _iteratorNormalCompletion = true;\nvar _didIteratorError = false;\nvar _iteratorError = undefined;\n\ntry {\n for (var _iterator = EVENT_HANDLERS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var prop = _step.value;\n\n Editor.propTypes[prop] = Types.func;\n }\n\n /**\n * Export.\n *\n * @type {Component}\n */\n} catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n} finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n}\n\nvar index = {\n Editor: Editor,\n cloneFragment: cloneFragment,\n findDOMNode: findDOMNode$1,\n findDOMRange: findDOMRange,\n findNode: findNode,\n findRange: findRange,\n getEventRange: getEventRange,\n getEventTransfer: getEventTransfer,\n setEventTransfer: setEventTransfer,\n AfterPlugin: AfterPlugin,\n BeforePlugin: BeforePlugin\n};\n\nexport default index;\nexport { Editor, cloneFragment, findDOMNode$1 as findDOMNode, findDOMRange, findNode, findRange, getEventRange, getEventTransfer, setEventTransfer, AfterPlugin, BeforePlugin };\n//# sourceMappingURL=slate-react.es.js.map\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack/bootstrap","node_modules/react/react.js","node_modules/prop-types/index.js","node_modules/matrix-react-sdk/lib/languageHandler.js","node_modules/matrix-react-sdk/lib/index.js","node_modules/babel-runtime/helpers/classCallCheck.js","node_modules/babel-runtime/helpers/createClass.js","node_modules/immutable/dist/immutable.js","node_modules/core-js/modules/_export.js","node_modules/matrix-react-sdk/lib/MatrixClientPeg.js","node_modules/bluebird/js/browser/bluebird.js","node_modules/matrix-react-sdk/lib/dispatcher.js","node_modules/babel-runtime/core-js/object/get-prototype-of.js","node_modules/babel-runtime/helpers/possibleConstructorReturn.js","node_modules/babel-runtime/helpers/inherits.js","node_modules/babel-runtime/core-js/object/keys.js","node_modules/matrix-react-sdk/lib/Modal.js","(webpack)/buildin/global.js","node_modules/babel-runtime/regenerator/index.js","node_modules/core-js/library/modules/_core.js","node_modules/babel-runtime/core-js/get-iterator.js","node_modules/matrix-js-sdk/browser-index.js","node_modules/matrix-react-sdk/lib/settings/SettingsStore.js","node_modules/slate/lib/slate.es.js","node_modules/fbjs/lib/invariant.js","node_modules/classnames/index.js","node_modules/core-js/modules/_an-object.js","node_modules/matrix-react-sdk/lib/components/views/elements/AccessibleButton.js","node_modules/core-js/library/modules/_export.js","node_modules/core-js/modules/_global.js","node_modules/matrix-js-sdk/lib/utils.js","node_modules/core-js/modules/_fails.js","node_modules/babel-runtime/core-js/json/stringify.js","node_modules/core-js/modules/_is-object.js","node_modules/core-js/library/modules/_global.js","node_modules/core-js/library/modules/_is-object.js","node_modules/react-dom/lib/reactProdInvariant.js","node_modules/matrix-react-sdk/lib/SdkConfig.js","node_modules/fbjs/lib/warning.js","node_modules/babel-runtime/helpers/extends.js","node_modules/core-js/library/modules/_wks.js","node_modules/babel-runtime/core-js/object/assign.js","node_modules/react-dom/index.js","node_modules/core-js/modules/_wks.js","node_modules/is-plain-object/index.js","node_modules/core-js/library/modules/_descriptors.js","node_modules/object-assign/index.js","node_modules/babel-runtime/helpers/defineProperty.js","node_modules/core-js/library/modules/_object-dp.js","node_modules/core-js/modules/_descriptors.js","node_modules/core-js/modules/_object-dp.js","node_modules/core-js/modules/_to-length.js","node_modules/babel-runtime/helpers/toConsumableArray.js","node_modules/core-js/library/modules/_an-object.js","node_modules/react-dom/lib/ReactDOMComponentTree.js","node_modules/get-window/index.js","node_modules/core-js/modules/_to-object.js","node_modules/core-js/library/modules/_fails.js","node_modules/core-js/library/modules/_has.js","node_modules/core-js/library/modules/_to-iobject.js","node_modules/core-js/library/modules/_hide.js","node_modules/slate-dev-warning/lib/slate-dev-warning.es.js","node_modules/babel-runtime/core-js/promise.js","node_modules/events/events.js","node_modules/core-js/modules/_a-function.js","node_modules/process/browser.js","node_modules/babel-runtime/helpers/typeof.js","node_modules/debug/src/browser.js","node_modules/core-js/library/modules/_ctx.js","node_modules/core-js/library/modules/_object-sap.js","node_modules/fbjs/lib/ExecutionEnvironment.js","node_modules/react-beautiful-dnd/lib/state/position.js","node_modules/core-js/modules/_hide.js","node_modules/core-js/modules/_redefine.js","node_modules/core-js/modules/_string-html.js","node_modules/core-js/library/modules/_property-desc.js","node_modules/core-js/library/modules/_iterators.js","node_modules/core-js/library/modules/_object-keys.js","node_modules/babel-runtime/core-js/object/create.js","node_modules/url/url.js","node_modules/matrix-react-sdk/lib/matrix-to.js","node_modules/matrix-react-sdk/lib/Keyboard.js","node_modules/matrix-react-sdk/lib/stores/GroupStore.js","node_modules/memoize-one/esm/index.js","node_modules/matrix-react-sdk/lib/PlatformPeg.js","node_modules/core-js/modules/_has.js","node_modules/core-js/modules/_to-iobject.js","node_modules/core-js/modules/_object-gopd.js","node_modules/core-js/modules/_object-gpo.js","node_modules/core-js/library/modules/es6.string.iterator.js","node_modules/core-js/library/modules/_library.js","node_modules/core-js/library/modules/_to-object.js","node_modules/react-dom/lib/ReactInstrumentation.js","node_modules/matrix-js-sdk/lib/logger.js","node_modules/matrix-react-sdk/lib/Analytics.js","node_modules/core-js/modules/_core.js","node_modules/core-js/modules/_ctx.js","node_modules/core-js/modules/_cof.js","node_modules/core-js/modules/_strict-method.js","node_modules/core-js/library/modules/_a-function.js","node_modules/core-js/library/modules/_cof.js","node_modules/core-js/library/modules/_uid.js","node_modules/fbjs/lib/emptyFunction.js","node_modules/react-dom/lib/ReactUpdates.js","node_modules/babel-runtime/core-js/object/values.js","node_modules/browser-request/index.js","node_modules/lodash/_root.js","node_modules/lodash/isArray.js","node_modules/lodash/isObject.js","node_modules/matrix-react-sdk/lib/stores/RoomViewStore.js","node_modules/core-js/modules/_to-primitive.js","node_modules/core-js/modules/_defined.js","node_modules/core-js/modules/_to-integer.js","node_modules/core-js/modules/_object-sap.js","node_modules/core-js/modules/_array-methods.js","node_modules/core-js/library/modules/_to-integer.js","node_modules/core-js/library/modules/_defined.js","node_modules/core-js/library/modules/web.dom.iterable.js","node_modules/matrix-react-sdk/lib/linkify-matrix.js","node_modules/babel-runtime/helpers/slicedToArray.js","node_modules/core-js/modules/_typed-array.js","node_modules/core-js/modules/_metadata.js","node_modules/core-js/library/modules/_to-primitive.js","node_modules/core-js/library/modules/_object-create.js","node_modules/core-js/library/modules/_to-length.js","node_modules/core-js/library/modules/_shared-key.js","node_modules/core-js/library/modules/_shared.js","node_modules/core-js/library/modules/_enum-bug-keys.js","node_modules/core-js/library/modules/_set-to-string-tag.js","node_modules/react/lib/ReactCurrentOwner.js","node_modules/core-js/library/modules/_object-pie.js","node_modules/react-dom/lib/SyntheticEvent.js","node_modules/matrix-react-sdk/lib/CallHandler.js","node_modules/babel-runtime/helpers/objectWithoutProperties.js","node_modules/matrix-react-sdk/lib/utils/DMRoomMap.js","node_modules/core-js/modules/_meta.js","node_modules/core-js/modules/_library.js","node_modules/core-js/modules/_add-to-unscopables.js","node_modules/core-js/library/modules/_dom-create.js","node_modules/core-js/library/modules/_meta.js","node_modules/babel-runtime/core-js/set.js","node_modules/matrix-react-sdk/lib/settings/handlers/SettingsHandler.js","node_modules/matrix-react-sdk/lib/Notifier.js","node_modules/flux/node_modules/fbjs/lib/invariant.js","node_modules/matrix-react-sdk/lib/utils/WidgetUtils.js","node_modules/matrix-react-sdk/lib/components/structures/ContextualMenu.js","node_modules/matrix-react-sdk/lib/DateUtils.js","node_modules/lodash/isObjectLike.js","node_modules/matrix-react-sdk/lib/stores/FlairStore.js","node_modules/react-beautiful-dnd/lib/state/visibility/get-viewport.js","node_modules/react-beautiful-dnd/lib/view/context-keys.js","node_modules/matrix-react-sdk/lib/Rooms.js","node_modules/core-js/modules/_property-desc.js","node_modules/core-js/modules/_uid.js","node_modules/core-js/modules/_object-keys.js","node_modules/core-js/modules/_to-absolute-index.js","node_modules/core-js/modules/_object-create.js","node_modules/core-js/modules/_object-gopn.js","node_modules/core-js/modules/_set-species.js","node_modules/core-js/modules/_an-instance.js","node_modules/core-js/modules/_for-of.js","node_modules/core-js/modules/_redefine-all.js","node_modules/core-js/library/modules/_ie8-dom-define.js","node_modules/core-js/library/modules/_object-keys-internal.js","node_modules/core-js/library/modules/_iobject.js","node_modules/core-js/library/modules/_classof.js","node_modules/react/lib/React.js","node_modules/core-js/library/modules/_wks-ext.js","node_modules/core-js/library/modules/_wks-define.js","node_modules/react-dom/lib/PooledClass.js","node_modules/react-dom/lib/ReactReconciler.js","node_modules/matrix-js-sdk/lib/models/event.js","(webpack)/buildin/module.js","node_modules/matrix-js-sdk/lib/models/event-timeline.js","node_modules/matrix-react-sdk/lib/ScalarAuthClient.js","node_modules/matrix-react-sdk/lib/Tinter.js","node_modules/lodash/_getNative.js","node_modules/matrix-react-sdk/lib/autocomplete/AutocompleteProvider.js","node_modules/matrix-react-sdk/lib/autocomplete/Components.js","node_modules/core-js/modules/_set-to-string-tag.js","node_modules/core-js/modules/_string-trim.js","node_modules/core-js/modules/_iterators.js","node_modules/core-js/modules/_validate-collection.js","node_modules/core-js/library/modules/_iter-define.js","node_modules/core-js/library/modules/core.get-iterator-method.js","node_modules/react/lib/ReactElement.js","node_modules/core-js/library/modules/_object-gops.js","node_modules/react-dom/lib/DOMProperty.js","node_modules/react-dom/lib/DOMLazyTree.js","node_modules/lodash/_Symbol.js","node_modules/lodash/_baseGetTag.js","node_modules/matrix-react-sdk/lib/UserAddress.js","node_modules/react-beautiful-dnd/lib/index.js","node_modules/react-beautiful-dnd/lib/state/get-area.js","node_modules/react-beautiful-dnd/lib/state/get-draggables-inside-droppable.js","node_modules/react-beautiful-dnd/lib/state/get-displacement.js","node_modules/matrix-react-sdk/lib/ratelimitedfunc.js","node_modules/matrix-react-sdk/lib/ObjectUtils.js","node_modules/lodash/_castPath.js","node_modules/lodash/_toKey.js","node_modules/commonmark/lib/common.js","node_modules/lodash/pick.js","node_modules/core-js/modules/_iobject.js","node_modules/core-js/modules/_object-pie.js","node_modules/core-js/modules/_classof.js","node_modules/babel-runtime/core-js/array/from.js","node_modules/core-js/library/modules/_redefine.js","node_modules/core-js/library/modules/_array-includes.js","node_modules/core-js/library/modules/_to-absolute-index.js","node_modules/core-js/library/modules/_object-gpo.js","node_modules/babel-runtime/node_modules/regenerator-runtime/runtime-module.js","node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js","node_modules/timers-browserify/main.js","node_modules/setimmediate/setImmediate.js","node_modules/core-js/library/fn/object/keys.js","node_modules/core-js/library/modules/es6.object.keys.js","node_modules/babel-runtime/core-js/object/define-property.js","node_modules/react/lib/reactProdInvariant.js","node_modules/fbjs/lib/emptyObject.js","node_modules/core-js/library/modules/_object-gopd.js","node_modules/core-js/library/modules/_object-gopn.js","node_modules/react-dom/lib/EventPropagators.js","node_modules/react-dom/lib/EventPluginHub.js","node_modules/react-dom/lib/SyntheticUIEvent.js","node_modules/react-dom/lib/ReactInstanceMap.js","node_modules/node-libs-browser/node_modules/buffer/index.js","node_modules/core-js/library/modules/_for-of.js","node_modules/matrix-js-sdk/lib/crypto/store/indexeddb-crypto-store.js","node_modules/matrix-js-sdk/lib/crypto/olmlib.js","node_modules/matrix-js-sdk/lib/webrtc/call.js","node_modules/inherits/inherits_browser.js","node_modules/babel-runtime/helpers/get.js","node_modules/sanitize-html/dist/index.js","node_modules/htmlparser2/lib/index.js","node_modules/domelementtype/index.js","node_modules/source-map/lib/util.js","node_modules/velocity-vector/velocity.js","node_modules/matrix-react-sdk/lib/HtmlUtils.js","node_modules/matrix-react-sdk/lib/components/views/elements/ReplyThread.js","node_modules/lodash/isSymbol.js","node_modules/matrix-react-sdk/lib/groups.js","node_modules/react-beautiful-dnd/lib/state/spacing.js","node_modules/react-beautiful-dnd/lib/state/move-to-edge.js","node_modules/flux/utils.js","node_modules/matrix-react-sdk/lib/stores/ActiveWidgetStore.js","node_modules/matrix-react-sdk/lib/utils/ErrorUtils.js","node_modules/matrix-react-sdk/lib/wrappers/withMatrixClient.js","node_modules/matrix-react-sdk/lib/utils/FormattingUtils.js","node_modules/linkifyjs/index.js","node_modules/matrix-react-sdk/lib/components/views/avatars/MemberAvatar.js","node_modules/lodash/keys.js","node_modules/lodash/isArrayLike.js","node_modules/matrix-react-sdk/lib/autocomplete/QueryMatcher.js","node_modules/lodash/sortBy.js","node_modules/lodash/_copyObject.js","node_modules/invariant/browser.js","node_modules/core-js/modules/_shared.js","node_modules/core-js/modules/_array-includes.js","node_modules/core-js/modules/_object-gops.js","node_modules/core-js/modules/_is-array.js","node_modules/core-js/modules/_is-regexp.js","node_modules/core-js/modules/_iter-detect.js","node_modules/core-js/modules/_flags.js","node_modules/core-js/modules/_fix-re-wks.js","node_modules/core-js/modules/_species-constructor.js","node_modules/core-js/modules/_user-agent.js","node_modules/core-js/modules/_collection.js","node_modules/core-js/modules/_typed.js","node_modules/core-js/modules/_object-forced-pam.js","node_modules/core-js/modules/_set-collection-of.js","node_modules/core-js/modules/_set-collection-from.js","node_modules/core-js/library/modules/_object-dps.js","node_modules/core-js/library/modules/_html.js","node_modules/core-js/library/modules/_iter-call.js","node_modules/core-js/library/modules/_is-array-iter.js","node_modules/core-js/library/modules/_iter-detect.js","node_modules/core-js/library/modules/_object-gopn-ext.js","node_modules/core-js/library/modules/_iter-step.js","node_modules/core-js/library/modules/_is-array.js","node_modules/react-dom/lib/Transaction.js","node_modules/react-dom/lib/SyntheticMouseEvent.js","node_modules/react-dom/lib/setInnerHTML.js","node_modules/react-dom/lib/escapeTextContentForBrowser.js","node_modules/react-dom/lib/ReactBrowserEventEmitter.js","node_modules/matrix-js-sdk/lib/models/user.js","node_modules/matrix-js-sdk/lib/sync-accumulator.js","node_modules/matrix-js-sdk/lib/http-api.js","node_modules/babel-runtime/core-js/object/entries.js","node_modules/matrix-js-sdk/lib/pushprocessor.js","node_modules/querystring-es3/index.js","node_modules/matrix-js-sdk/lib/content-repo.js","node_modules/matrix-react-sdk/lib/Avatar.js","node_modules/matrix-react-sdk/lib/Resend.js","node_modules/matrix-react-sdk/lib/stores/WidgetEchoStore.js","node_modules/postcss/lib/at-rule.js","node_modules/postcss/lib/rule.js","node_modules/lodash/_arrayMap.js","node_modules/emojione/lib/js/emojione.js","node_modules/matrix-react-sdk/lib/utils/MultiInviter.js","node_modules/react-beautiful-dnd/lib/state/no-impact.js","node_modules/react-beautiful-dnd/lib/state/dimension.js","node_modules/react-motion/lib/stripStyle.js","node_modules/react-beautiful-dnd/lib/view/drag-handle/util/stop-event.js","node_modules/lodash/_nativeCreate.js","node_modules/lodash/_ListCache.js","node_modules/lodash/_assocIndexOf.js","node_modules/lodash/eq.js","node_modules/lodash/_getMapData.js","node_modules/matrix-react-sdk/lib/Unread.js","node_modules/linkifyjs/lib/linkify/utils/class.js","node_modules/filesize/lib/filesize.js","node_modules/matrix-react-sdk/lib/email.js","node_modules/matrix-react-sdk/lib/components/views/messages/MFileBody.js","node_modules/matrix-react-sdk/lib/utils/DecryptFile.js","node_modules/linkifyjs/element.js","node_modules/lodash/_isIndex.js","node_modules/lodash/_baseUnary.js","node_modules/lodash/_getTag.js","node_modules/lodash/_baseGet.js","node_modules/lodash/identity.js","node_modules/matrix-react-sdk/lib/notifications/NotificationUtils.js","node_modules/slate-plain-serializer/lib/slate-plain-serializer.es.js","node_modules/is-hotkey/lib/index.js","node_modules/type-of/index.js","node_modules/matrix-react-sdk/lib/rageshake/rageshake.js","node_modules/core-js/modules/_dom-create.js","node_modules/core-js/modules/_wks-define.js","node_modules/core-js/modules/_shared-key.js","node_modules/core-js/modules/_enum-bug-keys.js","node_modules/core-js/modules/_html.js","node_modules/core-js/modules/_set-proto.js","node_modules/core-js/modules/_string-ws.js","node_modules/core-js/modules/_inherit-if-required.js","node_modules/core-js/modules/_string-repeat.js","node_modules/core-js/modules/_math-sign.js","node_modules/core-js/modules/_math-expm1.js","node_modules/core-js/modules/_string-at.js","node_modules/core-js/modules/_iter-define.js","node_modules/core-js/modules/_iter-create.js","node_modules/core-js/modules/_string-context.js","node_modules/core-js/modules/_fails-is-regexp.js","node_modules/core-js/modules/_is-array-iter.js","node_modules/core-js/modules/_create-property.js","node_modules/core-js/modules/core.get-iterator-method.js","node_modules/core-js/modules/_array-species-create.js","node_modules/core-js/modules/_array-fill.js","node_modules/core-js/modules/es6.array.iterator.js","node_modules/core-js/modules/_task.js","node_modules/core-js/modules/_microtask.js","node_modules/core-js/modules/_new-promise-capability.js","node_modules/core-js/modules/_typed-buffer.js","node_modules/core-js/library/fn/array/from.js","node_modules/core-js/library/modules/_string-at.js","node_modules/core-js/library/modules/_iter-create.js","node_modules/core-js/library/modules/es6.array.from.js","node_modules/core-js/library/modules/_create-property.js","node_modules/core-js/library/fn/object/define-property.js","node_modules/core-js/library/modules/es6.object.define-property.js","node_modules/core-js/library/fn/object/create.js","node_modules/core-js/library/modules/es6.object.create.js","node_modules/babel-runtime/core-js/symbol/iterator.js","node_modules/core-js/library/fn/symbol/iterator.js","node_modules/core-js/library/modules/es6.array.iterator.js","node_modules/core-js/library/modules/_add-to-unscopables.js","node_modules/babel-runtime/core-js/symbol.js","node_modules/core-js/library/fn/symbol/index.js","node_modules/core-js/library/modules/es6.symbol.js","node_modules/core-js/library/modules/_enum-keys.js","node_modules/core-js/library/modules/es7.symbol.async-iterator.js","node_modules/core-js/library/modules/es7.symbol.observable.js","node_modules/react-dom/lib/EventPluginRegistry.js","node_modules/react-dom/lib/EventPluginUtils.js","node_modules/react-dom/lib/ReactErrorUtils.js","node_modules/react-dom/lib/getEventTarget.js","node_modules/react-dom/lib/isEventSupported.js","node_modules/react-dom/lib/getEventModifierState.js","node_modules/react-dom/lib/DOMChildrenOperations.js","node_modules/react-dom/lib/DOMNamespaces.js","node_modules/react-dom/lib/createMicrosoftUnsafeLocalFunction.js","node_modules/react-dom/lib/LinkedValueUtils.js","node_modules/react-dom/lib/ReactComponentEnvironment.js","node_modules/react-dom/lib/instantiateReactComponent.js","node_modules/fbjs/lib/shallowEqual.js","node_modules/react-dom/lib/shouldUpdateReactComponent.js","node_modules/react-dom/lib/KeyEscapeUtils.js","node_modules/react-dom/lib/ReactUpdateQueue.js","node_modules/react-dom/lib/validateDOMNesting.js","node_modules/react-dom/lib/getEventCharCode.js","node_modules/matrix-react-sdk/lib/RtsClient.js","node_modules/core-js/library/fn/json/stringify.js","node_modules/unhomoglyph/index.js","node_modules/core-js/library/fn/get-iterator.js","node_modules/core-js/library/modules/core.get-iterator.js","node_modules/babel-runtime/core-js/is-iterable.js","node_modules/core-js/library/fn/is-iterable.js","node_modules/core-js/library/modules/core.is-iterable.js","node_modules/matrix-js-sdk/lib/store/indexeddb-local-backend.js","node_modules/matrix-js-sdk/lib/errors.js","node_modules/core-js/library/modules/_redefine-all.js","node_modules/core-js/library/modules/_an-instance.js","node_modules/core-js/library/modules/_validate-collection.js","node_modules/matrix-js-sdk/lib/crypto/store/memory-crypto-store.js","node_modules/matrix-js-sdk/lib/crypto/algorithms/base.js","node_modules/matrix-js-sdk/lib/crypto/deviceinfo.js","node_modules/matrix-js-sdk/lib/models/room-member.js","node_modules/matrix-js-sdk/lib/filter.js","node_modules/core-js/library/modules/_task.js","node_modules/core-js/library/modules/_new-promise-capability.js","node_modules/matrix-js-sdk/lib/models/event-timeline-set.js","node_modules/matrix-react-sdk/lib/TextForEvent.js","node_modules/matrix-react-sdk/lib/cryptodevices.js","src/vector/getconfig.js","node_modules/entities/index.js","node_modules/postcss/lib/declaration.js","node_modules/postcss/lib/node.js","node_modules/path-browserify/index.js","node_modules/postcss/lib/stringify.js","node_modules/postcss/lib/parse.js","node_modules/postcss/lib/comment.js","node_modules/postcss/lib/container.js","node_modules/postcss/lib/root.js","node_modules/highlight.js/lib/index.js","node_modules/react-beautiful-dnd/lib/state/is-within.js","node_modules/react-beautiful-dnd/lib/state/visibility/is-partially-visible.js","node_modules/reselect/lib/index.js","node_modules/react-beautiful-dnd/lib/view/get-window-scroll-position.js","node_modules/react-motion/lib/mapToZero.js","node_modules/react-motion/lib/stepper.js","node_modules/react-motion/node_modules/performance-now/lib/performance-now.js","node_modules/raf/index.js","node_modules/react-motion/lib/shouldStopAnimation.js","node_modules/react-beautiful-dnd/lib/view/drag-handle/util/create-scheduler.js","node_modules/react-beautiful-dnd/lib/view/get-window-from-ref.js","node_modules/react-beautiful-dnd/lib/view/key-codes.js","node_modules/matrix-react-sdk/lib/stores/SessionStore.js","node_modules/matrix-react-sdk/lib/stores/RoomListStore.js","node_modules/lodash/uniq.js","node_modules/lodash/_MapCache.js","node_modules/lodash/_Map.js","node_modules/lodash/_setToArray.js","node_modules/matrix-react-sdk/lib/shouldHideEvent.js","node_modules/matrix-react-sdk/lib/actions/actionCreators.js","node_modules/matrix-react-sdk/lib/stores/TagOrderStore.js","node_modules/matrix-react-sdk/lib/createRoom.js","node_modules/matrix-react-sdk/lib/Registration.js","node_modules/linkifyjs/lib/linkify.js","node_modules/linkifyjs/lib/linkify/core/tokens/text.js","node_modules/matrix-react-sdk/lib/RoomNotifs.js","node_modules/matrix-react-sdk/lib/AddThreepid.js","node_modules/matrix-react-sdk/lib/components/views/elements/SyntaxHighlight.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/QuestionDialog.js","node_modules/matrix-react-sdk/lib/components/views/elements/AppTile.js","node_modules/matrix-react-sdk/lib/ScalarMessaging.js","node_modules/matrix-react-sdk/lib/components/views/elements/TintableSvg.js","node_modules/lodash/_baseIsEqual.js","node_modules/lodash/_Stack.js","node_modules/lodash/_arrayPush.js","node_modules/lodash/_getSymbols.js","node_modules/lodash/isArguments.js","node_modules/lodash/isBuffer.js","node_modules/lodash/isLength.js","node_modules/lodash/_nodeUtil.js","node_modules/lodash/_isPrototype.js","node_modules/lodash/_baseFlatten.js","node_modules/lodash/_isKey.js","node_modules/lodash/_flatRest.js","node_modules/lodash/_assignValue.js","node_modules/lodash/_getPrototype.js","node_modules/lodash/_cloneArrayBuffer.js","node_modules/commonmark/lib/node.js","node_modules/matrix-react-sdk/lib/notifications/PushRuleVectorState.js","node_modules/react-is/index.js","node_modules/lodash-es/_root.js","node_modules/lodash-es/_Symbol.js","node_modules/lodash-es/_getRawTag.js","node_modules/lodash-es/_objectToString.js","node_modules/lodash-es/_baseGetTag.js","node_modules/lodash-es/_overArg.js","node_modules/lodash-es/_getPrototype.js","node_modules/lodash-es/isObjectLike.js","node_modules/lodash-es/isPlainObject.js","node_modules/redux/es/createStore.js","node_modules/redux/es/combineReducers.js","node_modules/redux/es/bindActionCreators.js","node_modules/redux/es/compose.js","node_modules/redux/es/applyMiddleware.js","node_modules/redux/es/index.js","node_modules/symbol-observable/es/index.js","node_modules/esrever/esrever.js","node_modules/lodash/omit.js","node_modules/react-immutable-proptypes/dist/ImmutablePropTypes.js","node_modules/isomorphic-base64/browser.js","(webpack)/buildin/amd-options.js","node_modules/core-js/modules/_ie8-dom-define.js","node_modules/core-js/modules/_wks-ext.js","node_modules/core-js/modules/_object-keys-internal.js","node_modules/core-js/modules/_object-dps.js","node_modules/core-js/modules/_object-gopn-ext.js","node_modules/core-js/modules/_object-assign.js","node_modules/core-js/modules/_bind.js","node_modules/core-js/modules/_invoke.js","node_modules/core-js/modules/_parse-int.js","node_modules/core-js/modules/_parse-float.js","node_modules/core-js/modules/_a-number-value.js","node_modules/core-js/modules/_is-integer.js","node_modules/core-js/modules/_math-log1p.js","node_modules/core-js/modules/_math-fround.js","node_modules/core-js/modules/_iter-call.js","node_modules/core-js/modules/_array-reduce.js","node_modules/core-js/modules/_array-copy-within.js","node_modules/core-js/modules/_iter-step.js","node_modules/core-js/modules/es6.regexp.flags.js","node_modules/core-js/modules/_perform.js","node_modules/core-js/modules/_promise-resolve.js","node_modules/core-js/modules/es6.map.js","node_modules/core-js/modules/_collection-strong.js","node_modules/core-js/modules/es6.set.js","node_modules/core-js/modules/es6.weak-map.js","node_modules/core-js/modules/_collection-weak.js","node_modules/core-js/modules/_to-index.js","node_modules/core-js/modules/_own-keys.js","node_modules/core-js/modules/_flatten-into-array.js","node_modules/core-js/modules/_string-pad.js","node_modules/core-js/modules/_object-to-array.js","node_modules/core-js/modules/_collection-to-json.js","node_modules/core-js/modules/_array-from-iterable.js","node_modules/core-js/modules/_math-scale.js","node_modules/react/lib/ReactBaseClasses.js","node_modules/react/lib/ReactNoopUpdateQueue.js","node_modules/react/lib/canDefineProperty.js","node_modules/react/lib/ReactElementSymbol.js","node_modules/prop-types/factory.js","node_modules/prop-types/lib/ReactPropTypesSecret.js","node_modules/babel-runtime/core-js/object/freeze.js","node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js","node_modules/react-dom/lib/ReactDOMComponentFlags.js","node_modules/react-dom/lib/ReactDefaultInjection.js","node_modules/react-dom/lib/accumulateInto.js","node_modules/react-dom/lib/forEachAccumulated.js","node_modules/react-dom/lib/getTextContentAccessor.js","node_modules/react-dom/lib/CallbackQueue.js","node_modules/react-dom/lib/ReactFeatureFlags.js","node_modules/react-dom/lib/inputValueTracking.js","node_modules/react-dom/lib/isTextInputElement.js","node_modules/react-dom/lib/ViewportMetrics.js","node_modules/react-dom/lib/setTextContent.js","node_modules/fbjs/lib/focusNode.js","node_modules/react-dom/lib/CSSProperty.js","node_modules/react-dom/lib/DOMPropertyOperations.js","node_modules/react-dom/lib/ReactDOMSelect.js","node_modules/react-dom/lib/ReactNodeTypes.js","node_modules/react-dom/lib/ReactEmptyComponent.js","node_modules/react-dom/lib/ReactHostComponent.js","node_modules/react-dom/lib/traverseAllChildren.js","node_modules/react/lib/ReactComponentTreeHook.js","node_modules/react-dom/lib/ReactServerRenderingTransaction.js","node_modules/react-dom/lib/ReactDefaultBatchingStrategy.js","node_modules/fbjs/lib/EventListener.js","node_modules/react-dom/lib/ReactInputSelection.js","node_modules/fbjs/lib/getActiveElement.js","node_modules/react-dom/lib/ReactMount.js","node_modules/react-dom/lib/ReactDOMContainerInfo.js","node_modules/react-dom/lib/ReactMarkupChecksum.js","node_modules/react-dom/lib/ReactVersion.js","node_modules/react-dom/lib/getHostComponentFromComposite.js","node_modules/matrix-react-sdk/node_modules/whatwg-fetch/fetch.js","node_modules/matrix-react-sdk/lib/VectorConferenceHandler.js","node_modules/matrix-js-sdk/lib/matrix.js","node_modules/matrix-js-sdk/lib/content-helpers.js","node_modules/matrix-js-sdk/lib/store/memory.js","node_modules/matrix-js-sdk/lib/store/indexeddb.js","node_modules/core-js/library/modules/_set-proto.js","node_modules/core-js/library/modules/_invoke.js","node_modules/matrix-js-sdk/lib/client.js","node_modules/core-js/library/modules/_collection-strong.js","node_modules/core-js/library/modules/_set-species.js","node_modules/core-js/library/modules/_collection.js","node_modules/core-js/library/modules/_collection-to-json.js","node_modules/core-js/library/modules/_set-collection-of.js","node_modules/core-js/library/modules/_set-collection-from.js","node_modules/core-js/library/modules/_object-to-array.js","node_modules/matrix-js-sdk/lib/ReEmitter.js","node_modules/another-json/another-json.js","node_modules/safe-buffer/index.js","node_modules/matrix-js-sdk/lib/randomstring.js","node_modules/matrix-js-sdk/lib/models/room-state.js","node_modules/babel-runtime/core-js/number/is-finite.js","node_modules/matrix-js-sdk/lib/models/room.js","node_modules/babel-runtime/core-js/number/is-integer.js","node_modules/core-js/library/modules/_species-constructor.js","node_modules/core-js/library/modules/_perform.js","node_modules/core-js/library/modules/_promise-resolve.js","node_modules/matrix-js-sdk/lib/models/group.js","node_modules/qs/lib/utils.js","node_modules/qs/lib/formats.js","node_modules/matrix-react-sdk/lib/utils/createMatrixClient.js","node_modules/util/util.js","node_modules/date-names/en.js","node_modules/matrix-react-sdk/lib/settings/controllers/SettingController.js","node_modules/matrix-react-sdk/lib/Roles.js","src/vector/platform/VectorBasePlatform.js","node_modules/matrix-react-sdk/lib/components/structures/HomePage.js","node_modules/htmlparser2/lib/Parser.js","node_modules/htmlparser2/lib/Tokenizer.js","node_modules/entities/lib/decode_codepoint.js","node_modules/domhandler/lib/node.js","node_modules/htmlparser2/lib/WritableStream.js","node_modules/postcss/lib/css-syntax-error.js","node_modules/postcss/lib/tokenize.js","node_modules/postcss/lib/input.js","node_modules/source-map/source-map.js","node_modules/source-map/lib/source-map-generator.js","node_modules/source-map/lib/base64-vlq.js","node_modules/source-map/lib/array-set.js","node_modules/postcss/lib/stringifier.js","node_modules/postcss/lib/warn-once.js","node_modules/postcss/lib/processor.js","node_modules/postcss/lib/lazy-result.js","node_modules/postcss/lib/list.js","node_modules/velocity-vector/velocity.ui.js","node_modules/babel-runtime/core-js/set-immediate.js","node_modules/lodash/escape.js","node_modules/lodash/toString.js","node_modules/lodash/_freeGlobal.js","node_modules/matrix-react-sdk/lib/GroupAddressPicker.js","node_modules/matrix-react-sdk/lib/components/views/login/InteractiveAuthEntryComponents.js","node_modules/react-beautiful-dnd/lib/state/get-displacement-map.js","node_modules/react-beautiful-dnd/lib/state/visibility/is-visible-through-frame.js","node_modules/react-beautiful-dnd/lib/state/move-to-next-index/is-visible-in-new-location.js","node_modules/react-beautiful-dnd/lib/view/animation.js","node_modules/react-beautiful-dnd/lib/state/action-creators.js","node_modules/raf-schd/esm/index.js","node_modules/react-beautiful-dnd/lib/view/placeholder/index.js","node_modules/react-motion/lib/presets.js","node_modules/react-beautiful-dnd/lib/view/drag-handle/util/block-standard-key-events.js","node_modules/react-beautiful-dnd/lib/view/get-center-position.js","node_modules/matrix-react-sdk/lib/PageTypes.js","node_modules/matrix-react-sdk/lib/CallMediaHandler.js","node_modules/flux/lib/FluxStoreGroup.js","node_modules/flux/lib/FluxReduceStore.js","node_modules/flux/lib/FluxStore.js","node_modules/fbemitter/lib/EmitterSubscription.js","node_modules/babel-runtime/core-js/number/max-safe-integer.js","node_modules/lodash/_SetCache.js","node_modules/lodash/isFunction.js","node_modules/lodash/_toSource.js","node_modules/lodash/_cacheHas.js","node_modules/lodash/_Set.js","node_modules/matrix-react-sdk/lib/actions/TagOrderActions.js","node_modules/matrix-react-sdk/lib/actions/RoomListActions.js","node_modules/babel-runtime/core-js/map.js","node_modules/matrix-react-sdk/lib/Lifecycle.js","node_modules/matrix-react-sdk/lib/UserActivity.js","node_modules/matrix-react-sdk/lib/Login.js","node_modules/matrix-react-sdk/lib/utils/DirectoryUtils.js","node_modules/linkifyjs/lib/linkify/core/state.js","node_modules/linkifyjs/lib/linkify/core/tokens/create-token-class.js","node_modules/matrix-react-sdk/lib/ContentMessages.js","node_modules/browser-encrypt-attachment/index.js","node_modules/matrix-react-sdk/lib/UserSettingsStore.js","node_modules/matrix-react-sdk/lib/components/views/login/RegistrationForm.js","node_modules/matrix-react-sdk/lib/UiEffects.js","node_modules/matrix-react-sdk/lib/phonenumber.js","node_modules/matrix-react-sdk/lib/components/views/context_menus/StatusMessageContextMenu.js","node_modules/qr.js/lib/mode.js","node_modules/qr.js/lib/ErrorCorrectLevel.js","node_modules/qr.js/lib/Polynomial.js","node_modules/qr.js/lib/math.js","node_modules/react-gemini-scrollbar/dist/index.js","node_modules/matrix-react-sdk/lib/components/views/elements/AppPermission.js","node_modules/matrix-react-sdk/lib/components/views/elements/TintableSvgButton.js","node_modules/matrix-react-sdk/lib/components/views/elements/AppWarning.js","node_modules/matrix-react-sdk/lib/components/views/elements/MessageSpinner.js","node_modules/matrix-react-sdk/lib/components/views/elements/TagTile.js","node_modules/matrix-react-sdk/lib/components/views/elements/Flair.js","node_modules/matrix-react-sdk/lib/components/views/elements/ManageIntegsButton.js","node_modules/matrix-react-sdk/lib/components/views/messages/MImageBody.js","node_modules/matrix-react-sdk/lib/components/views/messages/MessageEvent.js","node_modules/lodash/isEqual.js","node_modules/lodash/_equalArrays.js","node_modules/lodash/_Uint8Array.js","node_modules/lodash/_getAllKeys.js","node_modules/lodash/_baseGetAllKeys.js","node_modules/lodash/stubArray.js","node_modules/lodash/_arrayLikeKeys.js","node_modules/lodash/isTypedArray.js","node_modules/lodash/_overArg.js","node_modules/matrix-react-sdk/lib/components/views/rooms/AppsDrawer.js","node_modules/matrix-react-sdk/lib/components/views/rooms/Autocomplete.js","node_modules/lodash/flatMap.js","node_modules/lodash/_baseIteratee.js","node_modules/lodash/_isStrictComparable.js","node_modules/lodash/_matchesStrictComparable.js","node_modules/lodash/get.js","node_modules/lodash/hasIn.js","node_modules/lodash/_baseMap.js","node_modules/matrix-react-sdk/lib/autocomplete/Autocompleter.js","node_modules/lodash/_overRest.js","node_modules/lodash/_setToString.js","node_modules/lodash/_defineProperty.js","node_modules/matrix-react-sdk/lib/SlashCommands.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomTile.js","node_modules/matrix-react-sdk/lib/utils/Receipt.js","node_modules/matrix-react-sdk/lib/components/views/rooms/Stickerpicker.js","node_modules/lodash/_baseAssignValue.js","node_modules/lodash/keysIn.js","node_modules/lodash/_getSymbolsIn.js","node_modules/lodash/_getAllKeysIn.js","node_modules/lodash/toNumber.js","node_modules/slate-md-serializer/lib/urls.js","node_modules/commonmark/lib/render/renderer.js","node_modules/matrix-react-sdk/lib/components/views/rooms/ReplyPreview.js","node_modules/matrix-react-sdk/lib/components/views/rooms/PinnedEventTile.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomDetailRow.js","node_modules/matrix-react-sdk/lib/components/views/rooms/SimpleRoomHeader.js","node_modules/matrix-react-sdk/lib/notifications/StandardActions.js","node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","node_modules/react-redux/es/utils/PropTypes.js","node_modules/react-redux/es/components/Provider.js","node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","node_modules/@babel/runtime/helpers/esm/extends.js","node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","node_modules/react-redux/es/utils/Subscription.js","node_modules/react-redux/es/components/connectAdvanced.js","node_modules/react-redux/es/utils/shallowEqual.js","node_modules/react-redux/es/connect/wrapMapToProps.js","node_modules/react-redux/es/connect/mapDispatchToProps.js","node_modules/react-redux/es/connect/mapStateToProps.js","node_modules/react-redux/es/connect/mergeProps.js","node_modules/react-redux/es/connect/selectorFactory.js","node_modules/react-redux/es/connect/connect.js","node_modules/react-redux/es/index.js","node_modules/symbol-observable/es/ponyfill.js","node_modules/lodash-es/_freeGlobal.js","node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","node_modules/direction/index.js","node_modules/selection-is-backward/index.js","node_modules/lodash/throttle.js","node_modules/react-dom/server.js","node_modules/babel-polyfill/lib/index.js","node_modules/core-js/shim.js","node_modules/core-js/modules/es6.symbol.js","node_modules/core-js/modules/_enum-keys.js","node_modules/core-js/modules/es6.object.create.js","node_modules/core-js/modules/es6.object.define-property.js","node_modules/core-js/modules/es6.object.define-properties.js","node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","node_modules/core-js/modules/es6.object.get-prototype-of.js","node_modules/core-js/modules/es6.object.keys.js","node_modules/core-js/modules/es6.object.get-own-property-names.js","node_modules/core-js/modules/es6.object.freeze.js","node_modules/core-js/modules/es6.object.seal.js","node_modules/core-js/modules/es6.object.prevent-extensions.js","node_modules/core-js/modules/es6.object.is-frozen.js","node_modules/core-js/modules/es6.object.is-sealed.js","node_modules/core-js/modules/es6.object.is-extensible.js","node_modules/core-js/modules/es6.object.assign.js","node_modules/core-js/modules/es6.object.is.js","node_modules/core-js/modules/_same-value.js","node_modules/core-js/modules/es6.object.set-prototype-of.js","node_modules/core-js/modules/es6.object.to-string.js","node_modules/core-js/modules/es6.function.bind.js","node_modules/core-js/modules/es6.function.name.js","node_modules/core-js/modules/es6.function.has-instance.js","node_modules/core-js/modules/es6.parse-int.js","node_modules/core-js/modules/es6.parse-float.js","node_modules/core-js/modules/es6.number.constructor.js","node_modules/core-js/modules/es6.number.to-fixed.js","node_modules/core-js/modules/es6.number.to-precision.js","node_modules/core-js/modules/es6.number.epsilon.js","node_modules/core-js/modules/es6.number.is-finite.js","node_modules/core-js/modules/es6.number.is-integer.js","node_modules/core-js/modules/es6.number.is-nan.js","node_modules/core-js/modules/es6.number.is-safe-integer.js","node_modules/core-js/modules/es6.number.max-safe-integer.js","node_modules/core-js/modules/es6.number.min-safe-integer.js","node_modules/core-js/modules/es6.number.parse-float.js","node_modules/core-js/modules/es6.number.parse-int.js","node_modules/core-js/modules/es6.math.acosh.js","node_modules/core-js/modules/es6.math.asinh.js","node_modules/core-js/modules/es6.math.atanh.js","node_modules/core-js/modules/es6.math.cbrt.js","node_modules/core-js/modules/es6.math.clz32.js","node_modules/core-js/modules/es6.math.cosh.js","node_modules/core-js/modules/es6.math.expm1.js","node_modules/core-js/modules/es6.math.fround.js","node_modules/core-js/modules/es6.math.hypot.js","node_modules/core-js/modules/es6.math.imul.js","node_modules/core-js/modules/es6.math.log10.js","node_modules/core-js/modules/es6.math.log1p.js","node_modules/core-js/modules/es6.math.log2.js","node_modules/core-js/modules/es6.math.sign.js","node_modules/core-js/modules/es6.math.sinh.js","node_modules/core-js/modules/es6.math.tanh.js","node_modules/core-js/modules/es6.math.trunc.js","node_modules/core-js/modules/es6.string.from-code-point.js","node_modules/core-js/modules/es6.string.raw.js","node_modules/core-js/modules/es6.string.trim.js","node_modules/core-js/modules/es6.string.iterator.js","node_modules/core-js/modules/es6.string.code-point-at.js","node_modules/core-js/modules/es6.string.ends-with.js","node_modules/core-js/modules/es6.string.includes.js","node_modules/core-js/modules/es6.string.repeat.js","node_modules/core-js/modules/es6.string.starts-with.js","node_modules/core-js/modules/es6.string.anchor.js","node_modules/core-js/modules/es6.string.big.js","node_modules/core-js/modules/es6.string.blink.js","node_modules/core-js/modules/es6.string.bold.js","node_modules/core-js/modules/es6.string.fixed.js","node_modules/core-js/modules/es6.string.fontcolor.js","node_modules/core-js/modules/es6.string.fontsize.js","node_modules/core-js/modules/es6.string.italics.js","node_modules/core-js/modules/es6.string.link.js","node_modules/core-js/modules/es6.string.small.js","node_modules/core-js/modules/es6.string.strike.js","node_modules/core-js/modules/es6.string.sub.js","node_modules/core-js/modules/es6.string.sup.js","node_modules/core-js/modules/es6.date.now.js","node_modules/core-js/modules/es6.date.to-json.js","node_modules/core-js/modules/es6.date.to-iso-string.js","node_modules/core-js/modules/_date-to-iso-string.js","node_modules/core-js/modules/es6.date.to-string.js","node_modules/core-js/modules/es6.date.to-primitive.js","node_modules/core-js/modules/_date-to-primitive.js","node_modules/core-js/modules/es6.array.is-array.js","node_modules/core-js/modules/es6.array.from.js","node_modules/core-js/modules/es6.array.of.js","node_modules/core-js/modules/es6.array.join.js","node_modules/core-js/modules/es6.array.slice.js","node_modules/core-js/modules/es6.array.sort.js","node_modules/core-js/modules/es6.array.for-each.js","node_modules/core-js/modules/_array-species-constructor.js","node_modules/core-js/modules/es6.array.map.js","node_modules/core-js/modules/es6.array.filter.js","node_modules/core-js/modules/es6.array.some.js","node_modules/core-js/modules/es6.array.every.js","node_modules/core-js/modules/es6.array.reduce.js","node_modules/core-js/modules/es6.array.reduce-right.js","node_modules/core-js/modules/es6.array.index-of.js","node_modules/core-js/modules/es6.array.last-index-of.js","node_modules/core-js/modules/es6.array.copy-within.js","node_modules/core-js/modules/es6.array.fill.js","node_modules/core-js/modules/es6.array.find.js","node_modules/core-js/modules/es6.array.find-index.js","node_modules/core-js/modules/es6.array.species.js","node_modules/core-js/modules/es6.regexp.constructor.js","node_modules/core-js/modules/es6.regexp.to-string.js","node_modules/core-js/modules/es6.regexp.match.js","node_modules/core-js/modules/es6.regexp.replace.js","node_modules/core-js/modules/es6.regexp.search.js","node_modules/core-js/modules/es6.regexp.split.js","node_modules/core-js/modules/es6.promise.js","node_modules/core-js/modules/es6.weak-set.js","node_modules/core-js/modules/es6.typed.array-buffer.js","node_modules/core-js/modules/es6.typed.data-view.js","node_modules/core-js/modules/es6.typed.int8-array.js","node_modules/core-js/modules/es6.typed.uint8-array.js","node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","node_modules/core-js/modules/es6.typed.int16-array.js","node_modules/core-js/modules/es6.typed.uint16-array.js","node_modules/core-js/modules/es6.typed.int32-array.js","node_modules/core-js/modules/es6.typed.uint32-array.js","node_modules/core-js/modules/es6.typed.float32-array.js","node_modules/core-js/modules/es6.typed.float64-array.js","node_modules/core-js/modules/es6.reflect.apply.js","node_modules/core-js/modules/es6.reflect.construct.js","node_modules/core-js/modules/es6.reflect.define-property.js","node_modules/core-js/modules/es6.reflect.delete-property.js","node_modules/core-js/modules/es6.reflect.enumerate.js","node_modules/core-js/modules/es6.reflect.get.js","node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","node_modules/core-js/modules/es6.reflect.get-prototype-of.js","node_modules/core-js/modules/es6.reflect.has.js","node_modules/core-js/modules/es6.reflect.is-extensible.js","node_modules/core-js/modules/es6.reflect.own-keys.js","node_modules/core-js/modules/es6.reflect.prevent-extensions.js","node_modules/core-js/modules/es6.reflect.set.js","node_modules/core-js/modules/es6.reflect.set-prototype-of.js","node_modules/core-js/modules/es7.array.includes.js","node_modules/core-js/modules/es7.array.flat-map.js","node_modules/core-js/modules/es7.array.flatten.js","node_modules/core-js/modules/es7.string.at.js","node_modules/core-js/modules/es7.string.pad-start.js","node_modules/core-js/modules/es7.string.pad-end.js","node_modules/core-js/modules/es7.string.trim-left.js","node_modules/core-js/modules/es7.string.trim-right.js","node_modules/core-js/modules/es7.string.match-all.js","node_modules/core-js/modules/es7.symbol.async-iterator.js","node_modules/core-js/modules/es7.symbol.observable.js","node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","node_modules/core-js/modules/es7.object.values.js","node_modules/core-js/modules/es7.object.entries.js","node_modules/core-js/modules/es7.object.define-getter.js","node_modules/core-js/modules/es7.object.define-setter.js","node_modules/core-js/modules/es7.object.lookup-getter.js","node_modules/core-js/modules/es7.object.lookup-setter.js","node_modules/core-js/modules/es7.map.to-json.js","node_modules/core-js/modules/es7.set.to-json.js","node_modules/core-js/modules/es7.map.of.js","node_modules/core-js/modules/es7.set.of.js","node_modules/core-js/modules/es7.weak-map.of.js","node_modules/core-js/modules/es7.weak-set.of.js","node_modules/core-js/modules/es7.map.from.js","node_modules/core-js/modules/es7.set.from.js","node_modules/core-js/modules/es7.weak-map.from.js","node_modules/core-js/modules/es7.weak-set.from.js","node_modules/core-js/modules/es7.global.js","node_modules/core-js/modules/es7.system.global.js","node_modules/core-js/modules/es7.error.is-error.js","node_modules/core-js/modules/es7.math.clamp.js","node_modules/core-js/modules/es7.math.deg-per-rad.js","node_modules/core-js/modules/es7.math.degrees.js","node_modules/core-js/modules/es7.math.fscale.js","node_modules/core-js/modules/es7.math.iaddh.js","node_modules/core-js/modules/es7.math.isubh.js","node_modules/core-js/modules/es7.math.imulh.js","node_modules/core-js/modules/es7.math.rad-per-deg.js","node_modules/core-js/modules/es7.math.radians.js","node_modules/core-js/modules/es7.math.scale.js","node_modules/core-js/modules/es7.math.umulh.js","node_modules/core-js/modules/es7.math.signbit.js","node_modules/core-js/modules/es7.promise.finally.js","node_modules/core-js/modules/es7.promise.try.js","node_modules/core-js/modules/es7.reflect.define-metadata.js","node_modules/core-js/modules/es7.reflect.delete-metadata.js","node_modules/core-js/modules/es7.reflect.get-metadata.js","node_modules/core-js/modules/es7.reflect.get-metadata-keys.js","node_modules/core-js/modules/es7.reflect.get-own-metadata.js","node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.js","node_modules/core-js/modules/es7.reflect.has-metadata.js","node_modules/core-js/modules/es7.reflect.has-own-metadata.js","node_modules/core-js/modules/es7.reflect.metadata.js","node_modules/core-js/modules/es7.asap.js","node_modules/core-js/modules/es7.observable.js","node_modules/core-js/modules/web.timers.js","node_modules/core-js/modules/web.immediate.js","node_modules/core-js/modules/web.dom.iterable.js","node_modules/regenerator-runtime/runtime.js","node_modules/core-js/fn/regexp/escape.js","node_modules/core-js/modules/core.regexp.escape.js","node_modules/core-js/modules/_replacer.js","src/vector/index.js","src/vector/rageshakesetup.js","node_modules/react/lib/lowPriorityWarning.js","node_modules/react/lib/ReactChildren.js","node_modules/react/lib/PooledClass.js","node_modules/react/lib/traverseAllChildren.js","node_modules/react/lib/getIteratorFn.js","node_modules/react/lib/KeyEscapeUtils.js","node_modules/react/lib/ReactDOMFactories.js","node_modules/react/lib/ReactPropTypes.js","node_modules/prop-types/factoryWithTypeCheckers.js","node_modules/prop-types/checkPropTypes.js","node_modules/react/lib/ReactVersion.js","node_modules/react/lib/createClass.js","node_modules/create-react-class/factory.js","node_modules/react/lib/onlyChild.js","src/vector/modernizr.js","node_modules/babel-runtime/core-js/object/prevent-extensions.js","node_modules/core-js/library/fn/object/prevent-extensions.js","node_modules/core-js/library/modules/es6.object.prevent-extensions.js","node_modules/core-js/library/fn/object/freeze.js","node_modules/core-js/library/modules/es6.object.freeze.js","node_modules/babel-runtime/core-js/object/seal.js","node_modules/core-js/library/fn/object/seal.js","node_modules/core-js/library/modules/es6.object.seal.js","node_modules/babel-runtime/core-js/object/define-properties.js","node_modules/core-js/library/fn/object/define-properties.js","node_modules/core-js/library/modules/es6.object.define-properties.js","node_modules/core-js/library/fn/object/get-own-property-descriptor.js","node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js","node_modules/babel-runtime/core-js/object/is-extensible.js","node_modules/core-js/library/fn/object/is-extensible.js","node_modules/core-js/library/modules/es6.object.is-extensible.js","node_modules/babel-runtime/core-js/object/is-frozen.js","node_modules/core-js/library/fn/object/is-frozen.js","node_modules/core-js/library/modules/es6.object.is-frozen.js","node_modules/babel-runtime/core-js/object/is-sealed.js","node_modules/core-js/library/fn/object/is-sealed.js","node_modules/core-js/library/modules/es6.object.is-sealed.js","node_modules/babel-runtime/core-js/object/get-own-property-names.js","node_modules/core-js/library/fn/object/get-own-property-names.js","node_modules/core-js/library/modules/es6.object.get-own-property-names.js","node_modules/core-js/library/fn/object/get-prototype-of.js","node_modules/core-js/library/modules/es6.object.get-prototype-of.js","node_modules/react-dom/lib/ReactDOM.js","node_modules/react-dom/lib/ARIADOMPropertyConfig.js","node_modules/react-dom/lib/BeforeInputEventPlugin.js","node_modules/react-dom/lib/FallbackCompositionState.js","node_modules/react-dom/lib/SyntheticCompositionEvent.js","node_modules/react-dom/lib/SyntheticInputEvent.js","node_modules/react-dom/lib/ChangeEventPlugin.js","node_modules/react-dom/lib/ReactRef.js","node_modules/react-dom/lib/ReactOwner.js","node_modules/react-dom/lib/DefaultEventPluginOrder.js","node_modules/react-dom/lib/EnterLeaveEventPlugin.js","node_modules/react-dom/lib/HTMLDOMPropertyConfig.js","node_modules/react-dom/lib/ReactComponentBrowserEnvironment.js","node_modules/react-dom/lib/Danger.js","node_modules/fbjs/lib/createNodesFromMarkup.js","node_modules/fbjs/lib/createArrayFromMixed.js","node_modules/fbjs/lib/getMarkupWrap.js","node_modules/react-dom/lib/ReactDOMIDOperations.js","node_modules/react-dom/lib/ReactDOMComponent.js","node_modules/react-dom/lib/AutoFocusUtils.js","node_modules/react-dom/lib/CSSPropertyOperations.js","node_modules/fbjs/lib/camelizeStyleName.js","node_modules/fbjs/lib/camelize.js","node_modules/react-dom/lib/dangerousStyleValue.js","node_modules/fbjs/lib/hyphenateStyleName.js","node_modules/fbjs/lib/hyphenate.js","node_modules/fbjs/lib/memoizeStringOnly.js","node_modules/react-dom/lib/quoteAttributeValueForBrowser.js","node_modules/react-dom/lib/ReactEventEmitterMixin.js","node_modules/react-dom/lib/getVendorPrefixedEventName.js","node_modules/react-dom/lib/ReactDOMInput.js","node_modules/react-dom/lib/ReactPropTypesSecret.js","node_modules/react-dom/lib/ReactDOMOption.js","node_modules/react-dom/lib/ReactDOMTextarea.js","node_modules/react-dom/lib/ReactMultiChild.js","node_modules/react-dom/lib/ReactChildReconciler.js","node_modules/react-dom/lib/ReactCompositeComponent.js","node_modules/react/lib/getNextDebugID.js","node_modules/react-dom/lib/ReactElementSymbol.js","node_modules/react-dom/lib/getIteratorFn.js","node_modules/react-dom/lib/flattenChildren.js","node_modules/react-dom/lib/ReactServerUpdateQueue.js","node_modules/react-dom/lib/ReactDOMEmptyComponent.js","node_modules/react-dom/lib/ReactDOMTreeTraversal.js","node_modules/react-dom/lib/ReactDOMTextComponent.js","node_modules/react-dom/lib/ReactEventListener.js","node_modules/fbjs/lib/getUnboundedScrollPosition.js","node_modules/react-dom/lib/ReactInjection.js","node_modules/react-dom/lib/ReactReconcileTransaction.js","node_modules/react-dom/lib/ReactDOMSelection.js","node_modules/react-dom/lib/getNodeForCharacterOffset.js","node_modules/fbjs/lib/containsNode.js","node_modules/fbjs/lib/isTextNode.js","node_modules/fbjs/lib/isNode.js","node_modules/react-dom/lib/SVGDOMPropertyConfig.js","node_modules/react-dom/lib/SelectEventPlugin.js","node_modules/react-dom/lib/SimpleEventPlugin.js","node_modules/react-dom/lib/SyntheticAnimationEvent.js","node_modules/react-dom/lib/SyntheticClipboardEvent.js","node_modules/react-dom/lib/SyntheticFocusEvent.js","node_modules/react-dom/lib/SyntheticKeyboardEvent.js","node_modules/react-dom/lib/getEventKey.js","node_modules/react-dom/lib/SyntheticDragEvent.js","node_modules/react-dom/lib/SyntheticTouchEvent.js","node_modules/react-dom/lib/SyntheticTransitionEvent.js","node_modules/react-dom/lib/SyntheticWheelEvent.js","node_modules/react-dom/lib/ReactDOMFeatureFlags.js","node_modules/react-dom/lib/adler32.js","node_modules/react-dom/lib/findDOMNode.js","node_modules/react-dom/lib/renderSubtreeIntoContainer.js","node_modules/matrix-react-sdk/lib/Skinner.js","node_modules/base64-js/index.js","node_modules/ieee754/index.js","node_modules/isarray/index.js","node_modules/core-js/library/fn/object/assign.js","node_modules/core-js/library/modules/es6.object.assign.js","node_modules/core-js/library/modules/_object-assign.js","node_modules/matrix-js-sdk/lib/store/indexeddb-remote-backend.js","node_modules/content-type/index.js","node_modules/matrix-js-sdk/lib/realtime-callbacks.js","node_modules/babel-runtime/core-js/reflect/get-prototype-of.js","node_modules/core-js/library/fn/reflect/get-prototype-of.js","node_modules/core-js/library/modules/es6.reflect.get-prototype-of.js","node_modules/babel-runtime/core-js/reflect/set-prototype-of.js","node_modules/core-js/library/fn/reflect/set-prototype-of.js","node_modules/core-js/library/modules/es6.reflect.set-prototype-of.js","node_modules/babel-runtime/core-js/reflect/construct.js","node_modules/core-js/library/fn/reflect/construct.js","node_modules/core-js/library/modules/es6.reflect.construct.js","node_modules/core-js/library/modules/_bind.js","node_modules/core-js/library/fn/set.js","node_modules/core-js/library/modules/es6.set.js","node_modules/core-js/library/modules/_array-methods.js","node_modules/core-js/library/modules/_array-species-create.js","node_modules/core-js/library/modules/_array-species-constructor.js","node_modules/core-js/library/modules/es7.set.to-json.js","node_modules/core-js/library/modules/_array-from-iterable.js","node_modules/core-js/library/modules/es7.set.of.js","node_modules/core-js/library/modules/es7.set.from.js","node_modules/core-js/library/fn/object/entries.js","node_modules/core-js/library/modules/es7.object.entries.js","node_modules/matrix-js-sdk/lib/crypto/RoomList.js","node_modules/loglevel/lib/loglevel.js","node_modules/matrix-js-sdk/lib/crypto/store/localStorage-crypto-store.js","node_modules/core-js/library/fn/object/values.js","node_modules/core-js/library/modules/es7.object.values.js","node_modules/babel-runtime/core-js/object/set-prototype-of.js","node_modules/core-js/library/fn/object/set-prototype-of.js","node_modules/core-js/library/modules/es6.object.set-prototype-of.js","node_modules/matrix-js-sdk/lib/crypto/store/indexeddb-crypto-store-backend.js","node_modules/matrix-js-sdk/lib/crypto/index.js","node_modules/matrix-js-sdk/lib/crypto/OutgoingRoomKeyRequestManager.js","node_modules/matrix-js-sdk/lib/crypto/OlmDevice.js","node_modules/matrix-js-sdk/lib/crypto/algorithms/index.js","node_modules/matrix-js-sdk/lib/crypto/algorithms/olm.js","node_modules/matrix-js-sdk/lib/crypto/algorithms/megolm.js","node_modules/matrix-js-sdk/lib/crypto/DeviceList.js","node_modules/matrix-js-sdk/lib/crypto/recoverykey.js","node_modules/bs58/index.js","node_modules/base-x/index.js","node_modules/matrix-js-sdk/lib/crypto/backup_password.js","node_modules/node-libs-browser/node_modules/punycode/punycode.js","node_modules/url/util.js","node_modules/querystring-es3/decode.js","node_modules/querystring-es3/encode.js","node_modules/core-js/library/fn/number/is-finite.js","node_modules/core-js/library/modules/es6.number.is-finite.js","node_modules/matrix-js-sdk/lib/models/search-result.js","node_modules/matrix-js-sdk/lib/models/event-context.js","node_modules/matrix-js-sdk/lib/store/stub.js","node_modules/matrix-js-sdk/lib/filter-component.js","node_modules/matrix-js-sdk/lib/sync.js","node_modules/core-js/library/fn/number/is-integer.js","node_modules/core-js/library/modules/es6.number.is-integer.js","node_modules/core-js/library/modules/_is-integer.js","node_modules/core-js/library/fn/promise.js","node_modules/core-js/library/modules/es6.promise.js","node_modules/core-js/library/modules/_microtask.js","node_modules/core-js/library/modules/_user-agent.js","node_modules/core-js/library/modules/es7.promise.finally.js","node_modules/core-js/library/modules/es7.promise.try.js","node_modules/matrix-js-sdk/lib/models/room-summary.js","node_modules/matrix-js-sdk/lib/base-apis.js","node_modules/matrix-js-sdk/lib/scheduler.js","node_modules/matrix-js-sdk/lib/store/session/webstorage.js","node_modules/matrix-js-sdk/lib/timeline-window.js","node_modules/matrix-js-sdk/lib/interactive-auth.js","node_modules/matrix-js-sdk/lib/autodiscovery.js","node_modules/qs/lib/index.js","node_modules/qs/lib/stringify.js","node_modules/qs/lib/parse.js","node_modules/matrix-react-sdk/lib/settings/handlers/DeviceSettingsHandler.js","node_modules/matrix-react-sdk/lib/settings/handlers/RoomDeviceSettingsHandler.js","node_modules/matrix-react-sdk/lib/settings/handlers/DefaultSettingsHandler.js","node_modules/matrix-react-sdk/lib/settings/handlers/RoomAccountSettingsHandler.js","node_modules/matrix-react-sdk/lib/settings/handlers/AccountSettingsHandler.js","node_modules/matrix-react-sdk/lib/settings/handlers/RoomSettingsHandler.js","node_modules/matrix-react-sdk/lib/settings/handlers/ConfigSettingsHandler.js","node_modules/counterpart/index.js","node_modules/extend/index.js","node_modules/util/support/isBufferBrowser.js","node_modules/sprintf-js/src/sprintf.js","node_modules/except/index.js","node_modules/indexof/index.js","node_modules/counterpart/strftime.js","node_modules/date-names/index.js","node_modules/counterpart/locales/en.js","node_modules/pluralizers/en.js","node_modules/matrix-react-sdk/lib/settings/Settings.js","node_modules/matrix-react-sdk/lib/settings/controllers/NotificationControllers.js","node_modules/prop-types/factoryWithThrowingShims.js","node_modules/flux/index.js","node_modules/flux/lib/Dispatcher.js","node_modules/matrix-react-sdk/lib/settings/controllers/LazyLoadingController.js","node_modules/matrix-react-sdk/lib/settings/handlers/LocalEchoWrapper.js","node_modules/matrix-react-sdk/lib/actions/MatrixActionCreators.js","node_modules/matrix-react-sdk/lib/PhasedRollOut.js","src/vector/url_utils.js","src/vector/platform/ElectronPlatform.js","node_modules/matrix-react-sdk/lib/BasePlatform.js","node_modules/favico.js/favico.js","src/vector/platform/WebPlatform.js","node_modules/ua-parser-js/src/ua-parser.js","node_modules/olm/olm.js","src/component-index.js","src/components/structures/VectorHomePage.js","node_modules/domhandler/index.js","node_modules/domhandler/lib/element.js","node_modules/htmlparser2/lib/FeedHandler.js","node_modules/htmlparser2/lib/Stream.js","node_modules/string_decoder/lib/string_decoder.js","node_modules/htmlparser2/lib/ProxyHandler.js","node_modules/domutils/index.js","node_modules/domutils/lib/stringify.js","node_modules/dom-serializer/index.js","node_modules/dom-serializer/node_modules/domelementtype/index.js","node_modules/entities/lib/encode.js","node_modules/entities/lib/decode.js","node_modules/domutils/lib/traversal.js","node_modules/domutils/lib/manipulation.js","node_modules/domutils/lib/querying.js","node_modules/domutils/lib/legacy.js","node_modules/domutils/lib/helpers.js","node_modules/htmlparser2/lib/CollectingHandler.js","node_modules/xtend/immutable.js","node_modules/lodash.escaperegexp/index.js","node_modules/lodash.clonedeep/index.js","node_modules/lodash.mergewith/index.js","node_modules/lodash.isstring/index.js","node_modules/lodash.isplainobject/index.js","node_modules/srcset/index.js","node_modules/number-is-nan/index.js","node_modules/array-uniq/index.js","node_modules/postcss/lib/postcss.js","node_modules/postcss/lib/terminal-highlight.js","node_modules/postcss/lib/previous-map.js","node_modules/source-map/lib/base64.js","node_modules/source-map/lib/mapping-list.js","node_modules/source-map/lib/source-map-consumer.js","node_modules/source-map/lib/binary-search.js","node_modules/source-map/lib/quick-sort.js","node_modules/source-map/lib/source-node.js","node_modules/postcss/lib/map-generator.js","node_modules/postcss/lib/result.js","node_modules/postcss/lib/warning.js","node_modules/postcss/lib/parser.js","node_modules/postcss/lib/vendor.js","src/components/views/login/VectorCustomServerDialog.js","src/components/views/login/VectorLoginFooter.js","src/components/views/login/VectorLoginHeader.js","node_modules/matrix-react-sdk/lib/component-index.js","node_modules/matrix-react-sdk/lib/components/structures/BottomLeftMenu.js","node_modules/matrix-react-sdk/lib/components/structures/CompatibilityPage.js","node_modules/core-js/library/fn/set-immediate.js","node_modules/core-js/library/modules/web.immediate.js","node_modules/matrix-react-sdk/lib/components/structures/CreateRoom.js","node_modules/matrix-react-sdk/lib/components/structures/FilePanel.js","node_modules/matrix-react-sdk/lib/components/structures/GroupView.js","node_modules/is-ip/index.js","node_modules/ip-regex/index.js","node_modules/lodash/_escapeHtmlChar.js","node_modules/lodash/_basePropertyOf.js","node_modules/lodash/_baseToString.js","node_modules/lodash/_getRawTag.js","node_modules/lodash/_objectToString.js","node_modules/highlight.js/lib/highlight.js","node_modules/highlight.js/lib/languages/1c.js","node_modules/highlight.js/lib/languages/abnf.js","node_modules/highlight.js/lib/languages/accesslog.js","node_modules/highlight.js/lib/languages/actionscript.js","node_modules/highlight.js/lib/languages/ada.js","node_modules/highlight.js/lib/languages/angelscript.js","node_modules/highlight.js/lib/languages/apache.js","node_modules/highlight.js/lib/languages/applescript.js","node_modules/highlight.js/lib/languages/arcade.js","node_modules/highlight.js/lib/languages/cpp.js","node_modules/highlight.js/lib/languages/arduino.js","node_modules/highlight.js/lib/languages/armasm.js","node_modules/highlight.js/lib/languages/xml.js","node_modules/highlight.js/lib/languages/asciidoc.js","node_modules/highlight.js/lib/languages/aspectj.js","node_modules/highlight.js/lib/languages/autohotkey.js","node_modules/highlight.js/lib/languages/autoit.js","node_modules/highlight.js/lib/languages/avrasm.js","node_modules/highlight.js/lib/languages/awk.js","node_modules/highlight.js/lib/languages/axapta.js","node_modules/highlight.js/lib/languages/bash.js","node_modules/highlight.js/lib/languages/basic.js","node_modules/highlight.js/lib/languages/bnf.js","node_modules/highlight.js/lib/languages/brainfuck.js","node_modules/highlight.js/lib/languages/cal.js","node_modules/highlight.js/lib/languages/capnproto.js","node_modules/highlight.js/lib/languages/ceylon.js","node_modules/highlight.js/lib/languages/clean.js","node_modules/highlight.js/lib/languages/clojure.js","node_modules/highlight.js/lib/languages/clojure-repl.js","node_modules/highlight.js/lib/languages/cmake.js","node_modules/highlight.js/lib/languages/coffeescript.js","node_modules/highlight.js/lib/languages/coq.js","node_modules/highlight.js/lib/languages/cos.js","node_modules/highlight.js/lib/languages/crmsh.js","node_modules/highlight.js/lib/languages/crystal.js","node_modules/highlight.js/lib/languages/cs.js","node_modules/highlight.js/lib/languages/csp.js","node_modules/highlight.js/lib/languages/css.js","node_modules/highlight.js/lib/languages/d.js","node_modules/highlight.js/lib/languages/markdown.js","node_modules/highlight.js/lib/languages/dart.js","node_modules/highlight.js/lib/languages/delphi.js","node_modules/highlight.js/lib/languages/diff.js","node_modules/highlight.js/lib/languages/django.js","node_modules/highlight.js/lib/languages/dns.js","node_modules/highlight.js/lib/languages/dockerfile.js","node_modules/highlight.js/lib/languages/dos.js","node_modules/highlight.js/lib/languages/dsconfig.js","node_modules/highlight.js/lib/languages/dts.js","node_modules/highlight.js/lib/languages/dust.js","node_modules/highlight.js/lib/languages/ebnf.js","node_modules/highlight.js/lib/languages/elixir.js","node_modules/highlight.js/lib/languages/elm.js","node_modules/highlight.js/lib/languages/ruby.js","node_modules/highlight.js/lib/languages/erb.js","node_modules/highlight.js/lib/languages/erlang-repl.js","node_modules/highlight.js/lib/languages/erlang.js","node_modules/highlight.js/lib/languages/excel.js","node_modules/highlight.js/lib/languages/fix.js","node_modules/highlight.js/lib/languages/flix.js","node_modules/highlight.js/lib/languages/fortran.js","node_modules/highlight.js/lib/languages/fsharp.js","node_modules/highlight.js/lib/languages/gams.js","node_modules/highlight.js/lib/languages/gauss.js","node_modules/highlight.js/lib/languages/gcode.js","node_modules/highlight.js/lib/languages/gherkin.js","node_modules/highlight.js/lib/languages/glsl.js","node_modules/highlight.js/lib/languages/gml.js","node_modules/highlight.js/lib/languages/go.js","node_modules/highlight.js/lib/languages/golo.js","node_modules/highlight.js/lib/languages/gradle.js","node_modules/highlight.js/lib/languages/groovy.js","node_modules/highlight.js/lib/languages/haml.js","node_modules/highlight.js/lib/languages/handlebars.js","node_modules/highlight.js/lib/languages/haskell.js","node_modules/highlight.js/lib/languages/haxe.js","node_modules/highlight.js/lib/languages/hsp.js","node_modules/highlight.js/lib/languages/htmlbars.js","node_modules/highlight.js/lib/languages/http.js","node_modules/highlight.js/lib/languages/hy.js","node_modules/highlight.js/lib/languages/inform7.js","node_modules/highlight.js/lib/languages/ini.js","node_modules/highlight.js/lib/languages/irpf90.js","node_modules/highlight.js/lib/languages/isbl.js","node_modules/highlight.js/lib/languages/java.js","node_modules/highlight.js/lib/languages/javascript.js","node_modules/highlight.js/lib/languages/jboss-cli.js","node_modules/highlight.js/lib/languages/json.js","node_modules/highlight.js/lib/languages/julia.js","node_modules/highlight.js/lib/languages/julia-repl.js","node_modules/highlight.js/lib/languages/kotlin.js","node_modules/highlight.js/lib/languages/lasso.js","node_modules/highlight.js/lib/languages/ldif.js","node_modules/highlight.js/lib/languages/leaf.js","node_modules/highlight.js/lib/languages/less.js","node_modules/highlight.js/lib/languages/lisp.js","node_modules/highlight.js/lib/languages/livecodeserver.js","node_modules/highlight.js/lib/languages/livescript.js","node_modules/highlight.js/lib/languages/llvm.js","node_modules/highlight.js/lib/languages/lsl.js","node_modules/highlight.js/lib/languages/lua.js","node_modules/highlight.js/lib/languages/makefile.js","node_modules/highlight.js/lib/languages/mathematica.js","node_modules/highlight.js/lib/languages/matlab.js","node_modules/highlight.js/lib/languages/maxima.js","node_modules/highlight.js/lib/languages/mel.js","node_modules/highlight.js/lib/languages/mercury.js","node_modules/highlight.js/lib/languages/mipsasm.js","node_modules/highlight.js/lib/languages/mizar.js","node_modules/highlight.js/lib/languages/perl.js","node_modules/highlight.js/lib/languages/mojolicious.js","node_modules/highlight.js/lib/languages/monkey.js","node_modules/highlight.js/lib/languages/moonscript.js","node_modules/highlight.js/lib/languages/n1ql.js","node_modules/highlight.js/lib/languages/nginx.js","node_modules/highlight.js/lib/languages/nimrod.js","node_modules/highlight.js/lib/languages/nix.js","node_modules/highlight.js/lib/languages/nsis.js","node_modules/highlight.js/lib/languages/objectivec.js","node_modules/highlight.js/lib/languages/ocaml.js","node_modules/highlight.js/lib/languages/openscad.js","node_modules/highlight.js/lib/languages/oxygene.js","node_modules/highlight.js/lib/languages/parser3.js","node_modules/highlight.js/lib/languages/pf.js","node_modules/highlight.js/lib/languages/pgsql.js","node_modules/highlight.js/lib/languages/php.js","node_modules/highlight.js/lib/languages/plaintext.js","node_modules/highlight.js/lib/languages/pony.js","node_modules/highlight.js/lib/languages/powershell.js","node_modules/highlight.js/lib/languages/processing.js","node_modules/highlight.js/lib/languages/profile.js","node_modules/highlight.js/lib/languages/prolog.js","node_modules/highlight.js/lib/languages/properties.js","node_modules/highlight.js/lib/languages/protobuf.js","node_modules/highlight.js/lib/languages/puppet.js","node_modules/highlight.js/lib/languages/purebasic.js","node_modules/highlight.js/lib/languages/python.js","node_modules/highlight.js/lib/languages/q.js","node_modules/highlight.js/lib/languages/qml.js","node_modules/highlight.js/lib/languages/r.js","node_modules/highlight.js/lib/languages/reasonml.js","node_modules/highlight.js/lib/languages/rib.js","node_modules/highlight.js/lib/languages/roboconf.js","node_modules/highlight.js/lib/languages/routeros.js","node_modules/highlight.js/lib/languages/rsl.js","node_modules/highlight.js/lib/languages/ruleslanguage.js","node_modules/highlight.js/lib/languages/rust.js","node_modules/highlight.js/lib/languages/sas.js","node_modules/highlight.js/lib/languages/scala.js","node_modules/highlight.js/lib/languages/scheme.js","node_modules/highlight.js/lib/languages/scilab.js","node_modules/highlight.js/lib/languages/scss.js","node_modules/highlight.js/lib/languages/shell.js","node_modules/highlight.js/lib/languages/smali.js","node_modules/highlight.js/lib/languages/smalltalk.js","node_modules/highlight.js/lib/languages/sml.js","node_modules/highlight.js/lib/languages/sqf.js","node_modules/highlight.js/lib/languages/sql.js","node_modules/highlight.js/lib/languages/stan.js","node_modules/highlight.js/lib/languages/stata.js","node_modules/highlight.js/lib/languages/step21.js","node_modules/highlight.js/lib/languages/stylus.js","node_modules/highlight.js/lib/languages/subunit.js","node_modules/highlight.js/lib/languages/swift.js","node_modules/highlight.js/lib/languages/taggerscript.js","node_modules/highlight.js/lib/languages/yaml.js","node_modules/highlight.js/lib/languages/tap.js","node_modules/highlight.js/lib/languages/tcl.js","node_modules/highlight.js/lib/languages/tex.js","node_modules/highlight.js/lib/languages/thrift.js","node_modules/highlight.js/lib/languages/tp.js","node_modules/highlight.js/lib/languages/twig.js","node_modules/highlight.js/lib/languages/typescript.js","node_modules/highlight.js/lib/languages/vala.js","node_modules/highlight.js/lib/languages/vbnet.js","node_modules/highlight.js/lib/languages/vbscript.js","node_modules/highlight.js/lib/languages/vbscript-html.js","node_modules/highlight.js/lib/languages/verilog.js","node_modules/highlight.js/lib/languages/vhdl.js","node_modules/highlight.js/lib/languages/vim.js","node_modules/highlight.js/lib/languages/x86asm.js","node_modules/highlight.js/lib/languages/xl.js","node_modules/highlight.js/lib/languages/xquery.js","node_modules/highlight.js/lib/languages/zephir.js","node_modules/matrix-react-sdk/lib/components/structures/InteractiveAuth.js","node_modules/matrix-react-sdk/lib/components/structures/LeftPanel.js","node_modules/matrix-react-sdk/lib/components/structures/LoggedInView.js","node_modules/react-beautiful-dnd/lib/view/drag-drop-context/index.js","node_modules/react-beautiful-dnd/lib/view/drag-drop-context/drag-drop-context.js","node_modules/react-beautiful-dnd/lib/state/create-store.js","(webpack)/buildin/harmony-module.js","node_modules/redux-thunk/es/index.js","node_modules/react-beautiful-dnd/lib/state/reducer.js","node_modules/react-beautiful-dnd/lib/state/get-drag-impact/index.js","node_modules/react-beautiful-dnd/lib/state/get-droppable-over.js","node_modules/react-beautiful-dnd/lib/state/visibility/is-position-in-frame.js","node_modules/react-beautiful-dnd/lib/state/axis.js","node_modules/react-beautiful-dnd/lib/state/get-drag-impact/in-home-list.js","node_modules/react-beautiful-dnd/lib/state/get-drag-impact/in-foreign-list.js","node_modules/react-beautiful-dnd/lib/state/move-to-next-index/index.js","node_modules/react-beautiful-dnd/lib/state/move-to-next-index/in-home-list.js","node_modules/react-beautiful-dnd/lib/state/move-to-next-index/in-foreign-list.js","node_modules/react-beautiful-dnd/lib/state/move-cross-axis/index.js","node_modules/react-beautiful-dnd/lib/state/move-cross-axis/get-best-cross-axis-droppable.js","node_modules/react-beautiful-dnd/lib/state/move-cross-axis/get-closest-draggable.js","node_modules/react-beautiful-dnd/lib/state/move-cross-axis/move-to-new-droppable/index.js","node_modules/react-beautiful-dnd/lib/state/move-cross-axis/move-to-new-droppable/to-home-list.js","node_modules/react-beautiful-dnd/lib/state/move-cross-axis/move-to-new-droppable/to-foreign-list.js","node_modules/react-beautiful-dnd/lib/state/fire-hooks.js","node_modules/react-beautiful-dnd/lib/state/dimension-marshal/dimension-marshal.js","node_modules/react-beautiful-dnd/lib/view/style-marshal/style-marshal.js","node_modules/react-beautiful-dnd/lib/view/style-marshal/get-styles.js","node_modules/react-beautiful-dnd/lib/state/can-start-drag.js","node_modules/react-beautiful-dnd/lib/state/get-new-home-client-center.js","node_modules/react-beautiful-dnd/lib/view/droppable/index.js","node_modules/react-beautiful-dnd/lib/view/droppable/connected-droppable.js","node_modules/react-is/cjs/react-is.production.min.js","node_modules/react-beautiful-dnd/lib/state/selectors.js","node_modules/react-beautiful-dnd/lib/view/droppable/droppable.js","node_modules/react-beautiful-dnd/lib/view/droppable-dimension-publisher/index.js","node_modules/react-beautiful-dnd/lib/view/droppable-dimension-publisher/droppable-dimension-publisher.js","node_modules/react-beautiful-dnd/lib/view/get-closest-scrollable.js","node_modules/react-beautiful-dnd/lib/view/placeholder/placeholder.js","node_modules/react-beautiful-dnd/lib/view/draggable/index.js","node_modules/react-beautiful-dnd/lib/view/draggable/connected-draggable.js","node_modules/react-beautiful-dnd/lib/view/draggable/draggable.js","node_modules/react-beautiful-dnd/lib/view/draggable-dimension-publisher/index.js","node_modules/react-beautiful-dnd/lib/view/draggable-dimension-publisher/draggable-dimension-publisher.js","node_modules/react-beautiful-dnd/lib/view/moveable/index.js","node_modules/react-beautiful-dnd/lib/view/moveable/moveable.js","node_modules/react-motion/lib/react-motion.js","node_modules/react-motion/lib/Motion.js","node_modules/performance-now/lib/performance-now.js","node_modules/react-motion/lib/StaggeredMotion.js","node_modules/react-motion/lib/TransitionMotion.js","node_modules/react-motion/lib/mergeDiff.js","node_modules/react-motion/lib/spring.js","node_modules/react-motion/lib/reorderKeys.js","node_modules/react-beautiful-dnd/lib/view/drag-handle/index.js","node_modules/react-beautiful-dnd/lib/view/drag-handle/drag-handle.js","node_modules/react-beautiful-dnd/lib/view/drag-handle/util/should-allow-dragging-from-target.js","node_modules/react-beautiful-dnd/lib/view/drag-handle/sensor/create-mouse-sensor.js","node_modules/react-beautiful-dnd/lib/view/drag-handle/util/is-sloppy-click-threshold-exceeded.js","node_modules/react-beautiful-dnd/lib/view/drag-handle/sensor/create-keyboard-sensor.js","node_modules/react-beautiful-dnd/lib/view/drag-handle/sensor/create-touch-sensor.js","node_modules/flux/lib/FluxContainer.js","node_modules/flux/node_modules/fbjs/lib/shallowEqual.js","node_modules/flux/lib/FluxMapStore.js","node_modules/fbemitter/index.js","node_modules/fbemitter/lib/BaseEventEmitter.js","node_modules/fbemitter/lib/EventSubscription.js","node_modules/fbemitter/lib/EventSubscriptionVendor.js","node_modules/flux/lib/abstractMethod.js","node_modules/flux/lib/FluxMixinLegacy.js","node_modules/core-js/library/fn/number/max-safe-integer.js","node_modules/core-js/library/modules/es6.number.max-safe-integer.js","node_modules/lodash/_baseUniq.js","node_modules/lodash/_mapCacheClear.js","node_modules/lodash/_Hash.js","node_modules/lodash/_hashClear.js","node_modules/lodash/_baseIsNative.js","node_modules/lodash/_isMasked.js","node_modules/lodash/_coreJsData.js","node_modules/lodash/_getValue.js","node_modules/lodash/_hashDelete.js","node_modules/lodash/_hashGet.js","node_modules/lodash/_hashHas.js","node_modules/lodash/_hashSet.js","node_modules/lodash/_listCacheClear.js","node_modules/lodash/_listCacheDelete.js","node_modules/lodash/_listCacheGet.js","node_modules/lodash/_listCacheHas.js","node_modules/lodash/_listCacheSet.js","node_modules/lodash/_mapCacheDelete.js","node_modules/lodash/_isKeyable.js","node_modules/lodash/_mapCacheGet.js","node_modules/lodash/_mapCacheHas.js","node_modules/lodash/_mapCacheSet.js","node_modules/lodash/_setCacheAdd.js","node_modules/lodash/_setCacheHas.js","node_modules/lodash/_arrayIncludes.js","node_modules/lodash/_baseIndexOf.js","node_modules/lodash/_baseFindIndex.js","node_modules/lodash/_baseIsNaN.js","node_modules/lodash/_strictIndexOf.js","node_modules/lodash/_arrayIncludesWith.js","node_modules/lodash/_createSet.js","node_modules/lodash/noop.js","node_modules/matrix-react-sdk/lib/components/structures/LoginBox.js","node_modules/matrix-react-sdk/lib/components/structures/MatrixChat.js","node_modules/matrix-react-sdk/lib/DecryptionFailureTracker.js","node_modules/core-js/library/fn/map.js","node_modules/core-js/library/modules/es6.map.js","node_modules/core-js/library/modules/es7.map.to-json.js","node_modules/core-js/library/modules/es7.map.of.js","node_modules/core-js/library/modules/es7.map.from.js","node_modules/matrix-react-sdk/lib/RoomListSorter.js","node_modules/matrix-react-sdk/lib/RoomInvite.js","node_modules/matrix-react-sdk/lib/Presence.js","node_modules/matrix-react-sdk/lib/KeyRequestHandler.js","node_modules/matrix-react-sdk/lib/stores/LifecycleStore.js","node_modules/matrix-react-sdk/lib/components/structures/MessagePanel.js","node_modules/matrix-react-sdk/lib/components/structures/MyGroups.js","node_modules/matrix-react-sdk/lib/components/structures/NotificationPanel.js","node_modules/matrix-react-sdk/lib/components/structures/RightPanel.js","node_modules/matrix-react-sdk/lib/components/structures/RoomDirectory.js","node_modules/linkifyjs/lib/linkify/utils/options.js","node_modules/linkifyjs/lib/linkify/core/scanner.js","node_modules/linkifyjs/lib/linkify/core/parser.js","node_modules/linkifyjs/lib/linkify/core/tokens/multi.js","node_modules/linkifyjs/string.js","node_modules/linkifyjs/lib/linkify-string.js","node_modules/matrix-react-sdk/lib/components/structures/RoomStatusBar.js","node_modules/matrix-react-sdk/lib/WhoIsTyping.js","node_modules/matrix-react-sdk/lib/components/structures/RoomSubList.js","node_modules/matrix-react-sdk/lib/components/structures/RoomView.js","node_modules/matrix-react-sdk/lib/stores/RoomScrollStateStore.js","node_modules/matrix-react-sdk/lib/extend.js","node_modules/blueimp-canvas-to-blob/js/canvas-to-blob.js","node_modules/matrix-react-sdk/lib/components/structures/ScrollPanel.js","node_modules/matrix-react-sdk/lib/components/structures/SearchBox.js","node_modules/matrix-react-sdk/lib/components/structures/TagPanel.js","node_modules/matrix-react-sdk/lib/actions/GroupActions.js","node_modules/matrix-react-sdk/lib/components/structures/TimelinePanel.js","node_modules/matrix-react-sdk/lib/components/structures/UploadBar.js","node_modules/matrix-react-sdk/lib/components/structures/UserSettings.js","node_modules/matrix-react-sdk/lib/components/structures/ViewSource.js","node_modules/matrix-react-sdk/lib/components/structures/login/ForgotPassword.js","node_modules/matrix-react-sdk/lib/PasswordReset.js","node_modules/matrix-react-sdk/lib/components/structures/login/LanguageSelector.js","node_modules/matrix-react-sdk/lib/components/structures/login/Login.js","node_modules/matrix-react-sdk/lib/components/structures/login/PostRegistration.js","node_modules/matrix-react-sdk/lib/components/structures/login/Registration.js","node_modules/matrix-react-sdk/lib/components/views/avatars/BaseAvatar.js","node_modules/matrix-react-sdk/lib/components/views/avatars/GroupAvatar.js","node_modules/matrix-react-sdk/lib/components/views/avatars/MemberStatusMessageAvatar.js","node_modules/matrix-react-sdk/lib/components/views/avatars/RoomAvatar.js","node_modules/matrix-react-sdk/lib/components/views/context_menus/GenericElementContextMenu.js","node_modules/matrix-react-sdk/lib/components/views/context_menus/GenericTextContextMenu.js","node_modules/matrix-react-sdk/lib/components/views/context_menus/GroupInviteTileContextMenu.js","node_modules/matrix-react-sdk/lib/components/views/context_menus/MessageContextMenu.js","node_modules/matrix-react-sdk/lib/components/views/context_menus/RoomTileContextMenu.js","node_modules/matrix-react-sdk/lib/components/views/context_menus/TagTileContextMenu.js","node_modules/matrix-react-sdk/lib/components/views/create_room/CreateRoomButton.js","node_modules/matrix-react-sdk/lib/components/views/create_room/Presets.js","node_modules/matrix-react-sdk/lib/components/views/create_room/RoomAlias.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/AddressPickerDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/AskInviteAnywayDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/BaseDialog.js","node_modules/focus-trap-react/dist/focus-trap-react.js","node_modules/focus-trap/index.js","node_modules/tabbable/index.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/BugReportDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/ChangelogDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/ChatCreateOrReuseDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/ConfirmRedactDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/ConfirmUserActionDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/CreateGroupDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/CreateRoomDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/CryptoStoreTooNewDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/DeactivateAccountDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/DeviceVerifyDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/DevtoolsDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/ErrorDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/InteractiveAuthDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/KeyShareDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/LazyLoadingDisabledDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/LazyLoadingResyncDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/RoomUpgradeDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/SessionRestoreErrorDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/SetEmailDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/SetMxIdDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/SetPasswordDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/ShareDialog.js","node_modules/qrcode-react/dist/index.js","node_modules/qr.js/index.js","node_modules/qr.js/lib/QRCode.js","node_modules/qr.js/lib/8BitByte.js","node_modules/qr.js/lib/RSBlock.js","node_modules/qr.js/lib/BitBuffer.js","node_modules/qr.js/lib/util.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/TextInputDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/UnknownDeviceDialog.js","node_modules/gemini-scrollbar/index.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/keybackup/RestoreKeyBackupDialog.js","node_modules/matrix-react-sdk/lib/components/views/directory/NetworkDropdown.js","node_modules/matrix-react-sdk/lib/components/views/elements/ActionButton.js","node_modules/matrix-react-sdk/lib/components/views/elements/AddressSelector.js","node_modules/matrix-react-sdk/lib/components/views/elements/AddressTile.js","node_modules/matrix-react-sdk/lib/WidgetMessaging.js","node_modules/matrix-react-sdk/lib/FromWidgetPostMessageApi.js","node_modules/matrix-react-sdk/lib/IntegrationManager.js","node_modules/matrix-react-sdk/lib/WidgetMessagingEndpoint.js","node_modules/matrix-react-sdk/lib/ToWidgetPostMessageApi.js","node_modules/matrix-react-sdk/lib/components/views/elements/CreateRoomButton.js","node_modules/matrix-react-sdk/lib/components/views/elements/DNDTagTile.js","node_modules/matrix-react-sdk/lib/components/views/elements/DeviceVerifyButtons.js","node_modules/matrix-react-sdk/lib/components/views/elements/DialogButtons.js","node_modules/matrix-react-sdk/lib/components/views/elements/DirectorySearchBox.js","node_modules/matrix-react-sdk/lib/components/views/elements/Dropdown.js","node_modules/matrix-react-sdk/lib/components/views/elements/EditableItemList.js","node_modules/matrix-react-sdk/lib/components/views/elements/EditableText.js","node_modules/matrix-react-sdk/lib/components/views/elements/EditableTextContainer.js","node_modules/matrix-react-sdk/lib/components/views/elements/EmojiText.js","node_modules/matrix-react-sdk/lib/components/views/elements/GeminiScrollbarWrapper.js","node_modules/matrix-react-sdk/lib/components/views/elements/GroupsButton.js","node_modules/matrix-react-sdk/lib/components/views/elements/HomeButton.js","node_modules/matrix-react-sdk/lib/components/views/elements/ImageView.js","node_modules/matrix-react-sdk/lib/components/views/elements/InlineSpinner.js","node_modules/matrix-react-sdk/lib/components/views/elements/LanguageDropdown.js","node_modules/matrix-react-sdk/lib/components/views/elements/MemberEventListSummary.js","node_modules/matrix-react-sdk/lib/components/views/elements/PersistedElement.js","node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","node_modules/matrix-react-sdk/lib/components/views/elements/PersistentApp.js","node_modules/matrix-react-sdk/lib/components/views/elements/Pill.js","node_modules/matrix-react-sdk/lib/components/views/elements/PowerSelector.js","node_modules/matrix-react-sdk/lib/components/views/elements/ProgressBar.js","node_modules/matrix-react-sdk/lib/components/views/elements/RoomDirectoryButton.js","node_modules/matrix-react-sdk/lib/components/views/elements/SettingsButton.js","node_modules/matrix-react-sdk/lib/components/views/elements/SettingsFlag.js","node_modules/matrix-react-sdk/lib/components/views/elements/Spinner.js","node_modules/matrix-react-sdk/lib/components/views/elements/StartChatButton.js","node_modules/matrix-react-sdk/lib/components/views/elements/ToolTipButton.js","node_modules/matrix-react-sdk/lib/components/views/elements/TruncatedList.js","node_modules/matrix-react-sdk/lib/components/views/elements/UserSelector.js","node_modules/matrix-react-sdk/lib/components/views/globals/CookieBar.js","node_modules/matrix-react-sdk/lib/components/views/globals/MatrixToolbar.js","node_modules/matrix-react-sdk/lib/components/views/globals/NewVersionBar.js","node_modules/matrix-react-sdk/lib/components/views/globals/PasswordNagBar.js","node_modules/matrix-react-sdk/lib/components/views/globals/ServerLimitBar.js","node_modules/matrix-react-sdk/lib/components/views/globals/UpdateCheckBar.js","node_modules/matrix-react-sdk/lib/components/views/groups/GroupInviteTile.js","node_modules/matrix-react-sdk/lib/components/views/groups/GroupMemberInfo.js","node_modules/matrix-react-sdk/lib/components/views/groups/GroupMemberList.js","node_modules/matrix-react-sdk/lib/components/views/groups/GroupMemberTile.js","node_modules/matrix-react-sdk/lib/components/views/groups/GroupPublicityToggle.js","node_modules/matrix-react-sdk/lib/components/views/groups/GroupRoomInfo.js","node_modules/matrix-react-sdk/lib/components/views/groups/GroupRoomList.js","node_modules/matrix-react-sdk/lib/components/views/groups/GroupRoomTile.js","node_modules/matrix-react-sdk/lib/components/views/groups/GroupTile.js","node_modules/matrix-react-sdk/lib/components/views/groups/GroupUserSettings.js","node_modules/matrix-react-sdk/lib/components/views/login/CaptchaForm.js","node_modules/matrix-react-sdk/lib/components/views/login/CountryDropdown.js","node_modules/matrix-react-sdk/lib/components/views/login/CustomServerDialog.js","node_modules/matrix-react-sdk/lib/components/views/login/LoginFooter.js","node_modules/matrix-react-sdk/lib/components/views/login/LoginHeader.js","node_modules/matrix-react-sdk/lib/components/views/login/LoginPage.js","node_modules/matrix-react-sdk/lib/components/views/login/PasswordLogin.js","node_modules/matrix-react-sdk/lib/components/views/login/ServerConfig.js","node_modules/matrix-react-sdk/lib/components/views/messages/DateSeparator.js","node_modules/matrix-react-sdk/lib/components/views/messages/MAudioBody.js","node_modules/isomorphic-fetch/fetch-npm-browserify.js","node_modules/whatwg-fetch/fetch.js","node_modules/matrix-react-sdk/lib/components/views/messages/MStickerBody.js","node_modules/matrix-react-sdk/lib/components/views/messages/MVideoBody.js","node_modules/matrix-react-sdk/lib/components/views/messages/MessageTimestamp.js","node_modules/matrix-react-sdk/lib/components/views/messages/RoomAvatarEvent.js","node_modules/matrix-react-sdk/lib/components/views/messages/RoomCreate.js","node_modules/matrix-react-sdk/lib/components/views/messages/SenderProfile.js","node_modules/matrix-react-sdk/lib/components/views/messages/TextualBody.js","node_modules/linkifyjs/lib/linkify-element.js","node_modules/matrix-react-sdk/lib/components/views/messages/TextualEvent.js","node_modules/matrix-react-sdk/lib/components/views/messages/UnknownBody.js","node_modules/matrix-react-sdk/lib/components/views/room_settings/AliasSettings.js","node_modules/matrix-react-sdk/lib/components/views/room_settings/ColorSettings.js","node_modules/matrix-react-sdk/lib/components/views/room_settings/RelatedGroupSettings.js","node_modules/lodash/_baseIsEqualDeep.js","node_modules/lodash/_stackClear.js","node_modules/lodash/_stackDelete.js","node_modules/lodash/_stackGet.js","node_modules/lodash/_stackHas.js","node_modules/lodash/_stackSet.js","node_modules/lodash/_arraySome.js","node_modules/lodash/_equalByTag.js","node_modules/lodash/_mapToArray.js","node_modules/lodash/_equalObjects.js","node_modules/lodash/_arrayFilter.js","node_modules/lodash/_baseTimes.js","node_modules/lodash/_baseIsArguments.js","node_modules/lodash/stubFalse.js","node_modules/lodash/_baseIsTypedArray.js","node_modules/lodash/_baseKeys.js","node_modules/lodash/_nativeKeys.js","node_modules/lodash/_DataView.js","node_modules/lodash/_Promise.js","node_modules/lodash/_WeakMap.js","node_modules/matrix-react-sdk/lib/components/views/room_settings/UrlPreviewSettings.js","node_modules/lodash/_isFlattenable.js","node_modules/lodash/map.js","node_modules/lodash/_baseMatches.js","node_modules/lodash/_baseIsMatch.js","node_modules/lodash/_getMatchData.js","node_modules/lodash/_baseMatchesProperty.js","node_modules/lodash/_stringToPath.js","node_modules/lodash/_memoizeCapped.js","node_modules/lodash/memoize.js","node_modules/lodash/_baseHasIn.js","node_modules/lodash/_hasPath.js","node_modules/lodash/property.js","node_modules/lodash/_baseProperty.js","node_modules/lodash/_basePropertyDeep.js","node_modules/lodash/_baseEach.js","node_modules/lodash/_baseForOwn.js","node_modules/lodash/_baseFor.js","node_modules/lodash/_createBaseFor.js","node_modules/lodash/_createBaseEach.js","node_modules/matrix-react-sdk/lib/autocomplete/CommandProvider.js","node_modules/lodash/at.js","node_modules/lodash/_baseAt.js","node_modules/lodash/flatten.js","node_modules/lodash/_apply.js","node_modules/lodash/_baseSetToString.js","node_modules/lodash/constant.js","node_modules/lodash/_shortOut.js","node_modules/lodash/_baseOrderBy.js","node_modules/lodash/_baseSortBy.js","node_modules/lodash/_compareMultiple.js","node_modules/lodash/_compareAscending.js","node_modules/lodash/_baseRest.js","node_modules/lodash/_isIterateeCall.js","node_modules/matrix-react-sdk/lib/autocomplete/CommunityProvider.js","node_modules/matrix-react-sdk/lib/autocomplete/DuckDuckGoProvider.js","node_modules/matrix-react-sdk/lib/autocomplete/RoomProvider.js","node_modules/matrix-react-sdk/lib/autocomplete/UserProvider.js","node_modules/matrix-react-sdk/lib/autocomplete/EmojiProvider.js","node_modules/matrix-react-sdk/lib/autocomplete/NotifProvider.js","node_modules/matrix-react-sdk/lib/components/views/rooms/AuxPanel.js","node_modules/matrix-react-sdk/lib/components/views/rooms/DNDRoomTile.js","node_modules/matrix-react-sdk/lib/ActiveRoomObserver.js","node_modules/matrix-react-sdk/lib/components/views/rooms/EntityTile.js","node_modules/matrix-react-sdk/lib/components/views/rooms/EventTile.js","node_modules/matrix-react-sdk/lib/components/views/rooms/ForwardMessage.js","node_modules/matrix-react-sdk/lib/components/views/rooms/LinkPreviewWidget.js","node_modules/matrix-react-sdk/lib/ImageUtils.js","node_modules/matrix-react-sdk/lib/components/views/rooms/MemberDeviceInfo.js","node_modules/matrix-react-sdk/lib/components/views/rooms/MemberInfo.js","node_modules/matrix-react-sdk/lib/components/views/rooms/MemberList.js","node_modules/matrix-react-sdk/lib/components/views/rooms/MemberTile.js","node_modules/matrix-react-sdk/lib/components/views/rooms/MessageComposer.js","node_modules/matrix-react-sdk/lib/components/views/rooms/MessageComposerInput.js","node_modules/debug/src/common.js","node_modules/ms/index.js","node_modules/isobject/index.js","node_modules/lodash/_baseClone.js","node_modules/lodash/_arrayEach.js","node_modules/lodash/_baseAssign.js","node_modules/lodash/_baseAssignIn.js","node_modules/lodash/_baseKeysIn.js","node_modules/lodash/_nativeKeysIn.js","node_modules/lodash/_cloneBuffer.js","node_modules/lodash/_copyArray.js","node_modules/lodash/_copySymbols.js","node_modules/lodash/_copySymbolsIn.js","node_modules/lodash/_initCloneArray.js","node_modules/lodash/_initCloneByTag.js","node_modules/lodash/_cloneDataView.js","node_modules/lodash/_cloneRegExp.js","node_modules/lodash/_cloneSymbol.js","node_modules/lodash/_cloneTypedArray.js","node_modules/lodash/_initCloneObject.js","node_modules/lodash/_baseCreate.js","node_modules/lodash/isMap.js","node_modules/lodash/_baseIsMap.js","node_modules/lodash/isSet.js","node_modules/lodash/_baseIsSet.js","node_modules/lodash/_baseUnset.js","node_modules/lodash/last.js","node_modules/lodash/_parent.js","node_modules/lodash/_baseSlice.js","node_modules/lodash/_customOmitClone.js","node_modules/lodash/isPlainObject.js","node_modules/lodash/_basePick.js","node_modules/lodash/_basePickBy.js","node_modules/lodash/_baseSet.js","node_modules/get-document/index.js","node_modules/get-window/needs-ie-fallback.br.js","node_modules/lodash/debounce.js","node_modules/lodash/now.js","node_modules/slate-html-serializer/lib/slate-html-serializer.es.js","node_modules/react-dom/lib/ReactDOMServer.js","node_modules/react-dom/lib/ReactServerRendering.js","node_modules/react-dom/lib/ReactServerBatchingStrategy.js","node_modules/slate-md-serializer/lib/renderer.js","node_modules/slate-md-serializer/lib/parser.js","node_modules/matrix-react-sdk/lib/autocomplete/PlainWithPillsSerializer.js","node_modules/matrix-react-sdk/lib/RichText.js","node_modules/matrix-react-sdk/lib/Markdown.js","node_modules/commonmark/lib/index.js","node_modules/commonmark/lib/blocks.js","node_modules/mdurl/encode.js","node_modules/mdurl/decode.js","node_modules/commonmark/lib/inlines.js","node_modules/commonmark/lib/normalize-reference.js","node_modules/commonmark/lib/from-code-point.js","node_modules/string.prototype.repeat/repeat.js","node_modules/commonmark/lib/render/html.js","node_modules/commonmark/lib/render/xml.js","node_modules/matrix-react-sdk/lib/ComposerHistoryManager.js","node_modules/lodash/clamp.js","node_modules/lodash/_baseClamp.js","node_modules/matrix-react-sdk/lib/stores/MessageComposerStore.js","node_modules/matrix-react-sdk/lib/components/views/rooms/PinnedEventsPanel.js","node_modules/matrix-react-sdk/lib/utils/PinningUtils.js","node_modules/matrix-react-sdk/lib/components/views/rooms/PresenceLabel.js","node_modules/matrix-react-sdk/lib/components/views/rooms/ReadReceiptMarker.js","node_modules/matrix-react-sdk/lib/Velociraptor.js","node_modules/matrix-react-sdk/lib/VelocityBounce.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomDetailList.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomDropTarget.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomHeader.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomList.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomNameEditor.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomPreviewBar.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomRecoveryReminder.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomSettings.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomTooltip.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomTopicEditor.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomUpgradeWarningBar.js","node_modules/matrix-react-sdk/lib/components/views/rooms/SearchBar.js","node_modules/matrix-react-sdk/lib/components/views/rooms/SearchResultTile.js","node_modules/matrix-react-sdk/lib/components/views/rooms/SearchableEntityList.js","node_modules/matrix-react-sdk/lib/components/views/rooms/TopUnreadMessagesBar.js","node_modules/matrix-react-sdk/lib/components/views/rooms/UserTile.js","node_modules/matrix-react-sdk/lib/components/views/settings/AddPhoneNumber.js","node_modules/matrix-react-sdk/lib/components/views/settings/ChangeAvatar.js","node_modules/matrix-react-sdk/lib/components/views/settings/ChangeDisplayName.js","node_modules/matrix-react-sdk/lib/components/views/settings/ChangePassword.js","node_modules/matrix-react-sdk/lib/components/views/settings/DevicesPanel.js","node_modules/matrix-react-sdk/lib/components/views/settings/DevicesPanelEntry.js","node_modules/matrix-react-sdk/lib/components/views/settings/EnableNotificationsButton.js","node_modules/matrix-react-sdk/lib/components/views/settings/IntegrationsManager.js","node_modules/matrix-react-sdk/lib/components/views/settings/KeyBackupPanel.js","node_modules/matrix-react-sdk/lib/components/views/settings/Notifications.js","node_modules/matrix-react-sdk/lib/notifications/index.js","node_modules/matrix-react-sdk/lib/notifications/VectorPushRulesDefinitions.js","node_modules/matrix-react-sdk/lib/notifications/ContentRules.js","node_modules/matrix-react-sdk/lib/components/views/voip/CallPreview.js","node_modules/matrix-react-sdk/lib/components/views/voip/CallView.js","node_modules/matrix-react-sdk/lib/components/views/voip/IncomingCallBox.js","node_modules/matrix-react-sdk/lib/components/views/voip/VideoFeed.js","node_modules/matrix-react-sdk/lib/components/views/voip/VideoView.js","node_modules/slate-prop-types/lib/slate-prop-types.es.js","node_modules/is-in-browser/dist/module.js","node_modules/slate-dev-environment/lib/slate-dev-environment.es.js","node_modules/slate-base64-serializer/lib/slate-base64-serializer.es.js","node_modules/slate-hotkeys/lib/slate-hotkeys.es.js","node_modules/slate-react/node_modules/memoize-one/dist/memoize-one.esm.js","node_modules/slate-react/lib/slate-react.es.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","installedModules","4","__webpack_require__","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","head","document","getElementsByTagName","script","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","error","Error","request","undefined","setTimeout","appendChild","all","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","s","_getIterator3","_interopRequireDefault","_assign2","_keys2","_typeof3","_td","_t","text","variables","tags","args","default","interpolate","substituted","substitute","options","count","forEach","k","warn","translated","_counterpart2","translate","locale","safeCounterpartTranslate","ANNOTATE_STRINGS","_react2","className","data-orig-string","replaceByRegexes","setMissingEntryGenerator","f","setLanguage","preferredLangs","Array","isArray","langToUse","availLangs","getLangsJson","then","result","getLanguage","i18nFolder","fileName","langData","registerTranslations","setLocale","_SettingsStore2","setValue","_SettingsStore","SettingLevel","DEVICE","log","getAllLanguagesFromJson","langsObject","langs","langKey","label","getLanguagesFromBrowser","navigator","languages","language","userLanguage","getNormalizedLanguageKeys","languageKeys","normalizedLanguage","this","normalizeLanguageKey","languageParts","split","toLowerCase","replace","getCurrentLanguage","getLocale","_browserRequest2","_bluebird2","obj","regexpMapping","variable","tag","mapping","output","shouldWrapInSpan","regexpString","regexp","RegExp","matchFoundSomewhere","outputIndex","inputText","match","capturedGroups","substr","index","tail","replaced","Function","apply","splice","concat","join","method","url","response","body","status","JSON","parse","langPath","inTrs","outTrs","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","next","done","keyParts","return","weblateToCounterpart","setSeparator","setFallbackLocale","_Skinner2","_RtsClient2","loadSkin","skinObject","load","resetSkin","reset","getComponent","componentName","setFetch","fetchFunction","instance","Constructor","TypeError","_defineProperty2","defineProperties","props","descriptor","configurable","writable","protoProps","staticProps","SLICE$0","createClass","ctor","superClass","constructor","Iterable","isIterable","Seq","KeyedIterable","isKeyed","KeyedSeq","IndexedIterable","isIndexed","IndexedSeq","SetIterable","isAssociative","SetSeq","maybeIterable","IS_ITERABLE_SENTINEL","maybeKeyed","IS_KEYED_SENTINEL","maybeIndexed","IS_INDEXED_SENTINEL","maybeAssociative","isOrdered","maybeOrdered","IS_ORDERED_SENTINEL","Keyed","Indexed","Set","SHIFT","SIZE","MASK","NOT_SET","CHANGE_LENGTH","DID_ALTER","MakeRef","ref","SetRef","OwnerID","arrCopy","arr","offset","len","Math","max","newArr","ii","ensureSize","iter","size","__iterate","returnTrue","wrapIndex","uint32Index","NaN","wholeSlice","begin","end","resolveBegin","resolveIndex","resolveEnd","defaultIndex","min","ITERATE_KEYS","ITERATE_VALUES","ITERATE_ENTRIES","REAL_ITERATOR_SYMBOL","iterator","FAUX_ITERATOR_SYMBOL","ITERATOR_SYMBOL","Iterator","iteratorValue","v","iteratorResult","iteratorDone","hasIterator","getIteratorFn","isIterator","maybeIterator","getIterator","iterable","iteratorFn","isArrayLike","emptySequence","toSeq","seq","maybeIndexedSeqFromValue","ObjectSeq","seqFromValue","toKeyedSeq","fromEntrySeq","keyedSeqFromValue","entrySeq","toIndexedSeq","indexedSeqFromValue","toSetSeq","toString","KEYS","VALUES","ENTRIES","inspect","toSource","of","arguments","__toString","cacheResult","_cache","__iterateUncached","toArray","fn","reverse","seqIterate","__iterator","seqIterator","isSeq","EMPTY_SEQ","EMPTY_REPEAT","EMPTY_RANGE","IS_SEQ_SENTINEL","ArraySeq","array","_array","keys","_object","_keys","IterableSeq","_iterable","IteratorSeq","_iteratorCache","maybeSeq","useKeys","cache","maxIndex","entry","__iteratorUncached","fromJS","json","converter","fromJSWith","parentJSON","map","isPlainObj","","fromJSDefault","toList","toMap","is","valueA","valueB","valueOf","equals","deepEqual","a","b","__hash","notAssociative","entries","every","flipped","_","allEqual","bSize","has","Repeat","times","_value","Infinity","invariant","condition","Range","start","step","abs","_start","_end","ceil","Collection","KeyedCollection","IndexedCollection","SetCollection","notSetValue","iterations","val","includes","searchValue","indexOf","lastIndexOf","this$0","other","possibleIndex","floor","offsetValue","imul","smi","i32","hash","h","STRING_HASH_CACHE_MIN_STRLEN","string","stringHashCache","hashString","STRING_HASH_CACHE_SIZE","STRING_HASH_CACHE_MAX_SIZE","cachedHashString","hashCode","usingWeakMap","weakMap","UID_HASH_KEY","canDefineProperty","propertyIsEnumerable","node","nodeType","uniqueID","documentElement","getIENodeHash","objHashUID","set","isExtensible","hashJSObj","charCodeAt","WeakMap","assertNotInfinite","Map","emptyMap","isMap","withMutations","maybeMap","IS_MAP_SENTINEL","_root","updateMap","setIn","keyPath","updateIn","remove","deleteIn","update","updater","updatedValue","updateInDeepMap","existing","keyPathIter","isNotSet","existingValue","newValue","nextExisting","nextUpdated","forceIterator","clear","__ownerID","__altered","merge","mergeIntoMapWith","mergeWith","merger","iters","mergeIn","mergeDeep","deepMerger","mergeDeepWith","deepMergerWith","mergeDeepIn","sort","comparator","OrderedMap","sortFactory","sortBy","mapper","mutable","asMutable","wasAltered","__ensureOwner","asImmutable","MapIterator","iterate","ownerID","makeMap","EMPTY_MAP","MapPrototype","ArrayMapNode","BitmapIndexedNode","bitmap","nodes","HashArrayMapNode","HashCollisionNode","keyHash","ValueNode","_type","_reverse","_stack","mapIteratorFrame","mapIteratorValue","prev","__prev","root","newRoot","newSize","didChangeSize","didAlter","updateNode","isLeafNode","mergeIntoNode","newNode","idx1","idx2","iterables","mergeIntoCollectionWith","nextValue","collection","filter","x","mergeIntoMap","popCount","idx","canEdit","newArray","removeIn","removed","exists","MAX_ARRAY_MAP_SIZE","createNodes","isEditable","newEntries","pop","bit","keyHashFrag","MAX_BITMAP_INDEXED_SIZE","including","expandedNodes","expandNodes","newBitmap","newNodes","newLen","after","spliceOut","spliceIn","newCount","MIN_HASH_ARRAY_MAP_SIZE","excluding","packedII","packedNodes","packNodes","keyMatch","stack","subNode","List","empty","emptyList","isList","makeList","VNode","list","setSize","maybeList","IS_LIST_SENTINEL","listNodeFor","_origin","setListBounds","newTail","_tail","getTailOffset","_capacity","updateVNode","_level","updateList","insert","values","oldSize","unshift","mergeIntoListWith","iterateList","DONE","ListPrototype","removeBefore","level","originIndex","newChild","removingFirst","oldChild","editable","editableVNode","removeAfter","sizeIndex","EMPTY_LIST","EMPTY_ORDERED_MAP","left","right","tailPos","iterateNodeOrLeaf","from","to","iterateLeaf","iterateNode","origin","capacity","nodeHas","lowerNode","newLowerNode","rawIndex","owner","oldOrigin","oldCapacity","newOrigin","newCapacity","newLevel","offsetShift","oldTailOffset","newTailOffset","oldTail","beginIndex","maxSize","emptyOrderedMap","isOrderedMap","maybeOrderedMap","makeOrderedMap","omap","_map","_list","updateOrderedMap","newMap","newList","flip","ToKeyedSequence","indexed","_iter","_useKeys","ToIndexedSequence","ToSetSequence","FromEntriesSequence","flipFactory","flipSequence","makeSequence","reversedSequence","cacheResultThrough","mapFactory","context","mappedSequence","reverseFactory","filterFactory","predicate","filterSequence","sliceFactory","originalSize","resolvedBegin","resolvedEnd","sliceSize","resolvedSize","sliceSeq","skipped","isSkipping","skipWhileFactory","skipSequence","skipping","flattenFactory","depth","flatSequence","stopped","flatDeep","currentDepth","defaultComparator","isKeyedIterable","maxFactory","reduce","maxCompare","comp","zipWithFactory","keyIter","zipper","zipSequence","iterators","isDone","steps","some","reify","validateEntry","resolveSize","iterableClass","Record","defaultValues","hasInitialized","RecordType","names","setProps","RecordTypePrototype","_name","_defaultValues","RecordPrototype","valueSeq","indexedIterable","recordName","defaultVal","_empty","makeRecord","likeRecord","record","getPrototypeOf","emptySet","isSet","add","maybeSet","IS_SET_SENTINEL","fromKeys","keySeq","updateSet","union","intersect","originalSet","subtract","OrderedSet","__make","EMPTY_SET","SetPrototype","__empty","makeSet","emptyOrderedSet","isOrderedSet","maybeOrderedSet","EMPTY_ORDERED_SET","OrderedSetPrototype","makeOrderedSet","Stack","emptyStack","isStack","unshiftAll","maybeStack","IS_STACK_SENTINEL","_head","peek","makeStack","pushAll","EMPTY_STACK","StackPrototype","mixin","methods","keyCopier","getOwnPropertySymbols","toJS","__toJS","toJSON","toObject","toOrderedMap","toOrderedSet","toSet","toStack","__toStringMapper","singleton","concatSeq","flatten","sum","concatFactory","returnValue","find","findEntry","found","findLastEntry","sideEffect","separator","joined","isFirst","reducer","initialReduction","reduction","useFirst","reduceRight","reversed","not","butLast","isEmpty","countBy","grouper","groups","countByFactory","entriesSequence","entryMapper","filterNot","findLast","first","flatMap","coerce","flatMapFactory","searchKey","getIn","searchKeyPath","nested","groupBy","isKeyedIter","groupByFactory","hasIn","isSubset","isSuperset","keyMapper","last","maxBy","neg","defaultNegComparator","minBy","rest","skip","amount","skipLast","skipWhile","skipUntil","take","takeLast","takeWhile","takeSequence","iterating","takeWhileFactory","takeUntil","ordered","keyed","murmurHashOfSize","hashMerge","hashIterable","IterablePrototype","quoteString","chain","contains","noLengthWarning","findKey","findLastKey","keyOf","lastKeyOf","mapEntries","mapKeys","KeyedIterablePrototype","stringify","defaultZipper","findIndex","removeNum","numArgs","spliced","findLastIndex","interpose","interposedSequence","interposeFactory","interleave","zipped","interleaved","zip","zipWith","factory","global","core","hide","redefine","ctx","$export","source","own","out","exp","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","P","IS_BIND","B","expProto","U","W","R","_regenerator2","_bluebird","_classCallCheck3","_createClass3","_matrixJsSdk2","_utils2","_eventTimeline2","_eventTimelineSet2","_index2","_createMatrixClient2","_MatrixActionCreators2","_PhasedRollOut","_Modal2","MatrixClientPeg","matrixClient","opts","initialSyncLimit","_currentClientCreds","indexedDbWorkerScript","stop","creds","_createClient","_ref","coroutine","mark","_callee","_arr","_i","dbType","CryptoStoreTooNewDialog","LAZY_LOADING_FEATURE","_userId","wrap","_context","store","startup","abrupt","t0","MatrixInMemoryStore","localStorage","initCrypto","t1","createDialog","host","location","deepCopy","pendingEventOrdering","isFeatureEnabled","credentials","userId","phasedRollOutExpiredForUser","Date","now","lazyLoadMembers","startClient","homeserverUrl","baseUrl","identityServerUrl","idBaseUrl","deviceId","getDeviceId","accessToken","getAccessToken","guest","isGuest","matches","exec","useIndexedDb","timelineSupport","forceTURN","getValue","setMaxListeners","setGuest","Boolean","notifTimelineSet","getLiveTimeline","setPaginationToken","BACKWARDS","setNotifTimelineSet","mxMatrixClientPeg","process","setImmediate","define","u","_dereq_","code","1","SomePromiseArray","_SomePromiseArray","any","ret","setHowMany","setUnwrap","init","2","firstLineError","schedule","Queue","util","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","_trampolineEnabled","self","drainQueues","_drainQueues","_schedule","AsyncInvokeLater","receiver","arg","_queueTick","AsyncInvoke","AsyncSettlePromises","_pushOne","_drainQueue","queue","_drainQueueStep","_settlePromises","setScheduler","hasCustomScheduler","enableTrampoline","disableTrampolineIfNecessary","hasDevTools","haveItemsQueued","fatalError","isNode","stderr","write","exit","throwLater","invokeLater","invoke","settlePromises","_reset","./queue","./schedule","./util","3","INTERNAL","tryConvertToPromise","debug","calledBind","rejectThis","_reject","targetRejected","promiseRejectionQueued","bindingPromise","_then","bindingResolved","thisArg","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","old","bluebird","noConflict","./promise","5","cr","callerCache","getterCache","canEvaluate","caller","methodName","message","classString","ensureMethod","namedGetter","indexedGetter","isIdentifier","propertyName","isIndex","maybeGetter","getGetter","6","PromiseArray","apiRejection","tryCatch","errorObj","async","_async","cancel","cancellation","_warn","child","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","parent","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","7","NEXT_FILTER","getKeys","instances","cb","boundTo","predicateLoop","item","matchesPredicate","isObject","j","./es5","8","longStackTraces","contextStack","Context","_trace","CapturedTrace","peekContext","lastIndex","_promiseCreated","_pushContext","_popContext","_peekContext","trace","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","9","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","getDomain","_getDomain","Warning","es5","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","env","warnings","wForgottenReturn","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejection","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","reason","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","onPossiblyUnhandledRejection","domain","domainBind","onUnhandledRejectionHandled","disableLongStackTraces","config","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","Promise_dereferenceTrace","_dereferenceTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","longStackTracesDereferenceTrace","hasLongStackTraces","fireDomEvent","CustomEvent","dispatchEvent","eventData","detail","cancelable","domEvent","Event","createEvent","initCustomEvent","fireGlobalEvent","emit","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","warning","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","flags","branchesRemainingToCancel","warningsOption","_clearCancellationData","_execute","monitoring","_fireEvent","handler","isFulfilled","ignoreSelf","_parent","attachExtraTrace","__stackCleaned__","parsed","parseStackAndMessage","notEnumerableProp","formatAndLogError","cleanStack","line","isTraceLine","test","isInternalFrame","shouldIgnore","charAt","stackFramesAsArray","title","isSoft","String","localHandler","localEventFired","formatNonError","str","newStr","maxChars","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","parseInt","_promisesCreated","uncycle","inherits","stackToIndex","currentStack","cycleEdgeNode","currentChildLength","stacks","current","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","isTTY","color","checkForgottenReturns","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","msg","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","info","deprecated","replacement","./errors","10","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","caught","catchReturn","11","PromiseReduce","PromiseAll","promiseAllThis","each","mapSeries","12","_TypeError","_RangeError","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","CancellationError","TimeoutError","AggregateError","RangeError","OperationalError","cause","indent","lines","errorTypes","RejectionError","13","isES5","getDescriptor","getOwnPropertyDescriptor","getOwnPropertyNames","propertyIsWritable","prop","proto","ObjectKeys","desc","14","PromiseMap","15","catchFilter","PassThroughHandlerContext","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","fail","reasonOrValue","isFinallyHandler","isRejected","_passThrough","success","lastly","tap","tapCatch","handlerOrPredicate","catchInstances","./catch_filter","16","Proxyable","errors","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","implementsReturn","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","generator","spawn","addYieldHandler","17","spread","18","MappingPromiseArray","limit","_filter","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","isFinite","_init$","_init","_values","preservedValues","callback","totalResolved","_totalResolved","_resolve","booleans","19","_resolveFromSyncValue","attempt","20","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","21","spreadAdapter","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","22","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","APPLY","createContext","nodebackForPromise","check","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","deferReject","fillTypes","reflect","didFulfill","didReject","_setIsFinal","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","base","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","_settlePromise","isPromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","defer","pending","version","toFastProperties","./any.js","./async","./bind","./call_get.js","./cancel","./context","./debuggability","./direct_resolve","./each.js","./filter.js","./finally","./generators.js","./join","./map.js","./method","./nodeback","./nodeify.js","./promise_array","./promisify.js","./props.js","./race.js","./reduce.js","./settle.js","./some.js","./synchronous_inspection","./thenables","./timers.js","./using.js","23","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","toResolutionValue","getActualLength","shouldCopyValues","isResolved","24","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","defaultFilter","propsFilter","isPromisified","hasPromisified","suffix","getDataPropertyOrDefault","promisifiableMethods","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","escapeIdentRegex","makeNodePromisified","makeNodePromisifiedEval","__","defaultThis","promisified","promisifyAll","promisifier","promisifiedKey","promisify","copyDescriptors","isClass","25","Es6Map","mapToEntries","extractEntry","PropertiesPromiseArray","_isMap","castValue","entriesToMap","keyOffset","26","_front","_willBeOverCapacity","_checkCapacity","wrapMask","front","_resizeTo","moveItemsCount","srcIndex","dst","dstIndex","arrayMove","27","raceLater","race","28","ReductionPromiseArray","initialValue","_each","_fn","_initialValue","_currentCancellable","_eachValues","completed","valueOrReason","gotAccum","accum","_gotAccum","gotValue","_eachComplete","sender","_resultCancelled$","29","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","ProcessNextTick","nextTick","isRecentNode","nativePromise","standalone","cordova","div","attributes","toggleScheduled","div2","o2","classList","toggle","observe","disconnect","30","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","31","CANCELLATION","_howMany","_unwrap","_initialized","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","32","__isCancelled","33","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","34","HandleWrapper","handle","afterValue","delay","ms","successClear","failureClear","handleWrapper","afterTimeout","35","NULL","dispose","resources","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","_data","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","resource","doDispose","_unsetDisposable","using","input","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","36","tryCatchTarget","globalObject","tryCatcher","Child","Parent","T","isPrimitive","maybeError","safeToString","appendee","defaultValue","excludedPrototypes","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","ic","foo","rident","filledRange","prefix","isError","ignore","ArrayFrom","itResult","it","hasEnvVariables","NODE_ENV","chrome","loadTimes","versions","Number","_getPrototypeOf2","_possibleConstructorReturn3","_get3","_inherits3","MatrixDispatcher","_flux$Dispatcher","__proto__","payload","sync","_this2","action","dispatch","Dispatcher","mxDispatcher","ReferenceError","_setPrototypeOf2","_create2","subClass","_extends3","_promise2","_objectWithoutProperties3","_propTypes2","_Analytics2","_dispatcher2","_languageHandler","React","ReactDOM","AsyncWrapper","displayName","propTypes","prom","isRequired","getInitialState","component","componentWillMount","_this","_unmounted","setState","catch","componentWillUnmount","_onWrapperCancelClick","onFinished","render","_props","otherProps","loader","state","Component","BaseDialog","DialogButtons","primaryButton","onPrimaryButtonClick","hasCancel","Spinner","ModalManager","_counter","_priorityModal","_modals","closeAll","container","getElementById","id","analyticsAction","analyticsInfo","trackEvent","_len","_key","Element","_len2","_key2","createDialogAsync","_len3","_key3","isPriorityModal","modal","closeDialog","_reRender","modalCount","elem","close","modals","unmountComponentAtNode","getOrCreateContainer","dialog","onClick","singletonModalManager","g","eval","__e","matrixcs","queryString","indexedDB","qs","qsStringifyOptions","setCryptoStoreFactory","IndexedDBCryptoStore","_DeviceSettingsHandler2","_RoomDeviceSettingsHandler2","_DefaultSettingsHandler2","_RoomAccountSettingsHandler2","_AccountSettingsHandler2","_RoomSettingsHandler2","_ConfigSettingsHandler2","_SdkConfig2","_Settings","_LocalEchoWrapper2","ROOM_DEVICE","ROOM_ACCOUNT","ACCOUNT","ROOM","CONFIG","DEFAULT","defaultSettings","featureNames","SETTINGS","isFeature","LEVEL_HANDLERS","device","room-device","room-account","account","room","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","LEVEL_ORDER","SettingsStore","settingName","atLevel","possibleFeatures","_getFeatureState","roomId","excludeDefault","setting","levelOrder","supportedLevelsAreOrdered","supportedLevels","getValueAt","explicit","minIndex","configValue","handlers","_getHandlers","_tryControllerOverride","_handler","calculatedValue","calculatedAtLevel","controller","actualValue","getValueOverride","_getHandler","canSetValue","onChange","_x8","_x9","_x10","_x11","isSupported","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","featuresConfig","featureState","__webpack_exports__","Block","Change","Changes$6","Data","Decoration","Document","History","Inline","KeyUtils","Leaf","Mark","Node","Operation","Operations","PathUtils","Point","resetMemoization","Schema","Selection","Stack$1","Text","TextUtils","useMemoization","Value","is_plain_object__WEBPACK_IMPORTED_MODULE_0__","is_plain_object__WEBPACK_IMPORTED_MODULE_0___default","immutable__WEBPACK_IMPORTED_MODULE_1__","slate_dev_warning__WEBPACK_IMPORTED_MODULE_2__","esrever__WEBPACK_IMPORTED_MODULE_3__","lodash_omit__WEBPACK_IMPORTED_MODULE_4__","lodash_omit__WEBPACK_IMPORTED_MODULE_4___default","lodash_pick__WEBPACK_IMPORTED_MODULE_5__","lodash_pick__WEBPACK_IMPORTED_MODULE_5___default","debug__WEBPACK_IMPORTED_MODULE_6__","debug__WEBPACK_IMPORTED_MODULE_6___default","direction__WEBPACK_IMPORTED_MODULE_7__","direction__WEBPACK_IMPORTED_MODULE_7___default","generate","resetGenerator","setGenerator","func","_typeof","classCallCheck","_extends","assign","setPrototypeOf","objectWithoutProperties","possibleConstructorReturn","slicedToArray","_n","_d","_e","_s","sliceIterator","toConsumableArray","arr2","attrs","fromJSON","DEFAULTS","_Record","preserveKeys","isDocument","_object$data","_object$key","_object$nodes","createList","DEFAULTS$1","isInline","elements","DEFAULTS$2","isMark","DEFAULTS$3","marks","newMark","newMarks","set$$1","isLeaf","leaves","invalid","leaf","firstLeaf","endOffset","startOffset","_object$text","_object$marks","ENABLED","CACHE_KEY","LEAF","UNDEFINED","UNSET","memoize","properties","_loop","original","__cache_key","__cache","__cache_no_args","takesArguments","cachedValue","MAX_SAFE_INTEGER","enabled","DEFAULTS$4","addMarks","newFirst","_Leaf$splitLeaves","splitLeaves","_Leaf$splitLeaves2","before","bundle","_Leaf$splitLeaves3","_Leaf$splitLeaves4","middle","setLeaves","decorations","dec","hasStart","hasEnd","_Leaf$splitLeaves5","_Leaf$splitLeaves6","_Leaf$splitLeaves7","_Leaf$splitLeaves8","addMark","createLeaves","getActiveMarks","leafEnd","leafStart","_this3","getMarks","getMarksAsArray","searchLeafAtOffset","_searchLeafAtOffset2","delta","beforeText","afterText","nextLeaves","removeMark","_Leaf$splitLeaves9","_Leaf$splitLeaves10","_Leaf$splitLeaves11","_Leaf$splitLeaves12","_searchLeafAtOffset3","_leaves2","_Leaf$splitLeaves13","_Leaf$splitLeaves14","getLeaves","updateMark","_Leaf$splitLeaves15","_Leaf$splitLeaves16","_Leaf$splitLeaves17","_Leaf$splitLeaves18","splitted","regenerateKey","isText","_attrs","ranges","kind","isBlock","DEFAULTS$5","Changes","change","selection","moveToStart","moveToEnd","isExpanded","addMarkAtRange","sel","select","_marks","getActiveMarksAtRange","_sel","delete","deleteAtRange","insertBlock","block","insertBlockAtRange","getNode","moveToEndOfNode","insertFragment","fragment","_value2","startText","endText","startInline","lastText","getLastText","lastInline","getClosestInline","firstChild","lastChild","getTexts","isAppending","isAtStartOfNode","isAtEndOfNode","isInserting","hasBlockChildren","insertFragmentAtRange","newTexts","newText","moveToStartOfNode","moveForward","insertInline","inline","insertInlineAtRange","insertText","getInsertMarksAtRange","insertTextAtRange","removeMarkAtRange","_marks2","_sel2","replaceMark","oldMark","splitBlock","splitBlockAtRange","toggleMark","activeMarks","wrapText","wrapTextAtRange","isCollapsed","moveStartBackward","moveEndBackward","isForward","SURROGATE_START","SURROGATE_END","SPACE","CHAMELEON","PUNCTUATION","isSurrogate","isWord","char","remaining","getCharLength","getCharOffset","getWordOffset","started","getCharOffsetBackward","getCharOffsetForward","getWordOffsetBackward","getWordOffsetForward","Changes$1","compare","path","pv","tv","create$1","crop","decrement","increment","isAbove","_crop","_crop2","isEqual","isYounger","_crop9","_crop10","pl","tl","range","texts","getTextsAtRange","withoutNormalizing","addMarkByKey","addMarksAtRange","snapshotSelection","startKey","endKey","schema","isStartVoid","hasVoidParent","isEndVoid","startBlock","getClosestBlock","endBlock","isHanging","getFirstText","prevText","getPreviousText","startVoid","getClosestVoid","nextText","getNextText","removeNodeByKey","endVoid","_prevText","startLength","endLength","ancestor","getCommonAncestor","startChild","getFurthestAncestor","endChild","startParent","getParent","startParentIndex","endParentIndex","_index","startChildIndex","endChildIndex","removeTextByKey","lonely","getFurthestOnlyChildAncestor","moveNodeByKey","mergeNodeByKey","deleteCharBackwardAtRange","getOffset","deleteBackwardAtRange","deleteLineBackwardAtRange","deleteWordBackwardAtRange","_range","focus","voidParent","isVoid","getDescendant","prevBlock","prevVoid","moveAnchorTo","moveFocusBackward","traversed","deleteCharForwardAtRange","deleteForwardAtRange","deleteLineForwardAtRange","deleteWordForwardAtRange","_range2","nextBlock","getNextBlock","_nextBlock","nextVoid","moveFocusTo","moveFocusForward","_next","extra","insertNodeByKey","atEnd","siblingText","splitRange","splitDescendantsByKey","moveTo","normalize","mapDescendants","isAtStart","blocks","getBlocks","firstBlock","lastBlock","lonelyChild","getFurthest","startIndex","removeNode","newIndex","nextChild","getNextSibling","nextNodes","inlineChild","inlineIndex","assertDescendant","splitNodeByKey","insertTextByKey","removeMarkByKey","setBlocksAtRange","getBlocksAtRange","sets","setNodeByKey","setInlinesAtRange","inlines","getInlinesAtRange","height","_range6","isBackward","moveAnchorToStartOfNode","setFocus","setPath","anchor","resolveRange","splitInlineAtRange","toggleMarkAtRange","unwrapBlockAtRange","createProperties","wrappers","getClosest","children","hasDescendant","firstMatch","lastMatch","firstText","unwrapInlineAtRange","wrapBlockAtRange","firstblock","lastblock","siblings","p1","p2","indexes","ind","wrapInlineAtRange","inlineParent","wrapInlineByKey","endInline","endIndex","splitText","inlinekey","rng","isFocused","startInner","startInnerIndex","endInner","startInlines","endInlines","startNode","endNode","startRange","endRange","isAfter","_crop3","_crop4","isBefore","_crop5","_crop6","isOlder","_crop7","_crop8","isSibling","lift","relate","av","transform","operation","position","pIndex","pEqual","pYounger","pAbove","np","newPath","npIndex","npEqual","npYounger","npAbove","paths","Changes$2","addMarkByPath","operations","bx","by","assertNode","ax","ay","applyOperations","insertFragmentByPath","insertNodeByPath","applyOperation","insertTextByPath","getMarksAtIndex","mergeNodeByPath","previous","getPreviousSibling","moveNodeByPath","removeMarkByPath","removeAllMarksByPath","getTextsAsArray","removeNodeByPath","removeTextByPath","removals","replaceNodeByPath","parentPath","replaceTextByPath","createRange","activeMark","setMarkByPath","setNodeByPath","setTextByPath","splitNodeByPath","_options$target","splitDescendantsByPath","textPath","textOffset","getAncestors","prevIndex","unwrapInlineByPath","moveToRangeOfNode","unwrapBlockByPath","unwrapNodeByPath","parentIndex","grandPath","isLast","updatedPath","wrapBlockByPath","wrapInlineByPath","wrapNodeByPath","assertPath","newKey","textKey","Changes$3","redo","history","_history","undos","redos","op","_op","withoutSaving","undo","_history2","invert","inverse","_inverse","DEFAULTS$6","isUnset","hasNode","setOffset","moveBackward","getPath","_text","getTextAtOffset","isPoint","_object$offset","_object$path","DEFAULTS$7","_properties","isDecoration","isRange","TYPES","decoration","point","DEFAULTS$8","isSelection","DEFAULTS$9","createSet","_object$isFocused","Changes$4","proxy","_change$value$selecti","_len31","_key31","pointEdgeObject","edge","toUpperCase","Edge","pointEdgeSideObject","side","Side","getDirectionNode","pointBackward","pointForward","isInBlock","isPreviousInVoid","isNextInVoid","blur","deselect","moveAnchorBackward","moveAnchorForward","moveAnchorToEndOfBlock","moveAnchorToEndOfInline","moveAnchorToEndOfDocument","moveAnchorToEndOfNode","moveToAnchor","moveAnchorToEndOfNextBlock","moveAnchorToEndOfNextInline","moveAnchorToEndOfNextText","_len4","_key4","moveAnchorToEndOfPreviousBlock","moveAnchorToEndOfPreviousInline","moveAnchorToEndOfPreviousText","moveAnchorToEndOfText","moveAnchorToStartOfBlock","moveAnchorToStartOfDocument","moveAnchorToStartOfInline","moveAnchorToStartOfNextBlock","moveAnchorToStartOfNextInline","moveAnchorToStartOfNextText","_len5","_key5","moveAnchorToStartOfPreviousBlock","moveAnchorToStartOfPreviousInline","moveAnchorToStartOfPreviousText","moveAnchorToStartOfText","_change$moveAnchorBac","_len6","_key6","_len7","_key7","moveEndForward","_len8","_key8","moveEndTo","_len9","_key9","moveEndToEndOfBlock","moveEndToEndOfDocument","moveEndToEndOfNode","moveEndToEndOfInline","moveEndToEndOfNextBlock","moveEndToEndOfNextInline","moveEndToEndOfNextText","_len10","_key10","moveEndToEndOfPreviousBlock","moveEndToEndOfPreviousInline","moveEndToEndOfPreviousText","moveEndToEndOfText","moveEndToStartOfBlock","moveEndToStartOfDocument","moveEndToStartOfNode","moveEndToStartOfInline","moveEndToStartOfNextBlock","moveEndToStartOfNextInline","moveEndToStartOfNextText","_len11","_key11","moveEndToStartOfPreviousBlock","moveEndToStartOfPreviousInline","moveEndToStartOfPreviousText","moveEndToStartOfText","_len12","_key12","_len13","_key13","_len14","_key14","moveFocusToEndOfBlock","moveFocusToEndOfDocument","moveFocusToEndOfNode","moveToFocus","moveFocusToEndOfInline","moveFocusToEndOfNextBlock","moveFocusToEndOfNextInline","moveFocusToEndOfNextText","_len15","_key15","moveFocusToEndOfPreviousBlock","moveFocusToEndOfPreviousInline","moveFocusToEndOfPreviousText","moveFocusToEndOfText","moveFocusToStartOfBlock","moveFocusToStartOfDocument","moveFocusToStartOfNode","moveFocusToStartOfInline","moveFocusToStartOfNextBlock","moveFocusToStartOfNextInline","moveFocusToStartOfNextText","_len16","_key16","moveFocusToStartOfPreviousBlock","moveFocusToStartOfPreviousInline","moveFocusToStartOfPreviousText","moveFocusToStartOfText","_change$moveAnchorFor","_len17","_key17","_len18","_key18","moveStartForward","_len19","_key19","moveStartTo","_len20","_key20","moveStartToEndOfBlock","moveStartToEndOfDocument","moveStartToEndOfNode","moveStartToEndOfInline","moveStartToEndOfNextBlock","moveStartToEndOfNextInline","moveStartToEndOfNextText","_len21","_key21","moveStartToEndOfPreviousBlock","moveStartToEndOfPreviousInline","moveStartToEndOfPreviousText","moveStartToEndOfText","moveStartToStartOfBlock","moveStartToStartOfDocument","moveStartToStartOfNode","moveStartToStartOfInline","moveStartToStartOfNextBlock","moveStartToStartOfNextInline","moveStartToStartOfNextText","_len22","_key22","moveStartToStartOfPreviousBlock","moveStartToStartOfPreviousInline","moveStartToStartOfPreviousText","moveStartToStartOfText","_len23","_key23","moveToEndOfBlock","moveToEndOfDocument","moveToEndOfInline","moveToEndOfNextBlock","moveToEndOfNextInline","moveToEndOfNextText","_len24","_key24","moveToEndOfPreviousBlock","moveToEndOfPreviousInline","moveToEndOfPreviousText","moveToEndOfText","moveToRangeOfDocument","_len25","_key25","moveToStartOfBlock","moveToStartOfDocument","moveToStartOfInline","moveToStartOfNextBlock","moveToStartOfNextInline","moveToStartOfNextText","_len26","_key26","moveToStartOfPreviousBlock","moveToStartOfPreviousInline","moveToStartOfPreviousText","moveToStartOfText","_options$snapshot","snapshot","setProperties","resolveSelection","setAnchor","_len27","_key27","setEnd","_len28","_key28","_len29","_key29","setStart","_len30","_key30","withoutMerging","DEFAULTS$10","prevBatch","prevOperation","shouldMerge","batch","_batch","isHistory","_object$redos","_object$undos","createOperationsList","DEFAULTS$11","plugins","Stack$$1","plugin","getPluginsWith","_attrs$plugins","SlateError","_Error","debug$1","CORE_RULES","DEFAULTS$12","rules","testRules","failure","validateRules","getNodeRules","validateNode","rule","defaultNormalize","isAtomic","isSchema","_plugin$schema","_schema$blocks","_schema$inlines","_schema$marks","_options$every","_error","validateObject","validateType","valid","validateData","def","_ret","validateMarks","validateText","validateFirst","validateLast","defs","nextDef","rewind","validateParent","validatePrevious","validateNext","validateNodes","_iteratorNormalCompletion4","_didIteratorError4","_iteratorError4","_step4","_iterator4","_iteratorNormalCompletion5","_didIteratorError5","_iteratorError5","_step5","_iterator5","_iteratorNormalCompletion6","_didIteratorError6","_iteratorError6","_step6","_iterator6","DEFAULTS$13","insertNode","mapRanges","updatePoints","_value3","clearAtomicRanges","newDocument","mergeNode","resolvePath","withPath","one","two","moveNode","unset","removeText","rangeOffset","_range3","setNode","setMark","resolveDecoration","_value12","splitNode","_range4","_value14","createSelection","decs","createDecoration","preserveData","preserveDecorations","preserveHistory","preserveSelection","preserveSchema","getPreviousBlock","getNextInline","getPreviousInline","getMarksAtRange","getFragmentAtRange","isValue","_object$decorations","_object$document","_object$selection","_object$schema","_object$history","Changes$5","debug$2","_op2","_op3","_path","_op4","_path2","_offset","_path3","_op6","_path4","_op7","_path5","_offset2","_mark","_path6","_op9","_path7","_offset3","_op10","_path8","_offset4","_length2","_mark2","_op11","_path9","_properties2","setSelection","_properties3","_op14","_path10","_properties4","debug$3","invertOperation","inversePath","inverseNewPath","pathLast","newPathLast","_inversePath","_inversePath2","_op5","inverseNode","inverseProperties","inverseMark","_inverseProperties","inverseSelection","inverseProps","_op8","inverseValue","_inverseProperties2","OPERATION_ATTRIBUTES","add_mark","insert_node","insert_text","merge_node","move_node","remove_mark","remove_node","remove_text","set_mark","set_node","set_selection","set_value","split_node","DEFAULTS$14","ATTRIBUTES","_v","_v2","_v3","_v4","_v5","isOperation","debug$4","tmp","dirty","save","_tmp","newDirtyPaths","table","getKeysToPathsTable","_parentPath","nextPath","_parentPath2","previousPath","_parentPath3","newParentPath","_parentPath4","getDirtyPaths","memo","transformed","normalizeDirtyPaths","normalizeNodeByPath","Interface","Classes","Class","create$2","TYPE","is$$1","ObjectInterface","ModelInterface","NodeInterface","validate","getFirstInvalidNode","descendant","normalizeNode","getText","ElementInterface","replaceNode","resolvePoint","forEachDescendant","getMarksAtPosition","_endText","getActiveMarksBetweenOffsets","startMarks","endMarks","ancestors","getBlocksAsArray","isLeafBlock","getBlocksAtRangeAsArray","getBlocksByTypeAsArray","allDecorations","startAt","deep","targetPath","targetPosition","getInlinesAsArray","isLeafInline","getInlinesAtRangeAsArray","_this4","getTextsAtRangeAsArray","getInlinesByTypeAsArray","currentMarks","closestBlock","getOrderedMarksAtRange","getMarksByTypeAsArray","getNextNode","hasChild","_range7","getOrderedMarksBetweenPositions","getMarksBetweenOffsets","getTextsBetweenPositionsAsArray","getPreviousNode","isSelected","dir","_range8","_range9","getChild","_this5","_this6","mergeText","_PathUtils$crop","_PathUtils$crop2","_child$splitText","_child$splitText2","befores","afters","_loop$1","_iteratorNormalCompletion$1","_didIteratorError$1","_iteratorError$1","_step$1","_iterator$1","RangeInterface","setPoints","validateFormat","format","argIndex","framesToPop","__WEBPACK_AMD_DEFINE_RESULT__","hasOwn","classNames","classes","argType","inner","AccessibleButton","_Keyboard","element","restProps","onKeyDown","keyCode","KeyCode","ENTER","stopPropagation","preventDefault","onKeyUp","tabIndex","role","defaultProps","IS_WRAP","C","virtual","__g","_stringify2","unhomoglyph","encodeParams","params","encodeURIComponent","substring","encodeUri","pathTemplate","results","findElement","removeElement","isFunction","checkObjectHasKeys","checkObjectHasNoAdditionalKeys","allowedKeys","deepCompare","y","isNaN","extend","propName","runPolyfills","fun","res","O","A","kValue","mappedValue","superCtor","Temp","Properties","super_","isNumber","removeHiddenChars","removeHiddenCharsRegex","escapeRegExp","globToRegexp","glob","extended","pat","argCount","argIdx","integrations_ui_url","integrations_rest_url","bug_report_endpoint_url","SdkConfig","mxReactSdkConfig","cfg","defaultKeys","uid","USE_SYMBOL","isObjectObject","prot","propIsEnumerable","test1","test2","fromCharCode","test3","letter","shouldUseNative","symbols","anObject","IE8_DOM_DEFINE","toPrimitive","dP","Attributes","toInteger","_from2","_prodInvariant","DOMProperty","ReactDOMComponentFlags","ATTR_NAME","ID_ATTRIBUTE_NAME","Flags","internalInstanceKey","random","shouldPrecacheNode","nodeID","getAttribute","nodeValue","getRenderedHostOrTextFromComponent","rendered","_renderedComponent","precacheNode","inst","hostInst","_hostNode","precacheChildNodes","_flags","hasCachedChildNodes","_renderedChildren","childNode","outer","childInst","childID","_domID","nextSibling","getClosestInstanceFromNode","closest","parents","parentNode","ReactDOMComponentTree","getInstanceFromNode","getNodeFromInstance","_hostParent","uncacheNode","getDocument","w","isWindow","doc","needsIEFallback","parentWindow","execScript","win","_parentWindow","defaultView","defined","IObject","createDesc","EventEmitter","_events","_maxListeners","isUndefined","defaultMaxListeners","er","listeners","addListener","listener","newListener","warned","on","once","fired","removeListener","removeAllListeners","listenerCount","evlistener","emitter","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","noop","browser","argv","off","prependListener","prependOnceListener","binding","cwd","chdir","umask","_symbol2","_console","formatArgs","useColors","namespace","humanize","diff","lastC","namespaces","storage","setItem","removeItem","getItem","DEBUG","__nwjs","userAgent","style","WebkitAppearance","firebug","exception","$1","localstorage","colors","formatters","aFunction","that","fails","KEY","canUseDOM","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","addEventListener","attachEvent","canUseViewport","screen","isInWorker","distance","patch","absolute","negate","_toConsumableArray3","_defineProperty3","point1","point2","otherValue","sqrt","pow","points","SRC","$toString","TPL","inspectSource","safe","quot","createHTML","attribute","NAME","$keys","enumBugKeys","punycode","Url","protocol","slashes","auth","port","hostname","search","query","pathname","href","urlParse","relative","resolveObject","isString","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","http:","https:","ftp:","gopher:","file:","querystring","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","trim","simplePath","lowerProto","atSign","hostEnd","hec","decodeURIComponent","parseHost","ipv6Hostname","hostparts","part","newpart","validParts","notHost","toASCII","ae","esc","escape","qm","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","isNull","hasTrailingSlash","up","isAbsolute","makeEventPermalink","eventId","permalinkBase","serverCandidates","pickServerCandidates","encodeServerCandidates","makeUserPermalink","makeRoomPermalink","makeGroupPermalink","groupId","_MatrixClientPeg2","_isIp2","MAX_SERVER_CANDIDATES","candidates","getRoom","bannedHostsRegexps","allowedHostsRegexps","currentState","aclEvent","getStateEvents","getContent","getRegex","deny","allowed","allow","populationMap","highestPlUser","powerLevel","serverName","getJoinedMembers","member","isHostnameIpAddress","isHostInRegex","beforePopulation","serversByPopulation","getHostnameFromMatrixDomain","parser","regexps","startsWith","endsWith","isOnlyCtrlOrCmdKeyEvent","ev","platform","metaKey","altKey","ctrlKey","shiftKey","isOnlyCtrlOrCmdIgnoreShiftKeyEvent","BACKSPACE","TAB","ESCAPE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","KEY_A","KEY_B","KEY_C","KEY_D","KEY_E","KEY_F","KEY_G","KEY_H","KEY_I","KEY_J","KEY_K","KEY_L","KEY_M","KEY_N","KEY_O","KEY_P","KEY_Q","KEY_R","KEY_S","KEY_T","KEY_U","KEY_V","KEY_W","KEY_X","KEY_Y","KEY_Z","limitConcurrency","ongoingRequestCount","LIMIT","backlogQueue","sent","checkBacklog","finish","_x","_events2","_groups","_FlairStore2","parseMembersResponse","apiMember","groupMemberFromApiObject","parseRoomsResponse","apiRoom","groupRoomFromApiObject","GroupStore","_EventEmitter","_this$_fetchResourceP","_this$_resourceFetche","STATE_KEY","GroupMembers","GroupInvitedMembers","Summary","GroupRooms","_state","_ready","_fetchResourcePromise","_resourceFetcher","getGroupSummary","getGroupRooms","getGroupUsers","getGroupInvitedUsers","stateKey","clientPromise","_notifyListeners","httpStatus","finally","_fetchResource","unregister","unregisterListener","user","is_publicised","is_privileged","isPublic","addRoomToGroup","updateGroupRoomVisibility","removeRoomFromGroup","inviteUserToGroup","acceptGroupInvite","joinGroup","leaveGroup","categoryId","addRoomToGroupSummary","roleId","addUserToGroupSummary","removeRoomFromGroupSummary","removeUserFromGroupSummary","isPublished","setGroupPublicity","invalidatePublicisedGroups","singletonGroupStore","simpleIsEqual","resultFn","lastThis","lastArgs","lastResult","calledOnce","isNewArgEqualToLast","newArg","newArgs","PlatformPeg","plaf","mxPlatformPeg","pIE","toIObject","gOPD","IE_PROTO","ObjectProto","$at","iterated","debugTool","logger","getLogger","setLevel","levels","_values2","_PlatformPeg2","hashRegex","hashVarRegex","getRedactedUrl","_window$location","getRedactedHash","customVariables","App Platform","expl","example","App Version","User Type","Chosen Language","Instance","RTE: Uses Richtext Mode","Homeserver URL","Identity Server URL","whitelistRedact","whitelist","Analytics","_paq","disabled","firstPage","piwik","siteId","_setVisitVariable","getHumanReadableName","getAppVersion","insertBefore","generationTimeMs","category","whitelistedHSUrls","whitelistedISUrls","rows","Piwik","Tracker","getAsyncTracker","getCustomVariable","exampleValue","resolution","width","otherVariables","CurrentPageURL","ErrorDialog","createTrackedDialog","description","row","mxAnalytics","px","makeEmptyFunction","emptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","_assign","CallbackQueue","PooledClass","ReactFeatureFlags","ReactReconciler","Transaction","dirtyComponents","updateBatchNumber","asapCallbackQueue","getPooled","asapEnqueued","batchingStrategy","ensureInjected","ReactUpdates","ReactReconcileTransaction","TRANSACTION_WRAPPERS","initialize","dirtyComponentsLength","flushBatchedUpdates","callbackQueue","notifyAll","ReactUpdatesFlushTransaction","reinitializeTransaction","reconcileTransaction","mountOrderComparator","c1","c2","_mountOrder","runBatchedUpdates","transaction","markerName","callbacks","_pendingCallbacks","logTopLevelRenders","namedComponent","_currentElement","isReactTopLevelWrapper","getName","time","performUpdateIfNecessary","timeEnd","enqueue","getPublicInstance","getTransactionWrappers","destructor","release","perform","scope","addPoolingTo","batchedUpdates","enqueueUpdate","isBatchingUpdates","_updateBatchNumber","injection","injectReconcileTransaction","ReconcileTransaction","injectBatchingStrategy","_batchingStrategy","asap","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","XHR","XMLHttpRequest","options_onResponse","onResponse","uri","verbose","formatted","unsupported_options","headers","DEFAULT_TIMEOUT","accept","serialize","form","encoding","multi","boundry","multipart","authorization","o1","o3","h1","h2","h3","h4","bits","b64","ac","enc","tmp_arr","b64_enc","username","password","xhr","timed_out","is_cors","ajaxLocation","rurl","ajaxLocParts","parts","is_crossDomain","supports_cors","req_seq","seq_id","_id","cors_err","cors","timeoutTimer","duration","milliseconds","did","loading","onreadystatechange","readyState","OPENED","setRequestHeader","HEADERS_RECEIVED","on_response","LOADING","on_loading","responseText","on_end","open","withCredentials","send","statusCode","run_xhr","defaults","requester","de","post","put","shortcut","couch","resp","freeGlobal","freeSelf","_utils","INITIAL_STATE","joining","joinError","initialEventId","isInitialEventHighlighted","roomAlias","roomLoading","roomLoadError","forwardingEvent","quotingEvent","isEditingSettings","RoomViewStore","_Store","newState","__emitChange","_viewRoom","_setState","_viewRoomError","_joinRoom","_joinRoomError","replyingToEvent","room_id","room_alias","event_id","highlighted","shouldPeek","should_peek","auto_join","initialEventPixelOffset","getRoomIdForAlias","oob_data","joinRoom","errcode","Store","singletonRoomViewStore","toLength","asc","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","Iterators","TO_STRING_TAG","DOMIterables","_matrixTo","matrixLinkify","linkify","TT","scanner","TOKENS","MultiToken","Base","S_START","UNDERSCORE","ROOMALIAS","isLink","S_HASH","jump","POUND","S_HASH_NAME","State","S_HASH_NAME_COLON","S_HASH_NAME_COLON_DOMAIN","S_HASH_NAME_COLON_DOMAIN_DOT","S_ROOMALIAS","S_ROOMALIAS_COLON","S_ROOMALIAS_COLON_NUM","roomname_tokens","DOT","PLUS","NUM","DOMAIN","TLD","LOCALHOST","COLON","USERID","S_AT","AT","S_AT_NAME","S_AT_NAME_COLON","S_AT_NAME_COLON_DOMAIN","S_AT_NAME_COLON_DOMAIN_DOT","S_USERID","S_USERID_COLON","S_USERID_COLON_NUM","username_tokens","GROUPID","S_PLUS","S_PLUS_NAME","S_PLUS_NAME_COLON","S_PLUS_NAME_COLON_DOMAIN","S_PLUS_NAME_COLON_DOMAIN_DOT","S_GROUPID","S_GROUPID_COLON","S_GROUPID_COLON_NUM","groupid_tokens","onUserClick","onAliasClick","onGroupClick","VECTOR_URL_PATTERN","MATRIXTO_URL_PATTERN","MATRIXTO_MD_LINK_PATTERN","MATRIXTO_BASE_URL","matrixToEntityMap","@","#","!","+","events","click","formatHref","entity","linkAttributes","_isIterable3","LIBRARY","$typed","$buffer","anInstance","propertyDesc","redefineAll","toIndex","toAbsoluteIndex","classof","isArrayIter","gOPN","getIterFn","wks","createArrayMethod","createArrayIncludes","speciesConstructor","ArrayIterators","$iterDetect","setSpecies","arrayFill","arrayCopyWithin","$DP","$GOPD","Uint8Array","ArrayProto","$ArrayBuffer","ArrayBuffer","$DataView","DataView","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayFind","arrayFindIndex","arrayIncludes","arrayIndexOf","arrayValues","arrayKeys","arrayEntries","arrayLastIndexOf","arrayReduce","arrayReduceRight","arrayJoin","arraySort","arraySlice","arrayToString","arrayToLocaleString","toLocaleString","ITERATOR","TAG","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","CONSTR","TYPED_ARRAY","TYPED","VIEW","$map","allocate","LITTLE_ENDIAN","Uint16Array","buffer","FORCED_SET","toOffset","BYTES","speciesFromList","fromList","addGetter","$from","aLen","mapfn","iterFn","$of","TO_LOCALE_BUG","$toLocaleString","copyWithin","fill","searchElement","comparefn","subarray","$begin","byteOffset","BYTES_PER_ELEMENT","$slice","$set","arrayLike","$iterators","isTAIndex","$getDesc","$setDesc","$TypedArrayPrototype$","wrapper","CLAMPED","GETTER","SETTER","TypedArray","TAC","FORCED","ABV","TypedArrayPrototype","addElement","round","setter","$offset","$length","byteLength","klass","$len","$nativeIterator","CORRECT_ITER_NAME","$iterator","shared","getOrCreateMetadataMap","targetKey","targetMetadata","keyMetadata","MetadataKey","metadataMap","MetadataValue","dPs","Empty","createDict","iframeDocument","iframe","display","contentWindow","lt","copyright","stat","shouldBeReleasedProperties","EventInterface","currentTarget","eventPhase","bubbles","timeStamp","defaultPrevented","isTrusted","SyntheticEvent","dispatchConfig","targetInst","nativeEvent","nativeEventTarget","_targetInst","isDefaultPrevented","isPropagationStopped","cancelBubble","persist","isPersistent","augmentClass","E","fourArgumentPooler","_startCallApp","scalarClient","haveScalar","currentRoomWidgets","_ErrorDialog3","_ErrorDialog4","widgetSessionId","confId","widgetUrl","widgetData","widgetId","_ScalarAuthClient2","connect","hasCredentials","show","_WidgetUtils2","getRoomWidgets","_WidgetEchoStore2","roomHasPendingWidgetsOfType","integrations_jitsi_widget_url","setRoomWidget","_ErrorDialog5","_x2","_cryptodevices","mxCalls","calls","ConferenceHandler","audioPromises","play","audioId","audio","pause","_setCallListeners","QuestionDialog","button","confirmed","showUnknownDeviceDialogForCalls","direction","answer","_reAttemptCall","_setCallState","oldState","hangupParty","hangupReason","call_state","mxCallHandler","register","getAnyActiveCall","supportsVoip","_ErrorDialog","members","_ErrorDialog2","newCall","placeVoiceCall","placeVideoCall","remote_element","local_element","screenCapErrorString","screenCaptureErrorString","placeScreenSharingCall","placeCall","createNewMatrixCall","_call","hangup","callHandler","getCallForRoom","getCall","getConferenceCallForRoom","roomsWithCalls","setConferenceHandler","confHandler","getConferenceHandler","_uniq3","DMRoomMap","roomToUser","_hasSentOutPatchDirectAccountDataPatch","_onAccountData","mDirectEvent","getAccountData","userToRooms","_populateRoomToUser","getType","myUserId","getUserId","selfRoomIds","guessedUserIdsThatChanged","guessDMUserId","ids","roomIds","_getUserToRooms","getDMInviter","selfDMs","neededPatching","_patchUpSelfDMs","setAccountData","_sharedInstance","META","setDesc","FREEZE","preventExtensions","setMeta","meta","NEED","fastKey","getWeak","onFreeze","UNSCOPABLES","SettingsHandler","_TextForEvent2","_Avatar2","Notifier","notifsByRoom","pendingEncryptedEventIds","notificationMessageForEvent","textForEvent","_displayPopupNotification","supportsNotifications","maySendNotifications","hasFocus","isBodyEnabled","avatarUrl","avatarUrlForMember","notif","displayNotification","getRoomId","_playAudioNotification","boundOnEvent","onEvent","boundOnSyncStateChange","onSyncStateChange","boundOnRoomReceipt","onRoomReceipt","boundOnEventDecrypted","onEventDecrypted","toolbarHidden","isSyncing","boundOnRoomTimeline","supportsDesktopNotifications","setEnabled","enable","isLevelSupported","isEnabled","requestNotificationPermission","setToolbarHidden","isPossible","isAudioEnabled","hidden","persistent","isToolbarHidden","isBeingDecrypted","isDecryptionFailure","getId","_evaluateEvent","getUnreadNotificationCount","clearNotification","actions","getPushActionsForEvent","notify","tweaks","sound","loudNotification","mxNotifier","_slicedToArray3","_entries2","newObj","_interopRequireWildcard","WidgetUtils","client","me","getMyMembership","maySendStateEvent","testUrlString","testUrl","scalarUrls","integrations_widgets_urls","scalarUrl","eventInIntendedState","timerId","onAccountData","eventsInIntendedState","evList","widgetPresent","onRoomStateEvents","widgetType","widgetName","content","userWidgets","getUserWidgets","addingWidget","state_key","waitForUserWidget","setRoomWidgetEcho","sendStateEvent","waitForRoomWidget","removeRoomWidgetEcho","appsStateEvents","getUserWidgetsArray","widget","_ref2","appId","app","getUser","$matrix_user_id","$matrix_room_id","$matrix_display_name","$matrix_avatar_url","mxcUrlToHttp","$theme","waitForIframeLoad","creatorUserId","appType","capWhitelist","_setImmediate3","createMenu","ElementClass","hasBackground","closeMenu","_reactDom2","menu","ContextualMenu","elementClass","windowResize","_classnames2","ContextualMenuContainerId","_React$Component","contextMenuRect","onContextMenu","collectContextMenuRect","getBoundingClientRect","clientX","clientY","clickEvent","initMouseEvent","elementFromPoint","chevronFace","top","bottom","chevronOffset","adjusted","clientHeight","chevronCSS","menuColour","chevron","menuClasses","mx_ContextualMenu","mx_ContextualMenu_left","mx_ContextualMenu_right","mx_ContextualMenu_top","mx_ContextualMenu_bottom","menuStyle","menuWidth","menuHeight","menuPaddingTop","menuPaddingLeft","menuPaddingBottom","menuPaddingRight","onResize","formatDate","date","showTwelveHour","days","getDaysArray","months","getMonthsArray","toDateString","formatTime","getTime","weekDayName","getDay","getFullYear","monthName","getMonth","day","getDate","formatFullDate","formatFullDateNoTime","fullYear","formatFullTime","wantsDateSeparator","prevEventDate","nextEventDate","MILLIS_IN_DAY","pad","twelveHourTime","showSeconds","hours","getHours","minutes","getMinutes","ampm","getSeconds","_groupSupport","FlairStore","_matrixClient","_userGroups","_groupProfiles","_groupProfilesPromise","_usersPending","_usersInFlight","_debounceTimeoutID","_batchedGetPublicGroups","updatedUserGroups","users","getPublicisedGroups","_callee2","profile","_context2","getGroupProfile","avatar_url","shortDescription","short_description","refreshGroupProfile","_x3","getGroupProfileCached","singletonFlairStore","_getArea2","pageYOffset","pageXOffset","innerWidth","innerHeight","storeKey","droppableIdKey","dimensionMarshalKey","styleContextKey","canLiftContextKey","getDisplayAliasForRoom","getCanonicalAlias","getAliases","getOnlyOtherMember","isConfCallRoom","conferenceHandler","isConfCallRoomCache","otherMember","isConferenceUser","_isConfCallRoom","looksLikeDirectMessageRoom","myMembership","getMember","isKicked","tagNames","totalMemberCount","getJoinedMemberCount","getInvitedMemberCount","guessAndSetDMRoom","isDirect","newTarget","guessedUserId","oldestTs","oldestUser","getTs","getMembers","_user","guessDMRoomTargetId","setDMRoom","dmRoomMap","thisUserId","_roomList","indexOfRoom","roomList","hiddenKeys","DESCRIPTORS","SPECIES","forbiddenField","BREAK","RETURN","cof","ARG","tryGet","callee","ReactBaseClasses","ReactChildren","ReactDOMFactories","ReactElement","ReactPropTypes","ReactVersion","createReactClass","onlyChild","createFactory","cloneElement","__spread","Children","only","PureComponent","isValidElement","PropTypes","createMixin","DOM","wksExt","$Symbol","oneArgumentPooler","copyFieldsFrom","instancePool","standardReleaser","poolSize","DEFAULT_POOLER","CopyConstructor","pooler","NewKlass","twoArgumentPooler","a1","a2","threeArgumentPooler","a3","a4","ReactRef","attachRefs","mountComponent","internalInstance","hostParent","hostContainerInfo","parentDebugID","markup","getReactMountReady","getHostNode","unmountComponent","safely","detachRefs","receiveComponent","nextElement","prevElement","refsChanged","shouldUpdateRefs","EventStatus","NOT_SENT","ENCRYPTING","SENDING","QUEUED","SENT","CANCELLED","interns","MatrixEvent","forwardLooking","_pushActions","_clearEvent","_senderCurve25519Key","_claimedEd25519Key","_forwardingCurve25519KeyChain","_decryptionPromise","_retryDecryption","getSender","user_id","getWireType","origin_server_ts","getWireContent","getPrevContent","getUnsigned","prev_content","getDirectionalContent","getAge","age","getStateKey","isState","makeEncrypted","crypto_type","crypto_content","senderCurve25519Key","claimedEd25519Key","msgtype","attemptDecryption","crypto","isEncrypted","_decryptionLoop","cancelAndResendKeyRequest","wireContent","cancelRoomKeyRequest","algorithm","session_id","sender_key","_badEncryptedMessage","decryptEvent","detailedString","_setClearData","clearEvent","decryptionResult","forwardingCurve25519KeyChain","getSenderKey","getKeysClaimed","ed25519","getClaimedEd25519Key","getForwardingCurve25519KeyChain","unsigned","makeRedacted","redaction_event","redacted_because","_REDACT_KEEP_KEY_MAP","keeps","_REDACT_KEEP_CONTENT_MAP","isRedacted","getPushActions","setPushActions","pushActions","handleRemoteEcho","m.room.member","membership","m.room.create","creator","m.room.join_rules","join_rule","m.room.power_levels","ban","events_default","kick","redact","state_default","users_default","m.room.aliases","aliases","webpackPolyfill","deprecate","_freeze2","RoomState","EventTimeline","eventTimelineSet","_eventTimelineSet","_roomId","_baseIndex","_startState","paginationToken","_endState","_prevTimeline","_nextTimeline","_paginationRequests","toISOString","FORWARDS","initialiseState","stateEvents","setStateEvents","forkLive","forkState","getState","timeline","clone","fork","getFilter","getTimelineSet","getBaseIndex","getEvents","getPaginationToken","token","getNeighbouringTimeline","setNeighbouringTimeline","neighbour","addEvent","atStart","stateContext","timelineSet","getUnfilteredTimelineSet","setEventMetadata","insertIndex","toStartOfTimeline","getSentinelMember","removeEvent","ScalarAuthClient","scalarToken","getScalarToken","tok","validateToken","registerForToken","scalar_token","getOpenIdToken","token_object","exchangeForScalarToken","openid_token_object","scalar_rest_url","scalarPageLookupUrl","getStarterLink","page_title_cache_item","cached_title","widget_type","widget_id","roomName","starterLinkUrl","colorToRgb","rgbToColor","rgb","Tinter","keyRgb","keyHex","currentTint","cssFixups","cssAttrs","svgAttrs","tintables","theme","forceTint","tintable","primaryColor","secondaryColor","tertiaryColor","calcCssFixups","rgb1","rgb2","applyCssFixups","whiteColor","blackColor","getComputedStyle","tint","tintSvgWhite","tintSvgBlack","styleSheets","ss","cssRules","selectorText","attr","cssFixup","svgs","forceColors","fixups","svgDoc","contentDocument","valAttrName","refAttr","svgFixup","forcedColor","singletonTinter","baseIsNative","AutocompleteProvider","commandRegex","forcedCommandRegex","force","shouldForceComplete","command","_x4","completions","PillCompletion","TextualCompletion","subtitle","_React$Component2","_props2","initialComponent","spaces","space","ltrim","rtrim","exporter","ALIAS","FORCE","$iterCreate","setToStringTag","BUGGY","returnThis","IS_SET","IteratorPrototype","getMethod","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","getIteratorMethod","ReactCurrentOwner","REACT_ELEMENT_TYPE","RESERVED_PROPS","__self","__source","hasValidRef","hasValidKey","$$typeof","_owner","childrenLength","childArray","cloneAndReplaceKey","oldElement","_self","_source","checkMask","bitmask","DOMPropertyInjection","MUST_USE_PROPERTY","HAS_BOOLEAN_VALUE","HAS_NUMERIC_VALUE","HAS_POSITIVE_NUMERIC_VALUE","HAS_OVERLOADED_BOOLEAN_VALUE","injectDOMPropertyConfig","domPropertyConfig","Injection","DOMAttributeNamespaces","DOMAttributeNames","DOMPropertyNames","DOMMutationMethods","isCustomAttribute","_isCustomAttributeFunctions","lowerCased","propConfig","propertyInfo","attributeName","attributeNamespace","mutationMethod","mustUseProperty","hasBooleanValue","hasNumericValue","hasPositiveNumericValue","hasOverloadedBooleanValue","ATTRIBUTE_NAME_START_CHAR","ROOT_ATTRIBUTE_NAME","ATTRIBUTE_NAME_CHAR","getPossibleStandardName","isCustomAttributeFn","DOMNamespaces","setInnerHTML","createMicrosoftUnsafeLocalFunction","setTextContent","enableLazy","documentMode","insertTreeChildren","tree","insertTreeBefore","html","referenceNode","nodeName","namespaceURI","DOMLazyTree","replaceChildWithTree","oldNode","newTree","replaceChild","queueChild","parentTree","childTree","queueHTML","queueText","getRawTag","objectToString","nullTag","undefinedTag","symToStringTag","UserAddressType","addressTypes","getAddressType","isEmailAddress","emailRegex","isUserId","mxUserIdRegex","isRoomId","mxRoomIdRegex","shape","addressType","oneOf","address","avatarMxc","isKnown","bool","_dragDropContext","_droppable","_draggable","center","_memoizeOne2","droppable","draggables","draggable","droppableId","_getDisplacementMap2","_isPartiallyVisible2","destination","previousImpact","viewport","movement","displaced","isVisible","page","withMargin","shouldAnimate","draggableId","minIntervalMs","lastCall","scheduledCall","cancelPendingCall","_bind","rebound","getKeyValueArrayDiffs","beforeKey","afterKey","muxedKey","afterVal","place","beforeVal","itemDelta","shallowEqual","objA","objB","keysA","keysB","isKey","stringToPath","isSymbol","INFINITY","encode","decode","decodeHTML","ENTITY","OPENTAG","CLOSETAG","reHtmlTag","reBackslashOrAmp","ESCAPABLE","reEntityOrEscapedChar","reXmlSpecial","reXmlSpecialOrEntity","unescapeChar","replaceUnsafeChar","unescapeString","normalizeURI","escapeXml","preserve_entities","basePick","pick","flatRest","IS_INCLUDES","el","fromIndex","hadRuntime","regeneratorRuntime","oldRuntime","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","inModule","runtime","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","getProto","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","isGeneratorFunction","genFun","awrap","__await","defineIteratorMethods","AsyncIterator","innerFn","outerFn","tryLocsList","skipTempReset","_sent","delegate","tryEntries","resetTryEntry","rootRecord","completion","rval","dispatchException","loc","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","finallyEntry","complete","afterLoc","thrown","delegateYield","resultName","nextLoc","protoGenerator","_invoke","doneResult","delegateResult","maybeInvokeDelegate","makeInvokeMethod","previousPromise","callInvokeWithMethodAndArg","unwrapped","pushTryEntry","locs","iteratorMethod","Timeout","clearFn","_clearFn","setInterval","clearInterval","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","clearImmediate","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","messagePrefix","onGlobalMessage","installPostMessageImplementation","MessageChannel","channel","port1","port2","installMessageChannelImplementation","removeChild","installReadyStateChangeImplementation","task","EventPluginHub","EventPluginUtils","accumulateInto","forEachAccumulated","getListener","accumulateDirectionalDispatches","phase","propagationPhase","registrationName","phasedRegistrationNames","listenerAtPhase","_dispatchListeners","_dispatchInstances","accumulateTwoPhaseDispatchesSingle","traverseTwoPhase","accumulateTwoPhaseDispatchesSingleSkipTarget","parentInst","getParentInstance","accumulateDispatches","ignoredDirection","accumulateDirectDispatchesSingle","EventPropagators","accumulateTwoPhaseDispatches","accumulateTwoPhaseDispatchesSkipTarget","accumulateDirectDispatches","accumulateEnterLeaveDispatches","leave","enter","traverseEnterLeave","EventPluginRegistry","ReactErrorUtils","listenerBank","eventQueue","executeDispatchesAndRelease","simulated","executeDispatchesInOrder","executeDispatchesAndReleaseSimulated","executeDispatchesAndReleaseTopLevel","getDictionaryKey","_rootNodeID","injectEventPluginOrder","injectEventPluginsByName","putListener","PluginModule","registrationNameModules","didPutListener","bankForRegistrationName","isInteractive","shouldPreventMouseEvent","deleteListener","willDeleteListener","deleteAllListeners","extractEvents","topLevelType","possiblePlugin","extractedEvents","enqueueEvents","processEventQueue","processingEventQueue","rethrowCaughtError","__purge","__getListenerBank","getEventTarget","UIEventInterface","view","ownerDocument","SyntheticUIEvent","dispatchMarker","ReactInstanceMap","_reactInternalInstance","base64","ieee754","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","encodingOrOffset","allocUnsafe","fromArrayLike","fromArrayBuffer","isEncoding","actual","fromString","isBuffer","checked","copy","isnan","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","swap","bidirectionalIndexOf","indexSize","arrLength","valLength","read","buf","readUInt16BE","foundIndex","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","base64Slice","fromByteArray","utf8Slice","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","typedArraySupport","_augment","species","allocUnsafeSlow","_isBuffer","pos","swap16","swap32","swap64","hexSlice","asciiSlice","latin1Slice","utf16leSlice","thisStart","thisEnd","thisCopy","targetCopy","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","_logger2","_localStorageCryptoStore2","_memoryCryptoStore2","IndexedDBCryptoStoreBackend","_errors","dbName","_indexedDB","_dbName","_backendPromise","req","VERSION","onupgradeneeded","db","oldVersion","upgradeDatabase","onblocked","onsuccess","Backend","backend","doTxn","STORE_INBOUND_GROUP_SESSIONS","txn","getEndToEndInboundGroupSession","InvalidCryptoStoreError","TOO_NEW","deleteDatabase","_connect","getOrAddOutgoingRoomKeyRequest","requestBody","getOutgoingRoomKeyRequest","wantedStates","getOutgoingRoomKeyRequestByState","getOutgoingRoomKeyRequestsByTarget","requestId","expectedState","updates","updateOutgoingRoomKeyRequest","deleteOutgoingRoomKeyRequest","getAccount","newData","storeAccount","countEndToEndSessions","deviceKey","sessionId","getEndToEndSession","getEndToEndSessions","getAllEndToEndSessions","sessionInfo","storeEndToEndSession","getAllEndToEndInboundGroupSessions","sessionData","addEndToEndInboundGroupSession","storeEndToEndInboundGroupSession","deviceData","storeEndToEndDeviceData","getEndToEndDeviceData","roomInfo","storeEndToEndRoom","getEndToEndRooms","getSessionsNeedingBackup","sessions","unmarkSessionsNeedingBackup","markSessionsNeedingBackup","stores","STORE_ACCOUNT","STORE_SESSIONS","STORE_DEVICE_DATA","STORE_ROOMS","STORE_BACKUP","_verifyKeyAndStartSession","_ref3","_callee3","olmDevice","oneTimeKey","deviceInfo","sid","_context3","_verifySignature","getFingerprint","createOutboundSession","getIdentityKey","_x12","_x13","_x14","_x15","anotherjson","utils","OLM_ALGORITHM","MEGOLM_ALGORITHM","MEGOLM_BACKUP_ALGORITHM","encryptMessageForDevice","resultsObject","ourUserId","ourDeviceId","recipientUserId","recipientDevice","payloadFields","getSessionIdForDevice","sender_device","deviceEd25519Key","recipient","recipient_keys","encryptMessage","_x5","_x6","_x7","ensureOlmSessionsForDevices","baseApis","devicesByUser","devicesWithoutSession","devices","oneTimeKeyAlgorithm","otk_res","claimOneTimeKeys","one_time_keys","userRes","_loop2","_j","deviceRes","keyId","t2","t3","verifySignature","_ref4","signingUserId","signingDeviceId","signingKey","signKeyId","signature","signatures","_x16","_x17","_x18","_x19","_x20","MatrixCall","webRtc","URL","turnServers","urls","FALLBACK_STUN_SERVER","server","callId","didConnect","candidateSendQueue","candidateSendTries","mediaPromises","screenSharingStream","_answerContent","CALL_TIMEOUT_MS","ERR_LOCAL_OFFER_FAILED","ERR_NO_USER_MEDIA","ERR_UNKNOWN_DEVICES","ERR_SEND_INVITE","ERR_SEND_ANSWER","debuglog","checkForErrorListener","_placeCallWithConstraints","_getUserMediaVideoContraints","remoteVideoElement","localVideoElement","_tryPlayRemoteStream","screenConstraints","_getScreenSharingConstraints","getUserMedia","stream","audioConstraints","callError","playElement","queueId","pauseElement","assignElement","srcObject","getLocalVideoElement","getRemoteVideoElement","getRemoteAudioElement","remoteAudioElement","setLocalVideoElement","localAVStream","autoplay","muted","vel","setRemoteVideoElement","setRemoteAudioElement","_tryPlayRemoteAudioStream","_initWithInvite","peerConn","_createPeerConnection","setRemoteDescription","RtcSessionDescription","offer","hookCallback","_onSetRemoteDescriptionSuccess","_onSetRemoteDescriptionError","sdp","stopAllMedia","signalingState","lifetime","_initWithHangup","_sendAnswer","waitForLocalAVStream","_maybeGotUserMediaForAnswer","_replacedBy","successor","suppressEvent","terminate","call_id","sendEvent","setLocalVideoMuted","setTracksEnabled","getVideoTracks","isLocalVideoMuted","isTracksEnabled","setMicrophoneMuted","getAudioTracks","isMicrophoneMuted","_maybeGotUserMediaForInvite","constraints","mandatory","OfferToReceiveAudio","OfferToReceiveVideo","MediaStream","videoEl","addTrack","addStream","_getUserMediaFailed","createOffer","_gotLocalOffer","_getLocalOfferFailed","_sendCandidateQueue","cancelPendingEvent","localVidEl","createAnswer","setLocalDescription","localDescription","_gotLocalIceCandidate","candidate","sdpMid","sdpMLineIndex","sendCandidate","_gotRemoteIceCandidate","cand","addIceCandidate","RtcIceCandidate","_receivedAnswer","_onIceConnectionStateChanged","iceConnectionState","_onSignallingStateChanged","_onAddStream","remoteAVStream","remoteAStream","forAllTracksOnStream","onstarted","_onRemoteStreamTrackStarted","oninactive","_onRemoteStreamEnded","onended","_onRemoteStreamStarted","_onHangupReceived","_onAnsweredElsewhere","tracks","eventType","shouldEmit","player","isOpenWebRTC","audioOutput","setSinkId","ael","cands","delayMs","callList","servers","vendor","credential","pc","RtcPeerConnection","iceTransportPolicy","iceServers","oniceconnectionstatechange","onsignalingstatechange","onicecandidate","onaddstream","video","mediaSource","chromeMediaSource","chromeMediaSourceId","maxWidth","maxHeight","minFrameRate","maxFrameRate","callType","isWebkit","webkitGetUserMedia","audioInput","exact","videoInput","ideal","forAllVideoTracksOnStream","forAllAudioTracksOnStream","setAudioOutput","setAudioInput","setVideoInput","scripts","mozGetUserMedia","RTCPeerConnection","webkitRTCPeerConnection","mozRTCPeerConnection","RTCSessionDescription","webkitRTCSessionDescription","mozRTCSessionDescription","RTCIceCandidate","webkitRTCIceCandidate","mozRTCIceCandidate","optionsForceTURN","getTurnServers","_forceTURN","TempCtor","_getOwnPropertyDescriptor2","htmlparser","quoteRegexp","cloneDeep","isPlainObject","srcset","postcss","sanitizeHtml","VALID_HTML_ATTRIBUTE_NAME","_recursing","htmlParserDefaults","allowedAttributesMap","allowedAttributesGlobMap","nonTextTagsArray","nonTextTags","allowedAttributes","globRegex","allowedClassesMap","allowedClasses","transformTagsAll","transformTagsMap","transformTags","transFun","simpleTransform","skipMap","transformMap","skipText","skipTextDepth","Parser","onopentag","attribs","frame","tagPosition","updateParentNodeText","transformedTag","hasText","innerText","tagName","allowedTags","passedAllowedAttributesMapCheck","multiple","splitStrArray","allowedSchemesAppliedToAttributes","naughtyHref","allowIframeRelativeUrls","allowedIframeHostnames","evil","clss","filterClasses","filteredAST","extractedAttributes","attributeObject","stringifyStyleAttributes","abstractSyntaxTree","allowedStyles","selectedRule","astRules","selector","objValue","srcValue","allowedDeclarationsList","matchesRegex","regularExpression","filterDeclarations","filterCss","escapeHtml","selfClosing","textFilter","ontext","lastFrame","escaped","onclosetag","exclusiveFilter","quote","decodeEntities","allowProtocolRelative","scheme","allowedSchemesByTag","allowedSchemes","img","newTagName","newAttribs","attrib","DomHandler","defineProp","Tokenizer","ElementType","FeedHandler","Stream","WritableStream","ProxyHandler","DomUtils","CollectingHandler","DefaultHandler","RssHandler","parseDOM","dom","parseFeed","feed","createDomStream","elementCb","EVENTS","cdatastart","cdataend","processinginstruction","comment","commentend","closetag","opentag","opentagname","Directive","Comment","Script","Style","Tag","CDATA","Doctype","isTag","getArg","aArgs","aName","aDefaultValue","urlRegexp","dataUrlRegexp","aUrl","urlGenerate","aParsedUrl","aPath","aRoot","aPathUrl","aRootUrl","supportsNullProto","identity","isProtoString","strcmp","aStr1","aStr2","toSetString","aStr","fromSetString","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","cmp","originalLine","originalColumn","generatedColumn","generatedLine","compareByGeneratedPositionsDeflated","onlyCompareGenerated","compareByGeneratedPositionsInflated","parseSourceMapInput","computeSourceURL","sourceRoot","sourceURL","sourceMapURL","jQuery","$","class2type","isArraylike","expando","uuid","removeData","copyIsArray","q","second","$makeArray","dequeue","elems","box","scrollTop","clientTop","scrollLeft","clientLeft","offsetParent","parentOffset","parseFloat","marginTop","marginLeft","borderTopWidth","borderLeftWidth","types","Velocity","Utilities","IE","innerHTML","rAFShim","timeLast","webkitRequestAnimationFrame","mozRequestAnimationFrame","timeDelta","timeCurrent","sanitizeElements","Type","isWrapped","isNodeList","jquery","Zepto","zepto","isZ","isSVG","SVGElement","isEmptyObject","isJQuery","DURATION_DEFAULT","EASING_DEFAULT","isMobile","isAndroid","isGingerbread","isChrome","isFirefox","prefixElement","prefixMatches","scrollAnchor","scrollPropertyLeft","scrollPropertyTop","isTicking","CSS","Redirects","Easings","easing","progress","visibility","loop","mobileHA","_cacheValues","isAnimating","computedStyle","tweensContainer","rootPropertyValueCache","transformCache","hook","mock","major","minor","generateSpringRK4","springAccelerationForState","tension","friction","springEvaluateStateWithDerivative","initialState","dt","derivative","dx","dv","springIntegrateState","dxdt","dvdt","springRK4Factory","have_duration","last_state","initState","time_lapsed","percentComplete","linear","swing","cos","PI","spring","easingArray","generateBezier","RegEx","isHex","valueUnwrap","wrappedValueAlreadyExtracted","valueSplit","Lists","transformsBase","transforms3D","Hooks","templates","textShadow","boxShadow","clip","backgroundPosition","transformOrigin","perspectiveOrigin","registered","rgbComponents","rootProperty","hookTemplate","hookNames","fullHookName","hookPosition","getRoot","hookData","cleanRootPropertyValue","rootPropertyValue","Values","isCSSNullValue","extractValue","hookRoot","injectValue","hookValue","rootPropertyValueParts","Normalizations","propertyValue","extracted","blurComponent","opacity","zoom","transformName","colorName","converted","colorNames","black","blue","gray","green","red","white","hexToRgb","Names","camelCase","subMatch","SVGAttribute","SVGAttributes","prefixCheck","vendors","vendorsLength","propertyPrefixed","hex","rgbParts","getUnitType","getDisplayType","addClass","removeClass","getPropertyValue","forceStyleLookup","computePropertyValue","computedValue","css","toggleDisplay","revertDisplay","setPropertyValue","contentBoxHeight","offsetHeight","contentBoxWidth","offsetWidth","normalizedPropertyName","normalizedPropertyValue","getBBox","scrollData","scrollTo","alternateValue","hookName","flushTransformCache","transformString","getTransformFloat","transformProperty","SVGTransforms","skewX","skewY","scale","rotate","transformValue","perspective","arg2","arg3","adjustedSet","animate","getChain","isUtility","promiseData","elementsWrapped","argumentIndex","propertiesMap","syntacticSugar","elementsLength","elementsIndex","resolver","rejecter","delayTimer","callsToStop","activeCall","activeElement","queueName","activeTween","endValue","currentValue","completeCall","durationOriginal","delayOriginal","backwards","elementIndex","stagger","drag","abortError","reverseCallsCount","callUnitConversionData","lastParent","lastPosition","lastFontSize","lastPercentToPxWidth","lastPercentToPxHeight","lastEmToPx","remToPx","vwToPx","vhToPx","elementUnitConversionData","velocityQueueEntryFlag","buildQueue","scrollPositionCurrent","scrollPositionCurrentAlternate","scrollPositionEnd","scrollDirection","axis","scrollOffset","scroll","startValue","unitType","lastTweensContainer","lastTween","lastStartValue","parsePropertyValue","valueData","skipResolvingEasing","getEasing","colorComponents","endValueRGB","startValueRGB","dataArray","separatedValue","endValueUnitType","startValueUnitType","operator","separateValue","calculateUnitRatios","percentToPxWidth","percentToPxHeight","numericValue","sameRatioIndicators","myParent","fontSize","samePercentRatio","sameEmRatio","unitRatios","emToPx","dummy","createElementNS","measurement","tick","clearQueue","reverseOptions","ticker","requestAnimationFrame","velocity","elementsSize","computedValues","marginBottom","paddingTop","paddingBottom","inlineValues","overflow","originalComplete","mX1","mY1","mX2","mY2","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","mSampleValues","Float32Array","aA1","aA2","calcBezier","aT","getSlope","getTForX","aX","intervalStart","currentSample","lastSample","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","_precomputed","precompute","calcSampleValues","getControlPoints","timestamp","callsLength","compactSparseArray","callContainer","timeStart","firstTick","tweenDummyValue","callLength","transformPropertyExists","flexValue","tween","tweenDelta","adjustedSetData","translate3d","callIndex","isStopped","remainingCallsExist","transformHAPropertyExists","tweenContainer","containsEmoji","charactersToImageNode","alt","useSvg","unicode","_emojione2","imagePathSVG","imagePathPNG","fileType","cacheBustParam","processHtmlForSending","contentDiv","contentHTML","temp","cloneNode","sanitizedHtmlNode","insaneHtml","saneHtml","sanitizeHtmlParams","dangerouslySetInnerHTML","__html","isUrlPermitted","inputUrl","_url2","PERMITTED_URL_SCHEMES","bodyToHtml","highlights","isHtmlMessage","formatted_body","doEmojiOne","emojiOne","bodyHasEmoji","sanitizeParams","forComposerQuote","composerSanitizeHtmlParams","strippedBody","safeBody","isDisplayedWithHtml","highlighter","HtmlHighlighter","highlightLink","safeHighlights","highlight","safeText","applyHighlights","formattedBody","stripReplyFallback","_ReplyThread2","stripHTMLReply","stripPlainReply","_escape2","unicodeToImage","returnString","emojiBody","disableBigEmoji","EMOJI_REGEX","contentBodyTrimmed","mx_EventTile_body","mx_EventTile_bigEmoji","markdown-body","emojifyText","linkifyMatrix","imageType","SURROGATE_PAIR_PATTERN","SYMBOL_PATTERN","unicodeRegexp","COLOR_REGEX","short","fname","mappedUnicode","mapUnicodeToShort","regUnicode","unicodeChar","jsEscapeMap","emojioneList","unicodeAlt","convert","class","cl","*","customCSSMapper","data-mx-color","data-mx-bg-color","customAttributeKey","cssAttributeKey","customAttributeValue","font","span","ol","BaseHighlighter","highlightClass","safeSnippet","lastOffset","safeHighlight","subSnippet","_applySubHighlights","_processSnippet","_BaseHighlighter","snippet","encodeURI","_BaseHighlighter2","TextHighlighter","_DateUtils","_matrixJsSdk","ReplyThread","loadedEv","onQuoteClick","canCollapse","collapse","unmounted","parentEv","onWidgetLoad","getEvent","getParentEventId","loadNextEvent","inReplyToEventId","findEventById","getEventTimeline","header","Pill","pill","TYPE_USER_MENTION","shouldShowPillAvatar","EventTile","DateSeparator","evTiles","dateSep","ts","mxEvent","tileShape","isTwelveHour","mRelatesTo","mInReplyTo","_ev$getContent","evLink","userLink","mxid","_lines","m.relates_to","m.in_reply_to","instanceOf","contextTypes","MatrixClient","baseGetTag","isObjectLike","symbolTag","GroupRoomType","GroupMemberType","apiObject","displayname","isPrivileged","canonical_alias","canonicalAlias","topic","numJoinedMembers","num_joined_members","worldReadable","world_readable","guestCanJoin","guest_can_join","is_public","getCorners","addPosition","spacing1","spacing2","spacing","_position","sourceEdge","destinationEdge","destinationAxis","getCorner","area","crossAxisStart","corner","centerDiff","signed","crossLine","Container","MapStore","Mixin","ReduceStore","ActiveWidgetStore","_persistentWidgetId","_capsByWidgetId","_widgetMessagingByWidgetId","_roomIdByWidgetId","dispatcherRef","destroyPersistentWidget","toDeleteId","setWidgetPersistence","delWidgetMessaging","delWidgetCapabilities","delRoomId","caps","cap","wm","singletonActiveWidgetStore","messageForResourceLimitError","messageForSyncError","limitError","limit_type","admin_contact","monthly_active_user","adminContact","limitType","strings","extraTranslations","errString","WrappedComponent","Matrix","formatCount","toFixed","formatCryptoKey","Avatar","sdk","dispatcher","fallbackUserId","number","resizeMethod","viewUserOnClick","getDefaultProps","_getState","componentWillReceiveProps","nextProps","imageUrl","BaseAvatar","idName","arrayLikeKeys","baseKeys","isLength","_map2","_at3","_flatMap3","_sortBy3","stripDiacritics","QueryMatcher","objects","_options","_funcs","funcs","setObjects","shouldMatchWordsOnly","shouldMatchPrefix","_items","keyValues","resultKey","sortedResults","baseFlatten","baseOrderBy","baseRest","isIterateeCall","iteratees","assignValue","baseAssignValue","customizer","isNew","MATCH","isRegExp","SAFE_CLOSING","riter","skipClosing","ignoreCase","multiline","sticky","SYMBOL","fns","strfn","rxfn","D","forOf","inheritIfRequired","common","IS_WEAK","ADDER","fixMethod","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","getConstructor","setStrong","Typed","TypedArrayConstructors","K","__defineSetter__","COLLECTION","mapFn","nextItem","windowNames","getWindowNames","OBSERVED_ERROR","TransactionImpl","transactionWrappers","wrapperInitData","_isInTransaction","isInTransaction","errorThrown","initializeAll","initData","ViewportMetrics","MouseEventInterface","screenX","screenY","getModifierState","buttons","relatedTarget","fromElement","srcElement","toElement","pageX","currentScrollLeft","pageY","currentScrollTop","SyntheticMouseEvent","reusableSVGContainer","WHITESPACE_TEST","NONVISIBLE_TEST","svg","svgNode","testElement","textNode","deleteData","matchHtmlRegExp","hasEventPageXY","ReactEventEmitterMixin","getVendorPrefixedEventName","isEventSupported","alreadyListeningTo","isMonitoringScrollValue","reactTopListenersCounter","topEventMapping","topAbort","topAnimationEnd","topAnimationIteration","topAnimationStart","topBlur","topCanPlay","topCanPlayThrough","topChange","topClick","topCompositionEnd","topCompositionStart","topCompositionUpdate","topContextMenu","topCopy","topCut","topDoubleClick","topDrag","topDragEnd","topDragEnter","topDragExit","topDragLeave","topDragOver","topDragStart","topDrop","topDurationChange","topEmptied","topEncrypted","topEnded","topError","topFocus","topInput","topKeyDown","topKeyPress","topKeyUp","topLoadedData","topLoadedMetadata","topLoadStart","topMouseDown","topMouseMove","topMouseOut","topMouseOver","topMouseUp","topPaste","topPause","topPlay","topPlaying","topProgress","topRateChange","topScroll","topSeeked","topSeeking","topSelectionChange","topStalled","topSuspend","topTextInput","topTimeUpdate","topTouchCancel","topTouchEnd","topTouchMove","topTouchStart","topTransitionEnd","topVolumeChange","topWaiting","topWheel","topListenersIDKey","ReactBrowserEventEmitter","ReactEventListener","injectReactEventListener","setHandleTopLevel","handleTopLevel","listenTo","contentDocumentHandle","mountAt","isListening","getListeningForDocument","dependencies","registrationNameDependencies","dependency","trapBubbledEvent","trapCapturedEvent","WINDOW_HANDLE","handlerBaseName","supportsEventPageXY","ensureScrollValueMonitoring","refresh","refreshScrollValues","monitorScrollValue","User","presence","presenceStatusMsg","_unstable_statusMessage","rawDisplayName","lastActiveAgo","lastPresenceTs","currentlyActive","_updateModifiedTime","setPresenceEvent","firstFire","eventsToFire","currently_active","status_msg","last_active_ago","setDisplayName","oldName","setRawDisplayName","setAvatarUrl","oldUrl","_modified","getLastModifiedTime","getLastActiveTs","_unstable_updateStatusMessage","SyncAccumulator","maxTimelineEntries","accountData","inviteRooms","joinRooms","nextBatch","invite","syncResponse","_accumulateRooms","_accumulateGroups","_accumulateAccountData","next_batch","account_data","rooms","_accumulateRoom","_accumulateInviteState","_accumulateJoinState","invite_state","currentData","hasAdded","_currentState","_timeline","_accountData","_unreadNotifications","_summary","_readReceipts","unread_notifications","summary","acc","ephemeral","limited","prev_batch","_accumulateGroup","cat","roomData","roomJson","evType","receiptEvent","receiptData","m.read","msgData","rollBackState","timelineEvent","prevStateEvent","prev_sender","accData","roomsData","groupsData","eventMap","parseContentType","PREFIX_R0","PREFIX_UNSTABLE","PREFIX_IDENTITY_V1","PREFIX_MEDIA_R0","MatrixHttpApi","event_emitter","onlyData","useAuthorizationHeader","uploads","getContentUri","access_token","uploadContent","includeFilename","contentType","rawResponse","onlyContentUri","upload","loaded","total","bodyParser","rawBody","content_uri","requestCallback","timeout_fn","abort","timeout_timer","http_status","progressHandler","queryArgs","queryParams","filename","authedRequest","Content-Type","promise0","cancelUpload","getCurrentUploads","idServerRequest","fullUri","_matrix_opts","localTimeoutMs","Authorization","requestPromise","consent_uri","requestOtherUrl","authedRequestWithPrefix","requestWithPrefix","_request","getUrl","extraParams","timeoutId","timedOut","resetTimeout","MatrixError","reqPromise","useQuerystring","handlerFn","onprogress","ex","userDefinedCallback","getResponseHeader","getResponseContentType","parseErrorResponse","errorJson","RULEKINDS_IN_ORDER","PushProcessor","cachedGlobToRegex","matchingRuleFromKindSet","kindset","ruleKindIndex","ruleset","ruleIndex","rawrule","templateRuleToRaw","ruleMatchesEvent","tprule","rule_id","conditions","pattern","profile_tag","eventFulfillsCondition","cond","condition_functions","event_match","eventFulfillsEventMatchCondition","eventFulfillsDeviceCondition","contains_display_name","eventFulfillsDisplayNameCondition","room_member_count","eventFulfillsRoomMemberCountCondition","sender_notification_permission","eventFulfillsSenderNotifPermCondition","notifLevelKey","mayTriggerNotifOfType","memberCount","ineq","rhs","valueForDottedKey","regex","createCachedRegex","firstPart","thispart","pushActionsForEventAndRulesets","rulesets","allDevNames","devname","devrules","matchingRule","matchingRuleForEventWithRulesets","actionObj","actionListToActionsObject","actionsForEvent","pushRules","getPushRuleById","ruleId","actionlist","actionobj","set_tweak","getHttpUriForMxc","mxc","allowDirectLinks","serverAndMediaId","fragmentOffset","getIdenticonUri","identiconString","$ident","getAvatarUrl","getHomeserverUrl","devicePixelRatio","defaultAvatarUrlForString","avatarUrlForUser","ContentRepo","images","resendUnsentEvents","getPendingEvents","resend","cancelUnsentEvents","removeFromQueue","resendEvent","WidgetEchoStore","_roomWidgetEcho","echoedWidgets","roomEchoState","singletonWidgetEchoStore","AtRule","_Container","_classCallCheck","_possibleConstructorReturn","_inherits","append","_Container$prototype$","prepend","_Container$prototype$2","_createClass","_container2","_list2","Rule","comma","sep","raw","iteratee",":kiss_ww:","uc","isCanonical",":couplekiss_ww:",":kiss_mm:",":couplekiss_mm:",":family_mmbb:",":family_mmgb:",":family_mmgg:",":family_mwbb:",":family_mwgb:",":family_mwgg:",":family_wwbb:",":family_wwgb:",":family_wwgg:",":couple_ww:",":couple_with_heart_ww:",":couple_mm:",":couple_with_heart_mm:",":family_mmb:",":family_mmg:",":family_mwg:",":family_wwb:",":family_wwg:",":rainbow_flag:",":gay_pride_flag:",":eye_in_speech_bubble:",":hash:",":zero:",":one:",":two:",":three:",":four:",":five:",":six:",":seven:",":eight:",":nine:",":asterisk:",":keycap_asterisk:",":handball_tone5:",":handball_tone4:",":handball_tone3:",":handball_tone2:",":handball_tone1:",":water_polo_tone5:",":water_polo_tone4:",":water_polo_tone3:",":water_polo_tone2:",":water_polo_tone1:",":wrestlers_tone5:",":wrestling_tone5:",":wrestlers_tone4:",":wrestling_tone4:",":wrestlers_tone3:",":wrestling_tone3:",":wrestlers_tone2:",":wrestling_tone2:",":wrestlers_tone1:",":wrestling_tone1:",":juggling_tone5:",":juggler_tone5:",":juggling_tone4:",":juggler_tone4:",":juggling_tone3:",":juggler_tone3:",":juggling_tone2:",":juggler_tone2:",":juggling_tone1:",":juggler_tone1:",":cartwheel_tone5:",":person_doing_cartwheel_tone5:",":cartwheel_tone4:",":person_doing_cartwheel_tone4:",":cartwheel_tone3:",":person_doing_cartwheel_tone3:",":cartwheel_tone2:",":person_doing_cartwheel_tone2:",":cartwheel_tone1:",":person_doing_cartwheel_tone1:",":shrug_tone5:",":shrug_tone4:",":shrug_tone3:",":shrug_tone2:",":shrug_tone1:",":mrs_claus_tone5:",":mother_christmas_tone5:",":mrs_claus_tone4:",":mother_christmas_tone4:",":mrs_claus_tone3:",":mother_christmas_tone3:",":mrs_claus_tone2:",":mother_christmas_tone2:",":mrs_claus_tone1:",":mother_christmas_tone1:",":man_in_tuxedo_tone5:",":tuxedo_tone5:",":man_in_tuxedo_tone4:",":tuxedo_tone4:",":man_in_tuxedo_tone3:",":tuxedo_tone3:",":man_in_tuxedo_tone2:",":tuxedo_tone2:",":man_in_tuxedo_tone1:",":tuxedo_tone1:",":prince_tone5:",":prince_tone4:",":prince_tone3:",":prince_tone2:",":prince_tone1:",":selfie_tone5:",":selfie_tone4:",":selfie_tone3:",":selfie_tone2:",":selfie_tone1:",":pregnant_woman_tone5:",":expecting_woman_tone5:",":pregnant_woman_tone4:",":expecting_woman_tone4:",":pregnant_woman_tone3:",":expecting_woman_tone3:",":pregnant_woman_tone2:",":expecting_woman_tone2:",":pregnant_woman_tone1:",":expecting_woman_tone1:",":face_palm_tone5:",":facepalm_tone5:",":face_palm_tone4:",":facepalm_tone4:",":face_palm_tone3:",":facepalm_tone3:",":face_palm_tone2:",":facepalm_tone2:",":face_palm_tone1:",":facepalm_tone1:",":fingers_crossed_tone5:",":hand_with_index_and_middle_fingers_crossed_tone5:",":fingers_crossed_tone4:",":hand_with_index_and_middle_fingers_crossed_tone4:",":fingers_crossed_tone3:",":hand_with_index_and_middle_fingers_crossed_tone3:",":fingers_crossed_tone2:",":hand_with_index_and_middle_fingers_crossed_tone2:",":fingers_crossed_tone1:",":hand_with_index_and_middle_fingers_crossed_tone1:",":handshake_tone5:",":shaking_hands_tone5:",":handshake_tone4:",":shaking_hands_tone4:",":handshake_tone3:",":shaking_hands_tone3:",":handshake_tone2:",":shaking_hands_tone2:",":handshake_tone1:",":shaking_hands_tone1:",":right_facing_fist_tone5:",":right_fist_tone5:",":right_facing_fist_tone4:",":right_fist_tone4:",":right_facing_fist_tone3:",":right_fist_tone3:",":right_facing_fist_tone2:",":right_fist_tone2:",":right_facing_fist_tone1:",":right_fist_tone1:",":left_facing_fist_tone5:",":left_fist_tone5:",":left_facing_fist_tone4:",":left_fist_tone4:",":left_facing_fist_tone3:",":left_fist_tone3:",":left_facing_fist_tone2:",":left_fist_tone2:",":left_facing_fist_tone1:",":left_fist_tone1:",":raised_back_of_hand_tone5:",":back_of_hand_tone5:",":raised_back_of_hand_tone4:",":back_of_hand_tone4:",":raised_back_of_hand_tone3:",":back_of_hand_tone3:",":raised_back_of_hand_tone2:",":back_of_hand_tone2:",":raised_back_of_hand_tone1:",":back_of_hand_tone1:",":call_me_tone5:",":call_me_hand_tone5:",":call_me_tone4:",":call_me_hand_tone4:",":call_me_tone3:",":call_me_hand_tone3:",":call_me_tone2:",":call_me_hand_tone2:",":call_me_tone1:",":call_me_hand_tone1:",":metal_tone5:",":sign_of_the_horns_tone5:",":metal_tone4:",":sign_of_the_horns_tone4:",":metal_tone3:",":sign_of_the_horns_tone3:",":metal_tone2:",":sign_of_the_horns_tone2:",":metal_tone1:",":sign_of_the_horns_tone1:",":bath_tone5:",":bath_tone4:",":bath_tone3:",":bath_tone2:",":bath_tone1:",":walking_tone5:",":walking_tone4:",":walking_tone3:",":walking_tone2:",":walking_tone1:",":mountain_bicyclist_tone5:",":mountain_bicyclist_tone4:",":mountain_bicyclist_tone3:",":mountain_bicyclist_tone2:",":mountain_bicyclist_tone1:",":bicyclist_tone5:",":bicyclist_tone4:",":bicyclist_tone3:",":bicyclist_tone2:",":bicyclist_tone1:",":rowboat_tone5:",":rowboat_tone4:",":rowboat_tone3:",":rowboat_tone2:",":rowboat_tone1:",":pray_tone5:",":pray_tone4:",":pray_tone3:",":pray_tone2:",":pray_tone1:",":person_with_pouting_face_tone5:",":person_with_pouting_face_tone4:",":person_with_pouting_face_tone3:",":person_with_pouting_face_tone2:",":person_with_pouting_face_tone1:",":person_frowning_tone5:",":person_frowning_tone4:",":person_frowning_tone3:",":person_frowning_tone2:",":person_frowning_tone1:",":raised_hands_tone5:",":raised_hands_tone4:",":raised_hands_tone3:",":raised_hands_tone2:",":raised_hands_tone1:",":raising_hand_tone5:",":raising_hand_tone4:",":raising_hand_tone3:",":raising_hand_tone2:",":raising_hand_tone1:",":bow_tone5:",":bow_tone4:",":bow_tone3:",":bow_tone2:",":bow_tone1:",":ok_woman_tone5:",":ok_woman_tone4:",":ok_woman_tone3:",":ok_woman_tone2:",":ok_woman_tone1:",":no_good_tone5:",":no_good_tone4:",":no_good_tone3:",":no_good_tone2:",":no_good_tone1:",":vulcan_tone5:",":raised_hand_with_part_between_middle_and_ring_fingers_tone5:",":vulcan_tone4:",":raised_hand_with_part_between_middle_and_ring_fingers_tone4:",":vulcan_tone3:",":raised_hand_with_part_between_middle_and_ring_fingers_tone3:",":vulcan_tone2:",":raised_hand_with_part_between_middle_and_ring_fingers_tone2:",":vulcan_tone1:",":raised_hand_with_part_between_middle_and_ring_fingers_tone1:",":middle_finger_tone5:",":reversed_hand_with_middle_finger_extended_tone5:",":middle_finger_tone4:",":reversed_hand_with_middle_finger_extended_tone4:",":middle_finger_tone3:",":reversed_hand_with_middle_finger_extended_tone3:",":middle_finger_tone2:",":reversed_hand_with_middle_finger_extended_tone2:",":middle_finger_tone1:",":reversed_hand_with_middle_finger_extended_tone1:",":hand_splayed_tone5:",":raised_hand_with_fingers_splayed_tone5:",":hand_splayed_tone4:",":raised_hand_with_fingers_splayed_tone4:",":hand_splayed_tone3:",":raised_hand_with_fingers_splayed_tone3:",":hand_splayed_tone2:",":raised_hand_with_fingers_splayed_tone2:",":hand_splayed_tone1:",":raised_hand_with_fingers_splayed_tone1:",":man_dancing_tone5:",":male_dancer_tone5:",":man_dancing_tone4:",":male_dancer_tone4:",":man_dancing_tone3:",":male_dancer_tone3:",":man_dancing_tone2:",":male_dancer_tone2:",":man_dancing_tone1:",":male_dancer_tone1:",":spy_tone5:",":sleuth_or_spy_tone5:",":spy_tone4:",":sleuth_or_spy_tone4:",":spy_tone3:",":sleuth_or_spy_tone3:",":spy_tone2:",":sleuth_or_spy_tone2:",":spy_tone1:",":sleuth_or_spy_tone1:",":muscle_tone5:",":muscle_tone4:",":muscle_tone3:",":muscle_tone2:",":muscle_tone1:",":haircut_tone5:",":haircut_tone4:",":haircut_tone3:",":haircut_tone2:",":haircut_tone1:",":massage_tone5:",":massage_tone4:",":massage_tone3:",":massage_tone2:",":massage_tone1:",":nail_care_tone5:",":nail_care_tone4:",":nail_care_tone3:",":nail_care_tone2:",":nail_care_tone1:",":dancer_tone5:",":dancer_tone4:",":dancer_tone3:",":dancer_tone2:",":dancer_tone1:",":guardsman_tone5:",":guardsman_tone4:",":guardsman_tone3:",":guardsman_tone2:",":guardsman_tone1:",":information_desk_person_tone5:",":information_desk_person_tone4:",":information_desk_person_tone3:",":information_desk_person_tone2:",":information_desk_person_tone1:",":angel_tone5:",":angel_tone4:",":angel_tone3:",":angel_tone2:",":angel_tone1:",":princess_tone5:",":princess_tone4:",":princess_tone3:",":princess_tone2:",":princess_tone1:",":construction_worker_tone5:",":construction_worker_tone4:",":construction_worker_tone3:",":construction_worker_tone2:",":construction_worker_tone1:",":baby_tone5:",":baby_tone4:",":baby_tone3:",":baby_tone2:",":baby_tone1:",":older_woman_tone5:",":grandma_tone5:",":older_woman_tone4:",":grandma_tone4:",":older_woman_tone3:",":grandma_tone3:",":older_woman_tone2:",":grandma_tone2:",":older_woman_tone1:",":grandma_tone1:",":older_man_tone5:",":older_man_tone4:",":older_man_tone3:",":older_man_tone2:",":older_man_tone1:",":man_with_turban_tone5:",":man_with_turban_tone4:",":man_with_turban_tone3:",":man_with_turban_tone2:",":man_with_turban_tone1:",":man_with_gua_pi_mao_tone5:",":man_with_gua_pi_mao_tone4:",":man_with_gua_pi_mao_tone3:",":man_with_gua_pi_mao_tone2:",":man_with_gua_pi_mao_tone1:",":person_with_blond_hair_tone5:",":person_with_blond_hair_tone4:",":person_with_blond_hair_tone3:",":person_with_blond_hair_tone2:",":person_with_blond_hair_tone1:",":bride_with_veil_tone5:",":bride_with_veil_tone4:",":bride_with_veil_tone3:",":bride_with_veil_tone2:",":bride_with_veil_tone1:",":cop_tone5:",":cop_tone4:",":cop_tone3:",":cop_tone2:",":cop_tone1:",":woman_tone5:",":woman_tone4:",":woman_tone3:",":woman_tone2:",":woman_tone1:",":man_tone5:",":man_tone4:",":man_tone3:",":man_tone2:",":man_tone1:",":girl_tone5:",":girl_tone4:",":girl_tone3:",":girl_tone2:",":girl_tone1:",":boy_tone5:",":boy_tone4:",":boy_tone3:",":boy_tone2:",":boy_tone1:",":open_hands_tone5:",":open_hands_tone4:",":open_hands_tone3:",":open_hands_tone2:",":open_hands_tone1:",":clap_tone5:",":clap_tone4:",":clap_tone3:",":clap_tone2:",":clap_tone1:",":thumbsdown_tone5:",":-1_tone5:",":thumbdown_tone5:",":thumbsdown_tone4:",":-1_tone4:",":thumbdown_tone4:",":thumbsdown_tone3:",":-1_tone3:",":thumbdown_tone3:",":thumbsdown_tone2:",":-1_tone2:",":thumbdown_tone2:",":thumbsdown_tone1:",":-1_tone1:",":thumbdown_tone1:",":thumbsup_tone5:",":+1_tone5:",":thumbup_tone5:",":thumbsup_tone4:",":+1_tone4:",":thumbup_tone4:",":thumbsup_tone3:",":+1_tone3:",":thumbup_tone3:",":thumbsup_tone2:",":+1_tone2:",":thumbup_tone2:",":thumbsup_tone1:",":+1_tone1:",":thumbup_tone1:",":ok_hand_tone5:",":ok_hand_tone4:",":ok_hand_tone3:",":ok_hand_tone2:",":ok_hand_tone1:",":wave_tone5:",":wave_tone4:",":wave_tone3:",":wave_tone2:",":wave_tone1:",":punch_tone5:",":punch_tone4:",":punch_tone3:",":punch_tone2:",":punch_tone1:",":point_right_tone5:",":point_right_tone4:",":point_right_tone3:",":point_right_tone2:",":point_right_tone1:",":point_left_tone5:",":point_left_tone4:",":point_left_tone3:",":point_left_tone2:",":point_left_tone1:",":point_down_tone5:",":point_down_tone4:",":point_down_tone3:",":point_down_tone2:",":point_down_tone1:",":point_up_2_tone5:",":point_up_2_tone4:",":point_up_2_tone3:",":point_up_2_tone2:",":point_up_2_tone1:",":nose_tone5:",":nose_tone4:",":nose_tone3:",":nose_tone2:",":nose_tone1:",":ear_tone5:",":ear_tone4:",":ear_tone3:",":ear_tone2:",":ear_tone1:",":lifter_tone5:",":weight_lifter_tone5:",":lifter_tone4:",":weight_lifter_tone4:",":lifter_tone3:",":weight_lifter_tone3:",":lifter_tone2:",":weight_lifter_tone2:",":lifter_tone1:",":weight_lifter_tone1:",":swimmer_tone5:",":swimmer_tone4:",":swimmer_tone3:",":swimmer_tone2:",":swimmer_tone1:",":horse_racing_tone5:",":horse_racing_tone4:",":horse_racing_tone3:",":horse_racing_tone2:",":horse_racing_tone1:",":surfer_tone5:",":surfer_tone4:",":surfer_tone3:",":surfer_tone2:",":surfer_tone1:",":runner_tone5:",":runner_tone4:",":runner_tone3:",":runner_tone2:",":runner_tone1:",":santa_tone5:",":santa_tone4:",":santa_tone3:",":santa_tone2:",":santa_tone1:",":flag_zw:",":zw:",":flag_zm:",":zm:",":flag_za:",":za:",":flag_yt:",":yt:",":flag_ye:",":ye:",":flag_xk:",":xk:",":flag_ws:",":ws:",":flag_wf:",":wf:",":flag_vu:",":vu:",":flag_vn:",":vn:",":flag_vi:",":vi:",":flag_vg:",":vg:",":flag_ve:",":ve:",":flag_vc:",":vc:",":flag_va:",":va:",":flag_uz:",":uz:",":flag_uy:",":uy:",":flag_us:",":us:",":flag_um:",":um:",":flag_ug:",":ug:",":flag_ua:",":ua:",":flag_tz:",":tz:",":flag_tw:",":tw:",":flag_tv:",":tuvalu:",":flag_tt:",":tt:",":flag_tr:",":tr:",":flag_to:",":to:",":flag_tn:",":tn:",":flag_tm:",":turkmenistan:",":flag_tl:",":tl:",":flag_tk:",":tk:",":flag_tj:",":tj:",":flag_th:",":th:",":flag_tg:",":tg:",":flag_tf:",":tf:",":flag_td:",":td:",":flag_tc:",":tc:",":flag_ta:",":ta:",":flag_sz:",":sz:",":flag_sy:",":sy:",":flag_sx:",":sx:",":flag_sv:",":sv:",":flag_st:",":st:",":flag_ss:",":ss:",":flag_sr:",":sr:",":flag_so:",":so:",":flag_sn:",":sn:",":flag_sm:",":sm:",":flag_sl:",":sl:",":flag_sk:",":sk:",":flag_sj:",":sj:",":flag_si:",":si:",":flag_sh:",":sh:",":flag_sg:",":sg:",":flag_se:",":se:",":flag_sd:",":sd:",":flag_sc:",":sc:",":flag_sb:",":sb:",":flag_sa:",":saudiarabia:",":saudi:",":flag_rw:",":rw:",":flag_ru:",":ru:",":flag_rs:",":rs:",":flag_ro:",":ro:",":flag_re:",":re:",":flag_qa:",":qa:",":flag_py:",":py:",":flag_pw:",":pw:",":flag_pt:",":pt:",":flag_ps:",":ps:",":flag_pr:",":pr:",":flag_pn:",":pn:",":flag_pm:",":pm:",":flag_pl:",":pl:",":flag_pk:",":pk:",":flag_ph:",":ph:",":flag_pg:",":pg:",":flag_pf:",":pf:",":flag_pe:",":pe:",":flag_pa:",":pa:",":flag_om:",":om:",":flag_nz:",":nz:",":flag_nu:",":nu:",":flag_nr:",":nr:",":flag_np:",":np:",":flag_no:",":no:",":flag_nl:",":nl:",":flag_ni:",":ni:",":flag_ng:",":nigeria:",":flag_nf:",":nf:",":flag_ne:",":ne:",":flag_nc:",":nc:",":flag_na:",":na:",":flag_mz:",":mz:",":flag_my:",":my:",":flag_mx:",":mx:",":flag_mw:",":mw:",":flag_mv:",":mv:",":flag_mu:",":mu:",":flag_mt:",":mt:",":flag_ms:",":ms:",":flag_mr:",":mr:",":flag_mq:",":mq:",":flag_mp:",":mp:",":flag_mo:",":mo:",":flag_mn:",":mn:",":flag_mm:",":mm:",":flag_ml:",":ml:",":flag_mk:",":mk:",":flag_mh:",":mh:",":flag_mg:",":mg:",":flag_mf:",":mf:",":flag_me:",":me:",":flag_md:",":md:",":flag_mc:",":mc:",":flag_ma:",":ma:",":flag_ly:",":ly:",":flag_lv:",":lv:",":flag_lu:",":lu:",":flag_lt:",":lt:",":flag_ls:",":ls:",":flag_lr:",":lr:",":flag_lk:",":lk:",":flag_li:",":li:",":flag_lc:",":lc:",":flag_lb:",":lb:",":flag_la:",":la:",":flag_kz:",":kz:",":flag_ky:",":ky:",":flag_kw:",":kw:",":flag_kr:",":kr:",":flag_kp:",":kp:",":flag_kn:",":kn:",":flag_km:",":km:",":flag_ki:",":ki:",":flag_kh:",":kh:",":flag_kg:",":kg:",":flag_ke:",":ke:",":flag_jp:",":jp:",":flag_jo:",":jo:",":flag_jm:",":jm:",":flag_je:",":je:",":flag_it:",":it:",":flag_is:",":is:",":flag_ir:",":ir:",":flag_iq:",":iq:",":flag_io:",":io:",":flag_in:",":in:",":flag_im:",":im:",":flag_il:",":il:",":flag_ie:",":ie:",":flag_id:",":indonesia:",":flag_ic:",":ic:",":flag_hu:",":hu:",":flag_ht:",":ht:",":flag_hr:",":hr:",":flag_hn:",":hn:",":flag_hm:",":hm:",":flag_hk:",":hk:",":flag_gy:",":gy:",":flag_gw:",":gw:",":flag_gu:",":gu:",":flag_gt:",":gt:",":flag_gs:",":gs:",":flag_gr:",":gr:",":flag_gq:",":gq:",":flag_gp:",":gp:",":flag_gn:",":gn:",":flag_gm:",":gm:",":flag_gl:",":gl:",":flag_gi:",":gi:",":flag_gh:",":gh:",":flag_gg:",":gg:",":flag_gf:",":gf:",":flag_ge:",":ge:",":flag_gd:",":gd:",":flag_gb:",":gb:",":flag_ga:",":ga:",":flag_fr:",":fr:",":flag_fo:",":fo:",":flag_fm:",":fm:",":flag_fk:",":fk:",":flag_fj:",":fj:",":flag_fi:",":fi:",":flag_eu:",":eu:",":flag_et:",":et:",":flag_es:",":es:",":flag_er:",":er:",":flag_eh:",":eh:",":flag_eg:",":eg:",":flag_ee:",":ee:",":flag_ec:",":ec:",":flag_ea:",":ea:",":flag_dz:",":dz:",":flag_do:",":do:",":flag_dm:",":dm:",":flag_dk:",":dk:",":flag_dj:",":dj:",":flag_dg:",":dg:",":flag_de:",":de:",":flag_cz:",":cz:",":flag_cy:",":cy:",":flag_cx:",":cx:",":flag_cw:",":cw:",":flag_cv:",":cv:",":flag_cu:",":cu:",":flag_cr:",":cr:",":flag_cp:",":cp:",":flag_co:",":co:",":flag_cn:",":cn:",":flag_cm:",":cm:",":flag_cl:",":chile:",":flag_ck:",":ck:",":flag_ci:",":ci:",":flag_ch:",":ch:",":flag_cg:",":cg:",":flag_cf:",":cf:",":flag_cd:",":congo:",":flag_cc:",":cc:",":flag_ca:",":ca:",":flag_bz:",":bz:",":flag_by:",":by:",":flag_bw:",":bw:",":flag_bv:",":bv:",":flag_bt:",":bt:",":flag_bs:",":bs:",":flag_br:",":br:",":flag_bq:",":bq:",":flag_bo:",":bo:",":flag_bn:",":bn:",":flag_bm:",":bm:",":flag_bl:",":bl:",":flag_bj:",":bj:",":flag_bi:",":bi:",":flag_bh:",":bh:",":flag_bg:",":bg:",":flag_bf:",":bf:",":flag_be:",":be:",":flag_bd:",":bd:",":flag_bb:",":bb:",":flag_ba:",":ba:",":flag_az:",":az:",":flag_ax:",":ax:",":flag_aw:",":aw:",":flag_au:",":au:",":flag_at:",":at:",":flag_as:",":as:",":flag_ar:",":ar:",":flag_aq:",":aq:",":flag_ao:",":ao:",":flag_am:",":am:",":flag_al:",":al:",":flag_ai:",":ai:",":flag_ag:",":ag:",":flag_af:",":af:",":flag_ae:",":ae:",":flag_ad:",":ad:",":flag_ac:",":ac:",":mahjong:",":parking:",":sa:",":u7121:",":u6307:",":u6708:",":film_frames:",":tickets:",":admission_tickets:",":lifter:",":weight_lifter:",":golfer:",":motorcycle:",":racing_motorcycle:",":race_car:",":racing_car:",":military_medal:",":reminder_ribbon:",":hot_pepper:",":cloud_rain:",":cloud_with_rain:",":cloud_snow:",":cloud_with_snow:",":cloud_lightning:",":cloud_with_lightning:",":cloud_tornado:",":cloud_with_tornado:",":fog:",":wind_blowing_face:",":chipmunk:",":spider:",":spider_web:",":thermometer:",":microphone2:",":studio_microphone:",":level_slider:",":control_knobs:",":flag_white:",":waving_white_flag:",":rosette:",":label:",":projector:",":film_projector:",":om_symbol:",":dove:",":dove_of_peace:",":candle:",":clock:",":mantlepiece_clock:",":hole:",":dark_sunglasses:",":joystick:",":paperclips:",":linked_paperclips:",":pen_ballpoint:",":lower_left_ballpoint_pen:",":pen_fountain:",":lower_left_fountain_pen:",":paintbrush:",":lower_left_paintbrush:",":crayon:",":lower_left_crayon:",":desktop:",":desktop_computer:",":printer:",":trackball:",":frame_photo:",":frame_with_picture:",":dividers:",":card_index_dividers:",":card_box:",":card_file_box:",":file_cabinet:",":wastebasket:",":notepad_spiral:",":spiral_note_pad:",":calendar_spiral:",":spiral_calendar_pad:",":compression:",":key2:",":old_key:",":newspaper2:",":rolled_up_newspaper:",":dagger:",":dagger_knife:",":speaking_head:",":speaking_head_in_silhouette:",":speech_left:",":left_speech_bubble:",":anger_right:",":right_anger_bubble:",":ballot_box:",":ballot_box_with_ballot:",":map:",":world_map:",":tools:",":hammer_and_wrench:",":shield:",":oil:",":oil_drum:",":satellite_orbital:",":fork_knife_plate:",":fork_and_knife_with_plate:",":eye:",":levitate:",":man_in_business_suit_levitating:",":spy:",":sleuth_or_spy:",":hand_splayed:",":raised_hand_with_fingers_splayed:",":mountain_snow:",":snow_capped_mountain:",":camping:",":beach:",":beach_with_umbrella:",":construction_site:",":building_construction:",":homes:",":house_buildings:",":cityscape:",":house_abandoned:",":derelict_house_building:",":classical_building:",":desert:",":island:",":desert_island:",":park:",":national_park:",":stadium:",":couch:",":couch_and_lamp:",":shopping_bags:",":bellhop:",":bellhop_bell:",":bed:",":motorway:",":railway_track:",":railroad_track:",":motorboat:",":airplane_small:",":small_airplane:",":cruise_ship:",":passenger_ship:",":white_sun_small_cloud:",":white_sun_with_small_cloud:",":white_sun_cloud:",":white_sun_behind_cloud:",":white_sun_rain_cloud:",":white_sun_behind_cloud_with_rain:",":mouse_three_button:",":three_button_mouse:",":point_up_tone1:",":point_up_tone2:",":point_up_tone3:",":point_up_tone4:",":point_up_tone5:",":v_tone1:",":v_tone2:",":v_tone3:",":v_tone4:",":v_tone5:",":fist_tone1:",":fist_tone2:",":fist_tone3:",":fist_tone4:",":fist_tone5:",":raised_hand_tone1:",":raised_hand_tone2:",":raised_hand_tone3:",":raised_hand_tone4:",":raised_hand_tone5:",":writing_hand_tone1:",":writing_hand_tone2:",":writing_hand_tone3:",":writing_hand_tone4:",":writing_hand_tone5:",":basketball_player_tone1:",":person_with_ball_tone1:",":basketball_player_tone2:",":person_with_ball_tone2:",":basketball_player_tone3:",":person_with_ball_tone3:",":basketball_player_tone4:",":person_with_ball_tone4:",":basketball_player_tone5:",":person_with_ball_tone5:",":copyright:",":registered:",":bangbang:",":interrobang:",":tm:",":information_source:",":left_right_arrow:",":arrow_up_down:",":arrow_upper_left:",":arrow_upper_right:",":arrow_lower_right:",":arrow_lower_left:",":leftwards_arrow_with_hook:",":arrow_right_hook:",":watch:",":hourglass:",":m:",":black_small_square:",":white_small_square:",":arrow_forward:",":arrow_backward:",":white_medium_square:",":black_medium_square:",":white_medium_small_square:",":black_medium_small_square:",":sunny:",":cloud:",":telephone:",":ballot_box_with_check:",":umbrella:",":coffee:",":point_up:",":relaxed:",":aries:",":taurus:",":gemini:",":cancer:",":leo:",":virgo:",":libra:",":scorpius:",":sagittarius:",":capricorn:",":aquarius:",":pisces:",":spades:",":clubs:",":hearts:",":diamonds:",":hotsprings:",":recycle:",":wheelchair:",":anchor:",":warning:",":zap:",":white_circle:",":black_circle:",":soccer:",":baseball:",":snowman:",":partly_sunny:",":no_entry:",":church:",":fountain:",":golf:",":sailboat:",":tent:",":fuelpump:",":scissors:",":airplane:",":envelope:",":v:",":pencil2:",":black_nib:",":heavy_check_mark:",":heavy_multiplication_x:",":eight_spoked_asterisk:",":eight_pointed_black_star:",":snowflake:",":sparkle:",":exclamation:",":heart:",":arrow_right:",":arrow_heading_up:",":arrow_heading_down:",":arrow_left:",":arrow_up:",":arrow_down:",":black_large_square:",":white_large_square:",":star:",":o:",":wavy_dash:",":part_alternation_mark:",":congratulations:",":secret:",":cross:",":latin_cross:",":keyboard:",":writing_hand:",":eject:",":eject_symbol:",":track_next:",":next_track:",":track_previous:",":previous_track:",":play_pause:",":stopwatch:",":timer:",":timer_clock:",":pause_button:",":double_vertical_bar:",":stop_button:",":record_button:",":umbrella2:",":snowman2:",":comet:",":shamrock:",":skull_crossbones:",":skull_and_crossbones:",":radioactive:",":radioactive_sign:",":biohazard:",":biohazard_sign:",":orthodox_cross:",":star_and_crescent:",":peace:",":peace_symbol:",":yin_yang:",":wheel_of_dharma:",":frowning2:",":white_frowning_face:",":hammer_pick:",":hammer_and_pick:",":crossed_swords:",":scales:",":alembic:",":gear:",":atom:",":atom_symbol:",":fleur-de-lis:",":coffin:",":urn:",":funeral_urn:",":thunder_cloud_rain:",":thunder_cloud_and_rain:",":pick:",":helmet_with_cross:",":helmet_with_white_cross:",":chains:",":shinto_shrine:",":mountain:",":beach_umbrella:",":umbrella_on_ground:",":ferry:",":skier:",":ice_skate:",":basketball_player:",":person_with_ball:",":star_of_david:",":heart_exclamation:",":heavy_heart_exclamation_mark_ornament:",":third_place:",":third_place_medal:",":second_place:",":second_place_medal:",":first_place:",":first_place_medal:",":fencer:",":fencing:",":goal:",":goal_net:",":handball:",":regional_indicator_z:",":water_polo:",":martial_arts_uniform:",":karate_uniform:",":boxing_glove:",":boxing_gloves:",":wrestlers:",":wrestling:",":juggling:",":juggler:",":cartwheel:",":person_doing_cartwheel:",":canoe:",":kayak:",":motor_scooter:",":motorbike:",":scooter:",":shopping_cart:",":shopping_trolley:",":black_joker:",":a:",":b:",":o2:",":octagonal_sign:",":stop_sign:",":ab:",":cl:",":regional_indicator_y:",":cool:",":free:",":id:",":new:",":ng:",":ok:",":sos:",":spoon:",":up:",":vs:",":champagne_glass:",":clinking_glass:",":tumbler_glass:",":whisky:",":koko:",":stuffed_flatbread:",":stuffed_pita:",":u7981:",":u7a7a:",":u5408:",":u6e80:",":u6709:",":shallow_pan_of_food:",":paella:",":u7533:",":u5272:",":salad:",":green_salad:",":u55b6:",":ideograph_advantage:",":accept:",":cyclone:",":french_bread:",":baguette_bread:",":foggy:",":closed_umbrella:",":night_with_stars:",":sunrise_over_mountains:",":sunrise:",":city_dusk:",":carrot:",":city_sunset:",":city_sunrise:",":rainbow:",":potato:",":bridge_at_night:",":ocean:",":volcano:",":milky_way:",":earth_asia:",":new_moon:",":bacon:",":first_quarter_moon:",":waxing_gibbous_moon:",":full_moon:",":crescent_moon:",":first_quarter_moon_with_face:",":star2:",":cucumber:",":stars:",":chestnut:",":avocado:",":seedling:",":palm_tree:",":cactus:",":tulip:",":cherry_blossom:",":rose:",":hibiscus:",":sunflower:",":blossom:",":corn:",":croissant:",":ear_of_rice:",":herb:",":four_leaf_clover:",":maple_leaf:",":fallen_leaf:",":leaves:",":mushroom:",":tomato:",":eggplant:",":grapes:",":melon:",":watermelon:",":tangerine:",":wilted_rose:",":wilted_flower:",":banana:",":pineapple:",":apple:",":green_apple:",":peach:",":cherries:",":strawberry:",":rhino:",":rhinoceros:",":hamburger:",":pizza:",":meat_on_bone:",":lizard:",":poultry_leg:",":rice_cracker:",":rice_ball:",":gorilla:",":rice:",":curry:",":deer:",":ramen:",":spaghetti:",":bread:",":fries:",":butterfly:",":sweet_potato:",":dango:",":fox:",":fox_face:",":oden:",":sushi:",":owl:",":fried_shrimp:",":fish_cake:",":shark:",":icecream:",":bat:",":shaved_ice:",":regional_indicator_x:",":ice_cream:",":duck:",":doughnut:",":eagle:",":cookie:",":black_heart:",":chocolate_bar:",":candy:",":lollipop:",":custard:",":pudding:",":flan:",":honey_pot:",":fingers_crossed:",":hand_with_index_and_middle_finger_crossed:",":cake:",":bento:",":stew:",":handshake:",":shaking_hands:",":cooking:",":fork_and_knife:",":tea:",":sake:",":wine_glass:",":cocktail:",":tropical_drink:",":beer:",":beers:",":ribbon:",":gift:",":birthday:",":jack_o_lantern:",":left_facing_fist:",":left_fist:",":right_facing_fist:",":right_fist:",":christmas_tree:",":santa:",":fireworks:",":raised_back_of_hand:",":back_of_hand:",":sparkler:",":balloon:",":tada:",":confetti_ball:",":tanabata_tree:",":crossed_flags:",":call_me:",":call_me_hand:",":bamboo:",":man_dancing:",":male_dancer:",":dolls:",":selfie:",":flags:",":pregnant_woman:",":expecting_woman:",":wind_chime:",":face_palm:",":facepalm:",":shrug:",":rice_scene:",":school_satchel:",":mortar_board:",":carousel_horse:",":ferris_wheel:",":roller_coaster:",":fishing_pole_and_fish:",":microphone:",":movie_camera:",":cinema:",":headphones:",":mrs_claus:",":mother_christmas:",":art:",":man_in_tuxedo:",":tophat:",":circus_tent:",":prince:",":ticket:",":clapper:",":performing_arts:",":sneezing_face:",":sneeze:",":video_game:",":dart:",":slot_machine:",":8ball:",":game_die:",":bowling:",":flower_playing_cards:",":lying_face:",":liar:",":musical_note:",":notes:",":saxophone:",":drooling_face:",":drool:",":guitar:",":musical_keyboard:",":trumpet:",":rofl:",":rolling_on_the_floor_laughing:",":violin:",":musical_score:",":running_shirt_with_sash:",":nauseated_face:",":sick:",":tennis:",":ski:",":basketball:",":checkered_flag:",":clown:",":clown_face:",":snowboarder:",":runner:",":surfer:",":trophy:",":football:",":swimmer:",":house:",":house_with_garden:",":office:",":post_office:",":hospital:",":bank:",":atm:",":hotel:",":love_hotel:",":convenience_store:",":school:",":department_store:",":cowboy:",":face_with_cowboy_hat:",":factory:",":izakaya_lantern:",":japanese_castle:",":european_castle:",":snail:",":snake:",":racehorse:",":sheep:",":monkey:",":chicken:",":boar:",":elephant:",":octopus:",":shell:",":bug:",":ant:",":bee:",":beetle:",":fish:",":tropical_fish:",":blowfish:",":turtle:",":hatching_chick:",":baby_chick:",":hatched_chick:",":bird:",":penguin:",":koala:",":poodle:",":camel:",":dolphin:",":mouse:",":cow:",":tiger:",":rabbit:",":cat:",":dragon_face:",":whale:",":horse:",":monkey_face:",":dog:",":pig:",":frog:",":hamster:",":wolf:",":bear:",":panda_face:",":pig_nose:",":feet:",":paw_prints:",":eyes:",":ear:",":nose:",":lips:",":tongue:",":point_up_2:",":point_down:",":point_left:",":point_right:",":punch:",":wave:",":ok_hand:",":thumbsup:",":+1:",":thumbup:",":thumbsdown:",":-1:",":thumbdown:",":clap:",":open_hands:",":crown:",":womans_hat:",":eyeglasses:",":necktie:",":shirt:",":jeans:",":dress:",":kimono:",":bikini:",":womans_clothes:",":purse:",":handbag:",":pouch:",":mans_shoe:",":athletic_shoe:",":high_heel:",":sandal:",":boot:",":footprints:",":bust_in_silhouette:",":boy:",":girl:",":man:",":woman:",":family:",":couple:",":cop:",":dancers:",":bride_with_veil:",":person_with_blond_hair:",":man_with_gua_pi_mao:",":man_with_turban:",":older_man:",":older_woman:",":grandma:",":baby:",":construction_worker:",":princess:",":japanese_ogre:",":japanese_goblin:",":ghost:",":angel:",":alien:",":space_invader:",":imp:",":skull:",":skeleton:",":card_index:",":information_desk_person:",":guardsman:",":dancer:",":lipstick:",":nail_care:",":ledger:",":massage:",":notebook:",":haircut:",":notebook_with_decorative_cover:",":barber:",":closed_book:",":syringe:",":book:",":pill:",":green_book:",":kiss:",":blue_book:",":love_letter:",":orange_book:",":ring:",":books:",":gem:",":name_badge:",":couplekiss:",":scroll:",":bouquet:",":pencil:",":couple_with_heart:",":telephone_receiver:",":wedding:",":pager:",":fax:",":heartbeat:",":satellite:",":loudspeaker:",":broken_heart:",":mega:",":outbox_tray:",":two_hearts:",":inbox_tray:",":package:",":sparkling_heart:",":e-mail:",":email:",":incoming_envelope:",":heartpulse:",":envelope_with_arrow:",":mailbox_closed:",":cupid:",":mailbox:",":postbox:",":blue_heart:",":newspaper:",":iphone:",":green_heart:",":calling:",":vibration_mode:",":yellow_heart:",":mobile_phone_off:",":signal_strength:",":purple_heart:",":camera:",":video_camera:",":gift_heart:",":tv:",":radio:",":revolving_hearts:",":vhs:",":arrows_clockwise:",":heart_decoration:",":loud_sound:",":battery:",":diamond_shape_with_a_dot_inside:",":electric_plug:",":mag:",":bulb:",":mag_right:",":lock_with_ink_pen:",":anger:",":closed_lock_with_key:",":key:",":bomb:",":lock:",":unlock:",":zzz:",":bell:",":bookmark:",":boom:",":link:",":radio_button:",":sweat_drops:",":back:",":end:",":droplet:",":on:",":soon:",":dash:",":top:",":underage:",":poop:",":shit:",":hankey:",":poo:",":keycap_ten:",":muscle:",":capital_abcd:",":abcd:",":dizzy:",":1234:",":symbols:",":speech_balloon:",":abc:",":fire:",":flame:",":white_flower:",":flashlight:",":wrench:",":100:",":hammer:",":nut_and_bolt:",":moneybag:",":knife:",":gun:",":currency_exchange:",":crystal_ball:",":heavy_dollar_sign:",":six_pointed_star:",":credit_card:",":beginner:",":trident:",":yen:",":black_square_button:",":white_square_button:",":dollar:",":red_circle:",":blue_circle:",":money_with_wings:",":large_orange_diamond:",":large_blue_diamond:",":chart:",":small_orange_diamond:",":small_blue_diamond:",":seat:",":small_red_triangle:",":small_red_triangle_down:",":computer:",":arrow_up_small:",":briefcase:",":arrow_down_small:",":clock1:",":minidisc:",":clock2:",":floppy_disk:",":clock3:",":cd:",":clock4:",":dvd:",":clock5:",":clock6:",":file_folder:",":clock7:",":clock8:",":open_file_folder:",":clock9:",":clock10:",":page_with_curl:",":clock11:",":clock12:",":page_facing_up:",":mount_fuji:",":tokyo_tower:",":date:",":statue_of_liberty:",":japan:",":calendar:",":moyai:",":grin:",":joy:",":smiley:",":chart_with_upwards_trend:",":smile:",":sweat_smile:",":chart_with_downwards_trend:",":laughing:",":satisfied:",":wink:",":bar_chart:",":blush:",":yum:",":clipboard:",":relieved:",":heart_eyes:",":pushpin:",":smirk:",":unamused:",":round_pushpin:",":sweat:",":pensive:",":paperclip:",":confounded:",":kissing_heart:",":straight_ruler:",":kissing_closed_eyes:",":stuck_out_tongue_winking_eye:",":triangular_ruler:",":stuck_out_tongue_closed_eyes:",":disappointed:",":bookmark_tabs:",":angry:",":rage:",":cry:",":persevere:",":triumph:",":disappointed_relieved:",":fearful:",":weary:",":sleepy:",":tired_face:",":sob:",":cold_sweat:",":scream:",":astonished:",":flushed:",":dizzy_face:",":mask:",":smile_cat:",":joy_cat:",":smiley_cat:",":heart_eyes_cat:",":smirk_cat:",":kissing_cat:",":pouting_cat:",":crying_cat_face:",":scream_cat:",":no_good:",":ok_woman:",":bow:",":see_no_evil:",":hear_no_evil:",":speak_no_evil:",":raising_hand:",":raised_hands:",":person_frowning:",":person_with_pouting_face:",":pray:",":rocket:",":railway_car:",":bullettrain_side:",":bullettrain_front:",":metro:",":station:",":bus:",":busstop:",":ambulance:",":fire_engine:",":police_car:",":taxi:",":red_car:",":blue_car:",":truck:",":ship:",":speedboat:",":traffic_light:",":construction:",":rotating_light:",":triangular_flag_on_post:",":door:",":no_entry_sign:",":smoking:",":no_smoking:",":bike:",":walking:",":mens:",":womens:",":restroom:",":baby_symbol:",":toilet:",":wc:",":bath:",":metal:",":sign_of_the_horns:",":grinning:",":innocent:",":smiling_imp:",":sunglasses:",":neutral_face:",":expressionless:",":confused:",":kissing:",":kissing_smiling_eyes:",":stuck_out_tongue:",":worried:",":frowning:",":anguished:",":grimacing:",":open_mouth:",":hushed:",":sleeping:",":no_mouth:",":helicopter:",":steam_locomotive:",":train2:",":light_rail:",":tram:",":oncoming_bus:",":trolleybus:",":minibus:",":oncoming_police_car:",":oncoming_taxi:",":oncoming_automobile:",":articulated_lorry:",":tractor:",":monorail:",":mountain_railway:",":suspension_railway:",":mountain_cableway:",":aerial_tramway:",":rowboat:",":vertical_traffic_light:",":put_litter_in_its_place:",":do_not_litter:",":potable_water:",":non-potable_water:",":no_bicycles:",":bicyclist:",":mountain_bicyclist:",":no_pedestrians:",":children_crossing:",":shower:",":bathtub:",":passport_control:",":customs:",":baggage_claim:",":left_luggage:",":earth_africa:",":earth_americas:",":globe_with_meridians:",":waxing_crescent_moon:",":waning_gibbous_moon:",":last_quarter_moon:",":waning_crescent_moon:",":new_moon_with_face:",":last_quarter_moon_with_face:",":full_moon_with_face:",":sun_with_face:",":evergreen_tree:",":deciduous_tree:",":lemon:",":pear:",":baby_bottle:",":horse_racing:",":rugby_football:",":european_post_office:",":rat:",":mouse2:",":ox:",":water_buffalo:",":cow2:",":tiger2:",":leopard:",":rabbit2:",":cat2:",":dragon:",":crocodile:",":whale2:",":ram:",":goat:",":rooster:",":dog2:",":pig2:",":dromedary_camel:",":busts_in_silhouette:",":two_men_holding_hands:",":two_women_holding_hands:",":thought_balloon:",":euro:",":pound:",":mailbox_with_mail:",":mailbox_with_no_mail:",":postal_horn:",":no_mobile_phones:",":twisted_rightwards_arrows:",":repeat:",":repeat_one:",":arrows_counterclockwise:",":low_brightness:",":high_brightness:",":mute:",":sound:",":no_bell:",":microscope:",":telescope:",":clock130:",":clock230:",":clock330:",":clock430:",":clock530:",":clock630:",":clock730:",":clock830:",":clock930:",":clock1030:",":clock1130:",":clock1230:",":speaker:",":train:",":medal:",":sports_medal:",":flag_black:",":waving_black_flag:",":camera_with_flash:",":sleeping_accommodation:",":middle_finger:",":reversed_hand_with_middle_finger_extended:",":vulcan:",":raised_hand_with_part_between_middle_and_ring_fingers:",":slight_frown:",":slightly_frowning_face:",":slight_smile:",":slightly_smiling_face:",":airplane_departure:",":airplane_arriving:",":tone1:",":tone2:",":tone3:",":tone4:",":tone5:",":upside_down:",":upside_down_face:",":money_mouth:",":money_mouth_face:",":nerd:",":nerd_face:",":hugging:",":hugging_face:",":rolling_eyes:",":face_with_rolling_eyes:",":thinking:",":thinking_face:",":zipper_mouth:",":zipper_mouth_face:",":thermometer_face:",":face_with_thermometer:",":head_bandage:",":face_with_head_bandage:",":robot:",":robot_face:",":lion_face:",":lion:",":unicorn:",":unicorn_face:",":scorpion:",":crab:",":turkey:",":cheese:",":cheese_wedge:",":hotdog:",":hot_dog:",":taco:",":burrito:",":popcorn:",":champagne:",":bottle_with_popping_cork:",":bow_and_arrow:",":archery:",":amphora:",":place_of_worship:",":worship_symbol:",":kaaba:",":mosque:",":synagogue:",":menorah:",":prayer_beads:",":cricket:",":cricket_bat_ball:",":volleyball:",":field_hockey:",":hockey:",":ping_pong:",":table_tennis:",":badminton:",":drum:",":drum_with_drumsticks:",":shrimp:",":squid:",":egg:",":milk:",":glass_of_milk:",":peanuts:",":shelled_peanut:",":kiwi:",":kiwifruit:",":pancakes:",":regional_indicator_w:",":regional_indicator_v:",":regional_indicator_u:",":regional_indicator_t:",":regional_indicator_s:",":regional_indicator_r:",":regional_indicator_q:",":regional_indicator_p:",":regional_indicator_o:",":regional_indicator_n:",":regional_indicator_m:",":regional_indicator_l:",":regional_indicator_k:",":regional_indicator_j:",":regional_indicator_i:",":regional_indicator_h:",":regional_indicator_g:",":regional_indicator_f:",":regional_indicator_e:",":regional_indicator_d:",":regional_indicator_c:",":regional_indicator_b:",":regional_indicator_a:",":fast_forward:",":rewind:",":arrow_double_up:",":arrow_double_down:",":alarm_clock:",":hourglass_flowing_sand:",":ophiuchus:",":white_check_mark:",":fist:",":raised_hand:",":sparkles:",":x:",":negative_squared_cross_mark:",":question:",":grey_question:",":grey_exclamation:",":heavy_plus_sign:",":heavy_minus_sign:",":heavy_division_sign:",":curly_loop:",":loop:","emoji","tmpShortNames","shortnames","asciiList","<3","</3",":')",":'-)",":D",":-D","=D",":)",":-)","=]","=)",":]","':)","':-)","'=)","':D","':-D","'=D",">:)",">;)",">:-)",">=)",";)",";-)","*-)","*)",";-]",";]",";D",";^)","':(","':-(","'=(",":*",":-*","=*",":^*",">:P","X-P","x-p",">:[",":-(",":(",":-[",":[","=(",">:(",">:-(",":@",":'(",":'-(",";(",";-(",">.<","D:",":$","=$","#-)","#)","%-)","%)","X)","X-)","*\\0/*","\\0/","*\\O/*","\\O/","O:-)","0:-3","0:3","0:-)","0:)","0;^)","O:)","O;-)","O=)","0;-)","O:-3","O:3","B-)","B)","8)","8-)","B-D","8-D","-_-","-__-","-___-",">:\\",">:/",":-/",":-.",":/",":\\","=/","=\\",":L","=L",":P",":-P","=P",":-p",":p","=p",":-Þ",":Þ",":þ",":-þ",":-b",":b","d:",":-O",":O",":-o",":o","O_O",">:O",":-X",":X",":-#",":#","=X","=x",":x",":-x","=#","asciiRegexp","👩‍❤️‍💋‍👩","👩❤💋👩","👨‍❤️‍💋‍👨","👨❤💋👨","👨‍👨‍👦‍👦","👨👨👦👦","👨‍👨‍👧‍👦","👨👨👧👦","👨‍👨‍👧‍👧","👨👨👧👧","👨‍👩‍👦‍👦","👨👩👦👦","👨‍👩‍👧‍👦","👨👩👧👦","👨‍👩‍👧‍👧","👨👩👧👧","👩‍👩‍👦‍👦","👩👩👦👦","👩‍👩‍👧‍👦","👩👩👧👦","👩‍👩‍👧‍👧","👩👩👧👧","👩‍❤️‍👩","👩❤👩","👨‍❤️‍👨","👨❤👨","👨‍👨‍👦","👨👨👦","👨‍👨‍👧","👨👨👧","👨‍👩‍👧","👨👩👧","👩‍👩‍👦","👩👩👦","👩‍👩‍👧","👩👩👧","🏳️‍🌈","🏳🌈","👁‍🗨","👁🗨","#️⃣","#⃣","0️⃣","0⃣","1️⃣","1⃣","2️⃣","2⃣","3️⃣","3⃣","4️⃣","4⃣","5️⃣","5⃣","6️⃣","6⃣","7️⃣","7⃣","8️⃣","8⃣","9️⃣","9⃣","*️⃣","*⃣","🤾🏿","🤾🏾","🤾🏽","🤾🏼","🤾🏻","🤽🏿","🤽🏾","🤽🏽","🤽🏼","🤽🏻","🤼🏿","🤼🏾","🤼🏽","🤼🏼","🤼🏻","🤹🏿","🤹🏾","🤹🏽","🤹🏼","🤹🏻","🤸🏿","🤸🏾","🤸🏽","🤸🏼","🤸🏻","🤷🏿","🤷🏾","🤷🏽","🤷🏼","🤷🏻","🤶🏿","🤶🏾","🤶🏽","🤶🏼","🤶🏻","🤵🏿","🤵🏾","🤵🏽","🤵🏼","🤵🏻","🤴🏿","🤴🏾","🤴🏽","🤴🏼","🤴🏻","🤳🏿","🤳🏾","🤳🏽","🤳🏼","🤳🏻","🤰🏿","🤰🏾","🤰🏽","🤰🏼","🤰🏻","🤦🏿","🤦🏾","🤦🏽","🤦🏼","🤦🏻","🤞🏿","🤞🏾","🤞🏽","🤞🏼","🤞🏻","🤝🏿","🤝🏾","🤝🏽","🤝🏼","🤝🏻","🤜🏿","🤜🏾","🤜🏽","🤜🏼","🤜🏻","🤛🏿","🤛🏾","🤛🏽","🤛🏼","🤛🏻","🤚🏿","🤚🏾","🤚🏽","🤚🏼","🤚🏻","🤙🏿","🤙🏾","🤙🏽","🤙🏼","🤙🏻","🤘🏿","🤘🏾","🤘🏽","🤘🏼","🤘🏻","🛀🏿","🛀🏾","🛀🏽","🛀🏼","🛀🏻","🚶🏿","🚶🏾","🚶🏽","🚶🏼","🚶🏻","🚵🏿","🚵🏾","🚵🏽","🚵🏼","🚵🏻","🚴🏿","🚴🏾","🚴🏽","🚴🏼","🚴🏻","🚣🏿","🚣🏾","🚣🏽","🚣🏼","🚣🏻","🙏🏿","🙏🏾","🙏🏽","🙏🏼","🙏🏻","🙎🏿","🙎🏾","🙎🏽","🙎🏼","🙎🏻","🙍🏿","🙍🏾","🙍🏽","🙍🏼","🙍🏻","🙌🏿","🙌🏾","🙌🏽","🙌🏼","🙌🏻","🙋🏿","🙋🏾","🙋🏽","🙋🏼","🙋🏻","🙇🏿","🙇🏾","🙇🏽","🙇🏼","🙇🏻","🙆🏿","🙆🏾","🙆🏽","🙆🏼","🙆🏻","🙅🏿","🙅🏾","🙅🏽","🙅🏼","🙅🏻","🖖🏿","🖖🏾","🖖🏽","🖖🏼","🖖🏻","🖕🏿","🖕🏾","🖕🏽","🖕🏼","🖕🏻","🖐🏿","🖐🏾","🖐🏽","🖐🏼","🖐🏻","🕺🏿","🕺🏾","🕺🏽","🕺🏼","🕺🏻","🕵🏿","🕵🏾","🕵🏽","🕵🏼","🕵🏻","💪🏿","💪🏾","💪🏽","💪🏼","💪🏻","💇🏿","💇🏾","💇🏽","💇🏼","💇🏻","💆🏿","💆🏾","💆🏽","💆🏼","💆🏻","💅🏿","💅🏾","💅🏽","💅🏼","💅🏻","💃🏿","💃🏾","💃🏽","💃🏼","💃🏻","💂🏿","💂🏾","💂🏽","💂🏼","💂🏻","💁🏿","💁🏾","💁🏽","💁🏼","💁🏻","👼🏿","👼🏾","👼🏽","👼🏼","👼🏻","👸🏿","👸🏾","👸🏽","👸🏼","👸🏻","👷🏿","👷🏾","👷🏽","👷🏼","👷🏻","👶🏿","👶🏾","👶🏽","👶🏼","👶🏻","👵🏿","👵🏾","👵🏽","👵🏼","👵🏻","👴🏿","👴🏾","👴🏽","👴🏼","👴🏻","👳🏿","👳🏾","👳🏽","👳🏼","👳🏻","👲🏿","👲🏾","👲🏽","👲🏼","👲🏻","👱🏿","👱🏾","👱🏽","👱🏼","👱🏻","👰🏿","👰🏾","👰🏽","👰🏼","👰🏻","👮🏿","👮🏾","👮🏽","👮🏼","👮🏻","👩🏿","👩🏾","👩🏽","👩🏼","👩🏻","👨🏿","👨🏾","👨🏽","👨🏼","👨🏻","👧🏿","👧🏾","👧🏽","👧🏼","👧🏻","👦🏿","👦🏾","👦🏽","👦🏼","👦🏻","👐🏿","👐🏾","👐🏽","👐🏼","👐🏻","👏🏿","👏🏾","👏🏽","👏🏼","👏🏻","👎🏿","👎🏾","👎🏽","👎🏼","👎🏻","👍🏿","👍🏾","👍🏽","👍🏼","👍🏻","👌🏿","👌🏾","👌🏽","👌🏼","👌🏻","👋🏿","👋🏾","👋🏽","👋🏼","👋🏻","👊🏿","👊🏾","👊🏽","👊🏼","👊🏻","👉🏿","👉🏾","👉🏽","👉🏼","👉🏻","👈🏿","👈🏾","👈🏽","👈🏼","👈🏻","👇🏿","👇🏾","👇🏽","👇🏼","👇🏻","👆🏿","👆🏾","👆🏽","👆🏼","👆🏻","👃🏿","👃🏾","👃🏽","👃🏼","👃🏻","👂🏿","👂🏾","👂🏽","👂🏼","👂🏻","🏋🏿","🏋🏾","🏋🏽","🏋🏼","🏋🏻","🏊🏿","🏊🏾","🏊🏽","🏊🏼","🏊🏻","🏇🏿","🏇🏾","🏇🏽","🏇🏼","🏇🏻","🏄🏿","🏄🏾","🏄🏽","🏄🏼","🏄🏻","🏃🏿","🏃🏾","🏃🏽","🏃🏼","🏃🏻","🎅🏿","🎅🏾","🎅🏽","🎅🏼","🎅🏻","🇿🇼","🇿🇲","🇿🇦","🇾🇹","🇾🇪","🇽🇰","🇼🇸","🇼🇫","🇻🇺","🇻🇳","🇻🇮","🇻🇬","🇻🇪","🇻🇨","🇻🇦","🇺🇿","🇺🇾","🇺🇸","🇺🇲","🇺🇬","🇺🇦","🇹🇿","🇹🇼","🇹🇻","🇹🇹","🇹🇷","🇹🇴","🇹🇳","🇹🇲","🇹🇱","🇹🇰","🇹🇯","🇹🇭","🇹🇬","🇹🇫","🇹🇩","🇹🇨","🇹🇦","🇸🇿","🇸🇾","🇸🇽","🇸🇻","🇸🇹","🇸🇸","🇸🇷","🇸🇴","🇸🇳","🇸🇲","🇸🇱","🇸🇰","🇸🇯","🇸🇮","🇸🇭","🇸🇬","🇸🇪","🇸🇩","🇸🇨","🇸🇧","🇸🇦","🇷🇼","🇷🇺","🇷🇸","🇷🇴","🇷🇪","🇶🇦","🇵🇾","🇵🇼","🇵🇹","🇵🇸","🇵🇷","🇵🇳","🇵🇲","🇵🇱","🇵🇰","🇵🇭","🇵🇬","🇵🇫","🇵🇪","🇵🇦","🇴🇲","🇳🇿","🇳🇺","🇳🇷","🇳🇵","🇳🇴","🇳🇱","🇳🇮","🇳🇬","🇳🇫","🇳🇪","🇳🇨","🇳🇦","🇲🇿","🇲🇾","🇲🇽","🇲🇼","🇲🇻","🇲🇺","🇲🇹","🇲🇸","🇲🇷","🇲🇶","🇲🇵","🇲🇴","🇲🇳","🇲🇲","🇲🇱","🇲🇰","🇲🇭","🇲🇬","🇲🇫","🇲🇪","🇲🇩","🇲🇨","🇲🇦","🇱🇾","🇱🇻","🇱🇺","🇱🇹","🇱🇸","🇱🇷","🇱🇰","🇱🇮","🇱🇨","🇱🇧","🇱🇦","🇰🇿","🇰🇾","🇰🇼","🇰🇷","🇰🇵","🇰🇳","🇰🇲","🇰🇮","🇰🇭","🇰🇬","🇰🇪","🇯🇵","🇯🇴","🇯🇲","🇯🇪","🇮🇹","🇮🇸","🇮🇷","🇮🇶","🇮🇴","🇮🇳","🇮🇲","🇮🇱","🇮🇪","🇮🇩","🇮🇨","🇭🇺","🇭🇹","🇭🇷","🇭🇳","🇭🇲","🇭🇰","🇬🇾","🇬🇼","🇬🇺","🇬🇹","🇬🇸","🇬🇷","🇬🇶","🇬🇵","🇬🇳","🇬🇲","🇬🇱","🇬🇮","🇬🇭","🇬🇬","🇬🇫","🇬🇪","🇬🇩","🇬🇧","🇬🇦","🇫🇷","🇫🇴","🇫🇲","🇫🇰","🇫🇯","🇫🇮","🇪🇺","🇪🇹","🇪🇸","🇪🇷","🇪🇭","🇪🇬","🇪🇪","🇪🇨","🇪🇦","🇩🇿","🇩🇴","🇩🇲","🇩🇰","🇩🇯","🇩🇬","🇩🇪","🇨🇿","🇨🇾","🇨🇽","🇨🇼","🇨🇻","🇨🇺","🇨🇷","🇨🇵","🇨🇴","🇨🇳","🇨🇲","🇨🇱","🇨🇰","🇨🇮","🇨🇭","🇨🇬","🇨🇫","🇨🇩","🇨🇨","🇨🇦","🇧🇿","🇧🇾","🇧🇼","🇧🇻","🇧🇹","🇧🇸","🇧🇷","🇧🇶","🇧🇴","🇧🇳","🇧🇲","🇧🇱","🇧🇯","🇧🇮","🇧🇭","🇧🇬","🇧🇫","🇧🇪","🇧🇩","🇧🇧","🇧🇦","🇦🇿","🇦🇽","🇦🇼","🇦🇺","🇦🇹","🇦🇸","🇦🇷","🇦🇶","🇦🇴","🇦🇲","🇦🇱","🇦🇮","🇦🇬","🇦🇫","🇦🇪","🇦🇩","🇦🇨","🀄️","🀄","🅿️","🅿","🈂️","🈂","🈚️","🈚","🈯️","🈯","🈷️","🈷","🎞️","🎞","🎟️","🎟","🏋️","🏋","🏌️","🏌","🏍️","🏍","🏎️","🏎","🎖️","🎖","🎗️","🎗","🌶️","🌶","🌧️","🌧","🌨️","🌨","🌩️","🌩","🌪️","🌪","🌫️","🌫","🌬️","🌬","🐿️","🐿","🕷️","🕷","🕸️","🕸","🌡️","🌡","🎙️","🎙","🎚️","🎚","🎛️","🎛","🏳️","🏳","🏵️","🏵","🏷️","🏷","📽️","📽","🕉️","🕉","🕊️","🕊","🕯️","🕯","🕰️","🕰","🕳️","🕳","🕶️","🕶","🕹️","🕹","🖇️","🖇","🖊️","🖊","🖋️","🖋","🖌️","🖌","🖍️","🖍","🖥️","🖥","🖨️","🖨","🖲️","🖲","🖼️","🖼","🗂️","🗂","🗃️","🗃","🗄️","🗄","🗑️","🗑","🗒️","🗒","🗓️","🗓","🗜️","🗜","🗝️","🗝","🗞️","🗞","🗡️","🗡","🗣️","🗣","🗨️","🗨","🗯️","🗯","🗳️","🗳","🗺️","🗺","🛠️","🛠","🛡️","🛡","🛢️","🛢","🛰️","🛰","🍽️","🍽","👁️","👁","🕴️","🕴","🕵️","🕵","🖐️","🖐","🏔️","🏔","🏕️","🏕","🏖️","🏖","🏗️","🏗","🏘️","🏘","🏙️","🏙","🏚️","🏚","🏛️","🏛","🏜️","🏜","🏝️","🏝","🏞️","🏞","🏟️","🏟","🛋️","🛋","🛍️","🛍","🛎️","🛎","🛏️","🛏","🛣️","🛣","🛤️","🛤","🛥️","🛥","🛩️","🛩","🛳️","🛳","🌤️","🌤","🌥️","🌥","🌦️","🌦","🖱️","🖱","☝🏻","☝🏼","☝🏽","☝🏾","☝🏿","✌🏻","✌🏼","✌🏽","✌🏾","✌🏿","✊🏻","✊🏼","✊🏽","✊🏾","✊🏿","✋🏻","✋🏼","✋🏽","✋🏾","✋🏿","✍🏻","✍🏼","✍🏽","✍🏾","✍🏿","⛹🏻","⛹🏼","⛹🏽","⛹🏾","⛹🏿","©️","©","®️","®","‼️","‼","⁉️","⁉","™️","™","ℹ️","ℹ","↔️","↔","↕️","↕","↖️","↖","↗️","↗","↘️","↘","↙️","↙","↩️","↩","↪️","↪","⌚️","⌚","⌛️","⌛","Ⓜ️","Ⓜ","▪️","▪","▫️","▫","▶️","▶","◀️","◀","◻️","◻","◼️","◼","◽️","◽","◾️","◾","☀️","☀","☁️","☁","☎️","☎","☑️","☑","☔️","☔","☕️","☕","☝️","☝","☺️","☺","♈️","♈","♉️","♉","♊️","♊","♋️","♋","♌️","♌","♍️","♍","♎️","♎","♏️","♏","♐️","♐","♑️","♑","♒️","♒","♓️","♓","♠️","♠","♣️","♣","♥️","♥","♦️","♦","♨️","♨","♻️","♻","♿️","♿","⚓️","⚓","⚠️","⚠","⚡️","⚡","⚪️","⚪","⚫️","⚫","⚽️","⚽","⚾️","⚾","⛄️","⛄","⛅️","⛅","⛔️","⛔","⛪️","⛪","⛲️","⛲","⛳️","⛳","⛵️","⛵","⛺️","⛺","⛽️","⛽","✂️","✂","✈️","✈","✉️","✉","✌️","✌","✏️","✏","✒️","✒","✔️","✔","✖️","✖","✳️","✳","✴️","✴","❄️","❄","❇️","❇","❗️","❗","❤️","❤","➡️","➡","⤴️","⤴","⤵️","⤵","⬅️","⬅","⬆️","⬆","⬇️","⬇","⬛️","⬛","⬜️","⬜","⭐️","⭐","⭕️","⭕","〰️","〰","〽️","〽","㊗️","㊗","㊙️","㊙","✝️","✝","⌨️","⌨","✍️","✍","⏏️","⏏","⏭️","⏭","⏮️","⏮","⏯️","⏯","⏱️","⏱","⏲️","⏲","⏸️","⏸","⏹️","⏹","⏺️","⏺","☂️","☂","☃️","☃","☄️","☄","☘️","☘","☠️","☠","☢️","☢","☣️","☣","☦️","☦","☪️","☪","☮️","☮","☯️","☯","☸️","☸","☹️","☹","⚒️","⚒","⚔️","⚔","⚖️","⚖","⚗️","⚗","⚙️","⚙","⚛️","⚛","⚜️","⚜","⚰️","⚰","⚱️","⚱","⛈️","⛈","⛏️","⛏","⛑️","⛑","⛓️","⛓","⛩️","⛩","⛰️","⛰","⛱️","⛱","⛴️","⛴","⛷️","⛷","⛸️","⛸","⛹️","⛹","✡️","✡","❣️","❣","🥉","🥈","🥇","🤺","🥅","🤾","🇿","🤽","🥋","🥊","🤼","🤹","🤸","🛶","🛵","🛴","🛒","🃏","🅰","🅱","🅾","🛑","🆎","🆑","🇾","🆒","🆓","🆔","🆕","🆖","🆗","🆘","🥄","🆙","🆚","🥂","🥃","🈁","🥙","🈲","🈳","🈴","🈵","🈶","🥘","🈸","🈹","🥗","🈺","🉐","🉑","🌀","🥖","🌁","🌂","🌃","🌄","🌅","🌆","🥕","🌇","🌈","🥔","🌉","🌊","🌋","🌌","🌏","🌑","🥓","🌓","🌔","🌕","🌙","🌛","🌟","🥒","🌠","🌰","🥑","🌱","🌴","🌵","🌷","🌸","🌹","🌺","🌻","🌼","🌽","🥐","🌾","🌿","🍀","🍁","🍂","🍃","🍄","🍅","🍆","🍇","🍈","🍉","🍊","🥀","🍌","🍍","🍎","🍏","🍑","🍒","🍓","🦏","🍔","🍕","🍖","🦎","🍗","🍘","🍙","🦍","🍚","🍛","🦌","🍜","🍝","🍞","🍟","🦋","🍠","🍡","🦊","🍢","🍣","🦉","🍤","🍥","🦈","🍦","🦇","🍧","🇽","🍨","🦆","🍩","🦅","🍪","🖤","🍫","🍬","🍭","🍮","🍯","🤞","🍰","🍱","🍲","🤝","🍳","🍴","🍵","🍶","🍷","🍸","🍹","🍺","🍻","🎀","🎁","🎂","🎃","🤛","🤜","🎄","🎅","🎆","🤚","🎇","🎈","🎉","🎊","🎋","🎌","🤙","🎍","🕺","🎎","🤳","🎏","🤰","🎐","🤦","🤷","🎑","🎒","🎓","🎠","🎡","🎢","🎣","🎤","🎥","🎦","🎧","🤶","🎨","🤵","🎩","🎪","🤴","🎫","🎬","🎭","🤧","🎮","🎯","🎰","🎱","🎲","🎳","🎴","🤥","🎵","🎶","🎷","🤤","🎸","🎹","🎺","🤣","🎻","🎼","🎽","🤢","🎾","🎿","🏀","🏁","🤡","🏂","🏃","🏄","🏆","🏈","🏊","🏠","🏡","🏢","🏣","🏥","🏦","🏧","🏨","🏩","🏪","🏫","🏬","🤠","🏭","🏮","🏯","🏰","🐌","🐍","🐎","🐑","🐒","🐔","🐗","🐘","🐙","🐚","🐛","🐜","🐝","🐞","🐟","🐠","🐡","🐢","🐣","🐤","🐥","🐦","🐧","🐨","🐩","🐫","🐬","🐭","🐮","🐯","🐰","🐱","🐲","🐳","🐴","🐵","🐶","🐷","🐸","🐹","🐺","🐻","🐼","🐽","🐾","👀","👂","👃","👄","👅","👆","👇","👈","👉","👊","👋","👌","👍","👎","👏","👐","👑","👒","👓","👔","👕","👖","👗","👘","👙","👚","👛","👜","👝","👞","👟","👠","👡","👢","👣","👤","👦","👧","👨","👩","👪","👫","👮","👯","👰","👱","👲","👳","👴","👵","👶","👷","👸","👹","👺","👻","👼","👽","👾","👿","💀","📇","💁","💂","💃","💄","💅","📒","💆","📓","💇","📔","💈","📕","💉","📖","💊","📗","💋","📘","💌","📙","💍","📚","💎","📛","💏","📜","💐","📝","💑","📞","💒","📟","📠","💓","📡","📢","💔","📣","📤","💕","📥","📦","💖","📧","📨","💗","📩","📪","💘","📫","📮","💙","📰","📱","💚","📲","📳","💛","📴","📶","💜","📷","📹","💝","📺","📻","💞","📼","🔃","💟","🔊","🔋","💠","🔌","🔍","💡","🔎","🔏","💢","🔐","🔑","💣","🔒","🔓","💤","🔔","🔖","💥","🔗","🔘","💦","🔙","🔚","💧","🔛","🔜","💨","🔝","🔞","💩","🔟","💪","🔠","🔡","💫","🔢","🔣","💬","🔤","🔥","💮","🔦","🔧","💯","🔨","🔩","💰","🔪","🔫","💱","🔮","💲","🔯","💳","🔰","🔱","💴","🔲","🔳","💵","🔴","🔵","💸","🔶","🔷","💹","🔸","🔹","💺","🔺","🔻","💻","🔼","💼","🔽","🕐","💽","🕑","💾","🕒","💿","🕓","📀","🕔","🕕","📁","🕖","🕗","📂","🕘","🕙","📃","🕚","🕛","📄","🗻","🗼","📅","🗽","🗾","📆","🗿","😁","😂","😃","📈","😄","😅","📉","😆","😉","📊","😊","😋","📋","😌","😍","📌","😏","😒","📍","😓","😔","📎","😖","😘","📏","😚","😜","📐","😝","😞","📑","😠","😡","😢","😣","😤","😥","😨","😩","😪","😫","😭","😰","😱","😲","😳","😵","😷","😸","😹","😺","😻","😼","😽","😾","😿","🙀","🙅","🙆","🙇","🙈","🙉","🙊","🙋","🙌","🙍","🙎","🙏","🚀","🚃","🚄","🚅","🚇","🚉","🚌","🚏","🚑","🚒","🚓","🚕","🚗","🚙","🚚","🚢","🚤","🚥","🚧","🚨","🚩","🚪","🚫","🚬","🚭","🚲","🚶","🚹","🚺","🚻","🚼","🚽","🚾","🛀","🤘","😀","😇","😈","😎","😐","😑","😕","😗","😙","😛","😟","😦","😧","😬","😮","😯","😴","😶","🚁","🚂","🚆","🚈","🚊","🚍","🚎","🚐","🚔","🚖","🚘","🚛","🚜","🚝","🚞","🚟","🚠","🚡","🚣","🚦","🚮","🚯","🚰","🚱","🚳","🚴","🚵","🚷","🚸","🚿","🛁","🛂","🛃","🛄","🛅","🌍","🌎","🌐","🌒","🌖","🌗","🌘","🌚","🌜","🌝","🌞","🌲","🌳","🍋","🍐","🍼","🏇","🏉","🏤","🐀","🐁","🐂","🐃","🐄","🐅","🐆","🐇","🐈","🐉","🐊","🐋","🐏","🐐","🐓","🐕","🐖","🐪","👥","👬","👭","💭","💶","💷","📬","📭","📯","📵","🔀","🔁","🔂","🔄","🔅","🔆","🔇","🔉","🔕","🔬","🔭","🕜","🕝","🕞","🕟","🕠","🕡","🕢","🕣","🕤","🕥","🕦","🕧","🔈","🚋","🏅","🏴","📸","🛌","🖕","🖖","🙁","🙂","🛫","🛬","🏻","🏼","🏽","🏾","🏿","🙃","🤑","🤓","🤗","🙄","🤔","🤐","🤒","🤕","🤖","🦁","🦄","🦂","🦀","🦃","🧀","🌭","🌮","🌯","🍿","🍾","🏹","🏺","🛐","🕋","🕌","🕍","🕎","📿","🏏","🏐","🏑","🏒","🏓","🏸","🥁","🦐","🦑","🥚","🥛","🥜","🥝","🥞","🇼","🇻","🇺","🇹","🇸","🇷","🇶","🇵","🇴","🇳","🇲","🇱","🇰","🇯","🇮","🇭","🇬","🇫","🇪","🇩","🇨","🇧","🇦","⏩","⏪","⏫","⏬","⏰","⏳","⛎","✅","✊","✋","✨","❌","❎","❓","❔","❕","➕","➖","➗","➰","➿","imagePathSVGSprites","imageTitleTag","sprites","ascii","regShortNames","regAscii","toImage","shortnameToImage","unifyUnicode","toShort","shortnameToUnicode","shortnameToAscii","unicodeToAscii","objectFlip","shortname","entire","m1","m2","m3","unescapeHTML","escapeHTML","getUnicodeReplacementRegEx","replacementList","mapUnicodeCharactersToShort","replaceAll","&","<",">","\"","'","unescaped","&","&","&","<","<","<",">",">",">",""",""",""","'","'","'","mapEmojioneList","addToMapStorage","memMapShortToUnicode","memoizeReplacement","unicodeReplacementRegEx","memMapShortToUnicodeCharacters","unicodeList","emojiCharacter","tmp_obj","escapedFind","emojione","_UserAddress","_GroupStore2","MultiInviter","targetId","canceled","addrs","busy","completionStates","deferred","_addrs","addr","errorText","_inviteMore","_canceled","ignoreProfile","addrType","inviteByEmail","getProfileInfo","_inviteToRoom","fatal","_doInvite","nextIndex","unknownProfileErrors","unknownProfileUsers","inviteUnknowns","AskInviteAnywayDialog","onInviteAnyways","onGiveUp","_addr","noImpact","noMovement","isBeyondStartPosition","getDroppableDimension","scrollDroppable","getDraggableDimension","noSpacing","_axis","_spacing","addSpacing","_ref$margin","margin","_ref$windowScroll","windowScroll","withScroll","placeholder","withoutMargin","subject","newScroll","scrollDiff","frameScroll","initial","scrollDisplacement","displacedSubject","displacement","clipped","frameClient","_ref2$frameScroll","_ref2$direction","_ref2$margin","_ref2$padding","padding","_ref2$windowScroll","_ref2$isEnabled","withWindowScroll","vertical","horizontal","withMarginAndPadding","nativeCreate","getNative","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","eq","isKeyable","__data__","_shouldHideEvent2","eventTriggersUnreadCount","haveTileForEvent","doesRoomHaveUnreadMessages","readUpToId","getEventReadUpTo","symbol","iec","jedec","fullform","filesize","full","fullforms","unix","spacer","standard","num","suffixes","exponent","partial","opt","EMAIL_ADDRESS_REGEX","looksValid","email","_filesize2","_DecryptFile","_Tinter2","tintedDownloadImageURL","nextMountId","mounts","registerTintable","DOMParser","parseFromString","calcSvgFixups","applySvgFixups","svgString","XMLSerializer","serializeToString","btoa","cssText","decryptedBlob","appConfig","presentableTextForFile","linkText","_getContentUrl","componentDidMount","refs","downloadImage","imgSrc","imgStyle","dummyLink","contentUrl","decrypting","decryptFile","blob","renderer_url","cross_origin_renderer_url","onLoad","download","createObjectURL","createTextNode","textContent","fetch","arrayBuffer","responseData","_browserEncryptAttachment2","decryptAttachment","mimetype","ALLOWED_BLOB_MIMETYPES","Blob","image/jpeg","image/gif","image/png","video/mp4","video/webm","video/ogg","audio/mp4","audio/webm","audio/aac","audio/mpeg","audio/ogg","audio/wave","audio/wav","audio/x-wav","audio/x-pn-wav","audio/flac","audio/x-flac","reIsUint","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","Ctor","ctorString","castPath","toKey","encodeActions","decodeActions","slate__WEBPACK_IMPORTED_MODULE_0__","serializeNode","_options$delimiter2","delimiter","isBlockList","deserialize","_options$defaultBlock","defaultBlock","_options$defaultMarks","defaultMarks","_options$delimiter","_options$toJSON","MODIFIERS","control","ALIASES","break","cmd","ctl","ctrl","del","down","ins","mod","option","spacebar","windows","CODES","backspace","tab","capslock"," ","pageup","pagedown","home","arrowleft","arrowup","arrowright","arrowdown","numlock","scrolllock",";","=",",","-",".","/","`","[","\\","]","isHotkey","hotkey","parseHotkey","compareHotkey","byKey","optional","toKeyName","modifier","which","toKeyCode","expected","isCodeHotkey","isKeyHotkey","ConsoleLogger","logs","consoleObj","consoleFunctionsToLevels","fnName","originalFn","keepLogs","logsToFlush","IndexedDBLogStore","flushPromise","flushAgainPromise","flush","logObjStore","createObjectStore","createIndex","unique","_generateLogEntry","_generateLastModifiedTime","objStore","objectStore","oncomplete","errorCode","fetchLogs","fetchLogIds","deleteLogs","allLogIds","removeLogIds","openKeyCursor","IDBKeyRange","cursor","primaryKey","continue","selectQuery","openCursor","keyRange","resultMapper","mx_rage_initPromise","mx_rage_logger","monkeyPatch","mx_rage_store","cleanup","consume","getLogsForReport","buggy","sign","$expm1","expm1","TO_STRING","searchString","re","$defineProperty","endPos","addToUnscopables","_k","Arguments","cel","setTask","clearTask","Dispatch","counter","macrotask","Observer","WebKitMutationObserver","characterData","$$resolve","$$reject","PROTOTYPE","WRONG_INDEX","BaseBuffer","LN2","$BUFFER","$LENGTH","$OFFSET","packIEEE754","mLen","nBytes","eLen","eMax","eBias","rt","unpackIEEE754","nBits","unpackI32","packI8","packI16","packI32","packF64","packF32","isLittleEndian","intIndex","_b","pack","conversion","ArrayBufferProto","$setInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","createProperty","$Object","$fails","wksDefine","enumKeys","_create","gOPNExt","$JSON","_stringify","HIDDEN","TO_PRIMITIVE","isEnum","SymbolRegistry","AllSymbols","OPSymbols","USE_NATIVE","QObject","findChild","setSymbolDesc","protoDesc","sym","$defineProperties","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","es6Symbols","wellKnownSymbols","for","keyFor","useSetter","useSimple","replacer","$replacer","gOPS","getSymbols","eventPluginOrder","namesToPlugins","recomputePluginOrdering","pluginName","pluginModule","pluginIndex","publishedEvents","eventTypes","eventName","publishEventForPlugin","eventNameDispatchConfigs","phaseName","publishRegistrationName","possibleRegistrationNames","injectedEventPluginOrder","injectedNamesToPlugins","isOrderingDirty","getPluginModuleForEvent","_resetEventPlugins","ComponentTree","TreeTraversal","executeDispatch","invokeGuardedCallbackWithCatch","invokeGuardedCallback","isEndish","isMoveish","isStartish","executeDirectDispatch","dispatchListener","dispatchInstance","dispatchListeners","dispatchInstances","executeDispatchesInOrderStopAtTrue","executeDispatchesInOrderStopAtTrueImpl","hasDispatches","isAncestor","getLowestCommonAncestor","argFrom","argTo","injectComponentTree","Injected","injectTreeTraversal","caughtError","correspondingUseElement","useHasFeature","implementation","hasFeature","eventNameSuffix","capture","modifierKeyToProp","Alt","Control","Meta","Shift","modifierStateGetter","keyArg","keyProp","Danger","getNodeAfter","insertChildAt","insertLazyTreeChildAt","moveChild","openingComment","closingComment","nextNode","moveDelimitedText","removeDelimitedText","DOMChildrenOperations","dangerouslyReplaceNodeWithMarkup","replaceDelimitedText","stringText","nodeAfterComment","processUpdates","afterNode","mathml","MSApp","execUnsafeLocalFunction","arg0","arg1","ReactPropTypesSecret","propTypesFactory","hasReadOnlyValue","checkbox","image","radio","submit","_assertSingleLink","inputProps","checkedLink","valueLink","_assertValueLink","_assertCheckedLink","readOnly","loggedTypeFailures","getDeclarationErrorAddendum","LinkedValueUtils","checkPropTypes","getChecked","executeOnChange","requestChange","injected","ReactComponentEnvironment","replaceNodeWithMarkup","processChildrenUpdates","injectEnvironment","environment","ReactCompositeComponent","ReactEmptyComponent","ReactHostComponent","ReactCompositeComponentWrapper","construct","instantiateReactComponent","shouldHaveDebugID","createInternalComponent","isInternalComponentType","getNativeNode","createInstanceForText","_mountIndex","_mountImage","_instantiateReactComponent","prevEmpty","nextEmpty","prevType","nextType","KeyEscapeUtils","escaperLookup",":","unescape","unescaperLookup","=0","=2","getInternalInstanceReadyForUpdate","publicInstance","callerName","ReactUpdateQueue","isMounted","enqueueCallback","validateCallback","enqueueCallbackInternal","enqueueForceUpdate","_pendingForceUpdate","enqueueReplaceState","completeState","_pendingStateQueue","_pendingReplaceState","enqueueSetState","partialState","enqueueElementInternal","nextContext","_pendingElement","formatUnexpectedArgument","validateDOMNesting","charCode","checkStatus","ok","parseJson","encodeQueryParams","RtsClient","_url","referrer","clientSecret","client_secret","teamToken","team_token","REPLACE_RE","replace_fn","_syncAccumulator2","txnAsPromise","reqAsEventPromise","reqAsPromise","reqAsCursorPromise","LocalIndexedDBStoreBackend","indexedDBInterface","_disconnected","_syncAccumulator","_isNewlyCreated","createDatabase","upgradeSchemaV2","upgradeSchemaV3","onversionchange","isNewlyCreated","_loadAccountData","_loadSyncData","syncData","accumulate","getOutOfBandMembers","roomIndex","membershipEvents","oobWritten","oob_written","setOutOfBandMembers","tx","markerObject","clearOutOfBandMembers","readTx","roomRange","minStateKeyProm","maxStateKeyProm","_ref5","_ref6","minStateKey","maxStateKey","writeTx","writeStore","membersKeyRange","bound","clearDatabase","getSavedSync","getJSON","getNextBatchToken","setSyncData","syncToDatabase","userTuples","_persistUserPresenceEvents","_persistAccountData","_persistSyncData","try","clobber","_this7","tuples","_this8","tuple","getUserPresenceEvents","_this9","_this10","_this11","getClientOptions","_this12","storeClientOptions","_ref7","_construct2","InvalidStoreError","TOGGLED_LAZY_LOADING","MemoryCryptoStore","_outgoingRoomKeyRequests","_account","_sessions","_inboundGroupSessions","_deviceData","_rooms","_sessionsNeedingBackup","_getOutgoingRoomKeyRequest","recipients","_iteratorNormalCompletion7","_didIteratorError7","_iteratorError7","_step7","_iterator7","deviceSessions","_iteratorNormalCompletion8","_didIteratorError8","_iteratorError8","_step8","_iterator8","_iteratorNormalCompletion9","_didIteratorError9","_iteratorError9","_step9","_iterator9","senderKey","session","_iteratorNormalCompletion10","_didIteratorError10","_iteratorError10","_step10","_iterator10","sessionKey","_iteratorNormalCompletion11","_didIteratorError11","_iteratorError11","_step11","_iterator11","UnknownDeviceError","DecryptionError","DecryptionAlgorithm","EncryptionAlgorithm","DECRYPTION_CLASSES","ENCRYPTION_CLASSES","registerAlgorithm","encryptor","decryptor","_deviceId","_crypto","_olmDevice","_baseApis","oldMembership","keyRequest","details","_detailedStringForDecryptionError","_Error2","DeviceInfo","algorithms","verified","DeviceVerification","UNVERIFIED","known","fromStorage","toStorage","getDisplayName","device_display_name","isBlocked","BLOCKED","isVerified","VERIFIED","isUnverified","RoomMember","typing","powerLevelNorm","_isOutOfBand","markOutOfBand","isOutOfBand","setMembershipEvent","roomState","selfUserId","disambiguate","userIds","getUserIdsWithDisplayName","calculateDisplayName","setPowerLevelEvent","powerLevelEvent","evContent","maxLevel","lvl","oldPowerLevel","oldPowerLevelNorm","setTypingEvent","oldTyping","typingList","user_ids","memberEvent","memberContent","inviteSender","is_direct","allowDefault","rawUrl","getMxcAvatarUrl","httpUrl","FilterComponent","setProp","keyNesting","nestedKeys","currentObj","Filter","filterId","definition","LAZY_LOADING_MESSAGES_FILTER","lazy_load_members","LAZY_LOADING_SYNC_FILTER","getFilterId","getDefinition","setDefinition","room_filter_json","room_filter_fields","not_rooms","_include_leave","include_leave","_room_filter","_room_timeline_filter","getRoomTimelineFilterComponent","filterRoomTimeline","setTimelineLimit","setIncludeLeaveRooms","includeLeave","fromJson","jsonObj","EventTimelineSet","_timelineSupport","_liveTimeline","_timelines","_eventIdToTimeline","setFilter","eventIdToTimeline","replaceEventId","oldEventId","newEventId","existingTimeline","resetLiveTimeline","backPaginationToken","forwardPaginationToken","resetAllTimelines","oldTimeline","newTimeline","getTimelineForEvent","addTimeline","addEventsToTimeline","inverseDirection","didUpdate","lastEventWasNew","addEventToTimeline","addLiveEvent","duplicateStrategy","tlEvents","encryptedType","liveEvent","localEvent","compareEventOrdering","eventId1","eventId2","timeline1","timeline2","evId","_CallHandler2","Roles","m.room.message","senderDisplayName","m.call.invite","senderName","supported","m.call.answer","m.call.hangup","eventContent","stateHandlers","oldAliases","newAliases","addedAliases","removedAliases","addedAddresses","removedAddresses","m.room.canonical_alias","oldAlias","alias","m.room.name","m.room.topic","targetName","prevContent","threePidContent","third_party_invite","display_name","oldDisplayName","m.room.third_party_invite","targetDisplayName","m.room.history_visibility","history_visibility","m.room.encryption","userDefault","fromPowerLevel","textualPowerLevel","toPowerLevel","powerLevelDiffText","m.room.pinned_events","m.room.server_acl","changes","allow_ip_literals","bannedServers","srv","unbannedServers","allowedServers","unallowedServers","allowban","im.vector.modular.widgets","_event$getPrevContent","prevName","prevUrl","getUnknownDevicesForRoom","roomMembers","unknownDevices","getEncryptionTargetMembers","downloadKeys","markAllDevicesKnown","setDeviceKnown","showUnknownDeviceDialogForMessages","UnknownDeviceDialog","sendAnywayLabel","sendLabel","onSend","_Resend2","focusComposer","sendAnyway","relativeLocation","configJson","getConfig","configJsonFilename","XML","HTML","decodeStrict","HTMLStrict","encodeXML","encodeHTML4","encodeHTML5","encodeHTML","decodeXML","decodeXMLStrict","decodeHTML4","decodeHTML5","decodeHTML4Strict","decodeHTML5Strict","decodeHTMLStrict","Declaration","_Node","_cssSyntaxError2","_stringifier2","_warnOnce2","raws","positionBy","column","stringifier","overrides","cloned","cloneBefore","cloneAfter","insertAfter","replaceWith","_isArray","newParent","cleanRaws","moveBefore","otherNode","moveAfter","fixed","defaultType","keepBetween","between","positionInside","word","normalizeArray","allowAboveRoot","splitPathRe","splitPath","xs","resolvedPath","resolvedAbsolute","trailingSlash","fromParts","toParts","samePartsLength","outputParts","dirname","basename","extname","builder","_input2","_parser2","_declaration2","_comment2","lastEach","walk","walkDecls","walkRules","walkAtRules","walkComments","_isArray2","_i2","_isArray3","_i3","_isArray4","_i4","_isArray5","_i5","exist","_isArray6","_i6","_isArray7","_i7","removeAll","_isArray8","_i8","_ref8","replaceValues","decl","fast","sample","cleanSource","_isArray9","_i9","_ref9","_isArray10","_i11","_ref10","_i10","rebuild","fix","Root","toResult","hljs","registerLanguage","lowerBound","upperBound","_isVisibleThroughFrame2","isVisibleInDroppable","isVisibleInViewport","defaultEqualityCheck","defaultMemoize","equalityCheck","areArgumentsShallowlyEqual","createSelectorCreator","memoizeOptions","recomputations","resultFunc","dep","dependencyTypes","getDependencies","memoizedResultFunc","resetRecomputations","createStructuredSelector","selectors","selectorCreator","createSelector","objectKeys","composition","secondPerFrame","destX","precision","newV","newX","reusedTuple","getNanoSeconds","hrtime","loadTime","performance","hr","raf","caf","_now","cp","cancelled","polyfill","cancelAnimationFrame","currentStyle","currentVelocity","styleValue","_rafSchd2","isDraggingFn","ifDragging","memoizedMove","onMove","move","onMoveForward","onMoveBackward","crossAxisMoveForward","onCrossAxisMoveForward","crossAxisMoveBackward","onCrossAxisMoveBackward","windowScrollMove","onWindowScroll","arrowLeft","arrowUp","arrowRight","arrowDown","cachedPassword","SessionStore","_update","singletonSessionStore","_maxSafeInteger2","_DMRoomMap2","_Unread2","RoomListStore","_getManualComparator","_recentsComparator","lists","m.server_notice","im.vector.fake.invite","m.favourite","im.vector.fake.recent","im.vector.fake.direct","m.lowpriority","im.vector.fake.archived","ready","roomCache","prevState","_generateRoomLists","isLiveEvent","isLiveUnfilteredRoomTimelineEvent","_eventTriggersRecentReorder","_clearCachedRoomState","event_type","optimisticRequest","getRooms","oldTag","newTag","getUserIdForRoomId","pinUnread","pinMentioned","listKey","_listOrders","roomA","roomB","_tsOfNewestEvent","_updateCachedRoomState","unread","_unread","notifs","timestampA","_getRoomState","timestampDiff","mentionsA","mentionsB","unreadA","unreadB","metaA","metaB","metaData","order","_lexicographicalComparator","singletonRoomListStore","baseUniq","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","eventDiff","isMemberEvent","isMembershipChanged","isJoin","isPart","isJoinToJoin","isDisplaynameChange","isAvatarChange","memberEventDiff","asyncAction","pendingFn","_set2","orderedTags","orderedTagsAccountData","hasSynced","joinedGroupIds","selectedTags","anchorTag","TagOrderStore","tagOrderingEvent","tagOrderingEventContent","removedTagsAccountData","removedTags","_updateOrderedTags","event_content","_storeId","getStoreId","hasFetchedJoinedGroups","newTags","ctrlOrCmdKey","_mergeGroupsAndTags","groupIds","tagsToKeep","groupIdsToAdd","singletonTagOrderStore","Rooms","Loader","defaultPreset","dmUserId","createOpts","preset","invite_3pid","id_server","getIdentityServerUrl","medium","andView","initial_state","guest_access","createRoom","startAnyRegistrationFlow","SAFE_LOCALPART_REGEX","_getRegistrationFlows","flows","flow","stages","stage","go_home_on_cancel","proceed","tokenize","_class","tokens","filtered","AMPERSAND","CLOSEPAREN","CLOSEANGLEBRACKET","CLOSEBRACKET","CLOSEBRACE","OPENPAREN","OPENANGLEBRACKET","OPENBRACKET","OPENBRACE","WS","SYM","SLASH","MAILTO","PROTOCOL","QUERY","NL","_createTokenClass","TextToken","createTokenClass","inheritsToken","MUTE","MENTIONS_ONLY","ALL_MESSAGES","ALL_MESSAGES_LOUD","getRoomNotifsState","findOverrideMuteRule","roomRule","getRoomPushRule","isMuteRule","_pushprocessor2","setRoomNotifsState","cli","deletePushRule","addPushRule","setRoomNotifsStateMuted","overrideMuteRule","setPushRuleEnabled","setRoomNotifsStateUnmuted","override","isRuleForRoom","AddThreepid","generateClientSecret","emailAddress","requestAdd3pidEmailToken","phoneCountry","phoneNumber","requestAdd3pidMsisdnToken","identityServerDomain","addThreePid","submitMsisdnToken","_highlight","SyntaxHighlight","_el","highlightBlock","componentDidUpdate","extraButtons","danger","hasCancelButton","onOk","primaryButtonClass","contentId","cancelButton","_querystring2","_WidgetMessaging2","_TintableSvgButton2","_AppPermission2","_AppWarning2","_MessageSpinner2","_ActiveWidgetStore2","ALLOWED_APP_URL_SCHEMES","AppTile","_persistKey","_getNewState","_onAction","_onLoaded","_onEditClick","_onDeleteClick","_onSnapshotClick","onClickMenuBar","_onMinimiseClick","_grantWidgetPermission","_revokeWidgetPermission","_onPopoutWidgetClick","_onReloadWidgetClick","newProps","widgetPermissionId","hasPermissionToLoad","PersistedElement","initialising","_addWurlParams","deleting","widgetPageTitle","capability","widgetHasCapability","urlString","parentUrl","parentContentProtocol","childContentProtocol","setScalarToken","getWidgetPersistence","destroyElement","isScalarUrl","_scalarClient","_fetchWidgetTitle","userWidget","canUserModifyWidgets","onEditClick","IntegrationsManager","getScalarInterfaceUrlForRoom","getWidgetMessaging","getScreenshot","screenshot","onDeleteClick","_canUserModify","appFrame","_setupWidgetMessaging","setRoomId","widgetMessaging","setWidgetMessaging","getCapabilities","requestedCapabilities","requestedWhitelistCapabilies","whitelistCapabilities","setWidgetCapabilities","onCapabilityRequest","_hasCapability","getScalarPageTitle","appTileName","menu_bar","parsedWidgetUrl","safeWidgetUrl","formatAppTileName","titleSpacer","onMinimiseClick","_getSafeUrl","appTileBody","appTileBodyClass","miniMode","loadingElement","isMixedContent","errorMsg","allowFullScreen","sandbox","persistKey","isRoomEncrypted","onPermissionGranted","showEditButton","deleteWidgetLabel","_deleteWidgetLabel","deleteIcon","deleteClasses","showPictureSnapshotButton","windowStateIcon","appTileClass","fullWidth","showMenubar","pointerEvents","handleMinimisePointerEvents","showMinimise","showTitle","_getTileTitle","showReload","showPopout","showDelete","_isInteger2","_RoomViewStore2","sendResponse","sendError","nestedError","setWidget","setUserWidget","getWidgets","widgetStateEvents","returnStateEvent","stateEvent","onMessage","originalEvent","api","getMembershipState","inviteUser","botOptions","setBotOptions","getStateEvent","powerLevels","powerEvent","setPowerLevel","setBotPower","is_state","maySendEvent","canSendEvent","getRoomEncState","getMembershipCount","setPlumbingState","getJoinRules","startListening","stopListening","removeEventListener","TintableSvg","arrayOf","statics","idSequence","prevProps","calcAndApplyFixups","svgContainer","baseIsEqualDeep","baseIsEqual","stackClear","stackDelete","stackGet","stackHas","stackSet","stubArray","nativeGetSymbols","baseIsArguments","objectProto","isArguments","stubFalse","freeExports","freeModule","freeProcess","nodeUtil","require","arrayPush","isFlattenable","isStrict","reIsDeepProp","reIsPlainProp","overRest","setToString","getPrototype","overArg","isContainer","resumeAt","entering","cur","_firstChild","sourcepos","_lastChild","_prev","_sourcepos","_lastLineBlank","_open","_string_content","_literal","_listData","_info","_destination","_title","_isFenced","_fenceChar","_fenceLength","_fenceOffset","_onEnter","_onExit","tight","delim","unlink","prependChild","sibling","walker","StandardActions","NotificationUtils","states","OFF","ON","LOUD","actionsFor","pushRuleVectorState","ACTION_NOTIFY","ACTION_HIGHLIGHT_DEFAULT_SOUND","contentRuleVectorStateKind","decoded","stateKind","_Symbol","_freeGlobal","_getRawTag_hasOwnProperty","nativeObjectToString","_getRawTag","isOwn","unmasked","_objectToString_nativeObjectToString","_objectToString","_baseGetTag_symToStringTag","_baseGetTag","_getPrototype","_overArg","lodash_es_isObjectLike","objectTag","funcProto","isPlainObject_objectProto","funcToString","isPlainObject_hasOwnProperty","objectCtorString","lodash_es_isPlainObject","ActionTypes","INIT","createStore_createStore","preloadedState","enhancer","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","subscribe","isSubscribed","replaceReducer","nextReducer","es","outerSubscribe","observer","observeState","unsubscribe","getUndefinedStateErrorMessage","actionType","combineReducers","reducers","reducerKeys","finalReducers","finalReducerKeys","shapeAssertionError","assertReducerShape","hasChanged","nextState","previousStateForKey","nextStateForKey","errorMessage","bindActionCreator","actionCreator","bindActionCreators","actionCreators","boundActionCreators","compose","applyMiddleware","middlewares","createStore","_dispatch","middlewareAPI","middleware","_ponyfill_js__WEBPACK_IMPORTED_MODULE_0__","regexSymbolWithCombiningMarks","regexSurrogatePair","$0","$2","esrever","arrayMap","baseClone","baseUnset","copyObject","customOmitClone","getAllKeysIn","omit","isDeep","CLONE_DEEP_FLAG","Immutable","ANONYMOUS","ImmutablePropTypes","listOf","typeChecker","createIterableTypeChecker","mapOf","valuesTypeChecker","keysTypeChecker","createMapOfTypeCheckerFactory","orderedMapOf","setOf","orderedSetOf","stackOf","iterableOf","recordOf","recordKeys","createChainableTypeChecker","propFullName","propValue","propType","getPropType","locationName","checker","mutablePropValue","createShapeChecker","mapContains","shapeTypes","createShapeTypeChecker","createImmutableTypeChecker","orderedMap","orderedSet","isRecord","checkType","chainedCheckType","immutableClassName","immutableClassTypeValidator","propValues","createKeysTypeChecker","atob","__webpack_amd_options__","$assign","factories","partArgs","un","$parseInt","$trim","ws","radix","$parseFloat","log1p","EPSILON","EPSILON32","MAX32","MIN32","fround","$abs","$sign","roundTiesToEven","isRight","inc","newPromiseCapability","promiseCapability","strong","getEntry","$iterDefine","_f","_l","InternalMap","weak","uncaughtFrozenStore","ufstore","$WeakMap","$has","UncaughtFrozenStore","findUncaughtFrozen","Reflect","ownKeys","IS_CONCAT_SPREADABLE","flattenIntoArray","sourceLen","spreadable","targetIndex","sourceIndex","repeat","maxLength","fillString","stringLength","fillStr","intMaxLength","fillLen","stringFiller","isEntries","inLow","inHigh","outLow","outHigh","ReactNoopUpdateQueue","emptyObject","ReactComponent","ReactPureComponent","ComponentDummy","isReactComponent","forceUpdate","isPureReactComponent","ARIADOMPropertyConfig","BeforeInputEventPlugin","ChangeEventPlugin","DefaultEventPluginOrder","EnterLeaveEventPlugin","HTMLDOMPropertyConfig","ReactComponentBrowserEnvironment","ReactDOMComponent","ReactDOMEmptyComponent","ReactDOMTreeTraversal","ReactDOMTextComponent","ReactDefaultBatchingStrategy","ReactInjection","SVGDOMPropertyConfig","SelectEventPlugin","SimpleEventPlugin","alreadyInjected","inject","HostComponent","injectGenericComponentClass","injectTextComponentClass","EmptyComponent","injectEmptyComponentFactory","instantiate","Updates","contentKey","_callbacks","_contexts","_arg","contexts","checkpoint","rollback","isCheckable","getTracker","_wrapperState","valueTracker","inputValueTracking","_getTrackerFromNode","track","valueField","tracker","attachTracker","stopTracking","detachTracker","updateValueIfChanged","lastValue","getValueFromNode","supportedInputTypes","datetime","datetime-local","month","tel","week","scrollPosition","escapeTextContentForBrowser","isUnitlessNumber","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","orphans","tabSize","widows","zIndex","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","prefixes","prefixKey","CSSProperty","shorthandPropertyExpansions","background","backgroundAttachment","backgroundColor","backgroundImage","backgroundPositionX","backgroundPositionY","backgroundRepeat","border","borderWidth","borderStyle","borderColor","borderBottom","borderBottomWidth","borderBottomStyle","borderBottomColor","borderLeft","borderLeftStyle","borderLeftColor","borderRight","borderRightWidth","borderRightStyle","borderRightColor","borderTop","borderTopStyle","borderTopColor","fontStyle","fontVariant","fontFamily","outline","outlineWidth","outlineStyle","outlineColor","quoteAttributeValueForBrowser","VALID_ATTRIBUTE_NAME_REGEX","illegalAttributeNameCache","validatedAttributeNameCache","isAttributeNameSafe","shouldIgnoreValue","DOMPropertyOperations","createMarkupForID","setAttributeForID","createMarkupForRoot","setAttributeForRoot","createMarkupForProperty","createMarkupForCustomAttribute","setValueForProperty","deleteValueForProperty","setAttributeNS","setValueForAttribute","removeAttribute","deleteValueForAttribute","didWarnValueDefaultValue","updateOptionsIfPendingUpdateAndMounted","pendingUpdate","updateOptions","selectedValue","selected","ReactDOMSelect","getHostProps","mountWrapper","wasMultiple","getSelectValueContext","postUpdateWrapper","ReactNodeTypes","HOST","COMPOSITE","EMPTY","emptyComponentFactory","ReactEmptyComponentInjection","genericComponentClass","textComponentClass","isTextComponent","componentClass","SEPARATOR","SUBSEPARATOR","getComponentKey","traverseContext","traverseAllChildrenImpl","nameSoFar","subtreeCount","nextNamePrefix","childrenString","getItemIDs","addRoot","removeRoot","getRootIDs","isNative","reIsNative","itemMap","rootIDSet","itemByKey","rootByKey","getKeyFromID","getIDFromKey","unmountedIDs","purgeDeep","childIDs","describeComponentFrame","ownerName","lineNumber","describeID","ReactComponentTreeHook","getElement","getOwnerID","onSetChildren","nextChildIDs","nextChildID","parentID","onBeforeMountComponent","updateCount","onBeforeUpdateComponent","onMountComponent","onUpdateComponent","onUnmountComponent","purgeUnmountedComponents","_preventPurging","getCurrentStackAddendum","topElement","currentOwner","_debugID","getStackAddendumByID","getParentID","getChildIDs","getSource","getUpdateCount","getRegisteredIDs","pushNonStandardWarningStack","isCreatingElement","currentSource","reactStack","popNonStandardWarningStack","reactStackEnd","ReactServerUpdateQueue","noopCallbackQueue","ReactServerRenderingTransaction","renderToStaticMarkup","useCreateElement","updateQueue","getUpdateQueue","RESET_BATCHED_UPDATES","ReactDefaultBatchingStrategyTransaction","alreadyBatchingUpdates","EventListener","listen","detachEvent","registerDefault","ReactDOMSelection","containsNode","focusNode","getActiveElement","ReactInputSelection","hasSelectionCapabilities","contentEditable","getSelectionInformation","focusedElem","selectionRange","getSelection","restoreSelection","priorSelectionInformation","curFocusedElem","priorFocusedElem","priorSelectionRange","isInDocument","selectionStart","selectionEnd","parentElement","moveStart","moveEnd","getOffsets","offsets","createTextRange","setOffsets","ReactDOMContainerInfo","ReactDOMFeatureFlags","ReactMarkupChecksum","shouldUpdateReactComponent","ROOT_ATTR_NAME","ELEMENT_NODE_TYPE","DOC_NODE_TYPE","DOCUMENT_FRAGMENT_NODE_TYPE","instancesByReactRootID","getReactRootElementInContainer","mountComponentIntoNode","wrapperInstance","shouldReuseMarkup","_topLevelWrapper","ReactMount","_mountImageIntoNode","batchedMountComponentIntoNode","componentInstance","unmountComponentFromNode","hasNonRootReactChild","rootEl","isValidContainer","getTopLevelWrapperInContainer","prevHostInstance","getHostRootInstanceInContainer","_hostContainerInfo","topLevelRootCounter","TopLevelWrapper","rootID","_instancesByReactRootID","scrollMonitor","renderCallback","_updateRootComponent","prevComponent","_renderNewRootComponent","wrapperID","_instance","renderSubtreeIntoContainer","parentComponent","_renderSubtreeIntoContainer","nextWrappedElement","_processChildContext","publicInst","updatedCallback","reactRootElement","containerHasReactMarkup","internalGetID","containerHasNonRootReactChild","hasAttribute","rootElement","canReuseMarkup","checksum","CHECKSUM_ATTR_NAME","rootMarkup","outerHTML","normalizedMarkup","diffIndex","string1","string2","minLen","firstDifferenceIndex","difference","topLevelWrapper","_idCounter","_ownerDocument","_node","_tag","_namespaceURI","adler32","TAG_END","COMMENT_START","addChecksumToMarkup","existingChecksum","_renderedNodeType","support","searchParams","formData","viewClasses","isDataView","isPrototypeOf","isArrayBufferView","Headers","normalizeName","normalizeValue","getAll","items","iteratorFor","Request","_bodyInit","Body","Response","statusText","redirectStatuses","redirect","rawHeaders","parseHeaders","getAllResponseHeaders","responseURL","ontimeout","responseType","consumed","bodyUsed","fileReaderReady","reader","readBlobAsArrayBuffer","FileReader","readAsArrayBuffer","bufferClone","_initBody","_bodyText","_bodyBlob","FormData","_bodyFormData","URLSearchParams","_bodyArrayBuffer","readAsText","readBlobAsText","chars","readArrayBufferAsText","upcased","normalizeMethod","bodyInit","Room","CallHandler","ConferenceCall","groupChatRoomId","groupRoomId","confUserId","getConferenceUserIdForRoom","setup","_joinConferenceUser","_getConferenceUserRoom","groupRoom","confRoom","confUser","base64part","slot","ContentHelpers","IndexedDBStore","IndexedDBStoreBackend","Group","MatrixScheduler","WebStorageSessionStore","CRYPTO_ENABLED","TimelineWindow","InteractiveAuth","AutoDiscovery","setMatrixCallAudioOutput","setMatrixCallAudioInput","setMatrixCallVideoInput","getRequest","wrapRequest","origRequest","cryptoStoreFactory","fac","createClient","scheduler","cryptoStore","makeHtmlMessage","htmlBody","makeHtmlNotice","makeHtmlEmote","makeTextMessage","makeNotice","makeEmoteMessage","syncToken","filters","_oobMembers","_clientOptions","getSyncToken","setSyncToken","storeGroup","group","getGroup","getGroups","storeRoom","_onRoomMember","removeRoom","getRoomSummaries","storeUser","getUsers","scrollback","storeEvents","toStart","storeFilter","getFilterIdByName","filterName","setFilterIdByName","storeAccountDataEvents","wantsSave","getSavedSyncToken","deleteAllData","_memory","_indexeddbLocalBackend2","_indexeddbRemoteBackend2","_user2","_event","workerScript","workerApi","startedUp","_syncTs","_userModifiedMap","userPresenceEvents","rawEvent","_reallySave","_setDeviceVerification","blocked","dev","setDeviceVerification","_ReEmitter2","_RoomList2","_crypto2","_recoverykey","_backup_password","_randomstring","httpApi","SearchResult","StubStore","webRtcCall","contentRepo","SyncApi","MatrixBaseApis","olmlib","isCryptoAvailable","keysFromRecoverySession","decryptionKey","_step$value","decrypted","keyFromRecoverySession","decrypt","session_data","mac","ciphertext","olmVersion","reEmitter","setProcessFunction","eventToSend","_updatePendingEventStatus","_sendEventHttpRequest","clientRunning","_supportsVoip","candidatesByCall","callEventBuffer","isClientPrepared","callEventHandler","existingCall","existingCalls","thisCall","ignoreCallIds","setupCallEventHandler","_syncingRetry","_syncApi","_peekSync","_isGuest","_ongoingScrollbacks","urlPreviewCache","_notifTimelineSet","_cryptoStore","_sessionStore","sessionStore","_pushProcessor","_serverSupportsLazyLoading","_sendEvent","encryptionPromise","encryptEvent","_encryptEventIfNeeded","queueEvent","getQueueForEvent","updatePendingEvent","err2","newStatus","txnId","_txnId","makeTxnId","pathParams","$roomId","$eventType","$stateKey","$txnId","_http","_membershipChange","$room_id","$membership","_presenceList","$userId","_PojoToMatrixEventMapper","plainOldJsObject","reEmit","clearStores","_clientRunning","getUserIdLocalpart","setForceTURN","getSyncState","getSyncStateData","getScheduler","retryImmediately","getNotifTimelineSet","getOlmVersion","registerEventHandlers","isCryptoEnabled","getDeviceEd25519Key","uploadKeys","uploadDeviceKeys","forceDownload","getStoredDevicesForUser","getStoredDevice","setDeviceVerified","checkKeyBackup","setDeviceBlocked","setGlobalBlacklistUnverifiedDevices","getGlobalBlacklistUnverifiedDevices","getEventSenderDeviceInfo","isEventSenderVerified","cancelAndResendEventRoomKeyRequest","setRoomEncryption","forceDiscardSession","exportRoomKeys","importRoomKeys","getKeyBackupVersion","auth_data","public_key","isKeyBackupTrusted","getKeyBackupEnabled","backupKey","enableKeyBackup","backupInfo","free","Olm","PkEncryption","set_recipient_key","disableKeyBackup","prepareKeyBackupVersion","_callee4","decryption","publicKey","authData","keyInfo","_context4","PkDecryption","keyForNewBackup","init_with_private_key","private_key_salt","salt","private_key_iterations","generate_key","recovery_key","encodeRecoveryKey","get_private_key","createKeyBackupVersion","_signObject","deleteKeyBackupVersion","$version","_makeKeyBackupPath","$sessionId","queryData","sendKeyBackup","backupAllGroupSessions","isValidRecoveryKey","recoveryKey","decodeRecoveryKey","restoreKeyBackupWithPassword","_callee5","targetRoomId","targetSessionId","privKey","_context5","keyForExistingBackup","_restoreKeyBackup","restoreKeyBackupWithRecoveryKey","totalKeyCount","_step2$value","roomKeys","imported","deleteKeysFromBackup","getMediaConfig","getVisibleRooms","allRooms","replacedRooms","predecessor","contents","$type","getIgnoredUsers","setIgnoredUsers","ignored_users","isUserIgnored","roomIdOrAlias","syncRoom","hasMembershipState","sign_promise","inviteSignUrl","viaServers","reqOpts","arrayFormat","signed_invite_object","third_party_signed","$roomid","_clientOpts","removeEventFromQueue","setRoomName","setRoomTopic","getRoomTags","setRoomTag","metadata","$tag","deleteRoomTag","setRoomAccountData","addPendingEvent","sendMessage","sendTextMessage","sendNotice","sendEmoteMessage","sendImageMessage","sendStickerMessage","sendHtmlMessage","sendHtmlNotice","sendHtmlEmote","sendReceipt","receiptType","$receiptType","$eventId","_addLocalEchoReceipt","sendReadReceipt","setRoomReadMarkers","rrEvent","rmEventId","rrEventId","setRoomReadMarkersHttpRequest","getUrlPreview","og","sendTyping","isTyping","timeoutMs","inviteByThreePid","forget","deleteRoom","unban","membershipValue","_setMembershipState","setProfileInfo","$info","mxcUrl","_unstable_setStatusMessage","newMessage","isJoined","looksLikeDm","getInvitedAndJoinedMemberCount","setPresence","getPresenceList","inviteToPresenceList","dropFromPresenceList","drop","timeToWaitMs","errorTs","timeWaitedMs","numAdded","_createMessagesRequest","matrixEvents","setUnknownStateEvents","events_after","events_before","getEventMapper","fromToken","timelineFilter","paginateEventTimeline","eventTimeline","isNotifTimeline","pendingRequest","next_token","notifications","notification","resetNotifTimelineSet","peekInRoom","stopPeeking","setGuestAccess","writePromise","allowJoin","readPromise","allowRead","requestRegisterEmailToken","sendAttempt","nextLink","_requestTokenFromEndpoint","send_attempt","next_link","requestRegisterMsisdnToken","country","phone_number","requestPasswordEmailToken","requestPasswordMsisdnToken","endpoint","id_server_url","postParams","setRoomMutePushRule","mute","hasDontNotifyRule","roomPushRule","ruleRefreshDeferred","getPushRules","searchMessageText","roomEvents","search_term","search_categories","room_events","searchRoomEvents","term","order_by","event_context","before_limit","after_limit","include_profile","searchResults","_query","_processRoomEventsSearch","backPaginateRoomEventsSearch","searchOpts","hl","sr","syncLeftRooms","_syncedLeftRooms","_syncLeftRoomsPromise","syncApi","createFilter","filter_id","allowCached","$filterId","getOrCreateFilter","existingFilter","oldDef","newDef","existingId","createdFilter","turnServer","_turnServers","checkTurnServers","uris","ttl","_checkTurnServersTimeoutID","canResetEntireTimeline","_canResetTimelineCallback","_storeClientOptions","primTypes","serializableOpts","_ref11","_ref12","_ref13","stopClient","doesServerSupportLazyLoading","_callee6","unstableFeatures","_context6","hasLazyLoadMembersEnabled","setCanResetTimelineCallback","getCanResetTimelineCallback","randomString","_c","IS_ADDER","Reemitter","boundHandlers","eventNames","_handleEvent","boundHandler","escapes","escapeString","stringifyArray","stringifyObject","copyProps","SafeBuffer","_isFinite2","OOB_STATUS_NOTSTARTED","oobMemberFlags","_sentinels","_displayNameToUserIds","_userIdsToDisplayNames","_tokenToInvite","_joinedMemberCount","_summaryJoinedMemberCount","_invitedMemberCount","_summaryInvitedMemberCount","_oobMemberFlags","_updateDisplayNameCache","strippedOldName","existingUserIds","filteredUserIDs","strippedDisplayname","setJoinedMemberCount","setInvitedMemberCount","getMembersExcept","excludedIds","sentinel","eventsByStateKey","eventsForType","unknownStateEvents","_setStateEvent","_updateThirdPartyTokenCache","_getOrCreateMember","_updateMember","pwrLvlEvent","needsOutOfBandMembers","markOutOfBandMembersStarted","markOutOfBandMembersFailed","_setOutOfBandMember","existingMember","getInviteForThreePidToken","maySendRedactionForEvent","canRedact","_hasSufficientPowerLevelFor","powerLevelsEvent","requiredLevel","maySendMessage","_maySendEventOfType","mayClientSendStateEvent","stateEventType","power_levels_event","power_levels","events_levels","userPowerLevel","required_level","notifLevel","RoomSummary","synthesizeReceipt","fakeReceipt","storageToken","_opts","_txnToEvent","_receipts","_receiptCacheByEventId","_realReceipts","_notificationCounts","_timelineSets","_fixUpLegacyTimelineFields","_filteredTimelineSets","_pendingEventList","_blacklistUnverifiedDevices","_selfMembership","_summaryHeroes","_client","_membersPromise","getVersion","ver","shouldUpgradeToVersion","userMayUpgradeRoom","inviterId","anyMember","getAvatarFallbackMember","hasHeroes","availableMember","_availableMember","availableUser","updateMyMembership","prevMembership","_cleanupAfterLeaving","_loadMembersFromServer","lastSyncToken","not_membership","at","_loadMembers","fromServer","rawMembersEvents","memberEvents","loadMembersIfNeeded","inMemoryUpdate","trackRoomDevices","oobMembers","clearLoadedMembersIfNeeded","getTimelineSets","setUnreadNotificationCount","setSummary","heroes","joinedCount","invitedCount","setBlacklistUnverifiedDevices","getBlacklistUnverifiedDevices","roomAvatarEvent","mainUrl","alias_strings","alias_events","alias_event","getMembersWithMembership","shouldEncryptForInvitedMembers","getDefaultRoomName","calculateRoomName","getOrCreateFilteredTimelineSet","unfilteredLiveTimeline","removeFilteredTimelineSet","_addLiveEvent","redactId","redacts","redactedEvent","transaction_id","existingEvent","_handleRemoteEcho","addReceipt","remoteEvent","oldStatus","ALLOWED_TRANSITIONS","ignoreRoomNameEvent","mRoomName","inviteJoinCount","otherNames","otherMembers","localeCompare","memberNamesToRoomName","thirdPartyInvites","leftNames","countWithoutMe","addLiveEvents","liveTimeline","removeEvents","event_ids","removedAny","recalculate","membershipEvent","strippedStateEvents","invite_room_state","strippedEvent","getUsersReadUpTo","getReceiptsForEvent","receipt","ignoreSynthesized","receipts","fake","_addReceiptsToStructure","_buildReceiptCache","existingReceipt","ordering","receiptCacheByEventId","addTags","addAccountData","inviter","setProfile","setMyMembership","setInviter","hexTable","arrayToObject","plainObjects","compact","compacted","compactQueue","allowPrototypes","mergeTarget","percentTwenties","RFC1738","RFC3986","createMatrixClient","storeOpts","formatRegExp","noDeprecation","throwDeprecation","traceDeprecation","debugEnviron","debugs","seen","stylize","stylizeNoColor","isBoolean","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","styles","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","arrayToHash","formatError","isDate","braces","toUTCString","formatProperty","formatArray","numLinesEst","reduceToSingleString","ar","NODE_DEBUG","pid","bold","italic","underline","grey","cyan","magenta","yellow","special","boolean","null","__locale","abbreviated_days","abbreviated_months","am","pm","SettingController","levelRoleMap","usersDefault","0","LEVEL_ROLE_MAP","updateCheckStatusEnum","CHECKING","ERROR","NOTAVAILABLE","DOWNLOADING","READY","VectorBasePlatform","favicon","Favico","animation","showUpdateCheck","_updateFavicon","startUpdateCheck","stopUpdateCheck","bgColor","notificationCount","errorDidOccur","badge","dis","BasePlatform","_sanitizeHtml2","HomePage","_temp","iframeSrc","teamServerUrl","homePageUrl","g1","guestWarning","onRegisterClick","onLoginClick","GeminiScrollbarWrapper","autoshow","formTags","optgroup","datalist","textarea","openImpliesClose","tr","th","td","thead","link","li","h5","h6","voidElements","basefont","br","col","embed","isindex","keygen","param","wbr","foreignContextElements","math","htmlIntegrationElements","mi","mo","mn","mtext","annotation-xml","foreignObject","re_nameEnd","cbs","_cbs","_tagname","_attribname","_attribvalue","_attribs","_foreignContext","_lowerCaseTagNames","lowerCaseTags","xmlMode","_lowerCaseAttributeNames","lowerCaseAttributeNames","_tokenizer","onparserinit","_updatePosition","initialOffset","_sectionStart","getAbsoluteIndex","onopentagname","onopentagend","_closeCurrentTag","onselfclosingtag","recognizeSelfClosing","onattribname","onattribdata","onattribend","onattribute","_getInstructionName","ondeclaration","onprocessinginstruction","oncomment","oncommentend","oncdata","recognizeCDATA","oncdatastart","oncdataend","onend","onreset","parseComplete","resume","parseChunk","decodeCodePoint","entityMap","legacyMap","xmlMap","TEXT","BEFORE_TAG_NAME","IN_TAG_NAME","IN_SELF_CLOSING_TAG","BEFORE_CLOSING_TAG_NAME","IN_CLOSING_TAG_NAME","AFTER_CLOSING_TAG_NAME","BEFORE_ATTRIBUTE_NAME","IN_ATTRIBUTE_NAME","AFTER_ATTRIBUTE_NAME","BEFORE_ATTRIBUTE_VALUE","IN_ATTRIBUTE_VALUE_DQ","IN_ATTRIBUTE_VALUE_SQ","IN_ATTRIBUTE_VALUE_NQ","BEFORE_DECLARATION","IN_DECLARATION","IN_PROCESSING_INSTRUCTION","BEFORE_COMMENT","IN_COMMENT","AFTER_COMMENT_1","AFTER_COMMENT_2","BEFORE_CDATA_1","BEFORE_CDATA_2","BEFORE_CDATA_3","BEFORE_CDATA_4","BEFORE_CDATA_5","BEFORE_CDATA_6","IN_CDATA","AFTER_CDATA_1","AFTER_CDATA_2","BEFORE_SPECIAL","BEFORE_SPECIAL_END","BEFORE_SCRIPT_1","BEFORE_SCRIPT_2","BEFORE_SCRIPT_3","BEFORE_SCRIPT_4","BEFORE_SCRIPT_5","AFTER_SCRIPT_1","AFTER_SCRIPT_2","AFTER_SCRIPT_3","AFTER_SCRIPT_4","AFTER_SCRIPT_5","BEFORE_STYLE_1","BEFORE_STYLE_2","BEFORE_STYLE_3","BEFORE_STYLE_4","AFTER_STYLE_1","AFTER_STYLE_2","AFTER_STYLE_3","AFTER_STYLE_4","BEFORE_ENTITY","BEFORE_NUMERIC_ENTITY","IN_NAMED_ENTITY","IN_NUMERIC_ENTITY","IN_HEX_ENTITY","SPECIAL_NONE","SPECIAL_SCRIPT","SPECIAL_STYLE","whitespace","ifElseState","upper","SUCCESS","FAILURE","lower","consumeSpecialNameChar","NEXT_STATE","_buffer","_bufferOffset","_baseState","_special","_running","_ended","_xmlMode","_decodeEntities","_stateText","_getSection","_stateBeforeTagName","_stateInTagName","_emitToken","_stateBeforeCloseingTagName","_stateInCloseingTagName","_stateAfterCloseingTagName","_stateBeforeAttributeName","_stateInSelfClosingTag","_stateInAttributeName","_stateAfterAttributeName","_stateBeforeAttributeValue","_stateInAttributeValueDoubleQuotes","_stateInAttributeValueSingleQuotes","_stateInAttributeValueNoQuotes","_stateBeforeDeclaration","_stateInDeclaration","_stateInProcessingInstruction","_stateBeforeComment","_stateInComment","_stateAfterComment1","_stateAfterComment2","_stateBeforeCdata1","_stateBeforeCdata2","_stateBeforeCdata3","_stateBeforeCdata4","_stateBeforeCdata5","_stateBeforeCdata6","_stateInCdata","_stateAfterCdata1","_stateAfterCdata2","_stateBeforeSpecial","_stateBeforeSpecialEnd","_stateBeforeScript1","_stateBeforeScript2","_stateBeforeScript3","_stateBeforeScript4","_stateBeforeScript5","_stateAfterScript1","_stateAfterScript2","_stateAfterScript3","_stateAfterScript4","_stateAfterScript5","_stateBeforeStyle1","_stateBeforeStyle2","_stateBeforeStyle3","_stateBeforeStyle4","_stateAfterStyle1","_stateAfterStyle2","_stateAfterStyle3","_stateAfterStyle4","_stateBeforeEntity","_stateBeforeNumericEntity","_parseNamedEntityStrict","_emitPartial","_parseLegacyEntity","_stateInNamedEntity","_decodeNumericEntity","sectionStart","_stateInNumericEntity","_stateInHexEntity","_parse","_finish","_handleTrailingData","decodeMap","NodePrototype","nodeTypes","domLvl1","childNodes","previousSibling","cdata","shorthand","Writable","StringDecoder","_parser","decoder","_decoder","decodeStrings","_write","_supportsColor2","_chalk2","_terminalHighlight2","CssSyntaxError","setMessage","showSourceCode","stdout","aside","gutter","ignoreErrors","nextLine","nextOffset","escapePos","currentToken","returned","unclosed","what","back","nextToken","NEWLINE","FEED","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","OPEN_PARENTHESES","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","RE_BAD_BRACKET","CLOSE_PARENTHESES","RE_AT_END","RE_HEX_ESCAPE","ASTERISK","RE_WORD_END","endOfFile","_previousMap2","sequence","Input","consumer","mapResolve","originalPositionFor","sourceContentFor","SourceMapGenerator","SourceMapConsumer","SourceNode","base64VLQ","ArraySet","MappingList","_file","_sourceRoot","_skipValidation","_sources","_names","_mappings","_sourcesContents","_version","fromSourceMap","aSourceMapConsumer","eachMapping","newMapping","generated","addMapping","sources","sourceFile","sourceRelative","setSourceContent","_validateMapping","aSourceFile","aSourceContent","applySourceMap","aSourceMapPath","newSources","newNames","unsortedForEach","aGenerated","aOriginal","aSource","_serializeMappings","nameIdx","sourceIdx","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","mappings","_generateSourcesContent","aSources","aSourceRoot","sourcesContent","aValue","digit","encoded","vlq","toVLQSigned","VLQ_BASE","aIndex","aOutParam","continuation","shifted","fromVLQSigned","hasNativeMap","_set","fromArray","aArray","aAllowDuplicates","sStr","isDuplicate","aIdx","defaultRaw","colon","beforeDecl","beforeRule","beforeOpen","beforeClose","beforeComment","emptyBody","commentLeft","commentRight","Stringifier","semicolon","rawValue","important","ownSemicolon","atrule","afterName","detect","rawCache","beforeAfter","capitalize","rawSemicolon","rawEmptyBody","rawIndent","rawBeforeComment","rawBeforeDecl","rawBeforeRule","rawBeforeClose","rawBeforeOpen","rawColon","printed","_lazyResult2","Processor","use","normalized","_mapGenerator2","_stringify3","_result2","_parse2","LazyResult","processor","stringified","processed","syntax","onFulfilled","onRejected","handleError","postcssVersion","postcssPlugin","pluginVer","runtimeVer","asyncTick","processing","lastPlugin","messages","separators","velocityVersion","primary","secondary","versionInts","versionObject","versionIntsComponents","greaterSemver","alert","effectName","RegisterEffect","RegisterUI","animateParentHeight","totalDuration","totalHeightDelta","redirectOptions","finalElement","defaultDuration","propertyMap","redirectDuration","durationPercentage","callOptions","defaultDisplay","injectFinalCallbacks","resetProperty","resetValue","resetOptions","packagedEffects","callout.bounce","translateY","callout.shake","translateX","callout.flash","callout.pulse","scaleX","scaleY","callout.swing","rotateZ","callout.tada","transition.fadeIn","transition.fadeOut","transition.flipXIn","transformPerspective","rotateY","transition.flipXOut","transition.flipYIn","rotateX","transition.flipYOut","transition.flipBounceXIn","transition.flipBounceXOut","transition.flipBounceYIn","transition.flipBounceYOut","transition.swoopIn","transformOriginX","transformOriginY","translateZ","transition.swoopOut","transition.whirlIn","transition.whirlOut","transition.shrinkIn","transition.shrinkOut","transition.expandIn","transition.expandOut","transition.bounceIn","transition.bounceOut","transition.bounceUpIn","transition.bounceUpOut","transition.bounceDownIn","transition.bounceDownOut","transition.bounceLeftIn","transition.bounceLeftOut","transition.bounceRightIn","transition.bounceRightOut","transition.slideUpIn","transition.slideUpOut","transition.slideDownIn","transition.slideDownOut","transition.slideLeftIn","transition.slideLeftOut","transition.slideRightIn","transition.slideRightOut","transition.slideUpBigIn","transition.slideUpBigOut","transition.slideDownBigIn","transition.slideDownBigOut","transition.slideLeftBigIn","transition.slideLeftBigOut","transition.slideRightBigIn","transition.slideRightBigOut","transition.perspectiveUpIn","transition.perspectiveUpOut","transition.perspectiveDownIn","transition.perspectiveDownOut","transition.perspectiveLeftIn","transition.perspectiveLeftOut","transition.perspectiveRightIn","transition.perspectiveRightOut","RunSequence","originalSequence","currentCall","nextCall","currentCallOptions","nextCallOptions","timing","sequenceQueue","callbackOriginal","nextCallElements","escapeHtmlChar","reUnescapedHtml","reHasUnescapedHtml","baseToString","showGroupInviteDialog","AddressPickerDialog","_2","validAddressTypes","multiInviter","_MultiInviter2","addrTexts","errorList","_onGroupInviteFinished","showGroupAddRoomDialog","addRoomsPublicly","checkboxContainer","extraNode","pickerType","relatedGroupsEvent","_onGroupAddRoomFinished","FallbackAuthEntry","MsisdnAuthEntry","EmailIdentityAuthEntry","TermsAuthEntry","RecaptchaAuthEntry","PasswordAuthEntry","getEntryComponentForLoginType","loginType","AuthEntryComponents","LOGIN_TYPE","_propTypes3","submitAuthDict","passwordValid","passwordField","_onSubmit","_onPasswordFieldChange","passwordBoxClass","submitButtonOrSpinner","errorSection","onSubmit","htmlFor","stageParams","_onCaptchaResponse","CaptchaForm","sitePublicKey","onCaptchaResponse","showContinue","allPolicies","policies","prefLang","initToggles","pickedPolicies","policyId","policy","langPolicy","toggledPolicies","tryContinue","_trySubmit","_togglePolicy","newToggles","allChecked","checkboxes","submitButton","authSessionId","inputs","stageState","setEmailSid","makeRegistrationUrl","requestingToken","emailSid","_requestEmailToken","hs_url","is_url","_sid","_msisdn","_tokenBox","_requestMsisdnToken","msisdn","_onTokenChange","_onFormSubmit","idServerParsedUrl","threepid_creds","enableSubmit","submitClasses","mx_InteractiveAuthEntryComponents_msisdnSubmit","mx_UserSettings_button","aria-label","_popupWindow","_onReceiveMessage","fallbackButton","_onShowFallbackClick","getFallbackAuthUrl","_isWithin2","isWithinVertical","isWithinHorizontal","isPartiallyVisibleVertically","isPartiallyVisibleHorizontally","isBiggerVertically","isBiggerHorizontally","newCenter","physics","stiffness","damping","outOfTheWay","dropAnimationFinished","completeDrop","prepare","clean","moveByWindowScroll","updateDroppableDimensionIsEnabled","updateDroppableDimensionScroll","publishDroppableDimensions","publishDraggableDimensions","completeLift","requestDimensions","_noImpact2","_getNewHomeClientCenter2","getScrollDiff","windowScrollDiff","droppableScrollDiff","isScrollAllowed","dimensions","animateDrop","trigger","newHomeOffset","impact","_state$drag","dimension","clientOffset","_state$drag2","frameId","wrapperFn","_placeholder","noWobble","gentle","wobbly","stiff","keyCodes","_stopEvent2","RoomView","UserSettings","CreateRoom","RoomDirectory","UserView","GroupView","MyGroups","getDevices","mediaDevices","enumerateDevices","audiooutput","audioinput","videoinput","loadDevices","audioOutDeviceId","audioDeviceId","videoDeviceId","FluxStoreGroup","_dispatcher","getDispatcher","_getUniformDispatcher","storeTokens","getDispatchToken","_dispatchToken","waitFor","FluxStore","abstractMethod","FluxReduceStore","_FluxStore","areEqual","__invokeOnDispatch","__changed","startingState","endingState","__emitter","__changeEvent","__className","__dispatcher","__onDispatch","EmitterSubscription","_EventSubscription","subscriber","setCacheAdd","setCacheHas","SetCache","asyncTag","funcTag","genTag","proxyTag","_actionCreators","_TagOrderStore2","TagOrderActions","moveTag","destinationIx","getOrderedTags","getRemovedTagsAccountData","storeId","removeTag","_RoomListStore2","RoomListActions","tagRoom","oldIndex","getRoomLists","indexBefore","indexAfter","prevOrder","nextOrder","hasChangedSubLists","promiseToDelete","promiseToAdd","loadSession","enableGuest","guestHsUrl","guestIsUrl","fragmentQueryParams","defaultDeviceDisplayName","guest_user_id","guest_access_token","_doSetLoggedIn","_restoreFromLocalStorage","_registerAsGuest","_handleLoadSessionFailure","hsUrl","isUrl","clearStorage","teamPromise","_clearStorage","setLoggedIn","_persistCredentialsToLocalStorage","rtsClient","login","replaceUsingCreds","startMatrixClient","_Notifier2","_UserActivity2","_Presence2","makeShared","attemptTokenLogin","loginToken","homeserver","_Login","sendLoginRequest","identityServer","initial_device_display_name","handleInvalidStoreError","lazyLoadEnabled","LazyLoadingResyncDialog","LazyLoadingDisabledDialog","reload","initRtsClient","stopMatrixClient","logout","onLoggedOut","_isLoggingOut","isLoggingOut","registerGuest","device_id","SessionRestoreErrorDialog","UserActivity","onmousedown","_onUserActivity","onmousemove","onkeydown","passive","lastActivityAtTs","lastDispatchAtTs","activityEndTimer","lastScreenX","lastScreenY","_onActivityEndTimer","targetTime","loginParams","wellknown","well_known","Login","fallbackHsUrl","_hsUrl","_isUrl","_fallbackHsUrl","_currentFlowIndex","_flows","_defaultDeviceDisplayName","_createTemporaryClient","loginFlows","flowIndex","flowStep","pass","isEmail","identifier","legacyParams","originalLoginError","originalError","fallback_error","tryFallbackHs","parsedUrl","getSsoLoginUrl","instanceForInstanceId","protocols","instance_id","protocolNameForInstanceId","stateify","TokenState","CharacterState","BaseState","tClass","defaultTransition","accepts","character","charOrRegExp","tokenClass","endToken","defaultToken","newStates","Modal","encrypt","MAX_WIDTH","MAX_HEIGHT","createThumbnail","inputWidth","inputHeight","mimeType","targetWidth","targetHeight","canvas","getContext","drawImage","toBlob","thumbnail","thumbnail_info","infoForImageFile","imageFile","thumbnailType","imageInfo","objectUrl","revokeObjectURL","loadImageElement","uploadFile","thumbnail_url","thumbnail_file","infoForVideoFile","videoFile","videoInfo","onloadeddata","readAsDataURL","loadVideoElement","videoWidth","videoHeight","readFileAsArrayBuffer","encryptAttachment","encryptResult","encryptInfo","basePromise","promise1","ContentMessages","inprogress","nextId","onProgress","inprogressKeys","mx_ContentMessage","encodeBase64","uint8Array","latin1String","paddedBase64","inputLength","outputLength","plaintextBuffer","cryptoKey","exportedKey","ciphertextBuffer","sha256Buffer","ivArray","getRandomValues","subtle","generateKey","generateKeyResult","exportKey","exportKeyResult","digest","digestResult","iv","hashes","sha256","decodeBase64","expectedSha256base64","importKey","importKeyResult","counterLength","loadProfileInfo","saveDisplayName","newDisplayname","loadThreePids","threepids","getThreePids","saveThreePids","threePids","changePassword","oldPassword","newPassword","authDict","setPassword","getEmailPusher","pushers","pushkey","hasEmailPusher","addEmailPusher","setPusher","app_id","app_display_name","lang","_UiEffects","_email2","_phonenumber","_Registration","defaultEmail","defaultPhoneCountry","defaultPhoneNumber","defaultUsername","defaultPassword","teamsConfig","supportEmail","teams","required","minPasswordLength","onError","fieldValid","selectedTeam","validateField","allFieldsValid","_doSubmit","_isUniEmail","field_id","pwd1","pwd2","passwordConfirm","matchingTeam","team","showSupportEmail","onTeamSelected","emailValid","_authStepIsRequired","markFieldValid","phoneNumberValid","error_code","field_input_incorrect","fieldElementById","_classForField","baseClasses","cls","_onPhoneCountryChange","newVal","iso2","phonePrefix","emailPlaceholder","emailSection","autoFocus","onBlur","belowEmailSection","SelectedTeamName","CountryDropdown","phoneSection","disable_3pid_login","phonePlaceholder","onOptionChange","isSmall","showPrefix","registerButton","placeholderUserName","_velocityVector2","PHONE_NUMBER_REGEXP","COUNTRIES","_AccessibleButton2","StatusMessageContextMenu","_onClearClick","_onStatusChange","formSubmitClasses","mx_StatusMessageContextMenu_submit","mx_StatusMessageContextMenu_submitFaded","autoComplete","clearIcon","clearButton","mx_StatusMessageContextMenu","mx_StatusMessageContextMenu_hasStatus","MODE_NUMBER","MODE_ALPHA_NUM","MODE_8BIT_BYTE","MODE_KANJI","L","M","Q","H","QRPolynomial","getLength","multiply","gexp","glog","ratio","QRMath","LOG_TABLE","EXP_TABLE","GeminiScrollbar","forceGemini","scrollbar","findDOMNode","createElements","destroy","_objectWithoutProperties","AppPermission","curlBase","getCurlBase","wurl","curl","curlString","e2eWarningText","cookieWarning","_TintableSvg2","TintableSvgButton","AppWarning","imgClass","imgClassName","hover","_onFlairStoreUpdated","_refreshGroup","refreshGroupRooms","refreshGroupMembers","_openContextMenu","TagTileContextMenu","menuDisplayed","onContextButtonClick","elementRect","onMouseOver","onMouseOut","RoomTooltip","mx_TagTile","mx_TagTile_selected","tip","contextButton","FlairAvatar","group_id","groupProfile","tooltip","Flair","profiles","_generateAvatars","_getGroupProfiles","avatars","_ScalarMessaging2","ManageIntegsButton","scalarError","onManageIntegrations","integrationsButton","integrationsWarningTriangle","integrationsErrorPopup","integrationsButtonClasses","mx_RoomHeader_button","mx_RoomSettings_integrationsButton_error","_MFileBody2","MImageBody","onImageError","onImageLoad","onImageEnter","onImageLeave","onClientSync","_isGif","decryptedUrl","decryptedThumbnailUrl","imgError","imgLoaded","loadedImageDimensions","syncState","ImageView","fileSize","_getThumbUrl","_refs$image","naturalWidth","naturalHeight","thumbnailPromise","thumbnailUrl","_afterComponentDidMount","_afterComponentWillUnmount","thumbUrl","infoWidth","infoHeight","wrapImage","maxImageHeight","gifLabel","getPlaceholder","showPlaceholder","onMouseEnter","onMouseLeave","getTooltip","_messageContent","fileBody","getFileBody","showUrlPreview","getEventTileOps","UnknownBody","bodyTypes","m.text","m.notice","m.emote","m.image","m.file","m.audio","m.video","evTypes","m.sticker","BodyType","cacheHas","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalFunc","isPartial","othLength","stacked","arrValue","othValue","compared","othIndex","baseGetAllKeys","keysFunc","symbolsFunc","baseTimes","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseIsTypedArray","baseUnary","nodeIsTypedArray","_AppTile2","showApps","apps","_getApps","_updateApps","onAction","hideWidgetKey","getEchoedRoomWidgets","makeAppConfig","_launchManageIntegrations","onClickAddWidget","getCapWhitelistForAppTypeInRoomId","addWidget","spinner","roomHasPendingWidgets","_flatMap2","_Autocompleter2","COMPOSER_SELECTED","Autocomplete","autocompleter","completionPromise","onCompletionClicked","completionList","selectionOffset","shouldShowCompletions","forceComplete","queryRequested","debounceCompletionsRequest","autocompleteDelay","processQuery","getCompletions","processCompletions","provider","currentSelection","completionCount","countCompletions","onConfirm","onSelectionChange","selectedCompletion","domNode","offsetTop","EmojiText","renderedCompletions","completionResult","componentPosition","renderCompletions","baseMatches","baseMatchesProperty","baseGet","baseHasIn","hasPath","baseEach","_CommandProvider2","_CommunityProvider2","_DuckDuckGoProvider2","_RoomProvider2","_UserProvider2","_EmojiProvider2","_NotifProvider2","PROVIDERS","Autocompleter","providers","completionsList","completionsState","getCurrentCommand","nativeMax","otherArgs","baseSetToString","shortOut","CommandMap","processCommandInput","runFn","_linkifyMatrix","Command","_ref$args","_ref$hideCompletionAf","hideCompletionAfterSpace","getCommand","getCommandWithArgs","ddg","nick","getUsage","colorScheme","primary_color","secondary_color","getCompletionState","getErrorText","matrixToMatches","server_name","_viaServers","_parts","aliasEvents","_aliases","ignoredUsers","unignore","deop","devtools","DevtoolsDialog","verify","fingerprint","fprint","discardsession","newballsplease","goto","_ContextualMenu","RoomNotifs","FormattingUtils","_ActiveRoomObserver2","collapsed","transparent","isInvite","incomingCall","isDragging","badgeHover","notifState","_shouldShowNotifBadge","_shouldShowMentionBadge","_isDirectMessageRoom","dmRooms","onRoomTimeline","onRoomName","accountDataEvent","_onActiveRoomChange","shouldComponentUpdate","badgeOnMouseEnter","badgeOnMouseLeave","_showContextMenu","RoomTileContextMenu","refreshSubList","onBadgeClicked","notifBadges","mentionBadges","badges","subtext","selfId","mx_RoomTile","mx_RoomTile_selected","mx_RoomTile_unread","mx_RoomTile_unreadNotify","mx_RoomTile_highlight","mx_RoomTile_invited","mx_RoomTile_menuDisplayed","mx_RoomTile_noBadges","mx_RoomTile_transparent","mx_RoomTile_hasSubtext","avatarClasses","mx_RoomTile_avatar","badgeClasses","mx_RoomTile_badge","mx_RoomTile_badgeButton","badgeContent","limitedCount","subtextLabel","nameClasses","mx_RoomTile_name","mx_RoomTile_invite","mx_RoomTile_badgeShown","nameSelected","RoomAvatar","dmIndicator","findReadReceiptFromUserId","receiptKeys","rcpt","Stickerpicker","_onShowStickersClick","_onHideStickersClick","_removeStickerpickerWidgets","_updateWidget","_onWidgetAction","_onResize","_onFinished","popoverWidth","popoverHeight","showStickers","imError","stickerpickerX","stickerpickerY","stickerpickerWidget","disableWidgetAssets","removeStickerpickerWidgets","_imError","_sendVisibilityToWidget","getStickerpickerWidgets","text-align","visible","_prevSentVisibility","sendVisibility","_errorStickerpickerContent","stickersContent","_defaultStickerpickerContent","buttonRect","clientWidth","stickerPickerChevronOffset","stickerPickerX","stickerPickerY","GenericElementContextMenu","stickersButton","stickerPicker","_getStickerpickerContent","baseKeysIn","getSymbolsIn","keysIn","NAN","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","decodeSafe","decodeURI","Renderer","ast","lastOut","lit","cancelQuoting","ReplyPreview","_onRoomViewStoreUpdate","_roomStoreToken","getQuotingEvent","_MessageEvent2","_MemberAvatar2","mxRoom","onUnpinned","onTileClicked","onUnpinClicked","pinnedEvents","pinned","_canUnpin","unpinButton","roomShape","_element2","_linkifyMatrix2","onMouseDown","_linkifyTopic","onTopicClick","guestRead","guestJoin","perms","CancelButton","onCancelClick","icon","ACTION_NOTIFY_DEFAULT_SOUND","ACTION_NOTIFY_RING_SOUND","ACTION_HIGHLIGHT","ACTION_DONT_NOTIFY","ACTION_DISABLED","_inheritsLoose","subscriptionShape","prop_types_default","trySubscribe","tryUnsubscribe","notifyNestedSubs","storeShape","createProvider","_Provider$childContex","subscriptionKey","Provider","_Component","_proto","getChildContext","react","childContextTypes","components_Provider","_assertThisInitialized","_objectWithoutPropertiesLoose","excluded","sourceKeys","CLEARED","nullListeners","Subscription","parentSub","onStateChange","addNestedSub","createListenerCollection","hotReloadingVersion","dummyState","connectAdvanced","selectorFactory","_contextTypes","_childContextTypes","_ref2$getDisplayName","_ref2$methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","shouldHandleStateChanges","_ref2$storeKey","_ref2$withRef","withRef","connectOptions","browser_default","react_is","wrappedComponentName","selectorFactoryOptions","Connect","renderCount","propsMode","setWrappedInstance","initSelector","initSubscription","subscription","getWrappedInstance","wrappedInstance","sourceSelector","makeSelectorStateful","notifyNestedSubsOnComponentDidUpdate","addExtraProps","withExtras","hoist_non_react_statics_cjs_default","wrapMapToPropsConstant","getConstant","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","stateOrDispatch","ownProps","connect_mapDispatchToProps","mapDispatchToProps","connect_mapStateToProps","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","connect_mergeProps","mergeProps","mergedProps","pure","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextOwnProps","propsChanged","stateChanged","nextStateProps","statePropsChanged","handleNewState","firstState","firstOwnProps","handleFirstCall","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","strictEqual","connect_connect","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","_ref$selectorFactory","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","symbolObservablePonyfill","observable","ReactIs","REACT_STATICS","contextType","getDerivedStateFromError","getDerivedStateFromProps","mixins","KNOWN_STATICS","arity","TYPE_STATICS","ForwardRef","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","EXPRESSION_LEFT_TO_RIGHT","EXPRESSION_RIGHT_TO_LEFT","anchorNode","anchorOffset","focusOffset","compareDocumentPosition","debounce","FUNC_ERROR_TEXT","wait","leading","trailing","maxWait","_babelPolyfill","DEFINE_PROPERTY","padStart","padEnd","$getPrototypeOf","$freeze","$seal","$preventExtensions","$isFrozen","$isSealed","$isExtensible","FProto","nameRE","HAS_INSTANCE","FunctionProto","$Number","BROKEN_COF","TRIM","toNumber","argument","third","maxCode","digits","aNumberValue","$toFixed","divide","numToString","fractionDigits","z","x2","$toPrecision","toPrecision","_isFinite","isInteger","isSafeInteger","MIN_SAFE_INTEGER","$acosh","acosh","MAX_VALUE","$asinh","asinh","$atanh","atanh","cbrt","clz32","LOG2E","cosh","hypot","value1","value2","larg","$imul","xn","yn","xl","yl","log10","LOG10E","log2","sinh","tanh","trunc","$fromCodePoint","fromCodePoint","callSite","tpl","codePointAt","$endsWith","endPosition","$startsWith","$toISOString","lz","getUTCFullYear","getUTCMilliseconds","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","DateProto","hint","upTo","$sort","$forEach","STRICT","$filter","$some","$every","$reduce","$indexOf","NEGATIVE_ZERO","$find","forced","$flags","$RegExp","re1","re2","CORRECT_NEW","tiRE","piRE","fiU","$match","REPLACE","$replace","replaceValue","SEARCH","$search","SPLIT","$split","_split","$push","NPCG","separator2","lastLength","lastLastIndex","splitLimit","separatorCopy","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","microtask","newPromiseCapabilityModule","promiseResolve","v8","$Promise","FakePromise","PromiseRejectionEvent","isThenable","isReject","reaction","exited","_h","onHandleUnhandled","onUnhandled","unhandled","isUnhandled","onunhandledrejection","_a","onrejectionhandled","$reject","_w","$resolve","$index","alreadyCalled","$isView","fin","viewS","viewT","rApply","fApply","thisArgument","argumentsList","rConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","$args","propertyKey","deleteProperty","Enumerate","enumerate","V","existingDescriptor","ownDesc","setProto","$includes","arraySpeciesCreate","depthArg","$pad","getFlags","RegExpProto","$RegExpStringIterator","_r","matchAll","rx","getOwnPropertyDescriptors","getDesc","$values","__defineGetter__","__lookupGetter__","__lookupSetter__","clamp","DEG_PER_RAD","RAD_PER_DEG","degrees","radians","fscale","iaddh","x0","x1","y0","y1","$x0","$y0","isubh","imulh","$u","$v","u0","v0","u1","v1","umulh","signbit","onFinally","toMetaKey","ordinaryDefineOwnMetadata","defineMetadata","metadataKey","metadataValue","deleteMetadata","ordinaryHasOwnMetadata","ordinaryGetOwnMetadata","ordinaryGetMetadata","getMetadata","ordinaryOwnMetadataKeys","ordinaryMetadataKeys","oKeys","pKeys","getMetadataKeys","getOwnMetadata","getOwnMetadataKeys","ordinaryHasMetadata","hasMetadata","hasOwnMetadata","$metadata","OBSERVABLE","cleanupSubscription","subscriptionClosed","_o","closeSubscription","SubscriptionObserver","$Observable","Observable","MSIE","boundArgs","$task","ArrayValues","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","$re","regExp","fragparts","configError","isIos","validBrowser","acceptInvalidBrowser","MatrixChat","CompatibilityPage","vector_indexeddb_worker_script","setIndexedDbWorkerScript","VectorConferenceHandler","onHashChange","locateFile","loadLanguage","_url_utils","parseQsFromFragment","parseQs","ipcRenderer","ElectronPlatform","migrateFromOldOrigin","WebPlatform","_getconfig","getVectorConfig","MSStream","cookie","InstallTrigger","setTheme","checkBrowserFeatures","matrixChat","startUpdater","onNewScreen","realQueryParams","startingFragmentQueryParams","disable_guests","onTokenLoginCompleted","initialScreenAfterLogin","getScreenFromLocation","getDefaultDeviceDisplayName","onAccept","loadApp","languageHandler","_langs","lastLocationHashSet","featureList","Modernizr","featureComplete","showScreen","routeUrl","rageshake","mxSendRageshake","withLogs","__WEBPACK_AMD_REQUIRE_ARRAY__","userText","sendLogs","progressCallback","traverseAllChildren","userProvidedKeyEscapeRegex","escapeUserProvidedKey","ForEachBookKeeping","forEachFunction","forEachContext","forEachSingleChild","bookKeeping","MapBookKeeping","mapResult","keyPrefix","mapFunction","mapContext","mapSingleChildIntoContext","childKey","mappedChild","mapIntoWithKeyPrefixInternal","escapedPrefix","forEachSingleChildDummy","forEachFunc","createDOMFactory","abbr","article","bdi","bdo","big","blockquote","caption","cite","colgroup","dd","dfn","dl","em","fieldset","figcaption","figure","footer","hgroup","kbd","legend","main","menuitem","meter","nav","noscript","picture","pre","rp","ruby","samp","section","small","sup","tbody","tfoot","ul","var","circle","clipPath","ellipse","linearGradient","mask","polygon","polyline","radialGradient","rect","tspan","emptyFunctionThatReturnsNull","throwOnDirectAccess","createPrimitiveTypeChecker","PropTypeError","createElementTypeChecker","expectedClass","expectedClassName","actualClassName","getClassName","createNodeChecker","objectOf","expectedValues","valuesString","oneOfType","arrayOfTypeCheckers","getPostfixForTypeWarning","allKeys","secret","expectedType","getPreciseType","typeSpecs","getStack","_invariant","MIXINS_KEY","injectedMixins","ReactClassInterface","componentWillUpdate","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","updateComponent","ReactClassStaticInterface","RESERVED_SPEC_KEYS","mixSpecIntoComponent","createMergedResultFunction","isReserved","isAlreadyDefined","specPolicy","mixStaticSpecIntoComponent","autobind","validateMethodOverride","ReactClassMixin","spec","autoBindPairs","__reactAutoBindPairs","isReactClassMethod","createChainedFunction","mergeIntoWithNoDuplicateKeys","bindAutoBindMethod","IsMountedPreMixin","__isMounted","IsMountedPostMixin","replaceState","ReactClassComponent","pairs","autoBindKey","bindAutoBindMethods","testRunner","tests","setClasses","docElement","_config","classPrefix","baseVal","enableJSClass","enableClasses","getBody","injectElementWithStyles","styleSheet","domToCSS","nativeTestProps","supports","cssToDOM","testProps","mStyle","modElem","fnBind","testDOMProps","testPropsAll","cssomPrefixes","domPrefixes","testAllProps","ModernizrProto","usePrefixes","_q","addTest","addAsyncTest","testStyles","offsetLeft","omPrefixes","_cssomPrefixes","_domPrefixes","_getOwnPropertyNames2","_isSealed2","_isFrozen2","_isExtensible2","_defineProperties2","_seal2","_preventExtensions2","stringAccess","reservedWords","zeroWidthChars","es5array","es5date","es5function","es5object","strictmode","es5string","es5syntax","es5undefined","atRule","CSSRule","prefixed","indexeddb","seal","isFrozen","isSealed","ReactDefaultInjection","getHostComponentFromComposite","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","__REACT_DEVTOOLS_GLOBAL_HOOK__","Mount","Reconciler","aria-current","aria-details","aria-disabled","aria-hidden","aria-invalid","aria-keyshortcuts","aria-roledescription","aria-autocomplete","aria-checked","aria-expanded","aria-haspopup","aria-level","aria-modal","aria-multiline","aria-multiselectable","aria-orientation","aria-placeholder","aria-pressed","aria-readonly","aria-required","aria-selected","aria-sort","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext","aria-atomic","aria-busy","aria-live","aria-relevant","aria-dropeffect","aria-grabbed","aria-activedescendant","aria-colcount","aria-colindex","aria-colspan","aria-controls","aria-describedby","aria-errormessage","aria-flowto","aria-labelledby","aria-owns","aria-posinset","aria-rowcount","aria-rowindex","aria-rowspan","aria-setsize","FallbackCompositionState","SyntheticCompositionEvent","SyntheticInputEvent","END_KEYCODES","START_KEYCODE","canUseCompositionEvent","canUseTextInputEvent","opera","isPresto","useFallbackCompositionData","SPACEBAR_CODE","SPACEBAR_CHAR","beforeInput","bubbled","captured","compositionEnd","compositionStart","compositionUpdate","hasSpaceKeypress","isFallbackCompositionEnd","getDataFromCustomEvent","currentComposition","extractCompositionEvent","fallbackData","getCompositionEventType","isFallbackCompositionStart","getData","customData","extractBeforeInputEvent","getNativeBeforeInputChars","isKeypressCommand","getFallbackBeforeInputChars","getTextContentAccessor","_startText","_fallbackText","minEnd","sliceTail","isTextInputElement","createAndAccumulateChangeEvent","activeElementInst","doesChangeEventBubble","manualDispatchChangeEvent","runEventInBatch","stopWatchingForChangeEventIE8","getInstIfValueChanged","updated","_allowSimulatedPassThrough","getTargetInstForChangeEvent","handleEventsForChangeEventIE8","startWatchingForChangeEventIE8","isInputEventSupported","stopWatchingForValueChange","handlePropertyChange","handleEventsForInputEventPolyfill","startWatchingForValueChange","getTargetInstForInputEventPolyfill","getTargetInstForClickEvent","getTargetInstForInputOrChangeEvent","_isInputEventSupported","getTargetInstFunc","handleEventFunc","targetNode","shouldUseChangeEvent","shouldUseClickEvent","controlled","handleControlledInputBlur","ReactOwner","addComponentAsRefTo","attachRef","prevRef","prevOwner","nextRef","nextOwner","removeComponentAsRefFrom","detachRef","isValidOwner","ownerPublicInstance","mouseEnter","mouseLeave","related","toNode","acceptCharset","accessKey","allowTransparency","as","autoPlay","cellPadding","cellSpacing","charSet","challenge","classID","cols","colSpan","contextMenu","controls","controlsList","coords","crossOrigin","dateTime","encType","formAction","formEncType","formMethod","formNoValidate","formTarget","frameBorder","high","hrefLang","httpEquiv","inputMode","integrity","keyParams","keyType","low","manifest","marginHeight","marginWidth","media","mediaGroup","minLength","nonce","noValidate","optimum","playsInline","poster","preload","radioGroup","referrerPolicy","rowSpan","scoped","scrolling","seamless","sizes","spellCheck","srcDoc","srcLang","srcSet","useMap","wmode","about","datatype","inlist","typeof","vocab","autoCapitalize","autoCorrect","autoSave","itemProp","itemScope","itemType","itemID","itemRef","security","unselectable","validity","badInput","dangerouslyProcessChildrenUpdates","createNodesFromMarkup","createArrayFromMixed","getMarkupWrap","dummyNode","nodeNamePattern","handleScript","nodeNameMatch","getNodeName","wrapDepth","hasArrayNature","shouldWrap","selectWrap","tableWrap","trWrap","svgWrap","markupWrap","ReactDOMIDOperations","AutoFocusUtils","CSSPropertyOperations","ReactDOMInput","ReactDOMOption","ReactDOMTextarea","ReactMultiChild","CONTENT_TYPES","suppressContentEditableWarning","DOC_FRAGMENT_TYPE","assertValidProps","voidElementTags","enqueuePutListener","containerInfo","inputPostMount","postMountWrapper","textareaPostMount","optionPostMount","mediaEvents","trackInputValue","trapBubbledEventsLocal","postUpdateSelectWrapper","omittedCloseTags","newlineEatingTags","listing","VALID_TAG_REGEX","validatedTagCache","isCustomComponent","globalIdCounter","validateDangerousTag","_previousStyle","_previousStyleCopy","parentTag","mountImage","_updateDOMProperties","lazyTree","_createInitialChildren","tagOpen","_createOpenTagMarkupAndPutListeners","tagContent","_createContentMarkup","focusDOMComponent","propKey","createMarkupForStyles","contentToUse","childrenToUse","mountChildren","mountImages","lastProps","_updateDOMChildren","updateWrapper","styleName","styleUpdates","lastStyle","nextProp","lastProp","setValueForStyles","lastContent","nextContent","lastHtml","nextHtml","lastChildren","nextChildren","lastHasContentOrHtml","nextHasContentOrHtml","updateChildren","updateTextContent","updateMarkup","unmountChildren","dangerousStyleValue","hyphenateStyleName","memoizeStringOnly","processStyleName","hasShorthandPropertyBug","styleFloatAccessor","tempStyle","cssFloat","serialized","isCustomProperty","setProperty","expansion","individualStyleName","camelize","msPattern","_hyphenPattern","isNonNumeric","hyphenate","_uppercasePattern","runEventQueueInBatch","makePrefixMap","styleProp","vendorPrefixes","animationend","animationiteration","animationstart","transitionend","prefixedEventNames","transition","prefixMap","forceUpdateIfMounted","defaultChecked","initialChecked","rootNode","queryRoot","querySelectorAll","otherInstance","isControlled","valueAsNumber","didWarnInvalidOptionChildren","flattenChildren","selectValue","selectParent","hostProps","ReactChildReconciler","processQueue","_reconcilerInstantiateChildren","nestedChildren","instantiateChildren","_reconcilerUpdateChildren","prevChildren","nextNestedChildrenElements","removedNodes","makeTextContent","nextMarkup","makeSetMarkup","_updateChildren","nextMountIndex","lastPlacedNode","prevChild","_mountChildAtIndex","_unmountChild","renderedChildren","makeMove","createChild","makeInsertMarkup","makeRemove","instantiateChild","childInstances","selfDebugID","keyUnique","nestedChildNodes","nextChildInstance","nextChildMountImage","renderedChild","CompositeTypes","StatelessComponent","warnIfInvalidElement","nextMountID","_compositeType","_calledComponentWillUnmount","renderedElement","publicProps","publicContext","_processContext","doConstruct","shouldConstruct","_constructComponent","isPureComponent","unstable_handleError","performInitialMountWithErrorHandling","performInitialMount","_constructComponentWithoutOwner","_processPendingState","_renderValidatedComponent","_maskContext","maskedContext","contextName","currentContext","childContext","_checkContextTypes","prevContext","prevParentElement","nextParentElement","prevUnmaskedContext","nextUnmaskedContext","willReceive","shouldUpdate","_performComponentUpdate","unmaskedContext","hasComponentDidUpdate","_updateRenderedComponent","prevComponentInstance","prevRenderedElement","nextRenderedElement","oldHostNode","_replaceNodeWithMarkup","prevInstance","_renderValidatedComponentWithoutOwnerOrContext","publicComponentInstance","nextDebugID","flattenSingleChildIntoContext","domID","createComment","instA","instB","depthA","tempA","depthB","tempB","pathFrom","pathTo","_stringText","_closingComment","_commentNodes","openingValue","createDocumentFragment","escapedText","nextStringText","commentNodes","hostNode","getUnboundedScrollPosition","findParent","TopLevelCallbackBookKeeping","handleTopLevelImpl","_handleTopLevel","_enabled","scrollable","Window","currentlyEnabled","previouslyEnabled","reactMountReady","getNodeForCharacterOffset","useIEOffsets","selectedRange","selectedLength","fromStart","duplicate","moveToElementText","setEndPoint","rangeCount","currentRange","getRangeAt","startContainer","endContainer","rangeLength","tempRange","cloneRange","selectNodeContents","detectionRange","startMarker","endMarker","removeAllRanges","addRange","getLeafNode","getSiblingNode","nodeStart","nodeEnd","isTextNode","outerNode","innerNode","NS","ATTRS","accentHeight","additive","alignmentBaseline","allowReorder","alphabetic","amplitude","arabicForm","ascent","attributeType","autoReverse","azimuth","baseFrequency","baseProfile","baselineShift","bbox","bias","calcMode","capHeight","clipRule","clipPathUnits","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","contentScriptType","contentStyleType","cx","cy","decelerate","descent","diffuseConstant","divisor","dominantBaseline","dur","dy","edgeMode","elevation","enableBackground","externalResourcesRequired","fillRule","filterRes","filterUnits","floodColor","focusable","fontSizeAdjust","fontStretch","fx","fy","g2","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","glyphRef","gradientTransform","gradientUnits","hanging","horizAdvX","horizOriginX","ideographic","imageRendering","in","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","kerning","keyPoints","keySplines","keyTimes","lengthAdjust","letterSpacing","lightingColor","limitingConeAngle","local","markerEnd","markerMid","markerStart","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","numOctaves","orient","orientation","overlinePosition","overlineThickness","paintOrder","panose1","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","radius","refX","refY","renderingIntent","repeatCount","repeatDur","requiredExtensions","requiredFeatures","restart","ry","seed","shapeRendering","slope","specularConstant","specularExponent","speed","spreadMethod","stdDeviation","stemh","stemv","stitchTiles","stopColor","strikethroughPosition","strikethroughThickness","stroke","strokeLinecap","strokeLinejoin","surfaceScale","systemLanguage","tableValues","targetX","targetY","textAnchor","textDecoration","textRendering","textLength","u2","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","viewBox","viewTarget","widths","wordSpacing","writingMode","xHeight","xChannelSelector","xlinkActuate","xlinkArcrole","xlinkHref","xlinkRole","xlinkShow","xlinkTitle","xlinkType","xmlBase","xmlns","xmlnsXlink","xmlLang","xmlSpace","y2","yChannelSelector","zoomAndPan","skipSelectionChangeEvent","lastSelection","mouseDown","hasListener","constructSelectEvent","boundingTop","boundingLeft","syntheticEvent","SyntheticAnimationEvent","SyntheticClipboardEvent","SyntheticFocusEvent","SyntheticKeyboardEvent","SyntheticDragEvent","SyntheticTouchEvent","SyntheticTransitionEvent","SyntheticWheelEvent","getEventCharCode","topLevelEventsToDispatchConfig","capitalizedEvent","topEvent","onClickListeners","EventConstructor","animationName","elapsedTime","pseudoElement","ClipboardEventInterface","clipboardData","KeyboardEventInterface","normalizeKey","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","translateToKey","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","dataTransfer","TouchEventInterface","touches","targetTouches","changedTouches","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","useFiber","MOD","componentOrElement","Skinner","components","compKeys","addComponent","replaces","mxSkinner","placeHoldersCount","placeHolders","Arr","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","tripletToBase64","isLE","RemoteIndexedDBStoreBackend","_workerScript","_workerApi","_worker","_nextSeq","_startPromise","_ensureStarted","_doCmd","_onWorkerMessage","PARAM_REGEXP","TEXT_REGEXP","TOKEN_REGEXP","QESC_REGEXP","QUOTE_REGEXP","TYPE_REGEXP","qstring","parameters","getHeader","getcontenttype","TIMER_CHECK_PERIOD_MS","_count","_realCallbackKey","_callbackList","setNow","_scheduleRealCallback","runAt","_runCallbacks","callbacksToRun","mid","binarySearch","_indexeddbCryptoStore2","RoomList","_roomEncryption","removeSessionStoreRooms","sessStoreRooms","getAllEndToEndRooms","removeAllEndToEndRooms","getRoomEncryption","undefinedType","logMethods","bindMethod","replaceLoggingMethods","loggerName","methodFactory","defaultMethodFactory","realMethod","Logger","defaultLevel","currentLevel","storageKey","getPersistedLevel","storedLevel","TRACE","INFO","WARN","SILENT","getLevel","levelNum","levelName","persistLevelIfPossible","setDefaultLevel","enableAll","disableAll","initialLevel","defaultLogger","_loggersByName","_log","getLoggers","E2E_PREFIX","KEY_END_TO_END_ACCOUNT","KEY_DEVICE_DATA","KEY_INBOUND_SESSION_PREFIX","KEY_ROOMS_PREFIX","KEY_SESSIONS_NEEDING_BACKUP","keyEndToEndSessions","keyEndToEndInboundGroupSession","keyEndToEndRoomsPrefix","LocalStorageCryptoStore","_MemoryCryptoStore","webStore","getJsonItem","fixedSessions","_getEndToEndSessions","setJsonItem","sessionsNeedingBackup","outgoingRoomKeyRequestsStore","sessionsStore","_db","stateIndex","wantedState","promiseifyTxn","keyReq","_wantedState","getReq","abortWithException","countReq","lastReceivedMessageTs","addReq","sessionGetReq","_mx_abortexception","onabort","_uploadOneTimeKeys","oneTimeKeys","oneTimeJson","getOneTimeKeys","curve25519","uploadKeysRequest","markKeysAsPublished","Crypto","_OutgoingRoomKeyRequestManager2","OlmDevice","DeviceList","clientStore","_clientStore","_checkedForBackup","_sendingBackups","_deviceList","_lastOneTimeKeyCheck","_oneTimeKeyCheckInProgress","_roomEncryptors","_roomDecryptors","_supportedAlgorithms","_deviceKeys","_globalBlacklistUnverifiedDevices","_outgoingRoomKeyRequestManager","_receivedRoomKeyRequests","_receivedRoomKeyRequestCancellations","_processingRoomKeyRequests","_lazyLoadMembers","_roomDeviceTrackingState","_lastNewSessionForced","_maybeUploadOneTimeKeys","maxKeysPerCycle","maxOneTimeKeys","maxNumberOfOneTimeKeys","keyLimit","_oneTimeKeyCount","one_time_key_counts","signed_curve25519","keyCount","uploadLoop","keysThisLoop","generateOneTimeKeys","sessionStoreHasAccount","cryptoStoreHasAccount","myDevices","getEndToEndAccount","pickledAccount","deviceCurve25519Key","getRawStoredDevicesForUser","storeDevicesForUser","saveIfDirty","_checkAndStartKeyBackup","trustInfo","usable","mySigs","sigInfo","sigs","enableLazyLoading","eventEmitter","_onRoomMembership","_onToDeviceEvent","deviceKeys","device_keys","updateOneTimeKeyCount","currentCount","saveDeviceList","verificationStatus","knownStatus","getOlmSessionsForUser","getSessionInfoForDevice","deviceIdKey","getDeviceByIdentityKey","claimedKey","alg","_callee7","inhibitDeviceQuery","existingConfig","storeConfigPromise","AlgClass","_context7","refreshOutdatedDeviceLists","trackMembers","_callee8","_context8","startTrackingDeviceList","ensureOlmSessionsForUsers","_callee9","exportedSessions","_context9","sess","exportInboundGroupSession","first_known_index","_getRoomDecryptor","importRoomKey","_scheduleKeyBackupSend","_callee10","numFailures","_context10","_backupPendingKeys","_callee11","firstKnownIndex","encrypted","forwardedCount","_context11","forwarding_curve25519_key_chain","first_message_index","forwarded_count","is_verified","backupGroupSession","_callee12","keysClaimed","exportFormat","_context12","_ref14","_callee13","numKeysBackedUp","_context13","_x21","_ref15","_callee14","encryptedContent","_context14","_x22","_x23","handleDeviceListChanges","_ref16","_callee15","syncDeviceLists","_context15","oldSyncToken","_evalDeviceListChanges","_x24","_x25","requestRoomKey","sendRoomKeyRequest","andResend","onCryptoEvent","_ref17","_callee16","_context16","_x26","onSyncWillProcess","_ref18","stopTrackingAllDeviceLists","_x27","onSyncCompleted","_ref19","nextSyncToken","lastKnownSyncToken","catchingUp","_processReceivedRoomKeyRequests","_x28","_ref20","_callee17","deviceLists","e2eUserIds","_context17","changed","invalidateUserDeviceList","_getTrackedE2eUsers","stopTrackingDeviceList","_x29","_callee18","_context18","_getTrackedE2eRooms","_onRoomKeyEvent","_onRoomKeyRequestEvent","_onToDeviceBadEncrypted","onRoomKeyEvent","_ref22","_callee19","lastNewSessionForced","requestsToResend","_context19","sendToDevice","getOutgoingSentRoomKeyRequest","_x30","onRoomMembership","IncomingRoomKeyRequest","_req","IncomingRoomKeyRequestCancellation","_callee20","requests","cancellations","_context20","_processReceivedRoomKeyRequest","_processReceivedRoomKeyRequestCancellation","_ref24","_callee21","_device","_context21","reshareKeyWithDevice","hasKeysForKeyRequest","share","shareKeysWithDevice","_x31","_ref25","_x32","decryptors","_ref26","_callee22","_context22","_x33","requesting_device_id","request_id","ROOM_KEY_REQUEST_STATES","OutgoingRoomKeyRequestManager","_sendOutgoingRoomKeyRequestsTimer","_sendOutgoingRoomKeyRequestsRunning","_startTimer","stringifyRequestBody","cancellationTxnId","updatedReq","_sendOutgoingRoomKeyRequestCancellation","_sendOutgoingRoomKeyRequests","_sendOutgoingRoomKeyRequest","stringifyRecipientList","requestMessage","_sendMessageToDevices","contentMap","recip","_initialiseAccount","pickleKey","unpickle","pickle","MAX_PLAINTEXT_LENGTH","checkPayloadLength","payloadString","_pickleKey","_maxOneTimeKeys","_outboundGroupSessionStore","_inboundGroupSessionMessageIndexes","e2eKeys","_migrateFromSessionStore","Account","identity_keys","max_number_of_one_time_keys","get_library_version","ibGroupSessions","numIbSessions","removeEndToEndAccount","numSessions","removeAllEndToEndSessions","getAllEndToEndInboundGroupSessionKeys","removeAllEndToEndInboundGroupSessions","_getAccount","_storeAccount","_getSession","_unpickleSession","Session","_saveSession","pickledSessionInfo","_getUtility","utility","Utility","mark_keys_as_published","numKeys","generate_one_time_keys","theirIdentityKey","theirOneTimeKey","newSessionId","create_outbound","createInboundSession","theirDeviceIdentityKey","messageType","create_inbound_from","remove_one_time_keys","getSessionIdsForDevice","sessionIds","sessionInfos","idxOfBest","thisSessInfo","thisLastReceived","bestSessInfo","bestLastReceived","deviceIdentityKey","sessInfo","hasReceivedMessage","has_received_message","decryptMessage","_this13","matchesSession","_this14","matches_inbound","_saveOutboundGroupSession","pickledSession","_getOutboundGroupSession","pickled","OutboundGroupSession","createOutboundGroupSession","encryptGroupMessage","getOutboundGroupSessionKey","chain_index","message_index","session_key","_unpickleInboundGroupSession","InboundGroupSession","_getInboundGroupSession","_this15","addInboundGroupSession","_this16","existingSession","existingSessionData","import_session","decryptGroupMessage","_this17","plaintext","messageIndexKey","msgInfo","_x34","_x35","_x36","_x37","hasInboundSessionKeys","_this18","_x38","_x39","_x40","getInboundGroupSessionKey","chainIndex","_this19","exportedSession","export_session","senderEd25519Key","sender_claimed_ed25519_key","_x41","_x42","_x43","_x44","messageIndex","sender_claimed_keys","ed25519_verify","OlmEncryption","_sessionPrepared","_prepPromise","OlmDecryption","_ensureSession","claimedKeys","_decryptMessage","intended","our_key","reported_sender","reported_room","decryptionErrors","OutboundSessionInfo","useCount","creationTime","sharedWithDevices","MegolmEncryption","_setupPromise","_outboundSessions","_sessionRotationPeriodMsgs","_sessionRotationPeriodMs","rotation_period_ms","rotation_period_msgs","MegolmDecryption","_pendingEvents","needsRotation","rotationPeriodMsgs","rotationPeriodMs","sessionLifetime","markSharedWithDevice","sharedWithTooManyDevices","devicesInRoom","_ensureOutboundSession","prepareSession","oldSession","shareMap","userDevices","_prepareNewSession","_shareKeyWithDevices","returnSession","_splitUserDeviceMap","devicemap","mapSlices","currentSliceId","entriesInCurrentSlice","devicesToShareWith","sessionResults","_encryptAndSendKeysToDevices","userDeviceMap","obSessionInfo","sentChainIndex","userDeviceMaps","_getDevicesInRoom","_checkForUnknownDevices","payloadJson","isBlacklisting","_addEventToPendingList","_requestKeysForEvent","_removeEventFromPendingList","forwardingKeyChain","ed25519Key","_buildKeyForwardingMessage","_updateStoredDeviceKeysForUser","userStore","userResult","deviceResult","_storeDeviceKeys","signKey","deviceStore","_olmlib2","_deviceinfo2","_devices","_userByIdentityKey","_deviceTrackingStatus","_syncToken","_serialiser","DeviceListUpdateSerialiser","_keyDownloadsInProgressByUser","_dirty","_savePromise","_resolveSavePromise","_savePromiseTime","_saveTimer","shouldDeleteSessionStore","getAllEndToEndDevices","getEndToEndDeviceTrackingStatus","getEndToEndDeviceSyncToken","trackingStatus","idKey","removeEndToEndDeviceData","savePromise","resolveSavePromise","st","usersToDownload","downloadPromise","_doKeyDownload","_getDevicesFromStore","stored","devs","_step4$value","identityKey","_step5$value","_identityKey","_step8$value","_step9$value","_identityKey2","updateDevicesForUsers","finished","deviceList","_downloadInProgress","_keyDownloadsQueuedByUser","_queuedQueryDeferred","_doQueuedQueries","downloadUsers","downloadKeysForUsers","dk","_processQueryResponseForUser","_setRawStoredDevicesForUser","OLM_RECOVERY_KEY_PREFIX","parity","_bs2","recoverykey","PRIVATE_KEY_LENGTH","basex","ALPHABET","ALPHABET_MAP","BASE","LEADER","decodeUnsafe","carry","deriveKey","backupData","DEFAULT_ITERATIONS","subtleCrypto","TextEncoder","keybits","deriveBits","maxInt","tMin","tMax","skew","damp","initialBias","initialN","regexPunycode","regexNonASCII","regexSeparators","not-basic","invalid-input","baseMinusTMin","stringFromCharCode","mapDomain","ucs2decode","ucs2encode","basicToDigit","digitToBasic","flag","adapt","numPoints","firstTime","basic","oldi","baseMinusT","handledCPCount","basicLength","handledCPCountPlusOne","qMinusT","ucs2","toUnicode","maxKeys","kstr","vstr","stringifyPrimitive","ks","EventContext","rank","eventContext","eventMapper","jsonContext","setPaginateToken","addEvents","ourEvent","_ourEventIndex","_paginateTokens","_paginateRequests","getTimeline","getOurEventIndex","getPaginateToken","filter_json","not_types","senders","not_senders","contains_url","_checkFields","literal_keys","actual_value","filter_value","type_prefix","_matches_wildcard","match_func","allowed_values","contains_url_filter","getFilterName","resolveInvitesToProfiles","pollTimeout","_peekRoomId","_currentSyncRequest","_syncState","_syncStateData","_catchingUp","_keepAliveTimer","_connectionReturnedDefer","_notifEvents","_failedSyncCount","_storeIsInvalid","createNewUser","_registerStateListeners","createGroup","_deregisterStateListeners","qps","leaveRooms","_mapSyncResponseToRoomArray","leaveObj","isBrandNewRoom","timelineEvents","_mapSyncEventsFormat","_processRoomEvents","_processEventsForNotifs","roomInitialSync","peekRoom","oldStateEvents","presenceEvent","_resolveInvites","_peekPoll","recoverFromSyncStartupError","savedSyncPromise","keepaliveProm","_startKeepAlives","_updateSyncState","_wasLazyLoadingToggled","lazyLoadMembersBefore","prevClientOptions","checkLazyLoadStatus","_doSyncRequest","savedSyncToken","_sync","_onOnlineBound","_onOnline","savedSync","_syncFromCache","syncEventData","_processSyncResponse","syncOptions","_onSyncError","hasSyncedBefore","_getSyncParams","_getGuestFilter","disablePresence","set_presence","since","_cacheBuster","connDidFail","to_device","toDeviceEvent","_processGroupSyncEntry","inviteObj","joinObj","ephemeralEvents","accountDataEvents","processRoomEvent","notification_count","highlight_count","device_lists","device_one_time_keys_count","_pokeKeepAlive","groupsSection","sectionName","groupInfo","isBrandNew","arrObj","_requestedProfileInfo","inviteEvent","stateEventList","timelineEventList","timelineWasEmpty","_guestRooms","httpOpts","_txnCtr","isLoggedIn","isUsernameAvailable","available","bindThreepids","guestAccessToken","bind_email","bind_msisdn","x_show_msisdn","registerRequest","login_data","loginWithPassword","loginWithSAML2","relayState","relay_state","getCasLoginUrl","redirectUrl","loginWithToken","deactivateAccount","erase","$loginType","fetchRoomEvent","includeMembership","excludeMembership","atEventId","upgradeRoom","newVersion","new_version","$groupId","setGroupProfile","setGroupJoinPolicy","m.join_policy","removeUserFromGroup","$roleId","$categoryId","m.visibility","getJoinedGroups","publicise","redactEvent","m.fully_read","getJoinedRooms","getJoinedRoomMembers","publicRooms","query_params","createAlias","$alias","deleteAlias","resolveRoomAlias","getRoomDirectoryVisibility","setRoomDirectoryVisibility","setRoomDirectoryVisibilityAppService","networkId","$networkId","searchUserDirectory","threePidCreds","deleteThreePid","new_password","setDeviceDetails","$device_id","deleteDevice","deleteMultipleDevices","getPushers","pusher","$kind","$ruleId","setPushRuleActions","queryparams","$deviceId","key_algorithm","queries","getKeyChanges","oldToken","newToken","requestEmailToken","lookupThreePid","getThirdpartyProtocols","getThirdpartyLocation","$protocol","getThirdpartyUser","retryAlgorithm","queueAlgorithm","RETRY_BACKOFF_RATELIMIT","QUEUE_MESSAGES","_queues","_activeQueues","_procFn","_startProcessingQueues","_processQueue","_peekNextEvent","_removeNextEvent","attempts","waitTimeMs","waitTime","retry_after_ms","keyEndToEndDevicesForUser","KEY_END_TO_END_DEVICE_LIST_TRACKING_STATUS","KEY_END_TO_END_DEVICE_SYNC_TOKEN","removeByPrefix","getKeysWithPrefix","keyEndToEndRoom","toRemove","_timelineSet","_eventCount","_windowLimit","windowLimit","TimelineIndex","initialWindowSize","initFields","eventIndex","canPaginate","paginate","makeRequest","requestLimit","pendingPaginate","retreat","advance","excess","unpaginate","startOfTimeline","cappedDelta","_requestCallback","doRequest","_stateUpdatedCallback","stateUpdated","startAuthStage","_completionDeferred","_inputs","_clientSecret","_emailSid","_currentStage","attemptAuth","_startNextAuthStage","_doRequest","poll","getSessionId","getClientSecret","getStageParams","getEmailSid","errorFlows","haveFlows","nextStage","_chooseStage","stageStatus","_chooseFlow","_firstUncompletedStage","haveEmail","haveMsisdn","flowHasEmail","flowHasMsisdn","required_stages","available_flows","stageType","clientConfig","hsVersions","failingClientConfig","isResponse","m.homeserver","FAIL_ERROR","base_url","m.identity_server","PROMPT","_fetchWellKnownObject","FAIL_PROMPT","_sanitizeWellKnownUrl","saferUrl","formats","arrayPrefixGenerators","brackets","indices","toISO","encoder","encodeValuesOnly","serializeDate","skipNulls","strictNullHandling","generateArrayPrefix","allowDots","formatter","objKeys","addQueryPrefix","arrayLimit","parameterLimit","parseKeys","givenKey","segment","cleanRoot","parseArrays","parseObject","ignoreQueryPrefix","tempObj","cleanStr","bracketEqualsPos","parseValues","_SettingsHandler3","DeviceSettingsHandler","_SettingsHandler","_featureNames","_readFeature","_getSettings","_writeFeature","settings","featureName","RoomDeviceSettingsHandler","_read","_getKey","DefaultSettingsHandler","_defaults","RoomAccountSettingsHandler","_content","AccountSettingHandler","preferredValue","RoomSettingsHandler","ConfigSettingsHandler","settingsConfig","sprintf","except","strftime","translations","hasOwnProp","Counterpart","_registry","fallbackLocales","interpolations","normalizedKeys","keepTrailingDot","keyTransformer","generateMissingEntry","getFallbackLocale","getAvailableLocales","availableLocales","setAvailableLocales","getSeparator","setInterpolate","getInterpolate","setKeyTransformer","getKeyTransformer","getMissingEntryGenerator","registerInterpolations","onLocaleChange","addLocaleChangeListener","offLocaleChange","removeLocaleChangeListener","onTranslationNotFound","addTranslationNotFoundListener","offTranslationNotFound","removeTranslationNotFoundListener","addErrorListener","offError","removeErrorListener","fallbackLocale","_normalizeKeys","fallback","_fallback","fallbackKeys","_pluralize","_interpolate","localize","pluralizeFunc","withLocale","withScope","withSeparator","_normalizeKey","normalizedKeyArray","dateOrTime","Translator","toStr","hasOwnConstructor","hasIsPrototypeOf","getProperty","not_string","not_bool","not_type","not_primitive","numeric_arg","not_json","modulo","key_access","index_access","parse_tree","ph","pad_character","pad_length","is_positive","tree_length","param_no","toExponential","pad_char","align","sprintf_format","fmt","sprintf_cache","_fmt","arg_names","SyntaxError","field_list","replacement_field","field_match","sprintf_parse","vsprintf","ap","dateNames","hours12","hour","weekNumber","firstWeekday","wday","weekNum","ordinal","tzString","getTimezoneOffset","counterpart","pluralize","long","_NotificationControllers","_LazyLoadingController2","LEVELS_ROOM_SETTINGS_WITH_ROOM","LEVELS_ACCOUNT_SETTINGS","LEVELS_FEATURE","LEVELS_DEVICE_ONLY_SETTINGS","LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG","feature_pinning","feature_custom_status","feature_lazyloading","feature_keybackup","MessageComposerInput.dontSuggestEmoji","useCompactLayout","hideRedactions","hideJoinLeaves","hideAvatarChanges","hideDisplaynameChanges","hideReadReceipts","showTwelveHourTimestamps","alwaysShowTimestamps","autoplayGifsAndVideos","alwaysShowEncryptionIcons","showRoomRecoveryReminder","enableSyntaxHighlightLanguageDetection","Pill.shouldHidePillAvatar","TextualBody.disableBigEmoji","MessageComposerInput.isRichTextEnabled","MessageComposer.showFormatting","dontSendTypingNotifications","MessageComposerInput.autoReplaceEmoji","VideoView.flipVideoHorizontally","TagPanel.disableTagPanel","webRtcForceTURN","webrtc_audiooutput","webrtc_audioinput","webrtc_videoinput","analyticsOptIn","showCookieBar","blacklistUnverifiedDevices","urlPreviewsEnabled","urlPreviewsEnabled_e2ee","roomColor","notificationsEnabled","NotificationsEnabledController","notificationBodyEnabled","NotificationBodyEnabledController","audioNotificationsEnabled","AudioNotificationsEnabledController","pinMentionedRooms","pinUnreadRooms","enableWidgetScreenshots","PinnedEvents.isOpen","RoomSubList.showEmpty","promptBeforeInviteUnknownUsers","showDeveloperTools","_SettingController5","isMasterRuleEnabled","masterRule","_SettingController","_SettingController2","_SettingController3","shim","getShim","_isDispatching","_isHandled","_isPending","_lastID","_invokeCallback","_startDispatching","_stopDispatching","_pendingPayload","LazyLoadingController","LocalEchoWrapper","cacheRoomId","bySetting","handlerPromise","createSyncAction","createAccountDataAction","createRoomAccountDataAction","createRoomAction","createRoomTagsAction","roomTagsEvent","createRoomTimelineAction","createSelfMembershipAction","createEventDecryptedAction","_matrixClientListenersStop","_addMatrixClientListener","stopListener","feature","rollOutConfig","phasedRollOut","featureConfig","period","chr","bucketCount","userBucket","userMs","enableAt","bucketStr","hashparts","_VectorBasePlatform2","_pendingIpcCalls","_nextIpcCallId","getUpdateCheckStatus","_onIpcReply","onUpdateDownloaded","updateInfo","releaseNotes","currentVersion","Notification","silent","onclick","_ipcCall","feedUrl","platformName","ipcCallId","reply","setNotificationCount","_opt","_orig","_canvas","_img","_lastBadge","_readyCb","_stop","_browser","_animTimeout","_drawTimeout","_doc","_def","textColor","elementId","dataUrl","ff","ie","safari","HTMLElement","clearRect","setIcon","more","beginPath","textAlign","lineTo","quadraticCurveTo","arc","fillStyle","closePath","fillText","rectangle","fillRect","drawVideo","paused","ended","attrname","mergedOpt","getIcon","elm","getLink","toDataURL","fade","none","popFade","slide","revert","animationType","msHidden","webkitHidden","mozHidden","isUp","isLeft","videoElement","imageElement","newImg","webcam","newVideo","oGetUserMedia","msGetUserMedia","runningVersion","permission","requestPermission","cachebuster","_getVersion","pollForUpdate","updateState","appName","ua","UAParser","browserName","getBrowser","osName","getOS","MODEL","VENDOR","MOBILE","TABLET","regexes","extensions","margedRegexes","str1","str2","lowerize","rgx","arrays","maps","oldsafari","1.0","1.2","1.3","2.0","2.0.2","2.0.3","2.0.4","?","amazon","model","Fire Phone","sprint","Evo Shift 4G","HTC","Sprint","os","ME","NT 3.11","NT 4.0","2000","XP","Vista","8.1","RT","cpu","engine","uastring","getResult","rgxmap","getCPU","architecture","getDevice","getEngine","getUA","setUA","BROWSER","MAJOR","CPU","ARCHITECTURE","CONSOLE","SMARTTV","WEARABLE","EMBEDDED","ENGINE","OS","onInitSuccess","onInitFail","olmInitPromise","olm_exports","Module","_scriptDir","currentScript","aa","ba","randomBytes","OLM_OPTIONS","ca","onRuntimeInitialized","_olm_error","_olm_pk_private_key_length","onAbort","thisProgram","quit","preRun","postRun","da","ea","ha","ia","fa","__dirname","readFileSync","readBinary","assert","readbuffer","scriptArgs","readAsync","setWindowTitle","ja","print","printErr","ka","na","oa","f64-rem","debugger","pa","qa","tempI64","tempDouble","ra","sa","ta","va","wa","xa","ALLOC_STACK","ya","za","ma","Ga","Ia","Aa","TextDecoder","Ba","Ca","Da","HEAP8","Int8Array","HEAP16","Int16Array","HEAP32","Int32Array","HEAPU8","HEAPU16","HEAPU32","Uint32Array","HEAPF32","HEAPF64","Float64Array","Ja","TOTAL_STACK","TOTAL_MEMORY","Ka","dynCall_v","dynCall_vi","WebAssembly","Memory","wasmMemory","maximum","La","Ma","Na","Oa","Qa","Ra","Sa","Ta","Ua","Va","I","preloadedImages","preloadedAudios","wasmBinary","memory","asm","usingWasm","monitorRunDependencies","instantiateWasm","ab","instantiateStreaming","asm2wasm","asmPreload","reallocBuffer","grow","eb","wasmTableSize","wasmMaxTableSize","Table","wasmTable","memoryBase","STATIC_BASE","tableBase","Ea","STATIC_BUMP","enlargeMemory","getTotalMemory","abortOnCannotGrowMemory","___setErrNo","___errno_location","_emscripten_memcpy_big","DYNAMICTOP_PTR","STACKTOP","Wa","_free","_malloc","_olm_account","_olm_account_generate_one_time_keys","_olm_account_generate_one_time_keys_random_length","_olm_account_identity_keys","_olm_account_identity_keys_length","_olm_account_last_error","_olm_account_mark_keys_as_published","_olm_account_max_number_of_one_time_keys","_olm_account_one_time_keys","_olm_account_one_time_keys_length","_olm_account_sign","_olm_account_signature_length","_olm_account_size","_olm_clear_account","_olm_clear_inbound_group_session","_olm_clear_outbound_group_session","_olm_clear_pk_decryption","_olm_clear_pk_encryption","_olm_clear_session","_olm_clear_utility","_olm_create_account","_olm_create_account_random_length","_olm_create_inbound_session","_olm_create_inbound_session_from","_olm_create_outbound_session","_olm_create_outbound_session_random_length","_olm_decrypt","_olm_decrypt_max_plaintext_length","_olm_ed25519_verify","_olm_encrypt","_olm_encrypt_message_length","_olm_encrypt_message_type","_olm_encrypt_random_length","_olm_export_inbound_group_session","_olm_export_inbound_group_session_length","_olm_get_library_version","_olm_group_decrypt","_olm_group_decrypt_max_plaintext_length","_olm_group_encrypt","_olm_group_encrypt_message_length","_olm_import_inbound_group_session","_olm_inbound_group_session","_olm_inbound_group_session_first_known_index","_olm_inbound_group_session_id","_olm_inbound_group_session_id_length","_olm_inbound_group_session_is_verified","_olm_inbound_group_session_last_error","_olm_inbound_group_session_size","_olm_init_inbound_group_session","_olm_init_outbound_group_session","_olm_init_outbound_group_session_random_length","_olm_matches_inbound_session","_olm_matches_inbound_session_from","_olm_outbound_group_session","_olm_outbound_group_session_id","_olm_outbound_group_session_id_length","_olm_outbound_group_session_key","_olm_outbound_group_session_key_length","_olm_outbound_group_session_last_error","_olm_outbound_group_session_message_index","_olm_outbound_group_session_size","_olm_pickle_account","_olm_pickle_account_length","_olm_pickle_inbound_group_session","_olm_pickle_inbound_group_session_length","_olm_pickle_outbound_group_session","_olm_pickle_outbound_group_session_length","_olm_pickle_pk_decryption","_olm_pickle_pk_decryption_length","_olm_pickle_session","_olm_pickle_session_length","_olm_pk_ciphertext_length","_olm_pk_decrypt","_olm_pk_decryption","_olm_pk_decryption_last_error","_olm_pk_decryption_size","_olm_pk_encrypt","_olm_pk_encrypt_random_length","_olm_pk_encryption","_olm_pk_encryption_last_error","_olm_pk_encryption_set_recipient_key","_olm_pk_encryption_size","_olm_pk_generate_key","_olm_pk_generate_key_random_length","_olm_pk_get_private_key","_olm_pk_key_from_private","_olm_pk_key_length","_olm_pk_mac_length","_olm_pk_max_plaintext_length","_olm_remove_one_time_keys","_olm_session","_olm_session_has_received_message","_olm_session_id","_olm_session_id_length","_olm_session_last_error","_olm_session_size","_olm_sha256","_olm_sha256_length","_olm_unpickle_account","_olm_unpickle_inbound_group_session","_olm_unpickle_outbound_group_session","_olm_unpickle_pk_decryption","_olm_unpickle_session","_olm_utility","_olm_utility_last_error","_olm_utility_size","stackAlloc","Xa","stackRestore","Ya","stackSave","$a","calledRun","setStatus","Za","preInit","J","bb","noExitRuntime","N","Pa","X","Y","Z","create_inbound","matches_inbound_from","structures$VectorHomePage","views$login$VectorCustomServerDialog","views$login$VectorLoginFooter","views$login$VectorLoginHeader","VectorHomePage","re_whitespace","ElementPrototype","elementCB","defaultOpts","_elementCB","_done","_tagStack","normalizeWhitespace","withStartIndices","withEndIndices","_handleCallback","_createDomElement","withDomLvl1","_addDomElement","lastTag","ignoreWhitespace","getElements","where","getOneElement","recurse","addConditionally","isValidFeed","childs","feedRoot","pubDate","Cbs","readable","nb","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","getOuterHTML","getInnerHTML","entities","booleanAttributes","allowfullscreen","autofocus","ismap","readonly","typemustmatch","unencodedElements","xmp","noembed","noframes","singleTag","cheerio","renderTag","renderDirective","renderComment","renderCdata","renderText","formatAttrs","inverseXML","getInverseObj","xmlReplacer","getInverseReplacer","getInverse","inverseHTML","htmlReplacer","single","re_nonASCII","re_astralSymbols","singleCharReplacer","astralReplacer","re_xmlChars","getStrictDecoder","getReplacer","legacy","sorter","getChildren","getSiblings","getAttributeValue","hasAttrib","replaceElement","currNext","findOneChild","findOne","existsOne","findAll","rootElems","tag_name","tag_type","tag_contains","Checks","getAttribCheck","combineFuncs","getElementsByTagType","removeSubsets","POSITION","comparePos","nodeA","nodeB","sharedParent","aSibling","bSibling","aParents","bParents","uniqueSort","reRegExpChar","reHasRegExpChar","symbolProto","symbolToString","LARGE_ARRAY_SIZE","HASH_UNDEFINED","argsTag","boolTag","dateTag","mapTag","numberTag","regexpTag","setTag","stringTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reFlags","reIsHostCtor","cloneableTags","moduleExports","addMapEntry","pair","addSetEntry","accumulator","initAccum","isHostObject","mapToArray","setToArray","arrayProto","coreJsData","maskSrcKey","objectCreate","nativeIsBuffer","nativeKeys","symbolValueOf","Hash","isArrayLikeObject","assocIndexOf","isFull","initCloneArray","copyArray","isFunc","cloneBuffer","isPrototype","baseCreate","initCloneObject","copySymbols","baseAssign","cloneFunc","cloneArrayBuffer","dataView","cloneDataView","typedArray","cloneTypedArray","cloneMap","cloneRegExp","cloneSet","cloneSymbol","initCloneByTag","getAllKeys","arrayEach","subValue","isMasked","getMapData","HOT_COUNT","HOT_SPAN","typedArrayTags","safeGet","nativeNow","assignMergeValue","baseFor","fromRight","createBaseFor","nativeKeysIn","isProto","baseMerge","mergeFunc","isCommon","isTyped","toPlainObject","baseMergeDeep","lastCalled","stamp","assigner","guard","createAssigner","numberIsNan","arrayUniq","reInt","deepUnique","postfix","intVal","floatVal","density","doesForEachActuallyWork","_processor2","_atRule2","_vendor2","_rule2","_root2","initializer","transformer","processOpts","pluginOpts","_tokenize2","HIGHLIGHT_THEME","at-word","(",")","{","}","getTokenType","_sourceMap2","_fs2","PreviousMap","loadAnnotation","startWith","annotation","loadMap","consumerCache","withContent","decodeInline","fromBase64","prevPath","existsSync","intToCharMap","_sorted","_last","aCallback","aThisArg","aMapping","lineA","lineB","columnA","columnB","generatedPositionAfter","quickSort","aSourceMap","aSourceMapURL","sourceMap","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","_absoluteSources","_sourceMapURL","Mapping","_sections","offsetLine","offsetColumn","generatedOffset","__generatedMappings","_parseMappings","__originalMappings","_charIsMappingSeparator","GENERATED_ORDER","ORIGINAL_ORDER","GREATEST_LOWER_BOUND","LEAST_UPPER_BOUND","aContext","aOrder","_generatedMappings","_originalMappings","allGeneratedPositionsFor","needle","_findSourceIndex","_findMapping","lastColumn","relativeSource","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","cachedSegments","originalMappings","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","computeColumnSpans","nextMapping","lastGeneratedColumn","hasContentsOfAllSources","sc","nullOnMissing","fileUriAbsPath","generatedPositionFor","sectionIndex","generatedPosition","sectionMappings","adjustedMapping","aHaystack","aCompare","recursiveSearch","aLow","aHigh","ary","doQuickSort","randomIntInRange","pivot","REGEX_NEWLINE","isSourceNode","aLine","aColumn","aChunks","sourceContents","fromStringWithSourceMap","aGeneratedCode","aRelativePath","remainingLines","remainingLinesIndex","shiftNextLine","getNextLine","lastGeneratedLine","lastMapping","addMappingWithCode","aChunk","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","walkSourceContents","toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent","MapGenerator","mapOpts","previousMaps","isSourcesContent","clearAnnotation","setSourcesContent","already","applyPrevMaps","isAnnotation","toBase64","addAnnotation","outputFile","eol","generateMap","generateString","sourcePath","_warning2","Result","createTokenizer","tokenizer","freeSemicolon","emptyRule","endFile","bracket","unclosedBracket","unknownWord","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","precheckMissedSemicolon","stringFrom","spacesFromEnd","checkMissedSemicolon","unnamedAtrule","unexpectedClose","unclosedBlock","lastTokenType","doubleColon","founded","unprefixed","DEFAULT_LOGO_URI","_BottomLeftMenu2","_CompatibilityPage2","_ContextualMenu2","_CreateRoom2","_FilePanel2","_GroupView2","_HomePage2","_InteractiveAuth2","_LeftPanel2","_LoggedInView2","_LoginBox2","_MatrixChat2","_MessagePanel2","_MyGroups2","_NotificationPanel2","_RightPanel2","_RoomDirectory2","_RoomStatusBar2","_RoomSubList2","_RoomView2","_ScrollPanel2","_SearchBox2","_TagPanel2","_TimelinePanel2","_UploadBar2","_UserSettings2","_ViewSource2","_ForgotPassword2","_LanguageSelector2","_Login2","_PostRegistration2","_Registration2","_BaseAvatar2","_GroupAvatar2","_MemberStatusMessageAvatar2","_RoomAvatar2","_GenericElementContextMenu2","_GenericTextContextMenu2","_GroupInviteTileContextMenu2","_MessageContextMenu2","_RoomTileContextMenu2","_StatusMessageContextMenu2","_TagTileContextMenu2","_CreateRoomButton2","_Presets2","_RoomAlias2","_AddressPickerDialog2","_AskInviteAnywayDialog2","_BaseDialog2","_BugReportDialog2","_ChangelogDialog2","_ChatCreateOrReuseDialog2","_ConfirmRedactDialog2","_ConfirmUserActionDialog2","_CreateGroupDialog2","_CreateRoomDialog2","_CryptoStoreTooNewDialog2","_DeactivateAccountDialog2","_DeviceVerifyDialog2","_DevtoolsDialog2","_InteractiveAuthDialog2","_KeyShareDialog2","_LazyLoadingDisabledDialog2","_LazyLoadingResyncDialog2","_QuestionDialog2","_RoomUpgradeDialog2","_SessionRestoreErrorDialog2","_SetEmailDialog2","_SetMxIdDialog2","_SetPasswordDialog2","_ShareDialog2","_TextInputDialog2","_UnknownDeviceDialog2","_RestoreKeyBackupDialog2","_NetworkDropdown2","_ActionButton2","_AddressSelector2","_AddressTile2","_CreateRoomButton4","_DNDTagTile2","_DeviceVerifyButtons2","_DialogButtons2","_DirectorySearchBox2","_Dropdown2","_EditableItemList2","_EditableText2","_EditableTextContainer2","_EmojiText2","_Flair2","_GeminiScrollbarWrapper2","_GroupsButton2","_HomeButton2","_ImageView2","_InlineSpinner2","_LanguageDropdown2","_ManageIntegsButton2","_MemberEventListSummary2","_PersistedElement2","_PersistentApp2","_Pill2","_PowerSelector2","_ProgressBar2","_RoomDirectoryButton2","_SettingsButton2","_SettingsFlag2","_Spinner2","_StartChatButton2","_SyntaxHighlight2","_TagTile2","_ToolTipButton2","_TruncatedList2","_UserSelector2","_CookieBar2","_MatrixToolbar2","_NewVersionBar2","_PasswordNagBar2","_ServerLimitBar2","_UpdateCheckBar2","_GroupInviteTile2","_GroupMemberInfo2","_GroupMemberList2","_GroupMemberTile2","_GroupPublicityToggle2","_GroupRoomInfo2","_GroupRoomList2","_GroupRoomTile2","_GroupTile2","_GroupUserSettings2","_CaptchaForm2","_CountryDropdown2","_CustomServerDialog2","_InteractiveAuthEntryComponents2","_LoginFooter2","_LoginHeader2","_LoginPage2","_PasswordLogin2","_RegistrationForm2","_ServerConfig2","_DateSeparator2","_MAudioBody2","_MImageBody2","_MStickerBody2","_MVideoBody2","_MessageTimestamp2","_RoomAvatarEvent2","_RoomCreate2","_SenderProfile2","_TextualBody2","_TextualEvent2","_UnknownBody2","_AliasSettings2","_ColorSettings2","_RelatedGroupSettings2","_UrlPreviewSettings2","_AppsDrawer2","_Autocomplete2","_AuxPanel2","_DNDRoomTile2","_EntityTile2","_EventTile2","_ForwardMessage2","_LinkPreviewWidget2","_MemberDeviceInfo2","_MemberInfo2","_MemberList2","_MemberTile2","_MessageComposer2","_MessageComposerInput2","_PinnedEventTile2","_PinnedEventsPanel2","_PresenceLabel2","_ReadReceiptMarker2","_ReplyPreview2","_RoomDetailList2","_RoomDetailRow2","_RoomDropTarget2","_RoomHeader2","_RoomNameEditor2","_RoomPreviewBar2","_RoomRecoveryReminder2","_RoomSettings2","_RoomTile2","_RoomTooltip2","_RoomTopicEditor2","_RoomUpgradeWarningBar2","_SearchBar2","_SearchResultTile2","_SearchableEntityList2","_SimpleRoomHeader2","_Stickerpicker2","_TopUnreadMessagesBar2","_UserTile2","_AddPhoneNumber2","_ChangeAvatar2","_ChangeDisplayName2","_ChangePassword2","_DevicesPanel2","_DevicesPanelEntry2","_EnableNotificationsButton2","_IntegrationsManager2","_KeyBackupPanel2","_Notifications2","_CallPreview2","_CallView2","_IncomingCallBox2","_VideoFeed2","_VideoView2","directoryHover","roomsHover","homeHover","peopleHover","settingsHover","_dispatcherRef","_peopleButton","_directoryButton","_createRoomButton","_lastCallouts","onDirectoryClick","onDirectoryMouseEnter","onDirectoryMouseLeave","onRoomsClick","onRoomsMouseEnter","onRoomsMouseLeave","onHomeClick","onHomeMouseEnter","onHomeMouseLeave","onPeopleClick","onPeopleMouseEnter","onPeopleMouseLeave","onSettingsClick","onSettingsMouseEnter","onSettingsMouseLeave","calloutElement","lastCallout","getLabel","_collectPeopleButton","_collectDirectoryButton","_collectCreateRoomButton","HomeButton","StartChatButton","RoomDirectoryButton","CreateRoomButton","SettingsButton","GroupsButton","groupsButton","chromeLink","firefoxLink","safariLink","operaLink","PresetValues","onRoomCreated","collapsedRhs","phases","CREATING","CREATED","error_string","is_private","share_history","default_preset","room_name","invited_users","onCreateRoom","getAliasLocalpart","room_alias_name","getPreset","presets","name_textbox","getTopic","getInvitedUsers","user_selector","getUserIds","onPresetChanged","onPrivateChanged","onShareHistoryChanged","onTopicChange","onNameChange","onInviteChanged","onAliasChanged","onEncryptChanged","curr_phase","error_box","RoomAlias","Presets","UserSelector","SimpleRoomHeader","selected_users","FilePanel","updateTimelineSet","noRoom","TimelinePanel","manageReadReceipts","manageReadMarkers","_HtmlUtils","_GroupAddressPicker","LONG_DESC_PLACEHOLDER","RoomSummaryType","UserSummaryType","summaryInfo","role_id","CategoryRoomList","editing","onAddRoomsToSummaryClicked","addButton","roomNodes","FeaturedRoom","catHeader","onDeleteClicked","oobData","permalink","roomNameNode","deleteButton","RoleUserList","onAddUsersClicked","shouldOmitSelf","userNodes","FeaturedUser","roleHeader","userNameNode","groupIsNew","groupStore","isGroupPublicised","isUserPrivileged","groupRooms","groupRoomsLoading","saving","uploadingAvatar","avatarChanged","membershipBusy","publicityBusy","inviterProfile","_onGroupMyMembership","_changeAvatarComponent","_initGroupStore","_closeSettings","firstInit","_fetchInviterProfile","registerListener","onGroupStoreUpdated","willDoOnboarding","errorGroupId","deferred_action","getSummary","summaryLoading","isStateReady","getGroupPublicity","isUserMember","getGroupMembers","inviterProfileBusy","_onShowRhsClick","profileForm","joinableForm","policyType","is_openly_joinable","sideDisabled","_onShareClick","ShareDialog","_onCancelClick","_onNameChange","newProfileForm","_onShortDescChange","_onLongDescChange","long_description","_onAvatarSelected","files","_onJoinableChange","_onSaveClick","_saveGroup","_onAcceptInviteClick","_onRejectInviteClick","_onJoinClick","_leaveGroupWarnings","_onLeaveClick","groupName","_onAddRoomsClick","_getGroupSection","groupSettingsSectionClasses","mx_GroupView_group","mx_GroupView_group_disabled","changeDelayWarning","bold1","bold2","_getJoinableNode","_getLongDescriptionNode","_getRoomsNode","RoomDetailList","ToolTipButton","roomsHelpNode","helpText","addRoomRow","roomDetailListClassName","mx_fadable","mx_fadable_faded","_getFeaturedRoomsNode","defaultCategoryRooms","categoryRooms","rooms_section","category_id","defaultCategoryNode","categoryRoomNodes","catId","categories","_getFeaturedUsersNode","noRoleUsers","roleUsers","users_section","noRoleNode","roleUserNodes","roles","_getMembershipSection","httpInviterAvatar","inviterName","membershipContainerExtraClasses","membershipButtonExtraClasses","membershipButtonTooltip","membershipButtonText","membershipButtonOnClick","mx_GroupView_leaveButton","mx_RoomHeader_textButton_danger","membershipButtonClasses","membershipContainerClasses","InlineSpinner","groupJoinableLoading","groupDescEditingClasses","mx_GroupView_groupDesc","mx_GroupView_groupDesc_disabled","GroupAvatar","avatarNode","nameNode","shortDescNode","rightButtons","avatarImage","_GroupAvatar","groupAvatarUrl","EditableText","placeholderClassName","blurToCancel","onValueChanged","onGroupHeaderItemClick","headerClasses","mx_GroupView_header","mx_GroupView_header_view","mx_GroupView_header_isUserMember","extraText","ipRegex","isIp","v4","v6","v6seg","ip","basePropertyOf","noHighlightRe","languagePrefixRe","fixMarkupRe","spanEndTag","tabReplace","useBR","testRe","lexeme","isNotHighlighted","inherit","nodeStream","_nodeStream","compileLanguage","reStr","langRe","case_insensitive","compileMode","compiled","keywords","beginKeywords","compiled_keywords","kw","lexemesRe","lexemes","beginRe","endSameAsBegin","endsWithParent","endRe","terminator_end","illegal","illegalRe","relevance","variants","cached_variants","variant","expand_mode","starts","terminators","ignore_illegals","escapeRe","keywordMatch","match_str","buildSpan","classname","insideSpan","leaveOpen","noPrefix","openSpan","closeSpan","processBuffer","subLanguage","mode_buffer","continuations","highlightAuto","processSubLanguage","keyword_match","last_index","processKeywords","startNewMode","processLexeme","new_mode","subMode","excludeBegin","returnBegin","end_mode","endOfMode","endsParent","returnEnd","excludeEnd","isIllegal","languageSubset","second_best","autoDetection","fixMarkup","originalStream","resultNode","blockLanguage","nodeStack","selectStream","mergeStreams","prevClassName","currentLang","resultLang","buildClassName","initHighlighting","disableAutodetect","configure","user_options","initHighlightingOnLoad","listLanguages","IDENT_RE","UNDERSCORE_IDENT_RE","NUMBER_RE","C_NUMBER_RE","BINARY_NUMBER_RE","RE_STARTERS_RE","BACKSLASH_ESCAPE","APOS_STRING_MODE","QUOTE_STRING_MODE","PHRASAL_WORDS_MODE","COMMENT","C_LINE_COMMENT_MODE","C_BLOCK_COMMENT_MODE","HASH_COMMENT_MODE","NUMBER_MODE","C_NUMBER_MODE","BINARY_NUMBER_MODE","CSS_NUMBER_MODE","REGEXP_MODE","TITLE_MODE","UNDERSCORE_TITLE_MODE","METHOD_GUARD","KEYWORD","v7_keywords","LITERAL","NUMBERS","STRINGS","DATE","COMMENTS","keyword","built_in","v7_system_constants","v8_system_sets_of_values","v8_shared_object","literal","meta-keyword","v7_meta_keywords","commentMode","ruleDeclarationMode","AS3_REST_ARG_MODE","ID_REGEX","VAR_DECLS","builtInTypeMode","objectHandleMode","genericMode","NUMBER","nomarkup","STRING","PARAMS","COMMENT_MODE_1","KEYWORDS","SUBST","TEMPLATE_STRING","PARAMS_CONTAINS","CPP_PRIMITIVE_TYPES","PREPROCESSOR","FUNCTION_TITLE","CPP_KEYWORDS","EXPRESSION_CONTAINS","preprocessor","CPP","TAG_INTERNALS","BACKTICK_ESCAPE","VARIABLE","VAR","QUOTE_STRING","COMMENT_MODES","CHAR_STRING","PROCEDURE","OBJECT","EXPRESSIONS","SYMBOL_RE","HINT","HINT_COL","LIST","BODY","builtin-name","DEFAULT_CONTAINS","JS_IDENT_RE","TITLE","COMMANDS","NUM_SUFFIX","CRYSTAL_METHOD_RE","CRYSTAL_KEYWORDS","EXPANSION","recursiveParen","CRYSTAL_DEFAULT_CONTAINS","VERBATIM_STRING","VERBATIM_STRING_NO_LF","SUBST_NO_LF","INTERPOLATED_STRING","INTERPOLATED_VERBATIM_STRING","INTERPOLATED_VERBATIM_STRING_NO_LF","TYPE_IDENT_RE","RULE","integer_re","escape_sequence_re","D_INTEGER_MODE","D_FLOAT_MODE","D_CHARACTER_MODE","D_STRING_MODE","D_NESTING_COMMENT_MODE","DIRECTIVE","CLASS","FUNCTION","FILTER","DTS_REFERENCE","DTS_KEYWORD","DTS_LABEL","DTS_CELL_PROPERTY","DTS_NODE","ELIXIR_IDENT_RE","ELIXIR_KEYWORDS","ELIXIR_DEFAULT_CONTAINS","CONSTRUCTOR","RUBY_METHOD_RE","RUBY_KEYWORDS","YARDOCTAG","IRB_OBJECT","RUBY_DEFAULT_CONTAINS","IRB_DEFAULT","BASIC_ATOM_RE","FUNCTION_NAME_RE","ERLANG_RESERVED","NAMED_FUN","FUNCTION_CALL","TUPLE","VAR1","VAR2","RECORD_ACCESS","BLOCK_STATEMENTS","BASIC_MODES","METHOD","TYPEPARAM","built-in","SYMBOLS","QSTR","ASSIGNMENT","DESCTEXT","PARSE_PARAMS","GCODE_CODE","GO_KEYWORDS","BUILT_INS","PRAGMA","TAG_INNARDS","DOCTAGS","CONSTANTS","METHODS","VARIABLES","containts","FUNCTION_NAME_IDENT_RE","JAVA_NUMBER_MODE","PARAMSBLOCK","LITERALS","VALUE_CONTAINER","ARRAY","VARIABLE_NAME_RE","INTERPOLATION","INTERPOLATED_VARIABLE","COMMAND","MACROCALL","LABEL","ANNOTATION_USE_SITE","ANNOTATION","KOTLIN_NUMBER_MODE","LASSO_CLOSE_RE","LASSO_KEYWORDS","HTML_COMMENT","LASSO_NOPROCESS","LASSO_START","LASSO_DATAMEMBER","LASSO_CODE","LASSO_IDENT_RE","INTERP_IDENT_RE","RULES","VALUE","STRING_MODE","IDENT_MODE","PARENS_MODE","VALUE_WITH_RULESETS","MIXIN_GUARD_MODE","RULE_MODE","AT_RULE_MODE","VAR_RULE_MODE","SELECTOR_MODE","LISP_IDENT_RE","LISP_SIMPLE_NUMBER_RE","IDENT","MEC","QUOTED","QUOTED_ATOM","TITLE1","TITLE2","SUBST_SIMPLE","LSL_STRINGS","LSL_NUMBERS","LONG_BRACKETS","FUNC","VAR_ASSIG","TARGET","TRANSPOSE","ATOM","PERL_KEYWORDS","STRING_CONTAINS","PERL_DEFAULT_CONTAINS","NIX_KEYWORDS","ANTIQUOTE","DEFINES","LANGUAGES","LEXEMES","CLASS_KEYWORDS","SPECIAL_VARS","FUNCTIONS","OXYGENE_KEYWORDS","CURLY_COMMENT","PAREN_COMMENT","CURLY_SUBCOMMENT","COMMENT_MODE","TYPES_RE","FUNCTIONS_RE","SQL_KW","SQL_BI","SINGLE_QUOTE_CHAR_MODE","TYPE_NAME","PRIMED_NAME","PS_COMMENT","PARENTED","LINE_COMMENT","BACKTICK_STRING","WS0","DELIM","KEY_OTHER","DELIM_AND_VALUE","QML_IDENT_RE","ID_ID","QML_ATTRIBUTE","QML_OBJECT","RE_IDENT","RE_MODULE_IDENT","RE_OPERATOR","ops","orReValues","RE_OPERATOR_SPACED","RE_NUMBER","OPERATOR_MODE","LIST_CONTENTS_MODES","MODULE_ACCESS_CONTENTS","PARAMS_CONTENTS","FUNCTION_BLOCK_MODE","CONSTRUCTOR_MODE","PATTERN_MATCH_BLOCK_MODE","MODULE_ACCESS_MODE","IDENTIFIER","PROPERTY","STATEMENTS","APOS_STRING","BUILTINS","SCHEME_IDENT_RE","SCHEME_SIMPLE_NUMBER_RE","QUOTED_IDENT","QUOTED_LIST","COMMON_CONTAINS","HEXCOLOR","smali_instr_low_prio","CHAR","VAR_IDENT_RE","selector-tag","HEX_COLOR","SWIFT_KEYWORDS","BLOCK_COMMENT","keyName","TPID","TPLABEL","FUNCTION_NAMES","TAGS","DECORATOR","ARGS","XL_KEYWORDS","DOUBLE_QUOTE_TEXT","IMPORT","FUNCTION_DEFINITION","CONTAINS","_InteractiveAuthEntryComponents","onAuthFinished","continueIsManaged","authStage","stageErrorText","submitButtonEnabled","_authLogic","_authStateUpdated","_intervalId","stageComponent","oldStage","_setFocus","makeRequestPromise","_submitAuthDict","_renderCurrentStage","StageComponent","_onAuthStageFailed","_setEmailSid","_VectorConferenceHandler2","LeftPanel","searchFilter","focusedElement","_onFocus","_onBlur","_onKeyDown","handled","_onMoveFocus","descending","lastElementChild","firstElementChild","previousElementSibling","nextElementSibling","focusedDescending","onHideClick","onSearch","collectRoomList","TagPanel","BottomLeftMenu","CallPreview","SearchBox","topBox","tagPanelEnabled","tagPanel","containerClasses","mx_LeftPanel_container_collapsed","mx_LeftPanel_container_hasTagPanel","onFocus","_reactBeautifulDnd","_PageTypes2","_CallMediaHandler2","_SessionStore2","_TagOrderActions2","_RoomListActions2","LoggedInView","page_type","onUserSettingsClose","onRegistered","authCache","lastUpdate","serverNoticeEvents","_sessionStoreToken","_setStateFromSessionStore","_updateServerNoticeEvents","onSync","canResetTimelineInRoom","roomView","canResetTimeline","userHasGeneratedPassword","getCachedPassword","oldSyncState","oldErrCode","syncErrorData","newErrCode","roomLists","pinStateEvent","pinnedEventIds","ctrlCmdOnly","_onScrollKeyPressed","handleScrollKey","roomDirectory","_onDragEnd","dest","_onRoomTileEndDrag","prevTag","_onMouseDown","leftDisabled","rightDisabled","targetClasses","_onMouseUp","RightPanel","MatrixToolbar","CookieBar","NewVersionBar","UpdateCheckBar","PasswordNagBar","ServerLimitBar","page_element","right_panel","autoJoin","thirdPartyInvite","roomOobData","eventPixelOffset","currentRoomId","middleDisabled","collapseRhs","onClose","onCloseAllSettings","brand","referralBaseUrl","teamServerConfig","teamServerURL","welcomePageUrl","currentGroupId","currentGroupIsNew","usageLimitEvent","topBar","policyUrl","hasNewVersion","newVersionReleaseNotes","checkingForUpdate","bodyClasses","hideToSRUsers","onMouseUp","DragDropContext","onDragEnd","collapseLhs","_DragDropContext$chil","_createStore2","_fireHooks2","_dimensionMarshal2","_styleMarshal2","_canStartDrag2","_contextKeys","canLift","dimensionMarshal","styleMarshal","styleContext","publishDraggables","publishDroppables","updateDroppableScroll","updateDroppableIsEnabled","previousValue","hooks","onDragStart","onPhaseChange","mount","unmount","_redux","_reduxThunk2","_reducer2","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","originalModule","createThunkMiddleware","extraArgument","thunk","withExtraArgument","_extends5","_noImpact","_getDragImpact2","_moveToNextIndex2","_moveCrossAxis2","_dimension","noDimensions","canPublishDimension","clientSelection","currentWindowScroll","newImpact","pageCenter","droppables","updateStateAfterDimensionChange","additions","_dimensions","_additions","_newState","_action$payload","_windowScroll","_impact","_action$payload2","_id2","_newState2","_action$payload3","_id3","updatedDroppableDimension","_action$payload4","_windowScroll2","_windowScroll3","isMovingForward","_result","_impact2","_page","_client2","_current","_descriptor","_home","_page2","_client3","_action$payload5","_impact3","_result3","_getDroppableOver2","_getDraggablesInsideDroppable2","_inHomeList2","_inForeignList2","previousDroppableOverId","destinationId","isWithinHomeDroppable","insideDestination","insideHome","_isPositionInFrame2","getRequiredGrowth","existingSpace","requiredSpace","endOfDraggables","getWithGrowth","growth","maybe","withPlaceholder","isHome","wasOver","requiredGrowth","isClippedByFrame","subjectWithGrowth","getClippedAreaWithPlaceholder","crossAxisEnd","crossAxisSize","_getDisplacement2","_getViewport2","originalCenter","homeScrollDiff","currentCenter","destinationScrollDiff","isInHomeList","_isVisibleInNewLocation2","_moveToEdge2","getIndex","insideDroppable","currentIndex","proposedIndex","isMovingTowardStart","destinationDisplacement","insideForeignDroppable","movingRelativeTo","isMovingPastLastIndex","movingRelativeToDisplacement","_getBestCrossAxisDroppable2","_getClosestDraggable2","_moveToNewDroppable2","getSafeClipped","sourceClipped","isBetweenSourceClipped","targetClipped","isBetweenDestinationClipped","isWithinDroppable","distanceToA","distanceToB","_toHomeList2","_toForeignList2","originalIndex","isMovingPastOriginalIndex","modified","isGoingBeforeTarget","currentPhase","previousPhase","_current$drop$result","_source2","isCollecting","stopCollecting","setFrameId","processSecondaryDimensions","toBeCollected","draggablesToBeCollected","droppablesToBeCollected","getToBeCollected","collectFrameId","toBePublishedBuffer","getDimension","publishFrameId","toBePublished","watchScroll","unwatchScroll","registerDraggable","unregisterDraggable","registerDroppable","droppableCallbacks","unregisterDroppable","draggableEntry","homeEntry","processPrimaryDimensions","_getStyles2","setStyle","proposed","dropAnimating","userCancel","resting","dragging","querySelector","_animation","dragHandleSelector","dragHandleStyles","grabCursor","blockPointerEvents","draggableStyles","animateMovement","homeCenter","draggablesInDestination","destinationFragment","_connectedDroppable","makeSelector","_reactRedux","_reselect","_selectors","_droppable2","getIsDraggingOver","getMapProps","isDraggingOver","phaseSelector","dragSelector","draggingDraggableSelector","pendingDropSelector","isDropDisabled","_isDraggingOver","typeOf","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isValidElementType","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","_react","_droppableDimensionPublisher2","_placeholder2","Droppable","setRef","ignoreContainerClipping","provided","innerRef","targetRef","_droppableDimensionPublisher","_getWindowScrollPosition2","_getClosestScrollable2","DroppableDimensionPublisher","closestScrollable","isWatchingScroll","publishedDescriptor","getScrollOffset","memoizedUpdateScroll","scheduleScrollUpdate","onClosestScroll","getMemoizedDescriptor","unpublish","publish","_this$props","marginRight","paddingRight","paddingLeft","isElementScrollable","isScrollable","overflowY","overflowX","getClosestScrollable","Placeholder","_PureComponent","_placeholder$margin","_placeholder$withoutM","boxSizing","_connectedDraggable","_draggable2","defaultMapProps","isDropAnimating","shouldAnimateDragMovement","shouldAnimateDisplacement","memoizedOffset","getNotDraggingProps","getDraggingProps","getOutOfTheWayMovement","movingOutOfTheWay","zIndexOptions","_Draggable$contextTyp","_invariant2","_draggableDimensionPublisher2","_moveable2","_dragHandle2","_getCenterPosition2","Draggable","onMoveEnd","onLift","throwIfCannotDrag","_this$props2","onDrop","getDraggableRef","getDraggingStyle","movementStyle","_dimension$client$wit","getNotDraggingStyle","getProvided","dragHandleProps","useDraggingStyle","draggableStyle","draggableProps","data-react-beautiful-dnd-draggable","getSnapshot","getSpeed","isDragDisabled","disableInteractiveElementBlocking","canDragInteractiveElements","_draggableDimensionPublisher","DraggableDimensionPublisher","_moveable","_reactMotion","isAtOrigin","Movable","onRest","getFinal","final","isNotMoving","Motion","defaultStyle","getStyle","_interopRequire","_Motion","_StaggeredMotion","StaggeredMotion","_TransitionMotion","TransitionMotion","_spring","_presets","_stripStyle","stripStyle","_reorderKeys","reorderKeys","_mapToZero2","_stripStyle2","_stepper4","_performanceNow2","_raf2","_shouldStopAnimation2","msPerFrame","wasAnimating","animationID","prevTime","accumulatedTime","unreadPropStyle","clearUnreadPropStyle","destStyle","lastIdealStyle","lastIdealVelocity","startAnimationIfNecessary","propsStyle","currentTime","currentFrameCompletion","framesToCatchUp","newLastIdealStyle","newLastIdealVelocity","newCurrentStyle","newCurrentVelocity","newLastIdealStyleValue","newLastIdealVelocityValue","_stepper","_stepper2","nextIdealX","nextIdealV","defaultState","moduleLoadTime","nodeLoadTime","upTime","uptime","unreadPropStyles","currentStyles","currentVelocities","lastIdealStyles","lastIdealVelocities","someDirty","destStyles","shouldStopAnimationAll","newLastIdealStyles","newLastIdealVelocities","newCurrentStyles","newCurrentVelocities","defaultStyles","_mergeDiff2","rehydrateStyles","mergedPropsStyles","plainStyles","cUnreadPropStyles","mergedPropsStyle","mergeAndSync","willEnter","willLeave","didLeave","oldMergedPropsStyles","oldCurrentStyles","oldCurrentVelocities","oldLastIdealStyles","oldLastIdealVelocities","newMergedPropsStyles","oldMergedPropsStyle","leavingStyle","newMergedPropsStyleCell","foundOldIndex","plainStyle","unmounting","_mergeAndSync","propStyles","_mergeAndSync2","newMergedPropsStyle","styleThatEntered","defaultStyleCell","_mergeAndSync3","hydratedStyles","onRemove","prevKeyIndex","nextKeyIndex","nextOrderA","nextOrderB","prevOrderA","prevOrderB","defaultConfig","_presets2","_dragHandle","_DragHandle$contextTy","_shouldAllowDraggingFromTarget2","_createMouseSensor2","_createKeyboardSensor2","_createTouchSensor2","getFalse","DragHandle","mouseSensor","isCapturing","keyboardSensor","onTouchStart","touchSensor","onTouchMove","canStartCapturing","isAnySensorCapturing","isAnySensorDragging","sensors","sensor","data-react-beautiful-dnd-drag-handle","wasCapturing","wasDragging","kill","interactiveTagNames","isContentEditable","_createScheduler2","_isSloppyClickThresholdExceeded2","_getWindowFromRef2","_blockStandardKeyEvents2","preventClick","stopDragging","unbindWindowEvents","stopPendingDrag","windowBindings","mousemove","startDragging","mouseup","mousedown","keydown","resize","webkitmouseforcechanged","webkitForce","MouseEvent","WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN","forcePressThreshold","eventKeys","bindWindowEvents","eventKey","startPendingDrag","sloppyClickThreshold","executeBasedOnDirection","timeForLongPress","hasMoved","longPressTimerId","touchmove","_event$touches$","touchend","touchcancel","touchstart","orientationchange","contextmenu","touchforcechange","touch","DEFAULT_OPTIONS","withProps","getStores","calculateState","enforceInterface","realOptions","FluxContainerClass","_Base","setChanged","_fluxContainerSubscriptions","_fluxContainerStoreGroup","FluxContainerBase","_FluxContainerBase","PureFluxContainerClass","createPureContainer","bHasOwnProperty","FluxMapStore","_FluxReduceStore","newKeys","oldKey","fbemitter","EventSubscriptionVendor","BaseEventEmitter","_subscriber","_currentSubscription","addSubscription","removeCurrentListener","removeAllSubscriptions","removeSubscription","subscriptions","getSubscriptionsForType","__emitToSubscription","EventSubscription","_subscriptionsForType","subscriptionsForType","_fluxMixinSubscriptions","_fluxMixinStoreGroup","arrayIncludesWith","computed","seenIndex","hashClear","hashDelete","hashGet","hashHas","hashSet","baseIndexOf","baseFindIndex","baseIsNaN","strictIndexOf","loginButton","_DecryptionFailureTracker","RoomListSorter","_RoomInvite","Lifecycle","_createRoom3","_KeyRequestHandler2","_ErrorUtils","VIEWS","LOGIN","REGISTER","POST_REGISTRATION","FORGOT_PASSWORD","LOGGING_IN","LOGGED_IN","ONBOARDING_FLOW_STARTERS","registrationUrl","AuxPanel","RoomSettings","viewUserId","register_client_secret","register_session_id","register_hs_url","register_is_url","register_id_sid","defaultServerName","default_server_name","defaultHsUrl","default_hs_url","defaultIsUrl","default_is_url","defaultServerDiscoveryError","syncError","getDefaultServerName","getCurrentHsUrl","getDefaultHsUrl","defaultToMatrixDotOrg","getFallbackHsUrl","fallback_hs_url","getCurrentIsUrl","getDefaultIsUrl","firstSyncComplete","firstSyncPromise","sync_timeline_limit","routedTeamToken","teamTokenMap","teamName","sessionStorage","_teamToken","loadingDefaultHomeserver","_tryDiscoverDefaultHomeserver","paramHs","paramIs","_screenAfterLogin","_windowWidth","handleResize","_pageChanging","loggedIn","firstScreen","loadedSession","_showScreenAfterLogin","shouldTrackPageChange","startPageChangeTimer","durationMs","stopPageChangeTimer","trackPageChange","measure","clearMarks","getEntriesByName","setStateForNewView","_startRegistration","notifyNewScreen","_leaveRoom","confirm","_viewNextRoom","_viewIndexedRoom","_setPage","_viewGroup","_viewHome","_createRoom","CreateGroupDialog","_setMxId","_chatCreateOrReuse","showStartChatInviteDialog","showRoomInviteDialog","_onSetTheme","_onLoggedIn","_onLoggedOut","_onWillStartClient","_onClientStarted","onVersion","onSendEvent","pageType","roomIndexDelta","mostRecentActivityFirst","via_servers","presentedId","theAlias","group_is_new","SetMxIdDialog","submitted","onDifferentServerClicked","CreateRoomDialog","shouldCreate","noFederate","creation_content","m.federate","goHomeOnCancel","ChatCreateOrReuseDialog","welcomeUserId","onNewDMClick","onExistingRoomSelected","_leaveRoomWarnings","joinRules","roomToLeave","shouldLeave","styleElements","switchTheme","cssLoaded","_is_registered","_setPageSubtitle","_loggedInView","updateStatusIndicator","consentUri","homeserverDomain","dft","DecryptionFailureTracker","eventDecrypted","krh","handleKeyRequest","handleKeyRequestCancellation","blacklistEnabled","createTrackedDialogAsync","segments","roomString","signurl","invitedEmail","room_avatar_url","inviter_name","via","onLogoutClick","onForgotPasswordClick","onReturnToAppClick","onFinishPostRegistration","latest","notifCount","setErrorStatus","onServerConfigChange","discovery","findClientConfig","_makeRegistrationUrl","_collectLoggedInView","PostRegistration","onComplete","isStoreError","_Spinner","errorBox","Registration","idSid","customHsUrl","customIsUrl","onLoggedIn","ForgotPassword","DecryptionFailure","_extends4","failedEventId","errorCodeMapFn","failures","failureCounts","trackedEventHashMap","checkInterval","trackInterval","_trackDecryptionFailure","_mapErrorCode","addDecryptionFailure","removeDecryptionFailuresForEvent","checkFailures","CHECK_INTERVAL_MS","trackFailures","TRACK_INTERVAL_MS","nowTs","failuresGivenGrace","failuresNotReady","GRACE_PERIOD_MS","dedupedFailuresMap","trackedEventIds","dedupedFailures","_aggregateFailures","trackedErrorCode","tsOfNewestEvent","_onStartChatFinished","shouldInvite","inviteMultipleToRoom","_showAnyInviteErrors","_onRoomInviteFinished","_createRoom2","_isDmChat","getDMRoomsForUserId","dmRoom","_getDirectMessageRooms","failedUsers","PRESENCE_STATES","Presence","running","_resetTimer","timer","old_state","_onUnavailableTimerFire","KeyRequestHandler","_currentUser","_currentDevice","_pendingKeyRequests","_processNextRequest","KeyShareDialog","LifecycleStore","deferredAction","singletonLifecycleStore","continuedTypes","backPaginating","forwardPaginating","highlightedEventId","readMarkerEventId","readMarkerVisible","suppressFirstDateSeparator","showReadReceipts","stickyBottom","onScroll","onFillRequest","currentReadMarkerEventId","currentGhostEventId","_readReceiptMap","_readMarkerGhostNode","_isMounted","getNodeForEventId","eventNodes","isAtBottom","scrollPanel","getScrollState","getReadMarkerPosition","readMarker","readMarkerNode","messageWrapper","wrapperRect","readMarkerRect","scrollToTop","scrollToBottom","scrollRelative","mult","scrollToEvent","pixelOffset","offsetBase","scrollToToken","checkFillState","_isUnmounting","_shouldShowEvent","mxEv","_getEventTiles","MemberEventListSummary","lastShownEvent","lastShownNonLocalEchoIndex","prevEvent","isMembershipChange","_mxEv","wantTile","readMarkerInMels","ts1","_wantsDateSeparator","dateSeparator","summarisedEvents","collapsedMxEv","highlightInMels","eventTiles","_getTilesForEvent","onToggle","_onWidgetLoad","startExpanded","_getReadMarkerTile","isVisibleReadMarker","_getReadMarkerGhostTile","eventTypeContinues","eventDate","scrollToken","readReceipts","_getReadReceiptsForEvent","_collectEventNode","data-scroll-tokens","readReceiptMap","checkUnmounting","eventSendStatus","isSelectedEvent","roomMember","r1","r2","_startAnimation","ghostNode","ScrollPanel","topSpinner","bottomSpinner","mx_MessagePanel_alwaysShowTimestamps","onUnfillRequest","_withMatrixClient2","_fetch","_onCreateGroupClick","GroupTile","contentHeader","groupNodes","NotificationPanel","_ratelimitedfunc2","_FormattingUtils","HeaderButton","analytics","clickPhase","tintableColors","badgeHighlight","isHighlighted","iconSrc","Phase","RoomMemberList","GroupMemberList","GroupRoomList","GroupRoomInfo","RoomMemberInfo","GroupMemberInfo","onRoomStateMember","_unregisterGroupStore","isUserPrivilegedInGroup","onCollapseClick","onInviteButtonClick","onInviteToGroupButtonClick","onAddRoomToGroupButtonClick","_delayedUpdate","MemberList","MemberInfo","inviteGroup","membersBadge","membersTitle","isUserInRoom","numMembers","isPhaseGroup","headerButtons","notifCountBadge","panel","groupMember","_DirectoryUtils","linkifyString","get_display_alias_for_room","protocolsLoading","instanceId","includeAll","roomServer","filterString","filterTimeout","refreshRoomList","getMoreRooms","my_filter_string","my_server","my_next_batch","getHomeServerName","third_party_instance_id","include_all_networks","generic_search_term","_s$publicRooms","removeFromDirectory","should_delete","onRoomClicked","showRoom","onFilterChange","onFilterClear","onJoinClick","protocolName","fields","_getFieldsForThirdPartyLocation","showRoomAlias","getRows","collectScrollPanel","_stringLooksLikeId","field_type","userInput","requiredFields","location_fields","thisField","scrollpanel_content","startAtBottom","instance_expected_field_type","field_types","last_field","showJoinButton","NetworkDropdown","DirectorySearchBox","onClear","defaultProtocol","nl2br","ignoreTags","Options","linkClass","ignoredTags","toHref","formattedHref","getObject","optionValue","tlds","ALPHANUM","WHITESPACE","domainStates","makeState","S_NUM","S_DOMAIN","S_DOMAIN_HYPHEN","S_WS","partialProtocolFileStates","partialProtocolFtpStates","partialProtocolHttpStates","partialProtocolMailtoStates","S_PROTOCOL_FILE","S_PROTOCOL_FTP","S_PROTOCOL_HTTP","S_MAILTO","S_PROTOCOL_SECURE","S_FULL_PROTOCOL","S_FULL_MAILTO","partialLocalhostStates","lowerStr","tokenLength","latestAccepting","sinceAccepts","TOKEN","_multi","MULTI_TOKENS","S_PROTOCOL","S_PROTOCOL_SLASH","S_PROTOCOL_SLASH_SLASH","S_DOMAIN_DOT","S_TLD","S_TLD_COLON","S_TLD_PORT","S_URL","S_URL_NON_ACCEPTING","S_URL_OPENBRACE","S_URL_OPENBRACKET","S_URL_OPENANGLEBRACKET","S_URL_OPENPAREN","S_URL_OPENBRACE_Q","S_URL_OPENBRACKET_Q","S_URL_OPENANGLEBRACKET_Q","S_URL_OPENPAREN_Q","S_URL_OPENBRACE_SYMS","S_URL_OPENBRACKET_SYMS","S_URL_OPENANGLEBRACKET_SYMS","S_URL_OPENPAREN_SYMS","S_EMAIL_DOMAIN","S_EMAIL_DOMAIN_DOT","S_EMAIL","EMAIL","S_EMAIL_COLON","S_EMAIL_PORT","S_MAILTO_EMAIL","MAILTOEMAIL","S_MAILTO_EMAIL_NON_ACCEPTING","S_LOCALPART","S_LOCALPART_AT","S_LOCALPART_DOT","S_NL","qsAccepting","qsNonAccepting","localpartAccepting","multis","textTokens","secondState","multiLength","MULTI","isDomainToken","hasProtocol","hasSlashSlash","escapeText","escapeAttr","attributesToString","linkifyStr","_opts$resolve","_WhoIsTyping2","cryptodevices","getUnsentMessages","numUnreadMessages","atEndOfLiveTimeline","sentMessageAndIsAlone","hasActiveCall","whoIsTypingLimit","isPeeking","onResendAllClick","onCancelAllClick","onInviteClick","onStopWarningClick","onScrollToBottomClick","onHidden","onVisible","syncStateData","usersTyping","usersTypingApartFromMe","unsentMessages","onRoomMemberTyping","_onRoomLocalEchoUpdated","_checkSize","usersTypingApartFromMeAndIgnored","_onSendWithoutVerifyingClick","_onResendAllClick","_onCancelAllClick","_onShowDevicesClick","_getSize","_shouldShowConnectionError","_getIndicator","wantPlaceholder","_renderTypingIndicatorAvatars","othersCount","errorIsMauError","_getUnsentMessageContent","showDevicesText","sendAnywayText","cancelText","consentError","resourceLimitError","consentLink","resendText","_getContent","unreadMsgs","typingString","whoIsTypingString","inviteText","nowarnText","indicator","exclude","whoIsTyping","memberKeys","lastPerson","RoomSubList","startAsHidden","showSpinner","onHeaderClick","alwaysShowHeader","onShowMoreRooms","emptyContent","headerItems","extraTiles","showEmpty","truncateAt","sortedList","applySearchFilter","lcFilter","isCollapsableOnClick","stuck","dataset","isHidden","originalPosition","onRoomTileClick","clear_search","roomNotifState","roomNotificationCount","_updateSubListCount","makeRoomTiles","DNDRoomTile","RoomTile","RoomTileComponent","roomSubList","_onNotifBadgeClick","_onInviteBadgeClick","_getHeaderJsx","subListNotifications","subListNotifCount","subListNotifHighlight","totalTiles","roomCount","chevronClasses","mx_RoomSubList_chevron","mx_RoomSubList_chevronRight","mx_RoomSubList_chevronDown","mx_RoomSubList_badge","mx_RoomSubList_badgeHighlight","IncomingCallBox","tabindex","_createOverflowTile","overflowCount","totalCount","overflowNotifications","overflowNotifCount","overflowNotifHighlight","mx_RoomSubList_moreBadge","mx_RoomSubList_moreBadgeNotify","mx_RoomSubList_moreBadgeHighlight","_showFullMemberList","TruncatedList","_content2","subList","createOverflowElement","subListContent","_RoomScrollStateStore2","rate_limited_func","ObjectUtils","BROWSER_SUPPORTS_SANDBOX","peekLoading","mediaConfig","membersLoaded","editingRoomSettings","uploadingRoomSettings","draggingFile","searching","callState","guestsCanJoin","canPeek","isAlone","showingPinned","showTopUnreadMessagesBar","auxPanelMaxHeight","statusBarVisible","onRoom","onRoomAccountData","onMyMembership","onKeyBackupStatus","_fetchMediaConfig","_onWidgetEchoStoreUpdate","invalidateCache","getRoomAlias","isRoomLoading","getRoomLoadError","isJoining","getInitialEventId","getForwardingEvent","_shouldShowApps","_onRoomLoaded","roomScrollState","focussedEvent","_setupRoom","onJoinButtonClicked","_getCallForRoom","_updateConfCallNotification","onPageUnload","inviteBox","ondrop","onDragOver","onDragLeaveOrEnd","setScrollState","_getScrollState","_updateRoomMembers","onMuteAudioClick","onMuteVideoClick","_checkIfAlone","injectSticker","_updatePreviewUrlVisibility","onRoomRecoveryReminderFinished","backupCreated","messagePanel","_warnAboutEncryption","_calculatePeekRules","_loadMembersIfJoined","userHasUsedEncryption","guestAccessEvent","historyVisibility","updateTint","_updateDMState","warnedAboutLonelyRoom","joinedOrInvitedMemberCount","confMember","confCall","displayConfCallNotification","dmInviter","onSearchResultsResize","onSearchResultsFillRequest","searchPromise","_handleSearchResult","onStopAloneWarningClick","signUrl","onMessageListScroll","isAtEndOfLiveTimeline","_updateTopUnreadMessagesBar","dropEffect","isFileUploadAllowed","sendContentToRoom","sendStickerContentToRoom","searchTerm","searchScope","searchHighlights","searchResultsPanel","resetScrollState","searchId","localSearchId","searchInProgress","getSearchResultTiles","SearchResultTile","checkScroll","lastRoomId","resultLink","searchResult","onPinnedClick","nowShowingPinned","onSettingsSaveClick","room_settings","newName","getEditedName","setName","newTopic","getEditedTopic","setTopic","onLeaveClick","onForgetClick","errCode","onRejectButtonClicked","rejecting","rejectError","onRejectThreepidInviteButtonClicked","onSearchClick","onCancelSearchClick","jumpToLiveTimeline","jumpToReadMarker","forgetReadMarker","showBar","canJumpToReadMarker","onChildResize","scrollState","stuckAtBottom","trackedScrollToken","onFullscreenClick","fullscreen","onStatusBarVisible","onStatusBarHidden","_gatherTimelinePanelRef","RoomHeader","MessageComposer","ForwardMessage","SearchBar","PinnedEventsPanel","RoomPreviewBar","RoomUpgradeWarningBar","RoomRecoveryReminder","onRejectClick","canPreview","spinnerState","inCall","scrollheader_classes","mx_RoomView_scrollheader","statusBar","isStatusAreaExpanded","UploadBar","RoomStatusBar","showRoomUpgradeBar","aux","hideCancel","onSaveClick","auxPanel","hideAppsDrawer","messageComposer","searchInfo","uploadAllowed","LoginBox","searchCount","voiceMuteButton","zoomButton","videoMuteButton","hideMessagePanel","shouldHighlight","onReadMarkerUpdated","topUnreadMessagesBar","TopUnreadMessagesBar","onScrollUpClick","onCloseClick","statusBarAreaClass","mx_RoomView_statusArea_expanded","fadableSectionClasses","inRoom","RoomScrollStateStore","_scrollStateMap","mx_RoomScrollStateStore","CanvasPrototype","HTMLCanvasElement","hasBlobConstructor","hasArrayBufferViewSupport","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","dataURIPattern","dataURLtoBlob","dataURI","mediaType","isBase64","dataString","byteString","intArray","getBlob","mozGetAsFile","quality","_pendingFillRequests","sn","_getScrollNode","_lastSetScroll","_restoreSavedScrollState","_saveScrollState","_gemScroll","scrollHeight","_getExcessHeight","_maybeFill","_checkUnfillState","excessHeight","tiles","itemlist","markerScrollToken","tile","scrollTokens","_unfillDebouncer","hasMoreResults","_setScrollTop","scrollNode","_scrollToToken","scrollDelta","newScrollState","boundingRect","prevScroll","getViewElement","_collectGeminiScroll","gemScroll","wrappedRef","_clearSearch","onToggleCollapse","collapseTabIndex","toggleCollapse","searchControls","_GroupActions2","_onClientSync","_tagOrderStoreToken","getSelectedTags","fetchJoinedGroups","_filterStoreToken","onCreateGroupClick","onClearFilterClick","DNDTagTile","itemsSelected","mx_TagPanel_items_selected","GroupActions","timelineCap","roomReadMarkerTsMap","initialReadMarker","readmarker","_getCurrentReadReceipt","timelineLoading","canBackPaginate","canForwardPaginate","clientSyncState","lastRRSentEventId","lastRMSentEventId","onRoomTimelineReset","onRoomRedaction","onLocalEchoUpdated","_initTimeline","onMessageListUnfillRequest","_timelineWindow","canPaginateKey","_getEvents","onMessageListFillRequest","_shouldPaginate","paginatingKey","otherDirection","canPaginateOtherWayKey","updateReadMarker","lastEv","updatedState","userCurrentlyActive","_setReadMarker","_loadTimeline","_reloadEvents","shouldSendRR","currentRREventId","currentRREventIndex","_indexForEventId","lastReadEventIndex","_getLastDisplayedEventIndex","ignoreOwn","lastReadEvent","shouldSendRM","lastDisplayedIndex","allowPartial","ignoreEchoes","lastDisplayedEvent","_advanceReadMarkerPastMyEvents","rmId","rmTs","initialEvent","onLoaded","eventTs","inhibitSetState","MessagePanel","mounted","innerProgressStyle","uploadedSize","totalSize","uploadText","packageJson","UserSettingsStore","CallMediaHandler","Email","REACT_SDK_VERSION","gitHead","semVerRegex","gHVersionLabel","repo","SIMPLE_SETTINGS","ANALYTICS_SETTINGS","disable","WEBRTC_SETTINGS","CRYPTO_SETTINGS","THEMES","IgnoredUser","onUnignored","_onUnignoreClick","email_add_pending","vectorVersion","canSelfUpdate","rejectingInvites","autoLaunchEnabled","_addThreepid","appVersion","canUpdate","_refreshMediaDevices","_refreshIgnoredUsers","_onInviteStateChange","_refreshFromServer","supportsAutoLaunch","getAutoLaunchEnabled","_me","getTracks","activeAudioOutput","activeAudioInput","activeVideoInput","resps","userIdUnignored","onAvatarPickerClick","file_label","onAvatarSelected","changeAvatar","onFileSelected","onAvatarRemoveClick","onLogoutClicked","_onExportE2eKeysClicked","onPasswordChangeError","errMsg","onPasswordChanged","_onAddEmailEditFinished","shouldSubmit","_addEmail","add_email_input","addEmailAddress","onEmailDialogFinished","onRemoveThreepidClicked","threepid","threePid","verifyEmailAddress","checkEmailLinkClicked","_onDeactivateAccountClicked","DeactivateAccountDialog","_onBugReportClicked","BugReportDialog","_onClearCacheClicked","_onRejectAllInvitesClicked","_onImportE2eKeysClicked","_renderGroupSettings","GroupUserSettings","_renderReferral","onLanguageChange","newLang","_renderLanguageSetting","LanguageDropdown","_renderUserInterfaceSettings","_renderAccountSetting","_renderThemeOption","SettingsFlag","_renderCryptoInfo","importExportButtons","keyBackupSection","KeyBackupPanel","_renderDeviceSetting","_renderIgnoredUsers","updateHandler","_renderDevicesPanel","DevicesPanel","_renderBugReport","_renderAnalyticsControl","showDetailsModal","_renderLabs","features","getLabsFeatures","featureId","_onLazyLoadChanging","setFeatureEnabled","enabling","_renderDeactivateAccount","_renderTermsAndConditionsLinks","terms_and_conditions_links","tncLinks","tncEntry","_renderClearCache","_renderCheckUpdate","_renderBulkOptions","invitedRooms","_renderElectronSettings","_onAutoLaunchChanged","setAutoLaunchEnabled","_mapWebRtcDevicesToSpans","_setAudioOutput","_setAudioInput","_setVideoInput","_requestMediaPermissions","_renderWebRtcDeviceSettings","Dropdown","speakerDropdown","microphoneDropdown","webcamDropdown","defaultOption","audioOutputs","defaultOutput","audioInputs","defaultInput","videoInputs","_defaultInput","_renderWebRtcSettings","onSelfShareClick","_showSpoiler","nameForMedium","presentableTextForThreepid","ChangeDisplayName","ChangePassword","ChangeAvatar","Notifications","threepidsSection","pidIndex","addEmailSection","AddPhoneNumber","addMsisdnSection","onThreepidAdded","accountJsx","rowClassName","rowLabelClassName","rowInputClassName","buttonClassName","notificationArea","olmVersionString","initialAvatarUrl","showUploadSection","data-spoiler","_PasswordReset2","enteredHomeserverUrl","enteredIdentityServerUrl","password2","submitPasswordReset","identityUrl","resetPassword","showErrorDialog","onVerify","onSubmitForm","onInputChanged","LoginPage","LoginHeader","LoginFooter","ServerConfig","resetPasswordJsx","serverConfigSection","withToggleButton","delayTimeMs","LanguageSelector","PasswordReset","PHONE_NUMBER_REGEX","loginIncorrect","currentFlow","discoveredHsUrl","discoveredIsUrl","discoveryError","findingHomeserver","_stepRendererMap","m.login.password","_renderPasswordStep","m.login.cas","_renderSsoStep","_loginLogic","m.login.sso","_initLoginLogic","onPasswordLoginError","onPasswordLogin","loginViaPassword","usingEmail","errorTop","errorDetail","hs","_errorTextFromError","_onLoginAsGuestClick","loginAsGuest","onUsernameChanged","onUsernameBlur","_tryWellKnownDiscovery","onPhoneCountryChanged","onPhoneNumberChanged","loginLogic","getFlows","_isSupportedFlow","chooseFlow","_getCurrentFlowStep","getCurrentFlowStep","componentForStep","stepRenderer","PasswordLogin","initialUsername","initialPhoneCountry","initialPhoneNumber","hsName","disableSubmit","loginAsGuestJsx","serverConfig","errorTextSection","errorString","teamSelected","getTeamsConfig","trackReferral","getTeam","teamServerBusy","formVals","doingUIAuth","_replaceClient","_rtsClient","_makeRegisterRequest","onFormSubmit","_onUIAuthFinished","trackPromise","_setupPushers","msisdnAvailable","emailPusher","onFormValidationFailed","MIN_PASSWORD_LENGTH","_getUIAuthInputs","registerBody","signIn","defaultToInitialLetter","newImageUrls","imageUrls","oldImageUrls","urlsIndex","defaultImageUrl","_getInitialLetter","initialLetter","imgNode","getGroupAvatarUrl","MemberStatusMessageAvatar","_onRoomStateEvents","_onClick","hasStatus","mx_MemberStatusMessageAvatar","mx_MemberStatusMessageAvatar_hasStatus","viewAvatarOnClick","getImageUrls","getRoomAvatarUrl","getOneToOneAvatar","otherUserId","onRoomAvatarClick","GenericTextContextMenu","GroupInviteTileContextMenu","_onClickReject","eventTileOps","collapseReplyThread","canPin","_checkPermissions","_isPinned","pinnedEvent","onResendClick","onViewSourceClick","ViewSource","onViewClearSourceClick","onRedactClick","ConfirmRedactDialog","onCancelSendClick","onForwardClick","onPinClick","eventIds","onUnhidePreviewClick","unhideWidget","onPermalinkClick","onReplyClick","onCollapseReplyThreadClick","eventStatus","resendButton","redactButton","forwardButton","pinButton","viewClearSourceButton","unhidePreviewButton","externalURLButton","quoteButton","replyButton","isSent","viewSourceButton","isWidgetHidden","permalinkButton","getInnerText","external_url","isFavourite","isLowPriority","isDirectMessage","_toggleTag","tagNameOn","tagNameOff","_onClickFavourite","_onClickLowPriority","_onClickDM","newIsDirectMessage","_onClickLeave","_onClickForget","_saveNotifState","_onClickAlertMe","_onClickAllNotifs","_onClickMentions","_onClickMute","_renderNotifMenu","alertMeClasses","mx_RoomTileContextMenu_notif_field","mx_RoomTileContextMenu_notif_fieldSet","allNotifsClasses","mentionsClasses","muteNotifsClasses","_renderLeaveMenu","leaveClickHandler","leaveText","_renderRoomTagMenu","favouriteClasses","mx_RoomTileContextMenu_tag_field","mx_RoomTileContextMenu_tag_fieldSet","mx_RoomTileContextMenu_tag_fieldDisabled","lowPriorityClasses","dmClasses","_onViewCommunityClick","_onRemoveClick","PrivateChat","PublicChat","Custom","curr_val","setSelectionRange","new_val","addressTypeName","mx-user-id","mx-room-id","includeSelf","selectedList","searchError","serverSupportsUserDirectory","suggestedList","textinput","onButtonClick","_addInputToList","addressSelector","moveSelectionUp","moveSelectionDown","chooseSelection","onDismissed","onQueryChanged","queryChangedDebouncer","_doNaiveGroupSearch","_doUserDirectorySearch","_doLocalSearch","_doNaiveGroupRoomSearch","_doRoomSearch","_cancelThreepidLookup","onSelected","lowerCaseQuery","userIdMatch","displayNameMatch","_processResults","nameMatch","topicMatch","aliasMatch","nameEvent","shortestMatchingAliasLength","avatarEvent","queryLowercase","_lookupThreepid","moveSelectionTop","addressText","addrObj","AddressSelector","scrollElement","selectedAddresses","filteredSuggestedList","AddressTile","canDismiss","showAddress","validTypeDescriptions","validTypesList","addressList","_onInviteClicked","_onInviteNeverWarnClicked","_onGiveUpClicked","_focusTrapReact2","titleClass","createFocusTrap","checkedProps","FocusTrap","previouslyFocusedElement","specifiedFocusTrapOptions","focusTrapOptions","tailoredFocusTrapOptions","returnFocusOnDeactivate","optionName","focusTrap","_createFocusTrap","activate","deactivate","unpause","elementProps","tabbable","listeningFocusTrap","tryFocus","userOptions","tabbableNodes","firstTabbableNode","lastTabbableNode","nodeFocusedBeforeActivation","tabEvent","escapeDeactivates","trap","activateOptions","defaultedActivateOptions","onActivate","addListeners","removeListeners","deactivateOptions","defaultedDeactivateOptions","returnFocus","onDeactivate","updateTabbableNodes","getNodeForOption","firstFocusNode","checkFocus","checkClick","checkPointerDown","checkKey","clickOutsideDeactivates","stopImmediatePropagation","readjustFocus","currentFocusIndex","handleTab","isEscapeEvent","candidateIndexAttr","candidateIndex","elementDocument","basicTabbables","orderedTabbables","isUnavailable","isOffCache","isOff","nodeComputedStyle","createIsUnavailable","candidateSelectors","includeContainer","msMatchesSelector","webkitMatchesSelector","candidateSelector","issueUrl","_onTextChange","_onIssueUrlChange","_onSendLogsChange","_sendProgressCallback","REPOS","ChangelogDialog","version2","commits","commit","sha","html_url","_elementsForCommit","profileError","busyProfile","labelClasses","mx_MemberInfo_createRoom_label","startNewChat","askReason","_reasonField","_collectReasonField","MemberAvatar","confirmButtonClass","reasonBox","avatar","httpAvatarUrl","groupError","creating","createError","_onGroupNameChange","_onGroupIdChange","_onGroupIdBlur","_checkGroupId","groupIdError","localpart","createErrorNode","defaultNoFederate","default_federate","doLogout","_passwordField","_onOk","_onEraseFieldChange","confirmButtonEnabled","shouldErase","errStr","okLabel","okEnabled","onEnterPressed","DeviceVerifyDialog","DevtoolsComponent","GenericEditor","_DevtoolsComponent","_onChange","onBack","_send","SendCustomEvent","_GenericEditor","_Object$assign","isStateEvent","forceStateEvent","_buttons","textInput","float","data-tg-off","data-tg-on","SendAccountData","_GenericEditor2","_Object$assign3","isRoomAccountData","forceMode","INITIAL_LOAD_TILES","LOAD_TILES_STEP_SIZE","FilteredList","showAll","onQuery","filteredChildren","getChildCount","filterChildren","lcQuery","RoomStateExplorer","_DevtoolsComponent2","roomStateEvents","editEv","onQueryEventType","onQueryStateKey","queryEventType","queryStateKey","filterEventType","filterStateKey","stateGroup","stateKeys","onClickFn","browseEventType","AccountDataExplorer","_DevtoolsComponent3","Entries","_React$Component3","prevMode","Entry","_setMode","authError","_onAuthFinished","_onDismissClick","_collectInteractiveAuth","wasNewDevice","_onVerifyClicked","_onShareClicked","_onIgnoreClicked","_renderContent","description1","description2","_targetVersion","_onUpgradeClick","_React$createElement","onCancelled","_sendBugReport","_onClearStorageClick","_onRefreshClick","clearStorageButton","dialogButtons","_AddThreepid2","emailBusy","onEmailAddressChanged","emailInput","usernameBusy","usernameError","usernameCheckSupport","input_value","onValueChange","_usernameCheckTimeout","_doUsernameCheck","uiAuth","isAvailable","errMessage","_generatePassword","_generatedPassword","inputClasses","mx_SetMxIdDialog_input","usernameIndicator","usernameAvailable","usernameIndicatorClasses","authErrorIndicator","canContinue","WarmFuzzy","didSetEmail","advice","extraAdvice","_onPasswordChanged","_onPasswordChangeError","autoFocusNewPasswordInput","shouldAskForEmail","_qrcodeReact2","socials","_url3","_url4","_url5","onCopyClick","onLinkSpecificEventCheckboxClick","linkSpecificEvent","_selectText","successful","execCommand","onmouseleave","matrixToUrl","encodedUrl","onLinkClick","logoWidth","logo","social","getDOMNode","qr","QRCode","utf16to8","qrcode","cells","tileW","tileH","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","getBackingStorePixelRatio","rdx","cell","cdx","fgColor","dwidth","dheight","logoHeight","ErrorCorrectLevel","typeNumber","errorCorrectLevel","addData","make","BitByte","RSBlock","BitBuffer","Polynomial","moduleCount","dataCache","dataList","isDark","getModuleCount","rsBlocks","getRSBlocks","totalDataCount","dataCount","getLengthInBits","makeImpl","getBestMaskPattern","maskPattern","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","minLostPoint","lostPoint","getLostPoint","createMovieClip","target_mc","instance_name","qr_mc","createEmptyMovieClip","beginFill","endFill","getPatternPosition","getBCHTypeNumber","getBCHTypeInfo","bitIndex","byteIndex","dark","getMask","PAD0","PAD1","putBit","createBytes","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","rsPoly","getErrorCorrectPolynomial","modPoly","modIndex","totalCodeCount","QR8bitByte","ECL","QRRSBlock","RS_BLOCK_TABLE","rsBlock","getRsBlockTable","QRBitBuffer","bufIndex","Mode","QRMaskPattern","QRUtil","PATTERN_POSITION_TABLE","G15","G18","G15_MASK","getBCHDigit","errorCorrectLength","qrCode","sameCount","darkCount","DeviceListEntry","DeviceVerifyButtons","UserUnknownDeviceList","deviceListEntries","UnknownDeviceList","userListEntries","_onDeviceVerificationChanged","_onDismissClicked","_onSendAnywayClicked","_onSendClicked","haveUnknownDevices","sendButtonOnClick","sendButtonLabel","RoomName","SCROLLBAR_WIDTH","DONT_CREATE_GEMINI","CLASSNAMES","isIE","agent","sw","msOverflowStyle","getScrollbarWidth","_created","_cursorDown","_prevPageX","_prevPageY","_document","_viewElement","_scrollbarVerticalElement","_thumbVerticalElement","_scrollbarHorizontalElement","verticalScrollbar","horizontalScrollbar","thumb","prevented","resizeTrigger","_createResizeTrigger","_thumbHorizontalElement","_bindEvents","resizeHandler","_resizeHandler","_resizeTriggerElement","heightPercentage","widthPercentage","scrollWidth","_scrollHandler","_unbinEvents","scrollHandler","clickVerticalTrackHandler","_clickVerticalTrackHandler","clickHorizontalTrackHandler","_clickHorizontalTrackHandler","clickVerticalThumbHandler","_clickVerticalThumbHandler","clickHorizontalThumbHandler","_clickHorizontalThumbHandler","mouseUpDocumentHandler","_mouseUpDocumentHandler","mouseMoveDocumentHandler","_mouseMoveDocumentHandler","viewElement","msTransform","webkitTransform","thumbPositionPercentage","_startDrag","onselectstart","loadError","restoreError","recoverInfo","recoveryKeyValid","forceRecoveryKey","passPhrase","_loadBackupStatus","_onDone","_onUseRecoveryKeyClick","_onResetRecoveryClick","_onRecoveryKeyChange","_onPassPhraseNext","_onRecoveryKeyNext","_onPassPhraseChange","_onPassPhraseKeyPress","_onRecoveryKeyKeyPress","backupHasPassphrase","failedToDecrypt","failedCount","sessionCount","onKeyPress","button1","button2","_DialogButtons","_AccessibleButton","keyStatus","primaryDisabled","dropdownRootElement","ignoreEvent","onInputClick","onRootClick","onDocumentClick","onMenuOptionClick","onInputKeyUp","collectRoot","collectInputTextBox","inputTextBox","expanded","selectedServer","selectedInstance","includeAllNetworks","selectedInstanceId","selectedNetwork","_makeMenuOption","sortedInstances","handleClicks","imgUrl","click_handler","current_value","menu_options","_getMenuOptions","mouseOverAction","iconPath","showTooltip","_onMouseEnter","_onMouseLeave","maxSelected","_maxSelected","elementHeight","addressListElement","selectAddress","createAddressListTiles","mx_AddressSelector_addressListElement","mx_AddressSelector_selected","justified","networkName","networkUrl","listSize","mx_AddressSelector","mx_AddressSelector_empty","imgUrls","isMatrixAddress","mx_AddressTile_name","mx_AddressTile_justified","idClasses","mx_AddressTile_id","unknownMxClasses","mx_AddressTile_unknownMx","emailClasses","mx_AddressTile_email","unknownClasses","mx_AddressTile_unknown","mx_AddressTile","mx_AddressTile_error","dismiss","_FromWidgetPostMessageApi2","_ToWidgetPostMessageApi2","mxFromWidgetMessaging","mxToWidgetMessaging","WidgetMessaging","fromWidget","toWidget","messageToWidget","capabilities","addEndpoint","removeEndpoint","_IntegrationManager2","_WidgetMessagingEndpoint2","SUPPORTED_WIDGET_API_VERSIONS","FromWidgetPostMessageApi","widgetMessagingEndpoints","onPostMessage","endpointUrl","ep","trustedEndpoint","supported_versions","integType","integId","mxIntegrationManager","IntegrationManager","connected","integName","WidgetMessageEndpoint","ToWidgetPostMessageApi","_timeoutMs","_requestMap","targetWindow","targetOrigin","ActionButton","callout","onDeviceVerificationChanged","onVerifyClick","onUnverifyClick","onBlacklistClick","onUnblacklistClick","blacklistButton","verifyButton","primaryButtonClassName","_collectInput","_onKeyUp","_onJoinButtonClick","searchbox_classes","mx_DirectorySearchBox","join_button","MenuOption","dropdownKey","optClasses","mx_Dropdown_option","mx_Dropdown_option_highlight","_onKeyPress","_onInputClick","_onRootClick","_onDocumentClick","_onMenuOptionClick","_onInputKeyPress","_onInputKeyUp","_onInputChange","_collectRoot","_collectInputTextBox","_setHighlightedOption","_reindexChildren","highlightedOption","searchQuery","childrenByKey","_nextOption","_prevOption","onSearchChange","optionKey","searchEnabled","selectedChild","getShortOption","dropdownClasses","mx_Dropdown","mx_Dropdown_disabled","EditableItem","onAdd","addOnChange","onNewItemChanged","onItemAdded","onItemEdited","onItemRemoved","editableItems","itemsLabel","noItemsLabel","newItem","labelClassName","blurToSubmit","Phases","Display","Edit","editable_div","edit","cancelEdit","onFinish","onClickDiv","EditableTextContainer","_onValueChanged","getInitialValue","_reactGeminiScrollbar2","wrappedProps","size_res","showEventMeta","eventMeta","eventRedact","_onSearchChange","_language","getLanguageFromBrowser","languageMatchesSearchQuery","summaryLength","avatarsMaxLength","threshold","_toggleSummary","_renderSummary","eventAggregates","orderedTransitionSequences","summaries","transitions","userNames","nameList","_renderNameList","splitTransitions","canonicalTransitions","_getCanonicalTransitions","descs","_coalesceRepeatedTransitions","_getDescriptionForTransition","transitionType","repeats","_renderCommaSeparatedList","transitionList","modMap","newTransition","userCount","severalUsers","oneUser","itemLimit","lastItem","_renderAvatars","_getTransitionSequence","_getTransition","_getAggregate","userEvents","aggregate","aggregateIndices","firstEvent","eventsToRender","fewEvents","expandedEvents","avatarMembers","seq1","seq2","summaryContainer","toggleButton","_resizeObserverPolyfill2","getContainer","containerId","collectChildContainer","collectChild","_repositionChild","resizeObserver","childContainer","unobserve","updateChild","updateChildVisibility","updateChildPosition","parentRect","MapShim","class_1","__entries__","isBrowser","global$1","requestAnimationFrame$1","trailingTimeout","REFRESH_DELAY","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","leadingCall","trailingCall","lastCallTime","resolvePending","timeoutCallback","throttle","addObserver","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","childList","subtree","getInstance","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","getContentRect","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","ResizeObserverEntry","rectInit","contentRect","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","clearActive","observation","ResizeObserver","persistentWidgetId","getPersistentWidgetId","_onActiveWidgetStoreUpdate","persistentWidgetInRoomId","persistentWidgetInRoom","appEvent","_Rooms","REGEX_MATRIXTO","REGEX_LOCAL_MATRIXTO","isPillUrl","isMessagePillUrl","roomNotifPos","roomNotifLen","TYPE_ROOM_MENTION","TYPE_GROUP_MENTION","TYPE_AT_ROOM_MENTION","inMessage","resourceId","pillType","matrixToMatch","localMember","localRoom","doProfileLookup","onUserPillClicked","pillClass","_room","_member","_room2","_state$group","mx_UserPill_me","mx_UserPill_selected","data-offset-key","offsetKey","maxValue","powerLevelKey","_initStateFromProps","custom","onSelectChange","onCustomBlur","onCustomKeyDown","customPicker","progressStyle","isExplicit","manualSave","canChange","tooltipClassName","_getChildren","_getChildCount","overflowNode","totalChildren","addUser","removeUser","onAddUserId","user_id_input","UsageDataLink","onUsageDataClicked","PolicyLink","onReject","hideToolbar","checkVersion","displayReleaseNotes","installUpdate","displayChangelog","onUpdateClicked","action_button","SetPasswordDialog","toolbarClasses","mx_MatrixToolbar","getStatusText","getUpdateCheckStatusEnum","badgeEllipsis","isInvited","removingUser","isUserInvited","getGroupInvitedMembers","_onKick","ConfirmUserActionDialog","adminTools","kickButton","groupMemberName","membersError","invitedMembers","invitedMembersError","_fetchMembers","EntityTile","avatarJsx","presenceState","suppressOnHover","onSearchQueryChanged","makeGroupMemberTiles","memberList","memberListError","GroupMemberTile","matchesName","matchesId","uniqueMembers","bName","memberTiles","fetching","fetchingInvitedMembers","inputBox","invited","powerStatus","POWER_STATUS_ADMIN","_groupStoreToken","_onPublicityToggle","labelText","showDescription","avatarHeight","groupRoomPublicityLoading","groupRoomRemoveLoading","_updateGroupRoom","_onRemove","_changeGroupRoomPublicity","groupRoomName","_showFullRoomList","makeGroupRoomTiles","GroupRoomTile","matchesAlias","nop","descElement","droppableProvided","droppableSnapshot","_renderGroupPublicity","scrollbox","GroupPublicityToggle","groupPublicityToggles","groupPublicity","_captchaWidgetId","grecaptcha","_onCaptchaLoaded","mx_on_recaptcha_loaded","recaptchaContainer","scriptTag","_resetRecaptcha","_renderRecaptcha","divId","sitekey","COUNTRIES_BY_ISO2","_onOptionChange","_getShortOption","countryPrefix","_flagImgForIso2","displayedCountries","matched","initialPassword","LOGIN_FIELD_MXID","onLoginTypeChange","isLoginEmpty","_loginField","LOGIN_FIELD_EMAIL","LOGIN_FIELD_PHONE","mx_Login_field","mx_Login_field_disabled","mx_Login_email","mx_Login_username","disable_custom_urls","mx_Login_phoneNumberField","mx_Login_field_has_prefix","forgotPasswordJsx","matrixIdText","parsedHsUrl","pwFieldClass","loginField","renderLoginField","hsDomain","configVisible","onHomeserverChanged","_hsTimeoutId","_waitThenInvoke","onIdentityServerChanged","_isTimeoutId","existingTimeoutId","onServerConfigVisibleChange","showHelpPopup","CustomServerDialog","serverConfigStyle","today","yesterday","setDate","MAudioBody","playing","DOMException","oldValue","signal","aborted","abortXhr","_MImageBody3","MStickerBody","_MImageBody","TintableSVG","thumbScale","fullHeight","thumbWidth","thumbHeight","widthMulti","heightMulti","MessageTimestamp","onAvatarClick","_onLinkClicked","userGroups","relatedGroups","_updateRelatedGroups","getPublicisedGroupsCached","_getDisplayedGroups","displayedGroups","flair","enableFlair","nameElem","nameFlair","_highlight2","HtmlUtils","links","widgetHidden","copyToClipboard","textArea","pillifyLinks","calculateUrlPreview","_addCodeCopyButton","findLinks","pillified","pillContainer","TEXT_NODE","_Pill","currentTextNode","roomNotifTextNodes","nextTextNode","roomTextNode","pushProcessor","atRoomRule","roomNotifTextNode","_pillContainer","_pill","isLinkPreviewable","copyCode","onEmoteSenderClick","onStarterLinkClick","starterLink","completeUrl","integrationsUrl","stripReply","widgets","LinkPreviewWidget","TEXT_TOKEN","HTML_NODE","TXT_NODE","replaceChildWithChildren","lastNewChild","tokensToNodes","linkifyElementHelper","childElement","linkifyElement","helper","TextForEvent","redactedBecauseUserId","canSetCanonicalAlias","canSetAliases","canonicalAliasEvent","recalculateState","domainToAliases","remoteDomains","localDomain","aliasEventsToDictionary","saveSettings","aliasOperations","getAliasOperations","alias_operation","oldCanonicalAlias","newCanonicalAlias","dict","isAliasValid","onNewAliasChanged","newAlias","onLocalAliasAdded","onLocalAliasChanged","onLocalAliasDeleted","onCanonicalAliasChange","EditableItemList","canonical_alias_section","canonicalValue","stateCanonicalAlias","remote_aliases_section","ROOM_COLORS","getKeyRgb","_getColorIndex","originalState","room_color","_onColorSchemeChanged","boundClick","_isEqual2","GROUP_ID_REGEX","canSetRelatedGroups","newGroupsList","getInitialGroupList","newGroupId","needsSaving","validateGroupId","onNewGroupChanged","onGroupAdded","onGroupEdited","onGroupDeleted","equalArrays","equalByTag","equalObjects","arrayTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","errorTag","objProps","objLength","skipCtor","objCtor","othCtor","resIndex","urlPreviewsRoom","urlPreviewsSelf","previewsForAccount","previewsForRoom","accountEnabled","previewsForRoomAccount","spreadableSymbol","isConcatSpreadable","baseIteratee","baseMap","baseIsMatch","getMatchData","matchesStrictComparable","matchData","noCustomizer","isStrictComparable","rePropName","reEscapeChar","memoizeCapped","subString","MAX_MEMOIZE_SIZE","memoized","Cache","hasFunc","baseProperty","basePropertyDeep","baseForOwn","createBaseEach","eachFunc","_AutocompleteProvider3","_QueryMatcher2","_Components","_SlashCommands","COMMAND_RE","CommandProvider","_AutocompleteProvider","matcher","_getCurrentCommand","baseAt","baseSortBy","compareMultiple","orders","criteria","comparer","compareAscending","objCriteria","othCriteria","ordersLength","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","COMMUNITY_REGEX","score","CommunityProvider","joinedGroups","matchedString","DDG_REGEX","DuckDuckGoProvider","getQueryUri","Results","Answer","AnswerType","RelatedTopics","AbstractText","ROOM_REGEX","RoomProvider","displayedAlias","displayAlias","completionId","USER_REGEX","FORCED_USER_REGEX","UserProvider","_onRoomTimelineBound","_onRoomTimeline","_onRoomStateMemberBound","_onRoomStateMember","onUserSpoke","_makeUsers","fullMatch","beginning","lastSpoken","currentUserId","user2","_emojione","_strippedEmoji2","CATEGORY_ORDER","MATCH_PREFIX_REGEX","EMOJI_SHORTNAMES","emoji_order","aliases_ascii","_orderBy","EmojiProvider","nameMatcher","prefixMatch","sorters","AT_ROOM_REGEX","NotifProvider","_ObjectUtils2","onConferenceNotificationClick","CallView","fileDropTarget","conferenceCallNotification","supportedText","joinNode","voiceText","videoText","callView","maxVideoHeight","appsDrawer","_React$PureComponent","mx_DNDRoomTile","mx_DNDRoomTile_dragging","ActiveRoomObserver","_listeners","_activeRoomId","_emit","mx_ActiveRoomObserver","PRESENCE_CLASS","offline","online","unavailable","presenceLastActiveAgo","presenceLastTs","presenceCurrentlyActive","showInviteButton","showPresence","mainClassName","presenceClassForMember","nameEl","activeAgo","PresenceLabel","presenceLabel","inviteButton","power","_EntityTile$POWER_STA","_EntityTile$POWER_STA2","POWER_STATUS_MODERATOR","eventTileTypes","stateEventTileTypes","m.room.avatar","getHandlerTile","contextual","allReadAvatars","previouslyRequestedKeys","_suppressReadReceiptAnimation","_verifyEvent","_onDecrypted","_propsEqual","rA","rB","onEditClicked","MessageContextMenu","_refs","replyThread","toggleAllReadAvatars","getReadAvatars","ReadReceiptMarker","MAX_READ_AVATARS","readReceiptInfo","leftOffset","suppressAnimation","remText","remainder","onSenderProfileClick","onCryptoClicked","onRequestKeysClick","onPermalinkClicked","_renderE2EPadlock","E2ePadlockUndecryptable","E2ePadlockVerified","E2ePadlockUnverified","E2ePadlockEncrypting","E2ePadlockNotSent","E2ePadlockUnencrypted","SenderProfile","isInfoMessage","tileHandler","EventTileType","isSending","isMessageEvent","isEncryptionFailure","mx_EventTile","mx_EventTile_info","mx_EventTile_12hr","mx_EventTile_encrypting","mx_EventTile_sending","mx_EventTile_notSent","mx_EventTile_highlight","mx_EventTile_selected","mx_EventTile_continuation","mx_EventTile_last","mx_EventTile_contextual","mx_EventTile_verified","mx_EventTile_unverified","mx_EventTile_bad","mx_EventTile_emote","mx_EventTile_redacted","readAvatars","avatarSize","needsSenderProfile","editButton","keyRequestHelpText","keyRequestInfoContent","requestLink","keyRequestInfo","makeThread","messageTypes","E2ePadlock","ImageUtils","preview","onImageClick","_thumbHeight","MemberDeviceInfo","deviceName","ambiguous","_Receipt","can","modifyLevel","isTargetMod","updating","devicesLoading","isIgnoring","_cancelDeviceList","_enableDevices","onDeleteRoom","onRoomMemberName","onRoomMemberMembership","_checkIgnoreState","_updateStateForNewMember","_disambiguateDevices","indexList","_calculateOpsPermissions","_downloadDeviceList","onIgnoreToggle","onKick","onBanOrUnban","_warnSelfDemote","onMuteToggle","isMuted","levelToSend","onModToggle","modLevel","_applyPowerChange","onPowerChange","myPower","defaultPerms","them","_calculateCanPermissions","_isMuted","isMe","modifyLevelMax","editPowerLevel","powerLevelContent","onMemberAvatarClick","_renderDevices","devComponents","onShareUserClick","_renderUserOptions","ignoreButton","insertPillButton","inviteUserButton","readReceiptButton","onInviteUserButton","shareUserButton","startChat","banButton","muteButton","giveModButton","kickLabel","muteLabel","toggleMod","giveOpLabel","memberName","statusMessage","powerLevelUsersDefault","enablePresenceByHsUrl","statusLabel","roomMemberDetails","PowerSelector","_getMembersState","_mounted","_showMembersAccordingToMembershipWithLL","_listenForMembersChanges","_showPresence","onRoomStateEvent","onUserLastPresenceTs","_updateList","_cli","filteredJoinedMembers","_filterMembers","filteredInvitedMembers","truncateAtJoined","truncateAtInvited","getMembersWithUser","allMembers","filteredAndSortedMembers","memberSort","_createOverflowTileJoined","_showMoreJoinedMemberList","_createOverflowTileInvited","_showMoreInvitedMemberList","memberString","memberA","memberB","userA","userB","nameA","nameB","_getPending3PidInvites","requiredKeys","_makeMemberTiles","MemberTile","_getChildrenJoined","_getChildCountJoined","_getChildrenInvited","_getChildCountInvited","invitedSection","member_last_modified_time","user_last_modified_time","_getDisplayName","getPowerLabel","userName","powerLevelNumber","100","50","formatButtonList","onCallClick","onHangupClick","onUploadClick","onUploadFileSelected","uploadFiles","onVoiceCallClick","_onAutocompleteConfirm","onToggleFormattingClicked","onToggleMarkdownClicked","onInputStateChanged","_onTombstoneClick","inputState","blockType","isRichTextEnabled","showFormatting","isQuoting","tombstone","_getRoomTombstone","_waitForOwnMember","uploadInput","tfiles","fileList","acceptedFiles","failedFiles","fileAcceptedOrError","replyToWarning","acceptedFilesPart","listStyle","failedFilesPart","buttonText","shouldUpload","messageComposerInput","setDisplayedCompletion","onFormatButtonClicked","enableRichtext","replacementRoomId","MessageComposerInput","e2eImg","e2eTitle","e2eClass","roomIsEncrypted","callButton","videoCallButton","hangupButton","canSendMessages","plEvent","plEventString","stringifyFalsey","uploadButton","formattingButton","placeholderText","stickerpickerButton","onFilesPasted","formatBar","_state$inputState","formatButtons","markName","_slateReact","_slate","_slateHtmlSerializer2","_slateMdSerializer2","_slatePlainSerializer2","_PlainWithPillsSerializer2","RichText","_Markdown2","_ComposerHistoryManager2","_MessageComposerStore2","EMOJI_UNICODE_TO_SHORTNAME","REGEX_EMOJI_WHITESPACE","BLOCK_TAGS","MARK_TAGS","strike","SLATE_SCHEMA","_initialiseProps","setRichtextMode","suppressAutoComplete","plainWithMdPills","pillFormat","plainWithIdPills","plainWithPlainPills","md","renderNode","renderMark","savedState","getEditorState","editorState","createEditorState","editor_state","rich_text","originalEditorState","currentlyComposedEditorState","someCompletions","wantRichText","wasRichText","mdToRichEditorState","richToMdEditorState","historyManager","userTypingTimer","startUserTypingTimer","startServerTypingTimer","stopUserTypingTimer","stopServerTypingTimer","serverTypingTimer","TYPING_SERVER_TIMEOUT","typingTimeout","textWithMdPills","markdown","toHTML","_editor","getAutocompleteQuery","firstGrandChild","activeEditorState","mx_MessageComposer_input_error","autocomplete","onAutocompleteConfirm","getSelectionRange","onMarkdownToggleClicked","Editor","_collectEditor","onPaste","anchorText","anchorBlock","replaceNodeByKey","insertFragmentByKey","fragmentChange","wrapBlock","_change","focusedNode","focusInline","focusText","previousText","focusKey","rangeEquals","onTypingActivity","onFinishedTyping","currentStartOffset","emojiMatch","emojiUc","unicodeEmoji","foundEmoji","emojiUnicode","setEditorState","hasMark","hasBlock","editor","handleReturn","onBackspace","onVerticalArrow","onTab","onEscape","onSpace","_KeyCode$KEY_M$KeyCod","ctrlCmdCommand","handleKeyCommand","setBlocks","unwrapBlock","transfer","getEventTransfer","contentText","commandText","replyingToEv","mustSendHTML","shouldSendHTML","findDescendant","sourceWithPills","mdWithPills","isPlainText","toPlaintext","sendHtmlFn","sendTextFn","replyContent","makeReplyMixIn","nestedReply","getNestedReplyText","onSendMessageFailed","_document2","selectHistory","moveAutocompleteSelection","historyItem","onUpArrow","onDownArrow","displayedCompletion","_editorState","_displayedCompletion$","_displayedCompletion$2","_displayedCompletion$3","_displayedCompletion$4","_displayedCompletion$5","unicodeToEmojiUri","mx_emojione_selected","selectColor","createDebug","curr","skips","plural","msAbs","isPlural","fmtLong","fmtShort","baseAssignIn","copySymbolsIn","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","isFlat","baseIsMap","nodeIsMap","baseIsSet","nodeIsSet","baseSlice","basePickBy","baseSet","commonAncestorContainer","DOCUMENT_NODE","nativeMin","lastInvokeTime","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","react__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_0___default","react_dom_server__WEBPACK_IMPORTED_MODULE_1__","type_of__WEBPACK_IMPORTED_MODULE_2__","type_of__WEBPACK_IMPORTED_MODULE_2___default","slate__WEBPACK_IMPORTED_MODULE_3__","immutable__WEBPACK_IMPORTED_MODULE_4__","TEXT_RULE","defaultParseHtml","parseHtml","deserializeElements","cruftNewline","deserializeElement","deserializeMark","applyMark","serializeLeaf","addKey","serializeString","Html","_options$parseHtml","_options$rules","ReactServerRendering","ReactDOMServer","renderToString","ReactServerBatchingStrategy","pendingTransactions","renderToStringImpl","makeStaticMarkup","_immutable","_urls","tableHeader","addNewLine","Markdown","_toConsumableArray","serializeLeaves","inCodeBlock","leavesText","gfm","tables","breaks","pedantic","smartLists","langPrefix","renderer","newline","fences","heading","nptable","lheading","paragraph","Lexer","normal","bullet","bq","loose","bull","newlines","todo","endsWithNewline","reflink","nolink","InlineLexer","TextNode","_inside","_href","inLink","outputLink","codespan","groupTextInLeaves","accLast","lastIsText","listitem","tablerow","tablecell","parseText","_cells","_body","_body2","_body3","MarkdownParser","PlainWithPillsSerializer","_serializeNode","_options$pillFormat","_commonmark2","ALLOWED_HTML_TAGS","TEXT_NODES","is_allowed_html_tag","html_if_tag_allowed","is_multi_line","par","HtmlRenderer","softbreak","real_paragraph","html_inline","html_block","XmlRenderer","InlineParser","reHtmlBlockOpen","reHtmlBlockClose","reThematicBreak","reMaybeSpecial","reNonSpace","reBulletListMarker","reOrderedListMarker","reATXHeadingMarker","reCodeFence","reClosingCodeFence","reSetextHeadingLine","reLineEnding","isSpaceOrTab","ln","endsWithBlankLine","addLine","partiallyConsumedTab","charsToTab","currentLine","addChild","canContain","finalize","column_number","newBlock","closeUnmatchedBlocks","allClosed","oldtip","lastMatchedContainer","acceptsLines","subitem","block_quote","indented","nextNonspace","advanceNextNonspace","advanceOffset","blank","markerOffset","thematic_break","code_block","newlinePos","firstLine","_htmlBlockType","hasReferenceDefs","inlineParser","parseReference","refmap","isBlank","blockStarts","fenceLength","nextc","spacesStartCol","spacesStartOffset","bulletChar","blank_item","spaces_after_marker","parseListMarker","list_data","item_data","charsToAdvance","nextNonspaceColumn","findNextNonspace","incorporateLine","all_matched","lastLineLength","matchedLeaf","startsLen","lastLineBlank","cont","above","processInlines","encodeCache","keepEscaped","nextCode","defaultChars","ch","getEncodeCache","componentChars","decodeCache","getDecodeCache","b1","b2","b3","b4","normalizeReference","ESCAPED_CHAR","rePunctuation","reLinkTitle","reLinkDestinationBraces","reEscapable","reEntityHere","reTicks","reTicksHere","reEllipses","reDash","reEmailAutolink","reAutolink","reSpnl","reWhitespaceChar","reWhitespace","reUnicodeWhitespaceChar","reFinalSpace","reInitialSpace","reSpaceAtEndOfLine","reLinkLabel","reMain","spnl","parseBackticks","ticks","afterOpenTicks","parseBackslash","subj","parseAutolink","parseHtmlTag","scanDelims","cc","char_before","char_after","cc_after","left_flanking","right_flanking","can_open","can_close","after_is_whitespace","after_is_punctuation","before_is_whitespace","before_is_punctuation","numdelims","startpos","handleDelim","delimiters","origdelims","removeDelimiter","removeDelimitersBetween","processEmphasis","stack_bottom","opener","closer","old_closer","opener_inl","closer_inl","tempstack","use_delims","opener_found","openers_bottom","odd_match","closercc","emph","parseLinkTitle","parseLinkDestination","savepos","openparens","parseLinkLabel","parseOpenBracket","addBracket","parseBang","parseCloseBracket","is_image","reflabel","removeBracket","beforelabel","bracketAfter","previousDelimiter","parseEntity","parseString","smart","enCount","emCount","parseNewline","lastc","hardbreak","rawlabel","matchChars","beforetitle","atLineEnd","normlabel","parseInline","parseInlines","µ","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ð","Ñ","Ò","Ó","Ô","Õ","Ö","Ø","Ù","Ú","Û","Ü","Ý","Þ","Ā","Ă","Ą","Ć","Ĉ","Ċ","Č","Ď","Đ","Ē","Ĕ","Ė","Ę","Ě","Ĝ","Ğ","Ġ","Ģ","Ĥ","Ħ","Ĩ","Ī","Ĭ","Į","IJ","Ĵ","Ķ","Ĺ","Ļ","Ľ","Ŀ","Ł","Ń","Ņ","Ň","Ŋ","Ō","Ŏ","Ő","Œ","Ŕ","Ŗ","Ř","Ś","Ŝ","Ş","Š","Ţ","Ť","Ŧ","Ũ","Ū","Ŭ","Ů","Ű","Ų","Ŵ","Ŷ","Ÿ","Ź","Ż","Ž","ſ","Ɓ","Ƃ","Ƅ","Ɔ","Ƈ","Ɖ","Ɗ","Ƌ","Ǝ","Ə","Ɛ","Ƒ","Ɠ","Ɣ","Ɩ","Ɨ","Ƙ","Ɯ","Ɲ","Ɵ","Ơ","Ƣ","Ƥ","Ʀ","Ƨ","Ʃ","Ƭ","Ʈ","Ư","Ʊ","Ʋ","Ƴ","Ƶ","Ʒ","Ƹ","Ƽ","DŽ","Dž","LJ","Lj","NJ","Nj","Ǎ","Ǐ","Ǒ","Ǔ","Ǖ","Ǘ","Ǚ","Ǜ","Ǟ","Ǡ","Ǣ","Ǥ","Ǧ","Ǩ","Ǫ","Ǭ","Ǯ","DZ","Dz","Ǵ","Ƕ","Ƿ","Ǹ","Ǻ","Ǽ","Ǿ","Ȁ","Ȃ","Ȅ","Ȇ","Ȉ","Ȋ","Ȍ","Ȏ","Ȑ","Ȓ","Ȕ","Ȗ","Ș","Ț","Ȝ","Ȟ","Ƞ","Ȣ","Ȥ","Ȧ","Ȩ","Ȫ","Ȭ","Ȯ","Ȱ","Ȳ","Ⱥ","Ȼ","Ƚ","Ⱦ","Ɂ","Ƀ","Ʉ","Ʌ","Ɇ","Ɉ","Ɋ","Ɍ","Ɏ","ͅ","Ͱ","Ͳ","Ͷ","Ϳ","Ά","Έ","Ή","Ί","Ό","Ύ","Ώ","Α","Β","Γ","Δ","Ε","Ζ","Η","Θ","Ι","Κ","Λ","Μ","Ν","Ξ","Ο","Π","Ρ","Σ","Τ","Υ","Φ","Χ","Ψ","Ω","Ϊ","Ϋ","ς","Ϗ","ϐ","ϑ","ϕ","ϖ","Ϙ","Ϛ","Ϝ","Ϟ","Ϡ","Ϣ","Ϥ","Ϧ","Ϩ","Ϫ","Ϭ","Ϯ","ϰ","ϱ","ϴ","ϵ","Ϸ","Ϲ","Ϻ","Ͻ","Ͼ","Ͽ","Ѐ","Ё","Ђ","Ѓ","Є","Ѕ","І","Ї","Ј","Љ","Њ","Ћ","Ќ","Ѝ","Ў","Џ","А","Б","В","Г","Д","Е","Ж","З","И","Й","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Ъ","Ы","Ь","Э","Ю","Я","Ѡ","Ѣ","Ѥ","Ѧ","Ѩ","Ѫ","Ѭ","Ѯ","Ѱ","Ѳ","Ѵ","Ѷ","Ѹ","Ѻ","Ѽ","Ѿ","Ҁ","Ҋ","Ҍ","Ҏ","Ґ","Ғ","Ҕ","Җ","Ҙ","Қ","Ҝ","Ҟ","Ҡ","Ң","Ҥ","Ҧ","Ҩ","Ҫ","Ҭ","Ү","Ұ","Ҳ","Ҵ","Ҷ","Ҹ","Һ","Ҽ","Ҿ","Ӏ","Ӂ","Ӄ","Ӆ","Ӈ","Ӊ","Ӌ","Ӎ","Ӑ","Ӓ","Ӕ","Ӗ","Ә","Ӛ","Ӝ","Ӟ","Ӡ","Ӣ","Ӥ","Ӧ","Ө","Ӫ","Ӭ","Ӯ","Ӱ","Ӳ","Ӵ","Ӷ","Ӹ","Ӻ","Ӽ","Ӿ","Ԁ","Ԃ","Ԅ","Ԇ","Ԉ","Ԋ","Ԍ","Ԏ","Ԑ","Ԓ","Ԕ","Ԗ","Ԙ","Ԛ","Ԝ","Ԟ","Ԡ","Ԣ","Ԥ","Ԧ","Ԩ","Ԫ","Ԭ","Ԯ","Ա","Բ","Գ","Դ","Ե","Զ","Է","Ը","Թ","Ժ","Ի","Լ","Խ","Ծ","Կ","Հ","Ձ","Ղ","Ճ","Մ","Յ","Ն","Շ","Ո","Չ","Պ","Ջ","Ռ","Ս","Վ","Տ","Ր","Ց","Ւ","Փ","Ք","Օ","Ֆ","Ⴀ","Ⴁ","Ⴂ","Ⴃ","Ⴄ","Ⴅ","Ⴆ","Ⴇ","Ⴈ","Ⴉ","Ⴊ","Ⴋ","Ⴌ","Ⴍ","Ⴎ","Ⴏ","Ⴐ","Ⴑ","Ⴒ","Ⴓ","Ⴔ","Ⴕ","Ⴖ","Ⴗ","Ⴘ","Ⴙ","Ⴚ","Ⴛ","Ⴜ","Ⴝ","Ⴞ","Ⴟ","Ⴠ","Ⴡ","Ⴢ","Ⴣ","Ⴤ","Ⴥ","Ⴧ","Ⴭ","Ḁ","Ḃ","Ḅ","Ḇ","Ḉ","Ḋ","Ḍ","Ḏ","Ḑ","Ḓ","Ḕ","Ḗ","Ḙ","Ḛ","Ḝ","Ḟ","Ḡ","Ḣ","Ḥ","Ḧ","Ḩ","Ḫ","Ḭ","Ḯ","Ḱ","Ḳ","Ḵ","Ḷ","Ḹ","Ḻ","Ḽ","Ḿ","Ṁ","Ṃ","Ṅ","Ṇ","Ṉ","Ṋ","Ṍ","Ṏ","Ṑ","Ṓ","Ṕ","Ṗ","Ṙ","Ṛ","Ṝ","Ṟ","Ṡ","Ṣ","Ṥ","Ṧ","Ṩ","Ṫ","Ṭ","Ṯ","Ṱ","Ṳ","Ṵ","Ṷ","Ṹ","Ṻ","Ṽ","Ṿ","Ẁ","Ẃ","Ẅ","Ẇ","Ẉ","Ẋ","Ẍ","Ẏ","Ẑ","Ẓ","Ẕ","ẛ","Ạ","Ả","Ấ","Ầ","Ẩ","Ẫ","Ậ","Ắ","Ằ","Ẳ","Ẵ","Ặ","Ẹ","Ẻ","Ẽ","Ế","Ề","Ể","Ễ","Ệ","Ỉ","Ị","Ọ","Ỏ","Ố","Ồ","Ổ","Ỗ","Ộ","Ớ","Ờ","Ở","Ỡ","Ợ","Ụ","Ủ","Ứ","Ừ","Ử","Ữ","Ự","Ỳ","Ỵ","Ỷ","Ỹ","Ỻ","Ỽ","Ỿ","Ἀ","Ἁ","Ἂ","Ἃ","Ἄ","Ἅ","Ἆ","Ἇ","Ἐ","Ἑ","Ἒ","Ἓ","Ἔ","Ἕ","Ἠ","Ἡ","Ἢ","Ἣ","Ἤ","Ἥ","Ἦ","Ἧ","Ἰ","Ἱ","Ἲ","Ἳ","Ἴ","Ἵ","Ἶ","Ἷ","Ὀ","Ὁ","Ὂ","Ὃ","Ὄ","Ὅ","Ὑ","Ὓ","Ὕ","Ὗ","Ὠ","Ὡ","Ὢ","Ὣ","Ὤ","Ὥ","Ὦ","Ὧ","Ᾰ","Ᾱ","Ὰ","Ά","ι","Ὲ","Έ","Ὴ","Ή","Ῐ","Ῑ","Ὶ","Ί","Ῠ","Ῡ","Ὺ","Ύ","Ῥ","Ὸ","Ό","Ὼ","Ώ","Ω","K","Å","Ⅎ","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ","Ⅹ","Ⅺ","Ⅻ","Ⅼ","Ⅽ","Ⅾ","Ⅿ","Ↄ","Ⓐ","Ⓑ","Ⓒ","Ⓓ","Ⓔ","Ⓕ","Ⓖ","Ⓗ","Ⓘ","Ⓙ","Ⓚ","Ⓛ","Ⓝ","Ⓞ","Ⓟ","Ⓠ","Ⓡ","Ⓢ","Ⓣ","Ⓤ","Ⓥ","Ⓦ","Ⓧ","Ⓨ","Ⓩ","Ⰰ","Ⰱ","Ⰲ","Ⰳ","Ⰴ","Ⰵ","Ⰶ","Ⰷ","Ⰸ","Ⰹ","Ⰺ","Ⰻ","Ⰼ","Ⰽ","Ⰾ","Ⰿ","Ⱀ","Ⱁ","Ⱂ","Ⱃ","Ⱄ","Ⱅ","Ⱆ","Ⱇ","Ⱈ","Ⱉ","Ⱊ","Ⱋ","Ⱌ","Ⱍ","Ⱎ","Ⱏ","Ⱐ","Ⱑ","Ⱒ","Ⱓ","Ⱔ","Ⱕ","Ⱖ","Ⱗ","Ⱘ","Ⱙ","Ⱚ","Ⱛ","Ⱜ","Ⱝ","Ⱞ","Ⱡ","Ɫ","Ᵽ","Ɽ","Ⱨ","Ⱪ","Ⱬ","Ɑ","Ɱ","Ɐ","Ɒ","Ⱳ","Ⱶ","Ȿ","Ɀ","Ⲁ","Ⲃ","Ⲅ","Ⲇ","Ⲉ","Ⲋ","Ⲍ","Ⲏ","Ⲑ","Ⲓ","Ⲕ","Ⲗ","Ⲙ","Ⲛ","Ⲝ","Ⲟ","Ⲡ","Ⲣ","Ⲥ","Ⲧ","Ⲩ","Ⲫ","Ⲭ","Ⲯ","Ⲱ","Ⲳ","Ⲵ","Ⲷ","Ⲹ","Ⲻ","Ⲽ","Ⲿ","Ⳁ","Ⳃ","Ⳅ","Ⳇ","Ⳉ","Ⳋ","Ⳍ","Ⳏ","Ⳑ","Ⳓ","Ⳕ","Ⳗ","Ⳙ","Ⳛ","Ⳝ","Ⳟ","Ⳡ","Ⳣ","Ⳬ","Ⳮ","Ⳳ","Ꙁ","Ꙃ","Ꙅ","Ꙇ","Ꙉ","Ꙋ","Ꙍ","Ꙏ","Ꙑ","Ꙓ","Ꙕ","Ꙗ","Ꙙ","Ꙛ","Ꙝ","Ꙟ","Ꙡ","Ꙣ","Ꙥ","Ꙧ","Ꙩ","Ꙫ","Ꙭ","Ꚁ","Ꚃ","Ꚅ","Ꚇ","Ꚉ","Ꚋ","Ꚍ","Ꚏ","Ꚑ","Ꚓ","Ꚕ","Ꚗ","Ꚙ","Ꚛ","Ꜣ","Ꜥ","Ꜧ","Ꜩ","Ꜫ","Ꜭ","Ꜯ","Ꜳ","Ꜵ","Ꜷ","Ꜹ","Ꜻ","Ꜽ","Ꜿ","Ꝁ","Ꝃ","Ꝅ","Ꝇ","Ꝉ","Ꝋ","Ꝍ","Ꝏ","Ꝑ","Ꝓ","Ꝕ","Ꝗ","Ꝙ","Ꝛ","Ꝝ","Ꝟ","Ꝡ","Ꝣ","Ꝥ","Ꝧ","Ꝩ","Ꝫ","Ꝭ","Ꝯ","Ꝺ","Ꝼ","Ᵹ","Ꝿ","Ꞁ","Ꞃ","Ꞅ","Ꞇ","Ꞌ","Ɥ","Ꞑ","Ꞓ","Ꞗ","Ꞙ","Ꞛ","Ꞝ","Ꞟ","Ꞡ","Ꞣ","Ꞥ","Ꞧ","Ꞩ","Ɦ","Ɜ","Ɡ","Ɬ","Ʞ","Ʇ","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","𐐀","𐐁","𐐂","𐐃","𐐄","𐐅","𐐆","𐐇","𐐈","𐐉","𐐊","𐐋","𐐌","𐐍","𐐎","𐐏","𐐐","𐐑","𐐒","𐐓","𐐔","𐐕","𐐖","𐐗","𐐘","𐐙","𐐚","𐐛","𐐜","𐐝","𐐞","𐐟","𐐠","𐐡","𐐢","𐐣","𐐤","𐐥","𐐦","𐐧","𑢠","𑢡","𑢢","𑢣","𑢤","𑢥","𑢦","𑢧","𑢨","𑢩","𑢪","𑢫","𑢬","𑢭","𑢮","𑢯","𑢰","𑢱","𑢲","𑢳","𑢴","𑢵","𑢶","𑢷","𑢸","𑢹","𑢺","𑢻","𑢼","𑢽","𑢾","𑢿","ß","İ","ʼn","ǰ","ΐ","ΰ","և","ẖ","ẗ","ẘ","ẙ","ẚ","ẞ","ὐ","ὒ","ὔ","ὖ","ᾀ","ᾁ","ᾂ","ᾃ","ᾄ","ᾅ","ᾆ","ᾇ","ᾈ","ᾉ","ᾊ","ᾋ","ᾌ","ᾍ","ᾎ","ᾏ","ᾐ","ᾑ","ᾒ","ᾓ","ᾔ","ᾕ","ᾖ","ᾗ","ᾘ","ᾙ","ᾚ","ᾛ","ᾜ","ᾝ","ᾞ","ᾟ","ᾠ","ᾡ","ᾢ","ᾣ","ᾤ","ᾥ","ᾦ","ᾧ","ᾨ","ᾩ","ᾪ","ᾫ","ᾬ","ᾭ","ᾮ","ᾯ","ᾲ","ᾳ","ᾴ","ᾶ","ᾷ","ᾼ","ῂ","ῃ","ῄ","ῆ","ῇ","ῌ","ῒ","ΐ","ῖ","ῗ","ῢ","ΰ","ῤ","ῦ","ῧ","ῲ","ῳ","ῴ","ῶ","ῷ","ῼ","ff","fi","fl","ffi","ffl","ſt","st","ﬓ","ﬔ","ﬕ","ﬖ","ﬗ","highSurrogate","lowSurrogate","codeUnits","reUnsafeProtocol","reSafeDataProtocol","potentiallyUnsafe","disableTags","linebreak","grandparent","listTight","tagname","info_words","listType","listStart","custom_inline","onEnter","onExit","custom_block","selfclosing","att","reXMLTag","toTagName","indentLevel","nodetype","listDelimiter","delimword","_clamp3","HistoryItem","ComposerHistoryManager","baseClamp","localStoragePrefix","MessageComposerStore","richText","stateStr","singletonMessageComposerStore","_PinningUtils2","_updatePinnedMessages","_onStateEvent","isPinnable","_updateReadState","readStateEvents","readPinsEvent","_getPinnedTiles","PinningUtils","ago","getDuration","getPrettyPresence","Velociraptor","bounce","suppressDisplay","rrInfo","oldTop","oldInfo","newElement","startTopOffset","startStyles","enterTransitionOpts","dateString","ReactDom","oldChildren","restingStyle","startStyle","_collectNode","transitionOpts","_domNode","easeOutBounce","pow2","_RoomDetailRow","RoomDetailRow","onDetailsClick","_SimpleRoomHeader","_onRoomAccountData","_onRoomNameChange","_rateLimitedUpdate","onShowRhsClick","onShareRoomClick","_hasUnreadPins","currentPinEvent","_hasPins","nameEditor","getRoomName","topicEditor","searchStatus","topicElement","saveButton","settingsButton","pinnedEventsButton","canSetRoomName","canSetRoomAvatar","canSetRoomTopic","RoomNameEditor","settingsHint","emojiTextClasses","mx_RoomHeader_settingsHint","RoomTopicEditor","roomAvatar","pinsIndicator","forgetButton","searchButton","shareRoomButton","rightPanelButtons","rightRow","manageIntegsButton","Receipt","STANDARD_TAGS_REGEX","isLoadingLeftRooms","totalRoomCount","incomingCallTag","_visibleRoomsForGroup","_visibleRooms","updateVisibleRoomsForTag","updateVisibleRooms","_tagStoreToken","_roomListStoreToken","_delayedRefreshRoomList","_delayedRefreshRoomListLoopCount","_updateStickyHeaders","_repositionIncomingCallBox","getTagNameForRoomId","onArchivedHeaderClick","scrollToPosition","onSubListHeaderClick","visibleGroupRooms","roomSet","totalRooms","filteredLists","isRoomVisible","filteredRooms","taggedRoom","_whenScrolling","_hideTooltip","incomingCallBox","scrollArea","scrollAreaOffset","scrollAreaHeight","bottomMargin","_initAndPositionStickyHeaders","initialise","stickies","getElementsByClassName","scrollAreaSufficient","originalHeight","scrollStuckOffset","stickyWrappers","stickyPosition","stickyHeight","stickyHeader","topStuckHeight","bottomStuckHeight","_getEmptyContent","RoomDropTarget","phraseForSection","_getHeaderItems","_makeGroupInviteTiles","GroupInviteTile","_collectGemini","incomingCallIfTaggedAs","labelForTagName","myId","defaultName","_placeholderName","invitedEmailMxid","threePidFetchError","_roomNameElement","joinBlock","previewBlock","spinnerIntro","myMember","kicked","banned","emailMatchBlock","acceptText","declineText","kickerMember","kickerName","reasonText","rejoinBlock","actionText","showSetupDialog","unverifiedDevice","onDontAskAgainClick","onDontAskAgain","onSetup","onSetupClick","backupSigStatus","sig","parseIntWithDefault","plEventsToLabels","plEventsToShow","BannedUser","canUnban","_onUnbanClick","unbanButton","_yankValueFromEvent","_yankContentFromEvent","powerLevelsChanged","tags_changed","isRoomPublished","_originalIsRoomPublished","_onRoomMemberMembership","stateWasSetDefer","mapPromiseToSnapshot","_loading","_calcSavePromises","saveAliases","_hasDiff","saveColor","ps","saveUrlPreviewSettings","saveRelatedGroups","saveEnableEncryption","saveBlacklistUnverifiedDevicesPerRoom","alias_settings","related_groups","color_settings","url_preview_settings","strA","strB","onPowerLevelsChanged","parentObj","_onHistoryRadioToggle","_onRoomAccessRadioToggle","_onToggle","checkedValue","uncheckedValue","_onTagChange","mayChangeRoomAccess","onEnableEncryptionClick","_onRoomUpgradeClick","RoomUpgradeDialog","_populateDefaultPlEvents","eventsSection","stateLevel","eventsLevel","desiredEvent","_openDevtools","_renderEncryptionSection","AliasSettings","ColorSettings","UrlPreviewSettings","RelatedGroupSettings","eventsLevels","userLevels","powerLevelDescriptors","notifications.room","banLevel","defaultUserLevel","currentUserLevel","canChangeLevels","canSetTag","relatedGroupsSection","privilegedUsersSection","mutedUsersSection","privilegedUsers","mutedUsers","userRole","plDiff","toLocaleLowerCase","bannedUsersSection","canBanUsers","banEvent","bannedBy","unfederatableSection","leaveButton","myMemberShip","tagsSection","addressWarning","aliasCount","inviteGuestWarning","powerSelectors","eventPowerSelectors","roomUpgradeButton","devtoolsButton","tooltipContainer","_renderTooltip","parentBox","tooltipClasses","onUpgradeClick","onThisRoomClick","onAllRoomsClick","searchButtonClasses","mx_SearchBar_searchButton","mx_SearchBar_searching","thisRoomClasses","mx_SearchBar_button","mx_SearchBar_unselected","allRoomsClasses","SearchableEntityList","emptyQueryShowsAll","showInputBox","focused","getSearchResults","setQuery","onQuerySubmit","_showAll","_createOverflowEntity","getJsx","presenceActiveAgo","msisdn_add_pending","_addMsisdnInput","_onPhoneNumberChange","_onAddMsisdnEditFinished","_addMsisdn","_onAddMsisdnSubmit","_collectAddMsisdnInput","addMsisdn","_promptForMsisdnVerificationCode","TextInputDialog","msgElements","should_verify","haveMsisdnToken","Uploading","avatarSet","setAvatarFromFile","newUrl","httpPromise","avatarImg","uploadSection","_changeDisplayName","onCheckPassword","oldPass","newPass","confirmPass","_changePassword","_optionallySetEmail","SetEmailDialog","onClickChange","old_input","new_input","confirmPassword","confirm_input","currentPassword","passwordLabel","deviceLoadError","selectedDevices","_renderDevice","_onDeviceSelectionToggled","_loadDevices","errtxt","lastSeenDelta","last_seen_ts","idA","idB","_makeDeleteRequest","InteractiveAuthDialog","DevicesPanelEntry","onDeviceToggled","_classes","_classes2","_deviceCompare","_onDisplayNameChanged","lastSeen","lastSeenDate","last_seen_ip","myDeviceClass","_startNewBackup","_deleteBackup","_verifyDevice","_onKeyBackupStatus","_restoreBackup","RestoreKeyBackupDialog","clientBackupStatus","backupSigStatuses","sigStatusSubstitutions","sigStatus","data-sigindex","_UserSettingsStore2","_notifications","LEGACY_RULES","im.vector.rule.contains_display_name","im.vector.rule.room_one_to_one","im.vector.rule.room_message","im.vector.rule.invite_for_me","im.vector.rule.call","im.vector.rule.notices","portLegacyActions","DISPLAY","masterPushRule","vectorPushRules","vectorContentRules","vectorState","PushRuleVectorState","externalPushRules","externalContentRules","onEnableNotificationsChange","onEnableDesktopNotificationsChange","onEnableDesktopNotificationBodyChange","onEnableAudioNotificationsChange","onEnableEmailNotificationsChange","emailPusherPromise","onNotifStateButtonClicked","vectorRuleId","newPushRuleVectorState","_setKeywordsPushRuleVectorState","getRule","_setPushRuleVectorState","onKeywordsClicked","should_leave","newKeywords","_setKeywords","deferreds","ruleDefinition","VectorPushRulesDefinitions","vectorStateToActions","_updatePushRuleActions","removeDeferreds","vectorContentRulesPatterns","_rule","pushRuleVectorStateKind","_addDisabledPushRule","_portRulesToNewAPI","needsUpdate","pushRulesPromise","rule_categories",".m.rule.master",".m.rule.contains_display_name",".m.rule.contains_user_name",".m.rule.roomnotif",".m.rule.room_one_to_one",".m.rule.encrypted_room_one_to_one",".m.rule.message",".m.rule.encrypted",".m.rule.invite_for_me",".m.rule.call",".m.rule.suppress_notices","defaultRules","master","vector","others","contentRules","ContentRules","parseContentRules","externalRules","vectorRuleIds","ruleToVectorState","otherRulesDescriptions",".m.rule.fallback","ruleDescription","pushersPromise","renderNotifRulesTableRow","renderNotifRulesTableRows","emailNotificationsRow","masterPushRuleDiv","emailThreepids","tp","externalKeywords","_rule3","devicesSection","advancedSettings","VectorPushRuleDefinition","loud","_categoriseContentRules","loud_but_disabled","on_but_disabled","_onCallViewClick","callForRoom","showVoice","PersistentApp","showCall","getVideoView","VideoView","voice","callRoom","onAnswerClick","incomingCallText","vid","getFullScreenElement","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","remote","setContainer","requestFullScreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullscreen","exitMethod","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","VideoFeed","localVideoFeedClasses","mx_VideoView_localVideoFeed_flipped","slate_prop_types_es","slate_es","isChange","isData","isInlineList","isLeafList","isMarkSet","isRangeList","isTextList","dist_module","slate_dev_environment_es_browser","slate_dev_environment_es_name","InputEvent","_name2","IS_FIREFOX","IS_SAFARI","IS_IE","IS_EDGE","IS_IOS","IS_MAC","HAS_INPUT_EVENTS_LEVEL_2","isomorphic_base64_browser","slate_base64_serializer_es","deserializeNode","HOTKEYS","moveWordBackward","moveWordForward","deleteBackward","deleteForward","extendBackward","extendForward","APPLE_HOTKEYS","moveLineBackward","moveLineForward","deleteLineBackward","deleteLineForward","deleteWordBackward","deleteWordForward","extendLineBackward","extendLineForward","transposeCharacter","WINDOWS_HOTKEYS","Hotkeys","IS_APPLE","slate_hotkeys_es_IS_WINDOWS","generic","apple","isGeneric","lib","isApple","isWindows","slate_hotkeys_es","memoize_one_esm","slate_react_es_Editor","cloneFragment","findDOMNode$1","findDOMRange","findNode","findRange","getEventRange","setEventTransfer","AfterPlugin","BeforePlugin","EVENT_HANDLERS","slate_react_es_slicedToArray","PLUGIN_PROPS","PARSER","OffsetKey","_matches","slate_react_es_Leaf","slate_react_es_initialiseProps","react_default","renderMarks","data-slate-leaf","_props3","data-slate-zero-width","isLastText","isLastLeaf","Text$1","Text$$1","_initialiseProps$1","renderLeaf","data-key","ImmutablePropTypes_default","pLast","nLast","slate_react_es_Void","Void","_initialiseProps$2","data-slate-spacer","data-slate-void","getChildrenDecorations","activeDecorations","immutable","childrenDecorations","keyOrders","globalOrder","endPoints","startKeyOrder","containingChildOrder","nextChildIndex","containingChild","getContainingChildOrder","isRangeStart","endKeyOrder","isRangeEnd","orderChildDecorations","Node$1","Node$$1","_initialiseProps$3","slate_dev_warning_es","getSelectionIndexes","getDecorations","isChildSelected","getTextDirection","findDOMPoint","createNodeIterator","NodeFilter","SHOW_TEXT","FILTER_ACCEPT","isBackward$$1","domAnchor","domFocus","ZERO_WIDTH_ATTRIBUTE","ZERO_WIDTH_SELECTOR","OFFSET_KEY_ATTRIBUTE","RANGE_SELECTOR","TEXT_SELECTOR","VOID_SELECTOR","findPoint","nativeNode","nativeOffset","_normalizeNodeAndOffs","getEditableChild","normalizeNodeAndOffset","nearestNode","nearestOffset","get_window_default","rangeNode","voidNode","createPoint","triedForward","triedBackward","native","StaticRange","_native","OVERFLOWS","IS_IOS_11","scrollToSelection","scroller","findScrollContainer","backward","selection_is_backward_default","cursorRect","getClientRects","yOffset","xOffset","scrollerTop","scrollerLeft","scrollerBordersY","scrollerBordersX","scrollerPaddingTop","scrollerPaddingBottom","scrollerPaddingLeft","scrollerPaddingRight","_window$getComputedSt","scrollerRect","cursorTop","cursorLeft","FIREFOX_NODE_TYPE_ACCESS_ERROR","slate_react_es_Content","Content","isUpdatingSelection","updateSelection","isBlurred","isInEditor","setBaseAndExtent","onNativeSelectionChange","throttle_default","onSelect","onBeforeInput","toRange","whiteSpace","wordWrap","WebkitUserModify","data-slate-editor","data-gramm","TRANSFER_TYPES","FRAGMENT","NODE","RICH","_value$selection","cloneContents","attach","setEndAfter","zw","isNewline","valFromSelection","plainText","slate_plain_serializer_es","setData","selectAllChildren","isPrevious","caretRangeFromPoint","caretPositionFromPoint","offsetNode","moveToPoint","FRAGMENT$1","HTML$1","TEXT$1","FRAGMENT_MATCHER","rich","embeddedTypes","getEmbeddedTypes","getAsFile","getTransferType","TEXT$2","mime","debug$5","isDraggingInternally","_event$getTargetRange","getTargetRanges","targetRange","inputType","onCopy","onCut","isVoidBlock","isVoidInline","selectionIncludesNode","onInput","lastLeaf","corrected","isSplitBlock","isDeleteBackward","deleteCharBackward","isDeleteForward","deleteCharForward","isDeleteLineBackward","isDeleteLineForward","isDeleteWordBackward","isDeleteWordForward","isRedo","isUndo","isMoveLineBackward","isMoveLineForward","isExtendLineBackward","isExtendLineForward","isMoveBackward","isMoveForward","isExtendBackward","_previousText","_startText2","_isPreviousInVoid","isExtendForward","_nextText","_startText3","_isNextInVoid","frag","anchorInline","focusBlock","setIsFocused","renderEditor","renderPlaceholder","isComposing","debug$6","compositionCount","isCopying","react_dom","onCompositionEnd","onCompositionStart","onDragEnter","onDragExit","onDragLeave","isCompose","isBold","isItalic","isTransposeCharacter","debug$7","_initialiseProps$4","resolvePlugins","resolveSchema","resolveStack","resolveValue","isChanging","operationsSize","resolveChange","beforePlugin","afterPlugin","editorPlugin","_prop","slate_react_es_iteratorNormalCompletion","slate_react_es_didIteratorError","slate_react_es_iteratorError","slate_react_es_step","slate_react_es_iterator","slate_react_es_index"],"mappings":"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OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,OAAA,cAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,KAAA,QAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,MAAA,aAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,YAAAC,IAAA,OAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,KAAA,QAAAC,IAAA,OAAAC,IAAA,OAAAC,IAAA,OAAAC,IAAA,OAAAC,IAAA,OAAAC,IAAA,OAAAC,IAAA,OAAAC,IAAA,OAAAC,IAAA,OAAAC,IAAA,OAAAC,IAAA,OAAAC,IAAA,OAAAC,IAAA,OAAAC,IAAA,OAAAC,IAAA,OAAAC,IAAA,OAAAC,IAAA,OAAAC,IAAA,OAAAC,IAAA,OAAAC,IAAA,OAAAC,IAAA,OAAAnoC,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAAE,IAAA,OAAA9Z,KAAA,QAAAE,KAAA,QAAAE,KAAA,QAAAE,KAAA,QAAAE,KAAA,QAAAE,KAAA,QAAAE,KAAA,QAAAE,KAAA,QAAAE,KAAA,QAAAE,KAAA,QAAAE,KAAA,QAAAE,KAAA,QAAAE,KAAA,QAAAE,KAAA,QAAAE,KAAA,QAAAE,KAAA,QAAAE,KAAA,QAAAE,KAAA,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AQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAA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CAC,UAAA,aACAC,2BAAA,+BACAC,yBAAA,6BACAC,SAAA,WACAC,kBAAA,oBACAC,cAAA,gBACAC,QAAA,EACAC,UAAA,cACAC,aAAA,iBACAC,YAAA,EACAC,eAAA,kBACAC,GAAA,EACAC,IAAA,EACAC,UAAA,EACAv/f,EAAA,EACAw/f,GAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,EACAC,aAAA,eACAC,iBAAA,mBACAC,QAAA,EACAC,UAAA,YACAC,WAAA,aACAC,SAAA,WACAC,aAAA,eACAC,cAAA,iBACAC,cAAA,iBACAC,kBAAA,oBACAC,MAAA,EACAC,UAAA,aACAC,UAAA,aACAC,YAAA,eACAC,aAAA,eACAC,YAAA,cACAC,YAAA,cACA7qB,KAAA,EACA8qB,iBAAA,mBACAC,UAAA,YACAC,aAAA,EACAljgB,KAAA,EACAmjgB,WAAA,aACAx2f,OAAA,EACAowK,QAAA,EACA8H,SAAA,EACA20M,MAAA,EACA4pI,OAAA,EACAC,YAAA,EACA3gf,OAAA,EACA+jK,SAAA,EACA68U,iBAAA,oBACAC,kBAAA,qBACAC,WAAA,cACAC,QAAA,WACAC,WAAA,aACAC,oBAAA,sBACAC,iBAAA,mBACAC,aAAA,eACAj8H,cAAA,iBACArlS,OAAA,EACAuha,UAAA,YACAC,UAAA,YACAC,UAAA,YACAC,cAAA,gBACAC,oBAAA,sBACAC,eAAA,iBACAxkgB,EAAA,EACAykgB,OAAA,EACAC,KAAA,OACAC,KAAA,OACAC,gBAAA,mBACAC,YAAA,cACAC,UAAA,YACAC,mBAAA,qBACAC,iBAAA,mBACAC,QAAA,EACAnhgB,OAAA,EACA68K,OAAA,EACAsqT,GAAA,EACAi6B,GAAA,EACAxkV,MAAA,EACAykV,KAAA,EACAC,eAAA,kBACAC,MAAA,EACAxwU,QAAA,EACAywU,iBAAA,mBACAC,iBAAA,mBACAC,MAAA,EACAC,aAAA,eACAprc,YAAA,cACAqrc,aAAA,eACAC,MAAA,EACAC,MAAA,EACAC,YAAA,cACAC,UAAA,aACAtlH,YAAA,eACAulH,sBAAA,yBACAC,uBAAA,0BACAnvf,OAAA,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Ak4N,iBAGAl4N,EAAAs4N,oBACAt4N,EAAAu4N,qBAGA+P,GAIA9slB,MAAA,4BAAAoiZ,EACAo4L,aAAA,EACAx3jB,WACW9tB,UAAA,iBAAA8K,MAAA,gCAMXA,MAAA,4BAAAoiZ,EACAo4L,aAAA,EACAx3jB,WACW9tB,UAAA,cAAA8K,MAAA,gCAMXA,MAAA,QA9UA,IACA,OACA,UACA,UACA,QACA,QACA,IACA,aACA,OACA,SACA,SACA,UACA,OACA,OACA,KACA,MACA,UACA,MACA,MACA,KACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,MACA,SACA,KACA,IACA,IACA,QACA,OACA,UACA,OACA,SACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,KACA,MACA,SAwQAtG,KAAA,SAAA0oZ,EACAo4L,aAAA,EACAx3jB,WACW9tB,UAAA,eAAA8K,MAAA,gCAMXA,MAAA,aArWA,QACA,SACA,eACA,aACA,SACA,cACA,QACA,QACA,OACA,OACA,WA2VAtG,KAAA,SAAA0oZ,IAKApiZ,MAAA,MA1XA,UACA,MACA,QACA,SACA,YACA,MACA,SACA,UACA,QACA,QACA,OACA,OACA,SA8WAtG,KAAA,aAIAwmlB,EAGA17N,EAAA44N,gBAGA54N,EAAAy4N,aAKA/nlB,UAAA,WACA8K,MAAA,kCACAs4kB,QAAA,QACAkC,aAAA,EACAx3jB,WACW9tB,UAAA,QAAA8K,MAAA,8BAEX9K,UAAA,SACA8K,MAAA,KACAC,IAAA,KACA+iB,UACA8pkB,EACA5M,EACA17N,EAAAk4N,iBACAl4N,EAAA44N,gBACA54N,EAAAy4N,YACAz4N,EAAAm4N,uBAUAznlB,UAAA,YACA8K,MAAA,QA1TA,gBACA,cACA,aACA,YACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,4BACA,OACA,sBACA,aACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,oBACA,kBACA,SACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,SACA,uBACA,aACA,aACA,cACA,eACA,eACA,eACA,QACA,OACA,YACA,QACA,eACA,cACA,aACA,cACA,oBACA,oBACA,oBACA,cACA,eACA,UACA,UACA,oBACA,gBACA,SACA,YACA,UACA,cACA,SACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,QACA,OACA,cACA,wBACA,eACA,yBACA,YACA,mBACA,eACA,aACA,eACA,yBACA,cACA,SACA,UACA,OACA,oBACA,kBACA,mBACA,WACA,UACA,UACA,kBACA,OACA,iBACA,cACA,aACA,mBACA,sBACA,kBACA,SACA,gBACA,cACA,eACA,aACA,QACA,OACA,aACA,YACA,aACA,YACA,WACA,YACA,WACA,YACA,SACA,OACA,SACA,aACA,kBACA,UACA,QACA,UACA,UACA,gBACA,iBACA,gBACA,gBACA,WACA,gBACA,aACA,aACA,UACA,iBACA,eACA,gBACA,cACA,mBACA,oBACA,oBACA,cACA,qBACA,iBACA,WACA,SACA,SACA,QACA,WACA,eACA,aACA,kBACA,kBACA,wBACA,uBACA,wBACA,cACA,gBACA,iBACA,cACA,iBACA,0BACA,MACA,YACA,mBACA,kBACA,aACA,mBACA,sBACA,sBACA,6BACA,eACA,iBACA,aACA,cACA,SACA,QACA,aACA,eACA,YACA,WAgHAsD,UAAA5J,KAAA,YACAm/kB,QAEA54kB,IAAA,MACA+iB,UACA8pkB,EACA5M,EACA17N,EAAAk4N,iBACAl4N,EAAAm4N,kBACAn4N,EAAA44N,gBACA54N,EAAAy4N,YACAz4N,EAAAu4N,sBAEAzE,QAAA,KACAE,UAAA,sBC/bAtplB,EAAAD,QAAA,SAAAu1X,GAu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AC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAA3rb,IAAA,IAAA4rb,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,MAAAC,IAAA,MAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,MAAAC,IAAA,MAAAC,IAAA,MAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,MAAAC,IAAA,KAAAC,IAA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","file":"bundles/c2932262ed6106cd4535/bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t4: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"bundles/\" + \"c2932262ed6106cd4535\" + \"/\" + ({}[chunkId]||chunkId) + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar head = document.getElementsByTagName('head')[0];\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\tvar error = new Error('Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')');\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\thead.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 750);\n","'use strict';\n\nmodule.exports = require('./lib/React');\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _typeof2 = require('babel-runtime/helpers/typeof');\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nexports._td = _td;\nexports._t = _t;\nexports.substitute = substitute;\nexports.replaceByRegexes = replaceByRegexes;\nexports.setMissingEntryGenerator = setMissingEntryGenerator;\nexports.setLanguage = setLanguage;\nexports.getAllLanguagesFromJson = getAllLanguagesFromJson;\nexports.getLanguagesFromBrowser = getLanguagesFromBrowser;\nexports.getNormalizedLanguageKeys = getNormalizedLanguageKeys;\nexports.normalizeLanguageKey = normalizeLanguageKey;\nexports.getCurrentLanguage = getCurrentLanguage;\n\nvar _browserRequest = require('browser-request');\n\nvar _browserRequest2 = _interopRequireDefault(_browserRequest);\n\nvar _counterpart = require('counterpart');\n\nvar _counterpart2 = _interopRequireDefault(_counterpart);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _SettingsStore = require('./settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar i18nFolder = 'i18n/';\n\n// Control whether to also return original, untranslated strings\n// Useful for debugging and testing\n/*\nCopyright 2017 MTRNord and Cooperative EITA\nCopyright 2017 Vector Creations Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ANNOTATE_STRINGS = false;\n\n// We use english strings as keys, some of which contain full stops\n_counterpart2.default.setSeparator('|');\n// Fall back to English\n_counterpart2.default.setFallbackLocale('en');\n\n// Function which only purpose is to mark that a string is translatable\n// Does not actually do anything. It's helpful for automatic extraction of translatable strings\nfunction _td(s) {\n return s;\n}\n\n// Wrapper for counterpart's translation function so that it handles nulls and undefineds properly\n// Takes the same arguments as counterpart.translate()\nfunction safeCounterpartTranslate(text, options) {\n // Horrible hack to avoid https://github.com/vector-im/riot-web/issues/4191\n // The interpolation library that counterpart uses does not support undefined/null\n // values and instead will throw an error. This is a problem since everywhere else\n // in JS land passing undefined/null will simply stringify instead, and when converting\n // valid ES6 template strings to i18n strings it's extremely easy to pass undefined/null\n // if there are no existing null guards. To avoid this making the app completely inoperable,\n // we'll check all the values for undefined/null and stringify them here.\n var count = void 0;\n\n if (options && (typeof options === 'undefined' ? 'undefined' : (0, _typeof3.default)(options)) === 'object') {\n count = options['count'];\n (0, _keys2.default)(options).forEach(function (k) {\n if (options[k] === undefined) {\n console.warn(\"safeCounterpartTranslate called with undefined interpolation name: \" + k);\n options[k] = 'undefined';\n }\n if (options[k] === null) {\n console.warn(\"safeCounterpartTranslate called with null interpolation name: \" + k);\n options[k] = 'null';\n }\n });\n }\n var translated = _counterpart2.default.translate(text, options);\n if (translated === undefined && count !== undefined) {\n // counterpart does not do fallback if no pluralisation exists\n // in the preferred language, so do it here\n translated = _counterpart2.default.translate(text, (0, _assign2.default)({}, options, { locale: 'en' }));\n }\n return translated;\n}\n\n/*\n * Translates text and optionally also replaces XML-ish elements in the text with e.g. React components\n * @param {string} text The untranslated text, e.g \"click <a>here</a> now to %(foo)s\".\n * @param {object} variables Variable substitutions, e.g { foo: 'bar' }\n * @param {object} tags Tag substitutions e.g. { 'a': (sub) => <a>{sub}</a> }\n *\n * In both variables and tags, the values to substitute with can be either simple strings, React components,\n * or functions that return the value to use in the substitution (e.g. return a React component). In case of\n * a tag replacement, the function receives as the argument the text inside the element corresponding to the tag.\n *\n * Use tag substitutions if you need to translate text between tags (e.g. \"<a>Click here!</a>\"), otherwise\n * you will end up with literal \"<a>\" in your output, rather than HTML. Note that you can also use variable\n * substitution to insert React components, but you can't use it to translate text between tags.\n *\n * @return a React <span> component if any non-strings were used in substitutions, otherwise a string\n */\nfunction _t(text, variables, tags) {\n // Don't do subsitutions in counterpart. We handle it ourselves so we can replace with React components\n // However, still pass the variables to counterpart so that it can choose the correct plural if count is given\n // It is enough to pass the count variable, but in the future counterpart might make use of other information too\n var args = (0, _assign2.default)({ interpolate: false }, variables);\n\n // The translation returns text so there's no XSS vector here (no unsafe HTML, no code execution)\n var translated = safeCounterpartTranslate(text, args);\n\n var substituted = substitute(translated, variables, tags);\n\n // For development/testing purposes it is useful to also output the original string\n // Don't do that for release versions\n if (ANNOTATE_STRINGS) {\n if (typeof substituted === 'string') {\n return '@@' + text + '##' + substituted + '@@';\n } else {\n return _react2.default.createElement(\n 'span',\n { className: 'translated-string', 'data-orig-string': text },\n substituted\n );\n }\n } else {\n return substituted;\n }\n}\n\n/*\n * Similar to _t(), except only does substitutions, and no translation\n * @param {string} text The text, e.g \"click <a>here</a> now to %(foo)s\".\n * @param {object} variables Variable substitutions, e.g { foo: 'bar' }\n * @param {object} tags Tag substitutions e.g. { 'a': (sub) => <a>{sub}</a> }\n *\n * The values to substitute with can be either simple strings, or functions that return the value to use in\n * the substitution (e.g. return a React component). In case of a tag replacement, the function receives as\n * the argument the text inside the element corresponding to the tag.\n *\n * @return a React <span> component if any non-strings were used in substitutions, otherwise a string\n */\nfunction substitute(text, variables, tags) {\n var regexpMapping = {};\n\n if (variables !== undefined) {\n for (var variable in variables) {\n regexpMapping['%\\\\(' + variable + '\\\\)s'] = variables[variable];\n }\n }\n\n if (tags !== undefined) {\n for (var tag in tags) {\n regexpMapping['(<' + tag + '>(.*?)<\\\\/' + tag + '>|<' + tag + '>|<' + tag + '\\\\s*\\\\/>)'] = tags[tag];\n }\n }\n return replaceByRegexes(text, regexpMapping);\n}\n\n/*\n * Replace parts of a text using regular expressions\n * @param {string} text The text on which to perform substitutions\n * @param {object} mapping A mapping from regular expressions in string form to replacement string or a\n * function which will receive as the argument the capture groups defined in the regexp. E.g.\n * { 'Hello (.?) World': (sub) => sub.toUpperCase() }\n *\n * @return a React <span> component if any non-strings were used in substitutions, otherwise a string\n */\nfunction replaceByRegexes(text, mapping) {\n // We initially store our output as an array of strings and objects (e.g. React components).\n // This will then be converted to a string or a <span> at the end\n var output = [text];\n\n // If we insert any components we need to wrap the output in a span. React doesn't like just an array of components.\n var shouldWrapInSpan = false;\n\n for (var regexpString in mapping) {\n // TODO: Cache regexps\n var regexp = new RegExp(regexpString);\n\n // Loop over what output we have so far and perform replacements\n // We look for matches: if we find one, we get three parts: everything before the match, the replaced part,\n // and everything after the match. Insert all three into the output. We need to do this because we can insert objects.\n // Otherwise there would be no need for the splitting and we could do simple replcement.\n var matchFoundSomewhere = false; // If we don't find a match anywhere we want to log it\n for (var outputIndex in output) {\n var inputText = output[outputIndex];\n if (typeof inputText !== 'string') {\n // We might have inserted objects earlier, don't try to replace them\n continue;\n }\n\n var match = inputText.match(regexp);\n if (!match) {\n continue;\n }\n matchFoundSomewhere = true;\n\n var capturedGroups = match.slice(2);\n\n // The textual part before the match\n var head = inputText.substr(0, match.index);\n\n // The textual part after the match\n var tail = inputText.substr(match.index + match[0].length);\n\n var replaced = void 0;\n // If substitution is a function, call it\n if (mapping[regexpString] instanceof Function) {\n replaced = mapping[regexpString].apply(null, capturedGroups);\n } else {\n replaced = mapping[regexpString];\n }\n\n if ((typeof replaced === 'undefined' ? 'undefined' : (0, _typeof3.default)(replaced)) === 'object') {\n shouldWrapInSpan = true;\n }\n\n output.splice(outputIndex, 1); // Remove old element\n\n // Insert in reverse order as splice does insert-before and this way we get the final order correct\n if (tail !== '') {\n output.splice(outputIndex, 0, tail);\n }\n\n // Here we also need to check that it actually is a string before comparing against one\n // The head and tail are always strings\n if (typeof replaced !== 'string' || replaced !== '') {\n output.splice(outputIndex, 0, replaced);\n }\n\n if (head !== '') {\n // Don't push empty nodes, they are of no use\n output.splice(outputIndex, 0, head);\n }\n }\n if (!matchFoundSomewhere) {\n // The current regexp did not match anything in the input\n // Missing matches is entirely possible because you might choose to show some variables only in the case\n // of e.g. plurals. It's still a bit suspicious, and could be due to an error, so log it.\n // However, not showing count is so common that it's not worth logging. And other commonly unused variables\n // here, if there are any.\n if (regexpString !== '%\\\\(count\\\\)s') {\n console.log('Could not find ' + regexp + ' in ' + text);\n }\n }\n }\n\n if (shouldWrapInSpan) {\n return _react2.default.createElement.apply(_react2.default, ['span', null].concat(output));\n } else {\n return output.join('');\n }\n}\n\n// Allow overriding the text displayed when no translation exists\n// Currently only used in unit tests to avoid having to load\n// the translations in riot-web\nfunction setMissingEntryGenerator(f) {\n _counterpart2.default.setMissingEntryGenerator(f);\n}\n\nfunction setLanguage(preferredLangs) {\n if (!Array.isArray(preferredLangs)) {\n preferredLangs = [preferredLangs];\n }\n\n var langToUse = void 0;\n var availLangs = void 0;\n return getLangsJson().then(function (result) {\n availLangs = result;\n\n for (var i = 0; i < preferredLangs.length; ++i) {\n if (availLangs.hasOwnProperty(preferredLangs[i])) {\n langToUse = preferredLangs[i];\n break;\n }\n }\n if (!langToUse) {\n // Fallback to en_EN if none is found\n langToUse = 'en';\n console.error(\"Unable to find an appropriate language\");\n }\n\n return getLanguage(i18nFolder + availLangs[langToUse].fileName);\n }).then(function (langData) {\n _counterpart2.default.registerTranslations(langToUse, langData);\n _counterpart2.default.setLocale(langToUse);\n _SettingsStore2.default.setValue(\"language\", null, _SettingsStore.SettingLevel.DEVICE, langToUse);\n console.log(\"set language to \" + langToUse);\n\n // Set 'en' as fallback language:\n if (langToUse != \"en\") {\n return getLanguage(i18nFolder + availLangs['en'].fileName);\n }\n }).then(function (langData) {\n if (langData) _counterpart2.default.registerTranslations('en', langData);\n });\n}\n\nfunction getAllLanguagesFromJson() {\n return getLangsJson().then(function (langsObject) {\n var langs = [];\n for (var langKey in langsObject) {\n if (langsObject.hasOwnProperty(langKey)) {\n langs.push({\n 'value': langKey,\n 'label': langsObject[langKey].label\n });\n }\n }\n return langs;\n });\n}\n\nfunction getLanguagesFromBrowser() {\n if (navigator.languages && navigator.languages.length) return navigator.languages;\n if (navigator.language) return [navigator.language];\n return [navigator.userLanguage || \"en\"];\n}\n\n/**\n * Turns a language string, normalises it,\n * (see normalizeLanguageKey) into an array of language strings\n * with fallback to generic languages\n * (eg. 'pt-BR' => ['pt-br', 'pt'])\n *\n * @param {string} language The input language string\n * @return {string[]} List of normalised languages\n */\nfunction getNormalizedLanguageKeys(language) {\n var languageKeys = [];\n var normalizedLanguage = this.normalizeLanguageKey(language);\n var languageParts = normalizedLanguage.split('-');\n if (languageParts.length == 2 && languageParts[0] == languageParts[1]) {\n languageKeys.push(languageParts[0]);\n } else {\n languageKeys.push(normalizedLanguage);\n if (languageParts.length == 2) {\n languageKeys.push(languageParts[0]);\n }\n }\n return languageKeys;\n}\n\n/**\n * Returns a language string with underscores replaced with\n * hyphens, and lowercased.\n */\nfunction normalizeLanguageKey(language) {\n return language.toLowerCase().replace(\"_\", \"-\");\n}\n\nfunction getCurrentLanguage() {\n return _counterpart2.default.getLocale();\n}\n\nfunction getLangsJson() {\n return new _bluebird2.default(function (resolve, reject) {\n (0, _browserRequest2.default)({ method: \"GET\", url: i18nFolder + 'languages.json' }, function (err, response, body) {\n if (err || response.status < 200 || response.status >= 300) {\n reject({ err: err, response: response });\n return;\n }\n resolve(JSON.parse(body));\n });\n });\n}\n\nfunction weblateToCounterpart(inTrs) {\n var outTrs = {};\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(inTrs)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n\n var keyParts = key.split('|', 2);\n if (keyParts.length === 2) {\n var obj = outTrs[keyParts[0]];\n if (obj === undefined) {\n obj = {};\n outTrs[keyParts[0]] = obj;\n }\n obj[keyParts[1]] = inTrs[key];\n } else {\n outTrs[key] = inTrs[key];\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return outTrs;\n}\n\nfunction getLanguage(langPath) {\n return new _bluebird2.default(function (resolve, reject) {\n (0, _browserRequest2.default)({ method: \"GET\", url: langPath }, function (err, response, body) {\n if (err || response.status < 200 || response.status >= 300) {\n reject({ err: err, response: response });\n return;\n }\n resolve(weblateToCounterpart(JSON.parse(body)));\n });\n });\n}\n//# sourceMappingURL=languageHandler.js.map","'use strict';\n\nvar _Skinner = require('./Skinner');\n\nvar _Skinner2 = _interopRequireDefault(_Skinner);\n\nvar _RtsClient = require('./RtsClient');\n\nvar _RtsClient2 = _interopRequireDefault(_RtsClient);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports.loadSkin = function (skinObject) {\n _Skinner2.default.load(skinObject);\n};\n\nmodule.exports.resetSkin = function () {\n _Skinner2.default.reset();\n};\n\nmodule.exports.getComponent = function (componentName) {\n return _Skinner2.default.getComponent(componentName);\n};\n\nmodule.exports.setFetch = function (fetchFunction) {\n _RtsClient2.default.setFetch(fetchFunction);\n};\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.Immutable = factory();\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step > 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n findEntry: function(predicate, context) {\n var found;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findLastEntry: function(predicate, context) {\n return this.toSeq().reverse().findEntry(predicate, context);\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n // Temporary warning about using length\n (function () {\n try {\n Object.defineProperty(IterablePrototype, 'length', {\n get: function () {\n if (!Iterable.noLengthWarning) {\n var stack;\n try {\n throw new Error();\n } catch (error) {\n stack = error.stack;\n }\n if (stack.indexOf('_wrapObject') === -1) {\n console && console.warn && console.warn(\n 'iterable.length has been deprecated, '+\n 'use iterable.size or iterable.count(). '+\n 'This warning will become a silent error in a future version. ' +\n stack\n );\n return this.size;\n }\n }\n }\n });\n } catch (e) {}\n })();\n\n\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLastKey: function(predicate, context) {\n return this.toSeq().reverse().findKey(predicate, context);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n lastKeyOf: function(searchValue) {\n return this.findLastKey(function(value ) {return is(value, searchValue)});\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.toKeyedSeq().keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.toKeyedSeq().reverse().keyOf(searchValue);\n return key === undefined ? -1 : key;\n\n // var index =\n // return this.toSeq().reverse().indexOf(searchValue);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var key = this.toKeyedSeq().findLastKey(predicate, context);\n return key === undefined ? -1 : key;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : value;\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd.\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _utils = require('matrix-js-sdk/lib/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _eventTimeline = require('matrix-js-sdk/lib/models/event-timeline');\n\nvar _eventTimeline2 = _interopRequireDefault(_eventTimeline);\n\nvar _eventTimelineSet = require('matrix-js-sdk/lib/models/event-timeline-set');\n\nvar _eventTimelineSet2 = _interopRequireDefault(_eventTimelineSet);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _createMatrixClient = require('./utils/createMatrixClient');\n\nvar _createMatrixClient2 = _interopRequireDefault(_createMatrixClient);\n\nvar _SettingsStore = require('./settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _MatrixActionCreators = require('./actions/MatrixActionCreators');\n\nvar _MatrixActionCreators2 = _interopRequireDefault(_MatrixActionCreators);\n\nvar _PhasedRollOut = require('./PhasedRollOut');\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Wrapper object for handling the js-sdk Matrix Client object in the react-sdk\n * Handles the creation/initialisation of client objects.\n * This module provides a singleton instance of this class so the 'current'\n * Matrix Client object is available easily.\n */\nvar MatrixClientPeg = function () {\n function MatrixClientPeg() {\n (0, _classCallCheck3.default)(this, MatrixClientPeg);\n\n this.matrixClient = null;\n\n // These are the default options used when when the\n // client is started in 'start'. These can be altered\n // at any time up to after the 'will_start_client'\n // event is finished processing.\n this.opts = {\n initialSyncLimit: 20\n };\n // the credentials used to init the current client object.\n // used if we tear it down & recreate it with a different store\n this._currentClientCreds = null;\n }\n\n /**\n * Sets the script href passed to the IndexedDB web worker\n * If set, a separate web worker will be started to run the IndexedDB\n * queries on.\n *\n * @param {string} script href to the script to be passed to the web worker\n */\n\n\n (0, _createClass3.default)(MatrixClientPeg, [{\n key: 'setIndexedDbWorkerScript',\n value: function setIndexedDbWorkerScript(script) {\n _createMatrixClient2.default.indexedDbWorkerScript = script;\n }\n }, {\n key: 'get',\n value: function get() {\n return this.matrixClient;\n }\n }, {\n key: 'unset',\n value: function unset() {\n this.matrixClient = null;\n\n _MatrixActionCreators2.default.stop();\n }\n\n /**\n * Replace this MatrixClientPeg's client with a client instance that has\n * Home Server / Identity Server URLs and active credentials\n */\n\n }, {\n key: 'replaceUsingCreds',\n value: function replaceUsingCreds(creds) {\n this._currentClientCreds = creds;\n this._createClient(creds);\n }\n }, {\n key: 'start',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _arr, _i, dbType, promise, CryptoStoreTooNewDialog, opts, LAZY_LOADING_FEATURE, _userId;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _arr = ['indexeddb', 'memory'];\n _i = 0;\n\n case 2:\n if (!(_i < _arr.length)) {\n _context.next = 24;\n break;\n }\n\n dbType = _arr[_i];\n _context.prev = 4;\n promise = this.matrixClient.store.startup();\n\n console.log(\"MatrixClientPeg: waiting for MatrixClient store to initialise\");\n _context.next = 9;\n return (0, _bluebird.resolve)(promise);\n\n case 9:\n return _context.abrupt('break', 24);\n\n case 12:\n _context.prev = 12;\n _context.t0 = _context['catch'](4);\n\n if (!(dbType === 'indexeddb')) {\n _context.next = 19;\n break;\n }\n\n console.error('Error starting matrixclient store - falling back to memory store', _context.t0);\n this.matrixClient.store = new _matrixJsSdk2.default.MatrixInMemoryStore({\n localStorage: global.localStorage\n });\n _context.next = 21;\n break;\n\n case 19:\n console.error('Failed to start memory store!', _context.t0);\n throw _context.t0;\n\n case 21:\n _i++;\n _context.next = 2;\n break;\n\n case 24:\n _context.prev = 24;\n\n if (!this.matrixClient.initCrypto) {\n _context.next = 28;\n break;\n }\n\n _context.next = 28;\n return (0, _bluebird.resolve)(this.matrixClient.initCrypto());\n\n case 28:\n _context.next = 34;\n break;\n\n case 30:\n _context.prev = 30;\n _context.t1 = _context['catch'](24);\n\n if (_context.t1.name === 'InvalidCryptoStoreError') {\n // The js-sdk found a crypto DB too new for it to use\n CryptoStoreTooNewDialog = _index2.default.getComponent(\"views.dialogs.CryptoStoreTooNewDialog\");\n\n _Modal2.default.createDialog(CryptoStoreTooNewDialog, {\n host: window.location.host\n });\n }\n // this can happen for a number of reasons, the most likely being\n // that the olm library was missing. It's not fatal.\n console.warn(\"Unable to initialise e2e: \" + _context.t1);\n\n case 34:\n opts = _utils2.default.deepCopy(this.opts);\n // the react sdk doesn't work without this, so don't allow\n\n opts.pendingEventOrdering = \"detached\";\n\n LAZY_LOADING_FEATURE = \"feature_lazyloading\";\n\n if (_SettingsStore2.default.isFeatureEnabled(LAZY_LOADING_FEATURE)) {\n _userId = this.matrixClient.credentials.userId;\n\n if ((0, _PhasedRollOut.phasedRollOutExpiredForUser)(_userId, LAZY_LOADING_FEATURE, Date.now())) {\n opts.lazyLoadMembers = true;\n }\n }\n\n // Connect the matrix client to the dispatcher\n _MatrixActionCreators2.default.start(this.matrixClient);\n\n console.log('MatrixClientPeg: really starting MatrixClient');\n _context.next = 42;\n return (0, _bluebird.resolve)(this.get().startClient(opts));\n\n case 42:\n console.log('MatrixClientPeg: MatrixClient started');\n\n case 43:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 12], [24, 30]]);\n }));\n\n function start() {\n return _ref.apply(this, arguments);\n }\n\n return start;\n }()\n }, {\n key: 'getCredentials',\n value: function getCredentials() {\n return {\n homeserverUrl: this.matrixClient.baseUrl,\n identityServerUrl: this.matrixClient.idBaseUrl,\n userId: this.matrixClient.credentials.userId,\n deviceId: this.matrixClient.getDeviceId(),\n accessToken: this.matrixClient.getAccessToken(),\n guest: this.matrixClient.isGuest()\n };\n }\n\n /**\n * Return the server name of the user's home server\n * Throws an error if unable to deduce the home server name\n * (eg. if the user is not logged in)\n */\n\n }, {\n key: 'getHomeServerName',\n value: function getHomeServerName() {\n var matches = /^@.+:(.+)$/.exec(this.matrixClient.credentials.userId);\n if (matches === null || matches.length < 1) {\n throw new Error(\"Failed to derive home server name from user ID!\");\n }\n return matches[1];\n }\n }, {\n key: '_createClient',\n value: function _createClient(creds, useIndexedDb) {\n var opts = {\n baseUrl: creds.homeserverUrl,\n idBaseUrl: creds.identityServerUrl,\n accessToken: creds.accessToken,\n userId: creds.userId,\n deviceId: creds.deviceId,\n timelineSupport: true,\n forceTURN: _SettingsStore2.default.getValue('webRtcForceTURN', false)\n };\n\n this.matrixClient = (0, _createMatrixClient2.default)(opts, useIndexedDb);\n\n // we're going to add eventlisteners for each matrix event tile, so the\n // potential number of event listeners is quite high.\n this.matrixClient.setMaxListeners(500);\n\n this.matrixClient.setGuest(Boolean(creds.guest));\n\n var notifTimelineSet = new _eventTimelineSet2.default(null, {\n timelineSupport: true\n });\n // XXX: what is our initial pagination token?! it somehow needs to be synchronised with /sync.\n notifTimelineSet.getLiveTimeline().setPaginationToken(\"\", _eventTimeline2.default.BACKWARDS);\n this.matrixClient.setNotifTimelineSet(notifTimelineSet);\n }\n }]);\n return MatrixClientPeg;\n}();\n\nif (!global.mxMatrixClientPeg) {\n global.mxMatrixClientPeg = new MatrixClientPeg();\n}\nexports.default = global.mxMatrixClientPeg;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MatrixClientPeg.js.map","/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2018 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.5.2\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar SomePromiseArray = Promise._SomePromiseArray;\nfunction any(promises) {\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(1);\n ret.setUnwrap();\n ret.init();\n return promise;\n}\n\nPromise.any = function (promises) {\n return any(promises);\n};\n\nPromise.prototype.any = function () {\n return any(this);\n};\n\n};\n\n},{}],2:[function(_dereq_,module,exports){\n\"use strict\";\nvar firstLineError;\ntry {throw new Error(); } catch (e) {firstLineError = e;}\nvar schedule = _dereq_(\"./schedule\");\nvar Queue = _dereq_(\"./queue\");\nvar util = _dereq_(\"./util\");\n\nfunction Async() {\n this._customScheduler = false;\n this._isTickUsed = false;\n this._lateQueue = new Queue(16);\n this._normalQueue = new Queue(16);\n this._haveDrainedQueues = false;\n this._trampolineEnabled = true;\n var self = this;\n this.drainQueues = function () {\n self._drainQueues();\n };\n this._schedule = schedule;\n}\n\nAsync.prototype.setScheduler = function(fn) {\n var prev = this._schedule;\n this._schedule = fn;\n this._customScheduler = true;\n return prev;\n};\n\nAsync.prototype.hasCustomScheduler = function() {\n return this._customScheduler;\n};\n\nAsync.prototype.enableTrampoline = function() {\n this._trampolineEnabled = true;\n};\n\nAsync.prototype.disableTrampolineIfNecessary = function() {\n if (util.hasDevTools) {\n this._trampolineEnabled = false;\n }\n};\n\nAsync.prototype.haveItemsQueued = function () {\n return this._isTickUsed || this._haveDrainedQueues;\n};\n\n\nAsync.prototype.fatalError = function(e, isNode) {\n if (isNode) {\n process.stderr.write(\"Fatal \" + (e instanceof Error ? e.stack : e) +\n \"\\n\");\n process.exit(2);\n } else {\n this.throwLater(e);\n }\n};\n\nAsync.prototype.throwLater = function(fn, arg) {\n if (arguments.length === 1) {\n arg = fn;\n fn = function () { throw arg; };\n }\n if (typeof setTimeout !== \"undefined\") {\n setTimeout(function() {\n fn(arg);\n }, 0);\n } else try {\n this._schedule(function() {\n fn(arg);\n });\n } catch (e) {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n};\n\nfunction AsyncInvokeLater(fn, receiver, arg) {\n this._lateQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncInvoke(fn, receiver, arg) {\n this._normalQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncSettlePromises(promise) {\n this._normalQueue._pushOne(promise);\n this._queueTick();\n}\n\nif (!util.hasDevTools) {\n Async.prototype.invokeLater = AsyncInvokeLater;\n Async.prototype.invoke = AsyncInvoke;\n Async.prototype.settlePromises = AsyncSettlePromises;\n} else {\n Async.prototype.invokeLater = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvokeLater.call(this, fn, receiver, arg);\n } else {\n this._schedule(function() {\n setTimeout(function() {\n fn.call(receiver, arg);\n }, 100);\n });\n }\n };\n\n Async.prototype.invoke = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvoke.call(this, fn, receiver, arg);\n } else {\n this._schedule(function() {\n fn.call(receiver, arg);\n });\n }\n };\n\n Async.prototype.settlePromises = function(promise) {\n if (this._trampolineEnabled) {\n AsyncSettlePromises.call(this, promise);\n } else {\n this._schedule(function() {\n promise._settlePromises();\n });\n }\n };\n}\n\nfunction _drainQueue(queue) {\n while (queue.length() > 0) {\n _drainQueueStep(queue);\n }\n}\n\nfunction _drainQueueStep(queue) {\n var fn = queue.shift();\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n } else {\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n}\n\nAsync.prototype._drainQueues = function () {\n _drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n _drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29,\"./util\":36}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & (~2097152);\n }\n};\n\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (!true) {\nvar makeMethodCaller = function (methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n var ret = cache[name];\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n cache[\" size\"] = keys.length - 256;\n }\n }\n return ret;\n};\n\ngetMethodCaller = function(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n return fn;\n}\n\nfunction caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);;\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n if (maybeCaller !== null) {\n return this._then(\n maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n return obj[this];\n}\nfunction indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n var isIndex = (typeof propertyName === \"number\");\n var getter;\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (item != null && item.prototype instanceof Error)) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n Context.deactivateLongStackTraces = function() {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context) {\nvar getDomain = Promise._getDomain;\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar es5 = _dereq_(\"./es5\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (true ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n var self = this;\n setTimeout(function() {\n self._notifyUnhandledRejection();\n }, 1);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var domain = getDomain();\n possiblyUnhandledRejection =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var domain = getDomain();\n unhandledRejectionHandled =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace;\n config.longStackTraces = true;\n disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;\n Context.deactivateLongStackTraces();\n async.enableTrampoline();\n config.longStackTraces = false;\n };\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n Context.activateLongStackTraces();\n async.disableTrampolineIfNecessary();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\nvar fireDomEvent = (function() {\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var eventData = {\n detail: event,\n cancelable: true\n };\n es5.defineProperty(\n eventData, \"promise\", {value: event.promise});\n es5.defineProperty(eventData, \"reason\", {value: event.reason});\n var domEvent = new CustomEvent(name.toLowerCase(), eventData);\n return !util.global.dispatchEvent(domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = new Event(name.toLowerCase(), {\n cancelable: true\n });\n domEvent.detail = event;\n es5.defineProperty(domEvent, \"promise\", {value: event.promise});\n es5.defineProperty(domEvent, \"reason\", {value: event.reason});\n return !util.global.dispatchEvent(domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name.toLowerCase(), false, true,\n event);\n return !util.global.dispatchEvent(domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar fireGlobalEvent = (function() {\n if (util.isNode) {\n return function() {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function() {\n return false;\n };\n }\n return function(name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._dereferenceTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n}\n\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction longStackTracesDereferenceTrace() {\n this._trace = undefined;\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n}\n\nfunction reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n}\n\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = firstLineError.stack.split(\"\\n\");\n var lastStackLines = lastLineError.stack.split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\n return boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n}\n\nmodule.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n};\n\n},{\"./es5\":13,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n} else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\n catch(e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function() {\n return true;\n }\n };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"expecting an object but got \" + util.classString(item)\n ));\n }\n }\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n apiRejection,\n INTERNAL,\n tryConvertToPromise,\n Proxyable,\n debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n var result = tryCatch(yieldHandlers[i])(value);\n traceParent._popContext();\n if (result === errorObj) {\n traceParent._pushContext();\n var ret = Promise.reject(errorObj.e);\n traceParent._popContext();\n return ret;\n }\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n this._promise = internal.lastly(function() {\n return _finallyPromise;\n });\n internal._captureStackTrace();\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n }\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\"\n ? [yieldHandler].concat(yieldHandlers)\n : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n this._promise = this._generator = null;\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n this._finallyPromise = null;\n }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n var result;\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\n \"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n reason);\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n result = tryCatch(this._generator[\"return\"]).call(this._generator,\n undefined);\n this._promise._popContext();\n }\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n this._yieldedPromise = null;\n this._promise._pushContext();\n var result = tryCatch(this._generator.next).call(this._generator, value);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n this._yieldedPromise = null;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n var result = tryCatch(this._generator[\"throw\"])\n .call(this._generator, reason);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n};\n\nPromiseSpawn.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver =\n this._generatorFunction = undefined;\n this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n if (result === errorObj) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n if (result.done === true) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n if (!(maybePromise instanceof Promise)) {\n maybePromise =\n promiseFromYieldHandler(maybePromise,\n this._yieldHandlers,\n this._promise);\n if (maybePromise === null) {\n this._promiseRejected(\n new TypeError(\n \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n \"From coroutine:\\u000a\" +\n this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n )\n );\n return;\n }\n }\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n this._yieldedPromise = maybePromise;\n maybePromise._proxy(this, null);\n } else if (((bitField & 33554432) !== 0)) {\n Promise._async.invoke(\n this._promiseFulfilled, this, maybePromise._value()\n );\n } else if (((bitField & 16777216) !== 0)) {\n Promise._async.invoke(\n this._promiseRejected, this, maybePromise._reason()\n );\n } else {\n this._promiseCancelled();\n }\n }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n spawn._promiseFulfilled(undefined);\n return ret;\n };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n spawn._run(Promise.spawn);\n return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async,\n getDomain) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!true) {\nif (canEvaluate) {\n var thenCallback = function(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\n }\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n\n\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n maybePromise._value(), holder);\n } else if (((bitField & 16777216) !== 0)) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var domain = getDomain();\n if (domain !== null) {\n holder.fn = util.domainBind(domain, holder.fn);\n }\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var args = [].slice.call(arguments);;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n this._promise._captureStackTrace();\n var domain = getDomain();\n this._callback = domain === null ? fn : util.domainBind(domain, fn);\n this._preservedValues = _filter === INTERNAL\n ? new Array(this.length())\n : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = (index * -1) - 1;\n values[index] = value;\n if (limit >= 1) {\n this._inFlight--;\n this._drainQueue();\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n this._queue.push(index);\n return false;\n }\n if (preservedValues !== null) preservedValues[index] = value;\n\n var promise = this._promise;\n var callback = this._callback;\n var receiver = promise._boundValue();\n promise._pushContext();\n var ret = tryCatch(callback).call(receiver, value, index, length);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n promise\n );\n if (ret === errorObj) {\n this._reject(ret.e);\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n maybePromise._proxy(this, (index + 1) * -1);\n return false;\n } else if (((bitField & 33554432) !== 0)) {\n ret = maybePromise._value();\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(maybePromise._reason());\n return true;\n } else {\n this._cancel();\n return true;\n }\n }\n values[index] = ret;\n }\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n return true;\n }\n return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n this._promiseFulfilled(values[index], index);\n }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n ret.length = j;\n this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n if (options !== undefined) {\n if (typeof options === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(\n new TypeError(\"'concurrency' must be a number but it is \" +\n util.classString(options.concurrency)));\n }\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\n \"options argument must be an object but it is \" +\n util.classString(options)));\n }\n }\n limit = typeof limit === \"number\" &&\n isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n};\n};\n\n},{\"./util\":36}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);;\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret =\n tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nfunction successAdapter(val, nodeback) {\n var promise = this;\n var receiver = promise._boundValue();\n var ret = val === undefined\n ? tryCatch(nodeback).call(receiver, null)\n : tryCatch(nodeback).call(receiver, null, val);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\nfunction errorAdapter(reason, nodeback) {\n var promise = this;\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n this._then(\n adapter,\n errorAdapter,\n undefined,\n this,\n nodeback\n );\n }\n return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\n\nvar getDomain;\nif (util.isNode) {\n getDomain = function() {\n var ret = process.domain;\n if (ret === undefined) ret = null;\n return ret;\n };\n} else {\n getDomain = function() {\n return null;\n };\n}\nutil.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n _dereq_(\"./promise_array\")(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\nvar debug = _dereq_(\"./debuggability\")(Promise, Context);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((this._bitField & 2097152) !== 0)) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var domain = getDomain();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\n if (((bitField & 33554432) !== 0)) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if (((bitField & 16777216) !== 0)) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: domain === null ? handler\n : (typeof handler === \"function\" &&\n util.domainBind(domain, handler)),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise, receiver, domain);\n }\n\n return promise;\n};\n\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n this._bitField = this._bitField | 134217728;\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n domain\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n if (typeof fulfill === \"function\") {\n this[base + 0] =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\n this._setFollowee(promise);\n } else if (((bitField & 33554432) !== 0)) {\n this._fulfill(promise._value());\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n var promiseCreated = promise._popContext();\n bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = ((bitField & 134217728) !== 0);\n if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if (((bitField & 33554432) !== 0)) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if (((bitField & 134217728) !== 0)) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n this._dereferenceTrace();\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = (bitField & 65535);\n\n if (len > 0) {\n if (((bitField & 16842752) !== 0)) {\n var reason = this._fulfillmentHandler0;\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n};\n\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\nPromise.Promise = Promise;\nPromise.version = \"3.5.2\";\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./call_get.js')(Promise);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./filter.js')(Promise, INTERNAL);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./any.js')(Promise);\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \n function fillTypes(value) { \n var p = new Promise(INTERNAL); \n p._fulfillmentHandler0 = value; \n p._rejectionHandler0 = value; \n p._promise0 = value; \n p._receiver0 = value; \n } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \n fillTypes(1); \n fillTypes(function(){}); \n fillTypes(undefined); \n fillTypes(false); \n fillTypes(new Promise(INTERNAL)); \n debug.setBounds(Async.firstLineError, util.lastLineError); \n return Promise; \n\n};\n\n},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36}],23:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if (((bitField & 50397184) === 0)) {\n this._promise._setAsyncGuaranteed();\n return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\n } else if (((bitField & 33554432) !== 0)) {\n values = values._value();\n } else if (((bitField & 16777216) !== 0)) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if (((bitField & 50397184) === 0)) {\n maybePromise._proxy(this, i);\n this._values[i] = maybePromise;\n } else if (((bitField & 33554432) !== 0)) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if (((bitField & 16777216) !== 0)) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n \"arity\", \"length\",\n \"name\",\n \"arguments\",\n \"caller\",\n \"callee\",\n \"prototype\",\n \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n return util.isIdentifier(name) &&\n name.charAt(0) !== \"_\" &&\n name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n }\n catch (e) {\n return false;\n }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix,\n defaultPromisified);\n return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\"\n .replace(\"%s\", suffix));\n }\n }\n }\n }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter\n ? true : defaultFilter(key, value, obj);\n if (typeof value === \"function\" &&\n !isPromisified(value) &&\n !hasPromisified(obj, key, suffix) &&\n filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (!true) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n for(var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n return util.filledRange(\n Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined\n ? \"ret = callback({{args}}, nodeback); break;\\n\"\n : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] +\":\" +\n generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", (shouldProxyThis\n ? \"ret = callback.apply(this, args);\\n\"\n : \"ret = callback.apply(receiver, args);\\n\"));\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\"\n ? (\"this != null ? this['\"+callback+\"'] : fn\")\n : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n .replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\",\n \"fn\",\n \"receiver\",\n \"withAppended\",\n \"maybeWrapAsError\",\n \"nodebackForPromise\",\n \"tryCatch\",\n \"errorObj\",\n \"notEnumerableProp\",\n \"INTERNAL\",\n body)(\n Promise,\n fn,\n receiver,\n withAppended,\n maybeWrapAsError,\n nodebackForPromise,\n util.tryCatch,\n util.errorObj,\n util.notEnumerableProp,\n INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = (function() {return this;})();\n var method = callback;\n if (typeof method === \"string\") {\n callback = fn;\n }\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n var cb = typeof method === \"string\" && this !== defaultThis\n ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch(e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n ? makeNodePromisifiedEval\n : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods =\n promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i+= 2) {\n var key = methods[i];\n var fn = methods[i+1];\n var promisifiedKey = key + suffix;\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] =\n makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function() {\n return makeNodePromisified(key, THIS, key,\n fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n util.toFastProperties(obj);\n return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined,\n callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n if (isPromisified(fn)) {\n return fn;\n }\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && typeof target !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n\n var keys = util.inheritedDataKeys(target);\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n if (keys[i] !== \"constructor\" &&\n util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier,\n multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n})();\n\nvar entriesToMap = function(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n this.constructor$(entries);\n this._isMap = isMap;\n this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n var val;\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n this._resolve(val);\n return true;\n }\n return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n};\n\nfunction props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(\n Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n return ret;\n}\n\nPromise.prototype.props = function () {\n return props(this);\n};\n\nPromise.props = function (promises) {\n return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\n var wrapMask = this._capacity - 1;\n this[(j + 0) & wrapMask] = fn;\n this[(j + 1) & wrapMask] = receiver;\n this[(j + 2) & wrapMask] = arg;\n this._length = length;\n};\n\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n return promise.then(function(array) {\n return race(array, promise);\n });\n};\n\nfunction race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null)\n return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n return ret;\n}\n\nPromise.race = function (promises) {\n return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var domain = getDomain();\n this._fn = domain === null ? fn : util.domainBind(domain, fn);\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n initialValue._attachCancellationCallback(this);\n }\n this._initialValue = initialValue;\n this._currentCancellable = null;\n if(_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n this._promise._captureStackTrace();\n this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n if (this._eachValues !== undefined && \n this._eachValues !== null && \n accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n this._resolve(this._eachValues !== undefined ? this._eachValues\n : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n this._promise._resolveCallback(value);\n this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n this._resultCancelled$();\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value\n ._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n}\n\nfunction gotAccum(accum) {\n this.accum = accum;\n this.array._gotAccum(accum);\n var value = tryConvertToPromise(this.value, this.array._promise);\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n}\n\nfunction gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n promise._pushContext();\n var ret;\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(),\n this.accum, value, this.index, this.length);\n }\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n promise\n );\n return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova))) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function() {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function() {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n })();\n} else if (typeof setImmediate !== \"undefined\") {\n schedule = function (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n if (this._howMany === 0) {\n this._resolve([]);\n return;\n }\n this._init$(undefined, -5);\n var isArrayResolved = isArray(this._values);\n if (!this._isResolved() &&\n isArrayResolved &&\n this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n};\n\nSomePromiseArray.prototype.init = function () {\n this._initialized = true;\n this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n return true;\n }\n return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n this._addRejected(CANCELLATION);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n return true;\n }\n return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" +\n this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n}\n\nPromise.some = function (promises, howMany) {\n return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle) {\n this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n if (value !== undefined) {\n ret = Promise.resolve(value)\n ._then(afterValue, null, null, ms, undefined);\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function() { ret._fulfill(); }, +ms);\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n ret._captureStackTrace();\n }\n ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n var err;\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n util.markAsOriginatingFromRejection(err);\n promise._attachExtraTrace(err);\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n};\n\nfunction successClear(value) {\n clearTimeout(this.handle);\n return value;\n}\n\nfunction failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n }\n\n return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n var TypeError = _dereq_(\"./errors\").TypeError;\n var inherits = _dereq_(\"./util\").inherits;\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function(){throw e;}, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n if (maybePromise !== thenable &&\n typeof thenable._isDisposable === \"function\" &&\n typeof thenable._getDisposer === \"function\" &&\n thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n return maybePromise;\n }\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n if (maybePromise instanceof Promise &&\n maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(\n maybePromise._getDisposer().tryDispose(inspection),\n resources.promise);\n } catch (e) {\n return thrower(e);\n }\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower,\n null, null, null);\n }\n }\n iterator();\n }\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function(inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL\n ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n this._promise._unsetDisposable();\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return (d != null &&\n typeof d.resource === \"function\" &&\n typeof d.tryDispose === \"function\");\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n return value.promise();\n }\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length-1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function() {\n var len = this.length;\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\n \"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var input;\n var spreadArgs = true;\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n var resources = new ResourceList(len);\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n if (maybePromise instanceof Promise) {\n resource =\n maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources)\n .then(function(inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n inspections[i] = inspection.value();\n }\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs\n ? fn.apply(undefined, inspections) : fn(inspections);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n\n var promise = resultPromise.lastly(function() {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n promise._setOnCancel(resources);\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & (~131072);\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n throw new TypeError();\n };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n}\n\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function(obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var receiver = new FakeConstructor();\n function ic() {\n return typeof receiver.foo;\n }\n ic();\n ic();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj instanceof Error ||\n (obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\");\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n return Array.from(v);\n } : function(v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if ({}.toString.call(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nfunction domainBind(self, cb) {\n return self.bind(cb);\n}\n\nvar ret = {\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n hasDevTools: typeof chrome !== \"undefined\" && chrome &&\n typeof chrome.loadTimes === \"function\",\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n domainBind: domainBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version = process.versions.node.split(\".\").map(Number);\n return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13}]},{},[4])(4)\n}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = require('babel-runtime/helpers/get');\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar flux = require(\"flux\");\n\nvar MatrixDispatcher = function (_flux$Dispatcher) {\n (0, _inherits3.default)(MatrixDispatcher, _flux$Dispatcher);\n\n function MatrixDispatcher() {\n (0, _classCallCheck3.default)(this, MatrixDispatcher);\n return (0, _possibleConstructorReturn3.default)(this, (MatrixDispatcher.__proto__ || (0, _getPrototypeOf2.default)(MatrixDispatcher)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(MatrixDispatcher, [{\n key: 'dispatch',\n\n /**\n * @param {Object|function} payload Required. The payload to dispatch.\n * If an Object, must contain at least an 'action' key.\n * If a function, must have the signature (dispatch) => {...}.\n * @param {boolean=} sync Optional. Pass true to dispatch\n * synchronously. This is useful for anything triggering\n * an operation that the browser requires user interaction\n * for.\n */\n value: function dispatch(payload, sync) {\n var _this2 = this;\n\n // Allow for asynchronous dispatching by accepting payloads that have the\n // type `function (dispatch) {...}`\n if (typeof payload === 'function') {\n payload(function (action) {\n _this2.dispatch(action, sync);\n });\n return;\n }\n\n if (sync) {\n (0, _get3.default)(MatrixDispatcher.prototype.__proto__ || (0, _getPrototypeOf2.default)(MatrixDispatcher.prototype), 'dispatch', this).call(this, payload);\n } else {\n // Unless the caller explicitly asked for us to dispatch synchronously,\n // we always set a timeout to do this: The flux dispatcher complains\n // if you dispatch from within a dispatch, so rather than action\n // handlers having to worry about not calling anything that might\n // then dispatch, we just do dispatches asynchronously.\n setTimeout((0, _get3.default)(MatrixDispatcher.prototype.__proto__ || (0, _getPrototypeOf2.default)(MatrixDispatcher.prototype), 'dispatch', this).bind(this, payload), 0);\n }\n }\n }]);\n return MatrixDispatcher;\n}(flux.Dispatcher);\n\nif (global.mxDispatcher === undefined) {\n global.mxDispatcher = new MatrixDispatcher();\n}\nmodule.exports = global.mxDispatcher;\n//# sourceMappingURL=dispatcher.js.map","module.exports = { \"default\": require(\"core-js/library/fn/object/get-prototype-of\"), __esModule: true };","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _Analytics = require('./Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\nvar ReactDOM = require('react-dom');\n\n\nvar DIALOG_CONTAINER_ID = \"mx_Dialog_Container\";\n\n/**\n * Wrap an asynchronous loader function with a react component which shows a\n * spinner until the real component loads.\n */\nvar AsyncWrapper = React.createClass({\n displayName: 'AsyncWrapper',\n\n propTypes: {\n /** A promise which resolves with the real component\n */\n prom: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n component: null,\n error: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this._unmounted = false;\n // XXX: temporary logging to try to diagnose\n // https://github.com/vector-im/riot-web/issues/3148\n console.log('Starting load of AsyncWrapper for modal');\n this.props.prom.then(function (result) {\n if (_this._unmounted) {\n return;\n }\n // Take the 'default' member if it's there, then we support\n // passing in just an import()ed module, since ES6 async import\n // always returns a module *namespace*.\n var component = result.default ? result.default : result;\n _this.setState({ component: component });\n }).catch(function (e) {\n console.warn('AsyncWrapper promise failed', e);\n _this.setState({ error: e });\n });\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n _onWrapperCancelClick: function _onWrapperCancelClick() {\n this.props.onFinished(false);\n },\n\n render: function render() {\n var _props = this.props,\n loader = _props.loader,\n otherProps = (0, _objectWithoutProperties3.default)(_props, ['loader']);\n\n if (this.state.component) {\n var Component = this.state.component;\n return React.createElement(Component, otherProps);\n } else if (this.state.error) {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n return React.createElement(\n BaseDialog,\n { onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)(\"Error\")\n },\n (0, _languageHandler._t)(\"Unable to load! Check your network connectivity and try again.\"),\n React.createElement(DialogButtons, { primaryButton: (0, _languageHandler._t)(\"Dismiss\"),\n onPrimaryButtonClick: this._onWrapperCancelClick,\n hasCancel: false\n })\n );\n } else {\n // show a spinner until the component is loaded.\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n return React.createElement(Spinner, null);\n }\n }\n});\n\nvar ModalManager = function () {\n function ModalManager() {\n (0, _classCallCheck3.default)(this, ModalManager);\n\n this._counter = 0;\n\n // The modal to prioritise over all others. If this is set, only show\n // this modal. Remove all other modals from the stack when this modal\n // is closed.\n this._priorityModal = null;\n // A list of the modals we have stacked up, with the most recent at [0]\n this._modals = [\n /* {\n elem: React component for this dialog\n onFinished: caller-supplied onFinished callback\n className: CSS class for the dialog wrapper div\n } */\n ];\n\n this.closeAll = this.closeAll.bind(this);\n }\n\n (0, _createClass3.default)(ModalManager, [{\n key: 'getOrCreateContainer',\n value: function getOrCreateContainer() {\n var container = document.getElementById(DIALOG_CONTAINER_ID);\n\n if (!container) {\n container = document.createElement(\"div\");\n container.id = DIALOG_CONTAINER_ID;\n document.body.appendChild(container);\n }\n\n return container;\n }\n }, {\n key: 'createTrackedDialog',\n value: function createTrackedDialog(analyticsAction, analyticsInfo) {\n _Analytics2.default.trackEvent('Modal', analyticsAction, analyticsInfo);\n\n for (var _len = arguments.length, rest = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n rest[_key - 2] = arguments[_key];\n }\n\n return this.createDialog.apply(this, rest);\n }\n }, {\n key: 'createDialog',\n value: function createDialog(Element) {\n for (var _len2 = arguments.length, rest = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n rest[_key2 - 1] = arguments[_key2];\n }\n\n return this.createDialogAsync.apply(this, [new _promise2.default(function (resolve) {\n return resolve(Element);\n })].concat(rest));\n }\n }, {\n key: 'createTrackedDialogAsync',\n value: function createTrackedDialogAsync(analyticsAction, analyticsInfo) {\n _Analytics2.default.trackEvent('Modal', analyticsAction, analyticsInfo);\n\n for (var _len3 = arguments.length, rest = Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n\n return this.createDialogAsync.apply(this, rest);\n }\n\n /**\n * Open a modal view.\n *\n * This can be used to display a react component which is loaded as an asynchronous\n * webpack component. To do this, set 'loader' as:\n *\n * (cb) => {\n * require(['<module>'], cb);\n * }\n *\n * @param {Promise} prom a promise which resolves with a React component\n * which will be displayed as the modal view.\n *\n * @param {Object} props properties to pass to the displayed\n * component. (We will also pass an 'onFinished' property.)\n *\n * @param {String} className CSS class to apply to the modal wrapper\n *\n * @param {boolean} isPriorityModal if true, this modal will be displayed regardless\n * of other modals that are currently in the stack.\n * Also, when closed, all modals will be removed\n * from the stack.\n */\n\n }, {\n key: 'createDialogAsync',\n value: function createDialogAsync(prom, props, className, isPriorityModal) {\n var self = this;\n var modal = {};\n\n // never call this from onFinished() otherwise it will loop\n //\n // nb explicit function() rather than arrow function, to get `arguments`\n var closeDialog = function closeDialog() {\n if (props && props.onFinished) props.onFinished.apply(null, arguments);\n var i = self._modals.indexOf(modal);\n if (i >= 0) {\n self._modals.splice(i, 1);\n }\n\n if (self._priorityModal === modal) {\n self._priorityModal = null;\n\n // XXX: This is destructive\n self._modals = [];\n }\n\n self._reRender();\n };\n\n // don't attempt to reuse the same AsyncWrapper for different dialogs,\n // otherwise we'll get confused.\n var modalCount = this._counter++;\n\n // FIXME: If a dialog uses getDefaultProps it clobbers the onFinished\n // property set here so you can't close the dialog from a button click!\n modal.elem = React.createElement(AsyncWrapper, (0, _extends3.default)({ key: modalCount, prom: prom }, props, {\n onFinished: closeDialog }));\n modal.onFinished = props ? props.onFinished : null;\n modal.className = className;\n\n if (isPriorityModal) {\n // XXX: This is destructive\n this._priorityModal = modal;\n } else {\n this._modals.unshift(modal);\n }\n\n this._reRender();\n return { close: closeDialog };\n }\n }, {\n key: 'closeAll',\n value: function closeAll() {\n var modals = this._modals;\n this._modals = [];\n\n for (var i = 0; i < modals.length; i++) {\n var m = modals[i];\n if (m.onFinished) {\n m.onFinished(false);\n }\n }\n\n this._reRender();\n }\n }, {\n key: '_reRender',\n value: function _reRender() {\n if (this._modals.length == 0 && !this._priorityModal) {\n // If there is no modal to render, make all of Riot available\n // to screen reader users again\n _dispatcher2.default.dispatch({\n action: 'aria_unhide_main_app'\n });\n ReactDOM.unmountComponentAtNode(this.getOrCreateContainer());\n return;\n }\n\n // Hide the content outside the modal to screen reader users\n // so they won't be able to navigate into it and act on it using\n // screen reader specific features\n _dispatcher2.default.dispatch({\n action: 'aria_hide_main_app'\n });\n\n var modal = this._priorityModal ? this._priorityModal : this._modals[0];\n var dialog = React.createElement(\n 'div',\n { className: \"mx_Dialog_wrapper \" + (modal.className ? modal.className : '') },\n React.createElement(\n 'div',\n { className: 'mx_Dialog' },\n modal.elem\n ),\n React.createElement('div', { className: 'mx_Dialog_background', onClick: this.closeAll })\n );\n\n ReactDOM.render(dialog, this.getOrCreateContainer());\n }\n }]);\n return ModalManager;\n}();\n\nif (!global.singletonModalManager) {\n global.singletonModalManager = new ModalManager();\n}\nexports.default = global.singletonModalManager;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Modal.js.map","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = require(\"regenerator-runtime\");\n","var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };","var matrixcs = require(\"./lib/matrix\");\nconst request = require('browser-request');\nconst queryString = require('qs');\n\nmatrixcs.request(function(opts, fn) {\n // We manually fix the query string for browser-request because\n // it doesn't correctly handle cases like ?via=one&via=two. Instead\n // we mimic `request`'s query string interface to make it all work\n // as expected.\n // browser-request will happily take the constructed string as the\n // query string without trying to modify it further.\n opts.qs = queryString.stringify(opts.qs || {}, opts.qsStringifyOptions);\n return request(opts, fn);\n});\n\n// just *accessing* indexedDB throws an exception in firefox with\n// indexeddb disabled.\nvar indexedDB;\ntry {\n indexedDB = global.indexedDB;\n} catch(e) {}\n\n// if our browser (appears to) support indexeddb, use an indexeddb crypto store.\nif (indexedDB) {\n matrixcs.setCryptoStoreFactory(\n function() {\n return new matrixcs.IndexedDBCryptoStore(\n indexedDB, \"matrix-js-sdk:crypto\"\n );\n }\n );\n}\n\nmodule.exports = matrixcs; // keep export for browserify package deps\nglobal.matrixcs = matrixcs;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SettingLevel = undefined;\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _DeviceSettingsHandler = require(\"./handlers/DeviceSettingsHandler\");\n\nvar _DeviceSettingsHandler2 = _interopRequireDefault(_DeviceSettingsHandler);\n\nvar _RoomDeviceSettingsHandler = require(\"./handlers/RoomDeviceSettingsHandler\");\n\nvar _RoomDeviceSettingsHandler2 = _interopRequireDefault(_RoomDeviceSettingsHandler);\n\nvar _DefaultSettingsHandler = require(\"./handlers/DefaultSettingsHandler\");\n\nvar _DefaultSettingsHandler2 = _interopRequireDefault(_DefaultSettingsHandler);\n\nvar _RoomAccountSettingsHandler = require(\"./handlers/RoomAccountSettingsHandler\");\n\nvar _RoomAccountSettingsHandler2 = _interopRequireDefault(_RoomAccountSettingsHandler);\n\nvar _AccountSettingsHandler = require(\"./handlers/AccountSettingsHandler\");\n\nvar _AccountSettingsHandler2 = _interopRequireDefault(_AccountSettingsHandler);\n\nvar _RoomSettingsHandler = require(\"./handlers/RoomSettingsHandler\");\n\nvar _RoomSettingsHandler2 = _interopRequireDefault(_RoomSettingsHandler);\n\nvar _ConfigSettingsHandler = require(\"./handlers/ConfigSettingsHandler\");\n\nvar _ConfigSettingsHandler2 = _interopRequireDefault(_ConfigSettingsHandler);\n\nvar _languageHandler = require(\"../languageHandler\");\n\nvar _SdkConfig = require(\"../SdkConfig\");\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _Settings = require(\"./Settings\");\n\nvar _LocalEchoWrapper = require(\"./handlers/LocalEchoWrapper\");\n\nvar _LocalEchoWrapper2 = _interopRequireDefault(_LocalEchoWrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Represents the various setting levels supported by the SettingsStore.\n */\nvar SettingLevel = exports.SettingLevel = {\n // Note: This enum is not used in this class or in the Settings file\n // This should always be used elsewhere in the project.\n DEVICE: \"device\",\n ROOM_DEVICE: \"room-device\",\n ROOM_ACCOUNT: \"room-account\",\n ACCOUNT: \"account\",\n ROOM: \"room\",\n CONFIG: \"config\",\n DEFAULT: \"default\"\n};\n\n// Convert the settings to easier to manage objects for the handlers\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar defaultSettings = {};\nvar featureNames = [];\nvar _iteratorNormalCompletion = true;\nvar _didIteratorError = false;\nvar _iteratorError = undefined;\n\ntry {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(_Settings.SETTINGS)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n\n defaultSettings[key] = _Settings.SETTINGS[key].default;\n if (_Settings.SETTINGS[key].isFeature) featureNames.push(key);\n }\n} catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n} finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n}\n\nvar LEVEL_HANDLERS = {\n \"device\": new _DeviceSettingsHandler2.default(featureNames),\n \"room-device\": new _RoomDeviceSettingsHandler2.default(),\n \"room-account\": new _RoomAccountSettingsHandler2.default(),\n \"account\": new _AccountSettingsHandler2.default(),\n \"room\": new _RoomSettingsHandler2.default(),\n \"config\": new _ConfigSettingsHandler2.default(),\n \"default\": new _DefaultSettingsHandler2.default(defaultSettings)\n};\n\n// Wrap all the handlers with local echo\nvar _iteratorNormalCompletion2 = true;\nvar _didIteratorError2 = false;\nvar _iteratorError2 = undefined;\n\ntry {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(LEVEL_HANDLERS)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _key = _step2.value;\n\n LEVEL_HANDLERS[_key] = new _LocalEchoWrapper2.default(LEVEL_HANDLERS[_key]);\n }\n} catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n} finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n}\n\nvar LEVEL_ORDER = ['device', 'room-device', 'room-account', 'account', 'room', 'config', 'default'];\n\n/**\n * Controls and manages application settings by providing varying levels at which the\n * setting value may be specified. The levels are then used to determine what the setting\n * value should be given a set of circumstances. The levels, in priority order, are:\n * - \"device\" - Values are determined by the current device\n * - \"room-device\" - Values are determined by the current device for a particular room\n * - \"room-account\" - Values are determined by the current account for a particular room\n * - \"account\" - Values are determined by the current account\n * - \"room\" - Values are determined by a particular room (by the room admins)\n * - \"config\" - Values are determined by the config.json\n * - \"default\" - Values are determined by the hardcoded defaults\n *\n * Each level has a different method to storing the setting value. For implementation\n * specific details, please see the handlers. The \"config\" and \"default\" levels are\n * both always supported on all platforms. All other settings should be guarded by\n * isLevelSupported() prior to attempting to set the value.\n *\n * Settings can also represent features. Features are significant portions of the\n * application that warrant a dedicated setting to toggle them on or off. Features are\n * special-cased to ensure that their values respect the configuration (for example, a\n * feature may be reported as disabled even though a user has specifically requested it\n * be enabled).\n */\n\nvar SettingsStore = function () {\n function SettingsStore() {\n (0, _classCallCheck3.default)(this, SettingsStore);\n }\n\n (0, _createClass3.default)(SettingsStore, null, [{\n key: \"getDisplayName\",\n\n /**\n * Gets the translated display name for a given setting\n * @param {string} settingName The setting to look up.\n * @param {\"device\"|\"room-device\"|\"room-account\"|\"account\"|\"room\"|\"config\"|\"default\"} atLevel\n * The level to get the display name for; Defaults to 'default'.\n * @return {String} The display name for the setting, or null if not found.\n */\n value: function getDisplayName(settingName) {\n var atLevel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"default\";\n\n if (!_Settings.SETTINGS[settingName] || !_Settings.SETTINGS[settingName].displayName) return null;\n\n var displayName = _Settings.SETTINGS[settingName].displayName;\n if (displayName instanceof Object) {\n if (displayName[atLevel]) displayName = displayName[atLevel];else displayName = displayName[\"default\"];\n }\n\n return (0, _languageHandler._t)(displayName);\n }\n\n /**\n * Returns a list of all available labs feature names\n * @returns {string[]} The list of available feature names\n */\n\n }, {\n key: \"getLabsFeatures\",\n value: function getLabsFeatures() {\n var possibleFeatures = (0, _keys2.default)(_Settings.SETTINGS).filter(function (s) {\n return SettingsStore.isFeature(s);\n });\n\n var enableLabs = _SdkConfig2.default.get()[\"enableLabs\"];\n if (enableLabs) return possibleFeatures;\n\n return possibleFeatures.filter(function (s) {\n return SettingsStore._getFeatureState(s) === \"labs\";\n });\n }\n\n /**\n * Determines if a setting is also a feature.\n * @param {string} settingName The setting to look up.\n * @return {boolean} True if the setting is a feature.\n */\n\n }, {\n key: \"isFeature\",\n value: function isFeature(settingName) {\n if (!_Settings.SETTINGS[settingName]) return false;\n return _Settings.SETTINGS[settingName].isFeature;\n }\n\n /**\n * Determines if a given feature is enabled. The feature given must be a known\n * feature.\n * @param {string} settingName The name of the setting that is a feature.\n * @param {String} roomId The optional room ID to validate in, may be null.\n * @return {boolean} True if the feature is enabled, false otherwise\n */\n\n }, {\n key: \"isFeatureEnabled\",\n value: function isFeatureEnabled(settingName) {\n var roomId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (!SettingsStore.isFeature(settingName)) {\n throw new Error(\"Setting \" + settingName + \" is not a feature\");\n }\n\n return SettingsStore.getValue(settingName, roomId);\n }\n\n /**\n * Sets a feature as enabled or disabled on the current device.\n * @param {string} settingName The name of the setting.\n * @param {boolean} value True to enable the feature, false otherwise.\n * @returns {Promise} Resolves when the setting has been set.\n */\n\n }, {\n key: \"setFeatureEnabled\",\n value: function setFeatureEnabled(settingName, value) {\n // Verify that the setting is actually a setting\n if (!_Settings.SETTINGS[settingName]) {\n throw new Error(\"Setting '\" + settingName + \"' does not appear to be a setting.\");\n }\n if (!SettingsStore.isFeature(settingName)) {\n throw new Error(\"Setting \" + settingName + \" is not a feature\");\n }\n\n return SettingsStore.setValue(settingName, null, \"device\", value);\n }\n\n /**\n * Gets the value of a setting. The room ID is optional if the setting is not to\n * be applied to any particular room, otherwise it should be supplied.\n * @param {string} settingName The name of the setting to read the value of.\n * @param {String} roomId The room ID to read the setting value in, may be null.\n * @param {boolean} excludeDefault True to disable using the default value.\n * @return {*} The value, or null if not found\n */\n\n }, {\n key: \"getValue\",\n value: function getValue(settingName) {\n var roomId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var excludeDefault = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n // Verify that the setting is actually a setting\n if (!_Settings.SETTINGS[settingName]) {\n throw new Error(\"Setting '\" + settingName + \"' does not appear to be a setting.\");\n }\n\n var setting = _Settings.SETTINGS[settingName];\n var levelOrder = setting.supportedLevelsAreOrdered ? setting.supportedLevels : LEVEL_ORDER;\n\n return SettingsStore.getValueAt(levelOrder[0], settingName, roomId, false, excludeDefault);\n }\n\n /**\n * Gets a setting's value at a particular level, ignoring all levels that are more specific.\n * @param {\"device\"|\"room-device\"|\"room-account\"|\"account\"|\"room\"|\"config\"|\"default\"} level The\n * level to look at.\n * @param {string} settingName The name of the setting to read.\n * @param {String} roomId The room ID to read the setting value in, may be null.\n * @param {boolean} explicit If true, this method will not consider other levels, just the one\n * provided. Defaults to false.\n * @param {boolean} excludeDefault True to disable using the default value.\n * @return {*} The value, or null if not found.\n */\n\n }, {\n key: \"getValueAt\",\n value: function getValueAt(level, settingName) {\n var roomId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var explicit = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var excludeDefault = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // Verify that the setting is actually a setting\n if (!_Settings.SETTINGS[settingName]) {\n throw new Error(\"Setting '\" + settingName + \"' does not appear to be a setting.\");\n }\n\n var setting = _Settings.SETTINGS[settingName];\n var levelOrder = setting.supportedLevelsAreOrdered ? setting.supportedLevels : LEVEL_ORDER;\n if (!levelOrder.includes(\"default\")) levelOrder.push(\"default\"); // always include default\n\n var minIndex = levelOrder.indexOf(level);\n if (minIndex === -1) throw new Error(\"Level \" + level + \" is not prioritized\");\n\n if (SettingsStore.isFeature(settingName)) {\n var configValue = SettingsStore._getFeatureState(settingName);\n if (configValue === \"enable\") return true;\n if (configValue === \"disable\") return false;\n // else let it fall through the default process\n }\n\n var handlers = SettingsStore._getHandlers(settingName);\n\n if (explicit) {\n var handler = handlers[level];\n if (!handler) return SettingsStore._tryControllerOverride(settingName, level, roomId, null, null);\n var value = handler.getValue(settingName, roomId);\n return SettingsStore._tryControllerOverride(settingName, level, roomId, value, level);\n }\n\n for (var i = minIndex; i < levelOrder.length; i++) {\n var _handler = handlers[levelOrder[i]];\n if (!_handler) continue;\n if (excludeDefault && levelOrder[i] === \"default\") continue;\n\n var _value = _handler.getValue(settingName, roomId);\n if (_value === null || _value === undefined) continue;\n return SettingsStore._tryControllerOverride(settingName, level, roomId, _value, levelOrder[i]);\n }\n\n return SettingsStore._tryControllerOverride(settingName, level, roomId, null, null);\n }\n }, {\n key: \"_tryControllerOverride\",\n value: function _tryControllerOverride(settingName, level, roomId, calculatedValue, calculatedAtLevel) {\n var controller = _Settings.SETTINGS[settingName].controller;\n if (!controller) return calculatedValue;\n\n var actualValue = controller.getValueOverride(level, roomId, calculatedValue, calculatedAtLevel);\n if (actualValue !== undefined && actualValue !== null) return actualValue;\n return calculatedValue;\n }\n /* eslint-disable valid-jsdoc */ //https://github.com/eslint/eslint/issues/7307\n /**\n * Sets the value for a setting. The room ID is optional if the setting is not being\n * set for a particular room, otherwise it should be supplied. The value may be null\n * to indicate that the level should no longer have an override.\n * @param {string} settingName The name of the setting to change.\n * @param {String} roomId The room ID to change the value in, may be null.\n * @param {\"device\"|\"room-device\"|\"room-account\"|\"account\"|\"room\"} level The level\n * to change the value at.\n * @param {*} value The new value of the setting, may be null.\n * @return {Promise} Resolves when the setting has been changed.\n */\n /* eslint-enable valid-jsdoc */\n\n }, {\n key: \"setValue\",\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(settingName, roomId, level, value) {\n var handler, controller;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (_Settings.SETTINGS[settingName]) {\n _context.next = 2;\n break;\n }\n\n throw new Error(\"Setting '\" + settingName + \"' does not appear to be a setting.\");\n\n case 2:\n handler = SettingsStore._getHandler(settingName, level);\n\n if (handler) {\n _context.next = 5;\n break;\n }\n\n throw new Error(\"Setting \" + settingName + \" does not have a handler for \" + level);\n\n case 5:\n if (handler.canSetValue(settingName, roomId)) {\n _context.next = 7;\n break;\n }\n\n throw new Error(\"User cannot set \" + settingName + \" at \" + level + \" in \" + roomId);\n\n case 7:\n _context.next = 9;\n return (0, _bluebird.resolve)(handler.setValue(settingName, roomId, value));\n\n case 9:\n controller = _Settings.SETTINGS[settingName].controller;\n\n if (controller) {\n controller.onChange(level, roomId, value);\n }\n\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function setValue(_x8, _x9, _x10, _x11) {\n return _ref.apply(this, arguments);\n }\n\n return setValue;\n }()\n\n /**\n * Determines if the current user is permitted to set the given setting at the given\n * level for a particular room. The room ID is optional if the setting is not being\n * set for a particular room, otherwise it should be supplied.\n * @param {string} settingName The name of the setting to check.\n * @param {String} roomId The room ID to check in, may be null.\n * @param {\"device\"|\"room-device\"|\"room-account\"|\"account\"|\"room\"} level The level to\n * check at.\n * @return {boolean} True if the user may set the setting, false otherwise.\n */\n\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId, level) {\n // Verify that the setting is actually a setting\n if (!_Settings.SETTINGS[settingName]) {\n throw new Error(\"Setting '\" + settingName + \"' does not appear to be a setting.\");\n }\n\n var handler = SettingsStore._getHandler(settingName, level);\n if (!handler) return false;\n return handler.canSetValue(settingName, roomId);\n }\n\n /**\n * Determines if the given level is supported on this device.\n * @param {\"device\"|\"room-device\"|\"room-account\"|\"account\"|\"room\"} level The level\n * to check the feasibility of.\n * @return {boolean} True if the level is supported, false otherwise.\n */\n\n }, {\n key: \"isLevelSupported\",\n value: function isLevelSupported(level) {\n if (!LEVEL_HANDLERS[level]) return false;\n return LEVEL_HANDLERS[level].isSupported();\n }\n }, {\n key: \"_getHandler\",\n value: function _getHandler(settingName, level) {\n var handlers = SettingsStore._getHandlers(settingName);\n if (!handlers[level]) return null;\n return handlers[level];\n }\n }, {\n key: \"_getHandlers\",\n value: function _getHandlers(settingName) {\n if (!_Settings.SETTINGS[settingName]) return {};\n\n var handlers = {};\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(_Settings.SETTINGS[settingName].supportedLevels), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var level = _step3.value;\n\n if (!LEVEL_HANDLERS[level]) throw new Error(\"Unexpected level \" + level);\n handlers[level] = LEVEL_HANDLERS[level];\n }\n\n // Always support 'default'\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n if (!handlers['default']) handlers['default'] = LEVEL_HANDLERS['default'];\n\n return handlers;\n }\n }, {\n key: \"_getFeatureState\",\n value: function _getFeatureState(settingName) {\n var featuresConfig = _SdkConfig2.default.get()['features'];\n var enableLabs = _SdkConfig2.default.get()['enableLabs']; // we'll honour the old flag\n\n var featureState = enableLabs ? \"labs\" : \"disable\";\n if (featuresConfig && featuresConfig[settingName] !== undefined) {\n featureState = featuresConfig[settingName];\n }\n\n var allowedStates = ['enable', 'disable', 'labs'];\n if (!allowedStates.includes(featureState)) {\n console.warn(\"Feature state '\" + featureState + \"' is invalid for \" + settingName);\n featureState = \"disable\"; // to prevent accidental features.\n }\n\n return featureState;\n }\n }]);\n return SettingsStore;\n}();\n\nexports.default = SettingsStore;\n//# sourceMappingURL=SettingsStore.js.map","import isPlainObject from 'is-plain-object';\nimport { Map as Map$1, List, Record, Set, OrderedSet, is, Stack } from 'immutable';\nimport warning from 'slate-dev-warning';\nimport { reverse } from 'esrever';\nimport omit from 'lodash/omit';\nimport pick from 'lodash/pick';\nimport Debug from 'debug';\nimport direction from 'direction';\n\n/**\n * An auto-incrementing index for generating keys.\n *\n * @type {Number}\n */\n\nvar n = void 0;\n\n/**\n * The global key generating function.\n *\n * @type {Function}\n */\n\nvar generate = void 0;\n\n/**\n * Create a key, using a provided key if available.\n *\n * @param {String|Void} key\n * @return {String}\n */\n\nfunction create(key) {\n if (key == null) {\n return generate();\n }\n\n if (typeof key === 'string') {\n return key;\n }\n\n throw new Error('Keys must be strings, but you passed: ' + key);\n}\n\n/**\n * Set a different unique ID generating `function`.\n *\n * @param {Function} func\n */\n\nfunction setGenerator(func) {\n generate = func;\n}\n\n/**\n * Reset the key generating function to its initial state.\n */\n\nfunction resetGenerator() {\n n = 0;\n generate = function generate() {\n return '' + n++;\n };\n}\n\n/**\n * Set the initial state.\n */\n\nresetGenerator();\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar KeyUtils = {\n create: create,\n setGenerator: setGenerator,\n resetGenerator: resetGenerator\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\n\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n/**\n * Data.\n *\n * This isn't an immutable record, it's just a thin wrapper around `Map` so that\n * we can allow for more convenient creation.\n *\n * @type {Object}\n */\n\nvar Data = function () {\n function Data() {\n classCallCheck(this, Data);\n }\n\n createClass(Data, null, [{\n key: 'create',\n\n /**\n * Create a new `Data` with `attrs`.\n *\n * @param {Object|Data|Map} attrs\n * @return {Data} data\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Map$1.isMap(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n return Data.fromJSON(attrs);\n }\n\n throw new Error('`Data.create` only accepts objects or maps, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Data` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Data}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n return new Map$1(object);\n }\n\n /**\n * Alias `fromJS`.\n */\n\n }]);\n return Data;\n}();\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nData.fromJS = Data.fromJSON;\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS = {\n data: undefined,\n key: undefined,\n nodes: undefined\n\n /**\n * Document.\n *\n * @type {Document}\n */\n\n};\nvar Document = function (_Record) {\n inherits(Document, _Record);\n\n function Document() {\n classCallCheck(this, Document);\n return possibleConstructorReturn(this, (Document.__proto__ || Object.getPrototypeOf(Document)).apply(this, arguments));\n }\n\n createClass(Document, [{\n key: 'toJSON',\n\n\n /**\n * Return a JSON representation of the document.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n data: this.data.toJSON(),\n nodes: this.nodes.toArray().map(function (n) {\n return n.toJSON(options);\n })\n };\n\n if (options.preserveKeys) {\n object.key = this.key;\n }\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Document` with `attrs`.\n *\n * @param {Object|Array|List|Text} attrs\n * @return {Document}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Document.isDocument(attrs)) {\n return attrs;\n }\n\n if (List.isList(attrs) || Array.isArray(attrs)) {\n attrs = { nodes: attrs };\n }\n\n if (isPlainObject(attrs)) {\n return Document.fromJSON(attrs);\n }\n\n throw new Error('`Document.create` only accepts objects, arrays, lists or documents, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Document` from a JSON `object`.\n *\n * @param {Object|Document} object\n * @return {Document}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Document.isDocument(object)) {\n return object;\n }\n\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n _object$key = object.key,\n key = _object$key === undefined ? KeyUtils.create() : _object$key,\n _object$nodes = object.nodes,\n nodes = _object$nodes === undefined ? [] : _object$nodes;\n\n\n var document = new Document({\n key: key,\n data: new Map$1(data),\n nodes: Node.createList(nodes)\n });\n\n return document;\n }\n }]);\n return Document;\n}(Record(DEFAULTS));\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$1 = {\n data: undefined,\n key: undefined,\n nodes: undefined,\n type: undefined\n\n /**\n * Inline.\n *\n * @type {Inline}\n */\n\n};\nvar Inline = function (_Record) {\n inherits(Inline, _Record);\n\n function Inline() {\n classCallCheck(this, Inline);\n return possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n }\n\n createClass(Inline, [{\n key: 'toJSON',\n\n\n /**\n * Return a JSON representation of the inline.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n type: this.type,\n data: this.data.toJSON(),\n nodes: this.nodes.toArray().map(function (n) {\n return n.toJSON(options);\n })\n };\n\n if (options.preserveKeys) {\n object.key = this.key;\n }\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Inline` with `attrs`.\n *\n * @param {Object|String|Inline} attrs\n * @return {Inline}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Inline.isInline(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = { type: attrs };\n }\n\n if (isPlainObject(attrs)) {\n return Inline.fromJSON(attrs);\n }\n\n throw new Error('`Inline.create` only accepts objects, strings or inlines, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Inlines` from an array.\n *\n * @param {Array<Inline|Object>|List<Inline|Object>} elements\n * @return {List<Inline>}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(elements) || Array.isArray(elements)) {\n var list = new List(elements.map(Inline.create));\n return list;\n }\n\n throw new Error('`Inline.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n\n /**\n * Create a `Inline` from a JSON `object`.\n *\n * @param {Object|Inline} object\n * @return {Inline}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Inline.isInline(object)) {\n return object;\n }\n\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n _object$key = object.key,\n key = _object$key === undefined ? KeyUtils.create() : _object$key,\n _object$nodes = object.nodes,\n nodes = _object$nodes === undefined ? [] : _object$nodes,\n type = object.type;\n\n\n if (typeof type != 'string') {\n throw new Error('`Inline.fromJS` requires a `type` string.');\n }\n\n var inline = new Inline({\n key: key,\n type: type,\n data: new Map$1(data),\n nodes: Node.createList(nodes)\n });\n\n return inline;\n }\n\n /**\n * Check if `any` is a list of inlines.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isInlineList',\n value: function isInlineList(any) {\n return List.isList(any) && any.every(function (item) {\n return Inline.isInline(item);\n });\n }\n }]);\n return Inline;\n}(Record(DEFAULTS$1));\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$2 = {\n data: undefined,\n type: undefined\n\n /**\n * Mark.\n *\n * @type {Mark}\n */\n\n};\nvar Mark = function (_Record) {\n inherits(Mark, _Record);\n\n function Mark() {\n classCallCheck(this, Mark);\n return possibleConstructorReturn(this, (Mark.__proto__ || Object.getPrototypeOf(Mark)).apply(this, arguments));\n }\n\n createClass(Mark, [{\n key: 'toJSON',\n\n\n /**\n * Return a JSON representation of the mark.\n *\n * @return {Object}\n */\n\n value: function toJSON() {\n var object = {\n object: this.object,\n type: this.type,\n data: this.data.toJSON()\n };\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Mark` with `attrs`.\n *\n * @param {Object|Mark} attrs\n * @return {Mark}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Mark.isMark(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = { type: attrs };\n }\n\n if (isPlainObject(attrs)) {\n return Mark.fromJSON(attrs);\n }\n\n throw new Error('`Mark.create` only accepts objects, strings or marks, but you passed it: ' + attrs);\n }\n\n /**\n * Create a set of marks.\n *\n * @param {Array<Object|Mark>} elements\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'createSet',\n value: function createSet(elements) {\n if (Set.isSet(elements) || Array.isArray(elements)) {\n var marks = new Set(elements.map(Mark.create));\n return marks;\n }\n\n if (elements == null) {\n return Set();\n }\n\n throw new Error('`Mark.createSet` only accepts sets, arrays or null, but you passed it: ' + elements);\n }\n\n /**\n * Create a dictionary of settable mark properties from `attrs`.\n *\n * @param {Object|String|Mark} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Mark.isMark(attrs)) {\n return {\n data: attrs.data,\n type: attrs.type\n };\n }\n\n if (typeof attrs == 'string') {\n return { type: attrs };\n }\n\n if (isPlainObject(attrs)) {\n var props = {};\n if ('type' in attrs) props.type = attrs.type;\n if ('data' in attrs) props.data = Data.create(attrs.data);\n return props;\n }\n\n throw new Error('`Mark.createProperties` only accepts objects, strings or marks, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Mark` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Mark}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n type = object.type;\n\n\n if (typeof type != 'string') {\n throw new Error('`Mark.fromJS` requires a `type` string.');\n }\n\n var mark = new Mark({\n type: type,\n data: new Map$1(data)\n });\n\n return mark;\n }\n\n /**\n * Check if `any` is a set of marks.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isMarkSet',\n value: function isMarkSet(any) {\n return Set.isSet(any) && any.every(function (item) {\n return Mark.isMark(item);\n });\n }\n }]);\n return Mark;\n}(Record(DEFAULTS$2));\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$3 = {\n marks: undefined,\n text: undefined\n\n /**\n * Leaf.\n *\n * @type {Leaf}\n */\n\n};\nvar Leaf = function (_Record) {\n inherits(Leaf, _Record);\n\n function Leaf() {\n classCallCheck(this, Leaf);\n return possibleConstructorReturn(this, (Leaf.__proto__ || Object.getPrototypeOf(Leaf)).apply(this, arguments));\n }\n\n createClass(Leaf, [{\n key: 'updateMark',\n\n\n /**\n * Update a `mark` at leaf, replace with newMark\n *\n * @param {Mark} mark\n * @param {Mark} newMark\n * @returns {Leaf}\n */\n\n value: function updateMark(mark, newMark) {\n var marks = this.marks;\n\n if (newMark.equals(mark)) return this;\n if (!marks.has(mark)) return this;\n var newMarks = marks.withMutations(function (collection) {\n collection.remove(mark).add(newMark);\n });\n return this.set('marks', newMarks);\n }\n\n /**\n * Add a `mark` to the leaf.\n *\n * @param {Mark} mark\n * @returns {Text}\n */\n\n }, {\n key: 'addMark',\n value: function addMark(mark) {\n var marks = this.marks;\n\n return this.set('marks', marks.add(mark));\n }\n\n /**\n * Add a `set` of marks to the leaf.\n *\n * @param {Set<Mark>} set\n * @returns {Text}\n */\n\n }, {\n key: 'addMarks',\n value: function addMarks(set$$1) {\n var marks = this.marks;\n\n return this.set('marks', marks.union(set$$1));\n }\n\n /**\n * Remove a `mark` from the leaf.\n *\n * @param {Mark} mark\n * @returns {Text}\n */\n\n }, {\n key: 'removeMark',\n value: function removeMark(mark) {\n var marks = this.marks;\n\n return this.set('marks', marks.remove(mark));\n }\n\n /**\n * Return a JSON representation of the leaf.\n *\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var object = {\n object: this.object,\n text: this.text,\n marks: this.marks.toArray().map(function (m) {\n return m.toJSON();\n })\n };\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Leaf` with `attrs`.\n *\n * @param {Object|Leaf} attrs\n * @return {Leaf}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Leaf.isLeaf(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = { text: attrs };\n }\n\n if (isPlainObject(attrs)) {\n return Leaf.fromJSON(attrs);\n }\n\n throw new Error('`Leaf.create` only accepts objects, strings or leaves, but you passed it: ' + attrs);\n }\n\n /**\n * Create a valid List of `Leaf` from `leaves`\n *\n * @param {List<Leaf>} leaves\n * @return {List<Leaf>}\n */\n\n }, {\n key: 'createLeaves',\n value: function createLeaves(leaves) {\n if (leaves.size <= 1) return leaves;\n\n var invalid = false;\n\n // TODO: we can make this faster with [List] and then flatten\n var result = List().withMutations(function (cache) {\n // Search from the leaves left end to find invalid node;\n leaves.findLast(function (leaf, index) {\n var firstLeaf = cache.first();\n\n // If the first leaf of cache exist, check whether the first leaf is connectable with the current leaf\n if (firstLeaf) {\n // If marks equals, then the two leaves can be connected\n if (firstLeaf.marks.equals(leaf.marks)) {\n invalid = true;\n cache.set(0, firstLeaf.set('text', '' + leaf.text + firstLeaf.text));\n return;\n }\n\n // If the cached leaf is empty, drop the empty leaf with the upcoming leaf\n if (firstLeaf.text === '') {\n invalid = true;\n cache.set(0, leaf);\n return;\n }\n\n // If the current leaf is empty, drop the leaf\n if (leaf.text === '') {\n invalid = true;\n return;\n }\n }\n\n cache.unshift(leaf);\n });\n });\n\n if (!invalid) return leaves;\n return result;\n }\n\n /**\n * Split a list of leaves to two lists; if the leaves are valid leaves, the returned leaves are also valid\n * Corner Cases:\n * 1. if offset is smaller than 0, then return [List(), leaves]\n * 2. if offset is bigger than the text length, then return [leaves, List()]\n *\n * @param {List<Leaf> leaves\n * @return {Array<List<Leaf>>}\n */\n\n }, {\n key: 'splitLeaves',\n value: function splitLeaves(leaves, offset) {\n if (offset < 0) return [List(), leaves];\n\n if (leaves.size === 0) {\n return [List(), List()];\n }\n\n var endOffset = 0;\n var index = -1;\n var left = void 0,\n right = void 0;\n\n leaves.find(function (leaf) {\n index++;\n var startOffset = endOffset;\n var text = leaf.text;\n\n endOffset += text.length;\n\n if (endOffset < offset) return false;\n if (startOffset > offset) return false;\n\n var length = offset - startOffset;\n left = leaf.set('text', text.slice(0, length));\n right = leaf.set('text', text.slice(length));\n return true;\n });\n\n if (!left) return [leaves, List()];\n\n if (left.text === '') {\n if (index === 0) {\n return [List.of(left), leaves];\n }\n\n return [leaves.take(index), leaves.skip(index)];\n }\n\n if (right.text === '') {\n if (index === leaves.size - 1) {\n return [leaves, List.of(right)];\n }\n\n return [leaves.take(index + 1), leaves.skip(index + 1)];\n }\n\n return [leaves.take(index).push(left), leaves.skip(index + 1).unshift(right)];\n }\n\n /**\n * Create a `Leaf` list from `attrs`.\n *\n * @param {Array<Leaf|Object>|List<Leaf|Object>} attrs\n * @return {List<Leaf>}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(attrs) || Array.isArray(attrs)) {\n var list = new List(attrs.map(Leaf.create));\n return list;\n }\n\n throw new Error('`Leaf.createList` only accepts arrays or lists, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Leaf` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Leaf}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var _object$text = object.text,\n text = _object$text === undefined ? '' : _object$text,\n _object$marks = object.marks,\n marks = _object$marks === undefined ? [] : _object$marks;\n\n\n var leaf = new Leaf({\n text: text,\n marks: Set(marks.map(Mark.fromJSON))\n });\n\n return leaf;\n }\n\n /**\n * Check if `any` is a list of leaves.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isLeafList',\n value: function isLeafList(any) {\n return List.isList(any) && any.every(function (item) {\n return Leaf.isLeaf(item);\n });\n }\n }]);\n return Leaf;\n}(Record(DEFAULTS$3));\n\n/**\n * GLOBAL: True if memoization should is enabled.\n *\n * @type {Boolean}\n */\n\nvar ENABLED = true;\n\n/**\n * GLOBAL: Changing this cache key will clear all previous cached results.\n *\n * @type {Number}\n */\n\nvar CACHE_KEY = 0;\n\n/**\n * The leaf node of a cache tree. Used to support variable argument length. A\n * unique object, so that native Maps will key it by reference.\n *\n * @type {Object}\n */\n\nvar LEAF = {};\n\n/**\n * A value to represent a memoized undefined value. Allows efficient value\n * retrieval using Map.get only.\n *\n * @type {Object}\n */\n\nvar UNDEFINED = {};\n\n/**\n * Default value for unset keys in native Maps\n *\n * @type {Undefined}\n */\n\nvar UNSET = undefined;\n\n/**\n * Memoize all of the `properties` on a `object`.\n *\n * @param {Object} object\n * @param {Array} properties\n * @return {Record}\n */\n\nfunction memoize(object, properties) {\n var _loop = function _loop(property) {\n var original = object[property];\n\n if (!original) {\n throw new Error(\"Object does not have a property named \\\"\" + property + \"\\\".\");\n }\n\n object[property] = function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n // If memoization is disabled, call into the original method.\n if (!ENABLED) return original.apply(this, args);\n\n // If the cache key is different, previous caches must be cleared.\n if (CACHE_KEY !== this.__cache_key) {\n this.__cache_key = CACHE_KEY;\n this.__cache = new Map(); // eslint-disable-line no-undef,no-restricted-globals\n this.__cache_no_args = {};\n }\n\n if (!this.__cache) {\n this.__cache = new Map(); // eslint-disable-line no-undef,no-restricted-globals\n }\n\n if (!this.__cache_no_args) {\n this.__cache_no_args = {};\n }\n\n var takesArguments = args.length !== 0;\n\n var cachedValue = void 0;\n var keys = void 0;\n\n if (takesArguments) {\n keys = [property].concat(args);\n cachedValue = getIn(this.__cache, keys);\n } else {\n cachedValue = this.__cache_no_args[property];\n }\n\n // If we've got a result already, return it.\n if (cachedValue !== UNSET) {\n return cachedValue === UNDEFINED ? undefined : cachedValue;\n }\n\n // Otherwise calculate what it should be once and cache it.\n var value = original.apply(this, args);\n var v = value === undefined ? UNDEFINED : value;\n\n if (takesArguments) {\n this.__cache = setIn(this.__cache, keys, v);\n } else {\n this.__cache_no_args[property] = v;\n }\n\n return value;\n };\n };\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = properties[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var property = _step.value;\n\n _loop(property);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\n/**\n * Get a value at a key path in a tree of Map.\n *\n * If not set, returns UNSET.\n * If the set value is undefined, returns UNDEFINED.\n *\n * @param {Map} map\n * @param {Array} keys\n * @return {Any|UNSET|UNDEFINED}\n */\n\nfunction getIn(map, keys) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = keys[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var key = _step2.value;\n\n map = map.get(key);\n if (map === UNSET) return UNSET;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return map.get(LEAF);\n}\n\n/**\n * Set a value at a key path in a tree of Map, creating Maps on the go.\n *\n * @param {Map} map\n * @param {Array} keys\n * @param {Any} value\n * @return {Map}\n */\n\nfunction setIn(map, keys, value) {\n var parent = map;\n var child = void 0;\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = keys[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var key = _step3.value;\n\n child = parent.get(key);\n\n // If the path was not created yet...\n if (child === UNSET) {\n child = new Map(); // eslint-disable-line no-undef,no-restricted-globals\n parent.set(key, child);\n }\n\n parent = child;\n }\n\n // The whole path has been created, so set the value to the bottom most map.\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n child.set(LEAF, value);\n return map;\n}\n\n/**\n * In DEV mode, clears the previously memoized values, globally.\n *\n * @return {Void}\n */\n\nfunction resetMemoization() {\n CACHE_KEY++;\n\n if (CACHE_KEY >= Number.MAX_SAFE_INTEGER) {\n CACHE_KEY = 0;\n }\n}\n\n/**\n * In DEV mode, enable or disable the use of memoize values, globally.\n *\n * @param {Boolean} enabled\n * @return {Void}\n */\n\nfunction useMemoization(enabled) {\n ENABLED = enabled;\n}\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$4 = {\n leaves: undefined,\n key: undefined\n\n /**\n * Text.\n *\n * @type {Text}\n */\n\n};\nvar Text = function (_Record) {\n inherits(Text, _Record);\n\n function Text() {\n classCallCheck(this, Text);\n return possibleConstructorReturn(this, (Text.__proto__ || Object.getPrototypeOf(Text)).apply(this, arguments));\n }\n\n createClass(Text, [{\n key: 'searchLeafAtOffset',\n\n\n /**\n * Find the 'first' leaf at offset; By 'first' the alorighthm prefers `endOffset === offset` than `startOffset === offset`\n * Corner Cases:\n * 1. if offset is negative, return the first leaf;\n * 2. if offset is larger than text length, the leaf is null, startOffset, endOffset and index is of the last leaf\n *\n * @param {number}\n * @returns {Object}\n * @property {number} startOffset\n * @property {number} endOffset\n * @property {number} index\n * @property {Leaf} leaf\n */\n\n value: function searchLeafAtOffset(offset) {\n var endOffset = 0;\n var startOffset = 0;\n var index = -1;\n\n var leaf = this.leaves.find(function (l) {\n index++;\n startOffset = endOffset;\n endOffset = startOffset + l.text.length;\n return endOffset >= offset;\n });\n\n return {\n leaf: leaf,\n endOffset: endOffset,\n index: index,\n startOffset: startOffset\n };\n }\n\n /**\n * Add a `mark` at `index` and `length`.\n *\n * @param {Number} index\n * @param {Number} length\n * @param {Mark} mark\n * @return {Text}\n */\n\n }, {\n key: 'addMark',\n value: function addMark(index, length, mark) {\n var marks = Set.of(mark);\n return this.addMarks(index, length, marks);\n }\n\n /**\n * Add a `set` of marks at `index` and `length`.\n * Corner Cases:\n * 1. If empty text, and if length === 0 and index === 0, will make sure the text contain an empty leaf with the given mark.\n *\n * @param {Number} index\n * @param {Number} length\n * @param {Set<Mark>} set\n * @return {Text}\n */\n\n }, {\n key: 'addMarks',\n value: function addMarks(index, length, set$$1) {\n if (this.text === '' && length === 0 && index === 0) {\n var _leaves = this.leaves;\n\n var first = _leaves.first();\n\n if (!first) {\n return this.set('leaves', List.of(Leaf.fromJSON({ text: '', marks: set$$1 })));\n }\n\n var newFirst = first.addMarks(set$$1);\n if (newFirst === first) return this;\n return this.set('leaves', List.of(newFirst));\n }\n\n if (this.text === '') return this;\n if (length === 0) return this;\n if (index >= this.text.length) return this;\n\n var _Leaf$splitLeaves = Leaf.splitLeaves(this.leaves, index),\n _Leaf$splitLeaves2 = slicedToArray(_Leaf$splitLeaves, 2),\n before = _Leaf$splitLeaves2[0],\n bundle = _Leaf$splitLeaves2[1];\n\n var _Leaf$splitLeaves3 = Leaf.splitLeaves(bundle, length),\n _Leaf$splitLeaves4 = slicedToArray(_Leaf$splitLeaves3, 2),\n middle = _Leaf$splitLeaves4[0],\n after = _Leaf$splitLeaves4[1];\n\n var leaves = before.concat(middle.map(function (x) {\n return x.addMarks(set$$1);\n }), after);\n return this.setLeaves(leaves);\n }\n\n /**\n * Derive the leaves for a list of `decorations`.\n *\n * @param {Array|Void} decorations (optional)\n * @return {List<Leaf>}\n */\n\n }, {\n key: 'getLeaves',\n value: function getLeaves() {\n var _this2 = this;\n\n var decorations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var leaves = this.leaves;\n\n if (leaves.size === 0) return List.of(Leaf.create({}));\n if (!decorations || decorations.length === 0) return leaves;\n if (this.text.length === 0) return leaves;\n var key = this.key;\n\n\n decorations.forEach(function (dec) {\n var start = dec.start,\n end = dec.end,\n mark = dec.mark;\n\n var hasStart = start.key == key;\n var hasEnd = end.key == key;\n\n if (hasStart && hasEnd) {\n var index = hasStart ? start.offset : 0;\n var length = hasEnd ? end.offset - index : _this2.text.length - index;\n\n if (length < 1) return;\n if (index >= _this2.text.length) return;\n\n if (index !== 0 || length < _this2.text.length) {\n var _Leaf$splitLeaves5 = Leaf.splitLeaves(leaves, index),\n _Leaf$splitLeaves6 = slicedToArray(_Leaf$splitLeaves5, 2),\n before = _Leaf$splitLeaves6[0],\n bundle = _Leaf$splitLeaves6[1];\n\n var _Leaf$splitLeaves7 = Leaf.splitLeaves(bundle, length),\n _Leaf$splitLeaves8 = slicedToArray(_Leaf$splitLeaves7, 2),\n middle = _Leaf$splitLeaves8[0],\n after = _Leaf$splitLeaves8[1];\n\n leaves = before.concat(middle.map(function (x) {\n return x.addMark(mark);\n }), after);\n return;\n }\n }\n\n leaves = leaves.map(function (x) {\n return x.addMark(mark);\n });\n });\n\n if (leaves === this.leaves) return leaves;\n return Leaf.createLeaves(leaves);\n }\n\n /**\n * Get all of the active marks on between two offsets\n * Corner Cases:\n * 1. if startOffset is equal or bigger than endOffset, then return Set();\n * 2. If no text is selected between start and end, then return Set()\n *\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'getActiveMarksBetweenOffsets',\n value: function getActiveMarksBetweenOffsets(startOffset, endOffset) {\n if (startOffset <= 0 && endOffset >= this.text.length) {\n return this.getActiveMarks();\n }\n\n if (startOffset >= endOffset) return Set();\n // For empty text in a paragraph, use getActiveMarks;\n if (this.text === '') return this.getActiveMarks();\n\n var result = null;\n var leafEnd = 0;\n\n this.leaves.forEach(function (leaf) {\n var leafStart = leafEnd;\n leafEnd = leafStart + leaf.text.length;\n\n if (leafEnd <= startOffset) return;\n if (leafStart >= endOffset) return false;\n\n if (!result) {\n result = leaf.marks;\n return;\n }\n\n result = result.intersect(leaf.marks);\n if (result && result.size === 0) return false;\n return false;\n });\n\n return result || Set();\n }\n\n /**\n * Get all of the active marks on the text\n *\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'getActiveMarks',\n value: function getActiveMarks() {\n var _this3 = this;\n\n if (this.leaves.size === 0) return Set();\n\n var result = this.leaves.first().marks;\n if (result.size === 0) return result;\n\n return result.toOrderedSet().withMutations(function (x) {\n _this3.leaves.forEach(function (c) {\n x.intersect(c.marks);\n if (x.size === 0) return false;\n });\n });\n }\n\n /**\n * Get all of the marks on between two offsets\n * Corner Cases:\n * 1. if startOffset is equal or bigger than endOffset, then return Set();\n * 2. If no text is selected between start and end, then return Set()\n *\n * @return {OrderedSet<Mark>}\n */\n\n }, {\n key: 'getMarksBetweenOffsets',\n value: function getMarksBetweenOffsets(startOffset, endOffset) {\n if (startOffset <= 0 && endOffset >= this.text.length) {\n return this.getMarks();\n }\n\n if (startOffset >= endOffset) return Set();\n // For empty text in a paragraph, use getActiveMarks;\n if (this.text === '') return this.getActiveMarks();\n\n var result = null;\n var leafEnd = 0;\n\n this.leaves.forEach(function (leaf) {\n var leafStart = leafEnd;\n leafEnd = leafStart + leaf.text.length;\n\n if (leafEnd <= startOffset) return;\n if (leafStart >= endOffset) return false;\n\n if (!result) {\n result = leaf.marks;\n return;\n }\n\n result = result.union(leaf.marks);\n });\n\n return result || Set();\n }\n\n /**\n * Get all of the marks on the text.\n *\n * @return {OrderedSet<Mark>}\n */\n\n }, {\n key: 'getMarks',\n value: function getMarks() {\n var array = this.getMarksAsArray();\n return new OrderedSet(array);\n }\n\n /**\n * Get all of the marks on the text as an array\n *\n * @return {Array}\n */\n\n }, {\n key: 'getMarksAsArray',\n value: function getMarksAsArray() {\n if (this.leaves.size === 0) return [];\n var first = this.leaves.first().marks;\n if (this.leaves.size === 1) return first.toArray();\n\n var result = [];\n\n this.leaves.forEach(function (leaf) {\n result.push(leaf.marks.toArray());\n });\n\n return Array.prototype.concat.apply(first.toArray(), result);\n }\n\n /**\n * Get the marks on the text at `index`.\n * Corner Cases:\n * 1. if no text is before the index, and index !== 0, then return Set()\n * 2. (for insert after split node or mark at range) if index === 0, and text === '', then return the leaf.marks\n * 3. if index === 0, text !== '', return Set()\n *\n *\n * @param {Number} index\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'getMarksAtIndex',\n value: function getMarksAtIndex(index) {\n var _searchLeafAtOffset = this.searchLeafAtOffset(index),\n leaf = _searchLeafAtOffset.leaf;\n\n if (!leaf) return Set();\n return leaf.marks;\n }\n\n /**\n * Insert `text` at `index`.\n *\n * @param {Numbder} offset\n * @param {String} text\n * @param {Set} marks (optional)\n * @return {Text}\n */\n\n }, {\n key: 'insertText',\n value: function insertText(offset, text, marks) {\n if (this.text === '') {\n return this.set('leaves', List.of(Leaf.create({ text: text, marks: marks })));\n }\n\n if (text.length === 0) return this;\n if (!marks) marks = Set();\n\n var _searchLeafAtOffset2 = this.searchLeafAtOffset(offset),\n startOffset = _searchLeafAtOffset2.startOffset,\n leaf = _searchLeafAtOffset2.leaf,\n index = _searchLeafAtOffset2.index;\n\n var delta = offset - startOffset;\n var beforeText = leaf.text.slice(0, delta);\n var afterText = leaf.text.slice(delta);\n var leaves = this.leaves;\n\n\n if (leaf.marks.equals(marks)) {\n return this.set('leaves', leaves.set(index, leaf.set('text', beforeText + text + afterText)));\n }\n\n var nextLeaves = leaves.splice(index, 1, leaf.set('text', beforeText), Leaf.create({ text: text, marks: marks }), leaf.set('text', afterText));\n\n return this.setLeaves(nextLeaves);\n }\n\n /**\n * Remove a `mark` at `index` and `length`.\n *\n * @param {Number} index\n * @param {Number} length\n * @param {Mark} mark\n * @return {Text}\n */\n\n }, {\n key: 'removeMark',\n value: function removeMark(index, length, mark) {\n if (this.text === '' && index === 0 && length === 0) {\n var first = this.leaves.first();\n if (!first) return this;\n var newFirst = first.removeMark(mark);\n if (newFirst === first) return this;\n return this.set('leaves', List.of(newFirst));\n }\n\n if (length <= 0) return this;\n if (index >= this.text.length) return this;\n\n var _Leaf$splitLeaves9 = Leaf.splitLeaves(this.leaves, index),\n _Leaf$splitLeaves10 = slicedToArray(_Leaf$splitLeaves9, 2),\n before = _Leaf$splitLeaves10[0],\n bundle = _Leaf$splitLeaves10[1];\n\n var _Leaf$splitLeaves11 = Leaf.splitLeaves(bundle, length),\n _Leaf$splitLeaves12 = slicedToArray(_Leaf$splitLeaves11, 2),\n middle = _Leaf$splitLeaves12[0],\n after = _Leaf$splitLeaves12[1];\n\n var leaves = before.concat(middle.map(function (x) {\n return x.removeMark(mark);\n }), after);\n return this.setLeaves(leaves);\n }\n\n /**\n * Remove text from the text node at `start` for `length`.\n *\n * @param {Number} start\n * @param {Number} length\n * @return {Text}\n */\n\n }, {\n key: 'removeText',\n value: function removeText(start, length) {\n if (length <= 0) return this;\n if (start >= this.text.length) return this;\n\n // PERF: For simple backspace, we can operate directly on the leaf\n if (length === 1) {\n var _searchLeafAtOffset3 = this.searchLeafAtOffset(start + 1),\n leaf = _searchLeafAtOffset3.leaf,\n index = _searchLeafAtOffset3.index,\n startOffset = _searchLeafAtOffset3.startOffset;\n\n var offset = start - startOffset;\n\n if (leaf) {\n if (leaf.text.length === 1) {\n var _leaves2 = this.leaves.remove(index);\n return this.setLeaves(_leaves2);\n }\n\n var beforeText = leaf.text.slice(0, offset);\n var afterText = leaf.text.slice(offset + length);\n var text = beforeText + afterText;\n\n if (text.length > 0) {\n return this.set('leaves', this.leaves.set(index, leaf.set('text', text)));\n }\n }\n }\n\n var _Leaf$splitLeaves13 = Leaf.splitLeaves(this.leaves, start),\n _Leaf$splitLeaves14 = slicedToArray(_Leaf$splitLeaves13, 2),\n before = _Leaf$splitLeaves14[0],\n bundle = _Leaf$splitLeaves14[1];\n\n var after = Leaf.splitLeaves(bundle, length)[1];\n var leaves = Leaf.createLeaves(before.concat(after));\n\n if (leaves.size === 1) {\n var first = leaves.first();\n\n if (first.text === '') {\n return this.set('leaves', List.of(first.set('marks', this.getActiveMarks())));\n }\n }\n\n return this.set('leaves', leaves);\n }\n\n /**\n * Return a JSON representation of the text.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n leaves: this.getLeaves().toArray().map(function (r) {\n return r.toJSON();\n })\n };\n\n if (options.preserveKeys) {\n object.key = this.key;\n }\n\n return object;\n }\n\n /**\n * Update a `mark` at `index` and `length` with `properties`.\n *\n * @param {Number} index\n * @param {Number} length\n * @param {Mark} mark\n * @param {Object} properties\n * @return {Text}\n */\n\n }, {\n key: 'updateMark',\n value: function updateMark(index, length, mark, properties) {\n var newMark = mark.merge(properties);\n\n if (this.text === '' && length === 0 && index === 0) {\n var _leaves3 = this.leaves;\n\n var first = _leaves3.first();\n if (!first) return this;\n var newFirst = first.updateMark(mark, newMark);\n if (newFirst === first) return this;\n return this.set('leaves', List.of(newFirst));\n }\n\n if (length <= 0) return this;\n if (index >= this.text.length) return this;\n\n var _Leaf$splitLeaves15 = Leaf.splitLeaves(this.leaves, index),\n _Leaf$splitLeaves16 = slicedToArray(_Leaf$splitLeaves15, 2),\n before = _Leaf$splitLeaves16[0],\n bundle = _Leaf$splitLeaves16[1];\n\n var _Leaf$splitLeaves17 = Leaf.splitLeaves(bundle, length),\n _Leaf$splitLeaves18 = slicedToArray(_Leaf$splitLeaves17, 2),\n middle = _Leaf$splitLeaves18[0],\n after = _Leaf$splitLeaves18[1];\n\n var leaves = before.concat(middle.map(function (x) {\n return x.updateMark(mark, newMark);\n }), after);\n\n return this.setLeaves(leaves);\n }\n\n /**\n * Split this text and return two different texts\n * @param {Number} position\n * @returns {Array<Text>}\n */\n\n }, {\n key: 'splitText',\n value: function splitText(offset) {\n var splitted = Leaf.splitLeaves(this.leaves, offset);\n var one = this.set('leaves', splitted[0]);\n var two = this.set('leaves', splitted[1]).regenerateKey();\n return [one, two];\n }\n\n /**\n * merge this text and another text at the end\n * @param {Text} text\n * @returns {Text}\n */\n\n }, {\n key: 'mergeText',\n value: function mergeText(text) {\n var leaves = this.leaves.concat(text.leaves);\n return this.setLeaves(leaves);\n }\n\n /**\n * Set leaves with normalized `leaves`\n *\n * @param {Schema} schema\n * @returns {Text|Null}\n */\n\n }, {\n key: 'setLeaves',\n value: function setLeaves(leaves) {\n var result = Leaf.createLeaves(leaves);\n\n if (result.size === 1) {\n var first = result.first();\n\n if (!first.marks || first.marks.size === 0) {\n if (first.text === '') {\n return this.set('leaves', List());\n }\n }\n }\n\n return this.set('leaves', Leaf.createLeaves(leaves));\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Text` with `attrs`.\n *\n * @param {Object|Array|List|String|Text} attrs\n * @return {Text}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n if (Text.isText(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = { leaves: [{ text: attrs }] };\n }\n\n if (isPlainObject(attrs)) {\n if (attrs.text) {\n var _attrs = attrs,\n text = _attrs.text,\n marks = _attrs.marks,\n key = _attrs.key;\n\n attrs = { key: key, leaves: [{ text: text, marks: marks }] };\n }\n\n return Text.fromJSON(attrs);\n }\n\n throw new Error('`Text.create` only accepts objects, arrays, strings or texts, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Texts` from `elements`.\n *\n * @param {Array<Text|Object>|List<Text|Object>} elements\n * @return {List<Text>}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(elements) || Array.isArray(elements)) {\n var list = new List(elements.map(Text.create));\n return list;\n }\n\n throw new Error('`Text.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n\n /**\n * Create a `Text` from a JSON `object`.\n *\n * @param {Object|Text} object\n * @return {Text}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Text.isText(object)) {\n return object;\n }\n\n var _object$key = object.key,\n key = _object$key === undefined ? KeyUtils.create() : _object$key;\n var leaves = object.leaves;\n\n\n if (!leaves) {\n if (object.ranges) {\n warning(false, 'As of slate@0.27.0, the `ranges` property of Slate objects has been renamed to `leaves`.');\n\n leaves = object.ranges;\n } else {\n leaves = List();\n }\n }\n\n if (Array.isArray(leaves)) {\n leaves = List(leaves.map(function (x) {\n return Leaf.create(x);\n }));\n } else if (List.isList(leaves)) {\n leaves = leaves.map(function (x) {\n return Leaf.create(x);\n });\n } else {\n throw new Error('leaves must be either Array or Immutable.List');\n }\n\n var node = new Text({\n leaves: Leaf.createLeaves(leaves),\n key: key\n });\n\n return node;\n }\n\n /**\n * Check if `any` is a list of texts.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isTextList',\n value: function isTextList(any) {\n return List.isList(any) && any.every(function (item) {\n return Text.isText(item);\n });\n }\n }]);\n return Text;\n}(Record(DEFAULTS$4));\n\n/**\n * Memoize read methods.\n */\n\nmemoize(Text.prototype, ['getActiveMarks', 'getMarks', 'getMarksAsArray']);\n\n/**\n * A pseudo-model that is used for its static methods only.\n *\n * @type {Node}\n */\n\nvar Node = function () {\n function Node() {\n classCallCheck(this, Node);\n }\n\n createClass(Node, null, [{\n key: 'create',\n\n /**\n * Create a new `Node` with `attrs`.\n *\n * @param {Object|Node} attrs\n * @return {Node}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Node.isNode(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n var object = attrs.object;\n\n\n if (!object && attrs.kind) {\n warning(false, 'As of slate@0.32.0, the `kind` property of Slate objects has been renamed to `object`.');\n\n object = attrs.kind;\n }\n\n switch (object) {\n case 'block':\n return Block.create(attrs);\n case 'document':\n return Document.create(attrs);\n case 'inline':\n return Inline.create(attrs);\n case 'text':\n return Text.create(attrs);\n\n default:\n {\n throw new Error('`Node.create` requires a `object` string.');\n }\n }\n }\n\n throw new Error('`Node.create` only accepts objects or nodes but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Nodes` from an array.\n *\n * @param {Array<Object|Node>} elements\n * @return {List<Node>}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(elements) || Array.isArray(elements)) {\n var list = List(elements.map(Node.create));\n return list;\n }\n\n throw new Error('`Node.createList` only accepts lists or arrays, but you passed it: ' + elements);\n }\n\n /**\n * Create a dictionary of settable node properties from `attrs`.\n *\n * @param {Object|String|Node} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Block.isBlock(attrs) || Inline.isInline(attrs)) {\n return {\n data: attrs.data,\n type: attrs.type\n };\n }\n\n if (typeof attrs == 'string') {\n return { type: attrs };\n }\n\n if (isPlainObject(attrs)) {\n var props = {};\n if ('type' in attrs) props.type = attrs.type;\n if ('data' in attrs) props.data = Data.create(attrs.data);\n return props;\n }\n\n throw new Error('`Node.createProperties` only accepts objects, strings, blocks or inlines, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Node` from a JSON `value`.\n *\n * @param {Object} value\n * @return {Node}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(value) {\n var object = value.object;\n\n\n if (!object && value.kind) {\n warning(false, 'As of slate@0.32.0, the `kind` property of Slate objects has been renamed to `object`.');\n\n object = value.kind;\n }\n\n switch (object) {\n case 'block':\n return Block.fromJSON(value);\n case 'document':\n return Document.fromJSON(value);\n case 'inline':\n return Inline.fromJSON(value);\n case 'text':\n return Text.fromJSON(value);\n\n default:\n {\n throw new Error('`Node.fromJSON` requires an `object` of either \\'block\\', \\'document\\', \\'inline\\' or \\'text\\', but you passed: ' + value);\n }\n }\n }\n\n /**\n * Check if `any` is a `Node`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isNode',\n value: function isNode(any) {\n return Block.isBlock(any) || Document.isDocument(any) || Inline.isInline(any) || Text.isText(any);\n }\n\n /**\n * Check if `any` is a list of nodes.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isNodeList',\n value: function isNodeList(any) {\n return List.isList(any) && any.every(function (item) {\n return Node.isNode(item);\n });\n }\n }]);\n return Node;\n}();\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$5 = {\n data: undefined,\n key: undefined,\n nodes: undefined,\n type: undefined\n\n /**\n * Block.\n *\n * @type {Block}\n */\n\n};\nvar Block = function (_Record) {\n inherits(Block, _Record);\n\n function Block() {\n classCallCheck(this, Block);\n return possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).apply(this, arguments));\n }\n\n createClass(Block, [{\n key: 'toJSON',\n\n\n /**\n * Return a JSON representation of the block.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n type: this.type,\n data: this.data.toJSON(),\n nodes: this.nodes.toArray().map(function (n) {\n return n.toJSON(options);\n })\n };\n\n if (options.preserveKeys) {\n object.key = this.key;\n }\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Block` from `attrs`.\n *\n * @param {Object|String|Block} attrs\n * @return {Block}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Block.isBlock(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = { type: attrs };\n }\n\n if (isPlainObject(attrs)) {\n return Block.fromJSON(attrs);\n }\n\n throw new Error('`Block.create` only accepts objects, strings or blocks, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Blocks` from `attrs`.\n *\n * @param {Array<Block|Object>|List<Block|Object>} attrs\n * @return {List<Block>}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(attrs) || Array.isArray(attrs)) {\n var list = new List(attrs.map(Block.create));\n return list;\n }\n\n throw new Error('`Block.createList` only accepts arrays or lists, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Block` from a JSON `object`.\n *\n * @param {Object|Block} object\n * @return {Block}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Block.isBlock(object)) {\n return object;\n }\n\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n _object$key = object.key,\n key = _object$key === undefined ? KeyUtils.create() : _object$key,\n _object$nodes = object.nodes,\n nodes = _object$nodes === undefined ? [] : _object$nodes,\n type = object.type;\n\n\n if (typeof type != 'string') {\n throw new Error('`Block.fromJSON` requires a `type` string.');\n }\n\n var block = new Block({\n key: key,\n type: type,\n data: Map$1(data),\n nodes: Node.createList(nodes)\n });\n\n return block;\n }\n\n /**\n * Check if `any` is a block list.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isBlockList',\n value: function isBlockList(any) {\n return List.isList(any) && any.every(function (item) {\n return Block.isBlock(item);\n });\n }\n }]);\n return Block;\n}(Record(DEFAULTS$5));\n\n/**\n * Changes.\n *\n * @type {Object}\n */\n\nvar Changes = {};\n\n/**\n * Mix in the changes that pass through to their at-range equivalents because\n * they don't have any effect on the selection.\n */\n\nvar PROXY_TRANSFORMS = ['deleteBackward', 'deleteCharBackward', 'deleteLineBackward', 'deleteWordBackward', 'deleteForward', 'deleteCharForward', 'deleteWordForward', 'deleteLineForward', 'setBlocks', 'setInlines', 'splitInline', 'unwrapBlock', 'unwrapInline', 'wrapBlock', 'wrapInline'];\n\nPROXY_TRANSFORMS.forEach(function (method) {\n Changes[method] = function (change) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var value = change.value;\n var selection = value.selection;\n\n var methodAtRange = method + 'AtRange';\n change[methodAtRange].apply(change, [selection].concat(args));\n\n if (method.match(/Backward$/)) {\n change.moveToStart();\n } else if (method.match(/Forward$/)) {\n change.moveToEnd();\n }\n };\n});\n\n/**\n * Add a `mark` to the characters in the current selection.\n *\n * @param {Change} change\n * @param {Mark} mark\n */\n\nChanges.addMark = function (change, mark) {\n mark = Mark.create(mark);\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n\n if (selection.isExpanded) {\n change.addMarkAtRange(selection, mark);\n } else if (selection.marks) {\n var marks = selection.marks.add(mark);\n var sel = selection.set('marks', marks);\n change.select(sel);\n } else {\n var _marks = document.getActiveMarksAtRange(selection).add(mark);\n var _sel = selection.set('marks', _marks);\n change.select(_sel);\n }\n};\n\n/**\n * Add a list of `marks` to the characters in the current selection.\n *\n * @param {Change} change\n * @param {Mark} mark\n */\n\nChanges.addMarks = function (change, marks) {\n marks.forEach(function (mark) {\n return change.addMark(mark);\n });\n};\n\n/**\n * Delete at the current selection.\n *\n * @param {Change} change\n */\n\nChanges.delete = function (change) {\n var value = change.value;\n var selection = value.selection;\n\n change.deleteAtRange(selection);\n\n // Ensure that the selection is collapsed to the start, because in certain\n // cases when deleting across inline nodes, when splitting the inline node the\n // end point of the selection will end up after the split point.\n change.moveToStart();\n};\n\n/**\n * Insert a `block` at the current selection.\n *\n * @param {Change} change\n * @param {String|Object|Block} block\n */\n\nChanges.insertBlock = function (change, block) {\n block = Block.create(block);\n var value = change.value;\n var selection = value.selection;\n\n change.insertBlockAtRange(selection, block);\n\n // If the node was successfully inserted, update the selection.\n var node = change.value.document.getNode(block.key);\n if (node) change.moveToEndOfNode(node);\n};\n\n/**\n * Insert a `fragment` at the current selection.\n *\n * @param {Change} change\n * @param {Document} fragment\n */\n\nChanges.insertFragment = function (change, fragment) {\n if (!fragment.nodes.size) return;\n\n var value = change.value;\n var _value = value,\n document = _value.document,\n selection = _value.selection;\n var start = selection.start,\n end = selection.end;\n var _value2 = value,\n startText = _value2.startText,\n endText = _value2.endText,\n startInline = _value2.startInline;\n\n var lastText = fragment.getLastText();\n var lastInline = fragment.getClosestInline(lastText.key);\n var firstChild = fragment.nodes.first();\n var lastChild = fragment.nodes.last();\n var keys = document.getTexts().map(function (text) {\n return text.key;\n });\n var isAppending = !startInline || start.isAtStartOfNode(startText) || end.isAtStartOfNode(startText) || start.isAtEndOfNode(endText) || end.isAtEndOfNode(endText);\n\n var isInserting = firstChild.hasBlockChildren() || lastChild.hasBlockChildren();\n\n change.insertFragmentAtRange(selection, fragment);\n value = change.value;\n document = value.document;\n\n var newTexts = document.getTexts().filter(function (n) {\n return !keys.includes(n.key);\n });\n var newText = isAppending ? newTexts.last() : newTexts.takeLast(2).first();\n\n if (newText && (lastInline || isInserting)) {\n change.select(selection.moveToEndOfNode(newText));\n } else if (newText) {\n change.select(selection.moveToStartOfNode(newText).moveForward(lastText.text.length));\n } else {\n change.select(selection.moveToStart().moveForward(lastText.text.length));\n }\n};\n\n/**\n * Insert an `inline` at the current selection.\n *\n * @param {Change} change\n * @param {String|Object|Inline} inline\n */\n\nChanges.insertInline = function (change, inline) {\n inline = Inline.create(inline);\n var value = change.value;\n var selection = value.selection;\n\n change.insertInlineAtRange(selection, inline);\n\n // If the node was successfully inserted, update the selection.\n var node = change.value.document.getNode(inline.key);\n if (node) change.moveToEndOfNode(node);\n};\n\n/**\n * Insert a string of `text` with optional `marks` at the current selection.\n *\n * @param {Change} change\n * @param {String} text\n * @param {Set<Mark>} marks (optional)\n */\n\nChanges.insertText = function (change, text, marks) {\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n marks = marks || selection.marks || document.getInsertMarksAtRange(selection);\n change.insertTextAtRange(selection, text, marks);\n\n // If the text was successfully inserted, and the selection had marks on it,\n // unset the selection's marks.\n if (selection.marks && document != change.value.document) {\n change.select({ marks: null });\n }\n};\n\n/**\n * Remove a `mark` from the characters in the current selection.\n *\n * @param {Change} change\n * @param {Mark} mark\n */\n\nChanges.removeMark = function (change, mark) {\n mark = Mark.create(mark);\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n\n if (selection.isExpanded) {\n change.removeMarkAtRange(selection, mark);\n } else if (selection.marks) {\n var marks = selection.marks.remove(mark);\n var sel = selection.set('marks', marks);\n change.select(sel);\n } else {\n var _marks2 = document.getActiveMarksAtRange(selection).remove(mark);\n var _sel2 = selection.set('marks', _marks2);\n change.select(_sel2);\n }\n};\n\n/**\n * Replace an `oldMark` with a `newMark` in the characters in the current selection.\n *\n * @param {Change} change\n * @param {Mark} oldMark\n * @param {Mark} newMark\n */\n\nChanges.replaceMark = function (change, oldMark, newMark) {\n change.removeMark(oldMark);\n change.addMark(newMark);\n};\n\n/**\n * Split the block node at the current selection, to optional `depth`.\n *\n * @param {Change} change\n * @param {Number} depth (optional)\n */\n\nChanges.splitBlock = function (change) {\n var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var value = change.value;\n var selection = value.selection,\n document = value.document;\n\n var marks = selection.marks || document.getInsertMarksAtRange(selection);\n change.splitBlockAtRange(selection, depth).moveToEnd();\n\n if (marks && marks.size !== 0) {\n change.select({ marks: marks });\n }\n};\n\n/**\n * Add or remove a `mark` from the characters in the current selection,\n * depending on whether it's already there.\n *\n * @param {Change} change\n * @param {Mark} mark\n */\n\nChanges.toggleMark = function (change, mark) {\n mark = Mark.create(mark);\n var value = change.value;\n\n var exists = value.activeMarks.has(mark);\n\n if (exists) {\n change.removeMark(mark);\n } else {\n change.addMark(mark);\n }\n};\n\n/**\n * Wrap the current selection with prefix/suffix.\n *\n * @param {Change} change\n * @param {String} prefix\n * @param {String} suffix\n */\n\nChanges.wrapText = function (change, prefix) {\n var suffix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : prefix;\n var value = change.value;\n var selection = value.selection;\n\n change.wrapTextAtRange(selection, prefix, suffix);\n\n // If the selection was collapsed, it will have moved the start offset too.\n if (selection.isCollapsed) {\n change.moveStartBackward(prefix.length);\n }\n\n // Adding the suffix will have pushed the end of the selection further on, so\n // we need to move it back to account for this.\n change.moveEndBackward(suffix.length);\n\n // There's a chance that the selection points moved \"through\" each other,\n // resulting in a now-incorrect selection direction.\n if (selection.isForward != change.value.selection.isForward) {\n change.flip();\n }\n};\n\n/**\n * Surrogate pair start and end points.\n *\n * @type {Number}\n */\n\nvar SURROGATE_START = 0xd800;\nvar SURROGATE_END = 0xdfff;\n\n/**\n * A regex to match space characters.\n *\n * @type {RegExp}\n */\n\nvar SPACE = /\\s/;\n\n/**\n * A regex to match chameleon characters, that count as word characters as long\n * as they are inside of a word.\n *\n * @type {RegExp}\n */\n\nvar CHAMELEON = /['\\u2018\\u2019]/;\n\n/**\n * A regex that matches punctuation.\n *\n * @type {RegExp}\n */\n\nvar PUNCTUATION = /[\\u0021-\\u0023\\u0025-\\u002A\\u002C-\\u002F\\u003A\\u003B\\u003F\\u0040\\u005B-\\u005D\\u005F\\u007B\\u007D\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E3B\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/;\n\n/**\n * Is a character `code` in a surrogate character.\n *\n * @param {Number} code\n * @return {Boolean}\n */\n\nfunction isSurrogate(code) {\n return SURROGATE_START <= code && code <= SURROGATE_END;\n}\n\n/**\n * Is a character a word character? Needs the `remaining` characters too.\n *\n * @param {String} char\n * @param {String|Void} remaining\n * @return {Boolean}\n */\n\nfunction isWord(char, remaining) {\n if (SPACE.test(char)) return false;\n\n // If it's a chameleon character, recurse to see if the next one is or not.\n if (CHAMELEON.test(char)) {\n var next = remaining.charAt(0);\n var length = getCharLength(next);\n next = remaining.slice(0, length);\n var rest = remaining.slice(length);\n if (isWord(next, rest)) return true;\n }\n\n if (PUNCTUATION.test(char)) return false;\n return true;\n}\n\n/**\n * Get the length of a `character`.\n *\n * @param {String} char\n * @return {Number}\n */\n\nfunction getCharLength(char) {\n return isSurrogate(char.charCodeAt(0)) ? 2 : 1;\n}\n\n/**\n * Get the offset to the end of the first character in `text`.\n *\n * @param {String} text\n * @return {Number}\n */\n\nfunction getCharOffset(text) {\n var char = text.charAt(0);\n return getCharLength(char);\n}\n\n/**\n * Get the offset to the end of the character before an `offset` in `text`.\n *\n * @param {String} text\n * @param {Number} offset\n * @return {Number}\n */\n\nfunction getCharOffsetBackward(text, offset) {\n text = text.slice(0, offset);\n text = reverse(text);\n return getCharOffset(text);\n}\n\n/**\n * Get the offset to the end of the character after an `offset` in `text`.\n *\n * @param {String} text\n * @param {Number} offset\n * @return {Number}\n */\n\nfunction getCharOffsetForward(text, offset) {\n text = text.slice(offset);\n return getCharOffset(text);\n}\n\n/**\n * Get the offset to the end of the first word in `text`.\n *\n * @param {String} text\n * @return {Number}\n */\n\nfunction getWordOffset(text) {\n var length = 0;\n var i = 0;\n var started = false;\n var char = void 0;\n\n while (char = text.charAt(i)) {\n var l = getCharLength(char);\n char = text.slice(i, i + l);\n var rest = text.slice(i + l);\n\n if (isWord(char, rest)) {\n started = true;\n length += l;\n } else if (!started) {\n length += l;\n } else {\n break;\n }\n\n i += l;\n }\n\n return length;\n}\n\n/**\n * Get the offset to the end of the word before an `offset` in `text`.\n *\n * @param {String} text\n * @param {Number} offset\n * @return {Number}\n */\n\nfunction getWordOffsetBackward(text, offset) {\n text = text.slice(0, offset);\n text = reverse(text);\n var o = getWordOffset(text);\n return o;\n}\n\n/**\n * Get the offset to the end of the word after an `offset` in `text`.\n *\n * @param {String} text\n * @param {Number} offset\n * @return {Number}\n */\n\nfunction getWordOffsetForward(text, offset) {\n text = text.slice(offset);\n var o = getWordOffset(text);\n return o;\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar TextUtils = {\n getCharLength: getCharLength,\n getCharOffset: getCharOffset,\n getCharOffsetBackward: getCharOffsetBackward,\n getCharOffsetForward: getCharOffsetForward,\n getWordOffset: getWordOffset,\n getWordOffsetBackward: getWordOffsetBackward,\n getWordOffsetForward: getWordOffsetForward,\n isSurrogate: isSurrogate,\n isWord: isWord\n};\n\n/**\n * Changes.\n *\n * @type {Object}\n */\n\nvar Changes$1 = {};\n\n/**\n * Add a new `mark` to the characters at `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Mixed} mark\n */\n\nChanges$1.addMarkAtRange = function (change, range, mark) {\n if (range.isCollapsed) return;\n\n var value = change.value;\n var document = value.document;\n var start = range.start,\n end = range.end;\n\n var texts = document.getTextsAtRange(range);\n\n change.withoutNormalizing(function () {\n texts.forEach(function (node) {\n var key = node.key;\n\n var index = 0;\n var length = node.text.length;\n\n if (key == start.key) index = start.offset;\n if (key == end.key) length = end.offset;\n if (key == start.key && key == end.key) length = end.offset - start.offset;\n\n change.addMarkByKey(key, index, length, mark);\n });\n });\n};\n\n/**\n * Add a list of `marks` to the characters at `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Array<Mixed>} mark\n */\n\nChanges$1.addMarksAtRange = function (change, range, marks) {\n marks.forEach(function (mark) {\n return change.addMarkAtRange(range, mark);\n });\n};\n\n/**\n * Delete everything in a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n */\n\nChanges$1.deleteAtRange = function (change, range) {\n // Snapshot the selection, which creates an extra undo save point, so that\n // when you undo a delete, the expanded selection will be retained.\n change.snapshotSelection();\n\n var value = change.value;\n var start = range.start,\n end = range.end;\n\n var startKey = start.key;\n var startOffset = start.offset;\n var endKey = end.key;\n var endOffset = end.offset;\n var document = value.document,\n schema = value.schema;\n\n var isStartVoid = document.hasVoidParent(startKey, schema);\n var isEndVoid = document.hasVoidParent(endKey, schema);\n var startBlock = document.getClosestBlock(startKey, schema);\n var endBlock = document.getClosestBlock(endKey, schema);\n\n // Check if we have a \"hanging\" selection case where the even though the\n // selection extends into the start of the end node, we actually want to\n // ignore that for UX reasons.\n var isHanging = startOffset == 0 && endOffset == 0 && isStartVoid == false && startKey == startBlock.getFirstText().key && endKey == endBlock.getFirstText().key;\n\n // If it's a hanging selection, nudge it back to end in the previous text.\n if (isHanging && isEndVoid) {\n var prevText = document.getPreviousText(endKey);\n endKey = prevText.key;\n endOffset = prevText.text.length;\n isEndVoid = document.hasVoidParent(endKey, schema);\n }\n\n change.withoutNormalizing(function () {\n // If the start node is inside a void node, remove the void node and update\n // the starting point to be right after it, continuously until the start point\n // is not a void, or until the entire range is handled.\n while (isStartVoid) {\n var startVoid = document.getClosestVoid(startKey, schema);\n var nextText = document.getNextText(startKey);\n change.removeNodeByKey(startVoid.key);\n\n // If the start and end keys are the same, we're done.\n if (startKey == endKey) return;\n\n // If there is no next text node, we're done.\n if (!nextText) return;\n\n // Continue...\n document = change.value.document;\n startKey = nextText.key;\n startOffset = 0;\n isStartVoid = document.hasVoidParent(startKey, schema);\n }\n\n // If the end node is inside a void node, do the same thing but backwards. But\n // we don't need any aborting checks because if we've gotten this far there\n // must be a non-void node that will exit the loop.\n while (isEndVoid) {\n var endVoid = document.getClosestVoid(endKey, schema);\n var _prevText = document.getPreviousText(endKey);\n change.removeNodeByKey(endVoid.key);\n\n // Continue...\n document = change.value.document;\n endKey = _prevText.key;\n endOffset = _prevText.text.length;\n isEndVoid = document.hasVoidParent(endKey, schema);\n }\n\n // If the start and end key are the same, and it was a hanging selection, we\n // can just remove the entire block.\n if (startKey == endKey && isHanging) {\n change.removeNodeByKey(startBlock.key);\n return;\n } else if (startKey == endKey) {\n // Otherwise, if it wasn't hanging, we're inside a single text node, so we can\n // simply remove the text in the range.\n var index = startOffset;\n var length = endOffset - startOffset;\n change.removeTextByKey(startKey, index, length);\n return;\n } else {\n // Otherwise, we need to recursively remove text and nodes inside the start\n // block after the start offset and inside the end block before the end\n // offset. Then remove any blocks that are in between the start and end\n // blocks. Then finally merge the start and end nodes.\n startBlock = document.getClosestBlock(startKey);\n endBlock = document.getClosestBlock(endKey);\n var startText = document.getNode(startKey);\n var endText = document.getNode(endKey);\n var startLength = startText.text.length - startOffset;\n var endLength = endOffset;\n\n var ancestor = document.getCommonAncestor(startKey, endKey);\n var startChild = ancestor.getFurthestAncestor(startKey);\n var endChild = ancestor.getFurthestAncestor(endKey);\n\n var startParent = document.getParent(startBlock.key);\n var startParentIndex = startParent.nodes.indexOf(startBlock);\n var endParentIndex = startParent.nodes.indexOf(endBlock);\n\n var child = void 0;\n\n // Iterate through all of the nodes in the tree after the start text node\n // but inside the end child, and remove them.\n child = startText;\n\n while (child.key != startChild.key) {\n var parent = document.getParent(child.key);\n var _index = parent.nodes.indexOf(child);\n var afters = parent.nodes.slice(_index + 1);\n\n afters.reverse().forEach(function (node) {\n change.removeNodeByKey(node.key);\n });\n\n child = parent;\n }\n\n // Remove all of the middle children.\n var startChildIndex = ancestor.nodes.indexOf(startChild);\n var endChildIndex = ancestor.nodes.indexOf(endChild);\n var middles = ancestor.nodes.slice(startChildIndex + 1, endChildIndex);\n\n middles.reverse().forEach(function (node) {\n change.removeNodeByKey(node.key);\n });\n\n // Remove the nodes before the end text node in the tree.\n child = endText;\n\n while (child.key != endChild.key) {\n var _parent = document.getParent(child.key);\n var _index2 = _parent.nodes.indexOf(child);\n var befores = _parent.nodes.slice(0, _index2);\n\n befores.reverse().forEach(function (node) {\n change.removeNodeByKey(node.key);\n });\n\n child = _parent;\n }\n\n // Remove any overlapping text content from the leaf text nodes.\n if (startLength != 0) {\n change.removeTextByKey(startKey, startOffset, startLength);\n }\n\n if (endLength != 0) {\n change.removeTextByKey(endKey, 0, endOffset);\n }\n\n // If the start and end blocks aren't the same, move and merge the end block\n // into the start block.\n if (startBlock.key != endBlock.key) {\n document = change.value.document;\n var lonely = document.getFurthestOnlyChildAncestor(endBlock.key);\n\n // Move the end block to be right after the start block.\n if (endParentIndex != startParentIndex + 1) {\n change.moveNodeByKey(endBlock.key, startParent.key, startParentIndex + 1);\n }\n\n // If the selection is hanging, just remove the start block, otherwise\n // merge the end block into it.\n if (isHanging) {\n change.removeNodeByKey(startBlock.key);\n } else {\n change.mergeNodeByKey(endBlock.key);\n }\n\n // If nested empty blocks are left over above the end block, remove them.\n if (lonely) {\n change.removeNodeByKey(lonely.key);\n }\n }\n }\n });\n};\n\n/**\n * Delete backward until the character boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n */\n\nChanges$1.deleteCharBackwardAtRange = function (change, range) {\n var value = change.value;\n var document = value.document;\n var start = range.start;\n\n var startBlock = document.getClosestBlock(start.key);\n var offset = startBlock.getOffset(start.key);\n var o = offset + start.offset;\n var text = startBlock.text;\n\n var n = TextUtils.getCharOffsetBackward(text, o);\n change.deleteBackwardAtRange(range, n);\n};\n\n/**\n * Delete backward until the line boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n */\n\nChanges$1.deleteLineBackwardAtRange = function (change, range) {\n var value = change.value;\n var document = value.document;\n var start = range.start;\n\n var startBlock = document.getClosestBlock(start.key);\n var offset = startBlock.getOffset(start.key);\n var o = offset + start.offset;\n change.deleteBackwardAtRange(range, o);\n};\n\n/**\n * Delete backward until the word boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n */\n\nChanges$1.deleteWordBackwardAtRange = function (change, range) {\n var value = change.value;\n var document = value.document;\n var start = range.start;\n\n var startBlock = document.getClosestBlock(start.key);\n var offset = startBlock.getOffset(start.key);\n var o = offset + start.offset;\n var text = startBlock.text;\n\n var n = o === 0 ? 1 : TextUtils.getWordOffsetBackward(text, o);\n change.deleteBackwardAtRange(range, n);\n};\n\n/**\n * Delete backward `n` characters at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Number} n (optional)\n */\n\nChanges$1.deleteBackwardAtRange = function (change, range) {\n var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n if (n === 0) return;\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n var _range = range,\n start = _range.start,\n focus = _range.focus;\n\n // If the range is expanded, perform a regular delete instead.\n\n if (range.isExpanded) {\n change.deleteAtRange(range);\n return;\n }\n\n var voidParent = document.getClosestVoid(start.key, schema);\n\n // If there is a void parent, delete it.\n if (voidParent) {\n change.removeNodeByKey(voidParent.key);\n return;\n }\n\n var block = document.getClosestBlock(start.key);\n\n // If the closest is not void, but empty, remove it\n if (block && !schema.isVoid(block) && block.text === '' && document.nodes.size !== 1) {\n change.removeNodeByKey(block.key);\n return;\n }\n\n // If the range is at the start of the document, abort.\n if (start.isAtStartOfNode(document)) {\n return;\n }\n\n // If the range is at the start of the text node, we need to figure out what\n // is behind it to know how to delete...\n var text = document.getDescendant(start.key);\n\n if (start.isAtStartOfNode(text)) {\n var prev = document.getPreviousText(text.key);\n var prevBlock = document.getClosestBlock(prev.key);\n var prevVoid = document.getClosestVoid(prev.key, schema);\n\n // If the previous text node has a void parent, remove it.\n if (prevVoid) {\n change.removeNodeByKey(prevVoid.key);\n return;\n }\n\n // If we're deleting by one character and the previous text node is not\n // inside the current block, we need to merge the two blocks together.\n if (n == 1 && prevBlock != block) {\n range = range.moveAnchorTo(prev.key, prev.text.length);\n change.deleteAtRange(range);\n return;\n }\n }\n\n // If the focus offset is farther than the number of characters to delete,\n // just remove the characters backwards inside the current node.\n if (n < focus.offset) {\n range = range.moveFocusBackward(n);\n change.deleteAtRange(range);\n return;\n }\n\n // Otherwise, we need to see how many nodes backwards to go.\n var node = text;\n var offset = 0;\n var traversed = focus.offset;\n\n while (n > traversed) {\n node = document.getPreviousText(node.key);\n var next = traversed + node.text.length;\n\n if (n <= next) {\n offset = next - n;\n break;\n } else {\n traversed = next;\n }\n }\n\n range = range.moveAnchorTo(node.key, offset);\n change.deleteAtRange(range);\n};\n\n/**\n * Delete forward until the character boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n */\n\nChanges$1.deleteCharForwardAtRange = function (change, range) {\n var value = change.value;\n var document = value.document;\n var start = range.start;\n\n var startBlock = document.getClosestBlock(start.key);\n var offset = startBlock.getOffset(start.key);\n var o = offset + start.offset;\n var text = startBlock.text;\n\n var n = TextUtils.getCharOffsetForward(text, o);\n change.deleteForwardAtRange(range, n);\n};\n\n/**\n * Delete forward until the line boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n */\n\nChanges$1.deleteLineForwardAtRange = function (change, range) {\n var value = change.value;\n var document = value.document;\n var start = range.start;\n\n var startBlock = document.getClosestBlock(start.key);\n var offset = startBlock.getOffset(start.key);\n var o = offset + start.offset;\n change.deleteForwardAtRange(range, startBlock.text.length - o);\n};\n\n/**\n * Delete forward until the word boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n */\n\nChanges$1.deleteWordForwardAtRange = function (change, range) {\n var value = change.value;\n var document = value.document;\n var start = range.start;\n\n var startBlock = document.getClosestBlock(start.key);\n var offset = startBlock.getOffset(start.key);\n var o = offset + start.offset;\n var text = startBlock.text;\n\n var n = TextUtils.getWordOffsetForward(text, o);\n change.deleteForwardAtRange(range, n);\n};\n\n/**\n * Delete forward `n` characters at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Number} n (optional)\n */\n\nChanges$1.deleteForwardAtRange = function (change, range) {\n var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n if (n === 0) return;\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n var _range2 = range,\n start = _range2.start,\n focus = _range2.focus;\n\n // If the range is expanded, perform a regular delete instead.\n\n if (range.isExpanded) {\n change.deleteAtRange(range);\n return;\n }\n\n var voidParent = document.getClosestVoid(start.key, schema);\n\n // If the node has a void parent, delete it.\n if (voidParent) {\n change.removeNodeByKey(voidParent.key);\n return;\n }\n\n var block = document.getClosestBlock(start.key);\n\n // If the closest is not void, but empty, remove it\n if (block && !schema.isVoid(block) && block.text === '' && document.nodes.size !== 1) {\n var nextBlock = document.getNextBlock(block.key);\n change.removeNodeByKey(block.key);\n\n if (nextBlock && nextBlock.key) {\n change.moveToStartOfNode(nextBlock);\n }\n\n return;\n }\n\n // If the range is at the start of the document, abort.\n if (start.isAtEndOfNode(document)) {\n return;\n }\n\n // If the range is at the start of the text node, we need to figure out what\n // is behind it to know how to delete...\n var text = document.getDescendant(start.key);\n\n if (start.isAtEndOfNode(text)) {\n var next = document.getNextText(text.key);\n var _nextBlock = document.getClosestBlock(next.key);\n var nextVoid = document.getClosestVoid(next.key, schema);\n\n // If the next text node has a void parent, remove it.\n if (nextVoid) {\n change.removeNodeByKey(nextVoid.key);\n return;\n }\n\n // If we're deleting by one character and the previous text node is not\n // inside the current block, we need to merge the two blocks together.\n if (n == 1 && _nextBlock != block) {\n range = range.moveFocusTo(next.key, 0);\n change.deleteAtRange(range);\n return;\n }\n }\n\n // If the remaining characters to the end of the node is greater than or equal\n // to the number of characters to delete, just remove the characters forwards\n // inside the current node.\n if (n <= text.text.length - focus.offset) {\n range = range.moveFocusForward(n);\n change.deleteAtRange(range);\n return;\n }\n\n // Otherwise, we need to see how many nodes forwards to go.\n var node = text;\n var offset = focus.offset;\n var traversed = text.text.length - focus.offset;\n\n while (n > traversed) {\n node = document.getNextText(node.key);\n var _next = traversed + node.text.length;\n\n if (n <= _next) {\n offset = n - traversed;\n break;\n } else {\n traversed = _next;\n }\n }\n\n range = range.moveFocusTo(node.key, offset);\n change.deleteAtRange(range);\n};\n\n/**\n * Insert a `block` node at `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Block|String|Object} block\n */\n\nChanges$1.insertBlockAtRange = function (change, range, block) {\n block = Block.create(block);\n\n if (range.isExpanded) {\n change.deleteAtRange(range);\n range = range.moveToStart();\n }\n\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n var _range3 = range,\n start = _range3.start;\n\n var startKey = start.key;\n var startOffset = start.offset;\n var startBlock = document.getClosestBlock(startKey);\n var startInline = document.getClosestInline(startKey);\n var parent = document.getParent(startBlock.key);\n var index = parent.nodes.indexOf(startBlock);\n\n if (schema.isVoid(startBlock)) {\n var extra = start.isAtEndOfNode(startBlock) ? 1 : 0;\n change.insertNodeByKey(parent.key, index + extra, block);\n } else if (!startInline && startBlock.text === '') {\n change.insertNodeByKey(parent.key, index + 1, block);\n } else if (start.isAtStartOfNode(startBlock)) {\n change.insertNodeByKey(parent.key, index, block);\n } else if (start.isAtEndOfNode(startBlock)) {\n change.insertNodeByKey(parent.key, index + 1, block);\n } else {\n if (startInline && schema.isVoid(startInline)) {\n var atEnd = start.isAtEndOfNode(startInline);\n var siblingText = atEnd ? document.getNextText(startKey) : document.getPreviousText(startKey);\n\n var splitRange = atEnd ? range.moveToStartOfNode(siblingText) : range.moveToEndOfNode(siblingText);\n\n startKey = splitRange.start.key;\n startOffset = splitRange.start.offset;\n }\n\n change.withoutNormalizing(function () {\n change.splitDescendantsByKey(startBlock.key, startKey, startOffset);\n change.insertNodeByKey(parent.key, index + 1, block);\n });\n }\n};\n\n/**\n * Insert a `fragment` at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Document} fragment\n */\n\nChanges$1.insertFragmentAtRange = function (change, range, fragment) {\n change.withoutNormalizing(function () {\n // If the range is expanded, delete it first.\n if (range.isExpanded) {\n change.deleteAtRange(range);\n\n if (change.value.document.getDescendant(range.start.key)) {\n range = range.moveToStart();\n } else {\n range = range.moveTo(range.end.key, 0).normalize(change.value.document);\n }\n }\n\n // If the fragment is empty, there's nothing to do after deleting.\n if (!fragment.nodes.size) return;\n\n // Regenerate the keys for all of the fragments nodes, so that they're\n // guaranteed not to collide with the existing keys in the document. Otherwise\n // they will be rengerated automatically and we won't have an easy way to\n // reference them.\n fragment = fragment.mapDescendants(function (child) {\n return child.regenerateKey();\n });\n\n // Calculate a few things...\n var _range4 = range,\n start = _range4.start;\n var value = change.value;\n var schema = value.schema;\n var document = value.document;\n\n var startText = document.getDescendant(start.key);\n var startBlock = document.getClosestBlock(startText.key);\n var startChild = startBlock.getFurthestAncestor(startText.key);\n var isAtStart = start.isAtStartOfNode(startBlock);\n var parent = document.getParent(startBlock.key);\n var index = parent.nodes.indexOf(startBlock);\n var blocks = fragment.getBlocks();\n var firstChild = fragment.nodes.first();\n var lastChild = fragment.nodes.last();\n var firstBlock = blocks.first();\n var lastBlock = blocks.last();\n\n // If the fragment only contains a void block, use `insertBlock` instead.\n if (firstBlock === lastBlock && schema.isVoid(firstBlock)) {\n change.insertBlockAtRange(range, firstBlock);\n return;\n }\n\n // If the fragment starts or ends with single nested block, (e.g., table),\n // do not merge this fragment with existing blocks.\n if (firstChild.hasBlockChildren() || lastChild.hasBlockChildren()) {\n fragment.nodes.reverse().forEach(function (node) {\n change.insertBlockAtRange(range, node);\n });\n return;\n }\n\n // If the first and last block aren't the same, we need to insert all of the\n // nodes after the fragment's first block at the index.\n if (firstBlock != lastBlock) {\n var lonelyParent = fragment.getFurthest(firstBlock.key, function (p) {\n return p.nodes.size == 1;\n });\n var lonelyChild = lonelyParent || firstBlock;\n var startIndex = parent.nodes.indexOf(startBlock);\n fragment = fragment.removeNode(lonelyChild.key);\n\n fragment.nodes.forEach(function (node, i) {\n var newIndex = startIndex + i + 1;\n change.insertNodeByKey(parent.key, newIndex, node);\n });\n }\n\n // Check if we need to split the node.\n if (start.offset != 0) {\n change.splitDescendantsByKey(startChild.key, start.key, start.offset);\n }\n\n // Update our variables with the new value.\n document = change.value.document;\n startText = document.getDescendant(start.key);\n startBlock = document.getClosestBlock(start.key);\n startChild = startBlock.getFurthestAncestor(startText.key);\n\n // If the first and last block aren't the same, we need to move any of the\n // starting block's children after the split into the last block of the\n // fragment, which has already been inserted.\n if (firstBlock != lastBlock) {\n var nextChild = isAtStart ? startChild : startBlock.getNextSibling(startChild.key);\n var nextNodes = nextChild ? startBlock.nodes.skipUntil(function (n) {\n return n.key == nextChild.key;\n }) : List();\n var lastIndex = lastBlock.nodes.size;\n\n nextNodes.forEach(function (node, i) {\n var newIndex = lastIndex + i;\n change.moveNodeByKey(node.key, lastBlock.key, newIndex);\n });\n }\n\n // If the starting block is empty, we replace it entirely with the first block\n // of the fragment, since this leads to a more expected behavior for the user.\n if (!schema.isVoid(startBlock) && startBlock.text === '') {\n change.removeNodeByKey(startBlock.key);\n change.insertNodeByKey(parent.key, index, firstBlock);\n } else {\n // Otherwise, we maintain the starting block, and insert all of the first\n // block's inline nodes into it at the split point.\n var inlineChild = startBlock.getFurthestAncestor(startText.key);\n var inlineIndex = startBlock.nodes.indexOf(inlineChild);\n\n firstBlock.nodes.forEach(function (inline, i) {\n var o = start.offset == 0 ? 0 : 1;\n var newIndex = inlineIndex + i + o;\n change.insertNodeByKey(startBlock.key, newIndex, inline);\n });\n }\n });\n};\n\n/**\n * Insert an `inline` node at `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Inline|String|Object} inline\n */\n\nChanges$1.insertInlineAtRange = function (change, range, inline) {\n inline = Inline.create(inline);\n\n change.withoutNormalizing(function () {\n if (range.isExpanded) {\n change.deleteAtRange(range);\n range = range.moveToStart();\n }\n\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n var _range5 = range,\n start = _range5.start;\n\n var parent = document.getParent(start.key);\n var startText = document.assertDescendant(start.key);\n var index = parent.nodes.indexOf(startText);\n\n if (schema.isVoid(parent)) return;\n\n change.splitNodeByKey(start.key, start.offset);\n change.insertNodeByKey(parent.key, index + 1, inline);\n });\n};\n\n/**\n * Insert `text` at a `range`, with optional `marks`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {String} text\n * @param {Set<Mark>} marks (optional)\n */\n\nChanges$1.insertTextAtRange = function (change, range, text, marks) {\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n var start = range.start;\n\n var key = start.key;\n var offset = start.offset;\n var parent = document.getParent(start.key);\n\n if (schema.isVoid(parent)) {\n return;\n }\n\n change.withoutNormalizing(function () {\n if (range.isExpanded) {\n change.deleteAtRange(range);\n\n // Update range start after delete\n if (change.value.selection.start.key !== key) {\n key = change.value.selection.start.key;\n offset = change.value.selection.start.offset;\n }\n }\n\n change.insertTextByKey(key, offset, text, marks);\n });\n};\n\n/**\n * Remove an existing `mark` to the characters at `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Mark|String} mark (optional)\n */\n\nChanges$1.removeMarkAtRange = function (change, range, mark) {\n if (range.isCollapsed) return;\n\n var value = change.value;\n var document = value.document;\n\n var texts = document.getTextsAtRange(range);\n var start = range.start,\n end = range.end;\n\n\n change.withoutNormalizing(function () {\n texts.forEach(function (node) {\n var key = node.key;\n\n var index = 0;\n var length = node.text.length;\n\n if (key == start.key) index = start.offset;\n if (key == end.key) length = end.offset;\n if (key == start.key && key == end.key) length = end.offset - start.offset;\n\n change.removeMarkByKey(key, index, length, mark);\n });\n });\n};\n\n/**\n * Set the `properties` of block nodes in a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object|String} properties\n */\n\nChanges$1.setBlocksAtRange = function (change, range, properties) {\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n\n var blocks = document.getBlocksAtRange(range);\n\n var start = range.start,\n end = range.end,\n isCollapsed = range.isCollapsed;\n\n var isStartVoid = document.hasVoidParent(start.key, schema);\n var startBlock = document.getClosestBlock(start.key);\n var endBlock = document.getClosestBlock(end.key);\n\n // Check if we have a \"hanging\" selection case where the even though the\n // selection extends into the start of the end node, we actually want to\n // ignore that for UX reasons.\n var isHanging = isCollapsed == false && start.offset == 0 && end.offset == 0 && isStartVoid == false && start.key == startBlock.getFirstText().key && end.key == endBlock.getFirstText().key;\n\n // If it's a hanging selection, ignore the last block.\n var sets = isHanging ? blocks.slice(0, -1) : blocks;\n\n change.withoutNormalizing(function () {\n sets.forEach(function (block) {\n change.setNodeByKey(block.key, properties);\n });\n });\n};\n\n/**\n * Set the `properties` of inline nodes in a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object|String} properties\n */\n\nChanges$1.setInlinesAtRange = function (change, range, properties) {\n var value = change.value;\n var document = value.document;\n\n var inlines = document.getInlinesAtRange(range);\n\n change.withoutNormalizing(function () {\n inlines.forEach(function (inline) {\n change.setNodeByKey(inline.key, properties);\n });\n });\n};\n\n/**\n * Split the block nodes at a `range`, to optional `height`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Number} height (optional)\n */\n\nChanges$1.splitBlockAtRange = function (change, range) {\n var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var _range6 = range,\n start = _range6.start,\n end = _range6.end;\n var value = change.value;\n var _value = value,\n document = _value.document;\n\n var node = document.assertDescendant(start.key);\n var parent = document.getClosestBlock(node.key);\n var h = 0;\n\n while (parent && parent.object == 'block' && h < height) {\n node = parent;\n parent = document.getClosestBlock(parent.key);\n h++;\n }\n\n change.withoutNormalizing(function () {\n change.splitDescendantsByKey(node.key, start.key, start.offset);\n\n value = change.value;\n document = value.document;\n\n if (range.isExpanded) {\n if (range.isBackward) range = range.flip();\n var nextBlock = document.getNextBlock(node.key);\n range = range.moveAnchorToStartOfNode(nextBlock);\n range = range.setFocus(range.focus.setPath(null));\n\n if (start.key === end.key) {\n range = range.moveFocusTo(range.anchor.key, end.offset - start.offset);\n }\n\n range = document.resolveRange(range);\n change.deleteAtRange(range);\n }\n });\n};\n\n/**\n * Split the inline nodes at a `range`, to optional `height`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Number} height (optional)\n */\n\nChanges$1.splitInlineAtRange = function (change, range) {\n var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Infinity;\n\n if (range.isExpanded) {\n change.deleteAtRange(range);\n range = range.moveToStart();\n }\n\n var _range7 = range,\n start = _range7.start;\n var value = change.value;\n var document = value.document;\n\n var node = document.assertDescendant(start.key);\n var parent = document.getClosestInline(node.key);\n var h = 0;\n\n while (parent && parent.object == 'inline' && h < height) {\n node = parent;\n parent = document.getClosestInline(parent.key);\n h++;\n }\n\n change.splitDescendantsByKey(node.key, start.key, start.offset);\n};\n\n/**\n * Add or remove a `mark` from the characters at `range`, depending on whether\n * it's already there.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Mixed} mark\n */\n\nChanges$1.toggleMarkAtRange = function (change, range, mark) {\n if (range.isCollapsed) return;\n\n mark = Mark.create(mark);\n\n var value = change.value;\n var document = value.document;\n\n var marks = document.getActiveMarksAtRange(range);\n var exists = marks.some(function (m) {\n return m.equals(mark);\n });\n\n if (exists) {\n change.removeMarkAtRange(range, mark);\n } else {\n change.addMarkAtRange(range, mark);\n }\n};\n\n/**\n * Unwrap all of the block nodes in a `range` from a block with `properties`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {String|Object} properties\n */\n\nChanges$1.unwrapBlockAtRange = function (change, range, properties) {\n properties = Node.createProperties(properties);\n\n var value = change.value;\n var document = value.document;\n\n var blocks = document.getBlocksAtRange(range);\n var wrappers = blocks.map(function (block) {\n return document.getClosest(block.key, function (parent) {\n if (parent.object != 'block') return false;\n if (properties.type != null && parent.type != properties.type) return false;\n if (properties.data != null && !parent.data.isSuperset(properties.data)) return false;\n return true;\n });\n }).filter(function (exists) {\n return exists;\n }).toOrderedSet().toList();\n\n change.withoutNormalizing(function () {\n wrappers.forEach(function (block) {\n var first = block.nodes.first();\n var last = block.nodes.last();\n var parent = document.getParent(block.key);\n var index = parent.nodes.indexOf(block);\n\n var children = block.nodes.filter(function (child) {\n return blocks.some(function (b) {\n return child == b || child.hasDescendant(b.key);\n });\n });\n\n var firstMatch = children.first();\n var lastMatch = children.last();\n\n if (first == firstMatch && last == lastMatch) {\n block.nodes.forEach(function (child, i) {\n change.moveNodeByKey(child.key, parent.key, index + i);\n });\n\n change.removeNodeByKey(block.key);\n } else if (last == lastMatch) {\n block.nodes.skipUntil(function (n) {\n return n == firstMatch;\n }).forEach(function (child, i) {\n change.moveNodeByKey(child.key, parent.key, index + 1 + i);\n });\n } else if (first == firstMatch) {\n block.nodes.takeUntil(function (n) {\n return n == lastMatch;\n }).push(lastMatch).forEach(function (child, i) {\n change.moveNodeByKey(child.key, parent.key, index + i);\n });\n } else {\n var firstText = firstMatch.getFirstText();\n\n change.splitDescendantsByKey(block.key, firstText.key, 0);\n\n document = change.value.document;\n\n children.forEach(function (child, i) {\n if (i == 0) {\n var extra = child;\n child = document.getNextBlock(child.key);\n change.removeNodeByKey(extra.key);\n }\n\n change.moveNodeByKey(child.key, parent.key, index + 1 + i);\n });\n }\n });\n });\n};\n\n/**\n * Unwrap the inline nodes in a `range` from an inline with `properties`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {String|Object} properties\n */\n\nChanges$1.unwrapInlineAtRange = function (change, range, properties) {\n properties = Node.createProperties(properties);\n\n var value = change.value;\n var document = value.document;\n\n var texts = document.getTextsAtRange(range);\n var inlines = texts.map(function (text) {\n return document.getClosest(text.key, function (parent) {\n if (parent.object != 'inline') return false;\n if (properties.type != null && parent.type != properties.type) return false;\n if (properties.data != null && !parent.data.isSuperset(properties.data)) return false;\n return true;\n });\n }).filter(function (exists) {\n return exists;\n }).toOrderedSet().toList();\n\n change.withoutNormalizing(function () {\n inlines.forEach(function (inline) {\n var parent = change.value.document.getParent(inline.key);\n var index = parent.nodes.indexOf(inline);\n\n inline.nodes.forEach(function (child, i) {\n change.moveNodeByKey(child.key, parent.key, index + i);\n });\n\n change.removeNodeByKey(inline.key);\n });\n });\n};\n\n/**\n * Wrap all of the blocks in a `range` in a new `block`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Block|Object|String} block\n */\n\nChanges$1.wrapBlockAtRange = function (change, range, block) {\n block = Block.create(block);\n block = block.set('nodes', block.nodes.clear());\n\n var value = change.value;\n var document = value.document;\n\n\n var blocks = document.getBlocksAtRange(range);\n var firstblock = blocks.first();\n var lastblock = blocks.last();\n var parent = void 0,\n siblings = void 0,\n index = void 0;\n\n // If there is only one block in the selection then we know the parent and\n // siblings.\n if (blocks.length === 1) {\n parent = document.getParent(firstblock.key);\n siblings = blocks;\n } else {\n // Determine closest shared parent to all blocks in selection.\n parent = document.getClosest(firstblock.key, function (p1) {\n return !!document.getClosest(lastblock.key, function (p2) {\n return p1 == p2;\n });\n });\n }\n\n // If no shared parent could be found then the parent is the document.\n if (parent == null) parent = document;\n\n // Create a list of direct children siblings of parent that fall in the\n // selection.\n if (siblings == null) {\n var indexes = parent.nodes.reduce(function (ind, node, i) {\n if (node == firstblock || node.hasDescendant(firstblock.key)) ind[0] = i;\n if (node == lastblock || node.hasDescendant(lastblock.key)) ind[1] = i;\n return ind;\n }, []);\n\n index = indexes[0];\n siblings = parent.nodes.slice(indexes[0], indexes[1] + 1);\n }\n\n // Get the index to place the new wrapped node at.\n if (index == null) {\n index = parent.nodes.indexOf(siblings.first());\n }\n\n change.withoutNormalizing(function () {\n // Inject the new block node into the parent.\n change.insertNodeByKey(parent.key, index, block);\n\n // Move the sibling nodes into the new block node.\n siblings.forEach(function (node, i) {\n change.moveNodeByKey(node.key, block.key, i);\n });\n });\n};\n\n/**\n * Wrap the text and inlines in a `range` in a new `inline`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Inline|Object|String} inline\n */\n\nChanges$1.wrapInlineAtRange = function (change, range, inline) {\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n var start = range.start,\n end = range.end;\n\n\n if (range.isCollapsed) {\n // Wrapping an inline void\n var inlineParent = document.getClosestInline(start.key);\n\n if (!schema.isVoid(inlineParent)) {\n return;\n }\n\n return change.wrapInlineByKey(inlineParent.key, inline);\n }\n\n inline = Inline.create(inline);\n inline = inline.set('nodes', inline.nodes.clear());\n\n var blocks = document.getBlocksAtRange(range);\n var startBlock = document.getClosestBlock(start.key);\n var endBlock = document.getClosestBlock(end.key);\n var startInline = document.getClosestInline(start.key);\n var endInline = document.getClosestInline(end.key);\n var startChild = startBlock.getFurthestAncestor(start.key);\n var endChild = endBlock.getFurthestAncestor(end.key);\n\n change.withoutNormalizing(function () {\n if (!startInline || startInline != endInline) {\n change.splitDescendantsByKey(endChild.key, end.key, end.offset);\n change.splitDescendantsByKey(startChild.key, start.key, start.offset);\n }\n\n document = change.value.document;\n startBlock = document.getDescendant(startBlock.key);\n endBlock = document.getDescendant(endBlock.key);\n startChild = startBlock.getFurthestAncestor(start.key);\n endChild = endBlock.getFurthestAncestor(end.key);\n var startIndex = startBlock.nodes.indexOf(startChild);\n var endIndex = endBlock.nodes.indexOf(endChild);\n\n if (startInline && startInline == endInline) {\n var text = startBlock.getTextsAtRange(range).get(0).splitText(start.offset)[1].splitText(end.offset - start.offset)[0];\n\n inline = inline.set('nodes', List([text]));\n change.insertInlineAtRange(range, inline);\n\n var inlinekey = inline.getFirstText().key;\n var rng = {\n anchor: {\n key: inlinekey,\n offset: 0\n },\n focus: {\n key: inlinekey,\n offset: end.offset - start.offset\n },\n isFocused: true\n };\n change.select(rng);\n } else if (startBlock == endBlock) {\n document = change.value.document;\n startBlock = document.getClosestBlock(start.key);\n startChild = startBlock.getFurthestAncestor(start.key);\n\n var startInner = document.getNextSibling(startChild.key);\n var startInnerIndex = startBlock.nodes.indexOf(startInner);\n var endInner = start.key == end.key ? startInner : startBlock.getFurthestAncestor(end.key);\n var inlines = startBlock.nodes.skipUntil(function (n) {\n return n == startInner;\n }).takeUntil(function (n) {\n return n == endInner;\n }).push(endInner);\n\n var node = inline.regenerateKey();\n\n change.insertNodeByKey(startBlock.key, startInnerIndex, node);\n\n inlines.forEach(function (child, i) {\n change.moveNodeByKey(child.key, node.key, i);\n });\n } else {\n var startInlines = startBlock.nodes.slice(startIndex + 1);\n var endInlines = endBlock.nodes.slice(0, endIndex + 1);\n var startNode = inline.regenerateKey();\n var endNode = inline.regenerateKey();\n\n change.insertNodeByKey(startBlock.key, startIndex + 1, startNode);\n change.insertNodeByKey(endBlock.key, endIndex, endNode);\n\n startInlines.forEach(function (child, i) {\n change.moveNodeByKey(child.key, startNode.key, i);\n });\n\n endInlines.forEach(function (child, i) {\n change.moveNodeByKey(child.key, endNode.key, i);\n });\n\n blocks.slice(1, -1).forEach(function (block) {\n var node = inline.regenerateKey();\n change.insertNodeByKey(block.key, 0, node);\n\n block.nodes.forEach(function (child, i) {\n change.moveNodeByKey(child.key, node.key, i);\n });\n });\n }\n });\n};\n\n/**\n * Wrap the text in a `range` in a prefix/suffix.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {String} prefix\n * @param {String} suffix (optional)\n */\n\nChanges$1.wrapTextAtRange = function (change, range, prefix) {\n var suffix = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : prefix;\n var start = range.start,\n end = range.end;\n\n var startRange = range.moveToStart();\n var endRange = range.moveToEnd();\n\n if (start.key == end.key) {\n endRange = endRange.moveForward(prefix.length);\n }\n\n change.withoutNormalizing(function () {\n change.insertTextAtRange(startRange, prefix, []);\n change.insertTextAtRange(endRange, suffix, []);\n });\n};\n\n/**\n * Compare paths `path` and `b` to see which is before or after.\n *\n * @param {List} path\n * @param {List} b\n * @return {Number|Null}\n */\n\nfunction compare(path, target) {\n // PERF: if the paths are not the same size we can exit early.\n if (path.size !== target.size) return null;\n\n for (var i = 0; i < path.size; i++) {\n var pv = path.get(i);\n var tv = target.get(i);\n\n // If the path's value is ever less than the target's, it's before.\n if (pv < tv) return -1;\n\n // If the target's value is ever less than the path's, it's after.\n if (pv > tv) return 1;\n }\n\n // Otherwise they were equal the whole way, it's the same.\n return 0;\n}\n\n/**\n * Create a path from `attrs`.\n *\n * @param {Array|List} attrs\n * @return {List}\n */\n\nfunction create$1(attrs) {\n if (attrs == null) {\n return null;\n }\n\n if (List.isList(attrs)) {\n return attrs;\n }\n\n if (Array.isArray(attrs)) {\n return List(attrs);\n }\n\n throw new Error('Paths can only be created from arrays or lists, but you passed: ' + attrs);\n}\n\n/**\n * Crop paths `a` and `b` to an equal size, defaulting to the shortest.\n *\n * @param {List} a\n * @param {List} b\n */\n\nfunction crop(a, b) {\n var size = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : min(a, b);\n\n var ca = a.slice(0, size);\n var cb = b.slice(0, size);\n return [ca, cb];\n}\n\n/**\n * Decrement a `path` by `n` at `index`, defaulting to the last index.\n *\n * @param {List} path\n * @param {Number} n\n * @param {Number} index\n */\n\nfunction decrement(path) {\n var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : path.size - 1;\n\n return increment(path, 0 - n, index);\n}\n\n/**\n * Increment a `path` by `n` at `index`, defaulting to the last index.\n *\n * @param {List} path\n * @param {Number} n\n * @param {Number} index\n */\n\nfunction increment(path) {\n var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : path.size - 1;\n\n var value = path.get(index);\n var newValue = value + n;\n var newPath = path.set(index, newValue);\n return newPath;\n}\n\n/**\n * Is a `path` above another `target` path?\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\nfunction isAbove(path, target) {\n var _crop = crop(path, target),\n _crop2 = slicedToArray(_crop, 2),\n p = _crop2[0],\n t = _crop2[1];\n\n return path.size < target.size && compare(p, t) === 0;\n}\n\n/**\n * Is a `path` after another `target` path in a document?\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\nfunction isAfter(path, target) {\n var _crop3 = crop(path, target),\n _crop4 = slicedToArray(_crop3, 2),\n p = _crop4[0],\n t = _crop4[1];\n\n return compare(p, t) === 1;\n}\n\n/**\n * Is a `path` before another `target` path in a document?\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\nfunction isBefore(path, target) {\n var _crop5 = crop(path, target),\n _crop6 = slicedToArray(_crop5, 2),\n p = _crop6[0],\n t = _crop6[1];\n\n return compare(p, t) === -1;\n}\n\n/**\n * Is a `path` equal to another `target` path in a document?\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\nfunction isEqual(path, target) {\n return path.equals(target);\n}\n\n/**\n * Is a `path` older than a `target` path? Meaning that it ends as an older\n * sibling of one of the indexes in the target.\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\nfunction isOlder(path, target) {\n var index = path.size - 1;\n\n var _crop7 = crop(path, target, index),\n _crop8 = slicedToArray(_crop7, 2),\n p = _crop8[0],\n t = _crop8[1];\n\n var pl = path.get(index);\n var tl = target.get(index);\n return isEqual(p, t) && pl > tl;\n}\n\n/**\n * Is a `path` a sibling of a `target` path?\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\nfunction isSibling(path, target) {\n if (path.size !== target.size) return false;\n var p = path.butLast();\n var t = target.butLast();\n return p.equals(t);\n}\n\n/**\n * Is a `path` younger than a `target` path? Meaning that it ends as a younger\n * sibling of one of the indexes in the target.\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\nfunction isYounger(path, target) {\n var index = path.size - 1;\n\n var _crop9 = crop(path, target, index),\n _crop10 = slicedToArray(_crop9, 2),\n p = _crop10[0],\n t = _crop10[1];\n\n var pl = path.get(index);\n var tl = target.get(index);\n return isEqual(p, t) && pl < tl;\n}\n\n/**\n * Lift a `path` to refer to its parent.\n *\n * @param {List} path\n * @return {Array}\n */\n\nfunction lift(path) {\n var parent = path.slice(0, -1);\n return parent;\n}\n\n/**\n * Get the maximum length of paths `a` and `b`.\n *\n * @param {List} path\n * @param {List} path\n * @return {Number}\n */\n\nfunction max(a, b) {\n var n = Math.max(a.size, b.size);\n return n;\n}\n\n/**\n * Get the minimum length of paths `a` and `b`.\n *\n * @param {List} path\n * @param {List} path\n * @return {Number}\n */\n\nfunction min(a, b) {\n var n = Math.min(a.size, b.size);\n return n;\n}\n\n/**\n * Get the common ancestor path of path `a` and path `b`.\n *\n * @param {List} a\n * @param {List} b\n * @return {List}\n */\n\nfunction relate(a, b) {\n var array = [];\n\n for (var i = 0; i < a.size && i < b.size; i++) {\n var av = a.get(i);\n var bv = b.get(i);\n\n // If the values aren't equal, they've diverged and don't share an ancestor.\n if (av !== bv) break;\n\n // Otherwise, the current value is still a common ancestor.\n array.push(av);\n }\n\n var path = create$1(array);\n return path;\n}\n\n/**\n * Transform a `path` by an `operation`, adjusting it to stay current.\n *\n * @param {List} path\n * @param {Operation} operation\n * @return {List<List>}\n */\n\nfunction transform(path, operation) {\n var type = operation.type,\n position = operation.position,\n p = operation.path;\n\n\n if (type === 'add_mark' || type === 'insert_text' || type === 'remove_mark' || type === 'remove_text' || type === 'set_mark' || type === 'set_node' || type === 'set_selection' || type === 'set_value' || path.size === 0) {\n return List([path]);\n }\n\n var pIndex = p.size - 1;\n var pEqual = isEqual(p, path);\n var pYounger = isYounger(p, path);\n var pAbove = isAbove(p, path);\n\n if (type === 'insert_node') {\n if (pEqual || pYounger || pAbove) {\n path = increment(path, 1, pIndex);\n }\n }\n\n if (type === 'remove_node') {\n if (pYounger) {\n path = decrement(path, 1, pIndex);\n } else if (pEqual || pAbove) {\n path = [];\n }\n }\n\n if (type === 'merge_node') {\n if (pEqual || pYounger) {\n path = decrement(path, 1, pIndex);\n } else if (pAbove) {\n path = decrement(path, 1, pIndex);\n path = increment(path, position, pIndex + 1);\n }\n }\n\n if (type === 'split_node') {\n if (pEqual) {\n path = [path, increment(path)];\n } else if (pYounger) {\n path = increment(path, 1, pIndex);\n } else if (pAbove) {\n if (path.get(pIndex + 1) >= position) {\n path = increment(path, 1, pIndex);\n path = decrement(path, position, pIndex + 1);\n }\n }\n }\n\n if (type === 'move_node') {\n var np = operation.newPath;\n\n var npIndex = np.size - 1;\n var npEqual = isEqual(np, path);\n var npYounger = isYounger(np, path);\n var npAbove = isAbove(np, path);\n\n if (pAbove) {\n path = np.concat(path.slice(p.size));\n } else {\n if (pEqual) {\n path = np;\n } else if (pYounger) {\n path = decrement(path, 1, pIndex);\n }\n\n if (npEqual || npYounger || npAbove) {\n path = increment(path, 1, npIndex);\n }\n }\n }\n\n var paths = Array.isArray(path) ? path : [path];\n return List(paths);\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar PathUtils = {\n compare: compare,\n create: create$1,\n crop: crop,\n decrement: decrement,\n increment: increment,\n isAbove: isAbove,\n isAfter: isAfter,\n isBefore: isBefore,\n isEqual: isEqual,\n isOlder: isOlder,\n isSibling: isSibling,\n isYounger: isYounger,\n lift: lift,\n max: max,\n min: min,\n relate: relate,\n transform: transform\n};\n\n/**\n * Changes.\n *\n * @type {Object}\n */\n\nvar Changes$2 = {};\n\n/**\n * Add mark to text at `offset` and `length` in node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mixed} mark\n */\n\nChanges$2.addMarkByPath = function (change, path, offset, length, mark) {\n mark = Mark.create(mark);\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n var leaves = node.getLeaves();\n\n var operations = [];\n var bx = offset;\n var by = offset + length;\n var o = 0;\n\n leaves.forEach(function (leaf) {\n var ax = o;\n var ay = ax + leaf.text.length;\n\n o += leaf.text.length;\n\n // If the leaf doesn't overlap with the operation, continue on.\n if (ay < bx || by < ax) return;\n\n // If the leaf already has the mark, continue on.\n if (leaf.marks.has(mark)) return;\n\n // Otherwise, determine which offset and characters overlap.\n var start = Math.max(ax, bx);\n var end = Math.min(ay, by);\n\n operations.push({\n type: 'add_mark',\n value: value,\n path: path,\n offset: start,\n length: end - start,\n mark: mark\n });\n });\n\n change.applyOperations(operations);\n};\n\n/**\n * Insert a `fragment` at `index` in a node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} index\n * @param {Fragment} fragment\n */\n\nChanges$2.insertFragmentByPath = function (change, path, index, fragment) {\n fragment.nodes.forEach(function (node, i) {\n change.insertNodeByPath(path, index + i, node);\n });\n};\n\n/**\n * Insert a `node` at `index` in a node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} index\n * @param {Node} node\n */\n\nChanges$2.insertNodeByPath = function (change, path, index, node) {\n var value = change.value;\n\n\n change.applyOperation({\n type: 'insert_node',\n value: value,\n path: path.concat(index),\n node: node\n });\n};\n\n/**\n * Insert `text` at `offset` in node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} offset\n * @param {String} text\n * @param {Set<Mark>} marks (optional)\n */\n\nChanges$2.insertTextByPath = function (change, path, offset, text, marks) {\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n marks = marks || node.getMarksAtIndex(offset);\n\n change.applyOperation({\n type: 'insert_text',\n value: value,\n path: path,\n offset: offset,\n text: text,\n marks: marks\n });\n};\n\n/**\n * Merge a node by `path` with the previous node.\n *\n * @param {Change} change\n * @param {Array} path\n */\n\nChanges$2.mergeNodeByPath = function (change, path) {\n var value = change.value;\n var document = value.document;\n\n var original = document.getDescendant(path);\n var previous = document.getPreviousSibling(path);\n\n if (!previous) {\n throw new Error('Unable to merge node with path \"' + path + '\", because it has no previous sibling.');\n }\n\n var position = previous.object == 'text' ? previous.text.length : previous.nodes.size;\n\n change.applyOperation({\n type: 'merge_node',\n value: value,\n path: path,\n position: position,\n // for undos to succeed we only need the type and data because\n // these are the only properties that get changed in the merge operation\n properties: {\n type: original.type,\n data: original.data\n },\n target: null\n });\n};\n\n/**\n * Move a node by `path` to a new parent by `newPath` and `index`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {String} newPath\n * @param {Number} index\n */\n\nChanges$2.moveNodeByPath = function (change, path, newPath, newIndex) {\n var value = change.value;\n\n\n change.applyOperation({\n type: 'move_node',\n value: value,\n path: path,\n newPath: newPath.concat(newIndex)\n });\n};\n\n/**\n * Remove mark from text at `offset` and `length` in node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n */\n\nChanges$2.removeMarkByPath = function (change, path, offset, length, mark) {\n mark = Mark.create(mark);\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n var leaves = node.getLeaves();\n\n var operations = [];\n var bx = offset;\n var by = offset + length;\n var o = 0;\n\n leaves.forEach(function (leaf) {\n var ax = o;\n var ay = ax + leaf.text.length;\n\n o += leaf.text.length;\n\n // If the leaf doesn't overlap with the operation, continue on.\n if (ay < bx || by < ax) return;\n\n // If the leaf already has the mark, continue on.\n if (!leaf.marks.has(mark)) return;\n\n // Otherwise, determine which offset and characters overlap.\n var start = Math.max(ax, bx);\n var end = Math.min(ay, by);\n\n operations.push({\n type: 'remove_mark',\n value: value,\n path: path,\n offset: start,\n length: end - start,\n mark: mark\n });\n });\n\n change.applyOperations(operations);\n};\n\n/**\n * Remove all `marks` from node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n */\n\nChanges$2.removeAllMarksByPath = function (change, path) {\n var state = change.state;\n var document = state.document;\n\n var node = document.assertNode(path);\n var texts = node.object === 'text' ? [node] : node.getTextsAsArray();\n\n texts.forEach(function (text) {\n text.getMarksAsArray().forEach(function (mark) {\n change.removeMarkByKey(text.key, 0, text.text.length, mark);\n });\n });\n};\n\n/**\n * Remove a node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n */\n\nChanges$2.removeNodeByPath = function (change, path) {\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n\n change.applyOperation({\n type: 'remove_node',\n value: value,\n path: path,\n node: node\n });\n};\n\n/**\n * Remove text at `offset` and `length` in node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} offset\n * @param {Number} length\n */\n\nChanges$2.removeTextByPath = function (change, path, offset, length) {\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n var leaves = node.getLeaves();\n var text = node.text;\n\n\n var removals = [];\n var bx = offset;\n var by = offset + length;\n var o = 0;\n\n leaves.forEach(function (leaf) {\n var ax = o;\n var ay = ax + leaf.text.length;\n\n o += leaf.text.length;\n\n // If the leaf doesn't overlap with the removal, continue on.\n if (ay < bx || by < ax) return;\n\n // Otherwise, determine which offset and characters overlap.\n var start = Math.max(ax, bx);\n var end = Math.min(ay, by);\n var string = text.slice(start, end);\n\n removals.push({\n type: 'remove_text',\n value: value,\n path: path,\n offset: start,\n text: string,\n marks: leaf.marks\n });\n });\n\n // Apply in reverse order, so subsequent removals don't impact previous ones.\n change.applyOperations(removals.reverse());\n};\n\n/**\n`* Replace a `node` with another `node`\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Object|Node} node\n */\n\nChanges$2.replaceNodeByPath = function (change, path, newNode) {\n newNode = Node.create(newNode);\n var index = path.last();\n var parentPath = PathUtils.lift(path);\n\n change.withoutNormalizing(function () {\n change.removeNodeByPath(path);\n change.insertNodeByPath(parentPath, index, newNode);\n });\n};\n\n/**\n * Replace A Length of Text with another string or text\n * @param {Change} change\n * @param {String} key\n * @param {Number} offset\n * @param {Number} length\n * @param {string} text\n * @param {Set<Mark>} marks (optional)\n */\n\nChanges$2.replaceTextByPath = function (change, path, offset, length, text, marks) {\n var document = change.value.document;\n\n var node = document.assertNode(path);\n\n if (length + offset > node.text.length) {\n length = node.text.length - offset;\n }\n\n var range = document.createRange({\n anchor: { path: path, offset: offset },\n focus: { path: path, offset: offset + length }\n });\n\n var activeMarks = document.getActiveMarksAtRange(range);\n\n change.withoutNormalizing(function () {\n change.removeTextByPath(path, offset, length);\n\n if (!marks) {\n // Do not use mark at index when marks and activeMarks are both empty\n marks = activeMarks ? activeMarks : [];\n } else if (activeMarks) {\n // Do not use `has` because we may want to reset marks like font-size with\n // an updated data;\n activeMarks = activeMarks.filter(function (activeMark) {\n return !marks.find(function (m) {\n return activeMark.type === m.type;\n });\n });\n\n marks = activeMarks.merge(marks);\n }\n\n change.insertTextByPath(path, offset, text, marks);\n });\n};\n\n/**\n * Set `properties` on mark on text at `offset` and `length` in node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n */\n\nChanges$2.setMarkByPath = function (change, path, offset, length, mark, properties) {\n mark = Mark.create(mark);\n properties = Mark.createProperties(properties);\n var value = change.value;\n\n\n change.applyOperation({\n type: 'set_mark',\n value: value,\n path: path,\n offset: offset,\n length: length,\n mark: mark,\n properties: properties\n });\n};\n\n/**\n * Set `properties` on a node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Object|String} properties\n */\n\nChanges$2.setNodeByPath = function (change, path, properties) {\n properties = Node.createProperties(properties);\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n\n change.applyOperation({\n type: 'set_node',\n value: value,\n path: path,\n node: node,\n properties: properties\n });\n};\n\n/**\n * Insert `text` at `offset` in node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {String} text\n * @param {Set<Mark>} marks (optional)\n */\n\nChanges$2.setTextByPath = function (change, path, text, marks) {\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n var end = node.text.length;\n change.replaceTextByPath(path, 0, end, text, marks);\n};\n\n/**\n * Split a node by `path` at `position`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} position\n * @param {Object} options\n */\n\nChanges$2.splitNodeByPath = function (change, path, position) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _options$target = options.target,\n target = _options$target === undefined ? null : _options$target;\n var value = change.value;\n var document = value.document;\n\n var node = document.getDescendant(path);\n\n change.applyOperation({\n type: 'split_node',\n value: value,\n path: path,\n position: position,\n target: target,\n properties: {\n type: node.type,\n data: node.data\n }\n });\n};\n\n/**\n * Split a node deeply down the tree by `path`, `textPath` and `textOffset`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Array} textPath\n * @param {Number} textOffset\n */\n\nChanges$2.splitDescendantsByPath = function (change, path, textPath, textOffset) {\n if (path.equals(textPath)) {\n change.splitNodeByPath(textPath, textOffset);\n return;\n }\n\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n var text = document.assertNode(textPath);\n var ancestors = document.getAncestors(textPath);\n var nodes = ancestors.skipUntil(function (a) {\n return a.key == node.key;\n }).reverse().unshift(text);\n\n var previous = void 0;\n var index = void 0;\n\n change.withoutNormalizing(function () {\n nodes.forEach(function (n) {\n var prevIndex = index == null ? null : index;\n index = previous ? n.nodes.indexOf(previous) + 1 : textOffset;\n previous = n;\n change.splitNodeByKey(n.key, index, { target: prevIndex });\n });\n });\n};\n\n/**\n * Unwrap content from an inline parent with `properties`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Object|String} properties\n */\n\nChanges$2.unwrapInlineByPath = function (change, path, properties) {\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n var node = document.assertNode(path);\n var first = node.getFirstText();\n var last = node.getLastText();\n var range = selection.moveToRangeOfNode(first, last);\n change.unwrapInlineAtRange(range, properties);\n};\n\n/**\n * Unwrap content from a block parent with `properties`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Object|String} properties\n */\n\nChanges$2.unwrapBlockByPath = function (change, path, properties) {\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n var node = document.assertNode(path);\n var first = node.getFirstText();\n var last = node.getLastText();\n var range = selection.moveToRangeOfNode(first, last);\n change.unwrapBlockAtRange(range, properties);\n};\n\n/**\n * Unwrap a single node from its parent.\n *\n * If the node is surrounded with siblings, its parent will be\n * split. If the node is the only child, the parent is removed, and\n * simply replaced by the node itself. Cannot unwrap a root node.\n *\n * @param {Change} change\n * @param {Array} path\n */\n\nChanges$2.unwrapNodeByPath = function (change, path) {\n var value = change.value;\n var document = value.document;\n\n document.assertNode(path);\n\n var parentPath = PathUtils.lift(path);\n var parent = document.assertNode(parentPath);\n var index = path.last();\n var parentIndex = parentPath.last();\n var grandPath = PathUtils.lift(parentPath);\n var isFirst = index === 0;\n var isLast = index === parent.nodes.size - 1;\n\n change.withoutNormalizing(function () {\n if (parent.nodes.size === 1) {\n change.moveNodeByPath(path, grandPath, parentIndex + 1);\n change.removeNodeByPath(parentPath);\n } else if (isFirst) {\n change.moveNodeByPath(path, grandPath, parentIndex);\n } else if (isLast) {\n change.moveNodeByPath(path, grandPath, parentIndex + 1);\n } else {\n var updatedPath = PathUtils.increment(path, 1, parentPath.size - 1);\n updatedPath = updatedPath.set(updatedPath.size - 1, 0);\n change.splitNodeByPath(parentPath, index);\n change.moveNodeByPath(updatedPath, grandPath, parentIndex + 1);\n }\n });\n};\n\n/**\n * Wrap a node in a block with `properties`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Block|Object|String} block\n */\n\nChanges$2.wrapBlockByPath = function (change, path, block) {\n block = Block.create(block);\n block = block.set('nodes', block.nodes.clear());\n var parentPath = PathUtils.lift(path);\n var index = path.last();\n var newPath = PathUtils.increment(path);\n\n change.withoutNormalizing(function () {\n change.insertNodeByPath(parentPath, index, block);\n change.moveNodeByPath(newPath, path, 0);\n });\n};\n\n/**\n * Wrap a node in an inline with `properties`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Block|Object|String} inline\n */\n\nChanges$2.wrapInlineByPath = function (change, path, inline) {\n inline = Inline.create(inline);\n inline = inline.set('nodes', inline.nodes.clear());\n var parentPath = PathUtils.lift(path);\n var index = path.last();\n var newPath = PathUtils.increment(path);\n\n change.withoutNormalizing(function () {\n change.insertNodeByPath(parentPath, index, inline);\n change.moveNodeByPath(newPath, path, 0);\n });\n};\n\n/**\n * Wrap a node by `path` with `node`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Node|Object} node\n */\n\nChanges$2.wrapNodeByPath = function (change, path, node) {\n node = Node.create(node);\n\n if (node.object === 'block') {\n change.wrapBlockByPath(path, node);\n } else if (node.object === 'inline') {\n change.wrapInlineByPath(path, node);\n }\n};\n\n/**\n * Mix in `*ByKey` variants.\n */\n\nvar CHANGES = ['addMark', 'insertFragment', 'insertNode', 'insertText', 'mergeNode', 'removeMark', 'removeAllMarks', 'removeNode', 'setText', 'replaceText', 'removeText', 'replaceNode', 'setMark', 'setNode', 'splitNode', 'unwrapInline', 'unwrapBlock', 'unwrapNode', 'wrapBlock', 'wrapInline', 'wrapNode'];\n\nvar _loop = function _loop(method) {\n Changes$2[method + 'ByKey'] = function (change, key) {\n for (var _len3 = arguments.length, args = Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n args[_key3 - 2] = arguments[_key3];\n }\n\n var value = change.value;\n var document = value.document;\n\n var path = document.assertPath(key);\n change[method + 'ByPath'].apply(change, [path].concat(args));\n };\n};\n\nvar _iteratorNormalCompletion = true;\nvar _didIteratorError = false;\nvar _iteratorError = undefined;\n\ntry {\n for (var _iterator = CHANGES[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var method = _step.value;\n\n _loop(method);\n }\n\n // Moving nodes takes two keys, so it's slightly different.\n} catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n} finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n}\n\nChanges$2.moveNodeByKey = function (change, key, newKey) {\n for (var _len = arguments.length, args = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n args[_key - 3] = arguments[_key];\n }\n\n var value = change.value;\n var document = value.document;\n\n var path = document.assertPath(key);\n var newPath = document.assertPath(newKey);\n change.moveNodeByPath.apply(change, [path, newPath].concat(args));\n};\n\n// Splitting descendants takes two keys, so it's slightly different.\nChanges$2.splitDescendantsByKey = function (change, key, textKey) {\n for (var _len2 = arguments.length, args = Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {\n args[_key2 - 3] = arguments[_key2];\n }\n\n var value = change.value;\n var document = value.document;\n\n var path = document.assertPath(key);\n var textPath = document.assertPath(textKey);\n change.splitDescendantsByPath.apply(change, [path, textPath].concat(args));\n};\n\n/**\n * Changes.\n *\n * @type {Object}\n */\n\nvar Changes$3 = {};\n\n/**\n * Redo to the next value in the history.\n *\n * @param {Change} change\n */\n\nChanges$3.redo = function (change) {\n var value = change.value;\n var _value = value,\n history = _value.history;\n\n if (!history) return;\n\n var _history = history,\n undos = _history.undos,\n redos = _history.redos;\n\n var next = redos.peek();\n if (!next) return;\n\n // Shift the next value into the undo stack.\n redos = redos.pop();\n undos = undos.push(next);\n\n // Replay the next operations.\n next.forEach(function (op) {\n var _op = op,\n type = _op.type,\n properties = _op.properties;\n\n // When the operation mutates the selection, omit its `isFocused` value to\n // prevent the editor focus from changing during redoing.\n\n if (type == 'set_selection') {\n op = op.set('properties', omit(properties, 'isFocused'));\n }\n\n change.withoutSaving(function () {\n change.applyOperation(op);\n });\n });\n\n // Update the history.\n value = change.value;\n history = history.set('undos', undos).set('redos', redos);\n value = value.set('history', history);\n change.value = value;\n};\n\n/**\n * Undo the previous operations in the history.\n *\n * @param {Change} change\n */\n\nChanges$3.undo = function (change) {\n var value = change.value;\n var _value2 = value,\n history = _value2.history;\n\n if (!history) return;\n\n var _history2 = history,\n undos = _history2.undos,\n redos = _history2.redos;\n\n var previous = undos.peek();\n if (!previous) return;\n\n // Shift the previous operations into the redo stack.\n undos = undos.pop();\n redos = redos.push(previous);\n\n // Replay the inverse of the previous operations.\n previous.slice().reverse().map(function (op) {\n return op.invert();\n }).forEach(function (inverse) {\n var _inverse = inverse,\n type = _inverse.type,\n properties = _inverse.properties;\n\n // When the operation mutates the selection, omit its `isFocused` value to\n // prevent the editor focus from changing during undoing.\n\n if (type == 'set_selection') {\n inverse = inverse.set('properties', omit(properties, 'isFocused'));\n }\n\n change.withoutSaving(function () {\n change.applyOperation(inverse);\n });\n });\n\n // Update the history.\n value = change.value;\n history = history.set('undos', undos).set('redos', redos);\n value = value.set('history', history);\n change.value = value;\n};\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$6 = {\n key: undefined,\n offset: undefined,\n path: undefined\n\n /**\n * Point.\n *\n * @type {Point}\n */\n\n};\nvar Point = function (_Record) {\n inherits(Point, _Record);\n\n function Point() {\n classCallCheck(this, Point);\n return possibleConstructorReturn(this, (Point.__proto__ || Object.getPrototypeOf(Point)).apply(this, arguments));\n }\n\n createClass(Point, [{\n key: 'isAtEndOfNode',\n\n\n /**\n * Check whether the point is at the end of a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n value: function isAtEndOfNode(node) {\n if (this.isUnset) return false;\n var last = node.getLastText();\n var is$$1 = this.key === last.key && this.offset === last.text.length;\n return is$$1;\n }\n\n /**\n * Check whether the point is at the start of a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'isAtStartOfNode',\n value: function isAtStartOfNode(node) {\n if (this.isUnset) return false;\n\n // PERF: Do a check for a `0` offset first since it's quickest.\n if (this.offset != 0) return false;\n\n var first = node.getFirstText();\n var is$$1 = this.key === first.key;\n return is$$1;\n }\n\n /**\n * Check whether the point is in a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'isInNode',\n value: function isInNode(node) {\n if (this.isUnset) return false;\n if (node.object === 'text' && node.key === this.key) return true;\n if (node.hasNode(this.key)) return true;\n return false;\n }\n\n /**\n * Move the point's offset backward `n` characters.\n *\n * @param {Number} n (optional)\n * @return {Point}\n */\n\n }, {\n key: 'moveBackward',\n value: function moveBackward() {\n var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n\n if (n === 0) return this;\n if (n < 0) return this.moveForward(-n);\n var point = this.setOffset(this.offset - n);\n return point;\n }\n\n /**\n * Move the point's offset forward `n` characters.\n *\n * @param {Number} n (optional)\n * @return {Point}\n */\n\n }, {\n key: 'moveForward',\n value: function moveForward() {\n var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n\n if (n === 0) return this;\n if (n < 0) return this.moveBackward(-n);\n var point = this.setOffset(this.offset + n);\n return point;\n }\n\n /**\n * Move the point's anchor point to a new `path` and `offset`.\n *\n * Optionally, the `path` can be a key string, or omitted entirely in which\n * case it would be the offset number.\n *\n * @param {List|String|Number} path\n * @param {Number} offset\n * @return {Point}\n */\n\n }, {\n key: 'moveTo',\n value: function moveTo(path) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var key = this.key;\n\n if (typeof path === 'number') {\n offset = path;\n path = this.path;\n } else if (typeof path === 'string') {\n key = path;\n path = key === this.key ? this.path : null;\n } else {\n key = path.equals(this.path) ? this.key : null;\n }\n\n var point = this.merge({ key: key, path: path, offset: offset });\n return point;\n }\n\n /**\n * Move the point's anchor point to the start of a `node`.\n *\n * @param {Node} node\n * @return {Point}\n */\n\n }, {\n key: 'moveToStartOfNode',\n value: function moveToStartOfNode(node) {\n var first = node.getFirstText();\n var point = this.moveTo(first.key, 0);\n return point;\n }\n\n /**\n * Move the point's anchor point to the end of a `node`.\n *\n * @param {Node} node\n * @return {Point}\n */\n\n }, {\n key: 'moveToEndOfNode',\n value: function moveToEndOfNode(node) {\n var last = node.getLastText();\n var point = this.moveTo(last.key, last.text.length);\n return point;\n }\n\n /**\n * Normalize the point relative to a `node`, ensuring that its key and path\n * reference a text node, or that it gets unset.\n *\n * @param {Node} node\n * @return {Point}\n */\n\n }, {\n key: 'normalize',\n value: function normalize(node) {\n // If both the key and path are null, there's no reference to a node, so\n // make sure it is entirely unset.\n if (this.key == null && this.path == null) {\n return this.setOffset(null);\n }\n\n var key = this.key,\n offset = this.offset,\n path = this.path;\n\n var target = node.getNode(key || path);\n\n if (!target) {\n warning(false, \"A point's `path` or `key` invalid and was reset!\");\n\n var text = node.getFirstText();\n if (!text) return Point.create();\n\n var _point = this.merge({\n key: text.key,\n offset: 0,\n path: node.getPath(text.key)\n });\n\n return _point;\n }\n\n if (target.object !== 'text') {\n warning(false, 'A point should not reference a non-text node!');\n\n var _text = target.getTextAtOffset(offset);\n var before = target.getOffset(_text.key);\n var _point2 = this.merge({\n offset: offset - before,\n key: _text.key,\n path: node.getPath(_text.key)\n });\n\n return _point2;\n }\n\n if (target && path && key && key !== target.key) {\n warning(false, \"A point's `key` did not match its `path`!\");\n }\n\n var point = this.merge({\n key: target.key,\n path: path == null ? node.getPath(target.key) : path,\n offset: offset == null ? 0 : Math.min(offset, target.text.length)\n });\n\n return point;\n }\n\n /**\n * Set the point's key to a new `key`.\n *\n * @param {String} key\n * @return {Point}\n */\n\n }, {\n key: 'setKey',\n value: function setKey(key) {\n if (key !== null) {\n key = KeyUtils.create(key);\n }\n\n var point = this.set('key', key);\n return point;\n }\n\n /**\n * Set the point's offset to a new `offset`.\n *\n * @param {Number} offset\n * @return {Point}\n */\n\n }, {\n key: 'setOffset',\n value: function setOffset(offset) {\n var point = this.set('offset', offset);\n return point;\n }\n\n /**\n * Set the point's path to a new `path`.\n *\n * @param {List|Array} path\n * @return {Point}\n */\n\n }, {\n key: 'setPath',\n value: function setPath(path) {\n if (path !== null) {\n path = PathUtils.create(path);\n }\n\n var point = this.set('path', path);\n return point;\n }\n\n /**\n * Return a JSON representation of the point.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n key: this.key,\n offset: this.offset,\n path: this.path && this.path.toArray()\n };\n\n if (!options.preserveKeys) {\n delete object.key;\n }\n\n return object;\n }\n\n /**\n * Unset the point.\n *\n * @return {Point}\n */\n\n }, {\n key: 'unset',\n value: function unset() {\n return this.merge({\n key: null,\n offset: null,\n path: null\n });\n }\n }, {\n key: 'isSet',\n\n\n /**\n * Check whether all properties of the point are set.\n *\n * @return {Boolean}\n */\n\n get: function get$$1() {\n return this.key != null && this.offset != null && this.path != null;\n }\n\n /**\n * Check whether any property of the point is not set.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isUnset',\n get: function get$$1() {\n return !this.isSet;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Point` with `attrs`.\n *\n * @param {Object|Point} attrs\n * @return {Point}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Point.isPoint(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n return Point.fromJSON(attrs);\n }\n\n throw new Error('`Point.create` only accepts objects or points, but you passed it: ' + attrs);\n }\n\n /**\n * Create a dictionary of settable point properties from `attrs`.\n *\n * @param {Object|Point} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Point.isPoint(a)) {\n return {\n key: a.key,\n offset: a.offset,\n path: a.path\n };\n }\n\n if (isPlainObject(a)) {\n var p = {};\n if ('key' in a) p.key = a.key;\n if ('offset' in a) p.offset = a.offset;\n if ('path' in a) p.path = PathUtils.create(a.path);\n\n // If only a path is set, or only a key is set, ensure that the other is\n // set to null so that it can be normalized back to the right value.\n // Otherwise we won't realize that the path and key don't match anymore.\n if ('path' in a && !('key' in a)) p.key = null;\n if ('key' in a && !('path' in a)) p.path = null;\n\n return p;\n }\n\n throw new Error('`Point.createProperties` only accepts objects or points, but you passed it: ' + a);\n }\n\n /**\n * Create a `Point` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Point}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var _object$key = object.key,\n key = _object$key === undefined ? null : _object$key,\n _object$offset = object.offset,\n offset = _object$offset === undefined ? null : _object$offset,\n _object$path = object.path,\n path = _object$path === undefined ? null : _object$path;\n\n\n var point = new Point({\n key: key,\n offset: offset,\n path: PathUtils.create(path)\n });\n\n return point;\n }\n }]);\n return Point;\n}(Record(DEFAULTS$6));\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$7 = {\n anchor: undefined,\n focus: undefined,\n mark: undefined\n\n /**\n * Decoration.\n *\n * @type {Decoration}\n */\n\n};\nvar Decoration = function (_Record) {\n inherits(Decoration, _Record);\n\n function Decoration() {\n classCallCheck(this, Decoration);\n return possibleConstructorReturn(this, (Decoration.__proto__ || Object.getPrototypeOf(Decoration)).apply(this, arguments));\n }\n\n createClass(Decoration, [{\n key: 'setProperties',\n\n\n /**\n * Set new `properties` on the decoration.\n *\n * @param {Object|Range|Selection} properties\n * @return {Range}\n */\n\n value: function setProperties(properties) {\n properties = Decoration.createProperties(properties);\n var _properties = properties,\n anchor = _properties.anchor,\n focus = _properties.focus,\n mark = _properties.mark;\n\n var props = {};\n\n if (anchor) {\n props.anchor = Point.create(anchor);\n }\n\n if (focus) {\n props.focus = Point.create(focus);\n }\n\n if (mark) {\n props.mark = Mark.create(mark);\n }\n\n var decoration = this.merge(props);\n return decoration;\n }\n\n /**\n * Return a JSON representation of the decoration.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n anchor: this.anchor.toJSON(options),\n focus: this.focus.toJSON(options),\n mark: this.mark.toJSON(options)\n };\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Decoration` with `attrs`.\n *\n * @param {Object|Decoration} attrs\n * @return {Decoration}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Decoration.isDecoration(attrs)) {\n return attrs;\n }\n\n if (Range.isRange(attrs)) {\n return Decoration.fromJSON(Range.createProperties(attrs));\n }\n\n if (isPlainObject(attrs)) {\n return Decoration.fromJSON(attrs);\n }\n\n throw new Error('`Decoration.create` only accepts objects or decorations, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Ranges` from `elements`.\n *\n * @param {Array<Decoration|Object>|List<Decoration|Object>} elements\n * @return {List<Decoration>}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(elements) || Array.isArray(elements)) {\n var list = new List(elements.map(Decoration.create));\n return list;\n }\n\n throw new Error('`Decoration.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n\n /**\n * Create a dictionary of settable decoration properties from `attrs`.\n *\n * @param {Object|String|Decoration} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Decoration.isDecoration(a)) {\n return {\n anchor: Point.createProperties(a.anchor),\n focus: Point.createProperties(a.focus),\n mark: Mark.create(a.mark)\n };\n }\n\n if (isPlainObject(a)) {\n var p = {};\n if ('anchor' in a) p.anchor = Point.create(a.anchor);\n if ('focus' in a) p.focus = Point.create(a.focus);\n if ('mark' in a) p.mark = Mark.create(a.mark);\n return p;\n }\n\n throw new Error('`Decoration.createProperties` only accepts objects or decorations, but you passed it: ' + a);\n }\n\n /**\n * Create a `Decoration` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Decoration}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var anchor = object.anchor,\n focus = object.focus,\n mark = object.mark;\n\n\n if (!mark) {\n throw new Error('Decorations must be created with a `mark`, but you passed: ' + JSON.stringify(object));\n }\n\n var decoration = new Decoration({\n anchor: Point.fromJSON(anchor || {}),\n focus: Point.fromJSON(focus || {}),\n mark: Mark.fromJSON(mark)\n });\n\n return decoration;\n }\n }]);\n return Decoration;\n}(Record(DEFAULTS$7));\n\n/**\n * Slate-specific object types.\n *\n * @type {Object}\n */\n\nvar TYPES = {\n block: '@@__SLATE_BLOCK__@@',\n change: '@@__SLATE_CHANGE__@@',\n decoration: '@@__SLATE_DECORATION__@@',\n document: '@@__SLATE_DOCUMENT__@@',\n history: '@@__SLATE_HISTORY__@@',\n inline: '@@__SLATE_INLINE__@@',\n leaf: '@@__SLATE_LEAF__@@',\n mark: '@@__SLATE_MARK__@@',\n operation: '@@__SLATE_OPERATION__@@',\n point: '@@__SLATE_POINT__@@',\n range: '@@__SLATE_RANGE__@@',\n schema: '@@__SLATE_SCHEMA__@@',\n selection: '@@__SLATE_SELECTION__@@',\n stack: '@@__SLATE_STACK__@@',\n text: '@@__SLATE_TEXT__@@',\n value: '@@__SLATE_VALUE__@@'\n\n /**\n * Determine whether a `value` is of `type`.\n *\n * @param {string} type\n * @param {any} value\n * @return {boolean}\n */\n\n};function isObject(type, value) {\n return !!(value && value[TYPES[type]]);\n}\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$8 = {\n anchor: undefined,\n focus: undefined\n\n /**\n * Range.\n *\n * @type {Range}\n */\n\n};\nvar Range = function (_Record) {\n inherits(Range, _Record);\n\n function Range() {\n classCallCheck(this, Range);\n return possibleConstructorReturn(this, (Range.__proto__ || Object.getPrototypeOf(Range)).apply(this, arguments));\n }\n\n createClass(Range, [{\n key: 'toJSON',\n\n\n /**\n * Return a JSON representation of the range.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n anchor: this.anchor.toJSON(options),\n focus: this.focus.toJSON(options)\n };\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Range` with `attrs`.\n *\n * @param {Object|Range} attrs\n * @return {Range}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Range.isRange(attrs)) {\n if (attrs.object === 'range') {\n return attrs;\n } else {\n return Range.fromJSON(Range.createProperties(attrs));\n }\n }\n\n if (isPlainObject(attrs)) {\n return Range.fromJSON(attrs);\n }\n\n throw new Error('`Range.create` only accepts objects or ranges, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Ranges` from `elements`.\n *\n * @param {Array<Range|Object>|List<Range|Object>} elements\n * @return {List<Range>}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(elements) || Array.isArray(elements)) {\n var list = new List(elements.map(Range.create));\n return list;\n }\n\n throw new Error('`Range.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n\n /**\n * Create a dictionary of settable range properties from `attrs`.\n *\n * @param {Object|String|Range} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Range.isRange(a)) {\n return {\n anchor: Point.createProperties(a.anchor),\n focus: Point.createProperties(a.focus)\n };\n }\n\n if (isPlainObject(a)) {\n var p = {};\n if ('anchor' in a) p.anchor = Point.create(a.anchor);\n if ('focus' in a) p.focus = Point.create(a.focus);\n return p;\n }\n\n throw new Error('`Range.createProperties` only accepts objects, decorations, ranges or selections, but you passed it: ' + a);\n }\n\n /**\n * Create a `Range` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Range}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var anchor = object.anchor,\n focus = object.focus;\n\n var range = new Range({\n anchor: Point.fromJSON(anchor || {}),\n focus: Point.fromJSON(focus || {})\n });\n\n return range;\n }\n\n /**\n * Check if a `value` is a `Range`, or is range-like.\n *\n * @param {Any} value\n * @return {Boolean}\n */\n\n }, {\n key: 'isRange',\n value: function isRange(value) {\n return isObject('range', value) || Decoration.isDecoration(value) || Selection.isSelection(value);\n }\n }]);\n return Range;\n}(Record(DEFAULTS$8));\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$9 = {\n anchor: undefined,\n focus: undefined,\n isFocused: undefined,\n marks: undefined\n\n /**\n * Selection.\n *\n * @type {Selection}\n */\n\n};\nvar Selection = function (_Record) {\n inherits(Selection, _Record);\n\n function Selection() {\n classCallCheck(this, Selection);\n return possibleConstructorReturn(this, (Selection.__proto__ || Object.getPrototypeOf(Selection)).apply(this, arguments));\n }\n\n createClass(Selection, [{\n key: 'setIsFocused',\n\n\n /**\n * Set the `isFocused` property to a new `value`.\n *\n * @param {Boolean} value\n * @return {Selection}\n */\n\n value: function setIsFocused(value) {\n var selection = this.set('isFocused', value);\n return selection;\n }\n\n /**\n * Set the `marks` property to a new set of `marks`.\n *\n * @param {Set} marks\n * @return {Selection}\n */\n\n }, {\n key: 'setMarks',\n value: function setMarks(marks) {\n var selection = this.set('marks', marks);\n return selection;\n }\n\n /**\n * Set new `properties` on the selection.\n *\n * @param {Object|Range|Selection} properties\n * @return {Range}\n */\n\n }, {\n key: 'setProperties',\n value: function setProperties(properties) {\n properties = Selection.createProperties(properties);\n var _properties = properties,\n anchor = _properties.anchor,\n focus = _properties.focus,\n props = objectWithoutProperties(_properties, ['anchor', 'focus']);\n\n\n if (anchor) {\n props.anchor = Point.create(anchor);\n }\n\n if (focus) {\n props.focus = Point.create(focus);\n }\n\n var selection = this.merge(props);\n return selection;\n }\n\n /**\n * Return a JSON representation of the selection.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n anchor: this.anchor.toJSON(options),\n focus: this.focus.toJSON(options),\n isFocused: this.isFocused,\n marks: this.marks == null ? null : this.marks.toArray().map(function (m) {\n return m.toJSON();\n })\n };\n\n return object;\n }\n }, {\n key: 'isBlurred',\n\n\n /**\n * Check whether the selection is blurred.\n *\n * @return {Boolean}\n */\n\n get: function get$$1() {\n return !this.isFocused;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Selection` with `attrs`.\n *\n * @param {Object|Selection} attrs\n * @return {Selection}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Selection.isSelection(attrs)) {\n return attrs;\n }\n\n if (Range.isRange(attrs)) {\n return Selection.fromJSON(Range.createProperties(attrs));\n }\n\n if (isPlainObject(attrs)) {\n return Selection.fromJSON(attrs);\n }\n\n throw new Error('`Selection.create` only accepts objects, ranges or selections, but you passed it: ' + attrs);\n }\n\n /**\n * Create a dictionary of settable selection properties from `attrs`.\n *\n * @param {Object|String|Selection} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Selection.isSelection(a)) {\n return {\n anchor: Point.createProperties(a.anchor),\n focus: Point.createProperties(a.focus),\n isFocused: a.isFocused,\n marks: a.marks\n };\n }\n\n if (Range.isRange(a)) {\n return {\n anchor: Point.createProperties(a.anchor),\n focus: Point.createProperties(a.focus)\n };\n }\n\n if (isPlainObject(a)) {\n var p = {};\n if ('anchor' in a) p.anchor = Point.create(a.anchor);\n if ('focus' in a) p.focus = Point.create(a.focus);\n if ('isFocused' in a) p.isFocused = a.isFocused;\n if ('marks' in a) p.marks = a.marks == null ? null : Mark.createSet(a.marks);\n return p;\n }\n\n throw new Error('`Selection.createProperties` only accepts objects, ranges or selections, but you passed it: ' + a);\n }\n\n /**\n * Create a `Selection` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Selection}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var anchor = object.anchor,\n focus = object.focus,\n _object$isFocused = object.isFocused,\n isFocused = _object$isFocused === undefined ? false : _object$isFocused,\n _object$marks = object.marks,\n marks = _object$marks === undefined ? null : _object$marks;\n\n var selection = new Selection({\n anchor: Point.fromJSON(anchor || {}),\n focus: Point.fromJSON(focus || {}),\n isFocused: isFocused,\n marks: marks == null ? null : new Set(marks.map(Mark.fromJSON))\n });\n\n return selection;\n }\n }]);\n return Selection;\n}(Record(DEFAULTS$9));\n\nvar Changes$4 = {};\n\nChanges$4.blur = function (change) {\n change.select({ isFocused: false });\n};\n\nChanges$4.deselect = function (change) {\n var range = Selection.create();\n change.select(range);\n};\n\nChanges$4.focus = function (change) {\n change.select({ isFocused: true });\n};\n\nChanges$4.flip = function (change) {\n change.call(proxy, 'flip');\n};\n\nChanges$4.moveAnchorBackward = function (change) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n change.call.apply(change, [pointBackward, 'anchor'].concat(args));\n};\n\nChanges$4.moveAnchorForward = function (change) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n change.call.apply(change, [pointForward, 'anchor'].concat(args));\n};\n\nChanges$4.moveAnchorTo = function (change) {\n for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n change.call.apply(change, [proxy, 'moveAnchorTo'].concat(args));\n};\n\nChanges$4.moveAnchorToEndOfBlock = function (change) {\n change.call(pointEdgeObject, 'anchor', 'end', 'block');\n};\n\nChanges$4.moveAnchorToEndOfInline = function (change) {\n change.call(pointEdgeObject, 'anchor', 'end', 'inline');\n};\n\nChanges$4.moveAnchorToEndOfDocument = function (change) {\n change.moveAnchorToEndOfNode(change.value.document).moveToAnchor();\n};\n\nChanges$4.moveAnchorToEndOfNextBlock = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'end', 'next', 'block');\n};\n\nChanges$4.moveAnchorToEndOfNextInline = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'end', 'next', 'inline');\n};\n\nChanges$4.moveAnchorToEndOfNextText = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'end', 'next', 'text');\n};\n\nChanges$4.moveAnchorToEndOfNode = function (change) {\n for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n change.call.apply(change, [proxy, 'moveAnchorToEndOfNode'].concat(args));\n};\n\nChanges$4.moveAnchorToEndOfPreviousBlock = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'end', 'previous', 'block');\n};\n\nChanges$4.moveAnchorToEndOfPreviousInline = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'end', 'previous', 'inline');\n};\n\nChanges$4.moveAnchorToEndOfPreviousText = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'end', 'previous', 'text');\n};\n\nChanges$4.moveAnchorToEndOfText = function (change) {\n change.call(pointEdgeObject, 'anchor', 'end', 'text');\n};\n\nChanges$4.moveAnchorToStartOfBlock = function (change) {\n change.call(pointEdgeObject, 'anchor', 'start', 'block');\n};\n\nChanges$4.moveAnchorToStartOfDocument = function (change) {\n change.moveAnchorToStartOfNode(change.value.document).moveToAnchor();\n};\n\nChanges$4.moveAnchorToStartOfInline = function (change) {\n change.call(pointEdgeObject, 'anchor', 'start', 'inline');\n};\n\nChanges$4.moveAnchorToStartOfNextBlock = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'start', 'next', 'block');\n};\n\nChanges$4.moveAnchorToStartOfNextInline = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'start', 'next', 'inline');\n};\n\nChanges$4.moveAnchorToStartOfNextText = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'start', 'next', 'text');\n};\n\nChanges$4.moveAnchorToStartOfNode = function (change) {\n for (var _len5 = arguments.length, args = Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n\n change.call.apply(change, [proxy, 'moveAnchorToStartOfNode'].concat(args));\n};\n\nChanges$4.moveAnchorToStartOfPreviousBlock = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'start', 'previous', 'block');\n};\n\nChanges$4.moveAnchorToStartOfPreviousInline = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'start', 'previous', 'inline');\n};\n\nChanges$4.moveAnchorToStartOfPreviousText = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'start', 'previous', 'text');\n};\n\nChanges$4.moveAnchorToStartOfText = function (change) {\n change.call(pointEdgeObject, 'anchor', 'start', 'text');\n};\n\nChanges$4.moveBackward = function (change) {\n var _change$moveAnchorBac;\n\n for (var _len6 = arguments.length, args = Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {\n args[_key6 - 1] = arguments[_key6];\n }\n\n (_change$moveAnchorBac = change.moveAnchorBackward.apply(change, args)).moveFocusBackward.apply(_change$moveAnchorBac, args);\n};\n\nChanges$4.moveEndBackward = function (change) {\n for (var _len7 = arguments.length, args = Array(_len7 > 1 ? _len7 - 1 : 0), _key7 = 1; _key7 < _len7; _key7++) {\n args[_key7 - 1] = arguments[_key7];\n }\n\n change.call.apply(change, [pointBackward, 'end'].concat(args));\n};\n\nChanges$4.moveEndForward = function (change) {\n for (var _len8 = arguments.length, args = Array(_len8 > 1 ? _len8 - 1 : 0), _key8 = 1; _key8 < _len8; _key8++) {\n args[_key8 - 1] = arguments[_key8];\n }\n\n change.call.apply(change, [pointForward, 'end'].concat(args));\n};\n\nChanges$4.moveEndTo = function (change) {\n for (var _len9 = arguments.length, args = Array(_len9 > 1 ? _len9 - 1 : 0), _key9 = 1; _key9 < _len9; _key9++) {\n args[_key9 - 1] = arguments[_key9];\n }\n\n change.call.apply(change, [proxy, 'moveEndTo'].concat(args));\n};\n\nChanges$4.moveEndToEndOfBlock = function (change) {\n change.call(pointEdgeObject, 'end', 'end', 'block');\n};\n\nChanges$4.moveEndToEndOfDocument = function (change) {\n change.moveEndToEndOfNode(change.value.document).moveToEnd();\n};\n\nChanges$4.moveEndToEndOfInline = function (change) {\n change.call(pointEdgeObject, 'end', 'end', 'inline');\n};\n\nChanges$4.moveEndToEndOfNextBlock = function (change) {\n change.call(pointEdgeSideObject, 'end', 'end', 'next', 'block');\n};\n\nChanges$4.moveEndToEndOfNextInline = function (change) {\n change.call(pointEdgeSideObject, 'end', 'end', 'next', 'inline');\n};\n\nChanges$4.moveEndToEndOfNextText = function (change) {\n change.call(pointEdgeSideObject, 'end', 'end', 'next', 'text');\n};\n\nChanges$4.moveEndToEndOfNode = function (change) {\n for (var _len10 = arguments.length, args = Array(_len10 > 1 ? _len10 - 1 : 0), _key10 = 1; _key10 < _len10; _key10++) {\n args[_key10 - 1] = arguments[_key10];\n }\n\n change.call.apply(change, [proxy, 'moveEndToEndOfNode'].concat(args));\n};\n\nChanges$4.moveEndToEndOfPreviousBlock = function (change) {\n change.call(pointEdgeSideObject, 'end', 'end', 'previous', 'block');\n};\n\nChanges$4.moveEndToEndOfPreviousInline = function (change) {\n change.call(pointEdgeSideObject, 'end', 'end', 'previous', 'inline');\n};\n\nChanges$4.moveEndToEndOfPreviousText = function (change) {\n change.call(pointEdgeSideObject, 'end', 'end', 'previous', 'text');\n};\n\nChanges$4.moveEndToEndOfText = function (change) {\n change.call(pointEdgeObject, 'end', 'end', 'text');\n};\n\nChanges$4.moveEndToStartOfBlock = function (change) {\n change.call(pointEdgeObject, 'end', 'start', 'block');\n};\n\nChanges$4.moveEndToStartOfDocument = function (change) {\n change.moveEndToStartOfNode(change.value.document).moveToEnd();\n};\n\nChanges$4.moveEndToStartOfInline = function (change) {\n change.call(pointEdgeObject, 'end', 'start', 'inline');\n};\n\nChanges$4.moveEndToStartOfNextBlock = function (change) {\n change.call(pointEdgeSideObject, 'end', 'start', 'next', 'block');\n};\n\nChanges$4.moveEndToStartOfNextInline = function (change) {\n change.call(pointEdgeSideObject, 'end', 'start', 'next', 'inline');\n};\n\nChanges$4.moveEndToStartOfNextText = function (change) {\n change.call(pointEdgeSideObject, 'end', 'start', 'next', 'text');\n};\n\nChanges$4.moveEndToStartOfNode = function (change) {\n for (var _len11 = arguments.length, args = Array(_len11 > 1 ? _len11 - 1 : 0), _key11 = 1; _key11 < _len11; _key11++) {\n args[_key11 - 1] = arguments[_key11];\n }\n\n change.call.apply(change, [proxy, 'moveEndToStartOfNode'].concat(args));\n};\n\nChanges$4.moveEndToStartOfPreviousBlock = function (change) {\n change.call(pointEdgeSideObject, 'end', 'start', 'previous', 'block');\n};\n\nChanges$4.moveEndToStartOfPreviousInline = function (change) {\n change.call(pointEdgeSideObject, 'end', 'start', 'previous', 'inline');\n};\n\nChanges$4.moveEndToStartOfPreviousText = function (change) {\n change.call(pointEdgeSideObject, 'end', 'start', 'previous', 'text');\n};\n\nChanges$4.moveEndToStartOfText = function (change) {\n change.call(pointEdgeObject, 'end', 'start', 'text');\n};\n\nChanges$4.moveFocusBackward = function (change) {\n for (var _len12 = arguments.length, args = Array(_len12 > 1 ? _len12 - 1 : 0), _key12 = 1; _key12 < _len12; _key12++) {\n args[_key12 - 1] = arguments[_key12];\n }\n\n change.call.apply(change, [pointBackward, 'focus'].concat(args));\n};\n\nChanges$4.moveFocusForward = function (change) {\n for (var _len13 = arguments.length, args = Array(_len13 > 1 ? _len13 - 1 : 0), _key13 = 1; _key13 < _len13; _key13++) {\n args[_key13 - 1] = arguments[_key13];\n }\n\n change.call.apply(change, [pointForward, 'focus'].concat(args));\n};\n\nChanges$4.moveFocusTo = function (change) {\n for (var _len14 = arguments.length, args = Array(_len14 > 1 ? _len14 - 1 : 0), _key14 = 1; _key14 < _len14; _key14++) {\n args[_key14 - 1] = arguments[_key14];\n }\n\n change.call.apply(change, [proxy, 'moveFocusTo'].concat(args));\n};\n\nChanges$4.moveFocusToEndOfBlock = function (change) {\n change.call(pointEdgeObject, 'focus', 'end', 'block');\n};\n\nChanges$4.moveFocusToEndOfDocument = function (change) {\n change.moveFocusToEndOfNode(change.value.document).moveToFocus();\n};\n\nChanges$4.moveFocusToEndOfInline = function (change) {\n change.call(pointEdgeObject, 'focus', 'end', 'inline');\n};\n\nChanges$4.moveFocusToEndOfNextBlock = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'end', 'next', 'block');\n};\n\nChanges$4.moveFocusToEndOfNextInline = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'end', 'next', 'inline');\n};\n\nChanges$4.moveFocusToEndOfNextText = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'end', 'next', 'text');\n};\n\nChanges$4.moveFocusToEndOfNode = function (change) {\n for (var _len15 = arguments.length, args = Array(_len15 > 1 ? _len15 - 1 : 0), _key15 = 1; _key15 < _len15; _key15++) {\n args[_key15 - 1] = arguments[_key15];\n }\n\n change.call.apply(change, [proxy, 'moveFocusToEndOfNode'].concat(args));\n};\n\nChanges$4.moveFocusToEndOfPreviousBlock = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'end', 'previous', 'block');\n};\n\nChanges$4.moveFocusToEndOfPreviousInline = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'end', 'previous', 'inline');\n};\n\nChanges$4.moveFocusToEndOfPreviousText = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'end', 'previous', 'text');\n};\n\nChanges$4.moveFocusToEndOfText = function (change) {\n change.call(pointEdgeObject, 'focus', 'end', 'text');\n};\n\nChanges$4.moveFocusToStartOfBlock = function (change) {\n change.call(pointEdgeObject, 'focus', 'start', 'block');\n};\n\nChanges$4.moveFocusToStartOfDocument = function (change) {\n change.moveFocusToStartOfNode(change.value.document).moveToFocus();\n};\n\nChanges$4.moveFocusToStartOfInline = function (change) {\n change.call(pointEdgeObject, 'focus', 'start', 'inline');\n};\n\nChanges$4.moveFocusToStartOfNextBlock = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'start', 'next', 'block');\n};\n\nChanges$4.moveFocusToStartOfNextInline = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'start', 'next', 'inline');\n};\n\nChanges$4.moveFocusToStartOfNextText = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'start', 'next', 'text');\n};\n\nChanges$4.moveFocusToStartOfNode = function (change) {\n for (var _len16 = arguments.length, args = Array(_len16 > 1 ? _len16 - 1 : 0), _key16 = 1; _key16 < _len16; _key16++) {\n args[_key16 - 1] = arguments[_key16];\n }\n\n change.call.apply(change, [proxy, 'moveFocusToStartOfNode'].concat(args));\n};\n\nChanges$4.moveFocusToStartOfPreviousBlock = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'start', 'previous', 'block');\n};\n\nChanges$4.moveFocusToStartOfPreviousInline = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'start', 'previous', 'inline');\n};\n\nChanges$4.moveFocusToStartOfPreviousText = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'start', 'previous', 'text');\n};\n\nChanges$4.moveFocusToStartOfText = function (change) {\n change.call(pointEdgeObject, 'focus', 'start', 'text');\n};\n\nChanges$4.moveForward = function (change) {\n var _change$moveAnchorFor;\n\n for (var _len17 = arguments.length, args = Array(_len17 > 1 ? _len17 - 1 : 0), _key17 = 1; _key17 < _len17; _key17++) {\n args[_key17 - 1] = arguments[_key17];\n }\n\n (_change$moveAnchorFor = change.moveAnchorForward.apply(change, args)).moveFocusForward.apply(_change$moveAnchorFor, args);\n};\n\nChanges$4.moveStartBackward = function (change) {\n for (var _len18 = arguments.length, args = Array(_len18 > 1 ? _len18 - 1 : 0), _key18 = 1; _key18 < _len18; _key18++) {\n args[_key18 - 1] = arguments[_key18];\n }\n\n change.call.apply(change, [pointBackward, 'start'].concat(args));\n};\n\nChanges$4.moveStartForward = function (change) {\n for (var _len19 = arguments.length, args = Array(_len19 > 1 ? _len19 - 1 : 0), _key19 = 1; _key19 < _len19; _key19++) {\n args[_key19 - 1] = arguments[_key19];\n }\n\n change.call.apply(change, [pointForward, 'start'].concat(args));\n};\n\nChanges$4.moveStartTo = function (change) {\n for (var _len20 = arguments.length, args = Array(_len20 > 1 ? _len20 - 1 : 0), _key20 = 1; _key20 < _len20; _key20++) {\n args[_key20 - 1] = arguments[_key20];\n }\n\n change.call.apply(change, [proxy, 'moveStartTo'].concat(args));\n};\n\nChanges$4.moveStartToEndOfBlock = function (change) {\n change.call(pointEdgeObject, 'start', 'end', 'block');\n};\n\nChanges$4.moveStartToEndOfDocument = function (change) {\n change.moveStartToEndOfNode(change.value.document).moveToStart();\n};\n\nChanges$4.moveStartToEndOfInline = function (change) {\n change.call(pointEdgeObject, 'start', 'end', 'inline');\n};\n\nChanges$4.moveStartToEndOfNextBlock = function (change) {\n change.call(pointEdgeSideObject, 'start', 'end', 'next', 'block');\n};\n\nChanges$4.moveStartToEndOfNextInline = function (change) {\n change.call(pointEdgeSideObject, 'start', 'end', 'next', 'inline');\n};\n\nChanges$4.moveStartToEndOfNextText = function (change) {\n change.call(pointEdgeSideObject, 'start', 'end', 'next', 'text');\n};\n\nChanges$4.moveStartToEndOfNode = function (change) {\n for (var _len21 = arguments.length, args = Array(_len21 > 1 ? _len21 - 1 : 0), _key21 = 1; _key21 < _len21; _key21++) {\n args[_key21 - 1] = arguments[_key21];\n }\n\n change.call.apply(change, [proxy, 'moveStartToEndOfNode'].concat(args));\n};\n\nChanges$4.moveStartToEndOfPreviousBlock = function (change) {\n change.call(pointEdgeSideObject, 'start', 'end', 'previous', 'block');\n};\n\nChanges$4.moveStartToEndOfPreviousInline = function (change) {\n change.call(pointEdgeSideObject, 'start', 'end', 'previous', 'inline');\n};\n\nChanges$4.moveStartToEndOfPreviousText = function (change) {\n change.call(pointEdgeSideObject, 'start', 'end', 'previous', 'text');\n};\n\nChanges$4.moveStartToEndOfText = function (change) {\n change.call(pointEdgeObject, 'start', 'end', 'text');\n};\n\nChanges$4.moveStartToStartOfBlock = function (change) {\n change.call(pointEdgeObject, 'start', 'start', 'block');\n};\n\nChanges$4.moveStartToStartOfDocument = function (change) {\n change.moveStartToStartOfNode(change.value.document).moveToStart();\n};\n\nChanges$4.moveStartToStartOfInline = function (change) {\n change.call(pointEdgeObject, 'start', 'start', 'inline');\n};\n\nChanges$4.moveStartToStartOfNextBlock = function (change) {\n change.call(pointEdgeSideObject, 'start', 'start', 'next', 'block');\n};\n\nChanges$4.moveStartToStartOfNextInline = function (change) {\n change.call(pointEdgeSideObject, 'start', 'start', 'next', 'inline');\n};\n\nChanges$4.moveStartToStartOfNextText = function (change) {\n change.call(pointEdgeSideObject, 'start', 'start', 'next', 'text');\n};\n\nChanges$4.moveStartToStartOfNode = function (change) {\n for (var _len22 = arguments.length, args = Array(_len22 > 1 ? _len22 - 1 : 0), _key22 = 1; _key22 < _len22; _key22++) {\n args[_key22 - 1] = arguments[_key22];\n }\n\n change.call.apply(change, [proxy, 'moveStartToStartOfNode'].concat(args));\n};\n\nChanges$4.moveStartToStartOfPreviousBlock = function (change) {\n change.call(pointEdgeSideObject, 'start', 'start', 'previous', 'block');\n};\n\nChanges$4.moveStartToStartOfPreviousInline = function (change) {\n change.call(pointEdgeSideObject, 'start', 'start', 'previous', 'inline');\n};\n\nChanges$4.moveStartToStartOfPreviousText = function (change) {\n change.call(pointEdgeSideObject, 'start', 'start', 'previous', 'text');\n};\n\nChanges$4.moveStartToStartOfText = function (change) {\n change.call(pointEdgeObject, 'start', 'start', 'text');\n};\n\nChanges$4.moveTo = function (change) {\n for (var _len23 = arguments.length, args = Array(_len23 > 1 ? _len23 - 1 : 0), _key23 = 1; _key23 < _len23; _key23++) {\n args[_key23 - 1] = arguments[_key23];\n }\n\n change.call.apply(change, [proxy, 'moveTo'].concat(args));\n};\n\nChanges$4.moveToAnchor = function (change) {\n change.call(proxy, 'moveToAnchor');\n};\n\nChanges$4.moveToEnd = function (change) {\n change.call(proxy, 'moveToEnd');\n};\n\nChanges$4.moveToEndOfBlock = function (change) {\n change.moveEndToEndOfBlock().moveToEnd();\n};\n\nChanges$4.moveToEndOfDocument = function (change) {\n change.moveEndToEndOfNode(change.value.document).moveToEnd();\n};\n\nChanges$4.moveToEndOfInline = function (change) {\n change.moveEndToEndOfInline().moveToEnd();\n};\n\nChanges$4.moveToEndOfNextBlock = function (change) {\n change.moveEndToEndOfNextBlock().moveToEnd();\n};\n\nChanges$4.moveToEndOfNextInline = function (change) {\n change.moveEndToEndOfNextInline().moveToEnd();\n};\n\nChanges$4.moveToEndOfNextText = function (change) {\n change.moveEndToEndOfNextText().moveToEnd();\n};\n\nChanges$4.moveToEndOfNode = function (change) {\n for (var _len24 = arguments.length, args = Array(_len24 > 1 ? _len24 - 1 : 0), _key24 = 1; _key24 < _len24; _key24++) {\n args[_key24 - 1] = arguments[_key24];\n }\n\n change.call.apply(change, [proxy, 'moveToEndOfNode'].concat(args));\n};\n\nChanges$4.moveToEndOfPreviousBlock = function (change) {\n change.moveStartToEndOfPreviousBlock().moveToStart();\n};\n\nChanges$4.moveToEndOfPreviousInline = function (change) {\n change.moveStartToEndOfPreviousInline().moveToStart();\n};\n\nChanges$4.moveToEndOfPreviousText = function (change) {\n change.moveStartToEndOfPreviousText().moveToStart();\n};\n\nChanges$4.moveToEndOfText = function (change) {\n change.moveEndToEndOfText().moveToEnd();\n};\n\nChanges$4.moveToFocus = function (change) {\n change.call(proxy, 'moveToFocus');\n};\n\nChanges$4.moveToRangeOfDocument = function (change) {\n change.moveToRangeOfNode(change.value.document);\n};\n\nChanges$4.moveToRangeOfNode = function (change) {\n for (var _len25 = arguments.length, args = Array(_len25 > 1 ? _len25 - 1 : 0), _key25 = 1; _key25 < _len25; _key25++) {\n args[_key25 - 1] = arguments[_key25];\n }\n\n change.call.apply(change, [proxy, 'moveToRangeOfNode'].concat(args));\n};\n\nChanges$4.moveToStart = function (change) {\n change.call(proxy, 'moveToStart');\n};\n\nChanges$4.moveToStartOfBlock = function (change) {\n change.moveStartToStartOfBlock().moveToStart();\n};\n\nChanges$4.moveToStartOfDocument = function (change) {\n change.moveStartToStartOfNode(change.value.document).moveToStart();\n};\n\nChanges$4.moveToStartOfInline = function (change) {\n change.moveStartToStartOfInline().moveToStart();\n};\n\nChanges$4.moveToStartOfNextBlock = function (change) {\n change.moveEndToStartOfNextBlock().moveToEnd();\n};\n\nChanges$4.moveToStartOfNextInline = function (change) {\n change.moveEndToStartOfNextInline().moveToEnd();\n};\n\nChanges$4.moveToStartOfNextText = function (change) {\n change.moveEndToStartOfNextText().moveToEnd();\n};\n\nChanges$4.moveToStartOfNode = function (change) {\n for (var _len26 = arguments.length, args = Array(_len26 > 1 ? _len26 - 1 : 0), _key26 = 1; _key26 < _len26; _key26++) {\n args[_key26 - 1] = arguments[_key26];\n }\n\n change.call.apply(change, [proxy, 'moveToStartOfNode'].concat(args));\n};\n\nChanges$4.moveToStartOfPreviousBlock = function (change) {\n change.moveStartToStartOfPreviousBlock().moveToStart();\n};\n\nChanges$4.moveToStartOfPreviousInline = function (change) {\n change.moveStartToStartOfPreviousInline().moveToStart();\n};\n\nChanges$4.moveToStartOfPreviousText = function (change) {\n change.moveStartToStartOfPreviousText().moveToStart();\n};\n\nChanges$4.moveToStartOfText = function (change) {\n change.moveStartToStartOfText().moveToStart();\n};\n\nChanges$4.select = function (change, properties) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n properties = Selection.createProperties(properties);\n var _options$snapshot = options.snapshot,\n snapshot = _options$snapshot === undefined ? false : _options$snapshot;\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n var props = {};\n var next = selection.setProperties(properties);\n next = document.resolveSelection(next);\n\n // Re-compute the properties, to ensure that we get their normalized values.\n properties = pick(next, Object.keys(properties));\n\n // Remove any properties that are already equal to the current selection. And\n // create a dictionary of the previous values for all of the properties that\n // are being changed, for the inverse operation.\n for (var k in properties) {\n if (snapshot === true || !is(properties[k], selection[k])) {\n props[k] = properties[k];\n }\n }\n\n // If the selection moves, clear any marks, unless the new selection\n // properties change the marks in some way.\n if (selection.marks && !props.marks && (props.anchor || props.focus)) {\n props.marks = null;\n }\n\n // If there are no new properties to set, abort to avoid extra operations.\n if (Object.keys(props).length === 0) {\n return;\n }\n\n change.applyOperation({\n type: 'set_selection',\n value: value,\n properties: props,\n selection: selection.toJSON()\n }, snapshot ? { skip: false, merge: false } : {});\n};\n\nChanges$4.setAnchor = function (change) {\n for (var _len27 = arguments.length, args = Array(_len27 > 1 ? _len27 - 1 : 0), _key27 = 1; _key27 < _len27; _key27++) {\n args[_key27 - 1] = arguments[_key27];\n }\n\n change.call.apply(change, [proxy, 'setAnchor'].concat(args));\n};\n\nChanges$4.setEnd = function (change) {\n for (var _len28 = arguments.length, args = Array(_len28 > 1 ? _len28 - 1 : 0), _key28 = 1; _key28 < _len28; _key28++) {\n args[_key28 - 1] = arguments[_key28];\n }\n\n change.call.apply(change, [proxy, 'setEnd'].concat(args));\n};\n\nChanges$4.setFocus = function (change) {\n for (var _len29 = arguments.length, args = Array(_len29 > 1 ? _len29 - 1 : 0), _key29 = 1; _key29 < _len29; _key29++) {\n args[_key29 - 1] = arguments[_key29];\n }\n\n change.call.apply(change, [proxy, 'setFocus'].concat(args));\n};\n\nChanges$4.setStart = function (change) {\n for (var _len30 = arguments.length, args = Array(_len30 > 1 ? _len30 - 1 : 0), _key30 = 1; _key30 < _len30; _key30++) {\n args[_key30 - 1] = arguments[_key30];\n }\n\n change.call.apply(change, [proxy, 'setStart'].concat(args));\n};\n\nChanges$4.snapshotSelection = function (change) {\n change.withoutMerging(function (c) {\n return c.select(change.value.selection, { snapshot: true });\n });\n};\n\n/**\n * Helpers.\n */\n\nfunction proxy(change, method) {\n var _change$value$selecti;\n\n for (var _len31 = arguments.length, args = Array(_len31 > 2 ? _len31 - 2 : 0), _key31 = 2; _key31 < _len31; _key31++) {\n args[_key31 - 2] = arguments[_key31];\n }\n\n var range = (_change$value$selecti = change.value.selection)[method].apply(_change$value$selecti, args);\n change.select(range);\n}\n\nfunction pointEdgeObject(change, point, edge, object) {\n var Point = point.slice(0, 1).toUpperCase() + point.slice(1);\n var Edge = edge.slice(0, 1).toUpperCase() + edge.slice(1);\n var Object = object.slice(0, 1).toUpperCase() + object.slice(1);\n var method = 'move' + Point + 'To' + Edge + 'OfNode';\n var getNode = object == 'text' ? 'getNode' : 'getClosest' + Object;\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n var p = selection[point];\n var node = document[getNode](p.key);\n if (!node) return;\n change[method](node);\n}\n\nfunction pointEdgeSideObject(change, point, edge, side, object) {\n var Point = point.slice(0, 1).toUpperCase() + point.slice(1);\n var Edge = edge.slice(0, 1).toUpperCase() + edge.slice(1);\n var Side = side.slice(0, 1).toUpperCase() + side.slice(1);\n var Object = object.slice(0, 1).toUpperCase() + object.slice(1);\n var method = 'move' + Point + 'To' + Edge + 'OfNode';\n var getNode = object == 'text' ? 'getNode' : 'getClosest' + Object;\n var getDirectionNode = 'get' + Side + Object;\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n var p = selection[point];\n var node = document[getNode](p.key);\n if (!node) return;\n var target = document[getDirectionNode](node.key);\n if (!target) return;\n change[method](target);\n}\n\nfunction pointBackward(change, point) {\n var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n if (n === 0) return;\n if (n < 0) return pointForward(change, point, -n);\n\n var Point = point.slice(0, 1).toUpperCase() + point.slice(1);\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n schema = value.schema;\n\n var p = selection[point];\n var hasVoidParent = document.hasVoidParent(p.path, schema);\n\n // what is this?\n if (!hasVoidParent && p.offset - n >= 0) {\n var range = selection['move' + Point + 'Backward'](n);\n change.select(range);\n return;\n }\n\n var previous = document.getPreviousText(p.path);\n if (!previous) return;\n\n var block = document.getClosestBlock(p.path);\n var isInBlock = block.hasNode(previous.key);\n var isPreviousInVoid = previous && document.hasVoidParent(previous.key, schema);\n change['move' + Point + 'ToEndOfNode'](previous);\n\n // when is this called?\n if (!hasVoidParent && !isPreviousInVoid && isInBlock) {\n var _range = change.value.selection['move' + Point + 'Backward'](n);\n change.select(_range);\n }\n}\n\nfunction pointForward(change, point) {\n var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n if (n === 0) return;\n if (n < 0) return pointBackward(change, point, -n);\n\n var Point = point.slice(0, 1).toUpperCase() + point.slice(1);\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n schema = value.schema;\n\n var p = selection[point];\n var text = document.getNode(p.path);\n var hasVoidParent = document.hasVoidParent(p.path, schema);\n\n // what is this?\n if (!hasVoidParent && p.offset + n <= text.text.length) {\n var range = selection['move' + Point + 'Forward'](n);\n change.select(range);\n return;\n }\n\n var next = document.getNextText(p.path);\n if (!next) return;\n\n var block = document.getClosestBlock(p.path);\n var isInBlock = block.hasNode(next.key);\n var isNextInVoid = document.hasVoidParent(next.key, schema);\n change['move' + Point + 'ToStartOfNode'](next);\n\n // when is this called?\n if (!hasVoidParent && !isNextInVoid && isInBlock) {\n var _range2 = change.value.selection['move' + Point + 'Forward'](n);\n change.select(_range2);\n }\n}\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug = Debug('slate:history');\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$10 = {\n redos: undefined,\n undos: undefined\n\n /**\n * History.\n *\n * @type {History}\n */\n\n};\nvar History = function (_Record) {\n inherits(History, _Record);\n\n function History() {\n classCallCheck(this, History);\n return possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).apply(this, arguments));\n }\n\n createClass(History, [{\n key: 'save',\n\n\n /**\n * Save an `operation` into the history.\n *\n * @param {Object} operation\n * @param {Object} options\n * @return {History}\n */\n\n value: function save(operation) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var history = this;\n var _history = history,\n undos = _history.undos,\n redos = _history.redos;\n var merge = options.merge,\n skip = options.skip;\n\n\n if (skip) {\n return history;\n }\n\n var prevBatch = undos.peek();\n var prevOperation = prevBatch && prevBatch.last();\n\n if (merge == null) {\n merge = shouldMerge(operation, prevOperation);\n }\n\n debug('save', { operation: operation, merge: merge });\n\n // If the `merge` flag is true, add the operation to the previous batch.\n if (merge && prevBatch) {\n var batch = prevBatch.push(operation);\n undos = undos.pop();\n undos = undos.push(batch);\n } else {\n // Otherwise, create a new batch with the operation.\n var _batch = new List([operation]);\n undos = undos.push(_batch);\n }\n\n // Constrain the history to 100 entries for memory's sake.\n if (undos.size > 100) {\n undos = undos.take(100);\n }\n\n // Clear the redos and update the history.\n redos = redos.clear();\n history = history.set('undos', undos).set('redos', redos);\n return history;\n }\n\n /**\n * Return a JSON representation of the history.\n *\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var object = {\n object: this.object,\n redos: this.redos.toJSON(),\n undos: this.undos.toJSON()\n };\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `History` with `attrs`.\n *\n * @param {Object|History} attrs\n * @return {History}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (History.isHistory(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n return History.fromJSON(attrs);\n }\n\n throw new Error('`History.create` only accepts objects or histories, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Operations` from `operations`.\n *\n * @param {Array<Object>|List<Object>} operations\n * @return {List<Object>}\n */\n\n }, {\n key: 'createOperationsList',\n value: function createOperationsList() {\n var operations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(operations)) {\n return operations;\n }\n\n if (Array.isArray(operations)) {\n return new List(operations);\n }\n\n throw new Error('`History.createList` only accepts arrays or lists, but you passed it: ' + operations);\n }\n\n /**\n * Create a `History` from a JSON `object`.\n *\n * @param {Object} object\n * @return {History}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var _object$redos = object.redos,\n redos = _object$redos === undefined ? [] : _object$redos,\n _object$undos = object.undos,\n undos = _object$undos === undefined ? [] : _object$undos;\n\n\n var history = new History({\n redos: new Stack(redos.map(this.createOperationsList)),\n undos: new Stack(undos.map(this.createOperationsList))\n });\n\n return history;\n }\n }]);\n return History;\n}(Record(DEFAULTS$10));\n\n/**\n * Check whether to merge a new operation `o` into the previous operation `p`.\n *\n * @param {Object} o\n * @param {Object} p\n * @return {Boolean}\n */\n\nfunction shouldMerge(o, p) {\n if (!p) return false;\n\n var merge = o.type == 'set_selection' && p.type == 'set_selection' || o.type == 'insert_text' && p.type == 'insert_text' && o.offset == p.offset + p.text.length && o.path.equals(p.path) || o.type == 'remove_text' && p.type == 'remove_text' && o.offset + o.text.length == p.offset && o.path.equals(p.path);\n\n return merge;\n}\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$11 = {\n plugins: undefined\n\n /**\n * Stack.\n *\n * @type {Stack}\n */\n\n};\nvar Stack$1 = function (_Record) {\n inherits(Stack$$1, _Record);\n\n function Stack$$1() {\n classCallCheck(this, Stack$$1);\n return possibleConstructorReturn(this, (Stack$$1.__proto__ || Object.getPrototypeOf(Stack$$1)).apply(this, arguments));\n }\n\n createClass(Stack$$1, [{\n key: 'getPluginsWith',\n\n\n /**\n * Get all plugins with `property`.\n *\n * @param {String} property\n * @return {Array}\n */\n\n value: function getPluginsWith(property) {\n return this.plugins.filter(function (plugin) {\n return plugin[property] != null;\n });\n }\n\n /**\n * Iterate the plugins with `property`, returning the first non-null value.\n *\n * @param {String} property\n * @param {Any} ...args\n */\n\n }, {\n key: 'find',\n value: function find(property) {\n var plugins = this.getPluginsWith(property);\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = plugins[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var plugin = _step.value;\n\n var ret = plugin[property].apply(plugin, args);\n if (ret != null) return ret;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n\n /**\n * Iterate the plugins with `property`, returning all the non-null values.\n *\n * @param {String} property\n * @param {Any} ...args\n * @return {Array}\n */\n\n }, {\n key: 'map',\n value: function map(property) {\n var plugins = this.getPluginsWith(property);\n var array = [];\n\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = plugins[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var plugin = _step2.value;\n\n var ret = plugin[property].apply(plugin, args);\n if (ret != null) array.push(ret);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return array;\n }\n\n /**\n * Iterate the plugins with `property`, breaking on any a non-null values.\n *\n * @param {String} property\n * @param {Any} ...args\n */\n\n }, {\n key: 'run',\n value: function run(property) {\n var plugins = this.getPluginsWith(property);\n\n for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = plugins[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var plugin = _step3.value;\n\n var ret = plugin[property].apply(plugin, args);\n if (ret != null) return;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n\n /**\n * Iterate the plugins with `property`, reducing to a set of React children.\n *\n * @param {String} property\n * @param {Object} props\n * @param {Any} ...args\n */\n\n }, {\n key: 'render',\n value: function render(property, props) {\n for (var _len4 = arguments.length, args = Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {\n args[_key4 - 2] = arguments[_key4];\n }\n\n var plugins = this.getPluginsWith(property);\n return plugins.reduceRight(function (children, plugin) {\n if (!plugin[property]) return children;\n var ret = plugin[property].apply(plugin, [props].concat(args));\n if (ret == null) return children;\n props.children = ret;\n return ret;\n }, props.children === undefined ? null : props.children);\n }\n }], [{\n key: 'create',\n\n /**\n * Constructor.\n *\n * @param {Object} attrs\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _attrs$plugins = attrs.plugins,\n plugins = _attrs$plugins === undefined ? [] : _attrs$plugins;\n\n var stack = new Stack$$1({ plugins: plugins });\n return stack;\n }\n }]);\n return Stack$$1;\n}(Record(DEFAULTS$11));\n\n/**\n * Memoize read methods.\n */\n\nmemoize(Stack$1.prototype, ['getPluginsWith']);\n\n/**\n * Define a Slate error.\n *\n * @type {SlateError}\n */\n\nvar SlateError = function (_Error) {\n inherits(SlateError, _Error);\n\n function SlateError(code) {\n var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, SlateError);\n\n var _this = possibleConstructorReturn(this, (SlateError.__proto__ || Object.getPrototypeOf(SlateError)).call(this, code));\n\n _this.code = code;\n\n for (var key in attrs) {\n _this[key] = attrs[key];\n }\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_this, _this.constructor);\n } else {\n _this.stack = new Error().stack;\n }\n return _this;\n }\n\n return SlateError;\n}(Error);\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$1 = Debug('slate:schema');\n\n/**\n * Define the core schema rules, order-sensitive.\n *\n * @type {Array}\n */\n\nvar CORE_RULES = [\n// Only allow block nodes in documents.\n{\n match: { object: 'document' },\n nodes: [{\n match: { object: 'block' }\n }]\n},\n\n// Only allow block nodes or inline and text nodes in blocks.\n{\n match: {\n object: 'block',\n first: { object: 'block' }\n },\n nodes: [{\n match: { object: 'block' }\n }]\n}, {\n match: {\n object: 'block',\n first: [{ object: 'inline' }, { object: 'text' }]\n },\n nodes: [{\n match: [{ object: 'inline' }, { object: 'text' }]\n }]\n},\n\n// Only allow inline and text nodes in inlines.\n{\n match: { object: 'inline' },\n nodes: [{ match: [{ object: 'inline' }, { object: 'text' }] }]\n},\n\n// Ensure that block and inline nodes have at least one text child.\n{\n match: [{ object: 'block' }, { object: 'inline' }],\n nodes: [{ min: 1 }],\n normalize: function normalize(change, error) {\n var code = error.code,\n node = error.node;\n\n if (code !== 'child_required') return;\n change.insertNodeByKey(node.key, 0, Text.create(), { normalize: false });\n }\n},\n\n// Ensure that inline nodes are surrounded by text nodes.\n{\n match: { object: 'block' },\n first: [{ object: 'block' }, { object: 'text' }],\n last: [{ object: 'block' }, { object: 'text' }],\n normalize: function normalize(change, error) {\n var code = error.code,\n node = error.node;\n\n var text = Text.create();\n var i = void 0;\n\n if (code === 'first_child_object_invalid') {\n i = 0;\n } else if (code === 'last_child_object_invalid') {\n i = node.nodes.size;\n } else {\n return;\n }\n\n change.insertNodeByKey(node.key, i, text, { normalize: false });\n }\n}, {\n match: { object: 'inline' },\n first: [{ object: 'block' }, { object: 'text' }],\n last: [{ object: 'block' }, { object: 'text' }],\n previous: [{ object: 'block' }, { object: 'text' }],\n next: [{ object: 'block' }, { object: 'text' }],\n normalize: function normalize(change, error) {\n var code = error.code,\n node = error.node,\n index = error.index;\n\n var text = Text.create();\n var i = void 0;\n\n if (code === 'first_child_object_invalid') {\n i = 0;\n } else if (code === 'last_child_object_invalid') {\n i = node.nodes.size;\n } else if (code === 'previous_sibling_object_invalid') {\n i = index;\n } else if (code === 'next_sibling_object_invalid') {\n i = index + 1;\n } else {\n return;\n }\n\n change.insertNodeByKey(node.key, i, text, { normalize: false });\n }\n},\n\n// Merge adjacent text nodes.\n{\n match: { object: 'text' },\n next: [{ object: 'block' }, { object: 'inline' }],\n normalize: function normalize(change, error) {\n var code = error.code,\n next = error.next;\n\n if (code !== 'next_sibling_object_invalid') return;\n change.mergeNodeByKey(next.key, { normalize: false });\n }\n}];\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$12 = {\n stack: undefined,\n rules: undefined\n\n /**\n * Schema.\n *\n * @type {Schema}\n */\n\n};\nvar Schema = function (_Record) {\n inherits(Schema, _Record);\n\n function Schema() {\n classCallCheck(this, Schema);\n return possibleConstructorReturn(this, (Schema.__proto__ || Object.getPrototypeOf(Schema)).apply(this, arguments));\n }\n\n createClass(Schema, [{\n key: 'getNodeRules',\n\n\n /**\n * Get the schema rules for a `node`.\n *\n * @param {Node} node\n * @return {Array}\n */\n\n value: function getNodeRules(node) {\n var rules = this.rules.filter(function (r) {\n return testRules(node, r.match);\n });\n return rules;\n }\n\n /**\n * Validate a `node` with the schema, returning an error if it's invalid.\n *\n * @param {Node} node\n * @return {Error|Void}\n */\n\n }, {\n key: 'validateNode',\n value: function validateNode(node) {\n var rules = this.getNodeRules(node);\n var failure = validateRules(node, rules, this.rules, { every: true });\n if (!failure) return;\n var error = new SlateError(failure.code, failure);\n return error;\n }\n\n /**\n * Test whether a `node` is valid against the schema.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'testNode',\n value: function testNode(node) {\n var error = this.validateNode(node);\n return !error;\n }\n\n /**\n * Assert that a `node` is valid against the schema.\n *\n * @param {Node} node\n * @throws\n */\n\n }, {\n key: 'assertNode',\n value: function assertNode(node) {\n var error = this.validateNode(node);\n if (error) throw error;\n }\n\n /**\n * Normalize a `node` with the schema, returning a function that will fix the\n * invalid node, or void if the node is valid.\n *\n * @param {Node} node\n * @return {Function|Void}\n */\n\n }, {\n key: 'normalizeNode',\n value: function normalizeNode(node) {\n var ret = this.stack.find('normalizeNode', node);\n if (ret) return ret;\n if (node.object == 'text') return;\n\n var error = this.validateNode(node);\n if (!error) return;\n\n return function (change) {\n debug$1('normalizing', { error: error });\n var rule = error.rule;\n var size = change.operations.size;\n\n // First run the user-provided `normalize` function if one exists...\n\n if (rule.normalize) {\n rule.normalize(change, error);\n }\n\n // If the `normalize` function did not add any operations to the change\n // object, it can't have normalized, so run the default one.\n if (change.operations.size === size) {\n defaultNormalize(change, error);\n }\n };\n }\n\n /**\n * Check if a mark is void.\n *\n * @param {Mark}\n * @return {Boolean}\n */\n\n }, {\n key: 'isAtomic',\n value: function isAtomic(mark) {\n var rule = this.rules.find(function (r) {\n return 'isAtomic' in r && testRules(mark, r.match);\n });\n\n return rule ? rule.isAtomic : false;\n }\n\n /**\n * Check if a node is void.\n *\n * @param {Node}\n * @return {Boolean}\n */\n\n }, {\n key: 'isVoid',\n value: function isVoid(node) {\n var rule = this.rules.find(function (r) {\n return 'isVoid' in r && testRules(node, r.match);\n });\n return rule ? rule.isVoid : false;\n }\n\n /**\n * Return a JSON representation of the schema.\n *\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var object = {\n object: this.object,\n rules: this.rules\n };\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Schema` with `attrs`.\n *\n * @param {Object|Schema} attrs\n * @return {Schema}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Schema.isSchema(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n return Schema.fromJSON(attrs);\n }\n\n throw new Error('`Schema.create` only accepts objects or schemas, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Schema` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Schema}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Schema.isSchema(object)) {\n return object;\n }\n\n var plugins = object.plugins ? object.plugins : [{ schema: object }];\n var rules = [].concat(CORE_RULES);\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = plugins[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var plugin = _step.value;\n var _plugin$schema = plugin.schema,\n schema = _plugin$schema === undefined ? {} : _plugin$schema;\n var _schema$blocks = schema.blocks,\n blocks = _schema$blocks === undefined ? {} : _schema$blocks,\n _schema$inlines = schema.inlines,\n inlines = _schema$inlines === undefined ? {} : _schema$inlines,\n _schema$marks = schema.marks,\n marks = _schema$marks === undefined ? {} : _schema$marks;\n\n\n if (schema.rules) {\n rules = rules.concat(schema.rules);\n }\n\n if (schema.document) {\n rules.push(_extends({\n match: [{ object: 'document' }]\n }, schema.document));\n }\n\n for (var key in blocks) {\n rules.push(_extends({\n match: [{ object: 'block', type: key }]\n }, blocks[key]));\n }\n\n for (var _key in inlines) {\n rules.push(_extends({\n match: [{ object: 'inline', type: _key }]\n }, inlines[_key]));\n }\n\n for (var _key2 in marks) {\n rules.push(_extends({\n match: [{ object: 'mark', type: _key2 }]\n }, marks[_key2]));\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var stack = Stack$1.create({ plugins: plugins });\n var ret = new Schema({ stack: stack, rules: rules });\n return ret;\n }\n }]);\n return Schema;\n}(Record(DEFAULTS$12));\n\n/**\n * Normalize an invalid value with `error` with default remedies.\n *\n * @param {Change} change\n * @param {SlateError} error\n */\n\nfunction defaultNormalize(change, error) {\n var code = error.code,\n node = error.node,\n child = error.child,\n next = error.next,\n previous = error.previous,\n key = error.key,\n mark = error.mark;\n\n\n switch (code) {\n case 'child_object_invalid':\n case 'child_type_invalid':\n case 'child_unknown':\n case 'first_child_object_invalid':\n case 'first_child_type_invalid':\n case 'last_child_object_invalid':\n case 'last_child_type_invalid':\n {\n return child.object === 'text' && node.object === 'block' && node.nodes.size === 1 ? change.removeNodeByKey(node.key, { normalize: false }) : change.removeNodeByKey(child.key, { normalize: false });\n }\n\n case 'previous_sibling_object_invalid':\n case 'previous_sibling_type_invalid':\n {\n return previous.object === 'text' && node.object === 'block' && node.nodes.size === 1 ? change.removeNodeByKey(node.key, { normalize: false }) : change.removeNodeByKey(previous.key, { normalize: false });\n }\n\n case 'next_sibling_object_invalid':\n case 'next_sibling_type_invalid':\n {\n return next.object === 'text' && node.object === 'block' && node.nodes.size === 1 ? change.removeNodeByKey(node.key, { normalize: false }) : change.removeNodeByKey(next.key, { normalize: false });\n }\n\n case 'child_required':\n case 'node_text_invalid':\n case 'parent_object_invalid':\n case 'parent_type_invalid':\n {\n return node.object === 'document' ? node.nodes.forEach(function (n) {\n return change.removeNodeByKey(n.key, { normalize: false });\n }) : change.removeNodeByKey(node.key, { normalize: false });\n }\n\n case 'node_data_invalid':\n {\n return node.data.get(key) === undefined && node.object !== 'document' ? change.removeNodeByKey(node.key, { normalize: false }) : change.setNodeByKey(node.key, { data: node.data.delete(key) }, { normalize: false });\n }\n\n case 'node_mark_invalid':\n {\n return node.getTexts().forEach(function (t) {\n return change.removeMarkByKey(t.key, 0, t.text.length, mark, {\n normalize: false\n });\n });\n }\n\n default:\n {\n return change.removeNodeByKey(node.key, { normalize: false });\n }\n }\n}\n\n/**\n * Check that an `object` matches one of a set of `rules`.\n *\n * @param {Mixed} object\n * @param {Object|Array} rules\n * @return {Boolean}\n */\n\nfunction testRules(object, rules) {\n var error = validateRules(object, rules);\n return !error;\n}\n\n/**\n * Validate that a `object` matches a `rule` object or array.\n *\n * @param {Mixed} object\n * @param {Object|Array} rule\n * @param {Array|Void} rules\n * @return {Error|Void}\n */\n\nfunction validateRules(object, rule, rules) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _options$every = options.every,\n every = _options$every === undefined ? false : _options$every;\n\n\n if (Array.isArray(rule)) {\n var array = rule.length ? rule : [{}];\n var first = void 0;\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = array[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var r = _step2.value;\n\n var _error = validateRules(object, r, rules);\n first = first || _error;\n if (every && _error) return _error;\n if (!every && !_error) return;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return first;\n }\n\n var error = validateObject(object, rule) || validateType(object, rule) || validateData(object, rule) || validateMarks(object, rule) || validateText(object, rule) || validateFirst(object, rule) || validateLast(object, rule) || validateNodes(object, rule, rules);\n\n return error;\n}\n\nfunction validateObject(node, rule) {\n if (rule.object == null) return;\n if (rule.object === node.object) return;\n if (typeof rule.object === 'function' && rule.object(node.object)) return;\n return fail('node_object_invalid', { rule: rule, node: node });\n}\n\nfunction validateType(node, rule) {\n if (rule.type == null) return;\n if (rule.type === node.type) return;\n if (typeof rule.type === 'function' && rule.type(node.type)) return;\n return fail('node_type_invalid', { rule: rule, node: node });\n}\n\nfunction validateData(node, rule) {\n if (rule.data == null) return;\n if (node.data == null) return;\n\n if (typeof rule.data === 'function') {\n if (rule.data(node.data)) return;\n return fail('node_data_invalid', { rule: rule, node: node });\n }\n\n for (var key in rule.data) {\n var fn = rule.data[key];\n var value = node.data && node.data.get(key);\n var valid = typeof fn === 'function' ? fn(value) : fn === value;\n if (valid) continue;\n return fail('node_data_invalid', { rule: rule, node: node, key: key, value: value });\n }\n}\n\nfunction validateMarks(node, rule) {\n if (rule.marks == null) return;\n var marks = node.getMarks().toArray();\n\n var _loop = function _loop(mark) {\n var valid = rule.marks.some(function (def) {\n return typeof def.type === 'function' ? def.type(mark.type) : def.type === mark.type;\n });\n if (valid) return 'continue';\n return {\n v: fail('node_mark_invalid', { rule: rule, node: node, mark: mark })\n };\n };\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = marks[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var mark = _step3.value;\n\n var _ret = _loop(mark);\n\n switch (_ret) {\n case 'continue':\n continue;\n\n default:\n if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === \"object\") return _ret.v;\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n}\n\nfunction validateText(node, rule) {\n if (rule.text == null) return;\n var text = node.text;\n\n var valid = typeof rule.text === 'function' ? rule.text(text) : rule.text.test(text);\n if (valid) return;\n return fail('node_text_invalid', { rule: rule, node: node, text: text });\n}\n\nfunction validateFirst(node, rule) {\n if (rule.first == null) return;\n var first = node.nodes.first();\n if (!first) return;\n var error = validateRules(first, rule.first);\n if (!error) return;\n error.rule = rule;\n error.node = node;\n error.child = first;\n error.code = error.code.replace('node_', 'first_child_');\n return error;\n}\n\nfunction validateLast(node, rule) {\n if (rule.last == null) return;\n var last = node.nodes.last();\n if (!last) return;\n var error = validateRules(last, rule.last);\n if (!error) return;\n error.rule = rule;\n error.node = node;\n error.child = last;\n error.code = error.code.replace('node_', 'last_child_');\n return error;\n}\n\nfunction validateNodes(node, rule) {\n var rules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n if (node.nodes == null) return;\n\n var children = node.nodes.toArray();\n var defs = rule.nodes != null ? rule.nodes.slice() : [];\n var offset = void 0;\n var min = void 0;\n var index = void 0;\n var def = void 0;\n var max = void 0;\n var child = void 0;\n var previous = void 0;\n var next = void 0;\n\n function nextDef() {\n offset = offset == null ? null : 0;\n def = defs.shift();\n min = def && def.min;\n max = def && def.max;\n return !!def;\n }\n\n function nextChild() {\n index = index == null ? 0 : index + 1;\n offset = offset == null ? 0 : offset + 1;\n previous = child;\n child = children[index];\n next = children[index + 1];\n if (max != null && offset == max) nextDef();\n return !!child;\n }\n\n function rewind() {\n offset -= 1;\n index -= 1;\n }\n\n if (rule.nodes != null) {\n nextDef();\n }\n\n while (nextChild()) {\n var err = validateParent(node, child, rules) || validatePrevious(node, child, previous, index, rules) || validateNext(node, child, next, index, rules);\n\n if (err) return err;\n\n if (rule.nodes != null) {\n if (!def) {\n return fail('child_unknown', { rule: rule, node: node, child: child, index: index });\n }\n\n if (def.match) {\n var error = validateRules(child, def.match);\n\n if (error && offset >= min && nextDef()) {\n rewind();\n continue;\n }\n\n if (error) {\n error.rule = rule;\n error.node = node;\n error.child = child;\n error.index = index;\n error.code = error.code.replace('node_', 'child_');\n return error;\n }\n }\n }\n }\n\n if (rule.nodes != null) {\n while (min != null) {\n if (offset < min) {\n return fail('child_required', { rule: rule, node: node, index: index });\n }\n\n nextDef();\n }\n }\n}\n\nfunction validateParent(node, child, rules) {\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = rules[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var rule = _step4.value;\n\n if (rule.parent == null) continue;\n if (!testRules(child, rule.match)) continue;\n\n var error = validateRules(node, rule.parent);\n if (!error) continue;\n\n error.rule = rule;\n error.parent = node;\n error.node = child;\n error.code = error.code.replace('node_', 'parent_');\n return error;\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n}\n\nfunction validatePrevious(node, child, previous, index, rules) {\n if (!previous) return;\n\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = rules[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var rule = _step5.value;\n\n if (rule.previous == null) continue;\n if (!testRules(child, rule.match)) continue;\n\n var error = validateRules(previous, rule.previous);\n if (!error) continue;\n\n error.rule = rule;\n error.node = node;\n error.child = child;\n error.index = index;\n error.previous = previous;\n error.code = error.code.replace('node_', 'previous_sibling_');\n return error;\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n}\n\nfunction validateNext(node, child, next, index, rules) {\n if (!next) return;\n\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = rules[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var rule = _step6.value;\n\n if (rule.next == null) continue;\n if (!testRules(child, rule.match)) continue;\n\n var error = validateRules(next, rule.next);\n if (!error) continue;\n\n error.rule = rule;\n error.node = node;\n error.child = child;\n error.index = index;\n error.next = next;\n error.code = error.code.replace('node_', 'next_sibling_');\n return error;\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n}\n\n/**\n * Create an interim failure object with `code` and `attrs`.\n *\n * @param {String} code\n * @param {Object} attrs\n * @return {Object}\n */\n\nfunction fail(code, attrs) {\n return _extends({ code: code }, attrs);\n}\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$13 = {\n data: undefined,\n decorations: undefined,\n document: undefined,\n history: undefined,\n schema: undefined,\n selection: undefined\n\n /**\n * Value.\n *\n * @type {Value}\n */\n\n};\nvar Value = function (_Record) {\n inherits(Value, _Record);\n\n function Value() {\n classCallCheck(this, Value);\n return possibleConstructorReturn(this, (Value.__proto__ || Object.getPrototypeOf(Value)).apply(this, arguments));\n }\n\n createClass(Value, [{\n key: 'change',\n\n\n /**\n * Create a new `Change` with the current value as a starting point.\n *\n * @param {Object} attrs\n * @return {Change}\n */\n\n value: function change() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return new Change(_extends({}, attrs, { value: this }));\n }\n\n /**\n * Add mark to text at `offset` and `length` in node by `path`.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @return {Value}\n */\n\n }, {\n key: 'addMark',\n value: function addMark(path, offset, length, mark) {\n var value = this;\n var _value = value,\n document = _value.document;\n\n document = document.addMark(path, offset, length, mark);\n value = this.set('document', document);\n return value;\n }\n\n /**\n * Insert a `node`.\n *\n * @param {List|String} path\n * @param {Node} node\n * @return {Value}\n */\n\n }, {\n key: 'insertNode',\n value: function insertNode(path, node) {\n var value = this;\n var _value2 = value,\n document = _value2.document;\n\n document = document.insertNode(path, node);\n value = value.set('document', document);\n\n value = value.mapRanges(function (range) {\n return range.updatePoints(function (point) {\n return point.setPath(null);\n });\n });\n\n return value;\n }\n\n /**\n * Insert `text` at `offset` in node by `path`.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {String} text\n * @param {Set} marks\n * @return {Value}\n */\n\n }, {\n key: 'insertText',\n value: function insertText(path, offset, text, marks) {\n var value = this;\n var _value3 = value,\n document = _value3.document,\n schema = _value3.schema;\n\n document = document.insertText(path, offset, text, marks);\n value = value.set('document', document);\n\n // Update any ranges that were affected.\n var node = document.assertNode(path);\n\n value = value.mapRanges(function (range) {\n var _range = range,\n anchor = _range.anchor,\n focus = _range.focus,\n isBackward = _range.isBackward;\n\n var isAtomic = Decoration.isDecoration(range) && schema.isAtomic(range.mark);\n\n if (anchor.key === node.key && (anchor.offset > offset || anchor.offset === offset && (!isAtomic || !isBackward))) {\n range = range.moveAnchorForward(text.length);\n }\n\n if (focus.key === node.key && (focus.offset > offset || focus.offset == offset && (!isAtomic || isBackward))) {\n range = range.moveFocusForward(text.length);\n }\n\n return range;\n });\n\n value = value.clearAtomicRanges(node.key, offset);\n return value;\n }\n\n /**\n * Merge a node backwards its previous sibling.\n *\n * @param {List|Key} path\n * @return {Value}\n */\n\n }, {\n key: 'mergeNode',\n value: function mergeNode(path) {\n var value = this;\n var _value4 = value,\n document = _value4.document;\n\n var newDocument = document.mergeNode(path);\n path = document.resolvePath(path);\n var withPath = PathUtils.decrement(path);\n var one = document.getNode(withPath);\n var two = document.getNode(path);\n value = value.set('document', newDocument);\n\n value = value.mapRanges(function (range) {\n if (two.object === 'text') {\n var max = one.text.length;\n\n if (range.anchor.key === two.key) {\n range = range.moveAnchorTo(one.key, max + range.anchor.offset);\n }\n\n if (range.focus.key === two.key) {\n range = range.moveFocusTo(one.key, max + range.focus.offset);\n }\n }\n\n range = range.updatePoints(function (point) {\n return point.setPath(null);\n });\n\n return range;\n });\n\n return value;\n }\n\n /**\n * Move a node by `path` to `newPath`.\n *\n * A `newIndex` can be provided when move nodes by `key`, to account for not\n * being able to have a key for a location in the tree that doesn't exist yet.\n *\n * @param {List|Key} path\n * @param {List|Key} newPath\n * @param {Number} newIndex\n * @return {Value}\n */\n\n }, {\n key: 'moveNode',\n value: function moveNode(path, newPath) {\n var newIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n var value = this;\n var _value5 = value,\n document = _value5.document;\n\n document = document.moveNode(path, newPath, newIndex);\n value = value.set('document', document);\n\n value = value.mapRanges(function (range) {\n return range.updatePoints(function (point) {\n return point.setPath(null);\n });\n });\n\n return value;\n }\n\n /**\n * Remove mark from text at `offset` and `length` in node.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @return {Value}\n */\n\n }, {\n key: 'removeMark',\n value: function removeMark(path, offset, length, mark) {\n var value = this;\n var _value6 = value,\n document = _value6.document;\n\n document = document.removeMark(path, offset, length, mark);\n value = this.set('document', document);\n return value;\n }\n\n /**\n * Remove a node by `path`.\n *\n * @param {List|String} path\n * @return {Value}\n */\n\n }, {\n key: 'removeNode',\n value: function removeNode(path) {\n var value = this;\n var _value7 = value,\n document = _value7.document;\n\n var node = document.assertNode(path);\n var first = node.object == 'text' ? node : node.getFirstText() || node;\n var last = node.object == 'text' ? node : node.getLastText() || node;\n var prev = document.getPreviousText(first.key);\n var next = document.getNextText(last.key);\n\n document = document.removeNode(path);\n value = value.set('document', document);\n\n value = value.mapRanges(function (range) {\n var _range2 = range,\n start = _range2.start,\n end = _range2.end;\n\n\n if (node.hasNode(start.key)) {\n range = prev ? range.moveStartTo(prev.key, prev.text.length) : next ? range.moveStartTo(next.key, 0) : range.unset();\n }\n\n if (node.hasNode(end.key)) {\n range = prev ? range.moveEndTo(prev.key, prev.text.length) : next ? range.moveEndTo(next.key, 0) : range.unset();\n }\n\n range = range.updatePoints(function (point) {\n return point.setPath(null);\n });\n\n return range;\n });\n\n return value;\n }\n\n /**\n * Remove `text` at `offset` in node by `path`.\n *\n * @param {List|Key} path\n * @param {Number} offset\n * @param {String} text\n * @return {Value}\n */\n\n }, {\n key: 'removeText',\n value: function removeText(path, offset, text) {\n var value = this;\n var _value8 = value,\n document = _value8.document;\n\n document = document.removeText(path, offset, text);\n value = value.set('document', document);\n\n var node = document.assertNode(path);\n var length = text.length;\n\n var rangeOffset = offset + length;\n\n value = value.clearAtomicRanges(node.key, offset, offset + length);\n\n value = value.mapRanges(function (range) {\n var _range3 = range,\n anchor = _range3.anchor,\n focus = _range3.focus;\n\n\n if (anchor.key === node.key) {\n range = anchor.offset >= rangeOffset ? range.moveAnchorBackward(length) : anchor.offset > offset ? range.moveAnchorTo(anchor.key, offset) : range;\n }\n\n if (focus.key === node.key) {\n range = focus.offset >= rangeOffset ? range.moveFocusBackward(length) : focus.offset > offset ? range.moveFocusTo(focus.key, offset) : range;\n }\n\n return range;\n });\n\n return value;\n }\n\n /**\n * Set `properties` on a node.\n *\n * @param {List|String} path\n * @param {Object} properties\n * @return {Value}\n */\n\n }, {\n key: 'setNode',\n value: function setNode(path, properties) {\n var value = this;\n var _value9 = value,\n document = _value9.document;\n\n document = document.setNode(path, properties);\n value = value.set('document', document);\n return value;\n }\n\n /**\n * Set `properties` on `mark` on text at `offset` and `length` in node.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @param {Object} properties\n * @return {Value}\n */\n\n }, {\n key: 'setMark',\n value: function setMark(path, offset, length, mark, properties) {\n var value = this;\n var _value10 = value,\n document = _value10.document;\n\n document = document.setMark(path, offset, length, mark, properties);\n value = value.set('document', document);\n return value;\n }\n\n /**\n * Set `properties` on the value.\n *\n * @param {Object} properties\n * @return {Value}\n */\n\n }, {\n key: 'setProperties',\n value: function setProperties(properties) {\n var value = this;\n var _value11 = value,\n document = _value11.document;\n var data = properties.data,\n decorations = properties.decorations,\n history = properties.history,\n schema = properties.schema;\n\n var props = {};\n\n if (data) {\n props.data = data;\n }\n\n if (history) {\n props.history = history;\n }\n\n if (schema) {\n props.schema = schema;\n }\n\n if (decorations) {\n props.decorations = decorations.map(function (d) {\n return d.isSet ? d : document.resolveDecoration(d);\n });\n }\n\n value = value.merge(props);\n return value;\n }\n\n /**\n * Set `properties` on the selection.\n *\n * @param {Value} value\n * @param {Operation} operation\n * @return {Value}\n */\n\n }, {\n key: 'setSelection',\n value: function setSelection(properties) {\n var value = this;\n var _value12 = value,\n document = _value12.document,\n selection = _value12.selection;\n\n var next = selection.setProperties(properties);\n selection = document.resolveSelection(next);\n value = value.set('selection', selection);\n return value;\n }\n\n /**\n * Split a node by `path` at `position` with optional `properties` to apply\n * to the newly split node.\n *\n * @param {List|String} path\n * @param {Number} position\n * @param {Object} properties\n * @return {Value}\n */\n\n }, {\n key: 'splitNode',\n value: function splitNode(path, position, properties) {\n var value = this;\n var _value13 = value,\n document = _value13.document;\n\n var newDocument = document.splitNode(path, position, properties);\n var node = document.assertNode(path);\n value = value.set('document', newDocument);\n\n value = value.mapRanges(function (range) {\n var next = newDocument.getNextText(node.key);\n var _range4 = range,\n start = _range4.start,\n end = _range4.end;\n\n // If the start was after the split, move it to the next node.\n\n if (node.key === start.key && position <= start.offset) {\n range = range.moveStartTo(next.key, start.offset - position);\n }\n\n // If the end was after the split, move it to the next node.\n if (node.key === end.key && position <= end.offset) {\n range = range.moveEndTo(next.key, end.offset - position);\n }\n\n range = range.updatePoints(function (point) {\n return point.setPath(null);\n });\n\n return range;\n });\n\n return value;\n }\n\n /**\n * Map all range objects to apply adjustments with an `iterator`.\n *\n * @param {Function} iterator\n * @return {Value}\n */\n\n }, {\n key: 'mapRanges',\n value: function mapRanges(iterator) {\n var value = this;\n var _value14 = value,\n document = _value14.document,\n selection = _value14.selection,\n decorations = _value14.decorations;\n\n\n var sel = selection.isSet ? iterator(selection) : selection;\n if (!sel) sel = selection.unset();\n if (sel !== selection) sel = document.createSelection(sel);\n value = value.set('selection', sel);\n\n var decs = decorations.map(function (decoration) {\n var n = decoration.isSet ? iterator(decoration) : decoration;\n if (n && n !== decoration) n = document.createDecoration(n);\n return n;\n });\n\n decs = decs.filter(function (decoration) {\n return !!decoration;\n });\n value = value.set('decorations', decs);\n return value;\n }\n\n /**\n * Remove any atomic ranges inside a `key`, `offset` and `length`.\n *\n * @param {String} key\n * @param {Number} from\n * @param {Number?} to\n * @return {Value}\n */\n\n }, {\n key: 'clearAtomicRanges',\n value: function clearAtomicRanges(key, from) {\n var to = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n var value = this;\n var _value15 = value,\n schema = _value15.schema;\n\n\n value = this.mapRanges(function (range) {\n if (!Decoration.isDecoration(range)) return range;\n var start = range.start,\n end = range.end,\n mark = range.mark;\n\n var isAtomic = schema.isAtomic(mark);\n if (!isAtomic) return range;\n if (start.key !== key) return range;\n\n if (start.offset < from && (end.key !== key || end.offset > from)) {\n return null;\n }\n\n if (to != null && start.offset < to && (end.key !== key || end.offset > to)) {\n return null;\n }\n\n return range;\n });\n\n return value;\n }\n\n /**\n * Return a JSON representation of the value.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n document: this.document.toJSON(options)\n };\n\n if (options.preserveData) {\n object.data = this.data.toJSON(options);\n }\n\n if (options.preserveDecorations) {\n object.decorations = this.decorations.toArray().map(function (d) {\n return d.toJSON(options);\n });\n }\n\n if (options.preserveHistory) {\n object.history = this.history.toJSON(options);\n }\n\n if (options.preserveSelection) {\n object.selection = this.selection.toJSON(options);\n }\n\n if (options.preserveSchema) {\n object.schema = this.schema.toJSON(options);\n }\n\n return object;\n }\n }, {\n key: 'startBlock',\n\n\n /**\n * Get the current start text node's closest block parent.\n *\n * @return {Block}\n */\n\n get: function get$$1() {\n return this.selection.start.key && this.document.getClosestBlock(this.selection.start.key);\n }\n\n /**\n * Get the current end text node's closest block parent.\n *\n * @return {Block}\n */\n\n }, {\n key: 'endBlock',\n get: function get$$1() {\n return this.selection.end.key && this.document.getClosestBlock(this.selection.end.key);\n }\n\n /**\n * Get the current anchor text node's closest block parent.\n *\n * @return {Block}\n */\n\n }, {\n key: 'anchorBlock',\n get: function get$$1() {\n return this.selection.anchor.key && this.document.getClosestBlock(this.selection.anchor.key);\n }\n\n /**\n * Get the current focus text node's closest block parent.\n *\n * @return {Block}\n */\n\n }, {\n key: 'focusBlock',\n get: function get$$1() {\n return this.selection.focus.key && this.document.getClosestBlock(this.selection.focus.key);\n }\n\n /**\n * Get the current start text node's closest inline parent.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'startInline',\n get: function get$$1() {\n return this.selection.start.key && this.document.getClosestInline(this.selection.start.key);\n }\n\n /**\n * Get the current end text node's closest inline parent.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'endInline',\n get: function get$$1() {\n return this.selection.end.key && this.document.getClosestInline(this.selection.end.key);\n }\n\n /**\n * Get the current anchor text node's closest inline parent.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'anchorInline',\n get: function get$$1() {\n return this.selection.anchor.key && this.document.getClosestInline(this.selection.anchor.key);\n }\n\n /**\n * Get the current focus text node's closest inline parent.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'focusInline',\n get: function get$$1() {\n return this.selection.focus.key && this.document.getClosestInline(this.selection.focus.key);\n }\n\n /**\n * Get the current start text node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'startText',\n get: function get$$1() {\n return this.selection.start.key && this.document.getDescendant(this.selection.start.key);\n }\n\n /**\n * Get the current end node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'endText',\n get: function get$$1() {\n return this.selection.end.key && this.document.getDescendant(this.selection.end.key);\n }\n\n /**\n * Get the current anchor node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'anchorText',\n get: function get$$1() {\n return this.selection.anchor.key && this.document.getDescendant(this.selection.anchor.key);\n }\n\n /**\n * Get the current focus node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'focusText',\n get: function get$$1() {\n return this.selection.focus.key && this.document.getDescendant(this.selection.focus.key);\n }\n\n /**\n * Get the next block node.\n *\n * @return {Block}\n */\n\n }, {\n key: 'nextBlock',\n get: function get$$1() {\n return this.selection.end.key && this.document.getNextBlock(this.selection.end.key);\n }\n\n /**\n * Get the previous block node.\n *\n * @return {Block}\n */\n\n }, {\n key: 'previousBlock',\n get: function get$$1() {\n return this.selection.start.key && this.document.getPreviousBlock(this.selection.start.key);\n }\n\n /**\n * Get the next inline node.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'nextInline',\n get: function get$$1() {\n return this.selection.end.key && this.document.getNextInline(this.selection.end.key);\n }\n\n /**\n * Get the previous inline node.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'previousInline',\n get: function get$$1() {\n return this.selection.start.key && this.document.getPreviousInline(this.selection.start.key);\n }\n\n /**\n * Get the next text node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'nextText',\n get: function get$$1() {\n return this.selection.end.key && this.document.getNextText(this.selection.end.key);\n }\n\n /**\n * Get the previous text node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'previousText',\n get: function get$$1() {\n return this.selection.start.key && this.document.getPreviousText(this.selection.start.key);\n }\n\n /**\n * Get the marks of the current selection.\n *\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'marks',\n get: function get$$1() {\n return this.selection.isUnset ? new Set() : this.selection.marks || this.document.getMarksAtRange(this.selection);\n }\n\n /**\n * Get the active marks of the current selection.\n *\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'activeMarks',\n get: function get$$1() {\n return this.selection.isUnset ? new Set() : this.selection.marks || this.document.getActiveMarksAtRange(this.selection);\n }\n\n /**\n * Get the block nodes in the current selection.\n *\n * @return {List<Block>}\n */\n\n }, {\n key: 'blocks',\n get: function get$$1() {\n return this.selection.isUnset ? new List() : this.document.getBlocksAtRange(this.selection);\n }\n\n /**\n * Get the fragment of the current selection.\n *\n * @return {Document}\n */\n\n }, {\n key: 'fragment',\n get: function get$$1() {\n return this.selection.isUnset ? Document.create() : this.document.getFragmentAtRange(this.selection);\n }\n\n /**\n * Get the inline nodes in the current selection.\n *\n * @return {List<Inline>}\n */\n\n }, {\n key: 'inlines',\n get: function get$$1() {\n return this.selection.isUnset ? new List() : this.document.getInlinesAtRange(this.selection);\n }\n\n /**\n * Get the text nodes in the current selection.\n *\n * @return {List<Text>}\n */\n\n }, {\n key: 'texts',\n get: function get$$1() {\n return this.selection.isUnset ? new List() : this.document.getTextsAtRange(this.selection);\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Value` with `attrs`.\n *\n * @param {Object|Value} attrs\n * @param {Object} options\n * @return {Value}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (Value.isValue(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n return Value.fromJSON(attrs, options);\n }\n\n throw new Error('`Value.create` only accepts objects or values, but you passed it: ' + attrs);\n }\n\n /**\n * Create a dictionary of settable value properties from `attrs`.\n *\n * @param {Object|Value} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Value.isValue(a)) {\n return {\n data: a.data,\n decorations: a.decorations,\n schema: a.schema\n };\n }\n\n if (isPlainObject(a)) {\n var p = {};\n if ('data' in a) p.data = Data.create(a.data);\n if ('decorations' in a) p.decorations = Decoration.createList(a.decorations);\n if ('schema' in a) p.schema = Schema.create(a.schema);\n return p;\n }\n\n throw new Error('`Value.createProperties` only accepts objects or values, but you passed it: ' + a);\n }\n\n /**\n * Create a `Value` from a JSON `object`.\n *\n * @param {Object} object\n * @param {Object} options\n * @property {Boolean} normalize\n * @property {Array} plugins\n * @return {Value}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n _object$decorations = object.decorations,\n decorations = _object$decorations === undefined ? [] : _object$decorations,\n _object$document = object.document,\n document = _object$document === undefined ? {} : _object$document,\n _object$selection = object.selection,\n selection = _object$selection === undefined ? {} : _object$selection,\n _object$schema = object.schema,\n schema = _object$schema === undefined ? {} : _object$schema,\n _object$history = object.history,\n history = _object$history === undefined ? {} : _object$history;\n\n\n data = Data.fromJSON(data);\n schema = Schema.fromJSON(schema);\n history = History.fromJSON(history);\n document = Document.fromJSON(document);\n selection = document.createSelection(selection);\n decorations = List(decorations.map(function (d) {\n return Decoration.fromJSON(d);\n }));\n\n if (selection.isUnset) {\n var text = document.getFirstText();\n if (text) selection = selection.moveToStartOfNode(text);\n selection = document.createSelection(selection);\n }\n\n var value = new Value({\n data: data,\n decorations: decorations,\n document: document,\n selection: selection,\n schema: schema,\n history: history\n });\n\n if (options.normalize !== false) {\n var change = value.change();\n change.withoutSaving(function () {\n return change.normalize();\n });\n value = change.value;\n }\n\n return value;\n }\n }]);\n return Value;\n}(Record(DEFAULTS$13));\n\n/**\n * Changes.\n *\n * @type {Object}\n */\n\nvar Changes$5 = {};\n\n/**\n * Set `properties` on the value.\n *\n * @param {Change} change\n * @param {Object|Value} properties\n */\n\nChanges$5.setValue = function (change, properties) {\n properties = Value.createProperties(properties);\n var value = change.value;\n\n\n change.applyOperation({\n type: 'set_value',\n properties: properties,\n value: value\n });\n};\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar Changes$6 = _extends({}, Changes, Changes$1, Changes$2, Changes$3, Changes$4, Changes$5);\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$2 = Debug('slate:operation:apply');\n\n/**\n * Apply an `op` to a `value`.\n *\n * @param {Value} value\n * @param {Object|Operation} op\n * @return {Value} value\n */\n\nfunction applyOperation(value, op) {\n op = Operation.create(op);\n var _op = op,\n type = _op.type;\n\n debug$2(type, op);\n\n switch (type) {\n case 'add_mark':\n {\n var _op2 = op,\n path = _op2.path,\n offset = _op2.offset,\n length = _op2.length,\n mark = _op2.mark;\n\n var next = value.addMark(path, offset, length, mark);\n return next;\n }\n\n case 'insert_node':\n {\n var _op3 = op,\n _path = _op3.path,\n node = _op3.node;\n\n var _next = value.insertNode(_path, node);\n return _next;\n }\n\n case 'insert_text':\n {\n var _op4 = op,\n _path2 = _op4.path,\n _offset = _op4.offset,\n text = _op4.text,\n marks = _op4.marks;\n\n var _next2 = value.insertText(_path2, _offset, text, marks);\n return _next2;\n }\n\n case 'merge_node':\n {\n var _op5 = op,\n _path3 = _op5.path;\n\n var _next3 = value.mergeNode(_path3);\n return _next3;\n }\n\n case 'move_node':\n {\n var _op6 = op,\n _path4 = _op6.path,\n newPath = _op6.newPath;\n\n var _next4 = value.moveNode(_path4, newPath);\n return _next4;\n }\n\n case 'remove_mark':\n {\n var _op7 = op,\n _path5 = _op7.path,\n _offset2 = _op7.offset,\n _length = _op7.length,\n _mark = _op7.mark;\n\n var _next5 = value.removeMark(_path5, _offset2, _length, _mark);\n return _next5;\n }\n\n case 'remove_node':\n {\n var _op8 = op,\n _path6 = _op8.path;\n\n var _next6 = value.removeNode(_path6);\n return _next6;\n }\n\n case 'remove_text':\n {\n var _op9 = op,\n _path7 = _op9.path,\n _offset3 = _op9.offset,\n _text = _op9.text;\n\n var _next7 = value.removeText(_path7, _offset3, _text);\n return _next7;\n }\n\n case 'set_mark':\n {\n var _op10 = op,\n _path8 = _op10.path,\n _offset4 = _op10.offset,\n _length2 = _op10.length,\n _mark2 = _op10.mark,\n properties = _op10.properties;\n\n var _next8 = value.setMark(_path8, _offset4, _length2, _mark2, properties);\n return _next8;\n }\n\n case 'set_node':\n {\n var _op11 = op,\n _path9 = _op11.path,\n _properties = _op11.properties;\n\n var _next9 = value.setNode(_path9, _properties);\n return _next9;\n }\n\n case 'set_selection':\n {\n var _op12 = op,\n _properties2 = _op12.properties;\n\n var _next10 = value.setSelection(_properties2);\n return _next10;\n }\n\n case 'set_value':\n {\n var _op13 = op,\n _properties3 = _op13.properties;\n\n var _next11 = value.setProperties(_properties3);\n return _next11;\n }\n\n case 'split_node':\n {\n var _op14 = op,\n _path10 = _op14.path,\n position = _op14.position,\n _properties4 = _op14.properties;\n\n var _next12 = value.splitNode(_path10, position, _properties4);\n return _next12;\n }\n\n default:\n {\n throw new Error('Unknown operation type: \"' + type + '\".');\n }\n }\n}\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$3 = Debug('slate:operation:invert');\n\n/**\n * Invert an `op`.\n *\n * @param {Object} op\n * @return {Object}\n */\n\nfunction invertOperation(op) {\n op = Operation.create(op);\n var _op = op,\n type = _op.type;\n\n debug$3(type, op);\n\n switch (type) {\n case 'insert_node':\n {\n var inverse = op.set('type', 'remove_node');\n return inverse;\n }\n\n case 'remove_node':\n {\n var _inverse = op.set('type', 'insert_node');\n return _inverse;\n }\n\n case 'move_node':\n {\n var _op2 = op,\n newPath = _op2.newPath,\n path = _op2.path;\n\n var inversePath = newPath;\n var inverseNewPath = path;\n\n var pathLast = path.size - 1;\n var newPathLast = newPath.size - 1;\n\n // If the node's old position was a left sibling of an ancestor of\n // its new position, we need to adjust part of the path by -1.\n if (path.size < inversePath.size && path.slice(0, pathLast).every(function (e, i) {\n return e == inversePath.get(i);\n }) && path.last() < inversePath.get(pathLast)) {\n inversePath = inversePath.slice(0, pathLast).concat(inversePath.get(pathLast) - 1).concat(inversePath.slice(pathLast + 1, inversePath.size));\n }\n\n // If the node's new position is an ancestor of the old position,\n // or a left sibling of an ancestor of its old position, we need\n // to adjust part of the path by 1.\n if (newPath.size < inverseNewPath.size && newPath.slice(0, newPathLast).every(function (e, i) {\n return e == inverseNewPath.get(i);\n }) && newPath.last() <= inverseNewPath.get(newPathLast)) {\n inverseNewPath = inverseNewPath.slice(0, newPathLast).concat(inverseNewPath.get(newPathLast) + 1).concat(inverseNewPath.slice(newPathLast + 1, inverseNewPath.size));\n }\n\n var _inverse2 = op.set('path', inversePath).set('newPath', inverseNewPath);\n return _inverse2;\n }\n\n case 'merge_node':\n {\n var _op3 = op,\n _path = _op3.path;\n\n var _inversePath = PathUtils.decrement(_path);\n var _inverse3 = op.set('type', 'split_node').set('path', _inversePath);\n return _inverse3;\n }\n\n case 'split_node':\n {\n var _op4 = op,\n _path2 = _op4.path;\n\n var _inversePath2 = PathUtils.increment(_path2);\n var _inverse4 = op.set('type', 'merge_node').set('path', _inversePath2);\n return _inverse4;\n }\n\n case 'set_node':\n {\n var _op5 = op,\n properties = _op5.properties,\n node = _op5.node;\n\n var inverseNode = node.merge(properties);\n var inverseProperties = pick(node, Object.keys(properties));\n var _inverse5 = op.set('node', inverseNode).set('properties', inverseProperties);\n return _inverse5;\n }\n\n case 'insert_text':\n {\n var _inverse6 = op.set('type', 'remove_text');\n return _inverse6;\n }\n\n case 'remove_text':\n {\n var _inverse7 = op.set('type', 'insert_text');\n return _inverse7;\n }\n\n case 'add_mark':\n {\n var _inverse8 = op.set('type', 'remove_mark');\n return _inverse8;\n }\n\n case 'remove_mark':\n {\n var _inverse9 = op.set('type', 'add_mark');\n return _inverse9;\n }\n\n case 'set_mark':\n {\n var _op6 = op,\n _properties = _op6.properties,\n mark = _op6.mark;\n\n var inverseMark = mark.merge(_properties);\n var _inverseProperties = pick(mark, Object.keys(_properties));\n var _inverse10 = op.set('mark', inverseMark).set('properties', _inverseProperties);\n return _inverse10;\n }\n\n case 'set_selection':\n {\n var _op7 = op,\n _properties2 = _op7.properties,\n selection = _op7.selection;\n\n var inverseSelection = selection.merge(_properties2);\n var inverseProps = pick(selection, Object.keys(_properties2));\n var _inverse11 = op.set('selection', inverseSelection).set('properties', inverseProps);\n return _inverse11;\n }\n\n case 'set_value':\n {\n var _op8 = op,\n _properties3 = _op8.properties,\n value = _op8.value;\n\n var inverseValue = value.merge(_properties3);\n var _inverseProperties2 = pick(value, Object.keys(_properties3));\n var _inverse12 = op.set('value', inverseValue).set('properties', _inverseProperties2);\n return _inverse12;\n }\n\n default:\n {\n throw new Error('Unknown operation type: \"' + type + '\".');\n }\n }\n}\n\n/**\n * Operation attributes.\n *\n * @type {Array}\n */\n\nvar OPERATION_ATTRIBUTES = {\n add_mark: ['value', 'path', 'offset', 'length', 'mark'],\n insert_node: ['value', 'path', 'node'],\n insert_text: ['value', 'path', 'offset', 'text', 'marks'],\n merge_node: ['value', 'path', 'position', 'properties', 'target'],\n move_node: ['value', 'path', 'newPath'],\n remove_mark: ['value', 'path', 'offset', 'length', 'mark'],\n remove_node: ['value', 'path', 'node'],\n remove_text: ['value', 'path', 'offset', 'text', 'marks'],\n set_mark: ['value', 'path', 'offset', 'length', 'mark', 'properties'],\n set_node: ['value', 'path', 'node', 'properties'],\n set_selection: ['value', 'selection', 'properties'],\n set_value: ['value', 'properties'],\n split_node: ['value', 'path', 'position', 'properties', 'target']\n\n /**\n * Default properties.\n *\n * @type {Object}\n */\n\n};var DEFAULTS$14 = {\n length: undefined,\n mark: undefined,\n marks: undefined,\n newPath: undefined,\n node: undefined,\n offset: undefined,\n path: undefined,\n position: undefined,\n properties: undefined,\n selection: undefined,\n target: undefined,\n text: undefined,\n type: undefined,\n value: undefined\n\n /**\n * Operation.\n *\n * @type {Operation}\n */\n\n};\nvar Operation = function (_Record) {\n inherits(Operation, _Record);\n\n function Operation() {\n classCallCheck(this, Operation);\n return possibleConstructorReturn(this, (Operation.__proto__ || Object.getPrototypeOf(Operation)).apply(this, arguments));\n }\n\n createClass(Operation, [{\n key: 'apply',\n\n\n /**\n * Apply the operation to a `value`.\n *\n * @param {Value} value\n * @return {Value}\n */\n\n value: function apply(value) {\n var next = applyOperation(value, this);\n return next;\n }\n\n /**\n * Invert the operation.\n *\n * @return {Operation}\n */\n\n }, {\n key: 'invert',\n value: function invert() {\n var inverted = invertOperation(this);\n return inverted;\n }\n\n /**\n * Return a JSON representation of the operation.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var object = this.object,\n type = this.type;\n\n var json = { object: object, type: type };\n var ATTRIBUTES = OPERATION_ATTRIBUTES[type];\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = ATTRIBUTES[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n\n var value = this[key];\n\n // Skip keys for objects that should not be serialized, and are only used\n // for providing the local-only invert behavior for the history stack.\n if (key == 'document') continue;\n if (key == 'selection') continue;\n if (key == 'value') continue;\n if (key == 'node' && type != 'insert_node') continue;\n\n if (key == 'mark' || key == 'marks' || key == 'node' || key == 'path' || key == 'newPath') {\n value = value.toJSON();\n }\n\n if (key == 'properties' && type == 'merge_node') {\n var v = {};\n if ('data' in value) v.data = value.data.toJS();\n if ('type' in value) v.type = value.type;\n value = v;\n }\n\n if (key == 'properties' && type == 'set_mark') {\n var _v = {};\n if ('data' in value) _v.data = value.data.toJS();\n if ('type' in value) _v.type = value.type;\n value = _v;\n }\n\n if (key == 'properties' && type == 'set_node') {\n var _v2 = {};\n if ('data' in value) _v2.data = value.data.toJS();\n if ('type' in value) _v2.type = value.type;\n value = _v2;\n }\n\n if (key == 'properties' && type == 'set_selection') {\n var _v3 = {};\n if ('anchor' in value) _v3.anchor = value.anchor.toJSON();\n if ('focus' in value) _v3.focus = value.focus.toJSON();\n if ('isFocused' in value) _v3.isFocused = value.isFocused;\n if ('marks' in value) _v3.marks = value.marks && value.marks.toJSON();\n value = _v3;\n }\n\n if (key == 'properties' && type == 'set_value') {\n var _v4 = {};\n if ('data' in value) _v4.data = value.data.toJS();\n if ('decorations' in value) _v4.decorations = value.decorations.toJS();\n if ('schema' in value) _v4.schema = value.schema.toJS();\n value = _v4;\n }\n\n if (key == 'properties' && type == 'split_node') {\n var _v5 = {};\n if ('data' in value) _v5.data = value.data.toJS();\n if ('type' in value) _v5.type = value.type;\n value = _v5;\n }\n\n json[key] = value;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return json;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Operation` with `attrs`.\n *\n * @param {Object|Array|List|String|Operation} attrs\n * @return {Operation}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Operation.isOperation(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n return Operation.fromJSON(attrs);\n }\n\n throw new Error('`Operation.create` only accepts objects or operations, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Operations` from `elements`.\n *\n * @param {Array<Operation|Object>|List<Operation|Object>} elements\n * @return {List<Operation>}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(elements) || Array.isArray(elements)) {\n var list = new List(elements.map(Operation.create));\n return list;\n }\n\n throw new Error('`Operation.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n\n /**\n * Create a `Operation` from a JSON `object`.\n *\n * @param {Object|Operation} object\n * @return {Operation}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Operation.isOperation(object)) {\n return object;\n }\n\n var type = object.type;\n\n var ATTRIBUTES = OPERATION_ATTRIBUTES[type];\n var attrs = { type: type };\n\n if (!ATTRIBUTES) {\n throw new Error('`Operation.fromJSON` was passed an unrecognized operation type: \"' + type + '\"');\n }\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = ATTRIBUTES[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var key = _step2.value;\n\n var v = object[key];\n\n if (v === undefined) {\n // Skip keys for objects that should not be serialized, and are only used\n // for providing the local-only invert behavior for the history stack.\n if (key == 'document') continue;\n if (key == 'selection') continue;\n if (key == 'value') continue;\n if (key == 'node' && type != 'insert_node') continue;\n\n throw new Error('`Operation.fromJSON` was passed a \"' + type + '\" operation without the required \"' + key + '\" attribute.');\n }\n\n if (key === 'path' || key === 'newPath') {\n v = PathUtils.create(v);\n }\n\n if (key === 'mark') {\n v = Mark.create(v);\n }\n\n if (key === 'marks' && v != null) {\n v = Mark.createSet(v);\n }\n\n if (key === 'node') {\n v = Node.create(v);\n }\n\n if (key === 'selection') {\n v = Selection.create(v);\n }\n\n if (key === 'value') {\n v = Value.create(v);\n }\n\n if (key === 'properties' && type === 'merge_node') {\n v = Node.createProperties(v);\n }\n\n if (key === 'properties' && type === 'set_mark') {\n v = Mark.createProperties(v);\n }\n\n if (key === 'properties' && type === 'set_node') {\n v = Node.createProperties(v);\n }\n\n if (key === 'properties' && type === 'set_selection') {\n v = Selection.createProperties(v);\n }\n\n if (key === 'properties' && type === 'set_value') {\n v = Value.createProperties(v);\n }\n\n if (key === 'properties' && type === 'split_node') {\n v = Node.createProperties(v);\n }\n\n attrs[key] = v;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n var node = new Operation(attrs);\n return node;\n }\n\n /**\n * Check if `any` is a list of operations.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isOperationList',\n value: function isOperationList(any) {\n return List.isList(any) && any.every(function (item) {\n return Operation.isOperation(item);\n });\n }\n }]);\n return Operation;\n}(Record(DEFAULTS$14));\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$4 = Debug('slate:change');\n\n/**\n * Change.\n *\n * @type {Change}\n */\n\nvar Change = function () {\n /**\n * Create a new `Change` with `attrs`.\n *\n * @param {Object} attrs\n * @property {Value} value\n */\n\n function Change(attrs) {\n classCallCheck(this, Change);\n var value = attrs.value;\n\n this.value = value;\n this.operations = new List();\n\n this.tmp = {\n dirty: [],\n merge: null,\n normalize: true,\n save: true\n };\n }\n\n /**\n * Apply an `operation` to the current value, saving the operation to the\n * history if needed.\n *\n * @param {Operation|Object} operation\n * @return {Change}\n */\n\n createClass(Change, [{\n key: 'applyOperation',\n value: function applyOperation(operation) {\n var operations = this.operations;\n var value = this.value;\n var _value = value,\n history = _value.history;\n\n // Add in the current `value` in case the operation was serialized.\n\n if (isPlainObject(operation)) {\n operation = _extends({}, operation, { value: value });\n }\n\n operation = Operation.create(operation);\n\n // Default options to the change-level flags, this allows for setting\n // specific options for all of the operations of a given change.\n var _tmp = this.tmp,\n merge = _tmp.merge,\n save = _tmp.save;\n\n // If `merge` is non-commital, and this is not the first operation in a new change\n // then we should merge.\n\n if (merge == null && operations.size !== 0) {\n merge = true;\n }\n\n // Apply the operation to the value.\n debug$4('apply', { operation: operation, save: save, merge: merge });\n value = operation.apply(value);\n\n // If needed, save the operation to the history.\n if (history && save) {\n history = history.save(operation, { merge: merge });\n value = value.set('history', history);\n }\n\n // Get the paths of the affected nodes, and mark them as dirty.\n var newDirtyPaths = getDirtyPaths(operation);\n var dirty = this.tmp.dirty.reduce(function (memo, path) {\n path = PathUtils.create(path);\n var transformed = PathUtils.transform(path, operation);\n memo = memo.concat(transformed.toArray());\n return memo;\n }, newDirtyPaths);\n\n this.tmp.dirty = dirty;\n\n // Update the mutable change object.\n this.value = value;\n this.operations = operations.push(operation);\n return this;\n }\n\n /**\n * Apply a series of `operations` to the current value.\n *\n * @param {Array|List} operations\n * @param {Object} options\n * @return {Change}\n */\n\n }, {\n key: 'applyOperations',\n value: function applyOperations(operations, options) {\n var _this = this;\n\n operations.forEach(function (op) {\n return _this.applyOperation(op, options);\n });\n return this;\n }\n\n /**\n * Call a change `fn` with arguments.\n *\n * @param {Function} fn\n * @param {Mixed} ...args\n * @return {Change}\n */\n\n }, {\n key: 'call',\n value: function call(fn) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n fn.apply(undefined, [this].concat(args));\n this.normalizeDirtyPaths();\n return this;\n }\n\n /**\n * Normalize all of the nodes in the document from scratch.\n *\n * @return {Change}\n */\n\n }, {\n key: 'normalize',\n value: function normalize() {\n var value = this.value;\n var document = value.document;\n\n var table = document.getKeysToPathsTable();\n var paths = Object.values(table).map(PathUtils.create);\n this.tmp.dirty = this.tmp.dirty.concat(paths);\n this.normalizeDirtyPaths();\n return this;\n }\n\n /**\n * Normalize any new \"dirty\" paths that have been added to the change.\n *\n * @return {Change}\n */\n\n }, {\n key: 'normalizeDirtyPaths',\n value: function normalizeDirtyPaths() {\n if (!this.tmp.normalize) {\n return this;\n }\n\n while (this.tmp.dirty.length) {\n var path = this.tmp.dirty.pop();\n this.normalizeNodeByPath(path);\n }\n\n return this;\n }\n\n /**\n * Normalize the node at a specific `path`, iterating as many times as\n * necessary until it satisfies all of the schema rules.\n *\n * @param {Array} path\n * @return {Change}\n */\n\n }, {\n key: 'normalizeNodeByPath',\n value: function normalizeNodeByPath(path) {\n var _this2 = this;\n\n var value = this.value;\n var document = value.document,\n schema = value.schema;\n\n var node = document.assertNode(path);\n\n var iterations = 0;\n var max = schema.stack.plugins.length + schema.rules.length + (node.object === 'text' ? 1 : node.nodes.size);\n\n var iterate = function iterate() {\n var fn = node.normalize(schema);\n if (!fn) return;\n\n // Run the normalize `fn` to fix the node.\n fn(_this2);\n\n // Attempt to re-find the node by path, or by key if it has changed\n // locations in the tree continue iterating.\n document = _this2.value.document;\n var _node = node,\n key = _node.key;\n\n var found = document.getDescendant(path);\n\n if (found && found.key === key) {\n node = found;\n } else {\n found = document.getDescendant(key);\n\n if (found) {\n node = found;\n path = document.getPath(key);\n } else {\n // If it no longer exists by key, it was removed, so abort.\n return;\n }\n }\n\n // Increment the iterations counter, and check to make sure that we haven't\n // exceeded the max. Without this check, it's easy for the `normalize`\n // function of a schema rule to be written incorrectly and for an infinite\n // invalid loop to occur.\n iterations++;\n\n if (iterations > max) {\n throw new Error('A schema rule could not be normalized after sufficient iterations. This is usually due to a `rule.normalize` or `plugin.normalizeNode` function of a schema being incorrectly written, causing an infinite loop.');\n }\n\n // Otherwise, iterate again.\n iterate();\n };\n\n this.withoutNormalizing(function () {\n iterate();\n });\n\n return this;\n }\n\n /**\n * Apply a series of changes inside a synchronous `fn`, deferring\n * normalization until after the function has finished executing.\n *\n * @param {Function} fn\n * @return {Change}\n */\n\n }, {\n key: 'withoutNormalizing',\n value: function withoutNormalizing(fn) {\n var value = this.tmp.normalize;\n this.tmp.normalize = false;\n fn(this);\n this.tmp.normalize = value;\n this.normalizeDirtyPaths();\n return this;\n }\n\n /**\n * Apply a series of changes inside a synchronous `fn`, without merging any of\n * the new operations into previous save point in the history.\n *\n * @param {Function} fn\n * @return {Change}\n */\n\n }, {\n key: 'withoutMerging',\n value: function withoutMerging(fn) {\n var value = this.tmp.merge;\n this.tmp.merge = false;\n fn(this);\n this.tmp.merge = value;\n return this;\n }\n\n /**\n * Apply a series of changes inside a synchronous `fn`, without saving any of\n * their operations into the history.\n *\n * @param {Function} fn\n * @return {Change}\n */\n\n }, {\n key: 'withoutSaving',\n value: function withoutSaving(fn) {\n var value = this.tmp.save;\n this.tmp.save = false;\n fn(this);\n this.tmp.save = value;\n return this;\n }\n\n /**\n * Set an operation flag by `key` to `value`.\n *\n * @param {String} key\n * @param {Any} value\n * @return {Change}\n */\n\n /**\n * Deprecated.\n */\n\n }, {\n key: 'setOperationFlag',\n value: function setOperationFlag(key, value) {\n warning(false, 'As of slate@0.41.0 the `change.setOperationFlag` method has been deprecated.');\n\n this.tmp[key] = value;\n return this;\n }\n }, {\n key: 'getFlag',\n value: function getFlag(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n warning(false, 'As of slate@0.41.0 the `change.getFlag` method has been deprecated.');\n\n return options[key] !== undefined ? options[key] : this.tmp[key];\n }\n }, {\n key: 'unsetOperationFlag',\n value: function unsetOperationFlag(key) {\n warning(false, 'As of slate@0.41.0 the `change.unsetOperationFlag` method has been deprecated.');\n\n delete this.tmp[key];\n return this;\n }\n }, {\n key: 'withoutNormalization',\n value: function withoutNormalization(fn) {\n warning(false, 'As of slate@0.41.0 the `change.withoutNormalization` helper has been renamed to `change.withoutNormalizing`.');\n\n return this.withoutNormalizing(fn);\n }\n }]);\n return Change;\n}();\n\n/**\n * Get the \"dirty\" paths for a given `operation`.\n *\n * @param {Operation} operation\n * @return {Array}\n */\n\nfunction getDirtyPaths(operation) {\n var type = operation.type,\n node = operation.node,\n path = operation.path,\n newPath = operation.newPath;\n\n\n switch (type) {\n case 'add_mark':\n case 'insert_text':\n case 'remove_mark':\n case 'remove_text':\n case 'set_mark':\n case 'set_node':\n {\n return [path];\n }\n\n case 'insert_node':\n {\n var table = node.getKeysToPathsTable();\n var paths = Object.values(table).map(function (p) {\n return path.concat(p);\n });\n var parentPath = PathUtils.lift(path);\n return [parentPath, path].concat(toConsumableArray(paths));\n }\n\n case 'split_node':\n {\n var _parentPath = PathUtils.lift(path);\n var nextPath = PathUtils.increment(path);\n return [_parentPath, path, nextPath];\n }\n\n case 'merge_node':\n {\n var _parentPath2 = PathUtils.lift(path);\n var previousPath = PathUtils.decrement(path);\n return [_parentPath2, previousPath];\n }\n\n case 'move_node':\n {\n var _parentPath3 = PathUtils.lift(path);\n var newParentPath = PathUtils.lift(newPath);\n\n // HACK: this clause only exists because the `move_path` logic isn't\n // consistent when it deals with siblings.\n if (!PathUtils.isSibling(path, newPath)) {\n if (newParentPath.size && PathUtils.isYounger(path, newPath)) {\n newParentPath = PathUtils.decrement(newParentPath, 1, path.size - 1);\n }\n\n if (_parentPath3.size && PathUtils.isYounger(newPath, path)) {\n _parentPath3 = PathUtils.increment(_parentPath3, 1, newPath.size - 1);\n }\n }\n\n return [_parentPath3, newParentPath];\n }\n\n case 'remove_node':\n {\n var _parentPath4 = PathUtils.lift(path);\n return [_parentPath4];\n }\n\n default:\n {\n return [];\n }\n }\n}\n\n/**\n * Add a change method for each of the changes.\n */\n\nObject.keys(Changes$6).forEach(function (type) {\n Change.prototype[type] = function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n debug$4(type, { args: args });\n this.call.apply(this, [Changes$6[type]].concat(args));\n return this;\n };\n});\n\n/**\n * Mix in an `Interface` to a `Class`.\n *\n * @param {Class} Interface\n * @param {Class} Class\n */\n\nfunction mixin(Interface, Classes) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = Classes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var Class = _step.value;\n\n // Copy static properties from the interface.\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = Object.getOwnPropertyNames(Interface)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var name = _step2.value;\n\n if (Class.hasOwnProperty(name)) continue;\n var desc = Object.getOwnPropertyDescriptor(Interface, name);\n Object.defineProperty(Class, name, desc);\n }\n\n // Copy instance properties from the interface.\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = Object.getOwnPropertyNames(Interface.prototype)[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _name = _step3.value;\n\n if (Class.prototype.hasOwnProperty(_name)) continue;\n var desc = Object.getOwnPropertyDescriptor(Interface.prototype, _name);\n Object.defineProperty(Class.prototype, _name, desc);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\n/**\n * A factory for the interface that all Slate objects implement.\n *\n * @type {Function}\n */\n\nfunction create$2(type) {\n var TYPE = TYPES[type];\n var camel = '' + type.charAt(0).toUpperCase() + type.slice(1);\n var is$$1 = 'is' + camel;\n\n var ObjectInterface = function () {\n function ObjectInterface() {\n classCallCheck(this, ObjectInterface);\n }\n\n createClass(ObjectInterface, [{\n key: 'object',\n\n /**\n * Return the type of the object.\n *\n * @return {String}\n */\n\n get: function get$$1() {\n return type;\n }\n }]);\n return ObjectInterface;\n }();\n\n ObjectInterface[is$$1] = isObject.bind(null, type);\n ObjectInterface.prototype[TYPE] = true;\n return ObjectInterface;\n}\n\n/**\n * Mix in the object interfaces.\n */\n\nmixin(create$2('block'), [Block]);\nmixin(create$2('change'), [Change]);\nmixin(create$2('decoration'), [Decoration]);\nmixin(create$2('document'), [Document]);\nmixin(create$2('history'), [History]);\nmixin(create$2('inline'), [Inline]);\nmixin(create$2('leaf'), [Leaf]);\nmixin(create$2('mark'), [Mark]);\nmixin(create$2('node'), [Node]);\nmixin(create$2('operation'), [Operation]);\nmixin(create$2('point'), [Point]);\nmixin(create$2('range'), [Range]);\nmixin(create$2('schema'), [Schema]);\nmixin(create$2('selection'), [Selection]);\nmixin(create$2('stack'), [Stack$1]);\nmixin(create$2('text'), [Text]);\nmixin(create$2('value'), [Value]);\n\n/**\n * The interface that all Slate models implement.\n *\n * @type {Class}\n */\n\nvar ModelInterface = function () {\n function ModelInterface() {\n classCallCheck(this, ModelInterface);\n }\n\n createClass(ModelInterface, [{\n key: 'toJS',\n\n\n /**\n * Alias `toJS`.\n */\n\n value: function toJS() {\n return this.toJSON.apply(this, arguments);\n }\n }], [{\n key: 'fromJS',\n\n /**\n * Alias `fromJS`.\n */\n\n value: function fromJS() {\n return this.fromJSON.apply(this, arguments);\n }\n }]);\n return ModelInterface;\n}();\n\n/**\n * Mix in the common interface.\n *\n * @param {Record}\n */\n\nmixin(ModelInterface, [Block, Change, Decoration, Document, History, Inline, Leaf, Mark, Node, Operation, Point, Range, Schema, Selection, Stack$1, Text, Value]);\n\n/**\n * The interface that `Document`, `Block` and `Inline` all implement, to make\n * working with the recursive node tree easier.\n *\n * @type {Class}\n */\n\nvar NodeInterface = function () {\n function NodeInterface() {\n classCallCheck(this, NodeInterface);\n }\n\n createClass(NodeInterface, [{\n key: 'getFirstInvalidNode',\n\n\n /**\n * Check whether the node is a leaf inline.\n *\n * @return {Boolean}\n */\n\n value: function getFirstInvalidNode(schema) {\n if (this.object === 'text') {\n var _invalid = this.validate(schema) ? this : null;\n return _invalid;\n }\n\n var invalid = null;\n\n this.nodes.find(function (n) {\n invalid = n.validate(schema) ? n : n.getFirstInvalidNode(schema);\n return invalid;\n });\n\n return invalid;\n }\n\n /**\n * Get the first text node of a node, or the node itself.\n *\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFirstText',\n value: function getFirstText() {\n if (this.object === 'text') {\n return this;\n }\n\n var descendant = null;\n\n var found = this.nodes.find(function (node) {\n if (node.object === 'text') return true;\n descendant = node.getFirstText();\n return !!descendant;\n });\n\n return descendant || found;\n }\n\n /**\n * Get an object mapping all the keys in the node to their paths.\n *\n * @return {Object}\n */\n\n }, {\n key: 'getKeysToPathsTable',\n value: function getKeysToPathsTable() {\n var ret = defineProperty({}, this.key, []);\n\n if (this.nodes) {\n this.nodes.forEach(function (node, i) {\n var nested = node.getKeysToPathsTable();\n\n for (var key in nested) {\n var path = nested[key];\n\n warning(!(key in ret), 'A node with a duplicate key of \"' + key + '\" was found! Duplicate keys are not allowed, you should use `node.regenerateKey` before inserting if you are reusing an existing node.');\n\n ret[key] = [i].concat(toConsumableArray(path));\n }\n });\n }\n\n return ret;\n }\n\n /**\n * Get the last text node of a node, or the node itself.\n *\n * @return {Node|Null}\n */\n\n }, {\n key: 'getLastText',\n value: function getLastText() {\n if (this.object === 'text') {\n return this;\n }\n\n var descendant = null;\n\n var found = this.nodes.findLast(function (node) {\n if (node.object == 'text') return true;\n descendant = node.getLastText();\n return descendant;\n });\n\n return descendant || found;\n }\n\n /**\n * Get a node in the tree, or the node itself.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNode',\n value: function getNode(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (this.object === 'text' && path.size) return null;\n var node = path.size ? this.getDescendant(path) : this;\n return node;\n }\n\n /**\n * Find the path to a node.\n *\n * @param {String|List} key\n * @return {List}\n */\n\n }, {\n key: 'getPath',\n value: function getPath(key) {\n // Handle the case of passing in a path directly, to match other methods.\n if (List.isList(key)) return key;\n\n var dict = this.getKeysToPathsTable();\n var path = dict[key];\n return path ? List(path) : null;\n }\n\n /**\n * Get the concatenated text string of a node.\n *\n * @return {String}\n */\n\n }, {\n key: 'getText',\n value: function getText() {\n var children = this.object === 'text' ? this.leaves : this.nodes;\n var text = children.reduce(function (memo, c) {\n return memo + c.text;\n }, '');\n return text;\n }\n\n /**\n * Check if a node exists.\n *\n * @param {List|String} path\n * @return {Boolean}\n */\n\n }, {\n key: 'hasNode',\n value: function hasNode(path) {\n var node = this.getNode(path);\n return !!node;\n }\n\n /**\n * Normalize the text node with a `schema`.\n *\n * @param {Schema} schema\n * @return {Function|Void}\n */\n\n }, {\n key: 'normalize',\n value: function normalize(schema) {\n var normalizer = schema.normalizeNode(this);\n return normalizer;\n }\n\n /**\n * Regenerate the node's key.\n *\n * @return {Node}\n */\n\n }, {\n key: 'regenerateKey',\n value: function regenerateKey() {\n var key = KeyUtils.create();\n var node = this.set('key', key);\n return node;\n }\n\n /**\n * Resolve a path from a path list or key string.\n *\n * An `index` can be provided, in which case paths created from a key string\n * will have the index pushed onto them. This is helpful in cases where you\n * want to accept either a `path` or a `key, index` combination for targeting\n * a location in the tree that doesn't exist yet, like when inserting.\n *\n * @param {List|String} value\n * @param {Number} index\n * @return {List}\n */\n\n }, {\n key: 'resolvePath',\n value: function resolvePath(path, index) {\n if (typeof path === 'string') {\n path = this.getPath(path);\n\n if (index != null) {\n path = path.concat(index);\n }\n } else {\n path = PathUtils.create(path);\n }\n\n return path;\n }\n\n /**\n * Validate the node against a `schema`.\n *\n * @param {Schema} schema\n * @return {Error|Void}\n */\n\n }, {\n key: 'validate',\n value: function validate(schema) {\n var error = schema.validateNode(this);\n return error;\n }\n }, {\n key: 'text',\n\n /**\n * Get the concatenated text of the node.\n *\n * @return {String}\n */\n\n get: function get$$1() {\n return this.getText();\n }\n }]);\n return NodeInterface;\n}();\n\n/**\n * Memoize read methods.\n */\n\nmemoize(NodeInterface.prototype, ['getFirstInvalidNode', 'getFirstText', 'getKeysToPathsTable', 'getLastText', 'getText', 'normalize', 'validate']);\n\n/**\n * Mix in the node interface.\n */\n\nmixin(NodeInterface, [Block, Document, Inline, Text]);\n\n/**\n * The interface that `Document`, `Block` and `Inline` all implement, to make\n * working with the recursive node tree easier.\n *\n * @type {Class}\n */\n\nvar ElementInterface = function () {\n function ElementInterface() {\n classCallCheck(this, ElementInterface);\n }\n\n createClass(ElementInterface, [{\n key: 'addMark',\n\n /**\n * Add mark to text at `offset` and `length` in node by `path`.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @return {Node}\n */\n\n value: function addMark(path, offset, length, mark) {\n var node = this.assertDescendant(path);\n path = this.resolvePath(path);\n node = node.addMark(offset, length, mark);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n\n /**\n * Create a decoration with `properties` relative to the node.\n *\n * @param {Object|Decoration} properties\n * @return {Decoration}\n */\n\n }, {\n key: 'createDecoration',\n value: function createDecoration(properties) {\n properties = Decoration.createProperties(properties);\n var decoration = this.resolveDecoration(properties);\n return decoration;\n }\n\n /**\n * Create a point with `properties` relative to the node.\n *\n * @param {Object|Point} properties\n * @return {Range}\n */\n\n }, {\n key: 'createPoint',\n value: function createPoint(properties) {\n properties = Point.createProperties(properties);\n var point = this.resolvePoint(properties);\n return point;\n }\n\n /**\n * Create a range with `properties` relative to the node.\n *\n * @param {Object|Range} properties\n * @return {Range}\n */\n\n }, {\n key: 'createRange',\n value: function createRange(properties) {\n properties = Range.createProperties(properties);\n var range = this.resolveRange(properties);\n return range;\n }\n\n /**\n * Create a selection with `properties` relative to the node.\n *\n * @param {Object|Selection} properties\n * @return {Selection}\n */\n\n }, {\n key: 'createSelection',\n value: function createSelection(properties) {\n properties = Selection.createProperties(properties);\n var selection = this.resolveSelection(properties);\n return selection;\n }\n\n /**\n * Recursively filter all descendant nodes with `iterator`.\n *\n * @param {Function} iterator\n * @return {List<Node>}\n */\n\n }, {\n key: 'filterDescendants',\n value: function filterDescendants(iterator) {\n var matches = [];\n\n this.forEachDescendant(function (node, i, nodes) {\n if (iterator(node, i, nodes)) matches.push(node);\n });\n\n return List(matches);\n }\n\n /**\n * Recursively find all descendant nodes by `iterator`.\n *\n * @param {Function} iterator\n * @return {Node|Null}\n */\n\n }, {\n key: 'findDescendant',\n value: function findDescendant(iterator) {\n var found = null;\n\n this.forEachDescendant(function (node, i, nodes) {\n if (iterator(node, i, nodes)) {\n found = node;\n return false;\n }\n });\n\n return found;\n }\n\n /**\n * Recursively iterate over all descendant nodes with `iterator`. If the\n * iterator returns false it will break the loop.\n *\n * @param {Function} iterator\n */\n\n }, {\n key: 'forEachDescendant',\n value: function forEachDescendant(iterator) {\n var ret = void 0;\n\n this.nodes.forEach(function (child, i, nodes) {\n if (iterator(child, i, nodes) === false) {\n ret = false;\n return false;\n }\n\n if (child.object != 'text') {\n ret = child.forEachDescendant(iterator);\n return ret;\n }\n });\n\n return ret;\n }\n\n /**\n * Get a set of the active marks in a `range`.\n *\n * @param {Range} range\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'getActiveMarksAtRange',\n value: function getActiveMarksAtRange(range) {\n range = this.resolveRange(range);\n if (range.isUnset) return Set();\n\n if (range.isCollapsed) {\n var _range = range,\n _start = _range.start;\n\n return this.getMarksAtPosition(_start.key, _start.offset).toSet();\n }\n\n var _range2 = range,\n start = _range2.start,\n end = _range2.end;\n\n var startKey = start.key;\n var startOffset = start.offset;\n var endKey = end.key;\n var endOffset = end.offset;\n var startText = this.getDescendant(startKey);\n\n if (startKey !== endKey) {\n while (startKey !== endKey && endOffset === 0) {\n var _endText = this.getPreviousText(endKey);\n endKey = _endText.key;\n endOffset = _endText.text.length;\n }\n\n while (startKey !== endKey && startOffset === startText.text.length) {\n startText = this.getNextText(startKey);\n startKey = startText.key;\n startOffset = 0;\n }\n }\n\n if (startKey === endKey) {\n return startText.getActiveMarksBetweenOffsets(startOffset, endOffset);\n }\n\n var startMarks = startText.getActiveMarksBetweenOffsets(startOffset, startText.text.length);\n if (startMarks.size === 0) return Set();\n var endText = this.getDescendant(endKey);\n var endMarks = endText.getActiveMarksBetweenOffsets(0, endOffset);\n var marks = startMarks.intersect(endMarks);\n // If marks is already empty, the active marks is empty\n if (marks.size === 0) return marks;\n\n var text = this.getNextText(startKey);\n\n while (text.key !== endKey) {\n if (text.text.length !== 0) {\n marks = marks.intersect(text.getActiveMarks());\n if (marks.size === 0) return Set();\n }\n\n text = this.getNextText(text.key);\n }\n return marks;\n }\n\n /**\n * Get a list of the ancestors of a descendant.\n *\n * @param {List|String} path\n * @return {List<Node>|Null}\n */\n\n }, {\n key: 'getAncestors',\n value: function getAncestors(path) {\n var _this = this;\n\n path = this.resolvePath(path);\n if (!path) return null;\n\n var ancestors = [];\n\n path.forEach(function (p, i) {\n var current = path.slice(0, i);\n var parent = _this.getNode(current);\n ancestors.push(parent);\n });\n\n return List(ancestors);\n }\n\n /**\n * Get the leaf block descendants of the node.\n *\n * @return {List<Node>}\n */\n\n }, {\n key: 'getBlocks',\n value: function getBlocks() {\n var array = this.getBlocksAsArray();\n return List(array);\n }\n\n /**\n * Get the leaf block descendants of the node.\n *\n * @return {List<Node>}\n */\n\n }, {\n key: 'getBlocksAsArray',\n value: function getBlocksAsArray() {\n return this.nodes.reduce(function (array, child) {\n if (child.object != 'block') return array;\n if (!child.isLeafBlock()) return array.concat(child.getBlocksAsArray());\n array.push(child);\n return array;\n }, []);\n }\n\n /**\n * Get the leaf block descendants in a `range`.\n *\n * @param {Range} range\n * @return {List<Node>}\n */\n\n }, {\n key: 'getBlocksAtRange',\n value: function getBlocksAtRange(range) {\n var array = this.getBlocksAtRangeAsArray(range);\n // Eliminate duplicates by converting to an `OrderedSet` first.\n return List(OrderedSet(array));\n }\n\n /**\n * Get the leaf block descendants in a `range` as an array\n *\n * @param {Range} range\n * @return {Array}\n */\n\n }, {\n key: 'getBlocksAtRangeAsArray',\n value: function getBlocksAtRangeAsArray(range) {\n range = this.resolveRange(range);\n if (range.isUnset) return [];\n\n var _range3 = range,\n start = _range3.start,\n end = _range3.end;\n\n var startBlock = this.getClosestBlock(start.key);\n\n // PERF: the most common case is when the range is in a single block node,\n // where we can avoid a lot of iterating of the tree.\n if (start.key === end.key) return [startBlock];\n\n var endBlock = this.getClosestBlock(end.key);\n var blocks = this.getBlocksAsArray();\n var startIndex = blocks.indexOf(startBlock);\n var endIndex = blocks.indexOf(endBlock);\n return blocks.slice(startIndex, endIndex + 1);\n }\n\n /**\n * Get all of the leaf blocks that match a `type`.\n *\n * @param {String} type\n * @return {List<Node>}\n */\n\n }, {\n key: 'getBlocksByType',\n value: function getBlocksByType(type) {\n var array = this.getBlocksByTypeAsArray(type);\n return List(array);\n }\n\n /**\n * Get all of the leaf blocks that match a `type` as an array\n *\n * @param {String} type\n * @return {Array}\n */\n\n }, {\n key: 'getBlocksByTypeAsArray',\n value: function getBlocksByTypeAsArray(type) {\n return this.nodes.reduce(function (array, node) {\n if (node.object != 'block') {\n return array;\n } else if (node.isLeafBlock() && node.type == type) {\n array.push(node);\n return array;\n } else {\n return array.concat(node.getBlocksByTypeAsArray(type));\n }\n }, []);\n }\n\n /**\n * Get a child node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getChild',\n value: function getChild(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n var child = path.size === 1 ? this.nodes.get(path.first()) : null;\n return child;\n }\n\n /**\n * Get closest parent of node that matches an `iterator`.\n *\n * @param {List|String} path\n * @param {Function} iterator\n * @return {Node|Null}\n */\n\n }, {\n key: 'getClosest',\n value: function getClosest(path, iterator) {\n var _this2 = this;\n\n var ancestors = this.getAncestors(path);\n if (!ancestors) return null;\n\n var closest = ancestors.findLast(function (node) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n // We never want to include the top-level node.\n if (node === _this2) return false;\n return iterator.apply(undefined, [node].concat(args));\n });\n\n return closest || null;\n }\n\n /**\n * Get the closest block parent of a node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getClosestBlock',\n value: function getClosestBlock(path) {\n var closest = this.getClosest(path, function (n) {\n return n.object === 'block';\n });\n return closest;\n }\n\n /**\n * Get the closest inline parent of a node by `path`.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getClosestInline',\n value: function getClosestInline(path) {\n var closest = this.getClosest(path, function (n) {\n return n.object === 'inline';\n });\n return closest;\n }\n\n /**\n * Get the closest void parent of a node by `path`.\n *\n * @param {List|String} path\n * @param {Schema} schema\n * @return {Node|Null}\n */\n\n }, {\n key: 'getClosestVoid',\n value: function getClosestVoid(path, schema) {\n var ancestors = this.getAncestors(path);\n if (!ancestors) return null;\n\n var ancestor = ancestors.findLast(function (a) {\n return schema.isVoid(a);\n });\n return ancestor;\n }\n\n /**\n * Get the common ancestor of nodes `a` and `b`.\n *\n * @param {List} a\n * @param {List} b\n * @return {Node}\n */\n\n }, {\n key: 'getCommonAncestor',\n value: function getCommonAncestor(a, b) {\n a = this.resolvePath(a);\n b = this.resolvePath(b);\n if (!a || !b) return null;\n\n var path = PathUtils.relate(a, b);\n var node = this.getNode(path);\n return node;\n }\n\n /**\n * Get the decorations for the node from a `stack`.\n *\n * @param {Stack} stack\n * @return {List}\n */\n\n }, {\n key: 'getDecorations',\n value: function getDecorations(stack) {\n var allDecorations = stack.map('decorateNode', this).map(function (decorations) {\n return Decoration.createList(decorations);\n });\n var list = List(allDecorations).flatten(true);\n return list;\n }\n\n /**\n * Get the depth of a descendant, with optional `startAt`.\n *\n * @param {List|String} path\n * @param {Number} startAt\n * @return {Number|Null}\n */\n\n }, {\n key: 'getDepth',\n value: function getDepth(path) {\n var startAt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n path = this.resolvePath(path);\n if (!path) return null;\n\n var node = this.getNode(path);\n var depth = node ? path.size - 1 + startAt : null;\n return depth;\n }\n\n /**\n * Get a descendant node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getDescendant',\n value: function getDescendant(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n\n var deep = path.flatMap(function (x) {\n return ['nodes', x];\n });\n var ret = this.getIn(deep);\n return ret;\n }\n\n /**\n * Get a fragment of the node at a `range`.\n *\n * @param {Range} range\n * @return {Document}\n */\n\n }, {\n key: 'getFragmentAtRange',\n value: function getFragmentAtRange(range) {\n range = this.resolveRange(range);\n\n if (range.isUnset) {\n return Document.create();\n }\n\n var _range4 = range,\n start = _range4.start,\n end = _range4.end;\n\n var node = this;\n var targetPath = end.path;\n var targetPosition = end.offset;\n var mode = 'end';\n\n while (targetPath.size) {\n var index = targetPath.last();\n node = node.splitNode(targetPath, targetPosition);\n targetPosition = index + 1;\n targetPath = PathUtils.lift(targetPath);\n\n if (!targetPath.size && mode === 'end') {\n targetPath = start.path;\n targetPosition = start.offset;\n mode = 'start';\n }\n }\n\n var startIndex = start.path.first() + 1;\n var endIndex = end.path.first() + 2;\n var nodes = node.nodes.slice(startIndex, endIndex);\n var fragment = Document.create({ nodes: nodes });\n return fragment;\n }\n\n /**\n * Get the furthest parent of a node that matches an `iterator`.\n *\n * @param {Path} path\n * @param {Function} iterator\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthest',\n value: function getFurthest(path, iterator) {\n var _this3 = this;\n\n var ancestors = this.getAncestors(path);\n if (!ancestors) return null;\n\n var furthest = ancestors.find(function (node) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n // We never want to include the top-level node.\n if (node === _this3) return false;\n return iterator.apply(undefined, [node].concat(args));\n });\n\n return furthest || null;\n }\n\n /**\n * Get the furthest ancestor of a node.\n *\n * @param {Path} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthestAncestor',\n value: function getFurthestAncestor(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n var furthest = path.size ? this.nodes.get(path.first()) : null;\n return furthest;\n }\n\n /**\n * Get the furthest block parent of a node.\n *\n * @param {Path} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthestBlock',\n value: function getFurthestBlock(path) {\n var furthest = this.getFurthest(path, function (n) {\n return n.object === 'block';\n });\n return furthest;\n }\n\n /**\n * Get the furthest inline parent of a node.\n *\n * @param {Path} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthestInline',\n value: function getFurthestInline(path) {\n var furthest = this.getFurthest(path, function (n) {\n return n.object === 'inline';\n });\n return furthest;\n }\n\n /**\n * Get the furthest ancestor of a node that has only one child.\n *\n * @param {Path} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthestOnlyChildAncestor',\n value: function getFurthestOnlyChildAncestor(path) {\n var ancestors = this.getAncestors(path);\n if (!ancestors) return null;\n\n var furthest = ancestors.rest().reverse().takeUntil(function (p) {\n return p.nodes.size > 1;\n }).last();\n\n return furthest || null;\n }\n\n /**\n * Get the closest inline nodes for each text node in the node.\n *\n * @return {List<Node>}\n */\n\n }, {\n key: 'getInlines',\n value: function getInlines() {\n var array = this.getInlinesAsArray();\n var list = List(array);\n return list;\n }\n\n /**\n * Get the closest inline nodes for each text node in the node, as an array.\n *\n * @return {List<Node>}\n */\n\n }, {\n key: 'getInlinesAsArray',\n value: function getInlinesAsArray() {\n var array = [];\n\n this.nodes.forEach(function (child) {\n if (child.object == 'text') return;\n\n if (child.isLeafInline()) {\n array.push(child);\n } else {\n array = array.concat(child.getInlinesAsArray());\n }\n });\n\n return array;\n }\n\n /**\n * Get the closest inline nodes for each text node in a `range`.\n *\n * @param {Range} range\n * @return {List<Node>}\n */\n\n }, {\n key: 'getInlinesAtRange',\n value: function getInlinesAtRange(range) {\n var array = this.getInlinesAtRangeAsArray(range);\n // Remove duplicates by converting it to an `OrderedSet` first.\n var list = List(OrderedSet(array));\n return list;\n }\n\n /**\n * Get the closest inline nodes for each text node in a `range` as an array.\n *\n * @param {Range} range\n * @return {Array}\n */\n\n }, {\n key: 'getInlinesAtRangeAsArray',\n value: function getInlinesAtRangeAsArray(range) {\n var _this4 = this;\n\n range = this.resolveRange(range);\n if (range.isUnset) return [];\n\n var array = this.getTextsAtRangeAsArray(range).map(function (text) {\n return _this4.getClosestInline(text.key);\n }).filter(function (exists) {\n return exists;\n });\n\n return array;\n }\n\n /**\n * Get all of the leaf inline nodes that match a `type`.\n *\n * @param {String} type\n * @return {List<Node>}\n */\n\n }, {\n key: 'getInlinesByType',\n value: function getInlinesByType(type) {\n var array = this.getInlinesByTypeAsArray(type);\n var list = List(array);\n return list;\n }\n\n /**\n * Get all of the leaf inline nodes that match a `type` as an array.\n *\n * @param {String} type\n * @return {Array}\n */\n\n }, {\n key: 'getInlinesByTypeAsArray',\n value: function getInlinesByTypeAsArray(type) {\n var array = this.nodes.reduce(function (inlines, node) {\n if (node.object == 'text') {\n return inlines;\n } else if (node.isLeafInline() && node.type == type) {\n inlines.push(node);\n return inlines;\n } else {\n return inlines.concat(node.getInlinesByTypeAsArray(type));\n }\n }, []);\n\n return array;\n }\n\n /**\n * Get a set of the marks in a `range`.\n *\n * @param {Range} range\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'getInsertMarksAtRange',\n value: function getInsertMarksAtRange(range) {\n range = this.resolveRange(range);\n var _range5 = range,\n start = _range5.start;\n\n\n if (range.isUnset) {\n return Set();\n }\n\n if (range.isCollapsed) {\n // PERF: range is not cachable, use key and offset as proxies for cache\n return this.getMarksAtPosition(start.key, start.offset);\n }\n\n var text = this.getDescendant(start.key);\n var marks = text.getMarksAtIndex(start.offset + 1);\n return marks;\n }\n\n /**\n * Get all of the marks for all of the characters of every text node.\n *\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'getMarks',\n value: function getMarks() {\n var array = this.getMarksAsArray();\n return Set(array);\n }\n\n /**\n * Get all of the marks as an array.\n *\n * @return {Array}\n */\n\n }, {\n key: 'getMarksAsArray',\n value: function getMarksAsArray() {\n var _ref;\n\n var result = [];\n\n this.nodes.forEach(function (node) {\n result.push(node.getMarksAsArray());\n });\n\n // PERF: use only one concat rather than multiple for speed.\n var array = (_ref = []).concat.apply(_ref, result);\n return array;\n }\n\n /**\n * Get a set of marks in a `position`, the equivalent of a collapsed range\n *\n * @param {string} key\n * @param {number} offset\n * @return {Set}\n */\n\n }, {\n key: 'getMarksAtPosition',\n value: function getMarksAtPosition(key, offset) {\n var text = this.getDescendant(key);\n var currentMarks = text.getMarksAtIndex(offset);\n if (offset !== 0) return currentMarks;\n var closestBlock = this.getClosestBlock(key);\n\n if (closestBlock.text === '') {\n // insert mark for empty block; the empty block are often created by split node or add marks in a range including empty blocks\n return currentMarks;\n }\n\n var previous = this.getPreviousText(key);\n if (!previous) return Set();\n\n if (closestBlock.hasDescendant(previous.key)) {\n return previous.getMarksAtIndex(previous.text.length);\n }\n\n return currentMarks;\n }\n\n /**\n * Get a set of the marks in a `range`.\n *\n * @param {Range} range\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'getMarksAtRange',\n value: function getMarksAtRange(range) {\n var marks = Set(this.getOrderedMarksAtRange(range));\n return marks;\n }\n\n /**\n * Get all of the marks that match a `type`.\n *\n * @param {String} type\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'getMarksByType',\n value: function getMarksByType(type) {\n var array = this.getMarksByTypeAsArray(type);\n return Set(array);\n }\n\n /**\n * Get all of the marks that match a `type` as an array.\n *\n * @param {String} type\n * @return {Array}\n */\n\n }, {\n key: 'getMarksByTypeAsArray',\n value: function getMarksByTypeAsArray(type) {\n var array = this.nodes.reduce(function (memo, node) {\n return node.object == 'text' ? memo.concat(node.getMarksAsArray().filter(function (m) {\n return m.type == type;\n })) : memo.concat(node.getMarksByTypeAsArray(type));\n }, []);\n\n return array;\n }\n\n /**\n * Get the block node before a descendant text node by `key`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextBlock',\n value: function getNextBlock(key) {\n var child = this.assertDescendant(key);\n var last = void 0;\n\n if (child.object == 'block') {\n last = child.getLastText();\n } else {\n var block = this.getClosestBlock(key);\n last = block.getLastText();\n }\n\n var next = this.getNextText(last.key);\n if (!next) return null;\n\n var closest = this.getClosestBlock(next.key);\n return closest;\n }\n\n /**\n * Get the next node in the tree from a node.\n *\n * This will not only check for siblings but instead move up the tree\n * returning the next ancestor if no sibling is found.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextNode',\n value: function getNextNode(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n\n for (var i = path.size; i > 0; i--) {\n var p = path.slice(0, i);\n var target = PathUtils.increment(p);\n var node = this.getNode(target);\n if (node) return node;\n }\n\n return null;\n }\n\n /**\n * Get the next sibling of a node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextSibling',\n value: function getNextSibling(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n var p = PathUtils.increment(path);\n var sibling = this.getNode(p);\n return sibling;\n }\n\n /**\n * Get the text node after a descendant text node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextText',\n value: function getNextText(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n var next = this.getNextNode(path);\n if (!next) return null;\n var text = next.getFirstText();\n return text;\n }\n\n /**\n * Get the offset for a descendant text node by `key`.\n *\n * @param {String} key\n * @return {Number}\n */\n\n }, {\n key: 'getOffset',\n value: function getOffset(key) {\n this.assertDescendant(key);\n\n // Calculate the offset of the nodes before the highest child.\n var child = this.getFurthestAncestor(key);\n var offset = this.nodes.takeUntil(function (n) {\n return n == child;\n }).reduce(function (memo, n) {\n return memo + n.text.length;\n }, 0);\n\n // Recurse if need be.\n var ret = this.hasChild(key) ? offset : offset + child.getOffset(key);\n return ret;\n }\n\n /**\n * Get the offset from a `range`.\n *\n * @param {Range} range\n * @return {Number}\n */\n\n }, {\n key: 'getOffsetAtRange',\n value: function getOffsetAtRange(range) {\n range = this.resolveRange(range);\n\n if (range.isUnset) {\n throw new Error('The range cannot be unset to calculcate its offset.');\n }\n\n if (range.isExpanded) {\n throw new Error('The range must be collapsed to calculcate its offset.');\n }\n\n var _range6 = range,\n start = _range6.start;\n\n var offset = this.getOffset(start.key) + start.offset;\n return offset;\n }\n\n /**\n * Get all of the marks for all of the characters of every text node.\n *\n * @return {OrderedSet<Mark>}\n */\n\n }, {\n key: 'getOrderedMarks',\n value: function getOrderedMarks() {\n var array = this.getMarksAsArray();\n return OrderedSet(array);\n }\n\n /**\n * Get a set of the marks in a `range`.\n *\n * @param {Range} range\n * @return {OrderedSet<Mark>}\n */\n\n }, {\n key: 'getOrderedMarksAtRange',\n value: function getOrderedMarksAtRange(range) {\n range = this.resolveRange(range);\n var _range7 = range,\n start = _range7.start,\n end = _range7.end;\n\n\n if (range.isUnset) {\n return OrderedSet();\n }\n\n if (range.isCollapsed) {\n // PERF: range is not cachable, use key and offset as proxies for cache\n return this.getMarksAtPosition(start.key, start.offset);\n }\n\n var marks = this.getOrderedMarksBetweenPositions(start.key, start.offset, end.key, end.offset);\n\n return marks;\n }\n\n /**\n * Get a set of the marks in a `range`.\n * PERF: arguments use key and offset for utilizing cache\n *\n * @param {string} startKey\n * @param {number} startOffset\n * @param {string} endKey\n * @param {number} endOffset\n * @returns {OrderedSet<Mark>}\n */\n\n }, {\n key: 'getOrderedMarksBetweenPositions',\n value: function getOrderedMarksBetweenPositions(startKey, startOffset, endKey, endOffset) {\n if (startKey === endKey) {\n var startText = this.getDescendant(startKey);\n return startText.getMarksBetweenOffsets(startOffset, endOffset);\n }\n\n var texts = this.getTextsBetweenPositionsAsArray(startKey, endKey);\n\n return OrderedSet().withMutations(function (result) {\n texts.forEach(function (text) {\n if (text.key === startKey) {\n result.union(text.getMarksBetweenOffsets(startOffset, text.text.length));\n } else if (text.key === endKey) {\n result.union(text.getMarksBetweenOffsets(0, endOffset));\n } else {\n result.union(text.getMarks());\n }\n });\n });\n }\n\n /**\n * Get all of the marks that match a `type`.\n *\n * @param {String} type\n * @return {OrderedSet<Mark>}\n */\n\n }, {\n key: 'getOrderedMarksByType',\n value: function getOrderedMarksByType(type) {\n var array = this.getMarksByTypeAsArray(type);\n return OrderedSet(array);\n }\n\n /**\n * Get the parent of a descendant node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getParent',\n value: function getParent(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n var parentPath = PathUtils.lift(path);\n var parent = this.getNode(parentPath);\n return parent;\n }\n\n /**\n * Get the block node before a descendant text node by `key`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousBlock',\n value: function getPreviousBlock(key) {\n var child = this.assertDescendant(key);\n var first = void 0;\n\n if (child.object == 'block') {\n first = child.getFirstText();\n } else {\n var block = this.getClosestBlock(key);\n first = block.getFirstText();\n }\n\n var previous = this.getPreviousText(first.key);\n if (!previous) return null;\n\n var closest = this.getClosestBlock(previous.key);\n return closest;\n }\n\n /**\n * Get the previous node from a node in the tree.\n *\n * This will not only check for siblings but instead move up the tree\n * returning the previous ancestor if no sibling is found.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousNode',\n value: function getPreviousNode(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n\n for (var i = path.size; i > 0; i--) {\n var p = path.slice(0, i);\n if (p.last() === 0) continue;\n\n var target = PathUtils.decrement(p);\n var node = this.getNode(target);\n if (node) return node;\n }\n\n return null;\n }\n\n /**\n * Get the previous sibling of a node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousSibling',\n value: function getPreviousSibling(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n if (path.last() === 0) return null;\n var p = PathUtils.decrement(path);\n var sibling = this.getNode(p);\n return sibling;\n }\n\n /**\n * Get the text node after a descendant text node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousText',\n value: function getPreviousText(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n var previous = this.getPreviousNode(path);\n if (!previous) return null;\n var text = previous.getLastText();\n return text;\n }\n\n /**\n * Get the indexes of the selection for a `range`, given an extra flag for\n * whether the node `isSelected`, to determine whether not finding matches\n * means everything is selected or nothing is.\n *\n * @param {Range} range\n * @param {Boolean} isSelected\n * @return {Object|Null}\n */\n\n }, {\n key: 'getSelectionIndexes',\n value: function getSelectionIndexes(range) {\n var isSelected = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var start = range.start,\n end = range.end;\n\n // PERF: if we're not selected, we can exit early.\n\n if (!isSelected) {\n return null;\n }\n\n // if we've been given an invalid selection we can exit early.\n if (range.isUnset) {\n return null;\n }\n\n // PERF: if the start and end keys are the same, just check for the child\n // that contains that single key.\n if (start.key == end.key) {\n var child = this.getFurthestAncestor(start.key);\n var index = child ? this.nodes.indexOf(child) : null;\n return { start: index, end: index + 1 };\n }\n\n // Otherwise, check all of the children...\n var startIndex = null;\n var endIndex = null;\n\n this.nodes.forEach(function (child, i) {\n if (child.object == 'text') {\n if (startIndex == null && child.key == start.key) startIndex = i;\n if (endIndex == null && child.key == end.key) endIndex = i + 1;\n } else {\n if (startIndex == null && child.hasDescendant(start.key)) startIndex = i;\n if (endIndex == null && child.hasDescendant(end.key)) endIndex = i + 1;\n }\n\n // PERF: exit early if both start and end have been found.\n return startIndex == null || endIndex == null;\n });\n\n if (isSelected && startIndex == null) startIndex = 0;\n if (isSelected && endIndex == null) endIndex = this.nodes.size;\n return startIndex == null ? null : { start: startIndex, end: endIndex };\n }\n\n /**\n * Get the descendent text node at an `offset`.\n *\n * @param {String} offset\n * @return {Node|Null}\n */\n\n }, {\n key: 'getTextAtOffset',\n value: function getTextAtOffset(offset) {\n // PERF: Add a few shortcuts for the obvious cases.\n if (offset === 0) return this.getFirstText();\n if (offset === this.text.length) return this.getLastText();\n if (offset < 0 || offset > this.text.length) return null;\n\n var length = 0;\n var text = this.getTexts().find(function (node, i, nodes) {\n length += node.text.length;\n return length > offset;\n });\n\n return text;\n }\n\n /**\n * Get the direction of the node's text.\n *\n * @return {String}\n */\n\n }, {\n key: 'getTextDirection',\n value: function getTextDirection() {\n var dir = direction(this.text);\n return dir === 'neutral' ? null : dir;\n }\n\n /**\n * Recursively get all of the child text nodes in order of appearance.\n *\n * @return {List<Node>}\n */\n\n }, {\n key: 'getTexts',\n value: function getTexts() {\n var array = this.getTextsAsArray();\n return List(array);\n }\n\n /**\n * Recursively get all the leaf text nodes in order of appearance, as array.\n *\n * @return {List<Node>}\n */\n\n }, {\n key: 'getTextsAsArray',\n value: function getTextsAsArray() {\n var array = [];\n\n this.nodes.forEach(function (node) {\n if (node.object == 'text') {\n array.push(node);\n } else {\n array = array.concat(node.getTextsAsArray());\n }\n });\n\n return array;\n }\n\n /**\n * Get all of the text nodes in a `range`.\n *\n * @param {Range} range\n * @return {List<Node>}\n */\n\n }, {\n key: 'getTextsAtRange',\n value: function getTextsAtRange(range) {\n range = this.resolveRange(range);\n if (range.isUnset) return List();\n var _range8 = range,\n start = _range8.start,\n end = _range8.end;\n\n var list = List(this.getTextsBetweenPositionsAsArray(start.key, end.key));\n\n return list;\n }\n\n /**\n * Get all of the text nodes in a `range` as an array.\n *\n * @param {Range} range\n * @return {Array}\n */\n\n }, {\n key: 'getTextsAtRangeAsArray',\n value: function getTextsAtRangeAsArray(range) {\n range = this.resolveRange(range);\n if (range.isUnset) return [];\n var _range9 = range,\n start = _range9.start,\n end = _range9.end;\n\n var texts = this.getTextsBetweenPositionsAsArray(start.key, end.key);\n return texts;\n }\n\n /**\n * Get all of the text nodes in a `range` as an array.\n * PERF: use key in arguments for cache\n *\n * @param {string} startKey\n * @param {string} endKey\n * @returns {Array}\n */\n\n }, {\n key: 'getTextsBetweenPositionsAsArray',\n value: function getTextsBetweenPositionsAsArray(startKey, endKey) {\n var startText = this.getDescendant(startKey);\n\n // PERF: the most common case is when the range is in a single text node,\n // where we can avoid a lot of iterating of the tree.\n if (startKey == endKey) return [startText];\n\n var endText = this.getDescendant(endKey);\n var texts = this.getTextsAsArray();\n var start = texts.indexOf(startText);\n var end = texts.indexOf(endText, start);\n var ret = texts.slice(start, end + 1);\n return ret;\n }\n\n /**\n * Check if the node has block children.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'hasBlockChildren',\n value: function hasBlockChildren() {\n return !!(this.nodes && this.nodes.find(function (n) {\n return n.object === 'block';\n }));\n }\n\n /**\n * Check if a child node exists.\n *\n * @param {List|String} path\n * @return {Boolean}\n */\n\n }, {\n key: 'hasChild',\n value: function hasChild(path) {\n var child = this.getChild(path);\n return !!child;\n }\n\n /**\n * Check if a node has inline children.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'hasInlineChildren',\n value: function hasInlineChildren() {\n return !!(this.nodes && this.nodes.find(function (n) {\n return n.object === 'inline' || n.object === 'text';\n }));\n }\n\n /**\n * Recursively check if a child node exists.\n *\n * @param {List|String} path\n * @return {Boolean}\n */\n\n }, {\n key: 'hasDescendant',\n value: function hasDescendant(path) {\n var descendant = this.getDescendant(path);\n return !!descendant;\n }\n\n /**\n * Check if a node has a void parent.\n *\n * @param {List|String} path\n * @param {Schema} schema\n * @return {Boolean}\n */\n\n }, {\n key: 'hasVoidParent',\n value: function hasVoidParent(path, schema) {\n var closest = this.getClosestVoid(path, schema);\n return !!closest;\n }\n\n /**\n * Insert a `node`.\n *\n * @param {List|String} path\n * @param {Node} node\n * @return {Node}\n */\n\n }, {\n key: 'insertNode',\n value: function insertNode(path, node) {\n path = this.resolvePath(path);\n var index = path.last();\n var parentPath = PathUtils.lift(path);\n var parent = this.assertNode(parentPath);\n var nodes = parent.nodes.splice(index, 0, node);\n parent = parent.set('nodes', nodes);\n var ret = this.replaceNode(parentPath, parent);\n return ret;\n }\n\n /**\n * Insert `text` at `offset` in node by `path`.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {String} text\n * @param {Set} marks\n * @return {Node}\n */\n\n }, {\n key: 'insertText',\n value: function insertText(path, offset, text, marks) {\n var node = this.assertDescendant(path);\n path = this.resolvePath(path);\n node = node.insertText(offset, text, marks);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n\n /**\n * Check whether the node is a leaf block.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isLeafBlock',\n value: function isLeafBlock() {\n var object = this.object,\n nodes = this.nodes;\n\n var first = nodes.first();\n return object === 'block' && first.object !== 'block';\n }\n\n /**\n * Check whether the node is a leaf inline.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isLeafInline',\n value: function isLeafInline() {\n var object = this.object,\n nodes = this.nodes;\n\n var first = nodes.first();\n return object === 'inline' && first.object !== 'inline';\n }\n\n /**\n * Map all child nodes, updating them in their parents. This method is\n * optimized to not return a new node if no changes are made.\n *\n * @param {Function} iterator\n * @return {Node}\n */\n\n }, {\n key: 'mapChildren',\n value: function mapChildren(iterator) {\n var _this5 = this;\n\n var nodes = this.nodes;\n\n\n nodes.forEach(function (node, i) {\n var ret = iterator(node, i, _this5.nodes);\n if (ret !== node) nodes = nodes.set(ret.key, ret);\n });\n\n var ret = this.set('nodes', nodes);\n return ret;\n }\n\n /**\n * Map all descendant nodes, updating them in their parents. This method is\n * optimized to not return a new node if no changes are made.\n *\n * @param {Function} iterator\n * @return {Node}\n */\n\n }, {\n key: 'mapDescendants',\n value: function mapDescendants(iterator) {\n var _this6 = this;\n\n var nodes = this.nodes;\n\n\n nodes.forEach(function (node, index) {\n var ret = node;\n if (ret.object !== 'text') ret = ret.mapDescendants(iterator);\n ret = iterator(ret, index, _this6.nodes);\n if (ret === node) return;\n\n nodes = nodes.set(index, ret);\n });\n\n var ret = this.set('nodes', nodes);\n return ret;\n }\n\n /**\n * Merge a node backwards its previous sibling.\n *\n * @param {List|Key} path\n * @return {Node}\n */\n\n }, {\n key: 'mergeNode',\n value: function mergeNode(path) {\n var b = this.assertNode(path);\n path = this.resolvePath(path);\n\n if (path.last() === 0) {\n throw new Error('Unable to merge node because it has no previous sibling: ' + b);\n }\n\n var withPath = PathUtils.decrement(path);\n var a = this.assertNode(withPath);\n\n if (a.object !== b.object) {\n throw new Error('Unable to merge two different kinds of nodes: ' + a + ' and ' + b);\n }\n\n var newNode = a.object === 'text' ? a.mergeText(b) : a.set('nodes', a.nodes.concat(b.nodes));\n\n var ret = this;\n ret = ret.removeNode(path);\n ret = ret.removeNode(withPath);\n ret = ret.insertNode(withPath, newNode);\n return ret;\n }\n\n /**\n * Move a node by `path` to `newPath`.\n *\n * A `newIndex` can be provided when move nodes by `key`, to account for not\n * being able to have a key for a location in the tree that doesn't exist yet.\n *\n * @param {List|Key} path\n * @param {List|Key} newPath\n * @param {Number} newIndex\n * @return {Node}\n */\n\n }, {\n key: 'moveNode',\n value: function moveNode(path, newPath) {\n var newIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n var node = this.assertNode(path);\n path = this.resolvePath(path);\n newPath = this.resolvePath(newPath, newIndex);\n\n var newParentPath = PathUtils.lift(newPath);\n this.assertNode(newParentPath);\n\n var _PathUtils$crop = PathUtils.crop(path, newPath),\n _PathUtils$crop2 = slicedToArray(_PathUtils$crop, 2),\n p = _PathUtils$crop2[0],\n np = _PathUtils$crop2[1];\n\n var position = PathUtils.compare(p, np);\n\n // If the old path ends above and before a node in the new path, then\n // removing it will alter the target, so we need to adjust the new path.\n if (path.size < newPath.size && position === -1) {\n newPath = PathUtils.decrement(newPath, 1, p.size - 1);\n }\n\n var ret = this;\n ret = ret.removeNode(path);\n ret = ret.insertNode(newPath, node);\n return ret;\n }\n\n /**\n * Remove mark from text at `offset` and `length` in node.\n *\n * @param {List} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @return {Node}\n */\n\n }, {\n key: 'removeMark',\n value: function removeMark(path, offset, length, mark) {\n var node = this.assertDescendant(path);\n path = this.resolvePath(path);\n node = node.removeMark(offset, length, mark);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n\n /**\n * Remove a node.\n *\n * @param {List|String} path\n * @return {Node}\n */\n\n }, {\n key: 'removeNode',\n value: function removeNode(path) {\n this.assertDescendant(path);\n path = this.resolvePath(path);\n var deep = path.flatMap(function (x) {\n return ['nodes', x];\n });\n var ret = this.deleteIn(deep);\n return ret;\n }\n\n /**\n * Remove `text` at `offset` in node.\n *\n * @param {List|Key} path\n * @param {Number} offset\n * @param {String} text\n * @return {Node}\n */\n\n }, {\n key: 'removeText',\n value: function removeText(path, offset, text) {\n var node = this.assertDescendant(path);\n node = node.removeText(offset, text.length);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n\n /**\n * Replace a `node` in the tree.\n *\n * @param {List|Key} path\n * @param {Node} node\n * @return {Node}\n */\n\n }, {\n key: 'replaceNode',\n value: function replaceNode(path, node) {\n path = this.resolvePath(path);\n\n if (!path) {\n throw new Error('Unable to replace a node because it could not be found in the first place: ' + path);\n }\n\n if (!path.size) return node;\n this.assertNode(path);\n var deep = path.flatMap(function (x) {\n return ['nodes', x];\n });\n var ret = this.setIn(deep, node);\n return ret;\n }\n\n /**\n * Resolve a `decoration`, relative to the node, ensuring that the keys and\n * offsets in the decoration exist and that they are synced with the paths.\n *\n * @param {Decoration|Object} decoration\n * @return {Decoration}\n */\n\n }, {\n key: 'resolveDecoration',\n value: function resolveDecoration(decoration) {\n decoration = Decoration.create(decoration);\n decoration = decoration.normalize(this);\n return decoration;\n }\n\n /**\n * Resolve a `point`, relative to the node, ensuring that the keys and\n * offsets in the point exist and that they are synced with the paths.\n *\n * @param {Point|Object} point\n * @return {Point}\n */\n\n }, {\n key: 'resolvePoint',\n value: function resolvePoint(point) {\n point = Point.create(point);\n point = point.normalize(this);\n return point;\n }\n\n /**\n * Resolve a `range`, relative to the node, ensuring that the keys and\n * offsets in the range exist and that they are synced with the paths.\n *\n * @param {Range|Object} range\n * @return {Range}\n */\n\n }, {\n key: 'resolveRange',\n value: function resolveRange(range) {\n range = Range.create(range);\n range = range.normalize(this);\n return range;\n }\n\n /**\n * Resolve a `selection`, relative to the node, ensuring that the keys and\n * offsets in the selection exist and that they are synced with the paths.\n *\n * @param {Selection|Object} selection\n * @return {Selection}\n */\n\n }, {\n key: 'resolveSelection',\n value: function resolveSelection(selection) {\n selection = Selection.create(selection);\n selection = selection.normalize(this);\n return selection;\n }\n\n /**\n * Set `properties` on a node.\n *\n * @param {List|String} path\n * @param {Object} properties\n * @return {Node}\n */\n\n }, {\n key: 'setNode',\n value: function setNode(path, properties) {\n var node = this.assertNode(path);\n node = node.merge(properties);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n\n /**\n * Set `properties` on `mark` on text at `offset` and `length` in node.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @param {Object} properties\n * @return {Node}\n */\n\n }, {\n key: 'setMark',\n value: function setMark(path, offset, length, mark, properties) {\n var node = this.assertNode(path);\n node = node.updateMark(offset, length, mark, properties);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n\n /**\n * Split a node by `path` at `position` with optional `properties` to apply\n * to the newly split node.\n *\n * @param {List|String} path\n * @param {Number} position\n * @param {Object} properties\n * @return {Node}\n */\n\n }, {\n key: 'splitNode',\n value: function splitNode(path, position, properties) {\n var child = this.assertNode(path);\n path = this.resolvePath(path);\n var a = void 0;\n var b = void 0;\n\n if (child.object === 'text') {\n \n var _child$splitText = child.splitText(position);\n\n var _child$splitText2 = slicedToArray(_child$splitText, 2);\n\n a = _child$splitText2[0];\n b = _child$splitText2[1];\n } else {\n var befores = child.nodes.take(position);\n var afters = child.nodes.skip(position);\n a = child.set('nodes', befores);\n b = child.set('nodes', afters).regenerateKey();\n }\n\n if (properties && child.object !== 'text') {\n b = b.merge(properties);\n }\n\n var ret = this;\n ret = ret.removeNode(path);\n ret = ret.insertNode(path, b);\n ret = ret.insertNode(path, a);\n return ret;\n }\n }]);\n return ElementInterface;\n}();\n\n/**\n * Mix in assertion variants.\n */\n\nvar ASSERTS = ['Child', 'Depth', 'Descendant', 'Node', 'Parent', 'Path'];\n\nvar _loop$1 = function _loop(method) {\n ElementInterface.prototype['assert' + method] = function (path) {\n for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n var ret = this['get' + method].apply(this, [path].concat(args));\n\n if (ret == null) {\n throw new Error('`Node.assert' + method + '` could not find node with path or key: ' + path);\n }\n\n return ret;\n };\n};\n\nvar _iteratorNormalCompletion$1 = true;\nvar _didIteratorError$1 = false;\nvar _iteratorError$1 = undefined;\n\ntry {\n for (var _iterator$1 = ASSERTS[Symbol.iterator](), _step$1; !(_iteratorNormalCompletion$1 = (_step$1 = _iterator$1.next()).done); _iteratorNormalCompletion$1 = true) {\n var method$1 = _step$1.value;\n\n _loop$1(method$1);\n }\n\n /**\n * Memoize read methods.\n */\n} catch (err) {\n _didIteratorError$1 = true;\n _iteratorError$1 = err;\n} finally {\n try {\n if (!_iteratorNormalCompletion$1 && _iterator$1.return) {\n _iterator$1.return();\n }\n } finally {\n if (_didIteratorError$1) {\n throw _iteratorError$1;\n }\n }\n}\n\nmemoize(ElementInterface.prototype, ['getBlocksAsArray', 'getBlocksAtRangeAsArray', 'getBlocksByTypeAsArray', 'getDecorations', 'getFragmentAtRange', 'getInlinesAsArray', 'getInlinesAtRangeAsArray', 'getInlinesByTypeAsArray', 'getMarksAsArray', 'getMarksAtPosition', 'getOrderedMarksBetweenPositions', 'getInsertMarksAtRange', 'getMarksByTypeAsArray', 'getNextBlock', 'getOffset', 'getOffsetAtRange', 'getPreviousBlock', 'getTextAtOffset', 'getTextDirection', 'getTextsAsArray', 'getTextsBetweenPositionsAsArray']);\n\n/**\n * Mix in the element interface.\n */\n\nmixin(ElementInterface, [Block, Document, Inline]);\n\n/**\n * The interface that `Decoration`, `Range` and `Selection` all implement, to make\n * working anchor and focus points easier.\n *\n * @type {Class}\n */\n\nvar RangeInterface = function () {\n function RangeInterface() {\n classCallCheck(this, RangeInterface);\n }\n\n createClass(RangeInterface, [{\n key: 'flip',\n\n\n /**\n * Flip the range.\n *\n * @return {Range}\n */\n\n value: function flip() {\n var range = this.setPoints([this.focus, this.anchor]);\n return range;\n }\n\n /**\n * Move the anchor and focus offsets forward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveForward',\n value: function moveForward(n) {\n return this.updatePoints(function (point) {\n return point.moveForward(n);\n });\n }\n\n /**\n * Move the anchor and focus offsets backward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveBackward',\n value: function moveBackward(n) {\n return this.updatePoints(function (point) {\n return point.moveBackward(n);\n });\n }\n\n /**\n * Move the anchor offset backward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorBackward',\n value: function moveAnchorBackward(n) {\n var range = this.setAnchor(this.anchor.moveBackward(n));\n return range;\n }\n\n /**\n * Move the anchor offset forward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorForward',\n value: function moveAnchorForward(n) {\n var range = this.setAnchor(this.anchor.moveForward(n));\n return range;\n }\n\n /**\n * Move the range's anchor point to a new `path` and `offset`.\n *\n * Optionally, the `path` can be a key string, or omitted entirely in which\n * case it would be the offset number.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorTo',\n value: function moveAnchorTo(path, offset) {\n var range = this.setAnchor(this.anchor.moveTo(path, offset));\n return range;\n }\n\n /**\n * Move the range's anchor point to the start of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorToStartOfNode',\n value: function moveAnchorToStartOfNode(node) {\n var range = this.setAnchor(this.anchor.moveToStartOfNode(node));\n return range;\n }\n\n /**\n * Move the range's anchor point to the end of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorToEndOfNode',\n value: function moveAnchorToEndOfNode(node) {\n var range = this.setAnchor(this.anchor.moveToEndOfNode(node));\n return range;\n }\n\n /**\n * Move the end offset backward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveEndBackward',\n value: function moveEndBackward(n) {\n var range = this.setEnd(this.end.moveBackward(n));\n return range;\n }\n\n /**\n * Move the end offset forward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveEndForward',\n value: function moveEndForward(n) {\n var range = this.setEnd(this.end.moveForward(n));\n return range;\n }\n\n /**\n * Move the range's end point to a new `path` and `offset`.\n *\n * Optionally, the `path` can be a key string, or omitted entirely in which\n * case it would be the offset number.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @return {Range}\n */\n\n }, {\n key: 'moveEndTo',\n value: function moveEndTo(path, offset) {\n var range = this.setEnd(this.end.moveTo(path, offset));\n return range;\n }\n\n /**\n * Move the range's end point to the start of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveEndToStartOfNode',\n value: function moveEndToStartOfNode(node) {\n var range = this.setEnd(this.end.moveToStartOfNode(node));\n return range;\n }\n\n /**\n * Move the range's end point to the end of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveEndToEndOfNode',\n value: function moveEndToEndOfNode(node) {\n var range = this.setEnd(this.end.moveToEndOfNode(node));\n return range;\n }\n\n /**\n * Move the focus offset backward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusBackward',\n value: function moveFocusBackward(n) {\n var range = this.setFocus(this.focus.moveBackward(n));\n return range;\n }\n\n /**\n * Move the focus offset forward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusForward',\n value: function moveFocusForward(n) {\n var range = this.setFocus(this.focus.moveForward(n));\n return range;\n }\n\n /**\n * Move the range's focus point to a new `path` and `offset`.\n *\n * Optionally, the `path` can be a key string, or omitted entirely in which\n * case it would be the offset number.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusTo',\n value: function moveFocusTo(path, offset) {\n var range = this.setFocus(this.focus.moveTo(path, offset));\n return range;\n }\n\n /**\n * Move the range's focus point to the start of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusToStartOfNode',\n value: function moveFocusToStartOfNode(node) {\n var range = this.setFocus(this.focus.moveToStartOfNode(node));\n return range;\n }\n\n /**\n * Move the range's focus point to the end of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusToEndOfNode',\n value: function moveFocusToEndOfNode(node) {\n var range = this.setFocus(this.focus.moveToEndOfNode(node));\n return range;\n }\n\n /**\n * Move the start offset backward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveStartBackward',\n value: function moveStartBackward(n) {\n var range = this.setStart(this.start.moveBackward(n));\n return range;\n }\n\n /**\n * Move the start offset forward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveStartForward',\n value: function moveStartForward(n) {\n var range = this.setStart(this.start.moveForward(n));\n return range;\n }\n\n /**\n * Move the range's start point to a new `path` and `offset`.\n *\n * Optionally, the `path` can be a key string, or omitted entirely in which\n * case it would be the offset number.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @return {Range}\n */\n\n }, {\n key: 'moveStartTo',\n value: function moveStartTo(path, offset) {\n var range = this.setStart(this.start.moveTo(path, offset));\n return range;\n }\n\n /**\n * Move the range's start point to the start of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveStartToStartOfNode',\n value: function moveStartToStartOfNode(node) {\n var range = this.setStart(this.start.moveToStartOfNode(node));\n return range;\n }\n\n /**\n * Move the range's start point to the end of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveStartToEndOfNode',\n value: function moveStartToEndOfNode(node) {\n var range = this.setStart(this.start.moveToEndOfNode(node));\n return range;\n }\n\n /**\n * Move range's points to a new `path` and `offset`.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveTo',\n value: function moveTo(path, offset) {\n return this.updatePoints(function (point) {\n return point.moveTo(path, offset);\n });\n }\n\n /**\n * Move the focus point to the anchor point.\n *\n * @return {Range}\n */\n\n }, {\n key: 'moveToAnchor',\n value: function moveToAnchor() {\n var range = this.setFocus(this.anchor);\n return range;\n }\n\n /**\n * Move the start point to the end point.\n *\n * @return {Range}\n */\n\n }, {\n key: 'moveToEnd',\n value: function moveToEnd() {\n var range = this.setStart(this.end);\n return range;\n }\n\n /**\n * Move the range's points to the end of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveToEndOfNode',\n value: function moveToEndOfNode(node) {\n return this.updatePoints(function (point) {\n return point.moveToEndOfNode(node);\n });\n }\n\n /**\n * Move the anchor point to the focus point.\n *\n * @return {Range}\n */\n\n }, {\n key: 'moveToFocus',\n value: function moveToFocus() {\n var range = this.setAnchor(this.focus);\n return range;\n }\n\n /**\n * Move to the entire range of `start` and `end` nodes.\n *\n * @param {Node} start\n * @param {Node} end (optional)\n * @return {Range}\n */\n\n }, {\n key: 'moveToRangeOfNode',\n value: function moveToRangeOfNode(start) {\n var end = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : start;\n\n var range = this.setPoints([this.anchor.moveToStartOfNode(start), this.focus.moveToEndOfNode(end)]);\n\n return range;\n }\n\n /**\n * Move the end point to the start point.\n *\n * @return {Range}\n */\n\n }, {\n key: 'moveToStart',\n value: function moveToStart() {\n var range = this.setEnd(this.start);\n return range;\n }\n\n /**\n * Move the range's points to the start of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveToStartOfNode',\n value: function moveToStartOfNode(node) {\n return this.updatePoints(function (point) {\n return point.moveToStartOfNode(node);\n });\n }\n\n /**\n * Normalize the range, relative to a `node`, ensuring that the anchor\n * and focus nodes of the range always refer to leaf text nodes.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'normalize',\n value: function normalize(node) {\n return this.updatePoints(function (point) {\n return point.normalize(node);\n });\n }\n\n /**\n * Set the anchor point to a new `anchor`.\n *\n * @param {Point} anchor\n * @return {Range}\n */\n\n }, {\n key: 'setAnchor',\n value: function setAnchor(anchor) {\n var range = this.set('anchor', anchor);\n return range;\n }\n\n /**\n * Set the end point to a new `point`.\n *\n * @param {Point} point\n * @return {Range}\n */\n\n }, {\n key: 'setEnd',\n value: function setEnd(point) {\n var range = this.isBackward ? this.setAnchor(point) : this.setFocus(point);\n return range;\n }\n\n /**\n * Set the focus point to a new `focus`.\n *\n * @param {Point} focus\n * @return {Range}\n */\n\n }, {\n key: 'setFocus',\n value: function setFocus(focus) {\n var range = this.set('focus', focus);\n return range;\n }\n\n /**\n * Set the anchor and focus points to new `values`.\n *\n * @param {Array<Point>} values\n * @return {Range}\n */\n\n }, {\n key: 'setPoints',\n value: function setPoints(values) {\n var _values = slicedToArray(values, 2),\n anchor = _values[0],\n focus = _values[1];\n\n var range = this.set('anchor', anchor).set('focus', focus);\n return range;\n }\n\n /**\n * Set the anchor and focus points with `updater` callback\n *\n * @param {Function} updater\n * @return {Range}\n */\n\n }, {\n key: 'updatePoints',\n value: function updatePoints(updater) {\n var anchor = this.anchor,\n focus = this.focus;\n\n anchor = updater(anchor);\n focus = updater(focus);\n return this.merge({ anchor: anchor, focus: focus });\n }\n\n /**\n * Set the start point to a new `point`.\n *\n * @param {Point} point\n * @return {Range}\n */\n\n }, {\n key: 'setStart',\n value: function setStart(point) {\n var range = this.isBackward ? this.setFocus(point) : this.setAnchor(point);\n return range;\n }\n\n /**\n * Set new `properties` on the range.\n *\n * @param {Object|Range} properties\n * @return {Range}\n */\n\n }, {\n key: 'setProperties',\n value: function setProperties(properties) {\n properties = Range.createProperties(properties);\n var _properties = properties,\n anchor = _properties.anchor,\n focus = _properties.focus,\n props = objectWithoutProperties(_properties, ['anchor', 'focus']);\n\n\n if (anchor) {\n props.anchor = Point.create(anchor);\n }\n\n if (focus) {\n props.focus = Point.create(focus);\n }\n\n var range = this.merge(props);\n return range;\n }\n\n /**\n * Return a JSON representation of the range.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n anchor: this.anchor.toJSON(options),\n focus: this.focus.toJSON(options)\n };\n\n return object;\n }\n\n /**\n * Return a `Range` instance from any range-like instance.\n *\n * @return {Range}\n */\n\n }, {\n key: 'toRange',\n value: function toRange() {\n var properties = Range.createProperties(this);\n var range = Range.create(properties);\n return range;\n }\n\n /**\n * Unset the range.\n *\n * @return {Range}\n */\n\n }, {\n key: 'unset',\n value: function unset() {\n var range = this.updatePoints(function (p) {\n return p.unset();\n });\n return range;\n }\n }, {\n key: 'isCollapsed',\n\n /**\n * Check whether the range is collapsed.\n *\n * @return {Boolean}\n */\n\n get: function get$$1() {\n return this.anchor === this.focus || this.anchor.key === this.focus.key && this.anchor.offset === this.focus.offset;\n }\n\n /**\n * Check whether the range is expanded.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isExpanded',\n get: function get$$1() {\n return !this.isCollapsed;\n }\n\n /**\n * Check whether the range is backward.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isBackward',\n get: function get$$1() {\n var isUnset = this.isUnset,\n anchor = this.anchor,\n focus = this.focus;\n\n\n if (isUnset) {\n return null;\n }\n\n if (anchor.key === focus.key) {\n return anchor.offset > focus.offset;\n }\n\n var isBackward = PathUtils.isBefore(focus.path, anchor.path);\n return isBackward;\n }\n\n /**\n * Check whether the range is forward.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isForward',\n get: function get$$1() {\n var isBackward = this.isBackward;\n\n var isForward = isBackward == null ? null : !isBackward;\n return isForward;\n }\n\n /**\n * Check whether the range isn't set.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isUnset',\n get: function get$$1() {\n var anchor = this.anchor,\n focus = this.focus;\n\n var isUnset = anchor.isUnset || focus.isUnset;\n return isUnset;\n }\n\n /**\n * Check whether the range is set.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isSet',\n get: function get$$1() {\n return !this.isUnset;\n }\n\n /**\n * Get the start point.\n *\n * @return {String}\n */\n\n }, {\n key: 'start',\n get: function get$$1() {\n return this.isBackward ? this.focus : this.anchor;\n }\n\n /**\n * Get the end point.\n *\n * @return {String}\n */\n\n }, {\n key: 'end',\n get: function get$$1() {\n return this.isBackward ? this.anchor : this.focus;\n }\n }]);\n return RangeInterface;\n}();\n\n/**\n * Mix in the range interface.\n *\n * @param {Record}\n */\n\nmixin(RangeInterface, [Decoration, Range, Selection]);\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar Operations = {\n apply: applyOperation,\n invert: invertOperation\n};\n\nvar index = {\n Block: Block,\n Changes: Changes$6,\n Data: Data,\n Decoration: Decoration,\n Document: Document,\n History: History,\n Inline: Inline,\n KeyUtils: KeyUtils,\n Leaf: Leaf,\n Mark: Mark,\n Node: Node,\n Operation: Operation,\n Operations: Operations,\n PathUtils: PathUtils,\n Point: Point,\n Range: Range,\n resetMemoization: resetMemoization,\n Schema: Schema,\n Selection: Selection,\n Stack: Stack$1,\n Text: Text,\n TextUtils: TextUtils,\n useMemoization: useMemoization,\n Value: Value\n};\n\nexport default index;\nexport { Block, Change, Changes$6 as Changes, Data, Decoration, Document, History, Inline, KeyUtils, Leaf, Mark, Node, Operation, Operations, PathUtils, Point, Range, resetMemoization, Schema, Selection, Stack$1 as Stack, Text, TextUtils, useMemoization, Value };\n//# sourceMappingURL=slate.es.js.map\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nexports.default = AccessibleButton;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _Keyboard = require('../../../Keyboard');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * AccessibleButton is a generic wrapper for any element that should be treated\n * as a button. Identifies the element as a button, setting proper tab\n * indexing and keyboard activation behavior.\n *\n * @param {Object} props react element properties\n * @returns {Object} rendered react\n */\nfunction AccessibleButton(props) {\n var element = props.element,\n onClick = props.onClick,\n children = props.children,\n restProps = (0, _objectWithoutProperties3.default)(props, ['element', 'onClick', 'children']);\n\n restProps.onClick = onClick;\n // We need to consume enter onKeyDown and space onKeyUp\n // otherwise we are risking also activating other keyboard focusable elements\n // that might receive focus as a result of the AccessibleButtonClick action\n // It's because we are using html buttons at a few places e.g. inside dialogs\n // And divs which we report as role button to assistive technologies.\n // Browsers handle space and enter keypresses differently and we are only adjusting to the\n // inconsistencies here\n restProps.onKeyDown = function (e) {\n if (e.keyCode === _Keyboard.KeyCode.ENTER) {\n e.stopPropagation();\n e.preventDefault();\n return onClick(e);\n }\n if (e.keyCode === _Keyboard.KeyCode.SPACE) {\n e.stopPropagation();\n e.preventDefault();\n }\n };\n restProps.onKeyUp = function (e) {\n if (e.keyCode === _Keyboard.KeyCode.SPACE) {\n e.stopPropagation();\n e.preventDefault();\n return onClick(e);\n }\n if (e.keyCode === _Keyboard.KeyCode.ENTER) {\n e.stopPropagation();\n e.preventDefault();\n }\n };\n restProps.tabIndex = restProps.tabIndex || \"0\";\n restProps.role = \"button\";\n restProps.className = (restProps.className ? restProps.className + \" \" : \"\") + \"mx_AccessibleButton\";\n return _react2.default.createElement(element, restProps, children);\n}\n\n/**\n * children: React's magic prop. Represents all children given to the element.\n * element: (optional) The base element type. \"div\" by default.\n * onClick: (required) Event handler for button activation. Should be\n * implemented exactly like a normal onClick handler.\n */\n/*\n Copyright 2016 Jani Mustonen\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nAccessibleButton.propTypes = {\n children: _propTypes2.default.node,\n element: _propTypes2.default.string,\n onClick: _propTypes2.default.func.isRequired\n};\n\nAccessibleButton.defaultProps = {\n element: 'div'\n};\n\nAccessibleButton.displayName = \"AccessibleButton\";\nmodule.exports = exports['default'];\n//# sourceMappingURL=AccessibleButton.js.map","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * This is an internal module.\n * @module utils\n */\n\nvar _create = require(\"babel-runtime/core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar unhomoglyph = require('unhomoglyph');\n\n/**\n * Encode a dictionary of query parameters.\n * @param {Object} params A dict of key/values to encode e.g.\n * {\"foo\": \"bar\", \"baz\": \"taz\"}\n * @return {string} The encoded string e.g. foo=bar&baz=taz\n */\nmodule.exports.encodeParams = function (params) {\n var qs = \"\";\n for (var key in params) {\n if (!params.hasOwnProperty(key)) {\n continue;\n }\n qs += \"&\" + encodeURIComponent(key) + \"=\" + encodeURIComponent(params[key]);\n }\n return qs.substring(1);\n};\n\n/**\n * Encodes a URI according to a set of template variables. Variables will be\n * passed through encodeURIComponent.\n * @param {string} pathTemplate The path with template variables e.g. '/foo/$bar'.\n * @param {Object} variables The key/value pairs to replace the template\n * variables with. E.g. { \"$bar\": \"baz\" }.\n * @return {string} The result of replacing all template variables e.g. '/foo/baz'.\n */\nmodule.exports.encodeUri = function (pathTemplate, variables) {\n for (var key in variables) {\n if (!variables.hasOwnProperty(key)) {\n continue;\n }\n pathTemplate = pathTemplate.replace(key, encodeURIComponent(variables[key]));\n }\n return pathTemplate;\n};\n\n/**\n * Applies a map function to the given array.\n * @param {Array} array The array to apply the function to.\n * @param {Function} fn The function that will be invoked for each element in\n * the array with the signature <code>fn(element){...}</code>\n * @return {Array} A new array with the results of the function.\n */\nmodule.exports.map = function (array, fn) {\n var results = new Array(array.length);\n for (var i = 0; i < array.length; i++) {\n results[i] = fn(array[i]);\n }\n return results;\n};\n\n/**\n * Applies a filter function to the given array.\n * @param {Array} array The array to apply the function to.\n * @param {Function} fn The function that will be invoked for each element in\n * the array. It should return true to keep the element. The function signature\n * looks like <code>fn(element, index, array){...}</code>.\n * @return {Array} A new array with the results of the function.\n */\nmodule.exports.filter = function (array, fn) {\n var results = [];\n for (var i = 0; i < array.length; i++) {\n if (fn(array[i], i, array)) {\n results.push(array[i]);\n }\n }\n return results;\n};\n\n/**\n * Get the keys for an object. Same as <code>Object.keys()</code>.\n * @param {Object} obj The object to get the keys for.\n * @return {string[]} The keys of the object.\n */\nmodule.exports.keys = function (obj) {\n var keys = [];\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n keys.push(key);\n }\n return keys;\n};\n\n/**\n * Get the values for an object.\n * @param {Object} obj The object to get the values for.\n * @return {Array<*>} The values of the object.\n */\nmodule.exports.values = function (obj) {\n var values = [];\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n values.push(obj[key]);\n }\n return values;\n};\n\n/**\n * Invoke a function for each item in the array.\n * @param {Array} array The array.\n * @param {Function} fn The function to invoke for each element. Has the\n * function signature <code>fn(element, index)</code>.\n */\nmodule.exports.forEach = function (array, fn) {\n for (var i = 0; i < array.length; i++) {\n fn(array[i], i);\n }\n};\n\n/**\n * The findElement() method returns a value in the array, if an element in the array\n * satisfies (returns true) the provided testing function. Otherwise undefined\n * is returned.\n * @param {Array} array The array.\n * @param {Function} fn Function to execute on each value in the array, with the\n * function signature <code>fn(element, index, array)</code>\n * @param {boolean} reverse True to search in reverse order.\n * @return {*} The first value in the array which returns <code>true</code> for\n * the given function.\n */\nmodule.exports.findElement = function (array, fn, reverse) {\n var i = void 0;\n if (reverse) {\n for (i = array.length - 1; i >= 0; i--) {\n if (fn(array[i], i, array)) {\n return array[i];\n }\n }\n } else {\n for (i = 0; i < array.length; i++) {\n if (fn(array[i], i, array)) {\n return array[i];\n }\n }\n }\n};\n\n/**\n * The removeElement() method removes the first element in the array that\n * satisfies (returns true) the provided testing function.\n * @param {Array} array The array.\n * @param {Function} fn Function to execute on each value in the array, with the\n * function signature <code>fn(element, index, array)</code>. Return true to\n * remove this element and break.\n * @param {boolean} reverse True to search in reverse order.\n * @return {boolean} True if an element was removed.\n */\nmodule.exports.removeElement = function (array, fn, reverse) {\n var i = void 0;\n var removed = void 0;\n if (reverse) {\n for (i = array.length - 1; i >= 0; i--) {\n if (fn(array[i], i, array)) {\n removed = array[i];\n array.splice(i, 1);\n return removed;\n }\n }\n } else {\n for (i = 0; i < array.length; i++) {\n if (fn(array[i], i, array)) {\n removed = array[i];\n array.splice(i, 1);\n return removed;\n }\n }\n }\n return false;\n};\n\n/**\n * Checks if the given thing is a function.\n * @param {*} value The thing to check.\n * @return {boolean} True if it is a function.\n */\nmodule.exports.isFunction = function (value) {\n return Object.prototype.toString.call(value) == \"[object Function]\";\n};\n\n/**\n * Checks if the given thing is an array.\n * @param {*} value The thing to check.\n * @return {boolean} True if it is an array.\n */\nmodule.exports.isArray = function (value) {\n return Array.isArray ? Array.isArray(value) : Boolean(value && value.constructor === Array);\n};\n\n/**\n * Checks that the given object has the specified keys.\n * @param {Object} obj The object to check.\n * @param {string[]} keys The list of keys that 'obj' must have.\n * @throws If the object is missing keys.\n */\nmodule.exports.checkObjectHasKeys = function (obj, keys) {\n for (var i = 0; i < keys.length; i++) {\n if (!obj.hasOwnProperty(keys[i])) {\n throw new Error(\"Missing required key: \" + keys[i]);\n }\n }\n};\n\n/**\n * Checks that the given object has no extra keys other than the specified ones.\n * @param {Object} obj The object to check.\n * @param {string[]} allowedKeys The list of allowed key names.\n * @throws If there are extra keys.\n */\nmodule.exports.checkObjectHasNoAdditionalKeys = function (obj, allowedKeys) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n if (allowedKeys.indexOf(key) === -1) {\n throw new Error(\"Unknown key: \" + key);\n }\n }\n};\n\n/**\n * Deep copy the given object. The object MUST NOT have circular references and\n * MUST NOT have functions.\n * @param {Object} obj The object to deep copy.\n * @return {Object} A copy of the object without any references to the original.\n */\nmodule.exports.deepCopy = function (obj) {\n return JSON.parse((0, _stringify2.default)(obj));\n};\n\n/**\n * Compare two objects for equality. The objects MUST NOT have circular references.\n *\n * @param {Object} x The first object to compare.\n * @param {Object} y The second object to compare.\n *\n * @return {boolean} true if the two objects are equal\n */\nvar deepCompare = module.exports.deepCompare = function (x, y) {\n // Inspired by\n // http://stackoverflow.com/questions/1068834/object-comparison-in-javascript#1144249\n\n // Compare primitives and functions.\n // Also check if both arguments link to the same object.\n if (x === y) {\n return true;\n }\n\n if ((typeof x === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(x)) !== (typeof y === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(y))) {\n return false;\n }\n\n // special-case NaN (since NaN !== NaN)\n if (typeof x === 'number' && isNaN(x) && isNaN(y)) {\n return true;\n }\n\n // special-case null (since typeof null == 'object', but null.constructor\n // throws)\n if (x === null || y === null) {\n return x === y;\n }\n\n // everything else is either an unequal primitive, or an object\n if (!(x instanceof Object)) {\n return false;\n }\n\n // check they are the same type of object\n if (x.constructor !== y.constructor || x.prototype !== y.prototype) {\n return false;\n }\n\n // special-casing for some special types of object\n if (x instanceof RegExp || x instanceof Date) {\n return x.toString() === y.toString();\n }\n\n // the object algorithm works for Array, but it's sub-optimal.\n if (x instanceof Array) {\n if (x.length !== y.length) {\n return false;\n }\n\n for (var i = 0; i < x.length; i++) {\n if (!deepCompare(x[i], y[i])) {\n return false;\n }\n }\n } else {\n // disable jshint \"The body of a for in should be wrapped in an if\n // statement\"\n /* jshint -W089 */\n\n // check that all of y's direct keys are in x\n var p = void 0;\n for (p in y) {\n if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {\n return false;\n }\n }\n\n // finally, compare each of x's keys with y\n for (p in y) {\n // eslint-disable-line guard-for-in\n if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {\n return false;\n }\n if (!deepCompare(x[p], y[p])) {\n return false;\n }\n }\n }\n /* jshint +W089 */\n return true;\n};\n\n/**\n * Copy properties from one object to another.\n *\n * All enumerable properties, included inherited ones, are copied.\n *\n * This is approximately equivalent to ES6's Object.assign, except\n * that the latter doesn't copy inherited properties.\n *\n * @param {Object} target The object that will receive new properties\n * @param {...Object} source Objects from which to copy properties\n *\n * @return {Object} target\n */\nmodule.exports.extend = function () {\n var target = arguments[0] || {};\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var propName in source) {\n // eslint-disable-line guard-for-in\n target[propName] = source[propName];\n }\n }\n return target;\n};\n\n/**\n * Run polyfills to add Array.map and Array.filter if they are missing.\n */\nmodule.exports.runPolyfills = function () {\n // Array.prototype.filter\n // ========================================================\n // SOURCE:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter\n if (!Array.prototype.filter) {\n Array.prototype.filter = function (fun /*, thisArg*/) {\n if (this === void 0 || this === null) {\n throw new TypeError();\n }\n\n var t = Object(this);\n var len = t.length >>> 0;\n if (typeof fun !== 'function') {\n throw new TypeError();\n }\n\n var res = [];\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n for (var i = 0; i < len; i++) {\n if (i in t) {\n var val = t[i];\n\n // NOTE: Technically this should Object.defineProperty at\n // the next index, as push can be affected by\n // properties on Object.prototype and Array.prototype.\n // But that method's new, and collisions should be\n // rare, so use the more-compatible alternative.\n if (fun.call(thisArg, val, i, t)) {\n res.push(val);\n }\n }\n }\n\n return res;\n };\n }\n\n // Array.prototype.map\n // ========================================================\n // SOURCE:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map\n // Production steps of ECMA-262, Edition 5, 15.4.4.19\n // Reference: http://es5.github.io/#x15.4.4.19\n if (!Array.prototype.map) {\n Array.prototype.map = function (callback, thisArg) {\n var T = void 0,\n k = void 0;\n\n if (this === null || this === undefined) {\n throw new TypeError(' this is null or not defined');\n }\n\n // 1. Let O be the result of calling ToObject passing the |this|\n // value as the argument.\n var O = Object(this);\n\n // 2. Let lenValue be the result of calling the Get internal\n // method of O with the argument \"length\".\n // 3. Let len be ToUint32(lenValue).\n var len = O.length >>> 0;\n\n // 4. If IsCallable(callback) is false, throw a TypeError exception.\n // See: http://es5.github.com/#x9.11\n if (typeof callback !== 'function') {\n throw new TypeError(callback + ' is not a function');\n }\n\n // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.\n if (arguments.length > 1) {\n T = thisArg;\n }\n\n // 6. Let A be a new array created as if by the expression new Array(len)\n // where Array is the standard built-in constructor with that name and\n // len is the value of len.\n var A = new Array(len);\n\n // 7. Let k be 0\n k = 0;\n\n // 8. Repeat, while k < len\n while (k < len) {\n var kValue, mappedValue;\n\n // a. Let Pk be ToString(k).\n // This is implicit for LHS operands of the in operator\n // b. Let kPresent be the result of calling the HasProperty internal\n // method of O with argument Pk.\n // This step can be combined with c\n // c. If kPresent is true, then\n if (k in O) {\n // i. Let kValue be the result of calling the Get internal\n // method of O with argument Pk.\n kValue = O[k];\n\n // ii. Let mappedValue be the result of calling the Call internal\n // method of callback with T as the this value and argument\n // list containing kValue, k, and O.\n mappedValue = callback.call(T, kValue, k, O);\n\n // iii. Call the DefineOwnProperty internal method of A with arguments\n // Pk, Property Descriptor\n // { Value: mappedValue,\n // Writable: true,\n // Enumerable: true,\n // Configurable: true },\n // and false.\n\n // In browsers that support Object.defineProperty, use the following:\n // Object.defineProperty(A, k, {\n // value: mappedValue,\n // writable: true,\n // enumerable: true,\n // configurable: true\n // });\n\n // For best browser support, use the following:\n A[k] = mappedValue;\n }\n // d. Increase k by 1.\n k++;\n }\n\n // 9. return A\n return A;\n };\n }\n\n // Array.prototype.forEach\n // ========================================================\n // SOURCE:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach\n // Production steps of ECMA-262, Edition 5, 15.4.4.18\n // Reference: http://es5.github.io/#x15.4.4.18\n if (!Array.prototype.forEach) {\n Array.prototype.forEach = function (callback, thisArg) {\n var T = void 0,\n k = void 0;\n\n if (this === null || this === undefined) {\n throw new TypeError(' this is null or not defined');\n }\n\n // 1. Let O be the result of calling ToObject passing the |this| value as the\n // argument.\n var O = Object(this);\n\n // 2. Let lenValue be the result of calling the Get internal method of O with the\n // argument \"length\".\n // 3. Let len be ToUint32(lenValue).\n var len = O.length >>> 0;\n\n // 4. If IsCallable(callback) is false, throw a TypeError exception.\n // See: http://es5.github.com/#x9.11\n if (typeof callback !== \"function\") {\n throw new TypeError(callback + ' is not a function');\n }\n\n // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.\n if (arguments.length > 1) {\n T = thisArg;\n }\n\n // 6. Let k be 0\n k = 0;\n\n // 7. Repeat, while k < len\n while (k < len) {\n var kValue;\n\n // a. Let Pk be ToString(k).\n // This is implicit for LHS operands of the in operator\n // b. Let kPresent be the result of calling the HasProperty internal\n // method of O with\n // argument Pk.\n // This step can be combined with c\n // c. If kPresent is true, then\n if (k in O) {\n // i. Let kValue be the result of calling the Get internal method of O with\n // argument Pk\n kValue = O[k];\n\n // ii. Call the Call internal method of callback with T as the this value and\n // argument list containing kValue, k, and O.\n callback.call(T, kValue, k, O);\n }\n // d. Increase k by 1.\n k++;\n }\n // 8. return undefined\n };\n }\n};\n\n/**\n * Inherit the prototype methods from one constructor into another. This is a\n * port of the Node.js implementation with an Object.create polyfill.\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nmodule.exports.inherits = function (ctor, superCtor) {\n // Add Object.create polyfill for IE8\n // Source:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript\n // /Reference/Global_Objects/Object/create#Polyfill\n if (typeof _create2.default != 'function') {\n // Production steps of ECMA-262, Edition 5, 15.2.3.5\n // Reference: http://es5.github.io/#x15.2.3.5\n Object.create = function () {\n // To save on memory, use a shared constructor\n function Temp() {}\n\n // make a safe reference to Object.prototype.hasOwnProperty\n var hasOwn = Object.prototype.hasOwnProperty;\n\n return function (O) {\n // 1. If Type(O) is not Object or Null throw a TypeError exception.\n if ((typeof O === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(O)) != 'object') {\n throw new TypeError('Object prototype may only be an Object or null');\n }\n\n // 2. Let obj be the result of creating a new object as if by the\n // expression new Object() where Object is the standard built-in\n // constructor with that name\n // 3. Set the [[Prototype]] internal property of obj to O.\n Temp.prototype = O;\n var obj = new Temp();\n Temp.prototype = null; // Let's not keep a stray reference to O...\n\n // 4. If the argument Properties is present and not undefined, add\n // own properties to obj as if by calling the standard built-in\n // function Object.defineProperties with arguments obj and\n // Properties.\n if (arguments.length > 1) {\n // Object.defineProperties does ToObject on its first argument.\n var Properties = Object(arguments[1]);\n for (var prop in Properties) {\n if (hasOwn.call(Properties, prop)) {\n obj[prop] = Properties[prop];\n }\n }\n }\n\n // 5. Return obj\n return obj;\n };\n }();\n }\n // END polyfill\n\n // Add util.inherits from Node.js\n // Source:\n // https://github.com/joyent/node/blob/master/lib/util.js\n // Copyright Joyent, Inc. and other Node contributors.\n //\n // Permission is hereby granted, free of charge, to any person obtaining a\n // copy of this software and associated documentation files (the\n // \"Software\"), to deal in the Software without restriction, including\n // without limitation the rights to use, copy, modify, merge, publish,\n // distribute, sublicense, and/or sell copies of the Software, and to permit\n // persons to whom the Software is furnished to do so, subject to the\n // following conditions:\n //\n // The above copyright notice and this permission notice shall be included\n // in all copies or substantial portions of the Software.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n // USE OR OTHER DEALINGS IN THE SOFTWARE.\n ctor.super_ = superCtor;\n ctor.prototype = (0, _create2.default)(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\n\n/**\n * Returns whether the given value is a finite number without type-coercion\n *\n * @param {*} value the value to test\n * @return {boolean} whether or not value is a finite number without type-coercion\n */\nmodule.exports.isNumber = function (value) {\n return typeof value === 'number' && isFinite(value);\n};\n\n/**\n * Removes zero width chars, diacritics and whitespace from the string\n * Also applies an unhomoglyph on the string, to prevent similar looking chars\n * @param {string} str the string to remove hidden characters from\n * @return {string} a string with the hidden characters removed\n */\nmodule.exports.removeHiddenChars = function (str) {\n return unhomoglyph(str.normalize('NFD').replace(removeHiddenCharsRegex, ''));\n};\nvar removeHiddenCharsRegex = /[\\u200B-\\u200D\\u0300-\\u036f\\uFEFF\\s]/g;\n\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nmodule.exports.escapeRegExp = escapeRegExp;\n\nmodule.exports.globToRegexp = function (glob, extended) {\n extended = typeof extended === 'boolean' ? extended : true;\n // From\n // https://github.com/matrix-org/synapse/blob/abbee6b29be80a77e05730707602f3bbfc3f38cb/synapse/push/__init__.py#L132\n // Because micromatch is about 130KB with dependencies,\n // and minimatch is not much better.\n var pat = escapeRegExp(glob);\n pat = pat.replace(/\\\\\\*/g, '.*');\n pat = pat.replace(/\\?/g, '.');\n if (extended) {\n pat = pat.replace(/\\\\\\[(!|)(.*)\\\\]/g, function (match, p1, p2, offset, string) {\n var first = p1 && '^' || '';\n var second = p2.replace(/\\\\-/, '-');\n return '[' + first + second + ']';\n });\n }\n return pat;\n};\n//# sourceMappingURL=utils.js.map","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n'use strict';\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;","\"use strict\";\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DEFAULTS = {\n // URL to a page we show in an iframe to configure integrations\n integrations_ui_url: \"https://scalar.vector.im/\",\n // Base URL to the REST interface of the integrations server\n integrations_rest_url: \"https://scalar.vector.im/api\",\n // Where to send bug reports. If not specified, bugs cannot be sent.\n bug_report_endpoint_url: null\n};\n\nvar SdkConfig = function () {\n function SdkConfig() {\n (0, _classCallCheck3.default)(this, SdkConfig);\n }\n\n (0, _createClass3.default)(SdkConfig, null, [{\n key: \"get\",\n value: function get() {\n return global.mxReactSdkConfig || {};\n }\n }, {\n key: \"put\",\n value: function put(cfg) {\n var defaultKeys = (0, _keys2.default)(DEFAULTS);\n for (var i = 0; i < defaultKeys.length; ++i) {\n if (cfg[defaultKeys[i]] === undefined) {\n cfg[defaultKeys[i]] = DEFAULTS[defaultKeys[i]];\n }\n }\n global.mxReactSdkConfig = cfg;\n }\n }, {\n key: \"unset\",\n value: function unset() {\n global.mxReactSdkConfig = undefined;\n }\n }]);\n return SdkConfig;\n}();\n\nmodule.exports = SdkConfig;\n//# sourceMappingURL=SdkConfig.js.map","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","'use strict';\n\nmodule.exports = require('./lib/ReactDOM');\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isObject = require('isobject');\n\nfunction isObjectObject(o) {\n return isObject(o) === true\n && Object.prototype.toString.call(o) === '[object Object]';\n}\n\nmodule.exports = function isPlainObject(o) {\n var ctor,prot;\n\n if (isObjectObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (typeof ctor !== 'function') return false;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObjectObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMProperty = require('./DOMProperty');\nvar ReactDOMComponentFlags = require('./ReactDOMComponentFlags');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar Flags = ReactDOMComponentFlags;\n\nvar internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2);\n\n/**\n * Check if a given node should be cached.\n */\nfunction shouldPrecacheNode(node, nodeID) {\n return node.nodeType === 1 && node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 && node.nodeValue === ' react-text: ' + nodeID + ' ' || node.nodeType === 8 && node.nodeValue === ' react-empty: ' + nodeID + ' ';\n}\n\n/**\n * Drill down (through composites and empty components) until we get a host or\n * host text component.\n *\n * This is pretty polymorphic but unavoidable with the current structure we have\n * for `_renderedChildren`.\n */\nfunction getRenderedHostOrTextFromComponent(component) {\n var rendered;\n while (rendered = component._renderedComponent) {\n component = rendered;\n }\n return component;\n}\n\n/**\n * Populate `_hostNode` on the rendered host/text component with the given\n * DOM node. The passed `inst` can be a composite.\n */\nfunction precacheNode(inst, node) {\n var hostInst = getRenderedHostOrTextFromComponent(inst);\n hostInst._hostNode = node;\n node[internalInstanceKey] = hostInst;\n}\n\nfunction uncacheNode(inst) {\n var node = inst._hostNode;\n if (node) {\n delete node[internalInstanceKey];\n inst._hostNode = null;\n }\n}\n\n/**\n * Populate `_hostNode` on each child of `inst`, assuming that the children\n * match up with the DOM (element) children of `node`.\n *\n * We cache entire levels at once to avoid an n^2 problem where we access the\n * children of a node sequentially and have to walk from the start to our target\n * node every time.\n *\n * Since we update `_renderedChildren` and the actual DOM at (slightly)\n * different times, we could race here and see a newer `_renderedChildren` than\n * the DOM nodes we see. To avoid this, ReactMultiChild calls\n * `prepareToManageChildren` before we change `_renderedChildren`, at which\n * time the container's child nodes are always cached (until it unmounts).\n */\nfunction precacheChildNodes(inst, node) {\n if (inst._flags & Flags.hasCachedChildNodes) {\n return;\n }\n var children = inst._renderedChildren;\n var childNode = node.firstChild;\n outer: for (var name in children) {\n if (!children.hasOwnProperty(name)) {\n continue;\n }\n var childInst = children[name];\n var childID = getRenderedHostOrTextFromComponent(childInst)._domID;\n if (childID === 0) {\n // We're currently unmounting this child in ReactMultiChild; skip it.\n continue;\n }\n // We assume the child nodes are in the same order as the child instances.\n for (; childNode !== null; childNode = childNode.nextSibling) {\n if (shouldPrecacheNode(childNode, childID)) {\n precacheNode(childInst, childNode);\n continue outer;\n }\n }\n // We reached the end of the DOM children without finding an ID match.\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0;\n }\n inst._flags |= Flags.hasCachedChildNodes;\n}\n\n/**\n * Given a DOM node, return the closest ReactDOMComponent or\n * ReactDOMTextComponent instance ancestor.\n */\nfunction getClosestInstanceFromNode(node) {\n if (node[internalInstanceKey]) {\n return node[internalInstanceKey];\n }\n\n // Walk up the tree until we find an ancestor whose instance we have cached.\n var parents = [];\n while (!node[internalInstanceKey]) {\n parents.push(node);\n if (node.parentNode) {\n node = node.parentNode;\n } else {\n // Top of the tree. This node must not be part of a React tree (or is\n // unmounted, potentially).\n return null;\n }\n }\n\n var closest;\n var inst;\n for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {\n closest = inst;\n if (parents.length) {\n precacheChildNodes(inst, node);\n }\n }\n\n return closest;\n}\n\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\nfunction getInstanceFromNode(node) {\n var inst = getClosestInstanceFromNode(node);\n if (inst != null && inst._hostNode === node) {\n return inst;\n } else {\n return null;\n }\n}\n\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\nfunction getNodeFromInstance(inst) {\n // Without this first invariant, passing a non-DOM-component triggers the next\n // invariant for a missing parent, which is super confusing.\n !(inst._hostNode !== undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n if (inst._hostNode) {\n return inst._hostNode;\n }\n\n // Walk up the tree until we find an ancestor whose DOM node we have cached.\n var parents = [];\n while (!inst._hostNode) {\n parents.push(inst);\n !inst._hostParent ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0;\n inst = inst._hostParent;\n }\n\n // Now parents contains each ancestor that does *not* have a cached native\n // node, and `inst` is the deepest ancestor that does.\n for (; parents.length; inst = parents.pop()) {\n precacheChildNodes(inst, inst._hostNode);\n }\n\n return inst._hostNode;\n}\n\nvar ReactDOMComponentTree = {\n getClosestInstanceFromNode: getClosestInstanceFromNode,\n getInstanceFromNode: getInstanceFromNode,\n getNodeFromInstance: getNodeFromInstance,\n precacheChildNodes: precacheChildNodes,\n precacheNode: precacheNode,\n uncacheNode: uncacheNode\n};\n\nmodule.exports = ReactDOMComponentTree;","\n/**\n * Module dependencies.\n */\n\nvar getDocument = require('get-document');\n\n/**\n * Module exports.\n */\n\nmodule.exports = getWindow;\n\nvar needsIEFallback = require('./needs-ie-fallback');\n\n/**\n * Returns `true` if `w` is a Window object, or `false` otherwise.\n *\n * @param {Mixed} w - Window object, maybe\n * @return {Boolean}\n * @private\n */\n\nfunction isWindow (w) {\n return w && w.window === w;\n}\n\n/**\n * Returns the `window` object associated with the given `node`, which may be\n * a DOM element, the Window object, a Selection, a Range. Basically any DOM\n * object that references the Window in some way, this function will find it.\n *\n * @param {Mixed} node - DOM node, selection, or range in which to find the `window` object\n * @return {Window} the `window` object associated with `node`\n * @public\n */\n\nfunction getWindow(node) {\n if (isWindow(node)) {\n return node;\n }\n\n var doc = getDocument(node);\n\n if (needsIEFallback) {\n // In IE 6-8, only the variable 'window' can be used to connect events (others\n // may be only copies).\n doc.parentWindow.execScript('document._parentWindow = window;', 'Javascript');\n var win = doc._parentWindow;\n // to prevent memory leak, unset it after use\n // another possibility is to add an onUnload handler,\n // (which seems overkill to @liucougar)\n doc._parentWindow = null;\n return win;\n } else {\n // standards-compliant and newer IE\n return doc.defaultView || doc.parentWindow;\n }\n}\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","/**\n * A `warning` helper, modeled after Facebook's and the `tiny-invariant` library.\n *\n * @param {Mixed} condition\n * @param {String} message\n */\n\nfunction warning(condition) {\n var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n if (condition) return;\n\n var isProduction = \"development\" === 'production';\n var log = console.warn || console.log; // eslint-disable-line no-console\n\n if (isProduction) {\n log('Warning');\n } else {\n log('Warning: ' + message);\n }\n}\n\nexport default warning;\n//# sourceMappingURL=slate-dev-warning.es.js.map\n","module.exports = { \"default\": require(\"core-js/library/fn/promise\"), __esModule: true };","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","\"use strict\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n } // Internet Explorer and Edge do not support colors.\n\n\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n } // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n if (!this.useColors) {\n return;\n }\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if (match === '%%') {\n return;\n }\n\n index++;\n\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n var _console;\n\n // This hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n try {\n if (namespaces) {\n exports.storage.setItem('debug', namespaces);\n } else {\n exports.storage.removeItem('debug');\n }\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n var r;\n\n try {\n r = exports.storage.getItem('debug');\n } catch (error) {} // Swallow\n // XXX (@Qix-) should we be logging these?\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n\nmodule.exports = require('./common')(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n try {\n return JSON.stringify(v);\n } catch (error) {\n return '[UnexpectedJSONParseError]: ' + error.message;\n }\n};\n\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.closest = exports.distance = exports.patch = exports.absolute = exports.negate = exports.isEqual = exports.subtract = exports.add = undefined;\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar add = exports.add = function add(point1, point2) {\n return {\n x: point1.x + point2.x,\n y: point1.y + point2.y\n };\n};\n\nvar subtract = exports.subtract = function subtract(point1, point2) {\n return {\n x: point1.x - point2.x,\n y: point1.y - point2.y\n };\n};\n\nvar isEqual = exports.isEqual = function isEqual(point1, point2) {\n return point1.x === point2.x && point1.y === point2.y;\n};\n\nvar negate = exports.negate = function negate(point) {\n return {\n x: point.x !== 0 ? -point.x : 0,\n y: point.y !== 0 ? -point.y : 0\n };\n};\n\nvar absolute = exports.absolute = function absolute(point) {\n return {\n x: Math.abs(point.x),\n y: Math.abs(point.y)\n };\n};\n\nvar patch = exports.patch = function patch(line, value) {\n var _ref;\n\n var otherValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n return _ref = {}, (0, _defineProperty3.default)(_ref, line, value), (0, _defineProperty3.default)(_ref, line === 'x' ? 'y' : 'x', otherValue), _ref;\n};\n\nvar distance = exports.distance = function distance(point1, point2) {\n return Math.sqrt(Math.pow(point2.x - point1.x, 2) + Math.pow(point2.y - point1.y, 2));\n};\n\nvar closest = exports.closest = function closest(target, points) {\n return Math.min.apply(Math, (0, _toConsumableArray3.default)(points.map(function (point) {\n return distance(target, point);\n })));\n};","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '</' + tag + '>';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","module.exports = {};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.baseUrl = exports.host = undefined;\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nexports.makeEventPermalink = makeEventPermalink;\nexports.makeUserPermalink = makeUserPermalink;\nexports.makeRoomPermalink = makeRoomPermalink;\nexports.makeGroupPermalink = makeGroupPermalink;\nexports.encodeServerCandidates = encodeServerCandidates;\nexports.pickServerCandidates = pickServerCandidates;\n\nvar _MatrixClientPeg = require(\"./MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _isIp = require(\"is-ip\");\n\nvar _isIp2 = _interopRequireDefault(_isIp);\n\nvar _utils = require(\"matrix-js-sdk/lib/utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar host = exports.host = \"matrix.to\"; /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar baseUrl = exports.baseUrl = \"https://\" + host;\n\n// The maximum number of servers to pick when working out which servers\n// to add to permalinks. The servers are appended as ?via=example.org\nvar MAX_SERVER_CANDIDATES = 3;\n\nfunction makeEventPermalink(roomId, eventId) {\n var permalinkBase = baseUrl + \"/#/\" + roomId + \"/\" + eventId;\n\n // If the roomId isn't actually a room ID, don't try to list the servers.\n // Aliases are already routable, and don't need extra information.\n if (roomId[0] !== '!') return permalinkBase;\n\n var serverCandidates = pickServerCandidates(roomId);\n return \"\" + permalinkBase + encodeServerCandidates(serverCandidates);\n}\n\nfunction makeUserPermalink(userId) {\n return baseUrl + \"/#/\" + userId;\n}\n\nfunction makeRoomPermalink(roomId) {\n var permalinkBase = baseUrl + \"/#/\" + roomId;\n\n // If the roomId isn't actually a room ID, don't try to list the servers.\n // Aliases are already routable, and don't need extra information.\n if (roomId[0] !== '!') return permalinkBase;\n\n var serverCandidates = pickServerCandidates(roomId);\n return \"\" + permalinkBase + encodeServerCandidates(serverCandidates);\n}\n\nfunction makeGroupPermalink(groupId) {\n return baseUrl + \"/#/\" + groupId;\n}\n\nfunction encodeServerCandidates(candidates) {\n if (!candidates || candidates.length === 0) return '';\n return \"?via=\" + candidates.map(function (c) {\n return encodeURIComponent(c);\n }).join(\"&via=\");\n}\n\nfunction pickServerCandidates(roomId) {\n var client = _MatrixClientPeg2.default.get();\n var room = client.getRoom(roomId);\n if (!room) return [];\n\n // Permalinks can have servers appended to them so that the user\n // receiving them can have a fighting chance at joining the room.\n // These servers are called \"candidates\" at this point because\n // it is unclear whether they are going to be useful to actually\n // join in the future.\n //\n // We pick 3 servers based on the following criteria:\n //\n // Server 1: The highest power level user in the room, provided\n // they are at least PL 50. We don't calculate \"what is a moderator\"\n // here because it is less relevant for the vast majority of rooms.\n // We also want to ensure that we get an admin or high-ranking mod\n // as they are less likely to leave the room. If no user happens\n // to meet this criteria, we'll pick the most popular server in the\n // room.\n //\n // Server 2: The next most popular server in the room (in user\n // distribution). This cannot be the same as Server 1. If no other\n // servers are available then we'll only return Server 1.\n //\n // Server 3: The next most popular server by user distribution. This\n // has the same rules as Server 2, with the added exception that it\n // must be unique from Server 1 and 2.\n\n // Rationale for popular servers: It's hard to get rid of people when\n // they keep flocking in from a particular server. Sure, the server could\n // be ACL'd in the future or for some reason be evicted from the room\n // however an event like that is unlikely the larger the room gets. If\n // the server is ACL'd at the time of generating the link however, we\n // shouldn't pick them. We also don't pick IP addresses.\n\n // Note: we don't pick the server the room was created on because the\n // homeserver should already be using that server as a last ditch attempt\n // and there's less of a guarantee that the server is a resident server.\n // Instead, we actively figure out which servers are likely to be residents\n // in the future and try to use those.\n\n // Note: Users receiving permalinks that happen to have all 3 potential\n // servers fail them (in terms of joining) are somewhat expected to hunt\n // down the person who gave them the link to ask for a participating server.\n // The receiving user can then manually append the known-good server to\n // the list and magically have the link work.\n\n var bannedHostsRegexps = [];\n var allowedHostsRegexps = [new RegExp(\".*\")]; // default allow everyone\n if (room.currentState) {\n var aclEvent = room.currentState.getStateEvents(\"m.room.server_acl\", \"\");\n if (aclEvent && aclEvent.getContent()) {\n var getRegex = function getRegex(hostname) {\n return new RegExp(\"^\" + _utils2.default.globToRegexp(hostname, false) + \"$\");\n };\n\n var denied = aclEvent.getContent().deny || [];\n denied.forEach(function (h) {\n return bannedHostsRegexps.push(getRegex(h));\n });\n\n var allowed = aclEvent.getContent().allow || [];\n allowedHostsRegexps = []; // we don't want to use the default rule here\n allowed.forEach(function (h) {\n return allowedHostsRegexps.push(getRegex(h));\n });\n }\n }\n\n var populationMap = {};\n var highestPlUser = { userId: null, powerLevel: 0, serverName: null };\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(room.getJoinedMembers()), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var member = _step.value;\n\n var serverName = member.userId.split(\":\").splice(1).join(\":\");\n if (member.powerLevel > highestPlUser.powerLevel && !isHostnameIpAddress(serverName) && !isHostInRegex(serverName, bannedHostsRegexps) && isHostInRegex(serverName, allowedHostsRegexps)) {\n highestPlUser.userId = member.userId;\n highestPlUser.powerLevel = member.powerLevel;\n highestPlUser.serverName = serverName;\n }\n\n if (!populationMap[serverName]) populationMap[serverName] = 0;\n populationMap[serverName]++;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var candidates = [];\n if (highestPlUser.powerLevel >= 50) candidates.push(highestPlUser.serverName);\n\n var beforePopulation = candidates.length;\n var serversByPopulation = (0, _keys2.default)(populationMap).sort(function (a, b) {\n return populationMap[b] - populationMap[a];\n }).filter(function (a) {\n return !candidates.includes(a) && !isHostnameIpAddress(a) && !isHostInRegex(a, bannedHostsRegexps) && isHostInRegex(a, allowedHostsRegexps);\n });\n for (var i = beforePopulation; i < MAX_SERVER_CANDIDATES; i++) {\n var idx = i - beforePopulation;\n if (idx >= serversByPopulation.length) break;\n candidates.push(serversByPopulation[idx]);\n }\n\n return candidates;\n}\n\nfunction getHostnameFromMatrixDomain(domain) {\n if (!domain) return null;\n\n // The hostname might have a port, so we convert it to a URL and\n // split out the real hostname.\n var parser = document.createElement('a');\n parser.href = \"https://\" + domain;\n return parser.hostname;\n}\n\nfunction isHostInRegex(hostname, regexps) {\n hostname = getHostnameFromMatrixDomain(hostname);\n if (!hostname) return true; // assumed\n if (regexps.length > 0 && !regexps[0].test) throw new Error(regexps[0]);\n\n return regexps.filter(function (h) {\n return h.test(hostname);\n }).length > 0;\n}\n\nfunction isHostnameIpAddress(hostname) {\n hostname = getHostnameFromMatrixDomain(hostname);\n if (!hostname) return false;\n\n // is-ip doesn't want IPv6 addresses surrounded by brackets, so\n // take them off.\n if (hostname.startsWith(\"[\") && hostname.endsWith(\"]\")) {\n hostname = hostname.substring(1, hostname.length - 1);\n }\n\n return (0, _isIp2.default)(hostname);\n}\n//# sourceMappingURL=matrix-to.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isOnlyCtrlOrCmdKeyEvent = isOnlyCtrlOrCmdKeyEvent;\nexports.isOnlyCtrlOrCmdIgnoreShiftKeyEvent = isOnlyCtrlOrCmdIgnoreShiftKeyEvent;\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/* a selection of key codes, as used in KeyboardEvent.keyCode */\nvar KeyCode = exports.KeyCode = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n ESCAPE: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46,\n KEY_A: 65,\n KEY_B: 66,\n KEY_C: 67,\n KEY_D: 68,\n KEY_E: 69,\n KEY_F: 70,\n KEY_G: 71,\n KEY_H: 72,\n KEY_I: 73,\n KEY_J: 74,\n KEY_K: 75,\n KEY_L: 76,\n KEY_M: 77,\n KEY_N: 78,\n KEY_O: 79,\n KEY_P: 80,\n KEY_Q: 81,\n KEY_R: 82,\n KEY_S: 83,\n KEY_T: 84,\n KEY_U: 85,\n KEY_V: 86,\n KEY_W: 87,\n KEY_X: 88,\n KEY_Y: 89,\n KEY_Z: 90\n};\n\nfunction isOnlyCtrlOrCmdKeyEvent(ev) {\n var isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n if (isMac) {\n return ev.metaKey && !ev.altKey && !ev.ctrlKey && !ev.shiftKey;\n } else {\n return ev.ctrlKey && !ev.altKey && !ev.metaKey && !ev.shiftKey;\n }\n}\n\nfunction isOnlyCtrlOrCmdIgnoreShiftKeyEvent(ev) {\n var isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n if (isMac) {\n return ev.metaKey && !ev.altKey && !ev.ctrlKey;\n } else {\n return ev.ctrlKey && !ev.altKey && !ev.metaKey;\n }\n}\n//# sourceMappingURL=Keyboard.js.map","'use strict';\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _bluebird = require('bluebird');\n\n// Limit the maximum number of ongoing promises returned by fn to LIMIT and\n// use a FIFO queue to handle the backlog.\nvar limitConcurrency = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(fn) {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(ongoingRequestCount >= LIMIT)) {\n _context.next = 3;\n break;\n }\n\n _context.next = 3;\n return (0, _bluebird.resolve)(new _promise2.default(function (resolve, reject) {\n backlogQueue.push(resolve);\n }));\n\n case 3:\n\n ongoingRequestCount++;\n _context.prev = 4;\n _context.next = 7;\n return (0, _bluebird.resolve)(fn());\n\n case 7:\n return _context.abrupt('return', _context.sent);\n\n case 10:\n _context.prev = 10;\n _context.t0 = _context['catch'](4);\n throw _context.t0;\n\n case 13:\n _context.prev = 13;\n\n ongoingRequestCount--;\n checkBacklog();\n return _context.finish(13);\n\n case 17:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 10, 13, 17]]);\n }));\n\n return function limitConcurrency(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Global store for tracking group summary, members, invited members and rooms.\n */\n\n\nvar _events = require('events');\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _groups = require('../groups');\n\nvar _FlairStore = require('./FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction parseMembersResponse(response) {\n return response.chunk.map(function (apiMember) {\n return (0, _groups.groupMemberFromApiObject)(apiMember);\n });\n}\n\nfunction parseRoomsResponse(response) {\n return response.chunk.map(function (apiRoom) {\n return (0, _groups.groupRoomFromApiObject)(apiRoom);\n });\n}\n\n// The number of ongoing group requests\nvar ongoingRequestCount = 0;\n\n// This has arbitrarily been set to a small number to lower the priority\n// of doing group-related requests because we care about other important\n// requests like hitting /sync.\nvar LIMIT = 3; // Maximum number of ongoing group requests\n\n// FIFO queue of functions to call in the backlog\nvar backlogQueue = [\n // () => {...}\n];\n\n// Pull from the FIFO queue\nfunction checkBacklog() {\n var item = backlogQueue.shift();\n if (typeof item === 'function') item();\n}\nvar GroupStore = function (_EventEmitter) {\n (0, _inherits3.default)(GroupStore, _EventEmitter);\n\n function GroupStore() {\n var _this$_fetchResourceP, _this$_resourceFetche;\n\n (0, _classCallCheck3.default)(this, GroupStore);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (GroupStore.__proto__ || (0, _getPrototypeOf2.default)(GroupStore)).call(this));\n\n _this.STATE_KEY = {\n GroupMembers: 'GroupMembers',\n GroupInvitedMembers: 'GroupInvitedMembers',\n Summary: 'Summary',\n GroupRooms: 'GroupRooms'\n };\n\n _this._state = {};\n _this._state[_this.STATE_KEY.Summary] = {};\n _this._state[_this.STATE_KEY.GroupRooms] = {};\n _this._state[_this.STATE_KEY.GroupMembers] = {};\n _this._state[_this.STATE_KEY.GroupInvitedMembers] = {};\n\n _this._ready = {};\n _this._ready[_this.STATE_KEY.Summary] = {};\n _this._ready[_this.STATE_KEY.GroupRooms] = {};\n _this._ready[_this.STATE_KEY.GroupMembers] = {};\n _this._ready[_this.STATE_KEY.GroupInvitedMembers] = {};\n\n _this._fetchResourcePromise = (_this$_fetchResourceP = {}, (0, _defineProperty3.default)(_this$_fetchResourceP, _this.STATE_KEY.Summary, {}), (0, _defineProperty3.default)(_this$_fetchResourceP, _this.STATE_KEY.GroupRooms, {}), (0, _defineProperty3.default)(_this$_fetchResourceP, _this.STATE_KEY.GroupMembers, {}), (0, _defineProperty3.default)(_this$_fetchResourceP, _this.STATE_KEY.GroupInvitedMembers, {}), _this$_fetchResourceP);\n\n _this._resourceFetcher = (_this$_resourceFetche = {}, (0, _defineProperty3.default)(_this$_resourceFetche, _this.STATE_KEY.Summary, function (groupId) {\n return limitConcurrency(function () {\n return _MatrixClientPeg2.default.get().getGroupSummary(groupId);\n });\n }), (0, _defineProperty3.default)(_this$_resourceFetche, _this.STATE_KEY.GroupRooms, function (groupId) {\n return limitConcurrency(function () {\n return _MatrixClientPeg2.default.get().getGroupRooms(groupId).then(parseRoomsResponse);\n });\n }), (0, _defineProperty3.default)(_this$_resourceFetche, _this.STATE_KEY.GroupMembers, function (groupId) {\n return limitConcurrency(function () {\n return _MatrixClientPeg2.default.get().getGroupUsers(groupId).then(parseMembersResponse);\n });\n }), (0, _defineProperty3.default)(_this$_resourceFetche, _this.STATE_KEY.GroupInvitedMembers, function (groupId) {\n return limitConcurrency(function () {\n return _MatrixClientPeg2.default.get().getGroupInvitedUsers(groupId).then(parseMembersResponse);\n });\n }), _this$_resourceFetche);\n return _this;\n }\n\n (0, _createClass3.default)(GroupStore, [{\n key: '_fetchResource',\n value: function _fetchResource(stateKey, groupId) {\n var _this2 = this;\n\n // Ongoing request, ignore\n if (this._fetchResourcePromise[stateKey][groupId]) return;\n\n var clientPromise = this._resourceFetcher[stateKey](groupId);\n\n // Indicate ongoing request\n this._fetchResourcePromise[stateKey][groupId] = clientPromise;\n\n clientPromise.then(function (result) {\n _this2._state[stateKey][groupId] = result;\n _this2._ready[stateKey][groupId] = true;\n _this2._notifyListeners();\n }).catch(function (err) {\n // Invited users not visible to non-members\n if (stateKey === _this2.STATE_KEY.GroupInvitedMembers && err.httpStatus === 403) {\n return;\n }\n\n console.error('Failed to get resource ' + stateKey + ' for ' + groupId, err);\n _this2.emit('error', err, groupId, stateKey);\n }).finally(function () {\n // Indicate finished request, allow for future fetches\n delete _this2._fetchResourcePromise[stateKey][groupId];\n });\n\n return clientPromise;\n }\n }, {\n key: '_notifyListeners',\n value: function _notifyListeners() {\n this.emit('update');\n }\n\n /**\n * Register a listener to recieve updates from the store. This also\n * immediately triggers an update to send the current state of the\n * store (which could be the initial state).\n *\n * If a group ID is specified, this also causes a fetch of all data\n * of the specified group, which might cause 4 separate HTTP\n * requests, but only if said requests aren't already ongoing.\n *\n * @param {string?} groupId the ID of the group to fetch data for.\n * Optional.\n * @param {function} fn the function to call when the store updates.\n * @return {Object} tok a registration \"token\" with a single\n * property `unregister`, a function that can\n * be called to unregister the listener such\n * that it won't be called any more.\n */\n\n }, {\n key: 'registerListener',\n value: function registerListener(groupId, fn) {\n var _this3 = this;\n\n this.on('update', fn);\n // Call to set initial state (before fetching starts)\n this.emit('update');\n\n if (groupId) {\n this._fetchResource(this.STATE_KEY.Summary, groupId);\n this._fetchResource(this.STATE_KEY.GroupRooms, groupId);\n this._fetchResource(this.STATE_KEY.GroupMembers, groupId);\n this._fetchResource(this.STATE_KEY.GroupInvitedMembers, groupId);\n }\n\n // Similar to the Store of flux/utils, we return a \"token\" that\n // can be used to unregister the listener.\n return {\n unregister: function unregister() {\n _this3.unregisterListener(fn);\n }\n };\n }\n }, {\n key: 'unregisterListener',\n value: function unregisterListener(fn) {\n this.removeListener('update', fn);\n }\n }, {\n key: 'isStateReady',\n value: function isStateReady(groupId, id) {\n return this._ready[id][groupId];\n }\n }, {\n key: 'getSummary',\n value: function getSummary(groupId) {\n return this._state[this.STATE_KEY.Summary][groupId] || {};\n }\n }, {\n key: 'getGroupRooms',\n value: function getGroupRooms(groupId) {\n return this._state[this.STATE_KEY.GroupRooms][groupId] || [];\n }\n }, {\n key: 'getGroupMembers',\n value: function getGroupMembers(groupId) {\n return this._state[this.STATE_KEY.GroupMembers][groupId] || [];\n }\n }, {\n key: 'getGroupInvitedMembers',\n value: function getGroupInvitedMembers(groupId) {\n return this._state[this.STATE_KEY.GroupInvitedMembers][groupId] || [];\n }\n }, {\n key: 'getGroupPublicity',\n value: function getGroupPublicity(groupId) {\n return (this._state[this.STATE_KEY.Summary][groupId] || {}).user ? (this._state[this.STATE_KEY.Summary][groupId] || {}).user.is_publicised : null;\n }\n }, {\n key: 'isUserPrivileged',\n value: function isUserPrivileged(groupId) {\n return (this._state[this.STATE_KEY.Summary][groupId] || {}).user ? (this._state[this.STATE_KEY.Summary][groupId] || {}).user.is_privileged : null;\n }\n }, {\n key: 'refreshGroupRooms',\n value: function refreshGroupRooms(groupId) {\n return this._fetchResource(this.STATE_KEY.GroupRooms, groupId);\n }\n }, {\n key: 'refreshGroupMembers',\n value: function refreshGroupMembers(groupId) {\n return this._fetchResource(this.STATE_KEY.GroupMembers, groupId);\n }\n }, {\n key: 'addRoomToGroup',\n value: function addRoomToGroup(groupId, roomId, isPublic) {\n return _MatrixClientPeg2.default.get().addRoomToGroup(groupId, roomId, isPublic).then(this._fetchResource.bind(this, this.STATE_KEY.GroupRooms, groupId));\n }\n }, {\n key: 'updateGroupRoomVisibility',\n value: function updateGroupRoomVisibility(groupId, roomId, isPublic) {\n return _MatrixClientPeg2.default.get().updateGroupRoomVisibility(groupId, roomId, isPublic).then(this._fetchResource.bind(this, this.STATE_KEY.GroupRooms, groupId));\n }\n }, {\n key: 'removeRoomFromGroup',\n value: function removeRoomFromGroup(groupId, roomId) {\n return _MatrixClientPeg2.default.get().removeRoomFromGroup(groupId, roomId)\n // Room might be in the summary, refresh just in case\n .then(this._fetchResource.bind(this, this.STATE_KEY.Summary, groupId)).then(this._fetchResource.bind(this, this.STATE_KEY.GroupRooms, groupId));\n }\n }, {\n key: 'inviteUserToGroup',\n value: function inviteUserToGroup(groupId, userId) {\n return _MatrixClientPeg2.default.get().inviteUserToGroup(groupId, userId).then(this._fetchResource.bind(this, this.STATE_KEY.GroupInvitedMembers, groupId));\n }\n }, {\n key: 'acceptGroupInvite',\n value: function acceptGroupInvite(groupId) {\n return _MatrixClientPeg2.default.get().acceptGroupInvite(groupId)\n // The user should now be able to access (personal) group settings\n .then(this._fetchResource.bind(this, this.STATE_KEY.Summary, groupId))\n // The user might be able to see more rooms now\n .then(this._fetchResource.bind(this, this.STATE_KEY.GroupRooms, groupId))\n // The user should now appear as a member\n .then(this._fetchResource.bind(this, this.STATE_KEY.GroupMembers, groupId))\n // The user should now not appear as an invited member\n .then(this._fetchResource.bind(this, this.STATE_KEY.GroupInvitedMembers, groupId));\n }\n }, {\n key: 'joinGroup',\n value: function joinGroup(groupId) {\n return _MatrixClientPeg2.default.get().joinGroup(groupId)\n // The user should now be able to access (personal) group settings\n .then(this._fetchResource.bind(this, this.STATE_KEY.Summary, groupId))\n // The user might be able to see more rooms now\n .then(this._fetchResource.bind(this, this.STATE_KEY.GroupRooms, groupId))\n // The user should now appear as a member\n .then(this._fetchResource.bind(this, this.STATE_KEY.GroupMembers, groupId))\n // The user should now not appear as an invited member\n .then(this._fetchResource.bind(this, this.STATE_KEY.GroupInvitedMembers, groupId));\n }\n }, {\n key: 'leaveGroup',\n value: function leaveGroup(groupId) {\n return _MatrixClientPeg2.default.get().leaveGroup(groupId)\n // The user should now not be able to access group settings\n .then(this._fetchResource.bind(this, this.STATE_KEY.Summary, groupId))\n // The user might only be able to see a subset of rooms now\n .then(this._fetchResource.bind(this, this.STATE_KEY.GroupRooms, groupId))\n // The user should now not appear as a member\n .then(this._fetchResource.bind(this, this.STATE_KEY.GroupMembers, groupId));\n }\n }, {\n key: 'addRoomToGroupSummary',\n value: function addRoomToGroupSummary(groupId, roomId, categoryId) {\n return _MatrixClientPeg2.default.get().addRoomToGroupSummary(groupId, roomId, categoryId).then(this._fetchResource.bind(this, this.STATE_KEY.Summary, groupId));\n }\n }, {\n key: 'addUserToGroupSummary',\n value: function addUserToGroupSummary(groupId, userId, roleId) {\n return _MatrixClientPeg2.default.get().addUserToGroupSummary(groupId, userId, roleId).then(this._fetchResource.bind(this, this.STATE_KEY.Summary, groupId));\n }\n }, {\n key: 'removeRoomFromGroupSummary',\n value: function removeRoomFromGroupSummary(groupId, roomId) {\n return _MatrixClientPeg2.default.get().removeRoomFromGroupSummary(groupId, roomId).then(this._fetchResource.bind(this, this.STATE_KEY.Summary, groupId));\n }\n }, {\n key: 'removeUserFromGroupSummary',\n value: function removeUserFromGroupSummary(groupId, userId) {\n return _MatrixClientPeg2.default.get().removeUserFromGroupSummary(groupId, userId).then(this._fetchResource.bind(this, this.STATE_KEY.Summary, groupId));\n }\n }, {\n key: 'setGroupPublicity',\n value: function setGroupPublicity(groupId, isPublished) {\n return _MatrixClientPeg2.default.get().setGroupPublicity(groupId, isPublished).then(function () {\n _FlairStore2.default.invalidatePublicisedGroups(_MatrixClientPeg2.default.get().credentials.userId);\n }).then(this._fetchResource.bind(this, this.STATE_KEY.Summary, groupId));\n }\n }]);\n return GroupStore;\n}(_events2.default);\n\nvar singletonGroupStore = null;\nif (!singletonGroupStore) {\n singletonGroupStore = new GroupStore();\n}\nmodule.exports = singletonGroupStore;\n//# sourceMappingURL=GroupStore.js.map","\n\nvar simpleIsEqual = function simpleIsEqual(a, b) {\n return a === b;\n};\n\nexport default function (resultFn) {\n var isEqual = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : simpleIsEqual;\n\n var lastThis = void 0;\n var lastArgs = [];\n var lastResult = void 0;\n var calledOnce = false;\n\n var isNewArgEqualToLast = function isNewArgEqualToLast(newArg, index) {\n return isEqual(newArg, lastArgs[index]);\n };\n\n var result = function result() {\n for (var _len = arguments.length, newArgs = Array(_len), _key = 0; _key < _len; _key++) {\n newArgs[_key] = arguments[_key];\n }\n\n if (calledOnce && lastThis === this && newArgs.length === lastArgs.length && newArgs.every(isNewArgEqualToLast)) {\n return lastResult;\n }\n\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n lastResult = resultFn.apply(this, newArgs);\n return lastResult;\n };\n\n return result;\n}","\"use strict\";\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/*\n * Holds the current Platform object used by the code to do anything\n * specific to the platform we're running on (eg. web, electron)\n * Platforms are provided by the app layer.\n * This allows the app layer to set a Platform without necessarily\n * having to have a MatrixChat object\n */\nvar PlatformPeg = function () {\n function PlatformPeg() {\n (0, _classCallCheck3.default)(this, PlatformPeg);\n\n this.platform = null;\n }\n\n /**\n * Returns the current Platform object for the application.\n * This should be an instance of a class extending BasePlatform.\n */\n\n\n (0, _createClass3.default)(PlatformPeg, [{\n key: \"get\",\n value: function get() {\n return this.platform;\n }\n\n /**\n * Sets the current platform handler object to use for the\n * application.\n * This should be an instance of a class extending BasePlatform.\n */\n\n }, {\n key: \"set\",\n value: function set(plaf) {\n this.platform = plaf;\n }\n }]);\n return PlatformPeg;\n}();\n\nif (!global.mxPlatformPeg) {\n global.mxPlatformPeg = new PlatformPeg();\n}\nmodule.exports = global.mxPlatformPeg;\n//# sourceMappingURL=PlatformPeg.js.map","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","module.exports = true;\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n// Trust the developer to only use ReactInstrumentation with a __DEV__ check\n\nvar debugTool = null;\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactDebugTool = require('./ReactDebugTool');\n debugTool = ReactDebugTool;\n}\n\nmodule.exports = { debugTool: debugTool };","\"use strict\";\n\n/*\nCopyright 2018 André Jaenisch\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * @module logger\n */\nvar log = require(\"loglevel\");\n\n// This is to demonstrate, that you can use any namespace you want.\n// Namespaces allow you to turn on/off the logging for specific parts of the\n// application.\n// An idea would be to control this via an environment variable (on Node.js).\n// See https://www.npmjs.com/package/debug to see how this could be implemented\n// Part of #332 is introducing a logging library in the first place.\nvar DEFAULT_NAME_SPACE = \"matrix\";\nvar logger = log.getLogger(DEFAULT_NAME_SPACE);\nlogger.setLevel(log.levels.DEBUG);\n\n/**\n * Drop-in replacement for <code>console</code> using {@link https://www.npmjs.com/package/loglevel|loglevel}.\n * Can be tailored down to specific use cases if needed.\n*/\nmodule.exports = logger;\n//# sourceMappingURL=logger.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _PlatformPeg = require('./PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _SdkConfig = require('./SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar hashRegex = /#\\/(groups?|room|user|settings|register|login|forgot_password|home|directory)/; /*\n Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar hashVarRegex = /#\\/(group|room|user)\\/.*$/;\n\n// Remove all but the first item in the hash path. Redact unexpected hashes.\nfunction getRedactedHash(hash) {\n // Don't leak URLs we aren't expecting - they could contain tokens/PII\n var match = hashRegex.exec(hash);\n if (!match) {\n console.warn('Unexpected hash location \"' + hash + '\"');\n return '#/<unexpected hash location>';\n }\n\n if (hashVarRegex.test(hash)) {\n return hash.replace(hashVarRegex, \"#/$1/<redacted>\");\n }\n\n return hash.replace(hashRegex, \"#/$1\");\n}\n\n// Return the current origin, path and hash separated with a `/`. This does\n// not include query parameters.\nfunction getRedactedUrl() {\n var _window$location = window.location,\n origin = _window$location.origin,\n hash = _window$location.hash;\n var pathname = window.location.pathname;\n\n // Redact paths which could contain unexpected PII\n\n if (origin.startsWith('file://')) {\n pathname = \"/<redacted>/\";\n }\n\n return origin + pathname + getRedactedHash(hash);\n}\n\nvar customVariables = {\n 'App Platform': {\n id: 1,\n expl: (0, _languageHandler._td)('The platform you\\'re on'),\n example: 'Electron Platform'\n },\n 'App Version': {\n id: 2,\n expl: (0, _languageHandler._td)('The version of Riot.im'),\n example: '15.0.0'\n },\n 'User Type': {\n id: 3,\n expl: (0, _languageHandler._td)('Whether or not you\\'re logged in (we don\\'t record your user name)'),\n example: 'Logged In'\n },\n 'Chosen Language': {\n id: 4,\n expl: (0, _languageHandler._td)('Your language of choice'),\n example: 'en'\n },\n 'Instance': {\n id: 5,\n expl: (0, _languageHandler._td)('Which officially provided instance you are using, if any'),\n example: 'app'\n },\n 'RTE: Uses Richtext Mode': {\n id: 6,\n expl: (0, _languageHandler._td)('Whether or not you\\'re using the Richtext mode of the Rich Text Editor'),\n example: 'off'\n },\n 'Homeserver URL': {\n id: 7,\n expl: (0, _languageHandler._td)('Your homeserver\\'s URL'),\n example: 'https://matrix.org'\n },\n 'Identity Server URL': {\n id: 8,\n expl: (0, _languageHandler._td)('Your identity server\\'s URL'),\n example: 'https://vector.im'\n }\n};\n\nfunction whitelistRedact(whitelist, str) {\n if (whitelist.includes(str)) return str;\n return '<redacted>';\n}\n\nvar Analytics = function () {\n function Analytics() {\n (0, _classCallCheck3.default)(this, Analytics);\n\n this._paq = null;\n this.disabled = true;\n this.firstPage = true;\n }\n\n /**\n * Enable Analytics if initialized but disabled\n * otherwise try and initalize, no-op if piwik config missing\n */\n\n\n (0, _createClass3.default)(Analytics, [{\n key: 'enable',\n value: function enable() {\n if (this._paq || this._init()) {\n this.disabled = false;\n }\n }\n\n /**\n * Disable Analytics calls, will not fully unload Piwik until a refresh,\n * but this is second best, Piwik should not pull anything implicitly.\n */\n\n }, {\n key: 'disable',\n value: function disable() {\n this.trackEvent('Analytics', 'opt-out');\n // disableHeartBeatTimer is undocumented but exists in the piwik code\n // the _paq.push method will result in an error being printed in the console\n // if an unknown method signature is passed\n this._paq.push(['disableHeartBeatTimer']);\n this.disabled = true;\n }\n }, {\n key: '_init',\n value: function _init() {\n var _this = this;\n\n var config = _SdkConfig2.default.get();\n if (!config || !config.piwik || !config.piwik.url || !config.piwik.siteId) return;\n\n var url = config.piwik.url;\n var siteId = config.piwik.siteId;\n var self = this;\n\n window._paq = this._paq = window._paq || [];\n\n this._paq.push(['setTrackerUrl', url + 'piwik.php']);\n this._paq.push(['setSiteId', siteId]);\n\n this._paq.push(['trackAllContentImpressions']);\n this._paq.push(['discardHashTag', false]);\n this._paq.push(['enableHeartBeatTimer']);\n // this._paq.push(['enableLinkTracking', true]);\n\n var platform = _PlatformPeg2.default.get();\n this._setVisitVariable('App Platform', platform.getHumanReadableName());\n platform.getAppVersion().then(function (version) {\n _this._setVisitVariable('App Version', version);\n }).catch(function () {\n _this._setVisitVariable('App Version', 'unknown');\n });\n\n this._setVisitVariable('Chosen Language', (0, _languageHandler.getCurrentLanguage)());\n\n if (window.location.hostname === 'riot.im') {\n this._setVisitVariable('Instance', window.location.pathname);\n }\n\n (function () {\n var g = document.createElement('script');\n var s = document.getElementsByTagName('script')[0];\n g.type = 'text/javascript';g.async = true;g.defer = true;g.src = url + 'piwik.js';\n\n g.onload = function () {\n console.log('Initialised anonymous analytics');\n self._paq = window._paq;\n };\n\n s.parentNode.insertBefore(g, s);\n })();\n\n return true;\n }\n }, {\n key: 'trackPageChange',\n value: function trackPageChange(generationTimeMs) {\n if (this.disabled) return;\n if (this.firstPage) {\n // De-duplicate first page\n // router seems to hit the fn twice\n this.firstPage = false;\n return;\n }\n\n if (typeof generationTimeMs === 'number') {\n this._paq.push(['setGenerationTimeMs', generationTimeMs]);\n } else {\n console.warn('Analytics.trackPageChange: expected generationTimeMs to be a number');\n // But continue anyway because we still want to track the change\n }\n\n this._paq.push(['setCustomUrl', getRedactedUrl()]);\n this._paq.push(['trackPageView']);\n }\n }, {\n key: 'trackEvent',\n value: function trackEvent(category, action, name, value) {\n if (this.disabled) return;\n this._paq.push(['trackEvent', category, action, name, value]);\n }\n }, {\n key: 'logout',\n value: function logout() {\n if (this.disabled) return;\n this._paq.push(['deleteCookies']);\n }\n }, {\n key: '_setVisitVariable',\n value: function _setVisitVariable(key, value) {\n if (this.disabled) return;\n this._paq.push(['setCustomVariable', customVariables[key].id, key, value, 'visit']);\n }\n }, {\n key: 'setLoggedIn',\n value: function setLoggedIn(isGuest, homeserverUrl, identityServerUrl) {\n if (this.disabled) return;\n\n var config = _SdkConfig2.default.get();\n if (!config.piwik) return;\n\n var whitelistedHSUrls = config.piwik.whitelistedHSUrls || [];\n var whitelistedISUrls = config.piwik.whitelistedISUrls || [];\n\n this._setVisitVariable('User Type', isGuest ? 'Guest' : 'Logged In');\n this._setVisitVariable('Homeserver URL', whitelistRedact(whitelistedHSUrls, homeserverUrl));\n this._setVisitVariable('Identity Server URL', whitelistRedact(whitelistedISUrls, identityServerUrl));\n }\n }, {\n key: 'setRichtextMode',\n value: function setRichtextMode(state) {\n if (this.disabled) return;\n this._setVisitVariable('RTE: Uses Richtext Mode', state ? 'on' : 'off');\n }\n }, {\n key: 'showDetailsModal',\n value: function showDetailsModal() {\n var rows = [];\n if (window.Piwik) {\n var Tracker = window.Piwik.getAsyncTracker();\n rows = (0, _values2.default)(customVariables).map(function (v) {\n return Tracker.getCustomVariable(v.id);\n }).filter(Boolean);\n } else {\n // Piwik may not have been enabled, so show example values\n rows = (0, _keys2.default)(customVariables).map(function (k) {\n return [k, (0, _languageHandler._t)('e.g. %(exampleValue)s', { exampleValue: customVariables[k].example })];\n });\n }\n\n var resolution = window.screen.width + 'x' + window.screen.height;\n var otherVariables = [{\n expl: (0, _languageHandler._td)('Every page you use in the app'),\n value: (0, _languageHandler._t)('e.g. <CurrentPageURL>', {}, {\n CurrentPageURL: getRedactedUrl()\n })\n }, { expl: (0, _languageHandler._td)('Your User Agent'), value: navigator.userAgent }, { expl: (0, _languageHandler._td)('Your device resolution'), value: resolution }];\n\n var ErrorDialog = _index2.default.getComponent('dialogs.ErrorDialog');\n _Modal2.default.createTrackedDialog('Analytics Details', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Analytics'),\n description: React.createElement(\n 'div',\n { className: 'mx_UserSettings_analyticsModal' },\n React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('The information being sent to us to help make Riot.im better includes:')\n ),\n React.createElement(\n 'table',\n null,\n rows.map(function (row) {\n return React.createElement(\n 'tr',\n { key: row[0] },\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)(customVariables[row[0]].expl)\n ),\n row[1] !== undefined && React.createElement(\n 'td',\n null,\n React.createElement(\n 'code',\n null,\n row[1]\n )\n )\n );\n }),\n otherVariables.map(function (item, index) {\n return React.createElement(\n 'tr',\n { key: index },\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)(item.expl)\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'code',\n null,\n item.value\n )\n )\n );\n })\n ),\n React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Where this page includes identifiable information, such as a room, ' + 'user or group ID, that data is removed before being sent to the server.')\n )\n )\n });\n }\n }]);\n return Analytics;\n}();\n\nif (!global.mxAnalytics) {\n global.mxAnalytics = new Analytics();\n}\nmodule.exports = global.mxAnalytics;\n//# sourceMappingURL=Analytics.js.map","var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar CallbackQueue = require('./CallbackQueue');\nvar PooledClass = require('./PooledClass');\nvar ReactFeatureFlags = require('./ReactFeatureFlags');\nvar ReactReconciler = require('./ReactReconciler');\nvar Transaction = require('./Transaction');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar dirtyComponents = [];\nvar updateBatchNumber = 0;\nvar asapCallbackQueue = CallbackQueue.getPooled();\nvar asapEnqueued = false;\n\nvar batchingStrategy = null;\n\nfunction ensureInjected() {\n !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0;\n}\n\nvar NESTED_UPDATES = {\n initialize: function () {\n this.dirtyComponentsLength = dirtyComponents.length;\n },\n close: function () {\n if (this.dirtyComponentsLength !== dirtyComponents.length) {\n // Additional updates were enqueued by componentDidUpdate handlers or\n // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n // these new updates so that if A's componentDidUpdate calls setState on\n // B, B will update before the callback A's updater provided when calling\n // setState.\n dirtyComponents.splice(0, this.dirtyComponentsLength);\n flushBatchedUpdates();\n } else {\n dirtyComponents.length = 0;\n }\n }\n};\n\nvar UPDATE_QUEUEING = {\n initialize: function () {\n this.callbackQueue.reset();\n },\n close: function () {\n this.callbackQueue.notifyAll();\n }\n};\n\nvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction() {\n this.reinitializeTransaction();\n this.dirtyComponentsLength = null;\n this.callbackQueue = CallbackQueue.getPooled();\n this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */true);\n}\n\n_assign(ReactUpdatesFlushTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n destructor: function () {\n this.dirtyComponentsLength = null;\n CallbackQueue.release(this.callbackQueue);\n this.callbackQueue = null;\n ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n this.reconcileTransaction = null;\n },\n\n perform: function (method, scope, a) {\n // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n // with this transaction's wrappers around it.\n return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);\n }\n});\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback, a, b, c, d, e) {\n ensureInjected();\n return batchingStrategy.batchedUpdates(callback, a, b, c, d, e);\n}\n\n/**\n * Array comparator for ReactComponents by mount ordering.\n *\n * @param {ReactComponent} c1 first component you're comparing\n * @param {ReactComponent} c2 second component you're comparing\n * @return {number} Return value usable by Array.prototype.sort().\n */\nfunction mountOrderComparator(c1, c2) {\n return c1._mountOrder - c2._mountOrder;\n}\n\nfunction runBatchedUpdates(transaction) {\n var len = transaction.dirtyComponentsLength;\n !(len === dirtyComponents.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected flush transaction\\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0;\n\n // Since reconciling a component higher in the owner hierarchy usually (not\n // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n // them before their children by sorting the array.\n dirtyComponents.sort(mountOrderComparator);\n\n // Any updates enqueued while reconciling must be performed after this entire\n // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and\n // C, B could update twice in a single batch if C's render enqueues an update\n // to B (since B would have already updated, we should skip it, and the only\n // way we can know to do so is by checking the batch counter).\n updateBatchNumber++;\n\n for (var i = 0; i < len; i++) {\n // If a component is unmounted before pending changes apply, it will still\n // be here, but we assume that it has cleared its _pendingCallbacks and\n // that performUpdateIfNecessary is a noop.\n var component = dirtyComponents[i];\n\n // If performUpdateIfNecessary happens to enqueue any new updates, we\n // shouldn't execute the callbacks until the next render happens, so\n // stash the callbacks first\n var callbacks = component._pendingCallbacks;\n component._pendingCallbacks = null;\n\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var namedComponent = component;\n // Duck type TopLevelWrapper. This is probably always true.\n if (component._currentElement.type.isReactTopLevelWrapper) {\n namedComponent = component._renderedComponent;\n }\n markerName = 'React update: ' + namedComponent.getName();\n console.time(markerName);\n }\n\n ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n if (callbacks) {\n for (var j = 0; j < callbacks.length; j++) {\n transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());\n }\n }\n }\n}\n\nvar flushBatchedUpdates = function () {\n // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents\n // array and perform any updates enqueued by mount-ready handlers (i.e.,\n // componentDidUpdate) but we need to check here too in order to catch\n // updates enqueued by setState callbacks and asap calls.\n while (dirtyComponents.length || asapEnqueued) {\n if (dirtyComponents.length) {\n var transaction = ReactUpdatesFlushTransaction.getPooled();\n transaction.perform(runBatchedUpdates, null, transaction);\n ReactUpdatesFlushTransaction.release(transaction);\n }\n\n if (asapEnqueued) {\n asapEnqueued = false;\n var queue = asapCallbackQueue;\n asapCallbackQueue = CallbackQueue.getPooled();\n queue.notifyAll();\n CallbackQueue.release(queue);\n }\n }\n};\n\n/**\n * Mark a component as needing a rerender, adding an optional callback to a\n * list of functions which will be executed once the rerender occurs.\n */\nfunction enqueueUpdate(component) {\n ensureInjected();\n\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (This is called by each top-level update\n // function, like setState, forceUpdate, etc.; creation and\n // destruction of top-level components is guarded in ReactMount.)\n\n if (!batchingStrategy.isBatchingUpdates) {\n batchingStrategy.batchedUpdates(enqueueUpdate, component);\n return;\n }\n\n dirtyComponents.push(component);\n if (component._updateBatchNumber == null) {\n component._updateBatchNumber = updateBatchNumber + 1;\n }\n}\n\n/**\n * Enqueue a callback to be run at the end of the current batching cycle. Throws\n * if no updates are currently being performed.\n */\nfunction asap(callback, context) {\n invariant(batchingStrategy.isBatchingUpdates, \"ReactUpdates.asap: Can't enqueue an asap callback in a context where\" + 'updates are not being batched.');\n asapCallbackQueue.enqueue(callback, context);\n asapEnqueued = true;\n}\n\nvar ReactUpdatesInjection = {\n injectReconcileTransaction: function (ReconcileTransaction) {\n !ReconcileTransaction ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0;\n ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n },\n\n injectBatchingStrategy: function (_batchingStrategy) {\n !_batchingStrategy ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0;\n !(typeof _batchingStrategy.batchedUpdates === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0;\n !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0;\n batchingStrategy = _batchingStrategy;\n }\n};\n\nvar ReactUpdates = {\n /**\n * React references `ReactReconcileTransaction` using this property in order\n * to allow dependency injection.\n *\n * @internal\n */\n ReactReconcileTransaction: null,\n\n batchedUpdates: batchedUpdates,\n enqueueUpdate: enqueueUpdate,\n flushBatchedUpdates: flushBatchedUpdates,\n injection: ReactUpdatesInjection,\n asap: asap\n};\n\nmodule.exports = ReactUpdates;","module.exports = { \"default\": require(\"core-js/library/fn/object/values\"), __esModule: true };","// Browser Request\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// UMD HEADER START \n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like enviroments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.returnExports = factory();\n }\n}(this, function () {\n// UMD HEADER END\n\nvar XHR = XMLHttpRequest\nif (!XHR) throw new Error('missing XMLHttpRequest')\nrequest.log = {\n 'trace': noop, 'debug': noop, 'info': noop, 'warn': noop, 'error': noop\n}\n\nvar DEFAULT_TIMEOUT = 3 * 60 * 1000 // 3 minutes\n\n//\n// request\n//\n\nfunction request(options, callback) {\n // The entry-point to the API: prep the options object and pass the real work to run_xhr.\n if(typeof callback !== 'function')\n throw new Error('Bad callback given: ' + callback)\n\n if(!options)\n throw new Error('No options given')\n\n var options_onResponse = options.onResponse; // Save this for later.\n\n if(typeof options === 'string')\n options = {'uri':options};\n else\n options = JSON.parse(JSON.stringify(options)); // Use a duplicate for mutating.\n\n options.onResponse = options_onResponse // And put it back.\n\n if (options.verbose) request.log = getLogger();\n\n if(options.url) {\n options.uri = options.url;\n delete options.url;\n }\n\n if(!options.uri && options.uri !== \"\")\n throw new Error(\"options.uri is a required argument\");\n\n if(typeof options.uri != \"string\")\n throw new Error(\"options.uri must be a string\");\n\n var unsupported_options = ['proxy', '_redirectsFollowed', 'maxRedirects', 'followRedirect']\n for (var i = 0; i < unsupported_options.length; i++)\n if(options[ unsupported_options[i] ])\n throw new Error(\"options.\" + unsupported_options[i] + \" is not supported\")\n\n options.callback = callback\n options.method = options.method || 'GET';\n options.headers = options.headers || {};\n options.body = options.body || null\n options.timeout = options.timeout || request.DEFAULT_TIMEOUT\n\n if(options.headers.host)\n throw new Error(\"Options.headers.host is not supported\");\n\n if(options.json) {\n options.headers.accept = options.headers.accept || 'application/json'\n if(options.method !== 'GET')\n options.headers['content-type'] = 'application/json'\n\n if(typeof options.json !== 'boolean')\n options.body = JSON.stringify(options.json)\n else if(typeof options.body !== 'string')\n options.body = JSON.stringify(options.body)\n }\n \n //BEGIN QS Hack\n var serialize = function(obj) {\n var str = [];\n for(var p in obj)\n if (obj.hasOwnProperty(p)) {\n str.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(obj[p]));\n }\n return str.join(\"&\");\n }\n \n if(options.qs){\n var qs = (typeof options.qs == 'string')? options.qs : serialize(options.qs);\n if(options.uri.indexOf('?') !== -1){ //no get params\n options.uri = options.uri+'&'+qs;\n }else{ //existing get params\n options.uri = options.uri+'?'+qs;\n }\n }\n //END QS Hack\n \n //BEGIN FORM Hack\n var multipart = function(obj) {\n //todo: support file type (useful?)\n var result = {};\n result.boundry = '-------------------------------'+Math.floor(Math.random()*1000000000);\n var lines = [];\n for(var p in obj){\n if (obj.hasOwnProperty(p)) {\n lines.push(\n '--'+result.boundry+\"\\n\"+\n 'Content-Disposition: form-data; name=\"'+p+'\"'+\"\\n\"+\n \"\\n\"+\n obj[p]+\"\\n\"\n );\n }\n }\n lines.push( '--'+result.boundry+'--' );\n result.body = lines.join('');\n result.length = result.body.length;\n result.type = 'multipart/form-data; boundary='+result.boundry;\n return result;\n }\n \n if(options.form){\n if(typeof options.form == 'string') throw('form name unsupported');\n if(options.method === 'POST'){\n var encoding = (options.encoding || 'application/x-www-form-urlencoded').toLowerCase();\n options.headers['content-type'] = encoding;\n switch(encoding){\n case 'application/x-www-form-urlencoded':\n options.body = serialize(options.form).replace(/%20/g, \"+\");\n break;\n case 'multipart/form-data':\n var multi = multipart(options.form);\n //options.headers['content-length'] = multi.length;\n options.body = multi.body;\n options.headers['content-type'] = multi.type;\n break;\n default : throw new Error('unsupported encoding:'+encoding);\n }\n }\n }\n //END FORM Hack\n\n // If onResponse is boolean true, call back immediately when the response is known,\n // not when the full request is complete.\n options.onResponse = options.onResponse || noop\n if(options.onResponse === true) {\n options.onResponse = callback\n options.callback = noop\n }\n\n // XXX Browsers do not like this.\n //if(options.body)\n // options.headers['content-length'] = options.body.length;\n\n // HTTP basic authentication\n if(!options.headers.authorization && options.auth)\n options.headers.authorization = 'Basic ' + b64_enc(options.auth.username + ':' + options.auth.password);\n\n return run_xhr(options)\n}\n\nvar req_seq = 0\nfunction run_xhr(options) {\n var xhr = new XHR\n , timed_out = false\n , is_cors = is_crossDomain(options.uri)\n , supports_cors = ('withCredentials' in xhr)\n\n req_seq += 1\n xhr.seq_id = req_seq\n xhr.id = req_seq + ': ' + options.method + ' ' + options.uri\n xhr._id = xhr.id // I know I will type \"_id\" from habit all the time.\n\n if(is_cors && !supports_cors) {\n var cors_err = new Error('Browser does not support cross-origin request: ' + options.uri)\n cors_err.cors = 'unsupported'\n return options.callback(cors_err, xhr)\n }\n\n xhr.timeoutTimer = setTimeout(too_late, options.timeout)\n function too_late() {\n timed_out = true\n var er = new Error('ETIMEDOUT')\n er.code = 'ETIMEDOUT'\n er.duration = options.timeout\n\n request.log.error('Timeout', { 'id':xhr._id, 'milliseconds':options.timeout })\n return options.callback(er, xhr)\n }\n\n // Some states can be skipped over, so remember what is still incomplete.\n var did = {'response':false, 'loading':false, 'end':false}\n\n xhr.onreadystatechange = on_state_change\n xhr.open(options.method, options.uri, true) // asynchronous\n if(is_cors)\n xhr.withCredentials = !! options.withCredentials\n xhr.send(options.body)\n return xhr\n\n function on_state_change(event) {\n if(timed_out)\n return request.log.debug('Ignoring timed out state change', {'state':xhr.readyState, 'id':xhr.id})\n\n request.log.debug('State change', {'state':xhr.readyState, 'id':xhr.id, 'timed_out':timed_out})\n\n if(xhr.readyState === XHR.OPENED) {\n request.log.debug('Request started', {'id':xhr.id})\n for (var key in options.headers)\n xhr.setRequestHeader(key, options.headers[key])\n }\n\n else if(xhr.readyState === XHR.HEADERS_RECEIVED)\n on_response()\n\n else if(xhr.readyState === XHR.LOADING) {\n on_response()\n on_loading()\n }\n\n else if(xhr.readyState === XHR.DONE) {\n on_response()\n on_loading()\n on_end()\n }\n }\n\n function on_response() {\n if(did.response)\n return\n\n did.response = true\n request.log.debug('Got response', {'id':xhr.id, 'status':xhr.status})\n clearTimeout(xhr.timeoutTimer)\n xhr.statusCode = xhr.status // Node request compatibility\n\n // Detect failed CORS requests.\n if(is_cors && xhr.statusCode == 0) {\n var cors_err = new Error('CORS request rejected: ' + options.uri)\n cors_err.cors = 'rejected'\n\n // Do not process this request further.\n did.loading = true\n did.end = true\n\n return options.callback(cors_err, xhr)\n }\n\n options.onResponse(null, xhr)\n }\n\n function on_loading() {\n if(did.loading)\n return\n\n did.loading = true\n request.log.debug('Response body loading', {'id':xhr.id})\n // TODO: Maybe simulate \"data\" events by watching xhr.responseText\n }\n\n function on_end() {\n if(did.end)\n return\n\n did.end = true\n request.log.debug('Request done', {'id':xhr.id})\n\n xhr.body = xhr.responseText\n if(options.json) {\n try { xhr.body = JSON.parse(xhr.responseText) }\n catch (er) { return options.callback(er, xhr) }\n }\n\n options.callback(null, xhr, xhr.body)\n }\n\n} // request\n\nrequest.withCredentials = false;\nrequest.DEFAULT_TIMEOUT = DEFAULT_TIMEOUT;\n\n//\n// defaults\n//\n\nrequest.defaults = function(options, requester) {\n var def = function (method) {\n var d = function (params, callback) {\n if(typeof params === 'string')\n params = {'uri': params};\n else {\n params = JSON.parse(JSON.stringify(params));\n }\n for (var i in options) {\n if (params[i] === undefined) params[i] = options[i]\n }\n return method(params, callback)\n }\n return d\n }\n var de = def(request)\n de.get = def(request.get)\n de.post = def(request.post)\n de.put = def(request.put)\n de.head = def(request.head)\n return de\n}\n\n//\n// HTTP method shortcuts\n//\n\nvar shortcuts = [ 'get', 'put', 'post', 'head' ];\nshortcuts.forEach(function(shortcut) {\n var method = shortcut.toUpperCase();\n var func = shortcut.toLowerCase();\n\n request[func] = function(opts) {\n if(typeof opts === 'string')\n opts = {'method':method, 'uri':opts};\n else {\n opts = JSON.parse(JSON.stringify(opts));\n opts.method = method;\n }\n\n var args = [opts].concat(Array.prototype.slice.apply(arguments, [1]));\n return request.apply(this, args);\n }\n})\n\n//\n// CouchDB shortcut\n//\n\nrequest.couch = function(options, callback) {\n if(typeof options === 'string')\n options = {'uri':options}\n\n // Just use the request API to do JSON.\n options.json = true\n if(options.body)\n options.json = options.body\n delete options.body\n\n callback = callback || noop\n\n var xhr = request(options, couch_handler)\n return xhr\n\n function couch_handler(er, resp, body) {\n if(er)\n return callback(er, resp, body)\n\n if((resp.statusCode < 200 || resp.statusCode > 299) && body.error) {\n // The body is a Couch JSON object indicating the error.\n er = new Error('CouchDB error: ' + (body.error.reason || body.error.error))\n for (var key in body)\n er[key] = body[key]\n return callback(er, resp, body);\n }\n\n return callback(er, resp, body);\n }\n}\n\n//\n// Utility\n//\n\nfunction noop() {}\n\nfunction getLogger() {\n var logger = {}\n , levels = ['trace', 'debug', 'info', 'warn', 'error']\n , level, i\n\n for(i = 0; i < levels.length; i++) {\n level = levels[i]\n\n logger[level] = noop\n if(typeof console !== 'undefined' && console && console[level])\n logger[level] = formatted(console, level)\n }\n\n return logger\n}\n\nfunction formatted(obj, method) {\n return formatted_logger\n\n function formatted_logger(str, context) {\n if(typeof context === 'object')\n str += ' ' + JSON.stringify(context)\n\n return obj[method].call(obj, str)\n }\n}\n\n// Return whether a URL is a cross-domain request.\nfunction is_crossDomain(url) {\n var rurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/\n\n // jQuery #8138, IE may throw an exception when accessing\n // a field from window.location if document.domain has been set\n var ajaxLocation\n try { ajaxLocation = location.href }\n catch (e) {\n // Use the href attribute of an A element since IE will modify it given document.location\n ajaxLocation = document.createElement( \"a\" );\n ajaxLocation.href = \"\";\n ajaxLocation = ajaxLocation.href;\n }\n\n var ajaxLocParts = rurl.exec(ajaxLocation.toLowerCase()) || []\n , parts = rurl.exec(url.toLowerCase() )\n\n var result = !!(\n parts &&\n ( parts[1] != ajaxLocParts[1]\n || parts[2] != ajaxLocParts[2]\n || (parts[3] || (parts[1] === \"http:\" ? 80 : 443)) != (ajaxLocParts[3] || (ajaxLocParts[1] === \"http:\" ? 80 : 443))\n )\n )\n\n //console.debug('is_crossDomain('+url+') -> ' + result)\n return result\n}\n\n// MIT License from http://phpjs.org/functions/base64_encode:358\nfunction b64_enc (data) {\n // Encodes string using MIME base64 algorithm\n var b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc=\"\", tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n // assume utf8 data\n // data = this.utf8_encode(data+'');\n\n do { // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n\n bits = o1<<16 | o2<<8 | o3;\n\n h1 = bits>>18 & 0x3f;\n h2 = bits>>12 & 0x3f;\n h3 = bits>>6 & 0x3f;\n h4 = bits & 0x3f;\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '==';\n break;\n case 2:\n enc = enc.slice(0, -1) + '=';\n break;\n }\n\n return enc;\n}\n return request;\n//UMD FOOTER START\n}));\n//UMD FOOTER END\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","'use strict';\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _utils = require('flux/utils');\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar INITIAL_STATE = {\n // Whether we're joining the currently viewed room (see isJoining())\n joining: false,\n // Any error that has occurred during joining\n joinError: null,\n // The room ID of the room currently being viewed\n roomId: null,\n\n // The event to scroll to when the room is first viewed\n initialEventId: null,\n // Whether to highlight the initial event\n isInitialEventHighlighted: false,\n\n // The room alias of the room (or null if not originally specified in view_room)\n roomAlias: null,\n // Whether the current room is loading\n roomLoading: false,\n // Any error that has occurred during loading\n roomLoadError: null,\n\n forwardingEvent: null,\n\n quotingEvent: null,\n\n isEditingSettings: false\n};\n\n/**\n * A class for storing application state for RoomView. This is the RoomView's interface\n* with a subset of the js-sdk.\n * ```\n */\n\nvar RoomViewStore = function (_Store) {\n (0, _inherits3.default)(RoomViewStore, _Store);\n\n function RoomViewStore() {\n (0, _classCallCheck3.default)(this, RoomViewStore);\n\n // Initialise state\n var _this = (0, _possibleConstructorReturn3.default)(this, (RoomViewStore.__proto__ || (0, _getPrototypeOf2.default)(RoomViewStore)).call(this, _dispatcher2.default));\n\n _this._state = INITIAL_STATE;\n return _this;\n }\n\n (0, _createClass3.default)(RoomViewStore, [{\n key: '_setState',\n value: function _setState(newState) {\n this._state = (0, _assign2.default)(this._state, newState);\n this.__emitChange();\n }\n }, {\n key: '__onDispatch',\n value: function __onDispatch(payload) {\n switch (payload.action) {\n // view_room:\n // - room_alias: '#somealias:matrix.org'\n // - room_id: '!roomid123:matrix.org'\n // - event_id: '$213456782:matrix.org'\n // - event_offset: 100\n // - highlighted: true\n case 'view_room':\n this._viewRoom(payload);\n break;\n case 'view_my_groups':\n case 'view_group':\n this._setState({\n roomId: null,\n roomAlias: null\n });\n break;\n case 'view_room_error':\n this._viewRoomError(payload);\n break;\n case 'will_join':\n this._setState({\n joining: true\n });\n break;\n case 'cancel_join':\n this._setState({\n joining: false\n });\n break;\n // join_room:\n // - opts: options for joinRoom\n case 'join_room':\n this._joinRoom(payload);\n break;\n case 'join_room_error':\n this._joinRoomError(payload);\n break;\n case 'on_logged_out':\n this.reset();\n break;\n case 'forward_event':\n this._setState({\n forwardingEvent: payload.event\n });\n break;\n case 'reply_to_event':\n this._setState({\n replyingToEvent: payload.event\n });\n break;\n case 'open_room_settings':\n this._setState({\n isEditingSettings: true\n });\n break;\n case 'close_settings':\n this._setState({\n isEditingSettings: false\n });\n break;\n }\n }\n }, {\n key: '_viewRoom',\n value: function _viewRoom(payload) {\n if (payload.room_id) {\n var newState = {\n roomId: payload.room_id,\n roomAlias: payload.room_alias,\n initialEventId: payload.event_id,\n isInitialEventHighlighted: payload.highlighted,\n forwardingEvent: null,\n roomLoading: false,\n roomLoadError: null,\n // should peek by default\n shouldPeek: payload.should_peek === undefined ? true : payload.should_peek,\n // have we sent a join request for this room and are waiting for a response?\n joining: payload.joining || false,\n // Reset replyingToEvent because we don't want cross-room because bad UX\n replyingToEvent: null,\n // pull the user out of Room Settings\n isEditingSettings: false\n };\n\n if (this._state.forwardingEvent) {\n _dispatcher2.default.dispatch({\n action: 'send_event',\n room_id: newState.roomId,\n event: this._state.forwardingEvent\n });\n }\n\n this._setState(newState);\n\n if (payload.auto_join) {\n this._joinRoom(payload);\n }\n } else if (payload.room_alias) {\n // Resolve the alias and then do a second dispatch with the room ID acquired\n this._setState({\n roomId: null,\n initialEventId: null,\n initialEventPixelOffset: null,\n isInitialEventHighlighted: null,\n roomAlias: payload.room_alias,\n roomLoading: true,\n roomLoadError: null\n });\n _MatrixClientPeg2.default.get().getRoomIdForAlias(payload.room_alias).done(function (result) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: result.room_id,\n event_id: payload.event_id,\n highlighted: payload.highlighted,\n room_alias: payload.room_alias,\n auto_join: payload.auto_join,\n oob_data: payload.oob_data\n });\n }, function (err) {\n _dispatcher2.default.dispatch({\n action: 'view_room_error',\n room_id: null,\n room_alias: payload.room_alias,\n err: err\n });\n });\n }\n }\n }, {\n key: '_viewRoomError',\n value: function _viewRoomError(payload) {\n this._setState({\n roomId: payload.room_id,\n roomAlias: payload.room_alias,\n roomLoading: false,\n roomLoadError: payload.err\n });\n }\n }, {\n key: '_joinRoom',\n value: function _joinRoom(payload) {\n this._setState({\n joining: true\n });\n _MatrixClientPeg2.default.get().joinRoom(this._state.roomAlias || this._state.roomId, payload.opts).done(function () {\n // We don't actually need to do anything here: we do *not*\n // clear the 'joining' flag because the Room object and/or\n // our 'joined' member event may not have come down the sync\n // stream yet, and that's the point at which we'd consider\n // the user joined to the room.\n }, function (err) {\n _dispatcher2.default.dispatch({\n action: 'join_room_error',\n err: err\n });\n var msg = err.message ? err.message : (0, _stringify2.default)(err);\n // XXX: We are relying on the error message returned by browsers here.\n // This isn't great, but it does generalize the error being shown to users.\n if (msg && msg.startsWith(\"CORS request rejected\")) {\n msg = (0, _languageHandler._t)(\"There was an error joining the room\");\n }\n if (err.errcode === 'M_INCOMPATIBLE_ROOM_VERSION') {\n msg = React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Sorry, your homeserver is too old to participate in this room.\"),\n React.createElement('br', null),\n (0, _languageHandler._t)(\"Please contact your homeserver administrator.\")\n );\n }\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to join room', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to join room\"),\n description: msg\n });\n });\n }\n }, {\n key: '_joinRoomError',\n value: function _joinRoomError(payload) {\n this._setState({\n joining: false,\n joinError: payload.err\n });\n }\n }, {\n key: 'reset',\n value: function reset() {\n this._state = (0, _assign2.default)({}, INITIAL_STATE);\n }\n\n // The room ID of the room currently being viewed\n\n }, {\n key: 'getRoomId',\n value: function getRoomId() {\n return this._state.roomId;\n }\n\n // The event to scroll to when the room is first viewed\n\n }, {\n key: 'getInitialEventId',\n value: function getInitialEventId() {\n return this._state.initialEventId;\n }\n\n // Whether to highlight the initial event\n\n }, {\n key: 'isInitialEventHighlighted',\n value: function isInitialEventHighlighted() {\n return this._state.isInitialEventHighlighted;\n }\n\n // The room alias of the room (or null if not originally specified in view_room)\n\n }, {\n key: 'getRoomAlias',\n value: function getRoomAlias() {\n return this._state.roomAlias;\n }\n\n // Whether the current room is loading (true whilst resolving an alias)\n\n }, {\n key: 'isRoomLoading',\n value: function isRoomLoading() {\n return this._state.roomLoading;\n }\n\n // Any error that has occurred during loading\n\n }, {\n key: 'getRoomLoadError',\n value: function getRoomLoadError() {\n return this._state.roomLoadError;\n }\n\n // True if we're expecting the user to be joined to the room currently being\n // viewed. Note that this is left true after the join request has finished,\n // since we should still consider a join to be in progress until the room\n // & member events come down the sync.\n //\n // This flag remains true after the room has been sucessfully joined,\n // (this store doesn't listen for the appropriate member events)\n // so you should always observe the joined state from the member event\n // if a room object is present.\n // ie. The correct logic is:\n // if (room) {\n // if (myMember.membership == 'joined') {\n // // user is joined to the room\n // } else {\n // // Not joined\n // }\n // } else {\n // if (RoomViewStore.isJoining()) {\n // // show spinner\n // } else {\n // // show join prompt\n // }\n // }\n\n }, {\n key: 'isJoining',\n value: function isJoining() {\n return this._state.joining;\n }\n\n // Any error that has occurred during joining\n\n }, {\n key: 'getJoinError',\n value: function getJoinError() {\n return this._state.joinError;\n }\n\n // The mxEvent if one is about to be forwarded\n\n }, {\n key: 'getForwardingEvent',\n value: function getForwardingEvent() {\n return this._state.forwardingEvent;\n }\n\n // The mxEvent if one is currently being replied to/quoted\n\n }, {\n key: 'getQuotingEvent',\n value: function getQuotingEvent() {\n return this._state.replyingToEvent;\n }\n }, {\n key: 'isEditingSettings',\n value: function isEditingSettings() {\n return this._state.isEditingSettings;\n }\n }, {\n key: 'shouldPeek',\n value: function shouldPeek() {\n return this._state.shouldPeek;\n }\n }]);\n return RoomViewStore;\n}(_utils.Store);\n\nvar singletonRoomViewStore = null;\nif (!singletonRoomViewStore) {\n singletonRoomViewStore = new RoomViewStore();\n}\nmodule.exports = singletonRoomViewStore;\n//# sourceMappingURL=RoomViewStore.js.map","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","\"use strict\";\n\nvar _matrixTo = require(\"./matrix-to\");\n\nfunction matrixLinkify(linkify) {\n // Text tokens\n var TT = linkify.scanner.TOKENS;\n // Multi tokens\n var MT = linkify.parser.TOKENS;\n var MultiToken = MT.Base;\n var S_START = linkify.parser.start;\n\n if (TT.UNDERSCORE === undefined) {\n throw new Error(\"linkify-matrix requires linkifyjs 2.1.1: this version is too old.\");\n }\n\n var ROOMALIAS = function ROOMALIAS(value) {\n MultiToken.call(this, value);\n this.type = 'roomalias';\n this.isLink = true;\n };\n ROOMALIAS.prototype = new MultiToken();\n\n var S_HASH = S_START.jump(TT.POUND);\n var S_HASH_NAME = new linkify.parser.State();\n var S_HASH_NAME_COLON = new linkify.parser.State();\n var S_HASH_NAME_COLON_DOMAIN = new linkify.parser.State();\n var S_HASH_NAME_COLON_DOMAIN_DOT = new linkify.parser.State();\n var S_ROOMALIAS = new linkify.parser.State(ROOMALIAS);\n var S_ROOMALIAS_COLON = new linkify.parser.State();\n var S_ROOMALIAS_COLON_NUM = new linkify.parser.State(ROOMALIAS);\n\n var roomname_tokens = [TT.DOT, TT.PLUS, TT.NUM, TT.DOMAIN, TT.TLD, TT.UNDERSCORE, TT.POUND,\n\n // because 'localhost' is tokenised to the localhost token,\n // usernames @localhost:foo.com are otherwise not matched!\n TT.LOCALHOST];\n\n S_HASH.on(roomname_tokens, S_HASH_NAME);\n S_HASH_NAME.on(roomname_tokens, S_HASH_NAME);\n S_HASH_NAME.on(TT.DOMAIN, S_HASH_NAME);\n\n S_HASH_NAME.on(TT.COLON, S_HASH_NAME_COLON);\n\n S_HASH_NAME_COLON.on(TT.DOMAIN, S_HASH_NAME_COLON_DOMAIN);\n S_HASH_NAME_COLON.on(TT.LOCALHOST, S_ROOMALIAS); // accept #foo:localhost\n S_HASH_NAME_COLON.on(TT.TLD, S_ROOMALIAS); // accept #foo:com (mostly for (TLD|DOMAIN)+ mixing)\n S_HASH_NAME_COLON_DOMAIN.on(TT.DOT, S_HASH_NAME_COLON_DOMAIN_DOT);\n S_HASH_NAME_COLON_DOMAIN_DOT.on(TT.DOMAIN, S_HASH_NAME_COLON_DOMAIN);\n S_HASH_NAME_COLON_DOMAIN_DOT.on(TT.TLD, S_ROOMALIAS);\n\n S_ROOMALIAS.on(TT.DOT, S_HASH_NAME_COLON_DOMAIN_DOT); // accept repeated TLDs (e.g .org.uk)\n S_ROOMALIAS.on(TT.COLON, S_ROOMALIAS_COLON); // do not accept trailing `:`\n S_ROOMALIAS_COLON.on(TT.NUM, S_ROOMALIAS_COLON_NUM); // but do accept :NUM (port specifier)\n\n\n var USERID = function USERID(value) {\n MultiToken.call(this, value);\n this.type = 'userid';\n this.isLink = true;\n };\n USERID.prototype = new MultiToken();\n\n var S_AT = S_START.jump(TT.AT);\n var S_AT_NAME = new linkify.parser.State();\n var S_AT_NAME_COLON = new linkify.parser.State();\n var S_AT_NAME_COLON_DOMAIN = new linkify.parser.State();\n var S_AT_NAME_COLON_DOMAIN_DOT = new linkify.parser.State();\n var S_USERID = new linkify.parser.State(USERID);\n var S_USERID_COLON = new linkify.parser.State();\n var S_USERID_COLON_NUM = new linkify.parser.State(USERID);\n\n var username_tokens = [TT.DOT, TT.UNDERSCORE, TT.PLUS, TT.NUM, TT.DOMAIN, TT.TLD,\n\n // as in roomname_tokens\n TT.LOCALHOST];\n\n S_AT.on(username_tokens, S_AT_NAME);\n S_AT_NAME.on(username_tokens, S_AT_NAME);\n S_AT_NAME.on(TT.DOMAIN, S_AT_NAME);\n\n S_AT_NAME.on(TT.COLON, S_AT_NAME_COLON);\n\n S_AT_NAME_COLON.on(TT.DOMAIN, S_AT_NAME_COLON_DOMAIN);\n S_AT_NAME_COLON.on(TT.LOCALHOST, S_USERID); // accept @foo:localhost\n S_AT_NAME_COLON.on(TT.TLD, S_USERID); // accept @foo:com (mostly for (TLD|DOMAIN)+ mixing)\n S_AT_NAME_COLON_DOMAIN.on(TT.DOT, S_AT_NAME_COLON_DOMAIN_DOT);\n S_AT_NAME_COLON_DOMAIN_DOT.on(TT.DOMAIN, S_AT_NAME_COLON_DOMAIN);\n S_AT_NAME_COLON_DOMAIN_DOT.on(TT.TLD, S_USERID);\n\n S_USERID.on(TT.DOT, S_AT_NAME_COLON_DOMAIN_DOT); // accept repeated TLDs (e.g .org.uk)\n S_USERID.on(TT.COLON, S_USERID_COLON); // do not accept trailing `:`\n S_USERID_COLON.on(TT.NUM, S_USERID_COLON_NUM); // but do accept :NUM (port specifier)\n\n\n var GROUPID = function GROUPID(value) {\n MultiToken.call(this, value);\n this.type = 'groupid';\n this.isLink = true;\n };\n GROUPID.prototype = new MultiToken();\n\n var S_PLUS = S_START.jump(TT.PLUS);\n var S_PLUS_NAME = new linkify.parser.State();\n var S_PLUS_NAME_COLON = new linkify.parser.State();\n var S_PLUS_NAME_COLON_DOMAIN = new linkify.parser.State();\n var S_PLUS_NAME_COLON_DOMAIN_DOT = new linkify.parser.State();\n var S_GROUPID = new linkify.parser.State(GROUPID);\n var S_GROUPID_COLON = new linkify.parser.State();\n var S_GROUPID_COLON_NUM = new linkify.parser.State(GROUPID);\n\n var groupid_tokens = [TT.DOT, TT.UNDERSCORE, TT.PLUS, TT.NUM, TT.DOMAIN, TT.TLD,\n\n // as in roomname_tokens\n TT.LOCALHOST];\n\n S_PLUS.on(groupid_tokens, S_PLUS_NAME);\n S_PLUS_NAME.on(groupid_tokens, S_PLUS_NAME);\n S_PLUS_NAME.on(TT.DOMAIN, S_PLUS_NAME);\n\n S_PLUS_NAME.on(TT.COLON, S_PLUS_NAME_COLON);\n\n S_PLUS_NAME_COLON.on(TT.DOMAIN, S_PLUS_NAME_COLON_DOMAIN);\n S_PLUS_NAME_COLON.on(TT.LOCALHOST, S_GROUPID); // accept +foo:localhost\n S_PLUS_NAME_COLON.on(TT.TLD, S_GROUPID); // accept +foo:com (mostly for (TLD|DOMAIN)+ mixing)\n S_PLUS_NAME_COLON_DOMAIN.on(TT.DOT, S_PLUS_NAME_COLON_DOMAIN_DOT);\n S_PLUS_NAME_COLON_DOMAIN_DOT.on(TT.DOMAIN, S_PLUS_NAME_COLON_DOMAIN);\n S_PLUS_NAME_COLON_DOMAIN_DOT.on(TT.TLD, S_GROUPID);\n\n S_GROUPID.on(TT.DOT, S_PLUS_NAME_COLON_DOMAIN_DOT); // accept repeated TLDs (e.g .org.uk)\n S_GROUPID.on(TT.COLON, S_GROUPID_COLON); // do not accept trailing `:`\n S_GROUPID_COLON.on(TT.NUM, S_GROUPID_COLON_NUM); // but do accept :NUM (port specifier)\n}\n\n// stubs, overwritten in MatrixChat's componentDidMount\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmatrixLinkify.onUserClick = function (e, userId) {\n e.preventDefault();\n};\nmatrixLinkify.onAliasClick = function (e, roomAlias) {\n e.preventDefault();\n};\nmatrixLinkify.onGroupClick = function (e, groupId) {\n e.preventDefault();\n};\n\nvar escapeRegExp = function escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n};\n\n// Recognise URLs from both our local vector and official vector as vector.\n// anyone else really should be using matrix.to.\nmatrixLinkify.VECTOR_URL_PATTERN = \"^(?:https?:\\/\\/)?(?:\" + escapeRegExp(window.location.host + window.location.pathname) + \"|\" + \"(?:www\\\\.)?(?:riot|vector)\\\\.im/(?:app|beta|staging|develop)/\" + \")(#.*)\";\n\nmatrixLinkify.MATRIXTO_URL_PATTERN = \"^(?:https?:\\/\\/)?(?:www\\\\.)?matrix\\\\.to/#/(([#@!+]).*)\";\nmatrixLinkify.MATRIXTO_MD_LINK_PATTERN = '\\\\[([^\\\\]]*)\\\\]\\\\((?:https?:\\/\\/)?(?:www\\\\.)?matrix\\\\.to/#/([#@!+][^\\\\)]*)\\\\)';\nmatrixLinkify.MATRIXTO_BASE_URL = _matrixTo.baseUrl;\n\nvar matrixToEntityMap = {\n '@': '#/user/',\n '#': '#/room/',\n '!': '#/room/',\n '+': '#/group/'\n};\n\nmatrixLinkify.options = {\n events: function events(href, type) {\n switch (type) {\n case \"userid\":\n return {\n click: function click(e) {\n matrixLinkify.onUserClick(e, href);\n }\n };\n case \"roomalias\":\n return {\n click: function click(e) {\n matrixLinkify.onAliasClick(e, href);\n }\n };\n case \"groupid\":\n return {\n click: function click(e) {\n matrixLinkify.onGroupClick(e, href);\n }\n };\n }\n },\n\n formatHref: function formatHref(href, type) {\n switch (type) {\n case 'roomalias':\n case 'userid':\n case 'groupid':\n return matrixLinkify.MATRIXTO_BASE_URL + '/#/' + href;\n default:\n {\n // FIXME: horrible duplication with HtmlUtils' transform tags\n var m = href.match(matrixLinkify.VECTOR_URL_PATTERN);\n if (m) {\n return m[1];\n }\n m = href.match(matrixLinkify.MATRIXTO_URL_PATTERN);\n if (m) {\n var entity = m[1];\n if (matrixToEntityMap[entity[0]]) return matrixToEntityMap[entity[0]] + entity;\n }\n\n return href;\n }\n }\n },\n\n linkAttributes: {\n rel: 'noopener'\n },\n\n target: function target(href, type) {\n if (type === 'url') {\n if (href.match(matrixLinkify.VECTOR_URL_PATTERN) || href.match(matrixLinkify.MATRIXTO_URL_PATTERN)) {\n return null;\n } else {\n return '_blank';\n }\n }\n return null;\n }\n};\n\nmodule.exports = matrixLinkify;\n//# sourceMappingURL=linkify-matrix.js.map","\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","var Map = require('./es6.map');\nvar $export = require('./_export');\nvar shared = require('./_shared')('metadata');\nvar store = shared.store || (shared.store = new (require('./es6.weak-map'))());\n\nvar getOrCreateMetadataMap = function (target, targetKey, create) {\n var targetMetadata = store.get(target);\n if (!targetMetadata) {\n if (!create) return undefined;\n store.set(target, targetMetadata = new Map());\n }\n var keyMetadata = targetMetadata.get(targetKey);\n if (!keyMetadata) {\n if (!create) return undefined;\n targetMetadata.set(targetKey, keyMetadata = new Map());\n } return keyMetadata;\n};\nvar ordinaryHasOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? false : metadataMap.has(MetadataKey);\n};\nvar ordinaryGetOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);\n};\nvar ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {\n getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);\n};\nvar ordinaryOwnMetadataKeys = function (target, targetKey) {\n var metadataMap = getOrCreateMetadataMap(target, targetKey, false);\n var keys = [];\n if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });\n return keys;\n};\nvar toMetaKey = function (it) {\n return it === undefined || typeof it == 'symbol' ? it : String(it);\n};\nvar exp = function (O) {\n $export($export.S, 'Reflect', O);\n};\n\nmodule.exports = {\n store: store,\n map: getOrCreateMetadataMap,\n has: ordinaryHasOwnMetadata,\n get: ordinaryGetOwnMetadata,\n set: ordinaryDefineOwnMetadata,\n keys: ordinaryOwnMetadataKeys,\n key: toMetaKey,\n exp: exp\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\n\nmodule.exports = ReactCurrentOwner;","exports.f = {}.propertyIsEnumerable;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnForAddedNewProperty = false;\nvar isProxySupported = typeof Proxy === 'function';\n\nvar shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar EventInterface = {\n type: null,\n target: null,\n // currentTarget is set when dispatching; no use in copying it here\n currentTarget: emptyFunction.thatReturnsNull,\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\n\n/**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n *\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {*} targetInst Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @param {DOMEventTarget} nativeEventTarget Target node.\n */\nfunction SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {\n if (process.env.NODE_ENV !== 'production') {\n // these have a getter/setter for warnings\n delete this.nativeEvent;\n delete this.preventDefault;\n delete this.stopPropagation;\n }\n\n this.dispatchConfig = dispatchConfig;\n this._targetInst = targetInst;\n this.nativeEvent = nativeEvent;\n\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (!Interface.hasOwnProperty(propName)) {\n continue;\n }\n if (process.env.NODE_ENV !== 'production') {\n delete this[propName]; // this has a getter/setter for warnings\n }\n var normalize = Interface[propName];\n if (normalize) {\n this[propName] = normalize(nativeEvent);\n } else {\n if (propName === 'target') {\n this.target = nativeEventTarget;\n } else {\n this[propName] = nativeEvent[propName];\n }\n }\n }\n\n var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n if (defaultPrevented) {\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n } else {\n this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n }\n this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n return this;\n}\n\n_assign(SyntheticEvent.prototype, {\n preventDefault: function () {\n this.defaultPrevented = true;\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.preventDefault) {\n event.preventDefault();\n // eslint-disable-next-line valid-typeof\n } else if (typeof event.returnValue !== 'unknown') {\n event.returnValue = false;\n }\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n },\n\n stopPropagation: function () {\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.stopPropagation) {\n event.stopPropagation();\n // eslint-disable-next-line valid-typeof\n } else if (typeof event.cancelBubble !== 'unknown') {\n // The ChangeEventPlugin registers a \"propertychange\" event for\n // IE. This event does not support bubbling or cancelling, and\n // any references to cancelBubble throw \"Member not found\". A\n // typeof check of \"unknown\" circumvents this issue (and is also\n // IE specific).\n event.cancelBubble = true;\n }\n\n this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * We release all dispatched `SyntheticEvent`s after each event loop, adding\n * them back into the pool. This allows a way to hold onto a reference that\n * won't be added back into the pool.\n */\n persist: function () {\n this.isPersistent = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * Checks if this event should be released back into the pool.\n *\n * @return {boolean} True if this should not be released, false otherwise.\n */\n isPersistent: emptyFunction.thatReturnsFalse,\n\n /**\n * `PooledClass` looks for `destructor` on each instance it releases.\n */\n destructor: function () {\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (process.env.NODE_ENV !== 'production') {\n Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));\n } else {\n this[propName] = null;\n }\n }\n for (var i = 0; i < shouldBeReleasedProperties.length; i++) {\n this[shouldBeReleasedProperties[i]] = null;\n }\n if (process.env.NODE_ENV !== 'production') {\n Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));\n Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction));\n Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction));\n }\n }\n});\n\nSyntheticEvent.Interface = EventInterface;\n\n/**\n * Helper to reduce boilerplate when creating subclasses.\n *\n * @param {function} Class\n * @param {?object} Interface\n */\nSyntheticEvent.augmentClass = function (Class, Interface) {\n var Super = this;\n\n var E = function () {};\n E.prototype = Super.prototype;\n var prototype = new E();\n\n _assign(prototype, Class.prototype);\n Class.prototype = prototype;\n Class.prototype.constructor = Class;\n\n Class.Interface = _assign({}, Super.Interface, Interface);\n Class.augmentClass = Super.augmentClass;\n\n PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);\n};\n\n/** Proxying after everything set on SyntheticEvent\n * to resolve Proxy issue on some WebKit browsers\n * in which some Event properties are set to undefined (GH#10010)\n */\nif (process.env.NODE_ENV !== 'production') {\n if (isProxySupported) {\n /*eslint-disable no-func-assign */\n SyntheticEvent = new Proxy(SyntheticEvent, {\n construct: function (target, args) {\n return this.apply(target, Object.create(target.prototype), args);\n },\n apply: function (constructor, that, args) {\n return new Proxy(constructor.apply(that, args), {\n set: function (target, prop, value) {\n if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {\n process.env.NODE_ENV !== 'production' ? warning(didWarnForAddedNewProperty || target.isPersistent(), \"This synthetic event is reused for performance reasons. If you're \" + \"seeing this, you're adding a new property in the synthetic event object. \" + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0;\n didWarnForAddedNewProperty = true;\n }\n target[prop] = value;\n return true;\n }\n });\n }\n });\n /*eslint-enable no-func-assign */\n }\n}\n\nPooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);\n\nmodule.exports = SyntheticEvent;\n\n/**\n * Helper to nullify syntheticEvent instance properties when destructing\n *\n * @param {object} SyntheticEvent\n * @param {String} propName\n * @return {object} defineProperty object\n */\nfunction getPooledWarningPropertyDefinition(propName, getVal) {\n var isFunction = typeof getVal === 'function';\n return {\n configurable: true,\n set: set,\n get: get\n };\n\n function set(val) {\n var action = isFunction ? 'setting the method' : 'setting the property';\n warn(action, 'This is effectively a no-op');\n return val;\n }\n\n function get() {\n var action = isFunction ? 'accessing the method' : 'accessing the property';\n var result = isFunction ? 'This is a no-op function' : 'This is set to null';\n warn(action, result);\n return getVal;\n }\n\n function warn(action, result) {\n var warningCondition = false;\n process.env.NODE_ENV !== 'production' ? warning(warningCondition, \"This synthetic event is reused for performance reasons. If you're seeing this, \" + \"you're %s `%s` on a released/nullified synthetic event. %s. \" + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0;\n }\n}","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _startCallApp = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(roomId, type) {\n var scalarClient, haveScalar, ErrorDialog, room, currentRoomWidgets, _ErrorDialog3, currentJitsiWidgets, _ErrorDialog4, widgetSessionId, confId, queryString, widgetUrl, widgetData, widgetId;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // check for a working intgrations manager. Technically we could put\n // the state event in anyway, but the resulting widget would then not\n // work for us. Better that the user knows before everyone else in the\n // room sees it.\n scalarClient = new _ScalarAuthClient2.default();\n haveScalar = false;\n _context.prev = 2;\n _context.next = 5;\n return (0, _bluebird.resolve)(scalarClient.connect());\n\n case 5:\n haveScalar = scalarClient.hasCredentials();\n _context.next = 10;\n break;\n\n case 8:\n _context.prev = 8;\n _context.t0 = _context['catch'](2);\n\n case 10:\n if (haveScalar) {\n _context.next = 14;\n break;\n }\n\n ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n\n _Modal2.default.createTrackedDialog('Could not connect to the integration server', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Could not connect to the integration server'),\n description: (0, _languageHandler._t)('A conference call could not be started because the intgrations server is not available')\n });\n return _context.abrupt('return');\n\n case 14:\n\n _dispatcher2.default.dispatch({\n action: 'appsDrawer',\n show: true\n });\n\n room = _MatrixClientPeg2.default.get().getRoom(roomId);\n currentRoomWidgets = _WidgetUtils2.default.getRoomWidgets(room);\n\n if (!_WidgetEchoStore2.default.roomHasPendingWidgetsOfType(roomId, currentRoomWidgets, 'jitsi')) {\n _context.next = 21;\n break;\n }\n\n _ErrorDialog3 = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n\n _Modal2.default.createTrackedDialog('Call already in progress', '', _ErrorDialog3, {\n title: (0, _languageHandler._t)('Call in Progress'),\n description: (0, _languageHandler._t)('A call is currently being placed!')\n });\n return _context.abrupt('return');\n\n case 21:\n currentJitsiWidgets = currentRoomWidgets.filter(function (ev) {\n return ev.getContent().type === 'jitsi';\n });\n\n if (!(currentJitsiWidgets.length > 0)) {\n _context.next = 27;\n break;\n }\n\n console.warn(\"Refusing to start conference call widget in \" + roomId + \" a conference call widget is already present\");\n _ErrorDialog4 = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n\n _Modal2.default.createTrackedDialog('Already have Jitsi Widget', '', _ErrorDialog4, {\n title: (0, _languageHandler._t)('Call in Progress'),\n description: (0, _languageHandler._t)('A call is already in progress!')\n });\n return _context.abrupt('return');\n\n case 27:\n\n // This inherits its poor naming from the field of the same name that goes into\n // the event. It's just a random string to make the Jitsi URLs unique.\n widgetSessionId = Math.random().toString(36).substring(2);\n confId = room.roomId.replace(/[^A-Za-z0-9]/g, '') + widgetSessionId;\n // NB. we can't just encodeURICompoent all of these because the $ signs need to be there\n // (but currently the only thing that needs encoding is the confId)\n\n queryString = ['confId=' + encodeURIComponent(confId), 'isAudioConf=' + (type === 'voice' ? 'true' : 'false'), 'displayName=$matrix_display_name', 'avatarUrl=$matrix_avatar_url', 'email=$matrix_user_id'].join('&');\n widgetUrl = void 0;\n\n if (_SdkConfig2.default.get().integrations_jitsi_widget_url) {\n // Try this config key. This probably isn't ideal as a way of discovering this\n // URL, but this will at least allow the integration manager to not be hardcoded.\n widgetUrl = _SdkConfig2.default.get().integrations_jitsi_widget_url + '?' + queryString;\n } else {\n widgetUrl = _SdkConfig2.default.get().integrations_rest_url + '/widgets/jitsi.html?' + queryString;\n }\n\n widgetData = { widgetSessionId: widgetSessionId };\n widgetId = 'jitsi_' + _MatrixClientPeg2.default.get().credentials.userId + '_' + Date.now();\n\n\n _WidgetUtils2.default.setRoomWidget(roomId, widgetId, 'jitsi', widgetUrl, 'Jitsi', widgetData).then(function () {\n console.log('Jitsi widget added');\n }).catch(function (e) {\n if (e.errcode === 'M_FORBIDDEN') {\n var _ErrorDialog5 = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n _Modal2.default.createTrackedDialog('Call Failed', '', _ErrorDialog5, {\n title: (0, _languageHandler._t)('Permission Required'),\n description: (0, _languageHandler._t)(\"You do not have permission to start a conference call in this room\")\n });\n }\n console.error(e);\n });\n\n case 35:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[2, 8]]);\n }));\n\n return function _startCallApp(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\n// FIXME: Nasty way of making sure we only register\n// with the dispatcher once\n\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _PlatformPeg = require('./PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _SdkConfig = require('./SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _cryptodevices = require('./cryptodevices');\n\nvar _WidgetUtils = require('./utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _WidgetEchoStore = require('./stores/WidgetEchoStore');\n\nvar _WidgetEchoStore2 = _interopRequireDefault(_WidgetEchoStore);\n\nvar _ScalarAuthClient = require('./ScalarAuthClient');\n\nvar _ScalarAuthClient2 = _interopRequireDefault(_ScalarAuthClient);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/*\n * Manages a list of all the currently active calls.\n *\n * This handler dispatches when voip calls are added/updated/removed from this list:\n * {\n * action: 'call_state'\n * room_id: <room ID of the call>\n * }\n *\n * To know the state of the call, this handler exposes a getter to\n * obtain the call for a room:\n * var call = CallHandler.getCall(roomId)\n * var state = call.call_state; // ringing|ringback|connected|ended|busy|stop_ringback|stop_ringing\n *\n * This handler listens for and handles the following actions:\n * {\n * action: 'place_call',\n * type: 'voice|video',\n * room_id: <room that the place call button was pressed in>\n * }\n *\n * {\n * action: 'incoming_call'\n * call: MatrixCall\n * }\n *\n * {\n * action: 'hangup'\n * room_id: <room that the hangup button was pressed in>\n * }\n *\n * {\n * action: 'answer'\n * room_id: <room that the answer button was pressed in>\n * }\n */\n\nglobal.mxCalls = {\n //room_id: MatrixCall\n};\nvar calls = global.mxCalls;\nvar ConferenceHandler = null;\n\nvar audioPromises = {};\n\nfunction play(audioId) {\n // TODO: Attach an invisible element for this instead\n // which listens?\n var audio = document.getElementById(audioId);\n if (audio) {\n if (audioPromises[audioId]) {\n audioPromises[audioId] = audioPromises[audioId].then(function () {\n audio.load();\n return audio.play();\n });\n } else {\n audioPromises[audioId] = audio.play();\n }\n }\n}\n\nfunction pause(audioId) {\n // TODO: Attach an invisible element for this instead\n // which listens?\n var audio = document.getElementById(audioId);\n if (audio) {\n if (audioPromises[audioId]) {\n audioPromises[audioId] = audioPromises[audioId].then(function () {\n return audio.pause();\n });\n } else {\n // pause doesn't actually return a promise, but might as well do this for symmetry with play();\n audioPromises[audioId] = audio.pause();\n }\n }\n}\n\nfunction _reAttemptCall(call) {\n if (call.direction === 'outbound') {\n _dispatcher2.default.dispatch({\n action: 'place_call',\n room_id: call.roomId,\n type: call.type\n });\n } else {\n call.answer();\n }\n}\n\nfunction _setCallListeners(call) {\n call.on(\"error\", function (err) {\n console.error(\"Call error: %s\", err);\n console.error(err.stack);\n if (err.code === 'unknown_devices') {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n\n _Modal2.default.createTrackedDialog('Call Failed', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Call Failed'),\n description: (0, _languageHandler._t)(\"There are unknown devices in this room: \" + \"if you proceed without verifying them, it will be \" + \"possible for someone to eavesdrop on your call.\"),\n button: (0, _languageHandler._t)('Review Devices'),\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n var room = _MatrixClientPeg2.default.get().getRoom(call.roomId);\n (0, _cryptodevices.showUnknownDeviceDialogForCalls)(_MatrixClientPeg2.default.get(), room, function () {\n _reAttemptCall(call);\n }, call.direction === 'outbound' ? (0, _languageHandler._t)(\"Call Anyway\") : (0, _languageHandler._t)(\"Answer Anyway\"), call.direction === 'outbound' ? (0, _languageHandler._t)(\"Call\") : (0, _languageHandler._t)(\"Answer\"));\n }\n }\n });\n } else {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n _Modal2.default.createTrackedDialog('Call Failed', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Call Failed'),\n description: err.message\n });\n }\n });\n call.on(\"hangup\", function () {\n _setCallState(undefined, call.roomId, \"ended\");\n });\n // map web rtc states to dummy UI state\n // ringing|ringback|connected|ended|busy|stop_ringback|stop_ringing\n call.on(\"state\", function (newState, oldState) {\n if (newState === \"ringing\") {\n _setCallState(call, call.roomId, \"ringing\");\n pause(\"ringbackAudio\");\n } else if (newState === \"invite_sent\") {\n _setCallState(call, call.roomId, \"ringback\");\n play(\"ringbackAudio\");\n } else if (newState === \"ended\" && oldState === \"connected\") {\n _setCallState(undefined, call.roomId, \"ended\");\n pause(\"ringbackAudio\");\n play(\"callendAudio\");\n } else if (newState === \"ended\" && oldState === \"invite_sent\" && (call.hangupParty === \"remote\" || call.hangupParty === \"local\" && call.hangupReason === \"invite_timeout\")) {\n _setCallState(call, call.roomId, \"busy\");\n pause(\"ringbackAudio\");\n play(\"busyAudio\");\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Call Handler', 'Call Timeout', ErrorDialog, {\n title: (0, _languageHandler._t)('Call Timeout'),\n description: (0, _languageHandler._t)('The remote side failed to pick up') + '.'\n });\n } else if (oldState === \"invite_sent\") {\n _setCallState(call, call.roomId, \"stop_ringback\");\n pause(\"ringbackAudio\");\n } else if (oldState === \"ringing\") {\n _setCallState(call, call.roomId, \"stop_ringing\");\n pause(\"ringbackAudio\");\n } else if (newState === \"connected\") {\n _setCallState(call, call.roomId, \"connected\");\n pause(\"ringbackAudio\");\n }\n });\n}\n\nfunction _setCallState(call, roomId, status) {\n console.log(\"Call state in %s changed to %s (%s)\", roomId, status, call ? call.call_state : \"-\");\n calls[roomId] = call;\n\n if (status === \"ringing\") {\n play(\"ringAudio\");\n } else if (call && call.call_state === \"ringing\") {\n pause(\"ringAudio\");\n }\n\n if (call) {\n call.call_state = status;\n }\n _dispatcher2.default.dispatch({\n action: 'call_state',\n room_id: roomId,\n state: status\n });\n}\n\nfunction _onAction(payload) {\n function placeCall(newCall) {\n _setCallListeners(newCall);\n if (payload.type === 'voice') {\n newCall.placeVoiceCall();\n } else if (payload.type === 'video') {\n newCall.placeVideoCall(payload.remote_element, payload.local_element);\n } else if (payload.type === 'screensharing') {\n var screenCapErrorString = _PlatformPeg2.default.get().screenCaptureErrorString();\n if (screenCapErrorString) {\n _setCallState(undefined, newCall.roomId, \"ended\");\n console.log(\"Can't capture screen: \" + screenCapErrorString);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Call Handler', 'Unable to capture screen', ErrorDialog, {\n title: (0, _languageHandler._t)('Unable to capture screen'),\n description: screenCapErrorString\n });\n return;\n }\n newCall.placeScreenSharingCall(payload.remote_element, payload.local_element);\n } else {\n console.error(\"Unknown conf call type: %s\", payload.type);\n }\n }\n\n switch (payload.action) {\n case 'place_call':\n {\n if (module.exports.getAnyActiveCall()) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Call Handler', 'Existing Call', ErrorDialog, {\n title: (0, _languageHandler._t)('Existing Call'),\n description: (0, _languageHandler._t)('You are already in a call.')\n });\n return; // don't allow >1 call to be placed.\n }\n\n // if the runtime env doesn't do VoIP, whine.\n if (!_MatrixClientPeg2.default.get().supportsVoip()) {\n var _ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Call Handler', 'VoIP is unsupported', _ErrorDialog, {\n title: (0, _languageHandler._t)('VoIP is unsupported'),\n description: (0, _languageHandler._t)('You cannot place VoIP calls in this browser.')\n });\n return;\n }\n\n var room = _MatrixClientPeg2.default.get().getRoom(payload.room_id);\n if (!room) {\n console.error(\"Room %s does not exist.\", payload.room_id);\n return;\n }\n\n var members = room.getJoinedMembers();\n if (members.length <= 1) {\n var _ErrorDialog2 = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Call Handler', 'Cannot place call with self', _ErrorDialog2, {\n description: (0, _languageHandler._t)('You cannot place a call with yourself.')\n });\n return;\n } else if (members.length === 2) {\n console.log(\"Place %s call in %s\", payload.type, payload.room_id);\n var call = _matrixJsSdk2.default.createNewMatrixCall(_MatrixClientPeg2.default.get(), payload.room_id);\n placeCall(call);\n } else {\n // > 2\n _dispatcher2.default.dispatch({\n action: \"place_conference_call\",\n room_id: payload.room_id,\n type: payload.type,\n remote_element: payload.remote_element,\n local_element: payload.local_element\n });\n }\n }\n break;\n case 'place_conference_call':\n console.log(\"Place conference call in %s\", payload.room_id);\n _startCallApp(payload.room_id, payload.type);\n break;\n case 'incoming_call':\n {\n if (module.exports.getAnyActiveCall()) {\n // ignore multiple incoming calls. in future, we may want a line-1/line-2 setup.\n // we avoid rejecting with \"busy\" in case the user wants to answer it on a different device.\n // in future we could signal a \"local busy\" as a warning to the caller.\n // see https://github.com/vector-im/vector-web/issues/1964\n return;\n }\n\n // if the runtime env doesn't do VoIP, stop here.\n if (!_MatrixClientPeg2.default.get().supportsVoip()) {\n return;\n }\n\n var _call = payload.call;\n _setCallListeners(_call);\n _setCallState(_call, _call.roomId, \"ringing\");\n }\n break;\n case 'hangup':\n if (!calls[payload.room_id]) {\n return; // no call to hangup\n }\n calls[payload.room_id].hangup();\n _setCallState(null, payload.room_id, \"ended\");\n break;\n case 'answer':\n if (!calls[payload.room_id]) {\n return; // no call to answer\n }\n calls[payload.room_id].answer();\n _setCallState(calls[payload.room_id], payload.room_id, \"connected\");\n _dispatcher2.default.dispatch({\n action: \"view_room\",\n room_id: payload.room_id\n });\n break;\n }\n}\n\nif (!global.mxCallHandler) {\n _dispatcher2.default.register(_onAction);\n}\n\nvar callHandler = {\n getCallForRoom: function getCallForRoom(roomId) {\n var call = module.exports.getCall(roomId);\n if (call) return call;\n\n if (ConferenceHandler) {\n call = ConferenceHandler.getConferenceCallForRoom(roomId);\n }\n if (call) return call;\n\n return null;\n },\n\n getCall: function getCall(roomId) {\n return calls[roomId] || null;\n },\n\n getAnyActiveCall: function getAnyActiveCall() {\n var roomsWithCalls = (0, _keys2.default)(calls);\n for (var i = 0; i < roomsWithCalls.length; i++) {\n if (calls[roomsWithCalls[i]] && calls[roomsWithCalls[i]].call_state !== \"ended\") {\n return calls[roomsWithCalls[i]];\n }\n }\n return null;\n },\n\n /**\n * The conference handler is a module that deals with implementation-specific\n * multi-party calling implementations. Riot passes in its own which creates\n * a one-to-one call with a freeswitch conference bridge. As of July 2018,\n * the de-facto way of conference calling is a Jitsi widget, so this is\n * deprecated. It reamins here for two reasons:\n * 1. So Riot still supports joining existing freeswitch conference calls\n * (but doesn't support creating them). After a transition period, we can\n * remove support for joining them too.\n * 2. To hide the one-to-one rooms that old-style conferencing creates. This\n * is much harder to remove: probably either we make Riot leave & forget these\n * rooms after we remove support for joining freeswitch conferences, or we\n * accept that random rooms with cryptic users will suddently appear for\n * anyone who's ever used conference calling, or we are stuck with this\n * code forever.\n *\n * @param {object} confHandler The conference handler object\n */\n setConferenceHandler: function setConferenceHandler(confHandler) {\n ConferenceHandler = confHandler;\n },\n\n getConferenceHandler: function getConferenceHandler() {\n return ConferenceHandler;\n }\n};\n// Only things in here which actually need to be global are the\n// calls list (done separately) and making sure we only register\n// with the dispatcher once (which uses this mechanism but checks\n// separately). This could be tidied up.\nif (global.mxCallHandler === undefined) {\n global.mxCallHandler = callHandler;\n}\n\nmodule.exports = global.mxCallHandler;\n//# sourceMappingURL=CallHandler.js.map","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _uniq2 = require('lodash/uniq');\n\nvar _uniq3 = _interopRequireDefault(_uniq2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Class that takes a Matrix Client and flips the m.direct map\n * so the operation of mapping a room ID to which user it's a DM\n * with can be performed efficiently.\n *\n * With 'start', this can also keep itself up to date over time.\n */\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DMRoomMap = function () {\n function DMRoomMap(matrixClient) {\n (0, _classCallCheck3.default)(this, DMRoomMap);\n\n this.matrixClient = matrixClient;\n this.roomToUser = null;\n // see _onAccountData\n this._hasSentOutPatchDirectAccountDataPatch = false;\n\n // XXX: Force-bind the event handler method because it\n // doesn't call it with our object as the 'this'\n // (use a static property arrow function for this when we can)\n this._onAccountData = this._onAccountData.bind(this);\n\n var mDirectEvent = matrixClient.getAccountData('m.direct');\n this.mDirectEvent = mDirectEvent ? mDirectEvent.getContent() : {};\n this.userToRooms = null;\n }\n\n /**\n * Makes and returns a new shared instance that can then be accessed\n * with shared(). This returned instance is not automatically started.\n */\n\n\n (0, _createClass3.default)(DMRoomMap, [{\n key: 'start',\n value: function start() {\n this._populateRoomToUser();\n this.matrixClient.on(\"accountData\", this._onAccountData);\n }\n }, {\n key: 'stop',\n value: function stop() {\n this.matrixClient.removeListener(\"accountData\", this._onAccountData);\n }\n }, {\n key: '_onAccountData',\n value: function _onAccountData(ev) {\n if (ev.getType() == 'm.direct') {\n this.mDirectEvent = this.matrixClient.getAccountData('m.direct').getContent() || {};\n this.userToRooms = null;\n this.roomToUser = null;\n }\n }\n /**\n * some client bug somewhere is causing some DMs to be marked\n * with ourself, not the other user. Fix it by guessing the other user and\n * modifying userToRooms\n */\n\n }, {\n key: '_patchUpSelfDMs',\n value: function _patchUpSelfDMs(userToRooms) {\n var _this = this;\n\n var myUserId = this.matrixClient.getUserId();\n var selfRoomIds = userToRooms[myUserId];\n if (selfRoomIds) {\n // any self-chats that should not be self-chats?\n var guessedUserIdsThatChanged = selfRoomIds.map(function (roomId) {\n var room = _this.matrixClient.getRoom(roomId);\n if (room) {\n var userId = room.guessDMUserId();\n if (userId && userId !== myUserId) {\n return { userId: userId, roomId: roomId };\n }\n }\n }).filter(function (ids) {\n return !!ids;\n }); //filter out\n // these are actually all legit self-chats\n // bail out\n if (!guessedUserIdsThatChanged.length) {\n return false;\n }\n userToRooms[myUserId] = selfRoomIds.filter(function (roomId) {\n return !guessedUserIdsThatChanged.some(function (ids) {\n return ids.roomId === roomId;\n });\n });\n guessedUserIdsThatChanged.forEach(function (_ref) {\n var userId = _ref.userId,\n roomId = _ref.roomId;\n\n var roomIds = userToRooms[userId];\n if (!roomIds) {\n userToRooms[userId] = [roomId];\n } else {\n roomIds.push(roomId);\n userToRooms[userId] = (0, _uniq3.default)(roomIds);\n }\n });\n return true;\n }\n }\n }, {\n key: 'getDMRoomsForUserId',\n value: function getDMRoomsForUserId(userId) {\n // Here, we return the empty list if there are no rooms,\n // since the number of conversations you have with this user is zero.\n return this._getUserToRooms()[userId] || [];\n }\n }, {\n key: 'getUserIdForRoomId',\n value: function getUserIdForRoomId(roomId) {\n if (this.roomToUser == null) {\n // we lazily populate roomToUser so you can use\n // this class just to call getDMRoomsForUserId\n // which doesn't do very much, but is a fairly\n // convenient wrapper and there's no point\n // iterating through the map if getUserIdForRoomId()\n // is never called.\n this._populateRoomToUser();\n }\n // Here, we return undefined if the room is not in the map:\n // the room ID you gave is not a DM room for any user.\n if (this.roomToUser[roomId] === undefined) {\n // no entry? if the room is an invite, look for the is_direct hint.\n var room = this.matrixClient.getRoom(roomId);\n if (room) {\n return room.getDMInviter();\n }\n }\n return this.roomToUser[roomId];\n }\n }, {\n key: '_getUserToRooms',\n value: function _getUserToRooms() {\n if (!this.userToRooms) {\n var userToRooms = this.mDirectEvent;\n var myUserId = this.matrixClient.getUserId();\n var selfDMs = userToRooms[myUserId];\n if (selfDMs && selfDMs.length) {\n var neededPatching = this._patchUpSelfDMs(userToRooms);\n // to avoid multiple devices fighting to correct\n // the account data, only try to send the corrected\n // version once.\n console.warn('Invalid m.direct account data detected ' + '(self-chats that shouldn\\'t be), patching it up.');\n if (neededPatching && !this._hasSentOutPatchDirectAccountDataPatch) {\n this._hasSentOutPatchDirectAccountDataPatch = true;\n this.matrixClient.setAccountData('m.direct', userToRooms);\n }\n }\n this.userToRooms = userToRooms;\n }\n return this.userToRooms;\n }\n }, {\n key: '_populateRoomToUser',\n value: function _populateRoomToUser() {\n this.roomToUser = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(this._getUserToRooms())), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var user = _step.value;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(this.userToRooms[user]), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var roomId = _step2.value;\n\n this.roomToUser[roomId] = user;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }], [{\n key: 'makeShared',\n value: function makeShared() {\n DMRoomMap._sharedInstance = new DMRoomMap(_MatrixClientPeg2.default.get());\n return DMRoomMap._sharedInstance;\n }\n\n /**\n * Returns a shared instance of the class\n * that uses the singleton matrix client\n * The shared instance must be started before use.\n */\n\n }, {\n key: 'shared',\n value: function shared() {\n return DMRoomMap._sharedInstance;\n }\n }]);\n return DMRoomMap;\n}();\n\nexports.default = DMRoomMap;\nmodule.exports = exports['default'];\n//# sourceMappingURL=DMRoomMap.js.map","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","module.exports = false;\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/set\"), __esModule: true };","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Represents the base class for all level handlers. This class performs no logic\n * and should be overridden.\n */\nvar SettingsHandler = function () {\n function SettingsHandler() {\n (0, _classCallCheck3.default)(this, SettingsHandler);\n }\n\n (0, _createClass3.default)(SettingsHandler, [{\n key: \"getValue\",\n\n /**\n * Gets the value for a particular setting at this level for a particular room.\n * If no room is applicable, the roomId may be null. The roomId may not be\n * applicable to this level and may be ignored by the handler.\n * @param {string} settingName The name of the setting.\n * @param {String} roomId The room ID to read from, may be null.\n * @returns {*} The setting value, or null if not found.\n */\n value: function getValue(settingName, roomId) {\n console.error(\"Invalid operation: getValue was not overridden\");\n return null;\n }\n\n /**\n * Sets the value for a particular setting at this level for a particular room.\n * If no room is applicable, the roomId may be null. The roomId may not be\n * applicable to this level and may be ignored by the handler. Setting a value\n * to null will cause the level to remove the value. The current user should be\n * able to set the value prior to calling this.\n * @param {string} settingName The name of the setting to change.\n * @param {String} roomId The room ID to set the value in, may be null.\n * @param {*} newValue The new value for the setting, may be null.\n * @returns {Promise} Resolves when the setting has been saved.\n */\n\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n console.error(\"Invalid operation: setValue was not overridden\");\n return _bluebird2.default.reject();\n }\n\n /**\n * Determines if the current user is able to set the value of the given setting\n * in the given room at this level.\n * @param {string} settingName The name of the setting to check.\n * @param {String} roomId The room ID to check in, may be null\n * @returns {boolean} True if the setting can be set by the user, false otherwise.\n */\n\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return false;\n }\n\n /**\n * Determines if this level is supported on this device.\n * @returns {boolean} True if this level is supported on the current device.\n */\n\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return false;\n }\n }]);\n return SettingsHandler;\n}(); /*\n Copyright 2017 Travis Ralston\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = SettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=SettingsHandler.js.map","'use strict';\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _PlatformPeg = require('./PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _TextForEvent = require('./TextForEvent');\n\nvar _TextForEvent2 = _interopRequireDefault(_TextForEvent);\n\nvar _Analytics = require('./Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _Avatar = require('./Avatar');\n\nvar _Avatar2 = _interopRequireDefault(_Avatar);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _SettingsStore = require('./settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * Dispatches:\n * {\n * action: \"notifier_enabled\",\n * value: boolean\n * }\n */\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MAX_PENDING_ENCRYPTED = 20;\n\nvar Notifier = {\n notifsByRoom: {},\n\n // A list of event IDs that we've received but need to wait until\n // they're decrypted until we decide whether to notify for them\n // or not\n pendingEncryptedEventIds: [],\n\n notificationMessageForEvent: function notificationMessageForEvent(ev) {\n return _TextForEvent2.default.textForEvent(ev);\n },\n\n _displayPopupNotification: function _displayPopupNotification(ev, room) {\n var plaf = _PlatformPeg2.default.get();\n if (!plaf) {\n return;\n }\n if (!plaf.supportsNotifications() || !plaf.maySendNotifications()) {\n return;\n }\n if (global.document.hasFocus()) {\n return;\n }\n\n var msg = this.notificationMessageForEvent(ev);\n if (!msg) return;\n\n var title = void 0;\n if (!ev.sender || room.name === ev.sender.name) {\n title = room.name;\n // notificationMessageForEvent includes sender,\n // but we already have the sender here\n if (ev.getContent().body) msg = ev.getContent().body;\n } else if (ev.getType() === 'm.room.member') {\n // context is all in the message here, we don't need\n // to display sender info\n title = room.name;\n } else if (ev.sender) {\n title = ev.sender.name + \" (\" + room.name + \")\";\n // notificationMessageForEvent includes sender,\n // but we've just out sender in the title\n if (ev.getContent().body) msg = ev.getContent().body;\n }\n\n if (!this.isBodyEnabled()) {\n msg = '';\n }\n\n var avatarUrl = ev.sender ? _Avatar2.default.avatarUrlForMember(ev.sender, 40, 40, 'crop') : null;\n var notif = plaf.displayNotification(title, msg, avatarUrl, room);\n\n // if displayNotification returns non-null, the platform supports\n // clearing notifications later, so keep track of this.\n if (notif) {\n if (this.notifsByRoom[ev.getRoomId()] === undefined) this.notifsByRoom[ev.getRoomId()] = [];\n this.notifsByRoom[ev.getRoomId()].push(notif);\n }\n },\n\n _playAudioNotification: function _playAudioNotification(ev, room) {\n var e = document.getElementById(\"messageAudio\");\n if (e) {\n e.play();\n }\n },\n\n start: function start() {\n this.boundOnEvent = this.onEvent.bind(this);\n this.boundOnSyncStateChange = this.onSyncStateChange.bind(this);\n this.boundOnRoomReceipt = this.onRoomReceipt.bind(this);\n this.boundOnEventDecrypted = this.onEventDecrypted.bind(this);\n _MatrixClientPeg2.default.get().on('event', this.boundOnEvent);\n _MatrixClientPeg2.default.get().on('Room.receipt', this.boundOnRoomReceipt);\n _MatrixClientPeg2.default.get().on('Event.decrypted', this.boundOnEventDecrypted);\n _MatrixClientPeg2.default.get().on(\"sync\", this.boundOnSyncStateChange);\n this.toolbarHidden = false;\n this.isSyncing = false;\n },\n\n stop: function stop() {\n if (_MatrixClientPeg2.default.get() && this.boundOnRoomTimeline) {\n _MatrixClientPeg2.default.get().removeListener('Event', this.boundOnEvent);\n _MatrixClientPeg2.default.get().removeListener('Room.receipt', this.boundOnRoomReceipt);\n _MatrixClientPeg2.default.get().removeListener('Event.decrypted', this.boundOnEventDecrypted);\n _MatrixClientPeg2.default.get().removeListener('sync', this.boundOnSyncStateChange);\n }\n this.isSyncing = false;\n },\n\n supportsDesktopNotifications: function supportsDesktopNotifications() {\n var plaf = _PlatformPeg2.default.get();\n return plaf && plaf.supportsNotifications();\n },\n\n setEnabled: function setEnabled(enable, callback) {\n var plaf = _PlatformPeg2.default.get();\n if (!plaf) return;\n\n // Dev note: We don't set the \"notificationsEnabled\" setting to true here because it is a\n // calculated value. It is determined based upon whether or not the master rule is enabled\n // and other flags. Setting it here would cause a circular reference.\n\n _Analytics2.default.trackEvent('Notifier', 'Set Enabled', enable);\n\n // make sure that we persist the current setting audio_enabled setting\n // before changing anything\n if (_SettingsStore2.default.isLevelSupported(_SettingsStore.SettingLevel.DEVICE)) {\n _SettingsStore2.default.setValue(\"audioNotificationsEnabled\", null, _SettingsStore.SettingLevel.DEVICE, this.isEnabled());\n }\n\n if (enable) {\n // Attempt to get permission from user\n plaf.requestNotificationPermission().done(function (result) {\n if (result !== 'granted') {\n // The permission request was dismissed or denied\n // TODO: Support alternative branding in messaging\n var description = result === 'denied' ? (0, _languageHandler._t)('Riot does not have permission to send you notifications - please check your browser settings') : (0, _languageHandler._t)('Riot was not given permission to send notifications - please try again');\n var ErrorDialog = _index2.default.getComponent('dialogs.ErrorDialog');\n _Modal2.default.createTrackedDialog('Unable to enable Notifications', result, ErrorDialog, {\n title: (0, _languageHandler._t)('Unable to enable Notifications'),\n description: description\n });\n return;\n }\n\n if (callback) callback();\n _dispatcher2.default.dispatch({\n action: \"notifier_enabled\",\n value: true\n });\n });\n } else {\n _dispatcher2.default.dispatch({\n action: \"notifier_enabled\",\n value: false\n });\n }\n // set the notifications_hidden flag, as the user has knowingly interacted\n // with the setting we shouldn't nag them any further\n this.setToolbarHidden(true);\n },\n\n isEnabled: function isEnabled() {\n return this.isPossible() && _SettingsStore2.default.getValue(\"notificationsEnabled\");\n },\n\n isPossible: function isPossible() {\n var plaf = _PlatformPeg2.default.get();\n if (!plaf) return false;\n if (!plaf.supportsNotifications()) return false;\n if (!plaf.maySendNotifications()) return false;\n\n return true; // possible, but not necessarily enabled\n },\n\n isBodyEnabled: function isBodyEnabled() {\n return this.isEnabled() && _SettingsStore2.default.getValue(\"notificationBodyEnabled\");\n },\n\n isAudioEnabled: function isAudioEnabled() {\n return this.isEnabled() && _SettingsStore2.default.getValue(\"audioNotificationsEnabled\");\n },\n\n setToolbarHidden: function setToolbarHidden(hidden) {\n var persistent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n this.toolbarHidden = hidden;\n\n _Analytics2.default.trackEvent('Notifier', 'Set Toolbar Hidden', hidden);\n\n // XXX: why are we dispatching this here?\n // this is nothing to do with notifier_enabled\n _dispatcher2.default.dispatch({\n action: \"notifier_enabled\",\n value: this.isEnabled()\n });\n\n // update the info to localStorage for persistent settings\n if (persistent && global.localStorage) {\n global.localStorage.setItem(\"notifications_hidden\", hidden);\n }\n },\n\n isToolbarHidden: function isToolbarHidden() {\n // Check localStorage for any such meta data\n if (global.localStorage) {\n return global.localStorage.getItem(\"notifications_hidden\") === \"true\";\n }\n\n return this.toolbarHidden;\n },\n\n onSyncStateChange: function onSyncStateChange(state) {\n if (state === \"SYNCING\") {\n this.isSyncing = true;\n } else if (state === \"STOPPED\" || state === \"ERROR\") {\n this.isSyncing = false;\n }\n },\n\n onEvent: function onEvent(ev) {\n if (!this.isSyncing) return; // don't alert for any messages initially\n if (ev.sender && ev.sender.userId === _MatrixClientPeg2.default.get().credentials.userId) return;\n\n // If it's an encrypted event and the type is still 'm.room.encrypted',\n // it hasn't yet been decrypted, so wait until it is.\n if (ev.isBeingDecrypted() || ev.isDecryptionFailure()) {\n this.pendingEncryptedEventIds.push(ev.getId());\n // don't let the list fill up indefinitely\n while (this.pendingEncryptedEventIds.length > MAX_PENDING_ENCRYPTED) {\n this.pendingEncryptedEventIds.shift();\n }\n return;\n }\n\n this._evaluateEvent(ev);\n },\n\n onEventDecrypted: function onEventDecrypted(ev) {\n // 'decrypted' means the decryption process has finished: it may have failed,\n // in which case it might decrypt soon if the keys arrive\n if (ev.isDecryptionFailure()) return;\n\n var idx = this.pendingEncryptedEventIds.indexOf(ev.getId());\n if (idx === -1) return;\n\n this.pendingEncryptedEventIds.splice(idx, 1);\n this._evaluateEvent(ev);\n },\n\n onRoomReceipt: function onRoomReceipt(ev, room) {\n if (room.getUnreadNotificationCount() === 0) {\n // ideally we would clear each notification when it was read,\n // but we have no way, given a read receipt, to know whether\n // the receipt comes before or after an event, so we can't\n // do this. Instead, clear all notifications for a room once\n // there are no notifs left in that room., which is not quite\n // as good but it's something.\n var plaf = _PlatformPeg2.default.get();\n if (!plaf) return;\n if (this.notifsByRoom[room.roomId] === undefined) return;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this.notifsByRoom[room.roomId]), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var notif = _step.value;\n\n plaf.clearNotification(notif);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n delete this.notifsByRoom[room.roomId];\n }\n },\n\n _evaluateEvent: function _evaluateEvent(ev) {\n var room = _MatrixClientPeg2.default.get().getRoom(ev.getRoomId());\n var actions = _MatrixClientPeg2.default.get().getPushActionsForEvent(ev);\n if (actions && actions.notify) {\n _dispatcher2.default.dispatch({\n action: \"event_notification\",\n event: ev,\n room: room\n });\n if (this.isEnabled()) {\n this._displayPopupNotification(ev, room);\n }\n if (actions.tweaks.sound && this.isAudioEnabled()) {\n _PlatformPeg2.default.get().loudNotification(ev, room);\n this._playAudioNotification(ev, room);\n }\n }\n }\n};\n\nif (!global.mxNotifier) {\n global.mxNotifier = Notifier;\n}\n\nmodule.exports = global.mxNotifier;\n//# sourceMappingURL=Notifier.js.map","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule invariant\n */\n\n\"use strict\";\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function (condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error('Invariant Violation: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _entries = require('babel-runtime/core-js/object/entries');\n\nvar _entries2 = _interopRequireDefault(_entries);\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _SdkConfig = require('../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _url = require('url');\n\nvar url = _interopRequireWildcard(_url);\n\nvar _WidgetEchoStore = require('../stores/WidgetEchoStore');\n\nvar _WidgetEchoStore2 = _interopRequireDefault(_WidgetEchoStore);\n\nvar _SettingsStore = require('../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// How long we wait for the state event echo to come back from the server\n// before waitFor[Room/User]Widget rejects its promise\nvar WIDGET_WAIT_TIME = 20000; /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/**\n * Encodes a URI according to a set of template variables. Variables will be\n * passed through encodeURIComponent.\n * @param {string} pathTemplate The path with template variables e.g. '/foo/$bar'.\n * @param {Object} variables The key/value pairs to replace the template\n * variables with. E.g. { '$bar': 'baz' }.\n * @return {string} The result of replacing all template variables e.g. '/foo/baz'.\n */\nfunction encodeUri(pathTemplate, variables) {\n for (var key in variables) {\n if (!variables.hasOwnProperty(key)) {\n continue;\n }\n pathTemplate = pathTemplate.replace(key, encodeURIComponent(variables[key]));\n }\n return pathTemplate;\n}\n\nvar WidgetUtils = function () {\n function WidgetUtils() {\n (0, _classCallCheck3.default)(this, WidgetUtils);\n }\n\n (0, _createClass3.default)(WidgetUtils, null, [{\n key: 'canUserModifyWidgets',\n\n /* Returns true if user is able to send state events to modify widgets in this room\n * (Does not apply to non-room-based / user widgets)\n * @param roomId -- The ID of the room to check\n * @return Boolean -- true if the user can modify widgets in this room\n * @throws Error -- specifies the error reason\n */\n value: function canUserModifyWidgets(roomId) {\n if (!roomId) {\n console.warn('No room ID specified');\n return false;\n }\n\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n console.warn('User must be be logged in');\n return false;\n }\n\n var room = client.getRoom(roomId);\n if (!room) {\n console.warn('Room ID ' + roomId + ' is not recognised');\n return false;\n }\n\n var me = client.credentials.userId;\n if (!me) {\n console.warn('Failed to get user ID');\n return false;\n }\n\n if (room.getMyMembership() !== \"join\") {\n console.warn('User ' + me + ' is not in room ' + roomId);\n return false;\n }\n\n return room.currentState.maySendStateEvent('im.vector.modular.widgets', me);\n }\n\n /**\n * Returns true if specified url is a scalar URL, typically https://scalar.vector.im/api\n * @param {[type]} testUrlString URL to check\n * @return {Boolean} True if specified URL is a scalar URL\n */\n\n }, {\n key: 'isScalarUrl',\n value: function isScalarUrl(testUrlString) {\n if (!testUrlString) {\n console.error('Scalar URL check failed. No URL specified');\n return false;\n }\n\n var testUrl = url.parse(testUrlString);\n\n var scalarUrls = _SdkConfig2.default.get().integrations_widgets_urls;\n if (!scalarUrls || scalarUrls.length === 0) {\n scalarUrls = [_SdkConfig2.default.get().integrations_rest_url];\n }\n\n for (var i = 0; i < scalarUrls.length; i++) {\n var scalarUrl = url.parse(scalarUrls[i]);\n if (testUrl && scalarUrl) {\n if (testUrl.protocol === scalarUrl.protocol && testUrl.host === scalarUrl.host && testUrl.pathname.startsWith(scalarUrl.pathname)) {\n return true;\n }\n }\n }\n return false;\n }\n\n /**\n * Returns a promise that resolves when a widget with the given\n * ID has been added as a user widget (ie. the accountData event\n * arrives) or rejects after a timeout\n *\n * @param {string} widgetId The ID of the widget to wait for\n * @param {boolean} add True to wait for the widget to be added,\n * false to wait for it to be deleted.\n * @returns {Promise} that resolves when the widget is in the\n * requested state according to the `add` param\n */\n\n }, {\n key: 'waitForUserWidget',\n value: function waitForUserWidget(widgetId, add) {\n return new _promise2.default(function (resolve, reject) {\n // Tests an account data event, returning true if it's in the state\n // we're waiting for it to be in\n function eventInIntendedState(ev) {\n if (!ev || !ev.getContent()) return false;\n if (add) {\n return ev.getContent()[widgetId] !== undefined;\n } else {\n return ev.getContent()[widgetId] === undefined;\n }\n }\n\n var startingAccountDataEvent = _MatrixClientPeg2.default.get().getAccountData('m.widgets');\n if (eventInIntendedState(startingAccountDataEvent)) {\n resolve();\n return;\n }\n\n function onAccountData(ev) {\n var currentAccountDataEvent = _MatrixClientPeg2.default.get().getAccountData('m.widgets');\n if (eventInIntendedState(currentAccountDataEvent)) {\n _MatrixClientPeg2.default.get().removeListener('accountData', onAccountData);\n clearTimeout(timerId);\n resolve();\n }\n }\n var timerId = setTimeout(function () {\n _MatrixClientPeg2.default.get().removeListener('accountData', onAccountData);\n reject(new Error(\"Timed out waiting for widget ID \" + widgetId + \" to appear\"));\n }, WIDGET_WAIT_TIME);\n _MatrixClientPeg2.default.get().on('accountData', onAccountData);\n });\n }\n\n /**\n * Returns a promise that resolves when a widget with the given\n * ID has been added as a room widget in the given room (ie. the\n * room state event arrives) or rejects after a timeout\n *\n * @param {string} widgetId The ID of the widget to wait for\n * @param {string} roomId The ID of the room to wait for the widget in\n * @param {boolean} add True to wait for the widget to be added,\n * false to wait for it to be deleted.\n * @returns {Promise} that resolves when the widget is in the\n * requested state according to the `add` param\n */\n\n }, {\n key: 'waitForRoomWidget',\n value: function waitForRoomWidget(widgetId, roomId, add) {\n return new _promise2.default(function (resolve, reject) {\n // Tests a list of state events, returning true if it's in the state\n // we're waiting for it to be in\n function eventsInIntendedState(evList) {\n var widgetPresent = evList.some(function (ev) {\n return ev.getContent() && ev.getContent()['id'] === widgetId;\n });\n if (add) {\n return widgetPresent;\n } else {\n return !widgetPresent;\n }\n }\n\n var room = _MatrixClientPeg2.default.get().getRoom(roomId);\n var startingWidgetEvents = room.currentState.getStateEvents('im.vector.modular.widgets');\n if (eventsInIntendedState(startingWidgetEvents)) {\n resolve();\n return;\n }\n\n function onRoomStateEvents(ev) {\n if (ev.getRoomId() !== roomId) return;\n\n var currentWidgetEvents = room.currentState.getStateEvents('im.vector.modular.widgets');\n\n if (eventsInIntendedState(currentWidgetEvents)) {\n _MatrixClientPeg2.default.get().removeListener('RoomState.events', onRoomStateEvents);\n clearTimeout(timerId);\n resolve();\n }\n }\n var timerId = setTimeout(function () {\n _MatrixClientPeg2.default.get().removeListener('RoomState.events', onRoomStateEvents);\n reject(new Error(\"Timed out waiting for widget ID \" + widgetId + \" to appear\"));\n }, WIDGET_WAIT_TIME);\n _MatrixClientPeg2.default.get().on('RoomState.events', onRoomStateEvents);\n });\n }\n }, {\n key: 'setUserWidget',\n value: function setUserWidget(widgetId, widgetType, widgetUrl, widgetName, widgetData) {\n var content = {\n type: widgetType,\n url: widgetUrl,\n name: widgetName,\n data: widgetData\n };\n\n var client = _MatrixClientPeg2.default.get();\n var userWidgets = WidgetUtils.getUserWidgets();\n\n // Delete existing widget with ID\n try {\n delete userWidgets[widgetId];\n } catch (e) {\n console.error('$widgetId is non-configurable');\n }\n\n var addingWidget = Boolean(widgetUrl);\n\n // Add new widget / update\n if (addingWidget) {\n userWidgets[widgetId] = {\n content: content,\n sender: client.getUserId(),\n state_key: widgetId,\n type: 'm.widget',\n id: widgetId\n };\n }\n\n // This starts listening for when the echo comes back from the server\n // since the widget won't appear added until this happens. If we don't\n // wait for this, the action will complete but if the user is fast enough,\n // the widget still won't actually be there.\n return client.setAccountData('m.widgets', userWidgets).then(function () {\n return WidgetUtils.waitForUserWidget(widgetId, addingWidget);\n }).then(function () {\n _dispatcher2.default.dispatch({ action: \"user_widget_updated\" });\n });\n }\n }, {\n key: 'setRoomWidget',\n value: function setRoomWidget(roomId, widgetId, widgetType, widgetUrl, widgetName, widgetData) {\n var content = void 0;\n\n var addingWidget = Boolean(widgetUrl);\n\n if (addingWidget) {\n content = {\n type: widgetType,\n url: widgetUrl,\n name: widgetName,\n data: widgetData\n };\n } else {\n content = {};\n }\n\n _WidgetEchoStore2.default.setRoomWidgetEcho(roomId, widgetId, content);\n\n var client = _MatrixClientPeg2.default.get();\n // TODO - Room widgets need to be moved to 'm.widget' state events\n // https://docs.google.com/document/d/1uPF7XWY_dXTKVKV7jZQ2KmsI19wn9-kFRgQ1tFQP7wQ/edit?usp=sharing\n return client.sendStateEvent(roomId, \"im.vector.modular.widgets\", content, widgetId).then(function () {\n return WidgetUtils.waitForRoomWidget(widgetId, roomId, addingWidget);\n }).finally(function () {\n _WidgetEchoStore2.default.removeRoomWidgetEcho(roomId, widgetId);\n });\n }\n\n /**\n * Get room specific widgets\n * @param {object} room The room to get widgets force\n * @return {[object]} Array containing current / active room widgets\n */\n\n }, {\n key: 'getRoomWidgets',\n value: function getRoomWidgets(room) {\n var appsStateEvents = room.currentState.getStateEvents('im.vector.modular.widgets');\n if (!appsStateEvents) {\n return [];\n }\n\n return appsStateEvents.filter(function (ev) {\n return ev.getContent().type && ev.getContent().url;\n });\n }\n\n /**\n * Get user specific widgets (not linked to a specific room)\n * @return {object} Event content object containing current / active user widgets\n */\n\n }, {\n key: 'getUserWidgets',\n value: function getUserWidgets() {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n throw new Error('User not logged in');\n }\n var userWidgets = client.getAccountData('m.widgets');\n if (userWidgets && userWidgets.getContent()) {\n return userWidgets.getContent();\n }\n return {};\n }\n\n /**\n * Get user specific widgets (not linked to a specific room) as an array\n * @return {[object]} Array containing current / active user widgets\n */\n\n }, {\n key: 'getUserWidgetsArray',\n value: function getUserWidgetsArray() {\n return (0, _values2.default)(WidgetUtils.getUserWidgets());\n }\n\n /**\n * Get active stickerpicker widgets (stickerpickers are user widgets by nature)\n * @return {[object]} Array containing current / active stickerpicker widgets\n */\n\n }, {\n key: 'getStickerpickerWidgets',\n value: function getStickerpickerWidgets() {\n var widgets = WidgetUtils.getUserWidgetsArray();\n return widgets.filter(function (widget) {\n return widget.content && widget.content.type === \"m.stickerpicker\";\n });\n }\n\n /**\n * Remove all stickerpicker widgets (stickerpickers are user widgets by nature)\n * @return {Promise} Resolves on account data updated\n */\n\n }, {\n key: 'removeStickerpickerWidgets',\n value: function removeStickerpickerWidgets() {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n throw new Error('User not logged in');\n }\n var userWidgets = client.getAccountData('m.widgets').getContent() || {};\n (0, _entries2.default)(userWidgets).forEach(function (_ref) {\n var _ref2 = (0, _slicedToArray3.default)(_ref, 2),\n key = _ref2[0],\n widget = _ref2[1];\n\n if (widget.content && widget.content.type === 'm.stickerpicker') {\n delete userWidgets[key];\n }\n });\n return client.setAccountData('m.widgets', userWidgets);\n }\n }, {\n key: 'makeAppConfig',\n value: function makeAppConfig(appId, app, sender, roomId) {\n var myUserId = _MatrixClientPeg2.default.get().credentials.userId;\n var user = _MatrixClientPeg2.default.get().getUser(myUserId);\n var params = {\n '$matrix_user_id': myUserId,\n '$matrix_room_id': roomId,\n '$matrix_display_name': user ? user.displayName : myUserId,\n '$matrix_avatar_url': user ? _MatrixClientPeg2.default.get().mxcUrlToHttp(user.avatarUrl) : '',\n\n // TODO: Namespace themes through some standard\n '$theme': _SettingsStore2.default.getValue(\"theme\")\n };\n\n app.id = appId;\n app.name = app.name || app.type;\n\n if (app.data) {\n (0, _keys2.default)(app.data).forEach(function (key) {\n params['$' + key] = app.data[key];\n });\n\n app.waitForIframeLoad = app.data.waitForIframeLoad === 'false' ? false : true;\n }\n\n app.url = encodeUri(app.url, params);\n app.creatorUserId = sender && sender.userId ? sender.userId : null;\n\n return app;\n }\n }, {\n key: 'getCapWhitelistForAppTypeInRoomId',\n value: function getCapWhitelistForAppTypeInRoomId(appType, roomId) {\n var enableScreenshots = _SettingsStore2.default.getValue(\"enableWidgetScreenshots\", roomId);\n\n var capWhitelist = enableScreenshots ? [\"m.capability.screenshot\"] : [];\n\n // Obviously anyone that can add a widget can claim it's a jitsi widget,\n // so this doesn't really offer much over the set of domains we load\n // widgets from at all, but it probably makes sense for sanity.\n if (appType == 'jitsi') capWhitelist.push(\"m.always_on_screen\");\n\n return capWhitelist;\n }\n }]);\n return WidgetUtils;\n}();\n\nexports.default = WidgetUtils;\nmodule.exports = exports['default'];\n//# sourceMappingURL=WidgetUtils.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _setImmediate2 = require('babel-runtime/core-js/set-immediate');\n\nvar _setImmediate3 = _interopRequireDefault(_setImmediate2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nexports.createMenu = createMenu;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Shamelessly ripped off Modal.js. There's probably a better way\n// of doing reusable widgets like dialog boxes & menus where we go and\n// pass in a custom control as the actual body.\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ContextualMenuContainerId = \"mx_ContextualMenu_Container\";\n\nfunction getOrCreateContainer() {\n var container = document.getElementById(ContextualMenuContainerId);\n\n if (!container) {\n container = document.createElement(\"div\");\n container.id = ContextualMenuContainerId;\n document.body.appendChild(container);\n }\n\n return container;\n}\n\nvar ContextualMenu = function (_React$Component) {\n (0, _inherits3.default)(ContextualMenu, _React$Component);\n\n function ContextualMenu() {\n (0, _classCallCheck3.default)(this, ContextualMenu);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ContextualMenu.__proto__ || (0, _getPrototypeOf2.default)(ContextualMenu)).call(this));\n\n _this.state = {\n contextMenuRect: null\n };\n\n _this.onContextMenu = _this.onContextMenu.bind(_this);\n _this.collectContextMenuRect = _this.collectContextMenuRect.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(ContextualMenu, [{\n key: 'collectContextMenuRect',\n value: function collectContextMenuRect(element) {\n // We don't need to clean up when unmounting, so ignore\n if (!element) return;\n\n this.setState({\n contextMenuRect: element.getBoundingClientRect()\n });\n }\n }, {\n key: 'onContextMenu',\n value: function onContextMenu(e) {\n if (this.props.closeMenu) {\n this.props.closeMenu();\n\n e.preventDefault();\n var x = e.clientX;\n var y = e.clientY;\n\n // XXX: This isn't pretty but the only way to allow opening a different context menu on right click whilst\n // a context menu and its click-guard are up without completely rewriting how the context menus work.\n (0, _setImmediate3.default)(function () {\n var clickEvent = document.createEvent('MouseEvents');\n clickEvent.initMouseEvent('contextmenu', true, true, window, 0, 0, 0, x, y, false, false, false, false, 0, null);\n document.elementFromPoint(x, y).dispatchEvent(clickEvent);\n });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var position = {};\n var chevronFace = null;\n\n var props = this.props;\n\n if (props.top) {\n position.top = props.top;\n } else {\n position.bottom = props.bottom;\n }\n\n if (props.left) {\n position.left = props.left;\n chevronFace = 'left';\n } else {\n position.right = props.right;\n chevronFace = 'right';\n }\n\n var contextMenuRect = this.state.contextMenuRect || null;\n var padding = 10;\n\n var chevronOffset = {};\n if (props.chevronFace) {\n chevronFace = props.chevronFace;\n }\n if (chevronFace === 'top' || chevronFace === 'bottom') {\n chevronOffset.left = props.chevronOffset;\n } else {\n var target = position.top;\n\n // By default, no adjustment is made\n var adjusted = target;\n\n // If we know the dimensions of the context menu, adjust its position\n // such that it does not leave the (padded) window.\n if (contextMenuRect) {\n adjusted = Math.min(position.top, document.body.clientHeight - contextMenuRect.height - padding);\n }\n\n position.top = adjusted;\n chevronOffset.top = Math.max(props.chevronOffset, props.chevronOffset + target - adjusted);\n }\n\n // To override the default chevron colour, if it's been set\n var chevronCSS = \"\";\n if (props.menuColour) {\n chevronCSS = '\\n .mx_ContextualMenu_chevron_left:after {\\n border-right-color: ' + props.menuColour + ';\\n }\\n .mx_ContextualMenu_chevron_right:after {\\n border-left-color: ' + props.menuColour + ';\\n }\\n .mx_ContextualMenu_chevron_top:after {\\n border-left-color: ' + props.menuColour + ';\\n }\\n .mx_ContextualMenu_chevron_bottom:after {\\n border-left-color: ' + props.menuColour + ';\\n }\\n ';\n }\n\n var chevron = _react2.default.createElement('div', { style: chevronOffset, className: \"mx_ContextualMenu_chevron_\" + chevronFace });\n var className = 'mx_ContextualMenu_wrapper';\n\n var menuClasses = (0, _classnames2.default)({\n 'mx_ContextualMenu': true,\n 'mx_ContextualMenu_left': chevronFace === 'left',\n 'mx_ContextualMenu_right': chevronFace === 'right',\n 'mx_ContextualMenu_top': chevronFace === 'top',\n 'mx_ContextualMenu_bottom': chevronFace === 'bottom'\n });\n\n var menuStyle = {};\n if (props.menuWidth) {\n menuStyle.width = props.menuWidth;\n }\n\n if (props.menuHeight) {\n menuStyle.height = props.menuHeight;\n }\n\n if (props.menuColour) {\n menuStyle[\"backgroundColor\"] = props.menuColour;\n }\n\n if (!isNaN(Number(props.menuPaddingTop))) {\n menuStyle[\"paddingTop\"] = props.menuPaddingTop;\n }\n if (!isNaN(Number(props.menuPaddingLeft))) {\n menuStyle[\"paddingLeft\"] = props.menuPaddingLeft;\n }\n if (!isNaN(Number(props.menuPaddingBottom))) {\n menuStyle[\"paddingBottom\"] = props.menuPaddingBottom;\n }\n if (!isNaN(Number(props.menuPaddingRight))) {\n menuStyle[\"paddingRight\"] = props.menuPaddingRight;\n }\n\n var ElementClass = props.elementClass;\n\n // FIXME: If a menu uses getDefaultProps it clobbers the onFinished\n // property set here so you can't close the menu from a button click!\n return _react2.default.createElement(\n 'div',\n { className: className, style: position },\n _react2.default.createElement(\n 'div',\n { className: menuClasses, style: menuStyle, ref: this.collectContextMenuRect },\n chevron,\n _react2.default.createElement(ElementClass, (0, _extends3.default)({}, props, { onFinished: props.closeMenu, onResize: props.windowResize }))\n ),\n props.hasBackground && _react2.default.createElement('div', { className: 'mx_ContextualMenu_background',\n onClick: props.closeMenu, onContextMenu: this.onContextMenu }),\n _react2.default.createElement(\n 'style',\n null,\n chevronCSS\n )\n );\n }\n }]);\n return ContextualMenu;\n}(_react2.default.Component);\n\nexports.default = ContextualMenu;\nfunction createMenu(ElementClass, props) {\n var hasBackground = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n var closeMenu = function closeMenu() {\n _reactDom2.default.unmountComponentAtNode(getOrCreateContainer());\n\n if (props && props.onFinished) {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n props.onFinished.apply(null, args);\n }\n };\n\n // We only reference closeMenu once per call to createMenu\n var menu = _react2.default.createElement(ContextualMenu, (0, _extends3.default)({\n hasBackground: hasBackground\n }, props, {\n elementClass: ElementClass,\n closeMenu: closeMenu // eslint-disable-line react/jsx-no-bind\n , windowResize: closeMenu // eslint-disable-line react/jsx-no-bind\n }));\n\n _reactDom2.default.render(menu, getOrCreateContainer());\n\n return { close: closeMenu };\n}\n//# sourceMappingURL=ContextualMenu.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.formatDate = formatDate;\nexports.formatFullDateNoTime = formatFullDateNoTime;\nexports.formatFullDate = formatFullDate;\nexports.formatFullTime = formatFullTime;\nexports.formatTime = formatTime;\nexports.wantsDateSeparator = wantsDateSeparator;\n\nvar _languageHandler = require('./languageHandler');\n\nfunction getDaysArray() {\n return [(0, _languageHandler._t)('Sun'), (0, _languageHandler._t)('Mon'), (0, _languageHandler._t)('Tue'), (0, _languageHandler._t)('Wed'), (0, _languageHandler._t)('Thu'), (0, _languageHandler._t)('Fri'), (0, _languageHandler._t)('Sat')];\n} /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction getMonthsArray() {\n return [(0, _languageHandler._t)('Jan'), (0, _languageHandler._t)('Feb'), (0, _languageHandler._t)('Mar'), (0, _languageHandler._t)('Apr'), (0, _languageHandler._t)('May'), (0, _languageHandler._t)('Jun'), (0, _languageHandler._t)('Jul'), (0, _languageHandler._t)('Aug'), (0, _languageHandler._t)('Sep'), (0, _languageHandler._t)('Oct'), (0, _languageHandler._t)('Nov'), (0, _languageHandler._t)('Dec')];\n}\n\nfunction pad(n) {\n return (n < 10 ? '0' : '') + n;\n}\n\nfunction twelveHourTime(date) {\n var showSeconds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var hours = date.getHours() % 12;\n var minutes = pad(date.getMinutes());\n var ampm = date.getHours() >= 12 ? (0, _languageHandler._t)('PM') : (0, _languageHandler._t)('AM');\n hours = hours ? hours : 12; // convert 0 -> 12\n if (showSeconds) {\n var seconds = pad(date.getSeconds());\n return hours + ':' + minutes + ':' + seconds + ampm;\n }\n return hours + ':' + minutes + ampm;\n}\n\nfunction formatDate(date) {\n var showTwelveHour = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var now = new Date();\n var days = getDaysArray();\n var months = getMonthsArray();\n if (date.toDateString() === now.toDateString()) {\n return formatTime(date, showTwelveHour);\n } else if (now.getTime() - date.getTime() < 6 * 24 * 60 * 60 * 1000) {\n // TODO: use standard date localize function provided in counterpart\n return (0, _languageHandler._t)('%(weekDayName)s %(time)s', {\n weekDayName: days[date.getDay()],\n time: formatTime(date, showTwelveHour)\n });\n } else if (now.getFullYear() === date.getFullYear()) {\n // TODO: use standard date localize function provided in counterpart\n return (0, _languageHandler._t)('%(weekDayName)s, %(monthName)s %(day)s %(time)s', {\n weekDayName: days[date.getDay()],\n monthName: months[date.getMonth()],\n day: date.getDate(),\n time: formatTime(date, showTwelveHour)\n });\n }\n return formatFullDate(date, showTwelveHour);\n}\n\nfunction formatFullDateNoTime(date) {\n var days = getDaysArray();\n var months = getMonthsArray();\n return (0, _languageHandler._t)('%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s', {\n weekDayName: days[date.getDay()],\n monthName: months[date.getMonth()],\n day: date.getDate(),\n fullYear: date.getFullYear()\n });\n}\n\nfunction formatFullDate(date) {\n var showTwelveHour = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var days = getDaysArray();\n var months = getMonthsArray();\n return (0, _languageHandler._t)('%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s', {\n weekDayName: days[date.getDay()],\n monthName: months[date.getMonth()],\n day: date.getDate(),\n fullYear: date.getFullYear(),\n time: formatFullTime(date, showTwelveHour)\n });\n}\n\nfunction formatFullTime(date) {\n var showTwelveHour = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (showTwelveHour) {\n return twelveHourTime(date, true);\n }\n return pad(date.getHours()) + ':' + pad(date.getMinutes()) + ':' + pad(date.getSeconds());\n}\n\nfunction formatTime(date) {\n var showTwelveHour = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (showTwelveHour) {\n return twelveHourTime(date);\n }\n return pad(date.getHours()) + ':' + pad(date.getMinutes());\n}\n\nvar MILLIS_IN_DAY = 86400000;\nfunction wantsDateSeparator(prevEventDate, nextEventDate) {\n if (!nextEventDate || !prevEventDate) {\n return false;\n }\n // Return early for events that are > 24h apart\n if (Math.abs(prevEventDate.getTime() - nextEventDate.getTime()) > MILLIS_IN_DAY) {\n return true;\n }\n\n // Compare weekdays\n return prevEventDate.getDay() !== nextEventDate.getDay();\n}\n//# sourceMappingURL=DateUtils.js.map","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _events = require('events');\n\nvar _events2 = _interopRequireDefault(_events);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar BULK_REQUEST_DEBOUNCE_MS = 200;\n\n// Does the server support groups? Assume yes until we receive M_UNRECOGNIZED.\n// If true, flair can function and we should keep sending requests for groups and avatars.\nvar _groupSupport = true;\n\nvar USER_GROUPS_CACHE_BUST_MS = 1800000; // 30 mins\nvar GROUP_PROFILES_CACHE_BUST_MS = 1800000; // 30 mins\n\n/**\n * Stores data used by <Flair/>\n */\n\nvar FlairStore = function (_EventEmitter) {\n (0, _inherits3.default)(FlairStore, _EventEmitter);\n\n function FlairStore(matrixClient) {\n (0, _classCallCheck3.default)(this, FlairStore);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (FlairStore.__proto__ || (0, _getPrototypeOf2.default)(FlairStore)).call(this));\n\n _this._matrixClient = matrixClient;\n _this._userGroups = {\n // $userId: ['+group1:domain', '+group2:domain', ...]\n };\n _this._groupProfiles = {\n // $groupId: {\n // avatar_url: 'mxc://...'\n // }\n };\n _this._groupProfilesPromise = {\n // $groupId: Promise\n };\n _this._usersPending = {\n // $userId: {\n // prom: Promise\n // resolve: () => {}\n // reject: () => {}\n // }\n };\n _this._usersInFlight = {\n // This has the same schema as _usersPending\n };\n\n _this._debounceTimeoutID = null;\n return _this;\n }\n\n (0, _createClass3.default)(FlairStore, [{\n key: 'groupSupport',\n value: function groupSupport() {\n return _groupSupport;\n }\n }, {\n key: 'invalidatePublicisedGroups',\n value: function invalidatePublicisedGroups(userId) {\n delete this._userGroups[userId];\n }\n }, {\n key: 'getPublicisedGroupsCached',\n value: function getPublicisedGroupsCached(matrixClient, userId) {\n var _this2 = this;\n\n if (this._userGroups[userId]) {\n return _bluebird2.default.resolve(this._userGroups[userId]);\n }\n\n // Bulk lookup ongoing, return promise to resolve/reject\n if (this._usersPending[userId]) {\n return this._usersPending[userId].prom;\n }\n // User has been moved from pending to in-flight\n if (this._usersInFlight[userId]) {\n return this._usersInFlight[userId].prom;\n }\n\n this._usersPending[userId] = {};\n this._usersPending[userId].prom = new _bluebird2.default(function (resolve, reject) {\n _this2._usersPending[userId].resolve = resolve;\n _this2._usersPending[userId].reject = reject;\n }).then(function (groups) {\n _this2._userGroups[userId] = groups;\n setTimeout(function () {\n delete _this2._userGroups[userId];\n }, USER_GROUPS_CACHE_BUST_MS);\n return _this2._userGroups[userId];\n }).catch(function (err) {\n // Indicate whether the homeserver supports groups\n if (err.errcode === 'M_UNRECOGNIZED') {\n console.warn('Cannot display flair, server does not support groups');\n _groupSupport = false;\n // Return silently to avoid spamming for non-supporting servers\n return;\n }\n console.error('Could not get groups for user', userId, err);\n throw err;\n }).finally(function () {\n delete _this2._usersInFlight[userId];\n });\n\n // This debounce will allow consecutive requests for the public groups of users that\n // are sent in intervals of < BULK_REQUEST_DEBOUNCE_MS to be batched and only requested\n // when no more requests are received within the next BULK_REQUEST_DEBOUNCE_MS. The naive\n // implementation would do a request that only requested the groups for `userId`, leading\n // to a worst and best case of 1 user per request. This implementation's worst is still\n // 1 user per request but only if the requests are > BULK_REQUEST_DEBOUNCE_MS apart and the\n // best case is N users per request.\n //\n // This is to reduce the number of requests made whilst trading off latency when viewing\n // a Flair component.\n if (this._debounceTimeoutID) clearTimeout(this._debounceTimeoutID);\n this._debounceTimeoutID = setTimeout(function () {\n _this2._batchedGetPublicGroups(matrixClient);\n }, BULK_REQUEST_DEBOUNCE_MS);\n\n return this._usersPending[userId].prom;\n }\n }, {\n key: '_batchedGetPublicGroups',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(matrixClient) {\n var _this3 = this;\n\n var resp, updatedUserGroups;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // Move users pending to users in flight\n this._usersInFlight = this._usersPending;\n this._usersPending = {};\n\n resp = {\n users: []\n };\n _context.prev = 3;\n _context.next = 6;\n return (0, _bluebird.resolve)(matrixClient.getPublicisedGroups((0, _keys2.default)(this._usersInFlight)));\n\n case 6:\n resp = _context.sent;\n _context.next = 13;\n break;\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context['catch'](3);\n\n // Propagate the same error to all usersInFlight\n (0, _keys2.default)(this._usersInFlight).forEach(function (userId) {\n // The promise should always exist for userId, but do a null-check anyway\n if (!_this3._usersInFlight[userId]) return;\n _this3._usersInFlight[userId].reject(_context.t0);\n });\n return _context.abrupt('return');\n\n case 13:\n updatedUserGroups = resp.users;\n\n (0, _keys2.default)(this._usersInFlight).forEach(function (userId) {\n // The promise should always exist for userId, but do a null-check anyway\n if (!_this3._usersInFlight[userId]) return;\n _this3._usersInFlight[userId].resolve(updatedUserGroups[userId] || []);\n });\n\n case 15:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[3, 9]]);\n }));\n\n function _batchedGetPublicGroups(_x) {\n return _ref.apply(this, arguments);\n }\n\n return _batchedGetPublicGroups;\n }()\n }, {\n key: 'getGroupProfileCached',\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(matrixClient, groupId) {\n var _this4 = this;\n\n var profile;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!this._groupProfiles[groupId]) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt('return', this._groupProfiles[groupId]);\n\n case 2:\n if (!this._groupProfilesPromise[groupId]) {\n _context2.next = 12;\n break;\n }\n\n _context2.prev = 3;\n _context2.next = 6;\n return (0, _bluebird.resolve)(this._groupProfilesPromise[groupId]);\n\n case 6:\n _context2.next = 11;\n break;\n\n case 8:\n _context2.prev = 8;\n _context2.t0 = _context2['catch'](3);\n return _context2.abrupt('return', null);\n\n case 11:\n return _context2.abrupt('return', this._groupProfiles[groupId]);\n\n case 12:\n\n // No request yet, start one\n console.log('FlairStore: Request group profile of ' + groupId);\n this._groupProfilesPromise[groupId] = matrixClient.getGroupProfile(groupId);\n\n profile = void 0;\n _context2.prev = 15;\n _context2.next = 18;\n return (0, _bluebird.resolve)(this._groupProfilesPromise[groupId]);\n\n case 18:\n profile = _context2.sent;\n _context2.next = 26;\n break;\n\n case 21:\n _context2.prev = 21;\n _context2.t1 = _context2['catch'](15);\n\n console.log('FlairStore: Failed to get group profile for ' + groupId, _context2.t1);\n // Don't retry, but allow a retry when the profile is next requested\n delete this._groupProfilesPromise[groupId];\n return _context2.abrupt('return', null);\n\n case 26:\n\n this._groupProfiles[groupId] = {\n groupId: groupId,\n avatarUrl: profile.avatar_url,\n name: profile.name,\n shortDescription: profile.short_description\n };\n delete this._groupProfilesPromise[groupId];\n\n /// XXX: This is verging on recreating a third \"Flux\"-looking Store. We really\n /// should replace FlairStore with a Flux store and some async actions.\n console.log('FlairStore: Emit updateGroupProfile for ' + groupId);\n this.emit('updateGroupProfile');\n\n setTimeout(function () {\n _this4.refreshGroupProfile(matrixClient, groupId);\n }, GROUP_PROFILES_CACHE_BUST_MS);\n\n return _context2.abrupt('return', this._groupProfiles[groupId]);\n\n case 32:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[3, 8], [15, 21]]);\n }));\n\n function getGroupProfileCached(_x2, _x3) {\n return _ref2.apply(this, arguments);\n }\n\n return getGroupProfileCached;\n }()\n }, {\n key: 'refreshGroupProfile',\n value: function refreshGroupProfile(matrixClient, groupId) {\n // Invalidate the cache\n delete this._groupProfiles[groupId];\n // Fetch new profile data, and cache it\n return this.getGroupProfileCached(matrixClient, groupId);\n }\n }]);\n return FlairStore;\n}(_events2.default);\n\nif (global.singletonFlairStore === undefined) {\n global.singletonFlairStore = new FlairStore();\n}\nexports.default = global.singletonFlairStore;\nmodule.exports = exports['default'];\n//# sourceMappingURL=FlairStore.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getArea = require('../get-area');\n\nvar _getArea2 = _interopRequireDefault(_getArea);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n var top = window.pageYOffset;\n var left = window.pageXOffset;\n var width = window.innerWidth;\n var height = window.innerHeight;\n\n var right = left + width;\n var bottom = top + height;\n\n return (0, _getArea2.default)({\n top: top, left: left, right: right, bottom: bottom\n });\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar prefix = function prefix(key) {\n return 'private-react-beautiful-dnd-key-do-not-use-' + key;\n};\n\nvar storeKey = exports.storeKey = prefix('store');\nvar droppableIdKey = exports.droppableIdKey = prefix('droppable-id');\nvar dimensionMarshalKey = exports.dimensionMarshalKey = prefix('dimension-marshal');\nvar styleContextKey = exports.styleContextKey = prefix('style-context');\nvar canLiftContextKey = exports.canLiftContextKey = prefix('can-lift');","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nexports.getDisplayAliasForRoom = getDisplayAliasForRoom;\nexports.getOnlyOtherMember = getOnlyOtherMember;\nexports.isConfCallRoom = isConfCallRoom;\nexports.looksLikeDirectMessageRoom = looksLikeDirectMessageRoom;\nexports.guessAndSetDMRoom = guessAndSetDMRoom;\nexports.setDMRoom = setDMRoom;\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Given a room object, return the alias we should use for it,\n * if any. This could be the canonical alias if one exists, otherwise\n * an alias selected arbitrarily but deterministically from the list\n * of aliases. Otherwise return null;\n */\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction getDisplayAliasForRoom(room) {\n return room.getCanonicalAlias() || room.getAliases()[0];\n}\n\n/**\n * If the room contains only two members including the logged-in user,\n * return the other one. Otherwise, return null.\n */\nfunction getOnlyOtherMember(room, myUserId) {\n if (room.currentState.getJoinedMemberCount() === 2) {\n return room.getJoinedMembers().filter(function (m) {\n return m.userId !== myUserId;\n })[0];\n }\n\n return null;\n}\n\nfunction _isConfCallRoom(room, myUserId, conferenceHandler) {\n if (!conferenceHandler) return false;\n\n var myMembership = room.getMyMembership();\n if (myMembership != \"join\") {\n return false;\n }\n\n var otherMember = getOnlyOtherMember(room, myUserId);\n if (!otherMember) {\n return false;\n }\n\n if (conferenceHandler.isConferenceUser(otherMember.userId)) {\n return true;\n }\n\n return false;\n}\n\n// Cache whether a room is a conference call. Assumes that rooms will always\n// either will or will not be a conference call room.\nvar isConfCallRoomCache = {\n // $roomId: bool\n};\n\nfunction isConfCallRoom(room, myUserId, conferenceHandler) {\n if (isConfCallRoomCache[room.roomId] !== undefined) {\n return isConfCallRoomCache[room.roomId];\n }\n\n var result = _isConfCallRoom(room, myUserId, conferenceHandler);\n\n isConfCallRoomCache[room.roomId] = result;\n\n return result;\n}\n\nfunction looksLikeDirectMessageRoom(room, myUserId) {\n var myMembership = room.getMyMembership();\n var me = room.getMember(myUserId);\n\n if (myMembership == \"join\" || myMembership === \"ban\" || me && me.isKicked()) {\n // Used to split rooms via tags\n var tagNames = (0, _keys2.default)(room.tags);\n // Used for 1:1 direct chats\n // Show 1:1 chats in seperate \"Direct Messages\" section as long as they haven't\n // been moved to a different tag section\n var totalMemberCount = room.currentState.getJoinedMemberCount() + room.currentState.getInvitedMemberCount();\n if (totalMemberCount === 2 && !tagNames.length) {\n return true;\n }\n }\n return false;\n}\n\nfunction guessAndSetDMRoom(room, isDirect) {\n var newTarget = void 0;\n if (isDirect) {\n var guessedUserId = guessDMRoomTargetId(room, _MatrixClientPeg2.default.get().getUserId());\n newTarget = guessedUserId;\n } else {\n newTarget = null;\n }\n\n return setDMRoom(room.roomId, newTarget);\n}\n\n/**\n * Marks or unmarks the given room as being as a DM room.\n * @param {string} roomId The ID of the room to modify\n * @param {string} userId The user ID of the desired DM\n room target user or null to un-mark\n this room as a DM room\n * @returns {object} A promise\n */\nfunction setDMRoom(roomId, userId) {\n if (_MatrixClientPeg2.default.get().isGuest()) {\n return _bluebird2.default.resolve();\n }\n\n var mDirectEvent = _MatrixClientPeg2.default.get().getAccountData('m.direct');\n var dmRoomMap = {};\n\n if (mDirectEvent !== undefined) dmRoomMap = mDirectEvent.getContent();\n\n // remove it from the lists of any others users\n // (it can only be a DM room for one person)\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(dmRoomMap)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var thisUserId = _step.value;\n\n var _roomList = dmRoomMap[thisUserId];\n\n if (thisUserId != userId) {\n var indexOfRoom = _roomList.indexOf(roomId);\n if (indexOfRoom > -1) {\n _roomList.splice(indexOfRoom, 1);\n }\n }\n }\n\n // now add it, if it's not already there\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (userId) {\n var roomList = dmRoomMap[userId] || [];\n if (roomList.indexOf(roomId) == -1) {\n roomList.push(roomId);\n }\n dmRoomMap[userId] = roomList;\n }\n\n return _MatrixClientPeg2.default.get().setAccountData('m.direct', dmRoomMap);\n}\n\n/**\n * Given a room, estimate which of its members is likely to\n * be the target if the room were a DM room and return that user.\n *\n * @param {Object} room Target room\n * @param {string} myUserId User ID of the current user\n * @returns {string} User ID of the user that the room is probably a DM with\n */\nfunction guessDMRoomTargetId(room, myUserId) {\n var oldestTs = void 0;\n var oldestUser = void 0;\n\n // Pick the joined user who's been here longest (and isn't us),\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(room.getJoinedMembers()), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var user = _step2.value;\n\n if (user.userId == myUserId) continue;\n\n if (oldestTs === undefined || user.events.member && user.events.member.getTs() < oldestTs) {\n oldestUser = user;\n oldestTs = user.events.member.getTs();\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n if (oldestUser) return oldestUser.userId;\n\n // if there are no joined members other than us, use the oldest member\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(room.currentState.getMembers()), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _user = _step3.value;\n\n if (_user.userId == myUserId) continue;\n\n if (oldestTs === undefined || _user.events.member && _user.events.member.getTs() < oldestTs) {\n oldestUser = _user;\n oldestTs = _user.events.member.getTs();\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n if (oldestUser === undefined) return myUserId;\n return oldestUser.userId;\n}\n//# sourceMappingURL=Rooms.js.map","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactBaseClasses = require('./ReactBaseClasses');\nvar ReactChildren = require('./ReactChildren');\nvar ReactDOMFactories = require('./ReactDOMFactories');\nvar ReactElement = require('./ReactElement');\nvar ReactPropTypes = require('./ReactPropTypes');\nvar ReactVersion = require('./ReactVersion');\n\nvar createReactClass = require('./createClass');\nvar onlyChild = require('./onlyChild');\n\nvar createElement = ReactElement.createElement;\nvar createFactory = ReactElement.createFactory;\nvar cloneElement = ReactElement.cloneElement;\n\nif (process.env.NODE_ENV !== 'production') {\n var lowPriorityWarning = require('./lowPriorityWarning');\n var canDefineProperty = require('./canDefineProperty');\n var ReactElementValidator = require('./ReactElementValidator');\n var didWarnPropTypesDeprecated = false;\n createElement = ReactElementValidator.createElement;\n createFactory = ReactElementValidator.createFactory;\n cloneElement = ReactElementValidator.cloneElement;\n}\n\nvar __spread = _assign;\nvar createMixin = function (mixin) {\n return mixin;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var warnedForSpread = false;\n var warnedForCreateMixin = false;\n __spread = function () {\n lowPriorityWarning(warnedForSpread, 'React.__spread is deprecated and should not be used. Use ' + 'Object.assign directly or another helper function with similar ' + 'semantics. You may be seeing this warning due to your compiler. ' + 'See https://fb.me/react-spread-deprecation for more details.');\n warnedForSpread = true;\n return _assign.apply(null, arguments);\n };\n\n createMixin = function (mixin) {\n lowPriorityWarning(warnedForCreateMixin, 'React.createMixin is deprecated and should not be used. ' + 'In React v16.0, it will be removed. ' + 'You can use this mixin directly instead. ' + 'See https://fb.me/createmixin-was-never-implemented for more info.');\n warnedForCreateMixin = true;\n return mixin;\n };\n}\n\nvar React = {\n // Modern\n\n Children: {\n map: ReactChildren.map,\n forEach: ReactChildren.forEach,\n count: ReactChildren.count,\n toArray: ReactChildren.toArray,\n only: onlyChild\n },\n\n Component: ReactBaseClasses.Component,\n PureComponent: ReactBaseClasses.PureComponent,\n\n createElement: createElement,\n cloneElement: cloneElement,\n isValidElement: ReactElement.isValidElement,\n\n // Classic\n\n PropTypes: ReactPropTypes,\n createClass: createReactClass,\n createFactory: createFactory,\n createMixin: createMixin,\n\n // This looks DOM specific but these are actually isomorphic helpers\n // since they are just generating DOM strings.\n DOM: ReactDOMFactories,\n\n version: ReactVersion,\n\n // Deprecated hook for JSX spread, don't use this for anything.\n __spread: __spread\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var warnedForCreateClass = false;\n if (canDefineProperty) {\n Object.defineProperty(React, 'PropTypes', {\n get: function () {\n lowPriorityWarning(didWarnPropTypesDeprecated, 'Accessing PropTypes via the main React package is deprecated,' + ' and will be removed in React v16.0.' + ' Use the latest available v15.* prop-types package from npm instead.' + ' For info on usage, compatibility, migration and more, see ' + 'https://fb.me/prop-types-docs');\n didWarnPropTypesDeprecated = true;\n return ReactPropTypes;\n }\n });\n\n Object.defineProperty(React, 'createClass', {\n get: function () {\n lowPriorityWarning(warnedForCreateClass, 'Accessing createClass via the main React package is deprecated,' + ' and will be removed in React v16.0.' + \" Use a plain JavaScript class instead. If you're not yet \" + 'ready to migrate, create-react-class v15.* is available ' + 'on npm as a temporary, drop-in replacement. ' + 'For more info see https://fb.me/react-create-class');\n warnedForCreateClass = true;\n return createReactClass;\n }\n });\n }\n\n // React.DOM factories are deprecated. Wrap these methods so that\n // invocations of the React.DOM namespace and alert users to switch\n // to the `react-dom-factories` package.\n React.DOM = {};\n var warnedForFactories = false;\n Object.keys(ReactDOMFactories).forEach(function (factory) {\n React.DOM[factory] = function () {\n if (!warnedForFactories) {\n lowPriorityWarning(false, 'Accessing factories like React.DOM.%s has been deprecated ' + 'and will be removed in v16.0+. Use the ' + 'react-dom-factories package instead. ' + ' Version 1.0 provides a drop-in replacement.' + ' For more info, see https://fb.me/react-dom-factories', factory);\n warnedForFactories = true;\n }\n return ReactDOMFactories[factory].apply(ReactDOMFactories, arguments);\n };\n });\n}\n\nmodule.exports = React;","exports.f = require('./_wks');\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function (instance) {\n var Klass = this;\n !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactRef = require('./ReactRef');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Helper to call ReactRef.attachRefs with this composite component, split out\n * to avoid allocations in the transaction mount-ready queue.\n */\nfunction attachRefs() {\n ReactRef.attachRefs(this, this._currentElement);\n}\n\nvar ReactReconciler = {\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} the containing host component instance\n * @param {?object} info about the host container\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function (internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID) // 0 in production and for roots\n {\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID);\n }\n }\n var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID);\n if (internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID);\n }\n }\n return markup;\n },\n\n /**\n * Returns a value that can be passed to\n * ReactComponentEnvironment.replaceNodeWithMarkup.\n */\n getHostNode: function (internalInstance) {\n return internalInstance.getHostNode();\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function (internalInstance, safely) {\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID);\n }\n }\n ReactRef.detachRefs(internalInstance, internalInstance._currentElement);\n internalInstance.unmountComponent(safely);\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Update a component using a new element.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @internal\n */\n receiveComponent: function (internalInstance, nextElement, transaction, context) {\n var prevElement = internalInstance._currentElement;\n\n if (nextElement === prevElement && context === internalInstance._context) {\n // Since elements are immutable after the owner is rendered,\n // we can do a cheap identity compare here to determine if this is a\n // superfluous reconcile. It's possible for state to be mutable but such\n // change should trigger an update of the owner which would recreate\n // the element. We explicitly check for the existence of an owner since\n // it's possible for an element created outside a composite to be\n // deeply mutated and reused.\n\n // TODO: Bailing out early is just a perf optimization right?\n // TODO: Removing the return statement should affect correctness?\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement);\n }\n }\n\n var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);\n\n if (refsChanged) {\n ReactRef.detachRefs(internalInstance, prevElement);\n }\n\n internalInstance.receiveComponent(nextElement, transaction, context);\n\n if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Flush any dirty changes in a component.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) {\n if (internalInstance._updateBatchNumber !== updateBatchNumber) {\n // The component's enqueued batch number should always be the current\n // batch or the following one.\n process.env.NODE_ENV !== 'production' ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, 'performUpdateIfNecessary: Unexpected batch number (current %s, ' + 'pending %s)', updateBatchNumber, internalInstance._updateBatchNumber) : void 0;\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement);\n }\n }\n internalInstance.performUpdateIfNecessary(transaction);\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n }\n};\n\nmodule.exports = ReactReconciler;","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * This is an internal module. See {@link MatrixEvent} and {@link RoomEvent} for\n * the public classes.\n * @module models/event\n */\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _events = require('events');\n\nvar _utils = require('../utils.js');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Enum for event statuses.\n * @readonly\n * @enum {string}\n */\nmodule.exports.EventStatus = {\n /** The event was not sent and will no longer be retried. */\n NOT_SENT: \"not_sent\",\n\n /** The message is being encrypted */\n ENCRYPTING: \"encrypting\",\n\n /** The event is in the process of being sent. */\n SENDING: \"sending\",\n /** The event is in a queue waiting to be sent. */\n QUEUED: \"queued\",\n /** The event has been sent to the server, but we have not yet received the\n * echo. */\n SENT: \"sent\",\n\n /** The event was cancelled before it was successfully sent. */\n CANCELLED: \"cancelled\"\n};\n\nvar interns = {};\n\n/**\n * Construct a Matrix Event object\n * @constructor\n *\n * @param {Object} event The raw event to be wrapped in this DAO\n *\n * @prop {Object} event The raw (possibly encrypted) event. <b>Do not access\n * this property</b> directly unless you absolutely have to. Prefer the getter\n * methods defined on this class. Using the getter methods shields your app\n * from changes to event JSON between Matrix versions.\n *\n * @prop {RoomMember} sender The room member who sent this event, or null e.g.\n * this is a presence event. This is only guaranteed to be set for events that\n * appear in a timeline, ie. do not guarantee that it will be set on state\n * events.\n * @prop {RoomMember} target The room member who is the target of this event, e.g.\n * the invitee, the person being banned, etc.\n * @prop {EventStatus} status The sending status of the event.\n * @prop {Error} error most recent error associated with sending the event, if any\n * @prop {boolean} forwardLooking True if this event is 'forward looking', meaning\n * that getDirectionalContent() will return event.content and not event.prev_content.\n * Default: true. <strong>This property is experimental and may change.</strong>\n */\nmodule.exports.MatrixEvent = function MatrixEvent(event) {\n // intern the values of matrix events to force share strings and reduce the\n // amount of needless string duplication. This can save moderate amounts of\n // memory (~10% on a 350MB heap).\n // 'membership' at the event level (rather than the content level) is a legacy\n // field that Riot never otherwise looks at, but it will still take up a lot\n // of space if we don't intern it.\n [\"state_key\", \"type\", \"sender\", \"room_id\", \"membership\"].forEach(function (prop) {\n if (!event[prop]) {\n return;\n }\n if (!interns[event[prop]]) {\n interns[event[prop]] = event[prop];\n }\n event[prop] = interns[event[prop]];\n });\n\n [\"membership\", \"avatar_url\", \"displayname\"].forEach(function (prop) {\n if (!event.content || !event.content[prop]) {\n return;\n }\n if (!interns[event.content[prop]]) {\n interns[event.content[prop]] = event.content[prop];\n }\n event.content[prop] = interns[event.content[prop]];\n });\n\n this.event = event || {};\n\n this.sender = null;\n this.target = null;\n this.status = null;\n this.error = null;\n this.forwardLooking = true;\n this._pushActions = null;\n\n this._clearEvent = {};\n\n /* curve25519 key which we believe belongs to the sender of the event. See\n * getSenderKey()\n */\n this._senderCurve25519Key = null;\n\n /* ed25519 key which the sender of this event (for olm) or the creator of\n * the megolm session (for megolm) claims to own. See getClaimedEd25519Key()\n */\n this._claimedEd25519Key = null;\n\n /* curve25519 keys of devices involved in telling us about the\n * _senderCurve25519Key and _claimedEd25519Key.\n * See getForwardingCurve25519KeyChain().\n */\n this._forwardingCurve25519KeyChain = [];\n\n /* if we have a process decrypting this event, a Promise which resolves\n * when it is finished. Normally null.\n */\n this._decryptionPromise = null;\n\n /* flag to indicate if we should retry decrypting this event after the\n * first attempt (eg, we have received new data which means that a second\n * attempt may succeed)\n */\n this._retryDecryption = false;\n};\n_utils2.default.inherits(module.exports.MatrixEvent, _events.EventEmitter);\n\n_utils2.default.extend(module.exports.MatrixEvent.prototype, {\n\n /**\n * Get the event_id for this event.\n * @return {string} The event ID, e.g. <code>$143350589368169JsLZx:localhost\n * </code>\n */\n getId: function getId() {\n return this.event.event_id;\n },\n\n /**\n * Get the user_id for this event.\n * @return {string} The user ID, e.g. <code>@alice:matrix.org</code>\n */\n getSender: function getSender() {\n return this.event.sender || this.event.user_id; // v2 / v1\n },\n\n /**\n * Get the (decrypted, if necessary) type of event.\n *\n * @return {string} The event type, e.g. <code>m.room.message</code>\n */\n getType: function getType() {\n return this._clearEvent.type || this.event.type;\n },\n\n /**\n * Get the (possibly encrypted) type of the event that will be sent to the\n * homeserver.\n *\n * @return {string} The event type.\n */\n getWireType: function getWireType() {\n return this.event.type;\n },\n\n /**\n * Get the room_id for this event. This will return <code>undefined</code>\n * for <code>m.presence</code> events.\n * @return {string} The room ID, e.g. <code>!cURbafjkfsMDVwdRDQ:matrix.org\n * </code>\n */\n getRoomId: function getRoomId() {\n return this.event.room_id;\n },\n\n /**\n * Get the timestamp of this event.\n * @return {Number} The event timestamp, e.g. <code>1433502692297</code>\n */\n getTs: function getTs() {\n return this.event.origin_server_ts;\n },\n\n /**\n * Get the timestamp of this event, as a Date object.\n * @return {Date} The event date, e.g. <code>new Date(1433502692297)</code>\n */\n getDate: function getDate() {\n return this.event.origin_server_ts ? new Date(this.event.origin_server_ts) : null;\n },\n\n /**\n * Get the (decrypted, if necessary) event content JSON.\n *\n * @return {Object} The event content JSON, or an empty object.\n */\n getContent: function getContent() {\n return this._clearEvent.content || this.event.content || {};\n },\n\n /**\n * Get the (possibly encrypted) event content JSON that will be sent to the\n * homeserver.\n *\n * @return {Object} The event content JSON, or an empty object.\n */\n getWireContent: function getWireContent() {\n return this.event.content || {};\n },\n\n /**\n * Get the previous event content JSON. This will only return something for\n * state events which exist in the timeline.\n * @return {Object} The previous event content JSON, or an empty object.\n */\n getPrevContent: function getPrevContent() {\n // v2 then v1 then default\n return this.getUnsigned().prev_content || this.event.prev_content || {};\n },\n\n /**\n * Get either 'content' or 'prev_content' depending on if this event is\n * 'forward-looking' or not. This can be modified via event.forwardLooking.\n * In practice, this means we get the chronologically earlier content value\n * for this event (this method should surely be called getEarlierContent)\n * <strong>This method is experimental and may change.</strong>\n * @return {Object} event.content if this event is forward-looking, else\n * event.prev_content.\n */\n getDirectionalContent: function getDirectionalContent() {\n return this.forwardLooking ? this.getContent() : this.getPrevContent();\n },\n\n /**\n * Get the age of this event. This represents the age of the event when the\n * event arrived at the device, and not the age of the event when this\n * function was called.\n * @return {Number} The age of this event in milliseconds.\n */\n getAge: function getAge() {\n return this.getUnsigned().age || this.event.age; // v2 / v1\n },\n\n /**\n * Get the event state_key if it has one. This will return <code>undefined\n * </code> for message events.\n * @return {string} The event's <code>state_key</code>.\n */\n getStateKey: function getStateKey() {\n return this.event.state_key;\n },\n\n /**\n * Check if this event is a state event.\n * @return {boolean} True if this is a state event.\n */\n isState: function isState() {\n return this.event.state_key !== undefined;\n },\n\n /**\n * Replace the content of this event with encrypted versions.\n * (This is used when sending an event; it should not be used by applications).\n *\n * @internal\n *\n * @param {string} crypto_type type of the encrypted event - typically\n * <tt>\"m.room.encrypted\"</tt>\n *\n * @param {object} crypto_content raw 'content' for the encrypted event.\n *\n * @param {string} senderCurve25519Key curve25519 key to record for the\n * sender of this event.\n * See {@link module:models/event.MatrixEvent#getSenderKey}.\n *\n * @param {string} claimedEd25519Key claimed ed25519 key to record for the\n * sender if this event.\n * See {@link module:models/event.MatrixEvent#getClaimedEd25519Key}\n */\n makeEncrypted: function makeEncrypted(crypto_type, crypto_content, senderCurve25519Key, claimedEd25519Key) {\n // keep the plain-text data for 'view source'\n this._clearEvent = {\n type: this.event.type,\n content: this.event.content\n };\n this.event.type = crypto_type;\n this.event.content = crypto_content;\n this._senderCurve25519Key = senderCurve25519Key;\n this._claimedEd25519Key = claimedEd25519Key;\n },\n\n /**\n * Check if this event is currently being decrypted.\n *\n * @return {boolean} True if this event is currently being decrypted, else false.\n */\n isBeingDecrypted: function isBeingDecrypted() {\n return this._decryptionPromise != null;\n },\n\n /**\n * Check if this event is an encrypted event which we failed to decrypt\n *\n * (This implies that we might retry decryption at some point in the future)\n *\n * @return {boolean} True if this event is an encrypted event which we\n * couldn't decrypt.\n */\n isDecryptionFailure: function isDecryptionFailure() {\n return this._clearEvent && this._clearEvent.content && this._clearEvent.content.msgtype === \"m.bad.encrypted\";\n },\n\n /**\n * Start the process of trying to decrypt this event.\n *\n * (This is used within the SDK: it isn't intended for use by applications)\n *\n * @internal\n *\n * @param {module:crypto} crypto crypto module\n *\n * @returns {Promise} promise which resolves (to undefined) when the decryption\n * attempt is completed.\n */\n attemptDecryption: function () {\n var _ref = (0, _bluebird.method)(function (crypto) {\n // start with a couple of sanity checks.\n if (!this.isEncrypted()) {\n throw new Error(\"Attempt to decrypt event which isn't encrypted\");\n }\n\n if (this._clearEvent && this._clearEvent.content && this._clearEvent.content.msgtype !== \"m.bad.encrypted\") {\n // we may want to just ignore this? let's start with rejecting it.\n throw new Error(\"Attempt to decrypt event which has already been encrypted\");\n }\n\n // if we already have a decryption attempt in progress, then it may\n // fail because it was using outdated info. We now have reason to\n // succeed where it failed before, but we don't want to have multiple\n // attempts going at the same time, so just set a flag that says we have\n // new info.\n //\n if (this._decryptionPromise) {\n console.log('Event ' + this.getId() + ' already being decrypted; queueing a retry');\n this._retryDecryption = true;\n return this._decryptionPromise;\n }\n\n this._decryptionPromise = this._decryptionLoop(crypto);\n return this._decryptionPromise;\n });\n\n function attemptDecryption(_x) {\n return _ref.apply(this, arguments);\n }\n\n return attemptDecryption;\n }(),\n\n /**\n * Cancel any room key request for this event and resend another.\n *\n * @param {module:crypto} crypto crypto module\n */\n cancelAndResendKeyRequest: function cancelAndResendKeyRequest(crypto) {\n var wireContent = this.getWireContent();\n crypto.cancelRoomKeyRequest({\n algorithm: wireContent.algorithm,\n room_id: this.getRoomId(),\n session_id: wireContent.session_id,\n sender_key: wireContent.sender_key\n }, true);\n },\n\n _decryptionLoop: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(crypto) {\n var res, err;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(_bluebird2.default.resolve());\n\n case 2:\n if (!true) {\n _context.next = 36;\n break;\n }\n\n this._retryDecryption = false;\n\n res = void 0;\n err = void 0;\n _context.prev = 6;\n\n if (crypto) {\n _context.next = 11;\n break;\n }\n\n res = this._badEncryptedMessage(\"Encryption not enabled\");\n _context.next = 14;\n break;\n\n case 11:\n _context.next = 13;\n return (0, _bluebird.resolve)(crypto.decryptEvent(this));\n\n case 13:\n res = _context.sent;\n\n case 14:\n _context.next = 29;\n break;\n\n case 16:\n _context.prev = 16;\n _context.t0 = _context['catch'](6);\n\n if (!(_context.t0.name !== \"DecryptionError\")) {\n _context.next = 23;\n break;\n }\n\n // not a decryption error: log the whole exception as an error\n // (and don't bother with a retry)\n console.error('Error decrypting event (id=' + this.getId() + '): ' + (_context.t0.stack || _context.t0));\n this._decryptionPromise = null;\n this._retryDecryption = false;\n return _context.abrupt('return');\n\n case 23:\n\n err = _context.t0;\n\n // see if we have a retry queued.\n //\n // NB: make sure to keep this check in the same tick of the\n // event loop as `_decryptionPromise = null` below - otherwise we\n // risk a race:\n //\n // * A: we check _retryDecryption here and see that it is\n // false\n // * B: we get a second call to attemptDecryption, which sees\n // that _decryptionPromise is set so sets\n // _retryDecryption\n // * A: we continue below, clear _decryptionPromise, and\n // never do the retry.\n //\n\n if (!this._retryDecryption) {\n _context.next = 27;\n break;\n }\n\n // decryption error, but we have a retry queued.\n console.log('Got error decrypting event (id=' + this.getId() + ': ' + (_context.t0 + '), but retrying'));\n return _context.abrupt('continue', 2);\n\n case 27:\n\n // decryption error, no retries queued. Warn about the error and\n // set it to m.bad.encrypted.\n console.warn('Error decrypting event (id=' + this.getId() + '): ' + _context.t0.detailedString);\n\n res = this._badEncryptedMessage(_context.t0.message);\n\n case 29:\n\n // at this point, we've either successfully decrypted the event, or have given up\n // (and set res to a 'badEncryptedMessage'). Either way, we can now set the\n // cleartext of the event and raise Event.decrypted.\n //\n // make sure we clear '_decryptionPromise' before sending the 'Event.decrypted' event,\n // otherwise the app will be confused to see `isBeingDecrypted` still set when\n // there isn't an `Event.decrypted` on the way.\n //\n // see also notes on _retryDecryption above.\n //\n this._decryptionPromise = null;\n this._retryDecryption = false;\n this._setClearData(res);\n\n this.emit(\"Event.decrypted\", this, err);\n\n return _context.abrupt('return');\n\n case 36:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[6, 16]]);\n }));\n\n function _decryptionLoop(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return _decryptionLoop;\n }(),\n\n _badEncryptedMessage: function _badEncryptedMessage(reason) {\n return {\n clearEvent: {\n type: \"m.room.message\",\n content: {\n msgtype: \"m.bad.encrypted\",\n body: \"** Unable to decrypt: \" + reason + \" **\"\n }\n }\n };\n },\n\n /**\n * Update the cleartext data on this event.\n *\n * (This is used after decrypting an event; it should not be used by applications).\n *\n * @internal\n *\n * @fires module:models/event.MatrixEvent#\"Event.decrypted\"\n *\n * @param {module:crypto~EventDecryptionResult} decryptionResult\n * the decryption result, including the plaintext and some key info\n */\n _setClearData: function _setClearData(decryptionResult) {\n this._clearEvent = decryptionResult.clearEvent;\n this._senderCurve25519Key = decryptionResult.senderCurve25519Key || null;\n this._claimedEd25519Key = decryptionResult.claimedEd25519Key || null;\n this._forwardingCurve25519KeyChain = decryptionResult.forwardingCurve25519KeyChain || [];\n },\n\n /**\n * Check if the event is encrypted.\n * @return {boolean} True if this event is encrypted.\n */\n isEncrypted: function isEncrypted() {\n return this.event.type === \"m.room.encrypted\";\n },\n\n /**\n * The curve25519 key for the device that we think sent this event\n *\n * For an Olm-encrypted event, this is inferred directly from the DH\n * exchange at the start of the session: the curve25519 key is involved in\n * the DH exchange, so only a device which holds the private part of that\n * key can establish such a session.\n *\n * For a megolm-encrypted event, it is inferred from the Olm message which\n * established the megolm session\n *\n * @return {string}\n */\n getSenderKey: function getSenderKey() {\n return this._senderCurve25519Key;\n },\n\n /**\n * The additional keys the sender of this encrypted event claims to possess.\n *\n * Just a wrapper for #getClaimedEd25519Key (q.v.)\n *\n * @return {Object<string, string>}\n */\n getKeysClaimed: function getKeysClaimed() {\n return {\n ed25519: this._claimedEd25519Key\n };\n },\n\n /**\n * Get the ed25519 the sender of this event claims to own.\n *\n * For Olm messages, this claim is encoded directly in the plaintext of the\n * event itself. For megolm messages, it is implied by the m.room_key event\n * which established the megolm session.\n *\n * Until we download the device list of the sender, it's just a claim: the\n * device list gives a proof that the owner of the curve25519 key used for\n * this event (and returned by #getSenderKey) also owns the ed25519 key by\n * signing the public curve25519 key with the ed25519 key.\n *\n * In general, applications should not use this method directly, but should\n * instead use MatrixClient.getEventSenderDeviceInfo.\n *\n * @return {string}\n */\n getClaimedEd25519Key: function getClaimedEd25519Key() {\n return this._claimedEd25519Key;\n },\n\n /**\n * Get the curve25519 keys of the devices which were involved in telling us\n * about the claimedEd25519Key and sender curve25519 key.\n *\n * Normally this will be empty, but in the case of a forwarded megolm\n * session, the sender keys are sent to us by another device (the forwarding\n * device), which we need to trust to do this. In that case, the result will\n * be a list consisting of one entry.\n *\n * If the device that sent us the key (A) got it from another device which\n * it wasn't prepared to vouch for (B), the result will be [A, B]. And so on.\n *\n * @return {string[]} base64-encoded curve25519 keys, from oldest to newest.\n */\n getForwardingCurve25519KeyChain: function getForwardingCurve25519KeyChain() {\n return this._forwardingCurve25519KeyChain;\n },\n\n getUnsigned: function getUnsigned() {\n return this.event.unsigned || {};\n },\n\n /**\n * Update the content of an event in the same way it would be by the server\n * if it were redacted before it was sent to us\n *\n * @param {module:models/event.MatrixEvent} redaction_event\n * event causing the redaction\n */\n makeRedacted: function makeRedacted(redaction_event) {\n // quick sanity-check\n if (!redaction_event.event) {\n throw new Error(\"invalid redaction_event in makeRedacted\");\n }\n\n // we attempt to replicate what we would see from the server if\n // the event had been redacted before we saw it.\n //\n // The server removes (most of) the content of the event, and adds a\n // \"redacted_because\" key to the unsigned section containing the\n // redacted event.\n if (!this.event.unsigned) {\n this.event.unsigned = {};\n }\n this.event.unsigned.redacted_because = redaction_event.event;\n\n var key = void 0;\n for (key in this.event) {\n if (!this.event.hasOwnProperty(key)) {\n continue;\n }\n if (!_REDACT_KEEP_KEY_MAP[key]) {\n delete this.event[key];\n }\n }\n\n var keeps = _REDACT_KEEP_CONTENT_MAP[this.getType()] || {};\n var content = this.getContent();\n for (key in content) {\n if (!content.hasOwnProperty(key)) {\n continue;\n }\n if (!keeps[key]) {\n delete content[key];\n }\n }\n },\n\n /**\n * Check if this event has been redacted\n *\n * @return {boolean} True if this event has been redacted\n */\n isRedacted: function isRedacted() {\n return Boolean(this.getUnsigned().redacted_because);\n },\n\n /**\n * Get the push actions, if known, for this event\n *\n * @return {?Object} push actions\n */\n getPushActions: function getPushActions() {\n return this._pushActions;\n },\n\n /**\n * Set the push actions for this event.\n *\n * @param {Object} pushActions push actions\n */\n setPushActions: function setPushActions(pushActions) {\n this._pushActions = pushActions;\n },\n\n /**\n * Replace the `event` property and recalculate any properties based on it.\n * @param {Object} event the object to assign to the `event` property\n */\n handleRemoteEcho: function handleRemoteEcho(event) {\n this.event = event;\n // successfully sent.\n this.status = null;\n }\n});\n\n/* _REDACT_KEEP_KEY_MAP gives the keys we keep when an event is redacted\n *\n * This is specified here:\n * http://matrix.org/speculator/spec/HEAD/client_server/unstable.html#redactions\n *\n * Also:\n * - We keep 'unsigned' since that is created by the local server\n * - We keep user_id for backwards-compat with v1\n */\nvar _REDACT_KEEP_KEY_MAP = ['event_id', 'type', 'room_id', 'user_id', 'sender', 'state_key', 'prev_state', 'content', 'unsigned', 'origin_server_ts'].reduce(function (ret, val) {\n ret[val] = 1;return ret;\n}, {});\n\n// a map from event type to the .content keys we keep when an event is redacted\nvar _REDACT_KEEP_CONTENT_MAP = {\n 'm.room.member': { 'membership': 1 },\n 'm.room.create': { 'creator': 1 },\n 'm.room.join_rules': { 'join_rule': 1 },\n 'm.room.power_levels': { 'ban': 1, 'events': 1, 'events_default': 1,\n 'kick': 1, 'redact': 1, 'state_default': 1,\n 'users': 1, 'users_default': 1\n },\n 'm.room.aliases': { 'aliases': 1 }\n};\n\n/**\n * Fires when an event is decrypted\n *\n * @event module:models/event.MatrixEvent#\"Event.decrypted\"\n *\n * @param {module:models/event.MatrixEvent} event\n * The matrix event which has been decrypted\n * @param {module:crypto/algorithms/base.DecryptionError?} err\n * The error that occured during decryption, or `undefined` if no\n * error occured.\n */\n//# sourceMappingURL=event.js.map","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/*\nCopyright 2016, 2017 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module models/event-timeline\n */\n\nvar _freeze = require(\"babel-runtime/core-js/object/freeze\");\n\nvar _freeze2 = _interopRequireDefault(_freeze);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar RoomState = require(\"./room-state\");\n\n/**\n * Construct a new EventTimeline\n *\n * <p>An EventTimeline represents a contiguous sequence of events in a room.\n *\n * <p>As well as keeping track of the events themselves, it stores the state of\n * the room at the beginning and end of the timeline, and pagination tokens for\n * going backwards and forwards in the timeline.\n *\n * <p>In order that clients can meaningfully maintain an index into a timeline,\n * the EventTimeline object tracks a 'baseIndex'. This starts at zero, but is\n * incremented when events are prepended to the timeline. The index of an event\n * relative to baseIndex therefore remains constant.\n *\n * <p>Once a timeline joins up with its neighbour, they are linked together into a\n * doubly-linked list.\n *\n * @param {EventTimelineSet} eventTimelineSet the set of timelines this is part of\n * @constructor\n */\nfunction EventTimeline(eventTimelineSet) {\n this._eventTimelineSet = eventTimelineSet;\n this._roomId = eventTimelineSet.room ? eventTimelineSet.room.roomId : null;\n this._events = [];\n this._baseIndex = 0;\n this._startState = new RoomState(this._roomId);\n this._startState.paginationToken = null;\n this._endState = new RoomState(this._roomId);\n this._endState.paginationToken = null;\n\n this._prevTimeline = null;\n this._nextTimeline = null;\n\n // this is used by client.js\n this._paginationRequests = { 'b': null, 'f': null };\n\n this._name = this._roomId + \":\" + new Date().toISOString();\n}\n\n/**\n * Symbolic constant for methods which take a 'direction' argument:\n * refers to the start of the timeline, or backwards in time.\n */\nEventTimeline.BACKWARDS = \"b\";\n\n/**\n * Symbolic constant for methods which take a 'direction' argument:\n * refers to the end of the timeline, or forwards in time.\n */\nEventTimeline.FORWARDS = \"f\";\n\n/**\n * Initialise the start and end state with the given events\n *\n * <p>This can only be called before any events are added.\n *\n * @param {MatrixEvent[]} stateEvents list of state events to initialise the\n * state with.\n * @throws {Error} if an attempt is made to call this after addEvent is called.\n */\nEventTimeline.prototype.initialiseState = function (stateEvents) {\n if (this._events.length > 0) {\n throw new Error(\"Cannot initialise state after events are added\");\n }\n\n // We previously deep copied events here and used different copies in\n // the oldState and state events: this decision seems to date back\n // quite a way and was apparently made to fix a bug where modifications\n // made to the start state leaked through to the end state.\n // This really shouldn't be possible though: the events themselves should\n // not change. Duplicating the events uses a lot of extra memory,\n // so we now no longer do it. To assert that they really do never change,\n // freeze them! Note that we can't do this for events in general:\n // although it looks like the only things preventing us are the\n // 'status' flag, forwardLooking (which is only set once when adding to the\n // timeline) and possibly the sender (which seems like it should never be\n // reset but in practice causes a lot of the tests to break).\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(stateEvents), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var e = _step.value;\n\n (0, _freeze2.default)(e);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n this._startState.setStateEvents(stateEvents);\n this._endState.setStateEvents(stateEvents);\n};\n\n/**\n * Forks the (live) timeline, taking ownership of the existing directional state of this timeline.\n * All attached listeners will keep receiving state updates from the new live timeline state.\n * The end state of this timeline gets replaced with an independent copy of the current RoomState,\n * and will need a new pagination token if it ever needs to paginate forwards.\n\n * @param {string} direction EventTimeline.BACKWARDS to get the state at the\n * start of the timeline; EventTimeline.FORWARDS to get the state at the end\n * of the timeline.\n *\n * @return {EventTimeline} the new timeline\n */\nEventTimeline.prototype.forkLive = function (direction) {\n var forkState = this.getState(direction);\n var timeline = new EventTimeline(this._eventTimelineSet);\n timeline._startState = forkState.clone();\n // Now clobber the end state of the new live timeline with that from the\n // previous live timeline. It will be identical except that we'll keep\n // using the same RoomMember objects for the 'live' set of members with any\n // listeners still attached\n timeline._endState = forkState;\n // Firstly, we just stole the current timeline's end state, so it needs a new one.\n // Make an immutable copy of the state so back pagination will get the correct sentinels.\n this._endState = forkState.clone();\n return timeline;\n};\n\n/**\n * Creates an independent timeline, inheriting the directional state from this timeline.\n *\n * @param {string} direction EventTimeline.BACKWARDS to get the state at the\n * start of the timeline; EventTimeline.FORWARDS to get the state at the end\n * of the timeline.\n *\n * @return {EventTimeline} the new timeline\n */\nEventTimeline.prototype.fork = function (direction) {\n var forkState = this.getState(direction);\n var timeline = new EventTimeline(this._eventTimelineSet);\n timeline._startState = forkState.clone();\n timeline._endState = forkState.clone();\n return timeline;\n};\n\n/**\n * Get the ID of the room for this timeline\n * @return {string} room ID\n */\nEventTimeline.prototype.getRoomId = function () {\n return this._roomId;\n};\n\n/**\n * Get the filter for this timeline's timelineSet (if any)\n * @return {Filter} filter\n */\nEventTimeline.prototype.getFilter = function () {\n return this._eventTimelineSet.getFilter();\n};\n\n/**\n * Get the timelineSet for this timeline\n * @return {EventTimelineSet} timelineSet\n */\nEventTimeline.prototype.getTimelineSet = function () {\n return this._eventTimelineSet;\n};\n\n/**\n * Get the base index.\n *\n * <p>This is an index which is incremented when events are prepended to the\n * timeline. An individual event therefore stays at the same index in the array\n * relative to the base index (although note that a given event's index may\n * well be less than the base index, thus giving that event a negative relative\n * index).\n *\n * @return {number}\n */\nEventTimeline.prototype.getBaseIndex = function () {\n return this._baseIndex;\n};\n\n/**\n * Get the list of events in this context\n *\n * @return {MatrixEvent[]} An array of MatrixEvents\n */\nEventTimeline.prototype.getEvents = function () {\n return this._events;\n};\n\n/**\n * Get the room state at the start/end of the timeline\n *\n * @param {string} direction EventTimeline.BACKWARDS to get the state at the\n * start of the timeline; EventTimeline.FORWARDS to get the state at the end\n * of the timeline.\n *\n * @return {RoomState} state at the start/end of the timeline\n */\nEventTimeline.prototype.getState = function (direction) {\n if (direction == EventTimeline.BACKWARDS) {\n return this._startState;\n } else if (direction == EventTimeline.FORWARDS) {\n return this._endState;\n } else {\n throw new Error(\"Invalid direction '\" + direction + \"'\");\n }\n};\n\n/**\n * Get a pagination token\n *\n * @param {string} direction EventTimeline.BACKWARDS to get the pagination\n * token for going backwards in time; EventTimeline.FORWARDS to get the\n * pagination token for going forwards in time.\n *\n * @return {?string} pagination token\n */\nEventTimeline.prototype.getPaginationToken = function (direction) {\n return this.getState(direction).paginationToken;\n};\n\n/**\n * Set a pagination token\n *\n * @param {?string} token pagination token\n *\n * @param {string} direction EventTimeline.BACKWARDS to set the pagination\n * token for going backwards in time; EventTimeline.FORWARDS to set the\n * pagination token for going forwards in time.\n */\nEventTimeline.prototype.setPaginationToken = function (token, direction) {\n this.getState(direction).paginationToken = token;\n};\n\n/**\n * Get the next timeline in the series\n *\n * @param {string} direction EventTimeline.BACKWARDS to get the previous\n * timeline; EventTimeline.FORWARDS to get the next timeline.\n *\n * @return {?EventTimeline} previous or following timeline, if they have been\n * joined up.\n */\nEventTimeline.prototype.getNeighbouringTimeline = function (direction) {\n if (direction == EventTimeline.BACKWARDS) {\n return this._prevTimeline;\n } else if (direction == EventTimeline.FORWARDS) {\n return this._nextTimeline;\n } else {\n throw new Error(\"Invalid direction '\" + direction + \"'\");\n }\n};\n\n/**\n * Set the next timeline in the series\n *\n * @param {EventTimeline} neighbour previous/following timeline\n *\n * @param {string} direction EventTimeline.BACKWARDS to set the previous\n * timeline; EventTimeline.FORWARDS to set the next timeline.\n *\n * @throws {Error} if an attempt is made to set the neighbouring timeline when\n * it is already set.\n */\nEventTimeline.prototype.setNeighbouringTimeline = function (neighbour, direction) {\n if (this.getNeighbouringTimeline(direction)) {\n throw new Error(\"timeline already has a neighbouring timeline - \" + \"cannot reset neighbour\");\n }\n\n if (direction == EventTimeline.BACKWARDS) {\n this._prevTimeline = neighbour;\n } else if (direction == EventTimeline.FORWARDS) {\n this._nextTimeline = neighbour;\n } else {\n throw new Error(\"Invalid direction '\" + direction + \"'\");\n }\n\n // make sure we don't try to paginate this timeline\n this.setPaginationToken(null, direction);\n};\n\n/**\n * Add a new event to the timeline, and update the state\n *\n * @param {MatrixEvent} event new event\n * @param {boolean} atStart true to insert new event at the start\n */\nEventTimeline.prototype.addEvent = function (event, atStart) {\n var stateContext = atStart ? this._startState : this._endState;\n\n // only call setEventMetadata on the unfiltered timelineSets\n var timelineSet = this.getTimelineSet();\n if (timelineSet.room && timelineSet.room.getUnfilteredTimelineSet() === timelineSet) {\n EventTimeline.setEventMetadata(event, stateContext, atStart);\n\n // modify state\n if (event.isState()) {\n stateContext.setStateEvents([event]);\n // it is possible that the act of setting the state event means we\n // can set more metadata (specifically sender/target props), so try\n // it again if the prop wasn't previously set. It may also mean that\n // the sender/target is updated (if the event set was a room member event)\n // so we want to use the *updated* member (new avatar/name) instead.\n //\n // However, we do NOT want to do this on member events if we're going\n // back in time, else we'll set the .sender value for BEFORE the given\n // member event, whereas we want to set the .sender value for the ACTUAL\n // member event itself.\n if (!event.sender || event.getType() === \"m.room.member\" && !atStart) {\n EventTimeline.setEventMetadata(event, stateContext, atStart);\n }\n }\n }\n\n var insertIndex = void 0;\n\n if (atStart) {\n insertIndex = 0;\n } else {\n insertIndex = this._events.length;\n }\n\n this._events.splice(insertIndex, 0, event); // insert element\n if (atStart) {\n this._baseIndex++;\n }\n};\n\n/**\n * Static helper method to set sender and target properties\n *\n * @param {MatrixEvent} event the event whose metadata is to be set\n * @param {RoomState} stateContext the room state to be queried\n * @param {bool} toStartOfTimeline if true the event's forwardLooking flag is set false\n */\nEventTimeline.setEventMetadata = function (event, stateContext, toStartOfTimeline) {\n // set sender and target properties\n event.sender = stateContext.getSentinelMember(event.getSender());\n if (event.getType() === \"m.room.member\") {\n event.target = stateContext.getSentinelMember(event.getStateKey());\n }\n if (event.isState()) {\n // room state has no concept of 'old' or 'current', but we want the\n // room state to regress back to previous values if toStartOfTimeline\n // is set, which means inspecting prev_content if it exists. This\n // is done by toggling the forwardLooking flag.\n if (toStartOfTimeline) {\n event.forwardLooking = false;\n }\n }\n};\n\n/**\n * Remove an event from the timeline\n *\n * @param {string} eventId ID of event to be removed\n * @return {?MatrixEvent} removed event, or null if not found\n */\nEventTimeline.prototype.removeEvent = function (eventId) {\n for (var i = this._events.length - 1; i >= 0; i--) {\n var ev = this._events[i];\n if (ev.getId() == eventId) {\n this._events.splice(i, 1);\n if (i < this._baseIndex) {\n this._baseIndex--;\n }\n return ev;\n }\n }\n return null;\n};\n\n/**\n * Return a string to identify this timeline, for debugging\n *\n * @return {string} name for this timeline\n */\nEventTimeline.prototype.toString = function () {\n return this._name;\n};\n\n/**\n * The EventTimeline class\n */\nmodule.exports = EventTimeline;\n//# sourceMappingURL=event-timeline.js.map","'use strict';\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _SettingsStore = require('./settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar request = require('browser-request');\n\nvar SdkConfig = require('./SdkConfig');\nvar MatrixClientPeg = require('./MatrixClientPeg');\n\nvar ScalarAuthClient = function () {\n function ScalarAuthClient() {\n (0, _classCallCheck3.default)(this, ScalarAuthClient);\n\n this.scalarToken = null;\n }\n\n (0, _createClass3.default)(ScalarAuthClient, [{\n key: 'connect',\n value: function connect() {\n var _this = this;\n\n return this.getScalarToken().then(function (tok) {\n _this.scalarToken = tok;\n });\n }\n }, {\n key: 'hasCredentials',\n value: function hasCredentials() {\n return this.scalarToken != null; // undef or null\n }\n\n // Returns a scalar_token string\n\n }, {\n key: 'getScalarToken',\n value: function getScalarToken() {\n var _this2 = this;\n\n var token = window.localStorage.getItem(\"mx_scalar_token\");\n\n if (!token) {\n return this.registerForToken();\n } else {\n return this.validateToken(token).then(function (userId) {\n var me = MatrixClientPeg.get().getUserId();\n if (userId !== me) {\n throw new Error(\"Scalar token is owned by someone else: \" + me);\n }\n return token;\n }).catch(function (err) {\n console.error(err);\n\n // Something went wrong - try to get a new token.\n console.warn(\"Registering for new scalar token\");\n return _this2.registerForToken();\n });\n }\n }\n }, {\n key: 'validateToken',\n value: function validateToken(token) {\n var url = SdkConfig.get().integrations_rest_url + \"/account\";\n\n return new _bluebird2.default(function (resolve, reject) {\n request({\n method: \"GET\",\n uri: url,\n qs: { scalar_token: token },\n json: true\n }, function (err, response, body) {\n if (err) {\n reject(err);\n } else if (response.statusCode / 100 !== 2) {\n reject({ statusCode: response.statusCode });\n } else if (!body || !body.user_id) {\n reject(new Error(\"Missing user_id in response\"));\n } else {\n resolve(body.user_id);\n }\n });\n });\n }\n }, {\n key: 'registerForToken',\n value: function registerForToken() {\n var _this3 = this;\n\n // Get openid bearer token from the HS as the first part of our dance\n return MatrixClientPeg.get().getOpenIdToken().then(function (token_object) {\n // Now we can send that to scalar and exchange it for a scalar token\n return _this3.exchangeForScalarToken(token_object);\n }).then(function (token_object) {\n window.localStorage.setItem(\"mx_scalar_token\", token_object);\n return token_object;\n });\n }\n }, {\n key: 'exchangeForScalarToken',\n value: function exchangeForScalarToken(openid_token_object) {\n var scalar_rest_url = SdkConfig.get().integrations_rest_url;\n\n return new _bluebird2.default(function (resolve, reject) {\n request({\n method: 'POST',\n uri: scalar_rest_url + '/register',\n body: openid_token_object,\n json: true\n }, function (err, response, body) {\n if (err) {\n reject(err);\n } else if (response.statusCode / 100 !== 2) {\n reject({ statusCode: response.statusCode });\n } else if (!body || !body.scalar_token) {\n reject(new Error(\"Missing scalar_token in response\"));\n } else {\n resolve(body.scalar_token);\n }\n });\n });\n }\n }, {\n key: 'getScalarPageTitle',\n value: function getScalarPageTitle(url) {\n var scalarPageLookupUrl = SdkConfig.get().integrations_rest_url + '/widgets/title_lookup';\n scalarPageLookupUrl = this.getStarterLink(scalarPageLookupUrl);\n scalarPageLookupUrl += '&curl=' + encodeURIComponent(url);\n\n return new _bluebird2.default(function (resolve, reject) {\n request({\n method: 'GET',\n uri: scalarPageLookupUrl,\n json: true\n }, function (err, response, body) {\n if (err) {\n reject(err);\n } else if (response.statusCode / 100 !== 2) {\n reject({ statusCode: response.statusCode });\n } else if (!body) {\n reject(new Error(\"Missing page title in response\"));\n } else {\n var title = \"\";\n if (body.page_title_cache_item && body.page_title_cache_item.cached_title) {\n title = body.page_title_cache_item.cached_title;\n }\n resolve(title);\n }\n });\n });\n }\n\n /**\n * Mark all assets associated with the specified widget as \"disabled\" in the\n * integration manager database.\n * This can be useful to temporarily prevent purchased assets from being displayed.\n * @param {string} widgetType [description]\n * @param {string} widgetId [description]\n * @return {Promise} Resolves on completion\n */\n\n }, {\n key: 'disableWidgetAssets',\n value: function disableWidgetAssets(widgetType, widgetId) {\n var url = SdkConfig.get().integrations_rest_url + '/widgets/set_assets_state';\n url = this.getStarterLink(url);\n return new _bluebird2.default(function (resolve, reject) {\n request({\n method: 'GET',\n uri: url,\n json: true,\n qs: {\n 'widget_type': widgetType,\n 'widget_id': widgetId,\n 'state': 'disable'\n }\n }, function (err, response, body) {\n if (err) {\n reject(err);\n } else if (response.statusCode / 100 !== 2) {\n reject({ statusCode: response.statusCode });\n } else if (!body) {\n reject(new Error(\"Failed to set widget assets state\"));\n } else {\n resolve();\n }\n });\n });\n }\n }, {\n key: 'getScalarInterfaceUrlForRoom',\n value: function getScalarInterfaceUrlForRoom(room, screen, id) {\n var roomId = room.roomId;\n var roomName = room.name;\n var url = SdkConfig.get().integrations_ui_url;\n url += \"?scalar_token=\" + encodeURIComponent(this.scalarToken);\n url += \"&room_id=\" + encodeURIComponent(roomId);\n url += \"&room_name=\" + encodeURIComponent(roomName);\n url += \"&theme=\" + encodeURIComponent(_SettingsStore2.default.getValue(\"theme\"));\n if (id) {\n url += '&integ_id=' + encodeURIComponent(id);\n }\n if (screen) {\n url += '&screen=' + encodeURIComponent(screen);\n }\n return url;\n }\n }, {\n key: 'getStarterLink',\n value: function getStarterLink(starterLinkUrl) {\n return starterLinkUrl + \"?scalar_token=\" + encodeURIComponent(this.scalarToken);\n }\n }]);\n return ScalarAuthClient;\n}();\n\nmodule.exports = ScalarAuthClient;\n//# sourceMappingURL=ScalarAuthClient.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DEBUG = 0;\n\n// utility to turn #rrggbb or rgb(r,g,b) into [red,green,blue]\nfunction colorToRgb(color) {\n if (!color) {\n return [0, 0, 0];\n }\n\n if (color[0] === '#') {\n color = color.slice(1);\n if (color.length === 3) {\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\n }\n var val = parseInt(color, 16);\n var r = val >> 16 & 255;\n var g = val >> 8 & 255;\n var b = val & 255;\n return [r, g, b];\n } else {\n var match = color.match(/rgb\\((.*?),(.*?),(.*?)\\)/);\n if (match) {\n return [parseInt(match[1]), parseInt(match[2]), parseInt(match[3])];\n }\n }\n return [0, 0, 0];\n}\n\n// utility to turn [red,green,blue] into #rrggbb\nfunction rgbToColor(rgb) {\n var val = rgb[0] << 16 | rgb[1] << 8 | rgb[2];\n return '#' + (0x1000000 + val).toString(16).slice(1);\n}\n\nvar Tinter = function () {\n function Tinter() {\n (0, _classCallCheck3.default)(this, Tinter);\n\n // The default colour keys to be replaced as referred to in CSS\n // (should be overridden by .mx_theme_accentColor and .mx_theme_secondaryAccentColor)\n this.keyRgb = [\"rgb(118, 207, 166)\", // Vector Green\n \"rgb(234, 245, 240)\", // Vector Light Green\n \"rgb(211, 239, 225)\"];\n\n // Some algebra workings for calculating the tint % of Vector Green & Light Green\n // x * 118 + (1 - x) * 255 = 234\n // x * 118 + 255 - 255 * x = 234\n // x * 118 - x * 255 = 234 - 255\n // (255 - 118) x = 255 - 234\n // x = (255 - 234) / (255 - 118) = 0.16\n\n // The colour keys to be replaced as referred to in SVGs\n this.keyHex = [\"#76CFA6\", // Vector Green\n \"#EAF5F0\", // Vector Light Green\n \"#D3EFE1\", // roomsublist-label-bg-color (20% Green overlaid on Light Green)\n \"#FFFFFF\", // white highlights of the SVGs (for switching to dark theme)\n \"#000000\"];\n\n // track the replacement colours actually being used\n // defaults to our keys.\n this.colors = [this.keyHex[0], this.keyHex[1], this.keyHex[2], this.keyHex[3], this.keyHex[4]];\n\n // track the most current tint request inputs (which may differ from the\n // end result stored in this.colors\n this.currentTint = [undefined, undefined, undefined, undefined, undefined];\n\n this.cssFixups = [\n // { theme: {\n // style: a style object that should be fixed up taken from a stylesheet\n // attr: name of the attribute to be clobbered, e.g. 'color'\n // index: ordinal of primary, secondary or tertiary\n // },\n // }\n ];\n\n // CSS attributes to be fixed up\n this.cssAttrs = [\"color\", \"backgroundColor\", \"borderColor\", \"borderTopColor\", \"borderBottomColor\", \"borderLeftColor\"];\n\n this.svgAttrs = [\"fill\", \"stroke\"];\n\n // List of functions to call when the tint changes.\n this.tintables = [];\n\n // the currently loaded theme (if any)\n this.theme = undefined;\n\n // whether to force a tint (e.g. after changing theme)\n this.forceTint = false;\n }\n\n /**\n * Register a callback to fire when the tint changes.\n * This is used to rewrite the tintable SVGs with the new tint.\n *\n * It's not possible to unregister a tintable callback. So this can only be\n * used to register a static callback. If a set of tintables will change\n * over time then the best bet is to register a single callback for the\n * entire set.\n *\n * @param {Function} tintable Function to call when the tint changes.\n */\n\n\n (0, _createClass3.default)(Tinter, [{\n key: 'registerTintable',\n value: function registerTintable(tintable) {\n this.tintables.push(tintable);\n }\n }, {\n key: 'getKeyRgb',\n value: function getKeyRgb() {\n return this.keyRgb;\n }\n }, {\n key: 'tint',\n value: function tint(primaryColor, secondaryColor, tertiaryColor) {\n this.currentTint[0] = primaryColor;\n this.currentTint[1] = secondaryColor;\n this.currentTint[2] = tertiaryColor;\n\n this.calcCssFixups();\n\n if (DEBUG) {\n console.log(\"Tinter.tint(\" + primaryColor + \", \" + secondaryColor + \", \" + tertiaryColor + \")\");\n }\n\n if (!primaryColor) {\n primaryColor = this.keyRgb[0];\n secondaryColor = this.keyRgb[1];\n tertiaryColor = this.keyRgb[2];\n }\n\n if (!secondaryColor) {\n var x = 0.16; // average weighting factor calculated from vector green & light green\n var rgb = colorToRgb(primaryColor);\n rgb[0] = x * rgb[0] + (1 - x) * 255;\n rgb[1] = x * rgb[1] + (1 - x) * 255;\n rgb[2] = x * rgb[2] + (1 - x) * 255;\n secondaryColor = rgbToColor(rgb);\n }\n\n if (!tertiaryColor) {\n var _x = 0.19;\n var rgb1 = colorToRgb(primaryColor);\n var rgb2 = colorToRgb(secondaryColor);\n rgb1[0] = _x * rgb1[0] + (1 - _x) * rgb2[0];\n rgb1[1] = _x * rgb1[1] + (1 - _x) * rgb2[1];\n rgb1[2] = _x * rgb1[2] + (1 - _x) * rgb2[2];\n tertiaryColor = rgbToColor(rgb1);\n }\n\n if (this.forceTint == false && this.colors[0] === primaryColor && this.colors[1] === secondaryColor && this.colors[2] === tertiaryColor) {\n return;\n }\n\n this.forceTint = false;\n\n this.colors[0] = primaryColor;\n this.colors[1] = secondaryColor;\n this.colors[2] = tertiaryColor;\n\n if (DEBUG) {\n console.log(\"Tinter.tint final: (\" + primaryColor + \", \" + secondaryColor + \", \" + tertiaryColor + \")\");\n }\n\n // go through manually fixing up the stylesheets.\n this.applyCssFixups();\n\n // tell all the SVGs to go fix themselves up\n // we don't do this as a dispatch otherwise it will visually lag\n this.tintables.forEach(function (tintable) {\n tintable();\n });\n }\n }, {\n key: 'tintSvgWhite',\n value: function tintSvgWhite(whiteColor) {\n this.currentTint[3] = whiteColor;\n\n if (!whiteColor) {\n whiteColor = this.colors[3];\n }\n if (this.colors[3] === whiteColor) {\n return;\n }\n this.colors[3] = whiteColor;\n this.tintables.forEach(function (tintable) {\n tintable();\n });\n }\n }, {\n key: 'tintSvgBlack',\n value: function tintSvgBlack(blackColor) {\n this.currentTint[4] = blackColor;\n\n if (!blackColor) {\n blackColor = this.colors[4];\n }\n if (this.colors[4] === blackColor) {\n return;\n }\n this.colors[4] = blackColor;\n this.tintables.forEach(function (tintable) {\n tintable();\n });\n }\n }, {\n key: 'setTheme',\n value: function setTheme(theme) {\n this.theme = theme;\n\n // update keyRgb from the current theme CSS itself, if it defines it\n if (document.getElementById('mx_theme_accentColor')) {\n this.keyRgb[0] = window.getComputedStyle(document.getElementById('mx_theme_accentColor')).color;\n }\n if (document.getElementById('mx_theme_secondaryAccentColor')) {\n this.keyRgb[1] = window.getComputedStyle(document.getElementById('mx_theme_secondaryAccentColor')).color;\n }\n if (document.getElementById('mx_theme_tertiaryAccentColor')) {\n this.keyRgb[2] = window.getComputedStyle(document.getElementById('mx_theme_tertiaryAccentColor')).color;\n }\n\n this.calcCssFixups();\n this.forceTint = true;\n\n this.tint(this.currentTint[0], this.currentTint[1], this.currentTint[2]);\n\n if (theme === 'dark') {\n // abuse the tinter to change all the SVG's #fff to #2d2d2d\n // XXX: obviously this shouldn't be hardcoded here.\n this.tintSvgWhite('#2d2d2d');\n this.tintSvgBlack('#dddddd');\n } else {\n this.tintSvgWhite('#ffffff');\n this.tintSvgBlack('#000000');\n }\n }\n }, {\n key: 'calcCssFixups',\n value: function calcCssFixups() {\n // cache our fixups\n if (this.cssFixups[this.theme]) return;\n\n if (DEBUG) {\n console.debug(\"calcCssFixups start for \" + this.theme + \" (checking \" + document.styleSheets.length + \" stylesheets)\");\n }\n\n this.cssFixups[this.theme] = [];\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n var ss = document.styleSheets[i];\n try {\n if (!ss) continue; // well done safari >:(\n // Chromium apparently sometimes returns null here; unsure why.\n // see $14534907369972FRXBx:matrix.org in HQ\n // ...ah, it's because there's a third party extension like\n // privacybadger inserting its own stylesheet in there with a\n // resource:// URI or something which results in a XSS error.\n // See also #vector:matrix.org/$145357669685386ebCfr:matrix.org\n // ...except some browsers apparently return stylesheets without\n // hrefs, which we have no choice but ignore right now\n\n // XXX seriously? we are hardcoding the name of vector's CSS file in\n // here?\n //\n // Why do we need to limit it to vector's CSS file anyway - if there\n // are other CSS files affecting the doc don't we want to apply the\n // same transformations to them?\n //\n // Iterating through the CSS looking for matches to hack on feels\n // pretty horrible anyway. And what if the application skin doesn't use\n // Vector Green as its primary color?\n // --richvdh\n\n // Yes, tinting assumes that you are using the Riot skin for now.\n // The right solution will be to move the CSS over to react-sdk.\n // And yes, the default assets for the base skin might as well use\n // Vector Green as any other colour.\n // --matthew\n\n // stylesheets we don't have permission to access (eg. ones from extensions) have a null\n // href and will throw exceptions if we try to access their rules.\n if (!ss.href || !ss.href.match(new RegExp('/theme-' + this.theme + '.css$'))) continue;\n if (ss.disabled) continue;\n if (!ss.cssRules) continue;\n\n if (DEBUG) console.debug(\"calcCssFixups checking \" + ss.cssRules.length + \" rules for \" + ss.href);\n\n for (var j = 0; j < ss.cssRules.length; j++) {\n var rule = ss.cssRules[j];\n if (!rule.style) continue;\n if (rule.selectorText && rule.selectorText.match(/#mx_theme/)) continue;\n for (var k = 0; k < this.cssAttrs.length; k++) {\n var attr = this.cssAttrs[k];\n for (var l = 0; l < this.keyRgb.length; l++) {\n if (rule.style[attr] === this.keyRgb[l]) {\n this.cssFixups[this.theme].push({\n style: rule.style,\n attr: attr,\n index: l\n });\n }\n }\n }\n }\n } catch (e) {\n // Catch any random exceptions that happen here: all sorts of things can go\n // wrong with this (nulls, SecurityErrors) and mostly it's for other\n // stylesheets that we don't want to proces anyway. We should not propagate an\n // exception out since this will cause the app to fail to start.\n console.log(\"Failed to calculate CSS fixups for a stylesheet: \" + ss.href, e);\n }\n }\n if (DEBUG) {\n console.log(\"calcCssFixups end (\" + this.cssFixups[this.theme].length + \" fixups)\");\n }\n }\n }, {\n key: 'applyCssFixups',\n value: function applyCssFixups() {\n if (DEBUG) {\n console.log(\"applyCssFixups start (\" + this.cssFixups[this.theme].length + \" fixups)\");\n }\n for (var i = 0; i < this.cssFixups[this.theme].length; i++) {\n var cssFixup = this.cssFixups[this.theme][i];\n try {\n cssFixup.style[cssFixup.attr] = this.colors[cssFixup.index];\n } catch (e) {\n // Firefox Quantum explodes if you manually edit the CSS in the\n // inspector and then try to do a tint, as apparently all the\n // fixups are then stale.\n console.error(\"Failed to apply cssFixup in Tinter! \", e.name);\n }\n }\n if (DEBUG) console.log(\"applyCssFixups end\");\n }\n\n // XXX: we could just move this all into TintableSvg, but as it's so similar\n // to the CSS fixup stuff in Tinter (just that the fixups are stored in TintableSvg)\n // keeping it here for now.\n\n }, {\n key: 'calcSvgFixups',\n value: function calcSvgFixups(svgs, forceColors) {\n // go through manually fixing up SVG colours.\n // we could do this by stylesheets, but keeping the stylesheets\n // updated would be a PITA, so just brute-force search for the\n // key colour; cache the element and apply.\n\n if (DEBUG) console.log(\"calcSvgFixups start for \" + svgs);\n var fixups = [];\n for (var i = 0; i < svgs.length; i++) {\n var svgDoc = void 0;\n try {\n svgDoc = svgs[i].contentDocument;\n } catch (e) {\n var msg = 'Failed to get svg.contentDocument of ' + svgs[i].toString();\n if (e.message) {\n msg += e.message;\n }\n if (e.stack) {\n msg += ' | stack: ' + e.stack;\n }\n console.error(msg);\n }\n if (!svgDoc) continue;\n var tags = svgDoc.getElementsByTagName(\"*\");\n for (var j = 0; j < tags.length; j++) {\n var tag = tags[j];\n for (var k = 0; k < this.svgAttrs.length; k++) {\n var attr = this.svgAttrs[k];\n for (var m = 0; m < this.keyHex.length; m++) {\n // dev note: don't use L please.\n // We use a different attribute from the one we're setting\n // because we may also be using forceColors. If we were to\n // check the keyHex against a forceColors value, it may not\n // match and therefore not change when we need it to.\n var valAttrName = \"mx-val-\" + attr;\n var attribute = tag.getAttribute(valAttrName);\n if (!attribute) attribute = tag.getAttribute(attr); // fall back to the original\n if (attribute && (attribute.toUpperCase() === this.keyHex[m] || attribute.toLowerCase() === this.keyRgb[m])) {\n fixups.push({\n node: tag,\n attr: attr,\n refAttr: valAttrName,\n index: m,\n forceColors: forceColors\n });\n }\n }\n }\n }\n }\n if (DEBUG) console.log(\"calcSvgFixups end\");\n\n return fixups;\n }\n }, {\n key: 'applySvgFixups',\n value: function applySvgFixups(fixups) {\n if (DEBUG) console.log(\"applySvgFixups start for \" + fixups);\n for (var i = 0; i < fixups.length; i++) {\n var svgFixup = fixups[i];\n var forcedColor = svgFixup.forceColors ? svgFixup.forceColors[svgFixup.index] : null;\n svgFixup.node.setAttribute(svgFixup.attr, forcedColor ? forcedColor : this.colors[svgFixup.index]);\n svgFixup.node.setAttribute(svgFixup.refAttr, this.colors[svgFixup.index]);\n }\n if (DEBUG) console.log(\"applySvgFixups end\");\n }\n }]);\n return Tinter;\n}();\n\nif (global.singletonTinter === undefined) {\n global.singletonTinter = new Tinter();\n}\nexports.default = global.singletonTinter;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Tinter.js.map","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AutocompleteProvider = function () {\n function AutocompleteProvider(commandRegex, forcedCommandRegex) {\n (0, _classCallCheck3.default)(this, AutocompleteProvider);\n\n if (commandRegex) {\n if (!commandRegex.global) {\n throw new Error('commandRegex must have global flag set');\n }\n this.commandRegex = commandRegex;\n }\n if (forcedCommandRegex) {\n if (!forcedCommandRegex.global) {\n throw new Error('forcedCommandRegex must have global flag set');\n }\n this.forcedCommandRegex = forcedCommandRegex;\n }\n }\n\n (0, _createClass3.default)(AutocompleteProvider, [{\n key: 'destroy',\n value: function destroy() {}\n // stub\n\n\n /**\n * Of the matched commands in the query, returns the first that contains or is contained by the selection, or null.\n */\n\n }, {\n key: 'getCurrentCommand',\n value: function getCurrentCommand(query, selection) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var commandRegex = this.commandRegex;\n\n if (force && this.shouldForceComplete()) {\n commandRegex = this.forcedCommandRegex || /\\S+/g;\n }\n\n if (commandRegex == null) {\n return null;\n }\n\n commandRegex.lastIndex = 0;\n\n var match = void 0;\n while ((match = commandRegex.exec(query)) != null) {\n var start = match.index;\n var end = start + match[0].length;\n if (selection.start <= end && selection.end >= start) {\n return {\n command: match,\n range: {\n start: start,\n end: end\n }\n };\n }\n }\n return {\n command: null,\n range: {\n start: -1,\n end: -1\n }\n };\n }\n }, {\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.method)(function (query, selection) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n return [];\n });\n\n function getCompletions(_x2, _x3, _x4) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return 'Default Provider';\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n console.error('stub; should be implemented in subclasses');\n return null;\n }\n\n // Whether we should provide completions even if triggered forcefully, without a sigil.\n\n }, {\n key: 'shouldForceComplete',\n value: function shouldForceComplete() {\n return false;\n }\n }]);\n return AutocompleteProvider;\n}(); /*\n Copyright 2016 Aviral Dasgupta\n Copyright 2017 Vector Creations Ltd\n Copyright 2017, 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = AutocompleteProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=AutocompleteProvider.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PillCompletion = exports.TextualCompletion = undefined;\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* These were earlier stateless functional components but had to be converted\nsince we need to use refs/findDOMNode to access the underlying DOM node to focus the correct completion,\nsomething that is not entirely possible with stateless functional components. One could\npresumably wrap them in a <div> before rendering but I think this is the better way to do it.\n */\n\nvar TextualCompletion = exports.TextualCompletion = function (_React$Component) {\n (0, _inherits3.default)(TextualCompletion, _React$Component);\n\n function TextualCompletion() {\n (0, _classCallCheck3.default)(this, TextualCompletion);\n return (0, _possibleConstructorReturn3.default)(this, (TextualCompletion.__proto__ || (0, _getPrototypeOf2.default)(TextualCompletion)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(TextualCompletion, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n title = _props.title,\n subtitle = _props.subtitle,\n description = _props.description,\n className = _props.className,\n restProps = (0, _objectWithoutProperties3.default)(_props, ['title', 'subtitle', 'description', 'className']);\n\n return _react2.default.createElement(\n 'div',\n (0, _extends3.default)({ className: (0, _classnames2.default)('mx_Autocomplete_Completion_block', className) }, restProps),\n _react2.default.createElement(\n 'span',\n { className: 'mx_Autocomplete_Completion_title' },\n title\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_Autocomplete_Completion_subtitle' },\n subtitle\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_Autocomplete_Completion_description' },\n description\n )\n );\n }\n }]);\n return TextualCompletion;\n}(_react2.default.Component); /*\n Copyright 2016 Aviral Dasgupta\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nTextualCompletion.propTypes = {\n title: _propTypes2.default.string,\n subtitle: _propTypes2.default.string,\n description: _propTypes2.default.string,\n className: _propTypes2.default.string\n};\n\nvar PillCompletion = exports.PillCompletion = function (_React$Component2) {\n (0, _inherits3.default)(PillCompletion, _React$Component2);\n\n function PillCompletion() {\n (0, _classCallCheck3.default)(this, PillCompletion);\n return (0, _possibleConstructorReturn3.default)(this, (PillCompletion.__proto__ || (0, _getPrototypeOf2.default)(PillCompletion)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(PillCompletion, [{\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n title = _props2.title,\n subtitle = _props2.subtitle,\n description = _props2.description,\n initialComponent = _props2.initialComponent,\n className = _props2.className,\n restProps = (0, _objectWithoutProperties3.default)(_props2, ['title', 'subtitle', 'description', 'initialComponent', 'className']);\n\n return _react2.default.createElement(\n 'div',\n (0, _extends3.default)({ className: (0, _classnames2.default)('mx_Autocomplete_Completion_pill', className) }, restProps),\n initialComponent,\n _react2.default.createElement(\n 'span',\n { className: 'mx_Autocomplete_Completion_title' },\n title\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_Autocomplete_Completion_subtitle' },\n subtitle\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_Autocomplete_Completion_description' },\n description\n )\n );\n }\n }]);\n return PillCompletion;\n}(_react2.default.Component);\n\nPillCompletion.propTypes = {\n title: _propTypes2.default.string,\n subtitle: _propTypes2.default.string,\n description: _propTypes2.default.string,\n initialComponent: _propTypes2.default.element,\n className: _propTypes2.default.string\n};\n//# sourceMappingURL=Components.js.map","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n","module.exports = {};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar warning = require('fbjs/lib/warning');\nvar canDefineProperty = require('./canDefineProperty');\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\n\nvar specialPropKeyWarningShown, specialPropRefWarningShown;\n\nfunction hasValidRef(config) {\n if (process.env.NODE_ENV !== 'production') {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n if (process.env.NODE_ENV !== 'production') {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, no instanceof check\n * will work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} key\n * @param {string|object} ref\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @param {*} owner\n * @param {*} props\n * @internal\n */\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allow us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n if (process.env.NODE_ENV !== 'production') {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n if (canDefineProperty) {\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n });\n // self and source are DEV only properties.\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n });\n // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n } else {\n element._store.validated = false;\n element._self = self;\n element._source = source;\n }\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n\n/**\n * Create and return a new ReactElement of the given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement\n */\nReactElement.createElement = function (type, config, children) {\n var propName;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n if (process.env.NODE_ENV !== 'production') {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (key || ref) {\n if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n }\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n};\n\n/**\n * Return a function that produces ReactElements of a given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory\n */\nReactElement.createFactory = function (type) {\n var factory = ReactElement.createElement.bind(null, type);\n // Expose the type on the factory and the prototype so that it can be\n // easily accessed on elements. E.g. `<Foo />.type === Foo`.\n // This should not be named `constructor` since this may not be the function\n // that created the element, and it may not even be a constructor.\n // Legacy hook TODO: Warn if this is accessed\n factory.type = type;\n return factory;\n};\n\nReactElement.cloneAndReplaceKey = function (oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n\n return newElement;\n};\n\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement\n */\nReactElement.cloneElement = function (element, config, children) {\n var propName;\n\n // Original props are copied\n var props = _assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n // Self is preserved since the owner is preserved.\n var self = element._self;\n // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n var source = element._source;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n // Remaining properties override existing props\n var defaultProps;\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n};\n\n/**\n * Verifies the object is a ReactElement.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nReactElement.isValidElement = function (object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n};\n\nmodule.exports = ReactElement;","exports.f = Object.getOwnPropertySymbols;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nfunction checkMask(value, bitmask) {\n return (value & bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n /**\n * Mapping from normalized, camelcased property names to a configuration that\n * specifies how the associated DOM property should be accessed or rendered.\n */\n MUST_USE_PROPERTY: 0x1,\n HAS_BOOLEAN_VALUE: 0x4,\n HAS_NUMERIC_VALUE: 0x8,\n HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,\n HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,\n\n /**\n * Inject some specialized knowledge about the DOM. This takes a config object\n * with the following properties:\n *\n * isCustomAttribute: function that given an attribute name will return true\n * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*\n * attributes where it's impossible to enumerate all of the possible\n * attribute names,\n *\n * Properties: object mapping DOM property name to one of the\n * DOMPropertyInjection constants or null. If your attribute isn't in here,\n * it won't get written to the DOM.\n *\n * DOMAttributeNames: object mapping React attribute name to the DOM\n * attribute name. Attribute names not specified use the **lowercase**\n * normalized name.\n *\n * DOMAttributeNamespaces: object mapping React attribute name to the DOM\n * attribute namespace URL. (Attribute names not specified use no namespace.)\n *\n * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n * Property names not specified use the normalized name.\n *\n * DOMMutationMethods: Properties that require special mutation methods. If\n * `value` is undefined, the mutation method should unset the property.\n *\n * @param {object} domPropertyConfig the config as described above.\n */\n injectDOMPropertyConfig: function (domPropertyConfig) {\n var Injection = DOMPropertyInjection;\n var Properties = domPropertyConfig.Properties || {};\n var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};\n var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};\n var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n if (domPropertyConfig.isCustomAttribute) {\n DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);\n }\n\n for (var propName in Properties) {\n !!DOMProperty.properties.hasOwnProperty(propName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'injectDOMPropertyConfig(...): You\\'re trying to inject DOM property \\'%s\\' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.', propName) : _prodInvariant('48', propName) : void 0;\n\n var lowerCased = propName.toLowerCase();\n var propConfig = Properties[propName];\n\n var propertyInfo = {\n attributeName: lowerCased,\n attributeNamespace: null,\n propertyName: propName,\n mutationMethod: null,\n\n mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),\n hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),\n hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),\n hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),\n hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)\n };\n !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s', propName) : _prodInvariant('50', propName) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n DOMProperty.getPossibleStandardName[lowerCased] = propName;\n }\n\n if (DOMAttributeNames.hasOwnProperty(propName)) {\n var attributeName = DOMAttributeNames[propName];\n propertyInfo.attributeName = attributeName;\n if (process.env.NODE_ENV !== 'production') {\n DOMProperty.getPossibleStandardName[attributeName] = propName;\n }\n }\n\n if (DOMAttributeNamespaces.hasOwnProperty(propName)) {\n propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];\n }\n\n if (DOMPropertyNames.hasOwnProperty(propName)) {\n propertyInfo.propertyName = DOMPropertyNames[propName];\n }\n\n if (DOMMutationMethods.hasOwnProperty(propName)) {\n propertyInfo.mutationMethod = DOMMutationMethods[propName];\n }\n\n DOMProperty.properties[propName] = propertyInfo;\n }\n }\n};\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\n/* eslint-enable max-len */\n\n/**\n * DOMProperty exports lookup objects that can be used like functions:\n *\n * > DOMProperty.isValid['id']\n * true\n * > DOMProperty.isValid['foobar']\n * undefined\n *\n * Although this may be confusing, it performs better in general.\n *\n * @see http://jsperf.com/key-exists\n * @see http://jsperf.com/key-missing\n */\nvar DOMProperty = {\n ID_ATTRIBUTE_NAME: 'data-reactid',\n ROOT_ATTRIBUTE_NAME: 'data-reactroot',\n\n ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,\n ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040',\n\n /**\n * Map from property \"standard name\" to an object with info about how to set\n * the property in the DOM. Each object contains:\n *\n * attributeName:\n * Used when rendering markup or with `*Attribute()`.\n * attributeNamespace\n * propertyName:\n * Used on DOM node instances. (This includes properties that mutate due to\n * external factors.)\n * mutationMethod:\n * If non-null, used instead of the property or `setAttribute()` after\n * initial render.\n * mustUseProperty:\n * Whether the property must be accessed and mutated as an object property.\n * hasBooleanValue:\n * Whether the property should be removed when set to a falsey value.\n * hasNumericValue:\n * Whether the property must be numeric or parse as a numeric and should be\n * removed when set to a falsey value.\n * hasPositiveNumericValue:\n * Whether the property must be positive numeric or parse as a positive\n * numeric and should be removed when set to a falsey value.\n * hasOverloadedBooleanValue:\n * Whether the property can be used as a flag as well as with a value.\n * Removed when strictly equal to false; present without a value when\n * strictly equal to true; present with a value otherwise.\n */\n properties: {},\n\n /**\n * Mapping from lowercase property names to the properly cased version, used\n * to warn in the case of missing properties. Available only in __DEV__.\n *\n * autofocus is predefined, because adding it to the property whitelist\n * causes unintended side effects.\n *\n * @type {Object}\n */\n getPossibleStandardName: process.env.NODE_ENV !== 'production' ? { autofocus: 'autoFocus' } : null,\n\n /**\n * All of the isCustomAttribute() functions that have been injected.\n */\n _isCustomAttributeFunctions: [],\n\n /**\n * Checks whether a property name is a custom attribute.\n * @method\n */\n isCustomAttribute: function (attributeName) {\n for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {\n var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];\n if (isCustomAttributeFn(attributeName)) {\n return true;\n }\n }\n return false;\n },\n\n injection: DOMPropertyInjection\n};\n\nmodule.exports = DOMProperty;","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMNamespaces = require('./DOMNamespaces');\nvar setInnerHTML = require('./setInnerHTML');\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\nvar setTextContent = require('./setTextContent');\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\n/**\n * In IE (8-11) and Edge, appending nodes with no children is dramatically\n * faster than appending a full subtree, so we essentially queue up the\n * .appendChild calls here and apply them so each node is added to its parent\n * before any children are added.\n *\n * In other browsers, doing so is slower or neutral compared to the other order\n * (in Firefox, twice as slow) so we only do this inversion in IE.\n *\n * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.\n */\nvar enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\\bEdge\\/\\d/.test(navigator.userAgent);\n\nfunction insertTreeChildren(tree) {\n if (!enableLazy) {\n return;\n }\n var node = tree.node;\n var children = tree.children;\n if (children.length) {\n for (var i = 0; i < children.length; i++) {\n insertTreeBefore(node, children[i], null);\n }\n } else if (tree.html != null) {\n setInnerHTML(node, tree.html);\n } else if (tree.text != null) {\n setTextContent(node, tree.text);\n }\n}\n\nvar insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {\n // DocumentFragments aren't actually part of the DOM after insertion so\n // appending children won't update the DOM. We need to ensure the fragment\n // is properly populated first, breaking out of our lazy approach for just\n // this level. Also, some <object> plugins (like Flash Player) will read\n // <param> nodes immediately upon insertion into the DOM, so <object>\n // must also be populated prior to insertion into the DOM.\n if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE && tree.node.nodeName.toLowerCase() === 'object' && (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) {\n insertTreeChildren(tree);\n parentNode.insertBefore(tree.node, referenceNode);\n } else {\n parentNode.insertBefore(tree.node, referenceNode);\n insertTreeChildren(tree);\n }\n});\n\nfunction replaceChildWithTree(oldNode, newTree) {\n oldNode.parentNode.replaceChild(newTree.node, oldNode);\n insertTreeChildren(newTree);\n}\n\nfunction queueChild(parentTree, childTree) {\n if (enableLazy) {\n parentTree.children.push(childTree);\n } else {\n parentTree.node.appendChild(childTree.node);\n }\n}\n\nfunction queueHTML(tree, html) {\n if (enableLazy) {\n tree.html = html;\n } else {\n setInnerHTML(tree.node, html);\n }\n}\n\nfunction queueText(tree, text) {\n if (enableLazy) {\n tree.text = text;\n } else {\n setTextContent(tree.node, text);\n }\n}\n\nfunction toString() {\n return this.node.nodeName;\n}\n\nfunction DOMLazyTree(node) {\n return {\n node: node,\n children: [],\n html: null,\n text: null,\n toString: toString\n };\n}\n\nDOMLazyTree.insertTreeBefore = insertTreeBefore;\nDOMLazyTree.replaceChildWithTree = replaceChildWithTree;\nDOMLazyTree.queueChild = queueChild;\nDOMLazyTree.queueHTML = queueHTML;\nDOMLazyTree.queueText = queueText;\n\nmodule.exports = DOMLazyTree;","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UserAddressType = exports.addressTypes = undefined;\nexports.getAddressType = getAddressType;\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar emailRegex = /^\\S+@\\S+\\.\\S+$/;\n\nvar mxUserIdRegex = /^@\\S+:\\S+$/;\nvar mxRoomIdRegex = /^!\\S+:\\S+$/;\n\nvar addressTypes = exports.addressTypes = ['mx-user-id', 'mx-room-id', 'email'];\n\n// PropType definition for an object describing\n// an address that can be invited to a room (which\n// could be a third party identifier or a matrix ID)\n// along with some additional information about the\n// address / target.\nvar UserAddressType = exports.UserAddressType = _propTypes2.default.shape({\n addressType: _propTypes2.default.oneOf(addressTypes).isRequired,\n address: _propTypes2.default.string.isRequired,\n displayName: _propTypes2.default.string,\n avatarMxc: _propTypes2.default.string,\n // true if the address is known to be a valid address (eg. is a real\n // user we've seen) or false otherwise (eg. is just an address the\n // user has entered)\n isKnown: _propTypes2.default.bool\n});\n\nfunction getAddressType(inputText) {\n var isEmailAddress = emailRegex.test(inputText);\n var isUserId = mxUserIdRegex.test(inputText);\n var isRoomId = mxRoomIdRegex.test(inputText);\n\n // sanity check the input for user IDs\n if (isEmailAddress) {\n return 'email';\n } else if (isUserId) {\n return 'mx-user-id';\n } else if (isRoomId) {\n return 'mx-room-id';\n } else {\n return null;\n }\n}\n//# sourceMappingURL=UserAddress.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _dragDropContext = require('./view/drag-drop-context/');\n\nObject.defineProperty(exports, 'DragDropContext', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_dragDropContext).default;\n }\n});\n\nvar _droppable = require('./view/droppable/');\n\nObject.defineProperty(exports, 'Droppable', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_droppable).default;\n }\n});\n\nvar _draggable = require('./view/draggable/');\n\nObject.defineProperty(exports, 'Draggable', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_draggable).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (_ref) {\n var top = _ref.top,\n right = _ref.right,\n bottom = _ref.bottom,\n left = _ref.left;\n return {\n top: top,\n right: right,\n bottom: bottom,\n left: left,\n width: right - left,\n height: bottom - top,\n center: {\n x: (right + left) / 2,\n y: (bottom + top) / 2\n }\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _memoizeOne2.default)(function (droppable, draggables) {\n return (0, _keys2.default)(draggables).map(function (id) {\n return draggables[id];\n }).filter(function (draggable) {\n return droppable.descriptor.id === draggable.descriptor.droppableId;\n }).sort(function (a, b) {\n return a.descriptor.index - b.descriptor.index;\n });\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getDisplacementMap = require('./get-displacement-map');\n\nvar _getDisplacementMap2 = _interopRequireDefault(_getDisplacementMap);\n\nvar _isPartiallyVisible = require('./visibility/is-partially-visible');\n\nvar _isPartiallyVisible2 = _interopRequireDefault(_isPartiallyVisible);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var draggable = _ref.draggable,\n destination = _ref.destination,\n previousImpact = _ref.previousImpact,\n viewport = _ref.viewport;\n\n var id = draggable.descriptor.id;\n var map = (0, _getDisplacementMap2.default)(previousImpact.movement.displaced);\n\n var isVisible = (0, _isPartiallyVisible2.default)({\n target: draggable.page.withMargin,\n destination: destination,\n viewport: viewport\n });\n\n var shouldAnimate = function () {\n if (!isVisible) {\n return false;\n }\n\n var previous = map[id];\n\n if (!previous) {\n return true;\n }\n\n return previous.shouldAnimate;\n }();\n\n var displacement = {\n draggableId: id,\n isVisible: isVisible,\n shouldAnimate: shouldAnimate\n };\n\n return displacement;\n};","\"use strict\";\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * 'debounces' a function to only execute every n milliseconds.\n * Useful when react-sdk gets many, many events but only wants\n * to update the interface once for all of them.\n *\n * Note that the function must not take arguments, since the args\n * could be different for each invocarion of the function.\n *\n * The returned function has a 'cancelPendingCall' property which can be called\n * on unmount or similar to cancel any pending update.\n */\nmodule.exports = function (f, minIntervalMs) {\n this.lastCall = 0;\n this.scheduledCall = undefined;\n\n var self = this;\n var wrapper = function wrapper() {\n var _this = this;\n\n var now = Date.now();\n\n if (self.lastCall < now - minIntervalMs) {\n f.apply(this);\n // get the time again now the function has finished, so if it\n // took longer than the delay time to execute, it doesn't\n // immediately become eligible to run again.\n self.lastCall = Date.now();\n } else if (self.scheduledCall === undefined) {\n self.scheduledCall = setTimeout(function () {\n self.scheduledCall = undefined;\n f.apply(_this);\n // get time again as per above\n self.lastCall = Date.now();\n }, self.lastCall + minIntervalMs - now);\n }\n };\n\n // add the cancelPendingCall property\n wrapper.cancelPendingCall = function () {\n if (self.scheduledCall) {\n clearTimeout(self.scheduledCall);\n self.scheduledCall = undefined;\n }\n };\n\n // make sure that cancelPendingCall is copied when react rebinds the\n // wrapper\n var _bind = wrapper.bind;\n wrapper.bind = function () {\n var rebound = _bind.apply(this, arguments);\n rebound.cancelPendingCall = wrapper.cancelPendingCall;\n return rebound;\n };\n\n return wrapper;\n};\n//# sourceMappingURL=ratelimitedfunc.js.map","\"use strict\";\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * For two objects of the form { key: [val1, val2, val3] }, work out the added/removed\n * values. Entirely new keys will result in the entire value array being added.\n * @param {Object} before\n * @param {Object} after\n * @return {Object[]} An array of objects with the form:\n * { key: $KEY, val: $VALUE, place: \"add|del\" }\n */\nmodule.exports.getKeyValueArrayDiffs = function (before, after) {\n var results = [];\n var delta = {};\n (0, _keys2.default)(before).forEach(function (beforeKey) {\n delta[beforeKey] = delta[beforeKey] || 0; // init to 0 initially\n delta[beforeKey]--; // keys present in the past have -ve values\n });\n (0, _keys2.default)(after).forEach(function (afterKey) {\n delta[afterKey] = delta[afterKey] || 0; // init to 0 initially\n delta[afterKey]++; // keys present in the future have +ve values\n });\n\n (0, _keys2.default)(delta).forEach(function (muxedKey) {\n switch (delta[muxedKey]) {\n case 1:\n // A new key in after\n after[muxedKey].forEach(function (afterVal) {\n results.push({ place: \"add\", key: muxedKey, val: afterVal });\n });\n break;\n case -1:\n // A before key was removed\n before[muxedKey].forEach(function (beforeVal) {\n results.push({ place: \"del\", key: muxedKey, val: beforeVal });\n });\n break;\n case 0:\n {\n // A mix of added/removed keys\n // compare old & new vals\n var itemDelta = {};\n before[muxedKey].forEach(function (beforeVal) {\n itemDelta[beforeVal] = itemDelta[beforeVal] || 0;\n itemDelta[beforeVal]--;\n });\n after[muxedKey].forEach(function (afterVal) {\n itemDelta[afterVal] = itemDelta[afterVal] || 0;\n itemDelta[afterVal]++;\n });\n\n (0, _keys2.default)(itemDelta).forEach(function (item) {\n if (itemDelta[item] === 1) {\n results.push({ place: \"add\", key: muxedKey, val: item });\n } else if (itemDelta[item] === -1) {\n results.push({ place: \"del\", key: muxedKey, val: item });\n } else {\n // itemDelta of 0 means it was unchanged between before/after\n }\n });\n break;\n }\n default:\n console.error(\"Calculated key delta of \" + delta[muxedKey] + \" - this should never happen!\");\n break;\n }\n });\n\n return results;\n};\n\n/**\n * Shallow-compare two objects for equality: each key and value must be identical\n * @param {Object} objA First object to compare against the second\n * @param {Object} objB Second object to compare against the first\n * @return {boolean} whether the two objects have same key=values\n */\nmodule.exports.shallowEqual = function (objA, objB) {\n if (objA === objB) {\n return true;\n }\n\n if ((typeof objA === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(objA)) !== 'object' || objA === null || (typeof objB === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(objB)) !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = (0, _keys2.default)(objA);\n var keysB = (0, _keys2.default)(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n for (var i = 0; i < keysA.length; i++) {\n var key = keysA[i];\n if (!objB.hasOwnProperty(key) || objA[key] !== objB[key]) {\n return false;\n }\n }\n\n return true;\n};\n//# sourceMappingURL=ObjectUtils.js.map","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","\"use strict\";\n\nvar encode = require('mdurl/encode');\nvar decode = require('mdurl/decode');\n\nvar C_BACKSLASH = 92;\n\nvar decodeHTML = require('entities').decodeHTML;\n\nvar ENTITY = \"&(?:#x[a-f0-9]{1,8}|#[0-9]{1,8}|[a-z][a-z0-9]{1,31});\";\n\nvar TAGNAME = '[A-Za-z][A-Za-z0-9-]*';\nvar ATTRIBUTENAME = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\nvar UNQUOTEDVALUE = \"[^\\\"'=<>`\\\\x00-\\\\x20]+\";\nvar SINGLEQUOTEDVALUE = \"'[^']*'\";\nvar DOUBLEQUOTEDVALUE = '\"[^\"]*\"';\nvar ATTRIBUTEVALUE = \"(?:\" + UNQUOTEDVALUE + \"|\" + SINGLEQUOTEDVALUE + \"|\" + DOUBLEQUOTEDVALUE + \")\";\nvar ATTRIBUTEVALUESPEC = \"(?:\" + \"\\\\s*=\" + \"\\\\s*\" + ATTRIBUTEVALUE + \")\";\nvar ATTRIBUTE = \"(?:\" + \"\\\\s+\" + ATTRIBUTENAME + ATTRIBUTEVALUESPEC + \"?)\";\nvar OPENTAG = \"<\" + TAGNAME + ATTRIBUTE + \"*\" + \"\\\\s*/?>\";\nvar CLOSETAG = \"</\" + TAGNAME + \"\\\\s*[>]\";\nvar HTMLCOMMENT = \"<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->\";\nvar PROCESSINGINSTRUCTION = \"[<][?].*?[?][>]\";\nvar DECLARATION = \"<![A-Z]+\" + \"\\\\s+[^>]*>\";\nvar CDATA = \"<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\";\nvar HTMLTAG = \"(?:\" + OPENTAG + \"|\" + CLOSETAG + \"|\" + HTMLCOMMENT + \"|\" +\n PROCESSINGINSTRUCTION + \"|\" + DECLARATION + \"|\" + CDATA + \")\";\nvar reHtmlTag = new RegExp('^' + HTMLTAG, 'i');\n\nvar reBackslashOrAmp = /[\\\\&]/;\n\nvar ESCAPABLE = '[!\"#$%&\\'()*+,./:;<=>?@[\\\\\\\\\\\\]^_`{|}~-]';\n\nvar reEntityOrEscapedChar = new RegExp('\\\\\\\\' + ESCAPABLE + '|' + ENTITY, 'gi');\n\nvar XMLSPECIAL = '[&<>\"]';\n\nvar reXmlSpecial = new RegExp(XMLSPECIAL, 'g');\n\nvar reXmlSpecialOrEntity = new RegExp(ENTITY + '|' + XMLSPECIAL, 'gi');\n\nvar unescapeChar = function(s) {\n if (s.charCodeAt(0) === C_BACKSLASH) {\n return s.charAt(1);\n } else {\n return decodeHTML(s);\n }\n};\n\n// Replace entities and backslash escapes with literal characters.\nvar unescapeString = function(s) {\n if (reBackslashOrAmp.test(s)) {\n return s.replace(reEntityOrEscapedChar, unescapeChar);\n } else {\n return s;\n }\n};\n\nvar normalizeURI = function(uri) {\n try {\n return encode(decode(uri));\n }\n catch(err) {\n return uri;\n }\n};\n\nvar replaceUnsafeChar = function(s) {\n switch (s) {\n case '&':\n return '&';\n case '<':\n return '<';\n case '>':\n return '>';\n case '\"':\n return '"';\n default:\n return s;\n }\n};\n\nvar escapeXml = function(s, preserve_entities) {\n if (reXmlSpecial.test(s)) {\n if (preserve_entities) {\n return s.replace(reXmlSpecialOrEntity, replaceUnsafeChar);\n } else {\n return s.replace(reXmlSpecial, replaceUnsafeChar);\n }\n } else {\n return s;\n }\n};\n\nmodule.exports = { unescapeString: unescapeString,\n normalizeURI: normalizeURI,\n escapeXml: escapeXml,\n reHtmlTag: reHtmlTag,\n OPENTAG: OPENTAG,\n CLOSETAG: CLOSETAG,\n ENTITY: ENTITY,\n ESCAPABLE: ESCAPABLE\n };\n","var basePick = require('./_basePick'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","exports.f = {}.propertyIsEnumerable;\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };","module.exports = require('./_hide');\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() { return this })() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n'use strict';\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginUtils = require('./EventPluginUtils');\n\nvar accumulateInto = require('./accumulateInto');\nvar forEachAccumulated = require('./forEachAccumulated');\nvar warning = require('fbjs/lib/warning');\n\nvar getListener = EventPluginHub.getListener;\n\n/**\n * Some event types have a notion of different registration names for different\n * \"phases\" of propagation. This finds listeners by a given phase.\n */\nfunction listenerAtPhase(inst, event, propagationPhase) {\n var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];\n return getListener(inst, registrationName);\n}\n\n/**\n * Tags a `SyntheticEvent` with dispatched listeners. Creating this function\n * here, allows us to not have to bind or create functions for each event.\n * Mutating the event's members allows us to not have to create a wrapping\n * \"dispatch\" object that pairs the event with the listener.\n */\nfunction accumulateDirectionalDispatches(inst, phase, event) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0;\n }\n var listener = listenerAtPhase(inst, event, phase);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n}\n\n/**\n * Collect dispatches (must be entirely collected before dispatching - see unit\n * tests). Lazily allocate the array to conserve memory. We must loop through\n * each event and perform the traversal for each one. We cannot perform a\n * single traversal for the entire collection of events because each event may\n * have a different target.\n */\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.\n */\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n var targetInst = event._targetInst;\n var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null;\n EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Accumulates without regard to direction, does not look for phased\n * registration names. Same as `accumulateDirectDispatchesSingle` but without\n * requiring that the `dispatchMarker` be the same as the dispatched ID.\n */\nfunction accumulateDispatches(inst, ignoredDirection, event) {\n if (event && event.dispatchConfig.registrationName) {\n var registrationName = event.dispatchConfig.registrationName;\n var listener = getListener(inst, registrationName);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n }\n}\n\n/**\n * Accumulates dispatches on an `SyntheticEvent`, but only for the\n * `dispatchMarker`.\n * @param {SyntheticEvent} event\n */\nfunction accumulateDirectDispatchesSingle(event) {\n if (event && event.dispatchConfig.registrationName) {\n accumulateDispatches(event._targetInst, null, event);\n }\n}\n\nfunction accumulateTwoPhaseDispatches(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);\n}\n\nfunction accumulateTwoPhaseDispatchesSkipTarget(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);\n}\n\nfunction accumulateEnterLeaveDispatches(leave, enter, from, to) {\n EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);\n}\n\nfunction accumulateDirectDispatches(events) {\n forEachAccumulated(events, accumulateDirectDispatchesSingle);\n}\n\n/**\n * A small set of propagation patterns, each of which will accept a small amount\n * of information, and generate a set of \"dispatch ready event objects\" - which\n * are sets of events that have already been annotated with a set of dispatched\n * listener functions/ids. The API is designed this way to discourage these\n * propagation strategies from actually executing the dispatches, since we\n * always want to collect the entire set of dispatches before executing event a\n * single one.\n *\n * @constructor EventPropagators\n */\nvar EventPropagators = {\n accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,\n accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,\n accumulateDirectDispatches: accumulateDirectDispatches,\n accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches\n};\n\nmodule.exports = EventPropagators;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar EventPluginUtils = require('./EventPluginUtils');\nvar ReactErrorUtils = require('./ReactErrorUtils');\n\nvar accumulateInto = require('./accumulateInto');\nvar forEachAccumulated = require('./forEachAccumulated');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Internal store for event listeners\n */\nvar listenerBank = {};\n\n/**\n * Internal queue of events that have accumulated their dispatches and are\n * waiting to have their dispatches executed.\n */\nvar eventQueue = null;\n\n/**\n * Dispatches an event and releases it back into the pool, unless persistent.\n *\n * @param {?object} event Synthetic event to be dispatched.\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @private\n */\nvar executeDispatchesAndRelease = function (event, simulated) {\n if (event) {\n EventPluginUtils.executeDispatchesInOrder(event, simulated);\n\n if (!event.isPersistent()) {\n event.constructor.release(event);\n }\n }\n};\nvar executeDispatchesAndReleaseSimulated = function (e) {\n return executeDispatchesAndRelease(e, true);\n};\nvar executeDispatchesAndReleaseTopLevel = function (e) {\n return executeDispatchesAndRelease(e, false);\n};\n\nvar getDictionaryKey = function (inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n};\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nfunction shouldPreventMouseEvent(name, type, props) {\n switch (name) {\n case 'onClick':\n case 'onClickCapture':\n case 'onDoubleClick':\n case 'onDoubleClickCapture':\n case 'onMouseDown':\n case 'onMouseDownCapture':\n case 'onMouseMove':\n case 'onMouseMoveCapture':\n case 'onMouseUp':\n case 'onMouseUpCapture':\n return !!(props.disabled && isInteractive(type));\n default:\n return false;\n }\n}\n\n/**\n * This is a unified interface for event plugins to be installed and configured.\n *\n * Event plugins can implement the following properties:\n *\n * `extractEvents` {function(string, DOMEventTarget, string, object): *}\n * Required. When a top-level event is fired, this method is expected to\n * extract synthetic events that will in turn be queued and dispatched.\n *\n * `eventTypes` {object}\n * Optional, plugins that fire events must publish a mapping of registration\n * names that are used to register listeners. Values of this mapping must\n * be objects that contain `registrationName` or `phasedRegistrationNames`.\n *\n * `executeDispatch` {function(object, function, string)}\n * Optional, allows plugins to override how an event gets dispatched. By\n * default, the listener is simply invoked.\n *\n * Each plugin that is injected into `EventsPluginHub` is immediately operable.\n *\n * @public\n */\nvar EventPluginHub = {\n /**\n * Methods for injecting dependencies.\n */\n injection: {\n /**\n * @param {array} InjectedEventPluginOrder\n * @public\n */\n injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,\n\n /**\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n */\n injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName\n },\n\n /**\n * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {function} listener The callback to store.\n */\n putListener: function (inst, registrationName, listener) {\n !(typeof listener === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener) : _prodInvariant('94', registrationName, typeof listener) : void 0;\n\n var key = getDictionaryKey(inst);\n var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {});\n bankForRegistrationName[key] = listener;\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.didPutListener) {\n PluginModule.didPutListener(inst, registrationName, listener);\n }\n },\n\n /**\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\n getListener: function (inst, registrationName) {\n // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not\n // live here; needs to be moved to a better place soon\n var bankForRegistrationName = listenerBank[registrationName];\n if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) {\n return null;\n }\n var key = getDictionaryKey(inst);\n return bankForRegistrationName && bankForRegistrationName[key];\n },\n\n /**\n * Deletes a listener from the registration bank.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n */\n deleteListener: function (inst, registrationName) {\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n var bankForRegistrationName = listenerBank[registrationName];\n // TODO: This should never be null -- when is it?\n if (bankForRegistrationName) {\n var key = getDictionaryKey(inst);\n delete bankForRegistrationName[key];\n }\n },\n\n /**\n * Deletes all listeners for the DOM element with the supplied ID.\n *\n * @param {object} inst The instance, which is the source of events.\n */\n deleteAllListeners: function (inst) {\n var key = getDictionaryKey(inst);\n for (var registrationName in listenerBank) {\n if (!listenerBank.hasOwnProperty(registrationName)) {\n continue;\n }\n\n if (!listenerBank[registrationName][key]) {\n continue;\n }\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n delete listenerBank[registrationName][key];\n }\n },\n\n /**\n * Allows registered plugins an opportunity to extract events from top-level\n * native browser events.\n *\n * @return {*} An accumulation of synthetic events.\n * @internal\n */\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events;\n var plugins = EventPluginRegistry.plugins;\n for (var i = 0; i < plugins.length; i++) {\n // Not every plugin in the ordering may be loaded at runtime.\n var possiblePlugin = plugins[i];\n if (possiblePlugin) {\n var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n if (extractedEvents) {\n events = accumulateInto(events, extractedEvents);\n }\n }\n }\n return events;\n },\n\n /**\n * Enqueues a synthetic event that should be dispatched when\n * `processEventQueue` is invoked.\n *\n * @param {*} events An accumulation of synthetic events.\n * @internal\n */\n enqueueEvents: function (events) {\n if (events) {\n eventQueue = accumulateInto(eventQueue, events);\n }\n },\n\n /**\n * Dispatches all synthetic events on the event queue.\n *\n * @internal\n */\n processEventQueue: function (simulated) {\n // Set `eventQueue` to null before processing it so that we can tell if more\n // events get enqueued while processing.\n var processingEventQueue = eventQueue;\n eventQueue = null;\n if (simulated) {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);\n } else {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);\n }\n !!eventQueue ? process.env.NODE_ENV !== 'production' ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : _prodInvariant('95') : void 0;\n // This would be a good time to rethrow if any of the event handlers threw.\n ReactErrorUtils.rethrowCaughtError();\n },\n\n /**\n * These are needed for tests only. Do not use!\n */\n __purge: function () {\n listenerBank = {};\n },\n\n __getListenerBank: function () {\n return listenerBank;\n }\n};\n\nmodule.exports = EventPluginHub;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getEventTarget = require('./getEventTarget');\n\n/**\n * @interface UIEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar UIEventInterface = {\n view: function (event) {\n if (event.view) {\n return event.view;\n }\n\n var target = getEventTarget(event);\n if (target.window === target) {\n // target is a window object\n return target;\n }\n\n var doc = target.ownerDocument;\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n if (doc) {\n return doc.defaultView || doc.parentWindow;\n } else {\n return window;\n }\n },\n detail: function (event) {\n return event.detail || 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);\n\nmodule.exports = SyntheticUIEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n */\n\n// TODO: Replace this with ES6: var ReactInstanceMap = new Map();\n\nvar ReactInstanceMap = {\n /**\n * This API should be called `delete` but we'd have to make sure to always\n * transform these to strings for IE support. When this transform is fully\n * supported we can rename it.\n */\n remove: function (key) {\n key._reactInternalInstance = undefined;\n },\n\n get: function (key) {\n return key._reactInternalInstance;\n },\n\n has: function (key) {\n return key._reactInternalInstance !== undefined;\n },\n\n set: function (key, value) {\n key._reactInternalInstance = value;\n }\n};\n\nmodule.exports = ReactInstanceMap;","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _logger = require('../../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _localStorageCryptoStore = require('./localStorage-crypto-store');\n\nvar _localStorageCryptoStore2 = _interopRequireDefault(_localStorageCryptoStore);\n\nvar _memoryCryptoStore = require('./memory-crypto-store');\n\nvar _memoryCryptoStore2 = _interopRequireDefault(_memoryCryptoStore);\n\nvar _indexeddbCryptoStoreBackend = require('./indexeddb-crypto-store-backend');\n\nvar IndexedDBCryptoStoreBackend = _interopRequireWildcard(_indexeddbCryptoStoreBackend);\n\nvar _errors = require('../../errors');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Internal module. indexeddb storage for e2e.\n *\n * @module\n */\n\n/**\n * An implementation of CryptoStore, which is normally backed by an indexeddb,\n * but with fallback to MemoryCryptoStore.\n *\n * @implements {module:crypto/store/base~CryptoStore}\n */\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar IndexedDBCryptoStore = function () {\n /**\n * Create a new IndexedDBCryptoStore\n *\n * @param {IDBFactory} indexedDB global indexedDB instance\n * @param {string} dbName name of db to connect to\n */\n function IndexedDBCryptoStore(indexedDB, dbName) {\n (0, _classCallCheck3.default)(this, IndexedDBCryptoStore);\n\n this._indexedDB = indexedDB;\n this._dbName = dbName;\n this._backendPromise = null;\n }\n\n /**\n * Ensure the database exists and is up-to-date, or fall back to\n * a local storage or in-memory store.\n *\n * @return {Promise} resolves to either an IndexedDBCryptoStoreBackend.Backend,\n * or a MemoryCryptoStore\n */\n\n\n (0, _createClass3.default)(IndexedDBCryptoStore, [{\n key: '_connect',\n value: function _connect() {\n var _this = this;\n\n if (this._backendPromise) {\n return this._backendPromise;\n }\n\n this._backendPromise = new _bluebird2.default(function (resolve, reject) {\n if (!_this._indexedDB) {\n reject(new Error('no indexeddb support available'));\n return;\n }\n\n _logger2.default.log('connecting to indexeddb ' + _this._dbName);\n\n var req = _this._indexedDB.open(_this._dbName, IndexedDBCryptoStoreBackend.VERSION);\n\n req.onupgradeneeded = function (ev) {\n var db = ev.target.result;\n var oldVersion = ev.oldVersion;\n IndexedDBCryptoStoreBackend.upgradeDatabase(db, oldVersion);\n };\n\n req.onblocked = function () {\n _logger2.default.log('can\\'t yet open IndexedDBCryptoStore because it is open elsewhere');\n };\n\n req.onerror = function (ev) {\n reject(ev.target.error);\n };\n\n req.onsuccess = function (r) {\n var db = r.target.result;\n\n _logger2.default.log('connected to indexeddb ' + _this._dbName);\n resolve(new IndexedDBCryptoStoreBackend.Backend(db));\n };\n }).then(function (backend) {\n // Edge has IndexedDB but doesn't support compund keys which we use fairly extensively.\n // Try a dummy query which will fail if the browser doesn't support compund keys, so\n // we can fall back to a different backend.\n return backend.doTxn('readonly', [IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n backend.getEndToEndInboundGroupSession('', '', txn, function () {});\n }).then(function () {\n return backend;\n });\n }).catch(function (e) {\n if (e.name === 'VersionError') {\n _logger2.default.warn(\"Crypto DB is too new for us to use!\", e);\n // don't fall back to a different store: the user has crypto data\n // in this db so we should use it or nothing at all.\n throw new _errors.InvalidCryptoStoreError(_errors.InvalidCryptoStoreError.TOO_NEW);\n }\n _logger2.default.warn('unable to connect to indexeddb ' + _this._dbName + (': falling back to localStorage store: ' + e));\n\n try {\n return new _localStorageCryptoStore2.default(global.localStorage);\n } catch (e) {\n _logger2.default.warn('unable to open localStorage: falling back to in-memory store: ' + e);\n return new _memoryCryptoStore2.default();\n }\n });\n\n return this._backendPromise;\n }\n\n /**\n * Delete all data from this store.\n *\n * @returns {Promise} resolves when the store has been cleared.\n */\n\n }, {\n key: 'deleteAllData',\n value: function deleteAllData() {\n var _this2 = this;\n\n return new _bluebird2.default(function (resolve, reject) {\n if (!_this2._indexedDB) {\n reject(new Error('no indexeddb support available'));\n return;\n }\n\n _logger2.default.log('Removing indexeddb instance: ' + _this2._dbName);\n var req = _this2._indexedDB.deleteDatabase(_this2._dbName);\n\n req.onblocked = function () {\n _logger2.default.log('can\\'t yet delete IndexedDBCryptoStore because it is open elsewhere');\n };\n\n req.onerror = function (ev) {\n reject(ev.target.error);\n };\n\n req.onsuccess = function () {\n _logger2.default.log('Removed indexeddb instance: ' + _this2._dbName);\n resolve();\n };\n }).catch(function (e) {\n // in firefox, with indexedDB disabled, this fails with a\n // DOMError. We treat this as non-fatal, so that people can\n // still use the app.\n _logger2.default.warn('unable to delete IndexedDBCryptoStore: ' + e);\n });\n }\n\n /**\n * Look for an existing outgoing room key request, and if none is found,\n * add a new one\n *\n * @param {module:crypto/store/base~OutgoingRoomKeyRequest} request\n *\n * @returns {Promise} resolves to\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}: either the\n * same instance as passed in, or the existing one.\n */\n\n }, {\n key: 'getOrAddOutgoingRoomKeyRequest',\n value: function getOrAddOutgoingRoomKeyRequest(request) {\n return this._connect().then(function (backend) {\n return backend.getOrAddOutgoingRoomKeyRequest(request);\n });\n }\n\n /**\n * Look for an existing room key request\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * existing request to look for\n *\n * @return {Promise} resolves to the matching\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * not found\n */\n\n }, {\n key: 'getOutgoingRoomKeyRequest',\n value: function getOutgoingRoomKeyRequest(requestBody) {\n return this._connect().then(function (backend) {\n return backend.getOutgoingRoomKeyRequest(requestBody);\n });\n }\n\n /**\n * Look for room key requests by state\n *\n * @param {Array<Number>} wantedStates list of acceptable states\n *\n * @return {Promise} resolves to the a\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * there are no pending requests in those states. If there are multiple\n * requests in those states, an arbitrary one is chosen.\n */\n\n }, {\n key: 'getOutgoingRoomKeyRequestByState',\n value: function getOutgoingRoomKeyRequestByState(wantedStates) {\n return this._connect().then(function (backend) {\n return backend.getOutgoingRoomKeyRequestByState(wantedStates);\n });\n }\n\n /**\n * Look for room key requests by target device and state\n *\n * @param {string} userId Target user ID\n * @param {string} deviceId Target device ID\n * @param {Array<Number>} wantedStates list of acceptable states\n *\n * @return {Promise} resolves to a list of all the\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}\n */\n\n }, {\n key: 'getOutgoingRoomKeyRequestsByTarget',\n value: function getOutgoingRoomKeyRequestsByTarget(userId, deviceId, wantedStates) {\n return this._connect().then(function (backend) {\n return backend.getOutgoingRoomKeyRequestsByTarget(userId, deviceId, wantedStates);\n });\n }\n\n /**\n * Look for an existing room key request by id and state, and update it if\n * found\n *\n * @param {string} requestId ID of request to update\n * @param {number} expectedState state we expect to find the request in\n * @param {Object} updates name/value map of updates to apply\n *\n * @returns {Promise} resolves to\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}\n * updated request, or null if no matching row was found\n */\n\n }, {\n key: 'updateOutgoingRoomKeyRequest',\n value: function updateOutgoingRoomKeyRequest(requestId, expectedState, updates) {\n return this._connect().then(function (backend) {\n return backend.updateOutgoingRoomKeyRequest(requestId, expectedState, updates);\n });\n }\n\n /**\n * Look for an existing room key request by id and state, and delete it if\n * found\n *\n * @param {string} requestId ID of request to update\n * @param {number} expectedState state we expect to find the request in\n *\n * @returns {Promise} resolves once the operation is completed\n */\n\n }, {\n key: 'deleteOutgoingRoomKeyRequest',\n value: function deleteOutgoingRoomKeyRequest(requestId, expectedState) {\n return this._connect().then(function (backend) {\n return backend.deleteOutgoingRoomKeyRequest(requestId, expectedState);\n });\n }\n\n // Olm Account\n\n /*\n * Get the account pickle from the store.\n * This requires an active transaction. See doTxn().\n *\n * @param {*} txn An active transaction. See doTxn().\n * @param {function(string)} func Called with the account pickle\n */\n\n }, {\n key: 'getAccount',\n value: function getAccount(txn, func) {\n this._backendPromise.value().getAccount(txn, func);\n }\n\n /*\n * Write the account pickle to the store.\n * This requires an active transaction. See doTxn().\n *\n * @param {*} txn An active transaction. See doTxn().\n * @param {string} newData The new account pickle to store.\n */\n\n }, {\n key: 'storeAccount',\n value: function storeAccount(txn, newData) {\n this._backendPromise.value().storeAccount(txn, newData);\n }\n\n // Olm sessions\n\n /**\n * Returns the number of end-to-end sessions in the store\n * @param {*} txn An active transaction. See doTxn().\n * @param {function(int)} func Called with the count of sessions\n */\n\n }, {\n key: 'countEndToEndSessions',\n value: function countEndToEndSessions(txn, func) {\n this._backendPromise.value().countEndToEndSessions(txn, func);\n }\n\n /**\n * Retrieve a specific end-to-end session between the logged-in user\n * and another device.\n * @param {string} deviceKey The public key of the other device.\n * @param {string} sessionId The ID of the session to retrieve\n * @param {*} txn An active transaction. See doTxn().\n * @param {function(object)} func Called with A map from sessionId\n * to session information object with 'session' key being the\n * Base64 end-to-end session and lastReceivedMessageTs being the\n * timestamp in milliseconds at which the session last received\n * a message.\n */\n\n }, {\n key: 'getEndToEndSession',\n value: function getEndToEndSession(deviceKey, sessionId, txn, func) {\n this._backendPromise.value().getEndToEndSession(deviceKey, sessionId, txn, func);\n }\n\n /**\n * Retrieve the end-to-end sessions between the logged-in user and another\n * device.\n * @param {string} deviceKey The public key of the other device.\n * @param {*} txn An active transaction. See doTxn().\n * @param {function(object)} func Called with A map from sessionId\n * to session information object with 'session' key being the\n * Base64 end-to-end session and lastReceivedMessageTs being the\n * timestamp in milliseconds at which the session last received\n * a message.\n */\n\n }, {\n key: 'getEndToEndSessions',\n value: function getEndToEndSessions(deviceKey, txn, func) {\n this._backendPromise.value().getEndToEndSessions(deviceKey, txn, func);\n }\n\n /**\n * Retrieve all end-to-end sessions\n * @param {*} txn An active transaction. See doTxn().\n * @param {function(object)} func Called one for each session with\n * an object with, deviceKey, lastReceivedMessageTs, sessionId\n * and session keys.\n */\n\n }, {\n key: 'getAllEndToEndSessions',\n value: function getAllEndToEndSessions(txn, func) {\n this._backendPromise.value().getAllEndToEndSessions(txn, func);\n }\n\n /**\n * Store a session between the logged-in user and another device\n * @param {string} deviceKey The public key of the other device.\n * @param {string} sessionId The ID for this end-to-end session.\n * @param {string} sessionInfo Session information object\n * @param {*} txn An active transaction. See doTxn().\n */\n\n }, {\n key: 'storeEndToEndSession',\n value: function storeEndToEndSession(deviceKey, sessionId, sessionInfo, txn) {\n this._backendPromise.value().storeEndToEndSession(deviceKey, sessionId, sessionInfo, txn);\n }\n\n // Inbound group saessions\n\n /**\n * Retrieve the end-to-end inbound group session for a given\n * server key and session ID\n * @param {string} senderCurve25519Key The sender's curve 25519 key\n * @param {string} sessionId The ID of the session\n * @param {*} txn An active transaction. See doTxn().\n * @param {function(object)} func Called with A map from sessionId\n * to Base64 end-to-end session.\n */\n\n }, {\n key: 'getEndToEndInboundGroupSession',\n value: function getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func) {\n this._backendPromise.value().getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func);\n }\n\n /**\n * Fetches all inbound group sessions in the store\n * @param {*} txn An active transaction. See doTxn().\n * @param {function(object)} func Called once for each group session\n * in the store with an object having keys {senderKey, sessionId,\n * sessionData}, then once with null to indicate the end of the list.\n */\n\n }, {\n key: 'getAllEndToEndInboundGroupSessions',\n value: function getAllEndToEndInboundGroupSessions(txn, func) {\n this._backendPromise.value().getAllEndToEndInboundGroupSessions(txn, func);\n }\n\n /**\n * Adds an end-to-end inbound group session to the store.\n * If there already exists an inbound group session with the same\n * senderCurve25519Key and sessionID, the session will not be added.\n * @param {string} senderCurve25519Key The sender's curve 25519 key\n * @param {string} sessionId The ID of the session\n * @param {object} sessionData The session data structure\n * @param {*} txn An active transaction. See doTxn().\n */\n\n }, {\n key: 'addEndToEndInboundGroupSession',\n value: function addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n this._backendPromise.value().addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn);\n }\n\n /**\n * Writes an end-to-end inbound group session to the store.\n * If there already exists an inbound group session with the same\n * senderCurve25519Key and sessionID, it will be overwritten.\n * @param {string} senderCurve25519Key The sender's curve 25519 key\n * @param {string} sessionId The ID of the session\n * @param {object} sessionData The session data structure\n * @param {*} txn An active transaction. See doTxn().\n */\n\n }, {\n key: 'storeEndToEndInboundGroupSession',\n value: function storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n this._backendPromise.value().storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn);\n }\n\n // End-to-end device tracking\n\n /**\n * Store the state of all tracked devices\n * This contains devices for each user, a tracking state for each user\n * and a sync token matching the point in time the snapshot represents.\n * These all need to be written out in full each time such that the snapshot\n * is always consistent, so they are stored in one object.\n *\n * @param {Object} deviceData\n * @param {*} txn An active transaction. See doTxn().\n */\n\n }, {\n key: 'storeEndToEndDeviceData',\n value: function storeEndToEndDeviceData(deviceData, txn) {\n this._backendPromise.value().storeEndToEndDeviceData(deviceData, txn);\n }\n\n /**\n * Get the state of all tracked devices\n *\n * @param {*} txn An active transaction. See doTxn().\n * @param {function(Object)} func Function called with the\n * device data\n */\n\n }, {\n key: 'getEndToEndDeviceData',\n value: function getEndToEndDeviceData(txn, func) {\n this._backendPromise.value().getEndToEndDeviceData(txn, func);\n }\n\n // End to End Rooms\n\n /**\n * Store the end-to-end state for a room.\n * @param {string} roomId The room's ID.\n * @param {object} roomInfo The end-to-end info for the room.\n * @param {*} txn An active transaction. See doTxn().\n */\n\n }, {\n key: 'storeEndToEndRoom',\n value: function storeEndToEndRoom(roomId, roomInfo, txn) {\n this._backendPromise.value().storeEndToEndRoom(roomId, roomInfo, txn);\n }\n\n /**\n * Get an object of roomId->roomInfo for all e2e rooms in the store\n * @param {*} txn An active transaction. See doTxn().\n * @param {function(Object)} func Function called with the end to end encrypted rooms\n */\n\n }, {\n key: 'getEndToEndRooms',\n value: function getEndToEndRooms(txn, func) {\n this._backendPromise.value().getEndToEndRooms(txn, func);\n }\n\n // session backups\n\n /**\n * Get the inbound group sessions that need to be backed up.\n * @param {integer} limit The maximum number of sessions to retrieve. 0\n * for no limit.\n * @returns {Promise} resolves to an array of inbound group sessions\n */\n\n }, {\n key: 'getSessionsNeedingBackup',\n value: function getSessionsNeedingBackup(limit) {\n return this._connect().then(function (backend) {\n return backend.getSessionsNeedingBackup(limit);\n });\n }\n\n /**\n * Unmark sessions as needing to be backed up.\n * @param {Array<object>} sessions The sessions that need to be backed up.\n * @returns {Promise} resolves when the sessions are unmarked\n */\n\n }, {\n key: 'unmarkSessionsNeedingBackup',\n value: function unmarkSessionsNeedingBackup(sessions) {\n return this._connect().then(function (backend) {\n return backend.unmarkSessionsNeedingBackup(sessions);\n });\n }\n\n /**\n * Mark sessions as needing to be backed up.\n * @param {Array<object>} sessions The sessions that need to be backed up.\n * @param {*} txn An active transaction. See doTxn(). (optional)\n * @returns {Promise} resolves when the sessions are marked\n */\n\n }, {\n key: 'markSessionsNeedingBackup',\n value: function markSessionsNeedingBackup(sessions, txn) {\n return this._connect().then(function (backend) {\n return backend.markSessionsNeedingBackup(sessions, txn);\n });\n }\n\n /**\n * Perform a transaction on the crypto store. Any store methods\n * that require a transaction (txn) object to be passed in may\n * only be called within a callback of either this function or\n * one of the store functions operating on the same transaction.\n *\n * @param {string} mode 'readwrite' if you need to call setter\n * functions with this transaction. Otherwise, 'readonly'.\n * @param {string[]} stores List IndexedDBCryptoStore.STORE_*\n * options representing all types of object that will be\n * accessed or written to with this transaction.\n * @param {function(*)} func Function called with the\n * transaction object: an opaque object that should be passed\n * to store functions.\n * @return {Promise} Promise that resolves with the result of the `func`\n * when the transaction is complete. If the backend is\n * async (ie. the indexeddb backend) any of the callback\n * functions throwing an exception will cause this promise to\n * reject with that exception. On synchronous backends, the\n * exception will propagate to the caller of the getFoo method.\n */\n\n }, {\n key: 'doTxn',\n value: function doTxn(mode, stores, func) {\n return this._connect().then(function (backend) {\n return backend.doTxn(mode, stores, func);\n });\n }\n }]);\n return IndexedDBCryptoStore;\n}();\n\nexports.default = IndexedDBCryptoStore;\n\n\nIndexedDBCryptoStore.STORE_ACCOUNT = 'account';\nIndexedDBCryptoStore.STORE_SESSIONS = 'sessions';\nIndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS = 'inbound_group_sessions';\nIndexedDBCryptoStore.STORE_DEVICE_DATA = 'device_data';\nIndexedDBCryptoStore.STORE_ROOMS = 'rooms';\nIndexedDBCryptoStore.STORE_BACKUP = 'sessions_needing_backup';\n//# sourceMappingURL=indexeddb-crypto-store.js.map","'use strict';\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _verifyKeyAndStartSession = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(olmDevice, oneTimeKey, userId, deviceInfo) {\n var deviceId, sid;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n deviceId = deviceInfo.deviceId;\n _context3.prev = 1;\n _context3.next = 4;\n return (0, _bluebird.resolve)(_verifySignature(olmDevice, oneTimeKey, userId, deviceId, deviceInfo.getFingerprint()));\n\n case 4:\n _context3.next = 10;\n break;\n\n case 6:\n _context3.prev = 6;\n _context3.t0 = _context3['catch'](1);\n\n logger.error(\"Unable to verify signature on one-time key for device \" + userId + \":\" + deviceId + \":\", _context3.t0);\n return _context3.abrupt('return', null);\n\n case 10:\n sid = void 0;\n _context3.prev = 11;\n _context3.next = 14;\n return (0, _bluebird.resolve)(olmDevice.createOutboundSession(deviceInfo.getIdentityKey(), oneTimeKey.key));\n\n case 14:\n sid = _context3.sent;\n _context3.next = 21;\n break;\n\n case 17:\n _context3.prev = 17;\n _context3.t1 = _context3['catch'](11);\n\n // possibly a bad key\n logger.error(\"Error starting session with device \" + userId + \":\" + deviceId + \": \" + _context3.t1);\n return _context3.abrupt('return', null);\n\n case 21:\n\n logger.log(\"Started new sessionid \" + sid + \" for device \" + userId + \":\" + deviceId);\n return _context3.abrupt('return', sid);\n\n case 23:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this, [[1, 6], [11, 17]]);\n }));\n\n return function _verifyKeyAndStartSession(_x12, _x13, _x14, _x15) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * Verify the signature on an object\n *\n * @param {module:crypto/OlmDevice} olmDevice olm wrapper to use for verify op\n *\n * @param {Object} obj object to check signature on. Note that this will be\n * stripped of its 'signatures' and 'unsigned' properties.\n *\n * @param {string} signingUserId ID of the user whose signature should be checked\n *\n * @param {string} signingDeviceId ID of the device whose signature should be checked\n *\n * @param {string} signingKey base64-ed ed25519 public key\n *\n * Returns a promise which resolves (to undefined) if the the signature is good,\n * or rejects with an Error if it is bad.\n */\n\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar anotherjson = require('another-json'); /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/**\n * @module olmlib\n *\n * Utilities common to olm encryption algorithms\n */\n\nvar logger = require(\"../logger\");\nvar utils = require(\"../utils\");\n\n/**\n * matrix algorithm tag for olm\n */\nmodule.exports.OLM_ALGORITHM = \"m.olm.v1.curve25519-aes-sha2\";\n\n/**\n * matrix algorithm tag for megolm\n */\nmodule.exports.MEGOLM_ALGORITHM = \"m.megolm.v1.aes-sha2\";\n\n/**\n * matrix algorithm tag for megolm backups\n */\nmodule.exports.MEGOLM_BACKUP_ALGORITHM = \"m.megolm_backup.v1.curve25519-aes-sha2\";\n\n/**\n * Encrypt an event payload for an Olm device\n *\n * @param {Object<string, string>} resultsObject The `ciphertext` property\n * of the m.room.encrypted event to which to add our result\n *\n * @param {string} ourUserId\n * @param {string} ourDeviceId\n * @param {module:crypto/OlmDevice} olmDevice olm.js wrapper\n * @param {string} recipientUserId\n * @param {module:crypto/deviceinfo} recipientDevice\n * @param {object} payloadFields fields to include in the encrypted payload\n *\n * Returns a promise which resolves (to undefined) when the payload\n * has been encrypted into `resultsObject`\n */\nmodule.exports.encryptMessageForDevice = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(resultsObject, ourUserId, ourDeviceId, olmDevice, recipientUserId, recipientDevice, payloadFields) {\n var deviceKey, sessionId, payload;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n deviceKey = recipientDevice.getIdentityKey();\n _context.next = 3;\n return (0, _bluebird.resolve)(olmDevice.getSessionIdForDevice(deviceKey));\n\n case 3:\n sessionId = _context.sent;\n\n if (!(sessionId === null)) {\n _context.next = 6;\n break;\n }\n\n return _context.abrupt('return');\n\n case 6:\n\n logger.log(\"Using sessionid \" + sessionId + \" for device \" + recipientUserId + \":\" + recipientDevice.deviceId);\n\n payload = {\n sender: ourUserId,\n sender_device: ourDeviceId,\n\n // Include the Ed25519 key so that the recipient knows what\n // device this message came from.\n // We don't need to include the curve25519 key since the\n // recipient will already know this from the olm headers.\n // When combined with the device keys retrieved from the\n // homeserver signed by the ed25519 key this proves that\n // the curve25519 key and the ed25519 key are owned by\n // the same device.\n keys: {\n \"ed25519\": olmDevice.deviceEd25519Key\n },\n\n // include the recipient device details in the payload,\n // to avoid unknown key attacks, per\n // https://github.com/vector-im/vector-web/issues/2483\n recipient: recipientUserId,\n recipient_keys: {\n \"ed25519\": recipientDevice.getFingerprint()\n }\n };\n\n // TODO: technically, a bunch of that stuff only needs to be included for\n // pre-key messages: after that, both sides know exactly which devices are\n // involved in the session. If we're looking to reduce data transfer in the\n // future, we could elide them for subsequent messages.\n\n utils.extend(payload, payloadFields);\n\n _context.next = 11;\n return (0, _bluebird.resolve)(olmDevice.encryptMessage(deviceKey, sessionId, (0, _stringify2.default)(payload)));\n\n case 11:\n resultsObject[deviceKey] = _context.sent;\n\n case 12:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function (_x, _x2, _x3, _x4, _x5, _x6, _x7) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Try to make sure we have established olm sessions for the given devices.\n *\n * @param {module:crypto/OlmDevice} olmDevice\n *\n * @param {module:base-apis~MatrixBaseApis} baseApis\n *\n * @param {object<string, module:crypto/deviceinfo[]>} devicesByUser\n * map from userid to list of devices to ensure sessions for\n *\n * @param {bolean} force If true, establish a new session even if one already exists.\n * Optional.\n *\n * @return {module:client.Promise} resolves once the sessions are complete, to\n * an Object mapping from userId to deviceId to\n * {@link module:crypto~OlmSessionResult}\n */\nmodule.exports.ensureOlmSessionsForDevices = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(olmDevice, baseApis, devicesByUser, force) {\n var devicesWithoutSession, result, userId, devices, j, deviceInfo, deviceId, key, sessionId, oneTimeKeyAlgorithm, res, otk_res, promises, _loop, _userId, _ret;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n devicesWithoutSession = [\n // [userId, deviceId], ...\n ];\n result = {};\n _context2.t0 = _regenerator2.default.keys(devicesByUser);\n\n case 3:\n if ((_context2.t1 = _context2.t0()).done) {\n _context2.next = 24;\n break;\n }\n\n userId = _context2.t1.value;\n\n if (devicesByUser.hasOwnProperty(userId)) {\n _context2.next = 7;\n break;\n }\n\n return _context2.abrupt('continue', 3);\n\n case 7:\n result[userId] = {};\n devices = devicesByUser[userId];\n j = 0;\n\n case 10:\n if (!(j < devices.length)) {\n _context2.next = 22;\n break;\n }\n\n deviceInfo = devices[j];\n deviceId = deviceInfo.deviceId;\n key = deviceInfo.getIdentityKey();\n _context2.next = 16;\n return (0, _bluebird.resolve)(olmDevice.getSessionIdForDevice(key));\n\n case 16:\n sessionId = _context2.sent;\n\n if (sessionId === null || force) {\n devicesWithoutSession.push([userId, deviceId]);\n }\n result[userId][deviceId] = {\n device: deviceInfo,\n sessionId: sessionId\n };\n\n case 19:\n j++;\n _context2.next = 10;\n break;\n\n case 22:\n _context2.next = 3;\n break;\n\n case 24:\n if (!(devicesWithoutSession.length === 0)) {\n _context2.next = 26;\n break;\n }\n\n return _context2.abrupt('return', result);\n\n case 26:\n\n // TODO: this has a race condition - if we try to send another message\n // while we are claiming a key, we will end up claiming two and setting up\n // two sessions.\n //\n // That should eventually resolve itself, but it's poor form.\n\n oneTimeKeyAlgorithm = \"signed_curve25519\";\n _context2.next = 29;\n return (0, _bluebird.resolve)(baseApis.claimOneTimeKeys(devicesWithoutSession, oneTimeKeyAlgorithm));\n\n case 29:\n res = _context2.sent;\n otk_res = res.one_time_keys || {};\n promises = [];\n\n _loop = function _loop(_userId) {\n if (!devicesByUser.hasOwnProperty(_userId)) {\n return 'continue';\n }\n var userRes = otk_res[_userId] || {};\n var devices = devicesByUser[_userId];\n\n var _loop2 = function _loop2(_j) {\n var deviceInfo = devices[_j];\n var deviceId = deviceInfo.deviceId;\n if (result[_userId][deviceId].sessionId && !force) {\n // we already have a result for this device\n return 'continue';\n }\n\n var deviceRes = userRes[deviceId] || {};\n var oneTimeKey = null;\n for (var keyId in deviceRes) {\n if (keyId.indexOf(oneTimeKeyAlgorithm + \":\") === 0) {\n oneTimeKey = deviceRes[keyId];\n }\n }\n\n if (!oneTimeKey) {\n logger.warn(\"No one-time keys (alg=\" + oneTimeKeyAlgorithm + \") for device \" + _userId + \":\" + deviceId);\n return 'continue';\n }\n\n promises.push(_verifyKeyAndStartSession(olmDevice, oneTimeKey, _userId, deviceInfo).then(function (sid) {\n result[_userId][deviceId].sessionId = sid;\n }));\n };\n\n for (var _j = 0; _j < devices.length; _j++) {\n var _ret2 = _loop2(_j);\n\n if (_ret2 === 'continue') continue;\n }\n };\n\n _context2.t2 = _regenerator2.default.keys(devicesByUser);\n\n case 34:\n if ((_context2.t3 = _context2.t2()).done) {\n _context2.next = 41;\n break;\n }\n\n _userId = _context2.t3.value;\n _ret = _loop(_userId);\n\n if (!(_ret === 'continue')) {\n _context2.next = 39;\n break;\n }\n\n return _context2.abrupt('continue', 34);\n\n case 39:\n _context2.next = 34;\n break;\n\n case 41:\n _context2.next = 43;\n return (0, _bluebird.resolve)(_bluebird2.default.all(promises));\n\n case 43:\n return _context2.abrupt('return', result);\n\n case 44:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function (_x8, _x9, _x10, _x11) {\n return _ref2.apply(this, arguments);\n };\n}();\n\nvar _verifySignature = module.exports.verifySignature = function () {\n var _ref4 = (0, _bluebird.method)(function (olmDevice, obj, signingUserId, signingDeviceId, signingKey) {\n var signKeyId = \"ed25519:\" + signingDeviceId;\n var signatures = obj.signatures || {};\n var userSigs = signatures[signingUserId] || {};\n var signature = userSigs[signKeyId];\n if (!signature) {\n throw Error(\"No signature\");\n }\n\n // prepare the canonical json: remove unsigned and signatures, and stringify with\n // anotherjson\n delete obj.unsigned;\n delete obj.signatures;\n var json = anotherjson.stringify(obj);\n\n olmDevice.verifySignature(signingKey, json, signature);\n });\n\n return function (_x16, _x17, _x18, _x19, _x20) {\n return _ref4.apply(this, arguments);\n };\n}();\n//# sourceMappingURL=olmlib.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * This is an internal module. See {@link createNewMatrixCall} for the public API.\n * @module webrtc/call\n */\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _create = require(\"babel-runtime/core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utils = require(\"../utils\");\nvar EventEmitter = require(\"events\").EventEmitter;\nvar DEBUG = true; // set true to enable console logging.\n\n// events: hangup, error(err), replaced(call), state(state, oldState)\n\n/**\n * Fires whenever an error occurs when call.js encounters an issue with setting up the call.\n * <p>\n * The error given will have a code equal to either `MatrixCall.ERR_LOCAL_OFFER_FAILED` or\n * `MatrixCall.ERR_NO_USER_MEDIA`. `ERR_LOCAL_OFFER_FAILED` is emitted when the local client\n * fails to create an offer. `ERR_NO_USER_MEDIA` is emitted when the user has denied access\n * to their audio/video hardware.\n *\n * @event module:webrtc/call~MatrixCall#\"error\"\n * @param {Error} err The error raised by MatrixCall.\n * @example\n * matrixCall.on(\"error\", function(err){\n * console.error(err.code, err);\n * });\n */\n\n/**\n * Construct a new Matrix Call.\n * @constructor\n * @param {Object} opts Config options.\n * @param {string} opts.roomId The room ID for this call.\n * @param {Object} opts.webRtc The WebRTC globals from the browser.\n * @param {boolean} opts.forceTURN whether relay through TURN should be forced.\n * @param {Object} opts.URL The URL global.\n * @param {Array<Object>} opts.turnServers Optional. A list of TURN servers.\n * @param {MatrixClient} opts.client The Matrix Client instance to send events to.\n */\nfunction MatrixCall(opts) {\n this.roomId = opts.roomId;\n this.client = opts.client;\n this.webRtc = opts.webRtc;\n this.forceTURN = opts.forceTURN;\n this.URL = opts.URL;\n // Array of Objects with urls, username, credential keys\n this.turnServers = opts.turnServers || [];\n if (this.turnServers.length === 0) {\n this.turnServers.push({\n urls: [MatrixCall.FALLBACK_STUN_SERVER]\n });\n }\n utils.forEach(this.turnServers, function (server) {\n utils.checkObjectHasKeys(server, [\"urls\"]);\n });\n\n this.callId = \"c\" + new Date().getTime() + Math.random();\n this.state = 'fledgling';\n this.didConnect = false;\n\n // A queue for candidates waiting to go out.\n // We try to amalgamate candidates into a single candidate message where\n // possible\n this.candidateSendQueue = [];\n this.candidateSendTries = 0;\n\n // Lookup from opaque queue ID to a promise for media element operations that\n // need to be serialised into a given queue. Store this per-MatrixCall on the\n // assumption that multiple matrix calls will never compete for control of the\n // same DOM elements.\n this.mediaPromises = (0, _create2.default)(null);\n\n this.screenSharingStream = null;\n\n this._answerContent = null;\n}\n/** The length of time a call can be ringing for. */\nMatrixCall.CALL_TIMEOUT_MS = 60000;\n/** The fallback server to use for STUN. */\nMatrixCall.FALLBACK_STUN_SERVER = 'stun:stun.l.google.com:19302';\n/** An error code when the local client failed to create an offer. */\nMatrixCall.ERR_LOCAL_OFFER_FAILED = \"local_offer_failed\";\n/**\n * An error code when there is no local mic/camera to use. This may be because\n * the hardware isn't plugged in, or the user has explicitly denied access.\n */\nMatrixCall.ERR_NO_USER_MEDIA = \"no_user_media\";\n\n/*\n * Error code used when a call event failed to send\n * because unknown devices were present in the room\n */\nMatrixCall.ERR_UNKNOWN_DEVICES = \"unknown_devices\";\n\n/*\n * Error code usewd when we fail to send the invite\n * for some reason other than there being unknown devices\n */\nMatrixCall.ERR_SEND_INVITE = \"send_invite\";\n\n/*\n * Error code usewd when we fail to send the answer\n * for some reason other than there being unknown devices\n */\nMatrixCall.ERR_SEND_ANSWER = \"send_answer\";\n\nutils.inherits(MatrixCall, EventEmitter);\n\n/**\n * Place a voice call to this room.\n * @throws If you have not specified a listener for 'error' events.\n */\nMatrixCall.prototype.placeVoiceCall = function () {\n debuglog(\"placeVoiceCall\");\n checkForErrorListener(this);\n _placeCallWithConstraints(this, _getUserMediaVideoContraints('voice'));\n this.type = 'voice';\n};\n\n/**\n * Place a video call to this room.\n * @param {Element} remoteVideoElement a <code><video></code> DOM element\n * to render video to.\n * @param {Element} localVideoElement a <code><video></code> DOM element\n * to render the local camera preview.\n * @throws If you have not specified a listener for 'error' events.\n */\nMatrixCall.prototype.placeVideoCall = function (remoteVideoElement, localVideoElement) {\n debuglog(\"placeVideoCall\");\n checkForErrorListener(this);\n this.localVideoElement = localVideoElement;\n this.remoteVideoElement = remoteVideoElement;\n _placeCallWithConstraints(this, _getUserMediaVideoContraints('video'));\n this.type = 'video';\n _tryPlayRemoteStream(this);\n};\n\n/**\n * Place a screen-sharing call to this room. This includes audio.\n * <b>This method is EXPERIMENTAL and subject to change without warning. It\n * only works in Google Chrome and Firefox >= 44.</b>\n * @param {Element} remoteVideoElement a <code><video></code> DOM element\n * to render video to.\n * @param {Element} localVideoElement a <code><video></code> DOM element\n * to render the local camera preview.\n * @throws If you have not specified a listener for 'error' events.\n */\nMatrixCall.prototype.placeScreenSharingCall = function (remoteVideoElement, localVideoElement) {\n debuglog(\"placeScreenSharingCall\");\n checkForErrorListener(this);\n var screenConstraints = _getScreenSharingConstraints(this);\n if (!screenConstraints) {\n return;\n }\n this.localVideoElement = localVideoElement;\n this.remoteVideoElement = remoteVideoElement;\n var self = this;\n this.webRtc.getUserMedia(screenConstraints, function (stream) {\n self.screenSharingStream = stream;\n debuglog(\"Got screen stream, requesting audio stream...\");\n var audioConstraints = _getUserMediaVideoContraints('voice');\n _placeCallWithConstraints(self, audioConstraints);\n }, function (err) {\n self.emit(\"error\", callError(MatrixCall.ERR_NO_USER_MEDIA, \"Failed to get screen-sharing stream: \" + err));\n });\n this.type = 'video';\n _tryPlayRemoteStream(this);\n};\n\n/**\n * Play the given HTMLMediaElement, serialising the operation into a chain\n * of promises to avoid racing access to the element\n * @param {Element} element HTMLMediaElement element to play\n * @param {string} queueId Arbitrary ID to track the chain of promises to be used\n */\nMatrixCall.prototype.playElement = function (element, queueId) {\n console.log(\"queuing play on \" + queueId + \" and element \" + element);\n // XXX: FIXME: Does this leak elements, given the old promises\n // may hang around and retain a reference to them?\n if (this.mediaPromises[queueId]) {\n // XXX: these promises can fail (e.g. by <video/> being unmounted whilst\n // pending receiving media to play - e.g. whilst switching between\n // rooms before answering an inbound call), and throw unhandled exceptions.\n // However, we should soldier on as best we can even if they fail, given\n // these failures may be non-fatal (as in the case of unmounts)\n this.mediaPromises[queueId] = this.mediaPromises[queueId].then(function () {\n console.log(\"previous promise completed for \" + queueId);\n return element.play();\n }, function () {\n console.log(\"previous promise failed for \" + queueId);\n return element.play();\n });\n } else {\n this.mediaPromises[queueId] = element.play();\n }\n};\n\n/**\n * Pause the given HTMLMediaElement, serialising the operation into a chain\n * of promises to avoid racing access to the element\n * @param {Element} element HTMLMediaElement element to pause\n * @param {string} queueId Arbitrary ID to track the chain of promises to be used\n */\nMatrixCall.prototype.pauseElement = function (element, queueId) {\n console.log(\"queuing pause on \" + queueId + \" and element \" + element);\n if (this.mediaPromises[queueId]) {\n this.mediaPromises[queueId] = this.mediaPromises[queueId].then(function () {\n console.log(\"previous promise completed for \" + queueId);\n return element.pause();\n }, function () {\n console.log(\"previous promise failed for \" + queueId);\n return element.pause();\n });\n } else {\n // pause doesn't actually return a promise, but do this for symmetry\n // and just in case it does in future.\n this.mediaPromises[queueId] = element.pause();\n }\n};\n\n/**\n * Assign the given HTMLMediaElement by setting the .src attribute on it,\n * serialising the operation into a chain of promises to avoid racing access\n * to the element\n * @param {Element} element HTMLMediaElement element to pause\n * @param {MediaStream} srcObject the srcObject attribute value to assign to the element\n * @param {string} queueId Arbitrary ID to track the chain of promises to be used\n */\nMatrixCall.prototype.assignElement = function (element, srcObject, queueId) {\n console.log(\"queuing assign on \" + queueId + \" element \" + element + \" for \" + srcObject);\n if (this.mediaPromises[queueId]) {\n this.mediaPromises[queueId] = this.mediaPromises[queueId].then(function () {\n console.log(\"previous promise completed for \" + queueId);\n element.srcObject = srcObject;\n }, function () {\n console.log(\"previous promise failed for \" + queueId);\n element.srcObject = srcObject;\n });\n } else {\n element.srcObject = srcObject;\n }\n};\n\n/**\n * Retrieve the local <code><video></code> DOM element.\n * @return {Element} The dom element\n */\nMatrixCall.prototype.getLocalVideoElement = function () {\n return this.localVideoElement;\n};\n\n/**\n * Retrieve the remote <code><video></code> DOM element\n * used for playing back video capable streams.\n * @return {Element} The dom element\n */\nMatrixCall.prototype.getRemoteVideoElement = function () {\n return this.remoteVideoElement;\n};\n\n/**\n * Retrieve the remote <code><audio></code> DOM element\n * used for playing back audio only streams.\n * @return {Element} The dom element\n */\nMatrixCall.prototype.getRemoteAudioElement = function () {\n return this.remoteAudioElement;\n};\n\n/**\n * Set the local <code><video></code> DOM element. If this call is active,\n * video will be rendered to it immediately.\n * @param {Element} element The <code><video></code> DOM element.\n */\nMatrixCall.prototype.setLocalVideoElement = function (element) {\n this.localVideoElement = element;\n\n if (element && this.localAVStream && this.type === 'video') {\n element.autoplay = true;\n this.assignElement(element, this.localAVStream, \"localVideo\");\n element.muted = true;\n var self = this;\n setTimeout(function () {\n var vel = self.getLocalVideoElement();\n if (vel.play) {\n self.playElement(vel, \"localVideo\");\n }\n }, 0);\n }\n};\n\n/**\n * Set the remote <code><video></code> DOM element. If this call is active,\n * the first received video-capable stream will be rendered to it immediately.\n * @param {Element} element The <code><video></code> DOM element.\n */\nMatrixCall.prototype.setRemoteVideoElement = function (element) {\n this.remoteVideoElement = element;\n _tryPlayRemoteStream(this);\n};\n\n/**\n * Set the remote <code><audio></code> DOM element. If this call is active,\n * the first received audio-only stream will be rendered to it immediately.\n * The audio will *not* be rendered from the remoteVideoElement.\n * @param {Element} element The <code><video></code> DOM element.\n */\nMatrixCall.prototype.setRemoteAudioElement = function (element) {\n this.remoteVideoElement.muted = true;\n this.remoteAudioElement = element;\n this.remoteAudioElement.muted = false;\n _tryPlayRemoteAudioStream(this);\n};\n\n/**\n * Configure this call from an invite event. Used by MatrixClient.\n * @protected\n * @param {MatrixEvent} event The m.call.invite event\n */\nMatrixCall.prototype._initWithInvite = function (event) {\n this.msg = event.getContent();\n this.peerConn = _createPeerConnection(this);\n var self = this;\n if (this.peerConn) {\n this.peerConn.setRemoteDescription(new this.webRtc.RtcSessionDescription(this.msg.offer), hookCallback(self, self._onSetRemoteDescriptionSuccess), hookCallback(self, self._onSetRemoteDescriptionError));\n }\n setState(this, 'ringing');\n this.direction = 'inbound';\n\n // firefox and OpenWebRTC's RTCPeerConnection doesn't add streams until it\n // starts getting media on them so we need to figure out whether a video\n // channel has been offered by ourselves.\n if (this.msg.offer && this.msg.offer.sdp && this.msg.offer.sdp.indexOf('m=video') > -1) {\n this.type = 'video';\n } else {\n this.type = 'voice';\n }\n\n if (event.getAge()) {\n setTimeout(function () {\n if (self.state == 'ringing') {\n debuglog(\"Call invite has expired. Hanging up.\");\n self.hangupParty = 'remote'; // effectively\n setState(self, 'ended');\n stopAllMedia(self);\n if (self.peerConn.signalingState != 'closed') {\n self.peerConn.close();\n }\n self.emit(\"hangup\", self);\n }\n }, this.msg.lifetime - event.getAge());\n }\n};\n\n/**\n * Configure this call from a hangup event. Used by MatrixClient.\n * @protected\n * @param {MatrixEvent} event The m.call.hangup event\n */\nMatrixCall.prototype._initWithHangup = function (event) {\n // perverse as it may seem, sometimes we want to instantiate a call with a\n // hangup message (because when getting the state of the room on load, events\n // come in reverse order and we want to remember that a call has been hung up)\n this.msg = event.getContent();\n setState(this, 'ended');\n};\n\n/**\n * Answer a call.\n */\nMatrixCall.prototype.answer = function () {\n debuglog(\"Answering call %s of type %s\", this.callId, this.type);\n var self = this;\n\n if (self._answerContent) {\n self._sendAnswer();\n return;\n }\n\n if (!this.localAVStream && !this.waitForLocalAVStream) {\n this.webRtc.getUserMedia(_getUserMediaVideoContraints(this.type), hookCallback(self, self._maybeGotUserMediaForAnswer), hookCallback(self, self._maybeGotUserMediaForAnswer));\n setState(this, 'wait_local_media');\n } else if (this.localAVStream) {\n this._maybeGotUserMediaForAnswer(this.localAVStream);\n } else if (this.waitForLocalAVStream) {\n setState(this, 'wait_local_media');\n }\n};\n\n/**\n * Replace this call with a new call, e.g. for glare resolution. Used by\n * MatrixClient.\n * @protected\n * @param {MatrixCall} newCall The new call.\n */\nMatrixCall.prototype._replacedBy = function (newCall) {\n debuglog(this.callId + \" being replaced by \" + newCall.callId);\n if (this.state == 'wait_local_media') {\n debuglog(\"Telling new call to wait for local media\");\n newCall.waitForLocalAVStream = true;\n } else if (this.state == 'create_offer') {\n debuglog(\"Handing local stream to new call\");\n newCall._maybeGotUserMediaForAnswer(this.localAVStream);\n delete this.localAVStream;\n } else if (this.state == 'invite_sent') {\n debuglog(\"Handing local stream to new call\");\n newCall._maybeGotUserMediaForAnswer(this.localAVStream);\n delete this.localAVStream;\n }\n newCall.localVideoElement = this.localVideoElement;\n newCall.remoteVideoElement = this.remoteVideoElement;\n newCall.remoteAudioElement = this.remoteAudioElement;\n this.successor = newCall;\n this.emit(\"replaced\", newCall);\n this.hangup(true);\n};\n\n/**\n * Hangup a call.\n * @param {string} reason The reason why the call is being hung up.\n * @param {boolean} suppressEvent True to suppress emitting an event.\n */\nMatrixCall.prototype.hangup = function (reason, suppressEvent) {\n if (this.state == 'ended') return;\n\n debuglog(\"Ending call \" + this.callId);\n terminate(this, \"local\", reason, !suppressEvent);\n var content = {\n version: 0,\n call_id: this.callId,\n reason: reason\n };\n sendEvent(this, 'm.call.hangup', content);\n};\n\n/**\n * Set whether the local video preview should be muted or not.\n * @param {boolean} muted True to mute the local video.\n */\nMatrixCall.prototype.setLocalVideoMuted = function (muted) {\n if (!this.localAVStream) {\n return;\n }\n setTracksEnabled(this.localAVStream.getVideoTracks(), !muted);\n};\n\n/**\n * Check if local video is muted.\n *\n * If there are multiple video tracks, <i>all</i> of the tracks need to be muted\n * for this to return true. This means if there are no video tracks, this will\n * return true.\n * @return {Boolean} True if the local preview video is muted, else false\n * (including if the call is not set up yet).\n */\nMatrixCall.prototype.isLocalVideoMuted = function () {\n if (!this.localAVStream) {\n return false;\n }\n return !isTracksEnabled(this.localAVStream.getVideoTracks());\n};\n\n/**\n * Set whether the microphone should be muted or not.\n * @param {boolean} muted True to mute the mic.\n */\nMatrixCall.prototype.setMicrophoneMuted = function (muted) {\n if (!this.localAVStream) {\n return;\n }\n setTracksEnabled(this.localAVStream.getAudioTracks(), !muted);\n};\n\n/**\n * Check if the microphone is muted.\n *\n * If there are multiple audio tracks, <i>all</i> of the tracks need to be muted\n * for this to return true. This means if there are no audio tracks, this will\n * return true.\n * @return {Boolean} True if the mic is muted, else false (including if the call\n * is not set up yet).\n */\nMatrixCall.prototype.isMicrophoneMuted = function () {\n if (!this.localAVStream) {\n return false;\n }\n return !isTracksEnabled(this.localAVStream.getAudioTracks());\n};\n\n/**\n * Internal\n * @private\n * @param {Object} stream\n */\nMatrixCall.prototype._maybeGotUserMediaForInvite = function (stream) {\n if (this.successor) {\n this.successor._maybeGotUserMediaForAnswer(stream);\n return;\n }\n if (this.state == 'ended') {\n return;\n }\n debuglog(\"_maybeGotUserMediaForInvite -> \" + this.type);\n var self = this;\n\n var error = stream;\n var constraints = {\n 'mandatory': {\n 'OfferToReceiveAudio': true,\n 'OfferToReceiveVideo': self.type === 'video'\n }\n };\n if (stream instanceof MediaStream) {\n var videoEl = this.getLocalVideoElement();\n\n if (videoEl && this.type == 'video') {\n videoEl.autoplay = true;\n if (this.screenSharingStream) {\n debuglog(\"Setting screen sharing stream to the local video\" + \" element\");\n this.assignElement(videoEl, this.screenSharingStream, \"localVideo\");\n } else {\n this.assignElement(videoEl, stream, \"localVideo\");\n }\n videoEl.muted = true;\n setTimeout(function () {\n var vel = self.getLocalVideoElement();\n if (vel.play) {\n self.playElement(vel, \"localVideo\");\n }\n }, 0);\n }\n\n if (this.screenSharingStream) {\n this.screenSharingStream.addTrack(stream.getAudioTracks()[0]);\n stream = this.screenSharingStream;\n }\n\n this.localAVStream = stream;\n // why do we enable audio (and only audio) tracks here? -- matthew\n setTracksEnabled(stream.getAudioTracks(), true);\n this.peerConn = _createPeerConnection(this);\n this.peerConn.addStream(stream);\n } else if (error.name === 'PermissionDeniedError') {\n debuglog('User denied access to camera/microphone.' + ' Or possibly you are using an insecure domain. Receiving only.');\n this.peerConn = _createPeerConnection(this);\n } else {\n debuglog('Failed to getUserMedia.');\n this._getUserMediaFailed(error);\n return;\n }\n\n this.peerConn.createOffer(hookCallback(self, self._gotLocalOffer), hookCallback(self, self._getLocalOfferFailed), constraints);\n setState(self, 'create_offer');\n};\n\nMatrixCall.prototype._sendAnswer = function (stream) {\n var _this = this;\n\n sendEvent(this, 'm.call.answer', this._answerContent).then(function () {\n setState(_this, 'connecting');\n // If this isn't the first time we've tried to send the answer,\n // we may have candidates queued up, so send them now.\n _sendCandidateQueue(_this);\n }).catch(function (error) {\n // We've failed to answer: back to the ringing state\n setState(_this, 'ringing');\n _this.client.cancelPendingEvent(error.event);\n\n var code = MatrixCall.ERR_SEND_ANSWER;\n var message = \"Failed to send answer\";\n if (error.name == 'UnknownDeviceError') {\n code = MatrixCall.ERR_UNKNOWN_DEVICES;\n message = \"Unknown devices present in the room\";\n }\n _this.emit(\"error\", callError(code, message));\n throw error;\n });\n};\n\n/**\n * Internal\n * @private\n * @param {Object} stream\n */\nMatrixCall.prototype._maybeGotUserMediaForAnswer = function (stream) {\n var self = this;\n if (self.state == 'ended') {\n return;\n }\n\n var error = stream;\n if (stream instanceof MediaStream) {\n var localVidEl = self.getLocalVideoElement();\n\n if (localVidEl && self.type == 'video') {\n localVidEl.autoplay = true;\n this.assignElement(localVidEl, stream, \"localVideo\");\n localVidEl.muted = true;\n setTimeout(function () {\n var vel = self.getLocalVideoElement();\n if (vel.play) {\n self.playElement(vel, \"localVideo\");\n }\n }, 0);\n }\n\n self.localAVStream = stream;\n setTracksEnabled(stream.getAudioTracks(), true);\n self.peerConn.addStream(stream);\n } else if (error.name === 'PermissionDeniedError') {\n debuglog('User denied access to camera/microphone.' + ' Or possibly you are using an insecure domain. Receiving only.');\n } else {\n debuglog('Failed to getUserMedia.');\n this._getUserMediaFailed(error);\n return;\n }\n\n var constraints = {\n 'mandatory': {\n 'OfferToReceiveAudio': true,\n 'OfferToReceiveVideo': self.type === 'video'\n }\n };\n self.peerConn.createAnswer(function (description) {\n debuglog(\"Created answer: \" + description);\n self.peerConn.setLocalDescription(description, function () {\n self._answerContent = {\n version: 0,\n call_id: self.callId,\n answer: {\n sdp: self.peerConn.localDescription.sdp,\n type: self.peerConn.localDescription.type\n }\n };\n self._sendAnswer();\n }, function () {\n debuglog(\"Error setting local description!\");\n }, constraints);\n }, function (err) {\n debuglog(\"Failed to create answer: \" + err);\n });\n setState(self, 'create_answer');\n};\n\n/**\n * Internal\n * @private\n * @param {Object} event\n */\nMatrixCall.prototype._gotLocalIceCandidate = function (event) {\n if (event.candidate) {\n debuglog(\"Got local ICE \" + event.candidate.sdpMid + \" candidate: \" + event.candidate.candidate);\n\n if (this.state == 'ended') return;\n\n // As with the offer, note we need to make a copy of this object, not\n // pass the original: that broke in Chrome ~m43.\n var c = {\n candidate: event.candidate.candidate,\n sdpMid: event.candidate.sdpMid,\n sdpMLineIndex: event.candidate.sdpMLineIndex\n };\n sendCandidate(this, c);\n }\n};\n\n/**\n * Used by MatrixClient.\n * @protected\n * @param {Object} cand\n */\nMatrixCall.prototype._gotRemoteIceCandidate = function (cand) {\n if (this.state == 'ended') {\n //debuglog(\"Ignoring remote ICE candidate because call has ended\");\n return;\n }\n debuglog(\"Got remote ICE \" + cand.sdpMid + \" candidate: \" + cand.candidate);\n this.peerConn.addIceCandidate(new this.webRtc.RtcIceCandidate(cand), function () {}, function (e) {});\n};\n\n/**\n * Used by MatrixClient.\n * @protected\n * @param {Object} msg\n */\nMatrixCall.prototype._receivedAnswer = function (msg) {\n if (this.state == 'ended') {\n return;\n }\n\n var self = this;\n this.peerConn.setRemoteDescription(new this.webRtc.RtcSessionDescription(msg.answer), hookCallback(self, self._onSetRemoteDescriptionSuccess), hookCallback(self, self._onSetRemoteDescriptionError));\n setState(self, 'connecting');\n};\n\n/**\n * Internal\n * @private\n * @param {Object} description\n */\nMatrixCall.prototype._gotLocalOffer = function (description) {\n var self = this;\n debuglog(\"Created offer: \" + description);\n\n if (self.state == 'ended') {\n debuglog(\"Ignoring newly created offer on call ID \" + self.callId + \" because the call has ended\");\n return;\n }\n\n self.peerConn.setLocalDescription(description, function () {\n var content = {\n version: 0,\n call_id: self.callId,\n // OpenWebRTC appears to add extra stuff (like the DTLS fingerprint)\n // to the description when setting it on the peerconnection.\n // According to the spec it should only add ICE\n // candidates. Any ICE candidates that have already been generated\n // at this point will probably be sent both in the offer and separately.\n // Also, note that we have to make a new object here, copying the\n // type and sdp properties.\n // Passing the RTCSessionDescription object as-is doesn't work in\n // Chrome (as of about m43).\n offer: {\n sdp: self.peerConn.localDescription.sdp,\n type: self.peerConn.localDescription.type\n },\n lifetime: MatrixCall.CALL_TIMEOUT_MS\n };\n sendEvent(self, 'm.call.invite', content).then(function () {\n setState(self, 'invite_sent');\n setTimeout(function () {\n if (self.state == 'invite_sent') {\n self.hangup('invite_timeout');\n }\n }, MatrixCall.CALL_TIMEOUT_MS);\n }).catch(function (error) {\n var code = MatrixCall.ERR_SEND_INVITE;\n var message = \"Failed to send invite\";\n if (error.name == 'UnknownDeviceError') {\n code = MatrixCall.ERR_UNKNOWN_DEVICES;\n message = \"Unknown devices present in the room\";\n }\n\n self.client.cancelPendingEvent(error.event);\n terminate(self, \"local\", code, false);\n self.emit(\"error\", callError(code, message));\n throw error;\n });\n }, function () {\n debuglog(\"Error setting local description!\");\n });\n};\n\n/**\n * Internal\n * @private\n * @param {Object} error\n */\nMatrixCall.prototype._getLocalOfferFailed = function (error) {\n this.emit(\"error\", callError(MatrixCall.ERR_LOCAL_OFFER_FAILED, \"Failed to start audio for call!\"));\n};\n\n/**\n * Internal\n * @private\n * @param {Object} error\n */\nMatrixCall.prototype._getUserMediaFailed = function (error) {\n terminate(this, \"local\", 'user_media_failed', false);\n this.emit(\"error\", callError(MatrixCall.ERR_NO_USER_MEDIA, \"Couldn't start capturing media! Is your microphone set up and \" + \"does this app have permission?\"));\n};\n\n/**\n * Internal\n * @private\n */\nMatrixCall.prototype._onIceConnectionStateChanged = function () {\n if (this.state == 'ended') {\n return; // because ICE can still complete as we're ending the call\n }\n debuglog(\"Ice connection state changed to: \" + this.peerConn.iceConnectionState);\n // ideally we'd consider the call to be connected when we get media but\n // chrome doesn't implement any of the 'onstarted' events yet\n if (this.peerConn.iceConnectionState == 'completed' || this.peerConn.iceConnectionState == 'connected') {\n setState(this, 'connected');\n this.didConnect = true;\n } else if (this.peerConn.iceConnectionState == 'failed') {\n this.hangup('ice_failed');\n }\n};\n\n/**\n * Internal\n * @private\n */\nMatrixCall.prototype._onSignallingStateChanged = function () {\n debuglog(\"call \" + this.callId + \": Signalling state changed to: \" + this.peerConn.signalingState);\n};\n\n/**\n * Internal\n * @private\n */\nMatrixCall.prototype._onSetRemoteDescriptionSuccess = function () {\n debuglog(\"Set remote description\");\n};\n\n/**\n * Internal\n * @private\n * @param {Object} e\n */\nMatrixCall.prototype._onSetRemoteDescriptionError = function (e) {\n debuglog(\"Failed to set remote description\" + e);\n};\n\n/**\n * Internal\n * @private\n * @param {Object} event\n */\nMatrixCall.prototype._onAddStream = function (event) {\n debuglog(\"Stream id \" + event.stream.id + \" added\");\n\n var s = event.stream;\n\n if (s.getVideoTracks().length > 0) {\n this.type = 'video';\n this.remoteAVStream = s;\n this.remoteAStream = s;\n } else {\n this.type = 'voice';\n this.remoteAStream = s;\n }\n\n var self = this;\n forAllTracksOnStream(s, function (t) {\n debuglog(\"Track id \" + t.id + \" added\");\n // not currently implemented in chrome\n t.onstarted = hookCallback(self, self._onRemoteStreamTrackStarted);\n });\n\n if (event.stream.oninactive !== undefined) {\n event.stream.oninactive = hookCallback(self, self._onRemoteStreamEnded);\n } else {\n // onended is deprecated from Chrome 54\n event.stream.onended = hookCallback(self, self._onRemoteStreamEnded);\n }\n\n // not currently implemented in chrome\n event.stream.onstarted = hookCallback(self, self._onRemoteStreamStarted);\n\n if (this.type === 'video') {\n _tryPlayRemoteStream(this);\n _tryPlayRemoteAudioStream(this);\n } else {\n _tryPlayRemoteAudioStream(this);\n }\n};\n\n/**\n * Internal\n * @private\n * @param {Object} event\n */\nMatrixCall.prototype._onRemoteStreamStarted = function (event) {\n setState(this, 'connected');\n};\n\n/**\n * Internal\n * @private\n * @param {Object} event\n */\nMatrixCall.prototype._onRemoteStreamEnded = function (event) {\n debuglog(\"Remote stream ended\");\n this.hangupParty = 'remote';\n setState(this, 'ended');\n stopAllMedia(this);\n if (this.peerConn.signalingState != 'closed') {\n this.peerConn.close();\n }\n this.emit(\"hangup\", this);\n};\n\n/**\n * Internal\n * @private\n * @param {Object} event\n */\nMatrixCall.prototype._onRemoteStreamTrackStarted = function (event) {\n setState(this, 'connected');\n};\n\n/**\n * Used by MatrixClient.\n * @protected\n * @param {Object} msg\n */\nMatrixCall.prototype._onHangupReceived = function (msg) {\n debuglog(\"Hangup received\");\n terminate(this, \"remote\", msg.reason, true);\n};\n\n/**\n * Used by MatrixClient.\n * @protected\n * @param {Object} msg\n */\nMatrixCall.prototype._onAnsweredElsewhere = function (msg) {\n debuglog(\"Answered elsewhere\");\n terminate(this, \"remote\", \"answered_elsewhere\", true);\n};\n\nvar setTracksEnabled = function setTracksEnabled(tracks, enabled) {\n for (var i = 0; i < tracks.length; i++) {\n tracks[i].enabled = enabled;\n }\n};\n\nvar isTracksEnabled = function isTracksEnabled(tracks) {\n for (var i = 0; i < tracks.length; i++) {\n if (tracks[i].enabled) {\n return true; // at least one track is enabled\n }\n }\n return false;\n};\n\nvar setState = function setState(self, state) {\n var oldState = self.state;\n self.state = state;\n self.emit(\"state\", state, oldState);\n};\n\n/**\n * Internal\n * @param {MatrixCall} self\n * @param {string} eventType\n * @param {Object} content\n * @return {Promise}\n */\nvar sendEvent = function sendEvent(self, eventType, content) {\n return self.client.sendEvent(self.roomId, eventType, content);\n};\n\nvar sendCandidate = function sendCandidate(self, content) {\n // Sends candidates with are sent in a special way because we try to amalgamate\n // them into one message\n self.candidateSendQueue.push(content);\n\n // Don't send the ICE candidates yet if the call is in the ringing state: this\n // means we tried to pick (ie. started generating candidates) and then failed to\n // send the answer and went back to the ringing state. Queue up the candidates\n // to send if we sucessfully send the answer.\n if (self.state == 'ringing') return;\n\n if (self.candidateSendTries === 0) {\n setTimeout(function () {\n _sendCandidateQueue(self);\n }, 100);\n }\n};\n\nvar terminate = function terminate(self, hangupParty, hangupReason, shouldEmit) {\n if (self.getRemoteVideoElement()) {\n if (self.getRemoteVideoElement().pause) {\n self.pauseElement(self.getRemoteVideoElement(), \"remoteVideo\");\n }\n self.assignElement(self.getRemoteVideoElement(), null, \"remoteVideo\");\n }\n if (self.getRemoteAudioElement()) {\n if (self.getRemoteAudioElement().pause) {\n self.pauseElement(self.getRemoteAudioElement(), \"remoteAudio\");\n }\n self.assignElement(self.getRemoteAudioElement(), null, \"remoteAudio\");\n }\n if (self.getLocalVideoElement()) {\n if (self.getLocalVideoElement().pause) {\n self.pauseElement(self.getLocalVideoElement(), \"localVideo\");\n }\n self.assignElement(self.getLocalVideoElement(), null, \"localVideo\");\n }\n self.hangupParty = hangupParty;\n self.hangupReason = hangupReason;\n setState(self, 'ended');\n stopAllMedia(self);\n if (self.peerConn && self.peerConn.signalingState !== 'closed') {\n self.peerConn.close();\n }\n if (shouldEmit) {\n self.emit(\"hangup\", self);\n }\n};\n\nvar stopAllMedia = function stopAllMedia(self) {\n debuglog(\"stopAllMedia (stream=%s)\", self.localAVStream);\n if (self.localAVStream) {\n forAllTracksOnStream(self.localAVStream, function (t) {\n if (t.stop) {\n t.stop();\n }\n });\n // also call stop on the main stream so firefox will stop sharing\n // the mic\n if (self.localAVStream.stop) {\n self.localAVStream.stop();\n }\n }\n if (self.screenSharingStream) {\n forAllTracksOnStream(self.screenSharingStream, function (t) {\n if (t.stop) {\n t.stop();\n }\n });\n if (self.screenSharingStream.stop) {\n self.screenSharingStream.stop();\n }\n }\n if (self.remoteAVStream) {\n forAllTracksOnStream(self.remoteAVStream, function (t) {\n if (t.stop) {\n t.stop();\n }\n });\n }\n if (self.remoteAStream) {\n forAllTracksOnStream(self.remoteAStream, function (t) {\n if (t.stop) {\n t.stop();\n }\n });\n }\n};\n\nvar _tryPlayRemoteStream = function _tryPlayRemoteStream(self) {\n if (self.getRemoteVideoElement() && self.remoteAVStream) {\n var player = self.getRemoteVideoElement();\n player.autoplay = true;\n self.assignElement(player, self.remoteAVStream, \"remoteVideo\");\n setTimeout(function () {\n var vel = self.getRemoteVideoElement();\n if (vel.play) {\n self.playElement(vel, \"remoteVideo\");\n }\n // OpenWebRTC does not support oniceconnectionstatechange yet\n if (self.webRtc.isOpenWebRTC()) {\n setState(self, 'connected');\n }\n }, 0);\n }\n};\n\nvar _tryPlayRemoteAudioStream = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(self) {\n var player;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(self.getRemoteAudioElement() && self.remoteAStream)) {\n _context.next = 8;\n break;\n }\n\n player = self.getRemoteAudioElement();\n\n // if audioOutput is non-default:\n\n if (!audioOutput) {\n _context.next = 5;\n break;\n }\n\n _context.next = 5;\n return (0, _bluebird.resolve)(player.setSinkId(audioOutput));\n\n case 5:\n\n player.autoplay = true;\n self.assignElement(player, self.remoteAStream, \"remoteAudio\");\n setTimeout(function () {\n var ael = self.getRemoteAudioElement();\n if (ael.play) {\n self.playElement(ael, \"remoteAudio\");\n }\n // OpenWebRTC does not support oniceconnectionstatechange yet\n if (self.webRtc.isOpenWebRTC()) {\n setState(self, 'connected');\n }\n }, 0);\n\n case 8:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function _tryPlayRemoteAudioStream(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\nvar checkForErrorListener = function checkForErrorListener(self) {\n if (self.listeners(\"error\").length === 0) {\n throw new Error(\"You MUST attach an error listener using call.on('error', function() {})\");\n }\n};\n\nvar callError = function callError(code, msg) {\n var e = new Error(msg);\n e.code = code;\n return e;\n};\n\nvar debuglog = function debuglog() {\n if (DEBUG) {\n var _console;\n\n (_console = console).log.apply(_console, arguments);\n }\n};\n\nvar _sendCandidateQueue = function _sendCandidateQueue(self) {\n if (self.candidateSendQueue.length === 0) {\n return;\n }\n\n var cands = self.candidateSendQueue;\n self.candidateSendQueue = [];\n ++self.candidateSendTries;\n var content = {\n version: 0,\n call_id: self.callId,\n candidates: cands\n };\n debuglog(\"Attempting to send \" + cands.length + \" candidates\");\n sendEvent(self, 'm.call.candidates', content).then(function () {\n self.candidateSendTries = 0;\n _sendCandidateQueue(self);\n }, function (error) {\n for (var i = 0; i < cands.length; i++) {\n self.candidateSendQueue.push(cands[i]);\n }\n\n if (self.candidateSendTries > 5) {\n debuglog(\"Failed to send candidates on attempt %s. Giving up for now.\", self.candidateSendTries);\n self.candidateSendTries = 0;\n return;\n }\n\n var delayMs = 500 * Math.pow(2, self.candidateSendTries);\n ++self.candidateSendTries;\n debuglog(\"Failed to send candidates. Retrying in \" + delayMs + \"ms\");\n setTimeout(function () {\n _sendCandidateQueue(self);\n }, delayMs);\n });\n};\n\nvar _placeCallWithConstraints = function _placeCallWithConstraints(self, constraints) {\n self.client.callList[self.callId] = self;\n self.webRtc.getUserMedia(constraints, hookCallback(self, self._maybeGotUserMediaForInvite), hookCallback(self, self._maybeGotUserMediaForInvite));\n setState(self, 'wait_local_media');\n self.direction = 'outbound';\n self.config = constraints;\n};\n\nvar _createPeerConnection = function _createPeerConnection(self) {\n var servers = self.turnServers;\n if (self.webRtc.vendor === \"mozilla\") {\n // modify turnServers struct to match what mozilla expects.\n servers = [];\n for (var i = 0; i < self.turnServers.length; i++) {\n for (var j = 0; j < self.turnServers[i].urls.length; j++) {\n servers.push({\n url: self.turnServers[i].urls[j],\n username: self.turnServers[i].username,\n credential: self.turnServers[i].credential\n });\n }\n }\n }\n\n var pc = new self.webRtc.RtcPeerConnection({\n iceTransportPolicy: self.forceTURN ? 'relay' : undefined,\n iceServers: servers\n });\n pc.oniceconnectionstatechange = hookCallback(self, self._onIceConnectionStateChanged);\n pc.onsignalingstatechange = hookCallback(self, self._onSignallingStateChanged);\n pc.onicecandidate = hookCallback(self, self._gotLocalIceCandidate);\n pc.onaddstream = hookCallback(self, self._onAddStream);\n return pc;\n};\n\nvar _getScreenSharingConstraints = function _getScreenSharingConstraints(call) {\n var screen = global.screen;\n if (!screen) {\n call.emit(\"error\", callError(MatrixCall.ERR_NO_USER_MEDIA, \"Couldn't determine screen sharing constaints.\"));\n return;\n }\n\n return {\n video: {\n mediaSource: 'screen',\n mandatory: {\n chromeMediaSource: \"screen\",\n chromeMediaSourceId: \"\" + Date.now(),\n maxWidth: screen.width,\n maxHeight: screen.height,\n minFrameRate: 1,\n maxFrameRate: 10\n }\n }\n };\n};\n\nvar _getUserMediaVideoContraints = function _getUserMediaVideoContraints(callType) {\n var isWebkit = !!global.window.navigator.webkitGetUserMedia;\n\n switch (callType) {\n case 'voice':\n return {\n audio: {\n deviceId: audioInput ? { exact: audioInput } : undefined\n }, video: false\n };\n case 'video':\n return {\n audio: {\n deviceId: audioInput ? { exact: audioInput } : undefined\n }, video: {\n deviceId: videoInput ? { exact: videoInput } : undefined,\n /* We want 640x360. Chrome will give it only if we ask exactly,\n FF refuses entirely if we ask exactly, so have to ask for ideal\n instead */\n width: isWebkit ? { exact: 640 } : { ideal: 640 },\n height: isWebkit ? { exact: 360 } : { ideal: 360 }\n }\n };\n }\n};\n\nvar hookCallback = function hookCallback(call, fn) {\n return function () {\n return fn.apply(call, arguments);\n };\n};\n\nvar forAllVideoTracksOnStream = function forAllVideoTracksOnStream(s, f) {\n var tracks = s.getVideoTracks();\n for (var i = 0; i < tracks.length; i++) {\n f(tracks[i]);\n }\n};\n\nvar forAllAudioTracksOnStream = function forAllAudioTracksOnStream(s, f) {\n var tracks = s.getAudioTracks();\n for (var i = 0; i < tracks.length; i++) {\n f(tracks[i]);\n }\n};\n\nvar forAllTracksOnStream = function forAllTracksOnStream(s, f) {\n forAllVideoTracksOnStream(s, f);\n forAllAudioTracksOnStream(s, f);\n};\n\n/** The MatrixCall class. */\nmodule.exports.MatrixCall = MatrixCall;\n\nvar audioOutput = void 0;\nvar audioInput = void 0;\nvar videoInput = void 0;\n/**\n * Set an audio output device to use for MatrixCalls\n * @function\n * @param {string=} deviceId the identifier for the device\n * undefined treated as unset\n */\nmodule.exports.setAudioOutput = function (deviceId) {\n audioOutput = deviceId;\n};\n/**\n * Set an audio input device to use for MatrixCalls\n * @function\n * @param {string=} deviceId the identifier for the device\n * undefined treated as unset\n */\nmodule.exports.setAudioInput = function (deviceId) {\n audioInput = deviceId;\n};\n/**\n * Set a video input device to use for MatrixCalls\n * @function\n * @param {string=} deviceId the identifier for the device\n * undefined treated as unset\n */\nmodule.exports.setVideoInput = function (deviceId) {\n videoInput = deviceId;\n};\n\n/**\n * Create a new Matrix call for the browser.\n * @param {MatrixClient} client The client instance to use.\n * @param {string} roomId The room the call is in.\n * @param {Object?} options DEPRECATED optional options map.\n * @param {boolean} options.forceTURN DEPRECATED whether relay through TURN should be forced. This option is deprecated - use opts.forceTURN when creating the matrix client since it's only possible to set this option on outbound calls.\n * @return {MatrixCall} the call or null if the browser doesn't support calling.\n */\nmodule.exports.createNewMatrixCall = function (client, roomId, options) {\n var w = global.window;\n var doc = global.document;\n if (!w || !doc) {\n return null;\n }\n var webRtc = {};\n webRtc.isOpenWebRTC = function () {\n var scripts = doc.getElementById(\"script\");\n if (!scripts || !scripts.length) {\n return false;\n }\n for (var i = 0; i < scripts.length; i++) {\n if (scripts[i].src.indexOf(\"owr.js\") > -1) {\n return true;\n }\n }\n return false;\n };\n var getUserMedia = w.navigator.getUserMedia || w.navigator.webkitGetUserMedia || w.navigator.mozGetUserMedia;\n if (getUserMedia) {\n webRtc.getUserMedia = function () {\n return getUserMedia.apply(w.navigator, arguments);\n };\n }\n webRtc.RtcPeerConnection = w.RTCPeerConnection || w.webkitRTCPeerConnection || w.mozRTCPeerConnection;\n webRtc.RtcSessionDescription = w.RTCSessionDescription || w.webkitRTCSessionDescription || w.mozRTCSessionDescription;\n webRtc.RtcIceCandidate = w.RTCIceCandidate || w.webkitRTCIceCandidate || w.mozRTCIceCandidate;\n webRtc.vendor = null;\n if (w.mozRTCPeerConnection) {\n webRtc.vendor = \"mozilla\";\n } else if (w.webkitRTCPeerConnection) {\n webRtc.vendor = \"webkit\";\n } else if (w.RTCPeerConnection) {\n webRtc.vendor = \"generic\";\n }\n if (!webRtc.RtcIceCandidate || !webRtc.RtcSessionDescription || !webRtc.RtcPeerConnection || !webRtc.getUserMedia) {\n return null; // WebRTC is not supported.\n }\n\n var optionsForceTURN = options ? options.forceTURN : false;\n\n var opts = {\n webRtc: webRtc,\n client: client,\n URL: w.URL,\n roomId: roomId,\n turnServers: client.getTurnServers(),\n // call level options\n forceTURN: client._forceTURN || optionsForceTURN\n };\n return new MatrixCall(opts);\n};\n//# sourceMappingURL=call.js.map","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _getPrototypeOf = require(\"../core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _getOwnPropertyDescriptor = require(\"../core-js/object/get-own-property-descriptor\");\n\nvar _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = (0, _getOwnPropertyDescriptor2.default)(object, property);\n\n if (desc === undefined) {\n var parent = (0, _getPrototypeOf2.default)(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};","'use strict';\n\nvar htmlparser = require('htmlparser2');\nvar extend = require('xtend');\nvar quoteRegexp = require('lodash.escaperegexp');\nvar cloneDeep = require('lodash.clonedeep');\nvar mergeWith = require('lodash.mergewith');\nvar isString = require('lodash.isstring');\nvar isPlainObject = require('lodash.isplainobject');\nvar srcset = require('srcset');\nvar postcss = require('postcss');\nvar url = require('url');\n\nfunction each(obj, cb) {\n if (obj) Object.keys(obj).forEach(function (key) {\n cb(obj[key], key);\n });\n}\n\n// Avoid false positives with .__proto__, .hasOwnProperty, etc.\nfunction has(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\n\n// Returns those elements of `a` for which `cb(a)` returns truthy\nfunction filter(a, cb) {\n var n = [];\n each(a, function (v) {\n if (cb(v)) {\n n.push(v);\n }\n });\n return n;\n}\n\nmodule.exports = sanitizeHtml;\n\n// A valid attribute name.\n// We use a tolerant definition based on the set of strings defined by\n// html.spec.whatwg.org/multipage/parsing.html#before-attribute-name-state\n// and html.spec.whatwg.org/multipage/parsing.html#attribute-name-state .\n// The characters accepted are ones which can be appended to the attribute\n// name buffer without triggering a parse error:\n// * unexpected-equals-sign-before-attribute-name\n// * unexpected-null-character\n// * unexpected-character-in-attribute-name\n// We exclude the empty string because it's impossible to get to the after\n// attribute name state with an empty attribute name buffer.\nvar VALID_HTML_ATTRIBUTE_NAME = /^[^\\0\\t\\n\\f\\r /<=>]+$/;\n\n// Ignore the _recursing flag; it's there for recursive\n// invocation as a guard against this exploit:\n// https://github.com/fb55/htmlparser2/issues/105\n\nfunction sanitizeHtml(html, options, _recursing) {\n var result = '';\n\n function Frame(tag, attribs) {\n var that = this;\n this.tag = tag;\n this.attribs = attribs || {};\n this.tagPosition = result.length;\n this.text = ''; // Node inner text\n\n this.updateParentNodeText = function () {\n if (stack.length) {\n var parentFrame = stack[stack.length - 1];\n parentFrame.text += that.text;\n }\n };\n }\n\n if (!options) {\n options = sanitizeHtml.defaults;\n options.parser = htmlParserDefaults;\n } else {\n options = extend(sanitizeHtml.defaults, options);\n if (options.parser) {\n options.parser = extend(htmlParserDefaults, options.parser);\n } else {\n options.parser = htmlParserDefaults;\n }\n }\n\n // Tags that contain something other than HTML, or where discarding\n // the text when the tag is disallowed makes sense for other reasons.\n // If we are not allowing these tags, we should drop their content too.\n // For other tags you would drop the tag but keep its content.\n var nonTextTagsArray = options.nonTextTags || ['script', 'style', 'textarea'];\n var allowedAttributesMap;\n var allowedAttributesGlobMap;\n if (options.allowedAttributes) {\n allowedAttributesMap = {};\n allowedAttributesGlobMap = {};\n each(options.allowedAttributes, function (attributes, tag) {\n allowedAttributesMap[tag] = [];\n var globRegex = [];\n attributes.forEach(function (obj) {\n if (isString(obj) && obj.indexOf('*') >= 0) {\n globRegex.push(quoteRegexp(obj).replace(/\\\\\\*/g, '.*'));\n } else {\n allowedAttributesMap[tag].push(obj);\n }\n });\n allowedAttributesGlobMap[tag] = new RegExp('^(' + globRegex.join('|') + ')$');\n });\n }\n var allowedClassesMap = {};\n each(options.allowedClasses, function (classes, tag) {\n // Implicitly allows the class attribute\n if (allowedAttributesMap) {\n if (!has(allowedAttributesMap, tag)) {\n allowedAttributesMap[tag] = [];\n }\n allowedAttributesMap[tag].push('class');\n }\n\n allowedClassesMap[tag] = classes;\n });\n\n var transformTagsMap = {};\n var transformTagsAll;\n each(options.transformTags, function (transform, tag) {\n var transFun;\n if (typeof transform === 'function') {\n transFun = transform;\n } else if (typeof transform === \"string\") {\n transFun = sanitizeHtml.simpleTransform(transform);\n }\n if (tag === '*') {\n transformTagsAll = transFun;\n } else {\n transformTagsMap[tag] = transFun;\n }\n });\n\n var depth = 0;\n var stack = [];\n var skipMap = {};\n var transformMap = {};\n var skipText = false;\n var skipTextDepth = 0;\n\n var parser = new htmlparser.Parser({\n onopentag: function onopentag(name, attribs) {\n if (skipText) {\n skipTextDepth++;\n return;\n }\n var frame = new Frame(name, attribs);\n stack.push(frame);\n\n var skip = false;\n var hasText = frame.text ? true : false;\n var transformedTag;\n if (has(transformTagsMap, name)) {\n transformedTag = transformTagsMap[name](name, attribs);\n\n frame.attribs = attribs = transformedTag.attribs;\n\n if (transformedTag.text !== undefined) {\n frame.innerText = transformedTag.text;\n }\n\n if (name !== transformedTag.tagName) {\n frame.name = name = transformedTag.tagName;\n transformMap[depth] = transformedTag.tagName;\n }\n }\n if (transformTagsAll) {\n transformedTag = transformTagsAll(name, attribs);\n\n frame.attribs = attribs = transformedTag.attribs;\n if (name !== transformedTag.tagName) {\n frame.name = name = transformedTag.tagName;\n transformMap[depth] = transformedTag.tagName;\n }\n }\n\n if (options.allowedTags && options.allowedTags.indexOf(name) === -1) {\n skip = true;\n if (nonTextTagsArray.indexOf(name) !== -1) {\n skipText = true;\n skipTextDepth = 1;\n }\n skipMap[depth] = true;\n }\n depth++;\n if (skip) {\n // We want the contents but not this tag\n return;\n }\n result += '<' + name;\n if (!allowedAttributesMap || has(allowedAttributesMap, name) || allowedAttributesMap['*']) {\n each(attribs, function (value, a) {\n if (!VALID_HTML_ATTRIBUTE_NAME.test(a)) {\n // This prevents part of an attribute name in the output from being\n // interpreted as the end of an attribute, or end of a tag.\n delete frame.attribs[a];\n return;\n }\n var parsed;\n // check allowedAttributesMap for the element and attribute and modify the value\n // as necessary if there are specific values defined.\n var passedAllowedAttributesMapCheck = false;\n if (!allowedAttributesMap || has(allowedAttributesMap, name) && allowedAttributesMap[name].indexOf(a) !== -1 || allowedAttributesMap['*'] && allowedAttributesMap['*'].indexOf(a) !== -1 || has(allowedAttributesGlobMap, name) && allowedAttributesGlobMap[name].test(a) || allowedAttributesGlobMap['*'] && allowedAttributesGlobMap['*'].test(a)) {\n passedAllowedAttributesMapCheck = true;\n } else if (allowedAttributesMap && allowedAttributesMap[name]) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = allowedAttributesMap[name][Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var o = _step.value;\n\n if (isPlainObject(o) && o.name && o.name === a) {\n passedAllowedAttributesMapCheck = true;\n var newValue = '';\n if (o.multiple === true) {\n // verify the values that are allowed\n var splitStrArray = value.split(' ');\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = splitStrArray[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var s = _step2.value;\n\n if (o.values.indexOf(s) !== -1) {\n if (newValue === '') {\n newValue = s;\n } else {\n newValue += ' ' + s;\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n } else if (o.values.indexOf(value) >= 0) {\n // verified an allowed value matches the entire attribute value\n newValue = value;\n }\n value = newValue;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n if (passedAllowedAttributesMapCheck) {\n if (options.allowedSchemesAppliedToAttributes.indexOf(a) !== -1) {\n if (naughtyHref(name, value)) {\n delete frame.attribs[a];\n return;\n }\n }\n if (name === 'iframe' && a === 'src') {\n var allowed = true;\n try {\n // naughtyHref is in charge of whether protocol relative URLs\n // are cool. We should just accept them\n parsed = url.parse(value, false, true);\n var isRelativeUrl = parsed && parsed.host === null && parsed.protocol === null;\n if (isRelativeUrl) {\n // default value of allowIframeRelativeUrls is true unless allowIframeHostnames specified\n allowed = has(options, \"allowIframeRelativeUrls\") ? options.allowIframeRelativeUrls : !options.allowedIframeHostnames;\n } else if (options.allowedIframeHostnames) {\n allowed = options.allowedIframeHostnames.find(function (hostname) {\n return hostname === parsed.hostname;\n });\n }\n } catch (e) {\n // Unparseable iframe src\n allowed = false;\n }\n if (!allowed) {\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'srcset') {\n try {\n parsed = srcset.parse(value);\n each(parsed, function (value) {\n if (naughtyHref('srcset', value.url)) {\n value.evil = true;\n }\n });\n parsed = filter(parsed, function (v) {\n return !v.evil;\n });\n if (!parsed.length) {\n delete frame.attribs[a];\n return;\n } else {\n value = srcset.stringify(filter(parsed, function (v) {\n return !v.evil;\n }));\n frame.attribs[a] = value;\n }\n } catch (e) {\n // Unparseable srcset\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'class') {\n value = filterClasses(value, allowedClassesMap[name]);\n if (!value.length) {\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'style') {\n try {\n var abstractSyntaxTree = postcss.parse(name + \" {\" + value + \"}\");\n var filteredAST = filterCss(abstractSyntaxTree, options.allowedStyles);\n\n value = stringifyStyleAttributes(filteredAST);\n\n if (value.length === 0) {\n delete frame.attribs[a];\n return;\n }\n } catch (e) {\n delete frame.attribs[a];\n return;\n }\n }\n result += ' ' + a;\n if (value.length) {\n result += '=\"' + escapeHtml(value, true) + '\"';\n }\n } else {\n delete frame.attribs[a];\n }\n });\n }\n if (options.selfClosing.indexOf(name) !== -1) {\n result += \" />\";\n } else {\n result += \">\";\n if (frame.innerText && !hasText && !options.textFilter) {\n result += frame.innerText;\n }\n }\n },\n ontext: function ontext(text) {\n if (skipText) {\n return;\n }\n var lastFrame = stack[stack.length - 1];\n var tag;\n\n if (lastFrame) {\n tag = lastFrame.tag;\n // If inner text was set by transform function then let's use it\n text = lastFrame.innerText !== undefined ? lastFrame.innerText : text;\n }\n\n if (tag === 'script' || tag === 'style') {\n // htmlparser2 gives us these as-is. Escaping them ruins the content. Allowing\n // script tags is, by definition, game over for XSS protection, so if that's\n // your concern, don't allow them. The same is essentially true for style tags\n // which have their own collection of XSS vectors.\n result += text;\n } else {\n var escaped = escapeHtml(text, false);\n if (options.textFilter) {\n result += options.textFilter(escaped);\n } else {\n result += escaped;\n }\n }\n if (stack.length) {\n var frame = stack[stack.length - 1];\n frame.text += text;\n }\n },\n onclosetag: function onclosetag(name) {\n\n if (skipText) {\n skipTextDepth--;\n if (!skipTextDepth) {\n skipText = false;\n } else {\n return;\n }\n }\n\n var frame = stack.pop();\n if (!frame) {\n // Do not crash on bad markup\n return;\n }\n skipText = false;\n depth--;\n if (skipMap[depth]) {\n delete skipMap[depth];\n frame.updateParentNodeText();\n return;\n }\n\n if (transformMap[depth]) {\n name = transformMap[depth];\n delete transformMap[depth];\n }\n\n if (options.exclusiveFilter && options.exclusiveFilter(frame)) {\n result = result.substr(0, frame.tagPosition);\n return;\n }\n\n frame.updateParentNodeText();\n\n if (options.selfClosing.indexOf(name) !== -1) {\n // Already output />\n return;\n }\n\n result += \"</\" + name + \">\";\n }\n }, options.parser);\n parser.write(html);\n parser.end();\n\n return result;\n\n function escapeHtml(s, quote) {\n if (typeof s !== 'string') {\n s = s + '';\n }\n if (options.parser.decodeEntities) {\n s = s.replace(/&/g, '&').replace(/</g, '<').replace(/\\>/g, '>');\n if (quote) {\n s = s.replace(/\\\"/g, '"');\n }\n }\n // TODO: this is inadequate because it will pass `&0;`. This approach\n // will not work, each & must be considered with regard to whether it\n // is followed by a 100% syntactically valid entity or not, and escaped\n // if it is not. If this bothers you, don't set parser.decodeEntities\n // to false. (The default is true.)\n s = s.replace(/&(?![a-zA-Z0-9#]{1,20};)/g, '&') // Match ampersands not part of existing HTML entity\n .replace(/</g, '<').replace(/\\>/g, '>');\n if (quote) {\n s = s.replace(/\\\"/g, '"');\n }\n return s;\n }\n\n function naughtyHref(name, href) {\n // Browsers ignore character codes of 32 (space) and below in a surprising\n // number of situations. Start reading here:\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet#Embedded_tab\n href = href.replace(/[\\x00-\\x20]+/g, '');\n // Clobber any comments in URLs, which the browser might\n // interpret inside an XML data island, allowing\n // a javascript: URL to be snuck through\n href = href.replace(/<\\!\\-\\-.*?\\-\\-\\>/g, '');\n // Case insensitive so we don't get faked out by JAVASCRIPT #1\n var matches = href.match(/^([a-zA-Z]+)\\:/);\n if (!matches) {\n // Protocol-relative URL starting with any combination of '/' and '\\'\n if (href.match(/^[\\/\\\\]{2}/)) {\n return !options.allowProtocolRelative;\n }\n\n // No scheme\n return false;\n }\n var scheme = matches[1].toLowerCase();\n\n if (has(options.allowedSchemesByTag, name)) {\n return options.allowedSchemesByTag[name].indexOf(scheme) === -1;\n }\n\n return !options.allowedSchemes || options.allowedSchemes.indexOf(scheme) === -1;\n }\n\n /**\n * Filters user input css properties by whitelisted regex attributes.\n *\n * @param {object} abstractSyntaxTree - Object representation of CSS attributes.\n * @property {array[Declaration]} abstractSyntaxTree.nodes[0] - Each object cointains prop and value key, i.e { prop: 'color', value: 'red' }.\n * @param {object} allowedStyles - Keys are properties (i.e color), value is list of permitted regex rules (i.e /green/i).\n * @return {object} - Abstract Syntax Tree with filtered style attributes.\n */\n function filterCss(abstractSyntaxTree, allowedStyles) {\n if (!allowedStyles) {\n return abstractSyntaxTree;\n }\n\n var filteredAST = cloneDeep(abstractSyntaxTree);\n var astRules = abstractSyntaxTree.nodes[0];\n var selectedRule;\n\n // Merge global and tag-specific styles into new AST.\n if (allowedStyles[astRules.selector] && allowedStyles['*']) {\n selectedRule = mergeWith(cloneDeep(allowedStyles[astRules.selector]), allowedStyles['*'], function (objValue, srcValue) {\n if (Array.isArray(objValue)) {\n return objValue.concat(srcValue);\n }\n });\n } else {\n selectedRule = allowedStyles[astRules.selector] || allowedStyles['*'];\n }\n\n if (selectedRule) {\n filteredAST.nodes[0].nodes = astRules.nodes.reduce(filterDeclarations(selectedRule), []);\n }\n\n return filteredAST;\n }\n\n /**\n * Extracts the style attribues from an AbstractSyntaxTree and formats those\n * values in the inline style attribute format.\n *\n * @param {AbstractSyntaxTree} filteredAST\n * @return {string} - Example: \"color:yellow;text-align:center;font-family:helvetica;\"\n */\n function stringifyStyleAttributes(filteredAST) {\n return filteredAST.nodes[0].nodes.reduce(function (extractedAttributes, attributeObject) {\n extractedAttributes.push(attributeObject.prop + ':' + attributeObject.value + ';');\n return extractedAttributes;\n }, []).join('');\n }\n\n /**\n * Filters the existing attributes for the given property. Discards any attributes\n * which don't match the whitelist.\n *\n * @param {object} selectedRule - Example: { color: red, font-family: helvetica }\n * @param {array} allowedDeclarationsList - List of declarations which pass whitelisting.\n * @param {object} attributeObject - Object representing the current css property.\n * @property {string} attributeObject.type - Typically 'declaration'.\n * @property {string} attributeObject.prop - The CSS property, i.e 'color'.\n * @property {string} attributeObject.value - The corresponding value to the css property, i.e 'red'.\n * @return {function} - When used in Array.reduce, will return an array of Declaration objects\n */\n function filterDeclarations(selectedRule) {\n return function (allowedDeclarationsList, attributeObject) {\n // If this property is whitelisted...\n if (selectedRule.hasOwnProperty(attributeObject.prop)) {\n var matchesRegex = selectedRule[attributeObject.prop].some(function (regularExpression) {\n return regularExpression.test(attributeObject.value);\n });\n\n if (matchesRegex) {\n allowedDeclarationsList.push(attributeObject);\n }\n }\n return allowedDeclarationsList;\n };\n }\n\n function filterClasses(classes, allowed) {\n if (!allowed) {\n // The class attribute is allowed without filtering on this tag\n return classes;\n }\n classes = classes.split(/\\s+/);\n return classes.filter(function (clss) {\n return allowed.indexOf(clss) !== -1;\n }).join(' ');\n }\n}\n\n// Defaults are accessible to you so that you can use them as a starting point\n// programmatically if you wish\n\nvar htmlParserDefaults = {\n decodeEntities: true\n};\nsanitizeHtml.defaults = {\n allowedTags: ['h3', 'h4', 'h5', 'h6', 'blockquote', 'p', 'a', 'ul', 'ol', 'nl', 'li', 'b', 'i', 'strong', 'em', 'strike', 'code', 'hr', 'br', 'div', 'table', 'thead', 'caption', 'tbody', 'tr', 'th', 'td', 'pre', 'iframe'],\n allowedAttributes: {\n a: ['href', 'name', 'target'],\n // We don't currently allow img itself by default, but this\n // would make sense if we did. You could add srcset here,\n // and if you do the URL is checked for safety\n img: ['src']\n },\n // Lots of these won't come up by default because we don't allow them\n selfClosing: ['img', 'br', 'hr', 'area', 'base', 'basefont', 'input', 'link', 'meta'],\n // URL schemes we permit\n allowedSchemes: ['http', 'https', 'ftp', 'mailto'],\n allowedSchemesByTag: {},\n allowedSchemesAppliedToAttributes: ['href', 'src', 'cite'],\n allowProtocolRelative: true\n};\n\nsanitizeHtml.simpleTransform = function (newTagName, newAttribs, merge) {\n merge = merge === undefined ? true : merge;\n newAttribs = newAttribs || {};\n\n return function (tagName, attribs) {\n var attrib;\n if (merge) {\n for (attrib in newAttribs) {\n attribs[attrib] = newAttribs[attrib];\n }\n } else {\n attribs = newAttribs;\n }\n\n return {\n tagName: newTagName,\n attribs: attribs\n };\n };\n};","var Parser = require(\"./Parser.js\");\nvar DomHandler = require(\"domhandler\");\n\nfunction defineProp(name, value){\n\tdelete module.exports[name];\n\tmodule.exports[name] = value;\n\treturn value;\n}\n\nmodule.exports = {\n\tParser: Parser,\n\tTokenizer: require(\"./Tokenizer.js\"),\n\tElementType: require(\"domelementtype\"),\n\tDomHandler: DomHandler,\n\tget FeedHandler(){\n\t\treturn defineProp(\"FeedHandler\", require(\"./FeedHandler.js\"));\n\t},\n\tget Stream(){\n\t\treturn defineProp(\"Stream\", require(\"./Stream.js\"));\n\t},\n\tget WritableStream(){\n\t\treturn defineProp(\"WritableStream\", require(\"./WritableStream.js\"));\n\t},\n\tget ProxyHandler(){\n\t\treturn defineProp(\"ProxyHandler\", require(\"./ProxyHandler.js\"));\n\t},\n\tget DomUtils(){\n\t\treturn defineProp(\"DomUtils\", require(\"domutils\"));\n\t},\n\tget CollectingHandler(){\n\t\treturn defineProp(\"CollectingHandler\", require(\"./CollectingHandler.js\"));\n\t},\n\t// For legacy support\n\tDefaultHandler: DomHandler,\n\tget RssHandler(){\n\t\treturn defineProp(\"RssHandler\", this.FeedHandler);\n\t},\n\t//helper methods\n\tparseDOM: function(data, options){\n\t\tvar handler = new DomHandler(options);\n\t\tnew Parser(handler, options).end(data);\n\t\treturn handler.dom;\n\t},\n\tparseFeed: function(feed, options){\n\t\tvar handler = new module.exports.FeedHandler(options);\n\t\tnew Parser(handler, options).end(feed);\n\t\treturn handler.dom;\n\t},\n\tcreateDomStream: function(cb, options, elementCb){\n\t\tvar handler = new DomHandler(cb, options, elementCb);\n\t\treturn new Parser(handler, options);\n\t},\n\t// List of all events that the parser emits\n\tEVENTS: { /* Format: eventname: number of arguments */\n\t\tattribute: 2,\n\t\tcdatastart: 0,\n\t\tcdataend: 0,\n\t\ttext: 1,\n\t\tprocessinginstruction: 2,\n\t\tcomment: 1,\n\t\tcommentend: 0,\n\t\tclosetag: 1,\n\t\topentag: 2,\n\t\topentagname: 1,\n\t\terror: 1,\n\t\tend: 0\n\t}\n};\n","//Types of elements found in the DOM\nmodule.exports = {\n\tText: \"text\", //Text\n\tDirective: \"directive\", //<? ... ?>\n\tComment: \"comment\", //<!-- ... -->\n\tScript: \"script\", //<script> tags\n\tStyle: \"style\", //<style> tags\n\tTag: \"tag\", //Any tag\n\tCDATA: \"cdata\", //<![CDATA[ ... ]]>\n\tDoctype: \"doctype\",\n\n\tisTag: function(elem){\n\t\treturn elem.type === \"tag\" || elem.type === \"script\" || elem.type === \"style\";\n\t}\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '<dir>/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // “sources” entry. This value is prepended to the individual\n // entries in the “source” field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // “sourceRoot”, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n","/*! VelocityJS.org (1.2.3). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */\n\n/*************************\n Velocity jQuery Shim\n*************************/\n\n/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */\n\n/* This file contains the jQuery functions that Velocity relies on, thereby removing Velocity's dependency on a full copy of jQuery, and allowing it to work in any environment. */\n/* These shimmed functions are only used if jQuery isn't present. If both this shim and jQuery are loaded, Velocity defaults to jQuery proper. */\n/* Browser support: Using this shim instead of jQuery proper removes support for IE8. */\n\n;(function (window) {\n /***************\n Setup\n ***************/\n\n /* If jQuery is already loaded, there's no point in loading this shim. */\n if (window.jQuery) {\n return;\n }\n\n /* jQuery base. */\n var $ = function (selector, context) {\n return new $.fn.init(selector, context);\n };\n\n /********************\n Private Methods\n ********************/\n\n /* jQuery */\n $.isWindow = function (obj) {\n /* jshint eqeqeq: false */\n return obj != null && obj == obj.window;\n };\n\n /* jQuery */\n $.type = function (obj) {\n if (obj == null) {\n return obj + \"\";\n }\n\n return typeof obj === \"object\" || typeof obj === \"function\" ?\n class2type[toString.call(obj)] || \"object\" :\n typeof obj;\n };\n\n /* jQuery */\n $.isArray = Array.isArray || function (obj) {\n return $.type(obj) === \"array\";\n };\n\n /* jQuery */\n function isArraylike (obj) {\n var length = obj.length,\n type = $.type(obj);\n\n if (type === \"function\" || $.isWindow(obj)) {\n return false;\n }\n\n if (obj.nodeType === 1 && length) {\n return true;\n }\n\n return type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && (length - 1) in obj;\n }\n\n /***************\n $ Methods\n ***************/\n\n /* jQuery: Support removed for IE<9. */\n $.isPlainObject = function (obj) {\n var key;\n\n if (!obj || $.type(obj) !== \"object\" || obj.nodeType || $.isWindow(obj)) {\n return false;\n }\n\n try {\n if (obj.constructor &&\n !hasOwn.call(obj, \"constructor\") &&\n !hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\")) {\n return false;\n }\n } catch (e) {\n return false;\n }\n\n for (key in obj) {}\n\n return key === undefined || hasOwn.call(obj, key);\n };\n\n /* jQuery */\n $.each = function(obj, callback, args) {\n var value,\n i = 0,\n length = obj.length,\n isArray = isArraylike(obj);\n\n if (args) {\n if (isArray) {\n for (; i < length; i++) {\n value = callback.apply(obj[i], args);\n\n if (value === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n value = callback.apply(obj[i], args);\n\n if (value === false) {\n break;\n }\n }\n }\n\n } else {\n if (isArray) {\n for (; i < length; i++) {\n value = callback.call(obj[i], i, obj[i]);\n\n if (value === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n value = callback.call(obj[i], i, obj[i]);\n\n if (value === false) {\n break;\n }\n }\n }\n }\n\n return obj;\n };\n\n /* Custom */\n $.data = function (node, key, value) {\n /* $.getData() */\n if (value === undefined) {\n var id = node[$.expando],\n store = id && cache[id];\n\n if (key === undefined) {\n return store;\n } else if (store) {\n if (key in store) {\n return store[key];\n }\n }\n /* $.setData() */\n } else if (key !== undefined) {\n var id = node[$.expando] || (node[$.expando] = ++$.uuid);\n\n cache[id] = cache[id] || {};\n cache[id][key] = value;\n\n return value;\n }\n };\n\n /* Custom */\n $.removeData = function (node, keys) {\n var id = node[$.expando],\n store = id && cache[id];\n\n if (store) {\n if (!keys) {\n delete cache[id];\n } else {\n $.each(keys, function(_, key) {\n delete store[key];\n });\n }\n }\n };\n\n /* jQuery */\n $.extend = function () {\n var src, copyIsArray, copy, name, options, clone,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length,\n deep = false;\n\n if (typeof target === \"boolean\") {\n deep = target;\n\n target = arguments[i] || {};\n i++;\n }\n\n if (typeof target !== \"object\" && $.type(target) !== \"function\") {\n target = {};\n }\n\n if (i === length) {\n target = this;\n i--;\n }\n\n for (; i < length; i++) {\n if ((options = arguments[i]) != null) {\n for (name in options) {\n src = target[name];\n copy = options[name];\n\n if (target === copy) {\n continue;\n }\n\n if (deep && copy && ($.isPlainObject(copy) || (copyIsArray = $.isArray(copy)))) {\n if (copyIsArray) {\n copyIsArray = false;\n clone = src && $.isArray(src) ? src : [];\n\n } else {\n clone = src && $.isPlainObject(src) ? src : {};\n }\n\n target[name] = $.extend(deep, clone, copy);\n\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n\n return target;\n };\n\n /* jQuery 1.4.3 */\n $.queue = function (elem, type, data) {\n function $makeArray (arr, results) {\n var ret = results || [];\n\n if (arr != null) {\n if (isArraylike(Object(arr))) {\n /* $.merge */\n (function(first, second) {\n var len = +second.length,\n j = 0,\n i = first.length;\n\n while (j < len) {\n first[i++] = second[j++];\n }\n\n if (len !== len) {\n while (second[j] !== undefined) {\n first[i++] = second[j++];\n }\n }\n\n first.length = i;\n\n return first;\n })(ret, typeof arr === \"string\" ? [arr] : arr);\n } else {\n [].push.call(ret, arr);\n }\n }\n\n return ret;\n }\n\n if (!elem) {\n return;\n }\n\n type = (type || \"fx\") + \"queue\";\n\n var q = $.data(elem, type);\n\n if (!data) {\n return q || [];\n }\n\n if (!q || $.isArray(data)) {\n q = $.data(elem, type, $makeArray(data));\n } else {\n q.push(data);\n }\n\n return q;\n };\n\n /* jQuery 1.4.3 */\n $.dequeue = function (elems, type) {\n /* Custom: Embed element iteration. */\n $.each(elems.nodeType ? [ elems ] : elems, function(i, elem) {\n type = type || \"fx\";\n\n var queue = $.queue(elem, type),\n fn = queue.shift();\n\n if (fn === \"inprogress\") {\n fn = queue.shift();\n }\n\n if (fn) {\n if (type === \"fx\") {\n queue.unshift(\"inprogress\");\n }\n\n fn.call(elem, function() {\n $.dequeue(elem, type);\n });\n }\n });\n };\n\n /******************\n $.fn Methods\n ******************/\n\n /* jQuery */\n $.fn = $.prototype = {\n init: function (selector) {\n /* Just return the element wrapped inside an array; don't proceed with the actual jQuery node wrapping process. */\n if (selector.nodeType) {\n this[0] = selector;\n\n return this;\n } else {\n throw new Error(\"Not a DOM node.\");\n }\n },\n\n offset: function () {\n /* jQuery altered code: Dropped disconnected DOM node checking. */\n var box = this[0].getBoundingClientRect ? this[0].getBoundingClientRect() : { top: 0, left: 0 };\n\n return {\n top: box.top + (window.pageYOffset || document.scrollTop || 0) - (document.clientTop || 0),\n left: box.left + (window.pageXOffset || document.scrollLeft || 0) - (document.clientLeft || 0)\n };\n },\n\n position: function () {\n /* jQuery */\n function offsetParent() {\n var offsetParent = this.offsetParent || document;\n\n while (offsetParent && (!offsetParent.nodeType.toLowerCase === \"html\" && offsetParent.style.position === \"static\")) {\n offsetParent = offsetParent.offsetParent;\n }\n\n return offsetParent || document;\n }\n\n /* Zepto */\n var elem = this[0],\n offsetParent = offsetParent.apply(elem),\n offset = this.offset(),\n parentOffset = /^(?:body|html)$/i.test(offsetParent.nodeName) ? { top: 0, left: 0 } : $(offsetParent).offset()\n\n offset.top -= parseFloat(elem.style.marginTop) || 0;\n offset.left -= parseFloat(elem.style.marginLeft) || 0;\n\n if (offsetParent.style) {\n parentOffset.top += parseFloat(offsetParent.style.borderTopWidth) || 0\n parentOffset.left += parseFloat(offsetParent.style.borderLeftWidth) || 0\n }\n\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n };\n }\n };\n\n /**********************\n Private Variables\n **********************/\n\n /* For $.data() */\n var cache = {};\n $.expando = \"velocity\" + (new Date().getTime());\n $.uuid = 0;\n\n /* For $.queue() */\n var class2type = {},\n hasOwn = class2type.hasOwnProperty,\n toString = class2type.toString;\n\n var types = \"Boolean Number String Function Array Date RegExp Object Error\".split(\" \");\n for (var i = 0; i < types.length; i++) {\n class2type[\"[object \" + types[i] + \"]\"] = types[i].toLowerCase();\n }\n\n /* Makes $(node) possible, without having to call init. */\n $.fn.init.prototype = $.fn;\n\n /* Globalize Velocity onto the window, and assign its Utilities property. */\n window.Velocity = { Utilities: $ };\n})(window);\n\n/******************\n Velocity.js\n******************/\n\n;(function (factory) {\n /* CommonJS module. */\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\n module.exports = factory();\n /* AMD module. */\n } else if (typeof define === \"function\" && define.amd) {\n define(factory);\n /* Browser globals. */\n } else {\n factory();\n }\n}(function() {\nreturn function (global, window, document, undefined) {\n\n /***************\n Summary\n ***************/\n\n /*\n - CSS: CSS stack that works independently from the rest of Velocity.\n - animate(): Core animation method that iterates over the targeted elements and queues the incoming call onto each element individually.\n - Pre-Queueing: Prepare the element for animation by instantiating its data cache and processing the call's options.\n - Queueing: The logic that runs once the call has reached its point of execution in the element's $.queue() stack.\n Most logic is placed here to avoid risking it becoming stale (if the element's properties have changed).\n - Pushing: Consolidation of the tween data followed by its push onto the global in-progress calls container.\n - tick(): The single requestAnimationFrame loop responsible for tweening all in-progress calls.\n - completeCall(): Handles the cleanup process for each Velocity call.\n */\n\n /*********************\n Helper Functions\n *********************/\n\n /* IE detection. Gist: https://gist.github.com/julianshapiro/9098609 */\n var IE = (function() {\n if (document.documentMode) {\n return document.documentMode;\n } else {\n for (var i = 7; i > 4; i--) {\n var div = document.createElement(\"div\");\n\n div.innerHTML = \"<!--[if IE \" + i + \"]><span></span><![endif]-->\";\n\n if (div.getElementsByTagName(\"span\").length) {\n div = null;\n\n return i;\n }\n }\n }\n\n return undefined;\n })();\n\n /* rAF shim. Gist: https://gist.github.com/julianshapiro/9497513 */\n var rAFShim = (function() {\n var timeLast = 0;\n\n return window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback) {\n var timeCurrent = (new Date()).getTime(),\n timeDelta;\n\n /* Dynamically set delay on a per-tick basis to match 60fps. */\n /* Technique by Erik Moller. MIT license: https://gist.github.com/paulirish/1579671 */\n timeDelta = Math.max(0, 16 - (timeCurrent - timeLast));\n timeLast = timeCurrent + timeDelta;\n\n return setTimeout(function() { callback(timeCurrent + timeDelta); }, timeDelta);\n };\n })();\n\n /* Array compacting. Copyright Lo-Dash. MIT License: https://github.com/lodash/lodash/blob/master/LICENSE.txt */\n function compactSparseArray (array) {\n var index = -1,\n length = array ? array.length : 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n\n if (value) {\n result.push(value);\n }\n }\n\n return result;\n }\n\n function sanitizeElements (elements) {\n /* Unwrap jQuery/Zepto objects. */\n if (Type.isWrapped(elements)) {\n elements = [].slice.call(elements);\n /* Wrap a single element in an array so that $.each() can iterate with the element instead of its node's children. */\n } else if (Type.isNode(elements)) {\n elements = [ elements ];\n }\n\n return elements;\n }\n\n var Type = {\n isString: function (variable) {\n return (typeof variable === \"string\");\n },\n isArray: Array.isArray || function (variable) {\n return Object.prototype.toString.call(variable) === \"[object Array]\";\n },\n isFunction: function (variable) {\n return Object.prototype.toString.call(variable) === \"[object Function]\";\n },\n isNode: function (variable) {\n return variable && variable.nodeType;\n },\n /* Copyright Martin Bohm. MIT License: https://gist.github.com/Tomalak/818a78a226a0738eaade */\n isNodeList: function (variable) {\n return typeof variable === \"object\" &&\n /^\\[object (HTMLCollection|NodeList|Object)\\]$/.test(Object.prototype.toString.call(variable)) &&\n variable.length !== undefined &&\n (variable.length === 0 || (typeof variable[0] === \"object\" && variable[0].nodeType > 0));\n },\n /* Determine if variable is a wrapped jQuery or Zepto element. */\n isWrapped: function (variable) {\n return variable && (variable.jquery || (window.Zepto && window.Zepto.zepto.isZ(variable)));\n },\n isSVG: function (variable) {\n return window.SVGElement && (variable instanceof window.SVGElement);\n },\n isEmptyObject: function (variable) {\n for (var name in variable) {\n return false;\n }\n\n return true;\n }\n };\n\n /*****************\n Dependencies\n *****************/\n\n var $,\n isJQuery = false;\n\n if (global.fn && global.fn.jquery) {\n $ = global;\n isJQuery = true;\n } else {\n $ = window.Velocity.Utilities;\n }\n\n if (IE <= 8 && !isJQuery) {\n throw new Error(\"Velocity: IE8 and below require jQuery to be loaded before Velocity.\");\n } else if (IE <= 7) {\n /* Revert to jQuery's $.animate(), and lose Velocity's extra features. */\n jQuery.fn.velocity = jQuery.fn.animate;\n\n /* Now that $.fn.velocity is aliased, abort this Velocity declaration. */\n return;\n }\n\n /*****************\n Constants\n *****************/\n\n var DURATION_DEFAULT = 400,\n EASING_DEFAULT = \"swing\";\n\n /*************\n State\n *************/\n\n var Velocity = {\n /* Container for page-wide Velocity state data. */\n State: {\n /* Detect mobile devices to determine if mobileHA should be turned on. */\n isMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),\n /* The mobileHA option's behavior changes on older Android devices (Gingerbread, versions 2.3.3-2.3.7). */\n isAndroid: /Android/i.test(navigator.userAgent),\n isGingerbread: /Android 2\\.3\\.[3-7]/i.test(navigator.userAgent),\n isChrome: window.chrome,\n isFirefox: /Firefox/i.test(navigator.userAgent),\n /* Create a cached element for re-use when checking for CSS property prefixes. */\n prefixElement: document.createElement(\"div\"),\n /* Cache every prefix match to avoid repeating lookups. */\n prefixMatches: {},\n /* Cache the anchor used for animating window scrolling. */\n scrollAnchor: null,\n /* Cache the browser-specific property names associated with the scroll anchor. */\n scrollPropertyLeft: null,\n scrollPropertyTop: null,\n /* Keep track of whether our RAF tick is running. */\n isTicking: false,\n /* Container for every in-progress call to Velocity. */\n calls: []\n },\n /* Velocity's custom CSS stack. Made global for unit testing. */\n CSS: { /* Defined below. */ },\n /* A shim of the jQuery utility functions used by Velocity -- provided by Velocity's optional jQuery shim. */\n Utilities: $,\n /* Container for the user's custom animation redirects that are referenced by name in place of the properties map argument. */\n Redirects: { /* Manually registered by the user. */ },\n Easings: { /* Defined below. */ },\n /* Attempt to use ES6 Promises by default. Users can override this with a third-party promises library. */\n Promise: window.Promise,\n /* Velocity option defaults, which can be overriden by the user. */\n defaults: {\n queue: \"\",\n duration: DURATION_DEFAULT,\n easing: EASING_DEFAULT,\n begin: undefined,\n complete: undefined,\n progress: undefined,\n display: undefined,\n visibility: undefined,\n loop: false,\n delay: false,\n mobileHA: true,\n /* Advanced: Set to false to prevent property values from being cached between consecutive Velocity-initiated chain calls. */\n _cacheValues: true\n },\n /* A design goal of Velocity is to cache data wherever possible in order to avoid DOM requerying. Accordingly, each element has a data cache. */\n init: function (element) {\n $.data(element, \"velocity\", {\n /* Store whether this is an SVG element, since its properties are retrieved and updated differently than standard HTML elements. */\n isSVG: Type.isSVG(element),\n /* Keep track of whether the element is currently being animated by Velocity.\n This is used to ensure that property values are not transferred between non-consecutive (stale) calls. */\n isAnimating: false,\n /* A reference to the element's live computedStyle object. Learn more here: https://developer.mozilla.org/en/docs/Web/API/window.getComputedStyle */\n computedStyle: null,\n /* Tween data is cached for each animation on the element so that data can be passed across calls --\n in particular, end values are used as subsequent start values in consecutive Velocity calls. */\n tweensContainer: null,\n /* The full root property values of each CSS hook being animated on this element are cached so that:\n 1) Concurrently-animating hooks sharing the same root can have their root values' merged into one while tweening.\n 2) Post-hook-injection root values can be transferred over to consecutively chained Velocity calls as starting root values. */\n rootPropertyValueCache: {},\n /* A cache for transform updates, which must be manually flushed via CSS.flushTransformCache(). */\n transformCache: {}\n });\n },\n /* A parallel to jQuery's $.css(), used for getting/setting Velocity's hooked CSS properties. */\n hook: null, /* Defined below. */\n /* Velocity-wide animation time remapping for testing purposes. */\n mock: false,\n version: { major: 1, minor: 2, patch: 2 },\n /* Set to 1 or 2 (most verbose) to output debug info to console. */\n debug: false\n };\n\n /* Retrieve the appropriate scroll anchor and property name for the browser: https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY */\n if (window.pageYOffset !== undefined) {\n Velocity.State.scrollAnchor = window;\n Velocity.State.scrollPropertyLeft = \"pageXOffset\";\n Velocity.State.scrollPropertyTop = \"pageYOffset\";\n } else {\n Velocity.State.scrollAnchor = document.documentElement || document.body.parentNode || document.body;\n Velocity.State.scrollPropertyLeft = \"scrollLeft\";\n Velocity.State.scrollPropertyTop = \"scrollTop\";\n }\n\n /* Shorthand alias for jQuery's $.data() utility. */\n function Data (element) {\n /* Hardcode a reference to the plugin name. */\n var response = $.data(element, \"velocity\");\n\n /* jQuery <=1.4.2 returns null instead of undefined when no match is found. We normalize this behavior. */\n return response === null ? undefined : response;\n };\n\n /**************\n Easing\n **************/\n\n /* Step easing generator. */\n function generateStep (steps) {\n return function (p) {\n return Math.round(p * steps) * (1 / steps);\n };\n }\n\n /* Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */\n function generateBezier (mX1, mY1, mX2, mY2) {\n var NEWTON_ITERATIONS = 4,\n NEWTON_MIN_SLOPE = 0.001,\n SUBDIVISION_PRECISION = 0.0000001,\n SUBDIVISION_MAX_ITERATIONS = 10,\n kSplineTableSize = 11,\n kSampleStepSize = 1.0 / (kSplineTableSize - 1.0),\n float32ArraySupported = \"Float32Array\" in window;\n\n /* Must contain four arguments. */\n if (arguments.length !== 4) {\n return false;\n }\n\n /* Arguments must be numbers. */\n for (var i = 0; i < 4; ++i) {\n if (typeof arguments[i] !== \"number\" || isNaN(arguments[i]) || !isFinite(arguments[i])) {\n return false;\n }\n }\n\n /* X values must be in the [0, 1] range. */\n mX1 = Math.min(mX1, 1);\n mX2 = Math.min(mX2, 1);\n mX1 = Math.max(mX1, 0);\n mX2 = Math.max(mX2, 0);\n\n var mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n\n function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\n function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\n function C (aA1) { return 3.0 * aA1; }\n\n function calcBezier (aT, aA1, aA2) {\n return ((A(aA1, aA2)*aT + B(aA1, aA2))*aT + C(aA1))*aT;\n }\n\n function getSlope (aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2)*aT*aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n\n function newtonRaphsonIterate (aX, aGuessT) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n\n if (currentSlope === 0.0) return aGuessT;\n\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n }\n\n function calcSampleValues () {\n for (var i = 0; i < kSplineTableSize; ++i) {\n mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function binarySubdivide (aX, aA, aB) {\n var currentX, currentT, i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n return currentT;\n }\n\n function getTForX (aX) {\n var intervalStart = 0.0,\n currentSample = 1,\n lastSample = kSplineTableSize - 1;\n\n for (; currentSample != lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample+1] - mSampleValues[currentSample]),\n guessForT = intervalStart + dist * kSampleStepSize,\n initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT);\n } else if (initialSlope == 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize);\n }\n }\n\n var _precomputed = false;\n\n function precompute() {\n _precomputed = true;\n if (mX1 != mY1 || mX2 != mY2) calcSampleValues();\n }\n\n var f = function (aX) {\n if (!_precomputed) precompute();\n if (mX1 === mY1 && mX2 === mY2) return aX;\n if (aX === 0) return 0;\n if (aX === 1) return 1;\n\n return calcBezier(getTForX(aX), mY1, mY2);\n };\n\n f.getControlPoints = function() { return [{ x: mX1, y: mY1 }, { x: mX2, y: mY2 }]; };\n\n var str = \"generateBezier(\" + [mX1, mY1, mX2, mY2] + \")\";\n f.toString = function () { return str; };\n\n return f;\n }\n\n /* Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */\n /* Given a tension, friction, and duration, a simulation at 60FPS will first run without a defined duration in order to calculate the full path. A second pass\n then adjusts the time delta -- using the relation between actual time and duration -- to calculate the path for the duration-constrained animation. */\n var generateSpringRK4 = (function () {\n function springAccelerationForState (state) {\n return (-state.tension * state.x) - (state.friction * state.v);\n }\n\n function springEvaluateStateWithDerivative (initialState, dt, derivative) {\n var state = {\n x: initialState.x + derivative.dx * dt,\n v: initialState.v + derivative.dv * dt,\n tension: initialState.tension,\n friction: initialState.friction\n };\n\n return { dx: state.v, dv: springAccelerationForState(state) };\n }\n\n function springIntegrateState (state, dt) {\n var a = {\n dx: state.v,\n dv: springAccelerationForState(state)\n },\n b = springEvaluateStateWithDerivative(state, dt * 0.5, a),\n c = springEvaluateStateWithDerivative(state, dt * 0.5, b),\n d = springEvaluateStateWithDerivative(state, dt, c),\n dxdt = 1.0 / 6.0 * (a.dx + 2.0 * (b.dx + c.dx) + d.dx),\n dvdt = 1.0 / 6.0 * (a.dv + 2.0 * (b.dv + c.dv) + d.dv);\n\n state.x = state.x + dxdt * dt;\n state.v = state.v + dvdt * dt;\n\n return state;\n }\n\n return function springRK4Factory (tension, friction, duration) {\n\n var initState = {\n x: -1,\n v: 0,\n tension: null,\n friction: null\n },\n path = [0],\n time_lapsed = 0,\n tolerance = 1 / 10000,\n DT = 16 / 1000,\n have_duration, dt, last_state;\n\n tension = parseFloat(tension) || 500;\n friction = parseFloat(friction) || 20;\n duration = duration || null;\n\n initState.tension = tension;\n initState.friction = friction;\n\n have_duration = duration !== null;\n\n /* Calculate the actual time it takes for this animation to complete with the provided conditions. */\n if (have_duration) {\n /* Run the simulation without a duration. */\n time_lapsed = springRK4Factory(tension, friction);\n /* Compute the adjusted time delta. */\n dt = time_lapsed / duration * DT;\n } else {\n dt = DT;\n }\n\n while (true) {\n /* Next/step function .*/\n last_state = springIntegrateState(last_state || initState, dt);\n /* Store the position. */\n path.push(1 + last_state.x);\n time_lapsed += 16;\n /* If the change threshold is reached, break. */\n if (!(Math.abs(last_state.x) > tolerance && Math.abs(last_state.v) > tolerance)) {\n break;\n }\n }\n\n /* If duration is not defined, return the actual time required for completing this animation. Otherwise, return a closure that holds the\n computed path and returns a snapshot of the position according to a given percentComplete. */\n return !have_duration ? time_lapsed : function(percentComplete) { return path[ (percentComplete * (path.length - 1)) | 0 ]; };\n };\n }());\n\n /* jQuery easings. */\n Velocity.Easings = {\n linear: function(p) { return p; },\n swing: function(p) { return 0.5 - Math.cos( p * Math.PI ) / 2 },\n /* Bonus \"spring\" easing, which is a less exaggerated version of easeInOutElastic. */\n spring: function(p) { return 1 - (Math.cos(p * 4.5 * Math.PI) * Math.exp(-p * 6)); }\n };\n\n /* CSS3 and Robert Penner easings. */\n $.each(\n [\n [ \"ease\", [ 0.25, 0.1, 0.25, 1.0 ] ],\n [ \"ease-in\", [ 0.42, 0.0, 1.00, 1.0 ] ],\n [ \"ease-out\", [ 0.00, 0.0, 0.58, 1.0 ] ],\n [ \"ease-in-out\", [ 0.42, 0.0, 0.58, 1.0 ] ],\n [ \"easeInSine\", [ 0.47, 0, 0.745, 0.715 ] ],\n [ \"easeOutSine\", [ 0.39, 0.575, 0.565, 1 ] ],\n [ \"easeInOutSine\", [ 0.445, 0.05, 0.55, 0.95 ] ],\n [ \"easeInQuad\", [ 0.55, 0.085, 0.68, 0.53 ] ],\n [ \"easeOutQuad\", [ 0.25, 0.46, 0.45, 0.94 ] ],\n [ \"easeInOutQuad\", [ 0.455, 0.03, 0.515, 0.955 ] ],\n [ \"easeInCubic\", [ 0.55, 0.055, 0.675, 0.19 ] ],\n [ \"easeOutCubic\", [ 0.215, 0.61, 0.355, 1 ] ],\n [ \"easeInOutCubic\", [ 0.645, 0.045, 0.355, 1 ] ],\n [ \"easeInQuart\", [ 0.895, 0.03, 0.685, 0.22 ] ],\n [ \"easeOutQuart\", [ 0.165, 0.84, 0.44, 1 ] ],\n [ \"easeInOutQuart\", [ 0.77, 0, 0.175, 1 ] ],\n [ \"easeInQuint\", [ 0.755, 0.05, 0.855, 0.06 ] ],\n [ \"easeOutQuint\", [ 0.23, 1, 0.32, 1 ] ],\n [ \"easeInOutQuint\", [ 0.86, 0, 0.07, 1 ] ],\n [ \"easeInExpo\", [ 0.95, 0.05, 0.795, 0.035 ] ],\n [ \"easeOutExpo\", [ 0.19, 1, 0.22, 1 ] ],\n [ \"easeInOutExpo\", [ 1, 0, 0, 1 ] ],\n [ \"easeInCirc\", [ 0.6, 0.04, 0.98, 0.335 ] ],\n [ \"easeOutCirc\", [ 0.075, 0.82, 0.165, 1 ] ],\n [ \"easeInOutCirc\", [ 0.785, 0.135, 0.15, 0.86 ] ]\n ], function(i, easingArray) {\n Velocity.Easings[easingArray[0]] = generateBezier.apply(null, easingArray[1]);\n });\n\n /* Determine the appropriate easing type given an easing input. */\n function getEasing(value, duration) {\n var easing = value;\n\n /* The easing option can either be a string that references a pre-registered easing,\n or it can be a two-/four-item array of integers to be converted into a bezier/spring function. */\n if (Type.isString(value)) {\n /* Ensure that the easing has been assigned to jQuery's Velocity.Easings object. */\n if (!Velocity.Easings[value]) {\n easing = false;\n }\n } else if (Type.isArray(value) && value.length === 1) {\n easing = generateStep.apply(null, value);\n } else if (Type.isArray(value) && value.length === 2) {\n /* springRK4 must be passed the animation's duration. */\n /* Note: If the springRK4 array contains non-numbers, generateSpringRK4() returns an easing\n function generated with default tension and friction values. */\n easing = generateSpringRK4.apply(null, value.concat([ duration ]));\n } else if (Type.isArray(value) && value.length === 4) {\n /* Note: If the bezier array contains non-numbers, generateBezier() returns false. */\n easing = generateBezier.apply(null, value);\n } else {\n easing = false;\n }\n\n /* Revert to the Velocity-wide default easing type, or fall back to \"swing\" (which is also jQuery's default)\n if the Velocity-wide default has been incorrectly modified. */\n if (easing === false) {\n if (Velocity.Easings[Velocity.defaults.easing]) {\n easing = Velocity.defaults.easing;\n } else {\n easing = EASING_DEFAULT;\n }\n }\n\n return easing;\n }\n\n /*****************\n CSS Stack\n *****************/\n\n /* The CSS object is a highly condensed and performant CSS stack that fully replaces jQuery's.\n It handles the validation, getting, and setting of both standard CSS properties and CSS property hooks. */\n /* Note: A \"CSS\" shorthand is aliased so that our code is easier to read. */\n var CSS = Velocity.CSS = {\n\n /*************\n RegEx\n *************/\n\n RegEx: {\n isHex: /^#([A-f\\d]{3}){1,2}$/i,\n /* Unwrap a property value's surrounding text, e.g. \"rgba(4, 3, 2, 1)\" ==> \"4, 3, 2, 1\" and \"rect(4px 3px 2px 1px)\" ==> \"4px 3px 2px 1px\". */\n valueUnwrap: /^[A-z]+\\((.*)\\)$/i,\n wrappedValueAlreadyExtracted: /[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,\n /* Split a multi-value property into an array of subvalues, e.g. \"rgba(4, 3, 2, 1) 4px 3px 2px 1px\" ==> [ \"rgba(4, 3, 2, 1)\", \"4px\", \"3px\", \"2px\", \"1px\" ]. */\n valueSplit: /([A-z]+\\(.+\\))|(([A-z0-9#-.]+?)(?=\\s|$))/ig\n },\n\n /************\n Lists\n ************/\n\n Lists: {\n colors: [ \"fill\", \"stroke\", \"stopColor\", \"color\", \"backgroundColor\", \"borderColor\", \"borderTopColor\", \"borderRightColor\", \"borderBottomColor\", \"borderLeftColor\", \"outlineColor\" ],\n transformsBase: [ \"translateX\", \"translateY\", \"scale\", \"scaleX\", \"scaleY\", \"skewX\", \"skewY\", \"rotateZ\" ],\n transforms3D: [ \"transformPerspective\", \"translateZ\", \"scaleZ\", \"rotateX\", \"rotateY\" ]\n },\n\n /************\n Hooks\n ************/\n\n /* Hooks allow a subproperty (e.g. \"boxShadowBlur\") of a compound-value CSS property\n (e.g. \"boxShadow: X Y Blur Spread Color\") to be animated as if it were a discrete property. */\n /* Note: Beyond enabling fine-grained property animation, hooking is necessary since Velocity only\n tweens properties with single numeric values; unlike CSS transitions, Velocity does not interpolate compound-values. */\n Hooks: {\n /********************\n Registration\n ********************/\n\n /* Templates are a concise way of indicating which subproperties must be individually registered for each compound-value CSS property. */\n /* Each template consists of the compound-value's base name, its constituent subproperty names, and those subproperties' default values. */\n templates: {\n \"textShadow\": [ \"Color X Y Blur\", \"black 0px 0px 0px\" ],\n \"boxShadow\": [ \"Color X Y Blur Spread\", \"black 0px 0px 0px 0px\" ],\n \"clip\": [ \"Top Right Bottom Left\", \"0px 0px 0px 0px\" ],\n \"backgroundPosition\": [ \"X Y\", \"0% 0%\" ],\n \"transformOrigin\": [ \"X Y Z\", \"50% 50% 0px\" ],\n \"perspectiveOrigin\": [ \"X Y\", \"50% 50%\" ]\n },\n\n /* A \"registered\" hook is one that has been converted from its template form into a live,\n tweenable property. It contains data to associate it with its root property. */\n registered: {\n /* Note: A registered hook looks like this ==> textShadowBlur: [ \"textShadow\", 3 ],\n which consists of the subproperty's name, the associated root property's name,\n and the subproperty's position in the root's value. */\n },\n /* Convert the templates into individual hooks then append them to the registered object above. */\n register: function () {\n /* Color hooks registration: Colors are defaulted to white -- as opposed to black -- since colors that are\n currently set to \"transparent\" default to their respective template below when color-animated,\n and white is typically a closer match to transparent than black is. An exception is made for text (\"color\"),\n which is almost always set closer to black than white. */\n for (var i = 0; i < CSS.Lists.colors.length; i++) {\n var rgbComponents = (CSS.Lists.colors[i] === \"color\") ? \"0 0 0 1\" : \"255 255 255 1\";\n CSS.Hooks.templates[CSS.Lists.colors[i]] = [ \"Red Green Blue Alpha\", rgbComponents ];\n }\n\n var rootProperty,\n hookTemplate,\n hookNames;\n\n /* In IE, color values inside compound-value properties are positioned at the end the value instead of at the beginning.\n Thus, we re-arrange the templates accordingly. */\n if (IE) {\n for (rootProperty in CSS.Hooks.templates) {\n hookTemplate = CSS.Hooks.templates[rootProperty];\n hookNames = hookTemplate[0].split(\" \");\n\n var defaultValues = hookTemplate[1].match(CSS.RegEx.valueSplit);\n\n if (hookNames[0] === \"Color\") {\n /* Reposition both the hook's name and its default value to the end of their respective strings. */\n hookNames.push(hookNames.shift());\n defaultValues.push(defaultValues.shift());\n\n /* Replace the existing template for the hook's root property. */\n CSS.Hooks.templates[rootProperty] = [ hookNames.join(\" \"), defaultValues.join(\" \") ];\n }\n }\n }\n\n /* Hook registration. */\n for (rootProperty in CSS.Hooks.templates) {\n hookTemplate = CSS.Hooks.templates[rootProperty];\n hookNames = hookTemplate[0].split(\" \");\n\n for (var i in hookNames) {\n var fullHookName = rootProperty + hookNames[i],\n hookPosition = i;\n\n /* For each hook, register its full name (e.g. textShadowBlur) with its root property (e.g. textShadow)\n and the hook's position in its template's default value string. */\n CSS.Hooks.registered[fullHookName] = [ rootProperty, hookPosition ];\n }\n }\n },\n\n /*****************************\n Injection and Extraction\n *****************************/\n\n /* Look up the root property associated with the hook (e.g. return \"textShadow\" for \"textShadowBlur\"). */\n /* Since a hook cannot be set directly (the browser won't recognize it), style updating for hooks is routed through the hook's root property. */\n getRoot: function (property) {\n var hookData = CSS.Hooks.registered[property];\n\n if (hookData) {\n return hookData[0];\n } else {\n /* If there was no hook match, return the property name untouched. */\n return property;\n }\n },\n /* Convert any rootPropertyValue, null or otherwise, into a space-delimited list of hook values so that\n the targeted hook can be injected or extracted at its standard position. */\n cleanRootPropertyValue: function(rootProperty, rootPropertyValue) {\n /* If the rootPropertyValue is wrapped with \"rgb()\", \"clip()\", etc., remove the wrapping to normalize the value before manipulation. */\n if (CSS.RegEx.valueUnwrap.test(rootPropertyValue)) {\n rootPropertyValue = rootPropertyValue.match(CSS.RegEx.valueUnwrap)[1];\n }\n\n /* If rootPropertyValue is a CSS null-value (from which there's inherently no hook value to extract),\n default to the root's default value as defined in CSS.Hooks.templates. */\n /* Note: CSS null-values include \"none\", \"auto\", and \"transparent\". They must be converted into their\n zero-values (e.g. textShadow: \"none\" ==> textShadow: \"0px 0px 0px black\") for hook manipulation to proceed. */\n if (CSS.Values.isCSSNullValue(rootPropertyValue)) {\n rootPropertyValue = CSS.Hooks.templates[rootProperty][1];\n }\n\n return rootPropertyValue;\n },\n /* Extracted the hook's value from its root property's value. This is used to get the starting value of an animating hook. */\n extractValue: function (fullHookName, rootPropertyValue) {\n var hookData = CSS.Hooks.registered[fullHookName];\n\n if (hookData) {\n var hookRoot = hookData[0],\n hookPosition = hookData[1];\n\n rootPropertyValue = CSS.Hooks.cleanRootPropertyValue(hookRoot, rootPropertyValue);\n\n /* Split rootPropertyValue into its constituent hook values then grab the desired hook at its standard position. */\n return rootPropertyValue.toString().match(CSS.RegEx.valueSplit)[hookPosition];\n } else {\n /* If the provided fullHookName isn't a registered hook, return the rootPropertyValue that was passed in. */\n return rootPropertyValue;\n }\n },\n /* Inject the hook's value into its root property's value. This is used to piece back together the root property\n once Velocity has updated one of its individually hooked values through tweening. */\n injectValue: function (fullHookName, hookValue, rootPropertyValue) {\n var hookData = CSS.Hooks.registered[fullHookName];\n\n if (hookData) {\n var hookRoot = hookData[0],\n hookPosition = hookData[1],\n rootPropertyValueParts,\n rootPropertyValueUpdated;\n\n rootPropertyValue = CSS.Hooks.cleanRootPropertyValue(hookRoot, rootPropertyValue);\n\n /* Split rootPropertyValue into its individual hook values, replace the targeted value with hookValue,\n then reconstruct the rootPropertyValue string. */\n rootPropertyValueParts = rootPropertyValue.toString().match(CSS.RegEx.valueSplit);\n rootPropertyValueParts[hookPosition] = hookValue;\n rootPropertyValueUpdated = rootPropertyValueParts.join(\" \");\n\n return rootPropertyValueUpdated;\n } else {\n /* If the provided fullHookName isn't a registered hook, return the rootPropertyValue that was passed in. */\n return rootPropertyValue;\n }\n }\n },\n\n /*******************\n Normalizations\n *******************/\n\n /* Normalizations standardize CSS property manipulation by pollyfilling browser-specific implementations (e.g. opacity)\n and reformatting special properties (e.g. clip, rgba) to look like standard ones. */\n Normalizations: {\n /* Normalizations are passed a normalization target (either the property's name, its extracted value, or its injected value),\n the targeted element (which may need to be queried), and the targeted property value. */\n registered: {\n clip: function (type, element, propertyValue) {\n switch (type) {\n case \"name\":\n return \"clip\";\n /* Clip needs to be unwrapped and stripped of its commas during extraction. */\n case \"extract\":\n var extracted;\n\n /* If Velocity also extracted this value, skip extraction. */\n if (CSS.RegEx.wrappedValueAlreadyExtracted.test(propertyValue)) {\n extracted = propertyValue;\n } else {\n /* Remove the \"rect()\" wrapper. */\n extracted = propertyValue.toString().match(CSS.RegEx.valueUnwrap);\n\n /* Strip off commas. */\n extracted = extracted ? extracted[1].replace(/,(\\s+)?/g, \" \") : propertyValue;\n }\n\n return extracted;\n /* Clip needs to be re-wrapped during injection. */\n case \"inject\":\n return \"rect(\" + propertyValue + \")\";\n }\n },\n\n blur: function(type, element, propertyValue) {\n switch (type) {\n case \"name\":\n return Velocity.State.isFirefox ? \"filter\" : \"-webkit-filter\";\n case \"extract\":\n var extracted = parseFloat(propertyValue);\n\n /* If extracted is NaN, meaning the value isn't already extracted. */\n if (!(extracted || extracted === 0)) {\n var blurComponent = propertyValue.toString().match(/blur\\(([0-9]+[A-z]+)\\)/i);\n\n /* If the filter string had a blur component, return just the blur value and unit type. */\n if (blurComponent) {\n extracted = blurComponent[1];\n /* If the component doesn't exist, default blur to 0. */\n } else {\n extracted = 0;\n }\n }\n\n return extracted;\n /* Blur needs to be re-wrapped during injection. */\n case \"inject\":\n /* For the blur effect to be fully de-applied, it needs to be set to \"none\" instead of 0. */\n if (!parseFloat(propertyValue)) {\n return \"none\";\n } else {\n return \"blur(\" + propertyValue + \")\";\n }\n }\n },\n\n /* <=IE8 do not support the standard opacity property. They use filter:alpha(opacity=INT) instead. */\n opacity: function (type, element, propertyValue) {\n if (IE <= 8) {\n switch (type) {\n case \"name\":\n return \"filter\";\n case \"extract\":\n /* <=IE8 return a \"filter\" value of \"alpha(opacity=\\d{1,3})\".\n Extract the value and convert it to a decimal value to match the standard CSS opacity property's formatting. */\n var extracted = propertyValue.toString().match(/alpha\\(opacity=(.*)\\)/i);\n\n if (extracted) {\n /* Convert to decimal value. */\n propertyValue = extracted[1] / 100;\n } else {\n /* When extracting opacity, default to 1 since a null value means opacity hasn't been set. */\n propertyValue = 1;\n }\n\n return propertyValue;\n case \"inject\":\n /* Opacified elements are required to have their zoom property set to a non-zero value. */\n element.style.zoom = 1;\n\n /* Setting the filter property on elements with certain font property combinations can result in a\n highly unappealing ultra-bolding effect. There's no way to remedy this throughout a tween, but dropping the\n value altogether (when opacity hits 1) at leasts ensures that the glitch is gone post-tweening. */\n if (parseFloat(propertyValue) >= 1) {\n return \"\";\n } else {\n /* As per the filter property's spec, convert the decimal value to a whole number and wrap the value. */\n return \"alpha(opacity=\" + parseInt(parseFloat(propertyValue) * 100, 10) + \")\";\n }\n }\n /* With all other browsers, normalization is not required; return the same values that were passed in. */\n } else {\n switch (type) {\n case \"name\":\n return \"opacity\";\n case \"extract\":\n return propertyValue;\n case \"inject\":\n return propertyValue;\n }\n }\n }\n },\n\n /*****************************\n Batched Registrations\n *****************************/\n\n /* Note: Batched normalizations extend the CSS.Normalizations.registered object. */\n register: function () {\n\n /*****************\n Transforms\n *****************/\n\n /* Transforms are the subproperties contained by the CSS \"transform\" property. Transforms must undergo normalization\n so that they can be referenced in a properties map by their individual names. */\n /* Note: When transforms are \"set\", they are actually assigned to a per-element transformCache. When all transform\n setting is complete complete, CSS.flushTransformCache() must be manually called to flush the values to the DOM.\n Transform setting is batched in this way to improve performance: the transform style only needs to be updated\n once when multiple transform subproperties are being animated simultaneously. */\n /* Note: IE9 and Android Gingerbread have support for 2D -- but not 3D -- transforms. Since animating unsupported\n transform properties results in the browser ignoring the *entire* transform string, we prevent these 3D values\n from being normalized for these browsers so that tweening skips these properties altogether\n (since it will ignore them as being unsupported by the browser.) */\n if (!(IE <= 9) && !Velocity.State.isGingerbread) {\n /* Note: Since the standalone CSS \"perspective\" property and the CSS transform \"perspective\" subproperty\n share the same name, the latter is given a unique token within Velocity: \"transformPerspective\". */\n CSS.Lists.transformsBase = CSS.Lists.transformsBase.concat(CSS.Lists.transforms3D);\n }\n\n for (var i = 0; i < CSS.Lists.transformsBase.length; i++) {\n /* Wrap the dynamically generated normalization function in a new scope so that transformName's value is\n paired with its respective function. (Otherwise, all functions would take the final for loop's transformName.) */\n (function() {\n var transformName = CSS.Lists.transformsBase[i];\n\n CSS.Normalizations.registered[transformName] = function (type, element, propertyValue) {\n switch (type) {\n /* The normalized property name is the parent \"transform\" property -- the property that is actually set in CSS. */\n case \"name\":\n return \"transform\";\n /* Transform values are cached onto a per-element transformCache object. */\n case \"extract\":\n /* If this transform has yet to be assigned a value, return its null value. */\n if (Data(element) === undefined || Data(element).transformCache[transformName] === undefined) {\n /* Scale CSS.Lists.transformsBase default to 1 whereas all other transform properties default to 0. */\n return /^scale/i.test(transformName) ? 1 : 0;\n /* When transform values are set, they are wrapped in parentheses as per the CSS spec.\n Thus, when extracting their values (for tween calculations), we strip off the parentheses. */\n } else {\n return Data(element).transformCache[transformName].replace(/[()]/g, \"\");\n }\n case \"inject\":\n var invalid = false;\n\n /* If an individual transform property contains an unsupported unit type, the browser ignores the *entire* transform property.\n Thus, protect users from themselves by skipping setting for transform values supplied with invalid unit types. */\n /* Switch on the base transform type; ignore the axis by removing the last letter from the transform's name. */\n switch (transformName.substr(0, transformName.length - 1)) {\n /* Whitelist unit types for each transform. */\n case \"translate\":\n invalid = !/(%|px|em|rem|vw|vh|\\d)$/i.test(propertyValue);\n break;\n /* Since an axis-free \"scale\" property is supported as well, a little hack is used here to detect it by chopping off its last letter. */\n case \"scal\":\n case \"scale\":\n /* Chrome on Android has a bug in which scaled elements blur if their initial scale\n value is below 1 (which can happen with forcefeeding). Thus, we detect a yet-unset scale property\n and ensure that its first value is always 1. More info: http://stackoverflow.com/questions/10417890/css3-animations-with-transform-causes-blurred-elements-on-webkit/10417962#10417962 */\n if (Velocity.State.isAndroid && Data(element).transformCache[transformName] === undefined && propertyValue < 1) {\n propertyValue = 1;\n }\n\n invalid = !/(\\d)$/i.test(propertyValue);\n break;\n case \"skew\":\n invalid = !/(deg|\\d)$/i.test(propertyValue);\n break;\n case \"rotate\":\n invalid = !/(deg|\\d)$/i.test(propertyValue);\n break;\n }\n\n if (!invalid) {\n /* As per the CSS spec, wrap the value in parentheses. */\n Data(element).transformCache[transformName] = \"(\" + propertyValue + \")\";\n }\n\n /* Although the value is set on the transformCache object, return the newly-updated value for the calling code to process as normal. */\n return Data(element).transformCache[transformName];\n }\n };\n })();\n }\n\n /*************\n Colors\n *************/\n\n /* Since Velocity only animates a single numeric value per property, color animation is achieved by hooking the individual RGBA components of CSS color properties.\n Accordingly, color values must be normalized (e.g. \"#ff0000\", \"red\", and \"rgb(255, 0, 0)\" ==> \"255 0 0 1\") so that their components can be injected/extracted by CSS.Hooks logic. */\n for (var i = 0; i < CSS.Lists.colors.length; i++) {\n /* Wrap the dynamically generated normalization function in a new scope so that colorName's value is paired with its respective function.\n (Otherwise, all functions would take the final for loop's colorName.) */\n (function () {\n var colorName = CSS.Lists.colors[i];\n\n /* Note: In IE<=8, which support rgb but not rgba, color properties are reverted to rgb by stripping off the alpha component. */\n CSS.Normalizations.registered[colorName] = function(type, element, propertyValue) {\n switch (type) {\n case \"name\":\n return colorName;\n /* Convert all color values into the rgb format. (Old IE can return hex values and color names instead of rgb/rgba.) */\n case \"extract\":\n var extracted;\n\n /* If the color is already in its hookable form (e.g. \"255 255 255 1\") due to having been previously extracted, skip extraction. */\n if (CSS.RegEx.wrappedValueAlreadyExtracted.test(propertyValue)) {\n extracted = propertyValue;\n } else {\n var converted,\n colorNames = {\n black: \"rgb(0, 0, 0)\",\n blue: \"rgb(0, 0, 255)\",\n gray: \"rgb(128, 128, 128)\",\n green: \"rgb(0, 128, 0)\",\n red: \"rgb(255, 0, 0)\",\n white: \"rgb(255, 255, 255)\"\n };\n\n /* Convert color names to rgb. */\n if (/^[A-z]+$/i.test(propertyValue)) {\n if (colorNames[propertyValue] !== undefined) {\n converted = colorNames[propertyValue]\n } else {\n /* If an unmatched color name is provided, default to black. */\n converted = colorNames.black;\n }\n /* Convert hex values to rgb. */\n } else if (CSS.RegEx.isHex.test(propertyValue)) {\n converted = \"rgb(\" + CSS.Values.hexToRgb(propertyValue).join(\" \") + \")\";\n /* If the provided color doesn't match any of the accepted color formats, default to black. */\n } else if (!(/^rgba?\\(/i.test(propertyValue))) {\n converted = colorNames.black;\n }\n\n /* Remove the surrounding \"rgb/rgba()\" string then replace commas with spaces and strip\n repeated spaces (in case the value included spaces to begin with). */\n extracted = (converted || propertyValue).toString().match(CSS.RegEx.valueUnwrap)[1].replace(/,(\\s+)?/g, \" \");\n }\n\n /* So long as this isn't <=IE8, add a fourth (alpha) component if it's missing and default it to 1 (visible). */\n if (!(IE <= 8) && extracted.split(\" \").length === 3) {\n extracted += \" 1\";\n }\n\n return extracted;\n case \"inject\":\n /* If this is IE<=8 and an alpha component exists, strip it off. */\n if (IE <= 8) {\n if (propertyValue.split(\" \").length === 4) {\n propertyValue = propertyValue.split(/\\s+/).slice(0, 3).join(\" \");\n }\n /* Otherwise, add a fourth (alpha) component if it's missing and default it to 1 (visible). */\n } else if (propertyValue.split(\" \").length === 3) {\n propertyValue += \" 1\";\n }\n\n /* Re-insert the browser-appropriate wrapper(\"rgb/rgba()\"), insert commas, and strip off decimal units\n on all values but the fourth (R, G, and B only accept whole numbers). */\n return (IE <= 8 ? \"rgb\" : \"rgba\") + \"(\" + propertyValue.replace(/\\s+/g, \",\").replace(/\\.(\\d)+(?=,)/g, \"\") + \")\";\n }\n };\n })();\n }\n }\n },\n\n /************************\n CSS Property Names\n ************************/\n\n Names: {\n /* Camelcase a property name into its JavaScript notation (e.g. \"background-color\" ==> \"backgroundColor\").\n Camelcasing is used to normalize property names between and across calls. */\n camelCase: function (property) {\n return property.replace(/-(\\w)/g, function (match, subMatch) {\n return subMatch.toUpperCase();\n });\n },\n\n /* For SVG elements, some properties (namely, dimensional ones) are GET/SET via the element's HTML attributes (instead of via CSS styles). */\n SVGAttribute: function (property) {\n var SVGAttributes = \"width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2\";\n\n /* Certain browsers require an SVG transform to be applied as an attribute. (Otherwise, application via CSS is preferable due to 3D support.) */\n if (IE || (Velocity.State.isAndroid && !Velocity.State.isChrome)) {\n SVGAttributes += \"|transform\";\n }\n\n return new RegExp(\"^(\" + SVGAttributes + \")$\", \"i\").test(property);\n },\n\n /* Determine whether a property should be set with a vendor prefix. */\n /* If a prefixed version of the property exists, return it. Otherwise, return the original property name.\n If the property is not at all supported by the browser, return a false flag. */\n prefixCheck: function (property) {\n /* If this property has already been checked, return the cached value. */\n if (Velocity.State.prefixMatches[property]) {\n return [ Velocity.State.prefixMatches[property], true ];\n } else {\n var vendors = [ \"\", \"Webkit\", \"Moz\", \"ms\", \"O\" ];\n\n for (var i = 0, vendorsLength = vendors.length; i < vendorsLength; i++) {\n var propertyPrefixed;\n\n if (i === 0) {\n propertyPrefixed = property;\n } else {\n /* Capitalize the first letter of the property to conform to JavaScript vendor prefix notation (e.g. webkitFilter). */\n propertyPrefixed = vendors[i] + property.replace(/^\\w/, function(match) { return match.toUpperCase(); });\n }\n\n /* Check if the browser supports this property as prefixed. */\n if (Type.isString(Velocity.State.prefixElement.style[propertyPrefixed])) {\n /* Cache the match. */\n Velocity.State.prefixMatches[property] = propertyPrefixed;\n\n return [ propertyPrefixed, true ];\n }\n }\n\n /* If the browser doesn't support this property in any form, include a false flag so that the caller can decide how to proceed. */\n return [ property, false ];\n }\n }\n },\n\n /************************\n CSS Property Values\n ************************/\n\n Values: {\n /* Hex to RGB conversion. Copyright Tim Down: http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb */\n hexToRgb: function (hex) {\n var shortformRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,\n longformRegex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i,\n rgbParts;\n\n hex = hex.replace(shortformRegex, function (m, r, g, b) {\n return r + r + g + g + b + b;\n });\n\n rgbParts = longformRegex.exec(hex);\n\n return rgbParts ? [ parseInt(rgbParts[1], 16), parseInt(rgbParts[2], 16), parseInt(rgbParts[3], 16) ] : [ 0, 0, 0 ];\n },\n\n isCSSNullValue: function (value) {\n /* The browser defaults CSS values that have not been set to either 0 or one of several possible null-value strings.\n Thus, we check for both falsiness and these special strings. */\n /* Null-value checking is performed to default the special strings to 0 (for the sake of tweening) or their hook\n templates as defined as CSS.Hooks (for the sake of hook injection/extraction). */\n /* Note: Chrome returns \"rgba(0, 0, 0, 0)\" for an undefined color whereas IE returns \"transparent\". */\n return (value == 0 || /^(none|auto|transparent|(rgba\\(0, ?0, ?0, ?0\\)))$/i.test(value));\n },\n\n /* Retrieve a property's default unit type. Used for assigning a unit type when one is not supplied by the user. */\n getUnitType: function (property) {\n if (/^(rotate|skew)/i.test(property)) {\n return \"deg\";\n } else if (/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(property)) {\n /* The above properties are unitless. */\n return \"\";\n } else {\n /* Default to px for all other properties. */\n return \"px\";\n }\n },\n\n /* HTML elements default to an associated display type when they're not set to display:none. */\n /* Note: This function is used for correctly setting the non-\"none\" display value in certain Velocity redirects, such as fadeIn/Out. */\n getDisplayType: function (element) {\n var tagName = element && element.tagName.toString().toLowerCase();\n\n if (/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(tagName)) {\n return \"inline\";\n } else if (/^(li)$/i.test(tagName)) {\n return \"list-item\";\n } else if (/^(tr)$/i.test(tagName)) {\n return \"table-row\";\n } else if (/^(table)$/i.test(tagName)) {\n return \"table\";\n } else if (/^(tbody)$/i.test(tagName)) {\n return \"table-row-group\";\n /* Default to \"block\" when no match is found. */\n } else {\n return \"block\";\n }\n },\n\n /* The class add/remove functions are used to temporarily apply a \"velocity-animating\" class to elements while they're animating. */\n addClass: function (element, className) {\n if (element.classList) {\n element.classList.add(className);\n } else {\n element.className += (element.className.length ? \" \" : \"\") + className;\n }\n },\n\n removeClass: function (element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else {\n element.className = element.className.toString().replace(new RegExp(\"(^|\\\\s)\" + className.split(\" \").join(\"|\") + \"(\\\\s|$)\", \"gi\"), \" \");\n }\n }\n },\n\n /****************************\n Style Getting & Setting\n ****************************/\n\n /* The singular getPropertyValue, which routes the logic for all normalizations, hooks, and standard CSS properties. */\n getPropertyValue: function (element, property, rootPropertyValue, forceStyleLookup) {\n /* Get an element's computed property value. */\n /* Note: Retrieving the value of a CSS property cannot simply be performed by checking an element's\n style attribute (which only reflects user-defined values). Instead, the browser must be queried for a property's\n *computed* value. You can read more about getComputedStyle here: https://developer.mozilla.org/en/docs/Web/API/window.getComputedStyle */\n function computePropertyValue (element, property) {\n /* When box-sizing isn't set to border-box, height and width style values are incorrectly computed when an\n element's scrollbars are visible (which expands the element's dimensions). Thus, we defer to the more accurate\n offsetHeight/Width property, which includes the total dimensions for interior, border, padding, and scrollbar.\n We subtract border and padding to get the sum of interior + scrollbar. */\n var computedValue = 0;\n\n /* IE<=8 doesn't support window.getComputedStyle, thus we defer to jQuery, which has an extensive array\n of hacks to accurately retrieve IE8 property values. Re-implementing that logic here is not worth bloating the\n codebase for a dying browser. The performance repercussions of using jQuery here are minimal since\n Velocity is optimized to rarely (and sometimes never) query the DOM. Further, the $.css() codepath isn't that slow. */\n if (IE <= 8) {\n computedValue = $.css(element, property); /* GET */\n /* All other browsers support getComputedStyle. The returned live object reference is cached onto its\n associated element so that it does not need to be refetched upon every GET. */\n } else {\n /* Browsers do not return height and width values for elements that are set to display:\"none\". Thus, we temporarily\n toggle display to the element type's default value. */\n var toggleDisplay = false;\n\n if (/^(width|height)$/.test(property) && CSS.getPropertyValue(element, \"display\") === 0) {\n toggleDisplay = true;\n CSS.setPropertyValue(element, \"display\", CSS.Values.getDisplayType(element));\n }\n\n function revertDisplay () {\n if (toggleDisplay) {\n CSS.setPropertyValue(element, \"display\", \"none\");\n }\n }\n\n if (!forceStyleLookup) {\n if (property === \"height\" && CSS.getPropertyValue(element, \"boxSizing\").toString().toLowerCase() !== \"border-box\") {\n var contentBoxHeight = element.offsetHeight - (parseFloat(CSS.getPropertyValue(element, \"borderTopWidth\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"borderBottomWidth\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"paddingTop\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"paddingBottom\")) || 0);\n revertDisplay();\n\n return contentBoxHeight;\n } else if (property === \"width\" && CSS.getPropertyValue(element, \"boxSizing\").toString().toLowerCase() !== \"border-box\") {\n var contentBoxWidth = element.offsetWidth - (parseFloat(CSS.getPropertyValue(element, \"borderLeftWidth\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"borderRightWidth\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"paddingLeft\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"paddingRight\")) || 0);\n revertDisplay();\n\n return contentBoxWidth;\n }\n }\n\n var computedStyle;\n\n /* For elements that Velocity hasn't been called on directly (e.g. when Velocity queries the DOM on behalf\n of a parent of an element its animating), perform a direct getComputedStyle lookup since the object isn't cached. */\n if (Data(element) === undefined) {\n computedStyle = window.getComputedStyle(element, null); /* GET */\n /* If the computedStyle object has yet to be cached, do so now. */\n } else if (!Data(element).computedStyle) {\n computedStyle = Data(element).computedStyle = window.getComputedStyle(element, null); /* GET */\n /* If computedStyle is cached, use it. */\n } else {\n computedStyle = Data(element).computedStyle;\n }\n\n /* IE and Firefox do not return a value for the generic borderColor -- they only return individual values for each border side's color.\n Also, in all browsers, when border colors aren't all the same, a compound value is returned that Velocity isn't setup to parse.\n So, as a polyfill for querying individual border side colors, we just return the top border's color and animate all borders from that value. */\n if (property === \"borderColor\") {\n property = \"borderTopColor\";\n }\n\n /* IE9 has a bug in which the \"filter\" property must be accessed from computedStyle using the getPropertyValue method\n instead of a direct property lookup. The getPropertyValue method is slower than a direct lookup, which is why we avoid it by default. */\n if (IE === 9 && property === \"filter\") {\n computedValue = computedStyle.getPropertyValue(property); /* GET */\n } else {\n computedValue = computedStyle[property];\n }\n\n /* Fall back to the property's style value (if defined) when computedValue returns nothing,\n which can happen when the element hasn't been painted. */\n if (computedValue === \"\" || computedValue === null) {\n computedValue = element.style[property];\n }\n\n revertDisplay();\n }\n\n /* For top, right, bottom, and left (TRBL) values that are set to \"auto\" on elements of \"fixed\" or \"absolute\" position,\n defer to jQuery for converting \"auto\" to a numeric value. (For elements with a \"static\" or \"relative\" position, \"auto\" has the same\n effect as being set to 0, so no conversion is necessary.) */\n /* An example of why numeric conversion is necessary: When an element with \"position:absolute\" has an untouched \"left\"\n property, which reverts to \"auto\", left's value is 0 relative to its parent element, but is often non-zero relative\n to its *containing* (not parent) element, which is the nearest \"position:relative\" ancestor or the viewport (and always the viewport in the case of \"position:fixed\"). */\n if (computedValue === \"auto\" && /^(top|right|bottom|left)$/i.test(property)) {\n var position = computePropertyValue(element, \"position\"); /* GET */\n\n /* For absolute positioning, jQuery's $.position() only returns values for top and left;\n right and bottom will have their \"auto\" value reverted to 0. */\n /* Note: A jQuery object must be created here since jQuery doesn't have a low-level alias for $.position().\n Not a big deal since we're currently in a GET batch anyway. */\n if (position === \"fixed\" || (position === \"absolute\" && /top|left/i.test(property))) {\n /* Note: jQuery strips the pixel unit from its returned values; we re-add it here to conform with computePropertyValue's behavior. */\n computedValue = $(element).position()[property] + \"px\"; /* GET */\n }\n }\n\n return computedValue;\n }\n\n var propertyValue;\n\n /* If this is a hooked property (e.g. \"clipLeft\" instead of the root property of \"clip\"),\n extract the hook's value from a normalized rootPropertyValue using CSS.Hooks.extractValue(). */\n if (CSS.Hooks.registered[property]) {\n var hook = property,\n hookRoot = CSS.Hooks.getRoot(hook);\n\n /* If a cached rootPropertyValue wasn't passed in (which Velocity always attempts to do in order to avoid requerying the DOM),\n query the DOM for the root property's value. */\n if (rootPropertyValue === undefined) {\n /* Since the browser is now being directly queried, use the official post-prefixing property name for this lookup. */\n rootPropertyValue = CSS.getPropertyValue(element, CSS.Names.prefixCheck(hookRoot)[0]); /* GET */\n }\n\n /* If this root has a normalization registered, peform the associated normalization extraction. */\n if (CSS.Normalizations.registered[hookRoot]) {\n rootPropertyValue = CSS.Normalizations.registered[hookRoot](\"extract\", element, rootPropertyValue);\n }\n\n /* Extract the hook's value. */\n propertyValue = CSS.Hooks.extractValue(hook, rootPropertyValue);\n\n /* If this is a normalized property (e.g. \"opacity\" becomes \"filter\" in <=IE8) or \"translateX\" becomes \"transform\"),\n normalize the property's name and value, and handle the special case of transforms. */\n /* Note: Normalizing a property is mutually exclusive from hooking a property since hook-extracted values are strictly\n numerical and therefore do not require normalization extraction. */\n } else if (CSS.Normalizations.registered[property]) {\n var normalizedPropertyName,\n normalizedPropertyValue;\n\n normalizedPropertyName = CSS.Normalizations.registered[property](\"name\", element);\n\n /* Transform values are calculated via normalization extraction (see below), which checks against the element's transformCache.\n At no point do transform GETs ever actually query the DOM; initial stylesheet values are never processed.\n This is because parsing 3D transform matrices is not always accurate and would bloat our codebase;\n thus, normalization extraction defaults initial transform values to their zero-values (e.g. 1 for scaleX and 0 for translateX). */\n if (normalizedPropertyName !== \"transform\") {\n normalizedPropertyValue = computePropertyValue(element, CSS.Names.prefixCheck(normalizedPropertyName)[0]); /* GET */\n\n /* If the value is a CSS null-value and this property has a hook template, use that zero-value template so that hooks can be extracted from it. */\n if (CSS.Values.isCSSNullValue(normalizedPropertyValue) && CSS.Hooks.templates[property]) {\n normalizedPropertyValue = CSS.Hooks.templates[property][1];\n }\n }\n\n propertyValue = CSS.Normalizations.registered[property](\"extract\", element, normalizedPropertyValue);\n }\n\n /* If a (numeric) value wasn't produced via hook extraction or normalization, query the DOM. */\n if (!/^[\\d-]/.test(propertyValue)) {\n /* For SVG elements, dimensional properties (which SVGAttribute() detects) are tweened via\n their HTML attribute values instead of their CSS style values. */\n if (Data(element) && Data(element).isSVG && CSS.Names.SVGAttribute(property)) {\n /* Since the height/width attribute values must be set manually, they don't reflect computed values.\n Thus, we use use getBBox() to ensure we always get values for elements with undefined height/width attributes. */\n if (/^(height|width)$/i.test(property)) {\n /* Firefox throws an error if .getBBox() is called on an SVG that isn't attached to the DOM. */\n try {\n propertyValue = element.getBBox()[property];\n } catch (error) {\n propertyValue = 0;\n }\n /* Otherwise, access the attribute value directly. */\n } else {\n propertyValue = element.getAttribute(property);\n }\n } else {\n propertyValue = computePropertyValue(element, CSS.Names.prefixCheck(property)[0]); /* GET */\n }\n }\n\n /* Since property lookups are for animation purposes (which entails computing the numeric delta between start and end values),\n convert CSS null-values to an integer of value 0. */\n if (CSS.Values.isCSSNullValue(propertyValue)) {\n propertyValue = 0;\n }\n\n if (Velocity.debug >= 2) console.log(\"Get \" + property + \": \" + propertyValue);\n\n return propertyValue;\n },\n\n /* The singular setPropertyValue, which routes the logic for all normalizations, hooks, and standard CSS properties. */\n setPropertyValue: function(element, property, propertyValue, rootPropertyValue, scrollData) {\n var propertyName = property;\n\n /* In order to be subjected to call options and element queueing, scroll animation is routed through Velocity as if it were a standard CSS property. */\n if (property === \"scroll\") {\n /* If a container option is present, scroll the container instead of the browser window. */\n if (scrollData.container) {\n scrollData.container[\"scroll\" + scrollData.direction] = propertyValue;\n /* Otherwise, Velocity defaults to scrolling the browser window. */\n } else {\n if (scrollData.direction === \"Left\") {\n window.scrollTo(propertyValue, scrollData.alternateValue);\n } else {\n window.scrollTo(scrollData.alternateValue, propertyValue);\n }\n }\n } else {\n /* Transforms (translateX, rotateZ, etc.) are applied to a per-element transformCache object, which is manually flushed via flushTransformCache().\n Thus, for now, we merely cache transforms being SET. */\n if (CSS.Normalizations.registered[property] && CSS.Normalizations.registered[property](\"name\", element) === \"transform\") {\n /* Perform a normalization injection. */\n /* Note: The normalization logic handles the transformCache updating. */\n CSS.Normalizations.registered[property](\"inject\", element, propertyValue);\n\n propertyName = \"transform\";\n propertyValue = Data(element).transformCache[property];\n } else {\n /* Inject hooks. */\n if (CSS.Hooks.registered[property]) {\n var hookName = property,\n hookRoot = CSS.Hooks.getRoot(property);\n\n /* If a cached rootPropertyValue was not provided, query the DOM for the hookRoot's current value. */\n rootPropertyValue = rootPropertyValue || CSS.getPropertyValue(element, hookRoot); /* GET */\n\n propertyValue = CSS.Hooks.injectValue(hookName, propertyValue, rootPropertyValue);\n property = hookRoot;\n }\n\n /* Normalize names and values. */\n if (CSS.Normalizations.registered[property]) {\n propertyValue = CSS.Normalizations.registered[property](\"inject\", element, propertyValue);\n property = CSS.Normalizations.registered[property](\"name\", element);\n }\n\n /* Assign the appropriate vendor prefix before performing an official style update. */\n propertyName = CSS.Names.prefixCheck(property)[0];\n\n /* A try/catch is used for IE<=8, which throws an error when \"invalid\" CSS values are set, e.g. a negative width.\n Try/catch is avoided for other browsers since it incurs a performance overhead. */\n if (IE <= 8) {\n try {\n element.style[propertyName] = propertyValue;\n } catch (error) { if (Velocity.debug) console.log(\"Browser does not support [\" + propertyValue + \"] for [\" + propertyName + \"]\"); }\n /* SVG elements have their dimensional properties (width, height, x, y, cx, etc.) applied directly as attributes instead of as styles. */\n /* Note: IE8 does not support SVG elements, so it's okay that we skip it for SVG animation. */\n } else if (Data(element) && Data(element).isSVG && CSS.Names.SVGAttribute(property)) {\n /* Note: For SVG attributes, vendor-prefixed property names are never used. */\n /* Note: Not all CSS properties can be animated via attributes, but the browser won't throw an error for unsupported properties. */\n element.setAttribute(property, propertyValue);\n } else {\n element.style[propertyName] = propertyValue;\n }\n\n if (Velocity.debug >= 2) console.log(\"Set \" + property + \" (\" + propertyName + \"): \" + propertyValue);\n }\n }\n\n /* Return the normalized property name and value in case the caller wants to know how these values were modified before being applied to the DOM. */\n return [ propertyName, propertyValue ];\n },\n\n /* To increase performance by batching transform updates into a single SET, transforms are not directly applied to an element until flushTransformCache() is called. */\n /* Note: Velocity applies transform properties in the same order that they are chronogically introduced to the element's CSS styles. */\n flushTransformCache: function(element) {\n var transformString = \"\";\n\n /* Certain browsers require that SVG transforms be applied as an attribute. However, the SVG transform attribute takes a modified version of CSS's transform string\n (units are dropped and, except for skewX/Y, subproperties are merged into their master property -- e.g. scaleX and scaleY are merged into scale(X Y). */\n if ((IE || (Velocity.State.isAndroid && !Velocity.State.isChrome)) && Data(element).isSVG) {\n /* Since transform values are stored in their parentheses-wrapped form, we use a helper function to strip out their numeric values.\n Further, SVG transform properties only take unitless (representing pixels) values, so it's okay that parseFloat() strips the unit suffixed to the float value. */\n function getTransformFloat (transformProperty) {\n return parseFloat(CSS.getPropertyValue(element, transformProperty));\n }\n\n /* Create an object to organize all the transforms that we'll apply to the SVG element. To keep the logic simple,\n we process *all* transform properties -- even those that may not be explicitly applied (since they default to their zero-values anyway). */\n var SVGTransforms = {\n translate: [ getTransformFloat(\"translateX\"), getTransformFloat(\"translateY\") ],\n skewX: [ getTransformFloat(\"skewX\") ], skewY: [ getTransformFloat(\"skewY\") ],\n /* If the scale property is set (non-1), use that value for the scaleX and scaleY values\n (this behavior mimics the result of animating all these properties at once on HTML elements). */\n scale: getTransformFloat(\"scale\") !== 1 ? [ getTransformFloat(\"scale\"), getTransformFloat(\"scale\") ] : [ getTransformFloat(\"scaleX\"), getTransformFloat(\"scaleY\") ],\n /* Note: SVG's rotate transform takes three values: rotation degrees followed by the X and Y values\n defining the rotation's origin point. We ignore the origin values (default them to 0). */\n rotate: [ getTransformFloat(\"rotateZ\"), 0, 0 ]\n };\n\n /* Iterate through the transform properties in the user-defined property map order.\n (This mimics the behavior of non-SVG transform animation.) */\n $.each(Data(element).transformCache, function(transformName) {\n /* Except for with skewX/Y, revert the axis-specific transform subproperties to their axis-free master\n properties so that they match up with SVG's accepted transform properties. */\n if (/^translate/i.test(transformName)) {\n transformName = \"translate\";\n } else if (/^scale/i.test(transformName)) {\n transformName = \"scale\";\n } else if (/^rotate/i.test(transformName)) {\n transformName = \"rotate\";\n }\n\n /* Check that we haven't yet deleted the property from the SVGTransforms container. */\n if (SVGTransforms[transformName]) {\n /* Append the transform property in the SVG-supported transform format. As per the spec, surround the space-delimited values in parentheses. */\n transformString += transformName + \"(\" + SVGTransforms[transformName].join(\" \") + \")\" + \" \";\n\n /* After processing an SVG transform property, delete it from the SVGTransforms container so we don't\n re-insert the same master property if we encounter another one of its axis-specific properties. */\n delete SVGTransforms[transformName];\n }\n });\n } else {\n var transformValue,\n perspective;\n\n /* Transform properties are stored as members of the transformCache object. Concatenate all the members into a string. */\n $.each(Data(element).transformCache, function(transformName) {\n transformValue = Data(element).transformCache[transformName];\n\n /* Transform's perspective subproperty must be set first in order to take effect. Store it temporarily. */\n if (transformName === \"transformPerspective\") {\n perspective = transformValue;\n return true;\n }\n\n /* IE9 only supports one rotation type, rotateZ, which it refers to as \"rotate\". */\n if (IE === 9 && transformName === \"rotateZ\") {\n transformName = \"rotate\";\n }\n\n transformString += transformName + transformValue + \" \";\n });\n\n /* If present, set the perspective subproperty first. */\n if (perspective) {\n transformString = \"perspective\" + perspective + \" \" + transformString;\n }\n }\n\n CSS.setPropertyValue(element, \"transform\", transformString);\n }\n };\n\n /* Register hooks and normalizations. */\n CSS.Hooks.register();\n CSS.Normalizations.register();\n\n /* Allow hook setting in the same fashion as jQuery's $.css(). */\n Velocity.hook = function (elements, arg2, arg3) {\n var value = undefined;\n\n elements = sanitizeElements(elements);\n\n $.each(elements, function(i, element) {\n /* Initialize Velocity's per-element data cache if this element hasn't previously been animated. */\n if (Data(element) === undefined) {\n Velocity.init(element);\n }\n\n /* Get property value. If an element set was passed in, only return the value for the first element. */\n if (arg3 === undefined) {\n if (value === undefined) {\n value = Velocity.CSS.getPropertyValue(element, arg2);\n }\n /* Set property value. */\n } else {\n /* sPV returns an array of the normalized propertyName/propertyValue pair used to update the DOM. */\n var adjustedSet = Velocity.CSS.setPropertyValue(element, arg2, arg3);\n\n /* Transform properties don't automatically set. They have to be flushed to the DOM. */\n if (adjustedSet[0] === \"transform\") {\n Velocity.CSS.flushTransformCache(element);\n }\n\n value = adjustedSet;\n }\n });\n\n return value;\n };\n\n /*****************\n Animation\n *****************/\n\n var animate = function() {\n\n /******************\n Call Chain\n ******************/\n\n /* Logic for determining what to return to the call stack when exiting out of Velocity. */\n function getChain () {\n /* If we are using the utility function, attempt to return this call's promise. If no promise library was detected,\n default to null instead of returning the targeted elements so that utility function's return value is standardized. */\n if (isUtility) {\n return promiseData.promise || null;\n /* Otherwise, if we're using $.fn, return the jQuery-/Zepto-wrapped element set. */\n } else {\n return elementsWrapped;\n }\n }\n\n /*************************\n Arguments Assignment\n *************************/\n\n /* To allow for expressive CoffeeScript code, Velocity supports an alternative syntax in which \"elements\" (or \"e\"), \"properties\" (or \"p\"), and \"options\" (or \"o\")\n objects are defined on a container object that's passed in as Velocity's sole argument. */\n /* Note: Some browsers automatically populate arguments with a \"properties\" object. We detect it by checking for its default \"names\" property. */\n var syntacticSugar = (arguments[0] && (arguments[0].p || (($.isPlainObject(arguments[0].properties) && !arguments[0].properties.names) || Type.isString(arguments[0].properties)))),\n /* Whether Velocity was called via the utility function (as opposed to on a jQuery/Zepto object). */\n isUtility,\n /* When Velocity is called via the utility function ($.Velocity()/Velocity()), elements are explicitly\n passed in as the first parameter. Thus, argument positioning varies. We normalize them here. */\n elementsWrapped,\n argumentIndex;\n\n var elements,\n propertiesMap,\n options;\n\n /* Detect jQuery/Zepto elements being animated via the $.fn method. */\n if (Type.isWrapped(this)) {\n isUtility = false;\n\n argumentIndex = 0;\n elements = this;\n elementsWrapped = this;\n /* Otherwise, raw elements are being animated via the utility function. */\n } else {\n isUtility = true;\n\n argumentIndex = 1;\n elements = syntacticSugar ? (arguments[0].elements || arguments[0].e) : arguments[0];\n }\n\n elements = sanitizeElements(elements);\n\n if (!elements) {\n return;\n }\n\n if (syntacticSugar) {\n propertiesMap = arguments[0].properties || arguments[0].p;\n options = arguments[0].options || arguments[0].o;\n } else {\n propertiesMap = arguments[argumentIndex];\n options = arguments[argumentIndex + 1];\n }\n\n /* The length of the element set (in the form of a nodeList or an array of elements) is defaulted to 1 in case a\n single raw DOM element is passed in (which doesn't contain a length property). */\n var elementsLength = elements.length,\n elementsIndex = 0;\n\n /***************************\n Argument Overloading\n ***************************/\n\n /* Support is included for jQuery's argument overloading: $.animate(propertyMap [, duration] [, easing] [, complete]).\n Overloading is detected by checking for the absence of an object being passed into options. */\n /* Note: The stop and finish actions do not accept animation options, and are therefore excluded from this check. */\n if (!/^(stop|finish|finishAll)$/i.test(propertiesMap) && !$.isPlainObject(options)) {\n /* The utility function shifts all arguments one position to the right, so we adjust for that offset. */\n var startingArgumentPosition = argumentIndex + 1;\n\n options = {};\n\n /* Iterate through all options arguments */\n for (var i = startingArgumentPosition; i < arguments.length; i++) {\n /* Treat a number as a duration. Parse it out. */\n /* Note: The following RegEx will return true if passed an array with a number as its first item.\n Thus, arrays are skipped from this check. */\n if (!Type.isArray(arguments[i]) && (/^(fast|normal|slow)$/i.test(arguments[i]) || /^\\d/.test(arguments[i]))) {\n options.duration = arguments[i];\n /* Treat strings and arrays as easings. */\n } else if (Type.isString(arguments[i]) || Type.isArray(arguments[i])) {\n options.easing = arguments[i];\n /* Treat a function as a complete callback. */\n } else if (Type.isFunction(arguments[i])) {\n options.complete = arguments[i];\n }\n }\n }\n\n /***************\n Promises\n ***************/\n\n var promiseData = {\n promise: null,\n resolver: null,\n rejecter: null\n };\n\n /* If this call was made via the utility function (which is the default method of invocation when jQuery/Zepto are not being used), and if\n promise support was detected, create a promise object for this call and store references to its resolver and rejecter methods. The resolve\n method is used when a call completes naturally or is prematurely stopped by the user. In both cases, completeCall() handles the associated\n call cleanup and promise resolving logic. The reject method is used when an invalid set of arguments is passed into a Velocity call. */\n /* Note: Velocity employs a call-based queueing architecture, which means that stopping an animating element actually stops the full call that\n triggered it -- not that one element exclusively. Similarly, there is one promise per call, and all elements targeted by a Velocity call are\n grouped together for the purposes of resolving and rejecting a promise. */\n if (isUtility && Velocity.Promise) {\n promiseData.promise = new Velocity.Promise(function (resolve, reject) {\n promiseData.resolver = resolve;\n promiseData.rejecter = reject;\n });\n }\n\n /*********************\n Action Detection\n *********************/\n\n /* Velocity's behavior is categorized into \"actions\": Elements can either be specially scrolled into view,\n or they can be started, stopped, or reversed. If a literal or referenced properties map is passed in as Velocity's\n first argument, the associated action is \"start\". Alternatively, \"scroll\", \"reverse\", or \"stop\" can be passed in instead of a properties map. */\n var action;\n\n switch (propertiesMap) {\n case \"scroll\":\n action = \"scroll\";\n break;\n\n case \"reverse\":\n action = \"reverse\";\n break;\n\n case \"finish\":\n case \"finishAll\":\n case \"stop\":\n /*******************\n Action: Stop\n *******************/\n\n /* Clear the currently-active delay on each targeted element. */\n $.each(elements, function(i, element) {\n if (Data(element) && Data(element).delayTimer) {\n /* Stop the timer from triggering its cached next() function. */\n clearTimeout(Data(element).delayTimer.setTimeout);\n\n /* Manually call the next() function so that the subsequent queue items can progress. */\n if (Data(element).delayTimer.next) {\n Data(element).delayTimer.next();\n }\n\n delete Data(element).delayTimer;\n }\n\n /* If we want to finish everything in the queue, we have to iterate through it\n and call each function. This will make them active calls below, which will\n cause them to be applied via the duration setting. */\n if (propertiesMap === \"finishAll\" && (options === true || Type.isString(options))) {\n /* Iterate through the items in the element's queue. */\n $.each($.queue(element, Type.isString(options) ? options : \"\"), function(_, item) {\n /* The queue array can contain an \"inprogress\" string, which we skip. */\n if (Type.isFunction(item)) {\n item();\n }\n });\n\n /* Clearing the $.queue() array is achieved by resetting it to []. */\n $.queue(element, Type.isString(options) ? options : \"\", []);\n }\n });\n\n var callsToStop = [];\n\n /* When the stop action is triggered, the elements' currently active call is immediately stopped. The active call might have\n been applied to multiple elements, in which case all of the call's elements will be stopped. When an element\n is stopped, the next item in its animation queue is immediately triggered. */\n /* An additional argument may be passed in to clear an element's remaining queued calls. Either true (which defaults to the \"fx\" queue)\n or a custom queue string can be passed in. */\n /* Note: The stop command runs prior to Velocity's Queueing phase since its behavior is intended to take effect *immediately*,\n regardless of the element's current queue state. */\n\n /* Iterate through every active call. */\n $.each(Velocity.State.calls, function(i, activeCall) {\n /* Inactive calls are set to false by the logic inside completeCall(). Skip them. */\n if (activeCall) {\n /* Iterate through the active call's targeted elements. */\n $.each(activeCall[1], function(k, activeElement) {\n /* If true was passed in as a secondary argument, clear absolutely all calls on this element. Otherwise, only\n clear calls associated with the relevant queue. */\n /* Call stopping logic works as follows:\n - options === true --> stop current default queue calls (and queue:false calls), including remaining queued ones.\n - options === undefined --> stop current queue:\"\" call and all queue:false calls.\n - options === false --> stop only queue:false calls.\n - options === \"custom\" --> stop current queue:\"custom\" call, including remaining queued ones (there is no functionality to only clear the currently-running queue:\"custom\" call). */\n var queueName = (options === undefined) ? \"\" : options;\n\n if (queueName !== true && (activeCall[2].queue !== queueName) && !(options === undefined && activeCall[2].queue === false)) {\n return true;\n }\n\n /* Iterate through the calls targeted by the stop command. */\n $.each(elements, function(l, element) {\n /* Check that this call was applied to the target element. */\n if (element === activeElement) {\n /* Optionally clear the remaining queued calls. If we're doing \"finishAll\" this won't find anything,\n due to the queue-clearing above. */\n if (options === true || Type.isString(options)) {\n /* Iterate through the items in the element's queue. */\n $.each($.queue(element, Type.isString(options) ? options : \"\"), function(_, item) {\n /* The queue array can contain an \"inprogress\" string, which we skip. */\n if (Type.isFunction(item)) {\n /* Pass the item's callback a flag indicating that we want to abort from the queue call.\n (Specifically, the queue will resolve the call's associated promise then abort.) */\n item(null, true);\n }\n });\n\n /* Clearing the $.queue() array is achieved by resetting it to []. */\n $.queue(element, Type.isString(options) ? options : \"\", []);\n }\n\n if (propertiesMap === \"stop\") {\n /* Since \"reverse\" uses cached start values (the previous call's endValues), these values must be\n changed to reflect the final value that the elements were actually tweened to. */\n /* Note: If only queue:false animations are currently running on an element, it won't have a tweensContainer\n object. Also, queue:false animations can't be reversed. */\n if (Data(element) && Data(element).tweensContainer && queueName !== false) {\n $.each(Data(element).tweensContainer, function(m, activeTween) {\n activeTween.endValue = activeTween.currentValue;\n });\n }\n\n callsToStop.push(i);\n } else if (propertiesMap === \"finish\" || propertiesMap === \"finishAll\") {\n /* To get active tweens to finish immediately, we forcefully shorten their durations to 1ms so that\n they finish upon the next rAf tick then proceed with normal call completion logic. */\n activeCall[2].duration = 1;\n }\n }\n });\n });\n }\n });\n\n /* Prematurely call completeCall() on each matched active call. Pass an additional flag for \"stop\" to indicate\n that the complete callback and display:none setting should be skipped since we're completing prematurely. */\n if (propertiesMap === \"stop\") {\n $.each(callsToStop, function(i, j) {\n completeCall(j, true);\n });\n\n if (promiseData.promise) {\n /* Immediately resolve the promise associated with this stop call since stop runs synchronously. */\n promiseData.resolver(elements);\n }\n }\n\n /* Since we're stopping, and not proceeding with queueing, exit out of Velocity. */\n return getChain();\n\n default:\n /* Treat a non-empty plain object as a literal properties map. */\n if ($.isPlainObject(propertiesMap) && !Type.isEmptyObject(propertiesMap)) {\n action = \"start\";\n\n /****************\n Redirects\n ****************/\n\n /* Check if a string matches a registered redirect (see Redirects above). */\n } else if (Type.isString(propertiesMap) && Velocity.Redirects[propertiesMap]) {\n var opts = $.extend({}, options),\n durationOriginal = opts.duration,\n delayOriginal = opts.delay || 0;\n\n /* If the backwards option was passed in, reverse the element set so that elements animate from the last to the first. */\n if (opts.backwards === true) {\n elements = $.extend(true, [], elements).reverse();\n }\n\n /* Individually trigger the redirect for each element in the set to prevent users from having to handle iteration logic in their redirect. */\n $.each(elements, function(elementIndex, element) {\n /* If the stagger option was passed in, successively delay each element by the stagger value (in ms). Retain the original delay value. */\n if (parseFloat(opts.stagger)) {\n opts.delay = delayOriginal + (parseFloat(opts.stagger) * elementIndex);\n } else if (Type.isFunction(opts.stagger)) {\n opts.delay = delayOriginal + opts.stagger.call(element, elementIndex, elementsLength);\n }\n\n /* If the drag option was passed in, successively increase/decrease (depending on the presense of opts.backwards)\n the duration of each element's animation, using floors to prevent producing very short durations. */\n if (opts.drag) {\n /* Default the duration of UI pack effects (callouts and transitions) to 1000ms instead of the usual default duration of 400ms. */\n opts.duration = parseFloat(durationOriginal) || (/^(callout|transition)/.test(propertiesMap) ? 1000 : DURATION_DEFAULT);\n\n /* For each element, take the greater duration of: A) animation completion percentage relative to the original duration,\n B) 75% of the original duration, or C) a 200ms fallback (in case duration is already set to a low value).\n The end result is a baseline of 75% of the redirect's duration that increases/decreases as the end of the element set is approached. */\n opts.duration = Math.max(opts.duration * (opts.backwards ? 1 - elementIndex/elementsLength : (elementIndex + 1) / elementsLength), opts.duration * 0.75, 200);\n }\n\n /* Pass in the call's opts object so that the redirect can optionally extend it. It defaults to an empty object instead of null to\n reduce the opts checking logic required inside the redirect. */\n Velocity.Redirects[propertiesMap].call(element, element, opts || {}, elementIndex, elementsLength, elements, promiseData.promise ? promiseData : undefined);\n });\n\n /* Since the animation logic resides within the redirect's own code, abort the remainder of this call.\n (The performance overhead up to this point is virtually non-existant.) */\n /* Note: The jQuery call chain is kept intact by returning the complete element set. */\n return getChain();\n } else {\n var abortError = \"Velocity: First argument (\" + propertiesMap + \") was not a property map, a known action, or a registered redirect. Aborting.\";\n\n if (promiseData.promise) {\n promiseData.rejecter(new Error(abortError));\n } else {\n console.log(abortError);\n }\n\n return getChain();\n }\n }\n\n /**************************\n Call-Wide Variables\n **************************/\n\n /* A container for CSS unit conversion ratios (e.g. %, rem, and em ==> px) that is used to cache ratios across all elements\n being animated in a single Velocity call. Calculating unit ratios necessitates DOM querying and updating, and is therefore\n avoided (via caching) wherever possible. This container is call-wide instead of page-wide to avoid the risk of using stale\n conversion metrics across Velocity animations that are not immediately consecutively chained. */\n var callUnitConversionData = {\n lastParent: null,\n lastPosition: null,\n lastFontSize: null,\n lastPercentToPxWidth: null,\n lastPercentToPxHeight: null,\n lastEmToPx: null,\n remToPx: null,\n vwToPx: null,\n vhToPx: null\n };\n\n /* A container for all the ensuing tween data and metadata associated with this call. This container gets pushed to the page-wide\n Velocity.State.calls array that is processed during animation ticking. */\n var call = [];\n\n /************************\n Element Processing\n ************************/\n\n /* Element processing consists of three parts -- data processing that cannot go stale and data processing that *can* go stale (i.e. third-party style modifications):\n 1) Pre-Queueing: Element-wide variables, including the element's data storage, are instantiated. Call options are prepared. If triggered, the Stop action is executed.\n 2) Queueing: The logic that runs once this call has reached its point of execution in the element's $.queue() stack. Most logic is placed here to avoid risking it becoming stale.\n 3) Pushing: Consolidation of the tween data followed by its push onto the global in-progress calls container.\n */\n\n function processElement () {\n\n /*************************\n Part I: Pre-Queueing\n *************************/\n\n /***************************\n Element-Wide Variables\n ***************************/\n\n var element = this,\n /* The runtime opts object is the extension of the current call's options and Velocity's page-wide option defaults. */\n opts = $.extend({}, Velocity.defaults, options),\n /* A container for the processed data associated with each property in the propertyMap.\n (Each property in the map produces its own \"tween\".) */\n tweensContainer = {},\n elementUnitConversionData;\n\n /******************\n Element Init\n ******************/\n\n if (Data(element) === undefined) {\n Velocity.init(element);\n }\n\n /******************\n Option: Delay\n ******************/\n\n /* Since queue:false doesn't respect the item's existing queue, we avoid injecting its delay here (it's set later on). */\n /* Note: Velocity rolls its own delay function since jQuery doesn't have a utility alias for $.fn.delay()\n (and thus requires jQuery element creation, which we avoid since its overhead includes DOM querying). */\n if (parseFloat(opts.delay) && opts.queue !== false) {\n $.queue(element, opts.queue, function(next) {\n /* This is a flag used to indicate to the upcoming completeCall() function that this queue entry was initiated by Velocity. See completeCall() for further details. */\n Velocity.velocityQueueEntryFlag = true;\n\n /* The ensuing queue item (which is assigned to the \"next\" argument that $.queue() automatically passes in) will be triggered after a setTimeout delay.\n The setTimeout is stored so that it can be subjected to clearTimeout() if this animation is prematurely stopped via Velocity's \"stop\" command. */\n Data(element).delayTimer = {\n setTimeout: setTimeout(next, parseFloat(opts.delay)),\n next: next\n };\n });\n }\n\n /*********************\n Option: Duration\n *********************/\n\n /* Support for jQuery's named durations. */\n switch (opts.duration.toString().toLowerCase()) {\n case \"fast\":\n opts.duration = 200;\n break;\n\n case \"normal\":\n opts.duration = DURATION_DEFAULT;\n break;\n\n case \"slow\":\n opts.duration = 600;\n break;\n\n default:\n /* Remove the potential \"ms\" suffix and default to 1 if the user is attempting to set a duration of 0 (in order to produce an immediate style change). */\n opts.duration = parseFloat(opts.duration) || 1;\n }\n\n /************************\n Global Option: Mock\n ************************/\n\n if (Velocity.mock !== false) {\n /* In mock mode, all animations are forced to 1ms so that they occur immediately upon the next rAF tick.\n Alternatively, a multiplier can be passed in to time remap all delays and durations. */\n if (Velocity.mock === true) {\n opts.duration = opts.delay = 1;\n } else {\n opts.duration *= parseFloat(Velocity.mock) || 1;\n opts.delay *= parseFloat(Velocity.mock) || 1;\n }\n }\n\n /*******************\n Option: Easing\n *******************/\n\n opts.easing = getEasing(opts.easing, opts.duration);\n\n /**********************\n Option: Callbacks\n **********************/\n\n /* Callbacks must functions. Otherwise, default to null. */\n if (opts.begin && !Type.isFunction(opts.begin)) {\n opts.begin = null;\n }\n\n if (opts.progress && !Type.isFunction(opts.progress)) {\n opts.progress = null;\n }\n\n if (opts.complete && !Type.isFunction(opts.complete)) {\n opts.complete = null;\n }\n\n /*********************************\n Option: Display & Visibility\n *********************************/\n\n /* Refer to Velocity's documentation (VelocityJS.org/#displayAndVisibility) for a description of the display and visibility options' behavior. */\n /* Note: We strictly check for undefined instead of falsiness because display accepts an empty string value. */\n if (opts.display !== undefined && opts.display !== null) {\n opts.display = opts.display.toString().toLowerCase();\n\n /* Users can pass in a special \"auto\" value to instruct Velocity to set the element to its default display value. */\n if (opts.display === \"auto\") {\n opts.display = Velocity.CSS.Values.getDisplayType(element);\n }\n }\n\n if (opts.visibility !== undefined && opts.visibility !== null) {\n opts.visibility = opts.visibility.toString().toLowerCase();\n }\n\n /**********************\n Option: mobileHA\n **********************/\n\n /* When set to true, and if this is a mobile device, mobileHA automatically enables hardware acceleration (via a null transform hack)\n on animating elements. HA is removed from the element at the completion of its animation. */\n /* Note: Android Gingerbread doesn't support HA. If a null transform hack (mobileHA) is in fact set, it will prevent other tranform subproperties from taking effect. */\n /* Note: You can read more about the use of mobileHA in Velocity's documentation: VelocityJS.org/#mobileHA. */\n opts.mobileHA = (opts.mobileHA && Velocity.State.isMobile && !Velocity.State.isGingerbread);\n\n /***********************\n Part II: Queueing\n ***********************/\n\n /* When a set of elements is targeted by a Velocity call, the set is broken up and each element has the current Velocity call individually queued onto it.\n In this way, each element's existing queue is respected; some elements may already be animating and accordingly should not have this current Velocity call triggered immediately. */\n /* In each queue, tween data is processed for each animating property then pushed onto the call-wide calls array. When the last element in the set has had its tweens processed,\n the call array is pushed to Velocity.State.calls for live processing by the requestAnimationFrame tick. */\n function buildQueue (next) {\n\n /*******************\n Option: Begin\n *******************/\n\n /* The begin callback is fired once per call -- not once per elemenet -- and is passed the full raw DOM element set as both its context and its first argument. */\n if (opts.begin && elementsIndex === 0) {\n /* We throw callbacks in a setTimeout so that thrown errors don't halt the execution of Velocity itself. */\n try {\n opts.begin.call(elements, elements);\n } catch (error) {\n setTimeout(function() { throw error; }, 1);\n }\n }\n\n /*****************************************\n Tween Data Construction (for Scroll)\n *****************************************/\n\n /* Note: In order to be subjected to chaining and animation options, scroll's tweening is routed through Velocity as if it were a standard CSS property animation. */\n if (action === \"scroll\") {\n /* The scroll action uniquely takes an optional \"offset\" option -- specified in pixels -- that offsets the targeted scroll position. */\n var scrollDirection = (/^x$/i.test(opts.axis) ? \"Left\" : \"Top\"),\n scrollOffset = parseFloat(opts.offset) || 0,\n scrollPositionCurrent,\n scrollPositionCurrentAlternate,\n scrollPositionEnd;\n\n /* Scroll also uniquely takes an optional \"container\" option, which indicates the parent element that should be scrolled --\n as opposed to the browser window itself. This is useful for scrolling toward an element that's inside an overflowing parent element. */\n if (opts.container) {\n /* Ensure that either a jQuery object or a raw DOM element was passed in. */\n if (Type.isWrapped(opts.container) || Type.isNode(opts.container)) {\n /* Extract the raw DOM element from the jQuery wrapper. */\n opts.container = opts.container[0] || opts.container;\n /* Note: Unlike other properties in Velocity, the browser's scroll position is never cached since it so frequently changes\n (due to the user's natural interaction with the page). */\n scrollPositionCurrent = opts.container[\"scroll\" + scrollDirection]; /* GET */\n\n /* $.position() values are relative to the container's currently viewable area (without taking into account the container's true dimensions\n -- say, for example, if the container was not overflowing). Thus, the scroll end value is the sum of the child element's position *and*\n the scroll container's current scroll position. */\n scrollPositionEnd = (scrollPositionCurrent + $(element).position()[scrollDirection.toLowerCase()]) + scrollOffset; /* GET */\n /* If a value other than a jQuery object or a raw DOM element was passed in, default to null so that this option is ignored. */\n } else {\n opts.container = null;\n }\n } else {\n /* If the window itself is being scrolled -- not a containing element -- perform a live scroll position lookup using\n the appropriate cached property names (which differ based on browser type). */\n scrollPositionCurrent = Velocity.State.scrollAnchor[Velocity.State[\"scrollProperty\" + scrollDirection]]; /* GET */\n /* When scrolling the browser window, cache the alternate axis's current value since window.scrollTo() doesn't let us change only one value at a time. */\n scrollPositionCurrentAlternate = Velocity.State.scrollAnchor[Velocity.State[\"scrollProperty\" + (scrollDirection === \"Left\" ? \"Top\" : \"Left\")]]; /* GET */\n\n /* Unlike $.position(), $.offset() values are relative to the browser window's true dimensions -- not merely its currently viewable area --\n and therefore end values do not need to be compounded onto current values. */\n scrollPositionEnd = $(element).offset()[scrollDirection.toLowerCase()] + scrollOffset; /* GET */\n }\n\n /* Since there's only one format that scroll's associated tweensContainer can take, we create it manually. */\n tweensContainer = {\n scroll: {\n rootPropertyValue: false,\n startValue: scrollPositionCurrent,\n currentValue: scrollPositionCurrent,\n endValue: scrollPositionEnd,\n unitType: \"\",\n easing: opts.easing,\n scrollData: {\n container: opts.container,\n direction: scrollDirection,\n alternateValue: scrollPositionCurrentAlternate\n }\n },\n element: element\n };\n\n if (Velocity.debug) console.log(\"tweensContainer (scroll): \", tweensContainer.scroll, element);\n\n /******************************************\n Tween Data Construction (for Reverse)\n ******************************************/\n\n /* Reverse acts like a \"start\" action in that a property map is animated toward. The only difference is\n that the property map used for reverse is the inverse of the map used in the previous call. Thus, we manipulate\n the previous call to construct our new map: use the previous map's end values as our new map's start values. Copy over all other data. */\n /* Note: Reverse can be directly called via the \"reverse\" parameter, or it can be indirectly triggered via the loop option. (Loops are composed of multiple reverses.) */\n /* Note: Reverse calls do not need to be consecutively chained onto a currently-animating element in order to operate on cached values;\n there is no harm to reverse being called on a potentially stale data cache since reverse's behavior is simply defined\n as reverting to the element's values as they were prior to the previous *Velocity* call. */\n } else if (action === \"reverse\") {\n /* Abort if there is no prior animation data to reverse to. */\n if (!Data(element).tweensContainer) {\n /* Dequeue the element so that this queue entry releases itself immediately, allowing subsequent queue entries to run. */\n $.dequeue(element, opts.queue);\n\n return;\n } else {\n /*********************\n Options Parsing\n *********************/\n\n /* If the element was hidden via the display option in the previous call,\n revert display to \"auto\" prior to reversal so that the element is visible again. */\n if (Data(element).opts.display === \"none\") {\n Data(element).opts.display = \"auto\";\n }\n\n if (Data(element).opts.visibility === \"hidden\") {\n Data(element).opts.visibility = \"visible\";\n }\n\n /* If the loop option was set in the previous call, disable it so that \"reverse\" calls aren't recursively generated.\n Further, remove the previous call's callback options; typically, users do not want these to be refired. */\n Data(element).opts.loop = false;\n Data(element).opts.begin = null;\n Data(element).opts.complete = null;\n\n /* Since we're extending an opts object that has already been extended with the defaults options object,\n we remove non-explicitly-defined properties that are auto-assigned values. */\n if (!options.easing) {\n delete opts.easing;\n }\n\n if (!options.duration) {\n delete opts.duration;\n }\n\n /* The opts object used for reversal is an extension of the options object optionally passed into this\n reverse call plus the options used in the previous Velocity call. */\n opts = $.extend({}, Data(element).opts, opts);\n\n /*************************************\n Tweens Container Reconstruction\n *************************************/\n\n /* Create a deepy copy (indicated via the true flag) of the previous call's tweensContainer. */\n var lastTweensContainer = $.extend(true, {}, Data(element).tweensContainer);\n\n /* Manipulate the previous tweensContainer by replacing its end values and currentValues with its start values. */\n for (var lastTween in lastTweensContainer) {\n /* In addition to tween data, tweensContainers contain an element property that we ignore here. */\n if (lastTween !== \"element\") {\n var lastStartValue = lastTweensContainer[lastTween].startValue;\n\n lastTweensContainer[lastTween].startValue = lastTweensContainer[lastTween].currentValue = lastTweensContainer[lastTween].endValue;\n lastTweensContainer[lastTween].endValue = lastStartValue;\n\n /* Easing is the only option that embeds into the individual tween data (since it can be defined on a per-property basis).\n Accordingly, every property's easing value must be updated when an options object is passed in with a reverse call.\n The side effect of this extensibility is that all per-property easing values are forcefully reset to the new value. */\n if (!Type.isEmptyObject(options)) {\n lastTweensContainer[lastTween].easing = opts.easing;\n }\n\n if (Velocity.debug) console.log(\"reverse tweensContainer (\" + lastTween + \"): \" + JSON.stringify(lastTweensContainer[lastTween]), element);\n }\n }\n\n tweensContainer = lastTweensContainer;\n }\n\n /*****************************************\n Tween Data Construction (for Start)\n *****************************************/\n\n } else if (action === \"start\") {\n\n /*************************\n Value Transferring\n *************************/\n\n /* If this queue entry follows a previous Velocity-initiated queue entry *and* if this entry was created\n while the element was in the process of being animated by Velocity, then this current call is safe to use\n the end values from the prior call as its start values. Velocity attempts to perform this value transfer\n process whenever possible in order to avoid requerying the DOM. */\n /* If values aren't transferred from a prior call and start values were not forcefed by the user (more on this below),\n then the DOM is queried for the element's current values as a last resort. */\n /* Note: Conversely, animation reversal (and looping) *always* perform inter-call value transfers; they never requery the DOM. */\n var lastTweensContainer;\n\n /* The per-element isAnimating flag is used to indicate whether it's safe (i.e. the data isn't stale)\n to transfer over end values to use as start values. If it's set to true and there is a previous\n Velocity call to pull values from, do so. */\n if (Data(element).tweensContainer && Data(element).isAnimating === true) {\n lastTweensContainer = Data(element).tweensContainer;\n }\n\n /***************************\n Tween Data Calculation\n ***************************/\n\n /* This function parses property data and defaults endValue, easing, and startValue as appropriate. */\n /* Property map values can either take the form of 1) a single value representing the end value,\n or 2) an array in the form of [ endValue, [, easing] [, startValue] ].\n The optional third parameter is a forcefed startValue to be used instead of querying the DOM for\n the element's current value. Read Velocity's docmentation to learn more about forcefeeding: VelocityJS.org/#forcefeeding */\n function parsePropertyValue (valueData, skipResolvingEasing) {\n var endValue = undefined,\n easing = undefined,\n startValue = undefined;\n\n /* Handle the array format, which can be structured as one of three potential overloads:\n A) [ endValue, easing, startValue ], B) [ endValue, easing ], or C) [ endValue, startValue ] */\n if (Type.isArray(valueData)) {\n /* endValue is always the first item in the array. Don't bother validating endValue's value now\n since the ensuing property cycling logic does that. */\n endValue = valueData[0];\n\n /* Two-item array format: If the second item is a number, function, or hex string, treat it as a\n start value since easings can only be non-hex strings or arrays. */\n if ((!Type.isArray(valueData[1]) && /^[\\d-]/.test(valueData[1])) || Type.isFunction(valueData[1]) || CSS.RegEx.isHex.test(valueData[1])) {\n startValue = valueData[1];\n /* Two or three-item array: If the second item is a non-hex string or an array, treat it as an easing. */\n } else if ((Type.isString(valueData[1]) && !CSS.RegEx.isHex.test(valueData[1])) || Type.isArray(valueData[1])) {\n easing = skipResolvingEasing ? valueData[1] : getEasing(valueData[1], opts.duration);\n\n /* Don't bother validating startValue's value now since the ensuing property cycling logic inherently does that. */\n if (valueData[2] !== undefined) {\n startValue = valueData[2];\n }\n }\n /* Handle the single-value format. */\n } else {\n endValue = valueData;\n }\n\n /* Default to the call's easing if a per-property easing type was not defined. */\n if (!skipResolvingEasing) {\n easing = easing || opts.easing;\n }\n\n /* If functions were passed in as values, pass the function the current element as its context,\n plus the element's index and the element set's size as arguments. Then, assign the returned value. */\n if (Type.isFunction(endValue)) {\n endValue = endValue.call(element, elementsIndex, elementsLength);\n }\n\n if (Type.isFunction(startValue)) {\n startValue = startValue.call(element, elementsIndex, elementsLength);\n }\n\n /* Allow startValue to be left as undefined to indicate to the ensuing code that its value was not forcefed. */\n return [ endValue || 0, easing, startValue ];\n }\n\n /* Cycle through each property in the map, looking for shorthand color properties (e.g. \"color\" as opposed to \"colorRed\"). Inject the corresponding\n colorRed, colorGreen, and colorBlue RGB component tweens into the propertiesMap (which Velocity understands) and remove the shorthand property. */\n $.each(propertiesMap, function(property, value) {\n /* Find shorthand color properties that have been passed a hex string. */\n if (RegExp(\"^\" + CSS.Lists.colors.join(\"$|^\") + \"$\").test(property)) {\n /* Parse the value data for each shorthand. */\n var valueData = parsePropertyValue(value, true),\n endValue = valueData[0],\n easing = valueData[1],\n startValue = valueData[2];\n\n if (CSS.RegEx.isHex.test(endValue)) {\n /* Convert the hex strings into their RGB component arrays. */\n var colorComponents = [ \"Red\", \"Green\", \"Blue\" ],\n endValueRGB = CSS.Values.hexToRgb(endValue),\n startValueRGB = startValue ? CSS.Values.hexToRgb(startValue) : undefined;\n\n /* Inject the RGB component tweens into propertiesMap. */\n for (var i = 0; i < colorComponents.length; i++) {\n var dataArray = [ endValueRGB[i] ];\n\n if (easing) {\n dataArray.push(easing);\n }\n\n if (startValueRGB !== undefined) {\n dataArray.push(startValueRGB[i]);\n }\n\n propertiesMap[property + colorComponents[i]] = dataArray;\n }\n\n /* Remove the intermediary shorthand property entry now that we've processed it. */\n delete propertiesMap[property];\n }\n }\n });\n\n /* Create a tween out of each property, and append its associated data to tweensContainer. */\n for (var property in propertiesMap) {\n\n /**************************\n Start Value Sourcing\n **************************/\n\n /* Parse out endValue, easing, and startValue from the property's data. */\n var valueData = parsePropertyValue(propertiesMap[property]),\n endValue = valueData[0],\n easing = valueData[1],\n startValue = valueData[2];\n\n /* Now that the original property name's format has been used for the parsePropertyValue() lookup above,\n we force the property to its camelCase styling to normalize it for manipulation. */\n property = CSS.Names.camelCase(property);\n\n /* In case this property is a hook, there are circumstances where we will intend to work on the hook's root property and not the hooked subproperty. */\n var rootProperty = CSS.Hooks.getRoot(property),\n rootPropertyValue = false;\n\n /* Other than for the dummy tween property, properties that are not supported by the browser (and do not have an associated normalization) will\n inherently produce no style changes when set, so they are skipped in order to decrease animation tick overhead.\n Property support is determined via prefixCheck(), which returns a false flag when no supported is detected. */\n /* Note: Since SVG elements have some of their properties directly applied as HTML attributes,\n there is no way to check for their explicit browser support, and so we skip skip this check for them. */\n if (!Data(element).isSVG && rootProperty !== \"tween\" && CSS.Names.prefixCheck(rootProperty)[1] === false && CSS.Normalizations.registered[rootProperty] === undefined) {\n if (Velocity.debug) console.log(\"Skipping [\" + rootProperty + \"] due to a lack of browser support.\");\n\n continue;\n }\n\n /* If the display option is being set to a non-\"none\" (e.g. \"block\") and opacity (filter on IE<=8) is being\n animated to an endValue of non-zero, the user's intention is to fade in from invisible, thus we forcefeed opacity\n a startValue of 0 if its startValue hasn't already been sourced by value transferring or prior forcefeeding. */\n if (((opts.display !== undefined && opts.display !== null && opts.display !== \"none\") || (opts.visibility !== undefined && opts.visibility !== \"hidden\")) && /opacity|filter/.test(property) && !startValue && endValue !== 0) {\n startValue = 0;\n }\n\n /* If values have been transferred from the previous Velocity call, extract the endValue and rootPropertyValue\n for all of the current call's properties that were *also* animated in the previous call. */\n /* Note: Value transferring can optionally be disabled by the user via the _cacheValues option. */\n if (opts._cacheValues && lastTweensContainer && lastTweensContainer[property]) {\n if (startValue === undefined) {\n startValue = lastTweensContainer[property].endValue + lastTweensContainer[property].unitType;\n }\n\n /* The previous call's rootPropertyValue is extracted from the element's data cache since that's the\n instance of rootPropertyValue that gets freshly updated by the tweening process, whereas the rootPropertyValue\n attached to the incoming lastTweensContainer is equal to the root property's value prior to any tweening. */\n rootPropertyValue = Data(element).rootPropertyValueCache[rootProperty];\n /* If values were not transferred from a previous Velocity call, query the DOM as needed. */\n } else {\n /* Handle hooked properties. */\n if (CSS.Hooks.registered[property]) {\n if (startValue === undefined) {\n rootPropertyValue = CSS.getPropertyValue(element, rootProperty); /* GET */\n /* Note: The following getPropertyValue() call does not actually trigger a DOM query;\n getPropertyValue() will extract the hook from rootPropertyValue. */\n startValue = CSS.getPropertyValue(element, property, rootPropertyValue);\n /* If startValue is already defined via forcefeeding, do not query the DOM for the root property's value;\n just grab rootProperty's zero-value template from CSS.Hooks. This overwrites the element's actual\n root property value (if one is set), but this is acceptable since the primary reason users forcefeed is\n to avoid DOM queries, and thus we likewise avoid querying the DOM for the root property's value. */\n } else {\n /* Grab this hook's zero-value template, e.g. \"0px 0px 0px black\". */\n rootPropertyValue = CSS.Hooks.templates[rootProperty][1];\n }\n /* Handle non-hooked properties that haven't already been defined via forcefeeding. */\n } else if (startValue === undefined) {\n startValue = CSS.getPropertyValue(element, property); /* GET */\n }\n }\n\n /**************************\n Value Data Extraction\n **************************/\n\n var separatedValue,\n endValueUnitType,\n startValueUnitType,\n operator = false;\n\n /* Separates a property value into its numeric value and its unit type. */\n function separateValue (property, value) {\n var unitType,\n numericValue;\n\n numericValue = (value || \"0\")\n .toString()\n .toLowerCase()\n /* Match the unit type at the end of the value. */\n .replace(/[%A-z]+$/, function(match) {\n /* Grab the unit type. */\n unitType = match;\n\n /* Strip the unit type off of value. */\n return \"\";\n });\n\n /* If no unit type was supplied, assign one that is appropriate for this property (e.g. \"deg\" for rotateZ or \"px\" for width). */\n if (!unitType) {\n unitType = CSS.Values.getUnitType(property);\n }\n\n return [ numericValue, unitType ];\n }\n\n /* Separate startValue. */\n separatedValue = separateValue(property, startValue);\n startValue = separatedValue[0];\n startValueUnitType = separatedValue[1];\n\n /* Separate endValue, and extract a value operator (e.g. \"+=\", \"-=\") if one exists. */\n separatedValue = separateValue(property, endValue);\n endValue = separatedValue[0].replace(/^([+-\\/*])=/, function(match, subMatch) {\n operator = subMatch;\n\n /* Strip the operator off of the value. */\n return \"\";\n });\n endValueUnitType = separatedValue[1];\n\n /* Parse float values from endValue and startValue. Default to 0 if NaN is returned. */\n startValue = parseFloat(startValue) || 0;\n endValue = parseFloat(endValue) || 0;\n\n /***************************************\n Property-Specific Value Conversion\n ***************************************/\n\n /* Custom support for properties that don't actually accept the % unit type, but where pollyfilling is trivial and relatively foolproof. */\n if (endValueUnitType === \"%\") {\n /* A %-value fontSize/lineHeight is relative to the parent's fontSize (as opposed to the parent's dimensions),\n which is identical to the em unit's behavior, so we piggyback off of that. */\n if (/^(fontSize|lineHeight)$/.test(property)) {\n /* Convert % into an em decimal value. */\n endValue = endValue / 100;\n endValueUnitType = \"em\";\n /* For scaleX and scaleY, convert the value into its decimal format and strip off the unit type. */\n } else if (/^scale/.test(property)) {\n endValue = endValue / 100;\n endValueUnitType = \"\";\n /* For RGB components, take the defined percentage of 255 and strip off the unit type. */\n } else if (/(Red|Green|Blue)$/i.test(property)) {\n endValue = (endValue / 100) * 255;\n endValueUnitType = \"\";\n }\n }\n\n /***************************\n Unit Ratio Calculation\n ***************************/\n\n /* When queried, the browser returns (most) CSS property values in pixels. Therefore, if an endValue with a unit type of\n %, em, or rem is animated toward, startValue must be converted from pixels into the same unit type as endValue in order\n for value manipulation logic (increment/decrement) to proceed. Further, if the startValue was forcefed or transferred\n from a previous call, startValue may also not be in pixels. Unit conversion logic therefore consists of two steps:\n 1) Calculating the ratio of %/em/rem/vh/vw relative to pixels\n 2) Converting startValue into the same unit of measurement as endValue based on these ratios. */\n /* Unit conversion ratios are calculated by inserting a sibling node next to the target node, copying over its position property,\n setting values with the target unit type then comparing the returned pixel value. */\n /* Note: Even if only one of these unit types is being animated, all unit ratios are calculated at once since the overhead\n of batching the SETs and GETs together upfront outweights the potential overhead\n of layout thrashing caused by re-querying for uncalculated ratios for subsequently-processed properties. */\n /* Todo: Shift this logic into the calls' first tick instance so that it's synced with RAF. */\n function calculateUnitRatios () {\n\n /************************\n Same Ratio Checks\n ************************/\n\n /* The properties below are used to determine whether the element differs sufficiently from this call's\n previously iterated element to also differ in its unit conversion ratios. If the properties match up with those\n of the prior element, the prior element's conversion ratios are used. Like most optimizations in Velocity,\n this is done to minimize DOM querying. */\n var sameRatioIndicators = {\n myParent: element.parentNode || document.body, /* GET */\n position: CSS.getPropertyValue(element, \"position\"), /* GET */\n fontSize: CSS.getPropertyValue(element, \"fontSize\") /* GET */\n },\n /* Determine if the same % ratio can be used. % is based on the element's position value and its parent's width and height dimensions. */\n samePercentRatio = ((sameRatioIndicators.position === callUnitConversionData.lastPosition) && (sameRatioIndicators.myParent === callUnitConversionData.lastParent)),\n /* Determine if the same em ratio can be used. em is relative to the element's fontSize. */\n sameEmRatio = (sameRatioIndicators.fontSize === callUnitConversionData.lastFontSize);\n\n /* Store these ratio indicators call-wide for the next element to compare against. */\n callUnitConversionData.lastParent = sameRatioIndicators.myParent;\n callUnitConversionData.lastPosition = sameRatioIndicators.position;\n callUnitConversionData.lastFontSize = sameRatioIndicators.fontSize;\n\n /***************************\n Element-Specific Units\n ***************************/\n\n /* Note: IE8 rounds to the nearest pixel when returning CSS values, thus we perform conversions using a measurement\n of 100 (instead of 1) to give our ratios a precision of at least 2 decimal values. */\n var measurement = 100,\n unitRatios = {};\n\n if (!sameEmRatio || !samePercentRatio) {\n var dummy = Data(element).isSVG ? document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\") : document.createElement(\"div\");\n\n Velocity.init(dummy);\n sameRatioIndicators.myParent.appendChild(dummy);\n\n /* To accurately and consistently calculate conversion ratios, the element's cascaded overflow and box-sizing are stripped.\n Similarly, since width/height can be artificially constrained by their min-/max- equivalents, these are controlled for as well. */\n /* Note: Overflow must be also be controlled for per-axis since the overflow property overwrites its per-axis values. */\n $.each([ \"overflow\", \"overflowX\", \"overflowY\" ], function(i, property) {\n Velocity.CSS.setPropertyValue(dummy, property, \"hidden\");\n });\n Velocity.CSS.setPropertyValue(dummy, \"position\", sameRatioIndicators.position);\n Velocity.CSS.setPropertyValue(dummy, \"fontSize\", sameRatioIndicators.fontSize);\n Velocity.CSS.setPropertyValue(dummy, \"boxSizing\", \"content-box\");\n\n /* width and height act as our proxy properties for measuring the horizontal and vertical % ratios. */\n $.each([ \"minWidth\", \"maxWidth\", \"width\", \"minHeight\", \"maxHeight\", \"height\" ], function(i, property) {\n Velocity.CSS.setPropertyValue(dummy, property, measurement + \"%\");\n });\n /* paddingLeft arbitrarily acts as our proxy property for the em ratio. */\n Velocity.CSS.setPropertyValue(dummy, \"paddingLeft\", measurement + \"em\");\n\n /* Divide the returned value by the measurement to get the ratio between 1% and 1px. Default to 1 since working with 0 can produce Infinite. */\n unitRatios.percentToPxWidth = callUnitConversionData.lastPercentToPxWidth = (parseFloat(CSS.getPropertyValue(dummy, \"width\", null, true)) || 1) / measurement; /* GET */\n unitRatios.percentToPxHeight = callUnitConversionData.lastPercentToPxHeight = (parseFloat(CSS.getPropertyValue(dummy, \"height\", null, true)) || 1) / measurement; /* GET */\n unitRatios.emToPx = callUnitConversionData.lastEmToPx = (parseFloat(CSS.getPropertyValue(dummy, \"paddingLeft\")) || 1) / measurement; /* GET */\n\n sameRatioIndicators.myParent.removeChild(dummy);\n } else {\n unitRatios.emToPx = callUnitConversionData.lastEmToPx;\n unitRatios.percentToPxWidth = callUnitConversionData.lastPercentToPxWidth;\n unitRatios.percentToPxHeight = callUnitConversionData.lastPercentToPxHeight;\n }\n\n /***************************\n Element-Agnostic Units\n ***************************/\n\n /* Whereas % and em ratios are determined on a per-element basis, the rem unit only needs to be checked\n once per call since it's exclusively dependant upon document.body's fontSize. If this is the first time\n that calculateUnitRatios() is being run during this call, remToPx will still be set to its default value of null,\n so we calculate it now. */\n if (callUnitConversionData.remToPx === null) {\n /* Default to browsers' default fontSize of 16px in the case of 0. */\n callUnitConversionData.remToPx = parseFloat(CSS.getPropertyValue(document.body, \"fontSize\")) || 16; /* GET */\n }\n\n /* Similarly, viewport units are %-relative to the window's inner dimensions. */\n if (callUnitConversionData.vwToPx === null) {\n callUnitConversionData.vwToPx = parseFloat(window.innerWidth) / 100; /* GET */\n callUnitConversionData.vhToPx = parseFloat(window.innerHeight) / 100; /* GET */\n }\n\n unitRatios.remToPx = callUnitConversionData.remToPx;\n unitRatios.vwToPx = callUnitConversionData.vwToPx;\n unitRatios.vhToPx = callUnitConversionData.vhToPx;\n\n if (Velocity.debug >= 1) console.log(\"Unit ratios: \" + JSON.stringify(unitRatios), element);\n\n return unitRatios;\n }\n\n /********************\n Unit Conversion\n ********************/\n\n /* The * and / operators, which are not passed in with an associated unit, inherently use startValue's unit. Skip value and unit conversion. */\n if (/[\\/*]/.test(operator)) {\n endValueUnitType = startValueUnitType;\n /* If startValue and endValue differ in unit type, convert startValue into the same unit type as endValue so that if endValueUnitType\n is a relative unit (%, em, rem), the values set during tweening will continue to be accurately relative even if the metrics they depend\n on are dynamically changing during the course of the animation. Conversely, if we always normalized into px and used px for setting values, the px ratio\n would become stale if the original unit being animated toward was relative and the underlying metrics change during the animation. */\n /* Since 0 is 0 in any unit type, no conversion is necessary when startValue is 0 -- we just start at 0 with endValueUnitType. */\n } else if ((startValueUnitType !== endValueUnitType) && startValue !== 0) {\n /* Unit conversion is also skipped when endValue is 0, but *startValueUnitType* must be used for tween values to remain accurate. */\n /* Note: Skipping unit conversion here means that if endValueUnitType was originally a relative unit, the animation won't relatively\n match the underlying metrics if they change, but this is acceptable since we're animating toward invisibility instead of toward visibility,\n which remains past the point of the animation's completion. */\n if (endValue === 0) {\n endValueUnitType = startValueUnitType;\n } else {\n /* By this point, we cannot avoid unit conversion (it's undesirable since it causes layout thrashing).\n If we haven't already, we trigger calculateUnitRatios(), which runs once per element per call. */\n elementUnitConversionData = elementUnitConversionData || calculateUnitRatios();\n\n /* The following RegEx matches CSS properties that have their % values measured relative to the x-axis. */\n /* Note: W3C spec mandates that all of margin and padding's properties (even top and bottom) are %-relative to the *width* of the parent element. */\n var axis = (/margin|padding|left|right|width|text|word|letter/i.test(property) || /X$/.test(property) || property === \"x\") ? \"x\" : \"y\";\n\n /* In order to avoid generating n^2 bespoke conversion functions, unit conversion is a two-step process:\n 1) Convert startValue into pixels. 2) Convert this new pixel value into endValue's unit type. */\n switch (startValueUnitType) {\n case \"%\":\n /* Note: translateX and translateY are the only properties that are %-relative to an element's own dimensions -- not its parent's dimensions.\n Velocity does not include a special conversion process to account for this behavior. Therefore, animating translateX/Y from a % value\n to a non-% value will produce an incorrect start value. Fortunately, this sort of cross-unit conversion is rarely done by users in practice. */\n startValue *= (axis === \"x\" ? elementUnitConversionData.percentToPxWidth : elementUnitConversionData.percentToPxHeight);\n break;\n\n case \"px\":\n /* px acts as our midpoint in the unit conversion process; do nothing. */\n break;\n\n default:\n startValue *= elementUnitConversionData[startValueUnitType + \"ToPx\"];\n }\n\n /* Invert the px ratios to convert into to the target unit. */\n switch (endValueUnitType) {\n case \"%\":\n startValue *= 1 / (axis === \"x\" ? elementUnitConversionData.percentToPxWidth : elementUnitConversionData.percentToPxHeight);\n break;\n\n case \"px\":\n /* startValue is already in px, do nothing; we're done. */\n break;\n\n default:\n startValue *= 1 / elementUnitConversionData[endValueUnitType + \"ToPx\"];\n }\n }\n }\n\n /*********************\n Relative Values\n *********************/\n\n /* Operator logic must be performed last since it requires unit-normalized start and end values. */\n /* Note: Relative *percent values* do not behave how most people think; while one would expect \"+=50%\"\n to increase the property 1.5x its current value, it in fact increases the percent units in absolute terms:\n 50 points is added on top of the current % value. */\n switch (operator) {\n case \"+\":\n endValue = startValue + endValue;\n break;\n\n case \"-\":\n endValue = startValue - endValue;\n break;\n\n case \"*\":\n endValue = startValue * endValue;\n break;\n\n case \"/\":\n endValue = startValue / endValue;\n break;\n }\n\n /**************************\n tweensContainer Push\n **************************/\n\n /* Construct the per-property tween object, and push it to the element's tweensContainer. */\n tweensContainer[property] = {\n rootPropertyValue: rootPropertyValue,\n startValue: startValue,\n currentValue: startValue,\n endValue: endValue,\n unitType: endValueUnitType,\n easing: easing\n };\n\n if (Velocity.debug) console.log(\"tweensContainer (\" + property + \"): \" + JSON.stringify(tweensContainer[property]), element);\n }\n\n /* Along with its property data, store a reference to the element itself onto tweensContainer. */\n tweensContainer.element = element;\n }\n\n /*****************\n Call Push\n *****************/\n\n /* Note: tweensContainer can be empty if all of the properties in this call's property map were skipped due to not\n being supported by the browser. The element property is used for checking that the tweensContainer has been appended to. */\n if (tweensContainer.element) {\n /* Apply the \"velocity-animating\" indicator class. */\n CSS.Values.addClass(element, \"velocity-animating\");\n\n /* The call array houses the tweensContainers for each element being animated in the current call. */\n call.push(tweensContainer);\n\n /* Store the tweensContainer and options if we're working on the default effects queue, so that they can be used by the reverse command. */\n if (opts.queue === \"\") {\n Data(element).tweensContainer = tweensContainer;\n Data(element).opts = opts;\n }\n\n /* Switch on the element's animating flag. */\n Data(element).isAnimating = true;\n\n /* Once the final element in this call's element set has been processed, push the call array onto\n Velocity.State.calls for the animation tick to immediately begin processing. */\n if (elementsIndex === elementsLength - 1) {\n /* Add the current call plus its associated metadata (the element set and the call's options) onto the global call container.\n Anything on this call container is subjected to tick() processing. */\n Velocity.State.calls.push([ call, elements, opts, null, promiseData.resolver ]);\n\n /* If the animation tick isn't running, start it. (Velocity shuts it off when there are no active calls to process.) */\n if (Velocity.State.isTicking === false) {\n Velocity.State.isTicking = true;\n\n /* Start the tick loop. */\n tick();\n }\n } else {\n elementsIndex++;\n }\n }\n }\n\n /* When the queue option is set to false, the call skips the element's queue and fires immediately. */\n if (opts.queue === false) {\n /* Since this buildQueue call doesn't respect the element's existing queue (which is where a delay option would have been appended),\n we manually inject the delay property here with an explicit setTimeout. */\n if (opts.delay) {\n setTimeout(buildQueue, opts.delay);\n } else {\n buildQueue();\n }\n /* Otherwise, the call undergoes element queueing as normal. */\n /* Note: To interoperate with jQuery, Velocity uses jQuery's own $.queue() stack for queuing logic. */\n } else {\n $.queue(element, opts.queue, function(next, clearQueue) {\n /* If the clearQueue flag was passed in by the stop command, resolve this call's promise. (Promises can only be resolved once,\n so it's fine if this is repeatedly triggered for each element in the associated call.) */\n if (clearQueue === true) {\n if (promiseData.promise) {\n promiseData.resolver(elements);\n }\n\n /* Do not continue with animation queueing. */\n return true;\n }\n\n /* This flag indicates to the upcoming completeCall() function that this queue entry was initiated by Velocity.\n See completeCall() for further details. */\n Velocity.velocityQueueEntryFlag = true;\n\n buildQueue(next);\n });\n }\n\n /*********************\n Auto-Dequeuing\n *********************/\n\n /* As per jQuery's $.queue() behavior, to fire the first non-custom-queue entry on an element, the element\n must be dequeued if its queue stack consists *solely* of the current call. (This can be determined by checking\n for the \"inprogress\" item that jQuery prepends to active queue stack arrays.) Regardless, whenever the element's\n queue is further appended with additional items -- including $.delay()'s or even $.animate() calls, the queue's\n first entry is automatically fired. This behavior contrasts that of custom queues, which never auto-fire. */\n /* Note: When an element set is being subjected to a non-parallel Velocity call, the animation will not begin until\n each one of the elements in the set has reached the end of its individually pre-existing queue chain. */\n /* Note: Unfortunately, most people don't fully grasp jQuery's powerful, yet quirky, $.queue() function.\n Lean more here: http://stackoverflow.com/questions/1058158/can-somebody-explain-jquery-queue-to-me */\n if ((opts.queue === \"\" || opts.queue === \"fx\") && $.queue(element)[0] !== \"inprogress\") {\n $.dequeue(element);\n }\n }\n\n /**************************\n Element Set Iteration\n **************************/\n\n /* If the \"nodeType\" property exists on the elements variable, we're animating a single element.\n Place it in an array so that $.each() can iterate over it. */\n $.each(elements, function(i, element) {\n /* Ensure each element in a set has a nodeType (is a real element) to avoid throwing errors. */\n if (Type.isNode(element)) {\n processElement.call(element);\n }\n });\n\n /******************\n Option: Loop\n ******************/\n\n /* The loop option accepts an integer indicating how many times the element should loop between the values in the\n current call's properties map and the element's property values prior to this call. */\n /* Note: The loop option's logic is performed here -- after element processing -- because the current call needs\n to undergo its queue insertion prior to the loop option generating its series of constituent \"reverse\" calls,\n which chain after the current call. Two reverse calls (two \"alternations\") constitute one loop. */\n var opts = $.extend({}, Velocity.defaults, options),\n reverseCallsCount;\n\n opts.loop = parseInt(opts.loop);\n reverseCallsCount = (opts.loop * 2) - 1;\n\n if (opts.loop) {\n /* Double the loop count to convert it into its appropriate number of \"reverse\" calls.\n Subtract 1 from the resulting value since the current call is included in the total alternation count. */\n for (var x = 0; x < reverseCallsCount; x++) {\n /* Since the logic for the reverse action occurs inside Queueing and therefore this call's options object\n isn't parsed until then as well, the current call's delay option must be explicitly passed into the reverse\n call so that the delay logic that occurs inside *Pre-Queueing* can process it. */\n var reverseOptions = {\n delay: opts.delay,\n progress: opts.progress\n };\n\n /* If a complete callback was passed into this call, transfer it to the loop redirect's final \"reverse\" call\n so that it's triggered when the entire redirect is complete (and not when the very first animation is complete). */\n if (x === reverseCallsCount - 1) {\n reverseOptions.display = opts.display;\n reverseOptions.visibility = opts.visibility;\n reverseOptions.complete = opts.complete;\n }\n\n animate(elements, \"reverse\", reverseOptions);\n }\n }\n\n /***************\n Chaining\n ***************/\n\n /* Return the elements back to the call chain, with wrapped elements taking precedence in case Velocity was called via the $.fn. extension. */\n return getChain();\n };\n\n /* Turn Velocity into the animation function, extended with the pre-existing Velocity object. */\n Velocity = $.extend(animate, Velocity);\n /* For legacy support, also expose the literal animate method. */\n Velocity.animate = animate;\n\n /**************\n Timing\n **************/\n\n /* Ticker function. */\n var ticker = window.requestAnimationFrame || rAFShim;\n\n /* Inactive browser tabs pause rAF, which results in all active animations immediately sprinting to their completion states when the tab refocuses.\n To get around this, we dynamically switch rAF to setTimeout (which the browser *doesn't* pause) when the tab loses focus. We skip this for mobile\n devices to avoid wasting battery power on inactive tabs. */\n /* Note: Tab focus detection doesn't work on older versions of IE, but that's okay since they don't support rAF to begin with. */\n if (!Velocity.State.isMobile && document.hidden !== undefined) {\n document.addEventListener(\"visibilitychange\", function() {\n /* Reassign the rAF function (which the global tick() function uses) based on the tab's focus state. */\n if (document.hidden) {\n ticker = function(callback) {\n /* The tick function needs a truthy first argument in order to pass its internal timestamp check. */\n return setTimeout(function() { callback(true) }, 16);\n };\n\n /* The rAF loop has been paused by the browser, so we manually restart the tick. */\n tick();\n } else {\n ticker = window.requestAnimationFrame || rAFShim;\n }\n });\n }\n\n /************\n Tick\n ************/\n\n /* Note: All calls to Velocity are pushed to the Velocity.State.calls array, which is fully iterated through upon each tick. */\n function tick (timestamp) {\n /* An empty timestamp argument indicates that this is the first tick occurence since ticking was turned on.\n We leverage this metadata to fully ignore the first tick pass since RAF's initial pass is fired whenever\n the browser's next tick sync time occurs, which results in the first elements subjected to Velocity\n calls being animated out of sync with any elements animated immediately thereafter. In short, we ignore\n the first RAF tick pass so that elements being immediately consecutively animated -- instead of simultaneously animated\n by the same Velocity call -- are properly batched into the same initial RAF tick and consequently remain in sync thereafter. */\n if (timestamp) {\n /* We ignore RAF's high resolution timestamp since it can be significantly offset when the browser is\n under high stress; we opt for choppiness over allowing the browser to drop huge chunks of frames. */\n var timeCurrent = (new Date).getTime();\n\n /********************\n Call Iteration\n ********************/\n\n var callsLength = Velocity.State.calls.length;\n\n /* To speed up iterating over this array, it is compacted (falsey items -- calls that have completed -- are removed)\n when its length has ballooned to a point that can impact tick performance. This only becomes necessary when animation\n has been continuous with many elements over a long period of time; whenever all active calls are completed, completeCall() clears Velocity.State.calls. */\n if (callsLength > 10000) {\n Velocity.State.calls = compactSparseArray(Velocity.State.calls);\n }\n\n /* Iterate through each active call. */\n for (var i = 0; i < callsLength; i++) {\n /* When a Velocity call is completed, its Velocity.State.calls entry is set to false. Continue on to the next call. */\n if (!Velocity.State.calls[i]) {\n continue;\n }\n\n /************************\n Call-Wide Variables\n ************************/\n\n var callContainer = Velocity.State.calls[i],\n call = callContainer[0],\n opts = callContainer[2],\n timeStart = callContainer[3],\n firstTick = !!timeStart,\n tweenDummyValue = null;\n\n /* If timeStart is undefined, then this is the first time that this call has been processed by tick().\n We assign timeStart now so that its value is as close to the real animation start time as possible.\n (Conversely, had timeStart been defined when this call was added to Velocity.State.calls, the delay\n between that time and now would cause the first few frames of the tween to be skipped since\n percentComplete is calculated relative to timeStart.) */\n /* Further, subtract 16ms (the approximate resolution of RAF) from the current time value so that the\n first tick iteration isn't wasted by animating at 0% tween completion, which would produce the\n same style value as the element's current value. */\n if (!timeStart) {\n timeStart = Velocity.State.calls[i][3] = timeCurrent - 16;\n }\n\n /* The tween's completion percentage is relative to the tween's start time, not the tween's start value\n (which would result in unpredictable tween durations since JavaScript's timers are not particularly accurate).\n Accordingly, we ensure that percentComplete does not exceed 1. */\n var percentComplete = Math.min((timeCurrent - timeStart) / opts.duration, 1);\n\n /**********************\n Element Iteration\n **********************/\n\n /* For every call, iterate through each of the elements in its set. */\n for (var j = 0, callLength = call.length; j < callLength; j++) {\n var tweensContainer = call[j],\n element = tweensContainer.element;\n\n /* Check to see if this element has been deleted midway through the animation by checking for the\n continued existence of its data cache. If it's gone, skip animating this element. */\n if (!Data(element)) {\n continue;\n }\n\n var transformPropertyExists = false;\n\n /**********************************\n Display & Visibility Toggling\n **********************************/\n\n /* If the display option is set to non-\"none\", set it upfront so that the element can become visible before tweening begins.\n (Otherwise, display's \"none\" value is set in completeCall() once the animation has completed.) */\n if (opts.display !== undefined && opts.display !== null && opts.display !== \"none\") {\n if (opts.display === \"flex\") {\n var flexValues = [ \"-webkit-box\", \"-moz-box\", \"-ms-flexbox\", \"-webkit-flex\" ];\n\n $.each(flexValues, function(i, flexValue) {\n CSS.setPropertyValue(element, \"display\", flexValue);\n });\n }\n\n CSS.setPropertyValue(element, \"display\", opts.display);\n }\n\n /* Same goes with the visibility option, but its \"none\" equivalent is \"hidden\". */\n if (opts.visibility !== undefined && opts.visibility !== \"hidden\") {\n CSS.setPropertyValue(element, \"visibility\", opts.visibility);\n }\n\n /************************\n Property Iteration\n ************************/\n\n /* For every element, iterate through each property. */\n for (var property in tweensContainer) {\n /* Note: In addition to property tween data, tweensContainer contains a reference to its associated element. */\n if (property !== \"element\") {\n var tween = tweensContainer[property],\n currentValue,\n /* Easing can either be a pre-genereated function or a string that references a pre-registered easing\n on the Velocity.Easings object. In either case, return the appropriate easing *function*. */\n easing = Type.isString(tween.easing) ? Velocity.Easings[tween.easing] : tween.easing;\n\n /******************************\n Current Value Calculation\n ******************************/\n\n /* If this is the last tick pass (if we've reached 100% completion for this tween),\n ensure that currentValue is explicitly set to its target endValue so that it's not subjected to any rounding. */\n if (percentComplete === 1) {\n currentValue = tween.endValue;\n /* Otherwise, calculate currentValue based on the current delta from startValue. */\n } else {\n var tweenDelta = tween.endValue - tween.startValue;\n currentValue = tween.startValue + (tweenDelta * easing(percentComplete, opts, tweenDelta));\n\n /* If no value change is occurring, don't proceed with DOM updating. */\n if (!firstTick && (currentValue === tween.currentValue)) {\n continue;\n }\n }\n\n tween.currentValue = currentValue;\n\n /* If we're tweening a fake 'tween' property in order to log transition values, update the one-per-call variable so that\n it can be passed into the progress callback. */\n if (property === \"tween\") {\n tweenDummyValue = currentValue;\n } else {\n /******************\n Hooks: Part I\n ******************/\n\n /* For hooked properties, the newly-updated rootPropertyValueCache is cached onto the element so that it can be used\n for subsequent hooks in this call that are associated with the same root property. If we didn't cache the updated\n rootPropertyValue, each subsequent update to the root property in this tick pass would reset the previous hook's\n updates to rootPropertyValue prior to injection. A nice performance byproduct of rootPropertyValue caching is that\n subsequently chained animations using the same hookRoot but a different hook can use this cached rootPropertyValue. */\n if (CSS.Hooks.registered[property]) {\n var hookRoot = CSS.Hooks.getRoot(property),\n rootPropertyValueCache = Data(element).rootPropertyValueCache[hookRoot];\n\n if (rootPropertyValueCache) {\n tween.rootPropertyValue = rootPropertyValueCache;\n }\n }\n\n /*****************\n DOM Update\n *****************/\n\n /* setPropertyValue() returns an array of the property name and property value post any normalization that may have been performed. */\n /* Note: To solve an IE<=8 positioning bug, the unit type is dropped when setting a property value of 0. */\n var adjustedSetData = CSS.setPropertyValue(element, /* SET */\n property,\n tween.currentValue + (parseFloat(currentValue) === 0 ? \"\" : tween.unitType),\n tween.rootPropertyValue,\n tween.scrollData);\n\n /*******************\n Hooks: Part II\n *******************/\n\n /* Now that we have the hook's updated rootPropertyValue (the post-processed value provided by adjustedSetData), cache it onto the element. */\n if (CSS.Hooks.registered[property]) {\n /* Since adjustedSetData contains normalized data ready for DOM updating, the rootPropertyValue needs to be re-extracted from its normalized form. ?? */\n if (CSS.Normalizations.registered[hookRoot]) {\n Data(element).rootPropertyValueCache[hookRoot] = CSS.Normalizations.registered[hookRoot](\"extract\", null, adjustedSetData[1]);\n } else {\n Data(element).rootPropertyValueCache[hookRoot] = adjustedSetData[1];\n }\n }\n\n /***************\n Transforms\n ***************/\n\n /* Flag whether a transform property is being animated so that flushTransformCache() can be triggered once this tick pass is complete. */\n if (adjustedSetData[0] === \"transform\") {\n transformPropertyExists = true;\n }\n\n }\n }\n }\n\n /****************\n mobileHA\n ****************/\n\n /* If mobileHA is enabled, set the translate3d transform to null to force hardware acceleration.\n It's safe to override this property since Velocity doesn't actually support its animation (hooks are used in its place). */\n if (opts.mobileHA) {\n /* Don't set the null transform hack if we've already done so. */\n if (Data(element).transformCache.translate3d === undefined) {\n /* All entries on the transformCache object are later concatenated into a single transform string via flushTransformCache(). */\n Data(element).transformCache.translate3d = \"(0px, 0px, 0px)\";\n\n transformPropertyExists = true;\n }\n }\n\n if (transformPropertyExists) {\n CSS.flushTransformCache(element);\n }\n }\n\n /* The non-\"none\" display value is only applied to an element once -- when its associated call is first ticked through.\n Accordingly, it's set to false so that it isn't re-processed by this call in the next tick. */\n if (opts.display !== undefined && opts.display !== \"none\") {\n Velocity.State.calls[i][2].display = false;\n }\n if (opts.visibility !== undefined && opts.visibility !== \"hidden\") {\n Velocity.State.calls[i][2].visibility = false;\n }\n\n /* Pass the elements and the timing data (percentComplete, msRemaining, timeStart, tweenDummyValue) into the progress callback. */\n if (opts.progress) {\n opts.progress.call(callContainer[1],\n callContainer[1],\n percentComplete,\n Math.max(0, (timeStart + opts.duration) - timeCurrent),\n timeStart,\n tweenDummyValue);\n }\n\n /* If this call has finished tweening, pass its index to completeCall() to handle call cleanup. */\n if (percentComplete === 1) {\n completeCall(i);\n }\n }\n }\n\n /* Note: completeCall() sets the isTicking flag to false when the last call on Velocity.State.calls has completed. */\n if (Velocity.State.isTicking) {\n ticker(tick);\n }\n }\n\n /**********************\n Call Completion\n **********************/\n\n /* Note: Unlike tick(), which processes all active calls at once, call completion is handled on a per-call basis. */\n function completeCall (callIndex, isStopped) {\n /* Ensure the call exists. */\n if (!Velocity.State.calls[callIndex]) {\n return false;\n }\n\n /* Pull the metadata from the call. */\n var call = Velocity.State.calls[callIndex][0],\n elements = Velocity.State.calls[callIndex][1],\n opts = Velocity.State.calls[callIndex][2],\n resolver = Velocity.State.calls[callIndex][4];\n\n var remainingCallsExist = false;\n\n /*************************\n Element Finalization\n *************************/\n\n for (var i = 0, callLength = call.length; i < callLength; i++) {\n var element = call[i].element;\n\n /* If the user set display to \"none\" (intending to hide the element), set it now that the animation has completed. */\n /* Note: display:none isn't set when calls are manually stopped (via Velocity(\"stop\"). */\n /* Note: Display gets ignored with \"reverse\" calls and infinite loops, since this behavior would be undesirable. */\n if (!isStopped && !opts.loop) {\n if (opts.display === \"none\") {\n CSS.setPropertyValue(element, \"display\", opts.display);\n }\n\n if (opts.visibility === \"hidden\") {\n CSS.setPropertyValue(element, \"visibility\", opts.visibility);\n }\n }\n\n /* If the element's queue is empty (if only the \"inprogress\" item is left at position 0) or if its queue is about to run\n a non-Velocity-initiated entry, turn off the isAnimating flag. A non-Velocity-initiatied queue entry's logic might alter\n an element's CSS values and thereby cause Velocity's cached value data to go stale. To detect if a queue entry was initiated by Velocity,\n we check for the existence of our special Velocity.queueEntryFlag declaration, which minifiers won't rename since the flag\n is assigned to jQuery's global $ object and thus exists out of Velocity's own scope. */\n if (opts.loop !== true && ($.queue(element)[1] === undefined || !/\\.velocityQueueEntryFlag/i.test($.queue(element)[1]))) {\n /* The element may have been deleted. Ensure that its data cache still exists before acting on it. */\n if (Data(element)) {\n Data(element).isAnimating = false;\n /* Clear the element's rootPropertyValueCache, which will become stale. */\n Data(element).rootPropertyValueCache = {};\n\n var transformHAPropertyExists = false;\n /* If any 3D transform subproperty is at its default value (regardless of unit type), remove it. */\n $.each(CSS.Lists.transforms3D, function(i, transformName) {\n var defaultValue = /^scale/.test(transformName) ? 1 : 0,\n currentValue = Data(element).transformCache[transformName];\n\n if (Data(element).transformCache[transformName] !== undefined && new RegExp(\"^\\\\(\" + defaultValue + \"[^.]\").test(currentValue)) {\n transformHAPropertyExists = true;\n\n delete Data(element).transformCache[transformName];\n }\n });\n\n /* Mobile devices have hardware acceleration removed at the end of the animation in order to avoid hogging the GPU's memory. */\n if (opts.mobileHA) {\n transformHAPropertyExists = true;\n delete Data(element).transformCache.translate3d;\n }\n\n /* Flush the subproperty removals to the DOM. */\n if (transformHAPropertyExists) {\n CSS.flushTransformCache(element);\n }\n\n /* Remove the \"velocity-animating\" indicator class. */\n CSS.Values.removeClass(element, \"velocity-animating\");\n }\n }\n\n /*********************\n Option: Complete\n *********************/\n\n /* Complete is fired once per call (not once per element) and is passed the full raw DOM element set as both its context and its first argument. */\n /* Note: Callbacks aren't fired when calls are manually stopped (via Velocity(\"stop\"). */\n if (!isStopped && opts.complete && !opts.loop && (i === callLength - 1)) {\n /* We throw callbacks in a setTimeout so that thrown errors don't halt the execution of Velocity itself. */\n try {\n opts.complete.call(elements, elements);\n } catch (error) {\n setTimeout(function() { throw error; }, 1);\n }\n }\n\n /**********************\n Promise Resolving\n **********************/\n\n /* Note: Infinite loops don't return promises. */\n if (resolver && opts.loop !== true) {\n resolver(elements);\n }\n\n /****************************\n Option: Loop (Infinite)\n ****************************/\n\n if (Data(element) && opts.loop === true && !isStopped) {\n /* If a rotateX/Y/Z property is being animated to 360 deg with loop:true, swap tween start/end values to enable\n continuous iterative rotation looping. (Otherise, the element would just rotate back and forth.) */\n $.each(Data(element).tweensContainer, function(propertyName, tweenContainer) {\n if (/^rotate/.test(propertyName) && parseFloat(tweenContainer.endValue) === 360) {\n tweenContainer.endValue = 0;\n tweenContainer.startValue = 360;\n }\n\n if (/^backgroundPosition/.test(propertyName) && parseFloat(tweenContainer.endValue) === 100 && tweenContainer.unitType === \"%\") {\n tweenContainer.endValue = 0;\n tweenContainer.startValue = 100;\n }\n });\n\n Velocity(element, \"reverse\", { loop: true, delay: opts.delay });\n }\n\n /***************\n Dequeueing\n ***************/\n\n /* Fire the next call in the queue so long as this call's queue wasn't set to false (to trigger a parallel animation),\n which would have already caused the next call to fire. Note: Even if the end of the animation queue has been reached,\n $.dequeue() must still be called in order to completely clear jQuery's animation queue. */\n if (opts.queue !== false) {\n $.dequeue(element, opts.queue);\n }\n }\n\n /************************\n Calls Array Cleanup\n ************************/\n\n /* Since this call is complete, set it to false so that the rAF tick skips it. This array is later compacted via compactSparseArray().\n (For performance reasons, the call is set to false instead of being deleted from the array: http://www.html5rocks.com/en/tutorials/speed/v8/) */\n Velocity.State.calls[callIndex] = false;\n\n /* Iterate through the calls array to determine if this was the final in-progress animation.\n If so, set a flag to end ticking and clear the calls array. */\n for (var j = 0, callsLength = Velocity.State.calls.length; j < callsLength; j++) {\n if (Velocity.State.calls[j] !== false) {\n remainingCallsExist = true;\n\n break;\n }\n }\n\n if (remainingCallsExist === false) {\n /* tick() will detect this flag upon its next iteration and subsequently turn itself off. */\n Velocity.State.isTicking = false;\n\n /* Clear the calls array so that its length is reset. */\n delete Velocity.State.calls;\n Velocity.State.calls = [];\n }\n }\n\n /******************\n Frameworks\n ******************/\n\n /* Both jQuery and Zepto allow their $.fn object to be extended to allow wrapped elements to be subjected to plugin calls.\n If either framework is loaded, register a \"velocity\" extension pointing to Velocity's core animate() method. Velocity\n also registers itself onto a global container (window.jQuery || window.Zepto || window) so that certain features are\n accessible beyond just a per-element scope. This master object contains an .animate() method, which is later assigned to $.fn\n (if jQuery or Zepto are present). Accordingly, Velocity can both act on wrapped DOM elements and stand alone for targeting raw DOM elements. */\n global.Velocity = Velocity;\n\n if (global !== window) {\n /* Assign the element function to Velocity's core animate() method. */\n global.fn.velocity = animate;\n /* Assign the object function's defaults to Velocity's global defaults object. */\n global.fn.velocity.defaults = Velocity.defaults;\n }\n\n /***********************\n Packaged Redirects\n ***********************/\n\n /* slideUp, slideDown */\n $.each([ \"Down\", \"Up\" ], function(i, direction) {\n Velocity.Redirects[\"slide\" + direction] = function (element, options, elementsIndex, elementsSize, elements, promiseData) {\n var opts = $.extend({}, options),\n begin = opts.begin,\n complete = opts.complete,\n computedValues = { height: \"\", marginTop: \"\", marginBottom: \"\", paddingTop: \"\", paddingBottom: \"\" },\n inlineValues = {};\n\n if (opts.display === undefined) {\n /* Show the element before slideDown begins and hide the element after slideUp completes. */\n /* Note: Inline elements cannot have dimensions animated, so they're reverted to inline-block. */\n opts.display = (direction === \"Down\" ? (Velocity.CSS.Values.getDisplayType(element) === \"inline\" ? \"inline-block\" : \"block\") : \"none\");\n }\n\n opts.begin = function() {\n /* If the user passed in a begin callback, fire it now. */\n begin && begin.call(elements, elements);\n\n /* Cache the elements' original vertical dimensional property values so that we can animate back to them. */\n for (var property in computedValues) {\n inlineValues[property] = element.style[property];\n\n /* For slideDown, use forcefeeding to animate all vertical properties from 0. For slideUp,\n use forcefeeding to start from computed values and animate down to 0. */\n var propertyValue = Velocity.CSS.getPropertyValue(element, property);\n computedValues[property] = (direction === \"Down\") ? [ propertyValue, 0 ] : [ 0, propertyValue ];\n }\n\n /* Force vertical overflow content to clip so that sliding works as expected. */\n inlineValues.overflow = element.style.overflow;\n element.style.overflow = \"hidden\";\n }\n\n opts.complete = function() {\n /* Reset element to its pre-slide inline values once its slide animation is complete. */\n for (var property in inlineValues) {\n element.style[property] = inlineValues[property];\n }\n\n /* If the user passed in a complete callback, fire it now. */\n complete && complete.call(elements, elements);\n promiseData && promiseData.resolver(elements);\n };\n\n Velocity(element, computedValues, opts);\n };\n });\n\n /* fadeIn, fadeOut */\n $.each([ \"In\", \"Out\" ], function(i, direction) {\n Velocity.Redirects[\"fade\" + direction] = function (element, options, elementsIndex, elementsSize, elements, promiseData) {\n var opts = $.extend({}, options),\n propertiesMap = { opacity: (direction === \"In\") ? 1 : 0 },\n originalComplete = opts.complete;\n\n /* Since redirects are triggered individually for each element in the animated set, avoid repeatedly triggering\n callbacks by firing them only when the final element has been reached. */\n if (elementsIndex !== elementsSize - 1) {\n opts.complete = opts.begin = null;\n } else {\n opts.complete = function() {\n if (originalComplete) {\n originalComplete.call(elements, elements);\n }\n\n promiseData && promiseData.resolver(elements);\n }\n }\n\n /* If a display was passed in, use it. Otherwise, default to \"none\" for fadeOut or the element-specific default for fadeIn. */\n /* Note: We allow users to pass in \"null\" to skip display setting altogether. */\n if (opts.display === undefined) {\n opts.display = (direction === \"In\" ? \"auto\" : \"none\");\n }\n\n Velocity(this, propertiesMap, opts);\n };\n });\n\n return Velocity;\n}((window.jQuery || window.Zepto || window), window, document);\n}));\n\n/******************\n Known Issues\n******************/\n\n/* The CSS spec mandates that the translateX/Y/Z transforms are %-relative to the element itself -- not its parent.\nVelocity, however, doesn't make this distinction. Thus, converting to or from the % unit with these subproperties\nwill produce an inaccurate conversion value. The same issue exists with the cx/cy attributes of SVG circles and ellipses. */\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nexports.containsEmoji = containsEmoji;\nexports.charactersToImageNode = charactersToImageNode;\nexports.processHtmlForSending = processHtmlForSending;\nexports.sanitizedHtmlNode = sanitizedHtmlNode;\nexports.isUrlPermitted = isUrlPermitted;\nexports.bodyToHtml = bodyToHtml;\nexports.emojifyText = emojifyText;\n\nvar _ReplyThread = require('./components/views/elements/ReplyThread');\n\nvar _ReplyThread2 = _interopRequireDefault(_ReplyThread);\n\nvar _escape = require('lodash/escape');\n\nvar _escape2 = _interopRequireDefault(_escape);\n\nvar _emojione = require('emojione');\n\nvar _emojione2 = _interopRequireDefault(_emojione);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\nvar sanitizeHtml = require('sanitize-html');\nvar highlight = require('highlight.js');\nvar linkifyMatrix = require('./linkify-matrix');\n\n\n_emojione2.default.imagePathSVG = 'emojione/svg/';\n// Store PNG path for displaying many flags at once (for increased performance over SVG)\n_emojione2.default.imagePathPNG = 'emojione/png/';\n// Use SVGs for emojis\n_emojione2.default.imageType = 'svg';\n\n// Anything outside the basic multilingual plane will be a surrogate pair\nvar SURROGATE_PAIR_PATTERN = /([\\ud800-\\udbff])([\\udc00-\\udfff])/;\n// And there a bunch more symbol characters that emojione has within the\n// BMP, so this includes the ranges from 'letterlike symbols' to\n// 'miscellaneous symbols and arrows' which should catch all of them\n// (with plenty of false positives, but that's OK)\nvar SYMBOL_PATTERN = /([\\u2100-\\u2bff])/;\n\n// And this is emojione's complete regex\nvar EMOJI_REGEX = new RegExp(_emojione2.default.unicodeRegexp + \"+\", \"gi\");\nvar COLOR_REGEX = /^#[0-9a-fA-F]{6}$/;\n\nvar PERMITTED_URL_SCHEMES = ['http', 'https', 'ftp', 'mailto', 'magnet'];\n\n/*\n * Return true if the given string contains emoji\n * Uses a much, much simpler regex than emojione's so will give false\n * positives, but useful for fast-path testing strings to see if they\n * need emojification.\n * unicodeToImage uses this function.\n */\nfunction containsEmoji(str) {\n return SURROGATE_PAIR_PATTERN.test(str) || SYMBOL_PATTERN.test(str);\n}\n\n/* modified from https://github.com/Ranks/emojione/blob/master/lib/js/emojione.js\n * because we want to include emoji shortnames in title text\n */\nfunction unicodeToImage(str) {\n var replaceWith = void 0;var unicode = void 0;var alt = void 0;var short = void 0;var fname = void 0;\n var mappedUnicode = _emojione2.default.mapUnicodeToShort();\n\n str = str.replace(_emojione2.default.regUnicode, function (unicodeChar) {\n if (typeof unicodeChar === 'undefined' || unicodeChar === '' || !(unicodeChar in _emojione2.default.jsEscapeMap)) {\n // if the unicodeChar doesnt exist just return the entire match\n return unicodeChar;\n } else {\n // get the unicode codepoint from the actual char\n unicode = _emojione2.default.jsEscapeMap[unicodeChar];\n\n short = mappedUnicode[unicode];\n fname = _emojione2.default.emojioneList[short].fname;\n\n // depending on the settings, we'll either add the native unicode as the alt tag, otherwise the shortname\n alt = _emojione2.default.unicodeAlt ? _emojione2.default.convert(unicode.toUpperCase()) : mappedUnicode[unicode];\n var title = mappedUnicode[unicode];\n\n replaceWith = '<img class=\"mx_emojione\" title=\"' + title + '\" alt=\"' + alt + '\" src=\"' + _emojione2.default.imagePathSVG + fname + '.svg' + _emojione2.default.cacheBustParam + '\"/>';\n return replaceWith;\n }\n });\n\n return str;\n}\n\n/**\n * Given one or more unicode characters (represented by unicode\n * character number), return an image node with the corresponding\n * emoji.\n *\n * @param alt {string} String to use for the image alt text\n * @param useSvg {boolean} Whether to use SVG image src. If False, PNG will be used.\n * @param unicode {integer} One or more integers representing unicode characters\n * @returns A img node with the corresponding emoji\n */\nfunction charactersToImageNode(alt, useSvg) {\n for (var _len = arguments.length, unicode = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n unicode[_key - 2] = arguments[_key];\n }\n\n var fileName = unicode.map(function (u) {\n return u.toString(16);\n }).join('-');\n var path = useSvg ? _emojione2.default.imagePathSVG : _emojione2.default.imagePathPNG;\n var fileType = useSvg ? 'svg' : 'png';\n return React.createElement('img', {\n alt: alt,\n src: '' + path + fileName + '.' + fileType + _emojione2.default.cacheBustParam\n });\n}\n\nfunction processHtmlForSending(html) {\n var contentDiv = document.createElement('div');\n contentDiv.innerHTML = html;\n\n if (contentDiv.children.length === 0) {\n return contentDiv.innerHTML;\n }\n\n var contentHTML = \"\";\n for (var i = 0; i < contentDiv.children.length; i++) {\n var element = contentDiv.children[i];\n if (element.tagName.toLowerCase() === 'p') {\n contentHTML += element.innerHTML;\n // Don't add a <br /> for the last <p>\n if (i !== contentDiv.children.length - 1) {\n contentHTML += '<br />';\n }\n } else {\n var temp = document.createElement('div');\n temp.appendChild(element.cloneNode(true));\n contentHTML += temp.innerHTML;\n }\n }\n\n return contentHTML;\n}\n\n/*\n * Given an untrusted HTML string, return a React node with an sanitized version\n * of that HTML.\n */\nfunction sanitizedHtmlNode(insaneHtml) {\n var saneHtml = sanitizeHtml(insaneHtml, sanitizeHtmlParams);\n\n return React.createElement('div', { dangerouslySetInnerHTML: { __html: saneHtml }, dir: 'auto' });\n}\n\n/**\n * Tests if a URL from an untrusted source may be safely put into the DOM\n * The biggest threat here is javascript: URIs.\n * Note that the HTML sanitiser library has its own internal logic for\n * doing this, to which we pass the same list of schemes. This is used in\n * other places we need to sanitise URLs.\n * @return true if permitted, otherwise false\n */\nfunction isUrlPermitted(inputUrl) {\n try {\n var parsed = _url2.default.parse(inputUrl);\n if (!parsed.protocol) return false;\n // URL parser protocol includes the trailing colon\n return PERMITTED_URL_SCHEMES.includes(parsed.protocol.slice(0, -1));\n } catch (e) {\n return false;\n }\n}\n\nvar transformTags = { // custom to matrix\n // add blank targets to all hyperlinks except vector URLs\n 'a': function a(tagName, attribs) {\n if (attribs.href) {\n attribs.target = '_blank'; // by default\n\n var m = void 0;\n // FIXME: horrible duplication with linkify-matrix\n m = attribs.href.match(linkifyMatrix.VECTOR_URL_PATTERN);\n if (m) {\n attribs.href = m[1];\n delete attribs.target;\n } else {\n m = attribs.href.match(linkifyMatrix.MATRIXTO_URL_PATTERN);\n if (m) {\n var entity = m[1];\n switch (entity[0]) {\n case '@':\n attribs.href = '#/user/' + entity;\n break;\n case '+':\n attribs.href = '#/group/' + entity;\n break;\n case '#':\n case '!':\n attribs.href = '#/room/' + entity;\n break;\n }\n delete attribs.target;\n }\n }\n }\n attribs.rel = 'noopener'; // https://mathiasbynens.github.io/rel-noopener/\n return { tagName: tagName, attribs: attribs };\n },\n 'img': function img(tagName, attribs) {\n // Strip out imgs that aren't `mxc` here instead of using allowedSchemesByTag\n // because transformTags is used _before_ we filter by allowedSchemesByTag and\n // we don't want to allow images with `https?` `src`s.\n if (!attribs.src || !attribs.src.startsWith('mxc://')) {\n return { tagName: tagName, attribs: {} };\n }\n attribs.src = _MatrixClientPeg2.default.get().mxcUrlToHttp(attribs.src, attribs.width || 800, attribs.height || 600);\n return { tagName: tagName, attribs: attribs };\n },\n 'code': function code(tagName, attribs) {\n if (typeof attribs.class !== 'undefined') {\n // Filter out all classes other than ones starting with language- for syntax highlighting.\n var classes = attribs.class.split(/\\s+/).filter(function (cl) {\n return cl.startsWith('language-');\n });\n attribs.class = classes.join(' ');\n }\n return { tagName: tagName, attribs: attribs };\n },\n '*': function _(tagName, attribs) {\n // Delete any style previously assigned, style is an allowedTag for font and span\n // because attributes are stripped after transforming\n delete attribs.style;\n\n // Sanitise and transform data-mx-color and data-mx-bg-color to their CSS\n // equivalents\n var customCSSMapper = {\n 'data-mx-color': 'color',\n 'data-mx-bg-color': 'background-color'\n // $customAttributeKey: $cssAttributeKey\n };\n\n var style = \"\";\n (0, _keys2.default)(customCSSMapper).forEach(function (customAttributeKey) {\n var cssAttributeKey = customCSSMapper[customAttributeKey];\n var customAttributeValue = attribs[customAttributeKey];\n if (customAttributeValue && typeof customAttributeValue === 'string' && COLOR_REGEX.test(customAttributeValue)) {\n style += cssAttributeKey + \":\" + customAttributeValue + \";\";\n delete attribs[customAttributeKey];\n }\n });\n\n if (style) {\n attribs.style = style;\n }\n\n return { tagName: tagName, attribs: attribs };\n }\n};\n\nvar sanitizeHtmlParams = {\n allowedTags: ['font', // custom to matrix for IRC-style font coloring\n 'del', // for markdown\n 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote', 'p', 'a', 'ul', 'ol', 'sup', 'sub', 'nl', 'li', 'b', 'i', 'u', 'strong', 'em', 'strike', 'code', 'hr', 'br', 'div', 'table', 'thead', 'caption', 'tbody', 'tr', 'th', 'td', 'pre', 'span', 'img'],\n allowedAttributes: {\n // custom ones first:\n font: ['color', 'data-mx-bg-color', 'data-mx-color', 'style'], // custom to matrix\n span: ['data-mx-bg-color', 'data-mx-color', 'style'], // custom to matrix\n a: ['href', 'name', 'target', 'rel'], // remote target: custom to matrix\n img: ['src', 'width', 'height', 'alt', 'title'],\n ol: ['start'],\n code: ['class'] // We don't actually allow all classes, we filter them in transformTags\n },\n // Lots of these won't come up by default because we don't allow them\n selfClosing: ['img', 'br', 'hr', 'area', 'base', 'basefont', 'input', 'link', 'meta'],\n // URL schemes we permit\n allowedSchemes: PERMITTED_URL_SCHEMES,\n\n allowProtocolRelative: false,\n transformTags: transformTags\n};\n\n// this is the same as the above except with less rewriting\nvar composerSanitizeHtmlParams = (0, _assign2.default)({}, sanitizeHtmlParams);\ncomposerSanitizeHtmlParams.transformTags = {\n 'code': transformTags['code'],\n '*': transformTags['*']\n};\n\nvar BaseHighlighter = function () {\n function BaseHighlighter(highlightClass, highlightLink) {\n (0, _classCallCheck3.default)(this, BaseHighlighter);\n\n this.highlightClass = highlightClass;\n this.highlightLink = highlightLink;\n }\n\n /**\n * apply the highlights to a section of text\n *\n * @param {string} safeSnippet The snippet of text to apply the highlights\n * to.\n * @param {string[]} safeHighlights A list of substrings to highlight,\n * sorted by descending length.\n *\n * returns a list of results (strings for HtmlHighligher, react nodes for\n * TextHighlighter).\n */\n\n\n (0, _createClass3.default)(BaseHighlighter, [{\n key: 'applyHighlights',\n value: function applyHighlights(safeSnippet, safeHighlights) {\n var lastOffset = 0;\n var offset = void 0;\n var nodes = [];\n\n var safeHighlight = safeHighlights[0];\n while ((offset = safeSnippet.toLowerCase().indexOf(safeHighlight.toLowerCase(), lastOffset)) >= 0) {\n // handle preamble\n if (offset > lastOffset) {\n var subSnippet = safeSnippet.substring(lastOffset, offset);\n nodes = nodes.concat(this._applySubHighlights(subSnippet, safeHighlights));\n }\n\n // do highlight. use the original string rather than safeHighlight\n // to preserve the original casing.\n var endOffset = offset + safeHighlight.length;\n nodes.push(this._processSnippet(safeSnippet.substring(offset, endOffset), true));\n\n lastOffset = endOffset;\n }\n\n // handle postamble\n if (lastOffset !== safeSnippet.length) {\n subSnippet = safeSnippet.substring(lastOffset, undefined);\n nodes = nodes.concat(this._applySubHighlights(subSnippet, safeHighlights));\n }\n return nodes;\n }\n }, {\n key: '_applySubHighlights',\n value: function _applySubHighlights(safeSnippet, safeHighlights) {\n if (safeHighlights[1]) {\n // recurse into this range to check for the next set of highlight matches\n return this.applyHighlights(safeSnippet, safeHighlights.slice(1));\n } else {\n // no more highlights to be found, just return the unhighlighted string\n return [this._processSnippet(safeSnippet, false)];\n }\n }\n }]);\n return BaseHighlighter;\n}();\n\nvar HtmlHighlighter = function (_BaseHighlighter) {\n (0, _inherits3.default)(HtmlHighlighter, _BaseHighlighter);\n\n function HtmlHighlighter() {\n (0, _classCallCheck3.default)(this, HtmlHighlighter);\n return (0, _possibleConstructorReturn3.default)(this, (HtmlHighlighter.__proto__ || (0, _getPrototypeOf2.default)(HtmlHighlighter)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(HtmlHighlighter, [{\n key: '_processSnippet',\n\n /* highlight the given snippet if required\n *\n * snippet: content of the span; must have been sanitised\n * highlight: true to highlight as a search match\n *\n * returns an HTML string\n */\n value: function _processSnippet(snippet, highlight) {\n if (!highlight) {\n // nothing required here\n return snippet;\n }\n\n var span = \"<span class=\\\"\" + this.highlightClass + \"\\\">\" + snippet + \"</span>\";\n\n if (this.highlightLink) {\n span = \"<a href=\\\"\" + encodeURI(this.highlightLink) + \"\\\">\" + span + \"</a>\";\n }\n return span;\n }\n }]);\n return HtmlHighlighter;\n}(BaseHighlighter);\n\nvar TextHighlighter = function (_BaseHighlighter2) {\n (0, _inherits3.default)(TextHighlighter, _BaseHighlighter2);\n\n function TextHighlighter(highlightClass, highlightLink) {\n (0, _classCallCheck3.default)(this, TextHighlighter);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (TextHighlighter.__proto__ || (0, _getPrototypeOf2.default)(TextHighlighter)).call(this, highlightClass, highlightLink));\n\n _this2._key = 0;\n return _this2;\n }\n\n /* create a <span> node to hold the given content\n *\n * snippet: content of the span\n * highlight: true to highlight as a search match\n *\n * returns a React node\n */\n\n\n (0, _createClass3.default)(TextHighlighter, [{\n key: '_processSnippet',\n value: function _processSnippet(snippet, highlight) {\n var key = this._key++;\n\n var node = React.createElement(\n 'span',\n { key: key, className: highlight ? this.highlightClass : null },\n snippet\n );\n\n if (highlight && this.highlightLink) {\n node = React.createElement(\n 'a',\n { key: key, href: this.highlightLink },\n node\n );\n }\n\n return node;\n }\n }]);\n return TextHighlighter;\n}(BaseHighlighter);\n\n/* turn a matrix event body into html\n *\n * content: 'content' of the MatrixEvent\n *\n * highlights: optional list of words to highlight, ordered by longest word first\n *\n * opts.highlightLink: optional href to add to highlighted words\n * opts.disableBigEmoji: optional argument to disable the big emoji class.\n * opts.stripReplyFallback: optional argument specifying the event is a reply and so fallback needs removing\n * opts.returnString: return an HTML string rather than JSX elements\n * opts.emojiOne: optional param to do emojiOne (default true)\n * opts.forComposerQuote: optional param to lessen the url rewriting done by sanitization, for quoting into composer\n */\n\n\nfunction bodyToHtml(content, highlights) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var isHtmlMessage = content.format === \"org.matrix.custom.html\" && content.formatted_body;\n\n var doEmojiOne = opts.emojiOne === undefined ? true : opts.emojiOne;\n var bodyHasEmoji = false;\n\n var sanitizeParams = sanitizeHtmlParams;\n if (opts.forComposerQuote) {\n sanitizeParams = composerSanitizeHtmlParams;\n }\n\n var strippedBody = void 0;\n var safeBody = void 0;\n var isDisplayedWithHtml = void 0;\n // XXX: We sanitize the HTML whilst also highlighting its text nodes, to avoid accidentally trying\n // to highlight HTML tags themselves. However, this does mean that we don't highlight textnodes which\n // are interrupted by HTML tags (not that we did before) - e.g. foo<span/>bar won't get highlighted\n // by an attempt to search for 'foobar'. Then again, the search query probably wouldn't work either\n try {\n if (highlights && highlights.length > 0) {\n var highlighter = new HtmlHighlighter(\"mx_EventTile_searchHighlight\", opts.highlightLink);\n var safeHighlights = highlights.map(function (highlight) {\n return sanitizeHtml(highlight, sanitizeParams);\n });\n // XXX: hacky bodge to temporarily apply a textFilter to the sanitizeParams structure.\n sanitizeParams.textFilter = function (safeText) {\n return highlighter.applyHighlights(safeText, safeHighlights).join('');\n };\n }\n\n var formattedBody = content.formatted_body;\n if (opts.stripReplyFallback && formattedBody) formattedBody = _ReplyThread2.default.stripHTMLReply(formattedBody);\n strippedBody = opts.stripReplyFallback ? _ReplyThread2.default.stripPlainReply(content.body) : content.body;\n\n if (doEmojiOne) {\n bodyHasEmoji = containsEmoji(isHtmlMessage ? formattedBody : content.body);\n }\n\n // Only generate safeBody if the message was sent as org.matrix.custom.html\n if (isHtmlMessage) {\n isDisplayedWithHtml = true;\n safeBody = sanitizeHtml(formattedBody, sanitizeParams);\n } else {\n // ... or if there are emoji, which we insert as HTML alongside the\n // escaped plaintext body.\n if (bodyHasEmoji) {\n isDisplayedWithHtml = true;\n safeBody = sanitizeHtml((0, _escape2.default)(strippedBody), sanitizeParams);\n }\n }\n\n // An HTML message with emoji\n // or a plaintext message with emoji that was escaped and sanitized into\n // HTML.\n if (bodyHasEmoji) {\n safeBody = unicodeToImage(safeBody);\n }\n } finally {\n delete sanitizeParams.textFilter;\n }\n\n if (opts.returnString) {\n return isDisplayedWithHtml ? safeBody : strippedBody;\n }\n\n var emojiBody = false;\n if (!opts.disableBigEmoji && bodyHasEmoji) {\n EMOJI_REGEX.lastIndex = 0;\n var contentBodyTrimmed = strippedBody !== undefined ? strippedBody.trim() : '';\n var match = EMOJI_REGEX.exec(contentBodyTrimmed);\n emojiBody = match && match[0] && match[0].length === contentBodyTrimmed.length;\n }\n\n var className = (0, _classnames2.default)({\n 'mx_EventTile_body': true,\n 'mx_EventTile_bigEmoji': emojiBody,\n 'markdown-body': isHtmlMessage\n });\n\n return isDisplayedWithHtml ? React.createElement('span', { className: className, dangerouslySetInnerHTML: { __html: safeBody }, dir: 'auto' }) : React.createElement(\n 'span',\n { className: className, dir: 'auto' },\n strippedBody\n );\n}\n\nfunction emojifyText(text) {\n return {\n __html: unicodeToImage((0, _escape2.default)(text))\n };\n}\n//# sourceMappingURL=HtmlUtils.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _DateUtils = require('../../../DateUtils');\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixTo = require('../../../matrix-to');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// This component does no cycle detection, simply because the only way to make such a cycle would be to\n// craft event_id's, using a homeserver that generates predictable event IDs; even then the impact would\n// be low as each event being loaded (after the first) is triggered by an explicit user action.\nvar ReplyThread = function (_React$Component) {\n (0, _inherits3.default)(ReplyThread, _React$Component);\n\n function ReplyThread(props, context) {\n (0, _classCallCheck3.default)(this, ReplyThread);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ReplyThread.__proto__ || (0, _getPrototypeOf2.default)(ReplyThread)).call(this, props, context));\n\n _this.state = {\n // The loaded events to be rendered as linear-replies\n events: [],\n\n // The latest loaded event which has not yet been shown\n loadedEv: null,\n // Whether the component is still loading more events\n loading: true,\n\n // Whether as error was encountered fetching a replied to event.\n err: false\n };\n\n _this.onQuoteClick = _this.onQuoteClick.bind(_this);\n _this.canCollapse = _this.canCollapse.bind(_this);\n _this.collapse = _this.collapse.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(ReplyThread, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.unmounted = false;\n this.room = this.context.matrixClient.getRoom(this.props.parentEv.getRoomId());\n this.initialize();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.props.onWidgetLoad();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unmounted = true;\n }\n }, {\n key: 'initialize',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var parentEv, ev;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n parentEv = this.props.parentEv;\n // at time of making this component we checked that props.parentEv has a parentEventId\n\n _context.next = 3;\n return (0, _bluebird.resolve)(this.getEvent(ReplyThread.getParentEventId(parentEv)));\n\n case 3:\n ev = _context.sent;\n\n if (!this.unmounted) {\n _context.next = 6;\n break;\n }\n\n return _context.abrupt('return');\n\n case 6:\n\n if (ev) {\n this.setState({\n events: [ev]\n }, this.loadNextEvent);\n } else {\n this.setState({ err: true });\n }\n\n case 7:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function initialize() {\n return _ref.apply(this, arguments);\n }\n\n return initialize;\n }()\n }, {\n key: 'loadNextEvent',\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var ev, inReplyToEventId, loadedEv;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!this.unmounted) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 2:\n ev = this.state.events[0];\n inReplyToEventId = ReplyThread.getParentEventId(ev);\n\n if (inReplyToEventId) {\n _context2.next = 7;\n break;\n }\n\n this.setState({\n loading: false\n });\n return _context2.abrupt('return');\n\n case 7:\n _context2.next = 9;\n return (0, _bluebird.resolve)(this.getEvent(inReplyToEventId));\n\n case 9:\n loadedEv = _context2.sent;\n\n if (!this.unmounted) {\n _context2.next = 12;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 12:\n\n if (loadedEv) {\n this.setState({ loadedEv: loadedEv });\n } else {\n this.setState({ err: true });\n }\n\n case 13:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function loadNextEvent() {\n return _ref2.apply(this, arguments);\n }\n\n return loadNextEvent;\n }()\n }, {\n key: 'getEvent',\n value: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(eventId) {\n var event;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n event = this.room.findEventById(eventId);\n\n if (!event) {\n _context3.next = 3;\n break;\n }\n\n return _context3.abrupt('return', event);\n\n case 3:\n _context3.prev = 3;\n _context3.next = 6;\n return (0, _bluebird.resolve)(this.context.matrixClient.getEventTimeline(this.room.getUnfilteredTimelineSet(), eventId));\n\n case 6:\n _context3.next = 11;\n break;\n\n case 8:\n _context3.prev = 8;\n _context3.t0 = _context3['catch'](3);\n return _context3.abrupt('return', null);\n\n case 11:\n return _context3.abrupt('return', this.room.findEventById(eventId));\n\n case 12:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this, [[3, 8]]);\n }));\n\n function getEvent(_x) {\n return _ref3.apply(this, arguments);\n }\n\n return getEvent;\n }()\n }, {\n key: 'canCollapse',\n value: function canCollapse() {\n return this.state.events.length > 1;\n }\n }, {\n key: 'collapse',\n value: function collapse() {\n this.initialize();\n }\n }, {\n key: 'onQuoteClick',\n value: function onQuoteClick() {\n var events = [this.state.loadedEv].concat((0, _toConsumableArray3.default)(this.state.events));\n\n this.setState({\n loadedEv: null,\n events: events\n }, this.loadNextEvent);\n\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var header = null;\n\n if (this.state.err) {\n header = _react2.default.createElement(\n 'blockquote',\n { className: 'mx_ReplyThread mx_ReplyThread_error' },\n (0, _languageHandler._t)('Unable to load event that was replied to, ' + 'it either does not exist or you do not have permission to view it.')\n );\n } else if (this.state.loadedEv) {\n var ev = this.state.loadedEv;\n var Pill = _index2.default.getComponent('elements.Pill');\n var room = this.context.matrixClient.getRoom(ev.getRoomId());\n header = _react2.default.createElement(\n 'blockquote',\n { className: 'mx_ReplyThread' },\n (0, _languageHandler._t)('<a>In reply to</a> <pill>', {}, {\n 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { onClick: _this2.onQuoteClick, className: 'mx_ReplyThread_show' },\n sub\n );\n },\n 'pill': _react2.default.createElement(Pill, { type: Pill.TYPE_USER_MENTION, room: room,\n url: (0, _matrixTo.makeUserPermalink)(ev.getSender()), shouldShowPillAvatar: true })\n })\n );\n } else if (this.state.loading) {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n header = _react2.default.createElement(Spinner, { w: 16, h: 16 });\n }\n\n var EventTile = _index2.default.getComponent('views.rooms.EventTile');\n var DateSeparator = _index2.default.getComponent('messages.DateSeparator');\n var evTiles = this.state.events.map(function (ev) {\n var dateSep = null;\n\n if ((0, _DateUtils.wantsDateSeparator)(_this2.props.parentEv.getDate(), ev.getDate())) {\n dateSep = _react2.default.createElement(\n 'a',\n { href: _this2.props.url },\n _react2.default.createElement(DateSeparator, { ts: ev.getTs() })\n );\n }\n\n return _react2.default.createElement(\n 'blockquote',\n { className: 'mx_ReplyThread', key: ev.getId() },\n dateSep,\n _react2.default.createElement(EventTile, { mxEvent: ev,\n tileShape: 'reply',\n onWidgetLoad: _this2.props.onWidgetLoad,\n isTwelveHour: _SettingsStore2.default.getValue(\"showTwelveHourTimestamps\") })\n );\n });\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n header\n ),\n _react2.default.createElement(\n 'div',\n null,\n evTiles\n )\n );\n }\n }], [{\n key: 'getParentEventId',\n value: function getParentEventId(ev) {\n if (!ev || ev.isRedacted()) return;\n\n var mRelatesTo = ev.getWireContent()['m.relates_to'];\n if (mRelatesTo && mRelatesTo['m.in_reply_to']) {\n var mInReplyTo = mRelatesTo['m.in_reply_to'];\n if (mInReplyTo && mInReplyTo['event_id']) return mInReplyTo['event_id'];\n }\n }\n\n // Part of Replies fallback support\n\n }, {\n key: 'stripPlainReply',\n value: function stripPlainReply(body) {\n // Removes lines beginning with `> ` until you reach one that doesn't.\n var lines = body.split('\\n');\n while (lines.length && lines[0].startsWith('> ')) {\n lines.shift();\n } // Reply fallback has a blank line after it, so remove it to prevent leading newline\n if (lines[0] === '') lines.shift();\n return lines.join('\\n');\n }\n\n // Part of Replies fallback support\n\n }, {\n key: 'stripHTMLReply',\n value: function stripHTMLReply(html) {\n return html.replace(/^<mx-reply>[\\s\\S]+?<\\/mx-reply>/, '');\n }\n\n // Part of Replies fallback support\n\n }, {\n key: 'getNestedReplyText',\n value: function getNestedReplyText(ev) {\n if (!ev) return null;\n\n var _ev$getContent = ev.getContent(),\n body = _ev$getContent.body,\n html = _ev$getContent.formatted_body;\n\n if (this.getParentEventId(ev)) {\n if (body) body = this.stripPlainReply(body);\n if (html) html = this.stripHTMLReply(html);\n }\n\n var evLink = (0, _matrixTo.makeEventPermalink)(ev.getRoomId(), ev.getId());\n var userLink = (0, _matrixTo.makeUserPermalink)(ev.getSender());\n var mxid = ev.getSender();\n\n // This fallback contains text that is explicitly EN.\n switch (ev.getContent().msgtype) {\n case 'm.text':\n case 'm.notice':\n {\n html = '<mx-reply><blockquote><a href=\"' + evLink + '\">In reply to</a> <a href=\"' + userLink + '\">' + mxid + '</a>' + ('<br>' + (html || body) + '</blockquote></mx-reply>');\n var lines = body.trim().split('\\n');\n if (lines.length > 0) {\n lines[0] = '<' + mxid + '> ' + lines[0];\n body = lines.map(function (line) {\n return '> ' + line;\n }).join('\\n') + '\\n\\n';\n }\n break;\n }\n case 'm.image':\n html = '<mx-reply><blockquote><a href=\"' + evLink + '\">In reply to</a> <a href=\"' + userLink + '\">' + mxid + '</a>' + '<br>sent an image.</blockquote></mx-reply>';\n body = '> <' + mxid + '> sent an image.\\n\\n';\n break;\n case 'm.video':\n html = '<mx-reply><blockquote><a href=\"' + evLink + '\">In reply to</a> <a href=\"' + userLink + '\">' + mxid + '</a>' + '<br>sent a video.</blockquote></mx-reply>';\n body = '> <' + mxid + '> sent a video.\\n\\n';\n break;\n case 'm.audio':\n html = '<mx-reply><blockquote><a href=\"' + evLink + '\">In reply to</a> <a href=\"' + userLink + '\">' + mxid + '</a>' + '<br>sent an audio file.</blockquote></mx-reply>';\n body = '> <' + mxid + '> sent an audio file.\\n\\n';\n break;\n case 'm.file':\n html = '<mx-reply><blockquote><a href=\"' + evLink + '\">In reply to</a> <a href=\"' + userLink + '\">' + mxid + '</a>' + '<br>sent a file.</blockquote></mx-reply>';\n body = '> <' + mxid + '> sent a file.\\n\\n';\n break;\n case 'm.emote':\n {\n html = '<mx-reply><blockquote><a href=\"' + evLink + '\">In reply to</a> * ' + ('<a href=\"' + userLink + '\">' + mxid + '</a><br>' + (html || body) + '</blockquote></mx-reply>');\n var _lines = body.trim().split('\\n');\n if (_lines.length > 0) {\n _lines[0] = '* <' + mxid + '> ' + _lines[0];\n body = _lines.map(function (line) {\n return '> ' + line;\n }).join('\\n') + '\\n\\n';\n }\n break;\n }\n default:\n return null;\n }\n\n return { body: body, html: html };\n }\n }, {\n key: 'makeReplyMixIn',\n value: function makeReplyMixIn(ev) {\n if (!ev) return {};\n return {\n 'm.relates_to': {\n 'm.in_reply_to': {\n 'event_id': ev.getId()\n }\n }\n };\n }\n }, {\n key: 'makeThread',\n value: function makeThread(parentEv, onWidgetLoad, ref) {\n if (!ReplyThread.getParentEventId(parentEv)) {\n return _react2.default.createElement('div', null);\n }\n return _react2.default.createElement(ReplyThread, { parentEv: parentEv, onWidgetLoad: onWidgetLoad, ref: ref });\n }\n }]);\n return ReplyThread;\n}(_react2.default.Component); /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n\nReplyThread.propTypes = {\n // the latest event in this chain of replies\n parentEv: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixEvent),\n // called when the ReplyThread contents has changed, including EventTiles thereof\n onWidgetLoad: _propTypes2.default.func.isRequired\n};\nReplyThread.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n};\nexports.default = ReplyThread;\nmodule.exports = exports['default'];\n//# sourceMappingURL=ReplyThread.js.map","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GroupRoomType = exports.GroupMemberType = undefined;\nexports.groupMemberFromApiObject = groupMemberFromApiObject;\nexports.groupRoomFromApiObject = groupRoomFromApiObject;\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('./languageHandler.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar GroupMemberType = exports.GroupMemberType = _propTypes2.default.shape({\n userId: _propTypes2.default.string.isRequired,\n displayname: _propTypes2.default.string,\n avatarUrl: _propTypes2.default.string\n});\n\nvar GroupRoomType = exports.GroupRoomType = _propTypes2.default.shape({\n displayname: _propTypes2.default.string,\n name: _propTypes2.default.string,\n roomId: _propTypes2.default.string.isRequired,\n canonicalAlias: _propTypes2.default.string,\n avatarUrl: _propTypes2.default.string\n});\n\nfunction groupMemberFromApiObject(apiObject) {\n return {\n userId: apiObject.user_id,\n displayname: apiObject.displayname,\n avatarUrl: apiObject.avatar_url,\n isPrivileged: apiObject.is_privileged\n };\n}\n\nfunction groupRoomFromApiObject(apiObject) {\n return {\n displayname: apiObject.name || apiObject.canonical_alias || (0, _languageHandler._t)(\"Unnamed Room\"),\n name: apiObject.name,\n roomId: apiObject.room_id,\n canonicalAlias: apiObject.canonical_alias,\n avatarUrl: apiObject.avatar_url,\n topic: apiObject.topic,\n numJoinedMembers: apiObject.num_joined_members,\n worldReadable: apiObject.world_readable,\n guestCanJoin: apiObject.guest_can_join,\n isPublic: apiObject.is_public !== false\n };\n}\n//# sourceMappingURL=groups.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getCorners = exports.offset = exports.isEqual = exports.addPosition = exports.add = undefined;\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar add = exports.add = function add(spacing1, spacing2) {\n return {\n top: spacing1.top + spacing2.top,\n left: spacing1.left + spacing2.left,\n right: spacing1.right + spacing2.right,\n bottom: spacing1.bottom + spacing2.bottom\n };\n};\n\nvar addPosition = exports.addPosition = function addPosition(spacing, position) {\n return (0, _extends3.default)({}, spacing, {\n right: spacing.right + position.x,\n bottom: spacing.bottom + position.y\n });\n};\n\nvar isEqual = exports.isEqual = function isEqual(spacing1, spacing2) {\n return spacing1.top === spacing2.top && spacing1.right === spacing2.right && spacing1.bottom === spacing2.bottom && spacing1.left === spacing2.left;\n};\n\nvar offset = exports.offset = function offset(spacing, point) {\n return {\n top: spacing.top + point.y,\n right: spacing.right + point.x,\n bottom: spacing.bottom + point.y,\n left: spacing.left + point.x\n };\n};\n\nvar getCorners = exports.getCorners = function getCorners(spacing) {\n return [{ x: spacing.left, y: spacing.top }, { x: spacing.right, y: spacing.top }, { x: spacing.left, y: spacing.bottom }, { x: spacing.right, y: spacing.bottom }];\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _position = require('./position');\n\nexports.default = function (_ref) {\n var source = _ref.source,\n sourceEdge = _ref.sourceEdge,\n destination = _ref.destination,\n destinationEdge = _ref.destinationEdge,\n destinationAxis = _ref.destinationAxis;\n\n var getCorner = function getCorner(area) {\n return (0, _position.patch)(destinationAxis.line, area[destinationAxis[destinationEdge]], area[destinationAxis.crossAxisStart]);\n };\n\n var corner = getCorner(destination);\n\n var centerDiff = (0, _position.absolute)((0, _position.subtract)(source.center, getCorner(source)));\n\n var signed = (0, _position.patch)(destinationAxis.line, (sourceEdge === 'end' ? -1 : 1) * centerDiff[destinationAxis.line], centerDiff[destinationAxis.crossLine]);\n\n return (0, _position.add)(corner, signed);\n};","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nmodule.exports.Container = require('./lib/FluxContainer');\nmodule.exports.MapStore = require('./lib/FluxMapStore');\nmodule.exports.Mixin = require('./lib/FluxMixinLegacy');\nmodule.exports.ReduceStore = require('./lib/FluxReduceStore');\nmodule.exports.Store = require('./lib/FluxStore');\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _events = require('events');\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Stores information about the widgets active in the app right now:\n * * What widget is set to remain always-on-screen, if any\n * Only one widget may be 'always on screen' at any one time.\n * * Negotiated capabilities for active apps\n */\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ActiveWidgetStore = function (_EventEmitter) {\n (0, _inherits3.default)(ActiveWidgetStore, _EventEmitter);\n\n function ActiveWidgetStore() {\n (0, _classCallCheck3.default)(this, ActiveWidgetStore);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ActiveWidgetStore.__proto__ || (0, _getPrototypeOf2.default)(ActiveWidgetStore)).call(this));\n\n _this._persistentWidgetId = null;\n\n // A list of negotiated capabilities for each widget, by ID\n // {\n // widgetId: [caps...],\n // }\n _this._capsByWidgetId = {};\n\n // A WidgetMessaging instance for each widget ID\n _this._widgetMessagingByWidgetId = {};\n\n // What room ID each widget is associated with (if it's a room widget)\n _this._roomIdByWidgetId = {};\n\n _this.onRoomStateEvents = _this.onRoomStateEvents.bind(_this);\n\n _this.dispatcherRef = null;\n return _this;\n }\n\n (0, _createClass3.default)(ActiveWidgetStore, [{\n key: 'start',\n value: function start() {\n _MatrixClientPeg2.default.get().on('RoomState.events', this.onRoomStateEvents);\n }\n }, {\n key: 'stop',\n value: function stop() {\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener('RoomState.events', this.onRoomStateEvents);\n }\n this._capsByWidgetId = {};\n this._widgetMessagingByWidgetId = {};\n this._roomIdByWidgetId = {};\n }\n }, {\n key: 'onRoomStateEvents',\n value: function onRoomStateEvents(ev, state) {\n // XXX: This listens for state events in order to remove the active widget.\n // Everything else relies on views listening for events and calling setters\n // on this class which is terrible. This store should just listen for events\n // and keep itself up to date.\n if (ev.getType() !== 'im.vector.modular.widgets') return;\n\n if (ev.getStateKey() === this._persistentWidgetId) {\n this.destroyPersistentWidget();\n }\n }\n }, {\n key: 'destroyPersistentWidget',\n value: function destroyPersistentWidget() {\n var toDeleteId = this._persistentWidgetId;\n\n this.setWidgetPersistence(toDeleteId, false);\n this.delWidgetMessaging(toDeleteId);\n this.delWidgetCapabilities(toDeleteId);\n this.delRoomId(toDeleteId);\n }\n }, {\n key: 'setWidgetPersistence',\n value: function setWidgetPersistence(widgetId, val) {\n if (this._persistentWidgetId === widgetId && !val) {\n this._persistentWidgetId = null;\n } else if (this._persistentWidgetId !== widgetId && val) {\n this._persistentWidgetId = widgetId;\n }\n this.emit('update');\n }\n }, {\n key: 'getWidgetPersistence',\n value: function getWidgetPersistence(widgetId) {\n return this._persistentWidgetId === widgetId;\n }\n }, {\n key: 'getPersistentWidgetId',\n value: function getPersistentWidgetId() {\n return this._persistentWidgetId;\n }\n }, {\n key: 'setWidgetCapabilities',\n value: function setWidgetCapabilities(widgetId, caps) {\n this._capsByWidgetId[widgetId] = caps;\n this.emit('update');\n }\n }, {\n key: 'widgetHasCapability',\n value: function widgetHasCapability(widgetId, cap) {\n return this._capsByWidgetId[widgetId] && this._capsByWidgetId[widgetId].includes(cap);\n }\n }, {\n key: 'delWidgetCapabilities',\n value: function delWidgetCapabilities(widgetId) {\n delete this._capsByWidgetId[widgetId];\n this.emit('update');\n }\n }, {\n key: 'setWidgetMessaging',\n value: function setWidgetMessaging(widgetId, wm) {\n this._widgetMessagingByWidgetId[widgetId] = wm;\n this.emit('update');\n }\n }, {\n key: 'getWidgetMessaging',\n value: function getWidgetMessaging(widgetId) {\n return this._widgetMessagingByWidgetId[widgetId];\n }\n }, {\n key: 'delWidgetMessaging',\n value: function delWidgetMessaging(widgetId) {\n if (this._widgetMessagingByWidgetId[widgetId]) {\n try {\n this._widgetMessagingByWidgetId[widgetId].stop();\n } catch (e) {\n console.error('Failed to stop listening for widgetMessaging events', e.message);\n }\n delete this._widgetMessagingByWidgetId[widgetId];\n this.emit('update');\n }\n }\n }, {\n key: 'getRoomId',\n value: function getRoomId(widgetId) {\n return this._roomIdByWidgetId[widgetId];\n }\n }, {\n key: 'setRoomId',\n value: function setRoomId(widgetId, roomId) {\n this._roomIdByWidgetId[widgetId] = roomId;\n this.emit('update');\n }\n }, {\n key: 'delRoomId',\n value: function delRoomId(widgetId) {\n delete this._roomIdByWidgetId[widgetId];\n this.emit('update');\n }\n }]);\n return ActiveWidgetStore;\n}(_events2.default);\n\nif (global.singletonActiveWidgetStore === undefined) {\n global.singletonActiveWidgetStore = new ActiveWidgetStore();\n}\nexports.default = global.singletonActiveWidgetStore;\nmodule.exports = exports['default'];\n//# sourceMappingURL=ActiveWidgetStore.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nexports.messageForResourceLimitError = messageForResourceLimitError;\nexports.messageForSyncError = messageForSyncError;\n\nvar _languageHandler = require('../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Produce a translated error message for a\n * M_RESOURCE_LIMIT_EXCEEDED error\n *\n * @param {string} limitType The limit_type from the error\n * @param {string} adminContact The admin_contact from the error\n * @param {Object} strings Translateable string for different\n * limit_type. Must include at least the empty string key\n * which is the default. Strings may include an 'a' tag\n * for the admin contact link.\n * @param {Object} extraTranslations Extra translation substitution functions\n * for any tags in the strings apart from 'a'\n * @returns {*} Translated string or react component\n */\nfunction messageForResourceLimitError(limitType, adminContact, strings, extraTranslations) {\n var errString = strings[limitType];\n if (errString === undefined) errString = strings[''];\n\n var linkSub = function linkSub(sub) {\n if (adminContact) {\n return React.createElement(\n 'a',\n { href: adminContact, target: '_blank', rel: 'noopener' },\n sub\n );\n } else {\n return sub;\n }\n };\n\n if (errString.includes('<a>')) {\n return (0, _languageHandler._t)(errString, {}, (0, _assign2.default)({ 'a': linkSub }, extraTranslations));\n } else {\n return (0, _languageHandler._t)(errString, {}, extraTranslations);\n }\n} /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction messageForSyncError(err) {\n if (err.errcode === 'M_RESOURCE_LIMIT_EXCEEDED') {\n var limitError = messageForResourceLimitError(err.data.limit_type, err.data.admin_contact, {\n 'monthly_active_user': (0, _languageHandler._td)(\"This homeserver has hit its Monthly Active User limit.\"),\n '': (0, _languageHandler._td)(\"This homeserver has exceeded one of its resource limits.\")\n });\n var adminContact = messageForResourceLimitError(err.data.limit_type, err.data.admin_contact, {\n '': (0, _languageHandler._td)(\"Please <a>contact your service administrator</a> to continue using the service.\")\n });\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n null,\n limitError\n ),\n React.createElement(\n 'div',\n null,\n adminContact\n )\n );\n } else {\n return React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Unable to connect to Homeserver. Retrying...\")\n );\n }\n}\n//# sourceMappingURL=ErrorUtils.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.default = function (WrappedComponent) {\n return _react2.default.createClass({\n displayName: \"withMatrixClient<\" + WrappedComponent.displayName + \">\",\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(Matrix.MatrixClient).isRequired\n },\n\n render: function render() {\n return _react2.default.createElement(WrappedComponent, (0, _extends3.default)({}, this.props, { matrixClient: this.context.matrixClient }));\n }\n });\n};\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar Matrix = _interopRequireWildcard(_matrixJsSdk);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = exports['default'];\n\n/**\n * Wraps a react class, pulling the MatrixClient from the context and adding it\n * as a 'matrixClient' property instead.\n *\n * This abstracts the use of the context API, so that we can use a different\n * mechanism in future.\n */\n//# sourceMappingURL=withMatrixClient.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.formatCount = formatCount;\nexports.formatCryptoKey = formatCryptoKey;\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * formats numbers to fit into ~3 characters, suitable for badge counts\n * e.g: 999, 9.9K, 99K, 0.9M, 9.9M, 99M, 0.9B, 9.9B\n */\nfunction formatCount(count) {\n if (count < 1000) return count;\n if (count < 10000) return (count / 1000).toFixed(1) + \"K\";\n if (count < 100000) return (count / 1000).toFixed(0) + \"K\";\n if (count < 10000000) return (count / 1000000).toFixed(1) + \"M\";\n if (count < 100000000) return (count / 1000000).toFixed(0) + \"M\";\n return (count / 1000000000).toFixed(1) + \"B\"; // 10B is enough for anyone, right? :S\n}\n\n/**\n * format a key into groups of 4 characters, for easier visual inspection\n *\n * @param {string} key key to format\n *\n * @return {string}\n */\nfunction formatCryptoKey(key) {\n return key.match(/.{1,4}/g).join(\" \");\n}\n//# sourceMappingURL=FormattingUtils.js.map","module.exports = require('./lib/linkify');\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar Avatar = require('../../../Avatar');\nvar sdk = require(\"../../../index\");\nvar dispatcher = require(\"../../../dispatcher\");\n\nmodule.exports = React.createClass({\n displayName: 'MemberAvatar',\n\n propTypes: {\n member: _propTypes2.default.object,\n fallbackUserId: _propTypes2.default.string,\n width: _propTypes2.default.number,\n height: _propTypes2.default.number,\n resizeMethod: _propTypes2.default.string,\n // The onClick to give the avatar\n onClick: _propTypes2.default.func,\n // Whether the onClick of the avatar should be overriden to dispatch 'view_user'\n viewUserOnClick: _propTypes2.default.bool,\n title: _propTypes2.default.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n width: 40,\n height: 40,\n resizeMethod: 'crop',\n viewUserOnClick: false\n };\n },\n\n getInitialState: function getInitialState() {\n return this._getState(this.props);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n this.setState(this._getState(nextProps));\n },\n\n _getState: function _getState(props) {\n if (props.member) {\n return {\n name: props.member.name,\n title: props.title || props.member.userId,\n imageUrl: Avatar.avatarUrlForMember(props.member, props.width, props.height, props.resizeMethod)\n };\n } else if (props.fallbackUserId) {\n return {\n name: props.fallbackUserId,\n title: props.fallbackUserId\n };\n } else {\n console.error(\"MemberAvatar called somehow with null member or fallbackUserId\");\n }\n },\n\n render: function render() {\n var _this = this;\n\n var BaseAvatar = sdk.getComponent(\"avatars.BaseAvatar\");\n\n var _props = this.props,\n member = _props.member,\n fallbackUserId = _props.fallbackUserId,\n onClick = _props.onClick,\n viewUserOnClick = _props.viewUserOnClick,\n otherProps = (0, _objectWithoutProperties3.default)(_props, ['member', 'fallbackUserId', 'onClick', 'viewUserOnClick']);\n\n var userId = member ? member.userId : fallbackUserId;\n\n if (viewUserOnClick) {\n onClick = function onClick() {\n dispatcher.dispatch({\n action: 'view_user',\n member: _this.props.member\n });\n };\n }\n\n return React.createElement(BaseAvatar, (0, _extends3.default)({}, otherProps, { name: this.state.name, title: this.state.title,\n idName: userId, url: this.state.imageUrl, onClick: onClick }));\n }\n});\n//# sourceMappingURL=MemberAvatar.js.map","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _map = require('babel-runtime/core-js/map');\n\nvar _map2 = _interopRequireDefault(_map);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _at2 = require('lodash/at');\n\nvar _at3 = _interopRequireDefault(_at2);\n\nvar _flatMap2 = require('lodash/flatMap');\n\nvar _flatMap3 = _interopRequireDefault(_flatMap2);\n\nvar _sortBy2 = require('lodash/sortBy');\n\nvar _sortBy3 = _interopRequireDefault(_sortBy2);\n\nvar _uniq2 = require('lodash/uniq');\n\nvar _uniq3 = _interopRequireDefault(_uniq2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Aviral Dasgupta\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction stripDiacritics(str) {\n return str.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n}\n\n/**\n * Simple search matcher that matches any results with the query string anywhere\n * in the search string. Returns matches in the order the query string appears\n * in the search key, earliest first, then in the order the items appeared in\n * the source array.\n *\n * @param {Object[]} objects Initial list of objects. Equivalent to calling\n * setObjects() after construction\n * @param {Object} options Options object\n * @param {string[]} options.keys List of keys to use as indexes on the objects\n * @param {function[]} options.funcs List of functions that when called with the\n * object as an arg will return a string to use as an index\n */\n\nvar QueryMatcher = function () {\n function QueryMatcher(objects) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, _classCallCheck3.default)(this, QueryMatcher);\n\n this._options = options;\n this._keys = options.keys;\n this._funcs = options.funcs || [];\n\n this.setObjects(objects);\n\n // By default, we remove any non-alphanumeric characters ([^A-Za-z0-9_]) from the\n // query and the value being queried before matching\n if (this._options.shouldMatchWordsOnly === undefined) {\n this._options.shouldMatchWordsOnly = true;\n }\n\n // By default, match anywhere in the string being searched. If enabled, only return\n // matches that are prefixed with the query.\n if (this._options.shouldMatchPrefix === undefined) {\n this._options.shouldMatchPrefix = false;\n }\n }\n\n (0, _createClass3.default)(QueryMatcher, [{\n key: 'setObjects',\n value: function setObjects(objects) {\n this._items = new _map2.default();\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(objects), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var object = _step.value;\n\n var keyValues = (0, _at3.default)(object, this._keys);\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(this._funcs), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var f = _step2.value;\n\n keyValues.push(f(object));\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(keyValues), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var keyValue = _step3.value;\n\n var key = stripDiacritics(keyValue).toLowerCase();\n if (!this._items.has(key)) {\n this._items.set(key, []);\n }\n this._items.get(key).push(object);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }, {\n key: 'match',\n value: function match(query) {\n var _this = this;\n\n query = stripDiacritics(query).toLowerCase();\n if (this._options.shouldMatchWordsOnly) {\n query = query.replace(/[^\\w]/g, '');\n }\n if (query.length === 0) {\n return [];\n }\n var results = [];\n // Iterate through the map & check each key.\n // ES6 Map iteration order is defined to be insertion order, so results\n // here will come out in the order they were put in.\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)(this._items.keys()), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var key = _step4.value;\n\n var resultKey = key;\n if (this._options.shouldMatchWordsOnly) {\n resultKey = resultKey.replace(/[^\\w]/g, '');\n }\n var index = resultKey.indexOf(query);\n if (index !== -1 && (!this._options.shouldMatchPrefix || index === 0)) {\n results.push({ key: key, index: index });\n }\n }\n\n // Sort them by where the query appeared in the search key\n // lodash sortBy is a stable sort, so results where the query\n // appeared in the same place will retain their order with\n // respect to each other.\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n var sortedResults = (0, _sortBy3.default)(results, function (candidate) {\n return candidate.index;\n });\n\n // Now map the keys to the result objects. Each result object is a list, so\n // flatMap will flatten those lists out into a single list. Also remove any\n // duplicates.\n return (0, _uniq3.default)((0, _flatMap3.default)(sortedResults, function (candidate) {\n return _this._items.get(candidate.key);\n }));\n }\n }]);\n return QueryMatcher;\n}();\n\nexports.default = QueryMatcher;\nmodule.exports = exports['default'];\n//# sourceMappingURL=QueryMatcher.js.map","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n var fns = exec(defined, SYMBOL, ''[KEY]);\n var strfn = fns[0];\n var rxfn = fns[1];\n if (fails(function () {\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n })) {\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","'use strict';\n// Forced replacement prototype accessors methods\nmodule.exports = require('./_library') || !require('./_fails')(function () {\n var K = Math.random();\n // In FF throws only define methods\n // eslint-disable-next-line no-undef, no-useless-call\n __defineSetter__.call(null, K, function () { /* empty */ });\n delete require('./_global')[K];\n});\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = new Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar OBSERVED_ERROR = {};\n\n/**\n * `Transaction` creates a black box that is able to wrap any method such that\n * certain invariants are maintained before and after the method is invoked\n * (Even if an exception is thrown while invoking the wrapped method). Whoever\n * instantiates a transaction can provide enforcers of the invariants at\n * creation time. The `Transaction` class itself will supply one additional\n * automatic invariant for you - the invariant that any transaction instance\n * should not be run while it is already being run. You would typically create a\n * single instance of a `Transaction` for reuse multiple times, that potentially\n * is used to wrap several different methods. Wrappers are extremely simple -\n * they only require implementing two methods.\n *\n * <pre>\n * wrappers (injected at creation time)\n * + +\n * | |\n * +-----------------|--------|--------------+\n * | v | |\n * | +---------------+ | |\n * | +--| wrapper1 |---|----+ |\n * | | +---------------+ v | |\n * | | +-------------+ | |\n * | | +----| wrapper2 |--------+ |\n * | | | +-------------+ | | |\n * | | | | | |\n * | v v v v | wrapper\n * | +---+ +---+ +---------+ +---+ +---+ | invariants\n * perform(anyMethod) | | | | | | | | | | | | maintained\n * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | +---+ +---+ +---------+ +---+ +---+ |\n * | initialize close |\n * +-----------------------------------------+\n * </pre>\n *\n * Use cases:\n * - Preserving the input selection ranges before/after reconciliation.\n * Restoring selection even in the event of an unexpected error.\n * - Deactivating events while rearranging the DOM, preventing blurs/focuses,\n * while guaranteeing that afterwards, the event system is reactivated.\n * - Flushing a queue of collected DOM mutations to the main UI thread after a\n * reconciliation takes place in a worker thread.\n * - Invoking any collected `componentDidUpdate` callbacks after rendering new\n * content.\n * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue\n * to preserve the `scrollTop` (an automatic scroll aware DOM).\n * - (Future use case): Layout calculations before and after DOM updates.\n *\n * Transactional plugin API:\n * - A module that has an `initialize` method that returns any precomputation.\n * - and a `close` method that accepts the precomputation. `close` is invoked\n * when the wrapped process is completed, or has failed.\n *\n * @param {Array<TransactionalWrapper>} transactionWrapper Wrapper modules\n * that implement `initialize` and `close`.\n * @return {Transaction} Single transaction for reuse in thread.\n *\n * @class Transaction\n */\nvar TransactionImpl = {\n /**\n * Sets up this instance so that it is prepared for collecting metrics. Does\n * so such that this setup method may be used on an instance that is already\n * initialized, in a way that does not consume additional memory upon reuse.\n * That can be useful if you decide to make your subclass of this mixin a\n * \"PooledClass\".\n */\n reinitializeTransaction: function () {\n this.transactionWrappers = this.getTransactionWrappers();\n if (this.wrapperInitData) {\n this.wrapperInitData.length = 0;\n } else {\n this.wrapperInitData = [];\n }\n this._isInTransaction = false;\n },\n\n _isInTransaction: false,\n\n /**\n * @abstract\n * @return {Array<TransactionWrapper>} Array of transaction wrappers.\n */\n getTransactionWrappers: null,\n\n isInTransaction: function () {\n return !!this._isInTransaction;\n },\n\n /* eslint-disable space-before-function-paren */\n\n /**\n * Executes the function within a safety window. Use this for the top level\n * methods that result in large amounts of computation/mutations that would\n * need to be safety checked. The optional arguments helps prevent the need\n * to bind in many cases.\n *\n * @param {function} method Member of scope to call.\n * @param {Object} scope Scope to invoke from.\n * @param {Object?=} a Argument to pass to the method.\n * @param {Object?=} b Argument to pass to the method.\n * @param {Object?=} c Argument to pass to the method.\n * @param {Object?=} d Argument to pass to the method.\n * @param {Object?=} e Argument to pass to the method.\n * @param {Object?=} f Argument to pass to the method.\n *\n * @return {*} Return value from `method`.\n */\n perform: function (method, scope, a, b, c, d, e, f) {\n /* eslint-enable space-before-function-paren */\n !!this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.') : _prodInvariant('27') : void 0;\n var errorThrown;\n var ret;\n try {\n this._isInTransaction = true;\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // one of these calls threw.\n errorThrown = true;\n this.initializeAll(0);\n ret = method.call(scope, a, b, c, d, e, f);\n errorThrown = false;\n } finally {\n try {\n if (errorThrown) {\n // If `method` throws, prefer to show that stack trace over any thrown\n // by invoking `closeAll`.\n try {\n this.closeAll(0);\n } catch (err) {}\n } else {\n // Since `method` didn't throw, we don't want to silence the exception\n // here.\n this.closeAll(0);\n }\n } finally {\n this._isInTransaction = false;\n }\n }\n return ret;\n },\n\n initializeAll: function (startIndex) {\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n try {\n // Catching errors makes debugging more difficult, so we start with the\n // OBSERVED_ERROR state before overwriting it with the real return value\n // of initialize -- if it's still set to OBSERVED_ERROR in the finally\n // block, it means wrapper.initialize threw.\n this.wrapperInitData[i] = OBSERVED_ERROR;\n this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null;\n } finally {\n if (this.wrapperInitData[i] === OBSERVED_ERROR) {\n // The initializer for wrapper i threw an error; initialize the\n // remaining wrappers but silence any exceptions from them to ensure\n // that the first error is the one to bubble up.\n try {\n this.initializeAll(i + 1);\n } catch (err) {}\n }\n }\n }\n },\n\n /**\n * Invokes each of `this.transactionWrappers.close[i]` functions, passing into\n * them the respective return values of `this.transactionWrappers.init[i]`\n * (`close`rs that correspond to initializers that failed will not be\n * invoked).\n */\n closeAll: function (startIndex) {\n !this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : _prodInvariant('28') : void 0;\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n var initData = this.wrapperInitData[i];\n var errorThrown;\n try {\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // wrapper.close threw.\n errorThrown = true;\n if (initData !== OBSERVED_ERROR && wrapper.close) {\n wrapper.close.call(this, initData);\n }\n errorThrown = false;\n } finally {\n if (errorThrown) {\n // The closer for wrapper i threw an error; close the remaining\n // wrappers but silence any exceptions from them to ensure that the\n // first error is the one to bubble up.\n try {\n this.closeAll(i + 1);\n } catch (e) {}\n }\n }\n }\n this.wrapperInitData.length = 0;\n }\n};\n\nmodule.exports = TransactionImpl;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\nvar ViewportMetrics = require('./ViewportMetrics');\n\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar MouseEventInterface = {\n screenX: null,\n screenY: null,\n clientX: null,\n clientY: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n getModifierState: getEventModifierState,\n button: function (event) {\n // Webkit, Firefox, IE9+\n // which: 1 2 3\n // button: 0 1 2 (standard)\n var button = event.button;\n if ('which' in event) {\n return button;\n }\n // IE<9\n // which: undefined\n // button: 0 0 0\n // button: 1 4 2 (onmouseup)\n return button === 2 ? 2 : button === 4 ? 1 : 0;\n },\n buttons: null,\n relatedTarget: function (event) {\n return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);\n },\n // \"Proprietary\" Interface.\n pageX: function (event) {\n return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft;\n },\n pageY: function (event) {\n return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);\n\nmodule.exports = SyntheticMouseEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar DOMNamespaces = require('./DOMNamespaces');\n\nvar WHITESPACE_TEST = /^[ \\r\\n\\t\\f]/;\nvar NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \\r\\n\\t\\f\\/>]/;\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\n\n// SVG temp container for IE lacking innerHTML\nvar reusableSVGContainer;\n\n/**\n * Set the innerHTML property of a node, ensuring that whitespace is preserved\n * even in IE8.\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\nvar setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {\n // IE does not have innerHTML for SVG nodes, so instead we inject the\n // new markup in a temp node and then move the child nodes across into\n // the target node\n if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) {\n reusableSVGContainer = reusableSVGContainer || document.createElement('div');\n reusableSVGContainer.innerHTML = '<svg>' + html + '</svg>';\n var svgNode = reusableSVGContainer.firstChild;\n while (svgNode.firstChild) {\n node.appendChild(svgNode.firstChild);\n }\n } else {\n node.innerHTML = html;\n }\n});\n\nif (ExecutionEnvironment.canUseDOM) {\n // IE8: When updating a just created node with innerHTML only leading\n // whitespace is removed. When updating an existing node with innerHTML\n // whitespace in root TextNodes is also collapsed.\n // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html\n\n // Feature detection; only IE8 is known to behave improperly like this.\n var testElement = document.createElement('div');\n testElement.innerHTML = ' ';\n if (testElement.innerHTML === '') {\n setInnerHTML = function (node, html) {\n // Magic theory: IE8 supposedly differentiates between added and updated\n // nodes when processing innerHTML, innerHTML on updated nodes suffers\n // from worse whitespace behavior. Re-adding a node like this triggers\n // the initial and more favorable whitespace behavior.\n // TODO: What to do on a detached node?\n if (node.parentNode) {\n node.parentNode.replaceChild(node, node);\n }\n\n // We also implement a workaround for non-visible tags disappearing into\n // thin air on IE8, this only happens if there is no visible text\n // in-front of the non-visible tags. Piggyback on the whitespace fix\n // and simply check if any non-visible tags appear in the source.\n if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) {\n // Recover leading whitespace by temporarily prepending any character.\n // \\uFEFF has the potential advantage of being zero-width/invisible.\n // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode\n // in hopes that this is preserved even if \"\\uFEFF\" is transformed to\n // the actual Unicode character (by Babel, for example).\n // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216\n node.innerHTML = String.fromCharCode(0xfeff) + html;\n\n // deleteData leaves an empty `TextNode` which offsets the index of all\n // children. Definitely want to avoid this.\n var textNode = node.firstChild;\n if (textNode.data.length === 1) {\n node.removeChild(textNode);\n } else {\n textNode.deleteData(0, 1);\n }\n } else {\n node.innerHTML = html;\n }\n };\n }\n testElement = null;\n}\n\nmodule.exports = setInnerHTML;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * Based on the escape-html library, which is used under the MIT License below:\n *\n * Copyright (c) 2012-2013 TJ Holowaychuk\n * Copyright (c) 2015 Andreas Lubbe\n * Copyright (c) 2015 Tiancheng \"Timothy\" Gu\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n */\n\n'use strict';\n\n// code copied and modified from escape-html\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n // \"\n escape = '"';\n break;\n case 38:\n // &\n escape = '&';\n break;\n case 39:\n // '\n escape = '''; // modified from escape-html; used to be '''\n break;\n case 60:\n // <\n escape = '<';\n break;\n case 62:\n // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n}\n// end code copied and modified from escape-html\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\nfunction escapeTextContentForBrowser(text) {\n if (typeof text === 'boolean' || typeof text === 'number') {\n // this shortcircuit helps perf for types that we know will never have\n // special characters, especially given that this function is used often\n // for numeric dom ids.\n return '' + text;\n }\n return escapeHtml(text);\n}\n\nmodule.exports = escapeTextContentForBrowser;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar ReactEventEmitterMixin = require('./ReactEventEmitterMixin');\nvar ViewportMetrics = require('./ViewportMetrics');\n\nvar getVendorPrefixedEventName = require('./getVendorPrefixedEventName');\nvar isEventSupported = require('./isEventSupported');\n\n/**\n * Summary of `ReactBrowserEventEmitter` event handling:\n *\n * - Top-level delegation is used to trap most native browser events. This\n * may only occur in the main thread and is the responsibility of\n * ReactEventListener, which is injected and can therefore support pluggable\n * event sources. This is the only work that occurs in the main thread.\n *\n * - We normalize and de-duplicate events to account for browser quirks. This\n * may be done in the worker thread.\n *\n * - Forward these native events (with the associated top-level type used to\n * trap it) to `EventPluginHub`, which in turn will ask plugins if they want\n * to extract any synthetic events.\n *\n * - The `EventPluginHub` will then process each event by annotating them with\n * \"dispatches\", a sequence of listeners and IDs that care about that event.\n *\n * - The `EventPluginHub` then dispatches the events.\n *\n * Overview of React and the event system:\n *\n * +------------+ .\n * | DOM | .\n * +------------+ .\n * | .\n * v .\n * +------------+ .\n * | ReactEvent | .\n * | Listener | .\n * +------------+ . +-----------+\n * | . +--------+|SimpleEvent|\n * | . | |Plugin |\n * +-----|------+ . v +-----------+\n * | | | . +--------------+ +------------+\n * | +-----------.--->|EventPluginHub| | Event |\n * | | . | | +-----------+ | Propagators|\n * | ReactEvent | . | | |TapEvent | |------------|\n * | Emitter | . | |<---+|Plugin | |other plugin|\n * | | . | | +-----------+ | utilities |\n * | +-----------.--->| | +------------+\n * | | | . +--------------+\n * +-----|------+ . ^ +-----------+\n * | . | |Enter/Leave|\n * + . +-------+|Plugin |\n * +-------------+ . +-----------+\n * | application | .\n * |-------------| .\n * | | .\n * | | .\n * +-------------+ .\n * .\n * React Core . General Purpose Event Plugin System\n */\n\nvar hasEventPageXY;\nvar alreadyListeningTo = {};\nvar isMonitoringScrollValue = false;\nvar reactTopListenersCounter = 0;\n\n// For events like 'submit' which don't consistently bubble (which we trap at a\n// lower node than `document`), binding at `document` would cause duplicate\n// events so we don't include them here\nvar topEventMapping = {\n topAbort: 'abort',\n topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend',\n topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration',\n topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart',\n topBlur: 'blur',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topChange: 'change',\n topClick: 'click',\n topCompositionEnd: 'compositionend',\n topCompositionStart: 'compositionstart',\n topCompositionUpdate: 'compositionupdate',\n topContextMenu: 'contextmenu',\n topCopy: 'copy',\n topCut: 'cut',\n topDoubleClick: 'dblclick',\n topDrag: 'drag',\n topDragEnd: 'dragend',\n topDragEnter: 'dragenter',\n topDragExit: 'dragexit',\n topDragLeave: 'dragleave',\n topDragOver: 'dragover',\n topDragStart: 'dragstart',\n topDrop: 'drop',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topFocus: 'focus',\n topInput: 'input',\n topKeyDown: 'keydown',\n topKeyPress: 'keypress',\n topKeyUp: 'keyup',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topMouseDown: 'mousedown',\n topMouseMove: 'mousemove',\n topMouseOut: 'mouseout',\n topMouseOver: 'mouseover',\n topMouseUp: 'mouseup',\n topPaste: 'paste',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topScroll: 'scroll',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topSelectionChange: 'selectionchange',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTextInput: 'textInput',\n topTimeUpdate: 'timeupdate',\n topTouchCancel: 'touchcancel',\n topTouchEnd: 'touchend',\n topTouchMove: 'touchmove',\n topTouchStart: 'touchstart',\n topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting',\n topWheel: 'wheel'\n};\n\n/**\n * To ensure no conflicts with other potential React instances on the page\n */\nvar topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt) {\n // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`\n // directly.\n if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {\n mountAt[topListenersIDKey] = reactTopListenersCounter++;\n alreadyListeningTo[mountAt[topListenersIDKey]] = {};\n }\n return alreadyListeningTo[mountAt[topListenersIDKey]];\n}\n\n/**\n * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For\n * example:\n *\n * EventPluginHub.putListener('myID', 'onClick', myFunction);\n *\n * This would allocate a \"registration\" of `('onClick', myFunction)` on 'myID'.\n *\n * @internal\n */\nvar ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {\n /**\n * Injectable event backend\n */\n ReactEventListener: null,\n\n injection: {\n /**\n * @param {object} ReactEventListener\n */\n injectReactEventListener: function (ReactEventListener) {\n ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);\n ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;\n }\n },\n\n /**\n * Sets whether or not any created callbacks should be enabled.\n *\n * @param {boolean} enabled True if callbacks should be enabled.\n */\n setEnabled: function (enabled) {\n if (ReactBrowserEventEmitter.ReactEventListener) {\n ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);\n }\n },\n\n /**\n * @return {boolean} True if callbacks are enabled.\n */\n isEnabled: function () {\n return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled());\n },\n\n /**\n * We listen for bubbled touch events on the document object.\n *\n * Firefox v8.01 (and possibly others) exhibited strange behavior when\n * mounting `onmousemove` events at some node that was not the document\n * element. The symptoms were that if your mouse is not moving over something\n * contained within that mount point (for example on the background) the\n * top-level listeners for `onmousemove` won't be called. However, if you\n * register the `mousemove` on the document object, then it will of course\n * catch all `mousemove`s. This along with iOS quirks, justifies restricting\n * top-level listeners to the document object only, at least for these\n * movement types of events and possibly all events.\n *\n * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n *\n * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but\n * they bubble to document.\n *\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {object} contentDocumentHandle Document which owns the container\n */\n listenTo: function (registrationName, contentDocumentHandle) {\n var mountAt = contentDocumentHandle;\n var isListening = getListeningForDocument(mountAt);\n var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];\n\n for (var i = 0; i < dependencies.length; i++) {\n var dependency = dependencies[i];\n if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {\n if (dependency === 'topWheel') {\n if (isEventSupported('wheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'wheel', mountAt);\n } else if (isEventSupported('mousewheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'mousewheel', mountAt);\n } else {\n // Firefox needs to capture a different mouse scroll event.\n // @see http://www.quirksmode.org/dom/events/tests/scroll.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt);\n }\n } else if (dependency === 'topScroll') {\n if (isEventSupported('scroll', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topScroll', 'scroll', mountAt);\n } else {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topScroll', 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);\n }\n } else if (dependency === 'topFocus' || dependency === 'topBlur') {\n if (isEventSupported('focus', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topFocus', 'focus', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topBlur', 'blur', mountAt);\n } else if (isEventSupported('focusin')) {\n // IE has `focusin` and `focusout` events which bubble.\n // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topFocus', 'focusin', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topBlur', 'focusout', mountAt);\n }\n\n // to make sure blur and focus event listeners are only attached once\n isListening.topBlur = true;\n isListening.topFocus = true;\n } else if (topEventMapping.hasOwnProperty(dependency)) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);\n }\n\n isListening[dependency] = true;\n }\n }\n },\n\n trapBubbledEvent: function (topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);\n },\n\n trapCapturedEvent: function (topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);\n },\n\n /**\n * Protect against document.createEvent() returning null\n * Some popup blocker extensions appear to do this:\n * https://github.com/facebook/react/issues/6887\n */\n supportsEventPageXY: function () {\n if (!document.createEvent) {\n return false;\n }\n var ev = document.createEvent('MouseEvent');\n return ev != null && 'pageX' in ev;\n },\n\n /**\n * Listens to window scroll and resize events. We cache scroll values so that\n * application code can access them without triggering reflows.\n *\n * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when\n * pageX/pageY isn't supported (legacy browsers).\n *\n * NOTE: Scroll events do not bubble.\n *\n * @see http://www.quirksmode.org/dom/events/scroll.html\n */\n ensureScrollValueMonitoring: function () {\n if (hasEventPageXY === undefined) {\n hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();\n }\n if (!hasEventPageXY && !isMonitoringScrollValue) {\n var refresh = ViewportMetrics.refreshScrollValues;\n ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);\n isMonitoringScrollValue = true;\n }\n }\n});\n\nmodule.exports = ReactBrowserEventEmitter;","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/user\n */\n\nvar EventEmitter = require(\"events\").EventEmitter;\nvar utils = require(\"../utils\");\n\n/**\n * Construct a new User. A User must have an ID and can optionally have extra\n * information associated with it.\n * @constructor\n * @param {string} userId Required. The ID of this user.\n * @prop {string} userId The ID of the user.\n * @prop {Object} info The info object supplied in the constructor.\n * @prop {string} displayName The 'displayname' of the user if known.\n * @prop {string} avatarUrl The 'avatar_url' of the user if known.\n * @prop {string} presence The presence enum if known.\n * @prop {string} presenceStatusMsg The presence status message if known.\n * @prop {Number} lastActiveAgo The time elapsed in ms since the user interacted\n * proactively with the server, or we saw a message from the user\n * @prop {Number} lastPresenceTs Timestamp (ms since the epoch) for when we last\n * received presence data for this user. We can subtract\n * lastActiveAgo from this to approximate an absolute value for\n * when a user was last active.\n * @prop {Boolean} currentlyActive Whether we should consider lastActiveAgo to be\n * an approximation and that the user should be seen as active 'now'\n * @prop {string} _unstable_statusMessage The status message for the user, if known. This is\n * different from the presenceStatusMsg in that this is not tied to\n * the user's presence, and should be represented differently.\n * @prop {Object} events The events describing this user.\n * @prop {MatrixEvent} events.presence The m.presence event for this user.\n */\nfunction User(userId) {\n this.userId = userId;\n this.presence = \"offline\";\n this.presenceStatusMsg = null;\n this._unstable_statusMessage = \"\";\n this.displayName = userId;\n this.rawDisplayName = userId;\n this.avatarUrl = null;\n this.lastActiveAgo = 0;\n this.lastPresenceTs = 0;\n this.currentlyActive = false;\n this.events = {\n presence: null,\n profile: null\n };\n this._updateModifiedTime();\n}\nutils.inherits(User, EventEmitter);\n\n/**\n * Update this User with the given presence event. May fire \"User.presence\",\n * \"User.avatarUrl\" and/or \"User.displayName\" if this event updates this user's\n * properties.\n * @param {MatrixEvent} event The <code>m.presence</code> event.\n * @fires module:client~MatrixClient#event:\"User.presence\"\n * @fires module:client~MatrixClient#event:\"User.displayName\"\n * @fires module:client~MatrixClient#event:\"User.avatarUrl\"\n */\nUser.prototype.setPresenceEvent = function (event) {\n if (event.getType() !== \"m.presence\") {\n return;\n }\n var firstFire = this.events.presence === null;\n this.events.presence = event;\n\n var eventsToFire = [];\n if (event.getContent().presence !== this.presence || firstFire) {\n eventsToFire.push(\"User.presence\");\n }\n if (event.getContent().avatar_url && event.getContent().avatar_url !== this.avatarUrl) {\n eventsToFire.push(\"User.avatarUrl\");\n }\n if (event.getContent().displayname && event.getContent().displayname !== this.displayName) {\n eventsToFire.push(\"User.displayName\");\n }\n if (event.getContent().currently_active !== undefined && event.getContent().currently_active !== this.currentlyActive) {\n eventsToFire.push(\"User.currentlyActive\");\n }\n\n this.presence = event.getContent().presence;\n eventsToFire.push(\"User.lastPresenceTs\");\n\n if (event.getContent().status_msg) {\n this.presenceStatusMsg = event.getContent().status_msg;\n }\n if (event.getContent().displayname) {\n this.displayName = event.getContent().displayname;\n }\n if (event.getContent().avatar_url) {\n this.avatarUrl = event.getContent().avatar_url;\n }\n this.lastActiveAgo = event.getContent().last_active_ago;\n this.lastPresenceTs = Date.now();\n this.currentlyActive = event.getContent().currently_active;\n\n this._updateModifiedTime();\n\n for (var i = 0; i < eventsToFire.length; i++) {\n this.emit(eventsToFire[i], event, this);\n }\n};\n\n/**\n * Manually set this user's display name. No event is emitted in response to this\n * as there is no underlying MatrixEvent to emit with.\n * @param {string} name The new display name.\n */\nUser.prototype.setDisplayName = function (name) {\n var oldName = this.displayName;\n this.displayName = name;\n if (name !== oldName) {\n this._updateModifiedTime();\n }\n};\n\n/**\n * Manually set this user's non-disambiguated display name. No event is emitted\n * in response to this as there is no underlying MatrixEvent to emit with.\n * @param {string} name The new display name.\n */\nUser.prototype.setRawDisplayName = function (name) {\n this.rawDisplayName = name;\n};\n\n/**\n * Manually set this user's avatar URL. No event is emitted in response to this\n * as there is no underlying MatrixEvent to emit with.\n * @param {string} url The new avatar URL.\n */\nUser.prototype.setAvatarUrl = function (url) {\n var oldUrl = this.avatarUrl;\n this.avatarUrl = url;\n if (url !== oldUrl) {\n this._updateModifiedTime();\n }\n};\n\n/**\n * Update the last modified time to the current time.\n */\nUser.prototype._updateModifiedTime = function () {\n this._modified = Date.now();\n};\n\n/**\n * Get the timestamp when this User was last updated. This timestamp is\n * updated when this User receives a new Presence event which has updated a\n * property on this object. It is updated <i>before</i> firing events.\n * @return {number} The timestamp\n */\nUser.prototype.getLastModifiedTime = function () {\n return this._modified;\n};\n\n/**\n * Get the absolute timestamp when this User was last known active on the server.\n * It is *NOT* accurate if this.currentlyActive is true.\n * @return {number} The timestamp\n */\nUser.prototype.getLastActiveTs = function () {\n return this.lastPresenceTs - this.lastActiveAgo;\n};\n\n/**\n * Manually set the user's status message.\n * @param {MatrixEvent} event The <code>im.vector.user_status</code> event.\n */\nUser.prototype._unstable_updateStatusMessage = function (event) {\n if (!event.getContent()) this._unstable_statusMessage = \"\";else this._unstable_statusMessage = event.getContent()[\"status\"];\n this._updateModifiedTime();\n};\n\n/**\n * The User class.\n */\nmodule.exports = User;\n\n/**\n * Fires whenever any user's lastPresenceTs changes,\n * ie. whenever any presence event is received for a user.\n * @event module:client~MatrixClient#\"User.lastPresenceTs\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {User} user The user whose User.lastPresenceTs changed.\n * @example\n * matrixClient.on(\"User.lastPresenceTs\", function(event, user){\n * var newlastPresenceTs = user.lastPresenceTs;\n * });\n */\n\n/**\n * Fires whenever any user's presence changes.\n * @event module:client~MatrixClient#\"User.presence\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {User} user The user whose User.presence changed.\n * @example\n * matrixClient.on(\"User.presence\", function(event, user){\n * var newPresence = user.presence;\n * });\n */\n\n/**\n * Fires whenever any user's currentlyActive changes.\n * @event module:client~MatrixClient#\"User.currentlyActive\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {User} user The user whose User.currentlyActive changed.\n * @example\n * matrixClient.on(\"User.currentlyActive\", function(event, user){\n * var newCurrentlyActive = user.currentlyActive;\n * });\n */\n\n/**\n * Fires whenever any user's display name changes.\n * @event module:client~MatrixClient#\"User.displayName\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {User} user The user whose User.displayName changed.\n * @example\n * matrixClient.on(\"User.displayName\", function(event, user){\n * var newName = user.displayName;\n * });\n */\n\n/**\n * Fires whenever any user's avatar URL changes.\n * @event module:client~MatrixClient#\"User.avatarUrl\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {User} user The user whose User.avatarUrl changed.\n * @example\n * matrixClient.on(\"User.avatarUrl\", function(event, user){\n * var newUrl = user.avatarUrl;\n * });\n */\n//# sourceMappingURL=user.js.map","\"use strict\";\n\nvar _create = require(\"babel-runtime/core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _utils = require(\"./utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The purpose of this class is to accumulate /sync responses such that a\n * complete \"initial\" JSON response can be returned which accurately represents\n * the sum total of the /sync responses accumulated to date. It only handles\n * room data: that is, everything under the \"rooms\" top-level key.\n *\n * This class is used when persisting room data so a complete /sync response can\n * be loaded from disk and incremental syncs can be performed on the server,\n * rather than asking the server to do an initial sync on startup.\n */\nvar SyncAccumulator = function () {\n /**\n * @param {Object} opts\n * @param {Number=} opts.maxTimelineEntries The ideal maximum number of\n * timeline entries to keep in the sync response. This is best-effort, as\n * clients do not always have a back-pagination token for each event, so\n * it's possible there may be slightly *less* than this value. There will\n * never be more. This cannot be 0 or else it makes it impossible to scroll\n * back in a room. Default: 50.\n */\n function SyncAccumulator(opts) {\n (0, _classCallCheck3.default)(this, SyncAccumulator);\n\n opts = opts || {};\n opts.maxTimelineEntries = opts.maxTimelineEntries || 50;\n this.opts = opts;\n this.accountData = {\n //$event_type: Object\n };\n this.inviteRooms = {\n //$roomId: { ... sync 'invite' json data ... }\n };\n this.joinRooms = {\n //$roomId: {\n // _currentState: { $event_type: { $state_key: json } },\n // _timeline: [\n // { event: $event, token: null|token },\n // { event: $event, token: null|token },\n // { event: $event, token: null|token },\n // ...\n // ],\n // _summary: {\n // m.heroes: [ $user_id ],\n // m.joined_member_count: $count,\n // m.invited_member_count: $count\n // },\n // _accountData: { $event_type: json },\n // _unreadNotifications: { ... unread_notifications JSON ... },\n // _readReceipts: { $user_id: { data: $json, eventId: $event_id }}\n //}\n };\n // the /sync token which corresponds to the last time rooms were\n // accumulated. We remember this so that any caller can obtain a\n // coherent /sync response and know at what point they should be\n // streaming from without losing events.\n this.nextBatch = null;\n\n // { ('invite'|'join'|'leave'): $groupId: { ... sync 'group' data } }\n this.groups = {\n invite: {},\n join: {},\n leave: {}\n };\n }\n\n (0, _createClass3.default)(SyncAccumulator, [{\n key: \"accumulate\",\n value: function accumulate(syncResponse) {\n this._accumulateRooms(syncResponse);\n this._accumulateGroups(syncResponse);\n this._accumulateAccountData(syncResponse);\n this.nextBatch = syncResponse.next_batch;\n }\n }, {\n key: \"_accumulateAccountData\",\n value: function _accumulateAccountData(syncResponse) {\n var _this = this;\n\n if (!syncResponse.account_data || !syncResponse.account_data.events) {\n return;\n }\n // Clobbers based on event type.\n syncResponse.account_data.events.forEach(function (e) {\n _this.accountData[e.type] = e;\n });\n }\n\n /**\n * Accumulate incremental /sync room data.\n * @param {Object} syncResponse the complete /sync JSON\n */\n\n }, {\n key: \"_accumulateRooms\",\n value: function _accumulateRooms(syncResponse) {\n var _this2 = this;\n\n if (!syncResponse.rooms) {\n return;\n }\n if (syncResponse.rooms.invite) {\n (0, _keys2.default)(syncResponse.rooms.invite).forEach(function (roomId) {\n _this2._accumulateRoom(roomId, \"invite\", syncResponse.rooms.invite[roomId]);\n });\n }\n if (syncResponse.rooms.join) {\n (0, _keys2.default)(syncResponse.rooms.join).forEach(function (roomId) {\n _this2._accumulateRoom(roomId, \"join\", syncResponse.rooms.join[roomId]);\n });\n }\n if (syncResponse.rooms.leave) {\n (0, _keys2.default)(syncResponse.rooms.leave).forEach(function (roomId) {\n _this2._accumulateRoom(roomId, \"leave\", syncResponse.rooms.leave[roomId]);\n });\n }\n }\n }, {\n key: \"_accumulateRoom\",\n value: function _accumulateRoom(roomId, category, data) {\n // Valid /sync state transitions\n // +--------+ <======+ 1: Accept an invite\n // +== | INVITE | | (5) 2: Leave a room\n // | +--------+ =====+ | 3: Join a public room previously\n // |(1) (4) | | left (handle as if new room)\n // V (2) V | 4: Reject an invite\n // +------+ ========> +--------+ 5: Invite to a room previously\n // | JOIN | (3) | LEAVE* | left (handle as if new room)\n // +------+ <======== +--------+\n //\n // * equivalent to \"no state\"\n switch (category) {\n case \"invite\":\n // (5)\n this._accumulateInviteState(roomId, data);\n break;\n case \"join\":\n if (this.inviteRooms[roomId]) {\n // (1)\n // was previously invite, now join. We expect /sync to give\n // the entire state and timeline on 'join', so delete previous\n // invite state\n delete this.inviteRooms[roomId];\n }\n // (3)\n this._accumulateJoinState(roomId, data);\n break;\n case \"leave\":\n if (this.inviteRooms[roomId]) {\n // (4)\n delete this.inviteRooms[roomId];\n } else {\n // (2)\n delete this.joinRooms[roomId];\n }\n break;\n default:\n console.error(\"Unknown cateogory: \", category);\n }\n }\n }, {\n key: \"_accumulateInviteState\",\n value: function _accumulateInviteState(roomId, data) {\n if (!data.invite_state || !data.invite_state.events) {\n // no new data\n return;\n }\n if (!this.inviteRooms[roomId]) {\n this.inviteRooms[roomId] = {\n invite_state: data.invite_state\n };\n return;\n }\n // accumulate extra keys for invite->invite transitions\n // clobber based on event type / state key\n // We expect invite_state to be small, so just loop over the events\n var currentData = this.inviteRooms[roomId];\n data.invite_state.events.forEach(function (e) {\n var hasAdded = false;\n for (var i = 0; i < currentData.invite_state.events.length; i++) {\n var current = currentData.invite_state.events[i];\n if (current.type === e.type && current.state_key == e.state_key) {\n currentData.invite_state.events[i] = e; // update\n hasAdded = true;\n }\n }\n if (!hasAdded) {\n currentData.invite_state.events.push(e);\n }\n });\n }\n\n // Accumulate timeline and state events in a room.\n\n }, {\n key: \"_accumulateJoinState\",\n value: function _accumulateJoinState(roomId, data) {\n // We expect this function to be called a lot (every /sync) so we want\n // this to be fast. /sync stores events in an array but we often want\n // to clobber based on type/state_key. Rather than convert arrays to\n // maps all the time, just keep private maps which contain\n // the actual current accumulated sync state, and array-ify it when\n // getJSON() is called.\n\n // State resolution:\n // The 'state' key is the delta from the previous sync (or start of time\n // if no token was supplied), to the START of the timeline. To obtain\n // the current state, we need to \"roll forward\" state by reading the\n // timeline. We want to store the current state so we can drop events\n // out the end of the timeline based on opts.maxTimelineEntries.\n //\n // 'state' 'timeline' current state\n // |-------x<======================>x\n // T I M E\n //\n // When getJSON() is called, we 'roll back' the current state by the\n // number of entries in the timeline to work out what 'state' should be.\n\n // Back-pagination:\n // On an initial /sync, the server provides a back-pagination token for\n // the start of the timeline. When /sync deltas come down, they also\n // include back-pagination tokens for the start of the timeline. This\n // means not all events in the timeline have back-pagination tokens, as\n // it is only the ones at the START of the timeline which have them.\n // In order for us to have a valid timeline (and back-pagination token\n // to match), we need to make sure that when we remove old timeline\n // events, that we roll forward to an event which has a back-pagination\n // token. This means we can't keep a strict sliding-window based on\n // opts.maxTimelineEntries, and we may have a few less. We should never\n // have more though, provided that the /sync limit is less than or equal\n // to opts.maxTimelineEntries.\n\n if (!this.joinRooms[roomId]) {\n // Create truly empty objects so event types of 'hasOwnProperty' and co\n // don't cause this code to break.\n this.joinRooms[roomId] = {\n _currentState: (0, _create2.default)(null),\n _timeline: [],\n _accountData: (0, _create2.default)(null),\n _unreadNotifications: {},\n _summary: {},\n _readReceipts: {}\n };\n }\n var currentData = this.joinRooms[roomId];\n\n if (data.account_data && data.account_data.events) {\n // clobber based on type\n data.account_data.events.forEach(function (e) {\n currentData._accountData[e.type] = e;\n });\n }\n\n // these probably clobber, spec is unclear.\n if (data.unread_notifications) {\n currentData._unreadNotifications = data.unread_notifications;\n }\n if (data.summary) {\n var HEROES_KEY = \"m.heroes\";\n var INVITED_COUNT_KEY = \"m.invited_member_count\";\n var JOINED_COUNT_KEY = \"m.joined_member_count\";\n\n var acc = currentData._summary;\n var sum = data.summary;\n acc[HEROES_KEY] = sum[HEROES_KEY] || acc[HEROES_KEY];\n acc[JOINED_COUNT_KEY] = sum[JOINED_COUNT_KEY] || acc[JOINED_COUNT_KEY];\n acc[INVITED_COUNT_KEY] = sum[INVITED_COUNT_KEY] || acc[INVITED_COUNT_KEY];\n }\n\n if (data.ephemeral && data.ephemeral.events) {\n data.ephemeral.events.forEach(function (e) {\n // We purposefully do not persist m.typing events.\n // Technically you could refresh a browser before the timer on a\n // typing event is up, so it'll look like you aren't typing when\n // you really still are. However, the alternative is worse. If\n // we do persist typing events, it will look like people are\n // typing forever until someone really does start typing (which\n // will prompt Synapse to send down an actual m.typing event to\n // clobber the one we persisted).\n if (e.type !== \"m.receipt\" || !e.content) {\n // This means we'll drop unknown ephemeral events but that\n // seems okay.\n return;\n }\n // Handle m.receipt events. They clobber based on:\n // (user_id, receipt_type)\n // but they are keyed in the event as:\n // content:{ $event_id: { $receipt_type: { $user_id: {json} }}}\n // so store them in the former so we can accumulate receipt deltas\n // quickly and efficiently (we expect a lot of them). Fold the\n // receipt type into the key name since we only have 1 at the\n // moment (m.read) and nested JSON objects are slower and more\n // of a hassle to work with. We'll inflate this back out when\n // getJSON() is called.\n (0, _keys2.default)(e.content).forEach(function (eventId) {\n if (!e.content[eventId][\"m.read\"]) {\n return;\n }\n (0, _keys2.default)(e.content[eventId][\"m.read\"]).forEach(function (userId) {\n // clobber on user ID\n currentData._readReceipts[userId] = {\n data: e.content[eventId][\"m.read\"][userId],\n eventId: eventId\n };\n });\n });\n });\n }\n\n // if we got a limited sync, we need to remove all timeline entries or else\n // we will have gaps in the timeline.\n if (data.timeline && data.timeline.limited) {\n currentData._timeline = [];\n }\n\n // Work out the current state. The deltas need to be applied in the order:\n // - existing state which didn't come down /sync.\n // - State events under the 'state' key.\n // - State events in the 'timeline'.\n if (data.state && data.state.events) {\n data.state.events.forEach(function (e) {\n setState(currentData._currentState, e);\n });\n }\n if (data.timeline && data.timeline.events) {\n data.timeline.events.forEach(function (e, index) {\n // this nops if 'e' isn't a state event\n setState(currentData._currentState, e);\n // append the event to the timeline. The back-pagination token\n // corresponds to the first event in the timeline\n currentData._timeline.push({\n event: e,\n token: index === 0 ? data.timeline.prev_batch : null\n });\n });\n }\n\n // attempt to prune the timeline by jumping between events which have\n // pagination tokens.\n if (currentData._timeline.length > this.opts.maxTimelineEntries) {\n var startIndex = currentData._timeline.length - this.opts.maxTimelineEntries;\n for (var i = startIndex; i < currentData._timeline.length; i++) {\n if (currentData._timeline[i].token) {\n // keep all events after this, including this one\n currentData._timeline = currentData._timeline.slice(i, currentData._timeline.length);\n break;\n }\n }\n }\n }\n\n /**\n * Accumulate incremental /sync group data.\n * @param {Object} syncResponse the complete /sync JSON\n */\n\n }, {\n key: \"_accumulateGroups\",\n value: function _accumulateGroups(syncResponse) {\n var _this3 = this;\n\n if (!syncResponse.groups) {\n return;\n }\n if (syncResponse.groups.invite) {\n (0, _keys2.default)(syncResponse.groups.invite).forEach(function (groupId) {\n _this3._accumulateGroup(groupId, \"invite\", syncResponse.groups.invite[groupId]);\n });\n }\n if (syncResponse.groups.join) {\n (0, _keys2.default)(syncResponse.groups.join).forEach(function (groupId) {\n _this3._accumulateGroup(groupId, \"join\", syncResponse.groups.join[groupId]);\n });\n }\n if (syncResponse.groups.leave) {\n (0, _keys2.default)(syncResponse.groups.leave).forEach(function (groupId) {\n _this3._accumulateGroup(groupId, \"leave\", syncResponse.groups.leave[groupId]);\n });\n }\n }\n }, {\n key: \"_accumulateGroup\",\n value: function _accumulateGroup(groupId, category, data) {\n var _arr = ['invite', 'join', 'leave'];\n\n for (var _i = 0; _i < _arr.length; _i++) {\n var cat = _arr[_i];\n delete this.groups[cat][groupId];\n }\n this.groups[category][groupId] = data;\n }\n\n /**\n * Return everything under the 'rooms' key from a /sync response which\n * represents all room data that should be stored. This should be paired\n * with the sync token which represents the most recent /sync response\n * provided to accumulate().\n * @return {Object} An object with a \"nextBatch\", \"roomsData\" and \"accountData\"\n * keys.\n * The \"nextBatch\" key is a string which represents at what point in the\n * /sync stream the accumulator reached. This token should be used when\n * restarting a /sync stream at startup. Failure to do so can lead to missing\n * events. The \"roomsData\" key is an Object which represents the entire\n * /sync response from the 'rooms' key onwards. The \"accountData\" key is\n * a list of raw events which represent global account data.\n */\n\n }, {\n key: \"getJSON\",\n value: function getJSON() {\n var _this4 = this;\n\n var data = {\n join: {},\n invite: {},\n // always empty. This is set by /sync when a room was previously\n // in 'invite' or 'join'. On fresh startup, the client won't know\n // about any previous room being in 'invite' or 'join' so we can\n // just omit mentioning it at all, even if it has previously come\n // down /sync.\n // The notable exception is when a client is kicked or banned:\n // we may want to hold onto that room so the client can clearly see\n // why their room has disappeared. We don't persist it though because\n // it is unclear *when* we can safely remove the room from the DB.\n // Instead, we assume that if you're loading from the DB, you've\n // refreshed the page, which means you've seen the kick/ban already.\n leave: {}\n };\n (0, _keys2.default)(this.inviteRooms).forEach(function (roomId) {\n data.invite[roomId] = _this4.inviteRooms[roomId];\n });\n (0, _keys2.default)(this.joinRooms).forEach(function (roomId) {\n var roomData = _this4.joinRooms[roomId];\n var roomJson = {\n ephemeral: { events: [] },\n account_data: { events: [] },\n state: { events: [] },\n timeline: {\n events: [],\n prev_batch: null\n },\n unread_notifications: roomData._unreadNotifications,\n summary: roomData._summary\n };\n // Add account data\n (0, _keys2.default)(roomData._accountData).forEach(function (evType) {\n roomJson.account_data.events.push(roomData._accountData[evType]);\n });\n\n // Add receipt data\n var receiptEvent = {\n type: \"m.receipt\",\n room_id: roomId,\n content: {\n // $event_id: { \"m.read\": { $user_id: $json } }\n }\n };\n (0, _keys2.default)(roomData._readReceipts).forEach(function (userId) {\n var receiptData = roomData._readReceipts[userId];\n if (!receiptEvent.content[receiptData.eventId]) {\n receiptEvent.content[receiptData.eventId] = {\n \"m.read\": {}\n };\n }\n receiptEvent.content[receiptData.eventId][\"m.read\"][userId] = receiptData.data;\n });\n // add only if we have some receipt data\n if ((0, _keys2.default)(receiptEvent.content).length > 0) {\n roomJson.ephemeral.events.push(receiptEvent);\n }\n\n // Add timeline data\n roomData._timeline.forEach(function (msgData) {\n if (!roomJson.timeline.prev_batch) {\n // the first event we add to the timeline MUST match up to\n // the prev_batch token.\n if (!msgData.token) {\n return; // this shouldn't happen as we prune constantly.\n }\n roomJson.timeline.prev_batch = msgData.token;\n }\n roomJson.timeline.events.push(msgData.event);\n });\n\n // Add state data: roll back current state to the start of timeline,\n // by \"reverse clobbering\" from the end of the timeline to the start.\n // Convert maps back into arrays.\n var rollBackState = (0, _create2.default)(null);\n for (var i = roomJson.timeline.events.length - 1; i >= 0; i--) {\n var timelineEvent = roomJson.timeline.events[i];\n if (timelineEvent.state_key === null || timelineEvent.state_key === undefined) {\n continue; // not a state event\n }\n // since we're going back in time, we need to use the previous\n // state value else we'll break causality. We don't have the\n // complete previous state event, so we need to create one.\n var prevStateEvent = _utils2.default.deepCopy(timelineEvent);\n if (prevStateEvent.unsigned) {\n if (prevStateEvent.unsigned.prev_content) {\n prevStateEvent.content = prevStateEvent.unsigned.prev_content;\n }\n if (prevStateEvent.unsigned.prev_sender) {\n prevStateEvent.sender = prevStateEvent.unsigned.prev_sender;\n }\n }\n setState(rollBackState, prevStateEvent);\n }\n (0, _keys2.default)(roomData._currentState).forEach(function (evType) {\n (0, _keys2.default)(roomData._currentState[evType]).forEach(function (stateKey) {\n var ev = roomData._currentState[evType][stateKey];\n if (rollBackState[evType] && rollBackState[evType][stateKey]) {\n // use the reverse clobbered event instead.\n ev = rollBackState[evType][stateKey];\n }\n roomJson.state.events.push(ev);\n });\n });\n data.join[roomId] = roomJson;\n });\n\n // Add account data\n var accData = [];\n (0, _keys2.default)(this.accountData).forEach(function (evType) {\n accData.push(_this4.accountData[evType]);\n });\n\n return {\n nextBatch: this.nextBatch,\n roomsData: data,\n groupsData: this.groups,\n accountData: accData\n };\n }\n }, {\n key: \"getNextBatchToken\",\n value: function getNextBatchToken() {\n return this.nextBatch;\n }\n }]);\n return SyncAccumulator;\n}(); /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/**\n * This is an internal module. See {@link SyncAccumulator} for the public class.\n * @module sync-accumulator\n */\n\nfunction setState(eventMap, event) {\n if (event.state_key === null || event.state_key === undefined || !event.type) {\n return;\n }\n if (!eventMap[event.type]) {\n eventMap[event.type] = (0, _create2.default)(null);\n }\n eventMap[event.type][event.state_key] = event;\n}\n\nmodule.exports = SyncAccumulator;\n//# sourceMappingURL=sync-accumulator.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * This is an internal module. See {@link MatrixHttpApi} for the public class.\n * @module http-api\n */\n\nvar _create = require('babel-runtime/core-js/object/create');\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _typeof2 = require('babel-runtime/helpers/typeof');\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar parseContentType = require('content-type').parse;\n\nvar utils = require(\"./utils\");\n\n// we use our own implementation of setTimeout, so that if we get suspended in\n// the middle of a /sync, we cancel the sync as soon as we awake, rather than\n// waiting for the delay to elapse.\nvar callbacks = require(\"./realtime-callbacks\");\n\n/*\nTODO:\n- CS: complete register function (doing stages)\n- Identity server: linkEmail, authEmail, bindEmail, lookup3pid\n*/\n\n/**\n * A constant representing the URI path for release 0 of the Client-Server HTTP API.\n */\nmodule.exports.PREFIX_R0 = \"/_matrix/client/r0\";\n\n/**\n * A constant representing the URI path for as-yet unspecified Client-Server HTTP APIs.\n */\nmodule.exports.PREFIX_UNSTABLE = \"/_matrix/client/unstable\";\n\n/**\n * URI path for the identity API\n */\nmodule.exports.PREFIX_IDENTITY_V1 = \"/_matrix/identity/api/v1\";\n\n/**\n * URI path for the media repo API\n */\nmodule.exports.PREFIX_MEDIA_R0 = \"/_matrix/media/r0\";\n\n/**\n * Construct a MatrixHttpApi.\n * @constructor\n * @param {EventEmitter} event_emitter The event emitter to use for emitting events\n * @param {Object} opts The options to use for this HTTP API.\n * @param {string} opts.baseUrl Required. The base client-server URL e.g.\n * 'http://localhost:8008'.\n * @param {Function} opts.request Required. The function to call for HTTP\n * requests. This function must look like function(opts, callback){ ... }.\n * @param {string} opts.prefix Required. The matrix client prefix to use, e.g.\n * '/_matrix/client/r0'. See PREFIX_R0 and PREFIX_UNSTABLE for constants.\n *\n * @param {boolean} opts.onlyData True to return only the 'data' component of the\n * response (e.g. the parsed HTTP body). If false, requests will return an\n * object with the properties <tt>code</tt>, <tt>headers</tt> and <tt>data</tt>.\n *\n * @param {string} opts.accessToken The access_token to send with requests. Can be\n * null to not send an access token.\n * @param {Object=} opts.extraParams Optional. Extra query parameters to send on\n * requests.\n * @param {Number=} opts.localTimeoutMs The default maximum amount of time to wait\n * before timing out the request. If not specified, there is no timeout.\n * @param {boolean} [opts.useAuthorizationHeader = false] Set to true to use\n * Authorization header instead of query param to send the access token to the server.\n */\nmodule.exports.MatrixHttpApi = function MatrixHttpApi(event_emitter, opts) {\n utils.checkObjectHasKeys(opts, [\"baseUrl\", \"request\", \"prefix\"]);\n opts.onlyData = opts.onlyData || false;\n this.event_emitter = event_emitter;\n this.opts = opts;\n this.useAuthorizationHeader = Boolean(opts.useAuthorizationHeader);\n this.uploads = [];\n};\n\nmodule.exports.MatrixHttpApi.prototype = {\n\n /**\n * Get the content repository url with query parameters.\n * @return {Object} An object with a 'base', 'path' and 'params' for base URL,\n * path and query parameters respectively.\n */\n getContentUri: function getContentUri() {\n var params = {\n access_token: this.opts.accessToken\n };\n return {\n base: this.opts.baseUrl,\n path: \"/_matrix/media/v1/upload\",\n params: params\n };\n },\n\n /**\n * Upload content to the Home Server\n *\n * @param {object} file The object to upload. On a browser, something that\n * can be sent to XMLHttpRequest.send (typically a File). Under node.js,\n * a Buffer, String or ReadStream.\n *\n * @param {object} opts options object\n *\n * @param {string=} opts.name Name to give the file on the server. Defaults\n * to <tt>file.name</tt>.\n *\n * @param {boolean=} opts.includeFilename if false will not send the filename,\n * e.g for encrypted file uploads where filename leaks are undesirable.\n * Defaults to true.\n *\n * @param {string=} opts.type Content-type for the upload. Defaults to\n * <tt>file.type</tt>, or <tt>applicaton/octet-stream</tt>.\n *\n * @param {boolean=} opts.rawResponse Return the raw body, rather than\n * parsing the JSON. Defaults to false (except on node.js, where it\n * defaults to true for backwards compatibility).\n *\n * @param {boolean=} opts.onlyContentUri Just return the content URI,\n * rather than the whole body. Defaults to false (except on browsers,\n * where it defaults to true for backwards compatibility). Ignored if\n * opts.rawResponse is true.\n *\n * @param {Function=} opts.callback Deprecated. Optional. The callback to\n * invoke on success/failure. See the promise return values for more\n * information.\n *\n * @param {Function=} opts.progressHandler Optional. Called when a chunk of\n * data has been uploaded, with an object containing the fields `loaded`\n * (number of bytes transferred) and `total` (total size, if known).\n *\n * @return {module:client.Promise} Resolves to response object, as\n * determined by this.opts.onlyData, opts.rawResponse, and\n * opts.onlyContentUri. Rejects with an error (usually a MatrixError).\n */\n uploadContent: function uploadContent(file, opts) {\n if (utils.isFunction(opts)) {\n // opts used to be callback\n opts = {\n callback: opts\n };\n } else if (opts === undefined) {\n opts = {};\n }\n\n // default opts.includeFilename to true (ignoring falsey values)\n var includeFilename = opts.includeFilename !== false;\n\n // if the file doesn't have a mime type, use a default since\n // the HS errors if we don't supply one.\n var contentType = opts.type || file.type || 'application/octet-stream';\n var fileName = opts.name || file.name;\n\n // we used to recommend setting file.stream to the thing to upload on\n // nodejs.\n var body = file.stream ? file.stream : file;\n\n // backwards-compatibility hacks where we used to do different things\n // between browser and node.\n var rawResponse = opts.rawResponse;\n if (rawResponse === undefined) {\n if (global.XMLHttpRequest) {\n rawResponse = false;\n } else {\n console.warn(\"Returning the raw JSON from uploadContent(). Future \" + \"versions of the js-sdk will change this default, to \" + \"return the parsed object. Set opts.rawResponse=false \" + \"to change this behaviour now.\");\n rawResponse = true;\n }\n }\n\n var onlyContentUri = opts.onlyContentUri;\n if (!rawResponse && onlyContentUri === undefined) {\n if (global.XMLHttpRequest) {\n console.warn(\"Returning only the content-uri from uploadContent(). \" + \"Future versions of the js-sdk will change this \" + \"default, to return the whole response object. Set \" + \"opts.onlyContentUri=false to change this behaviour now.\");\n onlyContentUri = true;\n } else {\n onlyContentUri = false;\n }\n }\n\n // browser-request doesn't support File objects because it deep-copies\n // the options using JSON.parse(JSON.stringify(options)). Instead of\n // loading the whole file into memory as a string and letting\n // browser-request base64 encode and then decode it again, we just\n // use XMLHttpRequest directly.\n // (browser-request doesn't support progress either, which is also kind\n // of important here)\n\n var upload = { loaded: 0, total: 0 };\n var promise = void 0;\n\n // XMLHttpRequest doesn't parse JSON for us. request normally does, but\n // we're setting opts.json=false so that it doesn't JSON-encode the\n // request, which also means it doesn't JSON-decode the response. Either\n // way, we have to JSON-parse the response ourselves.\n var bodyParser = null;\n if (!rawResponse) {\n bodyParser = function bodyParser(rawBody) {\n var body = JSON.parse(rawBody);\n if (onlyContentUri) {\n body = body.content_uri;\n if (body === undefined) {\n throw Error('Bad response');\n }\n }\n return body;\n };\n }\n\n if (global.XMLHttpRequest) {\n var defer = _bluebird2.default.defer();\n var xhr = new global.XMLHttpRequest();\n upload.xhr = xhr;\n var cb = requestCallback(defer, opts.callback, this.opts.onlyData);\n\n var timeout_fn = function timeout_fn() {\n xhr.abort();\n cb(new Error('Timeout'));\n };\n\n // set an initial timeout of 30s; we'll advance it each time we get\n // a progress notification\n xhr.timeout_timer = callbacks.setTimeout(timeout_fn, 30000);\n\n xhr.onreadystatechange = function () {\n switch (xhr.readyState) {\n case global.XMLHttpRequest.DONE:\n callbacks.clearTimeout(xhr.timeout_timer);\n var resp;\n try {\n if (!xhr.responseText) {\n throw new Error('No response body.');\n }\n resp = xhr.responseText;\n if (bodyParser) {\n resp = bodyParser(resp);\n }\n } catch (err) {\n err.http_status = xhr.status;\n cb(err);\n return;\n }\n cb(undefined, xhr, resp);\n break;\n }\n };\n xhr.upload.addEventListener(\"progress\", function (ev) {\n callbacks.clearTimeout(xhr.timeout_timer);\n upload.loaded = ev.loaded;\n upload.total = ev.total;\n xhr.timeout_timer = callbacks.setTimeout(timeout_fn, 30000);\n if (opts.progressHandler) {\n opts.progressHandler({\n loaded: ev.loaded,\n total: ev.total\n });\n }\n });\n var url = this.opts.baseUrl + \"/_matrix/media/v1/upload\";\n\n var queryArgs = [];\n\n if (includeFilename && fileName) {\n queryArgs.push(\"filename=\" + encodeURIComponent(fileName));\n }\n\n if (!this.useAuthorizationHeader) {\n queryArgs.push(\"access_token=\" + encodeURIComponent(this.opts.accessToken));\n }\n\n if (queryArgs.length > 0) {\n url += \"?\" + queryArgs.join(\"&\");\n }\n\n xhr.open(\"POST\", url);\n if (this.useAuthorizationHeader) {\n xhr.setRequestHeader(\"Authorization\", \"Bearer \" + this.opts.accessToken);\n }\n xhr.setRequestHeader(\"Content-Type\", contentType);\n xhr.send(body);\n promise = defer.promise;\n\n // dirty hack (as per _request) to allow the upload to be cancelled.\n promise.abort = xhr.abort.bind(xhr);\n } else {\n var queryParams = {};\n\n if (includeFilename && fileName) {\n queryParams.filename = fileName;\n }\n\n promise = this.authedRequest(opts.callback, \"POST\", \"/upload\", queryParams, body, {\n prefix: \"/_matrix/media/v1\",\n headers: { \"Content-Type\": contentType },\n json: false,\n bodyParser: bodyParser\n });\n }\n\n var self = this;\n\n // remove the upload from the list on completion\n var promise0 = promise.finally(function () {\n for (var i = 0; i < self.uploads.length; ++i) {\n if (self.uploads[i] === upload) {\n self.uploads.splice(i, 1);\n return;\n }\n }\n });\n\n // copy our dirty abort() method to the new promise\n promise0.abort = promise.abort;\n\n upload.promise = promise0;\n this.uploads.push(upload);\n\n return promise0;\n },\n\n cancelUpload: function cancelUpload(promise) {\n if (promise.abort) {\n promise.abort();\n return true;\n }\n return false;\n },\n\n getCurrentUploads: function getCurrentUploads() {\n return this.uploads;\n },\n\n idServerRequest: function idServerRequest(callback, method, path, params, prefix) {\n var fullUri = this.opts.idBaseUrl + prefix + path;\n\n if (callback !== undefined && !utils.isFunction(callback)) {\n throw Error(\"Expected callback to be a function but got \" + (typeof callback === 'undefined' ? 'undefined' : (0, _typeof3.default)(callback)));\n }\n\n var opts = {\n uri: fullUri,\n method: method,\n withCredentials: false,\n json: false,\n _matrix_opts: this.opts\n };\n if (method == 'GET') {\n opts.qs = params;\n } else {\n opts.form = params;\n }\n\n var defer = _bluebird2.default.defer();\n this.opts.request(opts, requestCallback(defer, callback, this.opts.onlyData));\n // ID server does not always take JSON, so we can't use requests' 'json'\n // option as we do with the home server, but it does return JSON, so\n // parse it manually\n return defer.promise.then(function (response) {\n return JSON.parse(response);\n });\n },\n\n /**\n * Perform an authorised request to the homeserver.\n * @param {Function} callback Optional. The callback to invoke on\n * success/failure. See the promise return values for more information.\n * @param {string} method The HTTP method e.g. \"GET\".\n * @param {string} path The HTTP path <b>after</b> the supplied prefix e.g.\n * \"/createRoom\".\n *\n * @param {Object=} queryParams A dict of query params (these will NOT be\n * urlencoded). If unspecified, there will be no query params.\n *\n * @param {Object} data The HTTP JSON body.\n *\n * @param {Object|Number=} opts additional options. If a number is specified,\n * this is treated as `opts.localTimeoutMs`.\n *\n * @param {Number=} opts.localTimeoutMs The maximum amount of time to wait before\n * timing out the request. If not specified, there is no timeout.\n *\n * @param {sting=} opts.prefix The full prefix to use e.g.\n * \"/_matrix/client/v2_alpha\". If not specified, uses this.opts.prefix.\n *\n * @param {Object=} opts.headers map of additional request headers\n *\n * @return {module:client.Promise} Resolves to <code>{data: {Object},\n * headers: {Object}, code: {Number}}</code>.\n * If <code>onlyData</code> is set, this will resolve to the <code>data</code>\n * object only.\n * @return {module:http-api.MatrixError} Rejects with an error if a problem\n * occurred. This includes network problems and Matrix-specific error JSON.\n */\n authedRequest: function authedRequest(callback, method, path, queryParams, data, opts) {\n if (!queryParams) {\n queryParams = {};\n }\n if (this.useAuthorizationHeader) {\n if (isFinite(opts)) {\n // opts used to be localTimeoutMs\n opts = {\n localTimeoutMs: opts\n };\n }\n if (!opts) {\n opts = {};\n }\n if (!opts.headers) {\n opts.headers = {};\n }\n if (!opts.headers.Authorization) {\n opts.headers.Authorization = \"Bearer \" + this.opts.accessToken;\n }\n if (queryParams.access_token) {\n delete queryParams.access_token;\n }\n } else {\n if (!queryParams.access_token) {\n queryParams.access_token = this.opts.accessToken;\n }\n }\n\n var requestPromise = this.request(callback, method, path, queryParams, data, opts);\n\n var self = this;\n requestPromise.catch(function (err) {\n if (err.errcode == 'M_UNKNOWN_TOKEN') {\n self.event_emitter.emit(\"Session.logged_out\");\n } else if (err.errcode == 'M_CONSENT_NOT_GIVEN') {\n self.event_emitter.emit(\"no_consent\", err.message, err.data.consent_uri);\n }\n });\n\n // return the original promise, otherwise tests break due to it having to\n // go around the event loop one more time to process the result of the request\n return requestPromise;\n },\n\n /**\n * Perform a request to the homeserver without any credentials.\n * @param {Function} callback Optional. The callback to invoke on\n * success/failure. See the promise return values for more information.\n * @param {string} method The HTTP method e.g. \"GET\".\n * @param {string} path The HTTP path <b>after</b> the supplied prefix e.g.\n * \"/createRoom\".\n *\n * @param {Object=} queryParams A dict of query params (these will NOT be\n * urlencoded). If unspecified, there will be no query params.\n *\n * @param {Object} data The HTTP JSON body.\n *\n * @param {Object=} opts additional options\n *\n * @param {Number=} opts.localTimeoutMs The maximum amount of time to wait before\n * timing out the request. If not specified, there is no timeout.\n *\n * @param {sting=} opts.prefix The full prefix to use e.g.\n * \"/_matrix/client/v2_alpha\". If not specified, uses this.opts.prefix.\n *\n * @param {Object=} opts.headers map of additional request headers\n *\n * @return {module:client.Promise} Resolves to <code>{data: {Object},\n * headers: {Object}, code: {Number}}</code>.\n * If <code>onlyData</code> is set, this will resolve to the <code>data</code>\n * object only.\n * @return {module:http-api.MatrixError} Rejects with an error if a problem\n * occurred. This includes network problems and Matrix-specific error JSON.\n */\n request: function request(callback, method, path, queryParams, data, opts) {\n opts = opts || {};\n var prefix = opts.prefix !== undefined ? opts.prefix : this.opts.prefix;\n var fullUri = this.opts.baseUrl + prefix + path;\n\n return this.requestOtherUrl(callback, method, fullUri, queryParams, data, opts);\n },\n\n /**\n * Perform an authorised request to the homeserver with a specific path\n * prefix which overrides the default for this call only. Useful for hitting\n * different Matrix Client-Server versions.\n * @param {Function} callback Optional. The callback to invoke on\n * success/failure. See the promise return values for more information.\n * @param {string} method The HTTP method e.g. \"GET\".\n * @param {string} path The HTTP path <b>after</b> the supplied prefix e.g.\n * \"/createRoom\".\n * @param {Object} queryParams A dict of query params (these will NOT be\n * urlencoded).\n * @param {Object} data The HTTP JSON body.\n * @param {string} prefix The full prefix to use e.g.\n * \"/_matrix/client/v2_alpha\".\n * @param {Number=} localTimeoutMs The maximum amount of time to wait before\n * timing out the request. If not specified, there is no timeout.\n * @return {module:client.Promise} Resolves to <code>{data: {Object},\n * headers: {Object}, code: {Number}}</code>.\n * If <code>onlyData</code> is set, this will resolve to the <code>data</code>\n * object only.\n * @return {module:http-api.MatrixError} Rejects with an error if a problem\n * occurred. This includes network problems and Matrix-specific error JSON.\n *\n * @deprecated prefer authedRequest with opts.prefix\n */\n authedRequestWithPrefix: function authedRequestWithPrefix(callback, method, path, queryParams, data, prefix, localTimeoutMs) {\n return this.authedRequest(callback, method, path, queryParams, data, {\n localTimeoutMs: localTimeoutMs,\n prefix: prefix\n });\n },\n\n /**\n * Perform a request to the homeserver without any credentials but with a\n * specific path prefix which overrides the default for this call only.\n * Useful for hitting different Matrix Client-Server versions.\n * @param {Function} callback Optional. The callback to invoke on\n * success/failure. See the promise return values for more information.\n * @param {string} method The HTTP method e.g. \"GET\".\n * @param {string} path The HTTP path <b>after</b> the supplied prefix e.g.\n * \"/createRoom\".\n * @param {Object} queryParams A dict of query params (these will NOT be\n * urlencoded).\n * @param {Object} data The HTTP JSON body.\n * @param {string} prefix The full prefix to use e.g.\n * \"/_matrix/client/v2_alpha\".\n * @param {Number=} localTimeoutMs The maximum amount of time to wait before\n * timing out the request. If not specified, there is no timeout.\n * @return {module:client.Promise} Resolves to <code>{data: {Object},\n * headers: {Object}, code: {Number}}</code>.\n * If <code>onlyData</code> is set, this will resolve to the <code>data</code>\n * object only.\n * @return {module:http-api.MatrixError} Rejects with an error if a problem\n * occurred. This includes network problems and Matrix-specific error JSON.\n *\n * @deprecated prefer request with opts.prefix\n */\n requestWithPrefix: function requestWithPrefix(callback, method, path, queryParams, data, prefix, localTimeoutMs) {\n return this.request(callback, method, path, queryParams, data, {\n localTimeoutMs: localTimeoutMs,\n prefix: prefix\n });\n },\n\n /**\n * Perform a request to an arbitrary URL.\n * @param {Function} callback Optional. The callback to invoke on\n * success/failure. See the promise return values for more information.\n * @param {string} method The HTTP method e.g. \"GET\".\n * @param {string} uri The HTTP URI\n *\n * @param {Object=} queryParams A dict of query params (these will NOT be\n * urlencoded). If unspecified, there will be no query params.\n *\n * @param {Object} data The HTTP JSON body.\n *\n * @param {Object=} opts additional options\n *\n * @param {Number=} opts.localTimeoutMs The maximum amount of time to wait before\n * timing out the request. If not specified, there is no timeout.\n *\n * @param {sting=} opts.prefix The full prefix to use e.g.\n * \"/_matrix/client/v2_alpha\". If not specified, uses this.opts.prefix.\n *\n * @param {Object=} opts.headers map of additional request headers\n *\n * @return {module:client.Promise} Resolves to <code>{data: {Object},\n * headers: {Object}, code: {Number}}</code>.\n * If <code>onlyData</code> is set, this will resolve to the <code>data</code>\n * object only.\n * @return {module:http-api.MatrixError} Rejects with an error if a problem\n * occurred. This includes network problems and Matrix-specific error JSON.\n */\n requestOtherUrl: function requestOtherUrl(callback, method, uri, queryParams, data, opts) {\n if (opts === undefined || opts === null) {\n opts = {};\n } else if (isFinite(opts)) {\n // opts used to be localTimeoutMs\n opts = {\n localTimeoutMs: opts\n };\n }\n\n return this._request(callback, method, uri, queryParams, data, opts);\n },\n\n /**\n * Form and return a homeserver request URL based on the given path\n * params and prefix.\n * @param {string} path The HTTP path <b>after</b> the supplied prefix e.g.\n * \"/createRoom\".\n * @param {Object} queryParams A dict of query params (these will NOT be\n * urlencoded).\n * @param {string} prefix The full prefix to use e.g.\n * \"/_matrix/client/v2_alpha\".\n * @return {string} URL\n */\n getUrl: function getUrl(path, queryParams, prefix) {\n var queryString = \"\";\n if (queryParams) {\n queryString = \"?\" + utils.encodeParams(queryParams);\n }\n return this.opts.baseUrl + prefix + path + queryString;\n },\n\n /**\n * @private\n *\n * @param {function} callback\n * @param {string} method\n * @param {string} uri\n * @param {object} queryParams\n * @param {object|string} data\n * @param {object=} opts\n *\n * @param {boolean} [opts.json =true] Json-encode data before sending, and\n * decode response on receipt. (We will still json-decode error\n * responses, even if this is false.)\n *\n * @param {object=} opts.headers extra request headers\n *\n * @param {number=} opts.localTimeoutMs client-side timeout for the\n * request. Default timeout if falsy.\n *\n * @param {function=} opts.bodyParser function to parse the body of the\n * response before passing it to the promise and callback.\n *\n * @return {module:client.Promise} a promise which resolves to either the\n * response object (if this.opts.onlyData is truthy), or the parsed\n * body. Rejects\n */\n _request: function _request(callback, method, uri, queryParams, data, opts) {\n if (callback !== undefined && !utils.isFunction(callback)) {\n throw Error(\"Expected callback to be a function but got \" + (typeof callback === 'undefined' ? 'undefined' : (0, _typeof3.default)(callback)));\n }\n opts = opts || {};\n\n var self = this;\n if (this.opts.extraParams) {\n for (var key in this.opts.extraParams) {\n if (!this.opts.extraParams.hasOwnProperty(key)) {\n continue;\n }\n queryParams[key] = this.opts.extraParams[key];\n }\n }\n\n var headers = utils.extend({}, opts.headers || {});\n var json = opts.json === undefined ? true : opts.json;\n var bodyParser = opts.bodyParser;\n\n // we handle the json encoding/decoding here, because request and\n // browser-request make a mess of it. Specifically, they attempt to\n // json-decode plain-text error responses, which in turn means that the\n // actual error gets swallowed by a SyntaxError.\n\n if (json) {\n if (data) {\n data = (0, _stringify2.default)(data);\n headers['content-type'] = 'application/json';\n }\n\n if (!headers['accept']) {\n headers['accept'] = 'application/json';\n }\n\n if (bodyParser === undefined) {\n bodyParser = function bodyParser(rawBody) {\n return JSON.parse(rawBody);\n };\n }\n }\n\n var defer = _bluebird2.default.defer();\n\n var timeoutId = void 0;\n var timedOut = false;\n var req = void 0;\n var localTimeoutMs = opts.localTimeoutMs || this.opts.localTimeoutMs;\n\n var resetTimeout = function resetTimeout() {\n if (localTimeoutMs) {\n if (timeoutId) {\n callbacks.clearTimeout(timeoutId);\n }\n timeoutId = callbacks.setTimeout(function () {\n timedOut = true;\n if (req && req.abort) {\n req.abort();\n }\n defer.reject(new module.exports.MatrixError({\n error: \"Locally timed out waiting for a response\",\n errcode: \"ORG.MATRIX.JSSDK_TIMEOUT\",\n timeout: localTimeoutMs\n }));\n }, localTimeoutMs);\n }\n };\n resetTimeout();\n\n var reqPromise = defer.promise;\n\n try {\n req = this.opts.request({\n uri: uri,\n method: method,\n withCredentials: false,\n qs: queryParams,\n qsStringifyOptions: opts.qsStringifyOptions,\n useQuerystring: true,\n body: data,\n json: false,\n timeout: localTimeoutMs,\n headers: headers || {},\n _matrix_opts: this.opts\n }, function (err, response, body) {\n if (localTimeoutMs) {\n callbacks.clearTimeout(timeoutId);\n if (timedOut) {\n return; // already rejected promise\n }\n }\n\n var handlerFn = requestCallback(defer, callback, self.opts.onlyData, bodyParser);\n handlerFn(err, response, body);\n });\n if (req) {\n // This will only work in a browser, where opts.request is the\n // `browser-request` import. Currently `request` does not support progress\n // updates - see https://github.com/request/request/pull/2346.\n // `browser-request` returns an XHRHttpRequest which exposes `onprogress`\n if ('onprogress' in req) {\n req.onprogress = function (e) {\n // Prevent the timeout from rejecting the deferred promise if progress is\n // seen with the request\n resetTimeout();\n };\n }\n\n // FIXME: This is EVIL, but I can't think of a better way to expose\n // abort() operations on underlying HTTP requests :(\n if (req.abort) reqPromise.abort = req.abort.bind(req);\n }\n } catch (ex) {\n defer.reject(ex);\n if (callback) {\n callback(ex);\n }\n }\n return reqPromise;\n }\n};\n\n/*\n * Returns a callback that can be invoked by an HTTP request on completion,\n * that will either resolve or reject the given defer as well as invoke the\n * given userDefinedCallback (if any).\n *\n * HTTP errors are transformed into javascript errors and the deferred is rejected.\n *\n * If bodyParser is given, it is used to transform the body of the successful\n * responses before passing to the defer/callback.\n *\n * If onlyData is true, the defer/callback is invoked with the body of the\n * response, otherwise the result object (with `code` and `data` fields)\n *\n */\nvar requestCallback = function requestCallback(defer, userDefinedCallback, onlyData, bodyParser) {\n userDefinedCallback = userDefinedCallback || function () {};\n\n return function (err, response, body) {\n if (!err) {\n try {\n if (response.statusCode >= 400) {\n err = parseErrorResponse(response, body);\n } else if (bodyParser) {\n body = bodyParser(body);\n }\n } catch (e) {\n err = new Error('Error parsing server response: ' + e);\n }\n }\n\n if (err) {\n defer.reject(err);\n userDefinedCallback(err);\n } else {\n var res = {\n code: response.statusCode,\n\n // XXX: why do we bother with this? it doesn't work for\n // XMLHttpRequest, so clearly we don't use it.\n headers: response.headers,\n data: body\n };\n defer.resolve(onlyData ? body : res);\n userDefinedCallback(null, onlyData ? body : res);\n }\n };\n};\n\n/**\n * Attempt to turn an HTTP error response into a Javascript Error.\n *\n * If it is a JSON response, we will parse it into a MatrixError. Otherwise\n * we return a generic Error.\n *\n * @param {XMLHttpRequest|http.IncomingMessage} response response object\n * @param {String} body raw body of the response\n * @returns {Error}\n */\nfunction parseErrorResponse(response, body) {\n var httpStatus = response.statusCode;\n var contentType = getResponseContentType(response);\n\n var err = void 0;\n if (contentType) {\n if (contentType.type === 'application/json') {\n err = new module.exports.MatrixError(JSON.parse(body));\n } else if (contentType.type === 'text/plain') {\n err = new Error('Server returned ' + httpStatus + ' error: ' + body);\n }\n }\n\n if (!err) {\n err = new Error('Server returned ' + httpStatus + ' error');\n }\n err.httpStatus = httpStatus;\n return err;\n}\n\n/**\n * extract the Content-Type header from the response object, and\n * parse it to a `{type, parameters}` object.\n *\n * returns null if no content-type header could be found.\n *\n * @param {XMLHttpRequest|http.IncomingMessage} response response object\n * @returns {{type: String, parameters: Object}?} parsed content-type header, or null if not found\n */\nfunction getResponseContentType(response) {\n var contentType = void 0;\n if (response.getResponseHeader) {\n // XMLHttpRequest provides getResponseHeader\n contentType = response.getResponseHeader(\"Content-Type\");\n } else if (response.headers) {\n // request provides http.IncomingMessage which has a message.headers map\n contentType = response.headers['content-type'] || null;\n }\n\n if (!contentType) {\n return null;\n }\n\n try {\n return parseContentType(contentType);\n } catch (e) {\n throw new Error('Error parsing Content-Type \\'' + contentType + '\\': ' + e);\n }\n}\n\n/**\n * Construct a Matrix error. This is a JavaScript Error with additional\n * information specific to the standard Matrix error response.\n * @constructor\n * @param {Object} errorJson The Matrix error JSON returned from the homeserver.\n * @prop {string} errcode The Matrix 'errcode' value, e.g. \"M_FORBIDDEN\".\n * @prop {string} name Same as MatrixError.errcode but with a default unknown string.\n * @prop {string} message The Matrix 'error' value, e.g. \"Missing token.\"\n * @prop {Object} data The raw Matrix error JSON used to construct this object.\n * @prop {integer} httpStatus The numeric HTTP status code given\n */\nmodule.exports.MatrixError = function MatrixError(errorJson) {\n errorJson = errorJson || {};\n this.errcode = errorJson.errcode;\n this.name = errorJson.errcode || \"Unknown error code\";\n this.message = errorJson.error || \"Unknown message\";\n this.data = errorJson;\n};\nmodule.exports.MatrixError.prototype = (0, _create2.default)(Error.prototype);\n/** */\nmodule.exports.MatrixError.prototype.constructor = module.exports.MatrixError;\n//# sourceMappingURL=http-api.js.map","module.exports = { \"default\": require(\"core-js/library/fn/object/entries\"), __esModule: true };","'use strict';\n\nvar _typeof2 = require('babel-runtime/helpers/typeof');\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _utils = require('./utils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @module pushprocessor\n */\n\nvar RULEKINDS_IN_ORDER = ['override', 'content', 'room', 'sender', 'underride'];\n\n/**\n * Construct a Push Processor.\n * @constructor\n * @param {Object} client The Matrix client object to use\n */\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction PushProcessor(client) {\n var _this = this;\n\n var cachedGlobToRegex = {\n // $glob: RegExp,\n };\n\n var matchingRuleFromKindSet = function matchingRuleFromKindSet(ev, kindset, device) {\n for (var ruleKindIndex = 0; ruleKindIndex < RULEKINDS_IN_ORDER.length; ++ruleKindIndex) {\n var kind = RULEKINDS_IN_ORDER[ruleKindIndex];\n var ruleset = kindset[kind];\n\n for (var ruleIndex = 0; ruleIndex < ruleset.length; ++ruleIndex) {\n var rule = ruleset[ruleIndex];\n if (!rule.enabled) {\n continue;\n }\n\n var rawrule = templateRuleToRaw(kind, rule, device);\n if (!rawrule) {\n continue;\n }\n\n if (_this.ruleMatchesEvent(rawrule, ev)) {\n rule.kind = kind;\n return rule;\n }\n }\n }\n return null;\n };\n\n var templateRuleToRaw = function templateRuleToRaw(kind, tprule, device) {\n var rawrule = {\n 'rule_id': tprule.rule_id,\n 'actions': tprule.actions,\n 'conditions': []\n };\n switch (kind) {\n case 'underride':\n case 'override':\n rawrule.conditions = tprule.conditions;\n break;\n case 'room':\n if (!tprule.rule_id) {\n return null;\n }\n rawrule.conditions.push({\n 'kind': 'event_match',\n 'key': 'room_id',\n 'value': tprule.rule_id\n });\n break;\n case 'sender':\n if (!tprule.rule_id) {\n return null;\n }\n rawrule.conditions.push({\n 'kind': 'event_match',\n 'key': 'user_id',\n 'value': tprule.rule_id\n });\n break;\n case 'content':\n if (!tprule.pattern) {\n return null;\n }\n rawrule.conditions.push({\n 'kind': 'event_match',\n 'key': 'content.body',\n 'pattern': tprule.pattern\n });\n break;\n }\n if (device) {\n rawrule.conditions.push({\n 'kind': 'device',\n 'profile_tag': device\n });\n }\n return rawrule;\n };\n\n var eventFulfillsCondition = function eventFulfillsCondition(cond, ev) {\n var condition_functions = {\n \"event_match\": eventFulfillsEventMatchCondition,\n \"device\": eventFulfillsDeviceCondition,\n \"contains_display_name\": eventFulfillsDisplayNameCondition,\n \"room_member_count\": eventFulfillsRoomMemberCountCondition,\n \"sender_notification_permission\": eventFulfillsSenderNotifPermCondition\n };\n if (condition_functions[cond.kind]) {\n return condition_functions[cond.kind](cond, ev);\n }\n // unknown conditions: we previously matched all unknown conditions,\n // but given that rules can be added to the base rules on a server,\n // it's probably better to not match unknown conditions.\n return false;\n };\n\n var eventFulfillsSenderNotifPermCondition = function eventFulfillsSenderNotifPermCondition(cond, ev) {\n var notifLevelKey = cond['key'];\n if (!notifLevelKey) {\n return false;\n }\n\n var room = client.getRoom(ev.getRoomId());\n if (!room || !room.currentState) {\n return false;\n }\n\n // Note that this should not be the current state of the room but the state at\n // the point the event is in the DAG. Unfortunately the js-sdk does not store\n // this.\n return room.currentState.mayTriggerNotifOfType(notifLevelKey, ev.getSender());\n };\n\n var eventFulfillsRoomMemberCountCondition = function eventFulfillsRoomMemberCountCondition(cond, ev) {\n if (!cond.is) {\n return false;\n }\n\n var room = client.getRoom(ev.getRoomId());\n if (!room || !room.currentState || !room.currentState.members) {\n return false;\n }\n\n var memberCount = room.currentState.getJoinedMemberCount();\n\n var m = cond.is.match(/^([=<>]*)([0-9]*)$/);\n if (!m) {\n return false;\n }\n var ineq = m[1];\n var rhs = parseInt(m[2]);\n if (isNaN(rhs)) {\n return false;\n }\n switch (ineq) {\n case '':\n case '==':\n return memberCount == rhs;\n case '<':\n return memberCount < rhs;\n case '>':\n return memberCount > rhs;\n case '<=':\n return memberCount <= rhs;\n case '>=':\n return memberCount >= rhs;\n default:\n return false;\n }\n };\n\n var eventFulfillsDisplayNameCondition = function eventFulfillsDisplayNameCondition(cond, ev) {\n var content = ev.getContent();\n if (!content || !content.body || typeof content.body != 'string') {\n return false;\n }\n\n var room = client.getRoom(ev.getRoomId());\n if (!room || !room.currentState || !room.currentState.members || !room.currentState.getMember(client.credentials.userId)) {\n return false;\n }\n\n var displayName = room.currentState.getMember(client.credentials.userId).name;\n\n // N.B. we can't use \\b as it chokes on unicode. however \\W seems to be okay\n // as shorthand for [^0-9A-Za-z_].\n var pat = new RegExp(\"(^|\\\\W)\" + (0, _utils.escapeRegExp)(displayName) + \"(\\\\W|$)\", 'i');\n return content.body.search(pat) > -1;\n };\n\n var eventFulfillsDeviceCondition = function eventFulfillsDeviceCondition(cond, ev) {\n return false; // XXX: Allow a profile tag to be set for the web client instance\n };\n\n var eventFulfillsEventMatchCondition = function eventFulfillsEventMatchCondition(cond, ev) {\n if (!cond.key) {\n return false;\n }\n\n var val = valueForDottedKey(cond.key, ev);\n if (!val || typeof val != 'string') {\n return false;\n }\n\n if (cond.value) {\n return cond.value === val;\n }\n\n var regex = void 0;\n\n if (cond.key == 'content.body') {\n regex = createCachedRegex('(^|\\\\W)', cond.pattern, '(\\\\W|$)');\n } else {\n regex = createCachedRegex('^', cond.pattern, '$');\n }\n\n return !!val.match(regex);\n };\n\n var createCachedRegex = function createCachedRegex(prefix, glob, suffix) {\n if (cachedGlobToRegex[glob]) {\n return cachedGlobToRegex[glob];\n }\n cachedGlobToRegex[glob] = new RegExp(prefix + (0, _utils.globToRegexp)(glob) + suffix, 'i');\n return cachedGlobToRegex[glob];\n };\n\n var valueForDottedKey = function valueForDottedKey(key, ev) {\n var parts = key.split('.');\n var val = void 0;\n\n // special-case the first component to deal with encrypted messages\n var firstPart = parts[0];\n if (firstPart == 'content') {\n val = ev.getContent();\n parts.shift();\n } else if (firstPart == 'type') {\n val = ev.getType();\n parts.shift();\n } else {\n // use the raw event for any other fields\n val = ev.event;\n }\n\n while (parts.length > 0) {\n var thispart = parts.shift();\n if (!val[thispart]) {\n return null;\n }\n val = val[thispart];\n }\n return val;\n };\n\n var matchingRuleForEventWithRulesets = function matchingRuleForEventWithRulesets(ev, rulesets) {\n if (!rulesets || !rulesets.device) {\n return null;\n }\n if (ev.getSender() == client.credentials.userId) {\n return null;\n }\n\n var allDevNames = (0, _keys2.default)(rulesets.device);\n for (var i = 0; i < allDevNames.length; ++i) {\n var devname = allDevNames[i];\n var devrules = rulesets.device[devname];\n\n var matchingRule = matchingRuleFromKindSet(devrules, devname);\n if (matchingRule) {\n return matchingRule;\n }\n }\n return matchingRuleFromKindSet(ev, rulesets.global);\n };\n\n var pushActionsForEventAndRulesets = function pushActionsForEventAndRulesets(ev, rulesets) {\n var rule = matchingRuleForEventWithRulesets(ev, rulesets);\n if (!rule) {\n return {};\n }\n\n var actionObj = PushProcessor.actionListToActionsObject(rule.actions);\n\n // Some actions are implicit in some situations: we add those here\n if (actionObj.tweaks.highlight === undefined) {\n // if it isn't specified, highlight if it's a content\n // rule but otherwise not\n actionObj.tweaks.highlight = rule.kind == 'content';\n }\n\n return actionObj;\n };\n\n this.ruleMatchesEvent = function (rule, ev) {\n var ret = true;\n for (var i = 0; i < rule.conditions.length; ++i) {\n var cond = rule.conditions[i];\n ret &= eventFulfillsCondition(cond, ev);\n }\n //console.log(\"Rule \"+rule.rule_id+(ret ? \" matches\" : \" doesn't match\"));\n return ret;\n };\n\n /**\n * Get the user's push actions for the given event\n *\n * @param {module:models/event.MatrixEvent} ev\n *\n * @return {PushAction}\n */\n this.actionsForEvent = function (ev) {\n return pushActionsForEventAndRulesets(ev, client.pushRules);\n };\n\n /**\n * Get one of the users push rules by its ID\n *\n * @param {string} ruleId The ID of the rule to search for\n * @return {object} The push rule, or null if no such rule was found\n */\n this.getPushRuleById = function (ruleId) {\n var _arr = ['device', 'global'];\n\n for (var _i = 0; _i < _arr.length; _i++) {\n var scope = _arr[_i];\n if (client.pushRules[scope] === undefined) continue;\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(RULEKINDS_IN_ORDER), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var kind = _step.value;\n\n if (client.pushRules[scope][kind] === undefined) continue;\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(client.pushRules[scope][kind]), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var rule = _step2.value;\n\n if (rule.rule_id === ruleId) return rule;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n return null;\n };\n}\n\n/**\n * Convert a list of actions into a object with the actions as keys and their values\n * eg. [ 'notify', { set_tweak: 'sound', value: 'default' } ]\n * becomes { notify: true, tweaks: { sound: 'default' } }\n * @param {array} actionlist The actions list\n *\n * @return {object} A object with key 'notify' (true or false) and an object of actions\n */\nPushProcessor.actionListToActionsObject = function (actionlist) {\n var actionobj = { 'notify': false, 'tweaks': {} };\n for (var i = 0; i < actionlist.length; ++i) {\n var action = actionlist[i];\n if (action === 'notify') {\n actionobj.notify = true;\n } else if ((typeof action === 'undefined' ? 'undefined' : (0, _typeof3.default)(action)) === 'object') {\n if (action.value === undefined) {\n action.value = true;\n }\n actionobj.tweaks[action.set_tweak] = action.value;\n }\n }\n return actionobj;\n};\n\n/**\n * @typedef {Object} PushAction\n * @type {Object}\n * @property {boolean} notify Whether this event should notify the user or not.\n * @property {Object} tweaks How this event should be notified.\n * @property {boolean} tweaks.highlight Whether this event should be highlighted\n * on the UI.\n * @property {boolean} tweaks.sound Whether this notification should produce a\n * noise.\n */\n\n/** The PushProcessor class. */\nmodule.exports = PushProcessor;\n//# sourceMappingURL=pushprocessor.js.map","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","\"use strict\";\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n/**\n * @module content-repo\n */\nvar utils = require(\"./utils\");\n\n/** Content Repo utility functions */\nmodule.exports = {\n /**\n * Get the HTTP URL for an MXC URI.\n * @param {string} baseUrl The base homeserver url which has a content repo.\n * @param {string} mxc The mxc:// URI.\n * @param {Number} width The desired width of the thumbnail.\n * @param {Number} height The desired height of the thumbnail.\n * @param {string} resizeMethod The thumbnail resize method to use, either\n * \"crop\" or \"scale\".\n * @param {Boolean} allowDirectLinks If true, return any non-mxc URLs\n * directly. Fetching such URLs will leak information about the user to\n * anyone they share a room with. If false, will return the emptry string\n * for such URLs.\n * @return {string} The complete URL to the content.\n */\n getHttpUriForMxc: function getHttpUriForMxc(baseUrl, mxc, width, height, resizeMethod, allowDirectLinks) {\n if (typeof mxc !== \"string\" || !mxc) {\n return '';\n }\n if (mxc.indexOf(\"mxc://\") !== 0) {\n if (allowDirectLinks) {\n return mxc;\n } else {\n return '';\n }\n }\n var serverAndMediaId = mxc.slice(6); // strips mxc://\n var prefix = \"/_matrix/media/v1/download/\";\n var params = {};\n\n if (width) {\n params.width = width;\n }\n if (height) {\n params.height = height;\n }\n if (resizeMethod) {\n params.method = resizeMethod;\n }\n if (utils.keys(params).length > 0) {\n // these are thumbnailing params so they probably want the\n // thumbnailing API...\n prefix = \"/_matrix/media/v1/thumbnail/\";\n }\n\n var fragmentOffset = serverAndMediaId.indexOf(\"#\");\n var fragment = \"\";\n if (fragmentOffset >= 0) {\n fragment = serverAndMediaId.substr(fragmentOffset);\n serverAndMediaId = serverAndMediaId.substr(0, fragmentOffset);\n }\n return baseUrl + prefix + serverAndMediaId + (utils.keys(params).length === 0 ? \"\" : \"?\" + utils.encodeParams(params)) + fragment;\n },\n\n /**\n * Get an identicon URL from an arbitrary string.\n * @param {string} baseUrl The base homeserver url which has a content repo.\n * @param {string} identiconString The string to create an identicon for.\n * @param {Number} width The desired width of the image in pixels. Default: 96.\n * @param {Number} height The desired height of the image in pixels. Default: 96.\n * @return {string} The complete URL to the identicon.\n */\n getIdenticonUri: function getIdenticonUri(baseUrl, identiconString, width, height) {\n if (!identiconString) {\n return null;\n }\n if (!width) {\n width = 96;\n }\n if (!height) {\n height = 96;\n }\n var params = {\n width: width,\n height: height\n };\n\n var path = utils.encodeUri(\"/_matrix/media/v1/identicon/$ident\", {\n $ident: identiconString\n });\n return baseUrl + path + (utils.keys(params).length === 0 ? \"\" : \"?\" + utils.encodeParams(params));\n }\n};\n//# sourceMappingURL=content-repo.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n avatarUrlForMember: function avatarUrlForMember(member, width, height, resizeMethod) {\n var url = member.getAvatarUrl(_MatrixClientPeg2.default.get().getHomeserverUrl(), Math.floor(width * window.devicePixelRatio), Math.floor(height * window.devicePixelRatio), resizeMethod, false, false);\n if (!url) {\n // member can be null here currently since on invites, the JS SDK\n // does not have enough info to build a RoomMember object for\n // the inviter.\n url = this.defaultAvatarUrlForString(member ? member.userId : '');\n }\n return url;\n },\n\n avatarUrlForUser: function avatarUrlForUser(user, width, height, resizeMethod) {\n var url = _matrixJsSdk.ContentRepo.getHttpUriForMxc(_MatrixClientPeg2.default.get().getHomeserverUrl(), user.avatarUrl, Math.floor(width * window.devicePixelRatio), Math.floor(height * window.devicePixelRatio), resizeMethod);\n if (!url || url.length === 0) {\n return null;\n }\n return url;\n },\n\n defaultAvatarUrlForString: function defaultAvatarUrlForString(s) {\n var images = ['76cfa6', '50e2c2', 'f4c371'];\n var total = 0;\n for (var i = 0; i < s.length; ++i) {\n total += s.charCodeAt(i);\n }\n return 'img/' + images[total % images.length] + '.png';\n }\n};\n//# sourceMappingURL=Avatar.js.map","'use strict';\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n resendUnsentEvents: function resendUnsentEvents(room) {\n room.getPendingEvents().filter(function (ev) {\n return ev.status === _matrixJsSdk.EventStatus.NOT_SENT;\n }).forEach(function (event) {\n module.exports.resend(event);\n });\n },\n cancelUnsentEvents: function cancelUnsentEvents(room) {\n room.getPendingEvents().filter(function (ev) {\n return ev.status === _matrixJsSdk.EventStatus.NOT_SENT;\n }).forEach(function (event) {\n module.exports.removeFromQueue(event);\n });\n },\n resend: function resend(event) {\n var room = _MatrixClientPeg2.default.get().getRoom(event.getRoomId());\n _MatrixClientPeg2.default.get().resendEvent(event, room).done(function (res) {\n _dispatcher2.default.dispatch({\n action: 'message_sent',\n event: event\n });\n }, function (err) {\n // XXX: temporary logging to try to diagnose\n // https://github.com/vector-im/riot-web/issues/3148\n console.log('Resend got send failure: ' + err.name + '(' + err + ')');\n\n _dispatcher2.default.dispatch({\n action: 'message_send_failed',\n event: event\n });\n });\n },\n removeFromQueue: function removeFromQueue(event) {\n _MatrixClientPeg2.default.get().cancelPendingEvent(event);\n }\n}; /*\n Copyright 2015, 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=Resend.js.map","'use strict';\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _events = require('events');\n\nvar _events2 = _interopRequireDefault(_events);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Acts as a place to get & set widget state, storing local echo state and\n * proxying through state from the js-sdk.\n */\nvar WidgetEchoStore = function (_EventEmitter) {\n (0, _inherits3.default)(WidgetEchoStore, _EventEmitter);\n\n function WidgetEchoStore() {\n (0, _classCallCheck3.default)(this, WidgetEchoStore);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (WidgetEchoStore.__proto__ || (0, _getPrototypeOf2.default)(WidgetEchoStore)).call(this));\n\n _this._roomWidgetEcho = {\n // Map as below. Object is the content of the widget state event,\n // so for widgets that have been deleted locally, the object is empty.\n // roomId: {\n // widgetId: [object]\n // }\n };\n return _this;\n }\n\n /**\n * Gets the widgets for a room, substracting those that are pending deletion.\n * Widgets that are pending addition are not included, since widgets are\n * represted as MatrixEvents, so to do this we'd have to create fake MatrixEvents,\n * and we don't really need the actual widget events anyway since we just want to\n * show a spinner / prevent widgets being added twice.\n *\n * @param {Room} roomId The ID of the room to get widgets for\n * @param {MatrixEvent[]} currentRoomWidgets Current widgets for the room\n * @returns {MatrixEvent[]} List of widgets in the room, minus any pending removal\n */\n\n\n (0, _createClass3.default)(WidgetEchoStore, [{\n key: 'getEchoedRoomWidgets',\n value: function getEchoedRoomWidgets(roomId, currentRoomWidgets) {\n var echoedWidgets = [];\n\n var roomEchoState = (0, _assign2.default)({}, this._roomWidgetEcho[roomId]);\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(currentRoomWidgets), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var w = _step.value;\n\n var widgetId = w.getStateKey();\n // If there's no echo, or the echo still has a widget present, show the *old* widget\n // we don't include widgets that have changed for the same reason we don't include new ones,\n // ie. we'd need to fake matrix events to do so and therte's currently no need.\n if (!roomEchoState[widgetId] || (0, _keys2.default)(roomEchoState[widgetId]).length !== 0) {\n echoedWidgets.push(w);\n }\n delete roomEchoState[widgetId];\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return echoedWidgets;\n }\n }, {\n key: 'roomHasPendingWidgetsOfType',\n value: function roomHasPendingWidgetsOfType(roomId, currentRoomWidgets, type) {\n var roomEchoState = (0, _assign2.default)({}, this._roomWidgetEcho[roomId]);\n\n // any widget IDs that are already in the room are not pending, so\n // echoes for them don't count as pending.\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(currentRoomWidgets), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var w = _step2.value;\n\n var widgetId = w.getStateKey();\n delete roomEchoState[widgetId];\n }\n\n // if there's anything left then there are pending widgets.\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n if (type === undefined) {\n return (0, _keys2.default)(roomEchoState).length > 0;\n } else {\n return (0, _values2.default)(roomEchoState).some(function (widget) {\n return widget.type === type;\n });\n }\n }\n }, {\n key: 'roomHasPendingWidgets',\n value: function roomHasPendingWidgets(roomId, currentRoomWidgets) {\n return this.roomHasPendingWidgetsOfType(roomId, currentRoomWidgets);\n }\n }, {\n key: 'setRoomWidgetEcho',\n value: function setRoomWidgetEcho(roomId, widgetId, state) {\n if (this._roomWidgetEcho[roomId] === undefined) this._roomWidgetEcho[roomId] = {};\n\n this._roomWidgetEcho[roomId][widgetId] = state;\n this.emit('update');\n }\n }, {\n key: 'removeRoomWidgetEcho',\n value: function removeRoomWidgetEcho(roomId, widgetId) {\n delete this._roomWidgetEcho[roomId][widgetId];\n if ((0, _keys2.default)(this._roomWidgetEcho[roomId]).length === 0) delete this._roomWidgetEcho[roomId];\n this.emit('update');\n }\n }]);\n return WidgetEchoStore;\n}(_events2.default); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar singletonWidgetEchoStore = null;\nif (!singletonWidgetEchoStore) {\n singletonWidgetEchoStore = new WidgetEchoStore();\n}\nmodule.exports = singletonWidgetEchoStore;\n//# sourceMappingURL=WidgetEchoStore.js.map","'use strict';\n\nexports.__esModule = true;\n\nvar _container = require('./container');\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Represents an at-rule.\n *\n * If it’s followed in the CSS by a {} block, this node will have\n * a nodes property representing its children.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('@charset \"UTF-8\"; @media print {}');\n *\n * const charset = root.first;\n * charset.type //=> 'atrule'\n * charset.nodes //=> undefined\n *\n * const media = root.last;\n * media.nodes //=> []\n */\nvar AtRule = function (_Container) {\n _inherits(AtRule, _Container);\n\n function AtRule(defaults) {\n _classCallCheck(this, AtRule);\n\n var _this = _possibleConstructorReturn(this, _Container.call(this, defaults));\n\n _this.type = 'atrule';\n return _this;\n }\n\n AtRule.prototype.append = function append() {\n var _Container$prototype$;\n\n if (!this.nodes) this.nodes = [];\n\n for (var _len = arguments.length, children = Array(_len), _key = 0; _key < _len; _key++) {\n children[_key] = arguments[_key];\n }\n\n return (_Container$prototype$ = _Container.prototype.append).call.apply(_Container$prototype$, [this].concat(children));\n };\n\n AtRule.prototype.prepend = function prepend() {\n var _Container$prototype$2;\n\n if (!this.nodes) this.nodes = [];\n\n for (var _len2 = arguments.length, children = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n children[_key2] = arguments[_key2];\n }\n\n return (_Container$prototype$2 = _Container.prototype.prepend).call.apply(_Container$prototype$2, [this].concat(children));\n };\n\n /**\n * @memberof AtRule#\n * @member {string} name - the at-rule’s name immediately follows the `@`\n *\n * @example\n * const root = postcss.parse('@media print {}');\n * media.name //=> 'media'\n * const media = root.first;\n */\n\n /**\n * @memberof AtRule#\n * @member {string} params - the at-rule’s parameters, the values\n * that follow the at-rule’s name but precede\n * any {} block\n *\n * @example\n * const root = postcss.parse('@media print, screen {}');\n * const media = root.first;\n * media.params //=> 'print, screen'\n */\n\n /**\n * @memberof AtRule#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `after`: the space symbols after the last child of the node\n * to the end of the node.\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `semicolon`: contains true if the last child has\n * an (optional) semicolon.\n * * `afterName`: the space between the at-rule name and its parameters.\n *\n * PostCSS cleans at-rule parameters from comments and extra spaces,\n * but it stores origin content in raws properties.\n * As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse(' @media\\nprint {\\n}')\n * root.first.first.raws //=> { before: ' ',\n * // between: ' ',\n * // afterName: '\\n',\n * // after: '\\n' }\n */\n\n\n return AtRule;\n}(_container2.default);\n\nexports.default = AtRule;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF0LXJ1bGUuZXM2Il0sIm5hbWVzIjpbIkF0UnVsZSIsImRlZmF1bHRzIiwidHlwZSIsImFwcGVuZCIsIm5vZGVzIiwiY2hpbGRyZW4iLCJwcmVwZW5kIiwiQ29udGFpbmVyIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7Ozs7Ozs7OztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFrQk1BLE07OztBQUVGLGtCQUFZQyxRQUFaLEVBQXNCO0FBQUE7O0FBQUEsaURBQ2xCLHNCQUFNQSxRQUFOLENBRGtCOztBQUVsQixVQUFLQyxJQUFMLEdBQVksUUFBWjtBQUZrQjtBQUdyQjs7bUJBRURDLE0scUJBQW9CO0FBQUE7O0FBQ2hCLFFBQUssQ0FBQyxLQUFLQyxLQUFYLEVBQW1CLEtBQUtBLEtBQUwsR0FBYSxFQUFiOztBQURILHNDQUFWQyxRQUFVO0FBQVZBLGNBQVU7QUFBQTs7QUFFaEIsV0FBTyw4Q0FBTUYsTUFBTixrREFBZ0JFLFFBQWhCLEVBQVA7QUFDSCxHOzttQkFFREMsTyxzQkFBcUI7QUFBQTs7QUFDakIsUUFBSyxDQUFDLEtBQUtGLEtBQVgsRUFBbUIsS0FBS0EsS0FBTCxHQUFhLEVBQWI7O0FBREYsdUNBQVZDLFFBQVU7QUFBVkEsY0FBVTtBQUFBOztBQUVqQixXQUFPLCtDQUFNQyxPQUFOLG1EQUFpQkQsUUFBakIsRUFBUDtBQUNILEc7O0FBRUQ7Ozs7Ozs7Ozs7QUFVQTs7Ozs7Ozs7Ozs7O0FBWUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF2Q2lCRSxtQjs7a0JBd0VOUCxNIiwiZmlsZSI6ImF0LXJ1bGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29udGFpbmVyIGZyb20gJy4vY29udGFpbmVyJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGF0LXJ1bGUuXG4gKlxuICogSWYgaXTigJlzIGZvbGxvd2VkIGluIHRoZSBDU1MgYnkgYSB7fSBibG9jaywgdGhpcyBub2RlIHdpbGwgaGF2ZVxuICogYSBub2RlcyBwcm9wZXJ0eSByZXByZXNlbnRpbmcgaXRzIGNoaWxkcmVuLlxuICpcbiAqIEBleHRlbmRzIENvbnRhaW5lclxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnQGNoYXJzZXQgXCJVVEYtOFwiOyBAbWVkaWEgcHJpbnQge30nKTtcbiAqXG4gKiBjb25zdCBjaGFyc2V0ID0gcm9vdC5maXJzdDtcbiAqIGNoYXJzZXQudHlwZSAgLy89PiAnYXRydWxlJ1xuICogY2hhcnNldC5ub2RlcyAvLz0+IHVuZGVmaW5lZFxuICpcbiAqIGNvbnN0IG1lZGlhID0gcm9vdC5sYXN0O1xuICogbWVkaWEubm9kZXMgICAvLz0+IFtdXG4gKi9cbmNsYXNzIEF0UnVsZSBleHRlbmRzIENvbnRhaW5lciB7XG5cbiAgICBjb25zdHJ1Y3RvcihkZWZhdWx0cykge1xuICAgICAgICBzdXBlcihkZWZhdWx0cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdhdHJ1bGUnO1xuICAgIH1cblxuICAgIGFwcGVuZCguLi5jaGlsZHJlbikge1xuICAgICAgICBpZiAoICF0aGlzLm5vZGVzICkgdGhpcy5ub2RlcyA9IFtdO1xuICAgICAgICByZXR1cm4gc3VwZXIuYXBwZW5kKC4uLmNoaWxkcmVuKTtcbiAgICB9XG5cbiAgICBwcmVwZW5kKC4uLmNoaWxkcmVuKSB7XG4gICAgICAgIGlmICggIXRoaXMubm9kZXMgKSB0aGlzLm5vZGVzID0gW107XG4gICAgICAgIHJldHVybiBzdXBlci5wcmVwZW5kKC4uLmNoaWxkcmVuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAbWVtYmVyb2YgQXRSdWxlI1xuICAgICAqIEBtZW1iZXIge3N0cmluZ30gbmFtZSAtIHRoZSBhdC1ydWxl4oCZcyBuYW1lIGltbWVkaWF0ZWx5IGZvbGxvd3MgdGhlIGBAYFxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCByb290ICA9IHBvc3Rjc3MucGFyc2UoJ0BtZWRpYSBwcmludCB7fScpO1xuICAgICAqIG1lZGlhLm5hbWUgLy89PiAnbWVkaWEnXG4gICAgICogY29uc3QgbWVkaWEgPSByb290LmZpcnN0O1xuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIEF0UnVsZSNcbiAgICAgKiBAbWVtYmVyIHtzdHJpbmd9IHBhcmFtcyAtIHRoZSBhdC1ydWxl4oCZcyBwYXJhbWV0ZXJzLCB0aGUgdmFsdWVzXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGZvbGxvdyB0aGUgYXQtcnVsZeKAmXMgbmFtZSBidXQgcHJlY2VkZVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55IHt9IGJsb2NrXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IHJvb3QgID0gcG9zdGNzcy5wYXJzZSgnQG1lZGlhIHByaW50LCBzY3JlZW4ge30nKTtcbiAgICAgKiBjb25zdCBtZWRpYSA9IHJvb3QuZmlyc3Q7XG4gICAgICogbWVkaWEucGFyYW1zIC8vPT4gJ3ByaW50LCBzY3JlZW4nXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBAbWVtYmVyb2YgQXRSdWxlI1xuICAgICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyAtIEluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGJ5dGUtdG8tYnl0ZSBlcXVhbFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgc3RyaW5nIGFzIGl0IHdhcyBpbiB0aGUgb3JpZ2luIGlucHV0LlxuICAgICAqXG4gICAgICogRXZlcnkgcGFyc2VyIHNhdmVzIGl0cyBvd24gcHJvcGVydGllcyxcbiAgICAgKiBidXQgdGhlIGRlZmF1bHQgQ1NTIHBhcnNlciB1c2VzOlxuICAgICAqXG4gICAgICogKiBgYmVmb3JlYDogdGhlIHNwYWNlIHN5bWJvbHMgYmVmb3JlIHRoZSBub2RlLiBJdCBhbHNvIHN0b3JlcyBgKmBcbiAgICAgKiAgIGFuZCBgX2Agc3ltYm9scyBiZWZvcmUgdGhlIGRlY2xhcmF0aW9uIChJRSBoYWNrKS5cbiAgICAgKiAqIGBhZnRlcmA6IHRoZSBzcGFjZSBzeW1ib2xzIGFmdGVyIHRoZSBsYXN0IGNoaWxkIG9mIHRoZSBub2RlXG4gICAgICogICB0byB0aGUgZW5kIG9mIHRoZSBub2RlLlxuICAgICAqICogYGJldHdlZW5gOiB0aGUgc3ltYm9scyBiZXR3ZWVuIHRoZSBwcm9wZXJ0eSBhbmQgdmFsdWVcbiAgICAgKiAgIGZvciBkZWNsYXJhdGlvbnMsIHNlbGVjdG9yIGFuZCBge2AgZm9yIHJ1bGVzLCBvciBsYXN0IHBhcmFtZXRlclxuICAgICAqICAgYW5kIGB7YCBmb3IgYXQtcnVsZXMuXG4gICAgICogKiBgc2VtaWNvbG9uYDogY29udGFpbnMgdHJ1ZSBpZiB0aGUgbGFzdCBjaGlsZCBoYXNcbiAgICAgKiAgIGFuIChvcHRpb25hbCkgc2VtaWNvbG9uLlxuICAgICAqICogYGFmdGVyTmFtZWA6IHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBhdC1ydWxlIG5hbWUgYW5kIGl0cyBwYXJhbWV0ZXJzLlxuICAgICAqXG4gICAgICogUG9zdENTUyBjbGVhbnMgYXQtcnVsZSBwYXJhbWV0ZXJzIGZyb20gY29tbWVudHMgYW5kIGV4dHJhIHNwYWNlcyxcbiAgICAgKiBidXQgaXQgc3RvcmVzIG9yaWdpbiBjb250ZW50IGluIHJhd3MgcHJvcGVydGllcy5cbiAgICAgKiBBcyBzdWNoLCBpZiB5b3UgZG9u4oCZdCBjaGFuZ2UgYSBkZWNsYXJhdGlvbuKAmXMgdmFsdWUsXG4gICAgICogUG9zdENTUyB3aWxsIHVzZSB0aGUgcmF3IHZhbHVlIHdpdGggY29tbWVudHMuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCcgIEBtZWRpYVxcbnByaW50IHtcXG59JylcbiAgICAgKiByb290LmZpcnN0LmZpcnN0LnJhd3MgLy89PiB7IGJlZm9yZTogJyAgJyxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGJldHdlZW46ICcgJyxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGFmdGVyTmFtZTogJ1xcbicsXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBhZnRlcjogJ1xcbicgfVxuICAgICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBBdFJ1bGU7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _container = require('./container');\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _list = require('./list');\n\nvar _list2 = _interopRequireDefault(_list);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS rule: a selector followed by a declaration block.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('a{}');\n * const rule = root.first;\n * rule.type //=> 'rule'\n * rule.toString() //=> 'a{}'\n */\nvar Rule = function (_Container) {\n _inherits(Rule, _Container);\n\n function Rule(defaults) {\n _classCallCheck(this, Rule);\n\n var _this = _possibleConstructorReturn(this, _Container.call(this, defaults));\n\n _this.type = 'rule';\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n\n /**\n * An array containing the rule’s individual selectors.\n * Groups of selectors are split at commas.\n *\n * @type {string[]}\n *\n * @example\n * const root = postcss.parse('a, b { }');\n * const rule = root.first;\n *\n * rule.selector //=> 'a, b'\n * rule.selectors //=> ['a', 'b']\n *\n * rule.selectors = ['a', 'strong'];\n * rule.selector //=> 'a, strong'\n */\n\n\n _createClass(Rule, [{\n key: 'selectors',\n get: function get() {\n return _list2.default.comma(this.selector);\n },\n set: function set(values) {\n var match = this.selector ? this.selector.match(/,\\s*/) : null;\n var sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen');\n this.selector = values.join(sep);\n }\n\n /**\n * @memberof Rule#\n * @member {string} selector - the rule’s full selector represented\n * as a string\n *\n * @example\n * const root = postcss.parse('a, b { }');\n * const rule = root.first;\n * rule.selector //=> 'a, b'\n */\n\n /**\n * @memberof Rule#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `after`: the space symbols after the last child of the node\n * to the end of the node.\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `semicolon`: contains `true` if the last child has\n * an (optional) semicolon.\n * * `ownSemicolon`: contains `true` if there is semicolon after rule.\n *\n * PostCSS cleans selectors from comments and extra spaces,\n * but it stores origin content in raws properties.\n * As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '', between: ' ', after: '\\n' }\n */\n\n }]);\n\n return Rule;\n}(_container2.default);\n\nexports.default = Rule;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGUuZXM2Il0sIm5hbWVzIjpbIlJ1bGUiLCJkZWZhdWx0cyIsInR5cGUiLCJub2RlcyIsImxpc3QiLCJjb21tYSIsInNlbGVjdG9yIiwidmFsdWVzIiwibWF0Y2giLCJzZXAiLCJyYXciLCJqb2luIiwiQ29udGFpbmVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7OztBQUNBOzs7Ozs7Ozs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7SUFXTUEsSTs7O0FBRUYsZ0JBQVlDLFFBQVosRUFBc0I7QUFBQTs7QUFBQSxpREFDbEIsc0JBQU1BLFFBQU4sQ0FEa0I7O0FBRWxCLFVBQUtDLElBQUwsR0FBWSxNQUFaO0FBQ0EsUUFBSyxDQUFDLE1BQUtDLEtBQVgsRUFBbUIsTUFBS0EsS0FBTCxHQUFhLEVBQWI7QUFIRDtBQUlyQjs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0JBZ0JnQjtBQUNaLGFBQU9DLGVBQUtDLEtBQUwsQ0FBVyxLQUFLQyxRQUFoQixDQUFQO0FBQ0gsSztzQkFFYUMsTSxFQUFRO0FBQ2xCLFVBQUlDLFFBQVEsS0FBS0YsUUFBTCxHQUFnQixLQUFLQSxRQUFMLENBQWNFLEtBQWQsQ0FBb0IsTUFBcEIsQ0FBaEIsR0FBOEMsSUFBMUQ7QUFDQSxVQUFJQyxNQUFRRCxRQUFRQSxNQUFNLENBQU4sQ0FBUixHQUFtQixNQUFNLEtBQUtFLEdBQUwsQ0FBUyxTQUFULEVBQW9CLFlBQXBCLENBQXJDO0FBQ0EsV0FBS0osUUFBTCxHQUFnQkMsT0FBT0ksSUFBUCxDQUFZRixHQUFaLENBQWhCO0FBQ0g7O0FBRUQ7Ozs7Ozs7Ozs7O0FBV0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBN0NlRyxtQjs7a0JBNEVKWixJIiwiZmlsZSI6InJ1bGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29udGFpbmVyIGZyb20gJy4vY29udGFpbmVyJztcbmltcG9ydCBsaXN0ICAgICAgZnJvbSAnLi9saXN0JztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgQ1NTIHJ1bGU6IGEgc2VsZWN0b3IgZm9sbG93ZWQgYnkgYSBkZWNsYXJhdGlvbiBibG9jay5cbiAqXG4gKiBAZXh0ZW5kcyBDb250YWluZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2F7fScpO1xuICogY29uc3QgcnVsZSA9IHJvb3QuZmlyc3Q7XG4gKiBydWxlLnR5cGUgICAgICAgLy89PiAncnVsZSdcbiAqIHJ1bGUudG9TdHJpbmcoKSAvLz0+ICdhe30nXG4gKi9cbmNsYXNzIFJ1bGUgZXh0ZW5kcyBDb250YWluZXIge1xuXG4gICAgY29uc3RydWN0b3IoZGVmYXVsdHMpIHtcbiAgICAgICAgc3VwZXIoZGVmYXVsdHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAncnVsZSc7XG4gICAgICAgIGlmICggIXRoaXMubm9kZXMgKSB0aGlzLm5vZGVzID0gW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW4gYXJyYXkgY29udGFpbmluZyB0aGUgcnVsZeKAmXMgaW5kaXZpZHVhbCBzZWxlY3RvcnMuXG4gICAgICogR3JvdXBzIG9mIHNlbGVjdG9ycyBhcmUgc3BsaXQgYXQgY29tbWFzLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ1tdfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSwgYiB7IH0nKTtcbiAgICAgKiBjb25zdCBydWxlID0gcm9vdC5maXJzdDtcbiAgICAgKlxuICAgICAqIHJ1bGUuc2VsZWN0b3IgIC8vPT4gJ2EsIGInXG4gICAgICogcnVsZS5zZWxlY3RvcnMgLy89PiBbJ2EnLCAnYiddXG4gICAgICpcbiAgICAgKiBydWxlLnNlbGVjdG9ycyA9IFsnYScsICdzdHJvbmcnXTtcbiAgICAgKiBydWxlLnNlbGVjdG9yIC8vPT4gJ2EsIHN0cm9uZydcbiAgICAgKi9cbiAgICBnZXQgc2VsZWN0b3JzKCkge1xuICAgICAgICByZXR1cm4gbGlzdC5jb21tYSh0aGlzLnNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICBzZXQgc2VsZWN0b3JzKHZhbHVlcykge1xuICAgICAgICBsZXQgbWF0Y2ggPSB0aGlzLnNlbGVjdG9yID8gdGhpcy5zZWxlY3Rvci5tYXRjaCgvLFxccyovKSA6IG51bGw7XG4gICAgICAgIGxldCBzZXAgICA9IG1hdGNoID8gbWF0Y2hbMF0gOiAnLCcgKyB0aGlzLnJhdygnYmV0d2VlbicsICdiZWZvcmVPcGVuJyk7XG4gICAgICAgIHRoaXMuc2VsZWN0b3IgPSB2YWx1ZXMuam9pbihzZXApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBtZW1iZXJvZiBSdWxlI1xuICAgICAqIEBtZW1iZXIge3N0cmluZ30gc2VsZWN0b3IgLSB0aGUgcnVsZeKAmXMgZnVsbCBzZWxlY3RvciByZXByZXNlbnRlZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBhIHN0cmluZ1xuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSwgYiB7IH0nKTtcbiAgICAgKiBjb25zdCBydWxlID0gcm9vdC5maXJzdDtcbiAgICAgKiBydWxlLnNlbGVjdG9yIC8vPT4gJ2EsIGInXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBAbWVtYmVyb2YgUnVsZSNcbiAgICAgKiBAbWVtYmVyIHtvYmplY3R9IHJhd3MgLSBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlIHN0cmluZyBhcyBpdCB3YXMgaW4gdGhlIG9yaWdpbiBpbnB1dC5cbiAgICAgKlxuICAgICAqIEV2ZXJ5IHBhcnNlciBzYXZlcyBpdHMgb3duIHByb3BlcnRpZXMsXG4gICAgICogYnV0IHRoZSBkZWZhdWx0IENTUyBwYXJzZXIgdXNlczpcbiAgICAgKlxuICAgICAqICogYGJlZm9yZWA6IHRoZSBzcGFjZSBzeW1ib2xzIGJlZm9yZSB0aGUgbm9kZS4gSXQgYWxzbyBzdG9yZXMgYCpgXG4gICAgICogICBhbmQgYF9gIHN5bWJvbHMgYmVmb3JlIHRoZSBkZWNsYXJhdGlvbiAoSUUgaGFjaykuXG4gICAgICogKiBgYWZ0ZXJgOiB0aGUgc3BhY2Ugc3ltYm9scyBhZnRlciB0aGUgbGFzdCBjaGlsZCBvZiB0aGUgbm9kZVxuICAgICAqICAgdG8gdGhlIGVuZCBvZiB0aGUgbm9kZS5cbiAgICAgKiAqIGBiZXR3ZWVuYDogdGhlIHN5bWJvbHMgYmV0d2VlbiB0aGUgcHJvcGVydHkgYW5kIHZhbHVlXG4gICAgICogICBmb3IgZGVjbGFyYXRpb25zLCBzZWxlY3RvciBhbmQgYHtgIGZvciBydWxlcywgb3IgbGFzdCBwYXJhbWV0ZXJcbiAgICAgKiAgIGFuZCBge2AgZm9yIGF0LXJ1bGVzLlxuICAgICAqICogYHNlbWljb2xvbmA6IGNvbnRhaW5zIGB0cnVlYCBpZiB0aGUgbGFzdCBjaGlsZCBoYXNcbiAgICAgKiAgIGFuIChvcHRpb25hbCkgc2VtaWNvbG9uLlxuICAgICAqICogYG93blNlbWljb2xvbmA6IGNvbnRhaW5zIGB0cnVlYCBpZiB0aGVyZSBpcyBzZW1pY29sb24gYWZ0ZXIgcnVsZS5cbiAgICAgKlxuICAgICAqIFBvc3RDU1MgY2xlYW5zIHNlbGVjdG9ycyBmcm9tIGNvbW1lbnRzIGFuZCBleHRyYSBzcGFjZXMsXG4gICAgICogYnV0IGl0IHN0b3JlcyBvcmlnaW4gY29udGVudCBpbiByYXdzIHByb3BlcnRpZXMuXG4gICAgICogQXMgc3VjaCwgaWYgeW91IGRvbuKAmXQgY2hhbmdlIGEgZGVjbGFyYXRpb27igJlzIHZhbHVlLFxuICAgICAqIFBvc3RDU1Mgd2lsbCB1c2UgdGhlIHJhdyB2YWx1ZSB3aXRoIGNvbW1lbnRzLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7XFxuICBjb2xvcjpibGFja1xcbn0nKVxuICAgICAqIHJvb3QuZmlyc3QuZmlyc3QucmF3cyAvLz0+IHsgYmVmb3JlOiAnJywgYmV0d2VlbjogJyAnLCBhZnRlcjogJ1xcbicgfVxuICAgICAqL1xuXG59XG5cbmV4cG9ydCBkZWZhdWx0IFJ1bGU7XG4iXX0=\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/* jshint maxerr: 10000 */\n/* jslint unused: true */\n/* jshint shadow: true */\n/* jshint -W075 */\n(function(ns){\n // this list must be ordered from largest length of the value array, index 0, to the shortest\n ns.emojioneList = {\":kiss_ww:\":{\"unicode\":[\"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469\",\"1f469-2764-1f48b-1f469\"],\"fname\":\"1f469-2764-1f48b-1f469\",\"uc\":\"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469\",\"isCanonical\": true},\":couplekiss_ww:\":{\"unicode\":[\"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469\",\"1f469-2764-1f48b-1f469\"],\"fname\":\"1f469-2764-1f48b-1f469\",\"uc\":\"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469\",\"isCanonical\": false},\":kiss_mm:\":{\"unicode\":[\"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468\",\"1f468-2764-1f48b-1f468\"],\"fname\":\"1f468-2764-1f48b-1f468\",\"uc\":\"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468\",\"isCanonical\": true},\":couplekiss_mm:\":{\"unicode\":[\"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468\",\"1f468-2764-1f48b-1f468\"],\"fname\":\"1f468-2764-1f48b-1f468\",\"uc\":\"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468\",\"isCanonical\": false},\":family_mmbb:\":{\"unicode\":[\"1f468-200d-1f468-200d-1f466-200d-1f466\",\"1f468-1f468-1f466-1f466\"],\"fname\":\"1f468-1f468-1f466-1f466\",\"uc\":\"1f468-200d-1f468-200d-1f466-200d-1f466\",\"isCanonical\": true},\":family_mmgb:\":{\"unicode\":[\"1f468-200d-1f468-200d-1f467-200d-1f466\",\"1f468-1f468-1f467-1f466\"],\"fname\":\"1f468-1f468-1f467-1f466\",\"uc\":\"1f468-200d-1f468-200d-1f467-200d-1f466\",\"isCanonical\": true},\":family_mmgg:\":{\"unicode\":[\"1f468-200d-1f468-200d-1f467-200d-1f467\",\"1f468-1f468-1f467-1f467\"],\"fname\":\"1f468-1f468-1f467-1f467\",\"uc\":\"1f468-200d-1f468-200d-1f467-200d-1f467\",\"isCanonical\": true},\":family_mwbb:\":{\"unicode\":[\"1f468-200d-1f469-200d-1f466-200d-1f466\",\"1f468-1f469-1f466-1f466\"],\"fname\":\"1f468-1f469-1f466-1f466\",\"uc\":\"1f468-200d-1f469-200d-1f466-200d-1f466\",\"isCanonical\": true},\":family_mwgb:\":{\"unicode\":[\"1f468-200d-1f469-200d-1f467-200d-1f466\",\"1f468-1f469-1f467-1f466\"],\"fname\":\"1f468-1f469-1f467-1f466\",\"uc\":\"1f468-200d-1f469-200d-1f467-200d-1f466\",\"isCanonical\": true},\":family_mwgg:\":{\"unicode\":[\"1f468-200d-1f469-200d-1f467-200d-1f467\",\"1f468-1f469-1f467-1f467\"],\"fname\":\"1f468-1f469-1f467-1f467\",\"uc\":\"1f468-200d-1f469-200d-1f467-200d-1f467\",\"isCanonical\": true},\":family_wwbb:\":{\"unicode\":[\"1f469-200d-1f469-200d-1f466-200d-1f466\",\"1f469-1f469-1f466-1f466\"],\"fname\":\"1f469-1f469-1f466-1f466\",\"uc\":\"1f469-200d-1f469-200d-1f466-200d-1f466\",\"isCanonical\": true},\":family_wwgb:\":{\"unicode\":[\"1f469-200d-1f469-200d-1f467-200d-1f466\",\"1f469-1f469-1f467-1f466\"],\"fname\":\"1f469-1f469-1f467-1f466\",\"uc\":\"1f469-200d-1f469-200d-1f467-200d-1f466\",\"isCanonical\": true},\":family_wwgg:\":{\"unicode\":[\"1f469-200d-1f469-200d-1f467-200d-1f467\",\"1f469-1f469-1f467-1f467\"],\"fname\":\"1f469-1f469-1f467-1f467\",\"uc\":\"1f469-200d-1f469-200d-1f467-200d-1f467\",\"isCanonical\": true},\":couple_ww:\":{\"unicode\":[\"1f469-200d-2764-fe0f-200d-1f469\",\"1f469-2764-1f469\"],\"fname\":\"1f469-2764-1f469\",\"uc\":\"1f469-200d-2764-fe0f-200d-1f469\",\"isCanonical\": true},\":couple_with_heart_ww:\":{\"unicode\":[\"1f469-200d-2764-fe0f-200d-1f469\",\"1f469-2764-1f469\"],\"fname\":\"1f469-2764-1f469\",\"uc\":\"1f469-200d-2764-fe0f-200d-1f469\",\"isCanonical\": false},\":couple_mm:\":{\"unicode\":[\"1f468-200d-2764-fe0f-200d-1f468\",\"1f468-2764-1f468\"],\"fname\":\"1f468-2764-1f468\",\"uc\":\"1f468-200d-2764-fe0f-200d-1f468\",\"isCanonical\": true},\":couple_with_heart_mm:\":{\"unicode\":[\"1f468-200d-2764-fe0f-200d-1f468\",\"1f468-2764-1f468\"],\"fname\":\"1f468-2764-1f468\",\"uc\":\"1f468-200d-2764-fe0f-200d-1f468\",\"isCanonical\": false},\":family_mmb:\":{\"unicode\":[\"1f468-200d-1f468-200d-1f466\",\"1f468-1f468-1f466\"],\"fname\":\"1f468-1f468-1f466\",\"uc\":\"1f468-200d-1f468-200d-1f466\",\"isCanonical\": true},\":family_mmg:\":{\"unicode\":[\"1f468-200d-1f468-200d-1f467\",\"1f468-1f468-1f467\"],\"fname\":\"1f468-1f468-1f467\",\"uc\":\"1f468-200d-1f468-200d-1f467\",\"isCanonical\": true},\":family_mwg:\":{\"unicode\":[\"1f468-200d-1f469-200d-1f467\",\"1f468-1f469-1f467\"],\"fname\":\"1f468-1f469-1f467\",\"uc\":\"1f468-200d-1f469-200d-1f467\",\"isCanonical\": true},\":family_wwb:\":{\"unicode\":[\"1f469-200d-1f469-200d-1f466\",\"1f469-1f469-1f466\"],\"fname\":\"1f469-1f469-1f466\",\"uc\":\"1f469-200d-1f469-200d-1f466\",\"isCanonical\": true},\":family_wwg:\":{\"unicode\":[\"1f469-200d-1f469-200d-1f467\",\"1f469-1f469-1f467\"],\"fname\":\"1f469-1f469-1f467\",\"uc\":\"1f469-200d-1f469-200d-1f467\",\"isCanonical\": true},\":rainbow_flag:\":{\"unicode\":[\"1f3f3-fe0f-200d-1f308\",\"1f3f3-1f308\"],\"fname\":\"1f3f3-1f308\",\"uc\":\"1f3f3-fe0f-200d-1f308\",\"isCanonical\": true},\":gay_pride_flag:\":{\"unicode\":[\"1f3f3-fe0f-200d-1f308\",\"1f3f3-1f308\"],\"fname\":\"1f3f3-1f308\",\"uc\":\"1f3f3-fe0f-200d-1f308\",\"isCanonical\": false},\":eye_in_speech_bubble:\":{\"unicode\":[\"1f441-200d-1f5e8\",\"1f441-1f5e8\"],\"fname\":\"1f441-1f5e8\",\"uc\":\"1f441-200d-1f5e8\",\"isCanonical\": true},\":hash:\":{\"unicode\":[\"0023-fe0f-20e3\",\"0023-20e3\"],\"fname\":\"0023-20e3\",\"uc\":\"0023-20e3\",\"isCanonical\": true},\":zero:\":{\"unicode\":[\"0030-fe0f-20e3\",\"0030-20e3\"],\"fname\":\"0030-20e3\",\"uc\":\"0030-20e3\",\"isCanonical\": true},\":one:\":{\"unicode\":[\"0031-fe0f-20e3\",\"0031-20e3\"],\"fname\":\"0031-20e3\",\"uc\":\"0031-20e3\",\"isCanonical\": true},\":two:\":{\"unicode\":[\"0032-fe0f-20e3\",\"0032-20e3\"],\"fname\":\"0032-20e3\",\"uc\":\"0032-20e3\",\"isCanonical\": true},\":three:\":{\"unicode\":[\"0033-fe0f-20e3\",\"0033-20e3\"],\"fname\":\"0033-20e3\",\"uc\":\"0033-20e3\",\"isCanonical\": true},\":four:\":{\"unicode\":[\"0034-fe0f-20e3\",\"0034-20e3\"],\"fname\":\"0034-20e3\",\"uc\":\"0034-20e3\",\"isCanonical\": true},\":five:\":{\"unicode\":[\"0035-fe0f-20e3\",\"0035-20e3\"],\"fname\":\"0035-20e3\",\"uc\":\"0035-20e3\",\"isCanonical\": true},\":six:\":{\"unicode\":[\"0036-fe0f-20e3\",\"0036-20e3\"],\"fname\":\"0036-20e3\",\"uc\":\"0036-20e3\",\"isCanonical\": true},\":seven:\":{\"unicode\":[\"0037-fe0f-20e3\",\"0037-20e3\"],\"fname\":\"0037-20e3\",\"uc\":\"0037-20e3\",\"isCanonical\": true},\":eight:\":{\"unicode\":[\"0038-fe0f-20e3\",\"0038-20e3\"],\"fname\":\"0038-20e3\",\"uc\":\"0038-20e3\",\"isCanonical\": true},\":nine:\":{\"unicode\":[\"0039-fe0f-20e3\",\"0039-20e3\"],\"fname\":\"0039-20e3\",\"uc\":\"0039-20e3\",\"isCanonical\": true},\":asterisk:\":{\"unicode\":[\"002a-fe0f-20e3\",\"002a-20e3\"],\"fname\":\"002a-20e3\",\"uc\":\"002a-20e3\",\"isCanonical\": true},\":keycap_asterisk:\":{\"unicode\":[\"002a-fe0f-20e3\",\"002a-20e3\"],\"fname\":\"002a-20e3\",\"uc\":\"002a-20e3\",\"isCanonical\": false},\":handball_tone5:\":{\"unicode\":[\"1f93e-1f3ff\"],\"fname\":\"1f93e-1f3ff\",\"uc\":\"1f93e-1f3ff\",\"isCanonical\": true},\":handball_tone4:\":{\"unicode\":[\"1f93e-1f3fe\"],\"fname\":\"1f93e-1f3fe\",\"uc\":\"1f93e-1f3fe\",\"isCanonical\": true},\":handball_tone3:\":{\"unicode\":[\"1f93e-1f3fd\"],\"fname\":\"1f93e-1f3fd\",\"uc\":\"1f93e-1f3fd\",\"isCanonical\": true},\":handball_tone2:\":{\"unicode\":[\"1f93e-1f3fc\"],\"fname\":\"1f93e-1f3fc\",\"uc\":\"1f93e-1f3fc\",\"isCanonical\": true},\":handball_tone1:\":{\"unicode\":[\"1f93e-1f3fb\"],\"fname\":\"1f93e-1f3fb\",\"uc\":\"1f93e-1f3fb\",\"isCanonical\": true},\":water_polo_tone5:\":{\"unicode\":[\"1f93d-1f3ff\"],\"fname\":\"1f93d-1f3ff\",\"uc\":\"1f93d-1f3ff\",\"isCanonical\": true},\":water_polo_tone4:\":{\"unicode\":[\"1f93d-1f3fe\"],\"fname\":\"1f93d-1f3fe\",\"uc\":\"1f93d-1f3fe\",\"isCanonical\": true},\":water_polo_tone3:\":{\"unicode\":[\"1f93d-1f3fd\"],\"fname\":\"1f93d-1f3fd\",\"uc\":\"1f93d-1f3fd\",\"isCanonical\": true},\":water_polo_tone2:\":{\"unicode\":[\"1f93d-1f3fc\"],\"fname\":\"1f93d-1f3fc\",\"uc\":\"1f93d-1f3fc\",\"isCanonical\": true},\":water_polo_tone1:\":{\"unicode\":[\"1f93d-1f3fb\"],\"fname\":\"1f93d-1f3fb\",\"uc\":\"1f93d-1f3fb\",\"isCanonical\": true},\":wrestlers_tone5:\":{\"unicode\":[\"1f93c-1f3ff\"],\"fname\":\"1f93c-1f3ff\",\"uc\":\"1f93c-1f3ff\",\"isCanonical\": true},\":wrestling_tone5:\":{\"unicode\":[\"1f93c-1f3ff\"],\"fname\":\"1f93c-1f3ff\",\"uc\":\"1f93c-1f3ff\",\"isCanonical\": false},\":wrestlers_tone4:\":{\"unicode\":[\"1f93c-1f3fe\"],\"fname\":\"1f93c-1f3fe\",\"uc\":\"1f93c-1f3fe\",\"isCanonical\": true},\":wrestling_tone4:\":{\"unicode\":[\"1f93c-1f3fe\"],\"fname\":\"1f93c-1f3fe\",\"uc\":\"1f93c-1f3fe\",\"isCanonical\": false},\":wrestlers_tone3:\":{\"unicode\":[\"1f93c-1f3fd\"],\"fname\":\"1f93c-1f3fd\",\"uc\":\"1f93c-1f3fd\",\"isCanonical\": true},\":wrestling_tone3:\":{\"unicode\":[\"1f93c-1f3fd\"],\"fname\":\"1f93c-1f3fd\",\"uc\":\"1f93c-1f3fd\",\"isCanonical\": false},\":wrestlers_tone2:\":{\"unicode\":[\"1f93c-1f3fc\"],\"fname\":\"1f93c-1f3fc\",\"uc\":\"1f93c-1f3fc\",\"isCanonical\": true},\":wrestling_tone2:\":{\"unicode\":[\"1f93c-1f3fc\"],\"fname\":\"1f93c-1f3fc\",\"uc\":\"1f93c-1f3fc\",\"isCanonical\": false},\":wrestlers_tone1:\":{\"unicode\":[\"1f93c-1f3fb\"],\"fname\":\"1f93c-1f3fb\",\"uc\":\"1f93c-1f3fb\",\"isCanonical\": true},\":wrestling_tone1:\":{\"unicode\":[\"1f93c-1f3fb\"],\"fname\":\"1f93c-1f3fb\",\"uc\":\"1f93c-1f3fb\",\"isCanonical\": false},\":juggling_tone5:\":{\"unicode\":[\"1f939-1f3ff\"],\"fname\":\"1f939-1f3ff\",\"uc\":\"1f939-1f3ff\",\"isCanonical\": true},\":juggler_tone5:\":{\"unicode\":[\"1f939-1f3ff\"],\"fname\":\"1f939-1f3ff\",\"uc\":\"1f939-1f3ff\",\"isCanonical\": false},\":juggling_tone4:\":{\"unicode\":[\"1f939-1f3fe\"],\"fname\":\"1f939-1f3fe\",\"uc\":\"1f939-1f3fe\",\"isCanonical\": true},\":juggler_tone4:\":{\"unicode\":[\"1f939-1f3fe\"],\"fname\":\"1f939-1f3fe\",\"uc\":\"1f939-1f3fe\",\"isCanonical\": false},\":juggling_tone3:\":{\"unicode\":[\"1f939-1f3fd\"],\"fname\":\"1f939-1f3fd\",\"uc\":\"1f939-1f3fd\",\"isCanonical\": true},\":juggler_tone3:\":{\"unicode\":[\"1f939-1f3fd\"],\"fname\":\"1f939-1f3fd\",\"uc\":\"1f939-1f3fd\",\"isCanonical\": false},\":juggling_tone2:\":{\"unicode\":[\"1f939-1f3fc\"],\"fname\":\"1f939-1f3fc\",\"uc\":\"1f939-1f3fc\",\"isCanonical\": true},\":juggler_tone2:\":{\"unicode\":[\"1f939-1f3fc\"],\"fname\":\"1f939-1f3fc\",\"uc\":\"1f939-1f3fc\",\"isCanonical\": false},\":juggling_tone1:\":{\"unicode\":[\"1f939-1f3fb\"],\"fname\":\"1f939-1f3fb\",\"uc\":\"1f939-1f3fb\",\"isCanonical\": true},\":juggler_tone1:\":{\"unicode\":[\"1f939-1f3fb\"],\"fname\":\"1f939-1f3fb\",\"uc\":\"1f939-1f3fb\",\"isCanonical\": false},\":cartwheel_tone5:\":{\"unicode\":[\"1f938-1f3ff\"],\"fname\":\"1f938-1f3ff\",\"uc\":\"1f938-1f3ff\",\"isCanonical\": true},\":person_doing_cartwheel_tone5:\":{\"unicode\":[\"1f938-1f3ff\"],\"fname\":\"1f938-1f3ff\",\"uc\":\"1f938-1f3ff\",\"isCanonical\": false},\":cartwheel_tone4:\":{\"unicode\":[\"1f938-1f3fe\"],\"fname\":\"1f938-1f3fe\",\"uc\":\"1f938-1f3fe\",\"isCanonical\": true},\":person_doing_cartwheel_tone4:\":{\"unicode\":[\"1f938-1f3fe\"],\"fname\":\"1f938-1f3fe\",\"uc\":\"1f938-1f3fe\",\"isCanonical\": false},\":cartwheel_tone3:\":{\"unicode\":[\"1f938-1f3fd\"],\"fname\":\"1f938-1f3fd\",\"uc\":\"1f938-1f3fd\",\"isCanonical\": true},\":person_doing_cartwheel_tone3:\":{\"unicode\":[\"1f938-1f3fd\"],\"fname\":\"1f938-1f3fd\",\"uc\":\"1f938-1f3fd\",\"isCanonical\": false},\":cartwheel_tone2:\":{\"unicode\":[\"1f938-1f3fc\"],\"fname\":\"1f938-1f3fc\",\"uc\":\"1f938-1f3fc\",\"isCanonical\": true},\":person_doing_cartwheel_tone2:\":{\"unicode\":[\"1f938-1f3fc\"],\"fname\":\"1f938-1f3fc\",\"uc\":\"1f938-1f3fc\",\"isCanonical\": false},\":cartwheel_tone1:\":{\"unicode\":[\"1f938-1f3fb\"],\"fname\":\"1f938-1f3fb\",\"uc\":\"1f938-1f3fb\",\"isCanonical\": true},\":person_doing_cartwheel_tone1:\":{\"unicode\":[\"1f938-1f3fb\"],\"fname\":\"1f938-1f3fb\",\"uc\":\"1f938-1f3fb\",\"isCanonical\": false},\":shrug_tone5:\":{\"unicode\":[\"1f937-1f3ff\"],\"fname\":\"1f937-1f3ff\",\"uc\":\"1f937-1f3ff\",\"isCanonical\": true},\":shrug_tone4:\":{\"unicode\":[\"1f937-1f3fe\"],\"fname\":\"1f937-1f3fe\",\"uc\":\"1f937-1f3fe\",\"isCanonical\": true},\":shrug_tone3:\":{\"unicode\":[\"1f937-1f3fd\"],\"fname\":\"1f937-1f3fd\",\"uc\":\"1f937-1f3fd\",\"isCanonical\": true},\":shrug_tone2:\":{\"unicode\":[\"1f937-1f3fc\"],\"fname\":\"1f937-1f3fc\",\"uc\":\"1f937-1f3fc\",\"isCanonical\": true},\":shrug_tone1:\":{\"unicode\":[\"1f937-1f3fb\"],\"fname\":\"1f937-1f3fb\",\"uc\":\"1f937-1f3fb\",\"isCanonical\": true},\":mrs_claus_tone5:\":{\"unicode\":[\"1f936-1f3ff\"],\"fname\":\"1f936-1f3ff\",\"uc\":\"1f936-1f3ff\",\"isCanonical\": true},\":mother_christmas_tone5:\":{\"unicode\":[\"1f936-1f3ff\"],\"fname\":\"1f936-1f3ff\",\"uc\":\"1f936-1f3ff\",\"isCanonical\": false},\":mrs_claus_tone4:\":{\"unicode\":[\"1f936-1f3fe\"],\"fname\":\"1f936-1f3fe\",\"uc\":\"1f936-1f3fe\",\"isCanonical\": true},\":mother_christmas_tone4:\":{\"unicode\":[\"1f936-1f3fe\"],\"fname\":\"1f936-1f3fe\",\"uc\":\"1f936-1f3fe\",\"isCanonical\": false},\":mrs_claus_tone3:\":{\"unicode\":[\"1f936-1f3fd\"],\"fname\":\"1f936-1f3fd\",\"uc\":\"1f936-1f3fd\",\"isCanonical\": true},\":mother_christmas_tone3:\":{\"unicode\":[\"1f936-1f3fd\"],\"fname\":\"1f936-1f3fd\",\"uc\":\"1f936-1f3fd\",\"isCanonical\": false},\":mrs_claus_tone2:\":{\"unicode\":[\"1f936-1f3fc\"],\"fname\":\"1f936-1f3fc\",\"uc\":\"1f936-1f3fc\",\"isCanonical\": true},\":mother_christmas_tone2:\":{\"unicode\":[\"1f936-1f3fc\"],\"fname\":\"1f936-1f3fc\",\"uc\":\"1f936-1f3fc\",\"isCanonical\": false},\":mrs_claus_tone1:\":{\"unicode\":[\"1f936-1f3fb\"],\"fname\":\"1f936-1f3fb\",\"uc\":\"1f936-1f3fb\",\"isCanonical\": true},\":mother_christmas_tone1:\":{\"unicode\":[\"1f936-1f3fb\"],\"fname\":\"1f936-1f3fb\",\"uc\":\"1f936-1f3fb\",\"isCanonical\": false},\":man_in_tuxedo_tone5:\":{\"unicode\":[\"1f935-1f3ff\"],\"fname\":\"1f935-1f3ff\",\"uc\":\"1f935-1f3ff\",\"isCanonical\": true},\":tuxedo_tone5:\":{\"unicode\":[\"1f935-1f3ff\"],\"fname\":\"1f935-1f3ff\",\"uc\":\"1f935-1f3ff\",\"isCanonical\": false},\":man_in_tuxedo_tone4:\":{\"unicode\":[\"1f935-1f3fe\"],\"fname\":\"1f935-1f3fe\",\"uc\":\"1f935-1f3fe\",\"isCanonical\": true},\":tuxedo_tone4:\":{\"unicode\":[\"1f935-1f3fe\"],\"fname\":\"1f935-1f3fe\",\"uc\":\"1f935-1f3fe\",\"isCanonical\": false},\":man_in_tuxedo_tone3:\":{\"unicode\":[\"1f935-1f3fd\"],\"fname\":\"1f935-1f3fd\",\"uc\":\"1f935-1f3fd\",\"isCanonical\": true},\":tuxedo_tone3:\":{\"unicode\":[\"1f935-1f3fd\"],\"fname\":\"1f935-1f3fd\",\"uc\":\"1f935-1f3fd\",\"isCanonical\": false},\":man_in_tuxedo_tone2:\":{\"unicode\":[\"1f935-1f3fc\"],\"fname\":\"1f935-1f3fc\",\"uc\":\"1f935-1f3fc\",\"isCanonical\": true},\":tuxedo_tone2:\":{\"unicode\":[\"1f935-1f3fc\"],\"fname\":\"1f935-1f3fc\",\"uc\":\"1f935-1f3fc\",\"isCanonical\": false},\":man_in_tuxedo_tone1:\":{\"unicode\":[\"1f935-1f3fb\"],\"fname\":\"1f935-1f3fb\",\"uc\":\"1f935-1f3fb\",\"isCanonical\": true},\":tuxedo_tone1:\":{\"unicode\":[\"1f935-1f3fb\"],\"fname\":\"1f935-1f3fb\",\"uc\":\"1f935-1f3fb\",\"isCanonical\": false},\":prince_tone5:\":{\"unicode\":[\"1f934-1f3ff\"],\"fname\":\"1f934-1f3ff\",\"uc\":\"1f934-1f3ff\",\"isCanonical\": true},\":prince_tone4:\":{\"unicode\":[\"1f934-1f3fe\"],\"fname\":\"1f934-1f3fe\",\"uc\":\"1f934-1f3fe\",\"isCanonical\": true},\":prince_tone3:\":{\"unicode\":[\"1f934-1f3fd\"],\"fname\":\"1f934-1f3fd\",\"uc\":\"1f934-1f3fd\",\"isCanonical\": true},\":prince_tone2:\":{\"unicode\":[\"1f934-1f3fc\"],\"fname\":\"1f934-1f3fc\",\"uc\":\"1f934-1f3fc\",\"isCanonical\": true},\":prince_tone1:\":{\"unicode\":[\"1f934-1f3fb\"],\"fname\":\"1f934-1f3fb\",\"uc\":\"1f934-1f3fb\",\"isCanonical\": true},\":selfie_tone5:\":{\"unicode\":[\"1f933-1f3ff\"],\"fname\":\"1f933-1f3ff\",\"uc\":\"1f933-1f3ff\",\"isCanonical\": true},\":selfie_tone4:\":{\"unicode\":[\"1f933-1f3fe\"],\"fname\":\"1f933-1f3fe\",\"uc\":\"1f933-1f3fe\",\"isCanonical\": true},\":selfie_tone3:\":{\"unicode\":[\"1f933-1f3fd\"],\"fname\":\"1f933-1f3fd\",\"uc\":\"1f933-1f3fd\",\"isCanonical\": true},\":selfie_tone2:\":{\"unicode\":[\"1f933-1f3fc\"],\"fname\":\"1f933-1f3fc\",\"uc\":\"1f933-1f3fc\",\"isCanonical\": true},\":selfie_tone1:\":{\"unicode\":[\"1f933-1f3fb\"],\"fname\":\"1f933-1f3fb\",\"uc\":\"1f933-1f3fb\",\"isCanonical\": true},\":pregnant_woman_tone5:\":{\"unicode\":[\"1f930-1f3ff\"],\"fname\":\"1f930-1f3ff\",\"uc\":\"1f930-1f3ff\",\"isCanonical\": true},\":expecting_woman_tone5:\":{\"unicode\":[\"1f930-1f3ff\"],\"fname\":\"1f930-1f3ff\",\"uc\":\"1f930-1f3ff\",\"isCanonical\": false},\":pregnant_woman_tone4:\":{\"unicode\":[\"1f930-1f3fe\"],\"fname\":\"1f930-1f3fe\",\"uc\":\"1f930-1f3fe\",\"isCanonical\": true},\":expecting_woman_tone4:\":{\"unicode\":[\"1f930-1f3fe\"],\"fname\":\"1f930-1f3fe\",\"uc\":\"1f930-1f3fe\",\"isCanonical\": false},\":pregnant_woman_tone3:\":{\"unicode\":[\"1f930-1f3fd\"],\"fname\":\"1f930-1f3fd\",\"uc\":\"1f930-1f3fd\",\"isCanonical\": true},\":expecting_woman_tone3:\":{\"unicode\":[\"1f930-1f3fd\"],\"fname\":\"1f930-1f3fd\",\"uc\":\"1f930-1f3fd\",\"isCanonical\": false},\":pregnant_woman_tone2:\":{\"unicode\":[\"1f930-1f3fc\"],\"fname\":\"1f930-1f3fc\",\"uc\":\"1f930-1f3fc\",\"isCanonical\": true},\":expecting_woman_tone2:\":{\"unicode\":[\"1f930-1f3fc\"],\"fname\":\"1f930-1f3fc\",\"uc\":\"1f930-1f3fc\",\"isCanonical\": false},\":pregnant_woman_tone1:\":{\"unicode\":[\"1f930-1f3fb\"],\"fname\":\"1f930-1f3fb\",\"uc\":\"1f930-1f3fb\",\"isCanonical\": true},\":expecting_woman_tone1:\":{\"unicode\":[\"1f930-1f3fb\"],\"fname\":\"1f930-1f3fb\",\"uc\":\"1f930-1f3fb\",\"isCanonical\": false},\":face_palm_tone5:\":{\"unicode\":[\"1f926-1f3ff\"],\"fname\":\"1f926-1f3ff\",\"uc\":\"1f926-1f3ff\",\"isCanonical\": true},\":facepalm_tone5:\":{\"unicode\":[\"1f926-1f3ff\"],\"fname\":\"1f926-1f3ff\",\"uc\":\"1f926-1f3ff\",\"isCanonical\": false},\":face_palm_tone4:\":{\"unicode\":[\"1f926-1f3fe\"],\"fname\":\"1f926-1f3fe\",\"uc\":\"1f926-1f3fe\",\"isCanonical\": true},\":facepalm_tone4:\":{\"unicode\":[\"1f926-1f3fe\"],\"fname\":\"1f926-1f3fe\",\"uc\":\"1f926-1f3fe\",\"isCanonical\": false},\":face_palm_tone3:\":{\"unicode\":[\"1f926-1f3fd\"],\"fname\":\"1f926-1f3fd\",\"uc\":\"1f926-1f3fd\",\"isCanonical\": true},\":facepalm_tone3:\":{\"unicode\":[\"1f926-1f3fd\"],\"fname\":\"1f926-1f3fd\",\"uc\":\"1f926-1f3fd\",\"isCanonical\": false},\":face_palm_tone2:\":{\"unicode\":[\"1f926-1f3fc\"],\"fname\":\"1f926-1f3fc\",\"uc\":\"1f926-1f3fc\",\"isCanonical\": true},\":facepalm_tone2:\":{\"unicode\":[\"1f926-1f3fc\"],\"fname\":\"1f926-1f3fc\",\"uc\":\"1f926-1f3fc\",\"isCanonical\": false},\":face_palm_tone1:\":{\"unicode\":[\"1f926-1f3fb\"],\"fname\":\"1f926-1f3fb\",\"uc\":\"1f926-1f3fb\",\"isCanonical\": true},\":facepalm_tone1:\":{\"unicode\":[\"1f926-1f3fb\"],\"fname\":\"1f926-1f3fb\",\"uc\":\"1f926-1f3fb\",\"isCanonical\": false},\":fingers_crossed_tone5:\":{\"unicode\":[\"1f91e-1f3ff\"],\"fname\":\"1f91e-1f3ff\",\"uc\":\"1f91e-1f3ff\",\"isCanonical\": true},\":hand_with_index_and_middle_fingers_crossed_tone5:\":{\"unicode\":[\"1f91e-1f3ff\"],\"fname\":\"1f91e-1f3ff\",\"uc\":\"1f91e-1f3ff\",\"isCanonical\": false},\":fingers_crossed_tone4:\":{\"unicode\":[\"1f91e-1f3fe\"],\"fname\":\"1f91e-1f3fe\",\"uc\":\"1f91e-1f3fe\",\"isCanonical\": true},\":hand_with_index_and_middle_fingers_crossed_tone4:\":{\"unicode\":[\"1f91e-1f3fe\"],\"fname\":\"1f91e-1f3fe\",\"uc\":\"1f91e-1f3fe\",\"isCanonical\": false},\":fingers_crossed_tone3:\":{\"unicode\":[\"1f91e-1f3fd\"],\"fname\":\"1f91e-1f3fd\",\"uc\":\"1f91e-1f3fd\",\"isCanonical\": true},\":hand_with_index_and_middle_fingers_crossed_tone3:\":{\"unicode\":[\"1f91e-1f3fd\"],\"fname\":\"1f91e-1f3fd\",\"uc\":\"1f91e-1f3fd\",\"isCanonical\": false},\":fingers_crossed_tone2:\":{\"unicode\":[\"1f91e-1f3fc\"],\"fname\":\"1f91e-1f3fc\",\"uc\":\"1f91e-1f3fc\",\"isCanonical\": true},\":hand_with_index_and_middle_fingers_crossed_tone2:\":{\"unicode\":[\"1f91e-1f3fc\"],\"fname\":\"1f91e-1f3fc\",\"uc\":\"1f91e-1f3fc\",\"isCanonical\": false},\":fingers_crossed_tone1:\":{\"unicode\":[\"1f91e-1f3fb\"],\"fname\":\"1f91e-1f3fb\",\"uc\":\"1f91e-1f3fb\",\"isCanonical\": true},\":hand_with_index_and_middle_fingers_crossed_tone1:\":{\"unicode\":[\"1f91e-1f3fb\"],\"fname\":\"1f91e-1f3fb\",\"uc\":\"1f91e-1f3fb\",\"isCanonical\": false},\":handshake_tone5:\":{\"unicode\":[\"1f91d-1f3ff\"],\"fname\":\"1f91d-1f3ff\",\"uc\":\"1f91d-1f3ff\",\"isCanonical\": true},\":shaking_hands_tone5:\":{\"unicode\":[\"1f91d-1f3ff\"],\"fname\":\"1f91d-1f3ff\",\"uc\":\"1f91d-1f3ff\",\"isCanonical\": false},\":handshake_tone4:\":{\"unicode\":[\"1f91d-1f3fe\"],\"fname\":\"1f91d-1f3fe\",\"uc\":\"1f91d-1f3fe\",\"isCanonical\": true},\":shaking_hands_tone4:\":{\"unicode\":[\"1f91d-1f3fe\"],\"fname\":\"1f91d-1f3fe\",\"uc\":\"1f91d-1f3fe\",\"isCanonical\": false},\":handshake_tone3:\":{\"unicode\":[\"1f91d-1f3fd\"],\"fname\":\"1f91d-1f3fd\",\"uc\":\"1f91d-1f3fd\",\"isCanonical\": true},\":shaking_hands_tone3:\":{\"unicode\":[\"1f91d-1f3fd\"],\"fname\":\"1f91d-1f3fd\",\"uc\":\"1f91d-1f3fd\",\"isCanonical\": false},\":handshake_tone2:\":{\"unicode\":[\"1f91d-1f3fc\"],\"fname\":\"1f91d-1f3fc\",\"uc\":\"1f91d-1f3fc\",\"isCanonical\": true},\":shaking_hands_tone2:\":{\"unicode\":[\"1f91d-1f3fc\"],\"fname\":\"1f91d-1f3fc\",\"uc\":\"1f91d-1f3fc\",\"isCanonical\": false},\":handshake_tone1:\":{\"unicode\":[\"1f91d-1f3fb\"],\"fname\":\"1f91d-1f3fb\",\"uc\":\"1f91d-1f3fb\",\"isCanonical\": true},\":shaking_hands_tone1:\":{\"unicode\":[\"1f91d-1f3fb\"],\"fname\":\"1f91d-1f3fb\",\"uc\":\"1f91d-1f3fb\",\"isCanonical\": false},\":right_facing_fist_tone5:\":{\"unicode\":[\"1f91c-1f3ff\"],\"fname\":\"1f91c-1f3ff\",\"uc\":\"1f91c-1f3ff\",\"isCanonical\": true},\":right_fist_tone5:\":{\"unicode\":[\"1f91c-1f3ff\"],\"fname\":\"1f91c-1f3ff\",\"uc\":\"1f91c-1f3ff\",\"isCanonical\": false},\":right_facing_fist_tone4:\":{\"unicode\":[\"1f91c-1f3fe\"],\"fname\":\"1f91c-1f3fe\",\"uc\":\"1f91c-1f3fe\",\"isCanonical\": true},\":right_fist_tone4:\":{\"unicode\":[\"1f91c-1f3fe\"],\"fname\":\"1f91c-1f3fe\",\"uc\":\"1f91c-1f3fe\",\"isCanonical\": false},\":right_facing_fist_tone3:\":{\"unicode\":[\"1f91c-1f3fd\"],\"fname\":\"1f91c-1f3fd\",\"uc\":\"1f91c-1f3fd\",\"isCanonical\": true},\":right_fist_tone3:\":{\"unicode\":[\"1f91c-1f3fd\"],\"fname\":\"1f91c-1f3fd\",\"uc\":\"1f91c-1f3fd\",\"isCanonical\": false},\":right_facing_fist_tone2:\":{\"unicode\":[\"1f91c-1f3fc\"],\"fname\":\"1f91c-1f3fc\",\"uc\":\"1f91c-1f3fc\",\"isCanonical\": true},\":right_fist_tone2:\":{\"unicode\":[\"1f91c-1f3fc\"],\"fname\":\"1f91c-1f3fc\",\"uc\":\"1f91c-1f3fc\",\"isCanonical\": false},\":right_facing_fist_tone1:\":{\"unicode\":[\"1f91c-1f3fb\"],\"fname\":\"1f91c-1f3fb\",\"uc\":\"1f91c-1f3fb\",\"isCanonical\": true},\":right_fist_tone1:\":{\"unicode\":[\"1f91c-1f3fb\"],\"fname\":\"1f91c-1f3fb\",\"uc\":\"1f91c-1f3fb\",\"isCanonical\": false},\":left_facing_fist_tone5:\":{\"unicode\":[\"1f91b-1f3ff\"],\"fname\":\"1f91b-1f3ff\",\"uc\":\"1f91b-1f3ff\",\"isCanonical\": true},\":left_fist_tone5:\":{\"unicode\":[\"1f91b-1f3ff\"],\"fname\":\"1f91b-1f3ff\",\"uc\":\"1f91b-1f3ff\",\"isCanonical\": false},\":left_facing_fist_tone4:\":{\"unicode\":[\"1f91b-1f3fe\"],\"fname\":\"1f91b-1f3fe\",\"uc\":\"1f91b-1f3fe\",\"isCanonical\": true},\":left_fist_tone4:\":{\"unicode\":[\"1f91b-1f3fe\"],\"fname\":\"1f91b-1f3fe\",\"uc\":\"1f91b-1f3fe\",\"isCanonical\": false},\":left_facing_fist_tone3:\":{\"unicode\":[\"1f91b-1f3fd\"],\"fname\":\"1f91b-1f3fd\",\"uc\":\"1f91b-1f3fd\",\"isCanonical\": true},\":left_fist_tone3:\":{\"unicode\":[\"1f91b-1f3fd\"],\"fname\":\"1f91b-1f3fd\",\"uc\":\"1f91b-1f3fd\",\"isCanonical\": false},\":left_facing_fist_tone2:\":{\"unicode\":[\"1f91b-1f3fc\"],\"fname\":\"1f91b-1f3fc\",\"uc\":\"1f91b-1f3fc\",\"isCanonical\": true},\":left_fist_tone2:\":{\"unicode\":[\"1f91b-1f3fc\"],\"fname\":\"1f91b-1f3fc\",\"uc\":\"1f91b-1f3fc\",\"isCanonical\": false},\":left_facing_fist_tone1:\":{\"unicode\":[\"1f91b-1f3fb\"],\"fname\":\"1f91b-1f3fb\",\"uc\":\"1f91b-1f3fb\",\"isCanonical\": true},\":left_fist_tone1:\":{\"unicode\":[\"1f91b-1f3fb\"],\"fname\":\"1f91b-1f3fb\",\"uc\":\"1f91b-1f3fb\",\"isCanonical\": false},\":raised_back_of_hand_tone5:\":{\"unicode\":[\"1f91a-1f3ff\"],\"fname\":\"1f91a-1f3ff\",\"uc\":\"1f91a-1f3ff\",\"isCanonical\": true},\":back_of_hand_tone5:\":{\"unicode\":[\"1f91a-1f3ff\"],\"fname\":\"1f91a-1f3ff\",\"uc\":\"1f91a-1f3ff\",\"isCanonical\": false},\":raised_back_of_hand_tone4:\":{\"unicode\":[\"1f91a-1f3fe\"],\"fname\":\"1f91a-1f3fe\",\"uc\":\"1f91a-1f3fe\",\"isCanonical\": true},\":back_of_hand_tone4:\":{\"unicode\":[\"1f91a-1f3fe\"],\"fname\":\"1f91a-1f3fe\",\"uc\":\"1f91a-1f3fe\",\"isCanonical\": false},\":raised_back_of_hand_tone3:\":{\"unicode\":[\"1f91a-1f3fd\"],\"fname\":\"1f91a-1f3fd\",\"uc\":\"1f91a-1f3fd\",\"isCanonical\": true},\":back_of_hand_tone3:\":{\"unicode\":[\"1f91a-1f3fd\"],\"fname\":\"1f91a-1f3fd\",\"uc\":\"1f91a-1f3fd\",\"isCanonical\": false},\":raised_back_of_hand_tone2:\":{\"unicode\":[\"1f91a-1f3fc\"],\"fname\":\"1f91a-1f3fc\",\"uc\":\"1f91a-1f3fc\",\"isCanonical\": true},\":back_of_hand_tone2:\":{\"unicode\":[\"1f91a-1f3fc\"],\"fname\":\"1f91a-1f3fc\",\"uc\":\"1f91a-1f3fc\",\"isCanonical\": false},\":raised_back_of_hand_tone1:\":{\"unicode\":[\"1f91a-1f3fb\"],\"fname\":\"1f91a-1f3fb\",\"uc\":\"1f91a-1f3fb\",\"isCanonical\": true},\":back_of_hand_tone1:\":{\"unicode\":[\"1f91a-1f3fb\"],\"fname\":\"1f91a-1f3fb\",\"uc\":\"1f91a-1f3fb\",\"isCanonical\": false},\":call_me_tone5:\":{\"unicode\":[\"1f919-1f3ff\"],\"fname\":\"1f919-1f3ff\",\"uc\":\"1f919-1f3ff\",\"isCanonical\": true},\":call_me_hand_tone5:\":{\"unicode\":[\"1f919-1f3ff\"],\"fname\":\"1f919-1f3ff\",\"uc\":\"1f919-1f3ff\",\"isCanonical\": false},\":call_me_tone4:\":{\"unicode\":[\"1f919-1f3fe\"],\"fname\":\"1f919-1f3fe\",\"uc\":\"1f919-1f3fe\",\"isCanonical\": true},\":call_me_hand_tone4:\":{\"unicode\":[\"1f919-1f3fe\"],\"fname\":\"1f919-1f3fe\",\"uc\":\"1f919-1f3fe\",\"isCanonical\": false},\":call_me_tone3:\":{\"unicode\":[\"1f919-1f3fd\"],\"fname\":\"1f919-1f3fd\",\"uc\":\"1f919-1f3fd\",\"isCanonical\": true},\":call_me_hand_tone3:\":{\"unicode\":[\"1f919-1f3fd\"],\"fname\":\"1f919-1f3fd\",\"uc\":\"1f919-1f3fd\",\"isCanonical\": false},\":call_me_tone2:\":{\"unicode\":[\"1f919-1f3fc\"],\"fname\":\"1f919-1f3fc\",\"uc\":\"1f919-1f3fc\",\"isCanonical\": true},\":call_me_hand_tone2:\":{\"unicode\":[\"1f919-1f3fc\"],\"fname\":\"1f919-1f3fc\",\"uc\":\"1f919-1f3fc\",\"isCanonical\": false},\":call_me_tone1:\":{\"unicode\":[\"1f919-1f3fb\"],\"fname\":\"1f919-1f3fb\",\"uc\":\"1f919-1f3fb\",\"isCanonical\": true},\":call_me_hand_tone1:\":{\"unicode\":[\"1f919-1f3fb\"],\"fname\":\"1f919-1f3fb\",\"uc\":\"1f919-1f3fb\",\"isCanonical\": false},\":metal_tone5:\":{\"unicode\":[\"1f918-1f3ff\"],\"fname\":\"1f918-1f3ff\",\"uc\":\"1f918-1f3ff\",\"isCanonical\": true},\":sign_of_the_horns_tone5:\":{\"unicode\":[\"1f918-1f3ff\"],\"fname\":\"1f918-1f3ff\",\"uc\":\"1f918-1f3ff\",\"isCanonical\": false},\":metal_tone4:\":{\"unicode\":[\"1f918-1f3fe\"],\"fname\":\"1f918-1f3fe\",\"uc\":\"1f918-1f3fe\",\"isCanonical\": true},\":sign_of_the_horns_tone4:\":{\"unicode\":[\"1f918-1f3fe\"],\"fname\":\"1f918-1f3fe\",\"uc\":\"1f918-1f3fe\",\"isCanonical\": false},\":metal_tone3:\":{\"unicode\":[\"1f918-1f3fd\"],\"fname\":\"1f918-1f3fd\",\"uc\":\"1f918-1f3fd\",\"isCanonical\": true},\":sign_of_the_horns_tone3:\":{\"unicode\":[\"1f918-1f3fd\"],\"fname\":\"1f918-1f3fd\",\"uc\":\"1f918-1f3fd\",\"isCanonical\": false},\":metal_tone2:\":{\"unicode\":[\"1f918-1f3fc\"],\"fname\":\"1f918-1f3fc\",\"uc\":\"1f918-1f3fc\",\"isCanonical\": true},\":sign_of_the_horns_tone2:\":{\"unicode\":[\"1f918-1f3fc\"],\"fname\":\"1f918-1f3fc\",\"uc\":\"1f918-1f3fc\",\"isCanonical\": false},\":metal_tone1:\":{\"unicode\":[\"1f918-1f3fb\"],\"fname\":\"1f918-1f3fb\",\"uc\":\"1f918-1f3fb\",\"isCanonical\": true},\":sign_of_the_horns_tone1:\":{\"unicode\":[\"1f918-1f3fb\"],\"fname\":\"1f918-1f3fb\",\"uc\":\"1f918-1f3fb\",\"isCanonical\": false},\":bath_tone5:\":{\"unicode\":[\"1f6c0-1f3ff\"],\"fname\":\"1f6c0-1f3ff\",\"uc\":\"1f6c0-1f3ff\",\"isCanonical\": true},\":bath_tone4:\":{\"unicode\":[\"1f6c0-1f3fe\"],\"fname\":\"1f6c0-1f3fe\",\"uc\":\"1f6c0-1f3fe\",\"isCanonical\": true},\":bath_tone3:\":{\"unicode\":[\"1f6c0-1f3fd\"],\"fname\":\"1f6c0-1f3fd\",\"uc\":\"1f6c0-1f3fd\",\"isCanonical\": true},\":bath_tone2:\":{\"unicode\":[\"1f6c0-1f3fc\"],\"fname\":\"1f6c0-1f3fc\",\"uc\":\"1f6c0-1f3fc\",\"isCanonical\": true},\":bath_tone1:\":{\"unicode\":[\"1f6c0-1f3fb\"],\"fname\":\"1f6c0-1f3fb\",\"uc\":\"1f6c0-1f3fb\",\"isCanonical\": true},\":walking_tone5:\":{\"unicode\":[\"1f6b6-1f3ff\"],\"fname\":\"1f6b6-1f3ff\",\"uc\":\"1f6b6-1f3ff\",\"isCanonical\": true},\":walking_tone4:\":{\"unicode\":[\"1f6b6-1f3fe\"],\"fname\":\"1f6b6-1f3fe\",\"uc\":\"1f6b6-1f3fe\",\"isCanonical\": true},\":walking_tone3:\":{\"unicode\":[\"1f6b6-1f3fd\"],\"fname\":\"1f6b6-1f3fd\",\"uc\":\"1f6b6-1f3fd\",\"isCanonical\": true},\":walking_tone2:\":{\"unicode\":[\"1f6b6-1f3fc\"],\"fname\":\"1f6b6-1f3fc\",\"uc\":\"1f6b6-1f3fc\",\"isCanonical\": true},\":walking_tone1:\":{\"unicode\":[\"1f6b6-1f3fb\"],\"fname\":\"1f6b6-1f3fb\",\"uc\":\"1f6b6-1f3fb\",\"isCanonical\": true},\":mountain_bicyclist_tone5:\":{\"unicode\":[\"1f6b5-1f3ff\"],\"fname\":\"1f6b5-1f3ff\",\"uc\":\"1f6b5-1f3ff\",\"isCanonical\": true},\":mountain_bicyclist_tone4:\":{\"unicode\":[\"1f6b5-1f3fe\"],\"fname\":\"1f6b5-1f3fe\",\"uc\":\"1f6b5-1f3fe\",\"isCanonical\": true},\":mountain_bicyclist_tone3:\":{\"unicode\":[\"1f6b5-1f3fd\"],\"fname\":\"1f6b5-1f3fd\",\"uc\":\"1f6b5-1f3fd\",\"isCanonical\": true},\":mountain_bicyclist_tone2:\":{\"unicode\":[\"1f6b5-1f3fc\"],\"fname\":\"1f6b5-1f3fc\",\"uc\":\"1f6b5-1f3fc\",\"isCanonical\": true},\":mountain_bicyclist_tone1:\":{\"unicode\":[\"1f6b5-1f3fb\"],\"fname\":\"1f6b5-1f3fb\",\"uc\":\"1f6b5-1f3fb\",\"isCanonical\": true},\":bicyclist_tone5:\":{\"unicode\":[\"1f6b4-1f3ff\"],\"fname\":\"1f6b4-1f3ff\",\"uc\":\"1f6b4-1f3ff\",\"isCanonical\": true},\":bicyclist_tone4:\":{\"unicode\":[\"1f6b4-1f3fe\"],\"fname\":\"1f6b4-1f3fe\",\"uc\":\"1f6b4-1f3fe\",\"isCanonical\": true},\":bicyclist_tone3:\":{\"unicode\":[\"1f6b4-1f3fd\"],\"fname\":\"1f6b4-1f3fd\",\"uc\":\"1f6b4-1f3fd\",\"isCanonical\": true},\":bicyclist_tone2:\":{\"unicode\":[\"1f6b4-1f3fc\"],\"fname\":\"1f6b4-1f3fc\",\"uc\":\"1f6b4-1f3fc\",\"isCanonical\": true},\":bicyclist_tone1:\":{\"unicode\":[\"1f6b4-1f3fb\"],\"fname\":\"1f6b4-1f3fb\",\"uc\":\"1f6b4-1f3fb\",\"isCanonical\": true},\":rowboat_tone5:\":{\"unicode\":[\"1f6a3-1f3ff\"],\"fname\":\"1f6a3-1f3ff\",\"uc\":\"1f6a3-1f3ff\",\"isCanonical\": true},\":rowboat_tone4:\":{\"unicode\":[\"1f6a3-1f3fe\"],\"fname\":\"1f6a3-1f3fe\",\"uc\":\"1f6a3-1f3fe\",\"isCanonical\": true},\":rowboat_tone3:\":{\"unicode\":[\"1f6a3-1f3fd\"],\"fname\":\"1f6a3-1f3fd\",\"uc\":\"1f6a3-1f3fd\",\"isCanonical\": true},\":rowboat_tone2:\":{\"unicode\":[\"1f6a3-1f3fc\"],\"fname\":\"1f6a3-1f3fc\",\"uc\":\"1f6a3-1f3fc\",\"isCanonical\": true},\":rowboat_tone1:\":{\"unicode\":[\"1f6a3-1f3fb\"],\"fname\":\"1f6a3-1f3fb\",\"uc\":\"1f6a3-1f3fb\",\"isCanonical\": true},\":pray_tone5:\":{\"unicode\":[\"1f64f-1f3ff\"],\"fname\":\"1f64f-1f3ff\",\"uc\":\"1f64f-1f3ff\",\"isCanonical\": true},\":pray_tone4:\":{\"unicode\":[\"1f64f-1f3fe\"],\"fname\":\"1f64f-1f3fe\",\"uc\":\"1f64f-1f3fe\",\"isCanonical\": true},\":pray_tone3:\":{\"unicode\":[\"1f64f-1f3fd\"],\"fname\":\"1f64f-1f3fd\",\"uc\":\"1f64f-1f3fd\",\"isCanonical\": true},\":pray_tone2:\":{\"unicode\":[\"1f64f-1f3fc\"],\"fname\":\"1f64f-1f3fc\",\"uc\":\"1f64f-1f3fc\",\"isCanonical\": true},\":pray_tone1:\":{\"unicode\":[\"1f64f-1f3fb\"],\"fname\":\"1f64f-1f3fb\",\"uc\":\"1f64f-1f3fb\",\"isCanonical\": true},\":person_with_pouting_face_tone5:\":{\"unicode\":[\"1f64e-1f3ff\"],\"fname\":\"1f64e-1f3ff\",\"uc\":\"1f64e-1f3ff\",\"isCanonical\": true},\":person_with_pouting_face_tone4:\":{\"unicode\":[\"1f64e-1f3fe\"],\"fname\":\"1f64e-1f3fe\",\"uc\":\"1f64e-1f3fe\",\"isCanonical\": true},\":person_with_pouting_face_tone3:\":{\"unicode\":[\"1f64e-1f3fd\"],\"fname\":\"1f64e-1f3fd\",\"uc\":\"1f64e-1f3fd\",\"isCanonical\": true},\":person_with_pouting_face_tone2:\":{\"unicode\":[\"1f64e-1f3fc\"],\"fname\":\"1f64e-1f3fc\",\"uc\":\"1f64e-1f3fc\",\"isCanonical\": true},\":person_with_pouting_face_tone1:\":{\"unicode\":[\"1f64e-1f3fb\"],\"fname\":\"1f64e-1f3fb\",\"uc\":\"1f64e-1f3fb\",\"isCanonical\": true},\":person_frowning_tone5:\":{\"unicode\":[\"1f64d-1f3ff\"],\"fname\":\"1f64d-1f3ff\",\"uc\":\"1f64d-1f3ff\",\"isCanonical\": true},\":person_frowning_tone4:\":{\"unicode\":[\"1f64d-1f3fe\"],\"fname\":\"1f64d-1f3fe\",\"uc\":\"1f64d-1f3fe\",\"isCanonical\": true},\":person_frowning_tone3:\":{\"unicode\":[\"1f64d-1f3fd\"],\"fname\":\"1f64d-1f3fd\",\"uc\":\"1f64d-1f3fd\",\"isCanonical\": true},\":person_frowning_tone2:\":{\"unicode\":[\"1f64d-1f3fc\"],\"fname\":\"1f64d-1f3fc\",\"uc\":\"1f64d-1f3fc\",\"isCanonical\": true},\":person_frowning_tone1:\":{\"unicode\":[\"1f64d-1f3fb\"],\"fname\":\"1f64d-1f3fb\",\"uc\":\"1f64d-1f3fb\",\"isCanonical\": true},\":raised_hands_tone5:\":{\"unicode\":[\"1f64c-1f3ff\"],\"fname\":\"1f64c-1f3ff\",\"uc\":\"1f64c-1f3ff\",\"isCanonical\": true},\":raised_hands_tone4:\":{\"unicode\":[\"1f64c-1f3fe\"],\"fname\":\"1f64c-1f3fe\",\"uc\":\"1f64c-1f3fe\",\"isCanonical\": true},\":raised_hands_tone3:\":{\"unicode\":[\"1f64c-1f3fd\"],\"fname\":\"1f64c-1f3fd\",\"uc\":\"1f64c-1f3fd\",\"isCanonical\": true},\":raised_hands_tone2:\":{\"unicode\":[\"1f64c-1f3fc\"],\"fname\":\"1f64c-1f3fc\",\"uc\":\"1f64c-1f3fc\",\"isCanonical\": true},\":raised_hands_tone1:\":{\"unicode\":[\"1f64c-1f3fb\"],\"fname\":\"1f64c-1f3fb\",\"uc\":\"1f64c-1f3fb\",\"isCanonical\": true},\":raising_hand_tone5:\":{\"unicode\":[\"1f64b-1f3ff\"],\"fname\":\"1f64b-1f3ff\",\"uc\":\"1f64b-1f3ff\",\"isCanonical\": true},\":raising_hand_tone4:\":{\"unicode\":[\"1f64b-1f3fe\"],\"fname\":\"1f64b-1f3fe\",\"uc\":\"1f64b-1f3fe\",\"isCanonical\": true},\":raising_hand_tone3:\":{\"unicode\":[\"1f64b-1f3fd\"],\"fname\":\"1f64b-1f3fd\",\"uc\":\"1f64b-1f3fd\",\"isCanonical\": true},\":raising_hand_tone2:\":{\"unicode\":[\"1f64b-1f3fc\"],\"fname\":\"1f64b-1f3fc\",\"uc\":\"1f64b-1f3fc\",\"isCanonical\": true},\":raising_hand_tone1:\":{\"unicode\":[\"1f64b-1f3fb\"],\"fname\":\"1f64b-1f3fb\",\"uc\":\"1f64b-1f3fb\",\"isCanonical\": true},\":bow_tone5:\":{\"unicode\":[\"1f647-1f3ff\"],\"fname\":\"1f647-1f3ff\",\"uc\":\"1f647-1f3ff\",\"isCanonical\": true},\":bow_tone4:\":{\"unicode\":[\"1f647-1f3fe\"],\"fname\":\"1f647-1f3fe\",\"uc\":\"1f647-1f3fe\",\"isCanonical\": true},\":bow_tone3:\":{\"unicode\":[\"1f647-1f3fd\"],\"fname\":\"1f647-1f3fd\",\"uc\":\"1f647-1f3fd\",\"isCanonical\": true},\":bow_tone2:\":{\"unicode\":[\"1f647-1f3fc\"],\"fname\":\"1f647-1f3fc\",\"uc\":\"1f647-1f3fc\",\"isCanonical\": true},\":bow_tone1:\":{\"unicode\":[\"1f647-1f3fb\"],\"fname\":\"1f647-1f3fb\",\"uc\":\"1f647-1f3fb\",\"isCanonical\": true},\":ok_woman_tone5:\":{\"unicode\":[\"1f646-1f3ff\"],\"fname\":\"1f646-1f3ff\",\"uc\":\"1f646-1f3ff\",\"isCanonical\": true},\":ok_woman_tone4:\":{\"unicode\":[\"1f646-1f3fe\"],\"fname\":\"1f646-1f3fe\",\"uc\":\"1f646-1f3fe\",\"isCanonical\": true},\":ok_woman_tone3:\":{\"unicode\":[\"1f646-1f3fd\"],\"fname\":\"1f646-1f3fd\",\"uc\":\"1f646-1f3fd\",\"isCanonical\": true},\":ok_woman_tone2:\":{\"unicode\":[\"1f646-1f3fc\"],\"fname\":\"1f646-1f3fc\",\"uc\":\"1f646-1f3fc\",\"isCanonical\": true},\":ok_woman_tone1:\":{\"unicode\":[\"1f646-1f3fb\"],\"fname\":\"1f646-1f3fb\",\"uc\":\"1f646-1f3fb\",\"isCanonical\": true},\":no_good_tone5:\":{\"unicode\":[\"1f645-1f3ff\"],\"fname\":\"1f645-1f3ff\",\"uc\":\"1f645-1f3ff\",\"isCanonical\": true},\":no_good_tone4:\":{\"unicode\":[\"1f645-1f3fe\"],\"fname\":\"1f645-1f3fe\",\"uc\":\"1f645-1f3fe\",\"isCanonical\": true},\":no_good_tone3:\":{\"unicode\":[\"1f645-1f3fd\"],\"fname\":\"1f645-1f3fd\",\"uc\":\"1f645-1f3fd\",\"isCanonical\": true},\":no_good_tone2:\":{\"unicode\":[\"1f645-1f3fc\"],\"fname\":\"1f645-1f3fc\",\"uc\":\"1f645-1f3fc\",\"isCanonical\": true},\":no_good_tone1:\":{\"unicode\":[\"1f645-1f3fb\"],\"fname\":\"1f645-1f3fb\",\"uc\":\"1f645-1f3fb\",\"isCanonical\": true},\":vulcan_tone5:\":{\"unicode\":[\"1f596-1f3ff\"],\"fname\":\"1f596-1f3ff\",\"uc\":\"1f596-1f3ff\",\"isCanonical\": true},\":raised_hand_with_part_between_middle_and_ring_fingers_tone5:\":{\"unicode\":[\"1f596-1f3ff\"],\"fname\":\"1f596-1f3ff\",\"uc\":\"1f596-1f3ff\",\"isCanonical\": false},\":vulcan_tone4:\":{\"unicode\":[\"1f596-1f3fe\"],\"fname\":\"1f596-1f3fe\",\"uc\":\"1f596-1f3fe\",\"isCanonical\": true},\":raised_hand_with_part_between_middle_and_ring_fingers_tone4:\":{\"unicode\":[\"1f596-1f3fe\"],\"fname\":\"1f596-1f3fe\",\"uc\":\"1f596-1f3fe\",\"isCanonical\": false},\":vulcan_tone3:\":{\"unicode\":[\"1f596-1f3fd\"],\"fname\":\"1f596-1f3fd\",\"uc\":\"1f596-1f3fd\",\"isCanonical\": true},\":raised_hand_with_part_between_middle_and_ring_fingers_tone3:\":{\"unicode\":[\"1f596-1f3fd\"],\"fname\":\"1f596-1f3fd\",\"uc\":\"1f596-1f3fd\",\"isCanonical\": false},\":vulcan_tone2:\":{\"unicode\":[\"1f596-1f3fc\"],\"fname\":\"1f596-1f3fc\",\"uc\":\"1f596-1f3fc\",\"isCanonical\": true},\":raised_hand_with_part_between_middle_and_ring_fingers_tone2:\":{\"unicode\":[\"1f596-1f3fc\"],\"fname\":\"1f596-1f3fc\",\"uc\":\"1f596-1f3fc\",\"isCanonical\": false},\":vulcan_tone1:\":{\"unicode\":[\"1f596-1f3fb\"],\"fname\":\"1f596-1f3fb\",\"uc\":\"1f596-1f3fb\",\"isCanonical\": true},\":raised_hand_with_part_between_middle_and_ring_fingers_tone1:\":{\"unicode\":[\"1f596-1f3fb\"],\"fname\":\"1f596-1f3fb\",\"uc\":\"1f596-1f3fb\",\"isCanonical\": false},\":middle_finger_tone5:\":{\"unicode\":[\"1f595-1f3ff\"],\"fname\":\"1f595-1f3ff\",\"uc\":\"1f595-1f3ff\",\"isCanonical\": true},\":reversed_hand_with_middle_finger_extended_tone5:\":{\"unicode\":[\"1f595-1f3ff\"],\"fname\":\"1f595-1f3ff\",\"uc\":\"1f595-1f3ff\",\"isCanonical\": false},\":middle_finger_tone4:\":{\"unicode\":[\"1f595-1f3fe\"],\"fname\":\"1f595-1f3fe\",\"uc\":\"1f595-1f3fe\",\"isCanonical\": true},\":reversed_hand_with_middle_finger_extended_tone4:\":{\"unicode\":[\"1f595-1f3fe\"],\"fname\":\"1f595-1f3fe\",\"uc\":\"1f595-1f3fe\",\"isCanonical\": false},\":middle_finger_tone3:\":{\"unicode\":[\"1f595-1f3fd\"],\"fname\":\"1f595-1f3fd\",\"uc\":\"1f595-1f3fd\",\"isCanonical\": true},\":reversed_hand_with_middle_finger_extended_tone3:\":{\"unicode\":[\"1f595-1f3fd\"],\"fname\":\"1f595-1f3fd\",\"uc\":\"1f595-1f3fd\",\"isCanonical\": false},\":middle_finger_tone2:\":{\"unicode\":[\"1f595-1f3fc\"],\"fname\":\"1f595-1f3fc\",\"uc\":\"1f595-1f3fc\",\"isCanonical\": true},\":reversed_hand_with_middle_finger_extended_tone2:\":{\"unicode\":[\"1f595-1f3fc\"],\"fname\":\"1f595-1f3fc\",\"uc\":\"1f595-1f3fc\",\"isCanonical\": false},\":middle_finger_tone1:\":{\"unicode\":[\"1f595-1f3fb\"],\"fname\":\"1f595-1f3fb\",\"uc\":\"1f595-1f3fb\",\"isCanonical\": true},\":reversed_hand_with_middle_finger_extended_tone1:\":{\"unicode\":[\"1f595-1f3fb\"],\"fname\":\"1f595-1f3fb\",\"uc\":\"1f595-1f3fb\",\"isCanonical\": false},\":hand_splayed_tone5:\":{\"unicode\":[\"1f590-1f3ff\"],\"fname\":\"1f590-1f3ff\",\"uc\":\"1f590-1f3ff\",\"isCanonical\": true},\":raised_hand_with_fingers_splayed_tone5:\":{\"unicode\":[\"1f590-1f3ff\"],\"fname\":\"1f590-1f3ff\",\"uc\":\"1f590-1f3ff\",\"isCanonical\": false},\":hand_splayed_tone4:\":{\"unicode\":[\"1f590-1f3fe\"],\"fname\":\"1f590-1f3fe\",\"uc\":\"1f590-1f3fe\",\"isCanonical\": true},\":raised_hand_with_fingers_splayed_tone4:\":{\"unicode\":[\"1f590-1f3fe\"],\"fname\":\"1f590-1f3fe\",\"uc\":\"1f590-1f3fe\",\"isCanonical\": false},\":hand_splayed_tone3:\":{\"unicode\":[\"1f590-1f3fd\"],\"fname\":\"1f590-1f3fd\",\"uc\":\"1f590-1f3fd\",\"isCanonical\": true},\":raised_hand_with_fingers_splayed_tone3:\":{\"unicode\":[\"1f590-1f3fd\"],\"fname\":\"1f590-1f3fd\",\"uc\":\"1f590-1f3fd\",\"isCanonical\": false},\":hand_splayed_tone2:\":{\"unicode\":[\"1f590-1f3fc\"],\"fname\":\"1f590-1f3fc\",\"uc\":\"1f590-1f3fc\",\"isCanonical\": true},\":raised_hand_with_fingers_splayed_tone2:\":{\"unicode\":[\"1f590-1f3fc\"],\"fname\":\"1f590-1f3fc\",\"uc\":\"1f590-1f3fc\",\"isCanonical\": false},\":hand_splayed_tone1:\":{\"unicode\":[\"1f590-1f3fb\"],\"fname\":\"1f590-1f3fb\",\"uc\":\"1f590-1f3fb\",\"isCanonical\": true},\":raised_hand_with_fingers_splayed_tone1:\":{\"unicode\":[\"1f590-1f3fb\"],\"fname\":\"1f590-1f3fb\",\"uc\":\"1f590-1f3fb\",\"isCanonical\": false},\":man_dancing_tone5:\":{\"unicode\":[\"1f57a-1f3ff\"],\"fname\":\"1f57a-1f3ff\",\"uc\":\"1f57a-1f3ff\",\"isCanonical\": true},\":male_dancer_tone5:\":{\"unicode\":[\"1f57a-1f3ff\"],\"fname\":\"1f57a-1f3ff\",\"uc\":\"1f57a-1f3ff\",\"isCanonical\": false},\":man_dancing_tone4:\":{\"unicode\":[\"1f57a-1f3fe\"],\"fname\":\"1f57a-1f3fe\",\"uc\":\"1f57a-1f3fe\",\"isCanonical\": true},\":male_dancer_tone4:\":{\"unicode\":[\"1f57a-1f3fe\"],\"fname\":\"1f57a-1f3fe\",\"uc\":\"1f57a-1f3fe\",\"isCanonical\": false},\":man_dancing_tone3:\":{\"unicode\":[\"1f57a-1f3fd\"],\"fname\":\"1f57a-1f3fd\",\"uc\":\"1f57a-1f3fd\",\"isCanonical\": true},\":male_dancer_tone3:\":{\"unicode\":[\"1f57a-1f3fd\"],\"fname\":\"1f57a-1f3fd\",\"uc\":\"1f57a-1f3fd\",\"isCanonical\": false},\":man_dancing_tone2:\":{\"unicode\":[\"1f57a-1f3fc\"],\"fname\":\"1f57a-1f3fc\",\"uc\":\"1f57a-1f3fc\",\"isCanonical\": true},\":male_dancer_tone2:\":{\"unicode\":[\"1f57a-1f3fc\"],\"fname\":\"1f57a-1f3fc\",\"uc\":\"1f57a-1f3fc\",\"isCanonical\": false},\":man_dancing_tone1:\":{\"unicode\":[\"1f57a-1f3fb\"],\"fname\":\"1f57a-1f3fb\",\"uc\":\"1f57a-1f3fb\",\"isCanonical\": true},\":male_dancer_tone1:\":{\"unicode\":[\"1f57a-1f3fb\"],\"fname\":\"1f57a-1f3fb\",\"uc\":\"1f57a-1f3fb\",\"isCanonical\": false},\":spy_tone5:\":{\"unicode\":[\"1f575-1f3ff\"],\"fname\":\"1f575-1f3ff\",\"uc\":\"1f575-1f3ff\",\"isCanonical\": true},\":sleuth_or_spy_tone5:\":{\"unicode\":[\"1f575-1f3ff\"],\"fname\":\"1f575-1f3ff\",\"uc\":\"1f575-1f3ff\",\"isCanonical\": false},\":spy_tone4:\":{\"unicode\":[\"1f575-1f3fe\"],\"fname\":\"1f575-1f3fe\",\"uc\":\"1f575-1f3fe\",\"isCanonical\": true},\":sleuth_or_spy_tone4:\":{\"unicode\":[\"1f575-1f3fe\"],\"fname\":\"1f575-1f3fe\",\"uc\":\"1f575-1f3fe\",\"isCanonical\": false},\":spy_tone3:\":{\"unicode\":[\"1f575-1f3fd\"],\"fname\":\"1f575-1f3fd\",\"uc\":\"1f575-1f3fd\",\"isCanonical\": true},\":sleuth_or_spy_tone3:\":{\"unicode\":[\"1f575-1f3fd\"],\"fname\":\"1f575-1f3fd\",\"uc\":\"1f575-1f3fd\",\"isCanonical\": false},\":spy_tone2:\":{\"unicode\":[\"1f575-1f3fc\"],\"fname\":\"1f575-1f3fc\",\"uc\":\"1f575-1f3fc\",\"isCanonical\": true},\":sleuth_or_spy_tone2:\":{\"unicode\":[\"1f575-1f3fc\"],\"fname\":\"1f575-1f3fc\",\"uc\":\"1f575-1f3fc\",\"isCanonical\": false},\":spy_tone1:\":{\"unicode\":[\"1f575-1f3fb\"],\"fname\":\"1f575-1f3fb\",\"uc\":\"1f575-1f3fb\",\"isCanonical\": true},\":sleuth_or_spy_tone1:\":{\"unicode\":[\"1f575-1f3fb\"],\"fname\":\"1f575-1f3fb\",\"uc\":\"1f575-1f3fb\",\"isCanonical\": false},\":muscle_tone5:\":{\"unicode\":[\"1f4aa-1f3ff\"],\"fname\":\"1f4aa-1f3ff\",\"uc\":\"1f4aa-1f3ff\",\"isCanonical\": true},\":muscle_tone4:\":{\"unicode\":[\"1f4aa-1f3fe\"],\"fname\":\"1f4aa-1f3fe\",\"uc\":\"1f4aa-1f3fe\",\"isCanonical\": true},\":muscle_tone3:\":{\"unicode\":[\"1f4aa-1f3fd\"],\"fname\":\"1f4aa-1f3fd\",\"uc\":\"1f4aa-1f3fd\",\"isCanonical\": true},\":muscle_tone2:\":{\"unicode\":[\"1f4aa-1f3fc\"],\"fname\":\"1f4aa-1f3fc\",\"uc\":\"1f4aa-1f3fc\",\"isCanonical\": true},\":muscle_tone1:\":{\"unicode\":[\"1f4aa-1f3fb\"],\"fname\":\"1f4aa-1f3fb\",\"uc\":\"1f4aa-1f3fb\",\"isCanonical\": true},\":haircut_tone5:\":{\"unicode\":[\"1f487-1f3ff\"],\"fname\":\"1f487-1f3ff\",\"uc\":\"1f487-1f3ff\",\"isCanonical\": true},\":haircut_tone4:\":{\"unicode\":[\"1f487-1f3fe\"],\"fname\":\"1f487-1f3fe\",\"uc\":\"1f487-1f3fe\",\"isCanonical\": true},\":haircut_tone3:\":{\"unicode\":[\"1f487-1f3fd\"],\"fname\":\"1f487-1f3fd\",\"uc\":\"1f487-1f3fd\",\"isCanonical\": true},\":haircut_tone2:\":{\"unicode\":[\"1f487-1f3fc\"],\"fname\":\"1f487-1f3fc\",\"uc\":\"1f487-1f3fc\",\"isCanonical\": true},\":haircut_tone1:\":{\"unicode\":[\"1f487-1f3fb\"],\"fname\":\"1f487-1f3fb\",\"uc\":\"1f487-1f3fb\",\"isCanonical\": true},\":massage_tone5:\":{\"unicode\":[\"1f486-1f3ff\"],\"fname\":\"1f486-1f3ff\",\"uc\":\"1f486-1f3ff\",\"isCanonical\": true},\":massage_tone4:\":{\"unicode\":[\"1f486-1f3fe\"],\"fname\":\"1f486-1f3fe\",\"uc\":\"1f486-1f3fe\",\"isCanonical\": true},\":massage_tone3:\":{\"unicode\":[\"1f486-1f3fd\"],\"fname\":\"1f486-1f3fd\",\"uc\":\"1f486-1f3fd\",\"isCanonical\": true},\":massage_tone2:\":{\"unicode\":[\"1f486-1f3fc\"],\"fname\":\"1f486-1f3fc\",\"uc\":\"1f486-1f3fc\",\"isCanonical\": true},\":massage_tone1:\":{\"unicode\":[\"1f486-1f3fb\"],\"fname\":\"1f486-1f3fb\",\"uc\":\"1f486-1f3fb\",\"isCanonical\": true},\":nail_care_tone5:\":{\"unicode\":[\"1f485-1f3ff\"],\"fname\":\"1f485-1f3ff\",\"uc\":\"1f485-1f3ff\",\"isCanonical\": true},\":nail_care_tone4:\":{\"unicode\":[\"1f485-1f3fe\"],\"fname\":\"1f485-1f3fe\",\"uc\":\"1f485-1f3fe\",\"isCanonical\": true},\":nail_care_tone3:\":{\"unicode\":[\"1f485-1f3fd\"],\"fname\":\"1f485-1f3fd\",\"uc\":\"1f485-1f3fd\",\"isCanonical\": true},\":nail_care_tone2:\":{\"unicode\":[\"1f485-1f3fc\"],\"fname\":\"1f485-1f3fc\",\"uc\":\"1f485-1f3fc\",\"isCanonical\": true},\":nail_care_tone1:\":{\"unicode\":[\"1f485-1f3fb\"],\"fname\":\"1f485-1f3fb\",\"uc\":\"1f485-1f3fb\",\"isCanonical\": true},\":dancer_tone5:\":{\"unicode\":[\"1f483-1f3ff\"],\"fname\":\"1f483-1f3ff\",\"uc\":\"1f483-1f3ff\",\"isCanonical\": true},\":dancer_tone4:\":{\"unicode\":[\"1f483-1f3fe\"],\"fname\":\"1f483-1f3fe\",\"uc\":\"1f483-1f3fe\",\"isCanonical\": true},\":dancer_tone3:\":{\"unicode\":[\"1f483-1f3fd\"],\"fname\":\"1f483-1f3fd\",\"uc\":\"1f483-1f3fd\",\"isCanonical\": true},\":dancer_tone2:\":{\"unicode\":[\"1f483-1f3fc\"],\"fname\":\"1f483-1f3fc\",\"uc\":\"1f483-1f3fc\",\"isCanonical\": true},\":dancer_tone1:\":{\"unicode\":[\"1f483-1f3fb\"],\"fname\":\"1f483-1f3fb\",\"uc\":\"1f483-1f3fb\",\"isCanonical\": true},\":guardsman_tone5:\":{\"unicode\":[\"1f482-1f3ff\"],\"fname\":\"1f482-1f3ff\",\"uc\":\"1f482-1f3ff\",\"isCanonical\": true},\":guardsman_tone4:\":{\"unicode\":[\"1f482-1f3fe\"],\"fname\":\"1f482-1f3fe\",\"uc\":\"1f482-1f3fe\",\"isCanonical\": true},\":guardsman_tone3:\":{\"unicode\":[\"1f482-1f3fd\"],\"fname\":\"1f482-1f3fd\",\"uc\":\"1f482-1f3fd\",\"isCanonical\": true},\":guardsman_tone2:\":{\"unicode\":[\"1f482-1f3fc\"],\"fname\":\"1f482-1f3fc\",\"uc\":\"1f482-1f3fc\",\"isCanonical\": true},\":guardsman_tone1:\":{\"unicode\":[\"1f482-1f3fb\"],\"fname\":\"1f482-1f3fb\",\"uc\":\"1f482-1f3fb\",\"isCanonical\": true},\":information_desk_person_tone5:\":{\"unicode\":[\"1f481-1f3ff\"],\"fname\":\"1f481-1f3ff\",\"uc\":\"1f481-1f3ff\",\"isCanonical\": true},\":information_desk_person_tone4:\":{\"unicode\":[\"1f481-1f3fe\"],\"fname\":\"1f481-1f3fe\",\"uc\":\"1f481-1f3fe\",\"isCanonical\": true},\":information_desk_person_tone3:\":{\"unicode\":[\"1f481-1f3fd\"],\"fname\":\"1f481-1f3fd\",\"uc\":\"1f481-1f3fd\",\"isCanonical\": true},\":information_desk_person_tone2:\":{\"unicode\":[\"1f481-1f3fc\"],\"fname\":\"1f481-1f3fc\",\"uc\":\"1f481-1f3fc\",\"isCanonical\": true},\":information_desk_person_tone1:\":{\"unicode\":[\"1f481-1f3fb\"],\"fname\":\"1f481-1f3fb\",\"uc\":\"1f481-1f3fb\",\"isCanonical\": true},\":angel_tone5:\":{\"unicode\":[\"1f47c-1f3ff\"],\"fname\":\"1f47c-1f3ff\",\"uc\":\"1f47c-1f3ff\",\"isCanonical\": true},\":angel_tone4:\":{\"unicode\":[\"1f47c-1f3fe\"],\"fname\":\"1f47c-1f3fe\",\"uc\":\"1f47c-1f3fe\",\"isCanonical\": true},\":angel_tone3:\":{\"unicode\":[\"1f47c-1f3fd\"],\"fname\":\"1f47c-1f3fd\",\"uc\":\"1f47c-1f3fd\",\"isCanonical\": true},\":angel_tone2:\":{\"unicode\":[\"1f47c-1f3fc\"],\"fname\":\"1f47c-1f3fc\",\"uc\":\"1f47c-1f3fc\",\"isCanonical\": true},\":angel_tone1:\":{\"unicode\":[\"1f47c-1f3fb\"],\"fname\":\"1f47c-1f3fb\",\"uc\":\"1f47c-1f3fb\",\"isCanonical\": true},\":princess_tone5:\":{\"unicode\":[\"1f478-1f3ff\"],\"fname\":\"1f478-1f3ff\",\"uc\":\"1f478-1f3ff\",\"isCanonical\": true},\":princess_tone4:\":{\"unicode\":[\"1f478-1f3fe\"],\"fname\":\"1f478-1f3fe\",\"uc\":\"1f478-1f3fe\",\"isCanonical\": true},\":princess_tone3:\":{\"unicode\":[\"1f478-1f3fd\"],\"fname\":\"1f478-1f3fd\",\"uc\":\"1f478-1f3fd\",\"isCanonical\": true},\":princess_tone2:\":{\"unicode\":[\"1f478-1f3fc\"],\"fname\":\"1f478-1f3fc\",\"uc\":\"1f478-1f3fc\",\"isCanonical\": true},\":princess_tone1:\":{\"unicode\":[\"1f478-1f3fb\"],\"fname\":\"1f478-1f3fb\",\"uc\":\"1f478-1f3fb\",\"isCanonical\": true},\":construction_worker_tone5:\":{\"unicode\":[\"1f477-1f3ff\"],\"fname\":\"1f477-1f3ff\",\"uc\":\"1f477-1f3ff\",\"isCanonical\": true},\":construction_worker_tone4:\":{\"unicode\":[\"1f477-1f3fe\"],\"fname\":\"1f477-1f3fe\",\"uc\":\"1f477-1f3fe\",\"isCanonical\": true},\":construction_worker_tone3:\":{\"unicode\":[\"1f477-1f3fd\"],\"fname\":\"1f477-1f3fd\",\"uc\":\"1f477-1f3fd\",\"isCanonical\": true},\":construction_worker_tone2:\":{\"unicode\":[\"1f477-1f3fc\"],\"fname\":\"1f477-1f3fc\",\"uc\":\"1f477-1f3fc\",\"isCanonical\": true},\":construction_worker_tone1:\":{\"unicode\":[\"1f477-1f3fb\"],\"fname\":\"1f477-1f3fb\",\"uc\":\"1f477-1f3fb\",\"isCanonical\": true},\":baby_tone5:\":{\"unicode\":[\"1f476-1f3ff\"],\"fname\":\"1f476-1f3ff\",\"uc\":\"1f476-1f3ff\",\"isCanonical\": true},\":baby_tone4:\":{\"unicode\":[\"1f476-1f3fe\"],\"fname\":\"1f476-1f3fe\",\"uc\":\"1f476-1f3fe\",\"isCanonical\": true},\":baby_tone3:\":{\"unicode\":[\"1f476-1f3fd\"],\"fname\":\"1f476-1f3fd\",\"uc\":\"1f476-1f3fd\",\"isCanonical\": true},\":baby_tone2:\":{\"unicode\":[\"1f476-1f3fc\"],\"fname\":\"1f476-1f3fc\",\"uc\":\"1f476-1f3fc\",\"isCanonical\": true},\":baby_tone1:\":{\"unicode\":[\"1f476-1f3fb\"],\"fname\":\"1f476-1f3fb\",\"uc\":\"1f476-1f3fb\",\"isCanonical\": true},\":older_woman_tone5:\":{\"unicode\":[\"1f475-1f3ff\"],\"fname\":\"1f475-1f3ff\",\"uc\":\"1f475-1f3ff\",\"isCanonical\": true},\":grandma_tone5:\":{\"unicode\":[\"1f475-1f3ff\"],\"fname\":\"1f475-1f3ff\",\"uc\":\"1f475-1f3ff\",\"isCanonical\": false},\":older_woman_tone4:\":{\"unicode\":[\"1f475-1f3fe\"],\"fname\":\"1f475-1f3fe\",\"uc\":\"1f475-1f3fe\",\"isCanonical\": true},\":grandma_tone4:\":{\"unicode\":[\"1f475-1f3fe\"],\"fname\":\"1f475-1f3fe\",\"uc\":\"1f475-1f3fe\",\"isCanonical\": false},\":older_woman_tone3:\":{\"unicode\":[\"1f475-1f3fd\"],\"fname\":\"1f475-1f3fd\",\"uc\":\"1f475-1f3fd\",\"isCanonical\": true},\":grandma_tone3:\":{\"unicode\":[\"1f475-1f3fd\"],\"fname\":\"1f475-1f3fd\",\"uc\":\"1f475-1f3fd\",\"isCanonical\": false},\":older_woman_tone2:\":{\"unicode\":[\"1f475-1f3fc\"],\"fname\":\"1f475-1f3fc\",\"uc\":\"1f475-1f3fc\",\"isCanonical\": true},\":grandma_tone2:\":{\"unicode\":[\"1f475-1f3fc\"],\"fname\":\"1f475-1f3fc\",\"uc\":\"1f475-1f3fc\",\"isCanonical\": false},\":older_woman_tone1:\":{\"unicode\":[\"1f475-1f3fb\"],\"fname\":\"1f475-1f3fb\",\"uc\":\"1f475-1f3fb\",\"isCanonical\": true},\":grandma_tone1:\":{\"unicode\":[\"1f475-1f3fb\"],\"fname\":\"1f475-1f3fb\",\"uc\":\"1f475-1f3fb\",\"isCanonical\": false},\":older_man_tone5:\":{\"unicode\":[\"1f474-1f3ff\"],\"fname\":\"1f474-1f3ff\",\"uc\":\"1f474-1f3ff\",\"isCanonical\": true},\":older_man_tone4:\":{\"unicode\":[\"1f474-1f3fe\"],\"fname\":\"1f474-1f3fe\",\"uc\":\"1f474-1f3fe\",\"isCanonical\": true},\":older_man_tone3:\":{\"unicode\":[\"1f474-1f3fd\"],\"fname\":\"1f474-1f3fd\",\"uc\":\"1f474-1f3fd\",\"isCanonical\": true},\":older_man_tone2:\":{\"unicode\":[\"1f474-1f3fc\"],\"fname\":\"1f474-1f3fc\",\"uc\":\"1f474-1f3fc\",\"isCanonical\": true},\":older_man_tone1:\":{\"unicode\":[\"1f474-1f3fb\"],\"fname\":\"1f474-1f3fb\",\"uc\":\"1f474-1f3fb\",\"isCanonical\": true},\":man_with_turban_tone5:\":{\"unicode\":[\"1f473-1f3ff\"],\"fname\":\"1f473-1f3ff\",\"uc\":\"1f473-1f3ff\",\"isCanonical\": true},\":man_with_turban_tone4:\":{\"unicode\":[\"1f473-1f3fe\"],\"fname\":\"1f473-1f3fe\",\"uc\":\"1f473-1f3fe\",\"isCanonical\": true},\":man_with_turban_tone3:\":{\"unicode\":[\"1f473-1f3fd\"],\"fname\":\"1f473-1f3fd\",\"uc\":\"1f473-1f3fd\",\"isCanonical\": true},\":man_with_turban_tone2:\":{\"unicode\":[\"1f473-1f3fc\"],\"fname\":\"1f473-1f3fc\",\"uc\":\"1f473-1f3fc\",\"isCanonical\": true},\":man_with_turban_tone1:\":{\"unicode\":[\"1f473-1f3fb\"],\"fname\":\"1f473-1f3fb\",\"uc\":\"1f473-1f3fb\",\"isCanonical\": true},\":man_with_gua_pi_mao_tone5:\":{\"unicode\":[\"1f472-1f3ff\"],\"fname\":\"1f472-1f3ff\",\"uc\":\"1f472-1f3ff\",\"isCanonical\": true},\":man_with_gua_pi_mao_tone4:\":{\"unicode\":[\"1f472-1f3fe\"],\"fname\":\"1f472-1f3fe\",\"uc\":\"1f472-1f3fe\",\"isCanonical\": true},\":man_with_gua_pi_mao_tone3:\":{\"unicode\":[\"1f472-1f3fd\"],\"fname\":\"1f472-1f3fd\",\"uc\":\"1f472-1f3fd\",\"isCanonical\": true},\":man_with_gua_pi_mao_tone2:\":{\"unicode\":[\"1f472-1f3fc\"],\"fname\":\"1f472-1f3fc\",\"uc\":\"1f472-1f3fc\",\"isCanonical\": true},\":man_with_gua_pi_mao_tone1:\":{\"unicode\":[\"1f472-1f3fb\"],\"fname\":\"1f472-1f3fb\",\"uc\":\"1f472-1f3fb\",\"isCanonical\": true},\":person_with_blond_hair_tone5:\":{\"unicode\":[\"1f471-1f3ff\"],\"fname\":\"1f471-1f3ff\",\"uc\":\"1f471-1f3ff\",\"isCanonical\": true},\":person_with_blond_hair_tone4:\":{\"unicode\":[\"1f471-1f3fe\"],\"fname\":\"1f471-1f3fe\",\"uc\":\"1f471-1f3fe\",\"isCanonical\": true},\":person_with_blond_hair_tone3:\":{\"unicode\":[\"1f471-1f3fd\"],\"fname\":\"1f471-1f3fd\",\"uc\":\"1f471-1f3fd\",\"isCanonical\": true},\":person_with_blond_hair_tone2:\":{\"unicode\":[\"1f471-1f3fc\"],\"fname\":\"1f471-1f3fc\",\"uc\":\"1f471-1f3fc\",\"isCanonical\": true},\":person_with_blond_hair_tone1:\":{\"unicode\":[\"1f471-1f3fb\"],\"fname\":\"1f471-1f3fb\",\"uc\":\"1f471-1f3fb\",\"isCanonical\": true},\":bride_with_veil_tone5:\":{\"unicode\":[\"1f470-1f3ff\"],\"fname\":\"1f470-1f3ff\",\"uc\":\"1f470-1f3ff\",\"isCanonical\": true},\":bride_with_veil_tone4:\":{\"unicode\":[\"1f470-1f3fe\"],\"fname\":\"1f470-1f3fe\",\"uc\":\"1f470-1f3fe\",\"isCanonical\": true},\":bride_with_veil_tone3:\":{\"unicode\":[\"1f470-1f3fd\"],\"fname\":\"1f470-1f3fd\",\"uc\":\"1f470-1f3fd\",\"isCanonical\": true},\":bride_with_veil_tone2:\":{\"unicode\":[\"1f470-1f3fc\"],\"fname\":\"1f470-1f3fc\",\"uc\":\"1f470-1f3fc\",\"isCanonical\": true},\":bride_with_veil_tone1:\":{\"unicode\":[\"1f470-1f3fb\"],\"fname\":\"1f470-1f3fb\",\"uc\":\"1f470-1f3fb\",\"isCanonical\": true},\":cop_tone5:\":{\"unicode\":[\"1f46e-1f3ff\"],\"fname\":\"1f46e-1f3ff\",\"uc\":\"1f46e-1f3ff\",\"isCanonical\": true},\":cop_tone4:\":{\"unicode\":[\"1f46e-1f3fe\"],\"fname\":\"1f46e-1f3fe\",\"uc\":\"1f46e-1f3fe\",\"isCanonical\": true},\":cop_tone3:\":{\"unicode\":[\"1f46e-1f3fd\"],\"fname\":\"1f46e-1f3fd\",\"uc\":\"1f46e-1f3fd\",\"isCanonical\": true},\":cop_tone2:\":{\"unicode\":[\"1f46e-1f3fc\"],\"fname\":\"1f46e-1f3fc\",\"uc\":\"1f46e-1f3fc\",\"isCanonical\": true},\":cop_tone1:\":{\"unicode\":[\"1f46e-1f3fb\"],\"fname\":\"1f46e-1f3fb\",\"uc\":\"1f46e-1f3fb\",\"isCanonical\": true},\":woman_tone5:\":{\"unicode\":[\"1f469-1f3ff\"],\"fname\":\"1f469-1f3ff\",\"uc\":\"1f469-1f3ff\",\"isCanonical\": true},\":woman_tone4:\":{\"unicode\":[\"1f469-1f3fe\"],\"fname\":\"1f469-1f3fe\",\"uc\":\"1f469-1f3fe\",\"isCanonical\": true},\":woman_tone3:\":{\"unicode\":[\"1f469-1f3fd\"],\"fname\":\"1f469-1f3fd\",\"uc\":\"1f469-1f3fd\",\"isCanonical\": true},\":woman_tone2:\":{\"unicode\":[\"1f469-1f3fc\"],\"fname\":\"1f469-1f3fc\",\"uc\":\"1f469-1f3fc\",\"isCanonical\": true},\":woman_tone1:\":{\"unicode\":[\"1f469-1f3fb\"],\"fname\":\"1f469-1f3fb\",\"uc\":\"1f469-1f3fb\",\"isCanonical\": true},\":man_tone5:\":{\"unicode\":[\"1f468-1f3ff\"],\"fname\":\"1f468-1f3ff\",\"uc\":\"1f468-1f3ff\",\"isCanonical\": true},\":man_tone4:\":{\"unicode\":[\"1f468-1f3fe\"],\"fname\":\"1f468-1f3fe\",\"uc\":\"1f468-1f3fe\",\"isCanonical\": true},\":man_tone3:\":{\"unicode\":[\"1f468-1f3fd\"],\"fname\":\"1f468-1f3fd\",\"uc\":\"1f468-1f3fd\",\"isCanonical\": true},\":man_tone2:\":{\"unicode\":[\"1f468-1f3fc\"],\"fname\":\"1f468-1f3fc\",\"uc\":\"1f468-1f3fc\",\"isCanonical\": true},\":man_tone1:\":{\"unicode\":[\"1f468-1f3fb\"],\"fname\":\"1f468-1f3fb\",\"uc\":\"1f468-1f3fb\",\"isCanonical\": true},\":girl_tone5:\":{\"unicode\":[\"1f467-1f3ff\"],\"fname\":\"1f467-1f3ff\",\"uc\":\"1f467-1f3ff\",\"isCanonical\": true},\":girl_tone4:\":{\"unicode\":[\"1f467-1f3fe\"],\"fname\":\"1f467-1f3fe\",\"uc\":\"1f467-1f3fe\",\"isCanonical\": true},\":girl_tone3:\":{\"unicode\":[\"1f467-1f3fd\"],\"fname\":\"1f467-1f3fd\",\"uc\":\"1f467-1f3fd\",\"isCanonical\": true},\":girl_tone2:\":{\"unicode\":[\"1f467-1f3fc\"],\"fname\":\"1f467-1f3fc\",\"uc\":\"1f467-1f3fc\",\"isCanonical\": true},\":girl_tone1:\":{\"unicode\":[\"1f467-1f3fb\"],\"fname\":\"1f467-1f3fb\",\"uc\":\"1f467-1f3fb\",\"isCanonical\": true},\":boy_tone5:\":{\"unicode\":[\"1f466-1f3ff\"],\"fname\":\"1f466-1f3ff\",\"uc\":\"1f466-1f3ff\",\"isCanonical\": true},\":boy_tone4:\":{\"unicode\":[\"1f466-1f3fe\"],\"fname\":\"1f466-1f3fe\",\"uc\":\"1f466-1f3fe\",\"isCanonical\": true},\":boy_tone3:\":{\"unicode\":[\"1f466-1f3fd\"],\"fname\":\"1f466-1f3fd\",\"uc\":\"1f466-1f3fd\",\"isCanonical\": true},\":boy_tone2:\":{\"unicode\":[\"1f466-1f3fc\"],\"fname\":\"1f466-1f3fc\",\"uc\":\"1f466-1f3fc\",\"isCanonical\": true},\":boy_tone1:\":{\"unicode\":[\"1f466-1f3fb\"],\"fname\":\"1f466-1f3fb\",\"uc\":\"1f466-1f3fb\",\"isCanonical\": true},\":open_hands_tone5:\":{\"unicode\":[\"1f450-1f3ff\"],\"fname\":\"1f450-1f3ff\",\"uc\":\"1f450-1f3ff\",\"isCanonical\": true},\":open_hands_tone4:\":{\"unicode\":[\"1f450-1f3fe\"],\"fname\":\"1f450-1f3fe\",\"uc\":\"1f450-1f3fe\",\"isCanonical\": true},\":open_hands_tone3:\":{\"unicode\":[\"1f450-1f3fd\"],\"fname\":\"1f450-1f3fd\",\"uc\":\"1f450-1f3fd\",\"isCanonical\": true},\":open_hands_tone2:\":{\"unicode\":[\"1f450-1f3fc\"],\"fname\":\"1f450-1f3fc\",\"uc\":\"1f450-1f3fc\",\"isCanonical\": true},\":open_hands_tone1:\":{\"unicode\":[\"1f450-1f3fb\"],\"fname\":\"1f450-1f3fb\",\"uc\":\"1f450-1f3fb\",\"isCanonical\": true},\":clap_tone5:\":{\"unicode\":[\"1f44f-1f3ff\"],\"fname\":\"1f44f-1f3ff\",\"uc\":\"1f44f-1f3ff\",\"isCanonical\": true},\":clap_tone4:\":{\"unicode\":[\"1f44f-1f3fe\"],\"fname\":\"1f44f-1f3fe\",\"uc\":\"1f44f-1f3fe\",\"isCanonical\": true},\":clap_tone3:\":{\"unicode\":[\"1f44f-1f3fd\"],\"fname\":\"1f44f-1f3fd\",\"uc\":\"1f44f-1f3fd\",\"isCanonical\": true},\":clap_tone2:\":{\"unicode\":[\"1f44f-1f3fc\"],\"fname\":\"1f44f-1f3fc\",\"uc\":\"1f44f-1f3fc\",\"isCanonical\": true},\":clap_tone1:\":{\"unicode\":[\"1f44f-1f3fb\"],\"fname\":\"1f44f-1f3fb\",\"uc\":\"1f44f-1f3fb\",\"isCanonical\": true},\":thumbsdown_tone5:\":{\"unicode\":[\"1f44e-1f3ff\"],\"fname\":\"1f44e-1f3ff\",\"uc\":\"1f44e-1f3ff\",\"isCanonical\": true},\":-1_tone5:\":{\"unicode\":[\"1f44e-1f3ff\"],\"fname\":\"1f44e-1f3ff\",\"uc\":\"1f44e-1f3ff\",\"isCanonical\": false},\":thumbdown_tone5:\":{\"unicode\":[\"1f44e-1f3ff\"],\"fname\":\"1f44e-1f3ff\",\"uc\":\"1f44e-1f3ff\",\"isCanonical\": false},\":thumbsdown_tone4:\":{\"unicode\":[\"1f44e-1f3fe\"],\"fname\":\"1f44e-1f3fe\",\"uc\":\"1f44e-1f3fe\",\"isCanonical\": true},\":-1_tone4:\":{\"unicode\":[\"1f44e-1f3fe\"],\"fname\":\"1f44e-1f3fe\",\"uc\":\"1f44e-1f3fe\",\"isCanonical\": false},\":thumbdown_tone4:\":{\"unicode\":[\"1f44e-1f3fe\"],\"fname\":\"1f44e-1f3fe\",\"uc\":\"1f44e-1f3fe\",\"isCanonical\": false},\":thumbsdown_tone3:\":{\"unicode\":[\"1f44e-1f3fd\"],\"fname\":\"1f44e-1f3fd\",\"uc\":\"1f44e-1f3fd\",\"isCanonical\": true},\":-1_tone3:\":{\"unicode\":[\"1f44e-1f3fd\"],\"fname\":\"1f44e-1f3fd\",\"uc\":\"1f44e-1f3fd\",\"isCanonical\": false},\":thumbdown_tone3:\":{\"unicode\":[\"1f44e-1f3fd\"],\"fname\":\"1f44e-1f3fd\",\"uc\":\"1f44e-1f3fd\",\"isCanonical\": false},\":thumbsdown_tone2:\":{\"unicode\":[\"1f44e-1f3fc\"],\"fname\":\"1f44e-1f3fc\",\"uc\":\"1f44e-1f3fc\",\"isCanonical\": true},\":-1_tone2:\":{\"unicode\":[\"1f44e-1f3fc\"],\"fname\":\"1f44e-1f3fc\",\"uc\":\"1f44e-1f3fc\",\"isCanonical\": false},\":thumbdown_tone2:\":{\"unicode\":[\"1f44e-1f3fc\"],\"fname\":\"1f44e-1f3fc\",\"uc\":\"1f44e-1f3fc\",\"isCanonical\": false},\":thumbsdown_tone1:\":{\"unicode\":[\"1f44e-1f3fb\"],\"fname\":\"1f44e-1f3fb\",\"uc\":\"1f44e-1f3fb\",\"isCanonical\": true},\":-1_tone1:\":{\"unicode\":[\"1f44e-1f3fb\"],\"fname\":\"1f44e-1f3fb\",\"uc\":\"1f44e-1f3fb\",\"isCanonical\": false},\":thumbdown_tone1:\":{\"unicode\":[\"1f44e-1f3fb\"],\"fname\":\"1f44e-1f3fb\",\"uc\":\"1f44e-1f3fb\",\"isCanonical\": false},\":thumbsup_tone5:\":{\"unicode\":[\"1f44d-1f3ff\"],\"fname\":\"1f44d-1f3ff\",\"uc\":\"1f44d-1f3ff\",\"isCanonical\": true},\":+1_tone5:\":{\"unicode\":[\"1f44d-1f3ff\"],\"fname\":\"1f44d-1f3ff\",\"uc\":\"1f44d-1f3ff\",\"isCanonical\": false},\":thumbup_tone5:\":{\"unicode\":[\"1f44d-1f3ff\"],\"fname\":\"1f44d-1f3ff\",\"uc\":\"1f44d-1f3ff\",\"isCanonical\": false},\":thumbsup_tone4:\":{\"unicode\":[\"1f44d-1f3fe\"],\"fname\":\"1f44d-1f3fe\",\"uc\":\"1f44d-1f3fe\",\"isCanonical\": true},\":+1_tone4:\":{\"unicode\":[\"1f44d-1f3fe\"],\"fname\":\"1f44d-1f3fe\",\"uc\":\"1f44d-1f3fe\",\"isCanonical\": false},\":thumbup_tone4:\":{\"unicode\":[\"1f44d-1f3fe\"],\"fname\":\"1f44d-1f3fe\",\"uc\":\"1f44d-1f3fe\",\"isCanonical\": false},\":thumbsup_tone3:\":{\"unicode\":[\"1f44d-1f3fd\"],\"fname\":\"1f44d-1f3fd\",\"uc\":\"1f44d-1f3fd\",\"isCanonical\": true},\":+1_tone3:\":{\"unicode\":[\"1f44d-1f3fd\"],\"fname\":\"1f44d-1f3fd\",\"uc\":\"1f44d-1f3fd\",\"isCanonical\": false},\":thumbup_tone3:\":{\"unicode\":[\"1f44d-1f3fd\"],\"fname\":\"1f44d-1f3fd\",\"uc\":\"1f44d-1f3fd\",\"isCanonical\": false},\":thumbsup_tone2:\":{\"unicode\":[\"1f44d-1f3fc\"],\"fname\":\"1f44d-1f3fc\",\"uc\":\"1f44d-1f3fc\",\"isCanonical\": true},\":+1_tone2:\":{\"unicode\":[\"1f44d-1f3fc\"],\"fname\":\"1f44d-1f3fc\",\"uc\":\"1f44d-1f3fc\",\"isCanonical\": false},\":thumbup_tone2:\":{\"unicode\":[\"1f44d-1f3fc\"],\"fname\":\"1f44d-1f3fc\",\"uc\":\"1f44d-1f3fc\",\"isCanonical\": false},\":thumbsup_tone1:\":{\"unicode\":[\"1f44d-1f3fb\"],\"fname\":\"1f44d-1f3fb\",\"uc\":\"1f44d-1f3fb\",\"isCanonical\": true},\":+1_tone1:\":{\"unicode\":[\"1f44d-1f3fb\"],\"fname\":\"1f44d-1f3fb\",\"uc\":\"1f44d-1f3fb\",\"isCanonical\": false},\":thumbup_tone1:\":{\"unicode\":[\"1f44d-1f3fb\"],\"fname\":\"1f44d-1f3fb\",\"uc\":\"1f44d-1f3fb\",\"isCanonical\": false},\":ok_hand_tone5:\":{\"unicode\":[\"1f44c-1f3ff\"],\"fname\":\"1f44c-1f3ff\",\"uc\":\"1f44c-1f3ff\",\"isCanonical\": true},\":ok_hand_tone4:\":{\"unicode\":[\"1f44c-1f3fe\"],\"fname\":\"1f44c-1f3fe\",\"uc\":\"1f44c-1f3fe\",\"isCanonical\": true},\":ok_hand_tone3:\":{\"unicode\":[\"1f44c-1f3fd\"],\"fname\":\"1f44c-1f3fd\",\"uc\":\"1f44c-1f3fd\",\"isCanonical\": true},\":ok_hand_tone2:\":{\"unicode\":[\"1f44c-1f3fc\"],\"fname\":\"1f44c-1f3fc\",\"uc\":\"1f44c-1f3fc\",\"isCanonical\": true},\":ok_hand_tone1:\":{\"unicode\":[\"1f44c-1f3fb\"],\"fname\":\"1f44c-1f3fb\",\"uc\":\"1f44c-1f3fb\",\"isCanonical\": true},\":wave_tone5:\":{\"unicode\":[\"1f44b-1f3ff\"],\"fname\":\"1f44b-1f3ff\",\"uc\":\"1f44b-1f3ff\",\"isCanonical\": true},\":wave_tone4:\":{\"unicode\":[\"1f44b-1f3fe\"],\"fname\":\"1f44b-1f3fe\",\"uc\":\"1f44b-1f3fe\",\"isCanonical\": true},\":wave_tone3:\":{\"unicode\":[\"1f44b-1f3fd\"],\"fname\":\"1f44b-1f3fd\",\"uc\":\"1f44b-1f3fd\",\"isCanonical\": true},\":wave_tone2:\":{\"unicode\":[\"1f44b-1f3fc\"],\"fname\":\"1f44b-1f3fc\",\"uc\":\"1f44b-1f3fc\",\"isCanonical\": true},\":wave_tone1:\":{\"unicode\":[\"1f44b-1f3fb\"],\"fname\":\"1f44b-1f3fb\",\"uc\":\"1f44b-1f3fb\",\"isCanonical\": true},\":punch_tone5:\":{\"unicode\":[\"1f44a-1f3ff\"],\"fname\":\"1f44a-1f3ff\",\"uc\":\"1f44a-1f3ff\",\"isCanonical\": true},\":punch_tone4:\":{\"unicode\":[\"1f44a-1f3fe\"],\"fname\":\"1f44a-1f3fe\",\"uc\":\"1f44a-1f3fe\",\"isCanonical\": true},\":punch_tone3:\":{\"unicode\":[\"1f44a-1f3fd\"],\"fname\":\"1f44a-1f3fd\",\"uc\":\"1f44a-1f3fd\",\"isCanonical\": true},\":punch_tone2:\":{\"unicode\":[\"1f44a-1f3fc\"],\"fname\":\"1f44a-1f3fc\",\"uc\":\"1f44a-1f3fc\",\"isCanonical\": true},\":punch_tone1:\":{\"unicode\":[\"1f44a-1f3fb\"],\"fname\":\"1f44a-1f3fb\",\"uc\":\"1f44a-1f3fb\",\"isCanonical\": true},\":point_right_tone5:\":{\"unicode\":[\"1f449-1f3ff\"],\"fname\":\"1f449-1f3ff\",\"uc\":\"1f449-1f3ff\",\"isCanonical\": true},\":point_right_tone4:\":{\"unicode\":[\"1f449-1f3fe\"],\"fname\":\"1f449-1f3fe\",\"uc\":\"1f449-1f3fe\",\"isCanonical\": true},\":point_right_tone3:\":{\"unicode\":[\"1f449-1f3fd\"],\"fname\":\"1f449-1f3fd\",\"uc\":\"1f449-1f3fd\",\"isCanonical\": true},\":point_right_tone2:\":{\"unicode\":[\"1f449-1f3fc\"],\"fname\":\"1f449-1f3fc\",\"uc\":\"1f449-1f3fc\",\"isCanonical\": true},\":point_right_tone1:\":{\"unicode\":[\"1f449-1f3fb\"],\"fname\":\"1f449-1f3fb\",\"uc\":\"1f449-1f3fb\",\"isCanonical\": true},\":point_left_tone5:\":{\"unicode\":[\"1f448-1f3ff\"],\"fname\":\"1f448-1f3ff\",\"uc\":\"1f448-1f3ff\",\"isCanonical\": true},\":point_left_tone4:\":{\"unicode\":[\"1f448-1f3fe\"],\"fname\":\"1f448-1f3fe\",\"uc\":\"1f448-1f3fe\",\"isCanonical\": true},\":point_left_tone3:\":{\"unicode\":[\"1f448-1f3fd\"],\"fname\":\"1f448-1f3fd\",\"uc\":\"1f448-1f3fd\",\"isCanonical\": true},\":point_left_tone2:\":{\"unicode\":[\"1f448-1f3fc\"],\"fname\":\"1f448-1f3fc\",\"uc\":\"1f448-1f3fc\",\"isCanonical\": true},\":point_left_tone1:\":{\"unicode\":[\"1f448-1f3fb\"],\"fname\":\"1f448-1f3fb\",\"uc\":\"1f448-1f3fb\",\"isCanonical\": true},\":point_down_tone5:\":{\"unicode\":[\"1f447-1f3ff\"],\"fname\":\"1f447-1f3ff\",\"uc\":\"1f447-1f3ff\",\"isCanonical\": true},\":point_down_tone4:\":{\"unicode\":[\"1f447-1f3fe\"],\"fname\":\"1f447-1f3fe\",\"uc\":\"1f447-1f3fe\",\"isCanonical\": true},\":point_down_tone3:\":{\"unicode\":[\"1f447-1f3fd\"],\"fname\":\"1f447-1f3fd\",\"uc\":\"1f447-1f3fd\",\"isCanonical\": true},\":point_down_tone2:\":{\"unicode\":[\"1f447-1f3fc\"],\"fname\":\"1f447-1f3fc\",\"uc\":\"1f447-1f3fc\",\"isCanonical\": true},\":point_down_tone1:\":{\"unicode\":[\"1f447-1f3fb\"],\"fname\":\"1f447-1f3fb\",\"uc\":\"1f447-1f3fb\",\"isCanonical\": true},\":point_up_2_tone5:\":{\"unicode\":[\"1f446-1f3ff\"],\"fname\":\"1f446-1f3ff\",\"uc\":\"1f446-1f3ff\",\"isCanonical\": true},\":point_up_2_tone4:\":{\"unicode\":[\"1f446-1f3fe\"],\"fname\":\"1f446-1f3fe\",\"uc\":\"1f446-1f3fe\",\"isCanonical\": true},\":point_up_2_tone3:\":{\"unicode\":[\"1f446-1f3fd\"],\"fname\":\"1f446-1f3fd\",\"uc\":\"1f446-1f3fd\",\"isCanonical\": true},\":point_up_2_tone2:\":{\"unicode\":[\"1f446-1f3fc\"],\"fname\":\"1f446-1f3fc\",\"uc\":\"1f446-1f3fc\",\"isCanonical\": true},\":point_up_2_tone1:\":{\"unicode\":[\"1f446-1f3fb\"],\"fname\":\"1f446-1f3fb\",\"uc\":\"1f446-1f3fb\",\"isCanonical\": true},\":nose_tone5:\":{\"unicode\":[\"1f443-1f3ff\"],\"fname\":\"1f443-1f3ff\",\"uc\":\"1f443-1f3ff\",\"isCanonical\": true},\":nose_tone4:\":{\"unicode\":[\"1f443-1f3fe\"],\"fname\":\"1f443-1f3fe\",\"uc\":\"1f443-1f3fe\",\"isCanonical\": true},\":nose_tone3:\":{\"unicode\":[\"1f443-1f3fd\"],\"fname\":\"1f443-1f3fd\",\"uc\":\"1f443-1f3fd\",\"isCanonical\": true},\":nose_tone2:\":{\"unicode\":[\"1f443-1f3fc\"],\"fname\":\"1f443-1f3fc\",\"uc\":\"1f443-1f3fc\",\"isCanonical\": true},\":nose_tone1:\":{\"unicode\":[\"1f443-1f3fb\"],\"fname\":\"1f443-1f3fb\",\"uc\":\"1f443-1f3fb\",\"isCanonical\": true},\":ear_tone5:\":{\"unicode\":[\"1f442-1f3ff\"],\"fname\":\"1f442-1f3ff\",\"uc\":\"1f442-1f3ff\",\"isCanonical\": true},\":ear_tone4:\":{\"unicode\":[\"1f442-1f3fe\"],\"fname\":\"1f442-1f3fe\",\"uc\":\"1f442-1f3fe\",\"isCanonical\": true},\":ear_tone3:\":{\"unicode\":[\"1f442-1f3fd\"],\"fname\":\"1f442-1f3fd\",\"uc\":\"1f442-1f3fd\",\"isCanonical\": true},\":ear_tone2:\":{\"unicode\":[\"1f442-1f3fc\"],\"fname\":\"1f442-1f3fc\",\"uc\":\"1f442-1f3fc\",\"isCanonical\": true},\":ear_tone1:\":{\"unicode\":[\"1f442-1f3fb\"],\"fname\":\"1f442-1f3fb\",\"uc\":\"1f442-1f3fb\",\"isCanonical\": true},\":lifter_tone5:\":{\"unicode\":[\"1f3cb-1f3ff\"],\"fname\":\"1f3cb-1f3ff\",\"uc\":\"1f3cb-1f3ff\",\"isCanonical\": true},\":weight_lifter_tone5:\":{\"unicode\":[\"1f3cb-1f3ff\"],\"fname\":\"1f3cb-1f3ff\",\"uc\":\"1f3cb-1f3ff\",\"isCanonical\": false},\":lifter_tone4:\":{\"unicode\":[\"1f3cb-1f3fe\"],\"fname\":\"1f3cb-1f3fe\",\"uc\":\"1f3cb-1f3fe\",\"isCanonical\": true},\":weight_lifter_tone4:\":{\"unicode\":[\"1f3cb-1f3fe\"],\"fname\":\"1f3cb-1f3fe\",\"uc\":\"1f3cb-1f3fe\",\"isCanonical\": false},\":lifter_tone3:\":{\"unicode\":[\"1f3cb-1f3fd\"],\"fname\":\"1f3cb-1f3fd\",\"uc\":\"1f3cb-1f3fd\",\"isCanonical\": true},\":weight_lifter_tone3:\":{\"unicode\":[\"1f3cb-1f3fd\"],\"fname\":\"1f3cb-1f3fd\",\"uc\":\"1f3cb-1f3fd\",\"isCanonical\": false},\":lifter_tone2:\":{\"unicode\":[\"1f3cb-1f3fc\"],\"fname\":\"1f3cb-1f3fc\",\"uc\":\"1f3cb-1f3fc\",\"isCanonical\": true},\":weight_lifter_tone2:\":{\"unicode\":[\"1f3cb-1f3fc\"],\"fname\":\"1f3cb-1f3fc\",\"uc\":\"1f3cb-1f3fc\",\"isCanonical\": false},\":lifter_tone1:\":{\"unicode\":[\"1f3cb-1f3fb\"],\"fname\":\"1f3cb-1f3fb\",\"uc\":\"1f3cb-1f3fb\",\"isCanonical\": true},\":weight_lifter_tone1:\":{\"unicode\":[\"1f3cb-1f3fb\"],\"fname\":\"1f3cb-1f3fb\",\"uc\":\"1f3cb-1f3fb\",\"isCanonical\": false},\":swimmer_tone5:\":{\"unicode\":[\"1f3ca-1f3ff\"],\"fname\":\"1f3ca-1f3ff\",\"uc\":\"1f3ca-1f3ff\",\"isCanonical\": true},\":swimmer_tone4:\":{\"unicode\":[\"1f3ca-1f3fe\"],\"fname\":\"1f3ca-1f3fe\",\"uc\":\"1f3ca-1f3fe\",\"isCanonical\": true},\":swimmer_tone3:\":{\"unicode\":[\"1f3ca-1f3fd\"],\"fname\":\"1f3ca-1f3fd\",\"uc\":\"1f3ca-1f3fd\",\"isCanonical\": true},\":swimmer_tone2:\":{\"unicode\":[\"1f3ca-1f3fc\"],\"fname\":\"1f3ca-1f3fc\",\"uc\":\"1f3ca-1f3fc\",\"isCanonical\": true},\":swimmer_tone1:\":{\"unicode\":[\"1f3ca-1f3fb\"],\"fname\":\"1f3ca-1f3fb\",\"uc\":\"1f3ca-1f3fb\",\"isCanonical\": true},\":horse_racing_tone5:\":{\"unicode\":[\"1f3c7-1f3ff\"],\"fname\":\"1f3c7-1f3ff\",\"uc\":\"1f3c7-1f3ff\",\"isCanonical\": true},\":horse_racing_tone4:\":{\"unicode\":[\"1f3c7-1f3fe\"],\"fname\":\"1f3c7-1f3fe\",\"uc\":\"1f3c7-1f3fe\",\"isCanonical\": true},\":horse_racing_tone3:\":{\"unicode\":[\"1f3c7-1f3fd\"],\"fname\":\"1f3c7-1f3fd\",\"uc\":\"1f3c7-1f3fd\",\"isCanonical\": true},\":horse_racing_tone2:\":{\"unicode\":[\"1f3c7-1f3fc\"],\"fname\":\"1f3c7-1f3fc\",\"uc\":\"1f3c7-1f3fc\",\"isCanonical\": true},\":horse_racing_tone1:\":{\"unicode\":[\"1f3c7-1f3fb\"],\"fname\":\"1f3c7-1f3fb\",\"uc\":\"1f3c7-1f3fb\",\"isCanonical\": true},\":surfer_tone5:\":{\"unicode\":[\"1f3c4-1f3ff\"],\"fname\":\"1f3c4-1f3ff\",\"uc\":\"1f3c4-1f3ff\",\"isCanonical\": true},\":surfer_tone4:\":{\"unicode\":[\"1f3c4-1f3fe\"],\"fname\":\"1f3c4-1f3fe\",\"uc\":\"1f3c4-1f3fe\",\"isCanonical\": true},\":surfer_tone3:\":{\"unicode\":[\"1f3c4-1f3fd\"],\"fname\":\"1f3c4-1f3fd\",\"uc\":\"1f3c4-1f3fd\",\"isCanonical\": true},\":surfer_tone2:\":{\"unicode\":[\"1f3c4-1f3fc\"],\"fname\":\"1f3c4-1f3fc\",\"uc\":\"1f3c4-1f3fc\",\"isCanonical\": true},\":surfer_tone1:\":{\"unicode\":[\"1f3c4-1f3fb\"],\"fname\":\"1f3c4-1f3fb\",\"uc\":\"1f3c4-1f3fb\",\"isCanonical\": true},\":runner_tone5:\":{\"unicode\":[\"1f3c3-1f3ff\"],\"fname\":\"1f3c3-1f3ff\",\"uc\":\"1f3c3-1f3ff\",\"isCanonical\": true},\":runner_tone4:\":{\"unicode\":[\"1f3c3-1f3fe\"],\"fname\":\"1f3c3-1f3fe\",\"uc\":\"1f3c3-1f3fe\",\"isCanonical\": true},\":runner_tone3:\":{\"unicode\":[\"1f3c3-1f3fd\"],\"fname\":\"1f3c3-1f3fd\",\"uc\":\"1f3c3-1f3fd\",\"isCanonical\": true},\":runner_tone2:\":{\"unicode\":[\"1f3c3-1f3fc\"],\"fname\":\"1f3c3-1f3fc\",\"uc\":\"1f3c3-1f3fc\",\"isCanonical\": true},\":runner_tone1:\":{\"unicode\":[\"1f3c3-1f3fb\"],\"fname\":\"1f3c3-1f3fb\",\"uc\":\"1f3c3-1f3fb\",\"isCanonical\": true},\":santa_tone5:\":{\"unicode\":[\"1f385-1f3ff\"],\"fname\":\"1f385-1f3ff\",\"uc\":\"1f385-1f3ff\",\"isCanonical\": true},\":santa_tone4:\":{\"unicode\":[\"1f385-1f3fe\"],\"fname\":\"1f385-1f3fe\",\"uc\":\"1f385-1f3fe\",\"isCanonical\": true},\":santa_tone3:\":{\"unicode\":[\"1f385-1f3fd\"],\"fname\":\"1f385-1f3fd\",\"uc\":\"1f385-1f3fd\",\"isCanonical\": true},\":santa_tone2:\":{\"unicode\":[\"1f385-1f3fc\"],\"fname\":\"1f385-1f3fc\",\"uc\":\"1f385-1f3fc\",\"isCanonical\": true},\":santa_tone1:\":{\"unicode\":[\"1f385-1f3fb\"],\"fname\":\"1f385-1f3fb\",\"uc\":\"1f385-1f3fb\",\"isCanonical\": true},\":flag_zw:\":{\"unicode\":[\"1f1ff-1f1fc\"],\"fname\":\"1f1ff-1f1fc\",\"uc\":\"1f1ff-1f1fc\",\"isCanonical\": true},\":zw:\":{\"unicode\":[\"1f1ff-1f1fc\"],\"fname\":\"1f1ff-1f1fc\",\"uc\":\"1f1ff-1f1fc\",\"isCanonical\": false},\":flag_zm:\":{\"unicode\":[\"1f1ff-1f1f2\"],\"fname\":\"1f1ff-1f1f2\",\"uc\":\"1f1ff-1f1f2\",\"isCanonical\": true},\":zm:\":{\"unicode\":[\"1f1ff-1f1f2\"],\"fname\":\"1f1ff-1f1f2\",\"uc\":\"1f1ff-1f1f2\",\"isCanonical\": false},\":flag_za:\":{\"unicode\":[\"1f1ff-1f1e6\"],\"fname\":\"1f1ff-1f1e6\",\"uc\":\"1f1ff-1f1e6\",\"isCanonical\": true},\":za:\":{\"unicode\":[\"1f1ff-1f1e6\"],\"fname\":\"1f1ff-1f1e6\",\"uc\":\"1f1ff-1f1e6\",\"isCanonical\": false},\":flag_yt:\":{\"unicode\":[\"1f1fe-1f1f9\"],\"fname\":\"1f1fe-1f1f9\",\"uc\":\"1f1fe-1f1f9\",\"isCanonical\": true},\":yt:\":{\"unicode\":[\"1f1fe-1f1f9\"],\"fname\":\"1f1fe-1f1f9\",\"uc\":\"1f1fe-1f1f9\",\"isCanonical\": false},\":flag_ye:\":{\"unicode\":[\"1f1fe-1f1ea\"],\"fname\":\"1f1fe-1f1ea\",\"uc\":\"1f1fe-1f1ea\",\"isCanonical\": true},\":ye:\":{\"unicode\":[\"1f1fe-1f1ea\"],\"fname\":\"1f1fe-1f1ea\",\"uc\":\"1f1fe-1f1ea\",\"isCanonical\": false},\":flag_xk:\":{\"unicode\":[\"1f1fd-1f1f0\"],\"fname\":\"1f1fd-1f1f0\",\"uc\":\"1f1fd-1f1f0\",\"isCanonical\": true},\":xk:\":{\"unicode\":[\"1f1fd-1f1f0\"],\"fname\":\"1f1fd-1f1f0\",\"uc\":\"1f1fd-1f1f0\",\"isCanonical\": false},\":flag_ws:\":{\"unicode\":[\"1f1fc-1f1f8\"],\"fname\":\"1f1fc-1f1f8\",\"uc\":\"1f1fc-1f1f8\",\"isCanonical\": true},\":ws:\":{\"unicode\":[\"1f1fc-1f1f8\"],\"fname\":\"1f1fc-1f1f8\",\"uc\":\"1f1fc-1f1f8\",\"isCanonical\": false},\":flag_wf:\":{\"unicode\":[\"1f1fc-1f1eb\"],\"fname\":\"1f1fc-1f1eb\",\"uc\":\"1f1fc-1f1eb\",\"isCanonical\": true},\":wf:\":{\"unicode\":[\"1f1fc-1f1eb\"],\"fname\":\"1f1fc-1f1eb\",\"uc\":\"1f1fc-1f1eb\",\"isCanonical\": false},\":flag_vu:\":{\"unicode\":[\"1f1fb-1f1fa\"],\"fname\":\"1f1fb-1f1fa\",\"uc\":\"1f1fb-1f1fa\",\"isCanonical\": true},\":vu:\":{\"unicode\":[\"1f1fb-1f1fa\"],\"fname\":\"1f1fb-1f1fa\",\"uc\":\"1f1fb-1f1fa\",\"isCanonical\": false},\":flag_vn:\":{\"unicode\":[\"1f1fb-1f1f3\"],\"fname\":\"1f1fb-1f1f3\",\"uc\":\"1f1fb-1f1f3\",\"isCanonical\": true},\":vn:\":{\"unicode\":[\"1f1fb-1f1f3\"],\"fname\":\"1f1fb-1f1f3\",\"uc\":\"1f1fb-1f1f3\",\"isCanonical\": false},\":flag_vi:\":{\"unicode\":[\"1f1fb-1f1ee\"],\"fname\":\"1f1fb-1f1ee\",\"uc\":\"1f1fb-1f1ee\",\"isCanonical\": true},\":vi:\":{\"unicode\":[\"1f1fb-1f1ee\"],\"fname\":\"1f1fb-1f1ee\",\"uc\":\"1f1fb-1f1ee\",\"isCanonical\": false},\":flag_vg:\":{\"unicode\":[\"1f1fb-1f1ec\"],\"fname\":\"1f1fb-1f1ec\",\"uc\":\"1f1fb-1f1ec\",\"isCanonical\": true},\":vg:\":{\"unicode\":[\"1f1fb-1f1ec\"],\"fname\":\"1f1fb-1f1ec\",\"uc\":\"1f1fb-1f1ec\",\"isCanonical\": false},\":flag_ve:\":{\"unicode\":[\"1f1fb-1f1ea\"],\"fname\":\"1f1fb-1f1ea\",\"uc\":\"1f1fb-1f1ea\",\"isCanonical\": true},\":ve:\":{\"unicode\":[\"1f1fb-1f1ea\"],\"fname\":\"1f1fb-1f1ea\",\"uc\":\"1f1fb-1f1ea\",\"isCanonical\": false},\":flag_vc:\":{\"unicode\":[\"1f1fb-1f1e8\"],\"fname\":\"1f1fb-1f1e8\",\"uc\":\"1f1fb-1f1e8\",\"isCanonical\": true},\":vc:\":{\"unicode\":[\"1f1fb-1f1e8\"],\"fname\":\"1f1fb-1f1e8\",\"uc\":\"1f1fb-1f1e8\",\"isCanonical\": false},\":flag_va:\":{\"unicode\":[\"1f1fb-1f1e6\"],\"fname\":\"1f1fb-1f1e6\",\"uc\":\"1f1fb-1f1e6\",\"isCanonical\": true},\":va:\":{\"unicode\":[\"1f1fb-1f1e6\"],\"fname\":\"1f1fb-1f1e6\",\"uc\":\"1f1fb-1f1e6\",\"isCanonical\": false},\":flag_uz:\":{\"unicode\":[\"1f1fa-1f1ff\"],\"fname\":\"1f1fa-1f1ff\",\"uc\":\"1f1fa-1f1ff\",\"isCanonical\": true},\":uz:\":{\"unicode\":[\"1f1fa-1f1ff\"],\"fname\":\"1f1fa-1f1ff\",\"uc\":\"1f1fa-1f1ff\",\"isCanonical\": false},\":flag_uy:\":{\"unicode\":[\"1f1fa-1f1fe\"],\"fname\":\"1f1fa-1f1fe\",\"uc\":\"1f1fa-1f1fe\",\"isCanonical\": true},\":uy:\":{\"unicode\":[\"1f1fa-1f1fe\"],\"fname\":\"1f1fa-1f1fe\",\"uc\":\"1f1fa-1f1fe\",\"isCanonical\": false},\":flag_us:\":{\"unicode\":[\"1f1fa-1f1f8\"],\"fname\":\"1f1fa-1f1f8\",\"uc\":\"1f1fa-1f1f8\",\"isCanonical\": true},\":us:\":{\"unicode\":[\"1f1fa-1f1f8\"],\"fname\":\"1f1fa-1f1f8\",\"uc\":\"1f1fa-1f1f8\",\"isCanonical\": false},\":flag_um:\":{\"unicode\":[\"1f1fa-1f1f2\"],\"fname\":\"1f1fa-1f1f2\",\"uc\":\"1f1fa-1f1f2\",\"isCanonical\": true},\":um:\":{\"unicode\":[\"1f1fa-1f1f2\"],\"fname\":\"1f1fa-1f1f2\",\"uc\":\"1f1fa-1f1f2\",\"isCanonical\": false},\":flag_ug:\":{\"unicode\":[\"1f1fa-1f1ec\"],\"fname\":\"1f1fa-1f1ec\",\"uc\":\"1f1fa-1f1ec\",\"isCanonical\": true},\":ug:\":{\"unicode\":[\"1f1fa-1f1ec\"],\"fname\":\"1f1fa-1f1ec\",\"uc\":\"1f1fa-1f1ec\",\"isCanonical\": false},\":flag_ua:\":{\"unicode\":[\"1f1fa-1f1e6\"],\"fname\":\"1f1fa-1f1e6\",\"uc\":\"1f1fa-1f1e6\",\"isCanonical\": true},\":ua:\":{\"unicode\":[\"1f1fa-1f1e6\"],\"fname\":\"1f1fa-1f1e6\",\"uc\":\"1f1fa-1f1e6\",\"isCanonical\": false},\":flag_tz:\":{\"unicode\":[\"1f1f9-1f1ff\"],\"fname\":\"1f1f9-1f1ff\",\"uc\":\"1f1f9-1f1ff\",\"isCanonical\": true},\":tz:\":{\"unicode\":[\"1f1f9-1f1ff\"],\"fname\":\"1f1f9-1f1ff\",\"uc\":\"1f1f9-1f1ff\",\"isCanonical\": false},\":flag_tw:\":{\"unicode\":[\"1f1f9-1f1fc\"],\"fname\":\"1f1f9-1f1fc\",\"uc\":\"1f1f9-1f1fc\",\"isCanonical\": true},\":tw:\":{\"unicode\":[\"1f1f9-1f1fc\"],\"fname\":\"1f1f9-1f1fc\",\"uc\":\"1f1f9-1f1fc\",\"isCanonical\": false},\":flag_tv:\":{\"unicode\":[\"1f1f9-1f1fb\"],\"fname\":\"1f1f9-1f1fb\",\"uc\":\"1f1f9-1f1fb\",\"isCanonical\": true},\":tuvalu:\":{\"unicode\":[\"1f1f9-1f1fb\"],\"fname\":\"1f1f9-1f1fb\",\"uc\":\"1f1f9-1f1fb\",\"isCanonical\": false},\":flag_tt:\":{\"unicode\":[\"1f1f9-1f1f9\"],\"fname\":\"1f1f9-1f1f9\",\"uc\":\"1f1f9-1f1f9\",\"isCanonical\": true},\":tt:\":{\"unicode\":[\"1f1f9-1f1f9\"],\"fname\":\"1f1f9-1f1f9\",\"uc\":\"1f1f9-1f1f9\",\"isCanonical\": false},\":flag_tr:\":{\"unicode\":[\"1f1f9-1f1f7\"],\"fname\":\"1f1f9-1f1f7\",\"uc\":\"1f1f9-1f1f7\",\"isCanonical\": true},\":tr:\":{\"unicode\":[\"1f1f9-1f1f7\"],\"fname\":\"1f1f9-1f1f7\",\"uc\":\"1f1f9-1f1f7\",\"isCanonical\": false},\":flag_to:\":{\"unicode\":[\"1f1f9-1f1f4\"],\"fname\":\"1f1f9-1f1f4\",\"uc\":\"1f1f9-1f1f4\",\"isCanonical\": true},\":to:\":{\"unicode\":[\"1f1f9-1f1f4\"],\"fname\":\"1f1f9-1f1f4\",\"uc\":\"1f1f9-1f1f4\",\"isCanonical\": false},\":flag_tn:\":{\"unicode\":[\"1f1f9-1f1f3\"],\"fname\":\"1f1f9-1f1f3\",\"uc\":\"1f1f9-1f1f3\",\"isCanonical\": true},\":tn:\":{\"unicode\":[\"1f1f9-1f1f3\"],\"fname\":\"1f1f9-1f1f3\",\"uc\":\"1f1f9-1f1f3\",\"isCanonical\": false},\":flag_tm:\":{\"unicode\":[\"1f1f9-1f1f2\"],\"fname\":\"1f1f9-1f1f2\",\"uc\":\"1f1f9-1f1f2\",\"isCanonical\": true},\":turkmenistan:\":{\"unicode\":[\"1f1f9-1f1f2\"],\"fname\":\"1f1f9-1f1f2\",\"uc\":\"1f1f9-1f1f2\",\"isCanonical\": false},\":flag_tl:\":{\"unicode\":[\"1f1f9-1f1f1\"],\"fname\":\"1f1f9-1f1f1\",\"uc\":\"1f1f9-1f1f1\",\"isCanonical\": true},\":tl:\":{\"unicode\":[\"1f1f9-1f1f1\"],\"fname\":\"1f1f9-1f1f1\",\"uc\":\"1f1f9-1f1f1\",\"isCanonical\": false},\":flag_tk:\":{\"unicode\":[\"1f1f9-1f1f0\"],\"fname\":\"1f1f9-1f1f0\",\"uc\":\"1f1f9-1f1f0\",\"isCanonical\": true},\":tk:\":{\"unicode\":[\"1f1f9-1f1f0\"],\"fname\":\"1f1f9-1f1f0\",\"uc\":\"1f1f9-1f1f0\",\"isCanonical\": false},\":flag_tj:\":{\"unicode\":[\"1f1f9-1f1ef\"],\"fname\":\"1f1f9-1f1ef\",\"uc\":\"1f1f9-1f1ef\",\"isCanonical\": true},\":tj:\":{\"unicode\":[\"1f1f9-1f1ef\"],\"fname\":\"1f1f9-1f1ef\",\"uc\":\"1f1f9-1f1ef\",\"isCanonical\": false},\":flag_th:\":{\"unicode\":[\"1f1f9-1f1ed\"],\"fname\":\"1f1f9-1f1ed\",\"uc\":\"1f1f9-1f1ed\",\"isCanonical\": true},\":th:\":{\"unicode\":[\"1f1f9-1f1ed\"],\"fname\":\"1f1f9-1f1ed\",\"uc\":\"1f1f9-1f1ed\",\"isCanonical\": false},\":flag_tg:\":{\"unicode\":[\"1f1f9-1f1ec\"],\"fname\":\"1f1f9-1f1ec\",\"uc\":\"1f1f9-1f1ec\",\"isCanonical\": true},\":tg:\":{\"unicode\":[\"1f1f9-1f1ec\"],\"fname\":\"1f1f9-1f1ec\",\"uc\":\"1f1f9-1f1ec\",\"isCanonical\": false},\":flag_tf:\":{\"unicode\":[\"1f1f9-1f1eb\"],\"fname\":\"1f1f9-1f1eb\",\"uc\":\"1f1f9-1f1eb\",\"isCanonical\": true},\":tf:\":{\"unicode\":[\"1f1f9-1f1eb\"],\"fname\":\"1f1f9-1f1eb\",\"uc\":\"1f1f9-1f1eb\",\"isCanonical\": false},\":flag_td:\":{\"unicode\":[\"1f1f9-1f1e9\"],\"fname\":\"1f1f9-1f1e9\",\"uc\":\"1f1f9-1f1e9\",\"isCanonical\": true},\":td:\":{\"unicode\":[\"1f1f9-1f1e9\"],\"fname\":\"1f1f9-1f1e9\",\"uc\":\"1f1f9-1f1e9\",\"isCanonical\": false},\":flag_tc:\":{\"unicode\":[\"1f1f9-1f1e8\"],\"fname\":\"1f1f9-1f1e8\",\"uc\":\"1f1f9-1f1e8\",\"isCanonical\": true},\":tc:\":{\"unicode\":[\"1f1f9-1f1e8\"],\"fname\":\"1f1f9-1f1e8\",\"uc\":\"1f1f9-1f1e8\",\"isCanonical\": false},\":flag_ta:\":{\"unicode\":[\"1f1f9-1f1e6\"],\"fname\":\"1f1f9-1f1e6\",\"uc\":\"1f1f9-1f1e6\",\"isCanonical\": true},\":ta:\":{\"unicode\":[\"1f1f9-1f1e6\"],\"fname\":\"1f1f9-1f1e6\",\"uc\":\"1f1f9-1f1e6\",\"isCanonical\": false},\":flag_sz:\":{\"unicode\":[\"1f1f8-1f1ff\"],\"fname\":\"1f1f8-1f1ff\",\"uc\":\"1f1f8-1f1ff\",\"isCanonical\": true},\":sz:\":{\"unicode\":[\"1f1f8-1f1ff\"],\"fname\":\"1f1f8-1f1ff\",\"uc\":\"1f1f8-1f1ff\",\"isCanonical\": false},\":flag_sy:\":{\"unicode\":[\"1f1f8-1f1fe\"],\"fname\":\"1f1f8-1f1fe\",\"uc\":\"1f1f8-1f1fe\",\"isCanonical\": true},\":sy:\":{\"unicode\":[\"1f1f8-1f1fe\"],\"fname\":\"1f1f8-1f1fe\",\"uc\":\"1f1f8-1f1fe\",\"isCanonical\": false},\":flag_sx:\":{\"unicode\":[\"1f1f8-1f1fd\"],\"fname\":\"1f1f8-1f1fd\",\"uc\":\"1f1f8-1f1fd\",\"isCanonical\": true},\":sx:\":{\"unicode\":[\"1f1f8-1f1fd\"],\"fname\":\"1f1f8-1f1fd\",\"uc\":\"1f1f8-1f1fd\",\"isCanonical\": false},\":flag_sv:\":{\"unicode\":[\"1f1f8-1f1fb\"],\"fname\":\"1f1f8-1f1fb\",\"uc\":\"1f1f8-1f1fb\",\"isCanonical\": true},\":sv:\":{\"unicode\":[\"1f1f8-1f1fb\"],\"fname\":\"1f1f8-1f1fb\",\"uc\":\"1f1f8-1f1fb\",\"isCanonical\": false},\":flag_st:\":{\"unicode\":[\"1f1f8-1f1f9\"],\"fname\":\"1f1f8-1f1f9\",\"uc\":\"1f1f8-1f1f9\",\"isCanonical\": true},\":st:\":{\"unicode\":[\"1f1f8-1f1f9\"],\"fname\":\"1f1f8-1f1f9\",\"uc\":\"1f1f8-1f1f9\",\"isCanonical\": false},\":flag_ss:\":{\"unicode\":[\"1f1f8-1f1f8\"],\"fname\":\"1f1f8-1f1f8\",\"uc\":\"1f1f8-1f1f8\",\"isCanonical\": true},\":ss:\":{\"unicode\":[\"1f1f8-1f1f8\"],\"fname\":\"1f1f8-1f1f8\",\"uc\":\"1f1f8-1f1f8\",\"isCanonical\": false},\":flag_sr:\":{\"unicode\":[\"1f1f8-1f1f7\"],\"fname\":\"1f1f8-1f1f7\",\"uc\":\"1f1f8-1f1f7\",\"isCanonical\": true},\":sr:\":{\"unicode\":[\"1f1f8-1f1f7\"],\"fname\":\"1f1f8-1f1f7\",\"uc\":\"1f1f8-1f1f7\",\"isCanonical\": false},\":flag_so:\":{\"unicode\":[\"1f1f8-1f1f4\"],\"fname\":\"1f1f8-1f1f4\",\"uc\":\"1f1f8-1f1f4\",\"isCanonical\": true},\":so:\":{\"unicode\":[\"1f1f8-1f1f4\"],\"fname\":\"1f1f8-1f1f4\",\"uc\":\"1f1f8-1f1f4\",\"isCanonical\": false},\":flag_sn:\":{\"unicode\":[\"1f1f8-1f1f3\"],\"fname\":\"1f1f8-1f1f3\",\"uc\":\"1f1f8-1f1f3\",\"isCanonical\": true},\":sn:\":{\"unicode\":[\"1f1f8-1f1f3\"],\"fname\":\"1f1f8-1f1f3\",\"uc\":\"1f1f8-1f1f3\",\"isCanonical\": false},\":flag_sm:\":{\"unicode\":[\"1f1f8-1f1f2\"],\"fname\":\"1f1f8-1f1f2\",\"uc\":\"1f1f8-1f1f2\",\"isCanonical\": true},\":sm:\":{\"unicode\":[\"1f1f8-1f1f2\"],\"fname\":\"1f1f8-1f1f2\",\"uc\":\"1f1f8-1f1f2\",\"isCanonical\": false},\":flag_sl:\":{\"unicode\":[\"1f1f8-1f1f1\"],\"fname\":\"1f1f8-1f1f1\",\"uc\":\"1f1f8-1f1f1\",\"isCanonical\": true},\":sl:\":{\"unicode\":[\"1f1f8-1f1f1\"],\"fname\":\"1f1f8-1f1f1\",\"uc\":\"1f1f8-1f1f1\",\"isCanonical\": false},\":flag_sk:\":{\"unicode\":[\"1f1f8-1f1f0\"],\"fname\":\"1f1f8-1f1f0\",\"uc\":\"1f1f8-1f1f0\",\"isCanonical\": true},\":sk:\":{\"unicode\":[\"1f1f8-1f1f0\"],\"fname\":\"1f1f8-1f1f0\",\"uc\":\"1f1f8-1f1f0\",\"isCanonical\": false},\":flag_sj:\":{\"unicode\":[\"1f1f8-1f1ef\"],\"fname\":\"1f1f8-1f1ef\",\"uc\":\"1f1f8-1f1ef\",\"isCanonical\": true},\":sj:\":{\"unicode\":[\"1f1f8-1f1ef\"],\"fname\":\"1f1f8-1f1ef\",\"uc\":\"1f1f8-1f1ef\",\"isCanonical\": false},\":flag_si:\":{\"unicode\":[\"1f1f8-1f1ee\"],\"fname\":\"1f1f8-1f1ee\",\"uc\":\"1f1f8-1f1ee\",\"isCanonical\": true},\":si:\":{\"unicode\":[\"1f1f8-1f1ee\"],\"fname\":\"1f1f8-1f1ee\",\"uc\":\"1f1f8-1f1ee\",\"isCanonical\": false},\":flag_sh:\":{\"unicode\":[\"1f1f8-1f1ed\"],\"fname\":\"1f1f8-1f1ed\",\"uc\":\"1f1f8-1f1ed\",\"isCanonical\": true},\":sh:\":{\"unicode\":[\"1f1f8-1f1ed\"],\"fname\":\"1f1f8-1f1ed\",\"uc\":\"1f1f8-1f1ed\",\"isCanonical\": false},\":flag_sg:\":{\"unicode\":[\"1f1f8-1f1ec\"],\"fname\":\"1f1f8-1f1ec\",\"uc\":\"1f1f8-1f1ec\",\"isCanonical\": true},\":sg:\":{\"unicode\":[\"1f1f8-1f1ec\"],\"fname\":\"1f1f8-1f1ec\",\"uc\":\"1f1f8-1f1ec\",\"isCanonical\": false},\":flag_se:\":{\"unicode\":[\"1f1f8-1f1ea\"],\"fname\":\"1f1f8-1f1ea\",\"uc\":\"1f1f8-1f1ea\",\"isCanonical\": true},\":se:\":{\"unicode\":[\"1f1f8-1f1ea\"],\"fname\":\"1f1f8-1f1ea\",\"uc\":\"1f1f8-1f1ea\",\"isCanonical\": false},\":flag_sd:\":{\"unicode\":[\"1f1f8-1f1e9\"],\"fname\":\"1f1f8-1f1e9\",\"uc\":\"1f1f8-1f1e9\",\"isCanonical\": true},\":sd:\":{\"unicode\":[\"1f1f8-1f1e9\"],\"fname\":\"1f1f8-1f1e9\",\"uc\":\"1f1f8-1f1e9\",\"isCanonical\": false},\":flag_sc:\":{\"unicode\":[\"1f1f8-1f1e8\"],\"fname\":\"1f1f8-1f1e8\",\"uc\":\"1f1f8-1f1e8\",\"isCanonical\": true},\":sc:\":{\"unicode\":[\"1f1f8-1f1e8\"],\"fname\":\"1f1f8-1f1e8\",\"uc\":\"1f1f8-1f1e8\",\"isCanonical\": false},\":flag_sb:\":{\"unicode\":[\"1f1f8-1f1e7\"],\"fname\":\"1f1f8-1f1e7\",\"uc\":\"1f1f8-1f1e7\",\"isCanonical\": true},\":sb:\":{\"unicode\":[\"1f1f8-1f1e7\"],\"fname\":\"1f1f8-1f1e7\",\"uc\":\"1f1f8-1f1e7\",\"isCanonical\": false},\":flag_sa:\":{\"unicode\":[\"1f1f8-1f1e6\"],\"fname\":\"1f1f8-1f1e6\",\"uc\":\"1f1f8-1f1e6\",\"isCanonical\": true},\":saudiarabia:\":{\"unicode\":[\"1f1f8-1f1e6\"],\"fname\":\"1f1f8-1f1e6\",\"uc\":\"1f1f8-1f1e6\",\"isCanonical\": false},\":saudi:\":{\"unicode\":[\"1f1f8-1f1e6\"],\"fname\":\"1f1f8-1f1e6\",\"uc\":\"1f1f8-1f1e6\",\"isCanonical\": false},\":flag_rw:\":{\"unicode\":[\"1f1f7-1f1fc\"],\"fname\":\"1f1f7-1f1fc\",\"uc\":\"1f1f7-1f1fc\",\"isCanonical\": true},\":rw:\":{\"unicode\":[\"1f1f7-1f1fc\"],\"fname\":\"1f1f7-1f1fc\",\"uc\":\"1f1f7-1f1fc\",\"isCanonical\": false},\":flag_ru:\":{\"unicode\":[\"1f1f7-1f1fa\"],\"fname\":\"1f1f7-1f1fa\",\"uc\":\"1f1f7-1f1fa\",\"isCanonical\": true},\":ru:\":{\"unicode\":[\"1f1f7-1f1fa\"],\"fname\":\"1f1f7-1f1fa\",\"uc\":\"1f1f7-1f1fa\",\"isCanonical\": false},\":flag_rs:\":{\"unicode\":[\"1f1f7-1f1f8\"],\"fname\":\"1f1f7-1f1f8\",\"uc\":\"1f1f7-1f1f8\",\"isCanonical\": true},\":rs:\":{\"unicode\":[\"1f1f7-1f1f8\"],\"fname\":\"1f1f7-1f1f8\",\"uc\":\"1f1f7-1f1f8\",\"isCanonical\": false},\":flag_ro:\":{\"unicode\":[\"1f1f7-1f1f4\"],\"fname\":\"1f1f7-1f1f4\",\"uc\":\"1f1f7-1f1f4\",\"isCanonical\": true},\":ro:\":{\"unicode\":[\"1f1f7-1f1f4\"],\"fname\":\"1f1f7-1f1f4\",\"uc\":\"1f1f7-1f1f4\",\"isCanonical\": false},\":flag_re:\":{\"unicode\":[\"1f1f7-1f1ea\"],\"fname\":\"1f1f7-1f1ea\",\"uc\":\"1f1f7-1f1ea\",\"isCanonical\": true},\":re:\":{\"unicode\":[\"1f1f7-1f1ea\"],\"fname\":\"1f1f7-1f1ea\",\"uc\":\"1f1f7-1f1ea\",\"isCanonical\": false},\":flag_qa:\":{\"unicode\":[\"1f1f6-1f1e6\"],\"fname\":\"1f1f6-1f1e6\",\"uc\":\"1f1f6-1f1e6\",\"isCanonical\": true},\":qa:\":{\"unicode\":[\"1f1f6-1f1e6\"],\"fname\":\"1f1f6-1f1e6\",\"uc\":\"1f1f6-1f1e6\",\"isCanonical\": false},\":flag_py:\":{\"unicode\":[\"1f1f5-1f1fe\"],\"fname\":\"1f1f5-1f1fe\",\"uc\":\"1f1f5-1f1fe\",\"isCanonical\": true},\":py:\":{\"unicode\":[\"1f1f5-1f1fe\"],\"fname\":\"1f1f5-1f1fe\",\"uc\":\"1f1f5-1f1fe\",\"isCanonical\": false},\":flag_pw:\":{\"unicode\":[\"1f1f5-1f1fc\"],\"fname\":\"1f1f5-1f1fc\",\"uc\":\"1f1f5-1f1fc\",\"isCanonical\": true},\":pw:\":{\"unicode\":[\"1f1f5-1f1fc\"],\"fname\":\"1f1f5-1f1fc\",\"uc\":\"1f1f5-1f1fc\",\"isCanonical\": false},\":flag_pt:\":{\"unicode\":[\"1f1f5-1f1f9\"],\"fname\":\"1f1f5-1f1f9\",\"uc\":\"1f1f5-1f1f9\",\"isCanonical\": true},\":pt:\":{\"unicode\":[\"1f1f5-1f1f9\"],\"fname\":\"1f1f5-1f1f9\",\"uc\":\"1f1f5-1f1f9\",\"isCanonical\": false},\":flag_ps:\":{\"unicode\":[\"1f1f5-1f1f8\"],\"fname\":\"1f1f5-1f1f8\",\"uc\":\"1f1f5-1f1f8\",\"isCanonical\": true},\":ps:\":{\"unicode\":[\"1f1f5-1f1f8\"],\"fname\":\"1f1f5-1f1f8\",\"uc\":\"1f1f5-1f1f8\",\"isCanonical\": false},\":flag_pr:\":{\"unicode\":[\"1f1f5-1f1f7\"],\"fname\":\"1f1f5-1f1f7\",\"uc\":\"1f1f5-1f1f7\",\"isCanonical\": true},\":pr:\":{\"unicode\":[\"1f1f5-1f1f7\"],\"fname\":\"1f1f5-1f1f7\",\"uc\":\"1f1f5-1f1f7\",\"isCanonical\": false},\":flag_pn:\":{\"unicode\":[\"1f1f5-1f1f3\"],\"fname\":\"1f1f5-1f1f3\",\"uc\":\"1f1f5-1f1f3\",\"isCanonical\": true},\":pn:\":{\"unicode\":[\"1f1f5-1f1f3\"],\"fname\":\"1f1f5-1f1f3\",\"uc\":\"1f1f5-1f1f3\",\"isCanonical\": false},\":flag_pm:\":{\"unicode\":[\"1f1f5-1f1f2\"],\"fname\":\"1f1f5-1f1f2\",\"uc\":\"1f1f5-1f1f2\",\"isCanonical\": true},\":pm:\":{\"unicode\":[\"1f1f5-1f1f2\"],\"fname\":\"1f1f5-1f1f2\",\"uc\":\"1f1f5-1f1f2\",\"isCanonical\": false},\":flag_pl:\":{\"unicode\":[\"1f1f5-1f1f1\"],\"fname\":\"1f1f5-1f1f1\",\"uc\":\"1f1f5-1f1f1\",\"isCanonical\": true},\":pl:\":{\"unicode\":[\"1f1f5-1f1f1\"],\"fname\":\"1f1f5-1f1f1\",\"uc\":\"1f1f5-1f1f1\",\"isCanonical\": false},\":flag_pk:\":{\"unicode\":[\"1f1f5-1f1f0\"],\"fname\":\"1f1f5-1f1f0\",\"uc\":\"1f1f5-1f1f0\",\"isCanonical\": true},\":pk:\":{\"unicode\":[\"1f1f5-1f1f0\"],\"fname\":\"1f1f5-1f1f0\",\"uc\":\"1f1f5-1f1f0\",\"isCanonical\": false},\":flag_ph:\":{\"unicode\":[\"1f1f5-1f1ed\"],\"fname\":\"1f1f5-1f1ed\",\"uc\":\"1f1f5-1f1ed\",\"isCanonical\": true},\":ph:\":{\"unicode\":[\"1f1f5-1f1ed\"],\"fname\":\"1f1f5-1f1ed\",\"uc\":\"1f1f5-1f1ed\",\"isCanonical\": false},\":flag_pg:\":{\"unicode\":[\"1f1f5-1f1ec\"],\"fname\":\"1f1f5-1f1ec\",\"uc\":\"1f1f5-1f1ec\",\"isCanonical\": true},\":pg:\":{\"unicode\":[\"1f1f5-1f1ec\"],\"fname\":\"1f1f5-1f1ec\",\"uc\":\"1f1f5-1f1ec\",\"isCanonical\": false},\":flag_pf:\":{\"unicode\":[\"1f1f5-1f1eb\"],\"fname\":\"1f1f5-1f1eb\",\"uc\":\"1f1f5-1f1eb\",\"isCanonical\": true},\":pf:\":{\"unicode\":[\"1f1f5-1f1eb\"],\"fname\":\"1f1f5-1f1eb\",\"uc\":\"1f1f5-1f1eb\",\"isCanonical\": false},\":flag_pe:\":{\"unicode\":[\"1f1f5-1f1ea\"],\"fname\":\"1f1f5-1f1ea\",\"uc\":\"1f1f5-1f1ea\",\"isCanonical\": true},\":pe:\":{\"unicode\":[\"1f1f5-1f1ea\"],\"fname\":\"1f1f5-1f1ea\",\"uc\":\"1f1f5-1f1ea\",\"isCanonical\": false},\":flag_pa:\":{\"unicode\":[\"1f1f5-1f1e6\"],\"fname\":\"1f1f5-1f1e6\",\"uc\":\"1f1f5-1f1e6\",\"isCanonical\": true},\":pa:\":{\"unicode\":[\"1f1f5-1f1e6\"],\"fname\":\"1f1f5-1f1e6\",\"uc\":\"1f1f5-1f1e6\",\"isCanonical\": false},\":flag_om:\":{\"unicode\":[\"1f1f4-1f1f2\"],\"fname\":\"1f1f4-1f1f2\",\"uc\":\"1f1f4-1f1f2\",\"isCanonical\": true},\":om:\":{\"unicode\":[\"1f1f4-1f1f2\"],\"fname\":\"1f1f4-1f1f2\",\"uc\":\"1f1f4-1f1f2\",\"isCanonical\": false},\":flag_nz:\":{\"unicode\":[\"1f1f3-1f1ff\"],\"fname\":\"1f1f3-1f1ff\",\"uc\":\"1f1f3-1f1ff\",\"isCanonical\": true},\":nz:\":{\"unicode\":[\"1f1f3-1f1ff\"],\"fname\":\"1f1f3-1f1ff\",\"uc\":\"1f1f3-1f1ff\",\"isCanonical\": false},\":flag_nu:\":{\"unicode\":[\"1f1f3-1f1fa\"],\"fname\":\"1f1f3-1f1fa\",\"uc\":\"1f1f3-1f1fa\",\"isCanonical\": true},\":nu:\":{\"unicode\":[\"1f1f3-1f1fa\"],\"fname\":\"1f1f3-1f1fa\",\"uc\":\"1f1f3-1f1fa\",\"isCanonical\": false},\":flag_nr:\":{\"unicode\":[\"1f1f3-1f1f7\"],\"fname\":\"1f1f3-1f1f7\",\"uc\":\"1f1f3-1f1f7\",\"isCanonical\": true},\":nr:\":{\"unicode\":[\"1f1f3-1f1f7\"],\"fname\":\"1f1f3-1f1f7\",\"uc\":\"1f1f3-1f1f7\",\"isCanonical\": false},\":flag_np:\":{\"unicode\":[\"1f1f3-1f1f5\"],\"fname\":\"1f1f3-1f1f5\",\"uc\":\"1f1f3-1f1f5\",\"isCanonical\": true},\":np:\":{\"unicode\":[\"1f1f3-1f1f5\"],\"fname\":\"1f1f3-1f1f5\",\"uc\":\"1f1f3-1f1f5\",\"isCanonical\": false},\":flag_no:\":{\"unicode\":[\"1f1f3-1f1f4\"],\"fname\":\"1f1f3-1f1f4\",\"uc\":\"1f1f3-1f1f4\",\"isCanonical\": true},\":no:\":{\"unicode\":[\"1f1f3-1f1f4\"],\"fname\":\"1f1f3-1f1f4\",\"uc\":\"1f1f3-1f1f4\",\"isCanonical\": false},\":flag_nl:\":{\"unicode\":[\"1f1f3-1f1f1\"],\"fname\":\"1f1f3-1f1f1\",\"uc\":\"1f1f3-1f1f1\",\"isCanonical\": true},\":nl:\":{\"unicode\":[\"1f1f3-1f1f1\"],\"fname\":\"1f1f3-1f1f1\",\"uc\":\"1f1f3-1f1f1\",\"isCanonical\": false},\":flag_ni:\":{\"unicode\":[\"1f1f3-1f1ee\"],\"fname\":\"1f1f3-1f1ee\",\"uc\":\"1f1f3-1f1ee\",\"isCanonical\": true},\":ni:\":{\"unicode\":[\"1f1f3-1f1ee\"],\"fname\":\"1f1f3-1f1ee\",\"uc\":\"1f1f3-1f1ee\",\"isCanonical\": false},\":flag_ng:\":{\"unicode\":[\"1f1f3-1f1ec\"],\"fname\":\"1f1f3-1f1ec\",\"uc\":\"1f1f3-1f1ec\",\"isCanonical\": true},\":nigeria:\":{\"unicode\":[\"1f1f3-1f1ec\"],\"fname\":\"1f1f3-1f1ec\",\"uc\":\"1f1f3-1f1ec\",\"isCanonical\": false},\":flag_nf:\":{\"unicode\":[\"1f1f3-1f1eb\"],\"fname\":\"1f1f3-1f1eb\",\"uc\":\"1f1f3-1f1eb\",\"isCanonical\": true},\":nf:\":{\"unicode\":[\"1f1f3-1f1eb\"],\"fname\":\"1f1f3-1f1eb\",\"uc\":\"1f1f3-1f1eb\",\"isCanonical\": false},\":flag_ne:\":{\"unicode\":[\"1f1f3-1f1ea\"],\"fname\":\"1f1f3-1f1ea\",\"uc\":\"1f1f3-1f1ea\",\"isCanonical\": true},\":ne:\":{\"unicode\":[\"1f1f3-1f1ea\"],\"fname\":\"1f1f3-1f1ea\",\"uc\":\"1f1f3-1f1ea\",\"isCanonical\": false},\":flag_nc:\":{\"unicode\":[\"1f1f3-1f1e8\"],\"fname\":\"1f1f3-1f1e8\",\"uc\":\"1f1f3-1f1e8\",\"isCanonical\": true},\":nc:\":{\"unicode\":[\"1f1f3-1f1e8\"],\"fname\":\"1f1f3-1f1e8\",\"uc\":\"1f1f3-1f1e8\",\"isCanonical\": false},\":flag_na:\":{\"unicode\":[\"1f1f3-1f1e6\"],\"fname\":\"1f1f3-1f1e6\",\"uc\":\"1f1f3-1f1e6\",\"isCanonical\": true},\":na:\":{\"unicode\":[\"1f1f3-1f1e6\"],\"fname\":\"1f1f3-1f1e6\",\"uc\":\"1f1f3-1f1e6\",\"isCanonical\": false},\":flag_mz:\":{\"unicode\":[\"1f1f2-1f1ff\"],\"fname\":\"1f1f2-1f1ff\",\"uc\":\"1f1f2-1f1ff\",\"isCanonical\": true},\":mz:\":{\"unicode\":[\"1f1f2-1f1ff\"],\"fname\":\"1f1f2-1f1ff\",\"uc\":\"1f1f2-1f1ff\",\"isCanonical\": false},\":flag_my:\":{\"unicode\":[\"1f1f2-1f1fe\"],\"fname\":\"1f1f2-1f1fe\",\"uc\":\"1f1f2-1f1fe\",\"isCanonical\": true},\":my:\":{\"unicode\":[\"1f1f2-1f1fe\"],\"fname\":\"1f1f2-1f1fe\",\"uc\":\"1f1f2-1f1fe\",\"isCanonical\": false},\":flag_mx:\":{\"unicode\":[\"1f1f2-1f1fd\"],\"fname\":\"1f1f2-1f1fd\",\"uc\":\"1f1f2-1f1fd\",\"isCanonical\": true},\":mx:\":{\"unicode\":[\"1f1f2-1f1fd\"],\"fname\":\"1f1f2-1f1fd\",\"uc\":\"1f1f2-1f1fd\",\"isCanonical\": false},\":flag_mw:\":{\"unicode\":[\"1f1f2-1f1fc\"],\"fname\":\"1f1f2-1f1fc\",\"uc\":\"1f1f2-1f1fc\",\"isCanonical\": true},\":mw:\":{\"unicode\":[\"1f1f2-1f1fc\"],\"fname\":\"1f1f2-1f1fc\",\"uc\":\"1f1f2-1f1fc\",\"isCanonical\": false},\":flag_mv:\":{\"unicode\":[\"1f1f2-1f1fb\"],\"fname\":\"1f1f2-1f1fb\",\"uc\":\"1f1f2-1f1fb\",\"isCanonical\": true},\":mv:\":{\"unicode\":[\"1f1f2-1f1fb\"],\"fname\":\"1f1f2-1f1fb\",\"uc\":\"1f1f2-1f1fb\",\"isCanonical\": false},\":flag_mu:\":{\"unicode\":[\"1f1f2-1f1fa\"],\"fname\":\"1f1f2-1f1fa\",\"uc\":\"1f1f2-1f1fa\",\"isCanonical\": true},\":mu:\":{\"unicode\":[\"1f1f2-1f1fa\"],\"fname\":\"1f1f2-1f1fa\",\"uc\":\"1f1f2-1f1fa\",\"isCanonical\": false},\":flag_mt:\":{\"unicode\":[\"1f1f2-1f1f9\"],\"fname\":\"1f1f2-1f1f9\",\"uc\":\"1f1f2-1f1f9\",\"isCanonical\": true},\":mt:\":{\"unicode\":[\"1f1f2-1f1f9\"],\"fname\":\"1f1f2-1f1f9\",\"uc\":\"1f1f2-1f1f9\",\"isCanonical\": false},\":flag_ms:\":{\"unicode\":[\"1f1f2-1f1f8\"],\"fname\":\"1f1f2-1f1f8\",\"uc\":\"1f1f2-1f1f8\",\"isCanonical\": true},\":ms:\":{\"unicode\":[\"1f1f2-1f1f8\"],\"fname\":\"1f1f2-1f1f8\",\"uc\":\"1f1f2-1f1f8\",\"isCanonical\": false},\":flag_mr:\":{\"unicode\":[\"1f1f2-1f1f7\"],\"fname\":\"1f1f2-1f1f7\",\"uc\":\"1f1f2-1f1f7\",\"isCanonical\": true},\":mr:\":{\"unicode\":[\"1f1f2-1f1f7\"],\"fname\":\"1f1f2-1f1f7\",\"uc\":\"1f1f2-1f1f7\",\"isCanonical\": false},\":flag_mq:\":{\"unicode\":[\"1f1f2-1f1f6\"],\"fname\":\"1f1f2-1f1f6\",\"uc\":\"1f1f2-1f1f6\",\"isCanonical\": true},\":mq:\":{\"unicode\":[\"1f1f2-1f1f6\"],\"fname\":\"1f1f2-1f1f6\",\"uc\":\"1f1f2-1f1f6\",\"isCanonical\": false},\":flag_mp:\":{\"unicode\":[\"1f1f2-1f1f5\"],\"fname\":\"1f1f2-1f1f5\",\"uc\":\"1f1f2-1f1f5\",\"isCanonical\": true},\":mp:\":{\"unicode\":[\"1f1f2-1f1f5\"],\"fname\":\"1f1f2-1f1f5\",\"uc\":\"1f1f2-1f1f5\",\"isCanonical\": false},\":flag_mo:\":{\"unicode\":[\"1f1f2-1f1f4\"],\"fname\":\"1f1f2-1f1f4\",\"uc\":\"1f1f2-1f1f4\",\"isCanonical\": true},\":mo:\":{\"unicode\":[\"1f1f2-1f1f4\"],\"fname\":\"1f1f2-1f1f4\",\"uc\":\"1f1f2-1f1f4\",\"isCanonical\": false},\":flag_mn:\":{\"unicode\":[\"1f1f2-1f1f3\"],\"fname\":\"1f1f2-1f1f3\",\"uc\":\"1f1f2-1f1f3\",\"isCanonical\": true},\":mn:\":{\"unicode\":[\"1f1f2-1f1f3\"],\"fname\":\"1f1f2-1f1f3\",\"uc\":\"1f1f2-1f1f3\",\"isCanonical\": false},\":flag_mm:\":{\"unicode\":[\"1f1f2-1f1f2\"],\"fname\":\"1f1f2-1f1f2\",\"uc\":\"1f1f2-1f1f2\",\"isCanonical\": true},\":mm:\":{\"unicode\":[\"1f1f2-1f1f2\"],\"fname\":\"1f1f2-1f1f2\",\"uc\":\"1f1f2-1f1f2\",\"isCanonical\": false},\":flag_ml:\":{\"unicode\":[\"1f1f2-1f1f1\"],\"fname\":\"1f1f2-1f1f1\",\"uc\":\"1f1f2-1f1f1\",\"isCanonical\": true},\":ml:\":{\"unicode\":[\"1f1f2-1f1f1\"],\"fname\":\"1f1f2-1f1f1\",\"uc\":\"1f1f2-1f1f1\",\"isCanonical\": false},\":flag_mk:\":{\"unicode\":[\"1f1f2-1f1f0\"],\"fname\":\"1f1f2-1f1f0\",\"uc\":\"1f1f2-1f1f0\",\"isCanonical\": true},\":mk:\":{\"unicode\":[\"1f1f2-1f1f0\"],\"fname\":\"1f1f2-1f1f0\",\"uc\":\"1f1f2-1f1f0\",\"isCanonical\": false},\":flag_mh:\":{\"unicode\":[\"1f1f2-1f1ed\"],\"fname\":\"1f1f2-1f1ed\",\"uc\":\"1f1f2-1f1ed\",\"isCanonical\": true},\":mh:\":{\"unicode\":[\"1f1f2-1f1ed\"],\"fname\":\"1f1f2-1f1ed\",\"uc\":\"1f1f2-1f1ed\",\"isCanonical\": false},\":flag_mg:\":{\"unicode\":[\"1f1f2-1f1ec\"],\"fname\":\"1f1f2-1f1ec\",\"uc\":\"1f1f2-1f1ec\",\"isCanonical\": true},\":mg:\":{\"unicode\":[\"1f1f2-1f1ec\"],\"fname\":\"1f1f2-1f1ec\",\"uc\":\"1f1f2-1f1ec\",\"isCanonical\": false},\":flag_mf:\":{\"unicode\":[\"1f1f2-1f1eb\"],\"fname\":\"1f1f2-1f1eb\",\"uc\":\"1f1f2-1f1eb\",\"isCanonical\": true},\":mf:\":{\"unicode\":[\"1f1f2-1f1eb\"],\"fname\":\"1f1f2-1f1eb\",\"uc\":\"1f1f2-1f1eb\",\"isCanonical\": false},\":flag_me:\":{\"unicode\":[\"1f1f2-1f1ea\"],\"fname\":\"1f1f2-1f1ea\",\"uc\":\"1f1f2-1f1ea\",\"isCanonical\": true},\":me:\":{\"unicode\":[\"1f1f2-1f1ea\"],\"fname\":\"1f1f2-1f1ea\",\"uc\":\"1f1f2-1f1ea\",\"isCanonical\": false},\":flag_md:\":{\"unicode\":[\"1f1f2-1f1e9\"],\"fname\":\"1f1f2-1f1e9\",\"uc\":\"1f1f2-1f1e9\",\"isCanonical\": true},\":md:\":{\"unicode\":[\"1f1f2-1f1e9\"],\"fname\":\"1f1f2-1f1e9\",\"uc\":\"1f1f2-1f1e9\",\"isCanonical\": false},\":flag_mc:\":{\"unicode\":[\"1f1f2-1f1e8\"],\"fname\":\"1f1f2-1f1e8\",\"uc\":\"1f1f2-1f1e8\",\"isCanonical\": true},\":mc:\":{\"unicode\":[\"1f1f2-1f1e8\"],\"fname\":\"1f1f2-1f1e8\",\"uc\":\"1f1f2-1f1e8\",\"isCanonical\": false},\":flag_ma:\":{\"unicode\":[\"1f1f2-1f1e6\"],\"fname\":\"1f1f2-1f1e6\",\"uc\":\"1f1f2-1f1e6\",\"isCanonical\": true},\":ma:\":{\"unicode\":[\"1f1f2-1f1e6\"],\"fname\":\"1f1f2-1f1e6\",\"uc\":\"1f1f2-1f1e6\",\"isCanonical\": false},\":flag_ly:\":{\"unicode\":[\"1f1f1-1f1fe\"],\"fname\":\"1f1f1-1f1fe\",\"uc\":\"1f1f1-1f1fe\",\"isCanonical\": true},\":ly:\":{\"unicode\":[\"1f1f1-1f1fe\"],\"fname\":\"1f1f1-1f1fe\",\"uc\":\"1f1f1-1f1fe\",\"isCanonical\": false},\":flag_lv:\":{\"unicode\":[\"1f1f1-1f1fb\"],\"fname\":\"1f1f1-1f1fb\",\"uc\":\"1f1f1-1f1fb\",\"isCanonical\": true},\":lv:\":{\"unicode\":[\"1f1f1-1f1fb\"],\"fname\":\"1f1f1-1f1fb\",\"uc\":\"1f1f1-1f1fb\",\"isCanonical\": false},\":flag_lu:\":{\"unicode\":[\"1f1f1-1f1fa\"],\"fname\":\"1f1f1-1f1fa\",\"uc\":\"1f1f1-1f1fa\",\"isCanonical\": true},\":lu:\":{\"unicode\":[\"1f1f1-1f1fa\"],\"fname\":\"1f1f1-1f1fa\",\"uc\":\"1f1f1-1f1fa\",\"isCanonical\": false},\":flag_lt:\":{\"unicode\":[\"1f1f1-1f1f9\"],\"fname\":\"1f1f1-1f1f9\",\"uc\":\"1f1f1-1f1f9\",\"isCanonical\": true},\":lt:\":{\"unicode\":[\"1f1f1-1f1f9\"],\"fname\":\"1f1f1-1f1f9\",\"uc\":\"1f1f1-1f1f9\",\"isCanonical\": false},\":flag_ls:\":{\"unicode\":[\"1f1f1-1f1f8\"],\"fname\":\"1f1f1-1f1f8\",\"uc\":\"1f1f1-1f1f8\",\"isCanonical\": true},\":ls:\":{\"unicode\":[\"1f1f1-1f1f8\"],\"fname\":\"1f1f1-1f1f8\",\"uc\":\"1f1f1-1f1f8\",\"isCanonical\": false},\":flag_lr:\":{\"unicode\":[\"1f1f1-1f1f7\"],\"fname\":\"1f1f1-1f1f7\",\"uc\":\"1f1f1-1f1f7\",\"isCanonical\": true},\":lr:\":{\"unicode\":[\"1f1f1-1f1f7\"],\"fname\":\"1f1f1-1f1f7\",\"uc\":\"1f1f1-1f1f7\",\"isCanonical\": false},\":flag_lk:\":{\"unicode\":[\"1f1f1-1f1f0\"],\"fname\":\"1f1f1-1f1f0\",\"uc\":\"1f1f1-1f1f0\",\"isCanonical\": true},\":lk:\":{\"unicode\":[\"1f1f1-1f1f0\"],\"fname\":\"1f1f1-1f1f0\",\"uc\":\"1f1f1-1f1f0\",\"isCanonical\": false},\":flag_li:\":{\"unicode\":[\"1f1f1-1f1ee\"],\"fname\":\"1f1f1-1f1ee\",\"uc\":\"1f1f1-1f1ee\",\"isCanonical\": true},\":li:\":{\"unicode\":[\"1f1f1-1f1ee\"],\"fname\":\"1f1f1-1f1ee\",\"uc\":\"1f1f1-1f1ee\",\"isCanonical\": false},\":flag_lc:\":{\"unicode\":[\"1f1f1-1f1e8\"],\"fname\":\"1f1f1-1f1e8\",\"uc\":\"1f1f1-1f1e8\",\"isCanonical\": true},\":lc:\":{\"unicode\":[\"1f1f1-1f1e8\"],\"fname\":\"1f1f1-1f1e8\",\"uc\":\"1f1f1-1f1e8\",\"isCanonical\": false},\":flag_lb:\":{\"unicode\":[\"1f1f1-1f1e7\"],\"fname\":\"1f1f1-1f1e7\",\"uc\":\"1f1f1-1f1e7\",\"isCanonical\": true},\":lb:\":{\"unicode\":[\"1f1f1-1f1e7\"],\"fname\":\"1f1f1-1f1e7\",\"uc\":\"1f1f1-1f1e7\",\"isCanonical\": false},\":flag_la:\":{\"unicode\":[\"1f1f1-1f1e6\"],\"fname\":\"1f1f1-1f1e6\",\"uc\":\"1f1f1-1f1e6\",\"isCanonical\": true},\":la:\":{\"unicode\":[\"1f1f1-1f1e6\"],\"fname\":\"1f1f1-1f1e6\",\"uc\":\"1f1f1-1f1e6\",\"isCanonical\": false},\":flag_kz:\":{\"unicode\":[\"1f1f0-1f1ff\"],\"fname\":\"1f1f0-1f1ff\",\"uc\":\"1f1f0-1f1ff\",\"isCanonical\": true},\":kz:\":{\"unicode\":[\"1f1f0-1f1ff\"],\"fname\":\"1f1f0-1f1ff\",\"uc\":\"1f1f0-1f1ff\",\"isCanonical\": false},\":flag_ky:\":{\"unicode\":[\"1f1f0-1f1fe\"],\"fname\":\"1f1f0-1f1fe\",\"uc\":\"1f1f0-1f1fe\",\"isCanonical\": true},\":ky:\":{\"unicode\":[\"1f1f0-1f1fe\"],\"fname\":\"1f1f0-1f1fe\",\"uc\":\"1f1f0-1f1fe\",\"isCanonical\": false},\":flag_kw:\":{\"unicode\":[\"1f1f0-1f1fc\"],\"fname\":\"1f1f0-1f1fc\",\"uc\":\"1f1f0-1f1fc\",\"isCanonical\": true},\":kw:\":{\"unicode\":[\"1f1f0-1f1fc\"],\"fname\":\"1f1f0-1f1fc\",\"uc\":\"1f1f0-1f1fc\",\"isCanonical\": false},\":flag_kr:\":{\"unicode\":[\"1f1f0-1f1f7\"],\"fname\":\"1f1f0-1f1f7\",\"uc\":\"1f1f0-1f1f7\",\"isCanonical\": true},\":kr:\":{\"unicode\":[\"1f1f0-1f1f7\"],\"fname\":\"1f1f0-1f1f7\",\"uc\":\"1f1f0-1f1f7\",\"isCanonical\": false},\":flag_kp:\":{\"unicode\":[\"1f1f0-1f1f5\"],\"fname\":\"1f1f0-1f1f5\",\"uc\":\"1f1f0-1f1f5\",\"isCanonical\": true},\":kp:\":{\"unicode\":[\"1f1f0-1f1f5\"],\"fname\":\"1f1f0-1f1f5\",\"uc\":\"1f1f0-1f1f5\",\"isCanonical\": false},\":flag_kn:\":{\"unicode\":[\"1f1f0-1f1f3\"],\"fname\":\"1f1f0-1f1f3\",\"uc\":\"1f1f0-1f1f3\",\"isCanonical\": true},\":kn:\":{\"unicode\":[\"1f1f0-1f1f3\"],\"fname\":\"1f1f0-1f1f3\",\"uc\":\"1f1f0-1f1f3\",\"isCanonical\": false},\":flag_km:\":{\"unicode\":[\"1f1f0-1f1f2\"],\"fname\":\"1f1f0-1f1f2\",\"uc\":\"1f1f0-1f1f2\",\"isCanonical\": true},\":km:\":{\"unicode\":[\"1f1f0-1f1f2\"],\"fname\":\"1f1f0-1f1f2\",\"uc\":\"1f1f0-1f1f2\",\"isCanonical\": false},\":flag_ki:\":{\"unicode\":[\"1f1f0-1f1ee\"],\"fname\":\"1f1f0-1f1ee\",\"uc\":\"1f1f0-1f1ee\",\"isCanonical\": true},\":ki:\":{\"unicode\":[\"1f1f0-1f1ee\"],\"fname\":\"1f1f0-1f1ee\",\"uc\":\"1f1f0-1f1ee\",\"isCanonical\": false},\":flag_kh:\":{\"unicode\":[\"1f1f0-1f1ed\"],\"fname\":\"1f1f0-1f1ed\",\"uc\":\"1f1f0-1f1ed\",\"isCanonical\": true},\":kh:\":{\"unicode\":[\"1f1f0-1f1ed\"],\"fname\":\"1f1f0-1f1ed\",\"uc\":\"1f1f0-1f1ed\",\"isCanonical\": false},\":flag_kg:\":{\"unicode\":[\"1f1f0-1f1ec\"],\"fname\":\"1f1f0-1f1ec\",\"uc\":\"1f1f0-1f1ec\",\"isCanonical\": true},\":kg:\":{\"unicode\":[\"1f1f0-1f1ec\"],\"fname\":\"1f1f0-1f1ec\",\"uc\":\"1f1f0-1f1ec\",\"isCanonical\": false},\":flag_ke:\":{\"unicode\":[\"1f1f0-1f1ea\"],\"fname\":\"1f1f0-1f1ea\",\"uc\":\"1f1f0-1f1ea\",\"isCanonical\": true},\":ke:\":{\"unicode\":[\"1f1f0-1f1ea\"],\"fname\":\"1f1f0-1f1ea\",\"uc\":\"1f1f0-1f1ea\",\"isCanonical\": false},\":flag_jp:\":{\"unicode\":[\"1f1ef-1f1f5\"],\"fname\":\"1f1ef-1f1f5\",\"uc\":\"1f1ef-1f1f5\",\"isCanonical\": true},\":jp:\":{\"unicode\":[\"1f1ef-1f1f5\"],\"fname\":\"1f1ef-1f1f5\",\"uc\":\"1f1ef-1f1f5\",\"isCanonical\": false},\":flag_jo:\":{\"unicode\":[\"1f1ef-1f1f4\"],\"fname\":\"1f1ef-1f1f4\",\"uc\":\"1f1ef-1f1f4\",\"isCanonical\": true},\":jo:\":{\"unicode\":[\"1f1ef-1f1f4\"],\"fname\":\"1f1ef-1f1f4\",\"uc\":\"1f1ef-1f1f4\",\"isCanonical\": false},\":flag_jm:\":{\"unicode\":[\"1f1ef-1f1f2\"],\"fname\":\"1f1ef-1f1f2\",\"uc\":\"1f1ef-1f1f2\",\"isCanonical\": true},\":jm:\":{\"unicode\":[\"1f1ef-1f1f2\"],\"fname\":\"1f1ef-1f1f2\",\"uc\":\"1f1ef-1f1f2\",\"isCanonical\": false},\":flag_je:\":{\"unicode\":[\"1f1ef-1f1ea\"],\"fname\":\"1f1ef-1f1ea\",\"uc\":\"1f1ef-1f1ea\",\"isCanonical\": true},\":je:\":{\"unicode\":[\"1f1ef-1f1ea\"],\"fname\":\"1f1ef-1f1ea\",\"uc\":\"1f1ef-1f1ea\",\"isCanonical\": false},\":flag_it:\":{\"unicode\":[\"1f1ee-1f1f9\"],\"fname\":\"1f1ee-1f1f9\",\"uc\":\"1f1ee-1f1f9\",\"isCanonical\": true},\":it:\":{\"unicode\":[\"1f1ee-1f1f9\"],\"fname\":\"1f1ee-1f1f9\",\"uc\":\"1f1ee-1f1f9\",\"isCanonical\": false},\":flag_is:\":{\"unicode\":[\"1f1ee-1f1f8\"],\"fname\":\"1f1ee-1f1f8\",\"uc\":\"1f1ee-1f1f8\",\"isCanonical\": true},\":is:\":{\"unicode\":[\"1f1ee-1f1f8\"],\"fname\":\"1f1ee-1f1f8\",\"uc\":\"1f1ee-1f1f8\",\"isCanonical\": false},\":flag_ir:\":{\"unicode\":[\"1f1ee-1f1f7\"],\"fname\":\"1f1ee-1f1f7\",\"uc\":\"1f1ee-1f1f7\",\"isCanonical\": true},\":ir:\":{\"unicode\":[\"1f1ee-1f1f7\"],\"fname\":\"1f1ee-1f1f7\",\"uc\":\"1f1ee-1f1f7\",\"isCanonical\": false},\":flag_iq:\":{\"unicode\":[\"1f1ee-1f1f6\"],\"fname\":\"1f1ee-1f1f6\",\"uc\":\"1f1ee-1f1f6\",\"isCanonical\": true},\":iq:\":{\"unicode\":[\"1f1ee-1f1f6\"],\"fname\":\"1f1ee-1f1f6\",\"uc\":\"1f1ee-1f1f6\",\"isCanonical\": false},\":flag_io:\":{\"unicode\":[\"1f1ee-1f1f4\"],\"fname\":\"1f1ee-1f1f4\",\"uc\":\"1f1ee-1f1f4\",\"isCanonical\": true},\":io:\":{\"unicode\":[\"1f1ee-1f1f4\"],\"fname\":\"1f1ee-1f1f4\",\"uc\":\"1f1ee-1f1f4\",\"isCanonical\": false},\":flag_in:\":{\"unicode\":[\"1f1ee-1f1f3\"],\"fname\":\"1f1ee-1f1f3\",\"uc\":\"1f1ee-1f1f3\",\"isCanonical\": true},\":in:\":{\"unicode\":[\"1f1ee-1f1f3\"],\"fname\":\"1f1ee-1f1f3\",\"uc\":\"1f1ee-1f1f3\",\"isCanonical\": false},\":flag_im:\":{\"unicode\":[\"1f1ee-1f1f2\"],\"fname\":\"1f1ee-1f1f2\",\"uc\":\"1f1ee-1f1f2\",\"isCanonical\": true},\":im:\":{\"unicode\":[\"1f1ee-1f1f2\"],\"fname\":\"1f1ee-1f1f2\",\"uc\":\"1f1ee-1f1f2\",\"isCanonical\": false},\":flag_il:\":{\"unicode\":[\"1f1ee-1f1f1\"],\"fname\":\"1f1ee-1f1f1\",\"uc\":\"1f1ee-1f1f1\",\"isCanonical\": true},\":il:\":{\"unicode\":[\"1f1ee-1f1f1\"],\"fname\":\"1f1ee-1f1f1\",\"uc\":\"1f1ee-1f1f1\",\"isCanonical\": false},\":flag_ie:\":{\"unicode\":[\"1f1ee-1f1ea\"],\"fname\":\"1f1ee-1f1ea\",\"uc\":\"1f1ee-1f1ea\",\"isCanonical\": true},\":ie:\":{\"unicode\":[\"1f1ee-1f1ea\"],\"fname\":\"1f1ee-1f1ea\",\"uc\":\"1f1ee-1f1ea\",\"isCanonical\": false},\":flag_id:\":{\"unicode\":[\"1f1ee-1f1e9\"],\"fname\":\"1f1ee-1f1e9\",\"uc\":\"1f1ee-1f1e9\",\"isCanonical\": true},\":indonesia:\":{\"unicode\":[\"1f1ee-1f1e9\"],\"fname\":\"1f1ee-1f1e9\",\"uc\":\"1f1ee-1f1e9\",\"isCanonical\": false},\":flag_ic:\":{\"unicode\":[\"1f1ee-1f1e8\"],\"fname\":\"1f1ee-1f1e8\",\"uc\":\"1f1ee-1f1e8\",\"isCanonical\": true},\":ic:\":{\"unicode\":[\"1f1ee-1f1e8\"],\"fname\":\"1f1ee-1f1e8\",\"uc\":\"1f1ee-1f1e8\",\"isCanonical\": false},\":flag_hu:\":{\"unicode\":[\"1f1ed-1f1fa\"],\"fname\":\"1f1ed-1f1fa\",\"uc\":\"1f1ed-1f1fa\",\"isCanonical\": true},\":hu:\":{\"unicode\":[\"1f1ed-1f1fa\"],\"fname\":\"1f1ed-1f1fa\",\"uc\":\"1f1ed-1f1fa\",\"isCanonical\": false},\":flag_ht:\":{\"unicode\":[\"1f1ed-1f1f9\"],\"fname\":\"1f1ed-1f1f9\",\"uc\":\"1f1ed-1f1f9\",\"isCanonical\": true},\":ht:\":{\"unicode\":[\"1f1ed-1f1f9\"],\"fname\":\"1f1ed-1f1f9\",\"uc\":\"1f1ed-1f1f9\",\"isCanonical\": false},\":flag_hr:\":{\"unicode\":[\"1f1ed-1f1f7\"],\"fname\":\"1f1ed-1f1f7\",\"uc\":\"1f1ed-1f1f7\",\"isCanonical\": true},\":hr:\":{\"unicode\":[\"1f1ed-1f1f7\"],\"fname\":\"1f1ed-1f1f7\",\"uc\":\"1f1ed-1f1f7\",\"isCanonical\": false},\":flag_hn:\":{\"unicode\":[\"1f1ed-1f1f3\"],\"fname\":\"1f1ed-1f1f3\",\"uc\":\"1f1ed-1f1f3\",\"isCanonical\": true},\":hn:\":{\"unicode\":[\"1f1ed-1f1f3\"],\"fname\":\"1f1ed-1f1f3\",\"uc\":\"1f1ed-1f1f3\",\"isCanonical\": false},\":flag_hm:\":{\"unicode\":[\"1f1ed-1f1f2\"],\"fname\":\"1f1ed-1f1f2\",\"uc\":\"1f1ed-1f1f2\",\"isCanonical\": true},\":hm:\":{\"unicode\":[\"1f1ed-1f1f2\"],\"fname\":\"1f1ed-1f1f2\",\"uc\":\"1f1ed-1f1f2\",\"isCanonical\": false},\":flag_hk:\":{\"unicode\":[\"1f1ed-1f1f0\"],\"fname\":\"1f1ed-1f1f0\",\"uc\":\"1f1ed-1f1f0\",\"isCanonical\": true},\":hk:\":{\"unicode\":[\"1f1ed-1f1f0\"],\"fname\":\"1f1ed-1f1f0\",\"uc\":\"1f1ed-1f1f0\",\"isCanonical\": false},\":flag_gy:\":{\"unicode\":[\"1f1ec-1f1fe\"],\"fname\":\"1f1ec-1f1fe\",\"uc\":\"1f1ec-1f1fe\",\"isCanonical\": true},\":gy:\":{\"unicode\":[\"1f1ec-1f1fe\"],\"fname\":\"1f1ec-1f1fe\",\"uc\":\"1f1ec-1f1fe\",\"isCanonical\": false},\":flag_gw:\":{\"unicode\":[\"1f1ec-1f1fc\"],\"fname\":\"1f1ec-1f1fc\",\"uc\":\"1f1ec-1f1fc\",\"isCanonical\": true},\":gw:\":{\"unicode\":[\"1f1ec-1f1fc\"],\"fname\":\"1f1ec-1f1fc\",\"uc\":\"1f1ec-1f1fc\",\"isCanonical\": false},\":flag_gu:\":{\"unicode\":[\"1f1ec-1f1fa\"],\"fname\":\"1f1ec-1f1fa\",\"uc\":\"1f1ec-1f1fa\",\"isCanonical\": true},\":gu:\":{\"unicode\":[\"1f1ec-1f1fa\"],\"fname\":\"1f1ec-1f1fa\",\"uc\":\"1f1ec-1f1fa\",\"isCanonical\": false},\":flag_gt:\":{\"unicode\":[\"1f1ec-1f1f9\"],\"fname\":\"1f1ec-1f1f9\",\"uc\":\"1f1ec-1f1f9\",\"isCanonical\": true},\":gt:\":{\"unicode\":[\"1f1ec-1f1f9\"],\"fname\":\"1f1ec-1f1f9\",\"uc\":\"1f1ec-1f1f9\",\"isCanonical\": false},\":flag_gs:\":{\"unicode\":[\"1f1ec-1f1f8\"],\"fname\":\"1f1ec-1f1f8\",\"uc\":\"1f1ec-1f1f8\",\"isCanonical\": true},\":gs:\":{\"unicode\":[\"1f1ec-1f1f8\"],\"fname\":\"1f1ec-1f1f8\",\"uc\":\"1f1ec-1f1f8\",\"isCanonical\": false},\":flag_gr:\":{\"unicode\":[\"1f1ec-1f1f7\"],\"fname\":\"1f1ec-1f1f7\",\"uc\":\"1f1ec-1f1f7\",\"isCanonical\": true},\":gr:\":{\"unicode\":[\"1f1ec-1f1f7\"],\"fname\":\"1f1ec-1f1f7\",\"uc\":\"1f1ec-1f1f7\",\"isCanonical\": false},\":flag_gq:\":{\"unicode\":[\"1f1ec-1f1f6\"],\"fname\":\"1f1ec-1f1f6\",\"uc\":\"1f1ec-1f1f6\",\"isCanonical\": true},\":gq:\":{\"unicode\":[\"1f1ec-1f1f6\"],\"fname\":\"1f1ec-1f1f6\",\"uc\":\"1f1ec-1f1f6\",\"isCanonical\": false},\":flag_gp:\":{\"unicode\":[\"1f1ec-1f1f5\"],\"fname\":\"1f1ec-1f1f5\",\"uc\":\"1f1ec-1f1f5\",\"isCanonical\": true},\":gp:\":{\"unicode\":[\"1f1ec-1f1f5\"],\"fname\":\"1f1ec-1f1f5\",\"uc\":\"1f1ec-1f1f5\",\"isCanonical\": false},\":flag_gn:\":{\"unicode\":[\"1f1ec-1f1f3\"],\"fname\":\"1f1ec-1f1f3\",\"uc\":\"1f1ec-1f1f3\",\"isCanonical\": true},\":gn:\":{\"unicode\":[\"1f1ec-1f1f3\"],\"fname\":\"1f1ec-1f1f3\",\"uc\":\"1f1ec-1f1f3\",\"isCanonical\": false},\":flag_gm:\":{\"unicode\":[\"1f1ec-1f1f2\"],\"fname\":\"1f1ec-1f1f2\",\"uc\":\"1f1ec-1f1f2\",\"isCanonical\": true},\":gm:\":{\"unicode\":[\"1f1ec-1f1f2\"],\"fname\":\"1f1ec-1f1f2\",\"uc\":\"1f1ec-1f1f2\",\"isCanonical\": false},\":flag_gl:\":{\"unicode\":[\"1f1ec-1f1f1\"],\"fname\":\"1f1ec-1f1f1\",\"uc\":\"1f1ec-1f1f1\",\"isCanonical\": true},\":gl:\":{\"unicode\":[\"1f1ec-1f1f1\"],\"fname\":\"1f1ec-1f1f1\",\"uc\":\"1f1ec-1f1f1\",\"isCanonical\": false},\":flag_gi:\":{\"unicode\":[\"1f1ec-1f1ee\"],\"fname\":\"1f1ec-1f1ee\",\"uc\":\"1f1ec-1f1ee\",\"isCanonical\": true},\":gi:\":{\"unicode\":[\"1f1ec-1f1ee\"],\"fname\":\"1f1ec-1f1ee\",\"uc\":\"1f1ec-1f1ee\",\"isCanonical\": false},\":flag_gh:\":{\"unicode\":[\"1f1ec-1f1ed\"],\"fname\":\"1f1ec-1f1ed\",\"uc\":\"1f1ec-1f1ed\",\"isCanonical\": true},\":gh:\":{\"unicode\":[\"1f1ec-1f1ed\"],\"fname\":\"1f1ec-1f1ed\",\"uc\":\"1f1ec-1f1ed\",\"isCanonical\": false},\":flag_gg:\":{\"unicode\":[\"1f1ec-1f1ec\"],\"fname\":\"1f1ec-1f1ec\",\"uc\":\"1f1ec-1f1ec\",\"isCanonical\": true},\":gg:\":{\"unicode\":[\"1f1ec-1f1ec\"],\"fname\":\"1f1ec-1f1ec\",\"uc\":\"1f1ec-1f1ec\",\"isCanonical\": false},\":flag_gf:\":{\"unicode\":[\"1f1ec-1f1eb\"],\"fname\":\"1f1ec-1f1eb\",\"uc\":\"1f1ec-1f1eb\",\"isCanonical\": true},\":gf:\":{\"unicode\":[\"1f1ec-1f1eb\"],\"fname\":\"1f1ec-1f1eb\",\"uc\":\"1f1ec-1f1eb\",\"isCanonical\": false},\":flag_ge:\":{\"unicode\":[\"1f1ec-1f1ea\"],\"fname\":\"1f1ec-1f1ea\",\"uc\":\"1f1ec-1f1ea\",\"isCanonical\": true},\":ge:\":{\"unicode\":[\"1f1ec-1f1ea\"],\"fname\":\"1f1ec-1f1ea\",\"uc\":\"1f1ec-1f1ea\",\"isCanonical\": false},\":flag_gd:\":{\"unicode\":[\"1f1ec-1f1e9\"],\"fname\":\"1f1ec-1f1e9\",\"uc\":\"1f1ec-1f1e9\",\"isCanonical\": true},\":gd:\":{\"unicode\":[\"1f1ec-1f1e9\"],\"fname\":\"1f1ec-1f1e9\",\"uc\":\"1f1ec-1f1e9\",\"isCanonical\": false},\":flag_gb:\":{\"unicode\":[\"1f1ec-1f1e7\"],\"fname\":\"1f1ec-1f1e7\",\"uc\":\"1f1ec-1f1e7\",\"isCanonical\": true},\":gb:\":{\"unicode\":[\"1f1ec-1f1e7\"],\"fname\":\"1f1ec-1f1e7\",\"uc\":\"1f1ec-1f1e7\",\"isCanonical\": false},\":flag_ga:\":{\"unicode\":[\"1f1ec-1f1e6\"],\"fname\":\"1f1ec-1f1e6\",\"uc\":\"1f1ec-1f1e6\",\"isCanonical\": true},\":ga:\":{\"unicode\":[\"1f1ec-1f1e6\"],\"fname\":\"1f1ec-1f1e6\",\"uc\":\"1f1ec-1f1e6\",\"isCanonical\": false},\":flag_fr:\":{\"unicode\":[\"1f1eb-1f1f7\"],\"fname\":\"1f1eb-1f1f7\",\"uc\":\"1f1eb-1f1f7\",\"isCanonical\": true},\":fr:\":{\"unicode\":[\"1f1eb-1f1f7\"],\"fname\":\"1f1eb-1f1f7\",\"uc\":\"1f1eb-1f1f7\",\"isCanonical\": false},\":flag_fo:\":{\"unicode\":[\"1f1eb-1f1f4\"],\"fname\":\"1f1eb-1f1f4\",\"uc\":\"1f1eb-1f1f4\",\"isCanonical\": true},\":fo:\":{\"unicode\":[\"1f1eb-1f1f4\"],\"fname\":\"1f1eb-1f1f4\",\"uc\":\"1f1eb-1f1f4\",\"isCanonical\": false},\":flag_fm:\":{\"unicode\":[\"1f1eb-1f1f2\"],\"fname\":\"1f1eb-1f1f2\",\"uc\":\"1f1eb-1f1f2\",\"isCanonical\": true},\":fm:\":{\"unicode\":[\"1f1eb-1f1f2\"],\"fname\":\"1f1eb-1f1f2\",\"uc\":\"1f1eb-1f1f2\",\"isCanonical\": false},\":flag_fk:\":{\"unicode\":[\"1f1eb-1f1f0\"],\"fname\":\"1f1eb-1f1f0\",\"uc\":\"1f1eb-1f1f0\",\"isCanonical\": true},\":fk:\":{\"unicode\":[\"1f1eb-1f1f0\"],\"fname\":\"1f1eb-1f1f0\",\"uc\":\"1f1eb-1f1f0\",\"isCanonical\": false},\":flag_fj:\":{\"unicode\":[\"1f1eb-1f1ef\"],\"fname\":\"1f1eb-1f1ef\",\"uc\":\"1f1eb-1f1ef\",\"isCanonical\": true},\":fj:\":{\"unicode\":[\"1f1eb-1f1ef\"],\"fname\":\"1f1eb-1f1ef\",\"uc\":\"1f1eb-1f1ef\",\"isCanonical\": false},\":flag_fi:\":{\"unicode\":[\"1f1eb-1f1ee\"],\"fname\":\"1f1eb-1f1ee\",\"uc\":\"1f1eb-1f1ee\",\"isCanonical\": true},\":fi:\":{\"unicode\":[\"1f1eb-1f1ee\"],\"fname\":\"1f1eb-1f1ee\",\"uc\":\"1f1eb-1f1ee\",\"isCanonical\": false},\":flag_eu:\":{\"unicode\":[\"1f1ea-1f1fa\"],\"fname\":\"1f1ea-1f1fa\",\"uc\":\"1f1ea-1f1fa\",\"isCanonical\": true},\":eu:\":{\"unicode\":[\"1f1ea-1f1fa\"],\"fname\":\"1f1ea-1f1fa\",\"uc\":\"1f1ea-1f1fa\",\"isCanonical\": false},\":flag_et:\":{\"unicode\":[\"1f1ea-1f1f9\"],\"fname\":\"1f1ea-1f1f9\",\"uc\":\"1f1ea-1f1f9\",\"isCanonical\": true},\":et:\":{\"unicode\":[\"1f1ea-1f1f9\"],\"fname\":\"1f1ea-1f1f9\",\"uc\":\"1f1ea-1f1f9\",\"isCanonical\": false},\":flag_es:\":{\"unicode\":[\"1f1ea-1f1f8\"],\"fname\":\"1f1ea-1f1f8\",\"uc\":\"1f1ea-1f1f8\",\"isCanonical\": true},\":es:\":{\"unicode\":[\"1f1ea-1f1f8\"],\"fname\":\"1f1ea-1f1f8\",\"uc\":\"1f1ea-1f1f8\",\"isCanonical\": false},\":flag_er:\":{\"unicode\":[\"1f1ea-1f1f7\"],\"fname\":\"1f1ea-1f1f7\",\"uc\":\"1f1ea-1f1f7\",\"isCanonical\": true},\":er:\":{\"unicode\":[\"1f1ea-1f1f7\"],\"fname\":\"1f1ea-1f1f7\",\"uc\":\"1f1ea-1f1f7\",\"isCanonical\": false},\":flag_eh:\":{\"unicode\":[\"1f1ea-1f1ed\"],\"fname\":\"1f1ea-1f1ed\",\"uc\":\"1f1ea-1f1ed\",\"isCanonical\": true},\":eh:\":{\"unicode\":[\"1f1ea-1f1ed\"],\"fname\":\"1f1ea-1f1ed\",\"uc\":\"1f1ea-1f1ed\",\"isCanonical\": false},\":flag_eg:\":{\"unicode\":[\"1f1ea-1f1ec\"],\"fname\":\"1f1ea-1f1ec\",\"uc\":\"1f1ea-1f1ec\",\"isCanonical\": true},\":eg:\":{\"unicode\":[\"1f1ea-1f1ec\"],\"fname\":\"1f1ea-1f1ec\",\"uc\":\"1f1ea-1f1ec\",\"isCanonical\": false},\":flag_ee:\":{\"unicode\":[\"1f1ea-1f1ea\"],\"fname\":\"1f1ea-1f1ea\",\"uc\":\"1f1ea-1f1ea\",\"isCanonical\": true},\":ee:\":{\"unicode\":[\"1f1ea-1f1ea\"],\"fname\":\"1f1ea-1f1ea\",\"uc\":\"1f1ea-1f1ea\",\"isCanonical\": false},\":flag_ec:\":{\"unicode\":[\"1f1ea-1f1e8\"],\"fname\":\"1f1ea-1f1e8\",\"uc\":\"1f1ea-1f1e8\",\"isCanonical\": true},\":ec:\":{\"unicode\":[\"1f1ea-1f1e8\"],\"fname\":\"1f1ea-1f1e8\",\"uc\":\"1f1ea-1f1e8\",\"isCanonical\": false},\":flag_ea:\":{\"unicode\":[\"1f1ea-1f1e6\"],\"fname\":\"1f1ea-1f1e6\",\"uc\":\"1f1ea-1f1e6\",\"isCanonical\": true},\":ea:\":{\"unicode\":[\"1f1ea-1f1e6\"],\"fname\":\"1f1ea-1f1e6\",\"uc\":\"1f1ea-1f1e6\",\"isCanonical\": false},\":flag_dz:\":{\"unicode\":[\"1f1e9-1f1ff\"],\"fname\":\"1f1e9-1f1ff\",\"uc\":\"1f1e9-1f1ff\",\"isCanonical\": true},\":dz:\":{\"unicode\":[\"1f1e9-1f1ff\"],\"fname\":\"1f1e9-1f1ff\",\"uc\":\"1f1e9-1f1ff\",\"isCanonical\": false},\":flag_do:\":{\"unicode\":[\"1f1e9-1f1f4\"],\"fname\":\"1f1e9-1f1f4\",\"uc\":\"1f1e9-1f1f4\",\"isCanonical\": true},\":do:\":{\"unicode\":[\"1f1e9-1f1f4\"],\"fname\":\"1f1e9-1f1f4\",\"uc\":\"1f1e9-1f1f4\",\"isCanonical\": false},\":flag_dm:\":{\"unicode\":[\"1f1e9-1f1f2\"],\"fname\":\"1f1e9-1f1f2\",\"uc\":\"1f1e9-1f1f2\",\"isCanonical\": true},\":dm:\":{\"unicode\":[\"1f1e9-1f1f2\"],\"fname\":\"1f1e9-1f1f2\",\"uc\":\"1f1e9-1f1f2\",\"isCanonical\": false},\":flag_dk:\":{\"unicode\":[\"1f1e9-1f1f0\"],\"fname\":\"1f1e9-1f1f0\",\"uc\":\"1f1e9-1f1f0\",\"isCanonical\": true},\":dk:\":{\"unicode\":[\"1f1e9-1f1f0\"],\"fname\":\"1f1e9-1f1f0\",\"uc\":\"1f1e9-1f1f0\",\"isCanonical\": false},\":flag_dj:\":{\"unicode\":[\"1f1e9-1f1ef\"],\"fname\":\"1f1e9-1f1ef\",\"uc\":\"1f1e9-1f1ef\",\"isCanonical\": true},\":dj:\":{\"unicode\":[\"1f1e9-1f1ef\"],\"fname\":\"1f1e9-1f1ef\",\"uc\":\"1f1e9-1f1ef\",\"isCanonical\": false},\":flag_dg:\":{\"unicode\":[\"1f1e9-1f1ec\"],\"fname\":\"1f1e9-1f1ec\",\"uc\":\"1f1e9-1f1ec\",\"isCanonical\": true},\":dg:\":{\"unicode\":[\"1f1e9-1f1ec\"],\"fname\":\"1f1e9-1f1ec\",\"uc\":\"1f1e9-1f1ec\",\"isCanonical\": false},\":flag_de:\":{\"unicode\":[\"1f1e9-1f1ea\"],\"fname\":\"1f1e9-1f1ea\",\"uc\":\"1f1e9-1f1ea\",\"isCanonical\": true},\":de:\":{\"unicode\":[\"1f1e9-1f1ea\"],\"fname\":\"1f1e9-1f1ea\",\"uc\":\"1f1e9-1f1ea\",\"isCanonical\": false},\":flag_cz:\":{\"unicode\":[\"1f1e8-1f1ff\"],\"fname\":\"1f1e8-1f1ff\",\"uc\":\"1f1e8-1f1ff\",\"isCanonical\": true},\":cz:\":{\"unicode\":[\"1f1e8-1f1ff\"],\"fname\":\"1f1e8-1f1ff\",\"uc\":\"1f1e8-1f1ff\",\"isCanonical\": false},\":flag_cy:\":{\"unicode\":[\"1f1e8-1f1fe\"],\"fname\":\"1f1e8-1f1fe\",\"uc\":\"1f1e8-1f1fe\",\"isCanonical\": true},\":cy:\":{\"unicode\":[\"1f1e8-1f1fe\"],\"fname\":\"1f1e8-1f1fe\",\"uc\":\"1f1e8-1f1fe\",\"isCanonical\": false},\":flag_cx:\":{\"unicode\":[\"1f1e8-1f1fd\"],\"fname\":\"1f1e8-1f1fd\",\"uc\":\"1f1e8-1f1fd\",\"isCanonical\": true},\":cx:\":{\"unicode\":[\"1f1e8-1f1fd\"],\"fname\":\"1f1e8-1f1fd\",\"uc\":\"1f1e8-1f1fd\",\"isCanonical\": false},\":flag_cw:\":{\"unicode\":[\"1f1e8-1f1fc\"],\"fname\":\"1f1e8-1f1fc\",\"uc\":\"1f1e8-1f1fc\",\"isCanonical\": true},\":cw:\":{\"unicode\":[\"1f1e8-1f1fc\"],\"fname\":\"1f1e8-1f1fc\",\"uc\":\"1f1e8-1f1fc\",\"isCanonical\": false},\":flag_cv:\":{\"unicode\":[\"1f1e8-1f1fb\"],\"fname\":\"1f1e8-1f1fb\",\"uc\":\"1f1e8-1f1fb\",\"isCanonical\": true},\":cv:\":{\"unicode\":[\"1f1e8-1f1fb\"],\"fname\":\"1f1e8-1f1fb\",\"uc\":\"1f1e8-1f1fb\",\"isCanonical\": false},\":flag_cu:\":{\"unicode\":[\"1f1e8-1f1fa\"],\"fname\":\"1f1e8-1f1fa\",\"uc\":\"1f1e8-1f1fa\",\"isCanonical\": true},\":cu:\":{\"unicode\":[\"1f1e8-1f1fa\"],\"fname\":\"1f1e8-1f1fa\",\"uc\":\"1f1e8-1f1fa\",\"isCanonical\": false},\":flag_cr:\":{\"unicode\":[\"1f1e8-1f1f7\"],\"fname\":\"1f1e8-1f1f7\",\"uc\":\"1f1e8-1f1f7\",\"isCanonical\": true},\":cr:\":{\"unicode\":[\"1f1e8-1f1f7\"],\"fname\":\"1f1e8-1f1f7\",\"uc\":\"1f1e8-1f1f7\",\"isCanonical\": false},\":flag_cp:\":{\"unicode\":[\"1f1e8-1f1f5\"],\"fname\":\"1f1e8-1f1f5\",\"uc\":\"1f1e8-1f1f5\",\"isCanonical\": true},\":cp:\":{\"unicode\":[\"1f1e8-1f1f5\"],\"fname\":\"1f1e8-1f1f5\",\"uc\":\"1f1e8-1f1f5\",\"isCanonical\": false},\":flag_co:\":{\"unicode\":[\"1f1e8-1f1f4\"],\"fname\":\"1f1e8-1f1f4\",\"uc\":\"1f1e8-1f1f4\",\"isCanonical\": true},\":co:\":{\"unicode\":[\"1f1e8-1f1f4\"],\"fname\":\"1f1e8-1f1f4\",\"uc\":\"1f1e8-1f1f4\",\"isCanonical\": false},\":flag_cn:\":{\"unicode\":[\"1f1e8-1f1f3\"],\"fname\":\"1f1e8-1f1f3\",\"uc\":\"1f1e8-1f1f3\",\"isCanonical\": true},\":cn:\":{\"unicode\":[\"1f1e8-1f1f3\"],\"fname\":\"1f1e8-1f1f3\",\"uc\":\"1f1e8-1f1f3\",\"isCanonical\": false},\":flag_cm:\":{\"unicode\":[\"1f1e8-1f1f2\"],\"fname\":\"1f1e8-1f1f2\",\"uc\":\"1f1e8-1f1f2\",\"isCanonical\": true},\":cm:\":{\"unicode\":[\"1f1e8-1f1f2\"],\"fname\":\"1f1e8-1f1f2\",\"uc\":\"1f1e8-1f1f2\",\"isCanonical\": false},\":flag_cl:\":{\"unicode\":[\"1f1e8-1f1f1\"],\"fname\":\"1f1e8-1f1f1\",\"uc\":\"1f1e8-1f1f1\",\"isCanonical\": true},\":chile:\":{\"unicode\":[\"1f1e8-1f1f1\"],\"fname\":\"1f1e8-1f1f1\",\"uc\":\"1f1e8-1f1f1\",\"isCanonical\": false},\":flag_ck:\":{\"unicode\":[\"1f1e8-1f1f0\"],\"fname\":\"1f1e8-1f1f0\",\"uc\":\"1f1e8-1f1f0\",\"isCanonical\": true},\":ck:\":{\"unicode\":[\"1f1e8-1f1f0\"],\"fname\":\"1f1e8-1f1f0\",\"uc\":\"1f1e8-1f1f0\",\"isCanonical\": false},\":flag_ci:\":{\"unicode\":[\"1f1e8-1f1ee\"],\"fname\":\"1f1e8-1f1ee\",\"uc\":\"1f1e8-1f1ee\",\"isCanonical\": true},\":ci:\":{\"unicode\":[\"1f1e8-1f1ee\"],\"fname\":\"1f1e8-1f1ee\",\"uc\":\"1f1e8-1f1ee\",\"isCanonical\": false},\":flag_ch:\":{\"unicode\":[\"1f1e8-1f1ed\"],\"fname\":\"1f1e8-1f1ed\",\"uc\":\"1f1e8-1f1ed\",\"isCanonical\": true},\":ch:\":{\"unicode\":[\"1f1e8-1f1ed\"],\"fname\":\"1f1e8-1f1ed\",\"uc\":\"1f1e8-1f1ed\",\"isCanonical\": false},\":flag_cg:\":{\"unicode\":[\"1f1e8-1f1ec\"],\"fname\":\"1f1e8-1f1ec\",\"uc\":\"1f1e8-1f1ec\",\"isCanonical\": true},\":cg:\":{\"unicode\":[\"1f1e8-1f1ec\"],\"fname\":\"1f1e8-1f1ec\",\"uc\":\"1f1e8-1f1ec\",\"isCanonical\": false},\":flag_cf:\":{\"unicode\":[\"1f1e8-1f1eb\"],\"fname\":\"1f1e8-1f1eb\",\"uc\":\"1f1e8-1f1eb\",\"isCanonical\": true},\":cf:\":{\"unicode\":[\"1f1e8-1f1eb\"],\"fname\":\"1f1e8-1f1eb\",\"uc\":\"1f1e8-1f1eb\",\"isCanonical\": false},\":flag_cd:\":{\"unicode\":[\"1f1e8-1f1e9\"],\"fname\":\"1f1e8-1f1e9\",\"uc\":\"1f1e8-1f1e9\",\"isCanonical\": true},\":congo:\":{\"unicode\":[\"1f1e8-1f1e9\"],\"fname\":\"1f1e8-1f1e9\",\"uc\":\"1f1e8-1f1e9\",\"isCanonical\": false},\":flag_cc:\":{\"unicode\":[\"1f1e8-1f1e8\"],\"fname\":\"1f1e8-1f1e8\",\"uc\":\"1f1e8-1f1e8\",\"isCanonical\": true},\":cc:\":{\"unicode\":[\"1f1e8-1f1e8\"],\"fname\":\"1f1e8-1f1e8\",\"uc\":\"1f1e8-1f1e8\",\"isCanonical\": false},\":flag_ca:\":{\"unicode\":[\"1f1e8-1f1e6\"],\"fname\":\"1f1e8-1f1e6\",\"uc\":\"1f1e8-1f1e6\",\"isCanonical\": true},\":ca:\":{\"unicode\":[\"1f1e8-1f1e6\"],\"fname\":\"1f1e8-1f1e6\",\"uc\":\"1f1e8-1f1e6\",\"isCanonical\": false},\":flag_bz:\":{\"unicode\":[\"1f1e7-1f1ff\"],\"fname\":\"1f1e7-1f1ff\",\"uc\":\"1f1e7-1f1ff\",\"isCanonical\": true},\":bz:\":{\"unicode\":[\"1f1e7-1f1ff\"],\"fname\":\"1f1e7-1f1ff\",\"uc\":\"1f1e7-1f1ff\",\"isCanonical\": false},\":flag_by:\":{\"unicode\":[\"1f1e7-1f1fe\"],\"fname\":\"1f1e7-1f1fe\",\"uc\":\"1f1e7-1f1fe\",\"isCanonical\": true},\":by:\":{\"unicode\":[\"1f1e7-1f1fe\"],\"fname\":\"1f1e7-1f1fe\",\"uc\":\"1f1e7-1f1fe\",\"isCanonical\": false},\":flag_bw:\":{\"unicode\":[\"1f1e7-1f1fc\"],\"fname\":\"1f1e7-1f1fc\",\"uc\":\"1f1e7-1f1fc\",\"isCanonical\": true},\":bw:\":{\"unicode\":[\"1f1e7-1f1fc\"],\"fname\":\"1f1e7-1f1fc\",\"uc\":\"1f1e7-1f1fc\",\"isCanonical\": false},\":flag_bv:\":{\"unicode\":[\"1f1e7-1f1fb\"],\"fname\":\"1f1e7-1f1fb\",\"uc\":\"1f1e7-1f1fb\",\"isCanonical\": true},\":bv:\":{\"unicode\":[\"1f1e7-1f1fb\"],\"fname\":\"1f1e7-1f1fb\",\"uc\":\"1f1e7-1f1fb\",\"isCanonical\": false},\":flag_bt:\":{\"unicode\":[\"1f1e7-1f1f9\"],\"fname\":\"1f1e7-1f1f9\",\"uc\":\"1f1e7-1f1f9\",\"isCanonical\": true},\":bt:\":{\"unicode\":[\"1f1e7-1f1f9\"],\"fname\":\"1f1e7-1f1f9\",\"uc\":\"1f1e7-1f1f9\",\"isCanonical\": false},\":flag_bs:\":{\"unicode\":[\"1f1e7-1f1f8\"],\"fname\":\"1f1e7-1f1f8\",\"uc\":\"1f1e7-1f1f8\",\"isCanonical\": true},\":bs:\":{\"unicode\":[\"1f1e7-1f1f8\"],\"fname\":\"1f1e7-1f1f8\",\"uc\":\"1f1e7-1f1f8\",\"isCanonical\": false},\":flag_br:\":{\"unicode\":[\"1f1e7-1f1f7\"],\"fname\":\"1f1e7-1f1f7\",\"uc\":\"1f1e7-1f1f7\",\"isCanonical\": true},\":br:\":{\"unicode\":[\"1f1e7-1f1f7\"],\"fname\":\"1f1e7-1f1f7\",\"uc\":\"1f1e7-1f1f7\",\"isCanonical\": false},\":flag_bq:\":{\"unicode\":[\"1f1e7-1f1f6\"],\"fname\":\"1f1e7-1f1f6\",\"uc\":\"1f1e7-1f1f6\",\"isCanonical\": true},\":bq:\":{\"unicode\":[\"1f1e7-1f1f6\"],\"fname\":\"1f1e7-1f1f6\",\"uc\":\"1f1e7-1f1f6\",\"isCanonical\": false},\":flag_bo:\":{\"unicode\":[\"1f1e7-1f1f4\"],\"fname\":\"1f1e7-1f1f4\",\"uc\":\"1f1e7-1f1f4\",\"isCanonical\": true},\":bo:\":{\"unicode\":[\"1f1e7-1f1f4\"],\"fname\":\"1f1e7-1f1f4\",\"uc\":\"1f1e7-1f1f4\",\"isCanonical\": false},\":flag_bn:\":{\"unicode\":[\"1f1e7-1f1f3\"],\"fname\":\"1f1e7-1f1f3\",\"uc\":\"1f1e7-1f1f3\",\"isCanonical\": true},\":bn:\":{\"unicode\":[\"1f1e7-1f1f3\"],\"fname\":\"1f1e7-1f1f3\",\"uc\":\"1f1e7-1f1f3\",\"isCanonical\": false},\":flag_bm:\":{\"unicode\":[\"1f1e7-1f1f2\"],\"fname\":\"1f1e7-1f1f2\",\"uc\":\"1f1e7-1f1f2\",\"isCanonical\": true},\":bm:\":{\"unicode\":[\"1f1e7-1f1f2\"],\"fname\":\"1f1e7-1f1f2\",\"uc\":\"1f1e7-1f1f2\",\"isCanonical\": false},\":flag_bl:\":{\"unicode\":[\"1f1e7-1f1f1\"],\"fname\":\"1f1e7-1f1f1\",\"uc\":\"1f1e7-1f1f1\",\"isCanonical\": true},\":bl:\":{\"unicode\":[\"1f1e7-1f1f1\"],\"fname\":\"1f1e7-1f1f1\",\"uc\":\"1f1e7-1f1f1\",\"isCanonical\": false},\":flag_bj:\":{\"unicode\":[\"1f1e7-1f1ef\"],\"fname\":\"1f1e7-1f1ef\",\"uc\":\"1f1e7-1f1ef\",\"isCanonical\": true},\":bj:\":{\"unicode\":[\"1f1e7-1f1ef\"],\"fname\":\"1f1e7-1f1ef\",\"uc\":\"1f1e7-1f1ef\",\"isCanonical\": false},\":flag_bi:\":{\"unicode\":[\"1f1e7-1f1ee\"],\"fname\":\"1f1e7-1f1ee\",\"uc\":\"1f1e7-1f1ee\",\"isCanonical\": true},\":bi:\":{\"unicode\":[\"1f1e7-1f1ee\"],\"fname\":\"1f1e7-1f1ee\",\"uc\":\"1f1e7-1f1ee\",\"isCanonical\": false},\":flag_bh:\":{\"unicode\":[\"1f1e7-1f1ed\"],\"fname\":\"1f1e7-1f1ed\",\"uc\":\"1f1e7-1f1ed\",\"isCanonical\": true},\":bh:\":{\"unicode\":[\"1f1e7-1f1ed\"],\"fname\":\"1f1e7-1f1ed\",\"uc\":\"1f1e7-1f1ed\",\"isCanonical\": false},\":flag_bg:\":{\"unicode\":[\"1f1e7-1f1ec\"],\"fname\":\"1f1e7-1f1ec\",\"uc\":\"1f1e7-1f1ec\",\"isCanonical\": true},\":bg:\":{\"unicode\":[\"1f1e7-1f1ec\"],\"fname\":\"1f1e7-1f1ec\",\"uc\":\"1f1e7-1f1ec\",\"isCanonical\": false},\":flag_bf:\":{\"unicode\":[\"1f1e7-1f1eb\"],\"fname\":\"1f1e7-1f1eb\",\"uc\":\"1f1e7-1f1eb\",\"isCanonical\": true},\":bf:\":{\"unicode\":[\"1f1e7-1f1eb\"],\"fname\":\"1f1e7-1f1eb\",\"uc\":\"1f1e7-1f1eb\",\"isCanonical\": false},\":flag_be:\":{\"unicode\":[\"1f1e7-1f1ea\"],\"fname\":\"1f1e7-1f1ea\",\"uc\":\"1f1e7-1f1ea\",\"isCanonical\": true},\":be:\":{\"unicode\":[\"1f1e7-1f1ea\"],\"fname\":\"1f1e7-1f1ea\",\"uc\":\"1f1e7-1f1ea\",\"isCanonical\": false},\":flag_bd:\":{\"unicode\":[\"1f1e7-1f1e9\"],\"fname\":\"1f1e7-1f1e9\",\"uc\":\"1f1e7-1f1e9\",\"isCanonical\": true},\":bd:\":{\"unicode\":[\"1f1e7-1f1e9\"],\"fname\":\"1f1e7-1f1e9\",\"uc\":\"1f1e7-1f1e9\",\"isCanonical\": false},\":flag_bb:\":{\"unicode\":[\"1f1e7-1f1e7\"],\"fname\":\"1f1e7-1f1e7\",\"uc\":\"1f1e7-1f1e7\",\"isCanonical\": true},\":bb:\":{\"unicode\":[\"1f1e7-1f1e7\"],\"fname\":\"1f1e7-1f1e7\",\"uc\":\"1f1e7-1f1e7\",\"isCanonical\": false},\":flag_ba:\":{\"unicode\":[\"1f1e7-1f1e6\"],\"fname\":\"1f1e7-1f1e6\",\"uc\":\"1f1e7-1f1e6\",\"isCanonical\": true},\":ba:\":{\"unicode\":[\"1f1e7-1f1e6\"],\"fname\":\"1f1e7-1f1e6\",\"uc\":\"1f1e7-1f1e6\",\"isCanonical\": false},\":flag_az:\":{\"unicode\":[\"1f1e6-1f1ff\"],\"fname\":\"1f1e6-1f1ff\",\"uc\":\"1f1e6-1f1ff\",\"isCanonical\": true},\":az:\":{\"unicode\":[\"1f1e6-1f1ff\"],\"fname\":\"1f1e6-1f1ff\",\"uc\":\"1f1e6-1f1ff\",\"isCanonical\": false},\":flag_ax:\":{\"unicode\":[\"1f1e6-1f1fd\"],\"fname\":\"1f1e6-1f1fd\",\"uc\":\"1f1e6-1f1fd\",\"isCanonical\": true},\":ax:\":{\"unicode\":[\"1f1e6-1f1fd\"],\"fname\":\"1f1e6-1f1fd\",\"uc\":\"1f1e6-1f1fd\",\"isCanonical\": false},\":flag_aw:\":{\"unicode\":[\"1f1e6-1f1fc\"],\"fname\":\"1f1e6-1f1fc\",\"uc\":\"1f1e6-1f1fc\",\"isCanonical\": true},\":aw:\":{\"unicode\":[\"1f1e6-1f1fc\"],\"fname\":\"1f1e6-1f1fc\",\"uc\":\"1f1e6-1f1fc\",\"isCanonical\": false},\":flag_au:\":{\"unicode\":[\"1f1e6-1f1fa\"],\"fname\":\"1f1e6-1f1fa\",\"uc\":\"1f1e6-1f1fa\",\"isCanonical\": true},\":au:\":{\"unicode\":[\"1f1e6-1f1fa\"],\"fname\":\"1f1e6-1f1fa\",\"uc\":\"1f1e6-1f1fa\",\"isCanonical\": false},\":flag_at:\":{\"unicode\":[\"1f1e6-1f1f9\"],\"fname\":\"1f1e6-1f1f9\",\"uc\":\"1f1e6-1f1f9\",\"isCanonical\": true},\":at:\":{\"unicode\":[\"1f1e6-1f1f9\"],\"fname\":\"1f1e6-1f1f9\",\"uc\":\"1f1e6-1f1f9\",\"isCanonical\": false},\":flag_as:\":{\"unicode\":[\"1f1e6-1f1f8\"],\"fname\":\"1f1e6-1f1f8\",\"uc\":\"1f1e6-1f1f8\",\"isCanonical\": true},\":as:\":{\"unicode\":[\"1f1e6-1f1f8\"],\"fname\":\"1f1e6-1f1f8\",\"uc\":\"1f1e6-1f1f8\",\"isCanonical\": false},\":flag_ar:\":{\"unicode\":[\"1f1e6-1f1f7\"],\"fname\":\"1f1e6-1f1f7\",\"uc\":\"1f1e6-1f1f7\",\"isCanonical\": true},\":ar:\":{\"unicode\":[\"1f1e6-1f1f7\"],\"fname\":\"1f1e6-1f1f7\",\"uc\":\"1f1e6-1f1f7\",\"isCanonical\": false},\":flag_aq:\":{\"unicode\":[\"1f1e6-1f1f6\"],\"fname\":\"1f1e6-1f1f6\",\"uc\":\"1f1e6-1f1f6\",\"isCanonical\": true},\":aq:\":{\"unicode\":[\"1f1e6-1f1f6\"],\"fname\":\"1f1e6-1f1f6\",\"uc\":\"1f1e6-1f1f6\",\"isCanonical\": false},\":flag_ao:\":{\"unicode\":[\"1f1e6-1f1f4\"],\"fname\":\"1f1e6-1f1f4\",\"uc\":\"1f1e6-1f1f4\",\"isCanonical\": true},\":ao:\":{\"unicode\":[\"1f1e6-1f1f4\"],\"fname\":\"1f1e6-1f1f4\",\"uc\":\"1f1e6-1f1f4\",\"isCanonical\": false},\":flag_am:\":{\"unicode\":[\"1f1e6-1f1f2\"],\"fname\":\"1f1e6-1f1f2\",\"uc\":\"1f1e6-1f1f2\",\"isCanonical\": true},\":am:\":{\"unicode\":[\"1f1e6-1f1f2\"],\"fname\":\"1f1e6-1f1f2\",\"uc\":\"1f1e6-1f1f2\",\"isCanonical\": false},\":flag_al:\":{\"unicode\":[\"1f1e6-1f1f1\"],\"fname\":\"1f1e6-1f1f1\",\"uc\":\"1f1e6-1f1f1\",\"isCanonical\": true},\":al:\":{\"unicode\":[\"1f1e6-1f1f1\"],\"fname\":\"1f1e6-1f1f1\",\"uc\":\"1f1e6-1f1f1\",\"isCanonical\": false},\":flag_ai:\":{\"unicode\":[\"1f1e6-1f1ee\"],\"fname\":\"1f1e6-1f1ee\",\"uc\":\"1f1e6-1f1ee\",\"isCanonical\": true},\":ai:\":{\"unicode\":[\"1f1e6-1f1ee\"],\"fname\":\"1f1e6-1f1ee\",\"uc\":\"1f1e6-1f1ee\",\"isCanonical\": false},\":flag_ag:\":{\"unicode\":[\"1f1e6-1f1ec\"],\"fname\":\"1f1e6-1f1ec\",\"uc\":\"1f1e6-1f1ec\",\"isCanonical\": true},\":ag:\":{\"unicode\":[\"1f1e6-1f1ec\"],\"fname\":\"1f1e6-1f1ec\",\"uc\":\"1f1e6-1f1ec\",\"isCanonical\": false},\":flag_af:\":{\"unicode\":[\"1f1e6-1f1eb\"],\"fname\":\"1f1e6-1f1eb\",\"uc\":\"1f1e6-1f1eb\",\"isCanonical\": true},\":af:\":{\"unicode\":[\"1f1e6-1f1eb\"],\"fname\":\"1f1e6-1f1eb\",\"uc\":\"1f1e6-1f1eb\",\"isCanonical\": false},\":flag_ae:\":{\"unicode\":[\"1f1e6-1f1ea\"],\"fname\":\"1f1e6-1f1ea\",\"uc\":\"1f1e6-1f1ea\",\"isCanonical\": true},\":ae:\":{\"unicode\":[\"1f1e6-1f1ea\"],\"fname\":\"1f1e6-1f1ea\",\"uc\":\"1f1e6-1f1ea\",\"isCanonical\": false},\":flag_ad:\":{\"unicode\":[\"1f1e6-1f1e9\"],\"fname\":\"1f1e6-1f1e9\",\"uc\":\"1f1e6-1f1e9\",\"isCanonical\": true},\":ad:\":{\"unicode\":[\"1f1e6-1f1e9\"],\"fname\":\"1f1e6-1f1e9\",\"uc\":\"1f1e6-1f1e9\",\"isCanonical\": false},\":flag_ac:\":{\"unicode\":[\"1f1e6-1f1e8\"],\"fname\":\"1f1e6-1f1e8\",\"uc\":\"1f1e6-1f1e8\",\"isCanonical\": true},\":ac:\":{\"unicode\":[\"1f1e6-1f1e8\"],\"fname\":\"1f1e6-1f1e8\",\"uc\":\"1f1e6-1f1e8\",\"isCanonical\": false},\":mahjong:\":{\"unicode\":[\"1f004-fe0f\",\"1f004\"],\"fname\":\"1f004\",\"uc\":\"1f004\",\"isCanonical\": true},\":parking:\":{\"unicode\":[\"1f17f-fe0f\",\"1f17f\"],\"fname\":\"1f17f\",\"uc\":\"1f17f\",\"isCanonical\": true},\":sa:\":{\"unicode\":[\"1f202-fe0f\",\"1f202\"],\"fname\":\"1f202\",\"uc\":\"1f202\",\"isCanonical\": true},\":u7121:\":{\"unicode\":[\"1f21a-fe0f\",\"1f21a\"],\"fname\":\"1f21a\",\"uc\":\"1f21a\",\"isCanonical\": true},\":u6307:\":{\"unicode\":[\"1f22f-fe0f\",\"1f22f\"],\"fname\":\"1f22f\",\"uc\":\"1f22f\",\"isCanonical\": true},\":u6708:\":{\"unicode\":[\"1f237-fe0f\",\"1f237\"],\"fname\":\"1f237\",\"uc\":\"1f237\",\"isCanonical\": true},\":film_frames:\":{\"unicode\":[\"1f39e-fe0f\",\"1f39e\"],\"fname\":\"1f39e\",\"uc\":\"1f39e\",\"isCanonical\": true},\":tickets:\":{\"unicode\":[\"1f39f-fe0f\",\"1f39f\"],\"fname\":\"1f39f\",\"uc\":\"1f39f\",\"isCanonical\": true},\":admission_tickets:\":{\"unicode\":[\"1f39f-fe0f\",\"1f39f\"],\"fname\":\"1f39f\",\"uc\":\"1f39f\",\"isCanonical\": false},\":lifter:\":{\"unicode\":[\"1f3cb-fe0f\",\"1f3cb\"],\"fname\":\"1f3cb\",\"uc\":\"1f3cb\",\"isCanonical\": true},\":weight_lifter:\":{\"unicode\":[\"1f3cb-fe0f\",\"1f3cb\"],\"fname\":\"1f3cb\",\"uc\":\"1f3cb\",\"isCanonical\": false},\":golfer:\":{\"unicode\":[\"1f3cc-fe0f\",\"1f3cc\"],\"fname\":\"1f3cc\",\"uc\":\"1f3cc\",\"isCanonical\": true},\":motorcycle:\":{\"unicode\":[\"1f3cd-fe0f\",\"1f3cd\"],\"fname\":\"1f3cd\",\"uc\":\"1f3cd\",\"isCanonical\": true},\":racing_motorcycle:\":{\"unicode\":[\"1f3cd-fe0f\",\"1f3cd\"],\"fname\":\"1f3cd\",\"uc\":\"1f3cd\",\"isCanonical\": false},\":race_car:\":{\"unicode\":[\"1f3ce-fe0f\",\"1f3ce\"],\"fname\":\"1f3ce\",\"uc\":\"1f3ce\",\"isCanonical\": true},\":racing_car:\":{\"unicode\":[\"1f3ce-fe0f\",\"1f3ce\"],\"fname\":\"1f3ce\",\"uc\":\"1f3ce\",\"isCanonical\": false},\":military_medal:\":{\"unicode\":[\"1f396-fe0f\",\"1f396\"],\"fname\":\"1f396\",\"uc\":\"1f396\",\"isCanonical\": true},\":reminder_ribbon:\":{\"unicode\":[\"1f397-fe0f\",\"1f397\"],\"fname\":\"1f397\",\"uc\":\"1f397\",\"isCanonical\": true},\":hot_pepper:\":{\"unicode\":[\"1f336-fe0f\",\"1f336\"],\"fname\":\"1f336\",\"uc\":\"1f336\",\"isCanonical\": true},\":cloud_rain:\":{\"unicode\":[\"1f327-fe0f\",\"1f327\"],\"fname\":\"1f327\",\"uc\":\"1f327\",\"isCanonical\": true},\":cloud_with_rain:\":{\"unicode\":[\"1f327-fe0f\",\"1f327\"],\"fname\":\"1f327\",\"uc\":\"1f327\",\"isCanonical\": false},\":cloud_snow:\":{\"unicode\":[\"1f328-fe0f\",\"1f328\"],\"fname\":\"1f328\",\"uc\":\"1f328\",\"isCanonical\": true},\":cloud_with_snow:\":{\"unicode\":[\"1f328-fe0f\",\"1f328\"],\"fname\":\"1f328\",\"uc\":\"1f328\",\"isCanonical\": false},\":cloud_lightning:\":{\"unicode\":[\"1f329-fe0f\",\"1f329\"],\"fname\":\"1f329\",\"uc\":\"1f329\",\"isCanonical\": true},\":cloud_with_lightning:\":{\"unicode\":[\"1f329-fe0f\",\"1f329\"],\"fname\":\"1f329\",\"uc\":\"1f329\",\"isCanonical\": false},\":cloud_tornado:\":{\"unicode\":[\"1f32a-fe0f\",\"1f32a\"],\"fname\":\"1f32a\",\"uc\":\"1f32a\",\"isCanonical\": true},\":cloud_with_tornado:\":{\"unicode\":[\"1f32a-fe0f\",\"1f32a\"],\"fname\":\"1f32a\",\"uc\":\"1f32a\",\"isCanonical\": false},\":fog:\":{\"unicode\":[\"1f32b-fe0f\",\"1f32b\"],\"fname\":\"1f32b\",\"uc\":\"1f32b\",\"isCanonical\": true},\":wind_blowing_face:\":{\"unicode\":[\"1f32c-fe0f\",\"1f32c\"],\"fname\":\"1f32c\",\"uc\":\"1f32c\",\"isCanonical\": true},\":chipmunk:\":{\"unicode\":[\"1f43f-fe0f\",\"1f43f\"],\"fname\":\"1f43f\",\"uc\":\"1f43f\",\"isCanonical\": true},\":spider:\":{\"unicode\":[\"1f577-fe0f\",\"1f577\"],\"fname\":\"1f577\",\"uc\":\"1f577\",\"isCanonical\": true},\":spider_web:\":{\"unicode\":[\"1f578-fe0f\",\"1f578\"],\"fname\":\"1f578\",\"uc\":\"1f578\",\"isCanonical\": true},\":thermometer:\":{\"unicode\":[\"1f321-fe0f\",\"1f321\"],\"fname\":\"1f321\",\"uc\":\"1f321\",\"isCanonical\": true},\":microphone2:\":{\"unicode\":[\"1f399-fe0f\",\"1f399\"],\"fname\":\"1f399\",\"uc\":\"1f399\",\"isCanonical\": true},\":studio_microphone:\":{\"unicode\":[\"1f399-fe0f\",\"1f399\"],\"fname\":\"1f399\",\"uc\":\"1f399\",\"isCanonical\": false},\":level_slider:\":{\"unicode\":[\"1f39a-fe0f\",\"1f39a\"],\"fname\":\"1f39a\",\"uc\":\"1f39a\",\"isCanonical\": true},\":control_knobs:\":{\"unicode\":[\"1f39b-fe0f\",\"1f39b\"],\"fname\":\"1f39b\",\"uc\":\"1f39b\",\"isCanonical\": true},\":flag_white:\":{\"unicode\":[\"1f3f3-fe0f\",\"1f3f3\"],\"fname\":\"1f3f3\",\"uc\":\"1f3f3\",\"isCanonical\": true},\":waving_white_flag:\":{\"unicode\":[\"1f3f3-fe0f\",\"1f3f3\"],\"fname\":\"1f3f3\",\"uc\":\"1f3f3\",\"isCanonical\": false},\":rosette:\":{\"unicode\":[\"1f3f5-fe0f\",\"1f3f5\"],\"fname\":\"1f3f5\",\"uc\":\"1f3f5\",\"isCanonical\": true},\":label:\":{\"unicode\":[\"1f3f7-fe0f\",\"1f3f7\"],\"fname\":\"1f3f7\",\"uc\":\"1f3f7\",\"isCanonical\": true},\":projector:\":{\"unicode\":[\"1f4fd-fe0f\",\"1f4fd\"],\"fname\":\"1f4fd\",\"uc\":\"1f4fd\",\"isCanonical\": true},\":film_projector:\":{\"unicode\":[\"1f4fd-fe0f\",\"1f4fd\"],\"fname\":\"1f4fd\",\"uc\":\"1f4fd\",\"isCanonical\": false},\":om_symbol:\":{\"unicode\":[\"1f549-fe0f\",\"1f549\"],\"fname\":\"1f549\",\"uc\":\"1f549\",\"isCanonical\": true},\":dove:\":{\"unicode\":[\"1f54a-fe0f\",\"1f54a\"],\"fname\":\"1f54a\",\"uc\":\"1f54a\",\"isCanonical\": true},\":dove_of_peace:\":{\"unicode\":[\"1f54a-fe0f\",\"1f54a\"],\"fname\":\"1f54a\",\"uc\":\"1f54a\",\"isCanonical\": false},\":candle:\":{\"unicode\":[\"1f56f-fe0f\",\"1f56f\"],\"fname\":\"1f56f\",\"uc\":\"1f56f\",\"isCanonical\": true},\":clock:\":{\"unicode\":[\"1f570-fe0f\",\"1f570\"],\"fname\":\"1f570\",\"uc\":\"1f570\",\"isCanonical\": true},\":mantlepiece_clock:\":{\"unicode\":[\"1f570-fe0f\",\"1f570\"],\"fname\":\"1f570\",\"uc\":\"1f570\",\"isCanonical\": false},\":hole:\":{\"unicode\":[\"1f573-fe0f\",\"1f573\"],\"fname\":\"1f573\",\"uc\":\"1f573\",\"isCanonical\": true},\":dark_sunglasses:\":{\"unicode\":[\"1f576-fe0f\",\"1f576\"],\"fname\":\"1f576\",\"uc\":\"1f576\",\"isCanonical\": true},\":joystick:\":{\"unicode\":[\"1f579-fe0f\",\"1f579\"],\"fname\":\"1f579\",\"uc\":\"1f579\",\"isCanonical\": true},\":paperclips:\":{\"unicode\":[\"1f587-fe0f\",\"1f587\"],\"fname\":\"1f587\",\"uc\":\"1f587\",\"isCanonical\": true},\":linked_paperclips:\":{\"unicode\":[\"1f587-fe0f\",\"1f587\"],\"fname\":\"1f587\",\"uc\":\"1f587\",\"isCanonical\": false},\":pen_ballpoint:\":{\"unicode\":[\"1f58a-fe0f\",\"1f58a\"],\"fname\":\"1f58a\",\"uc\":\"1f58a\",\"isCanonical\": true},\":lower_left_ballpoint_pen:\":{\"unicode\":[\"1f58a-fe0f\",\"1f58a\"],\"fname\":\"1f58a\",\"uc\":\"1f58a\",\"isCanonical\": false},\":pen_fountain:\":{\"unicode\":[\"1f58b-fe0f\",\"1f58b\"],\"fname\":\"1f58b\",\"uc\":\"1f58b\",\"isCanonical\": true},\":lower_left_fountain_pen:\":{\"unicode\":[\"1f58b-fe0f\",\"1f58b\"],\"fname\":\"1f58b\",\"uc\":\"1f58b\",\"isCanonical\": false},\":paintbrush:\":{\"unicode\":[\"1f58c-fe0f\",\"1f58c\"],\"fname\":\"1f58c\",\"uc\":\"1f58c\",\"isCanonical\": true},\":lower_left_paintbrush:\":{\"unicode\":[\"1f58c-fe0f\",\"1f58c\"],\"fname\":\"1f58c\",\"uc\":\"1f58c\",\"isCanonical\": false},\":crayon:\":{\"unicode\":[\"1f58d-fe0f\",\"1f58d\"],\"fname\":\"1f58d\",\"uc\":\"1f58d\",\"isCanonical\": true},\":lower_left_crayon:\":{\"unicode\":[\"1f58d-fe0f\",\"1f58d\"],\"fname\":\"1f58d\",\"uc\":\"1f58d\",\"isCanonical\": false},\":desktop:\":{\"unicode\":[\"1f5a5-fe0f\",\"1f5a5\"],\"fname\":\"1f5a5\",\"uc\":\"1f5a5\",\"isCanonical\": true},\":desktop_computer:\":{\"unicode\":[\"1f5a5-fe0f\",\"1f5a5\"],\"fname\":\"1f5a5\",\"uc\":\"1f5a5\",\"isCanonical\": false},\":printer:\":{\"unicode\":[\"1f5a8-fe0f\",\"1f5a8\"],\"fname\":\"1f5a8\",\"uc\":\"1f5a8\",\"isCanonical\": true},\":trackball:\":{\"unicode\":[\"1f5b2-fe0f\",\"1f5b2\"],\"fname\":\"1f5b2\",\"uc\":\"1f5b2\",\"isCanonical\": true},\":frame_photo:\":{\"unicode\":[\"1f5bc-fe0f\",\"1f5bc\"],\"fname\":\"1f5bc\",\"uc\":\"1f5bc\",\"isCanonical\": true},\":frame_with_picture:\":{\"unicode\":[\"1f5bc-fe0f\",\"1f5bc\"],\"fname\":\"1f5bc\",\"uc\":\"1f5bc\",\"isCanonical\": false},\":dividers:\":{\"unicode\":[\"1f5c2-fe0f\",\"1f5c2\"],\"fname\":\"1f5c2\",\"uc\":\"1f5c2\",\"isCanonical\": true},\":card_index_dividers:\":{\"unicode\":[\"1f5c2-fe0f\",\"1f5c2\"],\"fname\":\"1f5c2\",\"uc\":\"1f5c2\",\"isCanonical\": false},\":card_box:\":{\"unicode\":[\"1f5c3-fe0f\",\"1f5c3\"],\"fname\":\"1f5c3\",\"uc\":\"1f5c3\",\"isCanonical\": true},\":card_file_box:\":{\"unicode\":[\"1f5c3-fe0f\",\"1f5c3\"],\"fname\":\"1f5c3\",\"uc\":\"1f5c3\",\"isCanonical\": false},\":file_cabinet:\":{\"unicode\":[\"1f5c4-fe0f\",\"1f5c4\"],\"fname\":\"1f5c4\",\"uc\":\"1f5c4\",\"isCanonical\": true},\":wastebasket:\":{\"unicode\":[\"1f5d1-fe0f\",\"1f5d1\"],\"fname\":\"1f5d1\",\"uc\":\"1f5d1\",\"isCanonical\": true},\":notepad_spiral:\":{\"unicode\":[\"1f5d2-fe0f\",\"1f5d2\"],\"fname\":\"1f5d2\",\"uc\":\"1f5d2\",\"isCanonical\": true},\":spiral_note_pad:\":{\"unicode\":[\"1f5d2-fe0f\",\"1f5d2\"],\"fname\":\"1f5d2\",\"uc\":\"1f5d2\",\"isCanonical\": false},\":calendar_spiral:\":{\"unicode\":[\"1f5d3-fe0f\",\"1f5d3\"],\"fname\":\"1f5d3\",\"uc\":\"1f5d3\",\"isCanonical\": true},\":spiral_calendar_pad:\":{\"unicode\":[\"1f5d3-fe0f\",\"1f5d3\"],\"fname\":\"1f5d3\",\"uc\":\"1f5d3\",\"isCanonical\": false},\":compression:\":{\"unicode\":[\"1f5dc-fe0f\",\"1f5dc\"],\"fname\":\"1f5dc\",\"uc\":\"1f5dc\",\"isCanonical\": true},\":key2:\":{\"unicode\":[\"1f5dd-fe0f\",\"1f5dd\"],\"fname\":\"1f5dd\",\"uc\":\"1f5dd\",\"isCanonical\": true},\":old_key:\":{\"unicode\":[\"1f5dd-fe0f\",\"1f5dd\"],\"fname\":\"1f5dd\",\"uc\":\"1f5dd\",\"isCanonical\": false},\":newspaper2:\":{\"unicode\":[\"1f5de-fe0f\",\"1f5de\"],\"fname\":\"1f5de\",\"uc\":\"1f5de\",\"isCanonical\": true},\":rolled_up_newspaper:\":{\"unicode\":[\"1f5de-fe0f\",\"1f5de\"],\"fname\":\"1f5de\",\"uc\":\"1f5de\",\"isCanonical\": false},\":dagger:\":{\"unicode\":[\"1f5e1-fe0f\",\"1f5e1\"],\"fname\":\"1f5e1\",\"uc\":\"1f5e1\",\"isCanonical\": true},\":dagger_knife:\":{\"unicode\":[\"1f5e1-fe0f\",\"1f5e1\"],\"fname\":\"1f5e1\",\"uc\":\"1f5e1\",\"isCanonical\": false},\":speaking_head:\":{\"unicode\":[\"1f5e3-fe0f\",\"1f5e3\"],\"fname\":\"1f5e3\",\"uc\":\"1f5e3\",\"isCanonical\": true},\":speaking_head_in_silhouette:\":{\"unicode\":[\"1f5e3-fe0f\",\"1f5e3\"],\"fname\":\"1f5e3\",\"uc\":\"1f5e3\",\"isCanonical\": false},\":speech_left:\":{\"unicode\":[\"1f5e8-fe0f\",\"1f5e8\"],\"fname\":\"1f5e8\",\"uc\":\"1f5e8\",\"isCanonical\": true},\":left_speech_bubble:\":{\"unicode\":[\"1f5e8-fe0f\",\"1f5e8\"],\"fname\":\"1f5e8\",\"uc\":\"1f5e8\",\"isCanonical\": false},\":anger_right:\":{\"unicode\":[\"1f5ef-fe0f\",\"1f5ef\"],\"fname\":\"1f5ef\",\"uc\":\"1f5ef\",\"isCanonical\": true},\":right_anger_bubble:\":{\"unicode\":[\"1f5ef-fe0f\",\"1f5ef\"],\"fname\":\"1f5ef\",\"uc\":\"1f5ef\",\"isCanonical\": false},\":ballot_box:\":{\"unicode\":[\"1f5f3-fe0f\",\"1f5f3\"],\"fname\":\"1f5f3\",\"uc\":\"1f5f3\",\"isCanonical\": true},\":ballot_box_with_ballot:\":{\"unicode\":[\"1f5f3-fe0f\",\"1f5f3\"],\"fname\":\"1f5f3\",\"uc\":\"1f5f3\",\"isCanonical\": false},\":map:\":{\"unicode\":[\"1f5fa-fe0f\",\"1f5fa\"],\"fname\":\"1f5fa\",\"uc\":\"1f5fa\",\"isCanonical\": true},\":world_map:\":{\"unicode\":[\"1f5fa-fe0f\",\"1f5fa\"],\"fname\":\"1f5fa\",\"uc\":\"1f5fa\",\"isCanonical\": false},\":tools:\":{\"unicode\":[\"1f6e0-fe0f\",\"1f6e0\"],\"fname\":\"1f6e0\",\"uc\":\"1f6e0\",\"isCanonical\": true},\":hammer_and_wrench:\":{\"unicode\":[\"1f6e0-fe0f\",\"1f6e0\"],\"fname\":\"1f6e0\",\"uc\":\"1f6e0\",\"isCanonical\": false},\":shield:\":{\"unicode\":[\"1f6e1-fe0f\",\"1f6e1\"],\"fname\":\"1f6e1\",\"uc\":\"1f6e1\",\"isCanonical\": true},\":oil:\":{\"unicode\":[\"1f6e2-fe0f\",\"1f6e2\"],\"fname\":\"1f6e2\",\"uc\":\"1f6e2\",\"isCanonical\": true},\":oil_drum:\":{\"unicode\":[\"1f6e2-fe0f\",\"1f6e2\"],\"fname\":\"1f6e2\",\"uc\":\"1f6e2\",\"isCanonical\": false},\":satellite_orbital:\":{\"unicode\":[\"1f6f0-fe0f\",\"1f6f0\"],\"fname\":\"1f6f0\",\"uc\":\"1f6f0\",\"isCanonical\": true},\":fork_knife_plate:\":{\"unicode\":[\"1f37d-fe0f\",\"1f37d\"],\"fname\":\"1f37d\",\"uc\":\"1f37d\",\"isCanonical\": true},\":fork_and_knife_with_plate:\":{\"unicode\":[\"1f37d-fe0f\",\"1f37d\"],\"fname\":\"1f37d\",\"uc\":\"1f37d\",\"isCanonical\": false},\":eye:\":{\"unicode\":[\"1f441-fe0f\",\"1f441\"],\"fname\":\"1f441\",\"uc\":\"1f441\",\"isCanonical\": true},\":levitate:\":{\"unicode\":[\"1f574-fe0f\",\"1f574\"],\"fname\":\"1f574\",\"uc\":\"1f574\",\"isCanonical\": true},\":man_in_business_suit_levitating:\":{\"unicode\":[\"1f574-fe0f\",\"1f574\"],\"fname\":\"1f574\",\"uc\":\"1f574\",\"isCanonical\": false},\":spy:\":{\"unicode\":[\"1f575-fe0f\",\"1f575\"],\"fname\":\"1f575\",\"uc\":\"1f575\",\"isCanonical\": true},\":sleuth_or_spy:\":{\"unicode\":[\"1f575-fe0f\",\"1f575\"],\"fname\":\"1f575\",\"uc\":\"1f575\",\"isCanonical\": false},\":hand_splayed:\":{\"unicode\":[\"1f590-fe0f\",\"1f590\"],\"fname\":\"1f590\",\"uc\":\"1f590\",\"isCanonical\": true},\":raised_hand_with_fingers_splayed:\":{\"unicode\":[\"1f590-fe0f\",\"1f590\"],\"fname\":\"1f590\",\"uc\":\"1f590\",\"isCanonical\": false},\":mountain_snow:\":{\"unicode\":[\"1f3d4-fe0f\",\"1f3d4\"],\"fname\":\"1f3d4\",\"uc\":\"1f3d4\",\"isCanonical\": true},\":snow_capped_mountain:\":{\"unicode\":[\"1f3d4-fe0f\",\"1f3d4\"],\"fname\":\"1f3d4\",\"uc\":\"1f3d4\",\"isCanonical\": false},\":camping:\":{\"unicode\":[\"1f3d5-fe0f\",\"1f3d5\"],\"fname\":\"1f3d5\",\"uc\":\"1f3d5\",\"isCanonical\": true},\":beach:\":{\"unicode\":[\"1f3d6-fe0f\",\"1f3d6\"],\"fname\":\"1f3d6\",\"uc\":\"1f3d6\",\"isCanonical\": true},\":beach_with_umbrella:\":{\"unicode\":[\"1f3d6-fe0f\",\"1f3d6\"],\"fname\":\"1f3d6\",\"uc\":\"1f3d6\",\"isCanonical\": false},\":construction_site:\":{\"unicode\":[\"1f3d7-fe0f\",\"1f3d7\"],\"fname\":\"1f3d7\",\"uc\":\"1f3d7\",\"isCanonical\": true},\":building_construction:\":{\"unicode\":[\"1f3d7-fe0f\",\"1f3d7\"],\"fname\":\"1f3d7\",\"uc\":\"1f3d7\",\"isCanonical\": false},\":homes:\":{\"unicode\":[\"1f3d8-fe0f\",\"1f3d8\"],\"fname\":\"1f3d8\",\"uc\":\"1f3d8\",\"isCanonical\": true},\":house_buildings:\":{\"unicode\":[\"1f3d8-fe0f\",\"1f3d8\"],\"fname\":\"1f3d8\",\"uc\":\"1f3d8\",\"isCanonical\": false},\":cityscape:\":{\"unicode\":[\"1f3d9-fe0f\",\"1f3d9\"],\"fname\":\"1f3d9\",\"uc\":\"1f3d9\",\"isCanonical\": true},\":house_abandoned:\":{\"unicode\":[\"1f3da-fe0f\",\"1f3da\"],\"fname\":\"1f3da\",\"uc\":\"1f3da\",\"isCanonical\": true},\":derelict_house_building:\":{\"unicode\":[\"1f3da-fe0f\",\"1f3da\"],\"fname\":\"1f3da\",\"uc\":\"1f3da\",\"isCanonical\": false},\":classical_building:\":{\"unicode\":[\"1f3db-fe0f\",\"1f3db\"],\"fname\":\"1f3db\",\"uc\":\"1f3db\",\"isCanonical\": true},\":desert:\":{\"unicode\":[\"1f3dc-fe0f\",\"1f3dc\"],\"fname\":\"1f3dc\",\"uc\":\"1f3dc\",\"isCanonical\": true},\":island:\":{\"unicode\":[\"1f3dd-fe0f\",\"1f3dd\"],\"fname\":\"1f3dd\",\"uc\":\"1f3dd\",\"isCanonical\": true},\":desert_island:\":{\"unicode\":[\"1f3dd-fe0f\",\"1f3dd\"],\"fname\":\"1f3dd\",\"uc\":\"1f3dd\",\"isCanonical\": false},\":park:\":{\"unicode\":[\"1f3de-fe0f\",\"1f3de\"],\"fname\":\"1f3de\",\"uc\":\"1f3de\",\"isCanonical\": true},\":national_park:\":{\"unicode\":[\"1f3de-fe0f\",\"1f3de\"],\"fname\":\"1f3de\",\"uc\":\"1f3de\",\"isCanonical\": false},\":stadium:\":{\"unicode\":[\"1f3df-fe0f\",\"1f3df\"],\"fname\":\"1f3df\",\"uc\":\"1f3df\",\"isCanonical\": true},\":couch:\":{\"unicode\":[\"1f6cb-fe0f\",\"1f6cb\"],\"fname\":\"1f6cb\",\"uc\":\"1f6cb\",\"isCanonical\": true},\":couch_and_lamp:\":{\"unicode\":[\"1f6cb-fe0f\",\"1f6cb\"],\"fname\":\"1f6cb\",\"uc\":\"1f6cb\",\"isCanonical\": false},\":shopping_bags:\":{\"unicode\":[\"1f6cd-fe0f\",\"1f6cd\"],\"fname\":\"1f6cd\",\"uc\":\"1f6cd\",\"isCanonical\": true},\":bellhop:\":{\"unicode\":[\"1f6ce-fe0f\",\"1f6ce\"],\"fname\":\"1f6ce\",\"uc\":\"1f6ce\",\"isCanonical\": true},\":bellhop_bell:\":{\"unicode\":[\"1f6ce-fe0f\",\"1f6ce\"],\"fname\":\"1f6ce\",\"uc\":\"1f6ce\",\"isCanonical\": false},\":bed:\":{\"unicode\":[\"1f6cf-fe0f\",\"1f6cf\"],\"fname\":\"1f6cf\",\"uc\":\"1f6cf\",\"isCanonical\": true},\":motorway:\":{\"unicode\":[\"1f6e3-fe0f\",\"1f6e3\"],\"fname\":\"1f6e3\",\"uc\":\"1f6e3\",\"isCanonical\": true},\":railway_track:\":{\"unicode\":[\"1f6e4-fe0f\",\"1f6e4\"],\"fname\":\"1f6e4\",\"uc\":\"1f6e4\",\"isCanonical\": true},\":railroad_track:\":{\"unicode\":[\"1f6e4-fe0f\",\"1f6e4\"],\"fname\":\"1f6e4\",\"uc\":\"1f6e4\",\"isCanonical\": false},\":motorboat:\":{\"unicode\":[\"1f6e5-fe0f\",\"1f6e5\"],\"fname\":\"1f6e5\",\"uc\":\"1f6e5\",\"isCanonical\": true},\":airplane_small:\":{\"unicode\":[\"1f6e9-fe0f\",\"1f6e9\"],\"fname\":\"1f6e9\",\"uc\":\"1f6e9\",\"isCanonical\": true},\":small_airplane:\":{\"unicode\":[\"1f6e9-fe0f\",\"1f6e9\"],\"fname\":\"1f6e9\",\"uc\":\"1f6e9\",\"isCanonical\": false},\":cruise_ship:\":{\"unicode\":[\"1f6f3-fe0f\",\"1f6f3\"],\"fname\":\"1f6f3\",\"uc\":\"1f6f3\",\"isCanonical\": true},\":passenger_ship:\":{\"unicode\":[\"1f6f3-fe0f\",\"1f6f3\"],\"fname\":\"1f6f3\",\"uc\":\"1f6f3\",\"isCanonical\": false},\":white_sun_small_cloud:\":{\"unicode\":[\"1f324-fe0f\",\"1f324\"],\"fname\":\"1f324\",\"uc\":\"1f324\",\"isCanonical\": true},\":white_sun_with_small_cloud:\":{\"unicode\":[\"1f324-fe0f\",\"1f324\"],\"fname\":\"1f324\",\"uc\":\"1f324\",\"isCanonical\": false},\":white_sun_cloud:\":{\"unicode\":[\"1f325-fe0f\",\"1f325\"],\"fname\":\"1f325\",\"uc\":\"1f325\",\"isCanonical\": true},\":white_sun_behind_cloud:\":{\"unicode\":[\"1f325-fe0f\",\"1f325\"],\"fname\":\"1f325\",\"uc\":\"1f325\",\"isCanonical\": false},\":white_sun_rain_cloud:\":{\"unicode\":[\"1f326-fe0f\",\"1f326\"],\"fname\":\"1f326\",\"uc\":\"1f326\",\"isCanonical\": true},\":white_sun_behind_cloud_with_rain:\":{\"unicode\":[\"1f326-fe0f\",\"1f326\"],\"fname\":\"1f326\",\"uc\":\"1f326\",\"isCanonical\": false},\":mouse_three_button:\":{\"unicode\":[\"1f5b1-fe0f\",\"1f5b1\"],\"fname\":\"1f5b1\",\"uc\":\"1f5b1\",\"isCanonical\": true},\":three_button_mouse:\":{\"unicode\":[\"1f5b1-fe0f\",\"1f5b1\"],\"fname\":\"1f5b1\",\"uc\":\"1f5b1\",\"isCanonical\": false},\":point_up_tone1:\":{\"unicode\":[\"261d-1f3fb\"],\"fname\":\"261d-1f3fb\",\"uc\":\"261d-1f3fb\",\"isCanonical\": true},\":point_up_tone2:\":{\"unicode\":[\"261d-1f3fc\"],\"fname\":\"261d-1f3fc\",\"uc\":\"261d-1f3fc\",\"isCanonical\": true},\":point_up_tone3:\":{\"unicode\":[\"261d-1f3fd\"],\"fname\":\"261d-1f3fd\",\"uc\":\"261d-1f3fd\",\"isCanonical\": true},\":point_up_tone4:\":{\"unicode\":[\"261d-1f3fe\"],\"fname\":\"261d-1f3fe\",\"uc\":\"261d-1f3fe\",\"isCanonical\": true},\":point_up_tone5:\":{\"unicode\":[\"261d-1f3ff\"],\"fname\":\"261d-1f3ff\",\"uc\":\"261d-1f3ff\",\"isCanonical\": true},\":v_tone1:\":{\"unicode\":[\"270c-1f3fb\"],\"fname\":\"270c-1f3fb\",\"uc\":\"270c-1f3fb\",\"isCanonical\": true},\":v_tone2:\":{\"unicode\":[\"270c-1f3fc\"],\"fname\":\"270c-1f3fc\",\"uc\":\"270c-1f3fc\",\"isCanonical\": true},\":v_tone3:\":{\"unicode\":[\"270c-1f3fd\"],\"fname\":\"270c-1f3fd\",\"uc\":\"270c-1f3fd\",\"isCanonical\": true},\":v_tone4:\":{\"unicode\":[\"270c-1f3fe\"],\"fname\":\"270c-1f3fe\",\"uc\":\"270c-1f3fe\",\"isCanonical\": true},\":v_tone5:\":{\"unicode\":[\"270c-1f3ff\"],\"fname\":\"270c-1f3ff\",\"uc\":\"270c-1f3ff\",\"isCanonical\": true},\":fist_tone1:\":{\"unicode\":[\"270a-1f3fb\"],\"fname\":\"270a-1f3fb\",\"uc\":\"270a-1f3fb\",\"isCanonical\": true},\":fist_tone2:\":{\"unicode\":[\"270a-1f3fc\"],\"fname\":\"270a-1f3fc\",\"uc\":\"270a-1f3fc\",\"isCanonical\": true},\":fist_tone3:\":{\"unicode\":[\"270a-1f3fd\"],\"fname\":\"270a-1f3fd\",\"uc\":\"270a-1f3fd\",\"isCanonical\": true},\":fist_tone4:\":{\"unicode\":[\"270a-1f3fe\"],\"fname\":\"270a-1f3fe\",\"uc\":\"270a-1f3fe\",\"isCanonical\": true},\":fist_tone5:\":{\"unicode\":[\"270a-1f3ff\"],\"fname\":\"270a-1f3ff\",\"uc\":\"270a-1f3ff\",\"isCanonical\": true},\":raised_hand_tone1:\":{\"unicode\":[\"270b-1f3fb\"],\"fname\":\"270b-1f3fb\",\"uc\":\"270b-1f3fb\",\"isCanonical\": true},\":raised_hand_tone2:\":{\"unicode\":[\"270b-1f3fc\"],\"fname\":\"270b-1f3fc\",\"uc\":\"270b-1f3fc\",\"isCanonical\": true},\":raised_hand_tone3:\":{\"unicode\":[\"270b-1f3fd\"],\"fname\":\"270b-1f3fd\",\"uc\":\"270b-1f3fd\",\"isCanonical\": true},\":raised_hand_tone4:\":{\"unicode\":[\"270b-1f3fe\"],\"fname\":\"270b-1f3fe\",\"uc\":\"270b-1f3fe\",\"isCanonical\": true},\":raised_hand_tone5:\":{\"unicode\":[\"270b-1f3ff\"],\"fname\":\"270b-1f3ff\",\"uc\":\"270b-1f3ff\",\"isCanonical\": true},\":writing_hand_tone1:\":{\"unicode\":[\"270d-1f3fb\"],\"fname\":\"270d-1f3fb\",\"uc\":\"270d-1f3fb\",\"isCanonical\": true},\":writing_hand_tone2:\":{\"unicode\":[\"270d-1f3fc\"],\"fname\":\"270d-1f3fc\",\"uc\":\"270d-1f3fc\",\"isCanonical\": true},\":writing_hand_tone3:\":{\"unicode\":[\"270d-1f3fd\"],\"fname\":\"270d-1f3fd\",\"uc\":\"270d-1f3fd\",\"isCanonical\": true},\":writing_hand_tone4:\":{\"unicode\":[\"270d-1f3fe\"],\"fname\":\"270d-1f3fe\",\"uc\":\"270d-1f3fe\",\"isCanonical\": true},\":writing_hand_tone5:\":{\"unicode\":[\"270d-1f3ff\"],\"fname\":\"270d-1f3ff\",\"uc\":\"270d-1f3ff\",\"isCanonical\": true},\":basketball_player_tone1:\":{\"unicode\":[\"26f9-1f3fb\"],\"fname\":\"26f9-1f3fb\",\"uc\":\"26f9-1f3fb\",\"isCanonical\": true},\":person_with_ball_tone1:\":{\"unicode\":[\"26f9-1f3fb\"],\"fname\":\"26f9-1f3fb\",\"uc\":\"26f9-1f3fb\",\"isCanonical\": false},\":basketball_player_tone2:\":{\"unicode\":[\"26f9-1f3fc\"],\"fname\":\"26f9-1f3fc\",\"uc\":\"26f9-1f3fc\",\"isCanonical\": true},\":person_with_ball_tone2:\":{\"unicode\":[\"26f9-1f3fc\"],\"fname\":\"26f9-1f3fc\",\"uc\":\"26f9-1f3fc\",\"isCanonical\": false},\":basketball_player_tone3:\":{\"unicode\":[\"26f9-1f3fd\"],\"fname\":\"26f9-1f3fd\",\"uc\":\"26f9-1f3fd\",\"isCanonical\": true},\":person_with_ball_tone3:\":{\"unicode\":[\"26f9-1f3fd\"],\"fname\":\"26f9-1f3fd\",\"uc\":\"26f9-1f3fd\",\"isCanonical\": false},\":basketball_player_tone4:\":{\"unicode\":[\"26f9-1f3fe\"],\"fname\":\"26f9-1f3fe\",\"uc\":\"26f9-1f3fe\",\"isCanonical\": true},\":person_with_ball_tone4:\":{\"unicode\":[\"26f9-1f3fe\"],\"fname\":\"26f9-1f3fe\",\"uc\":\"26f9-1f3fe\",\"isCanonical\": false},\":basketball_player_tone5:\":{\"unicode\":[\"26f9-1f3ff\"],\"fname\":\"26f9-1f3ff\",\"uc\":\"26f9-1f3ff\",\"isCanonical\": true},\":person_with_ball_tone5:\":{\"unicode\":[\"26f9-1f3ff\"],\"fname\":\"26f9-1f3ff\",\"uc\":\"26f9-1f3ff\",\"isCanonical\": false},\":copyright:\":{\"unicode\":[\"00a9-fe0f\",\"00a9\"],\"fname\":\"00a9\",\"uc\":\"00a9\",\"isCanonical\": true},\":registered:\":{\"unicode\":[\"00ae-fe0f\",\"00ae\"],\"fname\":\"00ae\",\"uc\":\"00ae\",\"isCanonical\": true},\":bangbang:\":{\"unicode\":[\"203c-fe0f\",\"203c\"],\"fname\":\"203c\",\"uc\":\"203c\",\"isCanonical\": true},\":interrobang:\":{\"unicode\":[\"2049-fe0f\",\"2049\"],\"fname\":\"2049\",\"uc\":\"2049\",\"isCanonical\": true},\":tm:\":{\"unicode\":[\"2122-fe0f\",\"2122\"],\"fname\":\"2122\",\"uc\":\"2122\",\"isCanonical\": true},\":information_source:\":{\"unicode\":[\"2139-fe0f\",\"2139\"],\"fname\":\"2139\",\"uc\":\"2139\",\"isCanonical\": true},\":left_right_arrow:\":{\"unicode\":[\"2194-fe0f\",\"2194\"],\"fname\":\"2194\",\"uc\":\"2194\",\"isCanonical\": true},\":arrow_up_down:\":{\"unicode\":[\"2195-fe0f\",\"2195\"],\"fname\":\"2195\",\"uc\":\"2195\",\"isCanonical\": true},\":arrow_upper_left:\":{\"unicode\":[\"2196-fe0f\",\"2196\"],\"fname\":\"2196\",\"uc\":\"2196\",\"isCanonical\": true},\":arrow_upper_right:\":{\"unicode\":[\"2197-fe0f\",\"2197\"],\"fname\":\"2197\",\"uc\":\"2197\",\"isCanonical\": true},\":arrow_lower_right:\":{\"unicode\":[\"2198-fe0f\",\"2198\"],\"fname\":\"2198\",\"uc\":\"2198\",\"isCanonical\": true},\":arrow_lower_left:\":{\"unicode\":[\"2199-fe0f\",\"2199\"],\"fname\":\"2199\",\"uc\":\"2199\",\"isCanonical\": true},\":leftwards_arrow_with_hook:\":{\"unicode\":[\"21a9-fe0f\",\"21a9\"],\"fname\":\"21a9\",\"uc\":\"21a9\",\"isCanonical\": true},\":arrow_right_hook:\":{\"unicode\":[\"21aa-fe0f\",\"21aa\"],\"fname\":\"21aa\",\"uc\":\"21aa\",\"isCanonical\": true},\":watch:\":{\"unicode\":[\"231a-fe0f\",\"231a\"],\"fname\":\"231a\",\"uc\":\"231a\",\"isCanonical\": true},\":hourglass:\":{\"unicode\":[\"231b-fe0f\",\"231b\"],\"fname\":\"231b\",\"uc\":\"231b\",\"isCanonical\": true},\":m:\":{\"unicode\":[\"24c2-fe0f\",\"24c2\"],\"fname\":\"24c2\",\"uc\":\"24c2\",\"isCanonical\": true},\":black_small_square:\":{\"unicode\":[\"25aa-fe0f\",\"25aa\"],\"fname\":\"25aa\",\"uc\":\"25aa\",\"isCanonical\": true},\":white_small_square:\":{\"unicode\":[\"25ab-fe0f\",\"25ab\"],\"fname\":\"25ab\",\"uc\":\"25ab\",\"isCanonical\": true},\":arrow_forward:\":{\"unicode\":[\"25b6-fe0f\",\"25b6\"],\"fname\":\"25b6\",\"uc\":\"25b6\",\"isCanonical\": true},\":arrow_backward:\":{\"unicode\":[\"25c0-fe0f\",\"25c0\"],\"fname\":\"25c0\",\"uc\":\"25c0\",\"isCanonical\": true},\":white_medium_square:\":{\"unicode\":[\"25fb-fe0f\",\"25fb\"],\"fname\":\"25fb\",\"uc\":\"25fb\",\"isCanonical\": true},\":black_medium_square:\":{\"unicode\":[\"25fc-fe0f\",\"25fc\"],\"fname\":\"25fc\",\"uc\":\"25fc\",\"isCanonical\": true},\":white_medium_small_square:\":{\"unicode\":[\"25fd-fe0f\",\"25fd\"],\"fname\":\"25fd\",\"uc\":\"25fd\",\"isCanonical\": true},\":black_medium_small_square:\":{\"unicode\":[\"25fe-fe0f\",\"25fe\"],\"fname\":\"25fe\",\"uc\":\"25fe\",\"isCanonical\": true},\":sunny:\":{\"unicode\":[\"2600-fe0f\",\"2600\"],\"fname\":\"2600\",\"uc\":\"2600\",\"isCanonical\": true},\":cloud:\":{\"unicode\":[\"2601-fe0f\",\"2601\"],\"fname\":\"2601\",\"uc\":\"2601\",\"isCanonical\": true},\":telephone:\":{\"unicode\":[\"260e-fe0f\",\"260e\"],\"fname\":\"260e\",\"uc\":\"260e\",\"isCanonical\": true},\":ballot_box_with_check:\":{\"unicode\":[\"2611-fe0f\",\"2611\"],\"fname\":\"2611\",\"uc\":\"2611\",\"isCanonical\": true},\":umbrella:\":{\"unicode\":[\"2614-fe0f\",\"2614\"],\"fname\":\"2614\",\"uc\":\"2614\",\"isCanonical\": true},\":coffee:\":{\"unicode\":[\"2615-fe0f\",\"2615\"],\"fname\":\"2615\",\"uc\":\"2615\",\"isCanonical\": true},\":point_up:\":{\"unicode\":[\"261d-fe0f\",\"261d\"],\"fname\":\"261d\",\"uc\":\"261d\",\"isCanonical\": true},\":relaxed:\":{\"unicode\":[\"263a-fe0f\",\"263a\"],\"fname\":\"263a\",\"uc\":\"263a\",\"isCanonical\": true},\":aries:\":{\"unicode\":[\"2648-fe0f\",\"2648\"],\"fname\":\"2648\",\"uc\":\"2648\",\"isCanonical\": true},\":taurus:\":{\"unicode\":[\"2649-fe0f\",\"2649\"],\"fname\":\"2649\",\"uc\":\"2649\",\"isCanonical\": true},\":gemini:\":{\"unicode\":[\"264a-fe0f\",\"264a\"],\"fname\":\"264a\",\"uc\":\"264a\",\"isCanonical\": true},\":cancer:\":{\"unicode\":[\"264b-fe0f\",\"264b\"],\"fname\":\"264b\",\"uc\":\"264b\",\"isCanonical\": true},\":leo:\":{\"unicode\":[\"264c-fe0f\",\"264c\"],\"fname\":\"264c\",\"uc\":\"264c\",\"isCanonical\": true},\":virgo:\":{\"unicode\":[\"264d-fe0f\",\"264d\"],\"fname\":\"264d\",\"uc\":\"264d\",\"isCanonical\": true},\":libra:\":{\"unicode\":[\"264e-fe0f\",\"264e\"],\"fname\":\"264e\",\"uc\":\"264e\",\"isCanonical\": true},\":scorpius:\":{\"unicode\":[\"264f-fe0f\",\"264f\"],\"fname\":\"264f\",\"uc\":\"264f\",\"isCanonical\": true},\":sagittarius:\":{\"unicode\":[\"2650-fe0f\",\"2650\"],\"fname\":\"2650\",\"uc\":\"2650\",\"isCanonical\": true},\":capricorn:\":{\"unicode\":[\"2651-fe0f\",\"2651\"],\"fname\":\"2651\",\"uc\":\"2651\",\"isCanonical\": true},\":aquarius:\":{\"unicode\":[\"2652-fe0f\",\"2652\"],\"fname\":\"2652\",\"uc\":\"2652\",\"isCanonical\": true},\":pisces:\":{\"unicode\":[\"2653-fe0f\",\"2653\"],\"fname\":\"2653\",\"uc\":\"2653\",\"isCanonical\": true},\":spades:\":{\"unicode\":[\"2660-fe0f\",\"2660\"],\"fname\":\"2660\",\"uc\":\"2660\",\"isCanonical\": true},\":clubs:\":{\"unicode\":[\"2663-fe0f\",\"2663\"],\"fname\":\"2663\",\"uc\":\"2663\",\"isCanonical\": true},\":hearts:\":{\"unicode\":[\"2665-fe0f\",\"2665\"],\"fname\":\"2665\",\"uc\":\"2665\",\"isCanonical\": true},\":diamonds:\":{\"unicode\":[\"2666-fe0f\",\"2666\"],\"fname\":\"2666\",\"uc\":\"2666\",\"isCanonical\": true},\":hotsprings:\":{\"unicode\":[\"2668-fe0f\",\"2668\"],\"fname\":\"2668\",\"uc\":\"2668\",\"isCanonical\": true},\":recycle:\":{\"unicode\":[\"267b-fe0f\",\"267b\"],\"fname\":\"267b\",\"uc\":\"267b\",\"isCanonical\": true},\":wheelchair:\":{\"unicode\":[\"267f-fe0f\",\"267f\"],\"fname\":\"267f\",\"uc\":\"267f\",\"isCanonical\": true},\":anchor:\":{\"unicode\":[\"2693-fe0f\",\"2693\"],\"fname\":\"2693\",\"uc\":\"2693\",\"isCanonical\": true},\":warning:\":{\"unicode\":[\"26a0-fe0f\",\"26a0\"],\"fname\":\"26a0\",\"uc\":\"26a0\",\"isCanonical\": true},\":zap:\":{\"unicode\":[\"26a1-fe0f\",\"26a1\"],\"fname\":\"26a1\",\"uc\":\"26a1\",\"isCanonical\": true},\":white_circle:\":{\"unicode\":[\"26aa-fe0f\",\"26aa\"],\"fname\":\"26aa\",\"uc\":\"26aa\",\"isCanonical\": true},\":black_circle:\":{\"unicode\":[\"26ab-fe0f\",\"26ab\"],\"fname\":\"26ab\",\"uc\":\"26ab\",\"isCanonical\": true},\":soccer:\":{\"unicode\":[\"26bd-fe0f\",\"26bd\"],\"fname\":\"26bd\",\"uc\":\"26bd\",\"isCanonical\": true},\":baseball:\":{\"unicode\":[\"26be-fe0f\",\"26be\"],\"fname\":\"26be\",\"uc\":\"26be\",\"isCanonical\": true},\":snowman:\":{\"unicode\":[\"26c4-fe0f\",\"26c4\"],\"fname\":\"26c4\",\"uc\":\"26c4\",\"isCanonical\": true},\":partly_sunny:\":{\"unicode\":[\"26c5-fe0f\",\"26c5\"],\"fname\":\"26c5\",\"uc\":\"26c5\",\"isCanonical\": true},\":no_entry:\":{\"unicode\":[\"26d4-fe0f\",\"26d4\"],\"fname\":\"26d4\",\"uc\":\"26d4\",\"isCanonical\": true},\":church:\":{\"unicode\":[\"26ea-fe0f\",\"26ea\"],\"fname\":\"26ea\",\"uc\":\"26ea\",\"isCanonical\": true},\":fountain:\":{\"unicode\":[\"26f2-fe0f\",\"26f2\"],\"fname\":\"26f2\",\"uc\":\"26f2\",\"isCanonical\": true},\":golf:\":{\"unicode\":[\"26f3-fe0f\",\"26f3\"],\"fname\":\"26f3\",\"uc\":\"26f3\",\"isCanonical\": true},\":sailboat:\":{\"unicode\":[\"26f5-fe0f\",\"26f5\"],\"fname\":\"26f5\",\"uc\":\"26f5\",\"isCanonical\": true},\":tent:\":{\"unicode\":[\"26fa-fe0f\",\"26fa\"],\"fname\":\"26fa\",\"uc\":\"26fa\",\"isCanonical\": true},\":fuelpump:\":{\"unicode\":[\"26fd-fe0f\",\"26fd\"],\"fname\":\"26fd\",\"uc\":\"26fd\",\"isCanonical\": true},\":scissors:\":{\"unicode\":[\"2702-fe0f\",\"2702\"],\"fname\":\"2702\",\"uc\":\"2702\",\"isCanonical\": true},\":airplane:\":{\"unicode\":[\"2708-fe0f\",\"2708\"],\"fname\":\"2708\",\"uc\":\"2708\",\"isCanonical\": true},\":envelope:\":{\"unicode\":[\"2709-fe0f\",\"2709\"],\"fname\":\"2709\",\"uc\":\"2709\",\"isCanonical\": true},\":v:\":{\"unicode\":[\"270c-fe0f\",\"270c\"],\"fname\":\"270c\",\"uc\":\"270c\",\"isCanonical\": true},\":pencil2:\":{\"unicode\":[\"270f-fe0f\",\"270f\"],\"fname\":\"270f\",\"uc\":\"270f\",\"isCanonical\": true},\":black_nib:\":{\"unicode\":[\"2712-fe0f\",\"2712\"],\"fname\":\"2712\",\"uc\":\"2712\",\"isCanonical\": true},\":heavy_check_mark:\":{\"unicode\":[\"2714-fe0f\",\"2714\"],\"fname\":\"2714\",\"uc\":\"2714\",\"isCanonical\": true},\":heavy_multiplication_x:\":{\"unicode\":[\"2716-fe0f\",\"2716\"],\"fname\":\"2716\",\"uc\":\"2716\",\"isCanonical\": true},\":eight_spoked_asterisk:\":{\"unicode\":[\"2733-fe0f\",\"2733\"],\"fname\":\"2733\",\"uc\":\"2733\",\"isCanonical\": true},\":eight_pointed_black_star:\":{\"unicode\":[\"2734-fe0f\",\"2734\"],\"fname\":\"2734\",\"uc\":\"2734\",\"isCanonical\": true},\":snowflake:\":{\"unicode\":[\"2744-fe0f\",\"2744\"],\"fname\":\"2744\",\"uc\":\"2744\",\"isCanonical\": true},\":sparkle:\":{\"unicode\":[\"2747-fe0f\",\"2747\"],\"fname\":\"2747\",\"uc\":\"2747\",\"isCanonical\": true},\":exclamation:\":{\"unicode\":[\"2757-fe0f\",\"2757\"],\"fname\":\"2757\",\"uc\":\"2757\",\"isCanonical\": true},\":heart:\":{\"unicode\":[\"2764-fe0f\",\"2764\"],\"fname\":\"2764\",\"uc\":\"2764\",\"isCanonical\": true},\":arrow_right:\":{\"unicode\":[\"27a1-fe0f\",\"27a1\"],\"fname\":\"27a1\",\"uc\":\"27a1\",\"isCanonical\": true},\":arrow_heading_up:\":{\"unicode\":[\"2934-fe0f\",\"2934\"],\"fname\":\"2934\",\"uc\":\"2934\",\"isCanonical\": true},\":arrow_heading_down:\":{\"unicode\":[\"2935-fe0f\",\"2935\"],\"fname\":\"2935\",\"uc\":\"2935\",\"isCanonical\": true},\":arrow_left:\":{\"unicode\":[\"2b05-fe0f\",\"2b05\"],\"fname\":\"2b05\",\"uc\":\"2b05\",\"isCanonical\": true},\":arrow_up:\":{\"unicode\":[\"2b06-fe0f\",\"2b06\"],\"fname\":\"2b06\",\"uc\":\"2b06\",\"isCanonical\": true},\":arrow_down:\":{\"unicode\":[\"2b07-fe0f\",\"2b07\"],\"fname\":\"2b07\",\"uc\":\"2b07\",\"isCanonical\": true},\":black_large_square:\":{\"unicode\":[\"2b1b-fe0f\",\"2b1b\"],\"fname\":\"2b1b\",\"uc\":\"2b1b\",\"isCanonical\": true},\":white_large_square:\":{\"unicode\":[\"2b1c-fe0f\",\"2b1c\"],\"fname\":\"2b1c\",\"uc\":\"2b1c\",\"isCanonical\": true},\":star:\":{\"unicode\":[\"2b50-fe0f\",\"2b50\"],\"fname\":\"2b50\",\"uc\":\"2b50\",\"isCanonical\": true},\":o:\":{\"unicode\":[\"2b55-fe0f\",\"2b55\"],\"fname\":\"2b55\",\"uc\":\"2b55\",\"isCanonical\": true},\":wavy_dash:\":{\"unicode\":[\"3030-fe0f\",\"3030\"],\"fname\":\"3030\",\"uc\":\"3030\",\"isCanonical\": true},\":part_alternation_mark:\":{\"unicode\":[\"303d-fe0f\",\"303d\"],\"fname\":\"303d\",\"uc\":\"303d\",\"isCanonical\": true},\":congratulations:\":{\"unicode\":[\"3297-fe0f\",\"3297\"],\"fname\":\"3297\",\"uc\":\"3297\",\"isCanonical\": true},\":secret:\":{\"unicode\":[\"3299-fe0f\",\"3299\"],\"fname\":\"3299\",\"uc\":\"3299\",\"isCanonical\": true},\":cross:\":{\"unicode\":[\"271d-fe0f\",\"271d\"],\"fname\":\"271d\",\"uc\":\"271d\",\"isCanonical\": true},\":latin_cross:\":{\"unicode\":[\"271d-fe0f\",\"271d\"],\"fname\":\"271d\",\"uc\":\"271d\",\"isCanonical\": false},\":keyboard:\":{\"unicode\":[\"2328-fe0f\",\"2328\"],\"fname\":\"2328\",\"uc\":\"2328\",\"isCanonical\": true},\":writing_hand:\":{\"unicode\":[\"270d-fe0f\",\"270d\"],\"fname\":\"270d\",\"uc\":\"270d\",\"isCanonical\": true},\":eject:\":{\"unicode\":[\"23cf-fe0f\",\"23cf\"],\"fname\":\"23cf\",\"uc\":\"23cf\",\"isCanonical\": true},\":eject_symbol:\":{\"unicode\":[\"23cf-fe0f\",\"23cf\"],\"fname\":\"23cf\",\"uc\":\"23cf\",\"isCanonical\": false},\":track_next:\":{\"unicode\":[\"23ed-fe0f\",\"23ed\"],\"fname\":\"23ed\",\"uc\":\"23ed\",\"isCanonical\": true},\":next_track:\":{\"unicode\":[\"23ed-fe0f\",\"23ed\"],\"fname\":\"23ed\",\"uc\":\"23ed\",\"isCanonical\": false},\":track_previous:\":{\"unicode\":[\"23ee-fe0f\",\"23ee\"],\"fname\":\"23ee\",\"uc\":\"23ee\",\"isCanonical\": true},\":previous_track:\":{\"unicode\":[\"23ee-fe0f\",\"23ee\"],\"fname\":\"23ee\",\"uc\":\"23ee\",\"isCanonical\": false},\":play_pause:\":{\"unicode\":[\"23ef-fe0f\",\"23ef\"],\"fname\":\"23ef\",\"uc\":\"23ef\",\"isCanonical\": true},\":stopwatch:\":{\"unicode\":[\"23f1-fe0f\",\"23f1\"],\"fname\":\"23f1\",\"uc\":\"23f1\",\"isCanonical\": true},\":timer:\":{\"unicode\":[\"23f2-fe0f\",\"23f2\"],\"fname\":\"23f2\",\"uc\":\"23f2\",\"isCanonical\": true},\":timer_clock:\":{\"unicode\":[\"23f2-fe0f\",\"23f2\"],\"fname\":\"23f2\",\"uc\":\"23f2\",\"isCanonical\": false},\":pause_button:\":{\"unicode\":[\"23f8-fe0f\",\"23f8\"],\"fname\":\"23f8\",\"uc\":\"23f8\",\"isCanonical\": true},\":double_vertical_bar:\":{\"unicode\":[\"23f8-fe0f\",\"23f8\"],\"fname\":\"23f8\",\"uc\":\"23f8\",\"isCanonical\": false},\":stop_button:\":{\"unicode\":[\"23f9-fe0f\",\"23f9\"],\"fname\":\"23f9\",\"uc\":\"23f9\",\"isCanonical\": true},\":record_button:\":{\"unicode\":[\"23fa-fe0f\",\"23fa\"],\"fname\":\"23fa\",\"uc\":\"23fa\",\"isCanonical\": true},\":umbrella2:\":{\"unicode\":[\"2602-fe0f\",\"2602\"],\"fname\":\"2602\",\"uc\":\"2602\",\"isCanonical\": true},\":snowman2:\":{\"unicode\":[\"2603-fe0f\",\"2603\"],\"fname\":\"2603\",\"uc\":\"2603\",\"isCanonical\": true},\":comet:\":{\"unicode\":[\"2604-fe0f\",\"2604\"],\"fname\":\"2604\",\"uc\":\"2604\",\"isCanonical\": true},\":shamrock:\":{\"unicode\":[\"2618-fe0f\",\"2618\"],\"fname\":\"2618\",\"uc\":\"2618\",\"isCanonical\": true},\":skull_crossbones:\":{\"unicode\":[\"2620-fe0f\",\"2620\"],\"fname\":\"2620\",\"uc\":\"2620\",\"isCanonical\": true},\":skull_and_crossbones:\":{\"unicode\":[\"2620-fe0f\",\"2620\"],\"fname\":\"2620\",\"uc\":\"2620\",\"isCanonical\": false},\":radioactive:\":{\"unicode\":[\"2622-fe0f\",\"2622\"],\"fname\":\"2622\",\"uc\":\"2622\",\"isCanonical\": true},\":radioactive_sign:\":{\"unicode\":[\"2622-fe0f\",\"2622\"],\"fname\":\"2622\",\"uc\":\"2622\",\"isCanonical\": false},\":biohazard:\":{\"unicode\":[\"2623-fe0f\",\"2623\"],\"fname\":\"2623\",\"uc\":\"2623\",\"isCanonical\": true},\":biohazard_sign:\":{\"unicode\":[\"2623-fe0f\",\"2623\"],\"fname\":\"2623\",\"uc\":\"2623\",\"isCanonical\": false},\":orthodox_cross:\":{\"unicode\":[\"2626-fe0f\",\"2626\"],\"fname\":\"2626\",\"uc\":\"2626\",\"isCanonical\": true},\":star_and_crescent:\":{\"unicode\":[\"262a-fe0f\",\"262a\"],\"fname\":\"262a\",\"uc\":\"262a\",\"isCanonical\": true},\":peace:\":{\"unicode\":[\"262e-fe0f\",\"262e\"],\"fname\":\"262e\",\"uc\":\"262e\",\"isCanonical\": true},\":peace_symbol:\":{\"unicode\":[\"262e-fe0f\",\"262e\"],\"fname\":\"262e\",\"uc\":\"262e\",\"isCanonical\": false},\":yin_yang:\":{\"unicode\":[\"262f-fe0f\",\"262f\"],\"fname\":\"262f\",\"uc\":\"262f\",\"isCanonical\": true},\":wheel_of_dharma:\":{\"unicode\":[\"2638-fe0f\",\"2638\"],\"fname\":\"2638\",\"uc\":\"2638\",\"isCanonical\": true},\":frowning2:\":{\"unicode\":[\"2639-fe0f\",\"2639\"],\"fname\":\"2639\",\"uc\":\"2639\",\"isCanonical\": true},\":white_frowning_face:\":{\"unicode\":[\"2639-fe0f\",\"2639\"],\"fname\":\"2639\",\"uc\":\"2639\",\"isCanonical\": false},\":hammer_pick:\":{\"unicode\":[\"2692-fe0f\",\"2692\"],\"fname\":\"2692\",\"uc\":\"2692\",\"isCanonical\": true},\":hammer_and_pick:\":{\"unicode\":[\"2692-fe0f\",\"2692\"],\"fname\":\"2692\",\"uc\":\"2692\",\"isCanonical\": false},\":crossed_swords:\":{\"unicode\":[\"2694-fe0f\",\"2694\"],\"fname\":\"2694\",\"uc\":\"2694\",\"isCanonical\": true},\":scales:\":{\"unicode\":[\"2696-fe0f\",\"2696\"],\"fname\":\"2696\",\"uc\":\"2696\",\"isCanonical\": true},\":alembic:\":{\"unicode\":[\"2697-fe0f\",\"2697\"],\"fname\":\"2697\",\"uc\":\"2697\",\"isCanonical\": true},\":gear:\":{\"unicode\":[\"2699-fe0f\",\"2699\"],\"fname\":\"2699\",\"uc\":\"2699\",\"isCanonical\": true},\":atom:\":{\"unicode\":[\"269b-fe0f\",\"269b\"],\"fname\":\"269b\",\"uc\":\"269b\",\"isCanonical\": true},\":atom_symbol:\":{\"unicode\":[\"269b-fe0f\",\"269b\"],\"fname\":\"269b\",\"uc\":\"269b\",\"isCanonical\": false},\":fleur-de-lis:\":{\"unicode\":[\"269c-fe0f\",\"269c\"],\"fname\":\"269c\",\"uc\":\"269c\",\"isCanonical\": true},\":coffin:\":{\"unicode\":[\"26b0-fe0f\",\"26b0\"],\"fname\":\"26b0\",\"uc\":\"26b0\",\"isCanonical\": true},\":urn:\":{\"unicode\":[\"26b1-fe0f\",\"26b1\"],\"fname\":\"26b1\",\"uc\":\"26b1\",\"isCanonical\": true},\":funeral_urn:\":{\"unicode\":[\"26b1-fe0f\",\"26b1\"],\"fname\":\"26b1\",\"uc\":\"26b1\",\"isCanonical\": false},\":thunder_cloud_rain:\":{\"unicode\":[\"26c8-fe0f\",\"26c8\"],\"fname\":\"26c8\",\"uc\":\"26c8\",\"isCanonical\": true},\":thunder_cloud_and_rain:\":{\"unicode\":[\"26c8-fe0f\",\"26c8\"],\"fname\":\"26c8\",\"uc\":\"26c8\",\"isCanonical\": false},\":pick:\":{\"unicode\":[\"26cf-fe0f\",\"26cf\"],\"fname\":\"26cf\",\"uc\":\"26cf\",\"isCanonical\": true},\":helmet_with_cross:\":{\"unicode\":[\"26d1-fe0f\",\"26d1\"],\"fname\":\"26d1\",\"uc\":\"26d1\",\"isCanonical\": true},\":helmet_with_white_cross:\":{\"unicode\":[\"26d1-fe0f\",\"26d1\"],\"fname\":\"26d1\",\"uc\":\"26d1\",\"isCanonical\": false},\":chains:\":{\"unicode\":[\"26d3-fe0f\",\"26d3\"],\"fname\":\"26d3\",\"uc\":\"26d3\",\"isCanonical\": true},\":shinto_shrine:\":{\"unicode\":[\"26e9-fe0f\",\"26e9\"],\"fname\":\"26e9\",\"uc\":\"26e9\",\"isCanonical\": true},\":mountain:\":{\"unicode\":[\"26f0-fe0f\",\"26f0\"],\"fname\":\"26f0\",\"uc\":\"26f0\",\"isCanonical\": true},\":beach_umbrella:\":{\"unicode\":[\"26f1-fe0f\",\"26f1\"],\"fname\":\"26f1\",\"uc\":\"26f1\",\"isCanonical\": true},\":umbrella_on_ground:\":{\"unicode\":[\"26f1-fe0f\",\"26f1\"],\"fname\":\"26f1\",\"uc\":\"26f1\",\"isCanonical\": false},\":ferry:\":{\"unicode\":[\"26f4-fe0f\",\"26f4\"],\"fname\":\"26f4\",\"uc\":\"26f4\",\"isCanonical\": true},\":skier:\":{\"unicode\":[\"26f7-fe0f\",\"26f7\"],\"fname\":\"26f7\",\"uc\":\"26f7\",\"isCanonical\": true},\":ice_skate:\":{\"unicode\":[\"26f8-fe0f\",\"26f8\"],\"fname\":\"26f8\",\"uc\":\"26f8\",\"isCanonical\": true},\":basketball_player:\":{\"unicode\":[\"26f9-fe0f\",\"26f9\"],\"fname\":\"26f9\",\"uc\":\"26f9\",\"isCanonical\": true},\":person_with_ball:\":{\"unicode\":[\"26f9-fe0f\",\"26f9\"],\"fname\":\"26f9\",\"uc\":\"26f9\",\"isCanonical\": false},\":star_of_david:\":{\"unicode\":[\"2721-fe0f\",\"2721\"],\"fname\":\"2721\",\"uc\":\"2721\",\"isCanonical\": true},\":heart_exclamation:\":{\"unicode\":[\"2763-fe0f\",\"2763\"],\"fname\":\"2763\",\"uc\":\"2763\",\"isCanonical\": true},\":heavy_heart_exclamation_mark_ornament:\":{\"unicode\":[\"2763-fe0f\",\"2763\"],\"fname\":\"2763\",\"uc\":\"2763\",\"isCanonical\": false},\":third_place:\":{\"unicode\":[\"1f949\"],\"fname\":\"1f949\",\"uc\":\"1f949\",\"isCanonical\": true},\":third_place_medal:\":{\"unicode\":[\"1f949\"],\"fname\":\"1f949\",\"uc\":\"1f949\",\"isCanonical\": false},\":second_place:\":{\"unicode\":[\"1f948\"],\"fname\":\"1f948\",\"uc\":\"1f948\",\"isCanonical\": true},\":second_place_medal:\":{\"unicode\":[\"1f948\"],\"fname\":\"1f948\",\"uc\":\"1f948\",\"isCanonical\": false},\":first_place:\":{\"unicode\":[\"1f947\"],\"fname\":\"1f947\",\"uc\":\"1f947\",\"isCanonical\": true},\":first_place_medal:\":{\"unicode\":[\"1f947\"],\"fname\":\"1f947\",\"uc\":\"1f947\",\"isCanonical\": false},\":fencer:\":{\"unicode\":[\"1f93a\"],\"fname\":\"1f93a\",\"uc\":\"1f93a\",\"isCanonical\": true},\":fencing:\":{\"unicode\":[\"1f93a\"],\"fname\":\"1f93a\",\"uc\":\"1f93a\",\"isCanonical\": false},\":goal:\":{\"unicode\":[\"1f945\"],\"fname\":\"1f945\",\"uc\":\"1f945\",\"isCanonical\": true},\":goal_net:\":{\"unicode\":[\"1f945\"],\"fname\":\"1f945\",\"uc\":\"1f945\",\"isCanonical\": false},\":handball:\":{\"unicode\":[\"1f93e\"],\"fname\":\"1f93e\",\"uc\":\"1f93e\",\"isCanonical\": true},\":regional_indicator_z:\":{\"unicode\":[\"1f1ff\"],\"fname\":\"1f1ff\",\"uc\":\"1f1ff\",\"isCanonical\": true},\":water_polo:\":{\"unicode\":[\"1f93d\"],\"fname\":\"1f93d\",\"uc\":\"1f93d\",\"isCanonical\": true},\":martial_arts_uniform:\":{\"unicode\":[\"1f94b\"],\"fname\":\"1f94b\",\"uc\":\"1f94b\",\"isCanonical\": true},\":karate_uniform:\":{\"unicode\":[\"1f94b\"],\"fname\":\"1f94b\",\"uc\":\"1f94b\",\"isCanonical\": false},\":boxing_glove:\":{\"unicode\":[\"1f94a\"],\"fname\":\"1f94a\",\"uc\":\"1f94a\",\"isCanonical\": true},\":boxing_gloves:\":{\"unicode\":[\"1f94a\"],\"fname\":\"1f94a\",\"uc\":\"1f94a\",\"isCanonical\": false},\":wrestlers:\":{\"unicode\":[\"1f93c\"],\"fname\":\"1f93c\",\"uc\":\"1f93c\",\"isCanonical\": true},\":wrestling:\":{\"unicode\":[\"1f93c\"],\"fname\":\"1f93c\",\"uc\":\"1f93c\",\"isCanonical\": false},\":juggling:\":{\"unicode\":[\"1f939\"],\"fname\":\"1f939\",\"uc\":\"1f939\",\"isCanonical\": true},\":juggler:\":{\"unicode\":[\"1f939\"],\"fname\":\"1f939\",\"uc\":\"1f939\",\"isCanonical\": false},\":cartwheel:\":{\"unicode\":[\"1f938\"],\"fname\":\"1f938\",\"uc\":\"1f938\",\"isCanonical\": true},\":person_doing_cartwheel:\":{\"unicode\":[\"1f938\"],\"fname\":\"1f938\",\"uc\":\"1f938\",\"isCanonical\": false},\":canoe:\":{\"unicode\":[\"1f6f6\"],\"fname\":\"1f6f6\",\"uc\":\"1f6f6\",\"isCanonical\": true},\":kayak:\":{\"unicode\":[\"1f6f6\"],\"fname\":\"1f6f6\",\"uc\":\"1f6f6\",\"isCanonical\": false},\":motor_scooter:\":{\"unicode\":[\"1f6f5\"],\"fname\":\"1f6f5\",\"uc\":\"1f6f5\",\"isCanonical\": true},\":motorbike:\":{\"unicode\":[\"1f6f5\"],\"fname\":\"1f6f5\",\"uc\":\"1f6f5\",\"isCanonical\": false},\":scooter:\":{\"unicode\":[\"1f6f4\"],\"fname\":\"1f6f4\",\"uc\":\"1f6f4\",\"isCanonical\": true},\":shopping_cart:\":{\"unicode\":[\"1f6d2\"],\"fname\":\"1f6d2\",\"uc\":\"1f6d2\",\"isCanonical\": true},\":shopping_trolley:\":{\"unicode\":[\"1f6d2\"],\"fname\":\"1f6d2\",\"uc\":\"1f6d2\",\"isCanonical\": false},\":black_joker:\":{\"unicode\":[\"1f0cf\"],\"fname\":\"1f0cf\",\"uc\":\"1f0cf\",\"isCanonical\": true},\":a:\":{\"unicode\":[\"1f170\"],\"fname\":\"1f170\",\"uc\":\"1f170\",\"isCanonical\": true},\":b:\":{\"unicode\":[\"1f171\"],\"fname\":\"1f171\",\"uc\":\"1f171\",\"isCanonical\": true},\":o2:\":{\"unicode\":[\"1f17e\"],\"fname\":\"1f17e\",\"uc\":\"1f17e\",\"isCanonical\": true},\":octagonal_sign:\":{\"unicode\":[\"1f6d1\"],\"fname\":\"1f6d1\",\"uc\":\"1f6d1\",\"isCanonical\": true},\":stop_sign:\":{\"unicode\":[\"1f6d1\"],\"fname\":\"1f6d1\",\"uc\":\"1f6d1\",\"isCanonical\": false},\":ab:\":{\"unicode\":[\"1f18e\"],\"fname\":\"1f18e\",\"uc\":\"1f18e\",\"isCanonical\": true},\":cl:\":{\"unicode\":[\"1f191\"],\"fname\":\"1f191\",\"uc\":\"1f191\",\"isCanonical\": true},\":regional_indicator_y:\":{\"unicode\":[\"1f1fe\"],\"fname\":\"1f1fe\",\"uc\":\"1f1fe\",\"isCanonical\": true},\":cool:\":{\"unicode\":[\"1f192\"],\"fname\":\"1f192\",\"uc\":\"1f192\",\"isCanonical\": true},\":free:\":{\"unicode\":[\"1f193\"],\"fname\":\"1f193\",\"uc\":\"1f193\",\"isCanonical\": true},\":id:\":{\"unicode\":[\"1f194\"],\"fname\":\"1f194\",\"uc\":\"1f194\",\"isCanonical\": true},\":new:\":{\"unicode\":[\"1f195\"],\"fname\":\"1f195\",\"uc\":\"1f195\",\"isCanonical\": true},\":ng:\":{\"unicode\":[\"1f196\"],\"fname\":\"1f196\",\"uc\":\"1f196\",\"isCanonical\": true},\":ok:\":{\"unicode\":[\"1f197\"],\"fname\":\"1f197\",\"uc\":\"1f197\",\"isCanonical\": true},\":sos:\":{\"unicode\":[\"1f198\"],\"fname\":\"1f198\",\"uc\":\"1f198\",\"isCanonical\": true},\":spoon:\":{\"unicode\":[\"1f944\"],\"fname\":\"1f944\",\"uc\":\"1f944\",\"isCanonical\": true},\":up:\":{\"unicode\":[\"1f199\"],\"fname\":\"1f199\",\"uc\":\"1f199\",\"isCanonical\": true},\":vs:\":{\"unicode\":[\"1f19a\"],\"fname\":\"1f19a\",\"uc\":\"1f19a\",\"isCanonical\": true},\":champagne_glass:\":{\"unicode\":[\"1f942\"],\"fname\":\"1f942\",\"uc\":\"1f942\",\"isCanonical\": true},\":clinking_glass:\":{\"unicode\":[\"1f942\"],\"fname\":\"1f942\",\"uc\":\"1f942\",\"isCanonical\": false},\":tumbler_glass:\":{\"unicode\":[\"1f943\"],\"fname\":\"1f943\",\"uc\":\"1f943\",\"isCanonical\": true},\":whisky:\":{\"unicode\":[\"1f943\"],\"fname\":\"1f943\",\"uc\":\"1f943\",\"isCanonical\": false},\":koko:\":{\"unicode\":[\"1f201\"],\"fname\":\"1f201\",\"uc\":\"1f201\",\"isCanonical\": true},\":stuffed_flatbread:\":{\"unicode\":[\"1f959\"],\"fname\":\"1f959\",\"uc\":\"1f959\",\"isCanonical\": true},\":stuffed_pita:\":{\"unicode\":[\"1f959\"],\"fname\":\"1f959\",\"uc\":\"1f959\",\"isCanonical\": false},\":u7981:\":{\"unicode\":[\"1f232\"],\"fname\":\"1f232\",\"uc\":\"1f232\",\"isCanonical\": true},\":u7a7a:\":{\"unicode\":[\"1f233\"],\"fname\":\"1f233\",\"uc\":\"1f233\",\"isCanonical\": true},\":u5408:\":{\"unicode\":[\"1f234\"],\"fname\":\"1f234\",\"uc\":\"1f234\",\"isCanonical\": true},\":u6e80:\":{\"unicode\":[\"1f235\"],\"fname\":\"1f235\",\"uc\":\"1f235\",\"isCanonical\": true},\":u6709:\":{\"unicode\":[\"1f236\"],\"fname\":\"1f236\",\"uc\":\"1f236\",\"isCanonical\": true},\":shallow_pan_of_food:\":{\"unicode\":[\"1f958\"],\"fname\":\"1f958\",\"uc\":\"1f958\",\"isCanonical\": true},\":paella:\":{\"unicode\":[\"1f958\"],\"fname\":\"1f958\",\"uc\":\"1f958\",\"isCanonical\": false},\":u7533:\":{\"unicode\":[\"1f238\"],\"fname\":\"1f238\",\"uc\":\"1f238\",\"isCanonical\": true},\":u5272:\":{\"unicode\":[\"1f239\"],\"fname\":\"1f239\",\"uc\":\"1f239\",\"isCanonical\": true},\":salad:\":{\"unicode\":[\"1f957\"],\"fname\":\"1f957\",\"uc\":\"1f957\",\"isCanonical\": true},\":green_salad:\":{\"unicode\":[\"1f957\"],\"fname\":\"1f957\",\"uc\":\"1f957\",\"isCanonical\": false},\":u55b6:\":{\"unicode\":[\"1f23a\"],\"fname\":\"1f23a\",\"uc\":\"1f23a\",\"isCanonical\": true},\":ideograph_advantage:\":{\"unicode\":[\"1f250\"],\"fname\":\"1f250\",\"uc\":\"1f250\",\"isCanonical\": true},\":accept:\":{\"unicode\":[\"1f251\"],\"fname\":\"1f251\",\"uc\":\"1f251\",\"isCanonical\": true},\":cyclone:\":{\"unicode\":[\"1f300\"],\"fname\":\"1f300\",\"uc\":\"1f300\",\"isCanonical\": true},\":french_bread:\":{\"unicode\":[\"1f956\"],\"fname\":\"1f956\",\"uc\":\"1f956\",\"isCanonical\": true},\":baguette_bread:\":{\"unicode\":[\"1f956\"],\"fname\":\"1f956\",\"uc\":\"1f956\",\"isCanonical\": false},\":foggy:\":{\"unicode\":[\"1f301\"],\"fname\":\"1f301\",\"uc\":\"1f301\",\"isCanonical\": true},\":closed_umbrella:\":{\"unicode\":[\"1f302\"],\"fname\":\"1f302\",\"uc\":\"1f302\",\"isCanonical\": true},\":night_with_stars:\":{\"unicode\":[\"1f303\"],\"fname\":\"1f303\",\"uc\":\"1f303\",\"isCanonical\": true},\":sunrise_over_mountains:\":{\"unicode\":[\"1f304\"],\"fname\":\"1f304\",\"uc\":\"1f304\",\"isCanonical\": true},\":sunrise:\":{\"unicode\":[\"1f305\"],\"fname\":\"1f305\",\"uc\":\"1f305\",\"isCanonical\": true},\":city_dusk:\":{\"unicode\":[\"1f306\"],\"fname\":\"1f306\",\"uc\":\"1f306\",\"isCanonical\": true},\":carrot:\":{\"unicode\":[\"1f955\"],\"fname\":\"1f955\",\"uc\":\"1f955\",\"isCanonical\": true},\":city_sunset:\":{\"unicode\":[\"1f307\"],\"fname\":\"1f307\",\"uc\":\"1f307\",\"isCanonical\": true},\":city_sunrise:\":{\"unicode\":[\"1f307\"],\"fname\":\"1f307\",\"uc\":\"1f307\",\"isCanonical\": false},\":rainbow:\":{\"unicode\":[\"1f308\"],\"fname\":\"1f308\",\"uc\":\"1f308\",\"isCanonical\": true},\":potato:\":{\"unicode\":[\"1f954\"],\"fname\":\"1f954\",\"uc\":\"1f954\",\"isCanonical\": true},\":bridge_at_night:\":{\"unicode\":[\"1f309\"],\"fname\":\"1f309\",\"uc\":\"1f309\",\"isCanonical\": true},\":ocean:\":{\"unicode\":[\"1f30a\"],\"fname\":\"1f30a\",\"uc\":\"1f30a\",\"isCanonical\": true},\":volcano:\":{\"unicode\":[\"1f30b\"],\"fname\":\"1f30b\",\"uc\":\"1f30b\",\"isCanonical\": true},\":milky_way:\":{\"unicode\":[\"1f30c\"],\"fname\":\"1f30c\",\"uc\":\"1f30c\",\"isCanonical\": true},\":earth_asia:\":{\"unicode\":[\"1f30f\"],\"fname\":\"1f30f\",\"uc\":\"1f30f\",\"isCanonical\": true},\":new_moon:\":{\"unicode\":[\"1f311\"],\"fname\":\"1f311\",\"uc\":\"1f311\",\"isCanonical\": true},\":bacon:\":{\"unicode\":[\"1f953\"],\"fname\":\"1f953\",\"uc\":\"1f953\",\"isCanonical\": true},\":first_quarter_moon:\":{\"unicode\":[\"1f313\"],\"fname\":\"1f313\",\"uc\":\"1f313\",\"isCanonical\": true},\":waxing_gibbous_moon:\":{\"unicode\":[\"1f314\"],\"fname\":\"1f314\",\"uc\":\"1f314\",\"isCanonical\": true},\":full_moon:\":{\"unicode\":[\"1f315\"],\"fname\":\"1f315\",\"uc\":\"1f315\",\"isCanonical\": true},\":crescent_moon:\":{\"unicode\":[\"1f319\"],\"fname\":\"1f319\",\"uc\":\"1f319\",\"isCanonical\": true},\":first_quarter_moon_with_face:\":{\"unicode\":[\"1f31b\"],\"fname\":\"1f31b\",\"uc\":\"1f31b\",\"isCanonical\": true},\":star2:\":{\"unicode\":[\"1f31f\"],\"fname\":\"1f31f\",\"uc\":\"1f31f\",\"isCanonical\": true},\":cucumber:\":{\"unicode\":[\"1f952\"],\"fname\":\"1f952\",\"uc\":\"1f952\",\"isCanonical\": true},\":stars:\":{\"unicode\":[\"1f320\"],\"fname\":\"1f320\",\"uc\":\"1f320\",\"isCanonical\": true},\":chestnut:\":{\"unicode\":[\"1f330\"],\"fname\":\"1f330\",\"uc\":\"1f330\",\"isCanonical\": true},\":avocado:\":{\"unicode\":[\"1f951\"],\"fname\":\"1f951\",\"uc\":\"1f951\",\"isCanonical\": true},\":seedling:\":{\"unicode\":[\"1f331\"],\"fname\":\"1f331\",\"uc\":\"1f331\",\"isCanonical\": true},\":palm_tree:\":{\"unicode\":[\"1f334\"],\"fname\":\"1f334\",\"uc\":\"1f334\",\"isCanonical\": true},\":cactus:\":{\"unicode\":[\"1f335\"],\"fname\":\"1f335\",\"uc\":\"1f335\",\"isCanonical\": true},\":tulip:\":{\"unicode\":[\"1f337\"],\"fname\":\"1f337\",\"uc\":\"1f337\",\"isCanonical\": true},\":cherry_blossom:\":{\"unicode\":[\"1f338\"],\"fname\":\"1f338\",\"uc\":\"1f338\",\"isCanonical\": true},\":rose:\":{\"unicode\":[\"1f339\"],\"fname\":\"1f339\",\"uc\":\"1f339\",\"isCanonical\": true},\":hibiscus:\":{\"unicode\":[\"1f33a\"],\"fname\":\"1f33a\",\"uc\":\"1f33a\",\"isCanonical\": true},\":sunflower:\":{\"unicode\":[\"1f33b\"],\"fname\":\"1f33b\",\"uc\":\"1f33b\",\"isCanonical\": true},\":blossom:\":{\"unicode\":[\"1f33c\"],\"fname\":\"1f33c\",\"uc\":\"1f33c\",\"isCanonical\": true},\":corn:\":{\"unicode\":[\"1f33d\"],\"fname\":\"1f33d\",\"uc\":\"1f33d\",\"isCanonical\": true},\":croissant:\":{\"unicode\":[\"1f950\"],\"fname\":\"1f950\",\"uc\":\"1f950\",\"isCanonical\": true},\":ear_of_rice:\":{\"unicode\":[\"1f33e\"],\"fname\":\"1f33e\",\"uc\":\"1f33e\",\"isCanonical\": true},\":herb:\":{\"unicode\":[\"1f33f\"],\"fname\":\"1f33f\",\"uc\":\"1f33f\",\"isCanonical\": true},\":four_leaf_clover:\":{\"unicode\":[\"1f340\"],\"fname\":\"1f340\",\"uc\":\"1f340\",\"isCanonical\": true},\":maple_leaf:\":{\"unicode\":[\"1f341\"],\"fname\":\"1f341\",\"uc\":\"1f341\",\"isCanonical\": true},\":fallen_leaf:\":{\"unicode\":[\"1f342\"],\"fname\":\"1f342\",\"uc\":\"1f342\",\"isCanonical\": true},\":leaves:\":{\"unicode\":[\"1f343\"],\"fname\":\"1f343\",\"uc\":\"1f343\",\"isCanonical\": true},\":mushroom:\":{\"unicode\":[\"1f344\"],\"fname\":\"1f344\",\"uc\":\"1f344\",\"isCanonical\": true},\":tomato:\":{\"unicode\":[\"1f345\"],\"fname\":\"1f345\",\"uc\":\"1f345\",\"isCanonical\": true},\":eggplant:\":{\"unicode\":[\"1f346\"],\"fname\":\"1f346\",\"uc\":\"1f346\",\"isCanonical\": true},\":grapes:\":{\"unicode\":[\"1f347\"],\"fname\":\"1f347\",\"uc\":\"1f347\",\"isCanonical\": true},\":melon:\":{\"unicode\":[\"1f348\"],\"fname\":\"1f348\",\"uc\":\"1f348\",\"isCanonical\": true},\":watermelon:\":{\"unicode\":[\"1f349\"],\"fname\":\"1f349\",\"uc\":\"1f349\",\"isCanonical\": true},\":tangerine:\":{\"unicode\":[\"1f34a\"],\"fname\":\"1f34a\",\"uc\":\"1f34a\",\"isCanonical\": true},\":wilted_rose:\":{\"unicode\":[\"1f940\"],\"fname\":\"1f940\",\"uc\":\"1f940\",\"isCanonical\": true},\":wilted_flower:\":{\"unicode\":[\"1f940\"],\"fname\":\"1f940\",\"uc\":\"1f940\",\"isCanonical\": false},\":banana:\":{\"unicode\":[\"1f34c\"],\"fname\":\"1f34c\",\"uc\":\"1f34c\",\"isCanonical\": true},\":pineapple:\":{\"unicode\":[\"1f34d\"],\"fname\":\"1f34d\",\"uc\":\"1f34d\",\"isCanonical\": true},\":apple:\":{\"unicode\":[\"1f34e\"],\"fname\":\"1f34e\",\"uc\":\"1f34e\",\"isCanonical\": true},\":green_apple:\":{\"unicode\":[\"1f34f\"],\"fname\":\"1f34f\",\"uc\":\"1f34f\",\"isCanonical\": true},\":peach:\":{\"unicode\":[\"1f351\"],\"fname\":\"1f351\",\"uc\":\"1f351\",\"isCanonical\": true},\":cherries:\":{\"unicode\":[\"1f352\"],\"fname\":\"1f352\",\"uc\":\"1f352\",\"isCanonical\": true},\":strawberry:\":{\"unicode\":[\"1f353\"],\"fname\":\"1f353\",\"uc\":\"1f353\",\"isCanonical\": true},\":rhino:\":{\"unicode\":[\"1f98f\"],\"fname\":\"1f98f\",\"uc\":\"1f98f\",\"isCanonical\": true},\":rhinoceros:\":{\"unicode\":[\"1f98f\"],\"fname\":\"1f98f\",\"uc\":\"1f98f\",\"isCanonical\": false},\":hamburger:\":{\"unicode\":[\"1f354\"],\"fname\":\"1f354\",\"uc\":\"1f354\",\"isCanonical\": true},\":pizza:\":{\"unicode\":[\"1f355\"],\"fname\":\"1f355\",\"uc\":\"1f355\",\"isCanonical\": true},\":meat_on_bone:\":{\"unicode\":[\"1f356\"],\"fname\":\"1f356\",\"uc\":\"1f356\",\"isCanonical\": true},\":lizard:\":{\"unicode\":[\"1f98e\"],\"fname\":\"1f98e\",\"uc\":\"1f98e\",\"isCanonical\": true},\":poultry_leg:\":{\"unicode\":[\"1f357\"],\"fname\":\"1f357\",\"uc\":\"1f357\",\"isCanonical\": true},\":rice_cracker:\":{\"unicode\":[\"1f358\"],\"fname\":\"1f358\",\"uc\":\"1f358\",\"isCanonical\": true},\":rice_ball:\":{\"unicode\":[\"1f359\"],\"fname\":\"1f359\",\"uc\":\"1f359\",\"isCanonical\": true},\":gorilla:\":{\"unicode\":[\"1f98d\"],\"fname\":\"1f98d\",\"uc\":\"1f98d\",\"isCanonical\": true},\":rice:\":{\"unicode\":[\"1f35a\"],\"fname\":\"1f35a\",\"uc\":\"1f35a\",\"isCanonical\": true},\":curry:\":{\"unicode\":[\"1f35b\"],\"fname\":\"1f35b\",\"uc\":\"1f35b\",\"isCanonical\": true},\":deer:\":{\"unicode\":[\"1f98c\"],\"fname\":\"1f98c\",\"uc\":\"1f98c\",\"isCanonical\": true},\":ramen:\":{\"unicode\":[\"1f35c\"],\"fname\":\"1f35c\",\"uc\":\"1f35c\",\"isCanonical\": true},\":spaghetti:\":{\"unicode\":[\"1f35d\"],\"fname\":\"1f35d\",\"uc\":\"1f35d\",\"isCanonical\": true},\":bread:\":{\"unicode\":[\"1f35e\"],\"fname\":\"1f35e\",\"uc\":\"1f35e\",\"isCanonical\": true},\":fries:\":{\"unicode\":[\"1f35f\"],\"fname\":\"1f35f\",\"uc\":\"1f35f\",\"isCanonical\": true},\":butterfly:\":{\"unicode\":[\"1f98b\"],\"fname\":\"1f98b\",\"uc\":\"1f98b\",\"isCanonical\": true},\":sweet_potato:\":{\"unicode\":[\"1f360\"],\"fname\":\"1f360\",\"uc\":\"1f360\",\"isCanonical\": true},\":dango:\":{\"unicode\":[\"1f361\"],\"fname\":\"1f361\",\"uc\":\"1f361\",\"isCanonical\": true},\":fox:\":{\"unicode\":[\"1f98a\"],\"fname\":\"1f98a\",\"uc\":\"1f98a\",\"isCanonical\": true},\":fox_face:\":{\"unicode\":[\"1f98a\"],\"fname\":\"1f98a\",\"uc\":\"1f98a\",\"isCanonical\": false},\":oden:\":{\"unicode\":[\"1f362\"],\"fname\":\"1f362\",\"uc\":\"1f362\",\"isCanonical\": true},\":sushi:\":{\"unicode\":[\"1f363\"],\"fname\":\"1f363\",\"uc\":\"1f363\",\"isCanonical\": true},\":owl:\":{\"unicode\":[\"1f989\"],\"fname\":\"1f989\",\"uc\":\"1f989\",\"isCanonical\": true},\":fried_shrimp:\":{\"unicode\":[\"1f364\"],\"fname\":\"1f364\",\"uc\":\"1f364\",\"isCanonical\": true},\":fish_cake:\":{\"unicode\":[\"1f365\"],\"fname\":\"1f365\",\"uc\":\"1f365\",\"isCanonical\": true},\":shark:\":{\"unicode\":[\"1f988\"],\"fname\":\"1f988\",\"uc\":\"1f988\",\"isCanonical\": true},\":icecream:\":{\"unicode\":[\"1f366\"],\"fname\":\"1f366\",\"uc\":\"1f366\",\"isCanonical\": true},\":bat:\":{\"unicode\":[\"1f987\"],\"fname\":\"1f987\",\"uc\":\"1f987\",\"isCanonical\": true},\":shaved_ice:\":{\"unicode\":[\"1f367\"],\"fname\":\"1f367\",\"uc\":\"1f367\",\"isCanonical\": true},\":regional_indicator_x:\":{\"unicode\":[\"1f1fd\"],\"fname\":\"1f1fd\",\"uc\":\"1f1fd\",\"isCanonical\": true},\":ice_cream:\":{\"unicode\":[\"1f368\"],\"fname\":\"1f368\",\"uc\":\"1f368\",\"isCanonical\": true},\":duck:\":{\"unicode\":[\"1f986\"],\"fname\":\"1f986\",\"uc\":\"1f986\",\"isCanonical\": true},\":doughnut:\":{\"unicode\":[\"1f369\"],\"fname\":\"1f369\",\"uc\":\"1f369\",\"isCanonical\": true},\":eagle:\":{\"unicode\":[\"1f985\"],\"fname\":\"1f985\",\"uc\":\"1f985\",\"isCanonical\": true},\":cookie:\":{\"unicode\":[\"1f36a\"],\"fname\":\"1f36a\",\"uc\":\"1f36a\",\"isCanonical\": true},\":black_heart:\":{\"unicode\":[\"1f5a4\"],\"fname\":\"1f5a4\",\"uc\":\"1f5a4\",\"isCanonical\": true},\":chocolate_bar:\":{\"unicode\":[\"1f36b\"],\"fname\":\"1f36b\",\"uc\":\"1f36b\",\"isCanonical\": true},\":candy:\":{\"unicode\":[\"1f36c\"],\"fname\":\"1f36c\",\"uc\":\"1f36c\",\"isCanonical\": true},\":lollipop:\":{\"unicode\":[\"1f36d\"],\"fname\":\"1f36d\",\"uc\":\"1f36d\",\"isCanonical\": true},\":custard:\":{\"unicode\":[\"1f36e\"],\"fname\":\"1f36e\",\"uc\":\"1f36e\",\"isCanonical\": true},\":pudding:\":{\"unicode\":[\"1f36e\"],\"fname\":\"1f36e\",\"uc\":\"1f36e\",\"isCanonical\": false},\":flan:\":{\"unicode\":[\"1f36e\"],\"fname\":\"1f36e\",\"uc\":\"1f36e\",\"isCanonical\": false},\":honey_pot:\":{\"unicode\":[\"1f36f\"],\"fname\":\"1f36f\",\"uc\":\"1f36f\",\"isCanonical\": true},\":fingers_crossed:\":{\"unicode\":[\"1f91e\"],\"fname\":\"1f91e\",\"uc\":\"1f91e\",\"isCanonical\": true},\":hand_with_index_and_middle_finger_crossed:\":{\"unicode\":[\"1f91e\"],\"fname\":\"1f91e\",\"uc\":\"1f91e\",\"isCanonical\": false},\":cake:\":{\"unicode\":[\"1f370\"],\"fname\":\"1f370\",\"uc\":\"1f370\",\"isCanonical\": true},\":bento:\":{\"unicode\":[\"1f371\"],\"fname\":\"1f371\",\"uc\":\"1f371\",\"isCanonical\": true},\":stew:\":{\"unicode\":[\"1f372\"],\"fname\":\"1f372\",\"uc\":\"1f372\",\"isCanonical\": true},\":handshake:\":{\"unicode\":[\"1f91d\"],\"fname\":\"1f91d\",\"uc\":\"1f91d\",\"isCanonical\": true},\":shaking_hands:\":{\"unicode\":[\"1f91d\"],\"fname\":\"1f91d\",\"uc\":\"1f91d\",\"isCanonical\": false},\":cooking:\":{\"unicode\":[\"1f373\"],\"fname\":\"1f373\",\"uc\":\"1f373\",\"isCanonical\": true},\":fork_and_knife:\":{\"unicode\":[\"1f374\"],\"fname\":\"1f374\",\"uc\":\"1f374\",\"isCanonical\": true},\":tea:\":{\"unicode\":[\"1f375\"],\"fname\":\"1f375\",\"uc\":\"1f375\",\"isCanonical\": true},\":sake:\":{\"unicode\":[\"1f376\"],\"fname\":\"1f376\",\"uc\":\"1f376\",\"isCanonical\": true},\":wine_glass:\":{\"unicode\":[\"1f377\"],\"fname\":\"1f377\",\"uc\":\"1f377\",\"isCanonical\": true},\":cocktail:\":{\"unicode\":[\"1f378\"],\"fname\":\"1f378\",\"uc\":\"1f378\",\"isCanonical\": true},\":tropical_drink:\":{\"unicode\":[\"1f379\"],\"fname\":\"1f379\",\"uc\":\"1f379\",\"isCanonical\": true},\":beer:\":{\"unicode\":[\"1f37a\"],\"fname\":\"1f37a\",\"uc\":\"1f37a\",\"isCanonical\": true},\":beers:\":{\"unicode\":[\"1f37b\"],\"fname\":\"1f37b\",\"uc\":\"1f37b\",\"isCanonical\": true},\":ribbon:\":{\"unicode\":[\"1f380\"],\"fname\":\"1f380\",\"uc\":\"1f380\",\"isCanonical\": true},\":gift:\":{\"unicode\":[\"1f381\"],\"fname\":\"1f381\",\"uc\":\"1f381\",\"isCanonical\": true},\":birthday:\":{\"unicode\":[\"1f382\"],\"fname\":\"1f382\",\"uc\":\"1f382\",\"isCanonical\": true},\":jack_o_lantern:\":{\"unicode\":[\"1f383\"],\"fname\":\"1f383\",\"uc\":\"1f383\",\"isCanonical\": true},\":left_facing_fist:\":{\"unicode\":[\"1f91b\"],\"fname\":\"1f91b\",\"uc\":\"1f91b\",\"isCanonical\": true},\":left_fist:\":{\"unicode\":[\"1f91b\"],\"fname\":\"1f91b\",\"uc\":\"1f91b\",\"isCanonical\": false},\":right_facing_fist:\":{\"unicode\":[\"1f91c\"],\"fname\":\"1f91c\",\"uc\":\"1f91c\",\"isCanonical\": true},\":right_fist:\":{\"unicode\":[\"1f91c\"],\"fname\":\"1f91c\",\"uc\":\"1f91c\",\"isCanonical\": false},\":christmas_tree:\":{\"unicode\":[\"1f384\"],\"fname\":\"1f384\",\"uc\":\"1f384\",\"isCanonical\": true},\":santa:\":{\"unicode\":[\"1f385\"],\"fname\":\"1f385\",\"uc\":\"1f385\",\"isCanonical\": true},\":fireworks:\":{\"unicode\":[\"1f386\"],\"fname\":\"1f386\",\"uc\":\"1f386\",\"isCanonical\": true},\":raised_back_of_hand:\":{\"unicode\":[\"1f91a\"],\"fname\":\"1f91a\",\"uc\":\"1f91a\",\"isCanonical\": true},\":back_of_hand:\":{\"unicode\":[\"1f91a\"],\"fname\":\"1f91a\",\"uc\":\"1f91a\",\"isCanonical\": false},\":sparkler:\":{\"unicode\":[\"1f387\"],\"fname\":\"1f387\",\"uc\":\"1f387\",\"isCanonical\": true},\":balloon:\":{\"unicode\":[\"1f388\"],\"fname\":\"1f388\",\"uc\":\"1f388\",\"isCanonical\": true},\":tada:\":{\"unicode\":[\"1f389\"],\"fname\":\"1f389\",\"uc\":\"1f389\",\"isCanonical\": true},\":confetti_ball:\":{\"unicode\":[\"1f38a\"],\"fname\":\"1f38a\",\"uc\":\"1f38a\",\"isCanonical\": true},\":tanabata_tree:\":{\"unicode\":[\"1f38b\"],\"fname\":\"1f38b\",\"uc\":\"1f38b\",\"isCanonical\": true},\":crossed_flags:\":{\"unicode\":[\"1f38c\"],\"fname\":\"1f38c\",\"uc\":\"1f38c\",\"isCanonical\": true},\":call_me:\":{\"unicode\":[\"1f919\"],\"fname\":\"1f919\",\"uc\":\"1f919\",\"isCanonical\": true},\":call_me_hand:\":{\"unicode\":[\"1f919\"],\"fname\":\"1f919\",\"uc\":\"1f919\",\"isCanonical\": false},\":bamboo:\":{\"unicode\":[\"1f38d\"],\"fname\":\"1f38d\",\"uc\":\"1f38d\",\"isCanonical\": true},\":man_dancing:\":{\"unicode\":[\"1f57a\"],\"fname\":\"1f57a\",\"uc\":\"1f57a\",\"isCanonical\": true},\":male_dancer:\":{\"unicode\":[\"1f57a\"],\"fname\":\"1f57a\",\"uc\":\"1f57a\",\"isCanonical\": false},\":dolls:\":{\"unicode\":[\"1f38e\"],\"fname\":\"1f38e\",\"uc\":\"1f38e\",\"isCanonical\": true},\":selfie:\":{\"unicode\":[\"1f933\"],\"fname\":\"1f933\",\"uc\":\"1f933\",\"isCanonical\": true},\":flags:\":{\"unicode\":[\"1f38f\"],\"fname\":\"1f38f\",\"uc\":\"1f38f\",\"isCanonical\": true},\":pregnant_woman:\":{\"unicode\":[\"1f930\"],\"fname\":\"1f930\",\"uc\":\"1f930\",\"isCanonical\": true},\":expecting_woman:\":{\"unicode\":[\"1f930\"],\"fname\":\"1f930\",\"uc\":\"1f930\",\"isCanonical\": false},\":wind_chime:\":{\"unicode\":[\"1f390\"],\"fname\":\"1f390\",\"uc\":\"1f390\",\"isCanonical\": true},\":face_palm:\":{\"unicode\":[\"1f926\"],\"fname\":\"1f926\",\"uc\":\"1f926\",\"isCanonical\": true},\":facepalm:\":{\"unicode\":[\"1f926\"],\"fname\":\"1f926\",\"uc\":\"1f926\",\"isCanonical\": false},\":shrug:\":{\"unicode\":[\"1f937\"],\"fname\":\"1f937\",\"uc\":\"1f937\",\"isCanonical\": true},\":rice_scene:\":{\"unicode\":[\"1f391\"],\"fname\":\"1f391\",\"uc\":\"1f391\",\"isCanonical\": true},\":school_satchel:\":{\"unicode\":[\"1f392\"],\"fname\":\"1f392\",\"uc\":\"1f392\",\"isCanonical\": true},\":mortar_board:\":{\"unicode\":[\"1f393\"],\"fname\":\"1f393\",\"uc\":\"1f393\",\"isCanonical\": true},\":carousel_horse:\":{\"unicode\":[\"1f3a0\"],\"fname\":\"1f3a0\",\"uc\":\"1f3a0\",\"isCanonical\": true},\":ferris_wheel:\":{\"unicode\":[\"1f3a1\"],\"fname\":\"1f3a1\",\"uc\":\"1f3a1\",\"isCanonical\": true},\":roller_coaster:\":{\"unicode\":[\"1f3a2\"],\"fname\":\"1f3a2\",\"uc\":\"1f3a2\",\"isCanonical\": true},\":fishing_pole_and_fish:\":{\"unicode\":[\"1f3a3\"],\"fname\":\"1f3a3\",\"uc\":\"1f3a3\",\"isCanonical\": true},\":microphone:\":{\"unicode\":[\"1f3a4\"],\"fname\":\"1f3a4\",\"uc\":\"1f3a4\",\"isCanonical\": true},\":movie_camera:\":{\"unicode\":[\"1f3a5\"],\"fname\":\"1f3a5\",\"uc\":\"1f3a5\",\"isCanonical\": true},\":cinema:\":{\"unicode\":[\"1f3a6\"],\"fname\":\"1f3a6\",\"uc\":\"1f3a6\",\"isCanonical\": true},\":headphones:\":{\"unicode\":[\"1f3a7\"],\"fname\":\"1f3a7\",\"uc\":\"1f3a7\",\"isCanonical\": true},\":mrs_claus:\":{\"unicode\":[\"1f936\"],\"fname\":\"1f936\",\"uc\":\"1f936\",\"isCanonical\": true},\":mother_christmas:\":{\"unicode\":[\"1f936\"],\"fname\":\"1f936\",\"uc\":\"1f936\",\"isCanonical\": false},\":art:\":{\"unicode\":[\"1f3a8\"],\"fname\":\"1f3a8\",\"uc\":\"1f3a8\",\"isCanonical\": true},\":man_in_tuxedo:\":{\"unicode\":[\"1f935\"],\"fname\":\"1f935\",\"uc\":\"1f935\",\"isCanonical\": true},\":tophat:\":{\"unicode\":[\"1f3a9\"],\"fname\":\"1f3a9\",\"uc\":\"1f3a9\",\"isCanonical\": true},\":circus_tent:\":{\"unicode\":[\"1f3aa\"],\"fname\":\"1f3aa\",\"uc\":\"1f3aa\",\"isCanonical\": true},\":prince:\":{\"unicode\":[\"1f934\"],\"fname\":\"1f934\",\"uc\":\"1f934\",\"isCanonical\": true},\":ticket:\":{\"unicode\":[\"1f3ab\"],\"fname\":\"1f3ab\",\"uc\":\"1f3ab\",\"isCanonical\": true},\":clapper:\":{\"unicode\":[\"1f3ac\"],\"fname\":\"1f3ac\",\"uc\":\"1f3ac\",\"isCanonical\": true},\":performing_arts:\":{\"unicode\":[\"1f3ad\"],\"fname\":\"1f3ad\",\"uc\":\"1f3ad\",\"isCanonical\": true},\":sneezing_face:\":{\"unicode\":[\"1f927\"],\"fname\":\"1f927\",\"uc\":\"1f927\",\"isCanonical\": true},\":sneeze:\":{\"unicode\":[\"1f927\"],\"fname\":\"1f927\",\"uc\":\"1f927\",\"isCanonical\": false},\":video_game:\":{\"unicode\":[\"1f3ae\"],\"fname\":\"1f3ae\",\"uc\":\"1f3ae\",\"isCanonical\": true},\":dart:\":{\"unicode\":[\"1f3af\"],\"fname\":\"1f3af\",\"uc\":\"1f3af\",\"isCanonical\": true},\":slot_machine:\":{\"unicode\":[\"1f3b0\"],\"fname\":\"1f3b0\",\"uc\":\"1f3b0\",\"isCanonical\": true},\":8ball:\":{\"unicode\":[\"1f3b1\"],\"fname\":\"1f3b1\",\"uc\":\"1f3b1\",\"isCanonical\": true},\":game_die:\":{\"unicode\":[\"1f3b2\"],\"fname\":\"1f3b2\",\"uc\":\"1f3b2\",\"isCanonical\": true},\":bowling:\":{\"unicode\":[\"1f3b3\"],\"fname\":\"1f3b3\",\"uc\":\"1f3b3\",\"isCanonical\": true},\":flower_playing_cards:\":{\"unicode\":[\"1f3b4\"],\"fname\":\"1f3b4\",\"uc\":\"1f3b4\",\"isCanonical\": true},\":lying_face:\":{\"unicode\":[\"1f925\"],\"fname\":\"1f925\",\"uc\":\"1f925\",\"isCanonical\": true},\":liar:\":{\"unicode\":[\"1f925\"],\"fname\":\"1f925\",\"uc\":\"1f925\",\"isCanonical\": false},\":musical_note:\":{\"unicode\":[\"1f3b5\"],\"fname\":\"1f3b5\",\"uc\":\"1f3b5\",\"isCanonical\": true},\":notes:\":{\"unicode\":[\"1f3b6\"],\"fname\":\"1f3b6\",\"uc\":\"1f3b6\",\"isCanonical\": true},\":saxophone:\":{\"unicode\":[\"1f3b7\"],\"fname\":\"1f3b7\",\"uc\":\"1f3b7\",\"isCanonical\": true},\":drooling_face:\":{\"unicode\":[\"1f924\"],\"fname\":\"1f924\",\"uc\":\"1f924\",\"isCanonical\": true},\":drool:\":{\"unicode\":[\"1f924\"],\"fname\":\"1f924\",\"uc\":\"1f924\",\"isCanonical\": false},\":guitar:\":{\"unicode\":[\"1f3b8\"],\"fname\":\"1f3b8\",\"uc\":\"1f3b8\",\"isCanonical\": true},\":musical_keyboard:\":{\"unicode\":[\"1f3b9\"],\"fname\":\"1f3b9\",\"uc\":\"1f3b9\",\"isCanonical\": true},\":trumpet:\":{\"unicode\":[\"1f3ba\"],\"fname\":\"1f3ba\",\"uc\":\"1f3ba\",\"isCanonical\": true},\":rofl:\":{\"unicode\":[\"1f923\"],\"fname\":\"1f923\",\"uc\":\"1f923\",\"isCanonical\": true},\":rolling_on_the_floor_laughing:\":{\"unicode\":[\"1f923\"],\"fname\":\"1f923\",\"uc\":\"1f923\",\"isCanonical\": false},\":violin:\":{\"unicode\":[\"1f3bb\"],\"fname\":\"1f3bb\",\"uc\":\"1f3bb\",\"isCanonical\": true},\":musical_score:\":{\"unicode\":[\"1f3bc\"],\"fname\":\"1f3bc\",\"uc\":\"1f3bc\",\"isCanonical\": true},\":running_shirt_with_sash:\":{\"unicode\":[\"1f3bd\"],\"fname\":\"1f3bd\",\"uc\":\"1f3bd\",\"isCanonical\": true},\":nauseated_face:\":{\"unicode\":[\"1f922\"],\"fname\":\"1f922\",\"uc\":\"1f922\",\"isCanonical\": true},\":sick:\":{\"unicode\":[\"1f922\"],\"fname\":\"1f922\",\"uc\":\"1f922\",\"isCanonical\": false},\":tennis:\":{\"unicode\":[\"1f3be\"],\"fname\":\"1f3be\",\"uc\":\"1f3be\",\"isCanonical\": true},\":ski:\":{\"unicode\":[\"1f3bf\"],\"fname\":\"1f3bf\",\"uc\":\"1f3bf\",\"isCanonical\": true},\":basketball:\":{\"unicode\":[\"1f3c0\"],\"fname\":\"1f3c0\",\"uc\":\"1f3c0\",\"isCanonical\": true},\":checkered_flag:\":{\"unicode\":[\"1f3c1\"],\"fname\":\"1f3c1\",\"uc\":\"1f3c1\",\"isCanonical\": true},\":clown:\":{\"unicode\":[\"1f921\"],\"fname\":\"1f921\",\"uc\":\"1f921\",\"isCanonical\": true},\":clown_face:\":{\"unicode\":[\"1f921\"],\"fname\":\"1f921\",\"uc\":\"1f921\",\"isCanonical\": false},\":snowboarder:\":{\"unicode\":[\"1f3c2\"],\"fname\":\"1f3c2\",\"uc\":\"1f3c2\",\"isCanonical\": true},\":runner:\":{\"unicode\":[\"1f3c3\"],\"fname\":\"1f3c3\",\"uc\":\"1f3c3\",\"isCanonical\": true},\":surfer:\":{\"unicode\":[\"1f3c4\"],\"fname\":\"1f3c4\",\"uc\":\"1f3c4\",\"isCanonical\": true},\":trophy:\":{\"unicode\":[\"1f3c6\"],\"fname\":\"1f3c6\",\"uc\":\"1f3c6\",\"isCanonical\": true},\":football:\":{\"unicode\":[\"1f3c8\"],\"fname\":\"1f3c8\",\"uc\":\"1f3c8\",\"isCanonical\": true},\":swimmer:\":{\"unicode\":[\"1f3ca\"],\"fname\":\"1f3ca\",\"uc\":\"1f3ca\",\"isCanonical\": true},\":house:\":{\"unicode\":[\"1f3e0\"],\"fname\":\"1f3e0\",\"uc\":\"1f3e0\",\"isCanonical\": true},\":house_with_garden:\":{\"unicode\":[\"1f3e1\"],\"fname\":\"1f3e1\",\"uc\":\"1f3e1\",\"isCanonical\": true},\":office:\":{\"unicode\":[\"1f3e2\"],\"fname\":\"1f3e2\",\"uc\":\"1f3e2\",\"isCanonical\": true},\":post_office:\":{\"unicode\":[\"1f3e3\"],\"fname\":\"1f3e3\",\"uc\":\"1f3e3\",\"isCanonical\": true},\":hospital:\":{\"unicode\":[\"1f3e5\"],\"fname\":\"1f3e5\",\"uc\":\"1f3e5\",\"isCanonical\": true},\":bank:\":{\"unicode\":[\"1f3e6\"],\"fname\":\"1f3e6\",\"uc\":\"1f3e6\",\"isCanonical\": true},\":atm:\":{\"unicode\":[\"1f3e7\"],\"fname\":\"1f3e7\",\"uc\":\"1f3e7\",\"isCanonical\": true},\":hotel:\":{\"unicode\":[\"1f3e8\"],\"fname\":\"1f3e8\",\"uc\":\"1f3e8\",\"isCanonical\": true},\":love_hotel:\":{\"unicode\":[\"1f3e9\"],\"fname\":\"1f3e9\",\"uc\":\"1f3e9\",\"isCanonical\": true},\":convenience_store:\":{\"unicode\":[\"1f3ea\"],\"fname\":\"1f3ea\",\"uc\":\"1f3ea\",\"isCanonical\": true},\":school:\":{\"unicode\":[\"1f3eb\"],\"fname\":\"1f3eb\",\"uc\":\"1f3eb\",\"isCanonical\": true},\":department_store:\":{\"unicode\":[\"1f3ec\"],\"fname\":\"1f3ec\",\"uc\":\"1f3ec\",\"isCanonical\": true},\":cowboy:\":{\"unicode\":[\"1f920\"],\"fname\":\"1f920\",\"uc\":\"1f920\",\"isCanonical\": true},\":face_with_cowboy_hat:\":{\"unicode\":[\"1f920\"],\"fname\":\"1f920\",\"uc\":\"1f920\",\"isCanonical\": false},\":factory:\":{\"unicode\":[\"1f3ed\"],\"fname\":\"1f3ed\",\"uc\":\"1f3ed\",\"isCanonical\": true},\":izakaya_lantern:\":{\"unicode\":[\"1f3ee\"],\"fname\":\"1f3ee\",\"uc\":\"1f3ee\",\"isCanonical\": true},\":japanese_castle:\":{\"unicode\":[\"1f3ef\"],\"fname\":\"1f3ef\",\"uc\":\"1f3ef\",\"isCanonical\": true},\":european_castle:\":{\"unicode\":[\"1f3f0\"],\"fname\":\"1f3f0\",\"uc\":\"1f3f0\",\"isCanonical\": true},\":snail:\":{\"unicode\":[\"1f40c\"],\"fname\":\"1f40c\",\"uc\":\"1f40c\",\"isCanonical\": true},\":snake:\":{\"unicode\":[\"1f40d\"],\"fname\":\"1f40d\",\"uc\":\"1f40d\",\"isCanonical\": true},\":racehorse:\":{\"unicode\":[\"1f40e\"],\"fname\":\"1f40e\",\"uc\":\"1f40e\",\"isCanonical\": true},\":sheep:\":{\"unicode\":[\"1f411\"],\"fname\":\"1f411\",\"uc\":\"1f411\",\"isCanonical\": true},\":monkey:\":{\"unicode\":[\"1f412\"],\"fname\":\"1f412\",\"uc\":\"1f412\",\"isCanonical\": true},\":chicken:\":{\"unicode\":[\"1f414\"],\"fname\":\"1f414\",\"uc\":\"1f414\",\"isCanonical\": true},\":boar:\":{\"unicode\":[\"1f417\"],\"fname\":\"1f417\",\"uc\":\"1f417\",\"isCanonical\": true},\":elephant:\":{\"unicode\":[\"1f418\"],\"fname\":\"1f418\",\"uc\":\"1f418\",\"isCanonical\": true},\":octopus:\":{\"unicode\":[\"1f419\"],\"fname\":\"1f419\",\"uc\":\"1f419\",\"isCanonical\": true},\":shell:\":{\"unicode\":[\"1f41a\"],\"fname\":\"1f41a\",\"uc\":\"1f41a\",\"isCanonical\": true},\":bug:\":{\"unicode\":[\"1f41b\"],\"fname\":\"1f41b\",\"uc\":\"1f41b\",\"isCanonical\": true},\":ant:\":{\"unicode\":[\"1f41c\"],\"fname\":\"1f41c\",\"uc\":\"1f41c\",\"isCanonical\": true},\":bee:\":{\"unicode\":[\"1f41d\"],\"fname\":\"1f41d\",\"uc\":\"1f41d\",\"isCanonical\": true},\":beetle:\":{\"unicode\":[\"1f41e\"],\"fname\":\"1f41e\",\"uc\":\"1f41e\",\"isCanonical\": true},\":fish:\":{\"unicode\":[\"1f41f\"],\"fname\":\"1f41f\",\"uc\":\"1f41f\",\"isCanonical\": true},\":tropical_fish:\":{\"unicode\":[\"1f420\"],\"fname\":\"1f420\",\"uc\":\"1f420\",\"isCanonical\": true},\":blowfish:\":{\"unicode\":[\"1f421\"],\"fname\":\"1f421\",\"uc\":\"1f421\",\"isCanonical\": true},\":turtle:\":{\"unicode\":[\"1f422\"],\"fname\":\"1f422\",\"uc\":\"1f422\",\"isCanonical\": true},\":hatching_chick:\":{\"unicode\":[\"1f423\"],\"fname\":\"1f423\",\"uc\":\"1f423\",\"isCanonical\": true},\":baby_chick:\":{\"unicode\":[\"1f424\"],\"fname\":\"1f424\",\"uc\":\"1f424\",\"isCanonical\": true},\":hatched_chick:\":{\"unicode\":[\"1f425\"],\"fname\":\"1f425\",\"uc\":\"1f425\",\"isCanonical\": true},\":bird:\":{\"unicode\":[\"1f426\"],\"fname\":\"1f426\",\"uc\":\"1f426\",\"isCanonical\": true},\":penguin:\":{\"unicode\":[\"1f427\"],\"fname\":\"1f427\",\"uc\":\"1f427\",\"isCanonical\": true},\":koala:\":{\"unicode\":[\"1f428\"],\"fname\":\"1f428\",\"uc\":\"1f428\",\"isCanonical\": true},\":poodle:\":{\"unicode\":[\"1f429\"],\"fname\":\"1f429\",\"uc\":\"1f429\",\"isCanonical\": true},\":camel:\":{\"unicode\":[\"1f42b\"],\"fname\":\"1f42b\",\"uc\":\"1f42b\",\"isCanonical\": true},\":dolphin:\":{\"unicode\":[\"1f42c\"],\"fname\":\"1f42c\",\"uc\":\"1f42c\",\"isCanonical\": true},\":mouse:\":{\"unicode\":[\"1f42d\"],\"fname\":\"1f42d\",\"uc\":\"1f42d\",\"isCanonical\": true},\":cow:\":{\"unicode\":[\"1f42e\"],\"fname\":\"1f42e\",\"uc\":\"1f42e\",\"isCanonical\": true},\":tiger:\":{\"unicode\":[\"1f42f\"],\"fname\":\"1f42f\",\"uc\":\"1f42f\",\"isCanonical\": true},\":rabbit:\":{\"unicode\":[\"1f430\"],\"fname\":\"1f430\",\"uc\":\"1f430\",\"isCanonical\": true},\":cat:\":{\"unicode\":[\"1f431\"],\"fname\":\"1f431\",\"uc\":\"1f431\",\"isCanonical\": true},\":dragon_face:\":{\"unicode\":[\"1f432\"],\"fname\":\"1f432\",\"uc\":\"1f432\",\"isCanonical\": true},\":whale:\":{\"unicode\":[\"1f433\"],\"fname\":\"1f433\",\"uc\":\"1f433\",\"isCanonical\": true},\":horse:\":{\"unicode\":[\"1f434\"],\"fname\":\"1f434\",\"uc\":\"1f434\",\"isCanonical\": true},\":monkey_face:\":{\"unicode\":[\"1f435\"],\"fname\":\"1f435\",\"uc\":\"1f435\",\"isCanonical\": true},\":dog:\":{\"unicode\":[\"1f436\"],\"fname\":\"1f436\",\"uc\":\"1f436\",\"isCanonical\": true},\":pig:\":{\"unicode\":[\"1f437\"],\"fname\":\"1f437\",\"uc\":\"1f437\",\"isCanonical\": true},\":frog:\":{\"unicode\":[\"1f438\"],\"fname\":\"1f438\",\"uc\":\"1f438\",\"isCanonical\": true},\":hamster:\":{\"unicode\":[\"1f439\"],\"fname\":\"1f439\",\"uc\":\"1f439\",\"isCanonical\": true},\":wolf:\":{\"unicode\":[\"1f43a\"],\"fname\":\"1f43a\",\"uc\":\"1f43a\",\"isCanonical\": true},\":bear:\":{\"unicode\":[\"1f43b\"],\"fname\":\"1f43b\",\"uc\":\"1f43b\",\"isCanonical\": true},\":panda_face:\":{\"unicode\":[\"1f43c\"],\"fname\":\"1f43c\",\"uc\":\"1f43c\",\"isCanonical\": true},\":pig_nose:\":{\"unicode\":[\"1f43d\"],\"fname\":\"1f43d\",\"uc\":\"1f43d\",\"isCanonical\": true},\":feet:\":{\"unicode\":[\"1f43e\"],\"fname\":\"1f43e\",\"uc\":\"1f43e\",\"isCanonical\": true},\":paw_prints:\":{\"unicode\":[\"1f43e\"],\"fname\":\"1f43e\",\"uc\":\"1f43e\",\"isCanonical\": false},\":eyes:\":{\"unicode\":[\"1f440\"],\"fname\":\"1f440\",\"uc\":\"1f440\",\"isCanonical\": true},\":ear:\":{\"unicode\":[\"1f442\"],\"fname\":\"1f442\",\"uc\":\"1f442\",\"isCanonical\": true},\":nose:\":{\"unicode\":[\"1f443\"],\"fname\":\"1f443\",\"uc\":\"1f443\",\"isCanonical\": true},\":lips:\":{\"unicode\":[\"1f444\"],\"fname\":\"1f444\",\"uc\":\"1f444\",\"isCanonical\": true},\":tongue:\":{\"unicode\":[\"1f445\"],\"fname\":\"1f445\",\"uc\":\"1f445\",\"isCanonical\": true},\":point_up_2:\":{\"unicode\":[\"1f446\"],\"fname\":\"1f446\",\"uc\":\"1f446\",\"isCanonical\": true},\":point_down:\":{\"unicode\":[\"1f447\"],\"fname\":\"1f447\",\"uc\":\"1f447\",\"isCanonical\": true},\":point_left:\":{\"unicode\":[\"1f448\"],\"fname\":\"1f448\",\"uc\":\"1f448\",\"isCanonical\": true},\":point_right:\":{\"unicode\":[\"1f449\"],\"fname\":\"1f449\",\"uc\":\"1f449\",\"isCanonical\": true},\":punch:\":{\"unicode\":[\"1f44a\"],\"fname\":\"1f44a\",\"uc\":\"1f44a\",\"isCanonical\": true},\":wave:\":{\"unicode\":[\"1f44b\"],\"fname\":\"1f44b\",\"uc\":\"1f44b\",\"isCanonical\": true},\":ok_hand:\":{\"unicode\":[\"1f44c\"],\"fname\":\"1f44c\",\"uc\":\"1f44c\",\"isCanonical\": true},\":thumbsup:\":{\"unicode\":[\"1f44d\"],\"fname\":\"1f44d\",\"uc\":\"1f44d\",\"isCanonical\": true},\":+1:\":{\"unicode\":[\"1f44d\"],\"fname\":\"1f44d\",\"uc\":\"1f44d\",\"isCanonical\": false},\":thumbup:\":{\"unicode\":[\"1f44d\"],\"fname\":\"1f44d\",\"uc\":\"1f44d\",\"isCanonical\": false},\":thumbsdown:\":{\"unicode\":[\"1f44e\"],\"fname\":\"1f44e\",\"uc\":\"1f44e\",\"isCanonical\": true},\":-1:\":{\"unicode\":[\"1f44e\"],\"fname\":\"1f44e\",\"uc\":\"1f44e\",\"isCanonical\": false},\":thumbdown:\":{\"unicode\":[\"1f44e\"],\"fname\":\"1f44e\",\"uc\":\"1f44e\",\"isCanonical\": false},\":clap:\":{\"unicode\":[\"1f44f\"],\"fname\":\"1f44f\",\"uc\":\"1f44f\",\"isCanonical\": true},\":open_hands:\":{\"unicode\":[\"1f450\"],\"fname\":\"1f450\",\"uc\":\"1f450\",\"isCanonical\": true},\":crown:\":{\"unicode\":[\"1f451\"],\"fname\":\"1f451\",\"uc\":\"1f451\",\"isCanonical\": true},\":womans_hat:\":{\"unicode\":[\"1f452\"],\"fname\":\"1f452\",\"uc\":\"1f452\",\"isCanonical\": true},\":eyeglasses:\":{\"unicode\":[\"1f453\"],\"fname\":\"1f453\",\"uc\":\"1f453\",\"isCanonical\": true},\":necktie:\":{\"unicode\":[\"1f454\"],\"fname\":\"1f454\",\"uc\":\"1f454\",\"isCanonical\": true},\":shirt:\":{\"unicode\":[\"1f455\"],\"fname\":\"1f455\",\"uc\":\"1f455\",\"isCanonical\": true},\":jeans:\":{\"unicode\":[\"1f456\"],\"fname\":\"1f456\",\"uc\":\"1f456\",\"isCanonical\": true},\":dress:\":{\"unicode\":[\"1f457\"],\"fname\":\"1f457\",\"uc\":\"1f457\",\"isCanonical\": true},\":kimono:\":{\"unicode\":[\"1f458\"],\"fname\":\"1f458\",\"uc\":\"1f458\",\"isCanonical\": true},\":bikini:\":{\"unicode\":[\"1f459\"],\"fname\":\"1f459\",\"uc\":\"1f459\",\"isCanonical\": true},\":womans_clothes:\":{\"unicode\":[\"1f45a\"],\"fname\":\"1f45a\",\"uc\":\"1f45a\",\"isCanonical\": true},\":purse:\":{\"unicode\":[\"1f45b\"],\"fname\":\"1f45b\",\"uc\":\"1f45b\",\"isCanonical\": true},\":handbag:\":{\"unicode\":[\"1f45c\"],\"fname\":\"1f45c\",\"uc\":\"1f45c\",\"isCanonical\": true},\":pouch:\":{\"unicode\":[\"1f45d\"],\"fname\":\"1f45d\",\"uc\":\"1f45d\",\"isCanonical\": true},\":mans_shoe:\":{\"unicode\":[\"1f45e\"],\"fname\":\"1f45e\",\"uc\":\"1f45e\",\"isCanonical\": true},\":athletic_shoe:\":{\"unicode\":[\"1f45f\"],\"fname\":\"1f45f\",\"uc\":\"1f45f\",\"isCanonical\": true},\":high_heel:\":{\"unicode\":[\"1f460\"],\"fname\":\"1f460\",\"uc\":\"1f460\",\"isCanonical\": true},\":sandal:\":{\"unicode\":[\"1f461\"],\"fname\":\"1f461\",\"uc\":\"1f461\",\"isCanonical\": true},\":boot:\":{\"unicode\":[\"1f462\"],\"fname\":\"1f462\",\"uc\":\"1f462\",\"isCanonical\": true},\":footprints:\":{\"unicode\":[\"1f463\"],\"fname\":\"1f463\",\"uc\":\"1f463\",\"isCanonical\": true},\":bust_in_silhouette:\":{\"unicode\":[\"1f464\"],\"fname\":\"1f464\",\"uc\":\"1f464\",\"isCanonical\": true},\":boy:\":{\"unicode\":[\"1f466\"],\"fname\":\"1f466\",\"uc\":\"1f466\",\"isCanonical\": true},\":girl:\":{\"unicode\":[\"1f467\"],\"fname\":\"1f467\",\"uc\":\"1f467\",\"isCanonical\": true},\":man:\":{\"unicode\":[\"1f468\"],\"fname\":\"1f468\",\"uc\":\"1f468\",\"isCanonical\": true},\":woman:\":{\"unicode\":[\"1f469\"],\"fname\":\"1f469\",\"uc\":\"1f469\",\"isCanonical\": true},\":family:\":{\"unicode\":[\"1f46a\"],\"fname\":\"1f46a\",\"uc\":\"1f46a\",\"isCanonical\": true},\":couple:\":{\"unicode\":[\"1f46b\"],\"fname\":\"1f46b\",\"uc\":\"1f46b\",\"isCanonical\": true},\":cop:\":{\"unicode\":[\"1f46e\"],\"fname\":\"1f46e\",\"uc\":\"1f46e\",\"isCanonical\": true},\":dancers:\":{\"unicode\":[\"1f46f\"],\"fname\":\"1f46f\",\"uc\":\"1f46f\",\"isCanonical\": true},\":bride_with_veil:\":{\"unicode\":[\"1f470\"],\"fname\":\"1f470\",\"uc\":\"1f470\",\"isCanonical\": true},\":person_with_blond_hair:\":{\"unicode\":[\"1f471\"],\"fname\":\"1f471\",\"uc\":\"1f471\",\"isCanonical\": true},\":man_with_gua_pi_mao:\":{\"unicode\":[\"1f472\"],\"fname\":\"1f472\",\"uc\":\"1f472\",\"isCanonical\": true},\":man_with_turban:\":{\"unicode\":[\"1f473\"],\"fname\":\"1f473\",\"uc\":\"1f473\",\"isCanonical\": true},\":older_man:\":{\"unicode\":[\"1f474\"],\"fname\":\"1f474\",\"uc\":\"1f474\",\"isCanonical\": true},\":older_woman:\":{\"unicode\":[\"1f475\"],\"fname\":\"1f475\",\"uc\":\"1f475\",\"isCanonical\": true},\":grandma:\":{\"unicode\":[\"1f475\"],\"fname\":\"1f475\",\"uc\":\"1f475\",\"isCanonical\": false},\":baby:\":{\"unicode\":[\"1f476\"],\"fname\":\"1f476\",\"uc\":\"1f476\",\"isCanonical\": true},\":construction_worker:\":{\"unicode\":[\"1f477\"],\"fname\":\"1f477\",\"uc\":\"1f477\",\"isCanonical\": true},\":princess:\":{\"unicode\":[\"1f478\"],\"fname\":\"1f478\",\"uc\":\"1f478\",\"isCanonical\": true},\":japanese_ogre:\":{\"unicode\":[\"1f479\"],\"fname\":\"1f479\",\"uc\":\"1f479\",\"isCanonical\": true},\":japanese_goblin:\":{\"unicode\":[\"1f47a\"],\"fname\":\"1f47a\",\"uc\":\"1f47a\",\"isCanonical\": true},\":ghost:\":{\"unicode\":[\"1f47b\"],\"fname\":\"1f47b\",\"uc\":\"1f47b\",\"isCanonical\": true},\":angel:\":{\"unicode\":[\"1f47c\"],\"fname\":\"1f47c\",\"uc\":\"1f47c\",\"isCanonical\": true},\":alien:\":{\"unicode\":[\"1f47d\"],\"fname\":\"1f47d\",\"uc\":\"1f47d\",\"isCanonical\": true},\":space_invader:\":{\"unicode\":[\"1f47e\"],\"fname\":\"1f47e\",\"uc\":\"1f47e\",\"isCanonical\": true},\":imp:\":{\"unicode\":[\"1f47f\"],\"fname\":\"1f47f\",\"uc\":\"1f47f\",\"isCanonical\": true},\":skull:\":{\"unicode\":[\"1f480\"],\"fname\":\"1f480\",\"uc\":\"1f480\",\"isCanonical\": true},\":skeleton:\":{\"unicode\":[\"1f480\"],\"fname\":\"1f480\",\"uc\":\"1f480\",\"isCanonical\": false},\":card_index:\":{\"unicode\":[\"1f4c7\"],\"fname\":\"1f4c7\",\"uc\":\"1f4c7\",\"isCanonical\": true},\":information_desk_person:\":{\"unicode\":[\"1f481\"],\"fname\":\"1f481\",\"uc\":\"1f481\",\"isCanonical\": true},\":guardsman:\":{\"unicode\":[\"1f482\"],\"fname\":\"1f482\",\"uc\":\"1f482\",\"isCanonical\": true},\":dancer:\":{\"unicode\":[\"1f483\"],\"fname\":\"1f483\",\"uc\":\"1f483\",\"isCanonical\": true},\":lipstick:\":{\"unicode\":[\"1f484\"],\"fname\":\"1f484\",\"uc\":\"1f484\",\"isCanonical\": true},\":nail_care:\":{\"unicode\":[\"1f485\"],\"fname\":\"1f485\",\"uc\":\"1f485\",\"isCanonical\": true},\":ledger:\":{\"unicode\":[\"1f4d2\"],\"fname\":\"1f4d2\",\"uc\":\"1f4d2\",\"isCanonical\": true},\":massage:\":{\"unicode\":[\"1f486\"],\"fname\":\"1f486\",\"uc\":\"1f486\",\"isCanonical\": true},\":notebook:\":{\"unicode\":[\"1f4d3\"],\"fname\":\"1f4d3\",\"uc\":\"1f4d3\",\"isCanonical\": true},\":haircut:\":{\"unicode\":[\"1f487\"],\"fname\":\"1f487\",\"uc\":\"1f487\",\"isCanonical\": true},\":notebook_with_decorative_cover:\":{\"unicode\":[\"1f4d4\"],\"fname\":\"1f4d4\",\"uc\":\"1f4d4\",\"isCanonical\": true},\":barber:\":{\"unicode\":[\"1f488\"],\"fname\":\"1f488\",\"uc\":\"1f488\",\"isCanonical\": true},\":closed_book:\":{\"unicode\":[\"1f4d5\"],\"fname\":\"1f4d5\",\"uc\":\"1f4d5\",\"isCanonical\": true},\":syringe:\":{\"unicode\":[\"1f489\"],\"fname\":\"1f489\",\"uc\":\"1f489\",\"isCanonical\": true},\":book:\":{\"unicode\":[\"1f4d6\"],\"fname\":\"1f4d6\",\"uc\":\"1f4d6\",\"isCanonical\": true},\":pill:\":{\"unicode\":[\"1f48a\"],\"fname\":\"1f48a\",\"uc\":\"1f48a\",\"isCanonical\": true},\":green_book:\":{\"unicode\":[\"1f4d7\"],\"fname\":\"1f4d7\",\"uc\":\"1f4d7\",\"isCanonical\": true},\":kiss:\":{\"unicode\":[\"1f48b\"],\"fname\":\"1f48b\",\"uc\":\"1f48b\",\"isCanonical\": true},\":blue_book:\":{\"unicode\":[\"1f4d8\"],\"fname\":\"1f4d8\",\"uc\":\"1f4d8\",\"isCanonical\": true},\":love_letter:\":{\"unicode\":[\"1f48c\"],\"fname\":\"1f48c\",\"uc\":\"1f48c\",\"isCanonical\": true},\":orange_book:\":{\"unicode\":[\"1f4d9\"],\"fname\":\"1f4d9\",\"uc\":\"1f4d9\",\"isCanonical\": true},\":ring:\":{\"unicode\":[\"1f48d\"],\"fname\":\"1f48d\",\"uc\":\"1f48d\",\"isCanonical\": true},\":books:\":{\"unicode\":[\"1f4da\"],\"fname\":\"1f4da\",\"uc\":\"1f4da\",\"isCanonical\": true},\":gem:\":{\"unicode\":[\"1f48e\"],\"fname\":\"1f48e\",\"uc\":\"1f48e\",\"isCanonical\": true},\":name_badge:\":{\"unicode\":[\"1f4db\"],\"fname\":\"1f4db\",\"uc\":\"1f4db\",\"isCanonical\": true},\":couplekiss:\":{\"unicode\":[\"1f48f\"],\"fname\":\"1f48f\",\"uc\":\"1f48f\",\"isCanonical\": true},\":scroll:\":{\"unicode\":[\"1f4dc\"],\"fname\":\"1f4dc\",\"uc\":\"1f4dc\",\"isCanonical\": true},\":bouquet:\":{\"unicode\":[\"1f490\"],\"fname\":\"1f490\",\"uc\":\"1f490\",\"isCanonical\": true},\":pencil:\":{\"unicode\":[\"1f4dd\"],\"fname\":\"1f4dd\",\"uc\":\"1f4dd\",\"isCanonical\": true},\":couple_with_heart:\":{\"unicode\":[\"1f491\"],\"fname\":\"1f491\",\"uc\":\"1f491\",\"isCanonical\": true},\":telephone_receiver:\":{\"unicode\":[\"1f4de\"],\"fname\":\"1f4de\",\"uc\":\"1f4de\",\"isCanonical\": true},\":wedding:\":{\"unicode\":[\"1f492\"],\"fname\":\"1f492\",\"uc\":\"1f492\",\"isCanonical\": true},\":pager:\":{\"unicode\":[\"1f4df\"],\"fname\":\"1f4df\",\"uc\":\"1f4df\",\"isCanonical\": true},\":fax:\":{\"unicode\":[\"1f4e0\"],\"fname\":\"1f4e0\",\"uc\":\"1f4e0\",\"isCanonical\": true},\":heartbeat:\":{\"unicode\":[\"1f493\"],\"fname\":\"1f493\",\"uc\":\"1f493\",\"isCanonical\": true},\":satellite:\":{\"unicode\":[\"1f4e1\"],\"fname\":\"1f4e1\",\"uc\":\"1f4e1\",\"isCanonical\": true},\":loudspeaker:\":{\"unicode\":[\"1f4e2\"],\"fname\":\"1f4e2\",\"uc\":\"1f4e2\",\"isCanonical\": true},\":broken_heart:\":{\"unicode\":[\"1f494\"],\"fname\":\"1f494\",\"uc\":\"1f494\",\"isCanonical\": true},\":mega:\":{\"unicode\":[\"1f4e3\"],\"fname\":\"1f4e3\",\"uc\":\"1f4e3\",\"isCanonical\": true},\":outbox_tray:\":{\"unicode\":[\"1f4e4\"],\"fname\":\"1f4e4\",\"uc\":\"1f4e4\",\"isCanonical\": true},\":two_hearts:\":{\"unicode\":[\"1f495\"],\"fname\":\"1f495\",\"uc\":\"1f495\",\"isCanonical\": true},\":inbox_tray:\":{\"unicode\":[\"1f4e5\"],\"fname\":\"1f4e5\",\"uc\":\"1f4e5\",\"isCanonical\": true},\":package:\":{\"unicode\":[\"1f4e6\"],\"fname\":\"1f4e6\",\"uc\":\"1f4e6\",\"isCanonical\": true},\":sparkling_heart:\":{\"unicode\":[\"1f496\"],\"fname\":\"1f496\",\"uc\":\"1f496\",\"isCanonical\": true},\":e-mail:\":{\"unicode\":[\"1f4e7\"],\"fname\":\"1f4e7\",\"uc\":\"1f4e7\",\"isCanonical\": true},\":email:\":{\"unicode\":[\"1f4e7\"],\"fname\":\"1f4e7\",\"uc\":\"1f4e7\",\"isCanonical\": false},\":incoming_envelope:\":{\"unicode\":[\"1f4e8\"],\"fname\":\"1f4e8\",\"uc\":\"1f4e8\",\"isCanonical\": true},\":heartpulse:\":{\"unicode\":[\"1f497\"],\"fname\":\"1f497\",\"uc\":\"1f497\",\"isCanonical\": true},\":envelope_with_arrow:\":{\"unicode\":[\"1f4e9\"],\"fname\":\"1f4e9\",\"uc\":\"1f4e9\",\"isCanonical\": true},\":mailbox_closed:\":{\"unicode\":[\"1f4ea\"],\"fname\":\"1f4ea\",\"uc\":\"1f4ea\",\"isCanonical\": true},\":cupid:\":{\"unicode\":[\"1f498\"],\"fname\":\"1f498\",\"uc\":\"1f498\",\"isCanonical\": true},\":mailbox:\":{\"unicode\":[\"1f4eb\"],\"fname\":\"1f4eb\",\"uc\":\"1f4eb\",\"isCanonical\": true},\":postbox:\":{\"unicode\":[\"1f4ee\"],\"fname\":\"1f4ee\",\"uc\":\"1f4ee\",\"isCanonical\": true},\":blue_heart:\":{\"unicode\":[\"1f499\"],\"fname\":\"1f499\",\"uc\":\"1f499\",\"isCanonical\": true},\":newspaper:\":{\"unicode\":[\"1f4f0\"],\"fname\":\"1f4f0\",\"uc\":\"1f4f0\",\"isCanonical\": true},\":iphone:\":{\"unicode\":[\"1f4f1\"],\"fname\":\"1f4f1\",\"uc\":\"1f4f1\",\"isCanonical\": true},\":green_heart:\":{\"unicode\":[\"1f49a\"],\"fname\":\"1f49a\",\"uc\":\"1f49a\",\"isCanonical\": true},\":calling:\":{\"unicode\":[\"1f4f2\"],\"fname\":\"1f4f2\",\"uc\":\"1f4f2\",\"isCanonical\": true},\":vibration_mode:\":{\"unicode\":[\"1f4f3\"],\"fname\":\"1f4f3\",\"uc\":\"1f4f3\",\"isCanonical\": true},\":yellow_heart:\":{\"unicode\":[\"1f49b\"],\"fname\":\"1f49b\",\"uc\":\"1f49b\",\"isCanonical\": true},\":mobile_phone_off:\":{\"unicode\":[\"1f4f4\"],\"fname\":\"1f4f4\",\"uc\":\"1f4f4\",\"isCanonical\": true},\":signal_strength:\":{\"unicode\":[\"1f4f6\"],\"fname\":\"1f4f6\",\"uc\":\"1f4f6\",\"isCanonical\": true},\":purple_heart:\":{\"unicode\":[\"1f49c\"],\"fname\":\"1f49c\",\"uc\":\"1f49c\",\"isCanonical\": true},\":camera:\":{\"unicode\":[\"1f4f7\"],\"fname\":\"1f4f7\",\"uc\":\"1f4f7\",\"isCanonical\": true},\":video_camera:\":{\"unicode\":[\"1f4f9\"],\"fname\":\"1f4f9\",\"uc\":\"1f4f9\",\"isCanonical\": true},\":gift_heart:\":{\"unicode\":[\"1f49d\"],\"fname\":\"1f49d\",\"uc\":\"1f49d\",\"isCanonical\": true},\":tv:\":{\"unicode\":[\"1f4fa\"],\"fname\":\"1f4fa\",\"uc\":\"1f4fa\",\"isCanonical\": true},\":radio:\":{\"unicode\":[\"1f4fb\"],\"fname\":\"1f4fb\",\"uc\":\"1f4fb\",\"isCanonical\": true},\":revolving_hearts:\":{\"unicode\":[\"1f49e\"],\"fname\":\"1f49e\",\"uc\":\"1f49e\",\"isCanonical\": true},\":vhs:\":{\"unicode\":[\"1f4fc\"],\"fname\":\"1f4fc\",\"uc\":\"1f4fc\",\"isCanonical\": true},\":arrows_clockwise:\":{\"unicode\":[\"1f503\"],\"fname\":\"1f503\",\"uc\":\"1f503\",\"isCanonical\": true},\":heart_decoration:\":{\"unicode\":[\"1f49f\"],\"fname\":\"1f49f\",\"uc\":\"1f49f\",\"isCanonical\": true},\":loud_sound:\":{\"unicode\":[\"1f50a\"],\"fname\":\"1f50a\",\"uc\":\"1f50a\",\"isCanonical\": true},\":battery:\":{\"unicode\":[\"1f50b\"],\"fname\":\"1f50b\",\"uc\":\"1f50b\",\"isCanonical\": true},\":diamond_shape_with_a_dot_inside:\":{\"unicode\":[\"1f4a0\"],\"fname\":\"1f4a0\",\"uc\":\"1f4a0\",\"isCanonical\": true},\":electric_plug:\":{\"unicode\":[\"1f50c\"],\"fname\":\"1f50c\",\"uc\":\"1f50c\",\"isCanonical\": true},\":mag:\":{\"unicode\":[\"1f50d\"],\"fname\":\"1f50d\",\"uc\":\"1f50d\",\"isCanonical\": true},\":bulb:\":{\"unicode\":[\"1f4a1\"],\"fname\":\"1f4a1\",\"uc\":\"1f4a1\",\"isCanonical\": true},\":mag_right:\":{\"unicode\":[\"1f50e\"],\"fname\":\"1f50e\",\"uc\":\"1f50e\",\"isCanonical\": true},\":lock_with_ink_pen:\":{\"unicode\":[\"1f50f\"],\"fname\":\"1f50f\",\"uc\":\"1f50f\",\"isCanonical\": true},\":anger:\":{\"unicode\":[\"1f4a2\"],\"fname\":\"1f4a2\",\"uc\":\"1f4a2\",\"isCanonical\": true},\":closed_lock_with_key:\":{\"unicode\":[\"1f510\"],\"fname\":\"1f510\",\"uc\":\"1f510\",\"isCanonical\": true},\":key:\":{\"unicode\":[\"1f511\"],\"fname\":\"1f511\",\"uc\":\"1f511\",\"isCanonical\": true},\":bomb:\":{\"unicode\":[\"1f4a3\"],\"fname\":\"1f4a3\",\"uc\":\"1f4a3\",\"isCanonical\": true},\":lock:\":{\"unicode\":[\"1f512\"],\"fname\":\"1f512\",\"uc\":\"1f512\",\"isCanonical\": true},\":unlock:\":{\"unicode\":[\"1f513\"],\"fname\":\"1f513\",\"uc\":\"1f513\",\"isCanonical\": true},\":zzz:\":{\"unicode\":[\"1f4a4\"],\"fname\":\"1f4a4\",\"uc\":\"1f4a4\",\"isCanonical\": true},\":bell:\":{\"unicode\":[\"1f514\"],\"fname\":\"1f514\",\"uc\":\"1f514\",\"isCanonical\": true},\":bookmark:\":{\"unicode\":[\"1f516\"],\"fname\":\"1f516\",\"uc\":\"1f516\",\"isCanonical\": true},\":boom:\":{\"unicode\":[\"1f4a5\"],\"fname\":\"1f4a5\",\"uc\":\"1f4a5\",\"isCanonical\": true},\":link:\":{\"unicode\":[\"1f517\"],\"fname\":\"1f517\",\"uc\":\"1f517\",\"isCanonical\": true},\":radio_button:\":{\"unicode\":[\"1f518\"],\"fname\":\"1f518\",\"uc\":\"1f518\",\"isCanonical\": true},\":sweat_drops:\":{\"unicode\":[\"1f4a6\"],\"fname\":\"1f4a6\",\"uc\":\"1f4a6\",\"isCanonical\": true},\":back:\":{\"unicode\":[\"1f519\"],\"fname\":\"1f519\",\"uc\":\"1f519\",\"isCanonical\": true},\":end:\":{\"unicode\":[\"1f51a\"],\"fname\":\"1f51a\",\"uc\":\"1f51a\",\"isCanonical\": true},\":droplet:\":{\"unicode\":[\"1f4a7\"],\"fname\":\"1f4a7\",\"uc\":\"1f4a7\",\"isCanonical\": true},\":on:\":{\"unicode\":[\"1f51b\"],\"fname\":\"1f51b\",\"uc\":\"1f51b\",\"isCanonical\": true},\":soon:\":{\"unicode\":[\"1f51c\"],\"fname\":\"1f51c\",\"uc\":\"1f51c\",\"isCanonical\": true},\":dash:\":{\"unicode\":[\"1f4a8\"],\"fname\":\"1f4a8\",\"uc\":\"1f4a8\",\"isCanonical\": true},\":top:\":{\"unicode\":[\"1f51d\"],\"fname\":\"1f51d\",\"uc\":\"1f51d\",\"isCanonical\": true},\":underage:\":{\"unicode\":[\"1f51e\"],\"fname\":\"1f51e\",\"uc\":\"1f51e\",\"isCanonical\": true},\":poop:\":{\"unicode\":[\"1f4a9\"],\"fname\":\"1f4a9\",\"uc\":\"1f4a9\",\"isCanonical\": true},\":shit:\":{\"unicode\":[\"1f4a9\"],\"fname\":\"1f4a9\",\"uc\":\"1f4a9\",\"isCanonical\": false},\":hankey:\":{\"unicode\":[\"1f4a9\"],\"fname\":\"1f4a9\",\"uc\":\"1f4a9\",\"isCanonical\": false},\":poo:\":{\"unicode\":[\"1f4a9\"],\"fname\":\"1f4a9\",\"uc\":\"1f4a9\",\"isCanonical\": false},\":keycap_ten:\":{\"unicode\":[\"1f51f\"],\"fname\":\"1f51f\",\"uc\":\"1f51f\",\"isCanonical\": true},\":muscle:\":{\"unicode\":[\"1f4aa\"],\"fname\":\"1f4aa\",\"uc\":\"1f4aa\",\"isCanonical\": true},\":capital_abcd:\":{\"unicode\":[\"1f520\"],\"fname\":\"1f520\",\"uc\":\"1f520\",\"isCanonical\": true},\":abcd:\":{\"unicode\":[\"1f521\"],\"fname\":\"1f521\",\"uc\":\"1f521\",\"isCanonical\": true},\":dizzy:\":{\"unicode\":[\"1f4ab\"],\"fname\":\"1f4ab\",\"uc\":\"1f4ab\",\"isCanonical\": true},\":1234:\":{\"unicode\":[\"1f522\"],\"fname\":\"1f522\",\"uc\":\"1f522\",\"isCanonical\": true},\":symbols:\":{\"unicode\":[\"1f523\"],\"fname\":\"1f523\",\"uc\":\"1f523\",\"isCanonical\": true},\":speech_balloon:\":{\"unicode\":[\"1f4ac\"],\"fname\":\"1f4ac\",\"uc\":\"1f4ac\",\"isCanonical\": true},\":abc:\":{\"unicode\":[\"1f524\"],\"fname\":\"1f524\",\"uc\":\"1f524\",\"isCanonical\": true},\":fire:\":{\"unicode\":[\"1f525\"],\"fname\":\"1f525\",\"uc\":\"1f525\",\"isCanonical\": true},\":flame:\":{\"unicode\":[\"1f525\"],\"fname\":\"1f525\",\"uc\":\"1f525\",\"isCanonical\": false},\":white_flower:\":{\"unicode\":[\"1f4ae\"],\"fname\":\"1f4ae\",\"uc\":\"1f4ae\",\"isCanonical\": true},\":flashlight:\":{\"unicode\":[\"1f526\"],\"fname\":\"1f526\",\"uc\":\"1f526\",\"isCanonical\": true},\":wrench:\":{\"unicode\":[\"1f527\"],\"fname\":\"1f527\",\"uc\":\"1f527\",\"isCanonical\": true},\":100:\":{\"unicode\":[\"1f4af\"],\"fname\":\"1f4af\",\"uc\":\"1f4af\",\"isCanonical\": true},\":hammer:\":{\"unicode\":[\"1f528\"],\"fname\":\"1f528\",\"uc\":\"1f528\",\"isCanonical\": true},\":nut_and_bolt:\":{\"unicode\":[\"1f529\"],\"fname\":\"1f529\",\"uc\":\"1f529\",\"isCanonical\": true},\":moneybag:\":{\"unicode\":[\"1f4b0\"],\"fname\":\"1f4b0\",\"uc\":\"1f4b0\",\"isCanonical\": true},\":knife:\":{\"unicode\":[\"1f52a\"],\"fname\":\"1f52a\",\"uc\":\"1f52a\",\"isCanonical\": true},\":gun:\":{\"unicode\":[\"1f52b\"],\"fname\":\"1f52b\",\"uc\":\"1f52b\",\"isCanonical\": true},\":currency_exchange:\":{\"unicode\":[\"1f4b1\"],\"fname\":\"1f4b1\",\"uc\":\"1f4b1\",\"isCanonical\": true},\":crystal_ball:\":{\"unicode\":[\"1f52e\"],\"fname\":\"1f52e\",\"uc\":\"1f52e\",\"isCanonical\": true},\":heavy_dollar_sign:\":{\"unicode\":[\"1f4b2\"],\"fname\":\"1f4b2\",\"uc\":\"1f4b2\",\"isCanonical\": true},\":six_pointed_star:\":{\"unicode\":[\"1f52f\"],\"fname\":\"1f52f\",\"uc\":\"1f52f\",\"isCanonical\": true},\":credit_card:\":{\"unicode\":[\"1f4b3\"],\"fname\":\"1f4b3\",\"uc\":\"1f4b3\",\"isCanonical\": true},\":beginner:\":{\"unicode\":[\"1f530\"],\"fname\":\"1f530\",\"uc\":\"1f530\",\"isCanonical\": true},\":trident:\":{\"unicode\":[\"1f531\"],\"fname\":\"1f531\",\"uc\":\"1f531\",\"isCanonical\": true},\":yen:\":{\"unicode\":[\"1f4b4\"],\"fname\":\"1f4b4\",\"uc\":\"1f4b4\",\"isCanonical\": true},\":black_square_button:\":{\"unicode\":[\"1f532\"],\"fname\":\"1f532\",\"uc\":\"1f532\",\"isCanonical\": true},\":white_square_button:\":{\"unicode\":[\"1f533\"],\"fname\":\"1f533\",\"uc\":\"1f533\",\"isCanonical\": true},\":dollar:\":{\"unicode\":[\"1f4b5\"],\"fname\":\"1f4b5\",\"uc\":\"1f4b5\",\"isCanonical\": true},\":red_circle:\":{\"unicode\":[\"1f534\"],\"fname\":\"1f534\",\"uc\":\"1f534\",\"isCanonical\": true},\":blue_circle:\":{\"unicode\":[\"1f535\"],\"fname\":\"1f535\",\"uc\":\"1f535\",\"isCanonical\": true},\":money_with_wings:\":{\"unicode\":[\"1f4b8\"],\"fname\":\"1f4b8\",\"uc\":\"1f4b8\",\"isCanonical\": true},\":large_orange_diamond:\":{\"unicode\":[\"1f536\"],\"fname\":\"1f536\",\"uc\":\"1f536\",\"isCanonical\": true},\":large_blue_diamond:\":{\"unicode\":[\"1f537\"],\"fname\":\"1f537\",\"uc\":\"1f537\",\"isCanonical\": true},\":chart:\":{\"unicode\":[\"1f4b9\"],\"fname\":\"1f4b9\",\"uc\":\"1f4b9\",\"isCanonical\": true},\":small_orange_diamond:\":{\"unicode\":[\"1f538\"],\"fname\":\"1f538\",\"uc\":\"1f538\",\"isCanonical\": true},\":small_blue_diamond:\":{\"unicode\":[\"1f539\"],\"fname\":\"1f539\",\"uc\":\"1f539\",\"isCanonical\": true},\":seat:\":{\"unicode\":[\"1f4ba\"],\"fname\":\"1f4ba\",\"uc\":\"1f4ba\",\"isCanonical\": true},\":small_red_triangle:\":{\"unicode\":[\"1f53a\"],\"fname\":\"1f53a\",\"uc\":\"1f53a\",\"isCanonical\": true},\":small_red_triangle_down:\":{\"unicode\":[\"1f53b\"],\"fname\":\"1f53b\",\"uc\":\"1f53b\",\"isCanonical\": true},\":computer:\":{\"unicode\":[\"1f4bb\"],\"fname\":\"1f4bb\",\"uc\":\"1f4bb\",\"isCanonical\": true},\":arrow_up_small:\":{\"unicode\":[\"1f53c\"],\"fname\":\"1f53c\",\"uc\":\"1f53c\",\"isCanonical\": true},\":briefcase:\":{\"unicode\":[\"1f4bc\"],\"fname\":\"1f4bc\",\"uc\":\"1f4bc\",\"isCanonical\": true},\":arrow_down_small:\":{\"unicode\":[\"1f53d\"],\"fname\":\"1f53d\",\"uc\":\"1f53d\",\"isCanonical\": true},\":clock1:\":{\"unicode\":[\"1f550\"],\"fname\":\"1f550\",\"uc\":\"1f550\",\"isCanonical\": true},\":minidisc:\":{\"unicode\":[\"1f4bd\"],\"fname\":\"1f4bd\",\"uc\":\"1f4bd\",\"isCanonical\": true},\":clock2:\":{\"unicode\":[\"1f551\"],\"fname\":\"1f551\",\"uc\":\"1f551\",\"isCanonical\": true},\":floppy_disk:\":{\"unicode\":[\"1f4be\"],\"fname\":\"1f4be\",\"uc\":\"1f4be\",\"isCanonical\": true},\":clock3:\":{\"unicode\":[\"1f552\"],\"fname\":\"1f552\",\"uc\":\"1f552\",\"isCanonical\": true},\":cd:\":{\"unicode\":[\"1f4bf\"],\"fname\":\"1f4bf\",\"uc\":\"1f4bf\",\"isCanonical\": true},\":clock4:\":{\"unicode\":[\"1f553\"],\"fname\":\"1f553\",\"uc\":\"1f553\",\"isCanonical\": true},\":dvd:\":{\"unicode\":[\"1f4c0\"],\"fname\":\"1f4c0\",\"uc\":\"1f4c0\",\"isCanonical\": true},\":clock5:\":{\"unicode\":[\"1f554\"],\"fname\":\"1f554\",\"uc\":\"1f554\",\"isCanonical\": true},\":clock6:\":{\"unicode\":[\"1f555\"],\"fname\":\"1f555\",\"uc\":\"1f555\",\"isCanonical\": true},\":file_folder:\":{\"unicode\":[\"1f4c1\"],\"fname\":\"1f4c1\",\"uc\":\"1f4c1\",\"isCanonical\": true},\":clock7:\":{\"unicode\":[\"1f556\"],\"fname\":\"1f556\",\"uc\":\"1f556\",\"isCanonical\": true},\":clock8:\":{\"unicode\":[\"1f557\"],\"fname\":\"1f557\",\"uc\":\"1f557\",\"isCanonical\": true},\":open_file_folder:\":{\"unicode\":[\"1f4c2\"],\"fname\":\"1f4c2\",\"uc\":\"1f4c2\",\"isCanonical\": true},\":clock9:\":{\"unicode\":[\"1f558\"],\"fname\":\"1f558\",\"uc\":\"1f558\",\"isCanonical\": true},\":clock10:\":{\"unicode\":[\"1f559\"],\"fname\":\"1f559\",\"uc\":\"1f559\",\"isCanonical\": true},\":page_with_curl:\":{\"unicode\":[\"1f4c3\"],\"fname\":\"1f4c3\",\"uc\":\"1f4c3\",\"isCanonical\": true},\":clock11:\":{\"unicode\":[\"1f55a\"],\"fname\":\"1f55a\",\"uc\":\"1f55a\",\"isCanonical\": true},\":clock12:\":{\"unicode\":[\"1f55b\"],\"fname\":\"1f55b\",\"uc\":\"1f55b\",\"isCanonical\": true},\":page_facing_up:\":{\"unicode\":[\"1f4c4\"],\"fname\":\"1f4c4\",\"uc\":\"1f4c4\",\"isCanonical\": true},\":mount_fuji:\":{\"unicode\":[\"1f5fb\"],\"fname\":\"1f5fb\",\"uc\":\"1f5fb\",\"isCanonical\": true},\":tokyo_tower:\":{\"unicode\":[\"1f5fc\"],\"fname\":\"1f5fc\",\"uc\":\"1f5fc\",\"isCanonical\": true},\":date:\":{\"unicode\":[\"1f4c5\"],\"fname\":\"1f4c5\",\"uc\":\"1f4c5\",\"isCanonical\": true},\":statue_of_liberty:\":{\"unicode\":[\"1f5fd\"],\"fname\":\"1f5fd\",\"uc\":\"1f5fd\",\"isCanonical\": true},\":japan:\":{\"unicode\":[\"1f5fe\"],\"fname\":\"1f5fe\",\"uc\":\"1f5fe\",\"isCanonical\": true},\":calendar:\":{\"unicode\":[\"1f4c6\"],\"fname\":\"1f4c6\",\"uc\":\"1f4c6\",\"isCanonical\": true},\":moyai:\":{\"unicode\":[\"1f5ff\"],\"fname\":\"1f5ff\",\"uc\":\"1f5ff\",\"isCanonical\": true},\":grin:\":{\"unicode\":[\"1f601\"],\"fname\":\"1f601\",\"uc\":\"1f601\",\"isCanonical\": true},\":joy:\":{\"unicode\":[\"1f602\"],\"fname\":\"1f602\",\"uc\":\"1f602\",\"isCanonical\": true},\":smiley:\":{\"unicode\":[\"1f603\"],\"fname\":\"1f603\",\"uc\":\"1f603\",\"isCanonical\": true},\":chart_with_upwards_trend:\":{\"unicode\":[\"1f4c8\"],\"fname\":\"1f4c8\",\"uc\":\"1f4c8\",\"isCanonical\": true},\":smile:\":{\"unicode\":[\"1f604\"],\"fname\":\"1f604\",\"uc\":\"1f604\",\"isCanonical\": true},\":sweat_smile:\":{\"unicode\":[\"1f605\"],\"fname\":\"1f605\",\"uc\":\"1f605\",\"isCanonical\": true},\":chart_with_downwards_trend:\":{\"unicode\":[\"1f4c9\"],\"fname\":\"1f4c9\",\"uc\":\"1f4c9\",\"isCanonical\": true},\":laughing:\":{\"unicode\":[\"1f606\"],\"fname\":\"1f606\",\"uc\":\"1f606\",\"isCanonical\": true},\":satisfied:\":{\"unicode\":[\"1f606\"],\"fname\":\"1f606\",\"uc\":\"1f606\",\"isCanonical\": false},\":wink:\":{\"unicode\":[\"1f609\"],\"fname\":\"1f609\",\"uc\":\"1f609\",\"isCanonical\": true},\":bar_chart:\":{\"unicode\":[\"1f4ca\"],\"fname\":\"1f4ca\",\"uc\":\"1f4ca\",\"isCanonical\": true},\":blush:\":{\"unicode\":[\"1f60a\"],\"fname\":\"1f60a\",\"uc\":\"1f60a\",\"isCanonical\": true},\":yum:\":{\"unicode\":[\"1f60b\"],\"fname\":\"1f60b\",\"uc\":\"1f60b\",\"isCanonical\": true},\":clipboard:\":{\"unicode\":[\"1f4cb\"],\"fname\":\"1f4cb\",\"uc\":\"1f4cb\",\"isCanonical\": true},\":relieved:\":{\"unicode\":[\"1f60c\"],\"fname\":\"1f60c\",\"uc\":\"1f60c\",\"isCanonical\": true},\":heart_eyes:\":{\"unicode\":[\"1f60d\"],\"fname\":\"1f60d\",\"uc\":\"1f60d\",\"isCanonical\": true},\":pushpin:\":{\"unicode\":[\"1f4cc\"],\"fname\":\"1f4cc\",\"uc\":\"1f4cc\",\"isCanonical\": true},\":smirk:\":{\"unicode\":[\"1f60f\"],\"fname\":\"1f60f\",\"uc\":\"1f60f\",\"isCanonical\": true},\":unamused:\":{\"unicode\":[\"1f612\"],\"fname\":\"1f612\",\"uc\":\"1f612\",\"isCanonical\": true},\":round_pushpin:\":{\"unicode\":[\"1f4cd\"],\"fname\":\"1f4cd\",\"uc\":\"1f4cd\",\"isCanonical\": true},\":sweat:\":{\"unicode\":[\"1f613\"],\"fname\":\"1f613\",\"uc\":\"1f613\",\"isCanonical\": true},\":pensive:\":{\"unicode\":[\"1f614\"],\"fname\":\"1f614\",\"uc\":\"1f614\",\"isCanonical\": true},\":paperclip:\":{\"unicode\":[\"1f4ce\"],\"fname\":\"1f4ce\",\"uc\":\"1f4ce\",\"isCanonical\": true},\":confounded:\":{\"unicode\":[\"1f616\"],\"fname\":\"1f616\",\"uc\":\"1f616\",\"isCanonical\": true},\":kissing_heart:\":{\"unicode\":[\"1f618\"],\"fname\":\"1f618\",\"uc\":\"1f618\",\"isCanonical\": true},\":straight_ruler:\":{\"unicode\":[\"1f4cf\"],\"fname\":\"1f4cf\",\"uc\":\"1f4cf\",\"isCanonical\": true},\":kissing_closed_eyes:\":{\"unicode\":[\"1f61a\"],\"fname\":\"1f61a\",\"uc\":\"1f61a\",\"isCanonical\": true},\":stuck_out_tongue_winking_eye:\":{\"unicode\":[\"1f61c\"],\"fname\":\"1f61c\",\"uc\":\"1f61c\",\"isCanonical\": true},\":triangular_ruler:\":{\"unicode\":[\"1f4d0\"],\"fname\":\"1f4d0\",\"uc\":\"1f4d0\",\"isCanonical\": true},\":stuck_out_tongue_closed_eyes:\":{\"unicode\":[\"1f61d\"],\"fname\":\"1f61d\",\"uc\":\"1f61d\",\"isCanonical\": true},\":disappointed:\":{\"unicode\":[\"1f61e\"],\"fname\":\"1f61e\",\"uc\":\"1f61e\",\"isCanonical\": true},\":bookmark_tabs:\":{\"unicode\":[\"1f4d1\"],\"fname\":\"1f4d1\",\"uc\":\"1f4d1\",\"isCanonical\": true},\":angry:\":{\"unicode\":[\"1f620\"],\"fname\":\"1f620\",\"uc\":\"1f620\",\"isCanonical\": true},\":rage:\":{\"unicode\":[\"1f621\"],\"fname\":\"1f621\",\"uc\":\"1f621\",\"isCanonical\": true},\":cry:\":{\"unicode\":[\"1f622\"],\"fname\":\"1f622\",\"uc\":\"1f622\",\"isCanonical\": true},\":persevere:\":{\"unicode\":[\"1f623\"],\"fname\":\"1f623\",\"uc\":\"1f623\",\"isCanonical\": true},\":triumph:\":{\"unicode\":[\"1f624\"],\"fname\":\"1f624\",\"uc\":\"1f624\",\"isCanonical\": true},\":disappointed_relieved:\":{\"unicode\":[\"1f625\"],\"fname\":\"1f625\",\"uc\":\"1f625\",\"isCanonical\": true},\":fearful:\":{\"unicode\":[\"1f628\"],\"fname\":\"1f628\",\"uc\":\"1f628\",\"isCanonical\": true},\":weary:\":{\"unicode\":[\"1f629\"],\"fname\":\"1f629\",\"uc\":\"1f629\",\"isCanonical\": true},\":sleepy:\":{\"unicode\":[\"1f62a\"],\"fname\":\"1f62a\",\"uc\":\"1f62a\",\"isCanonical\": true},\":tired_face:\":{\"unicode\":[\"1f62b\"],\"fname\":\"1f62b\",\"uc\":\"1f62b\",\"isCanonical\": true},\":sob:\":{\"unicode\":[\"1f62d\"],\"fname\":\"1f62d\",\"uc\":\"1f62d\",\"isCanonical\": true},\":cold_sweat:\":{\"unicode\":[\"1f630\"],\"fname\":\"1f630\",\"uc\":\"1f630\",\"isCanonical\": true},\":scream:\":{\"unicode\":[\"1f631\"],\"fname\":\"1f631\",\"uc\":\"1f631\",\"isCanonical\": true},\":astonished:\":{\"unicode\":[\"1f632\"],\"fname\":\"1f632\",\"uc\":\"1f632\",\"isCanonical\": true},\":flushed:\":{\"unicode\":[\"1f633\"],\"fname\":\"1f633\",\"uc\":\"1f633\",\"isCanonical\": true},\":dizzy_face:\":{\"unicode\":[\"1f635\"],\"fname\":\"1f635\",\"uc\":\"1f635\",\"isCanonical\": true},\":mask:\":{\"unicode\":[\"1f637\"],\"fname\":\"1f637\",\"uc\":\"1f637\",\"isCanonical\": true},\":smile_cat:\":{\"unicode\":[\"1f638\"],\"fname\":\"1f638\",\"uc\":\"1f638\",\"isCanonical\": true},\":joy_cat:\":{\"unicode\":[\"1f639\"],\"fname\":\"1f639\",\"uc\":\"1f639\",\"isCanonical\": true},\":smiley_cat:\":{\"unicode\":[\"1f63a\"],\"fname\":\"1f63a\",\"uc\":\"1f63a\",\"isCanonical\": true},\":heart_eyes_cat:\":{\"unicode\":[\"1f63b\"],\"fname\":\"1f63b\",\"uc\":\"1f63b\",\"isCanonical\": true},\":smirk_cat:\":{\"unicode\":[\"1f63c\"],\"fname\":\"1f63c\",\"uc\":\"1f63c\",\"isCanonical\": true},\":kissing_cat:\":{\"unicode\":[\"1f63d\"],\"fname\":\"1f63d\",\"uc\":\"1f63d\",\"isCanonical\": true},\":pouting_cat:\":{\"unicode\":[\"1f63e\"],\"fname\":\"1f63e\",\"uc\":\"1f63e\",\"isCanonical\": true},\":crying_cat_face:\":{\"unicode\":[\"1f63f\"],\"fname\":\"1f63f\",\"uc\":\"1f63f\",\"isCanonical\": true},\":scream_cat:\":{\"unicode\":[\"1f640\"],\"fname\":\"1f640\",\"uc\":\"1f640\",\"isCanonical\": true},\":no_good:\":{\"unicode\":[\"1f645\"],\"fname\":\"1f645\",\"uc\":\"1f645\",\"isCanonical\": true},\":ok_woman:\":{\"unicode\":[\"1f646\"],\"fname\":\"1f646\",\"uc\":\"1f646\",\"isCanonical\": true},\":bow:\":{\"unicode\":[\"1f647\"],\"fname\":\"1f647\",\"uc\":\"1f647\",\"isCanonical\": true},\":see_no_evil:\":{\"unicode\":[\"1f648\"],\"fname\":\"1f648\",\"uc\":\"1f648\",\"isCanonical\": true},\":hear_no_evil:\":{\"unicode\":[\"1f649\"],\"fname\":\"1f649\",\"uc\":\"1f649\",\"isCanonical\": true},\":speak_no_evil:\":{\"unicode\":[\"1f64a\"],\"fname\":\"1f64a\",\"uc\":\"1f64a\",\"isCanonical\": true},\":raising_hand:\":{\"unicode\":[\"1f64b\"],\"fname\":\"1f64b\",\"uc\":\"1f64b\",\"isCanonical\": true},\":raised_hands:\":{\"unicode\":[\"1f64c\"],\"fname\":\"1f64c\",\"uc\":\"1f64c\",\"isCanonical\": true},\":person_frowning:\":{\"unicode\":[\"1f64d\"],\"fname\":\"1f64d\",\"uc\":\"1f64d\",\"isCanonical\": true},\":person_with_pouting_face:\":{\"unicode\":[\"1f64e\"],\"fname\":\"1f64e\",\"uc\":\"1f64e\",\"isCanonical\": true},\":pray:\":{\"unicode\":[\"1f64f\"],\"fname\":\"1f64f\",\"uc\":\"1f64f\",\"isCanonical\": true},\":rocket:\":{\"unicode\":[\"1f680\"],\"fname\":\"1f680\",\"uc\":\"1f680\",\"isCanonical\": true},\":railway_car:\":{\"unicode\":[\"1f683\"],\"fname\":\"1f683\",\"uc\":\"1f683\",\"isCanonical\": true},\":bullettrain_side:\":{\"unicode\":[\"1f684\"],\"fname\":\"1f684\",\"uc\":\"1f684\",\"isCanonical\": true},\":bullettrain_front:\":{\"unicode\":[\"1f685\"],\"fname\":\"1f685\",\"uc\":\"1f685\",\"isCanonical\": true},\":metro:\":{\"unicode\":[\"1f687\"],\"fname\":\"1f687\",\"uc\":\"1f687\",\"isCanonical\": true},\":station:\":{\"unicode\":[\"1f689\"],\"fname\":\"1f689\",\"uc\":\"1f689\",\"isCanonical\": true},\":bus:\":{\"unicode\":[\"1f68c\"],\"fname\":\"1f68c\",\"uc\":\"1f68c\",\"isCanonical\": true},\":busstop:\":{\"unicode\":[\"1f68f\"],\"fname\":\"1f68f\",\"uc\":\"1f68f\",\"isCanonical\": true},\":ambulance:\":{\"unicode\":[\"1f691\"],\"fname\":\"1f691\",\"uc\":\"1f691\",\"isCanonical\": true},\":fire_engine:\":{\"unicode\":[\"1f692\"],\"fname\":\"1f692\",\"uc\":\"1f692\",\"isCanonical\": true},\":police_car:\":{\"unicode\":[\"1f693\"],\"fname\":\"1f693\",\"uc\":\"1f693\",\"isCanonical\": true},\":taxi:\":{\"unicode\":[\"1f695\"],\"fname\":\"1f695\",\"uc\":\"1f695\",\"isCanonical\": true},\":red_car:\":{\"unicode\":[\"1f697\"],\"fname\":\"1f697\",\"uc\":\"1f697\",\"isCanonical\": true},\":blue_car:\":{\"unicode\":[\"1f699\"],\"fname\":\"1f699\",\"uc\":\"1f699\",\"isCanonical\": true},\":truck:\":{\"unicode\":[\"1f69a\"],\"fname\":\"1f69a\",\"uc\":\"1f69a\",\"isCanonical\": true},\":ship:\":{\"unicode\":[\"1f6a2\"],\"fname\":\"1f6a2\",\"uc\":\"1f6a2\",\"isCanonical\": true},\":speedboat:\":{\"unicode\":[\"1f6a4\"],\"fname\":\"1f6a4\",\"uc\":\"1f6a4\",\"isCanonical\": true},\":traffic_light:\":{\"unicode\":[\"1f6a5\"],\"fname\":\"1f6a5\",\"uc\":\"1f6a5\",\"isCanonical\": true},\":construction:\":{\"unicode\":[\"1f6a7\"],\"fname\":\"1f6a7\",\"uc\":\"1f6a7\",\"isCanonical\": true},\":rotating_light:\":{\"unicode\":[\"1f6a8\"],\"fname\":\"1f6a8\",\"uc\":\"1f6a8\",\"isCanonical\": true},\":triangular_flag_on_post:\":{\"unicode\":[\"1f6a9\"],\"fname\":\"1f6a9\",\"uc\":\"1f6a9\",\"isCanonical\": true},\":door:\":{\"unicode\":[\"1f6aa\"],\"fname\":\"1f6aa\",\"uc\":\"1f6aa\",\"isCanonical\": true},\":no_entry_sign:\":{\"unicode\":[\"1f6ab\"],\"fname\":\"1f6ab\",\"uc\":\"1f6ab\",\"isCanonical\": true},\":smoking:\":{\"unicode\":[\"1f6ac\"],\"fname\":\"1f6ac\",\"uc\":\"1f6ac\",\"isCanonical\": true},\":no_smoking:\":{\"unicode\":[\"1f6ad\"],\"fname\":\"1f6ad\",\"uc\":\"1f6ad\",\"isCanonical\": true},\":bike:\":{\"unicode\":[\"1f6b2\"],\"fname\":\"1f6b2\",\"uc\":\"1f6b2\",\"isCanonical\": true},\":walking:\":{\"unicode\":[\"1f6b6\"],\"fname\":\"1f6b6\",\"uc\":\"1f6b6\",\"isCanonical\": true},\":mens:\":{\"unicode\":[\"1f6b9\"],\"fname\":\"1f6b9\",\"uc\":\"1f6b9\",\"isCanonical\": true},\":womens:\":{\"unicode\":[\"1f6ba\"],\"fname\":\"1f6ba\",\"uc\":\"1f6ba\",\"isCanonical\": true},\":restroom:\":{\"unicode\":[\"1f6bb\"],\"fname\":\"1f6bb\",\"uc\":\"1f6bb\",\"isCanonical\": true},\":baby_symbol:\":{\"unicode\":[\"1f6bc\"],\"fname\":\"1f6bc\",\"uc\":\"1f6bc\",\"isCanonical\": true},\":toilet:\":{\"unicode\":[\"1f6bd\"],\"fname\":\"1f6bd\",\"uc\":\"1f6bd\",\"isCanonical\": true},\":wc:\":{\"unicode\":[\"1f6be\"],\"fname\":\"1f6be\",\"uc\":\"1f6be\",\"isCanonical\": true},\":bath:\":{\"unicode\":[\"1f6c0\"],\"fname\":\"1f6c0\",\"uc\":\"1f6c0\",\"isCanonical\": true},\":metal:\":{\"unicode\":[\"1f918\"],\"fname\":\"1f918\",\"uc\":\"1f918\",\"isCanonical\": true},\":sign_of_the_horns:\":{\"unicode\":[\"1f918\"],\"fname\":\"1f918\",\"uc\":\"1f918\",\"isCanonical\": false},\":grinning:\":{\"unicode\":[\"1f600\"],\"fname\":\"1f600\",\"uc\":\"1f600\",\"isCanonical\": true},\":innocent:\":{\"unicode\":[\"1f607\"],\"fname\":\"1f607\",\"uc\":\"1f607\",\"isCanonical\": true},\":smiling_imp:\":{\"unicode\":[\"1f608\"],\"fname\":\"1f608\",\"uc\":\"1f608\",\"isCanonical\": true},\":sunglasses:\":{\"unicode\":[\"1f60e\"],\"fname\":\"1f60e\",\"uc\":\"1f60e\",\"isCanonical\": true},\":neutral_face:\":{\"unicode\":[\"1f610\"],\"fname\":\"1f610\",\"uc\":\"1f610\",\"isCanonical\": true},\":expressionless:\":{\"unicode\":[\"1f611\"],\"fname\":\"1f611\",\"uc\":\"1f611\",\"isCanonical\": true},\":confused:\":{\"unicode\":[\"1f615\"],\"fname\":\"1f615\",\"uc\":\"1f615\",\"isCanonical\": true},\":kissing:\":{\"unicode\":[\"1f617\"],\"fname\":\"1f617\",\"uc\":\"1f617\",\"isCanonical\": true},\":kissing_smiling_eyes:\":{\"unicode\":[\"1f619\"],\"fname\":\"1f619\",\"uc\":\"1f619\",\"isCanonical\": true},\":stuck_out_tongue:\":{\"unicode\":[\"1f61b\"],\"fname\":\"1f61b\",\"uc\":\"1f61b\",\"isCanonical\": true},\":worried:\":{\"unicode\":[\"1f61f\"],\"fname\":\"1f61f\",\"uc\":\"1f61f\",\"isCanonical\": true},\":frowning:\":{\"unicode\":[\"1f626\"],\"fname\":\"1f626\",\"uc\":\"1f626\",\"isCanonical\": true},\":anguished:\":{\"unicode\":[\"1f627\"],\"fname\":\"1f627\",\"uc\":\"1f627\",\"isCanonical\": true},\":grimacing:\":{\"unicode\":[\"1f62c\"],\"fname\":\"1f62c\",\"uc\":\"1f62c\",\"isCanonical\": true},\":open_mouth:\":{\"unicode\":[\"1f62e\"],\"fname\":\"1f62e\",\"uc\":\"1f62e\",\"isCanonical\": true},\":hushed:\":{\"unicode\":[\"1f62f\"],\"fname\":\"1f62f\",\"uc\":\"1f62f\",\"isCanonical\": true},\":sleeping:\":{\"unicode\":[\"1f634\"],\"fname\":\"1f634\",\"uc\":\"1f634\",\"isCanonical\": true},\":no_mouth:\":{\"unicode\":[\"1f636\"],\"fname\":\"1f636\",\"uc\":\"1f636\",\"isCanonical\": true},\":helicopter:\":{\"unicode\":[\"1f681\"],\"fname\":\"1f681\",\"uc\":\"1f681\",\"isCanonical\": true},\":steam_locomotive:\":{\"unicode\":[\"1f682\"],\"fname\":\"1f682\",\"uc\":\"1f682\",\"isCanonical\": true},\":train2:\":{\"unicode\":[\"1f686\"],\"fname\":\"1f686\",\"uc\":\"1f686\",\"isCanonical\": true},\":light_rail:\":{\"unicode\":[\"1f688\"],\"fname\":\"1f688\",\"uc\":\"1f688\",\"isCanonical\": true},\":tram:\":{\"unicode\":[\"1f68a\"],\"fname\":\"1f68a\",\"uc\":\"1f68a\",\"isCanonical\": true},\":oncoming_bus:\":{\"unicode\":[\"1f68d\"],\"fname\":\"1f68d\",\"uc\":\"1f68d\",\"isCanonical\": true},\":trolleybus:\":{\"unicode\":[\"1f68e\"],\"fname\":\"1f68e\",\"uc\":\"1f68e\",\"isCanonical\": true},\":minibus:\":{\"unicode\":[\"1f690\"],\"fname\":\"1f690\",\"uc\":\"1f690\",\"isCanonical\": true},\":oncoming_police_car:\":{\"unicode\":[\"1f694\"],\"fname\":\"1f694\",\"uc\":\"1f694\",\"isCanonical\": true},\":oncoming_taxi:\":{\"unicode\":[\"1f696\"],\"fname\":\"1f696\",\"uc\":\"1f696\",\"isCanonical\": true},\":oncoming_automobile:\":{\"unicode\":[\"1f698\"],\"fname\":\"1f698\",\"uc\":\"1f698\",\"isCanonical\": true},\":articulated_lorry:\":{\"unicode\":[\"1f69b\"],\"fname\":\"1f69b\",\"uc\":\"1f69b\",\"isCanonical\": true},\":tractor:\":{\"unicode\":[\"1f69c\"],\"fname\":\"1f69c\",\"uc\":\"1f69c\",\"isCanonical\": true},\":monorail:\":{\"unicode\":[\"1f69d\"],\"fname\":\"1f69d\",\"uc\":\"1f69d\",\"isCanonical\": true},\":mountain_railway:\":{\"unicode\":[\"1f69e\"],\"fname\":\"1f69e\",\"uc\":\"1f69e\",\"isCanonical\": true},\":suspension_railway:\":{\"unicode\":[\"1f69f\"],\"fname\":\"1f69f\",\"uc\":\"1f69f\",\"isCanonical\": true},\":mountain_cableway:\":{\"unicode\":[\"1f6a0\"],\"fname\":\"1f6a0\",\"uc\":\"1f6a0\",\"isCanonical\": true},\":aerial_tramway:\":{\"unicode\":[\"1f6a1\"],\"fname\":\"1f6a1\",\"uc\":\"1f6a1\",\"isCanonical\": true},\":rowboat:\":{\"unicode\":[\"1f6a3\"],\"fname\":\"1f6a3\",\"uc\":\"1f6a3\",\"isCanonical\": true},\":vertical_traffic_light:\":{\"unicode\":[\"1f6a6\"],\"fname\":\"1f6a6\",\"uc\":\"1f6a6\",\"isCanonical\": true},\":put_litter_in_its_place:\":{\"unicode\":[\"1f6ae\"],\"fname\":\"1f6ae\",\"uc\":\"1f6ae\",\"isCanonical\": true},\":do_not_litter:\":{\"unicode\":[\"1f6af\"],\"fname\":\"1f6af\",\"uc\":\"1f6af\",\"isCanonical\": true},\":potable_water:\":{\"unicode\":[\"1f6b0\"],\"fname\":\"1f6b0\",\"uc\":\"1f6b0\",\"isCanonical\": true},\":non-potable_water:\":{\"unicode\":[\"1f6b1\"],\"fname\":\"1f6b1\",\"uc\":\"1f6b1\",\"isCanonical\": true},\":no_bicycles:\":{\"unicode\":[\"1f6b3\"],\"fname\":\"1f6b3\",\"uc\":\"1f6b3\",\"isCanonical\": true},\":bicyclist:\":{\"unicode\":[\"1f6b4\"],\"fname\":\"1f6b4\",\"uc\":\"1f6b4\",\"isCanonical\": true},\":mountain_bicyclist:\":{\"unicode\":[\"1f6b5\"],\"fname\":\"1f6b5\",\"uc\":\"1f6b5\",\"isCanonical\": true},\":no_pedestrians:\":{\"unicode\":[\"1f6b7\"],\"fname\":\"1f6b7\",\"uc\":\"1f6b7\",\"isCanonical\": true},\":children_crossing:\":{\"unicode\":[\"1f6b8\"],\"fname\":\"1f6b8\",\"uc\":\"1f6b8\",\"isCanonical\": true},\":shower:\":{\"unicode\":[\"1f6bf\"],\"fname\":\"1f6bf\",\"uc\":\"1f6bf\",\"isCanonical\": true},\":bathtub:\":{\"unicode\":[\"1f6c1\"],\"fname\":\"1f6c1\",\"uc\":\"1f6c1\",\"isCanonical\": true},\":passport_control:\":{\"unicode\":[\"1f6c2\"],\"fname\":\"1f6c2\",\"uc\":\"1f6c2\",\"isCanonical\": true},\":customs:\":{\"unicode\":[\"1f6c3\"],\"fname\":\"1f6c3\",\"uc\":\"1f6c3\",\"isCanonical\": true},\":baggage_claim:\":{\"unicode\":[\"1f6c4\"],\"fname\":\"1f6c4\",\"uc\":\"1f6c4\",\"isCanonical\": true},\":left_luggage:\":{\"unicode\":[\"1f6c5\"],\"fname\":\"1f6c5\",\"uc\":\"1f6c5\",\"isCanonical\": true},\":earth_africa:\":{\"unicode\":[\"1f30d\"],\"fname\":\"1f30d\",\"uc\":\"1f30d\",\"isCanonical\": true},\":earth_americas:\":{\"unicode\":[\"1f30e\"],\"fname\":\"1f30e\",\"uc\":\"1f30e\",\"isCanonical\": true},\":globe_with_meridians:\":{\"unicode\":[\"1f310\"],\"fname\":\"1f310\",\"uc\":\"1f310\",\"isCanonical\": true},\":waxing_crescent_moon:\":{\"unicode\":[\"1f312\"],\"fname\":\"1f312\",\"uc\":\"1f312\",\"isCanonical\": true},\":waning_gibbous_moon:\":{\"unicode\":[\"1f316\"],\"fname\":\"1f316\",\"uc\":\"1f316\",\"isCanonical\": true},\":last_quarter_moon:\":{\"unicode\":[\"1f317\"],\"fname\":\"1f317\",\"uc\":\"1f317\",\"isCanonical\": true},\":waning_crescent_moon:\":{\"unicode\":[\"1f318\"],\"fname\":\"1f318\",\"uc\":\"1f318\",\"isCanonical\": true},\":new_moon_with_face:\":{\"unicode\":[\"1f31a\"],\"fname\":\"1f31a\",\"uc\":\"1f31a\",\"isCanonical\": true},\":last_quarter_moon_with_face:\":{\"unicode\":[\"1f31c\"],\"fname\":\"1f31c\",\"uc\":\"1f31c\",\"isCanonical\": true},\":full_moon_with_face:\":{\"unicode\":[\"1f31d\"],\"fname\":\"1f31d\",\"uc\":\"1f31d\",\"isCanonical\": true},\":sun_with_face:\":{\"unicode\":[\"1f31e\"],\"fname\":\"1f31e\",\"uc\":\"1f31e\",\"isCanonical\": true},\":evergreen_tree:\":{\"unicode\":[\"1f332\"],\"fname\":\"1f332\",\"uc\":\"1f332\",\"isCanonical\": true},\":deciduous_tree:\":{\"unicode\":[\"1f333\"],\"fname\":\"1f333\",\"uc\":\"1f333\",\"isCanonical\": true},\":lemon:\":{\"unicode\":[\"1f34b\"],\"fname\":\"1f34b\",\"uc\":\"1f34b\",\"isCanonical\": true},\":pear:\":{\"unicode\":[\"1f350\"],\"fname\":\"1f350\",\"uc\":\"1f350\",\"isCanonical\": true},\":baby_bottle:\":{\"unicode\":[\"1f37c\"],\"fname\":\"1f37c\",\"uc\":\"1f37c\",\"isCanonical\": true},\":horse_racing:\":{\"unicode\":[\"1f3c7\"],\"fname\":\"1f3c7\",\"uc\":\"1f3c7\",\"isCanonical\": true},\":rugby_football:\":{\"unicode\":[\"1f3c9\"],\"fname\":\"1f3c9\",\"uc\":\"1f3c9\",\"isCanonical\": true},\":european_post_office:\":{\"unicode\":[\"1f3e4\"],\"fname\":\"1f3e4\",\"uc\":\"1f3e4\",\"isCanonical\": true},\":rat:\":{\"unicode\":[\"1f400\"],\"fname\":\"1f400\",\"uc\":\"1f400\",\"isCanonical\": true},\":mouse2:\":{\"unicode\":[\"1f401\"],\"fname\":\"1f401\",\"uc\":\"1f401\",\"isCanonical\": true},\":ox:\":{\"unicode\":[\"1f402\"],\"fname\":\"1f402\",\"uc\":\"1f402\",\"isCanonical\": true},\":water_buffalo:\":{\"unicode\":[\"1f403\"],\"fname\":\"1f403\",\"uc\":\"1f403\",\"isCanonical\": true},\":cow2:\":{\"unicode\":[\"1f404\"],\"fname\":\"1f404\",\"uc\":\"1f404\",\"isCanonical\": true},\":tiger2:\":{\"unicode\":[\"1f405\"],\"fname\":\"1f405\",\"uc\":\"1f405\",\"isCanonical\": true},\":leopard:\":{\"unicode\":[\"1f406\"],\"fname\":\"1f406\",\"uc\":\"1f406\",\"isCanonical\": true},\":rabbit2:\":{\"unicode\":[\"1f407\"],\"fname\":\"1f407\",\"uc\":\"1f407\",\"isCanonical\": true},\":cat2:\":{\"unicode\":[\"1f408\"],\"fname\":\"1f408\",\"uc\":\"1f408\",\"isCanonical\": true},\":dragon:\":{\"unicode\":[\"1f409\"],\"fname\":\"1f409\",\"uc\":\"1f409\",\"isCanonical\": true},\":crocodile:\":{\"unicode\":[\"1f40a\"],\"fname\":\"1f40a\",\"uc\":\"1f40a\",\"isCanonical\": true},\":whale2:\":{\"unicode\":[\"1f40b\"],\"fname\":\"1f40b\",\"uc\":\"1f40b\",\"isCanonical\": true},\":ram:\":{\"unicode\":[\"1f40f\"],\"fname\":\"1f40f\",\"uc\":\"1f40f\",\"isCanonical\": true},\":goat:\":{\"unicode\":[\"1f410\"],\"fname\":\"1f410\",\"uc\":\"1f410\",\"isCanonical\": true},\":rooster:\":{\"unicode\":[\"1f413\"],\"fname\":\"1f413\",\"uc\":\"1f413\",\"isCanonical\": true},\":dog2:\":{\"unicode\":[\"1f415\"],\"fname\":\"1f415\",\"uc\":\"1f415\",\"isCanonical\": true},\":pig2:\":{\"unicode\":[\"1f416\"],\"fname\":\"1f416\",\"uc\":\"1f416\",\"isCanonical\": true},\":dromedary_camel:\":{\"unicode\":[\"1f42a\"],\"fname\":\"1f42a\",\"uc\":\"1f42a\",\"isCanonical\": true},\":busts_in_silhouette:\":{\"unicode\":[\"1f465\"],\"fname\":\"1f465\",\"uc\":\"1f465\",\"isCanonical\": true},\":two_men_holding_hands:\":{\"unicode\":[\"1f46c\"],\"fname\":\"1f46c\",\"uc\":\"1f46c\",\"isCanonical\": true},\":two_women_holding_hands:\":{\"unicode\":[\"1f46d\"],\"fname\":\"1f46d\",\"uc\":\"1f46d\",\"isCanonical\": true},\":thought_balloon:\":{\"unicode\":[\"1f4ad\"],\"fname\":\"1f4ad\",\"uc\":\"1f4ad\",\"isCanonical\": true},\":euro:\":{\"unicode\":[\"1f4b6\"],\"fname\":\"1f4b6\",\"uc\":\"1f4b6\",\"isCanonical\": true},\":pound:\":{\"unicode\":[\"1f4b7\"],\"fname\":\"1f4b7\",\"uc\":\"1f4b7\",\"isCanonical\": true},\":mailbox_with_mail:\":{\"unicode\":[\"1f4ec\"],\"fname\":\"1f4ec\",\"uc\":\"1f4ec\",\"isCanonical\": true},\":mailbox_with_no_mail:\":{\"unicode\":[\"1f4ed\"],\"fname\":\"1f4ed\",\"uc\":\"1f4ed\",\"isCanonical\": true},\":postal_horn:\":{\"unicode\":[\"1f4ef\"],\"fname\":\"1f4ef\",\"uc\":\"1f4ef\",\"isCanonical\": true},\":no_mobile_phones:\":{\"unicode\":[\"1f4f5\"],\"fname\":\"1f4f5\",\"uc\":\"1f4f5\",\"isCanonical\": true},\":twisted_rightwards_arrows:\":{\"unicode\":[\"1f500\"],\"fname\":\"1f500\",\"uc\":\"1f500\",\"isCanonical\": true},\":repeat:\":{\"unicode\":[\"1f501\"],\"fname\":\"1f501\",\"uc\":\"1f501\",\"isCanonical\": true},\":repeat_one:\":{\"unicode\":[\"1f502\"],\"fname\":\"1f502\",\"uc\":\"1f502\",\"isCanonical\": true},\":arrows_counterclockwise:\":{\"unicode\":[\"1f504\"],\"fname\":\"1f504\",\"uc\":\"1f504\",\"isCanonical\": true},\":low_brightness:\":{\"unicode\":[\"1f505\"],\"fname\":\"1f505\",\"uc\":\"1f505\",\"isCanonical\": true},\":high_brightness:\":{\"unicode\":[\"1f506\"],\"fname\":\"1f506\",\"uc\":\"1f506\",\"isCanonical\": true},\":mute:\":{\"unicode\":[\"1f507\"],\"fname\":\"1f507\",\"uc\":\"1f507\",\"isCanonical\": true},\":sound:\":{\"unicode\":[\"1f509\"],\"fname\":\"1f509\",\"uc\":\"1f509\",\"isCanonical\": true},\":no_bell:\":{\"unicode\":[\"1f515\"],\"fname\":\"1f515\",\"uc\":\"1f515\",\"isCanonical\": true},\":microscope:\":{\"unicode\":[\"1f52c\"],\"fname\":\"1f52c\",\"uc\":\"1f52c\",\"isCanonical\": true},\":telescope:\":{\"unicode\":[\"1f52d\"],\"fname\":\"1f52d\",\"uc\":\"1f52d\",\"isCanonical\": true},\":clock130:\":{\"unicode\":[\"1f55c\"],\"fname\":\"1f55c\",\"uc\":\"1f55c\",\"isCanonical\": true},\":clock230:\":{\"unicode\":[\"1f55d\"],\"fname\":\"1f55d\",\"uc\":\"1f55d\",\"isCanonical\": true},\":clock330:\":{\"unicode\":[\"1f55e\"],\"fname\":\"1f55e\",\"uc\":\"1f55e\",\"isCanonical\": true},\":clock430:\":{\"unicode\":[\"1f55f\"],\"fname\":\"1f55f\",\"uc\":\"1f55f\",\"isCanonical\": true},\":clock530:\":{\"unicode\":[\"1f560\"],\"fname\":\"1f560\",\"uc\":\"1f560\",\"isCanonical\": true},\":clock630:\":{\"unicode\":[\"1f561\"],\"fname\":\"1f561\",\"uc\":\"1f561\",\"isCanonical\": true},\":clock730:\":{\"unicode\":[\"1f562\"],\"fname\":\"1f562\",\"uc\":\"1f562\",\"isCanonical\": true},\":clock830:\":{\"unicode\":[\"1f563\"],\"fname\":\"1f563\",\"uc\":\"1f563\",\"isCanonical\": true},\":clock930:\":{\"unicode\":[\"1f564\"],\"fname\":\"1f564\",\"uc\":\"1f564\",\"isCanonical\": true},\":clock1030:\":{\"unicode\":[\"1f565\"],\"fname\":\"1f565\",\"uc\":\"1f565\",\"isCanonical\": true},\":clock1130:\":{\"unicode\":[\"1f566\"],\"fname\":\"1f566\",\"uc\":\"1f566\",\"isCanonical\": true},\":clock1230:\":{\"unicode\":[\"1f567\"],\"fname\":\"1f567\",\"uc\":\"1f567\",\"isCanonical\": true},\":speaker:\":{\"unicode\":[\"1f508\"],\"fname\":\"1f508\",\"uc\":\"1f508\",\"isCanonical\": true},\":train:\":{\"unicode\":[\"1f68b\"],\"fname\":\"1f68b\",\"uc\":\"1f68b\",\"isCanonical\": true},\":medal:\":{\"unicode\":[\"1f3c5\"],\"fname\":\"1f3c5\",\"uc\":\"1f3c5\",\"isCanonical\": true},\":sports_medal:\":{\"unicode\":[\"1f3c5\"],\"fname\":\"1f3c5\",\"uc\":\"1f3c5\",\"isCanonical\": false},\":flag_black:\":{\"unicode\":[\"1f3f4\"],\"fname\":\"1f3f4\",\"uc\":\"1f3f4\",\"isCanonical\": true},\":waving_black_flag:\":{\"unicode\":[\"1f3f4\"],\"fname\":\"1f3f4\",\"uc\":\"1f3f4\",\"isCanonical\": false},\":camera_with_flash:\":{\"unicode\":[\"1f4f8\"],\"fname\":\"1f4f8\",\"uc\":\"1f4f8\",\"isCanonical\": true},\":sleeping_accommodation:\":{\"unicode\":[\"1f6cc\"],\"fname\":\"1f6cc\",\"uc\":\"1f6cc\",\"isCanonical\": true},\":middle_finger:\":{\"unicode\":[\"1f595\"],\"fname\":\"1f595\",\"uc\":\"1f595\",\"isCanonical\": true},\":reversed_hand_with_middle_finger_extended:\":{\"unicode\":[\"1f595\"],\"fname\":\"1f595\",\"uc\":\"1f595\",\"isCanonical\": false},\":vulcan:\":{\"unicode\":[\"1f596\"],\"fname\":\"1f596\",\"uc\":\"1f596\",\"isCanonical\": true},\":raised_hand_with_part_between_middle_and_ring_fingers:\":{\"unicode\":[\"1f596\"],\"fname\":\"1f596\",\"uc\":\"1f596\",\"isCanonical\": false},\":slight_frown:\":{\"unicode\":[\"1f641\"],\"fname\":\"1f641\",\"uc\":\"1f641\",\"isCanonical\": true},\":slightly_frowning_face:\":{\"unicode\":[\"1f641\"],\"fname\":\"1f641\",\"uc\":\"1f641\",\"isCanonical\": false},\":slight_smile:\":{\"unicode\":[\"1f642\"],\"fname\":\"1f642\",\"uc\":\"1f642\",\"isCanonical\": true},\":slightly_smiling_face:\":{\"unicode\":[\"1f642\"],\"fname\":\"1f642\",\"uc\":\"1f642\",\"isCanonical\": false},\":airplane_departure:\":{\"unicode\":[\"1f6eb\"],\"fname\":\"1f6eb\",\"uc\":\"1f6eb\",\"isCanonical\": true},\":airplane_arriving:\":{\"unicode\":[\"1f6ec\"],\"fname\":\"1f6ec\",\"uc\":\"1f6ec\",\"isCanonical\": true},\":tone1:\":{\"unicode\":[\"1f3fb\"],\"fname\":\"1f3fb\",\"uc\":\"1f3fb\",\"isCanonical\": true},\":tone2:\":{\"unicode\":[\"1f3fc\"],\"fname\":\"1f3fc\",\"uc\":\"1f3fc\",\"isCanonical\": true},\":tone3:\":{\"unicode\":[\"1f3fd\"],\"fname\":\"1f3fd\",\"uc\":\"1f3fd\",\"isCanonical\": true},\":tone4:\":{\"unicode\":[\"1f3fe\"],\"fname\":\"1f3fe\",\"uc\":\"1f3fe\",\"isCanonical\": true},\":tone5:\":{\"unicode\":[\"1f3ff\"],\"fname\":\"1f3ff\",\"uc\":\"1f3ff\",\"isCanonical\": true},\":upside_down:\":{\"unicode\":[\"1f643\"],\"fname\":\"1f643\",\"uc\":\"1f643\",\"isCanonical\": true},\":upside_down_face:\":{\"unicode\":[\"1f643\"],\"fname\":\"1f643\",\"uc\":\"1f643\",\"isCanonical\": false},\":money_mouth:\":{\"unicode\":[\"1f911\"],\"fname\":\"1f911\",\"uc\":\"1f911\",\"isCanonical\": true},\":money_mouth_face:\":{\"unicode\":[\"1f911\"],\"fname\":\"1f911\",\"uc\":\"1f911\",\"isCanonical\": false},\":nerd:\":{\"unicode\":[\"1f913\"],\"fname\":\"1f913\",\"uc\":\"1f913\",\"isCanonical\": true},\":nerd_face:\":{\"unicode\":[\"1f913\"],\"fname\":\"1f913\",\"uc\":\"1f913\",\"isCanonical\": false},\":hugging:\":{\"unicode\":[\"1f917\"],\"fname\":\"1f917\",\"uc\":\"1f917\",\"isCanonical\": true},\":hugging_face:\":{\"unicode\":[\"1f917\"],\"fname\":\"1f917\",\"uc\":\"1f917\",\"isCanonical\": false},\":rolling_eyes:\":{\"unicode\":[\"1f644\"],\"fname\":\"1f644\",\"uc\":\"1f644\",\"isCanonical\": true},\":face_with_rolling_eyes:\":{\"unicode\":[\"1f644\"],\"fname\":\"1f644\",\"uc\":\"1f644\",\"isCanonical\": false},\":thinking:\":{\"unicode\":[\"1f914\"],\"fname\":\"1f914\",\"uc\":\"1f914\",\"isCanonical\": true},\":thinking_face:\":{\"unicode\":[\"1f914\"],\"fname\":\"1f914\",\"uc\":\"1f914\",\"isCanonical\": false},\":zipper_mouth:\":{\"unicode\":[\"1f910\"],\"fname\":\"1f910\",\"uc\":\"1f910\",\"isCanonical\": true},\":zipper_mouth_face:\":{\"unicode\":[\"1f910\"],\"fname\":\"1f910\",\"uc\":\"1f910\",\"isCanonical\": false},\":thermometer_face:\":{\"unicode\":[\"1f912\"],\"fname\":\"1f912\",\"uc\":\"1f912\",\"isCanonical\": true},\":face_with_thermometer:\":{\"unicode\":[\"1f912\"],\"fname\":\"1f912\",\"uc\":\"1f912\",\"isCanonical\": false},\":head_bandage:\":{\"unicode\":[\"1f915\"],\"fname\":\"1f915\",\"uc\":\"1f915\",\"isCanonical\": true},\":face_with_head_bandage:\":{\"unicode\":[\"1f915\"],\"fname\":\"1f915\",\"uc\":\"1f915\",\"isCanonical\": false},\":robot:\":{\"unicode\":[\"1f916\"],\"fname\":\"1f916\",\"uc\":\"1f916\",\"isCanonical\": true},\":robot_face:\":{\"unicode\":[\"1f916\"],\"fname\":\"1f916\",\"uc\":\"1f916\",\"isCanonical\": false},\":lion_face:\":{\"unicode\":[\"1f981\"],\"fname\":\"1f981\",\"uc\":\"1f981\",\"isCanonical\": true},\":lion:\":{\"unicode\":[\"1f981\"],\"fname\":\"1f981\",\"uc\":\"1f981\",\"isCanonical\": false},\":unicorn:\":{\"unicode\":[\"1f984\"],\"fname\":\"1f984\",\"uc\":\"1f984\",\"isCanonical\": true},\":unicorn_face:\":{\"unicode\":[\"1f984\"],\"fname\":\"1f984\",\"uc\":\"1f984\",\"isCanonical\": false},\":scorpion:\":{\"unicode\":[\"1f982\"],\"fname\":\"1f982\",\"uc\":\"1f982\",\"isCanonical\": true},\":crab:\":{\"unicode\":[\"1f980\"],\"fname\":\"1f980\",\"uc\":\"1f980\",\"isCanonical\": true},\":turkey:\":{\"unicode\":[\"1f983\"],\"fname\":\"1f983\",\"uc\":\"1f983\",\"isCanonical\": true},\":cheese:\":{\"unicode\":[\"1f9c0\"],\"fname\":\"1f9c0\",\"uc\":\"1f9c0\",\"isCanonical\": true},\":cheese_wedge:\":{\"unicode\":[\"1f9c0\"],\"fname\":\"1f9c0\",\"uc\":\"1f9c0\",\"isCanonical\": false},\":hotdog:\":{\"unicode\":[\"1f32d\"],\"fname\":\"1f32d\",\"uc\":\"1f32d\",\"isCanonical\": true},\":hot_dog:\":{\"unicode\":[\"1f32d\"],\"fname\":\"1f32d\",\"uc\":\"1f32d\",\"isCanonical\": false},\":taco:\":{\"unicode\":[\"1f32e\"],\"fname\":\"1f32e\",\"uc\":\"1f32e\",\"isCanonical\": true},\":burrito:\":{\"unicode\":[\"1f32f\"],\"fname\":\"1f32f\",\"uc\":\"1f32f\",\"isCanonical\": true},\":popcorn:\":{\"unicode\":[\"1f37f\"],\"fname\":\"1f37f\",\"uc\":\"1f37f\",\"isCanonical\": true},\":champagne:\":{\"unicode\":[\"1f37e\"],\"fname\":\"1f37e\",\"uc\":\"1f37e\",\"isCanonical\": true},\":bottle_with_popping_cork:\":{\"unicode\":[\"1f37e\"],\"fname\":\"1f37e\",\"uc\":\"1f37e\",\"isCanonical\": false},\":bow_and_arrow:\":{\"unicode\":[\"1f3f9\"],\"fname\":\"1f3f9\",\"uc\":\"1f3f9\",\"isCanonical\": true},\":archery:\":{\"unicode\":[\"1f3f9\"],\"fname\":\"1f3f9\",\"uc\":\"1f3f9\",\"isCanonical\": false},\":amphora:\":{\"unicode\":[\"1f3fa\"],\"fname\":\"1f3fa\",\"uc\":\"1f3fa\",\"isCanonical\": true},\":place_of_worship:\":{\"unicode\":[\"1f6d0\"],\"fname\":\"1f6d0\",\"uc\":\"1f6d0\",\"isCanonical\": true},\":worship_symbol:\":{\"unicode\":[\"1f6d0\"],\"fname\":\"1f6d0\",\"uc\":\"1f6d0\",\"isCanonical\": false},\":kaaba:\":{\"unicode\":[\"1f54b\"],\"fname\":\"1f54b\",\"uc\":\"1f54b\",\"isCanonical\": true},\":mosque:\":{\"unicode\":[\"1f54c\"],\"fname\":\"1f54c\",\"uc\":\"1f54c\",\"isCanonical\": true},\":synagogue:\":{\"unicode\":[\"1f54d\"],\"fname\":\"1f54d\",\"uc\":\"1f54d\",\"isCanonical\": true},\":menorah:\":{\"unicode\":[\"1f54e\"],\"fname\":\"1f54e\",\"uc\":\"1f54e\",\"isCanonical\": true},\":prayer_beads:\":{\"unicode\":[\"1f4ff\"],\"fname\":\"1f4ff\",\"uc\":\"1f4ff\",\"isCanonical\": true},\":cricket:\":{\"unicode\":[\"1f3cf\"],\"fname\":\"1f3cf\",\"uc\":\"1f3cf\",\"isCanonical\": true},\":cricket_bat_ball:\":{\"unicode\":[\"1f3cf\"],\"fname\":\"1f3cf\",\"uc\":\"1f3cf\",\"isCanonical\": false},\":volleyball:\":{\"unicode\":[\"1f3d0\"],\"fname\":\"1f3d0\",\"uc\":\"1f3d0\",\"isCanonical\": true},\":field_hockey:\":{\"unicode\":[\"1f3d1\"],\"fname\":\"1f3d1\",\"uc\":\"1f3d1\",\"isCanonical\": true},\":hockey:\":{\"unicode\":[\"1f3d2\"],\"fname\":\"1f3d2\",\"uc\":\"1f3d2\",\"isCanonical\": true},\":ping_pong:\":{\"unicode\":[\"1f3d3\"],\"fname\":\"1f3d3\",\"uc\":\"1f3d3\",\"isCanonical\": true},\":table_tennis:\":{\"unicode\":[\"1f3d3\"],\"fname\":\"1f3d3\",\"uc\":\"1f3d3\",\"isCanonical\": false},\":badminton:\":{\"unicode\":[\"1f3f8\"],\"fname\":\"1f3f8\",\"uc\":\"1f3f8\",\"isCanonical\": true},\":drum:\":{\"unicode\":[\"1f941\"],\"fname\":\"1f941\",\"uc\":\"1f941\",\"isCanonical\": true},\":drum_with_drumsticks:\":{\"unicode\":[\"1f941\"],\"fname\":\"1f941\",\"uc\":\"1f941\",\"isCanonical\": false},\":shrimp:\":{\"unicode\":[\"1f990\"],\"fname\":\"1f990\",\"uc\":\"1f990\",\"isCanonical\": true},\":squid:\":{\"unicode\":[\"1f991\"],\"fname\":\"1f991\",\"uc\":\"1f991\",\"isCanonical\": true},\":egg:\":{\"unicode\":[\"1f95a\"],\"fname\":\"1f95a\",\"uc\":\"1f95a\",\"isCanonical\": true},\":milk:\":{\"unicode\":[\"1f95b\"],\"fname\":\"1f95b\",\"uc\":\"1f95b\",\"isCanonical\": true},\":glass_of_milk:\":{\"unicode\":[\"1f95b\"],\"fname\":\"1f95b\",\"uc\":\"1f95b\",\"isCanonical\": false},\":peanuts:\":{\"unicode\":[\"1f95c\"],\"fname\":\"1f95c\",\"uc\":\"1f95c\",\"isCanonical\": true},\":shelled_peanut:\":{\"unicode\":[\"1f95c\"],\"fname\":\"1f95c\",\"uc\":\"1f95c\",\"isCanonical\": false},\":kiwi:\":{\"unicode\":[\"1f95d\"],\"fname\":\"1f95d\",\"uc\":\"1f95d\",\"isCanonical\": true},\":kiwifruit:\":{\"unicode\":[\"1f95d\"],\"fname\":\"1f95d\",\"uc\":\"1f95d\",\"isCanonical\": false},\":pancakes:\":{\"unicode\":[\"1f95e\"],\"fname\":\"1f95e\",\"uc\":\"1f95e\",\"isCanonical\": true},\":regional_indicator_w:\":{\"unicode\":[\"1f1fc\"],\"fname\":\"1f1fc\",\"uc\":\"1f1fc\",\"isCanonical\": true},\":regional_indicator_v:\":{\"unicode\":[\"1f1fb\"],\"fname\":\"1f1fb\",\"uc\":\"1f1fb\",\"isCanonical\": true},\":regional_indicator_u:\":{\"unicode\":[\"1f1fa\"],\"fname\":\"1f1fa\",\"uc\":\"1f1fa\",\"isCanonical\": true},\":regional_indicator_t:\":{\"unicode\":[\"1f1f9\"],\"fname\":\"1f1f9\",\"uc\":\"1f1f9\",\"isCanonical\": true},\":regional_indicator_s:\":{\"unicode\":[\"1f1f8\"],\"fname\":\"1f1f8\",\"uc\":\"1f1f8\",\"isCanonical\": true},\":regional_indicator_r:\":{\"unicode\":[\"1f1f7\"],\"fname\":\"1f1f7\",\"uc\":\"1f1f7\",\"isCanonical\": true},\":regional_indicator_q:\":{\"unicode\":[\"1f1f6\"],\"fname\":\"1f1f6\",\"uc\":\"1f1f6\",\"isCanonical\": true},\":regional_indicator_p:\":{\"unicode\":[\"1f1f5\"],\"fname\":\"1f1f5\",\"uc\":\"1f1f5\",\"isCanonical\": true},\":regional_indicator_o:\":{\"unicode\":[\"1f1f4\"],\"fname\":\"1f1f4\",\"uc\":\"1f1f4\",\"isCanonical\": true},\":regional_indicator_n:\":{\"unicode\":[\"1f1f3\"],\"fname\":\"1f1f3\",\"uc\":\"1f1f3\",\"isCanonical\": true},\":regional_indicator_m:\":{\"unicode\":[\"1f1f2\"],\"fname\":\"1f1f2\",\"uc\":\"1f1f2\",\"isCanonical\": true},\":regional_indicator_l:\":{\"unicode\":[\"1f1f1\"],\"fname\":\"1f1f1\",\"uc\":\"1f1f1\",\"isCanonical\": true},\":regional_indicator_k:\":{\"unicode\":[\"1f1f0\"],\"fname\":\"1f1f0\",\"uc\":\"1f1f0\",\"isCanonical\": true},\":regional_indicator_j:\":{\"unicode\":[\"1f1ef\"],\"fname\":\"1f1ef\",\"uc\":\"1f1ef\",\"isCanonical\": true},\":regional_indicator_i:\":{\"unicode\":[\"1f1ee\"],\"fname\":\"1f1ee\",\"uc\":\"1f1ee\",\"isCanonical\": true},\":regional_indicator_h:\":{\"unicode\":[\"1f1ed\"],\"fname\":\"1f1ed\",\"uc\":\"1f1ed\",\"isCanonical\": true},\":regional_indicator_g:\":{\"unicode\":[\"1f1ec\"],\"fname\":\"1f1ec\",\"uc\":\"1f1ec\",\"isCanonical\": true},\":regional_indicator_f:\":{\"unicode\":[\"1f1eb\"],\"fname\":\"1f1eb\",\"uc\":\"1f1eb\",\"isCanonical\": true},\":regional_indicator_e:\":{\"unicode\":[\"1f1ea\"],\"fname\":\"1f1ea\",\"uc\":\"1f1ea\",\"isCanonical\": true},\":regional_indicator_d:\":{\"unicode\":[\"1f1e9\"],\"fname\":\"1f1e9\",\"uc\":\"1f1e9\",\"isCanonical\": true},\":regional_indicator_c:\":{\"unicode\":[\"1f1e8\"],\"fname\":\"1f1e8\",\"uc\":\"1f1e8\",\"isCanonical\": true},\":regional_indicator_b:\":{\"unicode\":[\"1f1e7\"],\"fname\":\"1f1e7\",\"uc\":\"1f1e7\",\"isCanonical\": true},\":regional_indicator_a:\":{\"unicode\":[\"1f1e6\"],\"fname\":\"1f1e6\",\"uc\":\"1f1e6\",\"isCanonical\": true},\":fast_forward:\":{\"unicode\":[\"23e9\"],\"fname\":\"23e9\",\"uc\":\"23e9\",\"isCanonical\": true},\":rewind:\":{\"unicode\":[\"23ea\"],\"fname\":\"23ea\",\"uc\":\"23ea\",\"isCanonical\": true},\":arrow_double_up:\":{\"unicode\":[\"23eb\"],\"fname\":\"23eb\",\"uc\":\"23eb\",\"isCanonical\": true},\":arrow_double_down:\":{\"unicode\":[\"23ec\"],\"fname\":\"23ec\",\"uc\":\"23ec\",\"isCanonical\": true},\":alarm_clock:\":{\"unicode\":[\"23f0\"],\"fname\":\"23f0\",\"uc\":\"23f0\",\"isCanonical\": true},\":hourglass_flowing_sand:\":{\"unicode\":[\"23f3\"],\"fname\":\"23f3\",\"uc\":\"23f3\",\"isCanonical\": true},\":ophiuchus:\":{\"unicode\":[\"26ce\"],\"fname\":\"26ce\",\"uc\":\"26ce\",\"isCanonical\": true},\":white_check_mark:\":{\"unicode\":[\"2705\"],\"fname\":\"2705\",\"uc\":\"2705\",\"isCanonical\": true},\":fist:\":{\"unicode\":[\"270a\"],\"fname\":\"270a\",\"uc\":\"270a\",\"isCanonical\": true},\":raised_hand:\":{\"unicode\":[\"270b\"],\"fname\":\"270b\",\"uc\":\"270b\",\"isCanonical\": true},\":sparkles:\":{\"unicode\":[\"2728\"],\"fname\":\"2728\",\"uc\":\"2728\",\"isCanonical\": true},\":x:\":{\"unicode\":[\"274c\"],\"fname\":\"274c\",\"uc\":\"274c\",\"isCanonical\": true},\":negative_squared_cross_mark:\":{\"unicode\":[\"274e\"],\"fname\":\"274e\",\"uc\":\"274e\",\"isCanonical\": true},\":question:\":{\"unicode\":[\"2753\"],\"fname\":\"2753\",\"uc\":\"2753\",\"isCanonical\": true},\":grey_question:\":{\"unicode\":[\"2754\"],\"fname\":\"2754\",\"uc\":\"2754\",\"isCanonical\": true},\":grey_exclamation:\":{\"unicode\":[\"2755\"],\"fname\":\"2755\",\"uc\":\"2755\",\"isCanonical\": true},\":heavy_plus_sign:\":{\"unicode\":[\"2795\"],\"fname\":\"2795\",\"uc\":\"2795\",\"isCanonical\": true},\":heavy_minus_sign:\":{\"unicode\":[\"2796\"],\"fname\":\"2796\",\"uc\":\"2796\",\"isCanonical\": true},\":heavy_division_sign:\":{\"unicode\":[\"2797\"],\"fname\":\"2797\",\"uc\":\"2797\",\"isCanonical\": true},\":curly_loop:\":{\"unicode\":[\"27b0\"],\"fname\":\"27b0\",\"uc\":\"27b0\",\"isCanonical\": true},\":loop:\":{\"unicode\":[\"27bf\"],\"fname\":\"27bf\",\"uc\":\"27bf\",\"isCanonical\": true}};\n // ns.shortnames = Object.keys(ns.emojioneList).map(function(emoji) {\n // return emoji.replace(/[+]/g, \"\\\\$&\");\n // }).join('|');\n var tmpShortNames = [],\n emoji;\n for (emoji in ns.emojioneList) {\n if (!ns.emojioneList.hasOwnProperty(emoji)) continue;\n tmpShortNames.push(emoji.replace(/[+]/g, \"\\\\$&\"));\n }\n ns.shortnames = tmpShortNames.join('|');\n ns.asciiList = {\n '<3':'2764',\n '</3':'1f494',\n ':\\')':'1f602',\n ':\\'-)':'1f602',\n ':D':'1f603',\n ':-D':'1f603',\n '=D':'1f603',\n ':)':'1f642',\n ':-)':'1f642',\n '=]':'1f642',\n '=)':'1f642',\n ':]':'1f642',\n '\\':)':'1f605',\n '\\':-)':'1f605',\n '\\'=)':'1f605',\n '\\':D':'1f605',\n '\\':-D':'1f605',\n '\\'=D':'1f605',\n '>:)':'1f606',\n '>;)':'1f606',\n '>:-)':'1f606',\n '>=)':'1f606',\n ';)':'1f609',\n ';-)':'1f609',\n '*-)':'1f609',\n '*)':'1f609',\n ';-]':'1f609',\n ';]':'1f609',\n ';D':'1f609',\n ';^)':'1f609',\n '\\':(':'1f613',\n '\\':-(':'1f613',\n '\\'=(':'1f613',\n ':*':'1f618',\n ':-*':'1f618',\n '=*':'1f618',\n ':^*':'1f618',\n '>:P':'1f61c',\n 'X-P':'1f61c',\n 'x-p':'1f61c',\n '>:[':'1f61e',\n ':-(':'1f61e',\n ':(':'1f61e',\n ':-[':'1f61e',\n ':[':'1f61e',\n '=(':'1f61e',\n '>:(':'1f620',\n '>:-(':'1f620',\n ':@':'1f620',\n ':\\'(':'1f622',\n ':\\'-(':'1f622',\n ';(':'1f622',\n ';-(':'1f622',\n '>.<':'1f623',\n 'D:':'1f628',\n ':$':'1f633',\n '=$':'1f633',\n '#-)':'1f635',\n '#)':'1f635',\n '%-)':'1f635',\n '%)':'1f635',\n 'X)':'1f635',\n 'X-)':'1f635',\n '*\\\\0/*':'1f646',\n '\\\\0/':'1f646',\n '*\\\\O/*':'1f646',\n '\\\\O/':'1f646',\n 'O:-)':'1f607',\n '0:-3':'1f607',\n '0:3':'1f607',\n '0:-)':'1f607',\n '0:)':'1f607',\n '0;^)':'1f607',\n 'O:)':'1f607',\n 'O;-)':'1f607',\n 'O=)':'1f607',\n '0;-)':'1f607',\n 'O:-3':'1f607',\n 'O:3':'1f607',\n 'B-)':'1f60e',\n 'B)':'1f60e',\n '8)':'1f60e',\n '8-)':'1f60e',\n 'B-D':'1f60e',\n '8-D':'1f60e',\n '-_-':'1f611',\n '-__-':'1f611',\n '-___-':'1f611',\n '>:\\\\':'1f615',\n '>:/':'1f615',\n ':-/':'1f615',\n ':-.':'1f615',\n ':/':'1f615',\n ':\\\\':'1f615',\n '=/':'1f615',\n '=\\\\':'1f615',\n ':L':'1f615',\n '=L':'1f615',\n ':P':'1f61b',\n ':-P':'1f61b',\n '=P':'1f61b',\n ':-p':'1f61b',\n ':p':'1f61b',\n '=p':'1f61b',\n ':-Þ':'1f61b',\n ':Þ':'1f61b',\n ':þ':'1f61b',\n ':-þ':'1f61b',\n ':-b':'1f61b',\n ':b':'1f61b',\n 'd:':'1f61b',\n ':-O':'1f62e',\n ':O':'1f62e',\n ':-o':'1f62e',\n ':o':'1f62e',\n 'O_O':'1f62e',\n '>:O':'1f62e',\n ':-X':'1f636',\n ':X':'1f636',\n ':-#':'1f636',\n ':#':'1f636',\n '=X':'1f636',\n '=x':'1f636',\n ':x':'1f636',\n ':-x':'1f636',\n '=#':'1f636'\n };\n ns.asciiRegexp = '(\\\\<3|<3|\\\\<\\\\/3|<\\\\/3|\\\\:\\'\\\\)|\\\\:\\'\\\\-\\\\)|\\\\:D|\\\\:\\\\-D|\\\\=D|\\\\:\\\\)|\\\\:\\\\-\\\\)|\\\\=\\\\]|\\\\=\\\\)|\\\\:\\\\]|\\'\\\\:\\\\)|\\'\\\\:\\\\-\\\\)|\\'\\\\=\\\\)|\\'\\\\:D|\\'\\\\:\\\\-D|\\'\\\\=D|\\\\>\\\\:\\\\)|>\\\\:\\\\)|\\\\>;\\\\)|>;\\\\)|\\\\>\\\\:\\\\-\\\\)|>\\\\:\\\\-\\\\)|\\\\>\\\\=\\\\)|>\\\\=\\\\)|;\\\\)|;\\\\-\\\\)|\\\\*\\\\-\\\\)|\\\\*\\\\)|;\\\\-\\\\]|;\\\\]|;D|;\\\\^\\\\)|\\'\\\\:\\\\(|\\'\\\\:\\\\-\\\\(|\\'\\\\=\\\\(|\\\\:\\\\*|\\\\:\\\\-\\\\*|\\\\=\\\\*|\\\\:\\\\^\\\\*|\\\\>\\\\:P|>\\\\:P|X\\\\-P|x\\\\-p|\\\\>\\\\:\\\\[|>\\\\:\\\\[|\\\\:\\\\-\\\\(|\\\\:\\\\(|\\\\:\\\\-\\\\[|\\\\:\\\\[|\\\\=\\\\(|\\\\>\\\\:\\\\(|>\\\\:\\\\(|\\\\>\\\\:\\\\-\\\\(|>\\\\:\\\\-\\\\(|\\\\:@|\\\\:\\'\\\\(|\\\\:\\'\\\\-\\\\(|;\\\\(|;\\\\-\\\\(|\\\\>\\\\.\\\\<|>\\\\.<|D\\\\:|\\\\:\\\\$|\\\\=\\\\$|#\\\\-\\\\)|#\\\\)|%\\\\-\\\\)|%\\\\)|X\\\\)|X\\\\-\\\\)|\\\\*\\\\\\\\0\\\\/\\\\*|\\\\\\\\0\\\\/|\\\\*\\\\\\\\O\\\\/\\\\*|\\\\\\\\O\\\\/|O\\\\:\\\\-\\\\)|0\\\\:\\\\-3|0\\\\:3|0\\\\:\\\\-\\\\)|0\\\\:\\\\)|0;\\\\^\\\\)|O\\\\:\\\\-\\\\)|O\\\\:\\\\)|O;\\\\-\\\\)|O\\\\=\\\\)|0;\\\\-\\\\)|O\\\\:\\\\-3|O\\\\:3|B\\\\-\\\\)|B\\\\)|8\\\\)|8\\\\-\\\\)|B\\\\-D|8\\\\-D|\\\\-_\\\\-|\\\\-__\\\\-|\\\\-___\\\\-|\\\\>\\\\:\\\\\\\\|>\\\\:\\\\\\\\|\\\\>\\\\:\\\\/|>\\\\:\\\\/|\\\\:\\\\-\\\\/|\\\\:\\\\-\\\\.|\\\\:\\\\/|\\\\:\\\\\\\\|\\\\=\\\\/|\\\\=\\\\\\\\|\\\\:L|\\\\=L|\\\\:P|\\\\:\\\\-P|\\\\=P|\\\\:\\\\-p|\\\\:p|\\\\=p|\\\\:\\\\-Þ|\\\\:\\\\-Þ|\\\\:Þ|\\\\:Þ|\\\\:þ|\\\\:þ|\\\\:\\\\-þ|\\\\:\\\\-þ|\\\\:\\\\-b|\\\\:b|d\\\\:|\\\\:\\\\-O|\\\\:O|\\\\:\\\\-o|\\\\:o|O_O|\\\\>\\\\:O|>\\\\:O|\\\\:\\\\-X|\\\\:X|\\\\:\\\\-#|\\\\:#|\\\\=X|\\\\=x|\\\\:x|\\\\:\\\\-x|\\\\=#)';\n // javascript escapes here must be ordered from largest length to shortest\n ns.unicodeRegexp = '(\\\\uD83D\\\\uDC69\\\\u200D\\\\uD83D\\\\uDC69\\\\u200D\\\\uD83D\\\\uDC66\\\\u200D\\\\uD83D\\\\uDC66|\\\\uD83D\\\\uDC69\\\\u200D\\\\u2764\\\\uFE0F\\\\u200D\\\\uD83D\\\\uDC8B\\\\u200D\\\\uD83D\\\\uDC69|\\\\uD83D\\\\uDC68\\\\u200D\\\\u2764\\\\uFE0F\\\\u200D\\\\uD83D\\\\uDC8B\\\\u200D\\\\uD83D\\\\uDC68|\\\\uD83D\\\\uDC68\\\\u200D\\\\uD83D\\\\uDC68\\\\u200D\\\\uD83D\\\\uDC67\\\\u200D\\\\uD83D\\\\uDC66|\\\\uD83D\\\\uDC69\\\\u200D\\\\uD83D\\\\uDC69\\\\u200D\\\\uD83D\\\\uDC67\\\\u200D\\\\uD83D\\\\uDC67|\\\\uD83D\\\\uDC68\\\\u200D\\\\uD83D\\\\uDC68\\\\u200D\\\\uD83D\\\\uDC67\\\\u200D\\\\uD83D\\\\uDC67|\\\\uD83D\\\\uDC69\\\\u200D\\\\uD83D\\\\uDC69\\\\u200D\\\\uD83D\\\\uDC67\\\\u200D\\\\uD83D\\\\uDC66|\\\\uD83D\\\\uDC68\\\\u200D\\\\uD83D\\\\uDC69\\\\u200D\\\\uD83D\\\\uDC66\\\\u200D\\\\uD83D\\\\uDC66|\\\\uD83D\\\\uDC68\\\\u200D\\\\uD83D\\\\uDC68\\\\u200D\\\\uD83D\\\\uDC66\\\\u200D\\\\uD83D\\\\uDC66|\\\\uD83D\\\\uDC68\\\\u200D\\\\uD83D\\\\uDC69\\\\u200D\\\\uD83D\\\\uDC67\\\\u200D\\\\uD83D\\\\uDC66|\\\\uD83D\\\\uDC68\\\\u200D\\\\uD83D\\\\uDC69\\\\u200D\\\\uD83D\\\\uDC67\\\\u200D\\\\uD83D\\\\uDC67|\\\\uD83D\\\\uDC69\\\\u200D\\\\u2764\\\\uFE0F\\\\u200D\\\\uD83D\\\\uDC69|\\\\uD83D\\\\uDC68\\\\uD83D\\\\uDC69\\\\uD83D\\\\uDC67\\\\uD83D\\\\uDC66|\\\\uD83D\\\\uDC68\\\\uD83D\\\\uDC69\\\\uD83D\\\\uDC66\\\\uD83D\\\\uDC66|\\\\uD83D\\\\uDC69\\\\uD83D\\\\uDC69\\\\uD83D\\\\uDC66\\\\uD83D\\\\uDC66|\\\\uD83D\\\\uDC68\\\\uD83D\\\\uDC68\\\\uD83D\\\\uDC67\\\\uD83D\\\\uDC67|\\\\uD83D\\\\uDC69\\\\uD83D\\\\uDC69\\\\uD83D\\\\uDC67\\\\uD83D\\\\uDC66|\\\\uD83D\\\\uDC68\\\\uD83D\\\\uDC68\\\\uD83D\\\\uDC67\\\\uD83D\\\\uDC66|\\\\uD83D\\\\uDC69\\\\uD83D\\\\uDC69\\\\uD83D\\\\uDC67\\\\uD83D\\\\uDC67|\\\\uD83D\\\\uDC68\\\\uD83D\\\\uDC69\\\\uD83D\\\\uDC67\\\\uD83D\\\\uDC67|\\\\uD83D\\\\uDC68\\\\uD83D\\\\uDC68\\\\uD83D\\\\uDC66\\\\uD83D\\\\uDC66|\\\\uD83D\\\\uDC68\\\\u200D\\\\u2764\\\\uFE0F\\\\u200D\\\\uD83D\\\\uDC68|\\\\uD83D\\\\uDC69\\\\u200D\\\\uD83D\\\\uDC69\\\\u200D\\\\uD83D\\\\uDC67|\\\\uD83D\\\\uDC68\\\\u200D\\\\uD83D\\\\uDC68\\\\u200D\\\\uD83D\\\\uDC66|\\\\uD83D\\\\uDC69\\\\u200D\\\\uD83D\\\\uDC69\\\\u200D\\\\uD83D\\\\uDC66|\\\\uD83D\\\\uDC68\\\\u200D\\\\uD83D\\\\uDC68\\\\u200D\\\\uD83D\\\\uDC67|\\\\uD83D\\\\uDC68\\\\u200D\\\\uD83D\\\\uDC69\\\\u200D\\\\uD83D\\\\uDC67|\\\\uD83D\\\\uDC69\\\\u2764\\\\uD83D\\\\uDC8B\\\\uD83D\\\\uDC69|\\\\uD83D\\\\uDC68\\\\u2764\\\\uD83D\\\\uDC8B\\\\uD83D\\\\uDC68|\\\\uD83D\\\\uDC68\\\\uD83D\\\\uDC68\\\\uD83D\\\\uDC67|\\\\uD83D\\\\uDC68\\\\uD83D\\\\uDC68\\\\uD83D\\\\uDC66|\\\\uD83D\\\\uDC69\\\\uD83D\\\\uDC69\\\\uD83D\\\\uDC66|\\\\uD83D\\\\uDC69\\\\uD83D\\\\uDC69\\\\uD83D\\\\uDC67|\\\\uD83C\\\\uDFF3\\\\uFE0F\\\\u200D\\\\uD83C\\\\uDF08|\\\\uD83D\\\\uDC68\\\\uD83D\\\\uDC69\\\\uD83D\\\\uDC67|\\\\uD83D\\\\uDC68\\\\u2764\\\\uD83D\\\\uDC68|\\\\uD83D\\\\uDC41\\\\u200D\\\\uD83D\\\\uDDE8|\\\\uD83D\\\\uDC69\\\\u2764\\\\uD83D\\\\uDC69|\\\\uD83D\\\\uDC41\\\\uD83D\\\\uDDE8|\\\\uD83C\\\\uDDE6\\\\uD83C\\\\uDDE8|\\\\uD83C\\\\uDDE6\\\\uD83C\\\\uDDE9|\\\\uD83C\\\\uDDE6\\\\uD83C\\\\uDDEA|\\\\uD83C\\\\uDDE6\\\\uD83C\\\\uDDEB|\\\\uD83C\\\\uDDE6\\\\uD83C\\\\uDDEC|\\\\uD83C\\\\uDDE6\\\\uD83C\\\\uDDEE|\\\\uD83C\\\\uDDE6\\\\uD83C\\\\uDDF1|\\\\uD83C\\\\uDDE6\\\\uD83C\\\\uDDF2|\\\\uD83C\\\\uDDE6\\\\uD83C\\\\uDDF4|\\\\uD83C\\\\uDDE6\\\\uD83C\\\\uDDF6|\\\\uD83C\\\\uDDE6\\\\uD83C\\\\uDDF7|\\\\uD83C\\\\uDDE6\\\\uD83C\\\\uDDF8|\\\\uD83E\\\\uDD3E\\\\uD83C\\\\uDFFF|\\\\uD83E\\\\uDD3E\\\\uD83C\\\\uDFFE|\\\\uD83E\\\\uDD3E\\\\uD83C\\\\uDFFD|\\\\uD83E\\\\uDD3E\\\\uD83C\\\\uDFFC|\\\\uD83E\\\\uDD3E\\\\uD83C\\\\uDFFB|\\\\uD83E\\\\uDD3D\\\\uD83C\\\\uDFFF|\\\\uD83E\\\\uDD3D\\\\uD83C\\\\uDFFE|\\\\uD83E\\\\uDD3D\\\\uD83C\\\\uDFFD|\\\\uD83E\\\\uDD3D\\\\uD83C\\\\uDFFC|\\\\uD83E\\\\uDD3D\\\\uD83C\\\\uDFFB|\\\\uD83E\\\\uDD3C\\\\uD83C\\\\uDFFF|\\\\uD83E\\\\uDD3C\\\\uD83C\\\\uDFFE|\\\\uD83E\\\\uDD3C\\\\uD83C\\\\uDFFD|\\\\uD83E\\\\uDD3C\\\\uD83C\\\\uDFFC|\\\\uD83E\\\\uDD3C\\\\uD83C\\\\uDFFB|\\\\uD83E\\\\uDD39\\\\uD83C\\\\uDFFF|\\\\uD83E\\\\uDD39\\\\uD83C\\\\uDFFE|\\\\uD83E\\\\uDD39\\\\uD83C\\\\uDFFD|\\\\uD83E\\\\uDD39\\\\uD83C\\\\uDFFC|\\\\uD83E\\\\uDD39\\\\uD83C\\\\uDFFB|\\\\uD83E\\\\uDD38\\\\uD83C\\\\uDFFF|\\\\uD83E\\\\uDD38\\\\uD83C\\\\uDFFE|\\\\uD83E\\\\uDD38\\\\uD83C\\\\uDFFD|\\\\uD83E\\\\uDD38\\\\uD83C\\\\uDFFC|\\\\uD83E\\\\uDD38\\\\uD83C\\\\uDFFB|\\\\uD83E\\\\uDD37\\\\uD83C\\\\uDFFF|\\\\uD83E\\\\uDD37\\\\uD83C\\\\uDFFE|\\\\uD83E\\\\uDD37\\\\uD83C\\\\uDFFD|\\\\uD83E\\\\uDD37\\\\uD83C\\\\uDFFC|\\\\uD83E\\\\uDD37\\\\uD83C\\\\uDFFB|\\\\uD83E\\\\uDD36\\\\uD83C\\\\uDFFF|\\\\uD83E\\\\uDD36\\\\uD83C\\\\uDFFE|\\\\uD83E\\\\uDD36\\\\uD83C\\\\uDFFD|\\\\uD83E\\\\uDD36\\\\uD83C\\\\uDFFC|\\\\uD83E\\\\uDD36\\\\uD83C\\\\uDFFB|\\\\uD83E\\\\uDD35\\\\uD83C\\\\uDFFF|\\\\uD83E\\\\uDD35\\\\uD83C\\\\uDFFE|\\\\uD83E\\\\uDD35\\\\uD83C\\\\uDFFD|\\\\uD83E\\\\uDD35\\\\uD83C\\\\uDFFC|\\\\uD83E\\\\uDD35\\\\uD83C\\\\uDFFB|\\\\uD83E\\\\uDD34\\\\uD83C\\\\uDFFF|\\\\uD83E\\\\uDD34\\\\uD83C\\\\uDFFE|\\\\uD83E\\\\uDD34\\\\uD83C\\\\uDFFD|\\\\uD83E\\\\uDD34\\\\uD83C\\\\uDFFC|\\\\uD83E\\\\uDD34\\\\uD83C\\\\uDFFB|\\\\uD83E\\\\uDD33\\\\uD83C\\\\uDFFF|\\\\uD83E\\\\uDD33\\\\uD83C\\\\uDFFE|\\\\uD83E\\\\uDD33\\\\uD83C\\\\uDFFD|\\\\uD83E\\\\uDD33\\\\uD83C\\\\uDFFC|\\\\uD83E\\\\uDD33\\\\uD83C\\\\uDFFB|\\\\uD83E\\\\uDD30\\\\uD83C\\\\uDFFF|\\\\uD83E\\\\uDD30\\\\uD83C\\\\uDFFE|\\\\uD83E\\\\uDD30\\\\uD83C\\\\uDFFD|\\\\uD83E\\\\uDD30\\\\uD83C\\\\uDFFC|\\\\uD83E\\\\uDD30\\\\uD83C\\\\uDFFB|\\\\uD83E\\\\uDD26\\\\uD83C\\\\uDFFF|\\\\uD83E\\\\uDD26\\\\uD83C\\\\uDFFE|\\\\uD83E\\\\uDD26\\\\uD83C\\\\uDFFD|\\\\uD83E\\\\uDD26\\\\uD83C\\\\uDFFC|\\\\uD83E\\\\uDD26\\\\uD83C\\\\uDFFB|\\\\uD83E\\\\uDD1E\\\\uD83C\\\\uDFFF|\\\\uD83E\\\\uDD1E\\\\uD83C\\\\uDFFE|\\\\uD83E\\\\uDD1E\\\\uD83C\\\\uDFFD|\\\\uD83E\\\\uDD1E\\\\uD83C\\\\uDFFC|\\\\uD83E\\\\uDD1E\\\\uD83C\\\\uDFFB|\\\\uD83E\\\\uDD1D\\\\uD83C\\\\uDFFF|\\\\uD83E\\\\uDD1D\\\\uD83C\\\\uDFFE|\\\\uD83E\\\\uDD1D\\\\uD83C\\\\uDFFD|\\\\uD83E\\\\uDD1D\\\\uD83C\\\\uDFFC|\\\\uD83E\\\\uDD1D\\\\uD83C\\\\uDFFB|\\\\uD83E\\\\uDD1C\\\\uD83C\\\\uDFFF|\\\\uD83E\\\\uDD1C\\\\uD83C\\\\uDFFE|\\\\uD83E\\\\uDD1C\\\\uD83C\\\\uDFFD|\\\\uD83E\\\\uDD1C\\\\uD83C\\\\uDFFC|\\\\uD83E\\\\uDD1C\\\\uD83C\\\\uDFFB|\\\\uD83E\\\\uDD1B\\\\uD83C\\\\uDFFF|\\\\uD83E\\\\uDD1B\\\\uD83C\\\\uDFFE|\\\\uD83E\\\\uDD1B\\\\uD83C\\\\uDFFD|\\\\uD83E\\\\uDD1B\\\\uD83C\\\\uDFFC|\\\\uD83E\\\\uDD1B\\\\uD83C\\\\uDFFB|\\\\uD83E\\\\uDD1A\\\\uD83C\\\\uDFFF|\\\\uD83E\\\\uDD1A\\\\uD83C\\\\uDFFE|\\\\uD83E\\\\uDD1A\\\\uD83C\\\\uDFFD|\\\\uD83E\\\\uDD1A\\\\uD83C\\\\uDFFC|\\\\uD83E\\\\uDD1A\\\\uD83C\\\\uDFFB|\\\\uD83E\\\\uDD19\\\\uD83C\\\\uDFFF|\\\\uD83E\\\\uDD19\\\\uD83C\\\\uDFFE|\\\\uD83E\\\\uDD19\\\\uD83C\\\\uDFFD|\\\\uD83E\\\\uDD19\\\\uD83C\\\\uDFFC|\\\\uD83E\\\\uDD19\\\\uD83C\\\\uDFFB|\\\\uD83E\\\\uDD18\\\\uD83C\\\\uDFFF|\\\\uD83E\\\\uDD18\\\\uD83C\\\\uDFFE|\\\\uD83E\\\\uDD18\\\\uD83C\\\\uDFFD|\\\\uD83E\\\\uDD18\\\\uD83C\\\\uDFFC|\\\\uD83E\\\\uDD18\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDEC0\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDEC0\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDEC0\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDEC0\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDEC0\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDEB6\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDEB6\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDEB6\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDEB6\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDEB6\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDEB5\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDEB5\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDEB5\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDEB5\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDEB5\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDEB4\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDEB4\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDEB4\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDEB4\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDEB4\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDEA3\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDEA3\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDEA3\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDEA3\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDEA3\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDE4F\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDE4F\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDE4F\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDE4F\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDE4F\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDE4E\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDE4E\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDE4E\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDE4E\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDE4E\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDE4D\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDE4D\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDE4D\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDE4D\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDE4D\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDE4C\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDE4C\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDE4C\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDE4C\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDE4C\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDE4B\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDE4B\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDE4B\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDE4B\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDE4B\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDE47\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDE47\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDE47\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDE47\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDE47\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDE46\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDE46\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDE46\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDE46\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDE46\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDE45\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDE45\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDE45\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDE45\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDE45\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDD96\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDD96\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDD96\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDD96\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDD96\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDD95\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDD95\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDD95\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDD95\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDD95\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDD90\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDD90\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDD90\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDD90\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDD90\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDD7A\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDD7A\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDD7A\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDD7A\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDD7A\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDD75\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDD75\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDD75\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDD75\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDD75\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDCAA\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDCAA\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDCAA\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDCAA\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDCAA\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC87\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC87\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC87\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC87\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC87\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC86\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC86\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC86\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC86\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC86\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC85\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC85\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC85\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC85\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC85\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC83\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC83\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC83\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC83\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC83\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC82\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC82\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC82\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC82\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC82\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC81\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC81\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC81\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC81\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC81\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC7C\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC7C\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC7C\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC7C\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC7C\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC78\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC78\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC78\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC78\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC78\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC77\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC77\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC77\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC77\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC77\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC76\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC76\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC76\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC76\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC76\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC75\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC75\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC75\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC75\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC75\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC74\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC74\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC74\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC74\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC74\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC73\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC73\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC73\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC73\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC73\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC72\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC72\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC72\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC72\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC72\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC71\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC71\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC71\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC71\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC71\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC70\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC70\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC70\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC70\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC70\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC6E\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC6E\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC6E\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC6E\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC6E\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC69\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC69\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC69\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC69\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC69\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC68\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC68\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC68\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC68\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC68\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC67\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC67\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC67\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC67\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC67\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC66\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC66\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC66\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC66\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC66\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC50\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC50\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC50\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC50\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC50\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC4F\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC4F\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC4F\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC4F\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC4F\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC4E\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC4E\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC4E\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC4E\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC4E\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC4D\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC4D\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC4D\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC4D\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC4D\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC4C\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC4C\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC4C\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC4C\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC4C\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC4B\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC4B\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC4B\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC4B\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC4B\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC4A\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC4A\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC4A\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC4A\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC4A\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC49\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC49\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC49\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC49\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC49\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC48\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC48\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC48\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC48\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC48\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC47\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC47\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC47\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC47\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC47\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC46\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC46\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC46\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC46\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC46\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC43\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC43\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC43\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC43\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC43\\\\uD83C\\\\uDFFB|\\\\uD83D\\\\uDC42\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDC42\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDC42\\\\uD83C\\\\uDFFD|\\\\uD83D\\\\uDC42\\\\uD83C\\\\uDFFC|\\\\uD83D\\\\uDC42\\\\uD83C\\\\uDFFB|\\\\uD83C\\\\uDFCB\\\\uD83C\\\\uDFFF|\\\\uD83C\\\\uDFCB\\\\uD83C\\\\uDFFE|\\\\uD83C\\\\uDFF3\\\\uD83C\\\\uDF08|\\\\uD83C\\\\uDFCB\\\\uD83C\\\\uDFFC|\\\\uD83C\\\\uDFCB\\\\uD83C\\\\uDFFB|\\\\uD83C\\\\uDFCA\\\\uD83C\\\\uDFFF|\\\\uD83C\\\\uDFCA\\\\uD83C\\\\uDFFE|\\\\uD83C\\\\uDFCA\\\\uD83C\\\\uDFFD|\\\\uD83C\\\\uDFCA\\\\uD83C\\\\uDFFC|\\\\uD83C\\\\uDFCA\\\\uD83C\\\\uDFFB|\\\\uD83C\\\\uDFC7\\\\uD83C\\\\uDFFF|\\\\uD83C\\\\uDFC7\\\\uD83C\\\\uDFFE|\\\\uD83C\\\\uDFC7\\\\uD83C\\\\uDFFD|\\\\uD83C\\\\uDFC7\\\\uD83C\\\\uDFFC|\\\\uD83C\\\\uDFC7\\\\uD83C\\\\uDFFB|\\\\uD83C\\\\uDFC4\\\\uD83C\\\\uDFFF|\\\\uD83C\\\\uDFCB\\\\uD83C\\\\uDFFD|\\\\uD83C\\\\uDFC4\\\\uD83C\\\\uDFFD|\\\\uD83C\\\\uDFC4\\\\uD83C\\\\uDFFC|\\\\uD83C\\\\uDFC4\\\\uD83C\\\\uDFFB|\\\\uD83C\\\\uDFC3\\\\uD83C\\\\uDFFF|\\\\uD83C\\\\uDFC3\\\\uD83C\\\\uDFFE|\\\\uD83C\\\\uDFC3\\\\uD83C\\\\uDFFD|\\\\uD83C\\\\uDFC3\\\\uD83C\\\\uDFFC|\\\\uD83C\\\\uDFC3\\\\uD83C\\\\uDFFB|\\\\uD83C\\\\uDF85\\\\uD83C\\\\uDFFF|\\\\uD83C\\\\uDF85\\\\uD83C\\\\uDFFE|\\\\uD83C\\\\uDF85\\\\uD83C\\\\uDFFD|\\\\uD83C\\\\uDF85\\\\uD83C\\\\uDFFC|\\\\uD83C\\\\uDF85\\\\uD83C\\\\uDFFB|\\\\uD83C\\\\uDDFF\\\\uD83C\\\\uDDFC|\\\\uD83C\\\\uDDFF\\\\uD83C\\\\uDDF2|\\\\uD83C\\\\uDDFF\\\\uD83C\\\\uDDE6|\\\\uD83C\\\\uDDFE\\\\uD83C\\\\uDDF9|\\\\uD83C\\\\uDDFE\\\\uD83C\\\\uDDEA|\\\\uD83C\\\\uDDFD\\\\uD83C\\\\uDDF0|\\\\uD83C\\\\uDDFC\\\\uD83C\\\\uDDF8|\\\\uD83C\\\\uDDFC\\\\uD83C\\\\uDDEB|\\\\uD83C\\\\uDDFB\\\\uD83C\\\\uDDFA|\\\\uD83C\\\\uDDFB\\\\uD83C\\\\uDDF3|\\\\uD83C\\\\uDDFB\\\\uD83C\\\\uDDEE|\\\\uD83C\\\\uDDFB\\\\uD83C\\\\uDDEC|\\\\uD83C\\\\uDDFB\\\\uD83C\\\\uDDEA|\\\\uD83C\\\\uDDFB\\\\uD83C\\\\uDDE8|\\\\uD83C\\\\uDDFB\\\\uD83C\\\\uDDE6|\\\\uD83C\\\\uDDFA\\\\uD83C\\\\uDDFF|\\\\uD83C\\\\uDDFA\\\\uD83C\\\\uDDFE|\\\\uD83C\\\\uDDFA\\\\uD83C\\\\uDDF8|\\\\uD83C\\\\uDDFA\\\\uD83C\\\\uDDF2|\\\\uD83C\\\\uDDFA\\\\uD83C\\\\uDDEC|\\\\uD83C\\\\uDDFA\\\\uD83C\\\\uDDE6|\\\\uD83C\\\\uDDF9\\\\uD83C\\\\uDDFF|\\\\uD83C\\\\uDDF9\\\\uD83C\\\\uDDFC|\\\\uD83C\\\\uDDF9\\\\uD83C\\\\uDDFB|\\\\uD83C\\\\uDDF9\\\\uD83C\\\\uDDF9|\\\\uD83C\\\\uDDF9\\\\uD83C\\\\uDDF7|\\\\uD83C\\\\uDDF9\\\\uD83C\\\\uDDF4|\\\\uD83C\\\\uDDF9\\\\uD83C\\\\uDDF3|\\\\uD83C\\\\uDDF9\\\\uD83C\\\\uDDF2|\\\\uD83C\\\\uDDF9\\\\uD83C\\\\uDDF1|\\\\uD83C\\\\uDDF9\\\\uD83C\\\\uDDF0|\\\\uD83C\\\\uDDF9\\\\uD83C\\\\uDDEF|\\\\uD83C\\\\uDDF9\\\\uD83C\\\\uDDED|\\\\uD83C\\\\uDDF9\\\\uD83C\\\\uDDEC|\\\\uD83C\\\\uDDF9\\\\uD83C\\\\uDDEB|\\\\uD83C\\\\uDDF9\\\\uD83C\\\\uDDE9|\\\\uD83C\\\\uDDF9\\\\uD83C\\\\uDDE8|\\\\uD83C\\\\uDDF9\\\\uD83C\\\\uDDE6|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDFF|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDFE|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDFD|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDFB|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDF9|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDF8|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDF7|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDF4|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDF3|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDF2|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDF1|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDF0|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDEF|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDEE|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDED|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDEC|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDEA|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDE9|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDE8|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDE7|\\\\uD83C\\\\uDDF8\\\\uD83C\\\\uDDE6|\\\\uD83C\\\\uDDF7\\\\uD83C\\\\uDDFC|\\\\uD83C\\\\uDDF7\\\\uD83C\\\\uDDFA|\\\\uD83C\\\\uDDF7\\\\uD83C\\\\uDDF8|\\\\uD83C\\\\uDDF7\\\\uD83C\\\\uDDF4|\\\\uD83C\\\\uDDF7\\\\uD83C\\\\uDDEA|\\\\uD83C\\\\uDDF6\\\\uD83C\\\\uDDE6|\\\\uD83C\\\\uDDF5\\\\uD83C\\\\uDDFE|\\\\uD83C\\\\uDDF5\\\\uD83C\\\\uDDFC|\\\\uD83C\\\\uDDF5\\\\uD83C\\\\uDDF9|\\\\uD83C\\\\uDDF5\\\\uD83C\\\\uDDF8|\\\\uD83C\\\\uDDF5\\\\uD83C\\\\uDDF7|\\\\uD83C\\\\uDDF5\\\\uD83C\\\\uDDF3|\\\\uD83C\\\\uDDF5\\\\uD83C\\\\uDDF2|\\\\uD83C\\\\uDDF5\\\\uD83C\\\\uDDF1|\\\\uD83C\\\\uDDF5\\\\uD83C\\\\uDDF0|\\\\uD83C\\\\uDDF5\\\\uD83C\\\\uDDED|\\\\uD83C\\\\uDDF5\\\\uD83C\\\\uDDEC|\\\\uD83C\\\\uDDF5\\\\uD83C\\\\uDDEB|\\\\uD83C\\\\uDDF5\\\\uD83C\\\\uDDEA|\\\\uD83C\\\\uDDF5\\\\uD83C\\\\uDDE6|\\\\uD83C\\\\uDDF4\\\\uD83C\\\\uDDF2|\\\\uD83C\\\\uDDF3\\\\uD83C\\\\uDDFF|\\\\uD83C\\\\uDDF3\\\\uD83C\\\\uDDFA|\\\\uD83C\\\\uDDF3\\\\uD83C\\\\uDDF7|\\\\uD83C\\\\uDDF3\\\\uD83C\\\\uDDF5|\\\\uD83C\\\\uDDF3\\\\uD83C\\\\uDDF4|\\\\uD83C\\\\uDDF3\\\\uD83C\\\\uDDF1|\\\\uD83C\\\\uDDF3\\\\uD83C\\\\uDDEE|\\\\uD83C\\\\uDDF3\\\\uD83C\\\\uDDEC|\\\\uD83C\\\\uDDF3\\\\uD83C\\\\uDDEB|\\\\uD83C\\\\uDDF3\\\\uD83C\\\\uDDEA|\\\\uD83C\\\\uDDF3\\\\uD83C\\\\uDDE8|\\\\uD83C\\\\uDDF3\\\\uD83C\\\\uDDE6|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDFF|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDFE|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDFD|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDFC|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDFB|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDFA|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDF9|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDF8|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDF7|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDF6|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDF5|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDF4|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDF3|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDF2|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDF1|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDF0|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDED|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDEC|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDEB|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDEA|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDE9|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDE8|\\\\uD83C\\\\uDDF2\\\\uD83C\\\\uDDE6|\\\\uD83C\\\\uDDF1\\\\uD83C\\\\uDDFE|\\\\uD83C\\\\uDDF1\\\\uD83C\\\\uDDFB|\\\\uD83C\\\\uDDF1\\\\uD83C\\\\uDDFA|\\\\uD83C\\\\uDDF1\\\\uD83C\\\\uDDF9|\\\\uD83C\\\\uDDF1\\\\uD83C\\\\uDDF8|\\\\uD83C\\\\uDDF1\\\\uD83C\\\\uDDF7|\\\\uD83C\\\\uDDF1\\\\uD83C\\\\uDDF0|\\\\uD83C\\\\uDDF1\\\\uD83C\\\\uDDEE|\\\\uD83C\\\\uDDF1\\\\uD83C\\\\uDDE8|\\\\uD83C\\\\uDDF1\\\\uD83C\\\\uDDE7|\\\\uD83C\\\\uDDF1\\\\uD83C\\\\uDDE6|\\\\uD83C\\\\uDDF0\\\\uD83C\\\\uDDFF|\\\\uD83C\\\\uDDF0\\\\uD83C\\\\uDDFE|\\\\uD83C\\\\uDDF0\\\\uD83C\\\\uDDFC|\\\\uD83C\\\\uDDF0\\\\uD83C\\\\uDDF7|\\\\uD83C\\\\uDDF0\\\\uD83C\\\\uDDF5|\\\\uD83C\\\\uDDF0\\\\uD83C\\\\uDDF3|\\\\uD83C\\\\uDDF0\\\\uD83C\\\\uDDF2|\\\\uD83C\\\\uDDF0\\\\uD83C\\\\uDDEE|\\\\uD83C\\\\uDDF0\\\\uD83C\\\\uDDED|\\\\uD83C\\\\uDDF0\\\\uD83C\\\\uDDEC|\\\\uD83C\\\\uDDF0\\\\uD83C\\\\uDDEA|\\\\uD83C\\\\uDDEF\\\\uD83C\\\\uDDF5|\\\\uD83C\\\\uDDEF\\\\uD83C\\\\uDDF4|\\\\uD83C\\\\uDDEF\\\\uD83C\\\\uDDF2|\\\\uD83C\\\\uDDEF\\\\uD83C\\\\uDDEA|\\\\uD83C\\\\uDDEE\\\\uD83C\\\\uDDF9|\\\\uD83C\\\\uDDEE\\\\uD83C\\\\uDDF8|\\\\uD83C\\\\uDDEE\\\\uD83C\\\\uDDF7|\\\\uD83C\\\\uDDEE\\\\uD83C\\\\uDDF6|\\\\uD83C\\\\uDDEE\\\\uD83C\\\\uDDF4|\\\\uD83C\\\\uDDEE\\\\uD83C\\\\uDDF3|\\\\uD83C\\\\uDDEE\\\\uD83C\\\\uDDF2|\\\\uD83C\\\\uDDEE\\\\uD83C\\\\uDDF1|\\\\uD83C\\\\uDDEE\\\\uD83C\\\\uDDEA|\\\\uD83C\\\\uDDEE\\\\uD83C\\\\uDDE9|\\\\uD83C\\\\uDDEE\\\\uD83C\\\\uDDE8|\\\\uD83C\\\\uDDED\\\\uD83C\\\\uDDFA|\\\\uD83C\\\\uDDED\\\\uD83C\\\\uDDF9|\\\\uD83C\\\\uDDED\\\\uD83C\\\\uDDF7|\\\\uD83C\\\\uDDED\\\\uD83C\\\\uDDF3|\\\\uD83C\\\\uDDED\\\\uD83C\\\\uDDF2|\\\\uD83C\\\\uDDED\\\\uD83C\\\\uDDF0|\\\\uD83C\\\\uDDEC\\\\uD83C\\\\uDDFE|\\\\uD83C\\\\uDDEC\\\\uD83C\\\\uDDFC|\\\\uD83C\\\\uDDEC\\\\uD83C\\\\uDDFA|\\\\uD83C\\\\uDDEC\\\\uD83C\\\\uDDF9|\\\\uD83C\\\\uDDEC\\\\uD83C\\\\uDDF8|\\\\uD83C\\\\uDDEC\\\\uD83C\\\\uDDF7|\\\\uD83C\\\\uDDEC\\\\uD83C\\\\uDDF6|\\\\uD83C\\\\uDDEC\\\\uD83C\\\\uDDF5|\\\\uD83C\\\\uDDEC\\\\uD83C\\\\uDDF3|\\\\uD83C\\\\uDDEC\\\\uD83C\\\\uDDF2|\\\\uD83C\\\\uDDEC\\\\uD83C\\\\uDDF1|\\\\uD83C\\\\uDDEC\\\\uD83C\\\\uDDEE|\\\\uD83C\\\\uDDEC\\\\uD83C\\\\uDDED|\\\\uD83C\\\\uDDEC\\\\uD83C\\\\uDDEC|\\\\uD83C\\\\uDDEC\\\\uD83C\\\\uDDEB|\\\\uD83C\\\\uDDEC\\\\uD83C\\\\uDDEA|\\\\uD83C\\\\uDDEC\\\\uD83C\\\\uDDE9|\\\\uD83C\\\\uDDEC\\\\uD83C\\\\uDDE7|\\\\uD83C\\\\uDDEC\\\\uD83C\\\\uDDE6|\\\\uD83C\\\\uDDEB\\\\uD83C\\\\uDDF7|\\\\uD83C\\\\uDDEB\\\\uD83C\\\\uDDF4|\\\\uD83C\\\\uDDEB\\\\uD83C\\\\uDDF2|\\\\uD83C\\\\uDDEB\\\\uD83C\\\\uDDF0|\\\\uD83C\\\\uDDEB\\\\uD83C\\\\uDDEF|\\\\uD83C\\\\uDDEB\\\\uD83C\\\\uDDEE|\\\\uD83C\\\\uDDEA\\\\uD83C\\\\uDDFA|\\\\uD83C\\\\uDDEA\\\\uD83C\\\\uDDF9|\\\\uD83C\\\\uDDEA\\\\uD83C\\\\uDDF8|\\\\uD83C\\\\uDDEA\\\\uD83C\\\\uDDF7|\\\\uD83C\\\\uDDEA\\\\uD83C\\\\uDDED|\\\\uD83C\\\\uDDEA\\\\uD83C\\\\uDDEC|\\\\uD83C\\\\uDDEA\\\\uD83C\\\\uDDEA|\\\\uD83C\\\\uDDEA\\\\uD83C\\\\uDDE8|\\\\uD83C\\\\uDDEA\\\\uD83C\\\\uDDE6|\\\\uD83C\\\\uDDE9\\\\uD83C\\\\uDDFF|\\\\uD83C\\\\uDDE9\\\\uD83C\\\\uDDF4|\\\\uD83C\\\\uDDE9\\\\uD83C\\\\uDDF2|\\\\uD83C\\\\uDDE9\\\\uD83C\\\\uDDF0|\\\\uD83C\\\\uDDE9\\\\uD83C\\\\uDDEF|\\\\uD83C\\\\uDDE9\\\\uD83C\\\\uDDEC|\\\\uD83C\\\\uDDE9\\\\uD83C\\\\uDDEA|\\\\uD83C\\\\uDDE8\\\\uD83C\\\\uDDFF|\\\\uD83C\\\\uDDE8\\\\uD83C\\\\uDDFE|\\\\uD83C\\\\uDDE8\\\\uD83C\\\\uDDFD|\\\\uD83C\\\\uDDE8\\\\uD83C\\\\uDDFC|\\\\uD83C\\\\uDDE8\\\\uD83C\\\\uDDFB|\\\\uD83C\\\\uDDE8\\\\uD83C\\\\uDDFA|\\\\uD83C\\\\uDDE8\\\\uD83C\\\\uDDF7|\\\\uD83C\\\\uDDE8\\\\uD83C\\\\uDDF5|\\\\uD83C\\\\uDDE8\\\\uD83C\\\\uDDF4|\\\\uD83C\\\\uDDE8\\\\uD83C\\\\uDDF3|\\\\uD83C\\\\uDDE8\\\\uD83C\\\\uDDF2|\\\\uD83C\\\\uDDE8\\\\uD83C\\\\uDDF1|\\\\uD83C\\\\uDDE8\\\\uD83C\\\\uDDF0|\\\\uD83C\\\\uDDE8\\\\uD83C\\\\uDDEE|\\\\uD83C\\\\uDDE8\\\\uD83C\\\\uDDED|\\\\uD83C\\\\uDDE8\\\\uD83C\\\\uDDEC|\\\\uD83C\\\\uDDE8\\\\uD83C\\\\uDDEB|\\\\uD83C\\\\uDDE8\\\\uD83C\\\\uDDE9|\\\\uD83C\\\\uDDE8\\\\uD83C\\\\uDDE8|\\\\uD83C\\\\uDDE8\\\\uD83C\\\\uDDE6|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDFF|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDFE|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDFC|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDFB|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDF9|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDF8|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDF7|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDF6|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDF4|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDF3|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDF2|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDF1|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDEF|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDEE|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDED|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDEC|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDEB|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDEA|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDE9|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDE7|\\\\uD83C\\\\uDDE7\\\\uD83C\\\\uDDE6|\\\\uD83C\\\\uDDE6\\\\uD83C\\\\uDDFF|\\\\uD83C\\\\uDDE6\\\\uD83C\\\\uDDFD|\\\\uD83C\\\\uDDE6\\\\uD83C\\\\uDDFC|\\\\uD83C\\\\uDDE6\\\\uD83C\\\\uDDFA|\\\\uD83C\\\\uDDE6\\\\uD83C\\\\uDDF9|\\\\uD83C\\\\uDFC4\\\\uD83C\\\\uDFFE|\\\\uD83D\\\\uDDE3\\\\uFE0F|\\\\u26F9\\\\uD83C\\\\uDFFF|\\\\u26F9\\\\uD83C\\\\uDFFE|\\\\u26F9\\\\uD83C\\\\uDFFD|\\\\u26F9\\\\uD83C\\\\uDFFC|\\\\u26F9\\\\uD83C\\\\uDFFB|\\\\u270D\\\\uD83C\\\\uDFFF|\\\\u270D\\\\uD83C\\\\uDFFE|\\\\u270D\\\\uD83C\\\\uDFFD|\\\\u270D\\\\uD83C\\\\uDFFC|\\\\u270D\\\\uD83C\\\\uDFFB|\\\\uD83C\\\\uDC04\\\\uFE0F|\\\\uD83C\\\\uDD7F\\\\uFE0F|\\\\uD83C\\\\uDE02\\\\uFE0F|\\\\uD83C\\\\uDE1A\\\\uFE0F|\\\\uD83C\\\\uDE2F\\\\uFE0F|\\\\uD83C\\\\uDE37\\\\uFE0F|\\\\uD83C\\\\uDF9E\\\\uFE0F|\\\\uD83C\\\\uDF9F\\\\uFE0F|\\\\uD83C\\\\uDFCB\\\\uFE0F|\\\\uD83C\\\\uDFCC\\\\uFE0F|\\\\uD83C\\\\uDFCD\\\\uFE0F|\\\\uD83C\\\\uDFCE\\\\uFE0F|\\\\uD83C\\\\uDF96\\\\uFE0F|\\\\uD83C\\\\uDF97\\\\uFE0F|\\\\uD83C\\\\uDF36\\\\uFE0F|\\\\uD83C\\\\uDF27\\\\uFE0F|\\\\uD83C\\\\uDF28\\\\uFE0F|\\\\uD83C\\\\uDF29\\\\uFE0F|\\\\uD83C\\\\uDF2A\\\\uFE0F|\\\\uD83C\\\\uDF2B\\\\uFE0F|\\\\uD83C\\\\uDF2C\\\\uFE0F|\\\\uD83D\\\\uDC3F\\\\uFE0F|\\\\uD83D\\\\uDD77\\\\uFE0F|\\\\uD83D\\\\uDD78\\\\uFE0F|\\\\uD83C\\\\uDF21\\\\uFE0F|\\\\uD83C\\\\uDF99\\\\uFE0F|\\\\uD83C\\\\uDF9A\\\\uFE0F|\\\\uD83C\\\\uDF9B\\\\uFE0F|\\\\uD83C\\\\uDFF3\\\\uFE0F|\\\\uD83C\\\\uDFF5\\\\uFE0F|\\\\uD83C\\\\uDFF7\\\\uFE0F|\\\\uD83D\\\\uDCFD\\\\uFE0F|\\\\uD83D\\\\uDD49\\\\uFE0F|\\\\uD83D\\\\uDD4A\\\\uFE0F|\\\\uD83D\\\\uDD6F\\\\uFE0F|\\\\uD83D\\\\uDD70\\\\uFE0F|\\\\uD83D\\\\uDD73\\\\uFE0F|\\\\uD83D\\\\uDD76\\\\uFE0F|\\\\uD83D\\\\uDD79\\\\uFE0F|\\\\uD83D\\\\uDD87\\\\uFE0F|\\\\uD83D\\\\uDD8A\\\\uFE0F|\\\\uD83D\\\\uDD8B\\\\uFE0F|\\\\uD83D\\\\uDD8C\\\\uFE0F|\\\\uD83D\\\\uDD8D\\\\uFE0F|\\\\uD83D\\\\uDDA5\\\\uFE0F|\\\\uD83D\\\\uDDA8\\\\uFE0F|\\\\uD83D\\\\uDDB2\\\\uFE0F|\\\\uD83D\\\\uDDBC\\\\uFE0F|\\\\uD83D\\\\uDDC2\\\\uFE0F|\\\\uD83D\\\\uDDC3\\\\uFE0F|\\\\uD83D\\\\uDDC4\\\\uFE0F|\\\\uD83D\\\\uDDD1\\\\uFE0F|\\\\uD83D\\\\uDDD2\\\\uFE0F|\\\\uD83D\\\\uDDD3\\\\uFE0F|\\\\uD83D\\\\uDDDC\\\\uFE0F|\\\\uD83D\\\\uDDDD\\\\uFE0F|\\\\uD83D\\\\uDDDE\\\\uFE0F|\\\\uD83D\\\\uDDE1\\\\uFE0F|\\\\u270B\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDDE8\\\\uFE0F|\\\\uD83D\\\\uDDEF\\\\uFE0F|\\\\uD83D\\\\uDDF3\\\\uFE0F|\\\\uD83D\\\\uDDFA\\\\uFE0F|\\\\uD83D\\\\uDEE0\\\\uFE0F|\\\\uD83D\\\\uDEE1\\\\uFE0F|\\\\uD83D\\\\uDEE2\\\\uFE0F|\\\\uD83D\\\\uDEF0\\\\uFE0F|\\\\uD83C\\\\uDF7D\\\\uFE0F|\\\\uD83D\\\\uDC41\\\\uFE0F|\\\\uD83D\\\\uDD74\\\\uFE0F|\\\\uD83D\\\\uDD75\\\\uFE0F|\\\\uD83D\\\\uDD90\\\\uFE0F|\\\\uD83C\\\\uDFD4\\\\uFE0F|\\\\uD83C\\\\uDFD5\\\\uFE0F|\\\\uD83C\\\\uDFD6\\\\uFE0F|\\\\uD83C\\\\uDFD7\\\\uFE0F|\\\\uD83C\\\\uDFD8\\\\uFE0F|\\\\uD83C\\\\uDFD9\\\\uFE0F|\\\\uD83C\\\\uDFDA\\\\uFE0F|\\\\uD83C\\\\uDFDB\\\\uFE0F|\\\\uD83C\\\\uDFDC\\\\uFE0F|\\\\uD83C\\\\uDFDD\\\\uFE0F|\\\\uD83C\\\\uDFDE\\\\uFE0F|\\\\uD83C\\\\uDFDF\\\\uFE0F|\\\\uD83D\\\\uDECB\\\\uFE0F|\\\\uD83D\\\\uDECD\\\\uFE0F|\\\\uD83D\\\\uDECE\\\\uFE0F|\\\\uD83D\\\\uDECF\\\\uFE0F|\\\\uD83D\\\\uDEE3\\\\uFE0F|\\\\uD83D\\\\uDEE4\\\\uFE0F|\\\\uD83D\\\\uDEE5\\\\uFE0F|\\\\uD83D\\\\uDEE9\\\\uFE0F|\\\\uD83D\\\\uDEF3\\\\uFE0F|\\\\uD83C\\\\uDF24\\\\uFE0F|\\\\uD83C\\\\uDF25\\\\uFE0F|\\\\uD83C\\\\uDF26\\\\uFE0F|\\\\uD83D\\\\uDDB1\\\\uFE0F|\\\\u261D\\\\uD83C\\\\uDFFB|\\\\u261D\\\\uD83C\\\\uDFFC|\\\\u261D\\\\uD83C\\\\uDFFD|\\\\u261D\\\\uD83C\\\\uDFFE|\\\\u261D\\\\uD83C\\\\uDFFF|\\\\u270C\\\\uD83C\\\\uDFFB|\\\\u270C\\\\uD83C\\\\uDFFC|\\\\u270C\\\\uD83C\\\\uDFFD|\\\\u270C\\\\uD83C\\\\uDFFE|\\\\u270C\\\\uD83C\\\\uDFFF|\\\\u270A\\\\uD83C\\\\uDFFB|\\\\u270A\\\\uD83C\\\\uDFFC|\\\\u270A\\\\uD83C\\\\uDFFD|\\\\u270A\\\\uD83C\\\\uDFFE|\\\\u270A\\\\uD83C\\\\uDFFF|\\\\u270B\\\\uD83C\\\\uDFFB|\\\\u270B\\\\uD83C\\\\uDFFC|\\\\u270B\\\\uD83C\\\\uDFFD|\\\\u270B\\\\uD83C\\\\uDFFE|\\\\4\\\\uFE0F\\\\u20E3|\\\\9\\\\uFE0F\\\\u20E3|\\\\0\\\\uFE0F\\\\u20E3|\\\\1\\\\uFE0F\\\\u20E3|\\\\2\\\\uFE0F\\\\u20E3|\\\\3\\\\uFE0F\\\\u20E3|\\\\#\\\\uFE0F\\\\u20E3|\\\\5\\\\uFE0F\\\\u20E3|\\\\6\\\\uFE0F\\\\u20E3|\\\\7\\\\uFE0F\\\\u20E3|\\\\8\\\\uFE0F\\\\u20E3|\\\\*\\\\uFE0F\\\\u20E3|\\\\uD83D\\\\uDDE1|\\\\uD83D\\\\uDD77|\\\\uD83D\\\\uDDE3|\\\\uD83D\\\\uDEE4|\\\\uD83D\\\\uDDE8|\\\\uD83D\\\\uDD78|\\\\uD83D\\\\uDDEF|\\\\uD83C\\\\uDE37|\\\\uD83D\\\\uDDF3|\\\\uD83C\\\\uDF21|\\\\uD83D\\\\uDDFA|\\\\uD83D\\\\uDDB1|\\\\uD83D\\\\uDEE0|\\\\uD83C\\\\uDF99|\\\\uD83D\\\\uDEE1|\\\\uD83C\\\\uDF9E|\\\\uD83D\\\\uDEE2|\\\\uD83C\\\\uDF9A|\\\\uD83D\\\\uDEF0|\\\\uD83D\\\\uDEE3|\\\\uD83C\\\\uDF7D|\\\\uD83C\\\\uDF9B|\\\\uD83D\\\\uDC41|\\\\uD83C\\\\uDF9F|\\\\uD83D\\\\uDD74|\\\\uD83C\\\\uDFF3|\\\\uD83D\\\\uDD75|\\\\uD83D\\\\uDEF3|\\\\uD83D\\\\uDD90|\\\\uD83C\\\\uDFF5|\\\\uD83C\\\\uDFD4|\\\\uD83C\\\\uDFCB|\\\\uD83C\\\\uDFD5|\\\\uD83C\\\\uDFF7|\\\\uD83C\\\\uDFD6|\\\\uD83D\\\\uDECF|\\\\uD83C\\\\uDFD7|\\\\uD83D\\\\uDCFD|\\\\uD83C\\\\uDFD8|\\\\uD83C\\\\uDFCC|\\\\uD83C\\\\uDFD9|\\\\uD83D\\\\uDD49|\\\\uD83C\\\\uDFDA|\\\\uD83C\\\\uDF25|\\\\uD83C\\\\uDFDB|\\\\uD83D\\\\uDD4A|\\\\uD83C\\\\uDFDC|\\\\uD83C\\\\uDFCD|\\\\uD83C\\\\uDFDD|\\\\uD83D\\\\uDD6F|\\\\uD83C\\\\uDFDE|\\\\uD83D\\\\uDECE|\\\\uD83C\\\\uDFDF|\\\\uD83D\\\\uDD70|\\\\uD83D\\\\uDECB|\\\\uD83C\\\\uDFCE|\\\\uD83D\\\\uDECD|\\\\uD83D\\\\uDD73|\\\\uD83D\\\\uDECE|\\\\uD83D\\\\uDEE9|\\\\uD83D\\\\uDECF|\\\\uD83D\\\\uDD76|\\\\uD83D\\\\uDEE3|\\\\uD83C\\\\uDF96|\\\\uD83D\\\\uDEE4|\\\\uD83D\\\\uDD79|\\\\uD83D\\\\uDEE5|\\\\uD83D\\\\uDECD|\\\\uD83D\\\\uDEE9|\\\\uD83D\\\\uDD87|\\\\uD83D\\\\uDEF3|\\\\uD83C\\\\uDF97|\\\\uD83C\\\\uDF24|\\\\uD83D\\\\uDD8A|\\\\uD83C\\\\uDF25|\\\\uD83C\\\\uDC04|\\\\uD83C\\\\uDF26|\\\\uD83D\\\\uDD8B|\\\\uD83D\\\\uDDB1|\\\\uD83C\\\\uDF36|\\\\uD83D\\\\uDD8C|\\\\uD83C\\\\uDF26|\\\\uD83D\\\\uDD8D|\\\\uD83C\\\\uDF27|\\\\uD83D\\\\uDDA5|\\\\uD83C\\\\uDD7F|\\\\uD83D\\\\uDDA8|\\\\uD83C\\\\uDF28|\\\\uD83D\\\\uDDB2|\\\\uD83D\\\\uDECB|\\\\uD83D\\\\uDDBC|\\\\uD83C\\\\uDF29|\\\\uD83D\\\\uDDC2|\\\\uD83C\\\\uDE02|\\\\uD83D\\\\uDDC3|\\\\uD83C\\\\uDF2A|\\\\uD83D\\\\uDDC4|\\\\uD83D\\\\uDEE5|\\\\uD83D\\\\uDDD1|\\\\uD83C\\\\uDF2B|\\\\uD83D\\\\uDDD2|\\\\uD83C\\\\uDE1A|\\\\uD83D\\\\uDDD3|\\\\uD83C\\\\uDF2C|\\\\uD83D\\\\uDDDC|\\\\uD83C\\\\uDF24|\\\\uD83D\\\\uDDDD|\\\\uD83D\\\\uDC3F|\\\\uD83D\\\\uDDDE|\\\\u00A9\\\\uFE0F|\\\\uD83C\\\\uDFDF|\\\\u00AE\\\\uFE0F|\\\\uD83C\\\\uDFDE|\\\\u203C\\\\uFE0F|\\\\uD83C\\\\uDFDD|\\\\u2049\\\\uFE0F|\\\\uD83C\\\\uDFDC|\\\\u2122\\\\uFE0F|\\\\uD83C\\\\uDFDB|\\\\u2139\\\\uFE0F|\\\\uD83C\\\\uDFDA|\\\\u2194\\\\uFE0F|\\\\uD83C\\\\uDFD9|\\\\u2195\\\\uFE0F|\\\\uD83C\\\\uDFD8|\\\\u2196\\\\uFE0F|\\\\uD83C\\\\uDFD7|\\\\u2197\\\\uFE0F|\\\\uD83C\\\\uDFD6|\\\\u2198\\\\uFE0F|\\\\uD83C\\\\uDFD5|\\\\u2199\\\\uFE0F|\\\\uD83C\\\\uDFD4|\\\\u21A9\\\\uFE0F|\\\\uD83D\\\\uDD90|\\\\u21AA\\\\uFE0F|\\\\uD83D\\\\uDD75|\\\\u231A\\\\uFE0F|\\\\uD83D\\\\uDD74|\\\\u231B\\\\uFE0F|\\\\uD83D\\\\uDC41|\\\\u24C2\\\\uFE0F|\\\\uD83C\\\\uDF7D|\\\\u25AA\\\\uFE0F|\\\\uD83D\\\\uDEF0|\\\\u25AB\\\\uFE0F|\\\\uD83D\\\\uDEE2|\\\\u25B6\\\\uFE0F|\\\\uD83D\\\\uDEE1|\\\\u25C0\\\\uFE0F|\\\\uD83D\\\\uDEE0|\\\\u25FB\\\\uFE0F|\\\\uD83D\\\\uDDFA|\\\\u25FC\\\\uFE0F|\\\\uD83D\\\\uDDF3|\\\\u25FD\\\\uFE0F|\\\\uD83D\\\\uDDEF|\\\\u25FE\\\\uFE0F|\\\\uD83D\\\\uDDE8|\\\\u2600\\\\uFE0F|\\\\uD83D\\\\uDDE3|\\\\u2601\\\\uFE0F|\\\\uD83D\\\\uDDE1|\\\\u260E\\\\uFE0F|\\\\uD83D\\\\uDDDE|\\\\u2611\\\\uFE0F|\\\\uD83D\\\\uDDDD|\\\\u2614\\\\uFE0F|\\\\uD83D\\\\uDDDC|\\\\u2615\\\\uFE0F|\\\\uD83D\\\\uDDD3|\\\\u261D\\\\uFE0F|\\\\uD83D\\\\uDDD2|\\\\u263A\\\\uFE0F|\\\\uD83D\\\\uDDD1|\\\\u2648\\\\uFE0F|\\\\uD83D\\\\uDDC4|\\\\u2649\\\\uFE0F|\\\\uD83D\\\\uDDC3|\\\\u264A\\\\uFE0F|\\\\uD83D\\\\uDDC2|\\\\u264B\\\\uFE0F|\\\\uD83D\\\\uDDBC|\\\\u264C\\\\uFE0F|\\\\uD83D\\\\uDDB2|\\\\u264D\\\\uFE0F|\\\\uD83D\\\\uDDA8|\\\\u264E\\\\uFE0F|\\\\uD83D\\\\uDDA5|\\\\u264F\\\\uFE0F|\\\\uD83D\\\\uDD8D|\\\\u2650\\\\uFE0F|\\\\uD83D\\\\uDD8C|\\\\u2651\\\\uFE0F|\\\\uD83D\\\\uDD8B|\\\\u2652\\\\uFE0F|\\\\uD83D\\\\uDD8A|\\\\u2653\\\\uFE0F|\\\\uD83D\\\\uDD87|\\\\u2660\\\\uFE0F|\\\\uD83D\\\\uDD79|\\\\u2663\\\\uFE0F|\\\\uD83D\\\\uDD76|\\\\u2665\\\\uFE0F|\\\\uD83D\\\\uDD73|\\\\u2666\\\\uFE0F|\\\\uD83D\\\\uDD70|\\\\u2668\\\\uFE0F|\\\\uD83D\\\\uDD6F|\\\\u267B\\\\uFE0F|\\\\uD83D\\\\uDD4A|\\\\u267F\\\\uFE0F|\\\\uD83D\\\\uDD49|\\\\u2693\\\\uFE0F|\\\\uD83D\\\\uDCFD|\\\\u26A0\\\\uFE0F|\\\\uD83C\\\\uDFF7|\\\\u26A1\\\\uFE0F|\\\\uD83C\\\\uDFF5|\\\\u26AA\\\\uFE0F|\\\\uD83C\\\\uDFF3|\\\\u26AB\\\\uFE0F|\\\\uD83C\\\\uDF9B|\\\\u26BD\\\\uFE0F|\\\\uD83C\\\\uDF9A|\\\\u26BE\\\\uFE0F|\\\\uD83C\\\\uDF99|\\\\u26C4\\\\uFE0F|\\\\uD83C\\\\uDF21|\\\\u26C5\\\\uFE0F|\\\\uD83D\\\\uDD78|\\\\u26D4\\\\uFE0F|\\\\uD83D\\\\uDD77|\\\\u26EA\\\\uFE0F|\\\\uD83D\\\\uDC3F|\\\\uD83C\\\\uDE2F|\\\\uD83C\\\\uDF2C|\\\\u26F3\\\\uFE0F|\\\\uD83C\\\\uDF2B|\\\\u26F5\\\\uFE0F|\\\\uD83C\\\\uDF2A|\\\\u26FA\\\\uFE0F|\\\\uD83C\\\\uDF29|\\\\u26FD\\\\uFE0F|\\\\uD83C\\\\uDF28|\\\\u2702\\\\uFE0F|\\\\uD83C\\\\uDF27|\\\\u2708\\\\uFE0F|\\\\uD83C\\\\uDF36|\\\\u2709\\\\uFE0F|\\\\uD83C\\\\uDF97|\\\\u270C\\\\uFE0F|\\\\uD83C\\\\uDF96|\\\\u270F\\\\uFE0F|\\\\uD83C\\\\uDFCE|\\\\u2712\\\\uFE0F|\\\\uD83C\\\\uDFCD|\\\\u2714\\\\uFE0F|\\\\uD83C\\\\uDFCC|\\\\u2716\\\\uFE0F|\\\\uD83C\\\\uDFCB|\\\\u2733\\\\uFE0F|\\\\uD83C\\\\uDF9F|\\\\u2734\\\\uFE0F|\\\\uD83C\\\\uDF9E|\\\\u2744\\\\uFE0F|\\\\uD83C\\\\uDE37|\\\\u2747\\\\uFE0F|\\\\uD83C\\\\uDE2F|\\\\u2757\\\\uFE0F|\\\\uD83C\\\\uDE1A|\\\\u2764\\\\uFE0F|\\\\uD83C\\\\uDE02|\\\\u27A1\\\\uFE0F|\\\\uD83C\\\\uDD7F|\\\\u2934\\\\uFE0F|\\\\uD83C\\\\uDC04|\\\\u2935\\\\uFE0F|\\\\uD83C\\\\uDDE6|\\\\u2B05\\\\uFE0F|\\\\uD83C\\\\uDDE7|\\\\u2B06\\\\uFE0F|\\\\uD83C\\\\uDDE8|\\\\u2B07\\\\uFE0F|\\\\uD83C\\\\uDDE9|\\\\u2B1B\\\\uFE0F|\\\\uD83C\\\\uDDEA|\\\\u2B1C\\\\uFE0F|\\\\uD83C\\\\uDDEB|\\\\u2B50\\\\uFE0F|\\\\uD83C\\\\uDDEC|\\\\u2B55\\\\uFE0F|\\\\uD83C\\\\uDDED|\\\\u3030\\\\uFE0F|\\\\uD83C\\\\uDDEE|\\\\u303D\\\\uFE0F|\\\\uD83C\\\\uDDEF|\\\\u3297\\\\uFE0F|\\\\uD83C\\\\uDDF0|\\\\u3299\\\\uFE0F|\\\\uD83C\\\\uDDF1|\\\\u271D\\\\uFE0F|\\\\uD83C\\\\uDDF2|\\\\u2328\\\\uFE0F|\\\\uD83C\\\\uDDF3|\\\\u270D\\\\uFE0F|\\\\uD83C\\\\uDDF4|\\\\u23CF\\\\uFE0F|\\\\uD83C\\\\uDDF5|\\\\u23ED\\\\uFE0F|\\\\uD83C\\\\uDDF6|\\\\u23EE\\\\uFE0F|\\\\uD83C\\\\uDDF7|\\\\u23EF\\\\uFE0F|\\\\uD83C\\\\uDDF8|\\\\u23F1\\\\uFE0F|\\\\uD83C\\\\uDDF9|\\\\u23F2\\\\uFE0F|\\\\uD83C\\\\uDDFA|\\\\u23F8\\\\uFE0F|\\\\uD83C\\\\uDDFB|\\\\u23F9\\\\uFE0F|\\\\uD83C\\\\uDDFC|\\\\u23FA\\\\uFE0F|\\\\uD83E\\\\uDD5E|\\\\u2602\\\\uFE0F|\\\\uD83E\\\\uDD5D|\\\\u2603\\\\uFE0F|\\\\uD83E\\\\uDD5C|\\\\u2604\\\\uFE0F|\\\\uD83E\\\\uDD5B|\\\\u2618\\\\uFE0F|\\\\uD83E\\\\uDD5A|\\\\u2620\\\\uFE0F|\\\\uD83E\\\\uDD91|\\\\u2622\\\\uFE0F|\\\\uD83E\\\\uDD90|\\\\u2623\\\\uFE0F|\\\\uD83E\\\\uDD41|\\\\u2626\\\\uFE0F|\\\\uD83C\\\\uDFF8|\\\\u262A\\\\uFE0F|\\\\uD83C\\\\uDFD3|\\\\u262E\\\\uFE0F|\\\\uD83C\\\\uDFD2|\\\\u262F\\\\uFE0F|\\\\uD83C\\\\uDFD1|\\\\u2638\\\\uFE0F|\\\\uD83C\\\\uDFD0|\\\\u2639\\\\uFE0F|\\\\uD83C\\\\uDFCF|\\\\u2692\\\\uFE0F|\\\\uD83D\\\\uDCFF|\\\\u2694\\\\uFE0F|\\\\uD83D\\\\uDD4E|\\\\u2696\\\\uFE0F|\\\\uD83D\\\\uDD4D|\\\\u2697\\\\uFE0F|\\\\uD83D\\\\uDD4C|\\\\u2699\\\\uFE0F|\\\\uD83D\\\\uDD4B|\\\\u269B\\\\uFE0F|\\\\uD83D\\\\uDED0|\\\\u269C\\\\uFE0F|\\\\uD83C\\\\uDFFA|\\\\u26B0\\\\uFE0F|\\\\uD83C\\\\uDFF9|\\\\u26B1\\\\uFE0F|\\\\uD83C\\\\uDF7E|\\\\u26C8\\\\uFE0F|\\\\uD83C\\\\uDF7F|\\\\u26CF\\\\uFE0F|\\\\uD83C\\\\uDF2F|\\\\u26D1\\\\uFE0F|\\\\uD83C\\\\uDF2E|\\\\u26D3\\\\uFE0F|\\\\uD83C\\\\uDF2D|\\\\u26E9\\\\uFE0F|\\\\uD83E\\\\uDDC0|\\\\u26F0\\\\uFE0F|\\\\uD83E\\\\uDD83|\\\\u26F1\\\\uFE0F|\\\\uD83E\\\\uDD80|\\\\u26F4\\\\uFE0F|\\\\uD83E\\\\uDD82|\\\\u26F7\\\\uFE0F|\\\\uD83E\\\\uDD84|\\\\u26F8\\\\uFE0F|\\\\uD83E\\\\uDD81|\\\\u26F9\\\\uFE0F|\\\\uD83E\\\\uDD16|\\\\u2721\\\\uFE0F|\\\\uD83E\\\\uDD15|\\\\u2763\\\\uFE0F|\\\\uD83E\\\\uDD12|\\\\uD83E\\\\uDD49|\\\\uD83E\\\\uDD48|\\\\uD83E\\\\uDD47|\\\\uD83E\\\\uDD3A|\\\\uD83E\\\\uDD45|\\\\uD83E\\\\uDD3E|\\\\uD83C\\\\uDDFF|\\\\uD83E\\\\uDD3D|\\\\uD83E\\\\uDD4B|\\\\uD83E\\\\uDD4A|\\\\uD83E\\\\uDD3C|\\\\uD83E\\\\uDD39|\\\\uD83E\\\\uDD38|\\\\uD83D\\\\uDEF6|\\\\uD83D\\\\uDEF5|\\\\uD83D\\\\uDEF4|\\\\uD83D\\\\uDED2|\\\\uD83C\\\\uDCCF|\\\\uD83C\\\\uDD70|\\\\uD83C\\\\uDD71|\\\\uD83C\\\\uDD7E|\\\\uD83D\\\\uDED1|\\\\uD83C\\\\uDD8E|\\\\uD83C\\\\uDD91|\\\\uD83C\\\\uDDFE|\\\\uD83C\\\\uDD92|\\\\uD83C\\\\uDD93|\\\\uD83C\\\\uDD94|\\\\uD83C\\\\uDD95|\\\\uD83C\\\\uDD96|\\\\uD83C\\\\uDD97|\\\\uD83C\\\\uDD98|\\\\uD83E\\\\uDD44|\\\\uD83C\\\\uDD99|\\\\uD83C\\\\uDD9A|\\\\uD83E\\\\uDD42|\\\\uD83E\\\\uDD43|\\\\uD83C\\\\uDE01|\\\\uD83E\\\\uDD59|\\\\uD83C\\\\uDE32|\\\\uD83C\\\\uDE33|\\\\uD83C\\\\uDE34|\\\\uD83C\\\\uDE35|\\\\uD83C\\\\uDE36|\\\\uD83E\\\\uDD58|\\\\uD83C\\\\uDE38|\\\\uD83C\\\\uDE39|\\\\uD83E\\\\uDD57|\\\\uD83C\\\\uDE3A|\\\\uD83C\\\\uDE50|\\\\uD83C\\\\uDE51|\\\\uD83C\\\\uDF00|\\\\uD83E\\\\uDD56|\\\\uD83C\\\\uDF01|\\\\uD83C\\\\uDF02|\\\\uD83C\\\\uDF03|\\\\uD83C\\\\uDF04|\\\\uD83C\\\\uDF05|\\\\uD83C\\\\uDF06|\\\\uD83E\\\\uDD55|\\\\uD83C\\\\uDF07|\\\\uD83C\\\\uDF08|\\\\uD83E\\\\uDD54|\\\\uD83C\\\\uDF09|\\\\uD83C\\\\uDF0A|\\\\uD83C\\\\uDF0B|\\\\uD83C\\\\uDF0C|\\\\uD83C\\\\uDF0F|\\\\uD83C\\\\uDF11|\\\\uD83E\\\\uDD53|\\\\uD83C\\\\uDF13|\\\\uD83C\\\\uDF14|\\\\uD83C\\\\uDF15|\\\\uD83C\\\\uDF19|\\\\uD83C\\\\uDF1B|\\\\uD83C\\\\uDF1F|\\\\uD83E\\\\uDD52|\\\\uD83C\\\\uDF20|\\\\uD83C\\\\uDF30|\\\\uD83E\\\\uDD51|\\\\uD83C\\\\uDF31|\\\\uD83C\\\\uDF34|\\\\uD83C\\\\uDF35|\\\\uD83C\\\\uDF37|\\\\uD83C\\\\uDF38|\\\\uD83C\\\\uDF39|\\\\uD83C\\\\uDF3A|\\\\uD83C\\\\uDF3B|\\\\uD83C\\\\uDF3C|\\\\uD83C\\\\uDF3D|\\\\uD83E\\\\uDD50|\\\\uD83C\\\\uDF3E|\\\\uD83C\\\\uDF3F|\\\\uD83C\\\\uDF40|\\\\uD83C\\\\uDF41|\\\\uD83C\\\\uDF42|\\\\uD83C\\\\uDF43|\\\\uD83C\\\\uDF44|\\\\uD83C\\\\uDF45|\\\\uD83C\\\\uDF46|\\\\uD83C\\\\uDF47|\\\\uD83C\\\\uDF48|\\\\uD83C\\\\uDF49|\\\\uD83C\\\\uDF4A|\\\\uD83E\\\\uDD40|\\\\uD83C\\\\uDF4C|\\\\uD83C\\\\uDF4D|\\\\uD83C\\\\uDF4E|\\\\uD83C\\\\uDF4F|\\\\uD83C\\\\uDF51|\\\\uD83C\\\\uDF52|\\\\uD83C\\\\uDF53|\\\\uD83E\\\\uDD8F|\\\\uD83C\\\\uDF54|\\\\uD83C\\\\uDF55|\\\\uD83C\\\\uDF56|\\\\uD83E\\\\uDD8E|\\\\uD83C\\\\uDF57|\\\\uD83C\\\\uDF58|\\\\uD83C\\\\uDF59|\\\\uD83E\\\\uDD8D|\\\\uD83C\\\\uDF5A|\\\\uD83C\\\\uDF5B|\\\\uD83E\\\\uDD8C|\\\\uD83C\\\\uDF5C|\\\\uD83C\\\\uDF5D|\\\\uD83C\\\\uDF5E|\\\\uD83C\\\\uDF5F|\\\\uD83E\\\\uDD8B|\\\\uD83C\\\\uDF60|\\\\uD83C\\\\uDF61|\\\\uD83E\\\\uDD8A|\\\\uD83C\\\\uDF62|\\\\uD83C\\\\uDF63|\\\\uD83E\\\\uDD89|\\\\uD83C\\\\uDF64|\\\\uD83C\\\\uDF65|\\\\uD83E\\\\uDD88|\\\\uD83C\\\\uDF66|\\\\uD83E\\\\uDD87|\\\\uD83C\\\\uDF67|\\\\uD83C\\\\uDDFD|\\\\uD83C\\\\uDF68|\\\\uD83E\\\\uDD86|\\\\uD83C\\\\uDF69|\\\\uD83E\\\\uDD85|\\\\uD83C\\\\uDF6A|\\\\uD83D\\\\uDDA4|\\\\uD83C\\\\uDF6B|\\\\uD83C\\\\uDF6C|\\\\uD83C\\\\uDF6D|\\\\uD83C\\\\uDF6E|\\\\uD83C\\\\uDF6F|\\\\uD83E\\\\uDD1E|\\\\uD83C\\\\uDF70|\\\\uD83C\\\\uDF71|\\\\uD83C\\\\uDF72|\\\\uD83E\\\\uDD1D|\\\\uD83C\\\\uDF73|\\\\uD83C\\\\uDF74|\\\\uD83C\\\\uDF75|\\\\uD83C\\\\uDF76|\\\\uD83C\\\\uDF77|\\\\uD83C\\\\uDF78|\\\\uD83C\\\\uDF79|\\\\uD83C\\\\uDF7A|\\\\uD83C\\\\uDF7B|\\\\uD83C\\\\uDF80|\\\\uD83C\\\\uDF81|\\\\uD83C\\\\uDF82|\\\\uD83C\\\\uDF83|\\\\uD83E\\\\uDD1B|\\\\uD83E\\\\uDD1C|\\\\uD83C\\\\uDF84|\\\\uD83C\\\\uDF85|\\\\uD83C\\\\uDF86|\\\\uD83E\\\\uDD1A|\\\\uD83C\\\\uDF87|\\\\uD83C\\\\uDF88|\\\\uD83C\\\\uDF89|\\\\uD83C\\\\uDF8A|\\\\uD83C\\\\uDF8B|\\\\uD83C\\\\uDF8C|\\\\uD83E\\\\uDD19|\\\\uD83C\\\\uDF8D|\\\\uD83D\\\\uDD7A|\\\\uD83C\\\\uDF8E|\\\\uD83E\\\\uDD33|\\\\uD83C\\\\uDF8F|\\\\uD83E\\\\uDD30|\\\\uD83C\\\\uDF90|\\\\uD83E\\\\uDD26|\\\\uD83E\\\\uDD37|\\\\uD83C\\\\uDF91|\\\\uD83C\\\\uDF92|\\\\uD83C\\\\uDF93|\\\\uD83C\\\\uDFA0|\\\\uD83C\\\\uDFA1|\\\\uD83C\\\\uDFA2|\\\\uD83C\\\\uDFA3|\\\\uD83C\\\\uDFA4|\\\\uD83C\\\\uDFA5|\\\\uD83C\\\\uDFA6|\\\\uD83C\\\\uDFA7|\\\\uD83E\\\\uDD36|\\\\uD83C\\\\uDFA8|\\\\uD83E\\\\uDD35|\\\\uD83C\\\\uDFA9|\\\\uD83C\\\\uDFAA|\\\\uD83E\\\\uDD34|\\\\uD83C\\\\uDFAB|\\\\uD83C\\\\uDFAC|\\\\uD83C\\\\uDFAD|\\\\uD83E\\\\uDD27|\\\\uD83C\\\\uDFAE|\\\\uD83C\\\\uDFAF|\\\\uD83C\\\\uDFB0|\\\\uD83C\\\\uDFB1|\\\\uD83C\\\\uDFB2|\\\\uD83C\\\\uDFB3|\\\\uD83C\\\\uDFB4|\\\\uD83E\\\\uDD25|\\\\uD83C\\\\uDFB5|\\\\uD83C\\\\uDFB6|\\\\uD83C\\\\uDFB7|\\\\uD83E\\\\uDD24|\\\\uD83C\\\\uDFB8|\\\\uD83C\\\\uDFB9|\\\\uD83C\\\\uDFBA|\\\\uD83E\\\\uDD23|\\\\uD83C\\\\uDFBB|\\\\uD83C\\\\uDFBC|\\\\uD83C\\\\uDFBD|\\\\uD83E\\\\uDD22|\\\\uD83C\\\\uDFBE|\\\\uD83C\\\\uDFBF|\\\\uD83C\\\\uDFC0|\\\\uD83C\\\\uDFC1|\\\\uD83E\\\\uDD21|\\\\uD83C\\\\uDFC2|\\\\uD83C\\\\uDFC3|\\\\uD83C\\\\uDFC4|\\\\uD83C\\\\uDFC6|\\\\uD83C\\\\uDFC8|\\\\uD83C\\\\uDFCA|\\\\uD83C\\\\uDFE0|\\\\uD83C\\\\uDFE1|\\\\uD83C\\\\uDFE2|\\\\uD83C\\\\uDFE3|\\\\uD83C\\\\uDFE5|\\\\uD83C\\\\uDFE6|\\\\uD83C\\\\uDFE7|\\\\uD83C\\\\uDFE8|\\\\uD83C\\\\uDFE9|\\\\uD83C\\\\uDFEA|\\\\uD83C\\\\uDFEB|\\\\uD83C\\\\uDFEC|\\\\uD83E\\\\uDD20|\\\\uD83C\\\\uDFED|\\\\uD83C\\\\uDFEE|\\\\uD83C\\\\uDFEF|\\\\uD83C\\\\uDFF0|\\\\uD83D\\\\uDC0C|\\\\uD83D\\\\uDC0D|\\\\uD83D\\\\uDC0E|\\\\uD83D\\\\uDC11|\\\\uD83D\\\\uDC12|\\\\uD83D\\\\uDC14|\\\\uD83D\\\\uDC17|\\\\uD83D\\\\uDC18|\\\\uD83D\\\\uDC19|\\\\uD83D\\\\uDC1A|\\\\uD83D\\\\uDC1B|\\\\uD83D\\\\uDC1C|\\\\uD83D\\\\uDC1D|\\\\uD83D\\\\uDC1E|\\\\uD83D\\\\uDC1F|\\\\uD83D\\\\uDC20|\\\\uD83D\\\\uDC21|\\\\uD83D\\\\uDC22|\\\\uD83D\\\\uDC23|\\\\uD83D\\\\uDC24|\\\\uD83D\\\\uDC25|\\\\uD83D\\\\uDC26|\\\\uD83D\\\\uDC27|\\\\uD83D\\\\uDC28|\\\\uD83D\\\\uDC29|\\\\uD83D\\\\uDC2B|\\\\uD83D\\\\uDC2C|\\\\uD83D\\\\uDC2D|\\\\uD83D\\\\uDC2E|\\\\uD83D\\\\uDC2F|\\\\uD83D\\\\uDC30|\\\\uD83D\\\\uDC31|\\\\uD83D\\\\uDC32|\\\\uD83D\\\\uDC33|\\\\uD83D\\\\uDC34|\\\\uD83D\\\\uDC35|\\\\uD83D\\\\uDC36|\\\\uD83D\\\\uDC37|\\\\uD83D\\\\uDC38|\\\\uD83D\\\\uDC39|\\\\uD83D\\\\uDC3A|\\\\uD83D\\\\uDC3B|\\\\uD83D\\\\uDC3C|\\\\uD83D\\\\uDC3D|\\\\uD83D\\\\uDC3E|\\\\uD83D\\\\uDC40|\\\\uD83D\\\\uDC42|\\\\uD83D\\\\uDC43|\\\\uD83D\\\\uDC44|\\\\uD83D\\\\uDC45|\\\\uD83D\\\\uDC46|\\\\uD83D\\\\uDC47|\\\\uD83D\\\\uDC48|\\\\uD83D\\\\uDC49|\\\\uD83D\\\\uDC4A|\\\\uD83D\\\\uDC4B|\\\\uD83D\\\\uDC4C|\\\\uD83D\\\\uDC4D|\\\\uD83D\\\\uDC4E|\\\\uD83D\\\\uDC4F|\\\\uD83D\\\\uDC50|\\\\uD83D\\\\uDC51|\\\\uD83D\\\\uDC52|\\\\uD83D\\\\uDC53|\\\\uD83D\\\\uDC54|\\\\uD83D\\\\uDC55|\\\\uD83D\\\\uDC56|\\\\uD83D\\\\uDC57|\\\\uD83D\\\\uDC58|\\\\uD83D\\\\uDC59|\\\\uD83D\\\\uDC5A|\\\\uD83D\\\\uDC5B|\\\\uD83D\\\\uDC5C|\\\\uD83D\\\\uDC5D|\\\\uD83D\\\\uDC5E|\\\\uD83D\\\\uDC5F|\\\\uD83D\\\\uDC60|\\\\uD83D\\\\uDC61|\\\\uD83D\\\\uDC62|\\\\uD83D\\\\uDC63|\\\\uD83D\\\\uDC64|\\\\uD83D\\\\uDC66|\\\\uD83D\\\\uDC67|\\\\uD83D\\\\uDC68|\\\\uD83D\\\\uDC69|\\\\uD83D\\\\uDC6A|\\\\uD83D\\\\uDC6B|\\\\uD83D\\\\uDC6E|\\\\uD83D\\\\uDC6F|\\\\uD83D\\\\uDC70|\\\\uD83D\\\\uDC71|\\\\uD83D\\\\uDC72|\\\\uD83D\\\\uDC73|\\\\uD83D\\\\uDC74|\\\\uD83D\\\\uDC75|\\\\uD83D\\\\uDC76|\\\\uD83D\\\\uDC77|\\\\uD83D\\\\uDC78|\\\\uD83D\\\\uDC79|\\\\uD83D\\\\uDC7A|\\\\uD83D\\\\uDC7B|\\\\uD83D\\\\uDC7C|\\\\uD83D\\\\uDC7D|\\\\uD83D\\\\uDC7E|\\\\uD83D\\\\uDC7F|\\\\uD83D\\\\uDC80|\\\\uD83D\\\\uDCC7|\\\\uD83D\\\\uDC81|\\\\uD83D\\\\uDC82|\\\\uD83D\\\\uDC83|\\\\uD83D\\\\uDC84|\\\\uD83D\\\\uDC85|\\\\uD83D\\\\uDCD2|\\\\uD83D\\\\uDC86|\\\\uD83D\\\\uDCD3|\\\\uD83D\\\\uDC87|\\\\uD83D\\\\uDCD4|\\\\uD83D\\\\uDC88|\\\\uD83D\\\\uDCD5|\\\\uD83D\\\\uDC89|\\\\uD83D\\\\uDCD6|\\\\uD83D\\\\uDC8A|\\\\uD83D\\\\uDCD7|\\\\uD83D\\\\uDC8B|\\\\uD83D\\\\uDCD8|\\\\uD83D\\\\uDC8C|\\\\uD83D\\\\uDCD9|\\\\uD83D\\\\uDC8D|\\\\uD83D\\\\uDCDA|\\\\uD83D\\\\uDC8E|\\\\uD83D\\\\uDCDB|\\\\uD83D\\\\uDC8F|\\\\uD83D\\\\uDCDC|\\\\uD83D\\\\uDC90|\\\\uD83D\\\\uDCDD|\\\\uD83D\\\\uDC91|\\\\uD83D\\\\uDCDE|\\\\uD83D\\\\uDC92|\\\\uD83D\\\\uDCDF|\\\\uD83D\\\\uDCE0|\\\\uD83D\\\\uDC93|\\\\uD83D\\\\uDCE1|\\\\uD83D\\\\uDCE2|\\\\uD83D\\\\uDC94|\\\\uD83D\\\\uDCE3|\\\\uD83D\\\\uDCE4|\\\\uD83D\\\\uDC95|\\\\uD83D\\\\uDCE5|\\\\uD83D\\\\uDCE6|\\\\uD83D\\\\uDC96|\\\\uD83D\\\\uDCE7|\\\\uD83D\\\\uDCE8|\\\\uD83D\\\\uDC97|\\\\uD83D\\\\uDCE9|\\\\uD83D\\\\uDCEA|\\\\uD83D\\\\uDC98|\\\\uD83D\\\\uDCEB|\\\\uD83D\\\\uDCEE|\\\\uD83D\\\\uDC99|\\\\uD83D\\\\uDCF0|\\\\uD83D\\\\uDCF1|\\\\uD83D\\\\uDC9A|\\\\uD83D\\\\uDCF2|\\\\uD83D\\\\uDCF3|\\\\uD83D\\\\uDC9B|\\\\uD83D\\\\uDCF4|\\\\uD83D\\\\uDCF6|\\\\uD83D\\\\uDC9C|\\\\uD83D\\\\uDCF7|\\\\uD83D\\\\uDCF9|\\\\uD83D\\\\uDC9D|\\\\uD83D\\\\uDCFA|\\\\uD83D\\\\uDCFB|\\\\uD83D\\\\uDC9E|\\\\uD83D\\\\uDCFC|\\\\uD83D\\\\uDD03|\\\\uD83D\\\\uDC9F|\\\\uD83D\\\\uDD0A|\\\\uD83D\\\\uDD0B|\\\\uD83D\\\\uDCA0|\\\\uD83D\\\\uDD0C|\\\\uD83D\\\\uDD0D|\\\\uD83D\\\\uDCA1|\\\\uD83D\\\\uDD0E|\\\\uD83D\\\\uDD0F|\\\\uD83D\\\\uDCA2|\\\\uD83D\\\\uDD10|\\\\uD83D\\\\uDD11|\\\\uD83D\\\\uDCA3|\\\\uD83D\\\\uDD12|\\\\uD83D\\\\uDD13|\\\\uD83D\\\\uDCA4|\\\\uD83D\\\\uDD14|\\\\uD83D\\\\uDD16|\\\\uD83D\\\\uDCA5|\\\\uD83D\\\\uDD17|\\\\uD83D\\\\uDD18|\\\\uD83D\\\\uDCA6|\\\\uD83D\\\\uDD19|\\\\uD83D\\\\uDD1A|\\\\uD83D\\\\uDCA7|\\\\uD83D\\\\uDD1B|\\\\uD83D\\\\uDD1C|\\\\uD83D\\\\uDCA8|\\\\uD83D\\\\uDD1D|\\\\uD83D\\\\uDD1E|\\\\uD83D\\\\uDCA9|\\\\uD83D\\\\uDD1F|\\\\uD83D\\\\uDCAA|\\\\uD83D\\\\uDD20|\\\\uD83D\\\\uDD21|\\\\uD83D\\\\uDCAB|\\\\uD83D\\\\uDD22|\\\\uD83D\\\\uDD23|\\\\uD83D\\\\uDCAC|\\\\uD83D\\\\uDD24|\\\\uD83D\\\\uDD25|\\\\uD83D\\\\uDCAE|\\\\uD83D\\\\uDD26|\\\\uD83D\\\\uDD27|\\\\uD83D\\\\uDCAF|\\\\uD83D\\\\uDD28|\\\\uD83D\\\\uDD29|\\\\uD83D\\\\uDCB0|\\\\uD83D\\\\uDD2A|\\\\uD83D\\\\uDD2B|\\\\uD83D\\\\uDCB1|\\\\uD83D\\\\uDD2E|\\\\uD83D\\\\uDCB2|\\\\uD83D\\\\uDD2F|\\\\uD83D\\\\uDCB3|\\\\uD83D\\\\uDD30|\\\\uD83D\\\\uDD31|\\\\uD83D\\\\uDCB4|\\\\uD83D\\\\uDD32|\\\\uD83D\\\\uDD33|\\\\uD83D\\\\uDCB5|\\\\uD83D\\\\uDD34|\\\\uD83D\\\\uDD35|\\\\uD83D\\\\uDCB8|\\\\uD83D\\\\uDD36|\\\\uD83D\\\\uDD37|\\\\uD83D\\\\uDCB9|\\\\uD83D\\\\uDD38|\\\\uD83D\\\\uDD39|\\\\uD83D\\\\uDCBA|\\\\uD83D\\\\uDD3A|\\\\uD83D\\\\uDD3B|\\\\uD83D\\\\uDCBB|\\\\uD83D\\\\uDD3C|\\\\uD83D\\\\uDCBC|\\\\uD83D\\\\uDD3D|\\\\uD83D\\\\uDD50|\\\\uD83D\\\\uDCBD|\\\\uD83D\\\\uDD51|\\\\uD83D\\\\uDCBE|\\\\uD83D\\\\uDD52|\\\\uD83D\\\\uDCBF|\\\\uD83D\\\\uDD53|\\\\uD83D\\\\uDCC0|\\\\uD83D\\\\uDD54|\\\\uD83D\\\\uDD55|\\\\uD83D\\\\uDCC1|\\\\uD83D\\\\uDD56|\\\\uD83D\\\\uDD57|\\\\uD83D\\\\uDCC2|\\\\uD83D\\\\uDD58|\\\\uD83D\\\\uDD59|\\\\uD83D\\\\uDCC3|\\\\uD83D\\\\uDD5A|\\\\uD83D\\\\uDD5B|\\\\uD83D\\\\uDCC4|\\\\uD83D\\\\uDDFB|\\\\uD83D\\\\uDDFC|\\\\uD83D\\\\uDCC5|\\\\uD83D\\\\uDDFD|\\\\uD83D\\\\uDDFE|\\\\uD83D\\\\uDCC6|\\\\uD83D\\\\uDDFF|\\\\uD83D\\\\uDE01|\\\\uD83D\\\\uDE02|\\\\uD83D\\\\uDE03|\\\\uD83D\\\\uDCC8|\\\\uD83D\\\\uDE04|\\\\uD83D\\\\uDE05|\\\\uD83D\\\\uDCC9|\\\\uD83D\\\\uDE06|\\\\uD83D\\\\uDE09|\\\\uD83D\\\\uDCCA|\\\\uD83D\\\\uDE0A|\\\\uD83D\\\\uDE0B|\\\\uD83D\\\\uDCCB|\\\\uD83D\\\\uDE0C|\\\\uD83D\\\\uDE0D|\\\\uD83D\\\\uDCCC|\\\\uD83D\\\\uDE0F|\\\\uD83D\\\\uDE12|\\\\uD83D\\\\uDCCD|\\\\uD83D\\\\uDE13|\\\\uD83D\\\\uDE14|\\\\uD83D\\\\uDCCE|\\\\uD83D\\\\uDE16|\\\\uD83D\\\\uDE18|\\\\uD83D\\\\uDCCF|\\\\uD83D\\\\uDE1A|\\\\uD83D\\\\uDE1C|\\\\uD83D\\\\uDCD0|\\\\uD83D\\\\uDE1D|\\\\uD83D\\\\uDE1E|\\\\uD83D\\\\uDCD1|\\\\uD83D\\\\uDE20|\\\\uD83D\\\\uDE21|\\\\uD83D\\\\uDE22|\\\\uD83D\\\\uDE23|\\\\uD83D\\\\uDE24|\\\\uD83D\\\\uDE25|\\\\uD83D\\\\uDE28|\\\\uD83D\\\\uDE29|\\\\uD83D\\\\uDE2A|\\\\uD83D\\\\uDE2B|\\\\uD83D\\\\uDE2D|\\\\uD83D\\\\uDE30|\\\\uD83D\\\\uDE31|\\\\uD83D\\\\uDE32|\\\\uD83D\\\\uDE33|\\\\uD83D\\\\uDE35|\\\\uD83D\\\\uDE37|\\\\uD83D\\\\uDE38|\\\\uD83D\\\\uDE39|\\\\uD83D\\\\uDE3A|\\\\uD83D\\\\uDE3B|\\\\uD83D\\\\uDE3C|\\\\uD83D\\\\uDE3D|\\\\uD83D\\\\uDE3E|\\\\uD83D\\\\uDE3F|\\\\uD83D\\\\uDE40|\\\\uD83D\\\\uDE45|\\\\uD83D\\\\uDE46|\\\\uD83D\\\\uDE47|\\\\uD83D\\\\uDE48|\\\\uD83D\\\\uDE49|\\\\uD83D\\\\uDE4A|\\\\uD83D\\\\uDE4B|\\\\uD83D\\\\uDE4C|\\\\uD83D\\\\uDE4D|\\\\uD83D\\\\uDE4E|\\\\uD83D\\\\uDE4F|\\\\uD83D\\\\uDE80|\\\\uD83D\\\\uDE83|\\\\uD83D\\\\uDE84|\\\\uD83D\\\\uDE85|\\\\uD83D\\\\uDE87|\\\\uD83D\\\\uDE89|\\\\uD83D\\\\uDE8C|\\\\uD83D\\\\uDE8F|\\\\uD83D\\\\uDE91|\\\\uD83D\\\\uDE92|\\\\uD83D\\\\uDE93|\\\\uD83D\\\\uDE95|\\\\uD83D\\\\uDE97|\\\\uD83D\\\\uDE99|\\\\uD83D\\\\uDE9A|\\\\uD83D\\\\uDEA2|\\\\uD83D\\\\uDEA4|\\\\uD83D\\\\uDEA5|\\\\uD83D\\\\uDEA7|\\\\uD83D\\\\uDEA8|\\\\uD83D\\\\uDEA9|\\\\uD83D\\\\uDEAA|\\\\uD83D\\\\uDEAB|\\\\uD83D\\\\uDEAC|\\\\uD83D\\\\uDEAD|\\\\uD83D\\\\uDEB2|\\\\uD83D\\\\uDEB6|\\\\uD83D\\\\uDEB9|\\\\uD83D\\\\uDEBA|\\\\uD83D\\\\uDEBB|\\\\uD83D\\\\uDEBC|\\\\uD83D\\\\uDEBD|\\\\uD83D\\\\uDEBE|\\\\uD83D\\\\uDEC0|\\\\uD83E\\\\uDD18|\\\\uD83D\\\\uDE00|\\\\uD83D\\\\uDE07|\\\\uD83D\\\\uDE08|\\\\uD83D\\\\uDE0E|\\\\uD83D\\\\uDE10|\\\\uD83D\\\\uDE11|\\\\uD83D\\\\uDE15|\\\\uD83D\\\\uDE17|\\\\uD83D\\\\uDE19|\\\\uD83D\\\\uDE1B|\\\\uD83D\\\\uDE1F|\\\\uD83D\\\\uDE26|\\\\uD83D\\\\uDE27|\\\\uD83D\\\\uDE2C|\\\\uD83D\\\\uDE2E|\\\\uD83D\\\\uDE2F|\\\\uD83D\\\\uDE34|\\\\uD83D\\\\uDE36|\\\\uD83D\\\\uDE81|\\\\uD83D\\\\uDE82|\\\\uD83D\\\\uDE86|\\\\uD83D\\\\uDE88|\\\\uD83D\\\\uDE8A|\\\\uD83D\\\\uDE8D|\\\\uD83D\\\\uDE8E|\\\\uD83D\\\\uDE90|\\\\uD83D\\\\uDE94|\\\\uD83D\\\\uDE96|\\\\uD83D\\\\uDE98|\\\\uD83D\\\\uDE9B|\\\\uD83D\\\\uDE9C|\\\\uD83D\\\\uDE9D|\\\\uD83D\\\\uDE9E|\\\\uD83D\\\\uDE9F|\\\\uD83D\\\\uDEA0|\\\\uD83D\\\\uDEA1|\\\\uD83D\\\\uDEA3|\\\\uD83D\\\\uDEA6|\\\\uD83D\\\\uDEAE|\\\\uD83D\\\\uDEAF|\\\\uD83D\\\\uDEB0|\\\\uD83D\\\\uDEB1|\\\\uD83D\\\\uDEB3|\\\\uD83D\\\\uDEB4|\\\\uD83D\\\\uDEB5|\\\\uD83D\\\\uDEB7|\\\\uD83D\\\\uDEB8|\\\\uD83D\\\\uDEBF|\\\\uD83D\\\\uDEC1|\\\\uD83D\\\\uDEC2|\\\\uD83D\\\\uDEC3|\\\\uD83D\\\\uDEC4|\\\\uD83D\\\\uDEC5|\\\\uD83C\\\\uDF0D|\\\\uD83C\\\\uDF0E|\\\\uD83C\\\\uDF10|\\\\uD83C\\\\uDF12|\\\\uD83C\\\\uDF16|\\\\uD83C\\\\uDF17|\\\\uD83C\\\\uDF18|\\\\uD83C\\\\uDF1A|\\\\uD83C\\\\uDF1C|\\\\uD83C\\\\uDF1D|\\\\uD83C\\\\uDF1E|\\\\uD83C\\\\uDF32|\\\\uD83C\\\\uDF33|\\\\uD83C\\\\uDF4B|\\\\uD83C\\\\uDF50|\\\\uD83C\\\\uDF7C|\\\\uD83C\\\\uDFC7|\\\\uD83C\\\\uDFC9|\\\\uD83C\\\\uDFE4|\\\\uD83D\\\\uDC00|\\\\uD83D\\\\uDC01|\\\\uD83D\\\\uDC02|\\\\uD83D\\\\uDC03|\\\\uD83D\\\\uDC04|\\\\uD83D\\\\uDC05|\\\\uD83D\\\\uDC06|\\\\uD83D\\\\uDC07|\\\\uD83D\\\\uDC08|\\\\uD83D\\\\uDC09|\\\\uD83D\\\\uDC0A|\\\\uD83D\\\\uDC0B|\\\\uD83D\\\\uDC0F|\\\\uD83D\\\\uDC10|\\\\uD83D\\\\uDC13|\\\\uD83D\\\\uDC15|\\\\uD83D\\\\uDC16|\\\\uD83D\\\\uDC2A|\\\\uD83D\\\\uDC65|\\\\uD83D\\\\uDC6C|\\\\uD83D\\\\uDC6D|\\\\uD83D\\\\uDCAD|\\\\uD83D\\\\uDCB6|\\\\uD83D\\\\uDCB7|\\\\uD83D\\\\uDCEC|\\\\uD83D\\\\uDCED|\\\\uD83D\\\\uDCEF|\\\\uD83D\\\\uDCF5|\\\\uD83D\\\\uDD00|\\\\uD83D\\\\uDD01|\\\\uD83D\\\\uDD02|\\\\uD83D\\\\uDD04|\\\\uD83D\\\\uDD05|\\\\uD83D\\\\uDD06|\\\\uD83D\\\\uDD07|\\\\uD83D\\\\uDD09|\\\\uD83D\\\\uDD15|\\\\uD83D\\\\uDD2C|\\\\uD83D\\\\uDD2D|\\\\uD83D\\\\uDD5C|\\\\uD83D\\\\uDD5D|\\\\uD83D\\\\uDD5E|\\\\uD83D\\\\uDD5F|\\\\uD83D\\\\uDD60|\\\\uD83D\\\\uDD61|\\\\uD83D\\\\uDD62|\\\\uD83D\\\\uDD63|\\\\uD83D\\\\uDD64|\\\\uD83D\\\\uDD65|\\\\uD83D\\\\uDD66|\\\\uD83D\\\\uDD67|\\\\uD83D\\\\uDD08|\\\\uD83D\\\\uDE8B|\\\\uD83C\\\\uDFC5|\\\\uD83C\\\\uDFF4|\\\\uD83D\\\\uDCF8|\\\\uD83D\\\\uDECC|\\\\uD83D\\\\uDD95|\\\\uD83D\\\\uDD96|\\\\uD83D\\\\uDE41|\\\\uD83D\\\\uDE42|\\\\uD83D\\\\uDEEB|\\\\uD83D\\\\uDEEC|\\\\uD83C\\\\uDFFB|\\\\uD83C\\\\uDFFC|\\\\uD83C\\\\uDFFD|\\\\uD83C\\\\uDFFE|\\\\uD83C\\\\uDFFF|\\\\uD83D\\\\uDE43|\\\\uD83E\\\\uDD11|\\\\uD83E\\\\uDD13|\\\\uD83E\\\\uDD17|\\\\uD83D\\\\uDE44|\\\\uD83E\\\\uDD14|\\\\uD83E\\\\uDD10|\\\\u26F2\\\\uFE0F|\\\\#\\\\u20E3|\\\\9\\\\u20E3|\\\\8\\\\u20E3|\\\\7\\\\u20E3|\\\\6\\\\u20E3|\\\\*\\\\u20E3|\\\\4\\\\u20E3|\\\\3\\\\u20E3|\\\\2\\\\u20E3|\\\\1\\\\u20E3|\\\\0\\\\u20E3|\\\\5\\\\u20E3|\\\\u26B1|\\\\u26B0|\\\\u269C|\\\\u269B|\\\\u2699|\\\\u2697|\\\\u2696|\\\\u2694|\\\\u2692|\\\\u2639|\\\\u2638|\\\\u262F|\\\\u262E|\\\\u262A|\\\\u2626|\\\\u2623|\\\\u2622|\\\\u2620|\\\\u2618|\\\\u2604|\\\\u2603|\\\\u2602|\\\\u23FA|\\\\u23F9|\\\\u23F8|\\\\u23F2|\\\\u23F1|\\\\u23EF|\\\\u23EE|\\\\u23ED|\\\\u23CF|\\\\u270D|\\\\u2328|\\\\u271D|\\\\u3299|\\\\u3297|\\\\u303D|\\\\u3030|\\\\u2B55|\\\\u2B50|\\\\u2B1C|\\\\u2B1B|\\\\u2B07|\\\\u2B06|\\\\u2B05|\\\\u2935|\\\\u23E9|\\\\u23EA|\\\\u23EB|\\\\u23EC|\\\\u23F0|\\\\u23F3|\\\\u26CE|\\\\u2705|\\\\u270A|\\\\u270B|\\\\u2728|\\\\u274C|\\\\u274E|\\\\u2753|\\\\u2754|\\\\u2755|\\\\u2795|\\\\u2796|\\\\u2797|\\\\u27B0|\\\\u27BF|\\\\u00A9|\\\\u00AE|\\\\u203C|\\\\u2049|\\\\u2122|\\\\u2139|\\\\u2194|\\\\u2195|\\\\u2196|\\\\u2197|\\\\u2198|\\\\u2199|\\\\u21A9|\\\\u21AA|\\\\u231A|\\\\u231B|\\\\u24C2|\\\\u25AA|\\\\u25AB|\\\\u25B6|\\\\u25C0|\\\\u25FB|\\\\u25FC|\\\\u25FD|\\\\u25FE|\\\\u2600|\\\\u2601|\\\\u260E|\\\\u2611|\\\\u2614|\\\\u2615|\\\\u261D|\\\\u263A|\\\\u2648|\\\\u2649|\\\\u264A|\\\\u264B|\\\\u264C|\\\\u264D|\\\\u264E|\\\\u264F|\\\\u2650|\\\\u2651|\\\\u2652|\\\\u2653|\\\\u2660|\\\\u2663|\\\\u2665|\\\\u2666|\\\\u2668|\\\\u267B|\\\\u267F|\\\\u2693|\\\\u26A0|\\\\u26A1|\\\\u26AA|\\\\u26AB|\\\\u26BD|\\\\u26BE|\\\\u26C4|\\\\u26C5|\\\\u26D4|\\\\u26EA|\\\\u26F2|\\\\u26F3|\\\\u26F5|\\\\u26FA|\\\\u26FD|\\\\u2702|\\\\u2708|\\\\u2709|\\\\u270C|\\\\u270F|\\\\u2712|\\\\u2714|\\\\u2716|\\\\u2733|\\\\u2734|\\\\u2744|\\\\u2747|\\\\u2721|\\\\u2764|\\\\u27A1|\\\\u2934|\\\\u2935|\\\\u2B05|\\\\u2B06|\\\\u2B07|\\\\u2B1B|\\\\u2B1C|\\\\u2B50|\\\\u2B55|\\\\u3030|\\\\u303D|\\\\u3297|\\\\u3299|\\\\u2934|\\\\u27A1|\\\\u2764|\\\\u2757|\\\\u2747|\\\\u2744|\\\\u2734|\\\\u2733|\\\\u2716|\\\\u2714|\\\\u2712|\\\\u270F|\\\\u270C|\\\\u2709|\\\\u2708|\\\\u2702|\\\\u26FD|\\\\u26FA|\\\\u26F5|\\\\u26F3|\\\\u26F2|\\\\u26EA|\\\\u26D4|\\\\u26C5|\\\\u26C4|\\\\u26BE|\\\\u26BD|\\\\u26AB|\\\\u26AA|\\\\u26A1|\\\\u26A0|\\\\u2693|\\\\u271D|\\\\u267F|\\\\u267B|\\\\u2668|\\\\u2666|\\\\u2665|\\\\u2663|\\\\u2660|\\\\u2653|\\\\u2652|\\\\u2651|\\\\u2650|\\\\u264F|\\\\u264E|\\\\u264D|\\\\u2328|\\\\u264C|\\\\u264B|\\\\u264A|\\\\u2649|\\\\u2648|\\\\u263A|\\\\u261D|\\\\u2615|\\\\u2614|\\\\u2611|\\\\u260E|\\\\u2601|\\\\u2600|\\\\u25FE|\\\\u25FD|\\\\u25FC|\\\\u25FB|\\\\u25C0|\\\\u25B6|\\\\u25AB|\\\\u25AA|\\\\u24C2|\\\\u231B|\\\\u231A|\\\\u21AA|\\\\u270D|\\\\u21A9|\\\\u2199|\\\\u2198|\\\\u2197|\\\\u2196|\\\\u2195|\\\\u2194|\\\\u2139|\\\\u2122|\\\\u2049|\\\\u203C|\\\\u00AE|\\\\u00A9|\\\\u2763|\\\\u26F9|\\\\u26F8|\\\\u26F7|\\\\u26F4|\\\\u26F1|\\\\u26F0|\\\\u26E9|\\\\u26D3|\\\\u23CF|\\\\u23ED|\\\\u23EE|\\\\u23EF|\\\\u23F1|\\\\u23F2|\\\\u23F8|\\\\u23F9|\\\\u23FA|\\\\u2602|\\\\u2603|\\\\u2604|\\\\u2618|\\\\u2620|\\\\u2622|\\\\u2623|\\\\u2626|\\\\u262A|\\\\u262E|\\\\u262F|\\\\u2638|\\\\u2639|\\\\u2692|\\\\u2694|\\\\u2696|\\\\u2697|\\\\u2699|\\\\u269B|\\\\u269C|\\\\u26B0|\\\\u26B1|\\\\u26C8|\\\\u26CF|\\\\u26D1|\\\\u26D3|\\\\u26E9|\\\\u26F0|\\\\u26F1|\\\\u26F4|\\\\u26F7|\\\\u26F8|\\\\u26F9|\\\\u2721|\\\\u2763|\\\\u26D1|\\\\u26CF|\\\\u26C8|\\\\u2757)';\n ns.jsEscapeMap = {\"\\uD83D\\uDC69\\u200D\\u2764\\uFE0F\\u200D\\uD83D\\uDC8B\\u200D\\uD83D\\uDC69\":\"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469\",\"\\uD83D\\uDC69\\u2764\\uD83D\\uDC8B\\uD83D\\uDC69\":\"1f469-2764-1f48b-1f469\",\"\\uD83D\\uDC68\\u200D\\u2764\\uFE0F\\u200D\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68\":\"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468\",\"\\uD83D\\uDC68\\u2764\\uD83D\\uDC8B\\uD83D\\uDC68\":\"1f468-2764-1f48b-1f468\",\"\\uD83D\\uDC68\\u200D\\uD83D\\uDC68\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66\":\"1f468-200d-1f468-200d-1f466-200d-1f466\",\"\\uD83D\\uDC68\\uD83D\\uDC68\\uD83D\\uDC66\\uD83D\\uDC66\":\"1f468-1f468-1f466-1f466\",\"\\uD83D\\uDC68\\u200D\\uD83D\\uDC68\\u200D\\uD83D\\uDC67\\u200D\\uD83D\\uDC66\":\"1f468-200d-1f468-200d-1f467-200d-1f466\",\"\\uD83D\\uDC68\\uD83D\\uDC68\\uD83D\\uDC67\\uD83D\\uDC66\":\"1f468-1f468-1f467-1f466\",\"\\uD83D\\uDC68\\u200D\\uD83D\\uDC68\\u200D\\uD83D\\uDC67\\u200D\\uD83D\\uDC67\":\"1f468-200d-1f468-200d-1f467-200d-1f467\",\"\\uD83D\\uDC68\\uD83D\\uDC68\\uD83D\\uDC67\\uD83D\\uDC67\":\"1f468-1f468-1f467-1f467\",\"\\uD83D\\uDC68\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66\":\"1f468-200d-1f469-200d-1f466-200d-1f466\",\"\\uD83D\\uDC68\\uD83D\\uDC69\\uD83D\\uDC66\\uD83D\\uDC66\":\"1f468-1f469-1f466-1f466\",\"\\uD83D\\uDC68\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D\\uD83D\\uDC66\":\"1f468-200d-1f469-200d-1f467-200d-1f466\",\"\\uD83D\\uDC68\\uD83D\\uDC69\\uD83D\\uDC67\\uD83D\\uDC66\":\"1f468-1f469-1f467-1f466\",\"\\uD83D\\uDC68\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D\\uD83D\\uDC67\":\"1f468-200d-1f469-200d-1f467-200d-1f467\",\"\\uD83D\\uDC68\\uD83D\\uDC69\\uD83D\\uDC67\\uD83D\\uDC67\":\"1f468-1f469-1f467-1f467\",\"\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66\":\"1f469-200d-1f469-200d-1f466-200d-1f466\",\"\\uD83D\\uDC69\\uD83D\\uDC69\\uD83D\\uDC66\\uD83D\\uDC66\":\"1f469-1f469-1f466-1f466\",\"\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D\\uD83D\\uDC66\":\"1f469-200d-1f469-200d-1f467-200d-1f466\",\"\\uD83D\\uDC69\\uD83D\\uDC69\\uD83D\\uDC67\\uD83D\\uDC66\":\"1f469-1f469-1f467-1f466\",\"\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D\\uD83D\\uDC67\":\"1f469-200d-1f469-200d-1f467-200d-1f467\",\"\\uD83D\\uDC69\\uD83D\\uDC69\\uD83D\\uDC67\\uD83D\\uDC67\":\"1f469-1f469-1f467-1f467\",\"\\uD83D\\uDC69\\u200D\\u2764\\uFE0F\\u200D\\uD83D\\uDC69\":\"1f469-200d-2764-fe0f-200d-1f469\",\"\\uD83D\\uDC69\\u2764\\uD83D\\uDC69\":\"1f469-2764-1f469\",\"\\uD83D\\uDC68\\u200D\\u2764\\uFE0F\\u200D\\uD83D\\uDC68\":\"1f468-200d-2764-fe0f-200d-1f468\",\"\\uD83D\\uDC68\\u2764\\uD83D\\uDC68\":\"1f468-2764-1f468\",\"\\uD83D\\uDC68\\u200D\\uD83D\\uDC68\\u200D\\uD83D\\uDC66\":\"1f468-200d-1f468-200d-1f466\",\"\\uD83D\\uDC68\\uD83D\\uDC68\\uD83D\\uDC66\":\"1f468-1f468-1f466\",\"\\uD83D\\uDC68\\u200D\\uD83D\\uDC68\\u200D\\uD83D\\uDC67\":\"1f468-200d-1f468-200d-1f467\",\"\\uD83D\\uDC68\\uD83D\\uDC68\\uD83D\\uDC67\":\"1f468-1f468-1f467\",\"\\uD83D\\uDC68\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\":\"1f468-200d-1f469-200d-1f467\",\"\\uD83D\\uDC68\\uD83D\\uDC69\\uD83D\\uDC67\":\"1f468-1f469-1f467\",\"\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\":\"1f469-200d-1f469-200d-1f466\",\"\\uD83D\\uDC69\\uD83D\\uDC69\\uD83D\\uDC66\":\"1f469-1f469-1f466\",\"\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\":\"1f469-200d-1f469-200d-1f467\",\"\\uD83D\\uDC69\\uD83D\\uDC69\\uD83D\\uDC67\":\"1f469-1f469-1f467\",\"\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08\":\"1f3f3-fe0f-200d-1f308\",\"\\uD83C\\uDFF3\\uD83C\\uDF08\":\"1f3f3-1f308\",\"\\uD83D\\uDC41\\u200D\\uD83D\\uDDE8\":\"1f441-200d-1f5e8\",\"\\uD83D\\uDC41\\uD83D\\uDDE8\":\"1f441-1f5e8\",\"#\\uFE0F\\u20E3\":\"0023-fe0f-20e3\",\"#\\u20E3\":\"0023-20e3\",\"0\\uFE0F\\u20E3\":\"0030-fe0f-20e3\",\"0\\u20E3\":\"0030-20e3\",\"1\\uFE0F\\u20E3\":\"0031-fe0f-20e3\",\"1\\u20E3\":\"0031-20e3\",\"2\\uFE0F\\u20E3\":\"0032-fe0f-20e3\",\"2\\u20E3\":\"0032-20e3\",\"3\\uFE0F\\u20E3\":\"0033-fe0f-20e3\",\"3\\u20E3\":\"0033-20e3\",\"4\\uFE0F\\u20E3\":\"0034-fe0f-20e3\",\"4\\u20E3\":\"0034-20e3\",\"5\\uFE0F\\u20E3\":\"0035-fe0f-20e3\",\"5\\u20E3\":\"0035-20e3\",\"6\\uFE0F\\u20E3\":\"0036-fe0f-20e3\",\"6\\u20E3\":\"0036-20e3\",\"7\\uFE0F\\u20E3\":\"0037-fe0f-20e3\",\"7\\u20E3\":\"0037-20e3\",\"8\\uFE0F\\u20E3\":\"0038-fe0f-20e3\",\"8\\u20E3\":\"0038-20e3\",\"9\\uFE0F\\u20E3\":\"0039-fe0f-20e3\",\"9\\u20E3\":\"0039-20e3\",\"*\\uFE0F\\u20E3\":\"002a-fe0f-20e3\",\"*\\u20E3\":\"002a-20e3\",\"\\uD83E\\uDD3E\\uD83C\\uDFFF\":\"1f93e-1f3ff\",\"\\uD83E\\uDD3E\\uD83C\\uDFFE\":\"1f93e-1f3fe\",\"\\uD83E\\uDD3E\\uD83C\\uDFFD\":\"1f93e-1f3fd\",\"\\uD83E\\uDD3E\\uD83C\\uDFFC\":\"1f93e-1f3fc\",\"\\uD83E\\uDD3E\\uD83C\\uDFFB\":\"1f93e-1f3fb\",\"\\uD83E\\uDD3D\\uD83C\\uDFFF\":\"1f93d-1f3ff\",\"\\uD83E\\uDD3D\\uD83C\\uDFFE\":\"1f93d-1f3fe\",\"\\uD83E\\uDD3D\\uD83C\\uDFFD\":\"1f93d-1f3fd\",\"\\uD83E\\uDD3D\\uD83C\\uDFFC\":\"1f93d-1f3fc\",\"\\uD83E\\uDD3D\\uD83C\\uDFFB\":\"1f93d-1f3fb\",\"\\uD83E\\uDD3C\\uD83C\\uDFFF\":\"1f93c-1f3ff\",\"\\uD83E\\uDD3C\\uD83C\\uDFFE\":\"1f93c-1f3fe\",\"\\uD83E\\uDD3C\\uD83C\\uDFFD\":\"1f93c-1f3fd\",\"\\uD83E\\uDD3C\\uD83C\\uDFFC\":\"1f93c-1f3fc\",\"\\uD83E\\uDD3C\\uD83C\\uDFFB\":\"1f93c-1f3fb\",\"\\uD83E\\uDD39\\uD83C\\uDFFF\":\"1f939-1f3ff\",\"\\uD83E\\uDD39\\uD83C\\uDFFE\":\"1f939-1f3fe\",\"\\uD83E\\uDD39\\uD83C\\uDFFD\":\"1f939-1f3fd\",\"\\uD83E\\uDD39\\uD83C\\uDFFC\":\"1f939-1f3fc\",\"\\uD83E\\uDD39\\uD83C\\uDFFB\":\"1f939-1f3fb\",\"\\uD83E\\uDD38\\uD83C\\uDFFF\":\"1f938-1f3ff\",\"\\uD83E\\uDD38\\uD83C\\uDFFE\":\"1f938-1f3fe\",\"\\uD83E\\uDD38\\uD83C\\uDFFD\":\"1f938-1f3fd\",\"\\uD83E\\uDD38\\uD83C\\uDFFC\":\"1f938-1f3fc\",\"\\uD83E\\uDD38\\uD83C\\uDFFB\":\"1f938-1f3fb\",\"\\uD83E\\uDD37\\uD83C\\uDFFF\":\"1f937-1f3ff\",\"\\uD83E\\uDD37\\uD83C\\uDFFE\":\"1f937-1f3fe\",\"\\uD83E\\uDD37\\uD83C\\uDFFD\":\"1f937-1f3fd\",\"\\uD83E\\uDD37\\uD83C\\uDFFC\":\"1f937-1f3fc\",\"\\uD83E\\uDD37\\uD83C\\uDFFB\":\"1f937-1f3fb\",\"\\uD83E\\uDD36\\uD83C\\uDFFF\":\"1f936-1f3ff\",\"\\uD83E\\uDD36\\uD83C\\uDFFE\":\"1f936-1f3fe\",\"\\uD83E\\uDD36\\uD83C\\uDFFD\":\"1f936-1f3fd\",\"\\uD83E\\uDD36\\uD83C\\uDFFC\":\"1f936-1f3fc\",\"\\uD83E\\uDD36\\uD83C\\uDFFB\":\"1f936-1f3fb\",\"\\uD83E\\uDD35\\uD83C\\uDFFF\":\"1f935-1f3ff\",\"\\uD83E\\uDD35\\uD83C\\uDFFE\":\"1f935-1f3fe\",\"\\uD83E\\uDD35\\uD83C\\uDFFD\":\"1f935-1f3fd\",\"\\uD83E\\uDD35\\uD83C\\uDFFC\":\"1f935-1f3fc\",\"\\uD83E\\uDD35\\uD83C\\uDFFB\":\"1f935-1f3fb\",\"\\uD83E\\uDD34\\uD83C\\uDFFF\":\"1f934-1f3ff\",\"\\uD83E\\uDD34\\uD83C\\uDFFE\":\"1f934-1f3fe\",\"\\uD83E\\uDD34\\uD83C\\uDFFD\":\"1f934-1f3fd\",\"\\uD83E\\uDD34\\uD83C\\uDFFC\":\"1f934-1f3fc\",\"\\uD83E\\uDD34\\uD83C\\uDFFB\":\"1f934-1f3fb\",\"\\uD83E\\uDD33\\uD83C\\uDFFF\":\"1f933-1f3ff\",\"\\uD83E\\uDD33\\uD83C\\uDFFE\":\"1f933-1f3fe\",\"\\uD83E\\uDD33\\uD83C\\uDFFD\":\"1f933-1f3fd\",\"\\uD83E\\uDD33\\uD83C\\uDFFC\":\"1f933-1f3fc\",\"\\uD83E\\uDD33\\uD83C\\uDFFB\":\"1f933-1f3fb\",\"\\uD83E\\uDD30\\uD83C\\uDFFF\":\"1f930-1f3ff\",\"\\uD83E\\uDD30\\uD83C\\uDFFE\":\"1f930-1f3fe\",\"\\uD83E\\uDD30\\uD83C\\uDFFD\":\"1f930-1f3fd\",\"\\uD83E\\uDD30\\uD83C\\uDFFC\":\"1f930-1f3fc\",\"\\uD83E\\uDD30\\uD83C\\uDFFB\":\"1f930-1f3fb\",\"\\uD83E\\uDD26\\uD83C\\uDFFF\":\"1f926-1f3ff\",\"\\uD83E\\uDD26\\uD83C\\uDFFE\":\"1f926-1f3fe\",\"\\uD83E\\uDD26\\uD83C\\uDFFD\":\"1f926-1f3fd\",\"\\uD83E\\uDD26\\uD83C\\uDFFC\":\"1f926-1f3fc\",\"\\uD83E\\uDD26\\uD83C\\uDFFB\":\"1f926-1f3fb\",\"\\uD83E\\uDD1E\\uD83C\\uDFFF\":\"1f91e-1f3ff\",\"\\uD83E\\uDD1E\\uD83C\\uDFFE\":\"1f91e-1f3fe\",\"\\uD83E\\uDD1E\\uD83C\\uDFFD\":\"1f91e-1f3fd\",\"\\uD83E\\uDD1E\\uD83C\\uDFFC\":\"1f91e-1f3fc\",\"\\uD83E\\uDD1E\\uD83C\\uDFFB\":\"1f91e-1f3fb\",\"\\uD83E\\uDD1D\\uD83C\\uDFFF\":\"1f91d-1f3ff\",\"\\uD83E\\uDD1D\\uD83C\\uDFFE\":\"1f91d-1f3fe\",\"\\uD83E\\uDD1D\\uD83C\\uDFFD\":\"1f91d-1f3fd\",\"\\uD83E\\uDD1D\\uD83C\\uDFFC\":\"1f91d-1f3fc\",\"\\uD83E\\uDD1D\\uD83C\\uDFFB\":\"1f91d-1f3fb\",\"\\uD83E\\uDD1C\\uD83C\\uDFFF\":\"1f91c-1f3ff\",\"\\uD83E\\uDD1C\\uD83C\\uDFFE\":\"1f91c-1f3fe\",\"\\uD83E\\uDD1C\\uD83C\\uDFFD\":\"1f91c-1f3fd\",\"\\uD83E\\uDD1C\\uD83C\\uDFFC\":\"1f91c-1f3fc\",\"\\uD83E\\uDD1C\\uD83C\\uDFFB\":\"1f91c-1f3fb\",\"\\uD83E\\uDD1B\\uD83C\\uDFFF\":\"1f91b-1f3ff\",\"\\uD83E\\uDD1B\\uD83C\\uDFFE\":\"1f91b-1f3fe\",\"\\uD83E\\uDD1B\\uD83C\\uDFFD\":\"1f91b-1f3fd\",\"\\uD83E\\uDD1B\\uD83C\\uDFFC\":\"1f91b-1f3fc\",\"\\uD83E\\uDD1B\\uD83C\\uDFFB\":\"1f91b-1f3fb\",\"\\uD83E\\uDD1A\\uD83C\\uDFFF\":\"1f91a-1f3ff\",\"\\uD83E\\uDD1A\\uD83C\\uDFFE\":\"1f91a-1f3fe\",\"\\uD83E\\uDD1A\\uD83C\\uDFFD\":\"1f91a-1f3fd\",\"\\uD83E\\uDD1A\\uD83C\\uDFFC\":\"1f91a-1f3fc\",\"\\uD83E\\uDD1A\\uD83C\\uDFFB\":\"1f91a-1f3fb\",\"\\uD83E\\uDD19\\uD83C\\uDFFF\":\"1f919-1f3ff\",\"\\uD83E\\uDD19\\uD83C\\uDFFE\":\"1f919-1f3fe\",\"\\uD83E\\uDD19\\uD83C\\uDFFD\":\"1f919-1f3fd\",\"\\uD83E\\uDD19\\uD83C\\uDFFC\":\"1f919-1f3fc\",\"\\uD83E\\uDD19\\uD83C\\uDFFB\":\"1f919-1f3fb\",\"\\uD83E\\uDD18\\uD83C\\uDFFF\":\"1f918-1f3ff\",\"\\uD83E\\uDD18\\uD83C\\uDFFE\":\"1f918-1f3fe\",\"\\uD83E\\uDD18\\uD83C\\uDFFD\":\"1f918-1f3fd\",\"\\uD83E\\uDD18\\uD83C\\uDFFC\":\"1f918-1f3fc\",\"\\uD83E\\uDD18\\uD83C\\uDFFB\":\"1f918-1f3fb\",\"\\uD83D\\uDEC0\\uD83C\\uDFFF\":\"1f6c0-1f3ff\",\"\\uD83D\\uDEC0\\uD83C\\uDFFE\":\"1f6c0-1f3fe\",\"\\uD83D\\uDEC0\\uD83C\\uDFFD\":\"1f6c0-1f3fd\",\"\\uD83D\\uDEC0\\uD83C\\uDFFC\":\"1f6c0-1f3fc\",\"\\uD83D\\uDEC0\\uD83C\\uDFFB\":\"1f6c0-1f3fb\",\"\\uD83D\\uDEB6\\uD83C\\uDFFF\":\"1f6b6-1f3ff\",\"\\uD83D\\uDEB6\\uD83C\\uDFFE\":\"1f6b6-1f3fe\",\"\\uD83D\\uDEB6\\uD83C\\uDFFD\":\"1f6b6-1f3fd\",\"\\uD83D\\uDEB6\\uD83C\\uDFFC\":\"1f6b6-1f3fc\",\"\\uD83D\\uDEB6\\uD83C\\uDFFB\":\"1f6b6-1f3fb\",\"\\uD83D\\uDEB5\\uD83C\\uDFFF\":\"1f6b5-1f3ff\",\"\\uD83D\\uDEB5\\uD83C\\uDFFE\":\"1f6b5-1f3fe\",\"\\uD83D\\uDEB5\\uD83C\\uDFFD\":\"1f6b5-1f3fd\",\"\\uD83D\\uDEB5\\uD83C\\uDFFC\":\"1f6b5-1f3fc\",\"\\uD83D\\uDEB5\\uD83C\\uDFFB\":\"1f6b5-1f3fb\",\"\\uD83D\\uDEB4\\uD83C\\uDFFF\":\"1f6b4-1f3ff\",\"\\uD83D\\uDEB4\\uD83C\\uDFFE\":\"1f6b4-1f3fe\",\"\\uD83D\\uDEB4\\uD83C\\uDFFD\":\"1f6b4-1f3fd\",\"\\uD83D\\uDEB4\\uD83C\\uDFFC\":\"1f6b4-1f3fc\",\"\\uD83D\\uDEB4\\uD83C\\uDFFB\":\"1f6b4-1f3fb\",\"\\uD83D\\uDEA3\\uD83C\\uDFFF\":\"1f6a3-1f3ff\",\"\\uD83D\\uDEA3\\uD83C\\uDFFE\":\"1f6a3-1f3fe\",\"\\uD83D\\uDEA3\\uD83C\\uDFFD\":\"1f6a3-1f3fd\",\"\\uD83D\\uDEA3\\uD83C\\uDFFC\":\"1f6a3-1f3fc\",\"\\uD83D\\uDEA3\\uD83C\\uDFFB\":\"1f6a3-1f3fb\",\"\\uD83D\\uDE4F\\uD83C\\uDFFF\":\"1f64f-1f3ff\",\"\\uD83D\\uDE4F\\uD83C\\uDFFE\":\"1f64f-1f3fe\",\"\\uD83D\\uDE4F\\uD83C\\uDFFD\":\"1f64f-1f3fd\",\"\\uD83D\\uDE4F\\uD83C\\uDFFC\":\"1f64f-1f3fc\",\"\\uD83D\\uDE4F\\uD83C\\uDFFB\":\"1f64f-1f3fb\",\"\\uD83D\\uDE4E\\uD83C\\uDFFF\":\"1f64e-1f3ff\",\"\\uD83D\\uDE4E\\uD83C\\uDFFE\":\"1f64e-1f3fe\",\"\\uD83D\\uDE4E\\uD83C\\uDFFD\":\"1f64e-1f3fd\",\"\\uD83D\\uDE4E\\uD83C\\uDFFC\":\"1f64e-1f3fc\",\"\\uD83D\\uDE4E\\uD83C\\uDFFB\":\"1f64e-1f3fb\",\"\\uD83D\\uDE4D\\uD83C\\uDFFF\":\"1f64d-1f3ff\",\"\\uD83D\\uDE4D\\uD83C\\uDFFE\":\"1f64d-1f3fe\",\"\\uD83D\\uDE4D\\uD83C\\uDFFD\":\"1f64d-1f3fd\",\"\\uD83D\\uDE4D\\uD83C\\uDFFC\":\"1f64d-1f3fc\",\"\\uD83D\\uDE4D\\uD83C\\uDFFB\":\"1f64d-1f3fb\",\"\\uD83D\\uDE4C\\uD83C\\uDFFF\":\"1f64c-1f3ff\",\"\\uD83D\\uDE4C\\uD83C\\uDFFE\":\"1f64c-1f3fe\",\"\\uD83D\\uDE4C\\uD83C\\uDFFD\":\"1f64c-1f3fd\",\"\\uD83D\\uDE4C\\uD83C\\uDFFC\":\"1f64c-1f3fc\",\"\\uD83D\\uDE4C\\uD83C\\uDFFB\":\"1f64c-1f3fb\",\"\\uD83D\\uDE4B\\uD83C\\uDFFF\":\"1f64b-1f3ff\",\"\\uD83D\\uDE4B\\uD83C\\uDFFE\":\"1f64b-1f3fe\",\"\\uD83D\\uDE4B\\uD83C\\uDFFD\":\"1f64b-1f3fd\",\"\\uD83D\\uDE4B\\uD83C\\uDFFC\":\"1f64b-1f3fc\",\"\\uD83D\\uDE4B\\uD83C\\uDFFB\":\"1f64b-1f3fb\",\"\\uD83D\\uDE47\\uD83C\\uDFFF\":\"1f647-1f3ff\",\"\\uD83D\\uDE47\\uD83C\\uDFFE\":\"1f647-1f3fe\",\"\\uD83D\\uDE47\\uD83C\\uDFFD\":\"1f647-1f3fd\",\"\\uD83D\\uDE47\\uD83C\\uDFFC\":\"1f647-1f3fc\",\"\\uD83D\\uDE47\\uD83C\\uDFFB\":\"1f647-1f3fb\",\"\\uD83D\\uDE46\\uD83C\\uDFFF\":\"1f646-1f3ff\",\"\\uD83D\\uDE46\\uD83C\\uDFFE\":\"1f646-1f3fe\",\"\\uD83D\\uDE46\\uD83C\\uDFFD\":\"1f646-1f3fd\",\"\\uD83D\\uDE46\\uD83C\\uDFFC\":\"1f646-1f3fc\",\"\\uD83D\\uDE46\\uD83C\\uDFFB\":\"1f646-1f3fb\",\"\\uD83D\\uDE45\\uD83C\\uDFFF\":\"1f645-1f3ff\",\"\\uD83D\\uDE45\\uD83C\\uDFFE\":\"1f645-1f3fe\",\"\\uD83D\\uDE45\\uD83C\\uDFFD\":\"1f645-1f3fd\",\"\\uD83D\\uDE45\\uD83C\\uDFFC\":\"1f645-1f3fc\",\"\\uD83D\\uDE45\\uD83C\\uDFFB\":\"1f645-1f3fb\",\"\\uD83D\\uDD96\\uD83C\\uDFFF\":\"1f596-1f3ff\",\"\\uD83D\\uDD96\\uD83C\\uDFFE\":\"1f596-1f3fe\",\"\\uD83D\\uDD96\\uD83C\\uDFFD\":\"1f596-1f3fd\",\"\\uD83D\\uDD96\\uD83C\\uDFFC\":\"1f596-1f3fc\",\"\\uD83D\\uDD96\\uD83C\\uDFFB\":\"1f596-1f3fb\",\"\\uD83D\\uDD95\\uD83C\\uDFFF\":\"1f595-1f3ff\",\"\\uD83D\\uDD95\\uD83C\\uDFFE\":\"1f595-1f3fe\",\"\\uD83D\\uDD95\\uD83C\\uDFFD\":\"1f595-1f3fd\",\"\\uD83D\\uDD95\\uD83C\\uDFFC\":\"1f595-1f3fc\",\"\\uD83D\\uDD95\\uD83C\\uDFFB\":\"1f595-1f3fb\",\"\\uD83D\\uDD90\\uD83C\\uDFFF\":\"1f590-1f3ff\",\"\\uD83D\\uDD90\\uD83C\\uDFFE\":\"1f590-1f3fe\",\"\\uD83D\\uDD90\\uD83C\\uDFFD\":\"1f590-1f3fd\",\"\\uD83D\\uDD90\\uD83C\\uDFFC\":\"1f590-1f3fc\",\"\\uD83D\\uDD90\\uD83C\\uDFFB\":\"1f590-1f3fb\",\"\\uD83D\\uDD7A\\uD83C\\uDFFF\":\"1f57a-1f3ff\",\"\\uD83D\\uDD7A\\uD83C\\uDFFE\":\"1f57a-1f3fe\",\"\\uD83D\\uDD7A\\uD83C\\uDFFD\":\"1f57a-1f3fd\",\"\\uD83D\\uDD7A\\uD83C\\uDFFC\":\"1f57a-1f3fc\",\"\\uD83D\\uDD7A\\uD83C\\uDFFB\":\"1f57a-1f3fb\",\"\\uD83D\\uDD75\\uD83C\\uDFFF\":\"1f575-1f3ff\",\"\\uD83D\\uDD75\\uD83C\\uDFFE\":\"1f575-1f3fe\",\"\\uD83D\\uDD75\\uD83C\\uDFFD\":\"1f575-1f3fd\",\"\\uD83D\\uDD75\\uD83C\\uDFFC\":\"1f575-1f3fc\",\"\\uD83D\\uDD75\\uD83C\\uDFFB\":\"1f575-1f3fb\",\"\\uD83D\\uDCAA\\uD83C\\uDFFF\":\"1f4aa-1f3ff\",\"\\uD83D\\uDCAA\\uD83C\\uDFFE\":\"1f4aa-1f3fe\",\"\\uD83D\\uDCAA\\uD83C\\uDFFD\":\"1f4aa-1f3fd\",\"\\uD83D\\uDCAA\\uD83C\\uDFFC\":\"1f4aa-1f3fc\",\"\\uD83D\\uDCAA\\uD83C\\uDFFB\":\"1f4aa-1f3fb\",\"\\uD83D\\uDC87\\uD83C\\uDFFF\":\"1f487-1f3ff\",\"\\uD83D\\uDC87\\uD83C\\uDFFE\":\"1f487-1f3fe\",\"\\uD83D\\uDC87\\uD83C\\uDFFD\":\"1f487-1f3fd\",\"\\uD83D\\uDC87\\uD83C\\uDFFC\":\"1f487-1f3fc\",\"\\uD83D\\uDC87\\uD83C\\uDFFB\":\"1f487-1f3fb\",\"\\uD83D\\uDC86\\uD83C\\uDFFF\":\"1f486-1f3ff\",\"\\uD83D\\uDC86\\uD83C\\uDFFE\":\"1f486-1f3fe\",\"\\uD83D\\uDC86\\uD83C\\uDFFD\":\"1f486-1f3fd\",\"\\uD83D\\uDC86\\uD83C\\uDFFC\":\"1f486-1f3fc\",\"\\uD83D\\uDC86\\uD83C\\uDFFB\":\"1f486-1f3fb\",\"\\uD83D\\uDC85\\uD83C\\uDFFF\":\"1f485-1f3ff\",\"\\uD83D\\uDC85\\uD83C\\uDFFE\":\"1f485-1f3fe\",\"\\uD83D\\uDC85\\uD83C\\uDFFD\":\"1f485-1f3fd\",\"\\uD83D\\uDC85\\uD83C\\uDFFC\":\"1f485-1f3fc\",\"\\uD83D\\uDC85\\uD83C\\uDFFB\":\"1f485-1f3fb\",\"\\uD83D\\uDC83\\uD83C\\uDFFF\":\"1f483-1f3ff\",\"\\uD83D\\uDC83\\uD83C\\uDFFE\":\"1f483-1f3fe\",\"\\uD83D\\uDC83\\uD83C\\uDFFD\":\"1f483-1f3fd\",\"\\uD83D\\uDC83\\uD83C\\uDFFC\":\"1f483-1f3fc\",\"\\uD83D\\uDC83\\uD83C\\uDFFB\":\"1f483-1f3fb\",\"\\uD83D\\uDC82\\uD83C\\uDFFF\":\"1f482-1f3ff\",\"\\uD83D\\uDC82\\uD83C\\uDFFE\":\"1f482-1f3fe\",\"\\uD83D\\uDC82\\uD83C\\uDFFD\":\"1f482-1f3fd\",\"\\uD83D\\uDC82\\uD83C\\uDFFC\":\"1f482-1f3fc\",\"\\uD83D\\uDC82\\uD83C\\uDFFB\":\"1f482-1f3fb\",\"\\uD83D\\uDC81\\uD83C\\uDFFF\":\"1f481-1f3ff\",\"\\uD83D\\uDC81\\uD83C\\uDFFE\":\"1f481-1f3fe\",\"\\uD83D\\uDC81\\uD83C\\uDFFD\":\"1f481-1f3fd\",\"\\uD83D\\uDC81\\uD83C\\uDFFC\":\"1f481-1f3fc\",\"\\uD83D\\uDC81\\uD83C\\uDFFB\":\"1f481-1f3fb\",\"\\uD83D\\uDC7C\\uD83C\\uDFFF\":\"1f47c-1f3ff\",\"\\uD83D\\uDC7C\\uD83C\\uDFFE\":\"1f47c-1f3fe\",\"\\uD83D\\uDC7C\\uD83C\\uDFFD\":\"1f47c-1f3fd\",\"\\uD83D\\uDC7C\\uD83C\\uDFFC\":\"1f47c-1f3fc\",\"\\uD83D\\uDC7C\\uD83C\\uDFFB\":\"1f47c-1f3fb\",\"\\uD83D\\uDC78\\uD83C\\uDFFF\":\"1f478-1f3ff\",\"\\uD83D\\uDC78\\uD83C\\uDFFE\":\"1f478-1f3fe\",\"\\uD83D\\uDC78\\uD83C\\uDFFD\":\"1f478-1f3fd\",\"\\uD83D\\uDC78\\uD83C\\uDFFC\":\"1f478-1f3fc\",\"\\uD83D\\uDC78\\uD83C\\uDFFB\":\"1f478-1f3fb\",\"\\uD83D\\uDC77\\uD83C\\uDFFF\":\"1f477-1f3ff\",\"\\uD83D\\uDC77\\uD83C\\uDFFE\":\"1f477-1f3fe\",\"\\uD83D\\uDC77\\uD83C\\uDFFD\":\"1f477-1f3fd\",\"\\uD83D\\uDC77\\uD83C\\uDFFC\":\"1f477-1f3fc\",\"\\uD83D\\uDC77\\uD83C\\uDFFB\":\"1f477-1f3fb\",\"\\uD83D\\uDC76\\uD83C\\uDFFF\":\"1f476-1f3ff\",\"\\uD83D\\uDC76\\uD83C\\uDFFE\":\"1f476-1f3fe\",\"\\uD83D\\uDC76\\uD83C\\uDFFD\":\"1f476-1f3fd\",\"\\uD83D\\uDC76\\uD83C\\uDFFC\":\"1f476-1f3fc\",\"\\uD83D\\uDC76\\uD83C\\uDFFB\":\"1f476-1f3fb\",\"\\uD83D\\uDC75\\uD83C\\uDFFF\":\"1f475-1f3ff\",\"\\uD83D\\uDC75\\uD83C\\uDFFE\":\"1f475-1f3fe\",\"\\uD83D\\uDC75\\uD83C\\uDFFD\":\"1f475-1f3fd\",\"\\uD83D\\uDC75\\uD83C\\uDFFC\":\"1f475-1f3fc\",\"\\uD83D\\uDC75\\uD83C\\uDFFB\":\"1f475-1f3fb\",\"\\uD83D\\uDC74\\uD83C\\uDFFF\":\"1f474-1f3ff\",\"\\uD83D\\uDC74\\uD83C\\uDFFE\":\"1f474-1f3fe\",\"\\uD83D\\uDC74\\uD83C\\uDFFD\":\"1f474-1f3fd\",\"\\uD83D\\uDC74\\uD83C\\uDFFC\":\"1f474-1f3fc\",\"\\uD83D\\uDC74\\uD83C\\uDFFB\":\"1f474-1f3fb\",\"\\uD83D\\uDC73\\uD83C\\uDFFF\":\"1f473-1f3ff\",\"\\uD83D\\uDC73\\uD83C\\uDFFE\":\"1f473-1f3fe\",\"\\uD83D\\uDC73\\uD83C\\uDFFD\":\"1f473-1f3fd\",\"\\uD83D\\uDC73\\uD83C\\uDFFC\":\"1f473-1f3fc\",\"\\uD83D\\uDC73\\uD83C\\uDFFB\":\"1f473-1f3fb\",\"\\uD83D\\uDC72\\uD83C\\uDFFF\":\"1f472-1f3ff\",\"\\uD83D\\uDC72\\uD83C\\uDFFE\":\"1f472-1f3fe\",\"\\uD83D\\uDC72\\uD83C\\uDFFD\":\"1f472-1f3fd\",\"\\uD83D\\uDC72\\uD83C\\uDFFC\":\"1f472-1f3fc\",\"\\uD83D\\uDC72\\uD83C\\uDFFB\":\"1f472-1f3fb\",\"\\uD83D\\uDC71\\uD83C\\uDFFF\":\"1f471-1f3ff\",\"\\uD83D\\uDC71\\uD83C\\uDFFE\":\"1f471-1f3fe\",\"\\uD83D\\uDC71\\uD83C\\uDFFD\":\"1f471-1f3fd\",\"\\uD83D\\uDC71\\uD83C\\uDFFC\":\"1f471-1f3fc\",\"\\uD83D\\uDC71\\uD83C\\uDFFB\":\"1f471-1f3fb\",\"\\uD83D\\uDC70\\uD83C\\uDFFF\":\"1f470-1f3ff\",\"\\uD83D\\uDC70\\uD83C\\uDFFE\":\"1f470-1f3fe\",\"\\uD83D\\uDC70\\uD83C\\uDFFD\":\"1f470-1f3fd\",\"\\uD83D\\uDC70\\uD83C\\uDFFC\":\"1f470-1f3fc\",\"\\uD83D\\uDC70\\uD83C\\uDFFB\":\"1f470-1f3fb\",\"\\uD83D\\uDC6E\\uD83C\\uDFFF\":\"1f46e-1f3ff\",\"\\uD83D\\uDC6E\\uD83C\\uDFFE\":\"1f46e-1f3fe\",\"\\uD83D\\uDC6E\\uD83C\\uDFFD\":\"1f46e-1f3fd\",\"\\uD83D\\uDC6E\\uD83C\\uDFFC\":\"1f46e-1f3fc\",\"\\uD83D\\uDC6E\\uD83C\\uDFFB\":\"1f46e-1f3fb\",\"\\uD83D\\uDC69\\uD83C\\uDFFF\":\"1f469-1f3ff\",\"\\uD83D\\uDC69\\uD83C\\uDFFE\":\"1f469-1f3fe\",\"\\uD83D\\uDC69\\uD83C\\uDFFD\":\"1f469-1f3fd\",\"\\uD83D\\uDC69\\uD83C\\uDFFC\":\"1f469-1f3fc\",\"\\uD83D\\uDC69\\uD83C\\uDFFB\":\"1f469-1f3fb\",\"\\uD83D\\uDC68\\uD83C\\uDFFF\":\"1f468-1f3ff\",\"\\uD83D\\uDC68\\uD83C\\uDFFE\":\"1f468-1f3fe\",\"\\uD83D\\uDC68\\uD83C\\uDFFD\":\"1f468-1f3fd\",\"\\uD83D\\uDC68\\uD83C\\uDFFC\":\"1f468-1f3fc\",\"\\uD83D\\uDC68\\uD83C\\uDFFB\":\"1f468-1f3fb\",\"\\uD83D\\uDC67\\uD83C\\uDFFF\":\"1f467-1f3ff\",\"\\uD83D\\uDC67\\uD83C\\uDFFE\":\"1f467-1f3fe\",\"\\uD83D\\uDC67\\uD83C\\uDFFD\":\"1f467-1f3fd\",\"\\uD83D\\uDC67\\uD83C\\uDFFC\":\"1f467-1f3fc\",\"\\uD83D\\uDC67\\uD83C\\uDFFB\":\"1f467-1f3fb\",\"\\uD83D\\uDC66\\uD83C\\uDFFF\":\"1f466-1f3ff\",\"\\uD83D\\uDC66\\uD83C\\uDFFE\":\"1f466-1f3fe\",\"\\uD83D\\uDC66\\uD83C\\uDFFD\":\"1f466-1f3fd\",\"\\uD83D\\uDC66\\uD83C\\uDFFC\":\"1f466-1f3fc\",\"\\uD83D\\uDC66\\uD83C\\uDFFB\":\"1f466-1f3fb\",\"\\uD83D\\uDC50\\uD83C\\uDFFF\":\"1f450-1f3ff\",\"\\uD83D\\uDC50\\uD83C\\uDFFE\":\"1f450-1f3fe\",\"\\uD83D\\uDC50\\uD83C\\uDFFD\":\"1f450-1f3fd\",\"\\uD83D\\uDC50\\uD83C\\uDFFC\":\"1f450-1f3fc\",\"\\uD83D\\uDC50\\uD83C\\uDFFB\":\"1f450-1f3fb\",\"\\uD83D\\uDC4F\\uD83C\\uDFFF\":\"1f44f-1f3ff\",\"\\uD83D\\uDC4F\\uD83C\\uDFFE\":\"1f44f-1f3fe\",\"\\uD83D\\uDC4F\\uD83C\\uDFFD\":\"1f44f-1f3fd\",\"\\uD83D\\uDC4F\\uD83C\\uDFFC\":\"1f44f-1f3fc\",\"\\uD83D\\uDC4F\\uD83C\\uDFFB\":\"1f44f-1f3fb\",\"\\uD83D\\uDC4E\\uD83C\\uDFFF\":\"1f44e-1f3ff\",\"\\uD83D\\uDC4E\\uD83C\\uDFFE\":\"1f44e-1f3fe\",\"\\uD83D\\uDC4E\\uD83C\\uDFFD\":\"1f44e-1f3fd\",\"\\uD83D\\uDC4E\\uD83C\\uDFFC\":\"1f44e-1f3fc\",\"\\uD83D\\uDC4E\\uD83C\\uDFFB\":\"1f44e-1f3fb\",\"\\uD83D\\uDC4D\\uD83C\\uDFFF\":\"1f44d-1f3ff\",\"\\uD83D\\uDC4D\\uD83C\\uDFFE\":\"1f44d-1f3fe\",\"\\uD83D\\uDC4D\\uD83C\\uDFFD\":\"1f44d-1f3fd\",\"\\uD83D\\uDC4D\\uD83C\\uDFFC\":\"1f44d-1f3fc\",\"\\uD83D\\uDC4D\\uD83C\\uDFFB\":\"1f44d-1f3fb\",\"\\uD83D\\uDC4C\\uD83C\\uDFFF\":\"1f44c-1f3ff\",\"\\uD83D\\uDC4C\\uD83C\\uDFFE\":\"1f44c-1f3fe\",\"\\uD83D\\uDC4C\\uD83C\\uDFFD\":\"1f44c-1f3fd\",\"\\uD83D\\uDC4C\\uD83C\\uDFFC\":\"1f44c-1f3fc\",\"\\uD83D\\uDC4C\\uD83C\\uDFFB\":\"1f44c-1f3fb\",\"\\uD83D\\uDC4B\\uD83C\\uDFFF\":\"1f44b-1f3ff\",\"\\uD83D\\uDC4B\\uD83C\\uDFFE\":\"1f44b-1f3fe\",\"\\uD83D\\uDC4B\\uD83C\\uDFFD\":\"1f44b-1f3fd\",\"\\uD83D\\uDC4B\\uD83C\\uDFFC\":\"1f44b-1f3fc\",\"\\uD83D\\uDC4B\\uD83C\\uDFFB\":\"1f44b-1f3fb\",\"\\uD83D\\uDC4A\\uD83C\\uDFFF\":\"1f44a-1f3ff\",\"\\uD83D\\uDC4A\\uD83C\\uDFFE\":\"1f44a-1f3fe\",\"\\uD83D\\uDC4A\\uD83C\\uDFFD\":\"1f44a-1f3fd\",\"\\uD83D\\uDC4A\\uD83C\\uDFFC\":\"1f44a-1f3fc\",\"\\uD83D\\uDC4A\\uD83C\\uDFFB\":\"1f44a-1f3fb\",\"\\uD83D\\uDC49\\uD83C\\uDFFF\":\"1f449-1f3ff\",\"\\uD83D\\uDC49\\uD83C\\uDFFE\":\"1f449-1f3fe\",\"\\uD83D\\uDC49\\uD83C\\uDFFD\":\"1f449-1f3fd\",\"\\uD83D\\uDC49\\uD83C\\uDFFC\":\"1f449-1f3fc\",\"\\uD83D\\uDC49\\uD83C\\uDFFB\":\"1f449-1f3fb\",\"\\uD83D\\uDC48\\uD83C\\uDFFF\":\"1f448-1f3ff\",\"\\uD83D\\uDC48\\uD83C\\uDFFE\":\"1f448-1f3fe\",\"\\uD83D\\uDC48\\uD83C\\uDFFD\":\"1f448-1f3fd\",\"\\uD83D\\uDC48\\uD83C\\uDFFC\":\"1f448-1f3fc\",\"\\uD83D\\uDC48\\uD83C\\uDFFB\":\"1f448-1f3fb\",\"\\uD83D\\uDC47\\uD83C\\uDFFF\":\"1f447-1f3ff\",\"\\uD83D\\uDC47\\uD83C\\uDFFE\":\"1f447-1f3fe\",\"\\uD83D\\uDC47\\uD83C\\uDFFD\":\"1f447-1f3fd\",\"\\uD83D\\uDC47\\uD83C\\uDFFC\":\"1f447-1f3fc\",\"\\uD83D\\uDC47\\uD83C\\uDFFB\":\"1f447-1f3fb\",\"\\uD83D\\uDC46\\uD83C\\uDFFF\":\"1f446-1f3ff\",\"\\uD83D\\uDC46\\uD83C\\uDFFE\":\"1f446-1f3fe\",\"\\uD83D\\uDC46\\uD83C\\uDFFD\":\"1f446-1f3fd\",\"\\uD83D\\uDC46\\uD83C\\uDFFC\":\"1f446-1f3fc\",\"\\uD83D\\uDC46\\uD83C\\uDFFB\":\"1f446-1f3fb\",\"\\uD83D\\uDC43\\uD83C\\uDFFF\":\"1f443-1f3ff\",\"\\uD83D\\uDC43\\uD83C\\uDFFE\":\"1f443-1f3fe\",\"\\uD83D\\uDC43\\uD83C\\uDFFD\":\"1f443-1f3fd\",\"\\uD83D\\uDC43\\uD83C\\uDFFC\":\"1f443-1f3fc\",\"\\uD83D\\uDC43\\uD83C\\uDFFB\":\"1f443-1f3fb\",\"\\uD83D\\uDC42\\uD83C\\uDFFF\":\"1f442-1f3ff\",\"\\uD83D\\uDC42\\uD83C\\uDFFE\":\"1f442-1f3fe\",\"\\uD83D\\uDC42\\uD83C\\uDFFD\":\"1f442-1f3fd\",\"\\uD83D\\uDC42\\uD83C\\uDFFC\":\"1f442-1f3fc\",\"\\uD83D\\uDC42\\uD83C\\uDFFB\":\"1f442-1f3fb\",\"\\uD83C\\uDFCB\\uD83C\\uDFFF\":\"1f3cb-1f3ff\",\"\\uD83C\\uDFCB\\uD83C\\uDFFE\":\"1f3cb-1f3fe\",\"\\uD83C\\uDFCB\\uD83C\\uDFFD\":\"1f3cb-1f3fd\",\"\\uD83C\\uDFCB\\uD83C\\uDFFC\":\"1f3cb-1f3fc\",\"\\uD83C\\uDFCB\\uD83C\\uDFFB\":\"1f3cb-1f3fb\",\"\\uD83C\\uDFCA\\uD83C\\uDFFF\":\"1f3ca-1f3ff\",\"\\uD83C\\uDFCA\\uD83C\\uDFFE\":\"1f3ca-1f3fe\",\"\\uD83C\\uDFCA\\uD83C\\uDFFD\":\"1f3ca-1f3fd\",\"\\uD83C\\uDFCA\\uD83C\\uDFFC\":\"1f3ca-1f3fc\",\"\\uD83C\\uDFCA\\uD83C\\uDFFB\":\"1f3ca-1f3fb\",\"\\uD83C\\uDFC7\\uD83C\\uDFFF\":\"1f3c7-1f3ff\",\"\\uD83C\\uDFC7\\uD83C\\uDFFE\":\"1f3c7-1f3fe\",\"\\uD83C\\uDFC7\\uD83C\\uDFFD\":\"1f3c7-1f3fd\",\"\\uD83C\\uDFC7\\uD83C\\uDFFC\":\"1f3c7-1f3fc\",\"\\uD83C\\uDFC7\\uD83C\\uDFFB\":\"1f3c7-1f3fb\",\"\\uD83C\\uDFC4\\uD83C\\uDFFF\":\"1f3c4-1f3ff\",\"\\uD83C\\uDFC4\\uD83C\\uDFFE\":\"1f3c4-1f3fe\",\"\\uD83C\\uDFC4\\uD83C\\uDFFD\":\"1f3c4-1f3fd\",\"\\uD83C\\uDFC4\\uD83C\\uDFFC\":\"1f3c4-1f3fc\",\"\\uD83C\\uDFC4\\uD83C\\uDFFB\":\"1f3c4-1f3fb\",\"\\uD83C\\uDFC3\\uD83C\\uDFFF\":\"1f3c3-1f3ff\",\"\\uD83C\\uDFC3\\uD83C\\uDFFE\":\"1f3c3-1f3fe\",\"\\uD83C\\uDFC3\\uD83C\\uDFFD\":\"1f3c3-1f3fd\",\"\\uD83C\\uDFC3\\uD83C\\uDFFC\":\"1f3c3-1f3fc\",\"\\uD83C\\uDFC3\\uD83C\\uDFFB\":\"1f3c3-1f3fb\",\"\\uD83C\\uDF85\\uD83C\\uDFFF\":\"1f385-1f3ff\",\"\\uD83C\\uDF85\\uD83C\\uDFFE\":\"1f385-1f3fe\",\"\\uD83C\\uDF85\\uD83C\\uDFFD\":\"1f385-1f3fd\",\"\\uD83C\\uDF85\\uD83C\\uDFFC\":\"1f385-1f3fc\",\"\\uD83C\\uDF85\\uD83C\\uDFFB\":\"1f385-1f3fb\",\"\\uD83C\\uDDFF\\uD83C\\uDDFC\":\"1f1ff-1f1fc\",\"\\uD83C\\uDDFF\\uD83C\\uDDF2\":\"1f1ff-1f1f2\",\"\\uD83C\\uDDFF\\uD83C\\uDDE6\":\"1f1ff-1f1e6\",\"\\uD83C\\uDDFE\\uD83C\\uDDF9\":\"1f1fe-1f1f9\",\"\\uD83C\\uDDFE\\uD83C\\uDDEA\":\"1f1fe-1f1ea\",\"\\uD83C\\uDDFD\\uD83C\\uDDF0\":\"1f1fd-1f1f0\",\"\\uD83C\\uDDFC\\uD83C\\uDDF8\":\"1f1fc-1f1f8\",\"\\uD83C\\uDDFC\\uD83C\\uDDEB\":\"1f1fc-1f1eb\",\"\\uD83C\\uDDFB\\uD83C\\uDDFA\":\"1f1fb-1f1fa\",\"\\uD83C\\uDDFB\\uD83C\\uDDF3\":\"1f1fb-1f1f3\",\"\\uD83C\\uDDFB\\uD83C\\uDDEE\":\"1f1fb-1f1ee\",\"\\uD83C\\uDDFB\\uD83C\\uDDEC\":\"1f1fb-1f1ec\",\"\\uD83C\\uDDFB\\uD83C\\uDDEA\":\"1f1fb-1f1ea\",\"\\uD83C\\uDDFB\\uD83C\\uDDE8\":\"1f1fb-1f1e8\",\"\\uD83C\\uDDFB\\uD83C\\uDDE6\":\"1f1fb-1f1e6\",\"\\uD83C\\uDDFA\\uD83C\\uDDFF\":\"1f1fa-1f1ff\",\"\\uD83C\\uDDFA\\uD83C\\uDDFE\":\"1f1fa-1f1fe\",\"\\uD83C\\uDDFA\\uD83C\\uDDF8\":\"1f1fa-1f1f8\",\"\\uD83C\\uDDFA\\uD83C\\uDDF2\":\"1f1fa-1f1f2\",\"\\uD83C\\uDDFA\\uD83C\\uDDEC\":\"1f1fa-1f1ec\",\"\\uD83C\\uDDFA\\uD83C\\uDDE6\":\"1f1fa-1f1e6\",\"\\uD83C\\uDDF9\\uD83C\\uDDFF\":\"1f1f9-1f1ff\",\"\\uD83C\\uDDF9\\uD83C\\uDDFC\":\"1f1f9-1f1fc\",\"\\uD83C\\uDDF9\\uD83C\\uDDFB\":\"1f1f9-1f1fb\",\"\\uD83C\\uDDF9\\uD83C\\uDDF9\":\"1f1f9-1f1f9\",\"\\uD83C\\uDDF9\\uD83C\\uDDF7\":\"1f1f9-1f1f7\",\"\\uD83C\\uDDF9\\uD83C\\uDDF4\":\"1f1f9-1f1f4\",\"\\uD83C\\uDDF9\\uD83C\\uDDF3\":\"1f1f9-1f1f3\",\"\\uD83C\\uDDF9\\uD83C\\uDDF2\":\"1f1f9-1f1f2\",\"\\uD83C\\uDDF9\\uD83C\\uDDF1\":\"1f1f9-1f1f1\",\"\\uD83C\\uDDF9\\uD83C\\uDDF0\":\"1f1f9-1f1f0\",\"\\uD83C\\uDDF9\\uD83C\\uDDEF\":\"1f1f9-1f1ef\",\"\\uD83C\\uDDF9\\uD83C\\uDDED\":\"1f1f9-1f1ed\",\"\\uD83C\\uDDF9\\uD83C\\uDDEC\":\"1f1f9-1f1ec\",\"\\uD83C\\uDDF9\\uD83C\\uDDEB\":\"1f1f9-1f1eb\",\"\\uD83C\\uDDF9\\uD83C\\uDDE9\":\"1f1f9-1f1e9\",\"\\uD83C\\uDDF9\\uD83C\\uDDE8\":\"1f1f9-1f1e8\",\"\\uD83C\\uDDF9\\uD83C\\uDDE6\":\"1f1f9-1f1e6\",\"\\uD83C\\uDDF8\\uD83C\\uDDFF\":\"1f1f8-1f1ff\",\"\\uD83C\\uDDF8\\uD83C\\uDDFE\":\"1f1f8-1f1fe\",\"\\uD83C\\uDDF8\\uD83C\\uDDFD\":\"1f1f8-1f1fd\",\"\\uD83C\\uDDF8\\uD83C\\uDDFB\":\"1f1f8-1f1fb\",\"\\uD83C\\uDDF8\\uD83C\\uDDF9\":\"1f1f8-1f1f9\",\"\\uD83C\\uDDF8\\uD83C\\uDDF8\":\"1f1f8-1f1f8\",\"\\uD83C\\uDDF8\\uD83C\\uDDF7\":\"1f1f8-1f1f7\",\"\\uD83C\\uDDF8\\uD83C\\uDDF4\":\"1f1f8-1f1f4\",\"\\uD83C\\uDDF8\\uD83C\\uDDF3\":\"1f1f8-1f1f3\",\"\\uD83C\\uDDF8\\uD83C\\uDDF2\":\"1f1f8-1f1f2\",\"\\uD83C\\uDDF8\\uD83C\\uDDF1\":\"1f1f8-1f1f1\",\"\\uD83C\\uDDF8\\uD83C\\uDDF0\":\"1f1f8-1f1f0\",\"\\uD83C\\uDDF8\\uD83C\\uDDEF\":\"1f1f8-1f1ef\",\"\\uD83C\\uDDF8\\uD83C\\uDDEE\":\"1f1f8-1f1ee\",\"\\uD83C\\uDDF8\\uD83C\\uDDED\":\"1f1f8-1f1ed\",\"\\uD83C\\uDDF8\\uD83C\\uDDEC\":\"1f1f8-1f1ec\",\"\\uD83C\\uDDF8\\uD83C\\uDDEA\":\"1f1f8-1f1ea\",\"\\uD83C\\uDDF8\\uD83C\\uDDE9\":\"1f1f8-1f1e9\",\"\\uD83C\\uDDF8\\uD83C\\uDDE8\":\"1f1f8-1f1e8\",\"\\uD83C\\uDDF8\\uD83C\\uDDE7\":\"1f1f8-1f1e7\",\"\\uD83C\\uDDF8\\uD83C\\uDDE6\":\"1f1f8-1f1e6\",\"\\uD83C\\uDDF7\\uD83C\\uDDFC\":\"1f1f7-1f1fc\",\"\\uD83C\\uDDF7\\uD83C\\uDDFA\":\"1f1f7-1f1fa\",\"\\uD83C\\uDDF7\\uD83C\\uDDF8\":\"1f1f7-1f1f8\",\"\\uD83C\\uDDF7\\uD83C\\uDDF4\":\"1f1f7-1f1f4\",\"\\uD83C\\uDDF7\\uD83C\\uDDEA\":\"1f1f7-1f1ea\",\"\\uD83C\\uDDF6\\uD83C\\uDDE6\":\"1f1f6-1f1e6\",\"\\uD83C\\uDDF5\\uD83C\\uDDFE\":\"1f1f5-1f1fe\",\"\\uD83C\\uDDF5\\uD83C\\uDDFC\":\"1f1f5-1f1fc\",\"\\uD83C\\uDDF5\\uD83C\\uDDF9\":\"1f1f5-1f1f9\",\"\\uD83C\\uDDF5\\uD83C\\uDDF8\":\"1f1f5-1f1f8\",\"\\uD83C\\uDDF5\\uD83C\\uDDF7\":\"1f1f5-1f1f7\",\"\\uD83C\\uDDF5\\uD83C\\uDDF3\":\"1f1f5-1f1f3\",\"\\uD83C\\uDDF5\\uD83C\\uDDF2\":\"1f1f5-1f1f2\",\"\\uD83C\\uDDF5\\uD83C\\uDDF1\":\"1f1f5-1f1f1\",\"\\uD83C\\uDDF5\\uD83C\\uDDF0\":\"1f1f5-1f1f0\",\"\\uD83C\\uDDF5\\uD83C\\uDDED\":\"1f1f5-1f1ed\",\"\\uD83C\\uDDF5\\uD83C\\uDDEC\":\"1f1f5-1f1ec\",\"\\uD83C\\uDDF5\\uD83C\\uDDEB\":\"1f1f5-1f1eb\",\"\\uD83C\\uDDF5\\uD83C\\uDDEA\":\"1f1f5-1f1ea\",\"\\uD83C\\uDDF5\\uD83C\\uDDE6\":\"1f1f5-1f1e6\",\"\\uD83C\\uDDF4\\uD83C\\uDDF2\":\"1f1f4-1f1f2\",\"\\uD83C\\uDDF3\\uD83C\\uDDFF\":\"1f1f3-1f1ff\",\"\\uD83C\\uDDF3\\uD83C\\uDDFA\":\"1f1f3-1f1fa\",\"\\uD83C\\uDDF3\\uD83C\\uDDF7\":\"1f1f3-1f1f7\",\"\\uD83C\\uDDF3\\uD83C\\uDDF5\":\"1f1f3-1f1f5\",\"\\uD83C\\uDDF3\\uD83C\\uDDF4\":\"1f1f3-1f1f4\",\"\\uD83C\\uDDF3\\uD83C\\uDDF1\":\"1f1f3-1f1f1\",\"\\uD83C\\uDDF3\\uD83C\\uDDEE\":\"1f1f3-1f1ee\",\"\\uD83C\\uDDF3\\uD83C\\uDDEC\":\"1f1f3-1f1ec\",\"\\uD83C\\uDDF3\\uD83C\\uDDEB\":\"1f1f3-1f1eb\",\"\\uD83C\\uDDF3\\uD83C\\uDDEA\":\"1f1f3-1f1ea\",\"\\uD83C\\uDDF3\\uD83C\\uDDE8\":\"1f1f3-1f1e8\",\"\\uD83C\\uDDF3\\uD83C\\uDDE6\":\"1f1f3-1f1e6\",\"\\uD83C\\uDDF2\\uD83C\\uDDFF\":\"1f1f2-1f1ff\",\"\\uD83C\\uDDF2\\uD83C\\uDDFE\":\"1f1f2-1f1fe\",\"\\uD83C\\uDDF2\\uD83C\\uDDFD\":\"1f1f2-1f1fd\",\"\\uD83C\\uDDF2\\uD83C\\uDDFC\":\"1f1f2-1f1fc\",\"\\uD83C\\uDDF2\\uD83C\\uDDFB\":\"1f1f2-1f1fb\",\"\\uD83C\\uDDF2\\uD83C\\uDDFA\":\"1f1f2-1f1fa\",\"\\uD83C\\uDDF2\\uD83C\\uDDF9\":\"1f1f2-1f1f9\",\"\\uD83C\\uDDF2\\uD83C\\uDDF8\":\"1f1f2-1f1f8\",\"\\uD83C\\uDDF2\\uD83C\\uDDF7\":\"1f1f2-1f1f7\",\"\\uD83C\\uDDF2\\uD83C\\uDDF6\":\"1f1f2-1f1f6\",\"\\uD83C\\uDDF2\\uD83C\\uDDF5\":\"1f1f2-1f1f5\",\"\\uD83C\\uDDF2\\uD83C\\uDDF4\":\"1f1f2-1f1f4\",\"\\uD83C\\uDDF2\\uD83C\\uDDF3\":\"1f1f2-1f1f3\",\"\\uD83C\\uDDF2\\uD83C\\uDDF2\":\"1f1f2-1f1f2\",\"\\uD83C\\uDDF2\\uD83C\\uDDF1\":\"1f1f2-1f1f1\",\"\\uD83C\\uDDF2\\uD83C\\uDDF0\":\"1f1f2-1f1f0\",\"\\uD83C\\uDDF2\\uD83C\\uDDED\":\"1f1f2-1f1ed\",\"\\uD83C\\uDDF2\\uD83C\\uDDEC\":\"1f1f2-1f1ec\",\"\\uD83C\\uDDF2\\uD83C\\uDDEB\":\"1f1f2-1f1eb\",\"\\uD83C\\uDDF2\\uD83C\\uDDEA\":\"1f1f2-1f1ea\",\"\\uD83C\\uDDF2\\uD83C\\uDDE9\":\"1f1f2-1f1e9\",\"\\uD83C\\uDDF2\\uD83C\\uDDE8\":\"1f1f2-1f1e8\",\"\\uD83C\\uDDF2\\uD83C\\uDDE6\":\"1f1f2-1f1e6\",\"\\uD83C\\uDDF1\\uD83C\\uDDFE\":\"1f1f1-1f1fe\",\"\\uD83C\\uDDF1\\uD83C\\uDDFB\":\"1f1f1-1f1fb\",\"\\uD83C\\uDDF1\\uD83C\\uDDFA\":\"1f1f1-1f1fa\",\"\\uD83C\\uDDF1\\uD83C\\uDDF9\":\"1f1f1-1f1f9\",\"\\uD83C\\uDDF1\\uD83C\\uDDF8\":\"1f1f1-1f1f8\",\"\\uD83C\\uDDF1\\uD83C\\uDDF7\":\"1f1f1-1f1f7\",\"\\uD83C\\uDDF1\\uD83C\\uDDF0\":\"1f1f1-1f1f0\",\"\\uD83C\\uDDF1\\uD83C\\uDDEE\":\"1f1f1-1f1ee\",\"\\uD83C\\uDDF1\\uD83C\\uDDE8\":\"1f1f1-1f1e8\",\"\\uD83C\\uDDF1\\uD83C\\uDDE7\":\"1f1f1-1f1e7\",\"\\uD83C\\uDDF1\\uD83C\\uDDE6\":\"1f1f1-1f1e6\",\"\\uD83C\\uDDF0\\uD83C\\uDDFF\":\"1f1f0-1f1ff\",\"\\uD83C\\uDDF0\\uD83C\\uDDFE\":\"1f1f0-1f1fe\",\"\\uD83C\\uDDF0\\uD83C\\uDDFC\":\"1f1f0-1f1fc\",\"\\uD83C\\uDDF0\\uD83C\\uDDF7\":\"1f1f0-1f1f7\",\"\\uD83C\\uDDF0\\uD83C\\uDDF5\":\"1f1f0-1f1f5\",\"\\uD83C\\uDDF0\\uD83C\\uDDF3\":\"1f1f0-1f1f3\",\"\\uD83C\\uDDF0\\uD83C\\uDDF2\":\"1f1f0-1f1f2\",\"\\uD83C\\uDDF0\\uD83C\\uDDEE\":\"1f1f0-1f1ee\",\"\\uD83C\\uDDF0\\uD83C\\uDDED\":\"1f1f0-1f1ed\",\"\\uD83C\\uDDF0\\uD83C\\uDDEC\":\"1f1f0-1f1ec\",\"\\uD83C\\uDDF0\\uD83C\\uDDEA\":\"1f1f0-1f1ea\",\"\\uD83C\\uDDEF\\uD83C\\uDDF5\":\"1f1ef-1f1f5\",\"\\uD83C\\uDDEF\\uD83C\\uDDF4\":\"1f1ef-1f1f4\",\"\\uD83C\\uDDEF\\uD83C\\uDDF2\":\"1f1ef-1f1f2\",\"\\uD83C\\uDDEF\\uD83C\\uDDEA\":\"1f1ef-1f1ea\",\"\\uD83C\\uDDEE\\uD83C\\uDDF9\":\"1f1ee-1f1f9\",\"\\uD83C\\uDDEE\\uD83C\\uDDF8\":\"1f1ee-1f1f8\",\"\\uD83C\\uDDEE\\uD83C\\uDDF7\":\"1f1ee-1f1f7\",\"\\uD83C\\uDDEE\\uD83C\\uDDF6\":\"1f1ee-1f1f6\",\"\\uD83C\\uDDEE\\uD83C\\uDDF4\":\"1f1ee-1f1f4\",\"\\uD83C\\uDDEE\\uD83C\\uDDF3\":\"1f1ee-1f1f3\",\"\\uD83C\\uDDEE\\uD83C\\uDDF2\":\"1f1ee-1f1f2\",\"\\uD83C\\uDDEE\\uD83C\\uDDF1\":\"1f1ee-1f1f1\",\"\\uD83C\\uDDEE\\uD83C\\uDDEA\":\"1f1ee-1f1ea\",\"\\uD83C\\uDDEE\\uD83C\\uDDE9\":\"1f1ee-1f1e9\",\"\\uD83C\\uDDEE\\uD83C\\uDDE8\":\"1f1ee-1f1e8\",\"\\uD83C\\uDDED\\uD83C\\uDDFA\":\"1f1ed-1f1fa\",\"\\uD83C\\uDDED\\uD83C\\uDDF9\":\"1f1ed-1f1f9\",\"\\uD83C\\uDDED\\uD83C\\uDDF7\":\"1f1ed-1f1f7\",\"\\uD83C\\uDDED\\uD83C\\uDDF3\":\"1f1ed-1f1f3\",\"\\uD83C\\uDDED\\uD83C\\uDDF2\":\"1f1ed-1f1f2\",\"\\uD83C\\uDDED\\uD83C\\uDDF0\":\"1f1ed-1f1f0\",\"\\uD83C\\uDDEC\\uD83C\\uDDFE\":\"1f1ec-1f1fe\",\"\\uD83C\\uDDEC\\uD83C\\uDDFC\":\"1f1ec-1f1fc\",\"\\uD83C\\uDDEC\\uD83C\\uDDFA\":\"1f1ec-1f1fa\",\"\\uD83C\\uDDEC\\uD83C\\uDDF9\":\"1f1ec-1f1f9\",\"\\uD83C\\uDDEC\\uD83C\\uDDF8\":\"1f1ec-1f1f8\",\"\\uD83C\\uDDEC\\uD83C\\uDDF7\":\"1f1ec-1f1f7\",\"\\uD83C\\uDDEC\\uD83C\\uDDF6\":\"1f1ec-1f1f6\",\"\\uD83C\\uDDEC\\uD83C\\uDDF5\":\"1f1ec-1f1f5\",\"\\uD83C\\uDDEC\\uD83C\\uDDF3\":\"1f1ec-1f1f3\",\"\\uD83C\\uDDEC\\uD83C\\uDDF2\":\"1f1ec-1f1f2\",\"\\uD83C\\uDDEC\\uD83C\\uDDF1\":\"1f1ec-1f1f1\",\"\\uD83C\\uDDEC\\uD83C\\uDDEE\":\"1f1ec-1f1ee\",\"\\uD83C\\uDDEC\\uD83C\\uDDED\":\"1f1ec-1f1ed\",\"\\uD83C\\uDDEC\\uD83C\\uDDEC\":\"1f1ec-1f1ec\",\"\\uD83C\\uDDEC\\uD83C\\uDDEB\":\"1f1ec-1f1eb\",\"\\uD83C\\uDDEC\\uD83C\\uDDEA\":\"1f1ec-1f1ea\",\"\\uD83C\\uDDEC\\uD83C\\uDDE9\":\"1f1ec-1f1e9\",\"\\uD83C\\uDDEC\\uD83C\\uDDE7\":\"1f1ec-1f1e7\",\"\\uD83C\\uDDEC\\uD83C\\uDDE6\":\"1f1ec-1f1e6\",\"\\uD83C\\uDDEB\\uD83C\\uDDF7\":\"1f1eb-1f1f7\",\"\\uD83C\\uDDEB\\uD83C\\uDDF4\":\"1f1eb-1f1f4\",\"\\uD83C\\uDDEB\\uD83C\\uDDF2\":\"1f1eb-1f1f2\",\"\\uD83C\\uDDEB\\uD83C\\uDDF0\":\"1f1eb-1f1f0\",\"\\uD83C\\uDDEB\\uD83C\\uDDEF\":\"1f1eb-1f1ef\",\"\\uD83C\\uDDEB\\uD83C\\uDDEE\":\"1f1eb-1f1ee\",\"\\uD83C\\uDDEA\\uD83C\\uDDFA\":\"1f1ea-1f1fa\",\"\\uD83C\\uDDEA\\uD83C\\uDDF9\":\"1f1ea-1f1f9\",\"\\uD83C\\uDDEA\\uD83C\\uDDF8\":\"1f1ea-1f1f8\",\"\\uD83C\\uDDEA\\uD83C\\uDDF7\":\"1f1ea-1f1f7\",\"\\uD83C\\uDDEA\\uD83C\\uDDED\":\"1f1ea-1f1ed\",\"\\uD83C\\uDDEA\\uD83C\\uDDEC\":\"1f1ea-1f1ec\",\"\\uD83C\\uDDEA\\uD83C\\uDDEA\":\"1f1ea-1f1ea\",\"\\uD83C\\uDDEA\\uD83C\\uDDE8\":\"1f1ea-1f1e8\",\"\\uD83C\\uDDEA\\uD83C\\uDDE6\":\"1f1ea-1f1e6\",\"\\uD83C\\uDDE9\\uD83C\\uDDFF\":\"1f1e9-1f1ff\",\"\\uD83C\\uDDE9\\uD83C\\uDDF4\":\"1f1e9-1f1f4\",\"\\uD83C\\uDDE9\\uD83C\\uDDF2\":\"1f1e9-1f1f2\",\"\\uD83C\\uDDE9\\uD83C\\uDDF0\":\"1f1e9-1f1f0\",\"\\uD83C\\uDDE9\\uD83C\\uDDEF\":\"1f1e9-1f1ef\",\"\\uD83C\\uDDE9\\uD83C\\uDDEC\":\"1f1e9-1f1ec\",\"\\uD83C\\uDDE9\\uD83C\\uDDEA\":\"1f1e9-1f1ea\",\"\\uD83C\\uDDE8\\uD83C\\uDDFF\":\"1f1e8-1f1ff\",\"\\uD83C\\uDDE8\\uD83C\\uDDFE\":\"1f1e8-1f1fe\",\"\\uD83C\\uDDE8\\uD83C\\uDDFD\":\"1f1e8-1f1fd\",\"\\uD83C\\uDDE8\\uD83C\\uDDFC\":\"1f1e8-1f1fc\",\"\\uD83C\\uDDE8\\uD83C\\uDDFB\":\"1f1e8-1f1fb\",\"\\uD83C\\uDDE8\\uD83C\\uDDFA\":\"1f1e8-1f1fa\",\"\\uD83C\\uDDE8\\uD83C\\uDDF7\":\"1f1e8-1f1f7\",\"\\uD83C\\uDDE8\\uD83C\\uDDF5\":\"1f1e8-1f1f5\",\"\\uD83C\\uDDE8\\uD83C\\uDDF4\":\"1f1e8-1f1f4\",\"\\uD83C\\uDDE8\\uD83C\\uDDF3\":\"1f1e8-1f1f3\",\"\\uD83C\\uDDE8\\uD83C\\uDDF2\":\"1f1e8-1f1f2\",\"\\uD83C\\uDDE8\\uD83C\\uDDF1\":\"1f1e8-1f1f1\",\"\\uD83C\\uDDE8\\uD83C\\uDDF0\":\"1f1e8-1f1f0\",\"\\uD83C\\uDDE8\\uD83C\\uDDEE\":\"1f1e8-1f1ee\",\"\\uD83C\\uDDE8\\uD83C\\uDDED\":\"1f1e8-1f1ed\",\"\\uD83C\\uDDE8\\uD83C\\uDDEC\":\"1f1e8-1f1ec\",\"\\uD83C\\uDDE8\\uD83C\\uDDEB\":\"1f1e8-1f1eb\",\"\\uD83C\\uDDE8\\uD83C\\uDDE9\":\"1f1e8-1f1e9\",\"\\uD83C\\uDDE8\\uD83C\\uDDE8\":\"1f1e8-1f1e8\",\"\\uD83C\\uDDE8\\uD83C\\uDDE6\":\"1f1e8-1f1e6\",\"\\uD83C\\uDDE7\\uD83C\\uDDFF\":\"1f1e7-1f1ff\",\"\\uD83C\\uDDE7\\uD83C\\uDDFE\":\"1f1e7-1f1fe\",\"\\uD83C\\uDDE7\\uD83C\\uDDFC\":\"1f1e7-1f1fc\",\"\\uD83C\\uDDE7\\uD83C\\uDDFB\":\"1f1e7-1f1fb\",\"\\uD83C\\uDDE7\\uD83C\\uDDF9\":\"1f1e7-1f1f9\",\"\\uD83C\\uDDE7\\uD83C\\uDDF8\":\"1f1e7-1f1f8\",\"\\uD83C\\uDDE7\\uD83C\\uDDF7\":\"1f1e7-1f1f7\",\"\\uD83C\\uDDE7\\uD83C\\uDDF6\":\"1f1e7-1f1f6\",\"\\uD83C\\uDDE7\\uD83C\\uDDF4\":\"1f1e7-1f1f4\",\"\\uD83C\\uDDE7\\uD83C\\uDDF3\":\"1f1e7-1f1f3\",\"\\uD83C\\uDDE7\\uD83C\\uDDF2\":\"1f1e7-1f1f2\",\"\\uD83C\\uDDE7\\uD83C\\uDDF1\":\"1f1e7-1f1f1\",\"\\uD83C\\uDDE7\\uD83C\\uDDEF\":\"1f1e7-1f1ef\",\"\\uD83C\\uDDE7\\uD83C\\uDDEE\":\"1f1e7-1f1ee\",\"\\uD83C\\uDDE7\\uD83C\\uDDED\":\"1f1e7-1f1ed\",\"\\uD83C\\uDDE7\\uD83C\\uDDEC\":\"1f1e7-1f1ec\",\"\\uD83C\\uDDE7\\uD83C\\uDDEB\":\"1f1e7-1f1eb\",\"\\uD83C\\uDDE7\\uD83C\\uDDEA\":\"1f1e7-1f1ea\",\"\\uD83C\\uDDE7\\uD83C\\uDDE9\":\"1f1e7-1f1e9\",\"\\uD83C\\uDDE7\\uD83C\\uDDE7\":\"1f1e7-1f1e7\",\"\\uD83C\\uDDE7\\uD83C\\uDDE6\":\"1f1e7-1f1e6\",\"\\uD83C\\uDDE6\\uD83C\\uDDFF\":\"1f1e6-1f1ff\",\"\\uD83C\\uDDE6\\uD83C\\uDDFD\":\"1f1e6-1f1fd\",\"\\uD83C\\uDDE6\\uD83C\\uDDFC\":\"1f1e6-1f1fc\",\"\\uD83C\\uDDE6\\uD83C\\uDDFA\":\"1f1e6-1f1fa\",\"\\uD83C\\uDDE6\\uD83C\\uDDF9\":\"1f1e6-1f1f9\",\"\\uD83C\\uDDE6\\uD83C\\uDDF8\":\"1f1e6-1f1f8\",\"\\uD83C\\uDDE6\\uD83C\\uDDF7\":\"1f1e6-1f1f7\",\"\\uD83C\\uDDE6\\uD83C\\uDDF6\":\"1f1e6-1f1f6\",\"\\uD83C\\uDDE6\\uD83C\\uDDF4\":\"1f1e6-1f1f4\",\"\\uD83C\\uDDE6\\uD83C\\uDDF2\":\"1f1e6-1f1f2\",\"\\uD83C\\uDDE6\\uD83C\\uDDF1\":\"1f1e6-1f1f1\",\"\\uD83C\\uDDE6\\uD83C\\uDDEE\":\"1f1e6-1f1ee\",\"\\uD83C\\uDDE6\\uD83C\\uDDEC\":\"1f1e6-1f1ec\",\"\\uD83C\\uDDE6\\uD83C\\uDDEB\":\"1f1e6-1f1eb\",\"\\uD83C\\uDDE6\\uD83C\\uDDEA\":\"1f1e6-1f1ea\",\"\\uD83C\\uDDE6\\uD83C\\uDDE9\":\"1f1e6-1f1e9\",\"\\uD83C\\uDDE6\\uD83C\\uDDE8\":\"1f1e6-1f1e8\",\"\\uD83C\\uDC04\\uFE0F\":\"1f004-fe0f\",\"\\uD83C\\uDC04\":\"1f004\",\"\\uD83C\\uDD7F\\uFE0F\":\"1f17f-fe0f\",\"\\uD83C\\uDD7F\":\"1f17f\",\"\\uD83C\\uDE02\\uFE0F\":\"1f202-fe0f\",\"\\uD83C\\uDE02\":\"1f202\",\"\\uD83C\\uDE1A\\uFE0F\":\"1f21a-fe0f\",\"\\uD83C\\uDE1A\":\"1f21a\",\"\\uD83C\\uDE2F\\uFE0F\":\"1f22f-fe0f\",\"\\uD83C\\uDE2F\":\"1f22f\",\"\\uD83C\\uDE37\\uFE0F\":\"1f237-fe0f\",\"\\uD83C\\uDE37\":\"1f237\",\"\\uD83C\\uDF9E\\uFE0F\":\"1f39e-fe0f\",\"\\uD83C\\uDF9E\":\"1f39e\",\"\\uD83C\\uDF9F\\uFE0F\":\"1f39f-fe0f\",\"\\uD83C\\uDF9F\":\"1f39f\",\"\\uD83C\\uDFCB\\uFE0F\":\"1f3cb-fe0f\",\"\\uD83C\\uDFCB\":\"1f3cb\",\"\\uD83C\\uDFCC\\uFE0F\":\"1f3cc-fe0f\",\"\\uD83C\\uDFCC\":\"1f3cc\",\"\\uD83C\\uDFCD\\uFE0F\":\"1f3cd-fe0f\",\"\\uD83C\\uDFCD\":\"1f3cd\",\"\\uD83C\\uDFCE\\uFE0F\":\"1f3ce-fe0f\",\"\\uD83C\\uDFCE\":\"1f3ce\",\"\\uD83C\\uDF96\\uFE0F\":\"1f396-fe0f\",\"\\uD83C\\uDF96\":\"1f396\",\"\\uD83C\\uDF97\\uFE0F\":\"1f397-fe0f\",\"\\uD83C\\uDF97\":\"1f397\",\"\\uD83C\\uDF36\\uFE0F\":\"1f336-fe0f\",\"\\uD83C\\uDF36\":\"1f336\",\"\\uD83C\\uDF27\\uFE0F\":\"1f327-fe0f\",\"\\uD83C\\uDF27\":\"1f327\",\"\\uD83C\\uDF28\\uFE0F\":\"1f328-fe0f\",\"\\uD83C\\uDF28\":\"1f328\",\"\\uD83C\\uDF29\\uFE0F\":\"1f329-fe0f\",\"\\uD83C\\uDF29\":\"1f329\",\"\\uD83C\\uDF2A\\uFE0F\":\"1f32a-fe0f\",\"\\uD83C\\uDF2A\":\"1f32a\",\"\\uD83C\\uDF2B\\uFE0F\":\"1f32b-fe0f\",\"\\uD83C\\uDF2B\":\"1f32b\",\"\\uD83C\\uDF2C\\uFE0F\":\"1f32c-fe0f\",\"\\uD83C\\uDF2C\":\"1f32c\",\"\\uD83D\\uDC3F\\uFE0F\":\"1f43f-fe0f\",\"\\uD83D\\uDC3F\":\"1f43f\",\"\\uD83D\\uDD77\\uFE0F\":\"1f577-fe0f\",\"\\uD83D\\uDD77\":\"1f577\",\"\\uD83D\\uDD78\\uFE0F\":\"1f578-fe0f\",\"\\uD83D\\uDD78\":\"1f578\",\"\\uD83C\\uDF21\\uFE0F\":\"1f321-fe0f\",\"\\uD83C\\uDF21\":\"1f321\",\"\\uD83C\\uDF99\\uFE0F\":\"1f399-fe0f\",\"\\uD83C\\uDF99\":\"1f399\",\"\\uD83C\\uDF9A\\uFE0F\":\"1f39a-fe0f\",\"\\uD83C\\uDF9A\":\"1f39a\",\"\\uD83C\\uDF9B\\uFE0F\":\"1f39b-fe0f\",\"\\uD83C\\uDF9B\":\"1f39b\",\"\\uD83C\\uDFF3\\uFE0F\":\"1f3f3-fe0f\",\"\\uD83C\\uDFF3\":\"1f3f3\",\"\\uD83C\\uDFF5\\uFE0F\":\"1f3f5-fe0f\",\"\\uD83C\\uDFF5\":\"1f3f5\",\"\\uD83C\\uDFF7\\uFE0F\":\"1f3f7-fe0f\",\"\\uD83C\\uDFF7\":\"1f3f7\",\"\\uD83D\\uDCFD\\uFE0F\":\"1f4fd-fe0f\",\"\\uD83D\\uDCFD\":\"1f4fd\",\"\\uD83D\\uDD49\\uFE0F\":\"1f549-fe0f\",\"\\uD83D\\uDD49\":\"1f549\",\"\\uD83D\\uDD4A\\uFE0F\":\"1f54a-fe0f\",\"\\uD83D\\uDD4A\":\"1f54a\",\"\\uD83D\\uDD6F\\uFE0F\":\"1f56f-fe0f\",\"\\uD83D\\uDD6F\":\"1f56f\",\"\\uD83D\\uDD70\\uFE0F\":\"1f570-fe0f\",\"\\uD83D\\uDD70\":\"1f570\",\"\\uD83D\\uDD73\\uFE0F\":\"1f573-fe0f\",\"\\uD83D\\uDD73\":\"1f573\",\"\\uD83D\\uDD76\\uFE0F\":\"1f576-fe0f\",\"\\uD83D\\uDD76\":\"1f576\",\"\\uD83D\\uDD79\\uFE0F\":\"1f579-fe0f\",\"\\uD83D\\uDD79\":\"1f579\",\"\\uD83D\\uDD87\\uFE0F\":\"1f587-fe0f\",\"\\uD83D\\uDD87\":\"1f587\",\"\\uD83D\\uDD8A\\uFE0F\":\"1f58a-fe0f\",\"\\uD83D\\uDD8A\":\"1f58a\",\"\\uD83D\\uDD8B\\uFE0F\":\"1f58b-fe0f\",\"\\uD83D\\uDD8B\":\"1f58b\",\"\\uD83D\\uDD8C\\uFE0F\":\"1f58c-fe0f\",\"\\uD83D\\uDD8C\":\"1f58c\",\"\\uD83D\\uDD8D\\uFE0F\":\"1f58d-fe0f\",\"\\uD83D\\uDD8D\":\"1f58d\",\"\\uD83D\\uDDA5\\uFE0F\":\"1f5a5-fe0f\",\"\\uD83D\\uDDA5\":\"1f5a5\",\"\\uD83D\\uDDA8\\uFE0F\":\"1f5a8-fe0f\",\"\\uD83D\\uDDA8\":\"1f5a8\",\"\\uD83D\\uDDB2\\uFE0F\":\"1f5b2-fe0f\",\"\\uD83D\\uDDB2\":\"1f5b2\",\"\\uD83D\\uDDBC\\uFE0F\":\"1f5bc-fe0f\",\"\\uD83D\\uDDBC\":\"1f5bc\",\"\\uD83D\\uDDC2\\uFE0F\":\"1f5c2-fe0f\",\"\\uD83D\\uDDC2\":\"1f5c2\",\"\\uD83D\\uDDC3\\uFE0F\":\"1f5c3-fe0f\",\"\\uD83D\\uDDC3\":\"1f5c3\",\"\\uD83D\\uDDC4\\uFE0F\":\"1f5c4-fe0f\",\"\\uD83D\\uDDC4\":\"1f5c4\",\"\\uD83D\\uDDD1\\uFE0F\":\"1f5d1-fe0f\",\"\\uD83D\\uDDD1\":\"1f5d1\",\"\\uD83D\\uDDD2\\uFE0F\":\"1f5d2-fe0f\",\"\\uD83D\\uDDD2\":\"1f5d2\",\"\\uD83D\\uDDD3\\uFE0F\":\"1f5d3-fe0f\",\"\\uD83D\\uDDD3\":\"1f5d3\",\"\\uD83D\\uDDDC\\uFE0F\":\"1f5dc-fe0f\",\"\\uD83D\\uDDDC\":\"1f5dc\",\"\\uD83D\\uDDDD\\uFE0F\":\"1f5dd-fe0f\",\"\\uD83D\\uDDDD\":\"1f5dd\",\"\\uD83D\\uDDDE\\uFE0F\":\"1f5de-fe0f\",\"\\uD83D\\uDDDE\":\"1f5de\",\"\\uD83D\\uDDE1\\uFE0F\":\"1f5e1-fe0f\",\"\\uD83D\\uDDE1\":\"1f5e1\",\"\\uD83D\\uDDE3\\uFE0F\":\"1f5e3-fe0f\",\"\\uD83D\\uDDE3\":\"1f5e3\",\"\\uD83D\\uDDE8\\uFE0F\":\"1f5e8-fe0f\",\"\\uD83D\\uDDE8\":\"1f5e8\",\"\\uD83D\\uDDEF\\uFE0F\":\"1f5ef-fe0f\",\"\\uD83D\\uDDEF\":\"1f5ef\",\"\\uD83D\\uDDF3\\uFE0F\":\"1f5f3-fe0f\",\"\\uD83D\\uDDF3\":\"1f5f3\",\"\\uD83D\\uDDFA\\uFE0F\":\"1f5fa-fe0f\",\"\\uD83D\\uDDFA\":\"1f5fa\",\"\\uD83D\\uDEE0\\uFE0F\":\"1f6e0-fe0f\",\"\\uD83D\\uDEE0\":\"1f6e0\",\"\\uD83D\\uDEE1\\uFE0F\":\"1f6e1-fe0f\",\"\\uD83D\\uDEE1\":\"1f6e1\",\"\\uD83D\\uDEE2\\uFE0F\":\"1f6e2-fe0f\",\"\\uD83D\\uDEE2\":\"1f6e2\",\"\\uD83D\\uDEF0\\uFE0F\":\"1f6f0-fe0f\",\"\\uD83D\\uDEF0\":\"1f6f0\",\"\\uD83C\\uDF7D\\uFE0F\":\"1f37d-fe0f\",\"\\uD83C\\uDF7D\":\"1f37d\",\"\\uD83D\\uDC41\\uFE0F\":\"1f441-fe0f\",\"\\uD83D\\uDC41\":\"1f441\",\"\\uD83D\\uDD74\\uFE0F\":\"1f574-fe0f\",\"\\uD83D\\uDD74\":\"1f574\",\"\\uD83D\\uDD75\\uFE0F\":\"1f575-fe0f\",\"\\uD83D\\uDD75\":\"1f575\",\"\\uD83D\\uDD90\\uFE0F\":\"1f590-fe0f\",\"\\uD83D\\uDD90\":\"1f590\",\"\\uD83C\\uDFD4\\uFE0F\":\"1f3d4-fe0f\",\"\\uD83C\\uDFD4\":\"1f3d4\",\"\\uD83C\\uDFD5\\uFE0F\":\"1f3d5-fe0f\",\"\\uD83C\\uDFD5\":\"1f3d5\",\"\\uD83C\\uDFD6\\uFE0F\":\"1f3d6-fe0f\",\"\\uD83C\\uDFD6\":\"1f3d6\",\"\\uD83C\\uDFD7\\uFE0F\":\"1f3d7-fe0f\",\"\\uD83C\\uDFD7\":\"1f3d7\",\"\\uD83C\\uDFD8\\uFE0F\":\"1f3d8-fe0f\",\"\\uD83C\\uDFD8\":\"1f3d8\",\"\\uD83C\\uDFD9\\uFE0F\":\"1f3d9-fe0f\",\"\\uD83C\\uDFD9\":\"1f3d9\",\"\\uD83C\\uDFDA\\uFE0F\":\"1f3da-fe0f\",\"\\uD83C\\uDFDA\":\"1f3da\",\"\\uD83C\\uDFDB\\uFE0F\":\"1f3db-fe0f\",\"\\uD83C\\uDFDB\":\"1f3db\",\"\\uD83C\\uDFDC\\uFE0F\":\"1f3dc-fe0f\",\"\\uD83C\\uDFDC\":\"1f3dc\",\"\\uD83C\\uDFDD\\uFE0F\":\"1f3dd-fe0f\",\"\\uD83C\\uDFDD\":\"1f3dd\",\"\\uD83C\\uDFDE\\uFE0F\":\"1f3de-fe0f\",\"\\uD83C\\uDFDE\":\"1f3de\",\"\\uD83C\\uDFDF\\uFE0F\":\"1f3df-fe0f\",\"\\uD83C\\uDFDF\":\"1f3df\",\"\\uD83D\\uDECB\\uFE0F\":\"1f6cb-fe0f\",\"\\uD83D\\uDECB\":\"1f6cb\",\"\\uD83D\\uDECD\\uFE0F\":\"1f6cd-fe0f\",\"\\uD83D\\uDECD\":\"1f6cd\",\"\\uD83D\\uDECE\\uFE0F\":\"1f6ce-fe0f\",\"\\uD83D\\uDECE\":\"1f6ce\",\"\\uD83D\\uDECF\\uFE0F\":\"1f6cf-fe0f\",\"\\uD83D\\uDECF\":\"1f6cf\",\"\\uD83D\\uDEE3\\uFE0F\":\"1f6e3-fe0f\",\"\\uD83D\\uDEE3\":\"1f6e3\",\"\\uD83D\\uDEE4\\uFE0F\":\"1f6e4-fe0f\",\"\\uD83D\\uDEE4\":\"1f6e4\",\"\\uD83D\\uDEE5\\uFE0F\":\"1f6e5-fe0f\",\"\\uD83D\\uDEE5\":\"1f6e5\",\"\\uD83D\\uDEE9\\uFE0F\":\"1f6e9-fe0f\",\"\\uD83D\\uDEE9\":\"1f6e9\",\"\\uD83D\\uDEF3\\uFE0F\":\"1f6f3-fe0f\",\"\\uD83D\\uDEF3\":\"1f6f3\",\"\\uD83C\\uDF24\\uFE0F\":\"1f324-fe0f\",\"\\uD83C\\uDF24\":\"1f324\",\"\\uD83C\\uDF25\\uFE0F\":\"1f325-fe0f\",\"\\uD83C\\uDF25\":\"1f325\",\"\\uD83C\\uDF26\\uFE0F\":\"1f326-fe0f\",\"\\uD83C\\uDF26\":\"1f326\",\"\\uD83D\\uDDB1\\uFE0F\":\"1f5b1-fe0f\",\"\\uD83D\\uDDB1\":\"1f5b1\",\"\\u261D\\uD83C\\uDFFB\":\"261d-1f3fb\",\"\\u261D\\uD83C\\uDFFC\":\"261d-1f3fc\",\"\\u261D\\uD83C\\uDFFD\":\"261d-1f3fd\",\"\\u261D\\uD83C\\uDFFE\":\"261d-1f3fe\",\"\\u261D\\uD83C\\uDFFF\":\"261d-1f3ff\",\"\\u270C\\uD83C\\uDFFB\":\"270c-1f3fb\",\"\\u270C\\uD83C\\uDFFC\":\"270c-1f3fc\",\"\\u270C\\uD83C\\uDFFD\":\"270c-1f3fd\",\"\\u270C\\uD83C\\uDFFE\":\"270c-1f3fe\",\"\\u270C\\uD83C\\uDFFF\":\"270c-1f3ff\",\"\\u270A\\uD83C\\uDFFB\":\"270a-1f3fb\",\"\\u270A\\uD83C\\uDFFC\":\"270a-1f3fc\",\"\\u270A\\uD83C\\uDFFD\":\"270a-1f3fd\",\"\\u270A\\uD83C\\uDFFE\":\"270a-1f3fe\",\"\\u270A\\uD83C\\uDFFF\":\"270a-1f3ff\",\"\\u270B\\uD83C\\uDFFB\":\"270b-1f3fb\",\"\\u270B\\uD83C\\uDFFC\":\"270b-1f3fc\",\"\\u270B\\uD83C\\uDFFD\":\"270b-1f3fd\",\"\\u270B\\uD83C\\uDFFE\":\"270b-1f3fe\",\"\\u270B\\uD83C\\uDFFF\":\"270b-1f3ff\",\"\\u270D\\uD83C\\uDFFB\":\"270d-1f3fb\",\"\\u270D\\uD83C\\uDFFC\":\"270d-1f3fc\",\"\\u270D\\uD83C\\uDFFD\":\"270d-1f3fd\",\"\\u270D\\uD83C\\uDFFE\":\"270d-1f3fe\",\"\\u270D\\uD83C\\uDFFF\":\"270d-1f3ff\",\"\\u26F9\\uD83C\\uDFFB\":\"26f9-1f3fb\",\"\\u26F9\\uD83C\\uDFFC\":\"26f9-1f3fc\",\"\\u26F9\\uD83C\\uDFFD\":\"26f9-1f3fd\",\"\\u26F9\\uD83C\\uDFFE\":\"26f9-1f3fe\",\"\\u26F9\\uD83C\\uDFFF\":\"26f9-1f3ff\",\"\\u00A9\\uFE0F\":\"00a9-fe0f\",\"\\u00A9\":\"00a9\",\"\\u00AE\\uFE0F\":\"00ae-fe0f\",\"\\u00AE\":\"00ae\",\"\\u203C\\uFE0F\":\"203c-fe0f\",\"\\u203C\":\"203c\",\"\\u2049\\uFE0F\":\"2049-fe0f\",\"\\u2049\":\"2049\",\"\\u2122\\uFE0F\":\"2122-fe0f\",\"\\u2122\":\"2122\",\"\\u2139\\uFE0F\":\"2139-fe0f\",\"\\u2139\":\"2139\",\"\\u2194\\uFE0F\":\"2194-fe0f\",\"\\u2194\":\"2194\",\"\\u2195\\uFE0F\":\"2195-fe0f\",\"\\u2195\":\"2195\",\"\\u2196\\uFE0F\":\"2196-fe0f\",\"\\u2196\":\"2196\",\"\\u2197\\uFE0F\":\"2197-fe0f\",\"\\u2197\":\"2197\",\"\\u2198\\uFE0F\":\"2198-fe0f\",\"\\u2198\":\"2198\",\"\\u2199\\uFE0F\":\"2199-fe0f\",\"\\u2199\":\"2199\",\"\\u21A9\\uFE0F\":\"21a9-fe0f\",\"\\u21A9\":\"21a9\",\"\\u21AA\\uFE0F\":\"21aa-fe0f\",\"\\u21AA\":\"21aa\",\"\\u231A\\uFE0F\":\"231a-fe0f\",\"\\u231A\":\"231a\",\"\\u231B\\uFE0F\":\"231b-fe0f\",\"\\u231B\":\"231b\",\"\\u24C2\\uFE0F\":\"24c2-fe0f\",\"\\u24C2\":\"24c2\",\"\\u25AA\\uFE0F\":\"25aa-fe0f\",\"\\u25AA\":\"25aa\",\"\\u25AB\\uFE0F\":\"25ab-fe0f\",\"\\u25AB\":\"25ab\",\"\\u25B6\\uFE0F\":\"25b6-fe0f\",\"\\u25B6\":\"25b6\",\"\\u25C0\\uFE0F\":\"25c0-fe0f\",\"\\u25C0\":\"25c0\",\"\\u25FB\\uFE0F\":\"25fb-fe0f\",\"\\u25FB\":\"25fb\",\"\\u25FC\\uFE0F\":\"25fc-fe0f\",\"\\u25FC\":\"25fc\",\"\\u25FD\\uFE0F\":\"25fd-fe0f\",\"\\u25FD\":\"25fd\",\"\\u25FE\\uFE0F\":\"25fe-fe0f\",\"\\u25FE\":\"25fe\",\"\\u2600\\uFE0F\":\"2600-fe0f\",\"\\u2600\":\"2600\",\"\\u2601\\uFE0F\":\"2601-fe0f\",\"\\u2601\":\"2601\",\"\\u260E\\uFE0F\":\"260e-fe0f\",\"\\u260E\":\"260e\",\"\\u2611\\uFE0F\":\"2611-fe0f\",\"\\u2611\":\"2611\",\"\\u2614\\uFE0F\":\"2614-fe0f\",\"\\u2614\":\"2614\",\"\\u2615\\uFE0F\":\"2615-fe0f\",\"\\u2615\":\"2615\",\"\\u261D\\uFE0F\":\"261d-fe0f\",\"\\u261D\":\"261d\",\"\\u263A\\uFE0F\":\"263a-fe0f\",\"\\u263A\":\"263a\",\"\\u2648\\uFE0F\":\"2648-fe0f\",\"\\u2648\":\"2648\",\"\\u2649\\uFE0F\":\"2649-fe0f\",\"\\u2649\":\"2649\",\"\\u264A\\uFE0F\":\"264a-fe0f\",\"\\u264A\":\"264a\",\"\\u264B\\uFE0F\":\"264b-fe0f\",\"\\u264B\":\"264b\",\"\\u264C\\uFE0F\":\"264c-fe0f\",\"\\u264C\":\"264c\",\"\\u264D\\uFE0F\":\"264d-fe0f\",\"\\u264D\":\"264d\",\"\\u264E\\uFE0F\":\"264e-fe0f\",\"\\u264E\":\"264e\",\"\\u264F\\uFE0F\":\"264f-fe0f\",\"\\u264F\":\"264f\",\"\\u2650\\uFE0F\":\"2650-fe0f\",\"\\u2650\":\"2650\",\"\\u2651\\uFE0F\":\"2651-fe0f\",\"\\u2651\":\"2651\",\"\\u2652\\uFE0F\":\"2652-fe0f\",\"\\u2652\":\"2652\",\"\\u2653\\uFE0F\":\"2653-fe0f\",\"\\u2653\":\"2653\",\"\\u2660\\uFE0F\":\"2660-fe0f\",\"\\u2660\":\"2660\",\"\\u2663\\uFE0F\":\"2663-fe0f\",\"\\u2663\":\"2663\",\"\\u2665\\uFE0F\":\"2665-fe0f\",\"\\u2665\":\"2665\",\"\\u2666\\uFE0F\":\"2666-fe0f\",\"\\u2666\":\"2666\",\"\\u2668\\uFE0F\":\"2668-fe0f\",\"\\u2668\":\"2668\",\"\\u267B\\uFE0F\":\"267b-fe0f\",\"\\u267B\":\"267b\",\"\\u267F\\uFE0F\":\"267f-fe0f\",\"\\u267F\":\"267f\",\"\\u2693\\uFE0F\":\"2693-fe0f\",\"\\u2693\":\"2693\",\"\\u26A0\\uFE0F\":\"26a0-fe0f\",\"\\u26A0\":\"26a0\",\"\\u26A1\\uFE0F\":\"26a1-fe0f\",\"\\u26A1\":\"26a1\",\"\\u26AA\\uFE0F\":\"26aa-fe0f\",\"\\u26AA\":\"26aa\",\"\\u26AB\\uFE0F\":\"26ab-fe0f\",\"\\u26AB\":\"26ab\",\"\\u26BD\\uFE0F\":\"26bd-fe0f\",\"\\u26BD\":\"26bd\",\"\\u26BE\\uFE0F\":\"26be-fe0f\",\"\\u26BE\":\"26be\",\"\\u26C4\\uFE0F\":\"26c4-fe0f\",\"\\u26C4\":\"26c4\",\"\\u26C5\\uFE0F\":\"26c5-fe0f\",\"\\u26C5\":\"26c5\",\"\\u26D4\\uFE0F\":\"26d4-fe0f\",\"\\u26D4\":\"26d4\",\"\\u26EA\\uFE0F\":\"26ea-fe0f\",\"\\u26EA\":\"26ea\",\"\\u26F2\\uFE0F\":\"26f2-fe0f\",\"\\u26F2\":\"26f2\",\"\\u26F3\\uFE0F\":\"26f3-fe0f\",\"\\u26F3\":\"26f3\",\"\\u26F5\\uFE0F\":\"26f5-fe0f\",\"\\u26F5\":\"26f5\",\"\\u26FA\\uFE0F\":\"26fa-fe0f\",\"\\u26FA\":\"26fa\",\"\\u26FD\\uFE0F\":\"26fd-fe0f\",\"\\u26FD\":\"26fd\",\"\\u2702\\uFE0F\":\"2702-fe0f\",\"\\u2702\":\"2702\",\"\\u2708\\uFE0F\":\"2708-fe0f\",\"\\u2708\":\"2708\",\"\\u2709\\uFE0F\":\"2709-fe0f\",\"\\u2709\":\"2709\",\"\\u270C\\uFE0F\":\"270c-fe0f\",\"\\u270C\":\"270c\",\"\\u270F\\uFE0F\":\"270f-fe0f\",\"\\u270F\":\"270f\",\"\\u2712\\uFE0F\":\"2712-fe0f\",\"\\u2712\":\"2712\",\"\\u2714\\uFE0F\":\"2714-fe0f\",\"\\u2714\":\"2714\",\"\\u2716\\uFE0F\":\"2716-fe0f\",\"\\u2716\":\"2716\",\"\\u2733\\uFE0F\":\"2733-fe0f\",\"\\u2733\":\"2733\",\"\\u2734\\uFE0F\":\"2734-fe0f\",\"\\u2734\":\"2734\",\"\\u2744\\uFE0F\":\"2744-fe0f\",\"\\u2744\":\"2744\",\"\\u2747\\uFE0F\":\"2747-fe0f\",\"\\u2747\":\"2747\",\"\\u2757\\uFE0F\":\"2757-fe0f\",\"\\u2757\":\"2757\",\"\\u2764\\uFE0F\":\"2764-fe0f\",\"\\u2764\":\"2764\",\"\\u27A1\\uFE0F\":\"27a1-fe0f\",\"\\u27A1\":\"27a1\",\"\\u2934\\uFE0F\":\"2934-fe0f\",\"\\u2934\":\"2934\",\"\\u2935\\uFE0F\":\"2935-fe0f\",\"\\u2935\":\"2935\",\"\\u2B05\\uFE0F\":\"2b05-fe0f\",\"\\u2B05\":\"2b05\",\"\\u2B06\\uFE0F\":\"2b06-fe0f\",\"\\u2B06\":\"2b06\",\"\\u2B07\\uFE0F\":\"2b07-fe0f\",\"\\u2B07\":\"2b07\",\"\\u2B1B\\uFE0F\":\"2b1b-fe0f\",\"\\u2B1B\":\"2b1b\",\"\\u2B1C\\uFE0F\":\"2b1c-fe0f\",\"\\u2B1C\":\"2b1c\",\"\\u2B50\\uFE0F\":\"2b50-fe0f\",\"\\u2B50\":\"2b50\",\"\\u2B55\\uFE0F\":\"2b55-fe0f\",\"\\u2B55\":\"2b55\",\"\\u3030\\uFE0F\":\"3030-fe0f\",\"\\u3030\":\"3030\",\"\\u303D\\uFE0F\":\"303d-fe0f\",\"\\u303D\":\"303d\",\"\\u3297\\uFE0F\":\"3297-fe0f\",\"\\u3297\":\"3297\",\"\\u3299\\uFE0F\":\"3299-fe0f\",\"\\u3299\":\"3299\",\"\\u271D\\uFE0F\":\"271d-fe0f\",\"\\u271D\":\"271d\",\"\\u2328\\uFE0F\":\"2328-fe0f\",\"\\u2328\":\"2328\",\"\\u270D\\uFE0F\":\"270d-fe0f\",\"\\u270D\":\"270d\",\"\\u23CF\\uFE0F\":\"23cf-fe0f\",\"\\u23CF\":\"23cf\",\"\\u23ED\\uFE0F\":\"23ed-fe0f\",\"\\u23ED\":\"23ed\",\"\\u23EE\\uFE0F\":\"23ee-fe0f\",\"\\u23EE\":\"23ee\",\"\\u23EF\\uFE0F\":\"23ef-fe0f\",\"\\u23EF\":\"23ef\",\"\\u23F1\\uFE0F\":\"23f1-fe0f\",\"\\u23F1\":\"23f1\",\"\\u23F2\\uFE0F\":\"23f2-fe0f\",\"\\u23F2\":\"23f2\",\"\\u23F8\\uFE0F\":\"23f8-fe0f\",\"\\u23F8\":\"23f8\",\"\\u23F9\\uFE0F\":\"23f9-fe0f\",\"\\u23F9\":\"23f9\",\"\\u23FA\\uFE0F\":\"23fa-fe0f\",\"\\u23FA\":\"23fa\",\"\\u2602\\uFE0F\":\"2602-fe0f\",\"\\u2602\":\"2602\",\"\\u2603\\uFE0F\":\"2603-fe0f\",\"\\u2603\":\"2603\",\"\\u2604\\uFE0F\":\"2604-fe0f\",\"\\u2604\":\"2604\",\"\\u2618\\uFE0F\":\"2618-fe0f\",\"\\u2618\":\"2618\",\"\\u2620\\uFE0F\":\"2620-fe0f\",\"\\u2620\":\"2620\",\"\\u2622\\uFE0F\":\"2622-fe0f\",\"\\u2622\":\"2622\",\"\\u2623\\uFE0F\":\"2623-fe0f\",\"\\u2623\":\"2623\",\"\\u2626\\uFE0F\":\"2626-fe0f\",\"\\u2626\":\"2626\",\"\\u262A\\uFE0F\":\"262a-fe0f\",\"\\u262A\":\"262a\",\"\\u262E\\uFE0F\":\"262e-fe0f\",\"\\u262E\":\"262e\",\"\\u262F\\uFE0F\":\"262f-fe0f\",\"\\u262F\":\"262f\",\"\\u2638\\uFE0F\":\"2638-fe0f\",\"\\u2638\":\"2638\",\"\\u2639\\uFE0F\":\"2639-fe0f\",\"\\u2639\":\"2639\",\"\\u2692\\uFE0F\":\"2692-fe0f\",\"\\u2692\":\"2692\",\"\\u2694\\uFE0F\":\"2694-fe0f\",\"\\u2694\":\"2694\",\"\\u2696\\uFE0F\":\"2696-fe0f\",\"\\u2696\":\"2696\",\"\\u2697\\uFE0F\":\"2697-fe0f\",\"\\u2697\":\"2697\",\"\\u2699\\uFE0F\":\"2699-fe0f\",\"\\u2699\":\"2699\",\"\\u269B\\uFE0F\":\"269b-fe0f\",\"\\u269B\":\"269b\",\"\\u269C\\uFE0F\":\"269c-fe0f\",\"\\u269C\":\"269c\",\"\\u26B0\\uFE0F\":\"26b0-fe0f\",\"\\u26B0\":\"26b0\",\"\\u26B1\\uFE0F\":\"26b1-fe0f\",\"\\u26B1\":\"26b1\",\"\\u26C8\\uFE0F\":\"26c8-fe0f\",\"\\u26C8\":\"26c8\",\"\\u26CF\\uFE0F\":\"26cf-fe0f\",\"\\u26CF\":\"26cf\",\"\\u26D1\\uFE0F\":\"26d1-fe0f\",\"\\u26D1\":\"26d1\",\"\\u26D3\\uFE0F\":\"26d3-fe0f\",\"\\u26D3\":\"26d3\",\"\\u26E9\\uFE0F\":\"26e9-fe0f\",\"\\u26E9\":\"26e9\",\"\\u26F0\\uFE0F\":\"26f0-fe0f\",\"\\u26F0\":\"26f0\",\"\\u26F1\\uFE0F\":\"26f1-fe0f\",\"\\u26F1\":\"26f1\",\"\\u26F4\\uFE0F\":\"26f4-fe0f\",\"\\u26F4\":\"26f4\",\"\\u26F7\\uFE0F\":\"26f7-fe0f\",\"\\u26F7\":\"26f7\",\"\\u26F8\\uFE0F\":\"26f8-fe0f\",\"\\u26F8\":\"26f8\",\"\\u26F9\\uFE0F\":\"26f9-fe0f\",\"\\u26F9\":\"26f9\",\"\\u2721\\uFE0F\":\"2721-fe0f\",\"\\u2721\":\"2721\",\"\\u2763\\uFE0F\":\"2763-fe0f\",\"\\u2763\":\"2763\",\"\\uD83E\\uDD49\":\"1f949\",\"\\uD83E\\uDD48\":\"1f948\",\"\\uD83E\\uDD47\":\"1f947\",\"\\uD83E\\uDD3A\":\"1f93a\",\"\\uD83E\\uDD45\":\"1f945\",\"\\uD83E\\uDD3E\":\"1f93e\",\"\\uD83C\\uDDFF\":\"1f1ff\",\"\\uD83E\\uDD3D\":\"1f93d\",\"\\uD83E\\uDD4B\":\"1f94b\",\"\\uD83E\\uDD4A\":\"1f94a\",\"\\uD83E\\uDD3C\":\"1f93c\",\"\\uD83E\\uDD39\":\"1f939\",\"\\uD83E\\uDD38\":\"1f938\",\"\\uD83D\\uDEF6\":\"1f6f6\",\"\\uD83D\\uDEF5\":\"1f6f5\",\"\\uD83D\\uDEF4\":\"1f6f4\",\"\\uD83D\\uDED2\":\"1f6d2\",\"\\uD83C\\uDCCF\":\"1f0cf\",\"\\uD83C\\uDD70\":\"1f170\",\"\\uD83C\\uDD71\":\"1f171\",\"\\uD83C\\uDD7E\":\"1f17e\",\"\\uD83D\\uDED1\":\"1f6d1\",\"\\uD83C\\uDD8E\":\"1f18e\",\"\\uD83C\\uDD91\":\"1f191\",\"\\uD83C\\uDDFE\":\"1f1fe\",\"\\uD83C\\uDD92\":\"1f192\",\"\\uD83C\\uDD93\":\"1f193\",\"\\uD83C\\uDD94\":\"1f194\",\"\\uD83C\\uDD95\":\"1f195\",\"\\uD83C\\uDD96\":\"1f196\",\"\\uD83C\\uDD97\":\"1f197\",\"\\uD83C\\uDD98\":\"1f198\",\"\\uD83E\\uDD44\":\"1f944\",\"\\uD83C\\uDD99\":\"1f199\",\"\\uD83C\\uDD9A\":\"1f19a\",\"\\uD83E\\uDD42\":\"1f942\",\"\\uD83E\\uDD43\":\"1f943\",\"\\uD83C\\uDE01\":\"1f201\",\"\\uD83E\\uDD59\":\"1f959\",\"\\uD83C\\uDE32\":\"1f232\",\"\\uD83C\\uDE33\":\"1f233\",\"\\uD83C\\uDE34\":\"1f234\",\"\\uD83C\\uDE35\":\"1f235\",\"\\uD83C\\uDE36\":\"1f236\",\"\\uD83E\\uDD58\":\"1f958\",\"\\uD83C\\uDE38\":\"1f238\",\"\\uD83C\\uDE39\":\"1f239\",\"\\uD83E\\uDD57\":\"1f957\",\"\\uD83C\\uDE3A\":\"1f23a\",\"\\uD83C\\uDE50\":\"1f250\",\"\\uD83C\\uDE51\":\"1f251\",\"\\uD83C\\uDF00\":\"1f300\",\"\\uD83E\\uDD56\":\"1f956\",\"\\uD83C\\uDF01\":\"1f301\",\"\\uD83C\\uDF02\":\"1f302\",\"\\uD83C\\uDF03\":\"1f303\",\"\\uD83C\\uDF04\":\"1f304\",\"\\uD83C\\uDF05\":\"1f305\",\"\\uD83C\\uDF06\":\"1f306\",\"\\uD83E\\uDD55\":\"1f955\",\"\\uD83C\\uDF07\":\"1f307\",\"\\uD83C\\uDF08\":\"1f308\",\"\\uD83E\\uDD54\":\"1f954\",\"\\uD83C\\uDF09\":\"1f309\",\"\\uD83C\\uDF0A\":\"1f30a\",\"\\uD83C\\uDF0B\":\"1f30b\",\"\\uD83C\\uDF0C\":\"1f30c\",\"\\uD83C\\uDF0F\":\"1f30f\",\"\\uD83C\\uDF11\":\"1f311\",\"\\uD83E\\uDD53\":\"1f953\",\"\\uD83C\\uDF13\":\"1f313\",\"\\uD83C\\uDF14\":\"1f314\",\"\\uD83C\\uDF15\":\"1f315\",\"\\uD83C\\uDF19\":\"1f319\",\"\\uD83C\\uDF1B\":\"1f31b\",\"\\uD83C\\uDF1F\":\"1f31f\",\"\\uD83E\\uDD52\":\"1f952\",\"\\uD83C\\uDF20\":\"1f320\",\"\\uD83C\\uDF30\":\"1f330\",\"\\uD83E\\uDD51\":\"1f951\",\"\\uD83C\\uDF31\":\"1f331\",\"\\uD83C\\uDF34\":\"1f334\",\"\\uD83C\\uDF35\":\"1f335\",\"\\uD83C\\uDF37\":\"1f337\",\"\\uD83C\\uDF38\":\"1f338\",\"\\uD83C\\uDF39\":\"1f339\",\"\\uD83C\\uDF3A\":\"1f33a\",\"\\uD83C\\uDF3B\":\"1f33b\",\"\\uD83C\\uDF3C\":\"1f33c\",\"\\uD83C\\uDF3D\":\"1f33d\",\"\\uD83E\\uDD50\":\"1f950\",\"\\uD83C\\uDF3E\":\"1f33e\",\"\\uD83C\\uDF3F\":\"1f33f\",\"\\uD83C\\uDF40\":\"1f340\",\"\\uD83C\\uDF41\":\"1f341\",\"\\uD83C\\uDF42\":\"1f342\",\"\\uD83C\\uDF43\":\"1f343\",\"\\uD83C\\uDF44\":\"1f344\",\"\\uD83C\\uDF45\":\"1f345\",\"\\uD83C\\uDF46\":\"1f346\",\"\\uD83C\\uDF47\":\"1f347\",\"\\uD83C\\uDF48\":\"1f348\",\"\\uD83C\\uDF49\":\"1f349\",\"\\uD83C\\uDF4A\":\"1f34a\",\"\\uD83E\\uDD40\":\"1f940\",\"\\uD83C\\uDF4C\":\"1f34c\",\"\\uD83C\\uDF4D\":\"1f34d\",\"\\uD83C\\uDF4E\":\"1f34e\",\"\\uD83C\\uDF4F\":\"1f34f\",\"\\uD83C\\uDF51\":\"1f351\",\"\\uD83C\\uDF52\":\"1f352\",\"\\uD83C\\uDF53\":\"1f353\",\"\\uD83E\\uDD8F\":\"1f98f\",\"\\uD83C\\uDF54\":\"1f354\",\"\\uD83C\\uDF55\":\"1f355\",\"\\uD83C\\uDF56\":\"1f356\",\"\\uD83E\\uDD8E\":\"1f98e\",\"\\uD83C\\uDF57\":\"1f357\",\"\\uD83C\\uDF58\":\"1f358\",\"\\uD83C\\uDF59\":\"1f359\",\"\\uD83E\\uDD8D\":\"1f98d\",\"\\uD83C\\uDF5A\":\"1f35a\",\"\\uD83C\\uDF5B\":\"1f35b\",\"\\uD83E\\uDD8C\":\"1f98c\",\"\\uD83C\\uDF5C\":\"1f35c\",\"\\uD83C\\uDF5D\":\"1f35d\",\"\\uD83C\\uDF5E\":\"1f35e\",\"\\uD83C\\uDF5F\":\"1f35f\",\"\\uD83E\\uDD8B\":\"1f98b\",\"\\uD83C\\uDF60\":\"1f360\",\"\\uD83C\\uDF61\":\"1f361\",\"\\uD83E\\uDD8A\":\"1f98a\",\"\\uD83C\\uDF62\":\"1f362\",\"\\uD83C\\uDF63\":\"1f363\",\"\\uD83E\\uDD89\":\"1f989\",\"\\uD83C\\uDF64\":\"1f364\",\"\\uD83C\\uDF65\":\"1f365\",\"\\uD83E\\uDD88\":\"1f988\",\"\\uD83C\\uDF66\":\"1f366\",\"\\uD83E\\uDD87\":\"1f987\",\"\\uD83C\\uDF67\":\"1f367\",\"\\uD83C\\uDDFD\":\"1f1fd\",\"\\uD83C\\uDF68\":\"1f368\",\"\\uD83E\\uDD86\":\"1f986\",\"\\uD83C\\uDF69\":\"1f369\",\"\\uD83E\\uDD85\":\"1f985\",\"\\uD83C\\uDF6A\":\"1f36a\",\"\\uD83D\\uDDA4\":\"1f5a4\",\"\\uD83C\\uDF6B\":\"1f36b\",\"\\uD83C\\uDF6C\":\"1f36c\",\"\\uD83C\\uDF6D\":\"1f36d\",\"\\uD83C\\uDF6E\":\"1f36e\",\"\\uD83C\\uDF6F\":\"1f36f\",\"\\uD83E\\uDD1E\":\"1f91e\",\"\\uD83C\\uDF70\":\"1f370\",\"\\uD83C\\uDF71\":\"1f371\",\"\\uD83C\\uDF72\":\"1f372\",\"\\uD83E\\uDD1D\":\"1f91d\",\"\\uD83C\\uDF73\":\"1f373\",\"\\uD83C\\uDF74\":\"1f374\",\"\\uD83C\\uDF75\":\"1f375\",\"\\uD83C\\uDF76\":\"1f376\",\"\\uD83C\\uDF77\":\"1f377\",\"\\uD83C\\uDF78\":\"1f378\",\"\\uD83C\\uDF79\":\"1f379\",\"\\uD83C\\uDF7A\":\"1f37a\",\"\\uD83C\\uDF7B\":\"1f37b\",\"\\uD83C\\uDF80\":\"1f380\",\"\\uD83C\\uDF81\":\"1f381\",\"\\uD83C\\uDF82\":\"1f382\",\"\\uD83C\\uDF83\":\"1f383\",\"\\uD83E\\uDD1B\":\"1f91b\",\"\\uD83E\\uDD1C\":\"1f91c\",\"\\uD83C\\uDF84\":\"1f384\",\"\\uD83C\\uDF85\":\"1f385\",\"\\uD83C\\uDF86\":\"1f386\",\"\\uD83E\\uDD1A\":\"1f91a\",\"\\uD83C\\uDF87\":\"1f387\",\"\\uD83C\\uDF88\":\"1f388\",\"\\uD83C\\uDF89\":\"1f389\",\"\\uD83C\\uDF8A\":\"1f38a\",\"\\uD83C\\uDF8B\":\"1f38b\",\"\\uD83C\\uDF8C\":\"1f38c\",\"\\uD83E\\uDD19\":\"1f919\",\"\\uD83C\\uDF8D\":\"1f38d\",\"\\uD83D\\uDD7A\":\"1f57a\",\"\\uD83C\\uDF8E\":\"1f38e\",\"\\uD83E\\uDD33\":\"1f933\",\"\\uD83C\\uDF8F\":\"1f38f\",\"\\uD83E\\uDD30\":\"1f930\",\"\\uD83C\\uDF90\":\"1f390\",\"\\uD83E\\uDD26\":\"1f926\",\"\\uD83E\\uDD37\":\"1f937\",\"\\uD83C\\uDF91\":\"1f391\",\"\\uD83C\\uDF92\":\"1f392\",\"\\uD83C\\uDF93\":\"1f393\",\"\\uD83C\\uDFA0\":\"1f3a0\",\"\\uD83C\\uDFA1\":\"1f3a1\",\"\\uD83C\\uDFA2\":\"1f3a2\",\"\\uD83C\\uDFA3\":\"1f3a3\",\"\\uD83C\\uDFA4\":\"1f3a4\",\"\\uD83C\\uDFA5\":\"1f3a5\",\"\\uD83C\\uDFA6\":\"1f3a6\",\"\\uD83C\\uDFA7\":\"1f3a7\",\"\\uD83E\\uDD36\":\"1f936\",\"\\uD83C\\uDFA8\":\"1f3a8\",\"\\uD83E\\uDD35\":\"1f935\",\"\\uD83C\\uDFA9\":\"1f3a9\",\"\\uD83C\\uDFAA\":\"1f3aa\",\"\\uD83E\\uDD34\":\"1f934\",\"\\uD83C\\uDFAB\":\"1f3ab\",\"\\uD83C\\uDFAC\":\"1f3ac\",\"\\uD83C\\uDFAD\":\"1f3ad\",\"\\uD83E\\uDD27\":\"1f927\",\"\\uD83C\\uDFAE\":\"1f3ae\",\"\\uD83C\\uDFAF\":\"1f3af\",\"\\uD83C\\uDFB0\":\"1f3b0\",\"\\uD83C\\uDFB1\":\"1f3b1\",\"\\uD83C\\uDFB2\":\"1f3b2\",\"\\uD83C\\uDFB3\":\"1f3b3\",\"\\uD83C\\uDFB4\":\"1f3b4\",\"\\uD83E\\uDD25\":\"1f925\",\"\\uD83C\\uDFB5\":\"1f3b5\",\"\\uD83C\\uDFB6\":\"1f3b6\",\"\\uD83C\\uDFB7\":\"1f3b7\",\"\\uD83E\\uDD24\":\"1f924\",\"\\uD83C\\uDFB8\":\"1f3b8\",\"\\uD83C\\uDFB9\":\"1f3b9\",\"\\uD83C\\uDFBA\":\"1f3ba\",\"\\uD83E\\uDD23\":\"1f923\",\"\\uD83C\\uDFBB\":\"1f3bb\",\"\\uD83C\\uDFBC\":\"1f3bc\",\"\\uD83C\\uDFBD\":\"1f3bd\",\"\\uD83E\\uDD22\":\"1f922\",\"\\uD83C\\uDFBE\":\"1f3be\",\"\\uD83C\\uDFBF\":\"1f3bf\",\"\\uD83C\\uDFC0\":\"1f3c0\",\"\\uD83C\\uDFC1\":\"1f3c1\",\"\\uD83E\\uDD21\":\"1f921\",\"\\uD83C\\uDFC2\":\"1f3c2\",\"\\uD83C\\uDFC3\":\"1f3c3\",\"\\uD83C\\uDFC4\":\"1f3c4\",\"\\uD83C\\uDFC6\":\"1f3c6\",\"\\uD83C\\uDFC8\":\"1f3c8\",\"\\uD83C\\uDFCA\":\"1f3ca\",\"\\uD83C\\uDFE0\":\"1f3e0\",\"\\uD83C\\uDFE1\":\"1f3e1\",\"\\uD83C\\uDFE2\":\"1f3e2\",\"\\uD83C\\uDFE3\":\"1f3e3\",\"\\uD83C\\uDFE5\":\"1f3e5\",\"\\uD83C\\uDFE6\":\"1f3e6\",\"\\uD83C\\uDFE7\":\"1f3e7\",\"\\uD83C\\uDFE8\":\"1f3e8\",\"\\uD83C\\uDFE9\":\"1f3e9\",\"\\uD83C\\uDFEA\":\"1f3ea\",\"\\uD83C\\uDFEB\":\"1f3eb\",\"\\uD83C\\uDFEC\":\"1f3ec\",\"\\uD83E\\uDD20\":\"1f920\",\"\\uD83C\\uDFED\":\"1f3ed\",\"\\uD83C\\uDFEE\":\"1f3ee\",\"\\uD83C\\uDFEF\":\"1f3ef\",\"\\uD83C\\uDFF0\":\"1f3f0\",\"\\uD83D\\uDC0C\":\"1f40c\",\"\\uD83D\\uDC0D\":\"1f40d\",\"\\uD83D\\uDC0E\":\"1f40e\",\"\\uD83D\\uDC11\":\"1f411\",\"\\uD83D\\uDC12\":\"1f412\",\"\\uD83D\\uDC14\":\"1f414\",\"\\uD83D\\uDC17\":\"1f417\",\"\\uD83D\\uDC18\":\"1f418\",\"\\uD83D\\uDC19\":\"1f419\",\"\\uD83D\\uDC1A\":\"1f41a\",\"\\uD83D\\uDC1B\":\"1f41b\",\"\\uD83D\\uDC1C\":\"1f41c\",\"\\uD83D\\uDC1D\":\"1f41d\",\"\\uD83D\\uDC1E\":\"1f41e\",\"\\uD83D\\uDC1F\":\"1f41f\",\"\\uD83D\\uDC20\":\"1f420\",\"\\uD83D\\uDC21\":\"1f421\",\"\\uD83D\\uDC22\":\"1f422\",\"\\uD83D\\uDC23\":\"1f423\",\"\\uD83D\\uDC24\":\"1f424\",\"\\uD83D\\uDC25\":\"1f425\",\"\\uD83D\\uDC26\":\"1f426\",\"\\uD83D\\uDC27\":\"1f427\",\"\\uD83D\\uDC28\":\"1f428\",\"\\uD83D\\uDC29\":\"1f429\",\"\\uD83D\\uDC2B\":\"1f42b\",\"\\uD83D\\uDC2C\":\"1f42c\",\"\\uD83D\\uDC2D\":\"1f42d\",\"\\uD83D\\uDC2E\":\"1f42e\",\"\\uD83D\\uDC2F\":\"1f42f\",\"\\uD83D\\uDC30\":\"1f430\",\"\\uD83D\\uDC31\":\"1f431\",\"\\uD83D\\uDC32\":\"1f432\",\"\\uD83D\\uDC33\":\"1f433\",\"\\uD83D\\uDC34\":\"1f434\",\"\\uD83D\\uDC35\":\"1f435\",\"\\uD83D\\uDC36\":\"1f436\",\"\\uD83D\\uDC37\":\"1f437\",\"\\uD83D\\uDC38\":\"1f438\",\"\\uD83D\\uDC39\":\"1f439\",\"\\uD83D\\uDC3A\":\"1f43a\",\"\\uD83D\\uDC3B\":\"1f43b\",\"\\uD83D\\uDC3C\":\"1f43c\",\"\\uD83D\\uDC3D\":\"1f43d\",\"\\uD83D\\uDC3E\":\"1f43e\",\"\\uD83D\\uDC40\":\"1f440\",\"\\uD83D\\uDC42\":\"1f442\",\"\\uD83D\\uDC43\":\"1f443\",\"\\uD83D\\uDC44\":\"1f444\",\"\\uD83D\\uDC45\":\"1f445\",\"\\uD83D\\uDC46\":\"1f446\",\"\\uD83D\\uDC47\":\"1f447\",\"\\uD83D\\uDC48\":\"1f448\",\"\\uD83D\\uDC49\":\"1f449\",\"\\uD83D\\uDC4A\":\"1f44a\",\"\\uD83D\\uDC4B\":\"1f44b\",\"\\uD83D\\uDC4C\":\"1f44c\",\"\\uD83D\\uDC4D\":\"1f44d\",\"\\uD83D\\uDC4E\":\"1f44e\",\"\\uD83D\\uDC4F\":\"1f44f\",\"\\uD83D\\uDC50\":\"1f450\",\"\\uD83D\\uDC51\":\"1f451\",\"\\uD83D\\uDC52\":\"1f452\",\"\\uD83D\\uDC53\":\"1f453\",\"\\uD83D\\uDC54\":\"1f454\",\"\\uD83D\\uDC55\":\"1f455\",\"\\uD83D\\uDC56\":\"1f456\",\"\\uD83D\\uDC57\":\"1f457\",\"\\uD83D\\uDC58\":\"1f458\",\"\\uD83D\\uDC59\":\"1f459\",\"\\uD83D\\uDC5A\":\"1f45a\",\"\\uD83D\\uDC5B\":\"1f45b\",\"\\uD83D\\uDC5C\":\"1f45c\",\"\\uD83D\\uDC5D\":\"1f45d\",\"\\uD83D\\uDC5E\":\"1f45e\",\"\\uD83D\\uDC5F\":\"1f45f\",\"\\uD83D\\uDC60\":\"1f460\",\"\\uD83D\\uDC61\":\"1f461\",\"\\uD83D\\uDC62\":\"1f462\",\"\\uD83D\\uDC63\":\"1f463\",\"\\uD83D\\uDC64\":\"1f464\",\"\\uD83D\\uDC66\":\"1f466\",\"\\uD83D\\uDC67\":\"1f467\",\"\\uD83D\\uDC68\":\"1f468\",\"\\uD83D\\uDC69\":\"1f469\",\"\\uD83D\\uDC6A\":\"1f46a\",\"\\uD83D\\uDC6B\":\"1f46b\",\"\\uD83D\\uDC6E\":\"1f46e\",\"\\uD83D\\uDC6F\":\"1f46f\",\"\\uD83D\\uDC70\":\"1f470\",\"\\uD83D\\uDC71\":\"1f471\",\"\\uD83D\\uDC72\":\"1f472\",\"\\uD83D\\uDC73\":\"1f473\",\"\\uD83D\\uDC74\":\"1f474\",\"\\uD83D\\uDC75\":\"1f475\",\"\\uD83D\\uDC76\":\"1f476\",\"\\uD83D\\uDC77\":\"1f477\",\"\\uD83D\\uDC78\":\"1f478\",\"\\uD83D\\uDC79\":\"1f479\",\"\\uD83D\\uDC7A\":\"1f47a\",\"\\uD83D\\uDC7B\":\"1f47b\",\"\\uD83D\\uDC7C\":\"1f47c\",\"\\uD83D\\uDC7D\":\"1f47d\",\"\\uD83D\\uDC7E\":\"1f47e\",\"\\uD83D\\uDC7F\":\"1f47f\",\"\\uD83D\\uDC80\":\"1f480\",\"\\uD83D\\uDCC7\":\"1f4c7\",\"\\uD83D\\uDC81\":\"1f481\",\"\\uD83D\\uDC82\":\"1f482\",\"\\uD83D\\uDC83\":\"1f483\",\"\\uD83D\\uDC84\":\"1f484\",\"\\uD83D\\uDC85\":\"1f485\",\"\\uD83D\\uDCD2\":\"1f4d2\",\"\\uD83D\\uDC86\":\"1f486\",\"\\uD83D\\uDCD3\":\"1f4d3\",\"\\uD83D\\uDC87\":\"1f487\",\"\\uD83D\\uDCD4\":\"1f4d4\",\"\\uD83D\\uDC88\":\"1f488\",\"\\uD83D\\uDCD5\":\"1f4d5\",\"\\uD83D\\uDC89\":\"1f489\",\"\\uD83D\\uDCD6\":\"1f4d6\",\"\\uD83D\\uDC8A\":\"1f48a\",\"\\uD83D\\uDCD7\":\"1f4d7\",\"\\uD83D\\uDC8B\":\"1f48b\",\"\\uD83D\\uDCD8\":\"1f4d8\",\"\\uD83D\\uDC8C\":\"1f48c\",\"\\uD83D\\uDCD9\":\"1f4d9\",\"\\uD83D\\uDC8D\":\"1f48d\",\"\\uD83D\\uDCDA\":\"1f4da\",\"\\uD83D\\uDC8E\":\"1f48e\",\"\\uD83D\\uDCDB\":\"1f4db\",\"\\uD83D\\uDC8F\":\"1f48f\",\"\\uD83D\\uDCDC\":\"1f4dc\",\"\\uD83D\\uDC90\":\"1f490\",\"\\uD83D\\uDCDD\":\"1f4dd\",\"\\uD83D\\uDC91\":\"1f491\",\"\\uD83D\\uDCDE\":\"1f4de\",\"\\uD83D\\uDC92\":\"1f492\",\"\\uD83D\\uDCDF\":\"1f4df\",\"\\uD83D\\uDCE0\":\"1f4e0\",\"\\uD83D\\uDC93\":\"1f493\",\"\\uD83D\\uDCE1\":\"1f4e1\",\"\\uD83D\\uDCE2\":\"1f4e2\",\"\\uD83D\\uDC94\":\"1f494\",\"\\uD83D\\uDCE3\":\"1f4e3\",\"\\uD83D\\uDCE4\":\"1f4e4\",\"\\uD83D\\uDC95\":\"1f495\",\"\\uD83D\\uDCE5\":\"1f4e5\",\"\\uD83D\\uDCE6\":\"1f4e6\",\"\\uD83D\\uDC96\":\"1f496\",\"\\uD83D\\uDCE7\":\"1f4e7\",\"\\uD83D\\uDCE8\":\"1f4e8\",\"\\uD83D\\uDC97\":\"1f497\",\"\\uD83D\\uDCE9\":\"1f4e9\",\"\\uD83D\\uDCEA\":\"1f4ea\",\"\\uD83D\\uDC98\":\"1f498\",\"\\uD83D\\uDCEB\":\"1f4eb\",\"\\uD83D\\uDCEE\":\"1f4ee\",\"\\uD83D\\uDC99\":\"1f499\",\"\\uD83D\\uDCF0\":\"1f4f0\",\"\\uD83D\\uDCF1\":\"1f4f1\",\"\\uD83D\\uDC9A\":\"1f49a\",\"\\uD83D\\uDCF2\":\"1f4f2\",\"\\uD83D\\uDCF3\":\"1f4f3\",\"\\uD83D\\uDC9B\":\"1f49b\",\"\\uD83D\\uDCF4\":\"1f4f4\",\"\\uD83D\\uDCF6\":\"1f4f6\",\"\\uD83D\\uDC9C\":\"1f49c\",\"\\uD83D\\uDCF7\":\"1f4f7\",\"\\uD83D\\uDCF9\":\"1f4f9\",\"\\uD83D\\uDC9D\":\"1f49d\",\"\\uD83D\\uDCFA\":\"1f4fa\",\"\\uD83D\\uDCFB\":\"1f4fb\",\"\\uD83D\\uDC9E\":\"1f49e\",\"\\uD83D\\uDCFC\":\"1f4fc\",\"\\uD83D\\uDD03\":\"1f503\",\"\\uD83D\\uDC9F\":\"1f49f\",\"\\uD83D\\uDD0A\":\"1f50a\",\"\\uD83D\\uDD0B\":\"1f50b\",\"\\uD83D\\uDCA0\":\"1f4a0\",\"\\uD83D\\uDD0C\":\"1f50c\",\"\\uD83D\\uDD0D\":\"1f50d\",\"\\uD83D\\uDCA1\":\"1f4a1\",\"\\uD83D\\uDD0E\":\"1f50e\",\"\\uD83D\\uDD0F\":\"1f50f\",\"\\uD83D\\uDCA2\":\"1f4a2\",\"\\uD83D\\uDD10\":\"1f510\",\"\\uD83D\\uDD11\":\"1f511\",\"\\uD83D\\uDCA3\":\"1f4a3\",\"\\uD83D\\uDD12\":\"1f512\",\"\\uD83D\\uDD13\":\"1f513\",\"\\uD83D\\uDCA4\":\"1f4a4\",\"\\uD83D\\uDD14\":\"1f514\",\"\\uD83D\\uDD16\":\"1f516\",\"\\uD83D\\uDCA5\":\"1f4a5\",\"\\uD83D\\uDD17\":\"1f517\",\"\\uD83D\\uDD18\":\"1f518\",\"\\uD83D\\uDCA6\":\"1f4a6\",\"\\uD83D\\uDD19\":\"1f519\",\"\\uD83D\\uDD1A\":\"1f51a\",\"\\uD83D\\uDCA7\":\"1f4a7\",\"\\uD83D\\uDD1B\":\"1f51b\",\"\\uD83D\\uDD1C\":\"1f51c\",\"\\uD83D\\uDCA8\":\"1f4a8\",\"\\uD83D\\uDD1D\":\"1f51d\",\"\\uD83D\\uDD1E\":\"1f51e\",\"\\uD83D\\uDCA9\":\"1f4a9\",\"\\uD83D\\uDD1F\":\"1f51f\",\"\\uD83D\\uDCAA\":\"1f4aa\",\"\\uD83D\\uDD20\":\"1f520\",\"\\uD83D\\uDD21\":\"1f521\",\"\\uD83D\\uDCAB\":\"1f4ab\",\"\\uD83D\\uDD22\":\"1f522\",\"\\uD83D\\uDD23\":\"1f523\",\"\\uD83D\\uDCAC\":\"1f4ac\",\"\\uD83D\\uDD24\":\"1f524\",\"\\uD83D\\uDD25\":\"1f525\",\"\\uD83D\\uDCAE\":\"1f4ae\",\"\\uD83D\\uDD26\":\"1f526\",\"\\uD83D\\uDD27\":\"1f527\",\"\\uD83D\\uDCAF\":\"1f4af\",\"\\uD83D\\uDD28\":\"1f528\",\"\\uD83D\\uDD29\":\"1f529\",\"\\uD83D\\uDCB0\":\"1f4b0\",\"\\uD83D\\uDD2A\":\"1f52a\",\"\\uD83D\\uDD2B\":\"1f52b\",\"\\uD83D\\uDCB1\":\"1f4b1\",\"\\uD83D\\uDD2E\":\"1f52e\",\"\\uD83D\\uDCB2\":\"1f4b2\",\"\\uD83D\\uDD2F\":\"1f52f\",\"\\uD83D\\uDCB3\":\"1f4b3\",\"\\uD83D\\uDD30\":\"1f530\",\"\\uD83D\\uDD31\":\"1f531\",\"\\uD83D\\uDCB4\":\"1f4b4\",\"\\uD83D\\uDD32\":\"1f532\",\"\\uD83D\\uDD33\":\"1f533\",\"\\uD83D\\uDCB5\":\"1f4b5\",\"\\uD83D\\uDD34\":\"1f534\",\"\\uD83D\\uDD35\":\"1f535\",\"\\uD83D\\uDCB8\":\"1f4b8\",\"\\uD83D\\uDD36\":\"1f536\",\"\\uD83D\\uDD37\":\"1f537\",\"\\uD83D\\uDCB9\":\"1f4b9\",\"\\uD83D\\uDD38\":\"1f538\",\"\\uD83D\\uDD39\":\"1f539\",\"\\uD83D\\uDCBA\":\"1f4ba\",\"\\uD83D\\uDD3A\":\"1f53a\",\"\\uD83D\\uDD3B\":\"1f53b\",\"\\uD83D\\uDCBB\":\"1f4bb\",\"\\uD83D\\uDD3C\":\"1f53c\",\"\\uD83D\\uDCBC\":\"1f4bc\",\"\\uD83D\\uDD3D\":\"1f53d\",\"\\uD83D\\uDD50\":\"1f550\",\"\\uD83D\\uDCBD\":\"1f4bd\",\"\\uD83D\\uDD51\":\"1f551\",\"\\uD83D\\uDCBE\":\"1f4be\",\"\\uD83D\\uDD52\":\"1f552\",\"\\uD83D\\uDCBF\":\"1f4bf\",\"\\uD83D\\uDD53\":\"1f553\",\"\\uD83D\\uDCC0\":\"1f4c0\",\"\\uD83D\\uDD54\":\"1f554\",\"\\uD83D\\uDD55\":\"1f555\",\"\\uD83D\\uDCC1\":\"1f4c1\",\"\\uD83D\\uDD56\":\"1f556\",\"\\uD83D\\uDD57\":\"1f557\",\"\\uD83D\\uDCC2\":\"1f4c2\",\"\\uD83D\\uDD58\":\"1f558\",\"\\uD83D\\uDD59\":\"1f559\",\"\\uD83D\\uDCC3\":\"1f4c3\",\"\\uD83D\\uDD5A\":\"1f55a\",\"\\uD83D\\uDD5B\":\"1f55b\",\"\\uD83D\\uDCC4\":\"1f4c4\",\"\\uD83D\\uDDFB\":\"1f5fb\",\"\\uD83D\\uDDFC\":\"1f5fc\",\"\\uD83D\\uDCC5\":\"1f4c5\",\"\\uD83D\\uDDFD\":\"1f5fd\",\"\\uD83D\\uDDFE\":\"1f5fe\",\"\\uD83D\\uDCC6\":\"1f4c6\",\"\\uD83D\\uDDFF\":\"1f5ff\",\"\\uD83D\\uDE01\":\"1f601\",\"\\uD83D\\uDE02\":\"1f602\",\"\\uD83D\\uDE03\":\"1f603\",\"\\uD83D\\uDCC8\":\"1f4c8\",\"\\uD83D\\uDE04\":\"1f604\",\"\\uD83D\\uDE05\":\"1f605\",\"\\uD83D\\uDCC9\":\"1f4c9\",\"\\uD83D\\uDE06\":\"1f606\",\"\\uD83D\\uDE09\":\"1f609\",\"\\uD83D\\uDCCA\":\"1f4ca\",\"\\uD83D\\uDE0A\":\"1f60a\",\"\\uD83D\\uDE0B\":\"1f60b\",\"\\uD83D\\uDCCB\":\"1f4cb\",\"\\uD83D\\uDE0C\":\"1f60c\",\"\\uD83D\\uDE0D\":\"1f60d\",\"\\uD83D\\uDCCC\":\"1f4cc\",\"\\uD83D\\uDE0F\":\"1f60f\",\"\\uD83D\\uDE12\":\"1f612\",\"\\uD83D\\uDCCD\":\"1f4cd\",\"\\uD83D\\uDE13\":\"1f613\",\"\\uD83D\\uDE14\":\"1f614\",\"\\uD83D\\uDCCE\":\"1f4ce\",\"\\uD83D\\uDE16\":\"1f616\",\"\\uD83D\\uDE18\":\"1f618\",\"\\uD83D\\uDCCF\":\"1f4cf\",\"\\uD83D\\uDE1A\":\"1f61a\",\"\\uD83D\\uDE1C\":\"1f61c\",\"\\uD83D\\uDCD0\":\"1f4d0\",\"\\uD83D\\uDE1D\":\"1f61d\",\"\\uD83D\\uDE1E\":\"1f61e\",\"\\uD83D\\uDCD1\":\"1f4d1\",\"\\uD83D\\uDE20\":\"1f620\",\"\\uD83D\\uDE21\":\"1f621\",\"\\uD83D\\uDE22\":\"1f622\",\"\\uD83D\\uDE23\":\"1f623\",\"\\uD83D\\uDE24\":\"1f624\",\"\\uD83D\\uDE25\":\"1f625\",\"\\uD83D\\uDE28\":\"1f628\",\"\\uD83D\\uDE29\":\"1f629\",\"\\uD83D\\uDE2A\":\"1f62a\",\"\\uD83D\\uDE2B\":\"1f62b\",\"\\uD83D\\uDE2D\":\"1f62d\",\"\\uD83D\\uDE30\":\"1f630\",\"\\uD83D\\uDE31\":\"1f631\",\"\\uD83D\\uDE32\":\"1f632\",\"\\uD83D\\uDE33\":\"1f633\",\"\\uD83D\\uDE35\":\"1f635\",\"\\uD83D\\uDE37\":\"1f637\",\"\\uD83D\\uDE38\":\"1f638\",\"\\uD83D\\uDE39\":\"1f639\",\"\\uD83D\\uDE3A\":\"1f63a\",\"\\uD83D\\uDE3B\":\"1f63b\",\"\\uD83D\\uDE3C\":\"1f63c\",\"\\uD83D\\uDE3D\":\"1f63d\",\"\\uD83D\\uDE3E\":\"1f63e\",\"\\uD83D\\uDE3F\":\"1f63f\",\"\\uD83D\\uDE40\":\"1f640\",\"\\uD83D\\uDE45\":\"1f645\",\"\\uD83D\\uDE46\":\"1f646\",\"\\uD83D\\uDE47\":\"1f647\",\"\\uD83D\\uDE48\":\"1f648\",\"\\uD83D\\uDE49\":\"1f649\",\"\\uD83D\\uDE4A\":\"1f64a\",\"\\uD83D\\uDE4B\":\"1f64b\",\"\\uD83D\\uDE4C\":\"1f64c\",\"\\uD83D\\uDE4D\":\"1f64d\",\"\\uD83D\\uDE4E\":\"1f64e\",\"\\uD83D\\uDE4F\":\"1f64f\",\"\\uD83D\\uDE80\":\"1f680\",\"\\uD83D\\uDE83\":\"1f683\",\"\\uD83D\\uDE84\":\"1f684\",\"\\uD83D\\uDE85\":\"1f685\",\"\\uD83D\\uDE87\":\"1f687\",\"\\uD83D\\uDE89\":\"1f689\",\"\\uD83D\\uDE8C\":\"1f68c\",\"\\uD83D\\uDE8F\":\"1f68f\",\"\\uD83D\\uDE91\":\"1f691\",\"\\uD83D\\uDE92\":\"1f692\",\"\\uD83D\\uDE93\":\"1f693\",\"\\uD83D\\uDE95\":\"1f695\",\"\\uD83D\\uDE97\":\"1f697\",\"\\uD83D\\uDE99\":\"1f699\",\"\\uD83D\\uDE9A\":\"1f69a\",\"\\uD83D\\uDEA2\":\"1f6a2\",\"\\uD83D\\uDEA4\":\"1f6a4\",\"\\uD83D\\uDEA5\":\"1f6a5\",\"\\uD83D\\uDEA7\":\"1f6a7\",\"\\uD83D\\uDEA8\":\"1f6a8\",\"\\uD83D\\uDEA9\":\"1f6a9\",\"\\uD83D\\uDEAA\":\"1f6aa\",\"\\uD83D\\uDEAB\":\"1f6ab\",\"\\uD83D\\uDEAC\":\"1f6ac\",\"\\uD83D\\uDEAD\":\"1f6ad\",\"\\uD83D\\uDEB2\":\"1f6b2\",\"\\uD83D\\uDEB6\":\"1f6b6\",\"\\uD83D\\uDEB9\":\"1f6b9\",\"\\uD83D\\uDEBA\":\"1f6ba\",\"\\uD83D\\uDEBB\":\"1f6bb\",\"\\uD83D\\uDEBC\":\"1f6bc\",\"\\uD83D\\uDEBD\":\"1f6bd\",\"\\uD83D\\uDEBE\":\"1f6be\",\"\\uD83D\\uDEC0\":\"1f6c0\",\"\\uD83E\\uDD18\":\"1f918\",\"\\uD83D\\uDE00\":\"1f600\",\"\\uD83D\\uDE07\":\"1f607\",\"\\uD83D\\uDE08\":\"1f608\",\"\\uD83D\\uDE0E\":\"1f60e\",\"\\uD83D\\uDE10\":\"1f610\",\"\\uD83D\\uDE11\":\"1f611\",\"\\uD83D\\uDE15\":\"1f615\",\"\\uD83D\\uDE17\":\"1f617\",\"\\uD83D\\uDE19\":\"1f619\",\"\\uD83D\\uDE1B\":\"1f61b\",\"\\uD83D\\uDE1F\":\"1f61f\",\"\\uD83D\\uDE26\":\"1f626\",\"\\uD83D\\uDE27\":\"1f627\",\"\\uD83D\\uDE2C\":\"1f62c\",\"\\uD83D\\uDE2E\":\"1f62e\",\"\\uD83D\\uDE2F\":\"1f62f\",\"\\uD83D\\uDE34\":\"1f634\",\"\\uD83D\\uDE36\":\"1f636\",\"\\uD83D\\uDE81\":\"1f681\",\"\\uD83D\\uDE82\":\"1f682\",\"\\uD83D\\uDE86\":\"1f686\",\"\\uD83D\\uDE88\":\"1f688\",\"\\uD83D\\uDE8A\":\"1f68a\",\"\\uD83D\\uDE8D\":\"1f68d\",\"\\uD83D\\uDE8E\":\"1f68e\",\"\\uD83D\\uDE90\":\"1f690\",\"\\uD83D\\uDE94\":\"1f694\",\"\\uD83D\\uDE96\":\"1f696\",\"\\uD83D\\uDE98\":\"1f698\",\"\\uD83D\\uDE9B\":\"1f69b\",\"\\uD83D\\uDE9C\":\"1f69c\",\"\\uD83D\\uDE9D\":\"1f69d\",\"\\uD83D\\uDE9E\":\"1f69e\",\"\\uD83D\\uDE9F\":\"1f69f\",\"\\uD83D\\uDEA0\":\"1f6a0\",\"\\uD83D\\uDEA1\":\"1f6a1\",\"\\uD83D\\uDEA3\":\"1f6a3\",\"\\uD83D\\uDEA6\":\"1f6a6\",\"\\uD83D\\uDEAE\":\"1f6ae\",\"\\uD83D\\uDEAF\":\"1f6af\",\"\\uD83D\\uDEB0\":\"1f6b0\",\"\\uD83D\\uDEB1\":\"1f6b1\",\"\\uD83D\\uDEB3\":\"1f6b3\",\"\\uD83D\\uDEB4\":\"1f6b4\",\"\\uD83D\\uDEB5\":\"1f6b5\",\"\\uD83D\\uDEB7\":\"1f6b7\",\"\\uD83D\\uDEB8\":\"1f6b8\",\"\\uD83D\\uDEBF\":\"1f6bf\",\"\\uD83D\\uDEC1\":\"1f6c1\",\"\\uD83D\\uDEC2\":\"1f6c2\",\"\\uD83D\\uDEC3\":\"1f6c3\",\"\\uD83D\\uDEC4\":\"1f6c4\",\"\\uD83D\\uDEC5\":\"1f6c5\",\"\\uD83C\\uDF0D\":\"1f30d\",\"\\uD83C\\uDF0E\":\"1f30e\",\"\\uD83C\\uDF10\":\"1f310\",\"\\uD83C\\uDF12\":\"1f312\",\"\\uD83C\\uDF16\":\"1f316\",\"\\uD83C\\uDF17\":\"1f317\",\"\\uD83C\\uDF18\":\"1f318\",\"\\uD83C\\uDF1A\":\"1f31a\",\"\\uD83C\\uDF1C\":\"1f31c\",\"\\uD83C\\uDF1D\":\"1f31d\",\"\\uD83C\\uDF1E\":\"1f31e\",\"\\uD83C\\uDF32\":\"1f332\",\"\\uD83C\\uDF33\":\"1f333\",\"\\uD83C\\uDF4B\":\"1f34b\",\"\\uD83C\\uDF50\":\"1f350\",\"\\uD83C\\uDF7C\":\"1f37c\",\"\\uD83C\\uDFC7\":\"1f3c7\",\"\\uD83C\\uDFC9\":\"1f3c9\",\"\\uD83C\\uDFE4\":\"1f3e4\",\"\\uD83D\\uDC00\":\"1f400\",\"\\uD83D\\uDC01\":\"1f401\",\"\\uD83D\\uDC02\":\"1f402\",\"\\uD83D\\uDC03\":\"1f403\",\"\\uD83D\\uDC04\":\"1f404\",\"\\uD83D\\uDC05\":\"1f405\",\"\\uD83D\\uDC06\":\"1f406\",\"\\uD83D\\uDC07\":\"1f407\",\"\\uD83D\\uDC08\":\"1f408\",\"\\uD83D\\uDC09\":\"1f409\",\"\\uD83D\\uDC0A\":\"1f40a\",\"\\uD83D\\uDC0B\":\"1f40b\",\"\\uD83D\\uDC0F\":\"1f40f\",\"\\uD83D\\uDC10\":\"1f410\",\"\\uD83D\\uDC13\":\"1f413\",\"\\uD83D\\uDC15\":\"1f415\",\"\\uD83D\\uDC16\":\"1f416\",\"\\uD83D\\uDC2A\":\"1f42a\",\"\\uD83D\\uDC65\":\"1f465\",\"\\uD83D\\uDC6C\":\"1f46c\",\"\\uD83D\\uDC6D\":\"1f46d\",\"\\uD83D\\uDCAD\":\"1f4ad\",\"\\uD83D\\uDCB6\":\"1f4b6\",\"\\uD83D\\uDCB7\":\"1f4b7\",\"\\uD83D\\uDCEC\":\"1f4ec\",\"\\uD83D\\uDCED\":\"1f4ed\",\"\\uD83D\\uDCEF\":\"1f4ef\",\"\\uD83D\\uDCF5\":\"1f4f5\",\"\\uD83D\\uDD00\":\"1f500\",\"\\uD83D\\uDD01\":\"1f501\",\"\\uD83D\\uDD02\":\"1f502\",\"\\uD83D\\uDD04\":\"1f504\",\"\\uD83D\\uDD05\":\"1f505\",\"\\uD83D\\uDD06\":\"1f506\",\"\\uD83D\\uDD07\":\"1f507\",\"\\uD83D\\uDD09\":\"1f509\",\"\\uD83D\\uDD15\":\"1f515\",\"\\uD83D\\uDD2C\":\"1f52c\",\"\\uD83D\\uDD2D\":\"1f52d\",\"\\uD83D\\uDD5C\":\"1f55c\",\"\\uD83D\\uDD5D\":\"1f55d\",\"\\uD83D\\uDD5E\":\"1f55e\",\"\\uD83D\\uDD5F\":\"1f55f\",\"\\uD83D\\uDD60\":\"1f560\",\"\\uD83D\\uDD61\":\"1f561\",\"\\uD83D\\uDD62\":\"1f562\",\"\\uD83D\\uDD63\":\"1f563\",\"\\uD83D\\uDD64\":\"1f564\",\"\\uD83D\\uDD65\":\"1f565\",\"\\uD83D\\uDD66\":\"1f566\",\"\\uD83D\\uDD67\":\"1f567\",\"\\uD83D\\uDD08\":\"1f508\",\"\\uD83D\\uDE8B\":\"1f68b\",\"\\uD83C\\uDFC5\":\"1f3c5\",\"\\uD83C\\uDFF4\":\"1f3f4\",\"\\uD83D\\uDCF8\":\"1f4f8\",\"\\uD83D\\uDECC\":\"1f6cc\",\"\\uD83D\\uDD95\":\"1f595\",\"\\uD83D\\uDD96\":\"1f596\",\"\\uD83D\\uDE41\":\"1f641\",\"\\uD83D\\uDE42\":\"1f642\",\"\\uD83D\\uDEEB\":\"1f6eb\",\"\\uD83D\\uDEEC\":\"1f6ec\",\"\\uD83C\\uDFFB\":\"1f3fb\",\"\\uD83C\\uDFFC\":\"1f3fc\",\"\\uD83C\\uDFFD\":\"1f3fd\",\"\\uD83C\\uDFFE\":\"1f3fe\",\"\\uD83C\\uDFFF\":\"1f3ff\",\"\\uD83D\\uDE43\":\"1f643\",\"\\uD83E\\uDD11\":\"1f911\",\"\\uD83E\\uDD13\":\"1f913\",\"\\uD83E\\uDD17\":\"1f917\",\"\\uD83D\\uDE44\":\"1f644\",\"\\uD83E\\uDD14\":\"1f914\",\"\\uD83E\\uDD10\":\"1f910\",\"\\uD83E\\uDD12\":\"1f912\",\"\\uD83E\\uDD15\":\"1f915\",\"\\uD83E\\uDD16\":\"1f916\",\"\\uD83E\\uDD81\":\"1f981\",\"\\uD83E\\uDD84\":\"1f984\",\"\\uD83E\\uDD82\":\"1f982\",\"\\uD83E\\uDD80\":\"1f980\",\"\\uD83E\\uDD83\":\"1f983\",\"\\uD83E\\uDDC0\":\"1f9c0\",\"\\uD83C\\uDF2D\":\"1f32d\",\"\\uD83C\\uDF2E\":\"1f32e\",\"\\uD83C\\uDF2F\":\"1f32f\",\"\\uD83C\\uDF7F\":\"1f37f\",\"\\uD83C\\uDF7E\":\"1f37e\",\"\\uD83C\\uDFF9\":\"1f3f9\",\"\\uD83C\\uDFFA\":\"1f3fa\",\"\\uD83D\\uDED0\":\"1f6d0\",\"\\uD83D\\uDD4B\":\"1f54b\",\"\\uD83D\\uDD4C\":\"1f54c\",\"\\uD83D\\uDD4D\":\"1f54d\",\"\\uD83D\\uDD4E\":\"1f54e\",\"\\uD83D\\uDCFF\":\"1f4ff\",\"\\uD83C\\uDFCF\":\"1f3cf\",\"\\uD83C\\uDFD0\":\"1f3d0\",\"\\uD83C\\uDFD1\":\"1f3d1\",\"\\uD83C\\uDFD2\":\"1f3d2\",\"\\uD83C\\uDFD3\":\"1f3d3\",\"\\uD83C\\uDFF8\":\"1f3f8\",\"\\uD83E\\uDD41\":\"1f941\",\"\\uD83E\\uDD90\":\"1f990\",\"\\uD83E\\uDD91\":\"1f991\",\"\\uD83E\\uDD5A\":\"1f95a\",\"\\uD83E\\uDD5B\":\"1f95b\",\"\\uD83E\\uDD5C\":\"1f95c\",\"\\uD83E\\uDD5D\":\"1f95d\",\"\\uD83E\\uDD5E\":\"1f95e\",\"\\uD83C\\uDDFC\":\"1f1fc\",\"\\uD83C\\uDDFB\":\"1f1fb\",\"\\uD83C\\uDDFA\":\"1f1fa\",\"\\uD83C\\uDDF9\":\"1f1f9\",\"\\uD83C\\uDDF8\":\"1f1f8\",\"\\uD83C\\uDDF7\":\"1f1f7\",\"\\uD83C\\uDDF6\":\"1f1f6\",\"\\uD83C\\uDDF5\":\"1f1f5\",\"\\uD83C\\uDDF4\":\"1f1f4\",\"\\uD83C\\uDDF3\":\"1f1f3\",\"\\uD83C\\uDDF2\":\"1f1f2\",\"\\uD83C\\uDDF1\":\"1f1f1\",\"\\uD83C\\uDDF0\":\"1f1f0\",\"\\uD83C\\uDDEF\":\"1f1ef\",\"\\uD83C\\uDDEE\":\"1f1ee\",\"\\uD83C\\uDDED\":\"1f1ed\",\"\\uD83C\\uDDEC\":\"1f1ec\",\"\\uD83C\\uDDEB\":\"1f1eb\",\"\\uD83C\\uDDEA\":\"1f1ea\",\"\\uD83C\\uDDE9\":\"1f1e9\",\"\\uD83C\\uDDE8\":\"1f1e8\",\"\\uD83C\\uDDE7\":\"1f1e7\",\"\\uD83C\\uDDE6\":\"1f1e6\",\"\\u23E9\":\"23e9\",\"\\u23EA\":\"23ea\",\"\\u23EB\":\"23eb\",\"\\u23EC\":\"23ec\",\"\\u23F0\":\"23f0\",\"\\u23F3\":\"23f3\",\"\\u26CE\":\"26ce\",\"\\u2705\":\"2705\",\"\\u270A\":\"270a\",\"\\u270B\":\"270b\",\"\\u2728\":\"2728\",\"\\u274C\":\"274c\",\"\\u274E\":\"274e\",\"\\u2753\":\"2753\",\"\\u2754\":\"2754\",\"\\u2755\":\"2755\",\"\\u2795\":\"2795\",\"\\u2796\":\"2796\",\"\\u2797\":\"2797\",\"\\u27B0\":\"27b0\",\"\\u27BF\":\"27bf\",\"\\u00A9\":\"00a9\",\"\\u00AE\":\"00ae\",\"\\u203C\":\"203c\",\"\\u2049\":\"2049\",\"\\u2122\":\"2122\",\"\\u2139\":\"2139\",\"\\u2194\":\"2194\",\"\\u2195\":\"2195\",\"\\u2196\":\"2196\",\"\\u2197\":\"2197\",\"\\u2198\":\"2198\",\"\\u2199\":\"2199\",\"\\u21A9\":\"21a9\",\"\\u21AA\":\"21aa\",\"\\u231A\":\"231a\",\"\\u231B\":\"231b\",\"\\u24C2\":\"24c2\",\"\\u25AA\":\"25aa\",\"\\u25AB\":\"25ab\",\"\\u25B6\":\"25b6\",\"\\u25C0\":\"25c0\",\"\\u25FB\":\"25fb\",\"\\u25FC\":\"25fc\",\"\\u25FD\":\"25fd\",\"\\u25FE\":\"25fe\",\"\\u2600\":\"2600\",\"\\u2601\":\"2601\",\"\\u260E\":\"260e\",\"\\u2611\":\"2611\",\"\\u2614\":\"2614\",\"\\u2615\":\"2615\",\"\\u261D\":\"261d\",\"\\u263A\":\"263a\",\"\\u2648\":\"2648\",\"\\u2649\":\"2649\",\"\\u264A\":\"264a\",\"\\u264B\":\"264b\",\"\\u264C\":\"264c\",\"\\u264D\":\"264d\",\"\\u264E\":\"264e\",\"\\u264F\":\"264f\",\"\\u2650\":\"2650\",\"\\u2651\":\"2651\",\"\\u2652\":\"2652\",\"\\u2653\":\"2653\",\"\\u2660\":\"2660\",\"\\u2663\":\"2663\",\"\\u2665\":\"2665\",\"\\u2666\":\"2666\",\"\\u2668\":\"2668\",\"\\u267B\":\"267b\",\"\\u267F\":\"267f\",\"\\u2693\":\"2693\",\"\\u26A0\":\"26a0\",\"\\u26A1\":\"26a1\",\"\\u26AA\":\"26aa\",\"\\u26AB\":\"26ab\",\"\\u26BD\":\"26bd\",\"\\u26BE\":\"26be\",\"\\u26C4\":\"26c4\",\"\\u26C5\":\"26c5\",\"\\u26D4\":\"26d4\",\"\\u26EA\":\"26ea\",\"\\u26F2\":\"26f2\",\"\\u26F3\":\"26f3\",\"\\u26F5\":\"26f5\",\"\\u26FA\":\"26fa\",\"\\u26FD\":\"26fd\",\"\\u2702\":\"2702\",\"\\u2708\":\"2708\",\"\\u2709\":\"2709\",\"\\u270C\":\"270c\",\"\\u270F\":\"270f\",\"\\u2712\":\"2712\",\"\\u2714\":\"2714\",\"\\u2716\":\"2716\",\"\\u2733\":\"2733\",\"\\u2734\":\"2734\",\"\\u2744\":\"2744\",\"\\u2747\":\"2747\",\"\\u2757\":\"2757\",\"\\u2764\":\"2764\",\"\\u27A1\":\"27a1\",\"\\u2934\":\"2934\",\"\\u2935\":\"2935\",\"\\u2B05\":\"2b05\",\"\\u2B06\":\"2b06\",\"\\u2B07\":\"2b07\",\"\\u2B1B\":\"2b1b\",\"\\u2B1C\":\"2b1c\",\"\\u2B50\":\"2b50\",\"\\u2B55\":\"2b55\",\"\\u3030\":\"3030\",\"\\u303D\":\"303d\",\"\\u3297\":\"3297\",\"\\u3299\":\"3299\",\"\\uD83C\\uDC04\":\"1f004\",\"\\uD83C\\uDD7F\":\"1f17f\",\"\\uD83C\\uDE02\":\"1f202\",\"\\uD83C\\uDE1A\":\"1f21a\",\"\\uD83C\\uDE2F\":\"1f22f\",\"\\uD83C\\uDE37\":\"1f237\",\"\\uD83C\\uDF9E\":\"1f39e\",\"\\uD83C\\uDF9F\":\"1f39f\",\"\\uD83C\\uDFCB\":\"1f3cb\",\"\\uD83C\\uDFCC\":\"1f3cc\",\"\\uD83C\\uDFCD\":\"1f3cd\",\"\\uD83C\\uDFCE\":\"1f3ce\",\"\\uD83C\\uDF96\":\"1f396\",\"\\uD83C\\uDF97\":\"1f397\",\"\\uD83C\\uDF36\":\"1f336\",\"\\uD83C\\uDF27\":\"1f327\",\"\\uD83C\\uDF28\":\"1f328\",\"\\uD83C\\uDF29\":\"1f329\",\"\\uD83C\\uDF2A\":\"1f32a\",\"\\uD83C\\uDF2B\":\"1f32b\",\"\\uD83C\\uDF2C\":\"1f32c\",\"\\uD83D\\uDC3F\":\"1f43f\",\"\\uD83D\\uDD77\":\"1f577\",\"\\uD83D\\uDD78\":\"1f578\",\"\\uD83C\\uDF21\":\"1f321\",\"\\uD83C\\uDF99\":\"1f399\",\"\\uD83C\\uDF9A\":\"1f39a\",\"\\uD83C\\uDF9B\":\"1f39b\",\"\\uD83C\\uDFF3\":\"1f3f3\",\"\\uD83C\\uDFF5\":\"1f3f5\",\"\\uD83C\\uDFF7\":\"1f3f7\",\"\\uD83D\\uDCFD\":\"1f4fd\",\"\\u271D\":\"271d\",\"\\uD83D\\uDD49\":\"1f549\",\"\\uD83D\\uDD4A\":\"1f54a\",\"\\uD83D\\uDD6F\":\"1f56f\",\"\\uD83D\\uDD70\":\"1f570\",\"\\uD83D\\uDD73\":\"1f573\",\"\\uD83D\\uDD76\":\"1f576\",\"\\uD83D\\uDD79\":\"1f579\",\"\\uD83D\\uDD87\":\"1f587\",\"\\uD83D\\uDD8A\":\"1f58a\",\"\\uD83D\\uDD8B\":\"1f58b\",\"\\uD83D\\uDD8C\":\"1f58c\",\"\\uD83D\\uDD8D\":\"1f58d\",\"\\uD83D\\uDDA5\":\"1f5a5\",\"\\uD83D\\uDDA8\":\"1f5a8\",\"\\u2328\":\"2328\",\"\\uD83D\\uDDB2\":\"1f5b2\",\"\\uD83D\\uDDBC\":\"1f5bc\",\"\\uD83D\\uDDC2\":\"1f5c2\",\"\\uD83D\\uDDC3\":\"1f5c3\",\"\\uD83D\\uDDC4\":\"1f5c4\",\"\\uD83D\\uDDD1\":\"1f5d1\",\"\\uD83D\\uDDD2\":\"1f5d2\",\"\\uD83D\\uDDD3\":\"1f5d3\",\"\\uD83D\\uDDDC\":\"1f5dc\",\"\\uD83D\\uDDDD\":\"1f5dd\",\"\\uD83D\\uDDDE\":\"1f5de\",\"\\uD83D\\uDDE1\":\"1f5e1\",\"\\uD83D\\uDDE3\":\"1f5e3\",\"\\uD83D\\uDDE8\":\"1f5e8\",\"\\uD83D\\uDDEF\":\"1f5ef\",\"\\uD83D\\uDDF3\":\"1f5f3\",\"\\uD83D\\uDDFA\":\"1f5fa\",\"\\uD83D\\uDEE0\":\"1f6e0\",\"\\uD83D\\uDEE1\":\"1f6e1\",\"\\uD83D\\uDEE2\":\"1f6e2\",\"\\uD83D\\uDEF0\":\"1f6f0\",\"\\uD83C\\uDF7D\":\"1f37d\",\"\\uD83D\\uDC41\":\"1f441\",\"\\uD83D\\uDD74\":\"1f574\",\"\\uD83D\\uDD75\":\"1f575\",\"\\u270D\":\"270d\",\"\\uD83D\\uDD90\":\"1f590\",\"\\uD83C\\uDFD4\":\"1f3d4\",\"\\uD83C\\uDFD5\":\"1f3d5\",\"\\uD83C\\uDFD6\":\"1f3d6\",\"\\uD83C\\uDFD7\":\"1f3d7\",\"\\uD83C\\uDFD8\":\"1f3d8\",\"\\uD83C\\uDFD9\":\"1f3d9\",\"\\uD83C\\uDFDA\":\"1f3da\",\"\\uD83C\\uDFDB\":\"1f3db\",\"\\uD83C\\uDFDC\":\"1f3dc\",\"\\uD83C\\uDFDD\":\"1f3dd\",\"\\uD83C\\uDFDE\":\"1f3de\",\"\\uD83C\\uDFDF\":\"1f3df\",\"\\uD83D\\uDECB\":\"1f6cb\",\"\\uD83D\\uDECD\":\"1f6cd\",\"\\uD83D\\uDECE\":\"1f6ce\",\"\\uD83D\\uDECF\":\"1f6cf\",\"\\uD83D\\uDEE3\":\"1f6e3\",\"\\uD83D\\uDEE4\":\"1f6e4\",\"\\uD83D\\uDEE5\":\"1f6e5\",\"\\uD83D\\uDEE9\":\"1f6e9\",\"\\uD83D\\uDEF3\":\"1f6f3\",\"\\u23CF\":\"23cf\",\"\\u23ED\":\"23ed\",\"\\u23EE\":\"23ee\",\"\\u23EF\":\"23ef\",\"\\u23F1\":\"23f1\",\"\\u23F2\":\"23f2\",\"\\u23F8\":\"23f8\",\"\\u23F9\":\"23f9\",\"\\u23FA\":\"23fa\",\"\\u2602\":\"2602\",\"\\u2603\":\"2603\",\"\\u2604\":\"2604\",\"\\u2618\":\"2618\",\"\\u2620\":\"2620\",\"\\u2622\":\"2622\",\"\\u2623\":\"2623\",\"\\u2626\":\"2626\",\"\\u262A\":\"262a\",\"\\u262E\":\"262e\",\"\\u262F\":\"262f\",\"\\u2638\":\"2638\",\"\\u2639\":\"2639\",\"\\u2692\":\"2692\",\"\\u2694\":\"2694\",\"\\u2696\":\"2696\",\"\\u2697\":\"2697\",\"\\u2699\":\"2699\",\"\\u269B\":\"269b\",\"\\u269C\":\"269c\",\"\\u26B0\":\"26b0\",\"\\u26B1\":\"26b1\",\"\\u26C8\":\"26c8\",\"\\u26CF\":\"26cf\",\"\\u26D1\":\"26d1\",\"\\u26D3\":\"26d3\",\"\\u26E9\":\"26e9\",\"\\u26F0\":\"26f0\",\"\\u26F1\":\"26f1\",\"\\u26F4\":\"26f4\",\"\\u26F7\":\"26f7\",\"\\u26F8\":\"26f8\",\"\\u26F9\":\"26f9\",\"\\u2721\":\"2721\",\"\\u2763\":\"2763\",\"\\uD83C\\uDF24\":\"1f324\",\"\\uD83C\\uDF25\":\"1f325\",\"\\uD83C\\uDF26\":\"1f326\",\"\\uD83D\\uDDB1\":\"1f5b1\"};\n ns.imagePathPNG = 'https://cdn.jsdelivr.net/emojione/assets/png/';\n ns.imagePathSVG = 'https://cdn.jsdelivr.net/emojione/assets/svg/';\n ns.imagePathSVGSprites = './../assets/sprites/emojione.sprites.svg';\n ns.imageType = 'png'; // or svg\n ns.imageTitleTag = true; //set to false to remove title attribute from img tag\n ns.sprites = false; // if this is true then sprite markup will be used (if SVG image type is set then you must include the SVG sprite file locally)\n ns.unicodeAlt = true; // use the unicode char as the alt attribute (makes copy and pasting the resulting text better)\n ns.ascii = false; // change to true to convert ascii smileys\n ns.cacheBustParam = '?v=2.2.7'; // you can [optionally] modify this to force browsers to refresh their cache. it will be appended to the send of the filenames\n\n ns.regShortNames = new RegExp(\"<object[^>]*>.*?<\\/object>|<span[^>]*>.*?<\\/span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|(\"+ns.shortnames+\")\", \"gi\");\n ns.regAscii = new RegExp(\"<object[^>]*>.*?<\\/object>|<span[^>]*>.*?<\\/span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|((\\\\s|^)\"+ns.asciiRegexp+\"(?=\\\\s|$|[!,.?]))\", \"g\");\n ns.regUnicode = new RegExp(\"<object[^>]*>.*?<\\/object>|<span[^>]*>.*?<\\/span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|(\"+ns.unicodeRegexp+\")\", \"gi\");\n\n ns.toImage = function(str) {\n str = ns.unicodeToImage(str);\n str = ns.shortnameToImage(str);\n return str;\n };\n\n // Uses toShort to transform all unicode into a standard shortname\n // then transforms the shortname into unicode\n // This is done for standardization when converting several unicode types\n ns.unifyUnicode = function(str) {\n str = ns.toShort(str);\n str = ns.shortnameToUnicode(str);\n return str;\n };\n\n // Replace shortnames (:wink:) with Ascii equivalents ( ;^) )\n // Useful for systems that dont support unicode nor images\n ns.shortnameToAscii = function(str) {\n var unicode,\n // something to keep in mind here is that array flip will destroy\n // half of the ascii text \"emojis\" because the unicode numbers are duplicated\n // this is ok for what it's being used for\n unicodeToAscii = ns.objectFlip(ns.asciiList);\n\n str = str.replace(ns.regShortNames, function(shortname) {\n if( (typeof shortname === 'undefined') || (shortname === '') || (!(shortname in ns.emojioneList)) ) {\n // if the shortname doesnt exist just return the entire match\n return shortname;\n }\n else {\n unicode = ns.emojioneList[shortname].unicode[ns.emojioneList[shortname].unicode.length-1];\n if(typeof unicodeToAscii[unicode] !== 'undefined') {\n return unicodeToAscii[unicode];\n } else {\n return shortname;\n }\n }\n });\n return str;\n };\n\n // will output unicode from shortname\n // useful for sending emojis back to mobile devices\n ns.shortnameToUnicode = function(str) {\n // replace regular shortnames first\n var unicode,fname,uc;\n str = str.replace(ns.regShortNames, function(shortname) {\n if( (typeof shortname === 'undefined') || (shortname === '') || (!(shortname in ns.emojioneList)) ) {\n // if the shortname doesnt exist just return the entire match\n return shortname;\n }\n unicode = ns.emojioneList[shortname].unicode[0].toUpperCase();\n fname = ns.emojioneList[shortname].fname;\n uc = ns.emojioneList[shortname].uc;\n //return ns.convert(unicode);\n return ns.convert(uc);\n });\n\n // if ascii smileys are turned on, then we'll replace them!\n if (ns.ascii) {\n\n str = str.replace(ns.regAscii, function(entire, m1, m2, m3) {\n if( (typeof m3 === 'undefined') || (m3 === '') || (!(ns.unescapeHTML(m3) in ns.asciiList)) ) {\n // if the shortname doesnt exist just return the entire match\n return entire;\n }\n\n m3 = ns.unescapeHTML(m3);\n unicode = ns.asciiList[m3].toUpperCase();\n return m2+ns.convert(unicode);\n });\n }\n\n return str;\n };\n\n ns.shortnameToImage = function(str) {\n // replace regular shortnames first\n var replaceWith,unicode,alt,title;\n str = str.replace(ns.regShortNames, function(shortname) {\n if( (typeof shortname === 'undefined') || (shortname === '') || (!(shortname in ns.emojioneList)) ) {\n // if the shortname doesnt exist just return the entire match\n return shortname;\n }\n else {\n unicode = ns.emojioneList[shortname].unicode[ns.emojioneList[shortname].unicode.length-1];\n title = ns.imageTitleTag ? 'title=\"'+shortname+'\"' : '';\n\n // depending on the settings, we'll either add the native unicode as the alt tag, otherwise the shortname\n alt = (ns.unicodeAlt) ? ns.convert(unicode.toUpperCase()) : shortname;\n\n if(ns.imageType === 'png') {\n if(ns.sprites) {\n replaceWith = '<span class=\"emojione emojione-'+unicode+'\" ' + title + '>'+alt+'</span>';\n }\n else {\n replaceWith = '<img class=\"emojione\" alt=\"'+alt+'\" ' + title + ' src=\"'+ns.imagePathPNG+unicode+'.png'+ns.cacheBustParam+'\"/>';\n }\n }\n else {\n // svg\n if(ns.sprites) {\n replaceWith = '<svg class=\"emojione\"><description>'+alt+'</description><use xlink:href=\"'+ns.imagePathSVGSprites+'#emoji-'+unicode+'\"></use></svg>';\n }\n else {\n replaceWith = '<object class=\"emojione\" data=\"'+ns.imagePathSVG+unicode+'.svg'+ns.cacheBustParam+'\" type=\"image/svg+xml\" standby=\"'+alt+'\">'+alt+'</object>';\n }\n }\n\n return replaceWith;\n }\n });\n\n // if ascii smileys are turned on, then we'll replace them!\n if (ns.ascii) {\n\n str = str.replace(ns.regAscii, function(entire, m1, m2, m3) {\n if( (typeof m3 === 'undefined') || (m3 === '') || (!(ns.unescapeHTML(m3) in ns.asciiList)) ) {\n // if the ascii doesnt exist just return the entire match\n return entire;\n }\n\n m3 = ns.unescapeHTML(m3);\n unicode = ns.asciiList[m3];\n title = ns.imageTitleTag ? 'title=\"'+ns.escapeHTML(m3)+'\"' : '';\n\n // depending on the settings, we'll either add the native unicode as the alt tag, otherwise the shortname\n alt = (ns.unicodeAlt) ? ns.convert(unicode.toUpperCase()) : ns.escapeHTML(m3);\n\n if(ns.imageType === 'png') {\n if(ns.sprites) {\n replaceWith = m2+'<span class=\"emojione emojione-'+unicode+'\" ' + title + '>'+alt+'</span>';\n }\n else {\n replaceWith = m2+'<img class=\"emojione\" alt=\"'+alt+'\" ' + title + ' src=\"'+ns.imagePathPNG+unicode+'.png'+ns.cacheBustParam+'\"/>';\n }\n }\n else {\n // svg\n if(ns.sprites) {\n replaceWith = '<svg class=\"emojione\"><description>'+alt+'</description><use xlink:href=\"'+ns.imagePathSVGSprites+'#emoji-'+unicode+'\"></use></svg>';\n }\n else {\n replaceWith = m2+'<object class=\"emojione\" data=\"'+ns.imagePathSVG+unicode+'.svg'+ns.cacheBustParam+'\" type=\"image/svg+xml\" standby=\"'+alt+'\">'+alt+'</object>';\n }\n }\n\n return replaceWith;\n });\n }\n\n return str;\n };\n\n ns.unicodeToImage = function(str) {\n\n var replaceWith,unicode,short,fname,alt,title;\n var mappedUnicode = ns.mapUnicodeToShort();\n str = str.replace(ns.regUnicode, function(unicodeChar) {\n if( (typeof unicodeChar === 'undefined') || (unicodeChar === '') || (!(unicodeChar in ns.jsEscapeMap)) ) {\n // if the unicodeChar doesnt exist just return the entire match\n return unicodeChar;\n }\n else {\n // get the unicode codepoint from the actual char\n unicode = ns.jsEscapeMap[unicodeChar];\n\n //then map to shortname and locate the filename\n short = mappedUnicode[unicode];\n fname = ns.emojioneList[short].fname;\n\n // depending on the settings, we'll either add the native unicode as the alt tag, otherwise the shortname\n alt = (ns.unicodeAlt) ? ns.convert(unicode.toUpperCase()) : short;\n title = ns.imageTitleTag ? 'title=\"'+short+'\"' : '';\n\n if(ns.imageType === 'png') {\n if(ns.sprites) {\n replaceWith = '<span class=\"emojione emojione-'+unicode+'\" ' + title + '>'+alt+'</span>';\n }\n else {\n replaceWith = '<img class=\"emojione\" alt=\"'+alt+'\" ' + title + ' src=\"'+ns.imagePathPNG+fname+'.png'+ns.cacheBustParam+'\"/>';\n }\n }\n else {\n // svg\n if(ns.sprites) {\n replaceWith = '<svg class=\"emojione\"><description>'+alt+'</description><use xlink:href=\"'+ns.imagePathSVGSprites+'#emoji-'+unicode+'\"></use></svg>';\n }\n else {\n replaceWith = '<img class=\"emojione\" alt=\"'+alt+'\" ' + title + ' src=\"'+ns.imagePathSVG+fname+'.svg'+ns.cacheBustParam+'\"/>';\n }\n }\n\n return replaceWith;\n }\n });\n\n return str;\n };\n\n // this is really just unicodeToShortname() but I opted for the shorthand name to match toImage()\n ns.toShort = function(str) {\n var find = ns.getUnicodeReplacementRegEx(),\n replacementList = ns.mapUnicodeCharactersToShort();\n return ns.replaceAll(str, find,replacementList);\n };\n\n // for converting unicode code points and code pairs to their respective characters\n ns.convert = function(unicode) {\n if(unicode.indexOf(\"-\") > -1) {\n var parts = [];\n var s = unicode.split('-');\n for(var i = 0; i < s.length; i++) {\n var part = parseInt(s[i], 16);\n if (part >= 0x10000 && part <= 0x10FFFF) {\n var hi = Math.floor((part - 0x10000) / 0x400) + 0xD800;\n var lo = ((part - 0x10000) % 0x400) + 0xDC00;\n part = (String.fromCharCode(hi) + String.fromCharCode(lo));\n }\n else {\n part = String.fromCharCode(part);\n }\n parts.push(part);\n }\n return parts.join('');\n }\n else {\n var s = parseInt(unicode, 16);\n if (s >= 0x10000 && s <= 0x10FFFF) {\n var hi = Math.floor((s - 0x10000) / 0x400) + 0xD800;\n var lo = ((s - 0x10000) % 0x400) + 0xDC00;\n return (String.fromCharCode(hi) + String.fromCharCode(lo));\n }\n else {\n return String.fromCharCode(s);\n }\n }\n };\n\n ns.escapeHTML = function (string) {\n var escaped = {\n '&' : '&',\n '<' : '<',\n '>' : '>',\n '\"' : '"',\n '\\'': '''\n };\n\n return string.replace(/[&<>\"']/g, function (match) {\n return escaped[match];\n });\n };\n ns.unescapeHTML = function (string) {\n var unescaped = {\n '&' : '&',\n '&' : '&',\n '&' : '&',\n '<' : '<',\n '<' : '<',\n '<' : '<',\n '>' : '>',\n '>' : '>',\n '>' : '>',\n '"' : '\"',\n '"' : '\"',\n '"' : '\"',\n ''' : '\\'',\n ''' : '\\'',\n ''' : '\\''\n };\n\n return string.replace(/&(?:amp|#38|#x26|lt|#60|#x3C|gt|#62|#x3E|apos|#39|#x27|quot|#34|#x22);/ig, function (match) {\n return unescaped[match];\n });\n };\n\n ns.mapEmojioneList = function (addToMapStorage) {\n for (var shortname in ns.emojioneList) {\n if (!ns.emojioneList.hasOwnProperty(shortname)) { continue; }\n for (var i = 0, len = ns.emojioneList[shortname].unicode.length; i < len; i++) {\n var unicode = ns.emojioneList[shortname].unicode[i];\n addToMapStorage(unicode, shortname);\n }\n }\n };\n\n ns.mapUnicodeToShort = function() {\n if (!ns.memMapShortToUnicode) {\n ns.memMapShortToUnicode = {};\n ns.mapEmojioneList(function (unicode, shortname) {\n ns.memMapShortToUnicode[unicode] = shortname;\n });\n }\n return ns.memMapShortToUnicode;\n };\n\n ns.memoizeReplacement = function() {\n if (!ns.unicodeReplacementRegEx || !ns.memMapShortToUnicodeCharacters) {\n var unicodeList = [];\n ns.memMapShortToUnicodeCharacters = {};\n ns.mapEmojioneList(function (unicode, shortname) {\n var emojiCharacter = ns.convert(unicode);\n if(ns.emojioneList[shortname].isCanonical) {\n ns.memMapShortToUnicodeCharacters[emojiCharacter] = shortname;\n }\n unicodeList.push(emojiCharacter);\n });\n ns.unicodeReplacementRegEx = unicodeList.join('|');\n }\n };\n\n ns.mapUnicodeCharactersToShort = function() {\n ns.memoizeReplacement();\n return ns.memMapShortToUnicodeCharacters;\n };\n\n ns.getUnicodeReplacementRegEx = function() {\n ns.memoizeReplacement();\n return ns.unicodeReplacementRegEx;\n };\n\n //reverse an object\n ns.objectFlip = function (obj) {\n var key, tmp_obj = {};\n\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n tmp_obj[obj[key]] = key;\n }\n }\n\n return tmp_obj;\n };\n\n ns.escapeRegExp = function(string) {\n return string.replace(/[-[\\]{}()*+?.,;:&\\\\^$#\\s]/g, \"\\\\$&\");\n };\n\n ns.replaceAll = function(string, find, replacementList) {\n var escapedFind = ns.escapeRegExp(find);\n var search = new RegExp(\"<object[^>]*>.*?<\\/object>|<span[^>]*>.*?<\\/span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|(\"+escapedFind+\")\", \"gi\");\n\n // callback prevents replacing anything inside of these common html tags as well as between an <object></object> tag\n var replace = function(entire, m1) {\n return ((typeof m1 === 'undefined') || (m1 === '')) ? entire : replacementList[m1];\n };\n\n return string.replace(search,replace);\n };\n\n}(this.emojione = this.emojione || {}));\nif(typeof module === \"object\") module.exports = this.emojione;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _UserAddress = require('../UserAddress');\n\nvar _GroupStore = require('../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _SettingsStore = require('../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Invites multiple addresses to a room or group, handling rate limiting from the server\n */\nvar MultiInviter = function () {\n /**\n * @param {string} targetId The ID of the room or group to invite to\n */\n function MultiInviter(targetId) {\n (0, _classCallCheck3.default)(this, MultiInviter);\n\n if (targetId[0] === '+') {\n this.roomId = null;\n this.groupId = targetId;\n } else {\n this.roomId = targetId;\n this.groupId = null;\n }\n\n this.canceled = false;\n this.addrs = [];\n this.busy = false;\n this.completionStates = {}; // State of each address (invited or error)\n this.errors = {}; // { address: {errorText, errcode} }\n this.deferred = null;\n }\n\n /**\n * Invite users to this room. This may only be called once per\n * instance of the class.\n *\n * @param {array} addrs Array of addresses to invite\n * @returns {Promise} Resolved when all invitations in the queue are complete\n */\n\n\n (0, _createClass3.default)(MultiInviter, [{\n key: 'invite',\n value: function invite(addrs) {\n var _addrs;\n\n if (this.addrs.length > 0) {\n throw new Error(\"Already inviting/invited\");\n }\n (_addrs = this.addrs).push.apply(_addrs, (0, _toConsumableArray3.default)(addrs));\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this.addrs), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var addr = _step.value;\n\n if ((0, _UserAddress.getAddressType)(addr) === null) {\n this.completionStates[addr] = 'error';\n this.errors[addr] = {\n errcode: 'M_INVALID',\n errorText: (0, _languageHandler._t)('Unrecognised address')\n };\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n this.deferred = _bluebird2.default.defer();\n this._inviteMore(0);\n\n return this.deferred.promise;\n }\n\n /**\n * Stops inviting. Causes promises returned by invite() to be rejected.\n */\n\n }, {\n key: 'cancel',\n value: function cancel() {\n if (!this.busy) return;\n\n this._canceled = true;\n this.deferred.reject(new Error('canceled'));\n }\n }, {\n key: 'getCompletionState',\n value: function getCompletionState(addr) {\n return this.completionStates[addr];\n }\n }, {\n key: 'getErrorText',\n value: function getErrorText(addr) {\n return this.errors[addr] ? this.errors[addr].errorText : null;\n }\n }, {\n key: '_inviteToRoom',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(roomId, addr, ignoreProfile) {\n var addrType, profile;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n addrType = (0, _UserAddress.getAddressType)(addr);\n\n if (!(addrType === 'email')) {\n _context.next = 5;\n break;\n }\n\n return _context.abrupt('return', _MatrixClientPeg2.default.get().inviteByEmail(roomId, addr));\n\n case 5:\n if (!(addrType === 'mx-user-id')) {\n _context.next = 21;\n break;\n }\n\n if (!(!ignoreProfile && _SettingsStore2.default.getValue(\"promptBeforeInviteUnknownUsers\", this.roomId))) {\n _context.next = 18;\n break;\n }\n\n _context.prev = 7;\n _context.next = 10;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().getProfileInfo(addr));\n\n case 10:\n profile = _context.sent;\n\n if (profile) {\n _context.next = 13;\n break;\n }\n\n throw new Error(\"User has no profile\");\n\n case 13:\n _context.next = 18;\n break;\n\n case 15:\n _context.prev = 15;\n _context.t0 = _context['catch'](7);\n throw {\n errcode: \"RIOT.USER_NOT_FOUND\",\n error: \"User does not have a profile or does not exist.\"\n };\n\n case 18:\n return _context.abrupt('return', _MatrixClientPeg2.default.get().invite(roomId, addr));\n\n case 21:\n throw new Error('Unsupported address');\n\n case 22:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[7, 15]]);\n }));\n\n function _inviteToRoom(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return _inviteToRoom;\n }()\n }, {\n key: '_doInvite',\n value: function _doInvite(address, ignoreProfile) {\n var _this = this;\n\n return new _bluebird2.default(function (resolve, reject) {\n console.log('Inviting ' + address);\n\n var doInvite = void 0;\n if (_this.groupId !== null) {\n doInvite = _GroupStore2.default.inviteUserToGroup(_this.groupId, address);\n } else {\n doInvite = _this._inviteToRoom(_this.roomId, address, ignoreProfile);\n }\n\n doInvite.then(function () {\n if (_this._canceled) {\n return;\n }\n\n _this.completionStates[address] = 'invited';\n delete _this.errors[address];\n\n resolve();\n }).catch(function (err) {\n if (_this._canceled) {\n return;\n }\n\n var errorText = void 0;\n var fatal = false;\n if (err.errcode === 'M_FORBIDDEN') {\n fatal = true;\n errorText = (0, _languageHandler._t)('You do not have permission to invite people to this room.');\n } else if (err.errcode === 'M_LIMIT_EXCEEDED') {\n // we're being throttled so wait a bit & try again\n setTimeout(function () {\n _this._doInvite(address, ignoreProfile).then(resolve, reject);\n }, 5000);\n return;\n } else if (['M_NOT_FOUND', 'M_USER_NOT_FOUND', 'RIOT.USER_NOT_FOUND'].includes(err.errcode)) {\n errorText = (0, _languageHandler._t)(\"User %(user_id)s does not exist\", { user_id: address });\n } else if (err.errcode === 'M_PROFILE_UNDISCLOSED') {\n errorText = (0, _languageHandler._t)(\"User %(user_id)s may or may not exist\", { user_id: address });\n } else if (err.errcode === 'M_PROFILE_NOT_FOUND' && !ignoreProfile) {\n // Invite without the profile check\n console.warn('User ' + address + ' does not have a profile - inviting anyways automatically');\n _this._doInvite(address, true).then(resolve, reject);\n } else {\n errorText = (0, _languageHandler._t)('Unknown server error');\n }\n\n _this.completionStates[address] = 'error';\n _this.errors[address] = { errorText: errorText, errcode: err.errcode };\n\n _this.busy = !fatal;\n _this.fatal = fatal;\n\n if (fatal) {\n reject();\n } else {\n resolve();\n }\n });\n });\n }\n }, {\n key: '_inviteMore',\n value: function _inviteMore(nextIndex, ignoreProfile) {\n var _this2 = this;\n\n if (this._canceled) {\n return;\n }\n\n if (nextIndex === this.addrs.length) {\n this.busy = false;\n if ((0, _keys2.default)(this.errors).length > 0 && !this.groupId) {\n // There were problems inviting some people - see if we can invite them\n // without caring if they exist or not.\n var unknownProfileErrors = ['M_NOT_FOUND', 'M_USER_NOT_FOUND', 'M_PROFILE_UNDISCLOSED', 'M_PROFILE_NOT_FOUND', 'RIOT.USER_NOT_FOUND'];\n var unknownProfileUsers = (0, _keys2.default)(this.errors).filter(function (a) {\n return unknownProfileErrors.includes(_this2.errors[a].errcode);\n });\n\n if (unknownProfileUsers.length > 0) {\n var inviteUnknowns = function inviteUnknowns() {\n var promises = unknownProfileUsers.map(function (u) {\n return _this2._doInvite(u, true);\n });\n _bluebird2.default.all(promises).then(function () {\n return _this2.deferred.resolve(_this2.completionStates);\n });\n };\n\n if (!_SettingsStore2.default.getValue(\"promptBeforeInviteUnknownUsers\", this.roomId)) {\n inviteUnknowns();\n return;\n }\n\n var AskInviteAnywayDialog = _index2.default.getComponent(\"dialogs.AskInviteAnywayDialog\");\n console.log(\"Showing failed to invite dialog...\");\n _Modal2.default.createTrackedDialog('Failed to invite the following users to the room', '', AskInviteAnywayDialog, {\n unknownProfileUsers: unknownProfileUsers.map(function (u) {\n return { userId: u, errorText: _this2.errors[u].errorText };\n }),\n onInviteAnyways: function onInviteAnyways() {\n return inviteUnknowns();\n },\n onGiveUp: function onGiveUp() {\n // Fake all the completion states because we already warned the user\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(unknownProfileUsers), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _addr = _step2.value;\n\n _this2.completionStates[_addr] = 'invited';\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n _this2.deferred.resolve(_this2.completionStates);\n }\n });\n return;\n }\n }\n this.deferred.resolve(this.completionStates);\n return;\n }\n\n var addr = this.addrs[nextIndex];\n\n // don't try to invite it if it's an invalid address\n // (it will already be marked as an error though,\n // so no need to do so again)\n if ((0, _UserAddress.getAddressType)(addr) === null) {\n this._inviteMore(nextIndex + 1);\n return;\n }\n\n // don't re-invite (there's no way in the UI to do this, but\n // for sanity's sake)\n if (this.completionStates[addr] === 'invited') {\n this._inviteMore(nextIndex + 1);\n return;\n }\n\n this._doInvite(addr, ignoreProfile).then(function () {\n _this2._inviteMore(nextIndex + 1, ignoreProfile);\n }).catch(function () {\n return _this2.deferred.resolve(_this2.completionStates);\n });\n }\n }]);\n return MultiInviter;\n}(); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017, 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = MultiInviter;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MultiInviter.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n\nvar origin = { x: 0, y: 0 };\n\nvar noMovement = exports.noMovement = {\n displaced: [],\n amount: origin,\n isBeyondStartPosition: false\n};\n\nvar noImpact = {\n movement: noMovement,\n direction: null,\n destination: null\n};\n\nexports.default = noImpact;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getDroppableDimension = exports.scrollDroppable = exports.clip = exports.getDraggableDimension = exports.noSpacing = undefined;\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _axis = require('./axis');\n\nvar _getArea = require('./get-area');\n\nvar _getArea2 = _interopRequireDefault(_getArea);\n\nvar _spacing = require('./spacing');\n\nvar _position = require('./position');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar origin = { x: 0, y: 0 };\n\nvar noSpacing = exports.noSpacing = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\n\nvar addPosition = function addPosition(area, point) {\n var top = area.top,\n right = area.right,\n bottom = area.bottom,\n left = area.left;\n\n return (0, _getArea2.default)({\n top: top + point.y,\n left: left + point.x,\n bottom: bottom + point.y,\n right: right + point.x\n });\n};\n\nvar addSpacing = function addSpacing(area, spacing) {\n var top = area.top,\n right = area.right,\n bottom = area.bottom,\n left = area.left;\n\n return (0, _getArea2.default)({\n top: top - spacing.top,\n left: left - spacing.left,\n\n bottom: bottom + spacing.bottom,\n right: right + spacing.right\n });\n};\n\nvar getDraggableDimension = exports.getDraggableDimension = function getDraggableDimension(_ref) {\n var descriptor = _ref.descriptor,\n client = _ref.client,\n _ref$margin = _ref.margin,\n margin = _ref$margin === undefined ? noSpacing : _ref$margin,\n _ref$windowScroll = _ref.windowScroll,\n windowScroll = _ref$windowScroll === undefined ? origin : _ref$windowScroll;\n\n var withScroll = addPosition(client, windowScroll);\n\n var dimension = {\n descriptor: descriptor,\n placeholder: {\n margin: margin,\n withoutMargin: {\n width: client.width,\n height: client.height\n }\n },\n\n client: {\n withoutMargin: (0, _getArea2.default)(client),\n withMargin: (0, _getArea2.default)(addSpacing(client, margin))\n },\n\n page: {\n withoutMargin: (0, _getArea2.default)(withScroll),\n withMargin: (0, _getArea2.default)(addSpacing(withScroll, margin))\n }\n };\n\n return dimension;\n};\n\nvar clip = exports.clip = function clip(frame, subject) {\n var result = (0, _getArea2.default)({\n top: Math.max(subject.top, frame.top),\n right: Math.min(subject.right, frame.right),\n bottom: Math.min(subject.bottom, frame.bottom),\n left: Math.max(subject.left, frame.left)\n });\n\n if (result.width <= 0 || result.height <= 0) {\n return null;\n }\n\n return result;\n};\n\nvar scrollDroppable = exports.scrollDroppable = function scrollDroppable(droppable, newScroll) {\n var existing = droppable.viewport;\n\n var scrollDiff = (0, _position.subtract)(newScroll, existing.frameScroll.initial);\n\n var scrollDisplacement = (0, _position.negate)(scrollDiff);\n var displacedSubject = (0, _spacing.offset)(existing.subject, scrollDisplacement);\n\n var viewport = {\n frame: existing.frame,\n subject: existing.subject,\n\n frameScroll: {\n initial: existing.frameScroll.initial,\n current: newScroll,\n diff: {\n value: scrollDiff,\n displacement: scrollDisplacement\n }\n },\n clipped: clip(existing.frame, displacedSubject)\n };\n\n return (0, _extends3.default)({}, droppable, {\n viewport: viewport\n });\n};\n\nvar getDroppableDimension = exports.getDroppableDimension = function getDroppableDimension(_ref2) {\n var descriptor = _ref2.descriptor,\n client = _ref2.client,\n frameClient = _ref2.frameClient,\n _ref2$frameScroll = _ref2.frameScroll,\n frameScroll = _ref2$frameScroll === undefined ? origin : _ref2$frameScroll,\n _ref2$direction = _ref2.direction,\n direction = _ref2$direction === undefined ? 'vertical' : _ref2$direction,\n _ref2$margin = _ref2.margin,\n margin = _ref2$margin === undefined ? noSpacing : _ref2$margin,\n _ref2$padding = _ref2.padding,\n padding = _ref2$padding === undefined ? noSpacing : _ref2$padding,\n _ref2$windowScroll = _ref2.windowScroll,\n windowScroll = _ref2$windowScroll === undefined ? origin : _ref2$windowScroll,\n _ref2$isEnabled = _ref2.isEnabled,\n isEnabled = _ref2$isEnabled === undefined ? true : _ref2$isEnabled;\n\n var withMargin = addSpacing(client, margin);\n var withWindowScroll = addPosition(client, windowScroll);\n\n\n var subject = addSpacing(withWindowScroll, margin);\n\n var frame = function () {\n if (!frameClient) {\n return subject;\n }\n return addPosition(frameClient, windowScroll);\n }();\n\n var viewport = {\n frame: frame,\n frameScroll: {\n initial: frameScroll,\n\n current: frameScroll,\n diff: {\n value: origin,\n displacement: origin\n }\n },\n subject: subject,\n clipped: clip(frame, subject)\n };\n\n var dimension = {\n descriptor: descriptor,\n isEnabled: isEnabled,\n axis: direction === 'vertical' ? _axis.vertical : _axis.horizontal,\n client: {\n withoutMargin: (0, _getArea2.default)(client),\n withMargin: (0, _getArea2.default)(withMargin),\n withMarginAndPadding: (0, _getArea2.default)(addSpacing(withMargin, padding))\n },\n page: {\n withoutMargin: (0, _getArea2.default)(withWindowScroll),\n withMargin: subject,\n withMarginAndPadding: (0, _getArea2.default)(addSpacing(withWindowScroll, (0, _spacing.add)(margin, padding)))\n },\n viewport: viewport\n };\n\n return dimension;\n};","\n// turn {x: {val: 1, stiffness: 1, damping: 2}, y: 2} generated by\n// `{x: spring(1, {stiffness: 1, damping: 2}), y: 2}` into {x: 1, y: 2}\n\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = stripStyle;\n\nfunction stripStyle(style) {\n var ret = {};\n for (var key in style) {\n if (!Object.prototype.hasOwnProperty.call(style, key)) {\n continue;\n }\n ret[key] = typeof style[key] === 'number' ? style[key] : style[key].val;\n }\n return ret;\n}\n\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (event) {\n event.preventDefault();\n event.stopPropagation();\n};","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","'use strict';\n\nvar _shouldHideEvent = require('./shouldHideEvent');\n\nvar _shouldHideEvent2 = _interopRequireDefault(_shouldHideEvent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MatrixClientPeg = require('./MatrixClientPeg');\n\nvar sdk = require('./index');\n\nmodule.exports = {\n /**\n * Returns true iff this event arriving in a room should affect the room's\n * count of unread messages\n */\n eventTriggersUnreadCount: function eventTriggersUnreadCount(ev) {\n if (ev.sender && ev.sender.userId == MatrixClientPeg.get().credentials.userId) {\n return false;\n } else if (ev.getType() == 'm.room.member') {\n return false;\n } else if (ev.getType() == 'm.room.third_party_invite') {\n return false;\n } else if (ev.getType() == 'm.call.answer' || ev.getType() == 'm.call.hangup') {\n return false;\n } else if (ev.getType == 'm.room.message' && ev.getContent().msgtype == 'm.notify') {\n return false;\n }\n var EventTile = sdk.getComponent('rooms.EventTile');\n return EventTile.haveTileForEvent(ev);\n },\n\n doesRoomHaveUnreadMessages: function doesRoomHaveUnreadMessages(room) {\n var myUserId = MatrixClientPeg.get().credentials.userId;\n\n // get the most recent read receipt sent by our account.\n // N.B. this is NOT a read marker (RM, aka \"read up to marker\"),\n // despite the name of the method :((\n var readUpToId = room.getEventReadUpTo(myUserId);\n\n // as we don't send RRs for our own messages, make sure we special case that\n // if *we* sent the last message into the room, we consider it not unread!\n // Should fix: https://github.com/vector-im/riot-web/issues/3263\n // https://github.com/vector-im/riot-web/issues/2427\n // ...and possibly some of the others at\n // https://github.com/vector-im/riot-web/issues/3363\n if (room.timeline.length && room.timeline[room.timeline.length - 1].sender && room.timeline[room.timeline.length - 1].sender.userId === myUserId) {\n return false;\n }\n\n // this just looks at whatever history we have, which if we've only just started\n // up probably won't be very much, so if the last couple of events are ones that\n // don't count, we don't know if there are any events that do count between where\n // we have and the read receipt. We could fetch more history to try & find out,\n // but currently we just guess.\n\n // Loop through messages, starting with the most recent...\n for (var i = room.timeline.length - 1; i >= 0; --i) {\n var ev = room.timeline[i];\n\n if (ev.getId() == readUpToId) {\n // If we've read up to this event, there's nothing more recents\n // that counts and we can stop looking because the user's read\n // this and everything before.\n return false;\n } else if (!(0, _shouldHideEvent2.default)(ev) && this.eventTriggersUnreadCount(ev)) {\n // We've found a message that counts before we hit\n // the read marker, so this room is definitely unread.\n return true;\n }\n }\n // If we got here, we didn't find a message that counted but didn't\n // find the read marker either, so we guess and say that the room\n // is unread on the theory that false positives are better than\n // false negatives here.\n return true;\n }\n};\n//# sourceMappingURL=Unread.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.inherits = inherits;\nfunction inherits(parent, child) {\n\tvar props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\tvar extended = Object.create(parent.prototype);\n\tfor (var p in props) {\n\t\textended[p] = props[p];\n\t}\n\textended.constructor = child;\n\tchild.prototype = extended;\n\treturn child;\n}","\"use strict\";\n\n/**\r\n * filesize\r\n *\r\n * @copyright 2017 Jason Mulligan <jason.mulligan@avoidwork.com>\r\n * @license BSD-3-Clause\r\n * @version 3.5.6\r\n */\n(function (global) {\n\tvar b = /^(b|B)$/,\n\t symbol = {\n\t\tiec: {\n\t\t\tbits: [\"b\", \"Kib\", \"Mib\", \"Gib\", \"Tib\", \"Pib\", \"Eib\", \"Zib\", \"Yib\"],\n\t\t\tbytes: [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"]\n\t\t},\n\t\tjedec: {\n\t\t\tbits: [\"b\", \"Kb\", \"Mb\", \"Gb\", \"Tb\", \"Pb\", \"Eb\", \"Zb\", \"Yb\"],\n\t\t\tbytes: [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"]\n\t\t}\n\t},\n\t fullform = {\n\t\tiec: [\"\", \"kibi\", \"mebi\", \"gibi\", \"tebi\", \"pebi\", \"exbi\", \"zebi\", \"yobi\"],\n\t\tjedec: [\"\", \"kilo\", \"mega\", \"giga\", \"tera\", \"peta\", \"exa\", \"zetta\", \"yotta\"]\n\t};\n\n\t/**\r\n * filesize\r\n *\r\n * @method filesize\r\n * @param {Mixed} arg String, Int or Float to transform\r\n * @param {Object} descriptor [Optional] Flags\r\n * @return {String} Readable file size String\r\n */\n\tfunction filesize(arg) {\n\t\tvar descriptor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tvar result = [],\n\t\t val = 0,\n\t\t e = void 0,\n\t\t base = void 0,\n\t\t bits = void 0,\n\t\t ceil = void 0,\n\t\t full = void 0,\n\t\t fullforms = void 0,\n\t\t neg = void 0,\n\t\t num = void 0,\n\t\t output = void 0,\n\t\t round = void 0,\n\t\t unix = void 0,\n\t\t spacer = void 0,\n\t\t standard = void 0,\n\t\t symbols = void 0;\n\n\t\tif (isNaN(arg)) {\n\t\t\tthrow new Error(\"Invalid arguments\");\n\t\t}\n\n\t\tbits = descriptor.bits === true;\n\t\tunix = descriptor.unix === true;\n\t\tbase = descriptor.base || 2;\n\t\tround = descriptor.round !== undefined ? descriptor.round : unix ? 1 : 2;\n\t\tspacer = descriptor.spacer !== undefined ? descriptor.spacer : unix ? \"\" : \" \";\n\t\tsymbols = descriptor.symbols || descriptor.suffixes || {};\n\t\tstandard = base === 2 ? descriptor.standard || \"jedec\" : \"jedec\";\n\t\toutput = descriptor.output || \"string\";\n\t\tfull = descriptor.fullform === true;\n\t\tfullforms = descriptor.fullforms instanceof Array ? descriptor.fullforms : [];\n\t\te = descriptor.exponent !== undefined ? descriptor.exponent : -1;\n\t\tnum = Number(arg);\n\t\tneg = num < 0;\n\t\tceil = base > 2 ? 1000 : 1024;\n\n\t\t// Flipping a negative number to determine the size\n\t\tif (neg) {\n\t\t\tnum = -num;\n\t\t}\n\n\t\t// Determining the exponent\n\t\tif (e === -1 || isNaN(e)) {\n\t\t\te = Math.floor(Math.log(num) / Math.log(ceil));\n\n\t\t\tif (e < 0) {\n\t\t\t\te = 0;\n\t\t\t}\n\t\t}\n\n\t\t// Exceeding supported length, time to reduce & multiply\n\t\tif (e > 8) {\n\t\t\te = 8;\n\t\t}\n\n\t\t// Zero is now a special case because bytes divide by 1\n\t\tif (num === 0) {\n\t\t\tresult[0] = 0;\n\t\t\tresult[1] = unix ? \"\" : symbol[standard][bits ? \"bits\" : \"bytes\"][e];\n\t\t} else {\n\t\t\tval = num / (base === 2 ? Math.pow(2, e * 10) : Math.pow(1000, e));\n\n\t\t\tif (bits) {\n\t\t\t\tval = val * 8;\n\n\t\t\t\tif (val >= ceil && e < 8) {\n\t\t\t\t\tval = val / ceil;\n\t\t\t\t\te++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresult[0] = Number(val.toFixed(e > 0 ? round : 0));\n\t\t\tresult[1] = base === 10 && e === 1 ? bits ? \"kb\" : \"kB\" : symbol[standard][bits ? \"bits\" : \"bytes\"][e];\n\n\t\t\tif (unix) {\n\t\t\t\tresult[1] = standard === \"jedec\" ? result[1].charAt(0) : e > 0 ? result[1].replace(/B$/, \"\") : result[1];\n\n\t\t\t\tif (b.test(result[1])) {\n\t\t\t\t\tresult[0] = Math.floor(result[0]);\n\t\t\t\t\tresult[1] = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Decorating a 'diff'\n\t\tif (neg) {\n\t\t\tresult[0] = -result[0];\n\t\t}\n\n\t\t// Applying custom symbol\n\t\tresult[1] = symbols[result[1]] || result[1];\n\n\t\t// Returning Array, Object, or String (default)\n\t\tif (output === \"array\") {\n\t\t\treturn result;\n\t\t}\n\n\t\tif (output === \"exponent\") {\n\t\t\treturn e;\n\t\t}\n\n\t\tif (output === \"object\") {\n\t\t\treturn { value: result[0], suffix: result[1], symbol: result[1] };\n\t\t}\n\n\t\tif (full) {\n\t\t\tresult[1] = fullforms[e] ? fullforms[e] : fullform[standard][e] + (bits ? \"bit\" : \"byte\") + (result[0] === 1 ? \"\" : \"s\");\n\t\t}\n\n\t\treturn result.join(spacer);\n\t}\n\n\t// Partial application for functional programming\n\tfilesize.partial = function (opt) {\n\t\treturn function (arg) {\n\t\t\treturn filesize(arg, opt);\n\t\t};\n\t};\n\n\t// CommonJS, AMD, script tag\n\tif (typeof exports !== \"undefined\") {\n\t\tmodule.exports = filesize;\n\t} else if (typeof define === \"function\" && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn filesize;\n\t\t});\n\t} else {\n\t\tglobal.filesize = filesize;\n\t}\n})(typeof window !== \"undefined\" ? window : global);\n","\"use strict\";\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar EMAIL_ADDRESS_REGEX = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i;\n\nmodule.exports = {\n looksValid: function looksValid(email) {\n return EMAIL_ADDRESS_REGEX.test(email);\n }\n};\n//# sourceMappingURL=email.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _filesize = require('filesize');\n\nvar _filesize2 = _interopRequireDefault(_filesize);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _DecryptFile = require('../../../utils/DecryptFile');\n\nvar _Tinter = require('../../../Tinter');\n\nvar _Tinter2 = _interopRequireDefault(_Tinter);\n\nvar _browserRequest = require('browser-request');\n\nvar _browserRequest2 = _interopRequireDefault(_browserRequest);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// A cached tinted copy of \"img/download.svg\"\nvar tintedDownloadImageURL = void 0;\n// Track a list of mounted MFileBody instances so that we can update\n// the \"img/download.svg\" when the tint changes.\nvar nextMountId = 0;\nvar mounts = {};\n\n/**\n * Updates the tinted copy of \"img/download.svg\" when the tint changes.\n */\nfunction updateTintedDownloadImage() {\n // Download the svg as an XML document.\n // We could cache the XML response here, but since the tint rarely changes\n // it's probably not worth it.\n // Also note that we can't use fetch here because fetch doesn't support\n // file URLs, which the download image will be if we're running from\n // the filesystem (like in an Electron wrapper).\n (0, _browserRequest2.default)({ uri: \"img/download.svg\" }, function (err, response, body) {\n if (err) return;\n\n var svg = new DOMParser().parseFromString(body, \"image/svg+xml\");\n // Apply the fixups to the XML.\n var fixups = _Tinter2.default.calcSvgFixups([{ contentDocument: svg }]);\n _Tinter2.default.applySvgFixups(fixups);\n // Encoded the fixed up SVG as a data URL.\n var svgString = new XMLSerializer().serializeToString(svg);\n tintedDownloadImageURL = \"data:image/svg+xml;base64,\" + window.btoa(svgString);\n // Notify each mounted MFileBody that the URL has changed.\n (0, _keys2.default)(mounts).forEach(function (id) {\n mounts[id].tint();\n });\n });\n}\n\n_Tinter2.default.registerTintable(updateTintedDownloadImage);\n\n// User supplied content can contain scripts, we have to be careful that\n// we don't accidentally run those script within the same origin as the\n// client. Otherwise those scripts written by remote users can read\n// the access token and end-to-end keys that are in local storage.\n//\n// For attachments downloaded directly from the homeserver we can use\n// Content-Security-Policy headers to disable script execution.\n//\n// But attachments with end-to-end encryption are more difficult to handle.\n// We need to decrypt the attachment on the client and then display it.\n// To display the attachment we need to turn the decrypted bytes into a URL.\n//\n// There are two ways to turn bytes into URLs, data URL and blob URLs.\n// Data URLs aren't suitable for downloading a file because Chrome has a\n// 2MB limit on the size of URLs that can be viewed in the browser or\n// downloaded. This limit does not seem to apply when the url is used as\n// the source attribute of an image tag.\n//\n// Blob URLs are generated using window.URL.createObjectURL and unfortunately\n// for our purposes they inherit the origin of the page that created them.\n// This means that any scripts that run when the URL is viewed will be able\n// to access local storage.\n//\n// The easiest solution is to host the code that generates the blob URL on\n// a different domain to the client.\n// Another possibility is to generate the blob URL within a sandboxed iframe.\n// The downside of using a second domain is that it complicates hosting,\n// the downside of using a sandboxed iframe is that the browers are overly\n// restrictive in what you are allowed to do with the generated URL.\n//\n// For now given how unusable the blobs generated in sandboxed iframes are we\n// default to using a renderer hosted on \"usercontent.riot.im\". This is\n// overridable so that people running their own version of the client can\n// choose a different renderer.\n//\n// To that end the current version of the blob generation is the following\n// html:\n//\n// <html><head><script>\n// var params = window.location.search.substring(1).split('&');\n// var lockOrigin;\n// for (var i = 0; i < params.length; ++i) {\n// var parts = params[i].split('=');\n// if (parts[0] == 'origin') lockOrigin = decodeURIComponent(parts[1]);\n// }\n// window.onmessage=function(e){\n// if (lockOrigin === undefined || e.origin === lockOrigin) eval(\"(\"+e.data.code+\")\")(e);\n// }\n// </script></head><body></body></html>\n//\n// This waits to receive a message event sent using the window.postMessage API.\n// When it receives the event it evals a javascript function in data.code and\n// runs the function passing the event as an argument. This version adds\n// support for a query parameter controlling the origin from which messages\n// will be processed as an extra layer of security (note that the default URL\n// is still 'v1' since it is backwards compatible).\n//\n// In particular it means that the rendering function can be written as a\n// ordinary javascript function which then is turned into a string using\n// toString().\n//\nvar DEFAULT_CROSS_ORIGIN_RENDERER = \"https://usercontent.riot.im/v1.html\";\n\n/**\n * Render the attachment inside the iframe.\n * We can't use imported libraries here so this has to be vanilla JS.\n */\nfunction remoteRender(event) {\n var data = event.data;\n\n var img = document.createElement(\"img\");\n img.id = \"img\";\n img.src = data.imgSrc;\n\n var a = document.createElement(\"a\");\n a.id = \"a\";\n a.rel = data.rel;\n a.target = data.target;\n a.download = data.download;\n a.style = data.style;\n a.href = window.URL.createObjectURL(data.blob);\n a.appendChild(img);\n a.appendChild(document.createTextNode(data.textContent));\n\n var body = document.body;\n // Don't display scrollbars if the link takes more than one line\n // to display.\n body.style = \"margin: 0px; overflow: hidden\";\n body.appendChild(a);\n}\n\n/**\n * Update the tint inside the iframe.\n * We can't use imported libraries here so this has to be vanilla JS.\n */\nfunction remoteSetTint(event) {\n var data = event.data;\n\n var img = document.getElementById(\"img\");\n img.src = data.imgSrc;\n img.style = data.imgStyle;\n\n var a = document.getElementById(\"a\");\n a.style = data.style;\n}\n\n/**\n * Get the current CSS style for a DOMElement.\n * @param {HTMLElement} element The element to get the current style of.\n * @return {string} The CSS style encoded as a string.\n */\nfunction computedStyle(element) {\n if (!element) {\n return \"\";\n }\n var style = window.getComputedStyle(element, null);\n var cssText = style.cssText;\n if (cssText == \"\") {\n // Firefox doesn't implement \".cssText\" for computed styles.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=137687\n for (var i = 0; i < style.length; i++) {\n cssText += style[i] + \":\";\n cssText += style.getPropertyValue(style[i]) + \";\";\n }\n }\n return cssText;\n}\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MFileBody',\n\n getInitialState: function getInitialState() {\n return {\n decryptedBlob: this.props.decryptedBlob ? this.props.decryptedBlob : null\n };\n },\n\n contextTypes: {\n appConfig: _propTypes2.default.object\n },\n\n /**\n * Extracts a human readable label for the file attachment to use as\n * link text.\n *\n * @params {Object} content The \"content\" key of the matrix event.\n * @return {string} the human readable link text for the attachment.\n */\n presentableTextForFile: function presentableTextForFile(content) {\n var linkText = (0, _languageHandler._t)(\"Attachment\");\n if (content.body && content.body.length > 0) {\n // The content body should be the name of the file including a\n // file extension.\n linkText = content.body;\n }\n\n if (content.info && content.info.size) {\n // If we know the size of the file then add it as human readable\n // string to the end of the link text so that the user knows how\n // big a file they are downloading.\n // The content.info also contains a MIME-type but we don't display\n // it since it is \"ugly\", users generally aren't aware what it\n // means and the type of the attachment can usually be inferrered\n // from the file extension.\n linkText += ' (' + (0, _filesize2.default)(content.info.size) + ')';\n }\n return linkText;\n },\n\n _getContentUrl: function _getContentUrl() {\n var content = this.props.mxEvent.getContent();\n return _MatrixClientPeg2.default.get().mxcUrlToHttp(content.url);\n },\n\n componentDidMount: function componentDidMount() {\n // Add this to the list of mounted components to receive notifications\n // when the tint changes.\n this.id = nextMountId++;\n mounts[this.id] = this;\n this.tint();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // Remove this from the list of mounted components\n delete mounts[this.id];\n },\n\n tint: function tint() {\n // Update our tinted copy of \"img/download.svg\"\n if (this.refs.downloadImage) {\n this.refs.downloadImage.src = tintedDownloadImageURL;\n }\n if (this.refs.iframe) {\n // If the attachment is encrypted then the download image\n // will be inside the iframe so we wont be able to update\n // it directly.\n this.refs.iframe.contentWindow.postMessage({\n code: remoteSetTint.toString(),\n imgSrc: tintedDownloadImageURL,\n style: computedStyle(this.refs.dummyLink)\n }, \"*\");\n }\n },\n\n render: function render() {\n var _this = this;\n\n var content = this.props.mxEvent.getContent();\n var text = this.presentableTextForFile(content);\n var isEncrypted = content.file !== undefined;\n var fileName = content.body && content.body.length > 0 ? content.body : (0, _languageHandler._t)(\"Attachment\");\n var contentUrl = this._getContentUrl();\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n if (isEncrypted) {\n if (this.state.decryptedBlob === null) {\n // Need to decrypt the attachment\n // Wait for the user to click on the link before downloading\n // and decrypting the attachment.\n var decrypting = false;\n var decrypt = function decrypt() {\n if (decrypting) {\n return false;\n }\n decrypting = true;\n (0, _DecryptFile.decryptFile)(content.file).then(function (blob) {\n _this.setState({\n decryptedBlob: blob\n });\n }).catch(function (err) {\n console.warn(\"Unable to decrypt attachment: \", err);\n _Modal2.default.createTrackedDialog('Error decrypting attachment', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Error decrypting attachment\")\n });\n }).finally(function () {\n decrypting = false;\n return;\n });\n };\n\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MFileBody', ref: 'body' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MFileBody_download' },\n _react2.default.createElement(\n 'a',\n { href: 'javascript:void(0)', onClick: decrypt },\n (0, _languageHandler._t)(\"Decrypt %(text)s\", { text: text })\n )\n )\n );\n }\n\n // When the iframe loads we tell it to render a download link\n var onIframeLoad = function onIframeLoad(ev) {\n ev.target.contentWindow.postMessage({\n code: remoteRender.toString(),\n imgSrc: tintedDownloadImageURL,\n style: computedStyle(_this.refs.dummyLink),\n blob: _this.state.decryptedBlob,\n // Set a download attribute for encrypted files so that the file\n // will have the correct name when the user tries to download it.\n // We can't provide a Content-Disposition header like we would for HTTP.\n download: fileName,\n rel: \"noopener\",\n target: \"_blank\",\n textContent: (0, _languageHandler._t)(\"Download %(text)s\", { text: text })\n }, \"*\");\n };\n\n // If the attachment is encryped then put the link inside an iframe.\n var renderer_url = DEFAULT_CROSS_ORIGIN_RENDERER;\n if (this.context.appConfig && this.context.appConfig.cross_origin_renderer_url) {\n renderer_url = this.context.appConfig.cross_origin_renderer_url;\n }\n renderer_url += \"?origin=\" + encodeURIComponent(window.location.origin);\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MFileBody' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MFileBody_download' },\n _react2.default.createElement(\n 'div',\n { style: { display: \"none\" } },\n _react2.default.createElement('a', { ref: 'dummyLink' })\n ),\n _react2.default.createElement('iframe', { src: renderer_url, onLoad: onIframeLoad, ref: 'iframe' })\n )\n );\n } else if (contentUrl) {\n // If the attachment is not encrypted then we check whether we\n // are being displayed in the room timeline or in a list of\n // files in the right hand side of the screen.\n if (this.props.tileShape === \"file_grid\") {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MFileBody' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MFileBody_download' },\n _react2.default.createElement(\n 'a',\n { className: 'mx_MFileBody_downloadLink', href: contentUrl, download: fileName, target: '_blank' },\n fileName\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MImageBody_size' },\n content.info && content.info.size ? (0, _filesize2.default)(content.info.size) : \"\"\n )\n )\n );\n } else {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MFileBody' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MFileBody_download' },\n _react2.default.createElement(\n 'a',\n { href: contentUrl, download: fileName, target: '_blank', rel: 'noopener' },\n _react2.default.createElement('img', { src: tintedDownloadImageURL, width: '12', height: '14', ref: 'downloadImage' }),\n (0, _languageHandler._t)(\"Download %(text)s\", { text: text })\n )\n )\n );\n }\n } else {\n var extra = text ? ': ' + text : '';\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MFileBody' },\n (0, _languageHandler._t)(\"Invalid file%(extra)s\", { extra: extra })\n );\n }\n }\n});\n//# sourceMappingURL=MFileBody.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.decryptFile = decryptFile;\n\nvar _browserEncryptAttachment = require('browser-encrypt-attachment');\n\nvar _browserEncryptAttachment2 = _interopRequireDefault(_browserEncryptAttachment);\n\nrequire('isomorphic-fetch');\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// WARNING: We have to be very careful about what mime-types we allow into blobs,\n// as for performance reasons these are now rendered via URL.createObjectURL()\n// rather than by converting into data: URIs.\n//\n// This means that the content is rendered using the origin of the script which\n// called createObjectURL(), and so if the content contains any scripting then it\n// will pose a XSS vulnerability when the browser renders it. This is particularly\n// bad if the user right-clicks the URI and pastes it into a new window or tab,\n// as the blob will then execute with access to Riot's full JS environment(!)\n//\n// See https://github.com/matrix-org/matrix-react-sdk/pull/1820#issuecomment-385210647\n// for details.\n//\n// We mitigate this by only allowing mime-types into blobs which we know don't\n// contain any scripting, and instantiate all others as application/octet-stream\n// regardless of what mime-type the event claimed. Even if the payload itself\n// is some malicious HTML, the fact we instantiate it with a media mimetype or\n// application/octet-stream means the browser doesn't try to render it as such.\n//\n// One interesting edge case is image/svg+xml, which empirically *is* rendered\n// correctly if the blob is set to the src attribute of an img tag (for thumbnails)\n// *even if the mimetype is application/octet-stream*. However, empirically JS\n// in the SVG isn't executed in this scenario, so we seem to be okay.\n//\n// Tested on Chrome 65 and Firefox 60\n//\n// The list below is taken mainly from\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Supported_media_formats\n// N.B. Matrix doesn't currently specify which mimetypes are valid in given\n// events, so we pick the ones which HTML5 browsers should be able to display\n//\n// For the record, mime-types which must NEVER enter this list below include:\n// text/html, text/xhtml, image/svg, image/svg+xml, image/pdf, and similar.\n\n// Grab the client so that we can turn mxc:// URLs into https:// URLS.\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// Pull in the encryption lib so that we can decrypt attachments.\nvar ALLOWED_BLOB_MIMETYPES = {\n 'image/jpeg': true,\n 'image/gif': true,\n 'image/png': true,\n\n 'video/mp4': true,\n 'video/webm': true,\n 'video/ogg': true,\n\n 'audio/mp4': true,\n 'audio/webm': true,\n 'audio/aac': true,\n 'audio/mpeg': true,\n 'audio/ogg': true,\n 'audio/wave': true,\n 'audio/wav': true,\n 'audio/x-wav': true,\n 'audio/x-pn-wav': true,\n 'audio/flac': true,\n 'audio/x-flac': true\n};\n\n/**\n * Decrypt a file attached to a matrix event.\n * @param file {Object} The json taken from the matrix event.\n * This passed to [link]{@link https://github.com/matrix-org/browser-encrypt-attachments}\n * as the encryption info object, so will also have the those keys in addition to\n * the keys below.\n * @param file.url {string} An mxc:// URL for the encrypted file.\n * @param file.mimetype {string} The MIME-type of the plaintext file.\n */\n\n// Pull in a fetch polyfill so we can download encrypted attachments.\nfunction decryptFile(file) {\n var url = _MatrixClientPeg2.default.get().mxcUrlToHttp(file.url);\n // Download the encrypted file as an array buffer.\n return _bluebird2.default.resolve(fetch(url)).then(function (response) {\n return response.arrayBuffer();\n }).then(function (responseData) {\n // Decrypt the array buffer using the information taken from\n // the event content.\n return _browserEncryptAttachment2.default.decryptAttachment(responseData, file);\n }).then(function (dataArray) {\n // Turn the array into a Blob and give it the correct MIME-type.\n\n // IMPORTANT: we must not allow scriptable mime-types into Blobs otherwise\n // they introduce XSS attacks if the Blob URI is viewed directly in the\n // browser (e.g. by copying the URI into a new tab or window.)\n // See warning at top of file.\n var mimetype = file.mimetype ? file.mimetype.split(\";\")[0].trim() : '';\n if (!ALLOWED_BLOB_MIMETYPES[mimetype]) {\n mimetype = 'application/octet-stream';\n }\n\n var blob = new Blob([dataArray], { type: mimetype });\n return blob;\n });\n}\n//# sourceMappingURL=DecryptFile.js.map","module.exports = require('./lib/linkify-element').default;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n // Encodes a dictionary of {\n // \"notify\": true/false,\n // \"sound\": string or undefined,\n // \"highlight: true/false,\n // }\n // to a list of push actions.\n encodeActions: function encodeActions(action) {\n var notify = action.notify;\n var sound = action.sound;\n var highlight = action.highlight;\n if (notify) {\n var actions = [\"notify\"];\n if (sound) {\n actions.push({ \"set_tweak\": \"sound\", \"value\": sound });\n }\n if (highlight) {\n actions.push({ \"set_tweak\": \"highlight\" });\n } else {\n actions.push({ \"set_tweak\": \"highlight\", \"value\": false });\n }\n return actions;\n } else {\n return [\"dont_notify\"];\n }\n },\n\n // Decode a list of actions to a dictionary of {\n // \"notify\": true/false,\n // \"sound\": string or undefined,\n // \"highlight: true/false,\n // }\n // If the actions couldn't be decoded then returns null.\n decodeActions: function decodeActions(actions) {\n var notify = false;\n var sound = null;\n var highlight = false;\n\n for (var i = 0; i < actions.length; ++i) {\n var action = actions[i];\n if (action === \"notify\") {\n notify = true;\n } else if (action === \"dont_notify\") {\n notify = false;\n } else if ((typeof action === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(action)) === 'object') {\n if (action.set_tweak === \"sound\") {\n sound = action.value;\n } else if (action.set_tweak === \"highlight\") {\n highlight = action.value;\n } else {\n // We don't understand this kind of tweak, so give up.\n return null;\n }\n } else {\n // We don't understand this kind of action, so give up.\n return null;\n }\n }\n\n if (highlight === undefined) {\n // If a highlight tweak is missing a value then it defaults to true.\n highlight = true;\n }\n\n var result = { notify: notify, highlight: highlight };\n if (sound !== null) {\n result.sound = sound;\n }\n return result;\n }\n};\n//# sourceMappingURL=NotificationUtils.js.map","import { Block, Mark, Node, Value } from 'slate';\nimport { Set } from 'immutable';\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Deserialize a plain text `string` to a Slate value.\n *\n * @param {String} string\n * @param {Object} options\n * @property {Boolean} toJSON\n * @property {String|Object|Block} defaultBlock\n * @property {Array|Set} defaultMarks\n * @return {Value}\n */\n\nfunction deserialize(string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$defaultBlock = options.defaultBlock,\n defaultBlock = _options$defaultBlock === undefined ? 'line' : _options$defaultBlock,\n _options$defaultMarks = options.defaultMarks,\n defaultMarks = _options$defaultMarks === undefined ? [] : _options$defaultMarks,\n _options$delimiter = options.delimiter,\n delimiter = _options$delimiter === undefined ? '\\n' : _options$delimiter,\n _options$toJSON = options.toJSON,\n toJSON = _options$toJSON === undefined ? false : _options$toJSON;\n\n\n if (Set.isSet(defaultMarks)) {\n defaultMarks = defaultMarks.toArray();\n }\n\n defaultBlock = Node.createProperties(defaultBlock);\n defaultMarks = defaultMarks.map(Mark.createProperties);\n\n var json = {\n object: 'value',\n document: {\n object: 'document',\n data: {},\n nodes: string.split(delimiter).map(function (line) {\n return _extends({}, defaultBlock, {\n object: 'block',\n data: {},\n nodes: [{\n object: 'text',\n leaves: [{\n object: 'leaf',\n text: line,\n marks: defaultMarks\n }]\n }]\n });\n })\n }\n };\n\n var ret = toJSON ? json : Value.fromJSON(json);\n return ret;\n}\n\n/**\n * Serialize a Slate `value` to a plain text string.\n *\n * @param {Value} value\n * @return {String}\n */\n\nfunction serialize(value) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return serializeNode(value.document, options);\n}\n\n/**\n * Serialize a `node` to plain text.\n *\n * @param {Node} node\n * @return {String}\n */\n\nfunction serializeNode(node) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$delimiter2 = options.delimiter,\n delimiter = _options$delimiter2 === undefined ? '\\n' : _options$delimiter2;\n\n\n if (node.object == 'document' || node.object == 'block' && Block.isBlockList(node.nodes)) {\n return node.nodes.map(serializeNode).join(delimiter);\n } else {\n return node.text;\n }\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar index = {\n deserialize: deserialize,\n serialize: serialize\n};\n\nexport default index;\n//# sourceMappingURL=slate-plain-serializer.es.js.map\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n/**\n * Constants.\n */\n\nvar IS_MAC = typeof window != 'undefined' && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\n\nvar MODIFIERS = {\n alt: 'altKey',\n control: 'ctrlKey',\n meta: 'metaKey',\n shift: 'shiftKey'\n};\n\nvar ALIASES = {\n add: '+',\n break: 'pause',\n cmd: 'meta',\n command: 'meta',\n ctl: 'control',\n ctrl: 'control',\n del: 'delete',\n down: 'arrowdown',\n esc: 'escape',\n ins: 'insert',\n left: 'arrowleft',\n mod: IS_MAC ? 'meta' : 'control',\n opt: 'alt',\n option: 'alt',\n return: 'enter',\n right: 'arrowright',\n space: ' ',\n spacebar: ' ',\n up: 'arrowup',\n win: 'meta',\n windows: 'meta'\n};\n\nvar CODES = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n control: 17,\n alt: 18,\n pause: 19,\n capslock: 20,\n escape: 27,\n ' ': 32,\n pageup: 33,\n pagedown: 34,\n end: 35,\n home: 36,\n arrowleft: 37,\n arrowup: 38,\n arrowright: 39,\n arrowdown: 40,\n insert: 45,\n delete: 46,\n meta: 91,\n numlock: 144,\n scrolllock: 145,\n ';': 186,\n '=': 187,\n ',': 188,\n '-': 189,\n '.': 190,\n '/': 191,\n '`': 192,\n '[': 219,\n '\\\\': 220,\n ']': 221,\n '\\'': 222\n};\n\nfor (var f = 1; f < 20; f++) {\n CODES['f' + f] = 111 + f;\n}\n\n/**\n * Is hotkey?\n */\n\nfunction isHotkey(hotkey, options, event) {\n if (options && !('byKey' in options)) {\n event = options;\n options = null;\n }\n\n if (!Array.isArray(hotkey)) {\n hotkey = [hotkey];\n }\n\n var array = hotkey.map(function (string) {\n return parseHotkey(string, options);\n });\n var check = function check(e) {\n return array.some(function (object) {\n return compareHotkey(object, e);\n });\n };\n var ret = event == null ? check : check(event);\n return ret;\n}\n\nfunction isCodeHotkey(hotkey, event) {\n return isHotkey(hotkey, event);\n}\n\nfunction isKeyHotkey(hotkey, event) {\n return isHotkey(hotkey, { byKey: true }, event);\n}\n\n/**\n * Parse.\n */\n\nfunction parseHotkey(hotkey, options) {\n var byKey = options && options.byKey;\n var ret = {};\n\n // Special case to handle the `+` key since we use it as a separator.\n hotkey = hotkey.replace('++', '+add');\n var values = hotkey.split('+');\n var length = values.length;\n\n // Ensure that all the modifiers are set to false unless the hotkey has them.\n\n for (var k in MODIFIERS) {\n ret[MODIFIERS[k]] = false;\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var value = _step.value;\n\n var optional = value.endsWith('?');\n\n if (optional) {\n value = value.slice(0, -1);\n }\n\n var name = toKeyName(value);\n var modifier = MODIFIERS[name];\n\n if (length === 1 || !modifier) {\n if (byKey) {\n ret.key = name;\n } else {\n ret.which = toKeyCode(value);\n }\n }\n\n if (modifier) {\n ret[modifier] = optional ? null : true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return ret;\n}\n\n/**\n * Compare.\n */\n\nfunction compareHotkey(object, event) {\n for (var key in object) {\n var expected = object[key];\n var actual = void 0;\n\n if (expected == null) {\n continue;\n }\n\n if (key === 'key') {\n actual = event.key.toLowerCase();\n } else if (key === 'which') {\n actual = expected === 91 && event.which === 93 ? 91 : event.which;\n } else {\n actual = event[key];\n }\n\n if (actual == null && expected === false) {\n continue;\n }\n\n if (actual !== expected) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Utils.\n */\n\nfunction toKeyCode(name) {\n name = toKeyName(name);\n var code = CODES[name] || name.toUpperCase().charCodeAt(0);\n return code;\n}\n\nfunction toKeyName(name) {\n name = name.toLowerCase();\n name = ALIASES[name] || name;\n return name;\n}\n\n/**\n * Export.\n */\n\nexports.default = isHotkey;\nexports.isHotkey = isHotkey;\nexports.isCodeHotkey = isCodeHotkey;\nexports.isKeyHotkey = isKeyHotkey;\nexports.parseHotkey = parseHotkey;\nexports.compareHotkey = compareHotkey;\nexports.toKeyCode = toKeyCode;\nexports.toKeyName = toKeyName;","var toString = Object.prototype.toString\r\n\r\nmodule.exports = function(val){\r\n switch (toString.call(val)) {\r\n case '[object Function]': return 'function'\r\n case '[object Date]': return 'date'\r\n case '[object RegExp]': return 'regexp'\r\n case '[object Arguments]': return 'arguments'\r\n case '[object Array]': return 'array'\r\n case '[object String]': return 'string'\r\n }\r\n\r\n if (typeof val == 'object' && val && typeof val.length == 'number') {\r\n try {\r\n if (typeof val.callee == 'function') return 'arguments';\r\n } catch (ex) {\r\n if (ex instanceof TypeError) {\r\n return 'arguments';\r\n }\r\n }\r\n }\r\n\r\n if (val === null) return 'null'\r\n if (val === undefined) return 'undefined'\r\n if (val && val.nodeType === 1) return 'element'\r\n if (val === Object(val)) return 'object'\r\n\r\n return typeof val\r\n}\r\n","\"use strict\";\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// This module contains all the code needed to log the console, persist it to\n// disk and submit bug reports. Rationale is as follows:\n// - Monkey-patching the console is preferable to having a log library because\n// we can catch logs by other libraries more easily, without having to all\n// depend on the same log framework / pass the logger around.\n// - We use IndexedDB to persists logs because it has generous disk space\n// limits compared to local storage. IndexedDB does not work in incognito\n// mode, in which case this module will not be able to write logs to disk.\n// However, the logs will still be stored in-memory, so can still be\n// submitted in a bug report should the user wish to: we can also store more\n// logs in-memory than in local storage, which does work in incognito mode.\n// We also need to handle the case where there are 2+ tabs. Each JS runtime\n// generates a random string which serves as the \"ID\" for that tab/session.\n// These IDs are stored along with the log lines.\n// - Bug reports are sent as a POST over HTTPS: it purposefully does not use\n// Matrix as bug reports may be made when Matrix is not responsive (which may\n// be the cause of the bug). We send the most recent N MB of UTF-8 log data,\n// starting with the most recent, which we know because the \"ID\"s are\n// actually timestamps. We then purge the remaining logs. We also do this\n// purge on startup to prevent logs from accumulating.\n\n// the frequency with which we flush to indexeddb\nvar FLUSH_RATE_MS = 30 * 1000;\n\n// the length of log data we keep in indexeddb (and include in the reports)\n/*\nCopyright 2017 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MAX_LOG_SIZE = 1024 * 1024 * 1; // 1 MB\n\n// A class which monkey-patches the global console and stores log lines.\n\nvar ConsoleLogger = function () {\n function ConsoleLogger() {\n (0, _classCallCheck3.default)(this, ConsoleLogger);\n\n this.logs = \"\";\n }\n\n (0, _createClass3.default)(ConsoleLogger, [{\n key: \"monkeyPatch\",\n value: function monkeyPatch(consoleObj) {\n var _this = this;\n\n // Monkey-patch console logging\n var consoleFunctionsToLevels = {\n log: \"I\",\n info: \"I\",\n warn: \"W\",\n error: \"E\"\n };\n (0, _keys2.default)(consoleFunctionsToLevels).forEach(function (fnName) {\n var level = consoleFunctionsToLevels[fnName];\n var originalFn = consoleObj[fnName].bind(consoleObj);\n consoleObj[fnName] = function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this.log.apply(_this, [level].concat(args));\n originalFn.apply(undefined, args);\n };\n });\n }\n }, {\n key: \"log\",\n value: function log(level) {\n // We don't know what locale the user may be running so use ISO strings\n var ts = new Date().toISOString();\n // Some browsers support string formatting which we're not doing here\n // so the lines are a little more ugly but easy to implement / quick to\n // run.\n // Example line:\n // 2017-01-18T11:23:53.214Z W Failed to set badge count\n\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var line = ts + \" \" + level + \" \" + args.join(' ') + \"\\n\";\n // Using + really is the quickest way in JS\n // http://jsperf.com/concat-vs-plus-vs-join\n this.logs += line;\n }\n\n /**\n * Retrieve log lines to flush to disk.\n * @param {boolean} keepLogs True to not delete logs after flushing.\n * @return {string} \\n delimited log lines to flush.\n */\n\n }, {\n key: \"flush\",\n value: function flush(keepLogs) {\n // The ConsoleLogger doesn't care how these end up on disk, it just\n // flushes them to the caller.\n if (keepLogs) {\n return this.logs;\n }\n var logsToFlush = this.logs;\n this.logs = \"\";\n return logsToFlush;\n }\n }]);\n return ConsoleLogger;\n}();\n\n// A class which stores log lines in an IndexedDB instance.\n\n\nvar IndexedDBLogStore = function () {\n function IndexedDBLogStore(indexedDB, logger) {\n (0, _classCallCheck3.default)(this, IndexedDBLogStore);\n\n this.indexedDB = indexedDB;\n this.logger = logger;\n this.id = \"instance-\" + Math.random() + Date.now();\n this.index = 0;\n this.db = null;\n this.flushPromise = null;\n // set if flush() is called whilst one is ongoing\n this.flushAgainPromise = null;\n }\n\n /**\n * @return {Promise} Resolves when the store is ready.\n */\n\n\n (0, _createClass3.default)(IndexedDBLogStore, [{\n key: \"connect\",\n value: function connect() {\n var _this2 = this;\n\n var req = this.indexedDB.open(\"logs\");\n return new _bluebird2.default(function (resolve, reject) {\n req.onsuccess = function (event) {\n _this2.db = event.target.result;\n // Periodically flush logs to local storage / indexeddb\n setInterval(_this2.flush.bind(_this2), FLUSH_RATE_MS);\n resolve();\n };\n\n req.onerror = function (event) {\n var err = \"Failed to open log database: \" + event.target.error.name;\n console.error(err);\n reject(new Error(err));\n };\n\n // First time: Setup the object store\n req.onupgradeneeded = function (event) {\n var db = event.target.result;\n var logObjStore = db.createObjectStore(\"logs\", {\n keyPath: [\"id\", \"index\"]\n });\n // Keys in the database look like: [ \"instance-148938490\", 0 ]\n // Later on we need to query everything based on an instance id.\n // In order to do this, we need to set up indexes \"id\".\n logObjStore.createIndex(\"id\", \"id\", { unique: false });\n\n logObjStore.add(_this2._generateLogEntry(new Date() + \" ::: Log database was created.\"));\n\n var lastModifiedStore = db.createObjectStore(\"logslastmod\", {\n keyPath: \"id\"\n });\n lastModifiedStore.add(_this2._generateLastModifiedTime());\n };\n });\n }\n\n /**\n * Flush logs to disk.\n *\n * There are guards to protect against race conditions in order to ensure\n * that all previous flushes have completed before the most recent flush.\n * Consider without guards:\n * - A calls flush() periodically.\n * - B calls flush() and wants to send logs immediately afterwards.\n * - If B doesn't wait for A's flush to complete, B will be missing the\n * contents of A's flush.\n * To protect against this, we set 'flushPromise' when a flush is ongoing.\n * Subsequent calls to flush() during this period will chain another flush,\n * then keep returning that same chained flush.\n *\n * This guarantees that we will always eventually do a flush when flush() is\n * called.\n *\n * @return {Promise} Resolved when the logs have been flushed.\n */\n\n }, {\n key: \"flush\",\n value: function flush() {\n var _this3 = this;\n\n // check if a flush() operation is ongoing\n if (this.flushPromise && this.flushPromise.isPending()) {\n if (this.flushAgainPromise && this.flushAgainPromise.isPending()) {\n // this is the 3rd+ time we've called flush() : return the same\n // promise.\n return this.flushAgainPromise;\n }\n // queue up a flush to occur immediately after the pending one\n // completes.\n this.flushAgainPromise = this.flushPromise.then(function () {\n return _this3.flush();\n });\n return this.flushAgainPromise;\n }\n // there is no flush promise or there was but it has finished, so do\n // a brand new one, destroying the chain which may have been built up.\n this.flushPromise = new _bluebird2.default(function (resolve, reject) {\n if (!_this3.db) {\n // not connected yet or user rejected access for us to r/w to\n // the db.\n reject(new Error(\"No connected database\"));\n return;\n }\n var lines = _this3.logger.flush();\n if (lines.length === 0) {\n resolve();\n return;\n }\n var txn = _this3.db.transaction([\"logs\", \"logslastmod\"], \"readwrite\");\n var objStore = txn.objectStore(\"logs\");\n txn.oncomplete = function (event) {\n resolve();\n };\n txn.onerror = function (event) {\n console.error(\"Failed to flush logs : \", event);\n reject(new Error(\"Failed to write logs: \" + event.target.errorCode));\n };\n objStore.add(_this3._generateLogEntry(lines));\n var lastModStore = txn.objectStore(\"logslastmod\");\n lastModStore.put(_this3._generateLastModifiedTime());\n });\n return this.flushPromise;\n }\n\n /**\n * Consume the most recent logs and return them. Older logs which are not\n * returned are deleted at the same time, so this can be called at startup\n * to do house-keeping to keep the logs from growing too large.\n *\n * @return {Promise<Object[]>} Resolves to an array of objects. The array is\n * sorted in time (oldest first) based on when the log file was created (the\n * log ID). The objects have said log ID in an \"id\" field and \"lines\" which\n * is a big string with all the new-line delimited logs.\n */\n\n }, {\n key: \"consume\",\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var db, fetchLogs, fetchLogIds, deleteLogs, allLogIds, removeLogIds, logs, size, i, lines;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n deleteLogs = function deleteLogs(id) {\n return new _bluebird2.default(function (resolve, reject) {\n var txn = db.transaction([\"logs\", \"logslastmod\"], \"readwrite\");\n var o = txn.objectStore(\"logs\");\n // only load the key path, not the data which may be huge\n var query = o.index(\"id\").openKeyCursor(IDBKeyRange.only(id));\n query.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n return;\n }\n o.delete(cursor.primaryKey);\n cursor.continue();\n };\n txn.oncomplete = function () {\n resolve();\n };\n txn.onerror = function (event) {\n reject(new Error(\"Failed to delete logs for \" + (\"'\" + id + \"' : \" + event.target.errorCode)));\n };\n // delete last modified entries\n var lastModStore = txn.objectStore(\"logslastmod\");\n lastModStore.delete(id);\n });\n };\n\n fetchLogIds = function fetchLogIds() {\n // To gather all the log IDs, query for all records in logslastmod.\n var o = db.transaction(\"logslastmod\", \"readonly\").objectStore(\"logslastmod\");\n return selectQuery(o, undefined, function (cursor) {\n return {\n id: cursor.value.id,\n ts: cursor.value.ts\n };\n }).then(function (res) {\n // Sort IDs by timestamp (newest first)\n return res.sort(function (a, b) {\n return b.ts - a.ts;\n }).map(function (a) {\n return a.id;\n });\n });\n };\n\n fetchLogs = function fetchLogs(id) {\n var objectStore = db.transaction(\"logs\", \"readonly\").objectStore(\"logs\");\n\n return new _bluebird2.default(function (resolve, reject) {\n var query = objectStore.index(\"id\").openCursor(IDBKeyRange.only(id), 'next');\n var lines = '';\n query.onerror = function (event) {\n reject(new Error(\"Query failed: \" + event.target.errorCode));\n };\n query.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n resolve(lines);\n return; // end of results\n }\n lines += cursor.value.lines;\n if (lines.length >= MAX_LOG_SIZE) {\n resolve(lines);\n } else {\n cursor.continue();\n }\n };\n });\n };\n\n db = this.db;\n\n // Returns: a string representing the concatenated logs for this ID.\n\n\n // Returns: A sorted array of log IDs. (newest first)\n\n _context.next = 6;\n return (0, _bluebird.resolve)(fetchLogIds());\n\n case 6:\n allLogIds = _context.sent;\n removeLogIds = [];\n logs = [];\n size = 0;\n i = 0;\n\n case 11:\n if (!(i < allLogIds.length)) {\n _context.next = 23;\n break;\n }\n\n _context.next = 14;\n return (0, _bluebird.resolve)(fetchLogs(allLogIds[i]));\n\n case 14:\n lines = _context.sent;\n\n if (!(i > 0 && size + lines.length > MAX_LOG_SIZE)) {\n _context.next = 18;\n break;\n }\n\n // the remaining log IDs should be removed. If we go out of\n // bounds this is just []\n removeLogIds = allLogIds.slice(i + 1);\n return _context.abrupt(\"break\", 23);\n\n case 18:\n\n logs.push({\n lines: lines,\n id: allLogIds[i]\n });\n size += lines.length;\n\n case 20:\n i++;\n _context.next = 11;\n break;\n\n case 23:\n if (removeLogIds.length > 0) {\n console.log(\"Removing logs: \", removeLogIds);\n // Don't await this because it's non-fatal if we can't clean up\n // logs.\n _bluebird2.default.all(removeLogIds.map(function (id) {\n return deleteLogs(id);\n })).then(function () {\n console.log(\"Removed \" + removeLogIds.length + \" old logs.\");\n }, function (err) {\n console.error(err);\n });\n }\n return _context.abrupt(\"return\", logs);\n\n case 25:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function consume() {\n return _ref.apply(this, arguments);\n }\n\n return consume;\n }()\n }, {\n key: \"_generateLogEntry\",\n value: function _generateLogEntry(lines) {\n return {\n id: this.id,\n lines: lines,\n index: this.index++\n };\n }\n }, {\n key: \"_generateLastModifiedTime\",\n value: function _generateLastModifiedTime() {\n return {\n id: this.id,\n ts: Date.now()\n };\n }\n }]);\n return IndexedDBLogStore;\n}();\n\n/**\n * Helper method to collect results from a Cursor and promiseify it.\n * @param {ObjectStore|Index} store The store to perform openCursor on.\n * @param {IDBKeyRange=} keyRange Optional key range to apply on the cursor.\n * @param {Function} resultMapper A function which is repeatedly called with a\n * Cursor.\n * Return the data you want to keep.\n * @return {Promise<T[]>} Resolves to an array of whatever you returned from\n * resultMapper.\n */\n\n\nfunction selectQuery(store, keyRange, resultMapper) {\n var query = store.openCursor(keyRange);\n return new _bluebird2.default(function (resolve, reject) {\n var results = [];\n query.onerror = function (event) {\n reject(new Error(\"Query failed: \" + event.target.errorCode));\n };\n // collect results\n query.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n resolve(results);\n return; // end of results\n }\n results.push(resultMapper(cursor));\n cursor.continue();\n };\n });\n}\n\nmodule.exports = {\n\n /**\n * Configure rage shaking support for sending bug reports.\n * Modifies globals.\n * @return {Promise} Resolves when set up.\n */\n init: function init() {\n if (global.mx_rage_initPromise) {\n return global.mx_rage_initPromise;\n }\n global.mx_rage_logger = new ConsoleLogger();\n global.mx_rage_logger.monkeyPatch(window.console);\n\n // just *accessing* indexedDB throws an exception in firefox with\n // indexeddb disabled.\n var indexedDB = void 0;\n try {\n indexedDB = window.indexedDB;\n } catch (e) {}\n\n if (indexedDB) {\n global.mx_rage_store = new IndexedDBLogStore(indexedDB, global.mx_rage_logger);\n global.mx_rage_initPromise = global.mx_rage_store.connect();\n return global.mx_rage_initPromise;\n }\n global.mx_rage_initPromise = _bluebird2.default.resolve();\n return global.mx_rage_initPromise;\n },\n\n flush: function flush() {\n if (!global.mx_rage_store) {\n return;\n }\n global.mx_rage_store.flush();\n },\n\n /**\n * Clean up old logs.\n * @return Promise Resolves if cleaned logs.\n */\n cleanup: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (global.mx_rage_store) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 2:\n _context2.next = 4;\n return (0, _bluebird.resolve)(global.mx_rage_store.consume());\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function cleanup() {\n return _ref2.apply(this, arguments);\n }\n\n return cleanup;\n }(),\n\n /**\n * Get a recent snapshot of the logs, ready for attaching to a bug report\n *\n * @return {Array<{lines: string, id, string}>} list of log data\n */\n getLogsForReport: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (global.mx_rage_logger) {\n _context3.next = 2;\n break;\n }\n\n throw new Error(\"No console logger, did you forget to call init()?\");\n\n case 2:\n if (!global.mx_rage_store) {\n _context3.next = 10;\n break;\n }\n\n _context3.next = 5;\n return (0, _bluebird.resolve)(global.mx_rage_store.flush());\n\n case 5:\n _context3.next = 7;\n return (0, _bluebird.resolve)(global.mx_rage_store.consume());\n\n case 7:\n return _context3.abrupt(\"return\", _context3.sent);\n\n case 10:\n return _context3.abrupt(\"return\", [{\n lines: global.mx_rage_logger.flush(true),\n id: \"-\"\n }]);\n\n case 11:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getLogsForReport() {\n return _ref3.apply(this, arguments);\n }\n\n return getLogsForReport;\n }()\n};\n//# sourceMappingURL=rageshake.js.map","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = function () { /* empty */ };\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Injectable ordering of event plugins.\n */\nvar eventPluginOrder = null;\n\n/**\n * Injectable mapping from names to event plugin modules.\n */\nvar namesToPlugins = {};\n\n/**\n * Recomputes the plugin list using the injected plugins and plugin ordering.\n *\n * @private\n */\nfunction recomputePluginOrdering() {\n if (!eventPluginOrder) {\n // Wait until an `eventPluginOrder` is injected.\n return;\n }\n for (var pluginName in namesToPlugins) {\n var pluginModule = namesToPlugins[pluginName];\n var pluginIndex = eventPluginOrder.indexOf(pluginName);\n !(pluginIndex > -1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0;\n if (EventPluginRegistry.plugins[pluginIndex]) {\n continue;\n }\n !pluginModule.extractEvents ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0;\n EventPluginRegistry.plugins[pluginIndex] = pluginModule;\n var publishedEvents = pluginModule.eventTypes;\n for (var eventName in publishedEvents) {\n !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0;\n }\n }\n}\n\n/**\n * Publishes an event so that it can be dispatched by the supplied plugin.\n *\n * @param {object} dispatchConfig Dispatch configuration for the event.\n * @param {object} PluginModule Plugin publishing the event.\n * @return {boolean} True if the event was successfully published.\n * @private\n */\nfunction publishEventForPlugin(dispatchConfig, pluginModule, eventName) {\n !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0;\n EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n if (phasedRegistrationNames) {\n for (var phaseName in phasedRegistrationNames) {\n if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n var phasedRegistrationName = phasedRegistrationNames[phaseName];\n publishRegistrationName(phasedRegistrationName, pluginModule, eventName);\n }\n }\n return true;\n } else if (dispatchConfig.registrationName) {\n publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);\n return true;\n }\n return false;\n}\n\n/**\n * Publishes a registration name that is used to identify dispatched events and\n * can be used with `EventPluginHub.putListener` to register listeners.\n *\n * @param {string} registrationName Registration name to add.\n * @param {object} PluginModule Plugin publishing the event.\n * @private\n */\nfunction publishRegistrationName(registrationName, pluginModule, eventName) {\n !!EventPluginRegistry.registrationNameModules[registrationName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0;\n EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;\n EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;\n\n if (process.env.NODE_ENV !== 'production') {\n var lowerCasedName = registrationName.toLowerCase();\n EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;\n\n if (registrationName === 'onDoubleClick') {\n EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;\n }\n }\n}\n\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\nvar EventPluginRegistry = {\n /**\n * Ordered list of injected plugins.\n */\n plugins: [],\n\n /**\n * Mapping from event name to dispatch config\n */\n eventNameDispatchConfigs: {},\n\n /**\n * Mapping from registration name to plugin module\n */\n registrationNameModules: {},\n\n /**\n * Mapping from registration name to event name\n */\n registrationNameDependencies: {},\n\n /**\n * Mapping from lowercase registration names to the properly cased version,\n * used to warn in the case of missing event handlers. Available\n * only in __DEV__.\n * @type {Object}\n */\n possibleRegistrationNames: process.env.NODE_ENV !== 'production' ? {} : null,\n // Trust the developer to only use possibleRegistrationNames in __DEV__\n\n /**\n * Injects an ordering of plugins (by plugin name). This allows the ordering\n * to be decoupled from injection of the actual plugins so that ordering is\n * always deterministic regardless of packaging, on-the-fly injection, etc.\n *\n * @param {array} InjectedEventPluginOrder\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginOrder}\n */\n injectEventPluginOrder: function (injectedEventPluginOrder) {\n !!eventPluginOrder ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0;\n // Clone the ordering so it cannot be dynamically mutated.\n eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);\n recomputePluginOrdering();\n },\n\n /**\n * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n * in the ordering injected by `injectEventPluginOrder`.\n *\n * Plugins can be injected as part of page initialization or on-the-fly.\n *\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginsByName}\n */\n injectEventPluginsByName: function (injectedNamesToPlugins) {\n var isOrderingDirty = false;\n for (var pluginName in injectedNamesToPlugins) {\n if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n continue;\n }\n var pluginModule = injectedNamesToPlugins[pluginName];\n if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {\n !!namesToPlugins[pluginName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0;\n namesToPlugins[pluginName] = pluginModule;\n isOrderingDirty = true;\n }\n }\n if (isOrderingDirty) {\n recomputePluginOrdering();\n }\n },\n\n /**\n * Looks up the plugin for the supplied event.\n *\n * @param {object} event A synthetic event.\n * @return {?object} The plugin that created the supplied event.\n * @internal\n */\n getPluginModuleForEvent: function (event) {\n var dispatchConfig = event.dispatchConfig;\n if (dispatchConfig.registrationName) {\n return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;\n }\n if (dispatchConfig.phasedRegistrationNames !== undefined) {\n // pulling phasedRegistrationNames out of dispatchConfig helps Flow see\n // that it is not undefined.\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n\n for (var phase in phasedRegistrationNames) {\n if (!phasedRegistrationNames.hasOwnProperty(phase)) {\n continue;\n }\n var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]];\n if (pluginModule) {\n return pluginModule;\n }\n }\n }\n return null;\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _resetEventPlugins: function () {\n eventPluginOrder = null;\n for (var pluginName in namesToPlugins) {\n if (namesToPlugins.hasOwnProperty(pluginName)) {\n delete namesToPlugins[pluginName];\n }\n }\n EventPluginRegistry.plugins.length = 0;\n\n var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;\n for (var eventName in eventNameDispatchConfigs) {\n if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {\n delete eventNameDispatchConfigs[eventName];\n }\n }\n\n var registrationNameModules = EventPluginRegistry.registrationNameModules;\n for (var registrationName in registrationNameModules) {\n if (registrationNameModules.hasOwnProperty(registrationName)) {\n delete registrationNameModules[registrationName];\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;\n for (var lowerCasedName in possibleRegistrationNames) {\n if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {\n delete possibleRegistrationNames[lowerCasedName];\n }\n }\n }\n }\n};\n\nmodule.exports = EventPluginRegistry;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactErrorUtils = require('./ReactErrorUtils');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Injected dependencies:\n */\n\n/**\n * - `ComponentTree`: [required] Module that can convert between React instances\n * and actual node references.\n */\nvar ComponentTree;\nvar TreeTraversal;\nvar injection = {\n injectComponentTree: function (Injected) {\n ComponentTree = Injected;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;\n }\n },\n injectTreeTraversal: function (Injected) {\n TreeTraversal = Injected;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0;\n }\n }\n};\n\nfunction isEndish(topLevelType) {\n return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel';\n}\n\nfunction isMoveish(topLevelType) {\n return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove';\n}\nfunction isStartish(topLevelType) {\n return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart';\n}\n\nvar validateEventDispatches;\nif (process.env.NODE_ENV !== 'production') {\n validateEventDispatches = function (event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n\n var listenersIsArr = Array.isArray(dispatchListeners);\n var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;\n\n var instancesIsArr = Array.isArray(dispatchInstances);\n var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;\n\n process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0;\n };\n}\n\n/**\n * Dispatch the event to the listener.\n * @param {SyntheticEvent} event SyntheticEvent to handle\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @param {function} listener Application-level callback\n * @param {*} inst Internal component instance\n */\nfunction executeDispatch(event, simulated, listener, inst) {\n var type = event.type || 'unknown-event';\n event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);\n if (simulated) {\n ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);\n } else {\n ReactErrorUtils.invokeGuardedCallback(type, listener, event);\n }\n event.currentTarget = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches.\n */\nfunction executeDispatchesInOrder(event, simulated) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);\n }\n } else if (dispatchListeners) {\n executeDispatch(event, simulated, dispatchListeners, dispatchInstances);\n }\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches, but stops\n * at the first dispatch execution returning true, and returns that id.\n *\n * @return {?string} id of the first dispatch execution who's listener returns\n * true, or null if no listener returned true.\n */\nfunction executeDispatchesInOrderStopAtTrueImpl(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n if (dispatchListeners[i](event, dispatchInstances[i])) {\n return dispatchInstances[i];\n }\n }\n } else if (dispatchListeners) {\n if (dispatchListeners(event, dispatchInstances)) {\n return dispatchInstances;\n }\n }\n return null;\n}\n\n/**\n * @see executeDispatchesInOrderStopAtTrueImpl\n */\nfunction executeDispatchesInOrderStopAtTrue(event) {\n var ret = executeDispatchesInOrderStopAtTrueImpl(event);\n event._dispatchInstances = null;\n event._dispatchListeners = null;\n return ret;\n}\n\n/**\n * Execution of a \"direct\" dispatch - there must be at most one dispatch\n * accumulated on the event or it is considered an error. It doesn't really make\n * sense for an event with multiple dispatches (bubbled) to keep track of the\n * return values at each dispatch execution, but it does tend to make sense when\n * dealing with \"direct\" dispatches.\n *\n * @return {*} The return value of executing the single dispatch.\n */\nfunction executeDirectDispatch(event) {\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n var dispatchListener = event._dispatchListeners;\n var dispatchInstance = event._dispatchInstances;\n !!Array.isArray(dispatchListener) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0;\n event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;\n var res = dispatchListener ? dispatchListener(event) : null;\n event.currentTarget = null;\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n return res;\n}\n\n/**\n * @param {SyntheticEvent} event\n * @return {boolean} True iff number of dispatches accumulated is greater than 0.\n */\nfunction hasDispatches(event) {\n return !!event._dispatchListeners;\n}\n\n/**\n * General utilities that are useful in creating custom Event Plugins.\n */\nvar EventPluginUtils = {\n isEndish: isEndish,\n isMoveish: isMoveish,\n isStartish: isStartish,\n\n executeDirectDispatch: executeDirectDispatch,\n executeDispatchesInOrder: executeDispatchesInOrder,\n executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,\n hasDispatches: hasDispatches,\n\n getInstanceFromNode: function (node) {\n return ComponentTree.getInstanceFromNode(node);\n },\n getNodeFromInstance: function (node) {\n return ComponentTree.getNodeFromInstance(node);\n },\n isAncestor: function (a, b) {\n return TreeTraversal.isAncestor(a, b);\n },\n getLowestCommonAncestor: function (a, b) {\n return TreeTraversal.getLowestCommonAncestor(a, b);\n },\n getParentInstance: function (inst) {\n return TreeTraversal.getParentInstance(inst);\n },\n traverseTwoPhase: function (target, fn, arg) {\n return TreeTraversal.traverseTwoPhase(target, fn, arg);\n },\n traverseEnterLeave: function (from, to, fn, argFrom, argTo) {\n return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);\n },\n\n injection: injection\n};\n\nmodule.exports = EventPluginUtils;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar caughtError = null;\n\n/**\n * Call a function while guarding against errors that happens within it.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} a First argument\n * @param {*} b Second argument\n */\nfunction invokeGuardedCallback(name, func, a) {\n try {\n func(a);\n } catch (x) {\n if (caughtError === null) {\n caughtError = x;\n }\n }\n}\n\nvar ReactErrorUtils = {\n invokeGuardedCallback: invokeGuardedCallback,\n\n /**\n * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event\n * handler are sure to be rethrown by rethrowCaughtError.\n */\n invokeGuardedCallbackWithCatch: invokeGuardedCallback,\n\n /**\n * During execution of guarded functions we will capture the first error which\n * we will rethrow to be handled by the top level error handler.\n */\n rethrowCaughtError: function () {\n if (caughtError) {\n var error = caughtError;\n caughtError = null;\n throw error;\n }\n }\n};\n\nif (process.env.NODE_ENV !== 'production') {\n /**\n * To help development we can get better devtools integration by simulating a\n * real browser event.\n */\n if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n var fakeNode = document.createElement('react');\n ReactErrorUtils.invokeGuardedCallback = function (name, func, a) {\n var boundFunc = function () {\n func(a);\n };\n var evtType = 'react-' + name;\n fakeNode.addEventListener(evtType, boundFunc, false);\n var evt = document.createEvent('Event');\n evt.initEvent(evtType, false, false);\n fakeNode.dispatchEvent(evt);\n fakeNode.removeEventListener(evtType, boundFunc, false);\n };\n }\n}\n\nmodule.exports = ReactErrorUtils;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\nfunction getEventTarget(nativeEvent) {\n var target = nativeEvent.target || nativeEvent.srcElement || window;\n\n // Normalize SVG <use> element events #4963\n if (target.correspondingUseElement) {\n target = target.correspondingUseElement;\n }\n\n // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n // @see http://www.quirksmode.org/js/events_properties.html\n return target.nodeType === 3 ? target.parentNode : target;\n}\n\nmodule.exports = getEventTarget;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature = document.implementation && document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\nvar modifierKeyToProp = {\n Alt: 'altKey',\n Control: 'ctrlKey',\n Meta: 'metaKey',\n Shift: 'shiftKey'\n};\n\n// IE8 does not implement getModifierState so we simply map it to the only\n// modifier keys exposed by the event itself, does not support Lock-keys.\n// Currently, all major browsers except Chrome seems to support Lock-keys.\nfunction modifierStateGetter(keyArg) {\n var syntheticEvent = this;\n var nativeEvent = syntheticEvent.nativeEvent;\n if (nativeEvent.getModifierState) {\n return nativeEvent.getModifierState(keyArg);\n }\n var keyProp = modifierKeyToProp[keyArg];\n return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n return modifierStateGetter;\n}\n\nmodule.exports = getEventModifierState;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar Danger = require('./Danger');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\nvar setInnerHTML = require('./setInnerHTML');\nvar setTextContent = require('./setTextContent');\n\nfunction getNodeAfter(parentNode, node) {\n // Special case for text components, which return [open, close] comments\n // from getHostNode.\n if (Array.isArray(node)) {\n node = node[1];\n }\n return node ? node.nextSibling : parentNode.firstChild;\n}\n\n/**\n * Inserts `childNode` as a child of `parentNode` at the `index`.\n *\n * @param {DOMElement} parentNode Parent node in which to insert.\n * @param {DOMElement} childNode Child node to insert.\n * @param {number} index Index at which to insert the child.\n * @internal\n */\nvar insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {\n // We rely exclusively on `insertBefore(node, null)` instead of also using\n // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so\n // we are careful to use `null`.)\n parentNode.insertBefore(childNode, referenceNode);\n});\n\nfunction insertLazyTreeChildAt(parentNode, childTree, referenceNode) {\n DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);\n}\n\nfunction moveChild(parentNode, childNode, referenceNode) {\n if (Array.isArray(childNode)) {\n moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);\n } else {\n insertChildAt(parentNode, childNode, referenceNode);\n }\n}\n\nfunction removeChild(parentNode, childNode) {\n if (Array.isArray(childNode)) {\n var closingComment = childNode[1];\n childNode = childNode[0];\n removeDelimitedText(parentNode, childNode, closingComment);\n parentNode.removeChild(closingComment);\n }\n parentNode.removeChild(childNode);\n}\n\nfunction moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {\n var node = openingComment;\n while (true) {\n var nextNode = node.nextSibling;\n insertChildAt(parentNode, node, referenceNode);\n if (node === closingComment) {\n break;\n }\n node = nextNode;\n }\n}\n\nfunction removeDelimitedText(parentNode, startNode, closingComment) {\n while (true) {\n var node = startNode.nextSibling;\n if (node === closingComment) {\n // The closing comment is removed by ReactMultiChild.\n break;\n } else {\n parentNode.removeChild(node);\n }\n }\n}\n\nfunction replaceDelimitedText(openingComment, closingComment, stringText) {\n var parentNode = openingComment.parentNode;\n var nodeAfterComment = openingComment.nextSibling;\n if (nodeAfterComment === closingComment) {\n // There are no text nodes between the opening and closing comments; insert\n // a new one if stringText isn't empty.\n if (stringText) {\n insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);\n }\n } else {\n if (stringText) {\n // Set the text content of the first node after the opening comment, and\n // remove all following nodes up until the closing comment.\n setTextContent(nodeAfterComment, stringText);\n removeDelimitedText(parentNode, nodeAfterComment, closingComment);\n } else {\n removeDelimitedText(parentNode, openingComment, closingComment);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID,\n type: 'replace text',\n payload: stringText\n });\n }\n}\n\nvar dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;\nif (process.env.NODE_ENV !== 'production') {\n dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) {\n Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);\n if (prevInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: prevInstance._debugID,\n type: 'replace with',\n payload: markup.toString()\n });\n } else {\n var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);\n if (nextInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: nextInstance._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n };\n}\n\n/**\n * Operations for updating with DOM children.\n */\nvar DOMChildrenOperations = {\n dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,\n\n replaceDelimitedText: replaceDelimitedText,\n\n /**\n * Updates a component's children by processing a series of updates. The\n * update configurations are each expected to have a `parentNode` property.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n processUpdates: function (parentNode, updates) {\n if (process.env.NODE_ENV !== 'production') {\n var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;\n }\n\n for (var k = 0; k < updates.length; k++) {\n var update = updates[k];\n switch (update.type) {\n case 'INSERT_MARKUP':\n insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'insert child',\n payload: {\n toIndex: update.toIndex,\n content: update.content.toString()\n }\n });\n }\n break;\n case 'MOVE_EXISTING':\n moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'move child',\n payload: { fromIndex: update.fromIndex, toIndex: update.toIndex }\n });\n }\n break;\n case 'SET_MARKUP':\n setInnerHTML(parentNode, update.content);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace children',\n payload: update.content.toString()\n });\n }\n break;\n case 'TEXT_CONTENT':\n setTextContent(parentNode, update.content);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace text',\n payload: update.content.toString()\n });\n }\n break;\n case 'REMOVE_NODE':\n removeChild(parentNode, update.fromNode);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'remove child',\n payload: { fromIndex: update.fromIndex }\n });\n }\n break;\n }\n }\n }\n};\n\nmodule.exports = DOMChildrenOperations;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg'\n};\n\nmodule.exports = DOMNamespaces;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/* globals MSApp */\n\n'use strict';\n\n/**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\n\nvar createMicrosoftUnsafeLocalFunction = function (func) {\n if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n return function (arg0, arg1, arg2, arg3) {\n MSApp.execUnsafeLocalFunction(function () {\n return func(arg0, arg1, arg2, arg3);\n });\n };\n } else {\n return func;\n }\n};\n\nmodule.exports = createMicrosoftUnsafeLocalFunction;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactPropTypesSecret = require('./ReactPropTypesSecret');\nvar propTypesFactory = require('prop-types/factory');\n\nvar React = require('react/lib/React');\nvar PropTypes = propTypesFactory(React.isValidElement);\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar hasReadOnlyValue = {\n button: true,\n checkbox: true,\n image: true,\n hidden: true,\n radio: true,\n reset: true,\n submit: true\n};\n\nfunction _assertSingleLink(inputProps) {\n !(inputProps.checkedLink == null || inputProps.valueLink == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\\'t want to use valueLink and vice versa.') : _prodInvariant('87') : void 0;\n}\nfunction _assertValueLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.value == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don\\'t want to use valueLink.') : _prodInvariant('88') : void 0;\n}\n\nfunction _assertCheckedLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.checked == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don\\'t want to use checkedLink') : _prodInvariant('89') : void 0;\n}\n\nvar propTypes = {\n value: function (props, propName, componentName) {\n if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n checked: function (props, propName, componentName) {\n if (!props[propName] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n onChange: PropTypes.func\n};\n\nvar loggedTypeFailures = {};\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Provide a linked `value` attribute for controlled forms. You should not use\n * this outside of the ReactDOM controlled form components.\n */\nvar LinkedValueUtils = {\n checkPropTypes: function (tagName, props, owner) {\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error = propTypes[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret);\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var addendum = getDeclarationErrorAddendum(owner);\n process.env.NODE_ENV !== 'production' ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0;\n }\n }\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current value of the input either from value prop or link.\n */\n getValue: function (inputProps) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.value;\n }\n return inputProps.value;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current checked status of the input either from checked prop\n * or link.\n */\n getChecked: function (inputProps) {\n if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.value;\n }\n return inputProps.checked;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @param {SyntheticEvent} event change event to handle\n */\n executeOnChange: function (inputProps, event) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.requestChange(event.target.value);\n } else if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.requestChange(event.target.checked);\n } else if (inputProps.onChange) {\n return inputProps.onChange.call(undefined, event);\n }\n }\n};\n\nmodule.exports = LinkedValueUtils;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar injected = false;\n\nvar ReactComponentEnvironment = {\n /**\n * Optionally injectable hook for swapping out mount images in the middle of\n * the tree.\n */\n replaceNodeWithMarkup: null,\n\n /**\n * Optionally injectable hook for processing a queue of child updates. Will\n * later move into MultiChildComponents.\n */\n processChildrenUpdates: null,\n\n injection: {\n injectEnvironment: function (environment) {\n !!injected ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0;\n ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;\n ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;\n injected = true;\n }\n }\n};\n\nmodule.exports = ReactComponentEnvironment;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar ReactCompositeComponent = require('./ReactCompositeComponent');\nvar ReactEmptyComponent = require('./ReactEmptyComponent');\nvar ReactHostComponent = require('./ReactHostComponent');\n\nvar getNextDebugID = require('react/lib/getNextDebugID');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n// To avoid a cyclic dependency, we create the final class in this module\nvar ReactCompositeComponentWrapper = function (element) {\n this.construct(element);\n};\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Check if the type reference is a known internal type. I.e. not a user\n * provided composite type.\n *\n * @param {function} type\n * @return {boolean} Returns true if this is a valid internal type.\n */\nfunction isInternalComponentType(type) {\n return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function';\n}\n\n/**\n * Given a ReactNode, create an instance that will actually be mounted.\n *\n * @param {ReactNode} node\n * @param {boolean} shouldHaveDebugID\n * @return {object} A new instance of the element's constructor.\n * @protected\n */\nfunction instantiateReactComponent(node, shouldHaveDebugID) {\n var instance;\n\n if (node === null || node === false) {\n instance = ReactEmptyComponent.create(instantiateReactComponent);\n } else if (typeof node === 'object') {\n var element = node;\n var type = element.type;\n if (typeof type !== 'function' && typeof type !== 'string') {\n var info = '';\n if (process.env.NODE_ENV !== 'production') {\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in.\";\n }\n }\n info += getDeclarationErrorAddendum(element._owner);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', type == null ? type : typeof type, info) : _prodInvariant('130', type == null ? type : typeof type, info) : void 0;\n }\n\n // Special case string values\n if (typeof element.type === 'string') {\n instance = ReactHostComponent.createInternalComponent(element);\n } else if (isInternalComponentType(element.type)) {\n // This is temporarily available for custom components that are not string\n // representations. I.e. ART. Once those are updated to use the string\n // representation, we can drop this code path.\n instance = new element.type(element);\n\n // We renamed this. Allow the old name for compat. :(\n if (!instance.getHostNode) {\n instance.getHostNode = instance.getNativeNode;\n }\n } else {\n instance = new ReactCompositeComponentWrapper(element);\n }\n } else if (typeof node === 'string' || typeof node === 'number') {\n instance = ReactHostComponent.createInstanceForText(node);\n } else {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Encountered invalid React node of type %s', typeof node) : _prodInvariant('131', typeof node) : void 0;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(typeof instance.mountComponent === 'function' && typeof instance.receiveComponent === 'function' && typeof instance.getHostNode === 'function' && typeof instance.unmountComponent === 'function', 'Only React Components can be mounted.') : void 0;\n }\n\n // These two fields are used by the DOM and ART diffing algorithms\n // respectively. Instead of using expandos on components, we should be\n // storing the state needed by the diffing algorithms elsewhere.\n instance._mountIndex = 0;\n instance._mountImage = null;\n\n if (process.env.NODE_ENV !== 'production') {\n instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0;\n }\n\n // Internal instances should fully constructed at this point, so they should\n // not get any new fields added to them at this point.\n if (process.env.NODE_ENV !== 'production') {\n if (Object.preventExtensions) {\n Object.preventExtensions(instance);\n }\n }\n\n return instance;\n}\n\n_assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, {\n _instantiateReactComponent: instantiateReactComponent\n});\n\nmodule.exports = instantiateReactComponent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Given a `prevElement` and `nextElement`, determines if the existing\n * instance should be updated as opposed to being destroyed or replaced by a new\n * instance. Both arguments are elements. This ensures that this logic can\n * operate on stateless trees without any backing instance.\n *\n * @param {?object} prevElement\n * @param {?object} nextElement\n * @return {boolean} True if the existing instance should be updated.\n * @protected\n */\n\nfunction shouldUpdateReactComponent(prevElement, nextElement) {\n var prevEmpty = prevElement === null || prevElement === false;\n var nextEmpty = nextElement === null || nextElement === false;\n if (prevEmpty || nextEmpty) {\n return prevEmpty === nextEmpty;\n }\n\n var prevType = typeof prevElement;\n var nextType = typeof nextElement;\n if (prevType === 'string' || prevType === 'number') {\n return nextType === 'string' || nextType === 'number';\n } else {\n return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;\n }\n}\n\nmodule.exports = shouldUpdateReactComponent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nfunction enqueueUpdate(internalInstance) {\n ReactUpdates.enqueueUpdate(internalInstance);\n}\n\nfunction formatUnexpectedArgument(arg) {\n var type = typeof arg;\n if (type !== 'object') {\n return type;\n }\n var displayName = arg.constructor && arg.constructor.name || type;\n var keys = Object.keys(arg);\n if (keys.length > 0 && keys.length < 20) {\n return displayName + ' (keys: ' + keys.join(', ') + ')';\n }\n return displayName;\n}\n\nfunction getInternalInstanceReadyForUpdate(publicInstance, callerName) {\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (!internalInstance) {\n if (process.env.NODE_ENV !== 'production') {\n var ctor = publicInstance.constructor;\n // Only warn when we have a callerName. Otherwise we should be silent.\n // We're probably calling from enqueueCallback. We don't want to warn\n // there because we already warned for the corresponding lifecycle method.\n process.env.NODE_ENV !== 'production' ? warning(!callerName, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, ctor && (ctor.displayName || ctor.name) || 'ReactClass') : void 0;\n }\n return null;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '%s(...): Cannot update during an existing state transition (such as ' + \"within `render` or another component's constructor). Render methods \" + 'should be a pure function of props and state; constructor ' + 'side-effects are an anti-pattern, but can be moved to ' + '`componentWillMount`.', callerName) : void 0;\n }\n\n return internalInstance;\n}\n\n/**\n * ReactUpdateQueue allows for state updates to be scheduled into a later\n * reconciliation step.\n */\nvar ReactUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n if (process.env.NODE_ENV !== 'production') {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (internalInstance) {\n // During componentWillMount and render this will still be null but after\n // that will always render to something. At least for now. So we can use\n // this hack.\n return !!internalInstance._renderedComponent;\n } else {\n return false;\n }\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @param {string} callerName Name of the calling function in the public API.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback, callerName) {\n ReactUpdateQueue.validateCallback(callback, callerName);\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);\n\n // Previously we would throw an error if we didn't have an internal\n // instance. Since we want to make it a no-op instead, we mirror the same\n // behavior we have in other enqueue* methods.\n // We also need to ignore callbacks in componentWillMount. See\n // enqueueUpdates.\n if (!internalInstance) {\n return null;\n }\n\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n // TODO: The callback here is ignored when setState is called from\n // componentWillMount. Either fix it or disallow doing so completely in\n // favor of getInitialState. Alternatively, we can disallow\n // componentWillMount during server-side rendering.\n enqueueUpdate(internalInstance);\n },\n\n enqueueCallbackInternal: function (internalInstance, callback) {\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingForceUpdate = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingStateQueue = [completeState];\n internalInstance._pendingReplaceState = true;\n\n // Future-proof 15.5\n if (callback !== undefined && callback !== null) {\n ReactUpdateQueue.validateCallback(callback, 'replaceState');\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n }\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetState();\n process.env.NODE_ENV !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0;\n }\n\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState');\n\n if (!internalInstance) {\n return;\n }\n\n var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []);\n queue.push(partialState);\n\n enqueueUpdate(internalInstance);\n },\n\n enqueueElementInternal: function (internalInstance, nextElement, nextContext) {\n internalInstance._pendingElement = nextElement;\n // TODO: introduce _pendingContext instead of setting it directly.\n internalInstance._context = nextContext;\n enqueueUpdate(internalInstance);\n },\n\n validateCallback: function (callback, callerName) {\n !(!callback || typeof callback === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.', callerName, formatUnexpectedArgument(callback)) : _prodInvariant('122', callerName, formatUnexpectedArgument(callback)) : void 0;\n }\n};\n\nmodule.exports = ReactUpdateQueue;","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar warning = require('fbjs/lib/warning');\n\nvar validateDOMNesting = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n // This validation code was written based on the HTML5 parsing spec:\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n //\n // Note: this does not catch all invalid nesting, nor does it try to (as it's\n // not clear what practical benefit doing so provides); instead, we warn only\n // for cases where the parser will give a parse tree differing from what React\n // intended. For example, <b><div></div></b> is invalid but we don't warn\n // because it still parses correctly; we do warn for other cases like nested\n // <p> tags where the beginning of the second element implicitly closes the\n // first, causing a confusing mess.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#special\n var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template',\n\n // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n // TODO: Distinguish by namespace here -- for <title>, including it here\n // errs on the side of fewer warnings\n 'foreignObject', 'desc', 'title'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n var buttonScopeTags = inScopeTags.concat(['button']);\n\n // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n\n var emptyAncestorInfo = {\n current: null,\n\n formTag: null,\n aTagInScope: null,\n buttonTagInScope: null,\n nobrTagInScope: null,\n pTagInButtonScope: null,\n\n listItemTagAutoclosing: null,\n dlItemTagAutoclosing: null\n };\n\n var updatedAncestorInfo = function (oldInfo, tag, instance) {\n var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);\n var info = { tag: tag, instance: instance };\n\n if (inScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.aTagInScope = null;\n ancestorInfo.buttonTagInScope = null;\n ancestorInfo.nobrTagInScope = null;\n }\n if (buttonScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.pTagInButtonScope = null;\n }\n\n // See rules for 'li', 'dd', 'dt' start tags in\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n ancestorInfo.listItemTagAutoclosing = null;\n ancestorInfo.dlItemTagAutoclosing = null;\n }\n\n ancestorInfo.current = info;\n\n if (tag === 'form') {\n ancestorInfo.formTag = info;\n }\n if (tag === 'a') {\n ancestorInfo.aTagInScope = info;\n }\n if (tag === 'button') {\n ancestorInfo.buttonTagInScope = info;\n }\n if (tag === 'nobr') {\n ancestorInfo.nobrTagInScope = info;\n }\n if (tag === 'p') {\n ancestorInfo.pTagInButtonScope = info;\n }\n if (tag === 'li') {\n ancestorInfo.listItemTagAutoclosing = info;\n }\n if (tag === 'dd' || tag === 'dt') {\n ancestorInfo.dlItemTagAutoclosing = info;\n }\n\n return ancestorInfo;\n };\n\n /**\n * Returns whether\n */\n var isTagValidWithParent = function (tag, parentTag) {\n // First, let's check if we're in an unusual parsing mode...\n switch (parentTag) {\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n case 'select':\n return tag === 'option' || tag === 'optgroup' || tag === '#text';\n case 'optgroup':\n return tag === 'option' || tag === '#text';\n // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n // but\n case 'option':\n return tag === '#text';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n // No special behavior since these rules fall back to \"in body\" mode for\n // all except special table nodes which cause bad parsing behavior anyway.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n case 'tr':\n return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n case 'tbody':\n case 'thead':\n case 'tfoot':\n return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n case 'colgroup':\n return tag === 'col' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n case 'table':\n return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n case 'head':\n return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n case 'html':\n return tag === 'head' || tag === 'body';\n case '#document':\n return tag === 'html';\n }\n\n // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n // where the parsing rules cause implicit opens or closes to be added.\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n switch (tag) {\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\n case 'rp':\n case 'rt':\n return impliedEndTags.indexOf(parentTag) === -1;\n\n case 'body':\n case 'caption':\n case 'col':\n case 'colgroup':\n case 'frame':\n case 'head':\n case 'html':\n case 'tbody':\n case 'td':\n case 'tfoot':\n case 'th':\n case 'thead':\n case 'tr':\n // These tags are only valid with a few parents that have special child\n // parsing rules -- if we're down here, then none of those matched and\n // so we allow it only if we don't know what the parent is, as all other\n // cases are invalid.\n return parentTag == null;\n }\n\n return true;\n };\n\n /**\n * Returns whether\n */\n var findInvalidAncestorForTag = function (tag, ancestorInfo) {\n switch (tag) {\n case 'address':\n case 'article':\n case 'aside':\n case 'blockquote':\n case 'center':\n case 'details':\n case 'dialog':\n case 'dir':\n case 'div':\n case 'dl':\n case 'fieldset':\n case 'figcaption':\n case 'figure':\n case 'footer':\n case 'header':\n case 'hgroup':\n case 'main':\n case 'menu':\n case 'nav':\n case 'ol':\n case 'p':\n case 'section':\n case 'summary':\n case 'ul':\n case 'pre':\n case 'listing':\n case 'table':\n case 'hr':\n case 'xmp':\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return ancestorInfo.pTagInButtonScope;\n\n case 'form':\n return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n case 'li':\n return ancestorInfo.listItemTagAutoclosing;\n\n case 'dd':\n case 'dt':\n return ancestorInfo.dlItemTagAutoclosing;\n\n case 'button':\n return ancestorInfo.buttonTagInScope;\n\n case 'a':\n // Spec says something about storing a list of markers, but it sounds\n // equivalent to this check.\n return ancestorInfo.aTagInScope;\n\n case 'nobr':\n return ancestorInfo.nobrTagInScope;\n }\n\n return null;\n };\n\n /**\n * Given a ReactCompositeComponent instance, return a list of its recursive\n * owners, starting at the root and ending with the instance itself.\n */\n var findOwnerStack = function (instance) {\n if (!instance) {\n return [];\n }\n\n var stack = [];\n do {\n stack.push(instance);\n } while (instance = instance._currentElement._owner);\n stack.reverse();\n return stack;\n };\n\n var didWarn = {};\n\n validateDOMNesting = function (childTag, childText, childInstance, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n\n if (childText != null) {\n process.env.NODE_ENV !== 'production' ? warning(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0;\n childTag = '#text';\n }\n\n var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n var problematic = invalidParent || invalidAncestor;\n\n if (problematic) {\n var ancestorTag = problematic.tag;\n var ancestorInstance = problematic.instance;\n\n var childOwner = childInstance && childInstance._currentElement._owner;\n var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner;\n\n var childOwners = findOwnerStack(childOwner);\n var ancestorOwners = findOwnerStack(ancestorOwner);\n\n var minStackLen = Math.min(childOwners.length, ancestorOwners.length);\n var i;\n\n var deepestCommon = -1;\n for (i = 0; i < minStackLen; i++) {\n if (childOwners[i] === ancestorOwners[i]) {\n deepestCommon = i;\n } else {\n break;\n }\n }\n\n var UNKNOWN = '(unknown)';\n var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ownerInfo = [].concat(\n // If the parent and child instances have a common owner ancestor, start\n // with that -- otherwise we just start with the parent's owners.\n deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag,\n // If we're warning about an invalid (non-parent) ancestry, add '...'\n invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > ');\n\n var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo;\n if (didWarn[warnKey]) {\n return;\n }\n didWarn[warnKey] = true;\n\n var tagDisplayName = childTag;\n var whitespaceInfo = '';\n if (childTag === '#text') {\n if (/\\S/.test(childText)) {\n tagDisplayName = 'Text nodes';\n } else {\n tagDisplayName = 'Whitespace text nodes';\n whitespaceInfo = \" Make sure you don't have any extra whitespace between tags on \" + 'each line of your source code.';\n }\n } else {\n tagDisplayName = '<' + childTag + '>';\n }\n\n if (invalidParent) {\n var info = '';\n if (ancestorTag === 'table' && childTag === 'tr') {\n info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';\n }\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s ' + 'See %s.%s', tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0;\n } else {\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0;\n }\n }\n };\n\n validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo;\n\n // For testing\n validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo);\n };\n}\n\nmodule.exports = validateDOMNesting;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\n\nfunction getEventCharCode(nativeEvent) {\n var charCode;\n var keyCode = nativeEvent.keyCode;\n\n if ('charCode' in nativeEvent) {\n charCode = nativeEvent.charCode;\n\n // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n if (charCode === 0 && keyCode === 13) {\n charCode = 13;\n }\n } else {\n // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n charCode = keyCode;\n }\n\n // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n // Must not discard the (non-)printable Enter-key.\n if (charCode >= 32 || charCode === 13) {\n return charCode;\n }\n\n return 0;\n}\n\nmodule.exports = getEventCharCode;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nrequire('whatwg-fetch');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar fetchFunction = fetch;\n\nfunction checkStatus(response) {\n if (!response.ok) {\n return response.text().then(function (text) {\n throw new Error(text);\n });\n }\n return response;\n}\n\nfunction parseJson(response) {\n return response.json();\n}\n\nfunction encodeQueryParams(params) {\n return '?' + (0, _keys2.default)(params).map(function (k) {\n return k + '=' + encodeURIComponent(params[k]);\n }).join('&');\n}\n\nvar request = function request(url, opts) {\n if (opts && opts.qs) {\n url += encodeQueryParams(opts.qs);\n delete opts.qs;\n }\n if (opts && opts.body) {\n if (!opts.headers) {\n opts.headers = {};\n }\n opts.body = (0, _stringify2.default)(opts.body);\n opts.headers['Content-Type'] = 'application/json';\n }\n return fetchFunction(url, opts).then(checkStatus).then(parseJson);\n};\n\nvar RtsClient = function () {\n function RtsClient(url) {\n (0, _classCallCheck3.default)(this, RtsClient);\n\n this._url = url;\n }\n\n (0, _createClass3.default)(RtsClient, [{\n key: 'getTeamsConfig',\n value: function getTeamsConfig() {\n return request(this._url + '/teams');\n }\n\n /**\n * Track a referral with the Riot Team Server. This should be called once a referred\n * user has been successfully registered.\n * @param {string} referrer the user ID of one who referred the user to Riot.\n * @param {string} sid the sign-up identity server session ID .\n * @param {string} clientSecret the sign-up client secret.\n * @returns {Promise} a promise that resolves to { team_token: 'sometoken' } upon\n * success.\n */\n\n }, {\n key: 'trackReferral',\n value: function trackReferral(referrer, sid, clientSecret) {\n return request(this._url + '/register', {\n body: {\n referrer: referrer,\n session_id: sid,\n client_secret: clientSecret\n },\n method: 'POST'\n });\n }\n }, {\n key: 'getTeam',\n value: function getTeam(teamToken) {\n return request(this._url + '/teamConfiguration', {\n qs: {\n team_token: teamToken\n }\n });\n }\n\n /**\n * Signal to the RTS that a login has occurred and that a user requires their team's\n * token.\n * @param {string} userId the user ID of the user who is a member of a team.\n * @returns {Promise} a promise that resolves to { team_token: 'sometoken' } upon\n * success.\n */\n\n }, {\n key: 'login',\n value: function login(userId) {\n return request(this._url + '/login', {\n qs: {\n user_id: userId\n }\n });\n }\n\n // allow fetch to be replaced, for testing.\n\n }], [{\n key: 'setFetch',\n value: function setFetch(fn) {\n fetchFunction = fn;\n }\n }]);\n return RtsClient;\n}();\n\nexports.default = RtsClient;\nmodule.exports = exports['default'];\n//# sourceMappingURL=RtsClient.js.map","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n","'use strict';\n\n\nvar data = require('./data.json');\n\nfunction escapeRegexp(str) {\n return str.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n}\n\nvar REPLACE_RE = RegExp(Object.keys(data).map(escapeRegexp).join('|'), 'g');\n\nfunction replace_fn(match) {\n return data[match];\n}\n\nfunction unhomoglyph(str) {\n return str.replace(REPLACE_RE, replace_fn);\n}\n\nmodule.exports = unhomoglyph;\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _syncAccumulator = require(\"../sync-accumulator\");\n\nvar _syncAccumulator2 = _interopRequireDefault(_syncAccumulator);\n\nvar _utils = require(\"../utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar VERSION = 3; /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction createDatabase(db) {\n // Make user store, clobber based on user ID. (userId property of User objects)\n db.createObjectStore(\"users\", { keyPath: [\"userId\"] });\n\n // Make account data store, clobber based on event type.\n // (event.type property of MatrixEvent objects)\n db.createObjectStore(\"accountData\", { keyPath: [\"type\"] });\n\n // Make /sync store (sync tokens, room data, etc), always clobber (const key).\n db.createObjectStore(\"sync\", { keyPath: [\"clobber\"] });\n}\n\nfunction upgradeSchemaV2(db) {\n var oobMembersStore = db.createObjectStore(\"oob_membership_events\", {\n keyPath: [\"room_id\", \"state_key\"]\n });\n oobMembersStore.createIndex(\"room\", \"room_id\");\n}\n\nfunction upgradeSchemaV3(db) {\n db.createObjectStore(\"client_options\", { keyPath: [\"clobber\"] });\n}\n\n/**\n * Helper method to collect results from a Cursor and promiseify it.\n * @param {ObjectStore|Index} store The store to perform openCursor on.\n * @param {IDBKeyRange=} keyRange Optional key range to apply on the cursor.\n * @param {Function} resultMapper A function which is repeatedly called with a\n * Cursor.\n * Return the data you want to keep.\n * @return {Promise<T[]>} Resolves to an array of whatever you returned from\n * resultMapper.\n */\nfunction selectQuery(store, keyRange, resultMapper) {\n var query = store.openCursor(keyRange);\n return new _bluebird2.default(function (resolve, reject) {\n var results = [];\n query.onerror = function (event) {\n reject(new Error(\"Query failed: \" + event.target.errorCode));\n };\n // collect results\n query.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n resolve(results);\n return; // end of results\n }\n results.push(resultMapper(cursor));\n cursor.continue();\n };\n });\n}\n\nfunction txnAsPromise(txn) {\n return new _bluebird2.default(function (resolve, reject) {\n txn.oncomplete = function (event) {\n resolve(event);\n };\n txn.onerror = function (event) {\n reject(event.target.error);\n };\n });\n}\n\nfunction reqAsEventPromise(req) {\n return new _bluebird2.default(function (resolve, reject) {\n req.onsuccess = function (event) {\n resolve(event);\n };\n req.onerror = function (event) {\n reject(event.target.error);\n };\n });\n}\n\nfunction reqAsPromise(req) {\n return new _bluebird2.default(function (resolve, reject) {\n req.onsuccess = function () {\n return resolve(req);\n };\n req.onerror = function (err) {\n return reject(err);\n };\n });\n}\n\nfunction reqAsCursorPromise(req) {\n return reqAsEventPromise(req).then(function (event) {\n return event.target.result;\n });\n}\n\n/**\n * Does the actual reading from and writing to the indexeddb\n *\n * Construct a new Indexed Database store backend. This requires a call to\n * <code>connect()</code> before this store can be used.\n * @constructor\n * @param {Object} indexedDBInterface The Indexed DB interface e.g\n * <code>window.indexedDB</code>\n * @param {string=} dbName Optional database name. The same name must be used\n * to open the same database.\n */\nvar LocalIndexedDBStoreBackend = function LocalIndexedDBStoreBackend(indexedDBInterface, dbName) {\n this.indexedDB = indexedDBInterface;\n this._dbName = \"matrix-js-sdk:\" + (dbName || \"default\");\n this.db = null;\n this._disconnected = true;\n this._syncAccumulator = new _syncAccumulator2.default();\n this._isNewlyCreated = false;\n};\n\nLocalIndexedDBStoreBackend.prototype = {\n /**\n * Attempt to connect to the database. This can fail if the user does not\n * grant permission.\n * @return {Promise} Resolves if successfully connected.\n */\n connect: function connect() {\n var _this = this;\n\n if (!this._disconnected) {\n console.log(\"LocalIndexedDBStoreBackend.connect: already connected or connecting\");\n return _bluebird2.default.resolve();\n }\n\n this._disconnected = false;\n\n console.log(\"LocalIndexedDBStoreBackend.connect: connecting...\");\n var req = this.indexedDB.open(this._dbName, VERSION);\n req.onupgradeneeded = function (ev) {\n var db = ev.target.result;\n var oldVersion = ev.oldVersion;\n console.log(\"LocalIndexedDBStoreBackend.connect: upgrading from \" + oldVersion);\n if (oldVersion < 1) {\n // The database did not previously exist.\n _this._isNewlyCreated = true;\n createDatabase(db);\n }\n if (oldVersion < 2) {\n upgradeSchemaV2(db);\n }\n if (oldVersion < 3) {\n upgradeSchemaV3(db);\n }\n // Expand as needed.\n };\n\n req.onblocked = function () {\n console.log(\"can't yet open LocalIndexedDBStoreBackend because it is open elsewhere\");\n };\n\n console.log(\"LocalIndexedDBStoreBackend.connect: awaiting connection...\");\n return reqAsEventPromise(req).then(function (ev) {\n console.log(\"LocalIndexedDBStoreBackend.connect: connected\");\n _this.db = ev.target.result;\n\n // add a poorly-named listener for when deleteDatabase is called\n // so we can close our db connections.\n _this.db.onversionchange = function () {\n _this.db.close();\n };\n\n return _this._init();\n });\n },\n /** @return {bool} whether or not the database was newly created in this session. */\n isNewlyCreated: function isNewlyCreated() {\n return _bluebird2.default.resolve(this._isNewlyCreated);\n },\n\n /**\n * Having connected, load initial data from the database and prepare for use\n * @return {Promise} Resolves on success\n */\n _init: function _init() {\n var _this2 = this;\n\n return _bluebird2.default.all([this._loadAccountData(), this._loadSyncData()]).then(function (_ref) {\n var _ref2 = (0, _slicedToArray3.default)(_ref, 2),\n accountData = _ref2[0],\n syncData = _ref2[1];\n\n console.log(\"LocalIndexedDBStoreBackend: loaded initial data\");\n _this2._syncAccumulator.accumulate({\n next_batch: syncData.nextBatch,\n rooms: syncData.roomsData,\n groups: syncData.groupsData,\n account_data: {\n events: accountData\n }\n });\n });\n },\n\n /**\n * Returns the out-of-band membership events for this room that\n * were previously loaded.\n * @param {string} roomId\n * @returns {Promise<event[]>} the events, potentially an empty array if OOB loading didn't yield any new members\n * @returns {null} in case the members for this room haven't been stored yet\n */\n getOutOfBandMembers: function getOutOfBandMembers(roomId) {\n var _this3 = this;\n\n return new _bluebird2.default(function (resolve, reject) {\n var tx = _this3.db.transaction([\"oob_membership_events\"], \"readonly\");\n var store = tx.objectStore(\"oob_membership_events\");\n var roomIndex = store.index(\"room\");\n var range = IDBKeyRange.only(roomId);\n var request = roomIndex.openCursor(range);\n\n var membershipEvents = [];\n // did we encounter the oob_written marker object\n // amongst the results? That means OOB member\n // loading already happened for this room\n // but there were no members to persist as they\n // were all known already\n var oobWritten = false;\n\n request.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n // Unknown room\n if (!membershipEvents.length && !oobWritten) {\n return resolve(null);\n }\n return resolve(membershipEvents);\n }\n var record = cursor.value;\n if (record.oob_written) {\n oobWritten = true;\n } else {\n membershipEvents.push(record);\n }\n cursor.continue();\n };\n request.onerror = function (err) {\n reject(err);\n };\n }).then(function (events) {\n console.log(\"LL: got \" + (events && events.length) + (\" membershipEvents from storage for room \" + roomId + \" ...\"));\n return events;\n });\n },\n\n /**\n * Stores the out-of-band membership events for this room. Note that\n * it still makes sense to store an empty array as the OOB status for the room is\n * marked as fetched, and getOutOfBandMembers will return an empty array instead of null\n * @param {string} roomId\n * @param {event[]} membershipEvents the membership events to store\n */\n setOutOfBandMembers: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(roomId, membershipEvents) {\n var tx, store, markerObject;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n console.log(\"LL: backend about to store \" + membershipEvents.length + (\" members for \" + roomId));\n tx = this.db.transaction([\"oob_membership_events\"], \"readwrite\");\n store = tx.objectStore(\"oob_membership_events\");\n\n membershipEvents.forEach(function (e) {\n store.put(e);\n });\n // aside from all the events, we also write a marker object to the store\n // to mark the fact that OOB members have been written for this room.\n // It's possible that 0 members need to be written as all where previously know\n // but we still need to know whether to return null or [] from getOutOfBandMembers\n // where null means out of band members haven't been stored yet for this room\n markerObject = {\n room_id: roomId,\n oob_written: true,\n state_key: 0\n };\n\n store.put(markerObject);\n _context.next = 8;\n return (0, _bluebird.resolve)(txnAsPromise(tx));\n\n case 8:\n console.log(\"LL: backend done storing for \" + roomId + \"!\");\n\n case 9:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function setOutOfBandMembers(_x, _x2) {\n return _ref3.apply(this, arguments);\n }\n\n return setOutOfBandMembers;\n }(),\n\n clearOutOfBandMembers: function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(roomId) {\n var readTx, store, roomIndex, roomRange, minStateKeyProm, maxStateKeyProm, _ref5, _ref6, minStateKey, maxStateKey, writeTx, writeStore, membersKeyRange;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // the approach to delete all members for a room\n // is to get the min and max state key from the index\n // for that room, and then delete between those\n // keys in the store.\n // this should be way faster than deleting every member\n // individually for a large room.\n readTx = this.db.transaction([\"oob_membership_events\"], \"readonly\");\n store = readTx.objectStore(\"oob_membership_events\");\n roomIndex = store.index(\"room\");\n roomRange = IDBKeyRange.only(roomId);\n minStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, \"next\")).then(function (cursor) {\n return cursor && cursor.primaryKey[1];\n });\n maxStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, \"prev\")).then(function (cursor) {\n return cursor && cursor.primaryKey[1];\n });\n _context2.next = 8;\n return (0, _bluebird.resolve)(_bluebird2.default.all([minStateKeyProm, maxStateKeyProm]));\n\n case 8:\n _ref5 = _context2.sent;\n _ref6 = (0, _slicedToArray3.default)(_ref5, 2);\n minStateKey = _ref6[0];\n maxStateKey = _ref6[1];\n writeTx = this.db.transaction([\"oob_membership_events\"], \"readwrite\");\n writeStore = writeTx.objectStore(\"oob_membership_events\");\n membersKeyRange = IDBKeyRange.bound([roomId, minStateKey], [roomId, maxStateKey]);\n\n\n console.log(\"LL: Deleting all users + marker in storage for \" + (\"room \" + roomId + \", with key range:\"), [roomId, minStateKey], [roomId, maxStateKey]);\n _context2.next = 18;\n return (0, _bluebird.resolve)(reqAsPromise(writeStore.delete(membersKeyRange)));\n\n case 18:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function clearOutOfBandMembers(_x3) {\n return _ref4.apply(this, arguments);\n }\n\n return clearOutOfBandMembers;\n }(),\n\n /**\n * Clear the entire database. This should be used when logging out of a client\n * to prevent mixing data between accounts.\n * @return {Promise} Resolved when the database is cleared.\n */\n clearDatabase: function clearDatabase() {\n var _this4 = this;\n\n return new _bluebird2.default(function (resolve, reject) {\n console.log(\"Removing indexeddb instance: \" + _this4._dbName);\n var req = _this4.indexedDB.deleteDatabase(_this4._dbName);\n\n req.onblocked = function () {\n console.log(\"can't yet delete indexeddb \" + _this4._dbName + \" because it is open elsewhere\");\n };\n\n req.onerror = function (ev) {\n // in firefox, with indexedDB disabled, this fails with a\n // DOMError. We treat this as non-fatal, so that we can still\n // use the app.\n console.warn(\"unable to delete js-sdk store indexeddb: \" + ev.target.error);\n resolve();\n };\n\n req.onsuccess = function () {\n console.log(\"Removed indexeddb instance: \" + _this4._dbName);\n resolve();\n };\n });\n },\n\n /**\n * @param {boolean=} copy If false, the data returned is from internal\n * buffers and must not be mutated. Otherwise, a copy is made before\n * returning such that the data can be safely mutated. Default: true.\n *\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\n getSavedSync: function getSavedSync(copy) {\n if (copy === undefined) copy = true;\n\n var data = this._syncAccumulator.getJSON();\n if (!data.nextBatch) return _bluebird2.default.resolve(null);\n if (copy) {\n // We must deep copy the stored data so that the /sync processing code doesn't\n // corrupt the internal state of the sync accumulator (it adds non-clonable keys)\n return _bluebird2.default.resolve(_utils2.default.deepCopy(data));\n } else {\n return _bluebird2.default.resolve(data);\n }\n },\n\n getNextBatchToken: function getNextBatchToken() {\n return _bluebird2.default.resolve(this._syncAccumulator.getNextBatchToken());\n },\n\n setSyncData: function setSyncData(syncData) {\n var _this5 = this;\n\n return _bluebird2.default.resolve().then(function () {\n _this5._syncAccumulator.accumulate(syncData);\n });\n },\n\n syncToDatabase: function syncToDatabase(userTuples) {\n var syncData = this._syncAccumulator.getJSON();\n\n return _bluebird2.default.all([this._persistUserPresenceEvents(userTuples), this._persistAccountData(syncData.accountData), this._persistSyncData(syncData.nextBatch, syncData.roomsData, syncData.groupsData)]);\n },\n\n /**\n * Persist rooms /sync data along with the next batch token.\n * @param {string} nextBatch The next_batch /sync value.\n * @param {Object} roomsData The 'rooms' /sync data from a SyncAccumulator\n * @param {Object} groupsData The 'groups' /sync data from a SyncAccumulator\n * @return {Promise} Resolves if the data was persisted.\n */\n _persistSyncData: function _persistSyncData(nextBatch, roomsData, groupsData) {\n var _this6 = this;\n\n console.log(\"Persisting sync data up to \", nextBatch);\n return _bluebird2.default.try(function () {\n var txn = _this6.db.transaction([\"sync\"], \"readwrite\");\n var store = txn.objectStore(\"sync\");\n store.put({\n clobber: \"-\", // constant key so will always clobber\n nextBatch: nextBatch,\n roomsData: roomsData,\n groupsData: groupsData\n }); // put == UPSERT\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Persist a list of account data events. Events with the same 'type' will\n * be replaced.\n * @param {Object[]} accountData An array of raw user-scoped account data events\n * @return {Promise} Resolves if the events were persisted.\n */\n _persistAccountData: function _persistAccountData(accountData) {\n var _this7 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this7.db.transaction([\"accountData\"], \"readwrite\");\n var store = txn.objectStore(\"accountData\");\n for (var i = 0; i < accountData.length; i++) {\n store.put(accountData[i]); // put == UPSERT\n }\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Persist a list of [user id, presence event] they are for.\n * Users with the same 'userId' will be replaced.\n * Presence events should be the event in its raw form (not the Event\n * object)\n * @param {Object[]} tuples An array of [userid, event] tuples\n * @return {Promise} Resolves if the users were persisted.\n */\n _persistUserPresenceEvents: function _persistUserPresenceEvents(tuples) {\n var _this8 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this8.db.transaction([\"users\"], \"readwrite\");\n var store = txn.objectStore(\"users\");\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(tuples), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var tuple = _step.value;\n\n store.put({\n userId: tuple[0],\n event: tuple[1]\n }); // put == UPSERT\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Load all user presence events from the database. This is not cached.\n * FIXME: It would probably be more sensible to store the events in the\n * sync.\n * @return {Promise<Object[]>} A list of presence events in their raw form.\n */\n getUserPresenceEvents: function getUserPresenceEvents() {\n var _this9 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this9.db.transaction([\"users\"], \"readonly\");\n var store = txn.objectStore(\"users\");\n return selectQuery(store, undefined, function (cursor) {\n return [cursor.value.userId, cursor.value.event];\n });\n });\n },\n\n /**\n * Load all the account data events from the database. This is not cached.\n * @return {Promise<Object[]>} A list of raw global account events.\n */\n _loadAccountData: function _loadAccountData() {\n var _this10 = this;\n\n console.log(\"LocalIndexedDBStoreBackend: loading account data...\");\n return _bluebird2.default.try(function () {\n var txn = _this10.db.transaction([\"accountData\"], \"readonly\");\n var store = txn.objectStore(\"accountData\");\n return selectQuery(store, undefined, function (cursor) {\n return cursor.value;\n }).then(function (result) {\n console.log(\"LocalIndexedDBStoreBackend: loaded account data\");\n return result;\n });\n });\n },\n\n /**\n * Load the sync data from the database.\n * @return {Promise<Object>} An object with \"roomsData\" and \"nextBatch\" keys.\n */\n _loadSyncData: function _loadSyncData() {\n var _this11 = this;\n\n console.log(\"LocalIndexedDBStoreBackend: loading sync data...\");\n return _bluebird2.default.try(function () {\n var txn = _this11.db.transaction([\"sync\"], \"readonly\");\n var store = txn.objectStore(\"sync\");\n return selectQuery(store, undefined, function (cursor) {\n return cursor.value;\n }).then(function (results) {\n console.log(\"LocalIndexedDBStoreBackend: loaded sync data\");\n if (results.length > 1) {\n console.warn(\"loadSyncData: More than 1 sync row found.\");\n }\n return results.length > 0 ? results[0] : {};\n });\n });\n },\n\n getClientOptions: function getClientOptions() {\n var _this12 = this;\n\n return _bluebird2.default.resolve().then(function () {\n var txn = _this12.db.transaction([\"client_options\"], \"readonly\");\n var store = txn.objectStore(\"client_options\");\n return selectQuery(store, undefined, function (cursor) {\n if (cursor.value && cursor.value && cursor.value.options) {\n return cursor.value.options;\n }\n }).then(function (results) {\n return results[0];\n });\n });\n },\n\n storeClientOptions: function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(options) {\n var txn, store;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n txn = this.db.transaction([\"client_options\"], \"readwrite\");\n store = txn.objectStore(\"client_options\");\n\n store.put({\n clobber: \"-\", // constant key so will always clobber\n options: options\n }); // put == UPSERT\n _context3.next = 5;\n return (0, _bluebird.resolve)(txnAsPromise(txn));\n\n case 5:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function storeClientOptions(_x4) {\n return _ref7.apply(this, arguments);\n }\n\n return storeClientOptions;\n }()\n};\n\nexports.default = LocalIndexedDBStoreBackend;\n//# sourceMappingURL=indexeddb-local-backend.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _create = require(\"babel-runtime/core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/reflect/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _setPrototypeOf = require(\"babel-runtime/core-js/reflect/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _construct = require(\"babel-runtime/core-js/reflect/construct\");\n\nvar _construct2 = _interopRequireDefault(_construct);\n\nexports.InvalidStoreError = InvalidStoreError;\nexports.InvalidCryptoStoreError = InvalidCryptoStoreError;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// can't just do InvalidStoreError extends Error\n// because of http://babeljs.io/docs/usage/caveats/#classes\nfunction InvalidStoreError(reason, value) {\n var message = \"Store is invalid because \" + reason + \", \" + \"please stop the client, delete all data and start the client again\";\n var instance = (0, _construct2.default)(Error, [message]);\n (0, _setPrototypeOf2.default)(instance, (0, _getPrototypeOf2.default)(this));\n instance.reason = reason;\n instance.value = value;\n return instance;\n}\n\nInvalidStoreError.TOGGLED_LAZY_LOADING = \"TOGGLED_LAZY_LOADING\";\n\nInvalidStoreError.prototype = (0, _create2.default)(Error.prototype, {\n constructor: {\n value: Error,\n enumerable: false,\n writable: true,\n configurable: true\n }\n});\n(0, _setPrototypeOf2.default)(InvalidStoreError, Error);\n\nfunction InvalidCryptoStoreError(reason) {\n var message = \"Crypto store is invalid because \" + reason + \", \" + \"please stop the client, delete all data and start the client again\";\n var instance = (0, _construct2.default)(Error, [message]);\n (0, _setPrototypeOf2.default)(instance, (0, _getPrototypeOf2.default)(this));\n instance.reason = reason;\n instance.name = 'InvalidCryptoStoreError';\n return instance;\n}\n\nInvalidCryptoStoreError.TOO_NEW = \"TOO_NEW\";\n\nInvalidCryptoStoreError.prototype = (0, _create2.default)(Error.prototype, {\n constructor: {\n value: Error,\n enumerable: false,\n writable: true,\n configurable: true\n }\n});\n(0, _setPrototypeOf2.default)(InvalidCryptoStoreError, Error);\n//# sourceMappingURL=errors.js.map","var hide = require('./_hide');\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _logger = require('../../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _utils = require('../../utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Internal module. in-memory storage for e2e.\n *\n * @module\n */\n\n/**\n * @implements {module:crypto/store/base~CryptoStore}\n */\nvar MemoryCryptoStore = function () {\n function MemoryCryptoStore() {\n (0, _classCallCheck3.default)(this, MemoryCryptoStore);\n\n this._outgoingRoomKeyRequests = [];\n this._account = null;\n\n // Map of {devicekey -> {sessionId -> session pickle}}\n this._sessions = {};\n // Map of {senderCurve25519Key+'/'+sessionId -> session data object}\n this._inboundGroupSessions = {};\n // Opaque device data object\n this._deviceData = null;\n // roomId -> Opaque roomInfo object\n this._rooms = {};\n // Set of {senderCurve25519Key+'/'+sessionId}\n this._sessionsNeedingBackup = {};\n }\n\n /**\n * Delete all data from this store.\n *\n * @returns {Promise} Promise which resolves when the store has been cleared.\n */\n\n\n (0, _createClass3.default)(MemoryCryptoStore, [{\n key: 'deleteAllData',\n value: function deleteAllData() {\n return _bluebird2.default.resolve();\n }\n\n /**\n * Look for an existing outgoing room key request, and if none is found,\n * add a new one\n *\n * @param {module:crypto/store/base~OutgoingRoomKeyRequest} request\n *\n * @returns {Promise} resolves to\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}: either the\n * same instance as passed in, or the existing one.\n */\n\n }, {\n key: 'getOrAddOutgoingRoomKeyRequest',\n value: function getOrAddOutgoingRoomKeyRequest(request) {\n var _this = this;\n\n var requestBody = request.requestBody;\n\n return _bluebird2.default.try(function () {\n // first see if we already have an entry for this request.\n var existing = _this._getOutgoingRoomKeyRequest(requestBody);\n\n if (existing) {\n // this entry matches the request - return it.\n _logger2.default.log('already have key request outstanding for ' + (requestBody.room_id + ' / ' + requestBody.session_id + ': ') + 'not sending another');\n return existing;\n }\n\n // we got to the end of the list without finding a match\n // - add the new request.\n _logger2.default.log('enqueueing key request for ' + requestBody.room_id + ' / ' + requestBody.session_id);\n _this._outgoingRoomKeyRequests.push(request);\n return request;\n });\n }\n\n /**\n * Look for an existing room key request\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * existing request to look for\n *\n * @return {Promise} resolves to the matching\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * not found\n */\n\n }, {\n key: 'getOutgoingRoomKeyRequest',\n value: function getOutgoingRoomKeyRequest(requestBody) {\n return _bluebird2.default.resolve(this._getOutgoingRoomKeyRequest(requestBody));\n }\n\n /**\n * Looks for existing room key request, and returns the result synchronously.\n *\n * @internal\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * existing request to look for\n *\n * @return {module:crypto/store/base~OutgoingRoomKeyRequest?}\n * the matching request, or null if not found\n */\n\n }, {\n key: '_getOutgoingRoomKeyRequest',\n value: function _getOutgoingRoomKeyRequest(requestBody) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this._outgoingRoomKeyRequests), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var existing = _step.value;\n\n if (_utils2.default.deepCompare(existing.requestBody, requestBody)) {\n return existing;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Look for room key requests by state\n *\n * @param {Array<Number>} wantedStates list of acceptable states\n *\n * @return {Promise} resolves to the a\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * there are no pending requests in those states\n */\n\n }, {\n key: 'getOutgoingRoomKeyRequestByState',\n value: function getOutgoingRoomKeyRequestByState(wantedStates) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(this._outgoingRoomKeyRequests), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var req = _step2.value;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(wantedStates), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var state = _step3.value;\n\n if (req.state === state) {\n return _bluebird2.default.resolve(req);\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return _bluebird2.default.resolve(null);\n }\n }, {\n key: 'getOutgoingRoomKeyRequestsByTarget',\n value: function getOutgoingRoomKeyRequestsByTarget(userId, deviceId, wantedStates) {\n var results = [];\n\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)(this._outgoingRoomKeyRequests), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var req = _step4.value;\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = (0, _getIterator3.default)(wantedStates), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var state = _step5.value;\n\n if (req.state === state && req.recipients.includes({ userId: userId, deviceId: deviceId })) {\n results.push(req);\n }\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n return _bluebird2.default.resolve(results);\n }\n\n /**\n * Look for an existing room key request by id and state, and update it if\n * found\n *\n * @param {string} requestId ID of request to update\n * @param {number} expectedState state we expect to find the request in\n * @param {Object} updates name/value map of updates to apply\n *\n * @returns {Promise} resolves to\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}\n * updated request, or null if no matching row was found\n */\n\n }, {\n key: 'updateOutgoingRoomKeyRequest',\n value: function updateOutgoingRoomKeyRequest(requestId, expectedState, updates) {\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = (0, _getIterator3.default)(this._outgoingRoomKeyRequests), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var req = _step6.value;\n\n if (req.requestId !== requestId) {\n continue;\n }\n\n if (req.state != expectedState) {\n _logger2.default.warn('Cannot update room key request from ' + expectedState + ' ' + ('as it was already updated to ' + req.state));\n return _bluebird2.default.resolve(null);\n }\n (0, _assign2.default)(req, updates);\n return _bluebird2.default.resolve(req);\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n\n return _bluebird2.default.resolve(null);\n }\n\n /**\n * Look for an existing room key request by id and state, and delete it if\n * found\n *\n * @param {string} requestId ID of request to update\n * @param {number} expectedState state we expect to find the request in\n *\n * @returns {Promise} resolves once the operation is completed\n */\n\n }, {\n key: 'deleteOutgoingRoomKeyRequest',\n value: function deleteOutgoingRoomKeyRequest(requestId, expectedState) {\n for (var i = 0; i < this._outgoingRoomKeyRequests.length; i++) {\n var req = this._outgoingRoomKeyRequests[i];\n\n if (req.requestId !== requestId) {\n continue;\n }\n\n if (req.state != expectedState) {\n _logger2.default.warn('Cannot delete room key request in state ' + req.state + ' ' + ('(expected ' + expectedState + ')'));\n return _bluebird2.default.resolve(null);\n }\n\n this._outgoingRoomKeyRequests.splice(i, 1);\n return _bluebird2.default.resolve(req);\n }\n\n return _bluebird2.default.resolve(null);\n }\n\n // Olm Account\n\n }, {\n key: 'getAccount',\n value: function getAccount(txn, func) {\n func(this._account);\n }\n }, {\n key: 'storeAccount',\n value: function storeAccount(txn, newData) {\n this._account = newData;\n }\n\n // Olm Sessions\n\n }, {\n key: 'countEndToEndSessions',\n value: function countEndToEndSessions(txn, func) {\n return (0, _keys2.default)(this._sessions).length;\n }\n }, {\n key: 'getEndToEndSession',\n value: function getEndToEndSession(deviceKey, sessionId, txn, func) {\n var deviceSessions = this._sessions[deviceKey] || {};\n func(deviceSessions[sessionId] || null);\n }\n }, {\n key: 'getEndToEndSessions',\n value: function getEndToEndSessions(deviceKey, txn, func) {\n func(this._sessions[deviceKey] || {});\n }\n }, {\n key: 'getAllEndToEndSessions',\n value: function getAllEndToEndSessions(txn, func) {\n var _iteratorNormalCompletion7 = true;\n var _didIteratorError7 = false;\n var _iteratorError7 = undefined;\n\n try {\n for (var _iterator7 = (0, _getIterator3.default)((0, _values2.default)(this._sessions)), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n var deviceSessions = _step7.value;\n var _iteratorNormalCompletion8 = true;\n var _didIteratorError8 = false;\n var _iteratorError8 = undefined;\n\n try {\n for (var _iterator8 = (0, _getIterator3.default)((0, _values2.default)(deviceSessions)), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {\n var sess = _step8.value;\n\n func(sess);\n }\n } catch (err) {\n _didIteratorError8 = true;\n _iteratorError8 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion8 && _iterator8.return) {\n _iterator8.return();\n }\n } finally {\n if (_didIteratorError8) {\n throw _iteratorError8;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError7 = true;\n _iteratorError7 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion7 && _iterator7.return) {\n _iterator7.return();\n }\n } finally {\n if (_didIteratorError7) {\n throw _iteratorError7;\n }\n }\n }\n }\n }, {\n key: 'storeEndToEndSession',\n value: function storeEndToEndSession(deviceKey, sessionId, sessionInfo, txn) {\n var deviceSessions = this._sessions[deviceKey];\n if (deviceSessions === undefined) {\n deviceSessions = {};\n this._sessions[deviceKey] = deviceSessions;\n }\n deviceSessions[sessionId] = sessionInfo;\n }\n\n // Inbound Group Sessions\n\n }, {\n key: 'getEndToEndInboundGroupSession',\n value: function getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func) {\n func(this._inboundGroupSessions[senderCurve25519Key + '/' + sessionId] || null);\n }\n }, {\n key: 'getAllEndToEndInboundGroupSessions',\n value: function getAllEndToEndInboundGroupSessions(txn, func) {\n var _iteratorNormalCompletion9 = true;\n var _didIteratorError9 = false;\n var _iteratorError9 = undefined;\n\n try {\n for (var _iterator9 = (0, _getIterator3.default)((0, _keys2.default)(this._inboundGroupSessions)), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {\n var key = _step9.value;\n\n // we can't use split, as the components we are trying to split out\n // might themselves contain '/' characters. We rely on the\n // senderKey being a (32-byte) curve25519 key, base64-encoded\n // (hence 43 characters long).\n\n func({\n senderKey: key.substr(0, 43),\n sessionId: key.substr(44),\n sessionData: this._inboundGroupSessions[key]\n });\n }\n } catch (err) {\n _didIteratorError9 = true;\n _iteratorError9 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion9 && _iterator9.return) {\n _iterator9.return();\n }\n } finally {\n if (_didIteratorError9) {\n throw _iteratorError9;\n }\n }\n }\n\n func(null);\n }\n }, {\n key: 'addEndToEndInboundGroupSession',\n value: function addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n var k = senderCurve25519Key + '/' + sessionId;\n if (this._inboundGroupSessions[k] === undefined) {\n this._inboundGroupSessions[k] = sessionData;\n }\n }\n }, {\n key: 'storeEndToEndInboundGroupSession',\n value: function storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n this._inboundGroupSessions[senderCurve25519Key + '/' + sessionId] = sessionData;\n }\n\n // Device Data\n\n }, {\n key: 'getEndToEndDeviceData',\n value: function getEndToEndDeviceData(txn, func) {\n func(this._deviceData);\n }\n }, {\n key: 'storeEndToEndDeviceData',\n value: function storeEndToEndDeviceData(deviceData, txn) {\n this._deviceData = deviceData;\n }\n\n // E2E rooms\n\n }, {\n key: 'storeEndToEndRoom',\n value: function storeEndToEndRoom(roomId, roomInfo, txn) {\n this._rooms[roomId] = roomInfo;\n }\n }, {\n key: 'getEndToEndRooms',\n value: function getEndToEndRooms(txn, func) {\n func(this._rooms);\n }\n }, {\n key: 'getSessionsNeedingBackup',\n value: function getSessionsNeedingBackup(limit) {\n var sessions = [];\n for (var session in this._sessionsNeedingBackup) {\n if (this._inboundGroupSessions[session]) {\n sessions.push({\n senderKey: session.substr(0, 43),\n sessionId: session.substr(44),\n sessionData: this._inboundGroupSessions[session]\n });\n if (limit && session.length >= limit) {\n break;\n }\n }\n }\n return _bluebird2.default.resolve(sessions);\n }\n }, {\n key: 'unmarkSessionsNeedingBackup',\n value: function unmarkSessionsNeedingBackup(sessions) {\n var _iteratorNormalCompletion10 = true;\n var _didIteratorError10 = false;\n var _iteratorError10 = undefined;\n\n try {\n for (var _iterator10 = (0, _getIterator3.default)(sessions), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {\n var session = _step10.value;\n\n var sessionKey = session.senderKey + '/' + session.sessionId;\n delete this._sessionsNeedingBackup[sessionKey];\n }\n } catch (err) {\n _didIteratorError10 = true;\n _iteratorError10 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion10 && _iterator10.return) {\n _iterator10.return();\n }\n } finally {\n if (_didIteratorError10) {\n throw _iteratorError10;\n }\n }\n }\n\n return _bluebird2.default.resolve();\n }\n }, {\n key: 'markSessionsNeedingBackup',\n value: function markSessionsNeedingBackup(sessions) {\n var _iteratorNormalCompletion11 = true;\n var _didIteratorError11 = false;\n var _iteratorError11 = undefined;\n\n try {\n for (var _iterator11 = (0, _getIterator3.default)(sessions), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {\n var session = _step11.value;\n\n var sessionKey = session.senderKey + '/' + session.sessionId;\n this._sessionsNeedingBackup[sessionKey] = true;\n }\n } catch (err) {\n _didIteratorError11 = true;\n _iteratorError11 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion11 && _iterator11.return) {\n _iterator11.return();\n }\n } finally {\n if (_didIteratorError11) {\n throw _iteratorError11;\n }\n }\n }\n\n return _bluebird2.default.resolve();\n }\n\n // Session key backups\n\n }, {\n key: 'doTxn',\n value: function doTxn(mode, stores, func) {\n return _bluebird2.default.resolve(func(null));\n }\n }]);\n return MemoryCryptoStore;\n}(); /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = MemoryCryptoStore;\n//# sourceMappingURL=memory-crypto-store.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UnknownDeviceError = exports.DecryptionError = exports.DecryptionAlgorithm = exports.EncryptionAlgorithm = exports.DECRYPTION_CLASSES = exports.ENCRYPTION_CLASSES = undefined;\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.registerAlgorithm = registerAlgorithm;\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * map of registered encryption algorithm classes. A map from string to {@link\n * module:crypto/algorithms/base.EncryptionAlgorithm|EncryptionAlgorithm} class\n *\n * @type {Object.<string, function(new: module:crypto/algorithms/base.EncryptionAlgorithm)>}\n */\nvar ENCRYPTION_CLASSES = exports.ENCRYPTION_CLASSES = {};\n\n/**\n * map of registered encryption algorithm classes. Map from string to {@link\n * module:crypto/algorithms/base.DecryptionAlgorithm|DecryptionAlgorithm} class\n *\n * @type {Object.<string, function(new: module:crypto/algorithms/base.DecryptionAlgorithm)>}\n */\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Internal module. Defines the base classes of the encryption implementations\n *\n * @module\n */\n\nvar DECRYPTION_CLASSES = exports.DECRYPTION_CLASSES = {};\n\n/**\n * base type for encryption implementations\n *\n * @alias module:crypto/algorithms/base.EncryptionAlgorithm\n *\n * @param {object} params parameters\n * @param {string} params.userId The UserID for the local user\n * @param {string} params.deviceId The identifier for this device.\n * @param {module:crypto} params.crypto crypto core\n * @param {module:crypto/OlmDevice} params.olmDevice olm.js wrapper\n * @param {module:base-apis~MatrixBaseApis} baseApis base matrix api interface\n * @param {string} params.roomId The ID of the room we will be sending to\n * @param {object} params.config The body of the m.room.encryption event\n */\n\nvar EncryptionAlgorithm = function () {\n function EncryptionAlgorithm(params) {\n (0, _classCallCheck3.default)(this, EncryptionAlgorithm);\n\n this._userId = params.userId;\n this._deviceId = params.deviceId;\n this._crypto = params.crypto;\n this._olmDevice = params.olmDevice;\n this._baseApis = params.baseApis;\n this._roomId = params.roomId;\n }\n\n /**\n * Encrypt a message event\n *\n * @method module:crypto/algorithms/base.EncryptionAlgorithm.encryptMessage\n * @abstract\n *\n * @param {module:models/room} room\n * @param {string} eventType\n * @param {object} plaintext event content\n *\n * @return {module:client.Promise} Promise which resolves to the new event body\n */\n\n /**\n * Called when the membership of a member of the room changes.\n *\n * @param {module:models/event.MatrixEvent} event event causing the change\n * @param {module:models/room-member} member user whose membership changed\n * @param {string=} oldMembership previous membership\n * @public\n */\n\n\n (0, _createClass3.default)(EncryptionAlgorithm, [{\n key: 'onRoomMembership',\n value: function onRoomMembership(event, member, oldMembership) {}\n }]);\n return EncryptionAlgorithm;\n}();\n\nexports.EncryptionAlgorithm = EncryptionAlgorithm; // https://github.com/jsdoc3/jsdoc/issues/1272\n\n/**\n * base type for decryption implementations\n *\n * @alias module:crypto/algorithms/base.DecryptionAlgorithm\n * @param {object} params parameters\n * @param {string} params.userId The UserID for the local user\n * @param {module:crypto} params.crypto crypto core\n * @param {module:crypto/OlmDevice} params.olmDevice olm.js wrapper\n * @param {module:base-apis~MatrixBaseApis} baseApis base matrix api interface\n * @param {string=} params.roomId The ID of the room we will be receiving\n * from. Null for to-device events.\n */\n\nvar DecryptionAlgorithm = function () {\n function DecryptionAlgorithm(params) {\n (0, _classCallCheck3.default)(this, DecryptionAlgorithm);\n\n this._userId = params.userId;\n this._crypto = params.crypto;\n this._olmDevice = params.olmDevice;\n this._baseApis = params.baseApis;\n this._roomId = params.roomId;\n }\n\n /**\n * Decrypt an event\n *\n * @method module:crypto/algorithms/base.DecryptionAlgorithm#decryptEvent\n * @abstract\n *\n * @param {MatrixEvent} event undecrypted event\n *\n * @return {Promise<module:crypto~EventDecryptionResult>} promise which\n * resolves once we have finished decrypting. Rejects with an\n * `algorithms.DecryptionError` if there is a problem decrypting the event.\n */\n\n /**\n * Handle a key event\n *\n * @method module:crypto/algorithms/base.DecryptionAlgorithm#onRoomKeyEvent\n *\n * @param {module:models/event.MatrixEvent} params event key event\n */\n\n\n (0, _createClass3.default)(DecryptionAlgorithm, [{\n key: 'onRoomKeyEvent',\n value: function onRoomKeyEvent(params) {}\n // ignore by default\n\n\n /**\n * Import a room key\n *\n * @param {module:crypto/OlmDevice.MegolmSessionData} session\n */\n\n }, {\n key: 'importRoomKey',\n value: function importRoomKey(session) {}\n // ignore by default\n\n\n /**\n * Determine if we have the keys necessary to respond to a room key request\n *\n * @param {module:crypto~IncomingRoomKeyRequest} keyRequest\n * @return {Promise<boolean>} true if we have the keys and could (theoretically) share\n * them; else false.\n */\n\n }, {\n key: 'hasKeysForKeyRequest',\n value: function hasKeysForKeyRequest(keyRequest) {\n return _bluebird2.default.resolve(false);\n }\n\n /**\n * Send the response to a room key request\n *\n * @param {module:crypto~IncomingRoomKeyRequest} keyRequest\n */\n\n }, {\n key: 'shareKeysWithDevice',\n value: function shareKeysWithDevice(keyRequest) {\n throw new Error(\"shareKeysWithDevice not supported for this DecryptionAlgorithm\");\n }\n }]);\n return DecryptionAlgorithm;\n}();\n\nexports.DecryptionAlgorithm = DecryptionAlgorithm; // https://github.com/jsdoc3/jsdoc/issues/1272\n\n/**\n * Exception thrown when decryption fails\n *\n * @alias module:crypto/algorithms/base.DecryptionError\n * @param {string} msg user-visible message describing the problem\n *\n * @param {Object=} details key/value pairs reported in the logs but not shown\n * to the user.\n *\n * @extends Error\n */\n\nvar DecryptionError = function (_Error) {\n (0, _inherits3.default)(DecryptionError, _Error);\n\n function DecryptionError(code, msg, details) {\n (0, _classCallCheck3.default)(this, DecryptionError);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DecryptionError.__proto__ || (0, _getPrototypeOf2.default)(DecryptionError)).call(this, msg));\n\n _this.code = code;\n _this.name = 'DecryptionError';\n _this.detailedString = _detailedStringForDecryptionError(_this, details);\n return _this;\n }\n\n return DecryptionError;\n}(Error);\n\nexports.DecryptionError = DecryptionError; // https://github.com/jsdoc3/jsdoc/issues/1272\n\nfunction _detailedStringForDecryptionError(err, details) {\n var result = err.name + '[msg: ' + err.message;\n\n if (details) {\n result += ', ' + (0, _keys2.default)(details).map(function (k) {\n return k + ': ' + details[k];\n }).join(', ');\n }\n\n result += ']';\n\n return result;\n}\n\n/**\n * Exception thrown specifically when we want to warn the user to consider\n * the security of their conversation before continuing\n *\n * @param {string} msg message describing the problem\n * @param {Object} devices userId -> {deviceId -> object}\n * set of unknown devices per user we're warning about\n * @extends Error\n */\n\nvar UnknownDeviceError = exports.UnknownDeviceError = function (_Error2) {\n (0, _inherits3.default)(UnknownDeviceError, _Error2);\n\n function UnknownDeviceError(msg, devices) {\n (0, _classCallCheck3.default)(this, UnknownDeviceError);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (UnknownDeviceError.__proto__ || (0, _getPrototypeOf2.default)(UnknownDeviceError)).call(this, msg));\n\n _this2.name = \"UnknownDeviceError\";\n _this2.devices = devices;\n return _this2;\n }\n\n return UnknownDeviceError;\n}(Error);\n\n/**\n * Registers an encryption/decryption class for a particular algorithm\n *\n * @param {string} algorithm algorithm tag to register for\n *\n * @param {class} encryptor {@link\n * module:crypto/algorithms/base.EncryptionAlgorithm|EncryptionAlgorithm}\n * implementation\n *\n * @param {class} decryptor {@link\n * module:crypto/algorithms/base.DecryptionAlgorithm|DecryptionAlgorithm}\n * implementation\n */\n\n\nfunction registerAlgorithm(algorithm, encryptor, decryptor) {\n ENCRYPTION_CLASSES[algorithm] = encryptor;\n DECRYPTION_CLASSES[algorithm] = decryptor;\n}\n//# sourceMappingURL=base.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module crypto/deviceinfo\n */\n\n/**\n * Information about a user's device\n *\n * @constructor\n * @alias module:crypto/deviceinfo\n *\n * @property {string} deviceId the ID of this device\n *\n * @property {string[]} algorithms list of algorithms supported by this device\n *\n * @property {Object.<string,string>} keys a map from\n * <key type>:<id> -> <base64-encoded key>>\n *\n * @property {module:crypto/deviceinfo.DeviceVerification} verified\n * whether the device has been verified/blocked by the user\n *\n * @property {boolean} known\n * whether the user knows of this device's existence (useful when warning\n * the user that a user has added new devices)\n *\n * @property {Object} unsigned additional data from the homeserver\n *\n * @param {string} deviceId id of the device\n */\n\nfunction DeviceInfo(deviceId) {\n // you can't change the deviceId\n Object.defineProperty(this, 'deviceId', {\n enumerable: true,\n value: deviceId\n });\n\n this.algorithms = [];\n this.keys = {};\n this.verified = DeviceVerification.UNVERIFIED;\n this.known = false;\n this.unsigned = {};\n}\n\n/**\n * rehydrate a DeviceInfo from the session store\n *\n * @param {object} obj raw object from session store\n * @param {string} deviceId id of the device\n *\n * @return {module:crypto~DeviceInfo} new DeviceInfo\n */\nDeviceInfo.fromStorage = function (obj, deviceId) {\n var res = new DeviceInfo(deviceId);\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n res[prop] = obj[prop];\n }\n }\n return res;\n};\n\n/**\n * Prepare a DeviceInfo for JSON serialisation in the session store\n *\n * @return {object} deviceinfo with non-serialised members removed\n */\nDeviceInfo.prototype.toStorage = function () {\n return {\n algorithms: this.algorithms,\n keys: this.keys,\n verified: this.verified,\n known: this.known,\n unsigned: this.unsigned\n };\n};\n\n/**\n * Get the fingerprint for this device (ie, the Ed25519 key)\n *\n * @return {string} base64-encoded fingerprint of this device\n */\nDeviceInfo.prototype.getFingerprint = function () {\n return this.keys[\"ed25519:\" + this.deviceId];\n};\n\n/**\n * Get the identity key for this device (ie, the Curve25519 key)\n *\n * @return {string} base64-encoded identity key of this device\n */\nDeviceInfo.prototype.getIdentityKey = function () {\n return this.keys[\"curve25519:\" + this.deviceId];\n};\n\n/**\n * Get the configured display name for this device, if any\n *\n * @return {string?} displayname\n */\nDeviceInfo.prototype.getDisplayName = function () {\n return this.unsigned.device_display_name || null;\n};\n\n/**\n * Returns true if this device is blocked\n *\n * @return {Boolean} true if blocked\n */\nDeviceInfo.prototype.isBlocked = function () {\n return this.verified == DeviceVerification.BLOCKED;\n};\n\n/**\n * Returns true if this device is verified\n *\n * @return {Boolean} true if verified\n */\nDeviceInfo.prototype.isVerified = function () {\n return this.verified == DeviceVerification.VERIFIED;\n};\n\n/**\n * Returns true if this device is unverified\n *\n * @return {Boolean} true if unverified\n */\nDeviceInfo.prototype.isUnverified = function () {\n return this.verified == DeviceVerification.UNVERIFIED;\n};\n\n/**\n * Returns true if the user knows about this device's existence\n *\n * @return {Boolean} true if known\n */\nDeviceInfo.prototype.isKnown = function () {\n return this.known == true;\n};\n\n/**\n * @enum\n */\nDeviceInfo.DeviceVerification = {\n VERIFIED: 1,\n UNVERIFIED: 0,\n BLOCKED: -1\n};\n\nvar DeviceVerification = DeviceInfo.DeviceVerification;\n\n/** */\nmodule.exports = DeviceInfo;\n//# sourceMappingURL=deviceinfo.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/room-member\n */\n\nvar EventEmitter = require(\"events\").EventEmitter;\nvar ContentRepo = require(\"../content-repo\");\n\nvar utils = require(\"../utils\");\n\n/**\n * Construct a new room member.\n *\n * @constructor\n * @alias module:models/room-member\n *\n * @param {string} roomId The room ID of the member.\n * @param {string} userId The user ID of the member.\n * @prop {string} roomId The room ID for this member.\n * @prop {string} userId The user ID of this member.\n * @prop {boolean} typing True if the room member is currently typing.\n * @prop {string} name The human-readable name for this room member. This will be\n * disambiguated with a suffix of \" (@user_id:matrix.org)\" if another member shares the\n * same displayname.\n * @prop {string} rawDisplayName The ambiguous displayname of this room member.\n * @prop {Number} powerLevel The power level for this room member.\n * @prop {Number} powerLevelNorm The normalised power level (0-100) for this\n * room member.\n * @prop {User} user The User object for this room member, if one exists.\n * @prop {string} membership The membership state for this room member e.g. 'join'.\n * @prop {Object} events The events describing this RoomMember.\n * @prop {MatrixEvent} events.member The m.room.member event for this RoomMember.\n */\nfunction RoomMember(roomId, userId) {\n this.roomId = roomId;\n this.userId = userId;\n this.typing = false;\n this.name = userId;\n this.rawDisplayName = userId;\n this.powerLevel = 0;\n this.powerLevelNorm = 0;\n this.user = null;\n this.membership = null;\n this.events = {\n member: null\n };\n this._isOutOfBand = false;\n this._updateModifiedTime();\n}\nutils.inherits(RoomMember, EventEmitter);\n\n/**\n * Mark the member as coming from a channel that is not sync\n */\nRoomMember.prototype.markOutOfBand = function () {\n this._isOutOfBand = true;\n};\n\n/**\n * @return {bool} does the member come from a channel that is not sync?\n * This is used to store the member seperately\n * from the sync state so it available across browser sessions.\n */\nRoomMember.prototype.isOutOfBand = function () {\n return this._isOutOfBand;\n};\n\n/**\n * Update this room member's membership event. May fire \"RoomMember.name\" if\n * this event updates this member's name.\n * @param {MatrixEvent} event The <code>m.room.member</code> event\n * @param {RoomState} roomState Optional. The room state to take into account\n * when calculating (e.g. for disambiguating users with the same name).\n * @fires module:client~MatrixClient#event:\"RoomMember.name\"\n * @fires module:client~MatrixClient#event:\"RoomMember.membership\"\n */\nRoomMember.prototype.setMembershipEvent = function (event, roomState) {\n if (event.getType() !== \"m.room.member\") {\n return;\n }\n\n this._isOutOfBand = false;\n\n this.events.member = event;\n\n var oldMembership = this.membership;\n this.membership = event.getDirectionalContent().membership;\n\n var oldName = this.name;\n this.name = calculateDisplayName(this.userId, event.getDirectionalContent().displayname, roomState);\n\n this.rawDisplayName = event.getDirectionalContent().displayname || this.userId;\n if (oldMembership !== this.membership) {\n this._updateModifiedTime();\n this.emit(\"RoomMember.membership\", event, this, oldMembership);\n }\n if (oldName !== this.name) {\n this._updateModifiedTime();\n this.emit(\"RoomMember.name\", event, this, oldName);\n }\n};\n\n/**\n * Update this room member's power level event. May fire\n * \"RoomMember.powerLevel\" if this event updates this member's power levels.\n * @param {MatrixEvent} powerLevelEvent The <code>m.room.power_levels</code>\n * event\n * @fires module:client~MatrixClient#event:\"RoomMember.powerLevel\"\n */\nRoomMember.prototype.setPowerLevelEvent = function (powerLevelEvent) {\n if (powerLevelEvent.getType() !== \"m.room.power_levels\") {\n return;\n }\n\n var evContent = powerLevelEvent.getDirectionalContent();\n\n var maxLevel = evContent.users_default || 0;\n utils.forEach(utils.values(evContent.users), function (lvl) {\n maxLevel = Math.max(maxLevel, lvl);\n });\n var oldPowerLevel = this.powerLevel;\n var oldPowerLevelNorm = this.powerLevelNorm;\n\n if (evContent.users && evContent.users[this.userId] !== undefined) {\n this.powerLevel = evContent.users[this.userId];\n } else if (evContent.users_default !== undefined) {\n this.powerLevel = evContent.users_default;\n } else {\n this.powerLevel = 0;\n }\n this.powerLevelNorm = 0;\n if (maxLevel > 0) {\n this.powerLevelNorm = this.powerLevel * 100 / maxLevel;\n }\n\n // emit for changes in powerLevelNorm as well (since the app will need to\n // redraw everyone's level if the max has changed)\n if (oldPowerLevel !== this.powerLevel || oldPowerLevelNorm !== this.powerLevelNorm) {\n this._updateModifiedTime();\n this.emit(\"RoomMember.powerLevel\", powerLevelEvent, this);\n }\n};\n\n/**\n * Update this room member's typing event. May fire \"RoomMember.typing\" if\n * this event changes this member's typing state.\n * @param {MatrixEvent} event The typing event\n * @fires module:client~MatrixClient#event:\"RoomMember.typing\"\n */\nRoomMember.prototype.setTypingEvent = function (event) {\n if (event.getType() !== \"m.typing\") {\n return;\n }\n var oldTyping = this.typing;\n this.typing = false;\n var typingList = event.getContent().user_ids;\n if (!utils.isArray(typingList)) {\n // malformed event :/ bail early. TODO: whine?\n return;\n }\n if (typingList.indexOf(this.userId) !== -1) {\n this.typing = true;\n }\n if (oldTyping !== this.typing) {\n this._updateModifiedTime();\n this.emit(\"RoomMember.typing\", event, this);\n }\n};\n\n/**\n * Update the last modified time to the current time.\n */\nRoomMember.prototype._updateModifiedTime = function () {\n this._modified = Date.now();\n};\n\n/**\n * Get the timestamp when this RoomMember was last updated. This timestamp is\n * updated when properties on this RoomMember are updated.\n * It is updated <i>before</i> firing events.\n * @return {number} The timestamp\n */\nRoomMember.prototype.getLastModifiedTime = function () {\n return this._modified;\n};\n\nRoomMember.prototype.isKicked = function () {\n return this.membership === \"leave\" && this.events.member.getSender() !== this.events.member.getStateKey();\n};\n\n/**\n * If this member was invited with the is_direct flag set, return\n * the user that invited this member\n * @return {string} user id of the inviter\n */\nRoomMember.prototype.getDMInviter = function () {\n // when not available because that room state hasn't been loaded in,\n // we don't really know, but more likely to not be a direct chat\n if (this.events.member) {\n // TODO: persist the is_direct flag on the member as more member events\n // come in caused by displayName changes.\n\n // the is_direct flag is set on the invite member event.\n // This is copied on the prev_content section of the join member event\n // when the invite is accepted.\n\n var memberEvent = this.events.member;\n var memberContent = memberEvent.getContent();\n var inviteSender = memberEvent.getSender();\n\n if (memberContent.membership === \"join\") {\n memberContent = memberEvent.getPrevContent();\n inviteSender = memberEvent.getUnsigned().prev_sender;\n }\n\n if (memberContent.membership === \"invite\" && memberContent.is_direct) {\n return inviteSender;\n }\n }\n};\n\n/**\n * Get the avatar URL for a room member.\n * @param {string} baseUrl The base homeserver URL See\n * {@link module:client~MatrixClient#getHomeserverUrl}.\n * @param {Number} width The desired width of the thumbnail.\n * @param {Number} height The desired height of the thumbnail.\n * @param {string} resizeMethod The thumbnail resize method to use, either\n * \"crop\" or \"scale\".\n * @param {Boolean} allowDefault (optional) Passing false causes this method to\n * return null if the user has no avatar image. Otherwise, a default image URL\n * will be returned. Default: true.\n * @param {Boolean} allowDirectLinks (optional) If true, the avatar URL will be\n * returned even if it is a direct hyperlink rather than a matrix content URL.\n * If false, any non-matrix content URLs will be ignored. Setting this option to\n * true will expose URLs that, if fetched, will leak information about the user\n * to anyone who they share a room with.\n * @return {?string} the avatar URL or null.\n */\nRoomMember.prototype.getAvatarUrl = function (baseUrl, width, height, resizeMethod, allowDefault, allowDirectLinks) {\n if (allowDefault === undefined) {\n allowDefault = true;\n }\n\n var rawUrl = this.getMxcAvatarUrl();\n\n if (!rawUrl && !allowDefault) {\n return null;\n }\n var httpUrl = ContentRepo.getHttpUriForMxc(baseUrl, rawUrl, width, height, resizeMethod, allowDirectLinks);\n if (httpUrl) {\n return httpUrl;\n } else if (allowDefault) {\n return ContentRepo.getIdenticonUri(baseUrl, this.userId, width, height);\n }\n return null;\n};\n/**\n * get the mxc avatar url, either from a state event, or from a lazily loaded member\n * @return {string} the mxc avatar url\n */\nRoomMember.prototype.getMxcAvatarUrl = function () {\n if (this.events.member) {\n return this.events.member.getDirectionalContent().avatar_url;\n } else if (this.user) {\n return this.user.avatarUrl;\n }\n return null;\n};\n\nfunction calculateDisplayName(selfUserId, displayName, roomState) {\n if (!displayName || displayName === selfUserId) {\n return selfUserId;\n }\n\n // First check if the displayname is something we consider truthy\n // after stripping it of zero width characters and padding spaces\n if (!utils.removeHiddenChars(displayName)) {\n return selfUserId;\n }\n\n if (!roomState) {\n return displayName;\n }\n\n // Next check if the name contains something that look like a mxid\n // If it does, it may be someone trying to impersonate someone else\n // Show full mxid in this case\n // Also show mxid if there are other people with the same or similar\n // displayname, after hidden character removal.\n var disambiguate = /@.+:.+/.test(displayName);\n if (!disambiguate) {\n var userIds = roomState.getUserIdsWithDisplayName(displayName);\n disambiguate = userIds.some(function (u) {\n return u !== selfUserId;\n });\n }\n\n if (disambiguate) {\n return displayName + \" (\" + selfUserId + \")\";\n }\n return displayName;\n}\n\n/**\n * The RoomMember class.\n */\nmodule.exports = RoomMember;\n\n/**\n * Fires whenever any room member's name changes.\n * @event module:client~MatrixClient#\"RoomMember.name\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomMember} member The member whose RoomMember.name changed.\n * @param {string?} oldName The previous name. Null if the member didn't have a\n * name previously.\n * @example\n * matrixClient.on(\"RoomMember.name\", function(event, member){\n * var newName = member.name;\n * });\n */\n\n/**\n * Fires whenever any room member's membership state changes.\n * @event module:client~MatrixClient#\"RoomMember.membership\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomMember} member The member whose RoomMember.membership changed.\n * @param {string?} oldMembership The previous membership state. Null if it's a\n * new member.\n * @example\n * matrixClient.on(\"RoomMember.membership\", function(event, member, oldMembership){\n * var newState = member.membership;\n * });\n */\n\n/**\n * Fires whenever any room member's typing state changes.\n * @event module:client~MatrixClient#\"RoomMember.typing\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomMember} member The member whose RoomMember.typing changed.\n * @example\n * matrixClient.on(\"RoomMember.typing\", function(event, member){\n * var isTyping = member.typing;\n * });\n */\n\n/**\n * Fires whenever any room member's power level changes.\n * @event module:client~MatrixClient#\"RoomMember.powerLevel\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomMember} member The member whose RoomMember.powerLevel changed.\n * @example\n * matrixClient.on(\"RoomMember.powerLevel\", function(event, member){\n * var newPowerLevel = member.powerLevel;\n * var newNormPowerLevel = member.powerLevelNorm;\n * });\n */\n//# sourceMappingURL=room-member.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module filter\n */\n\nvar FilterComponent = require(\"./filter-component\");\n\n/**\n * @param {Object} obj\n * @param {string} keyNesting\n * @param {*} val\n */\nfunction setProp(obj, keyNesting, val) {\n var nestedKeys = keyNesting.split(\".\");\n var currentObj = obj;\n for (var i = 0; i < nestedKeys.length - 1; i++) {\n if (!currentObj[nestedKeys[i]]) {\n currentObj[nestedKeys[i]] = {};\n }\n currentObj = currentObj[nestedKeys[i]];\n }\n currentObj[nestedKeys[nestedKeys.length - 1]] = val;\n}\n\n/**\n * Construct a new Filter.\n * @constructor\n * @param {string} userId The user ID for this filter.\n * @param {string=} filterId The filter ID if known.\n * @prop {string} userId The user ID of the filter\n * @prop {?string} filterId The filter ID\n */\nfunction Filter(userId, filterId) {\n this.userId = userId;\n this.filterId = filterId;\n this.definition = {};\n}\n\nFilter.LAZY_LOADING_MESSAGES_FILTER = {\n lazy_load_members: true\n};\n\nFilter.LAZY_LOADING_SYNC_FILTER = {\n room: {\n state: Filter.LAZY_LOADING_MESSAGES_FILTER\n }\n};\n\n/**\n * Get the ID of this filter on your homeserver (if known)\n * @return {?Number} The filter ID\n */\nFilter.prototype.getFilterId = function () {\n return this.filterId;\n};\n\n/**\n * Get the JSON body of the filter.\n * @return {Object} The filter definition\n */\nFilter.prototype.getDefinition = function () {\n return this.definition;\n};\n\n/**\n * Set the JSON body of the filter\n * @param {Object} definition The filter definition\n */\nFilter.prototype.setDefinition = function (definition) {\n this.definition = definition;\n\n // This is all ported from synapse's FilterCollection()\n\n // definitions look something like:\n // {\n // \"room\": {\n // \"rooms\": [\"!abcde:example.com\"],\n // \"not_rooms\": [\"!123456:example.com\"],\n // \"state\": {\n // \"types\": [\"m.room.*\"],\n // \"not_rooms\": [\"!726s6s6q:example.com\"],\n // },\n // \"timeline\": {\n // \"limit\": 10,\n // \"types\": [\"m.room.message\"],\n // \"not_rooms\": [\"!726s6s6q:example.com\"],\n // \"not_senders\": [\"@spam:example.com\"]\n // \"contains_url\": true\n // },\n // \"ephemeral\": {\n // \"types\": [\"m.receipt\", \"m.typing\"],\n // \"not_rooms\": [\"!726s6s6q:example.com\"],\n // \"not_senders\": [\"@spam:example.com\"]\n // }\n // },\n // \"presence\": {\n // \"types\": [\"m.presence\"],\n // \"not_senders\": [\"@alice:example.com\"]\n // },\n // \"event_format\": \"client\",\n // \"event_fields\": [\"type\", \"content\", \"sender\"]\n // }\n\n var room_filter_json = definition.room;\n\n // consider the top level rooms/not_rooms filter\n var room_filter_fields = {};\n if (room_filter_json) {\n if (room_filter_json.rooms) {\n room_filter_fields.rooms = room_filter_json.rooms;\n }\n if (room_filter_json.rooms) {\n room_filter_fields.not_rooms = room_filter_json.not_rooms;\n }\n\n this._include_leave = room_filter_json.include_leave || false;\n }\n\n this._room_filter = new FilterComponent(room_filter_fields);\n this._room_timeline_filter = new FilterComponent(room_filter_json ? room_filter_json.timeline || {} : {});\n\n // don't bother porting this from synapse yet:\n // this._room_state_filter =\n // new FilterComponent(room_filter_json.state || {});\n // this._room_ephemeral_filter =\n // new FilterComponent(room_filter_json.ephemeral || {});\n // this._room_account_data_filter =\n // new FilterComponent(room_filter_json.account_data || {});\n // this._presence_filter =\n // new FilterComponent(definition.presence || {});\n // this._account_data_filter =\n // new FilterComponent(definition.account_data || {});\n};\n\n/**\n * Get the room.timeline filter component of the filter\n * @return {FilterComponent} room timeline filter component\n */\nFilter.prototype.getRoomTimelineFilterComponent = function () {\n return this._room_timeline_filter;\n};\n\n/**\n * Filter the list of events based on whether they are allowed in a timeline\n * based on this filter\n * @param {MatrixEvent[]} events the list of events being filtered\n * @return {MatrixEvent[]} the list of events which match the filter\n */\nFilter.prototype.filterRoomTimeline = function (events) {\n return this._room_timeline_filter.filter(this._room_filter.filter(events));\n};\n\n/**\n * Set the max number of events to return for each room's timeline.\n * @param {Number} limit The max number of events to return for each room.\n */\nFilter.prototype.setTimelineLimit = function (limit) {\n setProp(this.definition, \"room.timeline.limit\", limit);\n};\n\n/**\n * Control whether left rooms should be included in responses.\n * @param {boolean} includeLeave True to make rooms the user has left appear\n * in responses.\n */\nFilter.prototype.setIncludeLeaveRooms = function (includeLeave) {\n setProp(this.definition, \"room.include_leave\", includeLeave);\n};\n\n/**\n * Create a filter from existing data.\n * @static\n * @param {string} userId\n * @param {string} filterId\n * @param {Object} jsonObj\n * @return {Filter}\n */\nFilter.fromJson = function (userId, filterId, jsonObj) {\n var filter = new Filter(userId, filterId);\n filter.setDefinition(jsonObj);\n return filter;\n};\n\n/** The Filter class */\nmodule.exports = Filter;\n//# sourceMappingURL=filter.js.map","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/event-timeline-set\n */\n\nvar EventEmitter = require(\"events\").EventEmitter;\nvar utils = require(\"../utils\");\nvar EventTimeline = require(\"./event-timeline\");\n\n// var DEBUG = false;\nvar DEBUG = true;\n\nvar debuglog = void 0;\nif (DEBUG) {\n // using bind means that we get to keep useful line numbers in the console\n debuglog = console.log.bind(console);\n} else {\n debuglog = function debuglog() {};\n}\n\n/**\n * Construct a set of EventTimeline objects, typically on behalf of a given\n * room. A room may have multiple EventTimelineSets for different levels\n * of filtering. The global notification list is also an EventTimelineSet, but\n * lacks a room.\n *\n * <p>This is an ordered sequence of timelines, which may or may not\n * be continuous. Each timeline lists a series of events, as well as tracking\n * the room state at the start and the end of the timeline (if appropriate).\n * It also tracks forward and backward pagination tokens, as well as containing\n * links to the next timeline in the sequence.\n *\n * <p>There is one special timeline - the 'live' timeline, which represents the\n * timeline to which events are being added in real-time as they are received\n * from the /sync API. Note that you should not retain references to this\n * timeline - even if it is the current timeline right now, it may not remain\n * so if the server gives us a timeline gap in /sync.\n *\n * <p>In order that we can find events from their ids later, we also maintain a\n * map from event_id to timeline and index.\n *\n * @constructor\n * @param {?Room} room the optional room for this timelineSet\n * @param {Object} opts hash of options inherited from Room.\n * opts.timelineSupport gives whether timeline support is enabled\n * opts.filter is the filter object, if any, for this timelineSet.\n */\nfunction EventTimelineSet(room, opts) {\n this.room = room;\n\n this._timelineSupport = Boolean(opts.timelineSupport);\n this._liveTimeline = new EventTimeline(this);\n\n // just a list - *not* ordered.\n this._timelines = [this._liveTimeline];\n this._eventIdToTimeline = {};\n\n this._filter = opts.filter || null;\n}\nutils.inherits(EventTimelineSet, EventEmitter);\n\n/**\n * Get the filter object this timeline set is filtered on, if any\n * @return {?Filter} the optional filter for this timelineSet\n */\nEventTimelineSet.prototype.getFilter = function () {\n return this._filter;\n};\n\n/**\n * Set the filter object this timeline set is filtered on\n * (passed to the server when paginating via /messages).\n * @param {Filter} filter the filter for this timelineSet\n */\nEventTimelineSet.prototype.setFilter = function (filter) {\n this._filter = filter;\n};\n\n/**\n * Get the list of pending sent events for this timelineSet's room, filtered\n * by the timelineSet's filter if appropriate.\n *\n * @return {module:models/event.MatrixEvent[]} A list of the sent events\n * waiting for remote echo.\n *\n * @throws If <code>opts.pendingEventOrdering</code> was not 'detached'\n */\nEventTimelineSet.prototype.getPendingEvents = function () {\n if (!this.room) {\n return [];\n }\n\n if (this._filter) {\n return this._filter.filterRoomTimeline(this.room.getPendingEvents());\n } else {\n return this.room.getPendingEvents();\n }\n};\n\n/**\n * Get the live timeline for this room.\n *\n * @return {module:models/event-timeline~EventTimeline} live timeline\n */\nEventTimelineSet.prototype.getLiveTimeline = function () {\n return this._liveTimeline;\n};\n\n/**\n * Return the timeline (if any) this event is in.\n * @param {String} eventId the eventId being sought\n * @return {module:models/event-timeline~EventTimeline} timeline\n */\nEventTimelineSet.prototype.eventIdToTimeline = function (eventId) {\n return this._eventIdToTimeline[eventId];\n};\n\n/**\n * Track a new event as if it were in the same timeline as an old event,\n * replacing it.\n * @param {String} oldEventId event ID of the original event\n * @param {String} newEventId event ID of the replacement event\n */\nEventTimelineSet.prototype.replaceEventId = function (oldEventId, newEventId) {\n var existingTimeline = this._eventIdToTimeline[oldEventId];\n if (existingTimeline) {\n delete this._eventIdToTimeline[oldEventId];\n this._eventIdToTimeline[newEventId] = existingTimeline;\n }\n};\n\n/**\n * Reset the live timeline, and start a new one.\n *\n * <p>This is used when /sync returns a 'limited' timeline.\n *\n * @param {string=} backPaginationToken token for back-paginating the new timeline\n * @param {string=} forwardPaginationToken token for forward-paginating the old live timeline,\n * if absent or null, all timelines are reset.\n *\n * @fires module:client~MatrixClient#event:\"Room.timelineReset\"\n */\nEventTimelineSet.prototype.resetLiveTimeline = function (backPaginationToken, forwardPaginationToken) {\n // Each EventTimeline has RoomState objects tracking the state at the start\n // and end of that timeline. The copies at the end of the live timeline are\n // special because they will have listeners attached to monitor changes to\n // the current room state, so we move this RoomState from the end of the\n // current live timeline to the end of the new one and, if necessary,\n // replace it with a newly created one. We also make a copy for the start\n // of the new timeline.\n\n // if timeline support is disabled, forget about the old timelines\n var resetAllTimelines = !this._timelineSupport || !forwardPaginationToken;\n\n var oldTimeline = this._liveTimeline;\n var newTimeline = resetAllTimelines ? oldTimeline.forkLive(EventTimeline.FORWARDS) : oldTimeline.fork(EventTimeline.FORWARDS);\n\n if (resetAllTimelines) {\n this._timelines = [newTimeline];\n this._eventIdToTimeline = {};\n } else {\n this._timelines.push(newTimeline);\n }\n\n if (forwardPaginationToken) {\n // Now set the forward pagination token on the old live timeline\n // so it can be forward-paginated.\n oldTimeline.setPaginationToken(forwardPaginationToken, EventTimeline.FORWARDS);\n }\n\n // make sure we set the pagination token before firing timelineReset,\n // otherwise clients which start back-paginating will fail, and then get\n // stuck without realising that they *can* back-paginate.\n newTimeline.setPaginationToken(backPaginationToken, EventTimeline.BACKWARDS);\n\n // Now we can swap the live timeline to the new one.\n this._liveTimeline = newTimeline;\n this.emit(\"Room.timelineReset\", this.room, this, resetAllTimelines);\n};\n\n/**\n * Get the timeline which contains the given event, if any\n *\n * @param {string} eventId event ID to look for\n * @return {?module:models/event-timeline~EventTimeline} timeline containing\n * the given event, or null if unknown\n */\nEventTimelineSet.prototype.getTimelineForEvent = function (eventId) {\n var res = this._eventIdToTimeline[eventId];\n return res === undefined ? null : res;\n};\n\n/**\n * Get an event which is stored in our timelines\n *\n * @param {string} eventId event ID to look for\n * @return {?module:models/event~MatrixEvent} the given event, or undefined if unknown\n */\nEventTimelineSet.prototype.findEventById = function (eventId) {\n var tl = this.getTimelineForEvent(eventId);\n if (!tl) {\n return undefined;\n }\n return utils.findElement(tl.getEvents(), function (ev) {\n return ev.getId() == eventId;\n });\n};\n\n/**\n * Add a new timeline to this timeline list\n *\n * @return {module:models/event-timeline~EventTimeline} newly-created timeline\n */\nEventTimelineSet.prototype.addTimeline = function () {\n if (!this._timelineSupport) {\n throw new Error(\"timeline support is disabled. Set the 'timelineSupport'\" + \" parameter to true when creating MatrixClient to enable\" + \" it.\");\n }\n\n var timeline = new EventTimeline(this);\n this._timelines.push(timeline);\n return timeline;\n};\n\n/**\n * Add events to a timeline\n *\n * <p>Will fire \"Room.timeline\" for each event added.\n *\n * @param {MatrixEvent[]} events A list of events to add.\n *\n * @param {boolean} toStartOfTimeline True to add these events to the start\n * (oldest) instead of the end (newest) of the timeline. If true, the oldest\n * event will be the <b>last</b> element of 'events'.\n *\n * @param {module:models/event-timeline~EventTimeline} timeline timeline to\n * add events to.\n *\n * @param {string=} paginationToken token for the next batch of events\n *\n * @fires module:client~MatrixClient#event:\"Room.timeline\"\n *\n */\nEventTimelineSet.prototype.addEventsToTimeline = function (events, toStartOfTimeline, timeline, paginationToken) {\n if (!timeline) {\n throw new Error(\"'timeline' not specified for EventTimelineSet.addEventsToTimeline\");\n }\n\n if (!toStartOfTimeline && timeline == this._liveTimeline) {\n throw new Error(\"EventTimelineSet.addEventsToTimeline cannot be used for adding events to \" + \"the live timeline - use Room.addLiveEvents instead\");\n }\n\n if (this._filter) {\n events = this._filter.filterRoomTimeline(events);\n if (!events.length) {\n return;\n }\n }\n\n var direction = toStartOfTimeline ? EventTimeline.BACKWARDS : EventTimeline.FORWARDS;\n var inverseDirection = toStartOfTimeline ? EventTimeline.FORWARDS : EventTimeline.BACKWARDS;\n\n // Adding events to timelines can be quite complicated. The following\n // illustrates some of the corner-cases.\n //\n // Let's say we start by knowing about four timelines. timeline3 and\n // timeline4 are neighbours:\n //\n // timeline1 timeline2 timeline3 timeline4\n // [M] [P] [S] <------> [T]\n //\n // Now we paginate timeline1, and get the following events from the server:\n // [M, N, P, R, S, T, U].\n //\n // 1. First, we ignore event M, since we already know about it.\n //\n // 2. Next, we append N to timeline 1.\n //\n // 3. Next, we don't add event P, since we already know about it,\n // but we do link together the timelines. We now have:\n //\n // timeline1 timeline2 timeline3 timeline4\n // [M, N] <---> [P] [S] <------> [T]\n //\n // 4. Now we add event R to timeline2:\n //\n // timeline1 timeline2 timeline3 timeline4\n // [M, N] <---> [P, R] [S] <------> [T]\n //\n // Note that we have switched the timeline we are working on from\n // timeline1 to timeline2.\n //\n // 5. We ignore event S, but again join the timelines:\n //\n // timeline1 timeline2 timeline3 timeline4\n // [M, N] <---> [P, R] <---> [S] <------> [T]\n //\n // 6. We ignore event T, and the timelines are already joined, so there\n // is nothing to do.\n //\n // 7. Finally, we add event U to timeline4:\n //\n // timeline1 timeline2 timeline3 timeline4\n // [M, N] <---> [P, R] <---> [S] <------> [T, U]\n //\n // The important thing to note in the above is what happened when we\n // already knew about a given event:\n //\n // - if it was appropriate, we joined up the timelines (steps 3, 5).\n // - in any case, we started adding further events to the timeline which\n // contained the event we knew about (steps 3, 5, 6).\n //\n //\n // So much for adding events to the timeline. But what do we want to do\n // with the pagination token?\n //\n // In the case above, we will be given a pagination token which tells us how to\n // get events beyond 'U' - in this case, it makes sense to store this\n // against timeline4. But what if timeline4 already had 'U' and beyond? in\n // that case, our best bet is to throw away the pagination token we were\n // given and stick with whatever token timeline4 had previously. In short,\n // we want to only store the pagination token if the last event we receive\n // is one we didn't previously know about.\n //\n // We make an exception for this if it turns out that we already knew about\n // *all* of the events, and we weren't able to join up any timelines. When\n // that happens, it means our existing pagination token is faulty, since it\n // is only telling us what we already know. Rather than repeatedly\n // paginating with the same token, we might as well use the new pagination\n // token in the hope that we eventually work our way out of the mess.\n\n var didUpdate = false;\n var lastEventWasNew = false;\n for (var i = 0; i < events.length; i++) {\n var event = events[i];\n var eventId = event.getId();\n\n var existingTimeline = this._eventIdToTimeline[eventId];\n\n if (!existingTimeline) {\n // we don't know about this event yet. Just add it to the timeline.\n this.addEventToTimeline(event, timeline, toStartOfTimeline);\n lastEventWasNew = true;\n didUpdate = true;\n continue;\n }\n\n lastEventWasNew = false;\n\n if (existingTimeline == timeline) {\n debuglog(\"Event \" + eventId + \" already in timeline \" + timeline);\n continue;\n }\n\n var neighbour = timeline.getNeighbouringTimeline(direction);\n if (neighbour) {\n // this timeline already has a neighbour in the relevant direction;\n // let's assume the timelines are already correctly linked up, and\n // skip over to it.\n //\n // there's probably some edge-case here where we end up with an\n // event which is in a timeline a way down the chain, and there is\n // a break in the chain somewhere. But I can't really imagine how\n // that would happen, so I'm going to ignore it for now.\n //\n if (existingTimeline == neighbour) {\n debuglog(\"Event \" + eventId + \" in neighbouring timeline - \" + \"switching to \" + existingTimeline);\n } else {\n debuglog(\"Event \" + eventId + \" already in a different \" + \"timeline \" + existingTimeline);\n }\n timeline = existingTimeline;\n continue;\n }\n\n // time to join the timelines.\n console.info(\"Already have timeline for \" + eventId + \" - joining timeline \" + timeline + \" to \" + existingTimeline);\n timeline.setNeighbouringTimeline(existingTimeline, direction);\n existingTimeline.setNeighbouringTimeline(timeline, inverseDirection);\n timeline = existingTimeline;\n didUpdate = true;\n }\n\n // see above - if the last event was new to us, or if we didn't find any\n // new information, we update the pagination token for whatever\n // timeline we ended up on.\n if (lastEventWasNew || !didUpdate) {\n timeline.setPaginationToken(paginationToken, direction);\n }\n};\n\n/**\n * Add an event to the end of this live timeline.\n *\n * @param {MatrixEvent} event Event to be added\n * @param {string?} duplicateStrategy 'ignore' or 'replace'\n */\nEventTimelineSet.prototype.addLiveEvent = function (event, duplicateStrategy) {\n if (this._filter) {\n var events = this._filter.filterRoomTimeline([event]);\n if (!events.length) {\n return;\n }\n }\n\n var timeline = this._eventIdToTimeline[event.getId()];\n if (timeline) {\n if (duplicateStrategy === \"replace\") {\n debuglog(\"EventTimelineSet.addLiveEvent: replacing duplicate event \" + event.getId());\n var tlEvents = timeline.getEvents();\n for (var j = 0; j < tlEvents.length; j++) {\n if (tlEvents[j].getId() === event.getId()) {\n // still need to set the right metadata on this event\n EventTimeline.setEventMetadata(event, timeline.getState(EventTimeline.FORWARDS), false);\n\n if (!tlEvents[j].encryptedType) {\n tlEvents[j] = event;\n }\n\n // XXX: we need to fire an event when this happens.\n break;\n }\n }\n } else {\n debuglog(\"EventTimelineSet.addLiveEvent: ignoring duplicate event \" + event.getId());\n }\n return;\n }\n\n this.addEventToTimeline(event, this._liveTimeline, false);\n};\n\n/**\n * Add event to the given timeline, and emit Room.timeline. Assumes\n * we have already checked we don't know about this event.\n *\n * Will fire \"Room.timeline\" for each event added.\n *\n * @param {MatrixEvent} event\n * @param {EventTimeline} timeline\n * @param {boolean} toStartOfTimeline\n *\n * @fires module:client~MatrixClient#event:\"Room.timeline\"\n */\nEventTimelineSet.prototype.addEventToTimeline = function (event, timeline, toStartOfTimeline) {\n var eventId = event.getId();\n timeline.addEvent(event, toStartOfTimeline);\n this._eventIdToTimeline[eventId] = timeline;\n\n var data = {\n timeline: timeline,\n liveEvent: !toStartOfTimeline && timeline == this._liveTimeline\n };\n this.emit(\"Room.timeline\", event, this.room, Boolean(toStartOfTimeline), false, data);\n};\n\n/**\n * Replaces event with ID oldEventId with one with newEventId, if oldEventId is\n * recognised. Otherwise, add to the live timeline. Used to handle remote echos.\n *\n * @param {MatrixEvent} localEvent the new event to be added to the timeline\n * @param {String} oldEventId the ID of the original event\n * @param {boolean} newEventId the ID of the replacement event\n *\n * @fires module:client~MatrixClient#event:\"Room.timeline\"\n */\nEventTimelineSet.prototype.handleRemoteEcho = function (localEvent, oldEventId, newEventId) {\n // XXX: why don't we infer newEventId from localEvent?\n var existingTimeline = this._eventIdToTimeline[oldEventId];\n if (existingTimeline) {\n delete this._eventIdToTimeline[oldEventId];\n this._eventIdToTimeline[newEventId] = existingTimeline;\n } else {\n if (this._filter) {\n if (this._filter.filterRoomTimeline([localEvent]).length) {\n this.addEventToTimeline(localEvent, this._liveTimeline, false);\n }\n } else {\n this.addEventToTimeline(localEvent, this._liveTimeline, false);\n }\n }\n};\n\n/**\n * Removes a single event from this room.\n *\n * @param {String} eventId The id of the event to remove\n *\n * @return {?MatrixEvent} the removed event, or null if the event was not found\n * in this room.\n */\nEventTimelineSet.prototype.removeEvent = function (eventId) {\n var timeline = this._eventIdToTimeline[eventId];\n if (!timeline) {\n return null;\n }\n\n var removed = timeline.removeEvent(eventId);\n if (removed) {\n delete this._eventIdToTimeline[eventId];\n var data = {\n timeline: timeline\n };\n this.emit(\"Room.timeline\", removed, this.room, undefined, true, data);\n }\n return removed;\n};\n\n/**\n * Determine where two events appear in the timeline relative to one another\n *\n * @param {string} eventId1 The id of the first event\n * @param {string} eventId2 The id of the second event\n\n * @return {?number} a number less than zero if eventId1 precedes eventId2, and\n * greater than zero if eventId1 succeeds eventId2. zero if they are the\n * same event; null if we can't tell (either because we don't know about one\n * of the events, or because they are in separate timelines which don't join\n * up).\n */\nEventTimelineSet.prototype.compareEventOrdering = function (eventId1, eventId2) {\n if (eventId1 == eventId2) {\n // optimise this case\n return 0;\n }\n\n var timeline1 = this._eventIdToTimeline[eventId1];\n var timeline2 = this._eventIdToTimeline[eventId2];\n\n if (timeline1 === undefined) {\n return null;\n }\n if (timeline2 === undefined) {\n return null;\n }\n\n if (timeline1 === timeline2) {\n // both events are in the same timeline - figure out their\n // relative indices\n var idx1 = void 0,\n idx2 = void 0;\n var events = timeline1.getEvents();\n for (var idx = 0; idx < events.length && (idx1 === undefined || idx2 === undefined); idx++) {\n var evId = events[idx].getId();\n if (evId == eventId1) {\n idx1 = idx;\n }\n if (evId == eventId2) {\n idx2 = idx;\n }\n }\n return idx1 - idx2;\n }\n\n // the events are in different timelines. Iterate through the\n // linkedlist to see which comes first.\n\n // first work forwards from timeline1\n var tl = timeline1;\n while (tl) {\n if (tl === timeline2) {\n // timeline1 is before timeline2\n return -1;\n }\n tl = tl.getNeighbouringTimeline(EventTimeline.FORWARDS);\n }\n\n // now try backwards from timeline1\n tl = timeline1;\n while (tl) {\n if (tl === timeline2) {\n // timeline2 is before timeline1\n return 1;\n }\n tl = tl.getNeighbouringTimeline(EventTimeline.BACKWARDS);\n }\n\n // the timelines are not contiguous.\n return null;\n};\n\n/**\n * The EventTimelineSet class.\n */\nmodule.exports = EventTimelineSet;\n\n/**\n * Fires whenever the timeline in a room is updated.\n * @event module:client~MatrixClient#\"Room.timeline\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {?Room} room The room, if any, whose timeline was updated.\n * @param {boolean} toStartOfTimeline True if this event was added to the start\n * @param {boolean} removed True if this event has just been removed from the timeline\n * (beginning; oldest) of the timeline e.g. due to pagination.\n *\n * @param {object} data more data about the event\n *\n * @param {module:event-timeline.EventTimeline} data.timeline the timeline the\n * event was added to/removed from\n *\n * @param {boolean} data.liveEvent true if the event was a real-time event\n * added to the end of the live timeline\n *\n * @example\n * matrixClient.on(\"Room.timeline\",\n * function(event, room, toStartOfTimeline, removed, data) {\n * if (!toStartOfTimeline && data.liveEvent) {\n * var messageToAppend = room.timeline.[room.timeline.length - 1];\n * }\n * });\n */\n\n/**\n * Fires whenever the live timeline in a room is reset.\n *\n * When we get a 'limited' sync (for example, after a network outage), we reset\n * the live timeline to be empty before adding the recent events to the new\n * timeline. This event is fired after the timeline is reset, and before the\n * new events are added.\n *\n * @event module:client~MatrixClient#\"Room.timelineReset\"\n * @param {Room} room The room whose live timeline was reset, if any\n * @param {EventTimelineSet} timelineSet timelineSet room whose live timeline was reset\n * @param {boolean} resetAllTimelines True if all timelines were reset.\n */\n//# sourceMappingURL=event-timeline-set.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _CallHandler = require('./CallHandler');\n\nvar _CallHandler2 = _interopRequireDefault(_CallHandler);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _Roles = require('./Roles');\n\nvar Roles = _interopRequireWildcard(_Roles);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nfunction textForMemberEvent(ev) {\n // XXX: SYJS-16 \"sender is sometimes null for join messages\"\n var senderName = ev.sender ? ev.sender.name : ev.getSender();\n var targetName = ev.target ? ev.target.name : ev.getStateKey();\n var prevContent = ev.getPrevContent();\n var content = ev.getContent();\n\n var ConferenceHandler = _CallHandler2.default.getConferenceHandler();\n var reason = content.reason ? (0, _languageHandler._t)('Reason') + ': ' + content.reason : '';\n switch (content.membership) {\n case 'invite':\n {\n var threePidContent = content.third_party_invite;\n if (threePidContent) {\n if (threePidContent.display_name) {\n return (0, _languageHandler._t)('%(targetName)s accepted the invitation for %(displayName)s.', {\n targetName: targetName,\n displayName: threePidContent.display_name\n });\n } else {\n return (0, _languageHandler._t)('%(targetName)s accepted an invitation.', { targetName: targetName });\n }\n } else {\n if (ConferenceHandler && ConferenceHandler.isConferenceUser(ev.getStateKey())) {\n return (0, _languageHandler._t)('%(senderName)s requested a VoIP conference.', { senderName: senderName });\n } else {\n return (0, _languageHandler._t)('%(senderName)s invited %(targetName)s.', { senderName: senderName, targetName: targetName });\n }\n }\n }\n case 'ban':\n return (0, _languageHandler._t)('%(senderName)s banned %(targetName)s.', { senderName: senderName, targetName: targetName }) + ' ' + reason;\n case 'join':\n if (prevContent && prevContent.membership === 'join') {\n if (prevContent.displayname && content.displayname && prevContent.displayname !== content.displayname) {\n return (0, _languageHandler._t)('%(oldDisplayName)s changed their display name to %(displayName)s.', {\n oldDisplayName: prevContent.displayname,\n displayName: content.displayname\n });\n } else if (!prevContent.displayname && content.displayname) {\n return (0, _languageHandler._t)('%(senderName)s set their display name to %(displayName)s.', {\n senderName: ev.getSender(),\n displayName: content.displayname\n });\n } else if (prevContent.displayname && !content.displayname) {\n return (0, _languageHandler._t)('%(senderName)s removed their display name (%(oldDisplayName)s).', {\n senderName: senderName,\n oldDisplayName: prevContent.displayname\n });\n } else if (prevContent.avatar_url && !content.avatar_url) {\n return (0, _languageHandler._t)('%(senderName)s removed their profile picture.', { senderName: senderName });\n } else if (prevContent.avatar_url && content.avatar_url && prevContent.avatar_url !== content.avatar_url) {\n return (0, _languageHandler._t)('%(senderName)s changed their profile picture.', { senderName: senderName });\n } else if (!prevContent.avatar_url && content.avatar_url) {\n return (0, _languageHandler._t)('%(senderName)s set a profile picture.', { senderName: senderName });\n } else {\n // suppress null rejoins\n return '';\n }\n } else {\n if (!ev.target) console.warn(\"Join message has no target! -- \" + ev.getContent().state_key);\n if (ConferenceHandler && ConferenceHandler.isConferenceUser(ev.getStateKey())) {\n return (0, _languageHandler._t)('VoIP conference started.');\n } else {\n return (0, _languageHandler._t)('%(targetName)s joined the room.', { targetName: targetName });\n }\n }\n case 'leave':\n if (ev.getSender() === ev.getStateKey()) {\n if (ConferenceHandler && ConferenceHandler.isConferenceUser(ev.getStateKey())) {\n return (0, _languageHandler._t)('VoIP conference finished.');\n } else if (prevContent.membership === \"invite\") {\n return (0, _languageHandler._t)('%(targetName)s rejected the invitation.', { targetName: targetName });\n } else {\n return (0, _languageHandler._t)('%(targetName)s left the room.', { targetName: targetName });\n }\n } else if (prevContent.membership === \"ban\") {\n return (0, _languageHandler._t)('%(senderName)s unbanned %(targetName)s.', { senderName: senderName, targetName: targetName });\n } else if (prevContent.membership === \"join\") {\n return (0, _languageHandler._t)('%(senderName)s kicked %(targetName)s.', { senderName: senderName, targetName: targetName }) + ' ' + reason;\n } else if (prevContent.membership === \"invite\") {\n return (0, _languageHandler._t)('%(senderName)s withdrew %(targetName)s\\'s invitation.', {\n senderName: senderName,\n targetName: targetName\n }) + ' ' + reason;\n } else {\n return (0, _languageHandler._t)('%(targetName)s left the room.', { targetName: targetName });\n }\n }\n}\n\nfunction textForTopicEvent(ev) {\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n return (0, _languageHandler._t)('%(senderDisplayName)s changed the topic to \"%(topic)s\".', {\n senderDisplayName: senderDisplayName,\n topic: ev.getContent().topic\n });\n}\n\nfunction textForRoomNameEvent(ev) {\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n\n if (!ev.getContent().name || ev.getContent().name.trim().length === 0) {\n return (0, _languageHandler._t)('%(senderDisplayName)s removed the room name.', { senderDisplayName: senderDisplayName });\n }\n return (0, _languageHandler._t)('%(senderDisplayName)s changed the room name to %(roomName)s.', {\n senderDisplayName: senderDisplayName,\n roomName: ev.getContent().name\n });\n}\n\nfunction textForServerACLEvent(ev) {\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n var prevContent = ev.getPrevContent();\n var changes = [];\n var current = ev.getContent();\n var prev = {\n deny: Array.isArray(prevContent.deny) ? prevContent.deny : [],\n allow: Array.isArray(prevContent.allow) ? prevContent.allow : [],\n allow_ip_literals: !(prevContent.allow_ip_literals === false)\n };\n var text = \"\";\n if (prev.deny.length === 0 && prev.allow.length === 0) {\n text = senderDisplayName + ' set server ACLs for this room: ';\n } else {\n text = senderDisplayName + ' changed the server ACLs for this room: ';\n }\n\n if (!Array.isArray(current.allow)) {\n current.allow = [];\n }\n /* If we know for sure everyone is banned, don't bother showing the diff view */\n if (current.allow.length === 0) {\n return text + \"🎉 All servers are banned from participating! This room can no longer be used.\";\n }\n\n if (!Array.isArray(current.deny)) {\n current.deny = [];\n }\n\n var bannedServers = current.deny.filter(function (srv) {\n return typeof srv === 'string' && !prev.deny.includes(srv);\n });\n var unbannedServers = prev.deny.filter(function (srv) {\n return typeof srv === 'string' && !current.deny.includes(srv);\n });\n var allowedServers = current.allow.filter(function (srv) {\n return typeof srv === 'string' && !prev.allow.includes(srv);\n });\n var unallowedServers = prev.allow.filter(function (srv) {\n return typeof srv === 'string' && !current.allow.includes(srv);\n });\n\n if (bannedServers.length > 0) {\n changes.push('Servers matching ' + bannedServers.join(\", \") + ' are now banned.');\n }\n\n if (unbannedServers.length > 0) {\n changes.push('Servers matching ' + unbannedServers.join(\", \") + ' were removed from the ban list.');\n }\n\n if (allowedServers.length > 0) {\n changes.push('Servers matching ' + allowedServers.join(\", \") + ' are now allowed.');\n }\n\n if (unallowedServers.length > 0) {\n changes.push('Servers matching ' + unallowedServers.join(\", \") + ' were removed from the allowed list.');\n }\n\n if (prev.allow_ip_literals !== current.allow_ip_literals) {\n var allowban = current.allow_ip_literals ? \"allowed\" : \"banned\";\n changes.push('Participating from a server using an IP literal hostname is now ' + allowban + '.');\n }\n\n return text + changes.join(\" \");\n}\n\nfunction textForMessageEvent(ev) {\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n var message = senderDisplayName + ': ' + ev.getContent().body;\n if (ev.getContent().msgtype === \"m.emote\") {\n message = \"* \" + senderDisplayName + \" \" + message;\n } else if (ev.getContent().msgtype === \"m.image\") {\n message = (0, _languageHandler._t)('%(senderDisplayName)s sent an image.', { senderDisplayName: senderDisplayName });\n }\n return message;\n}\n\nfunction textForRoomAliasesEvent(ev) {\n // An alternative implementation of this as a first-class event can be found at\n // https://github.com/matrix-org/matrix-react-sdk/blob/dc7212ec2bd12e1917233ed7153b3e0ef529a135/src/components/views/messages/RoomAliasesEvent.js\n // This feels a bit overkill though, and it's not clear the i18n really needs it\n // so instead it's landing as a simple textual event.\n\n var senderName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n var oldAliases = ev.getPrevContent().aliases || [];\n var newAliases = ev.getContent().aliases || [];\n\n var addedAliases = newAliases.filter(function (x) {\n return !oldAliases.includes(x);\n });\n var removedAliases = oldAliases.filter(function (x) {\n return !newAliases.includes(x);\n });\n\n if (!addedAliases.length && !removedAliases.length) {\n return '';\n }\n\n if (addedAliases.length && !removedAliases.length) {\n return (0, _languageHandler._t)('%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.', {\n senderName: senderName,\n count: addedAliases.length,\n addedAddresses: addedAliases.join(', ')\n });\n } else if (!addedAliases.length && removedAliases.length) {\n return (0, _languageHandler._t)('%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.', {\n senderName: senderName,\n count: removedAliases.length,\n removedAddresses: removedAliases.join(', ')\n });\n } else {\n return (0, _languageHandler._t)('%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.', {\n senderName: senderName,\n addedAddresses: addedAliases.join(', '),\n removedAddresses: removedAliases.join(', ')\n });\n }\n}\n\nfunction textForCanonicalAliasEvent(ev) {\n var senderName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n var oldAlias = ev.getPrevContent().alias;\n var newAlias = ev.getContent().alias;\n\n if (newAlias) {\n return (0, _languageHandler._t)('%(senderName)s set the main address for this room to %(address)s.', {\n senderName: senderName,\n address: ev.getContent().alias\n });\n } else if (oldAlias) {\n return (0, _languageHandler._t)('%(senderName)s removed the main address for this room.', {\n senderName: senderName\n });\n }\n}\n\nfunction textForCallAnswerEvent(event) {\n var senderName = event.sender ? event.sender.name : (0, _languageHandler._t)('Someone');\n var supported = _MatrixClientPeg2.default.get().supportsVoip() ? '' : (0, _languageHandler._t)('(not supported by this browser)');\n return (0, _languageHandler._t)('%(senderName)s answered the call.', { senderName: senderName }) + ' ' + supported;\n}\n\nfunction textForCallHangupEvent(event) {\n var senderName = event.sender ? event.sender.name : (0, _languageHandler._t)('Someone');\n var eventContent = event.getContent();\n var reason = \"\";\n if (!_MatrixClientPeg2.default.get().supportsVoip()) {\n reason = (0, _languageHandler._t)('(not supported by this browser)');\n } else if (eventContent.reason) {\n if (eventContent.reason === \"ice_failed\") {\n reason = (0, _languageHandler._t)('(could not connect media)');\n } else if (eventContent.reason === \"invite_timeout\") {\n reason = (0, _languageHandler._t)('(no answer)');\n } else if (eventContent.reason === \"user hangup\") {\n // workaround for https://github.com/vector-im/riot-web/issues/5178\n // it seems Android randomly sets a reason of \"user hangup\" which is\n // interpreted as an error code :(\n // https://github.com/vector-im/riot-android/issues/2623\n reason = '';\n } else {\n reason = (0, _languageHandler._t)('(unknown failure: %(reason)s)', { reason: eventContent.reason });\n }\n }\n return (0, _languageHandler._t)('%(senderName)s ended the call.', { senderName: senderName }) + ' ' + reason;\n}\n\nfunction textForCallInviteEvent(event) {\n var senderName = event.sender ? event.sender.name : (0, _languageHandler._t)('Someone');\n // FIXME: Find a better way to determine this from the event?\n var callType = \"voice\";\n if (event.getContent().offer && event.getContent().offer.sdp && event.getContent().offer.sdp.indexOf('m=video') !== -1) {\n callType = \"video\";\n }\n var supported = _MatrixClientPeg2.default.get().supportsVoip() ? \"\" : (0, _languageHandler._t)('(not supported by this browser)');\n return (0, _languageHandler._t)('%(senderName)s placed a %(callType)s call.', { senderName: senderName, callType: callType }) + ' ' + supported;\n}\n\nfunction textForThreePidInviteEvent(event) {\n var senderName = event.sender ? event.sender.name : event.getSender();\n return (0, _languageHandler._t)('%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.', {\n senderName: senderName,\n targetDisplayName: event.getContent().display_name\n });\n}\n\nfunction textForHistoryVisibilityEvent(event) {\n var senderName = event.sender ? event.sender.name : event.getSender();\n switch (event.getContent().history_visibility) {\n case 'invited':\n return (0, _languageHandler._t)('%(senderName)s made future room history visible to all room members, ' + 'from the point they are invited.', { senderName: senderName });\n case 'joined':\n return (0, _languageHandler._t)('%(senderName)s made future room history visible to all room members, ' + 'from the point they joined.', { senderName: senderName });\n case 'shared':\n return (0, _languageHandler._t)('%(senderName)s made future room history visible to all room members.', { senderName: senderName });\n case 'world_readable':\n return (0, _languageHandler._t)('%(senderName)s made future room history visible to anyone.', { senderName: senderName });\n default:\n return (0, _languageHandler._t)('%(senderName)s made future room history visible to unknown (%(visibility)s).', {\n senderName: senderName,\n visibility: event.getContent().history_visibility\n });\n }\n}\n\nfunction textForEncryptionEvent(event) {\n var senderName = event.sender ? event.sender.name : event.getSender();\n return (0, _languageHandler._t)('%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).', {\n senderName: senderName,\n algorithm: event.getContent().algorithm\n });\n}\n\n// Currently will only display a change if a user's power level is changed\nfunction textForPowerEvent(event) {\n var senderName = event.sender ? event.sender.name : event.getSender();\n if (!event.getPrevContent() || !event.getPrevContent().users) {\n return '';\n }\n var userDefault = event.getContent().users_default || 0;\n // Construct set of userIds\n var users = [];\n (0, _keys2.default)(event.getContent().users).forEach(function (userId) {\n if (users.indexOf(userId) === -1) users.push(userId);\n });\n (0, _keys2.default)(event.getPrevContent().users).forEach(function (userId) {\n if (users.indexOf(userId) === -1) users.push(userId);\n });\n var diff = [];\n // XXX: This is also surely broken for i18n\n users.forEach(function (userId) {\n // Previous power level\n var from = event.getPrevContent().users[userId];\n // Current power level\n var to = event.getContent().users[userId];\n if (to !== from) {\n diff.push((0, _languageHandler._t)('%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s', {\n userId: userId,\n fromPowerLevel: Roles.textualPowerLevel(from, userDefault),\n toPowerLevel: Roles.textualPowerLevel(to, userDefault)\n }));\n }\n });\n if (!diff.length) {\n return '';\n }\n return (0, _languageHandler._t)('%(senderName)s changed the power level of %(powerLevelDiffText)s.', {\n senderName: senderName,\n powerLevelDiffText: diff.join(\", \")\n });\n}\n\nfunction textForPinnedEvent(event) {\n var senderName = event.getSender();\n return (0, _languageHandler._t)(\"%(senderName)s changed the pinned messages for the room.\", { senderName: senderName });\n}\n\nfunction textForWidgetEvent(event) {\n var senderName = event.getSender();\n\n var _event$getPrevContent = event.getPrevContent(),\n prevName = _event$getPrevContent.name,\n prevType = _event$getPrevContent.type,\n prevUrl = _event$getPrevContent.url;\n\n var _ref = event.getContent() || {},\n name = _ref.name,\n type = _ref.type,\n url = _ref.url;\n\n var widgetName = name || prevName || type || prevType || '';\n // Apply sentence case to widget name\n if (widgetName && widgetName.length > 0) {\n widgetName = widgetName[0].toUpperCase() + widgetName.slice(1) + ' ';\n }\n\n // If the widget was removed, its content should be {}, but this is sufficiently\n // equivalent to that condition.\n if (url) {\n if (prevUrl) {\n return (0, _languageHandler._t)('%(widgetName)s widget modified by %(senderName)s', {\n widgetName: widgetName, senderName: senderName\n });\n } else {\n return (0, _languageHandler._t)('%(widgetName)s widget added by %(senderName)s', {\n widgetName: widgetName, senderName: senderName\n });\n }\n } else {\n return (0, _languageHandler._t)('%(widgetName)s widget removed by %(senderName)s', {\n widgetName: widgetName, senderName: senderName\n });\n }\n}\n\nvar handlers = {\n 'm.room.message': textForMessageEvent,\n 'm.call.invite': textForCallInviteEvent,\n 'm.call.answer': textForCallAnswerEvent,\n 'm.call.hangup': textForCallHangupEvent\n};\n\nvar stateHandlers = {\n 'm.room.aliases': textForRoomAliasesEvent,\n 'm.room.canonical_alias': textForCanonicalAliasEvent,\n 'm.room.name': textForRoomNameEvent,\n 'm.room.topic': textForTopicEvent,\n 'm.room.member': textForMemberEvent,\n 'm.room.third_party_invite': textForThreePidInviteEvent,\n 'm.room.history_visibility': textForHistoryVisibilityEvent,\n 'm.room.encryption': textForEncryptionEvent,\n 'm.room.power_levels': textForPowerEvent,\n 'm.room.pinned_events': textForPinnedEvent,\n 'm.room.server_acl': textForServerACLEvent,\n\n 'im.vector.modular.widgets': textForWidgetEvent\n};\n\nmodule.exports = {\n textForEvent: function textForEvent(ev) {\n var handler = (ev.isState() ? stateHandlers : handlers)[ev.getType()];\n if (handler) return handler(ev);\n return '';\n }\n};\n//# sourceMappingURL=TextForEvent.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getUnknownDevicesForRoom = undefined;\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\n/**\n * Gets all crypto devices in a room that are marked neither known\n * nor verified.\n *\n * @param {MatrixClient} matrixClient A MatrixClient\n * @param {Room} room js-sdk room object representing the room\n * @return {Promise} A promise which resolves to a map userId->deviceId->{@link\n * module:crypto~DeviceInfo|DeviceInfo}.\n */\nvar getUnknownDevicesForRoom = exports.getUnknownDevicesForRoom = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(matrixClient, room) {\n var roomMembers, devices, unknownDevices;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(room.getEncryptionTargetMembers().map(function (m) {\n return m.userId;\n }));\n\n case 2:\n roomMembers = _context.sent;\n _context.next = 5;\n return (0, _bluebird.resolve)(matrixClient.downloadKeys(roomMembers, false));\n\n case 5:\n devices = _context.sent;\n unknownDevices = {};\n // This is all devices in this room, so find the unknown ones.\n\n (0, _keys2.default)(devices).forEach(function (userId) {\n (0, _keys2.default)(devices[userId]).map(function (deviceId) {\n var device = devices[userId][deviceId];\n\n if (device.isUnverified() && !device.isKnown()) {\n if (unknownDevices[userId] === undefined) {\n unknownDevices[userId] = {};\n }\n unknownDevices[userId][deviceId] = device;\n }\n });\n });\n return _context.abrupt('return', unknownDevices);\n\n case 9:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function getUnknownDevicesForRoom(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\nexports.markAllDevicesKnown = markAllDevicesKnown;\nexports.showUnknownDeviceDialogForMessages = showUnknownDeviceDialogForMessages;\nexports.showUnknownDeviceDialogForCalls = showUnknownDeviceDialogForCalls;\n\nvar _Resend = require('./Resend');\n\nvar _Resend2 = _interopRequireDefault(_Resend);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Mark all given devices as 'known'\n *\n * @param {MatrixClient} matrixClient A MatrixClient\n * @param {Object} devices Map from userid -> deviceid -> deviceinfo\n */\nfunction markAllDevicesKnown(matrixClient, devices) {\n (0, _keys2.default)(devices).forEach(function (userId) {\n (0, _keys2.default)(devices[userId]).map(function (deviceId) {\n matrixClient.setDeviceKnown(userId, deviceId, true);\n });\n });\n} /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction focusComposer() {\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n}\n\n/**\n * Show the UnknownDeviceDialog for a given room. The dialog will inform the user\n * that messages they sent to this room have not been sent due to unknown devices\n * being present.\n *\n * @param {MatrixClient} matrixClient A MatrixClient\n * @param {Room} room js-sdk room object representing the room\n */\nfunction showUnknownDeviceDialogForMessages(matrixClient, room) {\n getUnknownDevicesForRoom(matrixClient, room).then(function (unknownDevices) {\n var onSendClicked = function onSendClicked() {\n _Resend2.default.resendUnsentEvents(room);\n };\n\n var UnknownDeviceDialog = _index2.default.getComponent('dialogs.UnknownDeviceDialog');\n _Modal2.default.createTrackedDialog('Unknown Device Dialog', '', UnknownDeviceDialog, {\n room: room,\n devices: unknownDevices,\n sendAnywayLabel: (0, _languageHandler._t)(\"Send anyway\"),\n sendLabel: (0, _languageHandler._t)(\"Send\"),\n onSend: onSendClicked,\n onFinished: focusComposer\n }, 'mx_Dialog_unknownDevice');\n });\n}\n\n/**\n * Show the UnknownDeviceDialog for a given room. The dialog will inform the user\n * that a call they tried to place or answer in the room couldn't be placed or\n * answered due to unknown devices being present.\n *\n * @param {MatrixClient} matrixClient A MatrixClient\n * @param {Room} room js-sdk room object representing the room\n * @param {func} sendAnyway Function called when the 'call anyway' or 'call'\n * button is pressed. This should attempt to place or answer the call again.\n * @param {string} sendAnywayLabel Label for the button displayed to retry the call\n * when unknown devices are still present (eg. \"Call Anyway\")\n * @param {string} sendLabel Label for the button displayed to retry the call\n * after all devices have been verified (eg. \"Call\")\n */\nfunction showUnknownDeviceDialogForCalls(matrixClient, room, sendAnyway, sendAnywayLabel, sendLabel) {\n getUnknownDevicesForRoom(matrixClient, room).then(function (unknownDevices) {\n var UnknownDeviceDialog = _index2.default.getComponent('dialogs.UnknownDeviceDialog');\n _Modal2.default.createTrackedDialog('Unknown Device Dialog', '', UnknownDeviceDialog, {\n room: room,\n devices: unknownDevices,\n sendAnywayLabel: sendAnywayLabel,\n sendLabel: sendLabel,\n onSend: sendAnyway\n }, 'mx_Dialog_unknownDevice');\n });\n}\n//# sourceMappingURL=cryptodevices.js.map","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport Promise from 'bluebird';\nimport request from 'browser-request';\n\nexport async function getVectorConfig(relativeLocation) {\n if (relativeLocation === undefined) relativeLocation = '';\n if (relativeLocation !== '' && !relativeLocation.endsWith('/')) relativeLocation += '/';\n try {\n const configJson = await getConfig(`${relativeLocation}config.${document.domain}.json`);\n // 404s succeed with an empty json config, so check that there are keys\n if (Object.keys(configJson).length === 0) {\n throw new Error(); // throw to enter the catch\n }\n return configJson;\n } catch (e) {\n return await getConfig(relativeLocation + \"config.json\");\n }\n}\n\nfunction getConfig(configJsonFilename) {\n return new Promise(function(resolve, reject) {\n request(\n { method: \"GET\", url: configJsonFilename },\n (err, response, body) => {\n if (err || response.status < 200 || response.status >= 300) {\n // Lack of a config isn't an error, we should\n // just use the defaults.\n // Also treat a blank config as no config, assuming\n // the status code is 0, because we don't get 404s\n // from file: URIs so this is the only way we can\n // not fail if the file doesn't exist when loading\n // from a file:// URI.\n if (response) {\n if (response.status == 404 || (response.status == 0 && body == '')) {\n resolve({});\n }\n }\n reject({err: err, response: response});\n return;\n }\n\n // We parse the JSON ourselves rather than use the JSON\n // parameter, since this throws a parse error on empty\n // which breaks if there's no config.json and we're\n // loading from the filesystem (see above).\n resolve(JSON.parse(body));\n },\n );\n });\n}\n","var encode = require(\"./lib/encode.js\"),\n decode = require(\"./lib/decode.js\");\n\nexports.decode = function(data, level) {\n return (!level || level <= 0 ? decode.XML : decode.HTML)(data);\n};\n\nexports.decodeStrict = function(data, level) {\n return (!level || level <= 0 ? decode.XML : decode.HTMLStrict)(data);\n};\n\nexports.encode = function(data, level) {\n return (!level || level <= 0 ? encode.XML : encode.HTML)(data);\n};\n\nexports.encodeXML = encode.XML;\n\nexports.encodeHTML4 = exports.encodeHTML5 = exports.encodeHTML = encode.HTML;\n\nexports.decodeXML = exports.decodeXMLStrict = decode.XML;\n\nexports.decodeHTML4 = exports.decodeHTML5 = exports.decodeHTML = decode.HTML;\n\nexports.decodeHTML4Strict = exports.decodeHTML5Strict = exports.decodeHTMLStrict = decode.HTMLStrict;\n\nexports.escape = encode.escape;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _node = require('./node');\n\nvar _node2 = _interopRequireDefault(_node);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS declaration.\n *\n * @extends Node\n *\n * @example\n * const root = postcss.parse('a { color: black }');\n * const decl = root.first.first;\n * decl.type //=> 'decl'\n * decl.toString() //=> ' color: black'\n */\nvar Declaration = function (_Node) {\n _inherits(Declaration, _Node);\n\n function Declaration(defaults) {\n _classCallCheck(this, Declaration);\n\n var _this = _possibleConstructorReturn(this, _Node.call(this, defaults));\n\n _this.type = 'decl';\n return _this;\n }\n\n /**\n * @memberof Declaration#\n * @member {string} prop - the declaration’s property name\n *\n * @example\n * const root = postcss.parse('a { color: black }');\n * const decl = root.first.first;\n * decl.prop //=> 'color'\n */\n\n /**\n * @memberof Declaration#\n * @member {string} value - the declaration’s value\n *\n * @example\n * const root = postcss.parse('a { color: black }');\n * const decl = root.first.first;\n * decl.value //=> 'black'\n */\n\n /**\n * @memberof Declaration#\n * @member {boolean} important - `true` if the declaration\n * has an !important annotation.\n *\n * @example\n * const root = postcss.parse('a { color: black !important; color: red }');\n * root.first.first.important //=> true\n * root.first.last.important //=> undefined\n */\n\n /**\n * @memberof Declaration#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `between`: the symbols between the property and value\n * for declarations.\n * * `important`: the content of the important statement,\n * if it is not just `!important`.\n *\n * PostCSS cleans declaration from comments and extra spaces,\n * but it stores origin content in raws properties.\n * As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '\\n ', between: ':' }\n */\n\n return Declaration;\n}(_node2.default);\n\nexports.default = Declaration;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRlY2xhcmF0aW9uLmVzNiJdLCJuYW1lcyI6WyJEZWNsYXJhdGlvbiIsImRlZmF1bHRzIiwidHlwZSIsIk5vZGUiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7O0lBV01BLFc7OztBQUVGLHVCQUFZQyxRQUFaLEVBQXNCO0FBQUE7O0FBQUEsaURBQ2xCLGlCQUFNQSxRQUFOLENBRGtCOztBQUVsQixVQUFLQyxJQUFMLEdBQVksTUFBWjtBQUZrQjtBQUdyQjs7QUFFRDs7Ozs7Ozs7OztBQVVBOzs7Ozs7Ozs7O0FBVUE7Ozs7Ozs7Ozs7O0FBV0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBdENzQkMsYzs7a0JBaUVYSCxXIiwiZmlsZSI6ImRlY2xhcmF0aW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE5vZGUgZnJvbSAnLi9ub2RlJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgQ1NTIGRlY2xhcmF0aW9uLlxuICpcbiAqIEBleHRlbmRzIE5vZGVcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2EgeyBjb2xvcjogYmxhY2sgfScpO1xuICogY29uc3QgZGVjbCA9IHJvb3QuZmlyc3QuZmlyc3Q7XG4gKiBkZWNsLnR5cGUgICAgICAgLy89PiAnZGVjbCdcbiAqIGRlY2wudG9TdHJpbmcoKSAvLz0+ICcgY29sb3I6IGJsYWNrJ1xuICovXG5jbGFzcyBEZWNsYXJhdGlvbiBleHRlbmRzIE5vZGUge1xuXG4gICAgY29uc3RydWN0b3IoZGVmYXVsdHMpIHtcbiAgICAgICAgc3VwZXIoZGVmYXVsdHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnZGVjbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgICAqIEBtZW1iZXIge3N0cmluZ30gcHJvcCAtIHRoZSBkZWNsYXJhdGlvbuKAmXMgcHJvcGVydHkgbmFtZVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjayB9Jyk7XG4gICAgICogY29uc3QgZGVjbCA9IHJvb3QuZmlyc3QuZmlyc3Q7XG4gICAgICogZGVjbC5wcm9wIC8vPT4gJ2NvbG9yJ1xuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgICAqIEBtZW1iZXIge3N0cmluZ30gdmFsdWUgLSB0aGUgZGVjbGFyYXRpb27igJlzIHZhbHVlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgY29sb3I6IGJsYWNrIH0nKTtcbiAgICAgKiBjb25zdCBkZWNsID0gcm9vdC5maXJzdC5maXJzdDtcbiAgICAgKiBkZWNsLnZhbHVlIC8vPT4gJ2JsYWNrJ1xuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgICAqIEBtZW1iZXIge2Jvb2xlYW59IGltcG9ydGFudCAtIGB0cnVlYCBpZiB0aGUgZGVjbGFyYXRpb25cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgYW4gIWltcG9ydGFudCBhbm5vdGF0aW9uLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjayAhaW1wb3J0YW50OyBjb2xvcjogcmVkIH0nKTtcbiAgICAgKiByb290LmZpcnN0LmZpcnN0LmltcG9ydGFudCAvLz0+IHRydWVcbiAgICAgKiByb290LmZpcnN0Lmxhc3QuaW1wb3J0YW50ICAvLz0+IHVuZGVmaW5lZFxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyAtIEluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGJ5dGUtdG8tYnl0ZSBlcXVhbFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgc3RyaW5nIGFzIGl0IHdhcyBpbiB0aGUgb3JpZ2luIGlucHV0LlxuICAgICAqXG4gICAgICogRXZlcnkgcGFyc2VyIHNhdmVzIGl0cyBvd24gcHJvcGVydGllcyxcbiAgICAgKiBidXQgdGhlIGRlZmF1bHQgQ1NTIHBhcnNlciB1c2VzOlxuICAgICAqXG4gICAgICogKiBgYmVmb3JlYDogdGhlIHNwYWNlIHN5bWJvbHMgYmVmb3JlIHRoZSBub2RlLiBJdCBhbHNvIHN0b3JlcyBgKmBcbiAgICAgKiAgIGFuZCBgX2Agc3ltYm9scyBiZWZvcmUgdGhlIGRlY2xhcmF0aW9uIChJRSBoYWNrKS5cbiAgICAgKiAqIGBiZXR3ZWVuYDogdGhlIHN5bWJvbHMgYmV0d2VlbiB0aGUgcHJvcGVydHkgYW5kIHZhbHVlXG4gICAgICogICBmb3IgZGVjbGFyYXRpb25zLlxuICAgICAqICogYGltcG9ydGFudGA6IHRoZSBjb250ZW50IG9mIHRoZSBpbXBvcnRhbnQgc3RhdGVtZW50LFxuICAgICAqICAgaWYgaXQgaXMgbm90IGp1c3QgYCFpbXBvcnRhbnRgLlxuICAgICAqXG4gICAgICogUG9zdENTUyBjbGVhbnMgZGVjbGFyYXRpb24gZnJvbSBjb21tZW50cyBhbmQgZXh0cmEgc3BhY2VzLFxuICAgICAqIGJ1dCBpdCBzdG9yZXMgb3JpZ2luIGNvbnRlbnQgaW4gcmF3cyBwcm9wZXJ0aWVzLlxuICAgICAqIEFzIHN1Y2gsIGlmIHlvdSBkb27igJl0IGNoYW5nZSBhIGRlY2xhcmF0aW9u4oCZcyB2YWx1ZSxcbiAgICAgKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSByYXcgdmFsdWUgd2l0aCBjb21tZW50cy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2Ege1xcbiAgY29sb3I6YmxhY2tcXG59JylcbiAgICAgKiByb290LmZpcnN0LmZpcnN0LnJhd3MgLy89PiB7IGJlZm9yZTogJ1xcbiAgJywgYmV0d2VlbjogJzonIH1cbiAgICAgKi9cblxufVxuXG5leHBvcnQgZGVmYXVsdCBEZWNsYXJhdGlvbjtcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _cssSyntaxError = require('./css-syntax-error');\n\nvar _cssSyntaxError2 = _interopRequireDefault(_cssSyntaxError);\n\nvar _stringifier = require('./stringifier');\n\nvar _stringifier2 = _interopRequireDefault(_stringifier);\n\nvar _stringify = require('./stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _warnOnce = require('./warn-once');\n\nvar _warnOnce2 = _interopRequireDefault(_warnOnce);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar cloneNode = function cloneNode(obj, parent) {\n var cloned = new obj.constructor();\n\n for (var i in obj) {\n if (!obj.hasOwnProperty(i)) continue;\n var value = obj[i];\n var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);\n\n if (i === 'parent' && type === 'object') {\n if (parent) cloned[i] = parent;\n } else if (i === 'source') {\n cloned[i] = value;\n } else if (value instanceof Array) {\n cloned[i] = value.map(function (j) {\n return cloneNode(j, cloned);\n });\n } else {\n if (type === 'object' && value !== null) value = cloneNode(value);\n cloned[i] = value;\n }\n }\n\n return cloned;\n};\n\n/**\n * All node classes inherit the following common methods.\n *\n * @abstract\n */\n\nvar Node = function () {\n\n /**\n * @param {object} [defaults] - value for node properties\n */\n function Node() {\n var defaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Node);\n\n this.raws = {};\n if ((typeof defaults === 'undefined' ? 'undefined' : _typeof(defaults)) !== 'object' && typeof defaults !== 'undefined') {\n throw new Error('PostCSS nodes constructor accepts object, not ' + JSON.stringify(defaults));\n }\n for (var name in defaults) {\n this[name] = defaults[name];\n }\n }\n\n /**\n * Returns a CssSyntaxError instance containing the original position\n * of the node in the source, showing line and column numbers and also\n * a small excerpt to facilitate debugging.\n *\n * If present, an input source map will be used to get the original position\n * of the source, even from a previous compilation step\n * (e.g., from Sass compilation).\n *\n * This method produces very useful error messages.\n *\n * @param {string} message - error description\n * @param {object} [opts] - options\n * @param {string} opts.plugin - plugin name that created this error.\n * PostCSS will set it automatically.\n * @param {string} opts.word - a word inside a node’s string that should\n * be highlighted as the source of the error\n * @param {number} opts.index - an index inside a node’s string that should\n * be highlighted as the source of the error\n *\n * @return {CssSyntaxError} error object to throw it\n *\n * @example\n * if ( !variables[name] ) {\n * throw decl.error('Unknown variable ' + name, { word: name });\n * // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black\n * // color: $black\n * // a\n * // ^\n * // background: white\n * }\n */\n\n\n Node.prototype.error = function error(message) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.source) {\n var pos = this.positionBy(opts);\n return this.source.input.error(message, pos.line, pos.column, opts);\n } else {\n return new _cssSyntaxError2.default(message);\n }\n };\n\n /**\n * This method is provided as a convenience wrapper for {@link Result#warn}.\n *\n * @param {Result} result - the {@link Result} instance\n * that will receive the warning\n * @param {string} text - warning message\n * @param {object} [opts] - options\n * @param {string} opts.plugin - plugin name that created this warning.\n * PostCSS will set it automatically.\n * @param {string} opts.word - a word inside a node’s string that should\n * be highlighted as the source of the warning\n * @param {number} opts.index - an index inside a node’s string that should\n * be highlighted as the source of the warning\n *\n * @return {Warning} created warning object\n *\n * @example\n * const plugin = postcss.plugin('postcss-deprecated', () => {\n * return (root, result) => {\n * root.walkDecls('bad', decl => {\n * decl.warn(result, 'Deprecated property bad');\n * });\n * };\n * });\n */\n\n\n Node.prototype.warn = function warn(result, text, opts) {\n var data = { node: this };\n for (var i in opts) {\n data[i] = opts[i];\n }return result.warn(text, data);\n };\n\n /**\n * Removes the node from its parent and cleans the parent properties\n * from the node and its children.\n *\n * @example\n * if ( decl.prop.match(/^-webkit-/) ) {\n * decl.remove();\n * }\n *\n * @return {Node} node to make calls chain\n */\n\n\n Node.prototype.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = undefined;\n return this;\n };\n\n /**\n * Returns a CSS string representing the node.\n *\n * @param {stringifier|syntax} [stringifier] - a syntax to use\n * in string generation\n *\n * @return {string} CSS string of this node\n *\n * @example\n * postcss.rule({ selector: 'a' }).toString() //=> \"a {}\"\n */\n\n\n Node.prototype.toString = function toString() {\n var stringifier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _stringify2.default;\n\n if (stringifier.stringify) stringifier = stringifier.stringify;\n var result = '';\n stringifier(this, function (i) {\n result += i;\n });\n return result;\n };\n\n /**\n * Returns a clone of the node.\n *\n * The resulting cloned node and its (cloned) children will have\n * a clean parent and code style properties.\n *\n * @param {object} [overrides] - new properties to override in the clone.\n *\n * @example\n * const cloned = decl.clone({ prop: '-moz-' + decl.prop });\n * cloned.raws.before //=> undefined\n * cloned.parent //=> undefined\n * cloned.toString() //=> -moz-transform: scale(0)\n *\n * @return {Node} clone of the node\n */\n\n\n Node.prototype.clone = function clone() {\n var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var cloned = cloneNode(this);\n for (var name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n };\n\n /**\n * Shortcut to clone the node and insert the resulting cloned node\n * before the current node.\n *\n * @param {object} [overrides] - new properties to override in the clone.\n *\n * @example\n * decl.cloneBefore({ prop: '-moz-' + decl.prop });\n *\n * @return {Node} - new node\n */\n\n\n Node.prototype.cloneBefore = function cloneBefore() {\n var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n };\n\n /**\n * Shortcut to clone the node and insert the resulting cloned node\n * after the current node.\n *\n * @param {object} [overrides] - new properties to override in the clone.\n *\n * @return {Node} - new node\n */\n\n\n Node.prototype.cloneAfter = function cloneAfter() {\n var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n };\n\n /**\n * Inserts node(s) before the current node and removes the current node.\n *\n * @param {...Node} nodes - node(s) to replace current one\n *\n * @example\n * if ( atrule.name == 'mixin' ) {\n * atrule.replaceWith(mixinRules[atrule.params]);\n * }\n *\n * @return {Node} current node to methods chain\n */\n\n\n Node.prototype.replaceWith = function replaceWith() {\n if (this.parent) {\n for (var _len = arguments.length, nodes = Array(_len), _key = 0; _key < _len; _key++) {\n nodes[_key] = arguments[_key];\n }\n\n for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var node = _ref;\n\n this.parent.insertBefore(this, node);\n }\n\n this.remove();\n }\n\n return this;\n };\n\n Node.prototype.moveTo = function moveTo(newParent) {\n (0, _warnOnce2.default)('Node#moveTo was deprecated. Use Container#append.');\n this.cleanRaws(this.root() === newParent.root());\n this.remove();\n newParent.append(this);\n return this;\n };\n\n Node.prototype.moveBefore = function moveBefore(otherNode) {\n (0, _warnOnce2.default)('Node#moveBefore was deprecated. Use Node#before.');\n this.cleanRaws(this.root() === otherNode.root());\n this.remove();\n otherNode.parent.insertBefore(otherNode, this);\n return this;\n };\n\n Node.prototype.moveAfter = function moveAfter(otherNode) {\n (0, _warnOnce2.default)('Node#moveAfter was deprecated. Use Node#after.');\n this.cleanRaws(this.root() === otherNode.root());\n this.remove();\n otherNode.parent.insertAfter(otherNode, this);\n return this;\n };\n\n /**\n * Returns the next child of the node’s parent.\n * Returns `undefined` if the current node is the last child.\n *\n * @return {Node|undefined} next node\n *\n * @example\n * if ( comment.text === 'delete next' ) {\n * const next = comment.next();\n * if ( next ) {\n * next.remove();\n * }\n * }\n */\n\n\n Node.prototype.next = function next() {\n if (!this.parent) return undefined;\n var index = this.parent.index(this);\n return this.parent.nodes[index + 1];\n };\n\n /**\n * Returns the previous child of the node’s parent.\n * Returns `undefined` if the current node is the first child.\n *\n * @return {Node|undefined} previous node\n *\n * @example\n * const annotation = decl.prev();\n * if ( annotation.type == 'comment' ) {\n * readAnnotation(annotation.text);\n * }\n */\n\n\n Node.prototype.prev = function prev() {\n if (!this.parent) return undefined;\n var index = this.parent.index(this);\n return this.parent.nodes[index - 1];\n };\n\n /**\n * Insert new node before current node to current node’s parent.\n *\n * Just alias for `node.parent.insertBefore(node, add)`.\n *\n * @param {Node|object|string|Node[]} add - new node\n *\n * @return {Node} this node for methods chain.\n *\n * @example\n * decl.before('content: \"\"');\n */\n\n\n Node.prototype.before = function before(add) {\n this.parent.insertBefore(this, add);\n return this;\n };\n\n /**\n * Insert new node after current node to current node’s parent.\n *\n * Just alias for `node.parent.insertAfter(node, add)`.\n *\n * @param {Node|object|string|Node[]} add - new node\n *\n * @return {Node} this node for methods chain.\n *\n * @example\n * decl.after('color: black');\n */\n\n\n Node.prototype.after = function after(add) {\n this.parent.insertAfter(this, add);\n return this;\n };\n\n Node.prototype.toJSON = function toJSON() {\n var fixed = {};\n\n for (var name in this) {\n if (!this.hasOwnProperty(name)) continue;\n if (name === 'parent') continue;\n var value = this[name];\n\n if (value instanceof Array) {\n fixed[name] = value.map(function (i) {\n if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && i.toJSON) {\n return i.toJSON();\n } else {\n return i;\n }\n });\n } else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.toJSON) {\n fixed[name] = value.toJSON();\n } else {\n fixed[name] = value;\n }\n }\n\n return fixed;\n };\n\n /**\n * Returns a {@link Node#raws} value. If the node is missing\n * the code style property (because the node was manually built or cloned),\n * PostCSS will try to autodetect the code style property by looking\n * at other nodes in the tree.\n *\n * @param {string} prop - name of code style property\n * @param {string} [defaultType] - name of default value, it can be missed\n * if the value is the same as prop\n *\n * @example\n * const root = postcss.parse('a { background: white }');\n * root.nodes[0].append({ prop: 'color', value: 'black' });\n * root.nodes[0].nodes[1].raws.before //=> undefined\n * root.nodes[0].nodes[1].raw('before') //=> ' '\n *\n * @return {string} code style value\n */\n\n\n Node.prototype.raw = function raw(prop, defaultType) {\n var str = new _stringifier2.default();\n return str.raw(this, prop, defaultType);\n };\n\n /**\n * Finds the Root instance of the node’s tree.\n *\n * @example\n * root.nodes[0].nodes[0].root() === root\n *\n * @return {Root} root parent\n */\n\n\n Node.prototype.root = function root() {\n var result = this;\n while (result.parent) {\n result = result.parent;\n }return result;\n };\n\n Node.prototype.cleanRaws = function cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n };\n\n Node.prototype.positionInside = function positionInside(index) {\n var string = this.toString();\n var column = this.source.start.column;\n var line = this.source.start.line;\n\n for (var i = 0; i < index; i++) {\n if (string[i] === '\\n') {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n\n return { line: line, column: column };\n };\n\n Node.prototype.positionBy = function positionBy(opts) {\n var pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index);\n } else if (opts.word) {\n var index = this.toString().indexOf(opts.word);\n if (index !== -1) pos = this.positionInside(index);\n }\n return pos;\n };\n\n /**\n * @memberof Node#\n * @member {string} type - String representing the node’s type.\n * Possible values are `root`, `atrule`, `rule`,\n * `decl`, or `comment`.\n *\n * @example\n * postcss.decl({ prop: 'color', value: 'black' }).type //=> 'decl'\n */\n\n /**\n * @memberof Node#\n * @member {Container} parent - the node’s parent node.\n *\n * @example\n * root.nodes[0].parent == root;\n */\n\n /**\n * @memberof Node#\n * @member {source} source - the input source of the node\n *\n * The property is used in source map generation.\n *\n * If you create a node manually (e.g., with `postcss.decl()`),\n * that node will not have a `source` property and will be absent\n * from the source map. For this reason, the plugin developer should\n * consider cloning nodes to create new ones (in which case the new node’s\n * source will reference the original, cloned node) or setting\n * the `source` property manually.\n *\n * ```js\n * // Bad\n * const prefixed = postcss.decl({\n * prop: '-moz-' + decl.prop,\n * value: decl.value\n * });\n *\n * // Good\n * const prefixed = decl.clone({ prop: '-moz-' + decl.prop });\n * ```\n *\n * ```js\n * if ( atrule.name == 'add-link' ) {\n * const rule = postcss.rule({ selector: 'a', source: atrule.source });\n * atrule.parent.insertBefore(atrule, rule);\n * }\n * ```\n *\n * @example\n * decl.source.input.from //=> '/home/ai/a.sass'\n * decl.source.start //=> { line: 10, column: 2 }\n * decl.source.end //=> { line: 10, column: 12 }\n */\n\n /**\n * @memberof Node#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `after`: the space symbols after the last child of the node\n * to the end of the node.\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `semicolon`: contains true if the last child has\n * an (optional) semicolon.\n * * `afterName`: the space between the at-rule name and its parameters.\n * * `left`: the space symbols between `/*` and the comment’s text.\n * * `right`: the space symbols between the comment’s text\n * and <code>*/</code>.\n * * `important`: the content of the important statement,\n * if it is not just `!important`.\n *\n * PostCSS cleans selectors, declaration values and at-rule parameters\n * from comments and extra spaces, but it stores origin content in raws\n * properties. As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '\\n ', between: ':' }\n */\n\n return Node;\n}();\n\nexports.default = Node;\n\n/**\n * @typedef {object} position\n * @property {number} line - source line in file\n * @property {number} column - source column in file\n */\n\n/**\n * @typedef {object} source\n * @property {Input} input - {@link Input} with input file\n * @property {position} start - The starting position of the node’s source\n * @property {position} end - The ending position of the node’s source\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGUuZXM2Il0sIm5hbWVzIjpbImNsb25lTm9kZSIsIm9iaiIsInBhcmVudCIsImNsb25lZCIsImNvbnN0cnVjdG9yIiwiaSIsImhhc093blByb3BlcnR5IiwidmFsdWUiLCJ0eXBlIiwiQXJyYXkiLCJtYXAiLCJqIiwiTm9kZSIsImRlZmF1bHRzIiwicmF3cyIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsIm5hbWUiLCJlcnJvciIsIm1lc3NhZ2UiLCJvcHRzIiwic291cmNlIiwicG9zIiwicG9zaXRpb25CeSIsImlucHV0IiwibGluZSIsImNvbHVtbiIsIkNzc1N5bnRheEVycm9yIiwid2FybiIsInJlc3VsdCIsInRleHQiLCJkYXRhIiwibm9kZSIsInJlbW92ZSIsInJlbW92ZUNoaWxkIiwidW5kZWZpbmVkIiwidG9TdHJpbmciLCJzdHJpbmdpZmllciIsImNsb25lIiwib3ZlcnJpZGVzIiwiY2xvbmVCZWZvcmUiLCJpbnNlcnRCZWZvcmUiLCJjbG9uZUFmdGVyIiwiaW5zZXJ0QWZ0ZXIiLCJyZXBsYWNlV2l0aCIsIm5vZGVzIiwibW92ZVRvIiwibmV3UGFyZW50IiwiY2xlYW5SYXdzIiwicm9vdCIsImFwcGVuZCIsIm1vdmVCZWZvcmUiLCJvdGhlck5vZGUiLCJtb3ZlQWZ0ZXIiLCJuZXh0IiwiaW5kZXgiLCJwcmV2IiwiYmVmb3JlIiwiYWRkIiwiYWZ0ZXIiLCJ0b0pTT04iLCJmaXhlZCIsInJhdyIsInByb3AiLCJkZWZhdWx0VHlwZSIsInN0ciIsIlN0cmluZ2lmaWVyIiwia2VlcEJldHdlZW4iLCJiZXR3ZWVuIiwicG9zaXRpb25JbnNpZGUiLCJzdHJpbmciLCJzdGFydCIsIndvcmQiLCJpbmRleE9mIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7QUFFQSxJQUFJQSxZQUFZLFNBQVpBLFNBQVksQ0FBVUMsR0FBVixFQUFlQyxNQUFmLEVBQXVCO0FBQ25DLFFBQUlDLFNBQVMsSUFBSUYs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LElBQW5CLEVBQTBCO0FBQ3RCc0IseUJBQVMsQ0FBVDtBQUNBRCx3QkFBUyxDQUFUO0FBQ0gsYUFIRCxNQUdPO0FBQ0hDLDBCQUFVLENBQVY7QUFDSDtBQUNKOztBQUVELGVBQU8sRUFBRUQsVUFBRixFQUFRQyxjQUFSLEVBQVA7QUFDSCxLOzttQkFFREgsVSx1QkFBV0gsSSxFQUFNO0FBQ2IsWUFBSUUsTUFBTSxLQUFLRCxNQUFMLENBQVlrRCxLQUF0QjtBQUNBLFlBQUtuRCxLQUFLbUMsS0FBVixFQUFrQjtBQUNkakMsa0JBQU0sS0FBSytDLGNBQUwsQ0FBb0JqRCxLQUFLbUMsS0FBekIsQ0FBTjtBQUNILFNBRkQsTUFFTyxJQUFLbkMsS0FBS29ELElBQVYsRUFBaUI7QUFDcEIsZ0JBQUlqQixRQUFRLEtBQUtuQixRQUFMLEdBQWdCcUMsT0FBaEIsQ0FBd0JyRCxLQUFLb0QsSUFBN0IsQ0FBWjtBQUNBLGdCQUFLakIsVUFBVSxDQUFDLENBQWhCLEVBQW9CakMsTUFBTSxLQUFLK0MsY0FBTCxDQUFvQmQsS0FBcEIsQ0FBTjtBQUN2QjtBQUNELGVBQU9qQyxHQUFQO0FBQ0gsSzs7QUFFRDs7Ozs7Ozs7OztBQVVBOzs7Ozs7OztBQVFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCQW9DV1gsSTs7QUFFZjs7Ozs7O0FBTUEiLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDc3NTeW50YXhFcnJvciBmcm9tICcuL2Nzcy1zeW50YXgtZXJyb3InO1xuaW1wb3J0IFN0cmluZ2lmaWVyICAgIGZyb20gJy4vc3RyaW5naWZpZXInO1xuaW1wb3J0IHN0cmluZ2lmeSAgICAgIGZyb20gJy4vc3RyaW5naWZ5JztcbmltcG9ydCB3YXJuT25jZSAgICAgICBmcm9tICcuL3dhcm4tb25jZSc7XG5cbmxldCBjbG9uZU5vZGUgPSBmdW5jdGlvbiAob2JqLCBwYXJlbnQpIHtcbiAgICBsZXQgY2xvbmVkID0gbmV3IG9iai5jb25zdHJ1Y3RvcigpO1xuXG4gICAgZm9yICggbGV0IGkgaW4gb2JqICkge1xuICAgICAgICBpZiAoICFvYmouaGFzT3duUHJvcGVydHkoaSkgKSBjb250aW51ZTtcbiAgICAgICAgbGV0IHZhbHVlID0gb2JqW2ldO1xuICAgICAgICBsZXQgdHlwZSAgPSB0eXBlb2YgdmFsdWU7XG5cbiAgICAgICAgaWYgKCBpID09PSAncGFyZW50JyAmJiB0eXBlID09PSAnb2JqZWN0JyApIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnQpIGNsb25lZFtpXSA9IHBhcmVudDtcbiAgICAgICAgfSBlbHNlIGlmICggaSA9PT0gJ3NvdXJjZScgKSB7XG4gICAgICAgICAgICBjbG9uZWRbaV0gPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmICggdmFsdWUgaW5zdGFuY2VvZiBBcnJheSApIHtcbiAgICAgICAgICAgIGNsb25lZFtpXSA9IHZhbHVlLm1hcCggaiA9PiBjbG9uZU5vZGUoaiwgY2xvbmVkKSApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCB0eXBlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCApIHZhbHVlID0gY2xvbmVOb2RlKHZhbHVlKTtcbiAgICAgICAgICAgIGNsb25lZFtpXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsb25lZDtcbn07XG5cbi8qKlxuICogQWxsIG5vZGUgY2xhc3NlcyBpbmhlcml0IHRoZSBmb2xsb3dpbmcgY29tbW9uIG1ldGhvZHMuXG4gKlxuICogQGFic3RyYWN0XG4gKi9cbmNsYXNzIE5vZGUge1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IFtkZWZhdWx0c10gLSB2YWx1ZSBmb3Igbm9kZSBwcm9wZXJ0aWVzXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoZGVmYXVsdHMgPSB7IH0pIHtcbiAgICAgICAgdGhpcy5yYXdzID0geyB9O1xuICAgICAgICBpZiAoIHR5cGVvZiBkZWZhdWx0cyAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIGRlZmF1bHRzICE9PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAnUG9zdENTUyBub2RlcyBjb25zdHJ1Y3RvciBhY2NlcHRzIG9iamVjdCwgbm90ICcgK1xuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGRlZmF1bHRzKSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yICggbGV0IG5hbWUgaW4gZGVmYXVsdHMgKSB7XG4gICAgICAgICAgICB0aGlzW25hbWVdID0gZGVmYXVsdHNbbmFtZV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgQ3NzU3ludGF4RXJyb3IgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgb3JpZ2luYWwgcG9zaXRpb25cbiAgICAgKiBvZiB0aGUgbm9kZSBpbiB0aGUgc291cmNlLCBzaG93aW5nIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzIGFuZCBhbHNvXG4gICAgICogYSBzbWFsbCBleGNlcnB0IHRvIGZhY2lsaXRhdGUgZGVidWdnaW5nLlxuICAgICAqXG4gICAgICogSWYgcHJlc2VudCwgYW4gaW5wdXQgc291cmNlIG1hcCB3aWxsIGJlIHVzZWQgdG8gZ2V0IHRoZSBvcmlnaW5hbCBwb3NpdGlvblxuICAgICAqIG9mIHRoZSBzb3VyY2UsIGV2ZW4gZnJvbSBhIHByZXZpb3VzIGNvbXBpbGF0aW9uIHN0ZXBcbiAgICAgKiAoZS5nLiwgZnJvbSBTYXNzIGNvbXBpbGF0aW9uKS5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIHByb2R1Y2VzIHZlcnkgdXNlZnVsIGVycm9yIG1lc3NhZ2VzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgICAgIC0gZXJyb3IgZGVzY3JpcHRpb25cbiAgICAgKiBAcGFyYW0ge29iamVjdH0gW29wdHNdICAgICAgLSBvcHRpb25zXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMucGx1Z2luIC0gcGx1Z2luIG5hbWUgdGhhdCBjcmVhdGVkIHRoaXMgZXJyb3IuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zdENTUyB3aWxsIHNldCBpdCBhdXRvbWF0aWNhbGx5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLndvcmQgICAtIGEgd29yZCBpbnNpZGUgYSBub2Rl4oCZcyBzdHJpbmcgdGhhdCBzaG91bGRcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBoaWdobGlnaHRlZCBhcyB0aGUgc291cmNlIG9mIHRoZSBlcnJvclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRzLmluZGV4ICAtIGFuIGluZGV4IGluc2lkZSBhIG5vZGXigJlzIHN0cmluZyB0aGF0IHNob3VsZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGhpZ2hsaWdodGVkIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIGVycm9yXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtDc3NTeW50YXhFcnJvcn0gZXJyb3Igb2JqZWN0IHRvIHRocm93IGl0XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGlmICggIXZhcmlhYmxlc1tuYW1lXSApIHtcbiAgICAgKiAgIHRocm93IGRlY2wuZXJyb3IoJ1Vua25vd24gdmFyaWFibGUgJyArIG5hbWUsIHsgd29yZDogbmFtZSB9KTtcbiAgICAgKiAgIC8vIENzc1N5bnRheEVycm9yOiBwb3N0Y3NzLXZhcnM6YS5zYXNzOjQ6MzogVW5rbm93biB2YXJpYWJsZSAkYmxhY2tcbiAgICAgKiAgIC8vICAgY29sb3I6ICRibGFja1xuICAgICAqICAgLy8gYVxuICAgICAqICAgLy8gICAgICAgICAgXlxuICAgICAqICAgLy8gICBiYWNrZ3JvdW5kOiB3aGl0ZVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBlcnJvcihtZXNzYWdlLCBvcHRzID0geyB9KSB7XG4gICAgICAgIGlmICggdGhpcy5zb3VyY2UgKSB7XG4gICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5wb3NpdGlvbkJ5KG9wdHMpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlLmlucHV0LmVycm9yKG1lc3NhZ2UsIHBvcy5saW5lLCBwb3MuY29sdW1uLCBvcHRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ3NzU3ludGF4RXJyb3IobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgZm9yIHtAbGluayBSZXN1bHQjd2Fybn0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1Jlc3VsdH0gcmVzdWx0ICAgICAgLSB0aGUge0BsaW5rIFJlc3VsdH0gaW5zdGFuY2VcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgd2FybmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0ICAgICAgICAtIHdhcm5pbmcgbWVzc2FnZVxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0c10gICAgICAtIG9wdGlvbnNcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5wbHVnaW4gLSBwbHVnaW4gbmFtZSB0aGF0IGNyZWF0ZWQgdGhpcyB3YXJuaW5nLlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3RDU1Mgd2lsbCBzZXQgaXQgYXV0b21hdGljYWxseS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy53b3JkICAgLSBhIHdvcmQgaW5zaWRlIGEgbm9kZeKAmXMgc3RyaW5nIHRoYXQgc2hvdWxkXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgaGlnaGxpZ2h0ZWQgYXMgdGhlIHNvdXJjZSBvZiB0aGUgd2FybmluZ1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRzLmluZGV4ICAtIGFuIGluZGV4IGluc2lkZSBhIG5vZGXigJlzIHN0cmluZyB0aGF0IHNob3VsZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGhpZ2hsaWdodGVkIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIHdhcm5pbmdcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1dhcm5pbmd9IGNyZWF0ZWQgd2FybmluZyBvYmplY3RcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3QgcGx1Z2luID0gcG9zdGNzcy5wbHVnaW4oJ3Bvc3Rjc3MtZGVwcmVjYXRlZCcsICgpID0+IHtcbiAgICAgKiAgIHJldHVybiAocm9vdCwgcmVzdWx0KSA9PiB7XG4gICAgICogICAgIHJvb3Qud2Fsa0RlY2xzKCdiYWQnLCBkZWNsID0+IHtcbiAgICAgKiAgICAgICBkZWNsLndhcm4ocmVzdWx0LCAnRGVwcmVjYXRlZCBwcm9wZXJ0eSBiYWQnKTtcbiAgICAgKiAgICAgfSk7XG4gICAgICogICB9O1xuICAgICAqIH0pO1xuICAgICAqL1xuICAgIHdhcm4ocmVzdWx0LCB0ZXh0LCBvcHRzKSB7XG4gICAgICAgIGxldCBkYXRhID0geyBub2RlOiB0aGlzIH07XG4gICAgICAgIGZvciAoIGxldCBpIGluIG9wdHMgKSBkYXRhW2ldID0gb3B0c1tpXTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC53YXJuKHRleHQsIGRhdGEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdGhlIG5vZGUgZnJvbSBpdHMgcGFyZW50IGFuZCBjbGVhbnMgdGhlIHBhcmVudCBwcm9wZXJ0aWVzXG4gICAgICogZnJvbSB0aGUgbm9kZSBhbmQgaXRzIGNoaWxkcmVuLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBpZiAoIGRlY2wucHJvcC5tYXRjaCgvXi13ZWJraXQtLykgKSB7XG4gICAgICogICBkZWNsLnJlbW92ZSgpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge05vZGV9IG5vZGUgdG8gbWFrZSBjYWxscyBjaGFpblxuICAgICAqL1xuICAgIHJlbW92ZSgpIHtcbiAgICAgICAgaWYgKCB0aGlzLnBhcmVudCApIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgQ1NTIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIG5vZGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ2lmaWVyfHN5bnRheH0gW3N0cmluZ2lmaWVyXSAtIGEgc3ludGF4IHRvIHVzZVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gc3RyaW5nIGdlbmVyYXRpb25cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gQ1NTIHN0cmluZyBvZiB0aGlzIG5vZGVcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcG9zdGNzcy5ydWxlKHsgc2VsZWN0b3I6ICdhJyB9KS50b1N0cmluZygpIC8vPT4gXCJhIHt9XCJcbiAgICAgKi9cbiAgICB0b1N0cmluZyhzdHJpbmdpZmllciA9IHN0cmluZ2lmeSkge1xuICAgICAgICBpZiAoIHN0cmluZ2lmaWVyLnN0cmluZ2lmeSApIHN0cmluZ2lmaWVyID0gc3RyaW5naWZpZXIuc3RyaW5naWZ5O1xuICAgICAgICBsZXQgcmVzdWx0ICA9ICcnO1xuICAgICAgICBzdHJpbmdpZmllcih0aGlzLCBpID0+IHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgY2xvbmUgb2YgdGhlIG5vZGUuXG4gICAgICpcbiAgICAgKiBUaGUgcmVzdWx0aW5nIGNsb25lZCBub2RlIGFuZCBpdHMgKGNsb25lZCkgY2hpbGRyZW4gd2lsbCBoYXZlXG4gICAgICogYSBjbGVhbiBwYXJlbnQgYW5kIGNvZGUgc3R5bGUgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbb3ZlcnJpZGVzXSAtIG5ldyBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIGluIHRoZSBjbG9uZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3QgY2xvbmVkID0gZGVjbC5jbG9uZSh7IHByb3A6ICctbW96LScgKyBkZWNsLnByb3AgfSk7XG4gICAgICogY2xvbmVkLnJhd3MuYmVmb3JlICAvLz0+IHVuZGVmaW5lZFxuICAgICAqIGNsb25lZC5wYXJlbnQgICAgICAgLy89PiB1bmRlZmluZWRcbiAgICAgKiBjbG9uZWQudG9TdHJpbmcoKSAgIC8vPT4gLW1vei10cmFuc2Zvcm06IHNjYWxlKDApXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtOb2RlfSBjbG9uZSBvZiB0aGUgbm9kZVxuICAgICAqL1xuICAgIGNsb25lKG92ZXJyaWRlcyA9IHsgfSkge1xuICAgICAgICBsZXQgY2xvbmVkID0gY2xvbmVOb2RlKHRoaXMpO1xuICAgICAgICBmb3IgKCBsZXQgbmFtZSBpbiBvdmVycmlkZXMgKSB7XG4gICAgICAgICAgICBjbG9uZWRbbmFtZV0gPSBvdmVycmlkZXNbbmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNsb25lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG9ydGN1dCB0byBjbG9uZSB0aGUgbm9kZSBhbmQgaW5zZXJ0IHRoZSByZXN1bHRpbmcgY2xvbmVkIG5vZGVcbiAgICAgKiBiZWZvcmUgdGhlIGN1cnJlbnQgbm9kZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbb3ZlcnJpZGVzXSAtIG5ldyBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIGluIHRoZSBjbG9uZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogZGVjbC5jbG9uZUJlZm9yZSh7IHByb3A6ICctbW96LScgKyBkZWNsLnByb3AgfSk7XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtOb2RlfSAtIG5ldyBub2RlXG4gICAgICovXG4gICAgY2xvbmVCZWZvcmUob3ZlcnJpZGVzID0geyB9KSB7XG4gICAgICAgIGxldCBjbG9uZWQgPSB0aGlzLmNsb25lKG92ZXJyaWRlcyk7XG4gICAgICAgIHRoaXMucGFyZW50Lmluc2VydEJlZm9yZSh0aGlzLCBjbG9uZWQpO1xuICAgICAgICByZXR1cm4gY2xvbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3J0Y3V0IHRvIGNsb25lIHRoZSBub2RlIGFuZCBpbnNlcnQgdGhlIHJlc3VsdGluZyBjbG9uZWQgbm9kZVxuICAgICAqIGFmdGVyIHRoZSBjdXJyZW50IG5vZGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gW292ZXJyaWRlc10gLSBuZXcgcHJvcGVydGllcyB0byBvdmVycmlkZSBpbiB0aGUgY2xvbmUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtOb2RlfSAtIG5ldyBub2RlXG4gICAgICovXG4gICAgY2xvbmVBZnRlcihvdmVycmlkZXMgPSB7IH0pIHtcbiAgICAgICAgbGV0IGNsb25lZCA9IHRoaXMuY2xvbmUob3ZlcnJpZGVzKTtcbiAgICAgICAgdGhpcy5wYXJlbnQuaW5zZXJ0QWZ0ZXIodGhpcywgY2xvbmVkKTtcbiAgICAgICAgcmV0dXJuIGNsb25lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnNlcnRzIG5vZGUocykgYmVmb3JlIHRoZSBjdXJyZW50IG5vZGUgYW5kIHJlbW92ZXMgdGhlIGN1cnJlbnQgbm9kZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Li4uTm9kZX0gbm9kZXMgLSBub2RlKHMpIHRvIHJlcGxhY2UgY3VycmVudCBvbmVcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogaWYgKCBhdHJ1bGUubmFtZSA9PSAnbWl4aW4nICkge1xuICAgICAqICAgYXRydWxlLnJlcGxhY2VXaXRoKG1peGluUnVsZXNbYXRydWxlLnBhcmFtc10pO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge05vZGV9IGN1cnJlbnQgbm9kZSB0byBtZXRob2RzIGNoYWluXG4gICAgICovXG4gICAgcmVwbGFjZVdpdGgoLi4ubm9kZXMpIHtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuaW5zZXJ0QmVmb3JlKHRoaXMsIG5vZGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgbW92ZVRvKG5ld1BhcmVudCkge1xuICAgICAgICB3YXJuT25jZSgnTm9kZSNtb3ZlVG8gd2FzIGRlcHJlY2F0ZWQuIFVzZSBDb250YWluZXIjYXBwZW5kLicpO1xuICAgICAgICB0aGlzLmNsZWFuUmF3cyh0aGlzLnJvb3QoKSA9PT0gbmV3UGFyZW50LnJvb3QoKSk7XG4gICAgICAgIHRoaXMucmVtb3ZlKCk7XG4gICAgICAgIG5ld1BhcmVudC5hcHBlbmQodGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIG1vdmVCZWZvcmUob3RoZXJOb2RlKSB7XG4gICAgICAgIHdhcm5PbmNlKCdOb2RlI21vdmVCZWZvcmUgd2FzIGRlcHJlY2F0ZWQuIFVzZSBOb2RlI2JlZm9yZS4nKTtcbiAgICAgICAgdGhpcy5jbGVhblJhd3ModGhpcy5yb290KCkgPT09IG90aGVyTm9kZS5yb290KCkpO1xuICAgICAgICB0aGlzLnJlbW92ZSgpO1xuICAgICAgICBvdGhlck5vZGUucGFyZW50Lmluc2VydEJlZm9yZShvdGhlck5vZGUsIHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBtb3ZlQWZ0ZXIob3RoZXJOb2RlKSB7XG4gICAgICAgIHdhcm5PbmNlKCdOb2RlI21vdmVBZnRlciB3YXMgZGVwcmVjYXRlZC4gVXNlIE5vZGUjYWZ0ZXIuJyk7XG4gICAgICAgIHRoaXMuY2xlYW5SYXdzKHRoaXMucm9vdCgpID09PSBvdGhlck5vZGUucm9vdCgpKTtcbiAgICAgICAgdGhpcy5yZW1vdmUoKTtcbiAgICAgICAgb3RoZXJOb2RlLnBhcmVudC5pbnNlcnRBZnRlcihvdGhlck5vZGUsIHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBuZXh0IGNoaWxkIG9mIHRoZSBub2Rl4oCZcyBwYXJlbnQuXG4gICAgICogUmV0dXJucyBgdW5kZWZpbmVkYCBpZiB0aGUgY3VycmVudCBub2RlIGlzIHRoZSBsYXN0IGNoaWxkLlxuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZXx1bmRlZmluZWR9IG5leHQgbm9kZVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBpZiAoIGNvbW1lbnQudGV4dCA9PT0gJ2RlbGV0ZSBuZXh0JyApIHtcbiAgICAgKiAgIGNvbnN0IG5leHQgPSBjb21tZW50Lm5leHQoKTtcbiAgICAgKiAgIGlmICggbmV4dCApIHtcbiAgICAgKiAgICAgbmV4dC5yZW1vdmUoKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICovXG4gICAgbmV4dCgpIHtcbiAgICAgICAgaWYgKCAhdGhpcy5wYXJlbnQgKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLnBhcmVudC5pbmRleCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50Lm5vZGVzW2luZGV4ICsgMV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcHJldmlvdXMgY2hpbGQgb2YgdGhlIG5vZGXigJlzIHBhcmVudC5cbiAgICAgKiBSZXR1cm5zIGB1bmRlZmluZWRgIGlmIHRoZSBjdXJyZW50IG5vZGUgaXMgdGhlIGZpcnN0IGNoaWxkLlxuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZXx1bmRlZmluZWR9IHByZXZpb3VzIG5vZGVcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3QgYW5ub3RhdGlvbiA9IGRlY2wucHJldigpO1xuICAgICAqIGlmICggYW5ub3RhdGlvbi50eXBlID09ICdjb21tZW50JyApIHtcbiAgICAgKiAgcmVhZEFubm90YXRpb24oYW5ub3RhdGlvbi50ZXh0KTtcbiAgICAgKiB9XG4gICAgICovXG4gICAgcHJldigpIHtcbiAgICAgICAgaWYgKCAhdGhpcy5wYXJlbnQgKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLnBhcmVudC5pbmRleCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50Lm5vZGVzW2luZGV4IC0gMV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5zZXJ0IG5ldyBub2RlIGJlZm9yZSBjdXJyZW50IG5vZGUgdG8gY3VycmVudCBub2Rl4oCZcyBwYXJlbnQuXG4gICAgICpcbiAgICAgKiBKdXN0IGFsaWFzIGZvciBgbm9kZS5wYXJlbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIGFkZClgLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtOb2RlfG9iamVjdHxzdHJpbmd8Tm9kZVtdfSBhZGQgLSBuZXcgbm9kZVxuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZX0gdGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBkZWNsLmJlZm9yZSgnY29udGVudDogXCJcIicpO1xuICAgICAqL1xuICAgIGJlZm9yZShhZGQpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQuaW5zZXJ0QmVmb3JlKHRoaXMsIGFkZCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluc2VydCBuZXcgbm9kZSBhZnRlciBjdXJyZW50IG5vZGUgdG8gY3VycmVudCBub2Rl4oCZcyBwYXJlbnQuXG4gICAgICpcbiAgICAgKiBKdXN0IGFsaWFzIGZvciBgbm9kZS5wYXJlbnQuaW5zZXJ0QWZ0ZXIobm9kZSwgYWRkKWAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge05vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW119IGFkZCAtIG5ldyBub2RlXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtOb2RlfSB0aGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW4uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGRlY2wuYWZ0ZXIoJ2NvbG9yOiBibGFjaycpO1xuICAgICAqL1xuICAgIGFmdGVyKGFkZCkge1xuICAgICAgICB0aGlzLnBhcmVudC5pbnNlcnRBZnRlcih0aGlzLCBhZGQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCBmaXhlZCA9IHsgfTtcblxuICAgICAgICBmb3IgKCBsZXQgbmFtZSBpbiB0aGlzICkge1xuICAgICAgICAgICAgaWYgKCAhdGhpcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSApIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKCBuYW1lID09PSAncGFyZW50JyApIGNvbnRpbnVlO1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpc1tuYW1lXTtcblxuICAgICAgICAgICAgaWYgKCB2YWx1ZSBpbnN0YW5jZW9mIEFycmF5ICkge1xuICAgICAgICAgICAgICAgIGZpeGVkW25hbWVdID0gdmFsdWUubWFwKCBpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgaSA9PT0gJ29iamVjdCcgJiYgaS50b0pTT04gKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaS50b0pTT04oKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlLnRvSlNPTiApIHtcbiAgICAgICAgICAgICAgICBmaXhlZFtuYW1lXSA9IHZhbHVlLnRvSlNPTigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmaXhlZFtuYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpeGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSB7QGxpbmsgTm9kZSNyYXdzfSB2YWx1ZS4gSWYgdGhlIG5vZGUgaXMgbWlzc2luZ1xuICAgICAqIHRoZSBjb2RlIHN0eWxlIHByb3BlcnR5IChiZWNhdXNlIHRoZSBub2RlIHdhcyBtYW51YWxseSBidWlsdCBvciBjbG9uZWQpLFxuICAgICAqIFBvc3RDU1Mgd2lsbCB0cnkgdG8gYXV0b2RldGVjdCB0aGUgY29kZSBzdHlsZSBwcm9wZXJ0eSBieSBsb29raW5nXG4gICAgICogYXQgb3RoZXIgbm9kZXMgaW4gdGhlIHRyZWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcCAgICAgICAgICAtIG5hbWUgb2YgY29kZSBzdHlsZSBwcm9wZXJ0eVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbZGVmYXVsdFR5cGVdIC0gbmFtZSBvZiBkZWZhdWx0IHZhbHVlLCBpdCBjYW4gYmUgbWlzc2VkXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGUgdmFsdWUgaXMgdGhlIHNhbWUgYXMgcHJvcFxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGJhY2tncm91bmQ6IHdoaXRlIH0nKTtcbiAgICAgKiByb290Lm5vZGVzWzBdLmFwcGVuZCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAnYmxhY2snIH0pO1xuICAgICAqIHJvb3Qubm9kZXNbMF0ubm9kZXNbMV0ucmF3cy5iZWZvcmUgICAvLz0+IHVuZGVmaW5lZFxuICAgICAqIHJvb3Qubm9kZXNbMF0ubm9kZXNbMV0ucmF3KCdiZWZvcmUnKSAvLz0+ICcgJ1xuICAgICAqXG4gICAgICogQHJldHVybiB7c3RyaW5nfSBjb2RlIHN0eWxlIHZhbHVlXG4gICAgICovXG4gICAgcmF3KHByb3AsIGRlZmF1bHRUeXBlKSB7XG4gICAgICAgIGxldCBzdHIgPSBuZXcgU3RyaW5naWZpZXIoKTtcbiAgICAgICAgcmV0dXJuIHN0ci5yYXcodGhpcywgcHJvcCwgZGVmYXVsdFR5cGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIHRoZSBSb290IGluc3RhbmNlIG9mIHRoZSBub2Rl4oCZcyB0cmVlLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiByb290Lm5vZGVzWzBdLm5vZGVzWzBdLnJvb3QoKSA9PT0gcm9vdFxuICAgICAqXG4gICAgICogQHJldHVybiB7Um9vdH0gcm9vdCBwYXJlbnRcbiAgICAgKi9cbiAgICByb290KCkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcztcbiAgICAgICAgd2hpbGUgKCByZXN1bHQucGFyZW50ICkgcmVzdWx0ID0gcmVzdWx0LnBhcmVudDtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBjbGVhblJhd3Moa2VlcEJldHdlZW4pIHtcbiAgICAgICAgZGVsZXRlIHRoaXMucmF3cy5iZWZvcmU7XG4gICAgICAgIGRlbGV0ZSB0aGlzLnJhd3MuYWZ0ZXI7XG4gICAgICAgIGlmICggIWtlZXBCZXR3ZWVuICkgZGVsZXRlIHRoaXMucmF3cy5iZXR3ZWVuO1xuICAgIH1cblxuICAgIHBvc2l0aW9uSW5zaWRlKGluZGV4KSB7XG4gICAgICAgIGxldCBzdHJpbmcgPSB0aGlzLnRvU3RyaW5nKCk7XG4gICAgICAgIGxldCBjb2x1bW4gPSB0aGlzLnNvdXJjZS5zdGFydC5jb2x1bW47XG4gICAgICAgIGxldCBsaW5lICAgPSB0aGlzLnNvdXJjZS5zdGFydC5saW5lO1xuXG4gICAgICAgIGZvciAoIGxldCBpID0gMDsgaSA8IGluZGV4OyBpKysgKSB7XG4gICAgICAgICAgICBpZiAoIHN0cmluZ1tpXSA9PT0gJ1xcbicgKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uID0gMTtcbiAgICAgICAgICAgICAgICBsaW5lICArPSAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4gKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IGxpbmUsIGNvbHVtbiB9O1xuICAgIH1cblxuICAgIHBvc2l0aW9uQnkob3B0cykge1xuICAgICAgICBsZXQgcG9zID0gdGhpcy5zb3VyY2Uuc3RhcnQ7XG4gICAgICAgIGlmICggb3B0cy5pbmRleCApIHtcbiAgICAgICAgICAgIHBvcyA9IHRoaXMucG9zaXRpb25JbnNpZGUob3B0cy5pbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIG9wdHMud29yZCApIHtcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMudG9TdHJpbmcoKS5pbmRleE9mKG9wdHMud29yZCk7XG4gICAgICAgICAgICBpZiAoIGluZGV4ICE9PSAtMSApIHBvcyA9IHRoaXMucG9zaXRpb25JbnNpZGUoaW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwb3M7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIE5vZGUjXG4gICAgICogQG1lbWJlciB7c3RyaW5nfSB0eXBlIC0gU3RyaW5nIHJlcHJlc2VudGluZyB0aGUgbm9kZeKAmXMgdHlwZS5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZSB2YWx1ZXMgYXJlIGByb290YCwgYGF0cnVsZWAsIGBydWxlYCxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBgZGVjbGAsIG9yIGBjb21tZW50YC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSkudHlwZSAvLz0+ICdkZWNsJ1xuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIE5vZGUjXG4gICAgICogQG1lbWJlciB7Q29udGFpbmVyfSBwYXJlbnQgLSB0aGUgbm9kZeKAmXMgcGFyZW50IG5vZGUuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHJvb3Qubm9kZXNbMF0ucGFyZW50ID09IHJvb3Q7XG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBAbWVtYmVyb2YgTm9kZSNcbiAgICAgKiBAbWVtYmVyIHtzb3VyY2V9IHNvdXJjZSAtIHRoZSBpbnB1dCBzb3VyY2Ugb2YgdGhlIG5vZGVcbiAgICAgKlxuICAgICAqIFRoZSBwcm9wZXJ0eSBpcyB1c2VkIGluIHNvdXJjZSBtYXAgZ2VuZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIElmIHlvdSBjcmVhdGUgYSBub2RlIG1hbnVhbGx5IChlLmcuLCB3aXRoIGBwb3N0Y3NzLmRlY2woKWApLFxuICAgICAqIHRoYXQgbm9kZSB3aWxsIG5vdCBoYXZlIGEgYHNvdXJjZWAgcHJvcGVydHkgYW5kIHdpbGwgYmUgYWJzZW50XG4gICAgICogZnJvbSB0aGUgc291cmNlIG1hcC4gRm9yIHRoaXMgcmVhc29uLCB0aGUgcGx1Z2luIGRldmVsb3BlciBzaG91bGRcbiAgICAgKiBjb25zaWRlciBjbG9uaW5nIG5vZGVzIHRvIGNyZWF0ZSBuZXcgb25lcyAoaW4gd2hpY2ggY2FzZSB0aGUgbmV3IG5vZGXigJlzXG4gICAgICogc291cmNlIHdpbGwgcmVmZXJlbmNlIHRoZSBvcmlnaW5hbCwgY2xvbmVkIG5vZGUpIG9yIHNldHRpbmdcbiAgICAgKiB0aGUgYHNvdXJjZWAgcHJvcGVydHkgbWFudWFsbHkuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIC8vIEJhZFxuICAgICAqIGNvbnN0IHByZWZpeGVkID0gcG9zdGNzcy5kZWNsKHtcbiAgICAgKiAgIHByb3A6ICctbW96LScgKyBkZWNsLnByb3AsXG4gICAgICogICB2YWx1ZTogZGVjbC52YWx1ZVxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gR29vZFxuICAgICAqIGNvbnN0IHByZWZpeGVkID0gZGVjbC5jbG9uZSh7IHByb3A6ICctbW96LScgKyBkZWNsLnByb3AgfSk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIGlmICggYXRydWxlLm5hbWUgPT0gJ2FkZC1saW5rJyApIHtcbiAgICAgKiAgIGNvbnN0IHJ1bGUgPSBwb3N0Y3NzLnJ1bGUoeyBzZWxlY3RvcjogJ2EnLCBzb3VyY2U6IGF0cnVsZS5zb3VyY2UgfSk7XG4gICAgICogICBhdHJ1bGUucGFyZW50Lmluc2VydEJlZm9yZShhdHJ1bGUsIHJ1bGUpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogZGVjbC5zb3VyY2UuaW5wdXQuZnJvbSAvLz0+ICcvaG9tZS9haS9hLnNhc3MnXG4gICAgICogZGVjbC5zb3VyY2Uuc3RhcnQgICAgICAvLz0+IHsgbGluZTogMTAsIGNvbHVtbjogMiB9XG4gICAgICogZGVjbC5zb3VyY2UuZW5kICAgICAgICAvLz0+IHsgbGluZTogMTAsIGNvbHVtbjogMTIgfVxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIE5vZGUjXG4gICAgICogQG1lbWJlciB7b2JqZWN0fSByYXdzIC0gSW5mb3JtYXRpb24gdG8gZ2VuZXJhdGUgYnl0ZS10by1ieXRlIGVxdWFsXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSBzdHJpbmcgYXMgaXQgd2FzIGluIHRoZSBvcmlnaW4gaW5wdXQuXG4gICAgICpcbiAgICAgKiBFdmVyeSBwYXJzZXIgc2F2ZXMgaXRzIG93biBwcm9wZXJ0aWVzLFxuICAgICAqIGJ1dCB0aGUgZGVmYXVsdCBDU1MgcGFyc2VyIHVzZXM6XG4gICAgICpcbiAgICAgKiAqIGBiZWZvcmVgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZWZvcmUgdGhlIG5vZGUuIEl0IGFsc28gc3RvcmVzIGAqYFxuICAgICAqICAgYW5kIGBfYCBzeW1ib2xzIGJlZm9yZSB0aGUgZGVjbGFyYXRpb24gKElFIGhhY2spLlxuICAgICAqICogYGFmdGVyYDogdGhlIHNwYWNlIHN5bWJvbHMgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQgb2YgdGhlIG5vZGVcbiAgICAgKiAgIHRvIHRoZSBlbmQgb2YgdGhlIG5vZGUuXG4gICAgICogKiBgYmV0d2VlbmA6IHRoZSBzeW1ib2xzIGJldHdlZW4gdGhlIHByb3BlcnR5IGFuZCB2YWx1ZVxuICAgICAqICAgZm9yIGRlY2xhcmF0aW9ucywgc2VsZWN0b3IgYW5kIGB7YCBmb3IgcnVsZXMsIG9yIGxhc3QgcGFyYW1ldGVyXG4gICAgICogICBhbmQgYHtgIGZvciBhdC1ydWxlcy5cbiAgICAgKiAqIGBzZW1pY29sb25gOiBjb250YWlucyB0cnVlIGlmIHRoZSBsYXN0IGNoaWxkIGhhc1xuICAgICAqICAgYW4gKG9wdGlvbmFsKSBzZW1pY29sb24uXG4gICAgICogKiBgYWZ0ZXJOYW1lYDogdGhlIHNwYWNlIGJldHdlZW4gdGhlIGF0LXJ1bGUgbmFtZSBhbmQgaXRzIHBhcmFtZXRlcnMuXG4gICAgICogKiBgbGVmdGA6IHRoZSBzcGFjZSBzeW1ib2xzIGJldHdlZW4gYC8qYCBhbmQgdGhlIGNvbW1lbnTigJlzIHRleHQuXG4gICAgICogKiBgcmlnaHRgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZXR3ZWVuIHRoZSBjb21tZW504oCZcyB0ZXh0XG4gICAgICogICBhbmQgPGNvZGU+KiYjNDc7PC9jb2RlPi5cbiAgICAgKiAqIGBpbXBvcnRhbnRgOiB0aGUgY29udGVudCBvZiB0aGUgaW1wb3J0YW50IHN0YXRlbWVudCxcbiAgICAgKiAgIGlmIGl0IGlzIG5vdCBqdXN0IGAhaW1wb3J0YW50YC5cbiAgICAgKlxuICAgICAqIFBvc3RDU1MgY2xlYW5zIHNlbGVjdG9ycywgZGVjbGFyYXRpb24gdmFsdWVzIGFuZCBhdC1ydWxlIHBhcmFtZXRlcnNcbiAgICAgKiBmcm9tIGNvbW1lbnRzIGFuZCBleHRyYSBzcGFjZXMsIGJ1dCBpdCBzdG9yZXMgb3JpZ2luIGNvbnRlbnQgaW4gcmF3c1xuICAgICAqIHByb3BlcnRpZXMuIEFzIHN1Y2gsIGlmIHlvdSBkb27igJl0IGNoYW5nZSBhIGRlY2xhcmF0aW9u4oCZcyB2YWx1ZSxcbiAgICAgKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSByYXcgdmFsdWUgd2l0aCBjb21tZW50cy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2Ege1xcbiAgY29sb3I6YmxhY2tcXG59JylcbiAgICAgKiByb290LmZpcnN0LmZpcnN0LnJhd3MgLy89PiB7IGJlZm9yZTogJ1xcbiAgJywgYmV0d2VlbjogJzonIH1cbiAgICAgKi9cblxufVxuXG5leHBvcnQgZGVmYXVsdCBOb2RlO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHBvc2l0aW9uXG4gKiBAcHJvcGVydHkge251bWJlcn0gbGluZSAgIC0gc291cmNlIGxpbmUgaW4gZmlsZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNvbHVtbiAtIHNvdXJjZSBjb2x1bW4gaW4gZmlsZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gc291cmNlXG4gKiBAcHJvcGVydHkge0lucHV0fSBpbnB1dCAgICAtIHtAbGluayBJbnB1dH0gd2l0aCBpbnB1dCBmaWxlXG4gKiBAcHJvcGVydHkge3Bvc2l0aW9ufSBzdGFydCAtIFRoZSBzdGFydGluZyBwb3NpdGlvbiBvZiB0aGUgbm9kZeKAmXMgc291cmNlXG4gKiBAcHJvcGVydHkge3Bvc2l0aW9ufSBlbmQgICAtIFRoZSBlbmRpbmcgcG9zaXRpb24gb2YgdGhlIG5vZGXigJlzIHNvdXJjZVxuICovXG4iXX0=\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nexports.extname = function(path) {\n return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","'use strict';\n\nexports.__esModule = true;\nexports.default = stringify;\n\nvar _stringifier = require('./stringifier');\n\nvar _stringifier2 = _interopRequireDefault(_stringifier);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringify(node, builder) {\n var str = new _stringifier2.default(builder);\n str.stringify(node);\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmeS5lczYiXSwibmFtZXMiOlsic3RyaW5naWZ5Iiwibm9kZSIsImJ1aWxkZXIiLCJzdHIiLCJTdHJpbmdpZmllciJdLCJtYXBwaW5ncyI6Ijs7O2tCQUV3QkEsUzs7QUFGeEI7Ozs7OztBQUVlLFNBQVNBLFNBQVQsQ0FBbUJDLElBQW5CLEVBQXlCQyxPQUF6QixFQUFrQztBQUM3QyxRQUFJQyxNQUFNLElBQUlDLHFCQUFKLENBQWdCRixPQUFoQixDQUFWO0FBQ0FDLFFBQUlILFNBQUosQ0FBY0MsSUFBZDtBQUNIIiwiZmlsZSI6InN0cmluZ2lmeS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTdHJpbmdpZmllciBmcm9tICcuL3N0cmluZ2lmaWVyJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RyaW5naWZ5KG5vZGUsIGJ1aWxkZXIpIHtcbiAgICBsZXQgc3RyID0gbmV3IFN0cmluZ2lmaWVyKGJ1aWxkZXIpO1xuICAgIHN0ci5zdHJpbmdpZnkobm9kZSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.default = parse;\n\nvar _parser = require('./parser');\n\nvar _parser2 = _interopRequireDefault(_parser);\n\nvar _input = require('./input');\n\nvar _input2 = _interopRequireDefault(_input);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(css, opts) {\n if (opts && opts.safe) {\n throw new Error('Option safe was removed. ' + 'Use parser: require(\"postcss-safe-parser\")');\n }\n\n var input = new _input2.default(css, opts);\n var parser = new _parser2.default(input);\n try {\n parser.parse();\n } catch (e) {\n if (e.name === 'CssSyntaxError' && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e.message += '\\nYou tried to parse SCSS with ' + 'the standard CSS parser; ' + 'try again with the postcss-scss parser';\n } else if (/\\.sass/i.test(opts.from)) {\n e.message += '\\nYou tried to parse Sass with ' + 'the standard CSS parser; ' + 'try again with the postcss-sass parser';\n } else if (/\\.less$/i.test(opts.from)) {\n e.message += '\\nYou tried to parse Less with ' + 'the standard CSS parser; ' + 'try again with the postcss-less parser';\n }\n }\n throw e;\n }\n\n return parser.root;\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlLmVzNiJdLCJuYW1lcyI6WyJwYXJzZSIsImNzcyIsIm9wdHMiLCJzYWZlIiwiRXJyb3IiLCJpbnB1dCIsIklucHV0IiwicGFyc2VyIiwiUGFyc2VyIiwiZSIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm1lc3NhZ2UiLCJyb290Il0sIm1hcHBpbmdzIjoiOzs7a0JBR3dCQSxLOztBQUh4Qjs7OztBQUNBOzs7Ozs7QUFFZSxTQUFTQSxLQUFULENBQWVDLEdBQWYsRUFBb0JDLElBQXBCLEVBQTBCO0FBQ3JDLFFBQUtBLFFBQVFBLEtBQUtDLElBQWxCLEVBQXlCO0FBQ3JCLGNBQU0sSUFBSUMsS0FBSixDQUFVLDhCQUNBLDRDQURWLENBQU47QUFFSDs7QUFFRCxRQUFJQyxRQUFRLElBQUlDLGVBQUosQ0FBVUwsR0FBVixFQUFlQyxJQUFmLENBQVo7QUFDQSxRQUFJSyxTQUFTLElBQUlDLGdCQUFKLENBQVdILEtBQVgsQ0FBYjtBQUNBLFFBQUk7QUFDQUUsZUFBT1AsS0FBUDtBQUNILEtBRkQsQ0FFRSxPQUFPUyxDQUFQLEVBQVU7QUFDUixZQUFLQSxFQUFFQyxJQUFGLEtBQVcsZ0JBQVgsSUFBK0JSLElBQS9CLElBQXVDQSxLQUFLUyxJQUFqRCxFQUF3RDtBQUNwRCxnQkFBSyxXQUFXQyxJQUFYLENBQWdCVixLQUFLUyxJQUFyQixDQUFMLEVBQWtDO0FBQzlCRixrQkFBRUksT0FBRixJQUFhLG9DQUNBLDJCQURBLEdBRUEsd0NBRmI7QUFHSCxhQUpELE1BSU8sSUFBSyxVQUFVRCxJQUFWLENBQWVWLEtBQUtTLElBQXBCLENBQUwsRUFBaUM7QUFDcENGLGtCQUFFSSxPQUFGLElBQWEsb0NBQ0EsMkJBREEsR0FFQSx3Q0FGYjtBQUdILGFBSk0sTUFJQSxJQUFLLFdBQVdELElBQVgsQ0FBZ0JWLEtBQUtTLElBQXJCLENBQUwsRUFBa0M7QUFDckNGLGtCQUFFSSxPQUFGLElBQWEsb0NBQ0EsMkJBREEsR0FFQSx3Q0FGYjtBQUdIO0FBQ0o7QUFDRCxjQUFNSixDQUFOO0FBQ0g7O0FBRUQsV0FBT0YsT0FBT08sSUFBZDtBQUNIIiwiZmlsZSI6InBhcnNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFBhcnNlciBmcm9tICcuL3BhcnNlcic7XG5pbXBvcnQgSW5wdXQgIGZyb20gJy4vaW5wdXQnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwYXJzZShjc3MsIG9wdHMpIHtcbiAgICBpZiAoIG9wdHMgJiYgb3B0cy5zYWZlICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ09wdGlvbiBzYWZlIHdhcyByZW1vdmVkLiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdVc2UgcGFyc2VyOiByZXF1aXJlKFwicG9zdGNzcy1zYWZlLXBhcnNlclwiKScpO1xuICAgIH1cblxuICAgIGxldCBpbnB1dCA9IG5ldyBJbnB1dChjc3MsIG9wdHMpO1xuICAgIGxldCBwYXJzZXIgPSBuZXcgUGFyc2VyKGlucHV0KTtcbiAgICB0cnkge1xuICAgICAgICBwYXJzZXIucGFyc2UoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmICggZS5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InICYmIG9wdHMgJiYgb3B0cy5mcm9tICkge1xuICAgICAgICAgICAgaWYgKCAvXFwuc2NzcyQvaS50ZXN0KG9wdHMuZnJvbSkgKSB7XG4gICAgICAgICAgICAgICAgZS5tZXNzYWdlICs9ICdcXG5Zb3UgdHJpZWQgdG8gcGFyc2UgU0NTUyB3aXRoICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIHN0YW5kYXJkIENTUyBwYXJzZXI7ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJ5IGFnYWluIHdpdGggdGhlIHBvc3Rjc3Mtc2NzcyBwYXJzZXInO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggL1xcLnNhc3MvaS50ZXN0KG9wdHMuZnJvbSkgKSB7XG4gICAgICAgICAgICAgICAgZS5tZXNzYWdlICs9ICdcXG5Zb3UgdHJpZWQgdG8gcGFyc2UgU2FzcyB3aXRoICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIHN0YW5kYXJkIENTUyBwYXJzZXI7ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJ5IGFnYWluIHdpdGggdGhlIHBvc3Rjc3Mtc2FzcyBwYXJzZXInO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggL1xcLmxlc3MkL2kudGVzdChvcHRzLmZyb20pICkge1xuICAgICAgICAgICAgICAgIGUubWVzc2FnZSArPSAnXFxuWW91IHRyaWVkIHRvIHBhcnNlIExlc3Mgd2l0aCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzdGFuZGFyZCBDU1MgcGFyc2VyOyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyeSBhZ2FpbiB3aXRoIHRoZSBwb3N0Y3NzLWxlc3MgcGFyc2VyJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJzZXIucm9vdDtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _node = require('./node');\n\nvar _node2 = _interopRequireDefault(_node);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Represents a comment between declarations or statements (rule and at-rules).\n *\n * Comments inside selectors, at-rule parameters, or declaration values\n * will be stored in the `raws` properties explained above.\n *\n * @extends Node\n */\nvar Comment = function (_Node) {\n _inherits(Comment, _Node);\n\n function Comment(defaults) {\n _classCallCheck(this, Comment);\n\n var _this = _possibleConstructorReturn(this, _Node.call(this, defaults));\n\n _this.type = 'comment';\n return _this;\n }\n\n /**\n * @memberof Comment#\n * @member {string} text - the comment’s text\n */\n\n /**\n * @memberof Comment#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node.\n * * `left`: the space symbols between `/*` and the comment’s text.\n * * `right`: the space symbols between the comment’s text.\n */\n\n\n return Comment;\n}(_node2.default);\n\nexports.default = Comment;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbW1lbnQuZXM2Il0sIm5hbWVzIjpbIkNvbW1lbnQiLCJkZWZhdWx0cyIsInR5cGUiLCJOb2RlIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7Ozs7Ozs7OztBQUVBOzs7Ozs7OztJQVFNQSxPOzs7QUFFRixtQkFBWUMsUUFBWixFQUFzQjtBQUFBOztBQUFBLGlEQUNsQixpQkFBTUEsUUFBTixDQURrQjs7QUFFbEIsVUFBS0MsSUFBTCxHQUFZLFNBQVo7QUFGa0I7QUFHckI7O0FBRUQ7Ozs7O0FBS0E7Ozs7Ozs7Ozs7Ozs7OztFQVprQkMsYzs7a0JBMEJQSCxPIiwiZmlsZSI6ImNvbW1lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTm9kZSBmcm9tICcuL25vZGUnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjb21tZW50IGJldHdlZW4gZGVjbGFyYXRpb25zIG9yIHN0YXRlbWVudHMgKHJ1bGUgYW5kIGF0LXJ1bGVzKS5cbiAqXG4gKiBDb21tZW50cyBpbnNpZGUgc2VsZWN0b3JzLCBhdC1ydWxlIHBhcmFtZXRlcnMsIG9yIGRlY2xhcmF0aW9uIHZhbHVlc1xuICogd2lsbCBiZSBzdG9yZWQgaW4gdGhlIGByYXdzYCBwcm9wZXJ0aWVzIGV4cGxhaW5lZCBhYm92ZS5cbiAqXG4gKiBAZXh0ZW5kcyBOb2RlXG4gKi9cbmNsYXNzIENvbW1lbnQgZXh0ZW5kcyBOb2RlIHtcblxuICAgIGNvbnN0cnVjdG9yKGRlZmF1bHRzKSB7XG4gICAgICAgIHN1cGVyKGRlZmF1bHRzKTtcbiAgICAgICAgdGhpcy50eXBlID0gJ2NvbW1lbnQnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBtZW1iZXJvZiBDb21tZW50I1xuICAgICAqIEBtZW1iZXIge3N0cmluZ30gdGV4dCAtIHRoZSBjb21tZW504oCZcyB0ZXh0XG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBAbWVtYmVyb2YgQ29tbWVudCNcbiAgICAgKiBAbWVtYmVyIHtvYmplY3R9IHJhd3MgLSBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlIHN0cmluZyBhcyBpdCB3YXMgaW4gdGhlIG9yaWdpbiBpbnB1dC5cbiAgICAgKlxuICAgICAqIEV2ZXJ5IHBhcnNlciBzYXZlcyBpdHMgb3duIHByb3BlcnRpZXMsXG4gICAgICogYnV0IHRoZSBkZWZhdWx0IENTUyBwYXJzZXIgdXNlczpcbiAgICAgKlxuICAgICAqICogYGJlZm9yZWA6IHRoZSBzcGFjZSBzeW1ib2xzIGJlZm9yZSB0aGUgbm9kZS5cbiAgICAgKiAqIGBsZWZ0YDogdGhlIHNwYWNlIHN5bWJvbHMgYmV0d2VlbiBgLypgIGFuZCB0aGUgY29tbWVudOKAmXMgdGV4dC5cbiAgICAgKiAqIGByaWdodGA6IHRoZSBzcGFjZSBzeW1ib2xzIGJldHdlZW4gdGhlIGNvbW1lbnTigJlzIHRleHQuXG4gICAgICovXG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbW1lbnQ7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _declaration = require('./declaration');\n\nvar _declaration2 = _interopRequireDefault(_declaration);\n\nvar _comment = require('./comment');\n\nvar _comment2 = _interopRequireDefault(_comment);\n\nvar _node = require('./node');\n\nvar _node2 = _interopRequireDefault(_node);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction cleanSource(nodes) {\n return nodes.map(function (i) {\n if (i.nodes) i.nodes = cleanSource(i.nodes);\n delete i.source;\n return i;\n });\n}\n\n/**\n * The {@link Root}, {@link AtRule}, and {@link Rule} container nodes\n * inherit some common methods to help work with their children.\n *\n * Note that all containers can store any content. If you write a rule inside\n * a rule, PostCSS will parse it.\n *\n * @extends Node\n * @abstract\n */\n\nvar Container = function (_Node) {\n _inherits(Container, _Node);\n\n function Container() {\n _classCallCheck(this, Container);\n\n return _possibleConstructorReturn(this, _Node.apply(this, arguments));\n }\n\n Container.prototype.push = function push(child) {\n child.parent = this;\n this.nodes.push(child);\n return this;\n };\n\n /**\n * Iterates through the container’s immediate children,\n * calling `callback` for each child.\n *\n * Returning `false` in the callback will break iteration.\n *\n * This method only iterates through the container’s immediate children.\n * If you need to recursively iterate through all the container’s descendant\n * nodes, use {@link Container#walk}.\n *\n * Unlike the for `{}`-cycle or `Array#forEach` this iterator is safe\n * if you are mutating the array of child nodes during iteration.\n * PostCSS will adjust the current index to match the mutations.\n *\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * const root = postcss.parse('a { color: black; z-index: 1 }');\n * const rule = root.first;\n *\n * for ( let decl of rule.nodes ) {\n * decl.cloneBefore({ prop: '-webkit-' + decl.prop });\n * // Cycle will be infinite, because cloneBefore moves the current node\n * // to the next index\n * }\n *\n * rule.each(decl => {\n * decl.cloneBefore({ prop: '-webkit-' + decl.prop });\n * // Will be executed only for color and z-index\n * });\n */\n\n\n Container.prototype.each = function each(callback) {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n\n this.lastEach += 1;\n var id = this.lastEach;\n this.indexes[id] = 0;\n\n if (!this.nodes) return undefined;\n\n var index = void 0,\n result = void 0;\n while (this.indexes[id] < this.nodes.length) {\n index = this.indexes[id];\n result = callback(this.nodes[index], index);\n if (result === false) break;\n\n this.indexes[id] += 1;\n }\n\n delete this.indexes[id];\n\n return result;\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each node.\n *\n * Like container.each(), this method is safe to use\n * if you are mutating arrays during iteration.\n *\n * If you only need to iterate through the container’s immediate children,\n * use {@link Container#each}.\n *\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * root.walk(node => {\n * // Traverses all descendant nodes.\n * });\n */\n\n\n Container.prototype.walk = function walk(callback) {\n return this.each(function (child, i) {\n var result = callback(child, i);\n if (result !== false && child.walk) {\n result = child.walk(callback);\n }\n return result;\n });\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each declaration node.\n *\n * If you pass a filter, iteration will only happen over declarations\n * with matching properties.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [prop] - string or regular expression\n * to filter declarations by property name\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * root.walkDecls(decl => {\n * checkPropertySupport(decl.prop);\n * });\n *\n * root.walkDecls('border-radius', decl => {\n * decl.remove();\n * });\n *\n * root.walkDecls(/^background/, decl => {\n * decl.value = takeFirstColorFromGradient(decl.value);\n * });\n */\n\n\n Container.prototype.walkDecls = function walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk(function (child, i) {\n if (child.type === 'decl') {\n return callback(child, i);\n }\n });\n } else if (prop instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'decl' && prop.test(child.prop)) {\n return callback(child, i);\n }\n });\n } else {\n return this.walk(function (child, i) {\n if (child.type === 'decl' && child.prop === prop) {\n return callback(child, i);\n }\n });\n }\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each rule node.\n *\n * If you pass a filter, iteration will only happen over rules\n * with matching selectors.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [selector] - string or regular expression\n * to filter rules by selector\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * const selectors = [];\n * root.walkRules(rule => {\n * selectors.push(rule.selector);\n * });\n * console.log(`Your CSS uses ${selectors.length} selectors`);\n */\n\n\n Container.prototype.walkRules = function walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n\n return this.walk(function (child, i) {\n if (child.type === 'rule') {\n return callback(child, i);\n }\n });\n } else if (selector instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'rule' && selector.test(child.selector)) {\n return callback(child, i);\n }\n });\n } else {\n return this.walk(function (child, i) {\n if (child.type === 'rule' && child.selector === selector) {\n return callback(child, i);\n }\n });\n }\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each at-rule node.\n *\n * If you pass a filter, iteration will only happen over at-rules\n * that have matching names.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [name] - string or regular expression\n * to filter at-rules by name\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * root.walkAtRules(rule => {\n * if ( isOld(rule.name) ) rule.remove();\n * });\n *\n * let first = false;\n * root.walkAtRules('charset', rule => {\n * if ( !first ) {\n * first = true;\n * } else {\n * rule.remove();\n * }\n * });\n */\n\n\n Container.prototype.walkAtRules = function walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk(function (child, i) {\n if (child.type === 'atrule') {\n return callback(child, i);\n }\n });\n } else if (name instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'atrule' && name.test(child.name)) {\n return callback(child, i);\n }\n });\n } else {\n return this.walk(function (child, i) {\n if (child.type === 'atrule' && child.name === name) {\n return callback(child, i);\n }\n });\n }\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each comment node.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * root.walkComments(comment => {\n * comment.remove();\n * });\n */\n\n\n Container.prototype.walkComments = function walkComments(callback) {\n return this.walk(function (child, i) {\n if (child.type === 'comment') {\n return callback(child, i);\n }\n });\n };\n\n /**\n * Inserts new nodes to the end of the container.\n *\n * @param {...(Node|object|string|Node[])} children - new nodes\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * const decl1 = postcss.decl({ prop: 'color', value: 'black' });\n * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' });\n * rule.append(decl1, decl2);\n *\n * root.append({ name: 'charset', params: '\"UTF-8\"' }); // at-rule\n * root.append({ selector: 'a' }); // rule\n * rule.append({ prop: 'color', value: 'black' }); // declaration\n * rule.append({ text: 'Comment' }) // comment\n *\n * root.append('a {}');\n * root.first.append('color: black; z-index: 1');\n */\n\n\n Container.prototype.append = function append() {\n for (var _len = arguments.length, children = Array(_len), _key = 0; _key < _len; _key++) {\n children[_key] = arguments[_key];\n }\n\n for (var _iterator = children, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var child = _ref;\n\n var nodes = this.normalize(child, this.last);\n for (var _iterator2 = nodes, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n var node = _ref2;\n this.nodes.push(node);\n }\n }\n return this;\n };\n\n /**\n * Inserts new nodes to the start of the container.\n *\n * @param {...(Node|object|string|Node[])} children - new nodes\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * const decl1 = postcss.decl({ prop: 'color', value: 'black' });\n * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' });\n * rule.prepend(decl1, decl2);\n *\n * root.append({ name: 'charset', params: '\"UTF-8\"' }); // at-rule\n * root.append({ selector: 'a' }); // rule\n * rule.append({ prop: 'color', value: 'black' }); // declaration\n * rule.append({ text: 'Comment' }) // comment\n *\n * root.append('a {}');\n * root.first.append('color: black; z-index: 1');\n */\n\n\n Container.prototype.prepend = function prepend() {\n for (var _len2 = arguments.length, children = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n children[_key2] = arguments[_key2];\n }\n\n children = children.reverse();\n for (var _iterator3 = children, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray3) {\n if (_i3 >= _iterator3.length) break;\n _ref3 = _iterator3[_i3++];\n } else {\n _i3 = _iterator3.next();\n if (_i3.done) break;\n _ref3 = _i3.value;\n }\n\n var child = _ref3;\n\n var nodes = this.normalize(child, this.first, 'prepend').reverse();\n for (var _iterator4 = nodes, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {\n var _ref4;\n\n if (_isArray4) {\n if (_i4 >= _iterator4.length) break;\n _ref4 = _iterator4[_i4++];\n } else {\n _i4 = _iterator4.next();\n if (_i4.done) break;\n _ref4 = _i4.value;\n }\n\n var node = _ref4;\n this.nodes.unshift(node);\n }for (var id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n return this;\n };\n\n Container.prototype.cleanRaws = function cleanRaws(keepBetween) {\n _Node.prototype.cleanRaws.call(this, keepBetween);\n if (this.nodes) {\n for (var _iterator5 = this.nodes, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {\n var _ref5;\n\n if (_isArray5) {\n if (_i5 >= _iterator5.length) break;\n _ref5 = _iterator5[_i5++];\n } else {\n _i5 = _iterator5.next();\n if (_i5.done) break;\n _ref5 = _i5.value;\n }\n\n var node = _ref5;\n node.cleanRaws(keepBetween);\n }\n }\n };\n\n /**\n * Insert new node before old node within the container.\n *\n * @param {Node|number} exist - child or child’s index.\n * @param {Node|object|string|Node[]} add - new node\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop }));\n */\n\n\n Container.prototype.insertBefore = function insertBefore(exist, add) {\n exist = this.index(exist);\n\n var type = exist === 0 ? 'prepend' : false;\n var nodes = this.normalize(add, this.nodes[exist], type).reverse();\n for (var _iterator6 = nodes, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {\n var _ref6;\n\n if (_isArray6) {\n if (_i6 >= _iterator6.length) break;\n _ref6 = _iterator6[_i6++];\n } else {\n _i6 = _iterator6.next();\n if (_i6.done) break;\n _ref6 = _i6.value;\n }\n\n var node = _ref6;\n this.nodes.splice(exist, 0, node);\n }var index = void 0;\n for (var id in this.indexes) {\n index = this.indexes[id];\n if (exist <= index) {\n this.indexes[id] = index + nodes.length;\n }\n }\n\n return this;\n };\n\n /**\n * Insert new node after old node within the container.\n *\n * @param {Node|number} exist - child or child’s index\n * @param {Node|object|string|Node[]} add - new node\n *\n * @return {Node} this node for methods chain\n */\n\n\n Container.prototype.insertAfter = function insertAfter(exist, add) {\n exist = this.index(exist);\n\n var nodes = this.normalize(add, this.nodes[exist]).reverse();\n for (var _iterator7 = nodes, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {\n var _ref7;\n\n if (_isArray7) {\n if (_i7 >= _iterator7.length) break;\n _ref7 = _iterator7[_i7++];\n } else {\n _i7 = _iterator7.next();\n if (_i7.done) break;\n _ref7 = _i7.value;\n }\n\n var node = _ref7;\n this.nodes.splice(exist + 1, 0, node);\n }var index = void 0;\n for (var id in this.indexes) {\n index = this.indexes[id];\n if (exist < index) {\n this.indexes[id] = index + nodes.length;\n }\n }\n\n return this;\n };\n\n /**\n * Removes node from the container and cleans the parent properties\n * from the node and its children.\n *\n * @param {Node|number} child - child or child’s index\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * rule.nodes.length //=> 5\n * rule.removeChild(decl);\n * rule.nodes.length //=> 4\n * decl.parent //=> undefined\n */\n\n\n Container.prototype.removeChild = function removeChild(child) {\n child = this.index(child);\n this.nodes[child].parent = undefined;\n this.nodes.splice(child, 1);\n\n var index = void 0;\n for (var id in this.indexes) {\n index = this.indexes[id];\n if (index >= child) {\n this.indexes[id] = index - 1;\n }\n }\n\n return this;\n };\n\n /**\n * Removes all children from the container\n * and cleans their parent properties.\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * rule.removeAll();\n * rule.nodes.length //=> 0\n */\n\n\n Container.prototype.removeAll = function removeAll() {\n for (var _iterator8 = this.nodes, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {\n var _ref8;\n\n if (_isArray8) {\n if (_i8 >= _iterator8.length) break;\n _ref8 = _iterator8[_i8++];\n } else {\n _i8 = _iterator8.next();\n if (_i8.done) break;\n _ref8 = _i8.value;\n }\n\n var node = _ref8;\n node.parent = undefined;\n }this.nodes = [];\n return this;\n };\n\n /**\n * Passes all declaration values within the container that match pattern\n * through callback, replacing those values with the returned result\n * of callback.\n *\n * This method is useful if you are using a custom unit or function\n * and need to iterate through all values.\n *\n * @param {string|RegExp} pattern - replace pattern\n * @param {object} opts - options to speed up the search\n * @param {string|string[]} opts.props - an array of property names\n * @param {string} opts.fast - string that’s used\n * to narrow down values and speed up\n the regexp search\n * @param {function|string} callback - string to replace pattern\n * or callback that returns a new\n * value.\n * The callback will receive\n * the same arguments as those\n * passed to a function parameter\n * of `String#replace`.\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * root.replaceValues(/\\d+rem/, { fast: 'rem' }, string => {\n * return 15 * parseInt(string) + 'px';\n * });\n */\n\n\n Container.prototype.replaceValues = function replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n\n this.walkDecls(function (decl) {\n if (opts.props && opts.props.indexOf(decl.prop) === -1) return;\n if (opts.fast && decl.value.indexOf(opts.fast) === -1) return;\n\n decl.value = decl.value.replace(pattern, callback);\n });\n\n return this;\n };\n\n /**\n * Returns `true` if callback returns `true`\n * for all of the container’s children.\n *\n * @param {childCondition} condition - iterator returns true or false.\n *\n * @return {boolean} is every child pass condition\n *\n * @example\n * const noPrefixes = rule.every(i => i.prop[0] !== '-');\n */\n\n\n Container.prototype.every = function every(condition) {\n return this.nodes.every(condition);\n };\n\n /**\n * Returns `true` if callback returns `true` for (at least) one\n * of the container’s children.\n *\n * @param {childCondition} condition - iterator returns true or false.\n *\n * @return {boolean} is some child pass condition\n *\n * @example\n * const hasPrefix = rule.some(i => i.prop[0] === '-');\n */\n\n\n Container.prototype.some = function some(condition) {\n return this.nodes.some(condition);\n };\n\n /**\n * Returns a `child`’s index within the {@link Container#nodes} array.\n *\n * @param {Node} child - child of the current container.\n *\n * @return {number} child index\n *\n * @example\n * rule.index( rule.nodes[2] ) //=> 2\n */\n\n\n Container.prototype.index = function index(child) {\n if (typeof child === 'number') {\n return child;\n } else {\n return this.nodes.indexOf(child);\n }\n };\n\n /**\n * The container’s first child.\n *\n * @type {Node}\n *\n * @example\n * rule.first == rules.nodes[0];\n */\n\n\n Container.prototype.normalize = function normalize(nodes, sample) {\n var _this2 = this;\n\n if (typeof nodes === 'string') {\n var parse = require('./parse');\n nodes = cleanSource(parse(nodes).nodes);\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (var _iterator9 = nodes, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {\n var _ref9;\n\n if (_isArray9) {\n if (_i9 >= _iterator9.length) break;\n _ref9 = _iterator9[_i9++];\n } else {\n _i9 = _iterator9.next();\n if (_i9.done) break;\n _ref9 = _i9.value;\n }\n\n var i = _ref9;\n\n if (i.parent) i.parent.removeChild(i, 'ignore');\n }\n } else if (nodes.type === 'root') {\n nodes = nodes.nodes.slice(0);\n for (var _iterator10 = nodes, _isArray10 = Array.isArray(_iterator10), _i11 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {\n var _ref10;\n\n if (_isArray10) {\n if (_i11 >= _iterator10.length) break;\n _ref10 = _iterator10[_i11++];\n } else {\n _i11 = _iterator10.next();\n if (_i11.done) break;\n _ref10 = _i11.value;\n }\n\n var _i10 = _ref10;\n\n if (_i10.parent) _i10.parent.removeChild(_i10, 'ignore');\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === 'undefined') {\n throw new Error('Value field is missed in node creation');\n } else if (typeof nodes.value !== 'string') {\n nodes.value = String(nodes.value);\n }\n nodes = [new _declaration2.default(nodes)];\n } else if (nodes.selector) {\n var Rule = require('./rule');\n nodes = [new Rule(nodes)];\n } else if (nodes.name) {\n var AtRule = require('./at-rule');\n nodes = [new AtRule(nodes)];\n } else if (nodes.text) {\n nodes = [new _comment2.default(nodes)];\n } else {\n throw new Error('Unknown node type in node creation');\n }\n\n var processed = nodes.map(function (i) {\n if (typeof i.before !== 'function') i = _this2.rebuild(i);\n\n if (i.parent) i.parent.removeChild(i);\n if (typeof i.raws.before === 'undefined') {\n if (sample && typeof sample.raws.before !== 'undefined') {\n i.raws.before = sample.raws.before.replace(/[^\\s]/g, '');\n }\n }\n i.parent = _this2;\n return i;\n });\n\n return processed;\n };\n\n Container.prototype.rebuild = function rebuild(node, parent) {\n var _this3 = this;\n\n var fix = void 0;\n if (node.type === 'root') {\n var Root = require('./root');\n fix = new Root();\n } else if (node.type === 'atrule') {\n var AtRule = require('./at-rule');\n fix = new AtRule();\n } else if (node.type === 'rule') {\n var Rule = require('./rule');\n fix = new Rule();\n } else if (node.type === 'decl') {\n fix = new _declaration2.default();\n } else if (node.type === 'comment') {\n fix = new _comment2.default();\n }\n\n for (var i in node) {\n if (i === 'nodes') {\n fix.nodes = node.nodes.map(function (j) {\n return _this3.rebuild(j, fix);\n });\n } else if (i === 'parent' && parent) {\n fix.parent = parent;\n } else if (node.hasOwnProperty(i)) {\n fix[i] = node[i];\n }\n }\n\n return fix;\n };\n\n /**\n * @memberof Container#\n * @member {Node[]} nodes - an array containing the container’s children\n *\n * @example\n * const root = postcss.parse('a { color: black }');\n * root.nodes.length //=> 1\n * root.nodes[0].selector //=> 'a'\n * root.nodes[0].nodes[0].prop //=> 'color'\n */\n\n _createClass(Container, [{\n key: 'first',\n get: function get() {\n if (!this.nodes) return undefined;\n return this.nodes[0];\n }\n\n /**\n * The container’s last child.\n *\n * @type {Node}\n *\n * @example\n * rule.last == rule.nodes[rule.nodes.length - 1];\n */\n\n }, {\n key: 'last',\n get: function get() {\n if (!this.nodes) return undefined;\n return this.nodes[this.nodes.length - 1];\n }\n }]);\n\n return Container;\n}(_node2.default);\n\nexports.default = Container;\n\n/**\n * @callback childCondition\n * @param {Node} node - container child\n * @param {number} index - child index\n * @param {Node[]} nodes - all container children\n * @return {boolean}\n */\n\n/**\n * @callback childIterator\n * @param {Node} node - container child\n * @param {number} index - child index\n * @return {false|undefined} returning `false` will break iteration\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbnRhaW5lci5lczYiXSwibmFtZXMiOlsiY2xlYW5Tb3VyY2UiLCJub2RlcyIsIm1hcCIsImkiLCJzb3VyY2UiLCJDb250YWluZXIiLCJwdXNoIiwiY2hpbGQiLCJwYXJlbnQiLCJlYWNoIiwiY2FsbGJhY2siLCJsYXN0RWFjaCIsImluZGV4ZXMiLCJpZCIsInVuZGVmaW5lZCIsImluZGV4IiwicmVzdWx0IiwibGVuZ3RoIiwid2FsayIsIndhbGtEZWNscyIsInByb3AiLCJ0eXBlIiwiUmVnRXhwIiwidGVzdCIsIndhbGtSdWxlcyIsInNlbGVjdG9yIiwid2Fsa0F0UnVsZXMiLCJuYW1lIiwid2Fsa0NvbW1lbnRzIiwiYXBwZW5kIiwiY2hpbGRyZW4iLCJub3JtYWxpemUiLCJsYXN0Iiwibm9kZSIsInByZXBlbmQiLCJyZXZlcnNlIiwiZmlyc3QiLCJ1bnNoaWZ0IiwiY2xlYW5SYXdzIiwia2VlcEJldHdlZW4iLCJpbnNlcnRCZWZvcmUiLCJleGlzdCIsImFkZCIsInNwbGljZSIsImluc2VydEFmdGVyIiwicmVtb3ZlQ2hpbGQiLCJyZW1vdmVBbGwiLCJyZXBsYWNlVmFsdWVzIiwicGF0dGVybiIsIm9wdHMiLCJwcm9wcyIsImluZGV4T2YiLCJkZWNsIiwiZmFzdCIsInZhbHVlIiwicmVwbGFjZSIsImV2ZXJ5IiwiY29uZGl0aW9uIiwic29tZSIsInNhbXBsZSIsInBhcnNlIiwicmVxdWlyZSIsIkFycmF5IiwiaXNBcnJheSIsInNsaWNlIiwiRXJyb3IiLCJTdHJpbmciLCJEZWNsYXJhdGlvbiIsIlJ1bGUiLCJBdFJ1bGUiLCJ0ZXh0IiwiQ29tbWVudCIsInByb2Nlc3NlZCIsImJlZm9yZSIsInJlYnVpbGQiLCJyYXdzIiwiZml4IiwiUm9vdCIsImoiLCJoYXNPd25Qcm9wZXJ0eSIsIk5vZGUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7Ozs7O0FBRUEsU0FBU0EsV0FBVCxDQUFxQkMsS0FBckIsRUFBNEI7QUFD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Zjs7Ozs7Ozs7QUFRQSIsImZpbGUiOiJjb250YWluZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVjbGFyYXRpb24gZnJvbSAnLi9kZWNsYXJhdGlvbic7XG5pbXBvcnQgQ29tbWVudCAgICAgZnJvbSAnLi9jb21tZW50JztcbmltcG9ydCBOb2RlICAgICAgICBmcm9tICcuL25vZGUnO1xuXG5mdW5jdGlvbiBjbGVhblNvdXJjZShub2Rlcykge1xuICAgIHJldHVybiBub2Rlcy5tYXAoIGkgPT4ge1xuICAgICAgICBpZiAoIGkubm9kZXMgKSBpLm5vZGVzID0gY2xlYW5Tb3VyY2UoaS5ub2Rlcyk7XG4gICAgICAgIGRlbGV0ZSBpLnNvdXJjZTtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgfSk7XG59XG5cbi8qKlxuICogVGhlIHtAbGluayBSb290fSwge0BsaW5rIEF0UnVsZX0sIGFuZCB7QGxpbmsgUnVsZX0gY29udGFpbmVyIG5vZGVzXG4gKiBpbmhlcml0IHNvbWUgY29tbW9uIG1ldGhvZHMgdG8gaGVscCB3b3JrIHdpdGggdGhlaXIgY2hpbGRyZW4uXG4gKlxuICogTm90ZSB0aGF0IGFsbCBjb250YWluZXJzIGNhbiBzdG9yZSBhbnkgY29udGVudC4gSWYgeW91IHdyaXRlIGEgcnVsZSBpbnNpZGVcbiAqIGEgcnVsZSwgUG9zdENTUyB3aWxsIHBhcnNlIGl0LlxuICpcbiAqIEBleHRlbmRzIE5vZGVcbiAqIEBhYnN0cmFjdFxuICovXG5jbGFzcyBDb250YWluZXIgZXh0ZW5kcyBOb2RlIHtcblxuICAgIHB1c2goY2hpbGQpIHtcbiAgICAgICAgY2hpbGQucGFyZW50ID0gdGhpcztcbiAgICAgICAgdGhpcy5ub2Rlcy5wdXNoKGNoaWxkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgdGhyb3VnaCB0aGUgY29udGFpbmVy4oCZcyBpbW1lZGlhdGUgY2hpbGRyZW4sXG4gICAgICogY2FsbGluZyBgY2FsbGJhY2tgIGZvciBlYWNoIGNoaWxkLlxuICAgICAqXG4gICAgICogUmV0dXJuaW5nIGBmYWxzZWAgaW4gdGhlIGNhbGxiYWNrIHdpbGwgYnJlYWsgaXRlcmF0aW9uLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2Qgb25seSBpdGVyYXRlcyB0aHJvdWdoIHRoZSBjb250YWluZXLigJlzIGltbWVkaWF0ZSBjaGlsZHJlbi5cbiAgICAgKiBJZiB5b3UgbmVlZCB0byByZWN1cnNpdmVseSBpdGVyYXRlIHRocm91Z2ggYWxsIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnRcbiAgICAgKiBub2RlcywgdXNlIHtAbGluayBDb250YWluZXIjd2Fsa30uXG4gICAgICpcbiAgICAgKiBVbmxpa2UgdGhlIGZvciBge31gLWN5Y2xlIG9yIGBBcnJheSNmb3JFYWNoYCB0aGlzIGl0ZXJhdG9yIGlzIHNhZmVcbiAgICAgKiBpZiB5b3UgYXJlIG11dGF0aW5nIHRoZSBhcnJheSBvZiBjaGlsZCBub2RlcyBkdXJpbmcgaXRlcmF0aW9uLlxuICAgICAqIFBvc3RDU1Mgd2lsbCBhZGp1c3QgdGhlIGN1cnJlbnQgaW5kZXggdG8gbWF0Y2ggdGhlIG11dGF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Y2hpbGRJdGVyYXRvcn0gY2FsbGJhY2sgLSBpdGVyYXRvciByZWNlaXZlcyBlYWNoIG5vZGUgYW5kIGluZGV4XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IHJldHVybnMgYGZhbHNlYCBpZiBpdGVyYXRpb24gd2FzIGJyb2tlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgY29sb3I6IGJsYWNrOyB6LWluZGV4OiAxIH0nKTtcbiAgICAgKiBjb25zdCBydWxlID0gcm9vdC5maXJzdDtcbiAgICAgKlxuICAgICAqIGZvciAoIGxldCBkZWNsIG9mIHJ1bGUubm9kZXMgKSB7XG4gICAgICogICAgIGRlY2wuY2xvbmVCZWZvcmUoeyBwcm9wOiAnLXdlYmtpdC0nICsgZGVjbC5wcm9wIH0pO1xuICAgICAqICAgICAvLyBDeWNsZSB3aWxsIGJlIGluZmluaXRlLCBiZWNhdXNlIGNsb25lQmVmb3JlIG1vdmVzIHRoZSBjdXJyZW50IG5vZGVcbiAgICAgKiAgICAgLy8gdG8gdGhlIG5leHQgaW5kZXhcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBydWxlLmVhY2goZGVjbCA9PiB7XG4gICAgICogICAgIGRlY2wuY2xvbmVCZWZvcmUoeyBwcm9wOiAnLXdlYmtpdC0nICsgZGVjbC5wcm9wIH0pO1xuICAgICAqICAgICAvLyBXaWxsIGJlIGV4ZWN1dGVkIG9ubHkgZm9yIGNvbG9yIGFuZCB6LWluZGV4XG4gICAgICogfSk7XG4gICAgICovXG4gICAgZWFjaChjYWxsYmFjaykge1xuICAgICAgICBpZiAoICF0aGlzLmxhc3RFYWNoICkgdGhpcy5sYXN0RWFjaCA9IDA7XG4gICAgICAgIGlmICggIXRoaXMuaW5kZXhlcyApIHRoaXMuaW5kZXhlcyA9IHsgfTtcblxuICAgICAgICB0aGlzLmxhc3RFYWNoICs9IDE7XG4gICAgICAgIGxldCBpZCA9IHRoaXMubGFzdEVhY2g7XG4gICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gPSAwO1xuXG4gICAgICAgIGlmICggIXRoaXMubm9kZXMgKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGxldCBpbmRleCwgcmVzdWx0O1xuICAgICAgICB3aGlsZSAoIHRoaXMuaW5kZXhlc1tpZF0gPCB0aGlzLm5vZGVzLmxlbmd0aCApIHtcbiAgICAgICAgICAgIGluZGV4ICA9IHRoaXMuaW5kZXhlc1tpZF07XG4gICAgICAgICAgICByZXN1bHQgPSBjYWxsYmFjayh0aGlzLm5vZGVzW2luZGV4XSwgaW5kZXgpO1xuICAgICAgICAgICAgaWYgKCByZXN1bHQgPT09IGZhbHNlICkgYnJlYWs7XG5cbiAgICAgICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gKz0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlbGV0ZSB0aGlzLmluZGV4ZXNbaWRdO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJhdmVyc2VzIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnQgbm9kZXMsIGNhbGxpbmcgY2FsbGJhY2tcbiAgICAgKiBmb3IgZWFjaCBub2RlLlxuICAgICAqXG4gICAgICogTGlrZSBjb250YWluZXIuZWFjaCgpLCB0aGlzIG1ldGhvZCBpcyBzYWZlIHRvIHVzZVxuICAgICAqIGlmIHlvdSBhcmUgbXV0YXRpbmcgYXJyYXlzIGR1cmluZyBpdGVyYXRpb24uXG4gICAgICpcbiAgICAgKiBJZiB5b3Ugb25seSBuZWVkIHRvIGl0ZXJhdGUgdGhyb3VnaCB0aGUgY29udGFpbmVy4oCZcyBpbW1lZGlhdGUgY2hpbGRyZW4sXG4gICAgICogdXNlIHtAbGluayBDb250YWluZXIjZWFjaH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2NoaWxkSXRlcmF0b3J9IGNhbGxiYWNrIC0gaXRlcmF0b3IgcmVjZWl2ZXMgZWFjaCBub2RlIGFuZCBpbmRleFxuICAgICAqXG4gICAgICogQHJldHVybiB7ZmFsc2V8dW5kZWZpbmVkfSByZXR1cm5zIGBmYWxzZWAgaWYgaXRlcmF0aW9uIHdhcyBicm9rZVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiByb290LndhbGsobm9kZSA9PiB7XG4gICAgICogICAvLyBUcmF2ZXJzZXMgYWxsIGRlc2NlbmRhbnQgbm9kZXMuXG4gICAgICogfSk7XG4gICAgICovXG4gICAgd2FsayhjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCAoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICBpZiAoIHJlc3VsdCAhPT0gZmFsc2UgJiYgY2hpbGQud2FsayApIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBjaGlsZC53YWxrKGNhbGxiYWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyYXZlcnNlcyB0aGUgY29udGFpbmVy4oCZcyBkZXNjZW5kYW50IG5vZGVzLCBjYWxsaW5nIGNhbGxiYWNrXG4gICAgICogZm9yIGVhY2ggZGVjbGFyYXRpb24gbm9kZS5cbiAgICAgKlxuICAgICAqIElmIHlvdSBwYXNzIGEgZmlsdGVyLCBpdGVyYXRpb24gd2lsbCBvbmx5IGhhcHBlbiBvdmVyIGRlY2xhcmF0aW9uc1xuICAgICAqIHdpdGggbWF0Y2hpbmcgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIExpa2Uge0BsaW5rIENvbnRhaW5lciNlYWNofSwgdGhpcyBtZXRob2QgaXMgc2FmZVxuICAgICAqIHRvIHVzZSBpZiB5b3UgYXJlIG11dGF0aW5nIGFycmF5cyBkdXJpbmcgaXRlcmF0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSBbcHJvcF0gICAtIHN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb25cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZmlsdGVyIGRlY2xhcmF0aW9ucyBieSBwcm9wZXJ0eSBuYW1lXG4gICAgICogQHBhcmFtIHtjaGlsZEl0ZXJhdG9yfSBjYWxsYmFjayAtIGl0ZXJhdG9yIHJlY2VpdmVzIGVhY2ggbm9kZSBhbmQgaW5kZXhcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gcmV0dXJucyBgZmFsc2VgIGlmIGl0ZXJhdGlvbiB3YXMgYnJva2VcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcm9vdC53YWxrRGVjbHMoZGVjbCA9PiB7XG4gICAgICogICBjaGVja1Byb3BlcnR5U3VwcG9ydChkZWNsLnByb3ApO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogcm9vdC53YWxrRGVjbHMoJ2JvcmRlci1yYWRpdXMnLCBkZWNsID0+IHtcbiAgICAgKiAgIGRlY2wucmVtb3ZlKCk7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiByb290LndhbGtEZWNscygvXmJhY2tncm91bmQvLCBkZWNsID0+IHtcbiAgICAgKiAgIGRlY2wudmFsdWUgPSB0YWtlRmlyc3RDb2xvckZyb21HcmFkaWVudChkZWNsLnZhbHVlKTtcbiAgICAgKiB9KTtcbiAgICAgKi9cbiAgICB3YWxrRGVjbHMocHJvcCwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKCAhY2FsbGJhY2sgKSB7XG4gICAgICAgICAgICBjYWxsYmFjayA9IHByb3A7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53YWxrKCAoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIGNoaWxkLnR5cGUgPT09ICdkZWNsJyApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICggcHJvcCBpbnN0YW5jZW9mIFJlZ0V4cCApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndhbGsoIChjaGlsZCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICggY2hpbGQudHlwZSA9PT0gJ2RlY2wnICYmIHByb3AudGVzdChjaGlsZC5wcm9wKSApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndhbGsoIChjaGlsZCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICggY2hpbGQudHlwZSA9PT0gJ2RlY2wnICYmIGNoaWxkLnByb3AgPT09IHByb3AgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmF2ZXJzZXMgdGhlIGNvbnRhaW5lcuKAmXMgZGVzY2VuZGFudCBub2RlcywgY2FsbGluZyBjYWxsYmFja1xuICAgICAqIGZvciBlYWNoIHJ1bGUgbm9kZS5cbiAgICAgKlxuICAgICAqIElmIHlvdSBwYXNzIGEgZmlsdGVyLCBpdGVyYXRpb24gd2lsbCBvbmx5IGhhcHBlbiBvdmVyIHJ1bGVzXG4gICAgICogd2l0aCBtYXRjaGluZyBzZWxlY3RvcnMuXG4gICAgICpcbiAgICAgKiBMaWtlIHtAbGluayBDb250YWluZXIjZWFjaH0sIHRoaXMgbWV0aG9kIGlzIHNhZmVcbiAgICAgKiB0byB1c2UgaWYgeW91IGFyZSBtdXRhdGluZyBhcnJheXMgZHVyaW5nIGl0ZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cH0gW3NlbGVjdG9yXSAtIHN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb25cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBmaWx0ZXIgcnVsZXMgYnkgc2VsZWN0b3JcbiAgICAgKiBAcGFyYW0ge2NoaWxkSXRlcmF0b3J9IGNhbGxiYWNrICAgLSBpdGVyYXRvciByZWNlaXZlcyBlYWNoIG5vZGUgYW5kIGluZGV4XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IHJldHVybnMgYGZhbHNlYCBpZiBpdGVyYXRpb24gd2FzIGJyb2tlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IHNlbGVjdG9ycyA9IFtdO1xuICAgICAqIHJvb3Qud2Fsa1J1bGVzKHJ1bGUgPT4ge1xuICAgICAqICAgc2VsZWN0b3JzLnB1c2gocnVsZS5zZWxlY3Rvcik7XG4gICAgICogfSk7XG4gICAgICogY29uc29sZS5sb2coYFlvdXIgQ1NTIHVzZXMgJHtzZWxlY3RvcnMubGVuZ3RofSBzZWxlY3RvcnNgKTtcbiAgICAgKi9cbiAgICB3YWxrUnVsZXMoc2VsZWN0b3IsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmICggIWNhbGxiYWNrICkge1xuICAgICAgICAgICAgY2FsbGJhY2sgPSBzZWxlY3RvcjtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FsayggKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCBjaGlsZC50eXBlID09PSAncnVsZScgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIHNlbGVjdG9yIGluc3RhbmNlb2YgUmVnRXhwICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FsayggKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCBjaGlsZC50eXBlID09PSAncnVsZScgJiYgc2VsZWN0b3IudGVzdChjaGlsZC5zZWxlY3RvcikgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53YWxrKCAoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIGNoaWxkLnR5cGUgPT09ICdydWxlJyAmJiBjaGlsZC5zZWxlY3RvciA9PT0gc2VsZWN0b3IgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmF2ZXJzZXMgdGhlIGNvbnRhaW5lcuKAmXMgZGVzY2VuZGFudCBub2RlcywgY2FsbGluZyBjYWxsYmFja1xuICAgICAqIGZvciBlYWNoIGF0LXJ1bGUgbm9kZS5cbiAgICAgKlxuICAgICAqIElmIHlvdSBwYXNzIGEgZmlsdGVyLCBpdGVyYXRpb24gd2lsbCBvbmx5IGhhcHBlbiBvdmVyIGF0LXJ1bGVzXG4gICAgICogdGhhdCBoYXZlIG1hdGNoaW5nIG5hbWVzLlxuICAgICAqXG4gICAgICogTGlrZSB7QGxpbmsgQ29udGFpbmVyI2VhY2h9LCB0aGlzIG1ldGhvZCBpcyBzYWZlXG4gICAgICogdG8gdXNlIGlmIHlvdSBhcmUgbXV0YXRpbmcgYXJyYXlzIGR1cmluZyBpdGVyYXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB9IFtuYW1lXSAgIC0gc3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvblxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBmaWx0ZXIgYXQtcnVsZXMgYnkgbmFtZVxuICAgICAqIEBwYXJhbSB7Y2hpbGRJdGVyYXRvcn0gY2FsbGJhY2sgLSBpdGVyYXRvciByZWNlaXZlcyBlYWNoIG5vZGUgYW5kIGluZGV4XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IHJldHVybnMgYGZhbHNlYCBpZiBpdGVyYXRpb24gd2FzIGJyb2tlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHJvb3Qud2Fsa0F0UnVsZXMocnVsZSA9PiB7XG4gICAgICogICBpZiAoIGlzT2xkKHJ1bGUubmFtZSkgKSBydWxlLnJlbW92ZSgpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogbGV0IGZpcnN0ID0gZmFsc2U7XG4gICAgICogcm9vdC53YWxrQXRSdWxlcygnY2hhcnNldCcsIHJ1bGUgPT4ge1xuICAgICAqICAgaWYgKCAhZmlyc3QgKSB7XG4gICAgICogICAgIGZpcnN0ID0gdHJ1ZTtcbiAgICAgKiAgIH0gZWxzZSB7XG4gICAgICogICAgIHJ1bGUucmVtb3ZlKCk7XG4gICAgICogICB9XG4gICAgICogfSk7XG4gICAgICovXG4gICAgd2Fsa0F0UnVsZXMobmFtZSwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKCAhY2FsbGJhY2sgKSB7XG4gICAgICAgICAgICBjYWxsYmFjayA9IG5hbWU7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53YWxrKCAoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIGNoaWxkLnR5cGUgPT09ICdhdHJ1bGUnICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soY2hpbGQsIGkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKCBuYW1lIGluc3RhbmNlb2YgUmVnRXhwICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FsayggKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCBjaGlsZC50eXBlID09PSAnYXRydWxlJyAmJiBuYW1lLnRlc3QoY2hpbGQubmFtZSkgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53YWxrKCAoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIGNoaWxkLnR5cGUgPT09ICdhdHJ1bGUnICYmIGNoaWxkLm5hbWUgPT09IG5hbWUgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmF2ZXJzZXMgdGhlIGNvbnRhaW5lcuKAmXMgZGVzY2VuZGFudCBub2RlcywgY2FsbGluZyBjYWxsYmFja1xuICAgICAqIGZvciBlYWNoIGNvbW1lbnQgbm9kZS5cbiAgICAgKlxuICAgICAqIExpa2Uge0BsaW5rIENvbnRhaW5lciNlYWNofSwgdGhpcyBtZXRob2QgaXMgc2FmZVxuICAgICAqIHRvIHVzZSBpZiB5b3UgYXJlIG11dGF0aW5nIGFycmF5cyBkdXJpbmcgaXRlcmF0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtjaGlsZEl0ZXJhdG9yfSBjYWxsYmFjayAtIGl0ZXJhdG9yIHJlY2VpdmVzIGVhY2ggbm9kZSBhbmQgaW5kZXhcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gcmV0dXJucyBgZmFsc2VgIGlmIGl0ZXJhdGlvbiB3YXMgYnJva2VcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcm9vdC53YWxrQ29tbWVudHMoY29tbWVudCA9PiB7XG4gICAgICogICBjb21tZW50LnJlbW92ZSgpO1xuICAgICAqIH0pO1xuICAgICAqL1xuICAgIHdhbGtDb21tZW50cyhjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gdGhpcy53YWxrKCAoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICggY2hpbGQudHlwZSA9PT0gJ2NvbW1lbnQnICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluc2VydHMgbmV3IG5vZGVzIHRvIHRoZSBlbmQgb2YgdGhlIGNvbnRhaW5lci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Li4uKE5vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW10pfSBjaGlsZHJlbiAtIG5ldyBub2Rlc1xuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZX0gdGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IGRlY2wxID0gcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSk7XG4gICAgICogY29uc3QgZGVjbDIgPSBwb3N0Y3NzLmRlY2woeyBwcm9wOiAnYmFja2dyb3VuZC1jb2xvcicsIHZhbHVlOiAnd2hpdGUnIH0pO1xuICAgICAqIHJ1bGUuYXBwZW5kKGRlY2wxLCBkZWNsMik7XG4gICAgICpcbiAgICAgKiByb290LmFwcGVuZCh7IG5hbWU6ICdjaGFyc2V0JywgcGFyYW1zOiAnXCJVVEYtOFwiJyB9KTsgIC8vIGF0LXJ1bGVcbiAgICAgKiByb290LmFwcGVuZCh7IHNlbGVjdG9yOiAnYScgfSk7ICAgICAgICAgICAgICAgICAgICAgICAvLyBydWxlXG4gICAgICogcnVsZS5hcHBlbmQoeyBwcm9wOiAnY29sb3InLCB2YWx1ZTogJ2JsYWNrJyB9KTsgICAgICAgLy8gZGVjbGFyYXRpb25cbiAgICAgKiBydWxlLmFwcGVuZCh7IHRleHQ6ICdDb21tZW50JyB9KSAgICAgICAgICAgICAgICAgICAgICAvLyBjb21tZW50XG4gICAgICpcbiAgICAgKiByb290LmFwcGVuZCgnYSB7fScpO1xuICAgICAqIHJvb3QuZmlyc3QuYXBwZW5kKCdjb2xvcjogYmxhY2s7IHotaW5kZXg6IDEnKTtcbiAgICAgKi9cbiAgICBhcHBlbmQoLi4uY2hpbGRyZW4pIHtcbiAgICAgICAgZm9yICggbGV0IGNoaWxkIG9mIGNoaWxkcmVuICkge1xuICAgICAgICAgICAgbGV0IG5vZGVzID0gdGhpcy5ub3JtYWxpemUoY2hpbGQsIHRoaXMubGFzdCk7XG4gICAgICAgICAgICBmb3IgKCBsZXQgbm9kZSBvZiBub2RlcyApIHRoaXMubm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnNlcnRzIG5ldyBub2RlcyB0byB0aGUgc3RhcnQgb2YgdGhlIGNvbnRhaW5lci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Li4uKE5vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW10pfSBjaGlsZHJlbiAtIG5ldyBub2Rlc1xuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZX0gdGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IGRlY2wxID0gcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSk7XG4gICAgICogY29uc3QgZGVjbDIgPSBwb3N0Y3NzLmRlY2woeyBwcm9wOiAnYmFja2dyb3VuZC1jb2xvcicsIHZhbHVlOiAnd2hpdGUnIH0pO1xuICAgICAqIHJ1bGUucHJlcGVuZChkZWNsMSwgZGVjbDIpO1xuICAgICAqXG4gICAgICogcm9vdC5hcHBlbmQoeyBuYW1lOiAnY2hhcnNldCcsIHBhcmFtczogJ1wiVVRGLThcIicgfSk7ICAvLyBhdC1ydWxlXG4gICAgICogcm9vdC5hcHBlbmQoeyBzZWxlY3RvcjogJ2EnIH0pOyAgICAgICAgICAgICAgICAgICAgICAgLy8gcnVsZVxuICAgICAqIHJ1bGUuYXBwZW5kKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSk7ICAgICAgIC8vIGRlY2xhcmF0aW9uXG4gICAgICogcnVsZS5hcHBlbmQoeyB0ZXh0OiAnQ29tbWVudCcgfSkgICAgICAgICAgICAgICAgICAgICAgLy8gY29tbWVudFxuICAgICAqXG4gICAgICogcm9vdC5hcHBlbmQoJ2Ege30nKTtcbiAgICAgKiByb290LmZpcnN0LmFwcGVuZCgnY29sb3I6IGJsYWNrOyB6LWluZGV4OiAxJyk7XG4gICAgICovXG4gICAgcHJlcGVuZCguLi5jaGlsZHJlbikge1xuICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLnJldmVyc2UoKTtcbiAgICAgICAgZm9yICggbGV0IGNoaWxkIG9mIGNoaWxkcmVuICkge1xuICAgICAgICAgICAgbGV0IG5vZGVzID0gdGhpcy5ub3JtYWxpemUoY2hpbGQsIHRoaXMuZmlyc3QsICdwcmVwZW5kJykucmV2ZXJzZSgpO1xuICAgICAgICAgICAgZm9yICggbGV0IG5vZGUgb2Ygbm9kZXMgKSB0aGlzLm5vZGVzLnVuc2hpZnQobm9kZSk7XG4gICAgICAgICAgICBmb3IgKCBsZXQgaWQgaW4gdGhpcy5pbmRleGVzICkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gPSB0aGlzLmluZGV4ZXNbaWRdICsgbm9kZXMubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNsZWFuUmF3cyhrZWVwQmV0d2Vlbikge1xuICAgICAgICBzdXBlci5jbGVhblJhd3Moa2VlcEJldHdlZW4pO1xuICAgICAgICBpZiAoIHRoaXMubm9kZXMgKSB7XG4gICAgICAgICAgICBmb3IgKCBsZXQgbm9kZSBvZiB0aGlzLm5vZGVzICkgbm9kZS5jbGVhblJhd3Moa2VlcEJldHdlZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5zZXJ0IG5ldyBub2RlIGJlZm9yZSBvbGQgbm9kZSB3aXRoaW4gdGhlIGNvbnRhaW5lci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Tm9kZXxudW1iZXJ9IGV4aXN0ICAgICAgICAgICAgIC0gY2hpbGQgb3IgY2hpbGTigJlzIGluZGV4LlxuICAgICAqIEBwYXJhbSB7Tm9kZXxvYmplY3R8c3RyaW5nfE5vZGVbXX0gYWRkIC0gbmV3IG5vZGVcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge05vZGV9IHRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpblxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBydWxlLmluc2VydEJlZm9yZShkZWNsLCBkZWNsLmNsb25lKHsgcHJvcDogJy13ZWJraXQtJyArIGRlY2wucHJvcCB9KSk7XG4gICAgICovXG4gICAgaW5zZXJ0QmVmb3JlKGV4aXN0LCBhZGQpIHtcbiAgICAgICAgZXhpc3QgPSB0aGlzLmluZGV4KGV4aXN0KTtcblxuICAgICAgICBsZXQgdHlwZSAgPSBleGlzdCA9PT0gMCA/ICdwcmVwZW5kJyA6IGZhbHNlO1xuICAgICAgICBsZXQgbm9kZXMgPSB0aGlzLm5vcm1hbGl6ZShhZGQsIHRoaXMubm9kZXNbZXhpc3RdLCB0eXBlKS5yZXZlcnNlKCk7XG4gICAgICAgIGZvciAoIGxldCBub2RlIG9mIG5vZGVzICkgdGhpcy5ub2Rlcy5zcGxpY2UoZXhpc3QsIDAsIG5vZGUpO1xuXG4gICAgICAgIGxldCBpbmRleDtcbiAgICAgICAgZm9yICggbGV0IGlkIGluIHRoaXMuaW5kZXhlcyApIHtcbiAgICAgICAgICAgIGluZGV4ID0gdGhpcy5pbmRleGVzW2lkXTtcbiAgICAgICAgICAgIGlmICggZXhpc3QgPD0gaW5kZXggKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmRleGVzW2lkXSA9IGluZGV4ICsgbm9kZXMubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5zZXJ0IG5ldyBub2RlIGFmdGVyIG9sZCBub2RlIHdpdGhpbiB0aGUgY29udGFpbmVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtOb2RlfG51bWJlcn0gZXhpc3QgICAgICAgICAgICAgLSBjaGlsZCBvciBjaGlsZOKAmXMgaW5kZXhcbiAgICAgKiBAcGFyYW0ge05vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW119IGFkZCAtIG5ldyBub2RlXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtOb2RlfSB0aGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW5cbiAgICAgKi9cbiAgICBpbnNlcnRBZnRlcihleGlzdCwgYWRkKSB7XG4gICAgICAgIGV4aXN0ID0gdGhpcy5pbmRleChleGlzdCk7XG5cbiAgICAgICAgbGV0IG5vZGVzID0gdGhpcy5ub3JtYWxpemUoYWRkLCB0aGlzLm5vZGVzW2V4aXN0XSkucmV2ZXJzZSgpO1xuICAgICAgICBmb3IgKCBsZXQgbm9kZSBvZiBub2RlcyApIHRoaXMubm9kZXMuc3BsaWNlKGV4aXN0ICsgMSwgMCwgbm9kZSk7XG5cbiAgICAgICAgbGV0IGluZGV4O1xuICAgICAgICBmb3IgKCBsZXQgaWQgaW4gdGhpcy5pbmRleGVzICkge1xuICAgICAgICAgICAgaW5kZXggPSB0aGlzLmluZGV4ZXNbaWRdO1xuICAgICAgICAgICAgaWYgKCBleGlzdCA8IGluZGV4ICkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gPSBpbmRleCArIG5vZGVzLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgbm9kZSBmcm9tIHRoZSBjb250YWluZXIgYW5kIGNsZWFucyB0aGUgcGFyZW50IHByb3BlcnRpZXNcbiAgICAgKiBmcm9tIHRoZSBub2RlIGFuZCBpdHMgY2hpbGRyZW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge05vZGV8bnVtYmVyfSBjaGlsZCAtIGNoaWxkIG9yIGNoaWxk4oCZcyBpbmRleFxuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZX0gdGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHJ1bGUubm9kZXMubGVuZ3RoICAvLz0+IDVcbiAgICAgKiBydWxlLnJlbW92ZUNoaWxkKGRlY2wpO1xuICAgICAqIHJ1bGUubm9kZXMubGVuZ3RoICAvLz0+IDRcbiAgICAgKiBkZWNsLnBhcmVudCAgICAgICAgLy89PiB1bmRlZmluZWRcbiAgICAgKi9cbiAgICByZW1vdmVDaGlsZChjaGlsZCkge1xuICAgICAgICBjaGlsZCA9IHRoaXMuaW5kZXgoY2hpbGQpO1xuICAgICAgICB0aGlzLm5vZGVzW2NoaWxkXS5wYXJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubm9kZXMuc3BsaWNlKGNoaWxkLCAxKTtcblxuICAgICAgICBsZXQgaW5kZXg7XG4gICAgICAgIGZvciAoIGxldCBpZCBpbiB0aGlzLmluZGV4ZXMgKSB7XG4gICAgICAgICAgICBpbmRleCA9IHRoaXMuaW5kZXhlc1tpZF07XG4gICAgICAgICAgICBpZiAoIGluZGV4ID49IGNoaWxkICkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gPSBpbmRleCAtIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBjaGlsZHJlbiBmcm9tIHRoZSBjb250YWluZXJcbiAgICAgKiBhbmQgY2xlYW5zIHRoZWlyIHBhcmVudCBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZX0gdGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHJ1bGUucmVtb3ZlQWxsKCk7XG4gICAgICogcnVsZS5ub2Rlcy5sZW5ndGggLy89PiAwXG4gICAgICovXG4gICAgcmVtb3ZlQWxsKCkge1xuICAgICAgICBmb3IgKCBsZXQgbm9kZSBvZiB0aGlzLm5vZGVzICkgbm9kZS5wYXJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubm9kZXMgPSBbXTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VzIGFsbCBkZWNsYXJhdGlvbiB2YWx1ZXMgd2l0aGluIHRoZSBjb250YWluZXIgdGhhdCBtYXRjaCBwYXR0ZXJuXG4gICAgICogdGhyb3VnaCBjYWxsYmFjaywgcmVwbGFjaW5nIHRob3NlIHZhbHVlcyB3aXRoIHRoZSByZXR1cm5lZCByZXN1bHRcbiAgICAgKiBvZiBjYWxsYmFjay5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIHVzaW5nIGEgY3VzdG9tIHVuaXQgb3IgZnVuY3Rpb25cbiAgICAgKiBhbmQgbmVlZCB0byBpdGVyYXRlIHRocm91Z2ggYWxsIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cH0gcGF0dGVybiAgICAgIC0gcmVwbGFjZSBwYXR0ZXJuXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG9wdHMgICAgICAgICAgICAgICAgLSBvcHRpb25zIHRvIHNwZWVkIHVwIHRoZSBzZWFyY2hcbiAgICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gb3B0cy5wcm9wcyAtIGFuIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMuZmFzdCAgICAgICAgICAgLSBzdHJpbmcgdGhhdOKAmXMgdXNlZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gbmFycm93IGRvd24gdmFsdWVzIGFuZCBzcGVlZCB1cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlZ2V4cCBzZWFyY2hcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufHN0cmluZ30gY2FsbGJhY2sgICAtIHN0cmluZyB0byByZXBsYWNlIHBhdHRlcm5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGNhbGxiYWNrIHRoYXQgcmV0dXJucyBhIG5ld1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY2FsbGJhY2sgd2lsbCByZWNlaXZlXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2FtZSBhcmd1bWVudHMgYXMgdGhvc2VcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCB0byBhIGZ1bmN0aW9uIHBhcmFtZXRlclxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgYFN0cmluZyNyZXBsYWNlYC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge05vZGV9IHRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpblxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiByb290LnJlcGxhY2VWYWx1ZXMoL1xcZCtyZW0vLCB7IGZhc3Q6ICdyZW0nIH0sIHN0cmluZyA9PiB7XG4gICAgICogICByZXR1cm4gMTUgKiBwYXJzZUludChzdHJpbmcpICsgJ3B4JztcbiAgICAgKiB9KTtcbiAgICAgKi9cbiAgICByZXBsYWNlVmFsdWVzKHBhdHRlcm4sIG9wdHMsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmICggIWNhbGxiYWNrICkge1xuICAgICAgICAgICAgY2FsbGJhY2sgPSBvcHRzO1xuICAgICAgICAgICAgb3B0cyA9IHsgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMud2Fsa0RlY2xzKCBkZWNsID0+IHtcbiAgICAgICAgICAgIGlmICggb3B0cy5wcm9wcyAmJiBvcHRzLnByb3BzLmluZGV4T2YoZGVjbC5wcm9wKSA9PT0gLTEgKSByZXR1cm47XG4gICAgICAgICAgICBpZiAoIG9wdHMuZmFzdCAgJiYgZGVjbC52YWx1ZS5pbmRleE9mKG9wdHMuZmFzdCkgPT09IC0xICkgcmV0dXJuO1xuXG4gICAgICAgICAgICBkZWNsLnZhbHVlID0gZGVjbC52YWx1ZS5yZXBsYWNlKHBhdHRlcm4sIGNhbGxiYWNrKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBgdHJ1ZWAgaWYgY2FsbGJhY2sgcmV0dXJucyBgdHJ1ZWBcbiAgICAgKiBmb3IgYWxsIG9mIHRoZSBjb250YWluZXLigJlzIGNoaWxkcmVuLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtjaGlsZENvbmRpdGlvbn0gY29uZGl0aW9uIC0gaXRlcmF0b3IgcmV0dXJucyB0cnVlIG9yIGZhbHNlLlxuICAgICAqXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gaXMgZXZlcnkgY2hpbGQgcGFzcyBjb25kaXRpb25cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3Qgbm9QcmVmaXhlcyA9IHJ1bGUuZXZlcnkoaSA9PiBpLnByb3BbMF0gIT09ICctJyk7XG4gICAgICovXG4gICAgZXZlcnkoY29uZGl0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGVzLmV2ZXJ5KGNvbmRpdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBgdHJ1ZWAgaWYgY2FsbGJhY2sgcmV0dXJucyBgdHJ1ZWAgZm9yIChhdCBsZWFzdCkgb25lXG4gICAgICogb2YgdGhlIGNvbnRhaW5lcuKAmXMgY2hpbGRyZW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2NoaWxkQ29uZGl0aW9ufSBjb25kaXRpb24gLSBpdGVyYXRvciByZXR1cm5zIHRydWUgb3IgZmFsc2UuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBpcyBzb21lIGNoaWxkIHBhc3MgY29uZGl0aW9uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IGhhc1ByZWZpeCA9IHJ1bGUuc29tZShpID0+IGkucHJvcFswXSA9PT0gJy0nKTtcbiAgICAgKi9cbiAgICBzb21lKGNvbmRpdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5ub2Rlcy5zb21lKGNvbmRpdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGBjaGlsZGDigJlzIGluZGV4IHdpdGhpbiB0aGUge0BsaW5rIENvbnRhaW5lciNub2Rlc30gYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge05vZGV9IGNoaWxkIC0gY2hpbGQgb2YgdGhlIGN1cnJlbnQgY29udGFpbmVyLlxuICAgICAqXG4gICAgICogQHJldHVybiB7bnVtYmVyfSBjaGlsZCBpbmRleFxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBydWxlLmluZGV4KCBydWxlLm5vZGVzWzJdICkgLy89PiAyXG4gICAgICovXG4gICAgaW5kZXgoY2hpbGQpIHtcbiAgICAgICAgaWYgKCB0eXBlb2YgY2hpbGQgPT09ICdudW1iZXInICkge1xuICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZXMuaW5kZXhPZihjaGlsZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY29udGFpbmVy4oCZcyBmaXJzdCBjaGlsZC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtOb2RlfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBydWxlLmZpcnN0ID09IHJ1bGVzLm5vZGVzWzBdO1xuICAgICAqL1xuICAgIGdldCBmaXJzdCgpIHtcbiAgICAgICAgaWYgKCAhdGhpcy5ub2RlcyApIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGVzWzBdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBjb250YWluZXLigJlzIGxhc3QgY2hpbGQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Tm9kZX1cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcnVsZS5sYXN0ID09IHJ1bGUubm9kZXNbcnVsZS5ub2Rlcy5sZW5ndGggLSAxXTtcbiAgICAgKi9cbiAgICBnZXQgbGFzdCgpIHtcbiAgICAgICAgaWYgKCAhdGhpcy5ub2RlcyApIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGVzW3RoaXMubm9kZXMubGVuZ3RoIC0gMV07XG4gICAgfVxuXG4gICAgbm9ybWFsaXplKG5vZGVzLCBzYW1wbGUpIHtcbiAgICAgICAgaWYgKCB0eXBlb2Ygbm9kZXMgPT09ICdzdHJpbmcnICkge1xuICAgICAgICAgICAgbGV0IHBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZScpO1xuICAgICAgICAgICAgbm9kZXMgPSBjbGVhblNvdXJjZShwYXJzZShub2Rlcykubm9kZXMpO1xuICAgICAgICB9IGVsc2UgaWYgKCBBcnJheS5pc0FycmF5KG5vZGVzKSApIHtcbiAgICAgICAgICAgIG5vZGVzID0gbm9kZXMuc2xpY2UoMCk7XG4gICAgICAgICAgICBmb3IgKCBsZXQgaSBvZiBub2RlcyApIHtcbiAgICAgICAgICAgICAgICBpZiAoIGkucGFyZW50ICkgaS5wYXJlbnQucmVtb3ZlQ2hpbGQoaSwgJ2lnbm9yZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCBub2Rlcy50eXBlID09PSAncm9vdCcgKSB7XG4gICAgICAgICAgICBub2RlcyA9IG5vZGVzLm5vZGVzLnNsaWNlKDApO1xuICAgICAgICAgICAgZm9yICggbGV0IGkgb2Ygbm9kZXMgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBpLnBhcmVudCApIGkucGFyZW50LnJlbW92ZUNoaWxkKGksICdpZ25vcmUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICggbm9kZXMudHlwZSApIHtcbiAgICAgICAgICAgIG5vZGVzID0gW25vZGVzXTtcbiAgICAgICAgfSBlbHNlIGlmICggbm9kZXMucHJvcCApIHtcbiAgICAgICAgICAgIGlmICggdHlwZW9mIG5vZGVzLnZhbHVlID09PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIGZpZWxkIGlzIG1pc3NlZCBpbiBub2RlIGNyZWF0aW9uJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlb2Ygbm9kZXMudmFsdWUgIT09ICdzdHJpbmcnICkge1xuICAgICAgICAgICAgICAgIG5vZGVzLnZhbHVlID0gU3RyaW5nKG5vZGVzLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGVzID0gW25ldyBEZWNsYXJhdGlvbihub2RlcyldO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2Rlcy5zZWxlY3RvciApIHtcbiAgICAgICAgICAgIGxldCBSdWxlID0gcmVxdWlyZSgnLi9ydWxlJyk7XG4gICAgICAgICAgICBub2RlcyA9IFtuZXcgUnVsZShub2RlcyldO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2Rlcy5uYW1lICkge1xuICAgICAgICAgICAgbGV0IEF0UnVsZSA9IHJlcXVpcmUoJy4vYXQtcnVsZScpO1xuICAgICAgICAgICAgbm9kZXMgPSBbbmV3IEF0UnVsZShub2RlcyldO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2Rlcy50ZXh0ICkge1xuICAgICAgICAgICAgbm9kZXMgPSBbbmV3IENvbW1lbnQobm9kZXMpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBub2RlIHR5cGUgaW4gbm9kZSBjcmVhdGlvbicpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHByb2Nlc3NlZCA9IG5vZGVzLm1hcCggaSA9PiB7XG4gICAgICAgICAgICBpZiAoIHR5cGVvZiBpLmJlZm9yZSAhPT0gJ2Z1bmN0aW9uJyApIGkgPSB0aGlzLnJlYnVpbGQoaSk7XG5cbiAgICAgICAgICAgIGlmICggaS5wYXJlbnQgKSBpLnBhcmVudC5yZW1vdmVDaGlsZChpKTtcbiAgICAgICAgICAgIGlmICggdHlwZW9mIGkucmF3cy5iZWZvcmUgPT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgICAgIGlmICggc2FtcGxlICYmIHR5cGVvZiBzYW1wbGUucmF3cy5iZWZvcmUgIT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgICAgICAgICBpLnJhd3MuYmVmb3JlID0gc2FtcGxlLnJhd3MuYmVmb3JlLnJlcGxhY2UoL1teXFxzXS9nLCAnJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaS5wYXJlbnQgPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBwcm9jZXNzZWQ7XG4gICAgfVxuXG4gICAgcmVidWlsZChub2RlLCBwYXJlbnQpIHtcbiAgICAgICAgbGV0IGZpeDtcbiAgICAgICAgaWYgKCBub2RlLnR5cGUgPT09ICdyb290JyApIHtcbiAgICAgICAgICAgIGxldCBSb290ID0gcmVxdWlyZSgnLi9yb290Jyk7XG4gICAgICAgICAgICBmaXggPSBuZXcgUm9vdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2RlLnR5cGUgPT09ICdhdHJ1bGUnICkge1xuICAgICAgICAgICAgbGV0IEF0UnVsZSA9IHJlcXVpcmUoJy4vYXQtcnVsZScpO1xuICAgICAgICAgICAgZml4ID0gbmV3IEF0UnVsZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2RlLnR5cGUgPT09ICdydWxlJyApIHtcbiAgICAgICAgICAgIGxldCBSdWxlID0gcmVxdWlyZSgnLi9ydWxlJyk7XG4gICAgICAgICAgICBmaXggPSBuZXcgUnVsZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2RlLnR5cGUgPT09ICdkZWNsJyApIHtcbiAgICAgICAgICAgIGZpeCA9IG5ldyBEZWNsYXJhdGlvbigpO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2RlLnR5cGUgPT09ICdjb21tZW50JyApIHtcbiAgICAgICAgICAgIGZpeCA9IG5ldyBDb21tZW50KCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKCBsZXQgaSBpbiBub2RlICkge1xuICAgICAgICAgICAgaWYgKCBpID09PSAnbm9kZXMnICkge1xuICAgICAgICAgICAgICAgIGZpeC5ub2RlcyA9IG5vZGUubm9kZXMubWFwKCBqID0+IHRoaXMucmVidWlsZChqLCBmaXgpICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBpID09PSAncGFyZW50JyAmJiBwYXJlbnQgKSB7XG4gICAgICAgICAgICAgICAgZml4LnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIG5vZGUuaGFzT3duUHJvcGVydHkoaSkgKSB7XG4gICAgICAgICAgICAgICAgZml4W2ldID0gbm9kZVtpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaXg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIENvbnRhaW5lciNcbiAgICAgKiBAbWVtYmVyIHtOb2RlW119IG5vZGVzIC0gYW4gYXJyYXkgY29udGFpbmluZyB0aGUgY29udGFpbmVy4oCZcyBjaGlsZHJlblxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjayB9Jyk7XG4gICAgICogcm9vdC5ub2Rlcy5sZW5ndGggICAgICAgICAgIC8vPT4gMVxuICAgICAqIHJvb3Qubm9kZXNbMF0uc2VsZWN0b3IgICAgICAvLz0+ICdhJ1xuICAgICAqIHJvb3Qubm9kZXNbMF0ubm9kZXNbMF0ucHJvcCAvLz0+ICdjb2xvcidcbiAgICAgKi9cblxufVxuXG5leHBvcnQgZGVmYXVsdCBDb250YWluZXI7XG5cblxuLyoqXG4gKiBAY2FsbGJhY2sgY2hpbGRDb25kaXRpb25cbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAgICAtIGNvbnRhaW5lciBjaGlsZFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC0gY2hpbGQgaW5kZXhcbiAqIEBwYXJhbSB7Tm9kZVtdfSBub2RlcyAtIGFsbCBjb250YWluZXIgY2hpbGRyZW5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgY2hpbGRJdGVyYXRvclxuICogQHBhcmFtIHtOb2RlfSBub2RlICAgIC0gY29udGFpbmVyIGNoaWxkXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggLSBjaGlsZCBpbmRleFxuICogQHJldHVybiB7ZmFsc2V8dW5kZWZpbmVkfSByZXR1cm5pbmcgYGZhbHNlYCB3aWxsIGJyZWFrIGl0ZXJhdGlvblxuICovXG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _container = require('./container');\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS file and contains all its parsed nodes.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('a{color:black} b{z-index:2}');\n * root.type //=> 'root'\n * root.nodes.length //=> 2\n */\nvar Root = function (_Container) {\n _inherits(Root, _Container);\n\n function Root(defaults) {\n _classCallCheck(this, Root);\n\n var _this = _possibleConstructorReturn(this, _Container.call(this, defaults));\n\n _this.type = 'root';\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n\n Root.prototype.removeChild = function removeChild(child, ignore) {\n var index = this.index(child);\n\n if (!ignore && index === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index].raws.before;\n }\n\n return _Container.prototype.removeChild.call(this, child);\n };\n\n Root.prototype.normalize = function normalize(child, sample, type) {\n var nodes = _Container.prototype.normalize.call(this, child);\n\n if (sample) {\n if (type === 'prepend') {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var node = _ref;\n\n node.raws.before = sample.raws.before;\n }\n }\n }\n\n return nodes;\n };\n\n /**\n * Returns a {@link Result} instance representing the root’s CSS.\n *\n * @param {processOptions} [opts] - options with only `to` and `map` keys\n *\n * @return {Result} result with current root’s CSS\n *\n * @example\n * const root1 = postcss.parse(css1, { from: 'a.css' });\n * const root2 = postcss.parse(css2, { from: 'b.css' });\n * root1.append(root2);\n * const result = root1.toResult({ to: 'all.css', map: true });\n */\n\n\n Root.prototype.toResult = function toResult() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var LazyResult = require('./lazy-result');\n var Processor = require('./processor');\n\n var lazy = new LazyResult(new Processor(), this, opts);\n return lazy.stringify();\n };\n\n /**\n * @memberof Root#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `after`: the space symbols after the last child to the end of file.\n * * `semicolon`: is the last child has an (optional) semicolon.\n *\n * @example\n * postcss.parse('a {}\\n').raws //=> { after: '\\n' }\n * postcss.parse('a {}').raws //=> { after: '' }\n */\n\n return Root;\n}(_container2.default);\n\nexports.default = Root;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJvb3QuZXM2Il0sIm5hbWVzIjpbIlJvb3QiLCJkZWZhdWx0cyIsInR5cGUiLCJub2RlcyIsInJlbW92ZUNoaWxkIiwiY2hpbGQiLCJpZ25vcmUiLCJpbmRleCIsImxlbmd0aCIsInJhd3MiLCJiZWZvcmUiLCJub3JtYWxpemUiLCJzYW1wbGUiLCJmaXJzdCIsIm5vZGUiLCJ0b1Jlc3VsdCIsIm9wdHMiLCJMYXp5UmVzdWx0IiwicmVxdWlyZSIsIlByb2Nlc3NvciIsImxhenkiLCJzdHJpbmdpZnkiLCJDb250YWluZXIiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7SUFVTUEsSTs7O0FBRUYsa0JBQVlDLFFBQVosRUFBc0I7QUFBQTs7QUFBQSxxREFDbEIsc0JBQU1BLFFBQU4sQ0FEa0I7O0FBRWxCLGNBQUtDLElBQUwsR0FBWSxNQUFaO0FBQ0EsWUFBSyxDQUFDLE1BQUtDLEtBQVgsRUFBbUIsTUFBS0EsS0FBTCxHQUFhLEVBQWI7QUFIRDtBQUlyQjs7bUJBRURDLFcsd0JBQVlDLEssRUFBT0MsTSxFQUFRO0FBQ3ZCLFlBQU1DLFFBQVEsS0FBS0EsS0FBTCxDQUFXRixLQUFYLENBQWQ7O0FBRUEsWUFBSyxDQUFDQyxNQUFELElBQVdDLFVBQVUsQ0FBckIsSUFBMEIsS0FBS0osS0FBTCxDQUFXSyxNQUFYLEdBQW9CLENBQW5ELEVBQXVEO0FBQ25ELGlCQUFLTCxLQUFMLENBQVcsQ0FBWCxFQUFjTSxJQUFkLENBQW1CQyxNQUFuQixHQUE0QixLQUFLUCxLQUFMLENBQVdJLEtBQVgsRUFBa0JFLElBQWxCLENBQXVCQyxNQUFuRDtBQUNIOztBQUVELGVBQU8scUJBQU1OLFdBQU4sWUFBa0JDLEtBQWxCLENBQVA7QUFDSCxLOzttQkFFRE0sUyxzQkFBVU4sSyxFQUFPTyxNLEVBQVFWLEksRUFBTTtBQUMzQixZQUFJQyxRQUFRLHFCQUFNUSxTQUFOLFlBQWdCTixLQUFoQixDQUFaOztBQUVBLFlBQUtPLE1BQUwsRUFBYztBQUNWLGdCQUFLVixTQUFTLFNBQWQsRUFBMEI7QUFDdEIsb0JBQUssS0FBS0MsS0FBTCxDQUFXSyxNQUFYLEdBQW9CLENBQXpCLEVBQTZCO0FBQ3pCSSwyQkFBT0gsSUFBUCxDQUFZQyxNQUFaLEdBQXFCLEtBQUtQLEtBQUwsQ0FBVyxDQUFYLEVBQWNNLElBQWQsQ0FBbUJDLE1BQXhDO0FBQ0gsaUJBRkQsTUFFTztBQUNILDJCQUFPRSxPQUFPSCxJQUFQLENBQVlDLE1BQW5CO0FBQ0g7QUFDSixhQU5ELE1BTU8sSUFBSyxLQUFLRyxLQUFMLEtBQWVELE1BQXBCLEVBQTZCO0FBQ2hDLHFDQUFrQlQsS0FBbEIsa0hBQTBCO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQSx3QkFBaEJXLElBQWdCOztBQUN0QkEseUJBQUtMLElBQUwsQ0FBVUMsTUFBVixHQUFtQkUsT0FBT0gsSUFBUCxDQUFZQyxNQUEvQjtBQUNIO0FBQ0o7QUFDSjs7QUFFRCxlQUFPUCxLQUFQO0FBQ0gsSzs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O21CQWFBWSxRLHVCQUFxQjtBQUFBLFlBQVpDLElBQVksdUVBQUwsRUFBSzs7QUFDakIsWUFBSUMsYUFBYUMsUUFBUSxlQUFSLENBQWpCO0FBQ0EsWUFBSUMsWUFBYUQsUUFBUSxhQUFSLENBQWpCOztBQUVBLFlBQUlFLE9BQU8sSUFBSUgsVUFBSixDQUFlLElBQUlFLFNBQUosRUFBZixFQUFnQyxJQUFoQyxFQUFzQ0gsSUFBdEMsQ0FBWDtBQUNBLGVBQU9JLEtBQUtDLFNBQUwsRUFBUDtBQUNILEs7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBM0RlQyxtQjs7a0JBNkVKdEIsSSIsImZpbGUiOiJyb290LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbnRhaW5lciBmcm9tICcuL2NvbnRhaW5lcic7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIENTUyBmaWxlIGFuZCBjb250YWlucyBhbGwgaXRzIHBhcnNlZCBub2Rlcy5cbiAqXG4gKiBAZXh0ZW5kcyBDb250YWluZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2F7Y29sb3I6YmxhY2t9IGJ7ei1pbmRleDoyfScpO1xuICogcm9vdC50eXBlICAgICAgICAgLy89PiAncm9vdCdcbiAqIHJvb3Qubm9kZXMubGVuZ3RoIC8vPT4gMlxuICovXG5jbGFzcyBSb290IGV4dGVuZHMgQ29udGFpbmVyIHtcblxuICAgIGNvbnN0cnVjdG9yKGRlZmF1bHRzKSB7XG4gICAgICAgIHN1cGVyKGRlZmF1bHRzKTtcbiAgICAgICAgdGhpcy50eXBlID0gJ3Jvb3QnO1xuICAgICAgICBpZiAoICF0aGlzLm5vZGVzICkgdGhpcy5ub2RlcyA9IFtdO1xuICAgIH1cblxuICAgIHJlbW92ZUNoaWxkKGNoaWxkLCBpZ25vcmUpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmluZGV4KGNoaWxkKTtcblxuICAgICAgICBpZiAoICFpZ25vcmUgJiYgaW5kZXggPT09IDAgJiYgdGhpcy5ub2Rlcy5sZW5ndGggPiAxICkge1xuICAgICAgICAgICAgdGhpcy5ub2Rlc1sxXS5yYXdzLmJlZm9yZSA9IHRoaXMubm9kZXNbaW5kZXhdLnJhd3MuYmVmb3JlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1cGVyLnJlbW92ZUNoaWxkKGNoaWxkKTtcbiAgICB9XG5cbiAgICBub3JtYWxpemUoY2hpbGQsIHNhbXBsZSwgdHlwZSkge1xuICAgICAgICBsZXQgbm9kZXMgPSBzdXBlci5ub3JtYWxpemUoY2hpbGQpO1xuXG4gICAgICAgIGlmICggc2FtcGxlICkge1xuICAgICAgICAgICAgaWYgKCB0eXBlID09PSAncHJlcGVuZCcgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLm5vZGVzLmxlbmd0aCA+IDEgKSB7XG4gICAgICAgICAgICAgICAgICAgIHNhbXBsZS5yYXdzLmJlZm9yZSA9IHRoaXMubm9kZXNbMV0ucmF3cy5iZWZvcmU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNhbXBsZS5yYXdzLmJlZm9yZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB0aGlzLmZpcnN0ICE9PSBzYW1wbGUgKSB7XG4gICAgICAgICAgICAgICAgZm9yICggbGV0IG5vZGUgb2Ygbm9kZXMgKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmF3cy5iZWZvcmUgPSBzYW1wbGUucmF3cy5iZWZvcmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSB7QGxpbmsgUmVzdWx0fSBpbnN0YW5jZSByZXByZXNlbnRpbmcgdGhlIHJvb3TigJlzIENTUy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IFtvcHRzXSAtIG9wdGlvbnMgd2l0aCBvbmx5IGB0b2AgYW5kIGBtYXBgIGtleXNcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1Jlc3VsdH0gcmVzdWx0IHdpdGggY3VycmVudCByb2904oCZcyBDU1NcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3Qgcm9vdDEgPSBwb3N0Y3NzLnBhcnNlKGNzczEsIHsgZnJvbTogJ2EuY3NzJyB9KTtcbiAgICAgKiBjb25zdCByb290MiA9IHBvc3Rjc3MucGFyc2UoY3NzMiwgeyBmcm9tOiAnYi5jc3MnIH0pO1xuICAgICAqIHJvb3QxLmFwcGVuZChyb290Mik7XG4gICAgICogY29uc3QgcmVzdWx0ID0gcm9vdDEudG9SZXN1bHQoeyB0bzogJ2FsbC5jc3MnLCBtYXA6IHRydWUgfSk7XG4gICAgICovXG4gICAgdG9SZXN1bHQob3B0cyA9IHsgfSkge1xuICAgICAgICBsZXQgTGF6eVJlc3VsdCA9IHJlcXVpcmUoJy4vbGF6eS1yZXN1bHQnKTtcbiAgICAgICAgbGV0IFByb2Nlc3NvciAgPSByZXF1aXJlKCcuL3Byb2Nlc3NvcicpO1xuXG4gICAgICAgIGxldCBsYXp5ID0gbmV3IExhenlSZXN1bHQobmV3IFByb2Nlc3NvcigpLCB0aGlzLCBvcHRzKTtcbiAgICAgICAgcmV0dXJuIGxhenkuc3RyaW5naWZ5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIFJvb3QjXG4gICAgICogQG1lbWJlciB7b2JqZWN0fSByYXdzIC0gSW5mb3JtYXRpb24gdG8gZ2VuZXJhdGUgYnl0ZS10by1ieXRlIGVxdWFsXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSBzdHJpbmcgYXMgaXQgd2FzIGluIHRoZSBvcmlnaW4gaW5wdXQuXG4gICAgICpcbiAgICAgKiBFdmVyeSBwYXJzZXIgc2F2ZXMgaXRzIG93biBwcm9wZXJ0aWVzLFxuICAgICAqIGJ1dCB0aGUgZGVmYXVsdCBDU1MgcGFyc2VyIHVzZXM6XG4gICAgICpcbiAgICAgKiAqIGBhZnRlcmA6IHRoZSBzcGFjZSBzeW1ib2xzIGFmdGVyIHRoZSBsYXN0IGNoaWxkIHRvIHRoZSBlbmQgb2YgZmlsZS5cbiAgICAgKiAqIGBzZW1pY29sb25gOiBpcyB0aGUgbGFzdCBjaGlsZCBoYXMgYW4gKG9wdGlvbmFsKSBzZW1pY29sb24uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHBvc3Rjc3MucGFyc2UoJ2Ege31cXG4nKS5yYXdzIC8vPT4geyBhZnRlcjogJ1xcbicgfVxuICAgICAqIHBvc3Rjc3MucGFyc2UoJ2Ege30nKS5yYXdzICAgLy89PiB7IGFmdGVyOiAnJyB9XG4gICAgICovXG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgUm9vdDtcbiJdfQ==\n","var hljs = require('./highlight');\n\nhljs.registerLanguage('1c', require('./languages/1c'));\nhljs.registerLanguage('abnf', require('./languages/abnf'));\nhljs.registerLanguage('accesslog', require('./languages/accesslog'));\nhljs.registerLanguage('actionscript', require('./languages/actionscript'));\nhljs.registerLanguage('ada', require('./languages/ada'));\nhljs.registerLanguage('angelscript', require('./languages/angelscript'));\nhljs.registerLanguage('apache', require('./languages/apache'));\nhljs.registerLanguage('applescript', require('./languages/applescript'));\nhljs.registerLanguage('arcade', require('./languages/arcade'));\nhljs.registerLanguage('cpp', require('./languages/cpp'));\nhljs.registerLanguage('arduino', require('./languages/arduino'));\nhljs.registerLanguage('armasm', require('./languages/armasm'));\nhljs.registerLanguage('xml', require('./languages/xml'));\nhljs.registerLanguage('asciidoc', require('./languages/asciidoc'));\nhljs.registerLanguage('aspectj', require('./languages/aspectj'));\nhljs.registerLanguage('autohotkey', require('./languages/autohotkey'));\nhljs.registerLanguage('autoit', require('./languages/autoit'));\nhljs.registerLanguage('avrasm', require('./languages/avrasm'));\nhljs.registerLanguage('awk', require('./languages/awk'));\nhljs.registerLanguage('axapta', require('./languages/axapta'));\nhljs.registerLanguage('bash', require('./languages/bash'));\nhljs.registerLanguage('basic', require('./languages/basic'));\nhljs.registerLanguage('bnf', require('./languages/bnf'));\nhljs.registerLanguage('brainfuck', require('./languages/brainfuck'));\nhljs.registerLanguage('cal', require('./languages/cal'));\nhljs.registerLanguage('capnproto', require('./languages/capnproto'));\nhljs.registerLanguage('ceylon', require('./languages/ceylon'));\nhljs.registerLanguage('clean', require('./languages/clean'));\nhljs.registerLanguage('clojure', require('./languages/clojure'));\nhljs.registerLanguage('clojure-repl', require('./languages/clojure-repl'));\nhljs.registerLanguage('cmake', require('./languages/cmake'));\nhljs.registerLanguage('coffeescript', require('./languages/coffeescript'));\nhljs.registerLanguage('coq', require('./languages/coq'));\nhljs.registerLanguage('cos', require('./languages/cos'));\nhljs.registerLanguage('crmsh', require('./languages/crmsh'));\nhljs.registerLanguage('crystal', require('./languages/crystal'));\nhljs.registerLanguage('cs', require('./languages/cs'));\nhljs.registerLanguage('csp', require('./languages/csp'));\nhljs.registerLanguage('css', require('./languages/css'));\nhljs.registerLanguage('d', require('./languages/d'));\nhljs.registerLanguage('markdown', require('./languages/markdown'));\nhljs.registerLanguage('dart', require('./languages/dart'));\nhljs.registerLanguage('delphi', require('./languages/delphi'));\nhljs.registerLanguage('diff', require('./languages/diff'));\nhljs.registerLanguage('django', require('./languages/django'));\nhljs.registerLanguage('dns', require('./languages/dns'));\nhljs.registerLanguage('dockerfile', require('./languages/dockerfile'));\nhljs.registerLanguage('dos', require('./languages/dos'));\nhljs.registerLanguage('dsconfig', require('./languages/dsconfig'));\nhljs.registerLanguage('dts', require('./languages/dts'));\nhljs.registerLanguage('dust', require('./languages/dust'));\nhljs.registerLanguage('ebnf', require('./languages/ebnf'));\nhljs.registerLanguage('elixir', require('./languages/elixir'));\nhljs.registerLanguage('elm', require('./languages/elm'));\nhljs.registerLanguage('ruby', require('./languages/ruby'));\nhljs.registerLanguage('erb', require('./languages/erb'));\nhljs.registerLanguage('erlang-repl', require('./languages/erlang-repl'));\nhljs.registerLanguage('erlang', require('./languages/erlang'));\nhljs.registerLanguage('excel', require('./languages/excel'));\nhljs.registerLanguage('fix', require('./languages/fix'));\nhljs.registerLanguage('flix', require('./languages/flix'));\nhljs.registerLanguage('fortran', require('./languages/fortran'));\nhljs.registerLanguage('fsharp', require('./languages/fsharp'));\nhljs.registerLanguage('gams', require('./languages/gams'));\nhljs.registerLanguage('gauss', require('./languages/gauss'));\nhljs.registerLanguage('gcode', require('./languages/gcode'));\nhljs.registerLanguage('gherkin', require('./languages/gherkin'));\nhljs.registerLanguage('glsl', require('./languages/glsl'));\nhljs.registerLanguage('gml', require('./languages/gml'));\nhljs.registerLanguage('go', require('./languages/go'));\nhljs.registerLanguage('golo', require('./languages/golo'));\nhljs.registerLanguage('gradle', require('./languages/gradle'));\nhljs.registerLanguage('groovy', require('./languages/groovy'));\nhljs.registerLanguage('haml', require('./languages/haml'));\nhljs.registerLanguage('handlebars', require('./languages/handlebars'));\nhljs.registerLanguage('haskell', require('./languages/haskell'));\nhljs.registerLanguage('haxe', require('./languages/haxe'));\nhljs.registerLanguage('hsp', require('./languages/hsp'));\nhljs.registerLanguage('htmlbars', require('./languages/htmlbars'));\nhljs.registerLanguage('http', require('./languages/http'));\nhljs.registerLanguage('hy', require('./languages/hy'));\nhljs.registerLanguage('inform7', require('./languages/inform7'));\nhljs.registerLanguage('ini', require('./languages/ini'));\nhljs.registerLanguage('irpf90', require('./languages/irpf90'));\nhljs.registerLanguage('isbl', require('./languages/isbl'));\nhljs.registerLanguage('java', require('./languages/java'));\nhljs.registerLanguage('javascript', require('./languages/javascript'));\nhljs.registerLanguage('jboss-cli', require('./languages/jboss-cli'));\nhljs.registerLanguage('json', require('./languages/json'));\nhljs.registerLanguage('julia', require('./languages/julia'));\nhljs.registerLanguage('julia-repl', require('./languages/julia-repl'));\nhljs.registerLanguage('kotlin', require('./languages/kotlin'));\nhljs.registerLanguage('lasso', require('./languages/lasso'));\nhljs.registerLanguage('ldif', require('./languages/ldif'));\nhljs.registerLanguage('leaf', require('./languages/leaf'));\nhljs.registerLanguage('less', require('./languages/less'));\nhljs.registerLanguage('lisp', require('./languages/lisp'));\nhljs.registerLanguage('livecodeserver', require('./languages/livecodeserver'));\nhljs.registerLanguage('livescript', require('./languages/livescript'));\nhljs.registerLanguage('llvm', require('./languages/llvm'));\nhljs.registerLanguage('lsl', require('./languages/lsl'));\nhljs.registerLanguage('lua', require('./languages/lua'));\nhljs.registerLanguage('makefile', require('./languages/makefile'));\nhljs.registerLanguage('mathematica', require('./languages/mathematica'));\nhljs.registerLanguage('matlab', require('./languages/matlab'));\nhljs.registerLanguage('maxima', require('./languages/maxima'));\nhljs.registerLanguage('mel', require('./languages/mel'));\nhljs.registerLanguage('mercury', require('./languages/mercury'));\nhljs.registerLanguage('mipsasm', require('./languages/mipsasm'));\nhljs.registerLanguage('mizar', require('./languages/mizar'));\nhljs.registerLanguage('perl', require('./languages/perl'));\nhljs.registerLanguage('mojolicious', require('./languages/mojolicious'));\nhljs.registerLanguage('monkey', require('./languages/monkey'));\nhljs.registerLanguage('moonscript', require('./languages/moonscript'));\nhljs.registerLanguage('n1ql', require('./languages/n1ql'));\nhljs.registerLanguage('nginx', require('./languages/nginx'));\nhljs.registerLanguage('nimrod', require('./languages/nimrod'));\nhljs.registerLanguage('nix', require('./languages/nix'));\nhljs.registerLanguage('nsis', require('./languages/nsis'));\nhljs.registerLanguage('objectivec', require('./languages/objectivec'));\nhljs.registerLanguage('ocaml', require('./languages/ocaml'));\nhljs.registerLanguage('openscad', require('./languages/openscad'));\nhljs.registerLanguage('oxygene', require('./languages/oxygene'));\nhljs.registerLanguage('parser3', require('./languages/parser3'));\nhljs.registerLanguage('pf', require('./languages/pf'));\nhljs.registerLanguage('pgsql', require('./languages/pgsql'));\nhljs.registerLanguage('php', require('./languages/php'));\nhljs.registerLanguage('plaintext', require('./languages/plaintext'));\nhljs.registerLanguage('pony', require('./languages/pony'));\nhljs.registerLanguage('powershell', require('./languages/powershell'));\nhljs.registerLanguage('processing', require('./languages/processing'));\nhljs.registerLanguage('profile', require('./languages/profile'));\nhljs.registerLanguage('prolog', require('./languages/prolog'));\nhljs.registerLanguage('properties', require('./languages/properties'));\nhljs.registerLanguage('protobuf', require('./languages/protobuf'));\nhljs.registerLanguage('puppet', require('./languages/puppet'));\nhljs.registerLanguage('purebasic', require('./languages/purebasic'));\nhljs.registerLanguage('python', require('./languages/python'));\nhljs.registerLanguage('q', require('./languages/q'));\nhljs.registerLanguage('qml', require('./languages/qml'));\nhljs.registerLanguage('r', require('./languages/r'));\nhljs.registerLanguage('reasonml', require('./languages/reasonml'));\nhljs.registerLanguage('rib', require('./languages/rib'));\nhljs.registerLanguage('roboconf', require('./languages/roboconf'));\nhljs.registerLanguage('routeros', require('./languages/routeros'));\nhljs.registerLanguage('rsl', require('./languages/rsl'));\nhljs.registerLanguage('ruleslanguage', require('./languages/ruleslanguage'));\nhljs.registerLanguage('rust', require('./languages/rust'));\nhljs.registerLanguage('sas', require('./languages/sas'));\nhljs.registerLanguage('scala', require('./languages/scala'));\nhljs.registerLanguage('scheme', require('./languages/scheme'));\nhljs.registerLanguage('scilab', require('./languages/scilab'));\nhljs.registerLanguage('scss', require('./languages/scss'));\nhljs.registerLanguage('shell', require('./languages/shell'));\nhljs.registerLanguage('smali', require('./languages/smali'));\nhljs.registerLanguage('smalltalk', require('./languages/smalltalk'));\nhljs.registerLanguage('sml', require('./languages/sml'));\nhljs.registerLanguage('sqf', require('./languages/sqf'));\nhljs.registerLanguage('sql', require('./languages/sql'));\nhljs.registerLanguage('stan', require('./languages/stan'));\nhljs.registerLanguage('stata', require('./languages/stata'));\nhljs.registerLanguage('step21', require('./languages/step21'));\nhljs.registerLanguage('stylus', require('./languages/stylus'));\nhljs.registerLanguage('subunit', require('./languages/subunit'));\nhljs.registerLanguage('swift', require('./languages/swift'));\nhljs.registerLanguage('taggerscript', require('./languages/taggerscript'));\nhljs.registerLanguage('yaml', require('./languages/yaml'));\nhljs.registerLanguage('tap', require('./languages/tap'));\nhljs.registerLanguage('tcl', require('./languages/tcl'));\nhljs.registerLanguage('tex', require('./languages/tex'));\nhljs.registerLanguage('thrift', require('./languages/thrift'));\nhljs.registerLanguage('tp', require('./languages/tp'));\nhljs.registerLanguage('twig', require('./languages/twig'));\nhljs.registerLanguage('typescript', require('./languages/typescript'));\nhljs.registerLanguage('vala', require('./languages/vala'));\nhljs.registerLanguage('vbnet', require('./languages/vbnet'));\nhljs.registerLanguage('vbscript', require('./languages/vbscript'));\nhljs.registerLanguage('vbscript-html', require('./languages/vbscript-html'));\nhljs.registerLanguage('verilog', require('./languages/verilog'));\nhljs.registerLanguage('vhdl', require('./languages/vhdl'));\nhljs.registerLanguage('vim', require('./languages/vim'));\nhljs.registerLanguage('x86asm', require('./languages/x86asm'));\nhljs.registerLanguage('xl', require('./languages/xl'));\nhljs.registerLanguage('xquery', require('./languages/xquery'));\nhljs.registerLanguage('zephir', require('./languages/zephir'));\n\nmodule.exports = hljs;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (lowerBound, upperBound) {\n return function (value) {\n return value <= upperBound && value >= lowerBound;\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _isVisibleThroughFrame = require('./is-visible-through-frame');\n\nvar _isVisibleThroughFrame2 = _interopRequireDefault(_isVisibleThroughFrame);\n\nvar _spacing = require('../spacing');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var target = _ref.target,\n destination = _ref.destination,\n viewport = _ref.viewport;\n\n var displacement = destination.viewport.frameScroll.diff.displacement;\n var withScroll = (0, _spacing.offset)(target, displacement);\n\n if (!destination.viewport.clipped) {\n return false;\n }\n\n var isVisibleInDroppable = (0, _isVisibleThroughFrame2.default)(destination.viewport.clipped)(withScroll);\n\n var isVisibleInViewport = (0, _isVisibleThroughFrame2.default)(viewport)(withScroll);\n\n return isVisibleInDroppable && isVisibleInViewport;\n};","'use strict';\n\nexports.__esModule = true;\nexports.defaultMemoize = defaultMemoize;\nexports.createSelectorCreator = createSelectorCreator;\nexports.createStructuredSelector = createStructuredSelector;\nfunction defaultEqualityCheck(a, b) {\n return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n var length = prev.length;\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction defaultMemoize(func) {\n var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n\n var lastArgs = null;\n var lastResult = null;\n // we reference arguments instead of spreading them for performance reasons\n return function () {\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n lastResult = func.apply(null, arguments);\n }\n\n lastArgs = arguments;\n return lastResult;\n };\n}\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep;\n }).join(', ');\n throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n }\n\n return dependencies;\n}\n\nfunction createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptions[_key - 1] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = getDependencies(funcs);\n\n var memoizedResultFunc = memoize.apply(undefined, [function () {\n recomputations++;\n // apply arguments instead of spreading for performance.\n return resultFunc.apply(null, arguments);\n }].concat(memoizeOptions));\n\n // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n var selector = defaultMemoize(function () {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n params.push(dependencies[i].apply(null, arguments));\n }\n\n // apply arguments instead of spreading for performance.\n return memoizedResultFunc.apply(null, params);\n });\n\n selector.resultFunc = resultFunc;\n selector.recomputations = function () {\n return recomputations;\n };\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n return selector;\n };\n}\n\nvar createSelector = exports.createSelector = createSelectorCreator(defaultMemoize);\n\nfunction createStructuredSelector(selectors) {\n var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n }\n var objectKeys = Object.keys(selectors);\n return selectorCreator(objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n};","\n\n// currently used to initiate the velocity style object to 0\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = mapToZero;\n\nfunction mapToZero(obj) {\n var ret = {};\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n ret[key] = 0;\n }\n }\n return ret;\n}\n\nmodule.exports = exports['default'];","\n\n// stepper is used a lot. Saves allocation to return the same array wrapper.\n// This is fine and danger-free against mutations because the callsite\n// immediately destructures it and gets the numbers inside without passing the\n\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = stepper;\n\nvar reusedTuple = [0, 0];\n\nfunction stepper(secondPerFrame, x, v, destX, k, b, precision) {\n // Spring stiffness, in kg / s^2\n\n // for animations, destX is really spring length (spring at rest). initial\n // position is considered as the stretched/compressed position of a spring\n var Fspring = -k * (x - destX);\n\n // Damping, in kg / s\n var Fdamper = -b * v;\n\n // usually we put mass here, but for animation purposes, specifying mass is a\n // bit redundant. you could simply adjust k and b accordingly\n // let a = (Fspring + Fdamper) / mass;\n var a = Fspring + Fdamper;\n\n var newV = v + a * secondPerFrame;\n var newX = x + newV * secondPerFrame;\n\n if (Math.abs(newV) < precision && Math.abs(newX - destX) < precision) {\n reusedTuple[0] = destX;\n reusedTuple[1] = 0;\n return reusedTuple;\n }\n\n reusedTuple[0] = newX;\n reusedTuple[1] = newV;\n return reusedTuple;\n}\n\nmodule.exports = exports[\"default\"];\n// array reference around.","// Generated by CoffeeScript 1.7.1\n(function() {\n var getNanoSeconds, hrtime, loadTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - loadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n loadTime = getNanoSeconds();\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","\n\n// usage assumption: currentStyle values have already been rendered but it says\n// nothing of whether currentStyle is stale (see unreadPropStyle)\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = shouldStopAnimation;\n\nfunction shouldStopAnimation(currentStyle, style, currentVelocity) {\n for (var key in style) {\n if (!Object.prototype.hasOwnProperty.call(style, key)) {\n continue;\n }\n\n if (currentVelocity[key] !== 0) {\n return false;\n }\n\n var styleValue = typeof style[key] === 'number' ? style[key] : style[key].val;\n // stepper will have already taken care of rounding precision errors, so\n // won't have such thing as 0.9999 !=== 1\n if (currentStyle[key] !== styleValue) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _rafSchd = require('raf-schd');\n\nvar _rafSchd2 = _interopRequireDefault(_rafSchd);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (callbacks, isDraggingFn) {\n var ifDragging = function ifDragging(fn) {\n if (isDraggingFn()) {\n fn();\n }\n };\n\n var memoizedMove = (0, _memoizeOne2.default)(function (x, y) {\n var point = { x: x, y: y };\n callbacks.onMove(point);\n });\n\n var move = (0, _rafSchd2.default)(function (point) {\n ifDragging(function () {\n return memoizedMove(point.x, point.y);\n });\n });\n\n var moveForward = (0, _rafSchd2.default)(function () {\n ifDragging(callbacks.onMoveForward);\n });\n\n var moveBackward = (0, _rafSchd2.default)(function () {\n ifDragging(callbacks.onMoveBackward);\n });\n\n var crossAxisMoveForward = (0, _rafSchd2.default)(function () {\n ifDragging(callbacks.onCrossAxisMoveForward);\n });\n\n var crossAxisMoveBackward = (0, _rafSchd2.default)(function () {\n ifDragging(callbacks.onCrossAxisMoveBackward);\n });\n\n var windowScrollMove = (0, _rafSchd2.default)(function () {\n ifDragging(callbacks.onWindowScroll);\n });\n\n return {\n move: move,\n moveForward: moveForward,\n moveBackward: moveBackward,\n crossAxisMoveForward: crossAxisMoveForward,\n crossAxisMoveBackward: crossAxisMoveBackward,\n windowScrollMove: windowScrollMove\n };\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (ref) {\n return ref ? ref.ownerDocument.defaultView : window;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar tab = exports.tab = 9;\nvar enter = exports.enter = 13;\nvar escape = exports.escape = 27;\nvar space = exports.space = 32;\nvar arrowLeft = exports.arrowLeft = 37;\nvar arrowUp = exports.arrowUp = 38;\nvar arrowRight = exports.arrowRight = 39;\nvar arrowDown = exports.arrowDown = 40;","'use strict';\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _utils = require('flux/utils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar INITIAL_STATE = {\n cachedPassword: localStorage.getItem('mx_pass')\n};\n\n/**\n * A class for storing application state to do with the session. This is a simple flux\n * store that listens for actions and updates its state accordingly, informing any\n * listeners (views) of state changes.\n *\n * Usage:\n * ```\n * sessionStore.addListener(() => {\n * this.setState({ cachedPassword: sessionStore.getCachedPassword() })\n * })\n * ```\n */\n\nvar SessionStore = function (_Store) {\n (0, _inherits3.default)(SessionStore, _Store);\n\n function SessionStore() {\n (0, _classCallCheck3.default)(this, SessionStore);\n\n // Initialise state\n var _this = (0, _possibleConstructorReturn3.default)(this, (SessionStore.__proto__ || (0, _getPrototypeOf2.default)(SessionStore)).call(this, _dispatcher2.default));\n\n _this._state = INITIAL_STATE;\n return _this;\n }\n\n (0, _createClass3.default)(SessionStore, [{\n key: '_update',\n value: function _update() {\n // Persist state to localStorage\n if (this._state.cachedPassword) {\n localStorage.setItem('mx_pass', this._state.cachedPassword);\n } else {\n localStorage.removeItem('mx_pass', this._state.cachedPassword);\n }\n\n this.__emitChange();\n }\n }, {\n key: '_setState',\n value: function _setState(newState) {\n this._state = (0, _assign2.default)(this._state, newState);\n this._update();\n }\n }, {\n key: '__onDispatch',\n value: function __onDispatch(payload) {\n switch (payload.action) {\n case 'cached_password':\n this._setState({\n cachedPassword: payload.cachedPassword\n });\n break;\n case 'password_changed':\n this._setState({\n cachedPassword: null\n });\n break;\n case 'on_logged_out':\n this._setState({\n cachedPassword: null\n });\n break;\n }\n }\n }, {\n key: 'getCachedPassword',\n value: function getCachedPassword() {\n return this._state.cachedPassword;\n }\n }]);\n return SessionStore;\n}(_utils.Store);\n\nvar singletonSessionStore = null;\nif (!singletonSessionStore) {\n singletonSessionStore = new SessionStore();\n}\nmodule.exports = singletonSessionStore;\n//# sourceMappingURL=SessionStore.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _maxSafeInteger = require('babel-runtime/core-js/number/max-safe-integer');\n\nvar _maxSafeInteger2 = _interopRequireDefault(_maxSafeInteger);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _utils = require('flux/utils');\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _DMRoomMap = require('../utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _Unread = require('../Unread');\n\nvar _Unread2 = _interopRequireDefault(_Unread);\n\nvar _SettingsStore = require('../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A class for storing application state for categorising rooms in\n * the RoomList.\n */\nvar RoomListStore = function (_Store) {\n (0, _inherits3.default)(RoomListStore, _Store);\n\n function RoomListStore() {\n (0, _classCallCheck3.default)(this, RoomListStore);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (RoomListStore.__proto__ || (0, _getPrototypeOf2.default)(RoomListStore)).call(this, _dispatcher2.default));\n\n _this._init();\n _this._getManualComparator = _this._getManualComparator.bind(_this);\n _this._recentsComparator = _this._recentsComparator.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(RoomListStore, [{\n key: '_init',\n value: function _init() {\n // Initialise state\n this._state = {\n lists: {\n \"m.server_notice\": [],\n \"im.vector.fake.invite\": [],\n \"m.favourite\": [],\n \"im.vector.fake.recent\": [],\n \"im.vector.fake.direct\": [],\n \"m.lowpriority\": [],\n \"im.vector.fake.archived\": []\n },\n ready: false,\n\n // The room cache stores a mapping of roomId to cache record.\n // Each cache record is a key/value pair for various bits of\n // data used to sort the room list. Currently this stores the\n // following bits of informations:\n // \"timestamp\": number, The timestamp of the last relevant\n // event in the room.\n // \"notifications\": boolean, Whether or not the user has been\n // highlighted on any unread events.\n // \"unread\": boolean, Whether or not the user has any\n // unread events.\n //\n // All of the cached values are lazily loaded on read in the\n // recents comparator. When an event is received for a particular\n // room, all the cached values are invalidated - forcing the\n // next read to set new values. The entries do not expire on\n // their own.\n roomCache: {}\n };\n }\n }, {\n key: '_setState',\n value: function _setState(newState) {\n this._state = (0, _assign2.default)(this._state, newState);\n this.__emitChange();\n }\n }, {\n key: '__onDispatch',\n value: function __onDispatch(payload) {\n switch (payload.action) {\n // Initialise state after initial sync\n case 'MatrixActions.sync':\n {\n if (!(payload.prevState !== 'PREPARED' && payload.state === 'PREPARED')) {\n break;\n }\n\n this._matrixClient = payload.matrixClient;\n this._generateRoomLists();\n }\n break;\n case 'MatrixActions.Room.tags':\n {\n if (!this._state.ready) break;\n this._generateRoomLists();\n }\n break;\n case 'MatrixActions.Room.timeline':\n {\n if (!this._state.ready || !payload.isLiveEvent || !payload.isLiveUnfilteredRoomTimelineEvent || !this._eventTriggersRecentReorder(payload.event)) break;\n\n this._clearCachedRoomState(payload.event.getRoomId());\n this._generateRoomLists();\n }\n break;\n // When an event is decrypted, it could mean we need to reorder the room\n // list because we now know the type of the event.\n case 'MatrixActions.Event.decrypted':\n {\n // We may not have synced or done an initial generation of the lists\n if (!this._matrixClient || !this._state.ready) break;\n\n var roomId = payload.event.getRoomId();\n\n // We may have decrypted an event without a roomId (e.g to_device)\n if (!roomId) break;\n\n var room = this._matrixClient.getRoom(roomId);\n\n // We somehow decrypted an event for a room our client is unaware of\n if (!room) break;\n\n var liveTimeline = room.getLiveTimeline();\n var eventTimeline = room.getTimelineForEvent(payload.event.getId());\n\n // Either this event was not added to the live timeline (e.g. pagination)\n // or it doesn't affect the ordering of the room list.\n if (liveTimeline !== eventTimeline || !this._eventTriggersRecentReorder(payload.event)) break;\n\n this._clearCachedRoomState(payload.event.getRoomId());\n this._generateRoomLists();\n }\n break;\n case 'MatrixActions.accountData':\n {\n if (payload.event_type !== 'm.direct') break;\n this._generateRoomLists();\n }\n break;\n case 'MatrixActions.Room.accountData':\n {\n if (payload.event_type === 'm.fully_read') {\n this._clearCachedRoomState(payload.room.roomId);\n this._generateRoomLists();\n }\n }\n break;\n case 'MatrixActions.Room.myMembership':\n {\n this._generateRoomLists();\n }\n break;\n // This could be a new room that we've been invited to, joined or created\n // we won't get a RoomMember.membership for these cases if we're not already\n // a member.\n case 'MatrixActions.Room':\n {\n if (!this._state.ready || !this._matrixClient.credentials.userId) break;\n this._generateRoomLists();\n }\n break;\n case 'RoomListActions.tagRoom.pending':\n {\n // XXX: we only show one optimistic update at any one time.\n // Ideally we should be making a list of in-flight requests\n // that are backed by transaction IDs. Until the js-sdk\n // supports this, we're stuck with only being able to use\n // the most recent optimistic update.\n this._generateRoomLists(payload.request);\n }\n break;\n case 'RoomListActions.tagRoom.failure':\n {\n // Reset state according to js-sdk\n this._generateRoomLists();\n }\n break;\n case 'on_logged_out':\n {\n // Reset state without pushing an update to the view, which generally assumes that\n // the matrix client isn't `null` and so causing a re-render will cause NPEs.\n this._init();\n this._matrixClient = null;\n }\n break;\n }\n }\n }, {\n key: '_generateRoomLists',\n value: function _generateRoomLists(optimisticRequest) {\n var _this2 = this;\n\n var lists = {\n \"m.server_notice\": [],\n \"im.vector.fake.invite\": [],\n \"m.favourite\": [],\n \"im.vector.fake.recent\": [],\n \"im.vector.fake.direct\": [],\n \"m.lowpriority\": [],\n \"im.vector.fake.archived\": []\n };\n\n var dmRoomMap = _DMRoomMap2.default.shared();\n\n // If somehow we dispatched a RoomListActions.tagRoom.failure before a MatrixActions.sync\n if (!this._matrixClient) return;\n\n this._matrixClient.getRooms().forEach(function (room, index) {\n var myUserId = _this2._matrixClient.getUserId();\n var membership = room.getMyMembership();\n var me = room.getMember(myUserId);\n\n if (membership == \"invite\") {\n lists[\"im.vector.fake.invite\"].push(room);\n } else if (membership == \"join\" || membership === \"ban\" || me && me.isKicked()) {\n // Used to split rooms via tags\n var tagNames = (0, _keys2.default)(room.tags);\n\n if (optimisticRequest && optimisticRequest.room === room) {\n // Remove old tag\n tagNames = tagNames.filter(function (tagName) {\n return tagName !== optimisticRequest.oldTag;\n });\n // Add new tag\n if (optimisticRequest.newTag && !tagNames.includes(optimisticRequest.newTag)) {\n tagNames.push(optimisticRequest.newTag);\n }\n }\n\n // ignore any m. tag names we don't know about\n tagNames = tagNames.filter(function (t) {\n return !t.startsWith('m.') || lists[t] !== undefined;\n });\n\n if (tagNames.length) {\n for (var i = 0; i < tagNames.length; i++) {\n var tagName = tagNames[i];\n lists[tagName] = lists[tagName] || [];\n lists[tagName].push(room);\n }\n } else if (dmRoomMap.getUserIdForRoomId(room.roomId)) {\n // \"Direct Message\" rooms (that we're still in and that aren't otherwise tagged)\n lists[\"im.vector.fake.direct\"].push(room);\n } else {\n lists[\"im.vector.fake.recent\"].push(room);\n }\n } else if (membership === \"leave\") {\n lists[\"im.vector.fake.archived\"].push(room);\n }\n });\n\n // Note: we check the settings up here instead of in the forEach or\n // in the _recentsComparator to avoid hitting the SettingsStore a few\n // thousand times.\n var pinUnread = _SettingsStore2.default.getValue(\"pinUnreadRooms\");\n var pinMentioned = _SettingsStore2.default.getValue(\"pinMentionedRooms\");\n (0, _keys2.default)(lists).forEach(function (listKey) {\n var comparator = void 0;\n switch (RoomListStore._listOrders[listKey]) {\n case \"recent\":\n comparator = function comparator(roomA, roomB) {\n return _this2._recentsComparator(roomA, roomB, pinUnread, pinMentioned);\n };\n break;\n case \"manual\":\n default:\n comparator = _this2._getManualComparator(listKey, optimisticRequest);\n break;\n }\n lists[listKey].sort(comparator);\n });\n\n this._setState({\n lists: lists,\n ready: true // Ready to receive updates via Room.tags events\n });\n }\n }, {\n key: '_updateCachedRoomState',\n value: function _updateCachedRoomState(roomId, type, value) {\n var roomCache = this._state.roomCache;\n if (!roomCache[roomId]) roomCache[roomId] = {};\n\n if (value) roomCache[roomId][type] = value;else delete roomCache[roomId][type];\n\n this._setState({ roomCache: roomCache });\n }\n }, {\n key: '_clearCachedRoomState',\n value: function _clearCachedRoomState(roomId) {\n var roomCache = this._state.roomCache;\n delete roomCache[roomId];\n this._setState({ roomCache: roomCache });\n }\n }, {\n key: '_getRoomState',\n value: function _getRoomState(room, type) {\n var roomId = room.roomId;\n var roomCache = this._state.roomCache;\n if (roomCache[roomId] && typeof roomCache[roomId][type] !== 'undefined') {\n return roomCache[roomId][type];\n }\n\n if (type === \"timestamp\") {\n var ts = this._tsOfNewestEvent(room);\n this._updateCachedRoomState(roomId, \"timestamp\", ts);\n return ts;\n } else if (type === \"unread-muted\") {\n var unread = _Unread2.default.doesRoomHaveUnreadMessages(room);\n this._updateCachedRoomState(roomId, \"unread-muted\", unread);\n return unread;\n } else if (type === \"unread\") {\n var _unread = room.getUnreadNotificationCount() > 0;\n this._updateCachedRoomState(roomId, \"unread\", _unread);\n return _unread;\n } else if (type === \"notifications\") {\n var notifs = room.getUnreadNotificationCount(\"highlight\") > 0;\n this._updateCachedRoomState(roomId, \"notifications\", notifs);\n return notifs;\n } else throw new Error(\"Unrecognized room cache type: \" + type);\n }\n }, {\n key: '_eventTriggersRecentReorder',\n value: function _eventTriggersRecentReorder(ev) {\n return ev.getTs() && (_Unread2.default.eventTriggersUnreadCount(ev) || ev.getSender() === this._matrixClient.credentials.userId);\n }\n }, {\n key: '_tsOfNewestEvent',\n value: function _tsOfNewestEvent(room) {\n for (var i = room.timeline.length - 1; i >= 0; --i) {\n var ev = room.timeline[i];\n if (this._eventTriggersRecentReorder(ev)) {\n return ev.getTs();\n }\n }\n\n // we might only have events that don't trigger the unread indicator,\n // in which case use the oldest event even if normally it wouldn't count.\n // This is better than just assuming the last event was forever ago.\n if (room.timeline.length && room.timeline[0].getTs()) {\n return room.timeline[0].getTs();\n } else {\n return _maxSafeInteger2.default;\n }\n }\n }, {\n key: '_recentsComparator',\n value: function _recentsComparator(roomA, roomB, pinUnread, pinMentioned) {\n // We try and set the ordering to be Mentioned > Unread > Recent\n // assuming the user has the right settings, of course.\n\n var timestampA = this._getRoomState(roomA, \"timestamp\");\n var timestampB = this._getRoomState(roomB, \"timestamp\");\n var timestampDiff = timestampB - timestampA;\n\n if (pinMentioned) {\n var mentionsA = this._getRoomState(roomA, \"notifications\");\n var mentionsB = this._getRoomState(roomB, \"notifications\");\n if (mentionsA && !mentionsB) return -1;\n if (!mentionsA && mentionsB) return 1;\n\n // If they both have notifications, sort by timestamp.\n // If neither have notifications (the fourth check not shown\n // here), then try and sort by unread messages and finally by\n // timestamp.\n if (mentionsA && mentionsB) return timestampDiff;\n }\n\n if (pinUnread) {\n var unreadA = this._getRoomState(roomA, \"unread\");\n var unreadB = this._getRoomState(roomB, \"unread\");\n if (unreadA && !unreadB) return -1;\n if (!unreadA && unreadB) return 1;\n\n // If they both have unread messages, sort by timestamp\n // If nether have unread message (the fourth check not shown\n // here), then just sort by timestamp anyways.\n if (unreadA && unreadB) return timestampDiff;\n\n // Unread can also mean \"unread without badge\", which is\n // different from what the above checks for. We're also\n // going to sort those here.\n unreadA = this._getRoomState(roomA, \"unread-muted\");\n unreadB = this._getRoomState(roomB, \"unread-muted\");\n if (unreadA && !unreadB) return -1;\n if (!unreadA && unreadB) return 1;\n\n // If they both have unread messages, sort by timestamp\n // If nether have unread message (the fourth check not shown\n // here), then just sort by timestamp anyways.\n if (unreadA && unreadB) return timestampDiff;\n }\n\n return timestampDiff;\n }\n }, {\n key: '_lexicographicalComparator',\n value: function _lexicographicalComparator(roomA, roomB) {\n return roomA.name > roomB.name ? 1 : -1;\n }\n }, {\n key: '_getManualComparator',\n value: function _getManualComparator(tagName, optimisticRequest) {\n var _this3 = this;\n\n return function (roomA, roomB) {\n var metaA = roomA.tags[tagName];\n var metaB = roomB.tags[tagName];\n\n if (optimisticRequest && roomA === optimisticRequest.room) metaA = optimisticRequest.metaData;\n if (optimisticRequest && roomB === optimisticRequest.room) metaB = optimisticRequest.metaData;\n\n // Make sure the room tag has an order element, if not set it to be the bottom\n var a = metaA ? metaA.order : undefined;\n var b = metaB ? metaB.order : undefined;\n\n // Order undefined room tag orders to the bottom\n if (a === undefined && b !== undefined) {\n return 1;\n } else if (a !== undefined && b === undefined) {\n return -1;\n }\n\n return a == b ? _this3._lexicographicalComparator(roomA, roomB) : a > b ? 1 : -1;\n };\n }\n }, {\n key: 'getRoomLists',\n value: function getRoomLists() {\n return this._state.lists;\n }\n }]);\n return RoomListStore;\n}(_utils.Store); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n\nRoomListStore._listOrders = {\n \"m.favourite\": \"manual\",\n \"im.vector.fake.invite\": \"recent\",\n \"im.vector.fake.recent\": \"recent\",\n \"im.vector.fake.direct\": \"recent\",\n \"m.lowpriority\": \"recent\",\n \"im.vector.fake.archived\": \"recent\"\n};\n\n\nif (global.singletonRoomListStore === undefined) {\n global.singletonRoomListStore = new RoomListStore();\n}\nexports.default = global.singletonRoomListStore;\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomListStore.js.map","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = shouldHideEvent;\n\nvar _SettingsStore = require('./settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction memberEventDiff(ev) {\n var diff = {\n isMemberEvent: ev.getType() === 'm.room.member'\n };\n\n // If is not a Member Event then the other checks do not apply, so bail early.\n if (!diff.isMemberEvent) return diff;\n\n var content = ev.getContent();\n var prevContent = ev.getPrevContent();\n\n var isMembershipChanged = content.membership !== prevContent.membership;\n diff.isJoin = isMembershipChanged && content.membership === 'join';\n diff.isPart = isMembershipChanged && content.membership === 'leave' && ev.getStateKey() === ev.getSender();\n\n var isJoinToJoin = !isMembershipChanged && content.membership === 'join';\n diff.isDisplaynameChange = isJoinToJoin && content.displayname !== prevContent.displayname;\n diff.isAvatarChange = isJoinToJoin && content.avatar_url !== prevContent.avatar_url;\n return diff;\n} /*\n Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction shouldHideEvent(ev) {\n // Wrap getValue() for readability. Calling the SettingsStore can be\n // fairly resource heavy, so the checks below should avoid hitting it\n // where possible.\n var isEnabled = function isEnabled(name) {\n return _SettingsStore2.default.getValue(name, ev.getRoomId());\n };\n\n // Hide redacted events\n if (ev.isRedacted() && isEnabled('hideRedactions')) return true;\n\n var eventDiff = memberEventDiff(ev);\n\n if (eventDiff.isMemberEvent) {\n if ((eventDiff.isJoin || eventDiff.isPart) && isEnabled('hideJoinLeaves')) return true;\n if (eventDiff.isAvatarChange && isEnabled('hideAvatarChanges')) return true;\n if (eventDiff.isDisplaynameChange && isEnabled('hideDisplaynameChanges')) return true;\n }\n\n return false;\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=shouldHideEvent.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.asyncAction = asyncAction;\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Create an action thunk that will dispatch actions indicating the current\n * status of the Promise returned by fn.\n *\n * @param {string} id the id to give the dispatched actions. This is given a\n * suffix determining whether it is pending, successful or\n * a failure.\n * @param {function} fn a function that returns a Promise.\n * @param {function?} pendingFn a function that returns an object to assign\n * to the `request` key of the ${id}.pending\n * payload.\n * @returns {function} an action thunk - a function that uses its single\n * argument as a dispatch function to dispatch the\n * following actions:\n * `${id}.pending` and either\n * `${id}.success` or\n * `${id}.failure`.\n *\n * The shape of each are:\n * { action: '${id}.pending', request }\n * { action: '${id}.success', result }\n * { action: '${id}.failure', err }\n *\n * where `request` is returned by `pendingFn` and\n * result is the result of the promise returned by\n * `fn`.\n */\nfunction asyncAction(id, fn, pendingFn) {\n return function (dispatch) {\n dispatch({\n action: id + '.pending',\n request: typeof pendingFn === 'function' ? pendingFn() : undefined\n });\n fn().then(function (result) {\n dispatch({ action: id + '.success', result: result });\n }).catch(function (err) {\n dispatch({ action: id + '.failure', err: err });\n });\n };\n}\n//# sourceMappingURL=actionCreators.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _set = require('babel-runtime/core-js/set');\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _utils = require('flux/utils');\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Analytics = require('../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar INITIAL_STATE = {\n orderedTags: null,\n orderedTagsAccountData: null,\n hasSynced: false,\n joinedGroupIds: null,\n\n selectedTags: [],\n // Last selected tag when shift was not being pressed\n anchorTag: null\n};\n\n/**\n * A class for storing application state for ordering tags in the TagPanel.\n */\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar TagOrderStore = function (_Store) {\n (0, _inherits3.default)(TagOrderStore, _Store);\n\n function TagOrderStore() {\n (0, _classCallCheck3.default)(this, TagOrderStore);\n\n // Initialise state\n var _this = (0, _possibleConstructorReturn3.default)(this, (TagOrderStore.__proto__ || (0, _getPrototypeOf2.default)(TagOrderStore)).call(this, _dispatcher2.default));\n\n _this._state = (0, _assign2.default)({}, INITIAL_STATE);\n return _this;\n }\n\n (0, _createClass3.default)(TagOrderStore, [{\n key: '_setState',\n value: function _setState(newState) {\n this._state = (0, _assign2.default)(this._state, newState);\n this.__emitChange();\n }\n }, {\n key: '__onDispatch',\n value: function __onDispatch(payload) {\n switch (payload.action) {\n // Initialise state after initial sync\n case 'MatrixActions.sync':\n {\n if (!(payload.prevState !== 'PREPARED' && payload.state === 'PREPARED')) {\n break;\n }\n var tagOrderingEvent = payload.matrixClient.getAccountData('im.vector.web.tag_ordering');\n var tagOrderingEventContent = tagOrderingEvent ? tagOrderingEvent.getContent() : {};\n this._setState({\n orderedTagsAccountData: tagOrderingEventContent.tags || null,\n removedTagsAccountData: tagOrderingEventContent.removedTags || null,\n hasSynced: true\n });\n this._updateOrderedTags();\n break;\n }\n // Get ordering from account data\n case 'MatrixActions.accountData':\n {\n if (payload.event_type !== 'im.vector.web.tag_ordering') break;\n\n // Ignore remote echos caused by this store so as to avoid setting\n // state back to old state.\n if (payload.event_content._storeId === this.getStoreId()) break;\n\n this._setState({\n orderedTagsAccountData: payload.event_content ? payload.event_content.tags : null,\n removedTagsAccountData: payload.event_content ? payload.event_content.removedTags : null\n });\n this._updateOrderedTags();\n break;\n }\n // Initialise the state such that if account data is unset, default to joined groups\n case 'GroupActions.fetchJoinedGroups.success':\n {\n this._setState({\n joinedGroupIds: payload.result.groups.sort(), // Sort lexically\n hasFetchedJoinedGroups: true\n });\n this._updateOrderedTags();\n break;\n }\n case 'TagOrderActions.moveTag.pending':\n {\n // Optimistic update of a moved tag\n this._setState({\n orderedTags: payload.request.tags,\n removedTagsAccountData: payload.request.removedTags\n });\n break;\n }\n case 'TagOrderActions.removeTag.pending':\n {\n // Optimistic update of a removed tag\n this._setState({\n removedTagsAccountData: payload.request.removedTags\n });\n this._updateOrderedTags();\n break;\n }\n case 'select_tag':\n {\n var newTags = [];\n // Shift-click semantics\n if (payload.shiftKey) {\n // Select range of tags\n var start = this._state.orderedTags.indexOf(this._state.anchorTag);\n var end = this._state.orderedTags.indexOf(payload.tag);\n\n if (start === -1) {\n start = end;\n }\n if (start > end) {\n var temp = start;\n start = end;\n end = temp;\n }\n newTags = payload.ctrlOrCmdKey ? this._state.selectedTags : [];\n newTags = [].concat((0, _toConsumableArray3.default)(new _set2.default(this._state.orderedTags.slice(start, end + 1).concat(newTags))));\n } else {\n if (payload.ctrlOrCmdKey) {\n // Toggle individual tag\n if (this._state.selectedTags.includes(payload.tag)) {\n newTags = this._state.selectedTags.filter(function (t) {\n return t !== payload.tag;\n });\n } else {\n newTags = [].concat((0, _toConsumableArray3.default)(this._state.selectedTags), [payload.tag]);\n }\n } else {\n // Select individual tag\n newTags = [payload.tag];\n }\n // Only set the anchor tag if the tag was previously unselected, otherwise\n // the next range starts with an unselected tag.\n if (!this._state.selectedTags.includes(payload.tag)) {\n this._setState({\n anchorTag: payload.tag\n });\n }\n }\n\n this._setState({\n selectedTags: newTags\n });\n\n _Analytics2.default.trackEvent('FilterStore', 'select_tag');\n }\n break;\n case 'deselect_tags':\n this._setState({\n selectedTags: []\n });\n _Analytics2.default.trackEvent('FilterStore', 'deselect_tags');\n break;\n case 'on_logged_out':\n {\n // Reset state without pushing an update to the view, which generally assumes that\n // the matrix client isn't `null` and so causing a re-render will cause NPEs.\n this._state = (0, _assign2.default)({}, INITIAL_STATE);\n break;\n }\n }\n }\n }, {\n key: '_updateOrderedTags',\n value: function _updateOrderedTags() {\n this._setState({\n orderedTags: this._state.hasSynced && this._state.hasFetchedJoinedGroups ? this._mergeGroupsAndTags() : null\n });\n }\n }, {\n key: '_mergeGroupsAndTags',\n value: function _mergeGroupsAndTags() {\n var groupIds = this._state.joinedGroupIds || [];\n var tags = this._state.orderedTagsAccountData || [];\n var removedTags = new _set2.default(this._state.removedTagsAccountData || []);\n\n var tagsToKeep = tags.filter(function (t) {\n return (t[0] !== '+' || groupIds.includes(t)) && !removedTags.has(t);\n });\n\n var groupIdsToAdd = groupIds.filter(function (groupId) {\n return !tags.includes(groupId) && !removedTags.has(groupId);\n });\n\n return tagsToKeep.concat(groupIdsToAdd);\n }\n }, {\n key: 'getOrderedTags',\n value: function getOrderedTags() {\n return this._state.orderedTags;\n }\n }, {\n key: 'getRemovedTagsAccountData',\n value: function getRemovedTagsAccountData() {\n return this._state.removedTagsAccountData;\n }\n }, {\n key: 'getStoreId',\n value: function getStoreId() {\n // Generate a random ID to prevent this store from clobbering its\n // state with redundant remote echos.\n if (!this._id) this._id = Math.random().toString(16).slice(2, 10);\n return this._id;\n }\n }, {\n key: 'getSelectedTags',\n value: function getSelectedTags() {\n return this._state.selectedTags;\n }\n }]);\n return TagOrderStore;\n}(_utils.Store);\n\nif (global.singletonTagOrderStore === undefined) {\n global.singletonTagOrderStore = new TagOrderStore();\n}\nexports.default = global.singletonTagOrderStore;\nmodule.exports = exports['default'];\n//# sourceMappingURL=TagOrderStore.js.map","'use strict';\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Rooms = require('./Rooms');\n\nvar Rooms = _interopRequireWildcard(_Rooms);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _UserAddress = require('./UserAddress');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Create a new room, and switch to it.\n *\n * @param {object=} opts parameters for creating the room\n * @param {string=} opts.dmUserId If specified, make this a DM room for this user and invite them\n * @param {object=} opts.createOpts set of options to pass to createRoom call.\n *\n * @returns {Promise} which resolves to the room id, or null if the\n * action was aborted or failed.\n */\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction createRoom(opts) {\n opts = opts || {};\n\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n\n var client = _MatrixClientPeg2.default.get();\n if (client.isGuest()) {\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n return _bluebird2.default.resolve(null);\n }\n\n var defaultPreset = opts.dmUserId ? 'trusted_private_chat' : 'private_chat';\n\n // set some defaults for the creation\n var createOpts = opts.createOpts || {};\n createOpts.preset = createOpts.preset || defaultPreset;\n createOpts.visibility = createOpts.visibility || 'private';\n if (opts.dmUserId && createOpts.invite === undefined) {\n switch ((0, _UserAddress.getAddressType)(opts.dmUserId)) {\n case 'mx-user-id':\n createOpts.invite = [opts.dmUserId];\n break;\n case 'email':\n createOpts.invite_3pid = [{\n id_server: _MatrixClientPeg2.default.get().getIdentityServerUrl(true),\n medium: 'email',\n address: opts.dmUserId\n }];\n }\n }\n if (opts.dmUserId && createOpts.is_direct === undefined) {\n createOpts.is_direct = true;\n }\n\n // By default, view the room after creating it\n if (opts.andView === undefined) {\n opts.andView = true;\n }\n\n // Allow guests by default since the room is private and they'd\n // need an invite. This means clicking on a 3pid invite email can\n // actually drop you right in to a chat.\n createOpts.initial_state = createOpts.initial_state || [{\n content: {\n guest_access: 'can_join'\n },\n type: 'm.room.guest_access',\n state_key: ''\n }];\n\n var modal = _Modal2.default.createDialog(Loader, null, 'mx_Dialog_spinner');\n\n var roomId = void 0;\n return client.createRoom(createOpts).finally(function () {\n modal.close();\n }).then(function (res) {\n roomId = res.room_id;\n if (opts.dmUserId) {\n return Rooms.setDMRoom(roomId, opts.dmUserId);\n } else {\n return _bluebird2.default.resolve();\n }\n }).then(function () {\n // NB createRoom doesn't block on the client seeing the echo that the\n // room has been created, so we race here with the client knowing that\n // the room exists, causing things like\n // https://github.com/vector-im/vector-web/issues/1813\n if (opts.andView) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: roomId,\n should_peek: false,\n // Creating a room will have joined us to the room,\n // so we are expecting the room to come down the sync\n // stream, if it hasn't already.\n joining: true\n });\n }\n return roomId;\n }, function (err) {\n // We also failed to join the room (this sets joining to false in RoomViewStore)\n _dispatcher2.default.dispatch({\n action: 'join_room_error'\n });\n console.error(\"Failed to create room \" + roomId + \" \" + err);\n _Modal2.default.createTrackedDialog('Failure to create room', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failure to create room\"),\n description: (0, _languageHandler._t)(\"Server may be unavailable, overloaded, or you hit a bug.\")\n });\n return null;\n });\n}\n\nmodule.exports = createRoom;\n//# sourceMappingURL=createRoom.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.startAnyRegistrationFlow = exports.SAFE_LOCALPART_REGEX = undefined;\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\n/**\n * Starts either the ILAG or full registration flow, depending\n * on what the HS supports\n *\n * @param {object} options\n * @param {bool} options.go_home_on_cancel If true, goes to\n * the hame page if the user cancels the action\n */\nvar startAnyRegistrationFlow = exports.startAnyRegistrationFlow = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(options) {\n var flows, hasIlagFlow, QuestionDialog;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (options === undefined) options = {};\n _context.next = 3;\n return (0, _bluebird.resolve)(_getRegistrationFlows());\n\n case 3:\n flows = _context.sent;\n\n // look for an ILAG compatible flow. We define this as one\n // which has only dummy or recaptcha flows. In practice it\n // would support any stage InteractiveAuth supports, just not\n // ones like email & msisdn which require the user to supply\n // the relevant details in advance. We err on the side of\n // caution though.\n hasIlagFlow = flows.some(function (flow) {\n return flow.stages.every(function (stage) {\n return ['m.login.dummy', 'm.login.recaptcha', 'm.login.terms'].includes(stage);\n });\n });\n\n\n if (hasIlagFlow) {\n _dispatcher2.default.dispatch({\n action: 'view_set_mxid',\n go_home_on_cancel: options.go_home_on_cancel\n });\n } else {\n QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n\n _Modal2.default.createTrackedDialog('Registration required', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Registration Required\"),\n description: (0, _languageHandler._t)(\"You need to register to do this. Would you like to register now?\"),\n button: (0, _languageHandler._t)(\"Register\"),\n onFinished: function onFinished(proceed) {\n if (proceed) {\n _dispatcher2.default.dispatch({ action: 'start_registration' });\n } else if (options.go_home_on_cancel) {\n _dispatcher2.default.dispatch({ action: 'view_home_page' });\n }\n }\n });\n }\n\n case 6:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function startAnyRegistrationFlow(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\nvar _getRegistrationFlows = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n _context2.next = 3;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().register(null, null, undefined, {}, {}));\n\n case 3:\n console.log(\"Register request succeeded when it should have returned 401!\");\n _context2.next = 11;\n break;\n\n case 6:\n _context2.prev = 6;\n _context2.t0 = _context2['catch'](0);\n\n if (!(_context2.t0.httpStatus === 401)) {\n _context2.next = 10;\n break;\n }\n\n return _context2.abrupt('return', _context2.t0.data.flows);\n\n case 10:\n throw _context2.t0;\n\n case 11:\n throw new Error(\"Register request succeeded when it should have returned 401!\");\n\n case 12:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[0, 6]]);\n }));\n\n return function _getRegistrationFlows() {\n return _ref2.apply(this, arguments);\n };\n}();\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Regex for what a \"safe\" or \"Matrix-looking\" localpart would be.\n// TODO: Update as needed for https://github.com/matrix-org/matrix-doc/issues/1514\nvar SAFE_LOCALPART_REGEX = exports.SAFE_LOCALPART_REGEX = /^[a-z0-9=_\\-./]+$/; /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/**\n * Utility code for registering with a homeserver\n * Note that this is currently *not* used by the actual\n * registration code.\n */\n//# sourceMappingURL=Registration.js.map","'use strict';\n\nexports.__esModule = true;\nexports.tokenize = exports.test = exports.scanner = exports.parser = exports.options = exports.inherits = exports.find = undefined;\n\nvar _class = require('./linkify/utils/class');\n\nvar _options = require('./linkify/utils/options');\n\nvar options = _interopRequireWildcard(_options);\n\nvar _scanner = require('./linkify/core/scanner');\n\nvar scanner = _interopRequireWildcard(_scanner);\n\nvar _parser = require('./linkify/core/parser');\n\nvar parser = _interopRequireWildcard(_parser);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nif (!Array.isArray) {\n\tArray.isArray = function (arg) {\n\t\treturn Object.prototype.toString.call(arg) === '[object Array]';\n\t};\n}\n\n/**\n\tConverts a string into tokens that represent linkable and non-linkable bits\n\t@method tokenize\n\t@param {String} str\n\t@return {Array} tokens\n*/\nvar tokenize = function tokenize(str) {\n\treturn parser.run(scanner.run(str));\n};\n\n/**\n\tReturns a list of linkable items in the given string.\n*/\nvar find = function find(str) {\n\tvar type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\tvar tokens = tokenize(str);\n\tvar filtered = [];\n\n\tfor (var i = 0; i < tokens.length; i++) {\n\t\tvar token = tokens[i];\n\t\tif (token.isLink && (!type || token.type === type)) {\n\t\t\tfiltered.push(token.toObject());\n\t\t}\n\t}\n\n\treturn filtered;\n};\n\n/**\n\tIs the given string valid linkable text of some sort\n\tNote that this does not trim the text for you.\n\n\tOptionally pass in a second `type` param, which is the type of link to test\n\tfor.\n\n\tFor example,\n\n\t\ttest(str, 'email');\n\n\tWill return `true` if str is a valid email.\n*/\nvar test = function test(str) {\n\tvar type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\tvar tokens = tokenize(str);\n\treturn tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].type === type);\n};\n\n// Scanner and parser provide states and tokens for the lexicographic stage\n// (will be used to add additional link types)\nexports.find = find;\nexports.inherits = _class.inherits;\nexports.options = options;\nexports.parser = parser;\nexports.scanner = scanner;\nexports.test = test;\nexports.tokenize = tokenize;","'use strict';\n\nexports.__esModule = true;\nexports.AMPERSAND = exports.CLOSEPAREN = exports.CLOSEANGLEBRACKET = exports.CLOSEBRACKET = exports.CLOSEBRACE = exports.OPENPAREN = exports.OPENANGLEBRACKET = exports.OPENBRACKET = exports.OPENBRACE = exports.WS = exports.TLD = exports.SYM = exports.UNDERSCORE = exports.SLASH = exports.MAILTO = exports.PROTOCOL = exports.QUERY = exports.POUND = exports.PLUS = exports.NUM = exports.NL = exports.LOCALHOST = exports.PUNCTUATION = exports.DOT = exports.COLON = exports.AT = exports.DOMAIN = exports.Base = undefined;\n\nvar _createTokenClass = require('./create-token-class');\n\nvar _class = require('../../utils/class');\n\n/******************************************************************************\n\tText Tokens\n\tTokens composed of strings\n******************************************************************************/\n\n/**\n\tAbstract class used for manufacturing text tokens.\n\tPass in the value this token represents\n\n\t@class TextToken\n\t@abstract\n*/\nvar TextToken = (0, _createTokenClass.createTokenClass)();\nTextToken.prototype = {\n\ttoString: function toString() {\n\t\treturn this.v + '';\n\t}\n};\n\nfunction inheritsToken(value) {\n\tvar props = value ? { v: value } : {};\n\treturn (0, _class.inherits)(TextToken, (0, _createTokenClass.createTokenClass)(), props);\n}\n\n/**\n\tA valid domain token\n\t@class DOMAIN\n\t@extends TextToken\n*/\nvar DOMAIN = inheritsToken();\n\n/**\n\t@class AT\n\t@extends TextToken\n*/\nvar AT = inheritsToken('@');\n\n/**\n\tRepresents a single colon `:` character\n\n\t@class COLON\n\t@extends TextToken\n*/\nvar COLON = inheritsToken(':');\n\n/**\n\t@class DOT\n\t@extends TextToken\n*/\nvar DOT = inheritsToken('.');\n\n/**\n\tA character class that can surround the URL, but which the URL cannot begin\n\tor end with. Does not include certain English punctuation like parentheses.\n\n\t@class PUNCTUATION\n\t@extends TextToken\n*/\nvar PUNCTUATION = inheritsToken();\n\n/**\n\tThe word localhost (by itself)\n\t@class LOCALHOST\n\t@extends TextToken\n*/\nvar LOCALHOST = inheritsToken();\n\n/**\n\tNewline token\n\t@class NL\n\t@extends TextToken\n*/\nvar NL = inheritsToken('\\n');\n\n/**\n\t@class NUM\n\t@extends TextToken\n*/\nvar NUM = inheritsToken();\n\n/**\n\t@class PLUS\n\t@extends TextToken\n*/\nvar PLUS = inheritsToken('+');\n\n/**\n\t@class POUND\n\t@extends TextToken\n*/\nvar POUND = inheritsToken('#');\n\n/**\n\tRepresents a web URL protocol. Supported types include\n\n\t* `http:`\n\t* `https:`\n\t* `ftp:`\n\t* `ftps:`\n\n\t@class PROTOCOL\n\t@extends TextToken\n*/\nvar PROTOCOL = inheritsToken();\n\n/**\n\tRepresents the start of the email URI protocol\n\n\t@class MAILTO\n\t@extends TextToken\n*/\nvar MAILTO = inheritsToken('mailto:');\n\n/**\n\t@class QUERY\n\t@extends TextToken\n*/\nvar QUERY = inheritsToken('?');\n\n/**\n\t@class SLASH\n\t@extends TextToken\n*/\nvar SLASH = inheritsToken('/');\n\n/**\n\t@class UNDERSCORE\n\t@extends TextToken\n*/\nvar UNDERSCORE = inheritsToken('_');\n\n/**\n\tOne ore more non-whitespace symbol.\n\t@class SYM\n\t@extends TextToken\n*/\nvar SYM = inheritsToken();\n\n/**\n\t@class TLD\n\t@extends TextToken\n*/\nvar TLD = inheritsToken();\n\n/**\n\tRepresents a string of consecutive whitespace characters\n\n\t@class WS\n\t@extends TextToken\n*/\nvar WS = inheritsToken();\n\n/**\n\tOpening/closing bracket classes\n*/\n\nvar OPENBRACE = inheritsToken('{');\nvar OPENBRACKET = inheritsToken('[');\nvar OPENANGLEBRACKET = inheritsToken('<');\nvar OPENPAREN = inheritsToken('(');\nvar CLOSEBRACE = inheritsToken('}');\nvar CLOSEBRACKET = inheritsToken(']');\nvar CLOSEANGLEBRACKET = inheritsToken('>');\nvar CLOSEPAREN = inheritsToken(')');\n\nvar AMPERSAND = inheritsToken('&');\n\nexports.Base = TextToken;\nexports.DOMAIN = DOMAIN;\nexports.AT = AT;\nexports.COLON = COLON;\nexports.DOT = DOT;\nexports.PUNCTUATION = PUNCTUATION;\nexports.LOCALHOST = LOCALHOST;\nexports.NL = NL;\nexports.NUM = NUM;\nexports.PLUS = PLUS;\nexports.POUND = POUND;\nexports.QUERY = QUERY;\nexports.PROTOCOL = PROTOCOL;\nexports.MAILTO = MAILTO;\nexports.SLASH = SLASH;\nexports.UNDERSCORE = UNDERSCORE;\nexports.SYM = SYM;\nexports.TLD = TLD;\nexports.WS = WS;\nexports.OPENBRACE = OPENBRACE;\nexports.OPENBRACKET = OPENBRACKET;\nexports.OPENANGLEBRACKET = OPENANGLEBRACKET;\nexports.OPENPAREN = OPENPAREN;\nexports.CLOSEBRACE = CLOSEBRACE;\nexports.CLOSEBRACKET = CLOSEBRACKET;\nexports.CLOSEANGLEBRACKET = CLOSEANGLEBRACKET;\nexports.CLOSEPAREN = CLOSEPAREN;\nexports.AMPERSAND = AMPERSAND;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MUTE = exports.MENTIONS_ONLY = exports.ALL_MESSAGES = exports.ALL_MESSAGES_LOUD = undefined;\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nexports.getRoomNotifsState = getRoomNotifsState;\nexports.setRoomNotifsState = setRoomNotifsState;\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _pushprocessor = require('matrix-js-sdk/lib/pushprocessor');\n\nvar _pushprocessor2 = _interopRequireDefault(_pushprocessor);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ALL_MESSAGES_LOUD = exports.ALL_MESSAGES_LOUD = 'all_messages_loud'; /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar ALL_MESSAGES = exports.ALL_MESSAGES = 'all_messages';\nvar MENTIONS_ONLY = exports.MENTIONS_ONLY = 'mentions_only';\nvar MUTE = exports.MUTE = 'mute';\n\nfunction getRoomNotifsState(roomId) {\n if (_MatrixClientPeg2.default.get().isGuest()) return ALL_MESSAGES;\n\n // look through the override rules for a rule affecting this room:\n // if one exists, it will take precedence.\n var muteRule = findOverrideMuteRule(roomId);\n if (muteRule) {\n return MUTE;\n }\n\n // for everything else, look at the room rule.\n var roomRule = null;\n try {\n roomRule = _MatrixClientPeg2.default.get().getRoomPushRule('global', roomId);\n } catch (err) {\n // Possible that the client doesn't have pushRules yet. If so, it\n // hasn't started eiher, so indicate that this room is not notifying.\n return null;\n }\n\n // XXX: We have to assume the default is to notify for all messages\n // (in particular this will be 'wrong' for one to one rooms because\n // they will notify loudly for all messages)\n if (!roomRule || !roomRule.enabled) return ALL_MESSAGES;\n\n // a mute at the room level will still allow mentions\n // to notify\n if (isMuteRule(roomRule)) return MENTIONS_ONLY;\n\n var actionsObject = _pushprocessor2.default.actionListToActionsObject(roomRule.actions);\n if (actionsObject.tweaks.sound) return ALL_MESSAGES_LOUD;\n\n return null;\n}\n\nfunction setRoomNotifsState(roomId, newState) {\n if (newState === MUTE) {\n return setRoomNotifsStateMuted(roomId);\n } else {\n return setRoomNotifsStateUnmuted(roomId, newState);\n }\n}\n\nfunction setRoomNotifsStateMuted(roomId) {\n var cli = _MatrixClientPeg2.default.get();\n var promises = [];\n\n // delete the room rule\n var roomRule = cli.getRoomPushRule('global', roomId);\n if (roomRule) {\n promises.push(cli.deletePushRule('global', 'room', roomRule.rule_id));\n }\n\n // add/replace an override rule to squelch everything in this room\n // NB. We use the room ID as the name of this rule too, although this\n // is an override rule, not a room rule: it still pertains to this room\n // though, so using the room ID as the rule ID is logical and prevents\n // duplicate copies of the rule.\n promises.push(cli.addPushRule('global', 'override', roomId, {\n conditions: [{\n kind: 'event_match',\n key: 'room_id',\n pattern: roomId\n }],\n actions: ['dont_notify']\n }));\n\n return _bluebird2.default.all(promises);\n}\n\nfunction setRoomNotifsStateUnmuted(roomId, newState) {\n var cli = _MatrixClientPeg2.default.get();\n var promises = [];\n\n var overrideMuteRule = findOverrideMuteRule(roomId);\n if (overrideMuteRule) {\n promises.push(cli.deletePushRule('global', 'override', overrideMuteRule.rule_id));\n }\n\n if (newState === 'all_messages') {\n var roomRule = cli.getRoomPushRule('global', roomId);\n if (roomRule) {\n promises.push(cli.deletePushRule('global', 'room', roomRule.rule_id));\n }\n } else if (newState === 'mentions_only') {\n promises.push(cli.addPushRule('global', 'room', roomId, {\n actions: ['dont_notify']\n }));\n // https://matrix.org/jira/browse/SPEC-400\n promises.push(cli.setPushRuleEnabled('global', 'room', roomId, true));\n } else if ('all_messages_loud') {\n promises.push(cli.addPushRule('global', 'room', roomId, {\n actions: ['notify', {\n set_tweak: 'sound',\n value: 'default'\n }]\n }));\n // https://matrix.org/jira/browse/SPEC-400\n promises.push(cli.setPushRuleEnabled('global', 'room', roomId, true));\n }\n\n return _bluebird2.default.all(promises);\n}\n\nfunction findOverrideMuteRule(roomId) {\n if (!_MatrixClientPeg2.default.get().pushRules || !_MatrixClientPeg2.default.get().pushRules['global'] || !_MatrixClientPeg2.default.get().pushRules['global'].override) {\n return null;\n }\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(_MatrixClientPeg2.default.get().pushRules['global'].override), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var rule = _step.value;\n\n if (isRuleForRoom(roomId, rule)) {\n if (isMuteRule(rule) && rule.enabled) {\n return rule;\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return null;\n}\n\nfunction isRuleForRoom(roomId, rule) {\n if (rule.conditions.length !== 1) {\n return false;\n }\n var cond = rule.conditions[0];\n return cond.kind === 'event_match' && cond.key === 'room_id' && cond.pattern === roomId;\n}\n\nfunction isMuteRule(rule) {\n return rule.actions.length === 1 && rule.actions[0] === 'dont_notify';\n}\n//# sourceMappingURL=RoomNotifs.js.map","'use strict';\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Allows a user to add a third party identifier to their Home Server and,\n * optionally, the identity servers.\n *\n * This involves getting an email token from the identity server to \"prove\" that\n * the client owns the given email address, which is then passed to the\n * add threepid API on the homeserver.\n */\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar AddThreepid = function () {\n function AddThreepid() {\n (0, _classCallCheck3.default)(this, AddThreepid);\n\n this.clientSecret = _MatrixClientPeg2.default.get().generateClientSecret();\n }\n\n /**\n * Attempt to add an email threepid. This will trigger a side-effect of\n * sending an email to the provided email address.\n * @param {string} emailAddress The email address to add\n * @param {boolean} bind If True, bind this email to this mxid on the Identity Server\n * @return {Promise} Resolves when the email has been sent. Then call checkEmailLinkClicked().\n */\n\n\n (0, _createClass3.default)(AddThreepid, [{\n key: 'addEmailAddress',\n value: function addEmailAddress(emailAddress, bind) {\n var _this = this;\n\n this.bind = bind;\n return _MatrixClientPeg2.default.get().requestAdd3pidEmailToken(emailAddress, this.clientSecret, 1).then(function (res) {\n _this.sessionId = res.sid;\n return res;\n }, function (err) {\n if (err.errcode === 'M_THREEPID_IN_USE') {\n err.message = (0, _languageHandler._t)('This email address is already in use');\n } else if (err.httpStatus) {\n err.message = err.message + (' (Status ' + err.httpStatus + ')');\n }\n throw err;\n });\n }\n\n /**\n * Attempt to add a msisdn threepid. This will trigger a side-effect of\n * sending a test message to the provided phone number.\n * @param {string} phoneCountry The ISO 2 letter code of the country to resolve phoneNumber in\n * @param {string} phoneNumber The national or international formatted phone number to add\n * @param {boolean} bind If True, bind this phone number to this mxid on the Identity Server\n * @return {Promise} Resolves when the text message has been sent. Then call haveMsisdnToken().\n */\n\n }, {\n key: 'addMsisdn',\n value: function addMsisdn(phoneCountry, phoneNumber, bind) {\n var _this2 = this;\n\n this.bind = bind;\n return _MatrixClientPeg2.default.get().requestAdd3pidMsisdnToken(phoneCountry, phoneNumber, this.clientSecret, 1).then(function (res) {\n _this2.sessionId = res.sid;\n return res;\n }, function (err) {\n if (err.errcode === 'M_THREEPID_IN_USE') {\n err.message = (0, _languageHandler._t)('This phone number is already in use');\n } else if (err.httpStatus) {\n err.message = err.message + (' (Status ' + err.httpStatus + ')');\n }\n throw err;\n });\n }\n\n /**\n * Checks if the email link has been clicked by attempting to add the threepid\n * @return {Promise} Resolves if the email address was added. Rejects with an object\n * with a \"message\" property which contains a human-readable message detailing why\n * the request failed.\n */\n\n }, {\n key: 'checkEmailLinkClicked',\n value: function checkEmailLinkClicked() {\n var identityServerDomain = _MatrixClientPeg2.default.get().idBaseUrl.split(\"://\")[1];\n return _MatrixClientPeg2.default.get().addThreePid({\n sid: this.sessionId,\n client_secret: this.clientSecret,\n id_server: identityServerDomain\n }, this.bind).catch(function (err) {\n if (err.httpStatus === 401) {\n err.message = (0, _languageHandler._t)('Failed to verify email address: make sure you clicked the link in the email');\n } else if (err.httpStatus) {\n err.message += ' (Status ' + err.httpStatus + ')';\n }\n throw err;\n });\n }\n\n /**\n * Takes a phone number verification code as entered by the user and validates\n * it with the ID server, then if successful, adds the phone number.\n * @param {string} token phone number verification code as entered by the user\n * @return {Promise} Resolves if the phone number was added. Rejects with an object\n * with a \"message\" property which contains a human-readable message detailing why\n * the request failed.\n */\n\n }, {\n key: 'haveMsisdnToken',\n value: function haveMsisdnToken(token) {\n var _this3 = this;\n\n return _MatrixClientPeg2.default.get().submitMsisdnToken(this.sessionId, this.clientSecret, token).then(function (result) {\n if (result.errcode) {\n throw result;\n }\n var identityServerDomain = _MatrixClientPeg2.default.get().idBaseUrl.split(\"://\")[1];\n return _MatrixClientPeg2.default.get().addThreePid({\n sid: _this3.sessionId,\n client_secret: _this3.clientSecret,\n id_server: identityServerDomain\n }, _this3.bind);\n });\n }\n }]);\n return AddThreepid;\n}();\n\nmodule.exports = AddThreepid;\n//# sourceMappingURL=AddThreepid.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _highlight = require('highlight.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SyntaxHighlight = function (_React$Component) {\n (0, _inherits3.default)(SyntaxHighlight, _React$Component);\n\n function SyntaxHighlight(props, context) {\n (0, _classCallCheck3.default)(this, SyntaxHighlight);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (SyntaxHighlight.__proto__ || (0, _getPrototypeOf2.default)(SyntaxHighlight)).call(this, props, context));\n\n _this._ref = _this._ref.bind(_this);\n return _this;\n }\n\n // componentDidUpdate used here for reusability\n // componentWillReceiveProps fires too early to call highlightBlock on.\n\n\n (0, _createClass3.default)(SyntaxHighlight, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (this._el) (0, _highlight.highlightBlock)(this._el);\n }\n\n // call componentDidUpdate because _ref is fired on initial render\n // which does not fire componentDidUpdate\n\n }, {\n key: '_ref',\n value: function _ref(el) {\n this._el = el;\n this.componentDidUpdate();\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n children = _props.children;\n\n\n return _react2.default.createElement(\n 'pre',\n { className: className + ' mx_SyntaxHighlight', ref: this._ref },\n _react2.default.createElement(\n 'code',\n null,\n children\n )\n );\n }\n }]);\n return SyntaxHighlight;\n}(_react2.default.Component); /*\n Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nSyntaxHighlight.propTypes = {\n className: _propTypes2.default.string,\n children: _propTypes2.default.node\n};\nexports.default = SyntaxHighlight;\nmodule.exports = exports['default'];\n//# sourceMappingURL=SyntaxHighlight.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'QuestionDialog',\n propTypes: {\n title: _propTypes2.default.string,\n description: _propTypes2.default.node,\n extraButtons: _propTypes2.default.node,\n button: _propTypes2.default.string,\n danger: _propTypes2.default.bool,\n focus: _propTypes2.default.bool,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n title: \"\",\n description: \"\",\n extraButtons: null,\n focus: true,\n hasCancelButton: true,\n danger: false\n };\n },\n\n onOk: function onOk() {\n this.props.onFinished(true);\n },\n\n onCancel: function onCancel() {\n this.props.onFinished(false);\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n var primaryButtonClass = \"\";\n if (this.props.danger) {\n primaryButtonClass = \"danger\";\n }\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_QuestionDialog', onFinished: this.props.onFinished,\n title: this.props.title,\n contentId: 'mx_Dialog_content',\n hasCancel: this.props.hasCancelButton\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n this.props.description\n ),\n _react2.default.createElement(\n DialogButtons,\n { primaryButton: this.props.button || (0, _languageHandler._t)('OK'),\n primaryButtonClass: primaryButtonClass,\n cancelButton: this.props.cancelButton,\n hasCancel: this.props.hasCancelButton,\n onPrimaryButtonClick: this.onOk,\n focus: this.props.focus,\n onCancel: this.onCancel\n },\n this.props.extraButtons\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=QuestionDialog.js.map","/**\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _querystring = require('querystring');\n\nvar _querystring2 = _interopRequireDefault(_querystring);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _ScalarAuthClient = require('../../../ScalarAuthClient');\n\nvar _ScalarAuthClient2 = _interopRequireDefault(_ScalarAuthClient);\n\nvar _WidgetMessaging = require('../../../WidgetMessaging');\n\nvar _WidgetMessaging2 = _interopRequireDefault(_WidgetMessaging);\n\nvar _TintableSvgButton = require('./TintableSvgButton');\n\nvar _TintableSvgButton2 = _interopRequireDefault(_TintableSvgButton);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _AppPermission = require('./AppPermission');\n\nvar _AppPermission2 = _interopRequireDefault(_AppPermission);\n\nvar _AppWarning = require('./AppWarning');\n\nvar _AppWarning2 = _interopRequireDefault(_AppWarning);\n\nvar _MessageSpinner = require('./MessageSpinner');\n\nvar _MessageSpinner2 = _interopRequireDefault(_MessageSpinner);\n\nvar _WidgetUtils = require('../../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _ActiveWidgetStore = require('../../../stores/ActiveWidgetStore');\n\nvar _ActiveWidgetStore2 = _interopRequireDefault(_ActiveWidgetStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ALLOWED_APP_URL_SCHEMES = ['https:', 'http:'];\nvar ENABLE_REACT_PERF = false;\n\nvar AppTile = function (_React$Component) {\n (0, _inherits3.default)(AppTile, _React$Component);\n\n function AppTile(props) {\n (0, _classCallCheck3.default)(this, AppTile);\n\n // The key used for PersistedElement\n var _this = (0, _possibleConstructorReturn3.default)(this, (AppTile.__proto__ || (0, _getPrototypeOf2.default)(AppTile)).call(this, props));\n\n _this._persistKey = 'widget_' + _this.props.id;\n\n _this.state = _this._getNewState(props);\n\n _this._onAction = _this._onAction.bind(_this);\n _this._onLoaded = _this._onLoaded.bind(_this);\n _this._onEditClick = _this._onEditClick.bind(_this);\n _this._onDeleteClick = _this._onDeleteClick.bind(_this);\n _this._onSnapshotClick = _this._onSnapshotClick.bind(_this);\n _this.onClickMenuBar = _this.onClickMenuBar.bind(_this);\n _this._onMinimiseClick = _this._onMinimiseClick.bind(_this);\n _this._grantWidgetPermission = _this._grantWidgetPermission.bind(_this);\n _this._revokeWidgetPermission = _this._revokeWidgetPermission.bind(_this);\n _this._onPopoutWidgetClick = _this._onPopoutWidgetClick.bind(_this);\n _this._onReloadWidgetClick = _this._onReloadWidgetClick.bind(_this);\n return _this;\n }\n\n /**\n * Set initial component state when the App wUrl (widget URL) is being updated.\n * Component props *must* be passed (rather than relying on this.props).\n * @param {Object} newProps The new properties of the component\n * @return {Object} Updated component state to be set with setState\n */\n\n\n (0, _createClass3.default)(AppTile, [{\n key: '_getNewState',\n value: function _getNewState(newProps) {\n var widgetPermissionId = [newProps.room.roomId, encodeURIComponent(newProps.url)].join('_');\n var hasPermissionToLoad = localStorage.getItem(widgetPermissionId);\n\n var PersistedElement = _index2.default.getComponent(\"elements.PersistedElement\");\n return {\n initialising: true, // True while we are mangling the widget URL\n // True while the iframe content is loading\n loading: this.props.waitForIframeLoad && !PersistedElement.isMounted(this._persistKey),\n widgetUrl: this._addWurlParams(newProps.url),\n widgetPermissionId: widgetPermissionId,\n // Assume that widget has permission to load if we are the user who\n // added it to the room, or if explicitly granted by the user\n hasPermissionToLoad: hasPermissionToLoad === 'true' || newProps.userId === newProps.creatorUserId,\n error: null,\n deleting: false,\n widgetPageTitle: newProps.widgetPageTitle\n };\n }\n\n /**\n * Does the widget support a given capability\n * @param {string} capability Capability to check for\n * @return {Boolean} True if capability supported\n */\n\n }, {\n key: '_hasCapability',\n value: function _hasCapability(capability) {\n return _ActiveWidgetStore2.default.widgetHasCapability(this.props.id, capability);\n }\n\n /**\n * Add widget instance specific parameters to pass in wUrl\n * Properties passed to widget instance:\n * - widgetId\n * - origin / parent URL\n * @param {string} urlString Url string to modify\n * @return {string}\n * Url string with parameters appended.\n * If url can not be parsed, it is returned unmodified.\n */\n\n }, {\n key: '_addWurlParams',\n value: function _addWurlParams(urlString) {\n var u = _url2.default.parse(urlString);\n if (!u) {\n console.error(\"_addWurlParams\", \"Invalid URL\", urlString);\n return _url2.default;\n }\n\n var params = _querystring2.default.parse(u.query);\n // Append widget ID to query parameters\n params.widgetId = this.props.id;\n // Append current / parent URL, minus the hash because that will change when\n // we view a different room (ie. may change for persistent widgets)\n params.parentUrl = window.location.href.split('#', 2)[0];\n u.search = undefined;\n u.query = params;\n\n return u.format();\n }\n }, {\n key: 'isMixedContent',\n value: function isMixedContent() {\n var parentContentProtocol = window.location.protocol;\n var u = _url2.default.parse(this.props.url);\n var childContentProtocol = u.protocol;\n if (parentContentProtocol === 'https:' && childContentProtocol !== 'https:') {\n console.warn(\"Refusing to load mixed-content app:\", parentContentProtocol, childContentProtocol, window.location, this.props.url);\n return true;\n }\n return false;\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.setScalarToken();\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n // Widget action listeners\n this.dispatcherRef = _dispatcher2.default.register(this._onAction);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n // Widget action listeners\n _dispatcher2.default.unregister(this.dispatcherRef);\n\n // if it's not remaining on screen, get rid of the PersistedElement container\n if (!_ActiveWidgetStore2.default.getWidgetPersistence(this.props.id)) {\n _ActiveWidgetStore2.default.destroyPersistentWidget();\n var PersistedElement = _index2.default.getComponent(\"elements.PersistedElement\");\n PersistedElement.destroyElement(this._persistKey);\n }\n }\n\n /**\n * Adds a scalar token to the widget URL, if required\n * Component initialisation is only complete when this function has resolved\n */\n\n }, {\n key: 'setScalarToken',\n value: function setScalarToken() {\n var _this2 = this;\n\n this.setState({ initialising: true });\n\n if (!_WidgetUtils2.default.isScalarUrl(this.props.url)) {\n console.warn('Non-scalar widget, not setting scalar token!', _url2.default);\n this.setState({\n error: null,\n widgetUrl: this._addWurlParams(this.props.url),\n initialising: false\n });\n return;\n }\n\n // Fetch the token before loading the iframe as we need it to mangle the URL\n if (!this._scalarClient) {\n this._scalarClient = new _ScalarAuthClient2.default();\n }\n this._scalarClient.getScalarToken().done(function (token) {\n // Append scalar_token as a query param if not already present\n _this2._scalarClient.scalarToken = token;\n var u = _url2.default.parse(_this2._addWurlParams(_this2.props.url));\n var params = _querystring2.default.parse(u.query);\n if (!params.scalar_token) {\n params.scalar_token = encodeURIComponent(token);\n // u.search must be set to undefined, so that u.format() uses query paramerters - https://nodejs.org/docs/latest/api/url.html#url_url_format_url_options\n u.search = undefined;\n u.query = params;\n }\n\n _this2.setState({\n error: null,\n widgetUrl: u.format(),\n initialising: false\n });\n\n // Fetch page title from remote content if not already set\n if (!_this2.state.widgetPageTitle && params.url) {\n _this2._fetchWidgetTitle(params.url);\n }\n }, function (err) {\n console.error(\"Failed to get scalar_token\", err);\n _this2.setState({\n error: err.message,\n initialising: false\n });\n });\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (nextProps.url !== this.props.url) {\n this._getNewState(nextProps);\n this.setScalarToken();\n } else if (nextProps.show && !this.props.show && this.props.waitForIframeLoad) {\n this.setState({\n loading: true\n });\n } else if (nextProps.widgetPageTitle !== this.props.widgetPageTitle) {\n this.setState({\n widgetPageTitle: nextProps.widgetPageTitle\n });\n }\n }\n }, {\n key: '_canUserModify',\n value: function _canUserModify() {\n // User widgets should always be modifiable by their creator\n if (this.props.userWidget && _MatrixClientPeg2.default.get().credentials.userId === this.props.creatorUserId) {\n return true;\n }\n // Check if the current user can modify widgets in the current room\n return _WidgetUtils2.default.canUserModifyWidgets(this.props.room.roomId);\n }\n }, {\n key: '_onEditClick',\n value: function _onEditClick(e) {\n console.log(\"Edit widget ID \", this.props.id);\n if (this.props.onEditClick) {\n this.props.onEditClick();\n } else {\n var IntegrationsManager = _index2.default.getComponent(\"views.settings.IntegrationsManager\");\n var src = this._scalarClient.getScalarInterfaceUrlForRoom(this.props.room, 'type_' + this.props.type, this.props.id);\n _Modal2.default.createTrackedDialog('Integrations Manager', '', IntegrationsManager, {\n src: src\n }, \"mx_IntegrationsManager\");\n }\n }\n }, {\n key: '_onSnapshotClick',\n value: function _onSnapshotClick(e) {\n console.warn(\"Requesting widget snapshot\");\n _ActiveWidgetStore2.default.getWidgetMessaging(this.props.id).getScreenshot().catch(function (err) {\n console.error(\"Failed to get screenshot\", err);\n }).then(function (screenshot) {\n _dispatcher2.default.dispatch({\n action: 'picture_snapshot',\n file: screenshot\n }, true);\n });\n }\n\n /* If user has permission to modify widgets, delete the widget,\n * otherwise revoke access for the widget to load in the user's browser\n */\n\n }, {\n key: '_onDeleteClick',\n value: function _onDeleteClick() {\n var _this3 = this;\n\n if (this.props.onDeleteClick) {\n this.props.onDeleteClick();\n } else {\n if (this._canUserModify()) {\n // Show delete confirmation dialog\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('Delete Widget', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Delete Widget\"),\n description: (0, _languageHandler._t)(\"Deleting a widget removes it for all users in this room.\" + \" Are you sure you want to delete this widget?\"),\n button: (0, _languageHandler._t)(\"Delete widget\"),\n onFinished: function onFinished(confirmed) {\n if (!confirmed) {\n return;\n }\n _this3.setState({ deleting: true });\n\n // HACK: This is a really dirty way to ensure that Jitsi cleans up\n // its hold on the webcam. Without this, the widget holds a media\n // stream open, even after death. See https://github.com/vector-im/riot-web/issues/7351\n if (_this3.refs.appFrame) {\n // In practice we could just do `+= ''` to trick the browser\n // into thinking the URL changed, however I can foresee this\n // being optimized out by a browser. Instead, we'll just point\n // the iframe at a page that is reasonably safe to use in the\n // event the iframe doesn't wink away.\n // This is relative to where the Riot instance is located.\n _this3.refs.appFrame.src = 'about:blank';\n }\n\n _WidgetUtils2.default.setRoomWidget(_this3.props.room.roomId, _this3.props.id).catch(function (e) {\n console.error('Failed to delete widget', e);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n _Modal2.default.createTrackedDialog('Failed to remove widget', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to remove widget'),\n description: (0, _languageHandler._t)('An error ocurred whilst trying to remove the widget from the room')\n });\n }).finally(function () {\n _this3.setState({ deleting: false });\n });\n }\n });\n } else {\n console.log(\"Revoke widget permissions - %s\", this.props.id);\n this._revokeWidgetPermission();\n }\n }\n }\n\n /**\n * Called when widget iframe has finished loading\n */\n\n }, {\n key: '_onLoaded',\n value: function _onLoaded() {\n if (!_ActiveWidgetStore2.default.getWidgetMessaging(this.props.id)) {\n this._setupWidgetMessaging();\n }\n _ActiveWidgetStore2.default.setRoomId(this.props.id, this.props.room.roomId);\n this.setState({ loading: false });\n }\n }, {\n key: '_setupWidgetMessaging',\n value: function _setupWidgetMessaging() {\n var _this4 = this;\n\n // FIXME: There's probably no reason to do this here: it should probably be done entirely\n // in ActiveWidgetStore.\n var widgetMessaging = new _WidgetMessaging2.default(this.props.id, this.props.url, this.refs.appFrame.contentWindow);\n _ActiveWidgetStore2.default.setWidgetMessaging(this.props.id, widgetMessaging);\n widgetMessaging.getCapabilities().then(function (requestedCapabilities) {\n console.log('Widget ' + _this4.props.id + ' requested capabilities: ' + requestedCapabilities);\n requestedCapabilities = requestedCapabilities || [];\n\n // Allow whitelisted capabilities\n var requestedWhitelistCapabilies = [];\n\n if (_this4.props.whitelistCapabilities && _this4.props.whitelistCapabilities.length > 0) {\n requestedWhitelistCapabilies = requestedCapabilities.filter(function (e) {\n return this.indexOf(e) >= 0;\n }, _this4.props.whitelistCapabilities);\n\n if (requestedWhitelistCapabilies.length > 0) {\n console.warn('Widget ' + _this4.props.id + ' allowing requested, whitelisted properties: ' + requestedWhitelistCapabilies);\n }\n }\n\n // TODO -- Add UI to warn about and optionally allow requested capabilities\n\n _ActiveWidgetStore2.default.setWidgetCapabilities(_this4.props.id, requestedWhitelistCapabilies);\n\n if (_this4.props.onCapabilityRequest) {\n _this4.props.onCapabilityRequest(requestedCapabilities);\n }\n }).catch(function (err) {\n console.log('Failed to get capabilities for widget type ' + _this4.props.type, _this4.props.id, err);\n });\n }\n }, {\n key: '_onAction',\n value: function _onAction(payload) {\n if (payload.widgetId === this.props.id) {\n switch (payload.action) {\n case 'm.sticker':\n if (this._hasCapability('m.sticker')) {\n _dispatcher2.default.dispatch({ action: 'post_sticker_message', data: payload.data });\n } else {\n console.warn('Ignoring sticker message. Invalid capability');\n }\n break;\n }\n }\n }\n\n /**\n * Set remote content title on AppTile\n * @param {string} url Url to check for title\n */\n\n }, {\n key: '_fetchWidgetTitle',\n value: function _fetchWidgetTitle(url) {\n var _this5 = this;\n\n this._scalarClient.getScalarPageTitle(url).then(function (widgetPageTitle) {\n if (widgetPageTitle) {\n _this5.setState({ widgetPageTitle: widgetPageTitle });\n }\n }, function (err) {\n console.error(\"Failed to get page title\", err);\n });\n }\n\n // Widget labels to render, depending upon user permissions\n // These strings are translated at the point that they are inserted in to the DOM, in the render method\n\n }, {\n key: '_deleteWidgetLabel',\n value: function _deleteWidgetLabel() {\n if (this._canUserModify()) {\n return (0, _languageHandler._td)('Delete widget');\n }\n return (0, _languageHandler._td)('Revoke widget access');\n }\n\n /* TODO -- Store permission in account data so that it is persisted across multiple devices */\n\n }, {\n key: '_grantWidgetPermission',\n value: function _grantWidgetPermission() {\n console.warn('Granting permission to load widget - ', this.state.widgetUrl);\n localStorage.setItem(this.state.widgetPermissionId, true);\n this.setState({ hasPermissionToLoad: true });\n }\n }, {\n key: '_revokeWidgetPermission',\n value: function _revokeWidgetPermission() {\n console.warn('Revoking permission to load widget - ', this.state.widgetUrl);\n localStorage.removeItem(this.state.widgetPermissionId);\n this.setState({ hasPermissionToLoad: false });\n\n // Force the widget to be non-persistent\n _ActiveWidgetStore2.default.destroyPersistentWidget();\n var PersistedElement = _index2.default.getComponent(\"elements.PersistedElement\");\n PersistedElement.destroyElement(this._persistKey);\n }\n }, {\n key: 'formatAppTileName',\n value: function formatAppTileName() {\n var appTileName = \"No name\";\n if (this.props.name && this.props.name.trim()) {\n appTileName = this.props.name.trim();\n }\n return appTileName;\n }\n }, {\n key: 'onClickMenuBar',\n value: function onClickMenuBar(ev) {\n ev.preventDefault();\n\n // Ignore clicks on menu bar children\n if (ev.target !== this.refs.menu_bar) {\n return;\n }\n\n // Toggle the view state of the apps drawer\n _dispatcher2.default.dispatch({\n action: 'appsDrawer',\n show: !this.props.show\n });\n }\n }, {\n key: '_getSafeUrl',\n value: function _getSafeUrl() {\n var parsedWidgetUrl = _url2.default.parse(this.state.widgetUrl, true);\n if (ENABLE_REACT_PERF) {\n parsedWidgetUrl.search = null;\n parsedWidgetUrl.query.react_perf = true;\n }\n var safeWidgetUrl = '';\n if (ALLOWED_APP_URL_SCHEMES.indexOf(parsedWidgetUrl.protocol) !== -1) {\n safeWidgetUrl = _url2.default.format(parsedWidgetUrl);\n }\n return safeWidgetUrl;\n }\n }, {\n key: '_getTileTitle',\n value: function _getTileTitle() {\n var name = this.formatAppTileName();\n var titleSpacer = _react2.default.createElement(\n 'span',\n null,\n '\\xA0-\\xA0'\n );\n var title = '';\n if (this.state.widgetPageTitle && this.state.widgetPageTitle != this.formatAppTileName()) {\n title = this.state.widgetPageTitle;\n }\n\n return _react2.default.createElement(\n 'span',\n null,\n _react2.default.createElement(\n 'b',\n null,\n name\n ),\n _react2.default.createElement(\n 'span',\n null,\n title ? titleSpacer : '',\n title\n )\n );\n }\n }, {\n key: '_onMinimiseClick',\n value: function _onMinimiseClick(e) {\n if (this.props.onMinimiseClick) {\n this.props.onMinimiseClick();\n }\n }\n }, {\n key: '_onPopoutWidgetClick',\n value: function _onPopoutWidgetClick(e) {\n // Using Object.assign workaround as the following opens in a new window instead of a new tab.\n // window.open(this._getSafeUrl(), '_blank', 'noopener=yes,noreferrer=yes');\n (0, _assign2.default)(document.createElement('a'), { target: '_blank', href: this._getSafeUrl(), rel: 'noopener noreferrer' }).click();\n }\n }, {\n key: '_onReloadWidgetClick',\n value: function _onReloadWidgetClick(e) {\n // Reload iframe in this way to avoid cross-origin restrictions\n this.refs.appFrame.src = this.refs.appFrame.src;\n }\n }, {\n key: 'render',\n value: function render() {\n var appTileBody = void 0;\n\n // Don't render widget if it is in the process of being deleted\n if (this.state.deleting) {\n return _react2.default.createElement('div', null);\n }\n\n // Note that there is advice saying allow-scripts shouldn't be used with allow-same-origin\n // because that would allow the iframe to prgramatically remove the sandbox attribute, but\n // this would only be for content hosted on the same origin as the riot client: anything\n // hosted on the same origin as the client will get the same access as if you clicked\n // a link to it.\n var sandboxFlags = \"allow-forms allow-popups allow-popups-to-escape-sandbox \" + \"allow-same-origin allow-scripts allow-presentation\";\n\n // Additional iframe feature pemissions\n // (see - https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-permissions-in-cross-origin-iframes and https://wicg.github.io/feature-policy/)\n var iframeFeatures = \"microphone; camera; encrypted-media; autoplay;\";\n\n var appTileBodyClass = 'mx_AppTileBody' + (this.props.miniMode ? '_mini ' : ' ');\n\n if (this.props.show) {\n var loadingElement = _react2.default.createElement(\n 'div',\n { className: 'mx_AppLoading_spinner_fadeIn' },\n _react2.default.createElement(_MessageSpinner2.default, { msg: 'Loading...' })\n );\n if (this.state.initialising) {\n appTileBody = _react2.default.createElement(\n 'div',\n { className: appTileBodyClass + (this.state.loading ? 'mx_AppLoading' : '') },\n loadingElement\n );\n } else if (this.state.hasPermissionToLoad == true) {\n if (this.isMixedContent()) {\n appTileBody = _react2.default.createElement(\n 'div',\n { className: appTileBodyClass },\n _react2.default.createElement(_AppWarning2.default, { errorMsg: 'Error - Mixed content' })\n );\n } else {\n appTileBody = _react2.default.createElement(\n 'div',\n { className: appTileBodyClass + (this.state.loading ? 'mx_AppLoading' : '') },\n this.state.loading && loadingElement,\n _react2.default.createElement('iframe', {\n is: true,\n allow: iframeFeatures,\n ref: 'appFrame',\n src: this._getSafeUrl(),\n allowFullScreen: 'true',\n sandbox: sandboxFlags,\n onLoad: this._onLoaded\n })\n );\n // if the widget would be allowed to remian on screen, we must put it in\n // a PersistedElement from the get-go, otherwise the iframe will be\n // re-mounted later when we do.\n if (this.props.whitelistCapabilities.includes('m.always_on_screen')) {\n var PersistedElement = _index2.default.getComponent(\"elements.PersistedElement\");\n // Also wrap the PersistedElement in a div to fix the height, otherwise\n // AppTile's border is in the wrong place\n appTileBody = _react2.default.createElement(\n 'div',\n { className: 'mx_AppTile_persistedWrapper' },\n _react2.default.createElement(\n PersistedElement,\n { persistKey: this._persistKey },\n appTileBody\n )\n );\n }\n }\n } else {\n var isRoomEncrypted = _MatrixClientPeg2.default.get().isRoomEncrypted(this.props.room.roomId);\n appTileBody = _react2.default.createElement(\n 'div',\n { className: appTileBodyClass },\n _react2.default.createElement(_AppPermission2.default, {\n isRoomEncrypted: isRoomEncrypted,\n url: this.state.widgetUrl,\n onPermissionGranted: this._grantWidgetPermission\n })\n );\n }\n }\n\n // editing is done in scalar\n var showEditButton = Boolean(this._scalarClient && this._canUserModify());\n var deleteWidgetLabel = this._deleteWidgetLabel();\n var deleteIcon = 'img/cancel_green.svg';\n var deleteClasses = 'mx_AppTileMenuBarWidget';\n if (this._canUserModify()) {\n deleteIcon = 'img/icon-delete-pink.svg';\n deleteClasses += ' mx_AppTileMenuBarWidgetDelete';\n }\n\n // Picture snapshot - only show button when apps are maximised.\n var showPictureSnapshotButton = this._hasCapability('m.capability.screenshot') && this.props.show;\n var showPictureSnapshotIcon = 'img/camera_green.svg';\n var popoutWidgetIcon = 'img/button-new-window.svg';\n var reloadWidgetIcon = 'img/button-refresh.svg';\n var windowStateIcon = this.props.show ? 'img/minimize.svg' : 'img/maximize.svg';\n\n var appTileClass = void 0;\n if (this.props.miniMode) {\n appTileClass = 'mx_AppTile_mini';\n } else if (this.props.fullWidth) {\n appTileClass = 'mx_AppTileFullWidth';\n } else {\n appTileClass = 'mx_AppTile';\n }\n\n return _react2.default.createElement(\n 'div',\n { className: appTileClass, id: this.props.id },\n this.props.showMenubar && _react2.default.createElement(\n 'div',\n { ref: 'menu_bar', className: 'mx_AppTileMenuBar', onClick: this.onClickMenuBar },\n _react2.default.createElement(\n 'span',\n { className: 'mx_AppTileMenuBarTitle', style: { pointerEvents: this.props.handleMinimisePointerEvents ? 'all' : false } },\n this.props.showMinimise && _react2.default.createElement(_TintableSvgButton2.default, {\n src: windowStateIcon,\n className: 'mx_AppTileMenuBarWidget mx_AppTileMenuBarWidgetPadding',\n title: (0, _languageHandler._t)('Minimize apps'),\n width: '10',\n height: '10',\n onClick: this._onMinimiseClick\n }),\n this.props.showTitle && this._getTileTitle()\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_AppTileMenuBarWidgets' },\n this.props.showReload && _react2.default.createElement(_TintableSvgButton2.default, {\n src: reloadWidgetIcon,\n className: 'mx_AppTileMenuBarWidget mx_AppTileMenuBarWidgetPadding',\n title: (0, _languageHandler._t)('Reload widget'),\n onClick: this._onReloadWidgetClick,\n width: '10',\n height: '10'\n }),\n this.props.showPopout && _react2.default.createElement(_TintableSvgButton2.default, {\n src: popoutWidgetIcon,\n className: 'mx_AppTileMenuBarWidget mx_AppTileMenuBarWidgetPadding',\n title: (0, _languageHandler._t)('Popout widget'),\n onClick: this._onPopoutWidgetClick,\n width: '10',\n height: '10'\n }),\n showPictureSnapshotButton && _react2.default.createElement(_TintableSvgButton2.default, {\n src: showPictureSnapshotIcon,\n className: 'mx_AppTileMenuBarWidget mx_AppTileMenuBarWidgetPadding',\n title: (0, _languageHandler._t)('Picture'),\n onClick: this._onSnapshotClick,\n width: '10',\n height: '10'\n }),\n showEditButton && _react2.default.createElement(_TintableSvgButton2.default, {\n src: 'img/edit_green.svg',\n className: \"mx_AppTileMenuBarWidget \" + (this.props.showDelete ? \"mx_AppTileMenuBarWidgetPadding\" : \"\"),\n title: (0, _languageHandler._t)('Edit'),\n onClick: this._onEditClick,\n width: '10',\n height: '10'\n }),\n this.props.showDelete && _react2.default.createElement(_TintableSvgButton2.default, {\n src: deleteIcon,\n className: deleteClasses,\n title: (0, _languageHandler._t)(deleteWidgetLabel),\n onClick: this._onDeleteClick,\n width: '10',\n height: '10'\n })\n )\n ),\n appTileBody\n );\n }\n }]);\n return AppTile;\n}(_react2.default.Component);\n\nexports.default = AppTile;\n\n\nAppTile.displayName = 'AppTile';\n\nAppTile.propTypes = {\n id: _propTypes2.default.string.isRequired,\n url: _propTypes2.default.string.isRequired,\n name: _propTypes2.default.string.isRequired,\n room: _propTypes2.default.object.isRequired,\n type: _propTypes2.default.string.isRequired,\n // Specifying 'fullWidth' as true will render the app tile to fill the width of the app drawer continer.\n // This should be set to true when there is only one widget in the app drawer, otherwise it should be false.\n fullWidth: _propTypes2.default.bool,\n // Optional. If set, renders a smaller view of the widget\n miniMode: _propTypes2.default.bool,\n // UserId of the current user\n userId: _propTypes2.default.string.isRequired,\n // UserId of the entity that added / modified the widget\n creatorUserId: _propTypes2.default.string,\n waitForIframeLoad: _propTypes2.default.bool,\n showMenubar: _propTypes2.default.bool,\n // Should the AppTile render itself\n show: _propTypes2.default.bool,\n // Optional onEditClickHandler (overrides default behaviour)\n onEditClick: _propTypes2.default.func,\n // Optional onDeleteClickHandler (overrides default behaviour)\n onDeleteClick: _propTypes2.default.func,\n // Optional onMinimiseClickHandler\n onMinimiseClick: _propTypes2.default.func,\n // Optionally hide the tile title\n showTitle: _propTypes2.default.bool,\n // Optionally hide the tile minimise icon\n showMinimise: _propTypes2.default.bool,\n // Optionally handle minimise button pointer events (default false)\n handleMinimisePointerEvents: _propTypes2.default.bool,\n // Optionally hide the delete icon\n showDelete: _propTypes2.default.bool,\n // Optionally hide the popout widget icon\n showPopout: _propTypes2.default.bool,\n // Optionally show the reload widget icon\n // This is not currently intended for use with production widgets. However\n // it can be useful when developing persistent widgets in order to avoid\n // having to reload all of riot to get new widget content.\n showReload: _propTypes2.default.bool,\n // Widget capabilities to allow by default (without user confirmation)\n // NOTE -- Use with caution. This is intended to aid better integration / UX\n // basic widget capabilities, e.g. injecting sticker message events.\n whitelistCapabilities: _propTypes2.default.array,\n // Optional function to be called on widget capability request\n // Called with an array of the requested capabilities\n onCapabilityRequest: _propTypes2.default.func,\n // Is this an instance of a user widget\n userWidget: _propTypes2.default.bool\n};\n\nAppTile.defaultProps = {\n url: \"\",\n waitForIframeLoad: true,\n showMenubar: true,\n showTitle: true,\n showMinimise: true,\n showDelete: true,\n showPopout: true,\n showReload: false,\n handleMinimisePointerEvents: false,\n whitelistCapabilities: [],\n userWidget: false,\n miniMode: false\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=AppTile.js.map","'use strict';\n\nvar _isInteger = require('babel-runtime/core-js/number/is-integer');\n\nvar _isInteger2 = _interopRequireDefault(_isInteger);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _SdkConfig = require('./SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _WidgetUtils = require('./utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _RoomViewStore = require('./stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sendResponse(event, res) {\n var data = JSON.parse((0, _stringify2.default)(event.data));\n data.response = res;\n event.source.postMessage(data, event.origin);\n} /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/*\nListens for incoming postMessage requests from the integrations UI URL. The following API is exposed:\n{\n action: \"invite\" | \"membership_state\" | \"bot_options\" | \"set_bot_options\" | etc... ,\n room_id: $ROOM_ID,\n user_id: $USER_ID\n // additional request fields\n}\n\nThe complete request object is returned to the caller with an additional \"response\" key like so:\n{\n action: \"invite\" | \"membership_state\" | \"bot_options\" | \"set_bot_options\",\n room_id: $ROOM_ID,\n user_id: $USER_ID,\n // additional request fields\n response: { ... }\n}\n\nThe \"action\" determines the format of the request and response. All actions can return an error response.\nAn error response is a \"response\" object which consists of a sole \"error\" key to indicate an error.\nThey look like:\n{\n error: {\n message: \"Unable to invite user into room.\",\n _error: <Original Error Object>\n }\n}\nThe \"message\" key should be a human-friendly string.\n\nACTIONS\n=======\nAll actions can return an error response instead of the response outlined below.\n\ninvite\n------\nInvites a user into a room.\n\nRequest:\n - room_id is the room to invite the user into.\n - user_id is the user ID to invite.\n - No additional fields.\nResponse:\n{\n success: true\n}\nExample:\n{\n action: \"invite\",\n room_id: \"!foo:bar\",\n user_id: \"@invitee:bar\",\n response: {\n success: true\n }\n}\n\nset_bot_options\n---------------\nSet the m.room.bot.options state event for a bot user.\n\nRequest:\n - room_id is the room to send the state event into.\n - user_id is the user ID of the bot who you're setting options for.\n - \"content\" is an object consisting of the content you wish to set.\nResponse:\n{\n success: true\n}\nExample:\n{\n action: \"set_bot_options\",\n room_id: \"!foo:bar\",\n user_id: \"@bot:bar\",\n content: {\n default_option: \"alpha\"\n },\n response: {\n success: true\n }\n}\n\nget_membership_count\n--------------------\nGet the number of joined users in the room.\n\nRequest:\n - room_id is the room to get the count in.\nResponse:\n78\nExample:\n{\n action: \"get_membership_count\",\n room_id: \"!foo:bar\",\n response: 78\n}\n\ncan_send_event\n--------------\nCheck if the client can send the given event into the given room. If the client\nis unable to do this, an error response is returned instead of 'response: false'.\n\nRequest:\n - room_id is the room to do the check in.\n - event_type is the event type which will be sent.\n - is_state is true if the event to be sent is a state event.\nResponse:\ntrue\nExample:\n{\n action: \"can_send_event\",\n is_state: false,\n event_type: \"m.room.message\",\n room_id: \"!foo:bar\",\n response: true\n}\n\nset_widget\n----------\nSet a new widget in the room. Clobbers based on the ID.\n\nRequest:\n - `room_id` (String) is the room to set the widget in.\n - `widget_id` (String) is the ID of the widget to add (or replace if it already exists).\n It can be an arbitrary UTF8 string and is purely for distinguishing between widgets.\n - `url` (String) is the URL that clients should load in an iframe to run the widget.\n All widgets must have a valid URL. If the URL is `null` (not `undefined`), the\n widget will be removed from the room.\n - `type` (String) is the type of widget, which is provided as a hint for matrix clients so they\n can configure/lay out the widget in different ways. All widgets must have a type.\n - `name` (String) is an optional human-readable string about the widget.\n - `data` (Object) is some optional data about the widget, and can contain arbitrary key/value pairs.\nResponse:\n{\n success: true\n}\nExample:\n{\n action: \"set_widget\",\n room_id: \"!foo:bar\",\n widget_id: \"abc123\",\n url: \"http://widget.url\",\n type: \"example\",\n response: {\n success: true\n }\n}\n\nget_widgets\n-----------\nGet a list of all widgets in the room. The response is an array\nof state events.\n\nRequest:\n - `room_id` (String) is the room to get the widgets in.\nResponse:\n[\n {\n type: \"im.vector.modular.widgets\",\n state_key: \"wid1\",\n content: {\n type: \"grafana\",\n url: \"https://grafanaurl\",\n name: \"dashboard\",\n data: {key: \"val\"}\n }\n room_id: “!foo:bar”,\n sender: \"@alice:localhost\"\n }\n]\nExample:\n{\n action: \"get_widgets\",\n room_id: \"!foo:bar\",\n response: [\n {\n type: \"im.vector.modular.widgets\",\n state_key: \"wid1\",\n content: {\n type: \"grafana\",\n url: \"https://grafanaurl\",\n name: \"dashboard\",\n data: {key: \"val\"}\n }\n room_id: “!foo:bar”,\n sender: \"@alice:localhost\"\n }\n ]\n}\n\n\nmembership_state AND bot_options\n--------------------------------\nGet the content of the \"m.room.member\" or \"m.room.bot.options\" state event respectively.\n\nNB: Whilst this API is basically equivalent to getStateEvent, we specifically do not\n want external entities to be able to query any state event for any room, hence the\n restrictive API outlined here.\n\nRequest:\n - room_id is the room which has the state event.\n - user_id is the state_key parameter which in both cases is a user ID (the member or the bot).\n - No additional fields.\nResponse:\n - The event content. If there is no state event, the \"response\" key should be null.\nExample:\n{\n action: \"membership_state\",\n room_id: \"!foo:bar\",\n user_id: \"@somemember:bar\",\n response: {\n membership: \"join\",\n displayname: \"Bob\",\n avatar_url: null\n }\n}\n*/\n\nfunction sendError(event, msg, nestedError) {\n console.error(\"Action:\" + event.data.action + \" failed with message: \" + msg);\n var data = JSON.parse((0, _stringify2.default)(event.data));\n data.response = {\n error: {\n message: msg\n }\n };\n if (nestedError) {\n data.response.error._error = nestedError;\n }\n event.source.postMessage(data, event.origin);\n}\n\nfunction inviteUser(event, roomId, userId) {\n console.log('Received request to invite ' + userId + ' into room ' + roomId);\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var room = client.getRoom(roomId);\n if (room) {\n // if they are already invited we can resolve immediately.\n var member = room.getMember(userId);\n if (member && member.membership === \"invite\") {\n sendResponse(event, {\n success: true\n });\n return;\n }\n }\n\n client.invite(roomId, userId).done(function () {\n sendResponse(event, {\n success: true\n });\n }, function (err) {\n sendError(event, (0, _languageHandler._t)('You need to be able to invite users to do that.'), err);\n });\n}\n\nfunction setWidget(event, roomId) {\n var widgetId = event.data.widget_id;\n var widgetType = event.data.type;\n var widgetUrl = event.data.url;\n var widgetName = event.data.name; // optional\n var widgetData = event.data.data; // optional\n var userWidget = event.data.userWidget;\n\n // both adding/removing widgets need these checks\n if (!widgetId || widgetUrl === undefined) {\n sendError(event, (0, _languageHandler._t)(\"Unable to create widget.\"), new Error(\"Missing required widget fields.\"));\n return;\n }\n\n if (widgetUrl !== null) {\n // if url is null it is being deleted, don't need to check name/type/etc\n // check types of fields\n if (widgetName !== undefined && typeof widgetName !== 'string') {\n sendError(event, (0, _languageHandler._t)(\"Unable to create widget.\"), new Error(\"Optional field 'name' must be a string.\"));\n return;\n }\n if (widgetData !== undefined && !(widgetData instanceof Object)) {\n sendError(event, (0, _languageHandler._t)(\"Unable to create widget.\"), new Error(\"Optional field 'data' must be an Object.\"));\n return;\n }\n if (typeof widgetType !== 'string') {\n sendError(event, (0, _languageHandler._t)(\"Unable to create widget.\"), new Error(\"Field 'type' must be a string.\"));\n return;\n }\n if (typeof widgetUrl !== 'string') {\n sendError(event, (0, _languageHandler._t)(\"Unable to create widget.\"), new Error(\"Field 'url' must be a string or null.\"));\n return;\n }\n }\n\n if (userWidget) {\n _WidgetUtils2.default.setUserWidget(widgetId, widgetType, widgetUrl, widgetName, widgetData).then(function () {\n sendResponse(event, {\n success: true\n });\n\n _dispatcher2.default.dispatch({ action: \"user_widget_updated\" });\n }).catch(function (e) {\n sendError(event, (0, _languageHandler._t)('Unable to create widget.'), e);\n });\n } else {\n // Room widget\n if (!roomId) {\n sendError(event, (0, _languageHandler._t)('Missing roomId.'), null);\n }\n _WidgetUtils2.default.setRoomWidget(roomId, widgetId, widgetType, widgetUrl, widgetName, widgetData).then(function () {\n sendResponse(event, {\n success: true\n });\n }, function (err) {\n sendError(event, (0, _languageHandler._t)('Failed to send request.'), err);\n });\n }\n}\n\nfunction getWidgets(event, roomId) {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var widgetStateEvents = [];\n\n if (roomId) {\n var room = client.getRoom(roomId);\n if (!room) {\n sendError(event, (0, _languageHandler._t)('This room is not recognised.'));\n return;\n }\n // XXX: This gets the raw event object (I think because we can't\n // send the MatrixEvent over postMessage?)\n widgetStateEvents = _WidgetUtils2.default.getRoomWidgets(room).map(function (ev) {\n return ev.event;\n });\n }\n\n // Add user widgets (not linked to a specific room)\n var userWidgets = _WidgetUtils2.default.getUserWidgetsArray();\n widgetStateEvents = widgetStateEvents.concat(userWidgets);\n\n sendResponse(event, widgetStateEvents);\n}\n\nfunction getRoomEncState(event, roomId) {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var room = client.getRoom(roomId);\n if (!room) {\n sendError(event, (0, _languageHandler._t)('This room is not recognised.'));\n return;\n }\n var roomIsEncrypted = _MatrixClientPeg2.default.get().isRoomEncrypted(roomId);\n\n sendResponse(event, roomIsEncrypted);\n}\n\nfunction setPlumbingState(event, roomId, status) {\n if (typeof status !== 'string') {\n throw new Error('Plumbing state status should be a string');\n }\n console.log('Received request to set plumbing state to status \"' + status + '\" in room ' + roomId);\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n client.sendStateEvent(roomId, \"m.room.plumbing\", { status: status }).done(function () {\n sendResponse(event, {\n success: true\n });\n }, function (err) {\n sendError(event, err.message ? err.message : (0, _languageHandler._t)('Failed to send request.'), err);\n });\n}\n\nfunction setBotOptions(event, roomId, userId) {\n console.log('Received request to set options for bot ' + userId + ' in room ' + roomId);\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n client.sendStateEvent(roomId, \"m.room.bot.options\", event.data.content, \"_\" + userId).done(function () {\n sendResponse(event, {\n success: true\n });\n }, function (err) {\n sendError(event, err.message ? err.message : (0, _languageHandler._t)('Failed to send request.'), err);\n });\n}\n\nfunction setBotPower(event, roomId, userId, level) {\n if (!((0, _isInteger2.default)(level) && level >= 0)) {\n sendError(event, (0, _languageHandler._t)('Power level must be positive integer.'));\n return;\n }\n\n console.log('Received request to set power level to ' + level + ' for bot ' + userId + ' in room ' + roomId + '.');\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n\n client.getStateEvent(roomId, \"m.room.power_levels\", \"\").then(function (powerLevels) {\n var powerEvent = new _matrixJsSdk.MatrixEvent({\n type: \"m.room.power_levels\",\n content: powerLevels\n });\n\n client.setPowerLevel(roomId, userId, level, powerEvent).done(function () {\n sendResponse(event, {\n success: true\n });\n }, function (err) {\n sendError(event, err.message ? err.message : (0, _languageHandler._t)('Failed to send request.'), err);\n });\n });\n}\n\nfunction getMembershipState(event, roomId, userId) {\n console.log('membership_state of ' + userId + ' in room ' + roomId + ' requested.');\n returnStateEvent(event, roomId, \"m.room.member\", userId);\n}\n\nfunction getJoinRules(event, roomId) {\n console.log('join_rules of ' + roomId + ' requested.');\n returnStateEvent(event, roomId, \"m.room.join_rules\", \"\");\n}\n\nfunction botOptions(event, roomId, userId) {\n console.log('bot_options of ' + userId + ' in room ' + roomId + ' requested.');\n returnStateEvent(event, roomId, \"m.room.bot.options\", \"_\" + userId);\n}\n\nfunction getMembershipCount(event, roomId) {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var room = client.getRoom(roomId);\n if (!room) {\n sendError(event, (0, _languageHandler._t)('This room is not recognised.'));\n return;\n }\n var count = room.getJoinedMemberCount();\n sendResponse(event, count);\n}\n\nfunction canSendEvent(event, roomId) {\n var evType = \"\" + event.data.event_type; // force stringify\n var isState = Boolean(event.data.is_state);\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var room = client.getRoom(roomId);\n if (!room) {\n sendError(event, (0, _languageHandler._t)('This room is not recognised.'));\n return;\n }\n if (room.getMyMembership() !== \"join\") {\n sendError(event, (0, _languageHandler._t)('You are not in this room.'));\n return;\n }\n var me = client.credentials.userId;\n\n var canSend = false;\n if (isState) {\n canSend = room.currentState.maySendStateEvent(evType, me);\n } else {\n canSend = room.currentState.maySendEvent(evType, me);\n }\n\n if (!canSend) {\n sendError(event, (0, _languageHandler._t)('You do not have permission to do that in this room.'));\n return;\n }\n\n sendResponse(event, true);\n}\n\nfunction returnStateEvent(event, roomId, eventType, stateKey) {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var room = client.getRoom(roomId);\n if (!room) {\n sendError(event, (0, _languageHandler._t)('This room is not recognised.'));\n return;\n }\n var stateEvent = room.currentState.getStateEvents(eventType, stateKey);\n if (!stateEvent) {\n sendResponse(event, null);\n return;\n }\n sendResponse(event, stateEvent.getContent());\n}\n\nvar onMessage = function onMessage(event) {\n if (!event.origin) {\n // stupid chrome\n event.origin = event.originalEvent.origin;\n }\n\n // Check that the integrations UI URL starts with the origin of the event\n // This means the URL could contain a path (like /develop) and still be used\n // to validate event origins, which do not specify paths.\n // (See https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage)\n //\n // All strings start with the empty string, so for sanity return if the length\n // of the event origin is 0.\n //\n // TODO -- Scalar postMessage API should be namespaced with event.data.api field\n // Fix following \"if\" statement to respond only to specific API messages.\n var url = _SdkConfig2.default.get().integrations_ui_url;\n if (event.origin.length === 0 || !url.startsWith(event.origin + '/') || !event.data.action || event.data.api // Ignore messages with specific API set\n ) {\n return; // don't log this - debugging APIs like to spam postMessage which floods the log otherwise\n }\n\n if (event.data.action === \"close_scalar\") {\n _dispatcher2.default.dispatch({ action: \"close_scalar\" });\n sendResponse(event, null);\n return;\n }\n\n var roomId = event.data.room_id;\n var userId = event.data.user_id;\n\n if (!roomId) {\n // These APIs don't require roomId\n // Get and set user widgets (not associated with a specific room)\n // If roomId is specified, it must be validated, so room-based widgets agreed\n // handled further down.\n if (event.data.action === \"get_widgets\") {\n getWidgets(event, null);\n return;\n } else if (event.data.action === \"set_widget\") {\n setWidget(event, null);\n return;\n } else {\n sendError(event, (0, _languageHandler._t)('Missing room_id in request'));\n return;\n }\n }\n\n if (roomId !== _RoomViewStore2.default.getRoomId()) {\n sendError(event, (0, _languageHandler._t)('Room %(roomId)s not visible', { roomId: roomId }));\n return;\n }\n\n // Get and set room-based widgets\n if (event.data.action === \"get_widgets\") {\n getWidgets(event, roomId);\n return;\n } else if (event.data.action === \"set_widget\") {\n setWidget(event, roomId);\n return;\n }\n\n // These APIs don't require userId\n if (event.data.action === \"join_rules_state\") {\n getJoinRules(event, roomId);\n return;\n } else if (event.data.action === \"set_plumbing_state\") {\n setPlumbingState(event, roomId, event.data.status);\n return;\n } else if (event.data.action === \"get_membership_count\") {\n getMembershipCount(event, roomId);\n return;\n } else if (event.data.action === \"get_room_enc_state\") {\n getRoomEncState(event, roomId);\n return;\n } else if (event.data.action === \"can_send_event\") {\n canSendEvent(event, roomId);\n return;\n }\n\n if (!userId) {\n sendError(event, (0, _languageHandler._t)('Missing user_id in request'));\n return;\n }\n switch (event.data.action) {\n case \"membership_state\":\n getMembershipState(event, roomId, userId);\n break;\n case \"invite\":\n inviteUser(event, roomId, userId);\n break;\n case \"bot_options\":\n botOptions(event, roomId, userId);\n break;\n case \"set_bot_options\":\n setBotOptions(event, roomId, userId);\n break;\n case \"set_bot_power\":\n setBotPower(event, roomId, userId, event.data.level);\n break;\n default:\n console.warn(\"Unhandled postMessage event with action '\" + event.data.action + \"'\");\n break;\n }\n};\n\nvar listenerCount = 0;\nmodule.exports = {\n startListening: function startListening() {\n if (listenerCount === 0) {\n window.addEventListener(\"message\", onMessage, false);\n }\n listenerCount += 1;\n },\n\n stopListening: function stopListening() {\n listenerCount -= 1;\n if (listenerCount === 0) {\n window.removeEventListener(\"message\", onMessage);\n }\n if (listenerCount < 0) {\n // Make an error so we get a stack trace\n var e = new Error(\"ScalarMessaging: mismatched startListening / stopListening detected.\" + \" Negative count\");\n console.error(e);\n }\n }\n};\n//# sourceMappingURL=ScalarMessaging.js.map","/*\nCopyright 2015 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\nvar ReactDOM = require(\"react-dom\");\n\nvar Tinter = require(\"../../../Tinter\");\n\nvar TintableSvg = React.createClass({\n displayName: 'TintableSvg',\n\n propTypes: {\n src: _propTypes2.default.string.isRequired,\n width: _propTypes2.default.string.isRequired,\n height: _propTypes2.default.string.isRequired,\n className: _propTypes2.default.string,\n forceColors: _propTypes2.default.arrayOf(_propTypes2.default.string)\n },\n\n statics: {\n // list of currently mounted TintableSvgs\n mounts: {},\n idSequence: 0\n },\n\n componentWillMount: function componentWillMount() {\n this.fixups = [];\n },\n\n componentDidMount: function componentDidMount() {\n this.id = TintableSvg.idSequence++;\n TintableSvg.mounts[this.id] = this;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n delete TintableSvg.mounts[this.id];\n },\n\n componentDidUpdate: function componentDidUpdate(prevProps, prevState) {\n if (prevProps.forceColors !== this.props.forceColors) {\n this.calcAndApplyFixups(this.refs.svgContainer);\n }\n },\n\n tint: function tint() {\n // TODO: only bother running this if the global tint settings have changed\n // since we loaded!\n Tinter.applySvgFixups(this.fixups);\n },\n\n onLoad: function onLoad(event) {\n this.calcAndApplyFixups(event.target);\n },\n\n calcAndApplyFixups: function calcAndApplyFixups(target) {\n if (!target) return;\n // console.log(\"TintableSvg.calcAndApplyFixups for \" + this.props.src);\n this.fixups = Tinter.calcSvgFixups([target], this.props.forceColors);\n Tinter.applySvgFixups(this.fixups);\n },\n\n render: function render() {\n return React.createElement('object', { className: \"mx_TintableSvg \" + (this.props.className ? this.props.className : \"\"),\n type: 'image/svg+xml',\n data: this.props.src,\n width: this.props.width,\n height: this.props.height,\n onLoad: this.onLoad,\n tabIndex: '-1',\n ref: 'svgContainer'\n });\n }\n});\n\n// Register with the Tinter so that we will be told if the tint changes\nTinter.registerTintable(function () {\n if (TintableSvg.mounts) {\n (0, _keys2.default)(TintableSvg.mounts).forEach(function (id) {\n TintableSvg.mounts[id].tint();\n });\n }\n});\n\nmodule.exports = TintableSvg;\n//# sourceMappingURL=TintableSvg.js.map","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","\"use strict\";\n\nfunction isContainer(node) {\n switch (node._type) {\n case 'document':\n case 'block_quote':\n case 'list':\n case 'item':\n case 'paragraph':\n case 'heading':\n case 'emph':\n case 'strong':\n case 'link':\n case 'image':\n case 'custom_inline':\n case 'custom_block':\n return true;\n default:\n return false;\n }\n}\n\nvar resumeAt = function(node, entering) {\n this.current = node;\n this.entering = (entering === true);\n};\n\nvar next = function(){\n var cur = this.current;\n var entering = this.entering;\n\n if (cur === null) {\n return null;\n }\n\n var container = isContainer(cur);\n\n if (entering && container) {\n if (cur._firstChild) {\n this.current = cur._firstChild;\n this.entering = true;\n } else {\n // stay on node but exit\n this.entering = false;\n }\n\n } else if (cur === this.root) {\n this.current = null;\n\n } else if (cur._next === null) {\n this.current = cur._parent;\n this.entering = false;\n\n } else {\n this.current = cur._next;\n this.entering = true;\n }\n\n return {entering: entering, node: cur};\n};\n\nvar NodeWalker = function(root) {\n return { current: root,\n root: root,\n entering: true,\n next: next,\n resumeAt: resumeAt };\n};\n\nvar Node = function(nodeType, sourcepos) {\n this._type = nodeType;\n this._parent = null;\n this._firstChild = null;\n this._lastChild = null;\n this._prev = null;\n this._next = null;\n this._sourcepos = sourcepos;\n this._lastLineBlank = false;\n this._open = true;\n this._string_content = null;\n this._literal = null;\n this._listData = {};\n this._info = null;\n this._destination = null;\n this._title = null;\n this._isFenced = false;\n this._fenceChar = null;\n this._fenceLength = 0;\n this._fenceOffset = null;\n this._level = null;\n this._onEnter = null;\n this._onExit = null;\n};\n\nvar proto = Node.prototype;\n\nObject.defineProperty(proto, 'isContainer', {\n get: function () { return isContainer(this); }\n});\n\nObject.defineProperty(proto, 'type', {\n get: function() { return this._type; }\n});\n\nObject.defineProperty(proto, 'firstChild', {\n get: function() { return this._firstChild; }\n});\n\nObject.defineProperty(proto, 'lastChild', {\n get: function() { return this._lastChild; }\n});\n\nObject.defineProperty(proto, 'next', {\n get: function() { return this._next; }\n});\n\nObject.defineProperty(proto, 'prev', {\n get: function() { return this._prev; }\n});\n\nObject.defineProperty(proto, 'parent', {\n get: function() { return this._parent; }\n});\n\nObject.defineProperty(proto, 'sourcepos', {\n get: function() { return this._sourcepos; }\n});\n\nObject.defineProperty(proto, 'literal', {\n get: function() { return this._literal; },\n set: function(s) { this._literal = s; }\n});\n\nObject.defineProperty(proto, 'destination', {\n get: function() { return this._destination; },\n set: function(s) { this._destination = s; }\n});\n\nObject.defineProperty(proto, 'title', {\n get: function() { return this._title; },\n set: function(s) { this._title = s; }\n});\n\nObject.defineProperty(proto, 'info', {\n get: function() { return this._info; },\n set: function(s) { this._info = s; }\n});\n\nObject.defineProperty(proto, 'level', {\n get: function() { return this._level; },\n set: function(s) { this._level = s; }\n});\n\nObject.defineProperty(proto, 'listType', {\n get: function() { return this._listData.type; },\n set: function(t) { this._listData.type = t; }\n});\n\nObject.defineProperty(proto, 'listTight', {\n get: function() { return this._listData.tight; },\n set: function(t) { this._listData.tight = t; }\n});\n\nObject.defineProperty(proto, 'listStart', {\n get: function() { return this._listData.start; },\n set: function(n) { this._listData.start = n; }\n});\n\nObject.defineProperty(proto, 'listDelimiter', {\n get: function() { return this._listData.delimiter; },\n set: function(delim) { this._listData.delimiter = delim; }\n});\n\nObject.defineProperty(proto, 'onEnter', {\n get: function() { return this._onEnter; },\n set: function(s) { this._onEnter = s; }\n});\n\nObject.defineProperty(proto, 'onExit', {\n get: function() { return this._onExit; },\n set: function(s) { this._onExit = s; }\n});\n\nNode.prototype.appendChild = function(child) {\n child.unlink();\n child._parent = this;\n if (this._lastChild) {\n this._lastChild._next = child;\n child._prev = this._lastChild;\n this._lastChild = child;\n } else {\n this._firstChild = child;\n this._lastChild = child;\n }\n};\n\nNode.prototype.prependChild = function(child) {\n child.unlink();\n child._parent = this;\n if (this._firstChild) {\n this._firstChild._prev = child;\n child._next = this._firstChild;\n this._firstChild = child;\n } else {\n this._firstChild = child;\n this._lastChild = child;\n }\n};\n\nNode.prototype.unlink = function() {\n if (this._prev) {\n this._prev._next = this._next;\n } else if (this._parent) {\n this._parent._firstChild = this._next;\n }\n if (this._next) {\n this._next._prev = this._prev;\n } else if (this._parent) {\n this._parent._lastChild = this._prev;\n }\n this._parent = null;\n this._next = null;\n this._prev = null;\n};\n\nNode.prototype.insertAfter = function(sibling) {\n sibling.unlink();\n sibling._next = this._next;\n if (sibling._next) {\n sibling._next._prev = sibling;\n }\n sibling._prev = this;\n this._next = sibling;\n sibling._parent = this._parent;\n if (!sibling._next) {\n sibling._parent._lastChild = sibling;\n }\n};\n\nNode.prototype.insertBefore = function(sibling) {\n sibling.unlink();\n sibling._prev = this._prev;\n if (sibling._prev) {\n sibling._prev._next = sibling;\n }\n sibling._next = this;\n this._prev = sibling;\n sibling._parent = this._parent;\n if (!sibling._prev) {\n sibling._parent._firstChild = sibling;\n }\n};\n\nNode.prototype.walker = function() {\n var walker = new NodeWalker(this);\n return walker;\n};\n\nmodule.exports = Node;\n\n\n/* Example of use of walker:\n\n var walker = w.walker();\n var event;\n\n while (event = walker.next()) {\n console.log(event.entering, event.node.type);\n }\n\n */\n","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar StandardActions = require('./StandardActions');\nvar NotificationUtils = require('./NotificationUtils');\n\nvar states = {\n /** The push rule is disabled */\n OFF: \"off\",\n\n /** The user will receive push notification for this rule */\n ON: \"on\",\n\n /** The user will receive push notification for this rule with sound and\n highlight if this is legitimate */\n LOUD: \"loud\"\n};\n\nmodule.exports = {\n /**\n * Enum for state of a push rule as defined by the Vector UI.\n * @readonly\n * @enum {string}\n */\n states: states,\n\n /**\n * Convert a PushRuleVectorState to a list of actions\n *\n * @return [object] list of push-rule actions\n */\n actionsFor: function actionsFor(pushRuleVectorState) {\n if (pushRuleVectorState === this.ON) {\n return StandardActions.ACTION_NOTIFY;\n } else if (pushRuleVectorState === this.LOUD) {\n return StandardActions.ACTION_HIGHLIGHT_DEFAULT_SOUND;\n }\n },\n\n /**\n * Convert a pushrule's actions to a PushRuleVectorState.\n *\n * Determines whether a content rule is in the PushRuleVectorState.ON\n * category or in PushRuleVectorState.LOUD, regardless of its enabled\n * state. Returns null if it does not match these categories.\n */\n contentRuleVectorStateKind: function contentRuleVectorStateKind(rule) {\n var decoded = NotificationUtils.decodeActions(rule.actions);\n\n if (!decoded) {\n return null;\n }\n\n // Count tweaks to determine if it is a ON or LOUD rule\n var tweaks = 0;\n if (decoded.sound) {\n tweaks++;\n }\n if (decoded.highlight) {\n tweaks++;\n }\n var stateKind = null;\n switch (tweaks) {\n case 0:\n stateKind = this.ON;\n break;\n case 2:\n stateKind = this.LOUD;\n break;\n }\n return stateKind;\n }\n};\n\nfor (var k in states) {\n module.exports[k] = states[k];\n}\n//# sourceMappingURL=PushRuleVectorState.js.map","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import isPlainObject from 'lodash-es/isPlainObject';\nimport $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nexport var ActionTypes = {\n INIT: '@@redux/INIT'\n\n /**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n};export default function createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n function getState() {\n return currentState;\n }\n\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected listener to be a function.');\n }\n\n var isSubscribed = true;\n\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({ type: ActionTypes.INIT });\n }\n\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object') {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return { unsubscribe: unsubscribe };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n }\n\n // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n dispatch({ type: ActionTypes.INIT });\n\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}","import { ActionTypes } from './createStore';\nimport isPlainObject from 'lodash-es/isPlainObject';\nimport warning from './utils/warning';\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n\n return 'Given action ' + actionName + ', reducer \"' + key + '\" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state. ' + 'If you want this reducer to hold no value, you can return null instead of undefined.';\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return 'The ' + argumentName + ' has unexpected type of \"' + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n\n if (unexpectedKeys.length > 0) {\n return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, { type: ActionTypes.INIT });\n\n if (typeof initialState === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined. If you don\\'t want to set a value for this reducer, ' + 'you can use null instead of undefined.');\n }\n\n var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n if (typeof reducer(undefined, { type: type }) === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined, but can be null.');\n }\n });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\nexport default function combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning('No reducer provided for key \"' + key + '\"');\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n var finalReducerKeys = Object.keys(finalReducers);\n\n var unexpectedKeyCache = void 0;\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError = void 0;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n return hasChanged ? nextState : state;\n };\n}","function bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(undefined, arguments));\n };\n}\n\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\nexport default function bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}","/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\n\nexport default function compose() {\n for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(undefined, arguments));\n };\n });\n}","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport compose from './compose';\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\nexport default function applyMiddleware() {\n for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function (reducer, preloadedState, enhancer) {\n var store = createStore(reducer, preloadedState, enhancer);\n var _dispatch = store.dispatch;\n var chain = [];\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch(action) {\n return _dispatch(action);\n }\n };\n chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(undefined, chain)(store.dispatch);\n\n return _extends({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}","import createStore from './createStore';\nimport combineReducers from './combineReducers';\nimport bindActionCreators from './bindActionCreators';\nimport applyMiddleware from './applyMiddleware';\nimport compose from './compose';\nimport warning from './utils/warning';\n\n/*\n* This is a dummy function to check if the function name has been altered by minification.\n* If the function has been minified and NODE_ENV !== 'production', warn the user.\n*/\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \\'production\\'. ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { createStore, combineReducers, bindActionCreators, applyMiddleware, compose };","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","/*! https://mths.be/esrever v0.2.0 by @mathias */\n;(function(root) {\n\n\t// Detect free variables `exports`\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar regexSymbolWithCombiningMarks = /([\\0-\\u02FF\\u0370-\\u1AAF\\u1B00-\\u1DBF\\u1E00-\\u20CF\\u2100-\\uD7FF\\uE000-\\uFE1F\\uFE30-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])([\\u0300-\\u036F\\u1AB0-\\u1AFF\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F]+)/g;\n\tvar regexSurrogatePair = /([\\uD800-\\uDBFF])([\\uDC00-\\uDFFF])/g;\n\n\tvar reverse = function(string) {\n\t\t// Step 1: deal with combining marks and astral symbols (surrogate pairs)\n\t\tstring = string\n\t\t\t// Swap symbols with their combining marks so the combining marks go first\n\t\t\t.replace(regexSymbolWithCombiningMarks, function($0, $1, $2) {\n\t\t\t\t// Reverse the combining marks so they will end up in the same order\n\t\t\t\t// later on (after another round of reversing)\n\t\t\t\treturn reverse($2) + $1;\n\t\t\t})\n\t\t\t// Swap high and low surrogates so the low surrogates go first\n\t\t\t.replace(regexSurrogatePair, '$2$1');\n\t\t// Step 2: reverse the code units in the string\n\t\tvar result = '';\n\t\tvar index = string.length;\n\t\twhile (index--) {\n\t\t\tresult += string.charAt(index);\n\t\t}\n\t\treturn result;\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar esrever = {\n\t\t'version': '0.2.0',\n\t\t'reverse': reverse\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn esrever;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = esrever;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in esrever) {\n\t\t\t\tesrever.hasOwnProperty(key) && (freeExports[key] = esrever[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.esrever = esrever;\n\t}\n\n}(this));\n","var arrayMap = require('./_arrayMap'),\n baseClone = require('./_baseClone'),\n baseUnset = require('./_baseUnset'),\n castPath = require('./_castPath'),\n copyObject = require('./_copyObject'),\n customOmitClone = require('./_customOmitClone'),\n flatRest = require('./_flatRest'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nmodule.exports = omit;\n","/**\n * This is a straight rip-off of the React.js ReactPropTypes.js proptype validators,\n * modified to make it possible to validate Immutable.js data.\n * ImmutableTypes.listOf is patterned after React.PropTypes.arrayOf, but for Immutable.List\n * ImmutableTypes.shape is based on React.PropTypes.shape, but for any Immutable.Iterable\n */\n\"use strict\";\n\nvar Immutable = require(\"immutable\");\n\nvar ANONYMOUS = \"<<anonymous>>\";\n\nvar ImmutablePropTypes = {\n listOf: createListOfTypeChecker,\n mapOf: createMapOfTypeChecker,\n orderedMapOf: createOrderedMapOfTypeChecker,\n setOf: createSetOfTypeChecker,\n orderedSetOf: createOrderedSetOfTypeChecker,\n stackOf: createStackOfTypeChecker,\n iterableOf: createIterableOfTypeChecker,\n recordOf: createRecordOfTypeChecker,\n shape: createShapeChecker,\n contains: createShapeChecker,\n mapContains: createMapContainsChecker,\n // Primitive Types\n list: createImmutableTypeChecker(\"List\", Immutable.List.isList),\n map: createImmutableTypeChecker(\"Map\", Immutable.Map.isMap),\n orderedMap: createImmutableTypeChecker(\"OrderedMap\", Immutable.OrderedMap.isOrderedMap),\n set: createImmutableTypeChecker(\"Set\", Immutable.Set.isSet),\n orderedSet: createImmutableTypeChecker(\"OrderedSet\", Immutable.OrderedSet.isOrderedSet),\n stack: createImmutableTypeChecker(\"Stack\", Immutable.Stack.isStack),\n seq: createImmutableTypeChecker(\"Seq\", Immutable.Seq.isSeq),\n record: createImmutableTypeChecker(\"Record\", function (isRecord) {\n return isRecord instanceof Immutable.Record;\n }),\n iterable: createImmutableTypeChecker(\"Iterable\", Immutable.Iterable.isIterable)\n};\n\nfunction getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return \"array\";\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return \"object\";\n }\n if (propValue instanceof Immutable.Iterable) {\n return \"Immutable.\" + propValue.toSource().split(\" \")[0];\n }\n return propType;\n}\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n rest[_key - 6] = arguments[_key];\n }\n\n propFullName = propFullName || propName;\n componentName = componentName || ANONYMOUS;\n if (props[propName] == null) {\n var locationName = location;\n if (isRequired) {\n return new Error(\"Required \" + locationName + \" `\" + propFullName + \"` was not specified in \" + (\"`\" + componentName + \"`.\"));\n }\n } else {\n return validate.apply(undefined, [props, propName, componentName, location, propFullName].concat(rest));\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\n\nfunction createImmutableTypeChecker(immutableClassName, immutableClassTypeValidator) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!immutableClassTypeValidator(propValue)) {\n var propType = getPropType(propValue);\n return new Error(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` \" + (\"supplied to `\" + componentName + \"`, expected `\" + immutableClassName + \"`.\"));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createIterableTypeChecker(typeChecker, immutableClassName, immutableClassTypeValidator) {\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n rest[_key - 5] = arguments[_key];\n }\n\n var propValue = props[propName];\n if (!immutableClassTypeValidator(propValue)) {\n var locationName = location;\n var propType = getPropType(propValue);\n return new Error(\"Invalid \" + locationName + \" `\" + propFullName + \"` of type \" + (\"`\" + propType + \"` supplied to `\" + componentName + \"`, expected an Immutable.js \" + immutableClassName + \".\"));\n }\n\n if (typeof typeChecker !== \"function\") {\n return new Error(\"Invalid typeChecker supplied to `\" + componentName + \"` \" + (\"for propType `\" + propFullName + \"`, expected a function.\"));\n }\n\n var propValues = propValue.toArray();\n for (var i = 0, len = propValues.length; i < len; i++) {\n var error = typeChecker.apply(undefined, [propValues, i, componentName, location, \"\" + propFullName + \"[\" + i + \"]\"].concat(rest));\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createKeysTypeChecker(typeChecker) {\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n rest[_key - 5] = arguments[_key];\n }\n\n var propValue = props[propName];\n if (typeof typeChecker !== \"function\") {\n return new Error(\"Invalid keysTypeChecker (optional second argument) supplied to `\" + componentName + \"` \" + (\"for propType `\" + propFullName + \"`, expected a function.\"));\n }\n\n var keys = propValue.keySeq().toArray();\n for (var i = 0, len = keys.length; i < len; i++) {\n var error = typeChecker.apply(undefined, [keys, i, componentName, location, \"\" + propFullName + \" -> key(\" + keys[i] + \")\"].concat(rest));\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createListOfTypeChecker(typeChecker) {\n return createIterableTypeChecker(typeChecker, \"List\", Immutable.List.isList);\n}\n\nfunction createMapOfTypeCheckerFactory(valuesTypeChecker, keysTypeChecker, immutableClassName, immutableClassTypeValidator) {\n function validate() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return createIterableTypeChecker(valuesTypeChecker, immutableClassName, immutableClassTypeValidator).apply(undefined, args) || keysTypeChecker && createKeysTypeChecker(keysTypeChecker).apply(undefined, args);\n }\n\n return createChainableTypeChecker(validate);\n}\n\nfunction createMapOfTypeChecker(valuesTypeChecker, keysTypeChecker) {\n return createMapOfTypeCheckerFactory(valuesTypeChecker, keysTypeChecker, \"Map\", Immutable.Map.isMap);\n}\n\nfunction createOrderedMapOfTypeChecker(valuesTypeChecker, keysTypeChecker) {\n return createMapOfTypeCheckerFactory(valuesTypeChecker, keysTypeChecker, \"OrderedMap\", Immutable.OrderedMap.isOrderedMap);\n}\n\nfunction createSetOfTypeChecker(typeChecker) {\n return createIterableTypeChecker(typeChecker, \"Set\", Immutable.Set.isSet);\n}\n\nfunction createOrderedSetOfTypeChecker(typeChecker) {\n return createIterableTypeChecker(typeChecker, \"OrderedSet\", Immutable.OrderedSet.isOrderedSet);\n}\n\nfunction createStackOfTypeChecker(typeChecker) {\n return createIterableTypeChecker(typeChecker, \"Stack\", Immutable.Stack.isStack);\n}\n\nfunction createIterableOfTypeChecker(typeChecker) {\n return createIterableTypeChecker(typeChecker, \"Iterable\", Immutable.Iterable.isIterable);\n}\n\nfunction createRecordOfTypeChecker(recordKeys) {\n function validate(props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n rest[_key - 5] = arguments[_key];\n }\n\n var propValue = props[propName];\n if (!(propValue instanceof Immutable.Record)) {\n var propType = getPropType(propValue);\n var locationName = location;\n return new Error(\"Invalid \" + locationName + \" `\" + propFullName + \"` of type `\" + propType + \"` \" + (\"supplied to `\" + componentName + \"`, expected an Immutable.js Record.\"));\n }\n for (var key in recordKeys) {\n var checker = recordKeys[key];\n if (!checker) {\n continue;\n }\n var mutablePropValue = propValue.toObject();\n var error = checker.apply(undefined, [mutablePropValue, key, componentName, location, \"\" + propFullName + \".\" + key].concat(rest));\n if (error) {\n return error;\n }\n }\n }\n return createChainableTypeChecker(validate);\n}\n\n// there is some irony in the fact that shapeTypes is a standard hash and not an immutable collection\nfunction createShapeTypeChecker(shapeTypes) {\n var immutableClassName = arguments[1] === undefined ? \"Iterable\" : arguments[1];\n var immutableClassTypeValidator = arguments[2] === undefined ? Immutable.Iterable.isIterable : arguments[2];\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n rest[_key - 5] = arguments[_key];\n }\n\n var propValue = props[propName];\n if (!immutableClassTypeValidator(propValue)) {\n var propType = getPropType(propValue);\n var locationName = location;\n return new Error(\"Invalid \" + locationName + \" `\" + propFullName + \"` of type `\" + propType + \"` \" + (\"supplied to `\" + componentName + \"`, expected an Immutable.js \" + immutableClassName + \".\"));\n }\n var mutablePropValue = propValue.toObject();\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker.apply(undefined, [mutablePropValue, key, componentName, location, \"\" + propFullName + \".\" + key].concat(rest));\n if (error) {\n return error;\n }\n }\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createShapeChecker(shapeTypes) {\n return createShapeTypeChecker(shapeTypes);\n}\n\nfunction createMapContainsChecker(shapeTypes) {\n return createShapeTypeChecker(shapeTypes, \"Map\", Immutable.Map.isMap);\n}\n\nmodule.exports = ImmutablePropTypes;","'use strict';\n\nexports.atob = self.atob.bind(self);\nexports.btoa = self.btoa.bind(self);\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","exports.f = require('./_wks');\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","var $parseFloat = require('./_global').parseFloat;\nvar $trim = require('./_string-trim').trim;\n\nmodule.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var cof = require('./_cof');\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","var aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar validate = require('./_validate-collection');\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar isArray = require('./_is-array');\nvar isObject = require('./_is-object');\nvar toLength = require('./_to-length');\nvar ctx = require('./_ctx');\nvar IS_CONCAT_SPREADABLE = require('./_wks')('isConcatSpreadable');\n\nfunction flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;\n var element, spreadable;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n spreadable = false;\n if (isObject(element)) {\n spreadable = element[IS_CONCAT_SPREADABLE];\n spreadable = spreadable !== undefined ? !!spreadable : isArray(element);\n }\n\n if (spreadable && depth > 0) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1fffffffffffff) throw TypeError();\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n}\n\nmodule.exports = flattenIntoArray;\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n return from(this);\n };\n};\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// https://rwaldron.github.io/proposal-math-extensions/\nmodule.exports = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) {\n if (\n arguments.length === 0\n // eslint-disable-next-line no-self-compare\n || x != x\n // eslint-disable-next-line no-self-compare\n || inLow != inLow\n // eslint-disable-next-line no-self-compare\n || inHigh != inHigh\n // eslint-disable-next-line no-self-compare\n || outLow != outLow\n // eslint-disable-next-line no-self-compare\n || outHigh != outHigh\n ) return NaN;\n if (x === Infinity || x === -Infinity) return x;\n return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar canDefineProperty = require('./canDefineProperty');\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar lowPriorityWarning = require('./lowPriorityWarning');\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nReactComponent.prototype.isReactComponent = {};\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nReactComponent.prototype.setState = function (partialState, callback) {\n !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0;\n this.updater.enqueueSetState(this, partialState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'setState');\n }\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nReactComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'forceUpdate');\n }\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\nif (process.env.NODE_ENV !== 'production') {\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n var defineDeprecationWarning = function (methodName, info) {\n if (canDefineProperty) {\n Object.defineProperty(ReactComponent.prototype, methodName, {\n get: function () {\n lowPriorityWarning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n return undefined;\n }\n });\n }\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactPureComponent(props, context, updater) {\n // Duplicated from ReactComponent.\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nfunction ComponentDummy() {}\nComponentDummy.prototype = ReactComponent.prototype;\nReactPureComponent.prototype = new ComponentDummy();\nReactPureComponent.prototype.constructor = ReactPureComponent;\n// Avoid an extra prototype jump for these methods.\n_assign(ReactPureComponent.prototype, ReactComponent.prototype);\nReactPureComponent.prototype.isPureReactComponent = true;\n\nmodule.exports = {\n Component: ReactComponent,\n PureComponent: ReactPureComponent\n};","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar warning = require('fbjs/lib/warning');\n\nfunction warnNoop(publicInstance, callerName) {\n if (process.env.NODE_ENV !== 'production') {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the abstract API for an update queue.\n */\nvar ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback) {},\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nmodule.exports = ReactNoopUpdateQueue;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar canDefineProperty = false;\nif (process.env.NODE_ENV !== 'production') {\n try {\n // $FlowFixMe https://github.com/facebook/flow/issues/285\n Object.defineProperty({}, 'x', { get: function () {} });\n canDefineProperty = true;\n } catch (x) {\n // IE will fail on defineProperty\n }\n}\n\nmodule.exports = canDefineProperty;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n// React 15.5 references this module, and assumes PropTypes are still callable in production.\n// Therefore we re-export development-only version with all the PropTypes checks here.\n// However if one is migrating to the `prop-types` npm library, they will go through the\n// `index.js` entry point, and it will branch depending on the environment.\nvar factory = require('./factoryWithTypeCheckers');\nmodule.exports = function(isValidElement) {\n // It is still allowed in 15.5.\n var throwOnDirectAccess = false;\n return factory(isValidElement, throwOnDirectAccess);\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = { \"default\": require(\"core-js/library/fn/object/freeze\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-descriptor\"), __esModule: true };","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentFlags = {\n hasCachedChildNodes: 1 << 0\n};\n\nmodule.exports = ReactDOMComponentFlags;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ARIADOMPropertyConfig = require('./ARIADOMPropertyConfig');\nvar BeforeInputEventPlugin = require('./BeforeInputEventPlugin');\nvar ChangeEventPlugin = require('./ChangeEventPlugin');\nvar DefaultEventPluginOrder = require('./DefaultEventPluginOrder');\nvar EnterLeaveEventPlugin = require('./EnterLeaveEventPlugin');\nvar HTMLDOMPropertyConfig = require('./HTMLDOMPropertyConfig');\nvar ReactComponentBrowserEnvironment = require('./ReactComponentBrowserEnvironment');\nvar ReactDOMComponent = require('./ReactDOMComponent');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMEmptyComponent = require('./ReactDOMEmptyComponent');\nvar ReactDOMTreeTraversal = require('./ReactDOMTreeTraversal');\nvar ReactDOMTextComponent = require('./ReactDOMTextComponent');\nvar ReactDefaultBatchingStrategy = require('./ReactDefaultBatchingStrategy');\nvar ReactEventListener = require('./ReactEventListener');\nvar ReactInjection = require('./ReactInjection');\nvar ReactReconcileTransaction = require('./ReactReconcileTransaction');\nvar SVGDOMPropertyConfig = require('./SVGDOMPropertyConfig');\nvar SelectEventPlugin = require('./SelectEventPlugin');\nvar SimpleEventPlugin = require('./SimpleEventPlugin');\n\nvar alreadyInjected = false;\n\nfunction inject() {\n if (alreadyInjected) {\n // TODO: This is currently true because these injections are shared between\n // the client and the server package. They should be built independently\n // and not share any injection state. Then this problem will be solved.\n return;\n }\n alreadyInjected = true;\n\n ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);\n\n /**\n * Inject modules for resolving DOM hierarchy and plugin ordering.\n */\n ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);\n ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);\n ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);\n\n /**\n * Some important event plugins included by default (without having to require\n * them).\n */\n ReactInjection.EventPluginHub.injectEventPluginsByName({\n SimpleEventPlugin: SimpleEventPlugin,\n EnterLeaveEventPlugin: EnterLeaveEventPlugin,\n ChangeEventPlugin: ChangeEventPlugin,\n SelectEventPlugin: SelectEventPlugin,\n BeforeInputEventPlugin: BeforeInputEventPlugin\n });\n\n ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);\n\n ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);\n\n ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);\n\n ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {\n return new ReactDOMEmptyComponent(instantiate);\n });\n\n ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);\n ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);\n\n ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);\n}\n\nmodule.exports = {\n inject: inject\n};","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Accumulates items that must not be null or undefined into the first one. This\n * is used to conserve memory by avoiding array allocations, and thus sacrifices\n * API cleanness. Since `current` can be null before being passed in and not\n * null after this function, make sure to assign it back to `current`:\n *\n * `a = accumulateInto(a, b);`\n *\n * This API should be sparingly used. Try `accumulate` for something cleaner.\n *\n * @return {*|array<*>} An accumulation of items.\n */\n\nfunction accumulateInto(current, next) {\n !(next != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0;\n\n if (current == null) {\n return next;\n }\n\n // Both are not empty. Warning: Never call x.concat(y) when you are not\n // certain that x is an Array (x could be a string with concat method).\n if (Array.isArray(current)) {\n if (Array.isArray(next)) {\n current.push.apply(current, next);\n return current;\n }\n current.push(next);\n return current;\n }\n\n if (Array.isArray(next)) {\n // A bit too dangerous to mutate `next`.\n return [current].concat(next);\n }\n\n return [current, next];\n}\n\nmodule.exports = accumulateInto;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/**\n * @param {array} arr an \"accumulation\" of items which is either an Array or\n * a single item. Useful when paired with the `accumulate` module. This is a\n * simple utility that allows us to reason about a collection of items, but\n * handling the case when there is exactly one item (and we do not need to\n * allocate an array).\n */\n\nfunction forEachAccumulated(arr, cb, scope) {\n if (Array.isArray(arr)) {\n arr.forEach(cb, scope);\n } else if (arr) {\n cb.call(scope, arr);\n }\n}\n\nmodule.exports = forEachAccumulated;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar contentKey = null;\n\n/**\n * Gets the key used to access text content on a DOM node.\n *\n * @return {?string} Key used to access text content.\n * @internal\n */\nfunction getTextContentAccessor() {\n if (!contentKey && ExecutionEnvironment.canUseDOM) {\n // Prefer textContent to innerText because many browsers support both but\n // SVG <text> elements don't support innerText even when <div> does.\n contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';\n }\n return contentKey;\n}\n\nmodule.exports = getTextContentAccessor;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PooledClass = require('./PooledClass');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\n\nvar CallbackQueue = function () {\n function CallbackQueue(arg) {\n _classCallCheck(this, CallbackQueue);\n\n this._callbacks = null;\n this._contexts = null;\n this._arg = arg;\n }\n\n /**\n * Enqueues a callback to be invoked when `notifyAll` is invoked.\n *\n * @param {function} callback Invoked when `notifyAll` is invoked.\n * @param {?object} context Context to call `callback` with.\n * @internal\n */\n\n\n CallbackQueue.prototype.enqueue = function enqueue(callback, context) {\n this._callbacks = this._callbacks || [];\n this._callbacks.push(callback);\n this._contexts = this._contexts || [];\n this._contexts.push(context);\n };\n\n /**\n * Invokes all enqueued callbacks and clears the queue. This is invoked after\n * the DOM representation of a component has been created or updated.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.notifyAll = function notifyAll() {\n var callbacks = this._callbacks;\n var contexts = this._contexts;\n var arg = this._arg;\n if (callbacks && contexts) {\n !(callbacks.length === contexts.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0;\n this._callbacks = null;\n this._contexts = null;\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i].call(contexts[i], arg);\n }\n callbacks.length = 0;\n contexts.length = 0;\n }\n };\n\n CallbackQueue.prototype.checkpoint = function checkpoint() {\n return this._callbacks ? this._callbacks.length : 0;\n };\n\n CallbackQueue.prototype.rollback = function rollback(len) {\n if (this._callbacks && this._contexts) {\n this._callbacks.length = len;\n this._contexts.length = len;\n }\n };\n\n /**\n * Resets the internal queue.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.reset = function reset() {\n this._callbacks = null;\n this._contexts = null;\n };\n\n /**\n * `PooledClass` looks for this.\n */\n\n\n CallbackQueue.prototype.destructor = function destructor() {\n this.reset();\n };\n\n return CallbackQueue;\n}();\n\nmodule.exports = PooledClass.addPoolingTo(CallbackQueue);","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar ReactFeatureFlags = {\n // When true, call console.time() before and .timeEnd() after each top-level\n // render (both initial renders and updates). Useful when looking at prod-mode\n // timeline profiles in Chrome, for example.\n logTopLevelRenders: false\n};\n\nmodule.exports = ReactFeatureFlags;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nfunction isCheckable(elem) {\n var type = elem.type;\n var nodeName = elem.nodeName;\n return nodeName && nodeName.toLowerCase() === 'input' && (type === 'checkbox' || type === 'radio');\n}\n\nfunction getTracker(inst) {\n return inst._wrapperState.valueTracker;\n}\n\nfunction attachTracker(inst, tracker) {\n inst._wrapperState.valueTracker = tracker;\n}\n\nfunction detachTracker(inst) {\n inst._wrapperState.valueTracker = null;\n}\n\nfunction getValueFromNode(node) {\n var value;\n if (node) {\n value = isCheckable(node) ? '' + node.checked : node.value;\n }\n return value;\n}\n\nvar inputValueTracking = {\n // exposed for testing\n _getTrackerFromNode: function (node) {\n return getTracker(ReactDOMComponentTree.getInstanceFromNode(node));\n },\n\n\n track: function (inst) {\n if (getTracker(inst)) {\n return;\n }\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var valueField = isCheckable(node) ? 'checked' : 'value';\n var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField);\n\n var currentValue = '' + node[valueField];\n\n // if someone has already defined a value or Safari, then bail\n // and don't track value will cause over reporting of changes,\n // but it's better then a hard failure\n // (needed for certain tests that spyOn input values and Safari)\n if (node.hasOwnProperty(valueField) || typeof descriptor.get !== 'function' || typeof descriptor.set !== 'function') {\n return;\n }\n\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable,\n configurable: true,\n get: function () {\n return descriptor.get.call(this);\n },\n set: function (value) {\n currentValue = '' + value;\n descriptor.set.call(this, value);\n }\n });\n\n attachTracker(inst, {\n getValue: function () {\n return currentValue;\n },\n setValue: function (value) {\n currentValue = '' + value;\n },\n stopTracking: function () {\n detachTracker(inst);\n delete node[valueField];\n }\n });\n },\n\n updateValueIfChanged: function (inst) {\n if (!inst) {\n return false;\n }\n var tracker = getTracker(inst);\n\n if (!tracker) {\n inputValueTracking.track(inst);\n return true;\n }\n\n var lastValue = tracker.getValue();\n var nextValue = getValueFromNode(ReactDOMComponentTree.getNodeFromInstance(inst));\n\n if (nextValue !== lastValue) {\n tracker.setValue(nextValue);\n return true;\n }\n\n return false;\n },\n stopTracking: function (inst) {\n var tracker = getTracker(inst);\n if (tracker) {\n tracker.stopTracking();\n }\n }\n};\n\nmodule.exports = inputValueTracking;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\n\nvar supportedInputTypes = {\n color: true,\n date: true,\n datetime: true,\n 'datetime-local': true,\n email: true,\n month: true,\n number: true,\n password: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true\n};\n\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\n if (nodeName === 'input') {\n return !!supportedInputTypes[elem.type];\n }\n\n if (nodeName === 'textarea') {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = isTextInputElement;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ViewportMetrics = {\n currentScrollLeft: 0,\n\n currentScrollTop: 0,\n\n refreshScrollValues: function (scrollPosition) {\n ViewportMetrics.currentScrollLeft = scrollPosition.x;\n ViewportMetrics.currentScrollTop = scrollPosition.y;\n }\n};\n\nmodule.exports = ViewportMetrics;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar setInnerHTML = require('./setInnerHTML');\n\n/**\n * Set the textContent property of a node, ensuring that whitespace is preserved\n * even in IE8. innerText is a poor substitute for textContent and, among many\n * issues, inserts <br> instead of the literal newline chars. innerHTML behaves\n * as it should.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\nvar setTextContent = function (node, text) {\n if (text) {\n var firstChild = node.firstChild;\n\n if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n};\n\nif (ExecutionEnvironment.canUseDOM) {\n if (!('textContent' in document.documentElement)) {\n setTextContent = function (node, text) {\n if (node.nodeType === 3) {\n node.nodeValue = text;\n return;\n }\n setInnerHTML(node, escapeTextContentForBrowser(text));\n };\n }\n}\n\nmodule.exports = setTextContent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * @param {DOMElement} node input/textarea to focus\n */\n\nfunction focusNode(node) {\n // IE8 can throw \"Can't move focus to the control because it is invisible,\n // not enabled, or of a type that does not accept the focus.\" for all kinds of\n // reasons that are too expensive and fragile to test.\n try {\n node.focus();\n } catch (e) {}\n}\n\nmodule.exports = focusNode;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\n\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n columns: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowSpan: true,\n gridRowStart: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnSpan: true,\n gridColumnStart: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n prefixes.forEach(function (prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\n/**\n * Most style properties can be unset by doing .style[prop] = '' but IE8\n * doesn't like doing that with shorthand properties so for the properties that\n * IE8 breaks on, which are listed here, we instead unset each of the\n * individual properties. See http://bugs.jquery.com/ticket/12385.\n * The 4-value 'clock' properties like margin, padding, border-width seem to\n * behave without any problems. Curiously, list-style works too without any\n * special prodding.\n */\nvar shorthandPropertyExpansions = {\n background: {\n backgroundAttachment: true,\n backgroundColor: true,\n backgroundImage: true,\n backgroundPositionX: true,\n backgroundPositionY: true,\n backgroundRepeat: true\n },\n backgroundPosition: {\n backgroundPositionX: true,\n backgroundPositionY: true\n },\n border: {\n borderWidth: true,\n borderStyle: true,\n borderColor: true\n },\n borderBottom: {\n borderBottomWidth: true,\n borderBottomStyle: true,\n borderBottomColor: true\n },\n borderLeft: {\n borderLeftWidth: true,\n borderLeftStyle: true,\n borderLeftColor: true\n },\n borderRight: {\n borderRightWidth: true,\n borderRightStyle: true,\n borderRightColor: true\n },\n borderTop: {\n borderTopWidth: true,\n borderTopStyle: true,\n borderTopColor: true\n },\n font: {\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n fontSize: true,\n lineHeight: true,\n fontFamily: true\n },\n outline: {\n outlineWidth: true,\n outlineStyle: true,\n outlineColor: true\n }\n};\n\nvar CSSProperty = {\n isUnitlessNumber: isUnitlessNumber,\n shorthandPropertyExpansions: shorthandPropertyExpansions\n};\n\nmodule.exports = CSSProperty;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar quoteAttributeValueForBrowser = require('./quoteAttributeValueForBrowser');\nvar warning = require('fbjs/lib/warning');\n\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\n\nfunction isAttributeNameSafe(attributeName) {\n if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {\n return true;\n }\n if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {\n return false;\n }\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n validatedAttributeNameCache[attributeName] = true;\n return true;\n }\n illegalAttributeNameCache[attributeName] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0;\n return false;\n}\n\nfunction shouldIgnoreValue(propertyInfo, value) {\n return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;\n}\n\n/**\n * Operations for dealing with DOM properties.\n */\nvar DOMPropertyOperations = {\n /**\n * Creates markup for the ID property.\n *\n * @param {string} id Unescaped ID.\n * @return {string} Markup string.\n */\n createMarkupForID: function (id) {\n return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id);\n },\n\n setAttributeForID: function (node, id) {\n node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);\n },\n\n createMarkupForRoot: function () {\n return DOMProperty.ROOT_ATTRIBUTE_NAME + '=\"\"';\n },\n\n setAttributeForRoot: function (node) {\n node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, '');\n },\n\n /**\n * Creates markup for a property.\n *\n * @param {string} name\n * @param {*} value\n * @return {?string} Markup string, or null if the property was invalid.\n */\n createMarkupForProperty: function (name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n if (shouldIgnoreValue(propertyInfo, value)) {\n return '';\n }\n var attributeName = propertyInfo.attributeName;\n if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n return attributeName + '=\"\"';\n }\n return attributeName + '=' + quoteAttributeValueForBrowser(value);\n } else if (DOMProperty.isCustomAttribute(name)) {\n if (value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n }\n return null;\n },\n\n /**\n * Creates markup for a custom property.\n *\n * @param {string} name\n * @param {*} value\n * @return {string} Markup string, or empty string if the property was invalid.\n */\n createMarkupForCustomAttribute: function (name, value) {\n if (!isAttributeNameSafe(name) || value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n },\n\n /**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n setValueForProperty: function (node, name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, value);\n } else if (shouldIgnoreValue(propertyInfo, value)) {\n this.deleteValueForProperty(node, name);\n return;\n } else if (propertyInfo.mustUseProperty) {\n // Contrary to `setAttribute`, object properties are properly\n // `toString`ed by IE8/9.\n node[propertyInfo.propertyName] = value;\n } else {\n var attributeName = propertyInfo.attributeName;\n var namespace = propertyInfo.attributeNamespace;\n // `setAttribute` with objects becomes only `[object]` in IE8/9,\n // ('' + value) makes it output the correct toString()-value.\n if (namespace) {\n node.setAttributeNS(namespace, attributeName, '' + value);\n } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n node.setAttribute(attributeName, '');\n } else {\n node.setAttribute(attributeName, '' + value);\n }\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n DOMPropertyOperations.setValueForAttribute(node, name, value);\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n setValueForAttribute: function (node, name, value) {\n if (!isAttributeNameSafe(name)) {\n return;\n }\n if (value == null) {\n node.removeAttribute(name);\n } else {\n node.setAttribute(name, '' + value);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n /**\n * Deletes an attributes from a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForAttribute: function (node, name) {\n node.removeAttribute(name);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n },\n\n /**\n * Deletes the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForProperty: function (node, name) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, undefined);\n } else if (propertyInfo.mustUseProperty) {\n var propName = propertyInfo.propertyName;\n if (propertyInfo.hasBooleanValue) {\n node[propName] = false;\n } else {\n node[propName] = '';\n }\n } else {\n node.removeAttribute(propertyInfo.attributeName);\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n node.removeAttribute(name);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n }\n};\n\nmodule.exports = DOMPropertyOperations;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnValueDefaultValue = false;\n\nfunction updateOptionsIfPendingUpdateAndMounted() {\n if (this._rootNodeID && this._wrapperState.pendingUpdate) {\n this._wrapperState.pendingUpdate = false;\n\n var props = this._currentElement.props;\n var value = LinkedValueUtils.getValue(props);\n\n if (value != null) {\n updateOptions(this, Boolean(props.multiple), value);\n }\n }\n}\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\nvar valuePropNames = ['value', 'defaultValue'];\n\n/**\n * Validation function for `value` and `defaultValue`.\n * @private\n */\nfunction checkSelectPropTypes(inst, props) {\n var owner = inst._currentElement._owner;\n LinkedValueUtils.checkPropTypes('select', props, owner);\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n\n for (var i = 0; i < valuePropNames.length; i++) {\n var propName = valuePropNames[i];\n if (props[propName] == null) {\n continue;\n }\n var isArray = Array.isArray(props[propName]);\n if (props.multiple && !isArray) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n } else if (!props.multiple && isArray) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n }\n }\n}\n\n/**\n * @param {ReactDOMComponent} inst\n * @param {boolean} multiple\n * @param {*} propValue A stringable (with `multiple`, a list of stringables).\n * @private\n */\nfunction updateOptions(inst, multiple, propValue) {\n var selectedValue, i;\n var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;\n\n if (multiple) {\n selectedValue = {};\n for (i = 0; i < propValue.length; i++) {\n selectedValue['' + propValue[i]] = true;\n }\n for (i = 0; i < options.length; i++) {\n var selected = selectedValue.hasOwnProperty(options[i].value);\n if (options[i].selected !== selected) {\n options[i].selected = selected;\n }\n }\n } else {\n // Do not set `select.value` as exact behavior isn't consistent across all\n // browsers for all cases.\n selectedValue = '' + propValue;\n for (i = 0; i < options.length; i++) {\n if (options[i].value === selectedValue) {\n options[i].selected = true;\n return;\n }\n }\n if (options.length) {\n options[0].selected = true;\n }\n }\n}\n\n/**\n * Implements a <select> host component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\nvar ReactDOMSelect = {\n getHostProps: function (inst, props) {\n return _assign({}, props, {\n onChange: inst._wrapperState.onChange,\n value: undefined\n });\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n checkSelectPropTypes(inst, props);\n }\n\n var value = LinkedValueUtils.getValue(props);\n inst._wrapperState = {\n pendingUpdate: false,\n initialValue: value != null ? value : props.defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n wasMultiple: Boolean(props.multiple)\n };\n\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValueDefaultValue = true;\n }\n },\n\n getSelectValueContext: function (inst) {\n // ReactDOMOption looks at this initial value so the initial generated\n // markup has correct `selected` attributes\n return inst._wrapperState.initialValue;\n },\n\n postUpdateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // After the initial mount, we control selected-ness manually so don't pass\n // this value down\n inst._wrapperState.initialValue = undefined;\n\n var wasMultiple = inst._wrapperState.wasMultiple;\n inst._wrapperState.wasMultiple = Boolean(props.multiple);\n\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n inst._wrapperState.pendingUpdate = false;\n updateOptions(inst, Boolean(props.multiple), value);\n } else if (wasMultiple !== Boolean(props.multiple)) {\n // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n if (props.defaultValue != null) {\n updateOptions(inst, Boolean(props.multiple), props.defaultValue);\n } else {\n // Revert the select back to its default unselected state.\n updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : '');\n }\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n if (this._rootNodeID) {\n this._wrapperState.pendingUpdate = true;\n }\n ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMSelect;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar React = require('react/lib/React');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar ReactNodeTypes = {\n HOST: 0,\n COMPOSITE: 1,\n EMPTY: 2,\n\n getType: function (node) {\n if (node === null || node === false) {\n return ReactNodeTypes.EMPTY;\n } else if (React.isValidElement(node)) {\n if (typeof node.type === 'function') {\n return ReactNodeTypes.COMPOSITE;\n } else {\n return ReactNodeTypes.HOST;\n }\n }\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0;\n }\n};\n\nmodule.exports = ReactNodeTypes;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyComponentFactory;\n\nvar ReactEmptyComponentInjection = {\n injectEmptyComponentFactory: function (factory) {\n emptyComponentFactory = factory;\n }\n};\n\nvar ReactEmptyComponent = {\n create: function (instantiate) {\n return emptyComponentFactory(instantiate);\n }\n};\n\nReactEmptyComponent.injection = ReactEmptyComponentInjection;\n\nmodule.exports = ReactEmptyComponent;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar genericComponentClass = null;\nvar textComponentClass = null;\n\nvar ReactHostComponentInjection = {\n // This accepts a class that receives the tag string. This is a catch all\n // that can render any kind of tag.\n injectGenericComponentClass: function (componentClass) {\n genericComponentClass = componentClass;\n },\n // This accepts a text component class that takes the text string to be\n // rendered as props.\n injectTextComponentClass: function (componentClass) {\n textComponentClass = componentClass;\n }\n};\n\n/**\n * Get a host internal component class for a specific tag.\n *\n * @param {ReactElement} element The element to create.\n * @return {function} The internal class constructor function.\n */\nfunction createInternalComponent(element) {\n !genericComponentClass ? process.env.NODE_ENV !== 'production' ? invariant(false, 'There is no registered component for the tag %s', element.type) : _prodInvariant('111', element.type) : void 0;\n return new genericComponentClass(element);\n}\n\n/**\n * @param {ReactText} text\n * @return {ReactComponent}\n */\nfunction createInstanceForText(text) {\n return new textComponentClass(text);\n}\n\n/**\n * @param {ReactComponent} component\n * @return {boolean}\n */\nfunction isTextComponent(component) {\n return component instanceof textComponentClass;\n}\n\nvar ReactHostComponent = {\n createInternalComponent: createInternalComponent,\n createInstanceForText: createInstanceForText,\n isTextComponent: isTextComponent,\n injection: ReactHostComponentInjection\n};\n\nmodule.exports = ReactHostComponent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar getIteratorFn = require('./getIteratorFn');\nvar invariant = require('fbjs/lib/invariant');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar warning = require('fbjs/lib/warning');\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (process.env.NODE_ENV !== 'production') {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = \" It looks like you're using an element created by a different \" + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nfunction isNative(fn) {\n // Based on isNative() from Lodash\n var funcToString = Function.prototype.toString;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var reIsNative = RegExp('^' + funcToString\n // Take an example native function source for comparison\n .call(hasOwnProperty\n // Strip regex characters so we can use it for regex\n ).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&'\n // Remove hasOwnProperty from the template to make it generic\n ).replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n try {\n var source = funcToString.call(fn);\n return reIsNative.test(source);\n } catch (err) {\n return false;\n }\n}\n\nvar canUseCollections =\n// Array.from\ntypeof Array.from === 'function' &&\n// Map\ntypeof Map === 'function' && isNative(Map) &&\n// Map.prototype.keys\nMap.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&\n// Set\ntypeof Set === 'function' && isNative(Set) &&\n// Set.prototype.keys\nSet.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);\n\nvar setItem;\nvar getItem;\nvar removeItem;\nvar getItemIDs;\nvar addRoot;\nvar removeRoot;\nvar getRootIDs;\n\nif (canUseCollections) {\n var itemMap = new Map();\n var rootIDSet = new Set();\n\n setItem = function (id, item) {\n itemMap.set(id, item);\n };\n getItem = function (id) {\n return itemMap.get(id);\n };\n removeItem = function (id) {\n itemMap['delete'](id);\n };\n getItemIDs = function () {\n return Array.from(itemMap.keys());\n };\n\n addRoot = function (id) {\n rootIDSet.add(id);\n };\n removeRoot = function (id) {\n rootIDSet['delete'](id);\n };\n getRootIDs = function () {\n return Array.from(rootIDSet.keys());\n };\n} else {\n var itemByKey = {};\n var rootByKey = {};\n\n // Use non-numeric keys to prevent V8 performance issues:\n // https://github.com/facebook/react/pull/7232\n var getKeyFromID = function (id) {\n return '.' + id;\n };\n var getIDFromKey = function (key) {\n return parseInt(key.substr(1), 10);\n };\n\n setItem = function (id, item) {\n var key = getKeyFromID(id);\n itemByKey[key] = item;\n };\n getItem = function (id) {\n var key = getKeyFromID(id);\n return itemByKey[key];\n };\n removeItem = function (id) {\n var key = getKeyFromID(id);\n delete itemByKey[key];\n };\n getItemIDs = function () {\n return Object.keys(itemByKey).map(getIDFromKey);\n };\n\n addRoot = function (id) {\n var key = getKeyFromID(id);\n rootByKey[key] = true;\n };\n removeRoot = function (id) {\n var key = getKeyFromID(id);\n delete rootByKey[key];\n };\n getRootIDs = function () {\n return Object.keys(rootByKey).map(getIDFromKey);\n };\n}\n\nvar unmountedIDs = [];\n\nfunction purgeDeep(id) {\n var item = getItem(id);\n if (item) {\n var childIDs = item.childIDs;\n\n removeItem(id);\n childIDs.forEach(purgeDeep);\n }\n}\n\nfunction describeComponentFrame(name, source, ownerName) {\n return '\\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n}\n\nfunction getDisplayName(element) {\n if (element == null) {\n return '#empty';\n } else if (typeof element === 'string' || typeof element === 'number') {\n return '#text';\n } else if (typeof element.type === 'string') {\n return element.type;\n } else {\n return element.type.displayName || element.type.name || 'Unknown';\n }\n}\n\nfunction describeID(id) {\n var name = ReactComponentTreeHook.getDisplayName(id);\n var element = ReactComponentTreeHook.getElement(id);\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var ownerName;\n if (ownerID) {\n ownerName = ReactComponentTreeHook.getDisplayName(ownerID);\n }\n process.env.NODE_ENV !== 'production' ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;\n return describeComponentFrame(name, element && element._source, ownerName);\n}\n\nvar ReactComponentTreeHook = {\n onSetChildren: function (id, nextChildIDs) {\n var item = getItem(id);\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.childIDs = nextChildIDs;\n\n for (var i = 0; i < nextChildIDs.length; i++) {\n var nextChildID = nextChildIDs[i];\n var nextChild = getItem(nextChildID);\n !nextChild ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0;\n !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0;\n !nextChild.isMounted ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;\n if (nextChild.parentID == null) {\n nextChild.parentID = id;\n // TODO: This shouldn't be necessary but mounting a new root during in\n // componentWillMount currently causes not-yet-mounted components to\n // be purged from our tree data so their parent id is missing.\n }\n !(nextChild.parentID === id) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0;\n }\n },\n onBeforeMountComponent: function (id, element, parentID) {\n var item = {\n element: element,\n parentID: parentID,\n text: null,\n childIDs: [],\n isMounted: false,\n updateCount: 0\n };\n setItem(id, item);\n },\n onBeforeUpdateComponent: function (id, element) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.element = element;\n },\n onMountComponent: function (id) {\n var item = getItem(id);\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.isMounted = true;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n addRoot(id);\n }\n },\n onUpdateComponent: function (id) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.updateCount++;\n },\n onUnmountComponent: function (id) {\n var item = getItem(id);\n if (item) {\n // We need to check if it exists.\n // `item` might not exist if it is inside an error boundary, and a sibling\n // error boundary child threw while mounting. Then this instance never\n // got a chance to mount, but it still gets an unmounting event during\n // the error boundary cleanup.\n item.isMounted = false;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n removeRoot(id);\n }\n }\n unmountedIDs.push(id);\n },\n purgeUnmountedComponents: function () {\n if (ReactComponentTreeHook._preventPurging) {\n // Should only be used for testing.\n return;\n }\n\n for (var i = 0; i < unmountedIDs.length; i++) {\n var id = unmountedIDs[i];\n purgeDeep(id);\n }\n unmountedIDs.length = 0;\n },\n isMounted: function (id) {\n var item = getItem(id);\n return item ? item.isMounted : false;\n },\n getCurrentStackAddendum: function (topElement) {\n var info = '';\n if (topElement) {\n var name = getDisplayName(topElement);\n var owner = topElement._owner;\n info += describeComponentFrame(name, topElement._source, owner && owner.getName());\n }\n\n var currentOwner = ReactCurrentOwner.current;\n var id = currentOwner && currentOwner._debugID;\n\n info += ReactComponentTreeHook.getStackAddendumByID(id);\n return info;\n },\n getStackAddendumByID: function (id) {\n var info = '';\n while (id) {\n info += describeID(id);\n id = ReactComponentTreeHook.getParentID(id);\n }\n return info;\n },\n getChildIDs: function (id) {\n var item = getItem(id);\n return item ? item.childIDs : [];\n },\n getDisplayName: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element) {\n return null;\n }\n return getDisplayName(element);\n },\n getElement: function (id) {\n var item = getItem(id);\n return item ? item.element : null;\n },\n getOwnerID: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element || !element._owner) {\n return null;\n }\n return element._owner._debugID;\n },\n getParentID: function (id) {\n var item = getItem(id);\n return item ? item.parentID : null;\n },\n getSource: function (id) {\n var item = getItem(id);\n var element = item ? item.element : null;\n var source = element != null ? element._source : null;\n return source;\n },\n getText: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (typeof element === 'string') {\n return element;\n } else if (typeof element === 'number') {\n return '' + element;\n } else {\n return null;\n }\n },\n getUpdateCount: function (id) {\n var item = getItem(id);\n return item ? item.updateCount : 0;\n },\n\n\n getRootIDs: getRootIDs,\n getRegisteredIDs: getItemIDs,\n\n pushNonStandardWarningStack: function (isCreatingElement, currentSource) {\n if (typeof console.reactStack !== 'function') {\n return;\n }\n\n var stack = [];\n var currentOwner = ReactCurrentOwner.current;\n var id = currentOwner && currentOwner._debugID;\n\n try {\n if (isCreatingElement) {\n stack.push({\n name: id ? ReactComponentTreeHook.getDisplayName(id) : null,\n fileName: currentSource ? currentSource.fileName : null,\n lineNumber: currentSource ? currentSource.lineNumber : null\n });\n }\n\n while (id) {\n var element = ReactComponentTreeHook.getElement(id);\n var parentID = ReactComponentTreeHook.getParentID(id);\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var ownerName = ownerID ? ReactComponentTreeHook.getDisplayName(ownerID) : null;\n var source = element && element._source;\n stack.push({\n name: ownerName,\n fileName: source ? source.fileName : null,\n lineNumber: source ? source.lineNumber : null\n });\n id = parentID;\n }\n } catch (err) {\n // Internal state is messed up.\n // Stop building the stack (it's just a nice to have).\n }\n\n console.reactStack(stack);\n },\n popNonStandardWarningStack: function () {\n if (typeof console.reactStackEnd !== 'function') {\n return;\n }\n console.reactStackEnd();\n }\n};\n\nmodule.exports = ReactComponentTreeHook;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\nvar Transaction = require('./Transaction');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactServerUpdateQueue = require('./ReactServerUpdateQueue');\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [];\n\nif (process.env.NODE_ENV !== 'production') {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\nvar noopCallbackQueue = {\n enqueue: function () {}\n};\n\n/**\n * @class ReactServerRenderingTransaction\n * @param {boolean} renderToStaticMarkup\n */\nfunction ReactServerRenderingTransaction(renderToStaticMarkup) {\n this.reinitializeTransaction();\n this.renderToStaticMarkup = renderToStaticMarkup;\n this.useCreateElement = false;\n this.updateQueue = new ReactServerUpdateQueue(this);\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array} Empty list of operation wrap procedures.\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return noopCallbackQueue;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return this.updateQueue;\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {},\n\n checkpoint: function () {},\n\n rollback: function () {}\n};\n\n_assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactServerRenderingTransaction);\n\nmodule.exports = ReactServerRenderingTransaction;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactUpdates = require('./ReactUpdates');\nvar Transaction = require('./Transaction');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\n\nvar RESET_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: function () {\n ReactDefaultBatchingStrategy.isBatchingUpdates = false;\n }\n};\n\nvar FLUSH_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)\n};\n\nvar TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];\n\nfunction ReactDefaultBatchingStrategyTransaction() {\n this.reinitializeTransaction();\n}\n\n_assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n }\n});\n\nvar transaction = new ReactDefaultBatchingStrategyTransaction();\n\nvar ReactDefaultBatchingStrategy = {\n isBatchingUpdates: false,\n\n /**\n * Call the provided function in a context within which calls to `setState`\n * and friends are batched such that components aren't updated unnecessarily.\n */\n batchedUpdates: function (callback, a, b, c, d, e) {\n var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;\n\n ReactDefaultBatchingStrategy.isBatchingUpdates = true;\n\n // The code is written this way to avoid extra allocations\n if (alreadyBatchingUpdates) {\n return callback(a, b, c, d, e);\n } else {\n return transaction.perform(callback, null, a, b, c, d, e);\n }\n }\n};\n\nmodule.exports = ReactDefaultBatchingStrategy;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Upstream version of event listener. Does not take into account specific\n * nature of platform.\n */\nvar EventListener = {\n /**\n * Listen to DOM events during the bubble phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n listen: function listen(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, false);\n }\n };\n } else if (target.attachEvent) {\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function remove() {\n target.detachEvent('on' + eventType, callback);\n }\n };\n }\n },\n\n /**\n * Listen to DOM events during the capture phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n capture: function capture(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, true);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, true);\n }\n };\n } else {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.');\n }\n return {\n remove: emptyFunction\n };\n }\n },\n\n registerDefault: function registerDefault() {}\n};\n\nmodule.exports = EventListener;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDOMSelection = require('./ReactDOMSelection');\n\nvar containsNode = require('fbjs/lib/containsNode');\nvar focusNode = require('fbjs/lib/focusNode');\nvar getActiveElement = require('fbjs/lib/getActiveElement');\n\nfunction isInDocument(node) {\n return containsNode(document.documentElement, node);\n}\n\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\nvar ReactInputSelection = {\n hasSelectionCapabilities: function (elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true');\n },\n\n getSelectionInformation: function () {\n var focusedElem = getActiveElement();\n return {\n focusedElem: focusedElem,\n selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null\n };\n },\n\n /**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\n restoreSelection: function (priorSelectionInformation) {\n var curFocusedElem = getActiveElement();\n var priorFocusedElem = priorSelectionInformation.focusedElem;\n var priorSelectionRange = priorSelectionInformation.selectionRange;\n if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {\n ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);\n }\n focusNode(priorFocusedElem);\n }\n },\n\n /**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\n getSelection: function (input) {\n var selection;\n\n if ('selectionStart' in input) {\n // Modern browser with input or textarea.\n selection = {\n start: input.selectionStart,\n end: input.selectionEnd\n };\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n // IE8 input.\n var range = document.selection.createRange();\n // There can only be one selection per document in IE, so it must\n // be in our element.\n if (range.parentElement() === input) {\n selection = {\n start: -range.moveStart('character', -input.value.length),\n end: -range.moveEnd('character', -input.value.length)\n };\n }\n } else {\n // Content editable or old IE textarea.\n selection = ReactDOMSelection.getOffsets(input);\n }\n\n return selection || { start: 0, end: 0 };\n },\n\n /**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input Set selection bounds of this input or textarea\n * -@offsets Object of same form that is returned from get*\n */\n setSelection: function (input, offsets) {\n var start = offsets.start;\n var end = offsets.end;\n if (end === undefined) {\n end = start;\n }\n\n if ('selectionStart' in input) {\n input.selectionStart = start;\n input.selectionEnd = Math.min(end, input.value.length);\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n var range = input.createTextRange();\n range.collapse(true);\n range.moveStart('character', start);\n range.moveEnd('character', end - start);\n range.select();\n } else {\n ReactDOMSelection.setOffsets(input, offsets);\n }\n }\n};\n\nmodule.exports = ReactInputSelection;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\nfunction getActiveElement(doc) /*?DOMElement*/{\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n if (typeof doc === 'undefined') {\n return null;\n }\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\nmodule.exports = getActiveElement;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar DOMProperty = require('./DOMProperty');\nvar React = require('react/lib/React');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMContainerInfo = require('./ReactDOMContainerInfo');\nvar ReactDOMFeatureFlags = require('./ReactDOMFeatureFlags');\nvar ReactFeatureFlags = require('./ReactFeatureFlags');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMarkupChecksum = require('./ReactMarkupChecksum');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar invariant = require('fbjs/lib/invariant');\nvar setInnerHTML = require('./setInnerHTML');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar warning = require('fbjs/lib/warning');\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOC_NODE_TYPE = 9;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\nvar instancesByReactRootID = {};\n\n/**\n * Finds the index of the first character\n * that's not common between the two given strings.\n *\n * @return {number} the index of the character where the strings diverge\n */\nfunction firstDifferenceIndex(string1, string2) {\n var minLen = Math.min(string1.length, string2.length);\n for (var i = 0; i < minLen; i++) {\n if (string1.charAt(i) !== string2.charAt(i)) {\n return i;\n }\n }\n return string1.length === string2.length ? -1 : minLen;\n}\n\n/**\n * @param {DOMElement|DOMDocument} container DOM element that may contain\n * a React component\n * @return {?*} DOM element that may have the reactRoot ID, or null.\n */\nfunction getReactRootElementInContainer(container) {\n if (!container) {\n return null;\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n return container.documentElement;\n } else {\n return container.firstChild;\n }\n}\n\nfunction internalGetID(node) {\n // If node is something like a window, document, or text node, none of\n // which support attributes or a .getAttribute method, gracefully return\n // the empty string, as if the attribute were missing.\n return node.getAttribute && node.getAttribute(ATTR_NAME) || '';\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {ReactReconcileTransaction} transaction\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) {\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var wrappedElement = wrapperInstance._currentElement.props.child;\n var type = wrappedElement.type;\n markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name);\n console.time(markerName);\n }\n\n var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */\n );\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance;\n ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */\n !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement);\n transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context);\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * Unmounts a component and removes it from the DOM.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {DOMElement} container DOM element to unmount from.\n * @final\n * @internal\n * @see {ReactMount.unmountComponentAtNode}\n */\nfunction unmountComponentFromNode(instance, container, safely) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onBeginFlush();\n }\n ReactReconciler.unmountComponent(instance, safely);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onEndFlush();\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n container = container.documentElement;\n }\n\n // http://jsperf.com/emptying-a-node\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n}\n\n/**\n * True if the supplied DOM node has a direct React-rendered child that is\n * not a React root element. Useful for warning in `render`,\n * `unmountComponentAtNode`, etc.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM element contains a direct child that was\n * rendered by React but is not a root element.\n * @internal\n */\nfunction hasNonRootReactChild(container) {\n var rootEl = getReactRootElementInContainer(container);\n if (rootEl) {\n var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return !!(inst && inst._hostParent);\n }\n}\n\n/**\n * True if the supplied DOM node is a React DOM element and\n * it has been rendered by another copy of React.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM has been rendered by another copy of React\n * @internal\n */\nfunction nodeIsRenderedByOtherInstance(container) {\n var rootEl = getReactRootElementInContainer(container);\n return !!(rootEl && isReactNode(rootEl) && !ReactDOMComponentTree.getInstanceFromNode(rootEl));\n}\n\n/**\n * True if the supplied DOM node is a valid node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid DOM node.\n * @internal\n */\nfunction isValidContainer(node) {\n return !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE));\n}\n\n/**\n * True if the supplied DOM node is a valid React node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid React DOM node.\n * @internal\n */\nfunction isReactNode(node) {\n return isValidContainer(node) && (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME));\n}\n\nfunction getHostRootInstanceInContainer(container) {\n var rootEl = getReactRootElementInContainer(container);\n var prevHostInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return prevHostInstance && !prevHostInstance._hostParent ? prevHostInstance : null;\n}\n\nfunction getTopLevelWrapperInContainer(container) {\n var root = getHostRootInstanceInContainer(container);\n return root ? root._hostContainerInfo._topLevelWrapper : null;\n}\n\n/**\n * Temporary (?) hack so that we can store all top-level pending updates on\n * composites instead of having to worry about different types of components\n * here.\n */\nvar topLevelRootCounter = 1;\nvar TopLevelWrapper = function () {\n this.rootID = topLevelRootCounter++;\n};\nTopLevelWrapper.prototype.isReactComponent = {};\nif (process.env.NODE_ENV !== 'production') {\n TopLevelWrapper.displayName = 'TopLevelWrapper';\n}\nTopLevelWrapper.prototype.render = function () {\n return this.props.child;\n};\nTopLevelWrapper.isReactTopLevelWrapper = true;\n\n/**\n * Mounting is the process of initializing a React component by creating its\n * representative DOM elements and inserting them into a supplied `container`.\n * Any prior content inside `container` is destroyed in the process.\n *\n * ReactMount.render(\n * component,\n * document.getElementById('container')\n * );\n *\n * <div id=\"container\"> <-- Supplied `container`.\n * <div data-reactid=\".3\"> <-- Rendered reactRoot of React\n * // ... component.\n * </div>\n * </div>\n *\n * Inside of `container`, the first element rendered is the \"reactRoot\".\n */\nvar ReactMount = {\n TopLevelWrapper: TopLevelWrapper,\n\n /**\n * Used by devtools. The keys are not important.\n */\n _instancesByReactRootID: instancesByReactRootID,\n\n /**\n * This is a hook provided to support rendering React components while\n * ensuring that the apparent scroll position of its `container` does not\n * change.\n *\n * @param {DOMElement} container The `container` being rendered into.\n * @param {function} renderCallback This must be called once to do the render.\n */\n scrollMonitor: function (container, renderCallback) {\n renderCallback();\n },\n\n /**\n * Take a component that's already mounted into the DOM and replace its props\n * @param {ReactComponent} prevComponent component instance already in the DOM\n * @param {ReactElement} nextElement component instance to render\n * @param {DOMElement} container container to render into\n * @param {?function} callback function triggered on completion\n */\n _updateRootComponent: function (prevComponent, nextElement, nextContext, container, callback) {\n ReactMount.scrollMonitor(container, function () {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext);\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n });\n\n return prevComponent;\n },\n\n /**\n * Render a new component into the DOM. Hooked by hooks!\n *\n * @param {ReactElement} nextElement element to render\n * @param {DOMElement} container container to render into\n * @param {boolean} shouldReuseMarkup if we should skip the markup insertion\n * @return {ReactComponent} nextComponent\n */\n _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case.\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : _prodInvariant('37') : void 0;\n\n ReactBrowserEventEmitter.ensureScrollValueMonitoring();\n var componentInstance = instantiateReactComponent(nextElement, false);\n\n // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context);\n\n var wrapperID = componentInstance._instance.rootID;\n instancesByReactRootID[wrapperID] = componentInstance;\n\n return componentInstance;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactComponent} parentComponent The conceptual parent of this render tree.\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n !(parentComponent != null && ReactInstanceMap.has(parentComponent)) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'parentComponent must be a valid React Component') : _prodInvariant('38') : void 0;\n return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);\n },\n\n _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render');\n !React.isValidElement(nextElement) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? \" Instead of passing a string like 'div', pass \" + \"React.createElement('div') or <div />.\" : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : // Check if it quacks like an element\n nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : _prodInvariant('39', typeof nextElement === 'string' ? \" Instead of passing a string like 'div', pass \" + \"React.createElement('div') or <div />.\" : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : void 0;\n\n process.env.NODE_ENV !== 'production' ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0;\n\n var nextWrappedElement = React.createElement(TopLevelWrapper, {\n child: nextElement\n });\n\n var nextContext;\n if (parentComponent) {\n var parentInst = ReactInstanceMap.get(parentComponent);\n nextContext = parentInst._processChildContext(parentInst._context);\n } else {\n nextContext = emptyObject;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n\n if (prevComponent) {\n var prevWrappedElement = prevComponent._currentElement;\n var prevElement = prevWrappedElement.props.child;\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n var publicInst = prevComponent._renderedComponent.getPublicInstance();\n var updatedCallback = callback && function () {\n callback.call(publicInst);\n };\n ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback);\n return publicInst;\n } else {\n ReactMount.unmountComponentAtNode(container);\n }\n }\n\n var reactRootElement = getReactRootElementInContainer(container);\n var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement);\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0;\n\n if (!containerHasReactMarkup || reactRootElement.nextSibling) {\n var rootElementSibling = reactRootElement;\n while (rootElementSibling) {\n if (internalGetID(rootElementSibling)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : void 0;\n break;\n }\n rootElementSibling = rootElementSibling.nextSibling;\n }\n }\n }\n\n var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild;\n var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance();\n if (callback) {\n callback.call(component);\n }\n return component;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n render: function (nextElement, container, callback) {\n return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);\n },\n\n /**\n * Unmounts and destroys the React component rendered in the `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode\n *\n * @param {DOMElement} container DOM element containing a React component.\n * @return {boolean} True if a component was found in and unmounted from\n * `container`\n */\n unmountComponentAtNode: function (container) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (Strictly speaking, unmounting won't cause a\n // render but we still don't expect to be in a render call here.)\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : _prodInvariant('40') : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!nodeIsRenderedByOtherInstance(container), \"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by another copy of React.') : void 0;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n if (!prevComponent) {\n // Check if the node being unmounted was rendered by React, but isn't a\n // root node.\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n // Check if the container itself is a React root node.\n var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, \"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0;\n }\n\n return false;\n }\n delete instancesByReactRootID[prevComponent._instance.rootID];\n ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false);\n return true;\n },\n\n _mountImageIntoNode: function (markup, container, instance, shouldReuseMarkup, transaction) {\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : _prodInvariant('41') : void 0;\n\n if (shouldReuseMarkup) {\n var rootElement = getReactRootElementInContainer(container);\n if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {\n ReactDOMComponentTree.precacheNode(instance, rootElement);\n return;\n } else {\n var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\n var rootMarkup = rootElement.outerHTML;\n rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);\n\n var normalizedMarkup = markup;\n if (process.env.NODE_ENV !== 'production') {\n // because rootMarkup is retrieved from the DOM, various normalizations\n // will have occurred which will not be present in `markup`. Here,\n // insert markup into a <div> or <iframe> depending on the container\n // type to perform the same normalizations before comparing.\n var normalizer;\n if (container.nodeType === ELEMENT_NODE_TYPE) {\n normalizer = document.createElement('div');\n normalizer.innerHTML = markup;\n normalizedMarkup = normalizer.innerHTML;\n } else {\n normalizer = document.createElement('iframe');\n document.body.appendChild(normalizer);\n normalizer.contentDocument.write(markup);\n normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML;\n document.body.removeChild(normalizer);\n }\n }\n\n var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup);\n var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);\n\n !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\\'re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\\n%s', difference) : _prodInvariant('42', difference) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, 'React attempted to reuse markup in a container but the ' + 'checksum was invalid. This generally means that you are ' + 'using server rendering and the markup generated on the ' + 'server was not what the client was expecting. React injected ' + 'new markup to compensate which works but you have lost many ' + 'of the benefits of server rendering. Instead, figure out ' + 'why the markup being generated is different on the client ' + 'or server:\\n%s', difference) : void 0;\n }\n }\n }\n\n !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\\'re trying to render a component to the document but you didn\\'t use server rendering. We can\\'t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('43') : void 0;\n\n if (transaction.useCreateElement) {\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n DOMLazyTree.insertTreeBefore(container, markup, null);\n } else {\n setInnerHTML(container, markup);\n ReactDOMComponentTree.precacheNode(instance, container.firstChild);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild);\n if (hostNode._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: hostNode._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n }\n};\n\nmodule.exports = ReactMount;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar validateDOMNesting = require('./validateDOMNesting');\n\nvar DOC_NODE_TYPE = 9;\n\nfunction ReactDOMContainerInfo(topLevelWrapper, node) {\n var info = {\n _topLevelWrapper: topLevelWrapper,\n _idCounter: 1,\n _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null,\n _node: node,\n _tag: node ? node.nodeName.toLowerCase() : null,\n _namespaceURI: node ? node.namespaceURI : null\n };\n if (process.env.NODE_ENV !== 'production') {\n info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null;\n }\n return info;\n}\n\nmodule.exports = ReactDOMContainerInfo;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar adler32 = require('./adler32');\n\nvar TAG_END = /\\/?>/;\nvar COMMENT_START = /^<\\!\\-\\-/;\n\nvar ReactMarkupChecksum = {\n CHECKSUM_ATTR_NAME: 'data-react-checksum',\n\n /**\n * @param {string} markup Markup string\n * @return {string} Markup string with checksum attribute attached\n */\n addChecksumToMarkup: function (markup) {\n var checksum = adler32(markup);\n\n // Add checksum (handle both parent tags, comments and self-closing tags)\n if (COMMENT_START.test(markup)) {\n return markup;\n } else {\n return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '=\"' + checksum + '\"$&');\n }\n },\n\n /**\n * @param {string} markup to use\n * @param {DOMElement} element root React element\n * @returns {boolean} whether or not the markup is the same\n */\n canReuseMarkup: function (markup, element) {\n var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n existingChecksum = existingChecksum && parseInt(existingChecksum, 10);\n var markupChecksum = adler32(markup);\n return markupChecksum === existingChecksum;\n }\n};\n\nmodule.exports = ReactMarkupChecksum;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nmodule.exports = '15.6.2';","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactNodeTypes = require('./ReactNodeTypes');\n\nfunction getHostComponentFromComposite(inst) {\n var type;\n\n while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) {\n inst = inst._renderedComponent;\n }\n\n if (type === ReactNodeTypes.HOST) {\n return inst._renderedComponent;\n } else if (type === ReactNodeTypes.EMPTY) {\n return null;\n }\n}\n\nmodule.exports = getHostComponentFromComposite;","(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var list = this.map[name]\n if (!list) {\n list = []\n this.map[name] = list\n }\n list.push(value)\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n var values = this.map[normalizeName(name)]\n return values ? values[0] : null\n }\n\n Headers.prototype.getAll = function(name) {\n return this.map[normalizeName(name)] || []\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = [normalizeValue(value)]\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n Object.getOwnPropertyNames(this.map).forEach(function(name) {\n this.map[name].forEach(function(value) {\n callback.call(thisArg, value, name, this)\n }, this)\n }, this)\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (typeof input === 'string') {\n this.url = input\n } else {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split('\\r\\n').forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n\"use strict\";\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Matrix = require(\"matrix-js-sdk\");\nvar Room = Matrix.Room;\nvar CallHandler = require('./CallHandler');\n\n// FIXME: this is Riot (Vector) specific code, but will be removed shortly when\n// we switch over to jitsi entirely for video conferencing.\n\n// FIXME: This currently forces Vector to try to hit the matrix.org AS for conferencing.\n// This is bad because it prevents people running their own ASes from being used.\n// This isn't permanent and will be customisable in the future: see the proposal\n// at docs/conferencing.md for more info.\nvar USER_PREFIX = \"fs_\";\nvar DOMAIN = \"matrix.org\";\n\nfunction ConferenceCall(matrixClient, groupChatRoomId) {\n this.client = matrixClient;\n this.groupRoomId = groupChatRoomId;\n this.confUserId = module.exports.getConferenceUserIdForRoom(this.groupRoomId);\n}\n\nConferenceCall.prototype.setup = function () {\n var self = this;\n return this._joinConferenceUser().then(function () {\n return self._getConferenceUserRoom();\n }).then(function (room) {\n // return a call for *this* room to be placed. We also tack on\n // confUserId to speed up lookups (else we'd need to loop every room\n // looking for a 1:1 room with this conf user ID!)\n var call = Matrix.createNewMatrixCall(self.client, room.roomId);\n call.confUserId = self.confUserId;\n call.groupRoomId = self.groupRoomId;\n return call;\n });\n};\n\nConferenceCall.prototype._joinConferenceUser = function () {\n // Make sure the conference user is in the group chat room\n var groupRoom = this.client.getRoom(this.groupRoomId);\n if (!groupRoom) {\n return _bluebird2.default.reject(\"Bad group room ID\");\n }\n var member = groupRoom.getMember(this.confUserId);\n if (member && member.membership === \"join\") {\n return _bluebird2.default.resolve();\n }\n return this.client.invite(this.groupRoomId, this.confUserId);\n};\n\nConferenceCall.prototype._getConferenceUserRoom = function () {\n // Use an existing 1:1 with the conference user; else make one\n var rooms = this.client.getRooms();\n var confRoom = null;\n for (var i = 0; i < rooms.length; i++) {\n var confUser = rooms[i].getMember(this.confUserId);\n if (confUser && confUser.membership === \"join\" && rooms[i].getJoinedMemberCount() === 2) {\n confRoom = rooms[i];\n break;\n }\n }\n if (confRoom) {\n return _bluebird2.default.resolve(confRoom);\n }\n return this.client.createRoom({\n preset: \"private_chat\",\n invite: [this.confUserId]\n }).then(function (res) {\n return new Room(res.room_id, null, client.getUserId());\n });\n};\n\n/**\n * Check if this user ID is in fact a conference bot.\n * @param {string} userId The user ID to check.\n * @return {boolean} True if it is a conference bot.\n */\nmodule.exports.isConferenceUser = function (userId) {\n if (userId.indexOf(\"@\" + USER_PREFIX) !== 0) {\n return false;\n }\n var base64part = userId.split(\":\")[0].substring(1 + USER_PREFIX.length);\n if (base64part) {\n var decoded = new Buffer(base64part, \"base64\").toString();\n // ! $STUFF : $STUFF\n return (/^!.+:.+/.test(decoded)\n );\n }\n return false;\n};\n\nmodule.exports.getConferenceUserIdForRoom = function (roomId) {\n // abuse browserify's core node Buffer support (strip padding ='s)\n var base64RoomId = new Buffer(roomId).toString(\"base64\").replace(/=/g, \"\");\n return \"@\" + USER_PREFIX + base64RoomId + \":\" + DOMAIN;\n};\n\nmodule.exports.createNewMatrixCall = function (client, roomId) {\n var confCall = new ConferenceCall(client, roomId);\n return confCall.setup();\n};\n\nmodule.exports.getConferenceCallForRoom = function (roomId) {\n // search for a conference 1:1 call for this group chat room ID\n var activeCall = CallHandler.getAnyActiveCall();\n if (activeCall && activeCall.confUserId) {\n var thisRoomConfUserId = module.exports.getConferenceUserIdForRoom(roomId);\n if (thisRoomConfUserId === activeCall.confUserId) {\n return activeCall;\n }\n }\n return null;\n};\n\nmodule.exports.ConferenceCall = ConferenceCall;\n\nmodule.exports.slot = 'conference';\n//# sourceMappingURL=VectorConferenceHandler.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/** The {@link module:ContentHelpers} object */\n\nmodule.exports.ContentHelpers = require(\"./content-helpers\");\n/** The {@link module:models/event.MatrixEvent|MatrixEvent} class. */\nmodule.exports.MatrixEvent = require(\"./models/event\").MatrixEvent;\n/** The {@link module:models/event.EventStatus|EventStatus} enum. */\nmodule.exports.EventStatus = require(\"./models/event\").EventStatus;\n/** The {@link module:store/memory.MatrixInMemoryStore|MatrixInMemoryStore} class. */\nmodule.exports.MatrixInMemoryStore = require(\"./store/memory\").MatrixInMemoryStore;\n/** The {@link module:store/indexeddb.IndexedDBStore|IndexedDBStore} class. */\nmodule.exports.IndexedDBStore = require(\"./store/indexeddb\").IndexedDBStore;\n/** The {@link module:store/indexeddb.IndexedDBStoreBackend|IndexedDBStoreBackend} class. */\nmodule.exports.IndexedDBStoreBackend = require(\"./store/indexeddb\").IndexedDBStoreBackend;\n/** The {@link module:sync-accumulator.SyncAccumulator|SyncAccumulator} class. */\nmodule.exports.SyncAccumulator = require(\"./sync-accumulator\");\n/** The {@link module:http-api.MatrixHttpApi|MatrixHttpApi} class. */\nmodule.exports.MatrixHttpApi = require(\"./http-api\").MatrixHttpApi;\n/** The {@link module:http-api.MatrixError|MatrixError} class. */\nmodule.exports.MatrixError = require(\"./http-api\").MatrixError;\n/** The {@link module:errors.InvalidStoreError|InvalidStoreError} class. */\nmodule.exports.InvalidStoreError = require(\"./errors\").InvalidStoreError;\n/** The {@link module:client.MatrixClient|MatrixClient} class. */\nmodule.exports.MatrixClient = require(\"./client\").MatrixClient;\n/** The {@link module:models/room|Room} class. */\nmodule.exports.Room = require(\"./models/room\");\n/** The {@link module:models/group|Group} class. */\nmodule.exports.Group = require(\"./models/group\");\n/** The {@link module:models/event-timeline~EventTimeline} class. */\nmodule.exports.EventTimeline = require(\"./models/event-timeline\");\n/** The {@link module:models/event-timeline-set~EventTimelineSet} class. */\nmodule.exports.EventTimelineSet = require(\"./models/event-timeline-set\");\n/** The {@link module:models/room-member|RoomMember} class. */\nmodule.exports.RoomMember = require(\"./models/room-member\");\n/** The {@link module:models/room-state~RoomState|RoomState} class. */\nmodule.exports.RoomState = require(\"./models/room-state\");\n/** The {@link module:models/user~User|User} class. */\nmodule.exports.User = require(\"./models/user\");\n/** The {@link module:scheduler~MatrixScheduler|MatrixScheduler} class. */\nmodule.exports.MatrixScheduler = require(\"./scheduler\");\n/** The {@link module:store/session/webstorage~WebStorageSessionStore|\n * WebStorageSessionStore} class. <strong>Work in progress; unstable.</strong> */\nmodule.exports.WebStorageSessionStore = require(\"./store/session/webstorage\");\n/** True if crypto libraries are being used on this client. */\nmodule.exports.CRYPTO_ENABLED = require(\"./client\").CRYPTO_ENABLED;\n/** {@link module:content-repo|ContentRepo} utility functions. */\nmodule.exports.ContentRepo = require(\"./content-repo\");\n/** The {@link module:filter~Filter|Filter} class. */\nmodule.exports.Filter = require(\"./filter\");\n/** The {@link module:timeline-window~TimelineWindow} class. */\nmodule.exports.TimelineWindow = require(\"./timeline-window\").TimelineWindow;\n/** The {@link module:interactive-auth} class. */\nmodule.exports.InteractiveAuth = require(\"./interactive-auth\");\n/** The {@link module:auto-discovery|AutoDiscovery} class. */\nmodule.exports.AutoDiscovery = require(\"./autodiscovery\").AutoDiscovery;\n\nmodule.exports.MemoryCryptoStore = require(\"./crypto/store/memory-crypto-store\").default;\nmodule.exports.IndexedDBCryptoStore = require(\"./crypto/store/indexeddb-crypto-store\").default;\n\n/**\n * Create a new Matrix Call.\n * @function\n * @param {module:client.MatrixClient} client The MatrixClient instance to use.\n * @param {string} roomId The room the call is in.\n * @return {module:webrtc/call~MatrixCall} The Matrix call or null if the browser\n * does not support WebRTC.\n */\nmodule.exports.createNewMatrixCall = require(\"./webrtc/call\").createNewMatrixCall;\n\n/**\n * Set an audio output device to use for MatrixCalls\n * @function\n * @param {string=} deviceId the identifier for the device\n * undefined treated as unset\n */\nmodule.exports.setMatrixCallAudioOutput = require('./webrtc/call').setAudioOutput;\n/**\n * Set an audio input device to use for MatrixCalls\n * @function\n * @param {string=} deviceId the identifier for the device\n * undefined treated as unset\n */\nmodule.exports.setMatrixCallAudioInput = require('./webrtc/call').setAudioInput;\n/**\n * Set a video input device to use for MatrixCalls\n * @function\n * @param {string=} deviceId the identifier for the device\n * undefined treated as unset\n */\nmodule.exports.setMatrixCallVideoInput = require('./webrtc/call').setVideoInput;\n\n// expose the underlying request object so different environments can use\n// different request libs (e.g. request or browser-request)\nvar request = void 0;\n/**\n * The function used to perform HTTP requests. Only use this if you want to\n * use a different HTTP library, e.g. Angular's <code>$http</code>. This should\n * be set prior to calling {@link createClient}.\n * @param {requestFunction} r The request function to use.\n */\nmodule.exports.request = function (r) {\n request = r;\n};\n\n/**\n * Return the currently-set request function.\n * @return {requestFunction} The current request function.\n */\nmodule.exports.getRequest = function () {\n return request;\n};\n\n/**\n * Apply wrapping code around the request function. The wrapper function is\n * installed as the new request handler, and when invoked it is passed the\n * previous value, along with the options and callback arguments.\n * @param {requestWrapperFunction} wrapper The wrapping function.\n */\nmodule.exports.wrapRequest = function (wrapper) {\n var origRequest = request;\n request = function request(options, callback) {\n return wrapper(origRequest, options, callback);\n };\n};\n\nvar cryptoStoreFactory = function cryptoStoreFactory() {\n return new module.exports.MemoryCryptoStore();\n};\n\n/**\n * Configure a different factory to be used for creating crypto stores\n *\n * @param {Function} fac a function which will return a new\n * {@link module:crypto.store.base~CryptoStore}.\n */\nmodule.exports.setCryptoStoreFactory = function (fac) {\n cryptoStoreFactory = fac;\n};\n\n/**\n * Construct a Matrix Client. Similar to {@link module:client~MatrixClient}\n * except that the 'request', 'store' and 'scheduler' dependencies are satisfied.\n * @param {(Object|string)} opts The configuration options for this client. If\n * this is a string, it is assumed to be the base URL. These configuration\n * options will be passed directly to {@link module:client~MatrixClient}.\n * @param {Object} opts.store If not set, defaults to\n * {@link module:store/memory.MatrixInMemoryStore}.\n * @param {Object} opts.scheduler If not set, defaults to\n * {@link module:scheduler~MatrixScheduler}.\n * @param {requestFunction} opts.request If not set, defaults to the function\n * supplied to {@link request} which defaults to the request module from NPM.\n *\n * @param {module:crypto.store.base~CryptoStore=} opts.cryptoStore\n * crypto store implementation. Calls the factory supplied to\n * {@link setCryptoStoreFactory} if unspecified; or if no factory has been\n * specified, uses a default implementation (indexeddb in the browser,\n * in-memory otherwise).\n *\n * @return {MatrixClient} A new matrix client.\n * @see {@link module:client~MatrixClient} for the full list of options for\n * <code>opts</code>.\n */\nmodule.exports.createClient = function (opts) {\n if (typeof opts === \"string\") {\n opts = {\n \"baseUrl\": opts\n };\n }\n opts.request = opts.request || request;\n opts.store = opts.store || new module.exports.MatrixInMemoryStore({\n localStorage: global.localStorage\n });\n opts.scheduler = opts.scheduler || new module.exports.MatrixScheduler();\n opts.cryptoStore = opts.cryptoStore || cryptoStoreFactory();\n return new module.exports.MatrixClient(opts);\n};\n\n/**\n * The request function interface for performing HTTP requests. This matches the\n * API for the {@link https://github.com/request/request#requestoptions-callback|\n * request NPM module}. The SDK will attempt to call this function in order to\n * perform an HTTP request.\n * @callback requestFunction\n * @param {Object} opts The options for this HTTP request.\n * @param {string} opts.uri The complete URI.\n * @param {string} opts.method The HTTP method.\n * @param {Object} opts.qs The query parameters to append to the URI.\n * @param {Object} opts.body The JSON-serializable object.\n * @param {boolean} opts.json True if this is a JSON request.\n * @param {Object} opts._matrix_opts The underlying options set for\n * {@link MatrixHttpApi}.\n * @param {requestCallback} callback The request callback.\n */\n\n/**\n * A wrapper for the request function interface.\n * @callback requestWrapperFunction\n * @param {requestFunction} origRequest The underlying request function being\n * wrapped\n * @param {Object} opts The options for this HTTP request, given in the same\n * form as {@link requestFunction}.\n * @param {requestCallback} callback The request callback.\n */\n\n/**\n * The request callback interface for performing HTTP requests. This matches the\n * API for the {@link https://github.com/request/request#requestoptions-callback|\n * request NPM module}. The SDK will implement a callback which meets this\n * interface in order to handle the HTTP response.\n * @callback requestCallback\n * @param {Error} err The error if one occurred, else falsey.\n * @param {Object} response The HTTP response which consists of\n * <code>{statusCode: {Number}, headers: {Object}}</code>\n * @param {Object} body The parsed HTTP response body.\n */\n//# sourceMappingURL=matrix.js.map","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/** @module ContentHelpers */\n\nmodule.exports = {\n /**\n * Generates the content for a HTML Message event\n * @param {string} body the plaintext body of the message\n * @param {string} htmlBody the HTML representation of the message\n * @returns {{msgtype: string, format: string, body: string, formatted_body: string}}\n */\n makeHtmlMessage: function makeHtmlMessage(body, htmlBody) {\n return {\n msgtype: \"m.text\",\n format: \"org.matrix.custom.html\",\n body: body,\n formatted_body: htmlBody\n };\n },\n\n /**\n * Generates the content for a HTML Notice event\n * @param {string} body the plaintext body of the notice\n * @param {string} htmlBody the HTML representation of the notice\n * @returns {{msgtype: string, format: string, body: string, formatted_body: string}}\n */\n makeHtmlNotice: function makeHtmlNotice(body, htmlBody) {\n return {\n msgtype: \"m.notice\",\n format: \"org.matrix.custom.html\",\n body: body,\n formatted_body: htmlBody\n };\n },\n\n /**\n * Generates the content for a HTML Emote event\n * @param {string} body the plaintext body of the emote\n * @param {string} htmlBody the HTML representation of the emote\n * @returns {{msgtype: string, format: string, body: string, formatted_body: string}}\n */\n makeHtmlEmote: function makeHtmlEmote(body, htmlBody) {\n return {\n msgtype: \"m.emote\",\n format: \"org.matrix.custom.html\",\n body: body,\n formatted_body: htmlBody\n };\n },\n\n /**\n * Generates the content for a Plaintext Message event\n * @param {string} body the plaintext body of the emote\n * @returns {{msgtype: string, body: string}}\n */\n makeTextMessage: function makeTextMessage(body) {\n return {\n msgtype: \"m.text\",\n body: body\n };\n },\n\n /**\n * Generates the content for a Plaintext Notice event\n * @param {string} body the plaintext body of the notice\n * @returns {{msgtype: string, body: string}}\n */\n makeNotice: function makeNotice(body) {\n return {\n msgtype: \"m.notice\",\n body: body\n };\n },\n\n /**\n * Generates the content for a Plaintext Emote event\n * @param {string} body the plaintext body of the emote\n * @returns {{msgtype: string, body: string}}\n */\n makeEmoteMessage: function makeEmoteMessage(body) {\n return {\n msgtype: \"m.emote\",\n body: body\n };\n }\n};\n//# sourceMappingURL=content-helpers.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * This is an internal module. See {@link MatrixInMemoryStore} for the public class.\n * @module store/memory\n */\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utils = require(\"../utils\");\nvar User = require(\"../models/user\");\n\n\n/**\n * Construct a new in-memory data store for the Matrix Client.\n * @constructor\n * @param {Object=} opts Config options\n * @param {LocalStorage} opts.localStorage The local storage instance to persist\n * some forms of data such as tokens. Rooms will NOT be stored.\n */\nmodule.exports.MatrixInMemoryStore = function MatrixInMemoryStore(opts) {\n opts = opts || {};\n this.rooms = {\n // roomId: Room\n };\n this.groups = {\n // groupId: Group\n };\n this.users = {\n // userId: User\n };\n this.syncToken = null;\n this.filters = {\n // userId: {\n // filterId: Filter\n // }\n };\n this.accountData = {\n // type : content\n };\n this.localStorage = opts.localStorage;\n this._oobMembers = {\n // roomId: [member events]\n };\n this._clientOptions = {};\n};\n\nmodule.exports.MatrixInMemoryStore.prototype = {\n\n /**\n * Retrieve the token to stream from.\n * @return {string} The token or null.\n */\n getSyncToken: function getSyncToken() {\n return this.syncToken;\n },\n\n /** @return {Promise<bool>} whether or not the database was newly created in this session. */\n isNewlyCreated: function isNewlyCreated() {\n return _bluebird2.default.resolve(true);\n },\n\n /**\n * Set the token to stream from.\n * @param {string} token The token to stream from.\n */\n setSyncToken: function setSyncToken(token) {\n this.syncToken = token;\n },\n\n /**\n * Store the given room.\n * @param {Group} group The group to be stored\n */\n storeGroup: function storeGroup(group) {\n this.groups[group.groupId] = group;\n },\n\n /**\n * Retrieve a group by its group ID.\n * @param {string} groupId The group ID.\n * @return {Group} The group or null.\n */\n getGroup: function getGroup(groupId) {\n return this.groups[groupId] || null;\n },\n\n /**\n * Retrieve all known groups.\n * @return {Group[]} A list of groups, which may be empty.\n */\n getGroups: function getGroups() {\n return utils.values(this.groups);\n },\n\n /**\n * Store the given room.\n * @param {Room} room The room to be stored. All properties must be stored.\n */\n storeRoom: function storeRoom(room) {\n this.rooms[room.roomId] = room;\n // add listeners for room member changes so we can keep the room member\n // map up-to-date.\n room.currentState.on(\"RoomState.members\", this._onRoomMember.bind(this));\n // add existing members\n var self = this;\n room.currentState.getMembers().forEach(function (m) {\n self._onRoomMember(null, room.currentState, m);\n });\n },\n\n /**\n * Called when a room member in a room being tracked by this store has been\n * updated.\n * @param {MatrixEvent} event\n * @param {RoomState} state\n * @param {RoomMember} member\n */\n _onRoomMember: function _onRoomMember(event, state, member) {\n if (member.membership === \"invite\") {\n // We do NOT add invited members because people love to typo user IDs\n // which would then show up in these lists (!)\n return;\n }\n\n var user = this.users[member.userId] || new User(member.userId);\n if (member.name) {\n user.setDisplayName(member.name);\n if (member.events.member) {\n user.setRawDisplayName(member.events.member.getDirectionalContent().displayname);\n }\n }\n if (member.events.member && member.events.member.getContent().avatar_url) {\n user.setAvatarUrl(member.events.member.getContent().avatar_url);\n }\n this.users[user.userId] = user;\n },\n\n /**\n * Retrieve a room by its' room ID.\n * @param {string} roomId The room ID.\n * @return {Room} The room or null.\n */\n getRoom: function getRoom(roomId) {\n return this.rooms[roomId] || null;\n },\n\n /**\n * Retrieve all known rooms.\n * @return {Room[]} A list of rooms, which may be empty.\n */\n getRooms: function getRooms() {\n return utils.values(this.rooms);\n },\n\n /**\n * Permanently delete a room.\n * @param {string} roomId\n */\n removeRoom: function removeRoom(roomId) {\n if (this.rooms[roomId]) {\n this.rooms[roomId].removeListener(\"RoomState.members\", this._onRoomMember);\n }\n delete this.rooms[roomId];\n },\n\n /**\n * Retrieve a summary of all the rooms.\n * @return {RoomSummary[]} A summary of each room.\n */\n getRoomSummaries: function getRoomSummaries() {\n return utils.map(utils.values(this.rooms), function (room) {\n return room.summary;\n });\n },\n\n /**\n * Store a User.\n * @param {User} user The user to store.\n */\n storeUser: function storeUser(user) {\n this.users[user.userId] = user;\n },\n\n /**\n * Retrieve a User by its' user ID.\n * @param {string} userId The user ID.\n * @return {User} The user or null.\n */\n getUser: function getUser(userId) {\n return this.users[userId] || null;\n },\n\n /**\n * Retrieve all known users.\n * @return {User[]} A list of users, which may be empty.\n */\n getUsers: function getUsers() {\n return utils.values(this.users);\n },\n\n /**\n * Retrieve scrollback for this room.\n * @param {Room} room The matrix room\n * @param {integer} limit The max number of old events to retrieve.\n * @return {Array<Object>} An array of objects which will be at most 'limit'\n * length and at least 0. The objects are the raw event JSON.\n */\n scrollback: function scrollback(room, limit) {\n return [];\n },\n\n /**\n * Store events for a room. The events have already been added to the timeline\n * @param {Room} room The room to store events for.\n * @param {Array<MatrixEvent>} events The events to store.\n * @param {string} token The token associated with these events.\n * @param {boolean} toStart True if these are paginated results.\n */\n storeEvents: function storeEvents(room, events, token, toStart) {\n // no-op because they've already been added to the room instance.\n },\n\n /**\n * Store a filter.\n * @param {Filter} filter\n */\n storeFilter: function storeFilter(filter) {\n if (!filter) {\n return;\n }\n if (!this.filters[filter.userId]) {\n this.filters[filter.userId] = {};\n }\n this.filters[filter.userId][filter.filterId] = filter;\n },\n\n /**\n * Retrieve a filter.\n * @param {string} userId\n * @param {string} filterId\n * @return {?Filter} A filter or null.\n */\n getFilter: function getFilter(userId, filterId) {\n if (!this.filters[userId] || !this.filters[userId][filterId]) {\n return null;\n }\n return this.filters[userId][filterId];\n },\n\n /**\n * Retrieve a filter ID with the given name.\n * @param {string} filterName The filter name.\n * @return {?string} The filter ID or null.\n */\n getFilterIdByName: function getFilterIdByName(filterName) {\n if (!this.localStorage) {\n return null;\n }\n try {\n return this.localStorage.getItem(\"mxjssdk_memory_filter_\" + filterName);\n } catch (e) {}\n return null;\n },\n\n /**\n * Set a filter name to ID mapping.\n * @param {string} filterName\n * @param {string} filterId\n */\n setFilterIdByName: function setFilterIdByName(filterName, filterId) {\n if (!this.localStorage) {\n return;\n }\n try {\n this.localStorage.setItem(\"mxjssdk_memory_filter_\" + filterName, filterId);\n } catch (e) {}\n },\n\n /**\n * Store user-scoped account data events.\n * N.B. that account data only allows a single event per type, so multiple\n * events with the same type will replace each other.\n * @param {Array<MatrixEvent>} events The events to store.\n */\n storeAccountDataEvents: function storeAccountDataEvents(events) {\n var self = this;\n events.forEach(function (event) {\n self.accountData[event.getType()] = event;\n });\n },\n\n /**\n * Get account data event by event type\n * @param {string} eventType The event type being queried\n * @return {?MatrixEvent} the user account_data event of given type, if any\n */\n getAccountData: function getAccountData(eventType) {\n return this.accountData[eventType];\n },\n\n /**\n * setSyncData does nothing as there is no backing data store.\n *\n * @param {Object} syncData The sync data\n * @return {Promise} An immediately resolved promise.\n */\n setSyncData: function setSyncData(syncData) {\n return _bluebird2.default.resolve();\n },\n\n /**\n * We never want to save becase we have nothing to save to.\n *\n * @return {boolean} If the store wants to save\n */\n wantsSave: function wantsSave() {\n return false;\n },\n\n /**\n * Save does nothing as there is no backing data store.\n */\n save: function save() {},\n\n /**\n * Startup does nothing as this store doesn't require starting up.\n * @return {Promise} An immediately resolved promise.\n */\n startup: function startup() {\n return _bluebird2.default.resolve();\n },\n\n /**\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\n getSavedSync: function getSavedSync() {\n return _bluebird2.default.resolve(null);\n },\n\n /**\n * @return {Promise} If there is a saved sync, the nextBatch token\n * for this sync, otherwise null.\n */\n getSavedSyncToken: function getSavedSyncToken() {\n return _bluebird2.default.resolve(null);\n },\n\n /**\n * Delete all data from this store.\n * @return {Promise} An immediately resolved promise.\n */\n deleteAllData: function deleteAllData() {\n this.rooms = {\n // roomId: Room\n };\n this.users = {\n // userId: User\n };\n this.syncToken = null;\n this.filters = {\n // userId: {\n // filterId: Filter\n // }\n };\n this.accountData = {\n // type : content\n };\n return _bluebird2.default.resolve();\n },\n /**\n * Returns the out-of-band membership events for this room that\n * were previously loaded.\n * @param {string} roomId\n * @returns {event[]} the events, potentially an empty array if OOB loading didn't yield any new members\n * @returns {null} in case the members for this room haven't been stored yet\n */\n getOutOfBandMembers: function getOutOfBandMembers(roomId) {\n return _bluebird2.default.resolve(this._oobMembers[roomId] || null);\n },\n /**\n * Stores the out-of-band membership events for this room. Note that\n * it still makes sense to store an empty array as the OOB status for the room is\n * marked as fetched, and getOutOfBandMembers will return an empty array instead of null\n * @param {string} roomId\n * @param {event[]} membershipEvents the membership events to store\n * @returns {Promise} when all members have been stored\n */\n setOutOfBandMembers: function setOutOfBandMembers(roomId, membershipEvents) {\n this._oobMembers[roomId] = membershipEvents;\n return _bluebird2.default.resolve();\n },\n\n getClientOptions: function getClientOptions() {\n return _bluebird2.default.resolve(this._clientOptions);\n },\n\n storeClientOptions: function storeClientOptions(options) {\n this._clientOptions = (0, _assign2.default)({}, options);\n return _bluebird2.default.resolve();\n }\n};\n//# sourceMappingURL=memory.js.map","\"use strict\";\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _memory = require(\"./memory\");\n\nvar _utils = require(\"../utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _indexeddbLocalBackend = require(\"./indexeddb-local-backend.js\");\n\nvar _indexeddbLocalBackend2 = _interopRequireDefault(_indexeddbLocalBackend);\n\nvar _indexeddbRemoteBackend = require(\"./indexeddb-remote-backend.js\");\n\nvar _indexeddbRemoteBackend2 = _interopRequireDefault(_indexeddbRemoteBackend);\n\nvar _user = require(\"../models/user\");\n\nvar _user2 = _interopRequireDefault(_user);\n\nvar _event = require(\"../models/event\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * This is an internal module. See {@link IndexedDBStore} for the public class.\n * @module store/indexeddb\n */\n\n// If this value is too small we'll be writing very often which will cause\n// noticable stop-the-world pauses. If this value is too big we'll be writing\n// so infrequently that the /sync size gets bigger on reload. Writing more\n// often does not affect the length of the pause since the entire /sync\n// response is persisted each time.\nvar WRITE_DELAY_MS = 1000 * 60 * 5; // once every 5 minutes\n\n\n/**\n * Construct a new Indexed Database store, which extends MatrixInMemoryStore.\n *\n * This store functions like a MatrixInMemoryStore except it periodically persists\n * the contents of the store to an IndexedDB backend.\n *\n * All data is still kept in-memory but can be loaded from disk by calling\n * <code>startup()</code>. This can make startup times quicker as a complete\n * sync from the server is not required. This does not reduce memory usage as all\n * the data is eagerly fetched when <code>startup()</code> is called.\n * <pre>\n * let opts = { localStorage: window.localStorage };\n * let store = new IndexedDBStore();\n * await store.startup(); // load from indexed db\n * let client = sdk.createClient({\n * store: store,\n * });\n * client.startClient();\n * client.on(\"sync\", function(state, prevState, data) {\n * if (state === \"PREPARED\") {\n * console.log(\"Started up, now with go faster stripes!\");\n * }\n * });\n * </pre>\n *\n * @constructor\n * @extends MatrixInMemoryStore\n * @param {Object} opts Options object.\n * @param {Object} opts.indexedDB The Indexed DB interface e.g.\n * <code>window.indexedDB</code>\n * @param {string=} opts.dbName Optional database name. The same name must be used\n * to open the same database.\n * @param {string=} opts.workerScript Optional URL to a script to invoke a web\n * worker with to run IndexedDB queries on the web worker. The IndexedDbStoreWorker\n * class is provided for this purpose and requires the application to provide a\n * trivial wrapper script around it.\n * @param {Object=} opts.workerApi The webWorker API object. If omitted, the global Worker\n * object will be used if it exists.\n * @prop {IndexedDBStoreBackend} backend The backend instance. Call through to\n * this API if you need to perform specific indexeddb actions like deleting the\n * database.\n */\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar IndexedDBStore = function IndexedDBStore(opts) {\n _memory.MatrixInMemoryStore.call(this, opts);\n\n if (!opts.indexedDB) {\n throw new Error('Missing required option: indexedDB');\n }\n\n if (opts.workerScript) {\n // try & find a webworker-compatible API\n var workerApi = opts.workerApi;\n if (!workerApi) {\n // default to the global Worker object (which is where it in a browser)\n workerApi = global.Worker;\n }\n this.backend = new _indexeddbRemoteBackend2.default(opts.workerScript, opts.dbName, workerApi);\n } else {\n this.backend = new _indexeddbLocalBackend2.default(opts.indexedDB, opts.dbName);\n }\n\n this.startedUp = false;\n this._syncTs = 0;\n\n // Records the last-modified-time of each user at the last point we saved\n // the database, such that we can derive the set if users that have been\n // modified since we last saved.\n this._userModifiedMap = {\n // user_id : timestamp\n };\n};\n_utils2.default.inherits(IndexedDBStore, _memory.MatrixInMemoryStore);\n\n/**\n * @return {Promise} Resolved when loaded from indexed db.\n */\nIndexedDBStore.prototype.startup = function () {\n var _this = this;\n\n if (this.startedUp) {\n console.log(\"IndexedDBStore.startup: already started\");\n return _bluebird2.default.resolve();\n }\n\n console.log(\"IndexedDBStore.startup: connecting to backend\");\n return this.backend.connect().then(function () {\n console.log(\"IndexedDBStore.startup: loading presence events\");\n return _this.backend.getUserPresenceEvents();\n }).then(function (userPresenceEvents) {\n console.log(\"IndexedDBStore.startup: processing presence events\");\n userPresenceEvents.forEach(function (_ref) {\n var _ref2 = (0, _slicedToArray3.default)(_ref, 2),\n userId = _ref2[0],\n rawEvent = _ref2[1];\n\n var u = new _user2.default(userId);\n if (rawEvent) {\n u.setPresenceEvent(new _event.MatrixEvent(rawEvent));\n }\n _this._userModifiedMap[u.userId] = u.getLastModifiedTime();\n _this.storeUser(u);\n });\n });\n};\n\n/**\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\nIndexedDBStore.prototype.getSavedSync = function () {\n return this.backend.getSavedSync();\n};\n\n/** @return {Promise<bool>} whether or not the database was newly created in this session. */\nIndexedDBStore.prototype.isNewlyCreated = function () {\n return this.backend.isNewlyCreated();\n};\n\n/**\n * @return {Promise} If there is a saved sync, the nextBatch token\n * for this sync, otherwise null.\n */\nIndexedDBStore.prototype.getSavedSyncToken = function () {\n return this.backend.getNextBatchToken();\n},\n\n/**\n * Delete all data from this store.\n * @return {Promise} Resolves if the data was deleted from the database.\n */\nIndexedDBStore.prototype.deleteAllData = function () {\n _memory.MatrixInMemoryStore.prototype.deleteAllData.call(this);\n return this.backend.clearDatabase().then(function () {\n console.log(\"Deleted indexeddb data.\");\n }, function (err) {\n console.error(\"Failed to delete indexeddb data: \" + err);\n throw err;\n });\n};\n\n/**\n * Whether this store would like to save its data\n * Note that obviously whether the store wants to save or\n * not could change between calling this function and calling\n * save().\n *\n * @return {boolean} True if calling save() will actually save\n * (at the time this function is called).\n */\nIndexedDBStore.prototype.wantsSave = function () {\n var now = Date.now();\n return now - this._syncTs > WRITE_DELAY_MS;\n};\n\n/**\n * Possibly write data to the database.\n * @return {Promise} Promise resolves after the write completes\n * (or immediately if no write is performed)\n */\nIndexedDBStore.prototype.save = function () {\n if (this.wantsSave()) {\n return this._reallySave();\n }\n return _bluebird2.default.resolve();\n};\n\nIndexedDBStore.prototype._reallySave = function () {\n this._syncTs = Date.now(); // set now to guard against multi-writes\n\n // work out changed users (this doesn't handle deletions but you\n // can't 'delete' users as they are just presence events).\n var userTuples = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this.getUsers()), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var u = _step.value;\n\n if (this._userModifiedMap[u.userId] === u.getLastModifiedTime()) continue;\n if (!u.events.presence) continue;\n\n userTuples.push([u.userId, u.events.presence.event]);\n\n // note that we've saved this version of the user\n this._userModifiedMap[u.userId] = u.getLastModifiedTime();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return this.backend.syncToDatabase(userTuples).catch(function (err) {\n console.error(\"sync fail:\", err);\n });\n};\n\nIndexedDBStore.prototype.setSyncData = function (syncData) {\n return this.backend.setSyncData(syncData);\n};\n\n/**\n * Returns the out-of-band membership events for this room that\n * were previously loaded.\n * @param {string} roomId\n * @returns {event[]} the events, potentially an empty array if OOB loading didn't yield any new members\n * @returns {null} in case the members for this room haven't been stored yet\n */\nIndexedDBStore.prototype.getOutOfBandMembers = function (roomId) {\n return this.backend.getOutOfBandMembers(roomId);\n};\n\n/**\n * Stores the out-of-band membership events for this room. Note that\n * it still makes sense to store an empty array as the OOB status for the room is\n * marked as fetched, and getOutOfBandMembers will return an empty array instead of null\n * @param {string} roomId\n * @param {event[]} membershipEvents the membership events to store\n * @returns {Promise} when all members have been stored\n */\nIndexedDBStore.prototype.setOutOfBandMembers = function (roomId, membershipEvents) {\n return this.backend.setOutOfBandMembers(roomId, membershipEvents);\n};\n\nIndexedDBStore.prototype.clearOutOfBandMembers = function (roomId) {\n return this.backend.clearOutOfBandMembers(roomId);\n};\n\nIndexedDBStore.prototype.getClientOptions = function () {\n return this.backend.getClientOptions();\n};\n\nIndexedDBStore.prototype.storeClientOptions = function (options) {\n return this.backend.storeClientOptions(options);\n};\n\nmodule.exports.IndexedDBStore = IndexedDBStore;\n//# sourceMappingURL=indexeddb.js.map","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _set = require(\"babel-runtime/core-js/set\");\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _entries = require(\"babel-runtime/core-js/object/entries\");\n\nvar _entries2 = _interopRequireDefault(_entries);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _setDeviceVerification = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(client, userId, deviceId, verified, blocked, known) {\n var dev;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (client._crypto) {\n _context2.next = 2;\n break;\n }\n\n throw new Error(\"End-to-End encryption disabled\");\n\n case 2:\n _context2.next = 4;\n return (0, _bluebird.resolve)(client._crypto.setDeviceVerification(userId, deviceId, verified, blocked, known));\n\n case 4:\n dev = _context2.sent;\n\n client.emit(\"deviceVerificationChanged\", userId, deviceId, dev);\n\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function _setDeviceVerification(_x4, _x5, _x6, _x7, _x8, _x9) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * Set the global override for whether the client should ever send encrypted\n * messages to unverified devices. This provides the default for rooms which\n * do not specify a value.\n *\n * @param {boolean} value whether to blacklist all unverified devices by default\n */\n\n\nvar _ReEmitter = require(\"./ReEmitter\");\n\nvar _ReEmitter2 = _interopRequireDefault(_ReEmitter);\n\nvar _RoomList = require(\"./crypto/RoomList\");\n\nvar _RoomList2 = _interopRequireDefault(_RoomList);\n\nvar _crypto = require(\"./crypto\");\n\nvar _crypto2 = _interopRequireDefault(_crypto);\n\nvar _recoverykey = require(\"./crypto/recoverykey\");\n\nvar _backup_password = require(\"./crypto/backup_password\");\n\nvar _randomstring = require(\"./randomstring\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PushProcessor = require('./pushprocessor');\n\n/**\n * This is an internal module. See {@link MatrixClient} for the public class.\n * @module client\n */\nvar EventEmitter = require(\"events\").EventEmitter;\n\nvar url = require('url');\n\nvar httpApi = require(\"./http-api\");\nvar MatrixEvent = require(\"./models/event\").MatrixEvent;\nvar EventStatus = require(\"./models/event\").EventStatus;\nvar EventTimeline = require(\"./models/event-timeline\");\nvar SearchResult = require(\"./models/search-result\");\nvar StubStore = require(\"./store/stub\");\nvar webRtcCall = require(\"./webrtc/call\");\nvar utils = require(\"./utils\");\nvar contentRepo = require(\"./content-repo\");\nvar Filter = require(\"./filter\");\nvar SyncApi = require(\"./sync\");\nvar MatrixBaseApis = require(\"./base-apis\");\nvar MatrixError = httpApi.MatrixError;\nvar ContentHelpers = require(\"./content-helpers\");\nvar olmlib = require(\"./crypto/olmlib\");\n\n// Disable warnings for now: we use deprecated bluebird functions\n// and need to migrate, but they spam the console with warnings.\n_bluebird2.default.config({ warnings: false });\n\nvar SCROLLBACK_DELAY_MS = 3000;\nvar CRYPTO_ENABLED = (0, _crypto.isCryptoAvailable)();\n\nfunction keysFromRecoverySession(sessions, decryptionKey, roomId) {\n var keys = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _entries2.default)(sessions)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _step$value = (0, _slicedToArray3.default)(_step.value, 2),\n sessionId = _step$value[0],\n sessionData = _step$value[1];\n\n try {\n var decrypted = keyFromRecoverySession(sessionData, decryptionKey);\n decrypted.session_id = sessionId;\n decrypted.room_id = roomId;\n keys.push(decrypted);\n } catch (e) {\n console.log(\"Failed to decrypt session from backup\");\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return keys;\n}\n\nfunction keyFromRecoverySession(session, decryptionKey) {\n return JSON.parse(decryptionKey.decrypt(session.session_data.ephemeral, session.session_data.mac, session.session_data.ciphertext));\n}\n\n/**\n * Construct a Matrix Client. Only directly construct this if you want to use\n * custom modules. Normally, {@link createClient} should be used\n * as it specifies 'sensible' defaults for these modules.\n * @constructor\n * @extends {external:EventEmitter}\n * @extends {module:base-apis~MatrixBaseApis}\n *\n * @param {Object} opts The configuration options for this client.\n * @param {string} opts.baseUrl Required. The base URL to the client-server\n * HTTP API.\n * @param {string} opts.idBaseUrl Optional. The base identity server URL for\n * identity server requests.\n * @param {Function} opts.request Required. The function to invoke for HTTP\n * requests. The value of this property is typically <code>require(\"request\")\n * </code> as it returns a function which meets the required interface. See\n * {@link requestFunction} for more information.\n *\n * @param {string} opts.accessToken The access_token for this user.\n *\n * @param {string} opts.userId The user ID for this user.\n *\n * @param {Object=} opts.store The data store to use. If not specified,\n * this client will not store any HTTP responses.\n *\n * @param {string=} opts.deviceId A unique identifier for this device; used for\n * tracking things like crypto keys and access tokens. If not specified,\n * end-to-end crypto will be disabled.\n *\n * @param {Object=} opts.sessionStore A store to be used for end-to-end crypto\n * session data. This should be a {@link\n * module:store/session/webstorage~WebStorageSessionStore|WebStorageSessionStore},\n * or an object implementing the same interface. If not specified,\n * end-to-end crypto will be disabled.\n *\n * @param {Object} opts.scheduler Optional. The scheduler to use. If not\n * specified, this client will not retry requests on failure. This client\n * will supply its own processing function to\n * {@link module:scheduler~MatrixScheduler#setProcessFunction}.\n *\n * @param {Object} opts.queryParams Optional. Extra query parameters to append\n * to all requests with this client. Useful for application services which require\n * <code>?user_id=</code>.\n *\n * @param {Number=} opts.localTimeoutMs Optional. The default maximum amount of\n * time to wait before timing out HTTP requests. If not specified, there is no timeout.\n *\n * @param {boolean} [opts.useAuthorizationHeader = false] Set to true to use\n * Authorization header instead of query param to send the access token to the server.\n *\n * @param {boolean} [opts.timelineSupport = false] Set to true to enable\n * improved timeline support ({@link\n * module:client~MatrixClient#getEventTimeline getEventTimeline}). It is\n * disabled by default for compatibility with older clients - in particular to\n * maintain support for back-paginating the live timeline after a '/sync'\n * result with a gap.\n *\n * @param {module:crypto.store.base~CryptoStore} opts.cryptoStore\n * crypto store implementation.\n */\nfunction MatrixClient(opts) {\n // Allow trailing slash in HS url\n if (opts.baseUrl && opts.baseUrl.endsWith(\"/\")) {\n opts.baseUrl = opts.baseUrl.substr(0, opts.baseUrl.length - 1);\n }\n\n // Allow trailing slash in IS url\n if (opts.idBaseUrl && opts.idBaseUrl.endsWith(\"/\")) {\n opts.idBaseUrl = opts.idBaseUrl.substr(0, opts.idBaseUrl.length - 1);\n }\n\n MatrixBaseApis.call(this, opts);\n\n this.olmVersion = null; // Populated after initCrypto is done\n\n this.reEmitter = new _ReEmitter2.default(this);\n\n this.store = opts.store || new StubStore();\n\n this.deviceId = opts.deviceId || null;\n\n var userId = opts.userId || null;\n this.credentials = {\n userId: userId\n };\n\n this.scheduler = opts.scheduler;\n if (this.scheduler) {\n var self = this;\n this.scheduler.setProcessFunction(function (eventToSend) {\n var room = self.getRoom(eventToSend.getRoomId());\n if (eventToSend.status !== EventStatus.SENDING) {\n _updatePendingEventStatus(room, eventToSend, EventStatus.SENDING);\n }\n return _sendEventHttpRequest(self, eventToSend);\n });\n }\n this.clientRunning = false;\n\n this.callList = {\n // callId: MatrixCall\n };\n\n // try constructing a MatrixCall to see if we are running in an environment\n // which has WebRTC. If we are, listen for and handle m.call.* events.\n var call = webRtcCall.createNewMatrixCall(this);\n this._supportsVoip = false;\n if (call) {\n setupCallEventHandler(this);\n this._supportsVoip = true;\n }\n this._syncingRetry = null;\n this._syncApi = null;\n this._peekSync = null;\n this._isGuest = false;\n this._ongoingScrollbacks = {};\n this.timelineSupport = Boolean(opts.timelineSupport);\n this.urlPreviewCache = {};\n this._notifTimelineSet = null;\n\n this._crypto = null;\n this._cryptoStore = opts.cryptoStore;\n this._sessionStore = opts.sessionStore;\n\n this._forceTURN = opts.forceTURN || false;\n\n // List of which rooms have encryption enabled: separate from crypto because\n // we still want to know which rooms are encrypted even if crypto is disabled:\n // we don't want to start sending unencrypted events to them.\n this._roomList = new _RoomList2.default(this._cryptoStore, this._sessionStore);\n\n // The pushprocessor caches useful things, so keep one and re-use it\n this._pushProcessor = new PushProcessor(this);\n\n this._serverSupportsLazyLoading = null;\n}\nutils.inherits(MatrixClient, EventEmitter);\nutils.extend(MatrixClient.prototype, MatrixBaseApis.prototype);\n\n/**\n * Clear any data out of the persistent stores used by the client.\n *\n * @returns {Promise} Promise which resolves when the stores have been cleared.\n */\nMatrixClient.prototype.clearStores = function () {\n if (this._clientRunning) {\n throw new Error(\"Cannot clear stores while client is running\");\n }\n\n var promises = [];\n\n promises.push(this.store.deleteAllData());\n if (this._cryptoStore) {\n promises.push(this._cryptoStore.deleteAllData());\n }\n return _bluebird2.default.all(promises);\n};\n\n/**\n * Get the user-id of the logged-in user\n *\n * @return {?string} MXID for the logged-in user, or null if not logged in\n */\nMatrixClient.prototype.getUserId = function () {\n if (this.credentials && this.credentials.userId) {\n return this.credentials.userId;\n }\n return null;\n};\n\n/**\n * Get the domain for this client's MXID\n * @return {?string} Domain of this MXID\n */\nMatrixClient.prototype.getDomain = function () {\n if (this.credentials && this.credentials.userId) {\n return this.credentials.userId.replace(/^.*?:/, '');\n }\n return null;\n};\n\n/**\n * Get the local part of the current user ID e.g. \"foo\" in \"@foo:bar\".\n * @return {?string} The user ID localpart or null.\n */\nMatrixClient.prototype.getUserIdLocalpart = function () {\n if (this.credentials && this.credentials.userId) {\n return this.credentials.userId.split(\":\")[0].substring(1);\n }\n return null;\n};\n\n/**\n * Get the device ID of this client\n * @return {?string} device ID\n */\nMatrixClient.prototype.getDeviceId = function () {\n return this.deviceId;\n};\n\n/**\n * Check if the runtime environment supports VoIP calling.\n * @return {boolean} True if VoIP is supported.\n */\nMatrixClient.prototype.supportsVoip = function () {\n return this._supportsVoip;\n};\n\n/**\n * Set whether VoIP calls are forced to use only TURN\n * candidates. This is the same as the forceTURN option\n * when creating the client.\n * @param {bool} forceTURN True to force use of TURN servers\n */\nMatrixClient.prototype.setForceTURN = function (forceTURN) {\n this._forceTURN = forceTURN;\n};\n\n/**\n * Get the current sync state.\n * @return {?string} the sync state, which may be null.\n * @see module:client~MatrixClient#event:\"sync\"\n */\nMatrixClient.prototype.getSyncState = function () {\n if (!this._syncApi) {\n return null;\n }\n return this._syncApi.getSyncState();\n};\n\n/**\n * Returns the additional data object associated with\n * the current sync state, or null if there is no\n * such data.\n * Sync errors, if available, are put in the 'error' key of\n * this object.\n * @return {?Object}\n */\nMatrixClient.prototype.getSyncStateData = function () {\n if (!this._syncApi) {\n return null;\n }\n return this._syncApi.getSyncStateData();\n};\n\n/**\n * Return whether the client is configured for a guest account.\n * @return {boolean} True if this is a guest access_token (or no token is supplied).\n */\nMatrixClient.prototype.isGuest = function () {\n return this._isGuest;\n};\n\n/**\n * Return the provided scheduler, if any.\n * @return {?module:scheduler~MatrixScheduler} The scheduler or null\n */\nMatrixClient.prototype.getScheduler = function () {\n return this.scheduler;\n};\n\n/**\n * Set whether this client is a guest account. <b>This method is experimental\n * and may change without warning.</b>\n * @param {boolean} isGuest True if this is a guest account.\n */\nMatrixClient.prototype.setGuest = function (isGuest) {\n // EXPERIMENTAL:\n // If the token is a macaroon, it should be encoded in it that it is a 'guest'\n // access token, which means that the SDK can determine this entirely without\n // the dev manually flipping this flag.\n this._isGuest = isGuest;\n};\n\n/**\n * Retry a backed off syncing request immediately. This should only be used when\n * the user <b>explicitly</b> attempts to retry their lost connection.\n * @return {boolean} True if this resulted in a request being retried.\n */\nMatrixClient.prototype.retryImmediately = function () {\n return this._syncApi.retryImmediately();\n};\n\n/**\n * Return the global notification EventTimelineSet, if any\n *\n * @return {EventTimelineSet} the globl notification EventTimelineSet\n */\nMatrixClient.prototype.getNotifTimelineSet = function () {\n return this._notifTimelineSet;\n};\n\n/**\n * Set the global notification EventTimelineSet\n *\n * @param {EventTimelineSet} notifTimelineSet\n */\nMatrixClient.prototype.setNotifTimelineSet = function (notifTimelineSet) {\n this._notifTimelineSet = notifTimelineSet;\n};\n\n// Crypto bits\n// ===========\n\n/**\n * Initialise support for end-to-end encryption in this client\n *\n * You should call this method after creating the matrixclient, but *before*\n * calling `startClient`, if you want to support end-to-end encryption.\n *\n * It will return a Promise which will resolve when the crypto layer has been\n * successfully initialised.\n */\nMatrixClient.prototype.initCrypto = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var userId, crypto;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if ((0, _crypto.isCryptoAvailable)()) {\n _context.next = 2;\n break;\n }\n\n throw new Error(\"End-to-end encryption not supported in this js-sdk build: did \" + \"you remember to load the olm library?\");\n\n case 2:\n if (!this._crypto) {\n _context.next = 5;\n break;\n }\n\n console.warn(\"Attempt to re-initialise e2e encryption on MatrixClient\");\n return _context.abrupt(\"return\");\n\n case 5:\n if (this._sessionStore) {\n _context.next = 7;\n break;\n }\n\n throw new Error(\"Cannot enable encryption: no sessionStore provided\");\n\n case 7:\n if (this._cryptoStore) {\n _context.next = 9;\n break;\n }\n\n throw new Error(\"Cannot enable encryption: no cryptoStore provided\");\n\n case 9:\n _context.next = 11;\n return (0, _bluebird.resolve)(this._roomList.init());\n\n case 11:\n userId = this.getUserId();\n\n if (!(userId === null)) {\n _context.next = 14;\n break;\n }\n\n throw new Error(\"Cannot enable encryption on MatrixClient with unknown userId: \" + \"ensure userId is passed in createClient().\");\n\n case 14:\n if (!(this.deviceId === null)) {\n _context.next = 16;\n break;\n }\n\n throw new Error(\"Cannot enable encryption on MatrixClient with unknown deviceId: \" + \"ensure deviceId is passed in createClient().\");\n\n case 16:\n crypto = new _crypto2.default(this, this._sessionStore, userId, this.deviceId, this.store, this._cryptoStore, this._roomList);\n\n\n this.reEmitter.reEmit(crypto, [\"crypto.keyBackupFailed\", \"crypto.roomKeyRequest\", \"crypto.roomKeyRequestCancellation\", \"crypto.warning\"]);\n\n _context.next = 20;\n return (0, _bluebird.resolve)(crypto.init());\n\n case 20:\n\n this.olmVersion = _crypto2.default.getOlmVersion();\n\n // if crypto initialisation was successful, tell it to attach its event\n // handlers.\n crypto.registerEventHandlers(this);\n this._crypto = crypto;\n\n case 23:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n}));\n\n/**\n * Is end-to-end crypto enabled for this client.\n * @return {boolean} True if end-to-end is enabled.\n */\nMatrixClient.prototype.isCryptoEnabled = function () {\n return this._crypto !== null;\n};\n\n/**\n * Get the Ed25519 key for this device\n *\n * @return {?string} base64-encoded ed25519 key. Null if crypto is\n * disabled.\n */\nMatrixClient.prototype.getDeviceEd25519Key = function () {\n if (!this._crypto) {\n return null;\n }\n return this._crypto.getDeviceEd25519Key();\n};\n\n/**\n * Upload the device keys to the homeserver.\n * @return {object} A promise that will resolve when the keys are uploaded.\n */\nMatrixClient.prototype.uploadKeys = function () {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n\n return this._crypto.uploadDeviceKeys();\n};\n\n/**\n * Download the keys for a list of users and stores the keys in the session\n * store.\n * @param {Array} userIds The users to fetch.\n * @param {bool} forceDownload Always download the keys even if cached.\n *\n * @return {Promise} A promise which resolves to a map userId->deviceId->{@link\n * module:crypto~DeviceInfo|DeviceInfo}.\n */\nMatrixClient.prototype.downloadKeys = function (userIds, forceDownload) {\n if (this._crypto === null) {\n return _bluebird2.default.reject(new Error(\"End-to-end encryption disabled\"));\n }\n return this._crypto.downloadKeys(userIds, forceDownload);\n};\n\n/**\n * Get the stored device keys for a user id\n *\n * @param {string} userId the user to list keys for.\n *\n * @return {Promise<module:crypto-deviceinfo[]>} list of devices\n */\nMatrixClient.prototype.getStoredDevicesForUser = function () {\n var _ref2 = (0, _bluebird.method)(function (userId) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n return this._crypto.getStoredDevicesForUser(userId) || [];\n });\n\n return function (_x) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * Get the stored device key for a user id and device id\n *\n * @param {string} userId the user to list keys for.\n * @param {string} deviceId unique identifier for the device\n *\n * @return {Promise<?module:crypto-deviceinfo>} device or null\n */\nMatrixClient.prototype.getStoredDevice = function () {\n var _ref3 = (0, _bluebird.method)(function (userId, deviceId) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n return this._crypto.getStoredDevice(userId, deviceId) || null;\n });\n\n return function (_x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * Mark the given device as verified\n *\n * @param {string} userId owner of the device\n * @param {string} deviceId unique identifier for the device\n *\n * @param {boolean=} verified whether to mark the device as verified. defaults\n * to 'true'.\n *\n * @returns {Promise}\n *\n * @fires module:client~event:MatrixClient\"deviceVerificationChanged\"\n */\nMatrixClient.prototype.setDeviceVerified = function (userId, deviceId, verified) {\n if (verified === undefined) {\n verified = true;\n }\n var prom = _setDeviceVerification(this, userId, deviceId, verified, null);\n\n // if one of the user's own devices is being marked as verified / unverified,\n // check the key backup status, since whether or not we use this depends on\n // whether it has a signature from a verified device\n if (userId == this.credentials.userId) {\n this._crypto.checkKeyBackup();\n }\n return prom;\n};\n\n/**\n * Mark the given device as blocked/unblocked\n *\n * @param {string} userId owner of the device\n * @param {string} deviceId unique identifier for the device\n *\n * @param {boolean=} blocked whether to mark the device as blocked. defaults\n * to 'true'.\n *\n * @returns {Promise}\n *\n * @fires module:client~event:MatrixClient\"deviceVerificationChanged\"\n */\nMatrixClient.prototype.setDeviceBlocked = function (userId, deviceId, blocked) {\n if (blocked === undefined) {\n blocked = true;\n }\n return _setDeviceVerification(this, userId, deviceId, null, blocked);\n};\n\n/**\n * Mark the given device as known/unknown\n *\n * @param {string} userId owner of the device\n * @param {string} deviceId unique identifier for the device\n *\n * @param {boolean=} known whether to mark the device as known. defaults\n * to 'true'.\n *\n * @returns {Promise}\n *\n * @fires module:client~event:MatrixClient\"deviceVerificationChanged\"\n */\nMatrixClient.prototype.setDeviceKnown = function (userId, deviceId, known) {\n if (known === undefined) {\n known = true;\n }\n return _setDeviceVerification(this, userId, deviceId, null, null, known);\n};\n\nMatrixClient.prototype.setGlobalBlacklistUnverifiedDevices = function (value) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n this._crypto.setGlobalBlacklistUnverifiedDevices(value);\n};\n\n/**\n * @return {boolean} whether to blacklist all unverified devices by default\n */\nMatrixClient.prototype.getGlobalBlacklistUnverifiedDevices = function () {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n return this._crypto.getGlobalBlacklistUnverifiedDevices();\n};\n\n/**\n * Get e2e information on the device that sent an event\n *\n * @param {MatrixEvent} event event to be checked\n *\n * @return {Promise<module:crypto/deviceinfo?>}\n */\nMatrixClient.prototype.getEventSenderDeviceInfo = function () {\n var _ref5 = (0, _bluebird.method)(function (event) {\n if (!this._crypto) {\n return null;\n }\n\n return this._crypto.getEventSenderDeviceInfo(event);\n });\n\n return function (_x10) {\n return _ref5.apply(this, arguments);\n };\n}();\n\n/**\n * Check if the sender of an event is verified\n *\n * @param {MatrixEvent} event event to be checked\n *\n * @return {boolean} true if the sender of this event has been verified using\n * {@link module:client~MatrixClient#setDeviceVerified|setDeviceVerified}.\n */\nMatrixClient.prototype.isEventSenderVerified = function () {\n var _ref6 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(event) {\n var device;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return (0, _bluebird.resolve)(this.getEventSenderDeviceInfo(event));\n\n case 2:\n device = _context3.sent;\n\n if (device) {\n _context3.next = 5;\n break;\n }\n\n return _context3.abrupt(\"return\", false);\n\n case 5:\n return _context3.abrupt(\"return\", device.isVerified());\n\n case 6:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function (_x11) {\n return _ref6.apply(this, arguments);\n };\n}();\n\n/**\n * Cancel a room key request for this event if one is ongoing and resend the\n * request.\n * @param {MatrixEvent} event event of which to cancel and resend the room\n * key request.\n */\nMatrixClient.prototype.cancelAndResendEventRoomKeyRequest = function (event) {\n event.cancelAndResendKeyRequest(this._crypto);\n};\n\n/**\n * Enable end-to-end encryption for a room.\n * @param {string} roomId The room ID to enable encryption in.\n * @param {object} config The encryption config for the room.\n * @return {Promise} A promise that will resolve when encryption is set up.\n */\nMatrixClient.prototype.setRoomEncryption = function (roomId, config) {\n if (!this._crypto) {\n throw new Error(\"End-to-End encryption disabled\");\n }\n return this._crypto.setRoomEncryption(roomId, config);\n};\n\n/**\n * Whether encryption is enabled for a room.\n * @param {string} roomId the room id to query.\n * @return {bool} whether encryption is enabled.\n */\nMatrixClient.prototype.isRoomEncrypted = function (roomId) {\n var room = this.getRoom(roomId);\n if (!room) {\n // we don't know about this room, so can't determine if it should be\n // encrypted. Let's assume not.\n return false;\n }\n\n // if there is an 'm.room.encryption' event in this room, it should be\n // encrypted (independently of whether we actually support encryption)\n var ev = room.currentState.getStateEvents(\"m.room.encryption\", \"\");\n if (ev) {\n return true;\n }\n\n // we don't have an m.room.encrypted event, but that might be because\n // the server is hiding it from us. Check the store to see if it was\n // previously encrypted.\n return this._roomList.isRoomEncrypted(roomId);\n};\n\n/**\n * Forces the current outbound group session to be discarded such\n * that another one will be created next time an event is sent.\n *\n * @param {string} roomId The ID of the room to discard the session for\n *\n * This should not normally be necessary.\n */\nMatrixClient.prototype.forceDiscardSession = function (roomId) {\n if (!this._crypto) {\n throw new Error(\"End-to-End encryption disabled\");\n }\n this._crypto.forceDiscardSession(roomId);\n};\n\n/**\n * Get a list containing all of the room keys\n *\n * This should be encrypted before returning it to the user.\n *\n * @return {module:client.Promise} a promise which resolves to a list of\n * session export objects\n */\nMatrixClient.prototype.exportRoomKeys = function () {\n if (!this._crypto) {\n return _bluebird2.default.reject(new Error(\"End-to-end encryption disabled\"));\n }\n return this._crypto.exportRoomKeys();\n};\n\n/**\n * Import a list of room keys previously exported by exportRoomKeys\n *\n * @param {Object[]} keys a list of session export objects\n *\n * @return {module:client.Promise} a promise which resolves when the keys\n * have been imported\n */\nMatrixClient.prototype.importRoomKeys = function (keys) {\n if (!this._crypto) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n return this._crypto.importRoomKeys(keys);\n};\n\n/**\n * Get information about the current key backup.\n * @returns {Promise} Information object from API or null\n */\nMatrixClient.prototype.getKeyBackupVersion = function () {\n return this._http.authedRequest(undefined, \"GET\", \"/room_keys/version\").then(function (res) {\n if (res.algorithm !== olmlib.MEGOLM_BACKUP_ALGORITHM) {\n var err = \"Unknown backup algorithm: \" + res.algorithm;\n return _bluebird2.default.reject(err);\n } else if (!((0, _typeof3.default)(res.auth_data) === \"object\") || !res.auth_data.public_key) {\n var _err = \"Invalid backup data returned\";\n return _bluebird2.default.reject(_err);\n } else {\n return res;\n }\n }).catch(function (e) {\n if (e.errcode === 'M_NOT_FOUND') {\n return null;\n } else {\n throw e;\n }\n });\n};\n\n/**\n * @param {object} info key backup info dict from getKeyBackupVersion()\n * @return {object} {\n * usable: [bool], // is the backup trusted, true iff there is a sig that is valid & from a trusted device\n * sigs: [\n * valid: [bool],\n * device: [DeviceInfo],\n * ]\n * }\n */\nMatrixClient.prototype.isKeyBackupTrusted = function (info) {\n return this._crypto.isKeyBackupTrusted(info);\n};\n\n/**\n * @returns {bool} true if the client is configured to back up keys to\n * the server, otherwise false.\n */\nMatrixClient.prototype.getKeyBackupEnabled = function () {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n return Boolean(this._crypto.backupKey);\n};\n\n/**\n * Enable backing up of keys, using data previously returned from\n * getKeyBackupVersion.\n *\n * @param {object} info Backup information object as returned by getKeyBackupVersion\n */\nMatrixClient.prototype.enableKeyBackup = function (info) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n\n this._crypto.backupInfo = info;\n if (this._crypto.backupKey) this._crypto.backupKey.free();\n this._crypto.backupKey = new global.Olm.PkEncryption();\n this._crypto.backupKey.set_recipient_key(info.auth_data.public_key);\n\n this.emit('crypto.keyBackupStatus', true);\n};\n\n/**\n * Disable backing up of keys.\n */\nMatrixClient.prototype.disableKeyBackup = function () {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n\n this._crypto.backupInfo = null;\n if (this._crypto.backupKey) this._crypto.backupKey.free();\n this._crypto.backupKey = null;\n\n this.emit('crypto.keyBackupStatus', false);\n};\n\n/**\n * Set up the data required to create a new backup version. The backup version\n * will not be created and enabled until createKeyBackupVersion is called.\n *\n * @param {string} password Passphrase string that can be entered by the user\n * when restoring the backup as an alternative to entering the recovery key.\n * Optional.\n *\n * @returns {Promise<object>} Object that can be passed to createKeyBackupVersion and\n * additionally has a 'recovery_key' member with the user-facing recovery key string.\n */\nMatrixClient.prototype.prepareKeyBackupVersion = function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(password) {\n var decryption, publicKey, authData, keyInfo;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!(this._crypto === null)) {\n _context4.next = 2;\n break;\n }\n\n throw new Error(\"End-to-end encryption disabled\");\n\n case 2:\n decryption = new global.Olm.PkDecryption();\n _context4.prev = 3;\n publicKey = void 0;\n authData = {};\n\n if (!password) {\n _context4.next = 15;\n break;\n }\n\n _context4.next = 9;\n return (0, _bluebird.resolve)((0, _backup_password.keyForNewBackup)(password));\n\n case 9:\n keyInfo = _context4.sent;\n\n publicKey = decryption.init_with_private_key(keyInfo.key);\n authData.private_key_salt = keyInfo.salt;\n authData.private_key_iterations = keyInfo.iterations;\n _context4.next = 16;\n break;\n\n case 15:\n publicKey = decryption.generate_key();\n\n case 16:\n\n authData.public_key = publicKey;\n\n return _context4.abrupt(\"return\", {\n algorithm: olmlib.MEGOLM_BACKUP_ALGORITHM,\n auth_data: authData,\n recovery_key: (0, _recoverykey.encodeRecoveryKey)(decryption.get_private_key())\n });\n\n case 18:\n _context4.prev = 18;\n\n decryption.free();\n return _context4.finish(18);\n\n case 21:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this, [[3,, 18, 21]]);\n }));\n\n return function (_x12) {\n return _ref7.apply(this, arguments);\n };\n}();\n\n/**\n * Create a new key backup version and enable it, using the information return\n * from prepareKeyBackupVersion.\n *\n * @param {object} info Info object from prepareKeyBackupVersion\n * @returns {Promise<object>} Object with 'version' param indicating the version created\n */\nMatrixClient.prototype.createKeyBackupVersion = function (info) {\n var _this = this;\n\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n\n var data = {\n algorithm: info.algorithm,\n auth_data: info.auth_data\n };\n return this._crypto._signObject(data.auth_data).then(function () {\n return _this._http.authedRequest(undefined, \"POST\", \"/room_keys/version\", undefined, data);\n }).then(function (res) {\n _this.enableKeyBackup({\n algorithm: info.algorithm,\n auth_data: info.auth_data,\n version: res.version\n });\n return res;\n });\n};\n\nMatrixClient.prototype.deleteKeyBackupVersion = function (version) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n\n // If we're currently backing up to this backup... stop.\n // (We start using it automatically in createKeyBackupVersion\n // so this is symmetrical).\n if (this._crypto.backupInfo && this._crypto.backupInfo.version === version) {\n this.disableKeyBackup();\n }\n\n var path = utils.encodeUri(\"/room_keys/version/$version\", {\n $version: version\n });\n\n return this._http.authedRequest(undefined, \"DELETE\", path, undefined, undefined);\n};\n\nMatrixClient.prototype._makeKeyBackupPath = function (roomId, sessionId, version) {\n var path = void 0;\n if (sessionId !== undefined) {\n path = utils.encodeUri(\"/room_keys/keys/$roomId/$sessionId\", {\n $roomId: roomId,\n $sessionId: sessionId\n });\n } else if (roomId !== undefined) {\n path = utils.encodeUri(\"/room_keys/keys/$roomId\", {\n $roomId: roomId\n });\n } else {\n path = \"/room_keys/keys\";\n }\n var queryData = version === undefined ? undefined : { version: version };\n return {\n path: path,\n queryData: queryData\n };\n};\n\n/**\n * Back up session keys to the homeserver.\n * @param {string} roomId ID of the room that the keys are for Optional.\n * @param {string} sessionId ID of the session that the keys are for Optional.\n * @param {integer} version backup version Optional.\n * @param {object} data Object keys to send\n * @return {module:client.Promise} a promise that will resolve when the keys\n * are uploaded\n */\nMatrixClient.prototype.sendKeyBackup = function (roomId, sessionId, version, data) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n\n var path = this._makeKeyBackupPath(roomId, sessionId, version);\n return this._http.authedRequest(undefined, \"PUT\", path.path, path.queryData, data);\n};\n\nMatrixClient.prototype.backupAllGroupSessions = function (version) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n\n return this._crypto.backupAllGroupSessions(version);\n};\n\nMatrixClient.prototype.isValidRecoveryKey = function (recoveryKey) {\n try {\n (0, _recoverykey.decodeRecoveryKey)(recoveryKey);\n return true;\n } catch (e) {\n return false;\n }\n};\n\nMatrixClient.prototype.restoreKeyBackupWithPassword = function () {\n var _ref8 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(password, targetRoomId, targetSessionId, version) {\n var backupInfo, privKey;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return (0, _bluebird.resolve)(this.getKeyBackupVersion());\n\n case 2:\n backupInfo = _context5.sent;\n _context5.next = 5;\n return (0, _bluebird.resolve)((0, _backup_password.keyForExistingBackup)(backupInfo, password));\n\n case 5:\n privKey = _context5.sent;\n return _context5.abrupt(\"return\", this._restoreKeyBackup(privKey, targetRoomId, targetSessionId, version));\n\n case 7:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n return function (_x13, _x14, _x15, _x16) {\n return _ref8.apply(this, arguments);\n };\n}();\n\nMatrixClient.prototype.restoreKeyBackupWithRecoveryKey = function (recoveryKey, targetRoomId, targetSessionId, version) {\n var privKey = (0, _recoverykey.decodeRecoveryKey)(recoveryKey);\n return this._restoreKeyBackup(privKey, targetRoomId, targetSessionId, version);\n};\n\nMatrixClient.prototype._restoreKeyBackup = function (privKey, targetRoomId, targetSessionId, version) {\n var _this2 = this;\n\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n var totalKeyCount = 0;\n var keys = [];\n\n var path = this._makeKeyBackupPath(targetRoomId, targetSessionId, version);\n\n var decryption = new global.Olm.PkDecryption();\n try {\n decryption.init_with_private_key(privKey);\n } catch (e) {\n decryption.free();\n throw e;\n }\n\n return this._http.authedRequest(undefined, \"GET\", path.path, path.queryData).then(function (res) {\n if (res.rooms) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _entries2.default)(res.rooms)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _step2$value = (0, _slicedToArray3.default)(_step2.value, 2),\n roomId = _step2$value[0],\n roomData = _step2$value[1];\n\n if (!roomData.sessions) continue;\n\n totalKeyCount += (0, _keys2.default)(roomData.sessions).length;\n var roomKeys = keysFromRecoverySession(roomData.sessions, decryption, roomId, roomKeys);\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(roomKeys), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var k = _step3.value;\n\n k.room_id = roomId;\n keys.push(k);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n } else if (res.sessions) {\n totalKeyCount = (0, _keys2.default)(res.sessions).length;\n keys = keysFromRecoverySession(res.sessions, decryption, targetRoomId, keys);\n } else {\n totalKeyCount = 1;\n try {\n var key = keyFromRecoverySession(res, decryption);\n key.room_id = targetRoomId;\n key.session_id = targetSessionId;\n keys.push(key);\n } catch (e) {\n console.log(\"Failed to decrypt session from backup\");\n }\n }\n\n return _this2.importRoomKeys(keys);\n }).then(function () {\n return { total: totalKeyCount, imported: keys.length };\n }).finally(function () {\n decryption.free();\n });\n};\n\nMatrixClient.prototype.deleteKeysFromBackup = function (roomId, sessionId, version) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n\n var path = this._makeKeyBackupPath(roomId, sessionId, version);\n return this._http.authedRequest(undefined, \"DELETE\", path.path, path.queryData);\n};\n\n// Group ops\n// =========\n// Operations on groups that come down the sync stream (ie. ones the\n// user is a member of or invited to)\n\n/**\n * Get the group for the given group ID.\n * This function will return a valid group for any group for which a Group event\n * has been emitted.\n * @param {string} groupId The group ID\n * @return {Group} The Group or null if the group is not known or there is no data store.\n */\nMatrixClient.prototype.getGroup = function (groupId) {\n return this.store.getGroup(groupId);\n};\n\n/**\n * Retrieve all known groups.\n * @return {Group[]} A list of groups, or an empty list if there is no data store.\n */\nMatrixClient.prototype.getGroups = function () {\n return this.store.getGroups();\n};\n\n/**\n * Get the config for the media repository.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves with an object containing the config.\n */\nMatrixClient.prototype.getMediaConfig = function (callback) {\n return this._http.authedRequestWithPrefix(callback, \"GET\", \"/config\", undefined, undefined, httpApi.PREFIX_MEDIA_R0);\n};\n\n// Room ops\n// ========\n\n/**\n * Get the room for the given room ID.\n * This function will return a valid room for any room for which a Room event\n * has been emitted. Note in particular that other events, eg. RoomState.members\n * will be emitted for a room before this function will return the given room.\n * @param {string} roomId The room ID\n * @return {Room} The Room or null if it doesn't exist or there is no data store.\n */\nMatrixClient.prototype.getRoom = function (roomId) {\n return this.store.getRoom(roomId);\n};\n\n/**\n * Retrieve all known rooms.\n * @return {Room[]} A list of rooms, or an empty list if there is no data store.\n */\nMatrixClient.prototype.getRooms = function () {\n return this.store.getRooms();\n};\n\n/**\n * Retrieve all rooms that should be displayed to the user\n * This is essentially getRooms() with some rooms filtered out, eg. old versions\n * of rooms that have been replaced or (in future) other rooms that have been\n * marked at the protocol level as not to be displayed to the user.\n * @return {Room[]} A list of rooms, or an empty list if there is no data store.\n */\nMatrixClient.prototype.getVisibleRooms = function () {\n var allRooms = this.store.getRooms();\n\n var replacedRooms = new _set2.default();\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)(allRooms), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var r = _step4.value;\n\n var createEvent = r.currentState.getStateEvents('m.room.create', '');\n // invites are included in this list and we don't know their create events yet\n if (createEvent) {\n var predecessor = createEvent.getContent()['predecessor'];\n if (predecessor && predecessor['room_id']) {\n replacedRooms.add(predecessor['room_id']);\n }\n }\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n return allRooms.filter(function (r) {\n var tombstone = r.currentState.getStateEvents('m.room.tombstone', '');\n if (tombstone && replacedRooms.has(r.roomId)) {\n return false;\n }\n return true;\n });\n};\n\n/**\n * Retrieve a user.\n * @param {string} userId The user ID to retrieve.\n * @return {?User} A user or null if there is no data store or the user does\n * not exist.\n */\nMatrixClient.prototype.getUser = function (userId) {\n return this.store.getUser(userId);\n};\n\n/**\n * Retrieve all known users.\n * @return {User[]} A list of users, or an empty list if there is no data store.\n */\nMatrixClient.prototype.getUsers = function () {\n return this.store.getUsers();\n};\n\n// User Account Data operations\n// ============================\n\n/**\n * Set account data event for the current user.\n * @param {string} eventType The event type\n * @param {Object} contents the contents object for the event\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setAccountData = function (eventType, contents, callback) {\n var path = utils.encodeUri(\"/user/$userId/account_data/$type\", {\n $userId: this.credentials.userId,\n $type: eventType\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, contents);\n};\n\n/**\n * Get account data event of given type for the current user.\n * @param {string} eventType The event type\n * @return {?object} The contents of the given account data event\n */\nMatrixClient.prototype.getAccountData = function (eventType) {\n return this.store.getAccountData(eventType);\n};\n\n/**\n * Gets the users that are ignored by this client\n * @returns {string[]} The array of users that are ignored (empty if none)\n */\nMatrixClient.prototype.getIgnoredUsers = function () {\n var event = this.getAccountData(\"m.ignored_user_list\");\n if (!event || !event.getContent() || !event.getContent()[\"ignored_users\"]) return [];\n return (0, _keys2.default)(event.getContent()[\"ignored_users\"]);\n};\n\n/**\n * Sets the users that the current user should ignore.\n * @param {string[]} userIds the user IDs to ignore\n * @param {module:client.callback} [callback] Optional.\n * @return {module:client.Promise} Resolves: Account data event\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setIgnoredUsers = function (userIds, callback) {\n var content = { ignored_users: {} };\n userIds.map(function (u) {\n return content.ignored_users[u] = {};\n });\n return this.setAccountData(\"m.ignored_user_list\", content, callback);\n};\n\n/**\n * Gets whether or not a specific user is being ignored by this client.\n * @param {string} userId the user ID to check\n * @returns {boolean} true if the user is ignored, false otherwise\n */\nMatrixClient.prototype.isUserIgnored = function (userId) {\n return this.getIgnoredUsers().indexOf(userId) !== -1;\n};\n\n// Room operations\n// ===============\n\n/**\n * Join a room. If you have already joined the room, this will no-op.\n * @param {string} roomIdOrAlias The room ID or room alias to join.\n * @param {Object} opts Options when joining the room.\n * @param {boolean} opts.syncRoom True to do a room initial sync on the resulting\n * room. If false, the <strong>returned Room object will have no current state.\n * </strong> Default: true.\n * @param {boolean} opts.inviteSignUrl If the caller has a keypair 3pid invite,\n * the signing URL is passed in this parameter.\n * @param {string[]} opts.viaServers The server names to try and join through in\n * addition to those that are automatically chosen.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Room object.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.joinRoom = function (roomIdOrAlias, opts, callback) {\n // to help people when upgrading..\n if (utils.isFunction(opts)) {\n throw new Error(\"Expected 'opts' object, got function.\");\n }\n opts = opts || {};\n if (opts.syncRoom === undefined) {\n opts.syncRoom = true;\n }\n\n var room = this.getRoom(roomIdOrAlias);\n if (room && room.hasMembershipState(this.credentials.userId, \"join\")) {\n return _bluebird2.default.resolve(room);\n }\n\n var sign_promise = _bluebird2.default.resolve();\n\n if (opts.inviteSignUrl) {\n sign_promise = this._http.requestOtherUrl(undefined, 'POST', opts.inviteSignUrl, { mxid: this.credentials.userId });\n }\n\n var queryString = {};\n if (opts.viaServers) {\n queryString[\"server_name\"] = opts.viaServers;\n }\n\n var reqOpts = { qsStringifyOptions: { arrayFormat: 'repeat' } };\n\n var defer = _bluebird2.default.defer();\n\n var self = this;\n sign_promise.then(function (signed_invite_object) {\n var data = {};\n if (signed_invite_object) {\n data.third_party_signed = signed_invite_object;\n }\n\n var path = utils.encodeUri(\"/join/$roomid\", { $roomid: roomIdOrAlias });\n return self._http.authedRequest(undefined, \"POST\", path, queryString, data, reqOpts);\n }).then(function (res) {\n var roomId = res.room_id;\n var syncApi = new SyncApi(self, self._clientOpts);\n var room = syncApi.createRoom(roomId);\n if (opts.syncRoom) {\n // v2 will do this for us\n // return syncApi.syncRoom(room);\n }\n return _bluebird2.default.resolve(room);\n }).done(function (room) {\n _resolve(callback, defer, room);\n }, function (err) {\n _reject(callback, defer, err);\n });\n return defer.promise;\n};\n\n/**\n * Resend an event.\n * @param {MatrixEvent} event The event to resend.\n * @param {Room} room Optional. The room the event is in. Will update the\n * timeline entry if provided.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.resendEvent = function (event, room) {\n _updatePendingEventStatus(room, event, EventStatus.SENDING);\n return _sendEvent(this, room, event);\n};\n\n/**\n * Cancel a queued or unsent event.\n *\n * @param {MatrixEvent} event Event to cancel\n * @throws Error if the event is not in QUEUED or NOT_SENT state\n */\nMatrixClient.prototype.cancelPendingEvent = function (event) {\n if ([EventStatus.QUEUED, EventStatus.NOT_SENT].indexOf(event.status) < 0) {\n throw new Error(\"cannot cancel an event with status \" + event.status);\n }\n\n // first tell the scheduler to forget about it, if it's queued\n if (this.scheduler) {\n this.scheduler.removeEventFromQueue(event);\n }\n\n // then tell the room about the change of state, which will remove it\n // from the room's list of pending events.\n var room = this.getRoom(event.getRoomId());\n _updatePendingEventStatus(room, event, EventStatus.CANCELLED);\n};\n\n/**\n * @param {string} roomId\n * @param {string} name\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setRoomName = function (roomId, name, callback) {\n return this.sendStateEvent(roomId, \"m.room.name\", { name: name }, undefined, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} topic\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setRoomTopic = function (roomId, topic, callback) {\n return this.sendStateEvent(roomId, \"m.room.topic\", { topic: topic }, undefined, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.getRoomTags = function (roomId, callback) {\n var path = utils.encodeUri(\"/user/$userId/rooms/$roomId/tags/\", {\n $userId: this.credentials.userId,\n $roomId: roomId\n });\n return this._http.authedRequest(callback, \"GET\", path, undefined);\n};\n\n/**\n * @param {string} roomId\n * @param {string} tagName name of room tag to be set\n * @param {object} metadata associated with that tag to be stored\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setRoomTag = function (roomId, tagName, metadata, callback) {\n var path = utils.encodeUri(\"/user/$userId/rooms/$roomId/tags/$tag\", {\n $userId: this.credentials.userId,\n $roomId: roomId,\n $tag: tagName\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, metadata);\n};\n\n/**\n * @param {string} roomId\n * @param {string} tagName name of room tag to be removed\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.deleteRoomTag = function (roomId, tagName, callback) {\n var path = utils.encodeUri(\"/user/$userId/rooms/$roomId/tags/$tag\", {\n $userId: this.credentials.userId,\n $roomId: roomId,\n $tag: tagName\n });\n return this._http.authedRequest(callback, \"DELETE\", path, undefined, undefined);\n};\n\n/**\n * @param {string} roomId\n * @param {string} eventType event type to be set\n * @param {object} content event content\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setRoomAccountData = function (roomId, eventType, content, callback) {\n var path = utils.encodeUri(\"/user/$userId/rooms/$roomId/account_data/$type\", {\n $userId: this.credentials.userId,\n $roomId: roomId,\n $type: eventType\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, content);\n};\n\n/**\n * Set a user's power level.\n * @param {string} roomId\n * @param {string} userId\n * @param {Number} powerLevel\n * @param {MatrixEvent} event\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setPowerLevel = function (roomId, userId, powerLevel, event, callback) {\n var content = {\n users: {}\n };\n if (event && event.getType() === \"m.room.power_levels\") {\n // take a copy of the content to ensure we don't corrupt\n // existing client state with a failed power level change\n content = utils.deepCopy(event.getContent());\n }\n content.users[userId] = powerLevel;\n var path = utils.encodeUri(\"/rooms/$roomId/state/m.room.power_levels\", {\n $roomId: roomId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, content);\n};\n\n/**\n * @param {string} roomId\n * @param {string} eventType\n * @param {Object} content\n * @param {string} txnId Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendEvent = function (roomId, eventType, content, txnId, callback) {\n if (utils.isFunction(txnId)) {\n callback = txnId;txnId = undefined;\n }\n\n if (!txnId) {\n txnId = this.makeTxnId();\n }\n\n console.log(\"sendEvent of type \" + eventType + \" in \" + roomId + \" with txnId \" + txnId);\n\n // we always construct a MatrixEvent when sending because the store and\n // scheduler use them. We'll extract the params back out if it turns out\n // the client has no scheduler or store.\n var room = this.getRoom(roomId);\n var localEvent = new MatrixEvent({\n event_id: \"~\" + roomId + \":\" + txnId,\n user_id: this.credentials.userId,\n room_id: roomId,\n type: eventType,\n origin_server_ts: new Date().getTime(),\n content: content\n });\n localEvent._txnId = txnId;\n localEvent.status = EventStatus.SENDING;\n\n // add this event immediately to the local store as 'sending'.\n if (room) {\n room.addPendingEvent(localEvent, txnId);\n }\n\n // addPendingEvent can change the state to NOT_SENT if it believes\n // that there's other events that have failed. We won't bother to\n // try sending the event if the state has changed as such.\n if (localEvent.status === EventStatus.NOT_SENT) {\n return _bluebird2.default.reject(new Error(\"Event blocked by other events not yet sent\"));\n }\n\n return _sendEvent(this, room, localEvent, callback);\n};\n\n// encrypts the event if necessary\n// adds the event to the queue, or sends it\n// marks the event as sent/unsent\n// returns a promise which resolves with the result of the send request\nfunction _sendEvent(client, room, event, callback) {\n // Add an extra Promise.resolve() to turn synchronous exceptions into promise rejections,\n // so that we can handle synchronous and asynchronous exceptions with the\n // same code path.\n return _bluebird2.default.resolve().then(function () {\n var encryptionPromise = _encryptEventIfNeeded(client, event, room);\n\n if (!encryptionPromise) {\n return null;\n }\n\n _updatePendingEventStatus(room, event, EventStatus.ENCRYPTING);\n return encryptionPromise.then(function () {\n _updatePendingEventStatus(room, event, EventStatus.SENDING);\n });\n }).then(function () {\n var promise = void 0;\n // this event may be queued\n if (client.scheduler) {\n // if this returns a promsie then the scheduler has control now and will\n // resolve/reject when it is done. Internally, the scheduler will invoke\n // processFn which is set to this._sendEventHttpRequest so the same code\n // path is executed regardless.\n promise = client.scheduler.queueEvent(event);\n if (promise && client.scheduler.getQueueForEvent(event).length > 1) {\n // event is processed FIFO so if the length is 2 or more we know\n // this event is stuck behind an earlier event.\n _updatePendingEventStatus(room, event, EventStatus.QUEUED);\n }\n }\n\n if (!promise) {\n promise = _sendEventHttpRequest(client, event);\n }\n return promise;\n }).then(function (res) {\n // the request was sent OK\n if (room) {\n room.updatePendingEvent(event, EventStatus.SENT, res.event_id);\n }\n if (callback) {\n callback(null, res);\n }\n return res;\n }, function (err) {\n // the request failed to send.\n console.error(\"Error sending event\", err.stack || err);\n\n try {\n // set the error on the event before we update the status:\n // updating the status emits the event, so the state should be\n // consistent at that point.\n event.error = err;\n _updatePendingEventStatus(room, event, EventStatus.NOT_SENT);\n // also put the event object on the error: the caller will need this\n // to resend or cancel the event\n err.event = event;\n\n if (callback) {\n callback(err);\n }\n } catch (err2) {\n console.error(\"Exception in error handler!\", err2.stack || err);\n }\n throw err;\n });\n}\n\n/**\n * Encrypt an event according to the configuration of the room, if necessary.\n *\n * @param {MatrixClient} client\n *\n * @param {module:models/event.MatrixEvent} event event to be sent\n *\n * @param {module:models/room?} room destination room. Null if the destination\n * is not a room we have seen over the sync pipe.\n *\n * @return {module:client.Promise?} Promise which resolves when the event has been\n * encrypted, or null if nothing was needed\n */\n\nfunction _encryptEventIfNeeded(client, event, room) {\n if (event.isEncrypted()) {\n // this event has already been encrypted; this happens if the\n // encryption step succeeded, but the send step failed on the first\n // attempt.\n return null;\n }\n\n if (!client.isRoomEncrypted(event.getRoomId())) {\n // looks like this room isn't encrypted.\n return null;\n }\n\n if (!client._crypto) {\n throw new Error(\"This room is configured to use encryption, but your client does \" + \"not support encryption.\");\n }\n\n return client._crypto.encryptEvent(event, room);\n}\n\nfunction _updatePendingEventStatus(room, event, newStatus) {\n if (room) {\n room.updatePendingEvent(event, newStatus);\n } else {\n event.status = newStatus;\n }\n}\n\nfunction _sendEventHttpRequest(client, event) {\n var txnId = event._txnId ? event._txnId : client.makeTxnId();\n\n var pathParams = {\n $roomId: event.getRoomId(),\n $eventType: event.getWireType(),\n $stateKey: event.getStateKey(),\n $txnId: txnId\n };\n\n var path = void 0;\n\n if (event.isState()) {\n var pathTemplate = \"/rooms/$roomId/state/$eventType\";\n if (event.getStateKey() && event.getStateKey().length > 0) {\n pathTemplate = \"/rooms/$roomId/state/$eventType/$stateKey\";\n }\n path = utils.encodeUri(pathTemplate, pathParams);\n } else {\n path = utils.encodeUri(\"/rooms/$roomId/send/$eventType/$txnId\", pathParams);\n }\n\n return client._http.authedRequest(undefined, \"PUT\", path, undefined, event.getWireContent()).then(function (res) {\n console.log(\"Event sent to \" + event.getRoomId() + \" with event id \" + res.event_id);\n return res;\n });\n}\n\n/**\n * @param {string} roomId\n * @param {Object} content\n * @param {string} txnId Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendMessage = function (roomId, content, txnId, callback) {\n if (utils.isFunction(txnId)) {\n callback = txnId;txnId = undefined;\n }\n return this.sendEvent(roomId, \"m.room.message\", content, txnId, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} txnId Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendTextMessage = function (roomId, body, txnId, callback) {\n var content = ContentHelpers.makeTextMessage(body);\n return this.sendMessage(roomId, content, txnId, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} txnId Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendNotice = function (roomId, body, txnId, callback) {\n var content = ContentHelpers.makeNotice(body);\n return this.sendMessage(roomId, content, txnId, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} txnId Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendEmoteMessage = function (roomId, body, txnId, callback) {\n var content = ContentHelpers.makeEmoteMessage(body);\n return this.sendMessage(roomId, content, txnId, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} url\n * @param {Object} info\n * @param {string} text\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendImageMessage = function (roomId, url, info, text, callback) {\n if (utils.isFunction(text)) {\n callback = text;text = undefined;\n }\n if (!text) {\n text = \"Image\";\n }\n var content = {\n msgtype: \"m.image\",\n url: url,\n info: info,\n body: text\n };\n return this.sendMessage(roomId, content, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} url\n * @param {Object} info\n * @param {string} text\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendStickerMessage = function (roomId, url, info, text, callback) {\n if (utils.isFunction(text)) {\n callback = text;text = undefined;\n }\n if (!text) {\n text = \"Sticker\";\n }\n var content = {\n url: url,\n info: info,\n body: text\n };\n return this.sendEvent(roomId, \"m.sticker\", content, callback, undefined);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} htmlBody\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendHtmlMessage = function (roomId, body, htmlBody, callback) {\n var content = ContentHelpers.makeHtmlMessage(body, htmlBody);\n return this.sendMessage(roomId, content, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} htmlBody\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendHtmlNotice = function (roomId, body, htmlBody, callback) {\n var content = ContentHelpers.makeHtmlNotice(body, htmlBody);\n return this.sendMessage(roomId, content, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} htmlBody\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendHtmlEmote = function (roomId, body, htmlBody, callback) {\n var content = ContentHelpers.makeHtmlEmote(body, htmlBody);\n return this.sendMessage(roomId, content, callback);\n};\n\n/**\n * Send a receipt.\n * @param {Event} event The event being acknowledged\n * @param {string} receiptType The kind of receipt e.g. \"m.read\"\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendReceipt = function (event, receiptType, callback) {\n if (this.isGuest()) {\n return _bluebird2.default.resolve({}); // guests cannot send receipts so don't bother.\n }\n\n var path = utils.encodeUri(\"/rooms/$roomId/receipt/$receiptType/$eventId\", {\n $roomId: event.getRoomId(),\n $receiptType: receiptType,\n $eventId: event.getId()\n });\n var promise = this._http.authedRequest(callback, \"POST\", path, undefined, {});\n\n var room = this.getRoom(event.getRoomId());\n if (room) {\n room._addLocalEchoReceipt(this.credentials.userId, event, receiptType);\n }\n return promise;\n};\n\n/**\n * Send a read receipt.\n * @param {Event} event The event that has been read.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendReadReceipt = function (event, callback) {\n return this.sendReceipt(event, \"m.read\", callback);\n};\n\n/**\n * Set a marker to indicate the point in a room before which the user has read every\n * event. This can be retrieved from room account data (the event type is `m.fully_read`)\n * and displayed as a horizontal line in the timeline that is visually distinct to the\n * position of the user's own read receipt.\n * @param {string} roomId ID of the room that has been read\n * @param {string} eventId ID of the event that has been read\n * @param {string} rrEvent the event tracked by the read receipt. This is here for\n * convenience because the RR and the RM are commonly updated at the same time as each\n * other. The local echo of this receipt will be done if set. Optional.\n * @return {module:client.Promise} Resolves: the empty object, {}.\n */\nMatrixClient.prototype.setRoomReadMarkers = function (roomId, eventId, rrEvent) {\n var rmEventId = eventId;\n var rrEventId = void 0;\n\n // Add the optional RR update, do local echo like `sendReceipt`\n if (rrEvent) {\n rrEventId = rrEvent.getId();\n var room = this.getRoom(roomId);\n if (room) {\n room._addLocalEchoReceipt(this.credentials.userId, rrEvent, \"m.read\");\n }\n }\n\n return this.setRoomReadMarkersHttpRequest(roomId, rmEventId, rrEventId);\n};\n\n/**\n * Get a preview of the given URL as of (roughly) the given point in time,\n * described as an object with OpenGraph keys and associated values.\n * Attributes may be synthesized where actual OG metadata is lacking.\n * Caches results to prevent hammering the server.\n * @param {string} url The URL to get preview data for\n * @param {Number} ts The preferred point in time that the preview should\n * describe (ms since epoch). The preview returned will either be the most\n * recent one preceding this timestamp if available, or failing that the next\n * most recent available preview.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Object of OG metadata.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n * May return synthesized attributes if the URL lacked OG meta.\n */\nMatrixClient.prototype.getUrlPreview = function (url, ts, callback) {\n var key = ts + \"_\" + url;\n var og = this.urlPreviewCache[key];\n if (og) {\n return _bluebird2.default.resolve(og);\n }\n\n var self = this;\n return this._http.authedRequestWithPrefix(callback, \"GET\", \"/preview_url\", {\n url: url,\n ts: ts\n }, undefined, httpApi.PREFIX_MEDIA_R0).then(function (response) {\n // TODO: expire cache occasionally\n self.urlPreviewCache[key] = response;\n return response;\n });\n};\n\n/**\n * @param {string} roomId\n * @param {boolean} isTyping\n * @param {Number} timeoutMs\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendTyping = function (roomId, isTyping, timeoutMs, callback) {\n if (this.isGuest()) {\n return _bluebird2.default.resolve({}); // guests cannot send typing notifications so don't bother.\n }\n\n var path = utils.encodeUri(\"/rooms/$roomId/typing/$userId\", {\n $roomId: roomId,\n $userId: this.credentials.userId\n });\n var data = {\n typing: isTyping\n };\n if (isTyping) {\n data.timeout = timeoutMs ? timeoutMs : 20000;\n }\n return this._http.authedRequest(callback, \"PUT\", path, undefined, data);\n};\n\n/**\n * @param {string} roomId\n * @param {string} userId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.invite = function (roomId, userId, callback) {\n return _membershipChange(this, roomId, userId, \"invite\", undefined, callback);\n};\n\n/**\n * Invite a user to a room based on their email address.\n * @param {string} roomId The room to invite the user to.\n * @param {string} email The email address to invite.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.inviteByEmail = function (roomId, email, callback) {\n return this.inviteByThreePid(roomId, \"email\", email, callback);\n};\n\n/**\n * Invite a user to a room based on a third-party identifier.\n * @param {string} roomId The room to invite the user to.\n * @param {string} medium The medium to invite the user e.g. \"email\".\n * @param {string} address The address for the specified medium.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.inviteByThreePid = function (roomId, medium, address, callback) {\n var path = utils.encodeUri(\"/rooms/$roomId/invite\", { $roomId: roomId });\n\n var identityServerUrl = this.getIdentityServerUrl(true);\n if (!identityServerUrl) {\n return _bluebird2.default.reject(new MatrixError({\n error: \"No supplied identity server URL\",\n errcode: \"ORG.MATRIX.JSSDK_MISSING_PARAM\"\n }));\n }\n\n return this._http.authedRequest(callback, \"POST\", path, undefined, {\n id_server: identityServerUrl,\n medium: medium,\n address: address\n });\n};\n\n/**\n * @param {string} roomId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.leave = function (roomId, callback) {\n return _membershipChange(this, roomId, undefined, \"leave\", undefined, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} userId\n * @param {string} reason Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.ban = function (roomId, userId, reason, callback) {\n return _membershipChange(this, roomId, userId, \"ban\", reason, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {boolean} deleteRoom True to delete the room from the store on success.\n * Default: true.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.forget = function (roomId, deleteRoom, callback) {\n if (deleteRoom === undefined) {\n deleteRoom = true;\n }\n var promise = _membershipChange(this, roomId, undefined, \"forget\", undefined, callback);\n if (!deleteRoom) {\n return promise;\n }\n var self = this;\n return promise.then(function (response) {\n self.store.removeRoom(roomId);\n self.emit(\"deleteRoom\", roomId);\n return response;\n });\n};\n\n/**\n * @param {string} roomId\n * @param {string} userId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Object (currently empty)\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.unban = function (roomId, userId, callback) {\n // unbanning != set their state to leave: this used to be\n // the case, but was then changed so that leaving was always\n // a revoking of priviledge, otherwise two people racing to\n // kick / ban someone could end up banning and then un-banning\n // them.\n var path = utils.encodeUri(\"/rooms/$roomId/unban\", {\n $roomId: roomId\n });\n var data = {\n user_id: userId\n };\n return this._http.authedRequest(callback, \"POST\", path, undefined, data);\n};\n\n/**\n * @param {string} roomId\n * @param {string} userId\n * @param {string} reason Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.kick = function (roomId, userId, reason, callback) {\n return _setMembershipState(this, roomId, userId, \"leave\", reason, callback);\n};\n\n/**\n * This is an internal method.\n * @param {MatrixClient} client\n * @param {string} roomId\n * @param {string} userId\n * @param {string} membershipValue\n * @param {string} reason\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nfunction _setMembershipState(client, roomId, userId, membershipValue, reason, callback) {\n if (utils.isFunction(reason)) {\n callback = reason;reason = undefined;\n }\n\n var path = utils.encodeUri(\"/rooms/$roomId/state/m.room.member/$userId\", { $roomId: roomId, $userId: userId });\n\n return client._http.authedRequest(callback, \"PUT\", path, undefined, {\n membership: membershipValue,\n reason: reason\n });\n}\n\n/**\n * This is an internal method.\n * @param {MatrixClient} client\n * @param {string} roomId\n * @param {string} userId\n * @param {string} membership\n * @param {string} reason\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nfunction _membershipChange(client, roomId, userId, membership, reason, callback) {\n if (utils.isFunction(reason)) {\n callback = reason;reason = undefined;\n }\n\n var path = utils.encodeUri(\"/rooms/$room_id/$membership\", {\n $room_id: roomId,\n $membership: membership\n });\n return client._http.authedRequest(callback, \"POST\", path, undefined, {\n user_id: userId, // may be undefined e.g. on leave\n reason: reason\n });\n}\n\n/**\n * Obtain a dict of actions which should be performed for this event according\n * to the push rules for this user. Caches the dict on the event.\n * @param {MatrixEvent} event The event to get push actions for.\n * @return {module:pushprocessor~PushAction} A dict of actions to perform.\n */\nMatrixClient.prototype.getPushActionsForEvent = function (event) {\n if (!event.getPushActions()) {\n event.setPushActions(this._pushProcessor.actionsForEvent(event));\n }\n return event.getPushActions();\n};\n\n// Profile operations\n// ==================\n\n/**\n * @param {string} info The kind of info to set (e.g. 'avatar_url')\n * @param {Object} data The JSON object to set.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setProfileInfo = function (info, data, callback) {\n var path = utils.encodeUri(\"/profile/$userId/$info\", {\n $userId: this.credentials.userId,\n $info: info\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, data);\n};\n\n/**\n * @param {string} name\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setDisplayName = function (name, callback) {\n return this.setProfileInfo(\"displayname\", { displayname: name }, callback);\n};\n\n/**\n * @param {string} url\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setAvatarUrl = function (url, callback) {\n return this.setProfileInfo(\"avatar_url\", { avatar_url: url }, callback);\n};\n\n/**\n * Turn an MXC URL into an HTTP one. <strong>This method is experimental and\n * may change.</strong>\n * @param {string} mxcUrl The MXC URL\n * @param {Number} width The desired width of the thumbnail.\n * @param {Number} height The desired height of the thumbnail.\n * @param {string} resizeMethod The thumbnail resize method to use, either\n * \"crop\" or \"scale\".\n * @param {Boolean} allowDirectLinks If true, return any non-mxc URLs\n * directly. Fetching such URLs will leak information about the user to\n * anyone they share a room with. If false, will return null for such URLs.\n * @return {?string} the avatar URL or null.\n */\nMatrixClient.prototype.mxcUrlToHttp = function (mxcUrl, width, height, resizeMethod, allowDirectLinks) {\n return contentRepo.getHttpUriForMxc(this.baseUrl, mxcUrl, width, height, resizeMethod, allowDirectLinks);\n};\n\n/**\n * Sets a new status message for the user. The message may be null/falsey\n * to clear the message.\n * @param {string} newMessage The new message to set.\n * @return {module:client.Promise} Resolves: to nothing\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype._unstable_setStatusMessage = function (newMessage) {\n var _this3 = this;\n\n return _bluebird2.default.all(this.getRooms().map(function (room) {\n var isJoined = room.getMyMembership() === \"join\";\n var looksLikeDm = room.getInvitedAndJoinedMemberCount() === 2;\n if (isJoined && looksLikeDm) {\n return _this3.sendStateEvent(room.roomId, \"im.vector.user_status\", {\n status: newMessage\n }, _this3.getUserId());\n } else {\n return _bluebird2.default.resolve();\n }\n }));\n};\n\n/**\n * @param {Object} opts Options to apply\n * @param {string} opts.presence One of \"online\", \"offline\" or \"unavailable\"\n * @param {string} opts.status_msg The status message to attach.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n * @throws If 'presence' isn't a valid presence enum value.\n */\nMatrixClient.prototype.setPresence = function (opts, callback) {\n var path = utils.encodeUri(\"/presence/$userId/status\", {\n $userId: this.credentials.userId\n });\n\n if (typeof opts === \"string\") {\n opts = { presence: opts };\n }\n\n var validStates = [\"offline\", \"online\", \"unavailable\"];\n if (validStates.indexOf(opts.presence) == -1) {\n throw new Error(\"Bad presence value: \" + opts.presence);\n }\n return this._http.authedRequest(callback, \"PUT\", path, undefined, opts);\n};\n\nfunction _presenceList(callback, client, opts, method) {\n var path = utils.encodeUri(\"/presence/list/$userId\", {\n $userId: client.credentials.userId\n });\n return client._http.authedRequest(callback, method, path, undefined, opts);\n}\n\n/**\n* Retrieve current user presence list.\n* @param {module:client.callback} callback Optional.\n* @return {module:client.Promise} Resolves: TODO\n* @return {module:http-api.MatrixError} Rejects: with an error response.\n*/\nMatrixClient.prototype.getPresenceList = function (callback) {\n return _presenceList(callback, this, undefined, \"GET\");\n};\n\n/**\n* Add users to the current user presence list.\n* @param {module:client.callback} callback Optional.\n* @param {string[]} userIds\n* @return {module:client.Promise} Resolves: TODO\n* @return {module:http-api.MatrixError} Rejects: with an error response.\n*/\nMatrixClient.prototype.inviteToPresenceList = function (callback, userIds) {\n var opts = { \"invite\": userIds };\n return _presenceList(callback, this, opts, \"POST\");\n};\n\n/**\n* Drop users from the current user presence list.\n* @param {module:client.callback} callback Optional.\n* @param {string[]} userIds\n* @return {module:client.Promise} Resolves: TODO\n* @return {module:http-api.MatrixError} Rejects: with an error response.\n**/\nMatrixClient.prototype.dropFromPresenceList = function (callback, userIds) {\n var opts = { \"drop\": userIds };\n return _presenceList(callback, this, opts, \"POST\");\n};\n\n/**\n * Retrieve older messages from the given room and put them in the timeline.\n *\n * If this is called multiple times whilst a request is ongoing, the <i>same</i>\n * Promise will be returned. If there was a problem requesting scrollback, there\n * will be a small delay before another request can be made (to prevent tight-looping\n * when there is no connection).\n *\n * @param {Room} room The room to get older messages in.\n * @param {Integer} limit Optional. The maximum number of previous events to\n * pull in. Default: 30.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Room. If you are at the beginning\n * of the timeline, <code>Room.oldState.paginationToken</code> will be\n * <code>null</code>.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.scrollback = function (room, limit, callback) {\n if (utils.isFunction(limit)) {\n callback = limit;limit = undefined;\n }\n limit = limit || 30;\n var timeToWaitMs = 0;\n\n var info = this._ongoingScrollbacks[room.roomId] || {};\n if (info.promise) {\n return info.promise;\n } else if (info.errorTs) {\n var timeWaitedMs = Date.now() - info.errorTs;\n timeToWaitMs = Math.max(SCROLLBACK_DELAY_MS - timeWaitedMs, 0);\n }\n\n if (room.oldState.paginationToken === null) {\n return _bluebird2.default.resolve(room); // already at the start.\n }\n // attempt to grab more events from the store first\n var numAdded = this.store.scrollback(room, limit).length;\n if (numAdded === limit) {\n // store contained everything we needed.\n return _bluebird2.default.resolve(room);\n }\n // reduce the required number of events appropriately\n limit = limit - numAdded;\n\n var defer = _bluebird2.default.defer();\n info = {\n promise: defer.promise,\n errorTs: null\n };\n var self = this;\n // wait for a time before doing this request\n // (which may be 0 in order not to special case the code paths)\n _bluebird2.default.delay(timeToWaitMs).then(function () {\n return self._createMessagesRequest(room.roomId, room.oldState.paginationToken, limit, 'b');\n }).done(function (res) {\n var matrixEvents = utils.map(res.chunk, _PojoToMatrixEventMapper(self));\n if (res.state) {\n var stateEvents = utils.map(res.state, _PojoToMatrixEventMapper(self));\n room.currentState.setUnknownStateEvents(stateEvents);\n }\n room.addEventsToTimeline(matrixEvents, true, room.getLiveTimeline());\n room.oldState.paginationToken = res.end;\n if (res.chunk.length === 0) {\n room.oldState.paginationToken = null;\n }\n self.store.storeEvents(room, matrixEvents, res.end, true);\n self._ongoingScrollbacks[room.roomId] = null;\n _resolve(callback, defer, room);\n }, function (err) {\n self._ongoingScrollbacks[room.roomId] = {\n errorTs: Date.now()\n };\n _reject(callback, defer, err);\n });\n this._ongoingScrollbacks[room.roomId] = info;\n return defer.promise;\n};\n\n/**\n * Get an EventTimeline for the given event\n *\n * <p>If the EventTimelineSet object already has the given event in its store, the\n * corresponding timeline will be returned. Otherwise, a /context request is\n * made, and used to construct an EventTimeline.\n *\n * @param {EventTimelineSet} timelineSet The timelineSet to look for the event in\n * @param {string} eventId The ID of the event to look for\n *\n * @return {module:client.Promise} Resolves:\n * {@link module:models/event-timeline~EventTimeline} including the given\n * event\n */\nMatrixClient.prototype.getEventTimeline = function (timelineSet, eventId) {\n // don't allow any timeline support unless it's been enabled.\n if (!this.timelineSupport) {\n throw new Error(\"timeline support is disabled. Set the 'timelineSupport'\" + \" parameter to true when creating MatrixClient to enable\" + \" it.\");\n }\n\n if (timelineSet.getTimelineForEvent(eventId)) {\n return _bluebird2.default.resolve(timelineSet.getTimelineForEvent(eventId));\n }\n\n var path = utils.encodeUri(\"/rooms/$roomId/context/$eventId\", {\n $roomId: timelineSet.room.roomId,\n $eventId: eventId\n });\n\n var params = undefined;\n if (this._clientOpts.lazyLoadMembers) {\n params = { filter: (0, _stringify2.default)(Filter.LAZY_LOADING_MESSAGES_FILTER) };\n }\n\n // TODO: we should implement a backoff (as per scrollback()) to deal more\n // nicely with HTTP errors.\n var self = this;\n var promise = self._http.authedRequest(undefined, \"GET\", path, params).then(function (res) {\n if (!res.event) {\n throw new Error(\"'event' not in '/context' result - homeserver too old?\");\n }\n\n // by the time the request completes, the event might have ended up in\n // the timeline.\n if (timelineSet.getTimelineForEvent(eventId)) {\n return timelineSet.getTimelineForEvent(eventId);\n }\n\n // we start with the last event, since that's the point at which we\n // have known state.\n // events_after is already backwards; events_before is forwards.\n res.events_after.reverse();\n var events = res.events_after.concat([res.event]).concat(res.events_before);\n var matrixEvents = utils.map(events, self.getEventMapper());\n\n var timeline = timelineSet.getTimelineForEvent(matrixEvents[0].getId());\n if (!timeline) {\n timeline = timelineSet.addTimeline();\n timeline.initialiseState(utils.map(res.state, self.getEventMapper()));\n timeline.getState(EventTimeline.FORWARDS).paginationToken = res.end;\n } else {\n var stateEvents = utils.map(res.state, self.getEventMapper());\n timeline.getState(EventTimeline.BACKWARDS).setUnknownStateEvents(stateEvents);\n }\n timelineSet.addEventsToTimeline(matrixEvents, true, timeline, res.start);\n\n // there is no guarantee that the event ended up in \"timeline\" (we\n // might have switched to a neighbouring timeline) - so check the\n // room's index again. On the other hand, there's no guarantee the\n // event ended up anywhere, if it was later redacted, so we just\n // return the timeline we first thought of.\n var tl = timelineSet.getTimelineForEvent(eventId) || timeline;\n return tl;\n });\n return promise;\n};\n\n/**\n * Makes a request to /messages with the appropriate lazy loading filter set.\n * XXX: if we do get rid of scrollback (as it's not used at the moment),\n * we could inline this method again in paginateEventTimeline as that would\n * then be the only call-site\n * @param {string} roomId\n * @param {string} fromToken\n * @param {number} limit the maximum amount of events the retrieve\n * @param {string} dir 'f' or 'b'\n * @param {Filter} timelineFilter the timeline filter to pass\n * @return {Promise}\n */\nMatrixClient.prototype._createMessagesRequest = function (roomId, fromToken, limit, dir) {\n var timelineFilter = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : undefined;\n\n var path = utils.encodeUri(\"/rooms/$roomId/messages\", { $roomId: roomId });\n if (limit === undefined) {\n limit = 30;\n }\n var params = {\n from: fromToken,\n limit: limit,\n dir: dir\n };\n\n var filter = null;\n if (this._clientOpts.lazyLoadMembers) {\n // create a shallow copy of LAZY_LOADING_MESSAGES_FILTER,\n // so the timelineFilter doesn't get written into it below\n filter = (0, _assign2.default)({}, Filter.LAZY_LOADING_MESSAGES_FILTER);\n }\n if (timelineFilter) {\n // XXX: it's horrific that /messages' filter parameter doesn't match\n // /sync's one - see https://matrix.org/jira/browse/SPEC-451\n filter = filter || {};\n (0, _assign2.default)(filter, timelineFilter.getRoomTimelineFilterComponent());\n }\n if (filter) {\n params.filter = (0, _stringify2.default)(filter);\n }\n return this._http.authedRequest(undefined, \"GET\", path, params);\n};\n\n/**\n * Take an EventTimeline, and back/forward-fill results.\n *\n * @param {module:models/event-timeline~EventTimeline} eventTimeline timeline\n * object to be updated\n * @param {Object} [opts]\n * @param {bool} [opts.backwards = false] true to fill backwards,\n * false to go forwards\n * @param {number} [opts.limit = 30] number of events to request\n *\n * @return {module:client.Promise} Resolves to a boolean: false if there are no\n * events and we reached either end of the timeline; else true.\n */\nMatrixClient.prototype.paginateEventTimeline = function (eventTimeline, opts) {\n var isNotifTimeline = eventTimeline.getTimelineSet() === this._notifTimelineSet;\n\n // TODO: we should implement a backoff (as per scrollback()) to deal more\n // nicely with HTTP errors.\n opts = opts || {};\n var backwards = opts.backwards || false;\n\n if (isNotifTimeline) {\n if (!backwards) {\n throw new Error(\"paginateNotifTimeline can only paginate backwards\");\n }\n }\n\n var dir = backwards ? EventTimeline.BACKWARDS : EventTimeline.FORWARDS;\n\n var token = eventTimeline.getPaginationToken(dir);\n if (!token) {\n // no token - no results.\n return _bluebird2.default.resolve(false);\n }\n\n var pendingRequest = eventTimeline._paginationRequests[dir];\n\n if (pendingRequest) {\n // already a request in progress - return the existing promise\n return pendingRequest;\n }\n\n var path = void 0,\n params = void 0,\n promise = void 0;\n var self = this;\n\n if (isNotifTimeline) {\n path = \"/notifications\";\n params = {\n limit: 'limit' in opts ? opts.limit : 30,\n only: 'highlight'\n };\n\n if (token && token !== \"end\") {\n params.from = token;\n }\n\n promise = this._http.authedRequestWithPrefix(undefined, \"GET\", path, params, undefined, httpApi.PREFIX_UNSTABLE).then(function (res) {\n var token = res.next_token;\n var matrixEvents = [];\n\n for (var i = 0; i < res.notifications.length; i++) {\n var notification = res.notifications[i];\n var event = self.getEventMapper()(notification.event);\n event.setPushActions(PushProcessor.actionListToActionsObject(notification.actions));\n event.event.room_id = notification.room_id; // XXX: gutwrenching\n matrixEvents[i] = event;\n }\n\n eventTimeline.getTimelineSet().addEventsToTimeline(matrixEvents, backwards, eventTimeline, token);\n\n // if we've hit the end of the timeline, we need to stop trying to\n // paginate. We need to keep the 'forwards' token though, to make sure\n // we can recover from gappy syncs.\n if (backwards && !res.next_token) {\n eventTimeline.setPaginationToken(null, dir);\n }\n return res.next_token ? true : false;\n }).finally(function () {\n eventTimeline._paginationRequests[dir] = null;\n });\n eventTimeline._paginationRequests[dir] = promise;\n } else {\n var room = this.getRoom(eventTimeline.getRoomId());\n if (!room) {\n throw new Error(\"Unknown room \" + eventTimeline.getRoomId());\n }\n\n promise = this._createMessagesRequest(eventTimeline.getRoomId(), token, opts.limit, dir, eventTimeline.getFilter());\n promise.then(function (res) {\n if (res.state) {\n var roomState = eventTimeline.getState(dir);\n var stateEvents = utils.map(res.state, self.getEventMapper());\n roomState.setUnknownStateEvents(stateEvents);\n }\n var token = res.end;\n var matrixEvents = utils.map(res.chunk, self.getEventMapper());\n eventTimeline.getTimelineSet().addEventsToTimeline(matrixEvents, backwards, eventTimeline, token);\n\n // if we've hit the end of the timeline, we need to stop trying to\n // paginate. We need to keep the 'forwards' token though, to make sure\n // we can recover from gappy syncs.\n if (backwards && res.end == res.start) {\n eventTimeline.setPaginationToken(null, dir);\n }\n return res.end != res.start;\n }).finally(function () {\n eventTimeline._paginationRequests[dir] = null;\n });\n eventTimeline._paginationRequests[dir] = promise;\n }\n\n return promise;\n};\n\n/**\n * Reset the notifTimelineSet entirely, paginating in some historical notifs as\n * a starting point for subsequent pagination.\n */\nMatrixClient.prototype.resetNotifTimelineSet = function () {\n if (!this._notifTimelineSet) {\n return;\n }\n\n // FIXME: This thing is a total hack, and results in duplicate events being\n // added to the timeline both from /sync and /notifications, and lots of\n // slow and wasteful processing and pagination. The correct solution is to\n // extend /messages or /search or something to filter on notifications.\n\n // use the fictitious token 'end'. in practice we would ideally give it\n // the oldest backwards pagination token from /sync, but /sync doesn't\n // know about /notifications, so we have no choice but to start paginating\n // from the current point in time. This may well overlap with historical\n // notifs which are then inserted into the timeline by /sync responses.\n this._notifTimelineSet.resetLiveTimeline('end', null);\n\n // we could try to paginate a single event at this point in order to get\n // a more valid pagination token, but it just ends up with an out of order\n // timeline. given what a mess this is and given we're going to have duplicate\n // events anyway, just leave it with the dummy token for now.\n /*\n this.paginateNotifTimeline(this._notifTimelineSet.getLiveTimeline(), {\n backwards: true,\n limit: 1\n });\n */\n};\n\n/**\n * Peek into a room and receive updates about the room. This only works if the\n * history visibility for the room is world_readable.\n * @param {String} roomId The room to attempt to peek into.\n * @return {module:client.Promise} Resolves: Room object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.peekInRoom = function (roomId) {\n if (this._peekSync) {\n this._peekSync.stopPeeking();\n }\n this._peekSync = new SyncApi(this, this._clientOpts);\n return this._peekSync.peek(roomId);\n};\n\n/**\n * Stop any ongoing room peeking.\n */\nMatrixClient.prototype.stopPeeking = function () {\n if (this._peekSync) {\n this._peekSync.stopPeeking();\n this._peekSync = null;\n }\n};\n\n/**\n * Set r/w flags for guest access in a room.\n * @param {string} roomId The room to configure guest access in.\n * @param {Object} opts Options\n * @param {boolean} opts.allowJoin True to allow guests to join this room. This\n * implicitly gives guests write access. If false or not given, guests are\n * explicitly forbidden from joining the room.\n * @param {boolean} opts.allowRead True to set history visibility to\n * be world_readable. This gives guests read access *from this point forward*.\n * If false or not given, history visibility is not modified.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setGuestAccess = function (roomId, opts) {\n var writePromise = this.sendStateEvent(roomId, \"m.room.guest_access\", {\n guest_access: opts.allowJoin ? \"can_join\" : \"forbidden\"\n });\n\n var readPromise = _bluebird2.default.resolve();\n if (opts.allowRead) {\n readPromise = this.sendStateEvent(roomId, \"m.room.history_visibility\", {\n history_visibility: \"world_readable\"\n });\n }\n\n return _bluebird2.default.all([readPromise, writePromise]);\n};\n\n// Registration/Login operations\n// =============================\n\n/**\n * Requests an email verification token for the purposes of registration.\n * This API proxies the Identity Server /validate/email/requestToken API,\n * adding registration-specific behaviour. Specifically, if an account with\n * the given email address already exists, it will either send an email\n * to the address informing them of this or return M_THREEPID_IN_USE\n * (which one is up to the Home Server).\n *\n * requestEmailToken calls the equivalent API directly on the ID server,\n * therefore bypassing the registration-specific logic.\n *\n * Parameters and return value are as for requestEmailToken\n\n * @param {string} email As requestEmailToken\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestRegisterEmailToken = function (email, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/register/email/requestToken\", {\n email: email,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Requests a text message verification token for the purposes of registration.\n * This API proxies the Identity Server /validate/msisdn/requestToken API,\n * adding registration-specific behaviour, as with requestRegisterEmailToken.\n *\n * @param {string} phoneCountry The ISO 3166-1 alpha-2 code for the country in which\n * phoneNumber should be parsed relative to.\n * @param {string} phoneNumber The phone number, in national or international format\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestRegisterMsisdnToken = function (phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/register/msisdn/requestToken\", {\n country: phoneCountry,\n phone_number: phoneNumber,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Requests an email verification token for the purposes of adding a\n * third party identifier to an account.\n * This API proxies the Identity Server /validate/email/requestToken API,\n * adding specific behaviour for the addition of email addresses to an\n * account. Specifically, if an account with\n * the given email address already exists, it will either send an email\n * to the address informing them of this or return M_THREEPID_IN_USE\n * (which one is up to the Home Server).\n *\n * requestEmailToken calls the equivalent API directly on the ID server,\n * therefore bypassing the email addition specific logic.\n *\n * @param {string} email As requestEmailToken\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestAdd3pidEmailToken = function (email, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/account/3pid/email/requestToken\", {\n email: email,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Requests a text message verification token for the purposes of adding a\n * third party identifier to an account.\n * This API proxies the Identity Server /validate/email/requestToken API,\n * adding specific behaviour for the addition of phone numbers to an\n * account, as requestAdd3pidEmailToken.\n *\n * @param {string} phoneCountry As requestRegisterMsisdnToken\n * @param {string} phoneNumber As requestRegisterMsisdnToken\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestAdd3pidMsisdnToken = function (phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/account/3pid/msisdn/requestToken\", {\n country: phoneCountry,\n phone_number: phoneNumber,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Requests an email verification token for the purposes of resetting\n * the password on an account.\n * This API proxies the Identity Server /validate/email/requestToken API,\n * adding specific behaviour for the password resetting. Specifically,\n * if no account with the given email address exists, it may either\n * return M_THREEPID_NOT_FOUND or send an email\n * to the address informing them of this (which one is up to the Home Server).\n *\n * requestEmailToken calls the equivalent API directly on the ID server,\n * therefore bypassing the password reset specific logic.\n *\n * @param {string} email As requestEmailToken\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @param {module:client.callback} callback Optional. As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestPasswordEmailToken = function (email, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/account/password/email/requestToken\", {\n email: email,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Requests a text message verification token for the purposes of resetting\n * the password on an account.\n * This API proxies the Identity Server /validate/email/requestToken API,\n * adding specific behaviour for the password resetting, as requestPasswordEmailToken.\n *\n * @param {string} phoneCountry As requestRegisterMsisdnToken\n * @param {string} phoneNumber As requestRegisterMsisdnToken\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestPasswordMsisdnToken = function (phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/account/password/msisdn/requestToken\", {\n country: phoneCountry,\n phone_number: phoneNumber,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Internal utility function for requesting validation tokens from usage-specific\n * requestToken endpoints.\n *\n * @param {string} endpoint The endpoint to send the request to\n * @param {object} params Parameters for the POST request\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype._requestTokenFromEndpoint = function (endpoint, params) {\n var id_server_url = url.parse(this.idBaseUrl);\n if (id_server_url.host === null) {\n throw new Error(\"Invalid ID server URL: \" + this.idBaseUrl);\n }\n\n var postParams = (0, _assign2.default)({}, params, {\n id_server: id_server_url.host\n });\n return this._http.request(undefined, \"POST\", endpoint, undefined, postParams);\n};\n\n// Push operations\n// ===============\n\n/**\n * Get the room-kind push rule associated with a room.\n * @param {string} scope \"global\" or device-specific.\n * @param {string} roomId the id of the room.\n * @return {object} the rule or undefined.\n */\nMatrixClient.prototype.getRoomPushRule = function (scope, roomId) {\n // There can be only room-kind push rule per room\n // and its id is the room id.\n if (this.pushRules) {\n for (var i = 0; i < this.pushRules[scope].room.length; i++) {\n var rule = this.pushRules[scope].room[i];\n if (rule.rule_id === roomId) {\n return rule;\n }\n }\n } else {\n throw new Error(\"SyncApi.sync() must be done before accessing to push rules.\");\n }\n};\n\n/**\n * Set a room-kind muting push rule in a room.\n * The operation also updates MatrixClient.pushRules at the end.\n * @param {string} scope \"global\" or device-specific.\n * @param {string} roomId the id of the room.\n * @param {string} mute the mute state.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setRoomMutePushRule = function (scope, roomId, mute) {\n var self = this;\n var deferred = void 0,\n hasDontNotifyRule = void 0;\n\n // Get the existing room-kind push rule if any\n var roomPushRule = this.getRoomPushRule(scope, roomId);\n if (roomPushRule) {\n if (0 <= roomPushRule.actions.indexOf(\"dont_notify\")) {\n hasDontNotifyRule = true;\n }\n }\n\n if (!mute) {\n // Remove the rule only if it is a muting rule\n if (hasDontNotifyRule) {\n deferred = this.deletePushRule(scope, \"room\", roomPushRule.rule_id);\n }\n } else {\n if (!roomPushRule) {\n deferred = this.addPushRule(scope, \"room\", roomId, {\n actions: [\"dont_notify\"]\n });\n } else if (!hasDontNotifyRule) {\n // Remove the existing one before setting the mute push rule\n // This is a workaround to SYN-590 (Push rule update fails)\n deferred = _bluebird2.default.defer();\n this.deletePushRule(scope, \"room\", roomPushRule.rule_id).done(function () {\n self.addPushRule(scope, \"room\", roomId, {\n actions: [\"dont_notify\"]\n }).done(function () {\n deferred.resolve();\n }, function (err) {\n deferred.reject(err);\n });\n }, function (err) {\n deferred.reject(err);\n });\n\n deferred = deferred.promise;\n }\n }\n\n if (deferred) {\n // Update this.pushRules when the operation completes\n var ruleRefreshDeferred = _bluebird2.default.defer();\n deferred.done(function () {\n self.getPushRules().done(function (result) {\n self.pushRules = result;\n ruleRefreshDeferred.resolve();\n }, function (err) {\n ruleRefreshDeferred.reject(err);\n });\n }, function (err) {\n // Update it even if the previous operation fails. This can help the\n // app to recover when push settings has been modifed from another client\n self.getPushRules().done(function (result) {\n self.pushRules = result;\n ruleRefreshDeferred.reject(err);\n }, function (err2) {\n ruleRefreshDeferred.reject(err);\n });\n });\n return ruleRefreshDeferred.promise;\n }\n};\n\n// Search\n// ======\n\n/**\n * Perform a server-side search for messages containing the given text.\n * @param {Object} opts Options for the search.\n * @param {string} opts.query The text to query.\n * @param {string=} opts.keys The keys to search on. Defaults to all keys. One\n * of \"content.body\", \"content.name\", \"content.topic\".\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.searchMessageText = function (opts, callback) {\n var roomEvents = {\n search_term: opts.query\n };\n\n if ('keys' in opts) {\n roomEvents.keys = opts.keys;\n }\n\n return this.search({\n body: {\n search_categories: {\n room_events: roomEvents\n }\n }\n }, callback);\n};\n\n/**\n * Perform a server-side search for room events.\n *\n * The returned promise resolves to an object containing the fields:\n *\n * * {number} count: estimate of the number of results\n * * {string} next_batch: token for back-pagination; if undefined, there are\n * no more results\n * * {Array} highlights: a list of words to highlight from the stemming\n * algorithm\n * * {Array} results: a list of results\n *\n * Each entry in the results list is a {module:models/search-result.SearchResult}.\n *\n * @param {Object} opts\n * @param {string} opts.term the term to search for\n * @param {Object} opts.filter a JSON filter object to pass in the request\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.searchRoomEvents = function (opts) {\n // TODO: support groups\n\n var body = {\n search_categories: {\n room_events: {\n search_term: opts.term,\n filter: opts.filter,\n order_by: \"recent\",\n event_context: {\n before_limit: 1,\n after_limit: 1,\n include_profile: true\n }\n }\n }\n };\n\n var searchResults = {\n _query: body,\n results: [],\n highlights: []\n };\n\n return this.search({ body: body }).then(this._processRoomEventsSearch.bind(this, searchResults));\n};\n\n/**\n * Take a result from an earlier searchRoomEvents call, and backfill results.\n *\n * @param {object} searchResults the results object to be updated\n * @return {module:client.Promise} Resolves: updated result object\n * @return {Error} Rejects: with an error response.\n */\nMatrixClient.prototype.backPaginateRoomEventsSearch = function (searchResults) {\n // TODO: we should implement a backoff (as per scrollback()) to deal more\n // nicely with HTTP errors.\n\n if (!searchResults.next_batch) {\n return _bluebird2.default.reject(new Error(\"Cannot backpaginate event search any further\"));\n }\n\n if (searchResults.pendingRequest) {\n // already a request in progress - return the existing promise\n return searchResults.pendingRequest;\n }\n\n var searchOpts = {\n body: searchResults._query,\n next_batch: searchResults.next_batch\n };\n\n var promise = this.search(searchOpts).then(this._processRoomEventsSearch.bind(this, searchResults)).finally(function () {\n searchResults.pendingRequest = null;\n });\n searchResults.pendingRequest = promise;\n\n return promise;\n};\n\n/**\n * helper for searchRoomEvents and backPaginateRoomEventsSearch. Processes the\n * response from the API call and updates the searchResults\n *\n * @param {Object} searchResults\n * @param {Object} response\n * @return {Object} searchResults\n * @private\n */\nMatrixClient.prototype._processRoomEventsSearch = function (searchResults, response) {\n var room_events = response.search_categories.room_events;\n\n searchResults.count = room_events.count;\n searchResults.next_batch = room_events.next_batch;\n\n // combine the highlight list with our existing list; build an object\n // to avoid O(N^2) fail\n var highlights = {};\n room_events.highlights.forEach(function (hl) {\n highlights[hl] = 1;\n });\n searchResults.highlights.forEach(function (hl) {\n highlights[hl] = 1;\n });\n\n // turn it back into a list.\n searchResults.highlights = (0, _keys2.default)(highlights);\n\n // append the new results to our existing results\n for (var i = 0; i < room_events.results.length; i++) {\n var sr = SearchResult.fromJson(room_events.results[i], this.getEventMapper());\n searchResults.results.push(sr);\n }\n return searchResults;\n};\n\n/**\n * Populate the store with rooms the user has left.\n * @return {module:client.Promise} Resolves: TODO - Resolved when the rooms have\n * been added to the data store.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.syncLeftRooms = function () {\n // Guard against multiple calls whilst ongoing and multiple calls post success\n if (this._syncedLeftRooms) {\n return _bluebird2.default.resolve([]); // don't call syncRooms again if it succeeded.\n }\n if (this._syncLeftRoomsPromise) {\n return this._syncLeftRoomsPromise; // return the ongoing request\n }\n var self = this;\n var syncApi = new SyncApi(this, this._clientOpts);\n this._syncLeftRoomsPromise = syncApi.syncLeftRooms();\n\n // cleanup locks\n this._syncLeftRoomsPromise.then(function (res) {\n console.log(\"Marking success of sync left room request\");\n self._syncedLeftRooms = true; // flip the bit on success\n }).finally(function () {\n self._syncLeftRoomsPromise = null; // cleanup ongoing request state\n });\n\n return this._syncLeftRoomsPromise;\n};\n\n// Filters\n// =======\n\n/**\n * Create a new filter.\n * @param {Object} content The HTTP body for the request\n * @return {Filter} Resolves to a Filter object.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.createFilter = function (content) {\n var self = this;\n var path = utils.encodeUri(\"/user/$userId/filter\", {\n $userId: this.credentials.userId\n });\n return this._http.authedRequest(undefined, \"POST\", path, undefined, content).then(function (response) {\n // persist the filter\n var filter = Filter.fromJson(self.credentials.userId, response.filter_id, content);\n self.store.storeFilter(filter);\n return filter;\n });\n};\n\n/**\n * Retrieve a filter.\n * @param {string} userId The user ID of the filter owner\n * @param {string} filterId The filter ID to retrieve\n * @param {boolean} allowCached True to allow cached filters to be returned.\n * Default: True.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.getFilter = function (userId, filterId, allowCached) {\n if (allowCached) {\n var filter = this.store.getFilter(userId, filterId);\n if (filter) {\n return _bluebird2.default.resolve(filter);\n }\n }\n\n var self = this;\n var path = utils.encodeUri(\"/user/$userId/filter/$filterId\", {\n $userId: userId,\n $filterId: filterId\n });\n\n return this._http.authedRequest(undefined, \"GET\", path, undefined, undefined).then(function (response) {\n // persist the filter\n var filter = Filter.fromJson(userId, filterId, response);\n self.store.storeFilter(filter);\n return filter;\n });\n};\n\n/**\n * @param {string} filterName\n * @param {Filter} filter\n * @return {Promise<String>} Filter ID\n */\nMatrixClient.prototype.getOrCreateFilter = function (filterName, filter) {\n var filterId = this.store.getFilterIdByName(filterName);\n var promise = _bluebird2.default.resolve();\n var self = this;\n\n if (filterId) {\n // check that the existing filter matches our expectations\n promise = self.getFilter(self.credentials.userId, filterId, true).then(function (existingFilter) {\n var oldDef = existingFilter.getDefinition();\n var newDef = filter.getDefinition();\n\n if (utils.deepCompare(oldDef, newDef)) {\n // super, just use that.\n // debuglog(\"Using existing filter ID %s: %s\", filterId,\n // JSON.stringify(oldDef));\n return _bluebird2.default.resolve(filterId);\n }\n // debuglog(\"Existing filter ID %s: %s; new filter: %s\",\n // filterId, JSON.stringify(oldDef), JSON.stringify(newDef));\n self.store.setFilterIdByName(filterName, undefined);\n return undefined;\n }, function (error) {\n // Synapse currently returns the following when the filter cannot be found:\n // {\n // errcode: \"M_UNKNOWN\",\n // name: \"M_UNKNOWN\",\n // message: \"No row found\",\n // data: Object, httpStatus: 404\n // }\n if (error.httpStatus === 404 && (error.errcode === \"M_UNKNOWN\" || error.errcode === \"M_NOT_FOUND\")) {\n // Clear existing filterId from localStorage\n // if it no longer exists on the server\n self.store.setFilterIdByName(filterName, undefined);\n // Return a undefined value for existingId further down the promise chain\n return undefined;\n } else {\n throw error;\n }\n });\n }\n\n return promise.then(function (existingId) {\n if (existingId) {\n return existingId;\n }\n\n // create a new filter\n return self.createFilter(filter.getDefinition()).then(function (createdFilter) {\n // debuglog(\"Created new filter ID %s: %s\", createdFilter.filterId,\n // JSON.stringify(createdFilter.getDefinition()));\n self.store.setFilterIdByName(filterName, createdFilter.filterId);\n return createdFilter.filterId;\n });\n });\n};\n\n/**\n * Gets a bearer token from the Home Server that the user can\n * present to a third party in order to prove their ownership\n * of the Matrix account they are logged into.\n * @return {module:client.Promise} Resolves: Token object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.getOpenIdToken = function () {\n var path = utils.encodeUri(\"/user/$userId/openid/request_token\", {\n $userId: this.credentials.userId\n });\n\n return this._http.authedRequest(undefined, \"POST\", path, undefined, {});\n};\n\n// VoIP operations\n// ===============\n\n/**\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.turnServer = function (callback) {\n return this._http.authedRequest(callback, \"GET\", \"/voip/turnServer\");\n};\n\n/**\n * Get the TURN servers for this home server.\n * @return {Array<Object>} The servers or an empty list.\n */\nMatrixClient.prototype.getTurnServers = function () {\n return this._turnServers || [];\n};\n\n// Higher level APIs\n// =================\n\n// TODO: stuff to handle:\n// local echo\n// event dup suppression? - apparently we should still be doing this\n// tracking current display name / avatar per-message\n// pagination\n// re-sending (including persisting pending messages to be sent)\n// - Need a nice way to callback the app for arbitrary events like\n// displayname changes\n// due to ambiguity (or should this be on a chat-specific layer)?\n// reconnect after connectivity outages\n\n\n/**\n * High level helper method to begin syncing and poll for new events. To listen for these\n * events, add a listener for {@link module:client~MatrixClient#event:\"event\"}\n * via {@link module:client~MatrixClient#on}. Alternatively, listen for specific\n * state change events.\n * @param {Object=} opts Options to apply when syncing.\n * @param {Number=} opts.initialSyncLimit The event <code>limit=</code> to apply\n * to initial sync. Default: 8.\n * @param {Boolean=} opts.includeArchivedRooms True to put <code>archived=true</code>\n * on the <code>/initialSync</code> request. Default: false.\n * @param {Boolean=} opts.resolveInvitesToProfiles True to do /profile requests\n * on every invite event if the displayname/avatar_url is not known for this user ID.\n * Default: false.\n *\n * @param {String=} opts.pendingEventOrdering Controls where pending messages\n * appear in a room's timeline. If \"<b>chronological</b>\", messages will appear\n * in the timeline when the call to <code>sendEvent</code> was made. If\n * \"<b>detached</b>\", pending messages will appear in a separate list,\n * accessbile via {@link module:models/room#getPendingEvents}. Default:\n * \"chronological\".\n *\n * @param {Number=} opts.pollTimeout The number of milliseconds to wait on /sync.\n * Default: 30000 (30 seconds).\n *\n * @param {Filter=} opts.filter The filter to apply to /sync calls. This will override\n * the opts.initialSyncLimit, which would normally result in a timeline limit filter.\n *\n * @param {Boolean=} opts.disablePresence True to perform syncing without automatically\n * updating presence.\n * @param {Boolean=} opts.lazyLoadMembers True to not load all membership events during\n * initial sync but fetch them when needed by calling `loadOutOfBandMembers`\n * This will override the filter option at this moment.\n */\nMatrixClient.prototype.startClient = function () {\n var _ref9 = (0, _bluebird.method)(function (opts) {\n var _this4 = this;\n\n if (this.clientRunning) {\n // client is already running.\n return;\n }\n this.clientRunning = true;\n // backwards compat for when 'opts' was 'historyLen'.\n if (typeof opts === \"number\") {\n opts = {\n initialSyncLimit: opts\n };\n }\n\n if (this._crypto) {\n this._crypto.uploadDeviceKeys().done();\n this._crypto.start();\n }\n\n // periodically poll for turn servers if we support voip\n checkTurnServers(this);\n\n if (this._syncApi) {\n // This shouldn't happen since we thought the client was not running\n console.error(\"Still have sync object whilst not running: stopping old one\");\n this._syncApi.stop();\n }\n\n // shallow-copy the opts dict before modifying and storing it\n opts = (0, _assign2.default)({}, opts);\n\n opts.crypto = this._crypto;\n opts.canResetEntireTimeline = function (roomId) {\n if (!_this4._canResetTimelineCallback) {\n return false;\n }\n return _this4._canResetTimelineCallback(roomId);\n };\n this._clientOpts = opts;\n this._syncApi = new SyncApi(this, opts);\n this._syncApi.sync();\n });\n\n return function (_x18) {\n return _ref9.apply(this, arguments);\n };\n}();\n\n/**\n * store client options with boolean/string/numeric values\n * to know in the next session what flags the sync data was\n * created with (e.g. lazy loading)\n * @param {object} opts the complete set of client options\n * @return {Promise} for store operation */\nMatrixClient.prototype._storeClientOptions = function () {\n var primTypes = [\"boolean\", \"string\", \"number\"];\n var serializableOpts = (0, _entries2.default)(this._clientOpts).filter(function (_ref10) {\n var _ref11 = (0, _slicedToArray3.default)(_ref10, 2),\n key = _ref11[0],\n value = _ref11[1];\n\n return primTypes.includes(typeof value === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(value));\n }).reduce(function (obj, _ref12) {\n var _ref13 = (0, _slicedToArray3.default)(_ref12, 2),\n key = _ref13[0],\n value = _ref13[1];\n\n obj[key] = value;\n return obj;\n }, {});\n return this.store.storeClientOptions(serializableOpts);\n};\n\n/**\n * High level helper method to stop the client from polling and allow a\n * clean shutdown.\n */\nMatrixClient.prototype.stopClient = function () {\n console.log('stopping MatrixClient');\n\n this.clientRunning = false;\n // TODO: f.e. Room => self.store.storeRoom(room) ?\n if (this._syncApi) {\n this._syncApi.stop();\n this._syncApi = null;\n }\n if (this._crypto) {\n this._crypto.stop();\n }\n if (this._peekSync) {\n this._peekSync.stopPeeking();\n }\n global.clearTimeout(this._checkTurnServersTimeoutID);\n};\n\n/*\n * Query the server to see if it support members lazy loading\n * @return {Promise<boolean>} true if server supports lazy loading\n */\nMatrixClient.prototype.doesServerSupportLazyLoading = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee6() {\n var response, unstableFeatures;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n if (!(this._serverSupportsLazyLoading === null)) {\n _context6.next = 6;\n break;\n }\n\n _context6.next = 3;\n return (0, _bluebird.resolve)(this._http.request(undefined, // callback\n \"GET\", \"/_matrix/client/versions\", undefined, // queryParams\n undefined, // data\n {\n prefix: ''\n }));\n\n case 3:\n response = _context6.sent;\n unstableFeatures = response[\"unstable_features\"];\n\n this._serverSupportsLazyLoading = unstableFeatures && unstableFeatures[\"m.lazy_load_members\"];\n\n case 6:\n return _context6.abrupt(\"return\", this._serverSupportsLazyLoading);\n\n case 7:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n}));\n\n/*\n * Get if lazy loading members is being used.\n * @return {boolean} Whether or not members are lazy loaded by this client\n */\nMatrixClient.prototype.hasLazyLoadMembersEnabled = function () {\n return !!this._clientOpts.lazyLoadMembers;\n};\n\n/*\n * Set a function which is called when /sync returns a 'limited' response.\n * It is called with a room ID and returns a boolean. It should return 'true' if the SDK\n * can SAFELY remove events from this room. It may not be safe to remove events if there\n * are other references to the timelines for this room, e.g because the client is\n * actively viewing events in this room.\n * Default: returns false.\n * @param {Function} cb The callback which will be invoked.\n */\nMatrixClient.prototype.setCanResetTimelineCallback = function (cb) {\n this._canResetTimelineCallback = cb;\n};\n\n/**\n * Get the callback set via `setCanResetTimelineCallback`.\n * @return {?Function} The callback or null\n */\nMatrixClient.prototype.getCanResetTimelineCallback = function () {\n return this._canResetTimelineCallback;\n};\n\nfunction setupCallEventHandler(client) {\n var candidatesByCall = {\n // callId: [Candidate]\n };\n\n // Maintain a buffer of events before the client has synced for the first time.\n // This buffer will be inspected to see if we should send incoming call\n // notifications. It needs to be buffered to correctly determine if an\n // incoming call has had a matching answer/hangup.\n var callEventBuffer = [];\n var isClientPrepared = false;\n client.on(\"sync\", function (state) {\n if (state === \"PREPARED\") {\n isClientPrepared = true;\n var ignoreCallIds = {}; // Set<String>\n // inspect the buffer and mark all calls which have been answered\n // or hung up before passing them to the call event handler.\n for (var i = callEventBuffer.length - 1; i >= 0; i--) {\n var ev = callEventBuffer[i];\n if (ev.getType() === \"m.call.answer\" || ev.getType() === \"m.call.hangup\") {\n ignoreCallIds[ev.getContent().call_id] = \"yep\";\n }\n }\n // now loop through the buffer chronologically and inject them\n callEventBuffer.forEach(function (e) {\n if (ignoreCallIds[e.getContent().call_id]) {\n // This call has previously been ansered or hung up: ignore it\n return;\n }\n callEventHandler(e);\n });\n callEventBuffer = [];\n }\n });\n\n client.on(\"event\", onEvent);\n\n function onEvent(event) {\n if (event.getType().indexOf(\"m.call.\") !== 0) {\n // not a call event\n if (event.isBeingDecrypted() || event.isDecryptionFailure()) {\n // not *yet* a call event, but might become one...\n event.once(\"Event.decrypted\", onEvent);\n }\n return;\n }\n if (!isClientPrepared) {\n callEventBuffer.push(event);\n return;\n }\n callEventHandler(event);\n }\n\n function callEventHandler(event) {\n var content = event.getContent();\n var call = content.call_id ? client.callList[content.call_id] : undefined;\n var i = void 0;\n //console.log(\"RECV %s content=%s\", event.getType(), JSON.stringify(content));\n\n if (event.getType() === \"m.call.invite\") {\n if (event.getSender() === client.credentials.userId) {\n return; // ignore invites you send\n }\n\n if (event.getAge() > content.lifetime) {\n return; // expired call\n }\n\n if (call && call.state === \"ended\") {\n return; // stale/old invite event\n }\n if (call) {\n console.log(\"WARN: Already have a MatrixCall with id %s but got an \" + \"invite. Clobbering.\", content.call_id);\n }\n\n call = webRtcCall.createNewMatrixCall(client, event.getRoomId(), {\n forceTURN: client._forceTURN\n });\n if (!call) {\n console.log(\"Incoming call ID \" + content.call_id + \" but this client \" + \"doesn't support WebRTC\");\n // don't hang up the call: there could be other clients\n // connected that do support WebRTC and declining the\n // the call on their behalf would be really annoying.\n return;\n }\n\n call.callId = content.call_id;\n call._initWithInvite(event);\n client.callList[call.callId] = call;\n\n // if we stashed candidate events for that call ID, play them back now\n if (candidatesByCall[call.callId]) {\n for (i = 0; i < candidatesByCall[call.callId].length; i++) {\n call._gotRemoteIceCandidate(candidatesByCall[call.callId][i]);\n }\n }\n\n // Were we trying to call that user (room)?\n var existingCall = void 0;\n var existingCalls = utils.values(client.callList);\n for (i = 0; i < existingCalls.length; ++i) {\n var thisCall = existingCalls[i];\n if (call.roomId === thisCall.roomId && thisCall.direction === 'outbound' && [\"wait_local_media\", \"create_offer\", \"invite_sent\"].indexOf(thisCall.state) !== -1) {\n existingCall = thisCall;\n break;\n }\n }\n\n if (existingCall) {\n // If we've only got to wait_local_media or create_offer and\n // we've got an invite, pick the incoming call because we know\n // we haven't sent our invite yet otherwise, pick whichever\n // call has the lowest call ID (by string comparison)\n if (existingCall.state === 'wait_local_media' || existingCall.state === 'create_offer' || existingCall.callId > call.callId) {\n console.log(\"Glare detected: answering incoming call \" + call.callId + \" and canceling outgoing call \" + existingCall.callId);\n existingCall._replacedBy(call);\n call.answer();\n } else {\n console.log(\"Glare detected: rejecting incoming call \" + call.callId + \" and keeping outgoing call \" + existingCall.callId);\n call.hangup();\n }\n } else {\n client.emit(\"Call.incoming\", call);\n }\n } else if (event.getType() === 'm.call.answer') {\n if (!call) {\n return;\n }\n if (event.getSender() === client.credentials.userId) {\n if (call.state === 'ringing') {\n call._onAnsweredElsewhere(content);\n }\n } else {\n call._receivedAnswer(content);\n }\n } else if (event.getType() === 'm.call.candidates') {\n if (event.getSender() === client.credentials.userId) {\n return;\n }\n if (!call) {\n // store the candidates; we may get a call eventually.\n if (!candidatesByCall[content.call_id]) {\n candidatesByCall[content.call_id] = [];\n }\n candidatesByCall[content.call_id] = candidatesByCall[content.call_id].concat(content.candidates);\n } else {\n for (i = 0; i < content.candidates.length; i++) {\n call._gotRemoteIceCandidate(content.candidates[i]);\n }\n }\n } else if (event.getType() === 'm.call.hangup') {\n // Note that we also observe our own hangups here so we can see\n // if we've already rejected a call that would otherwise be valid\n if (!call) {\n // if not live, store the fact that the call has ended because\n // we're probably getting events backwards so\n // the hangup will come before the invite\n call = webRtcCall.createNewMatrixCall(client, event.getRoomId());\n if (call) {\n call.callId = content.call_id;\n call._initWithHangup(event);\n client.callList[content.call_id] = call;\n }\n } else {\n if (call.state !== 'ended') {\n call._onHangupReceived(content);\n delete client.callList[content.call_id];\n }\n }\n }\n }\n}\n\nfunction checkTurnServers(client) {\n if (!client._supportsVoip) {\n return;\n }\n if (client.isGuest()) {\n return; // guests can't access TURN servers\n }\n\n client.turnServer().done(function (res) {\n if (res.uris) {\n console.log(\"Got TURN URIs: \" + res.uris + \" refresh in \" + res.ttl + \" secs\");\n // map the response to a format that can be fed to\n // RTCPeerConnection\n var servers = {\n urls: res.uris,\n username: res.username,\n credential: res.password\n };\n client._turnServers = [servers];\n // re-fetch when we're about to reach the TTL\n client._checkTurnServersTimeoutID = setTimeout(function () {\n checkTurnServers(client);\n }, (res.ttl || 60 * 60) * 1000 * 0.9);\n }\n }, function (err) {\n console.error(\"Failed to get TURN URIs\");\n client._checkTurnServersTimeoutID = setTimeout(function () {\n checkTurnServers(client);\n }, 60000);\n });\n}\n\nfunction _reject(callback, defer, err) {\n if (callback) {\n callback(err);\n }\n defer.reject(err);\n}\n\nfunction _resolve(callback, defer, res) {\n if (callback) {\n callback(null, res);\n }\n defer.resolve(res);\n}\n\nfunction _PojoToMatrixEventMapper(client) {\n function mapper(plainOldJsObject) {\n var event = new MatrixEvent(plainOldJsObject);\n if (event.isEncrypted()) {\n client.reEmitter.reEmit(event, [\"Event.decrypted\"]);\n event.attemptDecryption(client._crypto);\n }\n return event;\n }\n return mapper;\n}\n\n/**\n * @return {Function}\n */\nMatrixClient.prototype.getEventMapper = function () {\n return _PojoToMatrixEventMapper(this);\n};\n\n// Identity Server Operations\n// ==========================\n\n/**\n * Generates a random string suitable for use as a client secret. <strong>This\n * method is experimental and may change.</strong>\n * @return {string} A new client secret\n */\nMatrixClient.prototype.generateClientSecret = function () {\n return (0, _randomstring.randomString)(32);\n};\n\n/** */\nmodule.exports.MatrixClient = MatrixClient;\n/** */\nmodule.exports.CRYPTO_ENABLED = CRYPTO_ENABLED;\n\n// MatrixClient Event JSDocs\n\n/**\n * Fires whenever the SDK receives a new event.\n * <p>\n * This is only fired for live events received via /sync - it is not fired for\n * events received over context, search, or pagination APIs.\n *\n * @event module:client~MatrixClient#\"event\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @example\n * matrixClient.on(\"event\", function(event){\n * var sender = event.getSender();\n * });\n */\n\n/**\n * Fires whenever the SDK receives a new to-device event.\n * @event module:client~MatrixClient#\"toDeviceEvent\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @example\n * matrixClient.on(\"toDeviceEvent\", function(event){\n * var sender = event.getSender();\n * });\n */\n\n/**\n * Fires whenever the SDK's syncing state is updated. The state can be one of:\n * <ul>\n *\n * <li>PREPARED: The client has synced with the server at least once and is\n * ready for methods to be called on it. This will be immediately followed by\n * a state of SYNCING. <i>This is the equivalent of \"syncComplete\" in the\n * previous API.</i></li>\n *\n * <li>CATCHUP: The client has detected the connection to the server might be\n * available again and will now try to do a sync again. As this sync might take\n * a long time (depending how long ago was last synced, and general server\n * performance) the client is put in this mode so the UI can reflect trying\n * to catch up with the server after losing connection.</li>\n *\n * <li>SYNCING : The client is currently polling for new events from the server.\n * This will be called <i>after</i> processing latest events from a sync.</li>\n *\n * <li>ERROR : The client has had a problem syncing with the server. If this is\n * called <i>before</i> PREPARED then there was a problem performing the initial\n * sync. If this is called <i>after</i> PREPARED then there was a problem polling\n * the server for updates. This may be called multiple times even if the state is\n * already ERROR. <i>This is the equivalent of \"syncError\" in the previous\n * API.</i></li>\n *\n * <li>RECONNECTING: The sync connection has dropped, but not (yet) in a way that\n * should be considered erroneous.\n * </li>\n *\n * <li>STOPPED: The client has stopped syncing with server due to stopClient\n * being called.\n * </li>\n * </ul>\n * State transition diagram:\n * <pre>\n * +---->STOPPED\n * |\n * +----->PREPARED -------> SYNCING <--+\n * | ^ | ^ |\n * | CATCHUP ----------+ | | |\n * | ^ V | |\n * null ------+ | +------- RECONNECTING |\n * | V V |\n * +------->ERROR ---------------------+\n *\n * NB: 'null' will never be emitted by this event.\n *\n * </pre>\n * Transitions:\n * <ul>\n *\n * <li><code>null -> PREPARED</code> : Occurs when the initial sync is completed\n * first time. This involves setting up filters and obtaining push rules.\n *\n * <li><code>null -> ERROR</code> : Occurs when the initial sync failed first time.\n *\n * <li><code>ERROR -> PREPARED</code> : Occurs when the initial sync succeeds\n * after previously failing.\n *\n * <li><code>PREPARED -> SYNCING</code> : Occurs immediately after transitioning\n * to PREPARED. Starts listening for live updates rather than catching up.\n *\n * <li><code>SYNCING -> RECONNECTING</code> : Occurs when the live update fails.\n *\n * <li><code>RECONNECTING -> RECONNECTING</code> : Can occur if the update calls\n * continue to fail, but the keepalive calls (to /versions) succeed.\n *\n * <li><code>RECONNECTING -> ERROR</code> : Occurs when the keepalive call also fails\n *\n * <li><code>ERROR -> SYNCING</code> : Occurs when the client has performed a\n * live update after having previously failed.\n *\n * <li><code>ERROR -> ERROR</code> : Occurs when the client has failed to keepalive\n * for a second time or more.</li>\n *\n * <li><code>SYNCING -> SYNCING</code> : Occurs when the client has performed a live\n * update. This is called <i>after</i> processing.</li>\n *\n * <li><code>* -> STOPPED</code> : Occurs once the client has stopped syncing or\n * trying to sync after stopClient has been called.</li>\n * </ul>\n *\n * @event module:client~MatrixClient#\"sync\"\n *\n * @param {string} state An enum representing the syncing state. One of \"PREPARED\",\n * \"SYNCING\", \"ERROR\", \"STOPPED\".\n *\n * @param {?string} prevState An enum representing the previous syncing state.\n * One of \"PREPARED\", \"SYNCING\", \"ERROR\", \"STOPPED\" <b>or null</b>.\n *\n * @param {?Object} data Data about this transition.\n *\n * @param {MatrixError} data.error The matrix error if <code>state=ERROR</code>.\n *\n * @param {String} data.oldSyncToken The 'since' token passed to /sync.\n * <code>null</code> for the first successful sync since this client was\n * started. Only present if <code>state=PREPARED</code> or\n * <code>state=SYNCING</code>.\n *\n * @param {String} data.nextSyncToken The 'next_batch' result from /sync, which\n * will become the 'since' token for the next call to /sync. Only present if\n * <code>state=PREPARED</code> or <code>state=SYNCING</code>.\n *\n * @param {boolean} data.catchingUp True if we are working our way through a\n * backlog of events after connecting. Only present if <code>state=SYNCING</code>.\n *\n * @example\n * matrixClient.on(\"sync\", function(state, prevState, data) {\n * switch (state) {\n * case \"ERROR\":\n * // update UI to say \"Connection Lost\"\n * break;\n * case \"SYNCING\":\n * // update UI to remove any \"Connection Lost\" message\n * break;\n * case \"PREPARED\":\n * // the client instance is ready to be queried.\n * var rooms = matrixClient.getRooms();\n * break;\n * }\n * });\n */\n\n/**\n* Fires whenever the sdk learns about a new group. <strong>This event\n* is experimental and may change.</strong>\n* @event module:client~MatrixClient#\"Group\"\n* @param {Group} group The newly created, fully populated group.\n* @example\n* matrixClient.on(\"Group\", function(group){\n* var groupId = group.groupId;\n* });\n*/\n\n/**\n* Fires whenever a new Room is added. This will fire when you are invited to a\n* room, as well as when you join a room. <strong>This event is experimental and\n* may change.</strong>\n* @event module:client~MatrixClient#\"Room\"\n* @param {Room} room The newly created, fully populated room.\n* @example\n* matrixClient.on(\"Room\", function(room){\n* var roomId = room.roomId;\n* });\n*/\n\n/**\n* Fires whenever a Room is removed. This will fire when you forget a room.\n* <strong>This event is experimental and may change.</strong>\n* @event module:client~MatrixClient#\"deleteRoom\"\n* @param {string} roomId The deleted room ID.\n* @example\n* matrixClient.on(\"deleteRoom\", function(roomId){\n* // update UI from getRooms()\n* });\n*/\n\n/**\n * Fires whenever an incoming call arrives.\n * @event module:client~MatrixClient#\"Call.incoming\"\n * @param {module:webrtc/call~MatrixCall} call The incoming call.\n * @example\n * matrixClient.on(\"Call.incoming\", function(call){\n * call.answer(); // auto-answer\n * });\n */\n\n/**\n * Fires whenever the login session the JS SDK is using is no\n * longer valid and the user must log in again.\n * NB. This only fires when action is required from the user, not\n * when then login session can be renewed by using a refresh token.\n * @event module:client~MatrixClient#\"Session.logged_out\"\n * @example\n * matrixClient.on(\"Session.logged_out\", function(call){\n * // show the login screen\n * });\n */\n\n/**\n * Fires when the JS SDK receives a M_CONSENT_NOT_GIVEN error in response\n * to a HTTP request.\n * @event module:client~MatrixClient#\"no_consent\"\n * @example\n * matrixClient.on(\"no_consent\", function(message, contentUri) {\n * console.info(message + ' Go to ' + contentUri);\n * });\n */\n\n/**\n * Fires when a device is marked as verified/unverified/blocked/unblocked by\n * {@link module:client~MatrixClient#setDeviceVerified|MatrixClient.setDeviceVerified} or\n * {@link module:client~MatrixClient#setDeviceBlocked|MatrixClient.setDeviceBlocked}.\n *\n * @event module:client~MatrixClient#\"deviceVerificationChanged\"\n * @param {string} userId the owner of the verified device\n * @param {string} deviceId the id of the verified device\n * @param {module:crypto/deviceinfo} deviceInfo updated device information\n */\n\n/**\n * Fires whenever new user-scoped account_data is added.\n * @event module:client~MatrixClient#\"accountData\"\n * @param {MatrixEvent} event The event describing the account_data just added\n * @example\n * matrixClient.on(\"accountData\", function(event){\n * myAccountData[event.type] = event.content;\n * });\n */\n\n/**\n * Fires whenever the status of e2e key backup changes, as returned by getKeyBackupEnabled()\n * @event module:client~MatrixClient#\"crypto.keyBackupStatus\"\n * @param {bool} enabled true if key backup has been enabled, otherwise false\n * @example\n * matrixClient.on(\"crypto.keyBackupStatus\", function(enabled){\n * if (enabled) {\n * [...]\n * }\n * });\n */\n\n/**\n * Fires when we want to suggest to the user that they restore their megolm keys\n * from backup or by cross-signing the device.\n *\n * @event module:client~MatrixClient#\"crypto.suggestKeyRestore\"\n */\n\n// EventEmitter JSDocs\n\n/**\n * The {@link https://nodejs.org/api/events.html|EventEmitter} class.\n * @external EventEmitter\n * @see {@link https://nodejs.org/api/events.html}\n */\n\n/**\n * Adds a listener to the end of the listeners array for the specified event.\n * No checks are made to see if the listener has already been added. Multiple\n * calls passing the same combination of event and listener will result in the\n * listener being added multiple times.\n * @function external:EventEmitter#on\n * @param {string} event The event to listen for.\n * @param {Function} listener The function to invoke.\n * @return {EventEmitter} for call chaining.\n */\n\n/**\n * Alias for {@link external:EventEmitter#on}.\n * @function external:EventEmitter#addListener\n * @param {string} event The event to listen for.\n * @param {Function} listener The function to invoke.\n * @return {EventEmitter} for call chaining.\n */\n\n/**\n * Adds a <b>one time</b> listener for the event. This listener is invoked only\n * the next time the event is fired, after which it is removed.\n * @function external:EventEmitter#once\n * @param {string} event The event to listen for.\n * @param {Function} listener The function to invoke.\n * @return {EventEmitter} for call chaining.\n */\n\n/**\n * Remove a listener from the listener array for the specified event.\n * <b>Caution:</b> changes array indices in the listener array behind the\n * listener.\n * @function external:EventEmitter#removeListener\n * @param {string} event The event to listen for.\n * @param {Function} listener The function to invoke.\n * @return {EventEmitter} for call chaining.\n */\n\n/**\n * Removes all listeners, or those of the specified event. It's not a good idea\n * to remove listeners that were added elsewhere in the code, especially when\n * it's on an emitter that you didn't create (e.g. sockets or file streams).\n * @function external:EventEmitter#removeAllListeners\n * @param {string} event Optional. The event to remove listeners for.\n * @return {EventEmitter} for call chaining.\n */\n\n/**\n * Execute each of the listeners in order with the supplied arguments.\n * @function external:EventEmitter#emit\n * @param {string} event The event to emit.\n * @param {Function} listener The function to invoke.\n * @return {boolean} true if event had listeners, false otherwise.\n */\n\n/**\n * By default EventEmitters will print a warning if more than 10 listeners are\n * added for a particular event. This is a useful default which helps finding\n * memory leaks. Obviously not all Emitters should be limited to 10. This\n * function allows that to be increased. Set to zero for unlimited.\n * @function external:EventEmitter#setMaxListeners\n * @param {Number} n The max number of listeners.\n * @return {EventEmitter} for call chaining.\n */\n\n// MatrixClient Callback JSDocs\n\n/**\n * The standard MatrixClient callback interface. Functions which accept this\n * will specify 2 return arguments. These arguments map to the 2 parameters\n * specified in this callback.\n * @callback module:client.callback\n * @param {Object} err The error value, the \"rejected\" value or null.\n * @param {Object} data The data returned, the \"resolved\" value.\n */\n\n/**\n * {@link https://github.com/kriskowal/q|A promise implementation (Q)}. Functions\n * which return this will specify 2 return arguments. These arguments map to the\n * \"onFulfilled\" and \"onRejected\" values of the Promise.\n * @typedef {Object} Promise\n * @static\n * @property {Function} then promise.then(onFulfilled, onRejected, onProgress)\n * @property {Function} catch promise.catch(onRejected)\n * @property {Function} finally promise.finally(callback)\n * @property {Function} done promise.done(onFulfilled, onRejected, onProgress)\n */\n//# sourceMappingURL=client.js.map","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar global = require('./_global');\nvar core = require('./_core');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar meta = require('./_meta');\nvar fails = require('./_fails');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar setToStringTag = require('./_set-to-string-tag');\nvar dP = require('./_object-dp').f;\nvar each = require('./_array-methods')(0);\nvar DESCRIPTORS = require('./_descriptors');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME, '_c');\n target._c = new Base();\n if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target);\n });\n each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {\n var IS_ADDER = KEY == 'add' || KEY == 'set';\n if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) {\n anInstance(this, C, KEY);\n if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;\n var result = this._c[KEY](a === 0 ? 0 : a, b);\n return IS_ADDER ? this : result;\n });\n });\n IS_WEAK || dP(C.prototype, 'size', {\n get: function () {\n return this._c.size;\n }\n });\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F, O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n return from(this);\n };\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = new Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n","var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * @module\n */\n\nvar Reemitter = function () {\n function Reemitter(target) {\n (0, _classCallCheck3.default)(this, Reemitter);\n\n this.target = target;\n\n // We keep one bound event handler for each event name so we know\n // what event is arriving\n this.boundHandlers = {};\n }\n\n (0, _createClass3.default)(Reemitter, [{\n key: \"_handleEvent\",\n value: function _handleEvent(eventName) {\n var _target;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_target = this.target).emit.apply(_target, [eventName].concat(args));\n }\n }, {\n key: \"reEmit\",\n value: function reEmit(source, eventNames) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(eventNames), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var eventName = _step.value;\n\n if (this.boundHandlers[eventName] === undefined) {\n this.boundHandlers[eventName] = this._handleEvent.bind(this, eventName);\n }\n var boundHandler = this.boundHandlers[eventName];\n\n source.on(eventName, boundHandler);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }]);\n return Reemitter;\n}();\n\nexports.default = Reemitter;\n//# sourceMappingURL=ReEmitter.js.map","/* Copyright 2015 Mark Haines\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n'use strict';\n\nvar escaped = /[\\\\\\\"\\x00-\\x1F]/g;\nvar escapes = {};\nfor (var i = 0; i < 0x20; ++i) {\n escapes[String.fromCharCode(i)] = (\n '\\\\U' + ('0000' + i.toString(16)).slice(-4).toUpperCase()\n );\n}\nescapes['\\b'] = '\\\\b';\nescapes['\\t'] = '\\\\t';\nescapes['\\n'] = '\\\\n';\nescapes['\\f'] = '\\\\f';\nescapes['\\r'] = '\\\\r';\nescapes['\\\"'] = '\\\\\\\"';\nescapes['\\\\'] = '\\\\\\\\';\n\nfunction escapeString(value) {\n escaped.lastIndex = 0;\n return value.replace(escaped, function(c) { return escapes[c]; });\n}\n\nfunction stringify(value) {\n switch (typeof value) {\n case 'string':\n return '\"' + escapeString(value) + '\"';\n case 'number':\n return isFinite(value) ? value : 'null';\n case 'boolean':\n return value;\n case 'object':\n if (value === null) {\n return 'null';\n }\n if (Array.isArray(value)) {\n return stringifyArray(value);\n }\n return stringifyObject(value);\n default:\n throw new Error('Cannot stringify: ' + typeof value);\n }\n}\n\nfunction stringifyArray(array) {\n var sep = '[';\n var result = '';\n for (var i = 0; i < array.length; ++i) {\n result += sep;\n sep = ',';\n result += stringify(array[i]);\n }\n if (sep != ',') {\n return '[]';\n } else {\n return result + ']';\n }\n}\n\nfunction stringifyObject(object) {\n var sep = '{';\n var result = '';\n var keys = Object.keys(object);\n keys.sort();\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n result += sep + '\"' + escapeString(key) + '\":';\n sep = ',';\n result += stringify(object[key]);\n }\n if (sep != ',') {\n return '{}';\n } else {\n return result + '}';\n }\n}\n\n/** */\nmodule.exports = {stringify: stringify};\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.randomString = randomString;\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction randomString(len) {\n var ret = \"\";\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\n for (var i = 0; i < len; ++i) {\n ret += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n\n return ret;\n}\n//# sourceMappingURL=randomstring.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/room-state\n */\n\nvar _isFinite = require(\"babel-runtime/core-js/number/is-finite\");\n\nvar _isFinite2 = _interopRequireDefault(_isFinite);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _values = require(\"babel-runtime/core-js/object/values\");\n\nvar _values2 = _interopRequireDefault(_values);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EventEmitter = require(\"events\").EventEmitter;\n\nvar utils = require(\"../utils\");\nvar RoomMember = require(\"./room-member\");\n\n// possible statuses for out-of-band member loading\nvar OOB_STATUS_NOTSTARTED = 1;\nvar OOB_STATUS_INPROGRESS = 2;\nvar OOB_STATUS_FINISHED = 3;\n\n/**\n * Construct room state.\n *\n * Room State represents the state of the room at a given point.\n * It can be mutated by adding state events to it.\n * There are two types of room member associated with a state event:\n * normal member objects (accessed via getMember/getMembers) which mutate\n * with the state to represent the current state of that room/user, eg.\n * the object returned by getMember('@bob:example.com') will mutate to\n * get a different display name if Bob later changes his display name\n * in the room.\n * There are also 'sentinel' members (accessed via getSentinelMember).\n * These also represent the state of room members at the point in time\n * represented by the RoomState object, but unlike objects from getMember,\n * sentinel objects will always represent the room state as at the time\n * getSentinelMember was called, so if Bob subsequently changes his display\n * name, a room member object previously acquired with getSentinelMember\n * will still have his old display name. Calling getSentinelMember again\n * after the display name change will return a new RoomMember object\n * with Bob's new display name.\n *\n * @constructor\n * @param {?string} roomId Optional. The ID of the room which has this state.\n * If none is specified it just tracks paginationTokens, useful for notifTimelineSet\n * @param {?object} oobMemberFlags Optional. The state of loading out of bound members.\n * As the timeline might get reset while they are loading, this state needs to be inherited\n * and shared when the room state is cloned for the new timeline.\n * This should only be passed from clone.\n * @prop {Object.<string, RoomMember>} members The room member dictionary, keyed\n * on the user's ID.\n * @prop {Object.<string, Object.<string, MatrixEvent>>} events The state\n * events dictionary, keyed on the event type and then the state_key value.\n * @prop {string} paginationToken The pagination token for this state.\n */\nfunction RoomState(roomId) {\n var oobMemberFlags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n this.roomId = roomId;\n this.members = {\n // userId: RoomMember\n };\n this.events = {\n // eventType: { stateKey: MatrixEvent }\n };\n this.paginationToken = null;\n\n this._sentinels = {\n // userId: RoomMember\n };\n this._updateModifiedTime();\n\n // stores fuzzy matches to a list of userIDs (applies utils.removeHiddenChars to keys)\n this._displayNameToUserIds = {};\n this._userIdsToDisplayNames = {};\n this._tokenToInvite = {}; // 3pid invite state_key to m.room.member invite\n this._joinedMemberCount = null; // cache of the number of joined members\n // joined members count from summary api\n // once set, we know the server supports the summary api\n // and we should only trust that\n // we could also only trust that before OOB members\n // are loaded but doesn't seem worth the hassle atm\n this._summaryJoinedMemberCount = null;\n // same for invited member count\n this._invitedMemberCount = null;\n this._summaryInvitedMemberCount = null;\n\n if (!oobMemberFlags) {\n oobMemberFlags = {\n status: OOB_STATUS_NOTSTARTED\n };\n }\n this._oobMemberFlags = oobMemberFlags;\n}\nutils.inherits(RoomState, EventEmitter);\n\n/**\n * Returns the number of joined members in this room\n * This method caches the result.\n * @return {integer} The number of members in this room whose membership is 'join'\n */\nRoomState.prototype.getJoinedMemberCount = function () {\n if (this._summaryJoinedMemberCount !== null) {\n return this._summaryJoinedMemberCount;\n }\n if (this._joinedMemberCount === null) {\n this._joinedMemberCount = this.getMembers().reduce(function (count, m) {\n return m.membership === 'join' ? count + 1 : count;\n }, 0);\n }\n return this._joinedMemberCount;\n};\n\n/**\n * Set the joined member count explicitly (like from summary part of the sync response)\n * @param {number} count the amount of joined members\n */\nRoomState.prototype.setJoinedMemberCount = function (count) {\n this._summaryJoinedMemberCount = count;\n};\n/**\n * Returns the number of invited members in this room\n * @return {integer} The number of members in this room whose membership is 'invite'\n */\nRoomState.prototype.getInvitedMemberCount = function () {\n if (this._summaryInvitedMemberCount !== null) {\n return this._summaryInvitedMemberCount;\n }\n if (this._invitedMemberCount === null) {\n this._invitedMemberCount = this.getMembers().reduce(function (count, m) {\n return m.membership === 'invite' ? count + 1 : count;\n }, 0);\n }\n return this._invitedMemberCount;\n};\n\n/**\n * Set the amount of invited members in this room\n * @param {number} count the amount of invited members\n */\nRoomState.prototype.setInvitedMemberCount = function (count) {\n this._summaryInvitedMemberCount = count;\n};\n\n/**\n * Get all RoomMembers in this room.\n * @return {Array<RoomMember>} A list of RoomMembers.\n */\nRoomState.prototype.getMembers = function () {\n return utils.values(this.members);\n};\n\n/**\n * Get all RoomMembers in this room, excluding the user IDs provided.\n * @param {Array<string>} excludedIds The user IDs to exclude.\n * @return {Array<RoomMember>} A list of RoomMembers.\n */\nRoomState.prototype.getMembersExcept = function (excludedIds) {\n return utils.values(this.members).filter(function (m) {\n return !excludedIds.includes(m.userId);\n });\n};\n\n/**\n * Get a room member by their user ID.\n * @param {string} userId The room member's user ID.\n * @return {RoomMember} The member or null if they do not exist.\n */\nRoomState.prototype.getMember = function (userId) {\n return this.members[userId] || null;\n};\n\n/**\n * Get a room member whose properties will not change with this room state. You\n * typically want this if you want to attach a RoomMember to a MatrixEvent which\n * may no longer be represented correctly by Room.currentState or Room.oldState.\n * The term 'sentinel' refers to the fact that this RoomMember is an unchanging\n * guardian for state at this particular point in time.\n * @param {string} userId The room member's user ID.\n * @return {RoomMember} The member or null if they do not exist.\n */\nRoomState.prototype.getSentinelMember = function (userId) {\n if (!userId) return null;\n var sentinel = this._sentinels[userId];\n\n if (sentinel === undefined) {\n sentinel = new RoomMember(this.roomId, userId);\n var member = this.members[userId];\n if (member) {\n sentinel.setMembershipEvent(member.events.member, this);\n }\n this._sentinels[userId] = sentinel;\n }\n return sentinel;\n};\n\n/**\n * Get state events from the state of the room.\n * @param {string} eventType The event type of the state event.\n * @param {string} stateKey Optional. The state_key of the state event. If\n * this is <code>undefined</code> then all matching state events will be\n * returned.\n * @return {MatrixEvent[]|MatrixEvent} A list of events if state_key was\n * <code>undefined</code>, else a single event (or null if no match found).\n */\nRoomState.prototype.getStateEvents = function (eventType, stateKey) {\n if (!this.events[eventType]) {\n // no match\n return stateKey === undefined ? [] : null;\n }\n if (stateKey === undefined) {\n // return all values\n return utils.values(this.events[eventType]);\n }\n var event = this.events[eventType][stateKey];\n return event ? event : null;\n};\n\n/**\n * Creates a copy of this room state so that mutations to either won't affect the other.\n * @return {RoomState} the copy of the room state\n */\nRoomState.prototype.clone = function () {\n var copy = new RoomState(this.roomId, this._oobMemberFlags);\n\n // Ugly hack: because setStateEvents will mark\n // members as susperseding future out of bound members\n // if loading is in progress (through _oobMemberFlags)\n // since these are not new members, we're merely copying them\n // set the status to not started\n // after copying, we set back the status\n var status = this._oobMemberFlags.status;\n this._oobMemberFlags.status = OOB_STATUS_NOTSTARTED;\n\n (0, _values2.default)(this.events).forEach(function (eventsByStateKey) {\n var eventsForType = (0, _values2.default)(eventsByStateKey);\n copy.setStateEvents(eventsForType);\n });\n\n // Ugly hack: see above\n this._oobMemberFlags.status = status;\n\n if (this._summaryInvitedMemberCount !== null) {\n copy.setInvitedMemberCount(this.getInvitedMemberCount());\n }\n if (this._summaryJoinedMemberCount !== null) {\n copy.setJoinedMemberCount(this.getJoinedMemberCount());\n }\n\n // copy out of band flags if needed\n if (this._oobMemberFlags.status == OOB_STATUS_FINISHED) {\n // copy markOutOfBand flags\n this.getMembers().forEach(function (member) {\n if (member.isOutOfBand()) {\n var copyMember = copy.getMember(member.userId);\n copyMember.markOutOfBand();\n }\n });\n }\n\n return copy;\n};\n\n/**\n * Add previously unknown state events.\n * When lazy loading members while back-paginating,\n * the relevant room state for the timeline chunk at the end\n * of the chunk can be set with this method.\n * @param {MatrixEvent[]} events state events to prepend\n */\nRoomState.prototype.setUnknownStateEvents = function (events) {\n var _this = this;\n\n var unknownStateEvents = events.filter(function (event) {\n return _this.events[event.getType()] === undefined || _this.events[event.getType()][event.getStateKey()] === undefined;\n });\n\n this.setStateEvents(unknownStateEvents);\n};\n\n/**\n * Add an array of one or more state MatrixEvents, overwriting\n * any existing state with the same {type, stateKey} tuple. Will fire\n * \"RoomState.events\" for every event added. May fire \"RoomState.members\"\n * if there are <code>m.room.member</code> events.\n * @param {MatrixEvent[]} stateEvents a list of state events for this room.\n * @fires module:client~MatrixClient#event:\"RoomState.members\"\n * @fires module:client~MatrixClient#event:\"RoomState.newMember\"\n * @fires module:client~MatrixClient#event:\"RoomState.events\"\n */\nRoomState.prototype.setStateEvents = function (stateEvents) {\n var self = this;\n this._updateModifiedTime();\n\n // update the core event dict\n utils.forEach(stateEvents, function (event) {\n if (event.getRoomId() !== self.roomId) {\n return;\n }\n if (!event.isState()) {\n return;\n }\n\n self._setStateEvent(event);\n if (event.getType() === \"m.room.member\") {\n _updateDisplayNameCache(self, event.getStateKey(), event.getContent().displayname);\n _updateThirdPartyTokenCache(self, event);\n }\n self.emit(\"RoomState.events\", event, self);\n });\n\n // update higher level data structures. This needs to be done AFTER the\n // core event dict as these structures may depend on other state events in\n // the given array (e.g. disambiguating display names in one go to do both\n // clashing names rather than progressively which only catches 1 of them).\n utils.forEach(stateEvents, function (event) {\n if (event.getRoomId() !== self.roomId) {\n return;\n }\n if (!event.isState()) {\n return;\n }\n\n if (event.getType() === \"m.room.member\") {\n var userId = event.getStateKey();\n\n // leave events apparently elide the displayname or avatar_url,\n // so let's fake one up so that we don't leak user ids\n // into the timeline\n if (event.getContent().membership === \"leave\" || event.getContent().membership === \"ban\") {\n event.getContent().avatar_url = event.getContent().avatar_url || event.getPrevContent().avatar_url;\n event.getContent().displayname = event.getContent().displayname || event.getPrevContent().displayname;\n }\n\n var member = self._getOrCreateMember(userId, event);\n member.setMembershipEvent(event, self);\n\n self._updateMember(member);\n self.emit(\"RoomState.members\", event, self, member);\n } else if (event.getType() === \"m.room.power_levels\") {\n var members = utils.values(self.members);\n utils.forEach(members, function (member) {\n member.setPowerLevelEvent(event);\n self.emit(\"RoomState.members\", event, self, member);\n });\n\n // assume all our sentinels are now out-of-date\n self._sentinels = {};\n }\n });\n};\n\n/**\n * Looks up a member by the given userId, and if it doesn't exist,\n * create it and emit the `RoomState.newMember` event.\n * This method makes sure the member is added to the members dictionary\n * before emitting, as this is done from setStateEvents and _setOutOfBandMember.\n * @param {string} userId the id of the user to look up\n * @param {MatrixEvent} event the membership event for the (new) member. Used to emit.\n * @fires module:client~MatrixClient#event:\"RoomState.newMember\"\n * @returns {RoomMember} the member, existing or newly created.\n */\nRoomState.prototype._getOrCreateMember = function (userId, event) {\n var member = this.members[userId];\n if (!member) {\n member = new RoomMember(this.roomId, userId);\n // add member to members before emitting any events,\n // as event handlers often lookup the member\n this.members[userId] = member;\n this.emit(\"RoomState.newMember\", event, this, member);\n }\n return member;\n};\n\nRoomState.prototype._setStateEvent = function (event) {\n if (this.events[event.getType()] === undefined) {\n this.events[event.getType()] = {};\n }\n this.events[event.getType()][event.getStateKey()] = event;\n};\n\nRoomState.prototype._updateMember = function (member) {\n // this member may have a power level already, so set it.\n var pwrLvlEvent = this.getStateEvents(\"m.room.power_levels\", \"\");\n if (pwrLvlEvent) {\n member.setPowerLevelEvent(pwrLvlEvent);\n }\n\n // blow away the sentinel which is now outdated\n delete this._sentinels[member.userId];\n\n this.members[member.userId] = member;\n this._joinedMemberCount = null;\n this._invitedMemberCount = null;\n};\n\n/**\n * Get the out-of-band members loading state, whether loading is needed or not.\n * Note that loading might be in progress and hence isn't needed.\n * @return {bool} whether or not the members of this room need to be loaded\n */\nRoomState.prototype.needsOutOfBandMembers = function () {\n return this._oobMemberFlags.status === OOB_STATUS_NOTSTARTED;\n};\n\n/**\n * Mark this room state as waiting for out-of-band members,\n * ensuring it doesn't ask for them to be requested again\n * through needsOutOfBandMembers\n */\nRoomState.prototype.markOutOfBandMembersStarted = function () {\n if (this._oobMemberFlags.status !== OOB_STATUS_NOTSTARTED) {\n return;\n }\n this._oobMemberFlags.status = OOB_STATUS_INPROGRESS;\n};\n\n/**\n * Mark this room state as having failed to fetch out-of-band members\n */\nRoomState.prototype.markOutOfBandMembersFailed = function () {\n if (this._oobMemberFlags.status !== OOB_STATUS_INPROGRESS) {\n return;\n }\n this._oobMemberFlags.status = OOB_STATUS_NOTSTARTED;\n};\n\n/**\n * Clears the loaded out-of-band members\n */\nRoomState.prototype.clearOutOfBandMembers = function () {\n var _this2 = this;\n\n var count = 0;\n (0, _keys2.default)(this.members).forEach(function (userId) {\n var member = _this2.members[userId];\n if (member.isOutOfBand()) {\n ++count;\n delete _this2.members[userId];\n }\n });\n console.log(\"LL: RoomState removed \" + count + \" members...\");\n this._oobMemberFlags.status = OOB_STATUS_NOTSTARTED;\n};\n\n/**\n * Sets the loaded out-of-band members.\n * @param {MatrixEvent[]} stateEvents array of membership state events\n */\nRoomState.prototype.setOutOfBandMembers = function (stateEvents) {\n var _this3 = this;\n\n console.log(\"LL: RoomState about to set \" + stateEvents.length + \" OOB members ...\");\n if (this._oobMemberFlags.status !== OOB_STATUS_INPROGRESS) {\n return;\n }\n console.log(\"LL: RoomState put in OOB_STATUS_FINISHED state ...\");\n this._oobMemberFlags.status = OOB_STATUS_FINISHED;\n stateEvents.forEach(function (e) {\n return _this3._setOutOfBandMember(e);\n });\n};\n\n/**\n * Sets a single out of band member, used by both setOutOfBandMembers and clone\n * @param {MatrixEvent} stateEvent membership state event\n */\nRoomState.prototype._setOutOfBandMember = function (stateEvent) {\n if (stateEvent.getType() !== 'm.room.member') {\n return;\n }\n var userId = stateEvent.getStateKey();\n var existingMember = this.getMember(userId);\n // never replace members received as part of the sync\n if (existingMember && !existingMember.isOutOfBand()) {\n return;\n }\n\n var member = this._getOrCreateMember(userId, stateEvent);\n member.setMembershipEvent(stateEvent, this);\n // needed to know which members need to be stored seperately\n // as they are not part of the sync accumulator\n // this is cleared by setMembershipEvent so when it's updated through /sync\n member.markOutOfBand();\n\n _updateDisplayNameCache(this, member.userId, member.name);\n\n this._setStateEvent(stateEvent);\n this._updateMember(member);\n this.emit(\"RoomState.members\", stateEvent, this, member);\n};\n\n/**\n * Set the current typing event for this room.\n * @param {MatrixEvent} event The typing event\n */\nRoomState.prototype.setTypingEvent = function (event) {\n utils.forEach(utils.values(this.members), function (member) {\n member.setTypingEvent(event);\n });\n};\n\n/**\n * Get the m.room.member event which has the given third party invite token.\n *\n * @param {string} token The token\n * @return {?MatrixEvent} The m.room.member event or null\n */\nRoomState.prototype.getInviteForThreePidToken = function (token) {\n return this._tokenToInvite[token] || null;\n};\n\n/**\n * Update the last modified time to the current time.\n */\nRoomState.prototype._updateModifiedTime = function () {\n this._modified = Date.now();\n};\n\n/**\n * Get the timestamp when this room state was last updated. This timestamp is\n * updated when this object has received new state events.\n * @return {number} The timestamp\n */\nRoomState.prototype.getLastModifiedTime = function () {\n return this._modified;\n};\n\n/**\n * Get user IDs with the specified or similar display names.\n * @param {string} displayName The display name to get user IDs from.\n * @return {string[]} An array of user IDs or an empty array.\n */\nRoomState.prototype.getUserIdsWithDisplayName = function (displayName) {\n return this._displayNameToUserIds[utils.removeHiddenChars(displayName)] || [];\n};\n\n/**\n * Returns true if userId is in room, event is not redacted and either sender of\n * mxEvent or has power level sufficient to redact events other than their own.\n * @param {MatrixEvent} mxEvent The event to test permission for\n * @param {string} userId The user ID of the user to test permission for\n * @return {boolean} true if the given used ID can redact given event\n */\nRoomState.prototype.maySendRedactionForEvent = function (mxEvent, userId) {\n var member = this.getMember(userId);\n if (!member || member.membership === 'leave') return false;\n\n if (mxEvent.status || mxEvent.isRedacted()) return false;\n\n // The user may have been the sender, but they can't redact their own message\n // if redactions are blocked.\n var canRedact = this.maySendEvent(\"m.room.redaction\", userId);\n if (mxEvent.getSender() === userId) return canRedact;\n\n return this._hasSufficientPowerLevelFor('redact', member.powerLevel);\n};\n\n/**\n * Returns true if the given power level is sufficient for action\n * @param {string} action The type of power level to check\n * @param {number} powerLevel The power level of the member\n * @return {boolean} true if the given power level is sufficient\n */\nRoomState.prototype._hasSufficientPowerLevelFor = function (action, powerLevel) {\n var powerLevelsEvent = this.getStateEvents('m.room.power_levels', '');\n\n var powerLevels = {};\n if (powerLevelsEvent) {\n powerLevels = powerLevelsEvent.getContent();\n }\n\n var requiredLevel = 50;\n if (utils.isNumber(powerLevels[action])) {\n requiredLevel = powerLevels[action];\n }\n\n return powerLevel >= requiredLevel;\n};\n\n/**\n * Short-form for maySendEvent('m.room.message', userId)\n * @param {string} userId The user ID of the user to test permission for\n * @return {boolean} true if the given user ID should be permitted to send\n * message events into the given room.\n */\nRoomState.prototype.maySendMessage = function (userId) {\n return this._maySendEventOfType('m.room.message', userId, false);\n};\n\n/**\n * Returns true if the given user ID has permission to send a normal\n * event of type `eventType` into this room.\n * @param {string} eventType The type of event to test\n * @param {string} userId The user ID of the user to test permission for\n * @return {boolean} true if the given user ID should be permitted to send\n * the given type of event into this room,\n * according to the room's state.\n */\nRoomState.prototype.maySendEvent = function (eventType, userId) {\n return this._maySendEventOfType(eventType, userId, false);\n};\n\n/**\n * Returns true if the given MatrixClient has permission to send a state\n * event of type `stateEventType` into this room.\n * @param {string} stateEventType The type of state events to test\n * @param {MatrixClient} cli The client to test permission for\n * @return {boolean} true if the given client should be permitted to send\n * the given type of state event into this room,\n * according to the room's state.\n */\nRoomState.prototype.mayClientSendStateEvent = function (stateEventType, cli) {\n if (cli.isGuest()) {\n return false;\n }\n return this.maySendStateEvent(stateEventType, cli.credentials.userId);\n};\n\n/**\n * Returns true if the given user ID has permission to send a state\n * event of type `stateEventType` into this room.\n * @param {string} stateEventType The type of state events to test\n * @param {string} userId The user ID of the user to test permission for\n * @return {boolean} true if the given user ID should be permitted to send\n * the given type of state event into this room,\n * according to the room's state.\n */\nRoomState.prototype.maySendStateEvent = function (stateEventType, userId) {\n return this._maySendEventOfType(stateEventType, userId, true);\n};\n\n/**\n * Returns true if the given user ID has permission to send a normal or state\n * event of type `eventType` into this room.\n * @param {string} eventType The type of event to test\n * @param {string} userId The user ID of the user to test permission for\n * @param {boolean} state If true, tests if the user may send a state\n event of this type. Otherwise tests whether\n they may send a regular event.\n * @return {boolean} true if the given user ID should be permitted to send\n * the given type of event into this room,\n * according to the room's state.\n */\nRoomState.prototype._maySendEventOfType = function (eventType, userId, state) {\n var power_levels_event = this.getStateEvents('m.room.power_levels', '');\n\n var power_levels = void 0;\n var events_levels = {};\n\n var state_default = 0;\n var events_default = 0;\n var powerLevel = 0;\n if (power_levels_event) {\n power_levels = power_levels_event.getContent();\n events_levels = power_levels.events || {};\n\n if ((0, _isFinite2.default)(power_levels.state_default)) {\n state_default = power_levels.state_default;\n } else {\n state_default = 50;\n }\n\n var userPowerLevel = power_levels.users && power_levels.users[userId];\n if ((0, _isFinite2.default)(userPowerLevel)) {\n powerLevel = userPowerLevel;\n } else if ((0, _isFinite2.default)(power_levels.users_default)) {\n powerLevel = power_levels.users_default;\n }\n\n if ((0, _isFinite2.default)(power_levels.events_default)) {\n events_default = power_levels.events_default;\n }\n }\n\n var required_level = state ? state_default : events_default;\n if ((0, _isFinite2.default)(events_levels[eventType])) {\n required_level = events_levels[eventType];\n }\n return powerLevel >= required_level;\n};\n\n/**\n * Returns true if the given user ID has permission to trigger notification\n * of type `notifLevelKey`\n * @param {string} notifLevelKey The level of notification to test (eg. 'room')\n * @param {string} userId The user ID of the user to test permission for\n * @return {boolean} true if the given user ID has permission to trigger a\n * notification of this type.\n */\nRoomState.prototype.mayTriggerNotifOfType = function (notifLevelKey, userId) {\n var member = this.getMember(userId);\n if (!member) {\n return false;\n }\n\n var powerLevelsEvent = this.getStateEvents('m.room.power_levels', '');\n\n var notifLevel = 50;\n if (powerLevelsEvent && powerLevelsEvent.getContent() && powerLevelsEvent.getContent().notifications && utils.isNumber(powerLevelsEvent.getContent().notifications[notifLevelKey])) {\n notifLevel = powerLevelsEvent.getContent().notifications[notifLevelKey];\n }\n\n return member.powerLevel >= notifLevel;\n};\n\n/**\n * The RoomState class.\n */\nmodule.exports = RoomState;\n\nfunction _updateThirdPartyTokenCache(roomState, memberEvent) {\n if (!memberEvent.getContent().third_party_invite) {\n return;\n }\n var token = (memberEvent.getContent().third_party_invite.signed || {}).token;\n if (!token) {\n return;\n }\n var threePidInvite = roomState.getStateEvents(\"m.room.third_party_invite\", token);\n if (!threePidInvite) {\n return;\n }\n roomState._tokenToInvite[token] = memberEvent;\n}\n\nfunction _updateDisplayNameCache(roomState, userId, displayName) {\n var oldName = roomState._userIdsToDisplayNames[userId];\n delete roomState._userIdsToDisplayNames[userId];\n if (oldName) {\n // Remove the old name from the cache.\n // We clobber the user_id > name lookup but the name -> [user_id] lookup\n // means we need to remove that user ID from that array rather than nuking\n // the lot.\n var strippedOldName = utils.removeHiddenChars(oldName);\n\n var existingUserIds = roomState._displayNameToUserIds[strippedOldName];\n if (existingUserIds) {\n // remove this user ID from this array\n var filteredUserIDs = existingUserIds.filter(function (id) {\n return id !== userId;\n });\n roomState._displayNameToUserIds[strippedOldName] = filteredUserIDs;\n }\n }\n\n roomState._userIdsToDisplayNames[userId] = displayName;\n\n var strippedDisplayname = displayName && utils.removeHiddenChars(displayName);\n // an empty stripped displayname (undefined/'') will be set to MXID in room-member.js\n if (strippedDisplayname) {\n if (!roomState._displayNameToUserIds[strippedDisplayname]) {\n roomState._displayNameToUserIds[strippedDisplayname] = [];\n }\n roomState._displayNameToUserIds[strippedDisplayname].push(userId);\n }\n}\n\n/**\n * Fires whenever the event dictionary in room state is updated.\n * @event module:client~MatrixClient#\"RoomState.events\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomState} state The room state whose RoomState.events dictionary\n * was updated.\n * @example\n * matrixClient.on(\"RoomState.events\", function(event, state){\n * var newStateEvent = event;\n * });\n */\n\n/**\n * Fires whenever a member in the members dictionary is updated in any way.\n * @event module:client~MatrixClient#\"RoomState.members\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomState} state The room state whose RoomState.members dictionary\n * was updated.\n * @param {RoomMember} member The room member that was updated.\n * @example\n * matrixClient.on(\"RoomState.members\", function(event, state, member){\n * var newMembershipState = member.membership;\n * });\n */\n\n/**\n* Fires whenever a member is added to the members dictionary. The RoomMember\n* will not be fully populated yet (e.g. no membership state) but will already\n* be available in the members dictionary.\n* @event module:client~MatrixClient#\"RoomState.newMember\"\n* @param {MatrixEvent} event The matrix event which caused this event to fire.\n* @param {RoomState} state The room state whose RoomState.members dictionary\n* was updated with a new entry.\n* @param {RoomMember} member The room member that was added.\n* @example\n* matrixClient.on(\"RoomState.newMember\", function(event, state, member){\n* // add event listeners on 'member'\n* });\n*/\n//# sourceMappingURL=room-state.js.map","module.exports = { \"default\": require(\"core-js/library/fn/number/is-finite\"), __esModule: true };","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/room\n */\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _isInteger = require(\"babel-runtime/core-js/number/is-integer\");\n\nvar _isInteger2 = _interopRequireDefault(_isInteger);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _promise = require(\"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _ReEmitter = require(\"../ReEmitter\");\n\nvar _ReEmitter2 = _interopRequireDefault(_ReEmitter);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EventEmitter = require(\"events\").EventEmitter;\n\nvar EventStatus = require(\"./event\").EventStatus;\nvar RoomSummary = require(\"./room-summary\");\nvar RoomMember = require(\"./room-member\");\nvar MatrixEvent = require(\"./event\").MatrixEvent;\nvar utils = require(\"../utils\");\nvar ContentRepo = require(\"../content-repo\");\nvar EventTimeline = require(\"./event-timeline\");\nvar EventTimelineSet = require(\"./event-timeline-set\");\n\nvar LATEST_ROOM_VERSION = '1';\n\nfunction synthesizeReceipt(userId, event, receiptType) {\n // console.log(\"synthesizing receipt for \"+event.getId());\n // This is really ugly because JS has no way to express an object literal\n // where the name of a key comes from an expression\n var fakeReceipt = {\n content: {},\n type: \"m.receipt\",\n room_id: event.getRoomId()\n };\n fakeReceipt.content[event.getId()] = {};\n fakeReceipt.content[event.getId()][receiptType] = {};\n fakeReceipt.content[event.getId()][receiptType][userId] = {\n ts: event.getTs()\n };\n return new MatrixEvent(fakeReceipt);\n}\n\n/**\n * Construct a new Room.\n *\n * <p>For a room, we store an ordered sequence of timelines, which may or may not\n * be continuous. Each timeline lists a series of events, as well as tracking\n * the room state at the start and the end of the timeline. It also tracks\n * forward and backward pagination tokens, as well as containing links to the\n * next timeline in the sequence.\n *\n * <p>There is one special timeline - the 'live' timeline, which represents the\n * timeline to which events are being added in real-time as they are received\n * from the /sync API. Note that you should not retain references to this\n * timeline - even if it is the current timeline right now, it may not remain\n * so if the server gives us a timeline gap in /sync.\n *\n * <p>In order that we can find events from their ids later, we also maintain a\n * map from event_id to timeline and index.\n *\n * @constructor\n * @alias module:models/room\n * @param {string} roomId Required. The ID of this room.\n * @param {MatrixClient} client Required. The client, used to lazy load members.\n * @param {string} myUserId Required. The ID of the syncing user.\n * @param {Object=} opts Configuration options\n * @param {*} opts.storageToken Optional. The token which a data store can use\n * to remember the state of the room. What this means is dependent on the store\n * implementation.\n *\n * @param {String=} opts.pendingEventOrdering Controls where pending messages\n * appear in a room's timeline. If \"<b>chronological</b>\", messages will appear\n * in the timeline when the call to <code>sendEvent</code> was made. If\n * \"<b>detached</b>\", pending messages will appear in a separate list,\n * accessbile via {@link module:models/room#getPendingEvents}. Default:\n * \"chronological\".\n *\n * @param {boolean} [opts.timelineSupport = false] Set to true to enable improved\n * timeline support.\n *\n * @prop {string} roomId The ID of this room.\n * @prop {string} name The human-readable display name for this room.\n * @prop {Array<MatrixEvent>} timeline The live event timeline for this room,\n * with the oldest event at index 0. Present for backwards compatibility -\n * prefer getLiveTimeline().getEvents().\n * @prop {object} tags Dict of room tags; the keys are the tag name and the values\n * are any metadata associated with the tag - e.g. { \"fav\" : { order: 1 } }\n * @prop {object} accountData Dict of per-room account_data events; the keys are the\n * event type and the values are the events.\n * @prop {RoomState} oldState The state of the room at the time of the oldest\n * event in the live timeline. Present for backwards compatibility -\n * prefer getLiveTimeline().getState(EventTimeline.BACKWARDS).\n * @prop {RoomState} currentState The state of the room at the time of the\n * newest event in the timeline. Present for backwards compatibility -\n * prefer getLiveTimeline().getState(EventTimeline.FORWARDS).\n * @prop {RoomSummary} summary The room summary.\n * @prop {*} storageToken A token which a data store can use to remember\n * the state of the room.\n */\nfunction Room(roomId, client, myUserId, opts) {\n opts = opts || {};\n opts.pendingEventOrdering = opts.pendingEventOrdering || \"chronological\";\n\n this.reEmitter = new _ReEmitter2.default(this);\n\n if ([\"chronological\", \"detached\"].indexOf(opts.pendingEventOrdering) === -1) {\n throw new Error(\"opts.pendingEventOrdering MUST be either 'chronological' or \" + \"'detached'. Got: '\" + opts.pendingEventOrdering + \"'\");\n }\n\n this.myUserId = myUserId;\n this.roomId = roomId;\n this.name = roomId;\n this.tags = {\n // $tagName: { $metadata: $value },\n // $tagName: { $metadata: $value },\n };\n this.accountData = {\n // $eventType: $event\n };\n this.summary = null;\n this.storageToken = opts.storageToken;\n this._opts = opts;\n this._txnToEvent = {}; // Pending in-flight requests { string: MatrixEvent }\n // receipts should clobber based on receipt_type and user_id pairs hence\n // the form of this structure. This is sub-optimal for the exposed APIs\n // which pass in an event ID and get back some receipts, so we also store\n // a pre-cached list for this purpose.\n this._receipts = {\n // receipt_type: {\n // user_id: {\n // eventId: <event_id>,\n // data: <receipt_data>\n // }\n // }\n };\n this._receiptCacheByEventId = {\n // $event_id: [{\n // type: $type,\n // userId: $user_id,\n // data: <receipt data>\n // }]\n };\n // only receipts that came from the server, not synthesized ones\n this._realReceipts = {};\n\n this._notificationCounts = {};\n\n // all our per-room timeline sets. the first one is the unfiltered ones;\n // the subsequent ones are the filtered ones in no particular order.\n this._timelineSets = [new EventTimelineSet(this, opts)];\n this.reEmitter.reEmit(this.getUnfilteredTimelineSet(), [\"Room.timeline\", \"Room.timelineReset\"]);\n\n this._fixUpLegacyTimelineFields();\n\n // any filtered timeline sets we're maintaining for this room\n this._filteredTimelineSets = {\n // filter_id: timelineSet\n };\n\n if (this._opts.pendingEventOrdering == \"detached\") {\n this._pendingEventList = [];\n }\n\n // read by megolm; boolean value - null indicates \"use global value\"\n this._blacklistUnverifiedDevices = null;\n this._selfMembership = null;\n this._summaryHeroes = null;\n // awaited by getEncryptionTargetMembers while room members are loading\n\n this._client = client;\n if (!this._opts.lazyLoadMembers) {\n this._membersPromise = _promise2.default.resolve();\n } else {\n this._membersPromise = null;\n }\n}\n\nutils.inherits(Room, EventEmitter);\n\n/**\n * Gets the version of the room\n * @returns {string} The version of the room, or null if it could not be determined\n */\nRoom.prototype.getVersion = function () {\n var createEvent = this.currentState.getStateEvents(\"m.room.create\", \"\");\n if (!createEvent) {\n console.warn(\"Room \" + this.room_id + \" does not have an m.room.create event\");\n return '1';\n }\n var ver = createEvent.getContent()['room_version'];\n if (ver === undefined) return '1';\n return ver;\n};\n\n/**\n * Determines whether this room needs to be upgraded to a new version\n * @returns {string?} What version the room should be upgraded to, or null if\n * the room does not require upgrading at this time.\n */\nRoom.prototype.shouldUpgradeToVersion = function () {\n // This almost certainly won't be the way this actually works - this\n // is essentially a stub method.\n if (this.getVersion() === LATEST_ROOM_VERSION) return null;\n return LATEST_ROOM_VERSION;\n};\n\n/**\n * Determines whether the given user is permitted to perform a room upgrade\n * @param {String} userId The ID of the user to test against\n * @returns {bool} True if the given user is permitted to upgrade the room\n */\nRoom.prototype.userMayUpgradeRoom = function (userId) {\n return this.currentState.maySendStateEvent(\"m.room.tombstone\", userId);\n};\n\n/**\n * Get the list of pending sent events for this room\n *\n * @return {module:models/event.MatrixEvent[]} A list of the sent events\n * waiting for remote echo.\n *\n * @throws If <code>opts.pendingEventOrdering</code> was not 'detached'\n */\nRoom.prototype.getPendingEvents = function () {\n if (this._opts.pendingEventOrdering !== \"detached\") {\n throw new Error(\"Cannot call getPendingEventList with pendingEventOrdering == \" + this._opts.pendingEventOrdering);\n }\n\n return this._pendingEventList;\n};\n\n/**\n * Get the live unfiltered timeline for this room.\n *\n * @return {module:models/event-timeline~EventTimeline} live timeline\n */\nRoom.prototype.getLiveTimeline = function () {\n return this.getUnfilteredTimelineSet().getLiveTimeline();\n};\n\n/**\n * @param {string} myUserId the user id for the logged in member\n * @return {string} the membership type (join | leave | invite) for the logged in user\n */\nRoom.prototype.getMyMembership = function () {\n return this._selfMembership;\n};\n\n/**\n * If this room is a DM we're invited to,\n * try to find out who invited us\n * @return {string} user id of the inviter\n */\nRoom.prototype.getDMInviter = function () {\n if (this.myUserId) {\n var me = this.getMember(this.myUserId);\n if (me) {\n return me.getDMInviter();\n }\n }\n if (this._selfMembership === \"invite\") {\n // fall back to summary information\n var memberCount = this.getInvitedAndJoinedMemberCount();\n if (memberCount == 2 && this._summaryHeroes.length) {\n return this._summaryHeroes[0];\n }\n }\n};\n\n/**\n * Assuming this room is a DM room, tries to guess with which user.\n * @return {string} user id of the other member (could be syncing user)\n */\nRoom.prototype.guessDMUserId = function () {\n var _this = this;\n\n var me = this.getMember(this.myUserId);\n if (me) {\n var inviterId = me.getDMInviter();\n if (inviterId) {\n return inviterId;\n }\n }\n // remember, we're assuming this room is a DM,\n // so returning the first member we find should be fine\n var hasHeroes = Array.isArray(this._summaryHeroes) && this._summaryHeroes.length;\n if (hasHeroes) {\n return this._summaryHeroes[0];\n }\n var members = this.currentState.getMembers();\n var anyMember = members.find(function (m) {\n return m.userId !== _this.myUserId;\n });\n if (anyMember) {\n return anyMember.userId;\n }\n // it really seems like I'm the only user in the room\n // so I probably created a room with just me in it\n // and marked it as a DM. Ok then\n return this.myUserId;\n};\n\nRoom.prototype.getAvatarFallbackMember = function () {\n var _this2 = this;\n\n var memberCount = this.getInvitedAndJoinedMemberCount();\n if (memberCount > 2) {\n return;\n }\n var hasHeroes = Array.isArray(this._summaryHeroes) && this._summaryHeroes.length;\n if (hasHeroes) {\n var availableMember = this._summaryHeroes.map(function (userId) {\n return _this2.getMember(userId);\n }).find(function (member) {\n return !!member;\n });\n if (availableMember) {\n return availableMember;\n }\n }\n var members = this.currentState.getMembers();\n // could be different than memberCount\n // as this includes left members\n if (members.length <= 2) {\n var _availableMember = members.find(function (m) {\n return m.userId !== _this2.myUserId;\n });\n if (_availableMember) {\n return _availableMember;\n }\n }\n // if all else fails, try falling back to a user,\n // and create a one-off member for it\n if (hasHeroes) {\n var availableUser = this._summaryHeroes.map(function (userId) {\n return _this2._client.getUser(userId);\n }).find(function (user) {\n return !!user;\n });\n if (availableUser) {\n var member = new RoomMember(this.roomId, availableUser.userId);\n member.user = availableUser;\n return member;\n }\n }\n};\n\n/**\n * Sets the membership this room was received as during sync\n * @param {string} membership join | leave | invite\n */\nRoom.prototype.updateMyMembership = function (membership) {\n var prevMembership = this._selfMembership;\n this._selfMembership = membership;\n if (prevMembership !== membership) {\n if (membership === \"leave\") {\n this._cleanupAfterLeaving();\n }\n this.emit(\"Room.myMembership\", this, membership, prevMembership);\n }\n};\n\nRoom.prototype._loadMembersFromServer = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var lastSyncToken, queryString, path, http, response;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n lastSyncToken = this._client.store.getSyncToken();\n queryString = utils.encodeParams({\n not_membership: \"leave\",\n at: lastSyncToken\n });\n path = utils.encodeUri(\"/rooms/$roomId/members?\" + queryString, { $roomId: this.roomId });\n http = this._client._http;\n _context.next = 6;\n return (0, _bluebird.resolve)(http.authedRequest(undefined, \"GET\", path));\n\n case 6:\n response = _context.sent;\n return _context.abrupt(\"return\", response.chunk);\n\n case 8:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n}));\n\nRoom.prototype._loadMembers = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var fromServer, rawMembersEvents, memberEvents;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // were the members loaded from the server?\n fromServer = false;\n _context2.next = 3;\n return (0, _bluebird.resolve)(this._client.store.getOutOfBandMembers(this.roomId));\n\n case 3:\n rawMembersEvents = _context2.sent;\n\n if (!(rawMembersEvents === null)) {\n _context2.next = 10;\n break;\n }\n\n fromServer = true;\n _context2.next = 8;\n return (0, _bluebird.resolve)(this._loadMembersFromServer());\n\n case 8:\n rawMembersEvents = _context2.sent;\n\n console.log(\"LL: got \" + rawMembersEvents.length + \" \" + (\"members from server for room \" + this.roomId));\n\n case 10:\n memberEvents = rawMembersEvents.map(this._client.getEventMapper());\n return _context2.abrupt(\"return\", { memberEvents: memberEvents, fromServer: fromServer });\n\n case 12:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n}));\n\n/**\n * Preloads the member list in case lazy loading\n * of memberships is in use. Can be called multiple times,\n * it will only preload once.\n * @return {Promise} when preloading is done and\n * accessing the members on the room will take\n * all members in the room into account\n */\nRoom.prototype.loadMembersIfNeeded = function () {\n var _this3 = this;\n\n if (this._membersPromise) {\n return this._membersPromise;\n }\n\n // mark the state so that incoming messages while\n // the request is in flight get marked as superseding\n // the OOB members\n this.currentState.markOutOfBandMembersStarted();\n\n var inMemoryUpdate = this._loadMembers().then(function (result) {\n _this3.currentState.setOutOfBandMembers(result.memberEvents);\n // now the members are loaded, start to track the e2e devices if needed\n if (_this3._client.isRoomEncrypted(_this3.roomId)) {\n _this3._client._crypto.trackRoomDevices(_this3.roomId);\n }\n return result.fromServer;\n }).catch(function (err) {\n // allow retries on fail\n _this3._membersPromise = null;\n _this3.currentState.markOutOfBandMembersFailed();\n throw err;\n });\n // update members in storage, but don't wait for it\n inMemoryUpdate.then(function (fromServer) {\n if (fromServer) {\n var oobMembers = _this3.currentState.getMembers().filter(function (m) {\n return m.isOutOfBand();\n }).map(function (m) {\n return m.events.member.event;\n });\n console.log(\"LL: telling store to write \" + oobMembers.length + (\" members for room \" + _this3.roomId));\n var store = _this3._client.store;\n return store.setOutOfBandMembers(_this3.roomId, oobMembers)\n // swallow any IDB error as we don't want to fail\n // because of this\n .catch(function (err) {\n console.log(\"LL: storing OOB room members failed, oh well\", err);\n });\n }\n }).catch(function (err) {\n // as this is not awaited anywhere,\n // at least show the error in the console\n console.error(err);\n });\n\n this._membersPromise = inMemoryUpdate;\n\n return this._membersPromise;\n};\n\n/**\n * Removes the lazily loaded members from storage if needed\n */\nRoom.prototype.clearLoadedMembersIfNeeded = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!(this._opts.lazyLoadMembers && this._membersPromise)) {\n _context3.next = 7;\n break;\n }\n\n _context3.next = 3;\n return (0, _bluebird.resolve)(this.loadMembersIfNeeded());\n\n case 3:\n _context3.next = 5;\n return (0, _bluebird.resolve)(this._client.store.clearOutOfBandMembers(this.roomId));\n\n case 5:\n this.currentState.clearOutOfBandMembers();\n this._membersPromise = null;\n\n case 7:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n}));\n\n/**\n * called when sync receives this room in the leave section\n * to do cleanup after leaving a room. Possibly called multiple times.\n */\nRoom.prototype._cleanupAfterLeaving = function () {\n var _this4 = this;\n\n this.clearLoadedMembersIfNeeded().catch(function (err) {\n console.error(\"error after clearing loaded members from \" + (\"room \" + _this4.roomId + \" after leaving\"));\n console.dir(err);\n });\n};\n\n/**\n * Reset the live timeline of all timelineSets, and start new ones.\n *\n * <p>This is used when /sync returns a 'limited' timeline.\n *\n * @param {string=} backPaginationToken token for back-paginating the new timeline\n * @param {string=} forwardPaginationToken token for forward-paginating the old live timeline,\n * if absent or null, all timelines are reset, removing old ones (including the previous live\n * timeline which would otherwise be unable to paginate forwards without this token).\n * Removing just the old live timeline whilst preserving previous ones is not supported.\n */\nRoom.prototype.resetLiveTimeline = function (backPaginationToken, forwardPaginationToken) {\n for (var i = 0; i < this._timelineSets.length; i++) {\n this._timelineSets[i].resetLiveTimeline(backPaginationToken, forwardPaginationToken);\n }\n\n this._fixUpLegacyTimelineFields();\n};\n\n/**\n * Fix up this.timeline, this.oldState and this.currentState\n *\n * @private\n */\nRoom.prototype._fixUpLegacyTimelineFields = function () {\n // maintain this.timeline as a reference to the live timeline,\n // and this.oldState and this.currentState as references to the\n // state at the start and end of that timeline. These are more\n // for backwards-compatibility than anything else.\n this.timeline = this.getLiveTimeline().getEvents();\n this.oldState = this.getLiveTimeline().getState(EventTimeline.BACKWARDS);\n this.currentState = this.getLiveTimeline().getState(EventTimeline.FORWARDS);\n};\n\n/**\n * Return the timeline sets for this room.\n * @return {EventTimelineSet[]} array of timeline sets for this room\n */\nRoom.prototype.getTimelineSets = function () {\n return this._timelineSets;\n};\n\n/**\n * Helper to return the main unfiltered timeline set for this room\n * @return {EventTimelineSet} room's unfiltered timeline set\n */\nRoom.prototype.getUnfilteredTimelineSet = function () {\n return this._timelineSets[0];\n};\n\n/**\n * Get the timeline which contains the given event from the unfiltered set, if any\n *\n * @param {string} eventId event ID to look for\n * @return {?module:models/event-timeline~EventTimeline} timeline containing\n * the given event, or null if unknown\n */\nRoom.prototype.getTimelineForEvent = function (eventId) {\n return this.getUnfilteredTimelineSet().getTimelineForEvent(eventId);\n};\n\n/**\n * Add a new timeline to this room's unfiltered timeline set\n *\n * @return {module:models/event-timeline~EventTimeline} newly-created timeline\n */\nRoom.prototype.addTimeline = function () {\n return this.getUnfilteredTimelineSet().addTimeline();\n};\n\n/**\n * Get an event which is stored in our unfiltered timeline set\n *\n * @param {string} eventId event ID to look for\n * @return {?module:models/event.MatrixEvent} the given event, or undefined if unknown\n */\nRoom.prototype.findEventById = function (eventId) {\n return this.getUnfilteredTimelineSet().findEventById(eventId);\n};\n\n/**\n * Get one of the notification counts for this room\n * @param {String} type The type of notification count to get. default: 'total'\n * @return {Number} The notification count, or undefined if there is no count\n * for this type.\n */\nRoom.prototype.getUnreadNotificationCount = function (type) {\n type = type || 'total';\n return this._notificationCounts[type];\n};\n\n/**\n * Set one of the notification counts for this room\n * @param {String} type The type of notification count to set.\n * @param {Number} count The new count\n */\nRoom.prototype.setUnreadNotificationCount = function (type, count) {\n this._notificationCounts[type] = count;\n};\n\nRoom.prototype.setSummary = function (summary) {\n var _this5 = this;\n\n var heroes = summary[\"m.heroes\"];\n var joinedCount = summary[\"m.joined_member_count\"];\n var invitedCount = summary[\"m.invited_member_count\"];\n if ((0, _isInteger2.default)(joinedCount)) {\n this.currentState.setJoinedMemberCount(joinedCount);\n }\n if ((0, _isInteger2.default)(invitedCount)) {\n this.currentState.setInvitedMemberCount(invitedCount);\n }\n if (Array.isArray(heroes)) {\n // be cautious about trusting server values,\n // and make sure heroes doesn't contain our own id\n // just to be sure\n this._summaryHeroes = heroes.filter(function (userId) {\n return userId !== _this5.myUserId;\n });\n }\n};\n\n/**\n * Whether to send encrypted messages to devices within this room.\n * @param {Boolean} value true to blacklist unverified devices, null\n * to use the global value for this room.\n */\nRoom.prototype.setBlacklistUnverifiedDevices = function (value) {\n this._blacklistUnverifiedDevices = value;\n};\n\n/**\n * Whether to send encrypted messages to devices within this room.\n * @return {Boolean} true if blacklisting unverified devices, null\n * if the global value should be used for this room.\n */\nRoom.prototype.getBlacklistUnverifiedDevices = function () {\n return this._blacklistUnverifiedDevices;\n};\n\n/**\n * Get the avatar URL for a room if one was set.\n * @param {String} baseUrl The homeserver base URL. See\n * {@link module:client~MatrixClient#getHomeserverUrl}.\n * @param {Number} width The desired width of the thumbnail.\n * @param {Number} height The desired height of the thumbnail.\n * @param {string} resizeMethod The thumbnail resize method to use, either\n * \"crop\" or \"scale\".\n * @param {boolean} allowDefault True to allow an identicon for this room if an\n * avatar URL wasn't explicitly set. Default: true.\n * @return {?string} the avatar URL or null.\n */\nRoom.prototype.getAvatarUrl = function (baseUrl, width, height, resizeMethod, allowDefault) {\n var roomAvatarEvent = this.currentState.getStateEvents(\"m.room.avatar\", \"\");\n if (allowDefault === undefined) {\n allowDefault = true;\n }\n if (!roomAvatarEvent && !allowDefault) {\n return null;\n }\n\n var mainUrl = roomAvatarEvent ? roomAvatarEvent.getContent().url : null;\n if (mainUrl) {\n return ContentRepo.getHttpUriForMxc(baseUrl, mainUrl, width, height, resizeMethod);\n } else if (allowDefault) {\n return ContentRepo.getIdenticonUri(baseUrl, this.roomId, width, height);\n }\n\n return null;\n};\n\n/**\n * Get the aliases this room has according to the room's state\n * The aliases returned by this function may not necessarily\n * still point to this room.\n * @return {array} The room's alias as an array of strings\n */\nRoom.prototype.getAliases = function () {\n var alias_strings = [];\n\n var alias_events = this.currentState.getStateEvents(\"m.room.aliases\");\n if (alias_events) {\n for (var i = 0; i < alias_events.length; ++i) {\n var alias_event = alias_events[i];\n if (utils.isArray(alias_event.getContent().aliases)) {\n Array.prototype.push.apply(alias_strings, alias_event.getContent().aliases);\n }\n }\n }\n return alias_strings;\n};\n\n/**\n * Get this room's canonical alias\n * The alias returned by this function may not necessarily\n * still point to this room.\n * @return {?string} The room's canonical alias, or null if there is none\n */\nRoom.prototype.getCanonicalAlias = function () {\n var canonicalAlias = this.currentState.getStateEvents(\"m.room.canonical_alias\", \"\");\n if (canonicalAlias) {\n return canonicalAlias.getContent().alias;\n }\n return null;\n};\n\n/**\n * Add events to a timeline\n *\n * <p>Will fire \"Room.timeline\" for each event added.\n *\n * @param {MatrixEvent[]} events A list of events to add.\n *\n * @param {boolean} toStartOfTimeline True to add these events to the start\n * (oldest) instead of the end (newest) of the timeline. If true, the oldest\n * event will be the <b>last</b> element of 'events'.\n *\n * @param {module:models/event-timeline~EventTimeline} timeline timeline to\n * add events to.\n *\n * @param {string=} paginationToken token for the next batch of events\n *\n * @fires module:client~MatrixClient#event:\"Room.timeline\"\n *\n */\nRoom.prototype.addEventsToTimeline = function (events, toStartOfTimeline, timeline, paginationToken) {\n timeline.getTimelineSet().addEventsToTimeline(events, toStartOfTimeline, timeline, paginationToken);\n};\n\n/**\n * Get a member from the current room state.\n * @param {string} userId The user ID of the member.\n * @return {RoomMember} The member or <code>null</code>.\n */\nRoom.prototype.getMember = function (userId) {\n return this.currentState.getMember(userId);\n};\n\n/**\n * Get a list of members whose membership state is \"join\".\n * @return {RoomMember[]} A list of currently joined members.\n */\nRoom.prototype.getJoinedMembers = function () {\n return this.getMembersWithMembership(\"join\");\n};\n\n/**\n * Returns the number of joined members in this room\n * This method caches the result.\n * This is a wrapper around the method of the same name in roomState, returning\n * its result for the room's current state.\n * @return {integer} The number of members in this room whose membership is 'join'\n */\nRoom.prototype.getJoinedMemberCount = function () {\n return this.currentState.getJoinedMemberCount();\n};\n\n/**\n * Returns the number of invited members in this room\n * @return {integer} The number of members in this room whose membership is 'invite'\n */\nRoom.prototype.getInvitedMemberCount = function () {\n return this.currentState.getInvitedMemberCount();\n};\n\n/**\n * Returns the number of invited + joined members in this room\n * @return {integer} The number of members in this room whose membership is 'invite' or 'join'\n */\nRoom.prototype.getInvitedAndJoinedMemberCount = function () {\n return this.getInvitedMemberCount() + this.getJoinedMemberCount();\n};\n\n/**\n * Get a list of members with given membership state.\n * @param {string} membership The membership state.\n * @return {RoomMember[]} A list of members with the given membership state.\n */\nRoom.prototype.getMembersWithMembership = function (membership) {\n return utils.filter(this.currentState.getMembers(), function (m) {\n return m.membership === membership;\n });\n};\n\n/**\n * Get a list of members we should be encrypting for in this room\n * @return {Promise<RoomMember[]>} A list of members who\n * we should encrypt messages for in this room.\n */\nRoom.prototype.getEncryptionTargetMembers = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n var members;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return (0, _bluebird.resolve)(this.loadMembersIfNeeded());\n\n case 2:\n members = this.getMembersWithMembership(\"join\");\n\n if (this.shouldEncryptForInvitedMembers()) {\n members = members.concat(this.getMembersWithMembership(\"invite\"));\n }\n return _context4.abrupt(\"return\", members);\n\n case 5:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n}));\n\n/**\n * Determine whether we should encrypt messages for invited users in this room\n * @return {boolean} if we should encrypt messages for invited users\n */\nRoom.prototype.shouldEncryptForInvitedMembers = function () {\n var ev = this.currentState.getStateEvents(\"m.room.history_visibility\", \"\");\n return ev && ev.getContent() && ev.getContent().history_visibility !== \"joined\";\n};\n\n/**\n * Get the default room name (i.e. what a given user would see if the\n * room had no m.room.name)\n * @param {string} userId The userId from whose perspective we want\n * to calculate the default name\n * @return {string} The default room name\n */\nRoom.prototype.getDefaultRoomName = function (userId) {\n return calculateRoomName(this, userId, true);\n};\n\n/**\n* Check if the given user_id has the given membership state.\n* @param {string} userId The user ID to check.\n* @param {string} membership The membership e.g. <code>'join'</code>\n* @return {boolean} True if this user_id has the given membership state.\n*/\nRoom.prototype.hasMembershipState = function (userId, membership) {\n var member = this.getMember(userId);\n if (!member) {\n return false;\n }\n return member.membership === membership;\n};\n\n/**\n * Add a timelineSet for this room with the given filter\n * @param {Filter} filter The filter to be applied to this timelineSet\n * @return {EventTimelineSet} The timelineSet\n */\nRoom.prototype.getOrCreateFilteredTimelineSet = function (filter) {\n if (this._filteredTimelineSets[filter.filterId]) {\n return this._filteredTimelineSets[filter.filterId];\n }\n var opts = (0, _assign2.default)({ filter: filter }, this._opts);\n var timelineSet = new EventTimelineSet(this, opts);\n this.reEmitter.reEmit(timelineSet, [\"Room.timeline\", \"Room.timelineReset\"]);\n this._filteredTimelineSets[filter.filterId] = timelineSet;\n this._timelineSets.push(timelineSet);\n\n // populate up the new timelineSet with filtered events from our live\n // unfiltered timeline.\n //\n // XXX: This is risky as our timeline\n // may have grown huge and so take a long time to filter.\n // see https://github.com/vector-im/vector-web/issues/2109\n\n var unfilteredLiveTimeline = this.getLiveTimeline();\n\n unfilteredLiveTimeline.getEvents().forEach(function (event) {\n timelineSet.addLiveEvent(event);\n });\n\n // find the earliest unfiltered timeline\n var timeline = unfilteredLiveTimeline;\n while (timeline.getNeighbouringTimeline(EventTimeline.BACKWARDS)) {\n timeline = timeline.getNeighbouringTimeline(EventTimeline.BACKWARDS);\n }\n\n timelineSet.getLiveTimeline().setPaginationToken(timeline.getPaginationToken(EventTimeline.BACKWARDS), EventTimeline.BACKWARDS);\n\n // alternatively, we could try to do something like this to try and re-paginate\n // in the filtered events from nothing, but Mark says it's an abuse of the API\n // to do so:\n //\n // timelineSet.resetLiveTimeline(\n // unfilteredLiveTimeline.getPaginationToken(EventTimeline.FORWARDS)\n // );\n\n return timelineSet;\n};\n\n/**\n * Forget the timelineSet for this room with the given filter\n *\n * @param {Filter} filter the filter whose timelineSet is to be forgotten\n */\nRoom.prototype.removeFilteredTimelineSet = function (filter) {\n var timelineSet = this._filteredTimelineSets[filter.filterId];\n delete this._filteredTimelineSets[filter.filterId];\n var i = this._timelineSets.indexOf(timelineSet);\n if (i > -1) {\n this._timelineSets.splice(i, 1);\n }\n};\n\n/**\n * Add an event to the end of this room's live timelines. Will fire\n * \"Room.timeline\".\n *\n * @param {MatrixEvent} event Event to be added\n * @param {string?} duplicateStrategy 'ignore' or 'replace'\n * @fires module:client~MatrixClient#event:\"Room.timeline\"\n * @private\n */\nRoom.prototype._addLiveEvent = function (event, duplicateStrategy) {\n var i = void 0;\n if (event.getType() === \"m.room.redaction\") {\n var redactId = event.event.redacts;\n\n // if we know about this event, redact its contents now.\n var redactedEvent = this.getUnfilteredTimelineSet().findEventById(redactId);\n if (redactedEvent) {\n redactedEvent.makeRedacted(event);\n this.emit(\"Room.redaction\", event, this);\n\n // TODO: we stash user displaynames (among other things) in\n // RoomMember objects which are then attached to other events\n // (in the sender and target fields). We should get those\n // RoomMember objects to update themselves when the events that\n // they are based on are changed.\n }\n\n // FIXME: apply redactions to notification list\n\n // NB: We continue to add the redaction event to the timeline so\n // clients can say \"so and so redacted an event\" if they wish to. Also\n // this may be needed to trigger an update.\n }\n\n if (event.getUnsigned().transaction_id) {\n var existingEvent = this._txnToEvent[event.getUnsigned().transaction_id];\n if (existingEvent) {\n // remote echo of an event we sent earlier\n this._handleRemoteEcho(event, existingEvent);\n return;\n }\n }\n\n // add to our timeline sets\n for (i = 0; i < this._timelineSets.length; i++) {\n this._timelineSets[i].addLiveEvent(event, duplicateStrategy);\n }\n\n // synthesize and inject implicit read receipts\n // Done after adding the event because otherwise the app would get a read receipt\n // pointing to an event that wasn't yet in the timeline\n // Don't synthesize RR for m.room.redaction as this causes the RR to go missing.\n if (event.sender && event.getType() !== \"m.room.redaction\") {\n this.addReceipt(synthesizeReceipt(event.sender.userId, event, \"m.read\"), true);\n\n // Any live events from a user could be taken as implicit\n // presence information: evidence that they are currently active.\n // ...except in a world where we use 'user.currentlyActive' to reduce\n // presence spam, this isn't very useful - we'll get a transition when\n // they are no longer currently active anyway. So don't bother to\n // reset the lastActiveAgo and lastPresenceTs from the RoomState's user.\n }\n};\n\n/**\n * Add a pending outgoing event to this room.\n *\n * <p>The event is added to either the pendingEventList, or the live timeline,\n * depending on the setting of opts.pendingEventOrdering.\n *\n * <p>This is an internal method, intended for use by MatrixClient.\n *\n * @param {module:models/event.MatrixEvent} event The event to add.\n *\n * @param {string} txnId Transaction id for this outgoing event\n *\n * @fires module:client~MatrixClient#event:\"Room.localEchoUpdated\"\n *\n * @throws if the event doesn't have status SENDING, or we aren't given a\n * unique transaction id.\n */\nRoom.prototype.addPendingEvent = function (event, txnId) {\n if (event.status !== EventStatus.SENDING) {\n throw new Error(\"addPendingEvent called on an event with status \" + event.status);\n }\n\n if (this._txnToEvent[txnId]) {\n throw new Error(\"addPendingEvent called on an event with known txnId \" + txnId);\n }\n\n // call setEventMetadata to set up event.sender etc\n // as event is shared over all timelineSets, we set up its metadata based\n // on the unfiltered timelineSet.\n EventTimeline.setEventMetadata(event, this.getLiveTimeline().getState(EventTimeline.FORWARDS), false);\n\n this._txnToEvent[txnId] = event;\n\n if (this._opts.pendingEventOrdering == \"detached\") {\n if (this._pendingEventList.some(function (e) {\n return e.status === EventStatus.NOT_SENT;\n })) {\n console.warn(\"Setting event as NOT_SENT due to messages in the same state\");\n event.status = EventStatus.NOT_SENT;\n }\n this._pendingEventList.push(event);\n } else {\n for (var i = 0; i < this._timelineSets.length; i++) {\n var timelineSet = this._timelineSets[i];\n if (timelineSet.getFilter()) {\n if (this._filter.filterRoomTimeline([event]).length) {\n timelineSet.addEventToTimeline(event, timelineSet.getLiveTimeline(), false);\n }\n } else {\n timelineSet.addEventToTimeline(event, timelineSet.getLiveTimeline(), false);\n }\n }\n }\n\n this.emit(\"Room.localEchoUpdated\", event, this, null, null);\n};\n\n/**\n * Deal with the echo of a message we sent.\n *\n * <p>We move the event to the live timeline if it isn't there already, and\n * update it.\n *\n * @param {module:models/event.MatrixEvent} remoteEvent The event received from\n * /sync\n * @param {module:models/event.MatrixEvent} localEvent The local echo, which\n * should be either in the _pendingEventList or the timeline.\n *\n * @fires module:client~MatrixClient#event:\"Room.localEchoUpdated\"\n * @private\n */\nRoom.prototype._handleRemoteEcho = function (remoteEvent, localEvent) {\n var oldEventId = localEvent.getId();\n var newEventId = remoteEvent.getId();\n var oldStatus = localEvent.status;\n\n // no longer pending\n delete this._txnToEvent[remoteEvent.transaction_id];\n\n // if it's in the pending list, remove it\n if (this._pendingEventList) {\n utils.removeElement(this._pendingEventList, function (ev) {\n return ev.getId() == oldEventId;\n }, false);\n }\n\n // replace the event source (this will preserve the plaintext payload if\n // any, which is good, because we don't want to try decoding it again).\n localEvent.handleRemoteEcho(remoteEvent.event);\n\n for (var i = 0; i < this._timelineSets.length; i++) {\n var timelineSet = this._timelineSets[i];\n\n // if it's already in the timeline, update the timeline map. If it's not, add it.\n timelineSet.handleRemoteEcho(localEvent, oldEventId, newEventId);\n }\n\n this.emit(\"Room.localEchoUpdated\", localEvent, this, oldEventId, oldStatus);\n};\n\n/* a map from current event status to a list of allowed next statuses\n */\nvar ALLOWED_TRANSITIONS = {};\n\nALLOWED_TRANSITIONS[EventStatus.ENCRYPTING] = [EventStatus.SENDING, EventStatus.NOT_SENT];\n\nALLOWED_TRANSITIONS[EventStatus.SENDING] = [EventStatus.ENCRYPTING, EventStatus.QUEUED, EventStatus.NOT_SENT, EventStatus.SENT];\n\nALLOWED_TRANSITIONS[EventStatus.QUEUED] = [EventStatus.SENDING, EventStatus.CANCELLED];\n\nALLOWED_TRANSITIONS[EventStatus.SENT] = [];\n\nALLOWED_TRANSITIONS[EventStatus.NOT_SENT] = [EventStatus.SENDING, EventStatus.QUEUED, EventStatus.CANCELLED];\n\nALLOWED_TRANSITIONS[EventStatus.CANCELLED] = [];\n\n/**\n * Update the status / event id on a pending event, to reflect its transmission\n * progress.\n *\n * <p>This is an internal method.\n *\n * @param {MatrixEvent} event local echo event\n * @param {EventStatus} newStatus status to assign\n * @param {string} newEventId new event id to assign. Ignored unless\n * newStatus == EventStatus.SENT.\n * @fires module:client~MatrixClient#event:\"Room.localEchoUpdated\"\n */\nRoom.prototype.updatePendingEvent = function (event, newStatus, newEventId) {\n console.log(\"setting pendingEvent status to \" + newStatus + \" in \" + event.getRoomId());\n\n // if the message was sent, we expect an event id\n if (newStatus == EventStatus.SENT && !newEventId) {\n throw new Error(\"updatePendingEvent called with status=SENT, \" + \"but no new event id\");\n }\n\n // SENT races against /sync, so we have to special-case it.\n if (newStatus == EventStatus.SENT) {\n var timeline = this.getUnfilteredTimelineSet().eventIdToTimeline(newEventId);\n if (timeline) {\n // we've already received the event via the event stream.\n // nothing more to do here.\n return;\n }\n }\n\n var oldStatus = event.status;\n var oldEventId = event.getId();\n\n if (!oldStatus) {\n throw new Error(\"updatePendingEventStatus called on an event which is \" + \"not a local echo.\");\n }\n\n var allowed = ALLOWED_TRANSITIONS[oldStatus];\n if (!allowed || allowed.indexOf(newStatus) < 0) {\n throw new Error(\"Invalid EventStatus transition \" + oldStatus + \"->\" + newStatus);\n }\n\n event.status = newStatus;\n\n if (newStatus == EventStatus.SENT) {\n // update the event id\n event.event.event_id = newEventId;\n\n // if the event was already in the timeline (which will be the case if\n // opts.pendingEventOrdering==chronological), we need to update the\n // timeline map.\n for (var i = 0; i < this._timelineSets.length; i++) {\n this._timelineSets[i].replaceEventId(oldEventId, newEventId);\n }\n } else if (newStatus == EventStatus.CANCELLED) {\n // remove it from the pending event list, or the timeline.\n if (this._pendingEventList) {\n utils.removeElement(this._pendingEventList, function (ev) {\n return ev.getId() == oldEventId;\n }, false);\n }\n this.removeEvent(oldEventId);\n }\n\n this.emit(\"Room.localEchoUpdated\", event, this, oldEventId, oldStatus);\n};\n\n/**\n * Add some events to this room. This can include state events, message\n * events and typing notifications. These events are treated as \"live\" so\n * they will go to the end of the timeline.\n *\n * @param {MatrixEvent[]} events A list of events to add.\n *\n * @param {string} duplicateStrategy Optional. Applies to events in the\n * timeline only. If this is 'replace' then if a duplicate is encountered, the\n * event passed to this function will replace the existing event in the\n * timeline. If this is not specified, or is 'ignore', then the event passed to\n * this function will be ignored entirely, preserving the existing event in the\n * timeline. Events are identical based on their event ID <b>only</b>.\n *\n * @throws If <code>duplicateStrategy</code> is not falsey, 'replace' or 'ignore'.\n */\nRoom.prototype.addLiveEvents = function (events, duplicateStrategy) {\n var i = void 0;\n if (duplicateStrategy && [\"replace\", \"ignore\"].indexOf(duplicateStrategy) === -1) {\n throw new Error(\"duplicateStrategy MUST be either 'replace' or 'ignore'\");\n }\n\n // sanity check that the live timeline is still live\n for (i = 0; i < this._timelineSets.length; i++) {\n var liveTimeline = this._timelineSets[i].getLiveTimeline();\n if (liveTimeline.getPaginationToken(EventTimeline.FORWARDS)) {\n throw new Error(\"live timeline \" + i + \" is no longer live - it has a pagination token \" + \"(\" + liveTimeline.getPaginationToken(EventTimeline.FORWARDS) + \")\");\n }\n if (liveTimeline.getNeighbouringTimeline(EventTimeline.FORWARDS)) {\n throw new Error(\"live timeline \" + i + \" is no longer live - \" + \"it has a neighbouring timeline\");\n }\n }\n\n for (i = 0; i < events.length; i++) {\n if (events[i].getType() === \"m.typing\") {\n this.currentState.setTypingEvent(events[i]);\n } else if (events[i].getType() === \"m.receipt\") {\n this.addReceipt(events[i]);\n }\n // N.B. account_data is added directly by /sync to avoid\n // having to maintain an event.isAccountData() here\n else {\n // TODO: We should have a filter to say \"only add state event\n // types X Y Z to the timeline\".\n this._addLiveEvent(events[i], duplicateStrategy);\n }\n }\n};\n\n/**\n * Removes events from this room.\n * @param {String[]} event_ids A list of event_ids to remove.\n */\nRoom.prototype.removeEvents = function (event_ids) {\n for (var i = 0; i < event_ids.length; ++i) {\n this.removeEvent(event_ids[i]);\n }\n};\n\n/**\n * Removes a single event from this room.\n *\n * @param {String} eventId The id of the event to remove\n *\n * @return {bool} true if the event was removed from any of the room's timeline sets\n */\nRoom.prototype.removeEvent = function (eventId) {\n var removedAny = false;\n for (var i = 0; i < this._timelineSets.length; i++) {\n var removed = this._timelineSets[i].removeEvent(eventId);\n if (removed) {\n removedAny = true;\n }\n }\n return removedAny;\n};\n\n/**\n * Recalculate various aspects of the room, including the room name and\n * room summary. Call this any time the room's current state is modified.\n * May fire \"Room.name\" if the room name is updated.\n * @fires module:client~MatrixClient#event:\"Room.name\"\n */\nRoom.prototype.recalculate = function () {\n // set fake stripped state events if this is an invite room so logic remains\n // consistent elsewhere.\n var self = this;\n var membershipEvent = this.currentState.getStateEvents(\"m.room.member\", this.myUserId);\n if (membershipEvent && membershipEvent.getContent().membership === \"invite\") {\n var strippedStateEvents = membershipEvent.event.invite_room_state || [];\n utils.forEach(strippedStateEvents, function (strippedEvent) {\n var existingEvent = self.currentState.getStateEvents(strippedEvent.type, strippedEvent.state_key);\n if (!existingEvent) {\n // set the fake stripped event instead\n self.currentState.setStateEvents([new MatrixEvent({\n type: strippedEvent.type,\n state_key: strippedEvent.state_key,\n content: strippedEvent.content,\n event_id: \"$fake\" + Date.now(),\n room_id: self.roomId,\n user_id: self.myUserId // technically a lie\n })]);\n }\n });\n }\n\n var oldName = this.name;\n this.name = calculateRoomName(this, this.myUserId);\n this.summary = new RoomSummary(this.roomId, {\n title: this.name\n });\n\n if (oldName !== this.name) {\n this.emit(\"Room.name\", this);\n }\n};\n\n/**\n * Get a list of user IDs who have <b>read up to</b> the given event.\n * @param {MatrixEvent} event the event to get read receipts for.\n * @return {String[]} A list of user IDs.\n */\nRoom.prototype.getUsersReadUpTo = function (event) {\n return this.getReceiptsForEvent(event).filter(function (receipt) {\n return receipt.type === \"m.read\";\n }).map(function (receipt) {\n return receipt.userId;\n });\n};\n\n/**\n * Get the ID of the event that a given user has read up to, or null if we\n * have received no read receipts from them.\n * @param {String} userId The user ID to get read receipt event ID for\n * @param {Boolean} ignoreSynthesized If true, return only receipts that have been\n * sent by the server, not implicit ones generated\n * by the JS SDK.\n * @return {String} ID of the latest event that the given user has read, or null.\n */\nRoom.prototype.getEventReadUpTo = function (userId, ignoreSynthesized) {\n var receipts = this._receipts;\n if (ignoreSynthesized) {\n receipts = this._realReceipts;\n }\n\n if (receipts[\"m.read\"] === undefined || receipts[\"m.read\"][userId] === undefined) {\n return null;\n }\n\n return receipts[\"m.read\"][userId].eventId;\n};\n\n/**\n * Get a list of receipts for the given event.\n * @param {MatrixEvent} event the event to get receipts for\n * @return {Object[]} A list of receipts with a userId, type and data keys or\n * an empty list.\n */\nRoom.prototype.getReceiptsForEvent = function (event) {\n return this._receiptCacheByEventId[event.getId()] || [];\n};\n\n/**\n * Add a receipt event to the room.\n * @param {MatrixEvent} event The m.receipt event.\n * @param {Boolean} fake True if this event is implicit\n */\nRoom.prototype.addReceipt = function (event, fake) {\n // event content looks like:\n // content: {\n // $event_id: {\n // $receipt_type: {\n // $user_id: {\n // ts: $timestamp\n // }\n // }\n // }\n // }\n if (fake === undefined) {\n fake = false;\n }\n if (!fake) {\n this._addReceiptsToStructure(event, this._realReceipts);\n // we don't bother caching real receipts by event ID\n // as there's nothing that would read it.\n }\n this._addReceiptsToStructure(event, this._receipts);\n this._receiptCacheByEventId = this._buildReceiptCache(this._receipts);\n\n // send events after we've regenerated the cache, otherwise things that\n // listened for the event would read from a stale cache\n this.emit(\"Room.receipt\", event, this);\n};\n\n/**\n * Add a receipt event to the room.\n * @param {MatrixEvent} event The m.receipt event.\n * @param {Object} receipts The object to add receipts to\n */\nRoom.prototype._addReceiptsToStructure = function (event, receipts) {\n var self = this;\n utils.keys(event.getContent()).forEach(function (eventId) {\n utils.keys(event.getContent()[eventId]).forEach(function (receiptType) {\n utils.keys(event.getContent()[eventId][receiptType]).forEach(function (userId) {\n var receipt = event.getContent()[eventId][receiptType][userId];\n\n if (!receipts[receiptType]) {\n receipts[receiptType] = {};\n }\n\n var existingReceipt = receipts[receiptType][userId];\n\n if (!existingReceipt) {\n receipts[receiptType][userId] = {};\n } else {\n // we only want to add this receipt if we think it is later\n // than the one we already have. (This is managed\n // server-side, but because we synthesize RRs locally we\n // have to do it here too.)\n var ordering = self.getUnfilteredTimelineSet().compareEventOrdering(existingReceipt.eventId, eventId);\n if (ordering !== null && ordering >= 0) {\n return;\n }\n }\n\n receipts[receiptType][userId] = {\n eventId: eventId,\n data: receipt\n };\n });\n });\n });\n};\n\n/**\n * Build and return a map of receipts by event ID\n * @param {Object} receipts A map of receipts\n * @return {Object} Map of receipts by event ID\n */\nRoom.prototype._buildReceiptCache = function (receipts) {\n var receiptCacheByEventId = {};\n utils.keys(receipts).forEach(function (receiptType) {\n utils.keys(receipts[receiptType]).forEach(function (userId) {\n var receipt = receipts[receiptType][userId];\n if (!receiptCacheByEventId[receipt.eventId]) {\n receiptCacheByEventId[receipt.eventId] = [];\n }\n receiptCacheByEventId[receipt.eventId].push({\n userId: userId,\n type: receiptType,\n data: receipt.data\n });\n });\n });\n return receiptCacheByEventId;\n};\n\n/**\n * Add a temporary local-echo receipt to the room to reflect in the\n * client the fact that we've sent one.\n * @param {string} userId The user ID if the receipt sender\n * @param {MatrixEvent} e The event that is to be acknowledged\n * @param {string} receiptType The type of receipt\n */\nRoom.prototype._addLocalEchoReceipt = function (userId, e, receiptType) {\n this.addReceipt(synthesizeReceipt(userId, e, receiptType), true);\n};\n\n/**\n * Update the room-tag event for the room. The previous one is overwritten.\n * @param {MatrixEvent} event the m.tag event\n */\nRoom.prototype.addTags = function (event) {\n // event content looks like:\n // content: {\n // tags: {\n // $tagName: { $metadata: $value },\n // $tagName: { $metadata: $value },\n // }\n // }\n\n // XXX: do we need to deep copy here?\n this.tags = event.getContent().tags || {};\n\n // XXX: we could do a deep-comparison to see if the tags have really\n // changed - but do we want to bother?\n this.emit(\"Room.tags\", event, this);\n};\n\n/**\n * Update the account_data events for this room, overwriting events of the same type.\n * @param {Array<MatrixEvent>} events an array of account_data events to add\n */\nRoom.prototype.addAccountData = function (events) {\n for (var i = 0; i < events.length; i++) {\n var event = events[i];\n if (event.getType() === \"m.tag\") {\n this.addTags(event);\n }\n this.accountData[event.getType()] = event;\n this.emit(\"Room.accountData\", event, this);\n }\n};\n\n/**\n * Access account_data event of given event type for this room\n * @param {string} type the type of account_data event to be accessed\n * @return {?MatrixEvent} the account_data event in question\n */\nRoom.prototype.getAccountData = function (type) {\n return this.accountData[type];\n};\n\n/**\n * Returns wheter the syncing user has permission to send a message in the room\n * @return {boolean} true if the user should be permitted to send\n * message events into the room.\n */\nRoom.prototype.maySendMessage = function () {\n return this.getMyMembership() === 'join' && this.currentState.maySendEvent('m.room.message', this.myUserId);\n};\n\n/**\n * This is an internal method. Calculates the name of the room from the current\n * room state.\n * @param {Room} room The matrix room.\n * @param {string} userId The client's user ID. Used to filter room members\n * correctly.\n * @param {bool} ignoreRoomNameEvent Return the implicit room name that we'd see if there\n * was no m.room.name event.\n * @return {string} The calculated room name.\n */\nfunction calculateRoomName(room, userId, ignoreRoomNameEvent) {\n if (!ignoreRoomNameEvent) {\n // check for an alias, if any. for now, assume first alias is the\n // official one.\n var mRoomName = room.currentState.getStateEvents(\"m.room.name\", \"\");\n if (mRoomName && mRoomName.getContent() && mRoomName.getContent().name) {\n return mRoomName.getContent().name;\n }\n }\n\n var alias = room.getCanonicalAlias();\n\n if (!alias) {\n var aliases = room.getAliases();\n\n if (aliases.length) {\n alias = aliases[0];\n }\n }\n if (alias) {\n return alias;\n }\n\n var joinedMemberCount = room.currentState.getJoinedMemberCount();\n var invitedMemberCount = room.currentState.getInvitedMemberCount();\n // -1 because these numbers include the syncing user\n var inviteJoinCount = joinedMemberCount + invitedMemberCount - 1;\n\n // get members that are NOT ourselves and are actually in the room.\n var otherNames = null;\n if (room._summaryHeroes) {\n // if we have a summary, the member state events\n // should be in the room state\n otherNames = room._summaryHeroes.map(function (userId) {\n var member = room.getMember(userId);\n return member ? member.name : userId;\n });\n } else {\n var otherMembers = room.currentState.getMembers().filter(function (m) {\n return m.userId !== userId && (m.membership === \"invite\" || m.membership === \"join\");\n });\n // make sure members have stable order\n otherMembers.sort(function (a, b) {\n return a.userId.localeCompare(b.userId);\n });\n // only 5 first members, immitate _summaryHeroes\n otherMembers = otherMembers.slice(0, 5);\n otherNames = otherMembers.map(function (m) {\n return m.name;\n });\n }\n\n if (inviteJoinCount) {\n return memberNamesToRoomName(otherNames, inviteJoinCount);\n }\n\n var myMembership = room.getMyMembership();\n // if I have created a room and invited people throuh\n // 3rd party invites\n if (myMembership == 'join') {\n var thirdPartyInvites = room.currentState.getStateEvents(\"m.room.third_party_invite\");\n\n if (thirdPartyInvites && thirdPartyInvites.length) {\n var thirdPartyNames = thirdPartyInvites.map(function (i) {\n return i.getContent().display_name;\n });\n\n return \"Inviting \" + memberNamesToRoomName(thirdPartyNames);\n }\n }\n // let's try to figure out who was here before\n var leftNames = otherNames;\n // if we didn't have heroes, try finding them in the room state\n if (!leftNames.length) {\n leftNames = room.currentState.getMembers().filter(function (m) {\n return m.userId !== userId && m.membership !== \"invite\" && m.membership !== \"join\";\n }).map(function (m) {\n return m.name;\n });\n }\n if (leftNames.length) {\n return \"Empty room (was \" + memberNamesToRoomName(leftNames) + \")\";\n } else {\n return \"Empty room\";\n }\n}\n\nfunction memberNamesToRoomName(names) {\n var count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : names.length + 1;\n\n var countWithoutMe = count - 1;\n if (!names.length) {\n return \"Empty room\";\n } else if (names.length === 1 && countWithoutMe <= 1) {\n return names[0];\n } else if (names.length === 2 && countWithoutMe <= 2) {\n return names[0] + \" and \" + names[1];\n } else {\n var plural = countWithoutMe > 1;\n if (plural) {\n return names[0] + \" and \" + countWithoutMe + \" others\";\n } else {\n return names[0] + \" and 1 other\";\n }\n }\n}\n\n/**\n * The Room class.\n */\nmodule.exports = Room;\n\n/**\n * Fires when an event we had previously received is redacted.\n *\n * (Note this is *not* fired when the redaction happens before we receive the\n * event).\n *\n * @event module:client~MatrixClient#\"Room.redaction\"\n * @param {MatrixEvent} event The matrix event which was redacted\n * @param {Room} room The room containing the redacted event\n */\n\n/**\n * Fires whenever the name of a room is updated.\n * @event module:client~MatrixClient#\"Room.name\"\n * @param {Room} room The room whose Room.name was updated.\n * @example\n * matrixClient.on(\"Room.name\", function(room){\n * var newName = room.name;\n * });\n */\n\n/**\n * Fires whenever a receipt is received for a room\n * @event module:client~MatrixClient#\"Room.receipt\"\n * @param {event} event The receipt event\n * @param {Room} room The room whose receipts was updated.\n * @example\n * matrixClient.on(\"Room.receipt\", function(event, room){\n * var receiptContent = event.getContent();\n * });\n */\n\n/**\n * Fires whenever a room's tags are updated.\n * @event module:client~MatrixClient#\"Room.tags\"\n * @param {event} event The tags event\n * @param {Room} room The room whose Room.tags was updated.\n * @example\n * matrixClient.on(\"Room.tags\", function(event, room){\n * var newTags = event.getContent().tags;\n * if (newTags[\"favourite\"]) showStar(room);\n * });\n */\n\n/**\n * Fires whenever a room's account_data is updated.\n * @event module:client~MatrixClient#\"Room.accountData\"\n * @param {event} event The account_data event\n * @param {Room} room The room whose account_data was updated.\n * @example\n * matrixClient.on(\"Room.accountData\", function(event, room){\n * if (event.getType() === \"m.room.colorscheme\") {\n * applyColorScheme(event.getContents());\n * }\n * });\n */\n\n/**\n * Fires when the status of a transmitted event is updated.\n *\n * <p>When an event is first transmitted, a temporary copy of the event is\n * inserted into the timeline, with a temporary event id, and a status of\n * 'SENDING'.\n *\n * <p>Once the echo comes back from the server, the content of the event\n * (MatrixEvent.event) is replaced by the complete event from the homeserver,\n * thus updating its event id, as well as server-generated fields such as the\n * timestamp. Its status is set to null.\n *\n * <p>Once the /send request completes, if the remote echo has not already\n * arrived, the event is updated with a new event id and the status is set to\n * 'SENT'. The server-generated fields are of course not updated yet.\n *\n * <p>If the /send fails, In this case, the event's status is set to\n * 'NOT_SENT'. If it is later resent, the process starts again, setting the\n * status to 'SENDING'. Alternatively, the message may be cancelled, which\n * removes the event from the room, and sets the status to 'CANCELLED'.\n *\n * <p>This event is raised to reflect each of the transitions above.\n *\n * @event module:client~MatrixClient#\"Room.localEchoUpdated\"\n *\n * @param {MatrixEvent} event The matrix event which has been updated\n *\n * @param {Room} room The room containing the redacted event\n *\n * @param {string} oldEventId The previous event id (the temporary event id,\n * except when updating a successfully-sent event when its echo arrives)\n *\n * @param {EventStatus} oldStatus The previous event status.\n */\n//# sourceMappingURL=room.js.map","module.exports = { \"default\": require(\"core-js/library/fn/number/is-integer\"), __esModule: true };","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","\"use strict\";\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * @module models/group\n */\nvar EventEmitter = require(\"events\").EventEmitter;\n\nvar utils = require(\"../utils\");\n\n/**\n * Construct a new Group.\n *\n * @param {string} groupId The ID of this group.\n *\n * @prop {string} groupId The ID of this group.\n * @prop {string} name The human-readable display name for this group.\n * @prop {string} avatarUrl The mxc URL for this group's avatar.\n * @prop {string} myMembership The logged in user's membership of this group\n * @prop {Object} inviter Infomation about the user who invited the logged in user\n * to the group, if myMembership is 'invite'.\n * @prop {string} inviter.userId The user ID of the inviter\n */\nfunction Group(groupId) {\n this.groupId = groupId;\n this.name = null;\n this.avatarUrl = null;\n this.myMembership = null;\n this.inviter = null;\n}\nutils.inherits(Group, EventEmitter);\n\nGroup.prototype.setProfile = function (name, avatarUrl) {\n if (this.name === name && this.avatarUrl === avatarUrl) return;\n\n this.name = name || this.groupId;\n this.avatarUrl = avatarUrl;\n\n this.emit(\"Group.profile\", this);\n};\n\nGroup.prototype.setMyMembership = function (membership) {\n if (this.myMembership === membership) return;\n\n this.myMembership = membership;\n\n this.emit(\"Group.myMembership\", this);\n};\n\n/**\n * Sets the 'inviter' property. This does not emit an event (the inviter\n * will only change when the user is revited / reinvited to a room),\n * so set this before setting myMembership.\n * @param {Object} inviter Infomation about who invited us to the room\n */\nGroup.prototype.setInviter = function (inviter) {\n this.inviter = inviter;\n};\n\nmodule.exports = Group;\n\n/**\n * Fires whenever a group's profile information is updated.\n * This means the 'name' and 'avatarUrl' properties.\n * @event module:client~MatrixClient#\"Group.profile\"\n * @param {Group} group The group whose profile was updated.\n * @example\n * matrixClient.on(\"Group.profile\", function(group){\n * var name = group.name;\n * });\n */\n\n/**\n * Fires whenever the logged in user's membership status of\n * the group is updated.\n * @event module:client~MatrixClient#\"Group.myMembership\"\n * @param {Group} group The group in which the user's membership changed\n * @example\n * matrixClient.on(\"Group.myMembership\", function(group){\n * var myMembership = group.myMembership;\n * });\n */\n//# sourceMappingURL=group.js.map","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n var obj;\n\n while (queue.length) {\n var item = queue.pop();\n obj = item.obj[item.prop];\n\n if (Array.isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n\n return obj;\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (Array.isArray(target)) {\n target.push(source);\n } else if (typeof target === 'object') {\n if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (Array.isArray(target) && !Array.isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (Array.isArray(target) && Array.isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n if (target[i] && typeof target[i] === 'object') {\n target[i] = merge(target[i], item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, ' '));\n } catch (e) {\n return str;\n }\n};\n\nvar encode = function encode(str) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = typeof str === 'string' ? str : String(str);\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n return compactQueue(queue);\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n merge: merge\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nmodule.exports = {\n 'default': 'RFC3986',\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return value;\n }\n },\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nexports.default = createMatrixClient;\n\nvar _matrixJsSdk = require(\"matrix-js-sdk\");\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar localStorage = window.localStorage;\n\n// just *accessing* indexedDB throws an exception in firefox with\n// indexeddb disabled.\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar indexedDB = void 0;\ntry {\n indexedDB = window.indexedDB;\n} catch (e) {}\n\n/**\n * Create a new matrix client, with the persistent stores set up appropriately\n * (using localstorage/indexeddb, etc)\n *\n * @param {Object} opts options to pass to Matrix.createClient. This will be\n * extended with `sessionStore` and `store` members.\n *\n * @param {bool} useIndexedDb True to attempt to use indexeddb, or false to force\n * use of the memory store. Default: true.\n *\n * @property {string} indexedDbWorkerScript Optional URL for a web worker script\n * for IndexedDB store operations. By default, indexeddb ops are done on\n * the main thread.\n *\n * @returns {MatrixClient} the newly-created MatrixClient\n */\nfunction createMatrixClient(opts, useIndexedDb) {\n if (useIndexedDb === undefined) useIndexedDb = true;\n\n var storeOpts = {\n useAuthorizationHeader: true\n };\n\n if (localStorage) {\n storeOpts.sessionStore = new _matrixJsSdk2.default.WebStorageSessionStore(localStorage);\n }\n\n if (indexedDB && localStorage && useIndexedDb) {\n storeOpts.store = new _matrixJsSdk2.default.IndexedDBStore({\n indexedDB: indexedDB,\n dbName: \"riot-web-sync\",\n localStorage: localStorage,\n workerScript: createMatrixClient.indexedDbWorkerScript\n });\n }\n\n opts = (0, _assign2.default)(storeOpts, opts);\n\n return _matrixJsSdk2.default.createClient(opts);\n}\n\ncreateMatrixClient.indexedDbWorkerScript = null;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=createMatrixClient.js.map","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","\"use strict\";\n\nmodule.exports = {\n __locale: \"en\",\n days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n abbreviated_days: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n abbreviated_months: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n am: 'AM',\n pm: 'PM'\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Represents a controller for individual settings to alter the reading behaviour\n * based upon environmental conditions, or to react to changes and therefore update\n * the working environment.\n *\n * This is not intended to replace the functionality of a SettingsHandler, it is only\n * intended to handle environmental factors for specific settings.\n */\nvar SettingController = function () {\n function SettingController() {\n (0, _classCallCheck3.default)(this, SettingController);\n }\n\n (0, _createClass3.default)(SettingController, [{\n key: \"getValueOverride\",\n\n /**\n * Gets the overridden value for the setting, if any. This must return null if the\n * value is not to be overridden, otherwise it must return the new value.\n * @param {string} level The level at which the value was requested at.\n * @param {String} roomId The room ID, may be null.\n * @param {*} calculatedValue The value that the handlers think the setting should be,\n * may be null.\n * @param {string} calculatedAtLevel The level for which the calculated value was\n * calculated at. May be null.\n * @return {*} The value that should be used, or null if no override is applicable.\n */\n value: function getValueOverride(level, roomId, calculatedValue, calculatedAtLevel) {\n return null; // no override\n }\n\n /**\n * Called when the setting value has been changed.\n * @param {string} level The level at which the setting has been modified.\n * @param {String} roomId The room ID, may be null.\n * @param {*} newValue The new value for the setting, may be null.\n */\n\n }, {\n key: \"onChange\",\n value: function onChange(level, roomId, newValue) {\n // do nothing by default\n }\n }]);\n return SettingController;\n}();\n\nexports.default = SettingController;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=SettingController.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nexports.levelRoleMap = levelRoleMap;\nexports.textualPowerLevel = textualPowerLevel;\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction levelRoleMap(usersDefault) {\n var _ref;\n\n return _ref = {\n undefined: (0, _languageHandler._t)('Default'),\n 0: (0, _languageHandler._t)('Restricted')\n }, (0, _defineProperty3.default)(_ref, usersDefault, (0, _languageHandler._t)('Default')), (0, _defineProperty3.default)(_ref, 50, (0, _languageHandler._t)('Moderator')), (0, _defineProperty3.default)(_ref, 100, (0, _languageHandler._t)('Admin')), _ref;\n} /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nfunction textualPowerLevel(level, usersDefault) {\n var LEVEL_ROLE_MAP = this.levelRoleMap(usersDefault);\n if (LEVEL_ROLE_MAP[level]) {\n return LEVEL_ROLE_MAP[level] + (level !== undefined ? ' (' + level + ')' : ' (' + usersDefault + ')');\n } else {\n return level;\n }\n}\n//# sourceMappingURL=Roles.js.map","// @flow\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport BasePlatform from 'matrix-react-sdk/lib/BasePlatform';\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\nimport dis from 'matrix-react-sdk/lib/dispatcher';\n\nimport Favico from 'favico.js';\n\nexport const updateCheckStatusEnum = {\n CHECKING: 'CHECKING',\n ERROR: 'ERROR',\n NOTAVAILABLE: 'NOTAVAILABLE',\n DOWNLOADING: 'DOWNLOADING',\n READY: 'READY',\n};\n\n/**\n * Vector-specific extensions to the BasePlatform template\n */\nexport default class VectorBasePlatform extends BasePlatform {\n constructor() {\n super();\n\n // The 'animations' are really low framerate and look terrible.\n // Also it re-starts the animation every time you set the badge,\n // and we set the state each time, even if the value hasn't changed,\n // so we'd need to fix that if enabling the animation.\n this.favicon = new Favico({animation: 'none'});\n this.showUpdateCheck = false;\n this._updateFavicon();\n\n this.startUpdateCheck = this.startUpdateCheck.bind(this);\n this.stopUpdateCheck = this.stopUpdateCheck.bind(this);\n }\n\n getHumanReadableName(): string {\n return 'Vector Base Platform'; // no translation required: only used for analytics\n }\n\n _updateFavicon() {\n try {\n // This needs to be in in a try block as it will throw\n // if there are more than 100 badge count changes in\n // its internal queue\n let bgColor = \"#d00\";\n let notif = this.notificationCount;\n\n if (this.errorDidOccur) {\n notif = notif || \"×\";\n bgColor = \"#f00\";\n }\n\n this.favicon.badge(notif, {\n bgColor: bgColor,\n });\n } catch (e) {\n console.warn(`Failed to set badge count: ${e.message}`);\n }\n }\n\n setNotificationCount(count: number) {\n if (this.notificationCount === count) return;\n super.setNotificationCount(count);\n this._updateFavicon();\n }\n\n setErrorStatus(errorDidOccur: boolean) {\n if (this.errorDidOccur === errorDidOccur) return;\n super.setErrorStatus(errorDidOccur);\n this._updateFavicon();\n }\n\n supportsAutoLaunch() {\n return false;\n }\n\n // XXX: Surely this should be a setting like any other?\n async getAutoLaunchEnabled() {\n return false;\n }\n\n async setAutoLaunchEnabled(enabled) {\n throw new Error(\"Unimplemented\");\n }\n\n /**\n * Begin update polling, if applicable\n */\n startUpdater() {\n }\n\n /**\n * Whether we can call checkForUpdate on this platform build\n */\n async canSelfUpdate(): boolean {\n return false;\n }\n\n startUpdateCheck() {\n this.showUpdateCheck = true;\n dis.dispatch({\n action: 'check_updates',\n value: { status: updateCheckStatusEnum.CHECKING },\n });\n }\n\n stopUpdateCheck() {\n this.showUpdateCheck = false;\n dis.dispatch({\n action: 'check_updates',\n value: false,\n });\n }\n\n getUpdateCheckStatusEnum() {\n return updateCheckStatusEnum;\n }\n\n /**\n * Update the currently running app to the latest available\n * version and replace this instance of the app with the\n * new version.\n */\n installUpdate() {\n }\n\n /**\n * Get a sensible default display name for the\n * device Vector is running on\n */\n getDefaultDeviceDisplayName(): string {\n return _t(\"Unknown device\");\n }\n\n /**\n * Migrate account data from a previous origin\n * Used only for the electron app\n */\n async migrateFromOldOrigin() {\n return false;\n }\n}\n","/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _browserRequest = require('browser-request');\n\nvar _browserRequest2 = _interopRequireDefault(_browserRequest);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _sanitizeHtml = require('sanitize-html');\n\nvar _sanitizeHtml2 = _interopRequireDefault(_sanitizeHtml);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HomePage = function (_React$Component) {\n (0, _inherits3.default)(HomePage, _React$Component);\n\n function HomePage() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, HomePage);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = HomePage.__proto__ || (0, _getPrototypeOf2.default)(HomePage)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n iframeSrc: '',\n page: ''\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(HomePage, [{\n key: 'translate',\n value: function translate(s) {\n // default implementation - skins may wish to extend this\n return (0, _sanitizeHtml2.default)((0, _languageHandler._t)(s));\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n this._unmounted = false;\n\n if (this.props.teamToken && this.props.teamServerUrl) {\n this.setState({\n iframeSrc: this.props.teamServerUrl + '/static/' + this.props.teamToken + '/home.html'\n });\n } else {\n // we use request() to inline the homepage into the react component\n // so that it can inherit CSS and theming easily rather than mess around\n // with iframes and trying to synchronise document.stylesheets.\n\n var src = this.props.homePageUrl || 'home.html';\n\n (0, _browserRequest2.default)({ method: \"GET\", url: src }, function (err, response, body) {\n if (_this2._unmounted) {\n return;\n }\n\n if (err || response.status < 200 || response.status >= 300) {\n console.warn('Error loading home page: ' + err);\n _this2.setState({ page: (0, _languageHandler._t)(\"Couldn't load home page\") });\n return;\n }\n\n body = body.replace(/_t\\(['\"]([\\s\\S]*?)['\"]\\)/mg, function (match, g1) {\n return _this2.translate(g1);\n });\n _this2.setState({ page: body });\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: 'onLoginClick',\n value: function onLoginClick() {\n _dispatcher2.default.dispatch({ action: 'start_login' });\n }\n }, {\n key: 'onRegisterClick',\n value: function onRegisterClick() {\n _dispatcher2.default.dispatch({ action: 'start_registration' });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var guestWarning = \"\";\n if (this.context.matrixClient.isGuest()) {\n guestWarning = _react2.default.createElement(\n 'div',\n { className: 'mx_HomePage_guest_warning' },\n _react2.default.createElement('img', { src: 'img/warning.svg', width: '24', height: '23' }),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"You are currently using Riot anonymously as a guest.\")\n ),\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('If you would like to create a Matrix account you can <a>register</a> now.', {}, { 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: '#', onClick: _this3.onRegisterClick },\n sub\n );\n } })\n ),\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('If you already have a Matrix account you can <a>log in</a> instead.', {}, { 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: '#', onClick: _this3.onLoginClick },\n sub\n );\n } })\n )\n )\n );\n }\n\n if (this.state.iframeSrc) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_HomePage' },\n guestWarning,\n _react2.default.createElement('iframe', { src: this.state.iframeSrc })\n );\n } else {\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n return _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true, className: 'mx_HomePage' },\n guestWarning,\n _react2.default.createElement('div', { className: 'mx_HomePage_body', dangerouslySetInnerHTML: { __html: this.state.page } })\n );\n }\n }\n }]);\n return HomePage;\n}(_react2.default.Component);\n\nHomePage.displayName = 'HomePage';\nHomePage.propTypes = {\n // URL base of the team server. Optional.\n teamServerUrl: _propTypes2.default.string,\n // Team token. Optional. If set, used to get the static homepage of the team\n // associated. If unset, homePageUrl will be used.\n teamToken: _propTypes2.default.string,\n // URL to use as the iFrame src. Defaults to /home.html.\n homePageUrl: _propTypes2.default.string\n};\nHomePage.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n};\n\n\nmodule.exports = HomePage;\n//# sourceMappingURL=HomePage.js.map","var Tokenizer = require(\"./Tokenizer.js\");\n\n/*\n\tOptions:\n\n\txmlMode: Disables the special behavior for script/style tags (false by default)\n\tlowerCaseAttributeNames: call .toLowerCase for each attribute name (true if xmlMode is `false`)\n\tlowerCaseTags: call .toLowerCase for each tag name (true if xmlMode is `false`)\n*/\n\n/*\n\tCallbacks:\n\n\toncdataend,\n\toncdatastart,\n\tonclosetag,\n\toncomment,\n\toncommentend,\n\tonerror,\n\tonopentag,\n\tonprocessinginstruction,\n\tonreset,\n\tontext\n*/\n\nvar formTags = {\n\tinput: true,\n\toption: true,\n\toptgroup: true,\n\tselect: true,\n\tbutton: true,\n\tdatalist: true,\n\ttextarea: true\n};\n\nvar openImpliesClose = {\n\ttr : { tr:true, th:true, td:true },\n\tth : { th:true },\n\ttd : { thead:true, th:true, td:true },\n\tbody : { head:true, link:true, script:true },\n\tli : { li:true },\n\tp : { p:true },\n\th1 : { p:true },\n\th2 : { p:true },\n\th3 : { p:true },\n\th4 : { p:true },\n\th5 : { p:true },\n\th6 : { p:true },\n\tselect : formTags,\n\tinput : formTags,\n\toutput : formTags,\n\tbutton : formTags,\n\tdatalist: formTags,\n\ttextarea: formTags,\n\toption : { option:true },\n\toptgroup: { optgroup:true }\n};\n\nvar voidElements = {\n\t__proto__: null,\n\tarea: true,\n\tbase: true,\n\tbasefont: true,\n\tbr: true,\n\tcol: true,\n\tcommand: true,\n\tembed: true,\n\tframe: true,\n\thr: true,\n\timg: true,\n\tinput: true,\n\tisindex: true,\n\tkeygen: true,\n\tlink: true,\n\tmeta: true,\n\tparam: true,\n\tsource: true,\n\ttrack: true,\n\twbr: true,\n};\n\nvar foreignContextElements = {\n\t__proto__: null,\n\tmath: true,\n\tsvg: true\n}\nvar htmlIntegrationElements = {\n\t__proto__: null,\n\tmi: true,\n\tmo: true,\n\tmn: true,\n\tms: true,\n\tmtext: true,\n\t\"annotation-xml\": true,\n\tforeignObject: true,\n\tdesc: true,\n\ttitle: true\n}\n\nvar re_nameEnd = /\\s|\\//;\n\nfunction Parser(cbs, options){\n\tthis._options = options || {};\n\tthis._cbs = cbs || {};\n\n\tthis._tagname = \"\";\n\tthis._attribname = \"\";\n\tthis._attribvalue = \"\";\n\tthis._attribs = null;\n\tthis._stack = [];\n\tthis._foreignContext = [];\n\n\tthis.startIndex = 0;\n\tthis.endIndex = null;\n\n\tthis._lowerCaseTagNames = \"lowerCaseTags\" in this._options ?\n\t\t!!this._options.lowerCaseTags :\n\t\t!this._options.xmlMode;\n\tthis._lowerCaseAttributeNames = \"lowerCaseAttributeNames\" in this._options ?\n\t\t!!this._options.lowerCaseAttributeNames :\n\t\t!this._options.xmlMode;\n\n\tif(this._options.Tokenizer) {\n\t\tTokenizer = this._options.Tokenizer;\n\t}\n\tthis._tokenizer = new Tokenizer(this._options, this);\n\n\tif(this._cbs.onparserinit) this._cbs.onparserinit(this);\n}\n\nrequire(\"inherits\")(Parser, require(\"events\").EventEmitter);\n\nParser.prototype._updatePosition = function(initialOffset){\n\tif(this.endIndex === null){\n\t\tif(this._tokenizer._sectionStart <= initialOffset){\n\t\t\tthis.startIndex = 0;\n\t\t} else {\n\t\t\tthis.startIndex = this._tokenizer._sectionStart - initialOffset;\n\t\t}\n\t}\n\telse this.startIndex = this.endIndex + 1;\n\tthis.endIndex = this._tokenizer.getAbsoluteIndex();\n};\n\n//Tokenizer event handlers\nParser.prototype.ontext = function(data){\n\tthis._updatePosition(1);\n\tthis.endIndex--;\n\n\tif(this._cbs.ontext) this._cbs.ontext(data);\n};\n\nParser.prototype.onopentagname = function(name){\n\tif(this._lowerCaseTagNames){\n\t\tname = name.toLowerCase();\n\t}\n\n\tthis._tagname = name;\n\n\tif(!this._options.xmlMode && name in openImpliesClose) {\n\t\tfor(\n\t\t\tvar el;\n\t\t\t(el = this._stack[this._stack.length - 1]) in openImpliesClose[name];\n\t\t\tthis.onclosetag(el)\n\t\t);\n\t}\n\n\tif(this._options.xmlMode || !(name in voidElements)){\n\t\tthis._stack.push(name);\n\t\tif(name in foreignContextElements) this._foreignContext.push(true);\n\t\telse if(name in htmlIntegrationElements) this._foreignContext.push(false);\n\t}\n\n\tif(this._cbs.onopentagname) this._cbs.onopentagname(name);\n\tif(this._cbs.onopentag) this._attribs = {};\n};\n\nParser.prototype.onopentagend = function(){\n\tthis._updatePosition(1);\n\n\tif(this._attribs){\n\t\tif(this._cbs.onopentag) this._cbs.onopentag(this._tagname, this._attribs);\n\t\tthis._attribs = null;\n\t}\n\n\tif(!this._options.xmlMode && this._cbs.onclosetag && this._tagname in voidElements){\n\t\tthis._cbs.onclosetag(this._tagname);\n\t}\n\n\tthis._tagname = \"\";\n};\n\nParser.prototype.onclosetag = function(name){\n\tthis._updatePosition(1);\n\n\tif(this._lowerCaseTagNames){\n\t\tname = name.toLowerCase();\n\t}\n\n\tif(this._stack.length && (!(name in voidElements) || this._options.xmlMode)){\n\t\tvar pos = this._stack.lastIndexOf(name);\n\t\tif(pos !== -1){\n\t\t\tif(this._cbs.onclosetag){\n\t\t\t\tpos = this._stack.length - pos;\n\t\t\t\twhile(pos--) this._cbs.onclosetag(this._stack.pop());\n\t\t\t}\n\t\t\telse this._stack.length = pos;\n\t\t} else if(name === \"p\" && !this._options.xmlMode){\n\t\t\tthis.onopentagname(name);\n\t\t\tthis._closeCurrentTag();\n\t\t}\n\t} else if(!this._options.xmlMode && (name === \"br\" || name === \"p\")){\n\t\tthis.onopentagname(name);\n\t\tthis._closeCurrentTag();\n\t}\n};\n\nParser.prototype.onselfclosingtag = function(){\n\tif(this._options.xmlMode || this._options.recognizeSelfClosing\n\t\t|| this._foreignContext[this._foreignContext.length - 1]){\n\t\tthis._closeCurrentTag();\n\t} else {\n\t\tthis.onopentagend();\n\t}\n};\n\nParser.prototype._closeCurrentTag = function(){\n\tvar name = this._tagname;\n\n\tthis.onopentagend();\n\n\t//self-closing tags will be on the top of the stack\n\t//(cheaper check than in onclosetag)\n\tif(this._stack[this._stack.length - 1] === name){\n\t\tif(this._cbs.onclosetag){\n\t\t\tthis._cbs.onclosetag(name);\n\t\t}\n\t\tthis._stack.pop();\n\t\tif((name in foreignContextElements) || (name in htmlIntegrationElements)){\n\t\t\tthis._foreignContext.pop();\n\t\t}\n\t}\n};\n\nParser.prototype.onattribname = function(name){\n\tif(this._lowerCaseAttributeNames){\n\t\tname = name.toLowerCase();\n\t}\n\tthis._attribname = name;\n};\n\nParser.prototype.onattribdata = function(value){\n\tthis._attribvalue += value;\n};\n\nParser.prototype.onattribend = function(){\n\tif(this._cbs.onattribute) this._cbs.onattribute(this._attribname, this._attribvalue);\n\tif(\n\t\tthis._attribs &&\n\t\t!Object.prototype.hasOwnProperty.call(this._attribs, this._attribname)\n\t){\n\t\tthis._attribs[this._attribname] = this._attribvalue;\n\t}\n\tthis._attribname = \"\";\n\tthis._attribvalue = \"\";\n};\n\nParser.prototype._getInstructionName = function(value){\n\tvar idx = value.search(re_nameEnd),\n\t name = idx < 0 ? value : value.substr(0, idx);\n\n\tif(this._lowerCaseTagNames){\n\t\tname = name.toLowerCase();\n\t}\n\n\treturn name;\n};\n\nParser.prototype.ondeclaration = function(value){\n\tif(this._cbs.onprocessinginstruction){\n\t\tvar name = this._getInstructionName(value);\n\t\tthis._cbs.onprocessinginstruction(\"!\" + name, \"!\" + value);\n\t}\n};\n\nParser.prototype.onprocessinginstruction = function(value){\n\tif(this._cbs.onprocessinginstruction){\n\t\tvar name = this._getInstructionName(value);\n\t\tthis._cbs.onprocessinginstruction(\"?\" + name, \"?\" + value);\n\t}\n};\n\nParser.prototype.oncomment = function(value){\n\tthis._updatePosition(4);\n\n\tif(this._cbs.oncomment) this._cbs.oncomment(value);\n\tif(this._cbs.oncommentend) this._cbs.oncommentend();\n};\n\nParser.prototype.oncdata = function(value){\n\tthis._updatePosition(1);\n\n\tif(this._options.xmlMode || this._options.recognizeCDATA){\n\t\tif(this._cbs.oncdatastart) this._cbs.oncdatastart();\n\t\tif(this._cbs.ontext) this._cbs.ontext(value);\n\t\tif(this._cbs.oncdataend) this._cbs.oncdataend();\n\t} else {\n\t\tthis.oncomment(\"[CDATA[\" + value + \"]]\");\n\t}\n};\n\nParser.prototype.onerror = function(err){\n\tif(this._cbs.onerror) this._cbs.onerror(err);\n};\n\nParser.prototype.onend = function(){\n\tif(this._cbs.onclosetag){\n\t\tfor(\n\t\t\tvar i = this._stack.length;\n\t\t\ti > 0;\n\t\t\tthis._cbs.onclosetag(this._stack[--i])\n\t\t);\n\t}\n\tif(this._cbs.onend) this._cbs.onend();\n};\n\n\n//Resets the parser to a blank state, ready to parse a new HTML document\nParser.prototype.reset = function(){\n\tif(this._cbs.onreset) this._cbs.onreset();\n\tthis._tokenizer.reset();\n\n\tthis._tagname = \"\";\n\tthis._attribname = \"\";\n\tthis._attribs = null;\n\tthis._stack = [];\n\n\tif(this._cbs.onparserinit) this._cbs.onparserinit(this);\n};\n\n//Parses a complete HTML document and pushes it to the handler\nParser.prototype.parseComplete = function(data){\n\tthis.reset();\n\tthis.end(data);\n};\n\nParser.prototype.write = function(chunk){\n\tthis._tokenizer.write(chunk);\n};\n\nParser.prototype.end = function(chunk){\n\tthis._tokenizer.end(chunk);\n};\n\nParser.prototype.pause = function(){\n\tthis._tokenizer.pause();\n};\n\nParser.prototype.resume = function(){\n\tthis._tokenizer.resume();\n};\n\n//alias for backwards compat\nParser.prototype.parseChunk = Parser.prototype.write;\nParser.prototype.done = Parser.prototype.end;\n\nmodule.exports = Parser;\n","module.exports = Tokenizer;\n\nvar decodeCodePoint = require(\"entities/lib/decode_codepoint.js\");\nvar entityMap = require(\"entities/maps/entities.json\");\nvar legacyMap = require(\"entities/maps/legacy.json\");\nvar xmlMap = require(\"entities/maps/xml.json\");\n\nvar i = 0;\n\nvar TEXT = i++;\nvar BEFORE_TAG_NAME = i++; //after <\nvar IN_TAG_NAME = i++;\nvar IN_SELF_CLOSING_TAG = i++;\nvar BEFORE_CLOSING_TAG_NAME = i++;\nvar IN_CLOSING_TAG_NAME = i++;\nvar AFTER_CLOSING_TAG_NAME = i++;\n\n//attributes\nvar BEFORE_ATTRIBUTE_NAME = i++;\nvar IN_ATTRIBUTE_NAME = i++;\nvar AFTER_ATTRIBUTE_NAME = i++;\nvar BEFORE_ATTRIBUTE_VALUE = i++;\nvar IN_ATTRIBUTE_VALUE_DQ = i++; // \"\nvar IN_ATTRIBUTE_VALUE_SQ = i++; // '\nvar IN_ATTRIBUTE_VALUE_NQ = i++;\n\n//declarations\nvar BEFORE_DECLARATION = i++; // !\nvar IN_DECLARATION = i++;\n\n//processing instructions\nvar IN_PROCESSING_INSTRUCTION = i++; // ?\n\n//comments\nvar BEFORE_COMMENT = i++;\nvar IN_COMMENT = i++;\nvar AFTER_COMMENT_1 = i++;\nvar AFTER_COMMENT_2 = i++;\n\n//cdata\nvar BEFORE_CDATA_1 = i++; // [\nvar BEFORE_CDATA_2 = i++; // C\nvar BEFORE_CDATA_3 = i++; // D\nvar BEFORE_CDATA_4 = i++; // A\nvar BEFORE_CDATA_5 = i++; // T\nvar BEFORE_CDATA_6 = i++; // A\nvar IN_CDATA = i++; // [\nvar AFTER_CDATA_1 = i++; // ]\nvar AFTER_CDATA_2 = i++; // ]\n\n//special tags\nvar BEFORE_SPECIAL = i++; //S\nvar BEFORE_SPECIAL_END = i++; //S\n\nvar BEFORE_SCRIPT_1 = i++; //C\nvar BEFORE_SCRIPT_2 = i++; //R\nvar BEFORE_SCRIPT_3 = i++; //I\nvar BEFORE_SCRIPT_4 = i++; //P\nvar BEFORE_SCRIPT_5 = i++; //T\nvar AFTER_SCRIPT_1 = i++; //C\nvar AFTER_SCRIPT_2 = i++; //R\nvar AFTER_SCRIPT_3 = i++; //I\nvar AFTER_SCRIPT_4 = i++; //P\nvar AFTER_SCRIPT_5 = i++; //T\n\nvar BEFORE_STYLE_1 = i++; //T\nvar BEFORE_STYLE_2 = i++; //Y\nvar BEFORE_STYLE_3 = i++; //L\nvar BEFORE_STYLE_4 = i++; //E\nvar AFTER_STYLE_1 = i++; //T\nvar AFTER_STYLE_2 = i++; //Y\nvar AFTER_STYLE_3 = i++; //L\nvar AFTER_STYLE_4 = i++; //E\n\nvar BEFORE_ENTITY = i++; //&\nvar BEFORE_NUMERIC_ENTITY = i++; //#\nvar IN_NAMED_ENTITY = i++;\nvar IN_NUMERIC_ENTITY = i++;\nvar IN_HEX_ENTITY = i++; //X\n\nvar j = 0;\n\nvar SPECIAL_NONE = j++;\nvar SPECIAL_SCRIPT = j++;\nvar SPECIAL_STYLE = j++;\n\nfunction whitespace(c){\n\treturn c === \" \" || c === \"\\n\" || c === \"\\t\" || c === \"\\f\" || c === \"\\r\";\n}\n\nfunction ifElseState(upper, SUCCESS, FAILURE){\n\tvar lower = upper.toLowerCase();\n\n\tif(upper === lower){\n\t\treturn function(c){\n\t\t\tif(c === lower){\n\t\t\t\tthis._state = SUCCESS;\n\t\t\t} else {\n\t\t\t\tthis._state = FAILURE;\n\t\t\t\tthis._index--;\n\t\t\t}\n\t\t};\n\t} else {\n\t\treturn function(c){\n\t\t\tif(c === lower || c === upper){\n\t\t\t\tthis._state = SUCCESS;\n\t\t\t} else {\n\t\t\t\tthis._state = FAILURE;\n\t\t\t\tthis._index--;\n\t\t\t}\n\t\t};\n\t}\n}\n\nfunction consumeSpecialNameChar(upper, NEXT_STATE){\n\tvar lower = upper.toLowerCase();\n\n\treturn function(c){\n\t\tif(c === lower || c === upper){\n\t\t\tthis._state = NEXT_STATE;\n\t\t} else {\n\t\t\tthis._state = IN_TAG_NAME;\n\t\t\tthis._index--; //consume the token again\n\t\t}\n\t};\n}\n\nfunction Tokenizer(options, cbs){\n\tthis._state = TEXT;\n\tthis._buffer = \"\";\n\tthis._sectionStart = 0;\n\tthis._index = 0;\n\tthis._bufferOffset = 0; //chars removed from _buffer\n\tthis._baseState = TEXT;\n\tthis._special = SPECIAL_NONE;\n\tthis._cbs = cbs;\n\tthis._running = true;\n\tthis._ended = false;\n\tthis._xmlMode = !!(options && options.xmlMode);\n\tthis._decodeEntities = !!(options && options.decodeEntities);\n}\n\nTokenizer.prototype._stateText = function(c){\n\tif(c === \"<\"){\n\t\tif(this._index > this._sectionStart){\n\t\t\tthis._cbs.ontext(this._getSection());\n\t\t}\n\t\tthis._state = BEFORE_TAG_NAME;\n\t\tthis._sectionStart = this._index;\n\t} else if(this._decodeEntities && this._special === SPECIAL_NONE && c === \"&\"){\n\t\tif(this._index > this._sectionStart){\n\t\t\tthis._cbs.ontext(this._getSection());\n\t\t}\n\t\tthis._baseState = TEXT;\n\t\tthis._state = BEFORE_ENTITY;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateBeforeTagName = function(c){\n\tif(c === \"/\"){\n\t\tthis._state = BEFORE_CLOSING_TAG_NAME;\n\t} else if(c === \"<\"){\n\t\tthis._cbs.ontext(this._getSection());\n\t\tthis._sectionStart = this._index;\n\t} else if(c === \">\" || this._special !== SPECIAL_NONE || whitespace(c)) {\n\t\tthis._state = TEXT;\n\t} else if(c === \"!\"){\n\t\tthis._state = BEFORE_DECLARATION;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(c === \"?\"){\n\t\tthis._state = IN_PROCESSING_INSTRUCTION;\n\t\tthis._sectionStart = this._index + 1;\n\t} else {\n\t\tthis._state = (!this._xmlMode && (c === \"s\" || c === \"S\")) ?\n\t\t\tBEFORE_SPECIAL : IN_TAG_NAME;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateInTagName = function(c){\n\tif(c === \"/\" || c === \">\" || whitespace(c)){\n\t\tthis._emitToken(\"onopentagname\");\n\t\tthis._state = BEFORE_ATTRIBUTE_NAME;\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._stateBeforeCloseingTagName = function(c){\n\tif(whitespace(c));\n\telse if(c === \">\"){\n\t\tthis._state = TEXT;\n\t} else if(this._special !== SPECIAL_NONE){\n\t\tif(c === \"s\" || c === \"S\"){\n\t\t\tthis._state = BEFORE_SPECIAL_END;\n\t\t} else {\n\t\t\tthis._state = TEXT;\n\t\t\tthis._index--;\n\t\t}\n\t} else {\n\t\tthis._state = IN_CLOSING_TAG_NAME;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateInCloseingTagName = function(c){\n\tif(c === \">\" || whitespace(c)){\n\t\tthis._emitToken(\"onclosetag\");\n\t\tthis._state = AFTER_CLOSING_TAG_NAME;\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._stateAfterCloseingTagName = function(c){\n\t//skip everything until \">\"\n\tif(c === \">\"){\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t}\n};\n\nTokenizer.prototype._stateBeforeAttributeName = function(c){\n\tif(c === \">\"){\n\t\tthis._cbs.onopentagend();\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(c === \"/\"){\n\t\tthis._state = IN_SELF_CLOSING_TAG;\n\t} else if(!whitespace(c)){\n\t\tthis._state = IN_ATTRIBUTE_NAME;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateInSelfClosingTag = function(c){\n\tif(c === \">\"){\n\t\tthis._cbs.onselfclosingtag();\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(!whitespace(c)){\n\t\tthis._state = BEFORE_ATTRIBUTE_NAME;\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._stateInAttributeName = function(c){\n\tif(c === \"=\" || c === \"/\" || c === \">\" || whitespace(c)){\n\t\tthis._cbs.onattribname(this._getSection());\n\t\tthis._sectionStart = -1;\n\t\tthis._state = AFTER_ATTRIBUTE_NAME;\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._stateAfterAttributeName = function(c){\n\tif(c === \"=\"){\n\t\tthis._state = BEFORE_ATTRIBUTE_VALUE;\n\t} else if(c === \"/\" || c === \">\"){\n\t\tthis._cbs.onattribend();\n\t\tthis._state = BEFORE_ATTRIBUTE_NAME;\n\t\tthis._index--;\n\t} else if(!whitespace(c)){\n\t\tthis._cbs.onattribend();\n\t\tthis._state = IN_ATTRIBUTE_NAME;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateBeforeAttributeValue = function(c){\n\tif(c === \"\\\"\"){\n\t\tthis._state = IN_ATTRIBUTE_VALUE_DQ;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(c === \"'\"){\n\t\tthis._state = IN_ATTRIBUTE_VALUE_SQ;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(!whitespace(c)){\n\t\tthis._state = IN_ATTRIBUTE_VALUE_NQ;\n\t\tthis._sectionStart = this._index;\n\t\tthis._index--; //reconsume token\n\t}\n};\n\nTokenizer.prototype._stateInAttributeValueDoubleQuotes = function(c){\n\tif(c === \"\\\"\"){\n\t\tthis._emitToken(\"onattribdata\");\n\t\tthis._cbs.onattribend();\n\t\tthis._state = BEFORE_ATTRIBUTE_NAME;\n\t} else if(this._decodeEntities && c === \"&\"){\n\t\tthis._emitToken(\"onattribdata\");\n\t\tthis._baseState = this._state;\n\t\tthis._state = BEFORE_ENTITY;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateInAttributeValueSingleQuotes = function(c){\n\tif(c === \"'\"){\n\t\tthis._emitToken(\"onattribdata\");\n\t\tthis._cbs.onattribend();\n\t\tthis._state = BEFORE_ATTRIBUTE_NAME;\n\t} else if(this._decodeEntities && c === \"&\"){\n\t\tthis._emitToken(\"onattribdata\");\n\t\tthis._baseState = this._state;\n\t\tthis._state = BEFORE_ENTITY;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateInAttributeValueNoQuotes = function(c){\n\tif(whitespace(c) || c === \">\"){\n\t\tthis._emitToken(\"onattribdata\");\n\t\tthis._cbs.onattribend();\n\t\tthis._state = BEFORE_ATTRIBUTE_NAME;\n\t\tthis._index--;\n\t} else if(this._decodeEntities && c === \"&\"){\n\t\tthis._emitToken(\"onattribdata\");\n\t\tthis._baseState = this._state;\n\t\tthis._state = BEFORE_ENTITY;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateBeforeDeclaration = function(c){\n\tthis._state = c === \"[\" ? BEFORE_CDATA_1 :\n\t\tc === \"-\" ? BEFORE_COMMENT :\n\t\t\tIN_DECLARATION;\n};\n\nTokenizer.prototype._stateInDeclaration = function(c){\n\tif(c === \">\"){\n\t\tthis._cbs.ondeclaration(this._getSection());\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t}\n};\n\nTokenizer.prototype._stateInProcessingInstruction = function(c){\n\tif(c === \">\"){\n\t\tthis._cbs.onprocessinginstruction(this._getSection());\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t}\n};\n\nTokenizer.prototype._stateBeforeComment = function(c){\n\tif(c === \"-\"){\n\t\tthis._state = IN_COMMENT;\n\t\tthis._sectionStart = this._index + 1;\n\t} else {\n\t\tthis._state = IN_DECLARATION;\n\t}\n};\n\nTokenizer.prototype._stateInComment = function(c){\n\tif(c === \"-\") this._state = AFTER_COMMENT_1;\n};\n\nTokenizer.prototype._stateAfterComment1 = function(c){\n\tif(c === \"-\"){\n\t\tthis._state = AFTER_COMMENT_2;\n\t} else {\n\t\tthis._state = IN_COMMENT;\n\t}\n};\n\nTokenizer.prototype._stateAfterComment2 = function(c){\n\tif(c === \">\"){\n\t\t//remove 2 trailing chars\n\t\tthis._cbs.oncomment(this._buffer.substring(this._sectionStart, this._index - 2));\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(c !== \"-\"){\n\t\tthis._state = IN_COMMENT;\n\t}\n\t// else: stay in AFTER_COMMENT_2 (`--->`)\n};\n\nTokenizer.prototype._stateBeforeCdata1 = ifElseState(\"C\", BEFORE_CDATA_2, IN_DECLARATION);\nTokenizer.prototype._stateBeforeCdata2 = ifElseState(\"D\", BEFORE_CDATA_3, IN_DECLARATION);\nTokenizer.prototype._stateBeforeCdata3 = ifElseState(\"A\", BEFORE_CDATA_4, IN_DECLARATION);\nTokenizer.prototype._stateBeforeCdata4 = ifElseState(\"T\", BEFORE_CDATA_5, IN_DECLARATION);\nTokenizer.prototype._stateBeforeCdata5 = ifElseState(\"A\", BEFORE_CDATA_6, IN_DECLARATION);\n\nTokenizer.prototype._stateBeforeCdata6 = function(c){\n\tif(c === \"[\"){\n\t\tthis._state = IN_CDATA;\n\t\tthis._sectionStart = this._index + 1;\n\t} else {\n\t\tthis._state = IN_DECLARATION;\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._stateInCdata = function(c){\n\tif(c === \"]\") this._state = AFTER_CDATA_1;\n};\n\nTokenizer.prototype._stateAfterCdata1 = function(c){\n\tif(c === \"]\") this._state = AFTER_CDATA_2;\n\telse this._state = IN_CDATA;\n};\n\nTokenizer.prototype._stateAfterCdata2 = function(c){\n\tif(c === \">\"){\n\t\t//remove 2 trailing chars\n\t\tthis._cbs.oncdata(this._buffer.substring(this._sectionStart, this._index - 2));\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(c !== \"]\") {\n\t\tthis._state = IN_CDATA;\n\t}\n\t//else: stay in AFTER_CDATA_2 (`]]]>`)\n};\n\nTokenizer.prototype._stateBeforeSpecial = function(c){\n\tif(c === \"c\" || c === \"C\"){\n\t\tthis._state = BEFORE_SCRIPT_1;\n\t} else if(c === \"t\" || c === \"T\"){\n\t\tthis._state = BEFORE_STYLE_1;\n\t} else {\n\t\tthis._state = IN_TAG_NAME;\n\t\tthis._index--; //consume the token again\n\t}\n};\n\nTokenizer.prototype._stateBeforeSpecialEnd = function(c){\n\tif(this._special === SPECIAL_SCRIPT && (c === \"c\" || c === \"C\")){\n\t\tthis._state = AFTER_SCRIPT_1;\n\t} else if(this._special === SPECIAL_STYLE && (c === \"t\" || c === \"T\")){\n\t\tthis._state = AFTER_STYLE_1;\n\t}\n\telse this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeScript1 = consumeSpecialNameChar(\"R\", BEFORE_SCRIPT_2);\nTokenizer.prototype._stateBeforeScript2 = consumeSpecialNameChar(\"I\", BEFORE_SCRIPT_3);\nTokenizer.prototype._stateBeforeScript3 = consumeSpecialNameChar(\"P\", BEFORE_SCRIPT_4);\nTokenizer.prototype._stateBeforeScript4 = consumeSpecialNameChar(\"T\", BEFORE_SCRIPT_5);\n\nTokenizer.prototype._stateBeforeScript5 = function(c){\n\tif(c === \"/\" || c === \">\" || whitespace(c)){\n\t\tthis._special = SPECIAL_SCRIPT;\n\t}\n\tthis._state = IN_TAG_NAME;\n\tthis._index--; //consume the token again\n};\n\nTokenizer.prototype._stateAfterScript1 = ifElseState(\"R\", AFTER_SCRIPT_2, TEXT);\nTokenizer.prototype._stateAfterScript2 = ifElseState(\"I\", AFTER_SCRIPT_3, TEXT);\nTokenizer.prototype._stateAfterScript3 = ifElseState(\"P\", AFTER_SCRIPT_4, TEXT);\nTokenizer.prototype._stateAfterScript4 = ifElseState(\"T\", AFTER_SCRIPT_5, TEXT);\n\nTokenizer.prototype._stateAfterScript5 = function(c){\n\tif(c === \">\" || whitespace(c)){\n\t\tthis._special = SPECIAL_NONE;\n\t\tthis._state = IN_CLOSING_TAG_NAME;\n\t\tthis._sectionStart = this._index - 6;\n\t\tthis._index--; //reconsume the token\n\t}\n\telse this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeStyle1 = consumeSpecialNameChar(\"Y\", BEFORE_STYLE_2);\nTokenizer.prototype._stateBeforeStyle2 = consumeSpecialNameChar(\"L\", BEFORE_STYLE_3);\nTokenizer.prototype._stateBeforeStyle3 = consumeSpecialNameChar(\"E\", BEFORE_STYLE_4);\n\nTokenizer.prototype._stateBeforeStyle4 = function(c){\n\tif(c === \"/\" || c === \">\" || whitespace(c)){\n\t\tthis._special = SPECIAL_STYLE;\n\t}\n\tthis._state = IN_TAG_NAME;\n\tthis._index--; //consume the token again\n};\n\nTokenizer.prototype._stateAfterStyle1 = ifElseState(\"Y\", AFTER_STYLE_2, TEXT);\nTokenizer.prototype._stateAfterStyle2 = ifElseState(\"L\", AFTER_STYLE_3, TEXT);\nTokenizer.prototype._stateAfterStyle3 = ifElseState(\"E\", AFTER_STYLE_4, TEXT);\n\nTokenizer.prototype._stateAfterStyle4 = function(c){\n\tif(c === \">\" || whitespace(c)){\n\t\tthis._special = SPECIAL_NONE;\n\t\tthis._state = IN_CLOSING_TAG_NAME;\n\t\tthis._sectionStart = this._index - 5;\n\t\tthis._index--; //reconsume the token\n\t}\n\telse this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeEntity = ifElseState(\"#\", BEFORE_NUMERIC_ENTITY, IN_NAMED_ENTITY);\nTokenizer.prototype._stateBeforeNumericEntity = ifElseState(\"X\", IN_HEX_ENTITY, IN_NUMERIC_ENTITY);\n\n//for entities terminated with a semicolon\nTokenizer.prototype._parseNamedEntityStrict = function(){\n\t//offset = 1\n\tif(this._sectionStart + 1 < this._index){\n\t\tvar entity = this._buffer.substring(this._sectionStart + 1, this._index),\n\t\t map = this._xmlMode ? xmlMap : entityMap;\n\n\t\tif(map.hasOwnProperty(entity)){\n\t\t\tthis._emitPartial(map[entity]);\n\t\t\tthis._sectionStart = this._index + 1;\n\t\t}\n\t}\n};\n\n\n//parses legacy entities (without trailing semicolon)\nTokenizer.prototype._parseLegacyEntity = function(){\n\tvar start = this._sectionStart + 1,\n\t limit = this._index - start;\n\n\tif(limit > 6) limit = 6; //the max length of legacy entities is 6\n\n\twhile(limit >= 2){ //the min length of legacy entities is 2\n\t\tvar entity = this._buffer.substr(start, limit);\n\n\t\tif(legacyMap.hasOwnProperty(entity)){\n\t\t\tthis._emitPartial(legacyMap[entity]);\n\t\t\tthis._sectionStart += limit + 1;\n\t\t\treturn;\n\t\t} else {\n\t\t\tlimit--;\n\t\t}\n\t}\n};\n\nTokenizer.prototype._stateInNamedEntity = function(c){\n\tif(c === \";\"){\n\t\tthis._parseNamedEntityStrict();\n\t\tif(this._sectionStart + 1 < this._index && !this._xmlMode){\n\t\t\tthis._parseLegacyEntity();\n\t\t}\n\t\tthis._state = this._baseState;\n\t} else if((c < \"a\" || c > \"z\") && (c < \"A\" || c > \"Z\") && (c < \"0\" || c > \"9\")){\n\t\tif(this._xmlMode);\n\t\telse if(this._sectionStart + 1 === this._index);\n\t\telse if(this._baseState !== TEXT){\n\t\t\tif(c !== \"=\"){\n\t\t\t\tthis._parseNamedEntityStrict();\n\t\t\t}\n\t\t} else {\n\t\t\tthis._parseLegacyEntity();\n\t\t}\n\n\t\tthis._state = this._baseState;\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._decodeNumericEntity = function(offset, base){\n\tvar sectionStart = this._sectionStart + offset;\n\n\tif(sectionStart !== this._index){\n\t\t//parse entity\n\t\tvar entity = this._buffer.substring(sectionStart, this._index);\n\t\tvar parsed = parseInt(entity, base);\n\n\t\tthis._emitPartial(decodeCodePoint(parsed));\n\t\tthis._sectionStart = this._index;\n\t} else {\n\t\tthis._sectionStart--;\n\t}\n\n\tthis._state = this._baseState;\n};\n\nTokenizer.prototype._stateInNumericEntity = function(c){\n\tif(c === \";\"){\n\t\tthis._decodeNumericEntity(2, 10);\n\t\tthis._sectionStart++;\n\t} else if(c < \"0\" || c > \"9\"){\n\t\tif(!this._xmlMode){\n\t\t\tthis._decodeNumericEntity(2, 10);\n\t\t} else {\n\t\t\tthis._state = this._baseState;\n\t\t}\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._stateInHexEntity = function(c){\n\tif(c === \";\"){\n\t\tthis._decodeNumericEntity(3, 16);\n\t\tthis._sectionStart++;\n\t} else if((c < \"a\" || c > \"f\") && (c < \"A\" || c > \"F\") && (c < \"0\" || c > \"9\")){\n\t\tif(!this._xmlMode){\n\t\t\tthis._decodeNumericEntity(3, 16);\n\t\t} else {\n\t\t\tthis._state = this._baseState;\n\t\t}\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._cleanup = function (){\n\tif(this._sectionStart < 0){\n\t\tthis._buffer = \"\";\n\t\tthis._bufferOffset += this._index;\n\t\tthis._index = 0;\n\t} else if(this._running){\n\t\tif(this._state === TEXT){\n\t\t\tif(this._sectionStart !== this._index){\n\t\t\t\tthis._cbs.ontext(this._buffer.substr(this._sectionStart));\n\t\t\t}\n\t\t\tthis._buffer = \"\";\n\t\t\tthis._bufferOffset += this._index;\n\t\t\tthis._index = 0;\n\t\t} else if(this._sectionStart === this._index){\n\t\t\t//the section just started\n\t\t\tthis._buffer = \"\";\n\t\t\tthis._bufferOffset += this._index;\n\t\t\tthis._index = 0;\n\t\t} else {\n\t\t\t//remove everything unnecessary\n\t\t\tthis._buffer = this._buffer.substr(this._sectionStart);\n\t\t\tthis._index -= this._sectionStart;\n\t\t\tthis._bufferOffset += this._sectionStart;\n\t\t}\n\n\t\tthis._sectionStart = 0;\n\t}\n};\n\n//TODO make events conditional\nTokenizer.prototype.write = function(chunk){\n\tif(this._ended) this._cbs.onerror(Error(\".write() after done!\"));\n\n\tthis._buffer += chunk;\n\tthis._parse();\n};\n\nTokenizer.prototype._parse = function(){\n\twhile(this._index < this._buffer.length && this._running){\n\t\tvar c = this._buffer.charAt(this._index);\n\t\tif(this._state === TEXT) {\n\t\t\tthis._stateText(c);\n\t\t} else if(this._state === BEFORE_TAG_NAME){\n\t\t\tthis._stateBeforeTagName(c);\n\t\t} else if(this._state === IN_TAG_NAME) {\n\t\t\tthis._stateInTagName(c);\n\t\t} else if(this._state === BEFORE_CLOSING_TAG_NAME){\n\t\t\tthis._stateBeforeCloseingTagName(c);\n\t\t} else if(this._state === IN_CLOSING_TAG_NAME){\n\t\t\tthis._stateInCloseingTagName(c);\n\t\t} else if(this._state === AFTER_CLOSING_TAG_NAME){\n\t\t\tthis._stateAfterCloseingTagName(c);\n\t\t} else if(this._state === IN_SELF_CLOSING_TAG){\n\t\t\tthis._stateInSelfClosingTag(c);\n\t\t}\n\n\t\t/*\n\t\t*\tattributes\n\t\t*/\n\t\telse if(this._state === BEFORE_ATTRIBUTE_NAME){\n\t\t\tthis._stateBeforeAttributeName(c);\n\t\t} else if(this._state === IN_ATTRIBUTE_NAME){\n\t\t\tthis._stateInAttributeName(c);\n\t\t} else if(this._state === AFTER_ATTRIBUTE_NAME){\n\t\t\tthis._stateAfterAttributeName(c);\n\t\t} else if(this._state === BEFORE_ATTRIBUTE_VALUE){\n\t\t\tthis._stateBeforeAttributeValue(c);\n\t\t} else if(this._state === IN_ATTRIBUTE_VALUE_DQ){\n\t\t\tthis._stateInAttributeValueDoubleQuotes(c);\n\t\t} else if(this._state === IN_ATTRIBUTE_VALUE_SQ){\n\t\t\tthis._stateInAttributeValueSingleQuotes(c);\n\t\t} else if(this._state === IN_ATTRIBUTE_VALUE_NQ){\n\t\t\tthis._stateInAttributeValueNoQuotes(c);\n\t\t}\n\n\t\t/*\n\t\t*\tdeclarations\n\t\t*/\n\t\telse if(this._state === BEFORE_DECLARATION){\n\t\t\tthis._stateBeforeDeclaration(c);\n\t\t} else if(this._state === IN_DECLARATION){\n\t\t\tthis._stateInDeclaration(c);\n\t\t}\n\n\t\t/*\n\t\t*\tprocessing instructions\n\t\t*/\n\t\telse if(this._state === IN_PROCESSING_INSTRUCTION){\n\t\t\tthis._stateInProcessingInstruction(c);\n\t\t}\n\n\t\t/*\n\t\t*\tcomments\n\t\t*/\n\t\telse if(this._state === BEFORE_COMMENT){\n\t\t\tthis._stateBeforeComment(c);\n\t\t} else if(this._state === IN_COMMENT){\n\t\t\tthis._stateInComment(c);\n\t\t} else if(this._state === AFTER_COMMENT_1){\n\t\t\tthis._stateAfterComment1(c);\n\t\t} else if(this._state === AFTER_COMMENT_2){\n\t\t\tthis._stateAfterComment2(c);\n\t\t}\n\n\t\t/*\n\t\t*\tcdata\n\t\t*/\n\t\telse if(this._state === BEFORE_CDATA_1){\n\t\t\tthis._stateBeforeCdata1(c);\n\t\t} else if(this._state === BEFORE_CDATA_2){\n\t\t\tthis._stateBeforeCdata2(c);\n\t\t} else if(this._state === BEFORE_CDATA_3){\n\t\t\tthis._stateBeforeCdata3(c);\n\t\t} else if(this._state === BEFORE_CDATA_4){\n\t\t\tthis._stateBeforeCdata4(c);\n\t\t} else if(this._state === BEFORE_CDATA_5){\n\t\t\tthis._stateBeforeCdata5(c);\n\t\t} else if(this._state === BEFORE_CDATA_6){\n\t\t\tthis._stateBeforeCdata6(c);\n\t\t} else if(this._state === IN_CDATA){\n\t\t\tthis._stateInCdata(c);\n\t\t} else if(this._state === AFTER_CDATA_1){\n\t\t\tthis._stateAfterCdata1(c);\n\t\t} else if(this._state === AFTER_CDATA_2){\n\t\t\tthis._stateAfterCdata2(c);\n\t\t}\n\n\t\t/*\n\t\t* special tags\n\t\t*/\n\t\telse if(this._state === BEFORE_SPECIAL){\n\t\t\tthis._stateBeforeSpecial(c);\n\t\t} else if(this._state === BEFORE_SPECIAL_END){\n\t\t\tthis._stateBeforeSpecialEnd(c);\n\t\t}\n\n\t\t/*\n\t\t* script\n\t\t*/\n\t\telse if(this._state === BEFORE_SCRIPT_1){\n\t\t\tthis._stateBeforeScript1(c);\n\t\t} else if(this._state === BEFORE_SCRIPT_2){\n\t\t\tthis._stateBeforeScript2(c);\n\t\t} else if(this._state === BEFORE_SCRIPT_3){\n\t\t\tthis._stateBeforeScript3(c);\n\t\t} else if(this._state === BEFORE_SCRIPT_4){\n\t\t\tthis._stateBeforeScript4(c);\n\t\t} else if(this._state === BEFORE_SCRIPT_5){\n\t\t\tthis._stateBeforeScript5(c);\n\t\t}\n\n\t\telse if(this._state === AFTER_SCRIPT_1){\n\t\t\tthis._stateAfterScript1(c);\n\t\t} else if(this._state === AFTER_SCRIPT_2){\n\t\t\tthis._stateAfterScript2(c);\n\t\t} else if(this._state === AFTER_SCRIPT_3){\n\t\t\tthis._stateAfterScript3(c);\n\t\t} else if(this._state === AFTER_SCRIPT_4){\n\t\t\tthis._stateAfterScript4(c);\n\t\t} else if(this._state === AFTER_SCRIPT_5){\n\t\t\tthis._stateAfterScript5(c);\n\t\t}\n\n\t\t/*\n\t\t* style\n\t\t*/\n\t\telse if(this._state === BEFORE_STYLE_1){\n\t\t\tthis._stateBeforeStyle1(c);\n\t\t} else if(this._state === BEFORE_STYLE_2){\n\t\t\tthis._stateBeforeStyle2(c);\n\t\t} else if(this._state === BEFORE_STYLE_3){\n\t\t\tthis._stateBeforeStyle3(c);\n\t\t} else if(this._state === BEFORE_STYLE_4){\n\t\t\tthis._stateBeforeStyle4(c);\n\t\t}\n\n\t\telse if(this._state === AFTER_STYLE_1){\n\t\t\tthis._stateAfterStyle1(c);\n\t\t} else if(this._state === AFTER_STYLE_2){\n\t\t\tthis._stateAfterStyle2(c);\n\t\t} else if(this._state === AFTER_STYLE_3){\n\t\t\tthis._stateAfterStyle3(c);\n\t\t} else if(this._state === AFTER_STYLE_4){\n\t\t\tthis._stateAfterStyle4(c);\n\t\t}\n\n\t\t/*\n\t\t* entities\n\t\t*/\n\t\telse if(this._state === BEFORE_ENTITY){\n\t\t\tthis._stateBeforeEntity(c);\n\t\t} else if(this._state === BEFORE_NUMERIC_ENTITY){\n\t\t\tthis._stateBeforeNumericEntity(c);\n\t\t} else if(this._state === IN_NAMED_ENTITY){\n\t\t\tthis._stateInNamedEntity(c);\n\t\t} else if(this._state === IN_NUMERIC_ENTITY){\n\t\t\tthis._stateInNumericEntity(c);\n\t\t} else if(this._state === IN_HEX_ENTITY){\n\t\t\tthis._stateInHexEntity(c);\n\t\t}\n\n\t\telse {\n\t\t\tthis._cbs.onerror(Error(\"unknown _state\"), this._state);\n\t\t}\n\n\t\tthis._index++;\n\t}\n\n\tthis._cleanup();\n};\n\nTokenizer.prototype.pause = function(){\n\tthis._running = false;\n};\nTokenizer.prototype.resume = function(){\n\tthis._running = true;\n\n\tif(this._index < this._buffer.length){\n\t\tthis._parse();\n\t}\n\tif(this._ended){\n\t\tthis._finish();\n\t}\n};\n\nTokenizer.prototype.end = function(chunk){\n\tif(this._ended) this._cbs.onerror(Error(\".end() after done!\"));\n\tif(chunk) this.write(chunk);\n\n\tthis._ended = true;\n\n\tif(this._running) this._finish();\n};\n\nTokenizer.prototype._finish = function(){\n\t//if there is remaining data, emit it in a reasonable way\n\tif(this._sectionStart < this._index){\n\t\tthis._handleTrailingData();\n\t}\n\n\tthis._cbs.onend();\n};\n\nTokenizer.prototype._handleTrailingData = function(){\n\tvar data = this._buffer.substr(this._sectionStart);\n\n\tif(this._state === IN_CDATA || this._state === AFTER_CDATA_1 || this._state === AFTER_CDATA_2){\n\t\tthis._cbs.oncdata(data);\n\t} else if(this._state === IN_COMMENT || this._state === AFTER_COMMENT_1 || this._state === AFTER_COMMENT_2){\n\t\tthis._cbs.oncomment(data);\n\t} else if(this._state === IN_NAMED_ENTITY && !this._xmlMode){\n\t\tthis._parseLegacyEntity();\n\t\tif(this._sectionStart < this._index){\n\t\t\tthis._state = this._baseState;\n\t\t\tthis._handleTrailingData();\n\t\t}\n\t} else if(this._state === IN_NUMERIC_ENTITY && !this._xmlMode){\n\t\tthis._decodeNumericEntity(2, 10);\n\t\tif(this._sectionStart < this._index){\n\t\t\tthis._state = this._baseState;\n\t\t\tthis._handleTrailingData();\n\t\t}\n\t} else if(this._state === IN_HEX_ENTITY && !this._xmlMode){\n\t\tthis._decodeNumericEntity(3, 16);\n\t\tif(this._sectionStart < this._index){\n\t\t\tthis._state = this._baseState;\n\t\t\tthis._handleTrailingData();\n\t\t}\n\t} else if(\n\t\tthis._state !== IN_TAG_NAME &&\n\t\tthis._state !== BEFORE_ATTRIBUTE_NAME &&\n\t\tthis._state !== BEFORE_ATTRIBUTE_VALUE &&\n\t\tthis._state !== AFTER_ATTRIBUTE_NAME &&\n\t\tthis._state !== IN_ATTRIBUTE_NAME &&\n\t\tthis._state !== IN_ATTRIBUTE_VALUE_SQ &&\n\t\tthis._state !== IN_ATTRIBUTE_VALUE_DQ &&\n\t\tthis._state !== IN_ATTRIBUTE_VALUE_NQ &&\n\t\tthis._state !== IN_CLOSING_TAG_NAME\n\t){\n\t\tthis._cbs.ontext(data);\n\t}\n\t//else, ignore remaining data\n\t//TODO add a way to remove current tag\n};\n\nTokenizer.prototype.reset = function(){\n\tTokenizer.call(this, {xmlMode: this._xmlMode, decodeEntities: this._decodeEntities}, this._cbs);\n};\n\nTokenizer.prototype.getAbsoluteIndex = function(){\n\treturn this._bufferOffset + this._index;\n};\n\nTokenizer.prototype._getSection = function(){\n\treturn this._buffer.substring(this._sectionStart, this._index);\n};\n\nTokenizer.prototype._emitToken = function(name){\n\tthis._cbs[name](this._getSection());\n\tthis._sectionStart = -1;\n};\n\nTokenizer.prototype._emitPartial = function(value){\n\tif(this._baseState !== TEXT){\n\t\tthis._cbs.onattribdata(value); //TODO implement the new event\n\t} else {\n\t\tthis._cbs.ontext(value);\n\t}\n};\n","var decodeMap = require(\"../maps/decode.json\");\n\nmodule.exports = decodeCodePoint;\n\n// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nfunction decodeCodePoint(codePoint) {\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return \"\\uFFFD\";\n }\n\n if (codePoint in decodeMap) {\n codePoint = decodeMap[codePoint];\n }\n\n var output = \"\";\n\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n\n output += String.fromCharCode(codePoint);\n return output;\n}\n","// This object will be used as the prototype for Nodes when creating a\n// DOM-Level-1-compliant structure.\nvar NodePrototype = module.exports = {\n\tget firstChild() {\n\t\tvar children = this.children;\n\t\treturn children && children[0] || null;\n\t},\n\tget lastChild() {\n\t\tvar children = this.children;\n\t\treturn children && children[children.length - 1] || null;\n\t},\n\tget nodeType() {\n\t\treturn nodeTypes[this.type] || nodeTypes.element;\n\t}\n};\n\nvar domLvl1 = {\n\ttagName: \"name\",\n\tchildNodes: \"children\",\n\tparentNode: \"parent\",\n\tpreviousSibling: \"prev\",\n\tnextSibling: \"next\",\n\tnodeValue: \"data\"\n};\n\nvar nodeTypes = {\n\telement: 1,\n\ttext: 3,\n\tcdata: 4,\n\tcomment: 8\n};\n\nObject.keys(domLvl1).forEach(function(key) {\n\tvar shorthand = domLvl1[key];\n\tObject.defineProperty(NodePrototype, key, {\n\t\tget: function() {\n\t\t\treturn this[shorthand] || null;\n\t\t},\n\t\tset: function(val) {\n\t\t\tthis[shorthand] = val;\n\t\t\treturn val;\n\t\t}\n\t});\n});\n","module.exports = Stream;\n\nvar Parser = require(\"./Parser.js\");\nvar WritableStream = require(\"readable-stream\").Writable;\nvar StringDecoder = require(\"string_decoder\").StringDecoder;\nvar Buffer = require(\"buffer\").Buffer;\n\nfunction Stream(cbs, options){\n\tvar parser = this._parser = new Parser(cbs, options);\n\tvar decoder = this._decoder = new StringDecoder();\n\n\tWritableStream.call(this, {decodeStrings: false});\n\n\tthis.once(\"finish\", function(){\n\t\tparser.end(decoder.end());\n\t});\n}\n\nrequire(\"inherits\")(Stream, WritableStream);\n\nWritableStream.prototype._write = function(chunk, encoding, cb){\n\tif(chunk instanceof Buffer) chunk = this._decoder.write(chunk);\n\tthis._parser.write(chunk);\n\tcb();\n};\n","'use strict';\n\nexports.__esModule = true;\n\nvar _supportsColor = require('supports-color');\n\nvar _supportsColor2 = _interopRequireDefault(_supportsColor);\n\nvar _chalk = require('chalk');\n\nvar _chalk2 = _interopRequireDefault(_chalk);\n\nvar _terminalHighlight = require('./terminal-highlight');\n\nvar _terminalHighlight2 = _interopRequireDefault(_terminalHighlight);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * The CSS parser throws this error for broken CSS.\n *\n * Custom parsers can throw this error for broken custom syntax using\n * the {@link Node#error} method.\n *\n * PostCSS will use the input source map to detect the original error location.\n * If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS,\n * PostCSS will show the original position in the Sass file.\n *\n * If you need the position in the PostCSS input\n * (e.g., to debug the previous compiler), use `error.input.file`.\n *\n * @example\n * // Catching and checking syntax error\n * try {\n * postcss.parse('a{')\n * } catch (error) {\n * if ( error.name === 'CssSyntaxError' ) {\n * error //=> CssSyntaxError\n * }\n * }\n *\n * @example\n * // Raising error from plugin\n * throw node.error('Unknown variable', { plugin: 'postcss-vars' });\n */\nvar CssSyntaxError = function () {\n\n /**\n * @param {string} message - error message\n * @param {number} [line] - source line of the error\n * @param {number} [column] - source column of the error\n * @param {string} [source] - source code of the broken file\n * @param {string} [file] - absolute path to the broken file\n * @param {string} [plugin] - PostCSS plugin name, if error came from plugin\n */\n function CssSyntaxError(message, line, column, source, file, plugin) {\n _classCallCheck(this, CssSyntaxError);\n\n /**\n * @member {string} - Always equal to `'CssSyntaxError'`. You should\n * always check error type\n * by `error.name === 'CssSyntaxError'` instead of\n * `error instanceof CssSyntaxError`, because\n * npm could have several PostCSS versions.\n *\n * @example\n * if ( error.name === 'CssSyntaxError' ) {\n * error //=> CssSyntaxError\n * }\n */\n this.name = 'CssSyntaxError';\n /**\n * @member {string} - Error message.\n *\n * @example\n * error.message //=> 'Unclosed block'\n */\n this.reason = message;\n\n if (file) {\n /**\n * @member {string} - Absolute path to the broken file.\n *\n * @example\n * error.file //=> 'a.sass'\n * error.input.file //=> 'a.css'\n */\n this.file = file;\n }\n if (source) {\n /**\n * @member {string} - Source code of the broken file.\n *\n * @example\n * error.source //=> 'a { b {} }'\n * error.input.column //=> 'a b { }'\n */\n this.source = source;\n }\n if (plugin) {\n /**\n * @member {string} - Plugin name, if error came from plugin.\n *\n * @example\n * error.plugin //=> 'postcss-vars'\n */\n this.plugin = plugin;\n }\n if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n /**\n * @member {number} - Source line of the error.\n *\n * @example\n * error.line //=> 2\n * error.input.line //=> 4\n */\n this.line = line;\n /**\n * @member {number} - Source column of the error.\n *\n * @example\n * error.column //=> 1\n * error.input.column //=> 4\n */\n this.column = column;\n }\n\n this.setMessage();\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n\n CssSyntaxError.prototype.setMessage = function setMessage() {\n /**\n * @member {string} - Full error text in the GNU error format\n * with plugin, file, line and column.\n *\n * @example\n * error.message //=> 'a.css:1:1: Unclosed block'\n */\n this.message = this.plugin ? this.plugin + ': ' : '';\n this.message += this.file ? this.file : '<css input>';\n if (typeof this.line !== 'undefined') {\n this.message += ':' + this.line + ':' + this.column;\n }\n this.message += ': ' + this.reason;\n };\n\n /**\n * Returns a few lines of CSS source that caused the error.\n *\n * If the CSS has an input source map without `sourceContent`,\n * this method will return an empty string.\n *\n * @param {boolean} [color] whether arrow will be colored red by terminal\n * color codes. By default, PostCSS will detect\n * color support by `process.stdout.isTTY`\n * and `process.env.NODE_DISABLE_COLORS`.\n *\n * @example\n * error.showSourceCode() //=> \" 4 | }\n * // 5 | a {\n * // > 6 | bad\n * // | ^\n * // 7 | }\n * // 8 | b {\"\n *\n * @return {string} few lines of CSS source that caused the error\n */\n\n\n CssSyntaxError.prototype.showSourceCode = function showSourceCode(color) {\n var _this = this;\n\n if (!this.source) return '';\n\n var css = this.source;\n if (typeof color === 'undefined') color = _supportsColor2.default.stdout;\n if (color) css = (0, _terminalHighlight2.default)(css);\n\n var lines = css.split(/\\r?\\n/);\n var start = Math.max(this.line - 3, 0);\n var end = Math.min(this.line + 2, lines.length);\n\n var maxWidth = String(end).length;\n\n function mark(text) {\n if (color && _chalk2.default.red) {\n return _chalk2.default.red.bold(text);\n } else {\n return text;\n }\n }\n function aside(text) {\n if (color && _chalk2.default.gray) {\n return _chalk2.default.gray(text);\n } else {\n return text;\n }\n }\n\n return lines.slice(start, end).map(function (line, index) {\n var number = start + 1 + index;\n var gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | ';\n if (number === _this.line) {\n var spacing = aside(gutter.replace(/\\d/g, ' ')) + line.slice(0, _this.column - 1).replace(/[^\\t]/g, ' ');\n return mark('>') + aside(gutter) + line + '\\n ' + spacing + mark('^');\n } else {\n return ' ' + aside(gutter) + line;\n }\n }).join('\\n');\n };\n\n /**\n * Returns error position, message and source code of the broken part.\n *\n * @example\n * error.toString() //=> \"CssSyntaxError: app.css:1:1: Unclosed block\n * // > 1 | a {\n * // | ^\"\n *\n * @return {string} error position, message and source code\n */\n\n\n CssSyntaxError.prototype.toString = function toString() {\n var code = this.showSourceCode();\n if (code) {\n code = '\\n\\n' + code + '\\n';\n }\n return this.name + ': ' + this.message + code;\n };\n\n /**\n * @memberof CssSyntaxError#\n * @member {Input} input - Input object with PostCSS internal information\n * about input file. If input has source map\n * from previous tool, PostCSS will use origin\n * (for example, Sass) source. You can use this\n * object to get PostCSS input source.\n *\n * @example\n * error.input.file //=> 'a.css'\n * error.file //=> 'a.sass'\n */\n\n return CssSyntaxError;\n}();\n\nexports.default = CssSyntaxError;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNzcy1zeW50YXgtZXJyb3IuZXM2Il0sIm5hbWVzIjpbIkNzc1N5bnRheEVycm9yIiwibWVzc2FnZSIsImxpbmUiLCJjb2x1bW4iLCJzb3VyY2UiLCJmaWxlIiwicGx1Z2luIiwibmFtZSIsInJlYXNvbiIsInNldE1lc3NhZ2UiLCJFcnJvciIsImNhcHR1cmVTdGFja1RyYWNlIiwic2hvd1NvdXJjZUNvZGUiLCJjb2xvciIsImNzcyIsInN1cHBvcnRzQ29sb3IiLCJzdGRvdXQiLCJsaW5lcyIsInNwbGl0Iiwic3RhcnQiLCJNYXRoIiwibWF4IiwiZW5kIiwibWluIiwibGVuZ3RoIiwibWF4V2lkdGgiLCJTdHJpbmciLCJtYXJrIiwidGV4dCIsImNoYWxrIiwicmVkIiwiYm9sZCIsImFzaWRlIiwiZ3JheSIsInNsaWNlIiwibWFwIiwiaW5kZXgiLCJudW1iZXIiLCJndXR0ZXIiLCJzcGFjaW5nIiwicmVwbGFjZSIsImpvaW4iLCJ0b1N0cmluZyIsImNvZGUiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7OztBQUNBOzs7O0FBRUE7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTJCTUEsYzs7QUFFRjs7Ozs7Ozs7QUFRQSw0QkFBWUMsT0FBWixFQUFxQkMsSUFBckIsRUFBMkJDLE1BQTNCLEVBQW1DQyxNQUFuQyxFQUEyQ0MsSUFBM0MsRUFBaURDLE1BQWpELEVBQXlEO0FBQUE7O0FBQ3JEOzs7Ozs7Ozs7Ozs7QUFZQSxhQUFLQyxJQUFMLEdBQVksZ0JBQVo7QUFDQTs7Ozs7O0FBTUEsYUFBS0MsTUFBTCxHQUFjUCxPQUFkOztBQUVBLFlBQUtJLElBQUwsRUFBWTtBQUNSOzs7Ozs7O0FBT0EsaUJBQUtBLElBQUwsR0FBWUEsSUFBWjtBQUNIO0FBQ0QsWUFBS0QsTUFBTCxFQUFjO0FBQ1Y7Ozs7Ozs7QUFPQSxpQkFBS0EsTUFBTCxHQUFjQSxNQUFkO0FBQ0g7QUFDRCxZQUFLRSxNQUFMLEVBQWM7QUFDVjs7Ozs7O0FBTUEsaUJBQUtBLE1B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QUF2QyxFQUFpRCxHQUFqRCxDQUZKO0FBR0EsdUJBQU9iLEtBQUssR0FBTCxJQUFZSyxNQUFNTSxNQUFOLENBQVosR0FBNEJwQyxJQUE1QixHQUFtQyxLQUFuQyxHQUNBcUMsT0FEQSxHQUNVWixLQUFLLEdBQUwsQ0FEakI7QUFFSCxhQU5ELE1BTU87QUFDSCx1QkFBTyxNQUFNSyxNQUFNTSxNQUFOLENBQU4sR0FBc0JwQyxJQUE3QjtBQUNIO0FBQ0osU0FaTSxFQVlKdUMsSUFaSSxDQVlDLElBWkQsQ0FBUDtBQWFILEs7O0FBRUQ7Ozs7Ozs7Ozs7Ozs2QkFVQUMsUSx1QkFBVztBQUNQLFlBQUlDLE9BQU8sS0FBSy9CLGNBQUwsRUFBWDtBQUNBLFlBQUsrQixJQUFMLEVBQVk7QUFDUkEsbUJBQU8sU0FBU0EsSUFBVCxHQUFnQixJQUF2QjtBQUNIO0FBQ0QsZUFBTyxLQUFLcEMsSUFBTCxHQUFZLElBQVosR0FBbUIsS0FBS04sT0FBeEIsR0FBa0MwQyxJQUF6QztBQUNILEs7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7a0JBZVczQyxjIiwiZmlsZSI6ImNzcy1zeW50YXgtZXJyb3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3VwcG9ydHNDb2xvciBmcm9tICdzdXBwb3J0cy1jb2xvcic7XG5pbXBvcnQgY2hhbGsgICAgICAgICBmcm9tICdjaGFsayc7XG5cbmltcG9ydCB0ZXJtaW5hbEhpZ2hsaWdodCBmcm9tICcuL3Rlcm1pbmFsLWhpZ2hsaWdodCc7XG5cbi8qKlxuICogVGhlIENTUyBwYXJzZXIgdGhyb3dzIHRoaXMgZXJyb3IgZm9yIGJyb2tlbiBDU1MuXG4gKlxuICogQ3VzdG9tIHBhcnNlcnMgY2FuIHRocm93IHRoaXMgZXJyb3IgZm9yIGJyb2tlbiBjdXN0b20gc3ludGF4IHVzaW5nXG4gKiB0aGUge0BsaW5rIE5vZGUjZXJyb3J9IG1ldGhvZC5cbiAqXG4gKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSBpbnB1dCBzb3VyY2UgbWFwIHRvIGRldGVjdCB0aGUgb3JpZ2luYWwgZXJyb3IgbG9jYXRpb24uXG4gKiBJZiB5b3Ugd3JvdGUgYSBTYXNzIGZpbGUsIGNvbXBpbGVkIGl0IHRvIENTUyBhbmQgdGhlbiBwYXJzZWQgaXQgd2l0aCBQb3N0Q1NTLFxuICogUG9zdENTUyB3aWxsIHNob3cgdGhlIG9yaWdpbmFsIHBvc2l0aW9uIGluIHRoZSBTYXNzIGZpbGUuXG4gKlxuICogSWYgeW91IG5lZWQgdGhlIHBvc2l0aW9uIGluIHRoZSBQb3N0Q1NTIGlucHV0XG4gKiAoZS5nLiwgdG8gZGVidWcgdGhlIHByZXZpb3VzIGNvbXBpbGVyKSwgdXNlIGBlcnJvci5pbnB1dC5maWxlYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2F0Y2hpbmcgYW5kIGNoZWNraW5nIHN5bnRheCBlcnJvclxuICogdHJ5IHtcbiAqICAgcG9zdGNzcy5wYXJzZSgnYXsnKVxuICogfSBjYXRjaCAoZXJyb3IpIHtcbiAqICAgaWYgKCBlcnJvci5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InICkge1xuICogICAgIGVycm9yIC8vPT4gQ3NzU3ludGF4RXJyb3JcbiAqICAgfVxuICogfVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSYWlzaW5nIGVycm9yIGZyb20gcGx1Z2luXG4gKiB0aHJvdyBub2RlLmVycm9yKCdVbmtub3duIHZhcmlhYmxlJywgeyBwbHVnaW46ICdwb3N0Y3NzLXZhcnMnIH0pO1xuICovXG5jbGFzcyBDc3NTeW50YXhFcnJvciB7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAgLSBlcnJvciBtZXNzYWdlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsaW5lXSAgIC0gc291cmNlIGxpbmUgb2YgdGhlIGVycm9yXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtjb2x1bW5dIC0gc291cmNlIGNvbHVtbiBvZiB0aGUgZXJyb3JcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3NvdXJjZV0gLSBzb3VyY2UgY29kZSBvZiB0aGUgYnJva2VuIGZpbGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2ZpbGVdICAgLSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBicm9rZW4gZmlsZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbcGx1Z2luXSAtIFBvc3RDU1MgcGx1Z2luIG5hbWUsIGlmIGVycm9yIGNhbWUgZnJvbSBwbHVnaW5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlLCBsaW5lLCBjb2x1bW4sIHNvdXJjZSwgZmlsZSwgcGx1Z2luKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtzdHJpbmd9IC0gQWx3YXlzIGVxdWFsIHRvIGAnQ3NzU3ludGF4RXJyb3InYC4gWW91IHNob3VsZFxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgYWx3YXlzIGNoZWNrIGVycm9yIHR5cGVcbiAgICAgICAgICogICAgICAgICAgICAgICAgICAgIGJ5IGBlcnJvci5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InYCBpbnN0ZWFkIG9mXG4gICAgICAgICAqICAgICAgICAgICAgICAgICAgICBgZXJyb3IgaW5zdGFuY2VvZiBDc3NTeW50YXhFcnJvcmAsIGJlY2F1c2VcbiAgICAgICAgICogICAgICAgICAgICAgICAgICAgIG5wbSBjb3VsZCBoYXZlIHNldmVyYWwgUG9zdENTUyB2ZXJzaW9ucy5cbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogaWYgKCBlcnJvci5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InICkge1xuICAgICAgICAgKiAgIGVycm9yIC8vPT4gQ3NzU3ludGF4RXJyb3JcbiAgICAgICAgICogfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5uYW1lID0gJ0Nzc1N5bnRheEVycm9yJztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge3N0cmluZ30gLSBFcnJvciBtZXNzYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKiBlcnJvci5tZXNzYWdlIC8vPT4gJ1VuY2xvc2VkIGJsb2NrJ1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5yZWFzb24gPSBtZXNzYWdlO1xuXG4gICAgICAgIGlmICggZmlsZSApIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQG1lbWJlciB7c3RyaW5nfSAtIEFic29sdXRlIHBhdGggdG8gdGhlIGJyb2tlbiBmaWxlLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAgICAgKiBlcnJvci5maWxlICAgICAgIC8vPT4gJ2Euc2FzcydcbiAgICAgICAgICAgICAqIGVycm9yLmlucHV0LmZpbGUgLy89PiAnYS5jc3MnXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuZmlsZSA9IGZpbGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCBzb3VyY2UgKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBtZW1iZXIge3N0cmluZ30gLSBTb3VyY2UgY29kZSBvZiB0aGUgYnJva2VuIGZpbGUuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICAgICAqIGVycm9yLnNvdXJjZSAgICAgICAvLz0+ICdhIHsgYiB7fSB9J1xuICAgICAgICAgICAgICogZXJyb3IuaW5wdXQuY29sdW1uIC8vPT4gJ2EgYiB7IH0nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICggcGx1Z2luICkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAbWVtYmVyIHtzdHJpbmd9IC0gUGx1Z2luIG5hbWUsIGlmIGVycm9yIGNhbWUgZnJvbSBwbHVnaW4uXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICAgICAqIGVycm9yLnBsdWdpbiAvLz0+ICdwb3N0Y3NzLXZhcnMnXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICAgICAgICB9XG4gICAgICAgIGlmICggdHlwZW9mIGxpbmUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb2x1bW4gIT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAbWVtYmVyIHtudW1iZXJ9IC0gU291cmNlIGxpbmUgb2YgdGhlIGVycm9yLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAgICAgKiBlcnJvci5saW5lICAgICAgIC8vPT4gMlxuICAgICAgICAgICAgICogZXJyb3IuaW5wdXQubGluZSAvLz0+IDRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGhpcy5saW5lICAgPSBsaW5lO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAbWVtYmVyIHtudW1iZXJ9IC0gU291cmNlIGNvbHVtbiBvZiB0aGUgZXJyb3IuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICAgICAqIGVycm9yLmNvbHVtbiAgICAgICAvLz0+IDFcbiAgICAgICAgICAgICAqIGVycm9yLmlucHV0LmNvbHVtbiAvLz0+IDRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldE1lc3NhZ2UoKTtcblxuICAgICAgICBpZiAoIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlICkge1xuICAgICAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgQ3NzU3ludGF4RXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0TWVzc2FnZSgpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge3N0cmluZ30gLSBGdWxsIGVycm9yIHRleHQgaW4gdGhlIEdOVSBlcnJvciBmb3JtYXRcbiAgICAgICAgICogICAgICAgICAgICAgICAgICAgIHdpdGggcGx1Z2luLCBmaWxlLCBsaW5lIGFuZCBjb2x1bW4uXG4gICAgICAgICAqXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqIGVycm9yLm1lc3NhZ2UgLy89PiAnYS5jc3M6MToxOiBVbmNsb3NlZCBibG9jaydcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMubWVzc2FnZSAgPSB0aGlzLnBsdWdpbiA/IHRoaXMucGx1Z2luICsgJzogJyA6ICcnO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgKz0gdGhpcy5maWxlID8gdGhpcy5maWxlIDogJzxjc3MgaW5wdXQ+JztcbiAgICAgICAgaWYgKCB0eXBlb2YgdGhpcy5saW5lICE9PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZSArPSAnOicgKyB0aGlzLmxpbmUgKyAnOicgKyB0aGlzLmNvbHVtbjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1lc3NhZ2UgKz0gJzogJyArIHRoaXMucmVhc29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBmZXcgbGluZXMgb2YgQ1NTIHNvdXJjZSB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuXG4gICAgICpcbiAgICAgKiBJZiB0aGUgQ1NTIGhhcyBhbiBpbnB1dCBzb3VyY2UgbWFwIHdpdGhvdXQgYHNvdXJjZUNvbnRlbnRgLFxuICAgICAqIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2NvbG9yXSB3aGV0aGVyIGFycm93IHdpbGwgYmUgY29sb3JlZCByZWQgYnkgdGVybWluYWxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgY29kZXMuIEJ5IGRlZmF1bHQsIFBvc3RDU1Mgd2lsbCBkZXRlY3RcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3Igc3VwcG9ydCBieSBgcHJvY2Vzcy5zdGRvdXQuaXNUVFlgXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBgcHJvY2Vzcy5lbnYuTk9ERV9ESVNBQkxFX0NPTE9SU2AuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGVycm9yLnNob3dTb3VyY2VDb2RlKCkgLy89PiBcIiAgNCB8IH1cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgNSB8IGEge1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgPiA2IHwgICBiYWRcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICB8ICAgXlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICA3IHwgfVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICA4IHwgYiB7XCJcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gZmV3IGxpbmVzIG9mIENTUyBzb3VyY2UgdGhhdCBjYXVzZWQgdGhlIGVycm9yXG4gICAgICovXG4gICAgc2hvd1NvdXJjZUNvZGUoY29sb3IpIHtcbiAgICAgICAgaWYgKCAhdGhpcy5zb3VyY2UgKSByZXR1cm4gJyc7XG5cbiAgICAgICAgbGV0IGNzcyA9IHRoaXMuc291cmNlO1xuICAgICAgICBpZiAoIHR5cGVvZiBjb2xvciA9PT0gJ3VuZGVmaW5lZCcgKSBjb2xvciA9IHN1cHBvcnRzQ29sb3Iuc3Rkb3V0O1xuICAgICAgICBpZiAoIGNvbG9yICkgY3NzID0gdGVybWluYWxIaWdobGlnaHQoY3NzKTtcblxuICAgICAgICBsZXQgbGluZXMgPSBjc3Muc3BsaXQoL1xccj9cXG4vKTtcbiAgICAgICAgbGV0IHN0YXJ0ID0gTWF0aC5tYXgodGhpcy5saW5lIC0gMywgMCk7XG4gICAgICAgIGxldCBlbmQgICA9IE1hdGgubWluKHRoaXMubGluZSArIDIsIGxpbmVzLmxlbmd0aCk7XG5cbiAgICAgICAgbGV0IG1heFdpZHRoID0gU3RyaW5nKGVuZCkubGVuZ3RoO1xuXG4gICAgICAgIGZ1bmN0aW9uIG1hcmsodGV4dCkge1xuICAgICAgICAgICAgaWYgKCBjb2xvciAmJiBjaGFsay5yZWQgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoYWxrLnJlZC5ib2xkKHRleHQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBhc2lkZSh0ZXh0KSB7XG4gICAgICAgICAgICBpZiAoIGNvbG9yICYmIGNoYWxrLmdyYXkgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoYWxrLmdyYXkodGV4dCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxpbmVzLnNsaWNlKHN0YXJ0LCBlbmQpLm1hcCggKGxpbmUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBsZXQgbnVtYmVyID0gc3RhcnQgKyAxICsgaW5kZXg7XG4gICAgICAgICAgICBsZXQgZ3V0dGVyID0gJyAnICsgKCcgJyArIG51bWJlcikuc2xpY2UoLW1heFdpZHRoKSArICcgfCAnO1xuICAgICAgICAgICAgaWYgKCBudW1iZXIgPT09IHRoaXMubGluZSApIHtcbiAgICAgICAgICAgICAgICBsZXQgc3BhY2luZyA9XG4gICAgICAgICAgICAgICAgICAgIGFzaWRlKGd1dHRlci5yZXBsYWNlKC9cXGQvZywgJyAnKSkgK1xuICAgICAgICAgICAgICAgICAgICBsaW5lLnNsaWNlKDAsIHRoaXMuY29sdW1uIC0gMSkucmVwbGFjZSgvW15cXHRdL2csICcgJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcmsoJz4nKSArIGFzaWRlKGd1dHRlcikgKyBsaW5lICsgJ1xcbiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgc3BhY2luZyArIG1hcmsoJ14nKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcgJyArIGFzaWRlKGd1dHRlcikgKyBsaW5lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KS5qb2luKCdcXG4nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGVycm9yIHBvc2l0aW9uLCBtZXNzYWdlIGFuZCBzb3VyY2UgY29kZSBvZiB0aGUgYnJva2VuIHBhcnQuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGVycm9yLnRvU3RyaW5nKCkgLy89PiBcIkNzc1N5bnRheEVycm9yOiBhcHAuY3NzOjE6MTogVW5jbG9zZWQgYmxvY2tcbiAgICAgKiAgICAgICAgICAgICAgICAgIC8vICAgID4gMSB8IGEge1xuICAgICAqICAgICAgICAgICAgICAgICAgLy8gICAgICAgIHwgXlwiXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IGVycm9yIHBvc2l0aW9uLCBtZXNzYWdlIGFuZCBzb3VyY2UgY29kZVxuICAgICAqL1xuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICBsZXQgY29kZSA9IHRoaXMuc2hvd1NvdXJjZUNvZGUoKTtcbiAgICAgICAgaWYgKCBjb2RlICkge1xuICAgICAgICAgICAgY29kZSA9ICdcXG5cXG4nICsgY29kZSArICdcXG4nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWUgKyAnOiAnICsgdGhpcy5tZXNzYWdlICsgY29kZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAbWVtYmVyb2YgQ3NzU3ludGF4RXJyb3IjXG4gICAgICogQG1lbWJlciB7SW5wdXR9IGlucHV0IC0gSW5wdXQgb2JqZWN0IHdpdGggUG9zdENTUyBpbnRlcm5hbCBpbmZvcm1hdGlvblxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIGFib3V0IGlucHV0IGZpbGUuIElmIGlucHV0IGhhcyBzb3VyY2UgbWFwXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBwcmV2aW91cyB0b29sLCBQb3N0Q1NTIHdpbGwgdXNlIG9yaWdpblxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIChmb3IgZXhhbXBsZSwgU2Fzcykgc291cmNlLiBZb3UgY2FuIHVzZSB0aGlzXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0IHRvIGdldCBQb3N0Q1NTIGlucHV0IHNvdXJjZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogZXJyb3IuaW5wdXQuZmlsZSAvLz0+ICdhLmNzcydcbiAgICAgKiBlcnJvci5maWxlICAgICAgIC8vPT4gJ2Euc2FzcydcbiAgICAgKi9cblxufVxuXG5leHBvcnQgZGVmYXVsdCBDc3NTeW50YXhFcnJvcjtcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.default = tokenizer;\nvar SINGLE_QUOTE = 39;\nvar DOUBLE_QUOTE = 34;\nvar BACKSLASH = 92;\nvar SLASH = 47;\nvar NEWLINE = 10;\nvar SPACE = 32;\nvar FEED = 12;\nvar TAB = 9;\nvar CR = 13;\nvar OPEN_SQUARE = 91;\nvar CLOSE_SQUARE = 93;\nvar OPEN_PARENTHESES = 40;\nvar CLOSE_PARENTHESES = 41;\nvar OPEN_CURLY = 123;\nvar CLOSE_CURLY = 125;\nvar SEMICOLON = 59;\nvar ASTERISK = 42;\nvar COLON = 58;\nvar AT = 64;\n\nvar RE_AT_END = /[ \\n\\t\\r\\f\\{\\}\\(\\)'\"\\\\;/\\[\\]#]/g;\nvar RE_WORD_END = /[ \\n\\t\\r\\f\\(\\)\\{\\}:;@!'\"\\\\\\]\\[#]|\\/(?=\\*)/g;\nvar RE_BAD_BRACKET = /.[\\\\\\/\\(\"'\\n]/;\nvar RE_HEX_ESCAPE = /[a-f0-9]/i;\n\nfunction tokenizer(input) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var css = input.css.valueOf();\n var ignore = options.ignoreErrors;\n\n var code = void 0,\n next = void 0,\n quote = void 0,\n lines = void 0,\n last = void 0,\n content = void 0,\n escape = void 0,\n nextLine = void 0,\n nextOffset = void 0,\n escaped = void 0,\n escapePos = void 0,\n prev = void 0,\n n = void 0,\n currentToken = void 0;\n\n var length = css.length;\n var offset = -1;\n var line = 1;\n var pos = 0;\n var buffer = [];\n var returned = [];\n\n function unclosed(what) {\n throw input.error('Unclosed ' + what, line, pos - offset);\n }\n\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n\n function nextToken() {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n\n code = css.charCodeAt(pos);\n if (code === NEWLINE || code === FEED || code === CR && css.charCodeAt(pos + 1) !== NEWLINE) {\n offset = pos;\n line += 1;\n }\n\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED:\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n if (code === NEWLINE) {\n offset = next;\n line += 1;\n }\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n\n currentToken = ['space', css.slice(pos, next)];\n pos = next - 1;\n break;\n\n case OPEN_SQUARE:\n currentToken = ['[', '[', line, pos - offset];\n break;\n\n case CLOSE_SQUARE:\n currentToken = [']', ']', line, pos - offset];\n break;\n\n case OPEN_CURLY:\n currentToken = ['{', '{', line, pos - offset];\n break;\n\n case CLOSE_CURLY:\n currentToken = ['}', '}', line, pos - offset];\n break;\n\n case COLON:\n currentToken = [':', ':', line, pos - offset];\n break;\n\n case SEMICOLON:\n currentToken = [';', ';', line, pos - offset];\n break;\n\n case OPEN_PARENTHESES:\n prev = buffer.length ? buffer.pop()[1] : '';\n n = css.charCodeAt(pos + 1);\n if (prev === 'url' && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE && n !== SPACE && n !== NEWLINE && n !== TAB && n !== FEED && n !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(')', next + 1);\n if (next === -1) {\n if (ignore) {\n next = pos;\n break;\n } else {\n unclosed('bracket');\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n\n currentToken = ['brackets', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n\n pos = next;\n } else {\n next = css.indexOf(')', pos + 1);\n content = css.slice(pos, next + 1);\n\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = ['(', '(', line, pos - offset];\n } else {\n currentToken = ['brackets', content, line, pos - offset, line, next - offset];\n pos = next;\n }\n }\n\n break;\n\n case CLOSE_PARENTHESES:\n currentToken = [')', ')', line, pos - offset];\n break;\n\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE:\n quote = code === SINGLE_QUOTE ? '\\'' : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore) {\n next = pos + 1;\n break;\n } else {\n unclosed('string');\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n\n content = css.slice(pos, next + 1);\n lines = content.split('\\n');\n last = lines.length - 1;\n\n if (last > 0) {\n nextLine = line + last;\n nextOffset = next - lines[last].length;\n } else {\n nextLine = line;\n nextOffset = offset;\n }\n\n currentToken = ['string', css.slice(pos, next + 1), line, pos - offset, nextLine, next - nextOffset];\n\n offset = nextOffset;\n line = nextLine;\n pos = next;\n break;\n\n case AT:\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n\n currentToken = ['at-word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n\n pos = next;\n break;\n\n case BACKSLASH:\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n\n currentToken = ['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n\n pos = next;\n break;\n\n default:\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf('*/', pos + 2) + 1;\n if (next === 0) {\n if (ignore) {\n next = css.length;\n } else {\n unclosed('comment');\n }\n }\n\n content = css.slice(pos, next + 1);\n lines = content.split('\\n');\n last = lines.length - 1;\n\n if (last > 0) {\n nextLine = line + last;\n nextOffset = next - lines[last].length;\n } else {\n nextLine = line;\n nextOffset = offset;\n }\n\n currentToken = ['comment', content, line, pos - offset, nextLine, next - nextOffset];\n\n offset = nextOffset;\n line = nextLine;\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n\n currentToken = ['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n\n buffer.push(currentToken);\n\n pos = next;\n }\n\n break;\n }\n\n pos++;\n return currentToken;\n }\n\n function back(token) {\n returned.push(token);\n }\n\n return {\n back: back,\n nextToken: nextToken,\n endOfFile: endOfFile\n };\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2VuaXplLmVzNiJdLCJuYW1lcyI6WyJ0b2tlbml6ZXIiLCJTSU5HTEVfUVVPVEUiLCJET1VCTEVfUVVPVEUiLCJCQUNLU0xBU0giLCJTTEFTSCIsIk5FV0xJTkUiLCJTUEFDRSIsIkZFRUQiLCJUQUIiLCJDUiIsIk9QRU5fU1FVQVJFIiwiQ0xPU0VfU1FVQVJFIiwiT1BFTl9QQVJFTlRIRVNFUyIsIkNMT1NFX1BBUkVOVEhFU0VTIiwiT1BFTl9DVVJMWSIsIkNMT1NFX0NVUkxZIiwiU0VNSUNPTE9OIiwiQVNURVJJU0siLCJDT0xPTiIsIkFUIiwiUkVfQVRfRU5EIiwiUkVfV09SRF9FTkQiLCJSRV9CQURfQlJBQ0tFVCIsIlJFX0hFWF9FU0NBUEUiLCJpbnB1dCIsIm9wdGlvbnMiLCJjc3MiLCJ2YWx1ZU9mIiwiaWdub3JlIiwiaWdub3JlRXJyb3JzIiwiY29kZSIsIm5leHQiLCJxdW90ZSIsImxpbmVzIiwibGFzdCIsImNvbnRlbnQiLCJlc2NhcGUiLCJuZXh0TGluZSIsIm5leHRPZmZzZXQiLCJlc2NhcGVkIiwiZXNjYXBlUG9zIiwicHJldiIsIm4iLCJjdXJyZW50VG9rZW4iLCJsZW5ndGgiLCJvZmZzZXQiLCJsaW5lIiwicG9zIiwiYnVmZmVyIiwicmV0dXJuZWQiLCJ1bmNsb3NlZCIsIndoYXQiLCJlcnJvciIsImVuZE9mRmlsZSIsIm5leHRUb2tlbiIsInBvcCIsImNoYXJDb2RlQXQiLCJzbGljZSIsImluZGV4T2YiLCJ0ZXN0Iiwic3BsaXQiLCJsYXN0SW5kZXgiLCJjaGFyQXQiLCJwdXNoIiwiYmFjayIsInRva2VuIl0sIm1hcHBpbmdzIjoiOzs7a0JBeUJ3QkEsUztBQXpCeEIsSUFBTUMsaUJBQU47QUFDQSxJQUFNQyxpQkFBTjtBQUNBLElBQU1DLGNBQU47QUFDQSxJQUFNQyxVQUFOO0FBQ0EsSUFBTUMsWUFBTjtBQUNBLElBQU1DLFVBQU47QUFDQSxJQUFNQyxTQUFOO0FBQ0EsSUFBTUMsT0FBTjtBQUNBLElBQU1DLE9BQU47QUFDQSxJ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ICAgID0gJ1xcJycuY2hhckNvZGVBdCgwKTtcbmNvbnN0IERPVUJMRV9RVU9URSAgICAgID0gICdcIicuY2hhckNvZGVBdCgwKTtcbmNvbnN0IEJBQ0tTTEFTSCAgICAgICAgID0gJ1xcXFwnLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBTTEFTSCAgICAgICAgICAgICA9ICAnLycuY2hhckNvZGVBdCgwKTtcbmNvbnN0IE5FV0xJTkUgICAgICAgICAgID0gJ1xcbicuY2hhckNvZGVBdCgwKTtcbmNvbnN0IFNQQUNFICAgICAgICAgICAgID0gICcgJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgRkVFRCAgICAgICAgICAgICAgPSAnXFxmJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgVEFCICAgICAgICAgICAgICAgPSAnXFx0Jy5jaGFyQ29kZUF0KDApO1xuY29uc3QgQ1IgICAgICAgICAgICAgICAgPSAnXFxyJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgT1BFTl9TUVVBUkUgICAgICAgPSAgJ1snLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBDTE9TRV9TUVVBUkUgICAgICA9ICAnXScuY2hhckNvZGVBdCgwKTtcbmNvbnN0IE9QRU5fUEFSRU5USEVTRVMgID0gICcoJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgQ0xPU0VfUEFSRU5USEVTRVMgPSAgJyknLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBPUEVOX0NVUkxZICAgICAgICA9ICAneycuY2hhckNvZGVBdCgwKTtcbmNvbnN0IENMT1NFX0NVUkxZICAgICAgID0gICd9Jy5jaGFyQ29kZUF0KDApO1xuY29uc3QgU0VNSUNPTE9OICAgICAgICAgPSAgJzsnLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBBU1RFUklTSyAgICAgICAgICA9ICAnKicuY2hhckNvZGVBdCgwKTtcbmNvbnN0IENPTE9OICAgICAgICAgICAgID0gICc6Jy5jaGFyQ29kZUF0KDApO1xuY29uc3QgQVQgICAgICAgICAgICAgICAgPSAgJ0AnLmNoYXJDb2RlQXQoMCk7XG5cbmNvbnN0IFJFX0FUX0VORCAgICAgID0gL1sgXFxuXFx0XFxyXFxmXFx7XFx9XFwoXFwpJ1wiXFxcXDsvXFxbXFxdI10vZztcbmNvbnN0IFJFX1dPUkRfRU5EICAgID0gL1sgXFxuXFx0XFxyXFxmXFwoXFwpXFx7XFx9OjtAISdcIlxcXFxcXF1cXFsjXXxcXC8oPz1cXCopL2c7XG5jb25zdCBSRV9CQURfQlJBQ0tFVCA9IC8uW1xcXFxcXC9cXChcIidcXG5dLztcbmNvbnN0IFJFX0hFWF9FU0NBUEUgID0gL1thLWYwLTldL2k7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRva2VuaXplcihpbnB1dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGNzcyA9IGlucHV0LmNzcy52YWx1ZU9mKCk7XG4gICAgbGV0IGlnbm9yZSA9IG9wdGlvbnMuaWdub3JlRXJyb3JzO1xuXG4gICAgbGV0IGNvZGUsIG5leHQsIHF1b3RlLCBsaW5lcywgbGFzdCwgY29udGVudCwgZXNjYXBlLFxuICAgICAgICBuZXh0TGluZSwgbmV4dE9mZnNldCwgZXNjYXBlZCwgZXNjYXBlUG9zLCBwcmV2LCBuLCBjdXJyZW50VG9rZW47XG5cbiAgICBsZXQgbGVuZ3RoID0gY3NzLmxlbmd0aDtcbiAgICBsZXQgb2Zmc2V0ID0gLTE7XG4gICAgbGV0IGxpbmUgPSAxO1xuICAgIGxldCBwb3MgPSAwO1xuICAgIGxldCBidWZmZXIgPSBbXTtcbiAgICBsZXQgcmV0dXJuZWQgPSBbXTtcblxuICAgIGZ1bmN0aW9uIHVuY2xvc2VkKHdoYXQpIHtcbiAgICAgICAgdGhyb3cgaW5wdXQuZXJyb3IoJ1VuY2xvc2VkICcgKyB3aGF0LCBsaW5lLCBwb3MgLSBvZmZzZXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVuZE9mRmlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHJldHVybmVkLmxlbmd0aCA9PT0gMCAmJiBwb3MgPj0gbGVuZ3RoO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5leHRUb2tlbigpIHtcbiAgICAgICAgaWYgKCByZXR1cm5lZC5sZW5ndGggKSByZXR1cm4gcmV0dXJuZWQucG9wKCk7XG4gICAgICAgIGlmICggcG9zID49IGxlbmd0aCApIHJldHVybjtcblxuICAgICAgICBjb2RlID0gY3NzLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgICAgaWYgKCBjb2RlID09PSBORVdMSU5FIHx8IGNvZGUgPT09IEZFRUQgfHxcbiAgICAgICAgICAgICBjb2RlID09PSBDUiAmJiBjc3MuY2hhckNvZGVBdChwb3MgKyAxKSAhPT0gTkVXTElORSApIHtcbiAgICAgICAgICAgIG9mZnNldCA9IHBvcztcbiAgICAgICAgICAgIGxpbmUgKz0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoIGNvZGUgKSB7XG4gICAgICAgIGNhc2UgTkVXTElORTpcbiAgICAgICAgY2FzZSBTUEFDRTpcbiAgICAgICAgY2FzZSBUQUI6XG4gICAgICAgIGNhc2UgQ1I6XG4gICAgICAgIGNhc2UgRkVFRDpcbiAgICAgICAgICAgIG5leHQgPSBwb3M7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgbmV4dCArPSAxO1xuICAgICAgICAgICAgICAgIGNvZGUgPSBjc3MuY2hhckNvZGVBdChuZXh0KTtcbiAgICAgICAgICAgICAgICBpZiAoIGNvZGUgPT09IE5FV0xJTkUgKSB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IG5leHQ7XG4gICAgICAgICAgICAgICAgICAgIGxpbmUgKz0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IHdoaWxlICggY29kZSA9PT0gU1BBQ0UgICB8fFxuICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPT09IE5FV0xJTkUgfHxcbiAgICAgICAgICAgICAgICAgICAgICBjb2RlID09PSBUQUIgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgY29kZSA9PT0gQ1IgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPT09IEZFRUQgKTtcblxuICAgICAgICAgICAgY3VycmVudFRva2VuID0gWydzcGFjZScsIGNzcy5zbGljZShwb3MsIG5leHQpXTtcbiAgICAgICAgICAgIHBvcyA9IG5leHQgLSAxO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBPUEVOX1NRVUFSRTpcbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnWycsICdbJywgbGluZSwgcG9zIC0gb2Zmc2V0XTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgQ0xPU0VfU1FVQVJFOlxuICAgICAgICAgICAgY3VycmVudFRva2VuID0gWyddJywgJ10nLCBsaW5lLCBwb3MgLSBvZmZzZXRdO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBPUEVOX0NVUkxZOlxuICAgICAgICAgICAgY3VycmVudFRva2VuID0gWyd7JywgJ3snLCBsaW5lLCBwb3MgLSBvZmZzZXRdO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBDTE9TRV9DVVJMWTpcbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnfScsICd9JywgbGluZSwgcG9zIC0gb2Zmc2V0XTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgQ09MT046XG4gICAgICAgICAgICBjdXJyZW50VG9rZW4gPSBbJzonLCAnOicsIGxpbmUsIHBvcyAtIG9mZnNldF07XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFNFTUlDT0xPTjpcbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnOycsICc7JywgbGluZSwgcG9zIC0gb2Zmc2V0XTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgT1BFTl9QQVJFTlRIRVNFUzpcbiAgICAgICAgICAgIHByZXYgPSBidWZmZXIubGVuZ3RoID8gYnVmZmVyLnBvcCgpWzFdIDogJyc7XG4gICAgICAgICAgICBuICAgID0gY3NzLmNoYXJDb2RlQXQocG9zICsgMSk7XG4gICAgICAgICAgICBpZiAoIHByZXYgPT09ICd1cmwnICYmXG4gICAgICAgICAgICAgICAgIG4gIT09IFNJTkdMRV9RVU9URSAmJiBuICE9PSBET1VCTEVfUVVPVEUgJiZcbiAgICAgICAgICAgICAgICAgbiAhPT0gU1BBQ0UgJiYgbiAhPT0gTkVXTElORSAmJiBuICE9PSBUQUIgJiZcbiAgICAgICAgICAgICAgICAgbiAhPT0gRkVFRCAmJiBuICE9PSBDUiApIHtcbiAgICAgICAgICAgICAgICBuZXh0ID0gcG9zO1xuICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBuZXh0ICAgID0gY3NzLmluZGV4T2YoJyknLCBuZXh0ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gLTEgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGlnbm9yZSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0ID0gcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmNsb3NlZCgnYnJhY2tldCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVzY2FwZVBvcyA9IG5leHQ7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICggY3NzLmNoYXJDb2RlQXQoZXNjYXBlUG9zIC0gMSkgPT09IEJBQ0tTTEFTSCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZVBvcyAtPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSB3aGlsZSAoIGVzY2FwZWQgKTtcblxuICAgICAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnYnJhY2tldHMnLCBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSksXG4gICAgICAgICAgICAgICAgICAgIGxpbmUsIHBvcyAgLSBvZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgcG9zID0gbmV4dDtcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXh0ICAgID0gY3NzLmluZGV4T2YoJyknLCBwb3MgKyAxKTtcbiAgICAgICAgICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCBuZXh0ID09PSAtMSB8fCBSRV9CQURfQlJBQ0tFVC50ZXN0KGNvbnRlbnQpICkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50VG9rZW4gPSBbJygnLCAnKCcsIGxpbmUsIHBvcyAtIG9mZnNldF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFRva2VuID0gWydicmFja2V0cycsIGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lLCBwb3MgIC0gb2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICBwb3MgPSBuZXh0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBDTE9TRV9QQVJFTlRIRVNFUzpcbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnKScsICcpJywgbGluZSwgcG9zIC0gb2Zmc2V0XTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU0lOR0xFX1FVT1RFOlxuICAgICAgICBjYXNlIERPVUJMRV9RVU9URTpcbiAgICAgICAgICAgIHF1b3RlID0gY29kZSA9PT0gU0lOR0xFX1FVT1RFID8gJ1xcJycgOiAnXCInO1xuICAgICAgICAgICAgbmV4dCAgPSBwb3M7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIG5leHQgICAgPSBjc3MuaW5kZXhPZihxdW90ZSwgbmV4dCArIDEpO1xuICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gLTEgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICggaWdub3JlICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCA9IHBvcyArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuY2xvc2VkKCdzdHJpbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlc2NhcGVQb3MgPSBuZXh0O1xuICAgICAgICAgICAgICAgIHdoaWxlICggY3NzLmNoYXJDb2RlQXQoZXNjYXBlUG9zIC0gMSkgPT09IEJBQ0tTTEFTSCApIHtcbiAgICAgICAgICAgICAgICAgICAgZXNjYXBlUG9zIC09IDE7XG4gICAgICAgICAgICAgICAgICAgIGVzY2FwZWQgPSAhZXNjYXBlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IHdoaWxlICggZXNjYXBlZCApO1xuXG4gICAgICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpO1xuICAgICAgICAgICAgbGluZXMgICA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICAgICAgICAgICAgbGFzdCAgICA9IGxpbmVzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgICAgIGlmICggbGFzdCA+IDAgKSB7XG4gICAgICAgICAgICAgICAgbmV4dExpbmUgICA9IGxpbmUgKyBsYXN0O1xuICAgICAgICAgICAgICAgIG5leHRPZmZzZXQgPSBuZXh0IC0gbGluZXNbbGFzdF0ubGVuZ3RoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXh0TGluZSAgID0gbGluZTtcbiAgICAgICAgICAgICAgICBuZXh0T2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ3N0cmluZycsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICAgICAgICBsaW5lLCBwb3MgIC0gb2Zmc2V0LFxuICAgICAgICAgICAgICAgIG5leHRMaW5lLCBuZXh0IC0gbmV4dE9mZnNldFxuICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgb2Zmc2V0ID0gbmV4dE9mZnNldDtcbiAgICAgICAgICAgIGxpbmUgICA9IG5leHRMaW5lO1xuICAgICAgICAgICAgcG9zICAgID0gbmV4dDtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgQVQ6XG4gICAgICAgICAgICBSRV9BVF9FTkQubGFzdEluZGV4ID0gcG9zICsgMTtcbiAgICAgICAgICAgIFJFX0FUX0VORC50ZXN0KGNzcyk7XG4gICAgICAgICAgICBpZiAoIFJFX0FUX0VORC5sYXN0SW5kZXggPT09IDAgKSB7XG4gICAgICAgICAgICAgICAgbmV4dCA9IGNzcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXh0ID0gUkVfQVRfRU5ELmxhc3RJbmRleCAtIDI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnYXQtd29yZCcsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICAgICAgICBsaW5lLCBwb3MgIC0gb2Zmc2V0LFxuICAgICAgICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgIHBvcyA9IG5leHQ7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIEJBQ0tTTEFTSDpcbiAgICAgICAgICAgIG5leHQgICA9IHBvcztcbiAgICAgICAgICAgIGVzY2FwZSA9IHRydWU7XG4gICAgICAgICAgICB3aGlsZSAoIGNzcy5jaGFyQ29kZUF0KG5leHQgKyAxKSA9PT0gQkFDS1NMQVNIICkge1xuICAgICAgICAgICAgICAgIG5leHQgICs9IDE7XG4gICAgICAgICAgICAgICAgZXNjYXBlID0gIWVzY2FwZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvZGUgPSBjc3MuY2hhckNvZGVBdChuZXh0ICsgMSk7XG4gICAgICAgICAgICBpZiAoIGVzY2FwZSAmJiAoY29kZSAhPT0gU0xBU0ggICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgIT09IFNQQUNFICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlICE9PSBORVdMSU5FICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSAhPT0gVEFCICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgIT09IENSICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlICE9PSBGRUVEICkgKSB7XG4gICAgICAgICAgICAgICAgbmV4dCArPSAxO1xuICAgICAgICAgICAgICAgIGlmICggUkVfSEVYX0VTQ0FQRS50ZXN0KGNzcy5jaGFyQXQobmV4dCkpICkge1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIFJFX0hFWF9FU0NBUEUudGVzdChjc3MuY2hhckF0KG5leHQgKyAxKSkgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCBjc3MuY2hhckNvZGVBdChuZXh0ICsgMSkgPT09IFNQQUNFICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCArPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ3dvcmQnLCBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSksXG4gICAgICAgICAgICAgICAgbGluZSwgcG9zICAtIG9mZnNldCxcbiAgICAgICAgICAgICAgICBsaW5lLCBuZXh0IC0gb2Zmc2V0XG4gICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICBwb3MgPSBuZXh0O1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGlmICggY29kZSA9PT0gU0xBU0ggJiYgY3NzLmNoYXJDb2RlQXQocG9zICsgMSkgPT09IEFTVEVSSVNLICkge1xuICAgICAgICAgICAgICAgIG5leHQgPSBjc3MuaW5kZXhPZignKi8nLCBwb3MgKyAyKSArIDE7XG4gICAgICAgICAgICAgICAgaWYgKCBuZXh0ID09PSAwICkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIGlnbm9yZSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgPSBjc3MubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdW5jbG9zZWQoJ2NvbW1lbnQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSk7XG4gICAgICAgICAgICAgICAgbGluZXMgICA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICAgICAgICAgICAgICAgIGxhc3QgICAgPSBsaW5lcy5sZW5ndGggLSAxO1xuXG4gICAgICAgICAgICAgICAgaWYgKCBsYXN0ID4gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dExpbmUgICA9IGxpbmUgKyBsYXN0O1xuICAgICAgICAgICAgICAgICAgICBuZXh0T2Zmc2V0ID0gbmV4dCAtIGxpbmVzW2xhc3RdLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuZXh0TGluZSAgID0gbGluZTtcbiAgICAgICAgICAgICAgICAgICAgbmV4dE9mZnNldCA9IG9mZnNldDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ2NvbW1lbnQnLCBjb250ZW50LFxuICAgICAgICAgICAgICAgICAgICBsaW5lLCAgICAgcG9zICAtIG9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgbmV4dExpbmUsIG5leHQgLSBuZXh0T2Zmc2V0XG4gICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgIG9mZnNldCA9IG5leHRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgbGluZSAgID0gbmV4dExpbmU7XG4gICAgICAgICAgICAgICAgcG9zICAgID0gbmV4dDtcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBSRV9XT1JEX0VORC5sYXN0SW5kZXggPSBwb3MgKyAxO1xuICAgICAgICAgICAgICAgIFJFX1dPUkRfRU5ELnRlc3QoY3NzKTtcbiAgICAgICAgICAgICAgICBpZiAoIFJFX1dPUkRfRU5ELmxhc3RJbmRleCA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dCA9IGNzcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQgPSBSRV9XT1JEX0VORC5sYXN0SW5kZXggLSAyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnd29yZCcsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICAgICAgICAgICAgbGluZSwgcG9zICAtIG9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgICBidWZmZXIucHVzaChjdXJyZW50VG9rZW4pO1xuXG4gICAgICAgICAgICAgICAgcG9zID0gbmV4dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBwb3MrKztcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRUb2tlbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBiYWNrKHRva2VuKSB7XG4gICAgICAgIHJldHVybmVkLnB1c2godG9rZW4pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGJhY2ssXG4gICAgICAgIG5leHRUb2tlbixcbiAgICAgICAgZW5kT2ZGaWxlXG4gICAgfTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _cssSyntaxError = require('./css-syntax-error');\n\nvar _cssSyntaxError2 = _interopRequireDefault(_cssSyntaxError);\n\nvar _previousMap = require('./previous-map');\n\nvar _previousMap2 = _interopRequireDefault(_previousMap);\n\nvar _path = require('path');\n\nvar _path2 = _interopRequireDefault(_path);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar sequence = 0;\n\n/**\n * Represents the source CSS.\n *\n * @example\n * const root = postcss.parse(css, { from: file });\n * const input = root.source.input;\n */\n\nvar Input = function () {\n\n /**\n * @param {string} css - input CSS source\n * @param {object} [opts] - {@link Processor#process} options\n */\n function Input(css) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Input);\n\n if (css === null || (typeof css === 'undefined' ? 'undefined' : _typeof(css)) === 'object' && !css.toString) {\n throw new Error('PostCSS received ' + css + ' instead of CSS string');\n }\n\n /**\n * @member {string} - input CSS source\n *\n * @example\n * const input = postcss.parse('a{}', { from: file }).input;\n * input.css //=> \"a{}\";\n */\n this.css = css.toString();\n\n if (this.css[0] === '\\uFEFF' || this.css[0] === '\\uFFFE') {\n this.css = this.css.slice(1);\n }\n\n if (opts.from) {\n if (/^\\w+:\\/\\//.test(opts.from)) {\n /**\n * @member {string} - The absolute path to the CSS source file\n * defined with the `from` option.\n *\n * @example\n * const root = postcss.parse(css, { from: 'a.css' });\n * root.source.input.file //=> '/home/ai/a.css'\n */\n this.file = opts.from;\n } else {\n this.file = _path2.default.resolve(opts.from);\n }\n }\n\n var map = new _previousMap2.default(this.css, opts);\n if (map.text) {\n /**\n * @member {PreviousMap} - The input source map passed from\n * a compilation step before PostCSS\n * (for example, from Sass compiler).\n *\n * @example\n * root.source.input.map.consumer().sources //=> ['a.sass']\n */\n this.map = map;\n var file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n\n if (!this.file) {\n sequence += 1;\n /**\n * @member {string} - The unique ID of the CSS source. It will be\n * created if `from` option is not provided\n * (because PostCSS does not know the file path).\n *\n * @example\n * const root = postcss.parse(css);\n * root.source.input.file //=> undefined\n * root.source.input.id //=> \"<input css 1>\"\n */\n this.id = '<input css ' + sequence + '>';\n }\n if (this.map) this.map.file = this.from;\n }\n\n Input.prototype.error = function error(message, line, column) {\n var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var result = void 0;\n var origin = this.origin(line, column);\n if (origin) {\n result = new _cssSyntaxError2.default(message, origin.line, origin.column, origin.source, origin.file, opts.plugin);\n } else {\n result = new _cssSyntaxError2.default(message, line, column, this.css, this.file, opts.plugin);\n }\n\n result.input = { line: line, column: column, source: this.css };\n if (this.file) result.input.file = this.file;\n\n return result;\n };\n\n /**\n * Reads the input source map and returns a symbol position\n * in the input source (e.g., in a Sass file that was compiled\n * to CSS before being passed to PostCSS).\n *\n * @param {number} line - line in input CSS\n * @param {number} column - column in input CSS\n *\n * @return {filePosition} position in input source\n *\n * @example\n * root.source.input.origin(1, 1) //=> { file: 'a.css', line: 3, column: 1 }\n */\n\n\n Input.prototype.origin = function origin(line, column) {\n if (!this.map) return false;\n var consumer = this.map.consumer();\n\n var from = consumer.originalPositionFor({ line: line, column: column });\n if (!from.source) return false;\n\n var result = {\n file: this.mapResolve(from.source),\n line: from.line,\n column: from.column\n };\n\n var source = consumer.sourceContentFor(from.source);\n if (source) result.source = source;\n\n return result;\n };\n\n Input.prototype.mapResolve = function mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n } else {\n return _path2.default.resolve(this.map.consumer().sourceRoot || '.', file);\n }\n };\n\n /**\n * The CSS source identifier. Contains {@link Input#file} if the user\n * set the `from` option, or {@link Input#id} if they did not.\n * @type {string}\n *\n * @example\n * const root = postcss.parse(css, { from: 'a.css' });\n * root.source.input.from //=> \"/home/ai/a.css\"\n *\n * const root = postcss.parse(css);\n * root.source.input.from //=> \"<input css 1>\"\n */\n\n\n _createClass(Input, [{\n key: 'from',\n get: function get() {\n return this.file || this.id;\n }\n }]);\n\n return Input;\n}();\n\nexports.default = Input;\n\n/**\n * @typedef {object} filePosition\n * @property {string} file - path to file\n * @property {number} line - source line in file\n * @property {number} column - source column in file\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImlucHV0LmVzNiJdLCJuYW1lcyI6WyJzZXF1ZW5jZSIsIklucHV0IiwiY3NzIiwib3B0cyIsInRvU3RyaW5nIiwiRXJyb3IiLCJzbGljZSIsImZyb20iLCJ0ZXN0IiwiZmlsZSIsInBhdGgiLCJyZXNvbHZlIiwibWFwIiwiUHJldmlvdXNNYXAiLCJ0ZXh0IiwiY29uc3VtZXIiLCJtYXBSZXNvbHZlIiwiaWQiLCJlcnJvciIsIm1lc3NhZ2UiLCJsaW5lIiwiY29sdW1uIiwicmVzdWx0Iiwib3JpZ2luIiwiQ3NzU3ludGF4RXJyb3IiLCJzb3VyY2UiLCJwbHVnaW4iLCJpbnB1dCIsIm9yaWdpbmFsUG9zaXRpb25Gb3IiLCJzb3VyY2VDb250ZW50Rm9yIiwic291cmNlUm9vdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBRUE7Ozs7Ozs7O0FBRUEsSUFBSUEsV0FBVyxDQUFmOztBQUVBOzs7Ozs7OztJQU9NQyxLOztBQUVGOzs7O0FBSUEsbUJBQVlDLEdBQVosRUFBNkI7QUFBQSxZQUFaQyxJQUFZLHVFQUFMLEVBQUs7O0FBQUE7O0FBQ3pCLFlBQUtELFFBQVEsSUFBUixJQUFnQixRQUFPQSxHQUFQLHlDQUFPQSxHQUFQLE9BQWUsUUFBZixJQUEyQixDQUFDQSxJQUFJRSxRQUFyRCxFQUFnRTtBQUM1RCxrQkFBTSxJQUFJQyxLQUFKLHVCQUErQkgsR0FBL0IsNEJBQU47QUFDSDs7QUFFRDs7Ozs7OztBQU9BLGFBQUtBLEdBQUwsR0FBV0EsSUFBSUUsUUFBSixFQUFYOztBQUVBLFlBQUssS0FBS0YsR0FBTCxDQUFTLENBQVQsTUFBZ0IsUUFBaEIsSUFBNEIsS0FBS0EsR0FBTCxDQUFTLENBQVQsTUFBZ0IsUUFBakQsRUFBNEQ7QUFDeEQsaUJBQUtBLEdBQUwsR0FBVyxLQUFLQSxHQUFMLENBQVNJLEtBQVQsQ0FBZSxDQUFmLENBQVg7QUFDSDs7QUFFRCxZQUFLSCxLQUFLSSxJQUFWLEVBQWlCO0FBQ2IsZ0JBQUssWUFBWUMsSUFBWixDQUFpQkwsS0FBS0ksSUFBdEIsQ0FBTCxFQUFtQztBQUMvQjs7Ozs7Ozs7QUFRQSxxQkFBS0UsSUFBTCxHQUFZTixLQUFLSSxJQUFqQjtBQUNILGFBVkQsTUFVTztBQUNILHFCQUFLRSxJQUFMLEdBQVlDLGVBQUtDLE9BQUwsQ0FBYVIsS0FBS0ksSUFBbEIsQ0FBWjtBQUNIO0FBQ0o7O0FBRUQsWUFBSUssTUFBTSxJQUFJQyxxQkFBSixDQUFnQixLQUFLWCxHQUFyQixFQUEwQkMsSUFBMUIsQ0FBVjtBQUNBLFlBQUtTLElBQUlFLElBQVQsRUFBZ0I7QUFDWjs7Ozs7Ozs7QUFRQSxpQkFBS0YsR0FBTCxHQUFXQSxHQUFYO0FBQ0EsZ0JBQUlILE9BQU9HLElBQUlHLFFBQUosR0FBZU4sSUFBMUI7QUFDQSxnQkFBSyxDQUFDLEtBQUtBLElBQU4sSUFBY0EsSUFBbkIsRUFBMEIsS0FBS0EsSUFBTCxHQUFZLEtBQUtPLFVBQUwsQ0FBZ0JQLElBQWhCLENBQVo7QUFDN0I7O0FBRUQsWUFBSyxDQUFDLEtBQUtBLElBQVgsRUFBa0I7QUFDZFQsd0JBQVksQ0FBWjtBQUNBOzs7Ozs7Ozs7O0FBVUEsaUJBQUtpQixFQUFMLEdBQVksZ0JBQWdCakIsUUFBaEIsR0FBMkIsR0FBdkM7QUFDSDtBQUNELFlBQUssS0FBS1ksR0FBVixFQUFnQixLQUFLQSxHQUFMLENBQVNILElBQVQsR0FBZ0IsS0FBS0YsSUFBckI7QUFDbkI7O29CQUVEVyxLLGtCQUFNQyxPLEVBQVNDLEksRUFBTUMsTSxFQUFvQjtBQUFBLFlBQVpsQixJQUFZLHVFQUFMLEVBQUs7O0FBQ3JDLFlBQUltQixlQUFKO0FBQ0EsWUFBSUMsU0FBUyxLQUFLQSxNQUFMLENBQVlILElBQVosRUFBa0JDLE1BQWxCLENBQWI7QUFDQSxZQUFLRSxNQUFMLEVBQWM7QUFDVkQscUJBQVMsSUFBSUUsd0JBQUosQ0FBbUJMLE9BQW5CLEVBQTRCSSxPQUFPSCxJQUFuQyxFQUF5Q0csT0FBT0YsTUFBaEQsRUFDTEUsT0FBT0UsTUFERixFQUNVRixPQUFPZCxJQURqQixFQUN1Qk4sS0FBS3VCLE1BRDVCLENBQVQ7QUFFSCxTQUhELE1BR087QUFDSEoscUJBQVMsSUFBSUUsd0JBQUosQ0FBbUJMLE9BQW5CLEVBQTRCQyxJQUE1QixFQUFrQ0MsTUFBbEMsRUFDTCxLQUFLbkIsR0FEQSxFQUNLLEtBQUtPLElBRFYsRUFDZ0JOLEtBQUt1QixNQURyQixDQUFUO0FBRUg7O0FBRURKLGVBQU9LLEtBQVAsR0FBZSxFQUFFUCxVQUFGLEVBQVFDLGNBQVIsRUFBZ0JJLFFBQVEsS0FBS3ZCLEdBQTdCLEVBQWY7QUFDQSxZQUFLLEtBQUtPLElBQVYsRUFBaUJhLE9BQU9LLEtBQVAsQ0FBYWxCLElBQWIsR0FBb0IsS0FBS0EsSUFBekI7O0FBRWpCLGVBQU9hLE1BQVA7QUFDSCxLOztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7b0JBYUFDLE0sbUJBQU9ILEksRUFBTUMsTSxFQUFRO0FBQ2pCLFlBQUssQ0FBQyxLQUFLVCxHQUFYLEVBQWlCLE9BQU8sS0FBUDtBQUNqQixZQUFJRyxXQUFXLEtBQUtILEdBQUwsQ0FBU0csUUFBVCxFQUFmOztBQUVBLFlBQUlSLE9BQU9RLFNBQVNhLG1CQUFULENBQTZCLEVBQUVSLFVBQUYsRUFBUUMsY0FBUixFQUE3QixDQUFYO0FBQ0EsWUFBSyxDQUFDZCxLQUFLa0IsTUFBWCxFQUFvQixPQUFPLEtBQVA7O0FBRXBCLFlBQUlILFNBQVM7QUFDVGIsa0JBQVEsS0FBS08sVUFBTCxDQUFnQlQsS0FBS2tCLE1BQXJCLENBREM7QUFFVEwsa0JBQVFiLEtBQUthLElBRko7QUFHVEMsb0JBQVFkLEtBQUtjO0FBSEosU0FBYjs7QUFNQSxZQUFJSSxTQUFTVixTQUFTYyxnQkFBVCxDQUEwQnRCLEtBQUtrQixNQUEvQixDQUFiO0FBQ0EsWUFBS0EsTUFBTCxFQUFjSCxPQUFPRyxNQUFQLEdBQWdCQSxNQUFoQjs7QUFFZCxlQUFPSCxNQUFQO0FBQ0gsSzs7b0JBRUROLFUsdUJBQVdQLEksRUFBTTtBQUNiLFlBQUssWUFBWUQsSUFBWixDQUFpQkMsSUFBakIsQ0FBTCxFQUE4QjtBQUMxQixtQkFBT0EsSUFBUDtBQUNILFNBRkQsTUFFTztBQUNILG1CQUFPQyxlQUFLQyxPQUFMLENBQWEsS0FBS0MsR0FBTCxDQUFTRyxRQUFULEdBQW9CZSxVQUFwQixJQUFrQyxHQUEvQyxFQUFvRHJCLElBQXBELENBQVA7QUFDSDtBQUNKLEs7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7NEJBWVc7QUFDUCxtQkFBTyxLQUFLQSxJQUFMLElBQWEsS0FBS1EsRUFBekI7QUFDSDs7Ozs7O2tCQUlVaEIsSzs7QUFFZiIsImZpbGUiOiJpbnB1dC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDc3NTeW50YXhFcnJvciBmcm9tICcuL2Nzcy1zeW50YXgtZXJyb3InO1xuaW1wb3J0IFByZXZpb3VzTWFwICAgIGZyb20gJy4vcHJldmlvdXMtbWFwJztcblxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbmxldCBzZXF1ZW5jZSA9IDA7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgc291cmNlIENTUy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCAgPSBwb3N0Y3NzLnBhcnNlKGNzcywgeyBmcm9tOiBmaWxlIH0pO1xuICogY29uc3QgaW5wdXQgPSByb290LnNvdXJjZS5pbnB1dDtcbiAqL1xuY2xhc3MgSW5wdXQge1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNzcyAgICAtIGlucHV0IENTUyBzb3VyY2VcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gW29wdHNdIC0ge0BsaW5rIFByb2Nlc3NvciNwcm9jZXNzfSBvcHRpb25zXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY3NzLCBvcHRzID0geyB9KSB7XG4gICAgICAgIGlmICggY3NzID09PSBudWxsIHx8IHR5cGVvZiBjc3MgPT09ICdvYmplY3QnICYmICFjc3MudG9TdHJpbmcgKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBvc3RDU1MgcmVjZWl2ZWQgJHsgY3NzIH0gaW5zdGVhZCBvZiBDU1Mgc3RyaW5nYCk7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7c3RyaW5nfSAtIGlucHV0IENTUyBzb3VyY2VcbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogY29uc3QgaW5wdXQgPSBwb3N0Y3NzLnBhcnNlKCdhe30nLCB7IGZyb206IGZpbGUgfSkuaW5wdXQ7XG4gICAgICAgICAqIGlucHV0LmNzcyAvLz0+IFwiYXt9XCI7XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmNzcyA9IGNzcy50b1N0cmluZygpO1xuXG4gICAgICAgIGlmICggdGhpcy5jc3NbMF0gPT09ICdcXHVGRUZGJyB8fCB0aGlzLmNzc1swXSA9PT0gJ1xcdUZGRkUnICkge1xuICAgICAgICAgICAgdGhpcy5jc3MgPSB0aGlzLmNzcy5zbGljZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggb3B0cy5mcm9tICkge1xuICAgICAgICAgICAgaWYgKCAvXlxcdys6XFwvXFwvLy50ZXN0KG9wdHMuZnJvbSkgKSB7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogQG1lbWJlciB7c3RyaW5nfSAtIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBDU1Mgc291cmNlIGZpbGVcbiAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCB3aXRoIHRoZSBgZnJvbWAgb3B0aW9uLlxuICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICAgICAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZShjc3MsIHsgZnJvbTogJ2EuY3NzJyB9KTtcbiAgICAgICAgICAgICAgICAgKiByb290LnNvdXJjZS5pbnB1dC5maWxlIC8vPT4gJy9ob21lL2FpL2EuY3NzJ1xuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZSA9IG9wdHMuZnJvbTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlID0gcGF0aC5yZXNvbHZlKG9wdHMuZnJvbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbWFwID0gbmV3IFByZXZpb3VzTWFwKHRoaXMuY3NzLCBvcHRzKTtcbiAgICAgICAgaWYgKCBtYXAudGV4dCApIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQG1lbWJlciB7UHJldmlvdXNNYXB9IC0gVGhlIGlucHV0IHNvdXJjZSBtYXAgcGFzc2VkIGZyb21cbiAgICAgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIGEgY29tcGlsYXRpb24gc3RlcCBiZWZvcmUgUG9zdENTU1xuICAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgKGZvciBleGFtcGxlLCBmcm9tIFNhc3MgY29tcGlsZXIpLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAgICAgKiByb290LnNvdXJjZS5pbnB1dC5tYXAuY29uc3VtZXIoKS5zb3VyY2VzIC8vPT4gWydhLnNhc3MnXVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLm1hcCA9IG1hcDtcbiAgICAgICAgICAgIGxldCBmaWxlID0gbWFwLmNvbnN1bWVyKCkuZmlsZTtcbiAgICAgICAgICAgIGlmICggIXRoaXMuZmlsZSAmJiBmaWxlICkgdGhpcy5maWxlID0gdGhpcy5tYXBSZXNvbHZlKGZpbGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCAhdGhpcy5maWxlICkge1xuICAgICAgICAgICAgc2VxdWVuY2UgKz0gMTtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQG1lbWJlciB7c3RyaW5nfSAtIFRoZSB1bmlxdWUgSUQgb2YgdGhlIENTUyBzb3VyY2UuIEl0IHdpbGwgYmVcbiAgICAgICAgICAgICAqICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGlmIGBmcm9tYCBvcHRpb24gaXMgbm90IHByb3ZpZGVkXG4gICAgICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgKGJlY2F1c2UgUG9zdENTUyBkb2VzIG5vdCBrbm93IHRoZSBmaWxlIHBhdGgpLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZShjc3MpO1xuICAgICAgICAgICAgICogcm9vdC5zb3VyY2UuaW5wdXQuZmlsZSAvLz0+IHVuZGVmaW5lZFxuICAgICAgICAgICAgICogcm9vdC5zb3VyY2UuaW5wdXQuaWQgICAvLz0+IFwiPGlucHV0IGNzcyAxPlwiXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuaWQgICA9ICc8aW5wdXQgY3NzICcgKyBzZXF1ZW5jZSArICc+JztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIHRoaXMubWFwICkgdGhpcy5tYXAuZmlsZSA9IHRoaXMuZnJvbTtcbiAgICB9XG5cbiAgICBlcnJvcihtZXNzYWdlLCBsaW5lLCBjb2x1bW4sIG9wdHMgPSB7IH0pIHtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgbGV0IG9yaWdpbiA9IHRoaXMub3JpZ2luKGxpbmUsIGNvbHVtbik7XG4gICAgICAgIGlmICggb3JpZ2luICkge1xuICAgICAgICAgICAgcmVzdWx0ID0gbmV3IENzc1N5bnRheEVycm9yKG1lc3NhZ2UsIG9yaWdpbi5saW5lLCBvcmlnaW4uY29sdW1uLFxuICAgICAgICAgICAgICAgIG9yaWdpbi5zb3VyY2UsIG9yaWdpbi5maWxlLCBvcHRzLnBsdWdpbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSBuZXcgQ3NzU3ludGF4RXJyb3IobWVzc2FnZSwgbGluZSwgY29sdW1uLFxuICAgICAgICAgICAgICAgIHRoaXMuY3NzLCB0aGlzLmZpbGUsIG9wdHMucGx1Z2luKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdC5pbnB1dCA9IHsgbGluZSwgY29sdW1uLCBzb3VyY2U6IHRoaXMuY3NzIH07XG4gICAgICAgIGlmICggdGhpcy5maWxlICkgcmVzdWx0LmlucHV0LmZpbGUgPSB0aGlzLmZpbGU7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkcyB0aGUgaW5wdXQgc291cmNlIG1hcCBhbmQgcmV0dXJucyBhIHN5bWJvbCBwb3NpdGlvblxuICAgICAqIGluIHRoZSBpbnB1dCBzb3VyY2UgKGUuZy4sIGluIGEgU2FzcyBmaWxlIHRoYXQgd2FzIGNvbXBpbGVkXG4gICAgICogdG8gQ1NTIGJlZm9yZSBiZWluZyBwYXNzZWQgdG8gUG9zdENTUykuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZSAgIC0gbGluZSBpbiBpbnB1dCBDU1NcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uIC0gY29sdW1uIGluIGlucHV0IENTU1xuICAgICAqXG4gICAgICogQHJldHVybiB7ZmlsZVBvc2l0aW9ufSBwb3NpdGlvbiBpbiBpbnB1dCBzb3VyY2VcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcm9vdC5zb3VyY2UuaW5wdXQub3JpZ2luKDEsIDEpIC8vPT4geyBmaWxlOiAnYS5jc3MnLCBsaW5lOiAzLCBjb2x1bW46IDEgfVxuICAgICAqL1xuICAgIG9yaWdpbihsaW5lLCBjb2x1bW4pIHtcbiAgICAgICAgaWYgKCAhdGhpcy5tYXAgKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGxldCBjb25zdW1lciA9IHRoaXMubWFwLmNvbnN1bWVyKCk7XG5cbiAgICAgICAgbGV0IGZyb20gPSBjb25zdW1lci5vcmlnaW5hbFBvc2l0aW9uRm9yKHsgbGluZSwgY29sdW1uIH0pO1xuICAgICAgICBpZiAoICFmcm9tLnNvdXJjZSApIHJldHVybiBmYWxzZTtcblxuICAgICAgICBsZXQgcmVzdWx0ID0ge1xuICAgICAgICAgICAgZmlsZTogICB0aGlzLm1hcFJlc29sdmUoZnJvbS5zb3VyY2UpLFxuICAgICAgICAgICAgbGluZTogICBmcm9tLmxpbmUsXG4gICAgICAgICAgICBjb2x1bW46IGZyb20uY29sdW1uXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IHNvdXJjZSA9IGNvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3IoZnJvbS5zb3VyY2UpO1xuICAgICAgICBpZiAoIHNvdXJjZSApIHJlc3VsdC5zb3VyY2UgPSBzb3VyY2U7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBtYXBSZXNvbHZlKGZpbGUpIHtcbiAgICAgICAgaWYgKCAvXlxcdys6XFwvXFwvLy50ZXN0KGZpbGUpICkge1xuICAgICAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcGF0aC5yZXNvbHZlKHRoaXMubWFwLmNvbnN1bWVyKCkuc291cmNlUm9vdCB8fCAnLicsIGZpbGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIENTUyBzb3VyY2UgaWRlbnRpZmllci4gQ29udGFpbnMge0BsaW5rIElucHV0I2ZpbGV9IGlmIHRoZSB1c2VyXG4gICAgICogc2V0IHRoZSBgZnJvbWAgb3B0aW9uLCBvciB7QGxpbmsgSW5wdXQjaWR9IGlmIHRoZXkgZGlkIG5vdC5cbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZShjc3MsIHsgZnJvbTogJ2EuY3NzJyB9KTtcbiAgICAgKiByb290LnNvdXJjZS5pbnB1dC5mcm9tIC8vPT4gXCIvaG9tZS9haS9hLmNzc1wiXG4gICAgICpcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZShjc3MpO1xuICAgICAqIHJvb3Quc291cmNlLmlucHV0LmZyb20gLy89PiBcIjxpbnB1dCBjc3MgMT5cIlxuICAgICAqL1xuICAgIGdldCBmcm9tKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWxlIHx8IHRoaXMuaWQ7XG4gICAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IElucHV0O1xuXG4vKipcbiAqIEB0eXBlZGVmICB7b2JqZWN0fSBmaWxlUG9zaXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBmaWxlICAgLSBwYXRoIHRvIGZpbGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsaW5lICAgLSBzb3VyY2UgbGluZSBpbiBmaWxlXG4gKiBAcHJvcGVydHkge251bWJlcn0gY29sdW1uIC0gc291cmNlIGNvbHVtbiBpbiBmaWxlXG4gKi9cbiJdfQ==\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","'use strict';\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar defaultRaw = {\n colon: ': ',\n indent: ' ',\n beforeDecl: '\\n',\n beforeRule: '\\n',\n beforeOpen: ' ',\n beforeClose: '\\n',\n beforeComment: '\\n',\n after: '\\n',\n emptyBody: '',\n commentLeft: ' ',\n commentRight: ' '\n};\n\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\n\nvar Stringifier = function () {\n function Stringifier(builder) {\n _classCallCheck(this, Stringifier);\n\n this.builder = builder;\n }\n\n Stringifier.prototype.stringify = function stringify(node, semicolon) {\n this[node.type](node, semicolon);\n };\n\n Stringifier.prototype.root = function root(node) {\n this.body(node);\n if (node.raws.after) this.builder(node.raws.after);\n };\n\n Stringifier.prototype.comment = function comment(node) {\n var left = this.raw(node, 'left', 'commentLeft');\n var right = this.raw(node, 'right', 'commentRight');\n this.builder('/*' + left + node.text + right + '*/', node);\n };\n\n Stringifier.prototype.decl = function decl(node, semicolon) {\n var between = this.raw(node, 'between', 'colon');\n var string = node.prop + between + this.rawValue(node, 'value');\n\n if (node.important) {\n string += node.raws.important || ' !important';\n }\n\n if (semicolon) string += ';';\n this.builder(string, node);\n };\n\n Stringifier.prototype.rule = function rule(node) {\n this.block(node, this.rawValue(node, 'selector'));\n if (node.raws.ownSemicolon) {\n this.builder(node.raws.ownSemicolon, node, 'end');\n }\n };\n\n Stringifier.prototype.atrule = function atrule(node, semicolon) {\n var name = '@' + node.name;\n var params = node.params ? this.rawValue(node, 'params') : '';\n\n if (typeof node.raws.afterName !== 'undefined') {\n name += node.raws.afterName;\n } else if (params) {\n name += ' ';\n }\n\n if (node.nodes) {\n this.block(node, name + params);\n } else {\n var end = (node.raws.between || '') + (semicolon ? ';' : '');\n this.builder(name + params + end, node);\n }\n };\n\n Stringifier.prototype.body = function body(node) {\n var last = node.nodes.length - 1;\n while (last > 0) {\n if (node.nodes[last].type !== 'comment') break;\n last -= 1;\n }\n\n var semicolon = this.raw(node, 'semicolon');\n for (var i = 0; i < node.nodes.length; i++) {\n var child = node.nodes[i];\n var before = this.raw(child, 'before');\n if (before) this.builder(before);\n this.stringify(child, last !== i || semicolon);\n }\n };\n\n Stringifier.prototype.block = function block(node, start) {\n var between = this.raw(node, 'between', 'beforeOpen');\n this.builder(start + between + '{', node, 'start');\n\n var after = void 0;\n if (node.nodes && node.nodes.length) {\n this.body(node);\n after = this.raw(node, 'after');\n } else {\n after = this.raw(node, 'after', 'emptyBody');\n }\n\n if (after) this.builder(after);\n this.builder('}', node, 'end');\n };\n\n Stringifier.prototype.raw = function raw(node, own, detect) {\n var value = void 0;\n if (!detect) detect = own;\n\n // Already had\n if (own) {\n value = node.raws[own];\n if (typeof value !== 'undefined') return value;\n }\n\n var parent = node.parent;\n\n // Hack for first rule in CSS\n if (detect === 'before') {\n if (!parent || parent.type === 'root' && parent.first === node) {\n return '';\n }\n }\n\n // Floating child without parent\n if (!parent) return defaultRaw[detect];\n\n // Detect style by other nodes\n var root = node.root();\n if (!root.rawCache) root.rawCache = {};\n if (typeof root.rawCache[detect] !== 'undefined') {\n return root.rawCache[detect];\n }\n\n if (detect === 'before' || detect === 'after') {\n return this.beforeAfter(node, detect);\n } else {\n var method = 'raw' + capitalize(detect);\n if (this[method]) {\n value = this[method](root, node);\n } else {\n root.walk(function (i) {\n value = i.raws[own];\n if (typeof value !== 'undefined') return false;\n });\n }\n }\n\n if (typeof value === 'undefined') value = defaultRaw[detect];\n\n root.rawCache[detect] = value;\n return value;\n };\n\n Stringifier.prototype.rawSemicolon = function rawSemicolon(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n value = i.raws.semicolon;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawEmptyBody = function rawEmptyBody(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length === 0) {\n value = i.raws.after;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawIndent = function rawIndent(root) {\n if (root.raws.indent) return root.raws.indent;\n var value = void 0;\n root.walk(function (i) {\n var p = i.parent;\n if (p && p !== root && p.parent && p.parent === root) {\n if (typeof i.raws.before !== 'undefined') {\n var parts = i.raws.before.split('\\n');\n value = parts[parts.length - 1];\n value = value.replace(/[^\\s]/g, '');\n return false;\n }\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawBeforeComment = function rawBeforeComment(root, node) {\n var value = void 0;\n root.walkComments(function (i) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n return false;\n }\n });\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeDecl');\n } else if (value) {\n value = value.replace(/[^\\s]/g, '');\n }\n return value;\n };\n\n Stringifier.prototype.rawBeforeDecl = function rawBeforeDecl(root, node) {\n var value = void 0;\n root.walkDecls(function (i) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n return false;\n }\n });\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeRule');\n } else if (value) {\n value = value.replace(/[^\\s]/g, '');\n }\n return value;\n };\n\n Stringifier.prototype.rawBeforeRule = function rawBeforeRule(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && (i.parent !== root || root.first !== i)) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/[^\\s]/g, '');\n return value;\n };\n\n Stringifier.prototype.rawBeforeClose = function rawBeforeClose(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length > 0) {\n if (typeof i.raws.after !== 'undefined') {\n value = i.raws.after;\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/[^\\s]/g, '');\n return value;\n };\n\n Stringifier.prototype.rawBeforeOpen = function rawBeforeOpen(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.type !== 'decl') {\n value = i.raws.between;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawColon = function rawColon(root) {\n var value = void 0;\n root.walkDecls(function (i) {\n if (typeof i.raws.between !== 'undefined') {\n value = i.raws.between.replace(/[^\\s:]/g, '');\n return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.beforeAfter = function beforeAfter(node, detect) {\n var value = void 0;\n if (node.type === 'decl') {\n value = this.raw(node, null, 'beforeDecl');\n } else if (node.type === 'comment') {\n value = this.raw(node, null, 'beforeComment');\n } else if (detect === 'before') {\n value = this.raw(node, null, 'beforeRule');\n } else {\n value = this.raw(node, null, 'beforeClose');\n }\n\n var buf = node.parent;\n var depth = 0;\n while (buf && buf.type !== 'root') {\n depth += 1;\n buf = buf.parent;\n }\n\n if (value.indexOf('\\n') !== -1) {\n var indent = this.raw(node, null, 'indent');\n if (indent.length) {\n for (var step = 0; step < depth; step++) {\n value += indent;\n }\n }\n }\n\n return value;\n };\n\n Stringifier.prototype.rawValue = function rawValue(node, prop) {\n var value = node[prop];\n var raw = node.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n } else {\n return value;\n }\n };\n\n return Stringifier;\n}();\n\nexports.default = Stringifier;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmaWVyLmVzNiJdLCJuYW1lcyI6WyJkZWZhdWx0UmF3IiwiY29sb24iLCJpbmRlbnQiLCJiZWZvcmVEZWNsIiwiYmVmb3JlUnVsZSIsImJlZm9yZU9wZW4iLCJiZWZvcmVDbG9zZSIsImJlZm9yZUNvbW1lbnQiLCJhZnRlciIsImVtcHR5Qm9keSIsImNvbW1lbnRMZWZ0IiwiY29tbWVudFJpZ2h0IiwiY2FwaXRhbGl6ZSIsInN0ciIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJTdHJpbmdpZmllciIsImJ1aWxkZXIiLCJzdHJpbmdpZnkiLCJub2RlIiwic2VtaWNvbG9uIiwidHlwZSIsInJvb3QiLCJib2R5IiwicmF3cyIsImNvbW1lbnQiLCJsZWZ0IiwicmF3IiwicmlnaHQiLCJ0ZXh0IiwiZGVjbCIsImJldHdlZW4iLCJzdHJpbmciLCJwcm9wIiwicmF3VmFsdWUiLCJpbXBvcnRhbnQiLCJydWxlIiwiYmxvY2siLCJvd25TZW1pY29sb24iLCJhdHJ1bGUiLCJuYW1lIiwicGFyYW1zIiwiYWZ0ZXJOYW1lIiwibm9kZXMiLCJlbmQiLCJsYXN0IiwibGVuZ3RoIiwiaSIsImNoaWxkIiwiYmVmb3JlIiwic3RhcnQiLCJvd24iLCJkZXRlY3QiLCJ2YWx1ZSIsInBhcmVudCIsImZpcnN0IiwicmF3Q2FjaGUiLCJiZWZvcmVBZnRlciIsIm1ldGhvZCIsIndhbGsiLCJyYXdTZW1pY29sb24iLCJyYXdFbXB0eUJvZHkiLCJyYXdJbmRlbnQiLCJwIiwicGFydHMiLCJzcGxpdCIsInJlcGxhY2UiLCJyYXdCZWZvcmVDb21tZW50Iiwid2Fsa0NvbW1lbnRzIiwiaW5kZXhPZiIsInJhd0JlZm9yZURlY2wiLCJ3YWxrRGVjbHMiLCJyYXdCZWZvcmVSdWxlIiwicmF3QmVmb3JlQ2xvc2UiLCJyYXdCZWZvcmVPcGVuIiwicmF3Q29sb24iLCJidWYiLCJkZXB0aCIsInN0ZXAiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQU1BLGFBQWE7QUFDZkMsV0FBZSxJQURB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QWtDO0FBQzlCLG1CQUFPMUIsSUFBSUEsR0FBWDtBQUNILFNBRkQsTUFFTztBQUNILG1CQUFPMEIsS0FBUDtBQUNIO0FBQ0osSzs7Ozs7a0JBSVVyQyxXIiwiZmlsZSI6InN0cmluZ2lmaWVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZGVmYXVsdFJhdyA9IHtcbiAgICBjb2xvbjogICAgICAgICAnOiAnLFxuICAgIGluZGVudDogICAgICAgICcgICAgJyxcbiAgICBiZWZvcmVEZWNsOiAgICAnXFxuJyxcbiAgICBiZWZvcmVSdWxlOiAgICAnXFxuJyxcbiAgICBiZWZvcmVPcGVuOiAgICAnICcsXG4gICAgYmVmb3JlQ2xvc2U6ICAgJ1xcbicsXG4gICAgYmVmb3JlQ29tbWVudDogJ1xcbicsXG4gICAgYWZ0ZXI6ICAgICAgICAgJ1xcbicsXG4gICAgZW1wdHlCb2R5OiAgICAgJycsXG4gICAgY29tbWVudExlZnQ6ICAgJyAnLFxuICAgIGNvbW1lbnRSaWdodDogICcgJ1xufTtcblxuZnVuY3Rpb24gY2FwaXRhbGl6ZShzdHIpIHtcbiAgICByZXR1cm4gc3RyWzBdLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7XG59XG5cbmNsYXNzIFN0cmluZ2lmaWVyIHtcblxuICAgIGNvbnN0cnVjdG9yKGJ1aWxkZXIpIHtcbiAgICAgICAgdGhpcy5idWlsZGVyID0gYnVpbGRlcjtcbiAgICB9XG5cbiAgICBzdHJpbmdpZnkobm9kZSwgc2VtaWNvbG9uKSB7XG4gICAgICAgIHRoaXNbbm9kZS50eXBlXShub2RlLCBzZW1pY29sb24pO1xuICAgIH1cblxuICAgIHJvb3Qobm9kZSkge1xuICAgICAgICB0aGlzLmJvZHkobm9kZSk7XG4gICAgICAgIGlmICggbm9kZS5yYXdzLmFmdGVyICkgdGhpcy5idWlsZGVyKG5vZGUucmF3cy5hZnRlcik7XG4gICAgfVxuXG4gICAgY29tbWVudChub2RlKSB7XG4gICAgICAgIGxldCBsZWZ0ICA9IHRoaXMucmF3KG5vZGUsICdsZWZ0JywgICdjb21tZW50TGVmdCcpO1xuICAgICAgICBsZXQgcmlnaHQgPSB0aGlzLnJhdyhub2RlLCAncmlnaHQnLCAnY29tbWVudFJpZ2h0Jyk7XG4gICAgICAgIHRoaXMuYnVpbGRlcignLyonICsgbGVmdCArIG5vZGUudGV4dCArIHJpZ2h0ICsgJyovJywgbm9kZSk7XG4gICAgfVxuXG4gICAgZGVjbChub2RlLCBzZW1pY29sb24pIHtcbiAgICAgICAgbGV0IGJldHdlZW4gPSB0aGlzLnJhdyhub2RlLCAnYmV0d2VlbicsICdjb2xvbicpO1xuICAgICAgICBsZXQgc3RyaW5nICA9IG5vZGUucHJvcCArIGJldHdlZW4gKyB0aGlzLnJhd1ZhbHVlKG5vZGUsICd2YWx1ZScpO1xuXG4gICAgICAgIGlmICggbm9kZS5pbXBvcnRhbnQgKSB7XG4gICAgICAgICAgICBzdHJpbmcgKz0gbm9kZS5yYXdzLmltcG9ydGFudCB8fCAnICFpbXBvcnRhbnQnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBzZW1pY29sb24gKSBzdHJpbmcgKz0gJzsnO1xuICAgICAgICB0aGlzLmJ1aWxkZXIoc3RyaW5nLCBub2RlKTtcbiAgICB9XG5cbiAgICBydWxlKG5vZGUpIHtcbiAgICAgICAgdGhpcy5ibG9jayhub2RlLCB0aGlzLnJhd1ZhbHVlKG5vZGUsICdzZWxlY3RvcicpKTtcbiAgICAgICAgaWYgKCBub2RlLnJhd3Mub3duU2VtaWNvbG9uICkge1xuICAgICAgICAgICAgdGhpcy5idWlsZGVyKG5vZGUucmF3cy5vd25TZW1pY29sb24sIG5vZGUsICdlbmQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGF0cnVsZShub2RlLCBzZW1pY29sb24pIHtcbiAgICAgICAgbGV0IG5hbWUgICA9ICdAJyArIG5vZGUubmFtZTtcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5vZGUucGFyYW1zID8gdGhpcy5yYXdWYWx1ZShub2RlLCAncGFyYW1zJykgOiAnJztcblxuICAgICAgICBpZiAoIHR5cGVvZiBub2RlLnJhd3MuYWZ0ZXJOYW1lICE9PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgIG5hbWUgKz0gbm9kZS5yYXdzLmFmdGVyTmFtZTtcbiAgICAgICAgfSBlbHNlIGlmICggcGFyYW1zICkge1xuICAgICAgICAgICAgbmFtZSArPSAnICc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIG5vZGUubm9kZXMgKSB7XG4gICAgICAgICAgICB0aGlzLmJsb2NrKG5vZGUsIG5hbWUgKyBwYXJhbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGVuZCA9IChub2RlLnJhd3MuYmV0d2VlbiB8fCAnJykgKyAoc2VtaWNvbG9uID8gJzsnIDogJycpO1xuICAgICAgICAgICAgdGhpcy5idWlsZGVyKG5hbWUgKyBwYXJhbXMgKyBlbmQsIG5vZGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYm9keShub2RlKSB7XG4gICAgICAgIGxldCBsYXN0ID0gbm9kZS5ub2Rlcy5sZW5ndGggLSAxO1xuICAgICAgICB3aGlsZSAoIGxhc3QgPiAwICkge1xuICAgICAgICAgICAgaWYgKCBub2RlLm5vZGVzW2xhc3RdLnR5cGUgIT09ICdjb21tZW50JyApIGJyZWFrO1xuICAgICAgICAgICAgbGFzdCAtPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHNlbWljb2xvbiA9IHRoaXMucmF3KG5vZGUsICdzZW1pY29sb24nKTtcbiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgbm9kZS5ub2Rlcy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgIGxldCBjaGlsZCAgPSBub2RlLm5vZGVzW2ldO1xuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IHRoaXMucmF3KGNoaWxkLCAnYmVmb3JlJyk7XG4gICAgICAgICAgICBpZiAoIGJlZm9yZSApIHRoaXMuYnVpbGRlcihiZWZvcmUpO1xuICAgICAgICAgICAgdGhpcy5zdHJpbmdpZnkoY2hpbGQsIGxhc3QgIT09IGkgfHwgc2VtaWNvbG9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJsb2NrKG5vZGUsIHN0YXJ0KSB7XG4gICAgICAgIGxldCBiZXR3ZWVuID0gdGhpcy5yYXcobm9kZSwgJ2JldHdlZW4nLCAnYmVmb3JlT3BlbicpO1xuICAgICAgICB0aGlzLmJ1aWxkZXIoc3RhcnQgKyBiZXR3ZWVuICsgJ3snLCBub2RlLCAnc3RhcnQnKTtcblxuICAgICAgICBsZXQgYWZ0ZXI7XG4gICAgICAgIGlmICggbm9kZS5ub2RlcyAmJiBub2RlLm5vZGVzLmxlbmd0aCApIHtcbiAgICAgICAgICAgIHRoaXMuYm9keShub2RlKTtcbiAgICAgICAgICAgIGFmdGVyID0gdGhpcy5yYXcobm9kZSwgJ2FmdGVyJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhZnRlciA9IHRoaXMucmF3KG5vZGUsICdhZnRlcicsICdlbXB0eUJvZHknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggYWZ0ZXIgKSB0aGlzLmJ1aWxkZXIoYWZ0ZXIpO1xuICAgICAgICB0aGlzLmJ1aWxkZXIoJ30nLCBub2RlLCAnZW5kJyk7XG4gICAgfVxuXG4gICAgcmF3KG5vZGUsIG93biwgZGV0ZWN0KSB7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgaWYgKCAhZGV0ZWN0ICkgZGV0ZWN0ID0gb3duO1xuXG4gICAgICAgIC8vIEFscmVhZHkgaGFkXG4gICAgICAgIGlmICggb3duICkge1xuICAgICAgICAgICAgdmFsdWUgPSBub2RlLnJhd3Nbb3duXTtcbiAgICAgICAgICAgIGlmICggdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyApIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYXJlbnQgPSBub2RlLnBhcmVudDtcblxuICAgICAgICAvLyBIYWNrIGZvciBmaXJzdCBydWxlIGluIENTU1xuICAgICAgICBpZiAoIGRldGVjdCA9PT0gJ2JlZm9yZScgKSB7XG4gICAgICAgICAgICBpZiAoICFwYXJlbnQgfHwgcGFyZW50LnR5cGUgPT09ICdyb290JyAmJiBwYXJlbnQuZmlyc3QgPT09IG5vZGUgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmxvYXRpbmcgY2hpbGQgd2l0aG91dCBwYXJlbnRcbiAgICAgICAgaWYgKCAhcGFyZW50ICkgcmV0dXJuIGRlZmF1bHRSYXdbZGV0ZWN0XTtcblxuICAgICAgICAvLyBEZXRlY3Qgc3R5bGUgYnkgb3RoZXIgbm9kZXNcbiAgICAgICAgbGV0IHJvb3QgPSBub2RlLnJvb3QoKTtcbiAgICAgICAgaWYgKCAhcm9vdC5yYXdDYWNoZSApIHJvb3QucmF3Q2FjaGUgPSB7IH07XG4gICAgICAgIGlmICggdHlwZW9mIHJvb3QucmF3Q2FjaGVbZGV0ZWN0XSAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICByZXR1cm4gcm9vdC5yYXdDYWNoZVtkZXRlY3RdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBkZXRlY3QgPT09ICdiZWZvcmUnIHx8IGRldGVjdCA9PT0gJ2FmdGVyJyApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJlZm9yZUFmdGVyKG5vZGUsIGRldGVjdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgbWV0aG9kID0gJ3JhdycgKyBjYXBpdGFsaXplKGRldGVjdCk7XG4gICAgICAgICAgICBpZiAoIHRoaXNbbWV0aG9kXSApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXNbbWV0aG9kXShyb290LCBub2RlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcm9vdC53YWxrKCBpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBpLnJhd3Nbb3duXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnICkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCB0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnICkgdmFsdWUgPSBkZWZhdWx0UmF3W2RldGVjdF07XG5cbiAgICAgICAgcm9vdC5yYXdDYWNoZVtkZXRlY3RdID0gdmFsdWU7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByYXdTZW1pY29sb24ocm9vdCkge1xuICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgIHJvb3Qud2FsayggaSA9PiB7XG4gICAgICAgICAgICBpZiAoIGkubm9kZXMgJiYgaS5ub2Rlcy5sZW5ndGggJiYgaS5sYXN0LnR5cGUgPT09ICdkZWNsJyApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGkucmF3cy5zZW1pY29sb247XG4gICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnICkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJhd0VtcHR5Qm9keShyb290KSB7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgcm9vdC53YWxrKCBpID0+IHtcbiAgICAgICAgICAgIGlmICggaS5ub2RlcyAmJiBpLm5vZGVzLmxlbmd0aCA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGkucmF3cy5hZnRlcjtcbiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmF3SW5kZW50KHJvb3QpIHtcbiAgICAgICAgaWYgKCByb290LnJhd3MuaW5kZW50ICkgcmV0dXJuIHJvb3QucmF3cy5pbmRlbnQ7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgcm9vdC53YWxrKCBpID0+IHtcbiAgICAgICAgICAgIGxldCBwID0gaS5wYXJlbnQ7XG4gICAgICAgICAgICBpZiAoIHAgJiYgcCAhPT0gcm9vdCAmJiBwLnBhcmVudCAmJiBwLnBhcmVudCA9PT0gcm9vdCApIHtcbiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBpLnJhd3MuYmVmb3JlICE9PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcnRzID0gaS5yYXdzLmJlZm9yZS5zcGxpdCgnXFxuJyk7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXHNdL2csICcnKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByYXdCZWZvcmVDb21tZW50KHJvb3QsIG5vZGUpIHtcbiAgICAgICAgbGV0IHZhbHVlO1xuICAgICAgICByb290LndhbGtDb21tZW50cyggaSA9PiB7XG4gICAgICAgICAgICBpZiAoIHR5cGVvZiBpLnJhd3MuYmVmb3JlICE9PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGkucmF3cy5iZWZvcmU7XG4gICAgICAgICAgICAgICAgaWYgKCB2YWx1ZS5pbmRleE9mKCdcXG4nKSAhPT0gLTEgKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXG5dKyQvLCAnJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICggdHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy5yYXcobm9kZSwgbnVsbCwgJ2JlZm9yZURlY2wnKTtcbiAgICAgICAgfSBlbHNlIGlmICggdmFsdWUgKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxzXS9nLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJhd0JlZm9yZURlY2wocm9vdCwgbm9kZSkge1xuICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgIHJvb3Qud2Fsa0RlY2xzKCBpID0+IHtcbiAgICAgICAgICAgIGlmICggdHlwZW9mIGkucmF3cy5iZWZvcmUgIT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gaS5yYXdzLmJlZm9yZTtcbiAgICAgICAgICAgICAgICBpZiAoIHZhbHVlLmluZGV4T2YoJ1xcbicpICE9PSAtMSApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcbl0rJC8sICcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCB0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlUnVsZScpO1xuICAgICAgICB9IGVsc2UgaWYgKCB2YWx1ZSApIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXHNdL2csICcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmF3QmVmb3JlUnVsZShyb290KSB7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgcm9vdC53YWxrKCBpID0+IHtcbiAgICAgICAgICAgIGlmICggaS5ub2RlcyAmJiAoaS5wYXJlbnQgIT09IHJvb3QgfHwgcm9vdC5maXJzdCAhPT0gaSkgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgaS5yYXdzLmJlZm9yZSAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gaS5yYXdzLmJlZm9yZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB2YWx1ZS5pbmRleE9mKCdcXG4nKSAhPT0gLTEgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxuXSskLywgJycpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIHZhbHVlICkgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcc10vZywgJycpO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmF3QmVmb3JlQ2xvc2Uocm9vdCkge1xuICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgIHJvb3Qud2FsayggaSA9PiB7XG4gICAgICAgICAgICBpZiAoIGkubm9kZXMgJiYgaS5ub2Rlcy5sZW5ndGggPiAwICkge1xuICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIGkucmF3cy5hZnRlciAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gaS5yYXdzLmFmdGVyO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIHZhbHVlLmluZGV4T2YoJ1xcbicpICE9PSAtMSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXG5dKyQvLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICggdmFsdWUgKSB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxzXS9nLCAnJyk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByYXdCZWZvcmVPcGVuKHJvb3QpIHtcbiAgICAgICAgbGV0IHZhbHVlO1xuICAgICAgICByb290LndhbGsoIGkgPT4ge1xuICAgICAgICAgICAgaWYgKCBpLnR5cGUgIT09ICdkZWNsJyApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGkucmF3cy5iZXR3ZWVuO1xuICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyApIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByYXdDb2xvbihyb290KSB7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgcm9vdC53YWxrRGVjbHMoIGkgPT4ge1xuICAgICAgICAgICAgaWYgKCB0eXBlb2YgaS5yYXdzLmJldHdlZW4gIT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gaS5yYXdzLmJldHdlZW4ucmVwbGFjZSgvW15cXHM6XS9nLCAnJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGJlZm9yZUFmdGVyKG5vZGUsIGRldGVjdCkge1xuICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgIGlmICggbm9kZS50eXBlID09PSAnZGVjbCcgKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHRoaXMucmF3KG5vZGUsIG51bGwsICdiZWZvcmVEZWNsJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIG5vZGUudHlwZSA9PT0gJ2NvbW1lbnQnICkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlQ29tbWVudCcpO1xuICAgICAgICB9IGVsc2UgaWYgKCBkZXRlY3QgPT09ICdiZWZvcmUnICkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlUnVsZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlQ2xvc2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBidWYgICA9IG5vZGUucGFyZW50O1xuICAgICAgICBsZXQgZGVwdGggPSAwO1xuICAgICAgICB3aGlsZSAoIGJ1ZiAmJiBidWYudHlwZSAhPT0gJ3Jvb3QnICkge1xuICAgICAgICAgICAgZGVwdGggKz0gMTtcbiAgICAgICAgICAgIGJ1ZiA9IGJ1Zi5wYXJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHZhbHVlLmluZGV4T2YoJ1xcbicpICE9PSAtMSApIHtcbiAgICAgICAgICAgIGxldCBpbmRlbnQgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnaW5kZW50Jyk7XG4gICAgICAgICAgICBpZiAoIGluZGVudC5sZW5ndGggKSB7XG4gICAgICAgICAgICAgICAgZm9yICggbGV0IHN0ZXAgPSAwOyBzdGVwIDwgZGVwdGg7IHN0ZXArKyApIHZhbHVlICs9IGluZGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByYXdWYWx1ZShub2RlLCBwcm9wKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IG5vZGVbcHJvcF07XG4gICAgICAgIGxldCByYXcgICA9IG5vZGUucmF3c1twcm9wXTtcbiAgICAgICAgaWYgKCByYXcgJiYgcmF3LnZhbHVlID09PSB2YWx1ZSApIHtcbiAgICAgICAgICAgIHJldHVybiByYXcucmF3O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IFN0cmluZ2lmaWVyO1xuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.default = warnOnce;\nvar printed = {};\n\nfunction warnOnce(message) {\n if (printed[message]) return;\n printed[message] = true;\n\n if (typeof console !== 'undefined' && console.warn) console.warn(message);\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndhcm4tb25jZS5lczYiXSwibmFtZXMiOlsid2Fybk9uY2UiLCJwcmludGVkIiwibWVzc2FnZSIsImNvbnNvbGUiLCJ3YXJuIl0sIm1hcHBpbmdzIjoiOzs7a0JBRXdCQSxRO0FBRnhCLElBQUlDLFVBQVUsRUFBZDs7QUFFZSxTQUFTRCxRQUFULENBQWtCRSxPQUFsQixFQUEyQjtBQUN0QyxRQUFLRCxRQUFRQyxPQUFSLENBQUwsRUFBd0I7QUFDeEJELFlBQVFDLE9BQVIsSUFBbUIsSUFBbkI7O0FBRUEsUUFBSyxPQUFPQyxPQUFQLEtBQW1CLFdBQW5CLElBQWtDQSxRQUFRQyxJQUEvQyxFQUFzREQsUUFBUUMsSUFBUixDQUFhRixPQUFiO0FBQ3pEIiwiZmlsZSI6Indhcm4tb25jZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImxldCBwcmludGVkID0geyB9O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB3YXJuT25jZShtZXNzYWdlKSB7XG4gICAgaWYgKCBwcmludGVkW21lc3NhZ2VdICkgcmV0dXJuO1xuICAgIHByaW50ZWRbbWVzc2FnZV0gPSB0cnVlO1xuXG4gICAgaWYgKCB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZS53YXJuICkgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _lazyResult = require('./lazy-result');\n\nvar _lazyResult2 = _interopRequireDefault(_lazyResult);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Contains plugins to process CSS. Create one `Processor` instance,\n * initialize its plugins, and then use that instance on numerous CSS files.\n *\n * @example\n * const processor = postcss([autoprefixer, precss]);\n * processor.process(css1).then(result => console.log(result.css));\n * processor.process(css2).then(result => console.log(result.css));\n */\nvar Processor = function () {\n\n /**\n * @param {Array.<Plugin|pluginFunction>|Processor} plugins - PostCSS\n * plugins. See {@link Processor#use} for plugin format.\n */\n function Processor() {\n var plugins = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n _classCallCheck(this, Processor);\n\n /**\n * @member {string} - Current PostCSS version.\n *\n * @example\n * if ( result.processor.version.split('.')[0] !== '6' ) {\n * throw new Error('This plugin works only with PostCSS 6');\n * }\n */\n this.version = '6.0.23';\n /**\n * @member {pluginFunction[]} - Plugins added to this processor.\n *\n * @example\n * const processor = postcss([autoprefixer, precss]);\n * processor.plugins.length //=> 2\n */\n this.plugins = this.normalize(plugins);\n }\n\n /**\n * Adds a plugin to be used as a CSS processor.\n *\n * PostCSS plugin can be in 4 formats:\n * * A plugin created by {@link postcss.plugin} method.\n * * A function. PostCSS will pass the function a @{link Root}\n * as the first argument and current {@link Result} instance\n * as the second.\n * * An object with a `postcss` method. PostCSS will use that method\n * as described in #2.\n * * Another {@link Processor} instance. PostCSS will copy plugins\n * from that instance into this one.\n *\n * Plugins can also be added by passing them as arguments when creating\n * a `postcss` instance (see [`postcss(plugins)`]).\n *\n * Asynchronous plugins should return a `Promise` instance.\n *\n * @param {Plugin|pluginFunction|Processor} plugin - PostCSS plugin\n * or {@link Processor}\n * with plugins\n *\n * @example\n * const processor = postcss()\n * .use(autoprefixer)\n * .use(precss);\n *\n * @return {Processes} current processor to make methods chain\n */\n\n\n Processor.prototype.use = function use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]));\n return this;\n };\n\n /**\n * Parses source CSS and returns a {@link LazyResult} Promise proxy.\n * Because some plugins can be asynchronous it doesn’t make\n * any transformations. Transformations will be applied\n * in the {@link LazyResult} methods.\n *\n * @param {string|toString|Result} css - String with input CSS or\n * any object with a `toString()`\n * method, like a Buffer.\n * Optionally, send a {@link Result}\n * instance and the processor will\n * take the {@link Root} from it.\n * @param {processOptions} [opts] - options\n *\n * @return {LazyResult} Promise proxy\n *\n * @example\n * processor.process(css, { from: 'a.css', to: 'a.out.css' })\n * .then(result => {\n * console.log(result.css);\n * });\n */\n\n\n Processor.prototype.process = function process(css) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return new _lazyResult2.default(this, css, opts);\n };\n\n Processor.prototype.normalize = function normalize(plugins) {\n var normalized = [];\n for (var _iterator = plugins, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var i = _ref;\n\n if (i.postcss) i = i.postcss;\n\n if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && Array.isArray(i.plugins)) {\n normalized = normalized.concat(i.plugins);\n } else if (typeof i === 'function') {\n normalized.push(i);\n } else if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && (i.parse || i.stringify)) {\n throw new Error('PostCSS syntaxes cannot be used as plugins. ' + 'Instead, please use one of the ' + 'syntax/parser/stringifier options as ' + 'outlined in your PostCSS ' + 'runner documentation.');\n } else {\n throw new Error(i + ' is not a PostCSS plugin');\n }\n }\n return normalized;\n };\n\n return Processor;\n}();\n\nexports.default = Processor;\n\n/**\n * @callback builder\n * @param {string} part - part of generated CSS connected to this node\n * @param {Node} node - AST node\n * @param {\"start\"|\"end\"} [type] - node’s part type\n */\n\n/**\n * @callback parser\n *\n * @param {string|toString} css - string with input CSS or any object\n * with toString() method, like a Buffer\n * @param {processOptions} [opts] - options with only `from` and `map` keys\n *\n * @return {Root} PostCSS AST\n */\n\n/**\n * @callback stringifier\n *\n * @param {Node} node - start node for stringifing. Usually {@link Root}.\n * @param {builder} builder - function to concatenate CSS from node’s parts\n * or generate string and source map\n *\n * @return {void}\n */\n\n/**\n * @typedef {object} syntax\n * @property {parser} parse - function to generate AST by string\n * @property {stringifier} stringify - function to generate string by AST\n */\n\n/**\n * @typedef {object} toString\n * @property {function} toString\n */\n\n/**\n * @callback pluginFunction\n * @param {Root} root - parsed input CSS\n * @param {Result} result - result to set warnings or check other plugins\n */\n\n/**\n * @typedef {object} Plugin\n * @property {function} postcss - PostCSS plugin function\n */\n\n/**\n * @typedef {object} processOptions\n * @property {string} from - the path of the CSS source file.\n * You should always set `from`,\n * because it is used in source map\n * generation and syntax error messages.\n * @property {string} to - the path where you’ll put the output\n * CSS file. You should always set `to`\n * to generate correct source maps.\n * @property {parser} parser - function to generate AST by string\n * @property {stringifier} stringifier - class to generate string by AST\n * @property {syntax} syntax - object with `parse` and `stringify`\n * @property {object} map - source map options\n * @property {boolean} map.inline - does source map should\n * be embedded in the output\n * CSS as a base64-encoded\n * comment\n * @property {string|object|false|function} map.prev - source map content\n * from a previous\n * processing step\n * (for example, Sass).\n * PostCSS will try to find\n * previous map\n * automatically, so you\n * could disable it by\n * `false` value.\n * @property {boolean} map.sourcesContent - does PostCSS should set\n * the origin content to map\n * @property {string|false} map.annotation - does PostCSS should set\n * annotation comment to map\n * @property {string} map.from - override `from` in map’s\n * `sources`\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb2Nlc3Nvci5lczYiXSwibmFtZXMiOlsiUHJvY2Vzc29yIiwicGx1Z2lucyIsInZlcnNpb24iLCJub3JtYWxpemUiLCJ1c2UiLCJwbHVnaW4iLCJjb25jYXQiLCJwcm9jZXNzIiwiY3NzIiwib3B0cyIsIkxhenlSZXN1bHQiLCJub3JtYWxpemVkIiwiaSIsInBvc3Rjc3MiLCJBcnJheSIsImlzQXJyYXkiLCJwdXNoIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRUE7Ozs7Ozs7OztJQVNNQSxTOztBQUVGOzs7O0FBSUEsdUJBQTBCO0FBQUEsUUFBZEMsT0FBYyx1RUFBSixFQUFJOztBQUFBOztBQUN0Qjs7Ozs7Ozs7QUFRQSxTQUFLQyxPQUFMLEdBQWUsUUFBZjtBQUNBOzs7Ozs7O0FBT0EsU0FBS0QsT0FBTCxHQUFlLEtBQUtFLFNBQUwsQ0FBZUYsT0FBZixDQUFmO0FBQ0g7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0JBNkJBRyxHLGdCQUFJQyxNLEVBQVE7QUFDUixTQUFLSixPQUFMLEdBQWUsS0FBS0EsT0FBTCxDQUFhSyxNQUFiLENBQW9CLEtBQUtILFNBQUwsQ0FBZSxDQUFDRSxNQUFELENBQWYsQ0FBcEIsQ0FBZjtBQUNBLFdBQU8sSUFBUDtBQUNILEc7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQkFzQkFFLE8sb0JBQVFDLEcsRUFBaUI7QUFBQSxRQUFaQyxJQUFZLHVFQUFMLEVBQUs7O0FBQ3JCLFdBQU8sSUFBSUMsb0JBQUosQ0FBZSxJQUFmLEVBQXFCRixHQUFyQixFQUEwQkMsSUFBMUIsQ0FBUDtBQUNILEc7O3NCQUVETixTLHNCQUFVRixPLEVBQVM7QUFDZixRQUFJVSxhQUFhLEVBQWpCO0FBQ0EseUJBQWVWLE9BQWYsa0hBQXlCO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQSxVQUFmVyxDQUFlOztBQUNyQixVQUFLQSxFQUFFQyxPQUFQLEVBQWlCRCxJQUFJQSxFQUFFQyxPQUFOOztBQUVqQixVQUFLLFFBQU9ELENBQVAseUNBQU9BLENBQVAsT0FBYSxRQUFiLElBQXlCRSxNQUFNQyxPQUFOLENBQWNILEVBQUVYLE9BQWhCLENBQTlCLEVBQXlEO0FBQ3JEVSxxQkFBYUEsV0FBV0wsTUFBWCxDQUFrQk0sRUFBRVgsT0FBcEIsQ0FBYjtBQUNILE9BRkQsTUFFTyxJQUFLLE9BQU9XLENBQVAsS0FBYSxVQUFsQixFQUErQjtBQUNsQ0QsbUJBQVdLLElBQVgsQ0FBZ0JKLENBQWhCO0FBQ0gsT0FGTSxNQUVBLElBQUssUUFBT0EsQ0FBUCx5Q0FBT0EsQ0FBUCxPQUFhLFFBQWIsS0FBMEJBLEVBQUVLLEtBQUYsSUFBV0wsRUFBRU0sU0FBdkMsQ0FBTCxFQUF5RDtBQUM1RCxjQUFNLElBQUlDLEtBQUosQ0FBVSxpREFDQSxpQ0FEQSxHQUVBLHVDQUZBLEdBR0EsMkJBSEEsR0FJQSx1QkFKVixDQUFOO0FBS0gsT0FOTSxNQU1BO0FBQ0gsY0FBTSxJQUFJQSxLQUFKLENBQVVQLElBQUksMEJBQWQsQ0FBTjtBQUNIO0FBQ0o7QUFDRCxXQUFPRCxVQUFQO0FBQ0gsRzs7Ozs7a0JBSVVYLFM7O0FBRWY7Ozs7Ozs7QUFPQTs7Ozs7Ozs7OztBQVVBOzs7Ozs7Ozs7O0FBVUE7Ozs7OztBQU1BOzs7OztBQUtBOzs7Ozs7QUFNQTs7Ozs7QUFLQSIsImZpbGUiOiJwcm9jZXNzb3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTGF6eVJlc3VsdCBmcm9tICcuL2xhenktcmVzdWx0JztcblxuLyoqXG4gKiBDb250YWlucyBwbHVnaW5zIHRvIHByb2Nlc3MgQ1NTLiBDcmVhdGUgb25lIGBQcm9jZXNzb3JgIGluc3RhbmNlLFxuICogaW5pdGlhbGl6ZSBpdHMgcGx1Z2lucywgYW5kIHRoZW4gdXNlIHRoYXQgaW5zdGFuY2Ugb24gbnVtZXJvdXMgQ1NTIGZpbGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBwcm9jZXNzb3IgPSBwb3N0Y3NzKFthdXRvcHJlZml4ZXIsIHByZWNzc10pO1xuICogcHJvY2Vzc29yLnByb2Nlc3MoY3NzMSkudGhlbihyZXN1bHQgPT4gY29uc29sZS5sb2cocmVzdWx0LmNzcykpO1xuICogcHJvY2Vzc29yLnByb2Nlc3MoY3NzMikudGhlbihyZXN1bHQgPT4gY29uc29sZS5sb2cocmVzdWx0LmNzcykpO1xuICovXG5jbGFzcyBQcm9jZXNzb3Ige1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtBcnJheS48UGx1Z2lufHBsdWdpbkZ1bmN0aW9uPnxQcm9jZXNzb3J9IHBsdWdpbnMgLSBQb3N0Q1NTXG4gICAgICogICAgICAgIHBsdWdpbnMuIFNlZSB7QGxpbmsgUHJvY2Vzc29yI3VzZX0gZm9yIHBsdWdpbiBmb3JtYXQuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocGx1Z2lucyA9IFtdKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtzdHJpbmd9IC0gQ3VycmVudCBQb3N0Q1NTIHZlcnNpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqIGlmICggcmVzdWx0LnByb2Nlc3Nvci52ZXJzaW9uLnNwbGl0KCcuJylbMF0gIT09ICc2JyApIHtcbiAgICAgICAgICogICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgcGx1Z2luIHdvcmtzIG9ubHkgd2l0aCBQb3N0Q1NTIDYnKTtcbiAgICAgICAgICogfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy52ZXJzaW9uID0gJzYuMC4yMyc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtwbHVnaW5GdW5jdGlvbltdfSAtIFBsdWdpbnMgYWRkZWQgdG8gdGhpcyBwcm9jZXNzb3IuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqIGNvbnN0IHByb2Nlc3NvciA9IHBvc3Rjc3MoW2F1dG9wcmVmaXhlciwgcHJlY3NzXSk7XG4gICAgICAgICAqIHByb2Nlc3Nvci5wbHVnaW5zLmxlbmd0aCAvLz0+IDJcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucGx1Z2lucyA9IHRoaXMubm9ybWFsaXplKHBsdWdpbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBwbHVnaW4gdG8gYmUgdXNlZCBhcyBhIENTUyBwcm9jZXNzb3IuXG4gICAgICpcbiAgICAgKiBQb3N0Q1NTIHBsdWdpbiBjYW4gYmUgaW4gNCBmb3JtYXRzOlxuICAgICAqICogQSBwbHVnaW4gY3JlYXRlZCBieSB7QGxpbmsgcG9zdGNzcy5wbHVnaW59IG1ldGhvZC5cbiAgICAgKiAqIEEgZnVuY3Rpb24uIFBvc3RDU1Mgd2lsbCBwYXNzIHRoZSBmdW5jdGlvbiBhIEB7bGluayBSb290fVxuICAgICAqICAgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGFuZCBjdXJyZW50IHtAbGluayBSZXN1bHR9IGluc3RhbmNlXG4gICAgICogICBhcyB0aGUgc2Vjb25kLlxuICAgICAqICogQW4gb2JqZWN0IHdpdGggYSBgcG9zdGNzc2AgbWV0aG9kLiBQb3N0Q1NTIHdpbGwgdXNlIHRoYXQgbWV0aG9kXG4gICAgICogICBhcyBkZXNjcmliZWQgaW4gIzIuXG4gICAgICogKiBBbm90aGVyIHtAbGluayBQcm9jZXNzb3J9IGluc3RhbmNlLiBQb3N0Q1NTIHdpbGwgY29weSBwbHVnaW5zXG4gICAgICogICBmcm9tIHRoYXQgaW5zdGFuY2UgaW50byB0aGlzIG9uZS5cbiAgICAgKlxuICAgICAqIFBsdWdpbnMgY2FuIGFsc28gYmUgYWRkZWQgYnkgcGFzc2luZyB0aGVtIGFzIGFyZ3VtZW50cyB3aGVuIGNyZWF0aW5nXG4gICAgICogYSBgcG9zdGNzc2AgaW5zdGFuY2UgKHNlZSBbYHBvc3Rjc3MocGx1Z2lucylgXSkuXG4gICAgICpcbiAgICAgKiBBc3luY2hyb25vdXMgcGx1Z2lucyBzaG91bGQgcmV0dXJuIGEgYFByb21pc2VgIGluc3RhbmNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtQbHVnaW58cGx1Z2luRnVuY3Rpb258UHJvY2Vzc29yfSBwbHVnaW4gLSBQb3N0Q1NTIHBsdWdpblxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Ige0BsaW5rIFByb2Nlc3Nvcn1cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcGx1Z2luc1xuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCBwcm9jZXNzb3IgPSBwb3N0Y3NzKClcbiAgICAgKiAgIC51c2UoYXV0b3ByZWZpeGVyKVxuICAgICAqICAgLnVzZShwcmVjc3MpO1xuICAgICAqXG4gICAgICogQHJldHVybiB7UHJvY2Vzc2VzfSBjdXJyZW50IHByb2Nlc3NvciB0byBtYWtlIG1ldGhvZHMgY2hhaW5cbiAgICAgKi9cbiAgICB1c2UocGx1Z2luKSB7XG4gICAgICAgIHRoaXMucGx1Z2lucyA9IHRoaXMucGx1Z2lucy5jb25jYXQodGhpcy5ub3JtYWxpemUoW3BsdWdpbl0pKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHNvdXJjZSBDU1MgYW5kIHJldHVybnMgYSB7QGxpbmsgTGF6eVJlc3VsdH0gUHJvbWlzZSBwcm94eS5cbiAgICAgKiBCZWNhdXNlIHNvbWUgcGx1Z2lucyBjYW4gYmUgYXN5bmNocm9ub3VzIGl0IGRvZXNu4oCZdCBtYWtlXG4gICAgICogYW55IHRyYW5zZm9ybWF0aW9ucy4gVHJhbnNmb3JtYXRpb25zIHdpbGwgYmUgYXBwbGllZFxuICAgICAqIGluIHRoZSB7QGxpbmsgTGF6eVJlc3VsdH0gbWV0aG9kcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfHRvU3RyaW5nfFJlc3VsdH0gY3NzIC0gU3RyaW5nIHdpdGggaW5wdXQgQ1NTIG9yXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnkgb2JqZWN0IHdpdGggYSBgdG9TdHJpbmcoKWBcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCwgbGlrZSBhIEJ1ZmZlci5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsbHksIHNlbmQgYSB7QGxpbmsgUmVzdWx0fVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UgYW5kIHRoZSBwcm9jZXNzb3Igd2lsbFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSB0aGUge0BsaW5rIFJvb3R9IGZyb20gaXQuXG4gICAgICogQHBhcmFtIHtwcm9jZXNzT3B0aW9uc30gW29wdHNdICAgICAgLSBvcHRpb25zXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtMYXp5UmVzdWx0fSBQcm9taXNlIHByb3h5XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHByb2Nlc3Nvci5wcm9jZXNzKGNzcywgeyBmcm9tOiAnYS5jc3MnLCB0bzogJ2Eub3V0LmNzcycgfSlcbiAgICAgKiAgIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICogICAgICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKTtcbiAgICAgKiAgIH0pO1xuICAgICAqL1xuICAgIHByb2Nlc3MoY3NzLCBvcHRzID0geyB9KSB7XG4gICAgICAgIHJldHVybiBuZXcgTGF6eVJlc3VsdCh0aGlzLCBjc3MsIG9wdHMpO1xuICAgIH1cblxuICAgIG5vcm1hbGl6ZShwbHVnaW5zKSB7XG4gICAgICAgIGxldCBub3JtYWxpemVkID0gW107XG4gICAgICAgIGZvciAoIGxldCBpIG9mIHBsdWdpbnMgKSB7XG4gICAgICAgICAgICBpZiAoIGkucG9zdGNzcyApIGkgPSBpLnBvc3Rjc3M7XG5cbiAgICAgICAgICAgIGlmICggdHlwZW9mIGkgPT09ICdvYmplY3QnICYmIEFycmF5LmlzQXJyYXkoaS5wbHVnaW5zKSApIHtcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5jb25jYXQoaS5wbHVnaW5zKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHR5cGVvZiBpID09PSAnZnVuY3Rpb24nICkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQucHVzaChpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHR5cGVvZiBpID09PSAnb2JqZWN0JyAmJiAoaS5wYXJzZSB8fCBpLnN0cmluZ2lmeSkgKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQb3N0Q1NTIHN5bnRheGVzIGNhbm5vdCBiZSB1c2VkIGFzIHBsdWdpbnMuICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSW5zdGVhZCwgcGxlYXNlIHVzZSBvbmUgb2YgdGhlICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3ludGF4L3BhcnNlci9zdHJpbmdpZmllciBvcHRpb25zIGFzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3V0bGluZWQgaW4geW91ciBQb3N0Q1NTICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncnVubmVyIGRvY3VtZW50YXRpb24uJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihpICsgJyBpcyBub3QgYSBQb3N0Q1NTIHBsdWdpbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub3JtYWxpemVkO1xuICAgIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBQcm9jZXNzb3I7XG5cbi8qKlxuICogQGNhbGxiYWNrIGJ1aWxkZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJ0ICAgICAgICAgIC0gcGFydCBvZiBnZW5lcmF0ZWQgQ1NTIGNvbm5lY3RlZCB0byB0aGlzIG5vZGVcbiAqIEBwYXJhbSB7Tm9kZX0gICBub2RlICAgICAgICAgIC0gQVNUIG5vZGVcbiAqIEBwYXJhbSB7XCJzdGFydFwifFwiZW5kXCJ9IFt0eXBlXSAtIG5vZGXigJlzIHBhcnQgdHlwZVxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIHBhcnNlclxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfHRvU3RyaW5nfSBjc3MgICAtIHN0cmluZyB3aXRoIGlucHV0IENTUyBvciBhbnkgb2JqZWN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRvU3RyaW5nKCkgbWV0aG9kLCBsaWtlIGEgQnVmZmVyXG4gKiBAcGFyYW0ge3Byb2Nlc3NPcHRpb25zfSBbb3B0c10gLSBvcHRpb25zIHdpdGggb25seSBgZnJvbWAgYW5kIGBtYXBgIGtleXNcbiAqXG4gKiBAcmV0dXJuIHtSb290fSBQb3N0Q1NTIEFTVFxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIHN0cmluZ2lmaWVyXG4gKlxuICogQHBhcmFtIHtOb2RlfSBub2RlICAgICAgIC0gc3RhcnQgbm9kZSBmb3Igc3RyaW5naWZpbmcuIFVzdWFsbHkge0BsaW5rIFJvb3R9LlxuICogQHBhcmFtIHtidWlsZGVyfSBidWlsZGVyIC0gZnVuY3Rpb24gdG8gY29uY2F0ZW5hdGUgQ1NTIGZyb20gbm9kZeKAmXMgcGFydHNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGdlbmVyYXRlIHN0cmluZyBhbmQgc291cmNlIG1hcFxuICpcbiAqIEByZXR1cm4ge3ZvaWR9XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBzeW50YXhcbiAqIEBwcm9wZXJ0eSB7cGFyc2VyfSBwYXJzZSAgICAgICAgICAtIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIEFTVCBieSBzdHJpbmdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5naWZpZXJ9IHN0cmluZ2lmeSAtIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIHN0cmluZyBieSBBU1RcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHRvU3RyaW5nXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9ufSB0b1N0cmluZ1xuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIHBsdWdpbkZ1bmN0aW9uXG4gKiBAcGFyYW0ge1Jvb3R9IHJvb3QgICAgIC0gcGFyc2VkIGlucHV0IENTU1xuICogQHBhcmFtIHtSZXN1bHR9IHJlc3VsdCAtIHJlc3VsdCB0byBzZXQgd2FybmluZ3Mgb3IgY2hlY2sgb3RoZXIgcGx1Z2luc1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gUGx1Z2luXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9ufSBwb3N0Y3NzIC0gUG9zdENTUyBwbHVnaW4gZnVuY3Rpb25cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHByb2Nlc3NPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZnJvbSAgICAgICAgICAgICAtIHRoZSBwYXRoIG9mIHRoZSBDU1Mgc291cmNlIGZpbGUuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgYWx3YXlzIHNldCBgZnJvbWAsXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgaXQgaXMgdXNlZCBpbiBzb3VyY2UgbWFwXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRpb24gYW5kIHN5bnRheCBlcnJvciBtZXNzYWdlcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0byAgICAgICAgICAgICAgIC0gdGhlIHBhdGggd2hlcmUgeW914oCZbGwgcHV0IHRoZSBvdXRwdXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTIGZpbGUuIFlvdSBzaG91bGQgYWx3YXlzIHNldCBgdG9gXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGdlbmVyYXRlIGNvcnJlY3Qgc291cmNlIG1hcHMuXG4gKiBAcHJvcGVydHkge3BhcnNlcn0gcGFyc2VyICAgICAgICAgICAtIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIEFTVCBieSBzdHJpbmdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5naWZpZXJ9IHN0cmluZ2lmaWVyIC0gY2xhc3MgdG8gZ2VuZXJhdGUgc3RyaW5nIGJ5IEFTVFxuICogQHByb3BlcnR5IHtzeW50YXh9IHN5bnRheCAgICAgICAgICAgLSBvYmplY3Qgd2l0aCBgcGFyc2VgIGFuZCBgc3RyaW5naWZ5YFxuICogQHByb3BlcnR5IHtvYmplY3R9IG1hcCAgICAgICAgICAgICAgLSBzb3VyY2UgbWFwIG9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gbWFwLmlubGluZSAgICAgICAgICAgICAgICAgICAgLSBkb2VzIHNvdXJjZSBtYXAgc2hvdWxkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgZW1iZWRkZWQgaW4gdGhlIG91dHB1dFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyBhcyBhIGJhc2U2NC1lbmNvZGVkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudFxuICogQHByb3BlcnR5IHtzdHJpbmd8b2JqZWN0fGZhbHNlfGZ1bmN0aW9ufSBtYXAucHJldiAtIHNvdXJjZSBtYXAgY29udGVudFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gYSBwcmV2aW91c1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Npbmcgc3RlcFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3IgZXhhbXBsZSwgU2FzcykuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zdENTUyB3aWxsIHRyeSB0byBmaW5kXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgbWFwXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSwgc28geW91XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bGQgZGlzYWJsZSBpdCBieVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBmYWxzZWAgdmFsdWUuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IG1hcC5zb3VyY2VzQ29udGVudCAgICAgICAgICAgIC0gZG9lcyBQb3N0Q1NTIHNob3VsZCBzZXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgb3JpZ2luIGNvbnRlbnQgdG8gbWFwXG4gKiBAcHJvcGVydHkge3N0cmluZ3xmYWxzZX0gbWFwLmFubm90YXRpb24gICAgICAgICAgIC0gZG9lcyBQb3N0Q1NTIHNob3VsZCBzZXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uIGNvbW1lbnQgdG8gbWFwXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbWFwLmZyb20gICAgICAgICAgICAgICAgICAgICAgIC0gb3ZlcnJpZGUgYGZyb21gIGluIG1hcOKAmXNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgc291cmNlc2BcbiAqL1xuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _mapGenerator = require('./map-generator');\n\nvar _mapGenerator2 = _interopRequireDefault(_mapGenerator);\n\nvar _stringify2 = require('./stringify');\n\nvar _stringify3 = _interopRequireDefault(_stringify2);\n\nvar _warnOnce = require('./warn-once');\n\nvar _warnOnce2 = _interopRequireDefault(_warnOnce);\n\nvar _result = require('./result');\n\nvar _result2 = _interopRequireDefault(_result);\n\nvar _parse = require('./parse');\n\nvar _parse2 = _interopRequireDefault(_parse);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction isPromise(obj) {\n return (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && typeof obj.then === 'function';\n}\n\n/**\n * A Promise proxy for the result of PostCSS transformations.\n *\n * A `LazyResult` instance is returned by {@link Processor#process}.\n *\n * @example\n * const lazy = postcss([cssnext]).process(css);\n */\n\nvar LazyResult = function () {\n function LazyResult(processor, css, opts) {\n _classCallCheck(this, LazyResult);\n\n this.stringified = false;\n this.processed = false;\n\n var root = void 0;\n if ((typeof css === 'undefined' ? 'undefined' : _typeof(css)) === 'object' && css !== null && css.type === 'root') {\n root = css;\n } else if (css instanceof LazyResult || css instanceof _result2.default) {\n root = css.root;\n if (css.map) {\n if (typeof opts.map === 'undefined') opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n var parser = _parse2.default;\n if (opts.syntax) parser = opts.syntax.parse;\n if (opts.parser) parser = opts.parser;\n if (parser.parse) parser = parser.parse;\n\n try {\n root = parser(css, opts);\n } catch (error) {\n this.error = error;\n }\n }\n\n this.result = new _result2.default(processor, root, opts);\n }\n\n /**\n * Returns a {@link Processor} instance, which will be used\n * for CSS transformations.\n * @type {Processor}\n */\n\n\n /**\n * Processes input CSS through synchronous plugins\n * and calls {@link Result#warnings()}.\n *\n * @return {Warning[]} warnings from plugins\n */\n LazyResult.prototype.warnings = function warnings() {\n return this.sync().warnings();\n };\n\n /**\n * Alias for the {@link LazyResult#css} property.\n *\n * @example\n * lazy + '' === lazy.css;\n *\n * @return {string} output CSS\n */\n\n\n LazyResult.prototype.toString = function toString() {\n return this.css;\n };\n\n /**\n * Processes input CSS through synchronous and asynchronous plugins\n * and calls `onFulfilled` with a Result instance. If a plugin throws\n * an error, the `onRejected` callback will be executed.\n *\n * It implements standard Promise API.\n *\n * @param {onFulfilled} onFulfilled - callback will be executed\n * when all plugins will finish work\n * @param {onRejected} onRejected - callback will be executed on any error\n *\n * @return {Promise} Promise API to make queue\n *\n * @example\n * postcss([cssnext]).process(css, { from: cssPath }).then(result => {\n * console.log(result.css);\n * });\n */\n\n\n LazyResult.prototype.then = function then(onFulfilled, onRejected) {\n if (!('from' in this.opts)) {\n (0, _warnOnce2.default)('Without `from` option PostCSS could generate wrong ' + 'source map and will not find Browserslist config. ' + 'Set it to CSS file path or to `undefined` to prevent ' + 'this warning.');\n }\n return this.async().then(onFulfilled, onRejected);\n };\n\n /**\n * Processes input CSS through synchronous and asynchronous plugins\n * and calls onRejected for each error thrown in any plugin.\n *\n * It implements standard Promise API.\n *\n * @param {onRejected} onRejected - callback will be executed on any error\n *\n * @return {Promise} Promise API to make queue\n *\n * @example\n * postcss([cssnext]).process(css).then(result => {\n * console.log(result.css);\n * }).catch(error => {\n * console.error(error);\n * });\n */\n\n\n LazyResult.prototype.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n\n LazyResult.prototype.handleError = function handleError(error, plugin) {\n try {\n this.error = error;\n if (error.name === 'CssSyntaxError' && !error.plugin) {\n error.plugin = plugin.postcssPlugin;\n error.setMessage();\n } else if (plugin.postcssVersion) {\n var pluginName = plugin.postcssPlugin;\n var pluginVer = plugin.postcssVersion;\n var runtimeVer = this.result.processor.version;\n var a = pluginVer.split('.');\n var b = runtimeVer.split('.');\n\n if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n console.error('Unknown error from PostCSS plugin. ' + 'Your current PostCSS version ' + 'is ' + runtimeVer + ', but ' + pluginName + ' ' + 'uses ' + pluginVer + '. Perhaps this is ' + 'the source of the error below.');\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n };\n\n LazyResult.prototype.asyncTick = function asyncTick(resolve, reject) {\n var _this = this;\n\n if (this.plugin >= this.processor.plugins.length) {\n this.processed = true;\n return resolve();\n }\n\n try {\n var plugin = this.processor.plugins[this.plugin];\n var promise = this.run(plugin);\n this.plugin += 1;\n\n if (isPromise(promise)) {\n promise.then(function () {\n _this.asyncTick(resolve, reject);\n }).catch(function (error) {\n _this.handleError(error, plugin);\n _this.processed = true;\n reject(error);\n });\n } else {\n this.asyncTick(resolve, reject);\n }\n } catch (error) {\n this.processed = true;\n reject(error);\n }\n };\n\n LazyResult.prototype.async = function async() {\n var _this2 = this;\n\n if (this.processed) {\n return new Promise(function (resolve, reject) {\n if (_this2.error) {\n reject(_this2.error);\n } else {\n resolve(_this2.stringify());\n }\n });\n }\n if (this.processing) {\n return this.processing;\n }\n\n this.processing = new Promise(function (resolve, reject) {\n if (_this2.error) return reject(_this2.error);\n _this2.plugin = 0;\n _this2.asyncTick(resolve, reject);\n }).then(function () {\n _this2.processed = true;\n return _this2.stringify();\n });\n\n return this.processing;\n };\n\n LazyResult.prototype.sync = function sync() {\n if (this.processed) return this.result;\n this.processed = true;\n\n if (this.processing) {\n throw new Error('Use process(css).then(cb) to work with async plugins');\n }\n\n if (this.error) throw this.error;\n\n for (var _iterator = this.result.processor.plugins, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var plugin = _ref;\n\n var promise = this.run(plugin);\n if (isPromise(promise)) {\n throw new Error('Use process(css).then(cb) to work with async plugins');\n }\n }\n\n return this.result;\n };\n\n LazyResult.prototype.run = function run(plugin) {\n this.result.lastPlugin = plugin;\n\n try {\n return plugin(this.result.root, this.result);\n } catch (error) {\n this.handleError(error, plugin);\n throw error;\n }\n };\n\n LazyResult.prototype.stringify = function stringify() {\n if (this.stringified) return this.result;\n this.stringified = true;\n\n this.sync();\n\n var opts = this.result.opts;\n var str = _stringify3.default;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n\n var map = new _mapGenerator2.default(str, this.result.root, this.result.opts);\n var data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n\n return this.result;\n };\n\n _createClass(LazyResult, [{\n key: 'processor',\n get: function get() {\n return this.result.processor;\n }\n\n /**\n * Options from the {@link Processor#process} call.\n * @type {processOptions}\n */\n\n }, {\n key: 'opts',\n get: function get() {\n return this.result.opts;\n }\n\n /**\n * Processes input CSS through synchronous plugins, converts `Root`\n * to a CSS string and returns {@link Result#css}.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {string}\n * @see Result#css\n */\n\n }, {\n key: 'css',\n get: function get() {\n return this.stringify().css;\n }\n\n /**\n * An alias for the `css` property. Use it with syntaxes\n * that generate non-CSS output.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {string}\n * @see Result#content\n */\n\n }, {\n key: 'content',\n get: function get() {\n return this.stringify().content;\n }\n\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#map}.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {SourceMapGenerator}\n * @see Result#map\n */\n\n }, {\n key: 'map',\n get: function get() {\n return this.stringify().map;\n }\n\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#root}.\n *\n * This property will only work with synchronous plugins. If the processor\n * contains any asynchronous plugins it will throw an error.\n *\n * This is why this method is only for debug purpose,\n * you should always use {@link LazyResult#then}.\n *\n * @type {Root}\n * @see Result#root\n */\n\n }, {\n key: 'root',\n get: function get() {\n return this.sync().root;\n }\n\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#messages}.\n *\n * This property will only work with synchronous plugins. If the processor\n * contains any asynchronous plugins it will throw an error.\n *\n * This is why this method is only for debug purpose,\n * you should always use {@link LazyResult#then}.\n *\n * @type {Message[]}\n * @see Result#messages\n */\n\n }, {\n key: 'messages',\n get: function get() {\n return this.sync().messages;\n }\n }]);\n\n return LazyResult;\n}();\n\nexports.default = LazyResult;\n\n/**\n * @callback onFulfilled\n * @param {Result} result\n */\n\n/**\n * @callback onRejected\n * @param {Error} error\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxhenktcmVzdWx0LmVzNiJdLCJuYW1lcyI6WyJpc1Byb21pc2UiLCJvYmoiLCJ0aGVuIiwiTGF6eVJlc3VsdCIsInByb2Nlc3NvciIsImNzcyIsIm9wdHMiLCJzdHJpbmdpZmllZCIsInByb2Nlc3NlZCIsInJvb3QiLCJ0eXBlIiwiUmVzdWx0IiwibWFwIiwiaW5saW5lIiwicHJldiIsInBhcnNlciIsInBhcnNlIiwic3ludGF4IiwiZXJyb3IiLCJyZXN1bHQiLCJ3YXJuaW5ncyIsInN5bmMiLCJ0b1N0cmluZyIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsImFzeW5jIiwiY2F0Y2giLCJoYW5kbGVFcnJvciIsInBsdWdpbiIsIm5hbWUiLCJwb3N0Y3NzUGx1Z2luIiwic2V0TWVzc2FnZSIsInBvc3Rjc3NWZXJzaW9uIiwicGx1Z2luTmFtZSIsInBsdWdpblZlciIsInJ1bnRpbWVWZXIiLCJ2ZXJzaW9uIiwiYSIsInNwbGl0IiwiYiIsInBhcnNlSW50IiwiY29uc29sZSIsImVyciIsImFzeW5jVGljayIsInJlc29sdmUiLCJyZWplY3QiLCJwbHVnaW5zIiwibGVuZ3RoIiwicHJvbWlzZSIsInJ1biIsIlByb21pc2UiLCJzdHJpbmdpZnkiLCJwcm9jZXNzaW5nIiwiRXJyb3IiLCJsYXN0UGx1Z2luIiwic3RyIiwic3RyaW5naWZpZXIiLCJNYXBHZW5lcmF0b3IiLCJkYXRhIiwiZ2VuZXJhdGUiLCJjb250ZW50IiwibWVzc2FnZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7QUFFQSxTQUFTQSxTQUFULENBQW1CQyxHQUFuQixFQUF3QjtBQUNwQixXQUFPLFFBQU9BLEdBQVAseUNBQU9BLEdBQVAsT0FBZSxRQUFmLElBQTJCLE9BQU9BLElBQUlDLElBQVgsS0FBb0IsVUFBdEQ7QUFDSDs7QUFFRDs7Ozs7Ozs7O0lBUU1DLFU7QUFFRix3QkFBWUMsU0FBWixFQUF1QkMsR0FBdkIs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dCI6WyJpbXBvcnQgTWFwR2VuZXJhdG9yIGZyb20gJy4vbWFwLWdlbmVyYXRvcic7XG5pbXBvcnQgc3RyaW5naWZ5ICAgIGZyb20gJy4vc3RyaW5naWZ5JztcbmltcG9ydCB3YXJuT25jZSAgICAgZnJvbSAnLi93YXJuLW9uY2UnO1xuaW1wb3J0IFJlc3VsdCAgICAgICBmcm9tICcuL3Jlc3VsdCc7XG5pbXBvcnQgcGFyc2UgICAgICAgIGZyb20gJy4vcGFyc2UnO1xuXG5mdW5jdGlvbiBpc1Byb21pc2Uob2JqKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIHR5cGVvZiBvYmoudGhlbiA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuLyoqXG4gKiBBIFByb21pc2UgcHJveHkgZm9yIHRoZSByZXN1bHQgb2YgUG9zdENTUyB0cmFuc2Zvcm1hdGlvbnMuXG4gKlxuICogQSBgTGF6eVJlc3VsdGAgaW5zdGFuY2UgaXMgcmV0dXJuZWQgYnkge0BsaW5rIFByb2Nlc3NvciNwcm9jZXNzfS5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgbGF6eSA9IHBvc3Rjc3MoW2Nzc25leHRdKS5wcm9jZXNzKGNzcyk7XG4gKi9cbmNsYXNzIExhenlSZXN1bHQge1xuXG4gICAgY29uc3RydWN0b3IocHJvY2Vzc29yLCBjc3MsIG9wdHMpIHtcbiAgICAgICAgdGhpcy5zdHJpbmdpZmllZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnByb2Nlc3NlZCAgID0gZmFsc2U7XG5cbiAgICAgICAgbGV0IHJvb3Q7XG4gICAgICAgIGlmICggdHlwZW9mIGNzcyA9PT0gJ29iamVjdCcgJiYgY3NzICE9PSBudWxsICYmIGNzcy50eXBlID09PSAncm9vdCcgKSB7XG4gICAgICAgICAgICByb290ID0gY3NzO1xuICAgICAgICB9IGVsc2UgaWYgKCBjc3MgaW5zdGFuY2VvZiBMYXp5UmVzdWx0IHx8IGNzcyBpbnN0YW5jZW9mIFJlc3VsdCApIHtcbiAgICAgICAgICAgIHJvb3QgPSBjc3Mucm9vdDtcbiAgICAgICAgICAgIGlmICggY3NzLm1hcCApIHtcbiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBvcHRzLm1hcCA9PT0gJ3VuZGVmaW5lZCcgKSBvcHRzLm1hcCA9IHsgfTtcbiAgICAgICAgICAgICAgICBpZiAoICFvcHRzLm1hcC5pbmxpbmUgKSBvcHRzLm1hcC5pbmxpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBvcHRzLm1hcC5wcmV2ID0gY3NzLm1hcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBwYXJzZXIgPSBwYXJzZTtcbiAgICAgICAgICAgIGlmICggb3B0cy5zeW50YXggKSAgcGFyc2VyID0gb3B0cy5zeW50YXgucGFyc2U7XG4gICAgICAgICAgICBpZiAoIG9wdHMucGFyc2VyICkgIHBhcnNlciA9IG9wdHMucGFyc2VyO1xuICAgICAgICAgICAgaWYgKCBwYXJzZXIucGFyc2UgKSBwYXJzZXIgPSBwYXJzZXIucGFyc2U7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcm9vdCA9IHBhcnNlcihjc3MsIG9wdHMpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yID0gZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlc3VsdCA9IG5ldyBSZXN1bHQocHJvY2Vzc29yLCByb290LCBvcHRzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEge0BsaW5rIFByb2Nlc3Nvcn0gaW5zdGFuY2UsIHdoaWNoIHdpbGwgYmUgdXNlZFxuICAgICAqIGZvciBDU1MgdHJhbnNmb3JtYXRpb25zLlxuICAgICAqIEB0eXBlIHtQcm9jZXNzb3J9XG4gICAgICovXG4gICAgZ2V0IHByb2Nlc3NvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0LnByb2Nlc3NvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcHRpb25zIGZyb20gdGhlIHtAbGluayBQcm9jZXNzb3IjcHJvY2Vzc30gY2FsbC5cbiAgICAgKiBAdHlwZSB7cHJvY2Vzc09wdGlvbnN9XG4gICAgICovXG4gICAgZ2V0IG9wdHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc3VsdC5vcHRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBwbHVnaW5zLCBjb252ZXJ0cyBgUm9vdGBcbiAgICAgKiB0byBhIENTUyBzdHJpbmcgYW5kIHJldHVybnMge0BsaW5rIFJlc3VsdCNjc3N9LlxuICAgICAqXG4gICAgICogVGhpcyBwcm9wZXJ0eSB3aWxsIG9ubHkgd29yayB3aXRoIHN5bmNocm9ub3VzIHBsdWdpbnMuXG4gICAgICogSWYgdGhlIHByb2Nlc3NvciBjb250YWlucyBhbnkgYXN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICAgKiBpdCB3aWxsIHRocm93IGFuIGVycm9yLiBUaGlzIGlzIHdoeSB0aGlzIG1ldGhvZCBpcyBvbmx5XG4gICAgICogZm9yIGRlYnVnIHB1cnBvc2UsIHlvdSBzaG91bGQgYWx3YXlzIHVzZSB7QGxpbmsgTGF6eVJlc3VsdCN0aGVufS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICogQHNlZSBSZXN1bHQjY3NzXG4gICAgICovXG4gICAgZ2V0IGNzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5naWZ5KCkuY3NzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFuIGFsaWFzIGZvciB0aGUgYGNzc2AgcHJvcGVydHkuIFVzZSBpdCB3aXRoIHN5bnRheGVzXG4gICAgICogdGhhdCBnZW5lcmF0ZSBub24tQ1NTIG91dHB1dC5cbiAgICAgKlxuICAgICAqIFRoaXMgcHJvcGVydHkgd2lsbCBvbmx5IHdvcmsgd2l0aCBzeW5jaHJvbm91cyBwbHVnaW5zLlxuICAgICAqIElmIHRoZSBwcm9jZXNzb3IgY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAgICogaXQgd2lsbCB0aHJvdyBhbiBlcnJvci4gVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seVxuICAgICAqIGZvciBkZWJ1ZyBwdXJwb3NlLCB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqIEBzZWUgUmVzdWx0I2NvbnRlbnRcbiAgICAgKi9cbiAgICBnZXQgY29udGVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5naWZ5KCkuY29udGVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgcGx1Z2luc1xuICAgICAqIGFuZCByZXR1cm5zIHtAbGluayBSZXN1bHQjbWFwfS5cbiAgICAgKlxuICAgICAqIFRoaXMgcHJvcGVydHkgd2lsbCBvbmx5IHdvcmsgd2l0aCBzeW5jaHJvbm91cyBwbHVnaW5zLlxuICAgICAqIElmIHRoZSBwcm9jZXNzb3IgY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAgICogaXQgd2lsbCB0aHJvdyBhbiBlcnJvci4gVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seVxuICAgICAqIGZvciBkZWJ1ZyBwdXJwb3NlLCB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7U291cmNlTWFwR2VuZXJhdG9yfVxuICAgICAqIEBzZWUgUmVzdWx0I21hcFxuICAgICAqL1xuICAgIGdldCBtYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0cmluZ2lmeSgpLm1hcDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgcGx1Z2luc1xuICAgICAqIGFuZCByZXR1cm5zIHtAbGluayBSZXN1bHQjcm9vdH0uXG4gICAgICpcbiAgICAgKiBUaGlzIHByb3BlcnR5IHdpbGwgb25seSB3b3JrIHdpdGggc3luY2hyb25vdXMgcGx1Z2lucy4gSWYgdGhlIHByb2Nlc3NvclxuICAgICAqIGNvbnRhaW5zIGFueSBhc3luY2hyb25vdXMgcGx1Z2lucyBpdCB3aWxsIHRocm93IGFuIGVycm9yLlxuICAgICAqXG4gICAgICogVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seSBmb3IgZGVidWcgcHVycG9zZSxcbiAgICAgKiB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Um9vdH1cbiAgICAgKiBAc2VlIFJlc3VsdCNyb290XG4gICAgICovXG4gICAgZ2V0IHJvb3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmMoKS5yb290O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAgICogYW5kIHJldHVybnMge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30uXG4gICAgICpcbiAgICAgKiBUaGlzIHByb3BlcnR5IHdpbGwgb25seSB3b3JrIHdpdGggc3luY2hyb25vdXMgcGx1Z2lucy4gSWYgdGhlIHByb2Nlc3NvclxuICAgICAqIGNvbnRhaW5zIGFueSBhc3luY2hyb25vdXMgcGx1Z2lucyBpdCB3aWxsIHRocm93IGFuIGVycm9yLlxuICAgICAqXG4gICAgICogVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seSBmb3IgZGVidWcgcHVycG9zZSxcbiAgICAgKiB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7TWVzc2FnZVtdfVxuICAgICAqIEBzZWUgUmVzdWx0I21lc3NhZ2VzXG4gICAgICovXG4gICAgZ2V0IG1lc3NhZ2VzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zeW5jKCkubWVzc2FnZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICAgKiBhbmQgY2FsbHMge0BsaW5rIFJlc3VsdCN3YXJuaW5ncygpfS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1dhcm5pbmdbXX0gd2FybmluZ3MgZnJvbSBwbHVnaW5zXG4gICAgICovXG4gICAgd2FybmluZ3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmMoKS53YXJuaW5ncygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFsaWFzIGZvciB0aGUge0BsaW5rIExhenlSZXN1bHQjY3NzfSBwcm9wZXJ0eS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogbGF6eSArICcnID09PSBsYXp5LmNzcztcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gb3V0cHV0IENTU1xuICAgICAqL1xuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jc3M7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgcGx1Z2luc1xuICAgICAqIGFuZCBjYWxscyBgb25GdWxmaWxsZWRgIHdpdGggYSBSZXN1bHQgaW5zdGFuY2UuIElmIGEgcGx1Z2luIHRocm93c1xuICAgICAqIGFuIGVycm9yLCB0aGUgYG9uUmVqZWN0ZWRgIGNhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQuXG4gICAgICpcbiAgICAgKiBJdCBpbXBsZW1lbnRzIHN0YW5kYXJkIFByb21pc2UgQVBJLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvbkZ1bGZpbGxlZH0gb25GdWxmaWxsZWQgLSBjYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGFsbCBwbHVnaW5zIHdpbGwgZmluaXNoIHdvcmtcbiAgICAgKiBAcGFyYW0ge29uUmVqZWN0ZWR9ICBvblJlamVjdGVkICAtIGNhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQgb24gYW55IGVycm9yXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSBQcm9taXNlIEFQSSB0byBtYWtlIHF1ZXVlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHBvc3Rjc3MoW2Nzc25leHRdKS5wcm9jZXNzKGNzcywgeyBmcm9tOiBjc3NQYXRoIH0pLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKHJlc3VsdC5jc3MpO1xuICAgICAqIH0pO1xuICAgICAqL1xuICAgIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgICAgaWYgKCEoJ2Zyb20nIGluIHRoaXMub3B0cykpIHtcbiAgICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgICAgICdXaXRob3V0IGBmcm9tYCBvcHRpb24gUG9zdENTUyBjb3VsZCBnZW5lcmF0ZSB3cm9uZyAnICtcbiAgICAgICAgICAgICAgICAnc291cmNlIG1hcCBhbmQgd2lsbCBub3QgZmluZCBCcm93c2Vyc2xpc3QgY29uZmlnLiAnICtcbiAgICAgICAgICAgICAgICAnU2V0IGl0IHRvIENTUyBmaWxlIHBhdGggb3IgdG8gYHVuZGVmaW5lZGAgdG8gcHJldmVudCAnICtcbiAgICAgICAgICAgICAgICAndGhpcyB3YXJuaW5nLidcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuYXN5bmMoKS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAgICogYW5kIGNhbGxzIG9uUmVqZWN0ZWQgZm9yIGVhY2ggZXJyb3IgdGhyb3duIGluIGFueSBwbHVnaW4uXG4gICAgICpcbiAgICAgKiBJdCBpbXBsZW1lbnRzIHN0YW5kYXJkIFByb21pc2UgQVBJLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvblJlamVjdGVkfSBvblJlamVjdGVkIC0gY2FsbGJhY2sgd2lsbCBiZSBleGVjdXRlZCBvbiBhbnkgZXJyb3JcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9IFByb21pc2UgQVBJIHRvIG1ha2UgcXVldWVcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcG9zdGNzcyhbY3NzbmV4dF0pLnByb2Nlc3MoY3NzKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICogICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKTtcbiAgICAgKiB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICogICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgKiB9KTtcbiAgICAgKi9cbiAgICBjYXRjaChvblJlamVjdGVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFzeW5jKCkuY2F0Y2gob25SZWplY3RlZCk7XG4gICAgfVxuXG4gICAgaGFuZGxlRXJyb3IoZXJyb3IsIHBsdWdpbikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yO1xuICAgICAgICAgICAgaWYgKCBlcnJvci5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InICYmICFlcnJvci5wbHVnaW4gKSB7XG4gICAgICAgICAgICAgICAgZXJyb3IucGx1Z2luID0gcGx1Z2luLnBvc3Rjc3NQbHVnaW47XG4gICAgICAgICAgICAgICAgZXJyb3Iuc2V0TWVzc2FnZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggcGx1Z2luLnBvc3Rjc3NWZXJzaW9uICkge1xuICAgICAgICAgICAgICAgIGxldCBwbHVnaW5OYW1lID0gcGx1Z2luLnBvc3Rjc3NQbHVnaW47XG4gICAgICAgICAgICAgICAgbGV0IHBsdWdpblZlciAgPSBwbHVnaW4ucG9zdGNzc1ZlcnNpb247XG4gICAgICAgICAgICAgICAgbGV0IHJ1bnRpbWVWZXIgPSB0aGlzLnJlc3VsdC5wcm9jZXNzb3IudmVyc2lvbjtcbiAgICAgICAgICAgICAgICBsZXQgYSA9IHBsdWdpblZlci5zcGxpdCgnLicpO1xuICAgICAgICAgICAgICAgIGxldCBiID0gcnVudGltZVZlci5zcGxpdCgnLicpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCBhWzBdICE9PSBiWzBdIHx8IHBhcnNlSW50KGFbMV0pID4gcGFyc2VJbnQoYlsxXSkgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAnVW5rbm93biBlcnJvciBmcm9tIFBvc3RDU1MgcGx1Z2luLiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdZb3VyIGN1cnJlbnQgUG9zdENTUyB2ZXJzaW9uICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2lzICcgKyBydW50aW1lVmVyICsgJywgYnV0ICcgKyBwbHVnaW5OYW1lICsgJyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICd1c2VzICcgKyBwbHVnaW5WZXIgKyAnLiBQZXJoYXBzIHRoaXMgaXMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAndGhlIHNvdXJjZSBvZiB0aGUgZXJyb3IgYmVsb3cuJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmICggY29uc29sZSAmJiBjb25zb2xlLmVycm9yICkgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmNUaWNrKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBpZiAoIHRoaXMucGx1Z2luID49IHRoaXMucHJvY2Vzc29yLnBsdWdpbnMubGVuZ3RoICkge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgcGx1Z2luICA9IHRoaXMucHJvY2Vzc29yLnBsdWdpbnNbdGhpcy5wbHVnaW5dO1xuICAgICAgICAgICAgbGV0IHByb21pc2UgPSB0aGlzLnJ1bihwbHVnaW4pO1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4gKz0gMTtcblxuICAgICAgICAgICAgaWYgKCBpc1Byb21pc2UocHJvbWlzZSkgKSB7XG4gICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXN5bmNUaWNrKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvciwgcGx1Z2luKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFzeW5jVGljayhyZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NlZCA9IHRydWU7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMoKSB7XG4gICAgICAgIGlmICggdGhpcy5wcm9jZXNzZWQgKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIHRoaXMuZXJyb3IgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdCh0aGlzLmVycm9yKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRoaXMuc3RyaW5naWZ5KCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICggdGhpcy5wcm9jZXNzaW5nICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc2luZztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJvY2Vzc2luZyA9IG5ldyBQcm9taXNlKCAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAoIHRoaXMuZXJyb3IgKSByZXR1cm4gcmVqZWN0KHRoaXMuZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4gPSAwO1xuICAgICAgICAgICAgdGhpcy5hc3luY1RpY2socmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSkudGhlbiggKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5naWZ5KCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3Npbmc7XG4gICAgfVxuXG4gICAgc3luYygpIHtcbiAgICAgICAgaWYgKCB0aGlzLnByb2Nlc3NlZCApIHJldHVybiB0aGlzLnJlc3VsdDtcbiAgICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICggdGhpcy5wcm9jZXNzaW5nICkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICdVc2UgcHJvY2Vzcyhjc3MpLnRoZW4oY2IpIHRvIHdvcmsgd2l0aCBhc3luYyBwbHVnaW5zJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHRoaXMuZXJyb3IgKSB0aHJvdyB0aGlzLmVycm9yO1xuXG4gICAgICAgIGZvciAoIGxldCBwbHVnaW4gb2YgdGhpcy5yZXN1bHQucHJvY2Vzc29yLnBsdWdpbnMgKSB7XG4gICAgICAgICAgICBsZXQgcHJvbWlzZSA9IHRoaXMucnVuKHBsdWdpbik7XG4gICAgICAgICAgICBpZiAoIGlzUHJvbWlzZShwcm9taXNlKSApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICdVc2UgcHJvY2Vzcyhjc3MpLnRoZW4oY2IpIHRvIHdvcmsgd2l0aCBhc3luYyBwbHVnaW5zJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHQ7XG4gICAgfVxuXG4gICAgcnVuKHBsdWdpbikge1xuICAgICAgICB0aGlzLnJlc3VsdC5sYXN0UGx1Z2luID0gcGx1Z2luO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gcGx1Z2luKHRoaXMucmVzdWx0LnJvb3QsIHRoaXMucmVzdWx0KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IsIHBsdWdpbik7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0cmluZ2lmeSgpIHtcbiAgICAgICAgaWYgKCB0aGlzLnN0cmluZ2lmaWVkICkgcmV0dXJuIHRoaXMucmVzdWx0O1xuICAgICAgICB0aGlzLnN0cmluZ2lmaWVkID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLnN5bmMoKTtcblxuICAgICAgICBsZXQgb3B0cyA9IHRoaXMucmVzdWx0Lm9wdHM7XG4gICAgICAgIGxldCBzdHIgID0gc3RyaW5naWZ5O1xuICAgICAgICBpZiAoIG9wdHMuc3ludGF4ICkgICAgICBzdHIgPSBvcHRzLnN5bnRheC5zdHJpbmdpZnk7XG4gICAgICAgIGlmICggb3B0cy5zdHJpbmdpZmllciApIHN0ciA9IG9wdHMuc3RyaW5naWZpZXI7XG4gICAgICAgIGlmICggc3RyLnN0cmluZ2lmeSApICAgIHN0ciA9IHN0ci5zdHJpbmdpZnk7XG5cbiAgICAgICAgbGV0IG1hcCAgPSBuZXcgTWFwR2VuZXJhdG9yKHN0ciwgdGhpcy5yZXN1bHQucm9vdCwgdGhpcy5yZXN1bHQub3B0cyk7XG4gICAgICAgIGxldCBkYXRhID0gbWFwLmdlbmVyYXRlKCk7XG4gICAgICAgIHRoaXMucmVzdWx0LmNzcyA9IGRhdGFbMF07XG4gICAgICAgIHRoaXMucmVzdWx0Lm1hcCA9IGRhdGFbMV07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0O1xuICAgIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBMYXp5UmVzdWx0O1xuXG4vKipcbiAqIEBjYWxsYmFjayBvbkZ1bGZpbGxlZFxuICogQHBhcmFtIHtSZXN1bHR9IHJlc3VsdFxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIG9uUmVqZWN0ZWRcbiAqIEBwYXJhbSB7RXJyb3J9IGVycm9yXG4gKi9cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n/**\n * Contains helpers for safely splitting lists of CSS values,\n * preserving parentheses and quotes.\n *\n * @example\n * const list = postcss.list;\n *\n * @namespace list\n */\nvar list = {\n split: function split(string, separators, last) {\n var array = [];\n var current = '';\n var split = false;\n\n var func = 0;\n var quote = false;\n var escape = false;\n\n for (var i = 0; i < string.length; i++) {\n var letter = string[i];\n\n if (quote) {\n if (escape) {\n escape = false;\n } else if (letter === '\\\\') {\n escape = true;\n } else if (letter === quote) {\n quote = false;\n }\n } else if (letter === '\"' || letter === '\\'') {\n quote = letter;\n } else if (letter === '(') {\n func += 1;\n } else if (letter === ')') {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.indexOf(letter) !== -1) split = true;\n }\n\n if (split) {\n if (current !== '') array.push(current.trim());\n current = '';\n split = false;\n } else {\n current += letter;\n }\n }\n\n if (last || current !== '') array.push(current.trim());\n return array;\n },\n\n\n /**\n * Safely splits space-separated values (such as those for `background`,\n * `border-radius`, and other shorthand properties).\n *\n * @param {string} string - space-separated values\n *\n * @return {string[]} split values\n *\n * @example\n * postcss.list.space('1px calc(10% + 1px)') //=> ['1px', 'calc(10% + 1px)']\n */\n space: function space(string) {\n var spaces = [' ', '\\n', '\\t'];\n return list.split(string, spaces);\n },\n\n\n /**\n * Safely splits comma-separated values (such as those for `transition-*`\n * and `background` properties).\n *\n * @param {string} string - comma-separated values\n *\n * @return {string[]} split values\n *\n * @example\n * postcss.list.comma('black, linear-gradient(white, black)')\n * //=> ['black', 'linear-gradient(white, black)']\n */\n comma: function comma(string) {\n var comma = ',';\n return list.split(string, [comma], true);\n }\n};\n\nexports.default = list;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpc3QuZXM2Il0sIm5hbWVzIjpbImxpc3QiLCJzcGxpdCIsInN0cmluZyIsInNlcGFyYXRvcnMiLCJsYXN0IiwiYXJyYXkiLCJjdXJyZW50IiwiZnVuYyIsInF1b3RlIiwiZXNjYXBlIiwiaSIsImxlbmd0aCIsImxldHRlciIsImluZGV4T2YiLCJwdXNoIiwidHJpbSIsInNwYWNlIiwic3BhY2VzIiwiY29tbWEiXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7Ozs7QUFTQSxJQUFJQSxPQUFPO0FBRVBDLFNBRk8saUJBRURDLE1BRkMsRUFFT0MsVUFGUCxFQUVtQkMsSUFGbkIsRUFFeUI7QUFDNUIsWUFBSUMsUUFBVSxFQUFkO0FBQ0EsWUFBSUMsVUFBVSxFQUFkO0FBQ0EsWUFBSUwsUUFBVSxLQUFkOztBQUVBLFlBQUlNLE9BQVUsQ0FBZDtBQUNBLFlBQUlDLFFBQVUsS0FBZDtBQUNBLFlBQUlDLFNBQVUsS0FBZDs7QUFFQSxhQUFNLElBQUlDLElBQUksQ0FBZCxFQUFpQkEsSUFBSVIsT0FBT1MsTUFBNUIsRUFBb0NELEdBQXBDLEVBQTBDO0FBQ3RDLGdCQUFJRSxTQUFTVixPQUFPUSxDQUFQLENBQWI7O0FBRUEsZ0JBQUtGLEtBQUwsRUFBYTtBQUNULG9CQUFLQyxNQUFMLEVBQWM7QUFDVkEsNkJBQVMsS0FBVDtBQUNILGlCQUZELE1BRU8sSUFBS0csV0FBVyxJQUFoQixFQUF1QjtBQUMxQkgsNkJBQVMsSUFBVDtBQUNILGlCQUZNLE1BRUEsSUFBS0csV0FBV0osS0FBaEIsRUFBd0I7QUFDM0JBLDRCQUFRLEtBQVI7QUFDSDtBQUNKLGFBUkQsTUFRTyxJQUFLSSxXQUFXLEdBQVgsSUFBa0JBLFdBQVcsSUFBbEMsRUFBeUM7QUFDNUNKLHdCQUFRSSxNQUFSO0FBQ0gsYUFGTSxNQUVBLElBQUtBLFdBQVcsR0FBaEIsRUFBc0I7QUFDekJMLHdCQUFRLENBQVI7QUFDSCxhQUZNLE1BRUEsSUFBS0ssV0FBVyxHQUFoQixFQUFzQjtBQUN6QixvQkFBS0wsT0FBTyxDQUFaLEVBQWdCQSxRQUFRLENBQVI7QUFDbkIsYUFGTSxNQUVBLElBQUtBLFNBQVMsQ0FBZCxFQUFrQjtBQUNyQixvQkFBS0osV0FBV1UsT0FBWCxDQUFtQkQsTUFBbkIsTUFBK0IsQ0FBQyxDQUFyQyxFQUF5Q1gsUUFBUSxJQUFSO0FBQzVDOztBQUVELGdCQUFLQSxLQUFMLEVBQWE7QUFDVCxvQkFBS0ssWUFBWSxFQUFqQixFQUFzQkQsTUFBTVMsSUFBTixDQUFXUixRQUFRUyxJQUFSLEVBQVg7QUFDdEJULDBCQUFVLEVBQVY7QUFDQUwsd0JBQVUsS0FBVjtBQUNILGFBSkQsTUFJTztBQUNISywyQkFBV00sTUFBWDtBQUNIO0FBQ0o7O0FBRUQsWUFBS1IsUUFBUUUsWUFBWSxFQUF6QixFQUE4QkQsTUFBTVMsSUFBTixDQUFXUixRQUFRUyxJQUFSLEVBQVg7QUFDOUIsZUFBT1YsS0FBUDtBQUNILEtBM0NNOzs7QUE2Q1A7Ozs7Ozs7Ozs7O0FBV0FXLFNBeERPLGlCQXdERGQsTUF4REMsRUF3RE87QUFDVixZQUFJZSxTQUFTLENBQUMsR0FBRCxFQUFNLElBQU4sRUFBWSxJQUFaLENBQWI7QUFDQSxlQUFPakIsS0FBS0MsS0FBTCxDQUFXQyxNQUFYLEVBQW1CZSxNQUFuQixDQUFQO0FBQ0gsS0EzRE07OztBQTZEUDs7Ozs7Ozs7Ozs7O0FBWUFDLFNBekVPLGlCQXlFRGhCLE1BekVDLEVBeUVPO0FBQ1YsWUFBSWdCLFFBQVEsR0FBWjtBQUNBLGVBQU9sQixLQUFLQyxLQUFMLENBQVdDLE1BQVgsRUFBbUIsQ0FBQ2dCLEtBQUQsQ0FBbkIsRUFBNEIsSUFBNUIsQ0FBUDtBQUNIO0FBNUVNLENBQVg7O2tCQWdGZWxCLEkiLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29udGFpbnMgaGVscGVycyBmb3Igc2FmZWx5IHNwbGl0dGluZyBsaXN0cyBvZiBDU1MgdmFsdWVzLFxuICogcHJlc2VydmluZyBwYXJlbnRoZXNlcyBhbmQgcXVvdGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBsaXN0ID0gcG9zdGNzcy5saXN0O1xuICpcbiAqIEBuYW1lc3BhY2UgbGlzdFxuICovXG5sZXQgbGlzdCA9IHtcblxuICAgIHNwbGl0KHN0cmluZywgc2VwYXJhdG9ycywgbGFzdCkge1xuICAgICAgICBsZXQgYXJyYXkgICA9IFtdO1xuICAgICAgICBsZXQgY3VycmVudCA9ICcnO1xuICAgICAgICBsZXQgc3BsaXQgICA9IGZhbHNlO1xuXG4gICAgICAgIGxldCBmdW5jICAgID0gMDtcbiAgICAgICAgbGV0IHF1b3RlICAgPSBmYWxzZTtcbiAgICAgICAgbGV0IGVzY2FwZSAgPSBmYWxzZTtcblxuICAgICAgICBmb3IgKCBsZXQgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyBpKysgKSB7XG4gICAgICAgICAgICBsZXQgbGV0dGVyID0gc3RyaW5nW2ldO1xuXG4gICAgICAgICAgICBpZiAoIHF1b3RlICkge1xuICAgICAgICAgICAgICAgIGlmICggZXNjYXBlICkge1xuICAgICAgICAgICAgICAgICAgICBlc2NhcGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBsZXR0ZXIgPT09ICdcXFxcJyApIHtcbiAgICAgICAgICAgICAgICAgICAgZXNjYXBlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBsZXR0ZXIgPT09IHF1b3RlICkge1xuICAgICAgICAgICAgICAgICAgICBxdW90ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIGxldHRlciA9PT0gJ1wiJyB8fCBsZXR0ZXIgPT09ICdcXCcnICkge1xuICAgICAgICAgICAgICAgIHF1b3RlID0gbGV0dGVyO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggbGV0dGVyID09PSAnKCcgKSB7XG4gICAgICAgICAgICAgICAgZnVuYyArPSAxO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggbGV0dGVyID09PSAnKScgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBmdW5jID4gMCApIGZ1bmMgLT0gMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIGZ1bmMgPT09IDAgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBzZXBhcmF0b3JzLmluZGV4T2YobGV0dGVyKSAhPT0gLTEgKSBzcGxpdCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICggc3BsaXQgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBjdXJyZW50ICE9PSAnJyApIGFycmF5LnB1c2goY3VycmVudC50cmltKCkpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSAnJztcbiAgICAgICAgICAgICAgICBzcGxpdCAgID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGN1cnJlbnQgKz0gbGV0dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBsYXN0IHx8IGN1cnJlbnQgIT09ICcnICkgYXJyYXkucHVzaChjdXJyZW50LnRyaW0oKSk7XG4gICAgICAgIHJldHVybiBhcnJheTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogU2FmZWx5IHNwbGl0cyBzcGFjZS1zZXBhcmF0ZWQgdmFsdWVzIChzdWNoIGFzIHRob3NlIGZvciBgYmFja2dyb3VuZGAsXG4gICAgICogYGJvcmRlci1yYWRpdXNgLCBhbmQgb3RoZXIgc2hvcnRoYW5kIHByb3BlcnRpZXMpLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyAtIHNwYWNlLXNlcGFyYXRlZCB2YWx1ZXNcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBzcGxpdCB2YWx1ZXNcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcG9zdGNzcy5saXN0LnNwYWNlKCcxcHggY2FsYygxMCUgKyAxcHgpJykgLy89PiBbJzFweCcsICdjYWxjKDEwJSArIDFweCknXVxuICAgICAqL1xuICAgIHNwYWNlKHN0cmluZykge1xuICAgICAgICBsZXQgc3BhY2VzID0gWycgJywgJ1xcbicsICdcXHQnXTtcbiAgICAgICAgcmV0dXJuIGxpc3Quc3BsaXQoc3RyaW5nLCBzcGFjZXMpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBTYWZlbHkgc3BsaXRzIGNvbW1hLXNlcGFyYXRlZCB2YWx1ZXMgKHN1Y2ggYXMgdGhvc2UgZm9yIGB0cmFuc2l0aW9uLSpgXG4gICAgICogYW5kIGBiYWNrZ3JvdW5kYCBwcm9wZXJ0aWVzKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgLSBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gc3BsaXQgdmFsdWVzXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHBvc3Rjc3MubGlzdC5jb21tYSgnYmxhY2ssIGxpbmVhci1ncmFkaWVudCh3aGl0ZSwgYmxhY2spJylcbiAgICAgKiAvLz0+IFsnYmxhY2snLCAnbGluZWFyLWdyYWRpZW50KHdoaXRlLCBibGFjayknXVxuICAgICAqL1xuICAgIGNvbW1hKHN0cmluZykge1xuICAgICAgICBsZXQgY29tbWEgPSAnLCc7XG4gICAgICAgIHJldHVybiBsaXN0LnNwbGl0KHN0cmluZywgW2NvbW1hXSwgdHJ1ZSk7XG4gICAgfVxuXG59O1xuXG5leHBvcnQgZGVmYXVsdCBsaXN0O1xuIl19\n","/**********************\n Velocity UI Pack\n**********************/\n\n/* VelocityJS.org UI Pack (5.0.4). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License. Portions copyright Daniel Eden, Christian Pucci. */\n\n;(function (factory) {\n /* CommonJS module. */\n if (typeof require === \"function\" && typeof exports === \"object\" ) {\n module.exports = factory();\n /* AMD module. */\n } else if (typeof define === \"function\" && define.amd) {\n define([ \"velocity\" ], factory);\n /* Browser globals. */\n } else {\n factory();\n }\n}(function() {\nreturn function (global, window, document, undefined) {\n\n /*************\n Checks\n *************/\n\n if (!global.Velocity || !global.Velocity.Utilities) {\n window.console && console.log(\"Velocity UI Pack: Velocity must be loaded first. Aborting.\");\n return;\n } else {\n var Velocity = global.Velocity,\n $ = Velocity.Utilities;\n }\n\n var velocityVersion = Velocity.version,\n requiredVersion = { major: 1, minor: 1, patch: 0 };\n\n function greaterSemver (primary, secondary) {\n var versionInts = [];\n\n if (!primary || !secondary) { return false; }\n\n $.each([ primary, secondary ], function(i, versionObject) {\n var versionIntsComponents = [];\n\n $.each(versionObject, function(component, value) {\n while (value.toString().length < 5) {\n value = \"0\" + value;\n }\n versionIntsComponents.push(value);\n });\n\n versionInts.push(versionIntsComponents.join(\"\"))\n });\n\n return (parseFloat(versionInts[0]) > parseFloat(versionInts[1]));\n }\n\n if (greaterSemver(requiredVersion, velocityVersion)){\n var abortError = \"Velocity UI Pack: You need to update Velocity (jquery.velocity.js) to a newer version. Visit http://github.com/julianshapiro/velocity.\";\n alert(abortError);\n throw new Error(abortError);\n }\n\n /************************\n Effect Registration\n ************************/\n\n /* Note: RegisterUI is a legacy name. */\n Velocity.RegisterEffect = Velocity.RegisterUI = function (effectName, properties) {\n /* Animate the expansion/contraction of the elements' parent's height for In/Out effects. */\n function animateParentHeight (elements, direction, totalDuration, stagger) {\n var totalHeightDelta = 0,\n parentNode;\n\n /* Sum the total height (including padding and margin) of all targeted elements. */\n $.each(elements.nodeType ? [ elements ] : elements, function(i, element) {\n if (stagger) {\n /* Increase the totalDuration by the successive delay amounts produced by the stagger option. */\n totalDuration += i * stagger;\n }\n\n parentNode = element.parentNode;\n\n $.each([ \"height\", \"paddingTop\", \"paddingBottom\", \"marginTop\", \"marginBottom\"], function(i, property) {\n totalHeightDelta += parseFloat(Velocity.CSS.getPropertyValue(element, property));\n });\n });\n\n /* Animate the parent element's height adjustment (with a varying duration multiplier for aesthetic benefits). */\n Velocity.animate(\n parentNode,\n { height: (direction === \"In\" ? \"+\" : \"-\") + \"=\" + totalHeightDelta },\n { queue: false, easing: \"ease-in-out\", duration: totalDuration * (direction === \"In\" ? 0.6 : 1) }\n );\n }\n\n /* Register a custom redirect for each effect. */\n Velocity.Redirects[effectName] = function (element, redirectOptions, elementsIndex, elementsSize, elements, promiseData) {\n var finalElement = (elementsIndex === elementsSize - 1);\n\n if (typeof properties.defaultDuration === \"function\") {\n properties.defaultDuration = properties.defaultDuration.call(elements, elements);\n } else {\n properties.defaultDuration = parseFloat(properties.defaultDuration);\n }\n\n /* Iterate through each effect's call array. */\n for (var callIndex = 0; callIndex < properties.calls.length; callIndex++) {\n var call = properties.calls[callIndex],\n propertyMap = call[0],\n redirectDuration = (redirectOptions.duration || properties.defaultDuration || 1000),\n durationPercentage = call[1],\n callOptions = call[2] || {},\n opts = {};\n\n /* Assign the whitelisted per-call options. */\n opts.duration = redirectDuration * (durationPercentage || 1);\n opts.queue = redirectOptions.queue || \"\";\n opts.easing = callOptions.easing || \"ease\";\n opts.delay = parseFloat(callOptions.delay) || 0;\n opts._cacheValues = callOptions._cacheValues || true;\n\n /* Special processing for the first effect call. */\n if (callIndex === 0) {\n /* If a delay was passed into the redirect, combine it with the first call's delay. */\n opts.delay += (parseFloat(redirectOptions.delay) || 0);\n\n if (elementsIndex === 0) {\n opts.begin = function() {\n /* Only trigger a begin callback on the first effect call with the first element in the set. */\n redirectOptions.begin && redirectOptions.begin.call(elements, elements);\n\n var direction = effectName.match(/(In|Out)$/);\n\n /* Make \"in\" transitioning elements invisible immediately so that there's no FOUC between now\n and the first RAF tick. */\n if ((direction && direction[0] === \"In\") && propertyMap.opacity !== undefined) {\n $.each(elements.nodeType ? [ elements ] : elements, function(i, element) {\n Velocity.CSS.setPropertyValue(element, \"opacity\", 0);\n });\n }\n\n /* Only trigger animateParentHeight() if we're using an In/Out transition. */\n if (redirectOptions.animateParentHeight && direction) {\n animateParentHeight(elements, direction[0], redirectDuration + opts.delay, redirectOptions.stagger);\n }\n }\n }\n\n /* If the user isn't overriding the display option, default to \"auto\" for \"In\"-suffixed transitions. */\n if (redirectOptions.display !== null) {\n if (redirectOptions.display !== undefined && redirectOptions.display !== \"none\") {\n opts.display = redirectOptions.display;\n } else if (/In$/.test(effectName)) {\n /* Inline elements cannot be subjected to transforms, so we switch them to inline-block. */\n var defaultDisplay = Velocity.CSS.Values.getDisplayType(element);\n opts.display = (defaultDisplay === \"inline\") ? \"inline-block\" : defaultDisplay;\n }\n }\n\n if (redirectOptions.visibility && redirectOptions.visibility !== \"hidden\") {\n opts.visibility = redirectOptions.visibility;\n }\n }\n\n /* Special processing for the last effect call. */\n if (callIndex === properties.calls.length - 1) {\n /* Append promise resolving onto the user's redirect callback. */\n function injectFinalCallbacks () {\n if ((redirectOptions.display === undefined || redirectOptions.display === \"none\") && /Out$/.test(effectName)) {\n $.each(elements.nodeType ? [ elements ] : elements, function(i, element) {\n Velocity.CSS.setPropertyValue(element, \"display\", \"none\");\n });\n }\n\n redirectOptions.complete && redirectOptions.complete.call(elements, elements);\n\n if (promiseData) {\n promiseData.resolver(elements || element);\n }\n }\n\n opts.complete = function() {\n if (properties.reset) {\n for (var resetProperty in properties.reset) {\n var resetValue = properties.reset[resetProperty];\n\n /* Format each non-array value in the reset property map to [ value, value ] so that changes apply\n immediately and DOM querying is avoided (via forcefeeding). */\n /* Note: Don't forcefeed hooks, otherwise their hook roots will be defaulted to their null values. */\n if (Velocity.CSS.Hooks.registered[resetProperty] === undefined && (typeof resetValue === \"string\" || typeof resetValue === \"number\")) {\n properties.reset[resetProperty] = [ properties.reset[resetProperty], properties.reset[resetProperty] ];\n }\n }\n\n /* So that the reset values are applied instantly upon the next rAF tick, use a zero duration and parallel queueing. */\n var resetOptions = { duration: 0, queue: false };\n\n /* Since the reset option uses up the complete callback, we trigger the user's complete callback at the end of ours. */\n if (finalElement) {\n resetOptions.complete = injectFinalCallbacks;\n }\n\n Velocity.animate(element, properties.reset, resetOptions);\n /* Only trigger the user's complete callback on the last effect call with the last element in the set. */\n } else if (finalElement) {\n injectFinalCallbacks();\n }\n };\n\n if (redirectOptions.visibility === \"hidden\") {\n opts.visibility = redirectOptions.visibility;\n }\n }\n\n Velocity.animate(element, propertyMap, opts);\n }\n };\n\n /* Return the Velocity object so that RegisterUI calls can be chained. */\n return Velocity;\n };\n\n /*********************\n Packaged Effects\n *********************/\n\n /* Externalize the packagedEffects data so that they can optionally be modified and re-registered. */\n /* Support: <=IE8: Callouts will have no effect, and transitions will simply fade in/out. IE9/Android 2.3: Most effects are fully supported, the rest fade in/out. All other browsers: full support. */\n Velocity.RegisterEffect.packagedEffects =\n {\n /* Animate.css */\n \"callout.bounce\": {\n defaultDuration: 550,\n calls: [\n [ { translateY: -30 }, 0.25 ],\n [ { translateY: 0 }, 0.125 ],\n [ { translateY: -15 }, 0.125 ],\n [ { translateY: 0 }, 0.25 ]\n ]\n },\n /* Animate.css */\n \"callout.shake\": {\n defaultDuration: 800,\n calls: [\n [ { translateX: -11 }, 0.125 ],\n [ { translateX: 11 }, 0.125 ],\n [ { translateX: -11 }, 0.125 ],\n [ { translateX: 11 }, 0.125 ],\n [ { translateX: -11 }, 0.125 ],\n [ { translateX: 11 }, 0.125 ],\n [ { translateX: -11 }, 0.125 ],\n [ { translateX: 0 }, 0.125 ]\n ]\n },\n /* Animate.css */\n \"callout.flash\": {\n defaultDuration: 1100,\n calls: [\n [ { opacity: [ 0, \"easeInOutQuad\", 1 ] }, 0.25 ],\n [ { opacity: [ 1, \"easeInOutQuad\" ] }, 0.25 ],\n [ { opacity: [ 0, \"easeInOutQuad\" ] }, 0.25 ],\n [ { opacity: [ 1, \"easeInOutQuad\" ] }, 0.25 ]\n ]\n },\n /* Animate.css */\n \"callout.pulse\": {\n defaultDuration: 825,\n calls: [\n [ { scaleX: 1.1, scaleY: 1.1 }, 0.50, { easing: \"easeInExpo\" } ],\n [ { scaleX: 1, scaleY: 1 }, 0.50 ]\n ]\n },\n /* Animate.css */\n \"callout.swing\": {\n defaultDuration: 950,\n calls: [\n [ { rotateZ: 15 }, 0.20 ],\n [ { rotateZ: -10 }, 0.20 ],\n [ { rotateZ: 5 }, 0.20 ],\n [ { rotateZ: -5 }, 0.20 ],\n [ { rotateZ: 0 }, 0.20 ]\n ]\n },\n /* Animate.css */\n \"callout.tada\": {\n defaultDuration: 1000,\n calls: [\n [ { scaleX: 0.9, scaleY: 0.9, rotateZ: -3 }, 0.10 ],\n [ { scaleX: 1.1, scaleY: 1.1, rotateZ: 3 }, 0.10 ],\n [ { scaleX: 1.1, scaleY: 1.1, rotateZ: -3 }, 0.10 ],\n [ \"reverse\", 0.125 ],\n [ \"reverse\", 0.125 ],\n [ \"reverse\", 0.125 ],\n [ \"reverse\", 0.125 ],\n [ \"reverse\", 0.125 ],\n [ { scaleX: 1, scaleY: 1, rotateZ: 0 }, 0.20 ]\n ]\n },\n \"transition.fadeIn\": {\n defaultDuration: 500,\n calls: [\n [ { opacity: [ 1, 0 ] } ]\n ]\n },\n \"transition.fadeOut\": {\n defaultDuration: 500,\n calls: [\n [ { opacity: [ 0, 1 ] } ]\n ]\n },\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipXIn\": {\n defaultDuration: 700,\n calls: [\n [ { opacity: [ 1, 0 ], transformPerspective: [ 800, 800 ], rotateY: [ 0, -55 ] } ]\n ],\n reset: { transformPerspective: 0 }\n },\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipXOut\": {\n defaultDuration: 700,\n calls: [\n [ { opacity: [ 0, 1 ], transformPerspective: [ 800, 800 ], rotateY: 55 } ]\n ],\n reset: { transformPerspective: 0, rotateY: 0 }\n },\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipYIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], transformPerspective: [ 800, 800 ], rotateX: [ 0, -45 ] } ]\n ],\n reset: { transformPerspective: 0 }\n },\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipYOut\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 0, 1 ], transformPerspective: [ 800, 800 ], rotateX: 25 } ]\n ],\n reset: { transformPerspective: 0, rotateX: 0 }\n },\n /* Animate.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipBounceXIn\": {\n defaultDuration: 900,\n calls: [\n [ { opacity: [ 0.725, 0 ], transformPerspective: [ 400, 400 ], rotateY: [ -10, 90 ] }, 0.50 ],\n [ { opacity: 0.80, rotateY: 10 }, 0.25 ],\n [ { opacity: 1, rotateY: 0 }, 0.25 ]\n ],\n reset: { transformPerspective: 0 }\n },\n /* Animate.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipBounceXOut\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 0.9, 1 ], transformPerspective: [ 400, 400 ], rotateY: -10 }, 0.50 ],\n [ { opacity: 0, rotateY: 90 }, 0.50 ]\n ],\n reset: { transformPerspective: 0, rotateY: 0 }\n },\n /* Animate.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipBounceYIn\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 0.725, 0 ], transformPerspective: [ 400, 400 ], rotateX: [ -10, 90 ] }, 0.50 ],\n [ { opacity: 0.80, rotateX: 10 }, 0.25 ],\n [ { opacity: 1, rotateX: 0 }, 0.25 ]\n ],\n reset: { transformPerspective: 0 }\n },\n /* Animate.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipBounceYOut\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 0.9, 1 ], transformPerspective: [ 400, 400 ], rotateX: -15 }, 0.50 ],\n [ { opacity: 0, rotateX: 90 }, 0.50 ]\n ],\n reset: { transformPerspective: 0, rotateX: 0 }\n },\n /* Magic.css */\n \"transition.swoopIn\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 1, 0 ], transformOriginX: [ \"100%\", \"50%\" ], transformOriginY: [ \"100%\", \"100%\" ], scaleX: [ 1, 0 ], scaleY: [ 1, 0 ], translateX: [ 0, -700 ], translateZ: 0 } ]\n ],\n reset: { transformOriginX: \"50%\", transformOriginY: \"50%\" }\n },\n /* Magic.css */\n \"transition.swoopOut\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 0, 1 ], transformOriginX: [ \"50%\", \"100%\" ], transformOriginY: [ \"100%\", \"100%\" ], scaleX: 0, scaleY: 0, translateX: -700, translateZ: 0 } ]\n ],\n reset: { transformOriginX: \"50%\", transformOriginY: \"50%\", scaleX: 1, scaleY: 1, translateX: 0 }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3. (Fades and scales only.) */\n \"transition.whirlIn\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 1, 0 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: [ 1, 0 ], scaleY: [ 1, 0 ], rotateY: [ 0, 160 ] }, 1, { easing: \"easeInOutSine\" } ]\n ]\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3. (Fades and scales only.) */\n \"transition.whirlOut\": {\n defaultDuration: 750,\n calls: [\n [ { opacity: [ 0, \"easeInOutQuint\", 1 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: 0, scaleY: 0, rotateY: 160 }, 1, { easing: \"swing\" } ]\n ],\n reset: { scaleX: 1, scaleY: 1, rotateY: 0 }\n },\n \"transition.shrinkIn\": {\n defaultDuration: 750,\n calls: [\n [ { opacity: [ 1, 0 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: [ 1, 1.5 ], scaleY: [ 1, 1.5 ], translateZ: 0 } ]\n ]\n },\n \"transition.shrinkOut\": {\n defaultDuration: 600,\n calls: [\n [ { opacity: [ 0, 1 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: 1.3, scaleY: 1.3, translateZ: 0 } ]\n ],\n reset: { scaleX: 1, scaleY: 1 }\n },\n \"transition.expandIn\": {\n defaultDuration: 700,\n calls: [\n [ { opacity: [ 1, 0 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: [ 1, 0.625 ], scaleY: [ 1, 0.625 ], translateZ: 0 } ]\n ]\n },\n \"transition.expandOut\": {\n defaultDuration: 700,\n calls: [\n [ { opacity: [ 0, 1 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: 0.5, scaleY: 0.5, translateZ: 0 } ]\n ],\n reset: { scaleX: 1, scaleY: 1 }\n },\n /* Animate.css */\n \"transition.bounceIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], scaleX: [ 1.05, 0.3 ], scaleY: [ 1.05, 0.3 ] }, 0.40 ],\n [ { scaleX: 0.9, scaleY: 0.9, translateZ: 0 }, 0.20 ],\n [ { scaleX: 1, scaleY: 1 }, 0.50 ]\n ]\n },\n /* Animate.css */\n \"transition.bounceOut\": {\n defaultDuration: 800,\n calls: [\n [ { scaleX: 0.95, scaleY: 0.95 }, 0.35 ],\n [ { scaleX: 1.1, scaleY: 1.1, translateZ: 0 }, 0.35 ],\n [ { opacity: [ 0, 1 ], scaleX: 0.3, scaleY: 0.3 }, 0.30 ]\n ],\n reset: { scaleX: 1, scaleY: 1 }\n },\n /* Animate.css */\n \"transition.bounceUpIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], translateY: [ -30, 1000 ] }, 0.60, { easing: \"easeOutCirc\" } ],\n [ { translateY: 10 }, 0.20 ],\n [ { translateY: 0 }, 0.20 ]\n ]\n },\n /* Animate.css */\n \"transition.bounceUpOut\": {\n defaultDuration: 1000,\n calls: [\n [ { translateY: 20 }, 0.20 ],\n [ { opacity: [ 0, \"easeInCirc\", 1 ], translateY: -1000 }, 0.80 ]\n ],\n reset: { translateY: 0 }\n },\n /* Animate.css */\n \"transition.bounceDownIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], translateY: [ 30, -1000 ] }, 0.60, { easing: \"easeOutCirc\" } ],\n [ { translateY: -10 }, 0.20 ],\n [ { translateY: 0 }, 0.20 ]\n ]\n },\n /* Animate.css */\n \"transition.bounceDownOut\": {\n defaultDuration: 1000,\n calls: [\n [ { translateY: -20 }, 0.20 ],\n [ { opacity: [ 0, \"easeInCirc\", 1 ], translateY: 1000 }, 0.80 ]\n ],\n reset: { translateY: 0 }\n },\n /* Animate.css */\n \"transition.bounceLeftIn\": {\n defaultDuration: 750,\n calls: [\n [ { opacity: [ 1, 0 ], translateX: [ 30, -1250 ] }, 0.60, { easing: \"easeOutCirc\" } ],\n [ { translateX: -10 }, 0.20 ],\n [ { translateX: 0 }, 0.20 ]\n ]\n },\n /* Animate.css */\n \"transition.bounceLeftOut\": {\n defaultDuration: 750,\n calls: [\n [ { translateX: 30 }, 0.20 ],\n [ { opacity: [ 0, \"easeInCirc\", 1 ], translateX: -1250 }, 0.80 ]\n ],\n reset: { translateX: 0 }\n },\n /* Animate.css */\n \"transition.bounceRightIn\": {\n defaultDuration: 750,\n calls: [\n [ { opacity: [ 1, 0 ], translateX: [ -30, 1250 ] }, 0.60, { easing: \"easeOutCirc\" } ],\n [ { translateX: 10 }, 0.20 ],\n [ { translateX: 0 }, 0.20 ]\n ]\n },\n /* Animate.css */\n \"transition.bounceRightOut\": {\n defaultDuration: 750,\n calls: [\n [ { translateX: -30 }, 0.20 ],\n [ { opacity: [ 0, \"easeInCirc\", 1 ], translateX: 1250 }, 0.80 ]\n ],\n reset: { translateX: 0 }\n },\n \"transition.slideUpIn\": {\n defaultDuration: 900,\n calls: [\n [ { opacity: [ 1, 0 ], translateY: [ 0, 20 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideUpOut\": {\n defaultDuration: 900,\n calls: [\n [ { opacity: [ 0, 1 ], translateY: -20, translateZ: 0 } ]\n ],\n reset: { translateY: 0 }\n },\n \"transition.slideDownIn\": {\n defaultDuration: 900,\n calls: [\n [ { opacity: [ 1, 0 ], translateY: [ 0, -20 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideDownOut\": {\n defaultDuration: 900,\n calls: [\n [ { opacity: [ 0, 1 ], translateY: 20, translateZ: 0 } ]\n ],\n reset: { translateY: 0 }\n },\n \"transition.slideLeftIn\": {\n defaultDuration: 1000,\n calls: [\n [ { opacity: [ 1, 0 ], translateX: [ 0, -20 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideLeftOut\": {\n defaultDuration: 1050,\n calls: [\n [ { opacity: [ 0, 1 ], translateX: -20, translateZ: 0 } ]\n ],\n reset: { translateX: 0 }\n },\n \"transition.slideRightIn\": {\n defaultDuration: 1000,\n calls: [\n [ { opacity: [ 1, 0 ], translateX: [ 0, 20 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideRightOut\": {\n defaultDuration: 1050,\n calls: [\n [ { opacity: [ 0, 1 ], translateX: 20, translateZ: 0 } ]\n ],\n reset: { translateX: 0 }\n },\n \"transition.slideUpBigIn\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 1, 0 ], translateY: [ 0, 75 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideUpBigOut\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 0, 1 ], translateY: -75, translateZ: 0 } ]\n ],\n reset: { translateY: 0 }\n },\n \"transition.slideDownBigIn\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 1, 0 ], translateY: [ 0, -75 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideDownBigOut\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 0, 1 ], translateY: 75, translateZ: 0 } ]\n ],\n reset: { translateY: 0 }\n },\n \"transition.slideLeftBigIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], translateX: [ 0, -75 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideLeftBigOut\": {\n defaultDuration: 750,\n calls: [\n [ { opacity: [ 0, 1 ], translateX: -75, translateZ: 0 } ]\n ],\n reset: { translateX: 0 }\n },\n \"transition.slideRightBigIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], translateX: [ 0, 75 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideRightBigOut\": {\n defaultDuration: 750,\n calls: [\n [ { opacity: [ 0, 1 ], translateX: 75, translateZ: 0 } ]\n ],\n reset: { translateX: 0 }\n },\n /* Magic.css */\n \"transition.perspectiveUpIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], transformPerspective: [ 800, 800 ], transformOriginX: [ 0, 0 ], transformOriginY: [ \"100%\", \"100%\" ], rotateX: [ 0, -180 ] } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\" }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveUpOut\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 0, 1 ], transformPerspective: [ 800, 800 ], transformOriginX: [ 0, 0 ], transformOriginY: [ \"100%\", \"100%\" ], rotateX: -180 } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\", rotateX: 0 }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveDownIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], transformPerspective: [ 800, 800 ], transformOriginX: [ 0, 0 ], transformOriginY: [ 0, 0 ], rotateX: [ 0, 180 ] } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\" }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveDownOut\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 0, 1 ], transformPerspective: [ 800, 800 ], transformOriginX: [ 0, 0 ], transformOriginY: [ 0, 0 ], rotateX: 180 } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\", rotateX: 0 }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveLeftIn\": {\n defaultDuration: 950,\n calls: [\n [ { opacity: [ 1, 0 ], transformPerspective: [ 2000, 2000 ], transformOriginX: [ 0, 0 ], transformOriginY: [ 0, 0 ], rotateY: [ 0, -180 ] } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\" }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveLeftOut\": {\n defaultDuration: 950,\n calls: [\n [ { opacity: [ 0, 1 ], transformPerspective: [ 2000, 2000 ], transformOriginX: [ 0, 0 ], transformOriginY: [ 0, 0 ], rotateY: -180 } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\", rotateY: 0 }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveRightIn\": {\n defaultDuration: 950,\n calls: [\n [ { opacity: [ 1, 0 ], transformPerspective: [ 2000, 2000 ], transformOriginX: [ \"100%\", \"100%\" ], transformOriginY: [ 0, 0 ], rotateY: [ 0, 180 ] } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\" }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveRightOut\": {\n defaultDuration: 950,\n calls: [\n [ { opacity: [ 0, 1 ], transformPerspective: [ 2000, 2000 ], transformOriginX: [ \"100%\", \"100%\" ], transformOriginY: [ 0, 0 ], rotateY: 180 } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\", rotateY: 0 }\n }\n };\n\n /* Register the packaged effects. */\n for (var effectName in Velocity.RegisterEffect.packagedEffects) {\n Velocity.RegisterEffect(effectName, Velocity.RegisterEffect.packagedEffects[effectName]);\n }\n\n /*********************\n Sequence Running\n **********************/\n\n /* Note: Sequence calls must use Velocity's single-object arguments syntax. */\n Velocity.RunSequence = function (originalSequence) {\n var sequence = $.extend(true, [], originalSequence);\n\n if (sequence.length > 1) {\n $.each(sequence.reverse(), function(i, currentCall) {\n var nextCall = sequence[i + 1];\n\n if (nextCall) {\n /* Parallel sequence calls (indicated via sequenceQueue:false) are triggered\n in the previous call's begin callback. Otherwise, chained calls are normally triggered\n in the previous call's complete callback. */\n var currentCallOptions = currentCall.o || currentCall.options,\n nextCallOptions = nextCall.o || nextCall.options;\n\n var timing = (currentCallOptions && currentCallOptions.sequenceQueue === false) ? \"begin\" : \"complete\",\n callbackOriginal = nextCallOptions && nextCallOptions[timing],\n options = {};\n\n options[timing] = function() {\n var nextCallElements = nextCall.e || nextCall.elements;\n var elements = nextCallElements.nodeType ? [ nextCallElements ] : nextCallElements;\n\n callbackOriginal && callbackOriginal.call(elements, elements);\n Velocity(currentCall);\n }\n\n if (nextCall.o) {\n nextCall.o = $.extend({}, nextCallOptions, options);\n } else {\n nextCall.options = $.extend({}, nextCallOptions, options);\n }\n }\n });\n\n sequence.reverse();\n }\n\n Velocity(sequence[0]);\n };\n}((window.jQuery || window.Zepto || window), window, document);\n}));","module.exports = { \"default\": require(\"core-js/library/fn/set-immediate\"), __esModule: true };","var escapeHtmlChar = require('./_escapeHtmlChar'),\n toString = require('./toString');\n\n/** Used to match HTML entities and HTML characters. */\nvar reUnescapedHtml = /[&<>\"']/g,\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n/**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\nfunction escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n}\n\nmodule.exports = escape;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nexports.showGroupInviteDialog = showGroupInviteDialog;\nexports.showGroupAddRoomDialog = showGroupAddRoomDialog;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _ = require('./');\n\nvar _2 = _interopRequireDefault(_);\n\nvar _MultiInviter = require('./utils/MultiInviter');\n\nvar _MultiInviter2 = _interopRequireDefault(_MultiInviter);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _GroupStore = require('./stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction showGroupInviteDialog(groupId) {\n return new _promise2.default(function (resolve, reject) {\n var description = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Who would you like to add to this community?\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'warning' },\n (0, _languageHandler._t)(\"Warning: any person you add to a community will be publicly \" + \"visible to anyone who knows the community ID\")\n )\n );\n\n var AddressPickerDialog = _2.default.getComponent(\"dialogs.AddressPickerDialog\");\n _Modal2.default.createTrackedDialog('Group Invite', '', AddressPickerDialog, {\n title: (0, _languageHandler._t)(\"Invite new community members\"),\n description: description,\n placeholder: (0, _languageHandler._t)(\"Name or matrix ID\"),\n button: (0, _languageHandler._t)(\"Invite to Community\"),\n validAddressTypes: ['mx-user-id'],\n onFinished: function onFinished(success, addrs) {\n if (!success) return;\n\n _onGroupInviteFinished(groupId, addrs).then(resolve, reject);\n }\n });\n });\n} /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction showGroupAddRoomDialog(groupId) {\n return new _promise2.default(function (resolve, reject) {\n var addRoomsPublicly = false;\n var onCheckboxClicked = function onCheckboxClicked(e) {\n addRoomsPublicly = e.target.checked;\n };\n var description = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Which rooms would you like to add to this community?\")\n )\n );\n\n var checkboxContainer = _react2.default.createElement(\n 'label',\n { className: 'mx_GroupAddressPicker_checkboxContainer' },\n _react2.default.createElement('input', { type: 'checkbox', onClick: onCheckboxClicked }),\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Show these rooms to non-members on the community page and room list?\")\n )\n );\n\n var AddressPickerDialog = _2.default.getComponent(\"dialogs.AddressPickerDialog\");\n _Modal2.default.createTrackedDialog('Add Rooms to Group', '', AddressPickerDialog, {\n title: (0, _languageHandler._t)(\"Add rooms to the community\"),\n description: description,\n extraNode: checkboxContainer,\n placeholder: (0, _languageHandler._t)(\"Room name or alias\"),\n button: (0, _languageHandler._t)(\"Add to community\"),\n pickerType: 'room',\n validAddressTypes: ['mx-room-id'],\n onFinished: function onFinished(success, addrs) {\n if (!success) return;\n\n _onGroupAddRoomFinished(groupId, addrs, addRoomsPublicly).then(resolve, reject);\n }\n });\n });\n}\n\nfunction _onGroupInviteFinished(groupId, addrs) {\n var multiInviter = new _MultiInviter2.default(groupId);\n\n var addrTexts = addrs.map(function (addr) {\n return addr.address;\n });\n\n return multiInviter.invite(addrTexts).then(function (completionStates) {\n // Show user any errors\n var errorList = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(completionStates)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var addr = _step.value;\n\n if (addrs[addr] === \"error\") {\n errorList.push(addr);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (errorList.length > 0) {\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite the following users to the group', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite the following users to %(groupId)s:\", { groupId: groupId }),\n description: errorList.join(\", \")\n });\n }\n }).catch(function (err) {\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite users to group', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite users to community\"),\n description: (0, _languageHandler._t)(\"Failed to invite users to %(groupId)s\", { groupId: groupId })\n });\n });\n}\n\nfunction _onGroupAddRoomFinished(groupId, addrs, addRoomsPublicly) {\n var matrixClient = _MatrixClientPeg2.default.get();\n var errorList = [];\n return _promise2.default.all(addrs.map(function (addr) {\n return _GroupStore2.default.addRoomToGroup(groupId, addr.address, addRoomsPublicly).catch(function () {\n errorList.push(addr.address);\n }).then(function () {\n var roomId = addr.address;\n var room = matrixClient.getRoom(roomId);\n // Can the user change related groups?\n if (!room || !room.currentState.mayClientSendStateEvent(\"m.room.related_groups\", matrixClient)) {\n return;\n }\n // Get the related groups\n var relatedGroupsEvent = room.currentState.getStateEvents('m.room.related_groups', '');\n var groups = relatedGroupsEvent ? relatedGroupsEvent.getContent().groups || [] : [];\n\n // Add this group as related\n if (!groups.includes(groupId)) {\n groups.push(groupId);\n return _MatrixClientPeg2.default.get().sendStateEvent(roomId, 'm.room.related_groups', { groups: groups }, '');\n }\n }).reflect();\n })).then(function () {\n if (errorList.length === 0) {\n return;\n }\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to add the following room to the group', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to add the following rooms to %(groupId)s:\", { groupId: groupId }),\n description: errorList.join(\", \")\n });\n });\n}\n//# sourceMappingURL=GroupAddressPicker.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FallbackAuthEntry = exports.MsisdnAuthEntry = exports.EmailIdentityAuthEntry = exports.TermsAuthEntry = exports.RecaptchaAuthEntry = exports.PasswordAuthEntry = undefined;\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nexports.getEntryComponentForLoginType = getEntryComponentForLoginType;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes2 = require('prop-types');\n\nvar _propTypes3 = _interopRequireDefault(_propTypes2);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* This file contains a collection of components which are used by the\n * InteractiveAuth to prompt the user to enter the information needed\n * for an auth stage. (The intention is that they could also be used for other\n * components, such as the registration flow).\n *\n * Call getEntryComponentForLoginType() to get a component suitable for a\n * particular login type. Each component requires the same properties:\n *\n * matrixClient: A matrix client. May be a different one to the one\n * currently being used generally (eg. to register with\n * one HS whilst beign a guest on another).\n * loginType: the login type of the auth stage being attempted\n * authSessionId: session id from the server\n * clientSecret: The client secret in use for ID server auth sessions\n * stageParams: params from the server for the stage being attempted\n * errorText: error message from a previous attempt to authenticate\n * submitAuthDict: a function which will be called with the new auth dict\n * busy: a boolean indicating whether the auth logic is doing something\n * the user needs to wait for.\n * inputs: Object of inputs provided by the user, as in js-sdk\n * interactive-auth\n * stageState: Stage-specific object used for communicating state information\n * to the UI from the state-specific auth logic.\n * Defined keys for stages are:\n * m.login.email.identity:\n * * emailSid: string representing the sid of the active\n * verification session from the ID server, or\n * null if no session is active.\n * fail: a function which should be called with an error object if an\n * error occurred during the auth stage. This will cause the auth\n * session to be failed and the process to go back to the start.\n * setEmailSid: m.login.email.identity only: a function to be called with the\n * email sid after a token is requested.\n * makeRegistrationUrl A function that makes a registration URL\n *\n * Each component may also provide the following functions (beyond the standard React ones):\n * focus: set the input focus appropriately in the form.\n */\n\nvar PasswordAuthEntry = exports.PasswordAuthEntry = _react2.default.createClass({\n displayName: 'PasswordAuthEntry',\n\n statics: {\n LOGIN_TYPE: \"m.login.password\"\n },\n\n propTypes: {\n matrixClient: _propTypes3.default.object.isRequired,\n submitAuthDict: _propTypes3.default.func.isRequired,\n errorText: _propTypes3.default.string,\n // is the auth logic currently waiting for something to\n // happen?\n busy: _propTypes3.default.bool\n },\n\n getInitialState: function getInitialState() {\n return {\n passwordValid: false\n };\n },\n\n focus: function focus() {\n if (this.refs.passwordField) {\n this.refs.passwordField.focus();\n }\n },\n\n _onSubmit: function _onSubmit(e) {\n e.preventDefault();\n if (this.props.busy) return;\n\n this.props.submitAuthDict({\n type: PasswordAuthEntry.LOGIN_TYPE,\n user: this.props.matrixClient.credentials.userId,\n password: this.refs.passwordField.value\n });\n },\n\n _onPasswordFieldChange: function _onPasswordFieldChange(ev) {\n // enable the submit button iff the password is non-empty\n this.setState({\n passwordValid: Boolean(this.refs.passwordField.value)\n });\n },\n\n render: function render() {\n var passwordBoxClass = null;\n\n if (this.props.errorText) {\n passwordBoxClass = 'error';\n }\n\n var submitButtonOrSpinner = void 0;\n if (this.props.busy) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n submitButtonOrSpinner = _react2.default.createElement(Loader, null);\n } else {\n submitButtonOrSpinner = _react2.default.createElement('input', { type: 'submit',\n className: 'mx_Dialog_primary',\n disabled: !this.state.passwordValid\n });\n }\n\n var errorSection = void 0;\n if (this.props.errorText) {\n errorSection = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.props.errorText\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"To continue, please enter your password.\")\n ),\n _react2.default.createElement(\n 'form',\n { onSubmit: this._onSubmit },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'passwordField' },\n (0, _languageHandler._t)(\"Password:\")\n ),\n _react2.default.createElement('input', {\n name: 'passwordField',\n ref: 'passwordField',\n className: passwordBoxClass,\n onChange: this._onPasswordFieldChange,\n type: 'password'\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_button_row' },\n submitButtonOrSpinner\n )\n ),\n errorSection\n );\n }\n}); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar RecaptchaAuthEntry = exports.RecaptchaAuthEntry = _react2.default.createClass({\n displayName: 'RecaptchaAuthEntry',\n\n statics: {\n LOGIN_TYPE: \"m.login.recaptcha\"\n },\n\n propTypes: {\n submitAuthDict: _propTypes3.default.func.isRequired,\n stageParams: _propTypes3.default.object.isRequired,\n errorText: _propTypes3.default.string,\n busy: _propTypes3.default.bool\n },\n\n _onCaptchaResponse: function _onCaptchaResponse(response) {\n this.props.submitAuthDict({\n type: RecaptchaAuthEntry.LOGIN_TYPE,\n response: response\n });\n },\n\n render: function render() {\n if (this.props.busy) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n }\n\n var CaptchaForm = _index2.default.getComponent(\"views.login.CaptchaForm\");\n var sitePublicKey = this.props.stageParams.public_key;\n\n var errorSection = void 0;\n if (this.props.errorText) {\n errorSection = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.props.errorText\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(CaptchaForm, { sitePublicKey: sitePublicKey,\n onCaptchaResponse: this._onCaptchaResponse\n }),\n errorSection\n );\n }\n});\n\nvar TermsAuthEntry = exports.TermsAuthEntry = _react2.default.createClass({\n displayName: 'TermsAuthEntry',\n\n statics: {\n LOGIN_TYPE: \"m.login.terms\"\n },\n\n propTypes: {\n submitAuthDict: _propTypes3.default.func.isRequired,\n stageParams: _propTypes3.default.object.isRequired,\n errorText: _propTypes3.default.string,\n busy: _propTypes3.default.bool,\n showContinue: _propTypes3.default.bool\n },\n\n componentWillMount: function componentWillMount() {\n // example stageParams:\n //\n // {\n // \"policies\": {\n // \"privacy_policy\": {\n // \"version\": \"1.0\",\n // \"en\": {\n // \"name\": \"Privacy Policy\",\n // \"url\": \"https://example.org/privacy-1.0-en.html\",\n // },\n // \"fr\": {\n // \"name\": \"Politique de confidentialité\",\n // \"url\": \"https://example.org/privacy-1.0-fr.html\",\n // },\n // },\n // \"other_policy\": { ... },\n // }\n // }\n\n var allPolicies = this.props.stageParams.policies || {};\n var prefLang = _SettingsStore2.default.getValue(\"language\");\n var initToggles = {};\n var pickedPolicies = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(allPolicies)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var policyId = _step.value;\n\n var policy = allPolicies[policyId];\n\n // Pick a language based on the user's language, falling back to english,\n // and finally to the first language available. If there's still no policy\n // available then the homeserver isn't respecting the spec.\n var langPolicy = policy[prefLang];\n if (!langPolicy) langPolicy = policy[\"en\"];\n if (!langPolicy) {\n // last resort\n var firstLang = (0, _keys2.default)(policy).find(function (e) {\n return e !== \"version\";\n });\n langPolicy = policy[firstLang];\n }\n if (!langPolicy) throw new Error(\"Failed to find a policy to show the user\");\n\n initToggles[policyId] = false;\n\n langPolicy.id = policyId;\n pickedPolicies.push(langPolicy);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n this.setState({\n \"toggledPolicies\": initToggles,\n \"policies\": pickedPolicies\n });\n },\n\n tryContinue: function tryContinue() {\n this._trySubmit();\n },\n\n _togglePolicy: function _togglePolicy(policyId) {\n var newToggles = {};\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(this.state.policies), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var policy = _step2.value;\n\n var checked = this.state.toggledPolicies[policy.id];\n if (policy.id === policyId) checked = !checked;\n\n newToggles[policy.id] = checked;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n this.setState({ \"toggledPolicies\": newToggles });\n },\n\n _trySubmit: function _trySubmit() {\n var allChecked = true;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(this.state.policies), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var policy = _step3.value;\n\n var checked = this.state.toggledPolicies[policy.id];\n allChecked = allChecked && checked;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n if (allChecked) this.props.submitAuthDict({ type: TermsAuthEntry.LOGIN_TYPE });else this.setState({ errorText: (0, _languageHandler._t)(\"Please review and accept all of the homeserver's policies\") });\n },\n\n render: function render() {\n var _this = this;\n\n if (this.props.busy) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n }\n\n var checkboxes = [];\n var allChecked = true;\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n var _loop = function _loop() {\n var policy = _step4.value;\n\n var checked = _this.state.toggledPolicies[policy.id];\n allChecked = allChecked && checked;\n\n checkboxes.push(_react2.default.createElement(\n 'label',\n { key: \"policy_checkbox_\" + policy.id, className: 'mx_InteractiveAuthEntryComponents_termsPolicy' },\n _react2.default.createElement('input', { type: 'checkbox', onClick: function onClick() {\n return _this._togglePolicy(policy.id);\n }, checked: checked }),\n _react2.default.createElement(\n 'a',\n { href: policy.url, target: '_blank', rel: 'noopener' },\n policy.name\n )\n ));\n };\n\n for (var _iterator4 = (0, _getIterator3.default)(this.state.policies), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n _loop();\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n var errorSection = void 0;\n if (this.props.errorText || this.state.errorText) {\n errorSection = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.props.errorText || this.state.errorText\n );\n }\n\n var submitButton = void 0;\n if (this.props.showContinue !== false) {\n // XXX: button classes\n submitButton = _react2.default.createElement(\n 'button',\n { className: 'mx_InteractiveAuthEntryComponents_termsSubmit mx_UserSettings_button',\n onClick: this._trySubmit, disabled: !allChecked },\n (0, _languageHandler._t)(\"Accept\")\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Please review and accept the policies of this homeserver:\")\n ),\n checkboxes,\n errorSection,\n submitButton\n );\n }\n});\n\nvar EmailIdentityAuthEntry = exports.EmailIdentityAuthEntry = _react2.default.createClass({\n displayName: 'EmailIdentityAuthEntry',\n\n statics: {\n LOGIN_TYPE: \"m.login.email.identity\"\n },\n\n propTypes: {\n matrixClient: _propTypes3.default.object.isRequired,\n submitAuthDict: _propTypes3.default.func.isRequired,\n authSessionId: _propTypes3.default.string.isRequired,\n clientSecret: _propTypes3.default.string.isRequired,\n inputs: _propTypes3.default.object.isRequired,\n stageState: _propTypes3.default.object.isRequired,\n fail: _propTypes3.default.func.isRequired,\n setEmailSid: _propTypes3.default.func.isRequired,\n makeRegistrationUrl: _propTypes3.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n requestingToken: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this2 = this;\n\n if (this.props.stageState.emailSid === null) {\n this.setState({ requestingToken: true });\n this._requestEmailToken().catch(function (e) {\n _this2.props.fail(e);\n }).finally(function () {\n _this2.setState({ requestingToken: false });\n }).done();\n }\n },\n\n /*\n * Requests a verification token by email.\n */\n _requestEmailToken: function _requestEmailToken() {\n var _this3 = this;\n\n var nextLink = this.props.makeRegistrationUrl({\n client_secret: this.props.clientSecret,\n hs_url: this.props.matrixClient.getHomeserverUrl(),\n is_url: this.props.matrixClient.getIdentityServerUrl(),\n session_id: this.props.authSessionId\n });\n\n return this.props.matrixClient.requestRegisterEmailToken(this.props.inputs.emailAddress, this.props.clientSecret, 1, // TODO: Multiple send attempts?\n nextLink).then(function (result) {\n _this3.props.setEmailSid(result.sid);\n });\n },\n\n render: function render() {\n var _this4 = this;\n\n if (this.state.requestingToken) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n } else {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"An email has been sent to %(emailAddress)s\", { emailAddress: function emailAddress(sub) {\n return _react2.default.createElement(\n 'i',\n null,\n _this4.props.inputs.emailAddress\n );\n } })\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Please check your email to continue registration.\")\n )\n );\n }\n }\n});\n\nvar MsisdnAuthEntry = exports.MsisdnAuthEntry = _react2.default.createClass({\n displayName: 'MsisdnAuthEntry',\n\n statics: {\n LOGIN_TYPE: \"m.login.msisdn\"\n },\n\n propTypes: (0, _defineProperty3.default)({\n inputs: _propTypes3.default.shape({\n phoneCountry: _propTypes3.default.string,\n phoneNumber: _propTypes3.default.string\n }),\n fail: _propTypes3.default.func,\n clientSecret: _propTypes3.default.func,\n submitAuthDict: _propTypes3.default.func.isRequired,\n matrixClient: _propTypes3.default.object\n }, 'submitAuthDict', _propTypes3.default.func),\n\n getInitialState: function getInitialState() {\n return {\n token: '',\n requestingToken: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this5 = this;\n\n this._sid = null;\n this._msisdn = null;\n this._tokenBox = null;\n\n this.setState({ requestingToken: true });\n this._requestMsisdnToken().catch(function (e) {\n _this5.props.fail(e);\n }).finally(function () {\n _this5.setState({ requestingToken: false });\n }).done();\n },\n\n /*\n * Requests a verification token by SMS.\n */\n _requestMsisdnToken: function _requestMsisdnToken() {\n var _this6 = this;\n\n return this.props.matrixClient.requestRegisterMsisdnToken(this.props.inputs.phoneCountry, this.props.inputs.phoneNumber, this.props.clientSecret, 1 // TODO: Multiple send attempts?\n ).then(function (result) {\n _this6._sid = result.sid;\n _this6._msisdn = result.msisdn;\n });\n },\n\n _onTokenChange: function _onTokenChange(e) {\n this.setState({\n token: e.target.value\n });\n },\n\n _onFormSubmit: function _onFormSubmit(e) {\n var _this7 = this;\n\n e.preventDefault();\n if (this.state.token == '') return;\n\n this.setState({\n errorText: null\n });\n\n this.props.matrixClient.submitMsisdnToken(this._sid, this.props.clientSecret, this.state.token).then(function (result) {\n if (result.success) {\n var idServerParsedUrl = _url2.default.parse(_this7.props.matrixClient.getIdentityServerUrl());\n _this7.props.submitAuthDict({\n type: MsisdnAuthEntry.LOGIN_TYPE,\n threepid_creds: {\n sid: _this7._sid,\n client_secret: _this7.props.clientSecret,\n id_server: idServerParsedUrl.host\n }\n });\n } else {\n _this7.setState({\n errorText: (0, _languageHandler._t)(\"Token incorrect\")\n });\n }\n }).catch(function (e) {\n _this7.props.fail(e);\n console.log(\"Failed to submit msisdn token\");\n }).done();\n },\n\n render: function render() {\n if (this.state.requestingToken) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n } else {\n var enableSubmit = Boolean(this.state.token);\n var submitClasses = (0, _classnames2.default)({\n mx_InteractiveAuthEntryComponents_msisdnSubmit: true,\n mx_UserSettings_button: true // XXX button classes\n });\n var errorSection = void 0;\n if (this.state.errorText) {\n errorSection = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.state.errorText\n );\n }\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"A text message has been sent to %(msisdn)s\", { msisdn: _react2.default.createElement(\n 'i',\n null,\n this._msisdn\n ) })\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Please enter the code it contains:\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_InteractiveAuthEntryComponents_msisdnWrapper' },\n _react2.default.createElement(\n 'form',\n { onSubmit: this._onFormSubmit },\n _react2.default.createElement('input', { type: 'text',\n className: 'mx_InteractiveAuthEntryComponents_msisdnEntry',\n value: this.state.token,\n onChange: this._onTokenChange,\n 'aria-label': (0, _languageHandler._t)(\"Code\")\n }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { type: 'submit', value: (0, _languageHandler._t)(\"Submit\"),\n className: submitClasses,\n disabled: !enableSubmit\n })\n ),\n errorSection\n )\n );\n }\n }\n});\n\nvar FallbackAuthEntry = exports.FallbackAuthEntry = _react2.default.createClass({\n displayName: 'FallbackAuthEntry',\n\n propTypes: {\n matrixClient: _propTypes3.default.object.isRequired,\n authSessionId: _propTypes3.default.string.isRequired,\n loginType: _propTypes3.default.string.isRequired,\n submitAuthDict: _propTypes3.default.func.isRequired,\n errorText: _propTypes3.default.string\n },\n\n componentWillMount: function componentWillMount() {\n // we have to make the user click a button, as browsers will block\n // the popup if we open it immediately.\n this._popupWindow = null;\n window.addEventListener(\"message\", this._onReceiveMessage);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n window.removeEventListener(\"message\", this._onReceiveMessage);\n if (this._popupWindow) {\n this._popupWindow.close();\n }\n },\n\n focus: function focus() {\n if (this.refs.fallbackButton) {\n this.refs.fallbackButton.focus();\n }\n },\n\n _onShowFallbackClick: function _onShowFallbackClick() {\n var url = this.props.matrixClient.getFallbackAuthUrl(this.props.loginType, this.props.authSessionId);\n this._popupWindow = window.open(url);\n },\n\n _onReceiveMessage: function _onReceiveMessage(event) {\n if (event.data === \"authDone\" && event.origin === this.props.matrixClient.getHomeserverUrl()) {\n this.props.submitAuthDict({});\n }\n },\n\n render: function render() {\n var errorSection = void 0;\n if (this.props.errorText) {\n errorSection = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.props.errorText\n );\n }\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'a',\n { ref: 'fallbackButton', onClick: this._onShowFallbackClick },\n (0, _languageHandler._t)(\"Start authentication\")\n ),\n errorSection\n );\n }\n});\n\nvar AuthEntryComponents = [PasswordAuthEntry, RecaptchaAuthEntry, EmailIdentityAuthEntry, MsisdnAuthEntry, TermsAuthEntry];\n\nfunction getEntryComponentForLoginType(loginType) {\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = (0, _getIterator3.default)(AuthEntryComponents), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var c = _step5.value;\n\n if (c.LOGIN_TYPE == loginType) {\n return c;\n }\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n\n return FallbackAuthEntry;\n}\n//# sourceMappingURL=InteractiveAuthEntryComponents.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _memoizeOne2.default)(function (displaced) {\n return displaced.reduce(function (map, displacement) {\n map[displacement.draggableId] = displacement;\n return map;\n }, {});\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _isWithin = require('../is-within');\n\nvar _isWithin2 = _interopRequireDefault(_isWithin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (frame) {\n var isWithinVertical = (0, _isWithin2.default)(frame.top, frame.bottom);\n var isWithinHorizontal = (0, _isWithin2.default)(frame.left, frame.right);\n\n return function (subject) {\n var isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n\n if (isContained) {\n return true;\n }\n\n var isPartiallyVisibleVertically = isWithinVertical(subject.top) || isWithinVertical(subject.bottom);\n var isPartiallyVisibleHorizontally = isWithinHorizontal(subject.left) || isWithinHorizontal(subject.right);\n\n var isPartiallyContained = isPartiallyVisibleVertically && isPartiallyVisibleHorizontally;\n\n if (isPartiallyContained) {\n return true;\n }\n\n var isBiggerVertically = subject.top < frame.top && subject.bottom > frame.bottom;\n var isBiggerHorizontally = subject.left < frame.left && subject.right > frame.right;\n\n var isTargetBiggerThanFrame = isBiggerVertically && isBiggerHorizontally;\n\n if (isTargetBiggerThanFrame) {\n return true;\n }\n\n var isTargetBiggerOnOneAxis = isBiggerVertically && isPartiallyVisibleHorizontally || isBiggerHorizontally && isPartiallyVisibleVertically;\n\n return isTargetBiggerOnOneAxis;\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _position = require('../position');\n\nvar _spacing = require('../spacing');\n\nvar _isPartiallyVisible = require('../visibility/is-partially-visible');\n\nvar _isPartiallyVisible2 = _interopRequireDefault(_isPartiallyVisible);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var draggable = _ref.draggable,\n destination = _ref.destination,\n newCenter = _ref.newCenter,\n viewport = _ref.viewport;\n\n var diff = (0, _position.subtract)(newCenter, draggable.page.withMargin.center);\n var shifted = (0, _spacing.offset)(draggable.page.withMargin, diff);\n\n return (0, _isPartiallyVisible2.default)({\n target: shifted,\n destination: destination,\n viewport: viewport\n });\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.css = exports.physics = undefined;\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar physics = exports.physics = function () {\n var base = {\n stiffness: 1000,\n damping: 60,\n\n precision: 0.99\n };\n\n var standard = (0, _extends3.default)({}, base);\n\n var fast = (0, _extends3.default)({}, base, {\n stiffness: base.stiffness * 2\n });\n\n return { standard: standard, fast: fast };\n}();\n\nvar css = exports.css = {\n outOfTheWay: 'transform 0.2s cubic-bezier(0.2, 0, 0, 1)'\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.lift = exports.dropAnimationFinished = exports.cancel = exports.drop = exports.completeDrop = exports.prepare = exports.clean = exports.crossAxisMoveBackward = exports.crossAxisMoveForward = exports.moveForward = exports.moveBackward = exports.moveByWindowScroll = exports.move = exports.updateDroppableDimensionIsEnabled = exports.updateDroppableDimensionScroll = exports.publishDroppableDimensions = exports.publishDraggableDimensions = exports.completeLift = exports.requestDimensions = undefined;\n\nvar _noImpact = require('./no-impact');\n\nvar _noImpact2 = _interopRequireDefault(_noImpact);\n\nvar _getNewHomeClientCenter = require('./get-new-home-client-center');\n\nvar _getNewHomeClientCenter2 = _interopRequireDefault(_getNewHomeClientCenter);\n\nvar _position = require('./position');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar origin = { x: 0, y: 0 };\n\nvar getScrollDiff = function getScrollDiff(_ref) {\n var initial = _ref.initial,\n current = _ref.current,\n droppable = _ref.droppable;\n\n var windowScrollDiff = (0, _position.subtract)(initial.windowScroll, current.windowScroll);\n\n var droppableScrollDiff = droppable ? droppable.viewport.frameScroll.diff.displacement : origin;\n\n return (0, _position.add)(windowScrollDiff, droppableScrollDiff);\n};\n\nvar requestDimensions = exports.requestDimensions = function requestDimensions(id) {\n return {\n type: 'REQUEST_DIMENSIONS',\n payload: id\n };\n};\n\nvar completeLift = exports.completeLift = function completeLift(id, client, windowScroll, isScrollAllowed) {\n return {\n type: 'COMPLETE_LIFT',\n payload: {\n id: id,\n client: client,\n windowScroll: windowScroll,\n isScrollAllowed: isScrollAllowed\n }\n };\n};\n\nvar publishDraggableDimensions = exports.publishDraggableDimensions = function publishDraggableDimensions(dimensions) {\n return {\n type: 'PUBLISH_DRAGGABLE_DIMENSIONS',\n payload: dimensions\n };\n};\n\nvar publishDroppableDimensions = exports.publishDroppableDimensions = function publishDroppableDimensions(dimensions) {\n return {\n type: 'PUBLISH_DROPPABLE_DIMENSIONS',\n payload: dimensions\n };\n};\n\nvar updateDroppableDimensionScroll = exports.updateDroppableDimensionScroll = function updateDroppableDimensionScroll(id, offset) {\n return {\n type: 'UPDATE_DROPPABLE_DIMENSION_SCROLL',\n payload: {\n id: id,\n offset: offset\n }\n };\n};\n\nvar updateDroppableDimensionIsEnabled = exports.updateDroppableDimensionIsEnabled = function updateDroppableDimensionIsEnabled(id, isEnabled) {\n return {\n type: 'UPDATE_DROPPABLE_DIMENSION_IS_ENABLED',\n payload: {\n id: id,\n isEnabled: isEnabled\n }\n };\n};\n\nvar move = exports.move = function move(id, client, windowScroll) {\n return {\n type: 'MOVE',\n payload: {\n id: id,\n client: client,\n windowScroll: windowScroll\n }\n };\n};\n\nvar moveByWindowScroll = exports.moveByWindowScroll = function moveByWindowScroll(id, windowScroll) {\n return {\n type: 'MOVE_BY_WINDOW_SCROLL',\n payload: {\n id: id,\n windowScroll: windowScroll\n }\n };\n};\n\nvar moveBackward = exports.moveBackward = function moveBackward(id) {\n return {\n type: 'MOVE_BACKWARD',\n payload: id\n };\n};\n\nvar moveForward = exports.moveForward = function moveForward(id) {\n return {\n type: 'MOVE_FORWARD',\n payload: id\n };\n};\n\nvar crossAxisMoveForward = exports.crossAxisMoveForward = function crossAxisMoveForward(id) {\n return {\n type: 'CROSS_AXIS_MOVE_FORWARD',\n payload: id\n };\n};\n\nvar crossAxisMoveBackward = exports.crossAxisMoveBackward = function crossAxisMoveBackward(id) {\n return {\n type: 'CROSS_AXIS_MOVE_BACKWARD',\n payload: id\n };\n};\n\nvar clean = exports.clean = function clean() {\n return {\n type: 'CLEAN',\n payload: null\n };\n};\n\nvar prepare = exports.prepare = function prepare() {\n return {\n type: 'PREPARE',\n payload: null\n };\n};\n\nvar animateDrop = function animateDrop(_ref2) {\n var trigger = _ref2.trigger,\n newHomeOffset = _ref2.newHomeOffset,\n impact = _ref2.impact,\n result = _ref2.result;\n return {\n type: 'DROP_ANIMATE',\n payload: {\n trigger: trigger,\n newHomeOffset: newHomeOffset,\n impact: impact,\n result: result\n }\n };\n};\n\nvar completeDrop = exports.completeDrop = function completeDrop(result) {\n return {\n type: 'DROP_COMPLETE',\n payload: result\n };\n};\n\nvar drop = exports.drop = function drop() {\n return function (dispatch, getState) {\n var state = getState();\n\n if (state.phase === 'PREPARING' || state.phase === 'COLLECTING_INITIAL_DIMENSIONS') {\n dispatch(clean());\n return;\n }\n\n if (state.phase !== 'DRAGGING') {\n console.error('not able to drop in phase: \\'' + state.phase + '\\'');\n dispatch(clean());\n return;\n }\n\n if (!state.drag) {\n console.error('not able to drop when there is invalid drag state', state);\n dispatch(clean());\n return;\n }\n\n var _state$drag = state.drag,\n impact = _state$drag.impact,\n initial = _state$drag.initial,\n current = _state$drag.current;\n\n var descriptor = initial.descriptor;\n var draggable = state.dimension.draggable[initial.descriptor.id];\n var home = state.dimension.droppable[draggable.descriptor.droppableId];\n var destination = impact.destination ? state.dimension.droppable[impact.destination.droppableId] : null;\n\n var source = {\n droppableId: descriptor.droppableId,\n index: descriptor.index\n };\n\n var result = {\n draggableId: descriptor.id,\n type: home.descriptor.type,\n source: source,\n destination: impact.destination\n };\n\n var newCenter = (0, _getNewHomeClientCenter2.default)({\n movement: impact.movement,\n draggable: draggable,\n draggables: state.dimension.draggable,\n destination: destination\n });\n\n var clientOffset = (0, _position.subtract)(newCenter, draggable.client.withMargin.center);\n var scrollDiff = getScrollDiff({\n initial: initial,\n current: current,\n droppable: destination || home\n });\n var newHomeOffset = (0, _position.add)(clientOffset, scrollDiff);\n\n var isAnimationRequired = !(0, _position.isEqual)(current.client.offset, newHomeOffset);\n\n if (!isAnimationRequired) {\n dispatch(completeDrop(result));\n return;\n }\n\n dispatch(animateDrop({\n trigger: 'DROP',\n newHomeOffset: newHomeOffset,\n impact: impact,\n result: result\n }));\n };\n};\n\nvar cancel = exports.cancel = function cancel() {\n return function (dispatch, getState) {\n var state = getState();\n\n if (state.phase !== 'DRAGGING') {\n dispatch(clean());\n return;\n }\n\n if (!state.drag) {\n console.error('invalid drag state', state);\n dispatch(clean());\n return;\n }\n\n var _state$drag2 = state.drag,\n initial = _state$drag2.initial,\n current = _state$drag2.current;\n\n var descriptor = initial.descriptor;\n var home = state.dimension.droppable[descriptor.droppableId];\n\n var source = {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n };\n\n var result = {\n draggableId: descriptor.id,\n type: home.descriptor.type,\n source: source,\n\n destination: null\n };\n\n var isAnimationRequired = !(0, _position.isEqual)(current.client.offset, origin);\n\n if (!isAnimationRequired) {\n dispatch(completeDrop(result));\n return;\n }\n\n var scrollDiff = getScrollDiff({ initial: initial, current: current, droppable: home });\n\n dispatch(animateDrop({\n trigger: 'CANCEL',\n newHomeOffset: scrollDiff,\n impact: _noImpact2.default,\n result: result\n }));\n };\n};\n\nvar dropAnimationFinished = exports.dropAnimationFinished = function dropAnimationFinished() {\n return function (dispatch, getState) {\n var state = getState();\n\n if (state.phase !== 'DROP_ANIMATING') {\n console.error('cannot end drop that is no longer animating', state);\n dispatch(clean());\n return;\n }\n\n if (!state.drop || !state.drop.pending) {\n console.error('cannot end drop that has no pending state', state);\n dispatch(clean());\n return;\n }\n\n dispatch(completeDrop(state.drop.pending.result));\n };\n};\n\nvar lift = exports.lift = function lift(id, client, windowScroll, isScrollAllowed) {\n return function (dispatch, getState) {\n var initial = getState();\n\n if (initial.phase === 'DROP_ANIMATING') {\n if (!initial.drop || !initial.drop.pending) {\n console.error('cannot flush drop animation if there is no pending');\n dispatch(clean());\n } else {\n dispatch(completeDrop(initial.drop.pending.result));\n }\n }\n\n dispatch(prepare());\n\n setTimeout(function () {\n var state = getState();\n\n if (state.phase !== 'PREPARING') {\n return;\n }\n\n dispatch(requestDimensions(id));\n\n setTimeout(function () {\n var newState = getState();\n\n if (newState.phase !== 'COLLECTING_INITIAL_DIMENSIONS') {\n return;\n }\n\n dispatch(completeLift(id, client, windowScroll, isScrollAllowed));\n });\n });\n };\n};","\n\nexport default (function (fn) {\n var lastArgs = [];\n var frameId = null;\n\n var wrapperFn = function wrapperFn() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n lastArgs = args;\n\n if (frameId) {\n return frameId;\n }\n\n frameId = requestAnimationFrame(function () {\n frameId = null;\n fn.apply(undefined, lastArgs);\n });\n\n return frameId;\n };\n\n wrapperFn.cancel = function () {\n if (!frameId) {\n return;\n }\n\n cancelAnimationFrame(frameId);\n frameId = null;\n };\n\n var resultFn = wrapperFn;\n\n return resultFn;\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _placeholder = require('./placeholder');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_placeholder).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = {\n noWobble: { stiffness: 170, damping: 26 }, // the default, if nothing provided\n gentle: { stiffness: 120, damping: 14 },\n wobbly: { stiffness: 180, damping: 12 },\n stiff: { stiffness: 210, damping: 20 }\n};\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keyCodes = require('../../key-codes');\n\nvar keyCodes = _interopRequireWildcard(_keyCodes);\n\nvar _stopEvent = require('./stop-event');\n\nvar _stopEvent2 = _interopRequireDefault(_stopEvent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar blocked = [keyCodes.enter, keyCodes.tab];\n\nexports.default = function (event) {\n if (blocked.indexOf(event.keyCode) >= 0) {\n (0, _stopEvent2.default)(event);\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getArea = require('../state/get-area');\n\nvar _getArea2 = _interopRequireDefault(_getArea);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (el) {\n return (0, _getArea2.default)(el.getBoundingClientRect()).center;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/** The types of page which can be shown by the LoggedInView */\nexports.default = {\n HomePage: \"home_page\",\n RoomView: \"room_view\",\n UserSettings: \"user_settings\",\n CreateRoom: \"create_room\",\n RoomDirectory: \"room_directory\",\n UserView: \"user_view\",\n GroupView: \"group_view\",\n MyGroups: \"my_groups\"\n};\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=PageTypes.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar Matrix = _interopRequireWildcard(_matrixJsSdk);\n\nvar _SettingsStore = require('./settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\n/*\n Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nexports.default = {\n getDevices: function getDevices() {\n // Only needed for Electron atm, though should work in modern browsers\n // once permission has been granted to the webapp\n return navigator.mediaDevices.enumerateDevices().then(function (devices) {\n var audiooutput = [];\n var audioinput = [];\n var videoinput = [];\n\n if (devices.some(function (device) {\n return !device.label;\n })) return false;\n\n devices.forEach(function (device) {\n switch (device.kind) {\n case 'audiooutput':\n audiooutput.push(device);break;\n case 'audioinput':\n audioinput.push(device);break;\n case 'videoinput':\n videoinput.push(device);break;\n }\n });\n\n // console.log(\"Loaded WebRTC Devices\", mediaDevices);\n return {\n audiooutput: audiooutput,\n audioinput: audioinput,\n videoinput: videoinput\n };\n }, function (error) {\n console.log('Unable to refresh WebRTC Devices: ', error);\n });\n },\n\n loadDevices: function loadDevices() {\n var audioOutDeviceId = _SettingsStore2.default.getValue(\"webrtc_audiooutput\");\n var audioDeviceId = _SettingsStore2.default.getValue(\"webrtc_audioinput\");\n var videoDeviceId = _SettingsStore2.default.getValue(\"webrtc_videoinput\");\n\n Matrix.setMatrixCallAudioOutput(audioOutDeviceId);\n Matrix.setMatrixCallAudioInput(audioDeviceId);\n Matrix.setMatrixCallVideoInput(videoDeviceId);\n },\n\n setAudioOutput: function setAudioOutput(deviceId) {\n _SettingsStore2.default.setValue(\"webrtc_audiooutput\", null, _SettingsStore.SettingLevel.DEVICE, deviceId);\n Matrix.setMatrixCallAudioOutput(deviceId);\n },\n\n setAudioInput: function setAudioInput(deviceId) {\n _SettingsStore2.default.setValue(\"webrtc_audioinput\", null, _SettingsStore.SettingLevel.DEVICE, deviceId);\n Matrix.setMatrixCallAudioInput(deviceId);\n },\n\n setVideoInput: function setVideoInput(deviceId) {\n _SettingsStore2.default.setValue(\"webrtc_videoinput\", null, _SettingsStore.SettingLevel.DEVICE, deviceId);\n Matrix.setMatrixCallVideoInput(deviceId);\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=CallMediaHandler.js.map","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxStoreGroup\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * FluxStoreGroup allows you to execute a callback on every dispatch after\n * waiting for each of the given stores.\n */\n\nvar FluxStoreGroup = (function () {\n function FluxStoreGroup(stores, callback) {\n var _this = this;\n\n _classCallCheck(this, FluxStoreGroup);\n\n this._dispatcher = _getUniformDispatcher(stores);\n\n // precompute store tokens\n var storeTokens = stores.map(function (store) {\n return store.getDispatchToken();\n });\n\n // register with the dispatcher\n this._dispatchToken = this._dispatcher.register(function (payload) {\n _this._dispatcher.waitFor(storeTokens);\n callback();\n });\n }\n\n FluxStoreGroup.prototype.release = function release() {\n this._dispatcher.unregister(this._dispatchToken);\n };\n\n return FluxStoreGroup;\n})();\n\nfunction _getUniformDispatcher(stores) {\n !(stores && stores.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Must provide at least one store to FluxStoreGroup') : invariant(false) : undefined;\n var dispatcher = stores[0].getDispatcher();\n if (process.env.NODE_ENV !== 'production') {\n for (var _iterator = stores, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var store = _ref;\n\n !(store.getDispatcher() === dispatcher) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'All stores in a FluxStoreGroup must use the same dispatcher') : invariant(false) : undefined;\n }\n }\n return dispatcher;\n}\n\nmodule.exports = FluxStoreGroup;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxReduceStore\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FluxStore = require('./FluxStore');\n\nvar abstractMethod = require('./abstractMethod');\nvar invariant = require('fbjs/lib/invariant');\n\nvar FluxReduceStore = (function (_FluxStore) {\n _inherits(FluxReduceStore, _FluxStore);\n\n function FluxReduceStore(dispatcher) {\n _classCallCheck(this, FluxReduceStore);\n\n _FluxStore.call(this, dispatcher);\n this._state = this.getInitialState();\n }\n\n /**\n * Getter that exposes the entire state of this store. If your state is not\n * immutable you should override this and not expose _state directly.\n */\n\n FluxReduceStore.prototype.getState = function getState() {\n return this._state;\n };\n\n /**\n * Constructs the initial state for this store. This is called once during\n * construction of the store.\n */\n\n FluxReduceStore.prototype.getInitialState = function getInitialState() {\n return abstractMethod('FluxReduceStore', 'getInitialState');\n };\n\n /**\n * Used to reduce a stream of actions coming from the dispatcher into a\n * single state object\n */\n\n FluxReduceStore.prototype.reduce = function reduce(state, action) {\n return abstractMethod('FluxReduceStore', 'reduce');\n };\n\n /**\n * Checks if two versions of state are the same. You do not need to override\n * this if your state is immutable.\n */\n\n FluxReduceStore.prototype.areEqual = function areEqual(one, two) {\n return one === two;\n };\n\n /**\n * Use reduce and track _state instead of using __onDispatch\n */\n\n FluxReduceStore.prototype.__invokeOnDispatch = function __invokeOnDispatch(action) {\n this.__changed = false;\n\n // reduce the stream of incoming actions to state, update when necessary\n var startingState = this._state;\n var endingState = this.reduce(startingState, action);\n\n // This means your ending state should never be undefined\n !(endingState !== undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s returned undefined from reduce(...), did you forget to return ' + 'state in the default case? (use null if this was intentional)', this.constructor.name) : invariant(false) : undefined;\n\n if (!this.areEqual(startingState, endingState)) {\n this._state = endingState;\n\n // `__emitChange()` sets `this.__changed` to true and then the actual\n // change will be fired from the emitter at the end of the dispatch, this\n // is required in order to support methods like `hasChanged()`\n this.__emitChange();\n }\n\n if (this.__changed) {\n this.__emitter.emit(this.__changeEvent);\n }\n };\n\n return FluxReduceStore;\n})(FluxStore);\n\nmodule.exports = FluxReduceStore;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxStore\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _require = require('fbemitter');\n\nvar EventEmitter = _require.EventEmitter;\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * This class should be extended by the stores in your application, like so:\n *\n * var FluxStore = require('FluxStore');\n * var MyDispatcher = require('MyDispatcher');\n *\n * var _foo;\n *\n * class MyStore extends FluxStore {\n *\n * getFoo() {\n * return _foo;\n * }\n *\n * __onDispatch = function(action) {\n * switch(action.type) {\n *\n * case 'an-action':\n * changeState(action.someData);\n * this.__emitChange();\n * break;\n *\n * case 'another-action':\n * changeStateAnotherWay(action.otherData);\n * this.__emitChange();\n * break;\n *\n * default:\n * // no op\n * }\n * }\n *\n * }\n *\n * module.exports = new MyStore(MyDispatcher);\n */\n\nvar FluxStore = (function () {\n\n /**\n * @public\n * @param {Dispatcher} dispatcher\n */\n\n function FluxStore(dispatcher) {\n var _this = this;\n\n _classCallCheck(this, FluxStore);\n\n this.__className = this.constructor.name;\n\n this.__changed = false;\n this.__changeEvent = 'change';\n this.__dispatcher = dispatcher;\n this.__emitter = new EventEmitter();\n this._dispatchToken = dispatcher.register(function (payload) {\n _this.__invokeOnDispatch(payload);\n });\n }\n\n /**\n * @public\n * @param {function} callback\n * @return {object} EmitterSubscription that can be used with\n * SubscriptionsHandler or directly used to release the subscription.\n */\n\n FluxStore.prototype.addListener = function addListener(callback) {\n return this.__emitter.addListener(this.__changeEvent, callback);\n };\n\n /**\n * @public\n * @return {Dispatcher} The dispatcher that this store is registered with.\n */\n\n FluxStore.prototype.getDispatcher = function getDispatcher() {\n return this.__dispatcher;\n };\n\n /**\n * @public\n * @return {string} A string the dispatcher uses to identify each store's\n * registered callback. This is used with the dispatcher's waitFor method\n * to declaratively depend on other stores updating themselves first.\n */\n\n FluxStore.prototype.getDispatchToken = function getDispatchToken() {\n return this._dispatchToken;\n };\n\n /**\n * @public\n * @return {boolean} Whether the store has changed during the most recent\n * dispatch.\n */\n\n FluxStore.prototype.hasChanged = function hasChanged() {\n !this.__dispatcher.isDispatching() ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.hasChanged(): Must be invoked while dispatching.', this.__className) : invariant(false) : undefined;\n return this.__changed;\n };\n\n /**\n * @protected\n * Emit an event notifying listeners that the state of the store has changed.\n */\n\n FluxStore.prototype.__emitChange = function __emitChange() {\n !this.__dispatcher.isDispatching() ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.__emitChange(): Must be invoked while dispatching.', this.__className) : invariant(false) : undefined;\n this.__changed = true;\n };\n\n /**\n * This method encapsulates all logic for invoking __onDispatch. It should\n * be used for things like catching changes and emitting them after the\n * subclass has handled a payload.\n *\n * @protected\n * @param {object} payload The data dispatched by the dispatcher, describing\n * something that has happened in the real world: the user clicked, the\n * server responded, time passed, etc.\n */\n\n FluxStore.prototype.__invokeOnDispatch = function __invokeOnDispatch(payload) {\n this.__changed = false;\n this.__onDispatch(payload);\n if (this.__changed) {\n this.__emitter.emit(this.__changeEvent);\n }\n };\n\n /**\n * The callback that will be registered with the dispatcher during\n * instantiation. Subclasses must override this method. This callback is the\n * only way the store receives new data.\n *\n * @protected\n * @override\n * @param {object} payload The data dispatched by the dispatcher, describing\n * something that has happened in the real world: the user clicked, the\n * server responded, time passed, etc.\n */\n\n FluxStore.prototype.__onDispatch = function __onDispatch(payload) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s has not overridden FluxStore.__onDispatch(), which is required', this.__className) : invariant(false) : undefined;\n };\n\n return FluxStore;\n})();\n\nmodule.exports = FluxStore;\n\n// private\n\n// protected, available to subclasses","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n * \n * @providesModule EmitterSubscription\n * @typechecks\n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar EventSubscription = require('./EventSubscription');\n\n/**\n * EmitterSubscription represents a subscription with listener and context data.\n */\n\nvar EmitterSubscription = (function (_EventSubscription) {\n _inherits(EmitterSubscription, _EventSubscription);\n\n /**\n * @param {EventSubscriptionVendor} subscriber - The subscriber that controls\n * this subscription\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n\n function EmitterSubscription(subscriber, listener, context) {\n _classCallCheck(this, EmitterSubscription);\n\n _EventSubscription.call(this, subscriber);\n this.listener = listener;\n this.context = context;\n }\n\n return EmitterSubscription;\n})(EventSubscription);\n\nmodule.exports = EmitterSubscription;","module.exports = { \"default\": require(\"core-js/library/fn/number/max-safe-integer\"), __esModule: true };","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _Analytics = require('../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _actionCreators = require('./actionCreators');\n\nvar _TagOrderStore = require('../stores/TagOrderStore');\n\nvar _TagOrderStore2 = _interopRequireDefault(_TagOrderStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TagOrderActions = {};\n\n/**\n * Creates an action thunk that will do an asynchronous request to\n * move a tag in TagOrderStore to destinationIx.\n *\n * @param {MatrixClient} matrixClient the matrix client to set the\n * account data on.\n * @param {string} tag the tag to move.\n * @param {number} destinationIx the new position of the tag.\n * @returns {function} an action thunk that will dispatch actions\n * indicating the status of the request.\n * @see asyncAction\n */\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nTagOrderActions.moveTag = function (matrixClient, tag, destinationIx) {\n // Only commit tags if the state is ready, i.e. not null\n var tags = _TagOrderStore2.default.getOrderedTags();\n var removedTags = _TagOrderStore2.default.getRemovedTagsAccountData() || [];\n if (!tags) {\n return;\n }\n\n tags = tags.filter(function (t) {\n return t !== tag;\n });\n tags = [].concat((0, _toConsumableArray3.default)(tags.slice(0, destinationIx)), [tag], (0, _toConsumableArray3.default)(tags.slice(destinationIx)));\n\n removedTags = removedTags.filter(function (t) {\n return t !== tag;\n });\n\n var storeId = _TagOrderStore2.default.getStoreId();\n\n return (0, _actionCreators.asyncAction)('TagOrderActions.moveTag', function () {\n _Analytics2.default.trackEvent('TagOrderActions', 'commitTagOrdering');\n return matrixClient.setAccountData('im.vector.web.tag_ordering', { tags: tags, removedTags: removedTags, _storeId: storeId });\n }, function () {\n // For an optimistic update\n return { tags: tags, removedTags: removedTags };\n });\n};\n\n/**\n * Creates an action thunk that will do an asynchronous request to\n * label a tag as removed in im.vector.web.tag_ordering account data.\n *\n * The reason this is implemented with new state `removedTags` is that\n * we incrementally and initially populate `tags` with groups that\n * have been joined. If we remove a group from `tags`, it will just\n * get added (as it looks like a group we've recently joined).\n *\n * NB: If we ever support adding of tags (which is planned), we should\n * take special care to remove the tag from `removedTags` when we add\n * it.\n *\n * @param {MatrixClient} matrixClient the matrix client to set the\n * account data on.\n * @param {string} tag the tag to remove.\n * @returns {function} an action thunk that will dispatch actions\n * indicating the status of the request.\n * @see asyncAction\n */\nTagOrderActions.removeTag = function (matrixClient, tag) {\n // Don't change tags, just removedTags\n var tags = _TagOrderStore2.default.getOrderedTags();\n var removedTags = _TagOrderStore2.default.getRemovedTagsAccountData() || [];\n\n if (removedTags.includes(tag)) {\n // Return a thunk that doesn't do anything, we don't even need\n // an asynchronous action here, the tag is already removed.\n return function () {};\n }\n\n removedTags.push(tag);\n\n var storeId = _TagOrderStore2.default.getStoreId();\n\n return (0, _actionCreators.asyncAction)('TagOrderActions.removeTag', function () {\n _Analytics2.default.trackEvent('TagOrderActions', 'removeTag');\n return matrixClient.setAccountData('im.vector.web.tag_ordering', { tags: tags, removedTags: removedTags, _storeId: storeId });\n }, function () {\n // For an optimistic update\n return { removedTags: removedTags };\n });\n};\n\nexports.default = TagOrderActions;\nmodule.exports = exports['default'];\n//# sourceMappingURL=TagOrderActions.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _actionCreators = require('./actionCreators');\n\nvar _RoomListStore = require('../stores/RoomListStore');\n\nvar _RoomListStore2 = _interopRequireDefault(_RoomListStore);\n\nvar _Modal = require('../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _Rooms = require('../Rooms');\n\nvar Rooms = _interopRequireWildcard(_Rooms);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar RoomListActions = {};\n\n/**\n * Creates an action thunk that will do an asynchronous request to\n * tag room.\n *\n * @param {MatrixClient} matrixClient the matrix client to set the\n * account data on.\n * @param {Room} room the room to tag.\n * @param {string} oldTag the tag to remove (unless oldTag ==== newTag)\n * @param {string} newTag the tag with which to tag the room.\n * @param {?number} oldIndex the previous position of the room in the\n * list of rooms.\n * @param {?number} newIndex the new position of the room in the list\n * of rooms.\n * @returns {function} an action thunk.\n * @see asyncAction\n */\nRoomListActions.tagRoom = function (matrixClient, room, oldTag, newTag, oldIndex, newIndex) {\n var metaData = null;\n\n // Is the tag ordered manually?\n if (newTag && !newTag.match(/^(m\\.lowpriority|im\\.vector\\.fake\\.(invite|recent|direct|archived))$/)) {\n var lists = _RoomListStore2.default.getRoomLists();\n var newList = [].concat((0, _toConsumableArray3.default)(lists[newTag]));\n\n newList.sort(function (a, b) {\n return a.tags[newTag].order - b.tags[newTag].order;\n });\n\n // If the room was moved \"down\" (increasing index) in the same list we\n // need to use the orders of the tiles with indices shifted by +1\n var offset = newTag === oldTag && oldIndex < newIndex ? 1 : 0;\n\n var indexBefore = offset + newIndex - 1;\n var indexAfter = offset + newIndex;\n\n var prevOrder = indexBefore <= 0 ? 0 : newList[indexBefore].tags[newTag].order;\n var nextOrder = indexAfter >= newList.length ? 1 : newList[indexAfter].tags[newTag].order;\n\n metaData = {\n order: (prevOrder + nextOrder) / 2.0\n };\n }\n\n return (0, _actionCreators.asyncAction)('RoomListActions.tagRoom', function () {\n var promises = [];\n var roomId = room.roomId;\n\n // Evil hack to get DMs behaving\n if (oldTag === undefined && newTag === 'im.vector.fake.direct' || oldTag === 'im.vector.fake.direct' && newTag === undefined) {\n return Rooms.guessAndSetDMRoom(room, newTag === 'im.vector.fake.direct').catch(function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to set direct chat tag \" + err);\n _Modal2.default.createTrackedDialog('Failed to set direct chat tag', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to set direct chat tag'),\n description: err && err.message ? err.message : (0, _languageHandler._t)('Operation failed')\n });\n });\n }\n\n var hasChangedSubLists = oldTag !== newTag;\n\n // More evilness: We will still be dealing with moving to favourites/low prio,\n // but we avoid ever doing a request with 'im.vector.fake.direct`.\n //\n // if we moved lists, remove the old tag\n if (oldTag && oldTag !== 'im.vector.fake.direct' && hasChangedSubLists) {\n var promiseToDelete = matrixClient.deleteRoomTag(roomId, oldTag).catch(function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to remove tag \" + oldTag + \" from room: \" + err);\n _Modal2.default.createTrackedDialog('Failed to remove tag from room', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to remove tag %(tagName)s from room', { tagName: oldTag }),\n description: err && err.message ? err.message : (0, _languageHandler._t)('Operation failed')\n });\n });\n\n promises.push(promiseToDelete);\n }\n\n // if we moved lists or the ordering changed, add the new tag\n if (newTag && newTag !== 'im.vector.fake.direct' && (hasChangedSubLists || metaData)) {\n // metaData is the body of the PUT to set the tag, so it must\n // at least be an empty object.\n metaData = metaData || {};\n\n var promiseToAdd = matrixClient.setRoomTag(roomId, newTag, metaData).catch(function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to add tag \" + newTag + \" to room: \" + err);\n _Modal2.default.createTrackedDialog('Failed to add tag to room', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to add tag %(tagName)s to room', { tagName: newTag }),\n description: err && err.message ? err.message : (0, _languageHandler._t)('Operation failed')\n });\n\n throw err;\n });\n\n promises.push(promiseToAdd);\n }\n\n return _promise2.default.all(promises);\n }, function () {\n // For an optimistic update\n return {\n room: room, oldTag: oldTag, newTag: newTag, metaData: metaData\n };\n });\n};\n\nexports.default = RoomListActions;\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomListActions.js.map","module.exports = { \"default\": require(\"core-js/library/fn/map\"), __esModule: true };","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.loadSession = undefined;\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\n/**\n * Called at startup, to attempt to build a logged-in Matrix session. It tries\n * a number of things:\n *\n *\n * 1. if we have a guest access token in the fragment query params, it uses\n * that.\n *\n * 2. if an access token is stored in local storage (from a previous session),\n * it uses that.\n *\n * 3. it attempts to auto-register as a guest user.\n *\n * If any of steps 1-4 are successful, it will call {_doSetLoggedIn}, which in\n * turn will raise on_logged_in and will_start_client events.\n *\n * @param {object} opts\n *\n * @param {object} opts.fragmentQueryParams: string->string map of the\n * query-parameters extracted from the #-fragment of the starting URI.\n *\n * @param {boolean} opts.enableGuest: set to true to enable guest access tokens\n * and auto-guest registrations.\n *\n * @params {string} opts.guestHsUrl: homeserver URL. Only used if enableGuest is\n * true; defines the HS to register against.\n *\n * @params {string} opts.guestIsUrl: homeserver URL. Only used if enableGuest is\n * true; defines the IS to use.\n *\n * @returns {Promise} a promise which resolves when the above process completes.\n * Resolves to `true` if we ended up starting a session, or `false` if we\n * failed.\n */\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar loadSession = exports.loadSession = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(opts) {\n var enableGuest, guestHsUrl, guestIsUrl, fragmentQueryParams, defaultDeviceDisplayName, success;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n enableGuest = opts.enableGuest || false;\n guestHsUrl = opts.guestHsUrl;\n guestIsUrl = opts.guestIsUrl;\n fragmentQueryParams = opts.fragmentQueryParams || {};\n defaultDeviceDisplayName = opts.defaultDeviceDisplayName;\n\n\n if (!guestHsUrl) {\n console.warn(\"Cannot enable guest access: can't determine HS URL to use\");\n enableGuest = false;\n }\n\n if (!(enableGuest && fragmentQueryParams.guest_user_id && fragmentQueryParams.guest_access_token)) {\n _context.next = 10;\n break;\n }\n\n console.log(\"Using guest access credentials\");\n return _context.abrupt('return', _doSetLoggedIn({\n userId: fragmentQueryParams.guest_user_id,\n accessToken: fragmentQueryParams.guest_access_token,\n homeserverUrl: guestHsUrl,\n identityServerUrl: guestIsUrl,\n guest: true\n }, true).then(function () {\n return true;\n }));\n\n case 10:\n _context.next = 12;\n return (0, _bluebird.resolve)(_restoreFromLocalStorage());\n\n case 12:\n success = _context.sent;\n\n if (!success) {\n _context.next = 15;\n break;\n }\n\n return _context.abrupt('return', true);\n\n case 15:\n if (!enableGuest) {\n _context.next = 17;\n break;\n }\n\n return _context.abrupt('return', _registerAsGuest(guestHsUrl, guestIsUrl, defaultDeviceDisplayName));\n\n case 17:\n return _context.abrupt('return', false);\n\n case 20:\n _context.prev = 20;\n _context.t0 = _context['catch'](0);\n return _context.abrupt('return', _handleLoadSessionFailure(_context.t0));\n\n case 23:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 20]]);\n }));\n\n return function loadSession(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * @param {Object} queryParams string->string map of the\n * query-parameters extracted from the real query-string of the starting\n * URI.\n *\n * @param {String} defaultDeviceDisplayName\n *\n * @returns {Promise} promise which resolves to true if we completed the token\n * login, else false\n */\n\n\n// returns a promise which resolves to true if a session is found in\n// localstorage\n//\n// N.B. Lifecycle.js should not maintain any further localStorage state, we\n// are moving towards using SessionStore to keep track of state related\n// to the current session (which is typically backed by localStorage).\n//\n// The plan is to gradually move the localStorage access done here into\n// SessionStore to avoid bugs where the view becomes out-of-sync with\n// localStorage (e.g. teamToken, isGuest etc.)\nvar _restoreFromLocalStorage = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var hsUrl, isUrl, accessToken, userId, deviceId, isGuest;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (localStorage) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt('return', false);\n\n case 2:\n hsUrl = localStorage.getItem(\"mx_hs_url\");\n isUrl = localStorage.getItem(\"mx_is_url\") || 'https://matrix.org';\n accessToken = localStorage.getItem(\"mx_access_token\");\n userId = localStorage.getItem(\"mx_user_id\");\n deviceId = localStorage.getItem(\"mx_device_id\");\n isGuest = void 0;\n\n if (localStorage.getItem(\"mx_is_guest\") !== null) {\n isGuest = localStorage.getItem(\"mx_is_guest\") === \"true\";\n } else {\n // legacy key name\n isGuest = localStorage.getItem(\"matrix-is-guest\") === \"true\";\n }\n\n if (!(accessToken && userId && hsUrl)) {\n _context2.next = 16;\n break;\n }\n\n console.log('Restoring session for ' + userId);\n _context2.next = 13;\n return (0, _bluebird.resolve)(_doSetLoggedIn({\n userId: userId,\n deviceId: deviceId,\n accessToken: accessToken,\n homeserverUrl: hsUrl,\n identityServerUrl: isUrl,\n guest: isGuest\n }, false));\n\n case 13:\n return _context2.abrupt('return', true);\n\n case 16:\n console.log(\"No previous session found.\");\n return _context2.abrupt('return', false);\n\n case 18:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function _restoreFromLocalStorage() {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * fires on_logging_in, optionally clears localstorage, persists new credentials\n * to localstorage, starts the new client.\n *\n * @param {MatrixClientCreds} credentials\n * @param {Boolean} clearStorage\n *\n * @returns {Promise} promise which resolves to the new MatrixClient once it has been started\n */\nvar _doSetLoggedIn = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(credentials, clearStorage) {\n var teamPromise;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n credentials.guest = Boolean(credentials.guest);\n\n console.log(\"setLoggedIn: mxid: \" + credentials.userId + \" deviceId: \" + credentials.deviceId + \" guest: \" + credentials.guest + \" hs: \" + credentials.homeserverUrl);\n\n // This is dispatched to indicate that the user is still in the process of logging in\n // because `teamPromise` may take some time to resolve, breaking the assumption that\n // `setLoggedIn` takes an \"instant\" to complete, and dispatch `on_logged_in` a few ms\n // later than MatrixChat might assume.\n //\n // we fire it *synchronously* to make sure it fires before on_logged_in.\n // (dis.dispatch uses `setTimeout`, which does not guarantee ordering.)\n _dispatcher2.default.dispatch({ action: 'on_logging_in' }, true);\n\n if (!clearStorage) {\n _context3.next = 6;\n break;\n }\n\n _context3.next = 6;\n return (0, _bluebird.resolve)(_clearStorage());\n\n case 6:\n\n _Analytics2.default.setLoggedIn(credentials.guest, credentials.homeserverUrl, credentials.identityServerUrl);\n\n // Resolves by default\n teamPromise = _bluebird2.default.resolve(null);\n\n\n if (localStorage) {\n try {\n _persistCredentialsToLocalStorage(credentials);\n\n // The user registered as a PWLU (PassWord-Less User), the generated password\n // is cached here such that the user can change it at a later time.\n if (credentials.password) {\n // Update SessionStore\n _dispatcher2.default.dispatch({\n action: 'cached_password',\n cachedPassword: credentials.password\n });\n }\n } catch (e) {\n console.warn(\"Error using local storage: can't persist session!\", e);\n }\n\n if (rtsClient && !credentials.guest) {\n teamPromise = rtsClient.login(credentials.userId).then(function (body) {\n if (body.team_token) {\n localStorage.setItem(\"mx_team_token\", body.team_token);\n }\n return body.team_token;\n }, function (err) {\n console.warn('Failed to get team token on login: ' + err);\n return null;\n });\n }\n } else {\n console.warn(\"No local storage available: can't persist session!\");\n }\n\n _MatrixClientPeg2.default.replaceUsingCreds(credentials);\n\n teamPromise.then(function (teamToken) {\n _dispatcher2.default.dispatch({ action: 'on_logged_in', teamToken: teamToken });\n });\n\n _context3.next = 13;\n return (0, _bluebird.resolve)(startMatrixClient());\n\n case 13:\n return _context3.abrupt('return', _MatrixClientPeg2.default.get());\n\n case 14:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function _doSetLoggedIn(_x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * Starts the matrix client and all other react-sdk services that\n * listen for events while a session is logged in.\n */\nvar startMatrixClient = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n console.log('Lifecycle: Starting MatrixClient');\n\n // dispatch this before starting the matrix client: it's used\n // to add listeners for the 'sync' event so otherwise we'd have\n // a race condition (and we need to dispatch synchronously for this\n // to work).\n _dispatcher2.default.dispatch({ action: 'will_start_client' }, true);\n\n _Notifier2.default.start();\n _UserActivity2.default.start();\n _Presence2.default.start();\n _DMRoomMap2.default.makeShared().start();\n _ActiveWidgetStore2.default.start();\n\n _context4.next = 9;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.start());\n\n case 9:\n\n // dispatch that we finished starting up to wire up any other bits\n // of the matrix client that cannot be set prior to starting up.\n _dispatcher2.default.dispatch({ action: 'client_started' });\n\n case 10:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n return function startMatrixClient() {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/*\n * Stops a running client and all related services, and clears persistent\n * storage. Used after a session has been logged out.\n */\n\n\nexports.attemptTokenLogin = attemptTokenLogin;\nexports.handleInvalidStoreError = handleInvalidStoreError;\nexports.initRtsClient = initRtsClient;\nexports.setLoggedIn = setLoggedIn;\nexports.logout = logout;\nexports.isLoggingOut = isLoggingOut;\nexports.onLoggedOut = onLoggedOut;\nexports.stopMatrixClient = stopMatrixClient;\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _createMatrixClient = require('./utils/createMatrixClient');\n\nvar _createMatrixClient2 = _interopRequireDefault(_createMatrixClient);\n\nvar _Analytics = require('./Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _Notifier = require('./Notifier');\n\nvar _Notifier2 = _interopRequireDefault(_Notifier);\n\nvar _UserActivity = require('./UserActivity');\n\nvar _UserActivity2 = _interopRequireDefault(_UserActivity);\n\nvar _Presence = require('./Presence');\n\nvar _Presence2 = _interopRequireDefault(_Presence);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _DMRoomMap = require('./utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _RtsClient = require('./RtsClient');\n\nvar _RtsClient2 = _interopRequireDefault(_RtsClient);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ActiveWidgetStore = require('./stores/ActiveWidgetStore');\n\nvar _ActiveWidgetStore2 = _interopRequireDefault(_ActiveWidgetStore);\n\nvar _PlatformPeg = require('./PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _Login = require('./Login');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction attemptTokenLogin(queryParams, defaultDeviceDisplayName) {\n if (!queryParams.loginToken) {\n return _bluebird2.default.resolve(false);\n }\n\n if (!queryParams.homeserver) {\n console.warn(\"Cannot log in with token: can't determine HS URL to use\");\n return _bluebird2.default.resolve(false);\n }\n\n return (0, _Login.sendLoginRequest)(queryParams.homeserver, queryParams.identityServer, \"m.login.token\", {\n token: queryParams.loginToken,\n initial_device_display_name: defaultDeviceDisplayName\n }).then(function (creds) {\n console.log(\"Logged in with token\");\n return _clearStorage().then(function () {\n _persistCredentialsToLocalStorage(creds);\n return true;\n });\n }).catch(function (err) {\n console.error(\"Failed to log in with login token: \" + err + \" \" + err.data);\n return false;\n });\n}\n\nfunction handleInvalidStoreError(e) {\n if (e.reason === _matrixJsSdk2.default.InvalidStoreError.TOGGLED_LAZY_LOADING) {\n return _bluebird2.default.resolve().then(function () {\n var lazyLoadEnabled = e.value;\n if (lazyLoadEnabled) {\n var LazyLoadingResyncDialog = _index2.default.getComponent(\"views.dialogs.LazyLoadingResyncDialog\");\n return new _bluebird2.default(function (resolve) {\n _Modal2.default.createDialog(LazyLoadingResyncDialog, {\n onFinished: resolve\n });\n });\n } else {\n // show warning about simultaneous use\n // between LL/non-LL version on same host.\n // as disabling LL when previously enabled\n // is a strong indicator of this (/develop & /app)\n var LazyLoadingDisabledDialog = _index2.default.getComponent(\"views.dialogs.LazyLoadingDisabledDialog\");\n return new _bluebird2.default(function (resolve) {\n _Modal2.default.createDialog(LazyLoadingDisabledDialog, {\n onFinished: resolve,\n host: window.location.host\n });\n });\n }\n }).then(function () {\n return _MatrixClientPeg2.default.get().store.deleteAllData();\n }).then(function () {\n _PlatformPeg2.default.get().reload();\n });\n }\n}\n\nfunction _registerAsGuest(hsUrl, isUrl, defaultDeviceDisplayName) {\n console.log('Doing guest login on ' + hsUrl);\n\n // TODO: we should probably de-duplicate this and Login.loginAsGuest.\n // Not really sure where the right home for it is.\n\n // create a temporary MatrixClient to do the login\n var client = _matrixJsSdk2.default.createClient({\n baseUrl: hsUrl\n });\n\n return client.registerGuest({\n body: {\n initial_device_display_name: defaultDeviceDisplayName\n }\n }).then(function (creds) {\n console.log('Registered as guest: ' + creds.user_id);\n return _doSetLoggedIn({\n userId: creds.user_id,\n deviceId: creds.device_id,\n accessToken: creds.access_token,\n homeserverUrl: hsUrl,\n identityServerUrl: isUrl,\n guest: true\n }, true).then(function () {\n return true;\n });\n }, function (err) {\n console.error(\"Failed to register as guest: \" + err + \" \" + err.data);\n return false;\n });\n}\n\nfunction _handleLoadSessionFailure(e) {\n console.log(\"Unable to load session\", e);\n\n var def = _bluebird2.default.defer();\n var SessionRestoreErrorDialog = _index2.default.getComponent('views.dialogs.SessionRestoreErrorDialog');\n\n _Modal2.default.createTrackedDialog('Session Restore Error', '', SessionRestoreErrorDialog, {\n error: e.message,\n onFinished: function onFinished(success) {\n def.resolve(success);\n }\n });\n\n return def.promise.then(function (success) {\n if (success) {\n // user clicked continue.\n _clearStorage();\n return false;\n }\n\n // try, try again\n return loadSession();\n });\n}\n\nvar rtsClient = null;\nfunction initRtsClient(url) {\n if (url) {\n rtsClient = new _RtsClient2.default(url);\n } else {\n rtsClient = null;\n }\n}\n\n/**\n * Transitions to a logged-in state using the given credentials.\n *\n * Starts the matrix client and all other react-sdk services that\n * listen for events while a session is logged in.\n *\n * Also stops the old MatrixClient and clears old credentials/etc out of\n * storage before starting the new client.\n *\n * @param {MatrixClientCreds} credentials The credentials to use\n *\n * @returns {Promise} promise which resolves to the new MatrixClient once it has been started\n */\nfunction setLoggedIn(credentials) {\n stopMatrixClient();\n return _doSetLoggedIn(credentials, true);\n}\n\nfunction _persistCredentialsToLocalStorage(credentials) {\n localStorage.setItem(\"mx_hs_url\", credentials.homeserverUrl);\n localStorage.setItem(\"mx_is_url\", credentials.identityServerUrl);\n localStorage.setItem(\"mx_user_id\", credentials.userId);\n localStorage.setItem(\"mx_access_token\", credentials.accessToken);\n localStorage.setItem(\"mx_is_guest\", (0, _stringify2.default)(credentials.guest));\n\n // if we didn't get a deviceId from the login, leave mx_device_id unset,\n // rather than setting it to \"undefined\".\n //\n // (in this case MatrixClient doesn't bother with the crypto stuff\n // - that's fine for us).\n if (credentials.deviceId) {\n localStorage.setItem(\"mx_device_id\", credentials.deviceId);\n }\n\n console.log('Session persisted for ' + credentials.userId);\n}\n\nvar _isLoggingOut = false;\n\n/**\n * Logs the current session out and transitions to the logged-out state\n */\nfunction logout() {\n if (!_MatrixClientPeg2.default.get()) return;\n\n if (_MatrixClientPeg2.default.get().isGuest()) {\n // logout doesn't work for guest sessions\n // Also we sometimes want to re-log in a guest session\n // if we abort the login\n\n // use settimeout to avoid racing with react unmounting components\n // which need a valid matrixclientpeg\n setTimeout(function () {\n onLoggedOut();\n }, 0);\n return;\n }\n\n _isLoggingOut = true;\n _MatrixClientPeg2.default.get().logout().then(onLoggedOut, function (err) {\n // Just throwing an error here is going to be very unhelpful\n // if you're trying to log out because your server's down and\n // you want to log into a different server, so just forget the\n // access token. It's annoying that this will leave the access\n // token still valid, but we should fix this by having access\n // tokens expire (and if you really think you've been compromised,\n // change your password).\n console.log(\"Failed to call logout API: token will not be invalidated\");\n onLoggedOut();\n }).done();\n}\n\nfunction isLoggingOut() {\n return _isLoggingOut;\n}function onLoggedOut() {\n _isLoggingOut = false;\n stopMatrixClient();\n _clearStorage().done();\n _dispatcher2.default.dispatch({ action: 'on_logged_out' });\n}\n\n/**\n * @returns {Promise} promise which resolves once the stores have been cleared\n */\nfunction _clearStorage() {\n _Analytics2.default.logout();\n\n if (window.localStorage) {\n window.localStorage.clear();\n }\n\n // create a temporary client to clear out the persistent stores.\n var cli = (0, _createMatrixClient2.default)({\n // we'll never make any requests, so can pass a bogus HS URL\n baseUrl: \"\"\n });\n return cli.clearStores();\n}\n\n/**\n * Stop all the background processes related to the current client.\n */\nfunction stopMatrixClient() {\n _Notifier2.default.stop();\n _UserActivity2.default.stop();\n _Presence2.default.stop();\n _ActiveWidgetStore2.default.stop();\n if (_DMRoomMap2.default.shared()) _DMRoomMap2.default.shared().stop();\n var cli = _MatrixClientPeg2.default.get();\n if (cli) {\n cli.stopClient();\n cli.removeAllListeners();\n _MatrixClientPeg2.default.unset();\n }\n}\n//# sourceMappingURL=Lifecycle.js.map","'use strict';\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MIN_DISPATCH_INTERVAL_MS = 500; /*\n Copyright 2015, 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar CURRENTLY_ACTIVE_THRESHOLD_MS = 2000;\n\n/**\n * This class watches for user activity (moving the mouse or pressing a key)\n * and dispatches the user_activity action at times when the user is interacting\n * with the app (but at a much lower frequency than mouse move events)\n */\n\nvar UserActivity = function () {\n function UserActivity() {\n (0, _classCallCheck3.default)(this, UserActivity);\n }\n\n (0, _createClass3.default)(UserActivity, [{\n key: 'start',\n\n /**\n * Start listening to user activity\n */\n value: function start() {\n document.onmousedown = this._onUserActivity.bind(this);\n document.onmousemove = this._onUserActivity.bind(this);\n document.onkeydown = this._onUserActivity.bind(this);\n // can't use document.scroll here because that's only the document\n // itself being scrolled. Need to use addEventListener's useCapture.\n // also this needs to be the wheel event, not scroll, as scroll is\n // fired when the view scrolls down for a new message.\n window.addEventListener('wheel', this._onUserActivity.bind(this), { passive: true, capture: true });\n this.lastActivityAtTs = new Date().getTime();\n this.lastDispatchAtTs = 0;\n this.activityEndTimer = undefined;\n }\n\n /**\n * Stop tracking user activity\n */\n\n }, {\n key: 'stop',\n value: function stop() {\n document.onmousedown = undefined;\n document.onmousemove = undefined;\n document.onkeydown = undefined;\n window.removeEventListener('wheel', this._onUserActivity.bind(this), { passive: true, capture: true });\n }\n\n /**\n * Return true if there has been user activity very recently\n * (ie. within a few seconds)\n * @returns {boolean} true if user is currently/very recently active\n */\n\n }, {\n key: 'userCurrentlyActive',\n value: function userCurrentlyActive() {\n return this.lastActivityAtTs > new Date().getTime() - CURRENTLY_ACTIVE_THRESHOLD_MS;\n }\n }, {\n key: '_onUserActivity',\n value: function _onUserActivity(event) {\n if (event.screenX && event.type === \"mousemove\") {\n if (event.screenX === this.lastScreenX && event.screenY === this.lastScreenY) {\n // mouse hasn't actually moved\n return;\n }\n this.lastScreenX = event.screenX;\n this.lastScreenY = event.screenY;\n }\n\n this.lastActivityAtTs = new Date().getTime();\n if (this.lastDispatchAtTs < this.lastActivityAtTs - MIN_DISPATCH_INTERVAL_MS) {\n this.lastDispatchAtTs = this.lastActivityAtTs;\n _dispatcher2.default.dispatch({\n action: 'user_activity'\n });\n if (!this.activityEndTimer) {\n this.activityEndTimer = setTimeout(this._onActivityEndTimer.bind(this), MIN_DISPATCH_INTERVAL_MS);\n }\n }\n }\n }, {\n key: '_onActivityEndTimer',\n value: function _onActivityEndTimer() {\n var now = new Date().getTime();\n var targetTime = this.lastActivityAtTs + MIN_DISPATCH_INTERVAL_MS;\n if (now >= targetTime) {\n _dispatcher2.default.dispatch({\n action: 'user_activity_end'\n });\n this.activityEndTimer = undefined;\n } else {\n this.activityEndTimer = setTimeout(this._onActivityEndTimer.bind(this), targetTime - now);\n }\n }\n }]);\n return UserActivity;\n}();\n\nmodule.exports = new UserActivity();\n//# sourceMappingURL=UserActivity.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sendLoginRequest = undefined;\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\n/**\n * Send a login request to the given server, and format the response\n * as a MatrixClientCreds\n *\n * @param {string} hsUrl the base url of the Homeserver used to log in.\n * @param {string} isUrl the base url of the default identity server\n * @param {string} loginType the type of login to do\n * @param {object} loginParams the parameters for the login\n *\n * @returns {MatrixClientCreds}\n */\nvar sendLoginRequest = exports.sendLoginRequest = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(hsUrl, isUrl, loginType, loginParams) {\n var client, data, wellknown;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n client = _matrixJsSdk2.default.createClient({\n baseUrl: hsUrl,\n idBaseUrl: isUrl\n });\n _context.next = 3;\n return (0, _bluebird.resolve)(client.login(loginType, loginParams));\n\n case 3:\n data = _context.sent;\n wellknown = data.well_known;\n\n if (wellknown) {\n if (wellknown[\"m.homeserver\"] && wellknown[\"m.homeserver\"][\"base_url\"]) {\n hsUrl = wellknown[\"m.homeserver\"][\"base_url\"];\n console.log(\"Overrode homeserver setting with \" + hsUrl + \" from login response\");\n }\n if (wellknown[\"m.identity_server\"] && wellknown[\"m.identity_server\"][\"base_url\"]) {\n // TODO: should we prompt here?\n isUrl = wellknown[\"m.identity_server\"][\"base_url\"];\n console.log(\"Overrode IS setting with \" + isUrl + \" from login response\");\n }\n }\n\n return _context.abrupt(\"return\", {\n homeserverUrl: hsUrl,\n identityServerUrl: isUrl,\n userId: data.user_id,\n deviceId: data.device_id,\n accessToken: data.access_token\n });\n\n case 7:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function sendLoginRequest(_x, _x2, _x3, _x4) {\n return _ref.apply(this, arguments);\n };\n}();\n\nvar _matrixJsSdk = require(\"matrix-js-sdk\");\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _url = require(\"url\");\n\nvar _url2 = _interopRequireDefault(_url);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar Login = function () {\n function Login(hsUrl, isUrl, fallbackHsUrl, opts) {\n (0, _classCallCheck3.default)(this, Login);\n\n this._hsUrl = hsUrl;\n this._isUrl = isUrl;\n this._fallbackHsUrl = fallbackHsUrl;\n this._currentFlowIndex = 0;\n this._flows = [];\n this._defaultDeviceDisplayName = opts.defaultDeviceDisplayName;\n }\n\n (0, _createClass3.default)(Login, [{\n key: \"getHomeserverUrl\",\n value: function getHomeserverUrl() {\n return this._hsUrl;\n }\n }, {\n key: \"getIdentityServerUrl\",\n value: function getIdentityServerUrl() {\n return this._isUrl;\n }\n }, {\n key: \"setHomeserverUrl\",\n value: function setHomeserverUrl(hsUrl) {\n this._hsUrl = hsUrl;\n }\n }, {\n key: \"setIdentityServerUrl\",\n value: function setIdentityServerUrl(isUrl) {\n this._isUrl = isUrl;\n }\n\n /**\n * Get a temporary MatrixClient, which can be used for login or register\n * requests.\n */\n\n }, {\n key: \"_createTemporaryClient\",\n value: function _createTemporaryClient() {\n return _matrixJsSdk2.default.createClient({\n baseUrl: this._hsUrl,\n idBaseUrl: this._isUrl\n });\n }\n }, {\n key: \"getFlows\",\n value: function getFlows() {\n var self = this;\n var client = this._createTemporaryClient();\n return client.loginFlows().then(function (result) {\n self._flows = result.flows;\n self._currentFlowIndex = 0;\n // technically the UI should display options for all flows for the\n // user to then choose one, so return all the flows here.\n return self._flows;\n });\n }\n }, {\n key: \"chooseFlow\",\n value: function chooseFlow(flowIndex) {\n this._currentFlowIndex = flowIndex;\n }\n }, {\n key: \"getCurrentFlowStep\",\n value: function getCurrentFlowStep() {\n // technically the flow can have multiple steps, but no one does this\n // for login so we can ignore it.\n var flowStep = this._flows[this._currentFlowIndex];\n return flowStep ? flowStep.type : null;\n }\n }, {\n key: \"loginAsGuest\",\n value: function loginAsGuest() {\n var _this = this;\n\n var client = this._createTemporaryClient();\n return client.registerGuest({\n body: {\n initial_device_display_name: this._defaultDeviceDisplayName\n }\n }).then(function (creds) {\n return {\n userId: creds.user_id,\n deviceId: creds.device_id,\n accessToken: creds.access_token,\n homeserverUrl: _this._hsUrl,\n identityServerUrl: _this._isUrl,\n guest: true\n };\n }, function (error) {\n throw error;\n });\n }\n }, {\n key: \"loginViaPassword\",\n value: function loginViaPassword(username, phoneCountry, phoneNumber, pass) {\n var _this2 = this;\n\n var self = this;\n\n var isEmail = username.indexOf(\"@\") > 0;\n\n var identifier = void 0;\n var legacyParams = void 0; // parameters added to support old HSes\n if (phoneCountry && phoneNumber) {\n identifier = {\n type: 'm.id.phone',\n country: phoneCountry,\n number: phoneNumber\n };\n // No legacy support for phone number login\n } else if (isEmail) {\n identifier = {\n type: 'm.id.thirdparty',\n medium: 'email',\n address: username\n };\n legacyParams = {\n medium: 'email',\n address: username\n };\n } else {\n identifier = {\n type: 'm.id.user',\n user: username\n };\n legacyParams = {\n user: username\n };\n }\n\n var loginParams = {\n password: pass,\n identifier: identifier,\n initial_device_display_name: this._defaultDeviceDisplayName\n };\n (0, _assign2.default)(loginParams, legacyParams);\n\n var tryFallbackHs = function tryFallbackHs(originalError) {\n return sendLoginRequest(self._fallbackHsUrl, _this2._isUrl, 'm.login.password', loginParams).catch(function (fallback_error) {\n console.log(\"fallback HS login failed\", fallback_error);\n // throw the original error\n throw originalError;\n });\n };\n\n var originalLoginError = null;\n return sendLoginRequest(self._hsUrl, self._isUrl, 'm.login.password', loginParams).catch(function (error) {\n originalLoginError = error;\n if (error.httpStatus === 403) {\n if (self._fallbackHsUrl) {\n return tryFallbackHs(originalLoginError);\n }\n }\n throw originalLoginError;\n }).catch(function (error) {\n console.log(\"Login failed\", error);\n throw error;\n });\n }\n }, {\n key: \"getSsoLoginUrl\",\n value: function getSsoLoginUrl(loginType) {\n var client = this._createTemporaryClient();\n var parsedUrl = _url2.default.parse(window.location.href, true);\n\n // XXX: at this point, the fragment will always be #/login, which is no\n // use to anyone. Ideally, we would get the intended fragment from\n // MatrixChat.screenAfterLogin so that you could follow #/room links etc\n // through an SSO login.\n parsedUrl.hash = \"\";\n\n parsedUrl.query[\"homeserver\"] = client.getHomeserverUrl();\n parsedUrl.query[\"identityServer\"] = client.getIdentityServerUrl();\n return client.getSsoLoginUrl(_url2.default.format(parsedUrl), loginType);\n }\n }]);\n return Login;\n}();\n\nexports.default = Login;\n//# sourceMappingURL=Login.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nexports.instanceForInstanceId = instanceForInstanceId;\nexports.protocolNameForInstanceId = protocolNameForInstanceId;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Find a protocol 'instance' with a given instance_id\n// in the supplied protocols dict\nfunction instanceForInstanceId(protocols, instance_id) {\n if (!instance_id) return null;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(protocols)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var proto = _step.value;\n\n if (!protocols[proto].instances && protocols[proto].instances instanceof Array) continue;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(protocols[proto].instances), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var instance = _step2.value;\n\n if (instance.instance_id == instance_id) return instance;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\n// given an instance_id, return the name of the protocol for\n// that instance ID in the supplied protocols dict\nfunction protocolNameForInstanceId(protocols, instance_id) {\n if (!instance_id) return null;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)((0, _keys2.default)(protocols)), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var proto = _step3.value;\n\n if (!protocols[proto].instances && protocols[proto].instances instanceof Array) continue;\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)(protocols[proto].instances), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var instance = _step4.value;\n\n if (instance.instance_id == instance_id) return proto;\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n}\n//# sourceMappingURL=DirectoryUtils.js.map","'use strict';\n\nexports.__esModule = true;\nexports.stateify = exports.TokenState = exports.CharacterState = undefined;\n\nvar _class = require('../utils/class');\n\nfunction createStateClass() {\n\treturn function (tClass) {\n\t\tthis.j = [];\n\t\tthis.T = tClass || null;\n\t};\n}\n\n/**\n\tA simple state machine that can emit token classes\n\n\tThe `j` property in this class refers to state jumps. It's a\n\tmultidimensional array where for each element:\n\n\t* index [0] is a symbol or class of symbols to transition to.\n\t* index [1] is a State instance which matches\n\n\tThe type of symbol will depend on the target implementation for this class.\n\tIn Linkify, we have a two-stage scanner. Each stage uses this state machine\n\tbut with a slighly different (polymorphic) implementation.\n\n\tThe `T` property refers to the token class.\n\n\tTODO: Can the `on` and `next` methods be combined?\n\n\t@class BaseState\n*/\nvar BaseState = createStateClass();\nBaseState.prototype = {\n\tdefaultTransition: false,\n\n\t/**\n \t@method constructor\n \t@param {Class} tClass Pass in the kind of token to emit if there are\n \t\tno jumps after this state and the state is accepting.\n */\n\n\t/**\n \tOn the given symbol(s), this machine should go to the given state\n \t\t@method on\n \t@param {Array|Mixed} symbol\n \t@param {BaseState} state Note that the type of this state should be the\n \t\tsame as the current instance (i.e., don't pass in a different\n \t\tsubclass)\n */\n\ton: function on(symbol, state) {\n\t\tif (symbol instanceof Array) {\n\t\t\tfor (var i = 0; i < symbol.length; i++) {\n\t\t\t\tthis.j.push([symbol[i], state]);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tthis.j.push([symbol, state]);\n\t\treturn this;\n\t},\n\n\n\t/**\n \tGiven the next item, returns next state for that item\n \t@method next\n \t@param {Mixed} item Should be an instance of the symbols handled by\n \t\tthis particular machine.\n \t@return {State} state Returns false if no jumps are available\n */\n\tnext: function next(item) {\n\t\tfor (var i = 0; i < this.j.length; i++) {\n\t\t\tvar jump = this.j[i];\n\t\t\tvar symbol = jump[0]; // Next item to check for\n\t\t\tvar state = jump[1]; // State to jump to if items match\n\n\t\t\t// compare item with symbol\n\t\t\tif (this.test(item, symbol)) {\n\t\t\t\treturn state;\n\t\t\t}\n\t\t}\n\n\t\t// Nowhere left to jump!\n\t\treturn this.defaultTransition;\n\t},\n\n\n\t/**\n \tDoes this state accept?\n \t`true` only of `this.T` exists\n \t\t@method accepts\n \t@return {Boolean}\n */\n\taccepts: function accepts() {\n\t\treturn !!this.T;\n\t},\n\n\n\t/**\n \tDetermine whether a given item \"symbolizes\" the symbol, where symbol is\n \ta class of items handled by this state machine.\n \t\tThis method should be overriden in extended classes.\n \t\t@method test\n \t@param {Mixed} item Does this item match the given symbol?\n \t@param {Mixed} symbol\n \t@return {Boolean}\n */\n\ttest: function test(item, symbol) {\n\t\treturn item === symbol;\n\t},\n\n\n\t/**\n \tEmit the token for this State (just return it in this case)\n \tIf this emits a token, this instance is an accepting state\n \t@method emit\n \t@return {Class} T\n */\n\temit: function emit() {\n\t\treturn this.T;\n\t}\n};\n\n/**\n\tState machine for string-based input\n\n\t@class CharacterState\n\t@extends BaseState\n*/\nvar CharacterState = (0, _class.inherits)(BaseState, createStateClass(), {\n\t/**\n \tDoes the given character match the given character or regular\n \texpression?\n \t\t@method test\n \t@param {String} char\n \t@param {String|RegExp} charOrRegExp\n \t@return {Boolean}\n */\n\ttest: function test(character, charOrRegExp) {\n\t\treturn character === charOrRegExp || charOrRegExp instanceof RegExp && charOrRegExp.test(character);\n\t}\n});\n\n/**\n\tState machine for input in the form of TextTokens\n\n\t@class TokenState\n\t@extends BaseState\n*/\nvar TokenState = (0, _class.inherits)(BaseState, createStateClass(), {\n\n\t/**\n * Similar to `on`, but returns the state the results in the transition from\n * the given item\n * @method jump\n * @param {Mixed} item\n * @param {Token} [token]\n * @return state\n */\n\tjump: function jump(token) {\n\t\tvar tClass = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\t\tvar state = this.next(new token('')); // dummy temp token\n\t\tif (state === this.defaultTransition) {\n\t\t\t// Make a new state!\n\t\t\tstate = new this.constructor(tClass);\n\t\t\tthis.on(token, state);\n\t\t} else if (tClass) {\n\t\t\tstate.T = tClass;\n\t\t}\n\t\treturn state;\n\t},\n\n\n\t/**\n \tIs the given token an instance of the given token class?\n \t\t@method test\n \t@param {TextToken} token\n \t@param {Class} tokenClass\n \t@return {Boolean}\n */\n\ttest: function test(token, tokenClass) {\n\t\treturn token instanceof tokenClass;\n\t}\n});\n\n/**\n\tGiven a non-empty target string, generates states (if required) for each\n\tconsecutive substring of characters in str starting from the beginning of\n\tthe string. The final state will have a special value, as specified in\n\toptions. All other \"in between\" substrings will have a default end state.\n\n\tThis turns the state machine into a Trie-like data structure (rather than a\n\tintelligently-designed DFA).\n\n\tNote that I haven't really tried these with any strings other than\n\tDOMAIN.\n\n\t@param {String} str\n\t@param {CharacterState} start State to jump from the first character\n\t@param {Class} endToken Token class to emit when the given string has been\n\t\tmatched and no more jumps exist.\n\t@param {Class} defaultToken \"Filler token\", or which token type to emit when\n\t\twe don't have a full match\n\t@return {Array} list of newly-created states\n*/\nfunction stateify(str, start, endToken, defaultToken) {\n\tvar i = 0,\n\t len = str.length,\n\t state = start,\n\t newStates = [],\n\t nextState = void 0;\n\n\t// Find the next state without a jump to the next character\n\twhile (i < len && (nextState = state.next(str[i]))) {\n\t\tstate = nextState;\n\t\ti++;\n\t}\n\n\tif (i >= len) {\n\t\treturn [];\n\t} // no new tokens were added\n\n\twhile (i < len - 1) {\n\t\tnextState = new CharacterState(defaultToken);\n\t\tnewStates.push(nextState);\n\t\tstate.on(str[i], nextState);\n\t\tstate = nextState;\n\t\ti++;\n\t}\n\n\tnextState = new CharacterState(endToken);\n\tnewStates.push(nextState);\n\tstate.on(str[len - 1], nextState);\n\n\treturn newStates;\n}\n\nexports.CharacterState = CharacterState;\nexports.TokenState = TokenState;\nexports.stateify = stateify;","\"use strict\";\n\nexports.__esModule = true;\nfunction createTokenClass() {\n\treturn function (value) {\n\t\tif (value) {\n\t\t\tthis.v = value;\n\t\t}\n\t};\n}\n\nexports.createTokenClass = createTokenClass;","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar extend = require('./extend');\nvar dis = require('./dispatcher');\nvar MatrixClientPeg = require('./MatrixClientPeg');\nvar sdk = require('./index');\n\nvar Modal = require('./Modal');\n\nvar encrypt = require(\"browser-encrypt-attachment\");\n\n// Polyfill for Canvas.toBlob API using Canvas.toDataURL\nrequire(\"blueimp-canvas-to-blob\");\n\nvar MAX_WIDTH = 800;\nvar MAX_HEIGHT = 600;\n\n/**\n * Create a thumbnail for a image DOM element.\n * The image will be smaller than MAX_WIDTH and MAX_HEIGHT.\n * The thumbnail will have the same aspect ratio as the original.\n * Draws the element into a canvas using CanvasRenderingContext2D.drawImage\n * Then calls Canvas.toBlob to get a blob object for the image data.\n *\n * Since it needs to calculate the dimensions of the source image and the\n * thumbnailed image it returns an info object filled out with information\n * about the original image and the thumbnail.\n *\n * @param {HTMLElement} element The element to thumbnail.\n * @param {integer} inputWidth The width of the image in the input element.\n * @param {integer} inputHeight the width of the image in the input element.\n * @param {String} mimeType The mimeType to save the blob as.\n * @return {Promise} A promise that resolves with an object with an info key\n * and a thumbnail key.\n */\nfunction createThumbnail(element, inputWidth, inputHeight, mimeType) {\n var deferred = _bluebird2.default.defer();\n\n var targetWidth = inputWidth;\n var targetHeight = inputHeight;\n if (targetHeight > MAX_HEIGHT) {\n targetWidth = Math.floor(targetWidth * (MAX_HEIGHT / targetHeight));\n targetHeight = MAX_HEIGHT;\n }\n if (targetWidth > MAX_WIDTH) {\n targetHeight = Math.floor(targetHeight * (MAX_WIDTH / targetWidth));\n targetWidth = MAX_WIDTH;\n }\n\n var canvas = document.createElement(\"canvas\");\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n canvas.getContext(\"2d\").drawImage(element, 0, 0, targetWidth, targetHeight);\n canvas.toBlob(function (thumbnail) {\n deferred.resolve({\n info: {\n thumbnail_info: {\n w: targetWidth,\n h: targetHeight,\n mimetype: thumbnail.type,\n size: thumbnail.size\n },\n w: inputWidth,\n h: inputHeight\n },\n thumbnail: thumbnail\n });\n }, mimeType);\n\n return deferred.promise;\n}\n\n/**\n * Load a file into a newly created image element.\n *\n * @param {File} file The file to load in an image element.\n * @return {Promise} A promise that resolves with the html image element.\n */\nfunction loadImageElement(imageFile) {\n var deferred = _bluebird2.default.defer();\n\n // Load the file into an html element\n var img = document.createElement(\"img\");\n var objectUrl = URL.createObjectURL(imageFile);\n img.src = objectUrl;\n\n // Once ready, create a thumbnail\n img.onload = function () {\n URL.revokeObjectURL(objectUrl);\n deferred.resolve(img);\n };\n img.onerror = function (e) {\n deferred.reject(e);\n };\n\n return deferred.promise;\n}\n\n/**\n * Read the metadata for an image file and create and upload a thumbnail of the image.\n *\n * @param {MatrixClient} matrixClient A matrixClient to upload the thumbnail with.\n * @param {String} roomId The ID of the room the image will be uploaded in.\n * @param {File} The image to read and thumbnail.\n * @return {Promise} A promise that resolves with the attachment info.\n */\nfunction infoForImageFile(matrixClient, roomId, imageFile) {\n var thumbnailType = \"image/png\";\n if (imageFile.type == \"image/jpeg\") {\n thumbnailType = \"image/jpeg\";\n }\n\n var imageInfo = void 0;\n return loadImageElement(imageFile).then(function (img) {\n return createThumbnail(img, img.width, img.height, thumbnailType);\n }).then(function (result) {\n imageInfo = result.info;\n return uploadFile(matrixClient, roomId, result.thumbnail);\n }).then(function (result) {\n imageInfo.thumbnail_url = result.url;\n imageInfo.thumbnail_file = result.file;\n return imageInfo;\n });\n}\n\n/**\n * Load a file into a newly created video element.\n *\n * @param {File} file The file to load in an video element.\n * @return {Promise} A promise that resolves with the video image element.\n */\nfunction loadVideoElement(videoFile) {\n var deferred = _bluebird2.default.defer();\n\n // Load the file into an html element\n var video = document.createElement(\"video\");\n\n var reader = new FileReader();\n reader.onload = function (e) {\n video.src = e.target.result;\n\n // Once ready, returns its size\n // Wait until we have enough data to thumbnail the first frame.\n video.onloadeddata = function () {\n deferred.resolve(video);\n };\n video.onerror = function (e) {\n deferred.reject(e);\n };\n };\n reader.onerror = function (e) {\n deferred.reject(e);\n };\n reader.readAsDataURL(videoFile);\n\n return deferred.promise;\n}\n\n/**\n * Read the metadata for a video file and create and upload a thumbnail of the video.\n *\n * @param {MatrixClient} matrixClient A matrixClient to upload the thumbnail with.\n * @param {String} roomId The ID of the room the video will be uploaded to.\n * @param {File} The video to read and thumbnail.\n * @return {Promise} A promise that resolves with the attachment info.\n */\nfunction infoForVideoFile(matrixClient, roomId, videoFile) {\n var thumbnailType = \"image/jpeg\";\n\n var videoInfo = void 0;\n return loadVideoElement(videoFile).then(function (video) {\n return createThumbnail(video, video.videoWidth, video.videoHeight, thumbnailType);\n }).then(function (result) {\n videoInfo = result.info;\n return uploadFile(matrixClient, roomId, result.thumbnail);\n }).then(function (result) {\n videoInfo.thumbnail_url = result.url;\n videoInfo.thumbnail_file = result.file;\n return videoInfo;\n });\n}\n\n/**\n * Read the file as an ArrayBuffer.\n * @return {Promise} A promise that resolves with an ArrayBuffer when the file\n * is read.\n */\nfunction readFileAsArrayBuffer(file) {\n var deferred = _bluebird2.default.defer();\n var reader = new FileReader();\n reader.onload = function (e) {\n deferred.resolve(e.target.result);\n };\n reader.onerror = function (e) {\n deferred.reject(e);\n };\n reader.readAsArrayBuffer(file);\n return deferred.promise;\n}\n\n/**\n * Upload the file to the content repository.\n * If the room is encrypted then encrypt the file before uploading.\n *\n * @param {MatrixClient} matrixClient The matrix client to upload the file with.\n * @param {String} roomId The ID of the room being uploaded to.\n * @param {File} file The file to upload.\n * @param {Function?} progressHandler optional callback to be called when a chunk of\n * data is uploaded.\n * @return {Promise} A promise that resolves with an object.\n * If the file is unencrypted then the object will have a \"url\" key.\n * If the file is encrypted then the object will have a \"file\" key.\n */\nfunction uploadFile(matrixClient, roomId, file, progressHandler) {\n if (matrixClient.isRoomEncrypted(roomId)) {\n // If the room is encrypted then encrypt the file before uploading it.\n // First read the file into memory.\n return readFileAsArrayBuffer(file).then(function (data) {\n // Then encrypt the file.\n return encrypt.encryptAttachment(data);\n }).then(function (encryptResult) {\n // Record the information needed to decrypt the attachment.\n var encryptInfo = encryptResult.info;\n // Pass the encrypted data as a Blob to the uploader.\n var blob = new Blob([encryptResult.data]);\n return matrixClient.uploadContent(blob, {\n progressHandler: progressHandler,\n includeFilename: false\n }).then(function (url) {\n // If the attachment is encrypted then bundle the URL along\n // with the information needed to decrypt the attachment and\n // add it under a file key.\n encryptInfo.url = url;\n if (file.type) {\n encryptInfo.mimetype = file.type;\n }\n return { \"file\": encryptInfo };\n });\n });\n } else {\n var basePromise = matrixClient.uploadContent(file, {\n progressHandler: progressHandler\n });\n var promise1 = basePromise.then(function (url) {\n // If the attachment isn't encrypted then include the URL directly.\n return { \"url\": url };\n });\n // XXX: copy over the abort method to the new promise\n promise1.abort = basePromise.abort;\n return promise1;\n }\n}\n\nvar ContentMessages = function () {\n function ContentMessages() {\n (0, _classCallCheck3.default)(this, ContentMessages);\n\n this.inprogress = [];\n this.nextId = 0;\n }\n\n (0, _createClass3.default)(ContentMessages, [{\n key: 'sendStickerContentToRoom',\n value: function sendStickerContentToRoom(url, roomId, info, text, matrixClient) {\n return MatrixClientPeg.get().sendStickerMessage(roomId, url, info, text).catch(function (e) {\n console.warn('Failed to send content with URL ' + url + ' to room ' + roomId, e);\n throw e;\n });\n }\n }, {\n key: 'sendContentToRoom',\n value: function sendContentToRoom(file, roomId, matrixClient) {\n var _this = this;\n\n var content = {\n body: file.name || 'Attachment',\n info: {\n size: file.size\n }\n };\n\n // if we have a mime type for the file, add it to the message metadata\n if (file.type) {\n content.info.mimetype = file.type;\n }\n\n var def = _bluebird2.default.defer();\n if (file.type.indexOf('image/') == 0) {\n content.msgtype = 'm.image';\n infoForImageFile(matrixClient, roomId, file).then(function (imageInfo) {\n extend(content.info, imageInfo);\n def.resolve();\n }, function (error) {\n console.error(error);\n content.msgtype = 'm.file';\n def.resolve();\n });\n } else if (file.type.indexOf('audio/') == 0) {\n content.msgtype = 'm.audio';\n def.resolve();\n } else if (file.type.indexOf('video/') == 0) {\n content.msgtype = 'm.video';\n infoForVideoFile(matrixClient, roomId, file).then(function (videoInfo) {\n extend(content.info, videoInfo);\n def.resolve();\n }, function (error) {\n content.msgtype = 'm.file';\n def.resolve();\n });\n } else {\n content.msgtype = 'm.file';\n def.resolve();\n }\n\n var upload = {\n fileName: file.name || 'Attachment',\n roomId: roomId,\n total: 0,\n loaded: 0\n };\n this.inprogress.push(upload);\n dis.dispatch({ action: 'upload_started' });\n\n var error = void 0;\n\n function onProgress(ev) {\n upload.total = ev.total;\n upload.loaded = ev.loaded;\n dis.dispatch({ action: 'upload_progress', upload: upload });\n }\n\n return def.promise.then(function () {\n // XXX: upload.promise must be the promise that\n // is returned by uploadFile as it has an abort()\n // method hacked onto it.\n upload.promise = uploadFile(matrixClient, roomId, file, onProgress);\n return upload.promise.then(function (result) {\n content.file = result.file;\n content.url = result.url;\n });\n }).then(function (url) {\n return matrixClient.sendMessage(roomId, content);\n }, function (err) {\n error = err;\n if (!upload.canceled) {\n var desc = (0, _languageHandler._t)('The file \\'%(fileName)s\\' failed to upload', { fileName: upload.fileName }) + '.';\n if (err.http_status == 413) {\n desc = (0, _languageHandler._t)('The file \\'%(fileName)s\\' exceeds this home server\\'s size limit for uploads', { fileName: upload.fileName });\n }\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Upload failed', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Upload Failed'),\n description: desc\n });\n }\n }).finally(function () {\n var inprogressKeys = (0, _keys2.default)(_this.inprogress);\n for (var i = 0; i < _this.inprogress.length; ++i) {\n var k = inprogressKeys[i];\n if (_this.inprogress[k].promise === upload.promise) {\n _this.inprogress.splice(k, 1);\n break;\n }\n }\n if (error) {\n dis.dispatch({ action: 'upload_failed', upload: upload, error: error });\n } else {\n dis.dispatch({ action: 'upload_finished', upload: upload });\n }\n });\n }\n }, {\n key: 'getCurrentUploads',\n value: function getCurrentUploads() {\n return this.inprogress;\n }\n }, {\n key: 'cancelUpload',\n value: function cancelUpload(promise) {\n var inprogressKeys = (0, _keys2.default)(this.inprogress);\n var upload = void 0;\n for (var i = 0; i < this.inprogress.length; ++i) {\n var k = inprogressKeys[i];\n if (this.inprogress[k].promise === promise) {\n upload = this.inprogress[k];\n break;\n }\n }\n if (upload) {\n upload.canceled = true;\n MatrixClientPeg.get().cancelUpload(upload.promise);\n }\n }\n }]);\n return ContentMessages;\n}();\n\nif (global.mx_ContentMessage === undefined) {\n global.mx_ContentMessage = new ContentMessages();\n}\n\nmodule.exports = global.mx_ContentMessage;\n//# sourceMappingURL=ContentMessages.js.map","/**\n * Encrypt an attachment.\n * @param {ArrayBuffer} plaintextBuffer The attachment data buffer.\n * @return {Promise} A promise that resolves with an object when the attachment is encrypted.\n * The object has a \"data\" key with an ArrayBuffer of encrypted data and an \"info\" key\n * with an object containing the info needed to decrypt the data.\n */\nfunction encryptAttachment(plaintextBuffer) {\n var cryptoKey; // The AES key object.\n var exportedKey; // The AES key exported as JWK.\n var ciphertextBuffer; // ArrayBuffer of encrypted data.\n var sha256Buffer; // ArrayBuffer of digest.\n var ivArray; // Uint8Array of AES IV\n // Generate an IV where the first 8 bytes are random and the high 8 bytes\n // are zero. We set the counter low bits to 0 since it makes it unlikely\n // that the 64 bit counter will overflow.\n ivArray = new Uint8Array(16);\n window.crypto.getRandomValues(ivArray.subarray(0,8));\n // Load the encryption key.\n return window.crypto.subtle.generateKey(\n {\"name\": \"AES-CTR\", length: 256}, true, [\"encrypt\", \"decrypt\"]\n ).then(function(generateKeyResult) {\n cryptoKey = generateKeyResult;\n // Export the Key as JWK.\n return window.crypto.subtle.exportKey(\"jwk\", cryptoKey);\n }).then(function(exportKeyResult) {\n exportedKey = exportKeyResult;\n // Encrypt the input ArrayBuffer.\n // Use half of the iv as the counter by setting the \"length\" to 64.\n return window.crypto.subtle.encrypt(\n {name: \"AES-CTR\", counter: ivArray, length: 64}, cryptoKey, plaintextBuffer\n );\n }).then(function(encryptResult) {\n ciphertextBuffer = encryptResult;\n // SHA-256 the encrypted data.\n return window.crypto.subtle.digest(\"SHA-256\", ciphertextBuffer);\n }).then(function (digestResult) {\n sha256Buffer = digestResult;\n\n return {\n data: ciphertextBuffer,\n info: {\n v: \"v2\",\n key: exportedKey,\n iv: encodeBase64(ivArray),\n hashes: {\n sha256: encodeBase64(new Uint8Array(sha256Buffer)),\n },\n },\n };\n });\n}\n\n/**\n * Decrypt an attachment.\n * @param {ArrayBuffer} ciphertextBuffer The encrypted attachment data buffer.\n * @param {Object} info The information needed to decrypt the attachment.\n * @param {Object} info.key AES-CTR JWK key object.\n * @param {string} info.iv Base64 encoded 16 byte AES-CTR IV.\n * @param {string} info.hashes.sha256 Base64 encoded SHA-256 hash of the ciphertext.\n * @return {Promise} A promise that resolves with an ArrayBuffer when the attachment is decrypted.\n */\nfunction decryptAttachment(ciphertextBuffer, info) {\n\n if (info === undefined || info.key === undefined || info.iv === undefined\n || info.hashes === undefined || info.hashes.sha256 === undefined) {\n throw new Error(\"Invalid info. Missing info.key, info.iv or info.hashes.sha256 key\");\n }\n\n var cryptoKey; // The AES key object.\n var ivArray = decodeBase64(info.iv);\n var expectedSha256base64 = info.hashes.sha256;\n // Load the AES from the \"key\" key of the info object.\n return window.crypto.subtle.importKey(\n \"jwk\", info.key, {\"name\": \"AES-CTR\"}, false, [\"encrypt\", \"decrypt\"]\n ).then(function (importKeyResult) {\n cryptoKey = importKeyResult;\n // Check the sha256 hash\n return window.crypto.subtle.digest(\"SHA-256\", ciphertextBuffer);\n }).then(function (digestResult) {\n if (encodeBase64(new Uint8Array(digestResult)) != expectedSha256base64) {\n throw new Error(\"Mismatched SHA-256 digest\");\n }\n var counterLength;\n if (info.v == \"v1\" || info.v == \"v2\") {\n // Version 1 and 2 use a 64 bit counter.\n counterLength = 64;\n } else {\n // Version 0 uses a 128 bit counter.\n counterLength = 128;\n }\n return window.crypto.subtle.decrypt(\n {name: \"AES-CTR\", counter: ivArray, length: counterLength}, cryptoKey, ciphertextBuffer\n );\n });\n}\n\n/**\n * Encode a typed array of uint8 as base64.\n * @param {Uint8Array} uint8Array The data to encode.\n * @return {string} The base64 without padding.\n */\nfunction encodeBase64(uint8Array) {\n // Misinterpt the Uint8Array as Latin-1.\n // window.btoa expects a unicode string with codepoints in the range 0-255.\n var latin1String = String.fromCharCode.apply(null, uint8Array);\n // Use the builtin base64 encoder.\n var paddedBase64 = window.btoa(latin1String);\n // Calculate the unpadded length.\n var inputLength = uint8Array.length;\n var outputLength = 4 * Math.floor((inputLength + 2) / 3) + (inputLength + 2) % 3 - 2;\n // Return the unpadded base64.\n return paddedBase64.slice(0, outputLength);\n}\n\n/**\n * Decode a base64 string to a typed array of uint8.\n * This will decode unpadded base64, but will also accept base64 with padding.\n * @param {string} base64 The unpadded base64 to decode.\n * @return {Uint8Array} The decoded data.\n */\nfunction decodeBase64(base64) {\n // Pad the base64 up to the next multiple of 4.\n var paddedBase64 = base64 + \"===\".slice(0, (4 - base64.length % 4) % 4);\n // Decode the base64 as a misinterpreted Latin-1 string.\n // window.atob returns a unicode string with codepoints in the range 0-255.\n var latin1String = window.atob(paddedBase64);\n // Encode the string as a Uint8Array as Latin-1.\n var uint8Array = new Uint8Array(latin1String.length);\n for (var i = 0; i < latin1String.length; i++) {\n uint8Array[i] = latin1String.charCodeAt(i);\n }\n return uint8Array;\n}\n\ntry {\n exports.encryptAttachment = encryptAttachment;\n exports.decryptAttachment = decryptAttachment;\n}\ncatch (e) {\n // Ignore unknown variable \"exports\" errors when this is loaded directly into a browser\n // This means that we can test it without having to use browserify.\n // The intention is that the library is used using browserify.\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * TODO: Make things use this. This is all WIP - see UserSettings.js for usage.\n */\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = {\n loadProfileInfo: function loadProfileInfo() {\n var cli = _MatrixClientPeg2.default.get();\n return cli.getProfileInfo(cli.credentials.userId);\n },\n\n saveDisplayName: function saveDisplayName(newDisplayname) {\n return _MatrixClientPeg2.default.get().setDisplayName(newDisplayname);\n },\n\n loadThreePids: function loadThreePids() {\n if (_MatrixClientPeg2.default.get().isGuest()) {\n return _bluebird2.default.resolve({\n threepids: []\n }); // guests can't poke 3pid endpoint\n }\n return _MatrixClientPeg2.default.get().getThreePids();\n },\n\n saveThreePids: function saveThreePids(threePids) {\n // TODO\n },\n\n changePassword: function changePassword(oldPassword, newPassword) {\n var cli = _MatrixClientPeg2.default.get();\n\n var authDict = {\n type: 'm.login.password',\n user: cli.credentials.userId,\n password: oldPassword\n };\n\n return cli.setPassword(authDict, newPassword);\n },\n\n /*\n * Returns the email pusher (pusher of type 'email') for a given\n * email address. Email pushers all have the same app ID, so since\n * pushers are unique over (app ID, pushkey), there will be at most\n * one such pusher.\n */\n getEmailPusher: function getEmailPusher(pushers, address) {\n if (pushers === undefined) {\n return undefined;\n }\n for (var i = 0; i < pushers.length; ++i) {\n if (pushers[i].kind === 'email' && pushers[i].pushkey === address) {\n return pushers[i];\n }\n }\n return undefined;\n },\n\n hasEmailPusher: function hasEmailPusher(pushers, address) {\n return this.getEmailPusher(pushers, address) !== undefined;\n },\n\n addEmailPusher: function addEmailPusher(address, data) {\n return _MatrixClientPeg2.default.get().setPusher({\n kind: 'email',\n app_id: 'm.email',\n pushkey: address,\n app_display_name: 'Email Notifications',\n device_display_name: address,\n lang: navigator.language,\n data: data,\n append: true // We always append for email pushers since we don't want to stop other accounts notifying to the same email address\n });\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=UserSettingsStore.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _UiEffects = require('../../../UiEffects');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _email = require('../../../email');\n\nvar _email2 = _interopRequireDefault(_email);\n\nvar _phonenumber = require('../../../phonenumber');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _Registration = require('../../../Registration');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar FIELD_EMAIL = 'field_email';\nvar FIELD_PHONE_COUNTRY = 'field_phone_country';\nvar FIELD_PHONE_NUMBER = 'field_phone_number';\nvar FIELD_USERNAME = 'field_username';\nvar FIELD_PASSWORD = 'field_password';\nvar FIELD_PASSWORD_CONFIRM = 'field_password_confirm';\n\n/**\n * A pure UI component which displays a registration form.\n */\nmodule.exports = _react2.default.createClass({\n displayName: 'RegistrationForm',\n\n propTypes: {\n // Values pre-filled in the input boxes when the component loads\n defaultEmail: _propTypes2.default.string,\n defaultPhoneCountry: _propTypes2.default.string,\n defaultPhoneNumber: _propTypes2.default.string,\n defaultUsername: _propTypes2.default.string,\n defaultPassword: _propTypes2.default.string,\n teamsConfig: _propTypes2.default.shape({\n // Email address to request new teams\n supportEmail: _propTypes2.default.string,\n teams: _propTypes2.default.arrayOf(_propTypes2.default.shape({\n // The displayed name of the team\n \"name\": _propTypes2.default.string,\n // The domain of team email addresses\n \"domain\": _propTypes2.default.string\n })).required\n }),\n\n minPasswordLength: _propTypes2.default.number,\n onError: _propTypes2.default.func,\n onRegisterClick: _propTypes2.default.func.isRequired, // onRegisterClick(Object) => ?Promise\n flows: _propTypes2.default.arrayOf(_propTypes2.default.object).isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n minPasswordLength: 6,\n onError: function onError(e) {\n console.error(e);\n }\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n fieldValid: {},\n selectedTeam: null,\n // The ISO2 country code selected in the phone number entry\n phoneCountry: this.props.defaultPhoneCountry\n };\n },\n\n onSubmit: function onSubmit(ev) {\n ev.preventDefault();\n\n // validate everything, in reverse order so\n // the error that ends up being displayed\n // is the one from the first invalid field.\n // It's not super ideal that this just calls\n // onError once for each invalid field.\n this.validateField(FIELD_PASSWORD_CONFIRM);\n this.validateField(FIELD_PASSWORD);\n this.validateField(FIELD_USERNAME);\n this.validateField(FIELD_PHONE_NUMBER);\n this.validateField(FIELD_EMAIL);\n\n var self = this;\n if (this.allFieldsValid()) {\n if (this.refs.email.value == '') {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('If you don\\'t specify an email address...', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Warning!\"),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"If you don't specify an email address, you won't be able to reset your password. \" + \"Are you sure?\")\n ),\n button: (0, _languageHandler._t)(\"Continue\"),\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n self._doSubmit(ev);\n }\n }\n });\n } else {\n self._doSubmit(ev);\n }\n }\n },\n\n _doSubmit: function _doSubmit(ev) {\n var email = this.refs.email.value.trim();\n var promise = this.props.onRegisterClick({\n username: this.refs.username.value.trim(),\n password: this.refs.password.value.trim(),\n email: email,\n phoneCountry: this.state.phoneCountry,\n phoneNumber: this.refs.phoneNumber ? this.refs.phoneNumber.value.trim() : ''\n });\n\n if (promise) {\n ev.target.disabled = true;\n promise.finally(function () {\n ev.target.disabled = false;\n });\n }\n },\n\n /**\n * Returns true if all fields were valid last time\n * they were validated.\n */\n allFieldsValid: function allFieldsValid() {\n var keys = (0, _keys2.default)(this.state.fieldValid);\n for (var i = 0; i < keys.length; ++i) {\n if (this.state.fieldValid[keys[i]] == false) {\n return false;\n }\n }\n return true;\n },\n\n _isUniEmail: function _isUniEmail(email) {\n return email.endsWith('.ac.uk') || email.endsWith('.edu') || email.endsWith('matrix.org');\n },\n\n validateField: function validateField(field_id) {\n var pwd1 = this.refs.password.value.trim();\n var pwd2 = this.refs.passwordConfirm.value.trim();\n\n switch (field_id) {\n case FIELD_EMAIL:\n var email = this.refs.email.value;\n if (this.props.teamsConfig && this._isUniEmail(email)) {\n var matchingTeam = this.props.teamsConfig.teams.find(function (team) {\n return email.split('@').pop() === team.domain;\n }) || null;\n this.setState({\n selectedTeam: matchingTeam,\n showSupportEmail: !matchingTeam\n });\n this.props.onTeamSelected(matchingTeam);\n } else {\n this.props.onTeamSelected(null);\n this.setState({\n selectedTeam: null,\n showSupportEmail: false\n });\n }\n var emailValid = email === '' || _email2.default.looksValid(email);\n if (this._authStepIsRequired('m.login.email.identity') && (!emailValid || email === '')) {\n this.markFieldValid(field_id, false, \"RegistrationForm.ERR_MISSING_EMAIL\");\n } else this.markFieldValid(field_id, emailValid, \"RegistrationForm.ERR_EMAIL_INVALID\");\n break;\n case FIELD_PHONE_NUMBER:\n var phoneNumber = this.refs.phoneNumber ? this.refs.phoneNumber.value : '';\n var phoneNumberValid = phoneNumber === '' || (0, _phonenumber.looksValid)(phoneNumber);\n if (this._authStepIsRequired('m.login.msisdn') && (!phoneNumberValid || phoneNumber === '')) {\n this.markFieldValid(field_id, false, \"RegistrationForm.ERR_MISSING_PHONE_NUMBER\");\n } else this.markFieldValid(field_id, phoneNumberValid, \"RegistrationForm.ERR_PHONE_NUMBER_INVALID\");\n break;\n case FIELD_USERNAME:\n var username = this.refs.username.value.trim();\n if (!_Registration.SAFE_LOCALPART_REGEX.test(username)) {\n this.markFieldValid(field_id, false, \"RegistrationForm.ERR_USERNAME_INVALID\");\n } else if (username == '') {\n this.markFieldValid(field_id, false, \"RegistrationForm.ERR_USERNAME_BLANK\");\n } else {\n this.markFieldValid(field_id, true);\n }\n break;\n case FIELD_PASSWORD:\n if (pwd1 == '') {\n this.markFieldValid(field_id, false, \"RegistrationForm.ERR_PASSWORD_MISSING\");\n } else if (pwd1.length < this.props.minPasswordLength) {\n this.markFieldValid(field_id, false, \"RegistrationForm.ERR_PASSWORD_LENGTH\");\n } else {\n this.markFieldValid(field_id, true);\n }\n break;\n case FIELD_PASSWORD_CONFIRM:\n this.markFieldValid(field_id, pwd1 == pwd2, \"RegistrationForm.ERR_PASSWORD_MISMATCH\");\n break;\n }\n },\n\n markFieldValid: function markFieldValid(field_id, val, error_code) {\n var fieldValid = this.state.fieldValid;\n fieldValid[field_id] = val;\n this.setState({ fieldValid: fieldValid });\n if (!val) {\n (0, _UiEffects.field_input_incorrect)(this.fieldElementById(field_id));\n this.props.onError(error_code);\n }\n },\n\n fieldElementById: function fieldElementById(field_id) {\n switch (field_id) {\n case FIELD_EMAIL:\n return this.refs.email;\n case FIELD_PHONE_NUMBER:\n return this.refs.phoneNumber;\n case FIELD_USERNAME:\n return this.refs.username;\n case FIELD_PASSWORD:\n return this.refs.password;\n case FIELD_PASSWORD_CONFIRM:\n return this.refs.passwordConfirm;\n }\n },\n\n\n _classForField: function _classForField(field_id) {\n for (var _len = arguments.length, baseClasses = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n baseClasses[_key - 1] = arguments[_key];\n }\n\n var cls = baseClasses.join(' ');\n if (this.state.fieldValid[field_id] === false) {\n if (cls) cls += ' ';\n cls += 'error';\n }\n return cls;\n },\n\n _onPhoneCountryChange: function _onPhoneCountryChange(newVal) {\n this.setState({\n phoneCountry: newVal.iso2,\n phonePrefix: newVal.prefix\n });\n },\n _authStepIsRequired: function _authStepIsRequired(step) {\n // A step is required if no flow exists which does not include that step\n // (Notwithstanding setups like either email or msisdn being required)\n return !this.props.flows.some(function (flow) {\n return !flow.stages.includes(step);\n });\n },\n\n\n render: function render() {\n var self = this;\n\n var emailPlaceholder = this._authStepIsRequired('m.login.email.identity') ? (0, _languageHandler._t)(\"Email address\") : (0, _languageHandler._t)(\"Email address (optional)\");\n\n var emailSection = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { type: 'text', ref: 'email',\n autoFocus: true, placeholder: emailPlaceholder,\n defaultValue: this.props.defaultEmail,\n className: this._classForField(FIELD_EMAIL, 'mx_Login_field'),\n onBlur: function onBlur() {\n self.validateField(FIELD_EMAIL);\n },\n value: self.state.email })\n );\n var belowEmailSection = void 0;\n if (this.props.teamsConfig) {\n if (this.props.teamsConfig.supportEmail && this.state.showSupportEmail) {\n belowEmailSection = _react2.default.createElement(\n 'p',\n { className: 'mx_Login_support' },\n 'Sorry, but your university is not registered with us just yet.\\xA0 Email us on\\xA0',\n _react2.default.createElement(\n 'a',\n { href: \"mailto:\" + this.props.teamsConfig.supportEmail },\n this.props.teamsConfig.supportEmail\n ),\n '\\xA0 to get your university signed up. Or continue to register with Riot to enjoy our open source platform.'\n );\n } else if (this.state.selectedTeam) {\n belowEmailSection = _react2.default.createElement(\n 'p',\n { className: 'mx_Login_support' },\n (0, _languageHandler._t)(\"You are registering with %(SelectedTeamName)s\", { SelectedTeamName: this.state.selectedTeam.name })\n );\n }\n }\n\n var CountryDropdown = _index2.default.getComponent('views.login.CountryDropdown');\n var phoneSection = void 0;\n if (!_SdkConfig2.default.get().disable_3pid_login) {\n var phonePlaceholder = this._authStepIsRequired('m.login.msisdn') ? (0, _languageHandler._t)(\"Mobile phone number\") : (0, _languageHandler._t)(\"Mobile phone number (optional)\");\n phoneSection = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_phoneSection' },\n _react2.default.createElement(CountryDropdown, { ref: 'phone_country', onOptionChange: this._onPhoneCountryChange,\n className: 'mx_Login_phoneCountry mx_Login_field_prefix',\n value: this.state.phoneCountry,\n isSmall: true,\n showPrefix: true\n }),\n _react2.default.createElement('input', { type: 'text', ref: 'phoneNumber',\n placeholder: phonePlaceholder,\n defaultValue: this.props.defaultPhoneNumber,\n className: this._classForField(FIELD_PHONE_NUMBER, 'mx_Login_phoneNumberField', 'mx_Login_field', 'mx_Login_field_has_prefix'),\n onBlur: function onBlur() {\n self.validateField(FIELD_PHONE_NUMBER);\n },\n value: self.state.phoneNumber\n })\n );\n }\n\n var registerButton = _react2.default.createElement('input', { className: 'mx_Login_submit', type: 'submit', value: (0, _languageHandler._t)(\"Register\") });\n\n var placeholderUserName = (0, _languageHandler._t)(\"User name\");\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'form',\n { onSubmit: this.onSubmit },\n emailSection,\n belowEmailSection,\n phoneSection,\n _react2.default.createElement('input', { type: 'text', ref: 'username',\n placeholder: placeholderUserName, defaultValue: this.props.defaultUsername,\n className: this._classForField(FIELD_USERNAME, 'mx_Login_field'),\n onBlur: function onBlur() {\n self.validateField(FIELD_USERNAME);\n } }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { type: 'password', ref: 'password',\n className: this._classForField(FIELD_PASSWORD, 'mx_Login_field'),\n onBlur: function onBlur() {\n self.validateField(FIELD_PASSWORD);\n },\n placeholder: (0, _languageHandler._t)(\"Password\"), defaultValue: this.props.defaultPassword }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { type: 'password', ref: 'passwordConfirm',\n placeholder: (0, _languageHandler._t)(\"Confirm password\"),\n className: this._classForField(FIELD_PASSWORD_CONFIRM, 'mx_Login_field'),\n onBlur: function onBlur() {\n self.validateField(FIELD_PASSWORD_CONFIRM);\n },\n defaultValue: this.props.defaultPassword }),\n _react2.default.createElement('br', null),\n registerButton\n )\n );\n }\n});\n//# sourceMappingURL=RegistrationForm.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.field_input_incorrect = field_input_incorrect;\n\nvar _velocityVector = require('velocity-vector');\n\nvar _velocityVector2 = _interopRequireDefault(_velocityVector);\n\nrequire('velocity-vector/velocity.ui');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Functions for applying common thematic effects to UI elements.\n * Ideally this would be themeable.\n */\n\nfunction field_input_incorrect(element) {\n (0, _velocityVector2.default)(element, \"callout.shake\", 300);\n}\n//# sourceMappingURL=UiEffects.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.looksValid = looksValid;\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar PHONE_NUMBER_REGEXP = /^[0-9 -.]+$/;\n\n/*\n * Do basic validation to determine if the given input could be\n * a valid phone number.\n *\n * @param {String} phoneNumber The string to validate. This could be\n * either an international format number (MSISDN or e.164) or\n * a national-format number.\n * @return True if the number could be a valid phone number, otherwise false.\n */\nfunction looksValid(phoneNumber) {\n return PHONE_NUMBER_REGEXP.test(phoneNumber);\n}\n\nvar COUNTRIES = exports.COUNTRIES = [{\n \"iso2\": \"GB\",\n \"name\": \"United Kingdom\",\n \"prefix\": \"44\"\n}, {\n \"iso2\": \"US\",\n \"name\": \"United States\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"AF\",\n \"name\": \"Afghanistan\",\n \"prefix\": \"93\"\n}, {\n \"iso2\": \"AX\",\n \"name\": \"\\xC5land Islands\",\n \"prefix\": \"358\"\n}, {\n \"iso2\": \"AL\",\n \"name\": \"Albania\",\n \"prefix\": \"355\"\n}, {\n \"iso2\": \"DZ\",\n \"name\": \"Algeria\",\n \"prefix\": \"213\"\n}, {\n \"iso2\": \"AS\",\n \"name\": \"American Samoa\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"AD\",\n \"name\": \"Andorra\",\n \"prefix\": \"376\"\n}, {\n \"iso2\": \"AO\",\n \"name\": \"Angola\",\n \"prefix\": \"244\"\n}, {\n \"iso2\": \"AI\",\n \"name\": \"Anguilla\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"AQ\",\n \"name\": \"Antarctica\",\n \"prefix\": \"672\"\n}, {\n \"iso2\": \"AG\",\n \"name\": \"Antigua & Barbuda\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"AR\",\n \"name\": \"Argentina\",\n \"prefix\": \"54\"\n}, {\n \"iso2\": \"AM\",\n \"name\": \"Armenia\",\n \"prefix\": \"374\"\n}, {\n \"iso2\": \"AW\",\n \"name\": \"Aruba\",\n \"prefix\": \"297\"\n}, {\n \"iso2\": \"AU\",\n \"name\": \"Australia\",\n \"prefix\": \"61\"\n}, {\n \"iso2\": \"AT\",\n \"name\": \"Austria\",\n \"prefix\": \"43\"\n}, {\n \"iso2\": \"AZ\",\n \"name\": \"Azerbaijan\",\n \"prefix\": \"994\"\n}, {\n \"iso2\": \"BS\",\n \"name\": \"Bahamas\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"BH\",\n \"name\": \"Bahrain\",\n \"prefix\": \"973\"\n}, {\n \"iso2\": \"BD\",\n \"name\": \"Bangladesh\",\n \"prefix\": \"880\"\n}, {\n \"iso2\": \"BB\",\n \"name\": \"Barbados\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"BY\",\n \"name\": \"Belarus\",\n \"prefix\": \"375\"\n}, {\n \"iso2\": \"BE\",\n \"name\": \"Belgium\",\n \"prefix\": \"32\"\n}, {\n \"iso2\": \"BZ\",\n \"name\": \"Belize\",\n \"prefix\": \"501\"\n}, {\n \"iso2\": \"BJ\",\n \"name\": \"Benin\",\n \"prefix\": \"229\"\n}, {\n \"iso2\": \"BM\",\n \"name\": \"Bermuda\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"BT\",\n \"name\": \"Bhutan\",\n \"prefix\": \"975\"\n}, {\n \"iso2\": \"BO\",\n \"name\": \"Bolivia\",\n \"prefix\": \"591\"\n}, {\n \"iso2\": \"BA\",\n \"name\": \"Bosnia\",\n \"prefix\": \"387\"\n}, {\n \"iso2\": \"BW\",\n \"name\": \"Botswana\",\n \"prefix\": \"267\"\n}, {\n \"iso2\": \"BV\",\n \"name\": \"Bouvet Island\",\n \"prefix\": \"47\"\n}, {\n \"iso2\": \"BR\",\n \"name\": \"Brazil\",\n \"prefix\": \"55\"\n}, {\n \"iso2\": \"IO\",\n \"name\": \"British Indian Ocean Territory\",\n \"prefix\": \"246\"\n}, {\n \"iso2\": \"VG\",\n \"name\": \"British Virgin Islands\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"BN\",\n \"name\": \"Brunei\",\n \"prefix\": \"673\"\n}, {\n \"iso2\": \"BG\",\n \"name\": \"Bulgaria\",\n \"prefix\": \"359\"\n}, {\n \"iso2\": \"BF\",\n \"name\": \"Burkina Faso\",\n \"prefix\": \"226\"\n}, {\n \"iso2\": \"BI\",\n \"name\": \"Burundi\",\n \"prefix\": \"257\"\n}, {\n \"iso2\": \"KH\",\n \"name\": \"Cambodia\",\n \"prefix\": \"855\"\n}, {\n \"iso2\": \"CM\",\n \"name\": \"Cameroon\",\n \"prefix\": \"237\"\n}, {\n \"iso2\": \"CA\",\n \"name\": \"Canada\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"CV\",\n \"name\": \"Cape Verde\",\n \"prefix\": \"238\"\n}, {\n \"iso2\": \"BQ\",\n \"name\": \"Caribbean Netherlands\",\n \"prefix\": \"599\"\n}, {\n \"iso2\": \"KY\",\n \"name\": \"Cayman Islands\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"CF\",\n \"name\": \"Central African Republic\",\n \"prefix\": \"236\"\n}, {\n \"iso2\": \"TD\",\n \"name\": \"Chad\",\n \"prefix\": \"235\"\n}, {\n \"iso2\": \"CL\",\n \"name\": \"Chile\",\n \"prefix\": \"56\"\n}, {\n \"iso2\": \"CN\",\n \"name\": \"China\",\n \"prefix\": \"86\"\n}, {\n \"iso2\": \"CX\",\n \"name\": \"Christmas Island\",\n \"prefix\": \"61\"\n}, {\n \"iso2\": \"CC\",\n \"name\": \"Cocos (Keeling) Islands\",\n \"prefix\": \"61\"\n}, {\n \"iso2\": \"CO\",\n \"name\": \"Colombia\",\n \"prefix\": \"57\"\n}, {\n \"iso2\": \"KM\",\n \"name\": \"Comoros\",\n \"prefix\": \"269\"\n}, {\n \"iso2\": \"CG\",\n \"name\": \"Congo - Brazzaville\",\n \"prefix\": \"242\"\n}, {\n \"iso2\": \"CD\",\n \"name\": \"Congo - Kinshasa\",\n \"prefix\": \"243\"\n}, {\n \"iso2\": \"CK\",\n \"name\": \"Cook Islands\",\n \"prefix\": \"682\"\n}, {\n \"iso2\": \"CR\",\n \"name\": \"Costa Rica\",\n \"prefix\": \"506\"\n}, {\n \"iso2\": \"HR\",\n \"name\": \"Croatia\",\n \"prefix\": \"385\"\n}, {\n \"iso2\": \"CU\",\n \"name\": \"Cuba\",\n \"prefix\": \"53\"\n}, {\n \"iso2\": \"CW\",\n \"name\": \"Cura\\xE7ao\",\n \"prefix\": \"599\"\n}, {\n \"iso2\": \"CY\",\n \"name\": \"Cyprus\",\n \"prefix\": \"357\"\n}, {\n \"iso2\": \"CZ\",\n \"name\": \"Czech Republic\",\n \"prefix\": \"420\"\n}, {\n \"iso2\": \"CI\",\n \"name\": \"C\\xF4te d\\u2019Ivoire\",\n \"prefix\": \"225\"\n}, {\n \"iso2\": \"DK\",\n \"name\": \"Denmark\",\n \"prefix\": \"45\"\n}, {\n \"iso2\": \"DJ\",\n \"name\": \"Djibouti\",\n \"prefix\": \"253\"\n}, {\n \"iso2\": \"DM\",\n \"name\": \"Dominica\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"DO\",\n \"name\": \"Dominican Republic\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"EC\",\n \"name\": \"Ecuador\",\n \"prefix\": \"593\"\n}, {\n \"iso2\": \"EG\",\n \"name\": \"Egypt\",\n \"prefix\": \"20\"\n}, {\n \"iso2\": \"SV\",\n \"name\": \"El Salvador\",\n \"prefix\": \"503\"\n}, {\n \"iso2\": \"GQ\",\n \"name\": \"Equatorial Guinea\",\n \"prefix\": \"240\"\n}, {\n \"iso2\": \"ER\",\n \"name\": \"Eritrea\",\n \"prefix\": \"291\"\n}, {\n \"iso2\": \"EE\",\n \"name\": \"Estonia\",\n \"prefix\": \"372\"\n}, {\n \"iso2\": \"ET\",\n \"name\": \"Ethiopia\",\n \"prefix\": \"251\"\n}, {\n \"iso2\": \"FK\",\n \"name\": \"Falkland Islands\",\n \"prefix\": \"500\"\n}, {\n \"iso2\": \"FO\",\n \"name\": \"Faroe Islands\",\n \"prefix\": \"298\"\n}, {\n \"iso2\": \"FJ\",\n \"name\": \"Fiji\",\n \"prefix\": \"679\"\n}, {\n \"iso2\": \"FI\",\n \"name\": \"Finland\",\n \"prefix\": \"358\"\n}, {\n \"iso2\": \"FR\",\n \"name\": \"France\",\n \"prefix\": \"33\"\n}, {\n \"iso2\": \"GF\",\n \"name\": \"French Guiana\",\n \"prefix\": \"594\"\n}, {\n \"iso2\": \"PF\",\n \"name\": \"French Polynesia\",\n \"prefix\": \"689\"\n}, {\n \"iso2\": \"TF\",\n \"name\": \"French Southern Territories\",\n \"prefix\": \"262\"\n}, {\n \"iso2\": \"GA\",\n \"name\": \"Gabon\",\n \"prefix\": \"241\"\n}, {\n \"iso2\": \"GM\",\n \"name\": \"Gambia\",\n \"prefix\": \"220\"\n}, {\n \"iso2\": \"GE\",\n \"name\": \"Georgia\",\n \"prefix\": \"995\"\n}, {\n \"iso2\": \"DE\",\n \"name\": \"Germany\",\n \"prefix\": \"49\"\n}, {\n \"iso2\": \"GH\",\n \"name\": \"Ghana\",\n \"prefix\": \"233\"\n}, {\n \"iso2\": \"GI\",\n \"name\": \"Gibraltar\",\n \"prefix\": \"350\"\n}, {\n \"iso2\": \"GR\",\n \"name\": \"Greece\",\n \"prefix\": \"30\"\n}, {\n \"iso2\": \"GL\",\n \"name\": \"Greenland\",\n \"prefix\": \"299\"\n}, {\n \"iso2\": \"GD\",\n \"name\": \"Grenada\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"GP\",\n \"name\": \"Guadeloupe\",\n \"prefix\": \"590\"\n}, {\n \"iso2\": \"GU\",\n \"name\": \"Guam\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"GT\",\n \"name\": \"Guatemala\",\n \"prefix\": \"502\"\n}, {\n \"iso2\": \"GG\",\n \"name\": \"Guernsey\",\n \"prefix\": \"44\"\n}, {\n \"iso2\": \"GN\",\n \"name\": \"Guinea\",\n \"prefix\": \"224\"\n}, {\n \"iso2\": \"GW\",\n \"name\": \"Guinea-Bissau\",\n \"prefix\": \"245\"\n}, {\n \"iso2\": \"GY\",\n \"name\": \"Guyana\",\n \"prefix\": \"592\"\n}, {\n \"iso2\": \"HT\",\n \"name\": \"Haiti\",\n \"prefix\": \"509\"\n}, {\n \"iso2\": \"HM\",\n \"name\": \"Heard & McDonald Islands\",\n \"prefix\": \"672\"\n}, {\n \"iso2\": \"HN\",\n \"name\": \"Honduras\",\n \"prefix\": \"504\"\n}, {\n \"iso2\": \"HK\",\n \"name\": \"Hong Kong\",\n \"prefix\": \"852\"\n}, {\n \"iso2\": \"HU\",\n \"name\": \"Hungary\",\n \"prefix\": \"36\"\n}, {\n \"iso2\": \"IS\",\n \"name\": \"Iceland\",\n \"prefix\": \"354\"\n}, {\n \"iso2\": \"IN\",\n \"name\": \"India\",\n \"prefix\": \"91\"\n}, {\n \"iso2\": \"ID\",\n \"name\": \"Indonesia\",\n \"prefix\": \"62\"\n}, {\n \"iso2\": \"IR\",\n \"name\": \"Iran\",\n \"prefix\": \"98\"\n}, {\n \"iso2\": \"IQ\",\n \"name\": \"Iraq\",\n \"prefix\": \"964\"\n}, {\n \"iso2\": \"IE\",\n \"name\": \"Ireland\",\n \"prefix\": \"353\"\n}, {\n \"iso2\": \"IM\",\n \"name\": \"Isle of Man\",\n \"prefix\": \"44\"\n}, {\n \"iso2\": \"IL\",\n \"name\": \"Israel\",\n \"prefix\": \"972\"\n}, {\n \"iso2\": \"IT\",\n \"name\": \"Italy\",\n \"prefix\": \"39\"\n}, {\n \"iso2\": \"JM\",\n \"name\": \"Jamaica\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"JP\",\n \"name\": \"Japan\",\n \"prefix\": \"81\"\n}, {\n \"iso2\": \"JE\",\n \"name\": \"Jersey\",\n \"prefix\": \"44\"\n}, {\n \"iso2\": \"JO\",\n \"name\": \"Jordan\",\n \"prefix\": \"962\"\n}, {\n \"iso2\": \"KZ\",\n \"name\": \"Kazakhstan\",\n \"prefix\": \"7\"\n}, {\n \"iso2\": \"KE\",\n \"name\": \"Kenya\",\n \"prefix\": \"254\"\n}, {\n \"iso2\": \"KI\",\n \"name\": \"Kiribati\",\n \"prefix\": \"686\"\n}, {\n \"iso2\": \"KW\",\n \"name\": \"Kuwait\",\n \"prefix\": \"965\"\n}, {\n \"iso2\": \"KG\",\n \"name\": \"Kyrgyzstan\",\n \"prefix\": \"996\"\n}, {\n \"iso2\": \"LA\",\n \"name\": \"Laos\",\n \"prefix\": \"856\"\n}, {\n \"iso2\": \"LV\",\n \"name\": \"Latvia\",\n \"prefix\": \"371\"\n}, {\n \"iso2\": \"LB\",\n \"name\": \"Lebanon\",\n \"prefix\": \"961\"\n}, {\n \"iso2\": \"LS\",\n \"name\": \"Lesotho\",\n \"prefix\": \"266\"\n}, {\n \"iso2\": \"LR\",\n \"name\": \"Liberia\",\n \"prefix\": \"231\"\n}, {\n \"iso2\": \"LY\",\n \"name\": \"Libya\",\n \"prefix\": \"218\"\n}, {\n \"iso2\": \"LI\",\n \"name\": \"Liechtenstein\",\n \"prefix\": \"423\"\n}, {\n \"iso2\": \"LT\",\n \"name\": \"Lithuania\",\n \"prefix\": \"370\"\n}, {\n \"iso2\": \"LU\",\n \"name\": \"Luxembourg\",\n \"prefix\": \"352\"\n}, {\n \"iso2\": \"MO\",\n \"name\": \"Macau\",\n \"prefix\": \"853\"\n}, {\n \"iso2\": \"MK\",\n \"name\": \"Macedonia\",\n \"prefix\": \"389\"\n}, {\n \"iso2\": \"MG\",\n \"name\": \"Madagascar\",\n \"prefix\": \"261\"\n}, {\n \"iso2\": \"MW\",\n \"name\": \"Malawi\",\n \"prefix\": \"265\"\n}, {\n \"iso2\": \"MY\",\n \"name\": \"Malaysia\",\n \"prefix\": \"60\"\n}, {\n \"iso2\": \"MV\",\n \"name\": \"Maldives\",\n \"prefix\": \"960\"\n}, {\n \"iso2\": \"ML\",\n \"name\": \"Mali\",\n \"prefix\": \"223\"\n}, {\n \"iso2\": \"MT\",\n \"name\": \"Malta\",\n \"prefix\": \"356\"\n}, {\n \"iso2\": \"MH\",\n \"name\": \"Marshall Islands\",\n \"prefix\": \"692\"\n}, {\n \"iso2\": \"MQ\",\n \"name\": \"Martinique\",\n \"prefix\": \"596\"\n}, {\n \"iso2\": \"MR\",\n \"name\": \"Mauritania\",\n \"prefix\": \"222\"\n}, {\n \"iso2\": \"MU\",\n \"name\": \"Mauritius\",\n \"prefix\": \"230\"\n}, {\n \"iso2\": \"YT\",\n \"name\": \"Mayotte\",\n \"prefix\": \"262\"\n}, {\n \"iso2\": \"MX\",\n \"name\": \"Mexico\",\n \"prefix\": \"52\"\n}, {\n \"iso2\": \"FM\",\n \"name\": \"Micronesia\",\n \"prefix\": \"691\"\n}, {\n \"iso2\": \"MD\",\n \"name\": \"Moldova\",\n \"prefix\": \"373\"\n}, {\n \"iso2\": \"MC\",\n \"name\": \"Monaco\",\n \"prefix\": \"377\"\n}, {\n \"iso2\": \"MN\",\n \"name\": \"Mongolia\",\n \"prefix\": \"976\"\n}, {\n \"iso2\": \"ME\",\n \"name\": \"Montenegro\",\n \"prefix\": \"382\"\n}, {\n \"iso2\": \"MS\",\n \"name\": \"Montserrat\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"MA\",\n \"name\": \"Morocco\",\n \"prefix\": \"212\"\n}, {\n \"iso2\": \"MZ\",\n \"name\": \"Mozambique\",\n \"prefix\": \"258\"\n}, {\n \"iso2\": \"MM\",\n \"name\": \"Myanmar\",\n \"prefix\": \"95\"\n}, {\n \"iso2\": \"NA\",\n \"name\": \"Namibia\",\n \"prefix\": \"264\"\n}, {\n \"iso2\": \"NR\",\n \"name\": \"Nauru\",\n \"prefix\": \"674\"\n}, {\n \"iso2\": \"NP\",\n \"name\": \"Nepal\",\n \"prefix\": \"977\"\n}, {\n \"iso2\": \"NL\",\n \"name\": \"Netherlands\",\n \"prefix\": \"31\"\n}, {\n \"iso2\": \"NC\",\n \"name\": \"New Caledonia\",\n \"prefix\": \"687\"\n}, {\n \"iso2\": \"NZ\",\n \"name\": \"New Zealand\",\n \"prefix\": \"64\"\n}, {\n \"iso2\": \"NI\",\n \"name\": \"Nicaragua\",\n \"prefix\": \"505\"\n}, {\n \"iso2\": \"NE\",\n \"name\": \"Niger\",\n \"prefix\": \"227\"\n}, {\n \"iso2\": \"NG\",\n \"name\": \"Nigeria\",\n \"prefix\": \"234\"\n}, {\n \"iso2\": \"NU\",\n \"name\": \"Niue\",\n \"prefix\": \"683\"\n}, {\n \"iso2\": \"NF\",\n \"name\": \"Norfolk Island\",\n \"prefix\": \"672\"\n}, {\n \"iso2\": \"KP\",\n \"name\": \"North Korea\",\n \"prefix\": \"850\"\n}, {\n \"iso2\": \"MP\",\n \"name\": \"Northern Mariana Islands\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"NO\",\n \"name\": \"Norway\",\n \"prefix\": \"47\"\n}, {\n \"iso2\": \"OM\",\n \"name\": \"Oman\",\n \"prefix\": \"968\"\n}, {\n \"iso2\": \"PK\",\n \"name\": \"Pakistan\",\n \"prefix\": \"92\"\n}, {\n \"iso2\": \"PW\",\n \"name\": \"Palau\",\n \"prefix\": \"680\"\n}, {\n \"iso2\": \"PS\",\n \"name\": \"Palestine\",\n \"prefix\": \"970\"\n}, {\n \"iso2\": \"PA\",\n \"name\": \"Panama\",\n \"prefix\": \"507\"\n}, {\n \"iso2\": \"PG\",\n \"name\": \"Papua New Guinea\",\n \"prefix\": \"675\"\n}, {\n \"iso2\": \"PY\",\n \"name\": \"Paraguay\",\n \"prefix\": \"595\"\n}, {\n \"iso2\": \"PE\",\n \"name\": \"Peru\",\n \"prefix\": \"51\"\n}, {\n \"iso2\": \"PH\",\n \"name\": \"Philippines\",\n \"prefix\": \"63\"\n}, {\n \"iso2\": \"PN\",\n \"name\": \"Pitcairn Islands\",\n \"prefix\": \"870\"\n}, {\n \"iso2\": \"PL\",\n \"name\": \"Poland\",\n \"prefix\": \"48\"\n}, {\n \"iso2\": \"PT\",\n \"name\": \"Portugal\",\n \"prefix\": \"351\"\n}, {\n \"iso2\": \"PR\",\n \"name\": \"Puerto Rico\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"QA\",\n \"name\": \"Qatar\",\n \"prefix\": \"974\"\n}, {\n \"iso2\": \"RO\",\n \"name\": \"Romania\",\n \"prefix\": \"40\"\n}, {\n \"iso2\": \"RU\",\n \"name\": \"Russia\",\n \"prefix\": \"7\"\n}, {\n \"iso2\": \"RW\",\n \"name\": \"Rwanda\",\n \"prefix\": \"250\"\n}, {\n \"iso2\": \"RE\",\n \"name\": \"R\\xE9union\",\n \"prefix\": \"262\"\n}, {\n \"iso2\": \"WS\",\n \"name\": \"Samoa\",\n \"prefix\": \"685\"\n}, {\n \"iso2\": \"SM\",\n \"name\": \"San Marino\",\n \"prefix\": \"378\"\n}, {\n \"iso2\": \"SA\",\n \"name\": \"Saudi Arabia\",\n \"prefix\": \"966\"\n}, {\n \"iso2\": \"SN\",\n \"name\": \"Senegal\",\n \"prefix\": \"221\"\n}, {\n \"iso2\": \"RS\",\n \"name\": \"Serbia\",\n \"prefix\": \"381 p\"\n}, {\n \"iso2\": \"SC\",\n \"name\": \"Seychelles\",\n \"prefix\": \"248\"\n}, {\n \"iso2\": \"SL\",\n \"name\": \"Sierra Leone\",\n \"prefix\": \"232\"\n}, {\n \"iso2\": \"SG\",\n \"name\": \"Singapore\",\n \"prefix\": \"65\"\n}, {\n \"iso2\": \"SX\",\n \"name\": \"Sint Maarten\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"SK\",\n \"name\": \"Slovakia\",\n \"prefix\": \"421\"\n}, {\n \"iso2\": \"SI\",\n \"name\": \"Slovenia\",\n \"prefix\": \"386\"\n}, {\n \"iso2\": \"SB\",\n \"name\": \"Solomon Islands\",\n \"prefix\": \"677\"\n}, {\n \"iso2\": \"SO\",\n \"name\": \"Somalia\",\n \"prefix\": \"252\"\n}, {\n \"iso2\": \"ZA\",\n \"name\": \"South Africa\",\n \"prefix\": \"27\"\n}, {\n \"iso2\": \"GS\",\n \"name\": \"South Georgia & South Sandwich Islands\",\n \"prefix\": \"500\"\n}, {\n \"iso2\": \"KR\",\n \"name\": \"South Korea\",\n \"prefix\": \"82\"\n}, {\n \"iso2\": \"SS\",\n \"name\": \"South Sudan\",\n \"prefix\": \"211\"\n}, {\n \"iso2\": \"ES\",\n \"name\": \"Spain\",\n \"prefix\": \"34\"\n}, {\n \"iso2\": \"LK\",\n \"name\": \"Sri Lanka\",\n \"prefix\": \"94\"\n}, {\n \"iso2\": \"BL\",\n \"name\": \"St. Barth\\xE9lemy\",\n \"prefix\": \"590\"\n}, {\n \"iso2\": \"SH\",\n \"name\": \"St. Helena\",\n \"prefix\": \"290 n\"\n}, {\n \"iso2\": \"KN\",\n \"name\": \"St. Kitts & Nevis\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"LC\",\n \"name\": \"St. Lucia\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"MF\",\n \"name\": \"St. Martin\",\n \"prefix\": \"590\"\n}, {\n \"iso2\": \"PM\",\n \"name\": \"St. Pierre & Miquelon\",\n \"prefix\": \"508\"\n}, {\n \"iso2\": \"VC\",\n \"name\": \"St. Vincent & Grenadines\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"SD\",\n \"name\": \"Sudan\",\n \"prefix\": \"249\"\n}, {\n \"iso2\": \"SR\",\n \"name\": \"Suriname\",\n \"prefix\": \"597\"\n}, {\n \"iso2\": \"SJ\",\n \"name\": \"Svalbard & Jan Mayen\",\n \"prefix\": \"47\"\n}, {\n \"iso2\": \"SZ\",\n \"name\": \"Swaziland\",\n \"prefix\": \"268\"\n}, {\n \"iso2\": \"SE\",\n \"name\": \"Sweden\",\n \"prefix\": \"46\"\n}, {\n \"iso2\": \"CH\",\n \"name\": \"Switzerland\",\n \"prefix\": \"41\"\n}, {\n \"iso2\": \"SY\",\n \"name\": \"Syria\",\n \"prefix\": \"963\"\n}, {\n \"iso2\": \"ST\",\n \"name\": \"S\\xE3o Tom\\xE9 & Pr\\xEDncipe\",\n \"prefix\": \"239\"\n}, {\n \"iso2\": \"TW\",\n \"name\": \"Taiwan\",\n \"prefix\": \"886\"\n}, {\n \"iso2\": \"TJ\",\n \"name\": \"Tajikistan\",\n \"prefix\": \"992\"\n}, {\n \"iso2\": \"TZ\",\n \"name\": \"Tanzania\",\n \"prefix\": \"255\"\n}, {\n \"iso2\": \"TH\",\n \"name\": \"Thailand\",\n \"prefix\": \"66\"\n}, {\n \"iso2\": \"TL\",\n \"name\": \"Timor-Leste\",\n \"prefix\": \"670\"\n}, {\n \"iso2\": \"TG\",\n \"name\": \"Togo\",\n \"prefix\": \"228\"\n}, {\n \"iso2\": \"TK\",\n \"name\": \"Tokelau\",\n \"prefix\": \"690\"\n}, {\n \"iso2\": \"TO\",\n \"name\": \"Tonga\",\n \"prefix\": \"676\"\n}, {\n \"iso2\": \"TT\",\n \"name\": \"Trinidad & Tobago\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"TN\",\n \"name\": \"Tunisia\",\n \"prefix\": \"216\"\n}, {\n \"iso2\": \"TR\",\n \"name\": \"Turkey\",\n \"prefix\": \"90\"\n}, {\n \"iso2\": \"TM\",\n \"name\": \"Turkmenistan\",\n \"prefix\": \"993\"\n}, {\n \"iso2\": \"TC\",\n \"name\": \"Turks & Caicos Islands\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"TV\",\n \"name\": \"Tuvalu\",\n \"prefix\": \"688\"\n}, {\n \"iso2\": \"VI\",\n \"name\": \"U.S. Virgin Islands\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"UG\",\n \"name\": \"Uganda\",\n \"prefix\": \"256\"\n}, {\n \"iso2\": \"UA\",\n \"name\": \"Ukraine\",\n \"prefix\": \"380\"\n}, {\n \"iso2\": \"AE\",\n \"name\": \"United Arab Emirates\",\n \"prefix\": \"971\"\n}, {\n \"iso2\": \"UY\",\n \"name\": \"Uruguay\",\n \"prefix\": \"598\"\n}, {\n \"iso2\": \"UZ\",\n \"name\": \"Uzbekistan\",\n \"prefix\": \"998\"\n}, {\n \"iso2\": \"VU\",\n \"name\": \"Vanuatu\",\n \"prefix\": \"678\"\n}, {\n \"iso2\": \"VA\",\n \"name\": \"Vatican City\",\n \"prefix\": \"39\"\n}, {\n \"iso2\": \"VE\",\n \"name\": \"Venezuela\",\n \"prefix\": \"58\"\n}, {\n \"iso2\": \"VN\",\n \"name\": \"Vietnam\",\n \"prefix\": \"84\"\n}, {\n \"iso2\": \"WF\",\n \"name\": \"Wallis & Futuna\",\n \"prefix\": \"681\"\n}, {\n \"iso2\": \"EH\",\n \"name\": \"Western Sahara\",\n \"prefix\": \"212\"\n}, {\n \"iso2\": \"YE\",\n \"name\": \"Yemen\",\n \"prefix\": \"967\"\n}, {\n \"iso2\": \"ZM\",\n \"name\": \"Zambia\",\n \"prefix\": \"260\"\n}, {\n \"iso2\": \"ZW\",\n \"name\": \"Zimbabwe\",\n \"prefix\": \"263\"\n}];\n//# sourceMappingURL=phonenumber.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar StatusMessageContextMenu = function (_React$Component) {\n (0, _inherits3.default)(StatusMessageContextMenu, _React$Component);\n\n function StatusMessageContextMenu(props, context) {\n var _this2 = this;\n\n (0, _classCallCheck3.default)(this, StatusMessageContextMenu);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (StatusMessageContextMenu.__proto__ || (0, _getPrototypeOf2.default)(StatusMessageContextMenu)).call(this, props, context));\n\n _this._onClearClick = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(e) {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get()._unstable_setStatusMessage(\"\"));\n\n case 2:\n _this.setState({ message: \"\" });\n\n case 3:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this2);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n _this._onSubmit = function (e) {\n e.preventDefault();\n _MatrixClientPeg2.default.get()._unstable_setStatusMessage(_this.state.message);\n };\n\n _this._onStatusChange = function (e) {\n _this.setState({ message: e.target.value });\n };\n\n _this.state = {\n message: props.user ? props.user._unstable_statusMessage : \"\"\n };\n return _this;\n }\n\n (0, _createClass3.default)(StatusMessageContextMenu, [{\n key: 'render',\n value: function render() {\n var formSubmitClasses = (0, _classnames2.default)({\n \"mx_StatusMessageContextMenu_submit\": true,\n \"mx_StatusMessageContextMenu_submitFaded\": !this.state.message // no message == faded\n });\n\n var form = _react2.default.createElement(\n 'form',\n { className: 'mx_StatusMessageContextMenu_form', onSubmit: this._onSubmit, autoComplete: 'off' },\n _react2.default.createElement('input', { type: 'text', key: 'message', placeholder: (0, _languageHandler._t)(\"Set a new status...\"), autoFocus: true,\n className: 'mx_StatusMessageContextMenu_message',\n value: this.state.message, onChange: this._onStatusChange, maxLength: '60' }),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._onSubmit, element: 'div', className: formSubmitClasses },\n _react2.default.createElement('img', { src: 'img/icons-checkmark.svg', width: '22', height: '22' })\n )\n );\n\n var clearIcon = this.state.message ? \"img/cancel-red.svg\" : \"img/cancel.svg\";\n var clearButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._onClearClick, disabled: !this.state.message,\n className: 'mx_StatusMessageContextMenu_clear' },\n _react2.default.createElement('img', { src: clearIcon, alt: (0, _languageHandler._t)('Clear status'), width: '12', height: '12',\n className: 'mx_filterFlipColor mx_StatusMessageContextMenu_clearIcon' }),\n _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Clear status\")\n )\n );\n\n var menuClasses = (0, _classnames2.default)({\n \"mx_StatusMessageContextMenu\": true,\n \"mx_StatusMessageContextMenu_hasStatus\": this.state.message\n });\n\n return _react2.default.createElement(\n 'div',\n { className: menuClasses },\n form,\n _react2.default.createElement('hr', null),\n clearButton\n );\n }\n }]);\n return StatusMessageContextMenu;\n}(_react2.default.Component);\n\nStatusMessageContextMenu.propTypes = {\n // js-sdk User object. Not required because it might not exist.\n user: _propTypes2.default.object\n};\nexports.default = StatusMessageContextMenu;\nmodule.exports = exports['default'];\n//# sourceMappingURL=StatusMessageContextMenu.js.map","module.exports = {\n\tMODE_NUMBER :\t\t1 << 0,\n\tMODE_ALPHA_NUM : \t1 << 1,\n\tMODE_8BIT_BYTE : \t1 << 2,\n\tMODE_KANJI :\t\t1 << 3\n};\n","module.exports = {\n\tL : 1,\n\tM : 0,\n\tQ : 3,\n\tH : 2\n};\n\n","var math = require('./math');\n\nfunction QRPolynomial(num, shift) {\n\n\tif (num.length == undefined) {\n\t\tthrow new Error(num.length + \"/\" + shift);\n\t}\n\n\tvar offset = 0;\n\n\twhile (offset < num.length && num[offset] == 0) {\n\t\toffset++;\n\t}\n\n\tthis.num = new Array(num.length - offset + shift);\n\tfor (var i = 0; i < num.length - offset; i++) {\n\t\tthis.num[i] = num[i + offset];\n\t}\n}\n\nQRPolynomial.prototype = {\n\n\tget : function(index) {\n\t\treturn this.num[index];\n\t},\n\t\n\tgetLength : function() {\n\t\treturn this.num.length;\n\t},\n\t\n\tmultiply : function(e) {\n\t\n\t\tvar num = new Array(this.getLength() + e.getLength() - 1);\n\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tfor (var j = 0; j < e.getLength(); j++) {\n\t\t\t\tnum[i + j] ^= math.gexp(math.glog(this.get(i) ) + math.glog(e.get(j) ) );\n\t\t\t}\n\t\t}\n\t\n\t\treturn new QRPolynomial(num, 0);\n\t},\n\t\n\tmod : function(e) {\n\t\n\t\tif (this.getLength() - e.getLength() < 0) {\n\t\t\treturn this;\n\t\t}\n\t\n\t\tvar ratio = math.glog(this.get(0) ) - math.glog(e.get(0) );\n\t\n\t\tvar num = new Array(this.getLength() );\n\t\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tnum[i] = this.get(i);\n\t\t}\n\t\t\n\t\tfor (var i = 0; i < e.getLength(); i++) {\n\t\t\tnum[i] ^= math.gexp(math.glog(e.get(i) ) + ratio);\n\t\t}\n\t\n\t\t// recursive call\n\t\treturn new QRPolynomial(num, 0).mod(e);\n\t}\n};\n\nmodule.exports = QRPolynomial;\n","var QRMath = {\n\n\tglog : function(n) {\n\t\n\t\tif (n < 1) {\n\t\t\tthrow new Error(\"glog(\" + n + \")\");\n\t\t}\n\t\t\n\t\treturn QRMath.LOG_TABLE[n];\n\t},\n\t\n\tgexp : function(n) {\n\t\n\t\twhile (n < 0) {\n\t\t\tn += 255;\n\t\t}\n\t\n\t\twhile (n >= 256) {\n\t\t\tn -= 255;\n\t\t}\n\t\n\t\treturn QRMath.EXP_TABLE[n];\n\t},\n\t\n\tEXP_TABLE : new Array(256),\n\t\n\tLOG_TABLE : new Array(256)\n\n};\n\t\nfor (var i = 0; i < 8; i++) {\n\tQRMath.EXP_TABLE[i] = 1 << i;\n}\nfor (var i = 8; i < 256; i++) {\n\tQRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4]\n\t\t^ QRMath.EXP_TABLE[i - 5]\n\t\t^ QRMath.EXP_TABLE[i - 6]\n\t\t^ QRMath.EXP_TABLE[i - 8];\n}\nfor (var i = 0; i < 255; i++) {\n\tQRMath.LOG_TABLE[QRMath.EXP_TABLE[i] ] = i;\n}\n\nmodule.exports = QRMath;\n","'use strict';\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar React = require('react');\nvar ReactDOM = require('react-dom');\nvar GeminiScrollbar = require('gemini-scrollbar');\n\nmodule.exports = React.createClass({\n displayName: 'GeminiScrollbar',\n\n propTypes: {\n autoshow: React.PropTypes.bool,\n forceGemini: React.PropTypes.bool,\n onResize: React.PropTypes.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n autoshow: false,\n forceGemini: false\n };\n },\n\n\n /**\n * Holds the reference to the GeminiScrollbar instance.\n * @property scrollbar <public> [Object]\n */\n scrollbar: null,\n\n componentDidMount: function componentDidMount() {\n this.scrollbar = new GeminiScrollbar({\n element: ReactDOM.findDOMNode(this),\n autoshow: this.props.autoshow,\n forceGemini: this.props.forceGemini,\n createElements: false,\n onResize: this.props.onResize\n }).create();\n },\n componentDidUpdate: function componentDidUpdate() {\n this.scrollbar.update();\n },\n componentWillUnmount: function componentWillUnmount() {\n if (this.scrollbar) {\n this.scrollbar.destroy();\n }\n this.scrollbar = null;\n },\n render: function render() {\n var _props = this.props;\n var className = _props.className;\n var children = _props.children;\n var autoshow = _props.autoshow;\n var forceGemini = _props.forceGemini;\n var onResize = _props.onResize;\n var other = _objectWithoutProperties(_props, ['className', 'children', 'autoshow', 'forceGemini', 'onResize']);\n var classes = '';\n\n if (className) {\n classes += ' ' + className;\n }\n\n return React.createElement(\n 'div',\n _extends({}, other, { className: classes }),\n React.createElement(\n 'div',\n { className: 'gm-scrollbar -vertical' },\n React.createElement('div', { className: 'thumb' })\n ),\n React.createElement(\n 'div',\n { className: 'gm-scrollbar -horizontal' },\n React.createElement('div', { className: 'thumb' })\n ),\n React.createElement(\n 'div',\n { className: 'gm-scroll-view', ref: 'scroll-view' },\n children\n )\n );\n }\n});\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _WidgetUtils = require('../../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AppPermission = function (_React$Component) {\n (0, _inherits3.default)(AppPermission, _React$Component);\n\n function AppPermission(props) {\n (0, _classCallCheck3.default)(this, AppPermission);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (AppPermission.__proto__ || (0, _getPrototypeOf2.default)(AppPermission)).call(this, props));\n\n var curlBase = _this.getCurlBase();\n _this.state = { curlBase: curlBase };\n return _this;\n }\n\n // Return string representation of content URL without query parameters\n\n\n (0, _createClass3.default)(AppPermission, [{\n key: 'getCurlBase',\n value: function getCurlBase() {\n var wurl = _url2.default.parse(this.props.url);\n var curl = void 0;\n var curlString = void 0;\n\n var searchParams = new URLSearchParams(wurl.search);\n\n if (_WidgetUtils2.default.isScalarUrl(wurl) && searchParams && searchParams.get('url')) {\n curl = _url2.default.parse(searchParams.get('url'));\n if (curl) {\n curl.search = curl.query = \"\";\n curlString = curl.format();\n }\n }\n if (!curl && wurl) {\n wurl.search = wurl.query = \"\";\n curlString = wurl.format();\n }\n return curlString;\n }\n }, {\n key: 'render',\n value: function render() {\n var e2eWarningText = void 0;\n if (this.props.isRoomEncrypted) {\n e2eWarningText = _react2.default.createElement(\n 'span',\n { className: 'mx_AppPermissionWarningTextLabel' },\n (0, _languageHandler._t)('NOTE: Apps are not end-to-end encrypted')\n );\n }\n var cookieWarning = _react2.default.createElement(\n 'span',\n { className: 'mx_AppPermissionWarningTextLabel' },\n (0, _languageHandler._t)('Warning: This widget might use cookies.')\n );\n return _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarning' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarningImage' },\n _react2.default.createElement('img', { src: 'img/warning.svg', alt: (0, _languageHandler._t)('Warning!') })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarningText' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_AppPermissionWarningTextLabel' },\n (0, _languageHandler._t)('Do you want to load widget from URL:')\n ),\n ' ',\n _react2.default.createElement(\n 'span',\n { className: 'mx_AppPermissionWarningTextURL' },\n this.state.curlBase\n ),\n e2eWarningText,\n cookieWarning\n ),\n _react2.default.createElement('input', {\n className: 'mx_AppPermissionButton',\n type: 'button',\n value: (0, _languageHandler._t)('Allow'),\n onClick: this.props.onPermissionGranted\n })\n );\n }\n }]);\n return AppPermission;\n}(_react2.default.Component);\n\nexports.default = AppPermission;\n\n\nAppPermission.propTypes = {\n isRoomEncrypted: _propTypes2.default.bool,\n url: _propTypes2.default.string.isRequired,\n onPermissionGranted: _propTypes2.default.func.isRequired\n};\nAppPermission.defaultProps = {\n isRoomEncrypted: false,\n onPermissionGranted: function onPermissionGranted() {}\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=AppPermission.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _TintableSvg = require('./TintableSvg');\n\nvar _TintableSvg2 = _interopRequireDefault(_TintableSvg);\n\nvar _AccessibleButton = require('./AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar TintableSvgButton = function (_React$Component) {\n (0, _inherits3.default)(TintableSvgButton, _React$Component);\n\n function TintableSvgButton(props) {\n (0, _classCallCheck3.default)(this, TintableSvgButton);\n return (0, _possibleConstructorReturn3.default)(this, (TintableSvgButton.__proto__ || (0, _getPrototypeOf2.default)(TintableSvgButton)).call(this, props));\n }\n\n (0, _createClass3.default)(TintableSvgButton, [{\n key: 'render',\n value: function render() {\n var classes = \"mx_TintableSvgButton\";\n if (this.props.className) {\n classes += \" \" + this.props.className;\n }\n return _react2.default.createElement(\n 'span',\n {\n width: this.props.width,\n height: this.props.height,\n className: classes },\n _react2.default.createElement(_TintableSvg2.default, {\n src: this.props.src,\n width: this.props.width,\n height: this.props.height\n }),\n _react2.default.createElement(_AccessibleButton2.default, {\n onClick: this.props.onClick,\n element: 'span',\n title: this.props.title\n })\n );\n }\n }]);\n return TintableSvgButton;\n}(_react2.default.Component);\n\nexports.default = TintableSvgButton;\n\n\nTintableSvgButton.propTypes = {\n src: _propTypes2.default.string,\n title: _propTypes2.default.string,\n className: _propTypes2.default.string,\n width: _propTypes2.default.string.isRequired,\n height: _propTypes2.default.string.isRequired,\n onClick: _propTypes2.default.func\n};\n\nTintableSvgButton.defaultProps = {\n onClick: function onClick() {}\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=TintableSvgButton.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AppWarning = function AppWarning(props) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarning' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarningImage' },\n _react2.default.createElement('img', { src: 'img/warning.svg', alt: '' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarningText' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_AppPermissionWarningTextLabel' },\n props.errorMsg\n )\n )\n );\n}; // eslint-disable-line no-unused-vars\n\n\nAppWarning.propTypes = {\n errorMsg: _propTypes2.default.string\n};\nAppWarning.defaultProps = {\n errorMsg: 'Error'\n};\n\nexports.default = AppWarning;\nmodule.exports = exports['default'];\n//# sourceMappingURL=AppWarning.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MessageSpinner',\n\n render: function render() {\n var w = this.props.w || 32;\n var h = this.props.h || 32;\n var imgClass = this.props.imgClassName || \"\";\n var msg = this.props.msg || \"Loading...\";\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Spinner' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Spinner_Msg' },\n msg\n ),\n '\\xA0',\n _react2.default.createElement('img', { src: 'img/spinner.gif', width: w, height: h, className: imgClass })\n );\n }\n}); /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=MessageSpinner.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Keyboard = require('../../../Keyboard');\n\nvar _ContextualMenu = require('../../structures/ContextualMenu');\n\nvar ContextualMenu = _interopRequireWildcard(_ContextualMenu);\n\nvar _FlairStore = require('../../../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// A class for a child of TagPanel (possibly wrapped in a DNDTagTile) that represents\n// a thing to click on for the user to filter the visible rooms in the RoomList to:\n// - Rooms that are part of the group\n// - Direct messages with members of the group\n// with the intention that this could be expanded to arbitrary tags in future.\n/*\nCopyright 2017 New Vector Ltd.\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'TagTile',\n\n propTypes: {\n // A string tag such as \"m.favourite\" or a group ID such as \"+groupid:domain.bla\"\n // For now, only group IDs are handled.\n tag: _propTypes2.default.string\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n // Whether the mouse is over the tile\n hover: false,\n // The profile data of the group if this.props.tag is a group ID\n profile: null\n };\n },\n componentWillMount: function componentWillMount() {\n this.unmounted = false;\n if (this.props.tag[0] === '+') {\n _FlairStore2.default.addListener('updateGroupProfile', this._onFlairStoreUpdated);\n this._onFlairStoreUpdated();\n // New rooms or members may have been added to the group, fetch async\n this._refreshGroup(this.props.tag);\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n this.unmounted = true;\n if (this.props.tag[0] === '+') {\n _FlairStore2.default.removeListener('updateGroupProfile', this._onFlairStoreUpdated);\n }\n },\n _onFlairStoreUpdated: function _onFlairStoreUpdated() {\n var _this = this;\n\n if (this.unmounted) return;\n _FlairStore2.default.getGroupProfileCached(this.context.matrixClient, this.props.tag).then(function (profile) {\n if (_this.unmounted) return;\n _this.setState({ profile: profile });\n }).catch(function (err) {\n console.warn('Could not fetch group profile for ' + _this.props.tag, err);\n });\n },\n _refreshGroup: function _refreshGroup(groupId) {\n _GroupStore2.default.refreshGroupRooms(groupId);\n _GroupStore2.default.refreshGroupMembers(groupId);\n },\n\n\n onClick: function onClick(e) {\n e.preventDefault();\n e.stopPropagation();\n _dispatcher2.default.dispatch({\n action: 'select_tag',\n tag: this.props.tag,\n ctrlOrCmdKey: (0, _Keyboard.isOnlyCtrlOrCmdIgnoreShiftKeyEvent)(e),\n shiftKey: e.shiftKey\n });\n if (this.props.tag[0] === '+') {\n // New rooms or members may have been added to the group, fetch async\n this._refreshGroup(this.props.tag);\n }\n },\n\n _openContextMenu: function _openContextMenu(x, y, chevronOffset) {\n var _this2 = this;\n\n // Hide the (...) immediately\n this.setState({ hover: false });\n\n var TagTileContextMenu = _index2.default.getComponent('context_menus.TagTileContextMenu');\n ContextualMenu.createMenu(TagTileContextMenu, {\n chevronOffset: chevronOffset,\n left: x,\n top: y,\n tag: this.props.tag,\n onFinished: function onFinished() {\n _this2.setState({ menuDisplayed: false });\n }\n });\n this.setState({ menuDisplayed: true });\n },\n\n onContextButtonClick: function onContextButtonClick(e) {\n e.preventDefault();\n e.stopPropagation();\n\n var elementRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = elementRect.right + window.pageXOffset + 3;\n var chevronOffset = 12;\n var y = elementRect.top + elementRect.height / 2 + window.pageYOffset;\n y = y - (chevronOffset + 8); // where 8 is half the height of the chevron\n\n this._openContextMenu(x, y, chevronOffset);\n },\n\n onContextMenu: function onContextMenu(e) {\n e.preventDefault();\n\n var chevronOffset = 12;\n this._openContextMenu(e.clientX, e.clientY - (chevronOffset + 8), chevronOffset);\n },\n\n onMouseOver: function onMouseOver() {\n this.setState({ hover: true });\n },\n\n onMouseOut: function onMouseOut() {\n this.setState({ hover: false });\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var RoomTooltip = _index2.default.getComponent('rooms.RoomTooltip');\n var profile = this.state.profile || {};\n var name = profile.name || this.props.tag;\n var avatarHeight = 35;\n\n var httpUrl = profile.avatarUrl ? this.context.matrixClient.mxcUrlToHttp(profile.avatarUrl, avatarHeight, avatarHeight, \"crop\") : null;\n\n var className = (0, _classnames2.default)({\n mx_TagTile: true,\n mx_TagTile_selected: this.props.selected\n });\n\n var tip = this.state.hover ? _react2.default.createElement(RoomTooltip, { className: 'mx_TagTile_tooltip', label: name }) : _react2.default.createElement('div', null);\n var contextButton = this.state.hover || this.state.menuDisplayed ? _react2.default.createElement(\n 'div',\n { className: 'mx_TagTile_context_button', onClick: this.onContextButtonClick },\n '\\xB7\\xB7\\xB7'\n ) : _react2.default.createElement('div', null);\n return _react2.default.createElement(\n AccessibleButton,\n { className: className, onClick: this.onClick, onContextMenu: this.onContextMenu },\n _react2.default.createElement(\n 'div',\n { className: 'mx_TagTile_avatar', onMouseOver: this.onMouseOver, onMouseOut: this.onMouseOut },\n _react2.default.createElement(BaseAvatar, {\n name: name,\n idName: this.props.tag,\n url: httpUrl,\n width: avatarHeight,\n height: avatarHeight\n }),\n tip,\n contextButton\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=TagTile.js.map","/*\n Copyright 2017 New Vector Ltd.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _FlairStore = require('../../../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar FlairAvatar = function (_React$Component) {\n (0, _inherits3.default)(FlairAvatar, _React$Component);\n\n function FlairAvatar() {\n (0, _classCallCheck3.default)(this, FlairAvatar);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (FlairAvatar.__proto__ || (0, _getPrototypeOf2.default)(FlairAvatar)).call(this));\n\n _this.onClick = _this.onClick.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(FlairAvatar, [{\n key: 'onClick',\n value: function onClick(ev) {\n ev.preventDefault();\n // Don't trigger onClick of parent element\n ev.stopPropagation();\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: this.props.groupProfile.groupId\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var httpUrl = this.context.matrixClient.mxcUrlToHttp(this.props.groupProfile.avatarUrl, 16, 16, 'scale', false);\n var tooltip = this.props.groupProfile.name ? this.props.groupProfile.name + ' (' + this.props.groupProfile.groupId + ')' : this.props.groupProfile.groupId;\n return _react2.default.createElement('img', {\n src: httpUrl,\n width: '16',\n height: '16',\n onClick: this.onClick,\n title: tooltip });\n }\n }]);\n return FlairAvatar;\n}(_react2.default.Component);\n\nFlairAvatar.propTypes = {\n groupProfile: _propTypes2.default.shape({\n groupId: _propTypes2.default.string.isRequired,\n name: _propTypes2.default.string,\n avatarUrl: _propTypes2.default.string.isRequired\n })\n};\n\nFlairAvatar.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n};\n\nvar Flair = function (_React$Component2) {\n (0, _inherits3.default)(Flair, _React$Component2);\n\n function Flair() {\n (0, _classCallCheck3.default)(this, Flair);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (Flair.__proto__ || (0, _getPrototypeOf2.default)(Flair)).call(this));\n\n _this2.state = {\n profiles: []\n };\n return _this2;\n }\n\n (0, _createClass3.default)(Flair, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n this._unmounted = false;\n this._generateAvatars(this.props.groups);\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(newProps) {\n this._generateAvatars(newProps.groups);\n }\n }, {\n key: '_getGroupProfiles',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(groups) {\n var profiles, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, groupId, groupProfile;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n profiles = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 4;\n _iterator = (0, _getIterator3.default)(groups);\n\n case 6:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context.next = 22;\n break;\n }\n\n groupId = _step.value;\n groupProfile = null;\n _context.prev = 9;\n _context.next = 12;\n return (0, _bluebird.resolve)(_FlairStore2.default.getGroupProfileCached(this.context.matrixClient, groupId));\n\n case 12:\n groupProfile = _context.sent;\n _context.next = 18;\n break;\n\n case 15:\n _context.prev = 15;\n _context.t0 = _context['catch'](9);\n\n console.error('Could not get profile for group', groupId, _context.t0);\n\n case 18:\n profiles.push(groupProfile);\n\n case 19:\n _iteratorNormalCompletion = true;\n _context.next = 6;\n break;\n\n case 22:\n _context.next = 28;\n break;\n\n case 24:\n _context.prev = 24;\n _context.t1 = _context['catch'](4);\n _didIteratorError = true;\n _iteratorError = _context.t1;\n\n case 28:\n _context.prev = 28;\n _context.prev = 29;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 31:\n _context.prev = 31;\n\n if (!_didIteratorError) {\n _context.next = 34;\n break;\n }\n\n throw _iteratorError;\n\n case 34:\n return _context.finish(31);\n\n case 35:\n return _context.finish(28);\n\n case 36:\n return _context.abrupt('return', profiles.filter(function (p) {\n return p !== null;\n }));\n\n case 37:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 24, 28, 36], [9, 15], [29,, 31, 35]]);\n }));\n\n function _getGroupProfiles(_x) {\n return _ref.apply(this, arguments);\n }\n\n return _getGroupProfiles;\n }()\n }, {\n key: '_generateAvatars',\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(groups) {\n var profiles;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(!groups || groups.length === 0)) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 2:\n _context2.next = 4;\n return (0, _bluebird.resolve)(this._getGroupProfiles(groups));\n\n case 4:\n profiles = _context2.sent;\n\n if (!this.unmounted) {\n this.setState({\n profiles: profiles.filter(function (profile) {\n return profile ? profile.avatarUrl : false;\n })\n });\n }\n\n case 6:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function _generateAvatars(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return _generateAvatars;\n }()\n }, {\n key: 'render',\n value: function render() {\n if (this.state.profiles.length === 0) {\n return _react2.default.createElement('div', null);\n }\n var avatars = this.state.profiles.map(function (profile, index) {\n return _react2.default.createElement(FlairAvatar, { key: index, groupProfile: profile });\n });\n return _react2.default.createElement(\n 'span',\n { className: 'mx_Flair' },\n avatars\n );\n }\n }]);\n return Flair;\n}(_react2.default.Component);\n\nexports.default = Flair;\n\n\nFlair.propTypes = {\n groups: _propTypes2.default.arrayOf(_propTypes2.default.string)\n};\n\n// TODO: We've decided that all components should follow this pattern, which means removing withMatrixClient and using\n// this.context.matrixClient everywhere instead of this.props.matrixClient.\n// See https://github.com/vector-im/riot-web/issues/4951.\nFlair.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=Flair.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _ScalarAuthClient = require('../../../ScalarAuthClient');\n\nvar _ScalarAuthClient2 = _interopRequireDefault(_ScalarAuthClient);\n\nvar _ScalarMessaging = require('../../../ScalarMessaging');\n\nvar _ScalarMessaging2 = _interopRequireDefault(_ScalarMessaging);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _AccessibleButton = require('./AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _TintableSvg = require('./TintableSvg');\n\nvar _TintableSvg2 = _interopRequireDefault(_TintableSvg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ManageIntegsButton = function (_React$Component) {\n (0, _inherits3.default)(ManageIntegsButton, _React$Component);\n\n function ManageIntegsButton(props) {\n (0, _classCallCheck3.default)(this, ManageIntegsButton);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ManageIntegsButton.__proto__ || (0, _getPrototypeOf2.default)(ManageIntegsButton)).call(this, props));\n\n _this.state = {\n scalarError: null\n };\n\n _this.onManageIntegrations = _this.onManageIntegrations.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(ManageIntegsButton, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n _ScalarMessaging2.default.startListening();\n this.scalarClient = null;\n\n if (_SdkConfig2.default.get().integrations_ui_url && _SdkConfig2.default.get().integrations_rest_url) {\n this.scalarClient = new _ScalarAuthClient2.default();\n this.scalarClient.connect().done(function () {\n _this2.forceUpdate();\n }, function (err) {\n _this2.setState({ scalarError: err });\n console.error('Error whilst initialising scalarClient for ManageIntegsButton', err);\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _ScalarMessaging2.default.stopListening();\n }\n }, {\n key: 'onManageIntegrations',\n value: function onManageIntegrations(ev) {\n ev.preventDefault();\n if (this.state.scalarError && !this.scalarClient.hasCredentials()) {\n return;\n }\n var IntegrationsManager = _index2.default.getComponent(\"views.settings.IntegrationsManager\");\n _Modal2.default.createDialog(IntegrationsManager, {\n src: this.scalarClient !== null && this.scalarClient.hasCredentials() ? this.scalarClient.getScalarInterfaceUrlForRoom(this.props.room) : null\n }, \"mx_IntegrationsManager\");\n }\n }, {\n key: 'render',\n value: function render() {\n var integrationsButton = _react2.default.createElement('div', null);\n var integrationsWarningTriangle = _react2.default.createElement('div', null);\n var integrationsErrorPopup = _react2.default.createElement('div', null);\n if (this.scalarClient !== null) {\n var integrationsButtonClasses = (0, _classnames2.default)({\n mx_RoomHeader_button: true,\n mx_RoomSettings_integrationsButton_error: !!this.state.scalarError\n });\n\n if (this.state.scalarError && !this.scalarClient.hasCredentials()) {\n integrationsWarningTriangle = _react2.default.createElement('img', { src: 'img/warning.svg', title: (0, _languageHandler._t)('Integrations Error'), width: '17' });\n // Popup shown when hovering over integrationsButton_error (via CSS)\n integrationsErrorPopup = _react2.default.createElement(\n 'span',\n { className: 'mx_RoomSettings_integrationsButton_errorPopup' },\n (0, _languageHandler._t)('Could not connect to the integration server')\n );\n }\n\n integrationsButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: integrationsButtonClasses, onClick: this.onManageIntegrations, title: (0, _languageHandler._t)('Manage Integrations') },\n _react2.default.createElement(_TintableSvg2.default, { src: 'img/icons-apps.svg', width: '35', height: '35' }),\n integrationsWarningTriangle,\n integrationsErrorPopup\n );\n }\n\n return integrationsButton;\n }\n }]);\n return ManageIntegsButton;\n}(_react2.default.Component); /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = ManageIntegsButton;\n\n\nManageIntegsButton.propTypes = {\n room: _propTypes2.default.object.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=ManageIntegsButton.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _MFileBody = require('./MFileBody');\n\nvar _MFileBody2 = _interopRequireDefault(_MFileBody);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _DecryptFile = require('../../../utils/DecryptFile');\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MImageBody = function (_React$Component) {\n (0, _inherits3.default)(MImageBody, _React$Component);\n\n function MImageBody(props) {\n (0, _classCallCheck3.default)(this, MImageBody);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (MImageBody.__proto__ || (0, _getPrototypeOf2.default)(MImageBody)).call(this, props));\n\n _this.onImageError = _this.onImageError.bind(_this);\n _this.onImageLoad = _this.onImageLoad.bind(_this);\n _this.onImageEnter = _this.onImageEnter.bind(_this);\n _this.onImageLeave = _this.onImageLeave.bind(_this);\n _this.onClientSync = _this.onClientSync.bind(_this);\n _this.onClick = _this.onClick.bind(_this);\n _this._isGif = _this._isGif.bind(_this);\n\n _this.state = {\n decryptedUrl: null,\n decryptedThumbnailUrl: null,\n decryptedBlob: null,\n error: null,\n imgError: false,\n imgLoaded: false,\n loadedImageDimensions: null,\n hover: false\n };\n return _this;\n }\n\n (0, _createClass3.default)(MImageBody, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.unmounted = false;\n this.context.matrixClient.on('sync', this.onClientSync);\n }\n\n // FIXME: factor this out and aplpy it to MVideoBody and MAudioBody too!\n\n }, {\n key: 'onClientSync',\n value: function onClientSync(syncState, prevState) {\n if (this.unmounted) return;\n // Consider the client reconnected if there is no error with syncing.\n // This means the state could be RECONNECTING, SYNCING, PREPARED or CATCHUP.\n var reconnected = syncState !== \"ERROR\" && prevState !== syncState;\n if (reconnected && this.state.imgError) {\n // Load the image again\n this.setState({\n imgError: false\n });\n }\n }\n }, {\n key: 'onClick',\n value: function onClick(ev) {\n if (ev.button === 0 && !ev.metaKey) {\n ev.preventDefault();\n var content = this.props.mxEvent.getContent();\n var httpUrl = this._getContentUrl();\n var ImageView = _index2.default.getComponent(\"elements.ImageView\");\n var params = {\n src: httpUrl,\n name: content.body && content.body.length > 0 ? content.body : (0, _languageHandler._t)('Attachment'),\n mxEvent: this.props.mxEvent\n };\n\n if (content.info) {\n params.width = content.info.w;\n params.height = content.info.h;\n params.fileSize = content.info.size;\n }\n\n _Modal2.default.createDialog(ImageView, params, \"mx_Dialog_lightbox\");\n }\n }\n }, {\n key: '_isGif',\n value: function _isGif() {\n var content = this.props.mxEvent.getContent();\n return content && content.info && content.info.mimetype === \"image/gif\";\n }\n }, {\n key: 'onImageEnter',\n value: function onImageEnter(e) {\n this.setState({ hover: true });\n\n if (!this._isGif() || _SettingsStore2.default.getValue(\"autoplayGifsAndVideos\")) {\n return;\n }\n var imgElement = e.target;\n imgElement.src = this._getContentUrl();\n }\n }, {\n key: 'onImageLeave',\n value: function onImageLeave(e) {\n this.setState({ hover: false });\n\n if (!this._isGif() || _SettingsStore2.default.getValue(\"autoplayGifsAndVideos\")) {\n return;\n }\n var imgElement = e.target;\n imgElement.src = this._getThumbUrl();\n }\n }, {\n key: 'onImageError',\n value: function onImageError() {\n this.setState({\n imgError: true\n });\n }\n }, {\n key: 'onImageLoad',\n value: function onImageLoad() {\n this.props.onWidgetLoad();\n\n var loadedImageDimensions = void 0;\n\n if (this.refs.image) {\n var _refs$image = this.refs.image,\n naturalWidth = _refs$image.naturalWidth,\n naturalHeight = _refs$image.naturalHeight;\n\n\n loadedImageDimensions = { naturalWidth: naturalWidth, naturalHeight: naturalHeight };\n }\n\n this.setState({ imgLoaded: true, loadedImageDimensions: loadedImageDimensions });\n }\n }, {\n key: '_getContentUrl',\n value: function _getContentUrl() {\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined) {\n return this.state.decryptedUrl;\n } else {\n return this.context.matrixClient.mxcUrlToHttp(content.url);\n }\n }\n }, {\n key: '_getThumbUrl',\n value: function _getThumbUrl() {\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined) {\n // Don't use the thumbnail for clients wishing to autoplay gifs.\n if (this.state.decryptedThumbnailUrl) {\n return this.state.decryptedThumbnailUrl;\n }\n return this.state.decryptedUrl;\n } else if (content.info && content.info.mimetype === \"image/svg+xml\" && content.info.thumbnail_url) {\n // special case to return client-generated thumbnails for SVGs, if any,\n // given we deliberately don't thumbnail them serverside to prevent\n // billion lol attacks and similar\n return this.context.matrixClient.mxcUrlToHttp(content.info.thumbnail_url, 800, 600);\n } else {\n return this.context.matrixClient.mxcUrlToHttp(content.url, 800, 600);\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined && this.state.decryptedUrl === null) {\n var thumbnailPromise = _bluebird2.default.resolve(null);\n if (content.info && content.info.thumbnail_file) {\n thumbnailPromise = (0, _DecryptFile.decryptFile)(content.info.thumbnail_file).then(function (blob) {\n return URL.createObjectURL(blob);\n });\n }\n var decryptedBlob = void 0;\n thumbnailPromise.then(function (thumbnailUrl) {\n return (0, _DecryptFile.decryptFile)(content.file).then(function (blob) {\n decryptedBlob = blob;\n return URL.createObjectURL(blob);\n }).then(function (contentUrl) {\n _this2.setState({\n decryptedUrl: contentUrl,\n decryptedThumbnailUrl: thumbnailUrl,\n decryptedBlob: decryptedBlob\n });\n });\n }).catch(function (err) {\n console.warn(\"Unable to decrypt attachment: \", err);\n // Set a placeholder image when we can't decrypt the image.\n _this2.setState({\n error: err\n });\n }).done();\n }\n this._afterComponentDidMount();\n }\n\n // To be overridden by subclasses (e.g. MStickerBody) for further\n // initialisation after componentDidMount\n\n }, {\n key: '_afterComponentDidMount',\n value: function _afterComponentDidMount() {}\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unmounted = true;\n this.context.matrixClient.removeListener('sync', this.onClientSync);\n this._afterComponentWillUnmount();\n\n if (this.state.decryptedUrl) {\n URL.revokeObjectURL(this.state.decryptedUrl);\n }\n if (this.state.decryptedThumbnailUrl) {\n URL.revokeObjectURL(this.state.decryptedThumbnailUrl);\n }\n }\n\n // To be overridden by subclasses (e.g. MStickerBody) for further\n // cleanup after componentWillUnmount\n\n }, {\n key: '_afterComponentWillUnmount',\n value: function _afterComponentWillUnmount() {}\n }, {\n key: '_messageContent',\n value: function _messageContent(contentUrl, thumbUrl, content) {\n var infoWidth = void 0;\n var infoHeight = void 0;\n\n if (content && content.info && content.info.w && content.info.h) {\n infoWidth = content.info.w;\n infoHeight = content.info.h;\n } else {\n // Whilst the image loads, display nothing.\n //\n // Once loaded, use the loaded image dimensions stored in `loadedImageDimensions`.\n //\n // By doing this, the image \"pops\" into the timeline, but is still restricted\n // by the same width and height logic below.\n if (!this.state.loadedImageDimensions) {\n return this.wrapImage(contentUrl, _react2.default.createElement('img', { style: { display: 'none' }, src: thumbUrl, ref: 'image',\n alt: content.body,\n onError: this.onImageError,\n onLoad: this.onImageLoad\n }));\n }\n infoWidth = this.state.loadedImageDimensions.naturalWidth;\n infoHeight = this.state.loadedImageDimensions.naturalHeight;\n }\n\n // The maximum height of the thumbnail as it is rendered as an <img>\n var maxHeight = Math.min(this.props.maxImageHeight || 600, infoHeight);\n // The maximum width of the thumbnail, as dictated by its natural\n // maximum height.\n var maxWidth = infoWidth * maxHeight / infoHeight;\n\n var img = null;\n var placeholder = null;\n var gifLabel = null;\n\n // e2e image hasn't been decrypted yet\n if (content.file !== undefined && this.state.decryptedUrl === null) {\n placeholder = _react2.default.createElement('img', { src: 'img/spinner.gif', alt: content.body, width: '32', height: '32' });\n } else if (!this.state.imgLoaded) {\n // Deliberately, getSpinner is left unimplemented here, MStickerBody overides\n placeholder = this.getPlaceholder();\n }\n\n var showPlaceholder = Boolean(placeholder);\n\n if (thumbUrl && !this.state.imgError) {\n // Restrict the width of the thumbnail here, otherwise it will fill the container\n // which has the same width as the timeline\n // mx_MImageBody_thumbnail resizes img to exactly container size\n img = _react2.default.createElement('img', { className: 'mx_MImageBody_thumbnail', src: thumbUrl, ref: 'image',\n style: { maxWidth: maxWidth + \"px\" },\n alt: content.body,\n onError: this.onImageError,\n onLoad: this.onImageLoad,\n onMouseEnter: this.onImageEnter,\n onMouseLeave: this.onImageLeave });\n }\n\n if (this._isGif() && !_SettingsStore2.default.getValue(\"autoplayGifsAndVideos\") && !this.state.hover) {\n gifLabel = _react2.default.createElement(\n 'p',\n { className: 'mx_MImageBody_gifLabel' },\n 'GIF'\n );\n }\n\n var thumbnail = _react2.default.createElement(\n 'div',\n { className: 'mx_MImageBody_thumbnail_container', style: { maxHeight: maxHeight + \"px\" } },\n _react2.default.createElement('div', { style: { paddingBottom: 100 * infoHeight / infoWidth + '%' } }),\n showPlaceholder && _react2.default.createElement(\n 'div',\n { className: 'mx_MImageBody_thumbnail', style: {\n // Constrain width here so that spinner appears central to the loaded thumbnail\n maxWidth: infoWidth + \"px\"\n } },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MImageBody_thumbnail_spinner' },\n placeholder\n )\n ),\n _react2.default.createElement(\n 'div',\n { style: { display: !showPlaceholder ? undefined : 'none' } },\n img,\n gifLabel\n ),\n this.state.hover && this.getTooltip()\n );\n\n return this.wrapImage(contentUrl, thumbnail);\n }\n\n // Overidden by MStickerBody\n\n }, {\n key: 'wrapImage',\n value: function wrapImage(contentUrl, children) {\n return _react2.default.createElement(\n 'a',\n { href: contentUrl, onClick: this.onClick },\n children\n );\n }\n\n // Overidden by MStickerBody\n\n }, {\n key: 'getPlaceholder',\n value: function getPlaceholder() {\n // MImageBody doesn't show a placeholder whilst the image loads, (but it could do)\n return null;\n }\n\n // Overidden by MStickerBody\n\n }, {\n key: 'getTooltip',\n value: function getTooltip() {\n return null;\n }\n\n // Overidden by MStickerBody\n\n }, {\n key: 'getFileBody',\n value: function getFileBody() {\n return _react2.default.createElement(_MFileBody2.default, (0, _extends3.default)({}, this.props, { decryptedBlob: this.state.decryptedBlob }));\n }\n }, {\n key: 'render',\n value: function render() {\n var content = this.props.mxEvent.getContent();\n\n if (this.state.error !== null) {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MImageBody', ref: 'body' },\n _react2.default.createElement('img', { src: 'img/warning.svg', width: '16', height: '16' }),\n (0, _languageHandler._t)(\"Error decrypting image\")\n );\n }\n\n var contentUrl = this._getContentUrl();\n var thumbUrl = void 0;\n if (this._isGif() && _SettingsStore2.default.getValue(\"autoplayGifsAndVideos\")) {\n thumbUrl = contentUrl;\n } else {\n thumbUrl = this._getThumbUrl();\n }\n\n var thumbnail = this._messageContent(contentUrl, thumbUrl, content);\n var fileBody = this.getFileBody();\n\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MImageBody', ref: 'body' },\n thumbnail,\n fileBody\n );\n }\n }]);\n return MImageBody;\n}(_react2.default.Component);\n\nMImageBody.propTypes = {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired,\n\n /* called when the image has loaded */\n onWidgetLoad: _propTypes2.default.func.isRequired,\n\n /* the maximum image height to use */\n maxImageHeight: _propTypes2.default.number\n};\nMImageBody.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n};\nexports.default = MImageBody;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MImageBody.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar sdk = require('../../../index');\n\nmodule.exports = React.createClass({\n displayName: 'MessageEvent',\n\n propTypes: {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired,\n\n /* a list of words to highlight */\n highlights: _propTypes2.default.array,\n\n /* link URL for the highlights */\n highlightLink: _propTypes2.default.string,\n\n /* should show URL previews for this event */\n showUrlPreview: _propTypes2.default.bool,\n\n /* callback called when dynamic content in events are loaded */\n onWidgetLoad: _propTypes2.default.func,\n\n /* the shape of the tile, used */\n tileShape: _propTypes2.default.string,\n\n /* the maximum image height to use, if the event is an image */\n maxImageHeight: _propTypes2.default.number\n },\n\n getEventTileOps: function getEventTileOps() {\n return this.refs.body && this.refs.body.getEventTileOps ? this.refs.body.getEventTileOps() : null;\n },\n\n render: function render() {\n var UnknownBody = sdk.getComponent('messages.UnknownBody');\n\n var bodyTypes = {\n 'm.text': sdk.getComponent('messages.TextualBody'),\n 'm.notice': sdk.getComponent('messages.TextualBody'),\n 'm.emote': sdk.getComponent('messages.TextualBody'),\n 'm.image': sdk.getComponent('messages.MImageBody'),\n 'm.file': sdk.getComponent('messages.MFileBody'),\n 'm.audio': sdk.getComponent('messages.MAudioBody'),\n 'm.video': sdk.getComponent('messages.MVideoBody')\n };\n var evTypes = {\n 'm.sticker': sdk.getComponent('messages.MStickerBody')\n };\n\n var content = this.props.mxEvent.getContent();\n var type = this.props.mxEvent.getType();\n var msgtype = content.msgtype;\n var BodyType = UnknownBody;\n if (!this.props.mxEvent.isRedacted()) {\n // only resolve BodyType if event is not redacted\n if (type && evTypes[type]) {\n BodyType = evTypes[type];\n } else if (msgtype && bodyTypes[msgtype]) {\n BodyType = bodyTypes[msgtype];\n } else if (content.url) {\n // Fallback to MFileBody if there's a content URL\n BodyType = bodyTypes['m.file'];\n }\n }\n\n return React.createElement(BodyType, {\n ref: 'body', mxEvent: this.props.mxEvent,\n highlights: this.props.highlights,\n highlightLink: this.props.highlightLink,\n showUrlPreview: this.props.showUrlPreview,\n tileShape: this.props.tileShape,\n maxImageHeight: this.props.maxImageHeight,\n onWidgetLoad: this.props.onWidgetLoad });\n }\n});\n//# sourceMappingURL=MessageEvent.js.map","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _AppTile = require('../elements/AppTile');\n\nvar _AppTile2 = _interopRequireDefault(_AppTile);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _ScalarAuthClient = require('../../../ScalarAuthClient');\n\nvar _ScalarAuthClient2 = _interopRequireDefault(_ScalarAuthClient);\n\nvar _ScalarMessaging = require('../../../ScalarMessaging');\n\nvar _ScalarMessaging2 = _interopRequireDefault(_ScalarMessaging);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _WidgetUtils = require('../../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _WidgetEchoStore = require('../../../stores/WidgetEchoStore');\n\nvar _WidgetEchoStore2 = _interopRequireDefault(_WidgetEchoStore);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The maximum number of widgets that can be added in a room\nvar MAX_WIDGETS = 2;\n\nmodule.exports = _react2.default.createClass({\n displayName: 'AppsDrawer',\n\n propTypes: {\n userId: _propTypes2.default.string.isRequired,\n room: _propTypes2.default.object.isRequired,\n showApps: _propTypes2.default.bool, // Should apps be rendered\n hide: _propTypes2.default.bool // If rendered, should apps drawer be visible\n },\n\n defaultProps: {\n showApps: true,\n hide: false\n },\n\n getInitialState: function getInitialState() {\n return {\n apps: this._getApps()\n };\n },\n\n componentWillMount: function componentWillMount() {\n _ScalarMessaging2.default.startListening();\n _MatrixClientPeg2.default.get().on('RoomState.events', this.onRoomStateEvents);\n _WidgetEchoStore2.default.on('update', this._updateApps);\n },\n\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n this.scalarClient = null;\n if (_SdkConfig2.default.get().integrations_ui_url && _SdkConfig2.default.get().integrations_rest_url) {\n this.scalarClient = new _ScalarAuthClient2.default();\n this.scalarClient.connect().then(function () {\n _this.forceUpdate();\n }).catch(function (e) {\n console.log('Failed to connect to integrations server');\n // TODO -- Handle Scalar errors\n // this.setState({\n // scalar_error: err,\n // });\n });\n }\n\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _ScalarMessaging2.default.stopListening();\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener('RoomState.events', this.onRoomStateEvents);\n }\n _WidgetEchoStore2.default.removeListener('update', this._updateApps);\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n // Room has changed probably, update apps\n this._updateApps();\n },\n\n\n onAction: function onAction(action) {\n var hideWidgetKey = this.props.room.roomId + '_hide_widget_drawer';\n switch (action.action) {\n case 'appsDrawer':\n if (action.show) {\n localStorage.removeItem(hideWidgetKey);\n } else {\n // Store hidden state of widget\n // Don't show if previously hidden\n localStorage.setItem(hideWidgetKey, true);\n }\n\n break;\n }\n },\n\n onRoomStateEvents: function onRoomStateEvents(ev, state) {\n if (ev.getRoomId() !== this.props.room.roomId || ev.getType() !== 'im.vector.modular.widgets') {\n return;\n }\n this._updateApps();\n },\n\n _getApps: function _getApps() {\n var widgets = _WidgetEchoStore2.default.getEchoedRoomWidgets(this.props.room.roomId, _WidgetUtils2.default.getRoomWidgets(this.props.room));\n return widgets.map(function (ev) {\n return _WidgetUtils2.default.makeAppConfig(ev.getStateKey(), ev.getContent(), ev.sender);\n });\n },\n\n _updateApps: function _updateApps() {\n var apps = this._getApps();\n this.setState({\n apps: apps\n });\n },\n\n _canUserModify: function _canUserModify() {\n try {\n return _WidgetUtils2.default.canUserModifyWidgets(this.props.room.roomId);\n } catch (err) {\n console.error(err);\n return false;\n }\n },\n\n _launchManageIntegrations: function _launchManageIntegrations() {\n var IntegrationsManager = _index2.default.getComponent('views.settings.IntegrationsManager');\n var src = this.scalarClient !== null && this.scalarClient.hasCredentials() ? this.scalarClient.getScalarInterfaceUrlForRoom(this.props.room, 'add_integ') : null;\n _Modal2.default.createTrackedDialog('Integrations Manager', '', IntegrationsManager, {\n src: src\n }, 'mx_IntegrationsManager');\n },\n\n onClickAddWidget: function onClickAddWidget(e) {\n e.preventDefault();\n // Display a warning dialog if the max number of widgets have already been added to the room\n var apps = this._getApps();\n if (apps && apps.length >= MAX_WIDGETS) {\n var ErrorDialog = _index2.default.getComponent('dialogs.ErrorDialog');\n var errorMsg = 'The maximum number of ' + MAX_WIDGETS + ' widgets have already been added to this room.';\n console.error(errorMsg);\n _Modal2.default.createDialog(ErrorDialog, {\n title: (0, _languageHandler._t)('Cannot add any more widgets'),\n description: (0, _languageHandler._t)('The maximum permitted number of widgets have already been added to this room.')\n });\n return;\n }\n this._launchManageIntegrations();\n },\n\n render: function render() {\n var _this2 = this;\n\n var apps = this.state.apps.map(function (app, index, arr) {\n var capWhitelist = _WidgetUtils2.default.getCapWhitelistForAppTypeInRoomId(app.type, _this2.props.room.roomId);\n\n return _react2.default.createElement(_AppTile2.default, {\n key: app.id,\n id: app.id,\n url: app.url,\n name: app.name,\n type: app.type,\n fullWidth: arr.length < 2 ? true : false,\n room: _this2.props.room,\n userId: _this2.props.userId,\n show: _this2.props.showApps,\n creatorUserId: app.creatorUserId,\n widgetPageTitle: app.data && app.data.title ? app.data.title : '',\n waitForIframeLoad: app.waitForIframeLoad,\n whitelistCapabilities: capWhitelist\n });\n });\n\n var addWidget = void 0;\n if (this.props.showApps && this._canUserModify()) {\n addWidget = _react2.default.createElement(\n _AccessibleButton2.default,\n {\n onClick: this.onClickAddWidget,\n className: this.state.apps.length < 2 ? 'mx_AddWidget_button mx_AddWidget_button_full_width' : 'mx_AddWidget_button',\n title: (0, _languageHandler._t)('Add a widget') },\n '[+] ',\n (0, _languageHandler._t)('Add a widget')\n );\n }\n\n var spinner = void 0;\n if (apps.length === 0 && _WidgetEchoStore2.default.roomHasPendingWidgets(this.props.room.roomId, _WidgetUtils2.default.getRoomWidgets(this.props.room))) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n spinner = _react2.default.createElement(Loader, null);\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_AppsDrawer' + (this.props.hide ? ' mx_AppsDrawer_hidden' : '') },\n _react2.default.createElement(\n 'div',\n { id: 'apps', className: 'mx_AppsContainer' },\n apps,\n spinner\n ),\n this._canUserModify() && addWidget\n );\n }\n});\n//# sourceMappingURL=AppsDrawer.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = require('babel-runtime/helpers/get');\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _flatMap = require('lodash/flatMap');\n\nvar _flatMap2 = _interopRequireDefault(_flatMap);\n\nvar _isEqual = require('lodash/isEqual');\n\nvar _isEqual2 = _interopRequireDefault(_isEqual);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _Autocompleter = require('../../../autocomplete/Autocompleter');\n\nvar _Autocompleter2 = _interopRequireDefault(_Autocompleter);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar COMPOSER_SELECTED = 0;\n\nvar Autocomplete = function (_React$Component) {\n (0, _inherits3.default)(Autocomplete, _React$Component);\n\n function Autocomplete(props) {\n (0, _classCallCheck3.default)(this, Autocomplete);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Autocomplete.__proto__ || (0, _getPrototypeOf2.default)(Autocomplete)).call(this, props));\n\n _this.autocompleter = new _Autocompleter2.default(props.room);\n _this.completionPromise = null;\n _this.hide = _this.hide.bind(_this);\n _this.onCompletionClicked = _this.onCompletionClicked.bind(_this);\n\n _this.state = {\n // list of completionResults, each containing completions\n completions: [],\n\n // array of completions, so we can look up current selection by offset quickly\n completionList: [],\n\n // how far down the completion list we are (THIS IS 1-INDEXED!)\n selectionOffset: COMPOSER_SELECTED,\n\n // whether we should show completions if they're available\n shouldShowCompletions: true,\n\n hide: false,\n\n forceComplete: false\n };\n return _this;\n }\n\n (0, _createClass3.default)(Autocomplete, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(newProps, state) {\n if (this.props.room.roomId !== newProps.room.roomId) {\n this.autocompleter.destroy();\n this.autocompleter = new _Autocompleter2.default(newProps.room);\n }\n\n // Query hasn't changed so don't try to complete it\n if (newProps.query === this.props.query) {\n return;\n }\n\n this.complete(newProps.query, newProps.selection);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.autocompleter.destroy();\n }\n }, {\n key: 'complete',\n value: function complete(query, selection) {\n var _this2 = this;\n\n this.queryRequested = query;\n if (this.debounceCompletionsRequest) {\n clearTimeout(this.debounceCompletionsRequest);\n }\n if (query === \"\") {\n this.setState({\n // Clear displayed completions\n completions: [],\n completionList: [],\n // Reset selected completion\n selectionOffset: COMPOSER_SELECTED,\n // Hide the autocomplete box\n hide: true\n });\n return _bluebird2.default.resolve(null);\n }\n var autocompleteDelay = _SettingsStore2.default.getValue(\"autocompleteDelay\");\n\n // Don't debounce if we are already showing completions\n if (this.state.completions.length > 0 || this.state.forceComplete) {\n autocompleteDelay = 0;\n }\n\n var deferred = _bluebird2.default.defer();\n this.debounceCompletionsRequest = setTimeout(function () {\n _this2.processQuery(query, selection).then(function () {\n deferred.resolve();\n });\n }, autocompleteDelay);\n return deferred.promise;\n }\n }, {\n key: 'processQuery',\n value: function processQuery(query, selection) {\n var _this3 = this;\n\n return this.autocompleter.getCompletions(query, selection, this.state.forceComplete).then(function (completions) {\n // Only ever process the completions for the most recent query being processed\n if (query !== _this3.queryRequested) {\n return;\n }\n _this3.processCompletions(completions);\n });\n }\n }, {\n key: 'processCompletions',\n value: function processCompletions(completions) {\n var completionList = (0, _flatMap2.default)(completions, function (provider) {\n return provider.completions;\n });\n\n // Reset selection when completion list becomes empty.\n var selectionOffset = COMPOSER_SELECTED;\n if (completionList.length > 0) {\n /* If the currently selected completion is still in the completion list,\n try to find it and jump to it. If not, select composer.\n */\n var currentSelection = this.state.selectionOffset === 0 ? null : this.state.completionList[this.state.selectionOffset - 1].completion;\n selectionOffset = completionList.findIndex(function (completion) {\n return completion.completion === currentSelection;\n });\n if (selectionOffset === -1) {\n selectionOffset = COMPOSER_SELECTED;\n } else {\n selectionOffset++; // selectionOffset is 1-indexed!\n }\n }\n\n var hide = this.state.hide;\n // If `completion.command.command` is truthy, then a provider has matched with the query\n var anyMatches = completions.some(function (completion) {\n return !!completion.command.command;\n });\n hide = !anyMatches;\n\n this.setState({\n completions: completions,\n completionList: completionList,\n selectionOffset: selectionOffset,\n hide: hide,\n // Force complete is turned off each time since we can't edit the query in that case\n forceComplete: false\n });\n }\n }, {\n key: 'countCompletions',\n value: function countCompletions() {\n return this.state.completionList.length;\n }\n\n // called from MessageComposerInput\n\n }, {\n key: 'onUpArrow',\n value: function onUpArrow() {\n var completionCount = this.countCompletions();\n // completionCount + 1, since 0 means composer is selected\n var selectionOffset = (completionCount + 1 + this.state.selectionOffset - 1) % (completionCount + 1);\n if (!completionCount) {\n return null;\n }\n this.setSelection(selectionOffset);\n }\n\n // called from MessageComposerInput\n\n }, {\n key: 'onDownArrow',\n value: function onDownArrow() {\n var completionCount = this.countCompletions();\n // completionCount + 1, since 0 means composer is selected\n var selectionOffset = (this.state.selectionOffset + 1) % (completionCount + 1);\n if (!completionCount) {\n return null;\n }\n this.setSelection(selectionOffset);\n }\n }, {\n key: 'onEscape',\n value: function onEscape(e) {\n var completionCount = this.countCompletions();\n if (completionCount === 0) {\n // autocomplete is already empty, so don't preventDefault\n return;\n }\n\n e.preventDefault();\n\n // selectionOffset = 0, so we don't end up completing when autocomplete is hidden\n this.hide();\n }\n }, {\n key: 'hide',\n value: function hide() {\n this.setState({ hide: true, selectionOffset: 0, completions: [], completionList: [] });\n }\n }, {\n key: 'forceComplete',\n value: function forceComplete() {\n var _this4 = this;\n\n var done = _bluebird2.default.defer();\n this.setState({\n forceComplete: true,\n hide: false\n }, function () {\n _this4.complete(_this4.props.query, _this4.props.selection).then(function () {\n done.resolve(_this4.countCompletions());\n });\n });\n return done.promise;\n }\n }, {\n key: 'onCompletionClicked',\n value: function onCompletionClicked(selectionOffset) {\n if (this.countCompletions() === 0 || selectionOffset === COMPOSER_SELECTED) {\n return false;\n }\n\n this.props.onConfirm(this.state.completionList[selectionOffset - 1]);\n this.hide();\n\n return true;\n }\n }, {\n key: 'setSelection',\n value: function setSelection(selectionOffset) {\n this.setState({ selectionOffset: selectionOffset, hide: false });\n if (this.props.onSelectionChange) {\n this.props.onSelectionChange(this.state.completionList[selectionOffset - 1]);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n // this is the selected completion, so scroll it into view if needed\n var selectedCompletion = this.refs['completion' + this.state.selectionOffset];\n if (selectedCompletion && this.container) {\n var domNode = _reactDom2.default.findDOMNode(selectedCompletion);\n var offsetTop = domNode && domNode.offsetTop;\n if (offsetTop > this.container.scrollTop + this.container.offsetHeight || offsetTop < this.container.scrollTop) {\n this.container.scrollTop = offsetTop - this.container.offsetTop;\n }\n }\n }\n }, {\n key: 'setState',\n value: function setState(state, func) {\n (0, _get3.default)(Autocomplete.prototype.__proto__ || (0, _getPrototypeOf2.default)(Autocomplete.prototype), 'setState', this).call(this, state, func);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this5 = this;\n\n var EmojiText = _index2.default.getComponent('views.elements.EmojiText');\n\n var position = 1;\n var renderedCompletions = this.state.completions.map(function (completionResult, i) {\n var completions = completionResult.completions.map(function (completion, i) {\n var className = (0, _classnames2.default)('mx_Autocomplete_Completion', {\n 'selected': position === _this5.state.selectionOffset\n });\n var componentPosition = position;\n position++;\n\n var onClick = function onClick() {\n _this5.onCompletionClicked(componentPosition);\n };\n\n return _react2.default.cloneElement(completion.component, {\n key: i,\n ref: 'completion' + (position - 1),\n className: className,\n onClick: onClick\n });\n });\n\n return completions.length > 0 ? _react2.default.createElement(\n 'div',\n { key: i, className: 'mx_Autocomplete_ProviderSection' },\n _react2.default.createElement(\n EmojiText,\n { element: 'div', className: 'mx_Autocomplete_provider_name' },\n completionResult.provider.getName()\n ),\n completionResult.provider.renderCompletions(completions)\n ) : null;\n }).filter(function (completion) {\n return !!completion;\n });\n\n return !this.state.hide && renderedCompletions.length > 0 ? _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete', ref: function ref(e) {\n return _this5.container = e;\n } },\n renderedCompletions\n ) : null;\n }\n }]);\n return Autocomplete;\n}(_react2.default.Component);\n\nexports.default = Autocomplete;\n\n\nAutocomplete.propTypes = {\n // the query string for which to show autocomplete suggestions\n query: _propTypes2.default.string.isRequired,\n\n // method invoked with range and text content when completion is confirmed\n onConfirm: _propTypes2.default.func.isRequired,\n\n // The room in which we're autocompleting\n room: _propTypes2.default.instanceOf(_matrixJsSdk.Room)\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=Autocomplete.js.map","var baseFlatten = require('./_baseFlatten'),\n map = require('./map');\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _CommandProvider = require('./CommandProvider');\n\nvar _CommandProvider2 = _interopRequireDefault(_CommandProvider);\n\nvar _CommunityProvider = require('./CommunityProvider');\n\nvar _CommunityProvider2 = _interopRequireDefault(_CommunityProvider);\n\nvar _DuckDuckGoProvider = require('./DuckDuckGoProvider');\n\nvar _DuckDuckGoProvider2 = _interopRequireDefault(_DuckDuckGoProvider);\n\nvar _RoomProvider = require('./RoomProvider');\n\nvar _RoomProvider2 = _interopRequireDefault(_RoomProvider);\n\nvar _UserProvider = require('./UserProvider');\n\nvar _UserProvider2 = _interopRequireDefault(_UserProvider);\n\nvar _EmojiProvider = require('./EmojiProvider');\n\nvar _EmojiProvider2 = _interopRequireDefault(_EmojiProvider);\n\nvar _NotifProvider = require('./NotifProvider');\n\nvar _NotifProvider2 = _interopRequireDefault(_NotifProvider);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar PROVIDERS = [_UserProvider2.default, _RoomProvider2.default, _EmojiProvider2.default, _NotifProvider2.default, _CommandProvider2.default, _CommunityProvider2.default, _DuckDuckGoProvider2.default];\n\n// Providers will get rejected if they take longer than this.\nvar PROVIDER_COMPLETION_TIMEOUT = 3000;\n\nvar Autocompleter = function () {\n function Autocompleter(room) {\n (0, _classCallCheck3.default)(this, Autocompleter);\n\n this.room = room;\n this.providers = PROVIDERS.map(function (p) {\n return new p(room);\n });\n }\n\n (0, _createClass3.default)(Autocompleter, [{\n key: 'destroy',\n value: function destroy() {\n this.providers.forEach(function (p) {\n p.destroy();\n });\n }\n }, {\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(query, selection) {\n var _this = this;\n\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var completionsList;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(_bluebird2.default.all(\n // Array of inspections of promises that might timeout. Instead of allowing a\n // single timeout to reject the Promise.all, reflect each one and once they've all\n // settled, filter for the fulfilled ones\n this.providers.map(function (provider) {\n return provider.getCompletions(query, selection, force).timeout(PROVIDER_COMPLETION_TIMEOUT).reflect();\n })));\n\n case 2:\n completionsList = _context.sent;\n return _context.abrupt('return', completionsList.filter(function (inspection) {\n return inspection.isFulfilled();\n }).map(function (completionsState, i) {\n return {\n completions: completionsState.value(),\n provider: _this.providers[i],\n\n /* the currently matched \"command\" the completer tried to complete\n * we pass this through so that Autocomplete can figure out when to\n * re-show itself once hidden.\n */\n command: _this.providers[i].getCurrentCommand(query, selection, force)\n };\n }));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }]);\n return Autocompleter;\n}();\n\nexports.default = Autocompleter;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Autocompleter.js.map","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CommandMap = undefined;\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.processCommandInput = processCommandInput;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Tinter = require('./Tinter');\n\nvar _Tinter2 = _interopRequireDefault(_Tinter);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _SettingsStore = require('./settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _linkifyMatrix = require('./linkify-matrix');\n\nvar _querystring = require('querystring');\n\nvar querystring = _interopRequireWildcard(_querystring);\n\nvar _MultiInviter = require('./utils/MultiInviter');\n\nvar _MultiInviter2 = _interopRequireDefault(_MultiInviter);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Command = function () {\n function Command(_ref) {\n var name = _ref.name,\n _ref$args = _ref.args,\n args = _ref$args === undefined ? '' : _ref$args,\n description = _ref.description,\n runFn = _ref.runFn,\n _ref$hideCompletionAf = _ref.hideCompletionAfterSpace,\n hideCompletionAfterSpace = _ref$hideCompletionAf === undefined ? false : _ref$hideCompletionAf;\n (0, _classCallCheck3.default)(this, Command);\n\n this.command = '/' + name;\n this.args = args;\n this.description = description;\n this.runFn = runFn;\n this.hideCompletionAfterSpace = hideCompletionAfterSpace;\n }\n\n (0, _createClass3.default)(Command, [{\n key: 'getCommand',\n value: function getCommand() {\n return this.command;\n }\n }, {\n key: 'getCommandWithArgs',\n value: function getCommandWithArgs() {\n return this.getCommand() + \" \" + this.args;\n }\n }, {\n key: 'run',\n value: function run(roomId, args) {\n return this.runFn.bind(this)(roomId, args);\n }\n }, {\n key: 'getUsage',\n value: function getUsage() {\n return (0, _languageHandler._t)('Usage') + ': ' + this.getCommandWithArgs();\n }\n }]);\n return Command;\n}(); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction reject(error) {\n return { error: error };\n}\n\nfunction success(promise) {\n return { promise: promise };\n}\n\n/* Disable the \"unexpected this\" error for these commands - all of the run\n * functions are called with `this` bound to the Command instance.\n */\n\n/* eslint-disable babel/no-invalid-this */\n\nvar CommandMap = exports.CommandMap = {\n ddg: new Command({\n name: 'ddg',\n args: '<query>',\n description: (0, _languageHandler._td)('Searches DuckDuckGo for results'),\n runFn: function runFn(roomId, args) {\n var ErrorDialog = _index2.default.getComponent('dialogs.ErrorDialog');\n // TODO Don't explain this away, actually show a search UI here.\n _Modal2.default.createTrackedDialog('Slash Commands', '/ddg is not a command', ErrorDialog, {\n title: (0, _languageHandler._t)('/ddg is not a command'),\n description: (0, _languageHandler._t)('To use it, just wait for autocomplete results to load and tab through them.')\n });\n return success();\n },\n hideCompletionAfterSpace: true\n }),\n\n nick: new Command({\n name: 'nick',\n args: '<display_name>',\n description: (0, _languageHandler._td)('Changes your display nickname'),\n runFn: function runFn(roomId, args) {\n if (args) {\n return success(_MatrixClientPeg2.default.get().setDisplayName(args));\n }\n return reject(this.getUsage());\n }\n }),\n\n tint: new Command({\n name: 'tint',\n args: '<color1> [<color2>]',\n description: (0, _languageHandler._td)('Changes colour scheme of current room'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(#([\\da-fA-F]{3}|[\\da-fA-F]{6}))( +(#([\\da-fA-F]{3}|[\\da-fA-F]{6})))?$/);\n if (matches) {\n _Tinter2.default.tint(matches[1], matches[4]);\n var colorScheme = {};\n colorScheme.primary_color = matches[1];\n if (matches[4]) {\n colorScheme.secondary_color = matches[4];\n } else {\n colorScheme.secondary_color = colorScheme.primary_color;\n }\n return success(_SettingsStore2.default.setValue('roomColor', roomId, _SettingsStore.SettingLevel.ROOM_ACCOUNT, colorScheme));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n topic: new Command({\n name: 'topic',\n args: '<topic>',\n description: (0, _languageHandler._td)('Sets the room topic'),\n runFn: function runFn(roomId, args) {\n if (args) {\n return success(_MatrixClientPeg2.default.get().setRoomTopic(roomId, args));\n }\n return reject(this.getUsage());\n }\n }),\n\n invite: new Command({\n name: 'invite',\n args: '<user-id>',\n description: (0, _languageHandler._td)('Invites user with given id to current room'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+)$/);\n if (matches) {\n // We use a MultiInviter to re-use the invite logic, even though\n // we're only inviting one user.\n var userId = matches[1];\n var inviter = new _MultiInviter2.default(roomId);\n return success(inviter.invite([userId]).then(function () {\n if (inviter.getCompletionState(userId) !== \"invited\") {\n throw new Error(inviter.getErrorText(userId));\n }\n }));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n join: new Command({\n name: 'join',\n args: '<room-alias>',\n description: (0, _languageHandler._td)('Joins room with given alias'),\n runFn: function runFn(roomId, args) {\n if (args) {\n // Note: we support 2 versions of this command. The first is\n // the public-facing one for most users and the other is a\n // power-user edition where someone may join via permalink or\n // room ID with optional servers. Practically, this results\n // in the following variations:\n // /join #example:example.org\n // /join !example:example.org\n // /join !example:example.org altserver.com elsewhere.ca\n // /join https://matrix.to/#/!example:example.org?via=altserver.com\n // The command also supports event permalinks transparently:\n // /join https://matrix.to/#/!example:example.org/$something:example.org\n // /join https://matrix.to/#/!example:example.org/$something:example.org?via=altserver.com\n var params = args.split(' ');\n if (params.length < 1) return reject(this.getUsage());\n\n var matrixToMatches = params[0].match(_linkifyMatrix.MATRIXTO_URL_PATTERN);\n if (params[0][0] === '#') {\n var roomAlias = params[0];\n if (!roomAlias.includes(':')) {\n roomAlias += ':' + _MatrixClientPeg2.default.get().getDomain();\n }\n\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_alias: roomAlias,\n auto_join: true\n });\n return success();\n } else if (params[0][0] === '!') {\n var _roomId = params[0];\n var viaServers = params.splice(0);\n\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: _roomId,\n opts: {\n // These are passed down to the js-sdk's /join call\n server_name: viaServers\n },\n auto_join: true\n });\n return success();\n } else if (matrixToMatches) {\n var entity = matrixToMatches[1];\n var eventId = null;\n var _viaServers = [];\n\n if (entity[0] !== '!' && entity[0] !== '#') return reject(this.getUsage());\n\n if (entity.indexOf('?') !== -1) {\n var parts = entity.split('?');\n entity = parts[0];\n\n var parsed = querystring.parse(parts[1]);\n _viaServers = parsed[\"via\"];\n if (typeof _viaServers === 'string') _viaServers = [_viaServers];\n }\n\n // We quietly support event ID permalinks too\n if (entity.indexOf('/$') !== -1) {\n var _parts = entity.split(\"/$\");\n entity = _parts[0];\n eventId = '$' + _parts[1];\n }\n\n var dispatch = {\n action: 'view_room',\n auto_join: true\n };\n\n if (entity[0] === '!') dispatch[\"room_id\"] = entity;else dispatch[\"room_alias\"] = entity;\n\n if (eventId) {\n dispatch[\"event_id\"] = eventId;\n dispatch[\"highlighted\"] = true;\n }\n\n if (_viaServers) {\n dispatch[\"opts\"] = {\n // These are passed down to the js-sdk's /join call\n server_name: _viaServers\n };\n }\n\n _dispatcher2.default.dispatch(dispatch);\n return success();\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n part: new Command({\n name: 'part',\n args: '[<room-alias>]',\n description: (0, _languageHandler._td)('Leave room'),\n runFn: function runFn(roomId, args) {\n var cli = _MatrixClientPeg2.default.get();\n\n var targetRoomId = void 0;\n if (args) {\n var matches = args.match(/^(\\S+)$/);\n if (matches) {\n var roomAlias = matches[1];\n if (roomAlias[0] !== '#') return reject(this.getUsage());\n\n if (!roomAlias.includes(':')) {\n roomAlias += ':' + cli.getDomain();\n }\n\n // Try to find a room with this alias\n var rooms = cli.getRooms();\n for (var i = 0; i < rooms.length; i++) {\n var aliasEvents = rooms[i].currentState.getStateEvents('m.room.aliases');\n for (var j = 0; j < aliasEvents.length; j++) {\n var _aliases = aliasEvents[j].getContent().aliases || [];\n for (var k = 0; k < _aliases.length; k++) {\n if (_aliases[k] === roomAlias) {\n targetRoomId = rooms[i].roomId;\n break;\n }\n }\n if (targetRoomId) break;\n }\n if (targetRoomId) break;\n }\n if (!targetRoomId) return reject((0, _languageHandler._t)('Unrecognised room alias:') + ' ' + roomAlias);\n }\n }\n\n if (!targetRoomId) targetRoomId = roomId;\n return success(cli.leave(targetRoomId).then(function () {\n _dispatcher2.default.dispatch({ action: 'view_next_room' });\n }));\n }\n }),\n\n kick: new Command({\n name: 'kick',\n args: '<user-id> [reason]',\n description: (0, _languageHandler._td)('Kicks user with given id'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+?)( +(.*))?$/);\n if (matches) {\n return success(_MatrixClientPeg2.default.get().kick(roomId, matches[1], matches[3]));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n // Ban a user from the room with an optional reason\n ban: new Command({\n name: 'ban',\n args: '<user-id> [reason]',\n description: (0, _languageHandler._td)('Bans user with given id'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+?)( +(.*))?$/);\n if (matches) {\n return success(_MatrixClientPeg2.default.get().ban(roomId, matches[1], matches[3]));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n // Unban a user from ythe room\n unban: new Command({\n name: 'unban',\n args: '<user-id>',\n description: (0, _languageHandler._td)('Unbans user with given id'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+)$/);\n if (matches) {\n // Reset the user membership to \"leave\" to unban him\n return success(_MatrixClientPeg2.default.get().unban(roomId, matches[1]));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n ignore: new Command({\n name: 'ignore',\n args: '<user-id>',\n description: (0, _languageHandler._td)('Ignores a user, hiding their messages from you'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var cli = _MatrixClientPeg2.default.get();\n\n var matches = args.match(/^(\\S+)$/);\n if (matches) {\n var userId = matches[1];\n var ignoredUsers = cli.getIgnoredUsers();\n ignoredUsers.push(userId); // de-duped internally in the js-sdk\n return success(cli.setIgnoredUsers(ignoredUsers).then(function () {\n var QuestionDialog = _index2.default.getComponent('dialogs.QuestionDialog');\n _Modal2.default.createTrackedDialog('Slash Commands', 'User ignored', QuestionDialog, {\n title: (0, _languageHandler._t)('Ignored user'),\n description: _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('You are now ignoring %(userId)s', { userId: userId })\n )\n ),\n hasCancelButton: false\n });\n }));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n unignore: new Command({\n name: 'unignore',\n args: '<user-id>',\n description: (0, _languageHandler._td)('Stops ignoring a user, showing their messages going forward'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var cli = _MatrixClientPeg2.default.get();\n\n var matches = args.match(/^(\\S+)$/);\n if (matches) {\n var userId = matches[1];\n var ignoredUsers = cli.getIgnoredUsers();\n var index = ignoredUsers.indexOf(userId);\n if (index !== -1) ignoredUsers.splice(index, 1);\n return success(cli.setIgnoredUsers(ignoredUsers).then(function () {\n var QuestionDialog = _index2.default.getComponent('dialogs.QuestionDialog');\n _Modal2.default.createTrackedDialog('Slash Commands', 'User unignored', QuestionDialog, {\n title: (0, _languageHandler._t)('Unignored user'),\n description: _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('You are no longer ignoring %(userId)s', { userId: userId })\n )\n ),\n hasCancelButton: false\n });\n }));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n // Define the power level of a user\n op: new Command({\n name: 'op',\n args: '<user-id> [<power-level>]',\n description: (0, _languageHandler._td)('Define the power level of a user'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+?)( +(-?\\d+))?$/);\n var powerLevel = 50; // default power level for op\n if (matches) {\n var userId = matches[1];\n if (matches.length === 4 && undefined !== matches[3]) {\n powerLevel = parseInt(matches[3]);\n }\n if (!isNaN(powerLevel)) {\n var cli = _MatrixClientPeg2.default.get();\n var room = cli.getRoom(roomId);\n if (!room) return reject('Bad room ID: ' + roomId);\n\n var powerLevelEvent = room.currentState.getStateEvents('m.room.power_levels', '');\n return success(cli.setPowerLevel(roomId, userId, powerLevel, powerLevelEvent));\n }\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n // Reset the power level of a user\n deop: new Command({\n name: 'deop',\n args: '<user-id>',\n description: (0, _languageHandler._td)('Deops user with given id'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+)$/);\n if (matches) {\n var cli = _MatrixClientPeg2.default.get();\n var room = cli.getRoom(roomId);\n if (!room) return reject('Bad room ID: ' + roomId);\n\n var powerLevelEvent = room.currentState.getStateEvents('m.room.power_levels', '');\n return success(cli.setPowerLevel(roomId, args, undefined, powerLevelEvent));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n devtools: new Command({\n name: 'devtools',\n description: (0, _languageHandler._td)('Opens the Developer Tools dialog'),\n runFn: function runFn(roomId) {\n var DevtoolsDialog = _index2.default.getComponent('dialogs.DevtoolsDialog');\n _Modal2.default.createDialog(DevtoolsDialog, { roomId: roomId });\n return success();\n }\n }),\n\n // Verify a user, device, and pubkey tuple\n verify: new Command({\n name: 'verify',\n args: '<user-id> <device-id> <device-signing-key>',\n description: (0, _languageHandler._td)('Verifies a user, device, and pubkey tuple'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+) +(\\S+) +(\\S+)$/);\n if (matches) {\n var cli = _MatrixClientPeg2.default.get();\n\n var userId = matches[1];\n var deviceId = matches[2];\n var fingerprint = matches[3];\n\n return success(\n // Promise.resolve to handle transition from static result to promise; can be removed\n // in future\n _promise2.default.resolve(cli.getStoredDevice(userId, deviceId)).then(function (device) {\n if (!device) {\n throw new Error((0, _languageHandler._t)('Unknown (user, device) pair:') + (' (' + userId + ', ' + deviceId + ')'));\n }\n\n if (device.isVerified()) {\n if (device.getFingerprint() === fingerprint) {\n throw new Error((0, _languageHandler._t)('Device already verified!'));\n } else {\n throw new Error((0, _languageHandler._t)('WARNING: Device already verified, but keys do NOT MATCH!'));\n }\n }\n\n if (device.getFingerprint() !== fingerprint) {\n var fprint = device.getFingerprint();\n throw new Error((0, _languageHandler._t)('WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device' + ' %(deviceId)s is \"%(fprint)s\" which does not match the provided key ' + '\"%(fingerprint)s\". This could mean your communications are being intercepted!', {\n fprint: fprint,\n userId: userId,\n deviceId: deviceId,\n fingerprint: fingerprint\n }));\n }\n\n return cli.setDeviceVerified(userId, deviceId, true);\n }).then(function () {\n // Tell the user we verified everything\n var QuestionDialog = _index2.default.getComponent('dialogs.QuestionDialog');\n _Modal2.default.createTrackedDialog('Slash Commands', 'Verified key', QuestionDialog, {\n title: (0, _languageHandler._t)('Verified key'),\n description: _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('The signing key you provided matches the signing key you received ' + 'from %(userId)s\\'s device %(deviceId)s. Device marked as verified.', { userId: userId, deviceId: deviceId })\n )\n ),\n hasCancelButton: false\n });\n }));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n // Command definitions for autocompletion ONLY:\n\n // /me is special because its not handled by SlashCommands.js and is instead done inside the Composer classes\n me: new Command({\n name: 'me',\n args: '<message>',\n description: (0, _languageHandler._td)('Displays action'),\n hideCompletionAfterSpace: true\n }),\n\n discardsession: new Command({\n name: 'discardsession',\n description: (0, _languageHandler._td)('Forces the current outbound group session in an encrypted room to be discarded'),\n runFn: function runFn(roomId) {\n try {\n _MatrixClientPeg2.default.get().forceDiscardSession(roomId);\n } catch (e) {\n return reject(e.message);\n }\n return success();\n }\n })\n};\n/* eslint-enable babel/no-invalid-this */\n\n// helpful aliases\nvar aliases = {\n j: \"join\",\n newballsplease: \"discardsession\",\n goto: \"join\" // because it handles event permalinks magically\n};\n\n/**\n * Process the given text for /commands and perform them.\n * @param {string} roomId The room in which the command was performed.\n * @param {string} input The raw text input by the user.\n * @return {Object|null} An object with the property 'error' if there was an error\n * processing the command, or 'promise' if a request was sent out.\n * Returns null if the input didn't match a command.\n */\nfunction processCommandInput(roomId, input) {\n // trim any trailing whitespace, as it can confuse the parser for\n // IRC-style commands\n input = input.replace(/\\s+$/, '');\n if (input[0] !== '/') return null; // not a command\n\n var bits = input.match(/^(\\S+?)( +((.|\\n)*))?$/);\n var cmd = void 0;\n var args = void 0;\n if (bits) {\n cmd = bits[1].substring(1).toLowerCase();\n args = bits[3];\n } else {\n cmd = input;\n }\n\n if (aliases[cmd]) {\n cmd = aliases[cmd];\n }\n if (CommandMap[cmd]) {\n // if it has no runFn then its an ignored/nop command (autocomplete only) e.g `/me`\n if (!CommandMap[cmd].runFn) return null;\n\n return CommandMap[cmd].run(roomId, args);\n } else {\n return reject((0, _languageHandler._t)('Unrecognised command:') + ' ' + input);\n }\n}\n//# sourceMappingURL=SlashCommands.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _DMRoomMap = require('../../../utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ContextualMenu = require('../../structures/ContextualMenu');\n\nvar _RoomNotifs = require('../../../RoomNotifs');\n\nvar RoomNotifs = _interopRequireWildcard(_RoomNotifs);\n\nvar _FormattingUtils = require('../../../utils/FormattingUtils');\n\nvar FormattingUtils = _interopRequireWildcard(_FormattingUtils);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _ActiveRoomObserver = require('../../../ActiveRoomObserver');\n\nvar _ActiveRoomObserver2 = _interopRequireDefault(_ActiveRoomObserver);\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomTile',\n\n propTypes: {\n onClick: _propTypes2.default.func,\n\n room: _propTypes2.default.object.isRequired,\n collapsed: _propTypes2.default.bool.isRequired,\n unread: _propTypes2.default.bool.isRequired,\n highlight: _propTypes2.default.bool.isRequired,\n // If true, apply mx_RoomTile_transparent class\n transparent: _propTypes2.default.bool,\n isInvite: _propTypes2.default.bool.isRequired,\n incomingCall: _propTypes2.default.object\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n isDragging: false\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n hover: false,\n badgeHover: false,\n menuDisplayed: false,\n roomName: this.props.room.name,\n notifState: RoomNotifs.getRoomNotifsState(this.props.room.roomId),\n notificationCount: this.props.room.getUnreadNotificationCount(),\n selected: this.props.room.roomId === _RoomViewStore2.default.getRoomId()\n };\n },\n\n _shouldShowNotifBadge: function _shouldShowNotifBadge() {\n var showBadgeInStates = [RoomNotifs.ALL_MESSAGES, RoomNotifs.ALL_MESSAGES_LOUD];\n return showBadgeInStates.indexOf(this.state.notifState) > -1;\n },\n\n _shouldShowMentionBadge: function _shouldShowMentionBadge() {\n return this.state.notifState !== RoomNotifs.MUTE;\n },\n\n _isDirectMessageRoom: function _isDirectMessageRoom(roomId) {\n var dmRooms = _DMRoomMap2.default.shared().getUserIdForRoomId(roomId);\n return Boolean(dmRooms);\n },\n\n onRoomTimeline: function onRoomTimeline(ev, room) {\n if (room !== this.props.room) return;\n this.setState({\n notificationCount: this.props.room.getUnreadNotificationCount()\n });\n },\n\n onRoomName: function onRoomName(room) {\n if (room !== this.props.room) return;\n this.setState({\n roomName: this.props.room.name\n });\n },\n\n onAccountData: function onAccountData(accountDataEvent) {\n if (accountDataEvent.getType() === 'm.push_rules') {\n this.setState({\n notifState: RoomNotifs.getRoomNotifsState(this.props.room.roomId)\n });\n }\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n // XXX: slight hack in order to zero the notification count when a room\n // is read. Ideally this state would be given to this via props (as we\n // do with `unread`). This is still better than forceUpdating the entire\n // RoomList when a room is read.\n case 'on_room_read':\n if (payload.roomId !== this.props.room.roomId) break;\n this.setState({\n notificationCount: this.props.room.getUnreadNotificationCount()\n });\n break;\n }\n },\n\n _onActiveRoomChange: function _onActiveRoomChange() {\n this.setState({\n selected: this.props.room.roomId === _RoomViewStore2.default.getRoomId()\n });\n },\n\n componentWillMount: function componentWillMount() {\n _MatrixClientPeg2.default.get().on(\"accountData\", this.onAccountData);\n _MatrixClientPeg2.default.get().on(\"Room.timeline\", this.onRoomTimeline);\n _MatrixClientPeg2.default.get().on(\"Room.name\", this.onRoomName);\n _ActiveRoomObserver2.default.addListener(this.props.room.roomId, this._onActiveRoomChange);\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var cli = _MatrixClientPeg2.default.get();\n if (cli) {\n _MatrixClientPeg2.default.get().removeListener(\"accountData\", this.onAccountData);\n _MatrixClientPeg2.default.get().removeListener(\"Room.timeline\", this.onRoomTimeline);\n _MatrixClientPeg2.default.get().removeListener(\"Room.name\", this.onRoomName);\n }\n _ActiveRoomObserver2.default.removeListener(this.props.room.roomId, this._onActiveRoomChange);\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(props) {\n // XXX: This could be a lot better - this makes the assumption that\n // the notification count may have changed when the properties of\n // the room tile change.\n this.setState({\n notificationCount: this.props.room.getUnreadNotificationCount()\n });\n },\n\n // Do a simple shallow comparison of props and state to avoid unnecessary\n // renders. The assumption made here is that only state and props are used\n // in rendering this component and children.\n //\n // RoomList is frequently made to forceUpdate, so this decreases number of\n // RoomTile renderings.\n shouldComponentUpdate: function shouldComponentUpdate(newProps, newState) {\n var _this = this;\n\n if ((0, _keys2.default)(newProps).some(function (k) {\n return newProps[k] !== _this.props[k];\n })) {\n return true;\n }\n if ((0, _keys2.default)(newState).some(function (k) {\n return newState[k] !== _this.state[k];\n })) {\n return true;\n }\n return false;\n },\n\n onClick: function onClick(ev) {\n if (this.props.onClick) {\n this.props.onClick(this.props.room.roomId, ev);\n }\n },\n\n onMouseEnter: function onMouseEnter() {\n this.setState({ hover: true });\n this.badgeOnMouseEnter();\n },\n\n onMouseLeave: function onMouseLeave() {\n this.setState({ hover: false });\n this.badgeOnMouseLeave();\n },\n\n _showContextMenu: function _showContextMenu(x, y, chevronOffset) {\n var _this2 = this;\n\n var RoomTileContextMenu = _index2.default.getComponent('context_menus.RoomTileContextMenu');\n\n (0, _ContextualMenu.createMenu)(RoomTileContextMenu, {\n chevronOffset: chevronOffset,\n left: x,\n top: y,\n room: this.props.room,\n onFinished: function onFinished() {\n _this2.setState({ menuDisplayed: false });\n _this2.props.refreshSubList();\n }\n });\n this.setState({ menuDisplayed: true });\n },\n\n onContextMenu: function onContextMenu(e) {\n // Prevent the RoomTile onClick event firing as well\n e.preventDefault();\n // Only allow non-guests to access the context menu\n if (_MatrixClientPeg2.default.get().isGuest()) return;\n\n var chevronOffset = 12;\n this._showContextMenu(e.clientX, e.clientY - (chevronOffset + 8), chevronOffset);\n },\n\n badgeOnMouseEnter: function badgeOnMouseEnter() {\n // Only allow non-guests to access the context menu\n // and only change it if it needs to change\n if (!_MatrixClientPeg2.default.get().isGuest() && !this.state.badgeHover) {\n this.setState({ badgeHover: true });\n }\n },\n\n badgeOnMouseLeave: function badgeOnMouseLeave() {\n this.setState({ badgeHover: false });\n },\n\n onBadgeClicked: function onBadgeClicked(e) {\n // Prevent the RoomTile onClick event firing as well\n e.stopPropagation();\n // Only allow non-guests to access the context menu\n if (_MatrixClientPeg2.default.get().isGuest()) return;\n\n // If the badge is clicked, then no longer show tooltip\n if (this.props.collapsed) {\n this.setState({ hover: false });\n }\n\n var elementRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = elementRect.right + window.pageXOffset + 3;\n var chevronOffset = 12;\n var y = elementRect.top + elementRect.height / 2 + window.pageYOffset;\n y = y - (chevronOffset + 8); // where 8 is half the height of the chevron\n\n this._showContextMenu(x, y, chevronOffset);\n },\n\n render: function render() {\n var isInvite = this.props.room.getMyMembership() === \"invite\";\n var notificationCount = this.state.notificationCount;\n // var highlightCount = this.props.room.getUnreadNotificationCount(\"highlight\");\n\n var notifBadges = notificationCount > 0 && this._shouldShowNotifBadge();\n var mentionBadges = this.props.highlight && this._shouldShowMentionBadge();\n var badges = notifBadges || mentionBadges;\n\n var isJoined = this.props.room.getMyMembership() === \"join\";\n var looksLikeDm = this.props.room.getInvitedAndJoinedMemberCount() === 2;\n var subtext = null;\n if (!isInvite && isJoined && looksLikeDm && _SettingsStore2.default.isFeatureEnabled(\"feature_custom_status\")) {\n var selfId = _MatrixClientPeg2.default.get().getUserId();\n var otherMember = this.props.room.currentState.getMembersExcept([selfId])[0];\n if (otherMember && otherMember.user && otherMember.user._unstable_statusMessage) {\n subtext = otherMember.user._unstable_statusMessage;\n }\n }\n\n var classes = (0, _classnames2.default)({\n 'mx_RoomTile': true,\n 'mx_RoomTile_selected': this.state.selected,\n 'mx_RoomTile_unread': this.props.unread,\n 'mx_RoomTile_unreadNotify': notifBadges,\n 'mx_RoomTile_highlight': mentionBadges,\n 'mx_RoomTile_invited': isInvite,\n 'mx_RoomTile_menuDisplayed': this.state.menuDisplayed,\n 'mx_RoomTile_noBadges': !badges,\n 'mx_RoomTile_transparent': this.props.transparent,\n 'mx_RoomTile_hasSubtext': subtext && !this.props.collapsed\n });\n\n var avatarClasses = (0, _classnames2.default)({\n 'mx_RoomTile_avatar': true\n });\n\n var badgeClasses = (0, _classnames2.default)({\n 'mx_RoomTile_badge': true,\n 'mx_RoomTile_badgeButton': this.state.badgeHover || this.state.menuDisplayed\n });\n\n var name = this.state.roomName;\n if (name == undefined || name == null) name = '';\n name = name.replace(\":\", ':\\u200B'); // add a zero-width space to allow linewrapping after the colon\n\n var badgeContent = void 0;\n\n if (this.state.badgeHover || this.state.menuDisplayed) {\n badgeContent = '\\xB7\\xB7\\xB7';\n } else if (badges) {\n var limitedCount = FormattingUtils.formatCount(notificationCount);\n badgeContent = notificationCount ? limitedCount : '!';\n } else {\n badgeContent = '\\u200B';\n }\n\n var badge = _react2.default.createElement(\n 'div',\n { className: badgeClasses, onClick: this.onBadgeClicked },\n badgeContent\n );\n\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var label = void 0;\n var subtextLabel = void 0;\n var tooltip = void 0;\n if (!this.props.collapsed) {\n var nameClasses = (0, _classnames2.default)({\n 'mx_RoomTile_name': true,\n 'mx_RoomTile_invite': this.props.isInvite,\n 'mx_RoomTile_badgeShown': badges || this.state.badgeHover || this.state.menuDisplayed\n });\n\n subtextLabel = subtext ? _react2.default.createElement(\n 'span',\n { className: 'mx_RoomTile_subtext' },\n subtext\n ) : null;\n\n if (this.state.selected) {\n var nameSelected = _react2.default.createElement(\n EmojiText,\n null,\n name\n );\n\n label = _react2.default.createElement(\n 'div',\n { title: name, className: nameClasses, dir: 'auto' },\n nameSelected\n );\n } else {\n label = _react2.default.createElement(\n EmojiText,\n { element: 'div', title: name, className: nameClasses, dir: 'auto' },\n name\n );\n }\n } else if (this.state.hover) {\n var RoomTooltip = _index2.default.getComponent(\"rooms.RoomTooltip\");\n tooltip = _react2.default.createElement(RoomTooltip, { className: 'mx_RoomTile_tooltip', label: this.props.room.name, dir: 'auto' });\n }\n\n //var incomingCallBox;\n //if (this.props.incomingCall) {\n // var IncomingCallBox = sdk.getComponent(\"voip.IncomingCallBox\");\n // incomingCallBox = <IncomingCallBox incomingCall={ this.props.incomingCall }/>;\n //}\n\n var RoomAvatar = _index2.default.getComponent('avatars.RoomAvatar');\n\n var dmIndicator = void 0;\n if (this._isDirectMessageRoom(this.props.room.roomId)) {\n dmIndicator = _react2.default.createElement('img', { src: 'img/icon_person.svg', className: 'mx_RoomTile_dm', width: '11', height: '13', alt: 'dm' });\n }\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { tabIndex: '0',\n className: classes,\n onClick: this.onClick,\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave,\n onContextMenu: this.onContextMenu\n },\n _react2.default.createElement(\n 'div',\n { className: avatarClasses },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_avatar_container' },\n _react2.default.createElement(RoomAvatar, { room: this.props.room, width: 24, height: 24 }),\n dmIndicator\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_nameContainer' },\n label,\n subtextLabel,\n badge\n ),\n tooltip\n );\n }\n});\n//# sourceMappingURL=RoomTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nexports.findReadReceiptFromUserId = findReadReceiptFromUserId;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Given MatrixEvent containing receipts, return the first\n * read receipt from the given user ID, or null if no such\n * receipt exists.\n */\nfunction findReadReceiptFromUserId(receiptEvent, userId) {\n var receiptKeys = (0, _keys2.default)(receiptEvent.getContent());\n for (var i = 0; i < receiptKeys.length; ++i) {\n var rcpt = receiptEvent.getContent()[receiptKeys[i]];\n if (rcpt['m.read'] && rcpt['m.read'][userId]) {\n return rcpt;\n }\n }\n\n return null;\n}\n//# sourceMappingURL=Receipt.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _AppTile = require('../elements/AppTile');\n\nvar _AppTile2 = _interopRequireDefault(_AppTile);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _ScalarAuthClient = require('../../../ScalarAuthClient');\n\nvar _ScalarAuthClient2 = _interopRequireDefault(_ScalarAuthClient);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _WidgetUtils = require('../../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _ActiveWidgetStore = require('../../../stores/ActiveWidgetStore');\n\nvar _ActiveWidgetStore2 = _interopRequireDefault(_ActiveWidgetStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar widgetType = 'm.stickerpicker';\n\n// We sit in a context menu, so the persisted element container needs to float\n// above it, so it needs a greater z-index than the ContextMenu\nvar STICKERPICKER_Z_INDEX = 5000;\n\nvar Stickerpicker = function (_React$Component) {\n (0, _inherits3.default)(Stickerpicker, _React$Component);\n\n function Stickerpicker(props) {\n (0, _classCallCheck3.default)(this, Stickerpicker);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Stickerpicker.__proto__ || (0, _getPrototypeOf2.default)(Stickerpicker)).call(this, props));\n\n _this._onShowStickersClick = _this._onShowStickersClick.bind(_this);\n _this._onHideStickersClick = _this._onHideStickersClick.bind(_this);\n _this._launchManageIntegrations = _this._launchManageIntegrations.bind(_this);\n _this._removeStickerpickerWidgets = _this._removeStickerpickerWidgets.bind(_this);\n _this._updateWidget = _this._updateWidget.bind(_this);\n _this._onWidgetAction = _this._onWidgetAction.bind(_this);\n _this._onResize = _this._onResize.bind(_this);\n _this._onFinished = _this._onFinished.bind(_this);\n\n _this.popoverWidth = 300;\n _this.popoverHeight = 300;\n\n _this.state = {\n showStickers: false,\n imError: null,\n stickerpickerX: null,\n stickerpickerY: null,\n stickerpickerWidget: null,\n widgetId: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(Stickerpicker, [{\n key: '_removeStickerpickerWidgets',\n value: function _removeStickerpickerWidgets() {\n var _this2 = this;\n\n console.warn('Removing Stickerpicker widgets');\n if (this.state.widgetId) {\n this.scalarClient.disableWidgetAssets(widgetType, this.state.widgetId).then(function () {\n console.warn('Assets disabled');\n }).catch(function (err) {\n console.error('Failed to disable assets');\n });\n } else {\n console.warn('No widget ID specified, not disabling assets');\n }\n\n this.setState({ showStickers: false });\n _WidgetUtils2.default.removeStickerpickerWidgets().then(function () {\n _this2.forceUpdate();\n }).catch(function (e) {\n console.error('Failed to remove sticker picker widget', e);\n });\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this3 = this;\n\n // Close the sticker picker when the window resizes\n window.addEventListener('resize', this._onResize);\n\n this.scalarClient = null;\n if (_SdkConfig2.default.get().integrations_ui_url && _SdkConfig2.default.get().integrations_rest_url) {\n this.scalarClient = new _ScalarAuthClient2.default();\n this.scalarClient.connect().then(function () {\n _this3.forceUpdate();\n }).catch(function (e) {\n _this3._imError(\"Failed to connect to integrations server\", e);\n });\n }\n\n if (!this.state.imError) {\n this.dispatcherRef = _dispatcher2.default.register(this._onWidgetAction);\n }\n\n // Track updates to widget state in account data\n _MatrixClientPeg2.default.get().on('accountData', this._updateWidget);\n\n // Initialise widget state from current account data\n this._updateWidget();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n window.removeEventListener('resize', this._onResize);\n if (this.dispatcherRef) {\n _dispatcher2.default.unregister(this.dispatcherRef);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n this._sendVisibilityToWidget(this.state.showStickers);\n }\n }, {\n key: '_imError',\n value: function _imError(errorMsg, e) {\n console.error(errorMsg, e);\n this.setState({\n showStickers: false,\n imError: errorMsg\n });\n }\n }, {\n key: '_updateWidget',\n value: function _updateWidget() {\n var stickerpickerWidget = _WidgetUtils2.default.getStickerpickerWidgets()[0];\n this.setState({\n stickerpickerWidget: stickerpickerWidget,\n widgetId: stickerpickerWidget ? stickerpickerWidget.id : null\n });\n }\n }, {\n key: '_onWidgetAction',\n value: function _onWidgetAction(payload) {\n switch (payload.action) {\n case \"user_widget_updated\":\n this.forceUpdate();\n break;\n case \"stickerpicker_close\":\n this.setState({ showStickers: false });\n break;\n case \"show_right_panel\":\n case \"hide_right_panel\":\n case \"show_left_panel\":\n case \"hide_left_panel\":\n this.setState({ showStickers: false });\n break;\n }\n }\n }, {\n key: '_defaultStickerpickerContent',\n value: function _defaultStickerpickerContent() {\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._launchManageIntegrations,\n className: 'mx_Stickers_contentPlaceholder' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"You don't currently have any stickerpacks enabled\")\n ),\n _react2.default.createElement(\n 'p',\n { className: 'mx_Stickers_addLink' },\n (0, _languageHandler._t)(\"Add some now\")\n ),\n _react2.default.createElement('img', { src: 'img/stickerpack-placeholder.png', alt: '' })\n );\n }\n }, {\n key: '_errorStickerpickerContent',\n value: function _errorStickerpickerContent() {\n return _react2.default.createElement(\n 'div',\n { style: { \"text-align\": \"center\" }, className: 'error' },\n _react2.default.createElement(\n 'p',\n null,\n ' ',\n this.state.imError,\n ' '\n )\n );\n }\n }, {\n key: '_sendVisibilityToWidget',\n value: function _sendVisibilityToWidget(visible) {\n if (!this.state.stickerpickerWidget) return;\n var widgetMessaging = _ActiveWidgetStore2.default.getWidgetMessaging(this.state.stickerpickerWidget.id);\n if (widgetMessaging && visible !== this._prevSentVisibility) {\n widgetMessaging.sendVisibility(visible);\n this._prevSentVisibility = visible;\n }\n }\n }, {\n key: '_getStickerpickerContent',\n value: function _getStickerpickerContent() {\n // Handle Integration Manager errors\n if (this.state._imError) {\n return this._errorStickerpickerContent();\n }\n\n // Stickers\n // TODO - Add support for Stickerpickers from multiple app stores.\n // Render content from multiple stickerpack sources, each within their\n // own iframe, within the stickerpicker UI element.\n var stickerpickerWidget = this.state.stickerpickerWidget;\n var stickersContent = void 0;\n\n // Use a separate ReactDOM tree to render the AppTile separately so that it persists and does\n // not unmount when we (a) close the sticker picker (b) switch rooms. It's properties are still\n // updated.\n var PersistedElement = _index2.default.getComponent(\"elements.PersistedElement\");\n\n // Load stickerpack content\n if (stickerpickerWidget && stickerpickerWidget.content && stickerpickerWidget.content.url) {\n // Set default name\n stickerpickerWidget.content.name = stickerpickerWidget.name || (0, _languageHandler._t)(\"Stickerpack\");\n\n stickersContent = _react2.default.createElement(\n 'div',\n { className: 'mx_Stickers_content_container' },\n _react2.default.createElement(\n 'div',\n {\n id: 'stickersContent',\n className: 'mx_Stickers_content',\n style: {\n border: 'none',\n height: this.popoverHeight,\n width: this.popoverWidth\n }\n },\n _react2.default.createElement(\n PersistedElement,\n { persistKey: 'stickerPicker', style: { zIndex: STICKERPICKER_Z_INDEX } },\n _react2.default.createElement(_AppTile2.default, {\n id: stickerpickerWidget.id,\n url: stickerpickerWidget.content.url,\n name: stickerpickerWidget.content.name,\n room: this.props.room,\n type: stickerpickerWidget.content.type,\n fullWidth: true,\n userId: _MatrixClientPeg2.default.get().credentials.userId,\n creatorUserId: stickerpickerWidget.sender || _MatrixClientPeg2.default.get().credentials.userId,\n waitForIframeLoad: true,\n show: true,\n showMenubar: true,\n onEditClick: this._launchManageIntegrations,\n onDeleteClick: this._removeStickerpickerWidgets,\n showTitle: false,\n showMinimise: true,\n showDelete: false,\n showPopout: false,\n onMinimiseClick: this._onHideStickersClick,\n handleMinimisePointerEvents: true,\n whitelistCapabilities: ['m.sticker', 'visibility'],\n userWidget: true\n })\n )\n )\n );\n } else {\n // Default content to show if stickerpicker widget not added\n stickersContent = this._defaultStickerpickerContent();\n }\n return stickersContent;\n }\n\n /**\n * Show the sticker picker overlay\n * If no stickerpacks have been added, show a link to the integration manager add sticker packs page.\n * @param {Event} e Event that triggered the function\n */\n\n }, {\n key: '_onShowStickersClick',\n value: function _onShowStickersClick(e) {\n // XXX: Simplify by using a context menu that is positioned relative to the sticker picker button\n\n var buttonRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = buttonRect.right + window.pageXOffset - 41;\n\n // Amount of horizontal space between the right of menu and the right of the viewport\n // (10 = amount needed to make chevron centrally aligned)\n var rightPad = 10;\n\n // When the sticker picker would be displayed off of the viewport, adjust x\n // (302 = width of context menu, including borders)\n x = Math.min(x, document.body.clientWidth - (302 + rightPad));\n\n // Offset the chevron location, which is relative to the left of the context menu\n // (10 = offset when context menu would not be displayed off viewport)\n // (8 = value required in practice (possibly 10 - 2 where the 2 = context menu borders)\n var stickerPickerChevronOffset = Math.max(10, 8 + window.pageXOffset + buttonRect.left - x);\n\n var y = buttonRect.top + buttonRect.height / 2 + window.pageYOffset - 19;\n\n this.setState({\n showStickers: true,\n stickerPickerX: x,\n stickerPickerY: y,\n stickerPickerChevronOffset: stickerPickerChevronOffset\n });\n }\n\n /**\n * Trigger hiding of the sticker picker overlay\n * @param {Event} ev Event that triggered the function call\n */\n\n }, {\n key: '_onHideStickersClick',\n value: function _onHideStickersClick(ev) {\n this.setState({ showStickers: false });\n }\n\n /**\n * Called when the window is resized\n */\n\n }, {\n key: '_onResize',\n value: function _onResize() {\n this.setState({ showStickers: false });\n }\n\n /**\n * The stickers picker was hidden\n */\n\n }, {\n key: '_onFinished',\n value: function _onFinished() {\n this.setState({ showStickers: false });\n }\n\n /**\n * Launch the integrations manager on the stickers integration page\n */\n\n }, {\n key: '_launchManageIntegrations',\n value: function _launchManageIntegrations() {\n var IntegrationsManager = _index2.default.getComponent(\"views.settings.IntegrationsManager\");\n var src = this.scalarClient !== null && this.scalarClient.hasCredentials() ? this.scalarClient.getScalarInterfaceUrlForRoom(this.props.room, 'type_' + widgetType, this.state.widgetId) : null;\n _Modal2.default.createTrackedDialog('Integrations Manager', '', IntegrationsManager, {\n src: src\n }, \"mx_IntegrationsManager\");\n\n this.setState({ showStickers: false });\n }\n }, {\n key: 'render',\n value: function render() {\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var ContextualMenu = _index2.default.getComponent('structures.ContextualMenu');\n var GenericElementContextMenu = _index2.default.getComponent('context_menus.GenericElementContextMenu');\n var stickersButton = void 0;\n\n var stickerPicker = _react2.default.createElement(ContextualMenu, {\n elementClass: GenericElementContextMenu,\n chevronOffset: this.state.stickerPickerChevronOffset,\n chevronFace: 'bottom',\n left: this.state.stickerPickerX,\n top: this.state.stickerPickerY,\n menuWidth: this.popoverWidth,\n menuHeight: this.popoverHeight,\n element: this._getStickerpickerContent(),\n onFinished: this._onFinished,\n menuPaddingTop: 0,\n menuPaddingLeft: 0,\n menuPaddingRight: 0\n });\n\n if (this.state.showStickers) {\n // Show hide-stickers button\n stickersButton = _react2.default.createElement(\n _AccessibleButton2.default,\n {\n id: 'stickersButton',\n key: 'controls_hide_stickers',\n className: 'mx_MessageComposer_stickers mx_Stickers_hideStickers',\n onClick: this._onHideStickersClick,\n ref: 'target',\n title: (0, _languageHandler._t)(\"Hide Stickers\") },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-hide-stickers.svg', width: '35', height: '35' })\n );\n } else {\n // Show show-stickers button\n stickersButton = _react2.default.createElement(\n _AccessibleButton2.default,\n {\n id: 'stickersButton',\n key: 'controls_show_stickers',\n className: 'mx_MessageComposer_stickers',\n onClick: this._onShowStickersClick,\n title: (0, _languageHandler._t)(\"Show Stickers\") },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-show-stickers.svg', width: '35', height: '35' })\n );\n }\n return _react2.default.createElement(\n 'div',\n null,\n stickersButton,\n this.state.showStickers && stickerPicker\n );\n }\n }]);\n return Stickerpicker;\n}(_react2.default.Component);\n\nexports.default = Stickerpicker;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Stickerpicker.js.map","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.encode = encode;\nexports.decode = decode;\n// to ensure markdown compatability we need to specifically encode some characters\nfunction encode(href) {\n return decodeSafe(href).trim().replace(/ /g, \"%20\").replace(/'/g, \"%27\").replace(/\\(/g, \"%28\").replace(/\\)/g, \"%29\");\n}\n\nfunction decode(href) {\n try {\n return decodeURI(href);\n } catch (e) {\n return decodeSafe(href);\n }\n}\n\n// convert hanging % characters into percentage encoded %25 as decodeURI cannot\n// handle this scenario but users may input 'invalid' urls.\nfunction decodeSafe(uri) {\n var components = uri.split(/(%(?:d0|d1)%.{2})/);\n return components.map(function (component) {\n try {\n return decodeURIComponent(component);\n } catch (e) {\n return component.replace(/%(?!\\d+)/g, \"%25\");\n }\n }).join(\"\");\n}","\"use strict\";\n\nfunction Renderer() {}\n\n/**\n * Walks the AST and calls member methods for each Node type.\n *\n * @param ast {Node} The root of the abstract syntax tree.\n */\nfunction render(ast) {\n var walker = ast.walker()\n , event\n , type;\n\n this.buffer = '';\n this.lastOut = '\\n';\n\n while((event = walker.next())) {\n type = event.node.type;\n if (this[type]) {\n this[type](event.node, event.entering);\n }\n }\n return this.buffer;\n}\n\n/**\n * Concatenate a literal string to the buffer.\n *\n * @param str {String} The string to concatenate.\n */\nfunction lit(str) {\n this.buffer += str;\n this.lastOut = str;\n}\n\n/**\n * Output a newline to the buffer.\n */\nfunction cr() {\n if (this.lastOut !== '\\n') {\n this.lit('\\n');\n }\n}\n\n/**\n * Concatenate a string to the buffer possibly escaping the content.\n *\n * Concrete renderer implementations should override this method.\n *\n * @param str {String} The string to concatenate.\n */\nfunction out(str) {\n this.lit(str);\n}\n\n/**\n * Escape a string for the target renderer.\n *\n * Abstract function that should be implemented by concrete \n * renderer implementations.\n *\n * @param str {String} The string to escape.\n */\nfunction esc(str) {\n return str;\n}\n\nRenderer.prototype.render = render;\nRenderer.prototype.out = out;\nRenderer.prototype.lit = lit;\nRenderer.prototype.cr = cr;\nRenderer.prototype.esc = esc;\n\nmodule.exports = Renderer;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction cancelQuoting() {\n _dispatcher2.default.dispatch({\n action: 'reply_to_event',\n event: null\n });\n}\n\nvar ReplyPreview = function (_React$Component) {\n (0, _inherits3.default)(ReplyPreview, _React$Component);\n\n function ReplyPreview(props, context) {\n (0, _classCallCheck3.default)(this, ReplyPreview);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ReplyPreview.__proto__ || (0, _getPrototypeOf2.default)(ReplyPreview)).call(this, props, context));\n\n _this.state = {\n event: null\n };\n\n _this._onRoomViewStoreUpdate = _this._onRoomViewStoreUpdate.bind(_this);\n\n _this._roomStoreToken = _RoomViewStore2.default.addListener(_this._onRoomViewStoreUpdate);\n _this._onRoomViewStoreUpdate();\n return _this;\n }\n\n (0, _createClass3.default)(ReplyPreview, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n // Remove RoomStore listener\n if (this._roomStoreToken) {\n this._roomStoreToken.remove();\n }\n }\n }, {\n key: '_onRoomViewStoreUpdate',\n value: function _onRoomViewStoreUpdate() {\n var event = _RoomViewStore2.default.getQuotingEvent();\n if (this.state.event !== event) {\n this.setState({ event: event });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n if (!this.state.event) return null;\n\n var EventTile = _index2.default.getComponent('rooms.EventTile');\n var EmojiText = _index2.default.getComponent('views.elements.EmojiText');\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ReplyPreview' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ReplyPreview_section' },\n _react2.default.createElement(\n EmojiText,\n { element: 'div', className: 'mx_ReplyPreview_header mx_ReplyPreview_title' },\n '💬 ' + (0, _languageHandler._t)('Replying')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ReplyPreview_header mx_ReplyPreview_cancel' },\n _react2.default.createElement('img', { className: 'mx_filterFlipColor', src: 'img/cancel.svg', width: '18', height: '18',\n onClick: cancelQuoting })\n ),\n _react2.default.createElement('div', { className: 'mx_ReplyPreview_clear' }),\n _react2.default.createElement(EventTile, { last: true,\n tileShape: 'reply_preview',\n mxEvent: this.state.event,\n isTwelveHour: _SettingsStore2.default.getValue(\"showTwelveHourTimestamps\") })\n )\n );\n }\n }]);\n return ReplyPreview;\n}(_react2.default.Component);\n\nexports.default = ReplyPreview;\nmodule.exports = exports['default'];\n//# sourceMappingURL=ReplyPreview.js.map","\"use strict\";\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require(\"../../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _dispatcher = require(\"../../../dispatcher\");\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _AccessibleButton = require(\"../elements/AccessibleButton\");\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _MessageEvent = require(\"../messages/MessageEvent\");\n\nvar _MessageEvent2 = _interopRequireDefault(_MessageEvent);\n\nvar _MemberAvatar = require(\"../avatars/MemberAvatar\");\n\nvar _MemberAvatar2 = _interopRequireDefault(_MemberAvatar);\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nvar _DateUtils = require(\"../../../DateUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'PinnedEventTile',\n propTypes: {\n mxRoom: _propTypes2.default.object.isRequired,\n mxEvent: _propTypes2.default.object.isRequired,\n onUnpinned: _propTypes2.default.func\n },\n onTileClicked: function onTileClicked() {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n event_id: this.props.mxEvent.getId(),\n highlighted: true,\n room_id: this.props.mxEvent.getRoomId()\n });\n },\n onUnpinClicked: function onUnpinClicked() {\n var _this = this;\n\n var pinnedEvents = this.props.mxRoom.currentState.getStateEvents(\"m.room.pinned_events\", \"\");\n if (!pinnedEvents || !pinnedEvents.getContent().pinned) {\n // Nothing to do: already unpinned\n if (this.props.onUnpinned) this.props.onUnpinned();\n } else {\n var pinned = pinnedEvents.getContent().pinned;\n var index = pinned.indexOf(this.props.mxEvent.getId());\n if (index !== -1) {\n pinned.splice(index, 1);\n _MatrixClientPeg2.default.get().sendStateEvent(this.props.mxRoom.roomId, 'm.room.pinned_events', { pinned: pinned }, '').then(function () {\n if (_this.props.onUnpinned) _this.props.onUnpinned();\n });\n } else if (this.props.onUnpinned) this.props.onUnpinned();\n }\n },\n _canUnpin: function _canUnpin() {\n return this.props.mxRoom.currentState.mayClientSendStateEvent('m.room.pinned_events', _MatrixClientPeg2.default.get());\n },\n render: function render() {\n var sender = this.props.mxRoom.getMember(this.props.mxEvent.getSender());\n var avatarSize = 40;\n\n var unpinButton = null;\n if (this._canUnpin()) {\n unpinButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this.onUnpinClicked, className: \"mx_PinnedEventTile_unpinButton\" },\n _react2.default.createElement(\"img\", { src: \"img/cancel-red.svg\", width: \"8\", height: \"8\", alt: (0, _languageHandler._t)('Unpin Message'), title: (0, _languageHandler._t)('Unpin Message') })\n );\n }\n\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_PinnedEventTile\" },\n _react2.default.createElement(\n \"div\",\n { className: \"mx_PinnedEventTile_actions\" },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: \"mx_PinnedEventTile_gotoButton mx_textButton\", onClick: this.onTileClicked },\n (0, _languageHandler._t)(\"Jump to message\")\n ),\n unpinButton\n ),\n _react2.default.createElement(\n \"span\",\n { className: \"mx_PinnedEventTile_senderAvatar\" },\n _react2.default.createElement(_MemberAvatar2.default, { member: sender, width: avatarSize, height: avatarSize })\n ),\n _react2.default.createElement(\n \"span\",\n { className: \"mx_PinnedEventTile_sender\" },\n sender.name\n ),\n _react2.default.createElement(\n \"span\",\n { className: \"mx_PinnedEventTile_timestamp\" },\n (0, _DateUtils.formatFullDate)(new Date(this.props.mxEvent.getTs()))\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"mx_PinnedEventTile_message\" },\n _react2.default.createElement(_MessageEvent2.default, { mxEvent: this.props.mxEvent, className: \"mx_PinnedEventTile_body\", maxImageHeight: 150,\n onWidgetLoad: function onWidgetLoad() {} // we need to give this, apparently\n })\n )\n );\n }\n}); /*\n Copyright 2017 Travis Ralston\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=PinnedEventTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.roomShape = undefined;\nexports.getDisplayAliasForRoom = getDisplayAliasForRoom;\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _linkifyjs = require('linkifyjs');\n\nvar linkify = _interopRequireWildcard(_linkifyjs);\n\nvar _element = require('linkifyjs/element');\n\nvar _element2 = _interopRequireDefault(_element);\n\nvar _linkifyMatrix = require('../../../linkify-matrix');\n\nvar _linkifyMatrix2 = _interopRequireDefault(_linkifyMatrix);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _linkifyMatrix2.default)(linkify); /*\n Copyright 2017 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction getDisplayAliasForRoom(room) {\n return room.canonicalAlias || (room.aliases ? room.aliases[0] : \"\");\n}\n\nvar roomShape = exports.roomShape = _propTypes2.default.shape({\n name: _propTypes2.default.string,\n topic: _propTypes2.default.string,\n roomId: _propTypes2.default.string,\n avatarUrl: _propTypes2.default.string,\n numJoinedMembers: _propTypes2.default.number,\n canonicalAlias: _propTypes2.default.string,\n aliases: _propTypes2.default.arrayOf(_propTypes2.default.string),\n\n worldReadable: _propTypes2.default.bool,\n guestCanJoin: _propTypes2.default.bool\n});\n\nexports.default = _react2.default.createClass({\n displayName: 'RoomDetailRow',\n\n propTypes: {\n room: roomShape,\n // passes ev, room as args\n onClick: _propTypes2.default.func,\n onMouseDown: _propTypes2.default.func\n },\n\n _linkifyTopic: function _linkifyTopic() {\n if (this.refs.topic) {\n (0, _element2.default)(this.refs.topic, _linkifyMatrix2.default.options);\n }\n },\n\n componentDidMount: function componentDidMount() {\n this._linkifyTopic();\n },\n\n componentDidUpdate: function componentDidUpdate() {\n this._linkifyTopic();\n },\n\n onClick: function onClick(ev) {\n ev.preventDefault();\n if (this.props.onClick) {\n this.props.onClick(ev, this.props.room);\n }\n },\n\n onTopicClick: function onTopicClick(ev) {\n // When clicking a link in the topic, prevent the event being propagated\n // to `onClick`.\n ev.stopPropagation();\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n\n var room = this.props.room;\n var name = room.name || getDisplayAliasForRoom(room) || (0, _languageHandler._t)('Unnamed room');\n\n var guestRead = room.worldReadable ? _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perm' },\n (0, _languageHandler._t)('World readable')\n ) : _react2.default.createElement('div', null);\n var guestJoin = room.guestCanJoin ? _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perm' },\n (0, _languageHandler._t)('Guests can join')\n ) : _react2.default.createElement('div', null);\n\n var perms = guestRead || guestJoin ? _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perms' },\n guestRead,\n '\\xA0',\n guestJoin\n ) : _react2.default.createElement('div', null);\n\n return _react2.default.createElement(\n 'tr',\n { key: room.roomId, onClick: this.onClick, onMouseDown: this.props.onMouseDown },\n _react2.default.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomAvatar' },\n _react2.default.createElement(BaseAvatar, { width: 24, height: 24, resizeMethod: 'crop',\n name: name, idName: name,\n url: _matrixJsSdk.ContentRepo.getHttpUriForMxc(_MatrixClientPeg2.default.get().getHomeserverUrl(), room.avatarUrl, 24, 24, \"crop\") })\n ),\n _react2.default.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomDescription' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_name' },\n name\n ),\n '\\xA0',\n perms,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_topic', ref: 'topic', onClick: this.onTopicClick },\n room.topic\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_alias' },\n getDisplayAliasForRoom(room)\n )\n ),\n _react2.default.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomMemberCount' },\n room.numJoinedMembers\n )\n );\n }\n});\n//# sourceMappingURL=RoomDetailRow.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CancelButton = CancelButton;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// cancel button which is shared between room header and simple room header\nfunction CancelButton(props) {\n var onClick = props.onClick;\n\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_cancelButton', onClick: onClick },\n _react2.default.createElement('img', { src: 'img/cancel.svg', className: 'mx_filterFlipColor',\n width: '18', height: '18', alt: (0, _languageHandler._t)(\"Cancel\") })\n );\n}\n\n/*\n * A stripped-down room header used for things like the user settings\n * and room directory.\n */\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'SimpleRoomHeader',\n\n propTypes: {\n title: _propTypes2.default.string,\n onCancelClick: _propTypes2.default.func,\n\n // `src` to a TintableSvg. Optional.\n icon: _propTypes2.default.string\n },\n\n render: function render() {\n var cancelButton = void 0;\n var icon = void 0;\n if (this.props.onCancelClick) {\n cancelButton = _react2.default.createElement(CancelButton, { onClick: this.props.onCancelClick });\n }\n if (this.props.icon) {\n var TintableSvg = _index2.default.getComponent('elements.TintableSvg');\n icon = _react2.default.createElement(TintableSvg, {\n className: 'mx_RoomHeader_icon', src: this.props.icon,\n width: '25', height: '25'\n });\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_wrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_simpleHeader' },\n icon,\n this.props.title,\n cancelButton\n )\n )\n );\n }\n});\n//# sourceMappingURL=SimpleRoomHeader.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar NotificationUtils = require('./NotificationUtils');\n\nvar encodeActions = NotificationUtils.encodeActions;\n\nmodule.exports = {\n ACTION_NOTIFY: encodeActions({ notify: true }),\n ACTION_NOTIFY_DEFAULT_SOUND: encodeActions({ notify: true, sound: \"default\" }),\n ACTION_NOTIFY_RING_SOUND: encodeActions({ notify: true, sound: \"ring\" }),\n ACTION_HIGHLIGHT: encodeActions({ notify: true, highlight: true }),\n ACTION_HIGHLIGHT_DEFAULT_SOUND: encodeActions({ notify: true, sound: \"default\", highlight: true }),\n ACTION_DONT_NOTIFY: encodeActions({ notify: false }),\n ACTION_DISABLED: null\n};\n//# sourceMappingURL=StandardActions.js.map","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import PropTypes from 'prop-types';\nexport var subscriptionShape = PropTypes.shape({\n trySubscribe: PropTypes.func.isRequired,\n tryUnsubscribe: PropTypes.func.isRequired,\n notifyNestedSubs: PropTypes.func.isRequired,\n isSubscribed: PropTypes.func.isRequired\n});\nexport var storeShape = PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n});","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nimport warning from '../utils/warning';\nvar didWarnAboutReceivingStore = false;\n\nfunction warnAboutReceivingStore() {\n if (didWarnAboutReceivingStore) {\n return;\n }\n\n didWarnAboutReceivingStore = true;\n warning('<Provider> does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/reduxjs/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.');\n}\n\nexport function createProvider(storeKey) {\n var _Provider$childContex;\n\n if (storeKey === void 0) {\n storeKey = 'store';\n }\n\n var subscriptionKey = storeKey + \"Subscription\";\n\n var Provider =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[storeKey] = this[storeKey], _ref[subscriptionKey] = null, _ref;\n };\n\n function Provider(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this[storeKey] = props.store;\n return _this;\n }\n\n _proto.render = function render() {\n return Children.only(this.props.children);\n };\n\n return Provider;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n Provider.prototype.componentWillReceiveProps = function (nextProps) {\n if (this[storeKey] !== nextProps.store) {\n warnAboutReceivingStore();\n }\n };\n }\n\n Provider.propTypes = {\n store: storeShape.isRequired,\n children: PropTypes.element.isRequired\n };\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[storeKey] = storeShape.isRequired, _Provider$childContex[subscriptionKey] = subscriptionShape, _Provider$childContex);\n return Provider;\n}\nexport default createProvider();","export default function _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}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","// encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\nvar CLEARED = null;\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n // the current/next pattern is copied from redux's createStore code.\n // TODO: refactor+expose that code to be reusable here?\n var current = [];\n var next = [];\n return {\n clear: function clear() {\n next = CLEARED;\n current = CLEARED;\n },\n notify: function notify() {\n var listeners = current = next;\n\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n },\n get: function get() {\n return next;\n },\n subscribe: function subscribe(listener) {\n var isSubscribed = true;\n if (next === current) next = current.slice();\n next.push(listener);\n return function unsubscribe() {\n if (!isSubscribed || current === CLEARED) return;\n isSubscribed = false;\n if (next === current) next = current.slice();\n next.splice(next.indexOf(listener), 1);\n };\n }\n };\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(store, parentSub, onStateChange) {\n this.store = store;\n this.parentSub = parentSub;\n this.onStateChange = onStateChange;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n }\n\n var _proto = Subscription.prototype;\n\n _proto.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n _proto.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n _proto.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.onStateChange) : this.store.subscribe(this.onStateChange);\n this.listeners = createListenerCollection();\n }\n };\n\n _proto.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\nexport { Subscription as default };","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport { Component, createElement } from 'react';\nimport { isValidElementType } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nvar hotReloadingVersion = 0;\nvar dummyState = {};\n\nfunction noop() {}\n\nfunction makeSelectorStateful(sourceSelector, store) {\n // wrap the selector in an object that tracks its results between runs.\n var selector = {\n run: function runComponentSelector(props) {\n try {\n var nextProps = sourceSelector(store.getState(), props);\n\n if (nextProps !== selector.props || selector.error) {\n selector.shouldComponentUpdate = true;\n selector.props = nextProps;\n selector.error = null;\n }\n } catch (error) {\n selector.shouldComponentUpdate = true;\n selector.error = error;\n }\n }\n };\n return selector;\n}\n\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n var _contextTypes, _childContextTypes;\n\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\"]);\n\n var subscriptionKey = storeKey + 'Subscription';\n var version = hotReloadingVersion++;\n var contextTypes = (_contextTypes = {}, _contextTypes[storeKey] = storeShape, _contextTypes[subscriptionKey] = subscriptionShape, _contextTypes);\n var childContextTypes = (_childContextTypes = {}, _childContextTypes[subscriptionKey] = subscriptionShape, _childContextTypes);\n return function wrapWithConnect(WrappedComponent) {\n invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + JSON.stringify(WrappedComponent)));\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n withRef: withRef,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent // TODO Actually fix our use of componentWillReceiveProps\n\n /* eslint-disable react/no-deprecated */\n\n });\n\n var Connect =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Connect, _Component);\n\n function Connect(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this.version = version;\n _this.state = {};\n _this.renderCount = 0;\n _this.store = props[storeKey] || context[storeKey];\n _this.propsMode = Boolean(props[storeKey]);\n _this.setWrappedInstance = _this.setWrappedInstance.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n invariant(_this.store, \"Could not find \\\"\" + storeKey + \"\\\" in either the context or props of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + (\"or explicitly pass \\\"\" + storeKey + \"\\\" as a prop to \\\"\" + displayName + \"\\\".\"));\n\n _this.initSelector();\n\n _this.initSubscription();\n\n return _this;\n }\n\n var _proto = Connect.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref3;\n\n // If this component received store from props, its subscription should be transparent\n // to any descendants receiving store+subscription from context; it passes along\n // subscription passed to it. Otherwise, it shadows the parent subscription, which allows\n // Connect to control ordering of notifications to flow top-down.\n var subscription = this.propsMode ? null : this.subscription;\n return _ref3 = {}, _ref3[subscriptionKey] = subscription || this.context[subscriptionKey], _ref3;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n if (!shouldHandleStateChanges) return; // componentWillMount fires during server side rendering, but componentDidMount and\n // componentWillUnmount do not. Because of this, trySubscribe happens during ...didMount.\n // Otherwise, unsubscription would never take place during SSR, causing a memory leak.\n // To handle the case where a child component may have triggered a state change by\n // dispatching an action in its componentWillMount, we have to re-run the select and maybe\n // re-render.\n\n this.subscription.trySubscribe();\n this.selector.run(this.props);\n if (this.selector.shouldComponentUpdate) this.forceUpdate();\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n this.selector.run(nextProps);\n };\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate() {\n return this.selector.shouldComponentUpdate;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.subscription) this.subscription.tryUnsubscribe();\n this.subscription = null;\n this.notifyNestedSubs = noop;\n this.store = null;\n this.selector.run = noop;\n this.selector.shouldComponentUpdate = false;\n };\n\n _proto.getWrappedInstance = function getWrappedInstance() {\n invariant(withRef, \"To access the wrapped instance, you need to specify \" + (\"{ withRef: true } in the options argument of the \" + methodName + \"() call.\"));\n return this.wrappedInstance;\n };\n\n _proto.setWrappedInstance = function setWrappedInstance(ref) {\n this.wrappedInstance = ref;\n };\n\n _proto.initSelector = function initSelector() {\n var sourceSelector = selectorFactory(this.store.dispatch, selectorFactoryOptions);\n this.selector = makeSelectorStateful(sourceSelector, this.store);\n this.selector.run(this.props);\n };\n\n _proto.initSubscription = function initSubscription() {\n if (!shouldHandleStateChanges) return; // parentSub's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n var parentSub = (this.propsMode ? this.props : this.context)[subscriptionKey];\n this.subscription = new Subscription(this.store, parentSub, this.onStateChange.bind(this)); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `this.subscription` will then be null. An\n // extra null check every change can be avoided by copying the method onto `this` and then\n // replacing it with a no-op on unmount. This can probably be avoided if Subscription's\n // listeners logic is changed to not call listeners that have been unsubscribed in the\n // middle of the notification loop.\n\n this.notifyNestedSubs = this.subscription.notifyNestedSubs.bind(this.subscription);\n };\n\n _proto.onStateChange = function onStateChange() {\n this.selector.run(this.props);\n\n if (!this.selector.shouldComponentUpdate) {\n this.notifyNestedSubs();\n } else {\n this.componentDidUpdate = this.notifyNestedSubsOnComponentDidUpdate;\n this.setState(dummyState);\n }\n };\n\n _proto.notifyNestedSubsOnComponentDidUpdate = function notifyNestedSubsOnComponentDidUpdate() {\n // `componentDidUpdate` is conditionally implemented when `onStateChange` determines it\n // needs to notify nested subs. Once called, it unimplements itself until further state\n // changes occur. Doing it this way vs having a permanent `componentDidUpdate` that does\n // a boolean check every time avoids an extra method call most of the time, resulting\n // in some perf boost.\n this.componentDidUpdate = undefined;\n this.notifyNestedSubs();\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.subscription) && this.subscription.isSubscribed();\n };\n\n _proto.addExtraProps = function addExtraProps(props) {\n if (!withRef && !renderCountProp && !(this.propsMode && this.subscription)) return props; // make a shallow copy so that fields added don't leak to the original selector.\n // this is especially important for 'ref' since that's a reference back to the component\n // instance. a singleton memoized selector would then be holding a reference to the\n // instance, preventing the instance from being garbage collected, and that would be bad\n\n var withExtras = _extends({}, props);\n\n if (withRef) withExtras.ref = this.setWrappedInstance;\n if (renderCountProp) withExtras[renderCountProp] = this.renderCount++;\n if (this.propsMode && this.subscription) withExtras[subscriptionKey] = this.subscription;\n return withExtras;\n };\n\n _proto.render = function render() {\n var selector = this.selector;\n selector.shouldComponentUpdate = false;\n\n if (selector.error) {\n throw selector.error;\n } else {\n return createElement(WrappedComponent, this.addExtraProps(selector.props));\n }\n };\n\n return Connect;\n }(Component);\n /* eslint-enable react/no-deprecated */\n\n\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n Connect.childContextTypes = childContextTypes;\n Connect.contextTypes = contextTypes;\n Connect.propTypes = contextTypes;\n\n if (process.env.NODE_ENV !== 'production') {\n Connect.prototype.componentWillUpdate = function componentWillUpdate() {\n var _this2 = this;\n\n // We are hot reloading!\n if (this.version !== version) {\n this.version = version;\n this.initSelector(); // If any connected descendants don't hot reload (and resubscribe in the process), their\n // listeners will be lost when we unsubscribe. Unfortunately, by copying over all\n // listeners, this does mean that the old versions of connected descendants will still be\n // notified of state changes; however, their onStateChange function is a no-op so this\n // isn't a huge deal.\n\n var oldListeners = [];\n\n if (this.subscription) {\n oldListeners = this.subscription.listeners.get();\n this.subscription.tryUnsubscribe();\n }\n\n this.initSubscription();\n\n if (shouldHandleStateChanges) {\n this.subscription.trySubscribe();\n oldListeners.forEach(function (listener) {\n return _this2.subscription.listeners.subscribe(listener);\n });\n }\n }\n };\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n// \n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n// \n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n// \n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n// \n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n// \n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default createConnect();","import Provider, { createProvider } from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport connect from './connect/connect';\nexport { Provider, createProvider, connectAdvanced, connect };","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = TYPE_STATICS[targetComponent['$$typeof']] || REACT_STATICS;\n var sourceStatics = TYPE_STATICS[sourceComponent['$$typeof']] || REACT_STATICS;\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","'use strict';\n\nvar GROUP_LEFT_TO_RIGHT,\n GROUP_RIGHT_TO_LEFT,\n EXPRESSION_LEFT_TO_RIGHT,\n EXPRESSION_RIGHT_TO_LEFT;\n\n/*\n * Character ranges of left-to-right characters.\n */\n\nGROUP_LEFT_TO_RIGHT = 'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6' +\n '\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C' +\n '\\uFE00-\\uFE6F\\uFEFD-\\uFFFF';\n\n/*\n * Character ranges of right-to-left characters.\n */\n\nGROUP_RIGHT_TO_LEFT = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC';\n\n/*\n * Expression to match a left-to-right string.\n *\n * Matches the start of a string, followed by zero or\n * more non-right-to-left characters, followed by a\n * left-to-right character.\n */\n\nEXPRESSION_LEFT_TO_RIGHT = new RegExp(\n '^[^' + GROUP_RIGHT_TO_LEFT + ']*[' + GROUP_LEFT_TO_RIGHT + ']'\n);\n\n/*\n * Expression to match a right-to-left string.\n *\n * Matches the start of a string, followed by zero or\n * more non-left-to-right characters, followed by a\n * right-to-left character.\n */\n\nEXPRESSION_RIGHT_TO_LEFT = new RegExp(\n '^[^' + GROUP_LEFT_TO_RIGHT + ']*[' + GROUP_RIGHT_TO_LEFT + ']'\n);\n\n/**\n * Detect the direction of text.\n *\n * @param {string} value - value to stringify and check.\n * @return {string} - One of `\"rtl\"`, `\"ltr\"`, or\n * `\"neutral\"`.\n */\nfunction direction(value) {\n value = value.toString();\n\n if (EXPRESSION_RIGHT_TO_LEFT.test(value)) {\n return 'rtl';\n }\n\n if (EXPRESSION_LEFT_TO_RIGHT.test(value)) {\n return 'ltr';\n }\n\n return 'neutral';\n}\n\n/*\n * Expose `direction`.\n */\n\nmodule.exports = direction;\n","function isBackward(selection) {\n var startNode = selection.anchorNode;\n var startOffset = selection.anchorOffset;\n var endNode = selection.focusNode;\n var endOffset = selection.focusOffset;\n\n var position = startNode.compareDocumentPosition(endNode);\n\n return !(position === 4 || (position === 0 && startOffset < endOffset));\n}\n\nmodule.exports = isBackward;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","'use strict';\n\nmodule.exports = require('./lib/ReactDOMServer');\n","\"use strict\";\n\nrequire(\"core-js/shim\");\n\nrequire(\"regenerator-runtime/runtime\");\n\nrequire(\"core-js/fn/regexp/escape\");\n\nif (global._babelPolyfill) {\n throw new Error(\"only one instance of babel-polyfill is allowed\");\n}\nglobal._babelPolyfill = true;\n\nvar DEFINE_PROPERTY = \"defineProperty\";\nfunction define(O, key, value) {\n O[key] || Object[DEFINE_PROPERTY](O, key, {\n writable: true,\n configurable: true,\n value: value\n });\n}\n\ndefine(String.prototype, \"padLeft\", \"\".padStart);\ndefine(String.prototype, \"padRight\", \"\".padEnd);\n\n\"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill\".split(\",\").forEach(function (key) {\n [][key] && define(Array, key, Function.call.bind([][key]));\n});","require('./modules/es6.symbol');\nrequire('./modules/es6.object.create');\nrequire('./modules/es6.object.define-property');\nrequire('./modules/es6.object.define-properties');\nrequire('./modules/es6.object.get-own-property-descriptor');\nrequire('./modules/es6.object.get-prototype-of');\nrequire('./modules/es6.object.keys');\nrequire('./modules/es6.object.get-own-property-names');\nrequire('./modules/es6.object.freeze');\nrequire('./modules/es6.object.seal');\nrequire('./modules/es6.object.prevent-extensions');\nrequire('./modules/es6.object.is-frozen');\nrequire('./modules/es6.object.is-sealed');\nrequire('./modules/es6.object.is-extensible');\nrequire('./modules/es6.object.assign');\nrequire('./modules/es6.object.is');\nrequire('./modules/es6.object.set-prototype-of');\nrequire('./modules/es6.object.to-string');\nrequire('./modules/es6.function.bind');\nrequire('./modules/es6.function.name');\nrequire('./modules/es6.function.has-instance');\nrequire('./modules/es6.parse-int');\nrequire('./modules/es6.parse-float');\nrequire('./modules/es6.number.constructor');\nrequire('./modules/es6.number.to-fixed');\nrequire('./modules/es6.number.to-precision');\nrequire('./modules/es6.number.epsilon');\nrequire('./modules/es6.number.is-finite');\nrequire('./modules/es6.number.is-integer');\nrequire('./modules/es6.number.is-nan');\nrequire('./modules/es6.number.is-safe-integer');\nrequire('./modules/es6.number.max-safe-integer');\nrequire('./modules/es6.number.min-safe-integer');\nrequire('./modules/es6.number.parse-float');\nrequire('./modules/es6.number.parse-int');\nrequire('./modules/es6.math.acosh');\nrequire('./modules/es6.math.asinh');\nrequire('./modules/es6.math.atanh');\nrequire('./modules/es6.math.cbrt');\nrequire('./modules/es6.math.clz32');\nrequire('./modules/es6.math.cosh');\nrequire('./modules/es6.math.expm1');\nrequire('./modules/es6.math.fround');\nrequire('./modules/es6.math.hypot');\nrequire('./modules/es6.math.imul');\nrequire('./modules/es6.math.log10');\nrequire('./modules/es6.math.log1p');\nrequire('./modules/es6.math.log2');\nrequire('./modules/es6.math.sign');\nrequire('./modules/es6.math.sinh');\nrequire('./modules/es6.math.tanh');\nrequire('./modules/es6.math.trunc');\nrequire('./modules/es6.string.from-code-point');\nrequire('./modules/es6.string.raw');\nrequire('./modules/es6.string.trim');\nrequire('./modules/es6.string.iterator');\nrequire('./modules/es6.string.code-point-at');\nrequire('./modules/es6.string.ends-with');\nrequire('./modules/es6.string.includes');\nrequire('./modules/es6.string.repeat');\nrequire('./modules/es6.string.starts-with');\nrequire('./modules/es6.string.anchor');\nrequire('./modules/es6.string.big');\nrequire('./modules/es6.string.blink');\nrequire('./modules/es6.string.bold');\nrequire('./modules/es6.string.fixed');\nrequire('./modules/es6.string.fontcolor');\nrequire('./modules/es6.string.fontsize');\nrequire('./modules/es6.string.italics');\nrequire('./modules/es6.string.link');\nrequire('./modules/es6.string.small');\nrequire('./modules/es6.string.strike');\nrequire('./modules/es6.string.sub');\nrequire('./modules/es6.string.sup');\nrequire('./modules/es6.date.now');\nrequire('./modules/es6.date.to-json');\nrequire('./modules/es6.date.to-iso-string');\nrequire('./modules/es6.date.to-string');\nrequire('./modules/es6.date.to-primitive');\nrequire('./modules/es6.array.is-array');\nrequire('./modules/es6.array.from');\nrequire('./modules/es6.array.of');\nrequire('./modules/es6.array.join');\nrequire('./modules/es6.array.slice');\nrequire('./modules/es6.array.sort');\nrequire('./modules/es6.array.for-each');\nrequire('./modules/es6.array.map');\nrequire('./modules/es6.array.filter');\nrequire('./modules/es6.array.some');\nrequire('./modules/es6.array.every');\nrequire('./modules/es6.array.reduce');\nrequire('./modules/es6.array.reduce-right');\nrequire('./modules/es6.array.index-of');\nrequire('./modules/es6.array.last-index-of');\nrequire('./modules/es6.array.copy-within');\nrequire('./modules/es6.array.fill');\nrequire('./modules/es6.array.find');\nrequire('./modules/es6.array.find-index');\nrequire('./modules/es6.array.species');\nrequire('./modules/es6.array.iterator');\nrequire('./modules/es6.regexp.constructor');\nrequire('./modules/es6.regexp.to-string');\nrequire('./modules/es6.regexp.flags');\nrequire('./modules/es6.regexp.match');\nrequire('./modules/es6.regexp.replace');\nrequire('./modules/es6.regexp.search');\nrequire('./modules/es6.regexp.split');\nrequire('./modules/es6.promise');\nrequire('./modules/es6.map');\nrequire('./modules/es6.set');\nrequire('./modules/es6.weak-map');\nrequire('./modules/es6.weak-set');\nrequire('./modules/es6.typed.array-buffer');\nrequire('./modules/es6.typed.data-view');\nrequire('./modules/es6.typed.int8-array');\nrequire('./modules/es6.typed.uint8-array');\nrequire('./modules/es6.typed.uint8-clamped-array');\nrequire('./modules/es6.typed.int16-array');\nrequire('./modules/es6.typed.uint16-array');\nrequire('./modules/es6.typed.int32-array');\nrequire('./modules/es6.typed.uint32-array');\nrequire('./modules/es6.typed.float32-array');\nrequire('./modules/es6.typed.float64-array');\nrequire('./modules/es6.reflect.apply');\nrequire('./modules/es6.reflect.construct');\nrequire('./modules/es6.reflect.define-property');\nrequire('./modules/es6.reflect.delete-property');\nrequire('./modules/es6.reflect.enumerate');\nrequire('./modules/es6.reflect.get');\nrequire('./modules/es6.reflect.get-own-property-descriptor');\nrequire('./modules/es6.reflect.get-prototype-of');\nrequire('./modules/es6.reflect.has');\nrequire('./modules/es6.reflect.is-extensible');\nrequire('./modules/es6.reflect.own-keys');\nrequire('./modules/es6.reflect.prevent-extensions');\nrequire('./modules/es6.reflect.set');\nrequire('./modules/es6.reflect.set-prototype-of');\nrequire('./modules/es7.array.includes');\nrequire('./modules/es7.array.flat-map');\nrequire('./modules/es7.array.flatten');\nrequire('./modules/es7.string.at');\nrequire('./modules/es7.string.pad-start');\nrequire('./modules/es7.string.pad-end');\nrequire('./modules/es7.string.trim-left');\nrequire('./modules/es7.string.trim-right');\nrequire('./modules/es7.string.match-all');\nrequire('./modules/es7.symbol.async-iterator');\nrequire('./modules/es7.symbol.observable');\nrequire('./modules/es7.object.get-own-property-descriptors');\nrequire('./modules/es7.object.values');\nrequire('./modules/es7.object.entries');\nrequire('./modules/es7.object.define-getter');\nrequire('./modules/es7.object.define-setter');\nrequire('./modules/es7.object.lookup-getter');\nrequire('./modules/es7.object.lookup-setter');\nrequire('./modules/es7.map.to-json');\nrequire('./modules/es7.set.to-json');\nrequire('./modules/es7.map.of');\nrequire('./modules/es7.set.of');\nrequire('./modules/es7.weak-map.of');\nrequire('./modules/es7.weak-set.of');\nrequire('./modules/es7.map.from');\nrequire('./modules/es7.set.from');\nrequire('./modules/es7.weak-map.from');\nrequire('./modules/es7.weak-set.from');\nrequire('./modules/es7.global');\nrequire('./modules/es7.system.global');\nrequire('./modules/es7.error.is-error');\nrequire('./modules/es7.math.clamp');\nrequire('./modules/es7.math.deg-per-rad');\nrequire('./modules/es7.math.degrees');\nrequire('./modules/es7.math.fscale');\nrequire('./modules/es7.math.iaddh');\nrequire('./modules/es7.math.isubh');\nrequire('./modules/es7.math.imulh');\nrequire('./modules/es7.math.rad-per-deg');\nrequire('./modules/es7.math.radians');\nrequire('./modules/es7.math.scale');\nrequire('./modules/es7.math.umulh');\nrequire('./modules/es7.math.signbit');\nrequire('./modules/es7.promise.finally');\nrequire('./modules/es7.promise.try');\nrequire('./modules/es7.reflect.define-metadata');\nrequire('./modules/es7.reflect.delete-metadata');\nrequire('./modules/es7.reflect.get-metadata');\nrequire('./modules/es7.reflect.get-metadata-keys');\nrequire('./modules/es7.reflect.get-own-metadata');\nrequire('./modules/es7.reflect.get-own-metadata-keys');\nrequire('./modules/es7.reflect.has-metadata');\nrequire('./modules/es7.reflect.has-own-metadata');\nrequire('./modules/es7.reflect.metadata');\nrequire('./modules/es7.asap');\nrequire('./modules/es7.observable');\nrequire('./modules/web.timers');\nrequire('./modules/web.immediate');\nrequire('./modules/web.dom.iterable');\nmodule.exports = require('./modules/_core');\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n require('./_redefine')(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n","// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","'use strict';\nvar isObject = require('./_is-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar HAS_INSTANCE = require('./_wks')('hasInstance');\nvar FunctionProto = Function.prototype;\n// 19.2.3.6 Function.prototype[@@hasInstance](V)\nif (!(HAS_INSTANCE in FunctionProto)) require('./_object-dp').f(FunctionProto, HAS_INSTANCE, { value: function (O) {\n if (typeof this != 'function' || !isObject(O)) return false;\n if (!isObject(this.prototype)) return O instanceof this;\n // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n return false;\n} });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = require('./_descriptors') ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n require('./_redefine')(global, NUMBER, $Number);\n}\n","'use strict';\nvar $export = require('./_export');\nvar toInteger = require('./_to-integer');\nvar aNumberValue = require('./_a-number-value');\nvar repeat = require('./_string-repeat');\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n var i = -1;\n var c2 = c;\n while (++i < 6) {\n c2 += n * data[i];\n data[i] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\nvar divide = function (n) {\n var i = 6;\n var c = 0;\n while (--i >= 0) {\n c += data[i];\n data[i] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\nvar numToString = function () {\n var i = 6;\n var s = '';\n while (--i >= 0) {\n if (s !== '' || i === 0 || data[i] !== 0) {\n var t = String(data[i]);\n s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n }\n } return s;\n};\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !require('./_fails')(function () {\n // V8 ~ Android 4.3-\n $toFixed.call({});\n})), 'Number', {\n toFixed: function toFixed(fractionDigits) {\n var x = aNumberValue(this, ERROR);\n var f = toInteger(fractionDigits);\n var s = '';\n var m = ZERO;\n var e, z, j, k;\n if (f < 0 || f > 20) throw RangeError(ERROR);\n // eslint-disable-next-line no-self-compare\n if (x != x) return 'NaN';\n if (x <= -1e21 || x >= 1e21) return String(x);\n if (x < 0) {\n s = '-';\n x = -x;\n }\n if (x > 1e-21) {\n e = log(x * pow(2, 69, 1)) - 69;\n z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = f;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n m = numToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n m = numToString() + repeat.call(ZERO, f);\n }\n }\n if (f > 0) {\n k = m.length;\n m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n } else {\n m = s + m;\n } return m;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $fails = require('./_fails');\nvar aNumberValue = require('./_a-number-value');\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n // IE7-\n return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n // V8 ~ Android 4.3-\n $toPrecision.call({});\n})), 'Number', {\n toPrecision: function toPrecision(precision) {\n var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n }\n});\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","'use strict';\n// 21.1.3.25 String.prototype.trim()\nrequire('./_string-trim')('trim', function ($trim) {\n return function trim() {\n return $trim(this, 3);\n };\n});\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n","'use strict';\n// B.2.3.3 String.prototype.big()\nrequire('./_string-html')('big', function (createHTML) {\n return function big() {\n return createHTML(this, 'big', '', '');\n };\n});\n","'use strict';\n// B.2.3.4 String.prototype.blink()\nrequire('./_string-html')('blink', function (createHTML) {\n return function blink() {\n return createHTML(this, 'blink', '', '');\n };\n});\n","'use strict';\n// B.2.3.5 String.prototype.bold()\nrequire('./_string-html')('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n","'use strict';\n// B.2.3.6 String.prototype.fixed()\nrequire('./_string-html')('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n","'use strict';\n// B.2.3.7 String.prototype.fontcolor(color)\nrequire('./_string-html')('fontcolor', function (createHTML) {\n return function fontcolor(color) {\n return createHTML(this, 'font', 'color', color);\n };\n});\n","'use strict';\n// B.2.3.8 String.prototype.fontsize(size)\nrequire('./_string-html')('fontsize', function (createHTML) {\n return function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n };\n});\n","'use strict';\n// B.2.3.9 String.prototype.italics()\nrequire('./_string-html')('italics', function (createHTML) {\n return function italics() {\n return createHTML(this, 'i', '', '');\n };\n});\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n","'use strict';\n// B.2.3.12 String.prototype.strike()\nrequire('./_string-html')('strike', function (createHTML) {\n return function strike() {\n return createHTML(this, 'strike', '', '');\n };\n});\n","'use strict';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n","'use strict';\n// B.2.3.14 String.prototype.sup()\nrequire('./_string-html')('sup', function (createHTML) {\n return function sup() {\n return createHTML(this, 'sup', '', '');\n };\n});\n","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\n\n$export($export.P + $export.F * require('./_fails')(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n // eslint-disable-next-line no-unused-vars\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n","// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = require('./_export');\nvar toISOString = require('./_date-to-iso-string');\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n toISOString: toISOString\n});\n","'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = require('./_fails');\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var d = this;\n var y = d.getUTCFullYear();\n var m = d.getUTCMilliseconds();\n var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n","var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n require('./_redefine')(DateProto, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? $toString.call(this) : INVALID_DATE;\n });\n}\n","var TO_PRIMITIVE = require('./_wks')('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive'));\n","'use strict';\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\nvar NUMBER = 'number';\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');\n return toPrimitive(anObject(this), hint != NUMBER);\n};\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n","'use strict';\n// 22.1.3.13 Array.prototype.join(separator)\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar arrayJoin = [].join;\n\n// fallback for not array-like strings\n$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', {\n join: function join(separator) {\n return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar html = require('./_html');\nvar cof = require('./_cof');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * require('./_fails')(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = new Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $filter = require('./_array-methods')(2);\n\n$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {\n // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $every = require('./_array-methods')(4);\n\n$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', {\n // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {\n // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', {\n // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], true);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n var O = toIObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n }\n});\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","require('./_set-species')('Array');\n","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n re2[require('./_wks')('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\n","// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match) {\n // 21.1.3.11 String.prototype.match(regexp)\n return [function match(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n }, $match];\n});\n","// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace) {\n // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)\n return [function replace(searchValue, replaceValue) {\n 'use strict';\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n }, $replace];\n});\n","// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search) {\n // 21.1.3.15 String.prototype.search(regexp)\n return [function search(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n }, $search];\n});\n","// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split) {\n 'use strict';\n var isRegExp = require('./_is-regexp');\n var _split = $split;\n var $push = [].push;\n var $SPLIT = 'split';\n var LENGTH = 'length';\n var LAST_INDEX = 'lastIndex';\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group\n // based on es5-shim implementation, need to rework it\n $split = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return _split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var separator2, match, lastIndex, lastLength, i;\n // Doesn't need flags gy, but they don't hurt\n if (!NPCG) separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\\\s)', flags);\n while (match = separatorCopy.exec(string)) {\n // `separatorCopy.lastIndex` is not reliable cross-browser\n lastIndex = match.index + match[0][LENGTH];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG\n // eslint-disable-next-line no-loop-func\n if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function () {\n for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined;\n });\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n $split = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);\n };\n }\n // 21.1.3.17 String.prototype.split(separator, limit)\n return [function split(separator, limit) {\n var O = defined(this);\n var fn = separator == undefined ? undefined : separator[SPLIT];\n return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);\n }, $split];\n});\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var fin = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < fin) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n DataView: require('./_typed-buffer').DataView\n});\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","'use strict';\n// 26.1.5 Reflect.enumerate(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar Enumerate = function (iterated) {\n this._t = anObject(iterated); // target\n this._i = 0; // next index\n var keys = this._k = []; // keys\n var key;\n for (key in iterated) keys.push(key);\n};\nrequire('./_iter-create')(Enumerate, 'Object', function () {\n var that = this;\n var keys = that._k;\n var key;\n do {\n if (that._i >= keys.length) return { value: undefined, done: true };\n } while (!((key = keys[that._i++]) in that._t));\n return { value: key, done: false };\n});\n\n$export($export.S, 'Reflect', {\n enumerate: function enumerate(target) {\n return new Enumerate(target);\n }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n if (existingDescriptor = gOPD.f(receiver, propertyKey)) {\n if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n } else dP.f(receiver, propertyKey, createDesc(0, V));\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar aFunction = require('./_a-function');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen, A;\n aFunction(callbackfn);\n sourceLen = toLength(O.length);\n A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatMap');\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatten\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatten: function flatten(/* depthArg = 1 */) {\n var depthArg = arguments[0];\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatten');\n","'use strict';\n// https://github.com/mathiasbynens/String.prototype.at\nvar $export = require('./_export');\nvar $at = require('./_string-at')(true);\n\n$export($export.P, 'String', {\n at: function at(pos) {\n return $at(this, pos);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\n$export($export.P + $export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(userAgent), 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\n$export($export.P + $export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(userAgent), 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimLeft', function ($trim) {\n return function trimLeft() {\n return $trim(this, 1);\n };\n}, 'trimStart');\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimRight', function ($trim) {\n return function trimRight() {\n return $trim(this, 2);\n };\n}, 'trimEnd');\n","'use strict';\n// https://tc39.github.io/String.prototype.matchAll/\nvar $export = require('./_export');\nvar defined = require('./_defined');\nvar toLength = require('./_to-length');\nvar isRegExp = require('./_is-regexp');\nvar getFlags = require('./_flags');\nvar RegExpProto = RegExp.prototype;\n\nvar $RegExpStringIterator = function (regexp, string) {\n this._r = regexp;\n this._s = string;\n};\n\nrequire('./_iter-create')($RegExpStringIterator, 'RegExp String', function next() {\n var match = this._r.exec(this._s);\n return { value: match, done: match === null };\n});\n\n$export($export.P, 'String', {\n matchAll: function matchAll(regexp) {\n defined(this);\n if (!isRegExp(regexp)) throw TypeError(regexp + ' is not a regexp!');\n var S = String(this);\n var flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp);\n var rx = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags);\n rx.lastIndex = toLength(regexp.lastIndex);\n return new $RegExpStringIterator(rx, S);\n }\n});\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar aFunction = require('./_a-function');\nvar $defineProperty = require('./_object-dp');\n\n// B.2.2.2 Object.prototype.__defineGetter__(P, getter)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __defineGetter__: function __defineGetter__(P, getter) {\n $defineProperty.f(toObject(this), P, { get: aFunction(getter), enumerable: true, configurable: true });\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar aFunction = require('./_a-function');\nvar $defineProperty = require('./_object-dp');\n\n// B.2.2.3 Object.prototype.__defineSetter__(P, setter)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __defineSetter__: function __defineSetter__(P, setter) {\n $defineProperty.f(toObject(this), P, { set: aFunction(setter), enumerable: true, configurable: true });\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\nvar getPrototypeOf = require('./_object-gpo');\nvar getOwnPropertyDescriptor = require('./_object-gopd').f;\n\n// B.2.2.4 Object.prototype.__lookupGetter__(P)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __lookupGetter__: function __lookupGetter__(P) {\n var O = toObject(this);\n var K = toPrimitive(P, true);\n var D;\n do {\n if (D = getOwnPropertyDescriptor(O, K)) return D.get;\n } while (O = getPrototypeOf(O));\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\nvar getPrototypeOf = require('./_object-gpo');\nvar getOwnPropertyDescriptor = require('./_object-gopd').f;\n\n// B.2.2.5 Object.prototype.__lookupSetter__(P)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __lookupSetter__: function __lookupSetter__(P) {\n var O = toObject(this);\n var K = toPrimitive(P, true);\n var D;\n do {\n if (D = getOwnPropertyDescriptor(O, K)) return D.set;\n } while (O = getPrototypeOf(O));\n }\n});\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Map', { toJSON: require('./_collection-to-json')('Map') });\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Set', { toJSON: require('./_collection-to-json')('Set') });\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\nrequire('./_set-collection-of')('Map');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\nrequire('./_set-collection-of')('Set');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of\nrequire('./_set-collection-of')('WeakMap');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of\nrequire('./_set-collection-of')('WeakSet');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\nrequire('./_set-collection-from')('Map');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\nrequire('./_set-collection-from')('Set');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from\nrequire('./_set-collection-from')('WeakMap');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from\nrequire('./_set-collection-from')('WeakSet');\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.G, { global: require('./_global') });\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.S, 'System', { global: require('./_global') });\n","// https://github.com/ljharb/proposal-is-error\nvar $export = require('./_export');\nvar cof = require('./_cof');\n\n$export($export.S, 'Error', {\n isError: function isError(it) {\n return cof(it) === 'Error';\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clamp: function clamp(x, lower, upper) {\n return Math.min(upper, Math.max(lower, x));\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { DEG_PER_RAD: Math.PI / 180 });\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar RAD_PER_DEG = 180 / Math.PI;\n\n$export($export.S, 'Math', {\n degrees: function degrees(radians) {\n return radians * RAD_PER_DEG;\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar scale = require('./_math-scale');\nvar fround = require('./_math-fround');\n\n$export($export.S, 'Math', {\n fscale: function fscale(x, inLow, inHigh, outLow, outHigh) {\n return fround(scale(x, inLow, inHigh, outLow, outHigh));\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n iaddh: function iaddh(x0, x1, y0, y1) {\n var $x0 = x0 >>> 0;\n var $x1 = x1 >>> 0;\n var $y0 = y0 >>> 0;\n return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n isubh: function isubh(x0, x1, y0, y1) {\n var $x0 = x0 >>> 0;\n var $x1 = x1 >>> 0;\n var $y0 = y0 >>> 0;\n return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n imulh: function imulh(u, v) {\n var UINT16 = 0xffff;\n var $u = +u;\n var $v = +v;\n var u0 = $u & UINT16;\n var v0 = $v & UINT16;\n var u1 = $u >> 16;\n var v1 = $v >> 16;\n var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { RAD_PER_DEG: 180 / Math.PI });\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar DEG_PER_RAD = Math.PI / 180;\n\n$export($export.S, 'Math', {\n radians: function radians(degrees) {\n return degrees * DEG_PER_RAD;\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { scale: require('./_math-scale') });\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n umulh: function umulh(u, v) {\n var UINT16 = 0xffff;\n var $u = +u;\n var $v = +v;\n var u0 = $u & UINT16;\n var v0 = $v & UINT16;\n var u1 = $u >>> 16;\n var v1 = $v >>> 16;\n var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);\n }\n});\n","// http://jfbastien.github.io/papers/Math.signbit.html\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { signbit: function signbit(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) != x ? x : x == 0 ? 1 / x == Infinity : x > 0;\n} });\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar ordinaryDefineOwnMetadata = metadata.set;\n\nmetadata.exp({ defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey) {\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar getOrCreateMetadataMap = metadata.map;\nvar store = metadata.store;\n\nmetadata.exp({ deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]);\n var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);\n if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;\n if (metadataMap.size) return true;\n var targetMetadata = store.get(target);\n targetMetadata['delete'](targetKey);\n return !!targetMetadata.size || store['delete'](target);\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nvar ordinaryGetMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;\n};\n\nmetadata.exp({ getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var Set = require('./es6.set');\nvar from = require('./_array-from-iterable');\nvar metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nvar ordinaryMetadataKeys = function (O, P) {\n var oKeys = ordinaryOwnMetadataKeys(O, P);\n var parent = getPrototypeOf(O);\n if (parent === null) return oKeys;\n var pKeys = ordinaryMetadataKeys(parent, P);\n return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;\n};\n\nmetadata.exp({ getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {\n return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {\n return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nvar ordinaryHasMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return true;\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;\n};\n\nmetadata.exp({ hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var $metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar toMetaKey = $metadata.key;\nvar ordinaryDefineOwnMetadata = $metadata.set;\n\n$metadata.exp({ metadata: function metadata(metadataKey, metadataValue) {\n return function decorator(target, targetKey) {\n ordinaryDefineOwnMetadata(\n metadataKey, metadataValue,\n (targetKey !== undefined ? anObject : aFunction)(target),\n toMetaKey(targetKey)\n );\n };\n} });\n","// https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-25.md#510-globalasap-for-enqueuing-a-microtask\nvar $export = require('./_export');\nvar microtask = require('./_microtask')();\nvar process = require('./_global').process;\nvar isNode = require('./_cof')(process) == 'process';\n\n$export($export.G, {\n asap: function asap(fn) {\n var domain = isNode && process.domain;\n microtask(domain ? domain.bind(fn) : fn);\n }\n});\n","'use strict';\n// https://github.com/zenparsing/es-observable\nvar $export = require('./_export');\nvar global = require('./_global');\nvar core = require('./_core');\nvar microtask = require('./_microtask')();\nvar OBSERVABLE = require('./_wks')('observable');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar anInstance = require('./_an-instance');\nvar redefineAll = require('./_redefine-all');\nvar hide = require('./_hide');\nvar forOf = require('./_for-of');\nvar RETURN = forOf.RETURN;\n\nvar getMethod = function (fn) {\n return fn == null ? undefined : aFunction(fn);\n};\n\nvar cleanupSubscription = function (subscription) {\n var cleanup = subscription._c;\n if (cleanup) {\n subscription._c = undefined;\n cleanup();\n }\n};\n\nvar subscriptionClosed = function (subscription) {\n return subscription._o === undefined;\n};\n\nvar closeSubscription = function (subscription) {\n if (!subscriptionClosed(subscription)) {\n subscription._o = undefined;\n cleanupSubscription(subscription);\n }\n};\n\nvar Subscription = function (observer, subscriber) {\n anObject(observer);\n this._c = undefined;\n this._o = observer;\n observer = new SubscriptionObserver(this);\n try {\n var cleanup = subscriber(observer);\n var subscription = cleanup;\n if (cleanup != null) {\n if (typeof cleanup.unsubscribe === 'function') cleanup = function () { subscription.unsubscribe(); };\n else aFunction(cleanup);\n this._c = cleanup;\n }\n } catch (e) {\n observer.error(e);\n return;\n } if (subscriptionClosed(this)) cleanupSubscription(this);\n};\n\nSubscription.prototype = redefineAll({}, {\n unsubscribe: function unsubscribe() { closeSubscription(this); }\n});\n\nvar SubscriptionObserver = function (subscription) {\n this._s = subscription;\n};\n\nSubscriptionObserver.prototype = redefineAll({}, {\n next: function next(value) {\n var subscription = this._s;\n if (!subscriptionClosed(subscription)) {\n var observer = subscription._o;\n try {\n var m = getMethod(observer.next);\n if (m) return m.call(observer, value);\n } catch (e) {\n try {\n closeSubscription(subscription);\n } finally {\n throw e;\n }\n }\n }\n },\n error: function error(value) {\n var subscription = this._s;\n if (subscriptionClosed(subscription)) throw value;\n var observer = subscription._o;\n subscription._o = undefined;\n try {\n var m = getMethod(observer.error);\n if (!m) throw value;\n value = m.call(observer, value);\n } catch (e) {\n try {\n cleanupSubscription(subscription);\n } finally {\n throw e;\n }\n } cleanupSubscription(subscription);\n return value;\n },\n complete: function complete(value) {\n var subscription = this._s;\n if (!subscriptionClosed(subscription)) {\n var observer = subscription._o;\n subscription._o = undefined;\n try {\n var m = getMethod(observer.complete);\n value = m ? m.call(observer, value) : undefined;\n } catch (e) {\n try {\n cleanupSubscription(subscription);\n } finally {\n throw e;\n }\n } cleanupSubscription(subscription);\n return value;\n }\n }\n});\n\nvar $Observable = function Observable(subscriber) {\n anInstance(this, $Observable, 'Observable', '_f')._f = aFunction(subscriber);\n};\n\nredefineAll($Observable.prototype, {\n subscribe: function subscribe(observer) {\n return new Subscription(observer, this._f);\n },\n forEach: function forEach(fn) {\n var that = this;\n return new (core.Promise || global.Promise)(function (resolve, reject) {\n aFunction(fn);\n var subscription = that.subscribe({\n next: function (value) {\n try {\n return fn(value);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n }\n});\n\nredefineAll($Observable, {\n from: function from(x) {\n var C = typeof this === 'function' ? this : $Observable;\n var method = getMethod(anObject(x)[OBSERVABLE]);\n if (method) {\n var observable = anObject(method.call(x));\n return observable.constructor === C ? observable : new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n return new C(function (observer) {\n var done = false;\n microtask(function () {\n if (!done) {\n try {\n if (forOf(x, false, function (it) {\n observer.next(it);\n if (done) return RETURN;\n }) === RETURN) return;\n } catch (e) {\n if (done) throw e;\n observer.error(e);\n return;\n } observer.complete();\n }\n });\n return function () { done = true; };\n });\n },\n of: function of() {\n for (var i = 0, l = arguments.length, items = new Array(l); i < l;) items[i] = arguments[i++];\n return new (typeof this === 'function' ? this : $Observable)(function (observer) {\n var done = false;\n microtask(function () {\n if (!done) {\n for (var j = 0; j < items.length; ++j) {\n observer.next(items[j]);\n if (done) return;\n } observer.complete();\n }\n });\n return function () { done = true; };\n });\n }\n});\n\nhide($Observable.prototype, OBSERVABLE, function () { return this; });\n\n$export($export.G, { Observable: $Observable });\n\nrequire('./_set-species')('Observable');\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar userAgent = require('./_user-agent');\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n if (typeof global.process === \"object\" && global.process.domain) {\n invoke = global.process.domain.bind(invoke);\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // Among the various tricks for obtaining a reference to the global\n // object, this seems to be the most reliable technique that does not\n // use indirect eval (which violates Content Security Policy).\n typeof global === \"object\" ? global :\n typeof window === \"object\" ? window :\n typeof self === \"object\" ? self : this\n);\n","require('../../modules/core.regexp.escape');\nmodule.exports = require('../../modules/_core').RegExp.escape;\n","// https://github.com/benjamingr/RexExp.escape\nvar $export = require('./_export');\nvar $re = require('./_replacer')(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\n$export($export.S, 'RegExp', { escape: function escape(it) { return $re(it); } });\n","module.exports = function (regExp, replace) {\n var replacer = replace === Object(replace) ? function (part) {\n return replace[part];\n } : replace;\n return function (it) {\n return String(it).replace(regExp, replacer);\n };\n};\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// Require common CSS here; this will make webpack process it into bundle.css.\n// Our own CSS (which is themed) is imported via separate webpack entry points\n// in webpack.config.js\nrequire('gemini-scrollbar/gemini-scrollbar.css');\nrequire('gfm.css/gfm.css');\nrequire('highlight.js/styles/github.css');\nrequire('draft-js/dist/Draft.css');\n\nimport './rageshakesetup';\n\nimport React from 'react';\n// add React and ReactPerf to the global namespace, to make them easier to\n// access via the console\nglobal.React = React;\nif (process.env.NODE_ENV !== 'production') {\n global.Perf = require('react-addons-perf');\n}\n\nimport './modernizr';\nimport ReactDOM from 'react-dom';\nimport sdk from 'matrix-react-sdk';\nimport PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg';\nsdk.loadSkin(require('../component-index'));\nimport VectorConferenceHandler from 'matrix-react-sdk/lib/VectorConferenceHandler';\nimport Promise from 'bluebird';\nimport request from 'browser-request';\nimport * as languageHandler from 'matrix-react-sdk/lib/languageHandler';\n\nimport url from 'url';\n\nimport {parseQs, parseQsFromFragment} from './url_utils';\n\nimport ElectronPlatform from './platform/ElectronPlatform';\nimport WebPlatform from './platform/WebPlatform';\n\nimport MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg';\nimport SettingsStore from \"matrix-react-sdk/lib/settings/SettingsStore\";\nimport Tinter from 'matrix-react-sdk/lib/Tinter';\nimport SdkConfig from \"matrix-react-sdk/lib/SdkConfig\";\n\nimport Olm from 'olm';\n\nimport CallHandler from 'matrix-react-sdk/lib/CallHandler';\n\nimport {getVectorConfig} from './getconfig';\n\nlet lastLocationHashSet = null;\n\n// Disable warnings for now: we use deprecated bluebird functions\n// and need to migrate, but they spam the console with warnings.\nPromise.config({warnings: false});\n\nfunction checkBrowserFeatures(featureList) {\n if (!window.Modernizr) {\n console.error(\"Cannot check features - Modernizr global is missing.\");\n return false;\n }\n let featureComplete = true;\n for (let i = 0; i < featureList.length; i++) {\n if (window.Modernizr[featureList[i]] === undefined) {\n console.error(\n \"Looked for feature '%s' but Modernizr has no results for this. \" +\n \"Has it been configured correctly?\", featureList[i],\n );\n return false;\n }\n if (window.Modernizr[featureList[i]] === false) {\n console.error(\"Browser missing feature: '%s'\", featureList[i]);\n // toggle flag rather than return early so we log all missing features\n // rather than just the first.\n featureComplete = false;\n }\n }\n return featureComplete;\n}\n\n// Parse the given window.location and return parameters that can be used when calling\n// MatrixChat.showScreen(screen, params)\nfunction getScreenFromLocation(location) {\n const fragparts = parseQsFromFragment(location);\n return {\n screen: fragparts.location.substring(1),\n params: fragparts.params,\n };\n}\n\n// Here, we do some crude URL analysis to allow\n// deep-linking.\nfunction routeUrl(location) {\n if (!window.matrixChat) return;\n\n console.log(\"Routing URL \", location.href);\n const s = getScreenFromLocation(location);\n window.matrixChat.showScreen(s.screen, s.params);\n}\n\nfunction onHashChange(ev) {\n if (decodeURIComponent(window.location.hash) == lastLocationHashSet) {\n // we just set this: no need to route it!\n return;\n }\n routeUrl(window.location);\n}\n\n// This will be called whenever the SDK changes screens,\n// so a web page can update the URL bar appropriately.\nfunction onNewScreen(screen) {\n console.log(\"newscreen \"+screen);\n const hash = '#/' + screen;\n lastLocationHashSet = hash;\n window.location.hash = hash;\n}\n\n// We use this to work out what URL the SDK should\n// pass through when registering to allow the user to\n// click back to the client having registered.\n// It's up to us to recognise if we're loaded with\n// this URL and tell MatrixClient to resume registration.\n//\n// If we're in electron, we should never pass through a file:// URL otherwise\n// the identity server will try to 302 the browser to it, which breaks horribly.\n// so in that instance, hardcode to use riot.im/app for now instead.\nfunction makeRegistrationUrl(params) {\n let url;\n if (window.location.protocol === \"file:\") {\n url = 'https://riot.im/app/#/register';\n } else {\n url = (\n window.location.protocol + '//' +\n window.location.host +\n window.location.pathname +\n '#/register'\n );\n }\n\n const keys = Object.keys(params);\n for (let i = 0; i < keys.length; ++i) {\n if (i == 0) {\n url += '?';\n } else {\n url += '&';\n }\n const k = keys[i];\n url += k + '=' + encodeURIComponent(params[k]);\n }\n return url;\n}\n\nexport function getConfig(configJsonFilename) {\n return new Promise(function(resolve, reject) {\n request(\n { method: \"GET\", url: configJsonFilename },\n (err, response, body) => {\n if (err || response.status < 200 || response.status >= 300) {\n // Lack of a config isn't an error, we should\n // just use the defaults.\n // Also treat a blank config as no config, assuming\n // the status code is 0, because we don't get 404s\n // from file: URIs so this is the only way we can\n // not fail if the file doesn't exist when loading\n // from a file:// URI.\n if (response) {\n if (response.status == 404 || (response.status == 0 && body == '')) {\n resolve({});\n }\n }\n reject({err: err, response: response});\n return;\n }\n\n // We parse the JSON ourselves rather than use the JSON\n // parameter, since this throws a parse error on empty\n // which breaks if there's no config.json and we're\n // loading from the filesystem (see above).\n resolve(JSON.parse(body));\n },\n );\n });\n}\n\nfunction onTokenLoginCompleted() {\n // if we did a token login, we're now left with the token, hs and is\n // url as query params in the url; a little nasty but let's redirect to\n // clear them.\n const parsedUrl = url.parse(window.location.href);\n parsedUrl.search = \"\";\n const formatted = url.format(parsedUrl);\n console.log(\"Redirecting to \" + formatted + \" to drop loginToken \" +\n \"from queryparams\");\n window.location.href = formatted;\n}\n\nasync function loadApp() {\n if (window.vector_indexeddb_worker_script === undefined) {\n // If this is missing, something has probably gone wrong with\n // the bundling. The js-sdk will just fall back to accessing\n // indexeddb directly with no worker script, but we want to\n // make sure the indexeddb script is present, so fail hard.\n throw new Error(\"Missing indexeddb worker script!\");\n }\n MatrixClientPeg.setIndexedDbWorkerScript(window.vector_indexeddb_worker_script);\n CallHandler.setConferenceHandler(VectorConferenceHandler);\n\n window.addEventListener('hashchange', onHashChange);\n\n await loadOlm();\n\n await loadLanguage();\n\n const fragparts = parseQsFromFragment(window.location);\n const params = parseQs(window.location);\n\n // set the platform for react sdk\n if (window.ipcRenderer) {\n console.log(\"Using Electron platform\");\n const plaf = new ElectronPlatform();\n PlatformPeg.set(plaf);\n\n // Electron only: see if we need to do a one-time data\n // migration\n if (window.localStorage.getItem('mx_user_id') === null) {\n console.log(\"Migrating session from old origin...\");\n await plaf.migrateFromOldOrigin();\n console.log(\"Origin migration complete\");\n }\n } else {\n console.log(\"Using Web platform\");\n PlatformPeg.set(new WebPlatform());\n }\n\n // Load the config file. First try to load up a domain-specific config of the\n // form \"config.$domain.json\" and if that fails, fall back to config.json.\n let configJson;\n let configError;\n try {\n configJson = await getVectorConfig();\n } catch (e) {\n configError = e;\n }\n\n // XXX: We call this twice, once here and once in MatrixChat as a prop. We call it here to ensure\n // granular settings are loaded correctly and to avoid duplicating the override logic for the theme.\n SdkConfig.put(configJson);\n\n // don't try to redirect to the native apps if we're\n // verifying a 3pid (but after we've loaded the config)\n // or if the user is following a deep link\n // (https://github.com/vector-im/riot-web/issues/7378)\n const preventRedirect = fragparts.params.client_secret || fragparts.location.length > 0;\n\n if (!preventRedirect) {\n const isIos = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n const isAndroid = /Android/.test(navigator.userAgent);\n if (isIos || isAndroid) {\n if (!document.cookie.split(';').some((c) => c.startsWith('mobile_redirect_to_guide'))) {\n window.location = \"mobile_guide/\";\n return;\n }\n }\n }\n\n // as quickly as we possibly can, set a default theme...\n let a;\n const theme = SettingsStore.getValue(\"theme\");\n for (let i = 0; (a = document.getElementsByTagName(\"link\")[i]); i++) {\n const href = a.getAttribute(\"href\");\n if (!href) continue;\n // shouldn't we be using the 'title' tag rather than the href?\n const match = href.match(/^bundles\\/.*\\/theme-(.*)\\.css$/);\n if (match) {\n if (match[1] === theme) {\n // remove the disabled flag off the stylesheet\n\n // Firefox requires setting the attribute to false, so do\n // that instead of removing it. Related:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1281135\n a.disabled = false;\n\n // in case the Tinter.tint() in MatrixChat fires before the\n // CSS has actually loaded (which in practice happens)...\n\n // This if fixes Tinter.setTheme to not fire on Firefox\n // in case it is the first time loading Riot.\n // `InstallTrigger` is a Object which only exists on Firefox\n // (it is used for their Plugins) and can be used as a\n // feature check.\n // Firefox loads css always before js. This is why we dont use\n // onload or it's EventListener as thoose will never trigger.\n if (typeof InstallTrigger !== 'undefined') {\n Tinter.setTheme(theme);\n } else {\n // FIXME: we should probably block loading the app or even\n // showing a spinner until the theme is loaded, to avoid\n // flashes of unstyled content.\n a.onload = () => {\n Tinter.setTheme(theme);\n };\n }\n } else {\n // Firefox requires this to not be done via `setAttribute`\n // or via HTML.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1281135\n a.disabled = true;\n }\n }\n }\n\n const validBrowser = checkBrowserFeatures([\n \"displaytable\", \"flexbox\", \"es5object\", \"es5function\", \"localstorage\",\n \"objectfit\", \"indexeddb\", \"webworkers\",\n ]);\n\n const acceptInvalidBrowser = window.localStorage && window.localStorage.getItem('mx_accepts_unsupported_browser');\n\n console.log(\"Vector starting at \"+window.location);\n if (configError) {\n window.matrixChat = ReactDOM.render(<div className=\"error\">\n Unable to load config file: please refresh the page to try again.\n </div>, document.getElementById('matrixchat'));\n } else if (validBrowser || acceptInvalidBrowser) {\n const platform = PlatformPeg.get();\n platform.startUpdater();\n\n const MatrixChat = sdk.getComponent('structures.MatrixChat');\n window.matrixChat = ReactDOM.render(\n <MatrixChat\n onNewScreen={onNewScreen}\n makeRegistrationUrl={makeRegistrationUrl}\n ConferenceHandler={VectorConferenceHandler}\n config={configJson}\n realQueryParams={params}\n startingFragmentQueryParams={fragparts.params}\n enableGuest={!configJson.disable_guests}\n onTokenLoginCompleted={onTokenLoginCompleted}\n initialScreenAfterLogin={getScreenFromLocation(window.location)}\n defaultDeviceDisplayName={platform.getDefaultDeviceDisplayName()}\n />,\n document.getElementById('matrixchat'),\n );\n } else {\n console.error(\"Browser is missing required features.\");\n // take to a different landing page to AWOOOOOGA at the user\n const CompatibilityPage = sdk.getComponent(\"structures.CompatibilityPage\");\n window.matrixChat = ReactDOM.render(\n <CompatibilityPage onAccept={function() {\n if (window.localStorage) window.localStorage.setItem('mx_accepts_unsupported_browser', true);\n console.log(\"User accepts the compatibility risks.\");\n loadApp();\n }} />,\n document.getElementById('matrixchat'),\n );\n }\n}\n\nfunction loadOlm() {\n /* Load Olm. We try the WebAssembly version first, and then the legacy,\n * asm.js version if that fails. For this reason we need to wait for this\n * to finish before continuing to load the rest of the app. In future\n * we could somehow pass a promise down to react-sdk and have it wait on\n * that so olm can be loading in parallel with the rest of the app.\n *\n * We also need to tell the Olm js to look for its wasm file at the same\n * level as index.html. It really should be in the same place as the js,\n * ie. in the bundle directory, to avoid caching issues, but as far as I\n * can tell this is completely impossible with webpack.\n */\n return Olm.init({\n locateFile: () => 'olm.wasm',\n }).then(() => {\n console.log(\"Using WebAssembly Olm\");\n }).catch((e) => {\n console.log(\"Failed to load Olm: trying legacy version\");\n return new Promise((resolve, reject) => {\n const s = document.createElement('script');\n s.src = 'olm_legacy.js';\n s.onload = resolve;\n s.onerror = reject;\n document.body.appendChild(s);\n }).then(() => {\n // Init window.Olm, ie. the one just loaded by the script tag,\n // not 'Olm' which is still the failed wasm version.\n return window.Olm.init();\n }).then(() => {\n console.log(\"Using legacy Olm\");\n }).catch((e) => {\n console.log(\"Both WebAssembly and asm.js Olm failed!\", e);\n });\n });\n}\n\nasync function loadLanguage() {\n const prefLang = SettingsStore.getValue(\"language\", null, /*excludeDefault=*/true);\n let langs = [];\n\n if (!prefLang) {\n languageHandler.getLanguagesFromBrowser().forEach((l) => {\n langs.push(...languageHandler.getNormalizedLanguageKeys(l));\n });\n } else {\n langs = [prefLang];\n }\n try {\n await languageHandler.setLanguage(langs);\n document.documentElement.setAttribute(\"lang\", languageHandler.getCurrentLanguage());\n } catch (e) {\n console.error(\"Unable to set language\", e);\n }\n}\n\nloadApp();\n","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/*\n * Separate file that sets up rageshake logging when imported.\n * This is necessary so that rageshake logging is set up before\n * anything else. Webpack puts all import statements at the top\n * of the file before any code, so imports will always be\n * evaluated first. Other imports can cause other code to be\n * evaluated (eg. the loglevel library in js-sdk, which if set\n * up before rageshake causes some js-sdk logging to be missing\n * from the rageshake.)\n */\n\nimport rageshake from \"matrix-react-sdk/lib/rageshake/rageshake\";\nimport SdkConfig from \"matrix-react-sdk/lib/SdkConfig\";\n\nfunction initRageshake() {\n rageshake.init().then(() => {\n console.log(\"Initialised rageshake.\");\n console.log(\"To fix line numbers in Chrome: \" +\n \"Meatball menu → Settings → Blackboxing → Add /rageshake\\\\.js$\");\n\n window.addEventListener('beforeunload', (e) => {\n console.log('riot-web closing');\n // try to flush the logs to indexeddb\n rageshake.flush();\n });\n\n rageshake.cleanup();\n }, (err) => {\n console.error(\"Failed to initialise rageshake: \" + err);\n });\n}\n\ninitRageshake();\n\nglobal.mxSendRageshake = function(text, withLogs) {\n if (withLogs === undefined) withLogs = true;\n require(['matrix-react-sdk/lib/rageshake/submit-rageshake'], (s) => {\n s(SdkConfig.get().bug_report_endpoint_url, {\n userText: text,\n sendLogs: withLogs,\n progressCallback: console.log.bind(console),\n }).then(() => {\n console.log(\"Bug report sent!\");\n }, (err) => {\n console.error(err);\n });\n });\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = lowPriorityWarning;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar PooledClass = require('./PooledClass');\nvar ReactElement = require('./ReactElement');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar traverseAllChildren = require('./traverseAllChildren');\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\nvar fourArgumentPooler = PooledClass.fourArgumentPooler;\n\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * traversal. Allows avoiding binding callbacks.\n *\n * @constructor ForEachBookKeeping\n * @param {!function} forEachFunction Function to perform traversal with.\n * @param {?*} forEachContext Context to perform context with.\n */\nfunction ForEachBookKeeping(forEachFunction, forEachContext) {\n this.func = forEachFunction;\n this.context = forEachContext;\n this.count = 0;\n}\nForEachBookKeeping.prototype.destructor = function () {\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\n\nfunction forEachSingleChild(bookKeeping, child, name) {\n var func = bookKeeping.func,\n context = bookKeeping.context;\n\n func.call(context, child, bookKeeping.count++);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n ForEachBookKeeping.release(traverseContext);\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * mapping. Allows avoiding binding callbacks.\n *\n * @constructor MapBookKeeping\n * @param {!*} mapResult Object containing the ordered map of results.\n * @param {!function} mapFunction Function to perform mapping with.\n * @param {?*} mapContext Context to perform mapping with.\n */\nfunction MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {\n this.result = mapResult;\n this.keyPrefix = keyPrefix;\n this.func = mapFunction;\n this.context = mapContext;\n this.count = 0;\n}\nMapBookKeeping.prototype.destructor = function () {\n this.result = null;\n this.keyPrefix = null;\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);\n\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n var result = bookKeeping.result,\n keyPrefix = bookKeeping.keyPrefix,\n func = bookKeeping.func,\n context = bookKeeping.context;\n\n\n var mappedChild = func.call(context, child, bookKeeping.count++);\n if (Array.isArray(mappedChild)) {\n mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\n } else if (mappedChild != null) {\n if (ReactElement.isValidElement(mappedChild)) {\n mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,\n // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\n }\n result.push(mappedChild);\n }\n}\n\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n var escapedPrefix = '';\n if (prefix != null) {\n escapedPrefix = escapeUserProvidedKey(prefix) + '/';\n }\n var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n MapBookKeeping.release(traverseContext);\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n return result;\n}\n\nfunction forEachSingleChildDummy(traverseContext, child, name) {\n return null;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n return traverseAllChildren(children, forEachSingleChildDummy, null);\n}\n\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray\n */\nfunction toArray(children) {\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\n return result;\n}\n\nvar ReactChildren = {\n forEach: forEachChildren,\n map: mapChildren,\n mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,\n count: countChildren,\n toArray: toArray\n};\n\nmodule.exports = ReactChildren;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function (instance) {\n var Klass = this;\n !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar getIteratorFn = require('./getIteratorFn');\nvar invariant = require('fbjs/lib/invariant');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar warning = require('fbjs/lib/warning');\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (process.env.NODE_ENV !== 'production') {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = \" It looks like you're using an element created by a different \" + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactElement = require('./ReactElement');\n\n/**\n * Create a factory that creates HTML tag elements.\n *\n * @private\n */\nvar createDOMFactory = ReactElement.createFactory;\nif (process.env.NODE_ENV !== 'production') {\n var ReactElementValidator = require('./ReactElementValidator');\n createDOMFactory = ReactElementValidator.createFactory;\n}\n\n/**\n * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\n *\n * @public\n */\nvar ReactDOMFactories = {\n a: createDOMFactory('a'),\n abbr: createDOMFactory('abbr'),\n address: createDOMFactory('address'),\n area: createDOMFactory('area'),\n article: createDOMFactory('article'),\n aside: createDOMFactory('aside'),\n audio: createDOMFactory('audio'),\n b: createDOMFactory('b'),\n base: createDOMFactory('base'),\n bdi: createDOMFactory('bdi'),\n bdo: createDOMFactory('bdo'),\n big: createDOMFactory('big'),\n blockquote: createDOMFactory('blockquote'),\n body: createDOMFactory('body'),\n br: createDOMFactory('br'),\n button: createDOMFactory('button'),\n canvas: createDOMFactory('canvas'),\n caption: createDOMFactory('caption'),\n cite: createDOMFactory('cite'),\n code: createDOMFactory('code'),\n col: createDOMFactory('col'),\n colgroup: createDOMFactory('colgroup'),\n data: createDOMFactory('data'),\n datalist: createDOMFactory('datalist'),\n dd: createDOMFactory('dd'),\n del: createDOMFactory('del'),\n details: createDOMFactory('details'),\n dfn: createDOMFactory('dfn'),\n dialog: createDOMFactory('dialog'),\n div: createDOMFactory('div'),\n dl: createDOMFactory('dl'),\n dt: createDOMFactory('dt'),\n em: createDOMFactory('em'),\n embed: createDOMFactory('embed'),\n fieldset: createDOMFactory('fieldset'),\n figcaption: createDOMFactory('figcaption'),\n figure: createDOMFactory('figure'),\n footer: createDOMFactory('footer'),\n form: createDOMFactory('form'),\n h1: createDOMFactory('h1'),\n h2: createDOMFactory('h2'),\n h3: createDOMFactory('h3'),\n h4: createDOMFactory('h4'),\n h5: createDOMFactory('h5'),\n h6: createDOMFactory('h6'),\n head: createDOMFactory('head'),\n header: createDOMFactory('header'),\n hgroup: createDOMFactory('hgroup'),\n hr: createDOMFactory('hr'),\n html: createDOMFactory('html'),\n i: createDOMFactory('i'),\n iframe: createDOMFactory('iframe'),\n img: createDOMFactory('img'),\n input: createDOMFactory('input'),\n ins: createDOMFactory('ins'),\n kbd: createDOMFactory('kbd'),\n keygen: createDOMFactory('keygen'),\n label: createDOMFactory('label'),\n legend: createDOMFactory('legend'),\n li: createDOMFactory('li'),\n link: createDOMFactory('link'),\n main: createDOMFactory('main'),\n map: createDOMFactory('map'),\n mark: createDOMFactory('mark'),\n menu: createDOMFactory('menu'),\n menuitem: createDOMFactory('menuitem'),\n meta: createDOMFactory('meta'),\n meter: createDOMFactory('meter'),\n nav: createDOMFactory('nav'),\n noscript: createDOMFactory('noscript'),\n object: createDOMFactory('object'),\n ol: createDOMFactory('ol'),\n optgroup: createDOMFactory('optgroup'),\n option: createDOMFactory('option'),\n output: createDOMFactory('output'),\n p: createDOMFactory('p'),\n param: createDOMFactory('param'),\n picture: createDOMFactory('picture'),\n pre: createDOMFactory('pre'),\n progress: createDOMFactory('progress'),\n q: createDOMFactory('q'),\n rp: createDOMFactory('rp'),\n rt: createDOMFactory('rt'),\n ruby: createDOMFactory('ruby'),\n s: createDOMFactory('s'),\n samp: createDOMFactory('samp'),\n script: createDOMFactory('script'),\n section: createDOMFactory('section'),\n select: createDOMFactory('select'),\n small: createDOMFactory('small'),\n source: createDOMFactory('source'),\n span: createDOMFactory('span'),\n strong: createDOMFactory('strong'),\n style: createDOMFactory('style'),\n sub: createDOMFactory('sub'),\n summary: createDOMFactory('summary'),\n sup: createDOMFactory('sup'),\n table: createDOMFactory('table'),\n tbody: createDOMFactory('tbody'),\n td: createDOMFactory('td'),\n textarea: createDOMFactory('textarea'),\n tfoot: createDOMFactory('tfoot'),\n th: createDOMFactory('th'),\n thead: createDOMFactory('thead'),\n time: createDOMFactory('time'),\n title: createDOMFactory('title'),\n tr: createDOMFactory('tr'),\n track: createDOMFactory('track'),\n u: createDOMFactory('u'),\n ul: createDOMFactory('ul'),\n 'var': createDOMFactory('var'),\n video: createDOMFactory('video'),\n wbr: createDOMFactory('wbr'),\n\n // SVG\n circle: createDOMFactory('circle'),\n clipPath: createDOMFactory('clipPath'),\n defs: createDOMFactory('defs'),\n ellipse: createDOMFactory('ellipse'),\n g: createDOMFactory('g'),\n image: createDOMFactory('image'),\n line: createDOMFactory('line'),\n linearGradient: createDOMFactory('linearGradient'),\n mask: createDOMFactory('mask'),\n path: createDOMFactory('path'),\n pattern: createDOMFactory('pattern'),\n polygon: createDOMFactory('polygon'),\n polyline: createDOMFactory('polyline'),\n radialGradient: createDOMFactory('radialGradient'),\n rect: createDOMFactory('rect'),\n stop: createDOMFactory('stop'),\n svg: createDOMFactory('svg'),\n text: createDOMFactory('text'),\n tspan: createDOMFactory('tspan')\n};\n\nmodule.exports = ReactDOMFactories;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _require = require('./ReactElement'),\n isValidElement = _require.isValidElement;\n\nvar factory = require('prop-types/factory');\n\nmodule.exports = factory(isValidElement);","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n )\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nmodule.exports = '15.6.2';","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _require = require('./ReactBaseClasses'),\n Component = _require.Component;\n\nvar _require2 = require('./ReactElement'),\n isValidElement = _require2.isValidElement;\n\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\nvar factory = require('create-react-class/factory');\n\nmodule.exports = factory(Component, isValidElement, ReactNoopUpdateQueue);","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar _invariant = require('fbjs/lib/invariant');\n\nif (process.env.NODE_ENV !== 'production') {\n var warning = require('fbjs/lib/warning');\n}\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (process.env.NODE_ENV !== 'production') {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n} else {\n ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n /**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n var injectedMixins = [];\n\n /**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return <div>Hello World</div>;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\n var ReactClassInterface = {\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return <div>Hello, {name}!</div>;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillMount`.\n *\n * @optional\n */\n UNSAFE_componentWillMount: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillReceiveProps`.\n *\n * @optional\n */\n UNSAFE_componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillUpdate`.\n *\n * @optional\n */\n UNSAFE_componentWillUpdate: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n };\n\n /**\n * Similar to ReactClassInterface but for static methods.\n */\n var ReactClassStaticInterface = {\n /**\n * This method is invoked after a component is instantiated and when it\n * receives new props. Return an object to update state in response to\n * prop changes. Return null to indicate no change to state.\n *\n * If an object is returned, its keys will be merged into the existing state.\n *\n * @return {object || null}\n * @optional\n */\n getDerivedStateFromProps: 'DEFINE_MANY_MERGED'\n };\n\n /**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\n var RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function() {}\n };\n\n function validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an _invariant so components\n // don't show up in prod but only in __DEV__\n if (process.env.NODE_ENV !== 'production') {\n warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n );\n }\n }\n }\n }\n\n function validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name)\n ? ReactClassInterface[name]\n : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n _invariant(\n specPolicy === 'OVERRIDE_BASE',\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n );\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n _invariant(\n specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n );\n }\n }\n\n /**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\n function mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (process.env.NODE_ENV !== 'production') {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n isMixinValid,\n \"%s: You're attempting to include a mixin that is either null \" +\n 'or not an object. Check the mixins included by the component, ' +\n 'as well as any mixins they include themselves. ' +\n 'Expected object but got %s.',\n Constructor.displayName || 'ReactClass',\n spec === null ? null : typeofSpec\n );\n }\n }\n\n return;\n }\n\n _invariant(\n typeof spec !== 'function',\n \"ReactClass: You're attempting to \" +\n 'use a component class or function as a mixin. Instead, just use a ' +\n 'regular object.'\n );\n _invariant(\n !isValidElement(spec),\n \"ReactClass: You're attempting to \" +\n 'use a component as a mixin. Instead, just use a regular object.'\n );\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n _invariant(\n isReactClassMethod &&\n (specPolicy === 'DEFINE_MANY_MERGED' ||\n specPolicy === 'DEFINE_MANY'),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n );\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (process.env.NODE_ENV !== 'production') {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n }\n\n function mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n _invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n );\n\n var isAlreadyDefined = name in Constructor;\n if (isAlreadyDefined) {\n var specPolicy = ReactClassStaticInterface.hasOwnProperty(name)\n ? ReactClassStaticInterface[name]\n : null;\n\n _invariant(\n specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n );\n\n Constructor[name] = createMergedResultFunction(Constructor[name], property);\n\n return;\n }\n\n Constructor[name] = property;\n }\n }\n\n /**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\n function mergeIntoWithNoDuplicateKeys(one, two) {\n _invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n );\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n _invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n );\n one[key] = two[key];\n }\n }\n return one;\n }\n\n /**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n }\n\n /**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n }\n\n /**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\n function bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (process.env.NODE_ENV !== 'production') {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function(newThis) {\n for (\n var _len = arguments.length,\n args = Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n );\n }\n } else if (!args.length) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n );\n }\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n }\n\n /**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\n function bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n }\n\n var IsMountedPreMixin = {\n componentDidMount: function() {\n this.__isMounted = true;\n }\n };\n\n var IsMountedPostMixin = {\n componentWillUnmount: function() {\n this.__isMounted = false;\n }\n };\n\n /**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\n var ReactClassMixin = {\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n this.updater.enqueueReplaceState(this, newState, callback);\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this.__didWarnIsMounted,\n '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n 'subscriptions and pending requests in componentWillUnmount to ' +\n 'prevent memory leaks.',\n (this.constructor && this.constructor.displayName) ||\n this.name ||\n 'Component'\n );\n this.__didWarnIsMounted = true;\n }\n return !!this.__isMounted;\n }\n };\n\n var ReactClassComponent = function() {};\n _assign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n );\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n function createClass(spec) {\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function(props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: https://fb.me/react-legacyfactory'\n );\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (\n initialState === undefined &&\n this.getInitialState._isMockFunction\n ) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n _invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n );\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n mixSpecIntoComponent(Constructor, spec);\n mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n _invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n );\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.componentWillRecieveProps,\n '%s has a method called ' +\n 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.UNSAFE_componentWillRecieveProps,\n '%s has a method called UNSAFE_componentWillRecieveProps(). ' +\n 'Did you mean UNSAFE_componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n }\n\n return createClass;\n}\n\nmodule.exports = factory;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactElement = require('./ReactElement');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n !ReactElement.isValidElement(children) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0;\n return children;\n}\n\nmodule.exports = onlyChild;","/*! modernizr 3.3.1 (Custom Build) | MIT *\n * http://modernizr.com/download/?-displaytable-es5-flexbox-indexeddb-localstorage-objectfit-webworkers-setclasses-cssclassprefix:modernizr_ !*/\n!function(window,document,undefined){function is(e,t){return typeof e===t}function testRunner(){var e,t,r,n,o,i,s;for(var d in tests)if(tests.hasOwnProperty(d)){if(e=[],t=tests[d],t.name&&(e.push(t.name.toLowerCase()),t.options&&t.options.aliases&&t.options.aliases.length))for(r=0;r<t.options.aliases.length;r++)e.push(t.options.aliases[r].toLowerCase());for(n=is(t.fn,\"function\")?t.fn():t.fn,o=0;o<e.length;o++)i=e[o],s=i.split(\".\"),1===s.length?Modernizr[s[0]]=n:(!Modernizr[s[0]]||Modernizr[s[0]]instanceof Boolean||(Modernizr[s[0]]=new Boolean(Modernizr[s[0]])),Modernizr[s[0]][s[1]]=n),classes.push((n?\"\":\"no-\")+s.join(\"-\"))}}function setClasses(e){var t=docElement.className,r=Modernizr._config.classPrefix||\"\";if(isSVG&&(t=t.baseVal),Modernizr._config.enableJSClass){var n=new RegExp(\"(^|\\\\s)\"+r+\"no-js(\\\\s|$)\");t=t.replace(n,\"$1\"+r+\"js$2\")}Modernizr._config.enableClasses&&(t+=\" \"+r+e.join(\" \"+r),isSVG?docElement.className.baseVal=t:docElement.className=t)}function createElement(){return\"function\"!=typeof document.createElement?document.createElement(arguments[0]):isSVG?document.createElementNS.call(document,\"http://www.w3.org/2000/svg\",arguments[0]):document.createElement.apply(document,arguments)}function getBody(){var e=document.body;return e||(e=createElement(isSVG?\"svg\":\"body\"),e.fake=!0),e}function injectElementWithStyles(e,t,r,n){var o,i,s,d,a=\"modernizr\",l=createElement(\"div\"),c=getBody();if(parseInt(r,10))for(;r--;)s=createElement(\"div\"),s.id=n?n[r]:a+(r+1),l.appendChild(s);return o=createElement(\"style\"),o.type=\"text/css\",o.id=\"s\"+a,(c.fake?c:l).appendChild(o),c.appendChild(l),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e)),l.id=a,c.fake&&(c.style.background=\"\",c.style.overflow=\"hidden\",d=docElement.style.overflow,docElement.style.overflow=\"hidden\",docElement.appendChild(c)),i=t(l,e),c.fake?(c.parentNode.removeChild(c),docElement.style.overflow=d,docElement.offsetHeight):l.parentNode.removeChild(l),!!i}function contains(e,t){return!!~(\"\"+e).indexOf(t)}function domToCSS(e){return e.replace(/([A-Z])/g,function(e,t){return\"-\"+t.toLowerCase()}).replace(/^ms-/,\"-ms-\")}function nativeTestProps(e,t){var r=e.length;if(\"CSS\"in window&&\"supports\"in window.CSS){for(;r--;)if(window.CSS.supports(domToCSS(e[r]),t))return!0;return!1}if(\"CSSSupportsRule\"in window){for(var n=[];r--;)n.push(\"(\"+domToCSS(e[r])+\":\"+t+\")\");return n=n.join(\" or \"),injectElementWithStyles(\"@supports (\"+n+\") { #modernizr { position: absolute; } }\",function(e){return\"absolute\"==getComputedStyle(e,null).position})}return undefined}function cssToDOM(e){return e.replace(/([a-z])-([a-z])/g,function(e,t,r){return t+r.toUpperCase()}).replace(/^-/,\"\")}function testProps(e,t,r,n){function o(){s&&(delete mStyle.style,delete mStyle.modElem)}if(n=is(n,\"undefined\")?!1:n,!is(r,\"undefined\")){var i=nativeTestProps(e,r);if(!is(i,\"undefined\"))return i}for(var s,d,a,l,c,f=[\"modernizr\",\"tspan\"];!mStyle.style;)s=!0,mStyle.modElem=createElement(f.shift()),mStyle.style=mStyle.modElem.style;for(a=e.length,d=0;a>d;d++)if(l=e[d],c=mStyle.style[l],contains(l,\"-\")&&(l=cssToDOM(l)),mStyle.style[l]!==undefined){if(n||is(r,\"undefined\"))return o(),\"pfx\"==t?l:!0;try{mStyle.style[l]=r}catch(u){}if(mStyle.style[l]!=c)return o(),\"pfx\"==t?l:!0}return o(),!1}function fnBind(e,t){return function(){return e.apply(t,arguments)}}function testDOMProps(e,t,r){var n;for(var o in e)if(e[o]in t)return r===!1?e[o]:(n=t[e[o]],is(n,\"function\")?fnBind(n,r||t):n);return!1}function testPropsAll(e,t,r,n,o){var i=e.charAt(0).toUpperCase()+e.slice(1),s=(e+\" \"+cssomPrefixes.join(i+\" \")+i).split(\" \");return is(t,\"string\")||is(t,\"undefined\")?testProps(s,t,n,o):(s=(e+\" \"+domPrefixes.join(i+\" \")+i).split(\" \"),testDOMProps(s,t,r))}function testAllProps(e,t,r){return testPropsAll(e,undefined,undefined,t,r)}var tests=[],ModernizrProto={_version:\"3.3.1\",_config:{classPrefix:\"modernizr_\",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var r=this;setTimeout(function(){t(r[e])},0)},addTest:function(e,t,r){tests.push({name:e,fn:t,options:r})},addAsyncTest:function(e){tests.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=ModernizrProto,Modernizr=new Modernizr;var classes=[],docElement=document.documentElement,isSVG=\"svg\"===docElement.nodeName.toLowerCase(),testStyles=ModernizrProto.testStyles=injectElementWithStyles;testStyles(\"#modernizr{display: table; direction: ltr}#modernizr div{display: table-cell; padding: 10px}\",function(e){var t,r=e.childNodes;t=r[0].offsetLeft<r[1].offsetLeft,Modernizr.addTest(\"displaytable\",t,{aliases:[\"display-table\"]})},2);var omPrefixes=\"Moz O ms Webkit\",cssomPrefixes=ModernizrProto._config.usePrefixes?omPrefixes.split(\" \"):[];ModernizrProto._cssomPrefixes=cssomPrefixes;var modElem={elem:createElement(\"modernizr\")};Modernizr._q.push(function(){delete modElem.elem});var mStyle={style:modElem.elem.style};Modernizr._q.unshift(function(){delete mStyle.style});var domPrefixes=ModernizrProto._config.usePrefixes?omPrefixes.toLowerCase().split(\" \"):[];ModernizrProto._domPrefixes=domPrefixes,ModernizrProto.testAllProps=testPropsAll,ModernizrProto.testAllProps=testAllProps,Modernizr.addTest(\"flexbox\",testAllProps(\"flexBasis\",\"1px\",!0)),Modernizr.addTest(\"es5array\",function(){return!!(Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray)}),Modernizr.addTest(\"es5date\",function(){var e=\"2013-04-12T06:06:37.307Z\",t=!1;try{t=!!Date.parse(e)}catch(r){}return!!(Date.now&&Date.prototype&&Date.prototype.toISOString&&Date.prototype.toJSON&&t)}),Modernizr.addTest(\"es5function\",function(){return!(!Function.prototype||!Function.prototype.bind)}),Modernizr.addTest(\"es5object\",function(){return!!(Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions)}),Modernizr.addTest(\"strictmode\",function(){\"use strict\";return!this}()),Modernizr.addTest(\"es5string\",function(){return!(!String.prototype||!String.prototype.trim)}),Modernizr.addTest(\"json\",\"JSON\"in window&&\"parse\"in JSON&&\"stringify\"in JSON),Modernizr.addTest(\"es5syntax\",function(){var value,obj,stringAccess,getter,setter,reservedWords,zeroWidthChars;try{return stringAccess=eval('\"foobar\"[3] === \"b\"'),getter=eval(\"({ get x(){ return 1 } }).x === 1\"),eval(\"({ set x(v){ value = v; } }).x = 1\"),setter=1===value,eval(\"obj = ({ if: 1 })\"),reservedWords=1===obj[\"if\"],zeroWidthChars=eval(\"_‌‍ = true\"),stringAccess&&getter&&setter&&reservedWords&&zeroWidthChars}catch(ignore){return!1}}),Modernizr.addTest(\"es5undefined\",function(){var e,t;try{t=window.undefined,window.undefined=12345,e=\"undefined\"==typeof window.undefined,window.undefined=t}catch(r){return!1}return e}),Modernizr.addTest(\"es5\",function(){return!!(Modernizr.es5array&&Modernizr.es5date&&Modernizr.es5function&&Modernizr.es5object&&Modernizr.strictmode&&Modernizr.es5string&&Modernizr.json&&Modernizr.es5syntax&&Modernizr.es5undefined)});var atRule=function(e){var t,r=prefixes.length,n=window.CSSRule;if(\"undefined\"==typeof n)return undefined;if(!e)return!1;if(e=e.replace(/^@/,\"\"),t=e.replace(/-/g,\"_\").toUpperCase()+\"_RULE\",t in n)return\"@\"+e;for(var o=0;r>o;o++){var i=prefixes[o],s=i.toUpperCase()+\"_\"+t;if(s in n)return\"@-\"+i.toLowerCase()+\"-\"+e}return!1};ModernizrProto.atRule=atRule;var prefixed=ModernizrProto.prefixed=function(e,t,r){return 0===e.indexOf(\"@\")?atRule(e):(-1!=e.indexOf(\"-\")&&(e=cssToDOM(e)),t?testPropsAll(e,t,r):testPropsAll(e,\"pfx\"))};Modernizr.addTest(\"objectfit\",!!prefixed(\"objectFit\"),{aliases:[\"object-fit\"]}),Modernizr.addTest(\"localstorage\",function(){var e=\"modernizr\";try{return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch(t){return!1}}),Modernizr.addTest(\"webworkers\",\"Worker\"in window);var indexeddb;try{indexeddb=prefixed(\"indexedDB\",window)}catch(e){}Modernizr.addTest(\"indexeddb\",!!indexeddb),indexeddb&&Modernizr.addTest(\"indexeddb.deletedatabase\",\"deleteDatabase\"in indexeddb),testRunner(),setClasses(classes),delete ModernizrProto.addTest,delete ModernizrProto.addAsyncTest;for(var i=0;i<Modernizr._q.length;i++)Modernizr._q[i]();window.Modernizr=Modernizr}(window,document);","module.exports = { \"default\": require(\"core-js/library/fn/object/prevent-extensions\"), __esModule: true };","require('../../modules/es6.object.prevent-extensions');\nmodule.exports = require('../../modules/_core').Object.preventExtensions;\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","require('../../modules/es6.object.freeze');\nmodule.exports = require('../../modules/_core').Object.freeze;\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/seal\"), __esModule: true };","require('../../modules/es6.object.seal');\nmodule.exports = require('../../modules/_core').Object.seal;\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/define-properties\"), __esModule: true };","require('../../modules/es6.object.define-properties');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperties(T, D) {\n return $Object.defineProperties(T, D);\n};\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","require('../../modules/es6.object.get-own-property-descriptor');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/is-extensible\"), __esModule: true };","require('../../modules/es6.object.is-extensible');\nmodule.exports = require('../../modules/_core').Object.isExtensible;\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/is-frozen\"), __esModule: true };","require('../../modules/es6.object.is-frozen');\nmodule.exports = require('../../modules/_core').Object.isFrozen;\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/is-sealed\"), __esModule: true };","require('../../modules/es6.object.is-sealed');\nmodule.exports = require('../../modules/_core').Object.isSealed;\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-names\"), __esModule: true };","require('../../modules/es6.object.get-own-property-names');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyNames(it) {\n return $Object.getOwnPropertyNames(it);\n};\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDefaultInjection = require('./ReactDefaultInjection');\nvar ReactMount = require('./ReactMount');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactUpdates = require('./ReactUpdates');\nvar ReactVersion = require('./ReactVersion');\n\nvar findDOMNode = require('./findDOMNode');\nvar getHostComponentFromComposite = require('./getHostComponentFromComposite');\nvar renderSubtreeIntoContainer = require('./renderSubtreeIntoContainer');\nvar warning = require('fbjs/lib/warning');\n\nReactDefaultInjection.inject();\n\nvar ReactDOM = {\n findDOMNode: findDOMNode,\n render: ReactMount.render,\n unmountComponentAtNode: ReactMount.unmountComponentAtNode,\n version: ReactVersion,\n\n /* eslint-disable camelcase */\n unstable_batchedUpdates: ReactUpdates.batchedUpdates,\n unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer\n /* eslint-enable camelcase */\n};\n\n// Inject the runtime into a devtools global hook regardless of browser.\n// Allows for debugging when the hook is injected on the page.\nif (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n ComponentTree: {\n getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,\n getNodeFromInstance: function (inst) {\n // inst is an internal instance (but could be a composite)\n if (inst._renderedComponent) {\n inst = getHostComponentFromComposite(inst);\n }\n if (inst) {\n return ReactDOMComponentTree.getNodeFromInstance(inst);\n } else {\n return null;\n }\n }\n },\n Mount: ReactMount,\n Reconciler: ReactReconciler\n });\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n if (ExecutionEnvironment.canUseDOM && window.top === window.self) {\n // First check if devtools is not installed\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n // If we're in Chrome or Firefox, provide a download link if not installed.\n if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n // Firefox does not have the issue with devtools loaded over file://\n var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1;\n console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools');\n }\n }\n\n var testFunc = function testFn() {};\n process.env.NODE_ENV !== 'production' ? warning((testFunc.name || testFunc.toString()).indexOf('testFn') !== -1, \"It looks like you're using a minified copy of the development build \" + 'of React. When deploying React apps to production, make sure to use ' + 'the production build which skips development warnings and is faster. ' + 'See https://fb.me/react-minification for more details.') : void 0;\n\n // If we're in IE8, check to see if we are in compatibility mode and provide\n // information on preventing compatibility mode\n var ieCompatibilityMode = document.documentMode && document.documentMode < 8;\n\n process.env.NODE_ENV !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />') : void 0;\n\n var expectedFeatures = [\n // shims\n Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim];\n\n for (var i = 0; i < expectedFeatures.length; i++) {\n if (!expectedFeatures[i]) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0;\n break;\n }\n }\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactInstrumentation = require('./ReactInstrumentation');\n var ReactDOMUnknownPropertyHook = require('./ReactDOMUnknownPropertyHook');\n var ReactDOMNullInputValuePropHook = require('./ReactDOMNullInputValuePropHook');\n var ReactDOMInvalidARIAHook = require('./ReactDOMInvalidARIAHook');\n\n ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook);\n}\n\nmodule.exports = ReactDOM;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ARIADOMPropertyConfig = {\n Properties: {\n // Global States and Properties\n 'aria-current': 0, // state\n 'aria-details': 0,\n 'aria-disabled': 0, // state\n 'aria-hidden': 0, // state\n 'aria-invalid': 0, // state\n 'aria-keyshortcuts': 0,\n 'aria-label': 0,\n 'aria-roledescription': 0,\n // Widget Attributes\n 'aria-autocomplete': 0,\n 'aria-checked': 0,\n 'aria-expanded': 0,\n 'aria-haspopup': 0,\n 'aria-level': 0,\n 'aria-modal': 0,\n 'aria-multiline': 0,\n 'aria-multiselectable': 0,\n 'aria-orientation': 0,\n 'aria-placeholder': 0,\n 'aria-pressed': 0,\n 'aria-readonly': 0,\n 'aria-required': 0,\n 'aria-selected': 0,\n 'aria-sort': 0,\n 'aria-valuemax': 0,\n 'aria-valuemin': 0,\n 'aria-valuenow': 0,\n 'aria-valuetext': 0,\n // Live Region Attributes\n 'aria-atomic': 0,\n 'aria-busy': 0,\n 'aria-live': 0,\n 'aria-relevant': 0,\n // Drag-and-Drop Attributes\n 'aria-dropeffect': 0,\n 'aria-grabbed': 0,\n // Relationship Attributes\n 'aria-activedescendant': 0,\n 'aria-colcount': 0,\n 'aria-colindex': 0,\n 'aria-colspan': 0,\n 'aria-controls': 0,\n 'aria-describedby': 0,\n 'aria-errormessage': 0,\n 'aria-flowto': 0,\n 'aria-labelledby': 0,\n 'aria-owns': 0,\n 'aria-posinset': 0,\n 'aria-rowcount': 0,\n 'aria-rowindex': 0,\n 'aria-rowspan': 0,\n 'aria-setsize': 0\n },\n DOMAttributeNames: {},\n DOMPropertyNames: {}\n};\n\nmodule.exports = ARIADOMPropertyConfig;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar FallbackCompositionState = require('./FallbackCompositionState');\nvar SyntheticCompositionEvent = require('./SyntheticCompositionEvent');\nvar SyntheticInputEvent = require('./SyntheticInputEvent');\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\nvar START_KEYCODE = 229;\n\nvar canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;\n\nvar documentMode = null;\nif (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {\n documentMode = document.documentMode;\n}\n\n// Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\nvar canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();\n\n// In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\nvar useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\n\n/**\n * Opera <= 12 includes TextEvent in window, but does not fire\n * text input events. Rely on keypress instead.\n */\nfunction isPresto() {\n var opera = window.opera;\n return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;\n}\n\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\n// Events and their corresponding property names.\nvar eventTypes = {\n beforeInput: {\n phasedRegistrationNames: {\n bubbled: 'onBeforeInput',\n captured: 'onBeforeInputCapture'\n },\n dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste']\n },\n compositionEnd: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionEnd',\n captured: 'onCompositionEndCapture'\n },\n dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionStart: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionStart',\n captured: 'onCompositionStartCapture'\n },\n dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionUpdate: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionUpdate',\n captured: 'onCompositionUpdateCapture'\n },\n dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n }\n};\n\n// Track whether we've ever handled a keypress on the space key.\nvar hasSpaceKeypress = false;\n\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\nfunction isKeypressCommand(nativeEvent) {\n return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&\n // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n\n/**\n * Translate native top level events into event types.\n *\n * @param {string} topLevelType\n * @return {object}\n */\nfunction getCompositionEventType(topLevelType) {\n switch (topLevelType) {\n case 'topCompositionStart':\n return eventTypes.compositionStart;\n case 'topCompositionEnd':\n return eventTypes.compositionEnd;\n case 'topCompositionUpdate':\n return eventTypes.compositionUpdate;\n }\n}\n\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionStart(topLevelType, nativeEvent) {\n return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE;\n}\n\n/**\n * Does our fallback mode think that this event is the end of composition?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionEnd(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topKeyUp':\n // Command keys insert or clear IME input.\n return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n case 'topKeyDown':\n // Expect IME keyCode on each keydown. If we get any other\n // code we must have exited earlier.\n return nativeEvent.keyCode !== START_KEYCODE;\n case 'topKeyPress':\n case 'topMouseDown':\n case 'topBlur':\n // Events are not possible without cancelling IME.\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\nfunction getDataFromCustomEvent(nativeEvent) {\n var detail = nativeEvent.detail;\n if (typeof detail === 'object' && 'data' in detail) {\n return detail.data;\n }\n return null;\n}\n\n// Track the current IME composition fallback object, if any.\nvar currentComposition = null;\n\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\nfunction extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var eventType;\n var fallbackData;\n\n if (canUseCompositionEvent) {\n eventType = getCompositionEventType(topLevelType);\n } else if (!currentComposition) {\n if (isFallbackCompositionStart(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionStart;\n }\n } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionEnd;\n }\n\n if (!eventType) {\n return null;\n }\n\n if (useFallbackCompositionData) {\n // The current composition is stored statically and must not be\n // overwritten while composition continues.\n if (!currentComposition && eventType === eventTypes.compositionStart) {\n currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);\n } else if (eventType === eventTypes.compositionEnd) {\n if (currentComposition) {\n fallbackData = currentComposition.getData();\n }\n }\n }\n\n var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);\n\n if (fallbackData) {\n // Inject data generated from fallback path into the synthetic event.\n // This matches the property of native CompositionEventInterface.\n event.data = fallbackData;\n } else {\n var customData = getDataFromCustomEvent(nativeEvent);\n if (customData !== null) {\n event.data = customData;\n }\n }\n\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The string corresponding to this `beforeInput` event.\n */\nfunction getNativeBeforeInputChars(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topCompositionEnd':\n return getDataFromCustomEvent(nativeEvent);\n case 'topKeyPress':\n /**\n * If native `textInput` events are available, our goal is to make\n * use of them. However, there is a special case: the spacebar key.\n * In Webkit, preventing default on a spacebar `textInput` event\n * cancels character insertion, but it *also* causes the browser\n * to fall back to its default spacebar behavior of scrolling the\n * page.\n *\n * Tracking at:\n * https://code.google.com/p/chromium/issues/detail?id=355103\n *\n * To avoid this issue, use the keypress event as if no `textInput`\n * event is available.\n */\n var which = nativeEvent.which;\n if (which !== SPACEBAR_CODE) {\n return null;\n }\n\n hasSpaceKeypress = true;\n return SPACEBAR_CHAR;\n\n case 'topTextInput':\n // Record the characters to be added to the DOM.\n var chars = nativeEvent.data;\n\n // If it's a spacebar character, assume that we have already handled\n // it at the keypress level and bail immediately. Android Chrome\n // doesn't give us keycodes, so we need to blacklist it.\n if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n return null;\n }\n\n return chars;\n\n default:\n // For other native event types, do nothing.\n return null;\n }\n}\n\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The fallback string for this `beforeInput` event.\n */\nfunction getFallbackBeforeInputChars(topLevelType, nativeEvent) {\n // If we are currently composing (IME) and using a fallback to do so,\n // try to extract the composed characters from the fallback object.\n // If composition event is available, we extract a string only at\n // compositionevent, otherwise extract it at fallback events.\n if (currentComposition) {\n if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n var chars = currentComposition.getData();\n FallbackCompositionState.release(currentComposition);\n currentComposition = null;\n return chars;\n }\n return null;\n }\n\n switch (topLevelType) {\n case 'topPaste':\n // If a paste event occurs after a keypress, throw out the input\n // chars. Paste events should not lead to BeforeInput events.\n return null;\n case 'topKeyPress':\n /**\n * As of v27, Firefox may fire keypress events even when no character\n * will be inserted. A few possibilities:\n *\n * - `which` is `0`. Arrow keys, Esc key, etc.\n *\n * - `which` is the pressed key code, but no char is available.\n * Ex: 'AltGr + d` in Polish. There is no modified character for\n * this key combination and no character is inserted into the\n * document, but FF fires the keypress for char code `100` anyway.\n * No `input` event will occur.\n *\n * - `which` is the pressed key code, but a command combination is\n * being used. Ex: `Cmd+C`. No character is inserted, and no\n * `input` event will occur.\n */\n if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {\n return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case 'topCompositionEnd':\n return useFallbackCompositionData ? null : nativeEvent.data;\n default:\n return null;\n }\n}\n\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\nfunction extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var chars;\n\n if (canUseTextInputEvent) {\n chars = getNativeBeforeInputChars(topLevelType, nativeEvent);\n } else {\n chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);\n }\n\n // If no characters are being inserted, no BeforeInput event should\n // be fired.\n if (!chars) {\n return null;\n }\n\n var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);\n\n event.data = chars;\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\nvar BeforeInputEventPlugin = {\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];\n }\n};\n\nmodule.exports = BeforeInputEventPlugin;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\n\nvar getTextContentAccessor = require('./getTextContentAccessor');\n\n/**\n * This helper class stores information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n * @param {DOMEventTarget} root\n */\nfunction FallbackCompositionState(root) {\n this._root = root;\n this._startText = this.getText();\n this._fallbackText = null;\n}\n\n_assign(FallbackCompositionState.prototype, {\n destructor: function () {\n this._root = null;\n this._startText = null;\n this._fallbackText = null;\n },\n\n /**\n * Get current text of input.\n *\n * @return {string}\n */\n getText: function () {\n if ('value' in this._root) {\n return this._root.value;\n }\n return this._root[getTextContentAccessor()];\n },\n\n /**\n * Determine the differing substring between the initially stored\n * text content and the current content.\n *\n * @return {string}\n */\n getData: function () {\n if (this._fallbackText) {\n return this._fallbackText;\n }\n\n var start;\n var startValue = this._startText;\n var startLength = startValue.length;\n var end;\n var endValue = this.getText();\n var endLength = endValue.length;\n\n for (start = 0; start < startLength; start++) {\n if (startValue[start] !== endValue[start]) {\n break;\n }\n }\n\n var minEnd = startLength - start;\n for (end = 1; end <= minEnd; end++) {\n if (startValue[startLength - end] !== endValue[endLength - end]) {\n break;\n }\n }\n\n var sliceTail = end > 1 ? 1 - end : undefined;\n this._fallbackText = endValue.slice(start, sliceTail);\n return this._fallbackText;\n }\n});\n\nPooledClass.addPoolingTo(FallbackCompositionState);\n\nmodule.exports = FallbackCompositionState;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\nvar CompositionEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);\n\nmodule.exports = SyntheticCompositionEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n * /#events-inputevents\n */\nvar InputEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);\n\nmodule.exports = SyntheticInputEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar inputValueTracking = require('./inputValueTracking');\nvar getEventTarget = require('./getEventTarget');\nvar isEventSupported = require('./isEventSupported');\nvar isTextInputElement = require('./isTextInputElement');\n\nvar eventTypes = {\n change: {\n phasedRegistrationNames: {\n bubbled: 'onChange',\n captured: 'onChangeCapture'\n },\n dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange']\n }\n};\n\nfunction createAndAccumulateChangeEvent(inst, nativeEvent, target) {\n var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, target);\n event.type = 'change';\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n/**\n * For IE shims\n */\nvar activeElement = null;\nvar activeElementInst = null;\n\n/**\n * SECTION: handle `change` event\n */\nfunction shouldUseChangeEvent(elem) {\n var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nvar doesChangeEventBubble = false;\nif (ExecutionEnvironment.canUseDOM) {\n // See `handleChange` comment below\n doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8);\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n var event = createAndAccumulateChangeEvent(activeElementInst, nativeEvent, getEventTarget(nativeEvent));\n\n // If change and propertychange bubbled, we'd just bind to it like all the\n // other events and have it go through ReactBrowserEventEmitter. Since it\n // doesn't, we manually listen for the events and so we have to enqueue and\n // process the abstract event manually.\n //\n // Batching is necessary here in order to ensure that all event handlers run\n // before the next rerender (including event handlers attached to ancestor\n // elements instead of directly on the input). Without this, controlled\n // components don't work properly in conjunction with event bubbling because\n // the component is rerendered and the value reverted before all the event\n // handlers can run. See https://github.com/facebook/react/issues/708.\n ReactUpdates.batchedUpdates(runEventInBatch, event);\n}\n\nfunction runEventInBatch(event) {\n EventPluginHub.enqueueEvents(event);\n EventPluginHub.processEventQueue(false);\n}\n\nfunction startWatchingForChangeEventIE8(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElement.attachEvent('onchange', manualDispatchChangeEvent);\n}\n\nfunction stopWatchingForChangeEventIE8() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onchange', manualDispatchChangeEvent);\n activeElement = null;\n activeElementInst = null;\n}\n\nfunction getInstIfValueChanged(targetInst, nativeEvent) {\n var updated = inputValueTracking.updateValueIfChanged(targetInst);\n var simulated = nativeEvent.simulated === true && ChangeEventPlugin._allowSimulatedPassThrough;\n\n if (updated || simulated) {\n return targetInst;\n }\n}\n\nfunction getTargetInstForChangeEvent(topLevelType, targetInst) {\n if (topLevelType === 'topChange') {\n return targetInst;\n }\n}\n\nfunction handleEventsForChangeEventIE8(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForChangeEventIE8();\n startWatchingForChangeEventIE8(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForChangeEventIE8();\n }\n}\n\n/**\n * SECTION: handle `input` event\n */\nvar isInputEventSupported = false;\nif (ExecutionEnvironment.canUseDOM) {\n // IE9 claims to support the input event but fails to trigger it when\n // deleting text, so we ignore its input events.\n\n isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 9);\n}\n\n/**\n * (For IE <=9) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\nfunction startWatchingForValueChange(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElement.attachEvent('onpropertychange', handlePropertyChange);\n}\n\n/**\n * (For IE <=9) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\nfunction stopWatchingForValueChange() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onpropertychange', handlePropertyChange);\n\n activeElement = null;\n activeElementInst = null;\n}\n\n/**\n * (For IE <=9) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\nfunction handlePropertyChange(nativeEvent) {\n if (nativeEvent.propertyName !== 'value') {\n return;\n }\n if (getInstIfValueChanged(activeElementInst, nativeEvent)) {\n manualDispatchChangeEvent(nativeEvent);\n }\n}\n\nfunction handleEventsForInputEventPolyfill(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // In IE8, we can capture almost all .value changes by adding a\n // propertychange handler and looking for events with propertyName\n // equal to 'value'\n // In IE9, propertychange fires for most input events but is buggy and\n // doesn't fire when text is deleted, but conveniently, selectionchange\n // appears to fire in all of the remaining cases so we catch those and\n // forward the event if the value has changed\n // In either case, we don't want to call the event handler if the value\n // is changed from JS so we redefine a setter for `.value` that updates\n // our activeElementValue variable, allowing us to ignore those changes\n //\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForValueChange();\n startWatchingForValueChange(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForValueChange();\n }\n}\n\n// For IE8 and IE9.\nfunction getTargetInstForInputEventPolyfill(topLevelType, targetInst, nativeEvent) {\n if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') {\n // On the selectionchange event, the target is just document which isn't\n // helpful for us so just check activeElement instead.\n //\n // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n // propertychange on the first input event after setting `value` from a\n // script and fires only keydown, keypress, keyup. Catching keyup usually\n // gets it and catching keydown lets us fire an event for the first\n // keystroke if user does a key repeat (it'll be a little delayed: right\n // before the second keystroke). Other input methods (e.g., paste) seem to\n // fire selectionchange normally.\n return getInstIfValueChanged(activeElementInst, nativeEvent);\n }\n}\n\n/**\n * SECTION: handle `click` event\n */\nfunction shouldUseClickEvent(elem) {\n // Use the `click` event to detect changes to checkbox and radio inputs.\n // This approach works across all browsers, whereas `change` does not fire\n // until `blur` in IE8.\n var nodeName = elem.nodeName;\n return nodeName && nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(topLevelType, targetInst, nativeEvent) {\n if (topLevelType === 'topClick') {\n return getInstIfValueChanged(targetInst, nativeEvent);\n }\n}\n\nfunction getTargetInstForInputOrChangeEvent(topLevelType, targetInst, nativeEvent) {\n if (topLevelType === 'topInput' || topLevelType === 'topChange') {\n return getInstIfValueChanged(targetInst, nativeEvent);\n }\n}\n\nfunction handleControlledInputBlur(inst, node) {\n // TODO: In IE, inst is occasionally null. Why?\n if (inst == null) {\n return;\n }\n\n // Fiber and ReactDOM keep wrapper state in separate places\n var state = inst._wrapperState || node._wrapperState;\n\n if (!state || !state.controlled || node.type !== 'number') {\n return;\n }\n\n // If controlled, assign the value attribute to the current value on blur\n var value = '' + node.value;\n if (node.getAttribute('value') !== value) {\n node.setAttribute('value', value);\n }\n}\n\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\nvar ChangeEventPlugin = {\n eventTypes: eventTypes,\n\n _allowSimulatedPassThrough: true,\n _isInputEventSupported: isInputEventSupported,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n var getTargetInstFunc, handleEventFunc;\n if (shouldUseChangeEvent(targetNode)) {\n if (doesChangeEventBubble) {\n getTargetInstFunc = getTargetInstForChangeEvent;\n } else {\n handleEventFunc = handleEventsForChangeEventIE8;\n }\n } else if (isTextInputElement(targetNode)) {\n if (isInputEventSupported) {\n getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n } else {\n getTargetInstFunc = getTargetInstForInputEventPolyfill;\n handleEventFunc = handleEventsForInputEventPolyfill;\n }\n } else if (shouldUseClickEvent(targetNode)) {\n getTargetInstFunc = getTargetInstForClickEvent;\n }\n\n if (getTargetInstFunc) {\n var inst = getTargetInstFunc(topLevelType, targetInst, nativeEvent);\n if (inst) {\n var event = createAndAccumulateChangeEvent(inst, nativeEvent, nativeEventTarget);\n return event;\n }\n }\n\n if (handleEventFunc) {\n handleEventFunc(topLevelType, targetNode, targetInst);\n }\n\n // When blurring, set the value attribute for number inputs\n if (topLevelType === 'topBlur') {\n handleControlledInputBlur(targetInst, targetNode);\n }\n }\n};\n\nmodule.exports = ChangeEventPlugin;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar ReactOwner = require('./ReactOwner');\n\nvar ReactRef = {};\n\nfunction attachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(component.getPublicInstance());\n } else {\n // Legacy ref\n ReactOwner.addComponentAsRefTo(component, ref, owner);\n }\n}\n\nfunction detachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n // Legacy ref\n ReactOwner.removeComponentAsRefFrom(component, ref, owner);\n }\n}\n\nReactRef.attachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n attachRef(ref, instance, element._owner);\n }\n};\n\nReactRef.shouldUpdateRefs = function (prevElement, nextElement) {\n // If either the owner or a `ref` has changed, make sure the newest owner\n // has stored a reference to `this`, and the previous owner (if different)\n // has forgotten the reference to `this`. We use the element instead\n // of the public this.props because the post processing cannot determine\n // a ref. The ref conceptually lives on the element.\n\n // TODO: Should this even be possible? The owner cannot change because\n // it's forbidden by shouldUpdateReactComponent. The ref can change\n // if you swap the keys of but not the refs. Reconsider where this check\n // is made. It probably belongs where the key checking and\n // instantiateReactComponent is done.\n\n var prevRef = null;\n var prevOwner = null;\n if (prevElement !== null && typeof prevElement === 'object') {\n prevRef = prevElement.ref;\n prevOwner = prevElement._owner;\n }\n\n var nextRef = null;\n var nextOwner = null;\n if (nextElement !== null && typeof nextElement === 'object') {\n nextRef = nextElement.ref;\n nextOwner = nextElement._owner;\n }\n\n return prevRef !== nextRef ||\n // If owner changes but we have an unchanged function ref, don't update refs\n typeof nextRef === 'string' && nextOwner !== prevOwner;\n};\n\nReactRef.detachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n detachRef(ref, instance, element._owner);\n }\n};\n\nmodule.exports = ReactRef;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid owner.\n * @final\n */\nfunction isValidOwner(object) {\n return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function');\n}\n\n/**\n * ReactOwners are capable of storing references to owned components.\n *\n * All components are capable of //being// referenced by owner components, but\n * only ReactOwner components are capable of //referencing// owned components.\n * The named reference is known as a \"ref\".\n *\n * Refs are available when mounted and updated during reconciliation.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return (\n * <div onClick={this.handleClick}>\n * <CustomComponent ref=\"custom\" />\n * </div>\n * );\n * },\n * handleClick: function() {\n * this.refs.custom.handleClick();\n * },\n * componentDidMount: function() {\n * this.refs.custom.initialize();\n * }\n * });\n *\n * Refs should rarely be used. When refs are used, they should only be done to\n * control data that is not handled by React's data flow.\n *\n * @class ReactOwner\n */\nvar ReactOwner = {\n /**\n * Adds a component by ref to an owner component.\n *\n * @param {ReactComponent} component Component to reference.\n * @param {string} ref Name by which to refer to the component.\n * @param {ReactOwner} owner Component on which to record the ref.\n * @final\n * @internal\n */\n addComponentAsRefTo: function (component, ref, owner) {\n !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0;\n owner.attachRef(ref, component);\n },\n\n /**\n * Removes a component by ref from an owner component.\n *\n * @param {ReactComponent} component Component to dereference.\n * @param {string} ref Name of the ref to remove.\n * @param {ReactOwner} owner Component on which the ref is recorded.\n * @final\n * @internal\n */\n removeComponentAsRefFrom: function (component, ref, owner) {\n !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0;\n var ownerPublicInstance = owner.getPublicInstance();\n // Check that `component`'s owner is still alive and that `component` is still the current ref\n // because we do not want to detach the ref if another component stole it.\n if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) {\n owner.detachRef(ref);\n }\n }\n};\n\nmodule.exports = ReactOwner;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Module that is injectable into `EventPluginHub`, that specifies a\n * deterministic ordering of `EventPlugin`s. A convenient way to reason about\n * plugins, without having to package every one of them. This is better than\n * having plugins be ordered in the same order that they are injected because\n * that ordering would be influenced by the packaging order.\n * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that\n * preventing default on events is convenient in `SimpleEventPlugin` handlers.\n */\n\nvar DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];\n\nmodule.exports = DefaultEventPluginOrder;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\nvar eventTypes = {\n mouseEnter: {\n registrationName: 'onMouseEnter',\n dependencies: ['topMouseOut', 'topMouseOver']\n },\n mouseLeave: {\n registrationName: 'onMouseLeave',\n dependencies: ['topMouseOut', 'topMouseOver']\n }\n};\n\nvar EnterLeaveEventPlugin = {\n eventTypes: eventTypes,\n\n /**\n * For almost every interaction we care about, there will be both a top-level\n * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n * we do not extract duplicate events. However, moving the mouse into the\n * browser from outside will not fire a `mouseout` event. In this case, we use\n * the `mouseover` top-level event.\n */\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {\n return null;\n }\n if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') {\n // Must not be a mouse in or mouse out - ignoring.\n return null;\n }\n\n var win;\n if (nativeEventTarget.window === nativeEventTarget) {\n // `nativeEventTarget` is probably a window object.\n win = nativeEventTarget;\n } else {\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n var doc = nativeEventTarget.ownerDocument;\n if (doc) {\n win = doc.defaultView || doc.parentWindow;\n } else {\n win = window;\n }\n }\n\n var from;\n var to;\n if (topLevelType === 'topMouseOut') {\n from = targetInst;\n var related = nativeEvent.relatedTarget || nativeEvent.toElement;\n to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;\n } else {\n // Moving to a node from outside the window.\n from = null;\n to = targetInst;\n }\n\n if (from === to) {\n // Nothing pertains to our managed components.\n return null;\n }\n\n var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);\n var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);\n\n var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);\n leave.type = 'mouseleave';\n leave.target = fromNode;\n leave.relatedTarget = toNode;\n\n var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);\n enter.type = 'mouseenter';\n enter.target = toNode;\n enter.relatedTarget = fromNode;\n\n EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);\n\n return [leave, enter];\n }\n};\n\nmodule.exports = EnterLeaveEventPlugin;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\n\nvar MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;\nvar HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;\nvar HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;\nvar HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;\nvar HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;\n\nvar HTMLDOMPropertyConfig = {\n isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')),\n Properties: {\n /**\n * Standard Properties\n */\n accept: 0,\n acceptCharset: 0,\n accessKey: 0,\n action: 0,\n allowFullScreen: HAS_BOOLEAN_VALUE,\n allowTransparency: 0,\n alt: 0,\n // specifies target context for links with `preload` type\n as: 0,\n async: HAS_BOOLEAN_VALUE,\n autoComplete: 0,\n // autoFocus is polyfilled/normalized by AutoFocusUtils\n // autoFocus: HAS_BOOLEAN_VALUE,\n autoPlay: HAS_BOOLEAN_VALUE,\n capture: HAS_BOOLEAN_VALUE,\n cellPadding: 0,\n cellSpacing: 0,\n charSet: 0,\n challenge: 0,\n checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n cite: 0,\n classID: 0,\n className: 0,\n cols: HAS_POSITIVE_NUMERIC_VALUE,\n colSpan: 0,\n content: 0,\n contentEditable: 0,\n contextMenu: 0,\n controls: HAS_BOOLEAN_VALUE,\n controlsList: 0,\n coords: 0,\n crossOrigin: 0,\n data: 0, // For `<object />` acts as `src`.\n dateTime: 0,\n 'default': HAS_BOOLEAN_VALUE,\n defer: HAS_BOOLEAN_VALUE,\n dir: 0,\n disabled: HAS_BOOLEAN_VALUE,\n download: HAS_OVERLOADED_BOOLEAN_VALUE,\n draggable: 0,\n encType: 0,\n form: 0,\n formAction: 0,\n formEncType: 0,\n formMethod: 0,\n formNoValidate: HAS_BOOLEAN_VALUE,\n formTarget: 0,\n frameBorder: 0,\n headers: 0,\n height: 0,\n hidden: HAS_BOOLEAN_VALUE,\n high: 0,\n href: 0,\n hrefLang: 0,\n htmlFor: 0,\n httpEquiv: 0,\n icon: 0,\n id: 0,\n inputMode: 0,\n integrity: 0,\n is: 0,\n keyParams: 0,\n keyType: 0,\n kind: 0,\n label: 0,\n lang: 0,\n list: 0,\n loop: HAS_BOOLEAN_VALUE,\n low: 0,\n manifest: 0,\n marginHeight: 0,\n marginWidth: 0,\n max: 0,\n maxLength: 0,\n media: 0,\n mediaGroup: 0,\n method: 0,\n min: 0,\n minLength: 0,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n name: 0,\n nonce: 0,\n noValidate: HAS_BOOLEAN_VALUE,\n open: HAS_BOOLEAN_VALUE,\n optimum: 0,\n pattern: 0,\n placeholder: 0,\n playsInline: HAS_BOOLEAN_VALUE,\n poster: 0,\n preload: 0,\n profile: 0,\n radioGroup: 0,\n readOnly: HAS_BOOLEAN_VALUE,\n referrerPolicy: 0,\n rel: 0,\n required: HAS_BOOLEAN_VALUE,\n reversed: HAS_BOOLEAN_VALUE,\n role: 0,\n rows: HAS_POSITIVE_NUMERIC_VALUE,\n rowSpan: HAS_NUMERIC_VALUE,\n sandbox: 0,\n scope: 0,\n scoped: HAS_BOOLEAN_VALUE,\n scrolling: 0,\n seamless: HAS_BOOLEAN_VALUE,\n selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n shape: 0,\n size: HAS_POSITIVE_NUMERIC_VALUE,\n sizes: 0,\n span: HAS_POSITIVE_NUMERIC_VALUE,\n spellCheck: 0,\n src: 0,\n srcDoc: 0,\n srcLang: 0,\n srcSet: 0,\n start: HAS_NUMERIC_VALUE,\n step: 0,\n style: 0,\n summary: 0,\n tabIndex: 0,\n target: 0,\n title: 0,\n // Setting .type throws on non-<input> tags\n type: 0,\n useMap: 0,\n value: 0,\n width: 0,\n wmode: 0,\n wrap: 0,\n\n /**\n * RDFa Properties\n */\n about: 0,\n datatype: 0,\n inlist: 0,\n prefix: 0,\n // property is also supported for OpenGraph in meta tags.\n property: 0,\n resource: 0,\n 'typeof': 0,\n vocab: 0,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: 0,\n autoCorrect: 0,\n // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n autoSave: 0,\n // color is for Safari mask-icon link\n color: 0,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: 0,\n itemScope: HAS_BOOLEAN_VALUE,\n itemType: 0,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: 0,\n itemRef: 0,\n // results show looking glass icon and recent searches on input\n // search fields in WebKit/Blink\n results: 0,\n // IE-only attribute that specifies security restrictions on an iframe\n // as an alternative to the sandbox attribute on IE<10\n security: 0,\n // IE-only attribute that controls focus behavior\n unselectable: 0\n },\n DOMAttributeNames: {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n },\n DOMPropertyNames: {},\n DOMMutationMethods: {\n value: function (node, value) {\n if (value == null) {\n return node.removeAttribute('value');\n }\n\n // Number inputs get special treatment due to some edge cases in\n // Chrome. Let everything else assign the value attribute as normal.\n // https://github.com/facebook/react/issues/7253#issuecomment-236074326\n if (node.type !== 'number' || node.hasAttribute('value') === false) {\n node.setAttribute('value', '' + value);\n } else if (node.validity && !node.validity.badInput && node.ownerDocument.activeElement !== node) {\n // Don't assign an attribute if validation reports bad\n // input. Chrome will clear the value. Additionally, don't\n // operate on inputs that have focus, otherwise Chrome might\n // strip off trailing decimal places and cause the user's\n // cursor position to jump to the beginning of the input.\n //\n // In ReactDOMInput, we have an onBlur event that will trigger\n // this function again when focus is lost.\n node.setAttribute('value', '' + value);\n }\n }\n }\n};\n\nmodule.exports = HTMLDOMPropertyConfig;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar ReactDOMIDOperations = require('./ReactDOMIDOperations');\n\n/**\n * Abstracts away all functionality of the reconciler that requires knowledge of\n * the browser context. TODO: These callers should be refactored to avoid the\n * need for this injection.\n */\nvar ReactComponentBrowserEnvironment = {\n processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\n replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup\n};\n\nmodule.exports = ReactComponentBrowserEnvironment;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar createNodesFromMarkup = require('fbjs/lib/createNodesFromMarkup');\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\n\nvar Danger = {\n /**\n * Replaces a node with a string of markup at its current position within its\n * parent. The markup must render into a single root node.\n *\n * @param {DOMElement} oldChild Child node to replace.\n * @param {string} markup Markup to render in place of the child node.\n * @internal\n */\n dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) {\n !ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('56') : void 0;\n !markup ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0;\n !(oldChild.nodeName !== 'HTML') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString().') : _prodInvariant('58') : void 0;\n\n if (typeof markup === 'string') {\n var newChild = createNodesFromMarkup(markup, emptyFunction)[0];\n oldChild.parentNode.replaceChild(newChild, oldChild);\n } else {\n DOMLazyTree.replaceChildWithTree(oldChild, markup);\n }\n }\n};\n\nmodule.exports = Danger;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/*eslint-disable fb-www/unsafe-html*/\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar createArrayFromMixed = require('./createArrayFromMixed');\nvar getMarkupWrap = require('./getMarkupWrap');\nvar invariant = require('./invariant');\n\n/**\n * Dummy container used to render all markup.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Pattern used by `getNodeName`.\n */\nvar nodeNamePattern = /^\\s*<(\\w+)/;\n\n/**\n * Extracts the `nodeName` of the first element in a string of markup.\n *\n * @param {string} markup String of markup.\n * @return {?string} Node name of the supplied markup.\n */\nfunction getNodeName(markup) {\n var nodeNameMatch = markup.match(nodeNamePattern);\n return nodeNameMatch && nodeNameMatch[1].toLowerCase();\n}\n\n/**\n * Creates an array containing the nodes rendered from the supplied markup. The\n * optionally supplied `handleScript` function will be invoked once for each\n * <script> element that is rendered. If no `handleScript` function is supplied,\n * an exception is thrown if any <script> elements are rendered.\n *\n * @param {string} markup A string of valid HTML markup.\n * @param {?function} handleScript Invoked once for each rendered <script>.\n * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes.\n */\nfunction createNodesFromMarkup(markup, handleScript) {\n var node = dummyNode;\n !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0;\n var nodeName = getNodeName(markup);\n\n var wrap = nodeName && getMarkupWrap(nodeName);\n if (wrap) {\n node.innerHTML = wrap[1] + markup + wrap[2];\n\n var wrapDepth = wrap[0];\n while (wrapDepth--) {\n node = node.lastChild;\n }\n } else {\n node.innerHTML = markup;\n }\n\n var scripts = node.getElementsByTagName('script');\n if (scripts.length) {\n !handleScript ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0;\n createArrayFromMixed(scripts).forEach(handleScript);\n }\n\n var nodes = Array.from(node.childNodes);\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n return nodes;\n}\n\nmodule.exports = createNodesFromMarkup;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar invariant = require('./invariant');\n\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\nfunction toArray(obj) {\n var length = obj.length;\n\n // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n // in old versions of Safari).\n !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n\n !(typeof length === 'number') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n\n !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n\n !(typeof obj.callee !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0;\n\n // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n // without method will throw during the slice call and skip straight to the\n // fallback.\n if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {\n // IE < 9 does not support Array#slice on collections objects\n }\n }\n\n // Fall back to copying key by key. This assumes all keys have a value,\n // so will not preserve sparsely populated inputs.\n var ret = Array(length);\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n return ret;\n}\n\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n * Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\nfunction hasArrayNature(obj) {\n return (\n // not null/false\n !!obj && (\n // arrays are objects, NodeLists are functions in Safari\n typeof obj == 'object' || typeof obj == 'function') &&\n // quacks like an array\n 'length' in obj &&\n // not window\n !('setInterval' in obj) &&\n // no DOM node should be considered an array-like\n // a 'select' element has 'length' and 'item' properties on IE8\n typeof obj.nodeType != 'number' && (\n // a real array\n Array.isArray(obj) ||\n // arguments\n 'callee' in obj ||\n // HTMLCollection/NodeList\n 'item' in obj)\n );\n}\n\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n * var createArrayFromMixed = require('createArrayFromMixed');\n *\n * function takesOneOrMoreThings(things) {\n * things = createArrayFromMixed(things);\n * ...\n * }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\nfunction createArrayFromMixed(obj) {\n if (!hasArrayNature(obj)) {\n return [obj];\n } else if (Array.isArray(obj)) {\n return obj.slice();\n } else {\n return toArray(obj);\n }\n}\n\nmodule.exports = createArrayFromMixed;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/*eslint-disable fb-www/unsafe-html */\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar invariant = require('./invariant');\n\n/**\n * Dummy container used to detect which wraps are necessary.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Some browsers cannot use `innerHTML` to render certain elements standalone,\n * so we wrap them, render the wrapped nodes, then extract the desired node.\n *\n * In IE8, certain elements cannot render alone, so wrap all elements ('*').\n */\n\nvar shouldWrap = {};\n\nvar selectWrap = [1, '<select multiple=\"true\">', '</select>'];\nvar tableWrap = [1, '<table>', '</table>'];\nvar trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];\n\nvar svgWrap = [1, '<svg xmlns=\"http://www.w3.org/2000/svg\">', '</svg>'];\n\nvar markupWrap = {\n '*': [1, '?<div>', '</div>'],\n\n 'area': [1, '<map>', '</map>'],\n 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],\n 'legend': [1, '<fieldset>', '</fieldset>'],\n 'param': [1, '<object>', '</object>'],\n 'tr': [2, '<table><tbody>', '</tbody></table>'],\n\n 'optgroup': selectWrap,\n 'option': selectWrap,\n\n 'caption': tableWrap,\n 'colgroup': tableWrap,\n 'tbody': tableWrap,\n 'tfoot': tableWrap,\n 'thead': tableWrap,\n\n 'td': trWrap,\n 'th': trWrap\n};\n\n// Initialize the SVG elements since we know they'll always need to be wrapped\n// consistently. If they are created inside a <div> they will be initialized in\n// the wrong namespace (and will not display).\nvar svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan'];\nsvgElements.forEach(function (nodeName) {\n markupWrap[nodeName] = svgWrap;\n shouldWrap[nodeName] = true;\n});\n\n/**\n * Gets the markup wrap configuration for the supplied `nodeName`.\n *\n * NOTE: This lazily detects which wraps are necessary for the current browser.\n *\n * @param {string} nodeName Lowercase `nodeName`.\n * @return {?array} Markup wrap configuration, if applicable.\n */\nfunction getMarkupWrap(nodeName) {\n !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0;\n if (!markupWrap.hasOwnProperty(nodeName)) {\n nodeName = '*';\n }\n if (!shouldWrap.hasOwnProperty(nodeName)) {\n if (nodeName === '*') {\n dummyNode.innerHTML = '<link />';\n } else {\n dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';\n }\n shouldWrap[nodeName] = !dummyNode.firstChild;\n }\n return shouldWrap[nodeName] ? markupWrap[nodeName] : null;\n}\n\nmodule.exports = getMarkupWrap;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\n/**\n * Operations used to process updates to DOM nodes.\n */\nvar ReactDOMIDOperations = {\n /**\n * Updates a component's children by processing a series of updates.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n dangerouslyProcessChildrenUpdates: function (parentInst, updates) {\n var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);\n DOMChildrenOperations.processUpdates(node, updates);\n }\n};\n\nmodule.exports = ReactDOMIDOperations;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/* global hasOwnProperty:true */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar AutoFocusUtils = require('./AutoFocusUtils');\nvar CSSPropertyOperations = require('./CSSPropertyOperations');\nvar DOMLazyTree = require('./DOMLazyTree');\nvar DOMNamespaces = require('./DOMNamespaces');\nvar DOMProperty = require('./DOMProperty');\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactDOMComponentFlags = require('./ReactDOMComponentFlags');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMInput = require('./ReactDOMInput');\nvar ReactDOMOption = require('./ReactDOMOption');\nvar ReactDOMSelect = require('./ReactDOMSelect');\nvar ReactDOMTextarea = require('./ReactDOMTextarea');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMultiChild = require('./ReactMultiChild');\nvar ReactServerRenderingTransaction = require('./ReactServerRenderingTransaction');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar invariant = require('fbjs/lib/invariant');\nvar isEventSupported = require('./isEventSupported');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\nvar inputValueTracking = require('./inputValueTracking');\nvar validateDOMNesting = require('./validateDOMNesting');\nvar warning = require('fbjs/lib/warning');\n\nvar Flags = ReactDOMComponentFlags;\nvar deleteListener = EventPluginHub.deleteListener;\nvar getNode = ReactDOMComponentTree.getNodeFromInstance;\nvar listenTo = ReactBrowserEventEmitter.listenTo;\nvar registrationNameModules = EventPluginRegistry.registrationNameModules;\n\n// For quickly matching children type, to test if can be treated as content.\nvar CONTENT_TYPES = { string: true, number: true };\n\nvar STYLE = 'style';\nvar HTML = '__html';\nvar RESERVED_PROPS = {\n children: null,\n dangerouslySetInnerHTML: null,\n suppressContentEditableWarning: null\n};\n\n// Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).\nvar DOC_FRAGMENT_TYPE = 11;\n\nfunction getDeclarationErrorAddendum(internalInstance) {\n if (internalInstance) {\n var owner = internalInstance._currentElement._owner || null;\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' This DOM node was rendered by `' + name + '`.';\n }\n }\n }\n return '';\n}\n\nfunction friendlyStringify(obj) {\n if (typeof obj === 'object') {\n if (Array.isArray(obj)) {\n return '[' + obj.map(friendlyStringify).join(', ') + ']';\n } else {\n var pairs = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var keyEscaped = /^[a-z$_][\\w$_]*$/i.test(key) ? key : JSON.stringify(key);\n pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));\n }\n }\n return '{' + pairs.join(', ') + '}';\n }\n } else if (typeof obj === 'string') {\n return JSON.stringify(obj);\n } else if (typeof obj === 'function') {\n return '[function object]';\n }\n // Differs from JSON.stringify in that undefined because undefined and that\n // inf and nan don't become null\n return String(obj);\n}\n\nvar styleMutationWarning = {};\n\nfunction checkAndWarnForMutatedStyle(style1, style2, component) {\n if (style1 == null || style2 == null) {\n return;\n }\n if (shallowEqual(style1, style2)) {\n return;\n }\n\n var componentName = component._tag;\n var owner = component._currentElement._owner;\n var ownerName;\n if (owner) {\n ownerName = owner.getName();\n }\n\n var hash = ownerName + '|' + componentName;\n\n if (styleMutationWarning.hasOwnProperty(hash)) {\n return;\n }\n\n styleMutationWarning[hash] = true;\n\n process.env.NODE_ENV !== 'production' ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : void 0;\n}\n\n/**\n * @param {object} component\n * @param {?object} props\n */\nfunction assertValidProps(component, props) {\n if (!props) {\n return;\n }\n // Note the use of `==` which checks for null or undefined.\n if (voidElementTags[component._tag]) {\n !(props.children == null && props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : _prodInvariant('137', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : void 0;\n }\n if (props.dangerouslySetInnerHTML != null) {\n !(props.children == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0;\n !(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : _prodInvariant('61') : void 0;\n }\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.onFocusIn == null && props.onFocusOut == null, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.') : void 0;\n }\n !(props.style == null || typeof props.style === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \\'em\\'}} when using JSX.%s', getDeclarationErrorAddendum(component)) : _prodInvariant('62', getDeclarationErrorAddendum(component)) : void 0;\n}\n\nfunction enqueuePutListener(inst, registrationName, listener, transaction) {\n if (transaction instanceof ReactServerRenderingTransaction) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // IE8 has no API for event capturing and the `onScroll` event doesn't\n // bubble.\n process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), \"This browser doesn't support the `onScroll` event\") : void 0;\n }\n var containerInfo = inst._hostContainerInfo;\n var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;\n var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;\n listenTo(registrationName, doc);\n transaction.getReactMountReady().enqueue(putListener, {\n inst: inst,\n registrationName: registrationName,\n listener: listener\n });\n}\n\nfunction putListener() {\n var listenerToPut = this;\n EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);\n}\n\nfunction inputPostMount() {\n var inst = this;\n ReactDOMInput.postMountWrapper(inst);\n}\n\nfunction textareaPostMount() {\n var inst = this;\n ReactDOMTextarea.postMountWrapper(inst);\n}\n\nfunction optionPostMount() {\n var inst = this;\n ReactDOMOption.postMountWrapper(inst);\n}\n\nvar setAndValidateContentChildDev = emptyFunction;\nif (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev = function (content) {\n var hasExistingContent = this._contentDebugID != null;\n var debugID = this._debugID;\n // This ID represents the inlined child that has no backing instance:\n var contentDebugID = -debugID;\n\n if (content == null) {\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);\n }\n this._contentDebugID = null;\n return;\n }\n\n validateDOMNesting(null, String(content), this, this._ancestorInfo);\n this._contentDebugID = contentDebugID;\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);\n ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);\n } else {\n ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);\n ReactInstrumentation.debugTool.onMountComponent(contentDebugID);\n ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);\n }\n };\n}\n\n// There are so many media events, it makes sense to just\n// maintain a list rather than create a `trapBubbledEvent` for each\nvar mediaEvents = {\n topAbort: 'abort',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTimeUpdate: 'timeupdate',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting'\n};\n\nfunction trackInputValue() {\n inputValueTracking.track(this);\n}\n\nfunction trapBubbledEventsLocal() {\n var inst = this;\n // If a component renders to null or if another component fatals and causes\n // the state of the tree to be corrupted, `node` here can be null.\n !inst._rootNodeID ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0;\n var node = getNode(inst);\n !node ? process.env.NODE_ENV !== 'production' ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0;\n\n switch (inst._tag) {\n case 'iframe':\n case 'object':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'video':\n case 'audio':\n inst._wrapperState.listeners = [];\n // Create listener for each media event\n for (var event in mediaEvents) {\n if (mediaEvents.hasOwnProperty(event)) {\n inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node));\n }\n }\n break;\n case 'source':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)];\n break;\n case 'img':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'form':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)];\n break;\n case 'input':\n case 'select':\n case 'textarea':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)];\n break;\n }\n}\n\nfunction postUpdateSelectWrapper() {\n ReactDOMSelect.postUpdateWrapper(this);\n}\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n // NOTE: menuitem's close tag should be omitted, but that causes problems.\n};\n\nvar newlineEatingTags = {\n listing: true,\n pre: true,\n textarea: true\n};\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = _assign({\n menuitem: true\n}, omittedCloseTags);\n\n// We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\nvar validatedTagCache = {};\nvar hasOwnProperty = {}.hasOwnProperty;\n\nfunction validateDangerousTag(tag) {\n if (!hasOwnProperty.call(validatedTagCache, tag)) {\n !VALID_TAG_REGEX.test(tag) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0;\n validatedTagCache[tag] = true;\n }\n}\n\nfunction isCustomComponent(tagName, props) {\n return tagName.indexOf('-') >= 0 || props.is != null;\n}\n\nvar globalIdCounter = 1;\n\n/**\n * Creates a new React class that is idempotent and capable of containing other\n * React components. It accepts event listeners and DOM properties that are\n * valid according to `DOMProperty`.\n *\n * - Event listeners: `onClick`, `onMouseDown`, etc.\n * - DOM properties: `className`, `name`, `title`, etc.\n *\n * The `style` property functions differently from the DOM API. It accepts an\n * object mapping of style properties to values.\n *\n * @constructor ReactDOMComponent\n * @extends ReactMultiChild\n */\nfunction ReactDOMComponent(element) {\n var tag = element.type;\n validateDangerousTag(tag);\n this._currentElement = element;\n this._tag = tag.toLowerCase();\n this._namespaceURI = null;\n this._renderedChildren = null;\n this._previousStyle = null;\n this._previousStyleCopy = null;\n this._hostNode = null;\n this._hostParent = null;\n this._rootNodeID = 0;\n this._domID = 0;\n this._hostContainerInfo = null;\n this._wrapperState = null;\n this._topLevelWrapper = null;\n this._flags = 0;\n if (process.env.NODE_ENV !== 'production') {\n this._ancestorInfo = null;\n setAndValidateContentChildDev.call(this, null);\n }\n}\n\nReactDOMComponent.displayName = 'ReactDOMComponent';\n\nReactDOMComponent.Mixin = {\n /**\n * Generates root tag markup then recurses. This method has side effects and\n * is not idempotent.\n *\n * @internal\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?ReactDOMComponent} the parent component instance\n * @param {?object} info about the host container\n * @param {object} context\n * @return {string} The computed markup.\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n this._rootNodeID = globalIdCounter++;\n this._domID = hostContainerInfo._idCounter++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var props = this._currentElement.props;\n\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n this._wrapperState = {\n listeners: null\n };\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'input':\n ReactDOMInput.mountWrapper(this, props, hostParent);\n props = ReactDOMInput.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trackInputValue, this);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'option':\n ReactDOMOption.mountWrapper(this, props, hostParent);\n props = ReactDOMOption.getHostProps(this, props);\n break;\n case 'select':\n ReactDOMSelect.mountWrapper(this, props, hostParent);\n props = ReactDOMSelect.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'textarea':\n ReactDOMTextarea.mountWrapper(this, props, hostParent);\n props = ReactDOMTextarea.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trackInputValue, this);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n }\n\n assertValidProps(this, props);\n\n // We create tags in the namespace of their parent container, except HTML\n // tags get no namespace.\n var namespaceURI;\n var parentTag;\n if (hostParent != null) {\n namespaceURI = hostParent._namespaceURI;\n parentTag = hostParent._tag;\n } else if (hostContainerInfo._tag) {\n namespaceURI = hostContainerInfo._namespaceURI;\n parentTag = hostContainerInfo._tag;\n }\n if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') {\n namespaceURI = DOMNamespaces.html;\n }\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'svg') {\n namespaceURI = DOMNamespaces.svg;\n } else if (this._tag === 'math') {\n namespaceURI = DOMNamespaces.mathml;\n }\n }\n this._namespaceURI = namespaceURI;\n\n if (process.env.NODE_ENV !== 'production') {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo._tag) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(this._tag, null, this, parentInfo);\n }\n this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);\n }\n\n var mountImage;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var el;\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'script') {\n // Create the script via .innerHTML so its \"parser-inserted\" flag is\n // set to true and it does not execute\n var div = ownerDocument.createElement('div');\n var type = this._currentElement.type;\n div.innerHTML = '<' + type + '></' + type + '>';\n el = div.removeChild(div.firstChild);\n } else if (props.is) {\n el = ownerDocument.createElement(this._currentElement.type, props.is);\n } else {\n // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.\n // See discussion in https://github.com/facebook/react/pull/6896\n // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n el = ownerDocument.createElement(this._currentElement.type);\n }\n } else {\n el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);\n }\n ReactDOMComponentTree.precacheNode(this, el);\n this._flags |= Flags.hasCachedChildNodes;\n if (!this._hostParent) {\n DOMPropertyOperations.setAttributeForRoot(el);\n }\n this._updateDOMProperties(null, props, transaction);\n var lazyTree = DOMLazyTree(el);\n this._createInitialChildren(transaction, props, context, lazyTree);\n mountImage = lazyTree;\n } else {\n var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);\n var tagContent = this._createContentMarkup(transaction, props, context);\n if (!tagContent && omittedCloseTags[this._tag]) {\n mountImage = tagOpen + '/>';\n } else {\n mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>';\n }\n }\n\n switch (this._tag) {\n case 'input':\n transaction.getReactMountReady().enqueue(inputPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'textarea':\n transaction.getReactMountReady().enqueue(textareaPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'select':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'button':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'option':\n transaction.getReactMountReady().enqueue(optionPostMount, this);\n break;\n }\n\n return mountImage;\n },\n\n /**\n * Creates markup for the open tag and all attributes.\n *\n * This method has side effects because events get registered.\n *\n * Iterating over object properties is faster than iterating over arrays.\n * @see http://jsperf.com/obj-vs-arr-iteration\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @return {string} Markup of opening tag.\n */\n _createOpenTagMarkupAndPutListeners: function (transaction, props) {\n var ret = '<' + this._currentElement.type;\n\n for (var propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n var propValue = props[propKey];\n if (propValue == null) {\n continue;\n }\n if (registrationNameModules.hasOwnProperty(propKey)) {\n if (propValue) {\n enqueuePutListener(this, propKey, propValue, transaction);\n }\n } else {\n if (propKey === STYLE) {\n if (propValue) {\n if (process.env.NODE_ENV !== 'production') {\n // See `_updateDOMProperties`. style block\n this._previousStyle = propValue;\n }\n propValue = this._previousStyleCopy = _assign({}, props.style);\n }\n propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);\n }\n var markup = null;\n if (this._tag != null && isCustomComponent(this._tag, props)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);\n }\n } else {\n markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);\n }\n if (markup) {\n ret += ' ' + markup;\n }\n }\n }\n\n // For static pages, no need to put React ID and checksum. Saves lots of\n // bytes.\n if (transaction.renderToStaticMarkup) {\n return ret;\n }\n\n if (!this._hostParent) {\n ret += ' ' + DOMPropertyOperations.createMarkupForRoot();\n }\n ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID);\n return ret;\n },\n\n /**\n * Creates markup for the content between the tags.\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @param {object} context\n * @return {string} Content markup.\n */\n _createContentMarkup: function (transaction, props, context) {\n var ret = '';\n\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n ret = innerHTML.__html;\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n if (contentToUse != null) {\n // TODO: Validate that text is allowed as a child of this node\n ret = escapeTextContentForBrowser(contentToUse);\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n ret = mountImages.join('');\n }\n }\n if (newlineEatingTags[this._tag] && ret.charAt(0) === '\\n') {\n // text/html ignores the first character in these tags if it's a newline\n // Prefer to break application/xml over text/html (for now) by adding\n // a newline specifically to get eaten by the parser. (Alternately for\n // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n // \\r is normalized out by HTMLTextAreaElement#value.)\n // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n return '\\n' + ret;\n } else {\n return ret;\n }\n },\n\n _createInitialChildren: function (transaction, props, context, lazyTree) {\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n // TODO: Validate that text is allowed as a child of this node\n if (contentToUse != null) {\n // Avoid setting textContent when the text is empty. In IE11 setting\n // textContent on a text area will cause the placeholder to not\n // show within the textarea until it has been focused and blurred again.\n // https://github.com/facebook/react/issues/6731#issuecomment-254874553\n if (contentToUse !== '') {\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n DOMLazyTree.queueText(lazyTree, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n for (var i = 0; i < mountImages.length; i++) {\n DOMLazyTree.queueChild(lazyTree, mountImages[i]);\n }\n }\n }\n },\n\n /**\n * Receives a next element and updates the component.\n *\n * @internal\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} context\n */\n receiveComponent: function (nextElement, transaction, context) {\n var prevElement = this._currentElement;\n this._currentElement = nextElement;\n this.updateComponent(transaction, prevElement, nextElement, context);\n },\n\n /**\n * Updates a DOM component after it has already been allocated and\n * attached to the DOM. Reconciles the root DOM node, then recurses.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevElement\n * @param {ReactElement} nextElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevElement, nextElement, context) {\n var lastProps = prevElement.props;\n var nextProps = this._currentElement.props;\n\n switch (this._tag) {\n case 'input':\n lastProps = ReactDOMInput.getHostProps(this, lastProps);\n nextProps = ReactDOMInput.getHostProps(this, nextProps);\n break;\n case 'option':\n lastProps = ReactDOMOption.getHostProps(this, lastProps);\n nextProps = ReactDOMOption.getHostProps(this, nextProps);\n break;\n case 'select':\n lastProps = ReactDOMSelect.getHostProps(this, lastProps);\n nextProps = ReactDOMSelect.getHostProps(this, nextProps);\n break;\n case 'textarea':\n lastProps = ReactDOMTextarea.getHostProps(this, lastProps);\n nextProps = ReactDOMTextarea.getHostProps(this, nextProps);\n break;\n }\n\n assertValidProps(this, nextProps);\n this._updateDOMProperties(lastProps, nextProps, transaction);\n this._updateDOMChildren(lastProps, nextProps, transaction, context);\n\n switch (this._tag) {\n case 'input':\n // Update the wrapper around inputs *after* updating props. This has to\n // happen after `_updateDOMProperties`. Otherwise HTML5 input validations\n // raise warnings and prevent the new value from being assigned.\n ReactDOMInput.updateWrapper(this);\n\n // We also check that we haven't missed a value update, such as a\n // Radio group shifting the checked value to another named radio input.\n inputValueTracking.updateValueIfChanged(this);\n break;\n case 'textarea':\n ReactDOMTextarea.updateWrapper(this);\n break;\n case 'select':\n // <select> value update needs to occur after <option> children\n // reconciliation\n transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);\n break;\n }\n },\n\n /**\n * Reconciles the properties by detecting differences in property values and\n * updating the DOM as necessary. This function is probably the single most\n * critical path for performance optimization.\n *\n * TODO: Benchmark whether checking for changed values in memory actually\n * improves performance (especially statically positioned elements).\n * TODO: Benchmark the effects of putting this at the top since 99% of props\n * do not change for a given reconciliation.\n * TODO: Benchmark areas that can be improved with caching.\n *\n * @private\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {?DOMElement} node\n */\n _updateDOMProperties: function (lastProps, nextProps, transaction) {\n var propKey;\n var styleName;\n var styleUpdates;\n for (propKey in lastProps) {\n if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n continue;\n }\n if (propKey === STYLE) {\n var lastStyle = this._previousStyleCopy;\n for (styleName in lastStyle) {\n if (lastStyle.hasOwnProperty(styleName)) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n this._previousStyleCopy = null;\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (lastProps[propKey]) {\n // Only call deleteListener if there was a listener previously or\n // else willDeleteListener gets called when there wasn't actually a\n // listener (e.g., onClick={null})\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, lastProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);\n }\n }\n for (propKey in nextProps) {\n var nextProp = nextProps[propKey];\n var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;\n if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n continue;\n }\n if (propKey === STYLE) {\n if (nextProp) {\n if (process.env.NODE_ENV !== 'production') {\n checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);\n this._previousStyle = nextProp;\n }\n nextProp = this._previousStyleCopy = _assign({}, nextProp);\n } else {\n this._previousStyleCopy = null;\n }\n if (lastProp) {\n // Unset styles on `lastProp` but not on `nextProp`.\n for (styleName in lastProp) {\n if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n // Update styles that changed since `lastProp`.\n for (styleName in nextProp) {\n if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = nextProp[styleName];\n }\n }\n } else {\n // Relies on `updateStylesByID` not mutating `styleUpdates`.\n styleUpdates = nextProp;\n }\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (nextProp) {\n enqueuePutListener(this, propKey, nextProp, transaction);\n } else if (lastProp) {\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, nextProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n var node = getNode(this);\n // If we're updating to null or undefined, we should remove the property\n // from the DOM node instead of inadvertently setting to a string. This\n // brings us in line with the same behavior we have on initial render.\n if (nextProp != null) {\n DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);\n } else {\n DOMPropertyOperations.deleteValueForProperty(node, propKey);\n }\n }\n }\n if (styleUpdates) {\n CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);\n }\n },\n\n /**\n * Reconciles the children with the various properties that affect the\n * children content.\n *\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n */\n _updateDOMChildren: function (lastProps, nextProps, transaction, context) {\n var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;\n var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;\n\n var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html;\n var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html;\n\n // Note the use of `!=` which checks for null or undefined.\n var lastChildren = lastContent != null ? null : lastProps.children;\n var nextChildren = nextContent != null ? null : nextProps.children;\n\n // If we're switching from children to content/html or vice versa, remove\n // the old content\n var lastHasContentOrHtml = lastContent != null || lastHtml != null;\n var nextHasContentOrHtml = nextContent != null || nextHtml != null;\n if (lastChildren != null && nextChildren == null) {\n this.updateChildren(null, transaction, context);\n } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {\n this.updateTextContent('');\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n }\n\n if (nextContent != null) {\n if (lastContent !== nextContent) {\n this.updateTextContent('' + nextContent);\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, nextContent);\n }\n }\n } else if (nextHtml != null) {\n if (lastHtml !== nextHtml) {\n this.updateMarkup('' + nextHtml);\n }\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n } else if (nextChildren != null) {\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, null);\n }\n\n this.updateChildren(nextChildren, transaction, context);\n }\n },\n\n getHostNode: function () {\n return getNode(this);\n },\n\n /**\n * Destroys all event registrations for this instance. Does not remove from\n * the DOM. That must be done by the parent.\n *\n * @internal\n */\n unmountComponent: function (safely) {\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n var listeners = this._wrapperState.listeners;\n if (listeners) {\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].remove();\n }\n }\n break;\n case 'input':\n case 'textarea':\n inputValueTracking.stopTracking(this);\n break;\n case 'html':\n case 'head':\n case 'body':\n /**\n * Components like <html> <head> and <body> can't be removed or added\n * easily in a cross-browser way, however it's valuable to be able to\n * take advantage of React's reconciliation for styling and <title>\n * management. So we just document it and throw in dangerous cases.\n */\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.', this._tag) : _prodInvariant('66', this._tag) : void 0;\n break;\n }\n\n this.unmountChildren(safely);\n ReactDOMComponentTree.uncacheNode(this);\n EventPluginHub.deleteAllListeners(this);\n this._rootNodeID = 0;\n this._domID = 0;\n this._wrapperState = null;\n\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, null);\n }\n },\n\n getPublicInstance: function () {\n return getNode(this);\n }\n};\n\n_assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);\n\nmodule.exports = ReactDOMComponent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar focusNode = require('fbjs/lib/focusNode');\n\nvar AutoFocusUtils = {\n focusDOMComponent: function () {\n focusNode(ReactDOMComponentTree.getNodeFromInstance(this));\n }\n};\n\nmodule.exports = AutoFocusUtils;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar CSSProperty = require('./CSSProperty');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar camelizeStyleName = require('fbjs/lib/camelizeStyleName');\nvar dangerousStyleValue = require('./dangerousStyleValue');\nvar hyphenateStyleName = require('fbjs/lib/hyphenateStyleName');\nvar memoizeStringOnly = require('fbjs/lib/memoizeStringOnly');\nvar warning = require('fbjs/lib/warning');\n\nvar processStyleName = memoizeStringOnly(function (styleName) {\n return hyphenateStyleName(styleName);\n});\n\nvar hasShorthandPropertyBug = false;\nvar styleFloatAccessor = 'cssFloat';\nif (ExecutionEnvironment.canUseDOM) {\n var tempStyle = document.createElement('div').style;\n try {\n // IE8 throws \"Invalid argument.\" if resetting shorthand style properties.\n tempStyle.font = '';\n } catch (e) {\n hasShorthandPropertyBug = true;\n }\n // IE8 only supports accessing cssFloat (standard) as styleFloat\n if (document.documentElement.style.cssFloat === undefined) {\n styleFloatAccessor = 'styleFloat';\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n // 'msTransform' is correct, but the other prefixes should be capitalized\n var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n\n // style values shouldn't contain a semicolon\n var badStyleValueWithSemicolonPattern = /;\\s*$/;\n\n var warnedStyleNames = {};\n var warnedStyleValues = {};\n var warnedForNaNValue = false;\n\n var warnHyphenatedStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;\n };\n\n var warnBadVendoredStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0;\n };\n\n var warnStyleValueWithSemicolon = function (name, value, owner) {\n if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n return;\n }\n\n warnedStyleValues[value] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, \"Style property values shouldn't contain a semicolon.%s \" + 'Try \"%s: %s\" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0;\n };\n\n var warnStyleValueIsNaN = function (name, value, owner) {\n if (warnedForNaNValue) {\n return;\n }\n\n warnedForNaNValue = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0;\n };\n\n var checkRenderMessage = function (owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n };\n\n /**\n * @param {string} name\n * @param {*} value\n * @param {ReactDOMComponent} component\n */\n var warnValidStyle = function (name, value, component) {\n var owner;\n if (component) {\n owner = component._currentElement._owner;\n }\n if (name.indexOf('-') > -1) {\n warnHyphenatedStyleName(name, owner);\n } else if (badVendoredStyleNamePattern.test(name)) {\n warnBadVendoredStyleName(name, owner);\n } else if (badStyleValueWithSemicolonPattern.test(value)) {\n warnStyleValueWithSemicolon(name, value, owner);\n }\n\n if (typeof value === 'number' && isNaN(value)) {\n warnStyleValueIsNaN(name, value, owner);\n }\n };\n}\n\n/**\n * Operations for dealing with CSS properties.\n */\nvar CSSPropertyOperations = {\n /**\n * Serializes a mapping of style properties for use as inline styles:\n *\n * > createMarkupForStyles({width: '200px', height: 0})\n * \"width:200px;height:0;\"\n *\n * Undefined values are ignored so that declarative programming is easier.\n * The result should be HTML-escaped before insertion into the DOM.\n *\n * @param {object} styles\n * @param {ReactDOMComponent} component\n * @return {?string}\n */\n createMarkupForStyles: function (styles, component) {\n var serialized = '';\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var isCustomProperty = styleName.indexOf('--') === 0;\n var styleValue = styles[styleName];\n if (process.env.NODE_ENV !== 'production') {\n if (!isCustomProperty) {\n warnValidStyle(styleName, styleValue, component);\n }\n }\n if (styleValue != null) {\n serialized += processStyleName(styleName) + ':';\n serialized += dangerousStyleValue(styleName, styleValue, component, isCustomProperty) + ';';\n }\n }\n return serialized || null;\n },\n\n /**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n * @param {ReactDOMComponent} component\n */\n setValueForStyles: function (node, styles, component) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: component._debugID,\n type: 'update styles',\n payload: styles\n });\n }\n\n var style = node.style;\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var isCustomProperty = styleName.indexOf('--') === 0;\n if (process.env.NODE_ENV !== 'production') {\n if (!isCustomProperty) {\n warnValidStyle(styleName, styles[styleName], component);\n }\n }\n var styleValue = dangerousStyleValue(styleName, styles[styleName], component, isCustomProperty);\n if (styleName === 'float' || styleName === 'cssFloat') {\n styleName = styleFloatAccessor;\n }\n if (isCustomProperty) {\n style.setProperty(styleName, styleValue);\n } else if (styleValue) {\n style[styleName] = styleValue;\n } else {\n var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];\n if (expansion) {\n // Shorthand property that IE8 won't like unsetting, so unset each\n // component to placate it\n for (var individualStyleName in expansion) {\n style[individualStyleName] = '';\n }\n } else {\n style[styleName] = '';\n }\n }\n }\n }\n};\n\nmodule.exports = CSSPropertyOperations;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n'use strict';\n\nvar camelize = require('./camelize');\n\nvar msPattern = /^-ms-/;\n\n/**\n * Camelcases a hyphenated CSS property name, for example:\n *\n * > camelizeStyleName('background-color')\n * < \"backgroundColor\"\n * > camelizeStyleName('-moz-transition')\n * < \"MozTransition\"\n * > camelizeStyleName('-ms-transition')\n * < \"msTransition\"\n *\n * As Andi Smith suggests\n * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n * is converted to lowercase `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelizeStyleName(string) {\n return camelize(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = camelizeStyleName;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar _hyphenPattern = /-(.)/g;\n\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelize(string) {\n return string.replace(_hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n}\n\nmodule.exports = camelize;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar CSSProperty = require('./CSSProperty');\nvar warning = require('fbjs/lib/warning');\n\nvar isUnitlessNumber = CSSProperty.isUnitlessNumber;\nvar styleWarnings = {};\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @param {ReactDOMComponent} component\n * @return {string} Normalized style value with dimensions applied.\n */\nfunction dangerousStyleValue(name, value, component, isCustomProperty) {\n // Note that we've removed escapeTextForBrowser() calls here since the\n // whole string will be escaped when the attribute is injected into\n // the markup. If you provide unsafe user data here they can inject\n // arbitrary CSS which may be problematic (I couldn't repro this):\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n // This is not an XSS hole but instead a potential CSS injection issue\n // which has lead to a greater discussion about how we're going to\n // trust URLs moving forward. See #2115901\n\n var isEmpty = value == null || typeof value === 'boolean' || value === '';\n if (isEmpty) {\n return '';\n }\n\n var isNonNumeric = isNaN(value);\n if (isCustomProperty || isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) {\n return '' + value; // cast to string\n }\n\n if (typeof value === 'string') {\n if (process.env.NODE_ENV !== 'production') {\n // Allow '0' to pass through without warning. 0 is already special and\n // doesn't require units, so we don't need to warn about it.\n if (component && value !== '0') {\n var owner = component._currentElement._owner;\n var ownerName = owner ? owner.getName() : null;\n if (ownerName && !styleWarnings[ownerName]) {\n styleWarnings[ownerName] = {};\n }\n var warned = false;\n if (ownerName) {\n var warnings = styleWarnings[ownerName];\n warned = warnings[name];\n if (!warned) {\n warnings[name] = true;\n }\n }\n if (!warned) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'a `%s` tag (owner: `%s`) was passed a numeric string value ' + 'for CSS property `%s` (value: `%s`) which will be treated ' + 'as a unitless number in a future version of React.', component._currentElement.type, ownerName || 'unknown', name, value) : void 0;\n }\n }\n }\n value = value.trim();\n }\n return value + 'px';\n}\n\nmodule.exports = dangerousStyleValue;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n'use strict';\n\nvar hyphenate = require('./hyphenate');\n\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = hyphenateStyleName;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n var cache = {};\n return function (string) {\n if (!cache.hasOwnProperty(string)) {\n cache[string] = callback.call(this, string);\n }\n return cache[string];\n };\n}\n\nmodule.exports = memoizeStringOnly;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\n\n/**\n * Escapes attribute value to prevent scripting attacks.\n *\n * @param {*} value Value to escape.\n * @return {string} An escaped string.\n */\nfunction quoteAttributeValueForBrowser(value) {\n return '\"' + escapeTextContentForBrowser(value) + '\"';\n}\n\nmodule.exports = quoteAttributeValueForBrowser;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\n\nfunction runEventQueueInBatch(events) {\n EventPluginHub.enqueueEvents(events);\n EventPluginHub.processEventQueue(false);\n}\n\nvar ReactEventEmitterMixin = {\n /**\n * Streams a fired top-level event to `EventPluginHub` where plugins have the\n * opportunity to create `ReactEvent`s to be dispatched.\n */\n handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n runEventQueueInBatch(events);\n }\n};\n\nmodule.exports = ReactEventEmitterMixin;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n prefixes['Moz' + styleProp] = 'moz' + eventName;\n prefixes['ms' + styleProp] = 'MS' + eventName;\n prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();\n\n return prefixes;\n}\n\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\nvar vendorPrefixes = {\n animationend: makePrefixMap('Animation', 'AnimationEnd'),\n animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n animationstart: makePrefixMap('Animation', 'AnimationStart'),\n transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\nvar prefixedEventNames = {};\n\n/**\n * Element to check for prefixes on.\n */\nvar style = {};\n\n/**\n * Bootstrap if a DOM exists.\n */\nif (ExecutionEnvironment.canUseDOM) {\n style = document.createElement('div').style;\n\n // On some platforms, in particular some releases of Android 4.x,\n // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n // style object but the events that fire will still be prefixed, so we need\n // to check if the un-prefixed events are usable, and if not remove them from the map.\n if (!('AnimationEvent' in window)) {\n delete vendorPrefixes.animationend.animation;\n delete vendorPrefixes.animationiteration.animation;\n delete vendorPrefixes.animationstart.animation;\n }\n\n // Same as above\n if (!('TransitionEvent' in window)) {\n delete vendorPrefixes.transitionend.transition;\n }\n}\n\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) {\n return prefixedEventNames[eventName];\n } else if (!vendorPrefixes[eventName]) {\n return eventName;\n }\n\n var prefixMap = vendorPrefixes[eventName];\n\n for (var styleProp in prefixMap) {\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n return prefixedEventNames[eventName] = prefixMap[styleProp];\n }\n }\n\n return '';\n}\n\nmodule.exports = getVendorPrefixedEventName;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnCheckedLink = false;\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMInput.updateWrapper(this);\n }\n}\n\nfunction isControlled(props) {\n var usesChecked = props.type === 'checkbox' || props.type === 'radio';\n return usesChecked ? props.checked != null : props.value != null;\n}\n\n/**\n * Implements an <input> host component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\nvar ReactDOMInput = {\n getHostProps: function (inst, props) {\n var value = LinkedValueUtils.getValue(props);\n var checked = LinkedValueUtils.getChecked(props);\n\n var hostProps = _assign({\n // Make sure we set .type before any other properties (setting .value\n // before .type means .value is lost in IE11 and below)\n type: undefined,\n // Make sure we set .step before .value (setting .value before .step\n // means .value is rounded on mount, based upon step precision)\n step: undefined,\n // Make sure we set .min & .max before .value (to ensure proper order\n // in corner cases such as min or max deriving from value, e.g. Issue #7170)\n min: undefined,\n max: undefined\n }, props, {\n defaultChecked: undefined,\n defaultValue: undefined,\n value: value != null ? value : inst._wrapperState.initialValue,\n checked: checked != null ? checked : inst._wrapperState.initialChecked,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);\n\n var owner = inst._currentElement._owner;\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.checkedLink !== undefined && !didWarnCheckedLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnCheckedLink = true;\n }\n if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnCheckedDefaultChecked = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnValueDefaultValue = true;\n }\n }\n\n var defaultValue = props.defaultValue;\n inst._wrapperState = {\n initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n initialValue: props.value != null ? props.value : defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n controlled: isControlled(props)\n };\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n if (process.env.NODE_ENV !== 'production') {\n var controlled = isControlled(props);\n var owner = inst._currentElement._owner;\n\n if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnUncontrolledToControlled = true;\n }\n if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnControlledToUncontrolled = true;\n }\n }\n\n // TODO: Shouldn't this be getChecked(props)?\n var checked = props.checked;\n if (checked != null) {\n DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false);\n }\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n if (value === 0 && node.value === '') {\n node.value = '0';\n // Note: IE9 reports a number inputs as 'text', so check props instead.\n } else if (props.type === 'number') {\n // Simulate `input.valueAsNumber`. IE9 does not support it\n var valueAsNumber = parseFloat(node.value, 10) || 0;\n\n if (\n // eslint-disable-next-line\n value != valueAsNumber ||\n // eslint-disable-next-line\n value == valueAsNumber && node.value != value) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n node.value = '' + value;\n }\n } else if (node.value !== '' + value) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n node.value = '' + value;\n }\n } else {\n if (props.value == null && props.defaultValue != null) {\n // In Chrome, assigning defaultValue to certain input types triggers input validation.\n // For number inputs, the display value loses trailing decimal points. For email inputs,\n // Chrome raises \"The specified value <x> is not a valid email address\".\n //\n // Here we check to see if the defaultValue has actually changed, avoiding these problems\n // when the user is inputting text\n //\n // https://github.com/facebook/react/issues/7253\n if (node.defaultValue !== '' + props.defaultValue) {\n node.defaultValue = '' + props.defaultValue;\n }\n }\n if (props.checked == null && props.defaultChecked != null) {\n node.defaultChecked = !!props.defaultChecked;\n }\n }\n },\n\n postMountWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\n // Detach value from defaultValue. We won't do anything if we're working on\n // submit or reset inputs as those values & defaultValues are linked. They\n // are not resetable nodes so this operation doesn't matter and actually\n // removes browser-default values (eg \"Submit Query\") when no value is\n // provided.\n\n switch (props.type) {\n case 'submit':\n case 'reset':\n break;\n case 'color':\n case 'date':\n case 'datetime':\n case 'datetime-local':\n case 'month':\n case 'time':\n case 'week':\n // This fixes the no-show issue on iOS Safari and Android Chrome:\n // https://github.com/facebook/react/issues/7233\n node.value = '';\n node.value = node.defaultValue;\n break;\n default:\n node.value = node.value;\n break;\n }\n\n // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n // this is needed to work around a chrome bug where setting defaultChecked\n // will sometimes influence the value of checked (even after detachment).\n // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n // We need to temporarily unset name to avoid disrupting radio button groups.\n var name = node.name;\n if (name !== '') {\n node.name = '';\n }\n node.defaultChecked = !node.defaultChecked;\n node.defaultChecked = !node.defaultChecked;\n if (name !== '') {\n node.name = name;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n // Here we use asap to wait until all updates have propagated, which\n // is important when using controlled components within layers:\n // https://github.com/facebook/react/issues/1698\n ReactUpdates.asap(forceUpdateIfMounted, this);\n\n var name = props.name;\n if (props.type === 'radio' && name != null) {\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);\n var queryRoot = rootNode;\n\n while (queryRoot.parentNode) {\n queryRoot = queryRoot.parentNode;\n }\n\n // If `rootNode.form` was non-null, then we could try `form.elements`,\n // but that sometimes behaves strangely in IE8. We could also try using\n // `form.getElementsByName`, but that will only return direct children\n // and won't include inputs that use the HTML5 `form=` attribute. Since\n // the input might not even be in a form, let's just use the global\n // `querySelectorAll` to ensure we don't miss anything.\n var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n for (var i = 0; i < group.length; i++) {\n var otherNode = group[i];\n if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n continue;\n }\n // This will throw if radio buttons rendered by different copies of React\n // and the same name are rendered into the same form (same as #1939).\n // That's probably okay; we don't support it just as we don't support\n // mixing React radio buttons with non-React ones.\n var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);\n !otherInstance ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : _prodInvariant('90') : void 0;\n // If this is a controlled radio button group, forcing the input that\n // was previously checked to update will cause it to be come re-checked\n // as appropriate.\n ReactUpdates.asap(forceUpdateIfMounted, otherInstance);\n }\n }\n\n return returnValue;\n}\n\nmodule.exports = ReactDOMInput;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar React = require('react/lib/React');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMSelect = require('./ReactDOMSelect');\n\nvar warning = require('fbjs/lib/warning');\nvar didWarnInvalidOptionChildren = false;\n\nfunction flattenChildren(children) {\n var content = '';\n\n // Flatten children and warn if they aren't strings or numbers;\n // invalid types are ignored.\n React.Children.forEach(children, function (child) {\n if (child == null) {\n return;\n }\n if (typeof child === 'string' || typeof child === 'number') {\n content += child;\n } else if (!didWarnInvalidOptionChildren) {\n didWarnInvalidOptionChildren = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0;\n }\n });\n\n return content;\n}\n\n/**\n * Implements an <option> host component that warns when `selected` is set.\n */\nvar ReactDOMOption = {\n mountWrapper: function (inst, props, hostParent) {\n // TODO (yungsters): Remove support for `selected` in <option>.\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0;\n }\n\n // Look up whether this option is 'selected'\n var selectValue = null;\n if (hostParent != null) {\n var selectParent = hostParent;\n\n if (selectParent._tag === 'optgroup') {\n selectParent = selectParent._hostParent;\n }\n\n if (selectParent != null && selectParent._tag === 'select') {\n selectValue = ReactDOMSelect.getSelectValueContext(selectParent);\n }\n }\n\n // If the value is null (e.g., no specified value or after initial mount)\n // or missing (e.g., for <datalist>), we don't change props.selected\n var selected = null;\n if (selectValue != null) {\n var value;\n if (props.value != null) {\n value = props.value + '';\n } else {\n value = flattenChildren(props.children);\n }\n selected = false;\n if (Array.isArray(selectValue)) {\n // multiple\n for (var i = 0; i < selectValue.length; i++) {\n if ('' + selectValue[i] === value) {\n selected = true;\n break;\n }\n }\n } else {\n selected = '' + selectValue === value;\n }\n }\n\n inst._wrapperState = { selected: selected };\n },\n\n postMountWrapper: function (inst) {\n // value=\"\" should make a value attribute (#6219)\n var props = inst._currentElement.props;\n if (props.value != null) {\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n node.setAttribute('value', props.value);\n }\n },\n\n getHostProps: function (inst, props) {\n var hostProps = _assign({ selected: undefined, children: undefined }, props);\n\n // Read state only from initial mount because <select> updates value\n // manually; we need the initial state only for server rendering\n if (inst._wrapperState.selected != null) {\n hostProps.selected = inst._wrapperState.selected;\n }\n\n var content = flattenChildren(props.children);\n\n if (content) {\n hostProps.children = content;\n }\n\n return hostProps;\n }\n};\n\nmodule.exports = ReactDOMOption;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnValDefaultVal = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMTextarea.updateWrapper(this);\n }\n}\n\n/**\n * Implements a <textarea> host component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\nvar ReactDOMTextarea = {\n getHostProps: function (inst, props) {\n !(props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0;\n\n // Always set children to the same thing. In IE9, the selection range will\n // get reset if `textContent` is mutated. We could add a check in setTextContent\n // to only set the value if/when the value differs from the node value (which would\n // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution.\n // The value can be a boolean or object so that's why it's forced to be a string.\n var hostProps = _assign({}, props, {\n value: undefined,\n defaultValue: undefined,\n children: '' + inst._wrapperState.initialValue,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValDefaultVal = true;\n }\n }\n\n var value = LinkedValueUtils.getValue(props);\n var initialValue = value;\n\n // Only bother fetching default value if we're going to use it\n if (value == null) {\n var defaultValue = props.defaultValue;\n // TODO (yungsters): Remove support for children content in <textarea>.\n var children = props.children;\n if (children != null) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0;\n }\n !(defaultValue == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0;\n if (Array.isArray(children)) {\n !(children.length <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0;\n children = children[0];\n }\n\n defaultValue = '' + children;\n }\n if (defaultValue == null) {\n defaultValue = '';\n }\n initialValue = defaultValue;\n }\n\n inst._wrapperState = {\n initialValue: '' + initialValue,\n listeners: null,\n onChange: _handleChange.bind(inst)\n };\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n var newValue = '' + value;\n\n // To avoid side effects (such as losing text selection), only set value if changed\n if (newValue !== node.value) {\n node.value = newValue;\n }\n if (props.defaultValue == null) {\n node.defaultValue = newValue;\n }\n }\n if (props.defaultValue != null) {\n node.defaultValue = props.defaultValue;\n }\n },\n\n postMountWrapper: function (inst) {\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var textContent = node.textContent;\n\n // Only set node.value if textContent is equal to the expected\n // initial value. In IE10/IE11 there is a bug where the placeholder attribute\n // will populate textContent as well.\n // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/\n if (textContent === inst._wrapperState.initialValue) {\n node.value = textContent;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n ReactUpdates.asap(forceUpdateIfMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMTextarea;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactChildReconciler = require('./ReactChildReconciler');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar flattenChildren = require('./flattenChildren');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Make an update for markup to be rendered and inserted at a supplied index.\n *\n * @param {string} markup Markup that renders into an element.\n * @param {number} toIndex Destination index.\n * @private\n */\nfunction makeInsertMarkup(markup, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'INSERT_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for moving an existing element to another index.\n *\n * @param {number} fromIndex Source index of the existing element.\n * @param {number} toIndex Destination index of the element.\n * @private\n */\nfunction makeMove(child, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'MOVE_EXISTING',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: ReactReconciler.getHostNode(child),\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for removing an element at an index.\n *\n * @param {number} fromIndex Index of the element to remove.\n * @private\n */\nfunction makeRemove(child, node) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'REMOVE_NODE',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: node,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the markup of a node.\n *\n * @param {string} markup Markup that renders into an element.\n * @private\n */\nfunction makeSetMarkup(markup) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'SET_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the text content.\n *\n * @param {string} textContent Text content to set.\n * @private\n */\nfunction makeTextContent(textContent) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'TEXT_CONTENT',\n content: textContent,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Push an update, if any, onto the queue. Creates a new queue if none is\n * passed and always returns the queue. Mutative.\n */\nfunction enqueue(queue, update) {\n if (update) {\n queue = queue || [];\n queue.push(update);\n }\n return queue;\n}\n\n/**\n * Processes any enqueued updates.\n *\n * @private\n */\nfunction processQueue(inst, updateQueue) {\n ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);\n}\n\nvar setChildrenForInstrumentation = emptyFunction;\nif (process.env.NODE_ENV !== 'production') {\n var getDebugID = function (inst) {\n if (!inst._debugID) {\n // Check for ART-like instances. TODO: This is silly/gross.\n var internal;\n if (internal = ReactInstanceMap.get(inst)) {\n inst = internal;\n }\n }\n return inst._debugID;\n };\n setChildrenForInstrumentation = function (children) {\n var debugID = getDebugID(this);\n // TODO: React Native empty components are also multichild.\n // This means they still get into this method but don't have _debugID.\n if (debugID !== 0) {\n ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {\n return children[key]._debugID;\n }) : []);\n }\n };\n}\n\n/**\n * ReactMultiChild are capable of reconciling multiple children.\n *\n * @class ReactMultiChild\n * @internal\n */\nvar ReactMultiChild = {\n /**\n * Provides common functionality for components that must reconcile multiple\n * children. This is used by `ReactDOMComponent` to mount, update, and\n * unmount child components.\n *\n * @lends {ReactMultiChild.prototype}\n */\n Mixin: {\n _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) {\n if (process.env.NODE_ENV !== 'production') {\n var selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n }\n }\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);\n },\n\n _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {\n var nextChildren;\n var selfDebugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n }\n }\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n },\n\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildren Nested child maps.\n * @return {array} An array of mounted representations.\n * @internal\n */\n mountChildren: function (nestedChildren, transaction, context) {\n var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);\n this._renderedChildren = children;\n\n var mountImages = [];\n var index = 0;\n for (var name in children) {\n if (children.hasOwnProperty(name)) {\n var child = children[name];\n var selfDebugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n selfDebugID = getDebugID(this);\n }\n var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);\n child._mountIndex = index++;\n mountImages.push(mountImage);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n setChildrenForInstrumentation.call(this, children);\n }\n\n return mountImages;\n },\n\n /**\n * Replaces any rendered children with a text content string.\n *\n * @param {string} nextContent String of content.\n * @internal\n */\n updateTextContent: function (nextContent) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n // Set new text content.\n var updates = [makeTextContent(nextContent)];\n processQueue(this, updates);\n },\n\n /**\n * Replaces any rendered children with a markup string.\n *\n * @param {string} nextMarkup String of markup.\n * @internal\n */\n updateMarkup: function (nextMarkup) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n var updates = [makeSetMarkup(nextMarkup)];\n processQueue(this, updates);\n },\n\n /**\n * Updates the rendered children with new children.\n *\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n updateChildren: function (nextNestedChildrenElements, transaction, context) {\n // Hook used by React ART\n this._updateChildren(nextNestedChildrenElements, transaction, context);\n },\n\n /**\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @final\n * @protected\n */\n _updateChildren: function (nextNestedChildrenElements, transaction, context) {\n var prevChildren = this._renderedChildren;\n var removedNodes = {};\n var mountImages = [];\n var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);\n if (!nextChildren && !prevChildren) {\n return;\n }\n var updates = null;\n var name;\n // `nextIndex` will increment for each child in `nextChildren`, but\n // `lastIndex` will be the last index visited in `prevChildren`.\n var nextIndex = 0;\n var lastIndex = 0;\n // `nextMountIndex` will increment for each newly mounted child.\n var nextMountIndex = 0;\n var lastPlacedNode = null;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n var prevChild = prevChildren && prevChildren[name];\n var nextChild = nextChildren[name];\n if (prevChild === nextChild) {\n updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n prevChild._mountIndex = nextIndex;\n } else {\n if (prevChild) {\n // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n // The `removedNodes` loop below will actually remove the child.\n }\n // The child must be instantiated before it's mounted.\n updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));\n nextMountIndex++;\n }\n nextIndex++;\n lastPlacedNode = ReactReconciler.getHostNode(nextChild);\n }\n // Remove children that are no longer present.\n for (name in removedNodes) {\n if (removedNodes.hasOwnProperty(name)) {\n updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));\n }\n }\n if (updates) {\n processQueue(this, updates);\n }\n this._renderedChildren = nextChildren;\n\n if (process.env.NODE_ENV !== 'production') {\n setChildrenForInstrumentation.call(this, nextChildren);\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted. It does not actually perform any\n * backend operations.\n *\n * @internal\n */\n unmountChildren: function (safely) {\n var renderedChildren = this._renderedChildren;\n ReactChildReconciler.unmountChildren(renderedChildren, safely);\n this._renderedChildren = null;\n },\n\n /**\n * Moves a child component to the supplied index.\n *\n * @param {ReactComponent} child Component to move.\n * @param {number} toIndex Destination index of the element.\n * @param {number} lastIndex Last index visited of the siblings of `child`.\n * @protected\n */\n moveChild: function (child, afterNode, toIndex, lastIndex) {\n // If the index of `child` is less than `lastIndex`, then it needs to\n // be moved. Otherwise, we do not need to move it because a child will be\n // inserted or moved before `child`.\n if (child._mountIndex < lastIndex) {\n return makeMove(child, afterNode, toIndex);\n }\n },\n\n /**\n * Creates a child component.\n *\n * @param {ReactComponent} child Component to create.\n * @param {string} mountImage Markup to insert.\n * @protected\n */\n createChild: function (child, afterNode, mountImage) {\n return makeInsertMarkup(mountImage, afterNode, child._mountIndex);\n },\n\n /**\n * Removes a child component.\n *\n * @param {ReactComponent} child Child to remove.\n * @protected\n */\n removeChild: function (child, node) {\n return makeRemove(child, node);\n },\n\n /**\n * Mounts a child with the supplied name.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to mount.\n * @param {string} name Name of the child.\n * @param {number} index Index at which to insert the child.\n * @param {ReactReconcileTransaction} transaction\n * @private\n */\n _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) {\n child._mountIndex = index;\n return this.createChild(child, afterNode, mountImage);\n },\n\n /**\n * Unmounts a rendered child.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to unmount.\n * @private\n */\n _unmountChild: function (child, node) {\n var update = this.removeChild(child, node);\n child._mountIndex = null;\n return update;\n }\n }\n};\n\nmodule.exports = ReactMultiChild;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactReconciler = require('./ReactReconciler');\n\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar traverseAllChildren = require('./traverseAllChildren');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n}\n\nfunction instantiateChild(childInstances, child, name, selfDebugID) {\n // We found a component instance.\n var keyUnique = childInstances[name] === undefined;\n if (process.env.NODE_ENV !== 'production') {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (child != null && keyUnique) {\n childInstances[name] = instantiateReactComponent(child, true);\n }\n}\n\n/**\n * ReactChildReconciler provides helpers for initializing or updating a set of\n * children. Its output is suitable for passing it onto ReactMultiChild which\n * does diffed reordering and insertion.\n */\nvar ReactChildReconciler = {\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildNodes Nested child maps.\n * @return {?object} A set of child instances.\n * @internal\n */\n instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID) // 0 in production and for roots\n {\n if (nestedChildNodes == null) {\n return null;\n }\n var childInstances = {};\n\n if (process.env.NODE_ENV !== 'production') {\n traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {\n return instantiateChild(childInsts, child, name, selfDebugID);\n }, childInstances);\n } else {\n traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);\n }\n return childInstances;\n },\n\n /**\n * Updates the rendered children and returns a new set of children.\n *\n * @param {?object} prevChildren Previously initialized set of children.\n * @param {?object} nextChildren Flat child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @return {?object} A new set of child instances.\n * @internal\n */\n updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID) // 0 in production and for roots\n {\n // We currently don't have a way to track moves here but if we use iterators\n // instead of for..in we can zip the iterators and check if an item has\n // moved.\n // TODO: If nothing has changed, return the prevChildren object so that we\n // can quickly bailout if nothing has changed.\n if (!nextChildren && !prevChildren) {\n return;\n }\n var name;\n var prevChild;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n prevChild = prevChildren && prevChildren[name];\n var prevElement = prevChild && prevChild._currentElement;\n var nextElement = nextChildren[name];\n if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) {\n ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);\n nextChildren[name] = prevChild;\n } else {\n if (prevChild) {\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n // The child must be instantiated before it's mounted.\n var nextChildInstance = instantiateReactComponent(nextElement, true);\n nextChildren[name] = nextChildInstance;\n // Creating mount image now ensures refs are resolved in right order\n // (see https://github.com/facebook/react/pull/7101 for explanation).\n var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);\n mountImages.push(nextChildMountImage);\n }\n }\n // Unmount children that are no longer present.\n for (name in prevChildren) {\n if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {\n prevChild = prevChildren[name];\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted.\n *\n * @param {?object} renderedChildren Previously initialized set of children.\n * @internal\n */\n unmountChildren: function (renderedChildren, safely) {\n for (var name in renderedChildren) {\n if (renderedChildren.hasOwnProperty(name)) {\n var renderedChild = renderedChildren[name];\n ReactReconciler.unmountComponent(renderedChild, safely);\n }\n }\n }\n};\n\nmodule.exports = ReactChildReconciler;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar React = require('react/lib/React');\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactErrorUtils = require('./ReactErrorUtils');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactNodeTypes = require('./ReactNodeTypes');\nvar ReactReconciler = require('./ReactReconciler');\n\nif (process.env.NODE_ENV !== 'production') {\n var checkReactTypeSpec = require('./checkReactTypeSpec');\n}\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar warning = require('fbjs/lib/warning');\n\nvar CompositeTypes = {\n ImpureClass: 0,\n PureClass: 1,\n StatelessFunctional: 2\n};\n\nfunction StatelessComponent(Component) {}\nStatelessComponent.prototype.render = function () {\n var Component = ReactInstanceMap.get(this)._currentElement.type;\n var element = Component(this.props, this.context, this.updater);\n warnIfInvalidElement(Component, element);\n return element;\n};\n\nfunction warnIfInvalidElement(Component, element) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(element === null || element === false || React.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0;\n }\n}\n\nfunction shouldConstruct(Component) {\n return !!(Component.prototype && Component.prototype.isReactComponent);\n}\n\nfunction isPureComponent(Component) {\n return !!(Component.prototype && Component.prototype.isPureReactComponent);\n}\n\n// Separated into a function to contain deoptimizations caused by try/finally.\nfunction measureLifeCyclePerf(fn, debugID, timerType) {\n if (debugID === 0) {\n // Top-level wrappers (see ReactMount) and empty components (see\n // ReactDOMEmptyComponent) are invisible to hooks and devtools.\n // Both are implementation details that should go away in the future.\n return fn();\n }\n\n ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);\n try {\n return fn();\n } finally {\n ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);\n }\n}\n\n/**\n * ------------------ The Life-Cycle of a Composite Component ------------------\n *\n * - constructor: Initialization of state. The instance is now retained.\n * - componentWillMount\n * - render\n * - [children's constructors]\n * - [children's componentWillMount and render]\n * - [children's componentDidMount]\n * - componentDidMount\n *\n * Update Phases:\n * - componentWillReceiveProps (only called if parent updated)\n * - shouldComponentUpdate\n * - componentWillUpdate\n * - render\n * - [children's constructors or receive props phases]\n * - componentDidUpdate\n *\n * - componentWillUnmount\n * - [children's componentWillUnmount]\n * - [children destroyed]\n * - (destroyed): The instance is now blank, released by React and ready for GC.\n *\n * -----------------------------------------------------------------------------\n */\n\n/**\n * An incrementing ID assigned to each component when it is mounted. This is\n * used to enforce the order in which `ReactUpdates` updates dirty components.\n *\n * @private\n */\nvar nextMountID = 1;\n\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\nvar ReactCompositeComponent = {\n /**\n * Base constructor for all composite component.\n *\n * @param {ReactElement} element\n * @final\n * @internal\n */\n construct: function (element) {\n this._currentElement = element;\n this._rootNodeID = 0;\n this._compositeType = null;\n this._instance = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n\n // See ReactUpdateQueue\n this._updateBatchNumber = null;\n this._pendingElement = null;\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._context = null;\n this._mountOrder = 0;\n this._topLevelWrapper = null;\n\n // See ReactUpdates and ReactUpdateQueue.\n this._pendingCallbacks = null;\n\n // ComponentWillUnmount shall only be called once\n this._calledComponentWillUnmount = false;\n\n if (process.env.NODE_ENV !== 'production') {\n this._warnedAboutRefsInRender = false;\n }\n },\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} hostParent\n * @param {?object} hostContainerInfo\n * @param {?object} context\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var _this = this;\n\n this._context = context;\n this._mountOrder = nextMountID++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var publicProps = this._currentElement.props;\n var publicContext = this._processContext(context);\n\n var Component = this._currentElement.type;\n\n var updateQueue = transaction.getUpdateQueue();\n\n // Initialize the public class\n var doConstruct = shouldConstruct(Component);\n var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);\n var renderedElement;\n\n // Support functional components\n if (!doConstruct && (inst == null || inst.render == null)) {\n renderedElement = inst;\n warnIfInvalidElement(Component, renderedElement);\n !(inst === null || inst === false || React.isValidElement(inst)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : _prodInvariant('105', Component.displayName || Component.name || 'Component') : void 0;\n inst = new StatelessComponent(Component);\n this._compositeType = CompositeTypes.StatelessFunctional;\n } else {\n if (isPureComponent(Component)) {\n this._compositeType = CompositeTypes.PureClass;\n } else {\n this._compositeType = CompositeTypes.ImpureClass;\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This will throw later in _renderValidatedComponent, but add an early\n // warning now to help debugging\n if (inst.render == null) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0;\n }\n\n var propsMutated = inst.props !== publicProps;\n var componentName = Component.displayName || Component.name || 'Component';\n\n process.env.NODE_ENV !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + \"up the same props that your component's constructor was passed.\", componentName, componentName) : void 0;\n }\n\n // These should be set up in the constructor, but as a convenience for\n // simpler class abstractions, we set them up after the fact.\n inst.props = publicProps;\n inst.context = publicContext;\n inst.refs = emptyObject;\n inst.updater = updateQueue;\n\n this._instance = inst;\n\n // Store a reference from the instance back to the internal representation\n ReactInstanceMap.set(inst, this);\n\n if (process.env.NODE_ENV !== 'production') {\n // Since plain JS classes are defined without any special initialization\n // logic, we can not catch common errors early. Therefore, we have to\n // catch them here, at initialization time, instead.\n process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved || inst.state, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;\n }\n\n var initialState = inst.state;\n if (initialState === undefined) {\n inst.state = initialState = null;\n }\n !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0;\n\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n var markup;\n if (inst.unstable_handleError) {\n markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } else {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n\n if (inst.componentDidMount) {\n if (process.env.NODE_ENV !== 'production') {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(function () {\n return inst.componentDidMount();\n }, _this._debugID, 'componentDidMount');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n }\n }\n\n return markup;\n },\n\n _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) {\n if (process.env.NODE_ENV !== 'production' && !doConstruct) {\n ReactCurrentOwner.current = this;\n try {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n }\n },\n\n _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) {\n var Component = this._currentElement.type;\n\n if (doConstruct) {\n if (process.env.NODE_ENV !== 'production') {\n return measureLifeCyclePerf(function () {\n return new Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'ctor');\n } else {\n return new Component(publicProps, publicContext, updateQueue);\n }\n }\n\n // This can still be an instance in case of factory components\n // but we'll count this as time spent rendering as the more common case.\n if (process.env.NODE_ENV !== 'production') {\n return measureLifeCyclePerf(function () {\n return Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'render');\n } else {\n return Component(publicProps, publicContext, updateQueue);\n }\n },\n\n performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var markup;\n var checkpoint = transaction.checkpoint();\n try {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } catch (e) {\n // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint\n transaction.rollback(checkpoint);\n this._instance.unstable_handleError(e);\n if (this._pendingStateQueue) {\n this._instance.state = this._processPendingState(this._instance.props, this._instance.context);\n }\n checkpoint = transaction.checkpoint();\n\n this._renderedComponent.unmountComponent(true);\n transaction.rollback(checkpoint);\n\n // Try again - we've informed the component about the error, so they can render an error message this time.\n // If this throws again, the error will bubble up (and can be caught by a higher error boundary).\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n return markup;\n },\n\n performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var inst = this._instance;\n\n var debugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n debugID = this._debugID;\n }\n\n if (inst.componentWillMount) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillMount();\n }, debugID, 'componentWillMount');\n } else {\n inst.componentWillMount();\n }\n // When mounting, calls to `setState` by `componentWillMount` will set\n // `this._pendingStateQueue` without triggering a re-render.\n if (this._pendingStateQueue) {\n inst.state = this._processPendingState(inst.props, inst.context);\n }\n }\n\n // If not a stateless component, we now render\n if (renderedElement === undefined) {\n renderedElement = this._renderValidatedComponent();\n }\n\n var nodeType = ReactNodeTypes.getType(renderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);\n\n if (process.env.NODE_ENV !== 'production') {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n return markup;\n },\n\n getHostNode: function () {\n return ReactReconciler.getHostNode(this._renderedComponent);\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function (safely) {\n if (!this._renderedComponent) {\n return;\n }\n\n var inst = this._instance;\n\n if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {\n inst._calledComponentWillUnmount = true;\n\n if (safely) {\n var name = this.getName() + '.componentWillUnmount()';\n ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));\n } else {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillUnmount();\n }, this._debugID, 'componentWillUnmount');\n } else {\n inst.componentWillUnmount();\n }\n }\n }\n\n if (this._renderedComponent) {\n ReactReconciler.unmountComponent(this._renderedComponent, safely);\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._instance = null;\n }\n\n // Reset pending fields\n // Even if this component is scheduled for another update in ReactUpdates,\n // it would still be ignored because these fields are reset.\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n this._pendingCallbacks = null;\n this._pendingElement = null;\n\n // These fields do not really need to be reset since this object is no\n // longer accessible.\n this._context = null;\n this._rootNodeID = 0;\n this._topLevelWrapper = null;\n\n // Delete the reference from the instance to this internal representation\n // which allow the internals to be properly cleaned up even if the user\n // leaks a reference to the public instance.\n ReactInstanceMap.remove(inst);\n\n // Some existing components rely on inst.props even after they've been\n // destroyed (in event handlers).\n // TODO: inst.props = null;\n // TODO: inst.state = null;\n // TODO: inst.context = null;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _maskContext: function (context) {\n var Component = this._currentElement.type;\n var contextTypes = Component.contextTypes;\n if (!contextTypes) {\n return emptyObject;\n }\n var maskedContext = {};\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n return maskedContext;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`, and asserts that they are valid.\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _processContext: function (context) {\n var maskedContext = this._maskContext(context);\n if (process.env.NODE_ENV !== 'production') {\n var Component = this._currentElement.type;\n if (Component.contextTypes) {\n this._checkContextTypes(Component.contextTypes, maskedContext, 'context');\n }\n }\n return maskedContext;\n },\n\n /**\n * @param {object} currentContext\n * @return {object}\n * @private\n */\n _processChildContext: function (currentContext) {\n var Component = this._currentElement.type;\n var inst = this._instance;\n var childContext;\n\n if (inst.getChildContext) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onBeginProcessingChildContext();\n try {\n childContext = inst.getChildContext();\n } finally {\n ReactInstrumentation.debugTool.onEndProcessingChildContext();\n }\n } else {\n childContext = inst.getChildContext();\n }\n }\n\n if (childContext) {\n !(typeof Component.childContextTypes === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0;\n if (process.env.NODE_ENV !== 'production') {\n this._checkContextTypes(Component.childContextTypes, childContext, 'child context');\n }\n for (var name in childContext) {\n !(name in Component.childContextTypes) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0;\n }\n return _assign({}, currentContext, childContext);\n }\n return currentContext;\n },\n\n /**\n * Assert that the context types are valid\n *\n * @param {object} typeSpecs Map of context field to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n _checkContextTypes: function (typeSpecs, values, location) {\n if (process.env.NODE_ENV !== 'production') {\n checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);\n }\n },\n\n receiveComponent: function (nextElement, transaction, nextContext) {\n var prevElement = this._currentElement;\n var prevContext = this._context;\n\n this._pendingElement = null;\n\n this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);\n },\n\n /**\n * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n * is set, update the component.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function (transaction) {\n if (this._pendingElement != null) {\n ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);\n } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);\n } else {\n this._updateBatchNumber = null;\n }\n },\n\n /**\n * Perform an update to a mounted component. The componentWillReceiveProps and\n * shouldComponentUpdate methods are called, then (assuming the update isn't\n * skipped) the remaining update lifecycle methods are called and the DOM\n * representation is updated.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevParentElement\n * @param {ReactElement} nextParentElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {\n var inst = this._instance;\n !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Attempted to update component `%s` that has already been unmounted (or failed to mount).', this.getName() || 'ReactCompositeComponent') : _prodInvariant('136', this.getName() || 'ReactCompositeComponent') : void 0;\n\n var willReceive = false;\n var nextContext;\n\n // Determine if the context has changed or not\n if (this._context === nextUnmaskedContext) {\n nextContext = inst.context;\n } else {\n nextContext = this._processContext(nextUnmaskedContext);\n willReceive = true;\n }\n\n var prevProps = prevParentElement.props;\n var nextProps = nextParentElement.props;\n\n // Not a simple state update but a props update\n if (prevParentElement !== nextParentElement) {\n willReceive = true;\n }\n\n // An update here will schedule an update but immediately set\n // _pendingStateQueue which will ensure that any state updates gets\n // immediately reconciled instead of waiting for the next batch.\n if (willReceive && inst.componentWillReceiveProps) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillReceiveProps(nextProps, nextContext);\n }, this._debugID, 'componentWillReceiveProps');\n } else {\n inst.componentWillReceiveProps(nextProps, nextContext);\n }\n }\n\n var nextState = this._processPendingState(nextProps, nextContext);\n var shouldUpdate = true;\n\n if (!this._pendingForceUpdate) {\n if (inst.shouldComponentUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n shouldUpdate = measureLifeCyclePerf(function () {\n return inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'shouldComponentUpdate');\n } else {\n shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }\n } else {\n if (this._compositeType === CompositeTypes.PureClass) {\n shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);\n }\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0;\n }\n\n this._updateBatchNumber = null;\n if (shouldUpdate) {\n this._pendingForceUpdate = false;\n // Will set `this.props`, `this.state` and `this.context`.\n this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state but we shortcut the rest of the update.\n this._currentElement = nextParentElement;\n this._context = nextUnmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n }\n },\n\n _processPendingState: function (props, context) {\n var inst = this._instance;\n var queue = this._pendingStateQueue;\n var replace = this._pendingReplaceState;\n this._pendingReplaceState = false;\n this._pendingStateQueue = null;\n\n if (!queue) {\n return inst.state;\n }\n\n if (replace && queue.length === 1) {\n return queue[0];\n }\n\n var nextState = _assign({}, replace ? queue[0] : inst.state);\n for (var i = replace ? 1 : 0; i < queue.length; i++) {\n var partial = queue[i];\n _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial);\n }\n\n return nextState;\n },\n\n /**\n * Merges new props and state, notifies delegate methods of update and\n * performs update.\n *\n * @param {ReactElement} nextElement Next element\n * @param {object} nextProps Next public object to set as properties.\n * @param {?object} nextState Next object to set as state.\n * @param {?object} nextContext Next public object to set as context.\n * @param {ReactReconcileTransaction} transaction\n * @param {?object} unmaskedContext\n * @private\n */\n _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {\n var _this2 = this;\n\n var inst = this._instance;\n\n var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);\n var prevProps;\n var prevState;\n var prevContext;\n if (hasComponentDidUpdate) {\n prevProps = inst.props;\n prevState = inst.state;\n prevContext = inst.context;\n }\n\n if (inst.componentWillUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'componentWillUpdate');\n } else {\n inst.componentWillUpdate(nextProps, nextState, nextContext);\n }\n }\n\n this._currentElement = nextElement;\n this._context = unmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n\n this._updateRenderedComponent(transaction, unmaskedContext);\n\n if (hasComponentDidUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);\n }\n }\n },\n\n /**\n * Call the component's `render` method and update the DOM accordingly.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n _updateRenderedComponent: function (transaction, context) {\n var prevComponentInstance = this._renderedComponent;\n var prevRenderedElement = prevComponentInstance._currentElement;\n var nextRenderedElement = this._renderValidatedComponent();\n\n var debugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n debugID = this._debugID;\n }\n\n if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));\n } else {\n var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);\n ReactReconciler.unmountComponent(prevComponentInstance, false);\n\n var nodeType = ReactNodeTypes.getType(nextRenderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID);\n\n if (process.env.NODE_ENV !== 'production') {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);\n }\n },\n\n /**\n * Overridden in shallow rendering.\n *\n * @protected\n */\n _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) {\n ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);\n },\n\n /**\n * @protected\n */\n _renderValidatedComponentWithoutOwnerOrContext: function () {\n var inst = this._instance;\n var renderedElement;\n\n if (process.env.NODE_ENV !== 'production') {\n renderedElement = measureLifeCyclePerf(function () {\n return inst.render();\n }, this._debugID, 'render');\n } else {\n renderedElement = inst.render();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (renderedElement === undefined && inst.render._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n renderedElement = null;\n }\n }\n\n return renderedElement;\n },\n\n /**\n * @private\n */\n _renderValidatedComponent: function () {\n var renderedElement;\n if (process.env.NODE_ENV !== 'production' || this._compositeType !== CompositeTypes.StatelessFunctional) {\n ReactCurrentOwner.current = this;\n try {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n }\n !(\n // TODO: An `isValidNode` function would probably be more appropriate\n renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : _prodInvariant('109', this.getName() || 'ReactCompositeComponent') : void 0;\n\n return renderedElement;\n },\n\n /**\n * Lazily allocates the refs object and stores `component` as `ref`.\n *\n * @param {string} ref Reference name.\n * @param {component} component Component to store as `ref`.\n * @final\n * @private\n */\n attachRef: function (ref, component) {\n var inst = this.getPublicInstance();\n !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0;\n var publicComponentInstance = component.getPublicInstance();\n if (process.env.NODE_ENV !== 'production') {\n var componentName = component && component.getName ? component.getName() : 'a component';\n process.env.NODE_ENV !== 'production' ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, 'Stateless function components cannot be given refs ' + '(See ref \"%s\" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : void 0;\n }\n var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;\n refs[ref] = publicComponentInstance;\n },\n\n /**\n * Detaches a reference name.\n *\n * @param {string} ref Name to dereference.\n * @final\n * @private\n */\n detachRef: function (ref) {\n var refs = this.getPublicInstance().refs;\n delete refs[ref];\n },\n\n /**\n * Get a text description of the component that can be used to identify it\n * in error messages.\n * @return {string} The name or null.\n * @internal\n */\n getName: function () {\n var type = this._currentElement.type;\n var constructor = this._instance && this._instance.constructor;\n return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null;\n },\n\n /**\n * Get the publicly accessible representation of this component - i.e. what\n * is exposed by refs and returned by render. Can be null for stateless\n * components.\n *\n * @return {ReactComponent} the public component instance.\n * @internal\n */\n getPublicInstance: function () {\n var inst = this._instance;\n if (this._compositeType === CompositeTypes.StatelessFunctional) {\n return null;\n }\n return inst;\n },\n\n // Stub\n _instantiateReactComponent: null\n};\n\nmodule.exports = ReactCompositeComponent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar nextDebugID = 1;\n\nfunction getNextDebugID() {\n return nextDebugID++;\n}\n\nmodule.exports = getNextDebugID;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar traverseAllChildren = require('./traverseAllChildren');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n}\n\n/**\n * @param {function} traverseContext Context passed through traversal.\n * @param {?ReactComponent} child React child component.\n * @param {!string} name String name of key path to child.\n * @param {number=} selfDebugID Optional debugID of the current internal instance.\n */\nfunction flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) {\n // We found a component instance.\n if (traverseContext && typeof traverseContext === 'object') {\n var result = traverseContext;\n var keyUnique = result[name] === undefined;\n if (process.env.NODE_ENV !== 'production') {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (keyUnique && child != null) {\n result[name] = child;\n }\n }\n}\n\n/**\n * Flattens children that are typically specified as `props.children`. Any null\n * children will not be included in the resulting object.\n * @return {!object} flattened children keyed by name.\n */\nfunction flattenChildren(children, selfDebugID) {\n if (children == null) {\n return children;\n }\n var result = {};\n\n if (process.env.NODE_ENV !== 'production') {\n traverseAllChildren(children, function (traverseContext, child, name) {\n return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID);\n }, result);\n } else {\n traverseAllChildren(children, flattenSingleChildIntoContext, result);\n }\n return result;\n}\n\nmodule.exports = flattenChildren;","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\n\nvar warning = require('fbjs/lib/warning');\n\nfunction warnNoop(publicInstance, callerName) {\n if (process.env.NODE_ENV !== 'production') {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the update queue used for server rendering.\n * It delegates to ReactUpdateQueue while server rendering is in progress and\n * switches to ReactNoopUpdateQueue after the transaction has completed.\n * @class ReactServerUpdateQueue\n * @param {Transaction} transaction\n */\n\nvar ReactServerUpdateQueue = function () {\n function ReactServerUpdateQueue(transaction) {\n _classCallCheck(this, ReactServerUpdateQueue);\n\n this.transaction = transaction;\n }\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n\n\n ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) {\n return false;\n };\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName);\n }\n };\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueForceUpdate(publicInstance);\n } else {\n warnNoop(publicInstance, 'forceUpdate');\n }\n };\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} completeState Next state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState);\n } else {\n warnNoop(publicInstance, 'replaceState');\n }\n };\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} partialState Next partial state to be merged with state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueSetState(publicInstance, partialState);\n } else {\n warnNoop(publicInstance, 'setState');\n }\n };\n\n return ReactServerUpdateQueue;\n}();\n\nmodule.exports = ReactServerUpdateQueue;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactDOMEmptyComponent = function (instantiate) {\n // ReactCompositeComponent uses this:\n this._currentElement = null;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n this._domID = 0;\n};\n_assign(ReactDOMEmptyComponent.prototype, {\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var domID = hostContainerInfo._idCounter++;\n this._domID = domID;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var nodeValue = ' react-empty: ' + this._domID + ' ';\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var node = ownerDocument.createComment(nodeValue);\n ReactDOMComponentTree.precacheNode(this, node);\n return DOMLazyTree(node);\n } else {\n if (transaction.renderToStaticMarkup) {\n // Normally we'd insert a comment node, but since this is a situation\n // where React won't take over (static pages), we can simply return\n // nothing.\n return '';\n }\n return '<!--' + nodeValue + '-->';\n }\n },\n receiveComponent: function () {},\n getHostNode: function () {\n return ReactDOMComponentTree.getNodeFromInstance(this);\n },\n unmountComponent: function () {\n ReactDOMComponentTree.uncacheNode(this);\n }\n});\n\nmodule.exports = ReactDOMEmptyComponent;","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\nfunction getLowestCommonAncestor(instA, instB) {\n !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n var depthA = 0;\n for (var tempA = instA; tempA; tempA = tempA._hostParent) {\n depthA++;\n }\n var depthB = 0;\n for (var tempB = instB; tempB; tempB = tempB._hostParent) {\n depthB++;\n }\n\n // If A is deeper, crawl up.\n while (depthA - depthB > 0) {\n instA = instA._hostParent;\n depthA--;\n }\n\n // If B is deeper, crawl up.\n while (depthB - depthA > 0) {\n instB = instB._hostParent;\n depthB--;\n }\n\n // Walk in lockstep until we find a match.\n var depth = depthA;\n while (depth--) {\n if (instA === instB) {\n return instA;\n }\n instA = instA._hostParent;\n instB = instB._hostParent;\n }\n return null;\n}\n\n/**\n * Return if A is an ancestor of B.\n */\nfunction isAncestor(instA, instB) {\n !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n\n while (instB) {\n if (instB === instA) {\n return true;\n }\n instB = instB._hostParent;\n }\n return false;\n}\n\n/**\n * Return the parent instance of the passed-in instance.\n */\nfunction getParentInstance(inst) {\n !('_hostNode' in inst) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getParentInstance: Invalid argument.') : _prodInvariant('36') : void 0;\n\n return inst._hostParent;\n}\n\n/**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n */\nfunction traverseTwoPhase(inst, fn, arg) {\n var path = [];\n while (inst) {\n path.push(inst);\n inst = inst._hostParent;\n }\n var i;\n for (i = path.length; i-- > 0;) {\n fn(path[i], 'captured', arg);\n }\n for (i = 0; i < path.length; i++) {\n fn(path[i], 'bubbled', arg);\n }\n}\n\n/**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * Does not invoke the callback on the nearest common ancestor because nothing\n * \"entered\" or \"left\" that element.\n */\nfunction traverseEnterLeave(from, to, fn, argFrom, argTo) {\n var common = from && to ? getLowestCommonAncestor(from, to) : null;\n var pathFrom = [];\n while (from && from !== common) {\n pathFrom.push(from);\n from = from._hostParent;\n }\n var pathTo = [];\n while (to && to !== common) {\n pathTo.push(to);\n to = to._hostParent;\n }\n var i;\n for (i = 0; i < pathFrom.length; i++) {\n fn(pathFrom[i], 'bubbled', argFrom);\n }\n for (i = pathTo.length; i-- > 0;) {\n fn(pathTo[i], 'captured', argTo);\n }\n}\n\nmodule.exports = {\n isAncestor: isAncestor,\n getLowestCommonAncestor: getLowestCommonAncestor,\n getParentInstance: getParentInstance,\n traverseTwoPhase: traverseTwoPhase,\n traverseEnterLeave: traverseEnterLeave\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar invariant = require('fbjs/lib/invariant');\nvar validateDOMNesting = require('./validateDOMNesting');\n\n/**\n * Text nodes violate a couple assumptions that React makes about components:\n *\n * - When mounting text into the DOM, adjacent text nodes are merged.\n * - Text nodes cannot be assigned a React root ID.\n *\n * This component is used to wrap strings between comment nodes so that they\n * can undergo the same reconciliation that is applied to elements.\n *\n * TODO: Investigate representing React components in the DOM with text nodes.\n *\n * @class ReactDOMTextComponent\n * @extends ReactComponent\n * @internal\n */\nvar ReactDOMTextComponent = function (text) {\n // TODO: This is really a ReactText (ReactNode), not a ReactElement\n this._currentElement = text;\n this._stringText = '' + text;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n\n // Properties\n this._domID = 0;\n this._mountIndex = 0;\n this._closingComment = null;\n this._commentNodes = null;\n};\n\n_assign(ReactDOMTextComponent.prototype, {\n /**\n * Creates the markup for this text node. This node is not intended to have\n * any features besides containing text content.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {string} Markup for this text node.\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n if (process.env.NODE_ENV !== 'production') {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo != null) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(null, this._stringText, this, parentInfo);\n }\n }\n\n var domID = hostContainerInfo._idCounter++;\n var openingValue = ' react-text: ' + domID + ' ';\n var closingValue = ' /react-text ';\n this._domID = domID;\n this._hostParent = hostParent;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var openingComment = ownerDocument.createComment(openingValue);\n var closingComment = ownerDocument.createComment(closingValue);\n var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment());\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment));\n if (this._stringText) {\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText)));\n }\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment));\n ReactDOMComponentTree.precacheNode(this, openingComment);\n this._closingComment = closingComment;\n return lazyTree;\n } else {\n var escapedText = escapeTextContentForBrowser(this._stringText);\n\n if (transaction.renderToStaticMarkup) {\n // Normally we'd wrap this between comment nodes for the reasons stated\n // above, but since this is a situation where React won't take over\n // (static pages), we can simply return the text as it is.\n return escapedText;\n }\n\n return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->';\n }\n },\n\n /**\n * Updates this component by updating the text content.\n *\n * @param {ReactText} nextText The next text content\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n receiveComponent: function (nextText, transaction) {\n if (nextText !== this._currentElement) {\n this._currentElement = nextText;\n var nextStringText = '' + nextText;\n if (nextStringText !== this._stringText) {\n // TODO: Save this as pending props and use performUpdateIfNecessary\n // and/or updateComponent to do the actual update for consistency with\n // other component types?\n this._stringText = nextStringText;\n var commentNodes = this.getHostNode();\n DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);\n }\n }\n },\n\n getHostNode: function () {\n var hostNode = this._commentNodes;\n if (hostNode) {\n return hostNode;\n }\n if (!this._closingComment) {\n var openingComment = ReactDOMComponentTree.getNodeFromInstance(this);\n var node = openingComment.nextSibling;\n while (true) {\n !(node != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Missing closing comment for text component %s', this._domID) : _prodInvariant('67', this._domID) : void 0;\n if (node.nodeType === 8 && node.nodeValue === ' /react-text ') {\n this._closingComment = node;\n break;\n }\n node = node.nextSibling;\n }\n }\n hostNode = [this._hostNode, this._closingComment];\n this._commentNodes = hostNode;\n return hostNode;\n },\n\n unmountComponent: function () {\n this._closingComment = null;\n this._commentNodes = null;\n ReactDOMComponentTree.uncacheNode(this);\n }\n});\n\nmodule.exports = ReactDOMTextComponent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar EventListener = require('fbjs/lib/EventListener');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar PooledClass = require('./PooledClass');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar getEventTarget = require('./getEventTarget');\nvar getUnboundedScrollPosition = require('fbjs/lib/getUnboundedScrollPosition');\n\n/**\n * Find the deepest React component completely containing the root of the\n * passed-in instance (for use when entire React trees are nested within each\n * other). If React trees are not nested, returns null.\n */\nfunction findParent(inst) {\n // TODO: It may be a good idea to cache this to prevent unnecessary DOM\n // traversal, but caching is difficult to do correctly without using a\n // mutation observer to listen for all DOM changes.\n while (inst._hostParent) {\n inst = inst._hostParent;\n }\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);\n var container = rootNode.parentNode;\n return ReactDOMComponentTree.getClosestInstanceFromNode(container);\n}\n\n// Used to store ancestor hierarchy in top level callback\nfunction TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {\n this.topLevelType = topLevelType;\n this.nativeEvent = nativeEvent;\n this.ancestors = [];\n}\n_assign(TopLevelCallbackBookKeeping.prototype, {\n destructor: function () {\n this.topLevelType = null;\n this.nativeEvent = null;\n this.ancestors.length = 0;\n }\n});\nPooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);\n\nfunction handleTopLevelImpl(bookKeeping) {\n var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);\n var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget);\n\n // Loop through the hierarchy, in case there's any nested components.\n // It's important that we build the array of ancestors before calling any\n // event handlers, because event handlers can modify the DOM, leading to\n // inconsistencies with ReactMount's node cache. See #1105.\n var ancestor = targetInst;\n do {\n bookKeeping.ancestors.push(ancestor);\n ancestor = ancestor && findParent(ancestor);\n } while (ancestor);\n\n for (var i = 0; i < bookKeeping.ancestors.length; i++) {\n targetInst = bookKeeping.ancestors[i];\n ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));\n }\n}\n\nfunction scrollValueMonitor(cb) {\n var scrollPosition = getUnboundedScrollPosition(window);\n cb(scrollPosition);\n}\n\nvar ReactEventListener = {\n _enabled: true,\n _handleTopLevel: null,\n\n WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,\n\n setHandleTopLevel: function (handleTopLevel) {\n ReactEventListener._handleTopLevel = handleTopLevel;\n },\n\n setEnabled: function (enabled) {\n ReactEventListener._enabled = !!enabled;\n },\n\n isEnabled: function () {\n return ReactEventListener._enabled;\n },\n\n /**\n * Traps top-level events by using event bubbling.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapBubbledEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n /**\n * Traps a top-level event by using event capturing.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapCapturedEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n monitorScrollValue: function (refresh) {\n var callback = scrollValueMonitor.bind(null, refresh);\n EventListener.listen(window, 'scroll', callback);\n },\n\n dispatchEvent: function (topLevelType, nativeEvent) {\n if (!ReactEventListener._enabled) {\n return;\n }\n\n var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);\n try {\n // Event queue being processed in the same cycle allows\n // `preventDefault`.\n ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);\n } finally {\n TopLevelCallbackBookKeeping.release(bookKeeping);\n }\n }\n};\n\nmodule.exports = ReactEventListener;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n'use strict';\n\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n return {\n x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft,\n y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop\n };\n }\n return {\n x: scrollable.scrollLeft,\n y: scrollable.scrollTop\n };\n}\n\nmodule.exports = getUnboundedScrollPosition;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginUtils = require('./EventPluginUtils');\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactEmptyComponent = require('./ReactEmptyComponent');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactHostComponent = require('./ReactHostComponent');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar ReactInjection = {\n Component: ReactComponentEnvironment.injection,\n DOMProperty: DOMProperty.injection,\n EmptyComponent: ReactEmptyComponent.injection,\n EventPluginHub: EventPluginHub.injection,\n EventPluginUtils: EventPluginUtils.injection,\n EventEmitter: ReactBrowserEventEmitter.injection,\n HostComponent: ReactHostComponent.injection,\n Updates: ReactUpdates.injection\n};\n\nmodule.exports = ReactInjection;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar CallbackQueue = require('./CallbackQueue');\nvar PooledClass = require('./PooledClass');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactInputSelection = require('./ReactInputSelection');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar Transaction = require('./Transaction');\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\n\n/**\n * Ensures that, when possible, the selection range (currently selected text\n * input) is not disturbed by performing the transaction.\n */\nvar SELECTION_RESTORATION = {\n /**\n * @return {Selection} Selection information.\n */\n initialize: ReactInputSelection.getSelectionInformation,\n /**\n * @param {Selection} sel Selection information returned from `initialize`.\n */\n close: ReactInputSelection.restoreSelection\n};\n\n/**\n * Suppresses events (blur/focus) that could be inadvertently dispatched due to\n * high level DOM manipulations (like temporarily removing a text input from the\n * DOM).\n */\nvar EVENT_SUPPRESSION = {\n /**\n * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before\n * the reconciliation.\n */\n initialize: function () {\n var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();\n ReactBrowserEventEmitter.setEnabled(false);\n return currentlyEnabled;\n },\n\n /**\n * @param {boolean} previouslyEnabled Enabled status of\n * `ReactBrowserEventEmitter` before the reconciliation occurred. `close`\n * restores the previous value.\n */\n close: function (previouslyEnabled) {\n ReactBrowserEventEmitter.setEnabled(previouslyEnabled);\n }\n};\n\n/**\n * Provides a queue for collecting `componentDidMount` and\n * `componentDidUpdate` callbacks during the transaction.\n */\nvar ON_DOM_READY_QUEUEING = {\n /**\n * Initializes the internal `onDOMReady` queue.\n */\n initialize: function () {\n this.reactMountReady.reset();\n },\n\n /**\n * After DOM is flushed, invoke all registered `onDOMReady` callbacks.\n */\n close: function () {\n this.reactMountReady.notifyAll();\n }\n};\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING];\n\nif (process.env.NODE_ENV !== 'production') {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\n/**\n * Currently:\n * - The order that these are listed in the transaction is critical:\n * - Suppresses events.\n * - Restores selection range.\n *\n * Future:\n * - Restore document/overflow scroll positions that were unintentionally\n * modified via DOM insertions above the top viewport boundary.\n * - Implement/integrate with customized constraint based layout system and keep\n * track of which dimensions must be remeasured.\n *\n * @class ReactReconcileTransaction\n */\nfunction ReactReconcileTransaction(useCreateElement) {\n this.reinitializeTransaction();\n // Only server-side rendering really needs this option (see\n // `ReactServerRendering`), but server-side uses\n // `ReactServerRenderingTransaction` instead. This option is here so that it's\n // accessible and defaults to false when `ReactDOMComponent` and\n // `ReactDOMTextComponent` checks it in `mountComponent`.`\n this.renderToStaticMarkup = false;\n this.reactMountReady = CallbackQueue.getPooled(null);\n this.useCreateElement = useCreateElement;\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array<object>} List of operation wrap procedures.\n * TODO: convert to array<TransactionWrapper>\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return this.reactMountReady;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return ReactUpdateQueue;\n },\n\n /**\n * Save current transaction state -- if the return value from this method is\n * passed to `rollback`, the transaction will be reset to that state.\n */\n checkpoint: function () {\n // reactMountReady is the our only stateful wrapper\n return this.reactMountReady.checkpoint();\n },\n\n rollback: function (checkpoint) {\n this.reactMountReady.rollback(checkpoint);\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {\n CallbackQueue.release(this.reactMountReady);\n this.reactMountReady = null;\n }\n};\n\n_assign(ReactReconcileTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactReconcileTransaction);\n\nmodule.exports = ReactReconcileTransaction;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar getNodeForCharacterOffset = require('./getNodeForCharacterOffset');\nvar getTextContentAccessor = require('./getTextContentAccessor');\n\n/**\n * While `isCollapsed` is available on the Selection object and `collapsed`\n * is available on the Range object, IE11 sometimes gets them wrong.\n * If the anchor/focus nodes and offsets are the same, the range is collapsed.\n */\nfunction isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {\n return anchorNode === focusNode && anchorOffset === focusOffset;\n}\n\n/**\n * Get the appropriate anchor and focus node/offset pairs for IE.\n *\n * The catch here is that IE's selection API doesn't provide information\n * about whether the selection is forward or backward, so we have to\n * behave as though it's always forward.\n *\n * IE text differs from modern selection in that it behaves as though\n * block elements end with a new line. This means character offsets will\n * differ between the two APIs.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getIEOffsets(node) {\n var selection = document.selection;\n var selectedRange = selection.createRange();\n var selectedLength = selectedRange.text.length;\n\n // Duplicate selection so we can move range without breaking user selection.\n var fromStart = selectedRange.duplicate();\n fromStart.moveToElementText(node);\n fromStart.setEndPoint('EndToStart', selectedRange);\n\n var startOffset = fromStart.text.length;\n var endOffset = startOffset + selectedLength;\n\n return {\n start: startOffset,\n end: endOffset\n };\n}\n\n/**\n * @param {DOMElement} node\n * @return {?object}\n */\nfunction getModernOffsets(node) {\n var selection = window.getSelection && window.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return null;\n }\n\n var anchorNode = selection.anchorNode;\n var anchorOffset = selection.anchorOffset;\n var focusNode = selection.focusNode;\n var focusOffset = selection.focusOffset;\n\n var currentRange = selection.getRangeAt(0);\n\n // In Firefox, range.startContainer and range.endContainer can be \"anonymous\n // divs\", e.g. the up/down buttons on an <input type=\"number\">. Anonymous\n // divs do not seem to expose properties, triggering a \"Permission denied\n // error\" if any of its properties are accessed. The only seemingly possible\n // way to avoid erroring is to access a property that typically works for\n // non-anonymous divs and catch any error that may otherwise arise. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n try {\n /* eslint-disable no-unused-expressions */\n currentRange.startContainer.nodeType;\n currentRange.endContainer.nodeType;\n /* eslint-enable no-unused-expressions */\n } catch (e) {\n return null;\n }\n\n // If the node and offset values are the same, the selection is collapsed.\n // `Selection.isCollapsed` is available natively, but IE sometimes gets\n // this value wrong.\n var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);\n\n var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;\n\n var tempRange = currentRange.cloneRange();\n tempRange.selectNodeContents(node);\n tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);\n\n var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);\n\n var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;\n var end = start + rangeLength;\n\n // Detect whether the selection is backward.\n var detectionRange = document.createRange();\n detectionRange.setStart(anchorNode, anchorOffset);\n detectionRange.setEnd(focusNode, focusOffset);\n var isBackward = detectionRange.collapsed;\n\n return {\n start: isBackward ? end : start,\n end: isBackward ? start : end\n };\n}\n\n/**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setIEOffsets(node, offsets) {\n var range = document.selection.createRange().duplicate();\n var start, end;\n\n if (offsets.end === undefined) {\n start = offsets.start;\n end = start;\n } else if (offsets.start > offsets.end) {\n start = offsets.end;\n end = offsets.start;\n } else {\n start = offsets.start;\n end = offsets.end;\n }\n\n range.moveToElementText(node);\n range.moveStart('character', start);\n range.setEndPoint('EndToStart', range);\n range.moveEnd('character', end - start);\n range.select();\n}\n\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setModernOffsets(node, offsets) {\n if (!window.getSelection) {\n return;\n }\n\n var selection = window.getSelection();\n var length = node[getTextContentAccessor()].length;\n var start = Math.min(offsets.start, length);\n var end = offsets.end === undefined ? start : Math.min(offsets.end, length);\n\n // IE 11 uses modern selection, but doesn't support the extend method.\n // Flip backward selections, so we can set with a single range.\n if (!selection.extend && start > end) {\n var temp = end;\n end = start;\n start = temp;\n }\n\n var startMarker = getNodeForCharacterOffset(node, start);\n var endMarker = getNodeForCharacterOffset(node, end);\n\n if (startMarker && endMarker) {\n var range = document.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n\n if (start > end) {\n selection.addRange(range);\n selection.extend(endMarker.node, endMarker.offset);\n } else {\n range.setEnd(endMarker.node, endMarker.offset);\n selection.addRange(range);\n }\n }\n}\n\nvar useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window);\n\nvar ReactDOMSelection = {\n /**\n * @param {DOMElement} node\n */\n getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,\n\n /**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets\n};\n\nmodule.exports = ReactDOMSelection;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\nfunction getLeafNode(node) {\n while (node && node.firstChild) {\n node = node.firstChild;\n }\n return node;\n}\n\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\nfunction getSiblingNode(node) {\n while (node) {\n if (node.nextSibling) {\n return node.nextSibling;\n }\n node = node.parentNode;\n }\n}\n\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n var nodeStart = 0;\n var nodeEnd = 0;\n\n while (node) {\n if (node.nodeType === 3) {\n nodeEnd = nodeStart + node.textContent.length;\n\n if (nodeStart <= offset && nodeEnd >= offset) {\n return {\n node: node,\n offset: offset - nodeStart\n };\n }\n\n nodeStart = nodeEnd;\n }\n\n node = getLeafNode(getSiblingNode(node));\n }\n}\n\nmodule.exports = getNodeForCharacterOffset;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nvar isTextNode = require('./isTextNode');\n\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar isNode = require('./isNode');\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n var doc = object ? object.ownerDocument || object : document;\n var defaultView = doc.defaultView || window;\n return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar NS = {\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace'\n};\n\n// We use attributes for everything SVG so let's avoid some duplication and run\n// code instead.\n// The following are all specified in the HTML config already so we exclude here.\n// - class (as className)\n// - color\n// - height\n// - id\n// - lang\n// - max\n// - media\n// - method\n// - min\n// - name\n// - style\n// - target\n// - type\n// - width\nvar ATTRS = {\n accentHeight: 'accent-height',\n accumulate: 0,\n additive: 0,\n alignmentBaseline: 'alignment-baseline',\n allowReorder: 'allowReorder',\n alphabetic: 0,\n amplitude: 0,\n arabicForm: 'arabic-form',\n ascent: 0,\n attributeName: 'attributeName',\n attributeType: 'attributeType',\n autoReverse: 'autoReverse',\n azimuth: 0,\n baseFrequency: 'baseFrequency',\n baseProfile: 'baseProfile',\n baselineShift: 'baseline-shift',\n bbox: 0,\n begin: 0,\n bias: 0,\n by: 0,\n calcMode: 'calcMode',\n capHeight: 'cap-height',\n clip: 0,\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n clipPathUnits: 'clipPathUnits',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n contentScriptType: 'contentScriptType',\n contentStyleType: 'contentStyleType',\n cursor: 0,\n cx: 0,\n cy: 0,\n d: 0,\n decelerate: 0,\n descent: 0,\n diffuseConstant: 'diffuseConstant',\n direction: 0,\n display: 0,\n divisor: 0,\n dominantBaseline: 'dominant-baseline',\n dur: 0,\n dx: 0,\n dy: 0,\n edgeMode: 'edgeMode',\n elevation: 0,\n enableBackground: 'enable-background',\n end: 0,\n exponent: 0,\n externalResourcesRequired: 'externalResourcesRequired',\n fill: 0,\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n filter: 0,\n filterRes: 'filterRes',\n filterUnits: 'filterUnits',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n focusable: 0,\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n format: 0,\n from: 0,\n fx: 0,\n fy: 0,\n g1: 0,\n g2: 0,\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n glyphRef: 'glyphRef',\n gradientTransform: 'gradientTransform',\n gradientUnits: 'gradientUnits',\n hanging: 0,\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n ideographic: 0,\n imageRendering: 'image-rendering',\n 'in': 0,\n in2: 0,\n intercept: 0,\n k: 0,\n k1: 0,\n k2: 0,\n k3: 0,\n k4: 0,\n kernelMatrix: 'kernelMatrix',\n kernelUnitLength: 'kernelUnitLength',\n kerning: 0,\n keyPoints: 'keyPoints',\n keySplines: 'keySplines',\n keyTimes: 'keyTimes',\n lengthAdjust: 'lengthAdjust',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n limitingConeAngle: 'limitingConeAngle',\n local: 0,\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n markerHeight: 'markerHeight',\n markerUnits: 'markerUnits',\n markerWidth: 'markerWidth',\n mask: 0,\n maskContentUnits: 'maskContentUnits',\n maskUnits: 'maskUnits',\n mathematical: 0,\n mode: 0,\n numOctaves: 'numOctaves',\n offset: 0,\n opacity: 0,\n operator: 0,\n order: 0,\n orient: 0,\n orientation: 0,\n origin: 0,\n overflow: 0,\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pathLength: 'pathLength',\n patternContentUnits: 'patternContentUnits',\n patternTransform: 'patternTransform',\n patternUnits: 'patternUnits',\n pointerEvents: 'pointer-events',\n points: 0,\n pointsAtX: 'pointsAtX',\n pointsAtY: 'pointsAtY',\n pointsAtZ: 'pointsAtZ',\n preserveAlpha: 'preserveAlpha',\n preserveAspectRatio: 'preserveAspectRatio',\n primitiveUnits: 'primitiveUnits',\n r: 0,\n radius: 0,\n refX: 'refX',\n refY: 'refY',\n renderingIntent: 'rendering-intent',\n repeatCount: 'repeatCount',\n repeatDur: 'repeatDur',\n requiredExtensions: 'requiredExtensions',\n requiredFeatures: 'requiredFeatures',\n restart: 0,\n result: 0,\n rotate: 0,\n rx: 0,\n ry: 0,\n scale: 0,\n seed: 0,\n shapeRendering: 'shape-rendering',\n slope: 0,\n spacing: 0,\n specularConstant: 'specularConstant',\n specularExponent: 'specularExponent',\n speed: 0,\n spreadMethod: 'spreadMethod',\n startOffset: 'startOffset',\n stdDeviation: 'stdDeviation',\n stemh: 0,\n stemv: 0,\n stitchTiles: 'stitchTiles',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n string: 0,\n stroke: 0,\n strokeDasharray: 'stroke-dasharray',\n strokeDashoffset: 'stroke-dashoffset',\n strokeLinecap: 'stroke-linecap',\n strokeLinejoin: 'stroke-linejoin',\n strokeMiterlimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n surfaceScale: 'surfaceScale',\n systemLanguage: 'systemLanguage',\n tableValues: 'tableValues',\n targetX: 'targetX',\n targetY: 'targetY',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n textLength: 'textLength',\n to: 0,\n transform: 0,\n u1: 0,\n u2: 0,\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicode: 0,\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n values: 0,\n vectorEffect: 'vector-effect',\n version: 0,\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n viewBox: 'viewBox',\n viewTarget: 'viewTarget',\n visibility: 0,\n widths: 0,\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n x: 0,\n xHeight: 'x-height',\n x1: 0,\n x2: 0,\n xChannelSelector: 'xChannelSelector',\n xlinkActuate: 'xlink:actuate',\n xlinkArcrole: 'xlink:arcrole',\n xlinkHref: 'xlink:href',\n xlinkRole: 'xlink:role',\n xlinkShow: 'xlink:show',\n xlinkTitle: 'xlink:title',\n xlinkType: 'xlink:type',\n xmlBase: 'xml:base',\n xmlns: 0,\n xmlnsXlink: 'xmlns:xlink',\n xmlLang: 'xml:lang',\n xmlSpace: 'xml:space',\n y: 0,\n y1: 0,\n y2: 0,\n yChannelSelector: 'yChannelSelector',\n z: 0,\n zoomAndPan: 'zoomAndPan'\n};\n\nvar SVGDOMPropertyConfig = {\n Properties: {},\n DOMAttributeNamespaces: {\n xlinkActuate: NS.xlink,\n xlinkArcrole: NS.xlink,\n xlinkHref: NS.xlink,\n xlinkRole: NS.xlink,\n xlinkShow: NS.xlink,\n xlinkTitle: NS.xlink,\n xlinkType: NS.xlink,\n xmlBase: NS.xml,\n xmlLang: NS.xml,\n xmlSpace: NS.xml\n },\n DOMAttributeNames: {}\n};\n\nObject.keys(ATTRS).forEach(function (key) {\n SVGDOMPropertyConfig.Properties[key] = 0;\n if (ATTRS[key]) {\n SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key];\n }\n});\n\nmodule.exports = SVGDOMPropertyConfig;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInputSelection = require('./ReactInputSelection');\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getActiveElement = require('fbjs/lib/getActiveElement');\nvar isTextInputElement = require('./isTextInputElement');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\n\nvar skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\nvar eventTypes = {\n select: {\n phasedRegistrationNames: {\n bubbled: 'onSelect',\n captured: 'onSelectCapture'\n },\n dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange']\n }\n};\n\nvar activeElement = null;\nvar activeElementInst = null;\nvar lastSelection = null;\nvar mouseDown = false;\n\n// Track whether a listener exists for this plugin. If none exist, we do\n// not extract events. See #3639.\nvar hasListener = false;\n\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getSelection(node) {\n if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) {\n return {\n start: node.selectionStart,\n end: node.selectionEnd\n };\n } else if (window.getSelection) {\n var selection = window.getSelection();\n return {\n anchorNode: selection.anchorNode,\n anchorOffset: selection.anchorOffset,\n focusNode: selection.focusNode,\n focusOffset: selection.focusOffset\n };\n } else if (document.selection) {\n var range = document.selection.createRange();\n return {\n parentElement: range.parentElement(),\n text: range.text,\n top: range.boundingTop,\n left: range.boundingLeft\n };\n }\n}\n\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @return {?SyntheticEvent}\n */\nfunction constructSelectEvent(nativeEvent, nativeEventTarget) {\n // Ensure we have the right element, and that the user is not dragging a\n // selection (this matches native `select` event behavior). In HTML5, select\n // fires only on input and textarea thus if there's no focused element we\n // won't dispatch.\n if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {\n return null;\n }\n\n // Only fire when selection has actually changed.\n var currentSelection = getSelection(activeElement);\n if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n lastSelection = currentSelection;\n\n var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);\n\n syntheticEvent.type = 'select';\n syntheticEvent.target = activeElement;\n\n EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);\n\n return syntheticEvent;\n }\n\n return null;\n}\n\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\nvar SelectEventPlugin = {\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (!hasListener) {\n return null;\n }\n\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n switch (topLevelType) {\n // Track the input node that has focus.\n case 'topFocus':\n if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n activeElement = targetNode;\n activeElementInst = targetInst;\n lastSelection = null;\n }\n break;\n case 'topBlur':\n activeElement = null;\n activeElementInst = null;\n lastSelection = null;\n break;\n // Don't fire the event while the user is dragging. This matches the\n // semantics of the native select event.\n case 'topMouseDown':\n mouseDown = true;\n break;\n case 'topContextMenu':\n case 'topMouseUp':\n mouseDown = false;\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n // Chrome and IE fire non-standard event when selection is changed (and\n // sometimes when it hasn't). IE's event fires out of order with respect\n // to key and input events on deletion, so we discard it.\n //\n // Firefox doesn't support selectionchange, so check selection status\n // after each key entry. The selection changes after keydown and before\n // keyup, but we check on keydown as well in the case of holding down a\n // key, when multiple keydown events are fired but only one keyup is.\n // This is also our approach for IE handling, for the reason above.\n case 'topSelectionChange':\n if (skipSelectionChangeEvent) {\n break;\n }\n // falls through\n case 'topKeyDown':\n case 'topKeyUp':\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n }\n\n return null;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n if (registrationName === 'onSelect') {\n hasListener = true;\n }\n }\n};\n\nmodule.exports = SelectEventPlugin;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar EventListener = require('fbjs/lib/EventListener');\nvar EventPropagators = require('./EventPropagators');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar SyntheticAnimationEvent = require('./SyntheticAnimationEvent');\nvar SyntheticClipboardEvent = require('./SyntheticClipboardEvent');\nvar SyntheticEvent = require('./SyntheticEvent');\nvar SyntheticFocusEvent = require('./SyntheticFocusEvent');\nvar SyntheticKeyboardEvent = require('./SyntheticKeyboardEvent');\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\nvar SyntheticDragEvent = require('./SyntheticDragEvent');\nvar SyntheticTouchEvent = require('./SyntheticTouchEvent');\nvar SyntheticTransitionEvent = require('./SyntheticTransitionEvent');\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\nvar SyntheticWheelEvent = require('./SyntheticWheelEvent');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar getEventCharCode = require('./getEventCharCode');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Turns\n * ['abort', ...]\n * into\n * eventTypes = {\n * 'abort': {\n * phasedRegistrationNames: {\n * bubbled: 'onAbort',\n * captured: 'onAbortCapture',\n * },\n * dependencies: ['topAbort'],\n * },\n * ...\n * };\n * topLevelEventsToDispatchConfig = {\n * 'topAbort': { sameConfig }\n * };\n */\nvar eventTypes = {};\nvar topLevelEventsToDispatchConfig = {};\n['abort', 'animationEnd', 'animationIteration', 'animationStart', 'blur', 'canPlay', 'canPlayThrough', 'click', 'contextMenu', 'copy', 'cut', 'doubleClick', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'focus', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'progress', 'rateChange', 'reset', 'scroll', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchMove', 'touchStart', 'transitionEnd', 'volumeChange', 'waiting', 'wheel'].forEach(function (event) {\n var capitalizedEvent = event[0].toUpperCase() + event.slice(1);\n var onEvent = 'on' + capitalizedEvent;\n var topEvent = 'top' + capitalizedEvent;\n\n var type = {\n phasedRegistrationNames: {\n bubbled: onEvent,\n captured: onEvent + 'Capture'\n },\n dependencies: [topEvent]\n };\n eventTypes[event] = type;\n topLevelEventsToDispatchConfig[topEvent] = type;\n});\n\nvar onClickListeners = {};\n\nfunction getDictionaryKey(inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n}\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nvar SimpleEventPlugin = {\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];\n if (!dispatchConfig) {\n return null;\n }\n var EventConstructor;\n switch (topLevelType) {\n case 'topAbort':\n case 'topCanPlay':\n case 'topCanPlayThrough':\n case 'topDurationChange':\n case 'topEmptied':\n case 'topEncrypted':\n case 'topEnded':\n case 'topError':\n case 'topInput':\n case 'topInvalid':\n case 'topLoad':\n case 'topLoadedData':\n case 'topLoadedMetadata':\n case 'topLoadStart':\n case 'topPause':\n case 'topPlay':\n case 'topPlaying':\n case 'topProgress':\n case 'topRateChange':\n case 'topReset':\n case 'topSeeked':\n case 'topSeeking':\n case 'topStalled':\n case 'topSubmit':\n case 'topSuspend':\n case 'topTimeUpdate':\n case 'topVolumeChange':\n case 'topWaiting':\n // HTML Events\n // @see http://www.w3.org/TR/html5/index.html#events-0\n EventConstructor = SyntheticEvent;\n break;\n case 'topKeyPress':\n // Firefox creates a keypress event for function keys too. This removes\n // the unwanted keypress events. Enter is however both printable and\n // non-printable. One would expect Tab to be as well (but it isn't).\n if (getEventCharCode(nativeEvent) === 0) {\n return null;\n }\n /* falls through */\n case 'topKeyDown':\n case 'topKeyUp':\n EventConstructor = SyntheticKeyboardEvent;\n break;\n case 'topBlur':\n case 'topFocus':\n EventConstructor = SyntheticFocusEvent;\n break;\n case 'topClick':\n // Firefox creates a click event on right mouse clicks. This removes the\n // unwanted click events.\n if (nativeEvent.button === 2) {\n return null;\n }\n /* falls through */\n case 'topDoubleClick':\n case 'topMouseDown':\n case 'topMouseMove':\n case 'topMouseUp':\n // TODO: Disabled elements should not respond to mouse events\n /* falls through */\n case 'topMouseOut':\n case 'topMouseOver':\n case 'topContextMenu':\n EventConstructor = SyntheticMouseEvent;\n break;\n case 'topDrag':\n case 'topDragEnd':\n case 'topDragEnter':\n case 'topDragExit':\n case 'topDragLeave':\n case 'topDragOver':\n case 'topDragStart':\n case 'topDrop':\n EventConstructor = SyntheticDragEvent;\n break;\n case 'topTouchCancel':\n case 'topTouchEnd':\n case 'topTouchMove':\n case 'topTouchStart':\n EventConstructor = SyntheticTouchEvent;\n break;\n case 'topAnimationEnd':\n case 'topAnimationIteration':\n case 'topAnimationStart':\n EventConstructor = SyntheticAnimationEvent;\n break;\n case 'topTransitionEnd':\n EventConstructor = SyntheticTransitionEvent;\n break;\n case 'topScroll':\n EventConstructor = SyntheticUIEvent;\n break;\n case 'topWheel':\n EventConstructor = SyntheticWheelEvent;\n break;\n case 'topCopy':\n case 'topCut':\n case 'topPaste':\n EventConstructor = SyntheticClipboardEvent;\n break;\n }\n !EventConstructor ? process.env.NODE_ENV !== 'production' ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : _prodInvariant('86', topLevelType) : void 0;\n var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n // Mobile Safari does not fire properly bubble click events on\n // non-interactive elements, which means delegated click listeners do not\n // fire. The workaround for this bug involves attaching an empty click\n // listener on the target node.\n // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n if (!onClickListeners[key]) {\n onClickListeners[key] = EventListener.listen(node, 'click', emptyFunction);\n }\n }\n },\n\n willDeleteListener: function (inst, registrationName) {\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n onClickListeners[key].remove();\n delete onClickListeners[key];\n }\n }\n};\n\nmodule.exports = SimpleEventPlugin;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\nvar AnimationEventInterface = {\n animationName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);\n\nmodule.exports = SyntheticAnimationEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\nvar ClipboardEventInterface = {\n clipboardData: function (event) {\n return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);\n\nmodule.exports = SyntheticClipboardEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar FocusEventInterface = {\n relatedTarget: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);\n\nmodule.exports = SyntheticFocusEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar getEventCharCode = require('./getEventCharCode');\nvar getEventKey = require('./getEventKey');\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar KeyboardEventInterface = {\n key: getEventKey,\n location: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n repeat: null,\n locale: null,\n getModifierState: getEventModifierState,\n // Legacy Interface\n charCode: function (event) {\n // `charCode` is the result of a KeyPress event and represents the value of\n // the actual printable character.\n\n // KeyPress is deprecated, but its replacement is not yet final and not\n // implemented in any major browser. Only KeyPress has charCode.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n return 0;\n },\n keyCode: function (event) {\n // `keyCode` is the result of a KeyDown/Up event and represents the value of\n // physical keyboard key.\n\n // The actual meaning of the value depends on the users' keyboard layout\n // which cannot be detected. Assuming that it is a US keyboard layout\n // provides a surprisingly accurate mapping for US and European users.\n // Due to this, it is left to the user to implement at this time.\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n },\n which: function (event) {\n // `which` is an alias for either `keyCode` or `charCode` depending on the\n // type of the event.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);\n\nmodule.exports = SyntheticKeyboardEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar getEventCharCode = require('./getEventCharCode');\n\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar normalizeKey = {\n Esc: 'Escape',\n Spacebar: ' ',\n Left: 'ArrowLeft',\n Up: 'ArrowUp',\n Right: 'ArrowRight',\n Down: 'ArrowDown',\n Del: 'Delete',\n Win: 'OS',\n Menu: 'ContextMenu',\n Apps: 'ContextMenu',\n Scroll: 'ScrollLock',\n MozPrintableKey: 'Unidentified'\n};\n\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar translateToKey = {\n 8: 'Backspace',\n 9: 'Tab',\n 12: 'Clear',\n 13: 'Enter',\n 16: 'Shift',\n 17: 'Control',\n 18: 'Alt',\n 19: 'Pause',\n 20: 'CapsLock',\n 27: 'Escape',\n 32: ' ',\n 33: 'PageUp',\n 34: 'PageDown',\n 35: 'End',\n 36: 'Home',\n 37: 'ArrowLeft',\n 38: 'ArrowUp',\n 39: 'ArrowRight',\n 40: 'ArrowDown',\n 45: 'Insert',\n 46: 'Delete',\n 112: 'F1',\n 113: 'F2',\n 114: 'F3',\n 115: 'F4',\n 116: 'F5',\n 117: 'F6',\n 118: 'F7',\n 119: 'F8',\n 120: 'F9',\n 121: 'F10',\n 122: 'F11',\n 123: 'F12',\n 144: 'NumLock',\n 145: 'ScrollLock',\n 224: 'Meta'\n};\n\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\nfunction getEventKey(nativeEvent) {\n if (nativeEvent.key) {\n // Normalize inconsistent values reported by browsers due to\n // implementations of a working draft specification.\n\n // FireFox implements `key` but returns `MozPrintableKey` for all\n // printable characters (normalized to `Unidentified`), ignore it.\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (key !== 'Unidentified') {\n return key;\n }\n }\n\n // Browser does not implement `key`, polyfill as much of it as we can.\n if (nativeEvent.type === 'keypress') {\n var charCode = getEventCharCode(nativeEvent);\n\n // The enter-key is technically both printable and non-printable and can\n // thus be captured by `keypress`, no other non-printable key should.\n return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n }\n if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n // While user keyboard layout determines the actual meaning of each\n // `keyCode` value, almost all function keys have a universal value.\n return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n }\n return '';\n}\n\nmodule.exports = getEventKey;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar DragEventInterface = {\n dataTransfer: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);\n\nmodule.exports = SyntheticDragEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\nvar TouchEventInterface = {\n touches: null,\n targetTouches: null,\n changedTouches: null,\n altKey: null,\n metaKey: null,\n ctrlKey: null,\n shiftKey: null,\n getModifierState: getEventModifierState\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);\n\nmodule.exports = SyntheticTouchEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\nvar TransitionEventInterface = {\n propertyName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);\n\nmodule.exports = SyntheticTransitionEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar WheelEventInterface = {\n deltaX: function (event) {\n return 'deltaX' in event ? event.deltaX : // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n 'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n },\n deltaY: function (event) {\n return 'deltaY' in event ? event.deltaY : // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n 'wheelDeltaY' in event ? -event.wheelDeltaY : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n 'wheelDelta' in event ? -event.wheelDelta : 0;\n },\n deltaZ: null,\n\n // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n deltaMode: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticMouseEvent}\n */\nfunction SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);\n\nmodule.exports = SyntheticWheelEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDOMFeatureFlags = {\n useCreateElement: true,\n useFiber: false\n};\n\nmodule.exports = ReactDOMFeatureFlags;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar MOD = 65521;\n\n// adler32 is not cryptographically strong, and is only used to sanity check that\n// markup generated on the server matches the markup generated on the client.\n// This implementation (a modified version of the SheetJS version) has been optimized\n// for our use case, at the expense of conforming to the adler32 specification\n// for non-ascii inputs.\nfunction adler32(data) {\n var a = 1;\n var b = 0;\n var i = 0;\n var l = data.length;\n var m = l & ~0x3;\n while (i < m) {\n var n = Math.min(i + 4096, m);\n for (; i < n; i += 4) {\n b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));\n }\n a %= MOD;\n b %= MOD;\n }\n for (; i < l; i++) {\n b += a += data.charCodeAt(i);\n }\n a %= MOD;\n b %= MOD;\n return a | b << 16;\n}\n\nmodule.exports = adler32;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstanceMap = require('./ReactInstanceMap');\n\nvar getHostComponentFromComposite = require('./getHostComponentFromComposite');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Returns the DOM node rendered by this element.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode\n *\n * @param {ReactComponent|DOMElement} componentOrElement\n * @return {?DOMElement} The root node of this element.\n */\nfunction findDOMNode(componentOrElement) {\n if (process.env.NODE_ENV !== 'production') {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n if (componentOrElement == null) {\n return null;\n }\n if (componentOrElement.nodeType === 1) {\n return componentOrElement;\n }\n\n var inst = ReactInstanceMap.get(componentOrElement);\n if (inst) {\n inst = getHostComponentFromComposite(inst);\n return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;\n }\n\n if (typeof componentOrElement.render === 'function') {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'findDOMNode was called on an unmounted component.') : _prodInvariant('44') : void 0;\n } else {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : _prodInvariant('45', Object.keys(componentOrElement)) : void 0;\n }\n}\n\nmodule.exports = findDOMNode;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactMount = require('./ReactMount');\n\nmodule.exports = ReactMount.renderSubtreeIntoContainer;","\"use strict\";\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar Skinner = function () {\n function Skinner() {\n (0, _classCallCheck3.default)(this, Skinner);\n\n this.components = null;\n }\n\n (0, _createClass3.default)(Skinner, [{\n key: \"getComponent\",\n value: function getComponent(name) {\n if (this.components === null) {\n throw new Error(\"Attempted to get a component before a skin has been loaded.\" + \" This is probably because either:\" + \" a) Your app has not called sdk.loadSkin(), or\" + \" b) A component has called getComponent at the root level\");\n }\n var comp = this.components[name];\n // XXX: Temporarily also try 'views.' as we're currently\n // leaving the 'views.' off views.\n if (!comp) {\n comp = this.components['views.' + name];\n }\n\n if (!comp) {\n throw new Error(\"No such component: \" + name);\n }\n\n // components have to be functions.\n var validType = typeof comp === 'function';\n if (!validType) {\n throw new Error(\"Not a valid component: \" + name + \".\");\n }\n return comp;\n }\n }, {\n key: \"load\",\n value: function load(skinObject) {\n if (this.components !== null) {\n throw new Error(\"Attempted to load a skin while a skin is already loaded\" + \"If you want to change the active skin, call resetSkin first\");\n }\n this.components = {};\n var compKeys = (0, _keys2.default)(skinObject.components);\n for (var i = 0; i < compKeys.length; ++i) {\n var comp = skinObject.components[compKeys[i]];\n this.addComponent(compKeys[i], comp);\n }\n }\n }, {\n key: \"addComponent\",\n value: function addComponent(name, comp) {\n var slot = name;\n if (comp.replaces !== undefined) {\n if (comp.replaces.indexOf('.') > -1) {\n slot = comp.replaces;\n } else {\n slot = name.substr(0, name.lastIndexOf('.') + 1) + comp.replaces.split('.').pop();\n }\n }\n this.components[slot] = comp;\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.components = null;\n }\n }]);\n return Skinner;\n}();\n\n// We define one Skinner globally, because the intention is\n// very much that it is a singleton. Relying on there only being one\n// copy of the module can be dicey and not work as browserify's\n// behaviour with multiple copies of files etc. is erratic at best.\n// XXX: We can still end up with the same file twice in the resulting\n// JS bundle which is nonideal.\n// See https://derickbailey.com/2016/03/09/creating-a-true-singleton-in-node-js-with-es6-symbols/\n// or https://nodejs.org/api/modules.html#modules_module_caching_caveats\n// (\"Modules are cached based on their resolved filename\")\n\n\nif (global.mxSkinner === undefined) {\n global.mxSkinner = new Skinner();\n}\nmodule.exports = global.mxSkinner;\n//# sourceMappingURL=Skinner.js.map","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n var len = b64.length\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n // base64 is 4/3 + up to two characters of the original data\n return b64.length * 3 / 4 - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n var i, j, l, tmp, placeHolders, arr\n var len = b64.length\n placeHolders = placeHoldersCount(b64)\n\n arr = new Arr(len * 3 / 4 - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var output = ''\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * An IndexedDB store backend where the actual backend sits in a web\n * worker.\n *\n * Construct a new Indexed Database store backend. This requires a call to\n * <code>connect()</code> before this store can be used.\n * @constructor\n * @param {string} workerScript URL to the worker script\n * @param {string=} dbName Optional database name. The same name must be used\n * to open the same database.\n * @param {Object} workerApi The web worker compatible interface object\n */\nvar RemoteIndexedDBStoreBackend = function RemoteIndexedDBStoreBackend(workerScript, dbName, workerApi) {\n this._workerScript = workerScript;\n this._dbName = dbName;\n this._workerApi = workerApi;\n this._worker = null;\n this._nextSeq = 0;\n // The currently in-flight requests to the actual backend\n this._inFlight = {\n // seq: promise,\n };\n // Once we start connecting, we keep the promise and re-use it\n // if we try to connect again\n this._startPromise = null;\n}; /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nRemoteIndexedDBStoreBackend.prototype = {\n /**\n * Attempt to connect to the database. This can fail if the user does not\n * grant permission.\n * @return {Promise} Resolves if successfully connected.\n */\n connect: function connect() {\n var _this = this;\n\n return this._ensureStarted().then(function () {\n return _this._doCmd('connect');\n });\n },\n\n /**\n * Clear the entire database. This should be used when logging out of a client\n * to prevent mixing data between accounts.\n * @return {Promise} Resolved when the database is cleared.\n */\n clearDatabase: function clearDatabase() {\n var _this2 = this;\n\n return this._ensureStarted().then(function () {\n return _this2._doCmd('clearDatabase');\n });\n },\n /** @return {Promise<bool>} whether or not the database was newly created in this session. */\n isNewlyCreated: function isNewlyCreated() {\n return this._doCmd('isNewlyCreated');\n },\n /**\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\n getSavedSync: function getSavedSync() {\n return this._doCmd('getSavedSync');\n },\n\n getNextBatchToken: function getNextBatchToken() {\n return this._doCmd('getNextBatchToken');\n },\n\n setSyncData: function setSyncData(syncData) {\n return this._doCmd('setSyncData', [syncData]);\n },\n\n syncToDatabase: function syncToDatabase(users) {\n return this._doCmd('syncToDatabase', [users]);\n },\n\n /**\n * Returns the out-of-band membership events for this room that\n * were previously loaded.\n * @param {string} roomId\n * @returns {event[]} the events, potentially an empty array if OOB loading didn't yield any new members\n * @returns {null} in case the members for this room haven't been stored yet\n */\n getOutOfBandMembers: function getOutOfBandMembers(roomId) {\n return this._doCmd('getOutOfBandMembers', [roomId]);\n },\n\n /**\n * Stores the out-of-band membership events for this room. Note that\n * it still makes sense to store an empty array as the OOB status for the room is\n * marked as fetched, and getOutOfBandMembers will return an empty array instead of null\n * @param {string} roomId\n * @param {event[]} membershipEvents the membership events to store\n * @returns {Promise} when all members have been stored\n */\n setOutOfBandMembers: function setOutOfBandMembers(roomId, membershipEvents) {\n return this._doCmd('setOutOfBandMembers', [roomId, membershipEvents]);\n },\n\n clearOutOfBandMembers: function clearOutOfBandMembers(roomId) {\n return this._doCmd('clearOutOfBandMembers', [roomId]);\n },\n\n getClientOptions: function getClientOptions() {\n return this._doCmd('getClientOptions');\n },\n\n storeClientOptions: function storeClientOptions(options) {\n return this._doCmd('storeClientOptions', [options]);\n },\n\n /**\n * Load all user presence events from the database. This is not cached.\n * @return {Promise<Object[]>} A list of presence events in their raw form.\n */\n getUserPresenceEvents: function getUserPresenceEvents() {\n return this._doCmd('getUserPresenceEvents');\n },\n\n _ensureStarted: function _ensureStarted() {\n if (this._startPromise === null) {\n this._worker = new this._workerApi(this._workerScript);\n this._worker.onmessage = this._onWorkerMessage.bind(this);\n\n // tell the worker the db name.\n this._startPromise = this._doCmd('_setupWorker', [this._dbName]).then(function () {\n console.log(\"IndexedDB worker is ready\");\n });\n }\n return this._startPromise;\n },\n\n _doCmd: function _doCmd(cmd, args) {\n var _this3 = this;\n\n // wrap in a q so if the postMessage throws,\n // the promise automatically gets rejected\n return _bluebird2.default.resolve().then(function () {\n var seq = _this3._nextSeq++;\n var def = _bluebird2.default.defer();\n\n _this3._inFlight[seq] = def;\n\n _this3._worker.postMessage({\n command: cmd,\n seq: seq,\n args: args\n });\n\n return def.promise;\n });\n },\n\n _onWorkerMessage: function _onWorkerMessage(ev) {\n var msg = ev.data;\n\n if (msg.command == 'cmd_success' || msg.command == 'cmd_fail') {\n if (msg.seq === undefined) {\n console.error(\"Got reply from worker with no seq\");\n return;\n }\n\n var def = this._inFlight[msg.seq];\n if (def === undefined) {\n console.error(\"Got reply for unknown seq \" + msg.seq);\n return;\n }\n delete this._inFlight[msg.seq];\n\n if (msg.command == 'cmd_success') {\n def.resolve(msg.result);\n } else {\n var error = new Error(msg.error.message);\n error.name = msg.error.name;\n def.reject(error);\n }\n } else {\n console.warn(\"Unrecognised message from worker: \" + msg);\n }\n }\n};\n\nexports.default = RemoteIndexedDBStoreBackend;\n//# sourceMappingURL=indexeddb-remote-backend.js.map","/*!\n * content-type\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 7231 sec 3.1.1.1\n *\n * parameter = token \"=\" ( token / quoted-string )\n * token = 1*tchar\n * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n * / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n * / DIGIT / ALPHA\n * ; any VCHAR, except delimiters\n * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\n * qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text\n * obs-text = %x80-FF\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n */\nvar PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *(\"(?:[\\u000b\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u000b\\u0020-\\u00ff])*\"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g\nvar TEXT_REGEXP = /^[\\u000b\\u0020-\\u007e\\u0080-\\u00ff]+$/\nvar TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 7230 sec 3.2.6\n *\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n * obs-text = %x80-FF\n */\nvar QESC_REGEXP = /\\\\([\\u000b\\u0020-\\u00ff])/g\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6\n */\nvar QUOTE_REGEXP = /([\\\\\"])/g\n\n/**\n * RegExp to match type in RFC 7231 sec 3.1.1.1\n *\n * media-type = type \"/\" subtype\n * type = token\n * subtype = token\n */\nvar TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * Module exports.\n * @public\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n if (!obj || typeof obj !== 'object') {\n throw new TypeError('argument obj is required')\n }\n\n var parameters = obj.parameters\n var type = obj.type\n\n if (!type || !TYPE_REGEXP.test(type)) {\n throw new TypeError('invalid type')\n }\n\n var string = type\n\n // append parameters\n if (parameters && typeof parameters === 'object') {\n var param\n var params = Object.keys(parameters).sort()\n\n for (var i = 0; i < params.length; i++) {\n param = params[i]\n\n if (!TOKEN_REGEXP.test(param)) {\n throw new TypeError('invalid parameter name')\n }\n\n string += '; ' + param + '=' + qstring(parameters[param])\n }\n }\n\n return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @public\n */\n\nfunction parse (string) {\n if (!string) {\n throw new TypeError('argument string is required')\n }\n\n // support req/res-like objects as argument\n var header = typeof string === 'object'\n ? getcontenttype(string)\n : string\n\n if (typeof header !== 'string') {\n throw new TypeError('argument string is required to be a string')\n }\n\n var index = header.indexOf(';')\n var type = index !== -1\n ? header.substr(0, index).trim()\n : header.trim()\n\n if (!TYPE_REGEXP.test(type)) {\n throw new TypeError('invalid media type')\n }\n\n var obj = new ContentType(type.toLowerCase())\n\n // parse parameters\n if (index !== -1) {\n var key\n var match\n var value\n\n PARAM_REGEXP.lastIndex = index\n\n while ((match = PARAM_REGEXP.exec(header))) {\n if (match.index !== index) {\n throw new TypeError('invalid parameter format')\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value[0] === '\"') {\n // remove quotes and escapes\n value = value\n .substr(1, value.length - 2)\n .replace(QESC_REGEXP, '$1')\n }\n\n obj.parameters[key] = value\n }\n\n if (index !== header.length) {\n throw new TypeError('invalid parameter format')\n }\n }\n\n return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @private\n */\n\nfunction getcontenttype (obj) {\n var header\n\n if (typeof obj.getHeader === 'function') {\n // res-like\n header = obj.getHeader('content-type')\n } else if (typeof obj.headers === 'object') {\n // req-like\n header = obj.headers && obj.headers['content-type']\n }\n\n if (typeof header !== 'string') {\n throw new TypeError('content-type header is missing from object')\n }\n\n return header\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n var str = String(val)\n\n // no need to quote tokens\n if (TOKEN_REGEXP.test(str)) {\n return str\n }\n\n if (str.length > 0 && !TEXT_REGEXP.test(str)) {\n throw new TypeError('invalid parameter value')\n }\n\n return '\"' + str.replace(QUOTE_REGEXP, '\\\\$1') + '\"'\n}\n\n/**\n * Class to represent a content type.\n * @private\n */\nfunction ContentType (type) {\n this.parameters = Object.create(null)\n this.type = type\n}\n","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/* A re-implementation of the javascript callback functions (setTimeout,\n * clearTimeout; setInterval and clearInterval are not yet implemented) which\n * try to improve handling of large clock jumps (as seen when\n * suspending/resuming the system).\n *\n * In particular, if a timeout would have fired while the system was suspended,\n * it will instead fire as soon as possible after resume.\n */\n\n\"use strict\";\n\n// we schedule a callback at least this often, to check if we've missed out on\n// some wall-clock time due to being suspended.\n\nvar TIMER_CHECK_PERIOD_MS = 1000;\n\n// counter, for making up ids to return from setTimeout\nvar _count = 0;\n\n// the key for our callback with the real global.setTimeout\nvar _realCallbackKey = void 0;\n\n// a sorted list of the callbacks to be run.\n// each is an object with keys [runAt, func, params, key].\nvar _callbackList = [];\n\n// var debuglog = console.log.bind(console);\nvar debuglog = function debuglog() {};\n\n/**\n * Replace the function used by this module to get the current time.\n *\n * Intended for use by the unit tests.\n *\n * @param {function} f function which should return a millisecond counter\n *\n * @internal\n */\nmodule.exports.setNow = function (f) {\n _now = f || Date.now;\n};\nvar _now = Date.now;\n\n/**\n * reimplementation of window.setTimeout, which will call the callback if\n * the wallclock time goes past the deadline.\n *\n * @param {function} func callback to be called after a delay\n * @param {Number} delayMs number of milliseconds to delay by\n *\n * @return {Number} an identifier for this callback, which may be passed into\n * clearTimeout later.\n */\nmodule.exports.setTimeout = function (func, delayMs) {\n delayMs = delayMs || 0;\n if (delayMs < 0) {\n delayMs = 0;\n }\n\n var params = Array.prototype.slice.call(arguments, 2);\n var runAt = _now() + delayMs;\n var key = _count++;\n debuglog(\"setTimeout: scheduling cb\", key, \"at\", runAt, \"(delay\", delayMs, \")\");\n var data = {\n runAt: runAt,\n func: func,\n params: params,\n key: key\n };\n\n // figure out where it goes in the list\n var idx = binarySearch(_callbackList, function (el) {\n return el.runAt - runAt;\n });\n\n _callbackList.splice(idx, 0, data);\n _scheduleRealCallback();\n\n return key;\n};\n\n/**\n * reimplementation of window.clearTimeout, which mirrors setTimeout\n *\n * @param {Number} key result from an earlier setTimeout call\n */\nmodule.exports.clearTimeout = function (key) {\n if (_callbackList.length === 0) {\n return;\n }\n\n // remove the element from the list\n var i = void 0;\n for (i = 0; i < _callbackList.length; i++) {\n var cb = _callbackList[i];\n if (cb.key == key) {\n _callbackList.splice(i, 1);\n break;\n }\n }\n\n // iff it was the first one in the list, reschedule our callback.\n if (i === 0) {\n _scheduleRealCallback();\n }\n};\n\n// use the real global.setTimeout to schedule a callback to _runCallbacks.\nfunction _scheduleRealCallback() {\n if (_realCallbackKey) {\n global.clearTimeout(_realCallbackKey);\n }\n\n var first = _callbackList[0];\n\n if (!first) {\n debuglog(\"_scheduleRealCallback: no more callbacks, not rescheduling\");\n return;\n }\n\n var now = _now();\n var delayMs = Math.min(first.runAt - now, TIMER_CHECK_PERIOD_MS);\n\n debuglog(\"_scheduleRealCallback: now:\", now, \"delay:\", delayMs);\n _realCallbackKey = global.setTimeout(_runCallbacks, delayMs);\n}\n\nfunction _runCallbacks() {\n var cb = void 0;\n var now = _now();\n debuglog(\"_runCallbacks: now:\", now);\n\n // get the list of things to call\n var callbacksToRun = [];\n while (true) {\n var first = _callbackList[0];\n if (!first || first.runAt > now) {\n break;\n }\n cb = _callbackList.shift();\n debuglog(\"_runCallbacks: popping\", cb.key);\n callbacksToRun.push(cb);\n }\n\n // reschedule the real callback before running our functions, to\n // keep the codepaths the same whether or not our functions\n // register their own setTimeouts.\n _scheduleRealCallback();\n\n for (var i = 0; i < callbacksToRun.length; i++) {\n cb = callbacksToRun[i];\n try {\n cb.func.apply(global, cb.params);\n } catch (e) {\n console.error(\"Uncaught exception in callback function\", e.stack || e);\n }\n }\n}\n\n/* search in a sorted array.\n *\n * returns the index of the last element for which func returns\n * greater than zero, or array.length if no such element exists.\n */\nfunction binarySearch(array, func) {\n // min is inclusive, max exclusive.\n var min = 0,\n max = array.length;\n\n while (min < max) {\n var mid = min + max >> 1;\n var res = func(array[mid]);\n if (res > 0) {\n // the element at 'mid' is too big; set it as the new max.\n max = mid;\n } else {\n // the element at 'mid' is too small. 'min' is inclusive, so +1.\n min = mid + 1;\n }\n }\n // presumably, min==max now.\n return min;\n}\n//# sourceMappingURL=realtime-callbacks.js.map","module.exports = { \"default\": require(\"core-js/library/fn/reflect/get-prototype-of\"), __esModule: true };","require('../../modules/es6.reflect.get-prototype-of');\nmodule.exports = require('../../modules/_core').Reflect.getPrototypeOf;\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/reflect/set-prototype-of\"), __esModule: true };","require('../../modules/es6.reflect.set-prototype-of');\nmodule.exports = require('../../modules/_core').Reflect.setPrototypeOf;\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/reflect/construct\"), __esModule: true };","require('../../modules/es6.reflect.construct');\nmodule.exports = require('../../modules/_core').Reflect.construct;\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.set');\nrequire('../modules/es7.set.to-json');\nrequire('../modules/es7.set.of');\nrequire('../modules/es7.set.from');\nmodule.exports = require('../modules/_core').Set;\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Set', { toJSON: require('./_collection-to-json')('Set') });\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\nrequire('./_set-collection-of')('Set');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\nrequire('./_set-collection-from')('Set');\n","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _bluebird = require('bluebird');\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _indexeddbCryptoStore = require('./store/indexeddb-crypto-store');\n\nvar _indexeddbCryptoStore2 = _interopRequireDefault(_indexeddbCryptoStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @alias module:crypto/RoomList\n */\nvar RoomList = function () {\n function RoomList(cryptoStore, sessionStore) {\n (0, _classCallCheck3.default)(this, RoomList);\n\n this._cryptoStore = cryptoStore;\n this._sessionStore = sessionStore;\n\n // Object of roomId -> room e2e info object (body of the m.room.encryption event)\n this._roomEncryption = {};\n }\n\n (0, _createClass3.default)(RoomList, [{\n key: 'init',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this = this;\n\n var removeSessionStoreRooms;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n removeSessionStoreRooms = false;\n _context.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ROOMS], function (txn) {\n _this._cryptoStore.getEndToEndRooms(txn, function (result) {\n if (result === null || (0, _keys2.default)(result).length === 0) {\n // migrate from session store, if there's data there\n var sessStoreRooms = _this._sessionStore.getAllEndToEndRooms();\n if (sessStoreRooms !== null) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(sessStoreRooms)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var roomId = _step.value;\n\n _this._cryptoStore.storeEndToEndRoom(roomId, sessStoreRooms[roomId], txn);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n _this._roomEncryption = sessStoreRooms;\n removeSessionStoreRooms = true;\n } else {\n _this._roomEncryption = result;\n }\n });\n }));\n\n case 3:\n if (removeSessionStoreRooms) {\n this._sessionStore.removeAllEndToEndRooms();\n }\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function init() {\n return _ref.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: 'getRoomEncryption',\n value: function getRoomEncryption(roomId) {\n return this._roomEncryption[roomId] || null;\n }\n }, {\n key: 'isRoomEncrypted',\n value: function isRoomEncrypted(roomId) {\n return Boolean(this.getRoomEncryption(roomId));\n }\n }, {\n key: 'setRoomEncryption',\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(roomId, roomInfo) {\n var _this2 = this;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // important that this happens before calling into the store\n // as it prevents the Crypto::setRoomEncryption from calling\n // this twice for consecutive m.room.encryption events\n this._roomEncryption[roomId] = roomInfo;\n _context2.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ROOMS], function (txn) {\n _this2._cryptoStore.storeEndToEndRoom(roomId, roomInfo, txn);\n }));\n\n case 3:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function setRoomEncryption(_x, _x2) {\n return _ref2.apply(this, arguments);\n }\n\n return setRoomEncryption;\n }()\n }]);\n return RoomList;\n}(); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/**\n * @module crypto/RoomList\n *\n * Manages the list of encrypted rooms\n */\n\nexports.default = RoomList;\n//# sourceMappingURL=RoomList.js.map","/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n if (typeof define === 'function' && define.amd) {\n define(definition);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n \"use strict\";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = \"undefined\";\n\n var logMethods = [\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ];\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === 'debug') {\n methodName = 'log';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n }\n\n // In old IE versions, the console isn't present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = \"loglevel\";\n if (name) {\n storageKey += \":\" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n if (typeof window === undefinedType) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + \"=\");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return \"No console available for logging\";\n }\n } else {\n throw \"log.setLevel() called with invalid level: \" + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== \"string\" || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n return defaultLogger;\n}));\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _entries = require('babel-runtime/core-js/object/entries');\n\nvar _entries2 = _interopRequireDefault(_entries);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _logger = require('../../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _memoryCryptoStore = require('./memory-crypto-store.js');\n\nvar _memoryCryptoStore2 = _interopRequireDefault(_memoryCryptoStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Internal module. Partial localStorage backed storage for e2e.\n * This is not a full crypto store, just the in-memory store with\n * some things backed by localStorage. It exists because indexedDB\n * is broken in Firefox private mode or set to, \"will not remember\n * history\".\n *\n * @module\n */\n\nvar E2E_PREFIX = \"crypto.\"; /*\n Copyright 2017, 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar KEY_END_TO_END_ACCOUNT = E2E_PREFIX + \"account\";\nvar KEY_DEVICE_DATA = E2E_PREFIX + \"device_data\";\nvar KEY_INBOUND_SESSION_PREFIX = E2E_PREFIX + \"inboundgroupsessions/\";\nvar KEY_ROOMS_PREFIX = E2E_PREFIX + \"rooms/\";\nvar KEY_SESSIONS_NEEDING_BACKUP = E2E_PREFIX + \"sessionsneedingbackup\";\n\nfunction keyEndToEndSessions(deviceKey) {\n return E2E_PREFIX + \"sessions/\" + deviceKey;\n}\n\nfunction keyEndToEndInboundGroupSession(senderKey, sessionId) {\n return KEY_INBOUND_SESSION_PREFIX + senderKey + \"/\" + sessionId;\n}\n\nfunction keyEndToEndRoomsPrefix(roomId) {\n return KEY_ROOMS_PREFIX + roomId;\n}\n\n/**\n * @implements {module:crypto/store/base~CryptoStore}\n */\n\nvar LocalStorageCryptoStore = function (_MemoryCryptoStore) {\n (0, _inherits3.default)(LocalStorageCryptoStore, _MemoryCryptoStore);\n\n function LocalStorageCryptoStore(webStore) {\n (0, _classCallCheck3.default)(this, LocalStorageCryptoStore);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (LocalStorageCryptoStore.__proto__ || (0, _getPrototypeOf2.default)(LocalStorageCryptoStore)).call(this));\n\n _this.store = webStore;\n return _this;\n }\n\n // Olm Sessions\n\n (0, _createClass3.default)(LocalStorageCryptoStore, [{\n key: 'countEndToEndSessions',\n value: function countEndToEndSessions(txn, func) {\n var count = 0;\n for (var i = 0; i < this.store.length; ++i) {\n if (this.store.key(i).startsWith(keyEndToEndSessions(''))) ++count;\n }\n func(count);\n }\n }, {\n key: '_getEndToEndSessions',\n value: function _getEndToEndSessions(deviceKey, txn, func) {\n var sessions = getJsonItem(this.store, keyEndToEndSessions(deviceKey));\n var fixedSessions = {};\n\n // fix up any old sessions to be objects rather than just the base64 pickle\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _entries2.default)(sessions || {})), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _step$value = (0, _slicedToArray3.default)(_step.value, 2),\n sid = _step$value[0],\n val = _step$value[1];\n\n if (typeof val === 'string') {\n fixedSessions[sid] = {\n session: val\n };\n } else {\n fixedSessions[sid] = val;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return fixedSessions;\n }\n }, {\n key: 'getEndToEndSession',\n value: function getEndToEndSession(deviceKey, sessionId, txn, func) {\n var sessions = this._getEndToEndSessions(deviceKey);\n func(sessions[sessionId] || {});\n }\n }, {\n key: 'getEndToEndSessions',\n value: function getEndToEndSessions(deviceKey, txn, func) {\n func(this._getEndToEndSessions(deviceKey) || {});\n }\n }, {\n key: 'getAllEndToEndSessions',\n value: function getAllEndToEndSessions(txn, func) {\n for (var i = 0; i < this.store.length; ++i) {\n if (this.store.key(i).startsWith(keyEndToEndSessions(''))) {\n var deviceKey = this.store.key(i).split('/')[1];\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _values2.default)(this._getEndToEndSessions(deviceKey))), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var sess = _step2.value;\n\n func(sess);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n }\n }\n }, {\n key: 'storeEndToEndSession',\n value: function storeEndToEndSession(deviceKey, sessionId, sessionInfo, txn) {\n var sessions = this._getEndToEndSessions(deviceKey) || {};\n sessions[sessionId] = sessionInfo;\n setJsonItem(this.store, keyEndToEndSessions(deviceKey), sessions);\n }\n\n // Inbound Group Sessions\n\n }, {\n key: 'getEndToEndInboundGroupSession',\n value: function getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func) {\n func(getJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId)));\n }\n }, {\n key: 'getAllEndToEndInboundGroupSessions',\n value: function getAllEndToEndInboundGroupSessions(txn, func) {\n for (var i = 0; i < this.store.length; ++i) {\n var key = this.store.key(i);\n if (key.startsWith(KEY_INBOUND_SESSION_PREFIX)) {\n // we can't use split, as the components we are trying to split out\n // might themselves contain '/' characters. We rely on the\n // senderKey being a (32-byte) curve25519 key, base64-encoded\n // (hence 43 characters long).\n\n func({\n senderKey: key.substr(KEY_INBOUND_SESSION_PREFIX.length, 43),\n sessionId: key.substr(KEY_INBOUND_SESSION_PREFIX.length + 44),\n sessionData: getJsonItem(this.store, key)\n });\n }\n }\n func(null);\n }\n }, {\n key: 'addEndToEndInboundGroupSession',\n value: function addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n var existing = getJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId));\n if (!existing) {\n this.storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn);\n }\n }\n }, {\n key: 'storeEndToEndInboundGroupSession',\n value: function storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n setJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId), sessionData);\n }\n }, {\n key: 'getEndToEndDeviceData',\n value: function getEndToEndDeviceData(txn, func) {\n func(getJsonItem(this.store, KEY_DEVICE_DATA));\n }\n }, {\n key: 'storeEndToEndDeviceData',\n value: function storeEndToEndDeviceData(deviceData, txn) {\n setJsonItem(this.store, KEY_DEVICE_DATA, deviceData);\n }\n }, {\n key: 'storeEndToEndRoom',\n value: function storeEndToEndRoom(roomId, roomInfo, txn) {\n setJsonItem(this.store, keyEndToEndRoomsPrefix(roomId), roomInfo);\n }\n }, {\n key: 'getEndToEndRooms',\n value: function getEndToEndRooms(txn, func) {\n var result = {};\n var prefix = keyEndToEndRoomsPrefix('');\n\n for (var i = 0; i < this.store.length; ++i) {\n var key = this.store.key(i);\n if (key.startsWith(prefix)) {\n var roomId = key.substr(prefix.length);\n result[roomId] = getJsonItem(this.store, key);\n }\n }\n func(result);\n }\n }, {\n key: 'getSessionsNeedingBackup',\n value: function getSessionsNeedingBackup(limit) {\n var _this2 = this;\n\n var sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};\n var sessions = [];\n\n for (var session in sessionsNeedingBackup) {\n if (Object.prototype.hasOwnProperty.call(sessionsNeedingBackup, session)) {\n var _ret = function () {\n // see getAllEndToEndInboundGroupSessions for the magic number explanations\n var senderKey = session.substr(0, 43);\n var sessionId = session.substr(44);\n _this2.getEndToEndInboundGroupSession(senderKey, sessionId, null, function (sessionData) {\n sessions.push({\n senderKey: senderKey,\n sessionId: sessionId,\n sessionData: sessionData\n });\n });\n if (limit && session.length >= limit) {\n return 'break';\n }\n }();\n\n if (_ret === 'break') break;\n }\n }\n return _bluebird2.default.resolve(sessions);\n }\n }, {\n key: 'unmarkSessionsNeedingBackup',\n value: function unmarkSessionsNeedingBackup(sessions) {\n var sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(sessions), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var session = _step3.value;\n\n delete sessionsNeedingBackup[session.senderKey + '/' + session.sessionId];\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n setJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP, sessionsNeedingBackup);\n return _bluebird2.default.resolve();\n }\n }, {\n key: 'markSessionsNeedingBackup',\n value: function markSessionsNeedingBackup(sessions) {\n var sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)(sessions), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var session = _step4.value;\n\n sessionsNeedingBackup[session.senderKey + '/' + session.sessionId] = true;\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n setJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP, sessionsNeedingBackup);\n return _bluebird2.default.resolve();\n }\n\n /**\n * Delete all data from this store.\n *\n * @returns {Promise} Promise which resolves when the store has been cleared.\n */\n\n }, {\n key: 'deleteAllData',\n value: function deleteAllData() {\n this.store.removeItem(KEY_END_TO_END_ACCOUNT);\n return _bluebird2.default.resolve();\n }\n\n // Olm account\n\n }, {\n key: 'getAccount',\n value: function getAccount(txn, func) {\n var account = getJsonItem(this.store, KEY_END_TO_END_ACCOUNT);\n func(account);\n }\n }, {\n key: 'storeAccount',\n value: function storeAccount(txn, newData) {\n setJsonItem(this.store, KEY_END_TO_END_ACCOUNT, newData);\n }\n }, {\n key: 'doTxn',\n value: function doTxn(mode, stores, func) {\n return _bluebird2.default.resolve(func(null));\n }\n }]);\n return LocalStorageCryptoStore;\n}(_memoryCryptoStore2.default);\n\nexports.default = LocalStorageCryptoStore;\n\n\nfunction getJsonItem(store, key) {\n try {\n // if the key is absent, store.getItem() returns null, and\n // JSON.parse(null) === null, so this returns null.\n return JSON.parse(store.getItem(key));\n } catch (e) {\n _logger2.default.log(\"Error: Failed to get key %s: %s\", key, e.stack || e);\n _logger2.default.log(e.stack);\n }\n return null;\n}\n\nfunction setJsonItem(store, key, val) {\n store.setItem(key, (0, _stringify2.default)(val));\n}\n//# sourceMappingURL=localStorage-crypto-store.js.map","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Backend = exports.VERSION = undefined;\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.upgradeDatabase = upgradeDatabase;\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _logger = require('../../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _utils = require('../../utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar VERSION = exports.VERSION = 7;\n\n/**\n * Implementation of a CryptoStore which is backed by an existing\n * IndexedDB connection. Generally you want IndexedDBCryptoStore\n * which connects to the database and defers to one of these.\n *\n * @implements {module:crypto/store/base~CryptoStore}\n */\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar Backend = exports.Backend = function () {\n /**\n * @param {IDBDatabase} db\n */\n function Backend(db) {\n var _this = this;\n\n (0, _classCallCheck3.default)(this, Backend);\n\n this._db = db;\n\n // make sure we close the db on `onversionchange` - otherwise\n // attempts to delete the database will block (and subsequent\n // attempts to re-create it will also block).\n db.onversionchange = function (ev) {\n _logger2.default.log('versionchange for indexeddb ' + _this._dbName + ': closing');\n db.close();\n };\n }\n\n /**\n * Look for an existing outgoing room key request, and if none is found,\n * add a new one\n *\n * @param {module:crypto/store/base~OutgoingRoomKeyRequest} request\n *\n * @returns {Promise} resolves to\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}: either the\n * same instance as passed in, or the existing one.\n */\n\n\n (0, _createClass3.default)(Backend, [{\n key: 'getOrAddOutgoingRoomKeyRequest',\n value: function getOrAddOutgoingRoomKeyRequest(request) {\n var requestBody = request.requestBody;\n\n var deferred = _bluebird2.default.defer();\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readwrite\");\n txn.onerror = deferred.reject;\n\n // first see if we already have an entry for this request.\n this._getOutgoingRoomKeyRequest(txn, requestBody, function (existing) {\n if (existing) {\n // this entry matches the request - return it.\n _logger2.default.log('already have key request outstanding for ' + (requestBody.room_id + ' / ' + requestBody.session_id + ': ') + 'not sending another');\n deferred.resolve(existing);\n return;\n }\n\n // we got to the end of the list without finding a match\n // - add the new request.\n _logger2.default.log('enqueueing key request for ' + requestBody.room_id + ' / ' + requestBody.session_id);\n txn.oncomplete = function () {\n deferred.resolve(request);\n };\n var store = txn.objectStore(\"outgoingRoomKeyRequests\");\n store.add(request);\n });\n\n return deferred.promise;\n }\n\n /**\n * Look for an existing room key request\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * existing request to look for\n *\n * @return {Promise} resolves to the matching\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * not found\n */\n\n }, {\n key: 'getOutgoingRoomKeyRequest',\n value: function getOutgoingRoomKeyRequest(requestBody) {\n var deferred = _bluebird2.default.defer();\n\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readonly\");\n txn.onerror = deferred.reject;\n\n this._getOutgoingRoomKeyRequest(txn, requestBody, function (existing) {\n deferred.resolve(existing);\n });\n return deferred.promise;\n }\n\n /**\n * look for an existing room key request in the db\n *\n * @private\n * @param {IDBTransaction} txn database transaction\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * existing request to look for\n * @param {Function} callback function to call with the results of the\n * search. Either passed a matching\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * not found.\n */\n\n }, {\n key: '_getOutgoingRoomKeyRequest',\n value: function _getOutgoingRoomKeyRequest(txn, requestBody, callback) {\n var store = txn.objectStore(\"outgoingRoomKeyRequests\");\n\n var idx = store.index(\"session\");\n var cursorReq = idx.openCursor([requestBody.room_id, requestBody.session_id]);\n\n cursorReq.onsuccess = function (ev) {\n var cursor = ev.target.result;\n if (!cursor) {\n // no match found\n callback(null);\n return;\n }\n\n var existing = cursor.value;\n\n if (_utils2.default.deepCompare(existing.requestBody, requestBody)) {\n // got a match\n callback(existing);\n return;\n }\n\n // look at the next entry in the index\n cursor.continue();\n };\n }\n\n /**\n * Look for room key requests by state\n *\n * @param {Array<Number>} wantedStates list of acceptable states\n *\n * @return {Promise} resolves to the a\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * there are no pending requests in those states. If there are multiple\n * requests in those states, an arbitrary one is chosen.\n */\n\n }, {\n key: 'getOutgoingRoomKeyRequestByState',\n value: function getOutgoingRoomKeyRequestByState(wantedStates) {\n if (wantedStates.length === 0) {\n return _bluebird2.default.resolve(null);\n }\n\n // this is a bit tortuous because we need to make sure we do the lookup\n // in a single transaction, to avoid having a race with the insertion\n // code.\n\n // index into the wantedStates array\n var stateIndex = 0;\n var result = void 0;\n\n function onsuccess(ev) {\n var cursor = ev.target.result;\n if (cursor) {\n // got a match\n result = cursor.value;\n return;\n }\n\n // try the next state in the list\n stateIndex++;\n if (stateIndex >= wantedStates.length) {\n // no matches\n return;\n }\n\n var wantedState = wantedStates[stateIndex];\n var cursorReq = ev.target.source.openCursor(wantedState);\n cursorReq.onsuccess = onsuccess;\n }\n\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readonly\");\n var store = txn.objectStore(\"outgoingRoomKeyRequests\");\n\n var wantedState = wantedStates[stateIndex];\n var cursorReq = store.index(\"state\").openCursor(wantedState);\n cursorReq.onsuccess = onsuccess;\n\n return promiseifyTxn(txn).then(function () {\n return result;\n });\n }\n }, {\n key: 'getOutgoingRoomKeyRequestsByTarget',\n value: function getOutgoingRoomKeyRequestsByTarget(userId, deviceId, wantedStates) {\n var stateIndex = 0;\n var results = [];\n\n function onsuccess(ev) {\n var cursor = ev.target.result;\n if (cursor) {\n var keyReq = cursor.value;\n if (keyReq.recipients.includes({ userId: userId, deviceId: deviceId })) {\n results.push(keyReq);\n }\n cursor.continue();\n } else {\n // try the next state in the list\n stateIndex++;\n if (stateIndex >= wantedStates.length) {\n // no matches\n return;\n }\n\n var _wantedState = wantedStates[stateIndex];\n var _cursorReq = ev.target.source.openCursor(_wantedState);\n _cursorReq.onsuccess = onsuccess;\n }\n }\n\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readonly\");\n var store = txn.objectStore(\"outgoingRoomKeyRequests\");\n\n var wantedState = wantedStates[stateIndex];\n var cursorReq = store.index(\"state\").openCursor(wantedState);\n cursorReq.onsuccess = onsuccess;\n\n return promiseifyTxn(txn).then(function () {\n return results;\n });\n }\n\n /**\n * Look for an existing room key request by id and state, and update it if\n * found\n *\n * @param {string} requestId ID of request to update\n * @param {number} expectedState state we expect to find the request in\n * @param {Object} updates name/value map of updates to apply\n *\n * @returns {Promise} resolves to\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}\n * updated request, or null if no matching row was found\n */\n\n }, {\n key: 'updateOutgoingRoomKeyRequest',\n value: function updateOutgoingRoomKeyRequest(requestId, expectedState, updates) {\n var result = null;\n\n function onsuccess(ev) {\n var cursor = ev.target.result;\n if (!cursor) {\n return;\n }\n var data = cursor.value;\n if (data.state != expectedState) {\n _logger2.default.warn('Cannot update room key request from ' + expectedState + ' ' + ('as it was already updated to ' + data.state));\n return;\n }\n (0, _assign2.default)(data, updates);\n cursor.update(data);\n result = data;\n }\n\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readwrite\");\n var cursorReq = txn.objectStore(\"outgoingRoomKeyRequests\").openCursor(requestId);\n cursorReq.onsuccess = onsuccess;\n return promiseifyTxn(txn).then(function () {\n return result;\n });\n }\n\n /**\n * Look for an existing room key request by id and state, and delete it if\n * found\n *\n * @param {string} requestId ID of request to update\n * @param {number} expectedState state we expect to find the request in\n *\n * @returns {Promise} resolves once the operation is completed\n */\n\n }, {\n key: 'deleteOutgoingRoomKeyRequest',\n value: function deleteOutgoingRoomKeyRequest(requestId, expectedState) {\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readwrite\");\n var cursorReq = txn.objectStore(\"outgoingRoomKeyRequests\").openCursor(requestId);\n cursorReq.onsuccess = function (ev) {\n var cursor = ev.target.result;\n if (!cursor) {\n return;\n }\n var data = cursor.value;\n if (data.state != expectedState) {\n _logger2.default.warn('Cannot delete room key request in state ' + data.state + ' ' + ('(expected ' + expectedState + ')'));\n return;\n }\n cursor.delete();\n };\n return promiseifyTxn(txn);\n }\n\n // Olm Account\n\n }, {\n key: 'getAccount',\n value: function getAccount(txn, func) {\n var objectStore = txn.objectStore(\"account\");\n var getReq = objectStore.get(\"-\");\n getReq.onsuccess = function () {\n try {\n func(getReq.result || null);\n } catch (e) {\n abortWithException(txn, e);\n }\n };\n }\n }, {\n key: 'storeAccount',\n value: function storeAccount(txn, newData) {\n var objectStore = txn.objectStore(\"account\");\n objectStore.put(newData, \"-\");\n }\n\n // Olm Sessions\n\n }, {\n key: 'countEndToEndSessions',\n value: function countEndToEndSessions(txn, func) {\n var objectStore = txn.objectStore(\"sessions\");\n var countReq = objectStore.count();\n countReq.onsuccess = function () {\n func(countReq.result);\n };\n }\n }, {\n key: 'getEndToEndSessions',\n value: function getEndToEndSessions(deviceKey, txn, func) {\n var objectStore = txn.objectStore(\"sessions\");\n var idx = objectStore.index(\"deviceKey\");\n var getReq = idx.openCursor(deviceKey);\n var results = {};\n getReq.onsuccess = function () {\n var cursor = getReq.result;\n if (cursor) {\n results[cursor.value.sessionId] = {\n session: cursor.value.session,\n lastReceivedMessageTs: cursor.value.lastReceivedMessageTs\n };\n cursor.continue();\n } else {\n try {\n func(results);\n } catch (e) {\n abortWithException(txn, e);\n }\n }\n };\n }\n }, {\n key: 'getEndToEndSession',\n value: function getEndToEndSession(deviceKey, sessionId, txn, func) {\n var objectStore = txn.objectStore(\"sessions\");\n var getReq = objectStore.get([deviceKey, sessionId]);\n getReq.onsuccess = function () {\n try {\n if (getReq.result) {\n func({\n session: getReq.result.session,\n lastReceivedMessageTs: getReq.result.lastReceivedMessageTs\n });\n } else {\n func(null);\n }\n } catch (e) {\n abortWithException(txn, e);\n }\n };\n }\n }, {\n key: 'getAllEndToEndSessions',\n value: function getAllEndToEndSessions(txn, func) {\n var objectStore = txn.objectStore(\"sessions\");\n var getReq = objectStore.openCursor();\n getReq.onsuccess = function () {\n var cursor = getReq.result;\n if (cursor) {\n func(cursor.value);\n cursor.continue();\n } else {\n try {\n func(null);\n } catch (e) {\n abortWithException(txn, e);\n }\n }\n };\n }\n }, {\n key: 'storeEndToEndSession',\n value: function storeEndToEndSession(deviceKey, sessionId, sessionInfo, txn) {\n var objectStore = txn.objectStore(\"sessions\");\n objectStore.put({\n deviceKey: deviceKey,\n sessionId: sessionId,\n session: sessionInfo.session,\n lastReceivedMessageTs: sessionInfo.lastReceivedMessageTs\n });\n }\n\n // Inbound group sessions\n\n }, {\n key: 'getEndToEndInboundGroupSession',\n value: function getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func) {\n var objectStore = txn.objectStore(\"inbound_group_sessions\");\n var getReq = objectStore.get([senderCurve25519Key, sessionId]);\n getReq.onsuccess = function () {\n try {\n if (getReq.result) {\n func(getReq.result.session);\n } else {\n func(null);\n }\n } catch (e) {\n abortWithException(txn, e);\n }\n };\n }\n }, {\n key: 'getAllEndToEndInboundGroupSessions',\n value: function getAllEndToEndInboundGroupSessions(txn, func) {\n var objectStore = txn.objectStore(\"inbound_group_sessions\");\n var getReq = objectStore.openCursor();\n getReq.onsuccess = function () {\n var cursor = getReq.result;\n if (cursor) {\n try {\n func({\n senderKey: cursor.value.senderCurve25519Key,\n sessionId: cursor.value.sessionId,\n sessionData: cursor.value.session\n });\n } catch (e) {\n abortWithException(txn, e);\n }\n cursor.continue();\n } else {\n try {\n func(null);\n } catch (e) {\n abortWithException(txn, e);\n }\n }\n };\n }\n }, {\n key: 'addEndToEndInboundGroupSession',\n value: function addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n var objectStore = txn.objectStore(\"inbound_group_sessions\");\n var addReq = objectStore.add({\n senderCurve25519Key: senderCurve25519Key, sessionId: sessionId, session: sessionData\n });\n addReq.onerror = function (ev) {\n if (addReq.error.name === 'ConstraintError') {\n // This stops the error from triggering the txn's onerror\n ev.stopPropagation();\n // ...and this stops it from aborting the transaction\n ev.preventDefault();\n _logger2.default.log(\"Ignoring duplicate inbound group session: \" + senderCurve25519Key + \" / \" + sessionId);\n } else {\n abortWithException(txn, new Error(\"Failed to add inbound group session: \" + addReq.error));\n }\n };\n }\n }, {\n key: 'storeEndToEndInboundGroupSession',\n value: function storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n var objectStore = txn.objectStore(\"inbound_group_sessions\");\n objectStore.put({\n senderCurve25519Key: senderCurve25519Key, sessionId: sessionId, session: sessionData\n });\n }\n }, {\n key: 'getEndToEndDeviceData',\n value: function getEndToEndDeviceData(txn, func) {\n var objectStore = txn.objectStore(\"device_data\");\n var getReq = objectStore.get(\"-\");\n getReq.onsuccess = function () {\n try {\n func(getReq.result || null);\n } catch (e) {\n abortWithException(txn, e);\n }\n };\n }\n }, {\n key: 'storeEndToEndDeviceData',\n value: function storeEndToEndDeviceData(deviceData, txn) {\n var objectStore = txn.objectStore(\"device_data\");\n objectStore.put(deviceData, \"-\");\n }\n }, {\n key: 'storeEndToEndRoom',\n value: function storeEndToEndRoom(roomId, roomInfo, txn) {\n var objectStore = txn.objectStore(\"rooms\");\n objectStore.put(roomInfo, roomId);\n }\n }, {\n key: 'getEndToEndRooms',\n value: function getEndToEndRooms(txn, func) {\n var rooms = {};\n var objectStore = txn.objectStore(\"rooms\");\n var getReq = objectStore.openCursor();\n getReq.onsuccess = function () {\n var cursor = getReq.result;\n if (cursor) {\n rooms[cursor.key] = cursor.value;\n cursor.continue();\n } else {\n try {\n func(rooms);\n } catch (e) {\n abortWithException(txn, e);\n }\n }\n };\n }\n\n // session backups\n\n }, {\n key: 'getSessionsNeedingBackup',\n value: function getSessionsNeedingBackup(limit) {\n var _this2 = this;\n\n return new _bluebird2.default(function (resolve, reject) {\n var sessions = [];\n\n var txn = _this2._db.transaction([\"sessions_needing_backup\", \"inbound_group_sessions\"], \"readonly\");\n txn.onerror = reject;\n txn.oncomplete = function () {\n resolve(sessions);\n };\n var objectStore = txn.objectStore(\"sessions_needing_backup\");\n var sessionStore = txn.objectStore(\"inbound_group_sessions\");\n var getReq = objectStore.openCursor();\n getReq.onsuccess = function () {\n var cursor = getReq.result;\n if (cursor) {\n var sessionGetReq = sessionStore.get(cursor.key);\n sessionGetReq.onsuccess = function () {\n sessions.push({\n senderKey: sessionGetReq.result.senderCurve25519Key,\n sessionId: sessionGetReq.result.sessionId,\n sessionData: sessionGetReq.result.session\n });\n };\n if (!limit || sessions.length < limit) {\n cursor.continue();\n }\n }\n };\n });\n }\n }, {\n key: 'unmarkSessionsNeedingBackup',\n value: function unmarkSessionsNeedingBackup(sessions) {\n var txn = this._db.transaction(\"sessions_needing_backup\", \"readwrite\");\n var objectStore = txn.objectStore(\"sessions_needing_backup\");\n return _bluebird2.default.all(sessions.map(function (session) {\n return new _bluebird2.default(function (resolve, reject) {\n var req = objectStore.delete([session.senderKey, session.sessionId]);\n req.onsuccess = resolve;\n req.onerror = reject;\n });\n }));\n }\n }, {\n key: 'markSessionsNeedingBackup',\n value: function markSessionsNeedingBackup(sessions, txn) {\n if (!txn) {\n txn = this._db.transaction(\"sessions_needing_backup\", \"readwrite\");\n }\n var objectStore = txn.objectStore(\"sessions_needing_backup\");\n return _bluebird2.default.all(sessions.map(function (session) {\n return new _bluebird2.default(function (resolve, reject) {\n var req = objectStore.put({\n senderCurve25519Key: session.senderKey,\n sessionId: session.sessionId\n });\n req.onsuccess = resolve;\n req.onerror = reject;\n });\n }));\n }\n }, {\n key: 'doTxn',\n value: function doTxn(mode, stores, func) {\n var txn = this._db.transaction(stores, mode);\n var promise = promiseifyTxn(txn);\n var result = func(txn);\n return promise.then(function () {\n return result;\n });\n }\n }]);\n return Backend;\n}();\n\nfunction upgradeDatabase(db, oldVersion) {\n _logger2.default.log('Upgrading IndexedDBCryptoStore from version ' + oldVersion + (' to ' + VERSION));\n if (oldVersion < 1) {\n // The database did not previously exist.\n createDatabase(db);\n }\n if (oldVersion < 2) {\n db.createObjectStore(\"account\");\n }\n if (oldVersion < 3) {\n var sessionsStore = db.createObjectStore(\"sessions\", {\n keyPath: [\"deviceKey\", \"sessionId\"]\n });\n sessionsStore.createIndex(\"deviceKey\", \"deviceKey\");\n }\n if (oldVersion < 4) {\n db.createObjectStore(\"inbound_group_sessions\", {\n keyPath: [\"senderCurve25519Key\", \"sessionId\"]\n });\n }\n if (oldVersion < 5) {\n db.createObjectStore(\"device_data\");\n }\n if (oldVersion < 6) {\n db.createObjectStore(\"rooms\");\n }\n if (oldVersion < 7) {\n db.createObjectStore(\"sessions_needing_backup\", {\n keyPath: [\"senderCurve25519Key\", \"sessionId\"]\n });\n }\n // Expand as needed.\n}\n\nfunction createDatabase(db) {\n var outgoingRoomKeyRequestsStore = db.createObjectStore(\"outgoingRoomKeyRequests\", { keyPath: \"requestId\" });\n\n // we assume that the RoomKeyRequestBody will have room_id and session_id\n // properties, to make the index efficient.\n outgoingRoomKeyRequestsStore.createIndex(\"session\", [\"requestBody.room_id\", \"requestBody.session_id\"]);\n\n outgoingRoomKeyRequestsStore.createIndex(\"state\", \"state\");\n}\n\n/*\n * Aborts a transaction with a given exception\n * The transaction promise will be rejected with this exception.\n */\nfunction abortWithException(txn, e) {\n // We cheekily stick our exception onto the transaction object here\n // We could alternatively make the thing we pass back to the app\n // an object containing the transaction and exception.\n txn._mx_abortexception = e;\n try {\n txn.abort();\n } catch (e) {\n // sometimes we won't be able to abort the transaction\n // (ie. if it's aborted or completed)\n }\n}\n\nfunction promiseifyTxn(txn) {\n return new _bluebird2.default(function (resolve, reject) {\n txn.oncomplete = function () {\n if (txn._mx_abortexception !== undefined) {\n reject(txn._mx_abortexception);\n }\n resolve();\n };\n txn.onerror = function () {\n if (txn._mx_abortexception !== undefined) {\n reject(txn._mx_abortexception);\n }\n reject();\n };\n txn.onabort = function () {\n return reject(txn._mx_abortexception);\n };\n });\n}\n//# sourceMappingURL=indexeddb-crypto-store-backend.js.map","/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module crypto\n */\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _set = require('babel-runtime/core-js/set');\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\n// returns a promise which resolves to the response\nvar _uploadOneTimeKeys = function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(crypto) {\n var oneTimeKeys, oneTimeJson, promises, keyId, k, res;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return (0, _bluebird.resolve)(crypto._olmDevice.getOneTimeKeys());\n\n case 2:\n oneTimeKeys = _context5.sent;\n oneTimeJson = {};\n promises = [];\n\n\n for (keyId in oneTimeKeys.curve25519) {\n if (oneTimeKeys.curve25519.hasOwnProperty(keyId)) {\n k = {\n key: oneTimeKeys.curve25519[keyId]\n };\n\n oneTimeJson[\"signed_curve25519:\" + keyId] = k;\n promises.push(crypto._signObject(k));\n }\n }\n\n _context5.next = 8;\n return (0, _bluebird.resolve)(_bluebird2.default.all(promises));\n\n case 8:\n _context5.next = 10;\n return (0, _bluebird.resolve)(crypto._baseApis.uploadKeysRequest({\n one_time_keys: oneTimeJson\n }, {\n // for now, we set the device id explicitly, as we may not be using the\n // same one as used in login.\n device_id: crypto._deviceId\n }));\n\n case 10:\n res = _context5.sent;\n _context5.next = 13;\n return (0, _bluebird.resolve)(crypto._olmDevice.markKeysAsPublished());\n\n case 13:\n return _context5.abrupt('return', res);\n\n case 14:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n return function _uploadOneTimeKeys(_x3) {\n return _ref5.apply(this, arguments);\n };\n}();\n\n/**\n * Download the keys for a list of users and stores the keys in the session\n * store.\n * @param {Array} userIds The users to fetch.\n * @param {bool} forceDownload Always download the keys even if cached.\n *\n * @return {Promise} A promise which resolves to a map userId->deviceId->{@link\n * module:crypto/deviceinfo|DeviceInfo}.\n */\n\n\nexports.isCryptoAvailable = isCryptoAvailable;\nexports.default = Crypto;\n\nvar _events = require('events');\n\nvar _OutgoingRoomKeyRequestManager = require('./OutgoingRoomKeyRequestManager');\n\nvar _OutgoingRoomKeyRequestManager2 = _interopRequireDefault(_OutgoingRoomKeyRequestManager);\n\nvar _indexeddbCryptoStore = require('./store/indexeddb-crypto-store');\n\nvar _indexeddbCryptoStore2 = _interopRequireDefault(_indexeddbCryptoStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar anotherjson = require('another-json');\n\n\nvar logger = require(\"../logger\");\nvar utils = require(\"../utils\");\nvar OlmDevice = require(\"./OlmDevice\");\nvar olmlib = require(\"./olmlib\");\nvar algorithms = require(\"./algorithms\");\nvar DeviceInfo = require(\"./deviceinfo\");\nvar DeviceVerification = DeviceInfo.DeviceVerification;\nvar DeviceList = require('./DeviceList').default;\n\nfunction isCryptoAvailable() {\n return Boolean(global.Olm);\n}\n\nvar MIN_FORCE_SESSION_INTERVAL_MS = 60 * 60 * 1000;\nvar KEY_BACKUP_KEYS_PER_REQUEST = 200;\n\n/**\n * Cryptography bits\n *\n * This module is internal to the js-sdk; the public API is via MatrixClient.\n *\n * @constructor\n * @alias module:crypto\n *\n * @internal\n *\n * @param {module:base-apis~MatrixBaseApis} baseApis base matrix api interface\n *\n * @param {module:store/session/webstorage~WebStorageSessionStore} sessionStore\n * Store to be used for end-to-end crypto session data\n *\n * @param {string} userId The user ID for the local user\n *\n * @param {string} deviceId The identifier for this device.\n *\n * @param {Object} clientStore the MatrixClient data store.\n *\n * @param {module:crypto/store/base~CryptoStore} cryptoStore\n * storage for the crypto layer.\n *\n * @param {RoomList} roomList An initialised RoomList object\n */\nfunction Crypto(baseApis, sessionStore, userId, deviceId, clientStore, cryptoStore, roomList) {\n this._baseApis = baseApis;\n this._sessionStore = sessionStore;\n this._userId = userId;\n this._deviceId = deviceId;\n this._clientStore = clientStore;\n this._cryptoStore = cryptoStore;\n this._roomList = roomList;\n\n // track whether this device's megolm keys are being backed up incrementally\n // to the server or not.\n // XXX: this should probably have a single source of truth from OlmAccount\n this.backupInfo = null; // The info dict from /room_keys/version\n this.backupKey = null; // The encryption key object\n this._checkedForBackup = false; // Have we checked the server for a backup we can use?\n this._sendingBackups = false; // Are we currently sending backups?\n\n this._olmDevice = new OlmDevice(sessionStore, cryptoStore);\n this._deviceList = new DeviceList(baseApis, cryptoStore, sessionStore, this._olmDevice);\n\n // the last time we did a check for the number of one-time-keys on the\n // server.\n this._lastOneTimeKeyCheck = null;\n this._oneTimeKeyCheckInProgress = false;\n\n // EncryptionAlgorithm instance for each room\n this._roomEncryptors = {};\n\n // map from algorithm to DecryptionAlgorithm instance, for each room\n this._roomDecryptors = {};\n\n this._supportedAlgorithms = utils.keys(algorithms.DECRYPTION_CLASSES);\n\n this._deviceKeys = {};\n\n this._globalBlacklistUnverifiedDevices = false;\n\n this._outgoingRoomKeyRequestManager = new _OutgoingRoomKeyRequestManager2.default(baseApis, this._deviceId, this._cryptoStore);\n\n // list of IncomingRoomKeyRequests/IncomingRoomKeyRequestCancellations\n // we received in the current sync.\n this._receivedRoomKeyRequests = [];\n this._receivedRoomKeyRequestCancellations = [];\n // true if we are currently processing received room key requests\n this._processingRoomKeyRequests = false;\n // controls whether device tracking is delayed\n // until calling encryptEvent or trackRoomDevices,\n // or done immediately upon enabling room encryption.\n this._lazyLoadMembers = false;\n // in case _lazyLoadMembers is true,\n // track if an initial tracking of all the room members\n // has happened for a given room. This is delayed\n // to avoid loading room members as long as possible.\n this._roomDeviceTrackingState = {};\n\n // The timestamp of the last time we forced establishment\n // of a new session for each device, in milliseconds.\n // {\n // userId: {\n // deviceId: 1234567890000,\n // },\n // }\n this._lastNewSessionForced = {};\n}\nutils.inherits(Crypto, _events.EventEmitter);\n\n/**\n * Initialise the crypto module so that it is ready for use\n *\n * Returns a promise which resolves once the crypto module is ready for use.\n */\nCrypto.prototype.init = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this = this;\n\n var sessionStoreHasAccount, cryptoStoreHasAccount, myDevices, deviceInfo;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(global.Olm.init());\n\n case 2:\n sessionStoreHasAccount = Boolean(this._sessionStore.getEndToEndAccount());\n cryptoStoreHasAccount = void 0;\n _context.next = 6;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this._cryptoStore.getAccount(txn, function (pickledAccount) {\n cryptoStoreHasAccount = Boolean(pickledAccount);\n });\n }));\n\n case 6:\n if (sessionStoreHasAccount && !cryptoStoreHasAccount) {\n // we're about to migrate to the crypto store\n this.emit(\"crypto.warning\", 'CRYPTO_WARNING_ACCOUNT_MIGRATED');\n } else if (sessionStoreHasAccount && cryptoStoreHasAccount) {\n // There's an account in both stores: an old version of\n // the code has been run against this store.\n this.emit(\"crypto.warning\", 'CRYPTO_WARNING_OLD_VERSION_DETECTED');\n }\n\n _context.next = 9;\n return (0, _bluebird.resolve)(this._olmDevice.init());\n\n case 9:\n _context.next = 11;\n return (0, _bluebird.resolve)(this._deviceList.load());\n\n case 11:\n\n // build our device keys: these will later be uploaded\n this._deviceKeys[\"ed25519:\" + this._deviceId] = this._olmDevice.deviceEd25519Key;\n this._deviceKeys[\"curve25519:\" + this._deviceId] = this._olmDevice.deviceCurve25519Key;\n\n myDevices = this._deviceList.getRawStoredDevicesForUser(this._userId);\n\n\n if (!myDevices) {\n myDevices = {};\n }\n\n if (!myDevices[this._deviceId]) {\n // add our own deviceinfo to the sessionstore\n deviceInfo = {\n keys: this._deviceKeys,\n algorithms: this._supportedAlgorithms,\n verified: DeviceVerification.VERIFIED,\n known: true\n };\n\n\n myDevices[this._deviceId] = deviceInfo;\n this._deviceList.storeDevicesForUser(this._userId, myDevices);\n this._deviceList.saveIfDirty();\n }\n\n this._checkAndStartKeyBackup();\n\n case 17:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n}));\n\n/**\n * Check the server for an active key backup and\n * if one is present and has a valid signature from\n * one of the user's verified devices, start backing up\n * to it.\n */\nCrypto.prototype._checkAndStartKeyBackup = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var backupInfo, trustInfo;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n console.log(\"Checking key backup status...\");\n\n if (!this._baseApis.isGuest()) {\n _context2.next = 5;\n break;\n }\n\n console.log(\"Skipping key backup check since user is guest\");\n this._checkedForBackup = true;\n return _context2.abrupt('return');\n\n case 5:\n backupInfo = void 0;\n _context2.prev = 6;\n _context2.next = 9;\n return (0, _bluebird.resolve)(this._baseApis.getKeyBackupVersion());\n\n case 9:\n backupInfo = _context2.sent;\n _context2.next = 17;\n break;\n\n case 12:\n _context2.prev = 12;\n _context2.t0 = _context2['catch'](6);\n\n console.log(\"Error checking for active key backup\", _context2.t0);\n if (_context2.t0.httpStatus / 100 === 4) {\n // well that's told us. we won't try again.\n this._checkedForBackup = true;\n }\n return _context2.abrupt('return');\n\n case 17:\n this._checkedForBackup = true;\n\n _context2.next = 20;\n return (0, _bluebird.resolve)(this.isKeyBackupTrusted(backupInfo));\n\n case 20:\n trustInfo = _context2.sent;\n\n\n if (trustInfo.usable && !this.backupInfo) {\n console.log(\"Found usable key backup: enabling key backups\");\n this._baseApis.enableKeyBackup(backupInfo);\n } else if (!trustInfo.usable && this.backupInfo) {\n console.log(\"No usable key backup: disabling key backup\");\n this._baseApis.disableKeyBackup();\n } else if (!trustInfo.usable && !this.backupInfo) {\n console.log(\"No usable key backup: not enabling key backup\");\n }\n\n case 22:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[6, 12]]);\n}));\n\n/**\n * Forces a re-check of the key backup and enables/disables it\n * as appropriate\n *\n * @param {object} backupInfo Backup info from /room_keys/version endpoint\n */\nCrypto.prototype.checkKeyBackup = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(backupInfo) {\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n this._checkedForBackup = false;\n _context3.next = 3;\n return (0, _bluebird.resolve)(this._checkAndStartKeyBackup());\n\n case 3:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function (_x) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * @param {object} backupInfo key backup info dict from /room_keys/version\n * @return {object} {\n * usable: [bool], // is the backup trusted, true iff there is a sig that is valid & from a trusted device\n * sigs: [\n * valid: [bool],\n * device: [DeviceInfo],\n * ]\n * }\n */\nCrypto.prototype.isKeyBackupTrusted = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(backupInfo) {\n var ret, mySigs, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, keyId, device, sigInfo;\n\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n ret = {\n usable: false,\n sigs: []\n };\n\n if (!(!backupInfo || !backupInfo.algorithm || !backupInfo.auth_data || !backupInfo.auth_data.public_key || !backupInfo.auth_data.signatures)) {\n _context4.next = 4;\n break;\n }\n\n console.log(\"Key backup is absent or missing required data\");\n return _context4.abrupt('return', ret);\n\n case 4:\n mySigs = backupInfo.auth_data.signatures[this._userId];\n\n if (!(!mySigs || mySigs.length === 0)) {\n _context4.next = 8;\n break;\n }\n\n console.log(\"Ignoring key backup because it lacks any signatures from this user\");\n return _context4.abrupt('return', ret);\n\n case 8:\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context4.prev = 11;\n _iterator = (0, _getIterator3.default)((0, _keys2.default)(mySigs));\n\n case 13:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context4.next = 34;\n break;\n }\n\n keyId = _step.value;\n device = this._deviceList.getStoredDevice(this._userId, keyId.split(':')[1] // XXX: is this how we're supposed to get the device ID?\n );\n\n if (device) {\n _context4.next = 19;\n break;\n }\n\n console.log(\"Ignoring signature from unknown key \" + keyId);\n return _context4.abrupt('continue', 31);\n\n case 19:\n sigInfo = { device: device };\n _context4.prev = 20;\n _context4.next = 23;\n return (0, _bluebird.resolve)(olmlib.verifySignature(this._olmDevice, backupInfo.auth_data, this._userId, device.deviceId, device.getFingerprint()));\n\n case 23:\n sigInfo.valid = true;\n _context4.next = 30;\n break;\n\n case 26:\n _context4.prev = 26;\n _context4.t0 = _context4['catch'](20);\n\n console.log(\"Bad signature from device \" + device.deviceId, _context4.t0);\n sigInfo.valid = false;\n\n case 30:\n ret.sigs.push(sigInfo);\n\n case 31:\n _iteratorNormalCompletion = true;\n _context4.next = 13;\n break;\n\n case 34:\n _context4.next = 40;\n break;\n\n case 36:\n _context4.prev = 36;\n _context4.t1 = _context4['catch'](11);\n _didIteratorError = true;\n _iteratorError = _context4.t1;\n\n case 40:\n _context4.prev = 40;\n _context4.prev = 41;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 43:\n _context4.prev = 43;\n\n if (!_didIteratorError) {\n _context4.next = 46;\n break;\n }\n\n throw _iteratorError;\n\n case 46:\n return _context4.finish(43);\n\n case 47:\n return _context4.finish(40);\n\n case 48:\n\n ret.usable = ret.sigs.some(function (s) {\n return s.valid && s.device.isVerified();\n });\n return _context4.abrupt('return', ret);\n\n case 50:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this, [[11, 36, 40, 48], [20, 26], [41,, 43, 47]]);\n }));\n\n return function (_x2) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n */\nCrypto.prototype.enableLazyLoading = function () {\n this._lazyLoadMembers = true;\n};\n\n/**\n * Tell the crypto module to register for MatrixClient events which it needs to\n * listen for\n *\n * @param {external:EventEmitter} eventEmitter event source where we can register\n * for event notifications\n */\nCrypto.prototype.registerEventHandlers = function (eventEmitter) {\n var crypto = this;\n\n eventEmitter.on(\"RoomMember.membership\", function (event, member, oldMembership) {\n try {\n crypto._onRoomMembership(event, member, oldMembership);\n } catch (e) {\n logger.error(\"Error handling membership change:\", e);\n }\n });\n\n eventEmitter.on(\"toDeviceEvent\", function (event) {\n crypto._onToDeviceEvent(event);\n });\n};\n\n/** Start background processes related to crypto */\nCrypto.prototype.start = function () {\n this._outgoingRoomKeyRequestManager.start();\n};\n\n/** Stop background processes related to crypto */\nCrypto.prototype.stop = function () {\n this._outgoingRoomKeyRequestManager.stop();\n this._deviceList.stop();\n};\n\n/**\n * @return {string} The version of Olm.\n */\nCrypto.getOlmVersion = function () {\n return OlmDevice.getOlmVersion();\n};\n\n/**\n * Get the Ed25519 key for this device\n *\n * @return {string} base64-encoded ed25519 key.\n */\nCrypto.prototype.getDeviceEd25519Key = function () {\n return this._olmDevice.deviceEd25519Key;\n};\n\n/**\n * Set the global override for whether the client should ever send encrypted\n * messages to unverified devices. This provides the default for rooms which\n * do not specify a value.\n *\n * @param {boolean} value whether to blacklist all unverified devices by default\n */\nCrypto.prototype.setGlobalBlacklistUnverifiedDevices = function (value) {\n this._globalBlacklistUnverifiedDevices = value;\n};\n\n/**\n * @return {boolean} whether to blacklist all unverified devices by default\n */\nCrypto.prototype.getGlobalBlacklistUnverifiedDevices = function () {\n return this._globalBlacklistUnverifiedDevices;\n};\n\n/**\n * Upload the device keys to the homeserver.\n * @return {object} A promise that will resolve when the keys are uploaded.\n */\nCrypto.prototype.uploadDeviceKeys = function () {\n var crypto = this;\n var userId = crypto._userId;\n var deviceId = crypto._deviceId;\n\n var deviceKeys = {\n algorithms: crypto._supportedAlgorithms,\n device_id: deviceId,\n keys: crypto._deviceKeys,\n user_id: userId\n };\n\n return crypto._signObject(deviceKeys).then(function () {\n crypto._baseApis.uploadKeysRequest({\n device_keys: deviceKeys\n }, {\n // for now, we set the device id explicitly, as we may not be using the\n // same one as used in login.\n device_id: deviceId\n });\n });\n};\n\n/**\n * Stores the current one_time_key count which will be handled later (in a call of\n * onSyncCompleted). The count is e.g. coming from a /sync response.\n *\n * @param {Number} currentCount The current count of one_time_keys to be stored\n */\nCrypto.prototype.updateOneTimeKeyCount = function (currentCount) {\n if (isFinite(currentCount)) {\n this._oneTimeKeyCount = currentCount;\n } else {\n throw new TypeError(\"Parameter for updateOneTimeKeyCount has to be a number\");\n }\n};\n\n// check if it's time to upload one-time keys, and do so if so.\nfunction _maybeUploadOneTimeKeys(crypto) {\n // frequency with which to check & upload one-time keys\n var uploadPeriod = 1000 * 60; // one minute\n\n // max number of keys to upload at once\n // Creating keys can be an expensive operation so we limit the\n // number we generate in one go to avoid blocking the application\n // for too long.\n var maxKeysPerCycle = 5;\n\n if (crypto._oneTimeKeyCheckInProgress) {\n return;\n }\n\n var now = Date.now();\n if (crypto._lastOneTimeKeyCheck !== null && now - crypto._lastOneTimeKeyCheck < uploadPeriod) {\n // we've done a key upload recently.\n return;\n }\n\n crypto._lastOneTimeKeyCheck = now;\n\n // We need to keep a pool of one time public keys on the server so that\n // other devices can start conversations with us. But we can only store\n // a finite number of private keys in the olm Account object.\n // To complicate things further then can be a delay between a device\n // claiming a public one time key from the server and it sending us a\n // message. We need to keep the corresponding private key locally until\n // we receive the message.\n // But that message might never arrive leaving us stuck with duff\n // private keys clogging up our local storage.\n // So we need some kind of enginering compromise to balance all of\n // these factors.\n\n // Check how many keys we can store in the Account object.\n var maxOneTimeKeys = crypto._olmDevice.maxNumberOfOneTimeKeys();\n // Try to keep at most half that number on the server. This leaves the\n // rest of the slots free to hold keys that have been claimed from the\n // server but we haven't recevied a message for.\n // If we run out of slots when generating new keys then olm will\n // discard the oldest private keys first. This will eventually clean\n // out stale private keys that won't receive a message.\n var keyLimit = Math.floor(maxOneTimeKeys / 2);\n\n function uploadLoop(keyCount) {\n if (keyLimit <= keyCount) {\n // If we don't need to generate any more keys then we are done.\n return _bluebird2.default.resolve();\n }\n\n var keysThisLoop = Math.min(keyLimit - keyCount, maxKeysPerCycle);\n\n // Ask olm to generate new one time keys, then upload them to synapse.\n return crypto._olmDevice.generateOneTimeKeys(keysThisLoop).then(function () {\n return _uploadOneTimeKeys(crypto);\n }).then(function (res) {\n if (res.one_time_key_counts && res.one_time_key_counts.signed_curve25519) {\n // if the response contains a more up to date value use this\n // for the next loop\n return uploadLoop(res.one_time_key_counts.signed_curve25519);\n } else {\n throw new Error(\"response for uploading keys does not contain \" + \"one_time_key_counts.signed_curve25519\");\n }\n });\n }\n\n crypto._oneTimeKeyCheckInProgress = true;\n _bluebird2.default.resolve().then(function () {\n if (crypto._oneTimeKeyCount !== undefined) {\n // We already have the current one_time_key count from a /sync response.\n // Use this value instead of asking the server for the current key count.\n return _bluebird2.default.resolve(crypto._oneTimeKeyCount);\n }\n // ask the server how many keys we have\n return crypto._baseApis.uploadKeysRequest({}, {\n device_id: crypto._deviceId\n }).then(function (res) {\n return res.one_time_key_counts.signed_curve25519 || 0;\n });\n }).then(function (keyCount) {\n // Start the uploadLoop with the current keyCount. The function checks if\n // we need to upload new keys or not.\n // If there are too many keys on the server then we don't need to\n // create any more keys.\n return uploadLoop(keyCount);\n }).catch(function (e) {\n logger.error(\"Error uploading one-time keys\", e.stack || e);\n }).finally(function () {\n // reset _oneTimeKeyCount to prevent start uploading based on old data.\n // it will be set again on the next /sync-response\n crypto._oneTimeKeyCount = undefined;\n crypto._oneTimeKeyCheckInProgress = false;\n }).done();\n}Crypto.prototype.downloadKeys = function (userIds, forceDownload) {\n return this._deviceList.downloadKeys(userIds, forceDownload);\n};\n\n/**\n * Get the stored device keys for a user id\n *\n * @param {string} userId the user to list keys for.\n *\n * @return {module:crypto/deviceinfo[]|null} list of devices, or null if we haven't\n * managed to get a list of devices for this user yet.\n */\nCrypto.prototype.getStoredDevicesForUser = function (userId) {\n return this._deviceList.getStoredDevicesForUser(userId);\n};\n\n/**\n * Get the stored keys for a single device\n *\n * @param {string} userId\n * @param {string} deviceId\n *\n * @return {module:crypto/deviceinfo?} device, or undefined\n * if we don't know about this device\n */\nCrypto.prototype.getStoredDevice = function (userId, deviceId) {\n return this._deviceList.getStoredDevice(userId, deviceId);\n};\n\n/**\n * Save the device list, if necessary\n *\n * @param {integer} delay Time in ms before which the save actually happens.\n * By default, the save is delayed for a short period in order to batch\n * multiple writes, but this behaviour can be disabled by passing 0.\n *\n * @return {Promise<bool>} true if the data was saved, false if\n * it was not (eg. because no changes were pending). The promise\n * will only resolve once the data is saved, so may take some time\n * to resolve.\n */\nCrypto.prototype.saveDeviceList = function (delay) {\n return this._deviceList.saveIfDirty(delay);\n};\n\n/**\n * Update the blocked/verified state of the given device\n *\n * @param {string} userId owner of the device\n * @param {string} deviceId unique identifier for the device\n *\n * @param {?boolean} verified whether to mark the device as verified. Null to\n * leave unchanged.\n *\n * @param {?boolean} blocked whether to mark the device as blocked. Null to\n * leave unchanged.\n *\n * @param {?boolean} known whether to mark that the user has been made aware of\n * the existence of this device. Null to leave unchanged\n *\n * @return {Promise<module:crypto/deviceinfo>} updated DeviceInfo\n */\nCrypto.prototype.setDeviceVerification = function () {\n var _ref6 = (0, _bluebird.method)(function (userId, deviceId, verified, blocked, known) {\n var devices = this._deviceList.getRawStoredDevicesForUser(userId);\n if (!devices || !devices[deviceId]) {\n throw new Error(\"Unknown device \" + userId + \":\" + deviceId);\n }\n\n var dev = devices[deviceId];\n var verificationStatus = dev.verified;\n\n if (verified) {\n verificationStatus = DeviceVerification.VERIFIED;\n } else if (verified !== null && verificationStatus == DeviceVerification.VERIFIED) {\n verificationStatus = DeviceVerification.UNVERIFIED;\n }\n\n if (blocked) {\n verificationStatus = DeviceVerification.BLOCKED;\n } else if (blocked !== null && verificationStatus == DeviceVerification.BLOCKED) {\n verificationStatus = DeviceVerification.UNVERIFIED;\n }\n\n var knownStatus = dev.known;\n if (known !== null && known !== undefined) {\n knownStatus = known;\n }\n\n if (dev.verified !== verificationStatus || dev.known !== knownStatus) {\n dev.verified = verificationStatus;\n dev.known = knownStatus;\n this._deviceList.storeDevicesForUser(userId, devices);\n this._deviceList.saveIfDirty();\n }\n return DeviceInfo.fromStorage(dev, deviceId);\n });\n\n return function (_x4, _x5, _x6, _x7, _x8) {\n return _ref6.apply(this, arguments);\n };\n}();\n\n/**\n * Get information on the active olm sessions with a user\n * <p>\n * Returns a map from device id to an object with keys 'deviceIdKey' (the\n * device's curve25519 identity key) and 'sessions' (an array of objects in the\n * same format as that returned by\n * {@link module:crypto/OlmDevice#getSessionInfoForDevice}).\n * <p>\n * This method is provided for debugging purposes.\n *\n * @param {string} userId id of user to inspect\n *\n * @return {Promise<Object.<string, {deviceIdKey: string, sessions: object[]}>>}\n */\nCrypto.prototype.getOlmSessionsForUser = function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(userId) {\n var devices, result, j, device, deviceKey, sessions;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n devices = this.getStoredDevicesForUser(userId) || [];\n result = {};\n j = 0;\n\n case 3:\n if (!(j < devices.length)) {\n _context6.next = 13;\n break;\n }\n\n device = devices[j];\n deviceKey = device.getIdentityKey();\n _context6.next = 8;\n return (0, _bluebird.resolve)(this._olmDevice.getSessionInfoForDevice(deviceKey));\n\n case 8:\n sessions = _context6.sent;\n\n\n result[device.deviceId] = {\n deviceIdKey: deviceKey,\n sessions: sessions\n };\n\n case 10:\n ++j;\n _context6.next = 3;\n break;\n\n case 13:\n return _context6.abrupt('return', result);\n\n case 14:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n return function (_x9) {\n return _ref7.apply(this, arguments);\n };\n}();\n\n/**\n * Get the device which sent an event\n *\n * @param {module:models/event.MatrixEvent} event event to be checked\n *\n * @return {module:crypto/deviceinfo?}\n */\nCrypto.prototype.getEventSenderDeviceInfo = function (event) {\n var senderKey = event.getSenderKey();\n var algorithm = event.getWireContent().algorithm;\n\n if (!senderKey || !algorithm) {\n return null;\n }\n\n var forwardingChain = event.getForwardingCurve25519KeyChain();\n if (forwardingChain.length > 0) {\n // we got this event from somewhere else\n // TODO: check if we can trust the forwarders.\n return null;\n }\n\n // senderKey is the Curve25519 identity key of the device which the event\n // was sent from. In the case of Megolm, it's actually the Curve25519\n // identity key of the device which set up the Megolm session.\n\n var device = this._deviceList.getDeviceByIdentityKey(algorithm, senderKey);\n\n if (device === null) {\n // we haven't downloaded the details of this device yet.\n return null;\n }\n\n // so far so good, but now we need to check that the sender of this event\n // hadn't advertised someone else's Curve25519 key as their own. We do that\n // by checking the Ed25519 claimed by the event (or, in the case of megolm,\n // the event which set up the megolm session), to check that it matches the\n // fingerprint of the purported sending device.\n //\n // (see https://github.com/vector-im/vector-web/issues/2215)\n\n var claimedKey = event.getClaimedEd25519Key();\n if (!claimedKey) {\n logger.warn(\"Event \" + event.getId() + \" claims no ed25519 key: \" + \"cannot verify sending device\");\n return null;\n }\n\n if (claimedKey !== device.getFingerprint()) {\n logger.warn(\"Event \" + event.getId() + \" claims ed25519 key \" + claimedKey + \"but sender device has key \" + device.getFingerprint());\n return null;\n }\n\n return device;\n};\n\n/**\n * Forces the current outbound group session to be discarded such\n * that another one will be created next time an event is sent.\n *\n * @param {string} roomId The ID of the room to discard the session for\n *\n * This should not normally be necessary.\n */\nCrypto.prototype.forceDiscardSession = function (roomId) {\n var alg = this._roomEncryptors[roomId];\n if (alg === undefined) throw new Error(\"Room not encrypted\");\n if (alg.forceDiscardSession === undefined) {\n throw new Error(\"Room encryption algorithm doesn't support session discarding\");\n }\n alg.forceDiscardSession();\n};\n\n/**\n * Configure a room to use encryption (ie, save a flag in the sessionstore).\n *\n * @param {string} roomId The room ID to enable encryption in.\n *\n * @param {object} config The encryption config for the room.\n *\n * @param {boolean=} inhibitDeviceQuery true to suppress device list query for\n * users in the room (for now). In case lazy loading is enabled,\n * the device query is always inhibited as the members are not tracked.\n */\nCrypto.prototype.setRoomEncryption = function () {\n var _ref8 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(roomId, config, inhibitDeviceQuery) {\n var existingConfig, existingAlg, storeConfigPromise, AlgClass, alg;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n // if state is being replayed from storage, we might already have a configuration\n // for this room as they are persisted as well.\n // We just need to make sure the algorithm is initialized in this case.\n // However, if the new config is different,\n // we should bail out as room encryption can't be changed once set.\n existingConfig = this._roomList.getRoomEncryption(roomId);\n\n if (!existingConfig) {\n _context7.next = 5;\n break;\n }\n\n if (!((0, _stringify2.default)(existingConfig) != (0, _stringify2.default)(config))) {\n _context7.next = 5;\n break;\n }\n\n logger.error(\"Ignoring m.room.encryption event which requests \" + \"a change of config in \" + roomId);\n return _context7.abrupt('return');\n\n case 5:\n // if we already have encryption in this room, we should ignore this event,\n // as it would reset the encryption algorithm.\n // This is at least expected to be called twice, as sync calls onCryptoEvent\n // for both the timeline and state sections in the /sync response,\n // the encryption event would appear in both.\n // If it's called more than twice though,\n // it signals a bug on client or server.\n existingAlg = this._roomEncryptors[roomId];\n\n if (!existingAlg) {\n _context7.next = 8;\n break;\n }\n\n return _context7.abrupt('return');\n\n case 8:\n\n // _roomList.getRoomEncryption will not race with _roomList.setRoomEncryption\n // because it first stores in memory. We should await the promise only\n // after all the in-memory state (_roomEncryptors and _roomList) has been updated\n // to avoid races when calling this method multiple times. Hence keep a hold of the promise.\n storeConfigPromise = null;\n\n if (!existingConfig) {\n storeConfigPromise = this._roomList.setRoomEncryption(roomId, config);\n }\n\n AlgClass = algorithms.ENCRYPTION_CLASSES[config.algorithm];\n\n if (AlgClass) {\n _context7.next = 13;\n break;\n }\n\n throw new Error(\"Unable to encrypt with \" + config.algorithm);\n\n case 13:\n alg = new AlgClass({\n userId: this._userId,\n deviceId: this._deviceId,\n crypto: this,\n olmDevice: this._olmDevice,\n baseApis: this._baseApis,\n roomId: roomId,\n config: config\n });\n\n this._roomEncryptors[roomId] = alg;\n\n if (!storeConfigPromise) {\n _context7.next = 18;\n break;\n }\n\n _context7.next = 18;\n return (0, _bluebird.resolve)(storeConfigPromise);\n\n case 18:\n if (this._lazyLoadMembers) {\n _context7.next = 25;\n break;\n }\n\n logger.log(\"Enabling encryption in \" + roomId + \"; \" + \"starting to track device lists for all users therein\");\n\n _context7.next = 22;\n return (0, _bluebird.resolve)(this.trackRoomDevices(roomId));\n\n case 22:\n // TODO: this flag is only not used from MatrixClient::setRoomEncryption\n // which is never used (inside riot at least)\n // but didn't want to remove it as it technically would\n // be a breaking change.\n if (!this.inhibitDeviceQuery) {\n this._deviceList.refreshOutdatedDeviceLists();\n }\n _context7.next = 26;\n break;\n\n case 25:\n logger.log(\"Enabling encryption in \" + roomId);\n\n case 26:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n return function (_x10, _x11, _x12) {\n return _ref8.apply(this, arguments);\n };\n}();\n\n/**\n * Make sure we are tracking the device lists for all users in this room.\n *\n * @param {string} roomId The room ID to start tracking devices in.\n * @returns {Promise} when all devices for the room have been fetched and marked to track\n */\nCrypto.prototype.trackRoomDevices = function (roomId) {\n var _this2 = this;\n\n var trackMembers = function () {\n var _ref9 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee8() {\n var room, members;\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n if (_this2._roomEncryptors[roomId]) {\n _context8.next = 2;\n break;\n }\n\n return _context8.abrupt('return');\n\n case 2:\n room = _this2._clientStore.getRoom(roomId);\n\n if (room) {\n _context8.next = 5;\n break;\n }\n\n throw new Error('Unable to start tracking devices in unknown room ' + roomId);\n\n case 5:\n logger.log('Starting to track devices for room ' + roomId + ' ...');\n _context8.next = 8;\n return (0, _bluebird.resolve)(room.getEncryptionTargetMembers());\n\n case 8:\n members = _context8.sent;\n\n members.forEach(function (m) {\n _this2._deviceList.startTrackingDeviceList(m.userId);\n });\n\n case 10:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, _this2);\n }));\n\n return function trackMembers() {\n return _ref9.apply(this, arguments);\n };\n }();\n\n var promise = this._roomDeviceTrackingState[roomId];\n if (!promise) {\n promise = trackMembers();\n this._roomDeviceTrackingState[roomId] = promise;\n }\n return promise;\n};\n\n/**\n * @typedef {Object} module:crypto~OlmSessionResult\n * @property {module:crypto/deviceinfo} device device info\n * @property {string?} sessionId base64 olm session id; null if no session\n * could be established\n */\n\n/**\n * Try to make sure we have established olm sessions for all known devices for\n * the given users.\n *\n * @param {string[]} users list of user ids\n *\n * @return {module:client.Promise} resolves once the sessions are complete, to\n * an Object mapping from userId to deviceId to\n * {@link module:crypto~OlmSessionResult}\n */\nCrypto.prototype.ensureOlmSessionsForUsers = function (users) {\n var devicesByUser = {};\n\n for (var i = 0; i < users.length; ++i) {\n var userId = users[i];\n devicesByUser[userId] = [];\n\n var devices = this.getStoredDevicesForUser(userId) || [];\n for (var j = 0; j < devices.length; ++j) {\n var deviceInfo = devices[j];\n\n var key = deviceInfo.getIdentityKey();\n if (key == this._olmDevice.deviceCurve25519Key) {\n // don't bother setting up session to ourself\n continue;\n }\n if (deviceInfo.verified == DeviceVerification.BLOCKED) {\n // don't bother setting up sessions with blocked users\n continue;\n }\n\n devicesByUser[userId].push(deviceInfo);\n }\n }\n\n return olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, devicesByUser);\n};\n\n/**\n * Get a list containing all of the room keys\n *\n * @return {module:crypto/OlmDevice.MegolmSessionData[]} a list of session export objects\n */\nCrypto.prototype.exportRoomKeys = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee9() {\n var _this3 = this;\n\n var exportedSessions;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n exportedSessions = [];\n _context9.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n _this3._cryptoStore.getAllEndToEndInboundGroupSessions(txn, function (s) {\n if (s === null) return;\n\n var sess = _this3._olmDevice.exportInboundGroupSession(s.senderKey, s.sessionId, s.sessionData);\n delete sess.first_known_index;\n sess.algorithm = olmlib.MEGOLM_ALGORITHM;\n exportedSessions.push(sess);\n });\n }));\n\n case 3:\n return _context9.abrupt('return', exportedSessions);\n\n case 4:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this);\n}));\n\n/**\n * Import a list of room keys previously exported by exportRoomKeys\n *\n * @param {Object[]} keys a list of session export objects\n * @return {module:client.Promise} a promise which resolves once the keys have been imported\n */\nCrypto.prototype.importRoomKeys = function (keys) {\n var _this4 = this;\n\n return _bluebird2.default.map(keys, function (key) {\n if (!key.room_id || !key.algorithm) {\n logger.warn(\"ignoring room key entry with missing fields\", key);\n return null;\n }\n\n var alg = _this4._getRoomDecryptor(key.room_id, key.algorithm);\n return alg.importRoomKey(key);\n });\n};\n\n/**\n * Schedules sending all keys waiting to be sent to the backup, if not already\n * scheduled. Retries if necessary.\n */\nCrypto.prototype._scheduleKeyBackupSend = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee10() {\n var delay, numFailures, numBackedUp;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n if (!this._sendingBackups) {\n _context10.next = 2;\n break;\n }\n\n return _context10.abrupt('return');\n\n case 2:\n _context10.prev = 2;\n\n // wait between 0 and 10 seconds, to avoid backup\n // requests from different clients hitting the server all at\n // the same time when a new key is sent\n delay = Math.random() * 10000;\n _context10.next = 6;\n return (0, _bluebird.resolve)(_bluebird2.default.delay(delay));\n\n case 6:\n numFailures = 0; // number of consecutive failures\n\n case 7:\n if (!1) {\n _context10.next = 32;\n break;\n }\n\n if (this.backupKey) {\n _context10.next = 10;\n break;\n }\n\n return _context10.abrupt('return');\n\n case 10:\n _context10.prev = 10;\n _context10.next = 13;\n return (0, _bluebird.resolve)(this._backupPendingKeys(KEY_BACKUP_KEYS_PER_REQUEST));\n\n case 13:\n numBackedUp = _context10.sent;\n\n if (!(numBackedUp === 0)) {\n _context10.next = 16;\n break;\n }\n\n return _context10.abrupt('return');\n\n case 16:\n numFailures = 0;\n _context10.next = 27;\n break;\n\n case 19:\n _context10.prev = 19;\n _context10.t0 = _context10['catch'](10);\n\n numFailures++;\n console.log(\"Key backup request failed\", _context10.t0);\n\n if (!_context10.t0.data) {\n _context10.next = 27;\n break;\n }\n\n if (!(_context10.t0.data.errcode == 'M_NOT_FOUND' || _context10.t0.data.errcode == 'M_WRONG_ROOM_KEYS_VERSION')) {\n _context10.next = 27;\n break;\n }\n\n // Backup version has changed or this backup version\n // has been deleted\n this.emit(\"crypto.keyBackupFailed\", _context10.t0.data.errcode);\n throw _context10.t0;\n\n case 27:\n if (!numFailures) {\n _context10.next = 30;\n break;\n }\n\n _context10.next = 30;\n return (0, _bluebird.resolve)(_bluebird2.default.delay(1000 * Math.pow(2, Math.min(numFailures - 1, 4))));\n\n case 30:\n _context10.next = 7;\n break;\n\n case 32:\n _context10.prev = 32;\n\n this._sendingBackups = false;\n return _context10.finish(32);\n\n case 35:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this, [[2,, 32, 35], [10, 19]]);\n}));\n\n/**\n * Take some e2e keys waiting to be backed up and send them\n * to the backup.\n *\n * @param {integer} limit Maximum number of keys to back up\n * @returns {integer} Number of sessions backed up\n */\nCrypto.prototype._backupPendingKeys = function () {\n var _ref12 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(limit) {\n var sessions, data, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, session, roomId, sessionData, firstKnownIndex, encrypted, forwardedCount, device;\n\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return (0, _bluebird.resolve)(this._cryptoStore.getSessionsNeedingBackup(limit));\n\n case 2:\n sessions = _context11.sent;\n\n if (sessions.length) {\n _context11.next = 5;\n break;\n }\n\n return _context11.abrupt('return', 0);\n\n case 5:\n data = {};\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context11.prev = 9;\n _iterator2 = (0, _getIterator3.default)(sessions);\n\n case 11:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context11.next = 30;\n break;\n }\n\n session = _step2.value;\n roomId = session.sessionData.room_id;\n\n if (data[roomId] === undefined) {\n data[roomId] = { sessions: {} };\n }\n\n _context11.next = 17;\n return (0, _bluebird.resolve)(this._olmDevice.exportInboundGroupSession(session.senderKey, session.sessionId, session.sessionData));\n\n case 17:\n sessionData = _context11.sent;\n\n sessionData.algorithm = olmlib.MEGOLM_ALGORITHM;\n delete sessionData.session_id;\n delete sessionData.room_id;\n firstKnownIndex = sessionData.first_known_index;\n\n delete sessionData.first_known_index;\n encrypted = this.backupKey.encrypt((0, _stringify2.default)(sessionData));\n forwardedCount = (sessionData.forwarding_curve25519_key_chain || []).length;\n device = this._deviceList.getDeviceByIdentityKey(olmlib.MEGOLM_ALGORITHM, session.senderKey);\n\n\n data[roomId]['sessions'][session.sessionId] = {\n first_message_index: firstKnownIndex,\n forwarded_count: forwardedCount,\n is_verified: !!(device && device.isVerified()),\n session_data: encrypted\n };\n\n case 27:\n _iteratorNormalCompletion2 = true;\n _context11.next = 11;\n break;\n\n case 30:\n _context11.next = 36;\n break;\n\n case 32:\n _context11.prev = 32;\n _context11.t0 = _context11['catch'](9);\n _didIteratorError2 = true;\n _iteratorError2 = _context11.t0;\n\n case 36:\n _context11.prev = 36;\n _context11.prev = 37;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n\n case 39:\n _context11.prev = 39;\n\n if (!_didIteratorError2) {\n _context11.next = 42;\n break;\n }\n\n throw _iteratorError2;\n\n case 42:\n return _context11.finish(39);\n\n case 43:\n return _context11.finish(36);\n\n case 44:\n _context11.next = 46;\n return (0, _bluebird.resolve)(this._baseApis.sendKeyBackup(undefined, undefined, this.backupInfo.version, { rooms: data }));\n\n case 46:\n _context11.next = 48;\n return (0, _bluebird.resolve)(this._cryptoStore.unmarkSessionsNeedingBackup(sessions));\n\n case 48:\n return _context11.abrupt('return', sessions.length);\n\n case 49:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee11, this, [[9, 32, 36, 44], [37,, 39, 43]]);\n }));\n\n return function (_x13) {\n return _ref12.apply(this, arguments);\n };\n}();\n\nCrypto.prototype.backupGroupSession = function () {\n var _ref13 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee12(roomId, senderKey, forwardingCurve25519KeyChain, sessionId, sessionKey, keysClaimed, exportFormat) {\n return _regenerator2.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n if (this.backupInfo) {\n _context12.next = 2;\n break;\n }\n\n throw new Error(\"Key backups are not enabled\");\n\n case 2:\n _context12.next = 4;\n return (0, _bluebird.resolve)(this._cryptoStore.markSessionsNeedingBackup([{\n senderKey: senderKey,\n sessionId: sessionId\n }]));\n\n case 4:\n\n // don't wait for this to complete: it will delay so\n // happens in the background\n this._scheduleKeyBackupSend();\n\n case 5:\n case 'end':\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n return function (_x14, _x15, _x16, _x17, _x18, _x19, _x20) {\n return _ref13.apply(this, arguments);\n };\n}();\n\nCrypto.prototype.backupAllGroupSessions = function () {\n var _ref14 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(version) {\n var _this5 = this;\n\n var numKeysBackedUp;\n return _regenerator2.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n _context13.next = 2;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS, _indexeddbCryptoStore2.default.STORE_BACKUP], function (txn) {\n _this5._cryptoStore.getAllEndToEndInboundGroupSessions(txn, function (session) {\n if (session !== null) {\n _this5._cryptoStore.markSessionsNeedingBackup([session], txn);\n }\n });\n }));\n\n case 2:\n numKeysBackedUp = void 0;\n\n case 3:\n _context13.next = 5;\n return (0, _bluebird.resolve)(this._backupPendingKeys(KEY_BACKUP_KEYS_PER_REQUEST));\n\n case 5:\n numKeysBackedUp = _context13.sent;\n\n case 6:\n if (numKeysBackedUp > 0) {\n _context13.next = 3;\n break;\n }\n\n case 7:\n case 'end':\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n return function (_x21) {\n return _ref14.apply(this, arguments);\n };\n}();\n\n/* eslint-disable valid-jsdoc */ //https://github.com/eslint/eslint/issues/7307\n/**\n * Encrypt an event according to the configuration of the room.\n *\n * @param {module:models/event.MatrixEvent} event event to be sent\n *\n * @param {module:models/room} room destination room.\n *\n * @return {module:client.Promise?} Promise which resolves when the event has been\n * encrypted, or null if nothing was needed\n */\n/* eslint-enable valid-jsdoc */\nCrypto.prototype.encryptEvent = function () {\n var _ref15 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee14(event, room) {\n var roomId, alg, content, mRelatesTo, encryptedContent;\n return _regenerator2.default.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n if (room) {\n _context14.next = 2;\n break;\n }\n\n throw new Error(\"Cannot send encrypted messages in unknown rooms\");\n\n case 2:\n roomId = event.getRoomId();\n alg = this._roomEncryptors[roomId];\n\n if (alg) {\n _context14.next = 6;\n break;\n }\n\n throw new Error(\"Room was previously configured to use encryption, but is \" + \"no longer. Perhaps the homeserver is hiding the \" + \"configuration event.\");\n\n case 6:\n\n if (!this._roomDeviceTrackingState[roomId]) {\n this.trackRoomDevices(roomId);\n }\n // wait for all the room devices to be loaded\n _context14.next = 9;\n return (0, _bluebird.resolve)(this._roomDeviceTrackingState[roomId]);\n\n case 9:\n content = event.getContent();\n // If event has an m.relates_to then we need\n // to put this on the wrapping event instead\n\n mRelatesTo = content['m.relates_to'];\n\n if (mRelatesTo) {\n // Clone content here so we don't remove `m.relates_to` from the local-echo\n content = (0, _assign2.default)({}, content);\n delete content['m.relates_to'];\n }\n\n _context14.next = 14;\n return (0, _bluebird.resolve)(alg.encryptMessage(room, event.getType(), content));\n\n case 14:\n encryptedContent = _context14.sent;\n\n\n if (mRelatesTo) {\n encryptedContent['m.relates_to'] = mRelatesTo;\n }\n\n event.makeEncrypted(\"m.room.encrypted\", encryptedContent, this._olmDevice.deviceCurve25519Key, this._olmDevice.deviceEd25519Key);\n\n case 17:\n case 'end':\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n return function (_x22, _x23) {\n return _ref15.apply(this, arguments);\n };\n}();\n\n/**\n * Decrypt a received event\n *\n * @param {MatrixEvent} event\n *\n * @return {Promise<module:crypto~EventDecryptionResult>} resolves once we have\n * finished decrypting. Rejects with an `algorithms.DecryptionError` if there\n * is a problem decrypting the event.\n */\nCrypto.prototype.decryptEvent = function (event) {\n if (event.isRedacted()) {\n return _bluebird2.default.resolve({\n clearEvent: {\n room_id: event.getRoomId(),\n type: \"m.room.message\",\n content: {}\n }\n });\n }\n var content = event.getWireContent();\n var alg = this._getRoomDecryptor(event.getRoomId(), content.algorithm);\n return alg.decryptEvent(event);\n};\n\n/**\n * Handle the notification from /sync or /keys/changes that device lists have\n * been changed.\n *\n * @param {Object} syncData Object containing sync tokens associated with this sync\n * @param {Object} syncDeviceLists device_lists field from /sync, or response from\n * /keys/changes\n */\nCrypto.prototype.handleDeviceListChanges = function () {\n var _ref16 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee15(syncData, syncDeviceLists) {\n return _regenerator2.default.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n if (syncData.oldSyncToken) {\n _context15.next = 2;\n break;\n }\n\n return _context15.abrupt('return');\n\n case 2:\n _context15.next = 4;\n return (0, _bluebird.resolve)(this._evalDeviceListChanges(syncDeviceLists));\n\n case 4:\n case 'end':\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n return function (_x24, _x25) {\n return _ref16.apply(this, arguments);\n };\n}();\n\n/**\n * Send a request for some room keys, if we have not already done so\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * @param {Array<{userId: string, deviceId: string}>} recipients\n */\nCrypto.prototype.requestRoomKey = function (requestBody, recipients) {\n this._outgoingRoomKeyRequestManager.sendRoomKeyRequest(requestBody, recipients).catch(function (e) {\n // this normally means we couldn't talk to the store\n logger.error('Error requesting key for event', e);\n }).done();\n};\n\n/**\n * Cancel any earlier room key request\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * parameters to match for cancellation\n * @param {boolean} andResend\n * if true, resend the key request after cancelling.\n */\nCrypto.prototype.cancelRoomKeyRequest = function (requestBody, andResend) {\n this._outgoingRoomKeyRequestManager.cancelRoomKeyRequest(requestBody, andResend).catch(function (e) {\n logger.warn(\"Error clearing pending room key requests\", e);\n }).done();\n};\n\n/**\n * handle an m.room.encryption event\n *\n * @param {module:models/event.MatrixEvent} event encryption event\n */\nCrypto.prototype.onCryptoEvent = function () {\n var _ref17 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee16(event) {\n var roomId, content;\n return _regenerator2.default.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n roomId = event.getRoomId();\n content = event.getContent();\n _context16.prev = 2;\n _context16.next = 5;\n return (0, _bluebird.resolve)(this.setRoomEncryption(roomId, content, true));\n\n case 5:\n _context16.next = 10;\n break;\n\n case 7:\n _context16.prev = 7;\n _context16.t0 = _context16['catch'](2);\n\n logger.error(\"Error configuring encryption in room \" + roomId + \":\", _context16.t0);\n\n case 10:\n case 'end':\n return _context16.stop();\n }\n }\n }, _callee16, this, [[2, 7]]);\n }));\n\n return function (_x26) {\n return _ref17.apply(this, arguments);\n };\n}();\n\n/**\n * Called before the result of a sync is procesed\n *\n * @param {Object} syncData the data from the 'MatrixClient.sync' event\n */\nCrypto.prototype.onSyncWillProcess = function () {\n var _ref18 = (0, _bluebird.method)(function (syncData) {\n if (!syncData.oldSyncToken) {\n // If there is no old sync token, we start all our tracking from\n // scratch, so mark everything as untracked. onCryptoEvent will\n // be called for all e2e rooms during the processing of the sync,\n // at which point we'll start tracking all the users of that room.\n logger.log(\"Initial sync performed - resetting device tracking state\");\n this._deviceList.stopTrackingAllDeviceLists();\n this._roomDeviceTrackingState = {};\n }\n });\n\n return function (_x27) {\n return _ref18.apply(this, arguments);\n };\n}();\n\n/**\n * handle the completion of a /sync\n *\n * This is called after the processing of each successful /sync response.\n * It is an opportunity to do a batch process on the information received.\n *\n * @param {Object} syncData the data from the 'MatrixClient.sync' event\n */\nCrypto.prototype.onSyncCompleted = function () {\n var _ref19 = (0, _bluebird.method)(function (syncData) {\n var nextSyncToken = syncData.nextSyncToken;\n\n this._deviceList.setSyncToken(syncData.nextSyncToken);\n this._deviceList.saveIfDirty();\n\n // catch up on any new devices we got told about during the sync.\n this._deviceList.lastKnownSyncToken = nextSyncToken;\n this._deviceList.refreshOutdatedDeviceLists();\n\n // we don't start uploading one-time keys until we've caught up with\n // to-device messages, to help us avoid throwing away one-time-keys that we\n // are about to receive messages for\n // (https://github.com/vector-im/riot-web/issues/2782).\n if (!syncData.catchingUp) {\n _maybeUploadOneTimeKeys(this);\n this._processReceivedRoomKeyRequests();\n }\n });\n\n return function (_x28) {\n return _ref19.apply(this, arguments);\n };\n}();\n\n/**\n * Trigger the appropriate invalidations and removes for a given\n * device list\n *\n * @param {Object} deviceLists device_lists field from /sync, or response from\n * /keys/changes\n */\nCrypto.prototype._evalDeviceListChanges = function () {\n var _ref20 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee17(deviceLists) {\n var _this6 = this;\n\n var e2eUserIds;\n return _regenerator2.default.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n if (deviceLists.changed && Array.isArray(deviceLists.changed)) {\n deviceLists.changed.forEach(function (u) {\n _this6._deviceList.invalidateUserDeviceList(u);\n });\n }\n\n if (!(deviceLists.left && Array.isArray(deviceLists.left) && deviceLists.left.length)) {\n _context17.next = 8;\n break;\n }\n\n _context17.t0 = _set2.default;\n _context17.next = 5;\n return (0, _bluebird.resolve)(this._getTrackedE2eUsers());\n\n case 5:\n _context17.t1 = _context17.sent;\n e2eUserIds = new _context17.t0(_context17.t1);\n\n\n deviceLists.left.forEach(function (u) {\n if (!e2eUserIds.has(u)) {\n _this6._deviceList.stopTrackingDeviceList(u);\n }\n });\n\n case 8:\n case 'end':\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n return function (_x29) {\n return _ref20.apply(this, arguments);\n };\n}();\n\n/**\n * Get a list of all the IDs of users we share an e2e room with\n * for which we are tracking devices already\n *\n * @returns {string[]} List of user IDs\n */\nCrypto.prototype._getTrackedE2eUsers = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee18() {\n var e2eUserIds, _iteratorNormalCompletion3, _didIteratorError3, _iteratorError3, _iterator3, _step3, room, members, _iteratorNormalCompletion4, _didIteratorError4, _iteratorError4, _iterator4, _step4, member;\n\n return _regenerator2.default.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n e2eUserIds = [];\n _iteratorNormalCompletion3 = true;\n _didIteratorError3 = false;\n _iteratorError3 = undefined;\n _context18.prev = 4;\n _iterator3 = (0, _getIterator3.default)(this._getTrackedE2eRooms());\n\n case 6:\n if (_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done) {\n _context18.next = 33;\n break;\n }\n\n room = _step3.value;\n _context18.next = 10;\n return (0, _bluebird.resolve)(room.getEncryptionTargetMembers());\n\n case 10:\n members = _context18.sent;\n _iteratorNormalCompletion4 = true;\n _didIteratorError4 = false;\n _iteratorError4 = undefined;\n _context18.prev = 14;\n\n for (_iterator4 = (0, _getIterator3.default)(members); !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n member = _step4.value;\n\n e2eUserIds.push(member.userId);\n }\n _context18.next = 22;\n break;\n\n case 18:\n _context18.prev = 18;\n _context18.t0 = _context18['catch'](14);\n _didIteratorError4 = true;\n _iteratorError4 = _context18.t0;\n\n case 22:\n _context18.prev = 22;\n _context18.prev = 23;\n\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n\n case 25:\n _context18.prev = 25;\n\n if (!_didIteratorError4) {\n _context18.next = 28;\n break;\n }\n\n throw _iteratorError4;\n\n case 28:\n return _context18.finish(25);\n\n case 29:\n return _context18.finish(22);\n\n case 30:\n _iteratorNormalCompletion3 = true;\n _context18.next = 6;\n break;\n\n case 33:\n _context18.next = 39;\n break;\n\n case 35:\n _context18.prev = 35;\n _context18.t1 = _context18['catch'](4);\n _didIteratorError3 = true;\n _iteratorError3 = _context18.t1;\n\n case 39:\n _context18.prev = 39;\n _context18.prev = 40;\n\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n\n case 42:\n _context18.prev = 42;\n\n if (!_didIteratorError3) {\n _context18.next = 45;\n break;\n }\n\n throw _iteratorError3;\n\n case 45:\n return _context18.finish(42);\n\n case 46:\n return _context18.finish(39);\n\n case 47:\n return _context18.abrupt('return', e2eUserIds);\n\n case 48:\n case 'end':\n return _context18.stop();\n }\n }\n }, _callee18, this, [[4, 35, 39, 47], [14, 18, 22, 30], [23,, 25, 29], [40,, 42, 46]]);\n}));\n\n/**\n * Get a list of the e2e-enabled rooms we are members of,\n * and for which we are already tracking the devices\n *\n * @returns {module:models.Room[]}\n */\nCrypto.prototype._getTrackedE2eRooms = function () {\n var _this7 = this;\n\n return this._clientStore.getRooms().filter(function (room) {\n // check for rooms with encryption enabled\n var alg = _this7._roomEncryptors[room.roomId];\n if (!alg) {\n return false;\n }\n if (!_this7._roomDeviceTrackingState[room.roomId]) {\n return false;\n }\n\n // ignore any rooms which we have left\n var myMembership = room.getMyMembership();\n return myMembership === \"join\" || myMembership === \"invite\";\n });\n};\n\nCrypto.prototype._onToDeviceEvent = function (event) {\n var _this8 = this;\n\n try {\n if (event.getType() == \"m.room_key\" || event.getType() == \"m.forwarded_room_key\") {\n this._onRoomKeyEvent(event);\n } else if (event.getType() == \"m.room_key_request\") {\n this._onRoomKeyRequestEvent(event);\n } else if (event.getContent().msgtype === \"m.bad.encrypted\") {\n this._onToDeviceBadEncrypted(event);\n } else if (event.isBeingDecrypted()) {\n // once the event has been decrypted, try again\n event.once('Event.decrypted', function (ev) {\n _this8._onToDeviceEvent(ev);\n });\n }\n } catch (e) {\n logger.error(\"Error handling toDeviceEvent:\", e);\n }\n};\n\n/**\n * Handle a key event\n *\n * @private\n * @param {module:models/event.MatrixEvent} event key event\n */\nCrypto.prototype._onRoomKeyEvent = function (event) {\n var content = event.getContent();\n\n if (!content.room_id || !content.algorithm) {\n logger.error(\"key event is missing fields\");\n return;\n }\n\n if (!this._checkedForBackup) {\n // don't bother awaiting on this - the important thing is that we retry if we\n // haven't managed to check before\n this._checkAndStartKeyBackup();\n }\n\n var alg = this._getRoomDecryptor(content.room_id, content.algorithm);\n alg.onRoomKeyEvent(event);\n};\n\n/**\n * Handle a toDevice event that couldn't be decrypted\n *\n * @private\n * @param {module:models/event.MatrixEvent} event undecryptable event\n */\nCrypto.prototype._onToDeviceBadEncrypted = function () {\n var _ref22 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee19(event) {\n var content, sender, algorithm, deviceKey, lastNewSessionForced, device, devicesByUser, encryptedContent, requestsToResend, _iteratorNormalCompletion5, _didIteratorError5, _iteratorError5, _iterator5, _step5, keyReq;\n\n return _regenerator2.default.wrap(function _callee19$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n content = event.getWireContent();\n sender = event.getSender();\n algorithm = content.algorithm;\n deviceKey = content.sender_key;\n\n if (!(sender === undefined || deviceKey === undefined || deviceKey === undefined)) {\n _context19.next = 6;\n break;\n }\n\n return _context19.abrupt('return');\n\n case 6:\n\n // check when we last forced a new session with this device: if we've already done so\n // recently, don't do it again.\n this._lastNewSessionForced[sender] = this._lastNewSessionForced[sender] || {};\n lastNewSessionForced = this._lastNewSessionForced[sender][deviceKey] || 0;\n\n if (!(lastNewSessionForced + MIN_FORCE_SESSION_INTERVAL_MS > Date.now())) {\n _context19.next = 11;\n break;\n }\n\n logger.debug(\"New session already forced with device \" + sender + \":\" + deviceKey + \" at \" + lastNewSessionForced + \": not forcing another\");\n return _context19.abrupt('return');\n\n case 11:\n\n // establish a new olm session with this device since we're failing to decrypt messages\n // on a current session.\n // Note that an undecryptable message from another device could easily be spoofed -\n // is there anything we can do to mitigate this?\n device = this._deviceList.getDeviceByIdentityKey(algorithm, deviceKey);\n\n if (device) {\n _context19.next = 15;\n break;\n }\n\n logger.info(\"Couldn't find device for identity key \" + deviceKey + \": not re-establishing session\");\n return _context19.abrupt('return');\n\n case 15:\n devicesByUser = {};\n\n devicesByUser[sender] = [device];\n _context19.next = 19;\n return (0, _bluebird.resolve)(olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, devicesByUser, true));\n\n case 19:\n\n this._lastNewSessionForced[sender][deviceKey] = Date.now();\n\n // Now send a blank message on that session so the other side knows about it.\n // (The keyshare request is sent in the clear so that won't do)\n // We send this first such that, as long as the toDevice messages arrive in the\n // same order we sent them, the other end will get this first, set up the new session,\n // then get the keyshare request and send the key over this new session (because it\n // is the session it has most recently received a message on).\n encryptedContent = {\n algorithm: olmlib.OLM_ALGORITHM,\n sender_key: this._olmDevice.deviceCurve25519Key,\n ciphertext: {}\n };\n _context19.next = 23;\n return (0, _bluebird.resolve)(olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this._userId, this._deviceId, this._olmDevice, sender, device, { type: \"m.dummy\" }));\n\n case 23:\n _context19.next = 25;\n return (0, _bluebird.resolve)(this._baseApis.sendToDevice(\"m.room.encrypted\", (0, _defineProperty3.default)({}, sender, (0, _defineProperty3.default)({}, device.deviceId, encryptedContent))));\n\n case 25:\n _context19.next = 27;\n return (0, _bluebird.resolve)(this._outgoingRoomKeyRequestManager.getOutgoingSentRoomKeyRequest(sender, device.deviceId));\n\n case 27:\n requestsToResend = _context19.sent;\n _iteratorNormalCompletion5 = true;\n _didIteratorError5 = false;\n _iteratorError5 = undefined;\n _context19.prev = 31;\n\n for (_iterator5 = (0, _getIterator3.default)(requestsToResend); !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n keyReq = _step5.value;\n\n this.cancelRoomKeyRequest(keyReq.requestBody, true);\n }\n _context19.next = 39;\n break;\n\n case 35:\n _context19.prev = 35;\n _context19.t0 = _context19['catch'](31);\n _didIteratorError5 = true;\n _iteratorError5 = _context19.t0;\n\n case 39:\n _context19.prev = 39;\n _context19.prev = 40;\n\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n\n case 42:\n _context19.prev = 42;\n\n if (!_didIteratorError5) {\n _context19.next = 45;\n break;\n }\n\n throw _iteratorError5;\n\n case 45:\n return _context19.finish(42);\n\n case 46:\n return _context19.finish(39);\n\n case 47:\n case 'end':\n return _context19.stop();\n }\n }\n }, _callee19, this, [[31, 35, 39, 47], [40,, 42, 46]]);\n }));\n\n return function (_x30) {\n return _ref22.apply(this, arguments);\n };\n}();\n\n/**\n * Handle a change in the membership state of a member of a room\n *\n * @private\n * @param {module:models/event.MatrixEvent} event event causing the change\n * @param {module:models/room-member} member user whose membership changed\n * @param {string=} oldMembership previous membership\n */\nCrypto.prototype._onRoomMembership = function (event, member, oldMembership) {\n // this event handler is registered on the *client* (as opposed to the room\n // member itself), which means it is only called on changes to the *live*\n // membership state (ie, it is not called when we back-paginate, nor when\n // we load the state in the initialsync).\n //\n // Further, it is automatically registered and called when new members\n // arrive in the room.\n\n var roomId = member.roomId;\n\n var alg = this._roomEncryptors[roomId];\n if (!alg) {\n // not encrypting in this room\n return;\n }\n // only mark users in this room as tracked if we already started tracking in this room\n // this way we don't start device queries after sync on behalf of this room which we won't use\n // the result of anyway, as we'll need to do a query again once all the members are fetched\n // by calling _trackRoomDevices\n if (this._roomDeviceTrackingState[roomId]) {\n if (member.membership == 'join') {\n logger.log('Join event for ' + member.userId + ' in ' + roomId);\n // make sure we are tracking the deviceList for this user\n this._deviceList.startTrackingDeviceList(member.userId);\n } else if (member.membership == 'invite' && this._clientStore.getRoom(roomId).shouldEncryptForInvitedMembers()) {\n logger.log('Invite event for ' + member.userId + ' in ' + roomId);\n this._deviceList.startTrackingDeviceList(member.userId);\n }\n }\n\n alg.onRoomMembership(event, member, oldMembership);\n};\n\n/**\n * Called when we get an m.room_key_request event.\n *\n * @private\n * @param {module:models/event.MatrixEvent} event key request event\n */\nCrypto.prototype._onRoomKeyRequestEvent = function (event) {\n var content = event.getContent();\n if (content.action === \"request\") {\n // Queue it up for now, because they tend to arrive before the room state\n // events at initial sync, and we want to see if we know anything about the\n // room before passing them on to the app.\n var req = new IncomingRoomKeyRequest(event);\n this._receivedRoomKeyRequests.push(req);\n } else if (content.action === \"request_cancellation\") {\n var _req = new IncomingRoomKeyRequestCancellation(event);\n this._receivedRoomKeyRequestCancellations.push(_req);\n }\n};\n\n/**\n * Process any m.room_key_request events which were queued up during the\n * current sync.\n *\n * @private\n */\nCrypto.prototype._processReceivedRoomKeyRequests = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee20() {\n var _this9 = this;\n\n var requests, cancellations;\n return _regenerator2.default.wrap(function _callee20$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n if (!this._processingRoomKeyRequests) {\n _context20.next = 2;\n break;\n }\n\n return _context20.abrupt('return');\n\n case 2:\n this._processingRoomKeyRequests = true;\n\n _context20.prev = 3;\n\n // we need to grab and clear the queues in the synchronous bit of this method,\n // so that we don't end up racing with the next /sync.\n requests = this._receivedRoomKeyRequests;\n\n this._receivedRoomKeyRequests = [];\n cancellations = this._receivedRoomKeyRequestCancellations;\n\n this._receivedRoomKeyRequestCancellations = [];\n\n // Process all of the requests, *then* all of the cancellations.\n //\n // This makes sure that if we get a request and its cancellation in the\n // same /sync result, then we process the request before the\n // cancellation (and end up with a cancelled request), rather than the\n // cancellation before the request (and end up with an outstanding\n // request which should have been cancelled.)\n _context20.next = 10;\n return (0, _bluebird.resolve)(_bluebird2.default.map(requests, function (req) {\n return _this9._processReceivedRoomKeyRequest(req);\n }));\n\n case 10:\n _context20.next = 12;\n return (0, _bluebird.resolve)(_bluebird2.default.map(cancellations, function (cancellation) {\n return _this9._processReceivedRoomKeyRequestCancellation(cancellation);\n }));\n\n case 12:\n _context20.next = 17;\n break;\n\n case 14:\n _context20.prev = 14;\n _context20.t0 = _context20['catch'](3);\n\n logger.error('Error processing room key requsts: ' + _context20.t0);\n\n case 17:\n _context20.prev = 17;\n\n this._processingRoomKeyRequests = false;\n return _context20.finish(17);\n\n case 20:\n case 'end':\n return _context20.stop();\n }\n }\n }, _callee20, this, [[3, 14, 17, 20]]);\n}));\n\n/**\n * Helper for processReceivedRoomKeyRequests\n *\n * @param {IncomingRoomKeyRequest} req\n */\nCrypto.prototype._processReceivedRoomKeyRequest = function () {\n var _ref24 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee21(req) {\n var userId, deviceId, body, roomId, alg, encryptor, _device, decryptor, device;\n\n return _regenerator2.default.wrap(function _callee21$(_context21) {\n while (1) {\n switch (_context21.prev = _context21.next) {\n case 0:\n userId = req.userId;\n deviceId = req.deviceId;\n body = req.requestBody;\n roomId = body.room_id;\n alg = body.algorithm;\n\n\n logger.log('m.room_key_request from ' + userId + ':' + deviceId + (' for ' + roomId + ' / ' + body.session_id + ' (id ' + req.requestId + ')'));\n\n if (!(userId !== this._userId)) {\n _context21.next = 24;\n break;\n }\n\n if (this._roomEncryptors[roomId]) {\n _context21.next = 10;\n break;\n }\n\n logger.debug('room key request for unencrypted room ' + roomId);\n return _context21.abrupt('return');\n\n case 10:\n encryptor = this._roomEncryptors[roomId];\n _device = this._deviceList.getStoredDevice(userId, deviceId);\n\n if (_device) {\n _context21.next = 15;\n break;\n }\n\n logger.debug('Ignoring keyshare for unknown device ' + userId + ':' + deviceId);\n return _context21.abrupt('return');\n\n case 15:\n _context21.prev = 15;\n _context21.next = 18;\n return (0, _bluebird.resolve)(encryptor.reshareKeyWithDevice(body.sender_key, body.session_id, userId, _device));\n\n case 18:\n _context21.next = 23;\n break;\n\n case 20:\n _context21.prev = 20;\n _context21.t0 = _context21['catch'](15);\n\n logger.warn(\"Failed to re-share keys for session \" + body.session_id + \" with device \" + userId + \":\" + _device.deviceId, _context21.t0);\n\n case 23:\n return _context21.abrupt('return');\n\n case 24:\n if (this._roomDecryptors[roomId]) {\n _context21.next = 27;\n break;\n }\n\n logger.log('room key request for unencrypted room ' + roomId);\n return _context21.abrupt('return');\n\n case 27:\n decryptor = this._roomDecryptors[roomId][alg];\n\n if (decryptor) {\n _context21.next = 31;\n break;\n }\n\n logger.log('room key request for unknown alg ' + alg + ' in room ' + roomId);\n return _context21.abrupt('return');\n\n case 31:\n _context21.next = 33;\n return (0, _bluebird.resolve)(decryptor.hasKeysForKeyRequest(req));\n\n case 33:\n if (_context21.sent) {\n _context21.next = 36;\n break;\n }\n\n logger.log('room key request for unknown session ' + roomId + ' / ' + body.session_id);\n return _context21.abrupt('return');\n\n case 36:\n\n req.share = function () {\n decryptor.shareKeysWithDevice(req);\n };\n\n // if the device is is verified already, share the keys\n device = this._deviceList.getStoredDevice(userId, deviceId);\n\n if (!(device && device.isVerified())) {\n _context21.next = 42;\n break;\n }\n\n logger.log('device is already verified: sharing keys');\n req.share();\n return _context21.abrupt('return');\n\n case 42:\n\n this.emit(\"crypto.roomKeyRequest\", req);\n\n case 43:\n case 'end':\n return _context21.stop();\n }\n }\n }, _callee21, this, [[15, 20]]);\n }));\n\n return function (_x31) {\n return _ref24.apply(this, arguments);\n };\n}();\n\n/**\n * Helper for processReceivedRoomKeyRequests\n *\n * @param {IncomingRoomKeyRequestCancellation} cancellation\n */\nCrypto.prototype._processReceivedRoomKeyRequestCancellation = function () {\n var _ref25 = (0, _bluebird.method)(function (cancellation) {\n logger.log('m.room_key_request cancellation for ' + cancellation.userId + ':' + (cancellation.deviceId + ' (id ' + cancellation.requestId + ')'));\n\n // we should probably only notify the app of cancellations we told it\n // about, but we don't currently have a record of that, so we just pass\n // everything through.\n this.emit(\"crypto.roomKeyRequestCancellation\", cancellation);\n });\n\n return function (_x32) {\n return _ref25.apply(this, arguments);\n };\n}();\n\n/**\n * Get a decryptor for a given room and algorithm.\n *\n * If we already have a decryptor for the given room and algorithm, return\n * it. Otherwise try to instantiate it.\n *\n * @private\n *\n * @param {string?} roomId room id for decryptor. If undefined, a temporary\n * decryptor is instantiated.\n *\n * @param {string} algorithm crypto algorithm\n *\n * @return {module:crypto.algorithms.base.DecryptionAlgorithm}\n *\n * @raises {module:crypto.algorithms.DecryptionError} if the algorithm is\n * unknown\n */\nCrypto.prototype._getRoomDecryptor = function (roomId, algorithm) {\n var decryptors = void 0;\n var alg = void 0;\n\n roomId = roomId || null;\n if (roomId) {\n decryptors = this._roomDecryptors[roomId];\n if (!decryptors) {\n this._roomDecryptors[roomId] = decryptors = {};\n }\n\n alg = decryptors[algorithm];\n if (alg) {\n return alg;\n }\n }\n\n var AlgClass = algorithms.DECRYPTION_CLASSES[algorithm];\n if (!AlgClass) {\n throw new algorithms.DecryptionError('UNKNOWN_ENCRYPTION_ALGORITHM', 'Unknown encryption algorithm \"' + algorithm + '\".');\n }\n alg = new AlgClass({\n userId: this._userId,\n crypto: this,\n olmDevice: this._olmDevice,\n baseApis: this._baseApis,\n roomId: roomId\n });\n\n if (decryptors) {\n decryptors[algorithm] = alg;\n }\n return alg;\n};\n\n/**\n * sign the given object with our ed25519 key\n *\n * @param {Object} obj Object to which we will add a 'signatures' property\n */\nCrypto.prototype._signObject = function () {\n var _ref26 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee22(obj) {\n var sigs;\n return _regenerator2.default.wrap(function _callee22$(_context22) {\n while (1) {\n switch (_context22.prev = _context22.next) {\n case 0:\n sigs = {};\n\n sigs[this._userId] = {};\n _context22.next = 4;\n return (0, _bluebird.resolve)(this._olmDevice.sign(anotherjson.stringify(obj)));\n\n case 4:\n sigs[this._userId][\"ed25519:\" + this._deviceId] = _context22.sent;\n\n obj.signatures = sigs;\n\n case 6:\n case 'end':\n return _context22.stop();\n }\n }\n }, _callee22, this);\n }));\n\n return function (_x33) {\n return _ref26.apply(this, arguments);\n };\n}();\n\n/**\n * The parameters of a room key request. The details of the request may\n * vary with the crypto algorithm, but the management and storage layers for\n * outgoing requests expect it to have 'room_id' and 'session_id' properties.\n *\n * @typedef {Object} RoomKeyRequestBody\n */\n\n/**\n * Represents a received m.room_key_request event\n *\n * @property {string} userId user requesting the key\n * @property {string} deviceId device requesting the key\n * @property {string} requestId unique id for the request\n * @property {module:crypto~RoomKeyRequestBody} requestBody\n * @property {function()} share callback which, when called, will ask\n * the relevant crypto algorithm implementation to share the keys for\n * this request.\n */\n\nvar IncomingRoomKeyRequest = function IncomingRoomKeyRequest(event) {\n (0, _classCallCheck3.default)(this, IncomingRoomKeyRequest);\n\n var content = event.getContent();\n\n this.userId = event.getSender();\n this.deviceId = content.requesting_device_id;\n this.requestId = content.request_id;\n this.requestBody = content.body || {};\n this.share = function () {\n throw new Error(\"don't know how to share keys for this request yet\");\n };\n};\n\n/**\n * Represents a received m.room_key_request cancellation\n *\n * @property {string} userId user requesting the cancellation\n * @property {string} deviceId device requesting the cancellation\n * @property {string} requestId unique id for the request to be cancelled\n */\n\n\nvar IncomingRoomKeyRequestCancellation = function IncomingRoomKeyRequestCancellation(event) {\n (0, _classCallCheck3.default)(this, IncomingRoomKeyRequestCancellation);\n\n var content = event.getContent();\n\n this.userId = event.getSender();\n this.deviceId = content.requesting_device_id;\n this.requestId = content.request_id;\n};\n\n/**\n * The result of a (successful) call to decryptEvent.\n *\n * @typedef {Object} EventDecryptionResult\n *\n * @property {Object} clearEvent The plaintext payload for the event\n * (typically containing <tt>type</tt> and <tt>content</tt> fields).\n *\n * @property {?string} senderCurve25519Key Key owned by the sender of this\n * event. See {@link module:models/event.MatrixEvent#getSenderKey}.\n *\n * @property {?string} claimedEd25519Key ed25519 key claimed by the sender of\n * this event. See\n * {@link module:models/event.MatrixEvent#getClaimedEd25519Key}.\n *\n * @property {?Array<string>} forwardingCurve25519KeyChain list of curve25519\n * keys involved in telling us about the senderCurve25519Key and\n * claimedEd25519Key. See\n * {@link module:models/event.MatrixEvent#getForwardingCurve25519KeyChain}.\n */\n\n/**\n * Fires when we receive a room key request\n *\n * @event module:client~MatrixClient#\"crypto.roomKeyRequest\"\n * @param {module:crypto~IncomingRoomKeyRequest} req request details\n */\n\n/**\n * Fires when we receive a room key request cancellation\n *\n * @event module:client~MatrixClient#\"crypto.roomKeyRequestCancellation\"\n * @param {module:crypto~IncomingRoomKeyRequestCancellation} req\n */\n\n/**\n * Fires when the app may wish to warn the user about something related\n * the end-to-end crypto.\n *\n * Comes with a type which is one of:\n * * CRYPTO_WARNING_ACCOUNT_MIGRATED: Account data has been migrated from an older\n * version of the store in such a way that older clients will no longer be\n * able to read it. The app may wish to warn the user against going back to\n * an older version of the app.\n * * CRYPTO_WARNING_OLD_VERSION_DETECTED: js-sdk has detected that an older version\n * of js-sdk has been run against the same store after a migration has been\n * performed. This is likely have caused unexpected behaviour in the old\n * version. For example, the old version and the new version may have two\n * different identity keys.\n *\n * @event module:client~MatrixClient#\"crypto.warning\"\n * @param {string} type One of the strings listed above\n */\n//# sourceMappingURL=index.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _logger = require('../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _utils = require('../utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Internal module. Management of outgoing room key requests.\n *\n * See https://docs.google.com/document/d/1m4gQkcnJkxNuBmb5NoFCIadIY-DyqqNAS3lloE73BlQ\n * for draft documentation on what we're supposed to be implementing here.\n *\n * @module\n */\n\n// delay between deciding we want some keys, and sending out the request, to\n// allow for (a) it turning up anyway, (b) grouping requests together\nvar SEND_KEY_REQUESTS_DELAY_MS = 500;\n\n/** possible states for a room key request\n *\n * The state machine looks like:\n *\n * | (cancellation sent)\n * | .-------------------------------------------------.\n * | | |\n * V V (cancellation requested) |\n * UNSENT -----------------------------+ |\n * | | |\n * | | |\n * | (send successful) | CANCELLATION_PENDING_AND_WILL_RESEND\n * V | Λ\n * SENT | |\n * |-------------------------------- | --------------'\n * | | (cancellation requested with intent\n * | | to resend the original request)\n * | |\n * | (cancellation requested) |\n * V |\n * CANCELLATION_PENDING |\n * | |\n * | (cancellation sent) |\n * V |\n * (deleted) <---------------------------+\n *\n * @enum {number}\n */\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ROOM_KEY_REQUEST_STATES = {\n /** request not yet sent */\n UNSENT: 0,\n\n /** request sent, awaiting reply */\n SENT: 1,\n\n /** reply received, cancellation not yet sent */\n CANCELLATION_PENDING: 2,\n\n /**\n * Cancellation not yet sent and will transition to UNSENT instead of\n * being deleted once the cancellation has been sent.\n */\n CANCELLATION_PENDING_AND_WILL_RESEND: 3\n};\n\nvar OutgoingRoomKeyRequestManager = function () {\n function OutgoingRoomKeyRequestManager(baseApis, deviceId, cryptoStore) {\n (0, _classCallCheck3.default)(this, OutgoingRoomKeyRequestManager);\n\n this._baseApis = baseApis;\n this._deviceId = deviceId;\n this._cryptoStore = cryptoStore;\n\n // handle for the delayed call to _sendOutgoingRoomKeyRequests. Non-null\n // if the callback has been set, or if it is still running.\n this._sendOutgoingRoomKeyRequestsTimer = null;\n\n // sanity check to ensure that we don't end up with two concurrent runs\n // of _sendOutgoingRoomKeyRequests\n this._sendOutgoingRoomKeyRequestsRunning = false;\n\n this._clientRunning = false;\n }\n\n /**\n * Called when the client is started. Sets background processes running.\n */\n\n\n (0, _createClass3.default)(OutgoingRoomKeyRequestManager, [{\n key: 'start',\n value: function start() {\n this._clientRunning = true;\n\n // set the timer going, to handle any requests which didn't get sent\n // on the previous run of the client.\n this._startTimer();\n }\n\n /**\n * Called when the client is stopped. Stops any running background processes.\n */\n\n }, {\n key: 'stop',\n value: function stop() {\n _logger2.default.log('stopping OutgoingRoomKeyRequestManager');\n // stop the timer on the next run\n this._clientRunning = false;\n }\n\n /**\n * Send off a room key request, if we haven't already done so.\n *\n * The `requestBody` is compared (with a deep-equality check) against\n * previous queued or sent requests and if it matches, no change is made.\n * Otherwise, a request is added to the pending list, and a job is started\n * in the background to send it.\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * @param {Array<{userId: string, deviceId: string}>} recipients\n *\n * @returns {Promise} resolves when the request has been added to the\n * pending list (or we have established that a similar request already\n * exists)\n */\n\n }, {\n key: 'sendRoomKeyRequest',\n value: function sendRoomKeyRequest(requestBody, recipients) {\n var _this = this;\n\n return this._cryptoStore.getOrAddOutgoingRoomKeyRequest({\n requestBody: requestBody,\n recipients: recipients,\n requestId: this._baseApis.makeTxnId(),\n state: ROOM_KEY_REQUEST_STATES.UNSENT\n }).then(function (req) {\n if (req.state === ROOM_KEY_REQUEST_STATES.UNSENT) {\n _this._startTimer();\n }\n });\n }\n\n /**\n * Cancel room key requests, if any match the given requestBody\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * @param {boolean} andResend if true, transition to UNSENT instead of\n * deleting after sending cancellation.\n *\n * @returns {Promise} resolves when the request has been updated in our\n * pending list.\n */\n\n }, {\n key: 'cancelRoomKeyRequest',\n value: function cancelRoomKeyRequest(requestBody) {\n var _this2 = this;\n\n var andResend = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n return this._cryptoStore.getOutgoingRoomKeyRequest(requestBody).then(function (req) {\n if (!req) {\n // no request was made for this key\n return;\n }\n switch (req.state) {\n case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING:\n case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND:\n // nothing to do here\n return;\n\n case ROOM_KEY_REQUEST_STATES.UNSENT:\n // just delete it\n\n // FIXME: ghahah we may have attempted to send it, and\n // not yet got a successful response. So the server\n // may have seen it, so we still need to send a cancellation\n // in that case :/\n\n _logger2.default.log('deleting unnecessary room key request for ' + stringifyRequestBody(requestBody));\n return _this2._cryptoStore.deleteOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.UNSENT);\n\n case ROOM_KEY_REQUEST_STATES.SENT:\n {\n // If `andResend` is set, transition to UNSENT once the\n // cancellation has successfully been sent.\n var state = andResend ? ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND : ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING;\n // send a cancellation.\n return _this2._cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.SENT, {\n state: state,\n cancellationTxnId: _this2._baseApis.makeTxnId()\n }).then(function (updatedReq) {\n if (!updatedReq) {\n // updateOutgoingRoomKeyRequest couldn't find the\n // request in state ROOM_KEY_REQUEST_STATES.SENT,\n // so we must have raced with another tab to mark\n // the request cancelled. There is no point in\n // sending another cancellation since the other tab\n // will do it.\n _logger2.default.log('Tried to cancel room key request for ' + stringifyRequestBody(requestBody) + ' but it was already cancelled in another tab');\n return;\n }\n\n // We don't want to wait for the timer, so we send it\n // immediately. (We might actually end up racing with the timer,\n // but that's ok: even if we make the request twice, we'll do it\n // with the same transaction_id, so only one message will get\n // sent).\n //\n // (We also don't want to wait for the response from the server\n // here, as it will slow down processing of received keys if we\n // do.)\n _this2._sendOutgoingRoomKeyRequestCancellation(updatedReq, andResend).catch(function (e) {\n _logger2.default.error(\"Error sending room key request cancellation;\" + \" will retry later.\", e);\n _this2._startTimer();\n }).then(function () {\n if (!andResend) return;\n // The request has transitioned from\n // CANCELLATION_PENDING_AND_WILL_RESEND to UNSENT. We\n // still need to resend the request which is now UNSENT, so\n // start the timer if it isn't already started.\n _this2._startTimer();\n });\n });\n }\n default:\n throw new Error('unhandled state: ' + req.state);\n }\n });\n }\n\n /**\n * Look for room key requests by target device and state\n *\n * @param {string} userId Target user ID\n * @param {string} deviceId Target device ID\n *\n * @return {Promise} resolves to a list of all the\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}\n */\n\n }, {\n key: 'getOutgoingSentRoomKeyRequest',\n value: function getOutgoingSentRoomKeyRequest(userId, deviceId) {\n return this._cryptoStore.getOutgoingRoomKeyRequestsByTarget(userId, deviceId, [ROOM_KEY_REQUEST_STATES.SENT]);\n }\n\n // start the background timer to send queued requests, if the timer isn't\n // already running\n\n }, {\n key: '_startTimer',\n value: function _startTimer() {\n var _this3 = this;\n\n if (this._sendOutgoingRoomKeyRequestsTimer) {\n return;\n }\n\n var startSendingOutgoingRoomKeyRequests = function startSendingOutgoingRoomKeyRequests() {\n if (_this3._sendOutgoingRoomKeyRequestsRunning) {\n throw new Error(\"RoomKeyRequestSend already in progress!\");\n }\n _this3._sendOutgoingRoomKeyRequestsRunning = true;\n\n _this3._sendOutgoingRoomKeyRequests().finally(function () {\n _this3._sendOutgoingRoomKeyRequestsRunning = false;\n }).catch(function (e) {\n // this should only happen if there is an indexeddb error,\n // in which case we're a bit stuffed anyway.\n _logger2.default.warn('error in OutgoingRoomKeyRequestManager: ' + e);\n }).done();\n };\n\n this._sendOutgoingRoomKeyRequestsTimer = global.setTimeout(startSendingOutgoingRoomKeyRequests, SEND_KEY_REQUESTS_DELAY_MS);\n }\n\n // look for and send any queued requests. Runs itself recursively until\n // there are no more requests, or there is an error (in which case, the\n // timer will be restarted before the promise resolves).\n\n }, {\n key: '_sendOutgoingRoomKeyRequests',\n value: function _sendOutgoingRoomKeyRequests() {\n var _this4 = this;\n\n if (!this._clientRunning) {\n this._sendOutgoingRoomKeyRequestsTimer = null;\n return _bluebird2.default.resolve();\n }\n\n _logger2.default.log(\"Looking for queued outgoing room key requests\");\n\n return this._cryptoStore.getOutgoingRoomKeyRequestByState([ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING, ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND, ROOM_KEY_REQUEST_STATES.UNSENT]).then(function (req) {\n if (!req) {\n _logger2.default.log(\"No more outgoing room key requests\");\n _this4._sendOutgoingRoomKeyRequestsTimer = null;\n return;\n }\n\n var prom = void 0;\n switch (req.state) {\n case ROOM_KEY_REQUEST_STATES.UNSENT:\n prom = _this4._sendOutgoingRoomKeyRequest(req);\n break;\n case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING:\n prom = _this4._sendOutgoingRoomKeyRequestCancellation(req);\n break;\n case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND:\n prom = _this4._sendOutgoingRoomKeyRequestCancellation(req, true);\n break;\n }\n\n return prom.then(function () {\n // go around the loop again\n return _this4._sendOutgoingRoomKeyRequests();\n }).catch(function (e) {\n _logger2.default.error(\"Error sending room key request; will retry later.\", e);\n _this4._sendOutgoingRoomKeyRequestsTimer = null;\n _this4._startTimer();\n }).done();\n });\n }\n\n // given a RoomKeyRequest, send it and update the request record\n\n }, {\n key: '_sendOutgoingRoomKeyRequest',\n value: function _sendOutgoingRoomKeyRequest(req) {\n var _this5 = this;\n\n _logger2.default.log('Requesting keys for ' + stringifyRequestBody(req.requestBody) + (' from ' + stringifyRecipientList(req.recipients)) + ('(id ' + req.requestId + ')'));\n\n var requestMessage = {\n action: \"request\",\n requesting_device_id: this._deviceId,\n request_id: req.requestId,\n body: req.requestBody\n };\n\n return this._sendMessageToDevices(requestMessage, req.recipients, req.requestId).then(function () {\n return _this5._cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.UNSENT, { state: ROOM_KEY_REQUEST_STATES.SENT });\n });\n }\n\n // Given a RoomKeyRequest, cancel it and delete the request record unless\n // andResend is set, in which case transition to UNSENT.\n\n }, {\n key: '_sendOutgoingRoomKeyRequestCancellation',\n value: function _sendOutgoingRoomKeyRequestCancellation(req, andResend) {\n var _this6 = this;\n\n _logger2.default.log('Sending cancellation for key request for ' + (stringifyRequestBody(req.requestBody) + ' to ') + (stringifyRecipientList(req.recipients) + ' ') + ('(cancellation id ' + req.cancellationTxnId + ')'));\n\n var requestMessage = {\n action: \"request_cancellation\",\n requesting_device_id: this._deviceId,\n request_id: req.requestId\n };\n\n return this._sendMessageToDevices(requestMessage, req.recipients, req.cancellationTxnId).then(function () {\n if (andResend) {\n // We want to resend, so transition to UNSENT\n return _this6._cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND, { state: ROOM_KEY_REQUEST_STATES.UNSENT });\n }\n return _this6._cryptoStore.deleteOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING);\n });\n }\n\n // send a RoomKeyRequest to a list of recipients\n\n }, {\n key: '_sendMessageToDevices',\n value: function _sendMessageToDevices(message, recipients, txnId) {\n var contentMap = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(recipients), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var recip = _step.value;\n\n if (!contentMap[recip.userId]) {\n contentMap[recip.userId] = {};\n }\n contentMap[recip.userId][recip.deviceId] = message;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return this._baseApis.sendToDevice('m.room_key_request', contentMap, txnId);\n }\n }]);\n return OutgoingRoomKeyRequestManager;\n}();\n\nexports.default = OutgoingRoomKeyRequestManager;\n\n\nfunction stringifyRequestBody(requestBody) {\n // we assume that the request is for megolm keys, which are identified by\n // room id and session id\n return requestBody.room_id + \" / \" + requestBody.session_id;\n}\n\nfunction stringifyRecipientList(recipients) {\n return '[' + _utils2.default.map(recipients, function (r) {\n return r.userId + ':' + r.deviceId;\n }).join(\",\") + ']';\n}\n//# sourceMappingURL=OutgoingRoomKeyRequestManager.js.map","'use strict';\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _initialiseAccount = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(sessionStore, cryptoStore, pickleKey, account) {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return (0, _bluebird.resolve)(cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n cryptoStore.getAccount(txn, function (pickledAccount) {\n if (pickledAccount !== null) {\n account.unpickle(pickleKey, pickledAccount);\n } else {\n account.create();\n pickledAccount = account.pickle(pickleKey);\n cryptoStore.storeAccount(txn, pickledAccount);\n }\n });\n }));\n\n case 2:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function _initialiseAccount(_x, _x2, _x3, _x4) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * @return {array} The version of Olm.\n */\n\n\nvar _logger = require('../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _indexeddbCryptoStore = require('./store/indexeddb-crypto-store');\n\nvar _indexeddbCryptoStore2 = _interopRequireDefault(_indexeddbCryptoStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The maximum size of an event is 65K, and we base64 the content, so this is a\n// reasonable approximation to the biggest plaintext we can encrypt.\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MAX_PLAINTEXT_LENGTH = 65536 * 3 / 4;\n\nfunction checkPayloadLength(payloadString) {\n if (payloadString === undefined) {\n throw new Error(\"payloadString undefined\");\n }\n\n if (payloadString.length > MAX_PLAINTEXT_LENGTH) {\n // might as well fail early here rather than letting the olm library throw\n // a cryptic memory allocation error.\n //\n // Note that even if we manage to do the encryption, the message send may fail,\n // because by the time we've wrapped the ciphertext in the event object, it may\n // exceed 65K. But at least we won't just fail with \"abort()\" in that case.\n throw new Error(\"Message too long (\" + payloadString.length + \" bytes). \" + \"The maximum for an encrypted message is \" + MAX_PLAINTEXT_LENGTH + \" bytes.\");\n }\n}\n\n/**\n * The type of object we use for importing and exporting megolm session data.\n *\n * @typedef {Object} module:crypto/OlmDevice.MegolmSessionData\n * @property {String} sender_key Sender's Curve25519 device key\n * @property {String[]} forwarding_curve25519_key_chain Devices which forwarded\n * this session to us (normally empty).\n * @property {Object<string, string>} sender_claimed_keys Other keys the sender claims.\n * @property {String} room_id Room this session is used in\n * @property {String} session_id Unique id for the session\n * @property {String} session_key Base64'ed key data\n */\n\n/**\n * Manages the olm cryptography functions. Each OlmDevice has a single\n * OlmAccount and a number of OlmSessions.\n *\n * Accounts and sessions are kept pickled in a sessionStore.\n *\n * @constructor\n * @alias module:crypto/OlmDevice\n *\n * @param {Object} sessionStore A store to be used for data in end-to-end\n * crypto. This is deprecated and being replaced by cryptoStore.\n * @param {Object} cryptoStore A store for crypto data\n *\n * @property {string} deviceCurve25519Key Curve25519 key for the account\n * @property {string} deviceEd25519Key Ed25519 key for the account\n */\nfunction OlmDevice(sessionStore, cryptoStore) {\n this._sessionStore = sessionStore;\n this._cryptoStore = cryptoStore;\n this._pickleKey = \"DEFAULT_KEY\";\n\n // don't know these until we load the account from storage in init()\n this.deviceCurve25519Key = null;\n this.deviceEd25519Key = null;\n this._maxOneTimeKeys = null;\n\n // we don't bother stashing outboundgroupsessions in the sessionstore -\n // instead we keep them here.\n this._outboundGroupSessionStore = {};\n\n // Store a set of decrypted message indexes for each group session.\n // This partially mitigates a replay attack where a MITM resends a group\n // message into the room.\n //\n // When we decrypt a message and the message index matches a previously\n // decrypted message, one possible cause of that is that we are decrypting\n // the same event, and may not indicate an actual replay attack. For\n // example, this could happen if we receive events, forget about them, and\n // then re-fetch them when we backfill. So we store the event ID and\n // timestamp corresponding to each message index when we first decrypt it,\n // and compare these against the event ID and timestamp every time we use\n // that same index. If they match, then we're probably decrypting the same\n // event and we don't consider it a replay attack.\n //\n // Keys are strings of form \"<senderKey>|<session_id>|<message_index>\"\n // Values are objects of the form \"{id: <event id>, timestamp: <ts>}\"\n this._inboundGroupSessionMessageIndexes = {};\n}\n\n/**\n * Initialise the OlmAccount. This must be called before any other operations\n * on the OlmDevice.\n *\n * Attempts to load the OlmAccount from the crypto store, or creates one if none is\n * found.\n *\n * Reads the device keys from the OlmAccount object.\n */\nOlmDevice.prototype.init = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var e2eKeys, account;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(this._migrateFromSessionStore());\n\n case 2:\n e2eKeys = void 0;\n account = new global.Olm.Account();\n _context.prev = 4;\n _context.next = 7;\n return (0, _bluebird.resolve)(_initialiseAccount(this._sessionStore, this._cryptoStore, this._pickleKey, account));\n\n case 7:\n e2eKeys = JSON.parse(account.identity_keys());\n\n this._maxOneTimeKeys = account.max_number_of_one_time_keys();\n\n case 9:\n _context.prev = 9;\n\n account.free();\n return _context.finish(9);\n\n case 12:\n\n this.deviceCurve25519Key = e2eKeys.curve25519;\n this.deviceEd25519Key = e2eKeys.ed25519;\n\n case 14:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[4,, 9, 12]]);\n}));\n\nOlmDevice.getOlmVersion = function () {\n return global.Olm.get_library_version();\n};\n\nOlmDevice.prototype._migrateFromSessionStore = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var _this = this;\n\n var sessions, ibGroupSessions, numIbSessions;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this._cryptoStore.getAccount(txn, function (pickledAccount) {\n if (pickledAccount === null) {\n // Migrate from sessionStore\n pickledAccount = _this._sessionStore.getEndToEndAccount();\n if (pickledAccount !== null) {\n _logger2.default.log(\"Migrating account from session store\");\n _this._cryptoStore.storeAccount(txn, pickledAccount);\n }\n }\n });\n }));\n\n case 2:\n\n // remove the old account now the transaction has completed. Either we've\n // migrated it or decided not to, either way we want to blow away the old data.\n this._sessionStore.removeEndToEndAccount();\n\n // sessions\n sessions = this._sessionStore.getAllEndToEndSessions();\n\n if (!((0, _keys2.default)(sessions).length > 0)) {\n _context3.next = 8;\n break;\n }\n\n _context3.next = 7;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n // Don't migrate sessions from localstorage if we already have sessions\n // in indexeddb, since this means we've already migrated and an old version\n // has run against the same localstorage and created some spurious sessions.\n _this._cryptoStore.countEndToEndSessions(txn, function (count) {\n if (count) {\n _logger2.default.log(\"Crypto store already has sessions: not migrating\");\n return;\n }\n var numSessions = 0;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(sessions)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var deviceKey = _step.value;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(sessions[deviceKey])), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var sessionId = _step2.value;\n\n numSessions++;\n _this._cryptoStore.storeEndToEndSession(deviceKey, sessionId, sessions[deviceKey][sessionId], txn);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n _logger2.default.log(\"Migrating \" + numSessions + \" sessions from session store\");\n });\n }));\n\n case 7:\n\n this._sessionStore.removeAllEndToEndSessions();\n\n case 8:\n\n // inbound group sessions\n ibGroupSessions = this._sessionStore.getAllEndToEndInboundGroupSessionKeys();\n\n if (!((0, _keys2.default)(ibGroupSessions).length > 0)) {\n _context3.next = 14;\n break;\n }\n\n numIbSessions = 0;\n _context3.next = 13;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n // We always migrate inbound group sessions, even if we already have some\n // in the new store. They should be be safe to migrate.\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(ibGroupSessions), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var s = _step3.value;\n\n try {\n _this._cryptoStore.addEndToEndInboundGroupSession(s.senderKey, s.sessionId, JSON.parse(_this._sessionStore.getEndToEndInboundGroupSession(s.senderKey, s.sessionId)), txn);\n } catch (e) {\n _logger2.default.warn(\"Failed to migrate session \" + s.senderKey + \"/\" + s.sessionId + \": \" + e.stack || e);\n }\n ++numIbSessions;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n _logger2.default.log(\"Migrated \" + numIbSessions + \" inbound group sessions from session store\");\n }));\n\n case 13:\n this._sessionStore.removeAllEndToEndInboundGroupSessions();\n\n case 14:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n}));\n\n/**\n * extract our OlmAccount from the crypto store and call the given function\n * with the account object\n * The `account` object is useable only within the callback passed to this\n * function and will be freed as soon the callback returns. It is *not*\n * useable for the rest of the lifetime of the transaction.\n * This function requires a live transaction object from cryptoStore.doTxn()\n * and therefore may only be called in a doTxn() callback.\n *\n * @param {*} txn Opaque transaction object from cryptoStore.doTxn()\n * @param {function} func\n * @private\n */\nOlmDevice.prototype._getAccount = function (txn, func) {\n var _this2 = this;\n\n this._cryptoStore.getAccount(txn, function (pickledAccount) {\n var account = new global.Olm.Account();\n try {\n account.unpickle(_this2._pickleKey, pickledAccount);\n func(account);\n } finally {\n account.free();\n }\n });\n};\n\n/*\n * Saves an account to the crypto store.\n * This function requires a live transaction object from cryptoStore.doTxn()\n * and therefore may only be called in a doTxn() callback.\n *\n * @param {*} txn Opaque transaction object from cryptoStore.doTxn()\n * @param {object} Olm.Account object\n * @private\n */\nOlmDevice.prototype._storeAccount = function (txn, account) {\n this._cryptoStore.storeAccount(txn, account.pickle(this._pickleKey));\n};\n\n/**\n * extract an OlmSession from the session store and call the given function\n * The session is useable only within the callback passed to this\n * function and will be freed as soon the callback returns. It is *not*\n * useable for the rest of the lifetime of the transaction.\n *\n * @param {string} deviceKey\n * @param {string} sessionId\n * @param {*} txn Opaque transaction object from cryptoStore.doTxn()\n * @param {function} func\n * @private\n */\nOlmDevice.prototype._getSession = function (deviceKey, sessionId, txn, func) {\n var _this3 = this;\n\n this._cryptoStore.getEndToEndSession(deviceKey, sessionId, txn, function (sessionInfo) {\n _this3._unpickleSession(sessionInfo, func);\n });\n};\n\n/**\n * Creates a session object from a session pickle and executes the given\n * function with it. The session object is destroyed once the function\n * returns.\n *\n * @param {object} sessionInfo\n * @param {function} func\n * @private\n */\nOlmDevice.prototype._unpickleSession = function (sessionInfo, func) {\n var session = new global.Olm.Session();\n try {\n session.unpickle(this._pickleKey, sessionInfo.session);\n var unpickledSessInfo = (0, _assign2.default)({}, sessionInfo, { session: session });\n\n func(unpickledSessInfo);\n } finally {\n session.free();\n }\n};\n\n/**\n * store our OlmSession in the session store\n *\n * @param {string} deviceKey\n * @param {object} sessionInfo {session: OlmSession, lastReceivedMessageTs: int}\n * @param {*} txn Opaque transaction object from cryptoStore.doTxn()\n * @private\n */\nOlmDevice.prototype._saveSession = function (deviceKey, sessionInfo, txn) {\n var sessionId = sessionInfo.session.session_id();\n var pickledSessionInfo = (0, _assign2.default)(sessionInfo, {\n session: sessionInfo.session.pickle(this._pickleKey)\n });\n this._cryptoStore.storeEndToEndSession(deviceKey, sessionId, pickledSessionInfo, txn);\n};\n\n/**\n * get an OlmUtility and call the given function\n *\n * @param {function} func\n * @return {object} result of func\n * @private\n */\nOlmDevice.prototype._getUtility = function (func) {\n var utility = new global.Olm.Utility();\n try {\n return func(utility);\n } finally {\n utility.free();\n }\n};\n\n/**\n * Signs a message with the ed25519 key for this account.\n *\n * @param {string} message message to be signed\n * @return {Promise<string>} base64-encoded signature\n */\nOlmDevice.prototype.sign = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(message) {\n var _this4 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n result = void 0;\n _context4.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this4._getAccount(txn, function (account) {\n result = account.sign(message);\n });\n }));\n\n case 3:\n return _context4.abrupt('return', result);\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n return function (_x5) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * Get the current (unused, unpublished) one-time keys for this account.\n *\n * @return {object} one time keys; an object with the single property\n * <tt>curve25519</tt>, which is itself an object mapping key id to Curve25519\n * key.\n */\nOlmDevice.prototype.getOneTimeKeys = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {\n var _this5 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n result = void 0;\n _context5.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this5._getAccount(txn, function (account) {\n result = JSON.parse(account.one_time_keys());\n });\n }));\n\n case 3:\n return _context5.abrupt('return', result);\n\n case 4:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n}));\n\n/**\n * Get the maximum number of one-time keys we can store.\n *\n * @return {number} number of keys\n */\nOlmDevice.prototype.maxNumberOfOneTimeKeys = function () {\n return this._maxOneTimeKeys;\n};\n\n/**\n * Marks all of the one-time keys as published.\n */\nOlmDevice.prototype.markKeysAsPublished = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee6() {\n var _this6 = this;\n\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this6._getAccount(txn, function (account) {\n account.mark_keys_as_published();\n _this6._storeAccount(txn, account);\n });\n }));\n\n case 2:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n}));\n\n/**\n * Generate some new one-time keys\n *\n * @param {number} numKeys number of keys to generate\n * @return {Promise} Resolved once the account is saved back having generated the keys\n */\nOlmDevice.prototype.generateOneTimeKeys = function (numKeys) {\n var _this7 = this;\n\n return this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this7._getAccount(txn, function (account) {\n account.generate_one_time_keys(numKeys);\n _this7._storeAccount(txn, account);\n });\n });\n};\n\n/**\n * Generate a new outbound session\n *\n * The new session will be stored in the cryptoStore.\n *\n * @param {string} theirIdentityKey remote user's Curve25519 identity key\n * @param {string} theirOneTimeKey remote user's one-time Curve25519 key\n * @return {string} sessionId for the outbound session.\n */\nOlmDevice.prototype.createOutboundSession = function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(theirIdentityKey, theirOneTimeKey) {\n var _this8 = this;\n\n var newSessionId;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n newSessionId = void 0;\n _context7.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT, _indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this8._getAccount(txn, function (account) {\n var session = new global.Olm.Session();\n try {\n session.create_outbound(account, theirIdentityKey, theirOneTimeKey);\n newSessionId = session.session_id();\n _this8._storeAccount(txn, account);\n var sessionInfo = {\n session: session,\n // Pretend we've received a message at this point, otherwise\n // if we try to send a message to the device, it won't use\n // this session\n lastReceivedMessageTs: Date.now()\n };\n _this8._saveSession(theirIdentityKey, sessionInfo, txn);\n } finally {\n session.free();\n }\n });\n }));\n\n case 3:\n return _context7.abrupt('return', newSessionId);\n\n case 4:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n return function (_x6, _x7) {\n return _ref7.apply(this, arguments);\n };\n}();\n\n/**\n * Generate a new inbound session, given an incoming message\n *\n * @param {string} theirDeviceIdentityKey remote user's Curve25519 identity key\n * @param {number} messageType messageType field from the received message (must be 0)\n * @param {string} ciphertext base64-encoded body from the received message\n *\n * @return {{payload: string, session_id: string}} decrypted payload, and\n * session id of new session\n *\n * @raises {Error} if the received message was not valid (for instance, it\n * didn't use a valid one-time key).\n */\nOlmDevice.prototype.createInboundSession = function () {\n var _ref8 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(theirDeviceIdentityKey, messageType, ciphertext) {\n var _this9 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n if (!(messageType !== 0)) {\n _context8.next = 2;\n break;\n }\n\n throw new Error(\"Need messageType == 0 to create inbound session\");\n\n case 2:\n result = void 0;\n _context8.next = 5;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT, _indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this9._getAccount(txn, function (account) {\n var session = new global.Olm.Session();\n try {\n session.create_inbound_from(account, theirDeviceIdentityKey, ciphertext);\n account.remove_one_time_keys(session);\n _this9._storeAccount(txn, account);\n\n var payloadString = session.decrypt(messageType, ciphertext);\n\n var sessionInfo = {\n session: session,\n // this counts as a received message: set last received message time\n // to now\n lastReceivedMessageTs: Date.now()\n };\n _this9._saveSession(theirDeviceIdentityKey, sessionInfo, txn);\n\n result = {\n payload: payloadString,\n session_id: session.session_id()\n };\n } finally {\n session.free();\n }\n });\n }));\n\n case 5:\n return _context8.abrupt('return', result);\n\n case 6:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n return function (_x8, _x9, _x10) {\n return _ref8.apply(this, arguments);\n };\n}();\n\n/**\n * Get a list of known session IDs for the given device\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key for the\n * remote device\n * @return {Promise<string[]>} a list of known session ids for the device\n */\nOlmDevice.prototype.getSessionIdsForDevice = function () {\n var _ref9 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(theirDeviceIdentityKey) {\n var _this10 = this;\n\n var sessionIds;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n sessionIds = void 0;\n _context9.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this10._cryptoStore.getEndToEndSessions(theirDeviceIdentityKey, txn, function (sessions) {\n sessionIds = (0, _keys2.default)(sessions);\n });\n }));\n\n case 3:\n return _context9.abrupt('return', sessionIds);\n\n case 4:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n return function (_x11) {\n return _ref9.apply(this, arguments);\n };\n}();\n\n/**\n * Get the right olm session id for encrypting messages to the given identity key\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key for the\n * remote device\n * @return {Promise<?string>} session id, or null if no established session\n */\nOlmDevice.prototype.getSessionIdForDevice = function () {\n var _ref10 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(theirDeviceIdentityKey) {\n var sessionInfos, idxOfBest, i, thisSessInfo, thisLastReceived, bestSessInfo, bestLastReceived;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return (0, _bluebird.resolve)(this.getSessionInfoForDevice(theirDeviceIdentityKey));\n\n case 2:\n sessionInfos = _context10.sent;\n\n if (!(sessionInfos.length === 0)) {\n _context10.next = 5;\n break;\n }\n\n return _context10.abrupt('return', null);\n\n case 5:\n // Use the session that has most recently received a message\n idxOfBest = 0;\n\n for (i = 1; i < sessionInfos.length; i++) {\n thisSessInfo = sessionInfos[i];\n thisLastReceived = thisSessInfo.lastReceivedMessageTs === undefined ? 0 : thisSessInfo.lastReceivedMessageTs;\n bestSessInfo = sessionInfos[idxOfBest];\n bestLastReceived = bestSessInfo.lastReceivedMessageTs === undefined ? 0 : bestSessInfo.lastReceivedMessageTs;\n\n if (thisLastReceived > bestLastReceived || thisLastReceived === bestLastReceived && thisSessInfo.sessionId < bestSessInfo.sessionId) {\n idxOfBest = i;\n }\n }\n return _context10.abrupt('return', sessionInfos[idxOfBest].sessionId);\n\n case 8:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n return function (_x12) {\n return _ref10.apply(this, arguments);\n };\n}();\n\n/**\n * Get information on the active Olm sessions for a device.\n * <p>\n * Returns an array, with an entry for each active session. The first entry in\n * the result will be the one used for outgoing messages. Each entry contains\n * the keys 'hasReceivedMessage' (true if the session has received an incoming\n * message and is therefore past the pre-key stage), and 'sessionId'.\n *\n * @param {string} deviceIdentityKey Curve25519 identity key for the device\n * @return {Array.<{sessionId: string, hasReceivedMessage: Boolean}>}\n */\nOlmDevice.prototype.getSessionInfoForDevice = function () {\n var _ref11 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(deviceIdentityKey) {\n var _this11 = this;\n\n var info;\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n info = [];\n _context11.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this11._cryptoStore.getEndToEndSessions(deviceIdentityKey, txn, function (sessions) {\n var sessionIds = (0, _keys2.default)(sessions).sort();\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n var _loop = function _loop() {\n var sessionId = _step4.value;\n\n _this11._unpickleSession(sessions[sessionId], function (sessInfo) {\n info.push({\n lastReceivedMessageTs: sessInfo.lastReceivedMessageTs,\n hasReceivedMessage: sessInfo.session.has_received_message(),\n sessionId: sessionId\n });\n });\n };\n\n for (var _iterator4 = (0, _getIterator3.default)(sessionIds), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n _loop();\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n });\n }));\n\n case 3:\n return _context11.abrupt('return', info);\n\n case 4:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n return function (_x13) {\n return _ref11.apply(this, arguments);\n };\n}();\n\n/**\n * Encrypt an outgoing message using an existing session\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key for the\n * remote device\n * @param {string} sessionId the id of the active session\n * @param {string} payloadString payload to be encrypted and sent\n *\n * @return {Promise<string>} ciphertext\n */\nOlmDevice.prototype.encryptMessage = function () {\n var _ref12 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee12(theirDeviceIdentityKey, sessionId, payloadString) {\n var _this12 = this;\n\n var res;\n return _regenerator2.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n checkPayloadLength(payloadString);\n\n res = void 0;\n _context12.next = 4;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this12._getSession(theirDeviceIdentityKey, sessionId, txn, function (sessionInfo) {\n res = sessionInfo.session.encrypt(payloadString);\n _this12._saveSession(theirDeviceIdentityKey, sessionInfo, txn);\n });\n }));\n\n case 4:\n return _context12.abrupt('return', res);\n\n case 5:\n case 'end':\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n return function (_x14, _x15, _x16) {\n return _ref12.apply(this, arguments);\n };\n}();\n\n/**\n * Decrypt an incoming message using an existing session\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key for the\n * remote device\n * @param {string} sessionId the id of the active session\n * @param {number} messageType messageType field from the received message\n * @param {string} ciphertext base64-encoded body from the received message\n *\n * @return {Promise<string>} decrypted payload.\n */\nOlmDevice.prototype.decryptMessage = function () {\n var _ref13 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(theirDeviceIdentityKey, sessionId, messageType, ciphertext) {\n var _this13 = this;\n\n var payloadString;\n return _regenerator2.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n payloadString = void 0;\n _context13.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this13._getSession(theirDeviceIdentityKey, sessionId, txn, function (sessionInfo) {\n payloadString = sessionInfo.session.decrypt(messageType, ciphertext);\n sessionInfo.lastReceivedMessageTs = Date.now();\n _this13._saveSession(theirDeviceIdentityKey, sessionInfo, txn);\n });\n }));\n\n case 3:\n return _context13.abrupt('return', payloadString);\n\n case 4:\n case 'end':\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n return function (_x17, _x18, _x19, _x20) {\n return _ref13.apply(this, arguments);\n };\n}();\n\n/**\n * Determine if an incoming messages is a prekey message matching an existing session\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key for the\n * remote device\n * @param {string} sessionId the id of the active session\n * @param {number} messageType messageType field from the received message\n * @param {string} ciphertext base64-encoded body from the received message\n *\n * @return {Promise<boolean>} true if the received message is a prekey message which matches\n * the given session.\n */\nOlmDevice.prototype.matchesSession = function () {\n var _ref14 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee14(theirDeviceIdentityKey, sessionId, messageType, ciphertext) {\n var _this14 = this;\n\n var matches;\n return _regenerator2.default.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n if (!(messageType !== 0)) {\n _context14.next = 2;\n break;\n }\n\n return _context14.abrupt('return', false);\n\n case 2:\n matches = void 0;\n _context14.next = 5;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this14._getSession(theirDeviceIdentityKey, sessionId, txn, function (sessionInfo) {\n matches = sessionInfo.session.matches_inbound(ciphertext);\n });\n }));\n\n case 5:\n return _context14.abrupt('return', matches);\n\n case 6:\n case 'end':\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n return function (_x21, _x22, _x23, _x24) {\n return _ref14.apply(this, arguments);\n };\n}();\n\n// Outbound group session\n// ======================\n\n/**\n * store an OutboundGroupSession in _outboundGroupSessionStore\n *\n * @param {Olm.OutboundGroupSession} session\n * @private\n */\nOlmDevice.prototype._saveOutboundGroupSession = function (session) {\n var pickledSession = session.pickle(this._pickleKey);\n this._outboundGroupSessionStore[session.session_id()] = pickledSession;\n};\n\n/**\n * extract an OutboundGroupSession from _outboundGroupSessionStore and call the\n * given function\n *\n * @param {string} sessionId\n * @param {function} func\n * @return {object} result of func\n * @private\n */\nOlmDevice.prototype._getOutboundGroupSession = function (sessionId, func) {\n var pickled = this._outboundGroupSessionStore[sessionId];\n if (pickled === undefined) {\n throw new Error(\"Unknown outbound group session \" + sessionId);\n }\n\n var session = new global.Olm.OutboundGroupSession();\n try {\n session.unpickle(this._pickleKey, pickled);\n return func(session);\n } finally {\n session.free();\n }\n};\n\n/**\n * Generate a new outbound group session\n *\n * @return {string} sessionId for the outbound session.\n */\nOlmDevice.prototype.createOutboundGroupSession = function () {\n var session = new global.Olm.OutboundGroupSession();\n try {\n session.create();\n this._saveOutboundGroupSession(session);\n return session.session_id();\n } finally {\n session.free();\n }\n};\n\n/**\n * Encrypt an outgoing message with an outbound group session\n *\n * @param {string} sessionId the id of the outboundgroupsession\n * @param {string} payloadString payload to be encrypted and sent\n *\n * @return {string} ciphertext\n */\nOlmDevice.prototype.encryptGroupMessage = function (sessionId, payloadString) {\n var self = this;\n\n checkPayloadLength(payloadString);\n\n return this._getOutboundGroupSession(sessionId, function (session) {\n var res = session.encrypt(payloadString);\n self._saveOutboundGroupSession(session);\n return res;\n });\n};\n\n/**\n * Get the session keys for an outbound group session\n *\n * @param {string} sessionId the id of the outbound group session\n *\n * @return {{chain_index: number, key: string}} current chain index, and\n * base64-encoded secret key.\n */\nOlmDevice.prototype.getOutboundGroupSessionKey = function (sessionId) {\n return this._getOutboundGroupSession(sessionId, function (session) {\n return {\n chain_index: session.message_index(),\n key: session.session_key()\n };\n });\n};\n\n// Inbound group session\n// =====================\n\n/**\n * data stored in the session store about an inbound group session\n *\n * @typedef {Object} InboundGroupSessionData\n * @property {string} room_Id\n * @property {string} session pickled Olm.InboundGroupSession\n * @property {Object<string, string>} keysClaimed\n * @property {Array<string>} forwardingCurve25519KeyChain Devices involved in forwarding\n * this session to us (normally empty).\n */\n\n/**\n * Unpickle a session from a sessionData object and invoke the given function.\n * The session is valid only until func returns.\n *\n * @param {Object} sessionData Object describing the session.\n * @param {function(Olm.InboundGroupSession)} func Invoked with the unpickled session\n * @return {*} result of func\n */\nOlmDevice.prototype._unpickleInboundGroupSession = function (sessionData, func) {\n var session = new global.Olm.InboundGroupSession();\n try {\n session.unpickle(this._pickleKey, sessionData.session);\n return func(session);\n } finally {\n session.free();\n }\n};\n\n/**\n * extract an InboundGroupSession from the crypto store and call the given function\n *\n * @param {string} roomId The room ID to extract the session for, or null to fetch\n * sessions for any room.\n * @param {string} senderKey\n * @param {string} sessionId\n * @param {*} txn Opaque transaction object from cryptoStore.doTxn()\n * @param {function(Olm.InboundGroupSession, InboundGroupSessionData)} func\n * function to call.\n *\n * @private\n */\nOlmDevice.prototype._getInboundGroupSession = function (roomId, senderKey, sessionId, txn, func) {\n var _this15 = this;\n\n this._cryptoStore.getEndToEndInboundGroupSession(senderKey, sessionId, txn, function (sessionData) {\n if (sessionData === null) {\n func(null);\n return;\n }\n\n // if we were given a room ID, check that the it matches the original one for the session. This stops\n // the HS pretending a message was targeting a different room.\n if (roomId !== null && roomId !== sessionData.room_id) {\n throw new Error(\"Mismatched room_id for inbound group session (expected \" + sessionData.room_id + \", was \" + roomId + \")\");\n }\n\n _this15._unpickleInboundGroupSession(sessionData, function (session) {\n func(session, sessionData);\n });\n });\n};\n\n/**\n * Add an inbound group session to the session store\n *\n * @param {string} roomId room in which this session will be used\n * @param {string} senderKey base64-encoded curve25519 key of the sender\n * @param {Array<string>} forwardingCurve25519KeyChain Devices involved in forwarding\n * this session to us.\n * @param {string} sessionId session identifier\n * @param {string} sessionKey base64-encoded secret key\n * @param {Object<string, string>} keysClaimed Other keys the sender claims.\n * @param {boolean} exportFormat true if the megolm keys are in export format\n * (ie, they lack an ed25519 signature)\n */\nOlmDevice.prototype.addInboundGroupSession = function () {\n var _ref15 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee15(roomId, senderKey, forwardingCurve25519KeyChain, sessionId, sessionKey, keysClaimed, exportFormat) {\n var _this16 = this;\n\n return _regenerator2.default.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n _context15.next = 2;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n /* if we already have this session, consider updating it */\n _this16._getInboundGroupSession(roomId, senderKey, sessionId, txn, function (existingSession, existingSessionData) {\n if (existingSession) {\n _logger2.default.log(\"Update for megolm session \" + senderKey + \"/\" + sessionId);\n // for now we just ignore updates. TODO: implement something here\n return;\n }\n\n // new session.\n var session = new global.Olm.InboundGroupSession();\n try {\n if (exportFormat) {\n session.import_session(sessionKey);\n } else {\n session.create(sessionKey);\n }\n if (sessionId != session.session_id()) {\n throw new Error(\"Mismatched group session ID from senderKey: \" + senderKey);\n }\n\n var sessionData = {\n room_id: roomId,\n session: session.pickle(_this16._pickleKey),\n keysClaimed: keysClaimed,\n forwardingCurve25519KeyChain: forwardingCurve25519KeyChain\n };\n\n _this16._cryptoStore.addEndToEndInboundGroupSession(senderKey, sessionId, sessionData, txn);\n } finally {\n session.free();\n }\n });\n }));\n\n case 2:\n case 'end':\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n return function (_x25, _x26, _x27, _x28, _x29, _x30, _x31) {\n return _ref15.apply(this, arguments);\n };\n}();\n\n/**\n * Decrypt a received message with an inbound group session\n *\n * @param {string} roomId room in which the message was received\n * @param {string} senderKey base64-encoded curve25519 key of the sender\n * @param {string} sessionId session identifier\n * @param {string} body base64-encoded body of the encrypted message\n * @param {string} eventId ID of the event being decrypted\n * @param {Number} timestamp timestamp of the event being decrypted\n *\n * @return {null} the sessionId is unknown\n *\n * @return {Promise<{result: string, senderKey: string,\n * forwardingCurve25519KeyChain: Array<string>,\n * keysClaimed: Object<string, string>}>}\n */\nOlmDevice.prototype.decryptGroupMessage = function () {\n var _ref16 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee16(roomId, senderKey, sessionId, body, eventId, timestamp) {\n var _this17 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n result = void 0;\n _context16.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n _this17._getInboundGroupSession(roomId, senderKey, sessionId, txn, function (session, sessionData) {\n if (session === null) {\n result = null;\n return;\n }\n var res = session.decrypt(body);\n\n var plaintext = res.plaintext;\n if (plaintext === undefined) {\n // Compatibility for older olm versions.\n plaintext = res;\n } else {\n // Check if we have seen this message index before to detect replay attacks.\n // If the event ID and timestamp are specified, and the match the event ID\n // and timestamp from the last time we used this message index, then we\n // don't consider it a replay attack.\n var messageIndexKey = senderKey + \"|\" + sessionId + \"|\" + res.message_index;\n if (messageIndexKey in _this17._inboundGroupSessionMessageIndexes) {\n var msgInfo = _this17._inboundGroupSessionMessageIndexes[messageIndexKey];\n if (msgInfo.id !== eventId || msgInfo.timestamp !== timestamp) {\n throw new Error(\"Duplicate message index, possible replay attack: \" + messageIndexKey);\n }\n }\n _this17._inboundGroupSessionMessageIndexes[messageIndexKey] = {\n id: eventId,\n timestamp: timestamp\n };\n }\n\n sessionData.session = session.pickle(_this17._pickleKey);\n _this17._cryptoStore.storeEndToEndInboundGroupSession(senderKey, sessionId, sessionData, txn);\n result = {\n result: plaintext,\n keysClaimed: sessionData.keysClaimed || {},\n senderKey: senderKey,\n forwardingCurve25519KeyChain: sessionData.forwardingCurve25519KeyChain || []\n };\n });\n }));\n\n case 3:\n return _context16.abrupt('return', result);\n\n case 4:\n case 'end':\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n return function (_x32, _x33, _x34, _x35, _x36, _x37) {\n return _ref16.apply(this, arguments);\n };\n}();\n\n/**\n * Determine if we have the keys for a given megolm session\n *\n * @param {string} roomId room in which the message was received\n * @param {string} senderKey base64-encoded curve25519 key of the sender\n * @param {sring} sessionId session identifier\n *\n * @returns {Promise<boolean>} true if we have the keys to this session\n */\nOlmDevice.prototype.hasInboundSessionKeys = function () {\n var _ref17 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee17(roomId, senderKey, sessionId) {\n var _this18 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n result = void 0;\n _context17.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n _this18._cryptoStore.getEndToEndInboundGroupSession(senderKey, sessionId, txn, function (sessionData) {\n if (sessionData === null) {\n result = false;\n return;\n }\n\n if (roomId !== sessionData.room_id) {\n _logger2.default.warn('requested keys for inbound group session ' + senderKey + '|' + (sessionId + ', with incorrect room_id ') + ('(expected ' + sessionData.room_id + ', ') + ('was ' + roomId + ')'));\n result = false;\n } else {\n result = true;\n }\n });\n }));\n\n case 3:\n return _context17.abrupt('return', result);\n\n case 4:\n case 'end':\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n return function (_x38, _x39, _x40) {\n return _ref17.apply(this, arguments);\n };\n}();\n\n/**\n * Extract the keys to a given megolm session, for sharing\n *\n * @param {string} roomId room in which the message was received\n * @param {string} senderKey base64-encoded curve25519 key of the sender\n * @param {string} sessionId session identifier\n * @param {integer} chainIndex The chain index at which to export the session.\n * If omitted, export at the first index we know about.\n *\n * @returns {Promise<{chain_index: number, key: string,\n * forwarding_curve25519_key_chain: Array<string>,\n * sender_claimed_ed25519_key: string\n * }>}\n * details of the session key. The key is a base64-encoded megolm key in\n * export format.\n *\n * @throws Error If the given chain index could not be obtained from the known\n * index (ie. the given chain index is before the first we have).\n */\nOlmDevice.prototype.getInboundGroupSessionKey = function () {\n var _ref18 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee18(roomId, senderKey, sessionId, chainIndex) {\n var _this19 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n result = void 0;\n _context18.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n _this19._getInboundGroupSession(roomId, senderKey, sessionId, txn, function (session, sessionData) {\n if (session === null) {\n result = null;\n return;\n }\n\n if (chainIndex === undefined) {\n chainIndex = session.first_known_index();\n }\n\n var exportedSession = session.export_session(chainIndex);\n\n var claimedKeys = sessionData.keysClaimed || {};\n var senderEd25519Key = claimedKeys.ed25519 || null;\n\n result = {\n \"chain_index\": chainIndex,\n \"key\": exportedSession,\n \"forwarding_curve25519_key_chain\": sessionData.forwardingCurve25519KeyChain || [],\n \"sender_claimed_ed25519_key\": senderEd25519Key\n };\n });\n }));\n\n case 3:\n return _context18.abrupt('return', result);\n\n case 4:\n case 'end':\n return _context18.stop();\n }\n }\n }, _callee18, this);\n }));\n\n return function (_x41, _x42, _x43, _x44) {\n return _ref18.apply(this, arguments);\n };\n}();\n\n/**\n * Export an inbound group session\n *\n * @param {string} senderKey base64-encoded curve25519 key of the sender\n * @param {string} sessionId session identifier\n * @param {string} sessionData The session object from the store\n * @return {module:crypto/OlmDevice.MegolmSessionData} exported session data\n */\nOlmDevice.prototype.exportInboundGroupSession = function (senderKey, sessionId, sessionData) {\n return this._unpickleInboundGroupSession(sessionData, function (session) {\n var messageIndex = session.first_known_index();\n\n return {\n \"sender_key\": senderKey,\n \"sender_claimed_keys\": sessionData.keysClaimed,\n \"room_id\": sessionData.room_id,\n \"session_id\": sessionId,\n \"session_key\": session.export_session(messageIndex),\n \"forwarding_curve25519_key_chain\": session.forwardingCurve25519KeyChain || [],\n \"first_known_index\": session.first_known_index()\n };\n });\n};\n\n// Utilities\n// =========\n\n/**\n * Verify an ed25519 signature.\n *\n * @param {string} key ed25519 key\n * @param {string} message message which was signed\n * @param {string} signature base64-encoded signature to be checked\n *\n * @raises {Error} if there is a problem with the verification. If the key was\n * too small then the message will be \"OLM.INVALID_BASE64\". If the signature\n * was invalid then the message will be \"OLM.BAD_MESSAGE_MAC\".\n */\nOlmDevice.prototype.verifySignature = function (key, message, signature) {\n this._getUtility(function (util) {\n util.ed25519_verify(key, message, signature);\n });\n};\n\n/** */\nmodule.exports = OlmDevice;\n//# sourceMappingURL=OlmDevice.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module crypto/algorithms\n */\n\nvar base = require(\"./base\");\n\nrequire(\"./olm\");\nrequire(\"./megolm\");\n\n/**\n * @see module:crypto/algorithms/base.ENCRYPTION_CLASSES\n */\nmodule.exports.ENCRYPTION_CLASSES = base.ENCRYPTION_CLASSES;\n\n/**\n * @see module:crypto/algorithms/base.DECRYPTION_CLASSES\n */\nmodule.exports.DECRYPTION_CLASSES = base.DECRYPTION_CLASSES;\n\n/**\n * @see module:crypto/algorithms/base.DecryptionError\n */\nmodule.exports.DecryptionError = base.DecryptionError;\n//# sourceMappingURL=index.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * Defines m.olm encryption/decryption\n *\n * @module crypto/algorithms/olm\n */\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar logger = require(\"../../logger\");\nvar utils = require(\"../../utils\");\nvar olmlib = require(\"../olmlib\");\nvar DeviceInfo = require(\"../deviceinfo\");\nvar DeviceVerification = DeviceInfo.DeviceVerification;\n\nvar base = require(\"./base\");\n\n/**\n * Olm encryption implementation\n *\n * @constructor\n * @extends {module:crypto/algorithms/base.EncryptionAlgorithm}\n *\n * @param {object} params parameters, as per\n * {@link module:crypto/algorithms/base.EncryptionAlgorithm}\n */\nfunction OlmEncryption(params) {\n base.EncryptionAlgorithm.call(this, params);\n this._sessionPrepared = false;\n this._prepPromise = null;\n}\nutils.inherits(OlmEncryption, base.EncryptionAlgorithm);\n\n/**\n * @private\n\n * @param {string[]} roomMembers list of currently-joined users in the room\n * @return {module:client.Promise} Promise which resolves when setup is complete\n */\nOlmEncryption.prototype._ensureSession = function (roomMembers) {\n if (this._prepPromise) {\n // prep already in progress\n return this._prepPromise;\n }\n\n if (this._sessionPrepared) {\n // prep already done\n return _bluebird2.default.resolve();\n }\n\n var self = this;\n this._prepPromise = self._crypto.downloadKeys(roomMembers).then(function (res) {\n return self._crypto.ensureOlmSessionsForUsers(roomMembers);\n }).then(function () {\n self._sessionPrepared = true;\n }).finally(function () {\n self._prepPromise = null;\n });\n return this._prepPromise;\n};\n\n/**\n * @inheritdoc\n *\n * @param {module:models/room} room\n * @param {string} eventType\n * @param {object} content plaintext event content\n *\n * @return {module:client.Promise} Promise which resolves to the new event body\n */\nOlmEncryption.prototype.encryptMessage = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(room, eventType, content) {\n var members, users, self, payloadFields, encryptedContent, promises, i, userId, devices, j, deviceInfo, key;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(room.getEncryptionTargetMembers());\n\n case 2:\n members = _context.sent;\n users = utils.map(members, function (u) {\n return u.userId;\n });\n self = this;\n _context.next = 7;\n return (0, _bluebird.resolve)(this._ensureSession(users));\n\n case 7:\n payloadFields = {\n room_id: room.roomId,\n type: eventType,\n content: content\n };\n encryptedContent = {\n algorithm: olmlib.OLM_ALGORITHM,\n sender_key: self._olmDevice.deviceCurve25519Key,\n ciphertext: {}\n };\n promises = [];\n i = 0;\n\n case 11:\n if (!(i < users.length)) {\n _context.next = 29;\n break;\n }\n\n userId = users[i];\n devices = self._crypto.getStoredDevicesForUser(userId);\n j = 0;\n\n case 15:\n if (!(j < devices.length)) {\n _context.next = 26;\n break;\n }\n\n deviceInfo = devices[j];\n key = deviceInfo.getIdentityKey();\n\n if (!(key == self._olmDevice.deviceCurve25519Key)) {\n _context.next = 20;\n break;\n }\n\n return _context.abrupt(\"continue\", 23);\n\n case 20:\n if (!(deviceInfo.verified == DeviceVerification.BLOCKED)) {\n _context.next = 22;\n break;\n }\n\n return _context.abrupt(\"continue\", 23);\n\n case 22:\n\n promises.push(olmlib.encryptMessageForDevice(encryptedContent.ciphertext, self._userId, self._deviceId, self._olmDevice, userId, deviceInfo, payloadFields));\n\n case 23:\n ++j;\n _context.next = 15;\n break;\n\n case 26:\n ++i;\n _context.next = 11;\n break;\n\n case 29:\n _context.next = 31;\n return (0, _bluebird.resolve)(_bluebird2.default.all(promises).return(encryptedContent));\n\n case 31:\n return _context.abrupt(\"return\", _context.sent);\n\n case 32:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function (_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Olm decryption implementation\n *\n * @constructor\n * @extends {module:crypto/algorithms/base.DecryptionAlgorithm}\n * @param {object} params parameters, as per\n * {@link module:crypto/algorithms/base.DecryptionAlgorithm}\n */\nfunction OlmDecryption(params) {\n base.DecryptionAlgorithm.call(this, params);\n}\nutils.inherits(OlmDecryption, base.DecryptionAlgorithm);\n\n/**\n * @inheritdoc\n *\n * @param {MatrixEvent} event\n *\n * returns a promise which resolves to a\n * {@link module:crypto~EventDecryptionResult} once we have finished\n * decrypting. Rejects with an `algorithms.DecryptionError` if there is a\n * problem decrypting the event.\n */\nOlmDecryption.prototype.decryptEvent = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(event) {\n var content, deviceKey, ciphertext, message, payloadString, payload, claimedKeys;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n content = event.getWireContent();\n deviceKey = content.sender_key;\n ciphertext = content.ciphertext;\n\n if (ciphertext) {\n _context2.next = 5;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_MISSING_CIPHERTEXT\", \"Missing ciphertext\");\n\n case 5:\n if (this._olmDevice.deviceCurve25519Key in ciphertext) {\n _context2.next = 7;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_NOT_INCLUDED_IN_RECIPIENTS\", \"Not included in recipients\");\n\n case 7:\n message = ciphertext[this._olmDevice.deviceCurve25519Key];\n payloadString = void 0;\n _context2.prev = 9;\n _context2.next = 12;\n return (0, _bluebird.resolve)(this._decryptMessage(deviceKey, message));\n\n case 12:\n payloadString = _context2.sent;\n _context2.next = 18;\n break;\n\n case 15:\n _context2.prev = 15;\n _context2.t0 = _context2[\"catch\"](9);\n throw new base.DecryptionError(\"OLM_BAD_ENCRYPTED_MESSAGE\", \"Bad Encrypted Message\", {\n sender: deviceKey,\n err: _context2.t0\n });\n\n case 18:\n payload = JSON.parse(payloadString);\n\n // check that we were the intended recipient, to avoid unknown-key attack\n // https://github.com/vector-im/vector-web/issues/2483\n\n if (!(payload.recipient != this._userId)) {\n _context2.next = 21;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_BAD_RECIPIENT\", \"Message was intented for \" + payload.recipient);\n\n case 21:\n if (!(payload.recipient_keys.ed25519 != this._olmDevice.deviceEd25519Key)) {\n _context2.next = 23;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_BAD_RECIPIENT_KEY\", \"Message not intended for this device\", {\n intended: payload.recipient_keys.ed25519,\n our_key: this._olmDevice.deviceEd25519Key\n });\n\n case 23:\n if (!(payload.sender != event.getSender())) {\n _context2.next = 25;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_FORWARDED_MESSAGE\", \"Message forwarded from \" + payload.sender, {\n reported_sender: event.getSender()\n });\n\n case 25:\n if (!(payload.room_id !== event.getRoomId())) {\n _context2.next = 27;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_BAD_ROOM\", \"Message intended for room \" + payload.room_id, {\n reported_room: event.room_id\n });\n\n case 27:\n claimedKeys = payload.keys || {};\n return _context2.abrupt(\"return\", {\n clearEvent: payload,\n senderCurve25519Key: deviceKey,\n claimedEd25519Key: claimedKeys.ed25519 || null\n });\n\n case 29:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[9, 15]]);\n }));\n\n return function (_x4) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * Attempt to decrypt an Olm message\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key of the sender\n * @param {object} message message object, with 'type' and 'body' fields\n *\n * @return {string} payload, if decrypted successfully.\n */\nOlmDecryption.prototype._decryptMessage = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(theirDeviceIdentityKey, message) {\n var sessionIds, decryptionErrors, i, sessionId, payload, foundSession, res;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return (0, _bluebird.resolve)(this._olmDevice.getSessionIdsForDevice(theirDeviceIdentityKey));\n\n case 2:\n sessionIds = _context3.sent;\n\n\n // try each session in turn.\n decryptionErrors = {};\n i = 0;\n\n case 5:\n if (!(i < sessionIds.length)) {\n _context3.next = 26;\n break;\n }\n\n sessionId = sessionIds[i];\n _context3.prev = 7;\n _context3.next = 10;\n return (0, _bluebird.resolve)(this._olmDevice.decryptMessage(theirDeviceIdentityKey, sessionId, message.type, message.body));\n\n case 10:\n payload = _context3.sent;\n\n logger.log(\"Decrypted Olm message from \" + theirDeviceIdentityKey + \" with session \" + sessionId);\n return _context3.abrupt(\"return\", payload);\n\n case 15:\n _context3.prev = 15;\n _context3.t0 = _context3[\"catch\"](7);\n _context3.next = 19;\n return (0, _bluebird.resolve)(this._olmDevice.matchesSession(theirDeviceIdentityKey, sessionId, message.type, message.body));\n\n case 19:\n foundSession = _context3.sent;\n\n if (!foundSession) {\n _context3.next = 22;\n break;\n }\n\n throw new Error(\"Error decrypting prekey message with existing session id \" + sessionId + \": \" + _context3.t0.message);\n\n case 22:\n\n // otherwise it's probably a message for another session; carry on, but\n // keep a record of the error\n decryptionErrors[sessionId] = _context3.t0.message;\n\n case 23:\n i++;\n _context3.next = 5;\n break;\n\n case 26:\n if (!(message.type !== 0)) {\n _context3.next = 30;\n break;\n }\n\n if (!(sessionIds.length === 0)) {\n _context3.next = 29;\n break;\n }\n\n throw new Error(\"No existing sessions\");\n\n case 29:\n throw new Error(\"Error decrypting non-prekey message with existing sessions: \" + (0, _stringify2.default)(decryptionErrors));\n\n case 30:\n\n // prekey message which doesn't match any existing sessions: make a new\n // session.\n\n res = void 0;\n _context3.prev = 31;\n _context3.next = 34;\n return (0, _bluebird.resolve)(this._olmDevice.createInboundSession(theirDeviceIdentityKey, message.type, message.body));\n\n case 34:\n res = _context3.sent;\n _context3.next = 41;\n break;\n\n case 37:\n _context3.prev = 37;\n _context3.t1 = _context3[\"catch\"](31);\n\n decryptionErrors[\"(new)\"] = _context3.t1.message;\n throw new Error(\"Error decrypting prekey message: \" + (0, _stringify2.default)(decryptionErrors));\n\n case 41:\n\n logger.log(\"created new inbound Olm session ID \" + res.session_id + \" with \" + theirDeviceIdentityKey);\n return _context3.abrupt(\"return\", res.payload);\n\n case 43:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[7, 15], [31, 37]]);\n }));\n\n return function (_x5, _x6) {\n return _ref3.apply(this, arguments);\n };\n}();\n\nbase.registerAlgorithm(olmlib.OLM_ALGORITHM, OlmEncryption, OlmDecryption);\n//# sourceMappingURL=olm.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * Defines m.olm encryption/decryption\n *\n * @module crypto/algorithms/megolm\n */\n\nvar _set = require(\"babel-runtime/core-js/set\");\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar logger = require(\"../../logger\");\nvar utils = require(\"../../utils\");\nvar olmlib = require(\"../olmlib\");\nvar base = require(\"./base\");\n\n/**\n * @private\n * @constructor\n *\n * @param {string} sessionId\n *\n * @property {string} sessionId\n * @property {Number} useCount number of times this session has been used\n * @property {Number} creationTime when the session was created (ms since the epoch)\n *\n * @property {object} sharedWithDevices\n * devices with which we have shared the session key\n * userId -> {deviceId -> msgindex}\n */\nfunction OutboundSessionInfo(sessionId) {\n this.sessionId = sessionId;\n this.useCount = 0;\n this.creationTime = new Date().getTime();\n this.sharedWithDevices = {};\n}\n\n/**\n * Check if it's time to rotate the session\n *\n * @param {Number} rotationPeriodMsgs\n * @param {Number} rotationPeriodMs\n * @return {Boolean}\n */\nOutboundSessionInfo.prototype.needsRotation = function (rotationPeriodMsgs, rotationPeriodMs) {\n var sessionLifetime = new Date().getTime() - this.creationTime;\n\n if (this.useCount >= rotationPeriodMsgs || sessionLifetime >= rotationPeriodMs) {\n logger.log(\"Rotating megolm session after \" + this.useCount + \" messages, \" + sessionLifetime + \"ms\");\n return true;\n }\n\n return false;\n};\n\nOutboundSessionInfo.prototype.markSharedWithDevice = function (userId, deviceId, chainIndex) {\n if (!this.sharedWithDevices[userId]) {\n this.sharedWithDevices[userId] = {};\n }\n this.sharedWithDevices[userId][deviceId] = chainIndex;\n};\n\n/**\n * Determine if this session has been shared with devices which it shouldn't\n * have been.\n *\n * @param {Object} devicesInRoom userId -> {deviceId -> object}\n * devices we should shared the session with.\n *\n * @return {Boolean} true if we have shared the session with devices which aren't\n * in devicesInRoom.\n */\nOutboundSessionInfo.prototype.sharedWithTooManyDevices = function (devicesInRoom) {\n for (var userId in this.sharedWithDevices) {\n if (!this.sharedWithDevices.hasOwnProperty(userId)) {\n continue;\n }\n\n if (!devicesInRoom.hasOwnProperty(userId)) {\n logger.log(\"Starting new session because we shared with \" + userId);\n return true;\n }\n\n for (var deviceId in this.sharedWithDevices[userId]) {\n if (!this.sharedWithDevices[userId].hasOwnProperty(deviceId)) {\n continue;\n }\n\n if (!devicesInRoom[userId].hasOwnProperty(deviceId)) {\n logger.log(\"Starting new session because we shared with \" + userId + \":\" + deviceId);\n return true;\n }\n }\n }\n};\n\n/**\n * Megolm encryption implementation\n *\n * @constructor\n * @extends {module:crypto/algorithms/base.EncryptionAlgorithm}\n *\n * @param {object} params parameters, as per\n * {@link module:crypto/algorithms/base.EncryptionAlgorithm}\n */\nfunction MegolmEncryption(params) {\n base.EncryptionAlgorithm.call(this, params);\n\n // the most recent attempt to set up a session. This is used to serialise\n // the session setups, so that we have a race-free view of which session we\n // are using, and which devices we have shared the keys with. It resolves\n // with an OutboundSessionInfo (or undefined, for the first message in the\n // room).\n this._setupPromise = _bluebird2.default.resolve();\n\n // Map of outbound sessions by sessions ID. Used if we need a particular\n // session (the session we're currently using to send is always obtained\n // using _setupPromise).\n this._outboundSessions = {};\n\n // default rotation periods\n this._sessionRotationPeriodMsgs = 100;\n this._sessionRotationPeriodMs = 7 * 24 * 3600 * 1000;\n\n if (params.config.rotation_period_ms !== undefined) {\n this._sessionRotationPeriodMs = params.config.rotation_period_ms;\n }\n\n if (params.config.rotation_period_msgs !== undefined) {\n this._sessionRotationPeriodMsgs = params.config.rotation_period_msgs;\n }\n}\nutils.inherits(MegolmEncryption, base.EncryptionAlgorithm);\n\n/**\n * @private\n *\n * @param {Object} devicesInRoom The devices in this room, indexed by user ID\n *\n * @return {module:client.Promise} Promise which resolves to the\n * OutboundSessionInfo when setup is complete.\n */\nMegolmEncryption.prototype._ensureOutboundSession = function (devicesInRoom) {\n\n // takes the previous OutboundSessionInfo, and considers whether to create\n // a new one. Also shares the key with any (new) devices in the room.\n // Updates `session` to hold the final OutboundSessionInfo.\n //\n // returns a promise which resolves once the keyshare is successful.\n var prepareSession = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(oldSession) {\n var shareMap, userId, userDevices, deviceId, deviceInfo, key;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n session = oldSession;\n\n // need to make a brand new session?\n if (session && session.needsRotation(self._sessionRotationPeriodMsgs, self._sessionRotationPeriodMs)) {\n logger.log(\"Starting new megolm session because we need to rotate.\");\n session = null;\n }\n\n // determine if we have shared with anyone we shouldn't have\n if (session && session.sharedWithTooManyDevices(devicesInRoom)) {\n session = null;\n }\n\n if (session) {\n _context.next = 9;\n break;\n }\n\n logger.log(\"Starting new megolm session for room \" + self._roomId);\n _context.next = 7;\n return (0, _bluebird.resolve)(self._prepareNewSession());\n\n case 7:\n session = _context.sent;\n\n self._outboundSessions[session.sessionId] = session;\n\n case 9:\n\n // now check if we need to share with any devices\n shareMap = {};\n _context.t0 = _regenerator2.default.keys(devicesInRoom);\n\n case 11:\n if ((_context.t1 = _context.t0()).done) {\n _context.next = 30;\n break;\n }\n\n userId = _context.t1.value;\n\n if (devicesInRoom.hasOwnProperty(userId)) {\n _context.next = 15;\n break;\n }\n\n return _context.abrupt(\"continue\", 11);\n\n case 15:\n userDevices = devicesInRoom[userId];\n _context.t2 = _regenerator2.default.keys(userDevices);\n\n case 17:\n if ((_context.t3 = _context.t2()).done) {\n _context.next = 28;\n break;\n }\n\n deviceId = _context.t3.value;\n\n if (userDevices.hasOwnProperty(deviceId)) {\n _context.next = 21;\n break;\n }\n\n return _context.abrupt(\"continue\", 17);\n\n case 21:\n deviceInfo = userDevices[deviceId];\n key = deviceInfo.getIdentityKey();\n\n if (!(key == self._olmDevice.deviceCurve25519Key)) {\n _context.next = 25;\n break;\n }\n\n return _context.abrupt(\"continue\", 17);\n\n case 25:\n\n if (!session.sharedWithDevices[userId] || session.sharedWithDevices[userId][deviceId] === undefined) {\n shareMap[userId] = shareMap[userId] || [];\n shareMap[userId].push(deviceInfo);\n }\n _context.next = 17;\n break;\n\n case 28:\n _context.next = 11;\n break;\n\n case 30:\n return _context.abrupt(\"return\", self._shareKeyWithDevices(session, shareMap));\n\n case 31:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function prepareSession(_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n // helper which returns the session prepared by prepareSession\n\n\n var self = this;\n\n var session = void 0;function returnSession() {\n return session;\n }\n\n // first wait for the previous share to complete\n var prom = this._setupPromise.then(prepareSession);\n\n // _setupPromise resolves to `session` whether or not the share succeeds\n this._setupPromise = prom.then(returnSession, returnSession);\n\n // but we return a promise which only resolves if the share was successful.\n return prom.then(returnSession);\n};\n\n/**\n * @private\n *\n * @return {module:crypto/algorithms/megolm.OutboundSessionInfo} session\n */\nMegolmEncryption.prototype._prepareNewSession = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var sessionId, key;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n sessionId = this._olmDevice.createOutboundGroupSession();\n key = this._olmDevice.getOutboundGroupSessionKey(sessionId);\n _context2.next = 4;\n return (0, _bluebird.resolve)(this._olmDevice.addInboundGroupSession(this._roomId, this._olmDevice.deviceCurve25519Key, [], sessionId, key.key, { ed25519: this._olmDevice.deviceEd25519Key }));\n\n case 4:\n\n if (this._crypto.backupInfo) {\n // don't wait for it to complete\n this._crypto.backupGroupSession(this._roomId, this._olmDevice.deviceCurve25519Key, [], sessionId, key.key).catch(function (e) {\n // This throws if the upload failed, but this is fine\n // since it will have written it to the db and will retry.\n console.log(\"Failed to back up group session\", e);\n });\n }\n\n return _context2.abrupt(\"return\", new OutboundSessionInfo(sessionId));\n\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n}));\n\n/**\n * @private\n *\n * @param {module:crypto/algorithms/megolm.OutboundSessionInfo} session\n *\n * @param {number} chainIndex current chain index\n *\n * @param {object<userId, deviceId>} devicemap\n * mapping from userId to deviceId to {@link module:crypto~OlmSessionResult}\n *\n * @param {object<string, module:crypto/deviceinfo[]>} devicesByUser\n * map from userid to list of devices\n *\n * @return {array<object<userid, deviceInfo>>}\n */\nMegolmEncryption.prototype._splitUserDeviceMap = function (session, chainIndex, devicemap, devicesByUser) {\n var maxToDeviceMessagesPerRequest = 20;\n\n // use an array where the slices of a content map gets stored\n var mapSlices = [];\n var currentSliceId = 0; // start inserting in the first slice\n var entriesInCurrentSlice = 0;\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(devicesByUser)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var userId = _step.value;\n\n var devicesToShareWith = devicesByUser[userId];\n var sessionResults = devicemap[userId];\n\n for (var i = 0; i < devicesToShareWith.length; i++) {\n var deviceInfo = devicesToShareWith[i];\n var deviceId = deviceInfo.deviceId;\n\n var sessionResult = sessionResults[deviceId];\n if (!sessionResult.sessionId) {\n // no session with this device, probably because there\n // were no one-time keys.\n //\n // we could send them a to_device message anyway, as a\n // signal that they have missed out on the key sharing\n // message because of the lack of keys, but there's not\n // much point in that really; it will mostly serve to clog\n // up to_device inboxes.\n\n // mark this device as \"handled\" because we don't want to try\n // to claim a one-time-key for dead devices on every message.\n session.markSharedWithDevice(userId, deviceId, chainIndex);\n\n // ensureOlmSessionsForUsers has already done the logging,\n // so just skip it.\n continue;\n }\n\n logger.log(\"share keys with device \" + userId + \":\" + deviceId);\n\n if (entriesInCurrentSlice > maxToDeviceMessagesPerRequest) {\n // the current slice is filled up. Start inserting into the next slice\n entriesInCurrentSlice = 0;\n currentSliceId++;\n }\n if (!mapSlices[currentSliceId]) {\n mapSlices[currentSliceId] = [];\n }\n\n mapSlices[currentSliceId].push({\n userId: userId,\n deviceInfo: deviceInfo\n });\n\n entriesInCurrentSlice++;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return mapSlices;\n};\n\n/**\n * @private\n *\n * @param {module:crypto/algorithms/megolm.OutboundSessionInfo} session\n *\n * @param {number} chainIndex current chain index\n *\n * @param {object<userId, deviceInfo>} userDeviceMap\n * mapping from userId to deviceInfo\n *\n * @param {object} payload fields to include in the encrypted payload\n *\n * @return {module:client.Promise} Promise which resolves once the key sharing\n * for the given userDeviceMap is generated and has been sent.\n */\nMegolmEncryption.prototype._encryptAndSendKeysToDevices = function (session, chainIndex, userDeviceMap, payload) {\n var _this = this;\n\n var encryptedContent = {\n algorithm: olmlib.OLM_ALGORITHM,\n sender_key: this._olmDevice.deviceCurve25519Key,\n ciphertext: {}\n };\n var contentMap = {};\n\n var promises = [];\n for (var i = 0; i < userDeviceMap.length; i++) {\n var val = userDeviceMap[i];\n var userId = val.userId;\n var deviceInfo = val.deviceInfo;\n var deviceId = deviceInfo.deviceId;\n\n if (!contentMap[userId]) {\n contentMap[userId] = {};\n }\n contentMap[userId][deviceId] = encryptedContent;\n\n promises.push(olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this._userId, this._deviceId, this._olmDevice, userId, deviceInfo, payload));\n }\n\n return _bluebird2.default.all(promises).then(function () {\n return _this._baseApis.sendToDevice(\"m.room.encrypted\", contentMap).then(function () {\n // store that we successfully uploaded the keys of the current slice\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(contentMap)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _userId = _step2.value;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)((0, _keys2.default)(contentMap[_userId])), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _deviceId = _step3.value;\n\n session.markSharedWithDevice(_userId, _deviceId, chainIndex);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n });\n });\n};\n\n/**\n * Re-shares a megolm session key with devices if the key has already been\n * sent to them.\n *\n * @param {string} senderKey The key of the originating device for the session\n * @param {string} sessionId ID of the outbound session to share\n * @param {string} userId ID of the user who owns the target device\n * @param {module:crypto/deviceinfo} device The target device\n */\nMegolmEncryption.prototype.reshareKeyWithDevice = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(senderKey, sessionId, userId, device) {\n var obSessionInfo, sentChainIndex, key, payload, encryptedContent;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n obSessionInfo = this._outboundSessions[sessionId];\n\n if (obSessionInfo) {\n _context3.next = 4;\n break;\n }\n\n logger.debug(\"Session ID \" + sessionId + \" not found: not re-sharing keys\");\n return _context3.abrupt(\"return\");\n\n case 4:\n if (!(obSessionInfo.sharedWithDevices[userId] === undefined)) {\n _context3.next = 7;\n break;\n }\n\n logger.debug(\"Session ID \" + sessionId + \" never shared with user \" + userId);\n return _context3.abrupt(\"return\");\n\n case 7:\n sentChainIndex = obSessionInfo.sharedWithDevices[userId][device.deviceId];\n\n if (!(sentChainIndex === undefined)) {\n _context3.next = 11;\n break;\n }\n\n logger.debug(\"Session ID \" + sessionId + \" never shared with device \" + userId + \":\" + device.deviceId);\n return _context3.abrupt(\"return\");\n\n case 11:\n _context3.next = 13;\n return (0, _bluebird.resolve)(this._olmDevice.getInboundGroupSessionKey(this._roomId, senderKey, sessionId, sentChainIndex));\n\n case 13:\n key = _context3.sent;\n\n if (key) {\n _context3.next = 17;\n break;\n }\n\n logger.warn(\"No outbound session key found for \" + sessionId + \": not re-sharing keys\");\n return _context3.abrupt(\"return\");\n\n case 17:\n _context3.next = 19;\n return (0, _bluebird.resolve)(olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, (0, _defineProperty3.default)({}, userId, (0, _defineProperty3.default)({}, device.deviceId, device))));\n\n case 19:\n payload = {\n type: \"m.forwarded_room_key\",\n content: {\n algorithm: olmlib.MEGOLM_ALGORITHM,\n room_id: this._roomId,\n session_id: sessionId,\n session_key: key.key,\n chain_index: key.chain_index,\n sender_key: senderKey,\n sender_claimed_ed25519_key: key.sender_claimed_ed25519_key,\n forwarding_curve25519_key_chain: key.forwarding_curve25519_key_chain\n }\n };\n encryptedContent = {\n algorithm: olmlib.OLM_ALGORITHM,\n sender_key: this._olmDevice.deviceCurve25519Key,\n ciphertext: {}\n };\n _context3.next = 23;\n return (0, _bluebird.resolve)(olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this._userId, this._deviceId, this._olmDevice, userId, device, payload));\n\n case 23:\n _context3.next = 25;\n return (0, _bluebird.resolve)(this._baseApis.sendToDevice(\"m.room.encrypted\", (0, _defineProperty3.default)({}, userId, (0, _defineProperty3.default)({}, device.deviceId, encryptedContent))));\n\n case 25:\n logger.debug(\"Re-shared key for session \" + sessionId + \" with \" + userId + \":\" + device.deviceId);\n\n case 26:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function (_x2, _x3, _x4, _x5) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * @param {module:crypto/algorithms/megolm.OutboundSessionInfo} session\n *\n * @param {object<string, module:crypto/deviceinfo[]>} devicesByUser\n * map from userid to list of devices\n */\nMegolmEncryption.prototype._shareKeyWithDevices = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(session, devicesByUser) {\n var key, payload, devicemap, userDeviceMaps, i;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n key = this._olmDevice.getOutboundGroupSessionKey(session.sessionId);\n payload = {\n type: \"m.room_key\",\n content: {\n algorithm: olmlib.MEGOLM_ALGORITHM,\n room_id: this._roomId,\n session_id: session.sessionId,\n session_key: key.key,\n chain_index: key.chain_index\n }\n };\n _context4.next = 4;\n return (0, _bluebird.resolve)(olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, devicesByUser));\n\n case 4:\n devicemap = _context4.sent;\n userDeviceMaps = this._splitUserDeviceMap(session, key.chain_index, devicemap, devicesByUser);\n i = 0;\n\n case 7:\n if (!(i < userDeviceMaps.length)) {\n _context4.next = 21;\n break;\n }\n\n _context4.prev = 8;\n _context4.next = 11;\n return (0, _bluebird.resolve)(this._encryptAndSendKeysToDevices(session, key.chain_index, userDeviceMaps[i], payload));\n\n case 11:\n logger.log(\"Completed megolm keyshare in \" + this._roomId + \" \" + (\"(slice \" + (i + 1) + \"/\" + userDeviceMaps.length + \")\"));\n _context4.next = 18;\n break;\n\n case 14:\n _context4.prev = 14;\n _context4.t0 = _context4[\"catch\"](8);\n\n logger.log(\"megolm keyshare in \" + this._roomId + \" \" + (\"(slice \" + (i + 1) + \"/\" + userDeviceMaps.length + \") failed\"));\n\n throw _context4.t0;\n\n case 18:\n i++;\n _context4.next = 7;\n break;\n\n case 21:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this, [[8, 14]]);\n }));\n\n return function (_x6, _x7) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * @inheritdoc\n *\n * @param {module:models/room} room\n * @param {string} eventType\n * @param {object} content plaintext event content\n *\n * @return {module:client.Promise} Promise which resolves to the new event body\n */\nMegolmEncryption.prototype.encryptMessage = function (room, eventType, content) {\n var self = this;\n logger.log(\"Starting to encrypt event for \" + this._roomId);\n\n return this._getDevicesInRoom(room).then(function (devicesInRoom) {\n // check if any of these devices are not yet known to the user.\n // if so, warn the user so they can verify or ignore.\n self._checkForUnknownDevices(devicesInRoom);\n\n return self._ensureOutboundSession(devicesInRoom);\n }).then(function (session) {\n var payloadJson = {\n room_id: self._roomId,\n type: eventType,\n content: content\n };\n\n var ciphertext = self._olmDevice.encryptGroupMessage(session.sessionId, (0, _stringify2.default)(payloadJson));\n\n var encryptedContent = {\n algorithm: olmlib.MEGOLM_ALGORITHM,\n sender_key: self._olmDevice.deviceCurve25519Key,\n ciphertext: ciphertext,\n session_id: session.sessionId,\n // Include our device ID so that recipients can send us a\n // m.new_device message if they don't have our session key.\n // XXX: Do we still need this now that m.new_device messages\n // no longer exist since #483?\n device_id: self._deviceId\n };\n\n session.useCount++;\n return encryptedContent;\n });\n};\n\n/**\n * Forces the current outbound group session to be discarded such\n * that another one will be created next time an event is sent.\n *\n * This should not normally be necessary.\n */\nMegolmEncryption.prototype.forceDiscardSession = function () {\n this._setupPromise = this._setupPromise.then(function () {\n return null;\n });\n};\n\n/**\n * Checks the devices we're about to send to and see if any are entirely\n * unknown to the user. If so, warn the user, and mark them as known to\n * give the user a chance to go verify them before re-sending this message.\n *\n * @param {Object} devicesInRoom userId -> {deviceId -> object}\n * devices we should shared the session with.\n */\nMegolmEncryption.prototype._checkForUnknownDevices = function (devicesInRoom) {\n var unknownDevices = {};\n\n (0, _keys2.default)(devicesInRoom).forEach(function (userId) {\n (0, _keys2.default)(devicesInRoom[userId]).forEach(function (deviceId) {\n var device = devicesInRoom[userId][deviceId];\n if (device.isUnverified() && !device.isKnown()) {\n if (!unknownDevices[userId]) {\n unknownDevices[userId] = {};\n }\n unknownDevices[userId][deviceId] = device;\n }\n });\n });\n\n if ((0, _keys2.default)(unknownDevices).length) {\n // it'd be kind to pass unknownDevices up to the user in this error\n throw new base.UnknownDeviceError(\"This room contains unknown devices which have not been verified. \" + \"We strongly recommend you verify them before continuing.\", unknownDevices);\n }\n};\n\n/**\n * Get the list of unblocked devices for all users in the room\n *\n * @param {module:models/room} room\n *\n * @return {module:client.Promise} Promise which resolves to a map\n * from userId to deviceId to deviceInfo\n */\nMegolmEncryption.prototype._getDevicesInRoom = function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(room) {\n var members, roomMembers, isBlacklisting, devices, userId, userDevices, deviceId;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return (0, _bluebird.resolve)(room.getEncryptionTargetMembers());\n\n case 2:\n members = _context5.sent;\n roomMembers = utils.map(members, function (u) {\n return u.userId;\n });\n\n // The global value is treated as a default for when rooms don't specify a value.\n\n isBlacklisting = this._crypto.getGlobalBlacklistUnverifiedDevices();\n\n if (typeof room.getBlacklistUnverifiedDevices() === 'boolean') {\n isBlacklisting = room.getBlacklistUnverifiedDevices();\n }\n\n // We are happy to use a cached version here: we assume that if we already\n // have a list of the user's devices, then we already share an e2e room\n // with them, which means that they will have announced any new devices via\n // device_lists in their /sync response. This cache should then be maintained\n // using all the device_lists changes and left fields.\n // See https://github.com/vector-im/riot-web/issues/2305 for details.\n _context5.next = 8;\n return (0, _bluebird.resolve)(this._crypto.downloadKeys(roomMembers, false));\n\n case 8:\n devices = _context5.sent;\n _context5.t0 = _regenerator2.default.keys(devices);\n\n case 10:\n if ((_context5.t1 = _context5.t0()).done) {\n _context5.next = 25;\n break;\n }\n\n userId = _context5.t1.value;\n\n if (devices.hasOwnProperty(userId)) {\n _context5.next = 14;\n break;\n }\n\n return _context5.abrupt(\"continue\", 10);\n\n case 14:\n userDevices = devices[userId];\n _context5.t2 = _regenerator2.default.keys(userDevices);\n\n case 16:\n if ((_context5.t3 = _context5.t2()).done) {\n _context5.next = 23;\n break;\n }\n\n deviceId = _context5.t3.value;\n\n if (userDevices.hasOwnProperty(deviceId)) {\n _context5.next = 20;\n break;\n }\n\n return _context5.abrupt(\"continue\", 16);\n\n case 20:\n\n if (userDevices[deviceId].isBlocked() || userDevices[deviceId].isUnverified() && isBlacklisting) {\n delete userDevices[deviceId];\n }\n _context5.next = 16;\n break;\n\n case 23:\n _context5.next = 10;\n break;\n\n case 25:\n return _context5.abrupt(\"return\", devices);\n\n case 26:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n return function (_x8) {\n return _ref5.apply(this, arguments);\n };\n}();\n\n/**\n * Megolm decryption implementation\n *\n * @constructor\n * @extends {module:crypto/algorithms/base.DecryptionAlgorithm}\n *\n * @param {object} params parameters, as per\n * {@link module:crypto/algorithms/base.DecryptionAlgorithm}\n */\nfunction MegolmDecryption(params) {\n base.DecryptionAlgorithm.call(this, params);\n\n // events which we couldn't decrypt due to unknown sessions / indexes: map from\n // senderKey|sessionId to Set of MatrixEvents\n this._pendingEvents = {};\n\n // this gets stubbed out by the unit tests.\n this.olmlib = olmlib;\n}\nutils.inherits(MegolmDecryption, base.DecryptionAlgorithm);\n\n/**\n * @inheritdoc\n *\n * @param {MatrixEvent} event\n *\n * returns a promise which resolves to a\n * {@link module:crypto~EventDecryptionResult} once we have finished\n * decrypting, or rejects with an `algorithms.DecryptionError` if there is a\n * problem decrypting the event.\n */\nMegolmDecryption.prototype.decryptEvent = function () {\n var _ref6 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(event) {\n var content, res, errorCode, payload;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n content = event.getWireContent();\n\n if (!(!content.sender_key || !content.session_id || !content.ciphertext)) {\n _context6.next = 3;\n break;\n }\n\n throw new base.DecryptionError(\"MEGOLM_MISSING_FIELDS\", \"Missing fields in input\");\n\n case 3:\n\n // we add the event to the pending list *before* we start decryption.\n //\n // then, if the key turns up while decryption is in progress (and\n // decryption fails), we will schedule a retry.\n // (fixes https://github.com/vector-im/riot-web/issues/5001)\n this._addEventToPendingList(event);\n\n res = void 0;\n _context6.prev = 5;\n _context6.next = 8;\n return (0, _bluebird.resolve)(this._olmDevice.decryptGroupMessage(event.getRoomId(), content.sender_key, content.session_id, content.ciphertext, event.getId(), event.getTs()));\n\n case 8:\n res = _context6.sent;\n _context6.next = 16;\n break;\n\n case 11:\n _context6.prev = 11;\n _context6.t0 = _context6[\"catch\"](5);\n errorCode = \"OLM_DECRYPT_GROUP_MESSAGE_ERROR\";\n\n\n if (_context6.t0.message === 'OLM.UNKNOWN_MESSAGE_INDEX') {\n this._requestKeysForEvent(event);\n\n errorCode = 'OLM_UNKNOWN_MESSAGE_INDEX';\n }\n\n throw new base.DecryptionError(errorCode, _context6.t0.toString(), {\n session: content.sender_key + '|' + content.session_id\n });\n\n case 16:\n if (!(res === null)) {\n _context6.next = 19;\n break;\n }\n\n // We've got a message for a session we don't have.\n //\n // (XXX: We might actually have received this key since we started\n // decrypting, in which case we'll have scheduled a retry, and this\n // request will be redundant. We could probably check to see if the\n // event is still in the pending list; if not, a retry will have been\n // scheduled, so we needn't send out the request here.)\n this._requestKeysForEvent(event);\n throw new base.DecryptionError(\"MEGOLM_UNKNOWN_INBOUND_SESSION_ID\", \"The sender's device has not sent us the keys for this message.\", {\n session: content.sender_key + '|' + content.session_id\n });\n\n case 19:\n\n // success. We can remove the event from the pending list, if that hasn't\n // already happened.\n this._removeEventFromPendingList(event);\n\n payload = JSON.parse(res.result);\n\n // belt-and-braces check that the room id matches that indicated by the HS\n // (this is somewhat redundant, since the megolm session is scoped to the\n // room, so neither the sender nor a MITM can lie about the room_id).\n\n if (!(payload.room_id !== event.getRoomId())) {\n _context6.next = 23;\n break;\n }\n\n throw new base.DecryptionError(\"MEGOLM_BAD_ROOM\", \"Message intended for room \" + payload.room_id);\n\n case 23:\n return _context6.abrupt(\"return\", {\n clearEvent: payload,\n senderCurve25519Key: res.senderKey,\n claimedEd25519Key: res.keysClaimed.ed25519,\n forwardingCurve25519KeyChain: res.forwardingCurve25519KeyChain\n });\n\n case 24:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, this, [[5, 11]]);\n }));\n\n return function (_x9) {\n return _ref6.apply(this, arguments);\n };\n}();\n\nMegolmDecryption.prototype._requestKeysForEvent = function (event) {\n var sender = event.getSender();\n var wireContent = event.getWireContent();\n\n // send the request to all of our own devices, and the\n // original sending device if it wasn't us.\n var recipients = [{\n userId: this._userId, deviceId: '*'\n }];\n if (sender != this._userId) {\n recipients.push({\n userId: sender, deviceId: wireContent.device_id\n });\n }\n\n this._crypto.requestRoomKey({\n room_id: event.getRoomId(),\n algorithm: wireContent.algorithm,\n sender_key: wireContent.sender_key,\n session_id: wireContent.session_id\n }, recipients);\n};\n\n/**\n * Add an event to the list of those awaiting their session keys.\n *\n * @private\n *\n * @param {module:models/event.MatrixEvent} event\n */\nMegolmDecryption.prototype._addEventToPendingList = function (event) {\n var content = event.getWireContent();\n var k = content.sender_key + \"|\" + content.session_id;\n if (!this._pendingEvents[k]) {\n this._pendingEvents[k] = new _set2.default();\n }\n this._pendingEvents[k].add(event);\n};\n\n/**\n * Remove an event from the list of those awaiting their session keys.\n *\n * @private\n *\n * @param {module:models/event.MatrixEvent} event\n */\nMegolmDecryption.prototype._removeEventFromPendingList = function (event) {\n var content = event.getWireContent();\n var k = content.sender_key + \"|\" + content.session_id;\n if (!this._pendingEvents[k]) {\n return;\n }\n\n this._pendingEvents[k].delete(event);\n if (this._pendingEvents[k].size === 0) {\n delete this._pendingEvents[k];\n }\n};\n\n/**\n * @inheritdoc\n *\n * @param {module:models/event.MatrixEvent} event key event\n */\nMegolmDecryption.prototype.onRoomKeyEvent = function (event) {\n var _this2 = this;\n\n var content = event.getContent();\n var sessionId = content.session_id;\n var senderKey = event.getSenderKey();\n var forwardingKeyChain = [];\n var exportFormat = false;\n var keysClaimed = void 0;\n\n if (!content.room_id || !sessionId || !content.session_key) {\n logger.error(\"key event is missing fields\");\n return;\n }\n\n if (!senderKey) {\n logger.error(\"key event has no sender key (not encrypted?)\");\n return;\n }\n\n if (event.getType() == \"m.forwarded_room_key\") {\n exportFormat = true;\n forwardingKeyChain = content.forwarding_curve25519_key_chain;\n if (!utils.isArray(forwardingKeyChain)) {\n forwardingKeyChain = [];\n }\n\n // copy content before we modify it\n forwardingKeyChain = forwardingKeyChain.slice();\n forwardingKeyChain.push(senderKey);\n\n senderKey = content.sender_key;\n if (!senderKey) {\n logger.error(\"forwarded_room_key event is missing sender_key field\");\n return;\n }\n\n var ed25519Key = content.sender_claimed_ed25519_key;\n if (!ed25519Key) {\n logger.error(\"forwarded_room_key_event is missing sender_claimed_ed25519_key field\");\n return;\n }\n\n keysClaimed = {\n ed25519: ed25519Key\n };\n } else {\n keysClaimed = event.getKeysClaimed();\n }\n\n logger.log(\"Adding key for megolm session \" + senderKey + \"|\" + sessionId);\n return this._olmDevice.addInboundGroupSession(content.room_id, senderKey, forwardingKeyChain, sessionId, content.session_key, keysClaimed, exportFormat).then(function () {\n // cancel any outstanding room key requests for this session\n _this2._crypto.cancelRoomKeyRequest({\n algorithm: content.algorithm,\n room_id: content.room_id,\n session_id: content.session_id,\n sender_key: senderKey\n });\n\n // have another go at decrypting events sent with this session.\n _this2._retryDecryption(senderKey, sessionId);\n }).then(function () {\n if (_this2._crypto.backupInfo) {\n // don't wait for the keys to be backed up for the server\n _this2._crypto.backupGroupSession(content.room_id, senderKey, forwardingKeyChain, content.session_id, content.session_key, keysClaimed, exportFormat).catch(function (e) {\n // This throws if the upload failed, but this is fine\n // since it will have written it to the db and will retry.\n console.log(\"Failed to back up group session\", e);\n });\n }\n }).catch(function (e) {\n logger.error(\"Error handling m.room_key_event: \" + e);\n });\n};\n\n/**\n * @inheritdoc\n */\nMegolmDecryption.prototype.hasKeysForKeyRequest = function (keyRequest) {\n var body = keyRequest.requestBody;\n\n return this._olmDevice.hasInboundSessionKeys(body.room_id, body.sender_key, body.session_id\n // TODO: ratchet index\n );\n};\n\n/**\n * @inheritdoc\n */\nMegolmDecryption.prototype.shareKeysWithDevice = function (keyRequest) {\n var _this3 = this;\n\n var userId = keyRequest.userId;\n var deviceId = keyRequest.deviceId;\n var deviceInfo = this._crypto.getStoredDevice(userId, deviceId);\n var body = keyRequest.requestBody;\n\n this.olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, (0, _defineProperty3.default)({}, userId, [deviceInfo])).then(function (devicemap) {\n var olmSessionResult = devicemap[userId][deviceId];\n if (!olmSessionResult.sessionId) {\n // no session with this device, probably because there\n // were no one-time keys.\n //\n // ensureOlmSessionsForUsers has already done the logging,\n // so just skip it.\n return null;\n }\n\n logger.log(\"sharing keys for session \" + body.sender_key + \"|\" + body.session_id + \" with device \" + userId + \":\" + deviceId);\n\n return _this3._buildKeyForwardingMessage(body.room_id, body.sender_key, body.session_id);\n }).then(function (payload) {\n var encryptedContent = {\n algorithm: olmlib.OLM_ALGORITHM,\n sender_key: _this3._olmDevice.deviceCurve25519Key,\n ciphertext: {}\n };\n\n return _this3.olmlib.encryptMessageForDevice(encryptedContent.ciphertext, _this3._userId, _this3._deviceId, _this3._olmDevice, userId, deviceInfo, payload).then(function () {\n var contentMap = (0, _defineProperty3.default)({}, userId, (0, _defineProperty3.default)({}, deviceId, encryptedContent));\n\n // TODO: retries\n return _this3._baseApis.sendToDevice(\"m.room.encrypted\", contentMap);\n });\n }).done();\n};\n\nMegolmDecryption.prototype._buildKeyForwardingMessage = function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(roomId, senderKey, sessionId) {\n var key;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return (0, _bluebird.resolve)(this._olmDevice.getInboundGroupSessionKey(roomId, senderKey, sessionId));\n\n case 2:\n key = _context7.sent;\n return _context7.abrupt(\"return\", {\n type: \"m.forwarded_room_key\",\n content: {\n algorithm: olmlib.MEGOLM_ALGORITHM,\n room_id: roomId,\n sender_key: senderKey,\n sender_claimed_ed25519_key: key.sender_claimed_ed25519_key,\n session_id: sessionId,\n session_key: key.key,\n chain_index: key.chain_index,\n forwarding_curve25519_key_chain: key.forwarding_curve25519_key_chain\n }\n });\n\n case 4:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n return function (_x10, _x11, _x12) {\n return _ref7.apply(this, arguments);\n };\n}();\n\n/**\n * @inheritdoc\n *\n * @param {module:crypto/OlmDevice.MegolmSessionData} session\n */\nMegolmDecryption.prototype.importRoomKey = function (session) {\n var _this4 = this;\n\n return this._olmDevice.addInboundGroupSession(session.room_id, session.sender_key, session.forwarding_curve25519_key_chain, session.session_id, session.session_key, session.sender_claimed_keys, true).then(function () {\n if (_this4._crypto.backupInfo) {\n // don't wait for it to complete\n _this4._crypto.backupGroupSession(session.room_id, session.sender_key, session.forwarding_curve25519_key_chain, session.session_id, session.session_key, session.sender_claimed_keys, true).catch(function (e) {\n // This throws if the upload failed, but this is fine\n // since it will have written it to the db and will retry.\n console.log(\"Failed to back up group session\", e);\n });\n }\n // have another go at decrypting events sent with this session.\n _this4._retryDecryption(session.sender_key, session.session_id);\n });\n};\n\n/**\n * Have another go at decrypting events after we receive a key\n *\n * @private\n * @param {String} senderKey\n * @param {String} sessionId\n */\nMegolmDecryption.prototype._retryDecryption = function (senderKey, sessionId) {\n var k = senderKey + \"|\" + sessionId;\n var pending = this._pendingEvents[k];\n if (!pending) {\n return;\n }\n\n delete this._pendingEvents[k];\n\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)(pending), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var ev = _step4.value;\n\n ev.attemptDecryption(this._crypto);\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n};\n\nbase.registerAlgorithm(olmlib.MEGOLM_ALGORITHM, MegolmEncryption, MegolmDecryption);\n//# sourceMappingURL=megolm.js.map","/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module crypto/DeviceList\n *\n * Manages the list of other users' devices\n */\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _entries = require('babel-runtime/core-js/object/entries');\n\nvar _entries2 = _interopRequireDefault(_entries);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _updateStoredDeviceKeysForUser = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(_olmDevice, userId, userStore, userResult) {\n var updated, deviceId, _deviceId, deviceResult;\n\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n updated = false;\n\n // remove any devices in the store which aren't in the response\n\n _context3.t0 = _regenerator2.default.keys(userStore);\n\n case 2:\n if ((_context3.t1 = _context3.t0()).done) {\n _context3.next = 9;\n break;\n }\n\n deviceId = _context3.t1.value;\n\n if (userStore.hasOwnProperty(deviceId)) {\n _context3.next = 6;\n break;\n }\n\n return _context3.abrupt('continue', 2);\n\n case 6:\n\n if (!(deviceId in userResult)) {\n _logger2.default.log(\"Device \" + userId + \":\" + deviceId + \" has been removed\");\n delete userStore[deviceId];\n updated = true;\n }\n _context3.next = 2;\n break;\n\n case 9:\n _context3.t2 = _regenerator2.default.keys(userResult);\n\n case 10:\n if ((_context3.t3 = _context3.t2()).done) {\n _context3.next = 27;\n break;\n }\n\n _deviceId = _context3.t3.value;\n\n if (userResult.hasOwnProperty(_deviceId)) {\n _context3.next = 14;\n break;\n }\n\n return _context3.abrupt('continue', 10);\n\n case 14:\n deviceResult = userResult[_deviceId];\n\n // check that the user_id and device_id in the response object are\n // correct\n\n if (!(deviceResult.user_id !== userId)) {\n _context3.next = 18;\n break;\n }\n\n _logger2.default.warn(\"Mismatched user_id \" + deviceResult.user_id + \" in keys from \" + userId + \":\" + _deviceId);\n return _context3.abrupt('continue', 10);\n\n case 18:\n if (!(deviceResult.device_id !== _deviceId)) {\n _context3.next = 21;\n break;\n }\n\n _logger2.default.warn(\"Mismatched device_id \" + deviceResult.device_id + \" in keys from \" + userId + \":\" + _deviceId);\n return _context3.abrupt('continue', 10);\n\n case 21:\n _context3.next = 23;\n return (0, _bluebird.resolve)(_storeDeviceKeys(_olmDevice, userStore, deviceResult));\n\n case 23:\n if (!_context3.sent) {\n _context3.next = 25;\n break;\n }\n\n updated = true;\n\n case 25:\n _context3.next = 10;\n break;\n\n case 27:\n return _context3.abrupt('return', updated);\n\n case 28:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function _updateStoredDeviceKeysForUser(_x4, _x5, _x6, _x7) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/*\n * Process a device in a /query response, and add it to the userStore\n *\n * returns (a promise for) true if a change was made, else false\n */\n\n\nvar _storeDeviceKeys = function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(_olmDevice, userStore, deviceResult) {\n var deviceId, userId, signKeyId, signKey, unsigned, deviceStore;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (deviceResult.keys) {\n _context4.next = 2;\n break;\n }\n\n return _context4.abrupt('return', false);\n\n case 2:\n deviceId = deviceResult.device_id;\n userId = deviceResult.user_id;\n signKeyId = \"ed25519:\" + deviceId;\n signKey = deviceResult.keys[signKeyId];\n\n if (signKey) {\n _context4.next = 9;\n break;\n }\n\n _logger2.default.warn(\"Device \" + userId + \":\" + deviceId + \" has no ed25519 key\");\n return _context4.abrupt('return', false);\n\n case 9:\n unsigned = deviceResult.unsigned || {};\n _context4.prev = 10;\n _context4.next = 13;\n return (0, _bluebird.resolve)(_olmlib2.default.verifySignature(_olmDevice, deviceResult, userId, deviceId, signKey));\n\n case 13:\n _context4.next = 19;\n break;\n\n case 15:\n _context4.prev = 15;\n _context4.t0 = _context4['catch'](10);\n\n _logger2.default.warn(\"Unable to verify signature on device \" + userId + \":\" + deviceId + \":\" + _context4.t0);\n return _context4.abrupt('return', false);\n\n case 19:\n\n // DeviceInfo\n deviceStore = void 0;\n\n if (!(deviceId in userStore)) {\n _context4.next = 27;\n break;\n }\n\n // already have this device.\n deviceStore = userStore[deviceId];\n\n if (!(deviceStore.getFingerprint() != signKey)) {\n _context4.next = 25;\n break;\n }\n\n // this should only happen if the list has been MITMed; we are\n // best off sticking with the original keys.\n //\n // Should we warn the user about it somehow?\n _logger2.default.warn(\"Ed25519 key for device \" + userId + \":\" + deviceId + \" has changed\");\n return _context4.abrupt('return', false);\n\n case 25:\n _context4.next = 28;\n break;\n\n case 27:\n userStore[deviceId] = deviceStore = new _deviceinfo2.default(deviceId);\n\n case 28:\n\n deviceStore.keys = deviceResult.keys || {};\n deviceStore.algorithms = deviceResult.algorithms || [];\n deviceStore.unsigned = unsigned;\n return _context4.abrupt('return', true);\n\n case 32:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this, [[10, 15]]);\n }));\n\n return function _storeDeviceKeys(_x8, _x9, _x10) {\n return _ref5.apply(this, arguments);\n };\n}();\n\nvar _logger = require('../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _deviceinfo = require('./deviceinfo');\n\nvar _deviceinfo2 = _interopRequireDefault(_deviceinfo);\n\nvar _olmlib = require('./olmlib');\n\nvar _olmlib2 = _interopRequireDefault(_olmlib);\n\nvar _indexeddbCryptoStore = require('./store/indexeddb-crypto-store');\n\nvar _indexeddbCryptoStore2 = _interopRequireDefault(_indexeddbCryptoStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* State transition diagram for DeviceList._deviceTrackingStatus\n *\n * |\n * stopTrackingDeviceList V\n * +---------------------> NOT_TRACKED\n * | |\n * +<--------------------+ | startTrackingDeviceList\n * | | V\n * | +-------------> PENDING_DOWNLOAD <--------------------+-+\n * | | ^ | | |\n * | | restart download | | start download | | invalidateUserDeviceList\n * | | client failed | | | |\n * | | | V | |\n * | +------------ DOWNLOAD_IN_PROGRESS -------------------+ |\n * | | | |\n * +<-------------------+ | download successful |\n * ^ V |\n * +----------------------- UP_TO_DATE ------------------------+\n */\n\n// constants for DeviceList._deviceTrackingStatus\nvar TRACKING_STATUS_NOT_TRACKED = 0;\nvar TRACKING_STATUS_PENDING_DOWNLOAD = 1;\nvar TRACKING_STATUS_DOWNLOAD_IN_PROGRESS = 2;\nvar TRACKING_STATUS_UP_TO_DATE = 3;\n\n/**\n * @alias module:crypto/DeviceList\n */\n\nvar DeviceList = function () {\n function DeviceList(baseApis, cryptoStore, sessionStore, olmDevice) {\n (0, _classCallCheck3.default)(this, DeviceList);\n\n this._cryptoStore = cryptoStore;\n this._sessionStore = sessionStore;\n\n // userId -> {\n // deviceId -> {\n // [device info]\n // }\n // }\n this._devices = {};\n\n // map of identity keys to the user who owns it\n this._userByIdentityKey = {};\n\n // which users we are tracking device status for.\n // userId -> TRACKING_STATUS_*\n this._deviceTrackingStatus = {}; // loaded from storage in load()\n\n // The 'next_batch' sync token at the point the data was writen,\n // ie. a token representing the point immediately after the\n // moment represented by the snapshot in the db.\n this._syncToken = null;\n\n this._serialiser = new DeviceListUpdateSerialiser(baseApis, olmDevice, this);\n\n // userId -> promise\n this._keyDownloadsInProgressByUser = {};\n\n // Set whenever changes are made other than setting the sync token\n this._dirty = false;\n\n // Promise resolved when device data is saved\n this._savePromise = null;\n // Function that resolves the save promise\n this._resolveSavePromise = null;\n // The time the save is scheduled for\n this._savePromiseTime = null;\n // The timer used to delay the save\n this._saveTimer = null;\n }\n\n /**\n * Load the device tracking state from storage\n */\n\n\n (0, _createClass3.default)(DeviceList, [{\n key: 'load',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this = this;\n\n var shouldDeleteSessionStore, _iteratorNormalCompletion3, _didIteratorError3, _iteratorError3, _iterator3, _step3, u;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n shouldDeleteSessionStore = false;\n _context.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn(\n // migrate from session store if there's data there and not here\n 'readwrite', [_indexeddbCryptoStore2.default.STORE_DEVICE_DATA], function (txn) {\n _this._cryptoStore.getEndToEndDeviceData(txn, function (deviceData) {\n if (deviceData === null) {\n _logger2.default.log(\"Migrating e2e device data...\");\n _this._devices = _this._sessionStore.getAllEndToEndDevices() || {};\n _this._deviceTrackingStatus = _this._sessionStore.getEndToEndDeviceTrackingStatus() || {};\n _this._syncToken = _this._sessionStore.getEndToEndDeviceSyncToken();\n _this._cryptoStore.storeEndToEndDeviceData({\n devices: _this._devices,\n trackingStatus: _this._deviceTrackingStatus,\n syncToken: _this._syncToken\n }, txn);\n shouldDeleteSessionStore = true;\n } else {\n _this._devices = deviceData ? deviceData.devices : {}, _this._deviceTrackingStatus = deviceData ? deviceData.trackingStatus : {};\n _this._syncToken = deviceData ? deviceData.syncToken : null;\n }\n _this._userByIdentityKey = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(_this._devices)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var user = _step.value;\n\n var userDevices = _this._devices[user];\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(userDevices)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var device = _step2.value;\n\n var idKey = userDevices[device].keys['curve25519:' + device];\n if (idKey !== undefined) {\n _this._userByIdentityKey[idKey] = user;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n });\n }));\n\n case 3:\n\n if (shouldDeleteSessionStore) {\n // migrated data is now safely persisted: remove from old store\n this._sessionStore.removeEndToEndDeviceData();\n }\n\n _iteratorNormalCompletion3 = true;\n _didIteratorError3 = false;\n _iteratorError3 = undefined;\n _context.prev = 7;\n for (_iterator3 = (0, _getIterator3.default)((0, _keys2.default)(this._deviceTrackingStatus)); !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n u = _step3.value;\n\n // if a download was in progress when we got shut down, it isn't any more.\n if (this._deviceTrackingStatus[u] == TRACKING_STATUS_DOWNLOAD_IN_PROGRESS) {\n this._deviceTrackingStatus[u] = TRACKING_STATUS_PENDING_DOWNLOAD;\n }\n }\n _context.next = 15;\n break;\n\n case 11:\n _context.prev = 11;\n _context.t0 = _context['catch'](7);\n _didIteratorError3 = true;\n _iteratorError3 = _context.t0;\n\n case 15:\n _context.prev = 15;\n _context.prev = 16;\n\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n\n case 18:\n _context.prev = 18;\n\n if (!_didIteratorError3) {\n _context.next = 21;\n break;\n }\n\n throw _iteratorError3;\n\n case 21:\n return _context.finish(18);\n\n case 22:\n return _context.finish(15);\n\n case 23:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[7, 11, 15, 23], [16,, 18, 22]]);\n }));\n\n function load() {\n return _ref.apply(this, arguments);\n }\n\n return load;\n }()\n }, {\n key: 'stop',\n value: function stop() {\n if (this._saveTimer !== null) {\n clearTimeout(this._saveTimer);\n }\n }\n\n /**\n * Save the device tracking state to storage, if any changes are\n * pending other than updating the sync token\n *\n * The actual save will be delayed by a short amount of time to\n * aggregate multiple writes to the database.\n *\n * @param {integer} delay Time in ms before which the save actually happens.\n * By default, the save is delayed for a short period in order to batch\n * multiple writes, but this behaviour can be disabled by passing 0.\n *\n * @return {Promise<bool>} true if the data was saved, false if\n * it was not (eg. because no changes were pending). The promise\n * will only resolve once the data is saved, so may take some time\n * to resolve.\n */\n\n }, {\n key: 'saveIfDirty',\n value: function () {\n var _ref2 = (0, _bluebird.method)(function (delay) {\n var _this2 = this;\n\n if (!this._dirty) return _bluebird2.default.resolve(false);\n // Delay saves for a bit so we can aggregate multiple saves that happen\n // in quick succession (eg. when a whole room's devices are marked as known)\n if (delay === undefined) delay = 500;\n\n var targetTime = Date.now + delay;\n if (this._savePromiseTime && targetTime < this._savePromiseTime) {\n // There's a save scheduled but for after we would like: cancel\n // it & schedule one for the time we want\n clearTimeout(this._saveTimer);\n this._saveTimer = null;\n this._savePromiseTime = null;\n // (but keep the save promise since whatever called save before\n // will still want to know when the save is done)\n }\n\n var savePromise = this._savePromise;\n if (savePromise === null) {\n savePromise = new _bluebird2.default(function (resolve, reject) {\n _this2._resolveSavePromise = resolve;\n });\n this._savePromise = savePromise;\n }\n\n if (this._saveTimer === null) {\n var resolveSavePromise = this._resolveSavePromise;\n this._savePromiseTime = targetTime;\n this._saveTimer = setTimeout(function () {\n _logger2.default.log('Saving device tracking data at token ' + _this2._syncToken);\n // null out savePromise now (after the delay but before the write),\n // otherwise we could return the existing promise when the save has\n // actually already happened. Likewise for the dirty flag.\n _this2._savePromiseTime = null;\n _this2._saveTimer = null;\n _this2._savePromise = null;\n _this2._resolveSavePromise = null;\n\n _this2._dirty = false;\n _this2._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_DEVICE_DATA], function (txn) {\n _this2._cryptoStore.storeEndToEndDeviceData({\n devices: _this2._devices,\n trackingStatus: _this2._deviceTrackingStatus,\n syncToken: _this2._syncToken\n }, txn);\n }).then(function () {\n resolveSavePromise();\n });\n }, delay);\n }\n return savePromise;\n });\n\n function saveIfDirty(_x) {\n return _ref2.apply(this, arguments);\n }\n\n return saveIfDirty;\n }()\n\n /**\n * Gets the sync token last set with setSyncToken\n *\n * @return {string} The sync token\n */\n\n }, {\n key: 'getSyncToken',\n value: function getSyncToken() {\n return this._syncToken;\n }\n\n /**\n * Sets the sync token that the app will pass as the 'since' to the /sync\n * endpoint next time it syncs.\n * The sync token must always be set after any changes made as a result of\n * data in that sync since setting the sync token to a newer one will mean\n * those changed will not be synced from the server if a new client starts\n * up with that data.\n *\n * @param {string} st The sync token\n */\n\n }, {\n key: 'setSyncToken',\n value: function setSyncToken(st) {\n this._syncToken = st;\n }\n\n /**\n * Ensures up to date keys for a list of users are stored in the session store,\n * downloading and storing them if they're not (or if forceDownload is\n * true).\n * @param {Array} userIds The users to fetch.\n * @param {bool} forceDownload Always download the keys even if cached.\n *\n * @return {Promise} A promise which resolves to a map userId->deviceId->{@link\n * module:crypto/deviceinfo|DeviceInfo}.\n */\n\n }, {\n key: 'downloadKeys',\n value: function downloadKeys(userIds, forceDownload) {\n var _this3 = this;\n\n var usersToDownload = [];\n var promises = [];\n\n userIds.forEach(function (u) {\n var trackingStatus = _this3._deviceTrackingStatus[u];\n if (_this3._keyDownloadsInProgressByUser[u]) {\n // already a key download in progress/queued for this user; its results\n // will be good enough for us.\n _logger2.default.log('downloadKeys: already have a download in progress for ' + (u + ': awaiting its result'));\n promises.push(_this3._keyDownloadsInProgressByUser[u]);\n } else if (forceDownload || trackingStatus != TRACKING_STATUS_UP_TO_DATE) {\n usersToDownload.push(u);\n }\n });\n\n if (usersToDownload.length != 0) {\n _logger2.default.log(\"downloadKeys: downloading for\", usersToDownload);\n var downloadPromise = this._doKeyDownload(usersToDownload);\n promises.push(downloadPromise);\n }\n\n if (promises.length === 0) {\n _logger2.default.log(\"downloadKeys: already have all necessary keys\");\n }\n\n return _bluebird2.default.all(promises).then(function () {\n return _this3._getDevicesFromStore(userIds);\n });\n }\n\n /**\n * Get the stored device keys for a list of user ids\n *\n * @param {string[]} userIds the list of users to list keys for.\n *\n * @return {Object} userId->deviceId->{@link module:crypto/deviceinfo|DeviceInfo}.\n */\n\n }, {\n key: '_getDevicesFromStore',\n value: function _getDevicesFromStore(userIds) {\n var stored = {};\n var self = this;\n userIds.map(function (u) {\n stored[u] = {};\n var devices = self.getStoredDevicesForUser(u) || [];\n devices.map(function (dev) {\n stored[u][dev.deviceId] = dev;\n });\n });\n return stored;\n }\n\n /**\n * Get the stored device keys for a user id\n *\n * @param {string} userId the user to list keys for.\n *\n * @return {module:crypto/deviceinfo[]|null} list of devices, or null if we haven't\n * managed to get a list of devices for this user yet.\n */\n\n }, {\n key: 'getStoredDevicesForUser',\n value: function getStoredDevicesForUser(userId) {\n var devs = this._devices[userId];\n if (!devs) {\n return null;\n }\n var res = [];\n for (var deviceId in devs) {\n if (devs.hasOwnProperty(deviceId)) {\n res.push(_deviceinfo2.default.fromStorage(devs[deviceId], deviceId));\n }\n }\n return res;\n }\n\n /**\n * Get the stored device data for a user, in raw object form\n *\n * @param {string} userId the user to get data for\n *\n * @return {Object} deviceId->{object} devices, or undefined if\n * there is no data for this user.\n */\n\n }, {\n key: 'getRawStoredDevicesForUser',\n value: function getRawStoredDevicesForUser(userId) {\n return this._devices[userId];\n }\n\n /**\n * Get the stored keys for a single device\n *\n * @param {string} userId\n * @param {string} deviceId\n *\n * @return {module:crypto/deviceinfo?} device, or undefined\n * if we don't know about this device\n */\n\n }, {\n key: 'getStoredDevice',\n value: function getStoredDevice(userId, deviceId) {\n var devs = this._devices[userId];\n if (!devs || !devs[deviceId]) {\n return undefined;\n }\n return _deviceinfo2.default.fromStorage(devs[deviceId], deviceId);\n }\n\n /**\n * Find a device by curve25519 identity key\n *\n * @param {string} algorithm encryption algorithm\n * @param {string} senderKey curve25519 key to match\n *\n * @return {module:crypto/deviceinfo?}\n */\n\n }, {\n key: 'getDeviceByIdentityKey',\n value: function getDeviceByIdentityKey(algorithm, senderKey) {\n var userId = this._userByIdentityKey[senderKey];\n if (!userId) {\n return null;\n }\n\n if (algorithm !== _olmlib2.default.OLM_ALGORITHM && algorithm !== _olmlib2.default.MEGOLM_ALGORITHM) {\n // we only deal in olm keys\n return null;\n }\n\n var devices = this._devices[userId];\n if (!devices) {\n return null;\n }\n\n for (var deviceId in devices) {\n if (!devices.hasOwnProperty(deviceId)) {\n continue;\n }\n\n var device = devices[deviceId];\n for (var keyId in device.keys) {\n if (!device.keys.hasOwnProperty(keyId)) {\n continue;\n }\n if (keyId.indexOf(\"curve25519:\") !== 0) {\n continue;\n }\n var deviceKey = device.keys[keyId];\n if (deviceKey == senderKey) {\n return _deviceinfo2.default.fromStorage(device, deviceId);\n }\n }\n }\n\n // doesn't match a known device\n return null;\n }\n\n /**\n * Replaces the list of devices for a user with the given device list\n *\n * @param {string} u The user ID\n * @param {Object} devs New device info for user\n */\n\n }, {\n key: 'storeDevicesForUser',\n value: function storeDevicesForUser(u, devs) {\n // remove previous devices from _userByIdentityKey\n if (this._devices[u] !== undefined) {\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)((0, _entries2.default)(this._devices[u])), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var _step4$value = (0, _slicedToArray3.default)(_step4.value, 2),\n deviceId = _step4$value[0],\n dev = _step4$value[1];\n\n var identityKey = dev.keys['curve25519:' + deviceId];\n\n delete this._userByIdentityKey[identityKey];\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n }\n\n this._devices[u] = devs;\n\n // add new ones\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = (0, _getIterator3.default)((0, _entries2.default)(devs)), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var _step5$value = (0, _slicedToArray3.default)(_step5.value, 2),\n deviceId = _step5$value[0],\n dev = _step5$value[1];\n\n var _identityKey = dev.keys['curve25519:' + deviceId];\n\n this._userByIdentityKey[_identityKey] = u;\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n\n this._dirty = true;\n }\n\n /**\n * flag the given user for device-list tracking, if they are not already.\n *\n * This will mean that a subsequent call to refreshOutdatedDeviceLists()\n * will download the device list for the user, and that subsequent calls to\n * invalidateUserDeviceList will trigger more updates.\n *\n * @param {String} userId\n */\n\n }, {\n key: 'startTrackingDeviceList',\n value: function startTrackingDeviceList(userId) {\n // sanity-check the userId. This is mostly paranoia, but if synapse\n // can't parse the userId we give it as an mxid, it 500s the whole\n // request and we can never update the device lists again (because\n // the broken userId is always 'invalid' and always included in any\n // refresh request).\n // By checking it is at least a string, we can eliminate a class of\n // silly errors.\n if (typeof userId !== 'string') {\n throw new Error('userId must be a string; was ' + userId);\n }\n if (!this._deviceTrackingStatus[userId]) {\n _logger2.default.log('Now tracking device list for ' + userId);\n this._deviceTrackingStatus[userId] = TRACKING_STATUS_PENDING_DOWNLOAD;\n }\n // we don't yet persist the tracking status, since there may be a lot\n // of calls; we save all data together once the sync is done\n this._dirty = true;\n }\n\n /**\n * Mark the given user as no longer being tracked for device-list updates.\n *\n * This won't affect any in-progress downloads, which will still go on to\n * complete; it will just mean that we don't think that we have an up-to-date\n * list for future calls to downloadKeys.\n *\n * @param {String} userId\n */\n\n }, {\n key: 'stopTrackingDeviceList',\n value: function stopTrackingDeviceList(userId) {\n if (this._deviceTrackingStatus[userId]) {\n _logger2.default.log('No longer tracking device list for ' + userId);\n this._deviceTrackingStatus[userId] = TRACKING_STATUS_NOT_TRACKED;\n\n // we don't yet persist the tracking status, since there may be a lot\n // of calls; we save all data together once the sync is done\n this._dirty = true;\n }\n }\n\n /**\n * Set all users we're currently tracking to untracked\n *\n * This will flag each user whose devices we are tracking as in need of an\n * update.\n */\n\n }, {\n key: 'stopTrackingAllDeviceLists',\n value: function stopTrackingAllDeviceLists() {\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = (0, _getIterator3.default)((0, _keys2.default)(this._deviceTrackingStatus)), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var userId = _step6.value;\n\n this._deviceTrackingStatus[userId] = TRACKING_STATUS_NOT_TRACKED;\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n\n this._dirty = true;\n }\n\n /**\n * Mark the cached device list for the given user outdated.\n *\n * If we are not tracking this user's devices, we'll do nothing. Otherwise\n * we flag the user as needing an update.\n *\n * This doesn't actually set off an update, so that several users can be\n * batched together. Call refreshOutdatedDeviceLists() for that.\n *\n * @param {String} userId\n */\n\n }, {\n key: 'invalidateUserDeviceList',\n value: function invalidateUserDeviceList(userId) {\n if (this._deviceTrackingStatus[userId]) {\n _logger2.default.log(\"Marking device list outdated for\", userId);\n this._deviceTrackingStatus[userId] = TRACKING_STATUS_PENDING_DOWNLOAD;\n\n // we don't yet persist the tracking status, since there may be a lot\n // of calls; we save all data together once the sync is done\n this._dirty = true;\n }\n }\n\n /**\n * If we have users who have outdated device lists, start key downloads for them\n *\n * @returns {Promise} which completes when the download completes; normally there\n * is no need to wait for this (it's mostly for the unit tests).\n */\n\n }, {\n key: 'refreshOutdatedDeviceLists',\n value: function refreshOutdatedDeviceLists() {\n this.saveIfDirty();\n\n var usersToDownload = [];\n var _iteratorNormalCompletion7 = true;\n var _didIteratorError7 = false;\n var _iteratorError7 = undefined;\n\n try {\n for (var _iterator7 = (0, _getIterator3.default)((0, _keys2.default)(this._deviceTrackingStatus)), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n var userId = _step7.value;\n\n var stat = this._deviceTrackingStatus[userId];\n if (stat == TRACKING_STATUS_PENDING_DOWNLOAD) {\n usersToDownload.push(userId);\n }\n }\n } catch (err) {\n _didIteratorError7 = true;\n _iteratorError7 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion7 && _iterator7.return) {\n _iterator7.return();\n }\n } finally {\n if (_didIteratorError7) {\n throw _iteratorError7;\n }\n }\n }\n\n return this._doKeyDownload(usersToDownload);\n }\n\n /**\n * Set the stored device data for a user, in raw object form\n * Used only by internal class DeviceListUpdateSerialiser\n *\n * @param {string} userId the user to get data for\n *\n * @param {Object} devices deviceId->{object} the new devices\n */\n\n }, {\n key: '_setRawStoredDevicesForUser',\n value: function _setRawStoredDevicesForUser(userId, devices) {\n // remove old devices from _userByIdentityKey\n if (this._devices[userId] !== undefined) {\n var _iteratorNormalCompletion8 = true;\n var _didIteratorError8 = false;\n var _iteratorError8 = undefined;\n\n try {\n for (var _iterator8 = (0, _getIterator3.default)((0, _entries2.default)(this._devices[userId])), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {\n var _step8$value = (0, _slicedToArray3.default)(_step8.value, 2),\n deviceId = _step8$value[0],\n dev = _step8$value[1];\n\n var identityKey = dev.keys['curve25519:' + deviceId];\n\n delete this._userByIdentityKey[identityKey];\n }\n } catch (err) {\n _didIteratorError8 = true;\n _iteratorError8 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion8 && _iterator8.return) {\n _iterator8.return();\n }\n } finally {\n if (_didIteratorError8) {\n throw _iteratorError8;\n }\n }\n }\n }\n\n this._devices[userId] = devices;\n\n // add new devices into _userByIdentityKey\n var _iteratorNormalCompletion9 = true;\n var _didIteratorError9 = false;\n var _iteratorError9 = undefined;\n\n try {\n for (var _iterator9 = (0, _getIterator3.default)((0, _entries2.default)(devices)), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {\n var _step9$value = (0, _slicedToArray3.default)(_step9.value, 2),\n deviceId = _step9$value[0],\n dev = _step9$value[1];\n\n var _identityKey2 = dev.keys['curve25519:' + deviceId];\n\n this._userByIdentityKey[_identityKey2] = userId;\n }\n } catch (err) {\n _didIteratorError9 = true;\n _iteratorError9 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion9 && _iterator9.return) {\n _iterator9.return();\n }\n } finally {\n if (_didIteratorError9) {\n throw _iteratorError9;\n }\n }\n }\n }\n\n /**\n * Fire off download update requests for the given users, and update the\n * device list tracking status for them, and the\n * _keyDownloadsInProgressByUser map for them.\n *\n * @param {String[]} users list of userIds\n *\n * @return {module:client.Promise} resolves when all the users listed have\n * been updated. rejects if there was a problem updating any of the\n * users.\n */\n\n }, {\n key: '_doKeyDownload',\n value: function _doKeyDownload(users) {\n var _this4 = this;\n\n if (users.length === 0) {\n // nothing to do\n return _bluebird2.default.resolve();\n }\n\n var prom = this._serialiser.updateDevicesForUsers(users, this._syncToken).then(function () {\n finished(true);\n }, function (e) {\n _logger2.default.error('Error downloading keys for ' + users + \":\", e);\n finished(false);\n throw e;\n });\n\n users.forEach(function (u) {\n _this4._keyDownloadsInProgressByUser[u] = prom;\n var stat = _this4._deviceTrackingStatus[u];\n if (stat == TRACKING_STATUS_PENDING_DOWNLOAD) {\n _this4._deviceTrackingStatus[u] = TRACKING_STATUS_DOWNLOAD_IN_PROGRESS;\n }\n });\n\n var finished = function finished(success) {\n users.forEach(function (u) {\n _this4._dirty = true;\n\n // we may have queued up another download request for this user\n // since we started this request. If that happens, we should\n // ignore the completion of the first one.\n if (_this4._keyDownloadsInProgressByUser[u] !== prom) {\n _logger2.default.log('Another update in the queue for', u, '- not marking up-to-date');\n return;\n }\n delete _this4._keyDownloadsInProgressByUser[u];\n var stat = _this4._deviceTrackingStatus[u];\n if (stat == TRACKING_STATUS_DOWNLOAD_IN_PROGRESS) {\n if (success) {\n // we didn't get any new invalidations since this download started:\n // this user's device list is now up to date.\n _this4._deviceTrackingStatus[u] = TRACKING_STATUS_UP_TO_DATE;\n _logger2.default.log(\"Device list for\", u, \"now up to date\");\n } else {\n _this4._deviceTrackingStatus[u] = TRACKING_STATUS_PENDING_DOWNLOAD;\n }\n }\n });\n _this4.saveIfDirty();\n };\n\n return prom;\n }\n }]);\n return DeviceList;\n}();\n\n/**\n * Serialises updates to device lists\n *\n * Ensures that results from /keys/query are not overwritten if a second call\n * completes *before* an earlier one.\n *\n * It currently does this by ensuring only one call to /keys/query happens at a\n * time (and queuing other requests up).\n */\n\n\nexports.default = DeviceList;\n\nvar DeviceListUpdateSerialiser = function () {\n /*\n * @param {object} baseApis Base API object\n * @param {object} olmDevice The Olm Device\n * @param {object} deviceList The device list object\n */\n function DeviceListUpdateSerialiser(baseApis, olmDevice, deviceList) {\n (0, _classCallCheck3.default)(this, DeviceListUpdateSerialiser);\n\n this._baseApis = baseApis;\n this._olmDevice = olmDevice;\n this._deviceList = deviceList; // the device list to be updated\n\n this._downloadInProgress = false;\n\n // users which are queued for download\n // userId -> true\n this._keyDownloadsQueuedByUser = {};\n\n // deferred which is resolved when the queued users are downloaded.\n //\n // non-null indicates that we have users queued for download.\n this._queuedQueryDeferred = null;\n\n this._syncToken = null; // The sync token we send with the requests\n }\n\n /**\n * Make a key query request for the given users\n *\n * @param {String[]} users list of user ids\n *\n * @param {String} syncToken sync token to pass in the query request, to\n * help the HS give the most recent results\n *\n * @return {module:client.Promise} resolves when all the users listed have\n * been updated. rejects if there was a problem updating any of the\n * users.\n */\n\n\n (0, _createClass3.default)(DeviceListUpdateSerialiser, [{\n key: 'updateDevicesForUsers',\n value: function updateDevicesForUsers(users, syncToken) {\n var _this5 = this;\n\n users.forEach(function (u) {\n _this5._keyDownloadsQueuedByUser[u] = true;\n });\n\n if (!this._queuedQueryDeferred) {\n this._queuedQueryDeferred = _bluebird2.default.defer();\n }\n\n // We always take the new sync token and just use the latest one we've\n // been given, since it just needs to be at least as recent as the\n // sync response the device invalidation message arrived in\n this._syncToken = syncToken;\n\n if (this._downloadInProgress) {\n // just queue up these users\n _logger2.default.log('Queued key download for', users);\n return this._queuedQueryDeferred.promise;\n }\n\n // start a new download.\n return this._doQueuedQueries();\n }\n }, {\n key: '_doQueuedQueries',\n value: function _doQueuedQueries() {\n var _this6 = this;\n\n if (this._downloadInProgress) {\n throw new Error(\"DeviceListUpdateSerialiser._doQueuedQueries called with request active\");\n }\n\n var downloadUsers = (0, _keys2.default)(this._keyDownloadsQueuedByUser);\n this._keyDownloadsQueuedByUser = {};\n var deferred = this._queuedQueryDeferred;\n this._queuedQueryDeferred = null;\n\n _logger2.default.log('Starting key download for', downloadUsers);\n this._downloadInProgress = true;\n\n var opts = {};\n if (this._syncToken) {\n opts.token = this._syncToken;\n }\n\n this._baseApis.downloadKeysForUsers(downloadUsers, opts).then(function (res) {\n var dk = res.device_keys || {};\n\n // do each user in a separate promise, to avoid wedging the CPU\n // (https://github.com/vector-im/riot-web/issues/3158)\n //\n // of course we ought to do this in a web worker or similar, but\n // this serves as an easy solution for now.\n var prom = _bluebird2.default.resolve();\n var _iteratorNormalCompletion10 = true;\n var _didIteratorError10 = false;\n var _iteratorError10 = undefined;\n\n try {\n var _loop = function _loop() {\n var userId = _step10.value;\n\n prom = prom.delay(5).then(function () {\n return _this6._processQueryResponseForUser(userId, dk[userId]);\n });\n };\n\n for (var _iterator10 = (0, _getIterator3.default)(downloadUsers), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {\n _loop();\n }\n } catch (err) {\n _didIteratorError10 = true;\n _iteratorError10 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion10 && _iterator10.return) {\n _iterator10.return();\n }\n } finally {\n if (_didIteratorError10) {\n throw _iteratorError10;\n }\n }\n }\n\n return prom;\n }).done(function () {\n _logger2.default.log('Completed key download for ' + downloadUsers);\n\n _this6._downloadInProgress = false;\n deferred.resolve();\n\n // if we have queued users, fire off another request.\n if (_this6._queuedQueryDeferred) {\n _this6._doQueuedQueries();\n }\n }, function (e) {\n _logger2.default.warn('Error downloading keys for ' + downloadUsers + ':', e);\n _this6._downloadInProgress = false;\n deferred.reject(e);\n });\n\n return deferred.promise;\n }\n }, {\n key: '_processQueryResponseForUser',\n value: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(userId, response) {\n var userStore, devs, storage;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _logger2.default.log('got keys for ' + userId + ':', response);\n\n // map from deviceid -> deviceinfo for this user\n userStore = {};\n devs = this._deviceList.getRawStoredDevicesForUser(userId);\n\n if (devs) {\n (0, _keys2.default)(devs).forEach(function (deviceId) {\n var d = _deviceinfo2.default.fromStorage(devs[deviceId], deviceId);\n userStore[deviceId] = d;\n });\n }\n\n _context2.next = 6;\n return (0, _bluebird.resolve)(_updateStoredDeviceKeysForUser(this._olmDevice, userId, userStore, response || {}));\n\n case 6:\n\n // put the updates into thr object that will be returned as our results\n storage = {};\n\n (0, _keys2.default)(userStore).forEach(function (deviceId) {\n storage[deviceId] = userStore[deviceId].toStorage();\n });\n\n this._deviceList._setRawStoredDevicesForUser(userId, storage);\n\n case 9:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function _processQueryResponseForUser(_x2, _x3) {\n return _ref3.apply(this, arguments);\n }\n\n return _processQueryResponseForUser;\n }()\n }]);\n return DeviceListUpdateSerialiser;\n}();\n//# sourceMappingURL=DeviceList.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nexports.encodeRecoveryKey = encodeRecoveryKey;\nexports.decodeRecoveryKey = decodeRecoveryKey;\n\nvar _bs = require('bs58');\n\nvar _bs2 = _interopRequireDefault(_bs);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// picked arbitrarily but to try & avoid clashing with any bitcoin ones\n// (which are also base58 encoded, but bitcoin's involve a lot more hashing)\nvar OLM_RECOVERY_KEY_PREFIX = [0x8B, 0x01]; /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction encodeRecoveryKey(key) {\n var buf = new Uint8Array(OLM_RECOVERY_KEY_PREFIX.length + key.length + 1);\n buf.set(OLM_RECOVERY_KEY_PREFIX, 0);\n buf.set(key, OLM_RECOVERY_KEY_PREFIX.length);\n\n var parity = 0;\n for (var i = 0; i < buf.length - 1; ++i) {\n parity ^= buf[i];\n }\n buf[buf.length - 1] = parity;\n var base58key = _bs2.default.encode(buf);\n\n return base58key.match(/.{1,4}/g).join(\" \");\n}\n\nfunction decodeRecoveryKey(recoverykey) {\n var result = _bs2.default.decode(recoverykey.replace(/ /g, ''));\n\n var parity = 0;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(result), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var b = _step.value;\n\n parity ^= b;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (parity !== 0) {\n throw new Error(\"Incorrect parity\");\n }\n\n for (var i = 0; i < OLM_RECOVERY_KEY_PREFIX.length; ++i) {\n if (result[i] !== OLM_RECOVERY_KEY_PREFIX[i]) {\n throw new Error(\"Incorrect prefix\");\n }\n }\n\n if (result.length !== OLM_RECOVERY_KEY_PREFIX.length + global.Olm.PRIVATE_KEY_LENGTH + 1) {\n throw new Error(\"Incorrect length\");\n }\n\n return result.slice(OLM_RECOVERY_KEY_PREFIX.length, OLM_RECOVERY_KEY_PREFIX.length + global.Olm.PRIVATE_KEY_LENGTH);\n}\n//# sourceMappingURL=recoverykey.js.map","var basex = require('base-x')\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","// base-x encoding\n// Forked from https://github.com/cryptocoinjs/bs58\n// Originally written by Mike Hearn for BitcoinJ\n// Copyright (c) 2011 Google Inc\n// Ported to JavaScript by Stefan Thomas\n// Merged Buffer refactorings from base58-native by Stephen Pair\n// Copyright (c) 2013 BitPay Inc\n\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function base (ALPHABET) {\n var ALPHABET_MAP = {}\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n\n // pre-compute lookup table\n for (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n }\n\n function encode (source) {\n if (source.length === 0) return ''\n\n var digits = [0]\n for (var i = 0; i < source.length; ++i) {\n for (var j = 0, carry = source[i]; j < digits.length; ++j) {\n carry += digits[j] << 8\n digits[j] = carry % BASE\n carry = (carry / BASE) | 0\n }\n\n while (carry > 0) {\n digits.push(carry % BASE)\n carry = (carry / BASE) | 0\n }\n }\n\n var string = ''\n\n // deal with leading zeros\n for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += LEADER\n // convert digits to a string\n for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]\n\n return string\n }\n\n function decodeUnsafe (string) {\n if (typeof string !== 'string') throw new TypeError('Expected String')\n if (string.length === 0) return Buffer.allocUnsafe(0)\n\n var bytes = [0]\n for (var i = 0; i < string.length; i++) {\n var value = ALPHABET_MAP[string[i]]\n if (value === undefined) return\n\n for (var j = 0, carry = value; j < bytes.length; ++j) {\n carry += bytes[j] * BASE\n bytes[j] = carry & 0xff\n carry >>= 8\n }\n\n while (carry > 0) {\n bytes.push(carry & 0xff)\n carry >>= 8\n }\n }\n\n // deal with leading zeros\n for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {\n bytes.push(0)\n }\n\n return Buffer.from(bytes.reverse())\n }\n\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) return buffer\n\n throw new Error('Non-base' + BASE + ' character')\n }\n\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.keyForNewBackup = exports.keyForExistingBackup = undefined;\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar keyForExistingBackup = exports.keyForExistingBackup = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(backupData, password) {\n var authData;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (global.Olm) {\n _context.next = 2;\n break;\n }\n\n throw new Error(\"Olm is not available\");\n\n case 2:\n authData = backupData.auth_data;\n\n if (!(!authData.private_key_salt || !authData.private_key_iterations)) {\n _context.next = 5;\n break;\n }\n\n throw new Error(\"Salt and/or iterations not found: \" + \"this backup cannot be restored with a passphrase\");\n\n case 5:\n _context.next = 7;\n return (0, _bluebird.resolve)(deriveKey(password, backupData.auth_data.private_key_salt, backupData.auth_data.private_key_iterations));\n\n case 7:\n return _context.abrupt(\"return\", _context.sent);\n\n case 8:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function keyForExistingBackup(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\nvar keyForNewBackup = exports.keyForNewBackup = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(password) {\n var salt, key;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (global.Olm) {\n _context2.next = 2;\n break;\n }\n\n throw new Error(\"Olm is not available\");\n\n case 2:\n salt = (0, _randomstring.randomString)(32);\n _context2.next = 5;\n return (0, _bluebird.resolve)(deriveKey(password, salt, DEFAULT_ITERATIONS));\n\n case 5:\n key = _context2.sent;\n return _context2.abrupt(\"return\", { key: key, salt: salt, iterations: DEFAULT_ITERATIONS });\n\n case 7:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function keyForNewBackup(_x3) {\n return _ref2.apply(this, arguments);\n };\n}();\n\nvar deriveKey = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(password, salt, iterations) {\n var subtleCrypto, TextEncoder, key, keybits;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n subtleCrypto = global.crypto.subtle;\n TextEncoder = global.TextEncoder;\n\n if (!(!subtleCrypto || !TextEncoder)) {\n _context3.next = 4;\n break;\n }\n\n throw new Error(\"Password-based backup is not avaiable on this platform\");\n\n case 4:\n _context3.next = 6;\n return (0, _bluebird.resolve)(subtleCrypto.importKey('raw', new TextEncoder().encode(password), { name: 'PBKDF2' }, false, ['deriveBits']));\n\n case 6:\n key = _context3.sent;\n _context3.next = 9;\n return (0, _bluebird.resolve)(subtleCrypto.deriveBits({\n name: 'PBKDF2',\n salt: new TextEncoder().encode(salt),\n iterations: iterations,\n hash: 'SHA-512'\n }, key, global.Olm.PRIVATE_KEY_LENGTH * 8));\n\n case 9:\n keybits = _context3.sent;\n return _context3.abrupt(\"return\", new Uint8Array(keybits));\n\n case 11:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function deriveKey(_x4, _x5, _x6) {\n return _ref3.apply(this, arguments);\n };\n}();\n\nvar _randomstring = require(\"../randomstring\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DEFAULT_ITERATIONS = 500000; /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=backup_password.js.map","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n","require('../../modules/es6.number.is-finite');\nmodule.exports = require('../../modules/_core').Number.isFinite;\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module models/search-result\n */\n\nvar EventContext = require(\"./event-context\");\nvar utils = require(\"../utils\");\n\n/**\n * Construct a new SearchResult\n *\n * @param {number} rank where this SearchResult ranks in the results\n * @param {event-context.EventContext} eventContext the matching event and its\n * context\n *\n * @constructor\n */\nfunction SearchResult(rank, eventContext) {\n this.rank = rank;\n this.context = eventContext;\n}\n\n/**\n * Create a SearchResponse from the response to /search\n * @static\n * @param {Object} jsonObj\n * @param {function} eventMapper\n * @return {SearchResult}\n */\n\nSearchResult.fromJson = function (jsonObj, eventMapper) {\n var jsonContext = jsonObj.context || {};\n var events_before = jsonContext.events_before || [];\n var events_after = jsonContext.events_after || [];\n\n var context = new EventContext(eventMapper(jsonObj.result));\n\n context.setPaginateToken(jsonContext.start, true);\n context.addEvents(utils.map(events_before, eventMapper), true);\n context.addEvents(utils.map(events_after, eventMapper), false);\n context.setPaginateToken(jsonContext.end, false);\n\n return new SearchResult(jsonObj.rank, context);\n};\n\n/**\n * The SearchResult class\n */\nmodule.exports = SearchResult;\n//# sourceMappingURL=search-result.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module models/event-context\n */\n\n/**\n * Construct a new EventContext\n *\n * An eventcontext is used for circumstances such as search results, when we\n * have a particular event of interest, and a bunch of events before and after\n * it.\n *\n * It also stores pagination tokens for going backwards and forwards in the\n * timeline.\n *\n * @param {MatrixEvent} ourEvent the event at the centre of this context\n *\n * @constructor\n */\n\nfunction EventContext(ourEvent) {\n this._timeline = [ourEvent];\n this._ourEventIndex = 0;\n this._paginateTokens = { b: null, f: null };\n\n // this is used by MatrixClient to keep track of active requests\n this._paginateRequests = { b: null, f: null };\n}\n\n/**\n * Get the main event of interest\n *\n * This is a convenience function for getTimeline()[getOurEventIndex()].\n *\n * @return {MatrixEvent} The event at the centre of this context.\n */\nEventContext.prototype.getEvent = function () {\n return this._timeline[this._ourEventIndex];\n};\n\n/**\n * Get the list of events in this context\n *\n * @return {Array} An array of MatrixEvents\n */\nEventContext.prototype.getTimeline = function () {\n return this._timeline;\n};\n\n/**\n * Get the index in the timeline of our event\n *\n * @return {Number}\n */\nEventContext.prototype.getOurEventIndex = function () {\n return this._ourEventIndex;\n};\n\n/**\n * Get a pagination token.\n *\n * @param {boolean} backwards true to get the pagination token for going\n * backwards in time\n * @return {string}\n */\nEventContext.prototype.getPaginateToken = function (backwards) {\n return this._paginateTokens[backwards ? 'b' : 'f'];\n};\n\n/**\n * Set a pagination token.\n *\n * Generally this will be used only by the matrix js sdk.\n *\n * @param {string} token pagination token\n * @param {boolean} backwards true to set the pagination token for going\n * backwards in time\n */\nEventContext.prototype.setPaginateToken = function (token, backwards) {\n this._paginateTokens[backwards ? 'b' : 'f'] = token;\n};\n\n/**\n * Add more events to the timeline\n *\n * @param {Array} events new events, in timeline order\n * @param {boolean} atStart true to insert new events at the start\n */\nEventContext.prototype.addEvents = function (events, atStart) {\n // TODO: should we share logic with Room.addEventsToTimeline?\n // Should Room even use EventContext?\n\n if (atStart) {\n this._timeline = events.concat(this._timeline);\n this._ourEventIndex += events.length;\n } else {\n this._timeline = this._timeline.concat(events);\n }\n};\n\n/**\n * The EventContext class\n */\nmodule.exports = EventContext;\n//# sourceMappingURL=event-context.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * This is an internal module.\n * @module store/stub\n */\n\n/**\n * Construct a stub store. This does no-ops on most store methods.\n * @constructor\n */\nfunction StubStore() {\n this.fromToken = null;\n}\n\nStubStore.prototype = {\n\n /** @return {Promise<bool>} whether or not the database was newly created in this session. */\n isNewlyCreated: function isNewlyCreated() {\n return _bluebird2.default.resolve(true);\n },\n\n /**\n * Get the sync token.\n * @return {string}\n */\n getSyncToken: function getSyncToken() {\n return this.fromToken;\n },\n\n /**\n * Set the sync token.\n * @param {string} token\n */\n setSyncToken: function setSyncToken(token) {\n this.fromToken = token;\n },\n\n /**\n * No-op.\n * @param {Group} group\n */\n storeGroup: function storeGroup(group) {},\n\n /**\n * No-op.\n * @param {string} groupId\n * @return {null}\n */\n getGroup: function getGroup(groupId) {\n return null;\n },\n\n /**\n * No-op.\n * @return {Array} An empty array.\n */\n getGroups: function getGroups() {\n return [];\n },\n\n /**\n * No-op.\n * @param {Room} room\n */\n storeRoom: function storeRoom(room) {},\n\n /**\n * No-op.\n * @param {string} roomId\n * @return {null}\n */\n getRoom: function getRoom(roomId) {\n return null;\n },\n\n /**\n * No-op.\n * @return {Array} An empty array.\n */\n getRooms: function getRooms() {\n return [];\n },\n\n /**\n * Permanently delete a room.\n * @param {string} roomId\n */\n removeRoom: function removeRoom(roomId) {\n return;\n },\n\n /**\n * No-op.\n * @return {Array} An empty array.\n */\n getRoomSummaries: function getRoomSummaries() {\n return [];\n },\n\n /**\n * No-op.\n * @param {User} user\n */\n storeUser: function storeUser(user) {},\n\n /**\n * No-op.\n * @param {string} userId\n * @return {null}\n */\n getUser: function getUser(userId) {\n return null;\n },\n\n /**\n * No-op.\n * @return {User[]}\n */\n getUsers: function getUsers() {\n return [];\n },\n\n /**\n * No-op.\n * @param {Room} room\n * @param {integer} limit\n * @return {Array}\n */\n scrollback: function scrollback(room, limit) {\n return [];\n },\n\n /**\n * Store events for a room.\n * @param {Room} room The room to store events for.\n * @param {Array<MatrixEvent>} events The events to store.\n * @param {string} token The token associated with these events.\n * @param {boolean} toStart True if these are paginated results.\n */\n storeEvents: function storeEvents(room, events, token, toStart) {},\n\n /**\n * Store a filter.\n * @param {Filter} filter\n */\n storeFilter: function storeFilter(filter) {},\n\n /**\n * Retrieve a filter.\n * @param {string} userId\n * @param {string} filterId\n * @return {?Filter} A filter or null.\n */\n getFilter: function getFilter(userId, filterId) {\n return null;\n },\n\n /**\n * Retrieve a filter ID with the given name.\n * @param {string} filterName The filter name.\n * @return {?string} The filter ID or null.\n */\n getFilterIdByName: function getFilterIdByName(filterName) {\n return null;\n },\n\n /**\n * Set a filter name to ID mapping.\n * @param {string} filterName\n * @param {string} filterId\n */\n setFilterIdByName: function setFilterIdByName(filterName, filterId) {},\n\n /**\n * Store user-scoped account data events\n * @param {Array<MatrixEvent>} events The events to store.\n */\n storeAccountDataEvents: function storeAccountDataEvents(events) {},\n\n /**\n * Get account data event by event type\n * @param {string} eventType The event type being queried\n */\n getAccountData: function getAccountData(eventType) {},\n\n /**\n * setSyncData does nothing as there is no backing data store.\n *\n * @param {Object} syncData The sync data\n * @return {Promise} An immediately resolved promise.\n */\n setSyncData: function setSyncData(syncData) {\n return _bluebird2.default.resolve();\n },\n\n /**\n * We never want to save becase we have nothing to save to.\n *\n * @return {boolean} If the store wants to save\n */\n wantsSave: function wantsSave() {\n return false;\n },\n\n /**\n * Save does nothing as there is no backing data store.\n */\n save: function save() {},\n\n /**\n * Startup does nothing.\n * @return {Promise} An immediately resolved promise.\n */\n startup: function startup() {\n return _bluebird2.default.resolve();\n },\n\n /**\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\n getSavedSync: function getSavedSync() {\n return _bluebird2.default.resolve(null);\n },\n\n /**\n * @return {Promise} If there is a saved sync, the nextBatch token\n * for this sync, otherwise null.\n */\n getSavedSyncToken: function getSavedSyncToken() {\n return _bluebird2.default.resolve(null);\n },\n\n /**\n * Delete all data from this store. Does nothing since this store\n * doesn't store anything.\n * @return {Promise} An immediately resolved promise.\n */\n deleteAllData: function deleteAllData() {\n return _bluebird2.default.resolve();\n },\n\n getOutOfBandMembers: function getOutOfBandMembers() {\n return _bluebird2.default.resolve(null);\n },\n\n setOutOfBandMembers: function setOutOfBandMembers() {\n return _bluebird2.default.resolve();\n },\n\n clearOutOfBandMembers: function clearOutOfBandMembers() {\n return _bluebird2.default.resolve();\n },\n\n getClientOptions: function getClientOptions() {\n return _bluebird2.default.resolve();\n },\n\n storeClientOptions: function storeClientOptions() {\n return _bluebird2.default.resolve();\n }\n};\n\n/** Stub Store class. */\nmodule.exports = StubStore;\n//# sourceMappingURL=stub.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module filter-component\n */\n\n/**\n * Checks if a value matches a given field value, which may be a * terminated\n * wildcard pattern.\n * @param {String} actual_value The value to be compared\n * @param {String} filter_value The filter pattern to be compared\n * @return {bool} true if the actual_value matches the filter_value\n */\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _matches_wildcard(actual_value, filter_value) {\n if (filter_value.endsWith(\"*\")) {\n var type_prefix = filter_value.slice(0, -1);\n return actual_value.substr(0, type_prefix.length) === type_prefix;\n } else {\n return actual_value === filter_value;\n }\n}\n\n/**\n * FilterComponent is a section of a Filter definition which defines the\n * types, rooms, senders filters etc to be applied to a particular type of resource.\n * This is all ported over from synapse's Filter object.\n *\n * N.B. that synapse refers to these as 'Filters', and what js-sdk refers to as\n * 'Filters' are referred to as 'FilterCollections'.\n *\n * @constructor\n * @param {Object} filter_json the definition of this filter JSON, e.g. { 'contains_url': true }\n */\nfunction FilterComponent(filter_json) {\n this.filter_json = filter_json;\n\n this.types = filter_json.types || null;\n this.not_types = filter_json.not_types || [];\n\n this.rooms = filter_json.rooms || null;\n this.not_rooms = filter_json.not_rooms || [];\n\n this.senders = filter_json.senders || null;\n this.not_senders = filter_json.not_senders || [];\n\n this.contains_url = filter_json.contains_url || null;\n}\n\n/**\n * Checks with the filter component matches the given event\n * @param {MatrixEvent} event event to be checked against the filter\n * @return {bool} true if the event matches the filter\n */\nFilterComponent.prototype.check = function (event) {\n return this._checkFields(event.getRoomId(), event.getSender(), event.getType(), event.getContent() ? event.getContent().url !== undefined : false);\n};\n\n/**\n * Checks whether the filter component matches the given event fields.\n * @param {String} room_id the room_id for the event being checked\n * @param {String} sender the sender of the event being checked\n * @param {String} event_type the type of the event being checked\n * @param {String} contains_url whether the event contains a content.url field\n * @return {bool} true if the event fields match the filter\n */\nFilterComponent.prototype._checkFields = function (room_id, sender, event_type, contains_url) {\n var literal_keys = {\n \"rooms\": function rooms(v) {\n return room_id === v;\n },\n \"senders\": function senders(v) {\n return sender === v;\n },\n \"types\": function types(v) {\n return _matches_wildcard(event_type, v);\n }\n };\n\n var self = this;\n for (var n = 0; n < (0, _keys2.default)(literal_keys).length; n++) {\n var name = (0, _keys2.default)(literal_keys)[n];\n var match_func = literal_keys[name];\n var not_name = \"not_\" + name;\n var disallowed_values = self[not_name];\n if (disallowed_values.filter(match_func).length > 0) {\n return false;\n }\n\n var allowed_values = self[name];\n if (allowed_values) {\n if (!allowed_values.map(match_func)) {\n return false;\n }\n }\n }\n\n var contains_url_filter = this.filter_json.contains_url;\n if (contains_url_filter !== undefined) {\n if (contains_url_filter !== contains_url) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * Filters a list of events down to those which match this filter component\n * @param {MatrixEvent[]} events Events to be checked againt the filter component\n * @return {MatrixEvent[]} events which matched the filter component\n */\nFilterComponent.prototype.filter = function (events) {\n return events.filter(this.check, this);\n};\n\n/**\n * Returns the limit field for a given filter component, providing a default of\n * 10 if none is otherwise specified. Cargo-culted from Synapse.\n * @return {Number} the limit for this filter component.\n */\nFilterComponent.prototype.limit = function () {\n return this.filter_json.limit !== undefined ? this.filter_json.limit : 10;\n};\n\n/** The FilterComponent class */\nmodule.exports = FilterComponent;\n//# sourceMappingURL=filter-component.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/*\n * TODO:\n * This class mainly serves to take all the syncing logic out of client.js and\n * into a separate file. It's all very fluid, and this class gut wrenches a lot\n * of MatrixClient props (e.g. _http). Given we want to support WebSockets as\n * an alternative syncing API, we may want to have a proper syncing interface\n * for HTTP and WS at some point.\n */\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _errors = require(\"./errors\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar User = require(\"./models/user\");\nvar Room = require(\"./models/room\");\nvar Group = require('./models/group');\nvar utils = require(\"./utils\");\nvar Filter = require(\"./filter\");\nvar EventTimeline = require(\"./models/event-timeline\");\n\nvar DEBUG = true;\n\n// /sync requests allow you to set a timeout= but the request may continue\n// beyond that and wedge forever, so we need to track how long we are willing\n// to keep open the connection. This constant is *ADDED* to the timeout= value\n// to determine the max time we're willing to wait.\nvar BUFFER_PERIOD_MS = 80 * 1000;\n\n// Number of consecutive failed syncs that will lead to a syncState of ERROR as opposed\n// to RECONNECTING. This is needed to inform the client of server issues when the\n// keepAlive is successful but the server /sync fails.\nvar FAILED_SYNC_ERROR_THRESHOLD = 3;\n\nfunction getFilterName(userId, suffix) {\n // scope this on the user ID because people may login on many accounts\n // and they all need to be stored!\n return \"FILTER_SYNC_\" + userId + (suffix ? \"_\" + suffix : \"\");\n}\n\nfunction debuglog() {\n var _console;\n\n if (!DEBUG) {\n return;\n }\n (_console = console).log.apply(_console, arguments);\n}\n\n/**\n * <b>Internal class - unstable.</b>\n * Construct an entity which is able to sync with a homeserver.\n * @constructor\n * @param {MatrixClient} client The matrix client instance to use.\n * @param {Object} opts Config options\n * @param {module:crypto=} opts.crypto Crypto manager\n * @param {Function=} opts.canResetEntireTimeline A function which is called\n * with a room ID and returns a boolean. It should return 'true' if the SDK can\n * SAFELY remove events from this room. It may not be safe to remove events if\n * there are other references to the timelines for this room.\n * Default: returns false.\n * @param {Boolean=} opts.disablePresence True to perform syncing without automatically\n * updating presence.\n */\nfunction SyncApi(client, opts) {\n this.client = client;\n opts = opts || {};\n opts.initialSyncLimit = opts.initialSyncLimit === undefined ? 8 : opts.initialSyncLimit;\n opts.resolveInvitesToProfiles = opts.resolveInvitesToProfiles || false;\n opts.pollTimeout = opts.pollTimeout || 30 * 1000;\n opts.pendingEventOrdering = opts.pendingEventOrdering || \"chronological\";\n if (!opts.canResetEntireTimeline) {\n opts.canResetEntireTimeline = function (roomId) {\n return false;\n };\n }\n this.opts = opts;\n this._peekRoomId = null;\n this._currentSyncRequest = null;\n this._syncState = null;\n this._syncStateData = null; // additional data (eg. error object for failed sync)\n this._catchingUp = false;\n this._running = false;\n this._keepAliveTimer = null;\n this._connectionReturnedDefer = null;\n this._notifEvents = []; // accumulator of sync events in the current sync response\n this._failedSyncCount = 0; // Number of consecutive failed /sync requests\n this._storeIsInvalid = false; // flag set if the store needs to be cleared before we can start\n\n if (client.getNotifTimelineSet()) {\n client.reEmitter.reEmit(client.getNotifTimelineSet(), [\"Room.timeline\", \"Room.timelineReset\"]);\n }\n}\n\n/**\n * @param {string} roomId\n * @return {Room}\n */\nSyncApi.prototype.createRoom = function (roomId) {\n var client = this.client;\n var room = new Room(roomId, client, client.getUserId(), {\n lazyLoadMembers: this.opts.lazyLoadMembers,\n pendingEventOrdering: this.opts.pendingEventOrdering,\n timelineSupport: client.timelineSupport\n });\n client.reEmitter.reEmit(room, [\"Room.name\", \"Room.timeline\", \"Room.redaction\", \"Room.receipt\", \"Room.tags\", \"Room.timelineReset\", \"Room.localEchoUpdated\", \"Room.accountData\", \"Room.myMembership\"]);\n this._registerStateListeners(room);\n return room;\n};\n\n/**\n * @param {string} groupId\n * @return {Group}\n */\nSyncApi.prototype.createGroup = function (groupId) {\n var client = this.client;\n var group = new Group(groupId);\n client.reEmitter.reEmit(group, [\"Group.profile\", \"Group.myMembership\"]);\n client.store.storeGroup(group);\n return group;\n};\n\n/**\n * @param {Room} room\n * @private\n */\nSyncApi.prototype._registerStateListeners = function (room) {\n var client = this.client;\n // we need to also re-emit room state and room member events, so hook it up\n // to the client now. We need to add a listener for RoomState.members in\n // order to hook them correctly. (TODO: find a better way?)\n client.reEmitter.reEmit(room.currentState, [\"RoomState.events\", \"RoomState.members\", \"RoomState.newMember\"]);\n room.currentState.on(\"RoomState.newMember\", function (event, state, member) {\n member.user = client.getUser(member.userId);\n client.reEmitter.reEmit(member, [\"RoomMember.name\", \"RoomMember.typing\", \"RoomMember.powerLevel\", \"RoomMember.membership\"]);\n });\n};\n\n/**\n * @param {Room} room\n * @private\n */\nSyncApi.prototype._deregisterStateListeners = function (room) {\n // could do with a better way of achieving this.\n room.currentState.removeAllListeners(\"RoomState.events\");\n room.currentState.removeAllListeners(\"RoomState.members\");\n room.currentState.removeAllListeners(\"RoomState.newMember\");\n};\n\n/**\n * Sync rooms the user has left.\n * @return {Promise} Resolved when they've been added to the store.\n */\nSyncApi.prototype.syncLeftRooms = function () {\n var client = this.client;\n var self = this;\n\n // grab a filter with limit=1 and include_leave=true\n var filter = new Filter(this.client.credentials.userId);\n filter.setTimelineLimit(1);\n filter.setIncludeLeaveRooms(true);\n\n var localTimeoutMs = this.opts.pollTimeout + BUFFER_PERIOD_MS;\n var qps = {\n timeout: 0 // don't want to block since this is a single isolated req\n };\n\n return client.getOrCreateFilter(getFilterName(client.credentials.userId, \"LEFT_ROOMS\"), filter).then(function (filterId) {\n qps.filter = filterId;\n return client._http.authedRequest(undefined, \"GET\", \"/sync\", qps, undefined, localTimeoutMs);\n }).then(function (data) {\n var leaveRooms = [];\n if (data.rooms && data.rooms.leave) {\n leaveRooms = self._mapSyncResponseToRoomArray(data.rooms.leave);\n }\n var rooms = [];\n leaveRooms.forEach(function (leaveObj) {\n var room = leaveObj.room;\n rooms.push(room);\n if (!leaveObj.isBrandNewRoom) {\n // the intention behind syncLeftRooms is to add in rooms which were\n // *omitted* from the initial /sync. Rooms the user were joined to\n // but then left whilst the app is running will appear in this list\n // and we do not want to bother with them since they will have the\n // current state already (and may get dupe messages if we add\n // yet more timeline events!), so skip them.\n // NB: When we persist rooms to localStorage this will be more\n // complicated...\n return;\n }\n leaveObj.timeline = leaveObj.timeline || {};\n var timelineEvents = self._mapSyncEventsFormat(leaveObj.timeline, room);\n var stateEvents = self._mapSyncEventsFormat(leaveObj.state, room);\n\n // set the back-pagination token. Do this *before* adding any\n // events so that clients can start back-paginating.\n room.getLiveTimeline().setPaginationToken(leaveObj.timeline.prev_batch, EventTimeline.BACKWARDS);\n\n self._processRoomEvents(room, stateEvents, timelineEvents);\n\n room.recalculate();\n client.store.storeRoom(room);\n client.emit(\"Room\", room);\n\n self._processEventsForNotifs(room, timelineEvents);\n });\n return rooms;\n });\n};\n\n/**\n * Peek into a room. This will result in the room in question being synced so it\n * is accessible via getRooms(). Live updates for the room will be provided.\n * @param {string} roomId The room ID to peek into.\n * @return {Promise} A promise which resolves once the room has been added to the\n * store.\n */\nSyncApi.prototype.peek = function (roomId) {\n var self = this;\n var client = this.client;\n this._peekRoomId = roomId;\n return this.client.roomInitialSync(roomId, 20).then(function (response) {\n // make sure things are init'd\n response.messages = response.messages || {};\n response.messages.chunk = response.messages.chunk || [];\n response.state = response.state || [];\n\n var peekRoom = self.createRoom(roomId);\n\n // FIXME: Mostly duplicated from _processRoomEvents but not entirely\n // because \"state\" in this API is at the BEGINNING of the chunk\n var oldStateEvents = utils.map(utils.deepCopy(response.state), client.getEventMapper());\n var stateEvents = utils.map(response.state, client.getEventMapper());\n var messages = utils.map(response.messages.chunk, client.getEventMapper());\n\n // XXX: copypasted from /sync until we kill off this\n // minging v1 API stuff)\n // handle presence events (User objects)\n if (response.presence && utils.isArray(response.presence)) {\n response.presence.map(client.getEventMapper()).forEach(function (presenceEvent) {\n var user = client.store.getUser(presenceEvent.getContent().user_id);\n if (user) {\n user.setPresenceEvent(presenceEvent);\n } else {\n user = createNewUser(client, presenceEvent.getContent().user_id);\n user.setPresenceEvent(presenceEvent);\n client.store.storeUser(user);\n }\n client.emit(\"event\", presenceEvent);\n });\n }\n\n // set the pagination token before adding the events in case people\n // fire off pagination requests in response to the Room.timeline\n // events.\n if (response.messages.start) {\n peekRoom.oldState.paginationToken = response.messages.start;\n }\n\n // set the state of the room to as it was after the timeline executes\n peekRoom.oldState.setStateEvents(oldStateEvents);\n peekRoom.currentState.setStateEvents(stateEvents);\n\n self._resolveInvites(peekRoom);\n peekRoom.recalculate();\n\n // roll backwards to diverge old state. addEventsToTimeline\n // will overwrite the pagination token, so make sure it overwrites\n // it with the right thing.\n peekRoom.addEventsToTimeline(messages.reverse(), true, peekRoom.getLiveTimeline(), response.messages.start);\n\n client.store.storeRoom(peekRoom);\n client.emit(\"Room\", peekRoom);\n\n self._peekPoll(peekRoom);\n return peekRoom;\n });\n};\n\n/**\n * Stop polling for updates in the peeked room. NOPs if there is no room being\n * peeked.\n */\nSyncApi.prototype.stopPeeking = function () {\n this._peekRoomId = null;\n};\n\n/**\n * Do a peek room poll.\n * @param {Room} peekRoom\n * @param {string} token from= token\n */\nSyncApi.prototype._peekPoll = function (peekRoom, token) {\n if (this._peekRoomId !== peekRoom.roomId) {\n debuglog(\"Stopped peeking in room %s\", peekRoom.roomId);\n return;\n }\n\n var self = this;\n // FIXME: gut wrenching; hard-coded timeout values\n this.client._http.authedRequest(undefined, \"GET\", \"/events\", {\n room_id: peekRoom.roomId,\n timeout: 30 * 1000,\n from: token\n }, undefined, 50 * 1000).done(function (res) {\n if (self._peekRoomId !== peekRoom.roomId) {\n debuglog(\"Stopped peeking in room %s\", peekRoom.roomId);\n return;\n }\n // We have a problem that we get presence both from /events and /sync\n // however, /sync only returns presence for users in rooms\n // you're actually joined to.\n // in order to be sure to get presence for all of the users in the\n // peeked room, we handle presence explicitly here. This may result\n // in duplicate presence events firing for some users, which is a\n // performance drain, but such is life.\n // XXX: copypasted from /sync until we can kill this minging v1 stuff.\n\n res.chunk.filter(function (e) {\n return e.type === \"m.presence\";\n }).map(self.client.getEventMapper()).forEach(function (presenceEvent) {\n var user = self.client.store.getUser(presenceEvent.getContent().user_id);\n if (user) {\n user.setPresenceEvent(presenceEvent);\n } else {\n user = createNewUser(self.client, presenceEvent.getContent().user_id);\n user.setPresenceEvent(presenceEvent);\n self.client.store.storeUser(user);\n }\n self.client.emit(\"event\", presenceEvent);\n });\n\n // strip out events which aren't for the given room_id (e.g presence)\n var events = res.chunk.filter(function (e) {\n return e.room_id === peekRoom.roomId;\n }).map(self.client.getEventMapper());\n\n peekRoom.addLiveEvents(events);\n self._peekPoll(peekRoom, res.end);\n }, function (err) {\n console.error(\"[%s] Peek poll failed: %s\", peekRoom.roomId, err);\n setTimeout(function () {\n self._peekPoll(peekRoom, token);\n }, 30 * 1000);\n });\n};\n\n/**\n * Returns the current state of this sync object\n * @see module:client~MatrixClient#event:\"sync\"\n * @return {?String}\n */\nSyncApi.prototype.getSyncState = function () {\n return this._syncState;\n};\n\n/**\n * Returns the additional data object associated with\n * the current sync state, or null if there is no\n * such data.\n * Sync errors, if available, are put in the 'error' key of\n * this object.\n * @return {?Object}\n */\nSyncApi.prototype.getSyncStateData = function () {\n return this._syncStateData;\n};\n\nSyncApi.prototype.recoverFromSyncStartupError = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(savedSyncPromise, err) {\n var keepaliveProm;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(savedSyncPromise);\n\n case 2:\n keepaliveProm = this._startKeepAlives();\n\n this._updateSyncState(\"ERROR\", { error: err });\n _context.next = 6;\n return (0, _bluebird.resolve)(keepaliveProm);\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Is the lazy loading option different than in previous session?\n * @param {bool} lazyLoadMembers current options for lazy loading\n * @return {bool} whether or not the option has changed compared to the previous session */\nSyncApi.prototype._wasLazyLoadingToggled = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(lazyLoadMembers) {\n var lazyLoadMembersBefore, isStoreNewlyCreated, prevClientOptions;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n lazyLoadMembers = !!lazyLoadMembers;\n // assume it was turned off before\n // if we don't know any better\n lazyLoadMembersBefore = false;\n _context2.next = 4;\n return (0, _bluebird.resolve)(this.client.store.isNewlyCreated());\n\n case 4:\n isStoreNewlyCreated = _context2.sent;\n\n if (isStoreNewlyCreated) {\n _context2.next = 11;\n break;\n }\n\n _context2.next = 8;\n return (0, _bluebird.resolve)(this.client.store.getClientOptions());\n\n case 8:\n prevClientOptions = _context2.sent;\n\n if (prevClientOptions) {\n lazyLoadMembersBefore = !!prevClientOptions.lazyLoadMembers;\n }\n return _context2.abrupt(\"return\", lazyLoadMembersBefore !== lazyLoadMembers);\n\n case 11:\n return _context2.abrupt(\"return\", false);\n\n case 12:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function (_x3) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * Main entry point\n */\nSyncApi.prototype.sync = function () {\n var _this = this;\n\n // We need to do one-off checks before we can begin the /sync loop.\n // These are:\n // 1) We need to get push rules so we can check if events should bing as we get\n // them from /sync.\n // 2) We need to get/create a filter which we can use for /sync.\n // 3) We need to check the lazy loading option matches what was used in the\n // stored sync. If it doesn't, we can't use the stored sync.\n\n var getPushRules = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var result;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n _context3.next = 3;\n return (0, _bluebird.resolve)(client.getPushRules());\n\n case 3:\n result = _context3.sent;\n\n debuglog(\"Got push rules\");\n\n client.pushRules = result;\n _context3.next = 14;\n break;\n\n case 8:\n _context3.prev = 8;\n _context3.t0 = _context3[\"catch\"](0);\n _context3.next = 12;\n return (0, _bluebird.resolve)(self.recoverFromSyncStartupError(savedSyncPromise, _context3.t0));\n\n case 12:\n getPushRules();\n return _context3.abrupt(\"return\");\n\n case 14:\n checkLazyLoadStatus(); // advance to the next stage\n\n case 15:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[0, 8]]);\n }));\n\n return function getPushRules() {\n return _ref3.apply(this, arguments);\n };\n }();\n\n var getFilter = function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {\n var filter, filterId;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n filter = void 0;\n\n if (self.opts.filter) {\n filter = self.opts.filter;\n } else {\n filter = new Filter(client.credentials.userId);\n filter.setTimelineLimit(self.opts.initialSyncLimit);\n }\n\n filterId = void 0;\n _context5.prev = 3;\n _context5.next = 6;\n return (0, _bluebird.resolve)(client.getOrCreateFilter(getFilterName(client.credentials.userId), filter));\n\n case 6:\n filterId = _context5.sent;\n _context5.next = 15;\n break;\n\n case 9:\n _context5.prev = 9;\n _context5.t0 = _context5[\"catch\"](3);\n _context5.next = 13;\n return (0, _bluebird.resolve)(self.recoverFromSyncStartupError(savedSyncPromise, _context5.t0));\n\n case 13:\n getFilter();\n return _context5.abrupt(\"return\");\n\n case 15:\n // reset the notifications timeline to prepare it to paginate from\n // the current point in time.\n // The right solution would be to tie /sync pagination tokens into\n // /notifications API somehow.\n client.resetNotifTimelineSet();\n\n if (self._currentSyncRequest === null) {\n // Send this first sync request here so we can then wait for the saved\n // sync data to finish processing before we process the results of this one.\n console.log(\"Sending first sync request...\");\n self._currentSyncRequest = self._doSyncRequest({ filterId: filterId }, savedSyncToken);\n }\n\n // Now wait for the saved sync to finish...\n _context5.next = 19;\n return (0, _bluebird.resolve)(savedSyncPromise);\n\n case 19:\n self._sync({ filterId: filterId });\n\n case 20:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this, [[3, 9]]);\n }));\n\n return function getFilter() {\n return _ref5.apply(this, arguments);\n };\n }();\n\n var client = this.client;\n var self = this;\n\n this._running = true;\n\n if (global.document) {\n this._onOnlineBound = this._onOnline.bind(this);\n global.document.addEventListener(\"online\", this._onOnlineBound, false);\n }\n\n var savedSyncPromise = _bluebird2.default.resolve();\n var savedSyncToken = null;\n\n var checkLazyLoadStatus = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n var supported, shouldClear, reason, error;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (_this.opts.lazyLoadMembers && client.isGuest()) {\n _this.opts.lazyLoadMembers = false;\n }\n\n if (!_this.opts.lazyLoadMembers) {\n _context4.next = 13;\n break;\n }\n\n _context4.next = 4;\n return (0, _bluebird.resolve)(client.doesServerSupportLazyLoading());\n\n case 4:\n supported = _context4.sent;\n\n if (!supported) {\n _context4.next = 11;\n break;\n }\n\n _context4.next = 8;\n return (0, _bluebird.resolve)(client.createFilter(Filter.LAZY_LOADING_SYNC_FILTER));\n\n case 8:\n _this.opts.filter = _context4.sent;\n _context4.next = 13;\n break;\n\n case 11:\n console.log(\"LL: lazy loading requested but not supported \" + \"by server, so disabling\");\n _this.opts.lazyLoadMembers = false;\n\n case 13:\n _context4.next = 15;\n return (0, _bluebird.resolve)(_this._wasLazyLoadingToggled(_this.opts.lazyLoadMembers));\n\n case 15:\n shouldClear = _context4.sent;\n\n if (!shouldClear) {\n _context4.next = 23;\n break;\n }\n\n _this._storeIsInvalid = true;\n reason = _errors.InvalidStoreError.TOGGLED_LAZY_LOADING;\n error = new _errors.InvalidStoreError(reason, !!_this.opts.lazyLoadMembers);\n\n _this._updateSyncState(\"ERROR\", { error: error });\n // bail out of the sync loop now: the app needs to respond to this error.\n // we leave the state as 'ERROR' which isn't great since this normally means\n // we're retrying. The client must be stopped before clearing the stores anyway\n // so the app should stop the client, clear the store and start it again.\n console.warn(\"InvalidStoreError: store is not usable: stopping sync.\");\n return _context4.abrupt(\"return\");\n\n case 23:\n if (_this.opts.lazyLoadMembers && _this.opts.crypto) {\n _this.opts.crypto.enableLazyLoading();\n }\n _context4.next = 26;\n return (0, _bluebird.resolve)(_this.client._storeClientOptions());\n\n case 26:\n\n getFilter(); // Now get the filter and start syncing\n\n case 27:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, _this);\n }));\n\n return function checkLazyLoadStatus() {\n return _ref4.apply(this, arguments);\n };\n }();\n\n if (client.isGuest()) {\n // no push rules for guests, no access to POST filter for guests.\n self._sync({});\n } else {\n // Pull the saved sync token out first, before the worker starts sending\n // all the sync data which could take a while. This will let us send our\n // first incremental sync request before we've processed our saved data.\n savedSyncPromise = client.store.getSavedSyncToken().then(function (tok) {\n savedSyncToken = tok;\n return client.store.getSavedSync();\n }).then(function (savedSync) {\n if (savedSync) {\n return self._syncFromCache(savedSync);\n }\n });\n // Now start the first incremental sync request: this can also\n // take a while so if we set it going now, we can wait for it\n // to finish while we process our saved sync data.\n getPushRules();\n }\n};\n\n/**\n * Stops the sync object from syncing.\n */\nSyncApi.prototype.stop = function () {\n debuglog(\"SyncApi.stop\");\n if (global.document) {\n global.document.removeEventListener(\"online\", this._onOnlineBound, false);\n this._onOnlineBound = undefined;\n }\n this._running = false;\n if (this._currentSyncRequest) {\n this._currentSyncRequest.abort();\n }\n if (this._keepAliveTimer) {\n clearTimeout(this._keepAliveTimer);\n this._keepAliveTimer = null;\n }\n};\n\n/**\n * Retry a backed off syncing request immediately. This should only be used when\n * the user <b>explicitly</b> attempts to retry their lost connection.\n * @return {boolean} True if this resulted in a request being retried.\n */\nSyncApi.prototype.retryImmediately = function () {\n if (!this._connectionReturnedDefer) {\n return false;\n }\n this._startKeepAlives(0);\n return true;\n};\n/**\n * Process a single set of cached sync data.\n * @param {Object} savedSync a saved sync that was persisted by a store. This\n * should have been acquired via client.store.getSavedSync().\n */\nSyncApi.prototype._syncFromCache = function () {\n var _ref6 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(savedSync) {\n var nextSyncToken, syncEventData, data;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n debuglog(\"sync(): not doing HTTP hit, instead returning stored /sync data\");\n\n nextSyncToken = savedSync.nextBatch;\n\n // Set sync token for future incremental syncing\n\n this.client.store.setSyncToken(nextSyncToken);\n\n // No previous sync, set old token to null\n syncEventData = {\n oldSyncToken: null,\n nextSyncToken: nextSyncToken,\n catchingUp: false\n };\n data = {\n next_batch: nextSyncToken,\n rooms: savedSync.roomsData,\n groups: savedSync.groupsData,\n account_data: {\n events: savedSync.accountData\n }\n };\n _context6.prev = 5;\n _context6.next = 8;\n return (0, _bluebird.resolve)(this._processSyncResponse(syncEventData, data));\n\n case 8:\n _context6.next = 13;\n break;\n\n case 10:\n _context6.prev = 10;\n _context6.t0 = _context6[\"catch\"](5);\n\n console.error(\"Error processing cached sync\", _context6.t0.stack || _context6.t0);\n\n case 13:\n\n // Don't emit a prepared if we've bailed because the store is invalid:\n // in this case the client will not be usable until stopped & restarted\n // so this would be useless and misleading.\n if (!this._storeIsInvalid) {\n this._updateSyncState(\"PREPARED\", syncEventData);\n }\n\n case 14:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, this, [[5, 10]]);\n }));\n\n return function (_x4) {\n return _ref6.apply(this, arguments);\n };\n}();\n\n/**\n * Invoke me to do /sync calls\n * @param {Object} syncOptions\n * @param {string} syncOptions.filterId\n * @param {boolean} syncOptions.hasSyncedBefore\n */\nSyncApi.prototype._sync = function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(syncOptions) {\n var client, syncToken, data, syncEventData;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n client = this.client;\n\n if (this._running) {\n _context7.next = 6;\n break;\n }\n\n debuglog(\"Sync no longer running: exiting.\");\n if (this._connectionReturnedDefer) {\n this._connectionReturnedDefer.reject();\n this._connectionReturnedDefer = null;\n }\n this._updateSyncState(\"STOPPED\");\n return _context7.abrupt(\"return\");\n\n case 6:\n syncToken = client.store.getSyncToken();\n data = void 0;\n _context7.prev = 8;\n\n //debuglog('Starting sync since=' + syncToken);\n if (this._currentSyncRequest === null) {\n this._currentSyncRequest = this._doSyncRequest(syncOptions, syncToken);\n }\n _context7.next = 12;\n return (0, _bluebird.resolve)(this._currentSyncRequest);\n\n case 12:\n data = _context7.sent;\n _context7.next = 19;\n break;\n\n case 15:\n _context7.prev = 15;\n _context7.t0 = _context7[\"catch\"](8);\n\n this._onSyncError(_context7.t0, syncOptions);\n return _context7.abrupt(\"return\");\n\n case 19:\n _context7.prev = 19;\n\n this._currentSyncRequest = null;\n return _context7.finish(19);\n\n case 22:\n\n //debuglog('Completed sync, next_batch=' + data.next_batch);\n\n // set the sync token NOW *before* processing the events. We do this so\n // if something barfs on an event we can skip it rather than constantly\n // polling with the same token.\n client.store.setSyncToken(data.next_batch);\n\n // Reset after a successful sync\n this._failedSyncCount = 0;\n\n _context7.next = 26;\n return (0, _bluebird.resolve)(client.store.setSyncData(data));\n\n case 26:\n syncEventData = {\n oldSyncToken: syncToken,\n nextSyncToken: data.next_batch,\n catchingUp: this._catchingUp\n };\n\n if (!this.opts.crypto) {\n _context7.next = 30;\n break;\n }\n\n _context7.next = 30;\n return (0, _bluebird.resolve)(this.opts.crypto.onSyncWillProcess(syncEventData));\n\n case 30:\n _context7.prev = 30;\n _context7.next = 33;\n return (0, _bluebird.resolve)(this._processSyncResponse(syncEventData, data));\n\n case 33:\n _context7.next = 38;\n break;\n\n case 35:\n _context7.prev = 35;\n _context7.t1 = _context7[\"catch\"](30);\n\n // log the exception with stack if we have it, else fall back\n // to the plain description\n console.error(\"Caught /sync error\", _context7.t1.stack || _context7.t1);\n\n case 38:\n\n // update this as it may have changed\n syncEventData.catchingUp = this._catchingUp;\n\n // emit synced events\n if (!syncOptions.hasSyncedBefore) {\n this._updateSyncState(\"PREPARED\", syncEventData);\n syncOptions.hasSyncedBefore = true;\n }\n\n // tell the crypto module to do its processing. It may block (to do a\n // /keys/changes request).\n\n if (!this.opts.crypto) {\n _context7.next = 43;\n break;\n }\n\n _context7.next = 43;\n return (0, _bluebird.resolve)(this.opts.crypto.onSyncCompleted(syncEventData));\n\n case 43:\n\n // keep emitting SYNCING -> SYNCING for clients who want to do bulk updates\n this._updateSyncState(\"SYNCING\", syncEventData);\n\n if (!client.store.wantsSave()) {\n _context7.next = 49;\n break;\n }\n\n if (!this.opts.crypto) {\n _context7.next = 48;\n break;\n }\n\n _context7.next = 48;\n return (0, _bluebird.resolve)(this.opts.crypto.saveDeviceList(0));\n\n case 48:\n\n // tell databases that everything is now in a consistent state and can be saved.\n client.store.save();\n\n case 49:\n\n // Begin next sync\n this._sync(syncOptions);\n\n case 50:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7, this, [[8, 15, 19, 22], [30, 35]]);\n }));\n\n return function (_x5) {\n return _ref7.apply(this, arguments);\n };\n}();\n\nSyncApi.prototype._doSyncRequest = function (syncOptions, syncToken) {\n var qps = this._getSyncParams(syncOptions, syncToken);\n return this.client._http.authedRequest(undefined, \"GET\", \"/sync\", qps, undefined, qps.timeout + BUFFER_PERIOD_MS);\n};\n\nSyncApi.prototype._getSyncParams = function (syncOptions, syncToken) {\n var pollTimeout = this.opts.pollTimeout;\n\n if (this.getSyncState() !== 'SYNCING' || this._catchingUp) {\n // unless we are happily syncing already, we want the server to return\n // as quickly as possible, even if there are no events queued. This\n // serves two purposes:\n //\n // * When the connection dies, we want to know asap when it comes back,\n // so that we can hide the error from the user. (We don't want to\n // have to wait for an event or a timeout).\n //\n // * We want to know if the server has any to_device messages queued up\n // for us. We do that by calling it with a zero timeout until it\n // doesn't give us any more to_device messages.\n this._catchingUp = true;\n pollTimeout = 0;\n }\n\n var filterId = syncOptions.filterId;\n if (this.client.isGuest() && !filterId) {\n filterId = this._getGuestFilter();\n }\n\n var qps = {\n filter: filterId,\n timeout: pollTimeout\n };\n\n if (this.opts.disablePresence) {\n qps.set_presence = \"offline\";\n }\n\n if (syncToken) {\n qps.since = syncToken;\n } else {\n // use a cachebuster for initialsyncs, to make sure that\n // we don't get a stale sync\n // (https://github.com/vector-im/vector-web/issues/1354)\n qps._cacheBuster = Date.now();\n }\n\n if (this.getSyncState() == 'ERROR' || this.getSyncState() == 'RECONNECTING') {\n // we think the connection is dead. If it comes back up, we won't know\n // about it till /sync returns. If the timeout= is high, this could\n // be a long time. Set it to 0 when doing retries so we don't have to wait\n // for an event or a timeout before emiting the SYNCING event.\n qps.timeout = 0;\n }\n\n return qps;\n};\n\nSyncApi.prototype._onSyncError = function (err, syncOptions) {\n var _this2 = this;\n\n if (!this._running) {\n debuglog(\"Sync no longer running: exiting\");\n if (this._connectionReturnedDefer) {\n this._connectionReturnedDefer.reject();\n this._connectionReturnedDefer = null;\n }\n this._updateSyncState(\"STOPPED\");\n return;\n }\n\n console.error(\"/sync error %s\", err);\n console.error(err);\n\n this._failedSyncCount++;\n console.log('Number of consecutive failed sync requests:', this._failedSyncCount);\n\n debuglog(\"Starting keep-alive\");\n // Note that we do *not* mark the sync connection as\n // lost yet: we only do this if a keepalive poke\n // fails, since long lived HTTP connections will\n // go away sometimes and we shouldn't treat this as\n // erroneous. We set the state to 'reconnecting'\n // instead, so that clients can observe this state\n // if they wish.\n this._startKeepAlives().then(function (connDidFail) {\n // Only emit CATCHUP if we detected a connectivity error: if we didn't,\n // it's quite likely the sync will fail again for the same reason and we\n // want to stay in ERROR rather than keep flip-flopping between ERROR\n // and CATCHUP.\n if (connDidFail && _this2.getSyncState() === 'ERROR') {\n _this2._updateSyncState(\"CATCHUP\", {\n oldSyncToken: null,\n nextSyncToken: null,\n catchingUp: true\n });\n }\n _this2._sync(syncOptions);\n });\n\n this._currentSyncRequest = null;\n // Transition from RECONNECTING to ERROR after a given number of failed syncs\n this._updateSyncState(this._failedSyncCount >= FAILED_SYNC_ERROR_THRESHOLD ? \"ERROR\" : \"RECONNECTING\", { error: err });\n};\n\n/**\n * Process data returned from a sync response and propagate it\n * into the model objects\n *\n * @param {Object} syncEventData Object containing sync tokens associated with this sync\n * @param {Object} data The response from /sync\n */\nSyncApi.prototype._processSyncResponse = function () {\n var _ref8 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(syncEventData, data) {\n var client, self, events, inviteRooms, joinRooms, leaveRooms, currentCount;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n client = this.client;\n self = this;\n\n // data looks like:\n // {\n // next_batch: $token,\n // presence: { events: [] },\n // account_data: { events: [] },\n // device_lists: { changed: [\"@user:server\", ... ]},\n // to_device: { events: [] },\n // device_one_time_keys_count: { signed_curve25519: 42 },\n // rooms: {\n // invite: {\n // $roomid: {\n // invite_state: { events: [] }\n // }\n // },\n // join: {\n // $roomid: {\n // state: { events: [] },\n // timeline: { events: [], prev_batch: $token, limited: true },\n // ephemeral: { events: [] },\n // summary: {\n // m.heroes: [ $user_id ],\n // m.joined_member_count: $count,\n // m.invited_member_count: $count\n // },\n // account_data: { events: [] },\n // unread_notifications: {\n // highlight_count: 0,\n // notification_count: 0,\n // }\n // }\n // },\n // leave: {\n // $roomid: {\n // state: { events: [] },\n // timeline: { events: [], prev_batch: $token }\n // }\n // }\n // },\n // groups: {\n // invite: {\n // $groupId: {\n // inviter: $inviter,\n // profile: {\n // avatar_url: $avatarUrl,\n // name: $groupName,\n // },\n // },\n // },\n // join: {},\n // leave: {},\n // },\n // }\n\n // TODO-arch:\n // - Each event we pass through needs to be emitted via 'event', can we\n // do this in one place?\n // - The isBrandNewRoom boilerplate is boilerplatey.\n\n // handle presence events (User objects)\n\n if (data.presence && utils.isArray(data.presence.events)) {\n data.presence.events.map(client.getEventMapper()).forEach(function (presenceEvent) {\n var user = client.store.getUser(presenceEvent.getSender());\n if (user) {\n user.setPresenceEvent(presenceEvent);\n } else {\n user = createNewUser(client, presenceEvent.getSender());\n user.setPresenceEvent(presenceEvent);\n client.store.storeUser(user);\n }\n client.emit(\"event\", presenceEvent);\n });\n }\n\n // handle non-room account_data\n if (data.account_data && utils.isArray(data.account_data.events)) {\n events = data.account_data.events.map(client.getEventMapper());\n\n client.store.storeAccountDataEvents(events);\n events.forEach(function (accountDataEvent) {\n // Honour push rules that come down the sync stream but also\n // honour push rules that were previously cached. Base rules\n // will be updated when we recieve push rules via getPushRules\n // (see SyncApi.prototype.sync) before syncing over the network.\n if (accountDataEvent.getType() == 'm.push_rules') {\n client.pushRules = accountDataEvent.getContent();\n }\n client.emit(\"accountData\", accountDataEvent);\n return accountDataEvent;\n });\n }\n\n // handle to-device events\n if (data.to_device && utils.isArray(data.to_device.events) && data.to_device.events.length > 0) {\n data.to_device.events.map(client.getEventMapper()).forEach(function (toDeviceEvent) {\n var content = toDeviceEvent.getContent();\n if (toDeviceEvent.getType() == \"m.room.message\" && content.msgtype == \"m.bad.encrypted\") {\n // the mapper already logged a warning.\n console.log('Ignoring undecryptable to-device event from ' + toDeviceEvent.getSender());\n return;\n }\n\n client.emit(\"toDeviceEvent\", toDeviceEvent);\n });\n } else {\n // no more to-device events: we can stop polling with a short timeout.\n this._catchingUp = false;\n }\n\n if (data.groups) {\n if (data.groups.invite) {\n this._processGroupSyncEntry(data.groups.invite, 'invite');\n }\n\n if (data.groups.join) {\n this._processGroupSyncEntry(data.groups.join, 'join');\n }\n\n if (data.groups.leave) {\n this._processGroupSyncEntry(data.groups.leave, 'leave');\n }\n }\n\n // the returned json structure is a bit crap, so make it into a\n // nicer form (array) after applying sanity to make sure we don't fail\n // on missing keys (on the off chance)\n inviteRooms = [];\n joinRooms = [];\n leaveRooms = [];\n\n\n if (data.rooms) {\n if (data.rooms.invite) {\n inviteRooms = this._mapSyncResponseToRoomArray(data.rooms.invite);\n }\n if (data.rooms.join) {\n joinRooms = this._mapSyncResponseToRoomArray(data.rooms.join);\n }\n if (data.rooms.leave) {\n leaveRooms = this._mapSyncResponseToRoomArray(data.rooms.leave);\n }\n }\n\n this._notifEvents = [];\n\n // Handle invites\n inviteRooms.forEach(function (inviteObj) {\n var room = inviteObj.room;\n var stateEvents = self._mapSyncEventsFormat(inviteObj.invite_state, room);\n\n room.updateMyMembership(\"invite\");\n self._processRoomEvents(room, stateEvents);\n if (inviteObj.isBrandNewRoom) {\n room.recalculate();\n client.store.storeRoom(room);\n client.emit(\"Room\", room);\n }\n stateEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n });\n\n // Handle joins\n _context10.next = 14;\n return (0, _bluebird.resolve)(_bluebird2.default.mapSeries(joinRooms, function () {\n var _ref9 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(joinObj) {\n var processRoomEvent = function () {\n var _ref10 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(e) {\n var user;\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n client.emit(\"event\", e);\n\n if (!(e.isState() && e.getType() == \"m.room.encryption\" && self.opts.crypto)) {\n _context8.next = 4;\n break;\n }\n\n _context8.next = 4;\n return (0, _bluebird.resolve)(self.opts.crypto.onCryptoEvent(e));\n\n case 4:\n if (e.isState() && e.getType() === \"im.vector.user_status\") {\n user = client.store.getUser(e.getStateKey());\n\n if (user) {\n user._unstable_updateStatusMessage(e);\n } else {\n user = createNewUser(client, e.getStateKey());\n user._unstable_updateStatusMessage(e);\n client.store.storeUser(user);\n }\n }\n\n case 5:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n return function processRoomEvent(_x9) {\n return _ref10.apply(this, arguments);\n };\n }();\n\n var room, stateEvents, timelineEvents, ephemeralEvents, accountDataEvents, limited, i, eventId;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n room = joinObj.room;\n stateEvents = self._mapSyncEventsFormat(joinObj.state, room);\n timelineEvents = self._mapSyncEventsFormat(joinObj.timeline, room);\n ephemeralEvents = self._mapSyncEventsFormat(joinObj.ephemeral);\n accountDataEvents = self._mapSyncEventsFormat(joinObj.account_data);\n\n // we do this first so it's correct when any of the events fire\n\n if (joinObj.unread_notifications) {\n room.setUnreadNotificationCount('total', joinObj.unread_notifications.notification_count);\n room.setUnreadNotificationCount('highlight', joinObj.unread_notifications.highlight_count);\n }\n\n room.updateMyMembership(\"join\");\n\n joinObj.timeline = joinObj.timeline || {};\n\n if (!joinObj.isBrandNewRoom) {\n _context9.next = 12;\n break;\n }\n\n // set the back-pagination token. Do this *before* adding any\n // events so that clients can start back-paginating.\n room.getLiveTimeline().setPaginationToken(joinObj.timeline.prev_batch, EventTimeline.BACKWARDS);\n _context9.next = 26;\n break;\n\n case 12:\n if (!joinObj.timeline.limited) {\n _context9.next = 26;\n break;\n }\n\n limited = true;\n\n // we've got a limited sync, so we *probably* have a gap in the\n // timeline, so should reset. But we might have been peeking or\n // paginating and already have some of the events, in which\n // case we just want to append any subsequent events to the end\n // of the existing timeline.\n //\n // This is particularly important in the case that we already have\n // *all* of the events in the timeline - in that case, if we reset\n // the timeline, we'll end up with an entirely empty timeline,\n // which we'll try to paginate but not get any new events (which\n // will stop us linking the empty timeline into the chain).\n //\n\n i = timelineEvents.length - 1;\n\n case 15:\n if (!(i >= 0)) {\n _context9.next = 25;\n break;\n }\n\n eventId = timelineEvents[i].getId();\n\n if (!room.getTimelineForEvent(eventId)) {\n _context9.next = 22;\n break;\n }\n\n debuglog(\"Already have event \" + eventId + \" in limited \" + \"sync - not resetting\");\n limited = false;\n\n // we might still be missing some of the events before i;\n // we don't want to be adding them to the end of the\n // timeline because that would put them out of order.\n timelineEvents.splice(0, i);\n\n // XXX: there's a problem here if the skipped part of the\n // timeline modifies the state set in stateEvents, because\n // we'll end up using the state from stateEvents rather\n // than the later state from timelineEvents. We probably\n // need to wind stateEvents forward over the events we're\n // skipping.\n\n return _context9.abrupt(\"break\", 25);\n\n case 22:\n i--;\n _context9.next = 15;\n break;\n\n case 25:\n\n if (limited) {\n self._deregisterStateListeners(room);\n room.resetLiveTimeline(joinObj.timeline.prev_batch, self.opts.canResetEntireTimeline(room.roomId) ? null : syncEventData.oldSyncToken);\n\n // We have to assume any gap in any timeline is\n // reason to stop incrementally tracking notifications and\n // reset the timeline.\n client.resetNotifTimelineSet();\n\n self._registerStateListeners(room);\n }\n\n case 26:\n\n self._processRoomEvents(room, stateEvents, timelineEvents);\n\n // set summary after processing events,\n // because it will trigger a name calculation\n // which needs the room state to be up to date\n if (joinObj.summary) {\n room.setSummary(joinObj.summary);\n }\n\n // XXX: should we be adding ephemeralEvents to the timeline?\n // It feels like that for symmetry with room.addAccountData()\n // there should be a room.addEphemeralEvents() or similar.\n room.addLiveEvents(ephemeralEvents);\n\n // we deliberately don't add accountData to the timeline\n room.addAccountData(accountDataEvents);\n\n room.recalculate();\n if (joinObj.isBrandNewRoom) {\n client.store.storeRoom(room);\n client.emit(\"Room\", room);\n }\n\n self._processEventsForNotifs(room, timelineEvents);\n\n _context9.next = 35;\n return (0, _bluebird.resolve)(_bluebird2.default.mapSeries(stateEvents, processRoomEvent));\n\n case 35:\n _context9.next = 37;\n return (0, _bluebird.resolve)(_bluebird2.default.mapSeries(timelineEvents, processRoomEvent));\n\n case 37:\n ephemeralEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n accountDataEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n\n case 39:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n return function (_x8) {\n return _ref9.apply(this, arguments);\n };\n }()));\n\n case 14:\n\n // Handle leaves (e.g. kicked rooms)\n leaveRooms.forEach(function (leaveObj) {\n var room = leaveObj.room;\n var stateEvents = self._mapSyncEventsFormat(leaveObj.state, room);\n var timelineEvents = self._mapSyncEventsFormat(leaveObj.timeline, room);\n var accountDataEvents = self._mapSyncEventsFormat(leaveObj.account_data);\n\n room.updateMyMembership(\"leave\");\n\n self._processRoomEvents(room, stateEvents, timelineEvents);\n room.addAccountData(accountDataEvents);\n\n room.recalculate();\n if (leaveObj.isBrandNewRoom) {\n client.store.storeRoom(room);\n client.emit(\"Room\", room);\n }\n\n self._processEventsForNotifs(room, timelineEvents);\n\n stateEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n timelineEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n accountDataEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n });\n\n // update the notification timeline, if appropriate.\n // we only do this for live events, as otherwise we can't order them sanely\n // in the timeline relative to ones paginated in by /notifications.\n // XXX: we could fix this by making EventTimeline support chronological\n // ordering... but it doesn't, right now.\n if (syncEventData.oldSyncToken && this._notifEvents.length) {\n this._notifEvents.sort(function (a, b) {\n return a.getTs() - b.getTs();\n });\n this._notifEvents.forEach(function (event) {\n client.getNotifTimelineSet().addLiveEvent(event);\n });\n }\n\n // Handle device list updates\n\n if (!data.device_lists) {\n _context10.next = 22;\n break;\n }\n\n if (!this.opts.crypto) {\n _context10.next = 22;\n break;\n }\n\n _context10.next = 20;\n return (0, _bluebird.resolve)(this.opts.crypto.handleDeviceListChanges(syncEventData, data.device_lists));\n\n case 20:\n _context10.next = 22;\n break;\n\n case 22:\n\n // Handle one_time_keys_count\n if (this.opts.crypto && data.device_one_time_keys_count) {\n currentCount = data.device_one_time_keys_count.signed_curve25519 || 0;\n\n this.opts.crypto.updateOneTimeKeyCount(currentCount);\n }\n\n case 23:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n return function (_x6, _x7) {\n return _ref8.apply(this, arguments);\n };\n}();\n\n/**\n * Starts polling the connectivity check endpoint\n * @param {number} delay How long to delay until the first poll.\n * defaults to a short, randomised interval (to prevent\n * tightlooping if /versions succeeds but /sync etc. fail).\n * @return {promise} which resolves once the connection returns\n */\nSyncApi.prototype._startKeepAlives = function (delay) {\n if (delay === undefined) {\n delay = 2000 + Math.floor(Math.random() * 5000);\n }\n\n if (this._keepAliveTimer !== null) {\n clearTimeout(this._keepAliveTimer);\n }\n var self = this;\n if (delay > 0) {\n self._keepAliveTimer = setTimeout(self._pokeKeepAlive.bind(self), delay);\n } else {\n self._pokeKeepAlive();\n }\n if (!this._connectionReturnedDefer) {\n this._connectionReturnedDefer = _bluebird2.default.defer();\n }\n return this._connectionReturnedDefer.promise;\n};\n\n/**\n * Make a dummy call to /_matrix/client/versions, to see if the HS is\n * reachable.\n *\n * On failure, schedules a call back to itself. On success, resolves\n * this._connectionReturnedDefer.\n *\n * @param {bool} connDidFail True if a connectivity failure has been detected. Optional.\n */\nSyncApi.prototype._pokeKeepAlive = function (connDidFail) {\n if (connDidFail === undefined) connDidFail = false;\n var self = this;\n function success() {\n clearTimeout(self._keepAliveTimer);\n if (self._connectionReturnedDefer) {\n self._connectionReturnedDefer.resolve(connDidFail);\n self._connectionReturnedDefer = null;\n }\n }\n\n this.client._http.request(undefined, // callback\n \"GET\", \"/_matrix/client/versions\", undefined, // queryParams\n undefined, // data\n {\n prefix: '',\n localTimeoutMs: 15 * 1000\n }).done(function () {\n success();\n }, function (err) {\n if (err.httpStatus == 400 || err.httpStatus == 404) {\n // treat this as a success because the server probably just doesn't\n // support /versions: point is, we're getting a response.\n // We wait a short time though, just in case somehow the server\n // is in a mode where it 400s /versions responses and sync etc.\n // responses fail, this will mean we don't hammer in a loop.\n self._keepAliveTimer = setTimeout(success, 2000);\n } else {\n connDidFail = true;\n self._keepAliveTimer = setTimeout(self._pokeKeepAlive.bind(self, connDidFail), 5000 + Math.floor(Math.random() * 5000));\n // A keepalive has failed, so we emit the\n // error state (whether or not this is the\n // first failure).\n // Note we do this after setting the timer:\n // this lets the unit tests advance the mock\n // clock when they get the error.\n self._updateSyncState(\"ERROR\", { error: err });\n }\n });\n};\n\n/**\n * @param {Object} groupsSection Groups section object, eg. response.groups.invite\n * @param {string} sectionName Which section this is ('invite', 'join' or 'leave')\n */\nSyncApi.prototype._processGroupSyncEntry = function (groupsSection, sectionName) {\n // Processes entries from 'groups' section of the sync stream\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(groupsSection)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var groupId = _step.value;\n\n var groupInfo = groupsSection[groupId];\n var group = this.client.store.getGroup(groupId);\n var isBrandNew = group === null;\n if (group === null) {\n group = this.createGroup(groupId);\n }\n if (groupInfo.profile) {\n group.setProfile(groupInfo.profile.name, groupInfo.profile.avatar_url);\n }\n if (groupInfo.inviter) {\n group.setInviter({ userId: groupInfo.inviter });\n }\n group.setMyMembership(sectionName);\n if (isBrandNew) {\n // Now we've filled in all the fields, emit the Group event\n this.client.emit(\"Group\", group);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n};\n\n/**\n * @param {Object} obj\n * @return {Object[]}\n */\nSyncApi.prototype._mapSyncResponseToRoomArray = function (obj) {\n // Maps { roomid: {stuff}, roomid: {stuff} }\n // to\n // [{stuff+Room+isBrandNewRoom}, {stuff+Room+isBrandNewRoom}]\n var client = this.client;\n var self = this;\n return utils.keys(obj).map(function (roomId) {\n var arrObj = obj[roomId];\n var room = client.store.getRoom(roomId);\n var isBrandNewRoom = false;\n if (!room) {\n room = self.createRoom(roomId);\n isBrandNewRoom = true;\n }\n arrObj.room = room;\n arrObj.isBrandNewRoom = isBrandNewRoom;\n return arrObj;\n });\n};\n\n/**\n * @param {Object} obj\n * @param {Room} room\n * @return {MatrixEvent[]}\n */\nSyncApi.prototype._mapSyncEventsFormat = function (obj, room) {\n if (!obj || !utils.isArray(obj.events)) {\n return [];\n }\n var mapper = this.client.getEventMapper();\n return obj.events.map(function (e) {\n if (room) {\n e.room_id = room.roomId;\n }\n return mapper(e);\n });\n};\n\n/**\n * @param {Room} room\n */\nSyncApi.prototype._resolveInvites = function (room) {\n if (!room || !this.opts.resolveInvitesToProfiles) {\n return;\n }\n var client = this.client;\n // For each invited room member we want to give them a displayname/avatar url\n // if they have one (the m.room.member invites don't contain this).\n room.getMembersWithMembership(\"invite\").forEach(function (member) {\n if (member._requestedProfileInfo) {\n return;\n }\n member._requestedProfileInfo = true;\n // try to get a cached copy first.\n var user = client.getUser(member.userId);\n var promise = void 0;\n if (user) {\n promise = _bluebird2.default.resolve({\n avatar_url: user.avatarUrl,\n displayname: user.displayName\n });\n } else {\n promise = client.getProfileInfo(member.userId);\n }\n promise.done(function (info) {\n // slightly naughty by doctoring the invite event but this means all\n // the code paths remain the same between invite/join display name stuff\n // which is a worthy trade-off for some minor pollution.\n var inviteEvent = member.events.member;\n if (inviteEvent.getContent().membership !== \"invite\") {\n // between resolving and now they have since joined, so don't clobber\n return;\n }\n inviteEvent.getContent().avatar_url = info.avatar_url;\n inviteEvent.getContent().displayname = info.displayname;\n // fire listeners\n member.setMembershipEvent(inviteEvent, room.currentState);\n }, function (err) {\n // OH WELL.\n });\n });\n};\n\n/**\n * @param {Room} room\n * @param {MatrixEvent[]} stateEventList A list of state events. This is the state\n * at the *START* of the timeline list if it is supplied.\n * @param {MatrixEvent[]} [timelineEventList] A list of timeline events. Lower index\n * is earlier in time. Higher index is later.\n */\nSyncApi.prototype._processRoomEvents = function (room, stateEventList, timelineEventList) {\n // If there are no events in the timeline yet, initialise it with\n // the given state events\n var liveTimeline = room.getLiveTimeline();\n var timelineWasEmpty = liveTimeline.getEvents().length == 0;\n if (timelineWasEmpty) {\n // Passing these events into initialiseState will freeze them, so we need\n // to compute and cache the push actions for them now, otherwise sync dies\n // with an attempt to assign to read only property.\n // XXX: This is pretty horrible and is assuming all sorts of behaviour from\n // these functions that it shouldn't be. We should probably either store the\n // push actions cache elsewhere so we can freeze MatrixEvents, or otherwise\n // find some solution where MatrixEvents are immutable but allow for a cache\n // field.\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(stateEventList), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var ev = _step2.value;\n\n this.client.getPushActionsForEvent(ev);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n liveTimeline.initialiseState(stateEventList);\n }\n\n this._resolveInvites(room);\n\n // recalculate the room name at this point as adding events to the timeline\n // may make notifications appear which should have the right name.\n // XXX: This looks suspect: we'll end up recalculating the room once here\n // and then again after adding events (_processSyncResponse calls it after\n // calling us) even if no state events were added. It also means that if\n // one of the room events in timelineEventList is something that needs\n // a recalculation (like m.room.name) we won't recalculate until we've\n // finished adding all the events, which will cause the notification to have\n // the old room name rather than the new one.\n room.recalculate();\n\n // If the timeline wasn't empty, we process the state events here: they're\n // defined as updates to the state before the start of the timeline, so this\n // starts to roll the state forward.\n // XXX: That's what we *should* do, but this can happen if we were previously\n // peeking in a room, in which case we obviously do *not* want to add the\n // state events here onto the end of the timeline. Historically, the js-sdk\n // has just set these new state events on the old and new state. This seems\n // very wrong because there could be events in the timeline that diverge the\n // state, in which case this is going to leave things out of sync. However,\n // for now I think it;s best to behave the same as the code has done previously.\n if (!timelineWasEmpty) {\n // XXX: As above, don't do this...\n //room.addLiveEvents(stateEventList || []);\n // Do this instead...\n room.oldState.setStateEvents(stateEventList || []);\n room.currentState.setStateEvents(stateEventList || []);\n }\n // execute the timeline events. This will continue to diverge the current state\n // if the timeline has any state events in it.\n // This also needs to be done before running push rules on the events as they need\n // to be decorated with sender etc.\n room.addLiveEvents(timelineEventList || []);\n};\n\n/**\n * Takes a list of timelineEvents and adds and adds to _notifEvents\n * as appropriate.\n * This must be called after the room the events belong to has been stored.\n *\n * @param {Room} room\n * @param {MatrixEvent[]} [timelineEventList] A list of timeline events. Lower index\n * is earlier in time. Higher index is later.\n */\nSyncApi.prototype._processEventsForNotifs = function (room, timelineEventList) {\n // gather our notifications into this._notifEvents\n if (this.client.getNotifTimelineSet()) {\n for (var i = 0; i < timelineEventList.length; i++) {\n var pushActions = this.client.getPushActionsForEvent(timelineEventList[i]);\n if (pushActions && pushActions.notify && pushActions.tweaks && pushActions.tweaks.highlight) {\n this._notifEvents.push(timelineEventList[i]);\n }\n }\n }\n};\n\n/**\n * @return {string}\n */\nSyncApi.prototype._getGuestFilter = function () {\n var guestRooms = this.client._guestRooms; // FIXME: horrible gut-wrenching\n if (!guestRooms) {\n return \"{}\";\n }\n // we just need to specify the filter inline if we're a guest because guests\n // can't create filters.\n return (0, _stringify2.default)({\n room: {\n timeline: {\n limit: 20\n }\n }\n });\n};\n\n/**\n * Sets the sync state and emits an event to say so\n * @param {String} newState The new state string\n * @param {Object} data Object of additional data to emit in the event\n */\nSyncApi.prototype._updateSyncState = function (newState, data) {\n var old = this._syncState;\n this._syncState = newState;\n this._syncStateData = data;\n this.client.emit(\"sync\", this._syncState, old, data);\n};\n\n/**\n * Event handler for the 'online' event\n * This event is generally unreliable and precise behaviour\n * varies between browsers, so we poll for connectivity too,\n * but this might help us reconnect a little faster.\n */\nSyncApi.prototype._onOnline = function () {\n debuglog(\"Browser thinks we are back online\");\n this._startKeepAlives(0);\n};\n\nfunction createNewUser(client, userId) {\n var user = new User(userId);\n client.reEmitter.reEmit(user, [\"User.avatarUrl\", \"User.displayName\", \"User.presence\", \"User.currentlyActive\", \"User.lastPresenceTs\"]);\n return user;\n}\n\n/** */\nmodule.exports = SyncApi;\n//# sourceMappingURL=sync.js.map","require('../../modules/es6.number.is-integer');\nmodule.exports = require('../../modules/_core').Number.isInteger;\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/room-summary\n */\n\n/**\n * Construct a new Room Summary. A summary can be used for display on a recent\n * list, without having to load the entire room list into memory.\n * @constructor\n * @param {string} roomId Required. The ID of this room.\n * @param {Object} info Optional. The summary info. Additional keys are supported.\n * @param {string} info.title The title of the room (e.g. <code>m.room.name</code>)\n * @param {string} info.desc The description of the room (e.g.\n * <code>m.room.topic</code>)\n * @param {Number} info.numMembers The number of joined users.\n * @param {string[]} info.aliases The list of aliases for this room.\n * @param {Number} info.timestamp The timestamp for this room.\n */\n\nfunction RoomSummary(roomId, info) {\n this.roomId = roomId;\n this.info = info;\n}\n\n/**\n * The RoomSummary class.\n */\nmodule.exports = RoomSummary;\n//# sourceMappingURL=room-summary.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * This is an internal module. MatrixBaseApis is currently only meant to be used\n * by {@link client~MatrixClient}.\n *\n * @module base-apis\n */\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar httpApi = require(\"./http-api\");\nvar utils = require(\"./utils\");\n\n/**\n * Low-level wrappers for the Matrix APIs\n *\n * @constructor\n *\n * @param {Object} opts Configuration options\n *\n * @param {string} opts.baseUrl Required. The base URL to the client-server\n * HTTP API.\n *\n * @param {string} opts.idBaseUrl Optional. The base identity server URL for\n * identity server requests.\n *\n * @param {Function} opts.request Required. The function to invoke for HTTP\n * requests. The value of this property is typically <code>require(\"request\")\n * </code> as it returns a function which meets the required interface. See\n * {@link requestFunction} for more information.\n *\n * @param {string} opts.accessToken The access_token for this user.\n *\n * @param {Number=} opts.localTimeoutMs Optional. The default maximum amount of\n * time to wait before timing out HTTP requests. If not specified, there is no\n * timeout.\n *\n * @param {Object} opts.queryParams Optional. Extra query parameters to append\n * to all requests with this client. Useful for application services which require\n * <code>?user_id=</code>.\n *\n * @param {boolean} [opts.useAuthorizationHeader = false] Set to true to use\n * Authorization header instead of query param to send the access token to the server.\n */\nfunction MatrixBaseApis(opts) {\n utils.checkObjectHasKeys(opts, [\"baseUrl\", \"request\"]);\n\n this.baseUrl = opts.baseUrl;\n this.idBaseUrl = opts.idBaseUrl;\n\n var httpOpts = {\n baseUrl: opts.baseUrl,\n idBaseUrl: opts.idBaseUrl,\n accessToken: opts.accessToken,\n request: opts.request,\n prefix: httpApi.PREFIX_R0,\n onlyData: true,\n extraParams: opts.queryParams,\n localTimeoutMs: opts.localTimeoutMs,\n useAuthorizationHeader: opts.useAuthorizationHeader\n };\n this._http = new httpApi.MatrixHttpApi(this, httpOpts);\n\n this._txnCtr = 0;\n}\n\n/**\n * Get the Homeserver URL of this client\n * @return {string} Homeserver URL of this client\n */\nMatrixBaseApis.prototype.getHomeserverUrl = function () {\n return this.baseUrl;\n};\n\n/**\n * Get the Identity Server URL of this client\n * @param {boolean} stripProto whether or not to strip the protocol from the URL\n * @return {string} Identity Server URL of this client\n */\nMatrixBaseApis.prototype.getIdentityServerUrl = function () {\n var stripProto = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (stripProto && (this.idBaseUrl.startsWith(\"http://\") || this.idBaseUrl.startsWith(\"https://\"))) {\n return this.idBaseUrl.split(\"://\")[1];\n }\n return this.idBaseUrl;\n};\n\n/**\n * Get the access token associated with this account.\n * @return {?String} The access_token or null\n */\nMatrixBaseApis.prototype.getAccessToken = function () {\n return this._http.opts.accessToken || null;\n};\n\n/**\n * @return {boolean} true if there is a valid access_token for this client.\n */\nMatrixBaseApis.prototype.isLoggedIn = function () {\n return this._http.opts.accessToken !== undefined;\n};\n\n/**\n * Make up a new transaction id\n *\n * @return {string} a new, unique, transaction id\n */\nMatrixBaseApis.prototype.makeTxnId = function () {\n return \"m\" + new Date().getTime() + \".\" + this._txnCtr++;\n};\n\n// Registration/Login operations\n// =============================\n\n/**\n * Check whether a username is available prior to registration. An error response\n * indicates an invalid/unavailable username.\n * @param {string} username The username to check the availability of.\n * @return {module:client.Promise} Resolves: to `true`.\n */\nMatrixBaseApis.prototype.isUsernameAvailable = function (username) {\n return this._http.authedRequest(undefined, \"GET\", '/register/available', { username: username }).then(function (response) {\n return response.available;\n });\n};\n\n/**\n * @param {string} username\n * @param {string} password\n * @param {string} sessionId\n * @param {Object} auth\n * @param {Object} bindThreepids Set key 'email' to true to bind any email\n * threepid uses during registration in the ID server. Set 'msisdn' to\n * true to bind msisdn.\n * @param {string} guestAccessToken\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.register = function (username, password, sessionId, auth, bindThreepids, guestAccessToken, callback) {\n // backwards compat\n if (bindThreepids === true) {\n bindThreepids = { email: true };\n } else if (bindThreepids === null || bindThreepids === undefined) {\n bindThreepids = {};\n }\n\n if (auth === undefined || auth === null) {\n auth = {};\n }\n if (sessionId) {\n auth.session = sessionId;\n }\n\n var params = {\n auth: auth\n };\n if (username !== undefined && username !== null) {\n params.username = username;\n }\n if (password !== undefined && password !== null) {\n params.password = password;\n }\n if (bindThreepids.email) {\n params.bind_email = true;\n }\n if (bindThreepids.msisdn) {\n params.bind_msisdn = true;\n }\n if (guestAccessToken !== undefined && guestAccessToken !== null) {\n params.guest_access_token = guestAccessToken;\n }\n // Temporary parameter added to make the register endpoint advertise\n // msisdn flows. This exists because there are clients that break\n // when given stages they don't recognise. This parameter will cease\n // to be necessary once these old clients are gone.\n // Only send it if we send any params at all (the password param is\n // mandatory, so if we send any params, we'll send the password param)\n if (password !== undefined && password !== null) {\n params.x_show_msisdn = true;\n }\n\n return this.registerRequest(params, undefined, callback);\n};\n\n/**\n * Register a guest account.\n * @param {Object=} opts Registration options\n * @param {Object} opts.body JSON HTTP body to provide.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.registerGuest = function (opts, callback) {\n opts = opts || {};\n opts.body = opts.body || {};\n return this.registerRequest(opts.body, \"guest\", callback);\n};\n\n/**\n * @param {Object} data parameters for registration request\n * @param {string=} kind type of user to register. may be \"guest\"\n * @param {module:client.callback=} callback\n * @return {module:client.Promise} Resolves: to the /register response\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.registerRequest = function (data, kind, callback) {\n var params = {};\n if (kind) {\n params.kind = kind;\n }\n\n return this._http.request(callback, \"POST\", \"/register\", params, data);\n};\n\n/**\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.loginFlows = function (callback) {\n return this._http.request(callback, \"GET\", \"/login\");\n};\n\n/**\n * @param {string} loginType\n * @param {Object} data\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.login = function (loginType, data, callback) {\n var _this = this;\n\n var login_data = {\n type: loginType\n };\n\n // merge data into login_data\n utils.extend(login_data, data);\n\n return this._http.authedRequest(function (error, response) {\n if (loginType === \"m.login.password\" && response && response.access_token && response.user_id) {\n _this._http.opts.accessToken = response.access_token;\n _this.credentials = {\n userId: response.user_id\n };\n }\n\n if (callback) {\n callback(error, response);\n }\n }, \"POST\", \"/login\", undefined, login_data);\n};\n\n/**\n * @param {string} user\n * @param {string} password\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.loginWithPassword = function (user, password, callback) {\n return this.login(\"m.login.password\", {\n user: user,\n password: password\n }, callback);\n};\n\n/**\n * @param {string} relayState URL Callback after SAML2 Authentication\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.loginWithSAML2 = function (relayState, callback) {\n return this.login(\"m.login.saml2\", {\n relay_state: relayState\n }, callback);\n};\n\n/**\n * @param {string} redirectUrl The URL to redirect to after the HS\n * authenticates with CAS.\n * @return {string} The HS URL to hit to begin the CAS login process.\n */\nMatrixBaseApis.prototype.getCasLoginUrl = function (redirectUrl) {\n return this.getSsoLoginUrl(redirectUrl, \"cas\");\n};\n\n/**\n * @param {string} redirectUrl The URL to redirect to after the HS\n * authenticates with the SSO.\n * @param {string} loginType The type of SSO login we are doing (sso or cas).\n * Defaults to 'sso'.\n * @return {string} The HS URL to hit to begin the SSO login process.\n */\nMatrixBaseApis.prototype.getSsoLoginUrl = function (redirectUrl, loginType) {\n if (loginType === undefined) {\n loginType = \"sso\";\n }\n return this._http.getUrl(\"/login/\" + loginType + \"/redirect\", {\n \"redirectUrl\": redirectUrl\n }, httpApi.PREFIX_R0);\n};\n\n/**\n * @param {string} token Login token previously received from homeserver\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.loginWithToken = function (token, callback) {\n return this.login(\"m.login.token\", {\n token: token\n }, callback);\n};\n\n/**\n * Logs out the current session.\n * Obviously, further calls that require authorisation should fail after this\n * method is called. The state of the MatrixClient object is not affected:\n * it is up to the caller to either reset or destroy the MatrixClient after\n * this method succeeds.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: On success, the empty object\n */\nMatrixBaseApis.prototype.logout = function (callback) {\n return this._http.authedRequest(callback, \"POST\", '/logout');\n};\n\n/**\n * Deactivates the logged-in account.\n * Obviously, further calls that require authorisation should fail after this\n * method is called. The state of the MatrixClient object is not affected:\n * it is up to the caller to either reset or destroy the MatrixClient after\n * this method succeeds.\n * @param {object} auth Optional. Auth data to supply for User-Interactive auth.\n * @param {boolean} erase Optional. If set, send as `erase` attribute in the\n * JSON request body, indicating whether the account should be erased. Defaults\n * to false.\n * @return {module:client.Promise} Resolves: On success, the empty object\n */\nMatrixBaseApis.prototype.deactivateAccount = function (auth, erase) {\n if (typeof erase === 'function') {\n throw new Error('deactivateAccount no longer accepts a callback parameter');\n }\n\n var body = {};\n if (auth) {\n body.auth = auth;\n }\n if (erase !== undefined) {\n body.erase = erase;\n }\n\n return this._http.authedRequestWithPrefix(undefined, \"POST\", '/account/deactivate', undefined, body, httpApi.PREFIX_R0);\n};\n\n/**\n * Get the fallback URL to use for unknown interactive-auth stages.\n *\n * @param {string} loginType the type of stage being attempted\n * @param {string} authSessionId the auth session ID provided by the homeserver\n *\n * @return {string} HS URL to hit to for the fallback interface\n */\nMatrixBaseApis.prototype.getFallbackAuthUrl = function (loginType, authSessionId) {\n var path = utils.encodeUri(\"/auth/$loginType/fallback/web\", {\n $loginType: loginType\n });\n\n return this._http.getUrl(path, {\n session: authSessionId\n }, httpApi.PREFIX_R0);\n};\n\n// Room operations\n// ===============\n\n/**\n * Create a new room.\n * @param {Object} options a list of options to pass to the /createRoom API.\n * @param {string} options.room_alias_name The alias localpart to assign to\n * this room.\n * @param {string} options.visibility Either 'public' or 'private'.\n * @param {string[]} options.invite A list of user IDs to invite to this room.\n * @param {string} options.name The name to give this room.\n * @param {string} options.topic The topic to give this room.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: <code>{room_id: {string},\n * room_alias: {string(opt)}}</code>\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.createRoom = function (options, callback) {\n // valid options include: room_alias_name, visibility, invite\n return this._http.authedRequest(callback, \"POST\", \"/createRoom\", undefined, options);\n};\n\n/**\n * @param {string} roomId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.roomState = function (roomId, callback) {\n var path = utils.encodeUri(\"/rooms/$roomId/state\", { $roomId: roomId });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * Get an event in a room by its event id.\n * @param {string} roomId\n * @param {string} eventId\n * @param {module:client.callback} callback Optional.\n *\n * @return {Promise} Resolves to an object containing the event.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.fetchRoomEvent = function (roomId, eventId, callback) {\n var path = utils.encodeUri(\"/rooms/$roomId/event/$eventId\", {\n $roomId: roomId,\n $eventId: eventId\n });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * @param {string} roomId\n * @param {string} includeMembership the membership type to include in the response\n * @param {string} excludeMembership the membership type to exclude from the response\n * @param {string} atEventId the id of the event for which moment in the timeline the members should be returned for\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: dictionary of userid to profile information\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.members = function (roomId, includeMembership, excludeMembership, atEventId, callback) {\n var queryParams = {};\n if (includeMembership) {\n queryParams.membership = includeMembership;\n }\n if (excludeMembership) {\n queryParams.not_membership = excludeMembership;\n }\n if (atEventId) {\n queryParams.at = atEventId;\n }\n\n var queryString = utils.encodeParams(queryParams);\n\n var path = utils.encodeUri(\"/rooms/$roomId/members?\" + queryString, { $roomId: roomId });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * Upgrades a room to a new protocol version\n * @param {string} roomId\n * @param {string} newVersion The target version to upgrade to\n * @return {module:client.Promise} Resolves: Object with key 'replacement_room'\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.upgradeRoom = function (roomId, newVersion) {\n var path = utils.encodeUri(\"/rooms/$roomId/upgrade\", { $roomId: roomId });\n return this._http.authedRequest(undefined, \"POST\", path, undefined, { new_version: newVersion });\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Group summary object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getGroupSummary = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/summary\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Group profile object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getGroupProfile = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/profile\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {string} groupId\n * @param {Object} profile The group profile object\n * @param {string=} profile.name Name of the group\n * @param {string=} profile.avatar_url MXC avatar URL\n * @param {string=} profile.short_description A short description of the room\n * @param {string=} profile.long_description A longer HTML description of the room\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setGroupProfile = function (groupId, profile) {\n var path = utils.encodeUri(\"/groups/$groupId/profile\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"POST\", path, undefined, profile);\n};\n\n/**\n * @param {string} groupId\n * @param {object} policy The join policy for the group. Must include at\n * least a 'type' field which is 'open' if anyone can join the group\n * the group without prior approval, or 'invite' if an invite is\n * required to join.\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setGroupJoinPolicy = function (groupId, policy) {\n var path = utils.encodeUri(\"/groups/$groupId/settings/m.join_policy\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {\n 'm.join_policy': policy\n });\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Group users list object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getGroupUsers = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/users\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Group users list object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getGroupInvitedUsers = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/invited_users\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Group rooms list object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getGroupRooms = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/rooms\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {string} groupId\n * @param {string} userId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.inviteUserToGroup = function (groupId, userId) {\n var path = utils.encodeUri(\"/groups/$groupId/admin/users/invite/$userId\", { $groupId: groupId, $userId: userId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} userId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.removeUserFromGroup = function (groupId, userId) {\n var path = utils.encodeUri(\"/groups/$groupId/admin/users/remove/$userId\", { $groupId: groupId, $userId: userId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} userId\n * @param {string} roleId Optional.\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addUserToGroupSummary = function (groupId, userId, roleId) {\n var path = utils.encodeUri(roleId ? \"/groups/$groupId/summary/$roleId/users/$userId\" : \"/groups/$groupId/summary/users/$userId\", { $groupId: groupId, $roleId: roleId, $userId: userId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} userId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.removeUserFromGroupSummary = function (groupId, userId) {\n var path = utils.encodeUri(\"/groups/$groupId/summary/users/$userId\", { $groupId: groupId, $userId: userId });\n return this._http.authedRequest(undefined, \"DELETE\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} roomId\n * @param {string} categoryId Optional.\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addRoomToGroupSummary = function (groupId, roomId, categoryId) {\n var path = utils.encodeUri(categoryId ? \"/groups/$groupId/summary/$categoryId/rooms/$roomId\" : \"/groups/$groupId/summary/rooms/$roomId\", { $groupId: groupId, $categoryId: categoryId, $roomId: roomId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} roomId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.removeRoomFromGroupSummary = function (groupId, roomId) {\n var path = utils.encodeUri(\"/groups/$groupId/summary/rooms/$roomId\", { $groupId: groupId, $roomId: roomId });\n return this._http.authedRequest(undefined, \"DELETE\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} roomId\n * @param {bool} isPublic Whether the room-group association is visible to non-members\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addRoomToGroup = function (groupId, roomId, isPublic) {\n if (isPublic === undefined) {\n isPublic = true;\n }\n var path = utils.encodeUri(\"/groups/$groupId/admin/rooms/$roomId\", { $groupId: groupId, $roomId: roomId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, { \"m.visibility\": { type: isPublic ? \"public\" : \"private\" } });\n};\n\n/**\n * Configure the visibility of a room-group association.\n * @param {string} groupId\n * @param {string} roomId\n * @param {bool} isPublic Whether the room-group association is visible to non-members\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.updateGroupRoomVisibility = function (groupId, roomId, isPublic) {\n // NB: The /config API is generic but there's not much point in exposing this yet as synapse\n // is the only server to implement this. In future we should consider an API that allows\n // arbitrary configuration, i.e. \"config/$configKey\".\n\n var path = utils.encodeUri(\"/groups/$groupId/admin/rooms/$roomId/config/m.visibility\", { $groupId: groupId, $roomId: roomId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, { type: isPublic ? \"public\" : \"private\" });\n};\n\n/**\n * @param {string} groupId\n * @param {string} roomId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.removeRoomFromGroup = function (groupId, roomId) {\n var path = utils.encodeUri(\"/groups/$groupId/admin/rooms/$roomId\", { $groupId: groupId, $roomId: roomId });\n return this._http.authedRequest(undefined, \"DELETE\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {Object} opts Additional options to send alongside the acceptance.\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.acceptGroupInvite = function (groupId) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n var path = utils.encodeUri(\"/groups/$groupId/self/accept_invite\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, opts || {});\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.joinGroup = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/self/join\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.leaveGroup = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/self/leave\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @return {module:client.Promise} Resolves: The groups to which the user is joined\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getJoinedGroups = function () {\n var path = utils.encodeUri(\"/joined_groups\");\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {Object} content Request content\n * @param {string} content.localpart The local part of the desired group ID\n * @param {Object} content.profile Group profile object\n * @return {module:client.Promise} Resolves: Object with key group_id: id of the created group\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.createGroup = function (content) {\n var path = utils.encodeUri(\"/create_group\");\n return this._http.authedRequest(undefined, \"POST\", path, undefined, content);\n};\n\n/**\n * @param {string[]} userIds List of user IDs\n * @return {module:client.Promise} Resolves: Object as exmaple below\n *\n * {\n * \"users\": {\n * \"@bob:example.com\": {\n * \"+example:example.com\"\n * }\n * }\n * }\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getPublicisedGroups = function (userIds) {\n var path = utils.encodeUri(\"/publicised_groups\");\n return this._http.authedRequest(undefined, \"POST\", path, undefined, { user_ids: userIds });\n};\n\n/**\n * @param {string} groupId\n * @param {bool} isPublic Whether the user's membership of this group is made public\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setGroupPublicity = function (groupId, isPublic) {\n var path = utils.encodeUri(\"/groups/$groupId/self/update_publicity\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {\n publicise: isPublic\n });\n};\n\n/**\n * Retrieve a state event.\n * @param {string} roomId\n * @param {string} eventType\n * @param {string} stateKey\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getStateEvent = function (roomId, eventType, stateKey, callback) {\n var pathParams = {\n $roomId: roomId,\n $eventType: eventType,\n $stateKey: stateKey\n };\n var path = utils.encodeUri(\"/rooms/$roomId/state/$eventType\", pathParams);\n if (stateKey !== undefined) {\n path = utils.encodeUri(path + \"/$stateKey\", pathParams);\n }\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * @param {string} roomId\n * @param {string} eventType\n * @param {Object} content\n * @param {string} stateKey\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.sendStateEvent = function (roomId, eventType, content, stateKey, callback) {\n var pathParams = {\n $roomId: roomId,\n $eventType: eventType,\n $stateKey: stateKey\n };\n var path = utils.encodeUri(\"/rooms/$roomId/state/$eventType\", pathParams);\n if (stateKey !== undefined) {\n path = utils.encodeUri(path + \"/$stateKey\", pathParams);\n }\n return this._http.authedRequest(callback, \"PUT\", path, undefined, content);\n};\n\n/**\n * @param {string} roomId\n * @param {string} eventId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.redactEvent = function (roomId, eventId, callback) {\n var path = utils.encodeUri(\"/rooms/$roomId/redact/$eventId\", {\n $roomId: roomId,\n $eventId: eventId\n });\n return this._http.authedRequest(callback, \"POST\", path, undefined, {});\n};\n\n/**\n * @param {string} roomId\n * @param {Number} limit\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.roomInitialSync = function (roomId, limit, callback) {\n if (utils.isFunction(limit)) {\n callback = limit;limit = undefined;\n }\n var path = utils.encodeUri(\"/rooms/$roomId/initialSync\", { $roomId: roomId });\n if (!limit) {\n limit = 30;\n }\n return this._http.authedRequest(callback, \"GET\", path, { limit: limit });\n};\n\n/**\n * Set a marker to indicate the point in a room before which the user has read every\n * event. This can be retrieved from room account data (the event type is `m.fully_read`)\n * and displayed as a horizontal line in the timeline that is visually distinct to the\n * position of the user's own read receipt.\n * @param {string} roomId ID of the room that has been read\n * @param {string} rmEventId ID of the event that has been read\n * @param {string} rrEventId ID of the event tracked by the read receipt. This is here\n * for convenience because the RR and the RM are commonly updated at the same time as\n * each other. Optional.\n * @return {module:client.Promise} Resolves: the empty object, {}.\n */\nMatrixBaseApis.prototype.setRoomReadMarkersHttpRequest = function (roomId, rmEventId, rrEventId) {\n var path = utils.encodeUri(\"/rooms/$roomId/read_markers\", {\n $roomId: roomId\n });\n\n var content = {\n \"m.fully_read\": rmEventId,\n \"m.read\": rrEventId\n };\n\n return this._http.authedRequest(undefined, \"POST\", path, undefined, content);\n};\n\n/**\n * @return {module:client.Promise} Resolves: A list of the user's current rooms\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getJoinedRooms = function () {\n var path = utils.encodeUri(\"/joined_rooms\");\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * Retrieve membership info. for a room.\n * @param {string} roomId ID of the room to get membership for\n * @return {module:client.Promise} Resolves: A list of currently joined users\n * and their profile data.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getJoinedRoomMembers = function (roomId) {\n var path = utils.encodeUri(\"/rooms/$roomId/joined_members\", {\n $roomId: roomId\n });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n// Room Directory operations\n// =========================\n\n/**\n * @param {Object} options Options for this request\n * @param {string} options.server The remote server to query for the room list.\n * Optional. If unspecified, get the local home\n * server's public room list.\n * @param {number} options.limit Maximum number of entries to return\n * @param {string} options.since Token to paginate from\n * @param {object} options.filter Filter parameters\n * @param {string} options.filter.generic_search_term String to search for\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.publicRooms = function (options, callback) {\n if (typeof options == 'function') {\n callback = options;\n options = {};\n }\n if (options === undefined) {\n options = {};\n }\n\n var query_params = {};\n if (options.server) {\n query_params.server = options.server;\n delete options.server;\n }\n\n if ((0, _keys2.default)(options).length === 0 && (0, _keys2.default)(query_params).length === 0) {\n return this._http.authedRequest(callback, \"GET\", \"/publicRooms\");\n } else {\n return this._http.authedRequest(callback, \"POST\", \"/publicRooms\", query_params, options);\n }\n};\n\n/**\n * Create an alias to room ID mapping.\n * @param {string} alias The room alias to create.\n * @param {string} roomId The room ID to link the alias to.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.createAlias = function (alias, roomId, callback) {\n var path = utils.encodeUri(\"/directory/room/$alias\", {\n $alias: alias\n });\n var data = {\n room_id: roomId\n };\n return this._http.authedRequest(callback, \"PUT\", path, undefined, data);\n};\n\n/**\n * Delete an alias to room ID mapping. This alias must be on your local server\n * and you must have sufficient access to do this operation.\n * @param {string} alias The room alias to delete.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.deleteAlias = function (alias, callback) {\n var path = utils.encodeUri(\"/directory/room/$alias\", {\n $alias: alias\n });\n return this._http.authedRequest(callback, \"DELETE\", path, undefined, undefined);\n};\n\n/**\n * Get room info for the given alias.\n * @param {string} alias The room alias to resolve.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Object with room_id and servers.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getRoomIdForAlias = function (alias, callback) {\n // TODO: deprecate this or resolveRoomAlias\n var path = utils.encodeUri(\"/directory/room/$alias\", {\n $alias: alias\n });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * @param {string} roomAlias\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.resolveRoomAlias = function (roomAlias, callback) {\n // TODO: deprecate this or getRoomIdForAlias\n var path = utils.encodeUri(\"/directory/room/$alias\", { $alias: roomAlias });\n return this._http.request(callback, \"GET\", path);\n};\n\n/**\n * Get the visibility of a room in the current HS's room directory\n * @param {string} roomId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getRoomDirectoryVisibility = function (roomId, callback) {\n var path = utils.encodeUri(\"/directory/list/room/$roomId\", {\n $roomId: roomId\n });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * Set the visbility of a room in the current HS's room directory\n * @param {string} roomId\n * @param {string} visibility \"public\" to make the room visible\n * in the public directory, or \"private\" to make\n * it invisible.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setRoomDirectoryVisibility = function (roomId, visibility, callback) {\n var path = utils.encodeUri(\"/directory/list/room/$roomId\", {\n $roomId: roomId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, { \"visibility\": visibility });\n};\n\n/**\n * Set the visbility of a room bridged to a 3rd party network in\n * the current HS's room directory.\n * @param {string} networkId the network ID of the 3rd party\n * instance under which this room is published under.\n * @param {string} roomId\n * @param {string} visibility \"public\" to make the room visible\n * in the public directory, or \"private\" to make\n * it invisible.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setRoomDirectoryVisibilityAppService = function (networkId, roomId, visibility, callback) {\n var path = utils.encodeUri(\"/directory/list/appservice/$networkId/$roomId\", {\n $networkId: networkId,\n $roomId: roomId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, { \"visibility\": visibility });\n};\n\n// User Directory Operations\n// =========================\n\n/**\n * Query the user directory with a term matching user IDs, display names and domains.\n * @param {object} opts options\n * @param {string} opts.term the term with which to search.\n * @param {number} opts.limit the maximum number of results to return. The server will\n * apply a limit if unspecified.\n * @return {module:client.Promise} Resolves: an array of results.\n */\nMatrixBaseApis.prototype.searchUserDirectory = function (opts) {\n var body = {\n search_term: opts.term\n };\n\n if (opts.limit !== undefined) {\n body.limit = opts.limit;\n }\n\n return this._http.authedRequest(undefined, \"POST\", \"/user_directory/search\", undefined, body);\n};\n\n// Media operations\n// ================\n\n/**\n * Upload a file to the media repository on the home server.\n *\n * @param {object} file The object to upload. On a browser, something that\n * can be sent to XMLHttpRequest.send (typically a File). Under node.js,\n * a a Buffer, String or ReadStream.\n *\n * @param {object} opts options object\n *\n * @param {string=} opts.name Name to give the file on the server. Defaults\n * to <tt>file.name</tt>.\n *\n * @param {boolean=} opts.includeFilename if false will not send the filename,\n * e.g for encrypted file uploads where filename leaks are undesirable.\n * Defaults to true.\n *\n * @param {string=} opts.type Content-type for the upload. Defaults to\n * <tt>file.type</tt>, or <tt>applicaton/octet-stream</tt>.\n *\n * @param {boolean=} opts.rawResponse Return the raw body, rather than\n * parsing the JSON. Defaults to false (except on node.js, where it\n * defaults to true for backwards compatibility).\n *\n * @param {boolean=} opts.onlyContentUri Just return the content URI,\n * rather than the whole body. Defaults to false (except on browsers,\n * where it defaults to true for backwards compatibility). Ignored if\n * opts.rawResponse is true.\n *\n * @param {Function=} opts.callback Deprecated. Optional. The callback to\n * invoke on success/failure. See the promise return values for more\n * information.\n *\n * @param {Function=} opts.progressHandler Optional. Called when a chunk of\n * data has been uploaded, with an object containing the fields `loaded`\n * (number of bytes transferred) and `total` (total size, if known).\n *\n * @return {module:client.Promise} Resolves to response object, as\n * determined by this.opts.onlyData, opts.rawResponse, and\n * opts.onlyContentUri. Rejects with an error (usually a MatrixError).\n */\nMatrixBaseApis.prototype.uploadContent = function (file, opts) {\n return this._http.uploadContent(file, opts);\n};\n\n/**\n * Cancel a file upload in progress\n * @param {module:client.Promise} promise The promise returned from uploadContent\n * @return {boolean} true if canceled, otherwise false\n */\nMatrixBaseApis.prototype.cancelUpload = function (promise) {\n return this._http.cancelUpload(promise);\n};\n\n/**\n * Get a list of all file uploads in progress\n * @return {array} Array of objects representing current uploads.\n * Currently in progress is element 0. Keys:\n * - promise: The promise associated with the upload\n * - loaded: Number of bytes uploaded\n * - total: Total number of bytes to upload\n */\nMatrixBaseApis.prototype.getCurrentUploads = function () {\n return this._http.getCurrentUploads();\n};\n\n// Profile operations\n// ==================\n\n/**\n * @param {string} userId\n * @param {string} info The kind of info to retrieve (e.g. 'displayname',\n * 'avatar_url').\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getProfileInfo = function (userId, info, callback) {\n if (utils.isFunction(info)) {\n callback = info;info = undefined;\n }\n\n var path = info ? utils.encodeUri(\"/profile/$userId/$info\", { $userId: userId, $info: info }) : utils.encodeUri(\"/profile/$userId\", { $userId: userId });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n// Account operations\n// ==================\n\n/**\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getThreePids = function (callback) {\n var path = \"/account/3pid\";\n return this._http.authedRequest(callback, \"GET\", path, undefined, undefined);\n};\n\n/**\n * @param {Object} creds\n * @param {boolean} bind\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addThreePid = function (creds, bind, callback) {\n var path = \"/account/3pid\";\n var data = {\n 'threePidCreds': creds,\n 'bind': bind\n };\n return this._http.authedRequest(callback, \"POST\", path, null, data);\n};\n\n/**\n * @param {string} medium The threepid medium (eg. 'email')\n * @param {string} address The threepid address (eg. 'bob@example.com')\n * this must be as returned by getThreePids.\n * @return {module:client.Promise} Resolves: The server response on success\n * (generally the empty JSON object)\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.deleteThreePid = function (medium, address) {\n var path = \"/account/3pid/delete\";\n var data = {\n 'medium': medium,\n 'address': address\n };\n return this._http.authedRequestWithPrefix(undefined, \"POST\", path, null, data, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Make a request to change your password.\n * @param {Object} authDict\n * @param {string} newPassword The new desired password.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setPassword = function (authDict, newPassword, callback) {\n var path = \"/account/password\";\n var data = {\n 'auth': authDict,\n 'new_password': newPassword\n };\n\n return this._http.authedRequest(callback, \"POST\", path, null, data);\n};\n\n// Device operations\n// =================\n\n/**\n * Gets all devices recorded for the logged-in user\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getDevices = function () {\n var path = \"/devices\";\n return this._http.authedRequestWithPrefix(undefined, \"GET\", path, undefined, undefined, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Update the given device\n *\n * @param {string} device_id device to update\n * @param {Object} body body of request\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setDeviceDetails = function (device_id, body) {\n var path = utils.encodeUri(\"/devices/$device_id\", {\n $device_id: device_id\n });\n\n return this._http.authedRequestWithPrefix(undefined, \"PUT\", path, undefined, body, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Delete the given device\n *\n * @param {string} device_id device to delete\n * @param {object} auth Optional. Auth data to supply for User-Interactive auth.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.deleteDevice = function (device_id, auth) {\n var path = utils.encodeUri(\"/devices/$device_id\", {\n $device_id: device_id\n });\n\n var body = {};\n\n if (auth) {\n body.auth = auth;\n }\n\n return this._http.authedRequestWithPrefix(undefined, \"DELETE\", path, undefined, body, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Delete multiple device\n *\n * @param {string[]} devices IDs of the devices to delete\n * @param {object} auth Optional. Auth data to supply for User-Interactive auth.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.deleteMultipleDevices = function (devices, auth) {\n var body = { devices: devices };\n\n if (auth) {\n body.auth = auth;\n }\n\n return this._http.authedRequestWithPrefix(undefined, \"POST\", \"/delete_devices\", undefined, body, httpApi.PREFIX_UNSTABLE);\n};\n\n// Push operations\n// ===============\n\n/**\n * Gets all pushers registered for the logged-in user\n *\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Array of objects representing pushers\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getPushers = function (callback) {\n var path = \"/pushers\";\n return this._http.authedRequest(callback, \"GET\", path, undefined, undefined);\n};\n\n/**\n * Adds a new pusher or updates an existing pusher\n *\n * @param {Object} pusher Object representing a pusher\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Empty json object on success\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setPusher = function (pusher, callback) {\n var path = \"/pushers/set\";\n return this._http.authedRequest(callback, \"POST\", path, null, pusher);\n};\n\n/**\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getPushRules = function (callback) {\n return this._http.authedRequest(callback, \"GET\", \"/pushrules/\");\n};\n\n/**\n * @param {string} scope\n * @param {string} kind\n * @param {string} ruleId\n * @param {Object} body\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addPushRule = function (scope, kind, ruleId, body, callback) {\n // NB. Scope not uri encoded because devices need the '/'\n var path = utils.encodeUri(\"/pushrules/\" + scope + \"/$kind/$ruleId\", {\n $kind: kind,\n $ruleId: ruleId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, body);\n};\n\n/**\n * @param {string} scope\n * @param {string} kind\n * @param {string} ruleId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.deletePushRule = function (scope, kind, ruleId, callback) {\n // NB. Scope not uri encoded because devices need the '/'\n var path = utils.encodeUri(\"/pushrules/\" + scope + \"/$kind/$ruleId\", {\n $kind: kind,\n $ruleId: ruleId\n });\n return this._http.authedRequest(callback, \"DELETE\", path);\n};\n\n/**\n * Enable or disable a push notification rule.\n * @param {string} scope\n * @param {string} kind\n * @param {string} ruleId\n * @param {boolean} enabled\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setPushRuleEnabled = function (scope, kind, ruleId, enabled, callback) {\n var path = utils.encodeUri(\"/pushrules/\" + scope + \"/$kind/$ruleId/enabled\", {\n $kind: kind,\n $ruleId: ruleId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, { \"enabled\": enabled });\n};\n\n/**\n * Set the actions for a push notification rule.\n * @param {string} scope\n * @param {string} kind\n * @param {string} ruleId\n * @param {array} actions\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setPushRuleActions = function (scope, kind, ruleId, actions, callback) {\n var path = utils.encodeUri(\"/pushrules/\" + scope + \"/$kind/$ruleId/actions\", {\n $kind: kind,\n $ruleId: ruleId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, { \"actions\": actions });\n};\n\n// Search\n// ======\n\n/**\n * Perform a server-side search.\n * @param {Object} opts\n * @param {string} opts.next_batch the batch token to pass in the query string\n * @param {Object} opts.body the JSON object to pass to the request body.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.search = function (opts, callback) {\n var queryparams = {};\n if (opts.next_batch) {\n queryparams.next_batch = opts.next_batch;\n }\n return this._http.authedRequest(callback, \"POST\", \"/search\", queryparams, opts.body);\n};\n\n// Crypto\n// ======\n\n/**\n * Upload keys\n *\n * @param {Object} content body of upload request\n *\n * @param {Object=} opts\n *\n * @param {string=} opts.device_id explicit device_id to use for upload\n * (default is to use the same as that used during auth).\n *\n * @param {module:client.callback=} callback\n *\n * @return {module:client.Promise} Resolves: result object. Rejects: with\n * an error response ({@link module:http-api.MatrixError}).\n */\nMatrixBaseApis.prototype.uploadKeysRequest = function (content, opts, callback) {\n opts = opts || {};\n var deviceId = opts.device_id;\n var path = void 0;\n if (deviceId) {\n path = utils.encodeUri(\"/keys/upload/$deviceId\", {\n $deviceId: deviceId\n });\n } else {\n path = \"/keys/upload\";\n }\n return this._http.authedRequestWithPrefix(callback, \"POST\", path, undefined, content, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Download device keys\n *\n * @param {string[]} userIds list of users to get keys for\n *\n * @param {Object=} opts\n *\n * @param {string=} opts.token sync token to pass in the query request, to help\n * the HS give the most recent results\n *\n * @return {module:client.Promise} Resolves: result object. Rejects: with\n * an error response ({@link module:http-api.MatrixError}).\n */\nMatrixBaseApis.prototype.downloadKeysForUsers = function (userIds, opts) {\n if (utils.isFunction(opts)) {\n // opts used to be 'callback'.\n throw new Error('downloadKeysForUsers no longer accepts a callback parameter');\n }\n opts = opts || {};\n\n var content = {\n device_keys: {}\n };\n if ('token' in opts) {\n content.token = opts.token;\n }\n userIds.forEach(function (u) {\n content.device_keys[u] = {};\n });\n\n return this._http.authedRequestWithPrefix(undefined, \"POST\", \"/keys/query\", undefined, content, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Claim one-time keys\n *\n * @param {string[]} devices a list of [userId, deviceId] pairs\n *\n * @param {string} [key_algorithm = signed_curve25519] desired key type\n *\n * @return {module:client.Promise} Resolves: result object. Rejects: with\n * an error response ({@link module:http-api.MatrixError}).\n */\nMatrixBaseApis.prototype.claimOneTimeKeys = function (devices, key_algorithm) {\n var queries = {};\n\n if (key_algorithm === undefined) {\n key_algorithm = \"signed_curve25519\";\n }\n\n for (var i = 0; i < devices.length; ++i) {\n var userId = devices[i][0];\n var deviceId = devices[i][1];\n var query = queries[userId] || {};\n queries[userId] = query;\n query[deviceId] = key_algorithm;\n }\n var content = { one_time_keys: queries };\n return this._http.authedRequestWithPrefix(undefined, \"POST\", \"/keys/claim\", undefined, content, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Ask the server for a list of users who have changed their device lists\n * between a pair of sync tokens\n *\n * @param {string} oldToken\n * @param {string} newToken\n *\n * @return {module:client.Promise} Resolves: result object. Rejects: with\n * an error response ({@link module:http-api.MatrixError}).\n */\nMatrixBaseApis.prototype.getKeyChanges = function (oldToken, newToken) {\n var qps = {\n from: oldToken,\n to: newToken\n };\n\n return this._http.authedRequestWithPrefix(undefined, \"GET\", \"/keys/changes\", qps, undefined, httpApi.PREFIX_UNSTABLE);\n};\n\n// Identity Server Operations\n// ==========================\n\n/**\n * Requests an email verification token directly from an Identity Server.\n *\n * Note that the Home Server offers APIs to proxy this API for specific\n * situations, allowing for better feedback to the user.\n *\n * @param {string} email The email address to request a token for\n * @param {string} clientSecret A secret binary string generated by the client.\n * It is recommended this be around 16 ASCII characters.\n * @param {number} sendAttempt If an identity server sees a duplicate request\n * with the same sendAttempt, it will not send another email.\n * To request another email to be sent, use a larger value for\n * the sendAttempt param as was used in the previous request.\n * @param {string} nextLink Optional If specified, the client will be redirected\n * to this link after validation.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n * @throws Error if No ID server is set\n */\nMatrixBaseApis.prototype.requestEmailToken = function (email, clientSecret, sendAttempt, nextLink, callback) {\n var params = {\n client_secret: clientSecret,\n email: email,\n send_attempt: sendAttempt,\n next_link: nextLink\n };\n return this._http.idServerRequest(callback, \"POST\", \"/validate/email/requestToken\", params, httpApi.PREFIX_IDENTITY_V1);\n};\n\n/**\n * Submits an MSISDN token to the identity server\n *\n * This is used when submitting the code sent by SMS to a phone number.\n * The ID server has an equivalent API for email but the js-sdk does\n * not expose this, since email is normally validated by the user clicking\n * a link rather than entering a code.\n *\n * @param {string} sid The sid given in the response to requestToken\n * @param {string} clientSecret A secret binary string generated by the client.\n * This must be the same value submitted in the requestToken call.\n * @param {string} token The token, as enetered by the user.\n *\n * @return {module:client.Promise} Resolves: Object, currently with no parameters.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n * @throws Error if No ID server is set\n */\nMatrixBaseApis.prototype.submitMsisdnToken = function (sid, clientSecret, token) {\n var params = {\n sid: sid,\n client_secret: clientSecret,\n token: token\n };\n return this._http.idServerRequest(undefined, \"POST\", \"/validate/msisdn/submitToken\", params, httpApi.PREFIX_IDENTITY_V1);\n};\n\n/**\n * Looks up the public Matrix ID mapping for a given 3rd party\n * identifier from the Identity Server\n * @param {string} medium The medium of the threepid, eg. 'email'\n * @param {string} address The textual address of the threepid\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: A threepid mapping\n * object or the empty object if no mapping\n * exists\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.lookupThreePid = function (medium, address, callback) {\n var params = {\n medium: medium,\n address: address\n };\n return this._http.idServerRequest(callback, \"GET\", \"/lookup\", params, httpApi.PREFIX_IDENTITY_V1);\n};\n\n// Direct-to-device messaging\n// ==========================\n\n/**\n * Send an event to a specific list of devices\n *\n * @param {string} eventType type of event to send\n * @param {Object.<string, Object<string, Object>>} contentMap\n * content to send. Map from user_id to device_id to content object.\n * @param {string=} txnId transaction id. One will be made up if not\n * supplied.\n * @return {module:client.Promise} Resolves to the result object\n */\nMatrixBaseApis.prototype.sendToDevice = function (eventType, contentMap, txnId) {\n var path = utils.encodeUri(\"/sendToDevice/$eventType/$txnId\", {\n $eventType: eventType,\n $txnId: txnId ? txnId : this.makeTxnId()\n });\n\n var body = {\n messages: contentMap\n };\n\n return this._http.authedRequestWithPrefix(undefined, \"PUT\", path, undefined, body, httpApi.PREFIX_UNSTABLE);\n};\n\n// Third party Lookup API\n// ======================\n\n/**\n * Get the third party protocols that can be reached using\n * this HS\n * @return {module:client.Promise} Resolves to the result object\n */\nMatrixBaseApis.prototype.getThirdpartyProtocols = function () {\n return this._http.authedRequestWithPrefix(undefined, \"GET\", \"/thirdparty/protocols\", undefined, undefined, httpApi.PREFIX_UNSTABLE).then(function (response) {\n // sanity check\n if (!response || (typeof response === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(response)) !== 'object') {\n throw new Error(\"/thirdparty/protocols did not return an object: \" + response);\n }\n return response;\n });\n};\n\n/**\n * Get information on how a specific place on a third party protocol\n * may be reached.\n * @param {string} protocol The protocol given in getThirdpartyProtocols()\n * @param {object} params Protocol-specific parameters, as given in the\n * response to getThirdpartyProtocols()\n * @return {module:client.Promise} Resolves to the result object\n */\nMatrixBaseApis.prototype.getThirdpartyLocation = function (protocol, params) {\n var path = utils.encodeUri(\"/thirdparty/location/$protocol\", {\n $protocol: protocol\n });\n\n return this._http.authedRequestWithPrefix(undefined, \"GET\", path, params, undefined, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Get information on how a specific user on a third party protocol\n * may be reached.\n * @param {string} protocol The protocol given in getThirdpartyProtocols()\n * @param {object} params Protocol-specific parameters, as given in the\n * response to getThirdpartyProtocols()\n * @return {module:client.Promise} Resolves to the result object\n */\nMatrixBaseApis.prototype.getThirdpartyUser = function (protocol, params) {\n var path = utils.encodeUri(\"/thirdparty/user/$protocol\", {\n $protocol: protocol\n });\n\n return this._http.authedRequestWithPrefix(undefined, \"GET\", path, params, undefined, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * MatrixBaseApis object\n */\nmodule.exports = MatrixBaseApis;\n//# sourceMappingURL=base-apis.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * This is an internal module which manages queuing, scheduling and retrying\n * of requests.\n * @module scheduler\n */\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utils = require(\"./utils\");\n\n\nvar DEBUG = false; // set true to enable console logging.\n\n/**\n * Construct a scheduler for Matrix. Requires\n * {@link module:scheduler~MatrixScheduler#setProcessFunction} to be provided\n * with a way of processing events.\n * @constructor\n * @param {module:scheduler~retryAlgorithm} retryAlgorithm Optional. The retry\n * algorithm to apply when determining when to try to send an event again.\n * Defaults to {@link module:scheduler~MatrixScheduler.RETRY_BACKOFF_RATELIMIT}.\n * @param {module:scheduler~queueAlgorithm} queueAlgorithm Optional. The queuing\n * algorithm to apply when determining which events should be sent before the\n * given event. Defaults to {@link module:scheduler~MatrixScheduler.QUEUE_MESSAGES}.\n */\nfunction MatrixScheduler(retryAlgorithm, queueAlgorithm) {\n this.retryAlgorithm = retryAlgorithm || MatrixScheduler.RETRY_BACKOFF_RATELIMIT;\n this.queueAlgorithm = queueAlgorithm || MatrixScheduler.QUEUE_MESSAGES;\n this._queues = {\n // queueName: [{\n // event: MatrixEvent, // event to send\n // defer: Deferred, // defer to resolve/reject at the END of the retries\n // attempts: Number // number of times we've called processFn\n // }, ...]\n };\n this._activeQueues = [];\n this._procFn = null;\n}\n\n/**\n * Retrieve a queue based on an event. The event provided does not need to be in\n * the queue.\n * @param {MatrixEvent} event An event to get the queue for.\n * @return {?Array<MatrixEvent>} A shallow copy of events in the queue or null.\n * Modifying this array will not modify the list itself. Modifying events in\n * this array <i>will</i> modify the underlying event in the queue.\n * @see MatrixScheduler.removeEventFromQueue To remove an event from the queue.\n */\nMatrixScheduler.prototype.getQueueForEvent = function (event) {\n var name = this.queueAlgorithm(event);\n if (!name || !this._queues[name]) {\n return null;\n }\n return utils.map(this._queues[name], function (obj) {\n return obj.event;\n });\n};\n\n/**\n * Remove this event from the queue. The event is equal to another event if they\n * have the same ID returned from event.getId().\n * @param {MatrixEvent} event The event to remove.\n * @return {boolean} True if this event was removed.\n */\nMatrixScheduler.prototype.removeEventFromQueue = function (event) {\n var name = this.queueAlgorithm(event);\n if (!name || !this._queues[name]) {\n return false;\n }\n var removed = false;\n utils.removeElement(this._queues[name], function (element) {\n if (element.event.getId() === event.getId()) {\n // XXX we should probably reject the promise?\n // https://github.com/matrix-org/matrix-js-sdk/issues/496\n removed = true;\n return true;\n }\n });\n return removed;\n};\n\n/**\n * Set the process function. Required for events in the queue to be processed.\n * If set after events have been added to the queue, this will immediately start\n * processing them.\n * @param {module:scheduler~processFn} fn The function that can process events\n * in the queue.\n */\nMatrixScheduler.prototype.setProcessFunction = function (fn) {\n this._procFn = fn;\n _startProcessingQueues(this);\n};\n\n/**\n * Queue an event if it is required and start processing queues.\n * @param {MatrixEvent} event The event that may be queued.\n * @return {?Promise} A promise if the event was queued, which will be\n * resolved or rejected in due time, else null.\n */\nMatrixScheduler.prototype.queueEvent = function (event) {\n var queueName = this.queueAlgorithm(event);\n if (!queueName) {\n return null;\n }\n // add the event to the queue and make a deferred for it.\n if (!this._queues[queueName]) {\n this._queues[queueName] = [];\n }\n var defer = _bluebird2.default.defer();\n this._queues[queueName].push({\n event: event,\n defer: defer,\n attempts: 0\n });\n debuglog(\"Queue algorithm dumped event %s into queue '%s'\", event.getId(), queueName);\n _startProcessingQueues(this);\n return defer.promise;\n};\n\n/**\n * Retries events up to 4 times using exponential backoff. This produces wait\n * times of 2, 4, 8, and 16 seconds (30s total) after which we give up. If the\n * failure was due to a rate limited request, the time specified in the error is\n * waited before being retried.\n * @param {MatrixEvent} event\n * @param {Number} attempts\n * @param {MatrixError} err\n * @return {Number}\n * @see module:scheduler~retryAlgorithm\n */\nMatrixScheduler.RETRY_BACKOFF_RATELIMIT = function (event, attempts, err) {\n if (err.httpStatus === 400 || err.httpStatus === 403 || err.httpStatus === 401) {\n // client error; no amount of retrying with save you now.\n return -1;\n }\n // we ship with browser-request which returns { cors: rejected } when trying\n // with no connection, so if we match that, give up since they have no conn.\n if (err.cors === \"rejected\") {\n return -1;\n }\n\n if (err.name === \"M_LIMIT_EXCEEDED\") {\n var waitTime = err.data.retry_after_ms;\n if (waitTime) {\n return waitTime;\n }\n }\n if (attempts > 4) {\n return -1; // give up\n }\n return 1000 * Math.pow(2, attempts);\n};\n\n/**\n * Queues <code>m.room.message</code> events and lets other events continue\n * concurrently.\n * @param {MatrixEvent} event\n * @return {string}\n * @see module:scheduler~queueAlgorithm\n */\nMatrixScheduler.QUEUE_MESSAGES = function (event) {\n if (event.getType() === \"m.room.message\") {\n // put these events in the 'message' queue.\n return \"message\";\n }\n // allow all other events continue concurrently.\n return null;\n};\n\nfunction _startProcessingQueues(scheduler) {\n if (!scheduler._procFn) {\n return;\n }\n // for each inactive queue with events in them\n utils.forEach(utils.filter(utils.keys(scheduler._queues), function (queueName) {\n return scheduler._activeQueues.indexOf(queueName) === -1 && scheduler._queues[queueName].length > 0;\n }), function (queueName) {\n // mark the queue as active\n scheduler._activeQueues.push(queueName);\n // begin processing the head of the queue\n debuglog(\"Spinning up queue: '%s'\", queueName);\n _processQueue(scheduler, queueName);\n });\n}\n\nfunction _processQueue(scheduler, queueName) {\n // get head of queue\n var obj = _peekNextEvent(scheduler, queueName);\n if (!obj) {\n // queue is empty. Mark as inactive and stop recursing.\n var index = scheduler._activeQueues.indexOf(queueName);\n if (index >= 0) {\n scheduler._activeQueues.splice(index, 1);\n }\n debuglog(\"Stopping queue '%s' as it is now empty\", queueName);\n return;\n }\n debuglog(\"Queue '%s' has %s pending events\", queueName, scheduler._queues[queueName].length);\n // fire the process function and if it resolves, resolve the deferred. Else\n // invoke the retry algorithm.\n scheduler._procFn(obj.event).done(function (res) {\n // remove this from the queue\n _removeNextEvent(scheduler, queueName);\n debuglog(\"Queue '%s' sent event %s\", queueName, obj.event.getId());\n obj.defer.resolve(res);\n // keep processing\n _processQueue(scheduler, queueName);\n }, function (err) {\n obj.attempts += 1;\n // ask the retry algorithm when/if we should try again\n var waitTimeMs = scheduler.retryAlgorithm(obj.event, obj.attempts, err);\n debuglog(\"retry(%s) err=%s event_id=%s waitTime=%s\", obj.attempts, err, obj.event.getId(), waitTimeMs);\n if (waitTimeMs === -1) {\n // give up (you quitter!)\n debuglog(\"Queue '%s' giving up on event %s\", queueName, obj.event.getId());\n // remove this from the queue\n _removeNextEvent(scheduler, queueName);\n obj.defer.reject(err);\n // process next event\n _processQueue(scheduler, queueName);\n } else {\n setTimeout(function () {\n _processQueue(scheduler, queueName);\n }, waitTimeMs);\n }\n });\n}\n\nfunction _peekNextEvent(scheduler, queueName) {\n var queue = scheduler._queues[queueName];\n if (!utils.isArray(queue)) {\n return null;\n }\n return queue[0];\n}\n\nfunction _removeNextEvent(scheduler, queueName) {\n var queue = scheduler._queues[queueName];\n if (!utils.isArray(queue)) {\n return null;\n }\n return queue.shift();\n}\n\nfunction debuglog() {\n if (DEBUG) {\n var _console;\n\n (_console = console).log.apply(_console, arguments);\n }\n}\n\n/**\n * The retry algorithm to apply when retrying events. To stop retrying, return\n * <code>-1</code>. If this event was part of a queue, it will be removed from\n * the queue.\n * @callback retryAlgorithm\n * @param {MatrixEvent} event The event being retried.\n * @param {Number} attempts The number of failed attempts. This will always be\n * >= 1.\n * @param {MatrixError} err The most recent error message received when trying\n * to send this event.\n * @return {Number} The number of milliseconds to wait before trying again. If\n * this is 0, the request will be immediately retried. If this is\n * <code>-1</code>, the event will be marked as\n * {@link module:models/event.EventStatus.NOT_SENT} and will not be retried.\n */\n\n/**\n * The queuing algorithm to apply to events. This function must be idempotent as\n * it may be called multiple times with the same event. All queues created are\n * serviced in a FIFO manner. To send the event ASAP, return <code>null</code>\n * which will not put this event in a queue. Events that fail to send that form\n * part of a queue will be removed from the queue and the next event in the\n * queue will be sent.\n * @callback queueAlgorithm\n * @param {MatrixEvent} event The event to be sent.\n * @return {string} The name of the queue to put the event into. If a queue with\n * this name does not exist, it will be created. If this is <code>null</code>,\n * the event is not put into a queue and will be sent concurrently.\n */\n\n/**\n* The function to invoke to process (send) events in the queue.\n* @callback processFn\n* @param {MatrixEvent} event The event to send.\n* @return {Promise} Resolved/rejected depending on the outcome of the request.\n*/\n\n/**\n * The MatrixScheduler class.\n */\nmodule.exports = MatrixScheduler;\n//# sourceMappingURL=scheduler.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module store/session/webstorage\n */\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utils = require(\"../../utils\");\n\nvar DEBUG = false; // set true to enable console logging.\nvar E2E_PREFIX = \"session.e2e.\";\n\n/**\n * Construct a web storage session store, capable of storing account keys,\n * session keys and access tokens.\n * @constructor\n * @param {WebStorage} webStore A web storage implementation, e.g.\n * 'window.localStorage' or 'window.sessionStorage' or a custom implementation.\n * @throws if the supplied 'store' does not meet the Storage interface of the\n * WebStorage API.\n */\nfunction WebStorageSessionStore(webStore) {\n this.store = webStore;\n if (!utils.isFunction(webStore.getItem) || !utils.isFunction(webStore.setItem) || !utils.isFunction(webStore.removeItem) || !utils.isFunction(webStore.key) || typeof webStore.length !== 'number') {\n throw new Error(\"Supplied webStore does not meet the WebStorage API interface\");\n }\n}\n\nWebStorageSessionStore.prototype = {\n /**\n * Remove the stored end to end account for the logged-in user.\n */\n removeEndToEndAccount: function removeEndToEndAccount() {\n this.store.removeItem(KEY_END_TO_END_ACCOUNT);\n },\n\n /**\n * Load the end to end account for the logged-in user.\n * Note that the end-to-end account is now stored in the\n * crypto store rather than here: this remains here so\n * old sessions can be migrated out of the session store.\n * @return {?string} Base64 encoded account.\n */\n getEndToEndAccount: function getEndToEndAccount() {\n return this.store.getItem(KEY_END_TO_END_ACCOUNT);\n },\n\n /**\n * Retrieves the known devices for all users.\n * @return {object} A map from user ID to map of device ID to keys for the device.\n */\n getAllEndToEndDevices: function getAllEndToEndDevices() {\n var prefix = keyEndToEndDevicesForUser('');\n var devices = {};\n for (var i = 0; i < this.store.length; ++i) {\n var key = this.store.key(i);\n var userId = key.substr(prefix.length);\n if (key.startsWith(prefix)) devices[userId] = getJsonItem(this.store, key);\n }\n return devices;\n },\n\n getEndToEndDeviceTrackingStatus: function getEndToEndDeviceTrackingStatus() {\n return getJsonItem(this.store, KEY_END_TO_END_DEVICE_LIST_TRACKING_STATUS);\n },\n\n /**\n * Get the sync token corresponding to the device list.\n *\n * @return {String?} token\n */\n getEndToEndDeviceSyncToken: function getEndToEndDeviceSyncToken() {\n return getJsonItem(this.store, KEY_END_TO_END_DEVICE_SYNC_TOKEN);\n },\n\n /**\n * Removes all end to end device data from the store\n */\n removeEndToEndDeviceData: function removeEndToEndDeviceData() {\n removeByPrefix(this.store, keyEndToEndDevicesForUser(''));\n removeByPrefix(this.store, KEY_END_TO_END_DEVICE_LIST_TRACKING_STATUS);\n removeByPrefix(this.store, KEY_END_TO_END_DEVICE_SYNC_TOKEN);\n },\n\n /**\n * Retrieve the end-to-end sessions between the logged-in user and another\n * device.\n * @param {string} deviceKey The public key of the other device.\n * @return {object} A map from sessionId to Base64 end-to-end session.\n */\n getEndToEndSessions: function getEndToEndSessions(deviceKey) {\n return getJsonItem(this.store, keyEndToEndSessions(deviceKey));\n },\n\n /**\n * Retrieve all end-to-end sessions between the logged-in user and other\n * devices.\n * @return {object} A map of {deviceKey -> {sessionId -> session pickle}}\n */\n getAllEndToEndSessions: function getAllEndToEndSessions() {\n var deviceKeys = getKeysWithPrefix(this.store, keyEndToEndSessions(''));\n var results = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(deviceKeys), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var k = _step.value;\n\n var unprefixedKey = k.substr(keyEndToEndSessions('').length);\n results[unprefixedKey] = getJsonItem(this.store, k);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return results;\n },\n\n /**\n * Remove all end-to-end sessions from the store\n * This is used after migrating sessions awat from the sessions store.\n */\n removeAllEndToEndSessions: function removeAllEndToEndSessions() {\n removeByPrefix(this.store, keyEndToEndSessions(''));\n },\n\n /**\n * Retrieve a list of all known inbound group sessions\n *\n * @return {{senderKey: string, sessionId: string}}\n */\n getAllEndToEndInboundGroupSessionKeys: function getAllEndToEndInboundGroupSessionKeys() {\n var prefix = E2E_PREFIX + 'inboundgroupsessions/';\n var result = [];\n for (var i = 0; i < this.store.length; i++) {\n var key = this.store.key(i);\n if (!key.startsWith(prefix)) {\n continue;\n }\n // we can't use split, as the components we are trying to split out\n // might themselves contain '/' characters. We rely on the\n // senderKey being a (32-byte) curve25519 key, base64-encoded\n // (hence 43 characters long).\n\n result.push({\n senderKey: key.substr(prefix.length, 43),\n sessionId: key.substr(prefix.length + 44)\n });\n }\n return result;\n },\n\n getEndToEndInboundGroupSession: function getEndToEndInboundGroupSession(senderKey, sessionId) {\n var key = keyEndToEndInboundGroupSession(senderKey, sessionId);\n return this.store.getItem(key);\n },\n\n removeAllEndToEndInboundGroupSessions: function removeAllEndToEndInboundGroupSessions() {\n removeByPrefix(this.store, E2E_PREFIX + 'inboundgroupsessions/');\n },\n\n /**\n * Get the end-to-end state for all rooms\n * @return {object} roomId -> object with the end-to-end info for the room.\n */\n getAllEndToEndRooms: function getAllEndToEndRooms() {\n var roomKeys = getKeysWithPrefix(this.store, keyEndToEndRoom(''));\n var results = {};\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(roomKeys), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var k = _step2.value;\n\n var unprefixedKey = k.substr(keyEndToEndRoom('').length);\n results[unprefixedKey] = getJsonItem(this.store, k);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return results;\n },\n\n removeAllEndToEndRooms: function removeAllEndToEndRooms() {\n removeByPrefix(this.store, keyEndToEndRoom(''));\n }\n};\n\nvar KEY_END_TO_END_ACCOUNT = E2E_PREFIX + \"account\";\nvar KEY_END_TO_END_DEVICE_SYNC_TOKEN = E2E_PREFIX + \"device_sync_token\";\nvar KEY_END_TO_END_DEVICE_LIST_TRACKING_STATUS = E2E_PREFIX + \"device_tracking\";\n\nfunction keyEndToEndDevicesForUser(userId) {\n return E2E_PREFIX + \"devices/\" + userId;\n}\n\nfunction keyEndToEndSessions(deviceKey) {\n return E2E_PREFIX + \"sessions/\" + deviceKey;\n}\n\nfunction keyEndToEndInboundGroupSession(senderKey, sessionId) {\n return E2E_PREFIX + \"inboundgroupsessions/\" + senderKey + \"/\" + sessionId;\n}\n\nfunction keyEndToEndRoom(roomId) {\n return E2E_PREFIX + \"rooms/\" + roomId;\n}\n\nfunction getJsonItem(store, key) {\n try {\n // if the key is absent, store.getItem() returns null, and\n // JSON.parse(null) === null, so this returns null.\n return JSON.parse(store.getItem(key));\n } catch (e) {\n debuglog(\"Failed to get key %s: %s\", key, e);\n debuglog(e.stack);\n }\n return null;\n}\n\nfunction getKeysWithPrefix(store, prefix) {\n var results = [];\n for (var i = 0; i < store.length; ++i) {\n var key = store.key(i);\n if (key.startsWith(prefix)) results.push(key);\n }\n return results;\n}\n\nfunction removeByPrefix(store, prefix) {\n var toRemove = [];\n for (var i = 0; i < store.length; ++i) {\n var key = store.key(i);\n if (key.startsWith(prefix)) toRemove.push(key);\n }\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(toRemove), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _key = _step3.value;\n\n store.removeItem(_key);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n}\n\nfunction debuglog() {\n if (DEBUG) {\n var _console;\n\n (_console = console).log.apply(_console, arguments);\n }\n}\n\n/** */\nmodule.exports = WebStorageSessionStore;\n//# sourceMappingURL=webstorage.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/** @module timeline-window */\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EventTimeline = require(\"./models/event-timeline\");\n\n/**\n * @private\n */\nvar DEBUG = false;\n\n/**\n * @private\n */\nvar debuglog = DEBUG ? console.log.bind(console) : function () {};\n\n/**\n * the number of times we ask the server for more events before giving up\n *\n * @private\n */\nvar DEFAULT_PAGINATE_LOOP_LIMIT = 5;\n\n/**\n * Construct a TimelineWindow.\n *\n * <p>This abstracts the separate timelines in a Matrix {@link\n * module:models/room|Room} into a single iterable thing. It keeps track of\n * the start and endpoints of the window, which can be advanced with the help\n * of pagination requests.\n *\n * <p>Before the window is useful, it must be initialised by calling {@link\n * module:timeline-window~TimelineWindow#load|load}.\n *\n * <p>Note that the window will not automatically extend itself when new events\n * are received from /sync; you should arrange to call {@link\n * module:timeline-window~TimelineWindow#paginate|paginate} on {@link\n * module:client~MatrixClient.event:\"Room.timeline\"|Room.timeline} events.\n *\n * @param {MatrixClient} client MatrixClient to be used for context/pagination\n * requests.\n *\n * @param {EventTimelineSet} timelineSet The timelineSet to track\n *\n * @param {Object} [opts] Configuration options for this window\n *\n * @param {number} [opts.windowLimit = 1000] maximum number of events to keep\n * in the window. If more events are retrieved via pagination requests,\n * excess events will be dropped from the other end of the window.\n *\n * @constructor\n */\nfunction TimelineWindow(client, timelineSet, opts) {\n opts = opts || {};\n this._client = client;\n this._timelineSet = timelineSet;\n\n // these will be TimelineIndex objects; they delineate the 'start' and\n // 'end' of the window.\n //\n // _start.index is inclusive; _end.index is exclusive.\n this._start = null;\n this._end = null;\n\n this._eventCount = 0;\n this._windowLimit = opts.windowLimit || 1000;\n}\n\n/**\n * Initialise the window to point at a given event, or the live timeline\n *\n * @param {string} [initialEventId] If given, the window will contain the\n * given event\n * @param {number} [initialWindowSize = 20] Size of the initial window\n *\n * @return {module:client.Promise}\n */\nTimelineWindow.prototype.load = function (initialEventId, initialWindowSize) {\n var self = this;\n initialWindowSize = initialWindowSize || 20;\n\n // given an EventTimeline, find the event we were looking for, and initialise our\n // fields so that the event in question is in the middle of the window.\n var initFields = function initFields(timeline) {\n var eventIndex = void 0;\n\n var events = timeline.getEvents();\n\n if (!initialEventId) {\n // we were looking for the live timeline: initialise to the end\n eventIndex = events.length;\n } else {\n for (var i = 0; i < events.length; i++) {\n if (events[i].getId() == initialEventId) {\n eventIndex = i;\n break;\n }\n }\n\n if (eventIndex === undefined) {\n throw new Error(\"getEventTimeline result didn't include requested event\");\n }\n }\n\n var endIndex = Math.min(events.length, eventIndex + Math.ceil(initialWindowSize / 2));\n var startIndex = Math.max(0, endIndex - initialWindowSize);\n self._start = new TimelineIndex(timeline, startIndex - timeline.getBaseIndex());\n self._end = new TimelineIndex(timeline, endIndex - timeline.getBaseIndex());\n self._eventCount = endIndex - startIndex;\n };\n\n // We avoid delaying the resolution of the promise by a reactor tick if\n // we already have the data we need, which is important to keep room-switching\n // feeling snappy.\n //\n if (initialEventId) {\n var prom = this._client.getEventTimeline(this._timelineSet, initialEventId);\n\n if (prom.isFulfilled()) {\n initFields(prom.value());\n return _bluebird2.default.resolve();\n } else {\n return prom.then(initFields);\n }\n } else {\n var tl = this._timelineSet.getLiveTimeline();\n initFields(tl);\n return _bluebird2.default.resolve();\n }\n};\n\n/**\n * Check if this window can be extended\n *\n * <p>This returns true if we either have more events, or if we have a\n * pagination token which means we can paginate in that direction. It does not\n * necessarily mean that there are more events available in that direction at\n * this time.\n *\n * @param {string} direction EventTimeline.BACKWARDS to check if we can\n * paginate backwards; EventTimeline.FORWARDS to check if we can go forwards\n *\n * @return {boolean} true if we can paginate in the given direction\n */\nTimelineWindow.prototype.canPaginate = function (direction) {\n var tl = void 0;\n if (direction == EventTimeline.BACKWARDS) {\n tl = this._start;\n } else if (direction == EventTimeline.FORWARDS) {\n tl = this._end;\n } else {\n throw new Error(\"Invalid direction '\" + direction + \"'\");\n }\n\n if (!tl) {\n debuglog(\"TimelineWindow: no timeline yet\");\n return false;\n }\n\n if (direction == EventTimeline.BACKWARDS) {\n if (tl.index > tl.minIndex()) {\n return true;\n }\n } else {\n if (tl.index < tl.maxIndex()) {\n return true;\n }\n }\n\n return Boolean(tl.timeline.getNeighbouringTimeline(direction) || tl.timeline.getPaginationToken(direction));\n};\n\n/**\n * Attempt to extend the window\n *\n * @param {string} direction EventTimeline.BACKWARDS to extend the window\n * backwards (towards older events); EventTimeline.FORWARDS to go forwards.\n *\n * @param {number} size number of events to try to extend by. If fewer than this\n * number are immediately available, then we return immediately rather than\n * making an API call.\n *\n * @param {boolean} [makeRequest = true] whether we should make API calls to\n * fetch further events if we don't have any at all. (This has no effect if\n * the room already knows about additional events in the relevant direction,\n * even if there are fewer than 'size' of them, as we will just return those\n * we already know about.)\n *\n * @param {number} [requestLimit = 5] limit for the number of API requests we\n * should make.\n *\n * @return {module:client.Promise} Resolves to a boolean which is true if more events\n * were successfully retrieved.\n */\nTimelineWindow.prototype.paginate = function (direction, size, makeRequest, requestLimit) {\n // Either wind back the message cap (if there are enough events in the\n // timeline to do so), or fire off a pagination request.\n\n if (makeRequest === undefined) {\n makeRequest = true;\n }\n\n if (requestLimit === undefined) {\n requestLimit = DEFAULT_PAGINATE_LOOP_LIMIT;\n }\n\n var tl = void 0;\n if (direction == EventTimeline.BACKWARDS) {\n tl = this._start;\n } else if (direction == EventTimeline.FORWARDS) {\n tl = this._end;\n } else {\n throw new Error(\"Invalid direction '\" + direction + \"'\");\n }\n\n if (!tl) {\n debuglog(\"TimelineWindow: no timeline yet\");\n return _bluebird2.default.resolve(false);\n }\n\n if (tl.pendingPaginate) {\n return tl.pendingPaginate;\n }\n\n // try moving the cap\n var count = direction == EventTimeline.BACKWARDS ? tl.retreat(size) : tl.advance(size);\n\n if (count) {\n this._eventCount += count;\n debuglog(\"TimelineWindow: increased cap by \" + count + \" (now \" + this._eventCount + \")\");\n // remove some events from the other end, if necessary\n var excess = this._eventCount - this._windowLimit;\n if (excess > 0) {\n this.unpaginate(excess, direction != EventTimeline.BACKWARDS);\n }\n return _bluebird2.default.resolve(true);\n }\n\n if (!makeRequest || requestLimit === 0) {\n // todo: should we return something different to indicate that there\n // might be more events out there, but we haven't found them yet?\n return _bluebird2.default.resolve(false);\n }\n\n // try making a pagination request\n var token = tl.timeline.getPaginationToken(direction);\n if (!token) {\n debuglog(\"TimelineWindow: no token\");\n return _bluebird2.default.resolve(false);\n }\n\n debuglog(\"TimelineWindow: starting request\");\n var self = this;\n\n var prom = this._client.paginateEventTimeline(tl.timeline, {\n backwards: direction == EventTimeline.BACKWARDS,\n limit: size\n }).finally(function () {\n tl.pendingPaginate = null;\n }).then(function (r) {\n debuglog(\"TimelineWindow: request completed with result \" + r);\n if (!r) {\n // end of timeline\n return false;\n }\n\n // recurse to advance the index into the results.\n //\n // If we don't get any new events, we want to make sure we keep asking\n // the server for events for as long as we have a valid pagination\n // token. In particular, we want to know if we've actually hit the\n // start of the timeline, or if we just happened to know about all of\n // the events thanks to https://matrix.org/jira/browse/SYN-645.\n //\n // On the other hand, we necessarily want to wait forever for the\n // server to make its mind up about whether there are other events,\n // because it gives a bad user experience\n // (https://github.com/vector-im/vector-web/issues/1204).\n return self.paginate(direction, size, true, requestLimit - 1);\n });\n tl.pendingPaginate = prom;\n return prom;\n};\n\n/**\n * Remove `delta` events from the start or end of the timeline.\n *\n * @param {number} delta number of events to remove from the timeline\n * @param {boolean} startOfTimeline if events should be removed from the start\n * of the timeline.\n */\nTimelineWindow.prototype.unpaginate = function (delta, startOfTimeline) {\n var tl = startOfTimeline ? this._start : this._end;\n\n // sanity-check the delta\n if (delta > this._eventCount || delta < 0) {\n throw new Error(\"Attemting to unpaginate \" + delta + \" events, but \" + \"only have \" + this._eventCount + \" in the timeline\");\n }\n\n while (delta > 0) {\n var count = startOfTimeline ? tl.advance(delta) : tl.retreat(delta);\n if (count <= 0) {\n // sadness. This shouldn't be possible.\n throw new Error(\"Unable to unpaginate any further, but still have \" + this._eventCount + \" events\");\n }\n\n delta -= count;\n this._eventCount -= count;\n debuglog(\"TimelineWindow.unpaginate: dropped \" + count + \" (now \" + this._eventCount + \")\");\n }\n};\n\n/**\n * Get a list of the events currently in the window\n *\n * @return {MatrixEvent[]} the events in the window\n */\nTimelineWindow.prototype.getEvents = function () {\n if (!this._start) {\n // not yet loaded\n return [];\n }\n\n var result = [];\n\n // iterate through each timeline between this._start and this._end\n // (inclusive).\n var timeline = this._start.timeline;\n while (true) {\n var events = timeline.getEvents();\n\n // For the first timeline in the chain, we want to start at\n // this._start.index. For the last timeline in the chain, we want to\n // stop before this._end.index. Otherwise, we want to copy all of the\n // events in the timeline.\n //\n // (Note that both this._start.index and this._end.index are relative\n // to their respective timelines' BaseIndex).\n //\n var startIndex = 0,\n endIndex = events.length;\n if (timeline === this._start.timeline) {\n startIndex = this._start.index + timeline.getBaseIndex();\n }\n if (timeline === this._end.timeline) {\n endIndex = this._end.index + timeline.getBaseIndex();\n }\n\n for (var i = startIndex; i < endIndex; i++) {\n result.push(events[i]);\n }\n\n // if we're not done, iterate to the next timeline.\n if (timeline === this._end.timeline) {\n break;\n } else {\n timeline = timeline.getNeighbouringTimeline(EventTimeline.FORWARDS);\n }\n }\n\n return result;\n};\n\n/**\n * a thing which contains a timeline reference, and an index into it.\n *\n * @constructor\n * @param {EventTimeline} timeline\n * @param {number} index\n * @private\n */\nfunction TimelineIndex(timeline, index) {\n this.timeline = timeline;\n\n // the indexes are relative to BaseIndex, so could well be negative.\n this.index = index;\n}\n\n/**\n * @return {number} the minimum possible value for the index in the current\n * timeline\n */\nTimelineIndex.prototype.minIndex = function () {\n return this.timeline.getBaseIndex() * -1;\n};\n\n/**\n * @return {number} the maximum possible value for the index in the current\n * timeline (exclusive - ie, it actually returns one more than the index\n * of the last element).\n */\nTimelineIndex.prototype.maxIndex = function () {\n return this.timeline.getEvents().length - this.timeline.getBaseIndex();\n};\n\n/**\n * Try move the index forward, or into the neighbouring timeline\n *\n * @param {number} delta number of events to advance by\n * @return {number} number of events successfully advanced by\n */\nTimelineIndex.prototype.advance = function (delta) {\n if (!delta) {\n return 0;\n }\n\n // first try moving the index in the current timeline. See if there is room\n // to do so.\n var cappedDelta = void 0;\n if (delta < 0) {\n // we want to wind the index backwards.\n //\n // (this.minIndex() - this.index) is a negative number whose magnitude\n // is the amount of room we have to wind back the index in the current\n // timeline. We cap delta to this quantity.\n cappedDelta = Math.max(delta, this.minIndex() - this.index);\n if (cappedDelta < 0) {\n this.index += cappedDelta;\n return cappedDelta;\n }\n } else {\n // we want to wind the index forwards.\n //\n // (this.maxIndex() - this.index) is a (positive) number whose magnitude\n // is the amount of room we have to wind forward the index in the current\n // timeline. We cap delta to this quantity.\n cappedDelta = Math.min(delta, this.maxIndex() - this.index);\n if (cappedDelta > 0) {\n this.index += cappedDelta;\n return cappedDelta;\n }\n }\n\n // the index is already at the start/end of the current timeline.\n //\n // next see if there is a neighbouring timeline to switch to.\n var neighbour = this.timeline.getNeighbouringTimeline(delta < 0 ? EventTimeline.BACKWARDS : EventTimeline.FORWARDS);\n if (neighbour) {\n this.timeline = neighbour;\n if (delta < 0) {\n this.index = this.maxIndex();\n } else {\n this.index = this.minIndex();\n }\n\n debuglog(\"paginate: switched to new neighbour\");\n\n // recurse, using the next timeline\n return this.advance(delta);\n }\n\n return 0;\n};\n\n/**\n * Try move the index backwards, or into the neighbouring timeline\n *\n * @param {number} delta number of events to retreat by\n * @return {number} number of events successfully retreated by\n */\nTimelineIndex.prototype.retreat = function (delta) {\n return this.advance(delta * -1) * -1;\n};\n\n/**\n * The TimelineWindow class.\n */\nmodule.exports.TimelineWindow = TimelineWindow;\n\n/**\n * The TimelineIndex class. exported here for unit testing.\n */\nmodule.exports.TimelineIndex = TimelineIndex;\n//# sourceMappingURL=timeline-window.js.map","/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/** @module interactive-auth */\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar url = require(\"url\");\n\nvar utils = require(\"./utils\");\n\nvar EMAIL_STAGE_TYPE = \"m.login.email.identity\";\nvar MSISDN_STAGE_TYPE = \"m.login.msisdn\";\n\n/**\n * Abstracts the logic used to drive the interactive auth process.\n *\n * <p>Components implementing an interactive auth flow should instantiate one of\n * these, passing in the necessary callbacks to the constructor. They should\n * then call attemptAuth, which will return a promise which will resolve or\n * reject when the interactive-auth process completes.\n *\n * <p>Meanwhile, calls will be made to the startAuthStage and doRequest\n * callbacks, and information gathered from the user can be submitted with\n * submitAuthDict.\n *\n * @constructor\n * @alias module:interactive-auth\n *\n * @param {object} opts options object\n *\n * @param {object} opts.matrixClient A matrix client to use for the auth process\n *\n * @param {object?} opts.authData error response from the last request. If\n * null, a request will be made with no auth before starting.\n *\n * @param {function(object?, bool?): module:client.Promise} opts.doRequest\n * called with the new auth dict to submit the request and a flag set\n * to true if this request is a background request. Should return a\n * promise which resolves to the successful response or rejects with a\n * MatrixError.\n *\n * @param {function(string, object?)} opts.stateUpdated\n * called when the status of the UI auth changes, ie. when the state of\n * an auth stage changes of when the auth flow moves to a new stage.\n * The arguments are: the login type (eg m.login.password); and an object\n * which is either an error or an informational object specific to the\n * login type. If the 'errcode' key is defined, the object is an error,\n * and has keys:\n * errcode: string, the textual error code, eg. M_UNKNOWN\n * error: string, human readable string describing the error\n *\n * The login type specific objects are as follows:\n * m.login.email.identity:\n * * emailSid: string, the sid of the active email auth session\n *\n * @param {object?} opts.inputs Inputs provided by the user and used by different\n * stages of the auto process. The inputs provided will affect what flow is chosen.\n *\n * @param {string?} opts.inputs.emailAddress An email address. If supplied, a flow\n * using email verification will be chosen.\n *\n * @param {string?} opts.inputs.phoneCountry An ISO two letter country code. Gives\n * the country that opts.phoneNumber should be resolved relative to.\n *\n * @param {string?} opts.inputs.phoneNumber A phone number. If supplied, a flow\n * using phone number validation will be chosen.\n *\n * @param {string?} opts.sessionId If resuming an existing interactive auth session,\n * the sessionId of that session.\n *\n * @param {string?} opts.clientSecret If resuming an existing interactive auth session,\n * the client secret for that session\n *\n * @param {string?} opts.emailSid If returning from having completed m.login.email.identity\n * auth, the sid for the email verification session.\n *\n */\nfunction InteractiveAuth(opts) {\n this._matrixClient = opts.matrixClient;\n this._data = opts.authData || {};\n this._requestCallback = opts.doRequest;\n // startAuthStage included for backwards compat\n this._stateUpdatedCallback = opts.stateUpdated || opts.startAuthStage;\n this._completionDeferred = null;\n this._inputs = opts.inputs || {};\n\n if (opts.sessionId) this._data.session = opts.sessionId;\n this._clientSecret = opts.clientSecret || this._matrixClient.generateClientSecret();\n this._emailSid = opts.emailSid;\n if (this._emailSid === undefined) this._emailSid = null;\n\n this._currentStage = null;\n}\n\nInteractiveAuth.prototype = {\n /**\n * begin the authentication process.\n *\n * @return {module:client.Promise} which resolves to the response on success,\n * or rejects with the error on failure. Rejects with NoAuthFlowFoundError if\n * no suitable authentication flow can be found\n */\n attemptAuth: function attemptAuth() {\n var _this = this;\n\n this._completionDeferred = _bluebird2.default.defer();\n\n // wrap in a promise so that if _startNextAuthStage\n // throws, it rejects the promise in a consistent way\n return _bluebird2.default.resolve().then(function () {\n // if we have no flows, try a request (we'll have\n // just a session ID in _data if resuming)\n if (!_this._data.flows) {\n _this._doRequest(_this._data);\n } else {\n _this._startNextAuthStage();\n }\n return _this._completionDeferred.promise;\n });\n },\n\n /**\n * Poll to check if the auth session or current stage has been\n * completed out-of-band. If so, the attemptAuth promise will\n * be resolved.\n */\n poll: function poll() {\n if (!this._data.session) return;\n\n var authDict = {};\n if (this._currentStage == EMAIL_STAGE_TYPE) {\n // The email can be validated out-of-band, but we need to provide the\n // creds so the HS can go & check it.\n if (this._emailSid) {\n var idServerParsedUrl = url.parse(this._matrixClient.getIdentityServerUrl());\n authDict = {\n type: EMAIL_STAGE_TYPE,\n threepid_creds: {\n sid: this._emailSid,\n client_secret: this._clientSecret,\n id_server: idServerParsedUrl.host\n }\n };\n }\n }\n\n this.submitAuthDict(authDict, true);\n },\n\n /**\n * get the auth session ID\n *\n * @return {string} session id\n */\n getSessionId: function getSessionId() {\n return this._data ? this._data.session : undefined;\n },\n\n /**\n * get the client secret used for validation sessions\n * with the ID server.\n *\n * @return {string} client secret\n */\n getClientSecret: function getClientSecret() {\n return this._clientSecret;\n },\n\n /**\n * get the server params for a given stage\n *\n * @param {string} loginType login type for the stage\n * @return {object?} any parameters from the server for this stage\n */\n getStageParams: function getStageParams(loginType) {\n var params = {};\n if (this._data && this._data.params) {\n params = this._data.params;\n }\n return params[loginType];\n },\n\n /**\n * submit a new auth dict and fire off the request. This will either\n * make attemptAuth resolve/reject, or cause the startAuthStage callback\n * to be called for a new stage.\n *\n * @param {object} authData new auth dict to send to the server. Should\n * include a `type` propterty denoting the login type, as well as any\n * other params for that stage.\n * @param {bool} background If true, this request failing will not result\n * in the attemptAuth promise being rejected. This can be set to true\n * for requests that just poll to see if auth has been completed elsewhere.\n */\n submitAuthDict: function submitAuthDict(authData, background) {\n if (!this._completionDeferred) {\n throw new Error(\"submitAuthDict() called before attemptAuth()\");\n }\n\n // use the sessionid from the last request.\n var auth = {\n session: this._data.session\n };\n utils.extend(auth, authData);\n\n this._doRequest(auth, background);\n },\n\n /**\n * Gets the sid for the email validation session\n * Specific to m.login.email.identity\n *\n * @returns {string} The sid of the email auth session\n */\n getEmailSid: function getEmailSid() {\n return this._emailSid;\n },\n\n /**\n * Sets the sid for the email validation session\n * This must be set in order to successfully poll for completion\n * of the email validation.\n * Specific to m.login.email.identity\n *\n * @param {string} sid The sid for the email validation session\n */\n setEmailSid: function setEmailSid(sid) {\n this._emailSid = sid;\n },\n\n /**\n * Fire off a request, and either resolve the promise, or call\n * startAuthStage.\n *\n * @private\n * @param {object?} auth new auth dict, including session id\n * @param {bool?} background If true, this request is a background poll, so it\n * failing will not result in the attemptAuth promise being rejected.\n * This can be set to true for requests that just poll to see if auth has\n * been completed elsewhere.\n */\n _doRequest: function _doRequest(auth, background) {\n var _this2 = this;\n\n var self = this;\n\n // hackery to make sure that synchronous exceptions end up in the catch\n // handler (without the additional event loop entailed by q.fcall or an\n // extra Promise.resolve().then)\n var prom = void 0;\n try {\n prom = this._requestCallback(auth, background);\n } catch (e) {\n prom = _bluebird2.default.reject(e);\n }\n\n prom = prom.then(function (result) {\n console.log(\"result from request: \", result);\n self._completionDeferred.resolve(result);\n }, function (error) {\n // sometimes UI auth errors don't come with flows\n var errorFlows = error.data ? error.data.flows : null;\n var haveFlows = Boolean(self._data.flows) || Boolean(errorFlows);\n if (error.httpStatus !== 401 || !error.data || !haveFlows) {\n // doesn't look like an interactive-auth failure. fail the whole lot.\n throw error;\n }\n // if the error didn't come with flows, completed flows or session ID,\n // copy over the ones we have. Synapse sometimes sends responses without\n // any UI auth data (eg. when polling for email validation, if the email\n // has not yet been validated). This appears to be a Synapse bug, which\n // we workaround here.\n if (!error.data.flows && !error.data.completed && !error.data.session) {\n error.data.flows = self._data.flows;\n error.data.completed = self._data.completed;\n error.data.session = self._data.session;\n }\n self._data = error.data;\n self._startNextAuthStage();\n });\n if (!background) {\n prom = prom.catch(function (e) {\n _this2._completionDeferred.reject(e);\n });\n } else {\n // We ignore all failures here (even non-UI auth related ones)\n // since we don't want to suddenly fail if the internet connection\n // had a blip whilst we were polling\n prom = prom.catch(function (error) {\n console.log(\"Ignoring error from UI auth: \" + error);\n });\n }\n prom.done();\n },\n\n /**\n * Pick the next stage and call the callback\n *\n * @private\n * @throws {NoAuthFlowFoundError} If no suitable authentication flow can be found\n */\n _startNextAuthStage: function _startNextAuthStage() {\n var nextStage = this._chooseStage();\n if (!nextStage) {\n throw new Error(\"No incomplete flows from the server\");\n }\n this._currentStage = nextStage;\n\n if (nextStage == 'm.login.dummy') {\n this.submitAuthDict({\n type: 'm.login.dummy'\n });\n return;\n }\n\n if (this._data.errcode || this._data.error) {\n this._stateUpdatedCallback(nextStage, {\n errcode: this._data.errcode || \"\",\n error: this._data.error || \"\"\n });\n return;\n }\n\n var stageStatus = {};\n if (nextStage == EMAIL_STAGE_TYPE) {\n stageStatus.emailSid = this._emailSid;\n }\n this._stateUpdatedCallback(nextStage, stageStatus);\n },\n\n /**\n * Pick the next auth stage\n *\n * @private\n * @return {string?} login type\n * @throws {NoAuthFlowFoundError} If no suitable authentication flow can be found\n */\n _chooseStage: function _chooseStage() {\n var flow = this._chooseFlow();\n console.log(\"Active flow => %s\", (0, _stringify2.default)(flow));\n var nextStage = this._firstUncompletedStage(flow);\n console.log(\"Next stage: %s\", nextStage);\n return nextStage;\n },\n\n /**\n * Pick one of the flows from the returned list\n * If a flow using all of the inputs is found, it will\n * be returned, otherwise, null will be returned.\n *\n * Only flows using all given inputs are chosen because it\n * is likley to be surprising if the user provides a\n * credential and it is not used. For example, for registration,\n * this could result in the email not being used which would leave\n * the account with no means to reset a password.\n *\n * @private\n * @return {object} flow\n * @throws {NoAuthFlowFoundError} If no suitable authentication flow can be found\n */\n _chooseFlow: function _chooseFlow() {\n var flows = this._data.flows || [];\n\n // we've been given an email or we've already done an email part\n var haveEmail = Boolean(this._inputs.emailAddress) || Boolean(this._emailSid);\n var haveMsisdn = Boolean(this._inputs.phoneCountry) && Boolean(this._inputs.phoneNumber);\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(flows), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var flow = _step.value;\n\n var flowHasEmail = false;\n var flowHasMsisdn = false;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(flow.stages), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var stage = _step2.value;\n\n if (stage === EMAIL_STAGE_TYPE) {\n flowHasEmail = true;\n } else if (stage == MSISDN_STAGE_TYPE) {\n flowHasMsisdn = true;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n if (flowHasEmail == haveEmail && flowHasMsisdn == haveMsisdn) {\n return flow;\n }\n }\n // Throw an error with a fairly generic description, but with more\n // information such that the app can give a better one if so desired.\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var err = new Error(\"No appropriate authentication flow found\");\n err.name = 'NoAuthFlowFoundError';\n err.required_stages = [];\n if (haveEmail) err.required_stages.push(EMAIL_STAGE_TYPE);\n if (haveMsisdn) err.required_stages.push(MSISDN_STAGE_TYPE);\n err.available_flows = flows;\n throw err;\n },\n\n /**\n * Get the first uncompleted stage in the given flow\n *\n * @private\n * @param {object} flow\n * @return {string} login type\n */\n _firstUncompletedStage: function _firstUncompletedStage(flow) {\n var completed = (this._data || {}).completed || [];\n for (var i = 0; i < flow.stages.length; ++i) {\n var stageType = flow.stages[i];\n if (completed.indexOf(stageType) === -1) {\n return stageType;\n }\n }\n }\n};\n\n/** */\nmodule.exports = InteractiveAuth;\n//# sourceMappingURL=interactive-auth.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AutoDiscovery = undefined;\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _url = require(\"url\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar logger = require(\"./logger\"); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/** @module auto-discovery */\n\n// Dev note: Auto discovery is part of the spec.\n// See: https://matrix.org/docs/spec/client_server/r0.4.0.html#server-discovery\n\n/**\n * Description for what an automatically discovered client configuration\n * would look like. Although this is a class, it is recommended that it\n * be treated as an interface definition rather than as a class.\n *\n * Additional properties than those defined here may be present, and\n * should follow the Java package naming convention.\n */\nvar DiscoveredClientConfig = // eslint-disable-line no-unused-vars\n// Dev note: this is basically a copy/paste of the .well-known response\n// object as defined in the spec. It does have additional information,\n// however. Overall, this exists to serve as a place for documentation\n// and not functionality.\n// See https://matrix.org/docs/spec/client_server/r0.4.0.html#get-well-known-matrix-client\n\nfunction DiscoveredClientConfig() {\n (0, _classCallCheck3.default)(this, DiscoveredClientConfig);\n\n /**\n * The homeserver configuration the client should use. This will\n * always be present on the object.\n * @type {{state: string, base_url: string}} The configuration.\n */\n this[\"m.homeserver\"] = {\n /**\n * The lookup result state. If this is anything other than\n * AutoDiscovery.SUCCESS then base_url may be falsey. Additionally,\n * if this is not AutoDiscovery.SUCCESS then the client should\n * assume the other properties in the client config (such as\n * the identity server configuration) are not valid.\n */\n state: AutoDiscovery.PROMPT,\n\n /**\n * If the state is AutoDiscovery.FAIL_ERROR or .FAIL_PROMPT\n * then this will contain a human-readable (English) message\n * for what went wrong. If the state is none of those previously\n * mentioned, this will be falsey.\n */\n error: \"Something went wrong\",\n\n /**\n * The base URL clients should use to talk to the homeserver,\n * particularly for the login process. May be falsey if the\n * state is not AutoDiscovery.SUCCESS.\n */\n base_url: \"https://matrix.org\"\n };\n\n /**\n * The identity server configuration the client should use. This\n * will always be present on teh object.\n * @type {{state: string, base_url: string}} The configuration.\n */\n this[\"m.identity_server\"] = {\n /**\n * The lookup result state. If this is anything other than\n * AutoDiscovery.SUCCESS then base_url may be falsey.\n */\n state: AutoDiscovery.PROMPT,\n\n /**\n * The base URL clients should use for interacting with the\n * identity server. May be falsey if the state is not\n * AutoDiscovery.SUCCESS.\n */\n base_url: \"https://vector.im\"\n };\n};\n\n/**\n * Utilities for automatically discovery resources, such as homeservers\n * for users to log in to.\n */\n\n\nvar AutoDiscovery = exports.AutoDiscovery = function () {\n function AutoDiscovery() {\n (0, _classCallCheck3.default)(this, AutoDiscovery);\n }\n\n (0, _createClass3.default)(AutoDiscovery, null, [{\n key: \"findClientConfig\",\n\n\n /**\n * Attempts to automatically discover client configuration information\n * prior to logging in. Such information includes the homeserver URL\n * and identity server URL the client would want. Additional details\n * may also be discovered, and will be transparently included in the\n * response object unaltered.\n * @param {string} domain The homeserver domain to perform discovery\n * on. For example, \"matrix.org\".\n * @return {Promise<DiscoveredClientConfig>} Resolves to the discovered\n * configuration, which may include error states. Rejects on unexpected\n * failure, not when discovery fails.\n */\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(domain) {\n var clientConfig, wellknown, hsUrl, hsVersions, isUrl, failingClientConfig, isResponse;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(!domain || typeof domain !== \"string\" || domain.length === 0)) {\n _context.next = 2;\n break;\n }\n\n throw new Error(\"'domain' must be a string of non-zero length\");\n\n case 2:\n\n // We use a .well-known lookup for all cases. According to the spec, we\n // can do other discovery mechanisms if we want such as custom lookups\n // however we won't bother with that here (mostly because the spec only\n // supports .well-known right now).\n //\n // By using .well-known, we need to ensure we at least pull out a URL\n // for the homeserver. We don't really need an identity server configuration\n // but will return one anyways (with state PROMPT) to make development\n // easier for clients. If we can't get a homeserver URL, all bets are\n // off on the rest of the config and we'll assume it is invalid too.\n\n // We default to an error state to make the first few checks easier to\n // write. We'll update the properties of this object over the duration\n // of this function.\n clientConfig = {\n \"m.homeserver\": {\n state: AutoDiscovery.FAIL_ERROR,\n error: \"Invalid homeserver discovery response\",\n base_url: null\n },\n \"m.identity_server\": {\n // Technically, we don't have a problem with the identity server\n // config at this point.\n state: AutoDiscovery.PROMPT,\n error: null,\n base_url: null\n }\n };\n\n // Step 1: Actually request the .well-known JSON file and make sure it\n // at least has a homeserver definition.\n\n _context.next = 5;\n return (0, _bluebird.resolve)(this._fetchWellKnownObject(\"https://\" + domain + \"/.well-known/matrix/client\"));\n\n case 5:\n wellknown = _context.sent;\n\n if (!(!wellknown || wellknown.action !== \"SUCCESS\" || !wellknown.raw[\"m.homeserver\"] || !wellknown.raw[\"m.homeserver\"][\"base_url\"])) {\n _context.next = 11;\n break;\n }\n\n logger.error(\"No m.homeserver key in well-known response\");\n if (wellknown.reason) logger.error(wellknown.reason);\n if (wellknown.action === \"IGNORE\") {\n clientConfig[\"m.homeserver\"] = {\n state: AutoDiscovery.PROMPT,\n error: null,\n base_url: null\n };\n } else {\n // this can only ever be FAIL_PROMPT at this point.\n clientConfig[\"m.homeserver\"].state = AutoDiscovery.FAIL_PROMPT;\n }\n return _context.abrupt(\"return\", _bluebird2.default.resolve(clientConfig));\n\n case 11:\n\n // Step 2: Make sure the homeserver URL is valid *looking*. We'll make\n // sure it points to a homeserver in Step 3.\n hsUrl = this._sanitizeWellKnownUrl(wellknown.raw[\"m.homeserver\"][\"base_url\"]);\n\n if (hsUrl) {\n _context.next = 15;\n break;\n }\n\n logger.error(\"Invalid base_url for m.homeserver\");\n return _context.abrupt(\"return\", _bluebird2.default.resolve(clientConfig));\n\n case 15:\n _context.next = 17;\n return (0, _bluebird.resolve)(this._fetchWellKnownObject(hsUrl + \"/_matrix/client/versions\"));\n\n case 17:\n hsVersions = _context.sent;\n\n if (!(!hsVersions || !hsVersions.raw[\"versions\"])) {\n _context.next = 21;\n break;\n }\n\n logger.error(\"Invalid /versions response\");\n return _context.abrupt(\"return\", _bluebird2.default.resolve(clientConfig));\n\n case 21:\n\n // Step 4: Now that the homeserver looks valid, update our client config.\n clientConfig[\"m.homeserver\"] = {\n state: AutoDiscovery.SUCCESS,\n error: null,\n base_url: hsUrl\n };\n\n // Step 5: Try to pull out the identity server configuration\n isUrl = \"\";\n\n if (!wellknown.raw[\"m.identity_server\"]) {\n _context.next = 35;\n break;\n }\n\n // We prepare a failing identity server response to save lines later\n // in this branch. Note that we also fail the homeserver check in the\n // object because according to the spec we're supposed to FAIL_ERROR\n // if *anything* goes wrong with the IS validation, including invalid\n // format. This means we're supposed to stop discovery completely.\n failingClientConfig = {\n \"m.homeserver\": {\n state: AutoDiscovery.FAIL_ERROR,\n error: \"Invalid identity server discovery response\",\n\n // We'll provide the base_url that was previously valid for\n // debugging purposes.\n base_url: clientConfig[\"m.homeserver\"].base_url\n },\n \"m.identity_server\": {\n state: AutoDiscovery.FAIL_ERROR,\n error: \"Invalid identity server discovery response\",\n base_url: null\n }\n };\n\n // Step 5a: Make sure the URL is valid *looking*. We'll make sure it\n // points to an identity server in Step 5b.\n\n isUrl = this._sanitizeWellKnownUrl(wellknown.raw[\"m.identity_server\"][\"base_url\"]);\n\n if (isUrl) {\n _context.next = 29;\n break;\n }\n\n logger.error(\"Invalid base_url for m.identity_server\");\n return _context.abrupt(\"return\", _bluebird2.default.resolve(failingClientConfig));\n\n case 29:\n _context.next = 31;\n return (0, _bluebird.resolve)(this._fetchWellKnownObject(isUrl + \"/_matrix/identity/api/v1\"));\n\n case 31:\n isResponse = _context.sent;\n\n if (!(!isResponse || !isResponse.raw || isResponse.action !== \"SUCCESS\")) {\n _context.next = 35;\n break;\n }\n\n logger.error(\"Invalid /api/v1 response\");\n return _context.abrupt(\"return\", _bluebird2.default.resolve(failingClientConfig));\n\n case 35:\n\n // Step 6: Now that the identity server is valid, or never existed,\n // populate the IS section.\n if (isUrl && isUrl.length > 0) {\n clientConfig[\"m.identity_server\"] = {\n state: AutoDiscovery.SUCCESS,\n error: null,\n base_url: isUrl\n };\n }\n\n // Step 7: Copy any other keys directly into the clientConfig. This is for\n // things like custom configuration of services.\n (0, _keys2.default)(wellknown.raw).filter(function (k) {\n return k !== \"m.homeserver\" && k !== \"m.identity_server\";\n }).map(function (k) {\n return clientConfig[k] = wellknown.raw[k];\n });\n\n // Step 8: Give the config to the caller (finally)\n return _context.abrupt(\"return\", _bluebird2.default.resolve(clientConfig));\n\n case 38:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function findClientConfig(_x) {\n return _ref.apply(this, arguments);\n }\n\n return findClientConfig;\n }()\n\n /**\n * Sanitizes a given URL to ensure it is either an HTTP or HTTP URL and\n * is suitable for the requirements laid out by .well-known auto discovery.\n * If valid, the URL will also be stripped of any trailing slashes.\n * @param {string} url The potentially invalid URL to sanitize.\n * @return {string|boolean} The sanitized URL or a falsey value if the URL is invalid.\n * @private\n */\n\n }, {\n key: \"_sanitizeWellKnownUrl\",\n value: function _sanitizeWellKnownUrl(url) {\n if (!url) return false;\n\n try {\n // We have to try and parse the URL using the NodeJS URL\n // library if we're on NodeJS and use the browser's URL\n // library when we're in a browser. To accomplish this, we\n // try the NodeJS version first and fall back to the browser.\n var parsed = null;\n try {\n if (_url.URL) parsed = new _url.URL(url);else parsed = new URL(url);\n } catch (e) {\n parsed = new URL(url);\n }\n\n if (!parsed || !parsed.hostname) return false;\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") return false;\n\n var port = parsed.port ? \":\" + parsed.port : \"\";\n var path = parsed.pathname ? parsed.pathname : \"\";\n var saferUrl = parsed.protocol + \"//\" + parsed.hostname + port + path;\n if (saferUrl.endsWith(\"/\")) {\n saferUrl = saferUrl.substring(0, saferUrl.length - 1);\n }\n return saferUrl;\n } catch (e) {\n logger.error(e);\n return false;\n }\n }\n\n /**\n * Fetches a JSON object from a given URL, as expected by all .well-known\n * related lookups. If the server gives a 404 then the `action` will be\n * IGNORE. If the server returns something that isn't JSON, the `action`\n * will be FAIL_PROMPT. For any other failure the `action` will be FAIL_PROMPT.\n *\n * The returned object will be a result of the call in object form with\n * the following properties:\n * raw: The JSON object returned by the server.\n * action: One of SUCCESS, IGNORE, or FAIL_PROMPT.\n * reason: Relatively human readable description of what went wrong.\n * error: The actual Error, if one exists.\n * @param {string} url The URL to fetch a JSON object from.\n * @return {Promise<object>} Resolves to the returned state.\n * @private\n */\n\n }, {\n key: \"_fetchWellKnownObject\",\n value: function () {\n var _ref2 = (0, _bluebird.method)(function (url) {\n return new _bluebird2.default(function (resolve, reject) {\n var request = require(\"./matrix\").getRequest();\n if (!request) throw new Error(\"No request library available\");\n request({ method: \"GET\", uri: url }, function (err, response, body) {\n if (err || response.statusCode < 200 || response.statusCode >= 300) {\n var action = \"FAIL_PROMPT\";\n var reason = (err ? err.message : null) || \"General failure\";\n if (response.statusCode === 404) {\n action = \"IGNORE\";\n reason = \"No .well-known JSON file found\";\n }\n resolve({ raw: {}, action: action, reason: reason, error: err });\n return;\n }\n\n try {\n resolve({ raw: JSON.parse(body), action: \"SUCCESS\" });\n } catch (e) {\n var _reason = \"General failure\";\n if (e.name === \"SyntaxError\") _reason = \"Invalid JSON\";\n resolve({\n raw: {},\n action: \"FAIL_PROMPT\",\n reason: _reason, error: e\n });\n }\n });\n });\n });\n\n function _fetchWellKnownObject(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return _fetchWellKnownObject;\n }()\n }, {\n key: \"FAIL_ERROR\",\n\n // Dev note: the constants defined here are related to but not\n // exactly the same as those in the spec. This is to hopefully\n // translate the meaning of the states in the spec, but also\n // support our own if needed.\n\n /**\n * The auto discovery failed. The client is expected to communicate\n * the error to the user and refuse logging in.\n * @return {string}\n * @constructor\n */\n get: function get() {\n return \"FAIL_ERROR\";\n }\n\n /**\n * The auto discovery failed, however the client may still recover\n * from the problem. The client is recommended to that the same\n * action it would for PROMPT while also warning the user about\n * what went wrong. The client may also treat this the same as\n * a FAIL_ERROR state.\n * @return {string}\n * @constructor\n */\n\n }, {\n key: \"FAIL_PROMPT\",\n get: function get() {\n return \"FAIL_PROMPT\";\n }\n\n /**\n * The auto discovery didn't fail but did not find anything of\n * interest. The client is expected to prompt the user for more\n * information, or fail if it prefers.\n * @return {string}\n * @constructor\n */\n\n }, {\n key: \"PROMPT\",\n get: function get() {\n return \"PROMPT\";\n }\n\n /**\n * The auto discovery was successful.\n * @return {string}\n * @constructor\n */\n\n }, {\n key: \"SUCCESS\",\n get: function get() {\n return \"SUCCESS\";\n }\n }]);\n return AutoDiscovery;\n}();\n//# sourceMappingURL=autodiscovery.js.map","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar formats = require('./formats');\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) { // eslint-disable-line func-name-matching\n return prefix + '[]';\n },\n indices: function indices(prefix, key) { // eslint-disable-line func-name-matching\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) { // eslint-disable-line func-name-matching\n return prefix;\n }\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaults = {\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n serializeDate: function serializeDate(date) { // eslint-disable-line func-name-matching\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar stringify = function stringify( // eslint-disable-line func-name-matching\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n) {\n var obj = object;\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix;\n }\n\n obj = '';\n }\n\n if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (Array.isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n\n if (Array.isArray(obj)) {\n values = values.concat(stringify(\n obj[key],\n generateArrayPrefix(prefix, key),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n } else {\n values = values.concat(stringify(\n obj[key],\n prefix + (allowDots ? '.' + key : '[' + key + ']'),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n }\n\n return values;\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter;\n var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls;\n var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode;\n var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder;\n var sort = typeof options.sort === 'function' ? options.sort : null;\n var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;\n var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate;\n var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly;\n if (typeof options.format === 'undefined') {\n options.format = formats['default'];\n } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n var formatter = formats.formatters[options.format];\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (Array.isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (options.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = options.arrayFormat;\n } else if ('indices' in options) {\n arrayFormat = options.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (sort) {\n objKeys.sort(sort);\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n\n keys = keys.concat(stringify(\n obj[key],\n key,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encode ? encoder : null,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n\n var joined = keys.join(delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n parameterLimit: 1000,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n\n for (var i = 0; i < parts.length; ++i) {\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder);\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder);\n val = options.decoder(part.slice(pos + 1), defaults.decoder);\n }\n if (has.call(obj, key)) {\n obj[key] = [].concat(obj[key]).concat(val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options) {\n var leaf = val;\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]') {\n obj = [];\n obj = obj.concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys\n // that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while ((segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options);\n};\n\nmodule.exports = function (str, opts) {\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n options.ignoreQueryPrefix = options.ignoreQueryPrefix === true;\n options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter;\n options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth;\n options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit;\n options.parseArrays = options.parseArrays !== false;\n options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder;\n options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots;\n options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects;\n options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes;\n options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit;\n options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options);\n obj = utils.merge(obj, newObj, options);\n }\n\n return utils.compact(obj);\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"device\" level for the current device.\n * This handler does not make use of the roomId parameter. This handler\n * will special-case features to support legacy settings.\n */\nvar DeviceSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(DeviceSettingsHandler, _SettingsHandler);\n\n /**\n * Creates a new device settings handler\n * @param {string[]} featureNames The names of known features.\n */\n function DeviceSettingsHandler(featureNames) {\n (0, _classCallCheck3.default)(this, DeviceSettingsHandler);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DeviceSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(DeviceSettingsHandler)).call(this));\n\n _this._featureNames = featureNames;\n return _this;\n }\n\n (0, _createClass3.default)(DeviceSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n if (this._featureNames.includes(settingName)) {\n return this._readFeature(settingName);\n }\n\n // Special case notifications\n if (settingName === \"notificationsEnabled\") {\n var value = localStorage.getItem(\"notifications_enabled\");\n if (typeof value === \"string\") return value === \"true\";\n return null; // wrong type or otherwise not set\n } else if (settingName === \"notificationBodyEnabled\") {\n var _value = localStorage.getItem(\"notifications_body_enabled\");\n if (typeof _value === \"string\") return _value === \"true\";\n return null; // wrong type or otherwise not set\n } else if (settingName === \"audioNotificationsEnabled\") {\n var _value2 = localStorage.getItem(\"audio_notifications_enabled\");\n if (typeof _value2 === \"string\") return _value2 === \"true\";\n return null; // wrong type or otherwise not set\n }\n\n var settings = this._getSettings() || {};\n return settings[settingName];\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n if (this._featureNames.includes(settingName)) {\n this._writeFeature(settingName, newValue);\n return _bluebird2.default.resolve();\n }\n\n // Special case notifications\n if (settingName === \"notificationsEnabled\") {\n localStorage.setItem(\"notifications_enabled\", newValue);\n return _bluebird2.default.resolve();\n } else if (settingName === \"notificationBodyEnabled\") {\n localStorage.setItem(\"notifications_body_enabled\", newValue);\n return _bluebird2.default.resolve();\n } else if (settingName === \"audioNotificationsEnabled\") {\n localStorage.setItem(\"audio_notifications_enabled\", newValue);\n return _bluebird2.default.resolve();\n }\n\n var settings = this._getSettings() || {};\n settings[settingName] = newValue;\n localStorage.setItem(\"mx_local_settings\", (0, _stringify2.default)(settings));\n\n return _bluebird2.default.resolve();\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return true; // It's their device, so they should be able to\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return localStorage !== undefined && localStorage !== null;\n }\n }, {\n key: \"_getSettings\",\n value: function _getSettings() {\n var value = localStorage.getItem(\"mx_local_settings\");\n if (!value) return null;\n return JSON.parse(value);\n }\n\n // Note: features intentionally don't use the same key as settings to avoid conflicts\n // and to be backwards compatible.\n\n }, {\n key: \"_readFeature\",\n value: function _readFeature(featureName) {\n if (_MatrixClientPeg2.default.get() && _MatrixClientPeg2.default.get().isGuest()) {\n // Guests should not have any labs features enabled.\n return false;\n }\n\n var value = localStorage.getItem(\"mx_labs_feature_\" + featureName);\n return value === \"true\";\n }\n }, {\n key: \"_writeFeature\",\n value: function _writeFeature(featureName, enabled) {\n localStorage.setItem(\"mx_labs_feature_\" + featureName, enabled);\n }\n }]);\n return DeviceSettingsHandler;\n}(_SettingsHandler3.default); /*\n Copyright 2017 Travis Ralston\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = DeviceSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=DeviceSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"room-device\" level for the current device in a particular\n * room.\n */\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar RoomDeviceSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(RoomDeviceSettingsHandler, _SettingsHandler);\n\n function RoomDeviceSettingsHandler() {\n (0, _classCallCheck3.default)(this, RoomDeviceSettingsHandler);\n return (0, _possibleConstructorReturn3.default)(this, (RoomDeviceSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(RoomDeviceSettingsHandler)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(RoomDeviceSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n // Special case blacklist setting to use legacy values\n if (settingName === \"blacklistUnverifiedDevices\") {\n var _value = this._read(\"mx_local_settings\");\n if (_value && _value['blacklistUnverifiedDevicesPerRoom']) {\n return _value['blacklistUnverifiedDevicesPerRoom'][roomId];\n }\n }\n\n var value = this._read(this._getKey(settingName, roomId));\n if (value) return value.value;\n return null;\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n // Special case blacklist setting for legacy structure\n if (settingName === \"blacklistUnverifiedDevices\") {\n var value = this._read(\"mx_local_settings\");\n if (!value) value = {};\n if (!value[\"blacklistUnverifiedDevicesPerRoom\"]) value[\"blacklistUnverifiedDevicesPerRoom\"] = {};\n value[\"blacklistUnverifiedDevicesPerRoom\"][roomId] = newValue;\n localStorage.setItem(\"mx_local_settings\", (0, _stringify2.default)(value));\n return _bluebird2.default.resolve();\n }\n\n if (newValue === null) {\n localStorage.removeItem(this._getKey(settingName, roomId));\n } else {\n newValue = (0, _stringify2.default)({ value: newValue });\n localStorage.setItem(this._getKey(settingName, roomId), newValue);\n }\n\n return _bluebird2.default.resolve();\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return true; // It's their device, so they should be able to\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return localStorage !== undefined && localStorage !== null;\n }\n }, {\n key: \"_read\",\n value: function _read(key) {\n var rawValue = localStorage.getItem(key);\n if (!rawValue) return null;\n return JSON.parse(rawValue);\n }\n }, {\n key: \"_getKey\",\n value: function _getKey(settingName, roomId) {\n return \"mx_setting_\" + settingName + \"_\" + roomId;\n }\n }]);\n return RoomDeviceSettingsHandler;\n}(_SettingsHandler3.default);\n\nexports.default = RoomDeviceSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=RoomDeviceSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets settings at the \"default\" level. This handler does not support setting values.\n * This handler does not make use of the roomId parameter.\n */\nvar DefaultSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(DefaultSettingsHandler, _SettingsHandler);\n\n /**\n * Creates a new default settings handler with the given defaults\n * @param {object} defaults The default setting values, keyed by setting name.\n */\n function DefaultSettingsHandler(defaults) {\n (0, _classCallCheck3.default)(this, DefaultSettingsHandler);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DefaultSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(DefaultSettingsHandler)).call(this));\n\n _this._defaults = defaults;\n return _this;\n }\n\n (0, _createClass3.default)(DefaultSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n return this._defaults[settingName];\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n throw new Error(\"Cannot set values on the default level handler\");\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return false;\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return true;\n }\n }]);\n return DefaultSettingsHandler;\n}(_SettingsHandler3.default); /*\n Copyright 2017 Travis Ralston\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = DefaultSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=DefaultSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"room-account\" level for the current user.\n */\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar RoomAccountSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(RoomAccountSettingsHandler, _SettingsHandler);\n\n function RoomAccountSettingsHandler() {\n (0, _classCallCheck3.default)(this, RoomAccountSettingsHandler);\n return (0, _possibleConstructorReturn3.default)(this, (RoomAccountSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(RoomAccountSettingsHandler)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(RoomAccountSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var content = this._getSettings(roomId, \"org.matrix.room.preview_urls\") || {};\n\n // Check to make sure that we actually got a boolean\n if (typeof content['disable'] !== \"boolean\") return null;\n return !content['disable'];\n }\n\n // Special case room color\n if (settingName === \"roomColor\") {\n // The event content should already be in an appropriate format, we just need\n // to get the right value.\n // don't fallback to {} because thats truthy and would imply there is an event specifying tint\n return this._getSettings(roomId, \"org.matrix.room.color_scheme\");\n }\n\n var settings = this._getSettings(roomId) || {};\n return settings[settingName];\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var _content = this._getSettings(roomId, \"org.matrix.room.preview_urls\") || {};\n _content['disable'] = !newValue;\n return _MatrixClientPeg2.default.get().setRoomAccountData(roomId, \"org.matrix.room.preview_urls\", _content);\n }\n\n // Special case room color\n if (settingName === \"roomColor\") {\n // The new value should match our requirements, we just need to store it in the right place.\n return _MatrixClientPeg2.default.get().setRoomAccountData(roomId, \"org.matrix.room.color_scheme\", newValue);\n }\n\n var content = this._getSettings(roomId) || {};\n content[settingName] = newValue;\n return _MatrixClientPeg2.default.get().setRoomAccountData(roomId, \"im.vector.web.settings\", content);\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n var room = _MatrixClientPeg2.default.get().getRoom(roomId);\n\n // If they have the room, they can set their own account data\n return room !== undefined && room !== null;\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var cli = _MatrixClientPeg2.default.get();\n return cli !== undefined && cli !== null;\n }\n }, {\n key: \"_getSettings\",\n value: function _getSettings(roomId) {\n var eventType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"im.vector.web.settings\";\n\n var room = _MatrixClientPeg2.default.get().getRoom(roomId);\n if (!room) return null;\n\n var event = room.getAccountData(eventType);\n if (!event || !event.getContent()) return null;\n return event.getContent();\n }\n }]);\n return RoomAccountSettingsHandler;\n}(_SettingsHandler3.default);\n\nexports.default = RoomAccountSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=RoomAccountSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"account\" level for the current user.\n * This handler does not make use of the roomId parameter.\n */\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar AccountSettingHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(AccountSettingHandler, _SettingsHandler);\n\n function AccountSettingHandler() {\n (0, _classCallCheck3.default)(this, AccountSettingHandler);\n return (0, _possibleConstructorReturn3.default)(this, (AccountSettingHandler.__proto__ || (0, _getPrototypeOf2.default)(AccountSettingHandler)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(AccountSettingHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var content = this._getSettings(\"org.matrix.preview_urls\") || {};\n\n // Check to make sure that we actually got a boolean\n if (typeof content['disable'] !== \"boolean\") return null;\n return !content['disable'];\n }\n\n var settings = this._getSettings() || {};\n var preferredValue = settings[settingName];\n\n if (preferredValue === null || preferredValue === undefined) {\n // Honour the old setting on read only\n if (settingName === \"hideAvatarChanges\" || settingName === \"hideDisplaynameChanges\") {\n preferredValue = settings[\"hideAvatarDisplaynameChanges\"];\n }\n }\n\n return preferredValue;\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var _content = this._getSettings(\"org.matrix.preview_urls\") || {};\n _content['disable'] = !newValue;\n return _MatrixClientPeg2.default.get().setAccountData(\"org.matrix.preview_urls\", _content);\n }\n\n var content = this._getSettings() || {};\n content[settingName] = newValue;\n return _MatrixClientPeg2.default.get().setAccountData(\"im.vector.web.settings\", content);\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return true; // It's their account, so they should be able to\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var cli = _MatrixClientPeg2.default.get();\n return cli !== undefined && cli !== null;\n }\n }, {\n key: \"_getSettings\",\n value: function _getSettings() {\n var eventType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"im.vector.web.settings\";\n\n var cli = _MatrixClientPeg2.default.get();\n if (!cli) return null;\n\n var event = cli.getAccountData(eventType);\n if (!event || !event.getContent()) return null;\n return event.getContent();\n }\n }]);\n return AccountSettingHandler;\n}(_SettingsHandler3.default);\n\nexports.default = AccountSettingHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=AccountSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"room\" level.\n */\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar RoomSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(RoomSettingsHandler, _SettingsHandler);\n\n function RoomSettingsHandler() {\n (0, _classCallCheck3.default)(this, RoomSettingsHandler);\n return (0, _possibleConstructorReturn3.default)(this, (RoomSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(RoomSettingsHandler)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(RoomSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var content = this._getSettings(roomId, \"org.matrix.room.preview_urls\") || {};\n\n // Check to make sure that we actually got a boolean\n if (typeof content['disable'] !== \"boolean\") return null;\n return !content['disable'];\n }\n\n var settings = this._getSettings(roomId) || {};\n return settings[settingName];\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var _content = this._getSettings(roomId, \"org.matrix.room.preview_urls\") || {};\n _content['disable'] = !newValue;\n return _MatrixClientPeg2.default.get().sendStateEvent(roomId, \"org.matrix.room.preview_urls\", _content);\n }\n\n var content = this._getSettings(roomId) || {};\n content[settingName] = newValue;\n return _MatrixClientPeg2.default.get().sendStateEvent(roomId, \"im.vector.web.settings\", content, \"\");\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n var cli = _MatrixClientPeg2.default.get();\n var room = cli.getRoom(roomId);\n\n var eventType = \"im.vector.web.settings\";\n if (settingName === \"urlPreviewsEnabled\") eventType = \"org.matrix.room.preview_urls\";\n\n if (!room) return false;\n return room.currentState.maySendStateEvent(eventType, cli.getUserId());\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var cli = _MatrixClientPeg2.default.get();\n return cli !== undefined && cli !== null;\n }\n }, {\n key: \"_getSettings\",\n value: function _getSettings(roomId) {\n var eventType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"im.vector.web.settings\";\n\n var room = _MatrixClientPeg2.default.get().getRoom(roomId);\n if (!room) return null;\n\n var event = room.currentState.getStateEvents(eventType, \"\");\n if (!event || !event.getContent()) return null;\n return event.getContent();\n }\n }]);\n return RoomSettingsHandler;\n}(_SettingsHandler3.default);\n\nexports.default = RoomSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=RoomSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nvar _SdkConfig = require(\"../../SdkConfig\");\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"config\" level. This handler does not make use of the\n * roomId parameter.\n */\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ConfigSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(ConfigSettingsHandler, _SettingsHandler);\n\n function ConfigSettingsHandler() {\n (0, _classCallCheck3.default)(this, ConfigSettingsHandler);\n return (0, _possibleConstructorReturn3.default)(this, (ConfigSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(ConfigSettingsHandler)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(ConfigSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n var config = _SdkConfig2.default.get() || {};\n\n // Special case themes\n if (settingName === \"theme\") {\n return config[\"default_theme\"];\n }\n\n var settingsConfig = config[\"settingDefaults\"];\n if (!settingsConfig || !settingsConfig[settingName]) return null;\n return settingsConfig[settingName];\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n throw new Error(\"Cannot change settings at the config level\");\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return false;\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return true; // SdkConfig is always there\n }\n }]);\n return ConfigSettingsHandler;\n}(_SettingsHandler3.default);\n\nexports.default = ConfigSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=ConfigSettingsHandler.js.map","'use strict';\n\nvar extend = require('extend');\nvar isArray = require('util').isArray;\nvar isDate = require('util').isDate;\nvar sprintf = require(\"sprintf-js\").sprintf;\nvar events = require('events');\nvar except = require('except');\n\nvar strftime = require('./strftime');\n\nvar translationScope = 'counterpart';\n\nfunction isString(val) {\n return typeof val === 'string' || Object.prototype.toString.call(val) === '[object String]';\n}\n\nfunction isFunction(val) {\n return typeof val === 'function' || Object.prototype.toString.call(val) === '[object Function]';\n}\n\nfunction isPlainObject(val) {\n //Deal with older browsers (IE8) that don't return [object Null] in this case.\n if (val === null) {\n return false;\n }\n return Object.prototype.toString.call(val) === '[object Object]';\n}\n\nfunction isSymbol(key) {\n return isString(key) && key[0] === ':';\n}\n\nfunction hasOwnProp(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction getEntry(translations, keys) {\n return keys.reduce(function(result, key) {\n if (isPlainObject(result) && hasOwnProp(result, key)) {\n return result[key];\n } else {\n return null;\n }\n }, translations);\n}\n\nfunction Counterpart() {\n events.EventEmitter.apply(this);\n\n this._registry = {\n locale: 'en',\n interpolate: true,\n fallbackLocales: [],\n scope: null,\n translations: {},\n interpolations: {},\n normalizedKeys: {},\n separator: '.',\n keepTrailingDot: false,\n keyTransformer: function(key) { return key; },\n generateMissingEntry: function(key) { return 'missing translation: ' + key; }\n };\n\n this.registerTranslations('en', require('./locales/en'));\n this.setMaxListeners(0);\n}\n\nCounterpart.prototype = events.EventEmitter.prototype;\nCounterpart.prototype.constructor = events.EventEmitter;\n\nCounterpart.prototype.getLocale = function() {\n return this._registry.locale;\n};\n\nCounterpart.prototype.setLocale = function(value) {\n var previous = this._registry.locale;\n\n if (previous != value) {\n this._registry.locale = value;\n this.emit('localechange', value, previous);\n }\n\n return previous;\n};\n\nCounterpart.prototype.getFallbackLocale = function() {\n return this._registry.fallbackLocales;\n};\n\nCounterpart.prototype.setFallbackLocale = function(value) {\n var previous = this._registry.fallbackLocales;\n this._registry.fallbackLocales = [].concat(value || []);\n return previous;\n};\n\nCounterpart.prototype.getAvailableLocales = function() {\n return this._registry.availableLocales || Object.keys(this._registry.translations);\n};\n\nCounterpart.prototype.setAvailableLocales = function(value) {\n var previous = this.getAvailableLocales();\n this._registry.availableLocales = value;\n return previous;\n};\n\nCounterpart.prototype.getSeparator = function() {\n return this._registry.separator;\n};\n\nCounterpart.prototype.setSeparator = function(value) {\n var previous = this._registry.separator;\n this._registry.separator = value;\n return previous;\n};\n\nCounterpart.prototype.setInterpolate = function(value) {\n var previous = this._registry.interpolate;\n this._registry.interpolate = value;\n return previous;\n};\n\nCounterpart.prototype.getInterpolate = function() {\n return this._registry.interpolate;\n};\n\nCounterpart.prototype.setKeyTransformer = function(value) {\n var previous = this._registry.keyTransformer;\n this._registry.keyTransformer = value;\n return previous;\n};\n\nCounterpart.prototype.getKeyTransformer = function() {\n return this._registry.keyTransformer;\n};\n\nCounterpart.prototype.setMissingEntryGenerator = function(value) {\n var previous = this._registry.generateMissingEntry;\n this._registry.generateMissingEntry = value;\n return previous;\n};\n\nCounterpart.prototype.getMissingEntryGenerator = function() {\n return this._registry.generateMissingEntry;\n};\n\nCounterpart.prototype.registerTranslations = function(locale, data) {\n var translations = {};\n translations[locale] = data;\n extend(true, this._registry.translations, translations);\n return translations;\n};\n\nCounterpart.prototype.registerInterpolations = function(data) {\n return extend(true, this._registry.interpolations, data);\n};\n\nCounterpart.prototype.onLocaleChange =\nCounterpart.prototype.addLocaleChangeListener = function(callback) {\n this.addListener('localechange', callback);\n};\n\nCounterpart.prototype.offLocaleChange =\nCounterpart.prototype.removeLocaleChangeListener = function(callback) {\n this.removeListener('localechange', callback);\n};\n\nCounterpart.prototype.onTranslationNotFound =\nCounterpart.prototype.addTranslationNotFoundListener = function(callback) {\n this.addListener('translationnotfound', callback);\n};\n\nCounterpart.prototype.offTranslationNotFound =\nCounterpart.prototype.removeTranslationNotFoundListener = function(callback) {\n this.removeListener('translationnotfound', callback);\n};\n\nCounterpart.prototype.onError =\nCounterpart.prototype.addErrorListener = function(callback) {\n this.addListener('error', callback);\n};\n\nCounterpart.prototype.offError =\nCounterpart.prototype.removeErrorListener = function(callback) {\n this.removeListener('error', callback);\n};\n\nCounterpart.prototype.translate = function(key, options) {\n if (!isArray(key) && !isString(key) || !key.length) {\n throw new Error('invalid argument: key');\n }\n\n if (isSymbol(key)) {\n key = key.substr(1);\n }\n\n key = this._registry.keyTransformer(key, options);\n\n options = extend(true, {}, options);\n\n var locale = options.locale || this._registry.locale;\n delete options.locale;\n\n var scope = options.scope || this._registry.scope;\n delete options.scope;\n\n var separator = options.separator || this._registry.separator;\n delete options.separator;\n\n var fallbackLocales = [].concat(options.fallbackLocale || this._registry.fallbackLocales);\n delete options.fallbackLocale;\n\n var keys = this._normalizeKeys(locale, scope, key, separator);\n\n var entry = getEntry(this._registry.translations, keys);\n\n if (entry === null) {\n this.emit('translationnotfound', locale, key, options.fallback, scope);\n\n if (options.fallback) {\n entry = this._fallback(locale, scope, key, options.fallback, options);\n }\n }\n\n if (entry === null && fallbackLocales.length > 0 && fallbackLocales.indexOf(locale) === -1) {\n for (var i = 0, ii = fallbackLocales.length; i < ii; i++) {\n var fallbackLocale = fallbackLocales[i];\n var fallbackKeys = this._normalizeKeys(fallbackLocale, scope, key, separator);\n entry = getEntry(this._registry.translations, fallbackKeys);\n\n if (entry) {\n locale = fallbackLocale;\n break;\n }\n }\n }\n\n if (entry === null) {\n entry = this._registry.generateMissingEntry(keys.join(separator));\n }\n\n entry = this._pluralize(locale, entry, options.count);\n\n if (this._registry.interpolate !== false && options.interpolate !== false) {\n entry = this._interpolate(entry, options);\n }\n\n return entry;\n};\n\nCounterpart.prototype.localize = function(object, options) {\n if (!isDate(object)) {\n throw new Error('invalid argument: object must be a date');\n }\n\n options = extend(true, {}, options);\n\n var locale = options.locale || this._registry.locale;\n var scope = options.scope || translationScope;\n var type = options.type || 'datetime';\n var format = options.format || 'default';\n\n options = { locale: locale, scope: scope, interpolate: false };\n format = this.translate(['formats', type, format], extend(true, {}, options));\n\n return strftime(object, format, this.translate('names', options));\n};\n\nCounterpart.prototype._pluralize = function(locale, entry, count) {\n if (typeof entry !== 'object' || entry === null || typeof count !== 'number') {\n return entry;\n }\n\n var pluralizeFunc = this.translate('pluralize', { locale: locale, scope: translationScope });\n\n if (Object.prototype.toString.call(pluralizeFunc) !== '[object Function]') {\n return pluralizeFunc;\n }\n\n return pluralizeFunc(entry, count);\n};\n\nCounterpart.prototype.withLocale = function(locale, callback, context) {\n var previous = this._registry.locale;\n this._registry.locale = locale;\n var result = callback.call(context);\n this._registry.locale = previous;\n return result;\n};\n\nCounterpart.prototype.withScope = function(scope, callback, context) {\n var previous = this._registry.scope;\n this._registry.scope = scope;\n var result = callback.call(context);\n this._registry.scope = previous;\n return result;\n};\n\nCounterpart.prototype.withSeparator = function(separator, callback, context) {\n var previous = this.setSeparator(separator);\n var result = callback.call(context);\n this.setSeparator(previous);\n return result;\n};\n\nCounterpart.prototype._normalizeKeys = function(locale, scope, key, separator) {\n var keys = [];\n\n keys = keys.concat(this._normalizeKey(locale, separator));\n keys = keys.concat(this._normalizeKey(scope, separator));\n keys = keys.concat(this._normalizeKey(key, separator));\n\n return keys;\n};\n\nCounterpart.prototype._normalizeKey = function(key, separator) {\n this._registry.normalizedKeys[separator] = this._registry.normalizedKeys[separator] || {};\n\n this._registry.normalizedKeys[separator][key] = this._registry.normalizedKeys[separator][key] || (function(key) {\n if (isArray(key)) {\n var normalizedKeyArray = key.map(function(k) { return this._normalizeKey(k, separator); }.bind(this));\n\n return [].concat.apply([], normalizedKeyArray);\n } else {\n if (typeof key === 'undefined' || key === null) {\n return [];\n }\n\n var keys = key.split(separator);\n\n for (var i = keys.length - 1; i >= 0; i--) {\n if (keys[i] === '') {\n keys.splice(i, 1);\n\n if (this._registry.keepTrailingDot === true && i == keys.length) {\n keys[keys.length - 1] += '' + separator;\n }\n }\n }\n\n return keys;\n }\n }.bind(this))(key);\n\n return this._registry.normalizedKeys[separator][key];\n};\n\nCounterpart.prototype._interpolate = function(entry, values) {\n if (typeof entry !== 'string') {\n return entry;\n }\n\n try {\n return sprintf(entry, extend({}, this._registry.interpolations, values));\n } catch (err) {\n if (this.listenerCount('error') > 0) {\n this.emit('error', err, entry, values);\n } else {\n throw err;\n }\n return null;\n }\n};\n\nCounterpart.prototype._resolve = function(locale, scope, object, subject, options) {\n options = options || {};\n\n if (options.resolve === false) {\n return subject;\n }\n\n var result;\n\n if (isSymbol(subject)) {\n result = this.translate(subject, extend({}, options, { locale: locale, scope: scope }));\n } else if (isFunction(subject)) {\n var dateOrTime;\n\n if (options.object) {\n dateOrTime = options.object;\n delete options.object;\n } else {\n dateOrTime = object;\n }\n\n result = this._resolve(locale, scope, object, subject(dateOrTime, options));\n } else {\n result = subject;\n }\n\n return /^missing translation:/.test(result) ? null : result;\n};\n\nCounterpart.prototype._fallback = function(locale, scope, object, subject, options) {\n options = except(options, 'fallback');\n\n if (isArray(subject)) {\n for (var i = 0, ii = subject.length; i < ii; i++) {\n var result = this._resolve(locale, scope, object, subject[i], options);\n\n if (result) {\n return result;\n }\n }\n\n return null;\n } else {\n return this._resolve(locale, scope, object, subject, options);\n }\n};\n\nvar instance = new Counterpart();\n\nfunction translate() {\n return instance.translate.apply(instance, arguments);\n}\n\nextend(translate, instance, {\n Instance: Counterpart,\n Translator: Counterpart\n});\n\nmodule.exports = translate;\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","/* global window, exports, define */\n\n!function() {\n 'use strict'\n\n var re = {\n not_string: /[^s]/,\n not_bool: /[^t]/,\n not_type: /[^T]/,\n not_primitive: /[^v]/,\n number: /[diefg]/,\n numeric_arg: /[bcdiefguxX]/,\n json: /[j]/,\n not_json: /[^j]/,\n text: /^[^\\x25]+/,\n modulo: /^\\x25{2}/,\n placeholder: /^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,\n key: /^([a-z_][a-z_\\d]*)/i,\n key_access: /^\\.([a-z_][a-z_\\d]*)/i,\n index_access: /^\\[(\\d+)\\]/,\n sign: /^[+-]/\n }\n\n function sprintf(key) {\n // `arguments` is not an array, but should be fine for this call\n return sprintf_format(sprintf_parse(key), arguments)\n }\n\n function vsprintf(fmt, argv) {\n return sprintf.apply(null, [fmt].concat(argv || []))\n }\n\n function sprintf_format(parse_tree, argv) {\n var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign\n for (i = 0; i < tree_length; i++) {\n if (typeof parse_tree[i] === 'string') {\n output += parse_tree[i]\n }\n else if (typeof parse_tree[i] === 'object') {\n ph = parse_tree[i] // convenience purposes only\n if (ph.keys) { // keyword argument\n arg = argv[cursor]\n for (k = 0; k < ph.keys.length; k++) {\n if (arg == undefined) {\n throw new Error(sprintf('[sprintf] Cannot access property \"%s\" of undefined value \"%s\"', ph.keys[k], ph.keys[k-1]))\n }\n arg = arg[ph.keys[k]]\n }\n }\n else if (ph.param_no) { // positional argument (explicit)\n arg = argv[ph.param_no]\n }\n else { // positional argument (implicit)\n arg = argv[cursor++]\n }\n\n if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) {\n arg = arg()\n }\n\n if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) {\n throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))\n }\n\n if (re.number.test(ph.type)) {\n is_positive = arg >= 0\n }\n\n switch (ph.type) {\n case 'b':\n arg = parseInt(arg, 10).toString(2)\n break\n case 'c':\n arg = String.fromCharCode(parseInt(arg, 10))\n break\n case 'd':\n case 'i':\n arg = parseInt(arg, 10)\n break\n case 'j':\n arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)\n break\n case 'e':\n arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()\n break\n case 'f':\n arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)\n break\n case 'g':\n arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)\n break\n case 'o':\n arg = (parseInt(arg, 10) >>> 0).toString(8)\n break\n case 's':\n arg = String(arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 't':\n arg = String(!!arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'T':\n arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'u':\n arg = parseInt(arg, 10) >>> 0\n break\n case 'v':\n arg = arg.valueOf()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'x':\n arg = (parseInt(arg, 10) >>> 0).toString(16)\n break\n case 'X':\n arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()\n break\n }\n if (re.json.test(ph.type)) {\n output += arg\n }\n else {\n if (re.number.test(ph.type) && (!is_positive || ph.sign)) {\n sign = is_positive ? '+' : '-'\n arg = arg.toString().replace(re.sign, '')\n }\n else {\n sign = ''\n }\n pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '\n pad_length = ph.width - (sign + arg).length\n pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''\n output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)\n }\n }\n }\n return output\n }\n\n var sprintf_cache = Object.create(null)\n\n function sprintf_parse(fmt) {\n if (sprintf_cache[fmt]) {\n return sprintf_cache[fmt]\n }\n\n var _fmt = fmt, match, parse_tree = [], arg_names = 0\n while (_fmt) {\n if ((match = re.text.exec(_fmt)) !== null) {\n parse_tree.push(match[0])\n }\n else if ((match = re.modulo.exec(_fmt)) !== null) {\n parse_tree.push('%')\n }\n else if ((match = re.placeholder.exec(_fmt)) !== null) {\n if (match[2]) {\n arg_names |= 1\n var field_list = [], replacement_field = match[2], field_match = []\n if ((field_match = re.key.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {\n if ((field_match = re.key_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else if ((field_match = re.index_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n }\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n match[2] = field_list\n }\n else {\n arg_names |= 2\n }\n if (arg_names === 3) {\n throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')\n }\n\n parse_tree.push(\n {\n placeholder: match[0],\n param_no: match[1],\n keys: match[2],\n sign: match[3],\n pad_char: match[4],\n align: match[5],\n width: match[6],\n precision: match[7],\n type: match[8]\n }\n )\n }\n else {\n throw new SyntaxError('[sprintf] unexpected placeholder')\n }\n _fmt = _fmt.substring(match[0].length)\n }\n return sprintf_cache[fmt] = parse_tree\n }\n\n /**\n * export to either browser or node.js\n */\n /* eslint-disable quote-props */\n if (typeof exports !== 'undefined') {\n exports['sprintf'] = sprintf\n exports['vsprintf'] = vsprintf\n }\n if (typeof window !== 'undefined') {\n window['sprintf'] = sprintf\n window['vsprintf'] = vsprintf\n\n if (typeof define === 'function' && define['amd']) {\n define(function() {\n return {\n 'sprintf': sprintf,\n 'vsprintf': vsprintf\n }\n })\n }\n }\n /* eslint-enable quote-props */\n}(); // eslint-disable-line\n","'use strict';\n\nvar ap = Array.prototype;\nvar concat = ap.concat;\nvar slice = ap.slice;\nvar indexOf = require('indexof');\n\nfunction except(object) {\n var result = {};\n var keys = concat.apply(ap, slice.call(arguments, 1));\n\n for (var key in object) {\n if (indexOf(keys, key) === -1) {\n result[key] = object[key];\n }\n }\n\n return result;\n}\n\nmodule.exports = except;\n","\nvar indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n if (indexOf) return arr.indexOf(obj);\n for (var i = 0; i < arr.length; ++i) {\n if (arr[i] === obj) return i;\n }\n return -1;\n};","'use strict';\n\nvar dateNames = require('date-names');\n\nfunction strftime(date, format, names) {\n var timestamp = date.getTime();\n\n names = names || dateNames;\n\n return format.replace(/%([-_0]?.)/g, function(_, c) {\n var padding = null;\n\n if (c.length == 2) {\n switch (c[0]) {\n case '-': padding = ''; break;\n case '_': padding = ' '; break;\n case '0': padding = '0'; break;\n default: return _; // should never reach this one\n }\n\n c = c[1];\n }\n\n switch (c) {\n case 'A': return names.days[date.getDay()];\n case 'a': return names.abbreviated_days[date.getDay()];\n case 'B': return names.months[date.getMonth()];\n case 'b': return names.abbreviated_months[date.getMonth()];\n case 'C': return pad(Math.floor(date.getFullYear() / 100), padding);\n case 'D': return strftime(date, '%m/%d/%y');\n case 'd': return pad(date.getDate(), padding);\n case 'e': return date.getDate();\n case 'F': return strftime(date, '%Y-%m-%d');\n case 'H': return pad(date.getHours(), padding);\n case 'h': return names.abbreviated_months[date.getMonth()];\n case 'I': return pad(hours12(date), padding);\n case 'j': return pad(Math.ceil((date.getTime() - (new Date(date.getFullYear(), 0, 1)).getTime()) / (1000 * 60 * 60 * 24)), 3);\n case 'k': return pad(date.getHours(), padding === null ? ' ' : padding);\n case 'L': return pad(Math.floor(timestamp % 1000), 3);\n case 'l': return pad(hours12(date), padding === null ? ' ' : padding);\n case 'M': return pad(date.getMinutes(), padding);\n case 'm': return pad(date.getMonth() + 1, padding);\n case 'n': return '\\n';\n case 'o': return String(date.getDate()) + ordinal(date.getDate());\n case 'P': return date.getHours() < 12 ? names.am.toLowerCase() : names.pm.toLowerCase();\n case 'p': return date.getHours() < 12 ? names.am.toUpperCase() : names.pm.toUpperCase();\n case 'R': return strftime(date, '%H:%M');\n case 'r': return strftime(date, '%I:%M:%S %p');\n case 'S': return pad(date.getSeconds(), padding);\n case 's': return Math.floor(timestamp / 1000);\n case 'T': return strftime(date, '%H:%M:%S');\n case 't': return '\\t';\n case 'U': return pad(weekNumber(date, 'sunday'), padding);\n case 'u': return date.getDay() === 0 ? 7 : date.getDay();\n case 'v': return strftime(date, '%e-%b-%Y');\n case 'W': return pad(weekNumber(date, 'monday'), padding);\n case 'w': return date.getDay();\n case 'Y': return date.getFullYear();\n case 'y': var y = String(date.getFullYear()); return y.slice(y.length - 2);\n case 'Z': var tzString = date.toString().match(/\\((\\w+)\\)/); return tzString && tzString[1] || '';\n case 'z': var off = date.getTimezoneOffset(); return (off > 0 ? '-' : '+') + pad(Math.round(Math.abs(off / 60)), 2) + ':' + pad(off % 60, 2);\n default: return c;\n }\n });\n}\n\nfunction pad(n, padding, length) {\n if (typeof padding === 'number') {\n length = padding;\n padding = '0';\n }\n\n if (padding === null) {\n padding = '0';\n }\n\n length = length || 2;\n\n var s = String(n);\n\n if (padding) {\n while (s.length < length) {\n s = padding + s;\n }\n }\n\n return s;\n}\n\nfunction hours12(date) {\n var hour = date.getHours();\n\n if (hour === 0) {\n hour = 12;\n } else if (hour > 12) {\n hour -= 12;\n }\n\n return hour;\n}\n\nfunction ordinal(n) {\n var i = n % 10, ii = n % 100;\n\n if ((ii >= 11 && ii <= 13) || i === 0 || i >= 4) {\n return 'th';\n }\n\n switch (i) {\n case 1: return 'st';\n case 2: return 'nd';\n case 3: return 'rd';\n }\n}\n\nfunction weekNumber(date, firstWeekday) {\n firstWeekday = firstWeekday || 'sunday';\n\n var wday = date.getDay();\n\n if (firstWeekday == 'monday') {\n if (wday === 0) { // Sunday\n wday = 6;\n } else {\n wday--;\n }\n }\n\n var\n firstDayOfYear = new Date(date.getFullYear(), 0, 1),\n yday = (date - firstDayOfYear) / 86400000,\n weekNum = (yday + 7 - wday) / 7;\n\n return Math.floor(weekNum);\n}\n\nmodule.exports = strftime;\n","\"use strict\";\nmodule.exports = require('./en');\n","// The translations in this file are added by default.\n\n'use strict';\n\nmodule.exports = {\n counterpart: {\n names: require('date-names/en'),\n pluralize: require('pluralizers/en'),\n\n formats: {\n date: {\n 'default': '%a, %e %b %Y',\n long: '%A, %B %o, %Y',\n short: '%b %e'\n },\n\n time: {\n 'default': '%H:%M',\n long: '%H:%M:%S %z',\n short: '%H:%M'\n },\n\n datetime: {\n 'default': '%a, %e %b %Y %H:%M',\n long: '%A, %B %o, %Y %H:%M:%S %z',\n short: '%e %b %H:%M'\n }\n }\n }\n};\n","'use strict';\n\nmodule.exports = function(entry, count) {\n var key;\n\n if (count === 0 && 'zero' in entry) {\n key = 'zero';\n }\n\n key = key || (count === 1 ? 'one' : 'other');\n\n return entry[key];\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SETTINGS = undefined;\n\nvar _languageHandler = require(\"../languageHandler\");\n\nvar _NotificationControllers = require(\"./controllers/NotificationControllers\");\n\nvar _LazyLoadingController = require(\"./controllers/LazyLoadingController\");\n\nvar _LazyLoadingController2 = _interopRequireDefault(_LazyLoadingController);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// These are just a bunch of helper arrays to avoid copy/pasting a bunch of times\nvar LEVELS_ROOM_SETTINGS = ['device', 'room-device', 'room-account', 'account', 'config']; /*\n Copyright 2017 Travis Ralston\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar LEVELS_ROOM_SETTINGS_WITH_ROOM = ['device', 'room-device', 'room-account', 'account', 'config', 'room'];\nvar LEVELS_ACCOUNT_SETTINGS = ['device', 'account', 'config'];\nvar LEVELS_FEATURE = ['device', 'config'];\nvar LEVELS_DEVICE_ONLY_SETTINGS = ['device'];\nvar LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG = ['device', 'config'];\n\nvar SETTINGS = exports.SETTINGS = {\n // EXAMPLE SETTING:\n // \"my-setting\": {\n // // Must be set to true for features. Default is 'false'.\n // isFeature: false,\n //\n // // Display names are strongly recommended for clarity.\n // displayName: _td(\"Cool Name\"),\n //\n // // Display name can also be an object for different levels.\n // //displayName: {\n // // \"device\": _td(\"Name for when the setting is used at 'device'\"),\n // // \"room\": _td(\"Name for when the setting is used at 'room'\"),\n // // \"default\": _td(\"The name for all other levels\"),\n // //}\n //\n // // The supported levels are required. Preferably, use the preset arrays\n // // at the top of this file to define this rather than a custom array.\n // supportedLevels: [\n // // The order does not matter.\n //\n // \"device\", // Affects the current device only\n // \"room-device\", // Affects the current room on the current device\n // \"room-account\", // Affects the current room for the current account\n // \"account\", // Affects the current account\n // \"room\", // Affects the current room (controlled by room admins)\n // \"config\", // Affects the current application\n //\n // // \"default\" is always supported and does not get listed here.\n // ],\n //\n // // Required. Can be any data type. The value specified here should match\n // // the data being stored (ie: if a boolean is used, the setting should\n // // represent a boolean).\n // default: {\n // your: \"value\",\n // },\n //\n // // Optional settings controller. See SettingsController for more information.\n // controller: new MySettingController(),\n //\n // // Optional flag to make supportedLevels be respected as the order to handle\n // // settings. The first element is treated as \"most preferred\". The \"default\"\n // // level is always appended to the end.\n // supportedLevelsAreOrdered: false,\n // },\n \"feature_pinning\": {\n isFeature: true,\n displayName: (0, _languageHandler._td)(\"Message Pinning\"),\n supportedLevels: LEVELS_FEATURE,\n default: false\n },\n \"feature_custom_status\": {\n isFeature: true,\n displayName: (0, _languageHandler._td)(\"Custom user status messages\"),\n supportedLevels: LEVELS_FEATURE,\n default: false\n },\n \"feature_lazyloading\": {\n isFeature: true,\n displayName: (0, _languageHandler._td)(\"Increase performance by only loading room members on first view\"),\n supportedLevels: LEVELS_FEATURE,\n controller: new _LazyLoadingController2.default(),\n default: true\n },\n \"feature_keybackup\": {\n isFeature: true,\n displayName: (0, _languageHandler._td)(\"Backup of encryption keys to server\"),\n supportedLevels: LEVELS_FEATURE,\n default: false\n },\n \"MessageComposerInput.dontSuggestEmoji\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Disable Emoji suggestions while typing'),\n default: false\n },\n \"useCompactLayout\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Use compact timeline layout'),\n default: false\n },\n \"hideRedactions\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: (0, _languageHandler._td)('Hide removed messages'),\n default: false\n },\n \"hideJoinLeaves\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: (0, _languageHandler._td)('Hide join/leave messages (invites/kicks/bans unaffected)'),\n default: false\n },\n \"hideAvatarChanges\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: (0, _languageHandler._td)('Hide avatar changes'),\n default: false\n },\n \"hideDisplaynameChanges\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: (0, _languageHandler._td)('Hide display name changes'),\n default: false\n },\n \"hideReadReceipts\": {\n supportedLevels: LEVELS_ROOM_SETTINGS,\n displayName: (0, _languageHandler._td)('Hide read receipts'),\n default: false\n },\n \"showTwelveHourTimestamps\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Show timestamps in 12 hour format (e.g. 2:30pm)'),\n default: false\n },\n \"alwaysShowTimestamps\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Always show message timestamps'),\n default: false\n },\n \"autoplayGifsAndVideos\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Autoplay GIFs and videos'),\n default: false\n },\n \"alwaysShowEncryptionIcons\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Always show encryption icons'),\n default: true\n },\n \"showRoomRecoveryReminder\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Show a reminder to enable Secure Message Recovery in encrypted rooms'),\n default: true\n },\n \"enableSyntaxHighlightLanguageDetection\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Enable automatic language detection for syntax highlighting'),\n default: false\n },\n \"Pill.shouldHidePillAvatar\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Hide avatars in user and room mentions'),\n default: false\n },\n \"TextualBody.disableBigEmoji\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Disable big emoji in chat'),\n default: false\n },\n \"MessageComposerInput.isRichTextEnabled\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n default: false\n },\n \"MessageComposer.showFormatting\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n default: false\n },\n \"dontSendTypingNotifications\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)(\"Don't send typing notifications\"),\n default: false\n },\n \"MessageComposerInput.autoReplaceEmoji\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Automatically replace plain text Emoji'),\n default: false\n },\n \"VideoView.flipVideoHorizontally\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Mirror local video feed'),\n default: false\n },\n \"TagPanel.disableTagPanel\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Disable Community Filter Panel'),\n default: false\n },\n \"theme\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n default: \"light\"\n },\n \"webRtcForceTURN\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n displayName: (0, _languageHandler._td)('Disable Peer-to-Peer for 1:1 calls'),\n default: false\n },\n \"webrtc_audiooutput\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: null\n },\n \"webrtc_audioinput\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: null\n },\n \"webrtc_videoinput\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: null\n },\n \"language\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n default: \"en\"\n },\n \"analyticsOptIn\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n displayName: (0, _languageHandler._td)('Send analytics data'),\n default: false\n },\n \"showCookieBar\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n default: true\n },\n \"autocompleteDelay\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n default: 200\n },\n \"blacklistUnverifiedDevices\": {\n // We specifically want to have room-device > device so that users may set a device default\n // with a per-room override.\n supportedLevels: ['room-device', 'device'],\n supportedLevelsAreOrdered: true,\n displayName: {\n \"default\": (0, _languageHandler._td)('Never send encrypted messages to unverified devices from this device'),\n \"room-device\": (0, _languageHandler._td)('Never send encrypted messages to unverified devices in this room from this device')\n },\n default: false\n },\n \"urlPreviewsEnabled\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: {\n \"default\": (0, _languageHandler._td)('Enable inline URL previews by default'),\n \"room-account\": (0, _languageHandler._td)(\"Enable URL previews for this room (only affects you)\"),\n \"room\": (0, _languageHandler._td)(\"Enable URL previews by default for participants in this room\")\n },\n default: true\n },\n \"urlPreviewsEnabled_e2ee\": {\n supportedLevels: ['room-device', 'room-account'],\n displayName: {\n \"room-account\": (0, _languageHandler._td)(\"Enable URL previews for this room (only affects you)\")\n },\n default: false\n },\n \"roomColor\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: (0, _languageHandler._td)(\"Room Colour\"),\n default: {\n primary_color: null, // Hex string, eg: #000000\n secondary_color: null // Hex string, eg: #000000\n }\n },\n \"notificationsEnabled\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: false,\n controller: new _NotificationControllers.NotificationsEnabledController()\n },\n \"notificationBodyEnabled\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: true,\n controller: new _NotificationControllers.NotificationBodyEnabledController()\n },\n \"audioNotificationsEnabled\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: true,\n controller: new _NotificationControllers.AudioNotificationsEnabledController()\n },\n \"pinMentionedRooms\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)(\"Pin rooms I'm mentioned in to the top of the room list\"),\n default: false\n },\n \"pinUnreadRooms\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)(\"Pin unread rooms to the top of the room list\"),\n default: false\n },\n \"enableWidgetScreenshots\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Enable widget screenshots on supported widgets'),\n default: false\n },\n \"PinnedEvents.isOpen\": {\n supportedLevels: ['room-device'],\n default: false\n },\n \"RoomSubList.showEmpty\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Show empty room list headings'),\n default: true\n },\n \"promptBeforeInviteUnknownUsers\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Prompt before sending invites to potentially invalid matrix IDs'),\n default: true\n },\n \"showDeveloperTools\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Show developer tools'),\n default: false\n }\n};\n//# sourceMappingURL=Settings.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AudioNotificationsEnabledController = exports.NotificationBodyEnabledController = exports.NotificationsEnabledController = undefined;\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingController4 = require(\"./SettingController\");\n\nvar _SettingController5 = _interopRequireDefault(_SettingController4);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _pushprocessor = require(\"matrix-js-sdk/lib/pushprocessor\");\n\nvar _pushprocessor2 = _interopRequireDefault(_pushprocessor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isMasterRuleEnabled() {\n // Return the value of the master push rule as a default\n var processor = new _pushprocessor2.default(_MatrixClientPeg2.default.get());\n var masterRule = processor.getPushRuleById(\".m.rule.master\");\n\n if (!masterRule) {\n console.warn(\"No master push rule! Notifications are disabled for this user.\");\n return false;\n }\n\n // Why enabled == false means \"enabled\" is beyond me.\n return !masterRule.enabled;\n}\n\n// XXX: This feels wrong.\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar NotificationsEnabledController = exports.NotificationsEnabledController = function (_SettingController) {\n (0, _inherits3.default)(NotificationsEnabledController, _SettingController);\n\n function NotificationsEnabledController() {\n (0, _classCallCheck3.default)(this, NotificationsEnabledController);\n return (0, _possibleConstructorReturn3.default)(this, (NotificationsEnabledController.__proto__ || (0, _getPrototypeOf2.default)(NotificationsEnabledController)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(NotificationsEnabledController, [{\n key: \"getValueOverride\",\n value: function getValueOverride(level, roomId, calculatedValue, calculatedAtLevel) {\n var Notifier = require('../../Notifier'); // avoids cyclical references\n if (!Notifier.isPossible()) return false;\n\n if (calculatedValue === null || calculatedAtLevel === \"default\") {\n return isMasterRuleEnabled();\n }\n\n return calculatedValue;\n }\n }, {\n key: \"onChange\",\n value: function onChange(level, roomId, newValue) {\n var Notifier = require('../../Notifier'); // avoids cyclical references\n\n if (Notifier.supportsDesktopNotifications()) {\n Notifier.setEnabled(newValue);\n }\n }\n }]);\n return NotificationsEnabledController;\n}(_SettingController5.default);\n\nvar NotificationBodyEnabledController = exports.NotificationBodyEnabledController = function (_SettingController2) {\n (0, _inherits3.default)(NotificationBodyEnabledController, _SettingController2);\n\n function NotificationBodyEnabledController() {\n (0, _classCallCheck3.default)(this, NotificationBodyEnabledController);\n return (0, _possibleConstructorReturn3.default)(this, (NotificationBodyEnabledController.__proto__ || (0, _getPrototypeOf2.default)(NotificationBodyEnabledController)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(NotificationBodyEnabledController, [{\n key: \"getValueOverride\",\n value: function getValueOverride(level, roomId, calculatedValue) {\n var Notifier = require('../../Notifier'); // avoids cyclical references\n if (!Notifier.isPossible()) return false;\n\n if (calculatedValue === null) {\n return isMasterRuleEnabled();\n }\n\n return calculatedValue;\n }\n }]);\n return NotificationBodyEnabledController;\n}(_SettingController5.default);\n\nvar AudioNotificationsEnabledController = exports.AudioNotificationsEnabledController = function (_SettingController3) {\n (0, _inherits3.default)(AudioNotificationsEnabledController, _SettingController3);\n\n function AudioNotificationsEnabledController() {\n (0, _classCallCheck3.default)(this, AudioNotificationsEnabledController);\n return (0, _possibleConstructorReturn3.default)(this, (AudioNotificationsEnabledController.__proto__ || (0, _getPrototypeOf2.default)(AudioNotificationsEnabledController)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(AudioNotificationsEnabledController, [{\n key: \"getValueOverride\",\n value: function getValueOverride(level, roomId, calculatedValue) {\n var Notifier = require('../../Notifier'); // avoids cyclical references\n if (!Notifier.isPossible()) return false;\n\n // Note: Audio notifications are *not* enabled by default.\n return calculatedValue;\n }\n }]);\n return AudioNotificationsEnabledController;\n}(_SettingController5.default);\n//# sourceMappingURL=NotificationControllers.js.map","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nmodule.exports.Dispatcher = require('./lib/Dispatcher');\n","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Dispatcher\n * \n * @preventMunge\n */\n\n'use strict';\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar _prefix = 'ID_';\n\n/**\n * Dispatcher is used to broadcast payloads to registered callbacks. This is\n * different from generic pub-sub systems in two ways:\n *\n * 1) Callbacks are not subscribed to particular events. Every payload is\n * dispatched to every registered callback.\n * 2) Callbacks can be deferred in whole or part until other callbacks have\n * been executed.\n *\n * For example, consider this hypothetical flight destination form, which\n * selects a default city when a country is selected:\n *\n * var flightDispatcher = new Dispatcher();\n *\n * // Keeps track of which country is selected\n * var CountryStore = {country: null};\n *\n * // Keeps track of which city is selected\n * var CityStore = {city: null};\n *\n * // Keeps track of the base flight price of the selected city\n * var FlightPriceStore = {price: null}\n *\n * When a user changes the selected city, we dispatch the payload:\n *\n * flightDispatcher.dispatch({\n * actionType: 'city-update',\n * selectedCity: 'paris'\n * });\n *\n * This payload is digested by `CityStore`:\n *\n * flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'city-update') {\n * CityStore.city = payload.selectedCity;\n * }\n * });\n *\n * When the user selects a country, we dispatch the payload:\n *\n * flightDispatcher.dispatch({\n * actionType: 'country-update',\n * selectedCountry: 'australia'\n * });\n *\n * This payload is digested by both stores:\n *\n * CountryStore.dispatchToken = flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'country-update') {\n * CountryStore.country = payload.selectedCountry;\n * }\n * });\n *\n * When the callback to update `CountryStore` is registered, we save a reference\n * to the returned token. Using this token with `waitFor()`, we can guarantee\n * that `CountryStore` is updated before the callback that updates `CityStore`\n * needs to query its data.\n *\n * CityStore.dispatchToken = flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'country-update') {\n * // `CountryStore.country` may not be updated.\n * flightDispatcher.waitFor([CountryStore.dispatchToken]);\n * // `CountryStore.country` is now guaranteed to be updated.\n *\n * // Select the default city for the new country\n * CityStore.city = getDefaultCityForCountry(CountryStore.country);\n * }\n * });\n *\n * The usage of `waitFor()` can be chained, for example:\n *\n * FlightPriceStore.dispatchToken =\n * flightDispatcher.register(function(payload) {\n * switch (payload.actionType) {\n * case 'country-update':\n * case 'city-update':\n * flightDispatcher.waitFor([CityStore.dispatchToken]);\n * FlightPriceStore.price =\n * getFlightPriceStore(CountryStore.country, CityStore.city);\n * break;\n * }\n * });\n *\n * The `country-update` payload will be guaranteed to invoke the stores'\n * registered callbacks in order: `CountryStore`, `CityStore`, then\n * `FlightPriceStore`.\n */\n\nvar Dispatcher = (function () {\n function Dispatcher() {\n _classCallCheck(this, Dispatcher);\n\n this._callbacks = {};\n this._isDispatching = false;\n this._isHandled = {};\n this._isPending = {};\n this._lastID = 1;\n }\n\n /**\n * Registers a callback to be invoked with every dispatched payload. Returns\n * a token that can be used with `waitFor()`.\n */\n\n Dispatcher.prototype.register = function register(callback) {\n var id = _prefix + this._lastID++;\n this._callbacks[id] = callback;\n return id;\n };\n\n /**\n * Removes a callback based on its token.\n */\n\n Dispatcher.prototype.unregister = function unregister(id) {\n !this._callbacks[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.unregister(...): `%s` does not map to a registered callback.', id) : invariant(false) : undefined;\n delete this._callbacks[id];\n };\n\n /**\n * Waits for the callbacks specified to be invoked before continuing execution\n * of the current callback. This method should only be used by a callback in\n * response to a dispatched payload.\n */\n\n Dispatcher.prototype.waitFor = function waitFor(ids) {\n !this._isDispatching ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): Must be invoked while dispatching.') : invariant(false) : undefined;\n for (var ii = 0; ii < ids.length; ii++) {\n var id = ids[ii];\n if (this._isPending[id]) {\n !this._isHandled[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): Circular dependency detected while ' + 'waiting for `%s`.', id) : invariant(false) : undefined;\n continue;\n }\n !this._callbacks[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): `%s` does not map to a registered callback.', id) : invariant(false) : undefined;\n this._invokeCallback(id);\n }\n };\n\n /**\n * Dispatches a payload to all registered callbacks.\n */\n\n Dispatcher.prototype.dispatch = function dispatch(payload) {\n !!this._isDispatching ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.') : invariant(false) : undefined;\n this._startDispatching(payload);\n try {\n for (var id in this._callbacks) {\n if (this._isPending[id]) {\n continue;\n }\n this._invokeCallback(id);\n }\n } finally {\n this._stopDispatching();\n }\n };\n\n /**\n * Is this Dispatcher currently dispatching.\n */\n\n Dispatcher.prototype.isDispatching = function isDispatching() {\n return this._isDispatching;\n };\n\n /**\n * Call the callback stored with the given id. Also do some internal\n * bookkeeping.\n *\n * @internal\n */\n\n Dispatcher.prototype._invokeCallback = function _invokeCallback(id) {\n this._isPending[id] = true;\n this._callbacks[id](this._pendingPayload);\n this._isHandled[id] = true;\n };\n\n /**\n * Set up bookkeeping needed when dispatching.\n *\n * @internal\n */\n\n Dispatcher.prototype._startDispatching = function _startDispatching(payload) {\n for (var id in this._callbacks) {\n this._isPending[id] = false;\n this._isHandled[id] = false;\n }\n this._pendingPayload = payload;\n this._isDispatching = true;\n };\n\n /**\n * Clear bookkeeping used for dispatching.\n *\n * @internal\n */\n\n Dispatcher.prototype._stopDispatching = function _stopDispatching() {\n delete this._pendingPayload;\n this._isDispatching = false;\n };\n\n return Dispatcher;\n})();\n\nmodule.exports = Dispatcher;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingController2 = require(\"./SettingController\");\n\nvar _SettingController3 = _interopRequireDefault(_SettingController2);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _PlatformPeg = require(\"../../PlatformPeg\");\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LazyLoadingController = function (_SettingController) {\n (0, _inherits3.default)(LazyLoadingController, _SettingController);\n\n function LazyLoadingController() {\n (0, _classCallCheck3.default)(this, LazyLoadingController);\n return (0, _possibleConstructorReturn3.default)(this, (LazyLoadingController.__proto__ || (0, _getPrototypeOf2.default)(LazyLoadingController)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(LazyLoadingController, [{\n key: \"onChange\",\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(level, roomId, newValue) {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (_PlatformPeg2.default.get()) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 2:\n\n _MatrixClientPeg2.default.get().stopClient();\n _context.next = 5;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().store.deleteAllData());\n\n case 5:\n _PlatformPeg2.default.get().reload();\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function onChange(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return onChange;\n }()\n }]);\n return LazyLoadingController;\n}(_SettingController3.default); /*\n Copyright 2018 New Vector\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = LazyLoadingController;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=LazyLoadingController.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A wrapper for a SettingsHandler that performs local echo on\n * changes to settings. This wrapper will use the underlying\n * handler as much as possible to ensure values are not stale.\n */\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar LocalEchoWrapper = function (_SettingsHandler) {\n (0, _inherits3.default)(LocalEchoWrapper, _SettingsHandler);\n\n /**\n * Creates a new local echo wrapper\n * @param {SettingsHandler} handler The handler to wrap\n */\n function LocalEchoWrapper(handler) {\n (0, _classCallCheck3.default)(this, LocalEchoWrapper);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (LocalEchoWrapper.__proto__ || (0, _getPrototypeOf2.default)(LocalEchoWrapper)).call(this));\n\n _this._handler = handler;\n _this._cache = {\n // settingName: { roomId: value }\n };\n return _this;\n }\n\n (0, _createClass3.default)(LocalEchoWrapper, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n var cacheRoomId = roomId ? roomId : \"UNDEFINED\"; // avoid weird keys\n var bySetting = this._cache[settingName];\n if (bySetting && bySetting.hasOwnProperty(cacheRoomId)) {\n return bySetting[roomId];\n }\n\n return this._handler.getValue(settingName, roomId);\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n if (!this._cache[settingName]) this._cache[settingName] = {};\n var bySetting = this._cache[settingName];\n\n var cacheRoomId = roomId ? roomId : \"UNDEFINED\"; // avoid weird keys\n bySetting[cacheRoomId] = newValue;\n\n var handlerPromise = this._handler.setValue(settingName, roomId, newValue);\n return _bluebird2.default.resolve(handlerPromise).finally(function () {\n delete bySetting[cacheRoomId];\n });\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return this._handler.canSetValue(settingName, roomId);\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return this._handler.isSupported();\n }\n }]);\n return LocalEchoWrapper;\n}(_SettingsHandler3.default);\n\nexports.default = LocalEchoWrapper;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=LocalEchoWrapper.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// TODO: migrate from sync_state to MatrixActions.sync so that more js-sdk events\n// become dispatches in the same place.\n/**\n * Create a MatrixActions.sync action that represents a MatrixClient `sync` event,\n * each parameter mapping to a key-value in the action.\n *\n * @param {MatrixClient} matrixClient the matrix client\n * @param {string} state the current sync state.\n * @param {string} prevState the previous sync state.\n * @returns {Object} an action of type MatrixActions.sync.\n */\nfunction createSyncAction(matrixClient, state, prevState) {\n return {\n action: 'MatrixActions.sync',\n state: state,\n prevState: prevState,\n matrixClient: matrixClient\n };\n}\n\n/**\n * @typedef AccountDataAction\n * @type {Object}\n * @property {string} action 'MatrixActions.accountData'.\n * @property {MatrixEvent} event the MatrixEvent that triggered the dispatch.\n * @property {string} event_type the type of the MatrixEvent, e.g. \"m.direct\".\n * @property {Object} event_content the content of the MatrixEvent.\n */\n\n/**\n * Create a MatrixActions.accountData action that represents a MatrixClient `accountData`\n * matrix event.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {MatrixEvent} accountDataEvent the account data event.\n * @returns {AccountDataAction} an action of type MatrixActions.accountData.\n */\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction createAccountDataAction(matrixClient, accountDataEvent) {\n return {\n action: 'MatrixActions.accountData',\n event: accountDataEvent,\n event_type: accountDataEvent.getType(),\n event_content: accountDataEvent.getContent()\n };\n}\n\n/**\n * @typedef RoomAccountDataAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Room.accountData'.\n * @property {MatrixEvent} event the MatrixEvent that triggered the dispatch.\n * @property {string} event_type the type of the MatrixEvent, e.g. \"m.direct\".\n * @property {Object} event_content the content of the MatrixEvent.\n * @property {Room} room the room where the account data was changed.\n */\n\n/**\n * Create a MatrixActions.Room.accountData action that represents a MatrixClient `Room.accountData`\n * matrix event.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {MatrixEvent} accountDataEvent the account data event.\n * @param {Room} room the room where account data was changed\n * @returns {RoomAccountDataAction} an action of type MatrixActions.Room.accountData.\n */\nfunction createRoomAccountDataAction(matrixClient, accountDataEvent, room) {\n return {\n action: 'MatrixActions.Room.accountData',\n event: accountDataEvent,\n event_type: accountDataEvent.getType(),\n event_content: accountDataEvent.getContent(),\n room: room\n };\n}\n\n/**\n * @typedef RoomAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Room'.\n * @property {Room} room the Room that was stored.\n */\n\n/**\n * Create a MatrixActions.Room action that represents a MatrixClient `Room`\n * matrix event, emitted when a Room is stored in the client.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {Room} room the Room that was stored.\n * @returns {RoomAction} an action of type `MatrixActions.Room`.\n */\nfunction createRoomAction(matrixClient, room) {\n return { action: 'MatrixActions.Room', room: room };\n}\n\n/**\n * @typedef RoomTagsAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Room.tags'.\n * @property {Room} room the Room whose tags changed.\n */\n\n/**\n * Create a MatrixActions.Room.tags action that represents a MatrixClient\n * `Room.tags` matrix event, emitted when the m.tag room account data\n * event is updated.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {MatrixEvent} roomTagsEvent the m.tag event.\n * @param {Room} room the Room whose tags were changed.\n * @returns {RoomTagsAction} an action of type `MatrixActions.Room.tags`.\n */\nfunction createRoomTagsAction(matrixClient, roomTagsEvent, room) {\n return { action: 'MatrixActions.Room.tags', room: room };\n}\n\n/**\n * @typedef RoomTimelineAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Room.timeline'.\n * @property {boolean} isLiveEvent whether the event was attached to a\n * live timeline.\n * @property {boolean} isLiveUnfilteredRoomTimelineEvent whether the\n * event was attached to a timeline in the set of unfiltered timelines.\n * @property {Room} room the Room whose tags changed.\n */\n\n/**\n * Create a MatrixActions.Room.timeline action that represents a\n * MatrixClient `Room.timeline` matrix event, emitted when an event\n * is added to or removed from a timeline of a room.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {MatrixEvent} timelineEvent the event that was added/removed.\n * @param {Room} room the Room that was stored.\n * @param {boolean} toStartOfTimeline whether the event is being added\n * to the start (and not the end) of the timeline.\n * @param {boolean} removed whether the event was removed from the\n * timeline.\n * @param {Object} data\n * @param {boolean} data.liveEvent whether the event is a live event,\n * belonging to a live timeline.\n * @param {EventTimeline} data.timeline the timeline being altered.\n * @returns {RoomTimelineAction} an action of type `MatrixActions.Room.timeline`.\n */\nfunction createRoomTimelineAction(matrixClient, timelineEvent, room, toStartOfTimeline, removed, data) {\n return {\n action: 'MatrixActions.Room.timeline',\n event: timelineEvent,\n isLiveEvent: data.liveEvent,\n isLiveUnfilteredRoomTimelineEvent: room && data.timeline.getTimelineSet() === room.getUnfilteredTimelineSet()\n };\n}\n\n/**\n * @typedef RoomMembershipAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Room.myMembership'.\n * @property {Room} room to room for which the self-membership changed.\n * @property {string} membership the new membership\n * @property {string} oldMembership the previous membership, can be null.\n */\n\n/**\n * Create a MatrixActions.Room.myMembership action that represents\n * a MatrixClient `Room.myMembership` event for the syncing user,\n * emitted when the syncing user's membership is updated for a room.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {Room} room to room for which the self-membership changed.\n * @param {string} membership the new membership\n * @param {string} oldMembership the previous membership, can be null.\n * @returns {RoomMembershipAction} an action of type `MatrixActions.Room.myMembership`.\n */\nfunction createSelfMembershipAction(matrixClient, room, membership, oldMembership) {\n return { action: 'MatrixActions.Room.myMembership', room: room, membership: membership, oldMembership: oldMembership };\n}\n\n/**\n * @typedef EventDecryptedAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Event.decrypted'.\n * @property {MatrixEvent} event the matrix event that was decrypted.\n */\n\n/**\n * Create a MatrixActions.Event.decrypted action that represents\n * a MatrixClient `Event.decrypted` matrix event, emitted when a\n * matrix event is decrypted.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {MatrixEvent} event the matrix event that was decrypted.\n * @returns {EventDecryptedAction} an action of type `MatrixActions.Event.decrypted`.\n */\nfunction createEventDecryptedAction(matrixClient, event) {\n return { action: 'MatrixActions.Event.decrypted', event: event };\n}\n\n/**\n * This object is responsible for dispatching actions when certain events are emitted by\n * the given MatrixClient.\n */\nexports.default = {\n // A list of callbacks to call to unregister all listeners added\n _matrixClientListenersStop: [],\n\n /**\n * Start listening to certain events from the MatrixClient and dispatch actions when\n * they are emitted.\n * @param {MatrixClient} matrixClient the MatrixClient to listen to events from\n */\n start: function start(matrixClient) {\n this._addMatrixClientListener(matrixClient, 'sync', createSyncAction);\n this._addMatrixClientListener(matrixClient, 'accountData', createAccountDataAction);\n this._addMatrixClientListener(matrixClient, 'Room.accountData', createRoomAccountDataAction);\n this._addMatrixClientListener(matrixClient, 'Room', createRoomAction);\n this._addMatrixClientListener(matrixClient, 'Room.tags', createRoomTagsAction);\n this._addMatrixClientListener(matrixClient, 'Room.timeline', createRoomTimelineAction);\n this._addMatrixClientListener(matrixClient, 'Room.myMembership', createSelfMembershipAction);\n this._addMatrixClientListener(matrixClient, 'Event.decrypted', createEventDecryptedAction);\n },\n\n\n /**\n * Start listening to events of type eventName on matrixClient and when they are emitted,\n * dispatch an action created by the actionCreator function.\n * @param {MatrixClient} matrixClient a MatrixClient to register a listener with.\n * @param {string} eventName the event to listen to on MatrixClient.\n * @param {function} actionCreator a function that should return an action to dispatch\n * when given the MatrixClient as an argument as well as\n * arguments emitted in the MatrixClient event.\n */\n _addMatrixClientListener: function _addMatrixClientListener(matrixClient, eventName, actionCreator) {\n var listener = function listener() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var payload = actionCreator.apply(undefined, [matrixClient].concat(args));\n if (payload) {\n _dispatcher2.default.dispatch(payload, true);\n }\n };\n matrixClient.on(eventName, listener);\n this._matrixClientListenersStop.push(function () {\n matrixClient.removeListener(eventName, listener);\n });\n },\n\n\n /**\n * Stop listening to events.\n */\n stop: function stop() {\n this._matrixClientListenersStop.forEach(function (stopListener) {\n return stopListener();\n });\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=MatrixActionCreators.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _isFinite = require('babel-runtime/core-js/number/is-finite');\n\nvar _isFinite2 = _interopRequireDefault(_isFinite);\n\nexports.phasedRollOutExpiredForUser = phasedRollOutExpiredForUser;\n\nvar _SdkConfig = require('./SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction hashCode(str) {\n var hash = 0;\n var i = void 0;\n var chr = void 0;\n if (str.length === 0) {\n return hash;\n }\n for (i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0;\n }\n return Math.abs(hash);\n} /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction phasedRollOutExpiredForUser(username, feature, now) {\n var rollOutConfig = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _SdkConfig2.default.get().phasedRollOut;\n\n if (!rollOutConfig) {\n console.log('no phased rollout configuration, so enabling ' + feature);\n return true;\n }\n var featureConfig = rollOutConfig[feature];\n if (!featureConfig) {\n console.log(feature + ' doesn\\'t have phased rollout configured, so enabling');\n return true;\n }\n if (!(0, _isFinite2.default)(featureConfig.offset) || !(0, _isFinite2.default)(featureConfig.period)) {\n console.error('phased rollout of ' + feature + ' is misconfigured, ' + 'offset and/or period are not numbers, so disabling', featureConfig);\n return false;\n }\n\n var hash = hashCode(username);\n //ms -> min, enable users at minute granularity\n var bucketRatio = 1000 * 60;\n var bucketCount = featureConfig.period / bucketRatio;\n var userBucket = hash % bucketCount;\n var userMs = userBucket * bucketRatio;\n var enableAt = featureConfig.offset + userMs;\n var result = now >= enableAt;\n var bucketStr = '(bucket ' + userBucket + '/' + bucketCount + ')';\n if (result) {\n console.log(feature + ' enabled for ' + username + ' ' + bucketStr);\n } else {\n console.log(feature + ' will be enabled for ' + username + ' in ' + Math.ceil((enableAt - now) / 1000) + 's ' + bucketStr);\n }\n return result;\n}\n//# sourceMappingURL=PhasedRollOut.js.map","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport qs from 'querystring';\n\n// We want to support some name / value pairs in the fragment\n// so we're re-using query string like format\n//\n// returns {location, params}\nexport function parseQsFromFragment(location) {\n // if we have a fragment, it will start with '#', which we need to drop.\n // (if we don't, this will return '').\n const fragment = location.hash.substring(1);\n\n // our fragment may contain a query-param-like section. we need to fish\n // this out *before* URI-decoding because the params may contain ? and &\n // characters which are only URI-encoded once.\n const hashparts = fragment.split('?');\n\n const result = {\n location: decodeURIComponent(hashparts[0]),\n params: {},\n };\n\n if (hashparts.length > 1) {\n result.params = qs.parse(hashparts[1]);\n }\n return result;\n}\n\nexport function parseQs(location) {\n return qs.parse(location.search.substring(1));\n}\n","// @flow\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport VectorBasePlatform, {updateCheckStatusEnum} from './VectorBasePlatform';\nimport dis from 'matrix-react-sdk/lib/dispatcher';\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\nimport Promise from 'bluebird';\nimport rageshake from 'matrix-react-sdk/lib/rageshake/rageshake';\n\nconst ipcRenderer = window.ipcRenderer;\n\nfunction platformFriendlyName(): string {\n // used to use window.process but the same info is available here\n if (navigator.userAgent.indexOf('Macintosh')) {\n return 'macOS';\n } else if (navigator.userAgent.indexOf('FreeBSD')) {\n return 'FreeBSD';\n } else if (navigator.userAgent.indexOf('OpenBSD')) {\n return 'OpenBSD';\n } else if (navigator.userAgent.indexOf('SunOS')) {\n return 'SunOS';\n } else if (navigator.userAgent.indexOf('Windows')) {\n return 'Windows';\n } else if (navigator.userAgent.indexOf('Linux')) {\n return 'Linux';\n } else {\n return 'Unknown';\n }\n}\n\nfunction _onAction(payload: Object) {\n // Whitelist payload actions, no point sending most across\n if (['call_state'].includes(payload.action)) {\n ipcRenderer.send('app_onAction', payload);\n }\n}\n\nfunction getUpdateCheckStatus(status) {\n if (status === true) {\n return { status: updateCheckStatusEnum.DOWNLOADING };\n } else if (status === false) {\n return { status: updateCheckStatusEnum.NOTAVAILABLE };\n } else {\n return {\n status: updateCheckStatusEnum.ERROR,\n detail: status,\n };\n }\n}\n\nexport default class ElectronPlatform extends VectorBasePlatform {\n constructor() {\n super();\n\n this._pendingIpcCalls = {};\n this._nextIpcCallId = 0;\n\n dis.register(_onAction);\n /*\n IPC Call `check_updates` returns:\n true if there is an update available\n false if there is not\n or the error if one is encountered\n */\n ipcRenderer.on('check_updates', (event, status) => {\n if (!this.showUpdateCheck) return;\n dis.dispatch({\n action: 'check_updates',\n value: getUpdateCheckStatus(status),\n });\n this.showUpdateCheck = false;\n });\n\n // try to flush the rageshake logs to indexeddb before quit.\n ipcRenderer.on('before-quit', function() {\n console.log('riot-desktop closing');\n rageshake.flush();\n });\n\n ipcRenderer.on('ipcReply', this._onIpcReply.bind(this));\n ipcRenderer.on('update-downloaded', this.onUpdateDownloaded.bind(this));\n\n this.startUpdateCheck = this.startUpdateCheck.bind(this);\n this.stopUpdateCheck = this.stopUpdateCheck.bind(this);\n }\n\n async onUpdateDownloaded(ev, updateInfo) {\n dis.dispatch({\n action: 'new_version',\n currentVersion: await this.getAppVersion(),\n newVersion: updateInfo,\n releaseNotes: updateInfo.releaseNotes,\n });\n }\n\n getHumanReadableName(): string {\n return 'Electron Platform'; // no translation required: only used for analytics\n }\n\n setNotificationCount(count: number) {\n if (this.notificationCount === count) return;\n super.setNotificationCount(count);\n\n ipcRenderer.send('setBadgeCount', count);\n }\n\n supportsNotifications(): boolean {\n return true;\n }\n\n maySendNotifications(): boolean {\n return true;\n }\n\n displayNotification(title: string, msg: string, avatarUrl: string, room: Object): Notification {\n // GNOME notification spec parses HTML tags for styling...\n // Electron Docs state all supported linux notification systems follow this markup spec\n // https://github.com/electron/electron/blob/master/docs/tutorial/desktop-environment-integration.md#linux\n // maybe we should pass basic styling (italics, bold, underline) through from MD\n // we only have to strip out < and > as the spec doesn't include anything about things like &\n // so we shouldn't assume that all implementations will treat those properly. Very basic tag parsing is done.\n if (navigator.userAgent.indexOf('Linux')) {\n msg = msg.replace(/</g, '<').replace(/>/g, '>');\n }\n\n // Notifications in Electron use the HTML5 notification API\n const notification = new global.Notification(\n title,\n {\n body: msg,\n icon: avatarUrl,\n silent: true, // we play our own sounds\n },\n );\n\n notification.onclick = () => {\n dis.dispatch({\n action: 'view_room',\n room_id: room.roomId,\n });\n global.focus();\n this._ipcCall('focusWindow');\n };\n\n return notification;\n }\n\n loudNotification(ev: Event, room: Object) {\n ipcRenderer.send('loudNotification');\n }\n\n clearNotification(notif: Notification) {\n notif.close();\n }\n\n async getAppVersion(): Promise<string> {\n return await this._ipcCall('getAppVersion');\n }\n\n supportsAutoLaunch() {\n return true;\n }\n\n async getAutoLaunchEnabled() {\n return await this._ipcCall('getAutoLaunchEnabled');\n }\n\n async setAutoLaunchEnabled(enabled) {\n return await this._ipcCall('setAutoLaunchEnabled', enabled);\n }\n\n async canSelfUpdate(): boolean {\n const feedUrl = await this._ipcCall('getUpdateFeedUrl');\n return Boolean(feedUrl);\n }\n\n startUpdateCheck() {\n if (this.showUpdateCheck) return;\n super.startUpdateCheck();\n\n ipcRenderer.send('check_updates');\n }\n\n installUpdate() {\n // IPC to the main process to install the update, since quitAndInstall\n // doesn't fire the before-quit event so the main process needs to know\n // it should exit.\n ipcRenderer.send('install_update');\n }\n\n getDefaultDeviceDisplayName(): string {\n return _t('Riot Desktop on %(platformName)s', { platformName: platformFriendlyName() });\n }\n\n screenCaptureErrorString(): ?string {\n return null;\n }\n\n requestNotificationPermission(): Promise<string> {\n return Promise.resolve('granted');\n }\n\n reload() {\n // we used to remote to the main process to get it to\n // reload the webcontents, but in practice this is unnecessary:\n // the normal way works fine.\n window.location.reload(false);\n }\n\n async migrateFromOldOrigin() {\n return this._ipcCall('origin_migrate');\n }\n\n async _ipcCall(name, ...args) {\n const ipcCallId = ++this._nextIpcCallId;\n return new Promise((resolve, reject) => {\n this._pendingIpcCalls[ipcCallId] = {resolve, reject};\n window.ipcRenderer.send('ipcCall', {id: ipcCallId, name, args});\n // Maybe add a timeout to these? Probably not necessary.\n });\n }\n\n _onIpcReply(ev, payload) {\n if (payload.id === undefined) {\n console.warn(\"Ignoring IPC reply with no ID\");\n return;\n }\n\n if (this._pendingIpcCalls[payload.id] === undefined) {\n console.warn(\"Unknown IPC payload ID: \" + payload.id);\n return;\n }\n\n const callbacks = this._pendingIpcCalls[payload.id];\n delete this._pendingIpcCalls[payload.id];\n if (payload.error) {\n callbacks.reject(payload.error);\n } else {\n callbacks.resolve(payload.reply);\n }\n }\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Base class for classes that provide platform-specific functionality\n * eg. Setting an application badge or displaying notifications\n *\n * Instances of this class are provided by the application.\n */\nvar BasePlatform = function () {\n function BasePlatform() {\n (0, _classCallCheck3.default)(this, BasePlatform);\n\n this.notificationCount = 0;\n this.errorDidOccur = false;\n\n _dispatcher2.default.register(this._onAction.bind(this));\n }\n\n (0, _createClass3.default)(BasePlatform, [{\n key: '_onAction',\n value: function _onAction(payload) {\n switch (payload.action) {\n case 'on_logged_out':\n this.setNotificationCount(0);\n break;\n }\n }\n\n // Used primarily for Analytics\n\n }, {\n key: 'getHumanReadableName',\n value: function getHumanReadableName() {\n return 'Base Platform';\n }\n }, {\n key: 'setNotificationCount',\n value: function setNotificationCount(count) {\n this.notificationCount = count;\n }\n }, {\n key: 'setErrorStatus',\n value: function setErrorStatus(errorDidOccur) {\n this.errorDidOccur = errorDidOccur;\n }\n\n /**\n * Returns true if the platform supports displaying\n * notifications, otherwise false.\n * @returns {boolean} whether the platform supports displaying notifications\n */\n\n }, {\n key: 'supportsNotifications',\n value: function supportsNotifications() {\n return false;\n }\n\n /**\n * Returns true if the application currently has permission\n * to display notifications. Otherwise false.\n * @returns {boolean} whether the application has permission to display notifications\n */\n\n }, {\n key: 'maySendNotifications',\n value: function maySendNotifications() {\n return false;\n }\n\n /**\n * Requests permission to send notifications. Returns\n * a promise that is resolved when the user has responded\n * to the request. The promise has a single string argument\n * that is 'granted' if the user allowed the request or\n * 'denied' otherwise.\n */\n\n }, {\n key: 'requestNotificationPermission',\n value: function requestNotificationPermission() {}\n }, {\n key: 'displayNotification',\n value: function displayNotification(title, msg, avatarUrl, room) {}\n }, {\n key: 'loudNotification',\n value: function loudNotification(ev, room) {}\n\n /**\n * Returns a promise that resolves to a string representing\n * the current version of the application.\n */\n\n }, {\n key: 'getAppVersion',\n value: function getAppVersion() {\n throw new Error(\"getAppVersion not implemented!\");\n }\n\n /*\n * If it's not expected that capturing the screen will work\n * with getUserMedia, return a string explaining why not.\n * Otherwise, return null.\n */\n\n }, {\n key: 'screenCaptureErrorString',\n value: function screenCaptureErrorString() {\n return \"Not implemented\";\n }\n\n /**\n * Restarts the application, without neccessarily reloading\n * any application code\n */\n\n }, {\n key: 'reload',\n value: function reload() {\n throw new Error(\"reload not implemented!\");\n }\n }]);\n return BasePlatform;\n}();\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = BasePlatform;\nmodule.exports = exports['default'];\n//# sourceMappingURL=BasePlatform.js.map","/**\n * @license MIT\n * @fileOverview Favico animations\n * @author Miroslav Magda, http://blog.ejci.net\n * @version 0.3.10\n */\n\n/**\n * Create new favico instance\n * @param {Object} Options\n * @return {Object} Favico object\n * @example\n * var favico = new Favico({\n * bgColor : '#d00',\n * textColor : '#fff',\n * fontFamily : 'sans-serif',\n * fontStyle : 'bold',\n * position : 'down',\n * type : 'circle',\n * animation : 'slide',\n * dataUrl: function(url){},\n * win: top\n * });\n */\n(function () {\n\n\tvar Favico = (function (opt) {\n\t\t'use strict';\n\t\topt = (opt) ? opt : {};\n\t\tvar _def = {\n\t\t\tbgColor: '#d00',\n\t\t\ttextColor: '#fff',\n\t\t\tfontFamily: 'sans-serif', //Arial,Verdana,Times New Roman,serif,sans-serif,...\n\t\t\tfontStyle: 'bold', //normal,italic,oblique,bold,bolder,lighter,100,200,300,400,500,600,700,800,900\n\t\t\ttype: 'circle',\n\t\t\tposition: 'down', // down, up, left, leftup (upleft)\n\t\t\tanimation: 'slide',\n\t\t\telementId: false,\n\t\t\tdataUrl: false,\n\t\t\twin: window\n\t\t};\n\t\tvar _opt, _orig, _h, _w, _canvas, _context, _img, _ready, _lastBadge, _running, _readyCb, _stop, _browser, _animTimeout, _drawTimeout, _doc;\n\n\t\t_browser = {};\n\t\t_browser.ff = typeof InstallTrigger != 'undefined';\n\t\t_browser.chrome = !!window.chrome;\n\t\t_browser.opera = !!window.opera || navigator.userAgent.indexOf('Opera') >= 0;\n\t\t_browser.ie = /*@cc_on!@*/false;\n\t\t_browser.safari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;\n\t\t_browser.supported = (_browser.chrome || _browser.ff || _browser.opera);\n\n\t\tvar _queue = [];\n\t\t_readyCb = function () {\n\t\t};\n\t\t_ready = _stop = false;\n\t\t/**\n\t\t * Initialize favico\n\t\t */\n\t\tvar init = function () {\n\t\t\t//merge initial options\n\t\t\t_opt = merge(_def, opt);\n\t\t\t_opt.bgColor = hexToRgb(_opt.bgColor);\n\t\t\t_opt.textColor = hexToRgb(_opt.textColor);\n\t\t\t_opt.position = _opt.position.toLowerCase();\n\t\t\t_opt.animation = (animation.types['' + _opt.animation]) ? _opt.animation : _def.animation;\n\n\t\t\t_doc = _opt.win.document;\n\n\t\t\tvar isUp = _opt.position.indexOf('up') > -1;\n\t\t\tvar isLeft = _opt.position.indexOf('left') > -1;\n\n\t\t\t//transform animation\n\t\t\tif (isUp || isLeft) {\n\t\t\t\tfor (var i = 0; i < animation.types['' + _opt.animation].length; i++) {\n\t\t\t\t\tvar step = animation.types['' + _opt.animation][i];\n\n\t\t\t\t\tif (isUp) {\n\t\t\t\t\t\tif (step.y < 0.6) {\n\t\t\t\t\t\t\tstep.y = step.y - 0.4;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstep.y = step.y - 2 * step.y + (1 - step.w);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isLeft) {\n\t\t\t\t\t\tif (step.x < 0.6) {\n\t\t\t\t\t\t\tstep.x = step.x - 0.4;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstep.x = step.x - 2 * step.x + (1 - step.h);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tanimation.types['' + _opt.animation][i] = step;\n\t\t\t\t}\n\t\t\t}\n\t\t\t_opt.type = (type['' + _opt.type]) ? _opt.type : _def.type;\n\n\t\t\t_orig = link.getIcon();\n\t\t\t//create temp canvas\n\t\t\t_canvas = document.createElement('canvas');\n\t\t\t//create temp image\n\t\t\t_img = document.createElement('img');\n\t\t\tif (_orig.hasAttribute('href')) {\n\t\t\t\t_img.setAttribute('crossOrigin', 'anonymous');\n\t\t\t\t//get width/height\n\t\t\t\t_img.onload = function () {\n\t\t\t\t\t_h = (_img.height > 0) ? _img.height : 32;\n\t\t\t\t\t_w = (_img.width > 0) ? _img.width : 32;\n\t\t\t\t\t_canvas.height = _h;\n\t\t\t\t\t_canvas.width = _w;\n\t\t\t\t\t_context = _canvas.getContext('2d');\n\t\t\t\t\ticon.ready();\n\t\t\t\t};\n\t\t\t\t_img.setAttribute('src', _orig.getAttribute('href'));\n\t\t\t} else {\n\t\t\t\t_img.onload = function () {\n\t\t\t\t\t_h = 32;\n\t\t\t\t\t_w = 32;\n\t\t\t\t\t_img.height = _h;\n\t\t\t\t\t_img.width = _w;\n\t\t\t\t\t_canvas.height = _h;\n\t\t\t\t\t_canvas.width = _w;\n\t\t\t\t\t_context = _canvas.getContext('2d');\n\t\t\t\t\ticon.ready();\n\t\t\t\t};\n\t\t\t\t_img.setAttribute('src', '');\n\t\t\t}\n\n\t\t};\n\t\t/**\n\t\t * Icon namespace\n\t\t */\n\t\tvar icon = {};\n\t\t/**\n\t\t * Icon is ready (reset icon) and start animation (if ther is any)\n\t\t */\n\t\ticon.ready = function () {\n\t\t\t_ready = true;\n\t\t\ticon.reset();\n\t\t\t_readyCb();\n\t\t};\n\t\t/**\n\t\t * Reset icon to default state\n\t\t */\n\t\ticon.reset = function () {\n\t\t\t//reset\n\t\t\tif (!_ready) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t_queue = [];\n\t\t\t_lastBadge = false;\n\t\t\t_running = false;\n\t\t\t_context.clearRect(0, 0, _w, _h);\n\t\t\t_context.drawImage(_img, 0, 0, _w, _h);\n\t\t\t//_stop=true;\n\t\t\tlink.setIcon(_canvas);\n\t\t\t//webcam('stop');\n\t\t\t//video('stop');\n\t\t\twindow.clearTimeout(_animTimeout);\n\t\t\twindow.clearTimeout(_drawTimeout);\n\t\t};\n\t\t/**\n\t\t * Start animation\n\t\t */\n\t\ticon.start = function () {\n\t\t\tif (!_ready || _running) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar finished = function () {\n\t\t\t\t_lastBadge = _queue[0];\n\t\t\t\t_running = false;\n\t\t\t\tif (_queue.length > 0) {\n\t\t\t\t\t_queue.shift();\n\t\t\t\t\ticon.start();\n\t\t\t\t} else {\n\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (_queue.length > 0) {\n\t\t\t\t_running = true;\n\t\t\t\tvar run = function () {\n\t\t\t\t\t// apply options for this animation\n\t\t\t\t\t['type', 'animation', 'bgColor', 'textColor', 'fontFamily', 'fontStyle'].forEach(function (a) {\n\t\t\t\t\t\tif (a in _queue[0].options) {\n\t\t\t\t\t\t\t_opt[a] = _queue[0].options[a];\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tanimation.run(_queue[0].options, function () {\n\t\t\t\t\t\tfinished();\n\t\t\t\t\t}, false);\n\t\t\t\t};\n\t\t\t\tif (_lastBadge) {\n\t\t\t\t\tanimation.run(_lastBadge.options, function () {\n\t\t\t\t\t\trun();\n\t\t\t\t\t}, true);\n\t\t\t\t} else {\n\t\t\t\t\trun();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Badge types\n\t\t */\n\t\tvar type = {};\n\t\tvar options = function (opt) {\n\t\t\topt.n = ((typeof opt.n) === 'number') ? Math.abs(opt.n | 0) : opt.n;\n\t\t\topt.x = _w * opt.x;\n\t\t\topt.y = _h * opt.y;\n\t\t\topt.w = _w * opt.w;\n\t\t\topt.h = _h * opt.h;\n\t\t\topt.len = (\"\" + opt.n).length;\n\t\t\treturn opt;\n\t\t};\n\t\t/**\n\t\t * Generate circle\n\t\t * @param {Object} opt Badge options\n\t\t */\n\t\ttype.circle = function (opt) {\n\t\t\topt = options(opt);\n\t\t\tvar more = false;\n\t\t\tif (opt.len === 2) {\n\t\t\t\topt.x = opt.x - opt.w * 0.4;\n\t\t\t\topt.w = opt.w * 1.4;\n\t\t\t\tmore = true;\n\t\t\t} else if (opt.len >= 3) {\n\t\t\t\topt.x = opt.x - opt.w * 0.65;\n\t\t\t\topt.w = opt.w * 1.65;\n\t\t\t\tmore = true;\n\t\t\t}\n\t\t\t_context.clearRect(0, 0, _w, _h);\n\t\t\t_context.drawImage(_img, 0, 0, _w, _h);\n\t\t\t_context.beginPath();\n\t\t\t_context.font = _opt.fontStyle + \" \" + Math.floor(opt.h * (opt.n > 99 ? 0.85 : 1)) + \"px \" + _opt.fontFamily;\n\t\t\t_context.textAlign = 'center';\n\t\t\tif (more) {\n\t\t\t\t_context.moveTo(opt.x + opt.w / 2, opt.y);\n\t\t\t\t_context.lineTo(opt.x + opt.w - opt.h / 2, opt.y);\n\t\t\t\t_context.quadraticCurveTo(opt.x + opt.w, opt.y, opt.x + opt.w, opt.y + opt.h / 2);\n\t\t\t\t_context.lineTo(opt.x + opt.w, opt.y + opt.h - opt.h / 2);\n\t\t\t\t_context.quadraticCurveTo(opt.x + opt.w, opt.y + opt.h, opt.x + opt.w - opt.h / 2, opt.y + opt.h);\n\t\t\t\t_context.lineTo(opt.x + opt.h / 2, opt.y + opt.h);\n\t\t\t\t_context.quadraticCurveTo(opt.x, opt.y + opt.h, opt.x, opt.y + opt.h - opt.h / 2);\n\t\t\t\t_context.lineTo(opt.x, opt.y + opt.h / 2);\n\t\t\t\t_context.quadraticCurveTo(opt.x, opt.y, opt.x + opt.h / 2, opt.y);\n\t\t\t} else {\n\t\t\t\t_context.arc(opt.x + opt.w / 2, opt.y + opt.h / 2, opt.h / 2, 0, 2 * Math.PI);\n\t\t\t}\n\t\t\t_context.fillStyle = 'rgba(' + _opt.bgColor.r + ',' + _opt.bgColor.g + ',' + _opt.bgColor.b + ',' + opt.o + ')';\n\t\t\t_context.fill();\n\t\t\t_context.closePath();\n\t\t\t_context.beginPath();\n\t\t\t_context.stroke();\n\t\t\t_context.fillStyle = 'rgba(' + _opt.textColor.r + ',' + _opt.textColor.g + ',' + _opt.textColor.b + ',' + opt.o + ')';\n\t\t\t//_context.fillText((more) ? '9+' : opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15));\n\t\t\tif ((typeof opt.n) === 'number' && opt.n > 999) {\n\t\t\t\t_context.fillText(((opt.n > 9999) ? 9 : Math.floor(opt.n / 1000)) + 'k+', Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.2));\n\t\t\t} else {\n\t\t\t\t_context.fillText(opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15));\n\t\t\t}\n\t\t\t_context.closePath();\n\t\t};\n\t\t/**\n\t\t * Generate rectangle\n\t\t * @param {Object} opt Badge options\n\t\t */\n\t\ttype.rectangle = function (opt) {\n\t\t\topt = options(opt);\n\t\t\tvar more = false;\n\t\t\tif (opt.len === 2) {\n\t\t\t\topt.x = opt.x - opt.w * 0.4;\n\t\t\t\topt.w = opt.w * 1.4;\n\t\t\t\tmore = true;\n\t\t\t} else if (opt.len >= 3) {\n\t\t\t\topt.x = opt.x - opt.w * 0.65;\n\t\t\t\topt.w = opt.w * 1.65;\n\t\t\t\tmore = true;\n\t\t\t}\n\t\t\t_context.clearRect(0, 0, _w, _h);\n\t\t\t_context.drawImage(_img, 0, 0, _w, _h);\n\t\t\t_context.beginPath();\n\t\t\t_context.font = _opt.fontStyle + \" \" + Math.floor(opt.h * (opt.n > 99 ? 0.9 : 1)) + \"px \" + _opt.fontFamily;\n\t\t\t_context.textAlign = 'center';\n\t\t\t_context.fillStyle = 'rgba(' + _opt.bgColor.r + ',' + _opt.bgColor.g + ',' + _opt.bgColor.b + ',' + opt.o + ')';\n\t\t\t_context.fillRect(opt.x, opt.y, opt.w, opt.h);\n\t\t\t_context.fillStyle = 'rgba(' + _opt.textColor.r + ',' + _opt.textColor.g + ',' + _opt.textColor.b + ',' + opt.o + ')';\n\t\t\t//_context.fillText((more) ? '9+' : opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15));\n\t\t\tif ((typeof opt.n) === 'number' && opt.n > 999) {\n\t\t\t\t_context.fillText(((opt.n > 9999) ? 9 : Math.floor(opt.n / 1000)) + 'k+', Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.2));\n\t\t\t} else {\n\t\t\t\t_context.fillText(opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15));\n\t\t\t}\n\t\t\t_context.closePath();\n\t\t};\n\n\t\t/**\n\t\t * Set badge\n\t\t */\n\t\tvar badge = function (number, opts) {\n\t\t\topts = ((typeof opts) === 'string' ? {\n\t\t\t\tanimation: opts\n\t\t\t} : opts) || {};\n\t\t\t_readyCb = function () {\n\t\t\t\ttry {\n\t\t\t\t\tif (typeof (number) === 'number' ? (number > 0) : (number !== '')) {\n\t\t\t\t\t\tvar q = {\n\t\t\t\t\t\t\ttype: 'badge',\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\tn: number\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif ('animation' in opts && animation.types['' + opts.animation]) {\n\t\t\t\t\t\t\tq.options.animation = '' + opts.animation;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ('type' in opts && type['' + opts.type]) {\n\t\t\t\t\t\t\tq.options.type = '' + opts.type;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t['bgColor', 'textColor'].forEach(function (o) {\n\t\t\t\t\t\t\tif (o in opts) {\n\t\t\t\t\t\t\t\tq.options[o] = hexToRgb(opts[o]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\t['fontStyle', 'fontFamily'].forEach(function (o) {\n\t\t\t\t\t\t\tif (o in opts) {\n\t\t\t\t\t\t\t\tq.options[o] = opts[o];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\t_queue.push(q);\n\t\t\t\t\t\tif (_queue.length > 100) {\n\t\t\t\t\t\t\tthrow new Error('Too many badges requests in queue.');\n\t\t\t\t\t\t}\n\t\t\t\t\t\ticon.start();\n\t\t\t\t\t} else {\n\t\t\t\t\t\ticon.reset();\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new Error('Error setting badge. Message: ' + e.message);\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (_ready) {\n\t\t\t\t_readyCb();\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Set image as icon\n\t\t */\n\t\tvar image = function (imageElement) {\n\t\t\t_readyCb = function () {\n\t\t\t\ttry {\n\t\t\t\t\tvar w = imageElement.width;\n\t\t\t\t\tvar h = imageElement.height;\n\t\t\t\t\tvar newImg = document.createElement('img');\n\t\t\t\t\tvar ratio = (w / _w < h / _h) ? (w / _w) : (h / _h);\n\t\t\t\t\tnewImg.setAttribute('crossOrigin', 'anonymous');\n\t\t\t\t\tnewImg.onload=function(){\n\t\t\t\t\t\t_context.clearRect(0, 0, _w, _h);\n\t\t\t\t\t\t_context.drawImage(newImg, 0, 0, _w, _h);\n\t\t\t\t\t\tlink.setIcon(_canvas);\n\t\t\t\t\t};\n\t\t\t\t\tnewImg.setAttribute('src', imageElement.getAttribute('src'));\n\t\t\t\t\tnewImg.height = (h / ratio);\n\t\t\t\t\tnewImg.width = (w / ratio);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new Error('Error setting image. Message: ' + e.message);\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (_ready) {\n\t\t\t\t_readyCb();\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * Set video as icon\n\t\t */\n\t\tvar video = function (videoElement) {\n\t\t\t_readyCb = function () {\n\t\t\t\ttry {\n\t\t\t\t\tif (videoElement === 'stop') {\n\t\t\t\t\t\t_stop = true;\n\t\t\t\t\t\ticon.reset();\n\t\t\t\t\t\t_stop = false;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t//var w = videoElement.width;\n\t\t\t\t\t//var h = videoElement.height;\n\t\t\t\t\t//var ratio = (w / _w < h / _h) ? (w / _w) : (h / _h);\n\t\t\t\t\tvideoElement.addEventListener('play', function () {\n\t\t\t\t\t\tdrawVideo(this);\n\t\t\t\t\t}, false);\n\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new Error('Error setting video. Message: ' + e.message);\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (_ready) {\n\t\t\t\t_readyCb();\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * Set video as icon\n\t\t */\n\t\tvar webcam = function (action) {\n\t\t\t//UR\n\t\t\tif (!window.URL || !window.URL.createObjectURL) {\n\t\t\t\twindow.URL = window.URL || {};\n\t\t\t\twindow.URL.createObjectURL = function (obj) {\n\t\t\t\t\treturn obj;\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (_browser.supported) {\n\t\t\t\tvar newVideo = false;\n\t\t\t\tnavigator.getUserMedia = navigator.getUserMedia || navigator.oGetUserMedia || navigator.msGetUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia;\n\t\t\t\t_readyCb = function () {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (action === 'stop') {\n\t\t\t\t\t\t\t_stop = true;\n\t\t\t\t\t\t\ticon.reset();\n\t\t\t\t\t\t\t_stop = false;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewVideo = document.createElement('video');\n\t\t\t\t\t\tnewVideo.width = _w;\n\t\t\t\t\t\tnewVideo.height = _h;\n\t\t\t\t\t\tnavigator.getUserMedia({\n\t\t\t\t\t\t\tvideo: true,\n\t\t\t\t\t\t\taudio: false\n\t\t\t\t\t\t}, function (stream) {\n\t\t\t\t\t\t\tnewVideo.src = URL.createObjectURL(stream);\n\t\t\t\t\t\t\tnewVideo.play();\n\t\t\t\t\t\t\tdrawVideo(newVideo);\n\t\t\t\t\t\t}, function () {\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthrow new Error('Error setting webcam. Message: ' + e.message);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tif (_ready) {\n\t\t\t\t\t_readyCb();\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t\t/**\n\t\t * Draw video to context and repeat :)\n\t\t */\n\t\tfunction drawVideo(video) {\n\t\t\tif (video.paused || video.ended || _stop) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t//nasty hack for FF webcam (Thanks to Julian Ćwirko, kontakt@redsunmedia.pl)\n\t\t\ttry {\n\t\t\t\t_context.clearRect(0, 0, _w, _h);\n\t\t\t\t_context.drawImage(video, 0, 0, _w, _h);\n\t\t\t} catch (e) {\n\n\t\t\t}\n\t\t\t_drawTimeout = setTimeout(function () {\n\t\t\t\tdrawVideo(video);\n\t\t\t}, animation.duration);\n\t\t\tlink.setIcon(_canvas);\n\t\t}\n\n\t\tvar link = {};\n\t\t/**\n\t\t * Get icon from HEAD tag or create a new <link> element\n\t\t */\n\t\tlink.getIcon = function () {\n\t\t\tvar elm = false;\n\t\t\t//get link element\n\t\t\tvar getLink = function () {\n\t\t\t\tvar link = _doc.getElementsByTagName('head')[0].getElementsByTagName('link');\n\t\t\t\tfor (var l = link.length, i = (l - 1); i >= 0; i--) {\n\t\t\t\t\tif ((/(^|\\s)icon(\\s|$)/i).test(link[i].getAttribute('rel'))) {\n\t\t\t\t\t\treturn link[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t};\n\t\t\tif (_opt.element) {\n\t\t\t\telm = _opt.element;\n\t\t\t} else if (_opt.elementId) {\n\t\t\t\t//if img element identified by elementId\n\t\t\t\telm = _doc.getElementById(_opt.elementId);\n\t\t\t\telm.setAttribute('href', elm.getAttribute('src'));\n\t\t\t} else {\n\t\t\t\t//if link element\n\t\t\t\telm = getLink();\n\t\t\t\tif (elm === false) {\n\t\t\t\t\telm = _doc.createElement('link');\n\t\t\t\t\telm.setAttribute('rel', 'icon');\n\t\t\t\t\t_doc.getElementsByTagName('head')[0].appendChild(elm);\n\t\t\t\t}\n\t\t\t}\n\t\t\telm.setAttribute('type', 'image/png');\n\t\t\treturn elm;\n\t\t};\n\t\tlink.setIcon = function (canvas) {\n\t\t\tvar url = canvas.toDataURL('image/png');\n\t\t\tif (_opt.dataUrl) {\n\t\t\t\t//if using custom exporter\n\t\t\t\t_opt.dataUrl(url);\n\t\t\t}\n\t\t\tif (_opt.element) {\n\t\t\t\t_opt.element.setAttribute('href', url);\n\t\t\t\t_opt.element.setAttribute('src', url);\n\t\t\t} else if (_opt.elementId) {\n\t\t\t\t//if is attached to element (image)\n\t\t\t\tvar elm = _doc.getElementById(_opt.elementId);\n\t\t\t\telm.setAttribute('href', url);\n\t\t\t\telm.setAttribute('src', url);\n\t\t\t} else {\n\t\t\t\t//if is attached to fav icon\n\t\t\t\tif (_browser.ff || _browser.opera) {\n\t\t\t\t\t//for FF we need to \"recreate\" element, atach to dom and remove old <link>\n\t\t\t\t\t//var originalType = _orig.getAttribute('rel');\n\t\t\t\t\tvar old = _orig;\n\t\t\t\t\t_orig = _doc.createElement('link');\n\t\t\t\t\t//_orig.setAttribute('rel', originalType);\n\t\t\t\t\tif (_browser.opera) {\n\t\t\t\t\t\t_orig.setAttribute('rel', 'icon');\n\t\t\t\t\t}\n\t\t\t\t\t_orig.setAttribute('rel', 'icon');\n\t\t\t\t\t_orig.setAttribute('type', 'image/png');\n\t\t\t\t\t_doc.getElementsByTagName('head')[0].appendChild(_orig);\n\t\t\t\t\t_orig.setAttribute('href', url);\n\t\t\t\t\tif (old.parentNode) {\n\t\t\t\t\t\told.parentNode.removeChild(old);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t_orig.setAttribute('href', url);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t//http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb#answer-5624139\n\t\t//HEX to RGB convertor\n\t\tfunction hexToRgb(hex) {\n\t\t\tvar shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n\t\t\thex = hex.replace(shorthandRegex, function (m, r, g, b) {\n\t\t\t\treturn r + r + g + g + b + b;\n\t\t\t});\n\t\t\tvar result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\t\t\treturn result ? {\n\t\t\t\tr: parseInt(result[1], 16),\n\t\t\t\tg: parseInt(result[2], 16),\n\t\t\t\tb: parseInt(result[3], 16)\n\t\t\t} : false;\n\t\t}\n\n\t\t/**\n\t\t * Merge options\n\t\t */\n\t\tfunction merge(def, opt) {\n\t\t\tvar mergedOpt = {};\n\t\t\tvar attrname;\n\t\t\tfor (attrname in def) {\n\t\t\t\tmergedOpt[attrname] = def[attrname];\n\t\t\t}\n\t\t\tfor (attrname in opt) {\n\t\t\t\tmergedOpt[attrname] = opt[attrname];\n\t\t\t}\n\t\t\treturn mergedOpt;\n\t\t}\n\n\t\t/**\n\t\t * Cross-browser page visibility shim\n\t\t * http://stackoverflow.com/questions/12536562/detect-whether-a-window-is-visible\n\t\t */\n\t\tfunction isPageHidden() {\n\t\t\treturn _doc.hidden || _doc.msHidden || _doc.webkitHidden || _doc.mozHidden;\n\t\t}\n\n\t\t/**\n\t\t * @namespace animation\n\t\t */\n\t\tvar animation = {};\n\t\t/**\n\t\t * Animation \"frame\" duration\n\t\t */\n\t\tanimation.duration = 40;\n\t\t/**\n\t\t * Animation types (none,fade,pop,slide)\n\t\t */\n\t\tanimation.types = {};\n\t\tanimation.types.fade = [{\n\t\t\tx: 0.4,\n\t\t\ty: 0.4,\n\t\t\tw: 0.6,\n\t\t\th: 0.6,\n\t\t\to: 0.0\n\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.2\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.3\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.4\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.5\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.6\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.7\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.8\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.9\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1.0\n\t\t\t}];\n\t\tanimation.types.none = [{\n\t\t\tx: 0.4,\n\t\t\ty: 0.4,\n\t\t\tw: 0.6,\n\t\t\th: 0.6,\n\t\t\to: 1\n\t\t}];\n\t\tanimation.types.pop = [{\n\t\t\tx: 1,\n\t\t\ty: 1,\n\t\t\tw: 0,\n\t\t\th: 0,\n\t\t\to: 1\n\t\t}, {\n\t\t\t\tx: 0.9,\n\t\t\t\ty: 0.9,\n\t\t\t\tw: 0.1,\n\t\t\t\th: 0.1,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.8,\n\t\t\t\ty: 0.8,\n\t\t\t\tw: 0.2,\n\t\t\t\th: 0.2,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.7,\n\t\t\t\ty: 0.7,\n\t\t\t\tw: 0.3,\n\t\t\t\th: 0.3,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.6,\n\t\t\t\ty: 0.6,\n\t\t\t\tw: 0.4,\n\t\t\t\th: 0.4,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.5,\n\t\t\t\ty: 0.5,\n\t\t\t\tw: 0.5,\n\t\t\t\th: 0.5,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}];\n\t\tanimation.types.popFade = [{\n\t\t\tx: 0.75,\n\t\t\ty: 0.75,\n\t\t\tw: 0,\n\t\t\th: 0,\n\t\t\to: 0\n\t\t}, {\n\t\t\t\tx: 0.65,\n\t\t\t\ty: 0.65,\n\t\t\t\tw: 0.1,\n\t\t\t\th: 0.1,\n\t\t\t\to: 0.2\n\t\t\t}, {\n\t\t\t\tx: 0.6,\n\t\t\t\ty: 0.6,\n\t\t\t\tw: 0.2,\n\t\t\t\th: 0.2,\n\t\t\t\to: 0.4\n\t\t\t}, {\n\t\t\t\tx: 0.55,\n\t\t\t\ty: 0.55,\n\t\t\t\tw: 0.3,\n\t\t\t\th: 0.3,\n\t\t\t\to: 0.6\n\t\t\t}, {\n\t\t\t\tx: 0.50,\n\t\t\t\ty: 0.50,\n\t\t\t\tw: 0.4,\n\t\t\t\th: 0.4,\n\t\t\t\to: 0.8\n\t\t\t}, {\n\t\t\t\tx: 0.45,\n\t\t\t\ty: 0.45,\n\t\t\t\tw: 0.5,\n\t\t\t\th: 0.5,\n\t\t\t\to: 0.9\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}];\n\t\tanimation.types.slide = [{\n\t\t\tx: 0.4,\n\t\t\ty: 1,\n\t\t\tw: 0.6,\n\t\t\th: 0.6,\n\t\t\to: 1\n\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.9,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.9,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.8,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.7,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.6,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.5,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}];\n\t\t/**\n\t\t * Run animation\n\t\t * @param {Object} opt Animation options\n\t\t * @param {Object} cb Callabak after all steps are done\n\t\t * @param {Object} revert Reverse order? true|false\n\t\t * @param {Object} step Optional step number (frame bumber)\n\t\t */\n\t\tanimation.run = function (opt, cb, revert, step) {\n\t\t\tvar animationType = animation.types[isPageHidden() ? 'none' : _opt.animation];\n\t\t\tif (revert === true) {\n\t\t\t\tstep = (typeof step !== 'undefined') ? step : animationType.length - 1;\n\t\t\t} else {\n\t\t\t\tstep = (typeof step !== 'undefined') ? step : 0;\n\t\t\t}\n\t\t\tcb = (cb) ? cb : function () {\n\t\t\t};\n\t\t\tif ((step < animationType.length) && (step >= 0)) {\n\t\t\t\ttype[_opt.type](merge(opt, animationType[step]));\n\t\t\t\t_animTimeout = setTimeout(function () {\n\t\t\t\t\tif (revert) {\n\t\t\t\t\t\tstep = step - 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstep = step + 1;\n\t\t\t\t\t}\n\t\t\t\t\tanimation.run(opt, cb, revert, step);\n\t\t\t\t}, animation.duration);\n\n\t\t\t\tlink.setIcon(_canvas);\n\t\t\t} else {\n\t\t\t\tcb();\n\t\t\t\treturn;\n\t\t\t}\n\t\t};\n\t\t//auto init\n\t\tinit();\n\t\treturn {\n\t\t\tbadge: badge,\n\t\t\tvideo: video,\n\t\t\timage: image,\n\t\t\twebcam: webcam,\n\t\t\treset: icon.reset,\n\t\t\tbrowser: {\n\t\t\t\tsupported: _browser.supported\n\t\t\t}\n\t\t};\n\t});\n\n\t// AMD / RequireJS\n\tif (typeof define !== 'undefined' && define.amd) {\n\t\tdefine([], function () {\n\t\t\treturn Favico;\n\t\t});\n\t}\n\t// CommonJS\n\telse if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = Favico;\n\t}\n\t// included directly via <script> tag\n\telse {\n\t\tthis.Favico = Favico;\n\t}\n\n})();\n","// @flow\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport VectorBasePlatform, {updateCheckStatusEnum} from './VectorBasePlatform';\nimport request from 'browser-request';\nimport dis from 'matrix-react-sdk/lib/dispatcher.js';\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\nimport Promise from 'bluebird';\n\nimport url from 'url';\nimport UAParser from 'ua-parser-js';\n\nconst POKE_RATE_MS = 10 * 60 * 1000; // 10 min\n\nexport default class WebPlatform extends VectorBasePlatform {\n constructor() {\n super();\n this.runningVersion = null;\n\n this.startUpdateCheck = this.startUpdateCheck.bind(this);\n this.stopUpdateCheck = this.stopUpdateCheck.bind(this);\n }\n\n getHumanReadableName(): string {\n return 'Web Platform'; // no translation required: only used for analytics\n }\n\n /**\n * Returns true if the platform supports displaying\n * notifications, otherwise false.\n */\n supportsNotifications(): boolean {\n return Boolean(global.Notification);\n }\n\n /**\n * Returns true if the application currently has permission\n * to display notifications. Otherwise false.\n */\n maySendNotifications(): boolean {\n return global.Notification.permission === 'granted';\n }\n\n /**\n * Requests permission to send notifications. Returns\n * a promise that is resolved when the user has responded\n * to the request. The promise has a single string argument\n * that is 'granted' if the user allowed the request or\n * 'denied' otherwise.\n */\n requestNotificationPermission(): Promise<string> {\n // annoyingly, the latest spec says this returns a\n // promise, but this is only supported in Chrome 46\n // and Firefox 47, so adapt the callback API.\n return new Promise(function(resolve, reject) {\n global.Notification.requestPermission((result) => {\n resolve(result);\n });\n });\n }\n\n displayNotification(title: string, msg: string, avatarUrl: string, room: Object) {\n const notification = new global.Notification(\n title,\n {\n body: msg,\n icon: avatarUrl,\n tag: \"vector\",\n silent: true, // we play our own sounds\n },\n );\n\n notification.onclick = function() {\n dis.dispatch({\n action: 'view_room',\n room_id: room.roomId,\n });\n global.focus();\n notification.close();\n };\n\n // Chrome only dismisses notifications after 20s, which\n // is waaaaay too long\n global.setTimeout(function() {\n notification.close();\n }, 5 * 1000);\n }\n\n _getVersion(): Promise<string> {\n // We add a cachebuster to the request to make sure that we know about\n // the most recent version on the origin server. That might not\n // actually be the version we'd get on a reload (particularly in the\n // presence of intermediate caching proxies), but still: we're trying\n // to tell the user that there is a new version.\n\n return new Promise(function(resolve, reject) {\n request(\n {\n method: \"GET\",\n url: \"version\",\n qs: { cachebuster: Date.now() },\n },\n (err, response, body) => {\n if (err || response.status < 200 || response.status >= 300) {\n if (err === null) err = { status: response.status };\n reject(err);\n return;\n }\n\n const ver = body.trim();\n resolve(ver);\n },\n );\n });\n }\n\n getAppVersion(): Promise<string> {\n if (this.runningVersion !== null) {\n return Promise.resolve(this.runningVersion);\n }\n return this._getVersion();\n }\n\n startUpdater() {\n this.pollForUpdate();\n setInterval(this.pollForUpdate.bind(this), POKE_RATE_MS);\n }\n\n async canSelfUpdate(): boolean {\n return true;\n }\n\n pollForUpdate() {\n return this._getVersion().then((ver) => {\n if (this.runningVersion === null) {\n this.runningVersion = ver;\n } else if (this.runningVersion !== ver) {\n dis.dispatch({\n action: 'new_version',\n currentVersion: this.runningVersion,\n newVersion: ver,\n });\n // Return to skip a MatrixChat state update\n return;\n }\n return { status: updateCheckStatusEnum.NOTAVAILABLE };\n }, (err) => {\n console.error(\"Failed to poll for update\", err);\n return {\n status: updateCheckStatusEnum.ERROR,\n detail: err.message || err.status ? err.status.toString() : 'Unknown Error',\n };\n });\n }\n\n startUpdateCheck() {\n if (this.showUpdateCheck) return;\n super.startUpdateCheck();\n this.pollForUpdate().then((updateState) => {\n if (!this.showUpdateCheck) return;\n if (!updateState) return;\n dis.dispatch({\n action: 'check_updates',\n value: updateState,\n });\n });\n }\n\n installUpdate() {\n window.location.reload(true);\n }\n\n getDefaultDeviceDisplayName(): string {\n // strip query-string and fragment from uri\n const u = url.parse(window.location.href);\n u.search = \"\";\n u.hash = \"\";\n const appName = u.format();\n\n const ua = new UAParser();\n const browserName = ua.getBrowser().name || \"unknown browser\";\n const osName = ua.getOS().name || \"unknown os\";\n return _t('%(appName)s via %(browserName)s on %(osName)s', {appName: appName, browserName: browserName, osName: osName});\n }\n\n screenCaptureErrorString(): ?string {\n // it won't work at all if you're not on HTTPS so whine whine whine\n if (!global.window || global.window.location.protocol !== \"https:\") {\n return _t(\"You need to be using HTTPS to place a screen-sharing call.\");\n }\n return null;\n }\n\n reload() {\n // forceReload=false since we don't really need new HTML/JS files\n // we just need to restart the JS runtime.\n window.location.reload(false);\n }\n}\n","/*!\n * UAParser.js v0.7.19\n * Lightweight JavaScript-based User-Agent string parser\n * https://github.com/faisalman/ua-parser-js\n *\n * Copyright © 2012-2016 Faisal Salman <fyzlman@gmail.com>\n * Dual licensed under GPLv2 or MIT\n */\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '0.7.19',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major', // deprecated\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded';\n\n\n ///////////\n // Helper\n //////////\n\n\n var util = {\n extend : function (regexes, extensions) {\n var margedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n margedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n margedRegexes[i] = regexes[i];\n }\n }\n return margedRegexes;\n },\n has : function (str1, str2) {\n if (typeof str1 === \"string\") {\n return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1;\n } else {\n return false;\n }\n },\n lowerize : function (str) {\n return str.toLowerCase();\n },\n major : function (version) {\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g,'').split(\".\")[0] : undefined;\n },\n trim : function (str) {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n };\n\n\n ///////////////\n // Map helper\n //////////////\n\n\n var mapper = {\n\n rgx : function (ua, arrays) {\n\n //var result = {},\n var i = 0, j, k, p, q, matches, match;//, args = arguments;\n\n /*// construct object barebones\n for (p = 0; p < args[1].length; p++) {\n q = args[1][p];\n result[typeof q === OBJ_TYPE ? q[0] : q] = undefined;\n }*/\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length == 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length == 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length == 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n // console.log(this);\n //return this;\n },\n\n str : function (str, map) {\n\n for (var i in map) {\n // check if array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (util.has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (util.has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n }\n };\n\n\n ///////////////\n // String map\n //////////////\n\n\n var maps = {\n\n browser : {\n oldsafari : {\n version : {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n }\n }\n },\n\n device : {\n amazon : {\n model : {\n 'Fire Phone' : ['SD', 'KF']\n }\n },\n sprint : {\n model : {\n 'Evo Shift 4G' : '7373KT'\n },\n vendor : {\n 'HTC' : 'APA',\n 'Sprint' : 'Sprint'\n }\n }\n },\n\n os : {\n windows : {\n version : {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n }\n }\n }\n };\n\n\n //////////////\n // Regex map\n /////////////\n\n\n var regexes = {\n\n browser : [[\n\n // Presto based\n /(opera\\smini)\\/([\\w\\.-]+)/i, // Opera Mini\n /(opera\\s[mobiletab]+).+version\\/([\\w\\.-]+)/i, // Opera Mobi/Tablet\n /(opera).+version\\/([\\w\\.]+)/i, // Opera > 9.80\n /(opera)[\\/\\s]+([\\w\\.]+)/i // Opera < 9.80\n ], [NAME, VERSION], [\n\n /(opios)[\\/\\s]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [[NAME, 'Opera Mini'], VERSION], [\n\n /\\s(opr)\\/([\\w\\.]+)/i // Opera Webkit\n ], [[NAME, 'Opera'], VERSION], [\n\n // Mixed\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/\\s]?([\\w\\.]*)/i,\n // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n\n // Trident based\n /(avant\\s|iemobile|slim|baidu)(?:browser)?[\\/\\s]?([\\w\\.]*)/i,\n // Avant/IEMobile/SlimBrowser/Baidu\n /(?:ms|\\()(ie)\\s([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based\n /(rekonq)\\/([\\w\\.]*)/i, // Rekonq\n /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark)\\/([\\w\\.-]+)/i\n // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser\n ], [NAME, VERSION], [\n\n /(trident).+rv[:\\s]([\\w\\.]+).+like\\sgecko/i // IE11\n ], [[NAME, 'IE'], VERSION], [\n\n /(edge|edgios|edga)\\/((\\d+)?[\\w\\.]+)/i // Microsoft Edge\n ], [[NAME, 'Edge'], VERSION], [\n\n /(yabrowser)\\/([\\w\\.]+)/i // Yandex\n ], [[NAME, 'Yandex'], VERSION], [\n\n /(puffin)\\/([\\w\\.]+)/i // Puffin\n ], [[NAME, 'Puffin'], VERSION], [\n\n /(focus)\\/([\\w\\.]+)/i // Firefox Focus\n ], [[NAME, 'Firefox Focus'], VERSION], [\n\n /(opt)\\/([\\w\\.]+)/i // Opera Touch\n ], [[NAME, 'Opera Touch'], VERSION], [\n\n /((?:[\\s\\/])uc?\\s?browser|(?:juc.+)ucweb)[\\/\\s]?([\\w\\.]+)/i // UCBrowser\n ], [[NAME, 'UCBrowser'], VERSION], [\n\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n\n /(micromessenger)\\/([\\w\\.]+)/i // WeChat\n ], [[NAME, 'WeChat'], VERSION], [\n\n /(brave)\\/([\\w\\.]+)/i // Brave browser\n ], [[NAME, 'Brave'], VERSION], [\n\n /(qqbrowserlite)\\/([\\w\\.]+)/i // QQBrowserLite\n ], [NAME, VERSION], [\n\n /(QQ)\\/([\\d\\.]+)/i // QQ, aka ShouQ\n ], [NAME, VERSION], [\n\n /m?(qqbrowser)[\\/\\s]?([\\w\\.]+)/i // QQBrowser\n ], [NAME, VERSION], [\n\n /(BIDUBrowser)[\\/\\s]?([\\w\\.]+)/i // Baidu Browser\n ], [NAME, VERSION], [\n\n /(2345Explorer)[\\/\\s]?([\\w\\.]+)/i // 2345 Browser\n ], [NAME, VERSION], [\n\n /(MetaSr)[\\/\\s]?([\\w\\.]+)/i // SouGouBrowser\n ], [NAME], [\n\n /(LBBROWSER)/i // LieBao Browser\n ], [NAME], [\n\n /xiaomi\\/miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI Browser']], [\n\n /;fbav\\/([\\w\\.]+);/i // Facebook App for iOS & Android\n ], [VERSION, [NAME, 'Facebook']], [\n\n /safari\\s(line)\\/([\\w\\.]+)/i, // Line App for iOS\n /android.+(line)\\/([\\w\\.]+)\\/iab/i // Line App for Android\n ], [NAME, VERSION], [\n\n /headlesschrome(?:\\/([\\w\\.]+)|\\s)/i // Chrome Headless\n ], [VERSION, [NAME, 'Chrome Headless']], [\n\n /\\swv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [\n\n /((?:oculus|samsung)browser)\\/([\\w\\.]+)/i\n ], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [ // Oculus / Samsung Browser\n\n /android.+version\\/([\\w\\.]+)\\s+(?:mobile\\s?safari|safari)*/i // Android Browser\n ], [VERSION, [NAME, 'Android Browser']], [\n\n /(chrome|omniweb|arora|[tizenoka]{5}\\s?browser)\\/v?([\\w\\.]+)/i\n // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /(dolfin)\\/([\\w\\.]+)/i // Dolphin\n ], [[NAME, 'Dolphin'], VERSION], [\n\n /((?:android.+)crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [[NAME, 'Chrome'], VERSION], [\n\n /(coast)\\/([\\w\\.]+)/i // Opera Coast\n ], [[NAME, 'Opera Coast'], VERSION], [\n\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, 'Firefox']], [\n\n /version\\/([\\w\\.]+).+?mobile\\/\\w+\\s(safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n\n /version\\/([\\w\\.]+).+?(mobile\\s?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n\n /webkit.+?(gsa)\\/([\\w\\.]+).+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Google Search Appliance on iOS\n ], [[NAME, 'GSA'], VERSION], [\n\n /webkit.+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [\n\n /(konqueror)\\/([\\w\\.]+)/i, // Konqueror\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape)\\/([\\w\\.-]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo\\sbrowser|minimo|conkeror)[\\/\\s]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([\\w\\.-]+)$/i,\n\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(mozilla)\\/([\\w\\.]+).+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\\/\\s]?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir\n /(links)\\s\\(([\\w\\.]+)/i, // Links\n /(gobrowser)\\/?([\\w\\.]*)/i, // GoBrowser\n /(ice\\s?browser)\\/v?([\\w\\._]+)/i, // ICE Browser\n /(mosaic)[\\/\\s]([\\w\\.]+)/i // Mosaic\n ], [NAME, VERSION]\n\n /* /////////////////////\n // Media players BEGIN\n ////////////////////////\n\n , [\n\n /(apple(?:coremedia|))\\/((\\d+)[\\w\\._]+)/i, // Generic Apple CoreMedia\n /(coremedia) v((\\d+)[\\w\\._]+)/i\n ], [NAME, VERSION], [\n\n /(aqualung|lyssna|bsplayer)\\/((\\d+)?[\\w\\.-]+)/i // Aqualung/Lyssna/BSPlayer\n ], [NAME, VERSION], [\n\n /(ares|ossproxy)\\s((\\d+)[\\w\\.-]+)/i // Ares/OSSProxy\n ], [NAME, VERSION], [\n\n /(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\\/((\\d+)[\\w\\.-]+)/i,\n // Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC\n // NSPlayer/PSP-InternetRadioPlayer/Videos\n /(clementine|music player daemon)\\s((\\d+)[\\w\\.-]+)/i, // Clementine/MPD\n /(lg player|nexplayer)\\s((\\d+)[\\d\\.]+)/i,\n /player\\/(nexplayer|lg player)\\s((\\d+)[\\w\\.-]+)/i // NexPlayer/LG Player\n ], [NAME, VERSION], [\n /(nexplayer)\\s((\\d+)[\\w\\.-]+)/i // Nexplayer\n ], [NAME, VERSION], [\n\n /(flrp)\\/((\\d+)[\\w\\.-]+)/i // Flip Player\n ], [[NAME, 'Flip Player'], VERSION], [\n\n /(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i\n // FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit\n ], [NAME], [\n\n /(gstreamer) souphttpsrc (?:\\([^\\)]+\\)){0,1} libsoup\\/((\\d+)[\\w\\.-]+)/i\n // Gstreamer\n ], [NAME, VERSION], [\n\n /(htc streaming player)\\s[\\w_]+\\s\\/\\s((\\d+)[\\d\\.]+)/i, // HTC Streaming Player\n /(java|python-urllib|python-requests|wget|libcurl)\\/((\\d+)[\\w\\.-_]+)/i,\n // Java/urllib/requests/wget/cURL\n /(lavf)((\\d+)[\\d\\.]+)/i // Lavf (FFMPEG)\n ], [NAME, VERSION], [\n\n /(htc_one_s)\\/((\\d+)[\\d\\.]+)/i // HTC One S\n ], [[NAME, /_/g, ' '], VERSION], [\n\n /(mplayer)(?:\\s|\\/)(?:(?:sherpya-){0,1}svn)(?:-|\\s)(r\\d+(?:-\\d+[\\w\\.-]+){0,1})/i\n // MPlayer SVN\n ], [NAME, VERSION], [\n\n /(mplayer)(?:\\s|\\/|[unkow-]+)((\\d+)[\\w\\.-]+)/i // MPlayer\n ], [NAME, VERSION], [\n\n /(mplayer)/i, // MPlayer (no other info)\n /(yourmuze)/i, // YourMuze\n /(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime\n ], [NAME], [\n\n /(nero (?:home|scout))\\/((\\d+)[\\w\\.-]+)/i // Nero Home/Nero Scout\n ], [NAME, VERSION], [\n\n /(nokia\\d+)\\/((\\d+)[\\w\\.-]+)/i // Nokia\n ], [NAME, VERSION], [\n\n /\\s(songbird)\\/((\\d+)[\\w\\.-]+)/i // Songbird/Philips-Songbird\n ], [NAME, VERSION], [\n\n /(winamp)3 version ((\\d+)[\\w\\.-]+)/i, // Winamp\n /(winamp)\\s((\\d+)[\\w\\.-]+)/i,\n /(winamp)mpeg\\/((\\d+)[\\w\\.-]+)/i\n ], [NAME, VERSION], [\n\n /(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info)\n // inlight radio\n ], [NAME], [\n\n /(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\\/((\\d+)[\\w\\.-]+)/i\n // QuickTime/RealMedia/RadioApp/RadioClientApplication/\n // SoundTap/Totem/Stagefright/Streamium\n ], [NAME, VERSION], [\n\n /(smp)((\\d+)[\\d\\.]+)/i // SMP\n ], [NAME, VERSION], [\n\n /(vlc) media player - version ((\\d+)[\\w\\.]+)/i, // VLC Videolan\n /(vlc)\\/((\\d+)[\\w\\.-]+)/i,\n /(xbmc|gvfs|xine|xmms|irapp)\\/((\\d+)[\\w\\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp\n /(foobar2000)\\/((\\d+)[\\d\\.]+)/i, // Foobar2000\n /(itunes)\\/((\\d+)[\\d\\.]+)/i // iTunes\n ], [NAME, VERSION], [\n\n /(wmplayer)\\/((\\d+)[\\w\\.-]+)/i, // Windows Media Player\n /(windows-media-player)\\/((\\d+)[\\w\\.-]+)/i\n ], [[NAME, /-/g, ' '], VERSION], [\n\n /windows\\/((\\d+)[\\w\\.-]+) upnp\\/[\\d\\.]+ dlnadoc\\/[\\d\\.]+ (home media server)/i\n // Windows Media Server\n ], [VERSION, [NAME, 'Windows']], [\n\n /(com\\.riseupradioalarm)\\/((\\d+)[\\d\\.]*)/i // RiseUP Radio Alarm\n ], [NAME, VERSION], [\n\n /(rad.io)\\s((\\d+)[\\d\\.]+)/i, // Rad.io\n /(radio.(?:de|at|fr))\\s((\\d+)[\\d\\.]+)/i\n ], [[NAME, 'rad.io'], VERSION]\n\n //////////////////////\n // Media players END\n ////////////////////*/\n\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\\)]/i // AMD64\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, util.lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32\n ], [[ARCHITECTURE, 'ia32']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows\\s(ce|mobile);\\sppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?:\\smac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|arm(?:64|(?=v\\d+[;l]))|(?=atmel\\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, util.lowerize]]\n ],\n\n device : [[\n\n /\\((ipad|playbook);[\\w\\s\\);-]+(rim|apple)/i // iPad/PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/ // iPad\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [\n\n /(apple\\s{0,1}tv)/i // Apple TV\n ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple']], [\n\n /(archos)\\s(gamepad2?)/i, // Archos\n /(hp).+(touchpad)/i, // HP TouchPad\n /(hp).+(tablet)/i, // HP Tablet\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /\\s(nook)[\\w\\s]+build\\/(\\w+)/i, // Nook\n /(dell)\\s(strea[kpr\\s\\d]*[\\dko])/i // Dell Streak\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(kf[A-z]+)\\sbuild\\/.+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n /(sd|kf)[0349hijorstuw]+\\sbuild\\/.+silk\\//i // Fire Phone\n ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [\n /android.+aft([bms])\\sbuild/i // Fire TV\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, SMARTTV]], [\n\n /\\((ip[honed|\\s\\w*]+);.+(apple)/i // iPod/iPhone\n ], [MODEL, VENDOR, [TYPE, MOBILE]], [\n /\\((ip[honed|\\s\\w*]+);/i // iPod/iPhone\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [\n\n /(blackberry)[\\s-]?(\\w+)/i, // BlackBerry\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\\s_-]?([\\w-]*)/i,\n // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp)\\s([\\w\\s]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i // Asus\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /\\(bb10;\\s(\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [\n // Asus Tablets\n /android.+(transfo[prime\\s]{4,10}\\s\\w+|eeepc|slider\\s\\w+|nexus 7|padfone)/i\n ], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [\n\n /(sony)\\s(tablet\\s[ps])\\sbuild\\//i, // Sony\n /(sony)?(?:sgp.+)\\sbuild\\//i\n ], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [\n /android.+\\s([c-g]\\d{4}|so[-l]\\w+)\\sbuild\\//i\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n\n /\\s(ouya)\\s/i, // Ouya\n /(nintendo)\\s([wids3u]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n\n /android.+;\\s(shield)\\sbuild/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n\n /(playstation\\s[34portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [\n\n /(sprint\\s(\\w+))/i // Sprint Phones\n ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [\n\n /(lenovo)\\s?(S(?:5000|6000)+(?:[-][\\w+]))/i // Lenovo tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(htc)[;_\\s-]+([\\w\\s]+(?=\\))|\\w+)*/i, // HTC\n /(zte)-(\\w*)/i, // ZTE\n /(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\\s)sony)[_\\s-]?([\\w-]*)/i\n // Alcatel/GeeksPhone/Lenovo/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n /(nexus\\s9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n\n /d\\/huawei([\\w\\s-]+)[;\\)]/i,\n /(nexus\\s6p)/i // Huawei\n ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [\n\n /(microsoft);\\s(lumia[\\s\\w]+)/i // Microsoft Lumia\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /[\\s\\(;](xbox(?:\\sone)?)[\\s\\);]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\s(milestone|droid(?:[2-4x]|\\s(?:bionic|x2|pro|razr))?:?(\\s4g)?)[\\w\\s]+build\\//i,\n /mot[\\s-]?(\\w*)/i,\n /(XT\\d{3,4}) build\\//i,\n /(nexus\\s6)/i\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [\n /android.+\\s(mz60\\d|xoom[\\s2]{0,2})\\sbuild\\//i\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [\n\n /hbbtv\\/\\d+\\.\\d+\\.\\d+\\s+\\([\\w\\s]*;\\s*(\\w[^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [\n\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [\n\n /\\(dtv[\\);].+(aquos)/i // Sharp\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n\n /android.+((sch-i[89]0\\d|shw-m380s|gt-p\\d{4}|gt-n\\d+|sgh-t8[56]9|nexus 10))/i,\n /((SM-T\\w+))/i\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [ // Samsung\n /smart-tv.+(samsung)/i\n ], [VENDOR, [TYPE, SMARTTV], MODEL], [\n /((s[cgp]h-\\w+|gt-\\w+|galaxy\\snexus|sm-\\w[\\w\\d]+))/i,\n /(sam[sung]*)[\\s-]*(\\w+-?[\\w-]*)/i,\n /sec-((sgh\\w+))/i\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [\n\n /sie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n\n /(maemo|nokia).*(n900|lumia\\s\\d+)/i, // Nokia\n /(nokia)[\\s_-]?([\\w-]*)/i\n ], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [\n\n /android\\s3\\.[\\s\\w;-]{10}(a\\d{3})/i // Acer\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n /android.+([vl]k\\-?\\d{3})\\s+build/i // LG Tablet\n ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [\n /android\\s3\\.[\\s\\w;-]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet\n ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [\n /(lg) netcast\\.tv/i // LG SmartTV\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /(nexus\\s[45])/i, // LG\n /lg[e;\\s\\/-]+(\\w*)/i,\n /android.+lg(\\-?[\\d\\w]+)\\s+build/i\n ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [\n\n /android.+(ideatab[a-z0-9\\-\\s]+)/i // Lenovo\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n /linux;.+((jolla));/i // Jolla\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /((pebble))app\\/[\\d\\.]+\\s/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n\n /android.+;\\s(oppo)\\s?([\\w\\s]+)\\sbuild/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /crkey/i // Google Chromecast\n ], [[MODEL, 'Chromecast'], [VENDOR, 'Google']], [\n\n /android.+;\\s(glass)\\s\\d/i // Google Glass\n ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [\n\n /android.+;\\s(pixel c)[\\s)]/i // Google Pixel C\n ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [\n\n /android.+;\\s(pixel( [23])?( xl)?)\\s/i // Google Pixel\n ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [\n\n /android.+;\\s(\\w+)\\s+build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /android.+(hm[\\s\\-_]*note?[\\s_]*(?:\\d\\w)?)\\s+build/i, // Xiaomi Hongmi\n /android.+(mi[\\s\\-_]*(?:one|one[\\s_]plus|note lte)?[\\s_]*(?:\\d?\\w?)[\\s_]*(?:plus)?)\\s+build/i, // Xiaomi Mi\n /android.+(redmi[\\s\\-_]*(?:note)?(?:[\\s_]*[\\w\\s]+))\\s+build/i // Redmi Phones\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [\n /android.+(mi[\\s\\-_]*(?:pad)(?:[\\s_]*[\\w\\s]+))\\s+build/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [\n /android.+;\\s(m[1-5]\\snote)\\sbuild/i // Meizu Tablet\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, TABLET]], [\n /(mz)-([\\w-]{2,})/i // Meizu Phone\n ], [[VENDOR, 'Meizu'], MODEL, [TYPE, MOBILE]], [\n\n /android.+a000(1)\\s+build/i, // OnePlus\n /android.+oneplus\\s(a\\d{4})\\s+build/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(RCT[\\d\\w]+)\\s+build/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n\n /android.+[;\\/\\s]+(Venue[\\d\\s]{2,7})\\s+build/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Q[T|M][\\d\\w]+)\\s+build/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s+(Barnes[&\\s]+Noble\\s+|BN[RT])(V?.*)\\s+build/i // Barnes & Noble Tablet\n ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s+(TM\\d{3}.*\\b)\\s+build/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n\n /android.+;\\s(k88)\\sbuild/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(gen\\d{3})\\s+build.*49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(zur\\d{3})\\s+build/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*((Zeki)?TB.*\\b)\\s+build/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n\n /(android).+[;\\/]\\s+([YR]\\d{2})\\s+build/i,\n /android.+[;\\/]\\s+(Dragon[\\-\\s]+Touch\\s+|DT)(\\w{5})\\sbuild/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(NS-?\\w{0,9})\\sbuild/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*((NX|Next)-?\\w{0,9})\\s+build/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Xtreme\\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\\s+build/i\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [ // Voice Xtreme Phones\n\n /android.+[;\\/]\\s*(LVTEL\\-)?(V1[12])\\s+build/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n\n /android.+;\\s(PH-1)\\s/i\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [ // Essential PH-1\n\n /android.+[;\\/]\\s*(V(100MD|700NA|7011|917G).*\\b)\\s+build/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Le[\\s\\-]+Pan)[\\s\\-]+(\\w{1,9})\\s+build/i // Le Pan Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Trio[\\s\\-]*.*)\\s+build/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Trinity)[\\-\\s]*(T\\d{3})\\s+build/i // Trinity Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*TU_(1491)\\s+build/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n\n /android.+(KS(.+))\\s+build/i // Amazon Kindle Tablets\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n\n /android.+(Gigaset)[\\s\\-]+(Q\\w{1,9})\\s+build/i // Gigaset Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /\\s(tablet|tab)[;\\/]/i, // Unidentifiable Tablet\n /\\s(mobile)(?:[;\\/]|\\ssafari)/i // Unidentifiable Mobile\n ], [[TYPE, util.lowerize], VENDOR, MODEL], [\n\n /(android[\\w\\.\\s\\-]{0,9});.+build/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n\n\n /*//////////////////////////\n // TODO: move to string map\n ////////////////////////////\n\n /(C6603)/i // Sony Xperia Z C6603\n ], [[MODEL, 'Xperia Z C6603'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n /(C6903)/i // Sony Xperia Z 1\n ], [[MODEL, 'Xperia Z 1'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n\n /(SM-G900[F|H])/i // Samsung Galaxy S5\n ], [[MODEL, 'Galaxy S5'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G7102)/i // Samsung Galaxy Grand 2\n ], [[MODEL, 'Galaxy Grand 2'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G530H)/i // Samsung Galaxy Grand Prime\n ], [[MODEL, 'Galaxy Grand Prime'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G313HZ)/i // Samsung Galaxy V\n ], [[MODEL, 'Galaxy V'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-T805)/i // Samsung Galaxy Tab S 10.5\n ], [[MODEL, 'Galaxy Tab S 10.5'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\n /(SM-G800F)/i // Samsung Galaxy S5 Mini\n ], [[MODEL, 'Galaxy S5 Mini'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-T311)/i // Samsung Galaxy Tab 3 8.0\n ], [[MODEL, 'Galaxy Tab 3 8.0'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\n\n /(T3C)/i // Advan Vandroid T3C\n ], [MODEL, [VENDOR, 'Advan'], [TYPE, TABLET]], [\n /(ADVAN T1J\\+)/i // Advan Vandroid T1J+\n ], [[MODEL, 'Vandroid T1J+'], [VENDOR, 'Advan'], [TYPE, TABLET]], [\n /(ADVAN S4A)/i // Advan Vandroid S4A\n ], [[MODEL, 'Vandroid S4A'], [VENDOR, 'Advan'], [TYPE, MOBILE]], [\n\n /(V972M)/i // ZTE V972M\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n\n /(i-mobile)\\s(IQ\\s[\\d\\.]+)/i // i-mobile IQ\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(IQ6.3)/i // i-mobile IQ IQ 6.3\n ], [[MODEL, 'IQ 6.3'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\n /(i-mobile)\\s(i-style\\s[\\d\\.]+)/i // i-mobile i-STYLE\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(i-STYLE2.1)/i // i-mobile i-STYLE 2.1\n ], [[MODEL, 'i-STYLE 2.1'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\n\n /(mobiistar touch LAI 512)/i // mobiistar touch LAI 512\n ], [[MODEL, 'Touch LAI 512'], [VENDOR, 'mobiistar'], [TYPE, MOBILE]], [\n\n /////////////\n // END TODO\n ///////////*/\n\n ],\n\n engine : [[\n\n /windows.+\\sedge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, 'EdgeHTML']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m\n /(khtml|tasman|links)[\\/\\s]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/\\s]([23]\\.[\\d\\.]+)/i // iCab\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9}).+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows based\n /microsoft\\s(windows)\\s(vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows)\\snt\\s6\\.2;\\s(arm)/i, // Windows RT\n /(windows\\sphone(?:\\sos)*)[\\s\\/]?([\\d\\.\\s\\w]*)/i, // Windows Phone\n /(windows\\smobile|windows)[\\s\\/]?([ntce\\d\\.\\s]+\\w)/i\n ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [\n /(win(?=3|9|n)|win\\s9x\\s)([nt\\d\\.]+)/i\n ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [\n\n // Mobile/Embedded OS\n /\\((bb)(10);/i // BlackBerry 10\n ], [[NAME, 'BlackBerry'], VERSION], [\n /(blackberry)\\w*\\/?([\\w\\.]*)/i, // Blackberry\n /(tizen)[\\/\\s]([\\w\\.]+)/i, // Tizen\n /(android|webos|palm\\sos|qnx|bada|rim\\stablet\\sos|meego|contiki)[\\/\\s-]?([\\w\\.]*)/i,\n // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki\n /linux;.+(sailfish);/i // Sailfish OS\n ], [NAME, VERSION], [\n /(symbian\\s?os|symbos|s60(?=;))[\\/\\s-]?([\\w\\.]*)/i // Symbian\n ], [[NAME, 'Symbian'], VERSION], [\n /\\((series40);/i // Series 40\n ], [NAME], [\n /mozilla.+\\(mobile;.+gecko.+firefox/i // Firefox OS\n ], [[NAME, 'Firefox OS'], VERSION], [\n\n // Console\n /(nintendo|playstation)\\s([wids34portablevu]+)/i, // Nintendo/Playstation\n\n // GNU/Linux based\n /(mint)[\\/\\s\\(]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[;\\s]/i, // Mageia/VectorLinux\n /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\\/\\s-]?(?!chrom)([\\w\\.-]*)/i,\n // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware\n // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus\n /(hurd|linux)\\s?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu)\\s?([\\w\\.]*)/i // GNU\n ], [NAME, VERSION], [\n\n /(cros)\\s[\\w]+\\s([\\w\\.]+\\w)/i // Chromium OS\n ], [[NAME, 'Chromium OS'], VERSION],[\n\n // Solaris\n /(sunos)\\s?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n\n // BSD based\n /\\s([frentopc-]{0,4}bsd|dragonfly)\\s?([\\w\\.]*)/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly\n ], [NAME, VERSION],[\n\n /(haiku)\\s(\\w+)/i // Haiku\n ], [NAME, VERSION],[\n\n /cfnetwork\\/.+darwin/i,\n /ip[honead]{2,4}(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i // iOS\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n\n /(mac\\sos\\sx)\\s?([\\w\\s\\.]*)/i,\n /(macintosh|mac(?=_powerpc)\\s)/i // Mac OS\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n // Other\n /((?:open)?solaris)[\\/\\s-]?([\\w\\.]*)/i, // Solaris\n /(aix)\\s((\\d)(?=\\.|\\)|\\s)[\\w\\.])*/i, // AIX\n /(plan\\s9|minix|beos|os\\/2|amigaos|morphos|risc\\sos|openvms|fuchsia)/i,\n // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS/Fuchsia\n /(unix)\\s?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n\n /////////////////\n // Constructor\n ////////////////\n /*\n var Browser = function (name, version) {\n this[NAME] = name;\n this[VERSION] = version;\n };\n var CPU = function (arch) {\n this[ARCHITECTURE] = arch;\n };\n var Device = function (vendor, model, type) {\n this[VENDOR] = vendor;\n this[MODEL] = model;\n this[TYPE] = type;\n };\n var Engine = Browser;\n var OS = Browser;\n */\n var UAParser = function (uastring, extensions) {\n\n if (typeof uastring === 'object') {\n extensions = uastring;\n uastring = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(uastring, extensions).getResult();\n }\n\n var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;\n //var browser = new Browser();\n //var cpu = new CPU();\n //var device = new Device();\n //var engine = new Engine();\n //var os = new OS();\n\n this.getBrowser = function () {\n var browser = { name: undefined, version: undefined };\n mapper.rgx.call(browser, ua, rgxmap.browser);\n browser.major = util.major(browser.version); // deprecated\n return browser;\n };\n this.getCPU = function () {\n var cpu = { architecture: undefined };\n mapper.rgx.call(cpu, ua, rgxmap.cpu);\n return cpu;\n };\n this.getDevice = function () {\n var device = { vendor: undefined, model: undefined, type: undefined };\n mapper.rgx.call(device, ua, rgxmap.device);\n return device;\n };\n this.getEngine = function () {\n var engine = { name: undefined, version: undefined };\n mapper.rgx.call(engine, ua, rgxmap.engine);\n return engine;\n };\n this.getOS = function () {\n var os = { name: undefined, version: undefined };\n mapper.rgx.call(os, ua, rgxmap.os);\n return os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return ua;\n };\n this.setUA = function (uastring) {\n ua = uastring;\n //browser = new Browser();\n //cpu = new CPU();\n //device = new Device();\n //engine = new Engine();\n //os = new OS();\n return this;\n };\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = {\n NAME : NAME,\n MAJOR : MAJOR, // deprecated\n VERSION : VERSION\n };\n UAParser.CPU = {\n ARCHITECTURE : ARCHITECTURE\n };\n UAParser.DEVICE = {\n MODEL : MODEL,\n VENDOR : VENDOR,\n TYPE : TYPE,\n CONSOLE : CONSOLE,\n MOBILE : MOBILE,\n SMARTTV : SMARTTV,\n TABLET : TABLET,\n WEARABLE: WEARABLE,\n EMBEDDED: EMBEDDED\n };\n UAParser.ENGINE = {\n NAME : NAME,\n VERSION : VERSION\n };\n UAParser.OS = {\n NAME : NAME,\n VERSION : VERSION\n };\n //UAParser.Utils = util;\n\n ///////////\n // Export\n //////////\n\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n // TODO: test!!!!!!!!\n /*\n if (require && require.main === module && process) {\n // cli\n var jsonize = function (arr) {\n var res = [];\n for (var i in arr) {\n res.push(new UAParser(arr[i]).getResult());\n }\n process.stdout.write(JSON.stringify(res, null, 2) + '\\n');\n };\n if (process.stdin.isTTY) {\n // via args\n jsonize(process.argv.slice(2));\n } else {\n // via pipe\n var str = '';\n process.stdin.on('readable', function() {\n var read = process.stdin.read();\n if (read !== null) {\n str += read;\n }\n });\n process.stdin.on('end', function () {\n jsonize(str.replace(/\\n$/, '').split('\\n'));\n });\n }\n }\n */\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (window) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = window && (window.jQuery || window.Zepto);\n if (typeof $ !== UNDEF_TYPE && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (uastring) {\n parser.setUA(uastring);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","var olm_exports = {};\nvar onInitSuccess;\nvar onInitFail;\n\nvar Module = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n return (\nfunction(Module) {\n Module = Module || {};\n\nvar a;a||(a=typeof Module !== 'undefined' ? Module : {});var aa;if(\"undefined\"!==typeof window)aa=function(b){window.crypto.getRandomValues(b)};else if(module.exports){var ba=require(\"crypto\");aa=function(b){var c=ba.randomBytes(b.length);b.set(c)};process=global.process}else throw Error(\"Cannot find global to attach library to\");if(\"undefined\"!==typeof OLM_OPTIONS)for(var ca in OLM_OPTIONS)OLM_OPTIONS.hasOwnProperty(ca)&&(a[ca]=OLM_OPTIONS[ca]);\na.onRuntimeInitialized=function(){g=a._olm_error();olm_exports.PRIVATE_KEY_LENGTH=a._olm_pk_private_key_length();onInitSuccess&&onInitSuccess()};a.onAbort=function(b){onInitFail&&onInitFail(b)};var k={},m;for(m in a)a.hasOwnProperty(m)&&(k[m]=a[m]);a.arguments=[];a.thisProgram=\"./this.program\";a.quit=function(b,c){throw c;};a.preRun=[];a.postRun=[];var n=!1,p=!1,da=!1,ea=!1;n=\"object\"===typeof window;p=\"function\"===typeof importScripts;\nda=\"object\"===typeof process&&\"function\"===typeof require&&!n&&!p;ea=!n&&!da&&!p;var r=\"\";function fa(b){return a.locateFile?a.locateFile(b,r):r+b}\nif(da){r=__dirname+\"/\";var ha,ia;a.read=function(b,c){ha||(ha=require(\"fs\"));ia||(ia=require(\"path\"));b=ia.normalize(b);b=ha.readFileSync(b);return c?b:b.toString()};a.readBinary=function(b){b=a.read(b,!0);b.buffer||(b=new Uint8Array(b));assert(b.buffer);return b};1<process.argv.length&&(a.thisProgram=process.argv[1].replace(/\\\\/g,\"/\"));a.arguments=process.argv.slice(2);process.on(\"uncaughtException\",function(b){throw b;});process.on(\"unhandledRejection\",function(){process.exit(1)});a.quit=function(b){process.exit(b)};\na.inspect=function(){return\"[Emscripten Module object]\"}}else if(ea)\"undefined\"!=typeof read&&(a.read=function(b){return read(b)}),a.readBinary=function(b){if(\"function\"===typeof readbuffer)return new Uint8Array(readbuffer(b));b=read(b,\"binary\");assert(\"object\"===typeof b);return b},\"undefined\"!=typeof scriptArgs?a.arguments=scriptArgs:\"undefined\"!=typeof arguments&&(a.arguments=arguments),\"function\"===typeof quit&&(a.quit=function(b){quit(b)});else if(n||p)n?document.currentScript&&(r=document.currentScript.src):\nr=self.location.href,_scriptDir&&(r=_scriptDir),0!==r.indexOf(\"blob:\")?r=r.substr(0,r.lastIndexOf(\"/\")+1):r=\"\",a.read=function(b){var c=new XMLHttpRequest;c.open(\"GET\",b,!1);c.send(null);return c.responseText},p&&(a.readBinary=function(b){var c=new XMLHttpRequest;c.open(\"GET\",b,!1);c.responseType=\"arraybuffer\";c.send(null);return new Uint8Array(c.response)}),a.readAsync=function(b,c,d){var e=new XMLHttpRequest;e.open(\"GET\",b,!0);e.responseType=\"arraybuffer\";e.onload=function(){200==e.status||0==e.status&&\ne.response?c(e.response):d()};e.onerror=d;e.send(null)},a.setWindowTitle=function(b){document.title=b};var ja=a.print||(\"undefined\"!==typeof console?console.log.bind(console):\"undefined\"!==typeof print?print:null),t=a.printErr||(\"undefined\"!==typeof printErr?printErr:\"undefined\"!==typeof console&&console.warn.bind(console)||ja);for(m in k)k.hasOwnProperty(m)&&(a[m]=k[m]);k=void 0;function ka(b){var c=u;u=u+b+15&-16;return c}\nfunction la(b){var c=v[w>>2];b=c+b+15&-16;v[w>>2]=b;if(b=b>=x)ma(),b=!0;return b?(v[w>>2]=c,0):c}function na(b){var c;c||(c=16);return Math.ceil(b/c)*c}var oa={\"f64-rem\":function(b,c){return b%c},\"debugger\":function(){debugger}},pa=!1;function assert(b,c){b||y(\"Assertion failed: \"+c)}\nfunction z(b){var c=\"i8\";\"*\"===c.charAt(c.length-1)&&(c=\"i32\");switch(c){case \"i1\":B[b>>0]=0;break;case \"i8\":B[b>>0]=0;break;case \"i16\":qa[b>>1]=0;break;case \"i32\":v[b>>2]=0;break;case \"i64\":tempI64=[0,(tempDouble=0,1<=+ra(tempDouble)?0<tempDouble?(sa(+ta(tempDouble/4294967296),4294967295)|0)>>>0:~~+ua((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)];v[b>>2]=tempI64[0];v[b+4>>2]=tempI64[1];break;case \"float\":va[b>>2]=0;break;case \"double\":wa[b>>3]=0;break;default:y(\"invalid type for setValue: \"+\nc)}}function xa(b,c){c=c||\"i8\";\"*\"===c.charAt(c.length-1)&&(c=\"i32\");switch(c){case \"i1\":return B[b>>0];case \"i8\":return B[b>>0];case \"i16\":return qa[b>>1];case \"i32\":return v[b>>2];case \"i64\":return v[b>>2];case \"float\":return va[b>>2];case \"double\":return wa[b>>3];default:y(\"invalid type for getValue: \"+c)}return null}\nfunction C(b){var c=a.ALLOC_STACK;if(\"number\"===typeof b){var d=!0;var e=b}else d=!1,e=b.length;c=4==c?f:[\"function\"===typeof ya?ya:ka,za,ka,la][void 0===c?2:c](Math.max(e,1));if(d){var f=c;assert(0==(c&3));for(b=c+(e&-4);f<b;f+=4)v[f>>2]=0;for(b=c+e;f<b;)B[f++>>0]=0;return c}b.subarray||b.slice?D.set(b,c):D.set(new Uint8Array(b),c);return c}\nfunction E(b){var c;if(0===c||!b)return\"\";for(var d=0,e,f=0;;){e=D[b+f>>0];d|=e;if(0==e&&!c)break;f++;if(c&&f==c)break}c||(c=f);e=\"\";if(128>d){for(;0<c;)d=String.fromCharCode.apply(String,D.subarray(b,b+Math.min(c,1024))),e=e?e+d:d,b+=1024,c-=1024;return e}return F(b)}var Aa=\"undefined\"!==typeof TextDecoder?new TextDecoder(\"utf8\"):void 0;\nfunction F(b){for(var c=D,d=b;c[d];)++d;if(16<d-b&&c.subarray&&Aa)return Aa.decode(c.subarray(b,d));for(d=\"\";;){var e=c[b++];if(!e)return d;if(e&128){var f=c[b++]&63;if(192==(e&224))d+=String.fromCharCode((e&31)<<6|f);else{var l=c[b++]&63;if(224==(e&240))e=(e&15)<<12|f<<6|l;else{var h=c[b++]&63;if(240==(e&248))e=(e&7)<<18|f<<12|l<<6|h;else{var q=c[b++]&63;if(248==(e&252))e=(e&3)<<24|f<<18|l<<12|h<<6|q;else{var H=c[b++]&63;e=(e&1)<<30|f<<24|l<<18|h<<12|q<<6|H}}}65536>e?d+=String.fromCharCode(e):(e-=\n65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}}\nfunction Ba(b,c,d,e){if(!(0<e))return 0;var f=d;e=d+e-1;for(var l=0;l<b.length;++l){var h=b.charCodeAt(l);if(55296<=h&&57343>=h){var q=b.charCodeAt(++l);h=65536+((h&1023)<<10)|q&1023}if(127>=h){if(d>=e)break;c[d++]=h}else{if(2047>=h){if(d+1>=e)break;c[d++]=192|h>>6}else{if(65535>=h){if(d+2>=e)break;c[d++]=224|h>>12}else{if(2097151>=h){if(d+3>=e)break;c[d++]=240|h>>18}else{if(67108863>=h){if(d+4>=e)break;c[d++]=248|h>>24}else{if(d+5>=e)break;c[d++]=252|h>>30;c[d++]=128|h>>24&63}c[d++]=128|h>>18&63}c[d++]=\n128|h>>12&63}c[d++]=128|h>>6&63}c[d++]=128|h&63}}c[d]=0;return d-f}function Ca(b){for(var c=0,d=0;d<b.length;++d){var e=b.charCodeAt(d);55296<=e&&57343>=e&&(e=65536+((e&1023)<<10)|b.charCodeAt(++d)&1023);127>=e?++c:c=2047>=e?c+2:65535>=e?c+3:2097151>=e?c+4:67108863>=e?c+5:c+6}return c}\"undefined\"!==typeof TextDecoder&&new TextDecoder(\"utf-16le\");var buffer,B,D,qa,v,va,wa;\nfunction Da(){a.HEAP8=B=new Int8Array(buffer);a.HEAP16=qa=new Int16Array(buffer);a.HEAP32=v=new Int32Array(buffer);a.HEAPU8=D=new Uint8Array(buffer);a.HEAPU16=new Uint16Array(buffer);a.HEAPU32=new Uint32Array(buffer);a.HEAPF32=va=new Float32Array(buffer);a.HEAPF64=wa=new Float64Array(buffer)}var Ea,u,Fa,Ga,Ha,Ia,w;Ea=u=Fa=Ga=Ha=Ia=w=0;\nfunction ma(){y(\"Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value \"+x+\", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 \")}var Ja=a.TOTAL_STACK||65536,x=a.TOTAL_MEMORY||262144;x<Ja&&t(\"TOTAL_MEMORY should be larger than TOTAL_STACK, was \"+x+\"! (TOTAL_STACK=\"+Ja+\")\");\na.buffer?buffer=a.buffer:(\"object\"===typeof WebAssembly&&\"function\"===typeof WebAssembly.Memory?(a.wasmMemory=new WebAssembly.Memory({initial:x/65536,maximum:x/65536}),buffer=a.wasmMemory.buffer):buffer=new ArrayBuffer(x),a.buffer=buffer);Da();function Ka(b){for(;0<b.length;){var c=b.shift();if(\"function\"==typeof c)c();else{var d=c.h;\"number\"===typeof d?void 0===c.c?a.dynCall_v(d):a.dynCall_vi(d,c.c):d(void 0===c.c?null:c.c)}}}var La=[],Ma=[],Na=[],Oa=[],Qa=!1;\nfunction Ra(){var b=a.preRun.shift();La.unshift(b)}function Sa(b,c){for(var d=0;d<b.length;++d)B[c++>>0]=b.charCodeAt(d)}var ra=Math.abs,ua=Math.ceil,ta=Math.floor,sa=Math.min,G=0,Ta=null,Ua=null;a.preloadedImages={};a.preloadedAudios={};function Va(b){return String.prototype.startsWith?b.startsWith(\"data:application/octet-stream;base64,\"):0===b.indexOf(\"data:application/octet-stream;base64,\")}\n(function(){function b(){try{if(a.wasmBinary)return new Uint8Array(a.wasmBinary);if(a.readBinary)return a.readBinary(f);throw\"both async and sync fetching of the wasm failed\";}catch(A){y(A)}}function c(){return a.wasmBinary||!n&&!p||\"function\"!==typeof fetch?new Promise(function(c){c(b())}):fetch(f,{credentials:\"same-origin\"}).then(function(b){if(!b.ok)throw\"failed to load wasm binary file at '\"+f+\"'\";return b.arrayBuffer()}).catch(function(){return b()})}function d(b){function d(b){q=b.exports;if(q.memory){b=\nq.memory;var c=a.buffer;b.byteLength<c.byteLength&&t(\"the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here\");c=new Int8Array(c);(new Int8Array(b)).set(c);a.buffer=buffer=b;Da()}a.asm=q;a.usingWasm=!0;G--;a.monitorRunDependencies&&a.monitorRunDependencies(G);0==G&&(null!==Ta&&(clearInterval(Ta),Ta=null),Ua&&(b=Ua,Ua=null,b()))}function e(b){d(b.instance)}function l(b){c().then(function(b){return WebAssembly.instantiate(b,h)}).then(b).catch(function(b){t(\"failed to asynchronously prepare wasm: \"+\nb);y(b)})}if(\"object\"!==typeof WebAssembly)return t(\"no native wasm support detected\"),!1;if(!(a.wasmMemory instanceof WebAssembly.Memory))return t(\"no native wasm Memory in use\"),!1;b.memory=a.wasmMemory;h.global={NaN:NaN,Infinity:Infinity};h[\"global.Math\"]=Math;h.env=b;G++;a.monitorRunDependencies&&a.monitorRunDependencies(G);if(a.instantiateWasm)try{return a.instantiateWasm(h,d)}catch(ab){return t(\"Module.instantiateWasm callback failed with error: \"+ab),!1}a.wasmBinary||\"function\"!==typeof WebAssembly.instantiateStreaming||\nVa(f)||\"function\"!==typeof fetch?l(e):WebAssembly.instantiateStreaming(fetch(f,{credentials:\"same-origin\"}),h).then(e).catch(function(b){t(\"wasm streaming compile failed: \"+b);t(\"falling back to ArrayBuffer instantiation\");l(e)});return{}}var e=\"olm.wast\",f=\"olm.wasm\",l=\"olm.temp.asm.js\";Va(e)||(e=fa(e));Va(f)||(f=fa(f));Va(l)||(l=fa(l));var h={global:null,env:null,asm2wasm:oa,parent:a},q=null;a.asmPreload=a.asm;var H=a.reallocBuffer;a.reallocBuffer=function(b){if(\"asmjs\"===O)var c=H(b);else a:{var d=\na.usingWasm?65536:16777216;0<b%d&&(b+=d-b%d);d=a.buffer.byteLength;if(a.usingWasm)try{c=-1!==a.wasmMemory.grow((b-d)/65536)?a.buffer=a.wasmMemory.buffer:null;break a}catch(eb){c=null;break a}c=void 0}return c};var O=\"\";a.asm=function(b,c){if(!c.table){b=a.wasmTableSize;void 0===b&&(b=1024);var e=a.wasmMaxTableSize;c.table=\"object\"===typeof WebAssembly&&\"function\"===typeof WebAssembly.Table?void 0!==e?new WebAssembly.Table({initial:b,maximum:e,element:\"anyfunc\"}):new WebAssembly.Table({initial:b,element:\"anyfunc\"}):\nArray(b);a.wasmTable=c.table}c.memoryBase||(c.memoryBase=a.STATIC_BASE);c.tableBase||(c.tableBase=0);c=d(c);assert(c,\"no binaryen method succeeded.\");return c}})();Ea=1024;u=Ea+37168;Ma.push();a.STATIC_BASE=Ea;a.STATIC_BUMP=37168;u+=16;w=ka(4);Fa=Ga=na(u);Ha=Fa+Ja;Ia=na(Ha);v[w>>2]=Ia;function I(b){var c=Array(Ca(b)+1);b=Ba(b,c,0,c.length);c.length=b;return c}a.wasmTableSize=10;a.wasmMaxTableSize=10;a.f={};\na.g={abort:y,enlargeMemory:function(){ma()},getTotalMemory:function(){return x},abortOnCannotGrowMemory:ma,___setErrNo:function(b){a.___errno_location&&(v[a.___errno_location()>>2]=b);return b},_emscripten_memcpy_big:function(b,c,d){D.set(D.subarray(c,c+d),b);return b},DYNAMICTOP_PTR:w,STACKTOP:Ga};var Wa=a.asm(a.f,a.g,buffer);a.asm=Wa;a._free=function(){return a.asm._free.apply(null,arguments)};var ya=a._malloc=function(){return a.asm._malloc.apply(null,arguments)};\na._olm_account=function(){return a.asm._olm_account.apply(null,arguments)};a._olm_account_generate_one_time_keys=function(){return a.asm._olm_account_generate_one_time_keys.apply(null,arguments)};a._olm_account_generate_one_time_keys_random_length=function(){return a.asm._olm_account_generate_one_time_keys_random_length.apply(null,arguments)};a._olm_account_identity_keys=function(){return a.asm._olm_account_identity_keys.apply(null,arguments)};\na._olm_account_identity_keys_length=function(){return a.asm._olm_account_identity_keys_length.apply(null,arguments)};a._olm_account_last_error=function(){return a.asm._olm_account_last_error.apply(null,arguments)};a._olm_account_mark_keys_as_published=function(){return a.asm._olm_account_mark_keys_as_published.apply(null,arguments)};a._olm_account_max_number_of_one_time_keys=function(){return a.asm._olm_account_max_number_of_one_time_keys.apply(null,arguments)};\na._olm_account_one_time_keys=function(){return a.asm._olm_account_one_time_keys.apply(null,arguments)};a._olm_account_one_time_keys_length=function(){return a.asm._olm_account_one_time_keys_length.apply(null,arguments)};a._olm_account_sign=function(){return a.asm._olm_account_sign.apply(null,arguments)};a._olm_account_signature_length=function(){return a.asm._olm_account_signature_length.apply(null,arguments)};a._olm_account_size=function(){return a.asm._olm_account_size.apply(null,arguments)};\na._olm_clear_account=function(){return a.asm._olm_clear_account.apply(null,arguments)};a._olm_clear_inbound_group_session=function(){return a.asm._olm_clear_inbound_group_session.apply(null,arguments)};a._olm_clear_outbound_group_session=function(){return a.asm._olm_clear_outbound_group_session.apply(null,arguments)};a._olm_clear_pk_decryption=function(){return a.asm._olm_clear_pk_decryption.apply(null,arguments)};\na._olm_clear_pk_encryption=function(){return a.asm._olm_clear_pk_encryption.apply(null,arguments)};a._olm_clear_session=function(){return a.asm._olm_clear_session.apply(null,arguments)};a._olm_clear_utility=function(){return a.asm._olm_clear_utility.apply(null,arguments)};a._olm_create_account=function(){return a.asm._olm_create_account.apply(null,arguments)};a._olm_create_account_random_length=function(){return a.asm._olm_create_account_random_length.apply(null,arguments)};\na._olm_create_inbound_session=function(){return a.asm._olm_create_inbound_session.apply(null,arguments)};a._olm_create_inbound_session_from=function(){return a.asm._olm_create_inbound_session_from.apply(null,arguments)};a._olm_create_outbound_session=function(){return a.asm._olm_create_outbound_session.apply(null,arguments)};a._olm_create_outbound_session_random_length=function(){return a.asm._olm_create_outbound_session_random_length.apply(null,arguments)};\na._olm_decrypt=function(){return a.asm._olm_decrypt.apply(null,arguments)};a._olm_decrypt_max_plaintext_length=function(){return a.asm._olm_decrypt_max_plaintext_length.apply(null,arguments)};a._olm_ed25519_verify=function(){return a.asm._olm_ed25519_verify.apply(null,arguments)};a._olm_encrypt=function(){return a.asm._olm_encrypt.apply(null,arguments)};a._olm_encrypt_message_length=function(){return a.asm._olm_encrypt_message_length.apply(null,arguments)};\na._olm_encrypt_message_type=function(){return a.asm._olm_encrypt_message_type.apply(null,arguments)};a._olm_encrypt_random_length=function(){return a.asm._olm_encrypt_random_length.apply(null,arguments)};a._olm_error=function(){return a.asm._olm_error.apply(null,arguments)};a._olm_export_inbound_group_session=function(){return a.asm._olm_export_inbound_group_session.apply(null,arguments)};\na._olm_export_inbound_group_session_length=function(){return a.asm._olm_export_inbound_group_session_length.apply(null,arguments)};a._olm_get_library_version=function(){return a.asm._olm_get_library_version.apply(null,arguments)};a._olm_group_decrypt=function(){return a.asm._olm_group_decrypt.apply(null,arguments)};a._olm_group_decrypt_max_plaintext_length=function(){return a.asm._olm_group_decrypt_max_plaintext_length.apply(null,arguments)};\na._olm_group_encrypt=function(){return a.asm._olm_group_encrypt.apply(null,arguments)};a._olm_group_encrypt_message_length=function(){return a.asm._olm_group_encrypt_message_length.apply(null,arguments)};a._olm_import_inbound_group_session=function(){return a.asm._olm_import_inbound_group_session.apply(null,arguments)};a._olm_inbound_group_session=function(){return a.asm._olm_inbound_group_session.apply(null,arguments)};\na._olm_inbound_group_session_first_known_index=function(){return a.asm._olm_inbound_group_session_first_known_index.apply(null,arguments)};a._olm_inbound_group_session_id=function(){return a.asm._olm_inbound_group_session_id.apply(null,arguments)};a._olm_inbound_group_session_id_length=function(){return a.asm._olm_inbound_group_session_id_length.apply(null,arguments)};a._olm_inbound_group_session_is_verified=function(){return a.asm._olm_inbound_group_session_is_verified.apply(null,arguments)};\na._olm_inbound_group_session_last_error=function(){return a.asm._olm_inbound_group_session_last_error.apply(null,arguments)};a._olm_inbound_group_session_size=function(){return a.asm._olm_inbound_group_session_size.apply(null,arguments)};a._olm_init_inbound_group_session=function(){return a.asm._olm_init_inbound_group_session.apply(null,arguments)};a._olm_init_outbound_group_session=function(){return a.asm._olm_init_outbound_group_session.apply(null,arguments)};\na._olm_init_outbound_group_session_random_length=function(){return a.asm._olm_init_outbound_group_session_random_length.apply(null,arguments)};a._olm_matches_inbound_session=function(){return a.asm._olm_matches_inbound_session.apply(null,arguments)};a._olm_matches_inbound_session_from=function(){return a.asm._olm_matches_inbound_session_from.apply(null,arguments)};a._olm_outbound_group_session=function(){return a.asm._olm_outbound_group_session.apply(null,arguments)};\na._olm_outbound_group_session_id=function(){return a.asm._olm_outbound_group_session_id.apply(null,arguments)};a._olm_outbound_group_session_id_length=function(){return a.asm._olm_outbound_group_session_id_length.apply(null,arguments)};a._olm_outbound_group_session_key=function(){return a.asm._olm_outbound_group_session_key.apply(null,arguments)};a._olm_outbound_group_session_key_length=function(){return a.asm._olm_outbound_group_session_key_length.apply(null,arguments)};\na._olm_outbound_group_session_last_error=function(){return a.asm._olm_outbound_group_session_last_error.apply(null,arguments)};a._olm_outbound_group_session_message_index=function(){return a.asm._olm_outbound_group_session_message_index.apply(null,arguments)};a._olm_outbound_group_session_size=function(){return a.asm._olm_outbound_group_session_size.apply(null,arguments)};a._olm_pickle_account=function(){return a.asm._olm_pickle_account.apply(null,arguments)};\na._olm_pickle_account_length=function(){return a.asm._olm_pickle_account_length.apply(null,arguments)};a._olm_pickle_inbound_group_session=function(){return a.asm._olm_pickle_inbound_group_session.apply(null,arguments)};a._olm_pickle_inbound_group_session_length=function(){return a.asm._olm_pickle_inbound_group_session_length.apply(null,arguments)};a._olm_pickle_outbound_group_session=function(){return a.asm._olm_pickle_outbound_group_session.apply(null,arguments)};\na._olm_pickle_outbound_group_session_length=function(){return a.asm._olm_pickle_outbound_group_session_length.apply(null,arguments)};a._olm_pickle_pk_decryption=function(){return a.asm._olm_pickle_pk_decryption.apply(null,arguments)};a._olm_pickle_pk_decryption_length=function(){return a.asm._olm_pickle_pk_decryption_length.apply(null,arguments)};a._olm_pickle_session=function(){return a.asm._olm_pickle_session.apply(null,arguments)};\na._olm_pickle_session_length=function(){return a.asm._olm_pickle_session_length.apply(null,arguments)};a._olm_pk_ciphertext_length=function(){return a.asm._olm_pk_ciphertext_length.apply(null,arguments)};a._olm_pk_decrypt=function(){return a.asm._olm_pk_decrypt.apply(null,arguments)};a._olm_pk_decryption=function(){return a.asm._olm_pk_decryption.apply(null,arguments)};a._olm_pk_decryption_last_error=function(){return a.asm._olm_pk_decryption_last_error.apply(null,arguments)};\na._olm_pk_decryption_size=function(){return a.asm._olm_pk_decryption_size.apply(null,arguments)};a._olm_pk_encrypt=function(){return a.asm._olm_pk_encrypt.apply(null,arguments)};a._olm_pk_encrypt_random_length=function(){return a.asm._olm_pk_encrypt_random_length.apply(null,arguments)};a._olm_pk_encryption=function(){return a.asm._olm_pk_encryption.apply(null,arguments)};a._olm_pk_encryption_last_error=function(){return a.asm._olm_pk_encryption_last_error.apply(null,arguments)};\na._olm_pk_encryption_set_recipient_key=function(){return a.asm._olm_pk_encryption_set_recipient_key.apply(null,arguments)};a._olm_pk_encryption_size=function(){return a.asm._olm_pk_encryption_size.apply(null,arguments)};a._olm_pk_generate_key=function(){return a.asm._olm_pk_generate_key.apply(null,arguments)};a._olm_pk_generate_key_random_length=function(){return a.asm._olm_pk_generate_key_random_length.apply(null,arguments)};\na._olm_pk_get_private_key=function(){return a.asm._olm_pk_get_private_key.apply(null,arguments)};a._olm_pk_key_from_private=function(){return a.asm._olm_pk_key_from_private.apply(null,arguments)};a._olm_pk_key_length=function(){return a.asm._olm_pk_key_length.apply(null,arguments)};a._olm_pk_mac_length=function(){return a.asm._olm_pk_mac_length.apply(null,arguments)};a._olm_pk_max_plaintext_length=function(){return a.asm._olm_pk_max_plaintext_length.apply(null,arguments)};\na._olm_pk_private_key_length=function(){return a.asm._olm_pk_private_key_length.apply(null,arguments)};a._olm_remove_one_time_keys=function(){return a.asm._olm_remove_one_time_keys.apply(null,arguments)};a._olm_session=function(){return a.asm._olm_session.apply(null,arguments)};a._olm_session_has_received_message=function(){return a.asm._olm_session_has_received_message.apply(null,arguments)};a._olm_session_id=function(){return a.asm._olm_session_id.apply(null,arguments)};\na._olm_session_id_length=function(){return a.asm._olm_session_id_length.apply(null,arguments)};a._olm_session_last_error=function(){return a.asm._olm_session_last_error.apply(null,arguments)};a._olm_session_size=function(){return a.asm._olm_session_size.apply(null,arguments)};a._olm_sha256=function(){return a.asm._olm_sha256.apply(null,arguments)};a._olm_sha256_length=function(){return a.asm._olm_sha256_length.apply(null,arguments)};\na._olm_unpickle_account=function(){return a.asm._olm_unpickle_account.apply(null,arguments)};a._olm_unpickle_inbound_group_session=function(){return a.asm._olm_unpickle_inbound_group_session.apply(null,arguments)};a._olm_unpickle_outbound_group_session=function(){return a.asm._olm_unpickle_outbound_group_session.apply(null,arguments)};a._olm_unpickle_pk_decryption=function(){return a.asm._olm_unpickle_pk_decryption.apply(null,arguments)};\na._olm_unpickle_session=function(){return a.asm._olm_unpickle_session.apply(null,arguments)};a._olm_utility=function(){return a.asm._olm_utility.apply(null,arguments)};a._olm_utility_last_error=function(){return a.asm._olm_utility_last_error.apply(null,arguments)};a._olm_utility_size=function(){return a.asm._olm_utility_size.apply(null,arguments)};\nvar za=a.stackAlloc=function(){return a.asm.stackAlloc.apply(null,arguments)},Xa=a.stackRestore=function(){return a.asm.stackRestore.apply(null,arguments)},Ya=a.stackSave=function(){return a.asm.stackSave.apply(null,arguments)};a.asm=Wa;a.ALLOC_STACK=1;a.then=function(b){if(a.calledRun)b(a);else{var c=a.onRuntimeInitialized;a.onRuntimeInitialized=function(){c&&c();b(a)}}return a};Ua=function Za(){a.calledRun||$a();a.calledRun||(Ua=Za)};\nfunction $a(){function b(){if(!a.calledRun&&(a.calledRun=!0,!pa)){Qa||(Qa=!0,Ka(Ma));Ka(Na);if(a.onRuntimeInitialized)a.onRuntimeInitialized();if(a.postRun)for(\"function\"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;){var b=a.postRun.shift();Oa.unshift(b)}Ka(Oa)}}if(!(0<G)){if(a.preRun)for(\"function\"==typeof a.preRun&&(a.preRun=[a.preRun]);a.preRun.length;)Ra();Ka(La);0<G||a.calledRun||(a.setStatus?(a.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){a.setStatus(\"\")},\n1);b()},1)):b())}}a.run=$a;function y(b){if(a.onAbort)a.onAbort(b);void 0!==b?(ja(b),t(b),b=JSON.stringify(b)):b=\"\";pa=!0;throw\"abort(\"+b+\"). Build with -s ASSERTIONS=1 for more info.\";}a.abort=y;if(a.preInit)for(\"function\"==typeof a.preInit&&(a.preInit=[a.preInit]);0<a.preInit.length;)a.preInit.pop()();a.noExitRuntime=!0;$a();function J(){var b=a._olm_outbound_group_session_size();this.b=K(b);this.a=a._olm_outbound_group_session(this.b)}\nfunction L(b){return function(){var c=b.apply(this,arguments);if(c===g)throw c=E(a._olm_outbound_group_session_last_error(arguments[0])),Error(\"OLM.\"+c);return c}}J.prototype.free=function(){a._olm_clear_outbound_group_session(this.a);M(this.a)};J.prototype.pickle=N(function(b){b=I(b);var c=L(a._olm_pickle_outbound_group_session_length)(this.a),d=C(b),e=C(c+1);try{L(a._olm_pickle_outbound_group_session)(this.a,d,b.length,e,c)}finally{for(P(d,b.length),c=0;c<b.length;c++)b[c]=0}return E(e)});\nJ.prototype.unpickle=N(function(b,c){b=I(b);var d=C(b);c=I(c);var e=C(c);try{L(a._olm_unpickle_outbound_group_session)(this.a,d,b.length,e,c.length)}finally{for(P(d,b.length),d=0;d<b.length;d++)b[d]=0}});J.prototype.create=N(function(){var b=L(a._olm_init_outbound_group_session_random_length)(this.a),c=Q(b);L(a._olm_init_outbound_group_session)(this.a,c,b)});\nJ.prototype.encrypt=function(b){try{var c=Ca(b);var d=L(a._olm_group_encrypt_message_length)(this.a,c);var e=K(c+1);Ba(b,D,e,c+1);var f=K(d+1);L(a._olm_group_encrypt)(this.a,e,c,f,d);z(f+d);return F(f)}finally{void 0!==e&&(P(e,c+1),M(e)),void 0!==f&&M(f)}};J.prototype.session_id=N(function(){var b=L(a._olm_outbound_group_session_id_length)(this.a),c=C(b+1);L(a._olm_outbound_group_session_id)(this.a,c,b);return E(c)});\nJ.prototype.session_key=N(function(){var b=L(a._olm_outbound_group_session_key_length)(this.a),c=C(b+1);L(a._olm_outbound_group_session_key)(this.a,c,b);var d=E(c);P(c,b);return d});J.prototype.message_index=function(){return L(a._olm_outbound_group_session_message_index)(this.a)};olm_exports.OutboundGroupSession=J;function R(){var b=a._olm_inbound_group_session_size();this.b=K(b);this.a=a._olm_inbound_group_session(this.b)}\nfunction S(b){return function(){var c=b.apply(this,arguments);if(c===g)throw c=E(a._olm_inbound_group_session_last_error(arguments[0])),Error(\"OLM.\"+c);return c}}R.prototype.free=function(){a._olm_clear_inbound_group_session(this.a);M(this.a)};R.prototype.pickle=N(function(b){b=I(b);var c=S(a._olm_pickle_inbound_group_session_length)(this.a),d=C(b),e=C(c+1);try{S(a._olm_pickle_inbound_group_session)(this.a,d,b.length,e,c)}finally{for(P(d,b.length),c=0;c<b.length;c++)b[c]=0}return E(e)});\nR.prototype.unpickle=N(function(b,c){b=I(b);var d=C(b);c=I(c);var e=C(c);try{S(a._olm_unpickle_inbound_group_session)(this.a,d,b.length,e,c.length)}finally{for(P(d,b.length),d=0;d<b.length;d++)b[d]=0}});R.prototype.create=N(function(b){b=I(b);var c=C(b);try{S(a._olm_init_inbound_group_session)(this.a,c,b.length)}finally{for(P(c,b.length),c=0;c<b.length;c++)b[c]=0}});\nR.prototype.import_session=N(function(b){b=I(b);var c=C(b);try{S(a._olm_import_inbound_group_session)(this.a,c,b.length)}finally{for(P(c,b.length),c=0;c<b.length;c++)b[c]=0}});R.prototype.decrypt=N(function(b){try{var c=K(b.length);Sa(b,c);var d=S(a._olm_group_decrypt_max_plaintext_length)(this.a,c,b.length);Sa(b,c);var e=K(d+1);var f=C(4);var l=S(a._olm_group_decrypt)(this.a,c,b.length,e,d,f);z(e+l);return{plaintext:F(e),message_index:xa(f,\"i32\")}}finally{void 0!==c&&M(c),void 0!==e&&(P(e,l+1),M(e))}});\nR.prototype.session_id=N(function(){var b=S(a._olm_inbound_group_session_id_length)(this.a),c=C(b+1);S(a._olm_inbound_group_session_id)(this.a,c,b);return E(c)});R.prototype.first_known_index=N(function(){return S(a._olm_inbound_group_session_first_known_index)(this.a)});R.prototype.export_session=N(function(b){var c=S(a._olm_export_inbound_group_session_length)(this.a),d=C(c+1);L(a._olm_export_inbound_group_session)(this.a,d,c,b);b=E(d);P(d,c);return b});olm_exports.InboundGroupSession=R;\nfunction bb(){var b=a._olm_pk_encryption_size();this.b=K(b);this.a=a._olm_pk_encryption(this.b)}function T(b){return function(){var c=b.apply(this,arguments);if(c===g)throw c=E(a._olm_pk_encryption_last_error(arguments[0])),Error(\"OLM.\"+c);return c}}bb.prototype.free=function(){a._olm_clear_pk_encryption(this.a);M(this.a)};bb.prototype.set_recipient_key=N(function(b){b=I(b);var c=C(b);T(a._olm_pk_encryption_set_recipient_key)(this.a,c,b.length)});\nbb.prototype.encrypt=N(function(b){try{var c=Ca(b);var d=K(c+1);Ba(b,D,d,c+1);var e=T(a._olm_pk_encrypt_random_length)();var f=Q(e);var l=T(a._olm_pk_ciphertext_length)(this.a,c);var h=K(l+1);var q=T(a._olm_pk_mac_length)(this.a),H=C(q+1);z(H+q);var O=T(a._olm_pk_key_length)(),A=C(O+1);z(A+O);T(a._olm_pk_encrypt)(this.a,d,c,h,l,H,q,A,O,f,e);z(h+l);return{ciphertext:F(h),mac:E(H),ephemeral:E(A)}}finally{void 0!==f&&P(f,e),void 0!==d&&(P(d,c+1),M(d)),void 0!==h&&M(h)}});\nfunction U(){var b=a._olm_pk_decryption_size();this.b=K(b);this.a=a._olm_pk_decryption(this.b)}function V(b){return function(){var c=b.apply(this,arguments);if(c===g)throw c=E(a._olm_pk_decryption_last_error(arguments[0])),Error(\"OLM.\"+c);return c}}U.prototype.free=function(){a._olm_clear_pk_decryption(this.a);M(this.a)};\nU.prototype.init_with_private_key=N(function(b){var c=C(b.length);a.HEAPU8.set(b,c);var d=V(a._olm_pk_key_length)(),e=C(d+1);try{V(a._olm_pk_key_from_private)(this.a,e,d,c,b.length)}finally{P(c,b.length)}return E(e)});U.prototype.generate_key=N(function(){var b=V(a._olm_pk_private_key_length)(),c=Q(b),d=V(a._olm_pk_key_length)(),e=C(d+1);try{V(a._olm_pk_key_from_private)(this.a,e,d,c,b)}finally{P(c,b)}return E(e)});\nU.prototype.get_private_key=N(function(){var b=T(a._olm_pk_private_key_length)(),c=C(b);V(a._olm_pk_get_private_key)(this.a,c,b);var d=new Uint8Array(new Uint8Array(a.HEAPU8.buffer,c,b));P(c,b);return d});U.prototype.pickle=N(function(b){b=I(b);var c=V(a._olm_pickle_pk_decryption_length)(this.a),d=C(b),e=C(c+1);try{V(a._olm_pickle_pk_decryption)(this.a,d,b.length,e,c)}finally{for(P(d,b.length),c=0;c<b.length;c++)b[c]=0}return E(e)});\nU.prototype.unpickle=N(function(b,c){b=I(b);var d=C(b),e=I(c),f=C(e),l=V(a._olm_pk_key_length)();c=C(l+1);try{V(a._olm_unpickle_pk_decryption)(this.a,d,b.length,f,e.length,c,l)}finally{for(P(d,b.length),d=0;d<b.length;d++)b[d]=0}return E(c)});\nU.prototype.decrypt=N(function(b,c,d){try{var e=Ca(d);var f=K(e+1);Ba(d,D,f,e+1);var l=I(b),h=C(l),q=I(c),H=C(q);var O=V(a._olm_pk_max_plaintext_length)(this.a,e);var A=K(O+1);var Pa=V(a._olm_pk_decrypt)(this.a,h,l.length,H,q.length,f,e,A,O);z(A+Pa);return F(A)}finally{void 0!==A&&(P(A,Pa+1),M(A)),void 0!==f&&M(f)}});var K=a._malloc,M=a._free,g;function Q(b){var c=C(b);b=new Uint8Array(a.HEAPU8.buffer,c,b);aa(b);return c}\nfunction N(b){return function(){var c=Ya();try{return b.apply(this,arguments)}finally{Xa(c)}}}function P(b,c){for(;0<c--;)a.HEAP8[b++]=0}function W(){var b=a._olm_account_size();this.b=K(b);this.a=a._olm_account(this.b)}function X(b){return function(){var c=b.apply(this,arguments);if(c===g)throw c=E(a._olm_account_last_error(arguments[0])),Error(\"OLM.\"+c);return c}}W.prototype.free=function(){a._olm_clear_account(this.a);M(this.a)};\nW.prototype.create=N(function(){var b=X(a._olm_create_account_random_length)(this.a),c=Q(b);X(a._olm_create_account)(this.a,c,b)});W.prototype.identity_keys=N(function(){var b=X(a._olm_account_identity_keys_length)(this.a),c=C(b+1);X(a._olm_account_identity_keys)(this.a,c,b);return E(c)});W.prototype.sign=N(function(b){var c=X(a._olm_account_signature_length)(this.a);b=I(b);var d=C(b),e=C(c+1);try{X(a._olm_account_sign)(this.a,d,b.length,e,c)}finally{for(P(d,b.length),c=0;c<b.length;c++)b[c]=0}return E(e)});\nW.prototype.one_time_keys=N(function(){var b=X(a._olm_account_one_time_keys_length)(this.a),c=C(b+1);X(a._olm_account_one_time_keys)(this.a,c,b);return E(c)});W.prototype.mark_keys_as_published=N(function(){X(a._olm_account_mark_keys_as_published)(this.a)});W.prototype.max_number_of_one_time_keys=N(function(){return X(a._olm_account_max_number_of_one_time_keys)(this.a)});\nW.prototype.generate_one_time_keys=N(function(b){var c=X(a._olm_account_generate_one_time_keys_random_length)(this.a,b),d=Q(c);X(a._olm_account_generate_one_time_keys)(this.a,b,d,c)});W.prototype.remove_one_time_keys=N(function(b){X(a._olm_remove_one_time_keys)(this.a,b.a)});W.prototype.pickle=N(function(b){b=I(b);var c=X(a._olm_pickle_account_length)(this.a),d=C(b),e=C(c+1);try{X(a._olm_pickle_account)(this.a,d,b.length,e,c)}finally{for(P(d,b.length),c=0;c<b.length;c++)b[c]=0}return E(e)});\nW.prototype.unpickle=N(function(b,c){b=I(b);var d=C(b);c=I(c);var e=C(c);try{X(a._olm_unpickle_account)(this.a,d,b.length,e,c.length)}finally{for(P(d,b.length),d=0;d<b.length;d++)b[d]=0}});function Y(){var b=a._olm_session_size();this.b=K(b);this.a=a._olm_session(this.b)}function Z(b){return function(){var c=b.apply(this,arguments);if(c===g)throw c=E(a._olm_session_last_error(arguments[0])),Error(\"OLM.\"+c);return c}}Y.prototype.free=function(){a._olm_clear_session(this.a);M(this.a)};\nY.prototype.pickle=N(function(b){b=I(b);var c=Z(a._olm_pickle_session_length)(this.a),d=C(b),e=C(c+1);try{Z(a._olm_pickle_session)(this.a,d,b.length,e,c)}finally{for(P(d,b.length),c=0;c<b.length;c++)b[c]=0}return E(e)});Y.prototype.unpickle=N(function(b,c){b=I(b);var d=C(b);c=I(c);var e=C(c);try{Z(a._olm_unpickle_session)(this.a,d,b.length,e,c.length)}finally{for(P(d,b.length),d=0;d<b.length;d++)b[d]=0}});\nY.prototype.create_outbound=N(function(b,c,d){var e=Z(a._olm_create_outbound_session_random_length)(this.a),f=Q(e);c=I(c);d=I(d);var l=C(c),h=C(d);try{Z(a._olm_create_outbound_session)(this.a,b.a,l,c.length,h,d.length,f,e)}finally{P(f,e)}});Y.prototype.create_inbound=N(function(b,c){c=I(c);var d=C(c);try{Z(a._olm_create_inbound_session)(this.a,b.a,d,c.length)}finally{for(P(d,c.length),b=0;b<c.length;b++)c[b]=0}});\nY.prototype.create_inbound_from=N(function(b,c,d){c=I(c);var e=C(c);d=I(d);var f=C(d);try{Z(a._olm_create_inbound_session_from)(this.a,b.a,e,c.length,f,d.length)}finally{for(P(f,d.length),b=0;b<d.length;b++)d[b]=0}});Y.prototype.session_id=N(function(){var b=Z(a._olm_session_id_length)(this.a),c=C(b+1);Z(a._olm_session_id)(this.a,c,b);return E(c)});Y.prototype.has_received_message=function(){return Z(a._olm_session_has_received_message)(this.a)?!0:!1};\nY.prototype.matches_inbound=N(function(b){b=I(b);var c=C(b);return Z(a._olm_matches_inbound_session)(this.a,c,b.length)?!0:!1});Y.prototype.matches_inbound_from=N(function(b,c){b=I(b);var d=C(b);c=I(c);var e=C(c);return Z(a._olm_matches_inbound_session_from)(this.a,d,b.length,e,c.length)?!0:!1});\nY.prototype.encrypt=N(function(b){try{var c=Z(a._olm_encrypt_random_length)(this.a);var d=Z(a._olm_encrypt_message_type)(this.a);var e=Ca(b);var f=Z(a._olm_encrypt_message_length)(this.a,e);var l=Q(c);var h=K(e+1);Ba(b,D,h,e+1);var q=K(f+1);Z(a._olm_encrypt)(this.a,h,e,l,c,q,f);z(q+f);return{type:d,body:F(q)}}finally{void 0!==l&&P(l,c),void 0!==h&&(P(h,e+1),M(h)),void 0!==q&&M(q)}});\nY.prototype.decrypt=N(function(b,c){try{var d=K(c.length);Sa(c,d);var e=Z(a._olm_decrypt_max_plaintext_length)(this.a,b,d,c.length);Sa(c,d);var f=K(e+1);var l=Z(a._olm_decrypt)(this.a,b,d,c.length,f,e);z(f+l);return F(f)}finally{void 0!==d&&M(d),void 0!==f&&(P(f,e+1),M(f))}});function cb(){var b=a._olm_utility_size();this.b=K(b);this.a=a._olm_utility(this.b)}\nfunction db(b){return function(){var c=b.apply(this,arguments);if(c===g)throw c=E(a._olm_utility_last_error(arguments[0])),Error(\"OLM.\"+c);return c}}cb.prototype.free=function(){a._olm_clear_utility(this.a);M(this.a)};cb.prototype.sha256=N(function(b){var c=db(a._olm_sha256_length)(this.a);b=I(b);var d=C(b),e=C(c+1);try{db(a._olm_sha256)(this.a,d,b.length,e,c)}finally{for(P(d,b.length),c=0;c<b.length;c++)b[c]=0}return E(e)});\ncb.prototype.ed25519_verify=N(function(b,c,d){b=I(b);var e=C(b);c=I(c);var f=C(c);d=I(d);var l=C(d);try{db(a._olm_ed25519_verify)(this.a,e,b.length,f,c.length,l,d.length)}finally{for(P(f,c.length),b=0;b<c.length;b++)c[b]=0}});olm_exports.Account=W;olm_exports.Session=Y;olm_exports.Utility=cb;olm_exports.PkEncryption=bb;olm_exports.PkDecryption=U;olm_exports.get_library_version=N(function(){var b=C(3);a._olm_get_library_version(b,b+1,b+2);return[xa(b,\"i8\"),xa(b+1,\"i8\"),xa(b+2,\"i8\")]});\n\n\n return Module;\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = Module;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return Module; });\n else if (typeof exports === 'object')\n exports[\"Module\"] = Module;\n var olmInitPromise;\n\nolm_exports['init'] = function(opts) {\n if (olmInitPromise) return olmInitPromise;\n\n if (opts) OLM_OPTIONS = opts;\n\n olmInitPromise = new Promise(function(resolve, reject) {\n onInitSuccess = function() {\n resolve();\n };\n onInitFail = function(err) {\n reject(err);\n };\n Module();\n });\n return olmInitPromise;\n};\n\nif (typeof(window) !== 'undefined') {\n // We've been imported directly into a browser. Define the global 'Olm' object.\n // (we do this even if module.exports was defined, because it's useful to have\n // Olm in the global scope for browserified and webpacked apps.)\n window[\"Olm\"] = olm_exports;\n}\n\nif (typeof module === 'object') {\n // Emscripten sets the module exports to be its module\n // with wrapped c functions. Clobber it with our higher\n // level wrapper class.\n module.exports = olm_exports;\n}\n","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/*\n * THIS FILE IS AUTO-GENERATED\n * You can edit it you like, but your changes will be overwritten,\n * so you'd just be trying to swim upstream like a salmon.\n * You are not a salmon.\n */\n\nlet components = require('matrix-react-sdk/lib/component-index').components;\nif (!components) {\n throw new Error(\"'matrix-react-sdk/lib/component-index' didn't export components\");\n}\nimport structures$VectorHomePage from './components/structures/VectorHomePage';\nstructures$VectorHomePage && (components['structures.VectorHomePage'] = structures$VectorHomePage);\nimport views$login$VectorCustomServerDialog from './components/views/login/VectorCustomServerDialog';\nviews$login$VectorCustomServerDialog && (components['views.login.VectorCustomServerDialog'] = views$login$VectorCustomServerDialog);\nimport views$login$VectorLoginFooter from './components/views/login/VectorLoginFooter';\nviews$login$VectorLoginFooter && (components['views.login.VectorLoginFooter'] = views$login$VectorLoginFooter);\nimport views$login$VectorLoginHeader from './components/views/login/VectorLoginHeader';\nviews$login$VectorLoginHeader && (components['views.login.VectorLoginHeader'] = views$login$VectorLoginHeader);\nexport {components};\n","/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nimport HomePage from 'matrix-react-sdk/lib/components/structures/HomePage';\nimport sanitizeHtml from 'sanitize-html';\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\n\nclass VectorHomePage extends HomePage {\n static displayName = 'VectorHomePage';\n static replaces = 'HomePage';\n\n // we're overriding the base component here, for Riot-specific tweaks\n translate(s) {\n s = sanitizeHtml(_t(s));\n // ugly fix for https://github.com/vector-im/riot-web/issues/4243\n s = s.replace(/Riot\\.im/, '<a href=\"https://riot.im\" target=\"_blank\" rel=\"noopener\">Riot.im</a>');\n s = s.replace(/\\[matrix\\]/, '<a href=\"https://matrix.org\" target=\"_blank\" rel=\"noopener\"><img width=\"79\" height=\"34\" alt=\"[matrix]\" style=\"padding-left: 1px;vertical-align: middle\" src=\"home/images/matrix.svg\"/></a>');\n return s;\n }\n}\n\nmodule.exports = VectorHomePage;\n","var ElementType = require(\"domelementtype\");\n\nvar re_whitespace = /\\s+/g;\nvar NodePrototype = require(\"./lib/node\");\nvar ElementPrototype = require(\"./lib/element\");\n\nfunction DomHandler(callback, options, elementCB){\n\tif(typeof callback === \"object\"){\n\t\telementCB = options;\n\t\toptions = callback;\n\t\tcallback = null;\n\t} else if(typeof options === \"function\"){\n\t\telementCB = options;\n\t\toptions = defaultOpts;\n\t}\n\tthis._callback = callback;\n\tthis._options = options || defaultOpts;\n\tthis._elementCB = elementCB;\n\tthis.dom = [];\n\tthis._done = false;\n\tthis._tagStack = [];\n\tthis._parser = this._parser || null;\n}\n\n//default options\nvar defaultOpts = {\n\tnormalizeWhitespace: false, //Replace all whitespace with single spaces\n\twithStartIndices: false, //Add startIndex properties to nodes\n\twithEndIndices: false, //Add endIndex properties to nodes\n};\n\nDomHandler.prototype.onparserinit = function(parser){\n\tthis._parser = parser;\n};\n\n//Resets the handler back to starting state\nDomHandler.prototype.onreset = function(){\n\tDomHandler.call(this, this._callback, this._options, this._elementCB);\n};\n\n//Signals the handler that parsing is done\nDomHandler.prototype.onend = function(){\n\tif(this._done) return;\n\tthis._done = true;\n\tthis._parser = null;\n\tthis._handleCallback(null);\n};\n\nDomHandler.prototype._handleCallback =\nDomHandler.prototype.onerror = function(error){\n\tif(typeof this._callback === \"function\"){\n\t\tthis._callback(error, this.dom);\n\t} else {\n\t\tif(error) throw error;\n\t}\n};\n\nDomHandler.prototype.onclosetag = function(){\n\t//if(this._tagStack.pop().name !== name) this._handleCallback(Error(\"Tagname didn't match!\"));\n\t\n\tvar elem = this._tagStack.pop();\n\n\tif(this._options.withEndIndices && elem){\n\t\telem.endIndex = this._parser.endIndex;\n\t}\n\n\tif(this._elementCB) this._elementCB(elem);\n};\n\nDomHandler.prototype._createDomElement = function(properties){\n\tif (!this._options.withDomLvl1) return properties;\n\n\tvar element;\n\tif (properties.type === \"tag\") {\n\t\telement = Object.create(ElementPrototype);\n\t} else {\n\t\telement = Object.create(NodePrototype);\n\t}\n\n\tfor (var key in properties) {\n\t\tif (properties.hasOwnProperty(key)) {\n\t\t\telement[key] = properties[key];\n\t\t}\n\t}\n\n\treturn element;\n};\n\nDomHandler.prototype._addDomElement = function(element){\n\tvar parent = this._tagStack[this._tagStack.length - 1];\n\tvar siblings = parent ? parent.children : this.dom;\n\tvar previousSibling = siblings[siblings.length - 1];\n\n\telement.next = null;\n\n\tif(this._options.withStartIndices){\n\t\telement.startIndex = this._parser.startIndex;\n\t}\n\tif(this._options.withEndIndices){\n\t\telement.endIndex = this._parser.endIndex;\n\t}\n\n\tif(previousSibling){\n\t\telement.prev = previousSibling;\n\t\tpreviousSibling.next = element;\n\t} else {\n\t\telement.prev = null;\n\t}\n\n\tsiblings.push(element);\n\telement.parent = parent || null;\n};\n\nDomHandler.prototype.onopentag = function(name, attribs){\n\tvar properties = {\n\t\ttype: name === \"script\" ? ElementType.Script : name === \"style\" ? ElementType.Style : ElementType.Tag,\n\t\tname: name,\n\t\tattribs: attribs,\n\t\tchildren: []\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.ontext = function(data){\n\t//the ignoreWhitespace is officially dropped, but for now,\n\t//it's an alias for normalizeWhitespace\n\tvar normalize = this._options.normalizeWhitespace || this._options.ignoreWhitespace;\n\n\tvar lastTag;\n\n\tif(!this._tagStack.length && this.dom.length && (lastTag = this.dom[this.dom.length-1]).type === ElementType.Text){\n\t\tif(normalize){\n\t\t\tlastTag.data = (lastTag.data + data).replace(re_whitespace, \" \");\n\t\t} else {\n\t\t\tlastTag.data += data;\n\t\t}\n\t} else {\n\t\tif(\n\t\t\tthis._tagStack.length &&\n\t\t\t(lastTag = this._tagStack[this._tagStack.length - 1]) &&\n\t\t\t(lastTag = lastTag.children[lastTag.children.length - 1]) &&\n\t\t\tlastTag.type === ElementType.Text\n\t\t){\n\t\t\tif(normalize){\n\t\t\t\tlastTag.data = (lastTag.data + data).replace(re_whitespace, \" \");\n\t\t\t} else {\n\t\t\t\tlastTag.data += data;\n\t\t\t}\n\t\t} else {\n\t\t\tif(normalize){\n\t\t\t\tdata = data.replace(re_whitespace, \" \");\n\t\t\t}\n\n\t\t\tvar element = this._createDomElement({\n\t\t\t\tdata: data,\n\t\t\t\ttype: ElementType.Text\n\t\t\t});\n\n\t\t\tthis._addDomElement(element);\n\t\t}\n\t}\n};\n\nDomHandler.prototype.oncomment = function(data){\n\tvar lastTag = this._tagStack[this._tagStack.length - 1];\n\n\tif(lastTag && lastTag.type === ElementType.Comment){\n\t\tlastTag.data += data;\n\t\treturn;\n\t}\n\n\tvar properties = {\n\t\tdata: data,\n\t\ttype: ElementType.Comment\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.oncdatastart = function(){\n\tvar properties = {\n\t\tchildren: [{\n\t\t\tdata: \"\",\n\t\t\ttype: ElementType.Text\n\t\t}],\n\t\ttype: ElementType.CDATA\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.oncommentend = DomHandler.prototype.oncdataend = function(){\n\tthis._tagStack.pop();\n};\n\nDomHandler.prototype.onprocessinginstruction = function(name, data){\n\tvar element = this._createDomElement({\n\t\tname: name,\n\t\tdata: data,\n\t\ttype: ElementType.Directive\n\t});\n\n\tthis._addDomElement(element);\n};\n\nmodule.exports = DomHandler;\n","// DOM-Level-1-compliant structure\nvar NodePrototype = require('./node');\nvar ElementPrototype = module.exports = Object.create(NodePrototype);\n\nvar domLvl1 = {\n\ttagName: \"name\"\n};\n\nObject.keys(domLvl1).forEach(function(key) {\n\tvar shorthand = domLvl1[key];\n\tObject.defineProperty(ElementPrototype, key, {\n\t\tget: function() {\n\t\t\treturn this[shorthand] || null;\n\t\t},\n\t\tset: function(val) {\n\t\t\tthis[shorthand] = val;\n\t\t\treturn val;\n\t\t}\n\t});\n});\n","var index = require(\"./index.js\");\nvar DomHandler = index.DomHandler;\nvar DomUtils = index.DomUtils;\n\n//TODO: make this a streamable handler\nfunction FeedHandler(callback, options){\n\tthis.init(callback, options);\n}\n\nrequire(\"inherits\")(FeedHandler, DomHandler);\n\nFeedHandler.prototype.init = DomHandler;\n\nfunction getElements(what, where){\n\treturn DomUtils.getElementsByTagName(what, where, true);\n}\nfunction getOneElement(what, where){\n\treturn DomUtils.getElementsByTagName(what, where, true, 1)[0];\n}\nfunction fetch(what, where, recurse){\n\treturn DomUtils.getText(\n\t\tDomUtils.getElementsByTagName(what, where, recurse, 1)\n\t).trim();\n}\n\nfunction addConditionally(obj, prop, what, where, recurse){\n\tvar tmp = fetch(what, where, recurse);\n\tif(tmp) obj[prop] = tmp;\n}\n\nvar isValidFeed = function(value){\n\treturn value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n};\n\nFeedHandler.prototype.onend = function(){\n\tvar feed = {},\n\t feedRoot = getOneElement(isValidFeed, this.dom),\n\t tmp, childs;\n\n\tif(feedRoot){\n\t\tif(feedRoot.name === \"feed\"){\n\t\t\tchilds = feedRoot.children;\n\n\t\t\tfeed.type = \"atom\";\n\t\t\taddConditionally(feed, \"id\", \"id\", childs);\n\t\t\taddConditionally(feed, \"title\", \"title\", childs);\n\t\t\tif((tmp = getOneElement(\"link\", childs)) && (tmp = tmp.attribs) && (tmp = tmp.href)) feed.link = tmp;\n\t\t\taddConditionally(feed, \"description\", \"subtitle\", childs);\n\t\t\tif((tmp = fetch(\"updated\", childs))) feed.updated = new Date(tmp);\n\t\t\taddConditionally(feed, \"author\", \"email\", childs, true);\n\n\t\t\tfeed.items = getElements(\"entry\", childs).map(function(item){\n\t\t\t\tvar entry = {}, tmp;\n\n\t\t\t\titem = item.children;\n\n\t\t\t\taddConditionally(entry, \"id\", \"id\", item);\n\t\t\t\taddConditionally(entry, \"title\", \"title\", item);\n\t\t\t\tif((tmp = getOneElement(\"link\", item)) && (tmp = tmp.attribs) && (tmp = tmp.href)) entry.link = tmp;\n\t\t\t\tif((tmp = fetch(\"summary\", item) || fetch(\"content\", item))) entry.description = tmp;\n\t\t\t\tif((tmp = fetch(\"updated\", item))) entry.pubDate = new Date(tmp);\n\t\t\t\treturn entry;\n\t\t\t});\n\t\t} else {\n\t\t\tchilds = getOneElement(\"channel\", feedRoot.children).children;\n\n\t\t\tfeed.type = feedRoot.name.substr(0, 3);\n\t\t\tfeed.id = \"\";\n\t\t\taddConditionally(feed, \"title\", \"title\", childs);\n\t\t\taddConditionally(feed, \"link\", \"link\", childs);\n\t\t\taddConditionally(feed, \"description\", \"description\", childs);\n\t\t\tif((tmp = fetch(\"lastBuildDate\", childs))) feed.updated = new Date(tmp);\n\t\t\taddConditionally(feed, \"author\", \"managingEditor\", childs, true);\n\n\t\t\tfeed.items = getElements(\"item\", feedRoot.children).map(function(item){\n\t\t\t\tvar entry = {}, tmp;\n\n\t\t\t\titem = item.children;\n\n\t\t\t\taddConditionally(entry, \"id\", \"guid\", item);\n\t\t\t\taddConditionally(entry, \"title\", \"title\", item);\n\t\t\t\taddConditionally(entry, \"link\", \"link\", item);\n\t\t\t\taddConditionally(entry, \"description\", \"description\", item);\n\t\t\t\tif((tmp = fetch(\"pubDate\", item))) entry.pubDate = new Date(tmp);\n\t\t\t\treturn entry;\n\t\t\t});\n\t\t}\n\t}\n\tthis.dom = feed;\n\tDomHandler.prototype._handleCallback.call(\n\t\tthis, feedRoot ? null : Error(\"couldn't find root of feed\")\n\t);\n};\n\nmodule.exports = FeedHandler;\n","module.exports = Stream;\n\nvar Parser = require(\"./WritableStream.js\");\n\nfunction Stream(options){\n\tParser.call(this, new Cbs(this), options);\n}\n\nrequire(\"inherits\")(Stream, Parser);\n\nStream.prototype.readable = true;\n\nfunction Cbs(scope){\n\tthis.scope = scope;\n}\n\nvar EVENTS = require(\"../\").EVENTS;\n\nObject.keys(EVENTS).forEach(function(name){\n\tif(EVENTS[name] === 0){\n\t\tCbs.prototype[\"on\" + name] = function(){\n\t\t\tthis.scope.emit(name);\n\t\t};\n\t} else if(EVENTS[name] === 1){\n\t\tCbs.prototype[\"on\" + name] = function(a){\n\t\t\tthis.scope.emit(name, a);\n\t\t};\n\t} else if(EVENTS[name] === 2){\n\t\tCbs.prototype[\"on\" + name] = function(a, b){\n\t\t\tthis.scope.emit(name, a, b);\n\t\t};\n\t} else {\n\t\tthrow Error(\"wrong number of arguments!\");\n\t}\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","module.exports = ProxyHandler;\n\nfunction ProxyHandler(cbs){\n\tthis._cbs = cbs || {};\n}\n\nvar EVENTS = require(\"./\").EVENTS;\nObject.keys(EVENTS).forEach(function(name){\n\tif(EVENTS[name] === 0){\n\t\tname = \"on\" + name;\n\t\tProxyHandler.prototype[name] = function(){\n\t\t\tif(this._cbs[name]) this._cbs[name]();\n\t\t};\n\t} else if(EVENTS[name] === 1){\n\t\tname = \"on\" + name;\n\t\tProxyHandler.prototype[name] = function(a){\n\t\t\tif(this._cbs[name]) this._cbs[name](a);\n\t\t};\n\t} else if(EVENTS[name] === 2){\n\t\tname = \"on\" + name;\n\t\tProxyHandler.prototype[name] = function(a, b){\n\t\t\tif(this._cbs[name]) this._cbs[name](a, b);\n\t\t};\n\t} else {\n\t\tthrow Error(\"wrong number of arguments\");\n\t}\n});","var DomUtils = module.exports;\n\n[\n\trequire(\"./lib/stringify\"),\n\trequire(\"./lib/traversal\"),\n\trequire(\"./lib/manipulation\"),\n\trequire(\"./lib/querying\"),\n\trequire(\"./lib/legacy\"),\n\trequire(\"./lib/helpers\")\n].forEach(function(ext){\n\tObject.keys(ext).forEach(function(key){\n\t\tDomUtils[key] = ext[key].bind(DomUtils);\n\t});\n});\n","var ElementType = require(\"domelementtype\"),\n getOuterHTML = require(\"dom-serializer\"),\n isTag = ElementType.isTag;\n\nmodule.exports = {\n\tgetInnerHTML: getInnerHTML,\n\tgetOuterHTML: getOuterHTML,\n\tgetText: getText\n};\n\nfunction getInnerHTML(elem, opts){\n\treturn elem.children ? elem.children.map(function(elem){\n\t\treturn getOuterHTML(elem, opts);\n\t}).join(\"\") : \"\";\n}\n\nfunction getText(elem){\n\tif(Array.isArray(elem)) return elem.map(getText).join(\"\");\n\tif(isTag(elem)) return elem.name === \"br\" ? \"\\n\" : getText(elem.children);\n\tif(elem.type === ElementType.CDATA) return getText(elem.children);\n\tif(elem.type === ElementType.Text) return elem.data;\n\treturn \"\";\n}\n","/*\n Module dependencies\n*/\nvar ElementType = require('domelementtype');\nvar entities = require('entities');\n\n/*\n Boolean Attributes\n*/\nvar booleanAttributes = {\n __proto__: null,\n allowfullscreen: true,\n async: true,\n autofocus: true,\n autoplay: true,\n checked: true,\n controls: true,\n default: true,\n defer: true,\n disabled: true,\n hidden: true,\n ismap: true,\n loop: true,\n multiple: true,\n muted: true,\n open: true,\n readonly: true,\n required: true,\n reversed: true,\n scoped: true,\n seamless: true,\n selected: true,\n typemustmatch: true\n};\n\nvar unencodedElements = {\n __proto__: null,\n style: true,\n script: true,\n xmp: true,\n iframe: true,\n noembed: true,\n noframes: true,\n plaintext: true,\n noscript: true\n};\n\n/*\n Format attributes\n*/\nfunction formatAttrs(attributes, opts) {\n if (!attributes) return;\n\n var output = '',\n value;\n\n // Loop through the attributes\n for (var key in attributes) {\n value = attributes[key];\n if (output) {\n output += ' ';\n }\n\n if (!value && booleanAttributes[key]) {\n output += key;\n } else {\n output += key + '=\"' + (opts.decodeEntities ? entities.encodeXML(value) : value) + '\"';\n }\n }\n\n return output;\n}\n\n/*\n Self-enclosing tags (stolen from node-htmlparser)\n*/\nvar singleTag = {\n __proto__: null,\n area: true,\n base: true,\n basefont: true,\n br: true,\n col: true,\n command: true,\n embed: true,\n frame: true,\n hr: true,\n img: true,\n input: true,\n isindex: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true,\n};\n\n\nvar render = module.exports = function(dom, opts) {\n if (!Array.isArray(dom) && !dom.cheerio) dom = [dom];\n opts = opts || {};\n\n var output = '';\n\n for(var i = 0; i < dom.length; i++){\n var elem = dom[i];\n\n if (elem.type === 'root')\n output += render(elem.children, opts);\n else if (ElementType.isTag(elem))\n output += renderTag(elem, opts);\n else if (elem.type === ElementType.Directive)\n output += renderDirective(elem);\n else if (elem.type === ElementType.Comment)\n output += renderComment(elem);\n else if (elem.type === ElementType.CDATA)\n output += renderCdata(elem);\n else\n output += renderText(elem, opts);\n }\n\n return output;\n};\n\nfunction renderTag(elem, opts) {\n // Handle SVG\n if (elem.name === \"svg\") opts = {decodeEntities: opts.decodeEntities, xmlMode: true};\n\n var tag = '<' + elem.name,\n attribs = formatAttrs(elem.attribs, opts);\n\n if (attribs) {\n tag += ' ' + attribs;\n }\n\n if (\n opts.xmlMode\n && (!elem.children || elem.children.length === 0)\n ) {\n tag += '/>';\n } else {\n tag += '>';\n if (elem.children) {\n tag += render(elem.children, opts);\n }\n\n if (!singleTag[elem.name] || opts.xmlMode) {\n tag += '</' + elem.name + '>';\n }\n }\n\n return tag;\n}\n\nfunction renderDirective(elem) {\n return '<' + elem.data + '>';\n}\n\nfunction renderText(elem, opts) {\n var data = elem.data || '';\n\n // if entities weren't decoded, no need to encode them back\n if (opts.decodeEntities && !(elem.parent && elem.parent.name in unencodedElements)) {\n data = entities.encodeXML(data);\n }\n\n return data;\n}\n\nfunction renderCdata(elem) {\n return '<![CDATA[' + elem.children[0].data + ']]>';\n}\n\nfunction renderComment(elem) {\n return '<!--' + elem.data + '-->';\n}\n","//Types of elements found in the DOM\nmodule.exports = {\n\tText: \"text\", //Text\n\tDirective: \"directive\", //<? ... ?>\n\tComment: \"comment\", //<!-- ... -->\n\tScript: \"script\", //<script> tags\n\tStyle: \"style\", //<style> tags\n\tTag: \"tag\", //Any tag\n\tCDATA: \"cdata\", //<![CDATA[ ... ]]>\n\n\tisTag: function(elem){\n\t\treturn elem.type === \"tag\" || elem.type === \"script\" || elem.type === \"style\";\n\t}\n};","var inverseXML = getInverseObj(require(\"../maps/xml.json\")),\n xmlReplacer = getInverseReplacer(inverseXML);\n\nexports.XML = getInverse(inverseXML, xmlReplacer);\n\nvar inverseHTML = getInverseObj(require(\"../maps/entities.json\")),\n htmlReplacer = getInverseReplacer(inverseHTML);\n\nexports.HTML = getInverse(inverseHTML, htmlReplacer);\n\nfunction getInverseObj(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function(inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n}\n\nfunction getInverseReplacer(inverse) {\n var single = [],\n multiple = [];\n\n Object.keys(inverse).forEach(function(k) {\n if (k.length === 1) {\n single.push(\"\\\\\" + k);\n } else {\n multiple.push(k);\n }\n });\n\n //TODO add ranges\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n\n return new RegExp(multiple.join(\"|\"), \"g\");\n}\n\nvar re_nonASCII = /[^\\0-\\x7F]/g,\n re_astralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction singleCharReplacer(c) {\n return (\n \"&#x\" +\n c\n .charCodeAt(0)\n .toString(16)\n .toUpperCase() +\n \";\"\n );\n}\n\nfunction astralReplacer(c) {\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n var high = c.charCodeAt(0);\n var low = c.charCodeAt(1);\n var codePoint = (high - 0xd800) * 0x400 + low - 0xdc00 + 0x10000;\n return \"&#x\" + codePoint.toString(16).toUpperCase() + \";\";\n}\n\nfunction getInverse(inverse, re) {\n function func(name) {\n return inverse[name];\n }\n\n return function(data) {\n return data\n .replace(re, func)\n .replace(re_astralSymbols, astralReplacer)\n .replace(re_nonASCII, singleCharReplacer);\n };\n}\n\nvar re_xmlChars = getInverseReplacer(inverseXML);\n\nfunction escapeXML(data) {\n return data\n .replace(re_xmlChars, singleCharReplacer)\n .replace(re_astralSymbols, astralReplacer)\n .replace(re_nonASCII, singleCharReplacer);\n}\n\nexports.escape = escapeXML;\n","var entityMap = require(\"../maps/entities.json\"),\n legacyMap = require(\"../maps/legacy.json\"),\n xmlMap = require(\"../maps/xml.json\"),\n decodeCodePoint = require(\"./decode_codepoint.js\");\n\nvar decodeXMLStrict = getStrictDecoder(xmlMap),\n decodeHTMLStrict = getStrictDecoder(entityMap);\n\nfunction getStrictDecoder(map) {\n var keys = Object.keys(map).join(\"|\"),\n replace = getReplacer(map);\n\n keys += \"|#[xX][\\\\da-fA-F]+|#\\\\d+\";\n\n var re = new RegExp(\"&(?:\" + keys + \");\", \"g\");\n\n return function(str) {\n return String(str).replace(re, replace);\n };\n}\n\nvar decodeHTML = (function() {\n var legacy = Object.keys(legacyMap).sort(sorter);\n\n var keys = Object.keys(entityMap).sort(sorter);\n\n for (var i = 0, j = 0; i < keys.length; i++) {\n if (legacy[j] === keys[i]) {\n keys[i] += \";?\";\n j++;\n } else {\n keys[i] += \";\";\n }\n }\n\n var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\"),\n replace = getReplacer(entityMap);\n\n function replacer(str) {\n if (str.substr(-1) !== \";\") str += \";\";\n return replace(str);\n }\n\n //TODO consider creating a merged map\n return function(str) {\n return String(str).replace(re, replacer);\n };\n})();\n\nfunction sorter(a, b) {\n return a < b ? 1 : -1;\n}\n\nfunction getReplacer(map) {\n return function replace(str) {\n if (str.charAt(1) === \"#\") {\n if (str.charAt(2) === \"X\" || str.charAt(2) === \"x\") {\n return decodeCodePoint(parseInt(str.substr(3), 16));\n }\n return decodeCodePoint(parseInt(str.substr(2), 10));\n }\n return map[str.slice(1, -1)];\n };\n}\n\nmodule.exports = {\n XML: decodeXMLStrict,\n HTML: decodeHTML,\n HTMLStrict: decodeHTMLStrict\n};\n","var getChildren = exports.getChildren = function(elem){\n\treturn elem.children;\n};\n\nvar getParent = exports.getParent = function(elem){\n\treturn elem.parent;\n};\n\nexports.getSiblings = function(elem){\n\tvar parent = getParent(elem);\n\treturn parent ? getChildren(parent) : [elem];\n};\n\nexports.getAttributeValue = function(elem, name){\n\treturn elem.attribs && elem.attribs[name];\n};\n\nexports.hasAttrib = function(elem, name){\n\treturn !!elem.attribs && hasOwnProperty.call(elem.attribs, name);\n};\n\nexports.getName = function(elem){\n\treturn elem.name;\n};\n","exports.removeElement = function(elem){\n\tif(elem.prev) elem.prev.next = elem.next;\n\tif(elem.next) elem.next.prev = elem.prev;\n\n\tif(elem.parent){\n\t\tvar childs = elem.parent.children;\n\t\tchilds.splice(childs.lastIndexOf(elem), 1);\n\t}\n};\n\nexports.replaceElement = function(elem, replacement){\n\tvar prev = replacement.prev = elem.prev;\n\tif(prev){\n\t\tprev.next = replacement;\n\t}\n\n\tvar next = replacement.next = elem.next;\n\tif(next){\n\t\tnext.prev = replacement;\n\t}\n\n\tvar parent = replacement.parent = elem.parent;\n\tif(parent){\n\t\tvar childs = parent.children;\n\t\tchilds[childs.lastIndexOf(elem)] = replacement;\n\t}\n};\n\nexports.appendChild = function(elem, child){\n\tchild.parent = elem;\n\n\tif(elem.children.push(child) !== 1){\n\t\tvar sibling = elem.children[elem.children.length - 2];\n\t\tsibling.next = child;\n\t\tchild.prev = sibling;\n\t\tchild.next = null;\n\t}\n};\n\nexports.append = function(elem, next){\n\tvar parent = elem.parent,\n\t\tcurrNext = elem.next;\n\n\tnext.next = currNext;\n\tnext.prev = elem;\n\telem.next = next;\n\tnext.parent = parent;\n\n\tif(currNext){\n\t\tcurrNext.prev = next;\n\t\tif(parent){\n\t\t\tvar childs = parent.children;\n\t\t\tchilds.splice(childs.lastIndexOf(currNext), 0, next);\n\t\t}\n\t} else if(parent){\n\t\tparent.children.push(next);\n\t}\n};\n\nexports.prepend = function(elem, prev){\n\tvar parent = elem.parent;\n\tif(parent){\n\t\tvar childs = parent.children;\n\t\tchilds.splice(childs.lastIndexOf(elem), 0, prev);\n\t}\n\n\tif(elem.prev){\n\t\telem.prev.next = prev;\n\t}\n\t\n\tprev.parent = parent;\n\tprev.prev = elem.prev;\n\tprev.next = elem;\n\telem.prev = prev;\n};\n\n\n","var isTag = require(\"domelementtype\").isTag;\n\nmodule.exports = {\n\tfilter: filter,\n\tfind: find,\n\tfindOneChild: findOneChild,\n\tfindOne: findOne,\n\texistsOne: existsOne,\n\tfindAll: findAll\n};\n\nfunction filter(test, element, recurse, limit){\n\tif(!Array.isArray(element)) element = [element];\n\n\tif(typeof limit !== \"number\" || !isFinite(limit)){\n\t\tlimit = Infinity;\n\t}\n\treturn find(test, element, recurse !== false, limit);\n}\n\nfunction find(test, elems, recurse, limit){\n\tvar result = [], childs;\n\n\tfor(var i = 0, j = elems.length; i < j; i++){\n\t\tif(test(elems[i])){\n\t\t\tresult.push(elems[i]);\n\t\t\tif(--limit <= 0) break;\n\t\t}\n\n\t\tchilds = elems[i].children;\n\t\tif(recurse && childs && childs.length > 0){\n\t\t\tchilds = find(test, childs, recurse, limit);\n\t\t\tresult = result.concat(childs);\n\t\t\tlimit -= childs.length;\n\t\t\tif(limit <= 0) break;\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction findOneChild(test, elems){\n\tfor(var i = 0, l = elems.length; i < l; i++){\n\t\tif(test(elems[i])) return elems[i];\n\t}\n\n\treturn null;\n}\n\nfunction findOne(test, elems){\n\tvar elem = null;\n\n\tfor(var i = 0, l = elems.length; i < l && !elem; i++){\n\t\tif(!isTag(elems[i])){\n\t\t\tcontinue;\n\t\t} else if(test(elems[i])){\n\t\t\telem = elems[i];\n\t\t} else if(elems[i].children.length > 0){\n\t\t\telem = findOne(test, elems[i].children);\n\t\t}\n\t}\n\n\treturn elem;\n}\n\nfunction existsOne(test, elems){\n\tfor(var i = 0, l = elems.length; i < l; i++){\n\t\tif(\n\t\t\tisTag(elems[i]) && (\n\t\t\t\ttest(elems[i]) || (\n\t\t\t\t\telems[i].children.length > 0 &&\n\t\t\t\t\texistsOne(test, elems[i].children)\n\t\t\t\t)\n\t\t\t)\n\t\t){\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction findAll(test, rootElems){\n\tvar result = [];\n\tvar stack = rootElems.slice();\n\twhile(stack.length){\n\t\tvar elem = stack.shift();\n\t\tif(!isTag(elem)) continue;\n\t\tif (elem.children && elem.children.length > 0) {\n\t\t\tstack.unshift.apply(stack, elem.children);\n\t\t}\n\t\tif(test(elem)) result.push(elem);\n\t}\n\treturn result;\n}\n","var ElementType = require(\"domelementtype\");\nvar isTag = exports.isTag = ElementType.isTag;\n\nexports.testElement = function(options, element){\n\tfor(var key in options){\n\t\tif(!options.hasOwnProperty(key));\n\t\telse if(key === \"tag_name\"){\n\t\t\tif(!isTag(element) || !options.tag_name(element.name)){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if(key === \"tag_type\"){\n\t\t\tif(!options.tag_type(element.type)) return false;\n\t\t} else if(key === \"tag_contains\"){\n\t\t\tif(isTag(element) || !options.tag_contains(element.data)){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if(!element.attribs || !options[key](element.attribs[key])){\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n};\n\nvar Checks = {\n\ttag_name: function(name){\n\t\tif(typeof name === \"function\"){\n\t\t\treturn function(elem){ return isTag(elem) && name(elem.name); };\n\t\t} else if(name === \"*\"){\n\t\t\treturn isTag;\n\t\t} else {\n\t\t\treturn function(elem){ return isTag(elem) && elem.name === name; };\n\t\t}\n\t},\n\ttag_type: function(type){\n\t\tif(typeof type === \"function\"){\n\t\t\treturn function(elem){ return type(elem.type); };\n\t\t} else {\n\t\t\treturn function(elem){ return elem.type === type; };\n\t\t}\n\t},\n\ttag_contains: function(data){\n\t\tif(typeof data === \"function\"){\n\t\t\treturn function(elem){ return !isTag(elem) && data(elem.data); };\n\t\t} else {\n\t\t\treturn function(elem){ return !isTag(elem) && elem.data === data; };\n\t\t}\n\t}\n};\n\nfunction getAttribCheck(attrib, value){\n\tif(typeof value === \"function\"){\n\t\treturn function(elem){ return elem.attribs && value(elem.attribs[attrib]); };\n\t} else {\n\t\treturn function(elem){ return elem.attribs && elem.attribs[attrib] === value; };\n\t}\n}\n\nfunction combineFuncs(a, b){\n\treturn function(elem){\n\t\treturn a(elem) || b(elem);\n\t};\n}\n\nexports.getElements = function(options, element, recurse, limit){\n\tvar funcs = Object.keys(options).map(function(key){\n\t\tvar value = options[key];\n\t\treturn key in Checks ? Checks[key](value) : getAttribCheck(key, value);\n\t});\n\n\treturn funcs.length === 0 ? [] : this.filter(\n\t\tfuncs.reduce(combineFuncs),\n\t\telement, recurse, limit\n\t);\n};\n\nexports.getElementById = function(id, element, recurse){\n\tif(!Array.isArray(element)) element = [element];\n\treturn this.findOne(getAttribCheck(\"id\", id), element, recurse !== false);\n};\n\nexports.getElementsByTagName = function(name, element, recurse, limit){\n\treturn this.filter(Checks.tag_name(name), element, recurse, limit);\n};\n\nexports.getElementsByTagType = function(type, element, recurse, limit){\n\treturn this.filter(Checks.tag_type(type), element, recurse, limit);\n};\n","// removeSubsets\n// Given an array of nodes, remove any member that is contained by another.\nexports.removeSubsets = function(nodes) {\n\tvar idx = nodes.length, node, ancestor, replace;\n\n\t// Check if each node (or one of its ancestors) is already contained in the\n\t// array.\n\twhile (--idx > -1) {\n\t\tnode = ancestor = nodes[idx];\n\n\t\t// Temporarily remove the node under consideration\n\t\tnodes[idx] = null;\n\t\treplace = true;\n\n\t\twhile (ancestor) {\n\t\t\tif (nodes.indexOf(ancestor) > -1) {\n\t\t\t\treplace = false;\n\t\t\t\tnodes.splice(idx, 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tancestor = ancestor.parent;\n\t\t}\n\n\t\t// If the node has been found to be unique, re-insert it.\n\t\tif (replace) {\n\t\t\tnodes[idx] = node;\n\t\t}\n\t}\n\n\treturn nodes;\n};\n\n// Source: http://dom.spec.whatwg.org/#dom-node-comparedocumentposition\nvar POSITION = {\n\tDISCONNECTED: 1,\n\tPRECEDING: 2,\n\tFOLLOWING: 4,\n\tCONTAINS: 8,\n\tCONTAINED_BY: 16\n};\n\n// Compare the position of one node against another node in any other document.\n// The return value is a bitmask with the following values:\n//\n// document order:\n// > There is an ordering, document order, defined on all the nodes in the\n// > document corresponding to the order in which the first character of the\n// > XML representation of each node occurs in the XML representation of the\n// > document after expansion of general entities. Thus, the document element\n// > node will be the first node. Element nodes occur before their children.\n// > Thus, document order orders element nodes in order of the occurrence of\n// > their start-tag in the XML (after expansion of entities). The attribute\n// > nodes of an element occur after the element and before its children. The\n// > relative order of attribute nodes is implementation-dependent./\n// Source:\n// http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n//\n// @argument {Node} nodaA The first node to use in the comparison\n// @argument {Node} nodeB The second node to use in the comparison\n//\n// @return {Number} A bitmask describing the input nodes' relative position.\n// See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n// a description of these values.\nvar comparePos = exports.compareDocumentPosition = function(nodeA, nodeB) {\n\tvar aParents = [];\n\tvar bParents = [];\n\tvar current, sharedParent, siblings, aSibling, bSibling, idx;\n\n\tif (nodeA === nodeB) {\n\t\treturn 0;\n\t}\n\n\tcurrent = nodeA;\n\twhile (current) {\n\t\taParents.unshift(current);\n\t\tcurrent = current.parent;\n\t}\n\tcurrent = nodeB;\n\twhile (current) {\n\t\tbParents.unshift(current);\n\t\tcurrent = current.parent;\n\t}\n\n\tidx = 0;\n\twhile (aParents[idx] === bParents[idx]) {\n\t\tidx++;\n\t}\n\n\tif (idx === 0) {\n\t\treturn POSITION.DISCONNECTED;\n\t}\n\n\tsharedParent = aParents[idx - 1];\n\tsiblings = sharedParent.children;\n\taSibling = aParents[idx];\n\tbSibling = bParents[idx];\n\n\tif (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n\t\tif (sharedParent === nodeB) {\n\t\t\treturn POSITION.FOLLOWING | POSITION.CONTAINED_BY;\n\t\t}\n\t\treturn POSITION.FOLLOWING;\n\t} else {\n\t\tif (sharedParent === nodeA) {\n\t\t\treturn POSITION.PRECEDING | POSITION.CONTAINS;\n\t\t}\n\t\treturn POSITION.PRECEDING;\n\t}\n};\n\n// Sort an array of nodes based on their relative position in the document and\n// remove any duplicate nodes. If the array contains nodes that do not belong\n// to the same document, sort order is unspecified.\n//\n// @argument {Array} nodes Array of DOM nodes\n//\n// @returns {Array} collection of unique nodes, sorted in document order\nexports.uniqueSort = function(nodes) {\n\tvar idx = nodes.length, node, position;\n\n\tnodes = nodes.slice();\n\n\twhile (--idx > -1) {\n\t\tnode = nodes[idx];\n\t\tposition = nodes.indexOf(node);\n\t\tif (position > -1 && position < idx) {\n\t\t\tnodes.splice(idx, 1);\n\t\t}\n\t}\n\tnodes.sort(function(a, b) {\n\t\tvar relative = comparePos(a, b);\n\t\tif (relative & POSITION.PRECEDING) {\n\t\t\treturn -1;\n\t\t} else if (relative & POSITION.FOLLOWING) {\n\t\t\treturn 1;\n\t\t}\n\t\treturn 0;\n\t});\n\n\treturn nodes;\n};\n","module.exports = CollectingHandler;\n\nfunction CollectingHandler(cbs){\n\tthis._cbs = cbs || {};\n\tthis.events = [];\n}\n\nvar EVENTS = require(\"./\").EVENTS;\nObject.keys(EVENTS).forEach(function(name){\n\tif(EVENTS[name] === 0){\n\t\tname = \"on\" + name;\n\t\tCollectingHandler.prototype[name] = function(){\n\t\t\tthis.events.push([name]);\n\t\t\tif(this._cbs[name]) this._cbs[name]();\n\t\t};\n\t} else if(EVENTS[name] === 1){\n\t\tname = \"on\" + name;\n\t\tCollectingHandler.prototype[name] = function(a){\n\t\t\tthis.events.push([name, a]);\n\t\t\tif(this._cbs[name]) this._cbs[name](a);\n\t\t};\n\t} else if(EVENTS[name] === 2){\n\t\tname = \"on\" + name;\n\t\tCollectingHandler.prototype[name] = function(a, b){\n\t\t\tthis.events.push([name, a, b]);\n\t\t\tif(this._cbs[name]) this._cbs[name](a, b);\n\t\t};\n\t} else {\n\t\tthrow Error(\"wrong number of arguments\");\n\t}\n});\n\nCollectingHandler.prototype.onreset = function(){\n\tthis.events = [];\n\tif(this._cbs.onreset) this._cbs.onreset();\n};\n\nCollectingHandler.prototype.restart = function(){\n\tif(this._cbs.onreset) this._cbs.onreset();\n\n\tfor(var i = 0, len = this.events.length; i < len; i++){\n\t\tif(this._cbs[this.events[i][0]]){\n\n\t\t\tvar num = this.events[i].length;\n\n\t\t\tif(num === 1){\n\t\t\t\tthis._cbs[this.events[i][0]]();\n\t\t\t} else if(num === 2){\n\t\t\t\tthis._cbs[this.events[i][0]](this.events[i][1]);\n\t\t\t} else {\n\t\t\t\tthis._cbs[this.events[i][0]](this.events[i][1], this.events[i][2]);\n\t\t\t}\n\t\t}\n\t}\n};\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n}\n\nmodule.exports = escapeRegExp;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n return key == '__proto__'\n ? undefined\n : object[key];\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n if (isObject(srcValue)) {\n stack || (stack = new Stack);\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = mergeWith;\n","/**\n * lodash 4.0.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) ||\n objectToString.call(value) != objectTag || isHostObject(value)) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nmodule.exports = isPlainObject;\n","'use strict';\nvar numberIsNan = require('number-is-nan');\nvar arrayUniq = require('array-uniq');\nvar reInt = /^\\d+$/;\n\nfunction deepUnique(arr) {\n\treturn arr.sort().filter(function (el, i) {\n\t\treturn JSON.stringify(el) !== JSON.stringify(arr[i - 1]);\n\t});\n}\n\nexports.parse = function (str) {\n\treturn deepUnique(str.split(',').map(function (el) {\n\t\tvar ret = {};\n\n\t\tel.trim().split(/\\s+/).forEach(function (el, i) {\n\t\t\tif (i === 0) {\n\t\t\t\treturn ret.url = el;\n\t\t\t}\n\n\t\t\tvar value = el.substring(0, el.length - 1);\n\t\t\tvar postfix = el[el.length - 1];\n\t\t\tvar intVal = parseInt(value, 10);\n\t\t\tvar floatVal = parseFloat(value);\n\n\t\t\tif (postfix === 'w' && reInt.test(value)) {\n\t\t\t\tret.width = intVal;\n\t\t\t} else if (postfix === 'h' && reInt.test(value)) {\n\t\t\t\tret.height = intVal;\n\t\t\t} else if (postfix === 'x' && !numberIsNan(floatVal)) {\n\t\t\t\tret.density = floatVal;\n\t\t\t} else {\n\t\t\t\tthrow new Error('Invalid srcset descriptor: ' + el + '.');\n\t\t\t}\n\t\t});\n\n\t\treturn ret;\n\t}));\n}\n\nexports.stringify = function (arr) {\n\treturn arrayUniq(arr.map(function (el) {\n\t\tif (!el.url) {\n\t\t\tthrow new Error('URL is required.');\n\t\t}\n\n\t\tvar ret = [el.url];\n\n\t\tif (el.width) {\n\t\t\tret.push(el.width + 'w');\n\t\t}\n\n\t\tif (el.height) {\n\t\t\tret.push(el.height + 'h');\n\t\t}\n\n\t\tif (el.density) {\n\t\t\tret.push(el.density + 'x');\n\t\t}\n\n\t\treturn ret.join(' ');\n\t})).join(', ');\n}\n","'use strict';\nmodule.exports = Number.isNaN || function (x) {\n\treturn x !== x;\n};\n","'use strict';\n\n// there's 3 implementations written in increasing order of efficiency\n\n// 1 - no Set type is defined\nfunction uniqNoSet(arr) {\n\tvar ret = [];\n\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tif (ret.indexOf(arr[i]) === -1) {\n\t\t\tret.push(arr[i]);\n\t\t}\n\t}\n\n\treturn ret;\n}\n\n// 2 - a simple Set type is defined\nfunction uniqSet(arr) {\n\tvar seen = new Set();\n\treturn arr.filter(function (el) {\n\t\tif (!seen.has(el)) {\n\t\t\tseen.add(el);\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t});\n}\n\n// 3 - a standard Set type is defined and it has a forEach method\nfunction uniqSetWithForEach(arr) {\n\tvar ret = [];\n\n\t(new Set(arr)).forEach(function (el) {\n\t\tret.push(el);\n\t});\n\n\treturn ret;\n}\n\n// V8 currently has a broken implementation\n// https://github.com/joyent/node/issues/8449\nfunction doesForEachActuallyWork() {\n\tvar ret = false;\n\n\t(new Set([true])).forEach(function (el) {\n\t\tret = el;\n\t});\n\n\treturn ret === true;\n}\n\nif ('Set' in global) {\n\tif (typeof Set.prototype.forEach === 'function' && doesForEachActuallyWork()) {\n\t\tmodule.exports = uniqSetWithForEach;\n\t} else {\n\t\tmodule.exports = uniqSet;\n\t}\n} else {\n\tmodule.exports = uniqNoSet;\n}\n","'use strict';\n\nexports.__esModule = true;\n\nvar _declaration = require('./declaration');\n\nvar _declaration2 = _interopRequireDefault(_declaration);\n\nvar _processor = require('./processor');\n\nvar _processor2 = _interopRequireDefault(_processor);\n\nvar _stringify = require('./stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _comment = require('./comment');\n\nvar _comment2 = _interopRequireDefault(_comment);\n\nvar _atRule = require('./at-rule');\n\nvar _atRule2 = _interopRequireDefault(_atRule);\n\nvar _vendor = require('./vendor');\n\nvar _vendor2 = _interopRequireDefault(_vendor);\n\nvar _parse = require('./parse');\n\nvar _parse2 = _interopRequireDefault(_parse);\n\nvar _list = require('./list');\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _rule = require('./rule');\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nvar _root = require('./root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Create a new {@link Processor} instance that will apply `plugins`\n * as CSS processors.\n *\n * @param {Array.<Plugin|pluginFunction>|Processor} plugins - PostCSS\n * plugins. See {@link Processor#use} for plugin format.\n *\n * @return {Processor} Processor to process multiple CSS\n *\n * @example\n * import postcss from 'postcss';\n *\n * postcss(plugins).process(css, { from, to }).then(result => {\n * console.log(result.css);\n * });\n *\n * @namespace postcss\n */\nfunction postcss() {\n for (var _len = arguments.length, plugins = Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new _processor2.default(plugins);\n}\n\n/**\n * Creates a PostCSS plugin with a standard API.\n *\n * The newly-wrapped function will provide both the name and PostCSS\n * version of the plugin.\n *\n * ```js\n * const processor = postcss([replace]);\n * processor.plugins[0].postcssPlugin //=> 'postcss-replace'\n * processor.plugins[0].postcssVersion //=> '5.1.0'\n * ```\n *\n * The plugin function receives 2 arguments: {@link Root}\n * and {@link Result} instance. The function should mutate the provided\n * `Root` node. Alternatively, you can create a new `Root` node\n * and override the `result.root` property.\n *\n * ```js\n * const cleaner = postcss.plugin('postcss-cleaner', () => {\n * return (root, result) => {\n * result.root = postcss.root();\n * };\n * });\n * ```\n *\n * As a convenience, plugins also expose a `process` method so that you can use\n * them as standalone tools.\n *\n * ```js\n * cleaner.process(css, processOpts, pluginOpts);\n * // This is equivalent to:\n * postcss([ cleaner(pluginOpts) ]).process(css, processOpts);\n * ```\n *\n * Asynchronous plugins should return a `Promise` instance.\n *\n * ```js\n * postcss.plugin('postcss-import', () => {\n * return (root, result) => {\n * return new Promise( (resolve, reject) => {\n * fs.readFile('base.css', (base) => {\n * root.prepend(base);\n * resolve();\n * });\n * });\n * };\n * });\n * ```\n *\n * Add warnings using the {@link Node#warn} method.\n * Send data to other plugins using the {@link Result#messages} array.\n *\n * ```js\n * postcss.plugin('postcss-caniuse-test', () => {\n * return (root, result) => {\n * root.walkDecls(decl => {\n * if ( !caniuse.support(decl.prop) ) {\n * decl.warn(result, 'Some browsers do not support ' + decl.prop);\n * }\n * });\n * };\n * });\n * ```\n *\n * @param {string} name - PostCSS plugin name. Same as in `name`\n * property in `package.json`. It will be saved\n * in `plugin.postcssPlugin` property.\n * @param {function} initializer - will receive plugin options\n * and should return {@link pluginFunction}\n *\n * @return {Plugin} PostCSS plugin\n */\npostcss.plugin = function plugin(name, initializer) {\n var creator = function creator() {\n var transformer = initializer.apply(undefined, arguments);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new _processor2.default().version;\n return transformer;\n };\n\n var cache = void 0;\n Object.defineProperty(creator, 'postcss', {\n get: function get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n\n creator.process = function (css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts);\n };\n\n return creator;\n};\n\n/**\n * Default function to convert a node tree into a CSS string.\n *\n * @param {Node} node - start node for stringifing. Usually {@link Root}.\n * @param {builder} builder - function to concatenate CSS from node’s parts\n * or generate string and source map\n *\n * @return {void}\n *\n * @function\n */\npostcss.stringify = _stringify2.default;\n\n/**\n * Parses source css and returns a new {@link Root} node,\n * which contains the source CSS nodes.\n *\n * @param {string|toString} css - string with input CSS or any object\n * with toString() method, like a Buffer\n * @param {processOptions} [opts] - options with only `from` and `map` keys\n *\n * @return {Root} PostCSS AST\n *\n * @example\n * // Simple CSS concatenation with source map support\n * const root1 = postcss.parse(css1, { from: file1 });\n * const root2 = postcss.parse(css2, { from: file2 });\n * root1.append(root2).toResult().css;\n *\n * @function\n */\npostcss.parse = _parse2.default;\n\n/**\n * @member {vendor} - Contains the {@link vendor} module.\n *\n * @example\n * postcss.vendor.unprefixed('-moz-tab') //=> ['tab']\n */\npostcss.vendor = _vendor2.default;\n\n/**\n * @member {list} - Contains the {@link list} module.\n *\n * @example\n * postcss.list.space('5px calc(10% + 5px)') //=> ['5px', 'calc(10% + 5px)']\n */\npostcss.list = _list2.default;\n\n/**\n * Creates a new {@link Comment} node.\n *\n * @param {object} [defaults] - properties for the new node.\n *\n * @return {Comment} new Comment node\n *\n * @example\n * postcss.comment({ text: 'test' })\n */\npostcss.comment = function (defaults) {\n return new _comment2.default(defaults);\n};\n\n/**\n * Creates a new {@link AtRule} node.\n *\n * @param {object} [defaults] - properties for the new node.\n *\n * @return {AtRule} new AtRule node\n *\n * @example\n * postcss.atRule({ name: 'charset' }).toString() //=> \"@charset\"\n */\npostcss.atRule = function (defaults) {\n return new _atRule2.default(defaults);\n};\n\n/**\n * Creates a new {@link Declaration} node.\n *\n * @param {object} [defaults] - properties for the new node.\n *\n * @return {Declaration} new Declaration node\n *\n * @example\n * postcss.decl({ prop: 'color', value: 'red' }).toString() //=> \"color: red\"\n */\npostcss.decl = function (defaults) {\n return new _declaration2.default(defaults);\n};\n\n/**\n * Creates a new {@link Rule} node.\n *\n * @param {object} [defaults] - properties for the new node.\n *\n * @return {Rule} new Rule node\n *\n * @example\n * postcss.rule({ selector: 'a' }).toString() //=> \"a {\\n}\"\n */\npostcss.rule = function (defaults) {\n return new _rule2.default(defaults);\n};\n\n/**\n * Creates a new {@link Root} node.\n *\n * @param {object} [defaults] - properties for the new node.\n *\n * @return {Root} new Root node\n *\n * @example\n * postcss.root({ after: '\\n' }).toString() //=> \"\\n\"\n */\npostcss.root = function (defaults) {\n return new _root2.default(defaults);\n};\n\nexports.default = postcss;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBvc3Rjc3MuZXM2Il0sIm5hbWVzIjpbInBvc3Rjc3MiLCJwbHVnaW5zIiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwiUHJvY2Vzc29yIiwicGx1Z2luIiwibmFtZSIsImluaXRpYWxpemVyIiwiY3JlYXRvciIsInRyYW5zZm9ybWVyIiwicG9zdGNzc1BsdWdpbiIsInBvc3Rjc3NWZXJzaW9uIiwidmVyc2lvbiIsImNhY2hlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJwcm9jZXNzIiwiY3NzIiwicHJvY2Vzc09wdHMiLCJwbHVnaW5PcHRzIiwic3RyaW5naWZ5IiwicGFyc2UiLCJ2ZW5kb3IiLCJsaXN0IiwiY29tbWVudCIsIkNvbW1lbnQiLCJkZWZhdWx0cyIsImF0UnVsZSIsIkF0UnVsZSIsImRlY2wiLCJEZWNsYXJhdGlvbiIsInJ1bGUiLCJSdWxlIiwicm9vdCIsIlJvb3QiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQSxTQUFTQSxPQUFULEdBQTZCO0FBQUEsb0NBQVRDLE9BQVM7QUFBVEEsV0FBUztBQUFBOztBQUN6QixNQUFLQSxRQUFRQyxNQUFSLEtBQW1CLENBQW5CLElBQXdCQyxNQUFNQyxPQUFOLENBQWNILFFBQVEsQ0FBUixDQUFkLENBQTdCLEVBQXlEO0FBQ3JEQSxjQUFVQSxRQUFRLENBQVIsQ0FBVjtBQUNIO0FBQ0QsU0FBTyxJQUFJSSxtQkFBSixDQUFjSixPQUFkLENBQVA7QUFDSDs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0VBRCxRQUFRTSxNQUFSLEdBQWlCLFNBQVNBLE1BQVQsQ0FBZ0JDLElBQWhCLEVBQXNCQyxXQUF0QixFQUFtQztBQUNoRCxNQUFJQyxVQUFVLFNBQVZBLE9BQVUsR0FBbUI7QUFDN0IsUUFBSUMsY0FBY0YsdUNBQWxCO0FBQ0FFLGdCQUFZQyxhQUFaLEdBQTZCSixJQUE3QjtBQUNBRyxnQkFBWUUsY0FBWixHQUE4QixJQUFJUCxtQkFBSixFQUFELENBQWtCUSxPQUEvQztBQUNBLFdBQU9ILFdBQVA7QUFDSCxHQUxEOztBQU9BLE1BQUlJLGNBQUo7QUFDQUMsU0FBT0MsY0FBUCxDQUFzQlAsT0FBdEIsRUFBK0IsU0FBL0IsRUFBMEM7QUFDdENRLE9BRHNDLGlCQUNoQztBQUNGLFVBQUssQ0FBQ0gsS0FBTixFQUFjQSxRQUFRTCxTQUFSO0FBQ2QsYUFBT0ssS0FBUDtBQUNIO0FBSnFDLEdBQTFDOztBQU9BTCxVQUFRUyxPQUFSLEdBQWtCLFVBQVVDLEdBQVYsRUFBZUMsV0FBZixFQUE0QkMsVUFBNUIsRUFBd0M7QUFDdEQsV0FBT3JCLFFBQVEsQ0FBRVMsUUFBUVksVUFBUixDQUFGLENBQVIsRUFBaUNILE9BQWpDLENBQXlDQyxHQUF6QyxFQUE4Q0MsV0FBOUMsQ0FBUDtBQUNILEdBRkQ7O0FBSUEsU0FBT1gsT0FBUDtBQUNILENBckJEOztBQXVCQTs7Ozs7Ozs7Ozs7QUFXQVQsUUFBUXNCLFNBQVIsR0FBb0JBLG1CQUFwQjs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBdEIsUUFBUXVCLEtBQVIsR0FBZ0JBLGVBQWhCOztBQUVBOzs7Ozs7QUFNQXZCLFFBQVF3QixNQUFSLEdBQWlCQSxnQkFBakI7O0FBRUE7Ozs7OztBQU1BeEIsUUFBUXlCLElBQVIsR0FBZUEsY0FBZjs7QUFFQTs7Ozs7Ozs7OztBQVVBekIsUUFBUTBCLE9BQVIsR0FBa0I7QUFBQSxTQUFZLElBQUlDLGlCQUFKLENBQVlDLFFBQVosQ0FBWjtBQUFBLENBQWxCOztBQUVBOzs7Ozs7Ozs7O0FBVUE1QixRQUFRNkIsTUFBUixHQUFpQjtBQUFBLFNBQVksSUFBSUMsZ0JBQUosQ0FBV0YsUUFBWCxDQUFaO0FBQUEsQ0FBakI7O0FBRUE7Ozs7Ozs7Ozs7QUFVQTVCLFFBQVErQixJQUFSLEdBQWU7QUFBQSxTQUFZLElBQUlDLHFCQUFKLENBQWdCSixRQUFoQixDQUFaO0FBQUEsQ0FBZjs7QUFFQTs7Ozs7Ozs7OztBQVVBNUIsUUFBUWlDLElBQVIsR0FBZTtBQUFBLFNBQVksSUFBSUMsY0FBSixDQUFTTixRQUFULENBQVo7QUFBQSxDQUFmOztBQUVBOzs7Ozs7Ozs7O0FBVUE1QixRQUFRbUMsSUFBUixHQUFlO0FBQUEsU0FBWSxJQUFJQyxjQUFKLENBQVNSLFFBQVQsQ0FBWjtBQUFBLENBQWY7O2tCQUVlNUIsTyIsImZpbGUiOiJwb3N0Y3NzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gJy4vZGVjbGFyYXRpb24nO1xuaW1wb3J0IFByb2Nlc3NvciAgIGZyb20gJy4vcHJvY2Vzc29yJztcbmltcG9ydCBzdHJpbmdpZnkgICBmcm9tICcuL3N0cmluZ2lmeSc7XG5pbXBvcnQgQ29tbWVudCAgICAgZnJvbSAnLi9jb21tZW50JztcbmltcG9ydCBBdFJ1bGUgICAgICBmcm9tICcuL2F0LXJ1bGUnO1xuaW1wb3J0IHZlbmRvciAgICAgIGZyb20gJy4vdmVuZG9yJztcbmltcG9ydCBwYXJzZSAgICAgICBmcm9tICcuL3BhcnNlJztcbmltcG9ydCBsaXN0ICAgICAgICBmcm9tICcuL2xpc3QnO1xuaW1wb3J0IFJ1bGUgICAgICAgIGZyb20gJy4vcnVsZSc7XG5pbXBvcnQgUm9vdCAgICAgICAgZnJvbSAnLi9yb290JztcblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcge0BsaW5rIFByb2Nlc3Nvcn0gaW5zdGFuY2UgdGhhdCB3aWxsIGFwcGx5IGBwbHVnaW5zYFxuICogYXMgQ1NTIHByb2Nlc3NvcnMuXG4gKlxuICogQHBhcmFtIHtBcnJheS48UGx1Z2lufHBsdWdpbkZ1bmN0aW9uPnxQcm9jZXNzb3J9IHBsdWdpbnMgLSBQb3N0Q1NTXG4gKiAgICAgICAgcGx1Z2lucy4gU2VlIHtAbGluayBQcm9jZXNzb3IjdXNlfSBmb3IgcGx1Z2luIGZvcm1hdC5cbiAqXG4gKiBAcmV0dXJuIHtQcm9jZXNzb3J9IFByb2Nlc3NvciB0byBwcm9jZXNzIG11bHRpcGxlIENTU1xuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgcG9zdGNzcyBmcm9tICdwb3N0Y3NzJztcbiAqXG4gKiBwb3N0Y3NzKHBsdWdpbnMpLnByb2Nlc3MoY3NzLCB7IGZyb20sIHRvIH0pLnRoZW4ocmVzdWx0ID0+IHtcbiAqICAgY29uc29sZS5sb2cocmVzdWx0LmNzcyk7XG4gKiB9KTtcbiAqXG4gKiBAbmFtZXNwYWNlIHBvc3Rjc3NcbiAqL1xuZnVuY3Rpb24gcG9zdGNzcyguLi5wbHVnaW5zKSB7XG4gICAgaWYgKCBwbHVnaW5zLmxlbmd0aCA9PT0gMSAmJiBBcnJheS5pc0FycmF5KHBsdWdpbnNbMF0pICkge1xuICAgICAgICBwbHVnaW5zID0gcGx1Z2luc1swXTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBQcm9jZXNzb3IocGx1Z2lucyk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIFBvc3RDU1MgcGx1Z2luIHdpdGggYSBzdGFuZGFyZCBBUEkuXG4gKlxuICogVGhlIG5ld2x5LXdyYXBwZWQgZnVuY3Rpb24gd2lsbCBwcm92aWRlIGJvdGggdGhlIG5hbWUgYW5kIFBvc3RDU1NcbiAqIHZlcnNpb24gb2YgdGhlIHBsdWdpbi5cbiAqXG4gKiBgYGBqc1xuICogIGNvbnN0IHByb2Nlc3NvciA9IHBvc3Rjc3MoW3JlcGxhY2VdKTtcbiAqICBwcm9jZXNzb3IucGx1Z2luc1swXS5wb3N0Y3NzUGx1Z2luICAvLz0+ICdwb3N0Y3NzLXJlcGxhY2UnXG4gKiAgcHJvY2Vzc29yLnBsdWdpbnNbMF0ucG9zdGNzc1ZlcnNpb24gLy89PiAnNS4xLjAnXG4gKiBgYGBcbiAqXG4gKiBUaGUgcGx1Z2luIGZ1bmN0aW9uIHJlY2VpdmVzIDIgYXJndW1lbnRzOiB7QGxpbmsgUm9vdH1cbiAqIGFuZCB7QGxpbmsgUmVzdWx0fSBpbnN0YW5jZS4gVGhlIGZ1bmN0aW9uIHNob3VsZCBtdXRhdGUgdGhlIHByb3ZpZGVkXG4gKiBgUm9vdGAgbm9kZS4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBjcmVhdGUgYSBuZXcgYFJvb3RgIG5vZGVcbiAqIGFuZCBvdmVycmlkZSB0aGUgYHJlc3VsdC5yb290YCBwcm9wZXJ0eS5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgY2xlYW5lciA9IHBvc3Rjc3MucGx1Z2luKCdwb3N0Y3NzLWNsZWFuZXInLCAoKSA9PiB7XG4gKiAgIHJldHVybiAocm9vdCwgcmVzdWx0KSA9PiB7XG4gKiAgICAgcmVzdWx0LnJvb3QgPSBwb3N0Y3NzLnJvb3QoKTtcbiAqICAgfTtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQXMgYSBjb252ZW5pZW5jZSwgcGx1Z2lucyBhbHNvIGV4cG9zZSBhIGBwcm9jZXNzYCBtZXRob2Qgc28gdGhhdCB5b3UgY2FuIHVzZVxuICogdGhlbSBhcyBzdGFuZGFsb25lIHRvb2xzLlxuICpcbiAqIGBgYGpzXG4gKiBjbGVhbmVyLnByb2Nlc3MoY3NzLCBwcm9jZXNzT3B0cywgcGx1Z2luT3B0cyk7XG4gKiAvLyBUaGlzIGlzIGVxdWl2YWxlbnQgdG86XG4gKiBwb3N0Y3NzKFsgY2xlYW5lcihwbHVnaW5PcHRzKSBdKS5wcm9jZXNzKGNzcywgcHJvY2Vzc09wdHMpO1xuICogYGBgXG4gKlxuICogQXN5bmNocm9ub3VzIHBsdWdpbnMgc2hvdWxkIHJldHVybiBhIGBQcm9taXNlYCBpbnN0YW5jZS5cbiAqXG4gKiBgYGBqc1xuICogcG9zdGNzcy5wbHVnaW4oJ3Bvc3Rjc3MtaW1wb3J0JywgKCkgPT4ge1xuICogICByZXR1cm4gKHJvb3QsIHJlc3VsdCkgPT4ge1xuICogICAgIHJldHVybiBuZXcgUHJvbWlzZSggKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICogICAgICAgZnMucmVhZEZpbGUoJ2Jhc2UuY3NzJywgKGJhc2UpID0+IHtcbiAqICAgICAgICAgcm9vdC5wcmVwZW5kKGJhc2UpO1xuICogICAgICAgICByZXNvbHZlKCk7XG4gKiAgICAgICB9KTtcbiAqICAgICB9KTtcbiAqICAgfTtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQWRkIHdhcm5pbmdzIHVzaW5nIHRoZSB7QGxpbmsgTm9kZSN3YXJufSBtZXRob2QuXG4gKiBTZW5kIGRhdGEgdG8gb3RoZXIgcGx1Z2lucyB1c2luZyB0aGUge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30gYXJyYXkuXG4gKlxuICogYGBganNcbiAqIHBvc3Rjc3MucGx1Z2luKCdwb3N0Y3NzLWNhbml1c2UtdGVzdCcsICgpID0+IHtcbiAqICAgcmV0dXJuIChyb290LCByZXN1bHQpID0+IHtcbiAqICAgICByb290LndhbGtEZWNscyhkZWNsID0+IHtcbiAqICAgICAgIGlmICggIWNhbml1c2Uuc3VwcG9ydChkZWNsLnByb3ApICkge1xuICogICAgICAgICBkZWNsLndhcm4ocmVzdWx0LCAnU29tZSBicm93c2VycyBkbyBub3Qgc3VwcG9ydCAnICsgZGVjbC5wcm9wKTtcbiAqICAgICAgIH1cbiAqICAgICB9KTtcbiAqICAgfTtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgICAgLSBQb3N0Q1NTIHBsdWdpbiBuYW1lLiBTYW1lIGFzIGluIGBuYW1lYFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eSBpbiBgcGFja2FnZS5qc29uYC4gSXQgd2lsbCBiZSBzYXZlZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBgcGx1Z2luLnBvc3Rjc3NQbHVnaW5gIHByb3BlcnR5LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gaW5pdGlhbGl6ZXIgLSB3aWxsIHJlY2VpdmUgcGx1Z2luIG9wdGlvbnNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNob3VsZCByZXR1cm4ge0BsaW5rIHBsdWdpbkZ1bmN0aW9ufVxuICpcbiAqIEByZXR1cm4ge1BsdWdpbn0gUG9zdENTUyBwbHVnaW5cbiAqL1xucG9zdGNzcy5wbHVnaW4gPSBmdW5jdGlvbiBwbHVnaW4obmFtZSwgaW5pdGlhbGl6ZXIpIHtcbiAgICBsZXQgY3JlYXRvciA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgIGxldCB0cmFuc2Zvcm1lciA9IGluaXRpYWxpemVyKC4uLmFyZ3MpO1xuICAgICAgICB0cmFuc2Zvcm1lci5wb3N0Y3NzUGx1Z2luICA9IG5hbWU7XG4gICAgICAgIHRyYW5zZm9ybWVyLnBvc3Rjc3NWZXJzaW9uID0gKG5ldyBQcm9jZXNzb3IoKSkudmVyc2lvbjtcbiAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVyO1xuICAgIH07XG5cbiAgICBsZXQgY2FjaGU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0b3IsICdwb3N0Y3NzJywge1xuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICBpZiAoICFjYWNoZSApIGNhY2hlID0gY3JlYXRvcigpO1xuICAgICAgICAgICAgcmV0dXJuIGNhY2hlO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBjcmVhdG9yLnByb2Nlc3MgPSBmdW5jdGlvbiAoY3NzLCBwcm9jZXNzT3B0cywgcGx1Z2luT3B0cykge1xuICAgICAgICByZXR1cm4gcG9zdGNzcyhbIGNyZWF0b3IocGx1Z2luT3B0cykgXSkucHJvY2Vzcyhjc3MsIHByb2Nlc3NPcHRzKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNyZWF0b3I7XG59O1xuXG4vKipcbiAqIERlZmF1bHQgZnVuY3Rpb24gdG8gY29udmVydCBhIG5vZGUgdHJlZSBpbnRvIGEgQ1NTIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge05vZGV9IG5vZGUgICAgICAgLSBzdGFydCBub2RlIGZvciBzdHJpbmdpZmluZy4gVXN1YWxseSB7QGxpbmsgUm9vdH0uXG4gKiBAcGFyYW0ge2J1aWxkZXJ9IGJ1aWxkZXIgLSBmdW5jdGlvbiB0byBjb25jYXRlbmF0ZSBDU1MgZnJvbSBub2Rl4oCZcyBwYXJ0c1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgZ2VuZXJhdGUgc3RyaW5nIGFuZCBzb3VyY2UgbWFwXG4gKlxuICogQHJldHVybiB7dm9pZH1cbiAqXG4gKiBAZnVuY3Rpb25cbiAqL1xucG9zdGNzcy5zdHJpbmdpZnkgPSBzdHJpbmdpZnk7XG5cbi8qKlxuICogUGFyc2VzIHNvdXJjZSBjc3MgYW5kIHJldHVybnMgYSBuZXcge0BsaW5rIFJvb3R9IG5vZGUsXG4gKiB3aGljaCBjb250YWlucyB0aGUgc291cmNlIENTUyBub2Rlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3x0b1N0cmluZ30gY3NzICAgLSBzdHJpbmcgd2l0aCBpbnB1dCBDU1Mgb3IgYW55IG9iamVjdFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0b1N0cmluZygpIG1ldGhvZCwgbGlrZSBhIEJ1ZmZlclxuICogQHBhcmFtIHtwcm9jZXNzT3B0aW9uc30gW29wdHNdIC0gb3B0aW9ucyB3aXRoIG9ubHkgYGZyb21gIGFuZCBgbWFwYCBrZXlzXG4gKlxuICogQHJldHVybiB7Um9vdH0gUG9zdENTUyBBU1RcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2ltcGxlIENTUyBjb25jYXRlbmF0aW9uIHdpdGggc291cmNlIG1hcCBzdXBwb3J0XG4gKiBjb25zdCByb290MSA9IHBvc3Rjc3MucGFyc2UoY3NzMSwgeyBmcm9tOiBmaWxlMSB9KTtcbiAqIGNvbnN0IHJvb3QyID0gcG9zdGNzcy5wYXJzZShjc3MyLCB7IGZyb206IGZpbGUyIH0pO1xuICogcm9vdDEuYXBwZW5kKHJvb3QyKS50b1Jlc3VsdCgpLmNzcztcbiAqXG4gKiBAZnVuY3Rpb25cbiAqL1xucG9zdGNzcy5wYXJzZSA9IHBhcnNlO1xuXG4vKipcbiAqIEBtZW1iZXIge3ZlbmRvcn0gLSBDb250YWlucyB0aGUge0BsaW5rIHZlbmRvcn0gbW9kdWxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzLnZlbmRvci51bnByZWZpeGVkKCctbW96LXRhYicpIC8vPT4gWyd0YWInXVxuICovXG5wb3N0Y3NzLnZlbmRvciA9IHZlbmRvcjtcblxuLyoqXG4gKiBAbWVtYmVyIHtsaXN0fSAtIENvbnRhaW5zIHRoZSB7QGxpbmsgbGlzdH0gbW9kdWxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzLmxpc3Quc3BhY2UoJzVweCBjYWxjKDEwJSArIDVweCknKSAvLz0+IFsnNXB4JywgJ2NhbGMoMTAlICsgNXB4KSddXG4gKi9cbnBvc3Rjc3MubGlzdCA9IGxpc3Q7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgQ29tbWVudH0gbm9kZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW2RlZmF1bHRzXSAtIHByb3BlcnRpZXMgZm9yIHRoZSBuZXcgbm9kZS5cbiAqXG4gKiBAcmV0dXJuIHtDb21tZW50fSBuZXcgQ29tbWVudCBub2RlXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MuY29tbWVudCh7IHRleHQ6ICd0ZXN0JyB9KVxuICovXG5wb3N0Y3NzLmNvbW1lbnQgPSBkZWZhdWx0cyA9PiBuZXcgQ29tbWVudChkZWZhdWx0cyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgQXRSdWxlfSBub2RlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBbZGVmYXVsdHNdIC0gcHJvcGVydGllcyBmb3IgdGhlIG5ldyBub2RlLlxuICpcbiAqIEByZXR1cm4ge0F0UnVsZX0gbmV3IEF0UnVsZSBub2RlXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MuYXRSdWxlKHsgbmFtZTogJ2NoYXJzZXQnIH0pLnRvU3RyaW5nKCkgLy89PiBcIkBjaGFyc2V0XCJcbiAqL1xucG9zdGNzcy5hdFJ1bGUgPSBkZWZhdWx0cyA9PiBuZXcgQXRSdWxlKGRlZmF1bHRzKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHtAbGluayBEZWNsYXJhdGlvbn0gbm9kZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW2RlZmF1bHRzXSAtIHByb3BlcnRpZXMgZm9yIHRoZSBuZXcgbm9kZS5cbiAqXG4gKiBAcmV0dXJuIHtEZWNsYXJhdGlvbn0gbmV3IERlY2xhcmF0aW9uIG5vZGVcbiAqXG4gKiBAZXhhbXBsZVxuICogcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdyZWQnIH0pLnRvU3RyaW5nKCkgLy89PiBcImNvbG9yOiByZWRcIlxuICovXG5wb3N0Y3NzLmRlY2wgPSBkZWZhdWx0cyA9PiBuZXcgRGVjbGFyYXRpb24oZGVmYXVsdHMpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIFJ1bGV9IG5vZGUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IFtkZWZhdWx0c10gLSBwcm9wZXJ0aWVzIGZvciB0aGUgbmV3IG5vZGUuXG4gKlxuICogQHJldHVybiB7UnVsZX0gbmV3IFJ1bGUgbm9kZVxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzLnJ1bGUoeyBzZWxlY3RvcjogJ2EnIH0pLnRvU3RyaW5nKCkgLy89PiBcImEge1xcbn1cIlxuICovXG5wb3N0Y3NzLnJ1bGUgPSBkZWZhdWx0cyA9PiBuZXcgUnVsZShkZWZhdWx0cyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgUm9vdH0gbm9kZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW2RlZmF1bHRzXSAtIHByb3BlcnRpZXMgZm9yIHRoZSBuZXcgbm9kZS5cbiAqXG4gKiBAcmV0dXJuIHtSb290fSBuZXcgUm9vdCBub2RlXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3Mucm9vdCh7IGFmdGVyOiAnXFxuJyB9KS50b1N0cmluZygpIC8vPT4gXCJcXG5cIlxuICovXG5wb3N0Y3NzLnJvb3QgPSBkZWZhdWx0cyA9PiBuZXcgUm9vdChkZWZhdWx0cyk7XG5cbmV4cG9ydCBkZWZhdWx0IHBvc3Rjc3M7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _chalk = require('chalk');\n\nvar _chalk2 = _interopRequireDefault(_chalk);\n\nvar _tokenize = require('./tokenize');\n\nvar _tokenize2 = _interopRequireDefault(_tokenize);\n\nvar _input = require('./input');\n\nvar _input2 = _interopRequireDefault(_input);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HIGHLIGHT_THEME = {\n 'brackets': _chalk2.default.cyan,\n 'at-word': _chalk2.default.cyan,\n 'call': _chalk2.default.cyan,\n 'comment': _chalk2.default.gray,\n 'string': _chalk2.default.green,\n 'class': _chalk2.default.yellow,\n 'hash': _chalk2.default.magenta,\n '(': _chalk2.default.cyan,\n ')': _chalk2.default.cyan,\n '{': _chalk2.default.yellow,\n '}': _chalk2.default.yellow,\n '[': _chalk2.default.yellow,\n ']': _chalk2.default.yellow,\n ':': _chalk2.default.yellow,\n ';': _chalk2.default.yellow\n};\n\nfunction getTokenType(_ref, processor) {\n var type = _ref[0],\n value = _ref[1];\n\n if (type === 'word') {\n if (value[0] === '.') {\n return 'class';\n }\n if (value[0] === '#') {\n return 'hash';\n }\n }\n\n if (!processor.endOfFile()) {\n var next = processor.nextToken();\n processor.back(next);\n if (next[0] === 'brackets' || next[0] === '(') return 'call';\n }\n\n return type;\n}\n\nfunction terminalHighlight(css) {\n var processor = (0, _tokenize2.default)(new _input2.default(css), { ignoreErrors: true });\n var result = '';\n\n var _loop = function _loop() {\n var token = processor.nextToken();\n var color = HIGHLIGHT_THEME[getTokenType(token, processor)];\n if (color) {\n result += token[1].split(/\\r?\\n/).map(function (i) {\n return color(i);\n }).join('\\n');\n } else {\n result += token[1];\n }\n };\n\n while (!processor.endOfFile()) {\n _loop();\n }\n return result;\n}\n\nexports.default = terminalHighlight;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlcm1pbmFsLWhpZ2hsaWdodC5lczYiXSwibmFtZXMiOlsiSElHSExJR0hUX1RIRU1FIiwiY2hhbGsiLCJjeWFuIiwiZ3JheSIsImdyZWVuIiwieWVsbG93IiwibWFnZW50YSIsImdldFRva2VuVHlwZSIsInByb2Nlc3NvciIsInR5cGUiLCJ2YWx1ZSIsImVuZE9mRmlsZSIsIm5leHQiLCJuZXh0VG9rZW4iLCJiYWNrIiwidGVybWluYWxIaWdobGlnaHQiLCJjc3MiLCJJbnB1dCIsImlnbm9yZUVycm9ycyIsInJlc3VsdCIsInRva2VuIiwiY29sb3IiLCJzcGxpdCIsIm1hcCIsImkiLCJqb2luIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7QUFFQTs7OztBQUNBOzs7Ozs7QUFFQSxJQUFNQSxrQkFBa0I7QUFDcEIsZ0JBQVlDLGdCQUFNQyxJQURFO0FBRXBCLGVBQVlELGdCQUFNQyxJQUZFO0FBR3BCLFlBQVlELGdCQUFNQyxJQUhFO0FBSXBCLGVBQVlELGdCQUFNRSxJQUpFO0FBS3BCLGNBQVlGLGdCQUFNRyxLQUxFO0FBTXBCLGFBQVlILGdCQUFNSSxNQU5FO0FBT3BCLFlBQVlKLGdCQUFNSyxPQVBFO0FBUXBCLFNBQVlMLGdCQUFNQyxJQVJFO0FBU3BCLFNBQVlELGdCQUFNQyxJQVRFO0FBVXBCLFNBQVlELGdCQUFNSSxNQVZFO0FBV3BCLFNBQVlKLGdCQUFNSSxNQVhFO0FBWXBCLFNBQVlKLGdCQUFNSSxNQVpFO0FBYXBCLFNBQVlKLGdCQUFNSSxNQWJFO0FBY3BCLFNBQVlKLGdCQUFNSSxNQWRFO0FBZXBCLFNBQVlKLGdCQUFNSTtBQWZFLENBQXhCOztBQWtCQSxTQUFTRSxZQUFULE9BQXFDQyxTQUFyQyxFQUFnRDtBQUFBLFFBQXpCQyxJQUF5QjtBQUFBLFFBQW5CQyxLQUFtQjs7QUFDNUMsUUFBS0QsU0FBUyxNQUFkLEVBQXVCO0FBQ25CLFlBQUtDLE1BQU0sQ0FBTixNQUFhLEdBQWxCLEVBQXdCO0FBQ3BCLG1CQUFPLE9BQVA7QUFDSDtBQUNELFlBQUtBLE1BQU0sQ0FBTixNQUFhLEdBQWxCLEVBQXdCO0FBQ3BCLG1CQUFPLE1BQVA7QUFDSDtBQUNKOztBQUVELFFBQUssQ0FBQ0YsVUFBVUcsU0FBVixFQUFOLEVBQThCO0FBQzFCLFlBQUlDLE9BQU9KLFVBQVVLLFNBQVYsRUFBWDtBQUNBTCxrQkFBVU0sSUFBVixDQUFlRixJQUFmO0FBQ0EsWUFBS0EsS0FBSyxDQUFMLE1BQVksVUFBWixJQUEwQkEsS0FBSyxDQUFMLE1BQVksR0FBM0MsRUFBaUQsT0FBTyxNQUFQO0FBQ3BEOztBQUVELFdBQU9ILElBQVA7QUFDSDs7QUFFRCxTQUFTTSxpQkFBVCxDQUEyQkMsR0FBM0IsRUFBZ0M7QUFDNUIsUUFBSVIsWUFBWSx3QkFBVSxJQUFJUyxlQUFKLENBQVVELEdBQVYsQ0FBVixFQUEwQixFQUFFRSxjQUFjLElBQWhCLEVBQTFCLENBQWhCO0FBQ0EsUUFBSUMsU0FBUyxFQUFiOztBQUY0QjtBQUl4QixZQUFJQyxRQUFRWixVQUFVSyxTQUFWLEVBQVo7QUFDQSxZQUFJUSxRQUFRckIsZ0JBQWdCTyxhQUFhYSxLQUFiLEVBQW9CWixTQUFwQixDQUFoQixDQUFaO0FBQ0EsWUFBS2EsS0FBTCxFQUFhO0FBQ1RGLHNCQUFVQyxNQUFNLENBQU4sRUFBU0UsS0FBVCxDQUFlLE9BQWYsRUFDTEMsR0FESyxDQUNBO0FBQUEsdUJBQUtGLE1BQU1HLENBQU4sQ0FBTDtBQUFBLGFBREEsRUFFTEMsSUFGSyxDQUVBLElBRkEsQ0FBVjtBQUdILFNBSkQsTUFJTztBQUNITixzQkFBVUMsTUFBTSxDQUFOLENBQVY7QUFDSDtBQVp1Qjs7QUFHNUIsV0FBUSxDQUFDWixVQUFVRyxTQUFWLEVBQVQsRUFBaUM7QUFBQTtBQVVoQztBQUNELFdBQU9RLE1BQVA7QUFDSDs7a0JBRWNKLGlCIiwiZmlsZSI6InRlcm1pbmFsLWhpZ2hsaWdodC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbmltcG9ydCB0b2tlbml6ZXIgZnJvbSAnLi90b2tlbml6ZSc7XG5pbXBvcnQgSW5wdXQgICAgZnJvbSAnLi9pbnB1dCc7XG5cbmNvbnN0IEhJR0hMSUdIVF9USEVNRSA9IHtcbiAgICAnYnJhY2tldHMnOiBjaGFsay5jeWFuLFxuICAgICdhdC13b3JkJzogIGNoYWxrLmN5YW4sXG4gICAgJ2NhbGwnOiAgICAgY2hhbGsuY3lhbixcbiAgICAnY29tbWVudCc6ICBjaGFsay5ncmF5LFxuICAgICdzdHJpbmcnOiAgIGNoYWxrLmdyZWVuLFxuICAgICdjbGFzcyc6ICAgIGNoYWxrLnllbGxvdyxcbiAgICAnaGFzaCc6ICAgICBjaGFsay5tYWdlbnRhLFxuICAgICcoJzogICAgICAgIGNoYWxrLmN5YW4sXG4gICAgJyknOiAgICAgICAgY2hhbGsuY3lhbixcbiAgICAneyc6ICAgICAgICBjaGFsay55ZWxsb3csXG4gICAgJ30nOiAgICAgICAgY2hhbGsueWVsbG93LFxuICAgICdbJzogICAgICAgIGNoYWxrLnllbGxvdyxcbiAgICAnXSc6ICAgICAgICBjaGFsay55ZWxsb3csXG4gICAgJzonOiAgICAgICAgY2hhbGsueWVsbG93LFxuICAgICc7JzogICAgICAgIGNoYWxrLnllbGxvd1xufTtcblxuZnVuY3Rpb24gZ2V0VG9rZW5UeXBlKFt0eXBlLCB2YWx1ZV0sIHByb2Nlc3Nvcikge1xuICAgIGlmICggdHlwZSA9PT0gJ3dvcmQnICkge1xuICAgICAgICBpZiAoIHZhbHVlWzBdID09PSAnLicgKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2NsYXNzJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIHZhbHVlWzBdID09PSAnIycgKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2hhc2gnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCAhcHJvY2Vzc29yLmVuZE9mRmlsZSgpICkge1xuICAgICAgICBsZXQgbmV4dCA9IHByb2Nlc3Nvci5uZXh0VG9rZW4oKTtcbiAgICAgICAgcHJvY2Vzc29yLmJhY2sobmV4dCk7XG4gICAgICAgIGlmICggbmV4dFswXSA9PT0gJ2JyYWNrZXRzJyB8fCBuZXh0WzBdID09PSAnKCcgKSByZXR1cm4gJ2NhbGwnO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlO1xufVxuXG5mdW5jdGlvbiB0ZXJtaW5hbEhpZ2hsaWdodChjc3MpIHtcbiAgICBsZXQgcHJvY2Vzc29yID0gdG9rZW5pemVyKG5ldyBJbnB1dChjc3MpLCB7IGlnbm9yZUVycm9yczogdHJ1ZSB9KTtcbiAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgd2hpbGUgKCAhcHJvY2Vzc29yLmVuZE9mRmlsZSgpICkge1xuICAgICAgICBsZXQgdG9rZW4gPSBwcm9jZXNzb3IubmV4dFRva2VuKCk7XG4gICAgICAgIGxldCBjb2xvciA9IEhJR0hMSUdIVF9USEVNRVtnZXRUb2tlblR5cGUodG9rZW4sIHByb2Nlc3NvcildO1xuICAgICAgICBpZiAoIGNvbG9yICkge1xuICAgICAgICAgICAgcmVzdWx0ICs9IHRva2VuWzFdLnNwbGl0KC9cXHI/XFxuLylcbiAgICAgICAgICAgICAgICAubWFwKCBpID0+IGNvbG9yKGkpIClcbiAgICAgICAgICAgICAgICAuam9pbignXFxuJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gdG9rZW5bMV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdGVybWluYWxIaWdobGlnaHQ7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _sourceMap = require('source-map');\n\nvar _sourceMap2 = _interopRequireDefault(_sourceMap);\n\nvar _path = require('path');\n\nvar _path2 = _interopRequireDefault(_path);\n\nvar _fs = require('fs');\n\nvar _fs2 = _interopRequireDefault(_fs);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction fromBase64(str) {\n if (Buffer) {\n if (Buffer.from && Buffer.from !== Uint8Array.from) {\n return Buffer.from(str, 'base64').toString();\n } else {\n return new Buffer(str, 'base64').toString();\n }\n } else {\n return window.atob(str);\n }\n}\n\n/**\n * Source map information from input CSS.\n * For example, source map after Sass compiler.\n *\n * This class will automatically find source map in input CSS or in file system\n * near input file (according `from` option).\n *\n * @example\n * const root = postcss.parse(css, { from: 'a.sass.css' });\n * root.input.map //=> PreviousMap\n */\n\nvar PreviousMap = function () {\n\n /**\n * @param {string} css - input CSS source\n * @param {processOptions} [opts] - {@link Processor#process} options\n */\n function PreviousMap(css, opts) {\n _classCallCheck(this, PreviousMap);\n\n this.loadAnnotation(css);\n /**\n * @member {boolean} - Was source map inlined by data-uri to input CSS.\n */\n this.inline = this.startWith(this.annotation, 'data:');\n\n var prev = opts.map ? opts.map.prev : undefined;\n var text = this.loadMap(opts.from, prev);\n if (text) this.text = text;\n }\n\n /**\n * Create a instance of `SourceMapGenerator` class\n * from the `source-map` library to work with source map information.\n *\n * It is lazy method, so it will create object only on first call\n * and then it will use cache.\n *\n * @return {SourceMapGenerator} object with source map information\n */\n\n\n PreviousMap.prototype.consumer = function consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new _sourceMap2.default.SourceMapConsumer(this.text);\n }\n return this.consumerCache;\n };\n\n /**\n * Does source map contains `sourcesContent` with input source text.\n *\n * @return {boolean} Is `sourcesContent` present\n */\n\n\n PreviousMap.prototype.withContent = function withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n };\n\n PreviousMap.prototype.startWith = function startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n };\n\n PreviousMap.prototype.loadAnnotation = function loadAnnotation(css) {\n var match = css.match(/\\/\\*\\s*# sourceMappingURL=(.*)\\s*\\*\\//);\n if (match) this.annotation = match[1].trim();\n };\n\n PreviousMap.prototype.decodeInline = function decodeInline(text) {\n // data:application/json;charset=utf-8;base64,\n // data:application/json;charset=utf8;base64,\n // data:application/json;base64,\n var baseUri = /^data:application\\/json;(?:charset=utf-?8;)?base64,/;\n var uri = 'data:application/json,';\n\n if (this.startWith(text, uri)) {\n return decodeURIComponent(text.substr(uri.length));\n } else if (baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n } else {\n var encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error('Unsupported source map encoding ' + encoding);\n }\n };\n\n PreviousMap.prototype.loadMap = function loadMap(file, prev) {\n if (prev === false) return false;\n\n if (prev) {\n if (typeof prev === 'string') {\n return prev;\n } else if (typeof prev === 'function') {\n var prevPath = prev(file);\n if (prevPath && _fs2.default.existsSync && _fs2.default.existsSync(prevPath)) {\n return _fs2.default.readFileSync(prevPath, 'utf-8').toString().trim();\n } else {\n throw new Error('Unable to load previous source map: ' + prevPath.toString());\n }\n } else if (prev instanceof _sourceMap2.default.SourceMapConsumer) {\n return _sourceMap2.default.SourceMapGenerator.fromSourceMap(prev).toString();\n } else if (prev instanceof _sourceMap2.default.SourceMapGenerator) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error('Unsupported previous source map format: ' + prev.toString());\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n var map = this.annotation;\n if (file) map = _path2.default.join(_path2.default.dirname(file), map);\n\n this.root = _path2.default.dirname(map);\n if (_fs2.default.existsSync && _fs2.default.existsSync(map)) {\n return _fs2.default.readFileSync(map, 'utf-8').toString().trim();\n } else {\n return false;\n }\n }\n };\n\n PreviousMap.prototype.isMap = function isMap(map) {\n if ((typeof map === 'undefined' ? 'undefined' : _typeof(map)) !== 'object') return false;\n return typeof map.mappings === 'string' || typeof map._mappings === 'string';\n };\n\n return PreviousMap;\n}();\n\nexports.default = PreviousMap;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByZXZpb3VzLW1hcC5lczYiXSwibmFtZXMiOlsiZnJvbUJhc2U2NCIsInN0ciIsIkJ1ZmZlciIsImZyb20iLCJVaW50OEFycmF5IiwidG9TdHJpbmciLCJ3aW5kb3ciLCJhdG9iIiwiUHJldmlvdXNNYXAiLCJjc3MiLCJvcHRzIiwibG9hZEFubm90YXRpb24iLCJpbmxpbmUiLCJzdGFydFdpdGgiLCJhbm5vdGF0aW9uIiwicHJldiIsIm1hcCIsInVuZGVmaW5lZCIsInRleHQiLCJsb2FkTWFwIiwiY29uc3VtZXIiLCJjb25zdW1lckNhY2hlIiwibW96aWxsYSIsIlNvdXJjZU1hcENvbnN1bWVyIiwid2l0aENvbnRlbnQiLCJzb3VyY2VzQ29udGVudCIsImxlbmd0aCIsInN0cmluZyIsInN0YXJ0Iiwic3Vic3RyIiwibWF0Y2giLCJ0cmltIiwiZGVjb2RlSW5saW5lIiwiYmFzZVVyaSIsInVyaSIsImRlY29kZVVSSUNvbXBvbmVudCIsInRlc3QiLCJSZWdFeHAiLCJsYXN0TWF0Y2giLCJlbmNvZGluZyIsIkVycm9yIiwiZmlsZSIsInByZXZQYXRoIiwiZnMiLCJleGlzdHNTeW5jIiwicmVhZEZpbGVTeW5jIiwiU291cmNlTWFwR2VuZXJhdG9yIiwiZnJvbVNvdXJjZU1hcCIsImlzTWFwIiwiSlNPTiIsInN0cmluZ2lmeSIsInBhdGgiLCJqb2luIiwiZGlybmFtZSIsInJvb3QiLCJtYXBwaW5ncyIsIl9tYXBwaW5ncyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7OztBQUVBLFNBQVNBLFVBQVQsQ0FBb0JDLEdBQXBCLEVBQXlCO0FBQ3JCLFFBQUtDLE1BQUwsRUFBYztBQUNWLFlBQUtBLE9BQU9DLElBQVAsSUFBZUQsT0FBT0MsSUFBUCxLQUFnQkMsV0FBV0QsSUFBL0MsRUFBc0Q7QUFDbEQsbUJBQU9ELE9BQU9DLElBQVAsQ0FBWUYsR0FBWixFQUFpQixRQUFqQixFQUEyQkksUUFBM0IsRUFBUDtBQUNILFNBRkQsTUFF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LGFBQUdDLFVBQUgsSUFBaUJELGFBQUdDLFVBQUgsQ0FBYzVCLEdBQWQsQ0FBdEIsRUFBMkM7QUFDdkMsdUJBQU8yQixhQUFHRSxZQUFILENBQWdCN0IsR0FBaEIsRUFBcUIsT0FBckIsRUFBOEJYLFFBQTlCLEdBQXlDMEIsSUFBekMsRUFBUDtBQUNILGFBRkQsTUFFTztBQUNILHVCQUFPLEtBQVA7QUFDSDtBQUNKO0FBQ0osSzs7MEJBRURpQixLLGtCQUFNaEMsRyxFQUFLO0FBQ1AsWUFBSyxRQUFPQSxHQUFQLHlDQUFPQSxHQUFQLE9BQWUsUUFBcEIsRUFBK0IsT0FBTyxLQUFQO0FBQy9CLGVBQU8sT0FBT0EsSUFBSXVDLFFBQVgsS0FBd0IsUUFBeEIsSUFDQSxPQUFPdkMsSUFBSXdDLFNBQVgsS0FBeUIsUUFEaEM7QUFFSCxLOzs7OztrQkFHVWhELFciLCJmaWxlIjoicHJldmlvdXMtbWFwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vemlsbGEgIGZyb20gJ3NvdXJjZS1tYXAnO1xuaW1wb3J0IHBhdGggICAgIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGZzICAgICAgIGZyb20gJ2ZzJztcblxuZnVuY3Rpb24gZnJvbUJhc2U2NChzdHIpIHtcbiAgICBpZiAoIEJ1ZmZlciApIHtcbiAgICAgICAgaWYgKCBCdWZmZXIuZnJvbSAmJiBCdWZmZXIuZnJvbSAhPT0gVWludDhBcnJheS5mcm9tICkge1xuICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHN0ciwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEJ1ZmZlcihzdHIsICdiYXNlNjQnKS50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5hdG9iKHN0cik7XG4gICAgfVxufVxuXG4vKipcbiAqIFNvdXJjZSBtYXAgaW5mb3JtYXRpb24gZnJvbSBpbnB1dCBDU1MuXG4gKiBGb3IgZXhhbXBsZSwgc291cmNlIG1hcCBhZnRlciBTYXNzIGNvbXBpbGVyLlxuICpcbiAqIFRoaXMgY2xhc3Mgd2lsbCBhdXRvbWF0aWNhbGx5IGZpbmQgc291cmNlIG1hcCBpbiBpbnB1dCBDU1Mgb3IgaW4gZmlsZSBzeXN0ZW1cbiAqIG5lYXIgaW5wdXQgZmlsZSAoYWNjb3JkaW5nIGBmcm9tYCBvcHRpb24pLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZShjc3MsIHsgZnJvbTogJ2Euc2Fzcy5jc3MnIH0pO1xuICogcm9vdC5pbnB1dC5tYXAgLy89PiBQcmV2aW91c01hcFxuICovXG5jbGFzcyBQcmV2aW91c01hcCB7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gICAgICAgICBjc3MgICAgLSBpbnB1dCBDU1Mgc291cmNlXG4gICAgICogQHBhcmFtIHtwcm9jZXNzT3B0aW9uc30gW29wdHNdIC0ge0BsaW5rIFByb2Nlc3NvciNwcm9jZXNzfSBvcHRpb25zXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY3NzLCBvcHRzKSB7XG4gICAgICAgIHRoaXMubG9hZEFubm90YXRpb24oY3NzKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge2Jvb2xlYW59IC0gV2FzIHNvdXJjZSBtYXAgaW5saW5lZCBieSBkYXRhLXVyaSB0byBpbnB1dCBDU1MuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmlubGluZSA9IHRoaXMuc3RhcnRXaXRoKHRoaXMuYW5ub3RhdGlvbiwgJ2RhdGE6Jyk7XG5cbiAgICAgICAgbGV0IHByZXYgPSBvcHRzLm1hcCA/IG9wdHMubWFwLnByZXYgOiB1bmRlZmluZWQ7XG4gICAgICAgIGxldCB0ZXh0ID0gdGhpcy5sb2FkTWFwKG9wdHMuZnJvbSwgcHJldik7XG4gICAgICAgIGlmICggdGV4dCApIHRoaXMudGV4dCA9IHRleHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgaW5zdGFuY2Ugb2YgYFNvdXJjZU1hcEdlbmVyYXRvcmAgY2xhc3NcbiAgICAgKiBmcm9tIHRoZSBgc291cmNlLW1hcGAgbGlicmFyeSB0byB3b3JrIHdpdGggc291cmNlIG1hcCBpbmZvcm1hdGlvbi5cbiAgICAgKlxuICAgICAqIEl0IGlzIGxhenkgbWV0aG9kLCBzbyBpdCB3aWxsIGNyZWF0ZSBvYmplY3Qgb25seSBvbiBmaXJzdCBjYWxsXG4gICAgICogYW5kIHRoZW4gaXQgd2lsbCB1c2UgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtTb3VyY2VNYXBHZW5lcmF0b3J9IG9iamVjdCB3aXRoIHNvdXJjZSBtYXAgaW5mb3JtYXRpb25cbiAgICAgKi9cbiAgICBjb25zdW1lcigpIHtcbiAgICAgICAgaWYgKCAhdGhpcy5jb25zdW1lckNhY2hlICkge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lckNhY2hlID0gbmV3IG1vemlsbGEuU291cmNlTWFwQ29uc3VtZXIodGhpcy50ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb25zdW1lckNhY2hlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERvZXMgc291cmNlIG1hcCBjb250YWlucyBgc291cmNlc0NvbnRlbnRgIHdpdGggaW5wdXQgc291cmNlIHRleHQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBJcyBgc291cmNlc0NvbnRlbnRgIHByZXNlbnRcbiAgICAgKi9cbiAgICB3aXRoQ29udGVudCgpIHtcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuY29uc3VtZXIoKS5zb3VyY2VzQ29udGVudCAmJlxuICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1lcigpLnNvdXJjZXNDb250ZW50Lmxlbmd0aCA+IDApO1xuICAgIH1cblxuICAgIHN0YXJ0V2l0aChzdHJpbmcsIHN0YXJ0KSB7XG4gICAgICAgIGlmICggIXN0cmluZyApIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHIoMCwgc3RhcnQubGVuZ3RoKSA9PT0gc3RhcnQ7XG4gICAgfVxuXG4gICAgbG9hZEFubm90YXRpb24oY3NzKSB7XG4gICAgICAgIGxldCBtYXRjaCA9IGNzcy5tYXRjaCgvXFwvXFwqXFxzKiMgc291cmNlTWFwcGluZ1VSTD0oLiopXFxzKlxcKlxcLy8pO1xuICAgICAgICBpZiAoIG1hdGNoICkgdGhpcy5hbm5vdGF0aW9uID0gbWF0Y2hbMV0udHJpbSgpO1xuICAgIH1cblxuICAgIGRlY29kZUlubGluZSh0ZXh0KSB7XG4gICAgICAgIC8vIGRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcbiAgICAgICAgLy8gZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmODtiYXNlNjQsXG4gICAgICAgIC8vIGRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXG4gICAgICAgIGxldCBiYXNlVXJpID0gL15kYXRhOmFwcGxpY2F0aW9uXFwvanNvbjsoPzpjaGFyc2V0PXV0Zi0/ODspP2Jhc2U2NCwvO1xuICAgICAgICBsZXQgdXJpICAgICA9ICdkYXRhOmFwcGxpY2F0aW9uL2pzb24sJztcblxuICAgICAgICBpZiAoIHRoaXMuc3RhcnRXaXRoKHRleHQsIHVyaSkgKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KCB0ZXh0LnN1YnN0cih1cmkubGVuZ3RoKSApO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoIGJhc2VVcmkudGVzdCh0ZXh0KSApIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tQmFzZTY0KHRleHQuc3Vic3RyKFJlZ0V4cC5sYXN0TWF0Y2gubGVuZ3RoKSk7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBlbmNvZGluZyA9IHRleHQubWF0Y2goL2RhdGE6YXBwbGljYXRpb25cXC9qc29uOyhbXixdKyksLylbMV07XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHNvdXJjZSBtYXAgZW5jb2RpbmcgJyArIGVuY29kaW5nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxvYWRNYXAoZmlsZSwgcHJldikge1xuICAgICAgICBpZiAoIHByZXYgPT09IGZhbHNlICkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIGlmICggcHJldiApIHtcbiAgICAgICAgICAgIGlmICggdHlwZW9mIHByZXYgPT09ICdzdHJpbmcnICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgICAgfSBlbHNlIGlmICggdHlwZW9mIHByZXYgPT09ICdmdW5jdGlvbicgKSB7XG4gICAgICAgICAgICAgICAgbGV0IHByZXZQYXRoID0gcHJldihmaWxlKTtcbiAgICAgICAgICAgICAgICBpZiAoIHByZXZQYXRoICYmIGZzLmV4aXN0c1N5bmMgJiYgZnMuZXhpc3RzU3luYyhwcmV2UGF0aCkgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMocHJldlBhdGgsICd1dGYtOCcpLnRvU3RyaW5nKCkudHJpbSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGxvYWQgcHJldmlvdXMgc291cmNlIG1hcDogJyArXG4gICAgICAgICAgICAgICAgICAgIHByZXZQYXRoLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHByZXYgaW5zdGFuY2VvZiBtb3ppbGxhLlNvdXJjZU1hcENvbnN1bWVyICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb3ppbGxhLlNvdXJjZU1hcEdlbmVyYXRvclxuICAgICAgICAgICAgICAgICAgICAuZnJvbVNvdXJjZU1hcChwcmV2KS50b1N0cmluZygpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggcHJldiBpbnN0YW5jZW9mIG1vemlsbGEuU291cmNlTWFwR2VuZXJhdG9yICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2LnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB0aGlzLmlzTWFwKHByZXYpICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShwcmV2KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBwcmV2aW91cyBzb3VyY2UgbWFwIGZvcm1hdDogJyArXG4gICAgICAgICAgICAgICAgICAgIHByZXYudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIGlmICggdGhpcy5pbmxpbmUgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGVJbmxpbmUodGhpcy5hbm5vdGF0aW9uKTtcblxuICAgICAgICB9IGVsc2UgaWYgKCB0aGlzLmFubm90YXRpb24gKSB7XG4gICAgICAgICAgICBsZXQgbWFwID0gdGhpcy5hbm5vdGF0aW9uO1xuICAgICAgICAgICAgaWYgKCBmaWxlICkgbWFwID0gcGF0aC5qb2luKHBhdGguZGlybmFtZShmaWxlKSwgbWFwKTtcblxuICAgICAgICAgICAgdGhpcy5yb290ID0gcGF0aC5kaXJuYW1lKG1hcCk7XG4gICAgICAgICAgICBpZiAoIGZzLmV4aXN0c1N5bmMgJiYgZnMuZXhpc3RzU3luYyhtYXApICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMobWFwLCAndXRmLTgnKS50b1N0cmluZygpLnRyaW0oKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNNYXAobWFwKSB7XG4gICAgICAgIGlmICggdHlwZW9mIG1hcCAhPT0gJ29iamVjdCcgKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0eXBlb2YgbWFwLm1hcHBpbmdzID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgICAgICAgdHlwZW9mIG1hcC5fbWFwcGluZ3MgPT09ICdzdHJpbmcnO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJldmlvdXNNYXA7XG4iXX0=\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _sourceMap = require('source-map');\n\nvar _sourceMap2 = _interopRequireDefault(_sourceMap);\n\nvar _path = require('path');\n\nvar _path2 = _interopRequireDefault(_path);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MapGenerator = function () {\n function MapGenerator(stringify, root, opts) {\n _classCallCheck(this, MapGenerator);\n\n this.stringify = stringify;\n this.mapOpts = opts.map || {};\n this.root = root;\n this.opts = opts;\n }\n\n MapGenerator.prototype.isMap = function isMap() {\n if (typeof this.opts.map !== 'undefined') {\n return !!this.opts.map;\n } else {\n return this.previous().length > 0;\n }\n };\n\n MapGenerator.prototype.previous = function previous() {\n var _this = this;\n\n if (!this.previousMaps) {\n this.previousMaps = [];\n this.root.walk(function (node) {\n if (node.source && node.source.input.map) {\n var map = node.source.input.map;\n if (_this.previousMaps.indexOf(map) === -1) {\n _this.previousMaps.push(map);\n }\n }\n });\n }\n\n return this.previousMaps;\n };\n\n MapGenerator.prototype.isInline = function isInline() {\n if (typeof this.mapOpts.inline !== 'undefined') {\n return this.mapOpts.inline;\n }\n\n var annotation = this.mapOpts.annotation;\n if (typeof annotation !== 'undefined' && annotation !== true) {\n return false;\n }\n\n if (this.previous().length) {\n return this.previous().some(function (i) {\n return i.inline;\n });\n } else {\n return true;\n }\n };\n\n MapGenerator.prototype.isSourcesContent = function isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== 'undefined') {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some(function (i) {\n return i.withContent();\n });\n } else {\n return true;\n }\n };\n\n MapGenerator.prototype.clearAnnotation = function clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n\n var node = void 0;\n for (var i = this.root.nodes.length - 1; i >= 0; i--) {\n node = this.root.nodes[i];\n if (node.type !== 'comment') continue;\n if (node.text.indexOf('# sourceMappingURL=') === 0) {\n this.root.removeChild(i);\n }\n }\n };\n\n MapGenerator.prototype.setSourcesContent = function setSourcesContent() {\n var _this2 = this;\n\n var already = {};\n this.root.walk(function (node) {\n if (node.source) {\n var from = node.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n var relative = _this2.relative(from);\n _this2.map.setSourceContent(relative, node.source.input.css);\n }\n }\n });\n };\n\n MapGenerator.prototype.applyPrevMaps = function applyPrevMaps() {\n for (var _iterator = this.previous(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var prev = _ref;\n\n var from = this.relative(prev.file);\n var root = prev.root || _path2.default.dirname(prev.file);\n var map = void 0;\n\n if (this.mapOpts.sourcesContent === false) {\n map = new _sourceMap2.default.SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = map.sourcesContent.map(function () {\n return null;\n });\n }\n } else {\n map = prev.consumer();\n }\n\n this.map.applySourceMap(map, from, this.relative(root));\n }\n };\n\n MapGenerator.prototype.isAnnotation = function isAnnotation() {\n if (this.isInline()) {\n return true;\n } else if (typeof this.mapOpts.annotation !== 'undefined') {\n return this.mapOpts.annotation;\n } else if (this.previous().length) {\n return this.previous().some(function (i) {\n return i.annotation;\n });\n } else {\n return true;\n }\n };\n\n MapGenerator.prototype.toBase64 = function toBase64(str) {\n if (Buffer) {\n if (Buffer.from && Buffer.from !== Uint8Array.from) {\n return Buffer.from(str).toString('base64');\n } else {\n return new Buffer(str).toString('base64');\n }\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n };\n\n MapGenerator.prototype.addAnnotation = function addAnnotation() {\n var content = void 0;\n\n if (this.isInline()) {\n\n content = 'data:application/json;base64,' + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === 'string') {\n content = this.mapOpts.annotation;\n } else {\n content = this.outputFile() + '.map';\n }\n\n var eol = '\\n';\n if (this.css.indexOf('\\r\\n') !== -1) eol = '\\r\\n';\n\n this.css += eol + '/*# sourceMappingURL=' + content + ' */';\n };\n\n MapGenerator.prototype.outputFile = function outputFile() {\n if (this.opts.to) {\n return this.relative(this.opts.to);\n } else if (this.opts.from) {\n return this.relative(this.opts.from);\n } else {\n return 'to.css';\n }\n };\n\n MapGenerator.prototype.generateMap = function generateMap() {\n this.generateString();\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n };\n\n MapGenerator.prototype.relative = function relative(file) {\n if (file.indexOf('<') === 0) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n\n var from = this.opts.to ? _path2.default.dirname(this.opts.to) : '.';\n\n if (typeof this.mapOpts.annotation === 'string') {\n from = _path2.default.dirname(_path2.default.resolve(from, this.mapOpts.annotation));\n }\n\n file = _path2.default.relative(from, file);\n if (_path2.default.sep === '\\\\') {\n return file.replace(/\\\\/g, '/');\n } else {\n return file;\n }\n };\n\n MapGenerator.prototype.sourcePath = function sourcePath(node) {\n if (this.mapOpts.from) {\n return this.mapOpts.from;\n } else {\n return this.relative(node.source.input.from);\n }\n };\n\n MapGenerator.prototype.generateString = function generateString() {\n var _this3 = this;\n\n this.css = '';\n this.map = new _sourceMap2.default.SourceMapGenerator({ file: this.outputFile() });\n\n var line = 1;\n var column = 1;\n\n var lines = void 0,\n last = void 0;\n this.stringify(this.root, function (str, node, type) {\n _this3.css += str;\n\n if (node && type !== 'end') {\n if (node.source && node.source.start) {\n _this3.map.addMapping({\n source: _this3.sourcePath(node),\n generated: { line: line, column: column - 1 },\n original: {\n line: node.source.start.line,\n column: node.source.start.column - 1\n }\n });\n } else {\n _this3.map.addMapping({\n source: '<no source>',\n original: { line: 1, column: 0 },\n generated: { line: line, column: column - 1 }\n });\n }\n }\n\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf('\\n');\n column = str.length - last;\n } else {\n column += str.length;\n }\n\n if (node && type !== 'start') {\n if (node.source && node.source.end) {\n _this3.map.addMapping({\n source: _this3.sourcePath(node),\n generated: { line: line, column: column - 1 },\n original: {\n line: node.source.end.line,\n column: node.source.end.column\n }\n });\n } else {\n _this3.map.addMapping({\n source: '<no source>',\n original: { line: 1, column: 0 },\n generated: { line: line, column: column - 1 }\n });\n }\n }\n });\n };\n\n MapGenerator.prototype.generate = function generate() {\n this.clearAnnotation();\n\n if (this.isMap()) {\n return this.generateMap();\n } else {\n var result = '';\n this.stringify(this.root, function (i) {\n result += i;\n });\n return [result];\n }\n };\n\n return MapGenerator;\n}();\n\nexports.default = MapGenerator;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1hcC1nZW5lcmF0b3IuZXM2Il0sIm5hbWVzIjpbIk1hcEdlbmVyYXRvciIsInN0cmluZ2lmeSIsInJvb3QiLCJvcHRzIiwibWFwT3B0cyIsIm1hcCIsImlzTWFwIiwicHJldmlvdXMiLCJsZW5ndGgiLCJwcmV2aW91c01hcHMiLCJ3YWxrIiwibm9kZSIsInNvdXJjZSIsImlucHV0IiwiaW5kZXhPZiIsInB1c2giLCJpc0lubGluZSIsImlubGluZSIsImFubm90YXRpb24iLCJzb21lIiwiaSIsImlzU291cmNlc0NvbnRlbnQiLCJzb3VyY2VzQ29udGVudCIsIndpdGhDb250ZW50IiwiY2xlYXJBbm5vdGF0aW9uIiwibm9kZXMiLCJ0eXBlIiwidGV4dCIsInJlbW92ZUNoaWxkIiwic2V0U291cmNlc0NvbnRlbnQiLCJhbHJlYWR5IiwiZnJvbSIsInJlbGF0aXZlIiwic2V0U291cmNlQ29udGVudCIsImNzcyIsImFwcGx5UHJldk1hcHMiLCJwcmV2IiwiZmlsZSIsInBhdGgiLCJkaXJuYW1lIiwibW96aWxsYSIsIlNvdXJjZU1hcENvbnN1bWVyIiwiY29uc3VtZXIiLCJhcHBseVNvdXJjZU1hcCIsImlzQW5ub3RhdGlvbiIsInRvQmFzZTY0Iiwic3RyIiwiQnVmZmVyIiwiVWludDhBcnJheSIsInRvU3RyaW5nIiwid2luZG93IiwiYnRvYSIsInVuZXNjYXBlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiYWRkQW5ub3RhdGlvbiIsImNvbnRlbnQiLCJvdXRwdXRGaWxlIiwiZW9sIiwidG8iLCJnZW5lcmF0ZU1hcCIsImdlbmVyYXRlU3RyaW5nIiwidGVzdCIsInJlc29sdmUiLCJzZXAiLCJyZXBsYWNlIiwic291cmNlUGF0aCIsIlNvdXJjZU1hcEdlbmVyYXRvciIsImxpbmUiLCJjb2x1bW4iLCJsaW5lcyIsImxhc3QiLCJzdGFydCIsImFkZE1hcHBpbmciLCJnZW5lcmF0ZWQiLCJvcmlnaW5hbCIsIm1hdGNoIiwibGFzdEluZGV4T2YiLCJlbmQiLCJnZW5lcmF0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QVcsRUFBRU4sVUFBRixFQUFRQyxRQUFRQSxTQUFTLENBQXpCO0FBSEsscUJBQXBCO0FBS0g7QUFDSjtBQUNKLFNBakREO0FBa0RILEs7OzJCQUVEVSxRLHVCQUFXO0FBQ1AsYUFBS3RELGVBQUw7O0FBRUEsWUFBSyxLQUFLbEIsS0FBTCxFQUFMLEVBQW9CO0FBQ2hCLG1CQUFPLEtBQUtxRCxXQUFMLEVBQVA7QUFDSCxTQUZELE1BRU87QUFDSCxnQkFBSW9CLFNBQVMsRUFBYjtBQUNBLGlCQUFLOUUsU0FBTCxDQUFlLEtBQUtDLElBQXBCLEVBQTBCLGFBQUs7QUFDM0I2RSwwQkFBVTNELENBQVY7QUFDSCxhQUZEO0FBR0EsbUJBQU8sQ0FBQzJELE1BQUQsQ0FBUDtBQUNIO0FBQ0osSzs7Ozs7a0JBalJnQi9FLFkiLCJmaWxlIjoibWFwLWdlbmVyYXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb3ppbGxhIGZyb20gJ3NvdXJjZS1tYXAnO1xuaW1wb3J0IHBhdGggICAgZnJvbSAncGF0aCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1hcEdlbmVyYXRvciB7XG5cbiAgICBjb25zdHJ1Y3RvcihzdHJpbmdpZnksIHJvb3QsIG9wdHMpIHtcbiAgICAgICAgdGhpcy5zdHJpbmdpZnkgPSBzdHJpbmdpZnk7XG4gICAgICAgIHRoaXMubWFwT3B0cyAgID0gb3B0cy5tYXAgfHwgeyB9O1xuICAgICAgICB0aGlzLnJvb3QgICAgICA9IHJvb3Q7XG4gICAgICAgIHRoaXMub3B0cyAgICAgID0gb3B0cztcbiAgICB9XG5cbiAgICBpc01hcCgpIHtcbiAgICAgICAgaWYgKCB0eXBlb2YgdGhpcy5vcHRzLm1hcCAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICByZXR1cm4gISF0aGlzLm9wdHMubWFwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXMoKS5sZW5ndGggPiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJldmlvdXMoKSB7XG4gICAgICAgIGlmICggIXRoaXMucHJldmlvdXNNYXBzICkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c01hcHMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMucm9vdC53YWxrKCBub2RlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIG5vZGUuc291cmNlICYmIG5vZGUuc291cmNlLmlucHV0Lm1hcCApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1hcCA9IG5vZGUuc291cmNlLmlucHV0Lm1hcDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB0aGlzLnByZXZpb3VzTWFwcy5pbmRleE9mKG1hcCkgPT09IC0xICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c01hcHMucHVzaChtYXApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wcmV2aW91c01hcHM7XG4gICAgfVxuXG4gICAgaXNJbmxpbmUoKSB7XG4gICAgICAgIGlmICggdHlwZW9mIHRoaXMubWFwT3B0cy5pbmxpbmUgIT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFwT3B0cy5pbmxpbmU7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYW5ub3RhdGlvbiA9IHRoaXMubWFwT3B0cy5hbm5vdGF0aW9uO1xuICAgICAgICBpZiAoIHR5cGVvZiBhbm5vdGF0aW9uICE9PSAndW5kZWZpbmVkJyAmJiBhbm5vdGF0aW9uICE9PSB0cnVlICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCB0aGlzLnByZXZpb3VzKCkubGVuZ3RoICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXMoKS5zb21lKCBpID0+IGkuaW5saW5lICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzU291cmNlc0NvbnRlbnQoKSB7XG4gICAgICAgIGlmICggdHlwZW9mIHRoaXMubWFwT3B0cy5zb3VyY2VzQ29udGVudCAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXBPcHRzLnNvdXJjZXNDb250ZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmICggdGhpcy5wcmV2aW91cygpLmxlbmd0aCApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByZXZpb3VzKCkuc29tZSggaSA9PiBpLndpdGhDb250ZW50KCkgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xlYXJBbm5vdGF0aW9uKCkge1xuICAgICAgICBpZiAoIHRoaXMubWFwT3B0cy5hbm5vdGF0aW9uID09PSBmYWxzZSApIHJldHVybjtcblxuICAgICAgICBsZXQgbm9kZTtcbiAgICAgICAgZm9yICggbGV0IGkgPSB0aGlzLnJvb3Qubm9kZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0gKSB7XG4gICAgICAgICAgICBub2RlID0gdGhpcy5yb290Lm5vZGVzW2ldO1xuICAgICAgICAgICAgaWYgKCBub2RlLnR5cGUgIT09ICdjb21tZW50JyApIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKCBub2RlLnRleHQuaW5kZXhPZignIyBzb3VyY2VNYXBwaW5nVVJMPScpID09PSAwICkge1xuICAgICAgICAgICAgICAgIHRoaXMucm9vdC5yZW1vdmVDaGlsZChpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFNvdXJjZXNDb250ZW50KCkge1xuICAgICAgICBsZXQgYWxyZWFkeSA9IHsgfTtcbiAgICAgICAgdGhpcy5yb290LndhbGsoIG5vZGUgPT4ge1xuICAgICAgICAgICAgaWYgKCBub2RlLnNvdXJjZSApIHtcbiAgICAgICAgICAgICAgICBsZXQgZnJvbSA9IG5vZGUuc291cmNlLmlucHV0LmZyb207XG4gICAgICAgICAgICAgICAgaWYgKCBmcm9tICYmICFhbHJlYWR5W2Zyb21dICkge1xuICAgICAgICAgICAgICAgICAgICBhbHJlYWR5W2Zyb21dID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlbGF0aXZlID0gdGhpcy5yZWxhdGl2ZShmcm9tKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAuc2V0U291cmNlQ29udGVudChyZWxhdGl2ZSwgbm9kZS5zb3VyY2UuaW5wdXQuY3NzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFwcGx5UHJldk1hcHMoKSB7XG4gICAgICAgIGZvciAoIGxldCBwcmV2IG9mIHRoaXMucHJldmlvdXMoKSApIHtcbiAgICAgICAgICAgIGxldCBmcm9tID0gdGhpcy5yZWxhdGl2ZShwcmV2LmZpbGUpO1xuICAgICAgICAgICAgbGV0IHJvb3QgPSBwcmV2LnJvb3QgfHwgcGF0aC5kaXJuYW1lKHByZXYuZmlsZSk7XG4gICAgICAgICAgICBsZXQgbWFwO1xuXG4gICAgICAgICAgICBpZiAoIHRoaXMubWFwT3B0cy5zb3VyY2VzQ29udGVudCA9PT0gZmFsc2UgKSB7XG4gICAgICAgICAgICAgICAgbWFwID0gbmV3IG1vemlsbGEuU291cmNlTWFwQ29uc3VtZXIocHJldi50ZXh0KTtcbiAgICAgICAgICAgICAgICBpZiAoIG1hcC5zb3VyY2VzQ29udGVudCApIHtcbiAgICAgICAgICAgICAgICAgICAgbWFwLnNvdXJjZXNDb250ZW50ID0gbWFwLnNvdXJjZXNDb250ZW50Lm1hcCggKCkgPT4gbnVsbCApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbWFwID0gcHJldi5jb25zdW1lcigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm1hcC5hcHBseVNvdXJjZU1hcChtYXAsIGZyb20sIHRoaXMucmVsYXRpdmUocm9vdCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNBbm5vdGF0aW9uKCkge1xuICAgICAgICBpZiAoIHRoaXMuaXNJbmxpbmUoKSApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKCB0eXBlb2YgdGhpcy5tYXBPcHRzLmFubm90YXRpb24gIT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFwT3B0cy5hbm5vdGF0aW9uO1xuICAgICAgICB9IGVsc2UgaWYgKCB0aGlzLnByZXZpb3VzKCkubGVuZ3RoICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXMoKS5zb21lKCBpID0+IGkuYW5ub3RhdGlvbiApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b0Jhc2U2NChzdHIpIHtcbiAgICAgICAgaWYgKCBCdWZmZXIgKSB7XG4gICAgICAgICAgICBpZiAoIEJ1ZmZlci5mcm9tICYmIEJ1ZmZlci5mcm9tICE9PSBVaW50OEFycmF5LmZyb20gKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHN0cikudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJ1ZmZlcihzdHIpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB3aW5kb3cuYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoc3RyKSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWRkQW5ub3RhdGlvbigpIHtcbiAgICAgICAgbGV0IGNvbnRlbnQ7XG5cbiAgICAgICAgaWYgKCB0aGlzLmlzSW5saW5lKCkgKSB7XG5cbiAgICAgICAgICAgIGNvbnRlbnQgPSAnZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCwnICtcbiAgICAgICAgICAgICAgICB0aGlzLnRvQmFzZTY0KHRoaXMubWFwLnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoIHR5cGVvZiB0aGlzLm1hcE9wdHMuYW5ub3RhdGlvbiA9PT0gJ3N0cmluZycgKSB7XG4gICAgICAgICAgICBjb250ZW50ID0gdGhpcy5tYXBPcHRzLmFubm90YXRpb247XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRlbnQgPSB0aGlzLm91dHB1dEZpbGUoKSArICcubWFwJztcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBlb2wgICA9ICdcXG4nO1xuICAgICAgICBpZiAoIHRoaXMuY3NzLmluZGV4T2YoJ1xcclxcbicpICE9PSAtMSApIGVvbCA9ICdcXHJcXG4nO1xuXG4gICAgICAgIHRoaXMuY3NzICs9IGVvbCArICcvKiMgc291cmNlTWFwcGluZ1VSTD0nICsgY29udGVudCArICcgKi8nO1xuICAgIH1cblxuICAgIG91dHB1dEZpbGUoKSB7XG4gICAgICAgIGlmICggdGhpcy5vcHRzLnRvICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVsYXRpdmUodGhpcy5vcHRzLnRvKTtcbiAgICAgICAgfSBlbHNlIGlmICggdGhpcy5vcHRzLmZyb20gKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWxhdGl2ZSh0aGlzLm9wdHMuZnJvbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gJ3RvLmNzcyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZW5lcmF0ZU1hcCgpIHtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVN0cmluZygpO1xuICAgICAgICBpZiAoIHRoaXMuaXNTb3VyY2VzQ29udGVudCgpICkgICAgdGhpcy5zZXRTb3VyY2VzQ29udGVudCgpO1xuICAgICAgICBpZiAoIHRoaXMucHJldmlvdXMoKS5sZW5ndGggPiAwICkgdGhpcy5hcHBseVByZXZNYXBzKCk7XG4gICAgICAgIGlmICggdGhpcy5pc0Fubm90YXRpb24oKSApICAgICAgICB0aGlzLmFkZEFubm90YXRpb24oKTtcblxuICAgICAgICBpZiAoIHRoaXMuaXNJbmxpbmUoKSApIHtcbiAgICAgICAgICAgIHJldHVybiBbdGhpcy5jc3NdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFt0aGlzLmNzcywgdGhpcy5tYXBdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVsYXRpdmUoZmlsZSkge1xuICAgICAgICBpZiAoIGZpbGUuaW5kZXhPZignPCcpID09PSAwICkgcmV0dXJuIGZpbGU7XG4gICAgICAgIGlmICggL15cXHcrOlxcL1xcLy8udGVzdChmaWxlKSApIHJldHVybiBmaWxlO1xuXG4gICAgICAgIGxldCBmcm9tID0gdGhpcy5vcHRzLnRvID8gcGF0aC5kaXJuYW1lKHRoaXMub3B0cy50bykgOiAnLic7XG5cbiAgICAgICAgaWYgKCB0eXBlb2YgdGhpcy5tYXBPcHRzLmFubm90YXRpb24gPT09ICdzdHJpbmcnICkge1xuICAgICAgICAgICAgZnJvbSA9IHBhdGguZGlybmFtZSggcGF0aC5yZXNvbHZlKGZyb20sIHRoaXMubWFwT3B0cy5hbm5vdGF0aW9uKSApO1xuICAgICAgICB9XG5cbiAgICAgICAgZmlsZSA9IHBhdGgucmVsYXRpdmUoZnJvbSwgZmlsZSk7XG4gICAgICAgIGlmICggcGF0aC5zZXAgPT09ICdcXFxcJyApIHtcbiAgICAgICAgICAgIHJldHVybiBmaWxlLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmaWxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc291cmNlUGF0aChub2RlKSB7XG4gICAgICAgIGlmICggdGhpcy5tYXBPcHRzLmZyb20gKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXBPcHRzLmZyb207XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWxhdGl2ZShub2RlLnNvdXJjZS5pbnB1dC5mcm9tKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdlbmVyYXRlU3RyaW5nKCkge1xuICAgICAgICB0aGlzLmNzcyA9ICcnO1xuICAgICAgICB0aGlzLm1hcCA9IG5ldyBtb3ppbGxhLlNvdXJjZU1hcEdlbmVyYXRvcih7IGZpbGU6IHRoaXMub3V0cHV0RmlsZSgpIH0pO1xuXG4gICAgICAgIGxldCBsaW5lICAgPSAxO1xuICAgICAgICBsZXQgY29sdW1uID0gMTtcblxuICAgICAgICBsZXQgbGluZXMsIGxhc3Q7XG4gICAgICAgIHRoaXMuc3RyaW5naWZ5KHRoaXMucm9vdCwgKHN0ciwgbm9kZSwgdHlwZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jc3MgKz0gc3RyO1xuXG4gICAgICAgICAgICBpZiAoIG5vZGUgJiYgdHlwZSAhPT0gJ2VuZCcgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBub2RlLnNvdXJjZSAmJiBub2RlLnNvdXJjZS5zdGFydCApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAuYWRkTWFwcGluZyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICAgIHRoaXMuc291cmNlUGF0aChub2RlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZDogeyBsaW5lLCBjb2x1bW46IGNvbHVtbiAtIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsOiAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmU6ICAgbm9kZS5zb3VyY2Uuc3RhcnQubGluZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IG5vZGUuc291cmNlLnN0YXJ0LmNvbHVtbiAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAuYWRkTWFwcGluZyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICAgICc8bm8gc291cmNlPicsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbDogIHsgbGluZTogMSwgY29sdW1uOiAwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQ6IHsgbGluZSwgY29sdW1uOiBjb2x1bW4gLSAxIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsaW5lcyA9IHN0ci5tYXRjaCgvXFxuL2cpO1xuICAgICAgICAgICAgaWYgKCBsaW5lcyApIHtcbiAgICAgICAgICAgICAgICBsaW5lICArPSBsaW5lcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgbGFzdCAgID0gc3RyLmxhc3RJbmRleE9mKCdcXG4nKTtcbiAgICAgICAgICAgICAgICBjb2x1bW4gPSBzdHIubGVuZ3RoIC0gbGFzdDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29sdW1uICs9IHN0ci5sZW5ndGg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICggbm9kZSAmJiB0eXBlICE9PSAnc3RhcnQnICkge1xuICAgICAgICAgICAgICAgIGlmICggbm9kZS5zb3VyY2UgJiYgbm9kZS5zb3VyY2UuZW5kICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcC5hZGRNYXBwaW5nKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogICAgdGhpcy5zb3VyY2VQYXRoKG5vZGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkOiB7IGxpbmUsIGNvbHVtbjogY29sdW1uIC0gMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWw6ICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZTogICBub2RlLnNvdXJjZS5lbmQubGluZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IG5vZGUuc291cmNlLmVuZC5jb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAuYWRkTWFwcGluZyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICAgICc8bm8gc291cmNlPicsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbDogIHsgbGluZTogMSwgY29sdW1uOiAwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQ6IHsgbGluZSwgY29sdW1uOiBjb2x1bW4gLSAxIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZW5lcmF0ZSgpIHtcbiAgICAgICAgdGhpcy5jbGVhckFubm90YXRpb24oKTtcblxuICAgICAgICBpZiAoIHRoaXMuaXNNYXAoKSApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlTWFwKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgICAgICAgICB0aGlzLnN0cmluZ2lmeSh0aGlzLnJvb3QsIGkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gW3Jlc3VsdF07XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _warning = require('./warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Provides the result of the PostCSS transformations.\n *\n * A Result instance is returned by {@link LazyResult#then}\n * or {@link Root#toResult} methods.\n *\n * @example\n * postcss([cssnext]).process(css).then(function (result) {\n * console.log(result.css);\n * });\n *\n * @example\n * var result2 = postcss.parse(css).toResult();\n */\nvar Result = function () {\n\n /**\n * @param {Processor} processor - processor used for this transformation.\n * @param {Root} root - Root node after all transformations.\n * @param {processOptions} opts - options from the {@link Processor#process}\n * or {@link Root#toResult}\n */\n function Result(processor, root, opts) {\n _classCallCheck(this, Result);\n\n /**\n * @member {Processor} - The Processor instance used\n * for this transformation.\n *\n * @example\n * for ( let plugin of result.processor.plugins) {\n * if ( plugin.postcssPlugin === 'postcss-bad' ) {\n * throw 'postcss-good is incompatible with postcss-bad';\n * }\n * });\n */\n this.processor = processor;\n /**\n * @member {Message[]} - Contains messages from plugins\n * (e.g., warnings or custom messages).\n * Each message should have type\n * and plugin properties.\n *\n * @example\n * postcss.plugin('postcss-min-browser', () => {\n * return (root, result) => {\n * var browsers = detectMinBrowsersByCanIUse(root);\n * result.messages.push({\n * type: 'min-browser',\n * plugin: 'postcss-min-browser',\n * browsers: browsers\n * });\n * };\n * });\n */\n this.messages = [];\n /**\n * @member {Root} - Root node after all transformations.\n *\n * @example\n * root.toResult().root == root;\n */\n this.root = root;\n /**\n * @member {processOptions} - Options from the {@link Processor#process}\n * or {@link Root#toResult} call\n * that produced this Result instance.\n *\n * @example\n * root.toResult(opts).opts == opts;\n */\n this.opts = opts;\n /**\n * @member {string} - A CSS string representing of {@link Result#root}.\n *\n * @example\n * postcss.parse('a{}').toResult().css //=> \"a{}\"\n */\n this.css = undefined;\n /**\n * @member {SourceMapGenerator} - An instance of `SourceMapGenerator`\n * class from the `source-map` library,\n * representing changes\n * to the {@link Result#root} instance.\n *\n * @example\n * result.map.toJSON() //=> { version: 3, file: 'a.css', … }\n *\n * @example\n * if ( result.map ) {\n * fs.writeFileSync(result.opts.to + '.map', result.map.toString());\n * }\n */\n this.map = undefined;\n }\n\n /**\n * Returns for @{link Result#css} content.\n *\n * @example\n * result + '' === result.css\n *\n * @return {string} string representing of {@link Result#root}\n */\n\n\n Result.prototype.toString = function toString() {\n return this.css;\n };\n\n /**\n * Creates an instance of {@link Warning} and adds it\n * to {@link Result#messages}.\n *\n * @param {string} text - warning message\n * @param {Object} [opts] - warning options\n * @param {Node} opts.node - CSS node that caused the warning\n * @param {string} opts.word - word in CSS source that caused the warning\n * @param {number} opts.index - index in CSS node string that caused\n * the warning\n * @param {string} opts.plugin - name of the plugin that created\n * this warning. {@link Result#warn} fills\n * this property automatically.\n *\n * @return {Warning} created warning\n */\n\n\n Result.prototype.warn = function warn(text) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n\n var warning = new _warning2.default(text, opts);\n this.messages.push(warning);\n\n return warning;\n };\n\n /**\n * Returns warnings from plugins. Filters {@link Warning} instances\n * from {@link Result#messages}.\n *\n * @example\n * result.warnings().forEach(warn => {\n * console.warn(warn.toString());\n * });\n *\n * @return {Warning[]} warnings from plugins\n */\n\n\n Result.prototype.warnings = function warnings() {\n return this.messages.filter(function (i) {\n return i.type === 'warning';\n });\n };\n\n /**\n * An alias for the {@link Result#css} property.\n * Use it with syntaxes that generate non-CSS output.\n * @type {string}\n *\n * @example\n * result.css === result.content;\n */\n\n\n _createClass(Result, [{\n key: 'content',\n get: function get() {\n return this.css;\n }\n }]);\n\n return Result;\n}();\n\nexports.default = Result;\n\n/**\n * @typedef {object} Message\n * @property {string} type - message type\n * @property {string} plugin - source PostCSS plugin name\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlc3VsdC5lczYiXSwibmFtZXMiOlsiUmVzdWx0IiwicHJvY2Vzc29yIiwicm9vdCIsIm9wdHMiLCJtZXNzYWdlcyIsImNzcyIsInVuZGVmaW5lZCIsIm1hcCIsInRvU3RyaW5nIiwid2FybiIsInRleHQiLCJwbHVnaW4iLCJsYXN0UGx1Z2luIiwicG9zdGNzc1BsdWdpbiIsIndhcm5pbmciLCJXYXJuaW5nIiwicHVzaCIsIndhcm5pbmdzIiwiZmlsdGVyIiwiaSIsInR5cGUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7Ozs7OztBQUVBOzs7Ozs7Ozs7Ozs7OztJQWNNQSxNOztBQUVGOzs7Ozs7QUFNQSxrQkFBWUMsU0FBWixFQUF1QkMsSUFBdkIsRUFBNkJDLElBQTdCLEVBQW1DO0FBQUE7O0FBQy9COzs7Ozs7Ozs7OztBQVdBLFNBQUtGLFNBQUwsR0FBaUJBLFNBQWpCO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQSxTQUFLRyxRQUFMLEdBQWdCLEVBQWhCO0FBQ0E7Ozs7OztBQU1BLFNBQUtGLElBQUwsR0FBWUEsSUFBWjtBQUNBOzs7Ozs7OztBQVFBLFNBQUtDLElBQUwsR0FBWUEsSUFBWjtBQUNBOzs7Ozs7QUFNQSxTQUFLRSxHQUFMLEdBQVdDLFNBQVg7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUFjQSxTQUFLQyxHQUFMLEdBQVdELFNBQVg7QUFDSDs7QUFFRDs7Ozs7Ozs7OzttQkFRQUUsUSx1QkFBVztBQUNQLFdBQU8sS0FBS0gsR0FBWjtBQUNILEc7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQkFnQkFJLEksaUJBQUtDLEksRUFBa0I7QUFBQSxRQUFaUCxJQUFZLHVFQUFMLEVBQUs7O0FBQ25CLFFBQUssQ0FBQ0EsS0FBS1EsTUFBWCxFQUFvQjtBQUNoQixVQUFLLEtBQUtDLFVBQUwsSUFBbUIsS0FBS0EsVUFBTCxDQUFnQkMsYUFBeEMsRUFBd0Q7QUFDcERWLGFBQUtRLE1BQUwsR0FBYyxLQUFLQyxVQUFMLENBQWdCQyxhQUE5QjtBQUNIO0FBQ0o7O0FBRUQsUUFBSUMsVUFBVSxJQUFJQyxpQkFBSixDQUFZTCxJQUFaLEVBQWtCUCxJQUFsQixDQUFkO0FBQ0EsU0FBS0MsUUFBTCxDQUFjWSxJQUFkLENBQW1CRixPQUFuQjs7QUFFQSxXQUFPQSxPQUFQO0FBQ0gsRzs7QUFFRDs7Ozs7Ozs7Ozs7OzttQkFXQUcsUSx1QkFBVztBQUNQLFdBQU8sS0FBS2IsUUFBTCxDQUFjYyxNQUFkLENBQXNCO0FBQUEsYUFBS0MsRUFBRUMsSUFBRixLQUFXLFNBQWhCO0FBQUEsS0FBdEIsQ0FBUDtBQUNILEc7O0FBRUQ7Ozs7Ozs7Ozs7Ozt3QkFRYztBQUNWLGFBQU8sS0FBS2YsR0FBWjtBQUNIOzs7Ozs7a0JBSVVMLE07O0FBRWYiLCJmaWxlIjoicmVzdWx0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFdhcm5pbmcgZnJvbSAnLi93YXJuaW5nJztcblxuLyoqXG4gKiBQcm92aWRlcyB0aGUgcmVzdWx0IG9mIHRoZSBQb3N0Q1NTIHRyYW5zZm9ybWF0aW9ucy5cbiAqXG4gKiBBIFJlc3VsdCBpbnN0YW5jZSBpcyByZXR1cm5lZCBieSB7QGxpbmsgTGF6eVJlc3VsdCN0aGVufVxuICogb3Ige0BsaW5rIFJvb3QjdG9SZXN1bHR9IG1ldGhvZHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MoW2Nzc25leHRdKS5wcm9jZXNzKGNzcykudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gKiAgICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKTtcbiAqIH0pO1xuICpcbiAqIEBleGFtcGxlXG4gKiB2YXIgcmVzdWx0MiA9IHBvc3Rjc3MucGFyc2UoY3NzKS50b1Jlc3VsdCgpO1xuICovXG5jbGFzcyBSZXN1bHQge1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtQcm9jZXNzb3J9IHByb2Nlc3NvciAtIHByb2Nlc3NvciB1c2VkIGZvciB0aGlzIHRyYW5zZm9ybWF0aW9uLlxuICAgICAqIEBwYXJhbSB7Um9vdH0gICAgICByb290ICAgICAgLSBSb290IG5vZGUgYWZ0ZXIgYWxsIHRyYW5zZm9ybWF0aW9ucy5cbiAgICAgKiBAcGFyYW0ge3Byb2Nlc3NPcHRpb25zfSBvcHRzIC0gb3B0aW9ucyBmcm9tIHRoZSB7QGxpbmsgUHJvY2Vzc29yI3Byb2Nlc3N9XG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHtAbGluayBSb290I3RvUmVzdWx0fVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByb2Nlc3Nvciwgcm9vdCwgb3B0cykge1xuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7UHJvY2Vzc29yfSAtIFRoZSBQcm9jZXNzb3IgaW5zdGFuY2UgdXNlZFxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgdHJhbnNmb3JtYXRpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqIGZvciAoIGxldCBwbHVnaW4gb2YgcmVzdWx0LnByb2Nlc3Nvci5wbHVnaW5zKSB7XG4gICAgICAgICAqICAgaWYgKCBwbHVnaW4ucG9zdGNzc1BsdWdpbiA9PT0gJ3Bvc3Rjc3MtYmFkJyApIHtcbiAgICAgICAgICogICAgIHRocm93ICdwb3N0Y3NzLWdvb2QgaXMgaW5jb21wYXRpYmxlIHdpdGggcG9zdGNzcy1iYWQnO1xuICAgICAgICAgKiAgIH1cbiAgICAgICAgICogfSk7XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnByb2Nlc3NvciA9IHByb2Nlc3NvcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge01lc3NhZ2VbXX0gLSBDb250YWlucyBtZXNzYWdlcyBmcm9tIHBsdWdpbnNcbiAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgIChlLmcuLCB3YXJuaW5ncyBvciBjdXN0b20gbWVzc2FnZXMpLlxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgRWFjaCBtZXNzYWdlIHNob3VsZCBoYXZlIHR5cGVcbiAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgIGFuZCBwbHVnaW4gcHJvcGVydGllcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogcG9zdGNzcy5wbHVnaW4oJ3Bvc3Rjc3MtbWluLWJyb3dzZXInLCAoKSA9PiB7XG4gICAgICAgICAqICAgcmV0dXJuIChyb290LCByZXN1bHQpID0+IHtcbiAgICAgICAgICogICAgIHZhciBicm93c2VycyA9IGRldGVjdE1pbkJyb3dzZXJzQnlDYW5JVXNlKHJvb3QpO1xuICAgICAgICAgKiAgICAgcmVzdWx0Lm1lc3NhZ2VzLnB1c2goe1xuICAgICAgICAgKiAgICAgICB0eXBlOiAgICAnbWluLWJyb3dzZXInLFxuICAgICAgICAgKiAgICAgICBwbHVnaW46ICAncG9zdGNzcy1taW4tYnJvd3NlcicsXG4gICAgICAgICAqICAgICAgIGJyb3dzZXJzOiBicm93c2Vyc1xuICAgICAgICAgKiAgICAgfSk7XG4gICAgICAgICAqICAgfTtcbiAgICAgICAgICogfSk7XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtSb290fSAtIFJvb3Qgbm9kZSBhZnRlciBhbGwgdHJhbnNmb3JtYXRpb25zLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKiByb290LnRvUmVzdWx0KCkucm9vdCA9PSByb290O1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5yb290ID0gcm9vdDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge3Byb2Nlc3NPcHRpb25zfSAtIE9wdGlvbnMgZnJvbSB0aGUge0BsaW5rIFByb2Nlc3NvciNwcm9jZXNzfVxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB7QGxpbmsgUm9vdCN0b1Jlc3VsdH0gY2FsbFxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHByb2R1Y2VkIHRoaXMgUmVzdWx0IGluc3RhbmNlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKiByb290LnRvUmVzdWx0KG9wdHMpLm9wdHMgPT0gb3B0cztcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub3B0cyA9IG9wdHM7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtzdHJpbmd9IC0gQSBDU1Mgc3RyaW5nIHJlcHJlc2VudGluZyBvZiB7QGxpbmsgUmVzdWx0I3Jvb3R9LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKiBwb3N0Y3NzLnBhcnNlKCdhe30nKS50b1Jlc3VsdCgpLmNzcyAvLz0+IFwiYXt9XCJcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuY3NzID0gdW5kZWZpbmVkO1xuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U291cmNlTWFwR2VuZXJhdG9yfSAtIEFuIGluc3RhbmNlIG9mIGBTb3VyY2VNYXBHZW5lcmF0b3JgXG4gICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBmcm9tIHRoZSBgc291cmNlLW1hcGAgbGlicmFyeSxcbiAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHJlc2VudGluZyBjaGFuZ2VzXG4gICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUge0BsaW5rIFJlc3VsdCNyb290fSBpbnN0YW5jZS5cbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogcmVzdWx0Lm1hcC50b0pTT04oKSAvLz0+IHsgdmVyc2lvbjogMywgZmlsZTogJ2EuY3NzJywg4oCmIH1cbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogaWYgKCByZXN1bHQubWFwICkge1xuICAgICAgICAgKiAgIGZzLndyaXRlRmlsZVN5bmMocmVzdWx0Lm9wdHMudG8gKyAnLm1hcCcsIHJlc3VsdC5tYXAudG9TdHJpbmcoKSk7XG4gICAgICAgICAqIH1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMubWFwID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZm9yIEB7bGluayBSZXN1bHQjY3NzfSBjb250ZW50LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiByZXN1bHQgKyAnJyA9PT0gcmVzdWx0LmNzc1xuICAgICAqXG4gICAgICogQHJldHVybiB7c3RyaW5nfSBzdHJpbmcgcmVwcmVzZW50aW5nIG9mIHtAbGluayBSZXN1bHQjcm9vdH1cbiAgICAgKi9cbiAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3NzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2Yge0BsaW5rIFdhcm5pbmd9IGFuZCBhZGRzIGl0XG4gICAgICogdG8ge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAgICAgICAgLSB3YXJuaW5nIG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdICAgICAgLSB3YXJuaW5nIG9wdGlvbnNcbiAgICAgKiBAcGFyYW0ge05vZGV9ICAgb3B0cy5ub2RlICAgLSBDU1Mgbm9kZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLndvcmQgICAtIHdvcmQgaW4gQ1NTIHNvdXJjZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZ1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRzLmluZGV4ICAtIGluZGV4IGluIENTUyBub2RlIHN0cmluZyB0aGF0IGNhdXNlZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB3YXJuaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMucGx1Z2luIC0gbmFtZSBvZiB0aGUgcGx1Z2luIHRoYXQgY3JlYXRlZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgd2FybmluZy4ge0BsaW5rIFJlc3VsdCN3YXJufSBmaWxsc1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcHJvcGVydHkgYXV0b21hdGljYWxseS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1dhcm5pbmd9IGNyZWF0ZWQgd2FybmluZ1xuICAgICAqL1xuICAgIHdhcm4odGV4dCwgb3B0cyA9IHsgfSkge1xuICAgICAgICBpZiAoICFvcHRzLnBsdWdpbiApIHtcbiAgICAgICAgICAgIGlmICggdGhpcy5sYXN0UGx1Z2luICYmIHRoaXMubGFzdFBsdWdpbi5wb3N0Y3NzUGx1Z2luICkge1xuICAgICAgICAgICAgICAgIG9wdHMucGx1Z2luID0gdGhpcy5sYXN0UGx1Z2luLnBvc3Rjc3NQbHVnaW47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgd2FybmluZyA9IG5ldyBXYXJuaW5nKHRleHQsIG9wdHMpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2god2FybmluZyk7XG5cbiAgICAgICAgcmV0dXJuIHdhcm5pbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB3YXJuaW5ncyBmcm9tIHBsdWdpbnMuIEZpbHRlcnMge0BsaW5rIFdhcm5pbmd9IGluc3RhbmNlc1xuICAgICAqIGZyb20ge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHJlc3VsdC53YXJuaW5ncygpLmZvckVhY2god2FybiA9PiB7XG4gICAgICogICBjb25zb2xlLndhcm4od2Fybi50b1N0cmluZygpKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1dhcm5pbmdbXX0gd2FybmluZ3MgZnJvbSBwbHVnaW5zXG4gICAgICovXG4gICAgd2FybmluZ3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VzLmZpbHRlciggaSA9PiBpLnR5cGUgPT09ICd3YXJuaW5nJyApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFuIGFsaWFzIGZvciB0aGUge0BsaW5rIFJlc3VsdCNjc3N9IHByb3BlcnR5LlxuICAgICAqIFVzZSBpdCB3aXRoIHN5bnRheGVzIHRoYXQgZ2VuZXJhdGUgbm9uLUNTUyBvdXRwdXQuXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcmVzdWx0LmNzcyA9PT0gcmVzdWx0LmNvbnRlbnQ7XG4gICAgICovXG4gICAgZ2V0IGNvbnRlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNzcztcbiAgICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVzdWx0O1xuXG4vKipcbiAqIEB0eXBlZGVmICB7b2JqZWN0fSBNZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZSAgIC0gbWVzc2FnZSB0eXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcGx1Z2luIC0gc291cmNlIFBvc3RDU1MgcGx1Z2luIG5hbWVcbiAqL1xuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Represents a plugin’s warning. It can be created using {@link Node#warn}.\n *\n * @example\n * if ( decl.important ) {\n * decl.warn(result, 'Avoid !important', { word: '!important' });\n * }\n */\nvar Warning = function () {\n\n /**\n * @param {string} text - warning message\n * @param {Object} [opts] - warning options\n * @param {Node} opts.node - CSS node that caused the warning\n * @param {string} opts.word - word in CSS source that caused the warning\n * @param {number} opts.index - index in CSS node string that caused\n * the warning\n * @param {string} opts.plugin - name of the plugin that created\n * this warning. {@link Result#warn} fills\n * this property automatically.\n */\n function Warning(text) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Warning);\n\n /**\n * @member {string} - Type to filter warnings from\n * {@link Result#messages}. Always equal\n * to `\"warning\"`.\n *\n * @example\n * const nonWarning = result.messages.filter(i => i.type !== 'warning')\n */\n this.type = 'warning';\n /**\n * @member {string} - The warning message.\n *\n * @example\n * warning.text //=> 'Try to avoid !important'\n */\n this.text = text;\n\n if (opts.node && opts.node.source) {\n var pos = opts.node.positionBy(opts);\n /**\n * @member {number} - Line in the input file\n * with this warning’s source\n *\n * @example\n * warning.line //=> 5\n */\n this.line = pos.line;\n /**\n * @member {number} - Column in the input file\n * with this warning’s source.\n *\n * @example\n * warning.column //=> 6\n */\n this.column = pos.column;\n }\n\n for (var opt in opts) {\n this[opt] = opts[opt];\n }\n }\n\n /**\n * Returns a warning position and message.\n *\n * @example\n * warning.toString() //=> 'postcss-lint:a.css:10:14: Avoid !important'\n *\n * @return {string} warning position and message\n */\n\n\n Warning.prototype.toString = function toString() {\n if (this.node) {\n return this.node.error(this.text, {\n plugin: this.plugin,\n index: this.index,\n word: this.word\n }).message;\n } else if (this.plugin) {\n return this.plugin + ': ' + this.text;\n } else {\n return this.text;\n }\n };\n\n /**\n * @memberof Warning#\n * @member {string} plugin - The name of the plugin that created\n * it will fill this property automatically.\n * this warning. When you call {@link Node#warn}\n *\n * @example\n * warning.plugin //=> 'postcss-important'\n */\n\n /**\n * @memberof Warning#\n * @member {Node} node - Contains the CSS node that caused the warning.\n *\n * @example\n * warning.node.toString() //=> 'color: white !important'\n */\n\n return Warning;\n}();\n\nexports.default = Warning;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndhcm5pbmcuZXM2Il0sIm5hbWVzIjpbIldhcm5pbmciLCJ0ZXh0Iiwib3B0cyIsInR5cGUiLCJub2RlIiwic291cmNlIiwicG9zIiwicG9zaXRpb25CeSIsImxpbmUiLCJjb2x1bW4iLCJvcHQiLCJ0b1N0cmluZyIsImVycm9yIiwicGx1Z2luIiwiaW5kZXgiLCJ3b3JkIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7Ozs7O0lBUU1BLE87O0FBRUY7Ozs7Ozs7Ozs7O0FBV0EsbUJBQVlDLElBQVosRUFBOEI7QUFBQSxRQUFaQyxJQUFZLHVFQUFMLEVBQUs7O0FBQUE7O0FBQzFCOzs7Ozs7OztBQVFBLFNBQUtDLElBQUwsR0FBWSxTQUFaO0FBQ0E7Ozs7OztBQU1BLFNBQUtGLElBQUwsR0FBWUEsSUFBWjs7QUFFQSxRQUFLQyxLQUFLRSxJQUFMLElBQWFGLEtBQUtFLElBQUwsQ0FBVUMsTUFBNUIsRUFBcUM7QUFDakMsVUFBSUMsTUFBVUosS0FBS0UsSUFBTCxDQUFVRyxVQUFWLENBQXFCTCxJQUFyQixDQUFkO0FBQ0E7Ozs7Ozs7QUFPQSxXQUFLTSxJQUFMLEdBQWNGLElBQUlFLElBQWxCO0FBQ0E7Ozs7Ozs7QUFPQSxXQUFLQyxNQUFMLEdBQWNILElBQUlHLE1BQWxCO0FBQ0g7O0FBRUQsU0FBTSxJQUFJQyxHQUFWLElBQWlCUixJQUFqQjtBQUF3QixXQUFLUSxHQUFMLElBQVlSLEtBQUtRLEdBQUwsQ0FBWjtBQUF4QjtBQUNIOztBQUVEOzs7Ozs7Ozs7O29CQVFBQyxRLHVCQUFXO0FBQ1AsUUFBSyxLQUFLUCxJQUFWLEVBQWlCO0FBQ2IsYUFBTyxLQUFLQSxJQUFMLENBQVVRLEtBQVYsQ0FBZ0IsS0FBS1gsSUFBckIsRUFBMkI7QUFDOUJZLGdCQUFRLEtBQUtBLE1BRGlCO0FBRTlCQyxlQUFRLEtBQUtBLEtBRmlCO0FBRzlCQyxjQUFRLEtBQUtBO0FBSGlCLE9BQTNCLEVBSUpDLE9BSkg7QUFLSCxLQU5ELE1BTU8sSUFBSyxLQUFLSCxNQUFWLEVBQW1CO0FBQ3RCLGFBQU8sS0FBS0EsTUFBTCxHQUFjLElBQWQsR0FBcUIsS0FBS1osSUFBakM7QUFDSCxLQUZNLE1BRUE7QUFDSCxhQUFPLEtBQUtBLElBQVo7QUFDSDtBQUNKLEc7O0FBRUQ7Ozs7Ozs7Ozs7QUFVQTs7Ozs7Ozs7Ozs7a0JBVVdELE8iLCJmaWxlIjoid2FybmluZy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVwcmVzZW50cyBhIHBsdWdpbuKAmXMgd2FybmluZy4gSXQgY2FuIGJlIGNyZWF0ZWQgdXNpbmcge0BsaW5rIE5vZGUjd2Fybn0uXG4gKlxuICogQGV4YW1wbGVcbiAqIGlmICggZGVjbC5pbXBvcnRhbnQgKSB7XG4gKiAgICAgZGVjbC53YXJuKHJlc3VsdCwgJ0F2b2lkICFpbXBvcnRhbnQnLCB7IHdvcmQ6ICchaW1wb3J0YW50JyB9KTtcbiAqIH1cbiAqL1xuY2xhc3MgV2FybmluZyB7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAgICAgICAgLSB3YXJuaW5nIG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdICAgICAgLSB3YXJuaW5nIG9wdGlvbnNcbiAgICAgKiBAcGFyYW0ge05vZGV9ICAgb3B0cy5ub2RlICAgLSBDU1Mgbm9kZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLndvcmQgICAtIHdvcmQgaW4gQ1NTIHNvdXJjZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZ1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRzLmluZGV4ICAtIGluZGV4IGluIENTUyBub2RlIHN0cmluZyB0aGF0IGNhdXNlZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB3YXJuaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMucGx1Z2luIC0gbmFtZSBvZiB0aGUgcGx1Z2luIHRoYXQgY3JlYXRlZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgd2FybmluZy4ge0BsaW5rIFJlc3VsdCN3YXJufSBmaWxsc1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcHJvcGVydHkgYXV0b21hdGljYWxseS5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcih0ZXh0LCBvcHRzID0geyB9KSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtzdHJpbmd9IC0gVHlwZSB0byBmaWx0ZXIgd2FybmluZ3MgZnJvbVxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30uIEFsd2F5cyBlcXVhbFxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgdG8gYFwid2FybmluZ1wiYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogY29uc3Qgbm9uV2FybmluZyA9IHJlc3VsdC5tZXNzYWdlcy5maWx0ZXIoaSA9PiBpLnR5cGUgIT09ICd3YXJuaW5nJylcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMudHlwZSA9ICd3YXJuaW5nJztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge3N0cmluZ30gLSBUaGUgd2FybmluZyBtZXNzYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKiB3YXJuaW5nLnRleHQgLy89PiAnVHJ5IHRvIGF2b2lkICFpbXBvcnRhbnQnXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnRleHQgPSB0ZXh0O1xuXG4gICAgICAgIGlmICggb3B0cy5ub2RlICYmIG9wdHMubm9kZS5zb3VyY2UgKSB7XG4gICAgICAgICAgICBsZXQgcG9zICAgICA9IG9wdHMubm9kZS5wb3NpdGlvbkJ5KG9wdHMpO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAbWVtYmVyIHtudW1iZXJ9IC0gTGluZSBpbiB0aGUgaW5wdXQgZmlsZVxuICAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgIHdpdGggdGhpcyB3YXJuaW5n4oCZcyBzb3VyY2VcbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgICAgICogd2FybmluZy5saW5lIC8vPT4gNVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLmxpbmUgICA9IHBvcy5saW5lO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAbWVtYmVyIHtudW1iZXJ9IC0gQ29sdW1uIGluIHRoZSBpbnB1dCBmaWxlXG4gICAgICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGlzIHdhcm5pbmfigJlzIHNvdXJjZS5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgICAgICogd2FybmluZy5jb2x1bW4gLy89PiA2XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuY29sdW1uID0gcG9zLmNvbHVtbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoIGxldCBvcHQgaW4gb3B0cyApIHRoaXNbb3B0XSA9IG9wdHNbb3B0XTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgd2FybmluZyBwb3NpdGlvbiBhbmQgbWVzc2FnZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogd2FybmluZy50b1N0cmluZygpIC8vPT4gJ3Bvc3Rjc3MtbGludDphLmNzczoxMDoxNDogQXZvaWQgIWltcG9ydGFudCdcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gd2FybmluZyBwb3NpdGlvbiBhbmQgbWVzc2FnZVxuICAgICAqL1xuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICBpZiAoIHRoaXMubm9kZSApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5vZGUuZXJyb3IodGhpcy50ZXh0LCB7XG4gICAgICAgICAgICAgICAgcGx1Z2luOiB0aGlzLnBsdWdpbixcbiAgICAgICAgICAgICAgICBpbmRleDogIHRoaXMuaW5kZXgsXG4gICAgICAgICAgICAgICAgd29yZDogICB0aGlzLndvcmRcbiAgICAgICAgICAgIH0pLm1lc3NhZ2U7XG4gICAgICAgIH0gZWxzZSBpZiAoIHRoaXMucGx1Z2luICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGx1Z2luICsgJzogJyArIHRoaXMudGV4dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAbWVtYmVyb2YgV2FybmluZyNcbiAgICAgKiBAbWVtYmVyIHtzdHJpbmd9IHBsdWdpbiAtIFRoZSBuYW1lIG9mIHRoZSBwbHVnaW4gdGhhdCBjcmVhdGVkXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBpdCB3aWxsIGZpbGwgdGhpcyBwcm9wZXJ0eSBhdXRvbWF0aWNhbGx5LlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyB3YXJuaW5nLiBXaGVuIHlvdSBjYWxsIHtAbGluayBOb2RlI3dhcm59XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHdhcm5pbmcucGx1Z2luIC8vPT4gJ3Bvc3Rjc3MtaW1wb3J0YW50J1xuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIFdhcm5pbmcjXG4gICAgICogQG1lbWJlciB7Tm9kZX0gbm9kZSAtIENvbnRhaW5zIHRoZSBDU1Mgbm9kZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogd2FybmluZy5ub2RlLnRvU3RyaW5nKCkgLy89PiAnY29sb3I6IHdoaXRlICFpbXBvcnRhbnQnXG4gICAgICovXG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgV2FybmluZztcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _declaration = require('./declaration');\n\nvar _declaration2 = _interopRequireDefault(_declaration);\n\nvar _tokenize = require('./tokenize');\n\nvar _tokenize2 = _interopRequireDefault(_tokenize);\n\nvar _comment = require('./comment');\n\nvar _comment2 = _interopRequireDefault(_comment);\n\nvar _atRule = require('./at-rule');\n\nvar _atRule2 = _interopRequireDefault(_atRule);\n\nvar _root = require('./root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _rule = require('./rule');\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Parser = function () {\n function Parser(input) {\n _classCallCheck(this, Parser);\n\n this.input = input;\n\n this.root = new _root2.default();\n this.current = this.root;\n this.spaces = '';\n this.semicolon = false;\n\n this.createTokenizer();\n this.root.source = { input: input, start: { line: 1, column: 1 } };\n }\n\n Parser.prototype.createTokenizer = function createTokenizer() {\n this.tokenizer = (0, _tokenize2.default)(this.input);\n };\n\n Parser.prototype.parse = function parse() {\n var token = void 0;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n\n switch (token[0]) {\n\n case 'space':\n this.spaces += token[1];\n break;\n\n case ';':\n this.freeSemicolon(token);\n break;\n\n case '}':\n this.end(token);\n break;\n\n case 'comment':\n this.comment(token);\n break;\n\n case 'at-word':\n this.atrule(token);\n break;\n\n case '{':\n this.emptyRule(token);\n break;\n\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n };\n\n Parser.prototype.comment = function comment(token) {\n var node = new _comment2.default();\n this.init(node, token[2], token[3]);\n node.source.end = { line: token[4], column: token[5] };\n\n var text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node.text = '';\n node.raws.left = text;\n node.raws.right = '';\n } else {\n var match = text.match(/^(\\s*)([^]*[^\\s])(\\s*)$/);\n node.text = match[2];\n node.raws.left = match[1];\n node.raws.right = match[3];\n }\n };\n\n Parser.prototype.emptyRule = function emptyRule(token) {\n var node = new _rule2.default();\n this.init(node, token[2], token[3]);\n node.selector = '';\n node.raws.between = '';\n this.current = node;\n };\n\n Parser.prototype.other = function other(start) {\n var end = false;\n var type = null;\n var colon = false;\n var bracket = null;\n var brackets = [];\n\n var tokens = [];\n var token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n\n if (type === '(' || type === '[') {\n if (!bracket) bracket = token;\n brackets.push(type === '(' ? ')' : ']');\n } else if (brackets.length === 0) {\n if (type === ';') {\n if (colon) {\n this.decl(tokens);\n return;\n } else {\n break;\n }\n } else if (type === '{') {\n this.rule(tokens);\n return;\n } else if (type === '}') {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === ':') {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n\n token = this.tokenizer.nextToken();\n }\n\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n\n if (end && colon) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== 'space' && token !== 'comment') break;\n this.tokenizer.back(tokens.pop());\n }\n this.decl(tokens);\n return;\n } else {\n this.unknownWord(tokens);\n }\n };\n\n Parser.prototype.rule = function rule(tokens) {\n tokens.pop();\n\n var node = new _rule2.default();\n this.init(node, tokens[0][2], tokens[0][3]);\n\n node.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node, 'selector', tokens);\n this.current = node;\n };\n\n Parser.prototype.decl = function decl(tokens) {\n var node = new _declaration2.default();\n this.init(node);\n\n var last = tokens[tokens.length - 1];\n if (last[0] === ';') {\n this.semicolon = true;\n tokens.pop();\n }\n if (last[4]) {\n node.source.end = { line: last[4], column: last[5] };\n } else {\n node.source.end = { line: last[2], column: last[3] };\n }\n\n while (tokens[0][0] !== 'word') {\n if (tokens.length === 1) this.unknownWord(tokens);\n node.raws.before += tokens.shift()[1];\n }\n node.source.start = { line: tokens[0][2], column: tokens[0][3] };\n\n node.prop = '';\n while (tokens.length) {\n var type = tokens[0][0];\n if (type === ':' || type === 'space' || type === 'comment') {\n break;\n }\n node.prop += tokens.shift()[1];\n }\n\n node.raws.between = '';\n\n var token = void 0;\n while (tokens.length) {\n token = tokens.shift();\n\n if (token[0] === ':') {\n node.raws.between += token[1];\n break;\n } else {\n node.raws.between += token[1];\n }\n }\n\n if (node.prop[0] === '_' || node.prop[0] === '*') {\n node.raws.before += node.prop[0];\n node.prop = node.prop.slice(1);\n }\n node.raws.between += this.spacesAndCommentsFromStart(tokens);\n this.precheckMissedSemicolon(tokens);\n\n for (var i = tokens.length - 1; i > 0; i--) {\n token = tokens[i];\n if (token[1].toLowerCase() === '!important') {\n node.important = true;\n var string = this.stringFrom(tokens, i);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== ' !important') node.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === 'important') {\n var cache = tokens.slice(0);\n var str = '';\n for (var j = i; j > 0; j--) {\n var _type = cache[j][0];\n if (str.trim().indexOf('!') === 0 && _type !== 'space') {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf('!') === 0) {\n node.important = true;\n node.raws.important = str;\n tokens = cache;\n }\n }\n\n if (token[0] !== 'space' && token[0] !== 'comment') {\n break;\n }\n }\n\n this.raw(node, 'value', tokens);\n\n if (node.value.indexOf(':') !== -1) this.checkMissedSemicolon(tokens);\n };\n\n Parser.prototype.atrule = function atrule(token) {\n var node = new _atRule2.default();\n node.name = token[1].slice(1);\n if (node.name === '') {\n this.unnamedAtrule(node, token);\n }\n this.init(node, token[2], token[3]);\n\n var prev = void 0;\n var shift = void 0;\n var last = false;\n var open = false;\n var params = [];\n\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n\n if (token[0] === ';') {\n node.source.end = { line: token[2], column: token[3] };\n this.semicolon = true;\n break;\n } else if (token[0] === '{') {\n open = true;\n break;\n } else if (token[0] === '}') {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === 'space') {\n prev = params[--shift];\n }\n if (prev) {\n node.source.end = { line: prev[4], column: prev[5] };\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n\n node.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node, 'params', params);\n if (last) {\n token = params[params.length - 1];\n node.source.end = { line: token[4], column: token[5] };\n this.spaces = node.raws.between;\n node.raws.between = '';\n }\n } else {\n node.raws.afterName = '';\n node.params = '';\n }\n\n if (open) {\n node.nodes = [];\n this.current = node;\n }\n };\n\n Parser.prototype.end = function end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n\n this.current.raws.after = (this.current.raws.after || '') + this.spaces;\n this.spaces = '';\n\n if (this.current.parent) {\n this.current.source.end = { line: token[2], column: token[3] };\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n };\n\n Parser.prototype.endFile = function endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || '') + this.spaces;\n };\n\n Parser.prototype.freeSemicolon = function freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n var prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = '';\n }\n }\n };\n\n // Helpers\n\n Parser.prototype.init = function init(node, line, column) {\n this.current.push(node);\n\n node.source = { start: { line: line, column: column }, input: this.input };\n node.raws.before = this.spaces;\n this.spaces = '';\n if (node.type !== 'comment') this.semicolon = false;\n };\n\n Parser.prototype.raw = function raw(node, prop, tokens) {\n var token = void 0,\n type = void 0;\n var length = tokens.length;\n var value = '';\n var clean = true;\n var next = void 0,\n prev = void 0;\n var pattern = /^([.|#])?([\\w])+/i;\n\n for (var i = 0; i < length; i += 1) {\n token = tokens[i];\n type = token[0];\n\n if (type === 'comment' && node.type === 'rule') {\n prev = tokens[i - 1];\n next = tokens[i + 1];\n\n if (prev[0] !== 'space' && next[0] !== 'space' && pattern.test(prev[1]) && pattern.test(next[1])) {\n value += token[1];\n } else {\n clean = false;\n }\n\n continue;\n }\n\n if (type === 'comment' || type === 'space' && i === length - 1) {\n clean = false;\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n var raw = tokens.reduce(function (all, i) {\n return all + i[1];\n }, '');\n node.raws[prop] = { value: value, raw: raw };\n }\n node[prop] = value;\n };\n\n Parser.prototype.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) {\n var lastTokenType = void 0;\n var spaces = '';\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== 'space' && lastTokenType !== 'comment') break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n\n Parser.prototype.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) {\n var next = void 0;\n var spaces = '';\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== 'space' && next !== 'comment') break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n };\n\n Parser.prototype.spacesFromEnd = function spacesFromEnd(tokens) {\n var lastTokenType = void 0;\n var spaces = '';\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== 'space') break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n\n Parser.prototype.stringFrom = function stringFrom(tokens, from) {\n var result = '';\n for (var i = from; i < tokens.length; i++) {\n result += tokens[i][1];\n }\n tokens.splice(from, tokens.length - from);\n return result;\n };\n\n Parser.prototype.colon = function colon(tokens) {\n var brackets = 0;\n var token = void 0,\n type = void 0,\n prev = void 0;\n for (var i = 0; i < tokens.length; i++) {\n token = tokens[i];\n type = token[0];\n\n if (type === '(') {\n brackets += 1;\n } else if (type === ')') {\n brackets -= 1;\n } else if (brackets === 0 && type === ':') {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === 'word' && prev[1] === 'progid') {\n continue;\n } else {\n return i;\n }\n }\n\n prev = token;\n }\n return false;\n };\n\n // Errors\n\n Parser.prototype.unclosedBracket = function unclosedBracket(bracket) {\n throw this.input.error('Unclosed bracket', bracket[2], bracket[3]);\n };\n\n Parser.prototype.unknownWord = function unknownWord(tokens) {\n throw this.input.error('Unknown word', tokens[0][2], tokens[0][3]);\n };\n\n Parser.prototype.unexpectedClose = function unexpectedClose(token) {\n throw this.input.error('Unexpected }', token[2], token[3]);\n };\n\n Parser.prototype.unclosedBlock = function unclosedBlock() {\n var pos = this.current.source.start;\n throw this.input.error('Unclosed block', pos.line, pos.column);\n };\n\n Parser.prototype.doubleColon = function doubleColon(token) {\n throw this.input.error('Double colon', token[2], token[3]);\n };\n\n Parser.prototype.unnamedAtrule = function unnamedAtrule(node, token) {\n throw this.input.error('At-rule without name', token[2], token[3]);\n };\n\n Parser.prototype.precheckMissedSemicolon = function precheckMissedSemicolon(tokens) {\n // Hook for Safe Parser\n tokens;\n };\n\n Parser.prototype.checkMissedSemicolon = function checkMissedSemicolon(tokens) {\n var colon = this.colon(tokens);\n if (colon === false) return;\n\n var founded = 0;\n var token = void 0;\n for (var j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== 'space') {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error('Missed semicolon', token[2], token[3]);\n };\n\n return Parser;\n}();\n\nexports.default = Parser;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci5lczYiXSwibmFtZXMiOlsiUGFyc2VyIiwiaW5wdXQiLCJyb290IiwiUm9vdCIsImN1cnJlbnQiLCJzcGFjZXMiLCJzZW1pY29sb24iLCJjcmVhdGVUb2tlbml6ZXIiLCJzb3VyY2UiLCJzdGFydCIsImxpbmUiLCJjb2x1bW4iLCJ0b2tlbml6ZXIiLCJwYXJzZSIsInRva2VuIiwiZW5kT2ZGaWxlIiwibmV4dFRva2VuIiwiZnJlZVNlbWljb2xvbiIsImVuZCIsImNvbW1lbnQiLCJhdHJ1bGUiLCJlbXB0eVJ1bGUiLCJvdGhlciIsImVuZEZpbGUiLCJub2RlIiwiQ29tbWVudCIsImluaXQiLCJ0ZXh0Iiwic2xpY2UiLCJ0ZXN0IiwicmF3cyIsImxlZnQiLCJyaWdodCIsIm1hdGNoIiwiUnVsZSIsInNlbGVjdG9yIiwiYmV0d2VlbiIsInR5cGUiLCJjb2xvbiIsImJyYWNrZXQiLCJicmFja2V0cyIsInRva2VucyIsInB1c2giLCJsZW5ndGgiLCJkZWNsIiwicnVsZSIsImJhY2siLCJwb3AiLCJ1bmNsb3NlZEJyYWNrZXQiLCJ1bmtub3duV29yZCIsInNwYWNlc0FuZENvbW1lbnRzRnJvbUVuZCIsInJhdyIsIkRlY2xhcmF0aW9uIiwibGFzdCIsImJlZm9yZSIsInNoaWZ0IiwicHJvcCIsInNwYWNlc0FuZENvbW1lbnRzRnJvbVN0YXJ0IiwicHJlY2hlY2tNaXNzZWRTZW1pY29sb24iLCJpIiwidG9Mb3dlckNhc2UiLCJpbXBvcnRhbnQiLCJzdHJpbmciLCJzdHJpbmdGcm9tIiwic3BhY2VzRnJvbUVuZCIsImNhY2hlIiwic3RyIiwiaiIsInRyaW0iLCJpbmRleE9mIiwidmFsdWUiLCJjaGVja01pc3NlZFNlbWljb2xvbiIsIkF0UnVsZSIsIm5hbWUiLCJ1bm5hbWVkQXRydWxlIiwicHJldiIsIm9wZW4iLCJwYXJhbXMiLCJhZnRlck5hbWUiLCJub2RlcyIsImFmdGVyIiwicGFyZW50IiwidW5leHBlY3RlZENsb3NlIiwidW5jbG9zZWRCbG9jayIsIm93blNlbWljb2xvbiIsImNsZWFuIiwibmV4dCIsInBhdHRlcm4iLCJyZWR1Y2UiLCJhbGwiLCJsYXN0VG9rZW5UeXBlIiwiZnJvbSIsInJlc3VsdCIsInNwbGljZSIsImRvdWJsZUNvbG9uIiwiZXJyb3IiLCJwb3MiLCJmb3VuZGVkIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7OztJQUVxQkEsTTtBQUVqQixvQkFBWUMsS0FBWixFQUFtQjtBQUFBOztBQUNmLGFBQUtBLEtBQUwsR0FBYUEsS0FBYjs7QUFFQSxhQUFLQyxJQUFMLEdBQWlCLElBQUlDLGNBQUosRUFBakI7QUFDQSxhQUFLQyxPQUFMLEdBQWlCLEtBQUtGLElBQXRCO0FBQ0EsYUFBS0csTUFBTCxHQUFpQixFQUFqQjtBQUNBLGFBQUtDLFNBQUwsR0FBaUIsS0FBakI7O0FBRUEsYUFBS0MsZUFBTDtBQUNBLGFBQUtMLElBQUwsQ0FBVU0sTUFBVixHQUFtQixFQUFFUCxZQUFGLEVBQVNRLE9BQU8sRUFBRUMsTUFBTSxDQUFSLEVBQVdDLFFBQVEsQ0FBbkIsRUFBaEIsRUFBbkI7QUFDSDs7cUJBRURKLGUsOEJBQWtCO0FBQ2QsYUFBS0ssU0FBTCxHQUFpQix3QkFBVSxLQUFLWCxLQUFmLENBQWpCO0FBQ0gsSzs7cUJBRURZLEssb0JBQVE7QUFDSixZQUFJQyxjQUFKO0FBQ0EsZUFBUSxDQUFDLEtBQUtGLFNBQUwsQ0FBZUcsU0FBZixFQUFULEVBQXNDO0FBQ2xDRCxvQkFBUSxLQUFLRixTQUFMLENBQWVJLFNBQWYsRUFBUjs7QUFFQSxvQkFBU0YsTUFBTSxDQUFOLENBQVQ7O0FBRUEscUJBQUssT0FBTDtBQUNJLHlCQUFLVCxNQUFMLElBQWVTLE1BQU0sQ0FBTixDQUFmO0FBQ0E7O0FBRUoscUJBQUssR0FBTDtBQUNJLHlCQUFLRyxhQUFMLENBQW1CSCxLQUFuQjtBQUNBOztBQUVKLHFCQUFLLEdBQUw7QUFDSSx5QkFBS0ksR0FBTCxDQUFTSixLQUFUO0FBQ0E7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QUFqQixFQUFxQ2pGLE1BQU0sQ0FBTixDQUFyQyxFQUErQ0EsTUFBTSxDQUFOLENBQS9DLENBQU47QUFDSCxLOzs7OztrQkFyZ0JnQmQsTSIsImZpbGUiOiJwYXJzZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVjbGFyYXRpb24gZnJvbSAnLi9kZWNsYXJhdGlvbic7XG5pbXBvcnQgdG9rZW5pemVyICAgZnJvbSAnLi90b2tlbml6ZSc7XG5pbXBvcnQgQ29tbWVudCAgICAgZnJvbSAnLi9jb21tZW50JztcbmltcG9ydCBBdFJ1bGUgICAgICBmcm9tICcuL2F0LXJ1bGUnO1xuaW1wb3J0IFJvb3QgICAgICAgIGZyb20gJy4vcm9vdCc7XG5pbXBvcnQgUnVsZSAgICAgICAgZnJvbSAnLi9ydWxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFyc2VyIHtcblxuICAgIGNvbnN0cnVjdG9yKGlucHV0KSB7XG4gICAgICAgIHRoaXMuaW5wdXQgPSBpbnB1dDtcblxuICAgICAgICB0aGlzLnJvb3QgICAgICA9IG5ldyBSb290KCk7XG4gICAgICAgIHRoaXMuY3VycmVudCAgID0gdGhpcy5yb290O1xuICAgICAgICB0aGlzLnNwYWNlcyAgICA9ICcnO1xuICAgICAgICB0aGlzLnNlbWljb2xvbiA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY3JlYXRlVG9rZW5pemVyKCk7XG4gICAgICAgIHRoaXMucm9vdC5zb3VyY2UgPSB7IGlucHV0LCBzdGFydDogeyBsaW5lOiAxLCBjb2x1bW46IDEgfSB9O1xuICAgIH1cblxuICAgIGNyZWF0ZVRva2VuaXplcigpIHtcbiAgICAgICAgdGhpcy50b2tlbml6ZXIgPSB0b2tlbml6ZXIodGhpcy5pbnB1dCk7XG4gICAgfVxuXG4gICAgcGFyc2UoKSB7XG4gICAgICAgIGxldCB0b2tlbjtcbiAgICAgICAgd2hpbGUgKCAhdGhpcy50b2tlbml6ZXIuZW5kT2ZGaWxlKCkgKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHRoaXMudG9rZW5pemVyLm5leHRUb2tlbigpO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKCB0b2tlblswXSApIHtcblxuICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgICAgIHRoaXMuc3BhY2VzICs9IHRva2VuWzFdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICc7JzpcbiAgICAgICAgICAgICAgICB0aGlzLmZyZWVTZW1pY29sb24odG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICd9JzpcbiAgICAgICAgICAgICAgICB0aGlzLmVuZCh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgICAgICAgIHRoaXMuY29tbWVudCh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2F0LXdvcmQnOlxuICAgICAgICAgICAgICAgIHRoaXMuYXRydWxlKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAneyc6XG4gICAgICAgICAgICAgICAgdGhpcy5lbXB0eVJ1bGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMub3RoZXIodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW5kRmlsZSgpO1xuICAgIH1cblxuICAgIGNvbW1lbnQodG9rZW4pIHtcbiAgICAgICAgbGV0IG5vZGUgPSBuZXcgQ29tbWVudCgpO1xuICAgICAgICB0aGlzLmluaXQobm9kZSwgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICAgICAgbm9kZS5zb3VyY2UuZW5kID0geyBsaW5lOiB0b2tlbls0XSwgY29sdW1uOiB0b2tlbls1XSB9O1xuXG4gICAgICAgIGxldCB0ZXh0ID0gdG9rZW5bMV0uc2xpY2UoMiwgLTIpO1xuICAgICAgICBpZiAoIC9eXFxzKiQvLnRlc3QodGV4dCkgKSB7XG4gICAgICAgICAgICBub2RlLnRleHQgICAgICAgPSAnJztcbiAgICAgICAgICAgIG5vZGUucmF3cy5sZWZ0ICA9IHRleHQ7XG4gICAgICAgICAgICBub2RlLnJhd3MucmlnaHQgPSAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBtYXRjaCA9IHRleHQubWF0Y2goL14oXFxzKikoW15dKlteXFxzXSkoXFxzKikkLyk7XG4gICAgICAgICAgICBub2RlLnRleHQgICAgICAgPSBtYXRjaFsyXTtcbiAgICAgICAgICAgIG5vZGUucmF3cy5sZWZ0ICA9IG1hdGNoWzFdO1xuICAgICAgICAgICAgbm9kZS5yYXdzLnJpZ2h0ID0gbWF0Y2hbM107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlbXB0eVJ1bGUodG9rZW4pIHtcbiAgICAgICAgbGV0IG5vZGUgPSBuZXcgUnVsZSgpO1xuICAgICAgICB0aGlzLmluaXQobm9kZSwgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICAgICAgbm9kZS5zZWxlY3RvciA9ICcnO1xuICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiA9ICcnO1xuICAgICAgICB0aGlzLmN1cnJlbnQgPSBub2RlO1xuICAgIH1cblxuICAgIG90aGVyKHN0YXJ0KSB7XG4gICAgICAgIGxldCBlbmQgICAgICA9IGZhbHNlO1xuICAgICAgICBsZXQgdHlwZSAgICAgPSBudWxsO1xuICAgICAgICBsZXQgY29sb24gICAgPSBmYWxzZTtcbiAgICAgICAgbGV0IGJyYWNrZXQgID0gbnVsbDtcbiAgICAgICAgbGV0IGJyYWNrZXRzID0gW107XG5cbiAgICAgICAgbGV0IHRva2VucyA9IFtdO1xuICAgICAgICBsZXQgdG9rZW4gPSBzdGFydDtcbiAgICAgICAgd2hpbGUgKCB0b2tlbiApIHtcbiAgICAgICAgICAgIHR5cGUgPSB0b2tlblswXTtcbiAgICAgICAgICAgIHRva2Vucy5wdXNoKHRva2VuKTtcblxuICAgICAgICAgICAgaWYgKCB0eXBlID09PSAnKCcgfHwgdHlwZSA9PT0gJ1snICkge1xuICAgICAgICAgICAgICAgIGlmICggIWJyYWNrZXQgKSBicmFja2V0ID0gdG9rZW47XG4gICAgICAgICAgICAgICAgYnJhY2tldHMucHVzaCh0eXBlID09PSAnKCcgPyAnKScgOiAnXScpO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBicmFja2V0cy5sZW5ndGggPT09IDAgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCB0eXBlID09PSAnOycgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICggY29sb24gKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlY2wodG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlID09PSAneycgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZSh0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlID09PSAnfScgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9rZW5pemVyLmJhY2sodG9rZW5zLnBvcCgpKTtcbiAgICAgICAgICAgICAgICAgICAgZW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlID09PSAnOicgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHR5cGUgPT09IGJyYWNrZXRzW2JyYWNrZXRzLmxlbmd0aCAtIDFdICkge1xuICAgICAgICAgICAgICAgIGJyYWNrZXRzLnBvcCgpO1xuICAgICAgICAgICAgICAgIGlmICggYnJhY2tldHMubGVuZ3RoID09PSAwICkgYnJhY2tldCA9IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRva2VuID0gdGhpcy50b2tlbml6ZXIubmV4dFRva2VuKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHRoaXMudG9rZW5pemVyLmVuZE9mRmlsZSgpICkgZW5kID0gdHJ1ZTtcbiAgICAgICAgaWYgKCBicmFja2V0cy5sZW5ndGggPiAwICkgdGhpcy51bmNsb3NlZEJyYWNrZXQoYnJhY2tldCk7XG5cbiAgICAgICAgaWYgKCBlbmQgJiYgY29sb24gKSB7XG4gICAgICAgICAgICB3aGlsZSAoIHRva2Vucy5sZW5ndGggKSB7XG4gICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdWzBdO1xuICAgICAgICAgICAgICAgIGlmICggdG9rZW4gIT09ICdzcGFjZScgJiYgdG9rZW4gIT09ICdjb21tZW50JyApIGJyZWFrO1xuICAgICAgICAgICAgICAgIHRoaXMudG9rZW5pemVyLmJhY2sodG9rZW5zLnBvcCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZGVjbCh0b2tlbnMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51bmtub3duV29yZCh0b2tlbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcnVsZSh0b2tlbnMpIHtcbiAgICAgICAgdG9rZW5zLnBvcCgpO1xuXG4gICAgICAgIGxldCBub2RlID0gbmV3IFJ1bGUoKTtcbiAgICAgICAgdGhpcy5pbml0KG5vZGUsIHRva2Vuc1swXVsyXSwgdG9rZW5zWzBdWzNdKTtcblxuICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiA9IHRoaXMuc3BhY2VzQW5kQ29tbWVudHNGcm9tRW5kKHRva2Vucyk7XG4gICAgICAgIHRoaXMucmF3KG5vZGUsICdzZWxlY3RvcicsIHRva2Vucyk7XG4gICAgICAgIHRoaXMuY3VycmVudCA9IG5vZGU7XG4gICAgfVxuXG4gICAgZGVjbCh0b2tlbnMpIHtcbiAgICAgICAgbGV0IG5vZGUgPSBuZXcgRGVjbGFyYXRpb24oKTtcbiAgICAgICAgdGhpcy5pbml0KG5vZGUpO1xuXG4gICAgICAgIGxldCBsYXN0ID0gdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKCBsYXN0WzBdID09PSAnOycgKSB7XG4gICAgICAgICAgICB0aGlzLnNlbWljb2xvbiA9IHRydWU7XG4gICAgICAgICAgICB0b2tlbnMucG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCBsYXN0WzRdICkge1xuICAgICAgICAgICAgbm9kZS5zb3VyY2UuZW5kID0geyBsaW5lOiBsYXN0WzRdLCBjb2x1bW46IGxhc3RbNV0gfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5vZGUuc291cmNlLmVuZCA9IHsgbGluZTogbGFzdFsyXSwgY29sdW1uOiBsYXN0WzNdIH07XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAoIHRva2Vuc1swXVswXSAhPT0gJ3dvcmQnICkge1xuICAgICAgICAgICAgaWYgKCB0b2tlbnMubGVuZ3RoID09PSAxICkgdGhpcy51bmtub3duV29yZCh0b2tlbnMpO1xuICAgICAgICAgICAgbm9kZS5yYXdzLmJlZm9yZSArPSB0b2tlbnMuc2hpZnQoKVsxXTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLnNvdXJjZS5zdGFydCA9IHsgbGluZTogdG9rZW5zWzBdWzJdLCBjb2x1bW46IHRva2Vuc1swXVszXSB9O1xuXG4gICAgICAgIG5vZGUucHJvcCA9ICcnO1xuICAgICAgICB3aGlsZSAoIHRva2Vucy5sZW5ndGggKSB7XG4gICAgICAgICAgICBsZXQgdHlwZSA9IHRva2Vuc1swXVswXTtcbiAgICAgICAgICAgIGlmICggdHlwZSA9PT0gJzonIHx8IHR5cGUgPT09ICdzcGFjZScgfHwgdHlwZSA9PT0gJ2NvbW1lbnQnICkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbm9kZS5wcm9wICs9IHRva2Vucy5zaGlmdCgpWzFdO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9kZS5yYXdzLmJldHdlZW4gPSAnJztcblxuICAgICAgICBsZXQgdG9rZW47XG4gICAgICAgIHdoaWxlICggdG9rZW5zLmxlbmd0aCApIHtcbiAgICAgICAgICAgIHRva2VuID0gdG9rZW5zLnNoaWZ0KCk7XG5cbiAgICAgICAgICAgIGlmICggdG9rZW5bMF0gPT09ICc6JyApIHtcbiAgICAgICAgICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiArPSB0b2tlblsxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZS5yYXdzLmJldHdlZW4gKz0gdG9rZW5bMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIG5vZGUucHJvcFswXSA9PT0gJ18nIHx8IG5vZGUucHJvcFswXSA9PT0gJyonICkge1xuICAgICAgICAgICAgbm9kZS5yYXdzLmJlZm9yZSArPSBub2RlLnByb3BbMF07XG4gICAgICAgICAgICBub2RlLnByb3AgPSBub2RlLnByb3Auc2xpY2UoMSk7XG4gICAgICAgIH1cbiAgICAgICAgbm9kZS5yYXdzLmJldHdlZW4gKz0gdGhpcy5zcGFjZXNBbmRDb21tZW50c0Zyb21TdGFydCh0b2tlbnMpO1xuICAgICAgICB0aGlzLnByZWNoZWNrTWlzc2VkU2VtaWNvbG9uKHRva2Vucyk7XG5cbiAgICAgICAgZm9yICggbGV0IGkgPSB0b2tlbnMubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSApIHtcbiAgICAgICAgICAgIHRva2VuID0gdG9rZW5zW2ldO1xuICAgICAgICAgICAgaWYgKCB0b2tlblsxXS50b0xvd2VyQ2FzZSgpID09PSAnIWltcG9ydGFudCcgKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5pbXBvcnRhbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGxldCBzdHJpbmcgPSB0aGlzLnN0cmluZ0Zyb20odG9rZW5zLCBpKTtcbiAgICAgICAgICAgICAgICBzdHJpbmcgPSB0aGlzLnNwYWNlc0Zyb21FbmQodG9rZW5zKSArIHN0cmluZztcbiAgICAgICAgICAgICAgICBpZiAoIHN0cmluZyAhPT0gJyAhaW1wb3J0YW50JyApIG5vZGUucmF3cy5pbXBvcnRhbnQgPSBzdHJpbmc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PT0gJ2ltcG9ydGFudCcpIHtcbiAgICAgICAgICAgICAgICBsZXQgY2FjaGUgPSB0b2tlbnMuc2xpY2UoMCk7XG4gICAgICAgICAgICAgICAgbGV0IHN0ciAgID0gJyc7XG4gICAgICAgICAgICAgICAgZm9yICggbGV0IGogPSBpOyBqID4gMDsgai0tICkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdHlwZSA9IGNhY2hlW2pdWzBdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIHN0ci50cmltKCkuaW5kZXhPZignIScpID09PSAwICYmIHR5cGUgIT09ICdzcGFjZScgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzdHIgPSBjYWNoZS5wb3AoKVsxXSArIHN0cjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCBzdHIudHJpbSgpLmluZGV4T2YoJyEnKSA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5pbXBvcnRhbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBub2RlLnJhd3MuaW1wb3J0YW50ID0gc3RyO1xuICAgICAgICAgICAgICAgICAgICB0b2tlbnMgPSBjYWNoZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICggdG9rZW5bMF0gIT09ICdzcGFjZScgJiYgdG9rZW5bMF0gIT09ICdjb21tZW50JyApIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmF3KG5vZGUsICd2YWx1ZScsIHRva2Vucyk7XG5cbiAgICAgICAgaWYgKCBub2RlLnZhbHVlLmluZGV4T2YoJzonKSAhPT0gLTEgKSB0aGlzLmNoZWNrTWlzc2VkU2VtaWNvbG9uKHRva2Vucyk7XG4gICAgfVxuXG4gICAgYXRydWxlKHRva2VuKSB7XG4gICAgICAgIGxldCBub2RlICA9IG5ldyBBdFJ1bGUoKTtcbiAgICAgICAgbm9kZS5uYW1lID0gdG9rZW5bMV0uc2xpY2UoMSk7XG4gICAgICAgIGlmICggbm9kZS5uYW1lID09PSAnJyApIHtcbiAgICAgICAgICAgIHRoaXMudW5uYW1lZEF0cnVsZShub2RlLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0KG5vZGUsIHRva2VuWzJdLCB0b2tlblszXSk7XG5cbiAgICAgICAgbGV0IHByZXY7XG4gICAgICAgIGxldCBzaGlmdDtcbiAgICAgICAgbGV0IGxhc3QgICA9IGZhbHNlO1xuICAgICAgICBsZXQgb3BlbiAgID0gZmFsc2U7XG4gICAgICAgIGxldCBwYXJhbXMgPSBbXTtcblxuICAgICAgICB3aGlsZSAoICF0aGlzLnRva2VuaXplci5lbmRPZkZpbGUoKSApIHtcbiAgICAgICAgICAgIHRva2VuID0gdGhpcy50b2tlbml6ZXIubmV4dFRva2VuKCk7XG5cbiAgICAgICAgICAgIGlmICggdG9rZW5bMF0gPT09ICc7JyApIHtcbiAgICAgICAgICAgICAgICBub2RlLnNvdXJjZS5lbmQgPSB7IGxpbmU6IHRva2VuWzJdLCBjb2x1bW46IHRva2VuWzNdIH07XG4gICAgICAgICAgICAgICAgdGhpcy5zZW1pY29sb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggdG9rZW5bMF0gPT09ICd7JyApIHtcbiAgICAgICAgICAgICAgICBvcGVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHRva2VuWzBdID09PSAnfScpIHtcbiAgICAgICAgICAgICAgICBpZiAoIHBhcmFtcy5sZW5ndGggPiAwICkge1xuICAgICAgICAgICAgICAgICAgICBzaGlmdCA9IHBhcmFtcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgICAgICBwcmV2ID0gcGFyYW1zW3NoaWZ0XTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBwcmV2ICYmIHByZXZbMF0gPT09ICdzcGFjZScgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2ID0gcGFyYW1zWy0tc2hpZnRdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICggcHJldiApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuc291cmNlLmVuZCA9IHsgbGluZTogcHJldls0XSwgY29sdW1uOiBwcmV2WzVdIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5lbmQodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMucHVzaCh0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICggdGhpcy50b2tlbml6ZXIuZW5kT2ZGaWxlKCkgKSB7XG4gICAgICAgICAgICAgICAgbGFzdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiA9IHRoaXMuc3BhY2VzQW5kQ29tbWVudHNGcm9tRW5kKHBhcmFtcyk7XG4gICAgICAgIGlmICggcGFyYW1zLmxlbmd0aCApIHtcbiAgICAgICAgICAgIG5vZGUucmF3cy5hZnRlck5hbWUgPSB0aGlzLnNwYWNlc0FuZENvbW1lbnRzRnJvbVN0YXJ0KHBhcmFtcyk7XG4gICAgICAgICAgICB0aGlzLnJhdyhub2RlLCAncGFyYW1zJywgcGFyYW1zKTtcbiAgICAgICAgICAgIGlmICggbGFzdCApIHtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IHBhcmFtc1twYXJhbXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgbm9kZS5zb3VyY2UuZW5kICAgPSB7IGxpbmU6IHRva2VuWzRdLCBjb2x1bW46IHRva2VuWzVdIH07XG4gICAgICAgICAgICAgICAgdGhpcy5zcGFjZXMgICAgICAgPSBub2RlLnJhd3MuYmV0d2VlbjtcbiAgICAgICAgICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbm9kZS5yYXdzLmFmdGVyTmFtZSA9ICcnO1xuICAgICAgICAgICAgbm9kZS5wYXJhbXMgICAgICAgICA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBvcGVuICkge1xuICAgICAgICAgICAgbm9kZS5ub2RlcyAgID0gW107XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZW5kKHRva2VuKSB7XG4gICAgICAgIGlmICggdGhpcy5jdXJyZW50Lm5vZGVzICYmIHRoaXMuY3VycmVudC5ub2Rlcy5sZW5ndGggKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQucmF3cy5zZW1pY29sb24gPSB0aGlzLnNlbWljb2xvbjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbWljb2xvbiA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY3VycmVudC5yYXdzLmFmdGVyID0gKHRoaXMuY3VycmVudC5yYXdzLmFmdGVyIHx8ICcnKSArIHRoaXMuc3BhY2VzO1xuICAgICAgICB0aGlzLnNwYWNlcyA9ICcnO1xuXG4gICAgICAgIGlmICggdGhpcy5jdXJyZW50LnBhcmVudCApIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudC5zb3VyY2UuZW5kID0geyBsaW5lOiB0b2tlblsyXSwgY29sdW1uOiB0b2tlblszXSB9O1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5jdXJyZW50LnBhcmVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudW5leHBlY3RlZENsb3NlKHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVuZEZpbGUoKSB7XG4gICAgICAgIGlmICggdGhpcy5jdXJyZW50LnBhcmVudCApIHRoaXMudW5jbG9zZWRCbG9jaygpO1xuICAgICAgICBpZiAoIHRoaXMuY3VycmVudC5ub2RlcyAmJiB0aGlzLmN1cnJlbnQubm9kZXMubGVuZ3RoICkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50LnJhd3Muc2VtaWNvbG9uID0gdGhpcy5zZW1pY29sb247XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50LnJhd3MuYWZ0ZXIgPSAodGhpcy5jdXJyZW50LnJhd3MuYWZ0ZXIgfHwgJycpICsgdGhpcy5zcGFjZXM7XG4gICAgfVxuXG4gICAgZnJlZVNlbWljb2xvbih0b2tlbikge1xuICAgICAgICB0aGlzLnNwYWNlcyArPSB0b2tlblsxXTtcbiAgICAgICAgaWYgKCB0aGlzLmN1cnJlbnQubm9kZXMgKSB7XG4gICAgICAgICAgICBsZXQgcHJldiA9IHRoaXMuY3VycmVudC5ub2Rlc1t0aGlzLmN1cnJlbnQubm9kZXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBpZiAoIHByZXYgJiYgcHJldi50eXBlID09PSAncnVsZScgJiYgIXByZXYucmF3cy5vd25TZW1pY29sb24gKSB7XG4gICAgICAgICAgICAgICAgcHJldi5yYXdzLm93blNlbWljb2xvbiA9IHRoaXMuc3BhY2VzO1xuICAgICAgICAgICAgICAgIHRoaXMuc3BhY2VzID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIZWxwZXJzXG5cbiAgICBpbml0KG5vZGUsIGxpbmUsIGNvbHVtbikge1xuICAgICAgICB0aGlzLmN1cnJlbnQucHVzaChub2RlKTtcblxuICAgICAgICBub2RlLnNvdXJjZSA9IHsgc3RhcnQ6IHsgbGluZSwgY29sdW1uIH0sIGlucHV0OiB0aGlzLmlucHV0IH07XG4gICAgICAgIG5vZGUucmF3cy5iZWZvcmUgPSB0aGlzLnNwYWNlcztcbiAgICAgICAgdGhpcy5zcGFjZXMgPSAnJztcbiAgICAgICAgaWYgKCBub2RlLnR5cGUgIT09ICdjb21tZW50JyApIHRoaXMuc2VtaWNvbG9uID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmF3KG5vZGUsIHByb3AsIHRva2Vucykge1xuICAgICAgICBsZXQgdG9rZW4sIHR5cGU7XG4gICAgICAgIGxldCBsZW5ndGggPSB0b2tlbnMubGVuZ3RoO1xuICAgICAgICBsZXQgdmFsdWUgID0gJyc7XG4gICAgICAgIGxldCBjbGVhbiAgPSB0cnVlO1xuICAgICAgICBsZXQgbmV4dCwgcHJldjtcbiAgICAgICAgY29uc3QgcGF0dGVybiA9IC9eKFsufCNdKT8oW1xcd10pKy9pO1xuXG4gICAgICAgIGZvciAoIGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxICkge1xuICAgICAgICAgICAgdG9rZW4gPSB0b2tlbnNbaV07XG4gICAgICAgICAgICB0eXBlICA9IHRva2VuWzBdO1xuXG4gICAgICAgICAgICBpZiAoIHR5cGUgPT09ICdjb21tZW50JyAmJiBub2RlLnR5cGUgPT09ICdydWxlJyApIHtcbiAgICAgICAgICAgICAgICBwcmV2ID0gdG9rZW5zW2kgLSAxXTtcbiAgICAgICAgICAgICAgICBuZXh0ID0gdG9rZW5zW2kgKyAxXTtcblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgcHJldlswXSAhPT0gJ3NwYWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICBuZXh0WzBdICE9PSAnc3BhY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHBhdHRlcm4udGVzdChwcmV2WzFdKSAmJlxuICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuLnRlc3QobmV4dFsxXSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgKz0gdG9rZW5bMV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCB0eXBlID09PSAnY29tbWVudCcgfHwgdHlwZSA9PT0gJ3NwYWNlJyAmJiBpID09PSBsZW5ndGggLSAxICkge1xuICAgICAgICAgICAgICAgIGNsZWFuID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlICs9IHRva2VuWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICggIWNsZWFuICkge1xuICAgICAgICAgICAgbGV0IHJhdyA9IHRva2Vucy5yZWR1Y2UoIChhbGwsIGkpID0+IGFsbCArIGlbMV0sICcnKTtcbiAgICAgICAgICAgIG5vZGUucmF3c1twcm9wXSA9IHsgdmFsdWUsIHJhdyB9O1xuICAgICAgICB9XG4gICAgICAgIG5vZGVbcHJvcF0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBzcGFjZXNBbmRDb21tZW50c0Zyb21FbmQodG9rZW5zKSB7XG4gICAgICAgIGxldCBsYXN0VG9rZW5UeXBlO1xuICAgICAgICBsZXQgc3BhY2VzID0gJyc7XG4gICAgICAgIHdoaWxlICggdG9rZW5zLmxlbmd0aCApIHtcbiAgICAgICAgICAgIGxhc3RUb2tlblR5cGUgPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdWzBdO1xuICAgICAgICAgICAgaWYgKCBsYXN0VG9rZW5UeXBlICE9PSAnc3BhY2UnICYmXG4gICAgICAgICAgICAgICAgbGFzdFRva2VuVHlwZSAhPT0gJ2NvbW1lbnQnICkgYnJlYWs7XG4gICAgICAgICAgICBzcGFjZXMgPSB0b2tlbnMucG9wKClbMV0gKyBzcGFjZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNwYWNlcztcbiAgICB9XG5cbiAgICBzcGFjZXNBbmRDb21tZW50c0Zyb21TdGFydCh0b2tlbnMpIHtcbiAgICAgICAgbGV0IG5leHQ7XG4gICAgICAgIGxldCBzcGFjZXMgPSAnJztcbiAgICAgICAgd2hpbGUgKCB0b2tlbnMubGVuZ3RoICkge1xuICAgICAgICAgICAgbmV4dCA9IHRva2Vuc1swXVswXTtcbiAgICAgICAgICAgIGlmICggbmV4dCAhPT0gJ3NwYWNlJyAmJiBuZXh0ICE9PSAnY29tbWVudCcgKSBicmVhaztcbiAgICAgICAgICAgIHNwYWNlcyArPSB0b2tlbnMuc2hpZnQoKVsxXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3BhY2VzO1xuICAgIH1cblxuICAgIHNwYWNlc0Zyb21FbmQodG9rZW5zKSB7XG4gICAgICAgIGxldCBsYXN0VG9rZW5UeXBlO1xuICAgICAgICBsZXQgc3BhY2VzID0gJyc7XG4gICAgICAgIHdoaWxlICggdG9rZW5zLmxlbmd0aCApIHtcbiAgICAgICAgICAgIGxhc3RUb2tlblR5cGUgPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdWzBdO1xuICAgICAgICAgICAgaWYgKCBsYXN0VG9rZW5UeXBlICE9PSAnc3BhY2UnICkgYnJlYWs7XG4gICAgICAgICAgICBzcGFjZXMgPSB0b2tlbnMucG9wKClbMV0gKyBzcGFjZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNwYWNlcztcbiAgICB9XG5cbiAgICBzdHJpbmdGcm9tKHRva2VucywgZnJvbSkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgICAgIGZvciAoIGxldCBpID0gZnJvbTsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSB0b2tlbnNbaV1bMV07XG4gICAgICAgIH1cbiAgICAgICAgdG9rZW5zLnNwbGljZShmcm9tLCB0b2tlbnMubGVuZ3RoIC0gZnJvbSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgY29sb24odG9rZW5zKSB7XG4gICAgICAgIGxldCBicmFja2V0cyA9IDA7XG4gICAgICAgIGxldCB0b2tlbiwgdHlwZSwgcHJldjtcbiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrICkge1xuICAgICAgICAgICAgdG9rZW4gPSB0b2tlbnNbaV07XG4gICAgICAgICAgICB0eXBlICA9IHRva2VuWzBdO1xuXG4gICAgICAgICAgICBpZiAoIHR5cGUgPT09ICcoJyApIHtcbiAgICAgICAgICAgICAgICBicmFja2V0cyArPSAxO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggdHlwZSA9PT0gJyknICkge1xuICAgICAgICAgICAgICAgIGJyYWNrZXRzIC09IDE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBicmFja2V0cyA9PT0gMCAmJiB0eXBlID09PSAnOicgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCAhcHJldiApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb3VibGVDb2xvbih0b2tlbik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICggcHJldlswXSA9PT0gJ3dvcmQnICYmIHByZXZbMV0gPT09ICdwcm9naWQnICkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByZXYgPSB0b2tlbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gRXJyb3JzXG5cbiAgICB1bmNsb3NlZEJyYWNrZXQoYnJhY2tldCkge1xuICAgICAgICB0aHJvdyB0aGlzLmlucHV0LmVycm9yKCdVbmNsb3NlZCBicmFja2V0JywgYnJhY2tldFsyXSwgYnJhY2tldFszXSk7XG4gICAgfVxuXG4gICAgdW5rbm93bldvcmQodG9rZW5zKSB7XG4gICAgICAgIHRocm93IHRoaXMuaW5wdXQuZXJyb3IoJ1Vua25vd24gd29yZCcsIHRva2Vuc1swXVsyXSwgdG9rZW5zWzBdWzNdKTtcbiAgICB9XG5cbiAgICB1bmV4cGVjdGVkQ2xvc2UodG9rZW4pIHtcbiAgICAgICAgdGhyb3cgdGhpcy5pbnB1dC5lcnJvcignVW5leHBlY3RlZCB9JywgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICB9XG5cbiAgICB1bmNsb3NlZEJsb2NrKCkge1xuICAgICAgICBsZXQgcG9zID0gdGhpcy5jdXJyZW50LnNvdXJjZS5zdGFydDtcbiAgICAgICAgdGhyb3cgdGhpcy5pbnB1dC5lcnJvcignVW5jbG9zZWQgYmxvY2snLCBwb3MubGluZSwgcG9zLmNvbHVtbik7XG4gICAgfVxuXG4gICAgZG91YmxlQ29sb24odG9rZW4pIHtcbiAgICAgICAgdGhyb3cgdGhpcy5pbnB1dC5lcnJvcignRG91YmxlIGNvbG9uJywgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICB9XG5cbiAgICB1bm5hbWVkQXRydWxlKG5vZGUsIHRva2VuKSB7XG4gICAgICAgIHRocm93IHRoaXMuaW5wdXQuZXJyb3IoJ0F0LXJ1bGUgd2l0aG91dCBuYW1lJywgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICB9XG5cbiAgICBwcmVjaGVja01pc3NlZFNlbWljb2xvbih0b2tlbnMpIHtcbiAgICAgICAgLy8gSG9vayBmb3IgU2FmZSBQYXJzZXJcbiAgICAgICAgdG9rZW5zO1xuICAgIH1cblxuICAgIGNoZWNrTWlzc2VkU2VtaWNvbG9uKHRva2Vucykge1xuICAgICAgICBsZXQgY29sb24gPSB0aGlzLmNvbG9uKHRva2Vucyk7XG4gICAgICAgIGlmICggY29sb24gPT09IGZhbHNlICkgcmV0dXJuO1xuXG4gICAgICAgIGxldCBmb3VuZGVkID0gMDtcbiAgICAgICAgbGV0IHRva2VuO1xuICAgICAgICBmb3IgKCBsZXQgaiA9IGNvbG9uIC0gMTsgaiA+PSAwOyBqLS0gKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHRva2Vuc1tqXTtcbiAgICAgICAgICAgIGlmICggdG9rZW5bMF0gIT09ICdzcGFjZScgKSB7XG4gICAgICAgICAgICAgICAgZm91bmRlZCArPSAxO1xuICAgICAgICAgICAgICAgIGlmICggZm91bmRlZCA9PT0gMiApIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IHRoaXMuaW5wdXQuZXJyb3IoJ01pc3NlZCBzZW1pY29sb24nLCB0b2tlblsyXSwgdG9rZW5bM10pO1xuICAgIH1cblxufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n/**\n * Contains helpers for working with vendor prefixes.\n *\n * @example\n * const vendor = postcss.vendor;\n *\n * @namespace vendor\n */\nvar vendor = {\n\n /**\n * Returns the vendor prefix extracted from an input string.\n *\n * @param {string} prop - string with or without vendor prefix\n *\n * @return {string} vendor prefix or empty string\n *\n * @example\n * postcss.vendor.prefix('-moz-tab-size') //=> '-moz-'\n * postcss.vendor.prefix('tab-size') //=> ''\n */\n prefix: function prefix(prop) {\n var match = prop.match(/^(-\\w+-)/);\n if (match) {\n return match[0];\n } else {\n return '';\n }\n },\n\n\n /**\n * Returns the input string stripped of its vendor prefix.\n *\n * @param {string} prop - string with or without vendor prefix\n *\n * @return {string} string name without vendor prefixes\n *\n * @example\n * postcss.vendor.unprefixed('-moz-tab-size') //=> 'tab-size'\n */\n unprefixed: function unprefixed(prop) {\n return prop.replace(/^-\\w+-/, '');\n }\n};\n\nexports.default = vendor;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlbmRvci5lczYiXSwibmFtZXMiOlsidmVuZG9yIiwicHJlZml4IiwicHJvcCIsIm1hdGNoIiwidW5wcmVmaXhlZCIsInJlcGxhY2UiXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7OztBQVFBLElBQUlBLFNBQVM7O0FBRVQ7Ozs7Ozs7Ozs7O0FBV0FDLFVBYlMsa0JBYUZDLElBYkUsRUFhSTtBQUNULFlBQUlDLFFBQVFELEtBQUtDLEtBQUwsQ0FBVyxVQUFYLENBQVo7QUFDQSxZQUFLQSxLQUFMLEVBQWE7QUFDVCxtQkFBT0EsTUFBTSxDQUFOLENBQVA7QUFDSCxTQUZELE1BRU87QUFDSCxtQkFBTyxFQUFQO0FBQ0g7QUFDSixLQXBCUTs7O0FBc0JUOzs7Ozs7Ozs7O0FBVUFDLGNBaENTLHNCQWdDRUYsSUFoQ0YsRUFnQ1E7QUFDYixlQUFPQSxLQUFLRyxPQUFMLENBQWEsUUFBYixFQUF1QixFQUF2QixDQUFQO0FBQ0g7QUFsQ1EsQ0FBYjs7a0JBc0NlTCxNIiwiZmlsZSI6InZlbmRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29udGFpbnMgaGVscGVycyBmb3Igd29ya2luZyB3aXRoIHZlbmRvciBwcmVmaXhlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgdmVuZG9yID0gcG9zdGNzcy52ZW5kb3I7XG4gKlxuICogQG5hbWVzcGFjZSB2ZW5kb3JcbiAqL1xubGV0IHZlbmRvciA9IHtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZlbmRvciBwcmVmaXggZXh0cmFjdGVkIGZyb20gYW4gaW5wdXQgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3AgLSBzdHJpbmcgd2l0aCBvciB3aXRob3V0IHZlbmRvciBwcmVmaXhcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gdmVuZG9yIHByZWZpeCBvciBlbXB0eSBzdHJpbmdcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcG9zdGNzcy52ZW5kb3IucHJlZml4KCctbW96LXRhYi1zaXplJykgLy89PiAnLW1vei0nXG4gICAgICogcG9zdGNzcy52ZW5kb3IucHJlZml4KCd0YWItc2l6ZScpICAgICAgLy89PiAnJ1xuICAgICAqL1xuICAgIHByZWZpeChwcm9wKSB7XG4gICAgICAgIGxldCBtYXRjaCA9IHByb3AubWF0Y2goL14oLVxcdystKS8pO1xuICAgICAgICBpZiAoIG1hdGNoICkge1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGlucHV0IHN0cmluZyBzdHJpcHBlZCBvZiBpdHMgdmVuZG9yIHByZWZpeC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wIC0gc3RyaW5nIHdpdGggb3Igd2l0aG91dCB2ZW5kb3IgcHJlZml4XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IHN0cmluZyBuYW1lIHdpdGhvdXQgdmVuZG9yIHByZWZpeGVzXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHBvc3Rjc3MudmVuZG9yLnVucHJlZml4ZWQoJy1tb3otdGFiLXNpemUnKSAvLz0+ICd0YWItc2l6ZSdcbiAgICAgKi9cbiAgICB1bnByZWZpeGVkKHByb3ApIHtcbiAgICAgICAgcmV0dXJuIHByb3AucmVwbGFjZSgvXi1cXHcrLS8sICcnKTtcbiAgICB9XG5cbn07XG5cbmV4cG9ydCBkZWZhdWx0IHZlbmRvcjtcbiJdfQ==\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nconst React = require(\"react\");\nconst sanitizeHtml = require(\"sanitize-html\");\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\n\nmodule.exports = React.createClass({\n displayName: 'VectorCustomServerDialog',\n statics: {\n replaces: 'CustomServerDialog',\n },\n\n render: function() {\n return (\n <div className=\"mx_ErrorDialog\">\n <div className=\"mx_Dialog_title\">\n { _t('Custom Server Options') }\n </div>\n <div className=\"mx_Dialog_content\">\n <span dangerouslySetInnerHTML={{__html: sanitizeHtml(_t(\n \"You can use the custom server options to sign into other Matrix \"+\n \"servers by specifying a different Home server URL.<br/>This allows \"+\n \"you to use Riot with an existing Matrix account on a different home \"+\n \"server.<br/><br/>You can also set a custom identity server but you won't \"+\n \"be able to invite users by email address, or be invited by email address yourself.\",\n ))}} />\n </div>\n <div className=\"mx_Dialog_buttons\">\n <button onClick={this.props.onFinished} autoFocus={true}>\n { _t('Dismiss') }\n </button>\n </div>\n </div>\n );\n },\n});\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nconst React = require('react');\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\nimport SettingsStore from 'matrix-react-sdk/lib/settings/SettingsStore';\n\nmodule.exports = React.createClass({\n displayName: 'VectorLoginFooter',\n statics: {\n replaces: 'LoginFooter',\n },\n\n render: function() {\n // FIXME: replace this with a proper Status skin\n // ...except then we wouldn't be able to switch to the Status theme at runtime.\n if (SettingsStore.getValue(\"theme\") === 'status') return <div />;\n\n return (\n <div className=\"mx_Login_links\">\n <a href=\"https://medium.com/@RiotChat\">blog</a>  ·  \n <a href=\"https://twitter.com/@RiotChat\">twitter</a>  ·  \n <a href=\"https://github.com/vector-im/riot-web\">github</a>  ·  \n <a href=\"https://matrix.org\">{ _t('powered by Matrix') }</a>\n </div>\n );\n },\n});\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst i = [1, 2, 3, 4, 5][Math.floor(Math.random() * 5)];\nconst DEFAULT_LOGO_URI = \"themes/riot/img/logos/riot-im-logo-\" + i + \".svg\";\n\nmodule.exports = React.createClass({\n displayName: 'VectorLoginHeader',\n statics: {\n replaces: 'LoginHeader',\n },\n propTypes: {\n icon: PropTypes.string,\n },\n\n render: function() {\n return (\n <div className=\"mx_Login_header\">\n <div className=\"mx_Login_logo\">\n <img src={this.props.icon || DEFAULT_LOGO_URI} alt=\"Riot\" />\n </div>\n </div>\n );\n },\n});\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.components = undefined;\n\nvar _BottomLeftMenu = require('./components/structures/BottomLeftMenu');\n\nvar _BottomLeftMenu2 = _interopRequireDefault(_BottomLeftMenu);\n\nvar _CompatibilityPage = require('./components/structures/CompatibilityPage');\n\nvar _CompatibilityPage2 = _interopRequireDefault(_CompatibilityPage);\n\nvar _ContextualMenu = require('./components/structures/ContextualMenu');\n\nvar _ContextualMenu2 = _interopRequireDefault(_ContextualMenu);\n\nvar _CreateRoom = require('./components/structures/CreateRoom');\n\nvar _CreateRoom2 = _interopRequireDefault(_CreateRoom);\n\nvar _FilePanel = require('./components/structures/FilePanel');\n\nvar _FilePanel2 = _interopRequireDefault(_FilePanel);\n\nvar _GroupView = require('./components/structures/GroupView');\n\nvar _GroupView2 = _interopRequireDefault(_GroupView);\n\nvar _HomePage = require('./components/structures/HomePage');\n\nvar _HomePage2 = _interopRequireDefault(_HomePage);\n\nvar _InteractiveAuth = require('./components/structures/InteractiveAuth');\n\nvar _InteractiveAuth2 = _interopRequireDefault(_InteractiveAuth);\n\nvar _LeftPanel = require('./components/structures/LeftPanel');\n\nvar _LeftPanel2 = _interopRequireDefault(_LeftPanel);\n\nvar _LoggedInView = require('./components/structures/LoggedInView');\n\nvar _LoggedInView2 = _interopRequireDefault(_LoggedInView);\n\nvar _LoginBox = require('./components/structures/LoginBox');\n\nvar _LoginBox2 = _interopRequireDefault(_LoginBox);\n\nvar _MatrixChat = require('./components/structures/MatrixChat');\n\nvar _MatrixChat2 = _interopRequireDefault(_MatrixChat);\n\nvar _MessagePanel = require('./components/structures/MessagePanel');\n\nvar _MessagePanel2 = _interopRequireDefault(_MessagePanel);\n\nvar _MyGroups = require('./components/structures/MyGroups');\n\nvar _MyGroups2 = _interopRequireDefault(_MyGroups);\n\nvar _NotificationPanel = require('./components/structures/NotificationPanel');\n\nvar _NotificationPanel2 = _interopRequireDefault(_NotificationPanel);\n\nvar _RightPanel = require('./components/structures/RightPanel');\n\nvar _RightPanel2 = _interopRequireDefault(_RightPanel);\n\nvar _RoomDirectory = require('./components/structures/RoomDirectory');\n\nvar _RoomDirectory2 = _interopRequireDefault(_RoomDirectory);\n\nvar _RoomStatusBar = require('./components/structures/RoomStatusBar');\n\nvar _RoomStatusBar2 = _interopRequireDefault(_RoomStatusBar);\n\nvar _RoomSubList = require('./components/structures/RoomSubList');\n\nvar _RoomSubList2 = _interopRequireDefault(_RoomSubList);\n\nvar _RoomView = require('./components/structures/RoomView');\n\nvar _RoomView2 = _interopRequireDefault(_RoomView);\n\nvar _ScrollPanel = require('./components/structures/ScrollPanel');\n\nvar _ScrollPanel2 = _interopRequireDefault(_ScrollPanel);\n\nvar _SearchBox = require('./components/structures/SearchBox');\n\nvar _SearchBox2 = _interopRequireDefault(_SearchBox);\n\nvar _TagPanel = require('./components/structures/TagPanel');\n\nvar _TagPanel2 = _interopRequireDefault(_TagPanel);\n\nvar _TimelinePanel = require('./components/structures/TimelinePanel');\n\nvar _TimelinePanel2 = _interopRequireDefault(_TimelinePanel);\n\nvar _UploadBar = require('./components/structures/UploadBar');\n\nvar _UploadBar2 = _interopRequireDefault(_UploadBar);\n\nvar _UserSettings = require('./components/structures/UserSettings');\n\nvar _UserSettings2 = _interopRequireDefault(_UserSettings);\n\nvar _ViewSource = require('./components/structures/ViewSource');\n\nvar _ViewSource2 = _interopRequireDefault(_ViewSource);\n\nvar _ForgotPassword = require('./components/structures/login/ForgotPassword');\n\nvar _ForgotPassword2 = _interopRequireDefault(_ForgotPassword);\n\nvar _LanguageSelector = require('./components/structures/login/LanguageSelector');\n\nvar _LanguageSelector2 = _interopRequireDefault(_LanguageSelector);\n\nvar _Login = require('./components/structures/login/Login');\n\nvar _Login2 = _interopRequireDefault(_Login);\n\nvar _PostRegistration = require('./components/structures/login/PostRegistration');\n\nvar _PostRegistration2 = _interopRequireDefault(_PostRegistration);\n\nvar _Registration = require('./components/structures/login/Registration');\n\nvar _Registration2 = _interopRequireDefault(_Registration);\n\nvar _BaseAvatar = require('./components/views/avatars/BaseAvatar');\n\nvar _BaseAvatar2 = _interopRequireDefault(_BaseAvatar);\n\nvar _GroupAvatar = require('./components/views/avatars/GroupAvatar');\n\nvar _GroupAvatar2 = _interopRequireDefault(_GroupAvatar);\n\nvar _MemberAvatar = require('./components/views/avatars/MemberAvatar');\n\nvar _MemberAvatar2 = _interopRequireDefault(_MemberAvatar);\n\nvar _MemberStatusMessageAvatar = require('./components/views/avatars/MemberStatusMessageAvatar');\n\nvar _MemberStatusMessageAvatar2 = _interopRequireDefault(_MemberStatusMessageAvatar);\n\nvar _RoomAvatar = require('./components/views/avatars/RoomAvatar');\n\nvar _RoomAvatar2 = _interopRequireDefault(_RoomAvatar);\n\nvar _GenericElementContextMenu = require('./components/views/context_menus/GenericElementContextMenu');\n\nvar _GenericElementContextMenu2 = _interopRequireDefault(_GenericElementContextMenu);\n\nvar _GenericTextContextMenu = require('./components/views/context_menus/GenericTextContextMenu');\n\nvar _GenericTextContextMenu2 = _interopRequireDefault(_GenericTextContextMenu);\n\nvar _GroupInviteTileContextMenu = require('./components/views/context_menus/GroupInviteTileContextMenu');\n\nvar _GroupInviteTileContextMenu2 = _interopRequireDefault(_GroupInviteTileContextMenu);\n\nvar _MessageContextMenu = require('./components/views/context_menus/MessageContextMenu');\n\nvar _MessageContextMenu2 = _interopRequireDefault(_MessageContextMenu);\n\nvar _RoomTileContextMenu = require('./components/views/context_menus/RoomTileContextMenu');\n\nvar _RoomTileContextMenu2 = _interopRequireDefault(_RoomTileContextMenu);\n\nvar _StatusMessageContextMenu = require('./components/views/context_menus/StatusMessageContextMenu');\n\nvar _StatusMessageContextMenu2 = _interopRequireDefault(_StatusMessageContextMenu);\n\nvar _TagTileContextMenu = require('./components/views/context_menus/TagTileContextMenu');\n\nvar _TagTileContextMenu2 = _interopRequireDefault(_TagTileContextMenu);\n\nvar _CreateRoomButton = require('./components/views/create_room/CreateRoomButton');\n\nvar _CreateRoomButton2 = _interopRequireDefault(_CreateRoomButton);\n\nvar _Presets = require('./components/views/create_room/Presets');\n\nvar _Presets2 = _interopRequireDefault(_Presets);\n\nvar _RoomAlias = require('./components/views/create_room/RoomAlias');\n\nvar _RoomAlias2 = _interopRequireDefault(_RoomAlias);\n\nvar _AddressPickerDialog = require('./components/views/dialogs/AddressPickerDialog');\n\nvar _AddressPickerDialog2 = _interopRequireDefault(_AddressPickerDialog);\n\nvar _AskInviteAnywayDialog = require('./components/views/dialogs/AskInviteAnywayDialog');\n\nvar _AskInviteAnywayDialog2 = _interopRequireDefault(_AskInviteAnywayDialog);\n\nvar _BaseDialog = require('./components/views/dialogs/BaseDialog');\n\nvar _BaseDialog2 = _interopRequireDefault(_BaseDialog);\n\nvar _BugReportDialog = require('./components/views/dialogs/BugReportDialog');\n\nvar _BugReportDialog2 = _interopRequireDefault(_BugReportDialog);\n\nvar _ChangelogDialog = require('./components/views/dialogs/ChangelogDialog');\n\nvar _ChangelogDialog2 = _interopRequireDefault(_ChangelogDialog);\n\nvar _ChatCreateOrReuseDialog = require('./components/views/dialogs/ChatCreateOrReuseDialog');\n\nvar _ChatCreateOrReuseDialog2 = _interopRequireDefault(_ChatCreateOrReuseDialog);\n\nvar _ConfirmRedactDialog = require('./components/views/dialogs/ConfirmRedactDialog');\n\nvar _ConfirmRedactDialog2 = _interopRequireDefault(_ConfirmRedactDialog);\n\nvar _ConfirmUserActionDialog = require('./components/views/dialogs/ConfirmUserActionDialog');\n\nvar _ConfirmUserActionDialog2 = _interopRequireDefault(_ConfirmUserActionDialog);\n\nvar _CreateGroupDialog = require('./components/views/dialogs/CreateGroupDialog');\n\nvar _CreateGroupDialog2 = _interopRequireDefault(_CreateGroupDialog);\n\nvar _CreateRoomDialog = require('./components/views/dialogs/CreateRoomDialog');\n\nvar _CreateRoomDialog2 = _interopRequireDefault(_CreateRoomDialog);\n\nvar _CryptoStoreTooNewDialog = require('./components/views/dialogs/CryptoStoreTooNewDialog');\n\nvar _CryptoStoreTooNewDialog2 = _interopRequireDefault(_CryptoStoreTooNewDialog);\n\nvar _DeactivateAccountDialog = require('./components/views/dialogs/DeactivateAccountDialog');\n\nvar _DeactivateAccountDialog2 = _interopRequireDefault(_DeactivateAccountDialog);\n\nvar _DeviceVerifyDialog = require('./components/views/dialogs/DeviceVerifyDialog');\n\nvar _DeviceVerifyDialog2 = _interopRequireDefault(_DeviceVerifyDialog);\n\nvar _DevtoolsDialog = require('./components/views/dialogs/DevtoolsDialog');\n\nvar _DevtoolsDialog2 = _interopRequireDefault(_DevtoolsDialog);\n\nvar _ErrorDialog = require('./components/views/dialogs/ErrorDialog');\n\nvar _ErrorDialog2 = _interopRequireDefault(_ErrorDialog);\n\nvar _InteractiveAuthDialog = require('./components/views/dialogs/InteractiveAuthDialog');\n\nvar _InteractiveAuthDialog2 = _interopRequireDefault(_InteractiveAuthDialog);\n\nvar _KeyShareDialog = require('./components/views/dialogs/KeyShareDialog');\n\nvar _KeyShareDialog2 = _interopRequireDefault(_KeyShareDialog);\n\nvar _LazyLoadingDisabledDialog = require('./components/views/dialogs/LazyLoadingDisabledDialog');\n\nvar _LazyLoadingDisabledDialog2 = _interopRequireDefault(_LazyLoadingDisabledDialog);\n\nvar _LazyLoadingResyncDialog = require('./components/views/dialogs/LazyLoadingResyncDialog');\n\nvar _LazyLoadingResyncDialog2 = _interopRequireDefault(_LazyLoadingResyncDialog);\n\nvar _QuestionDialog = require('./components/views/dialogs/QuestionDialog');\n\nvar _QuestionDialog2 = _interopRequireDefault(_QuestionDialog);\n\nvar _RoomUpgradeDialog = require('./components/views/dialogs/RoomUpgradeDialog');\n\nvar _RoomUpgradeDialog2 = _interopRequireDefault(_RoomUpgradeDialog);\n\nvar _SessionRestoreErrorDialog = require('./components/views/dialogs/SessionRestoreErrorDialog');\n\nvar _SessionRestoreErrorDialog2 = _interopRequireDefault(_SessionRestoreErrorDialog);\n\nvar _SetEmailDialog = require('./components/views/dialogs/SetEmailDialog');\n\nvar _SetEmailDialog2 = _interopRequireDefault(_SetEmailDialog);\n\nvar _SetMxIdDialog = require('./components/views/dialogs/SetMxIdDialog');\n\nvar _SetMxIdDialog2 = _interopRequireDefault(_SetMxIdDialog);\n\nvar _SetPasswordDialog = require('./components/views/dialogs/SetPasswordDialog');\n\nvar _SetPasswordDialog2 = _interopRequireDefault(_SetPasswordDialog);\n\nvar _ShareDialog = require('./components/views/dialogs/ShareDialog');\n\nvar _ShareDialog2 = _interopRequireDefault(_ShareDialog);\n\nvar _TextInputDialog = require('./components/views/dialogs/TextInputDialog');\n\nvar _TextInputDialog2 = _interopRequireDefault(_TextInputDialog);\n\nvar _UnknownDeviceDialog = require('./components/views/dialogs/UnknownDeviceDialog');\n\nvar _UnknownDeviceDialog2 = _interopRequireDefault(_UnknownDeviceDialog);\n\nvar _RestoreKeyBackupDialog = require('./components/views/dialogs/keybackup/RestoreKeyBackupDialog');\n\nvar _RestoreKeyBackupDialog2 = _interopRequireDefault(_RestoreKeyBackupDialog);\n\nvar _NetworkDropdown = require('./components/views/directory/NetworkDropdown');\n\nvar _NetworkDropdown2 = _interopRequireDefault(_NetworkDropdown);\n\nvar _AccessibleButton = require('./components/views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _ActionButton = require('./components/views/elements/ActionButton');\n\nvar _ActionButton2 = _interopRequireDefault(_ActionButton);\n\nvar _AddressSelector = require('./components/views/elements/AddressSelector');\n\nvar _AddressSelector2 = _interopRequireDefault(_AddressSelector);\n\nvar _AddressTile = require('./components/views/elements/AddressTile');\n\nvar _AddressTile2 = _interopRequireDefault(_AddressTile);\n\nvar _AppPermission = require('./components/views/elements/AppPermission');\n\nvar _AppPermission2 = _interopRequireDefault(_AppPermission);\n\nvar _AppTile = require('./components/views/elements/AppTile');\n\nvar _AppTile2 = _interopRequireDefault(_AppTile);\n\nvar _AppWarning = require('./components/views/elements/AppWarning');\n\nvar _AppWarning2 = _interopRequireDefault(_AppWarning);\n\nvar _CreateRoomButton3 = require('./components/views/elements/CreateRoomButton');\n\nvar _CreateRoomButton4 = _interopRequireDefault(_CreateRoomButton3);\n\nvar _DNDTagTile = require('./components/views/elements/DNDTagTile');\n\nvar _DNDTagTile2 = _interopRequireDefault(_DNDTagTile);\n\nvar _DeviceVerifyButtons = require('./components/views/elements/DeviceVerifyButtons');\n\nvar _DeviceVerifyButtons2 = _interopRequireDefault(_DeviceVerifyButtons);\n\nvar _DialogButtons = require('./components/views/elements/DialogButtons');\n\nvar _DialogButtons2 = _interopRequireDefault(_DialogButtons);\n\nvar _DirectorySearchBox = require('./components/views/elements/DirectorySearchBox');\n\nvar _DirectorySearchBox2 = _interopRequireDefault(_DirectorySearchBox);\n\nvar _Dropdown = require('./components/views/elements/Dropdown');\n\nvar _Dropdown2 = _interopRequireDefault(_Dropdown);\n\nvar _EditableItemList = require('./components/views/elements/EditableItemList');\n\nvar _EditableItemList2 = _interopRequireDefault(_EditableItemList);\n\nvar _EditableText = require('./components/views/elements/EditableText');\n\nvar _EditableText2 = _interopRequireDefault(_EditableText);\n\nvar _EditableTextContainer = require('./components/views/elements/EditableTextContainer');\n\nvar _EditableTextContainer2 = _interopRequireDefault(_EditableTextContainer);\n\nvar _EmojiText = require('./components/views/elements/EmojiText');\n\nvar _EmojiText2 = _interopRequireDefault(_EmojiText);\n\nvar _Flair = require('./components/views/elements/Flair');\n\nvar _Flair2 = _interopRequireDefault(_Flair);\n\nvar _GeminiScrollbarWrapper = require('./components/views/elements/GeminiScrollbarWrapper');\n\nvar _GeminiScrollbarWrapper2 = _interopRequireDefault(_GeminiScrollbarWrapper);\n\nvar _GroupsButton = require('./components/views/elements/GroupsButton');\n\nvar _GroupsButton2 = _interopRequireDefault(_GroupsButton);\n\nvar _HomeButton = require('./components/views/elements/HomeButton');\n\nvar _HomeButton2 = _interopRequireDefault(_HomeButton);\n\nvar _ImageView = require('./components/views/elements/ImageView');\n\nvar _ImageView2 = _interopRequireDefault(_ImageView);\n\nvar _InlineSpinner = require('./components/views/elements/InlineSpinner');\n\nvar _InlineSpinner2 = _interopRequireDefault(_InlineSpinner);\n\nvar _LanguageDropdown = require('./components/views/elements/LanguageDropdown');\n\nvar _LanguageDropdown2 = _interopRequireDefault(_LanguageDropdown);\n\nvar _ManageIntegsButton = require('./components/views/elements/ManageIntegsButton');\n\nvar _ManageIntegsButton2 = _interopRequireDefault(_ManageIntegsButton);\n\nvar _MemberEventListSummary = require('./components/views/elements/MemberEventListSummary');\n\nvar _MemberEventListSummary2 = _interopRequireDefault(_MemberEventListSummary);\n\nvar _MessageSpinner = require('./components/views/elements/MessageSpinner');\n\nvar _MessageSpinner2 = _interopRequireDefault(_MessageSpinner);\n\nvar _PersistedElement = require('./components/views/elements/PersistedElement');\n\nvar _PersistedElement2 = _interopRequireDefault(_PersistedElement);\n\nvar _PersistentApp = require('./components/views/elements/PersistentApp');\n\nvar _PersistentApp2 = _interopRequireDefault(_PersistentApp);\n\nvar _Pill = require('./components/views/elements/Pill');\n\nvar _Pill2 = _interopRequireDefault(_Pill);\n\nvar _PowerSelector = require('./components/views/elements/PowerSelector');\n\nvar _PowerSelector2 = _interopRequireDefault(_PowerSelector);\n\nvar _ProgressBar = require('./components/views/elements/ProgressBar');\n\nvar _ProgressBar2 = _interopRequireDefault(_ProgressBar);\n\nvar _ReplyThread = require('./components/views/elements/ReplyThread');\n\nvar _ReplyThread2 = _interopRequireDefault(_ReplyThread);\n\nvar _RoomDirectoryButton = require('./components/views/elements/RoomDirectoryButton');\n\nvar _RoomDirectoryButton2 = _interopRequireDefault(_RoomDirectoryButton);\n\nvar _SettingsButton = require('./components/views/elements/SettingsButton');\n\nvar _SettingsButton2 = _interopRequireDefault(_SettingsButton);\n\nvar _SettingsFlag = require('./components/views/elements/SettingsFlag');\n\nvar _SettingsFlag2 = _interopRequireDefault(_SettingsFlag);\n\nvar _Spinner = require('./components/views/elements/Spinner');\n\nvar _Spinner2 = _interopRequireDefault(_Spinner);\n\nvar _StartChatButton = require('./components/views/elements/StartChatButton');\n\nvar _StartChatButton2 = _interopRequireDefault(_StartChatButton);\n\nvar _SyntaxHighlight = require('./components/views/elements/SyntaxHighlight');\n\nvar _SyntaxHighlight2 = _interopRequireDefault(_SyntaxHighlight);\n\nvar _TagTile = require('./components/views/elements/TagTile');\n\nvar _TagTile2 = _interopRequireDefault(_TagTile);\n\nvar _TintableSvg = require('./components/views/elements/TintableSvg');\n\nvar _TintableSvg2 = _interopRequireDefault(_TintableSvg);\n\nvar _TintableSvgButton = require('./components/views/elements/TintableSvgButton');\n\nvar _TintableSvgButton2 = _interopRequireDefault(_TintableSvgButton);\n\nvar _ToolTipButton = require('./components/views/elements/ToolTipButton');\n\nvar _ToolTipButton2 = _interopRequireDefault(_ToolTipButton);\n\nvar _TruncatedList = require('./components/views/elements/TruncatedList');\n\nvar _TruncatedList2 = _interopRequireDefault(_TruncatedList);\n\nvar _UserSelector = require('./components/views/elements/UserSelector');\n\nvar _UserSelector2 = _interopRequireDefault(_UserSelector);\n\nvar _CookieBar = require('./components/views/globals/CookieBar');\n\nvar _CookieBar2 = _interopRequireDefault(_CookieBar);\n\nvar _MatrixToolbar = require('./components/views/globals/MatrixToolbar');\n\nvar _MatrixToolbar2 = _interopRequireDefault(_MatrixToolbar);\n\nvar _NewVersionBar = require('./components/views/globals/NewVersionBar');\n\nvar _NewVersionBar2 = _interopRequireDefault(_NewVersionBar);\n\nvar _PasswordNagBar = require('./components/views/globals/PasswordNagBar');\n\nvar _PasswordNagBar2 = _interopRequireDefault(_PasswordNagBar);\n\nvar _ServerLimitBar = require('./components/views/globals/ServerLimitBar');\n\nvar _ServerLimitBar2 = _interopRequireDefault(_ServerLimitBar);\n\nvar _UpdateCheckBar = require('./components/views/globals/UpdateCheckBar');\n\nvar _UpdateCheckBar2 = _interopRequireDefault(_UpdateCheckBar);\n\nvar _GroupInviteTile = require('./components/views/groups/GroupInviteTile');\n\nvar _GroupInviteTile2 = _interopRequireDefault(_GroupInviteTile);\n\nvar _GroupMemberInfo = require('./components/views/groups/GroupMemberInfo');\n\nvar _GroupMemberInfo2 = _interopRequireDefault(_GroupMemberInfo);\n\nvar _GroupMemberList = require('./components/views/groups/GroupMemberList');\n\nvar _GroupMemberList2 = _interopRequireDefault(_GroupMemberList);\n\nvar _GroupMemberTile = require('./components/views/groups/GroupMemberTile');\n\nvar _GroupMemberTile2 = _interopRequireDefault(_GroupMemberTile);\n\nvar _GroupPublicityToggle = require('./components/views/groups/GroupPublicityToggle');\n\nvar _GroupPublicityToggle2 = _interopRequireDefault(_GroupPublicityToggle);\n\nvar _GroupRoomInfo = require('./components/views/groups/GroupRoomInfo');\n\nvar _GroupRoomInfo2 = _interopRequireDefault(_GroupRoomInfo);\n\nvar _GroupRoomList = require('./components/views/groups/GroupRoomList');\n\nvar _GroupRoomList2 = _interopRequireDefault(_GroupRoomList);\n\nvar _GroupRoomTile = require('./components/views/groups/GroupRoomTile');\n\nvar _GroupRoomTile2 = _interopRequireDefault(_GroupRoomTile);\n\nvar _GroupTile = require('./components/views/groups/GroupTile');\n\nvar _GroupTile2 = _interopRequireDefault(_GroupTile);\n\nvar _GroupUserSettings = require('./components/views/groups/GroupUserSettings');\n\nvar _GroupUserSettings2 = _interopRequireDefault(_GroupUserSettings);\n\nvar _CaptchaForm = require('./components/views/login/CaptchaForm');\n\nvar _CaptchaForm2 = _interopRequireDefault(_CaptchaForm);\n\nvar _CountryDropdown = require('./components/views/login/CountryDropdown');\n\nvar _CountryDropdown2 = _interopRequireDefault(_CountryDropdown);\n\nvar _CustomServerDialog = require('./components/views/login/CustomServerDialog');\n\nvar _CustomServerDialog2 = _interopRequireDefault(_CustomServerDialog);\n\nvar _InteractiveAuthEntryComponents = require('./components/views/login/InteractiveAuthEntryComponents');\n\nvar _InteractiveAuthEntryComponents2 = _interopRequireDefault(_InteractiveAuthEntryComponents);\n\nvar _LoginFooter = require('./components/views/login/LoginFooter');\n\nvar _LoginFooter2 = _interopRequireDefault(_LoginFooter);\n\nvar _LoginHeader = require('./components/views/login/LoginHeader');\n\nvar _LoginHeader2 = _interopRequireDefault(_LoginHeader);\n\nvar _LoginPage = require('./components/views/login/LoginPage');\n\nvar _LoginPage2 = _interopRequireDefault(_LoginPage);\n\nvar _PasswordLogin = require('./components/views/login/PasswordLogin');\n\nvar _PasswordLogin2 = _interopRequireDefault(_PasswordLogin);\n\nvar _RegistrationForm = require('./components/views/login/RegistrationForm');\n\nvar _RegistrationForm2 = _interopRequireDefault(_RegistrationForm);\n\nvar _ServerConfig = require('./components/views/login/ServerConfig');\n\nvar _ServerConfig2 = _interopRequireDefault(_ServerConfig);\n\nvar _DateSeparator = require('./components/views/messages/DateSeparator');\n\nvar _DateSeparator2 = _interopRequireDefault(_DateSeparator);\n\nvar _MAudioBody = require('./components/views/messages/MAudioBody');\n\nvar _MAudioBody2 = _interopRequireDefault(_MAudioBody);\n\nvar _MFileBody = require('./components/views/messages/MFileBody');\n\nvar _MFileBody2 = _interopRequireDefault(_MFileBody);\n\nvar _MImageBody = require('./components/views/messages/MImageBody');\n\nvar _MImageBody2 = _interopRequireDefault(_MImageBody);\n\nvar _MStickerBody = require('./components/views/messages/MStickerBody');\n\nvar _MStickerBody2 = _interopRequireDefault(_MStickerBody);\n\nvar _MVideoBody = require('./components/views/messages/MVideoBody');\n\nvar _MVideoBody2 = _interopRequireDefault(_MVideoBody);\n\nvar _MessageEvent = require('./components/views/messages/MessageEvent');\n\nvar _MessageEvent2 = _interopRequireDefault(_MessageEvent);\n\nvar _MessageTimestamp = require('./components/views/messages/MessageTimestamp');\n\nvar _MessageTimestamp2 = _interopRequireDefault(_MessageTimestamp);\n\nvar _RoomAvatarEvent = require('./components/views/messages/RoomAvatarEvent');\n\nvar _RoomAvatarEvent2 = _interopRequireDefault(_RoomAvatarEvent);\n\nvar _RoomCreate = require('./components/views/messages/RoomCreate');\n\nvar _RoomCreate2 = _interopRequireDefault(_RoomCreate);\n\nvar _SenderProfile = require('./components/views/messages/SenderProfile');\n\nvar _SenderProfile2 = _interopRequireDefault(_SenderProfile);\n\nvar _TextualBody = require('./components/views/messages/TextualBody');\n\nvar _TextualBody2 = _interopRequireDefault(_TextualBody);\n\nvar _TextualEvent = require('./components/views/messages/TextualEvent');\n\nvar _TextualEvent2 = _interopRequireDefault(_TextualEvent);\n\nvar _UnknownBody = require('./components/views/messages/UnknownBody');\n\nvar _UnknownBody2 = _interopRequireDefault(_UnknownBody);\n\nvar _AliasSettings = require('./components/views/room_settings/AliasSettings');\n\nvar _AliasSettings2 = _interopRequireDefault(_AliasSettings);\n\nvar _ColorSettings = require('./components/views/room_settings/ColorSettings');\n\nvar _ColorSettings2 = _interopRequireDefault(_ColorSettings);\n\nvar _RelatedGroupSettings = require('./components/views/room_settings/RelatedGroupSettings');\n\nvar _RelatedGroupSettings2 = _interopRequireDefault(_RelatedGroupSettings);\n\nvar _UrlPreviewSettings = require('./components/views/room_settings/UrlPreviewSettings');\n\nvar _UrlPreviewSettings2 = _interopRequireDefault(_UrlPreviewSettings);\n\nvar _AppsDrawer = require('./components/views/rooms/AppsDrawer');\n\nvar _AppsDrawer2 = _interopRequireDefault(_AppsDrawer);\n\nvar _Autocomplete = require('./components/views/rooms/Autocomplete');\n\nvar _Autocomplete2 = _interopRequireDefault(_Autocomplete);\n\nvar _AuxPanel = require('./components/views/rooms/AuxPanel');\n\nvar _AuxPanel2 = _interopRequireDefault(_AuxPanel);\n\nvar _DNDRoomTile = require('./components/views/rooms/DNDRoomTile');\n\nvar _DNDRoomTile2 = _interopRequireDefault(_DNDRoomTile);\n\nvar _EntityTile = require('./components/views/rooms/EntityTile');\n\nvar _EntityTile2 = _interopRequireDefault(_EntityTile);\n\nvar _EventTile = require('./components/views/rooms/EventTile');\n\nvar _EventTile2 = _interopRequireDefault(_EventTile);\n\nvar _ForwardMessage = require('./components/views/rooms/ForwardMessage');\n\nvar _ForwardMessage2 = _interopRequireDefault(_ForwardMessage);\n\nvar _LinkPreviewWidget = require('./components/views/rooms/LinkPreviewWidget');\n\nvar _LinkPreviewWidget2 = _interopRequireDefault(_LinkPreviewWidget);\n\nvar _MemberDeviceInfo = require('./components/views/rooms/MemberDeviceInfo');\n\nvar _MemberDeviceInfo2 = _interopRequireDefault(_MemberDeviceInfo);\n\nvar _MemberInfo = require('./components/views/rooms/MemberInfo');\n\nvar _MemberInfo2 = _interopRequireDefault(_MemberInfo);\n\nvar _MemberList = require('./components/views/rooms/MemberList');\n\nvar _MemberList2 = _interopRequireDefault(_MemberList);\n\nvar _MemberTile = require('./components/views/rooms/MemberTile');\n\nvar _MemberTile2 = _interopRequireDefault(_MemberTile);\n\nvar _MessageComposer = require('./components/views/rooms/MessageComposer');\n\nvar _MessageComposer2 = _interopRequireDefault(_MessageComposer);\n\nvar _MessageComposerInput = require('./components/views/rooms/MessageComposerInput');\n\nvar _MessageComposerInput2 = _interopRequireDefault(_MessageComposerInput);\n\nvar _PinnedEventTile = require('./components/views/rooms/PinnedEventTile');\n\nvar _PinnedEventTile2 = _interopRequireDefault(_PinnedEventTile);\n\nvar _PinnedEventsPanel = require('./components/views/rooms/PinnedEventsPanel');\n\nvar _PinnedEventsPanel2 = _interopRequireDefault(_PinnedEventsPanel);\n\nvar _PresenceLabel = require('./components/views/rooms/PresenceLabel');\n\nvar _PresenceLabel2 = _interopRequireDefault(_PresenceLabel);\n\nvar _ReadReceiptMarker = require('./components/views/rooms/ReadReceiptMarker');\n\nvar _ReadReceiptMarker2 = _interopRequireDefault(_ReadReceiptMarker);\n\nvar _ReplyPreview = require('./components/views/rooms/ReplyPreview');\n\nvar _ReplyPreview2 = _interopRequireDefault(_ReplyPreview);\n\nvar _RoomDetailList = require('./components/views/rooms/RoomDetailList');\n\nvar _RoomDetailList2 = _interopRequireDefault(_RoomDetailList);\n\nvar _RoomDetailRow = require('./components/views/rooms/RoomDetailRow');\n\nvar _RoomDetailRow2 = _interopRequireDefault(_RoomDetailRow);\n\nvar _RoomDropTarget = require('./components/views/rooms/RoomDropTarget');\n\nvar _RoomDropTarget2 = _interopRequireDefault(_RoomDropTarget);\n\nvar _RoomHeader = require('./components/views/rooms/RoomHeader');\n\nvar _RoomHeader2 = _interopRequireDefault(_RoomHeader);\n\nvar _RoomList = require('./components/views/rooms/RoomList');\n\nvar _RoomList2 = _interopRequireDefault(_RoomList);\n\nvar _RoomNameEditor = require('./components/views/rooms/RoomNameEditor');\n\nvar _RoomNameEditor2 = _interopRequireDefault(_RoomNameEditor);\n\nvar _RoomPreviewBar = require('./components/views/rooms/RoomPreviewBar');\n\nvar _RoomPreviewBar2 = _interopRequireDefault(_RoomPreviewBar);\n\nvar _RoomRecoveryReminder = require('./components/views/rooms/RoomRecoveryReminder');\n\nvar _RoomRecoveryReminder2 = _interopRequireDefault(_RoomRecoveryReminder);\n\nvar _RoomSettings = require('./components/views/rooms/RoomSettings');\n\nvar _RoomSettings2 = _interopRequireDefault(_RoomSettings);\n\nvar _RoomTile = require('./components/views/rooms/RoomTile');\n\nvar _RoomTile2 = _interopRequireDefault(_RoomTile);\n\nvar _RoomTooltip = require('./components/views/rooms/RoomTooltip');\n\nvar _RoomTooltip2 = _interopRequireDefault(_RoomTooltip);\n\nvar _RoomTopicEditor = require('./components/views/rooms/RoomTopicEditor');\n\nvar _RoomTopicEditor2 = _interopRequireDefault(_RoomTopicEditor);\n\nvar _RoomUpgradeWarningBar = require('./components/views/rooms/RoomUpgradeWarningBar');\n\nvar _RoomUpgradeWarningBar2 = _interopRequireDefault(_RoomUpgradeWarningBar);\n\nvar _SearchBar = require('./components/views/rooms/SearchBar');\n\nvar _SearchBar2 = _interopRequireDefault(_SearchBar);\n\nvar _SearchResultTile = require('./components/views/rooms/SearchResultTile');\n\nvar _SearchResultTile2 = _interopRequireDefault(_SearchResultTile);\n\nvar _SearchableEntityList = require('./components/views/rooms/SearchableEntityList');\n\nvar _SearchableEntityList2 = _interopRequireDefault(_SearchableEntityList);\n\nvar _SimpleRoomHeader = require('./components/views/rooms/SimpleRoomHeader');\n\nvar _SimpleRoomHeader2 = _interopRequireDefault(_SimpleRoomHeader);\n\nvar _Stickerpicker = require('./components/views/rooms/Stickerpicker');\n\nvar _Stickerpicker2 = _interopRequireDefault(_Stickerpicker);\n\nvar _TopUnreadMessagesBar = require('./components/views/rooms/TopUnreadMessagesBar');\n\nvar _TopUnreadMessagesBar2 = _interopRequireDefault(_TopUnreadMessagesBar);\n\nvar _UserTile = require('./components/views/rooms/UserTile');\n\nvar _UserTile2 = _interopRequireDefault(_UserTile);\n\nvar _AddPhoneNumber = require('./components/views/settings/AddPhoneNumber');\n\nvar _AddPhoneNumber2 = _interopRequireDefault(_AddPhoneNumber);\n\nvar _ChangeAvatar = require('./components/views/settings/ChangeAvatar');\n\nvar _ChangeAvatar2 = _interopRequireDefault(_ChangeAvatar);\n\nvar _ChangeDisplayName = require('./components/views/settings/ChangeDisplayName');\n\nvar _ChangeDisplayName2 = _interopRequireDefault(_ChangeDisplayName);\n\nvar _ChangePassword = require('./components/views/settings/ChangePassword');\n\nvar _ChangePassword2 = _interopRequireDefault(_ChangePassword);\n\nvar _DevicesPanel = require('./components/views/settings/DevicesPanel');\n\nvar _DevicesPanel2 = _interopRequireDefault(_DevicesPanel);\n\nvar _DevicesPanelEntry = require('./components/views/settings/DevicesPanelEntry');\n\nvar _DevicesPanelEntry2 = _interopRequireDefault(_DevicesPanelEntry);\n\nvar _EnableNotificationsButton = require('./components/views/settings/EnableNotificationsButton');\n\nvar _EnableNotificationsButton2 = _interopRequireDefault(_EnableNotificationsButton);\n\nvar _IntegrationsManager = require('./components/views/settings/IntegrationsManager');\n\nvar _IntegrationsManager2 = _interopRequireDefault(_IntegrationsManager);\n\nvar _KeyBackupPanel = require('./components/views/settings/KeyBackupPanel');\n\nvar _KeyBackupPanel2 = _interopRequireDefault(_KeyBackupPanel);\n\nvar _Notifications = require('./components/views/settings/Notifications');\n\nvar _Notifications2 = _interopRequireDefault(_Notifications);\n\nvar _CallPreview = require('./components/views/voip/CallPreview');\n\nvar _CallPreview2 = _interopRequireDefault(_CallPreview);\n\nvar _CallView = require('./components/views/voip/CallView');\n\nvar _CallView2 = _interopRequireDefault(_CallView);\n\nvar _IncomingCallBox = require('./components/views/voip/IncomingCallBox');\n\nvar _IncomingCallBox2 = _interopRequireDefault(_IncomingCallBox);\n\nvar _VideoFeed = require('./components/views/voip/VideoFeed');\n\nvar _VideoFeed2 = _interopRequireDefault(_VideoFeed);\n\nvar _VideoView = require('./components/views/voip/VideoView');\n\nvar _VideoView2 = _interopRequireDefault(_VideoView);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/*\n * THIS FILE IS AUTO-GENERATED\n * You can edit it you like, but your changes will be overwritten,\n * so you'd just be trying to swim upstream like a salmon.\n * You are not a salmon.\n */\n\nvar components = {};\n\n_BottomLeftMenu2.default && (components['structures.BottomLeftMenu'] = _BottomLeftMenu2.default);\n\n_CompatibilityPage2.default && (components['structures.CompatibilityPage'] = _CompatibilityPage2.default);\n\n_ContextualMenu2.default && (components['structures.ContextualMenu'] = _ContextualMenu2.default);\n\n_CreateRoom2.default && (components['structures.CreateRoom'] = _CreateRoom2.default);\n\n_FilePanel2.default && (components['structures.FilePanel'] = _FilePanel2.default);\n\n_GroupView2.default && (components['structures.GroupView'] = _GroupView2.default);\n\n_HomePage2.default && (components['structures.HomePage'] = _HomePage2.default);\n\n_InteractiveAuth2.default && (components['structures.InteractiveAuth'] = _InteractiveAuth2.default);\n\n_LeftPanel2.default && (components['structures.LeftPanel'] = _LeftPanel2.default);\n\n_LoggedInView2.default && (components['structures.LoggedInView'] = _LoggedInView2.default);\n\n_LoginBox2.default && (components['structures.LoginBox'] = _LoginBox2.default);\n\n_MatrixChat2.default && (components['structures.MatrixChat'] = _MatrixChat2.default);\n\n_MessagePanel2.default && (components['structures.MessagePanel'] = _MessagePanel2.default);\n\n_MyGroups2.default && (components['structures.MyGroups'] = _MyGroups2.default);\n\n_NotificationPanel2.default && (components['structures.NotificationPanel'] = _NotificationPanel2.default);\n\n_RightPanel2.default && (components['structures.RightPanel'] = _RightPanel2.default);\n\n_RoomDirectory2.default && (components['structures.RoomDirectory'] = _RoomDirectory2.default);\n\n_RoomStatusBar2.default && (components['structures.RoomStatusBar'] = _RoomStatusBar2.default);\n\n_RoomSubList2.default && (components['structures.RoomSubList'] = _RoomSubList2.default);\n\n_RoomView2.default && (components['structures.RoomView'] = _RoomView2.default);\n\n_ScrollPanel2.default && (components['structures.ScrollPanel'] = _ScrollPanel2.default);\n\n_SearchBox2.default && (components['structures.SearchBox'] = _SearchBox2.default);\n\n_TagPanel2.default && (components['structures.TagPanel'] = _TagPanel2.default);\n\n_TimelinePanel2.default && (components['structures.TimelinePanel'] = _TimelinePanel2.default);\n\n_UploadBar2.default && (components['structures.UploadBar'] = _UploadBar2.default);\n\n_UserSettings2.default && (components['structures.UserSettings'] = _UserSettings2.default);\n\n_ViewSource2.default && (components['structures.ViewSource'] = _ViewSource2.default);\n\n_ForgotPassword2.default && (components['structures.login.ForgotPassword'] = _ForgotPassword2.default);\n\n_LanguageSelector2.default && (components['structures.login.LanguageSelector'] = _LanguageSelector2.default);\n\n_Login2.default && (components['structures.login.Login'] = _Login2.default);\n\n_PostRegistration2.default && (components['structures.login.PostRegistration'] = _PostRegistration2.default);\n\n_Registration2.default && (components['structures.login.Registration'] = _Registration2.default);\n\n_BaseAvatar2.default && (components['views.avatars.BaseAvatar'] = _BaseAvatar2.default);\n\n_GroupAvatar2.default && (components['views.avatars.GroupAvatar'] = _GroupAvatar2.default);\n\n_MemberAvatar2.default && (components['views.avatars.MemberAvatar'] = _MemberAvatar2.default);\n\n_MemberStatusMessageAvatar2.default && (components['views.avatars.MemberStatusMessageAvatar'] = _MemberStatusMessageAvatar2.default);\n\n_RoomAvatar2.default && (components['views.avatars.RoomAvatar'] = _RoomAvatar2.default);\n\n_GenericElementContextMenu2.default && (components['views.context_menus.GenericElementContextMenu'] = _GenericElementContextMenu2.default);\n\n_GenericTextContextMenu2.default && (components['views.context_menus.GenericTextContextMenu'] = _GenericTextContextMenu2.default);\n\n_GroupInviteTileContextMenu2.default && (components['views.context_menus.GroupInviteTileContextMenu'] = _GroupInviteTileContextMenu2.default);\n\n_MessageContextMenu2.default && (components['views.context_menus.MessageContextMenu'] = _MessageContextMenu2.default);\n\n_RoomTileContextMenu2.default && (components['views.context_menus.RoomTileContextMenu'] = _RoomTileContextMenu2.default);\n\n_StatusMessageContextMenu2.default && (components['views.context_menus.StatusMessageContextMenu'] = _StatusMessageContextMenu2.default);\n\n_TagTileContextMenu2.default && (components['views.context_menus.TagTileContextMenu'] = _TagTileContextMenu2.default);\n\n_CreateRoomButton2.default && (components['views.create_room.CreateRoomButton'] = _CreateRoomButton2.default);\n\n_Presets2.default && (components['views.create_room.Presets'] = _Presets2.default);\n\n_RoomAlias2.default && (components['views.create_room.RoomAlias'] = _RoomAlias2.default);\n\n_AddressPickerDialog2.default && (components['views.dialogs.AddressPickerDialog'] = _AddressPickerDialog2.default);\n\n_AskInviteAnywayDialog2.default && (components['views.dialogs.AskInviteAnywayDialog'] = _AskInviteAnywayDialog2.default);\n\n_BaseDialog2.default && (components['views.dialogs.BaseDialog'] = _BaseDialog2.default);\n\n_BugReportDialog2.default && (components['views.dialogs.BugReportDialog'] = _BugReportDialog2.default);\n\n_ChangelogDialog2.default && (components['views.dialogs.ChangelogDialog'] = _ChangelogDialog2.default);\n\n_ChatCreateOrReuseDialog2.default && (components['views.dialogs.ChatCreateOrReuseDialog'] = _ChatCreateOrReuseDialog2.default);\n\n_ConfirmRedactDialog2.default && (components['views.dialogs.ConfirmRedactDialog'] = _ConfirmRedactDialog2.default);\n\n_ConfirmUserActionDialog2.default && (components['views.dialogs.ConfirmUserActionDialog'] = _ConfirmUserActionDialog2.default);\n\n_CreateGroupDialog2.default && (components['views.dialogs.CreateGroupDialog'] = _CreateGroupDialog2.default);\n\n_CreateRoomDialog2.default && (components['views.dialogs.CreateRoomDialog'] = _CreateRoomDialog2.default);\n\n_CryptoStoreTooNewDialog2.default && (components['views.dialogs.CryptoStoreTooNewDialog'] = _CryptoStoreTooNewDialog2.default);\n\n_DeactivateAccountDialog2.default && (components['views.dialogs.DeactivateAccountDialog'] = _DeactivateAccountDialog2.default);\n\n_DeviceVerifyDialog2.default && (components['views.dialogs.DeviceVerifyDialog'] = _DeviceVerifyDialog2.default);\n\n_DevtoolsDialog2.default && (components['views.dialogs.DevtoolsDialog'] = _DevtoolsDialog2.default);\n\n_ErrorDialog2.default && (components['views.dialogs.ErrorDialog'] = _ErrorDialog2.default);\n\n_InteractiveAuthDialog2.default && (components['views.dialogs.InteractiveAuthDialog'] = _InteractiveAuthDialog2.default);\n\n_KeyShareDialog2.default && (components['views.dialogs.KeyShareDialog'] = _KeyShareDialog2.default);\n\n_LazyLoadingDisabledDialog2.default && (components['views.dialogs.LazyLoadingDisabledDialog'] = _LazyLoadingDisabledDialog2.default);\n\n_LazyLoadingResyncDialog2.default && (components['views.dialogs.LazyLoadingResyncDialog'] = _LazyLoadingResyncDialog2.default);\n\n_QuestionDialog2.default && (components['views.dialogs.QuestionDialog'] = _QuestionDialog2.default);\n\n_RoomUpgradeDialog2.default && (components['views.dialogs.RoomUpgradeDialog'] = _RoomUpgradeDialog2.default);\n\n_SessionRestoreErrorDialog2.default && (components['views.dialogs.SessionRestoreErrorDialog'] = _SessionRestoreErrorDialog2.default);\n\n_SetEmailDialog2.default && (components['views.dialogs.SetEmailDialog'] = _SetEmailDialog2.default);\n\n_SetMxIdDialog2.default && (components['views.dialogs.SetMxIdDialog'] = _SetMxIdDialog2.default);\n\n_SetPasswordDialog2.default && (components['views.dialogs.SetPasswordDialog'] = _SetPasswordDialog2.default);\n\n_ShareDialog2.default && (components['views.dialogs.ShareDialog'] = _ShareDialog2.default);\n\n_TextInputDialog2.default && (components['views.dialogs.TextInputDialog'] = _TextInputDialog2.default);\n\n_UnknownDeviceDialog2.default && (components['views.dialogs.UnknownDeviceDialog'] = _UnknownDeviceDialog2.default);\n\n_RestoreKeyBackupDialog2.default && (components['views.dialogs.keybackup.RestoreKeyBackupDialog'] = _RestoreKeyBackupDialog2.default);\n\n_NetworkDropdown2.default && (components['views.directory.NetworkDropdown'] = _NetworkDropdown2.default);\n\n_AccessibleButton2.default && (components['views.elements.AccessibleButton'] = _AccessibleButton2.default);\n\n_ActionButton2.default && (components['views.elements.ActionButton'] = _ActionButton2.default);\n\n_AddressSelector2.default && (components['views.elements.AddressSelector'] = _AddressSelector2.default);\n\n_AddressTile2.default && (components['views.elements.AddressTile'] = _AddressTile2.default);\n\n_AppPermission2.default && (components['views.elements.AppPermission'] = _AppPermission2.default);\n\n_AppTile2.default && (components['views.elements.AppTile'] = _AppTile2.default);\n\n_AppWarning2.default && (components['views.elements.AppWarning'] = _AppWarning2.default);\n\n_CreateRoomButton4.default && (components['views.elements.CreateRoomButton'] = _CreateRoomButton4.default);\n\n_DNDTagTile2.default && (components['views.elements.DNDTagTile'] = _DNDTagTile2.default);\n\n_DeviceVerifyButtons2.default && (components['views.elements.DeviceVerifyButtons'] = _DeviceVerifyButtons2.default);\n\n_DialogButtons2.default && (components['views.elements.DialogButtons'] = _DialogButtons2.default);\n\n_DirectorySearchBox2.default && (components['views.elements.DirectorySearchBox'] = _DirectorySearchBox2.default);\n\n_Dropdown2.default && (components['views.elements.Dropdown'] = _Dropdown2.default);\n\n_EditableItemList2.default && (components['views.elements.EditableItemList'] = _EditableItemList2.default);\n\n_EditableText2.default && (components['views.elements.EditableText'] = _EditableText2.default);\n\n_EditableTextContainer2.default && (components['views.elements.EditableTextContainer'] = _EditableTextContainer2.default);\n\n_EmojiText2.default && (components['views.elements.EmojiText'] = _EmojiText2.default);\n\n_Flair2.default && (components['views.elements.Flair'] = _Flair2.default);\n\n_GeminiScrollbarWrapper2.default && (components['views.elements.GeminiScrollbarWrapper'] = _GeminiScrollbarWrapper2.default);\n\n_GroupsButton2.default && (components['views.elements.GroupsButton'] = _GroupsButton2.default);\n\n_HomeButton2.default && (components['views.elements.HomeButton'] = _HomeButton2.default);\n\n_ImageView2.default && (components['views.elements.ImageView'] = _ImageView2.default);\n\n_InlineSpinner2.default && (components['views.elements.InlineSpinner'] = _InlineSpinner2.default);\n\n_LanguageDropdown2.default && (components['views.elements.LanguageDropdown'] = _LanguageDropdown2.default);\n\n_ManageIntegsButton2.default && (components['views.elements.ManageIntegsButton'] = _ManageIntegsButton2.default);\n\n_MemberEventListSummary2.default && (components['views.elements.MemberEventListSummary'] = _MemberEventListSummary2.default);\n\n_MessageSpinner2.default && (components['views.elements.MessageSpinner'] = _MessageSpinner2.default);\n\n_PersistedElement2.default && (components['views.elements.PersistedElement'] = _PersistedElement2.default);\n\n_PersistentApp2.default && (components['views.elements.PersistentApp'] = _PersistentApp2.default);\n\n_Pill2.default && (components['views.elements.Pill'] = _Pill2.default);\n\n_PowerSelector2.default && (components['views.elements.PowerSelector'] = _PowerSelector2.default);\n\n_ProgressBar2.default && (components['views.elements.ProgressBar'] = _ProgressBar2.default);\n\n_ReplyThread2.default && (components['views.elements.ReplyThread'] = _ReplyThread2.default);\n\n_RoomDirectoryButton2.default && (components['views.elements.RoomDirectoryButton'] = _RoomDirectoryButton2.default);\n\n_SettingsButton2.default && (components['views.elements.SettingsButton'] = _SettingsButton2.default);\n\n_SettingsFlag2.default && (components['views.elements.SettingsFlag'] = _SettingsFlag2.default);\n\n_Spinner2.default && (components['views.elements.Spinner'] = _Spinner2.default);\n\n_StartChatButton2.default && (components['views.elements.StartChatButton'] = _StartChatButton2.default);\n\n_SyntaxHighlight2.default && (components['views.elements.SyntaxHighlight'] = _SyntaxHighlight2.default);\n\n_TagTile2.default && (components['views.elements.TagTile'] = _TagTile2.default);\n\n_TintableSvg2.default && (components['views.elements.TintableSvg'] = _TintableSvg2.default);\n\n_TintableSvgButton2.default && (components['views.elements.TintableSvgButton'] = _TintableSvgButton2.default);\n\n_ToolTipButton2.default && (components['views.elements.ToolTipButton'] = _ToolTipButton2.default);\n\n_TruncatedList2.default && (components['views.elements.TruncatedList'] = _TruncatedList2.default);\n\n_UserSelector2.default && (components['views.elements.UserSelector'] = _UserSelector2.default);\n\n_CookieBar2.default && (components['views.globals.CookieBar'] = _CookieBar2.default);\n\n_MatrixToolbar2.default && (components['views.globals.MatrixToolbar'] = _MatrixToolbar2.default);\n\n_NewVersionBar2.default && (components['views.globals.NewVersionBar'] = _NewVersionBar2.default);\n\n_PasswordNagBar2.default && (components['views.globals.PasswordNagBar'] = _PasswordNagBar2.default);\n\n_ServerLimitBar2.default && (components['views.globals.ServerLimitBar'] = _ServerLimitBar2.default);\n\n_UpdateCheckBar2.default && (components['views.globals.UpdateCheckBar'] = _UpdateCheckBar2.default);\n\n_GroupInviteTile2.default && (components['views.groups.GroupInviteTile'] = _GroupInviteTile2.default);\n\n_GroupMemberInfo2.default && (components['views.groups.GroupMemberInfo'] = _GroupMemberInfo2.default);\n\n_GroupMemberList2.default && (components['views.groups.GroupMemberList'] = _GroupMemberList2.default);\n\n_GroupMemberTile2.default && (components['views.groups.GroupMemberTile'] = _GroupMemberTile2.default);\n\n_GroupPublicityToggle2.default && (components['views.groups.GroupPublicityToggle'] = _GroupPublicityToggle2.default);\n\n_GroupRoomInfo2.default && (components['views.groups.GroupRoomInfo'] = _GroupRoomInfo2.default);\n\n_GroupRoomList2.default && (components['views.groups.GroupRoomList'] = _GroupRoomList2.default);\n\n_GroupRoomTile2.default && (components['views.groups.GroupRoomTile'] = _GroupRoomTile2.default);\n\n_GroupTile2.default && (components['views.groups.GroupTile'] = _GroupTile2.default);\n\n_GroupUserSettings2.default && (components['views.groups.GroupUserSettings'] = _GroupUserSettings2.default);\n\n_CaptchaForm2.default && (components['views.login.CaptchaForm'] = _CaptchaForm2.default);\n\n_CountryDropdown2.default && (components['views.login.CountryDropdown'] = _CountryDropdown2.default);\n\n_CustomServerDialog2.default && (components['views.login.CustomServerDialog'] = _CustomServerDialog2.default);\n\n_InteractiveAuthEntryComponents2.default && (components['views.login.InteractiveAuthEntryComponents'] = _InteractiveAuthEntryComponents2.default);\n\n_LoginFooter2.default && (components['views.login.LoginFooter'] = _LoginFooter2.default);\n\n_LoginHeader2.default && (components['views.login.LoginHeader'] = _LoginHeader2.default);\n\n_LoginPage2.default && (components['views.login.LoginPage'] = _LoginPage2.default);\n\n_PasswordLogin2.default && (components['views.login.PasswordLogin'] = _PasswordLogin2.default);\n\n_RegistrationForm2.default && (components['views.login.RegistrationForm'] = _RegistrationForm2.default);\n\n_ServerConfig2.default && (components['views.login.ServerConfig'] = _ServerConfig2.default);\n\n_DateSeparator2.default && (components['views.messages.DateSeparator'] = _DateSeparator2.default);\n\n_MAudioBody2.default && (components['views.messages.MAudioBody'] = _MAudioBody2.default);\n\n_MFileBody2.default && (components['views.messages.MFileBody'] = _MFileBody2.default);\n\n_MImageBody2.default && (components['views.messages.MImageBody'] = _MImageBody2.default);\n\n_MStickerBody2.default && (components['views.messages.MStickerBody'] = _MStickerBody2.default);\n\n_MVideoBody2.default && (components['views.messages.MVideoBody'] = _MVideoBody2.default);\n\n_MessageEvent2.default && (components['views.messages.MessageEvent'] = _MessageEvent2.default);\n\n_MessageTimestamp2.default && (components['views.messages.MessageTimestamp'] = _MessageTimestamp2.default);\n\n_RoomAvatarEvent2.default && (components['views.messages.RoomAvatarEvent'] = _RoomAvatarEvent2.default);\n\n_RoomCreate2.default && (components['views.messages.RoomCreate'] = _RoomCreate2.default);\n\n_SenderProfile2.default && (components['views.messages.SenderProfile'] = _SenderProfile2.default);\n\n_TextualBody2.default && (components['views.messages.TextualBody'] = _TextualBody2.default);\n\n_TextualEvent2.default && (components['views.messages.TextualEvent'] = _TextualEvent2.default);\n\n_UnknownBody2.default && (components['views.messages.UnknownBody'] = _UnknownBody2.default);\n\n_AliasSettings2.default && (components['views.room_settings.AliasSettings'] = _AliasSettings2.default);\n\n_ColorSettings2.default && (components['views.room_settings.ColorSettings'] = _ColorSettings2.default);\n\n_RelatedGroupSettings2.default && (components['views.room_settings.RelatedGroupSettings'] = _RelatedGroupSettings2.default);\n\n_UrlPreviewSettings2.default && (components['views.room_settings.UrlPreviewSettings'] = _UrlPreviewSettings2.default);\n\n_AppsDrawer2.default && (components['views.rooms.AppsDrawer'] = _AppsDrawer2.default);\n\n_Autocomplete2.default && (components['views.rooms.Autocomplete'] = _Autocomplete2.default);\n\n_AuxPanel2.default && (components['views.rooms.AuxPanel'] = _AuxPanel2.default);\n\n_DNDRoomTile2.default && (components['views.rooms.DNDRoomTile'] = _DNDRoomTile2.default);\n\n_EntityTile2.default && (components['views.rooms.EntityTile'] = _EntityTile2.default);\n\n_EventTile2.default && (components['views.rooms.EventTile'] = _EventTile2.default);\n\n_ForwardMessage2.default && (components['views.rooms.ForwardMessage'] = _ForwardMessage2.default);\n\n_LinkPreviewWidget2.default && (components['views.rooms.LinkPreviewWidget'] = _LinkPreviewWidget2.default);\n\n_MemberDeviceInfo2.default && (components['views.rooms.MemberDeviceInfo'] = _MemberDeviceInfo2.default);\n\n_MemberInfo2.default && (components['views.rooms.MemberInfo'] = _MemberInfo2.default);\n\n_MemberList2.default && (components['views.rooms.MemberList'] = _MemberList2.default);\n\n_MemberTile2.default && (components['views.rooms.MemberTile'] = _MemberTile2.default);\n\n_MessageComposer2.default && (components['views.rooms.MessageComposer'] = _MessageComposer2.default);\n\n_MessageComposerInput2.default && (components['views.rooms.MessageComposerInput'] = _MessageComposerInput2.default);\n\n_PinnedEventTile2.default && (components['views.rooms.PinnedEventTile'] = _PinnedEventTile2.default);\n\n_PinnedEventsPanel2.default && (components['views.rooms.PinnedEventsPanel'] = _PinnedEventsPanel2.default);\n\n_PresenceLabel2.default && (components['views.rooms.PresenceLabel'] = _PresenceLabel2.default);\n\n_ReadReceiptMarker2.default && (components['views.rooms.ReadReceiptMarker'] = _ReadReceiptMarker2.default);\n\n_ReplyPreview2.default && (components['views.rooms.ReplyPreview'] = _ReplyPreview2.default);\n\n_RoomDetailList2.default && (components['views.rooms.RoomDetailList'] = _RoomDetailList2.default);\n\n_RoomDetailRow2.default && (components['views.rooms.RoomDetailRow'] = _RoomDetailRow2.default);\n\n_RoomDropTarget2.default && (components['views.rooms.RoomDropTarget'] = _RoomDropTarget2.default);\n\n_RoomHeader2.default && (components['views.rooms.RoomHeader'] = _RoomHeader2.default);\n\n_RoomList2.default && (components['views.rooms.RoomList'] = _RoomList2.default);\n\n_RoomNameEditor2.default && (components['views.rooms.RoomNameEditor'] = _RoomNameEditor2.default);\n\n_RoomPreviewBar2.default && (components['views.rooms.RoomPreviewBar'] = _RoomPreviewBar2.default);\n\n_RoomRecoveryReminder2.default && (components['views.rooms.RoomRecoveryReminder'] = _RoomRecoveryReminder2.default);\n\n_RoomSettings2.default && (components['views.rooms.RoomSettings'] = _RoomSettings2.default);\n\n_RoomTile2.default && (components['views.rooms.RoomTile'] = _RoomTile2.default);\n\n_RoomTooltip2.default && (components['views.rooms.RoomTooltip'] = _RoomTooltip2.default);\n\n_RoomTopicEditor2.default && (components['views.rooms.RoomTopicEditor'] = _RoomTopicEditor2.default);\n\n_RoomUpgradeWarningBar2.default && (components['views.rooms.RoomUpgradeWarningBar'] = _RoomUpgradeWarningBar2.default);\n\n_SearchBar2.default && (components['views.rooms.SearchBar'] = _SearchBar2.default);\n\n_SearchResultTile2.default && (components['views.rooms.SearchResultTile'] = _SearchResultTile2.default);\n\n_SearchableEntityList2.default && (components['views.rooms.SearchableEntityList'] = _SearchableEntityList2.default);\n\n_SimpleRoomHeader2.default && (components['views.rooms.SimpleRoomHeader'] = _SimpleRoomHeader2.default);\n\n_Stickerpicker2.default && (components['views.rooms.Stickerpicker'] = _Stickerpicker2.default);\n\n_TopUnreadMessagesBar2.default && (components['views.rooms.TopUnreadMessagesBar'] = _TopUnreadMessagesBar2.default);\n\n_UserTile2.default && (components['views.rooms.UserTile'] = _UserTile2.default);\n\n_AddPhoneNumber2.default && (components['views.settings.AddPhoneNumber'] = _AddPhoneNumber2.default);\n\n_ChangeAvatar2.default && (components['views.settings.ChangeAvatar'] = _ChangeAvatar2.default);\n\n_ChangeDisplayName2.default && (components['views.settings.ChangeDisplayName'] = _ChangeDisplayName2.default);\n\n_ChangePassword2.default && (components['views.settings.ChangePassword'] = _ChangePassword2.default);\n\n_DevicesPanel2.default && (components['views.settings.DevicesPanel'] = _DevicesPanel2.default);\n\n_DevicesPanelEntry2.default && (components['views.settings.DevicesPanelEntry'] = _DevicesPanelEntry2.default);\n\n_EnableNotificationsButton2.default && (components['views.settings.EnableNotificationsButton'] = _EnableNotificationsButton2.default);\n\n_IntegrationsManager2.default && (components['views.settings.IntegrationsManager'] = _IntegrationsManager2.default);\n\n_KeyBackupPanel2.default && (components['views.settings.KeyBackupPanel'] = _KeyBackupPanel2.default);\n\n_Notifications2.default && (components['views.settings.Notifications'] = _Notifications2.default);\n\n_CallPreview2.default && (components['views.voip.CallPreview'] = _CallPreview2.default);\n\n_CallView2.default && (components['views.voip.CallView'] = _CallView2.default);\n\n_IncomingCallBox2.default && (components['views.voip.IncomingCallBox'] = _IncomingCallBox2.default);\n\n_VideoFeed2.default && (components['views.voip.VideoFeed'] = _VideoFeed2.default);\n\n_VideoView2.default && (components['views.voip.VideoView'] = _VideoView2.default);\nexports.components = components;\n//# sourceMappingURL=component-index.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _velocityVector = require('velocity-vector');\n\nvar _velocityVector2 = _interopRequireDefault(_velocityVector);\n\nrequire('velocity-vector/velocity.ui');\n\nvar _SettingsStore = require('../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar CALLOUT_ANIM_DURATION = 1000; /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = _react2.default.createClass({\n displayName: 'BottomLeftMenu',\n\n propTypes: {\n collapsed: _react2.default.PropTypes.bool.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n directoryHover: false,\n roomsHover: false,\n homeHover: false,\n peopleHover: false,\n settingsHover: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._dispatcherRef = _dispatcher2.default.register(this.onAction);\n this._peopleButton = null;\n this._directoryButton = null;\n this._createRoomButton = null;\n this._lastCallouts = {};\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.unregister(this._dispatcherRef);\n },\n\n // Room events\n onDirectoryClick: function onDirectoryClick() {\n _dispatcher2.default.dispatch({ action: 'view_room_directory' });\n },\n\n onDirectoryMouseEnter: function onDirectoryMouseEnter() {\n this.setState({ directoryHover: true });\n },\n\n onDirectoryMouseLeave: function onDirectoryMouseLeave() {\n this.setState({ directoryHover: false });\n },\n\n onRoomsClick: function onRoomsClick() {\n _dispatcher2.default.dispatch({ action: 'view_create_room' });\n },\n\n onRoomsMouseEnter: function onRoomsMouseEnter() {\n this.setState({ roomsHover: true });\n },\n\n onRoomsMouseLeave: function onRoomsMouseLeave() {\n this.setState({ roomsHover: false });\n },\n\n // Home button events\n onHomeClick: function onHomeClick() {\n _dispatcher2.default.dispatch({ action: 'view_home_page' });\n },\n\n onHomeMouseEnter: function onHomeMouseEnter() {\n this.setState({ homeHover: true });\n },\n\n onHomeMouseLeave: function onHomeMouseLeave() {\n this.setState({ homeHover: false });\n },\n\n // People events\n onPeopleClick: function onPeopleClick() {\n _dispatcher2.default.dispatch({ action: 'view_create_chat' });\n },\n\n onPeopleMouseEnter: function onPeopleMouseEnter() {\n this.setState({ peopleHover: true });\n },\n\n onPeopleMouseLeave: function onPeopleMouseLeave() {\n this.setState({ peopleHover: false });\n },\n\n // Settings events\n onSettingsClick: function onSettingsClick() {\n _dispatcher2.default.dispatch({ action: 'view_user_settings' });\n },\n\n onSettingsMouseEnter: function onSettingsMouseEnter() {\n this.setState({ settingsHover: true });\n },\n\n onSettingsMouseLeave: function onSettingsMouseLeave() {\n this.setState({ settingsHover: false });\n },\n\n onAction: function onAction(payload) {\n var calloutElement = void 0;\n switch (payload.action) {\n // Incoming instruction: dance!\n case 'callout_start_chat':\n calloutElement = this._peopleButton;\n break;\n case 'callout_room_directory':\n calloutElement = this._directoryButton;\n break;\n case 'callout_create_room':\n calloutElement = this._createRoomButton;\n break;\n }\n if (calloutElement) {\n var lastCallout = this._lastCallouts[payload.action];\n var now = Date.now();\n if (lastCallout == undefined || lastCallout < now - CALLOUT_ANIM_DURATION) {\n this._lastCallouts[payload.action] = now;\n (0, _velocityVector2.default)(_reactDom2.default.findDOMNode(calloutElement), \"callout.bounce\", CALLOUT_ANIM_DURATION);\n }\n }\n },\n\n // Get the label/tooltip to show\n getLabel: function getLabel(label, show) {\n if (show) {\n var RoomTooltip = _index2.default.getComponent(\"rooms.RoomTooltip\");\n return _react2.default.createElement(RoomTooltip, { className: 'mx_BottomLeftMenu_tooltip', label: label });\n }\n },\n\n _collectPeopleButton: function _collectPeopleButton(e) {\n this._peopleButton = e;\n },\n\n _collectDirectoryButton: function _collectDirectoryButton(e) {\n this._directoryButton = e;\n },\n\n _collectCreateRoomButton: function _collectCreateRoomButton(e) {\n this._createRoomButton = e;\n },\n\n render: function render() {\n var HomeButton = _index2.default.getComponent('elements.HomeButton');\n var StartChatButton = _index2.default.getComponent('elements.StartChatButton');\n var RoomDirectoryButton = _index2.default.getComponent('elements.RoomDirectoryButton');\n var CreateRoomButton = _index2.default.getComponent('elements.CreateRoomButton');\n var SettingsButton = _index2.default.getComponent('elements.SettingsButton');\n var GroupsButton = _index2.default.getComponent('elements.GroupsButton');\n\n var groupsButton = _SettingsStore2.default.getValue(\"TagPanel.disableTagPanel\") ? _react2.default.createElement(GroupsButton, { tooltip: true }) : null;\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_BottomLeftMenu' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_BottomLeftMenu_options' },\n _react2.default.createElement(HomeButton, { tooltip: true }),\n _react2.default.createElement(\n 'div',\n { ref: this._collectPeopleButton },\n _react2.default.createElement(StartChatButton, { tooltip: true })\n ),\n _react2.default.createElement(\n 'div',\n { ref: this._collectDirectoryButton },\n _react2.default.createElement(RoomDirectoryButton, { tooltip: true })\n ),\n _react2.default.createElement(\n 'div',\n { ref: this._collectCreateRoomButton },\n _react2.default.createElement(CreateRoomButton, { tooltip: true })\n ),\n groupsButton,\n _react2.default.createElement(\n 'span',\n { className: 'mx_BottomLeftMenu_settings' },\n _react2.default.createElement(SettingsButton, { tooltip: true })\n )\n )\n );\n }\n});\n//# sourceMappingURL=BottomLeftMenu.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _languageHandler = require('../../languageHandler');\n\nvar React = require('react');\n\n\nmodule.exports = React.createClass({\n displayName: 'CompatibilityPage',\n propTypes: {\n onAccept: React.PropTypes.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onAccept: function onAccept() {} // NOP\n };\n },\n\n onAccept: function onAccept() {\n this.props.onAccept();\n },\n\n render: function render() {\n return React.createElement(\n 'div',\n { className: 'mx_CompatibilityPage' },\n React.createElement(\n 'div',\n { className: 'mx_CompatibilityPage_box' },\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Sorry, your browser is <b>not</b> able to run Riot.\", {}, { 'b': function b(sub) {\n return React.createElement(\n 'b',\n null,\n sub\n );\n } }),\n ' '\n ),\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.\")\n ),\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.', {}, {\n 'chromeLink': function chromeLink(sub) {\n return React.createElement(\n 'a',\n { href: 'https://www.google.com/chrome' },\n sub\n );\n },\n 'firefoxLink': function firefoxLink(sub) {\n return React.createElement(\n 'a',\n { href: 'https://getfirefox.com' },\n sub\n );\n }\n }),\n (0, _languageHandler._t)('<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.', {}, {\n 'safariLink': function safariLink(sub) {\n return React.createElement(\n 'a',\n { href: 'http://apple.com/safari' },\n sub\n );\n },\n 'operaLink': function operaLink(sub) {\n return React.createElement(\n 'a',\n { href: 'http://opera.com' },\n sub\n );\n }\n })\n ),\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!\")\n ),\n React.createElement(\n 'button',\n { onClick: this.onAccept },\n (0, _languageHandler._t)(\"I understand the risks and wish to continue\")\n )\n )\n );\n }\n});\n//# sourceMappingURL=CompatibilityPage.js.map","require('../modules/web.immediate');\nmodule.exports = require('../modules/_core').setImmediate;\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PresetValues = {\n PrivateChat: \"private_chat\",\n PublicChat: \"public_chat\",\n Custom: \"custom\"\n};\n\nmodule.exports = _react2.default.createClass({\n displayName: 'CreateRoom',\n\n propTypes: {\n onRoomCreated: _propTypes2.default.func,\n collapsedRhs: _propTypes2.default.bool\n },\n\n phases: {\n CONFIG: \"CONFIG\", // We're waiting for user to configure and hit create.\n CREATING: \"CREATING\", // We're sending the request.\n CREATED: \"CREATED\", // We successfully created the room.\n ERROR: \"ERROR\" // There was an error while trying to create room.\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onRoomCreated: function onRoomCreated() {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n phase: this.phases.CONFIG,\n error_string: \"\",\n is_private: true,\n share_history: false,\n default_preset: PresetValues.PrivateChat,\n topic: '',\n room_name: '',\n invited_users: []\n };\n },\n\n onCreateRoom: function onCreateRoom() {\n var options = {};\n\n if (this.state.room_name) {\n options.name = this.state.room_name;\n }\n\n if (this.state.topic) {\n options.topic = this.state.topic;\n }\n\n if (this.state.preset) {\n if (this.state.preset != PresetValues.Custom) {\n options.preset = this.state.preset;\n } else {\n options.initial_state = [{\n type: \"m.room.join_rules\",\n content: {\n \"join_rule\": this.state.is_private ? \"invite\" : \"public\"\n }\n }, {\n type: \"m.room.history_visibility\",\n content: {\n \"history_visibility\": this.state.share_history ? \"shared\" : \"invited\"\n }\n }];\n }\n }\n\n options.invite = this.state.invited_users;\n\n var alias = this.getAliasLocalpart();\n if (alias) {\n options.room_alias_name = alias;\n }\n\n var cli = _MatrixClientPeg2.default.get();\n if (!cli) {\n // TODO: Error.\n console.error(\"Cannot create room: No matrix client.\");\n return;\n }\n\n var deferred = cli.createRoom(options);\n\n if (this.state.encrypt) {\n // TODO\n }\n\n this.setState({\n phase: this.phases.CREATING\n });\n\n var self = this;\n\n deferred.then(function (resp) {\n self.setState({\n phase: self.phases.CREATED\n });\n self.props.onRoomCreated(resp.room_id);\n }, function (err) {\n self.setState({\n phase: self.phases.ERROR,\n error_string: err.toString()\n });\n });\n },\n\n getPreset: function getPreset() {\n return this.refs.presets.getPreset();\n },\n\n getName: function getName() {\n return this.refs.name_textbox.getName();\n },\n\n getTopic: function getTopic() {\n return this.refs.topic.getTopic();\n },\n\n getAliasLocalpart: function getAliasLocalpart() {\n return this.refs.alias.getAliasLocalpart();\n },\n\n getInvitedUsers: function getInvitedUsers() {\n return this.refs.user_selector.getUserIds();\n },\n\n onPresetChanged: function onPresetChanged(preset) {\n switch (preset) {\n case PresetValues.PrivateChat:\n this.setState({\n preset: preset,\n is_private: true,\n share_history: false\n });\n break;\n case PresetValues.PublicChat:\n this.setState({\n preset: preset,\n is_private: false,\n share_history: true\n });\n break;\n case PresetValues.Custom:\n this.setState({\n preset: preset\n });\n break;\n }\n },\n\n onPrivateChanged: function onPrivateChanged(ev) {\n this.setState({\n preset: PresetValues.Custom,\n is_private: ev.target.checked\n });\n },\n\n onShareHistoryChanged: function onShareHistoryChanged(ev) {\n this.setState({\n preset: PresetValues.Custom,\n share_history: ev.target.checked\n });\n },\n\n onTopicChange: function onTopicChange(ev) {\n this.setState({\n topic: ev.target.value\n });\n },\n\n onNameChange: function onNameChange(ev) {\n this.setState({\n room_name: ev.target.value\n });\n },\n\n onInviteChanged: function onInviteChanged(invited_users) {\n this.setState({\n invited_users: invited_users\n });\n },\n\n onAliasChanged: function onAliasChanged(alias) {\n this.setState({\n alias: alias\n });\n },\n\n onEncryptChanged: function onEncryptChanged(ev) {\n this.setState({\n encrypt: ev.target.checked\n });\n },\n\n render: function render() {\n var curr_phase = this.state.phase;\n if (curr_phase == this.phases.CREATING) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n } else {\n var error_box = \"\";\n if (curr_phase == this.phases.ERROR) {\n error_box = _react2.default.createElement(\n 'div',\n { className: 'mx_Error' },\n (0, _languageHandler._t)('An error occurred: %(error_string)s', { error_string: this.state.error_string })\n );\n }\n\n var CreateRoomButton = _index2.default.getComponent(\"create_room.CreateRoomButton\");\n var RoomAlias = _index2.default.getComponent(\"create_room.RoomAlias\");\n var Presets = _index2.default.getComponent(\"create_room.Presets\");\n var UserSelector = _index2.default.getComponent(\"elements.UserSelector\");\n var SimpleRoomHeader = _index2.default.getComponent(\"rooms.SimpleRoomHeader\");\n\n var domain = _MatrixClientPeg2.default.get().getDomain();\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_CreateRoom' },\n _react2.default.createElement(SimpleRoomHeader, { title: (0, _languageHandler._t)(\"Create Room\"), collapsedRhs: this.props.collapsedRhs }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateRoom_body' },\n _react2.default.createElement('input', { type: 'text', ref: 'room_name', value: this.state.room_name, onChange: this.onNameChange, placeholder: (0, _languageHandler._t)('Name') }),\n ' ',\n _react2.default.createElement('br', null),\n _react2.default.createElement('textarea', { className: 'mx_CreateRoom_description', ref: 'topic', value: this.state.topic, onChange: this.onTopicChange, placeholder: (0, _languageHandler._t)('Topic') }),\n ' ',\n _react2.default.createElement('br', null),\n _react2.default.createElement(RoomAlias, { ref: 'alias', alias: this.state.alias, homeserver: domain, onChange: this.onAliasChanged }),\n ' ',\n _react2.default.createElement('br', null),\n _react2.default.createElement(UserSelector, { ref: 'user_selector', selected_users: this.state.invited_users, onChange: this.onInviteChanged }),\n ' ',\n _react2.default.createElement('br', null),\n _react2.default.createElement(Presets, { ref: 'presets', onChange: this.onPresetChanged, preset: this.state.preset }),\n ' ',\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'checkbox', ref: 'is_private', checked: this.state.is_private, onChange: this.onPrivateChanged }),\n (0, _languageHandler._t)('Make this room private')\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'checkbox', ref: 'share_history', checked: this.state.share_history, onChange: this.onShareHistoryChanged }),\n (0, _languageHandler._t)('Share message history with new users')\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateRoom_encrypt' },\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'checkbox', ref: 'encrypt', checked: this.state.encrypt, onChange: this.onEncryptChanged }),\n (0, _languageHandler._t)('Encrypt room')\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(CreateRoomButton, { onCreateRoom: this.onCreateRoom }),\n ' ',\n _react2.default.createElement('br', null)\n ),\n error_box\n )\n );\n }\n }\n});\n//# sourceMappingURL=CreateRoom.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * Component which shows the filtered file using a TimelinePanel\n */\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar FilePanel = _react2.default.createClass({\n displayName: 'FilePanel',\n\n propTypes: {\n roomId: _propTypes2.default.string.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n timelineSet: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this.updateTimelineSet(this.props.roomId);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n if (nextProps.roomId !== this.props.roomId) {\n // otherwise we race between re-rendering the TimelinePanel and setting the new timelineSet.\n //\n // FIXME: this race only happens because of the promise returned by getOrCreateFilter().\n // We should only need to create the containsUrl filter once per login session, so in practice\n // it shouldn't be being done here at all. Then we could just update the timelineSet directly\n // without resetting it first, and speed up room-change.\n this.setState({ timelineSet: null });\n this.updateTimelineSet(nextProps.roomId);\n }\n },\n\n updateTimelineSet: function updateTimelineSet(roomId) {\n var _this = this;\n\n var client = _MatrixClientPeg2.default.get();\n var room = client.getRoom(roomId);\n\n this.noRoom = !room;\n\n if (room) {\n var filter = new _matrixJsSdk2.default.Filter(client.credentials.userId);\n filter.setDefinition({\n \"room\": {\n \"timeline\": {\n \"contains_url\": true,\n \"types\": [\"m.room.message\"]\n }\n }\n });\n\n // FIXME: we shouldn't be doing this every time we change room - see comment above.\n client.getOrCreateFilter(\"FILTER_FILES_\" + client.credentials.userId, filter).then(function (filterId) {\n filter.filterId = filterId;\n var timelineSet = room.getOrCreateFilteredTimelineSet(filter);\n _this.setState({ timelineSet: timelineSet });\n }, function (error) {\n console.error(\"Failed to get or create file panel filter\", error);\n });\n } else {\n console.error(\"Failed to add filtered timelineSet for FilePanel as no room!\");\n }\n },\n\n render: function render() {\n if (_MatrixClientPeg2.default.get().isGuest()) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_FilePanel mx_RoomView_messageListWrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_empty' },\n (0, _languageHandler._t)(\"You must <a>register</a> to use this functionality\", {}, { 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: '#/register', key: 'sub' },\n sub\n );\n } })\n )\n );\n } else if (this.noRoom) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_FilePanel mx_RoomView_messageListWrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_empty' },\n (0, _languageHandler._t)(\"You must join the room to see its files\")\n )\n );\n }\n\n // wrap a TimelinePanel with the jump-to-event bits turned off.\n var TimelinePanel = _index2.default.getComponent(\"structures.TimelinePanel\");\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n\n if (this.state.timelineSet) {\n // console.log(\"rendering TimelinePanel for timelineSet \" + this.state.timelineSet.room.roomId + \" \" +\n // \"(\" + this.state.timelineSet._timelines.join(\", \") + \")\" + \" with key \" + this.props.roomId);\n return _react2.default.createElement(TimelinePanel, { key: \"filepanel_\" + this.props.roomId,\n className: 'mx_FilePanel',\n manageReadReceipts: false,\n manageReadMarkers: false,\n timelineSet: this.state.timelineSet,\n showUrlPreview: false,\n tileShape: 'file_grid',\n empty: (0, _languageHandler._t)('There are no visible files in this room')\n });\n } else {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_FilePanel' },\n _react2.default.createElement(Loader, null)\n );\n }\n }\n});\n\nmodule.exports = FilePanel;\n//# sourceMappingURL=FilePanel.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _HtmlUtils = require('../../HtmlUtils');\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _AccessibleButton = require('../views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _Modal = require('../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _GroupStore = require('../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _FlairStore = require('../../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nvar _GroupAddressPicker = require('../../GroupAddressPicker');\n\nvar _matrixTo = require('../../matrix-to');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LONG_DESC_PLACEHOLDER = (0, _languageHandler._td)('<h1>HTML for your community\\'s page</h1>\\n<p>\\n Use the long description to introduce new members to the community, or distribute\\n some important <a href=\"foo\">links</a>\\n</p>\\n<p>\\n You can even use \\'img\\' tags\\n</p>\\n'); /*\n Copyright 2017 Vector Creations Ltd.\n Copyright 2017, 2018 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar RoomSummaryType = _propTypes2.default.shape({\n room_id: _propTypes2.default.string.isRequired,\n profile: _propTypes2.default.shape({\n name: _propTypes2.default.string,\n avatar_url: _propTypes2.default.string,\n canonical_alias: _propTypes2.default.string\n }).isRequired\n});\n\nvar UserSummaryType = _propTypes2.default.shape({\n summaryInfo: _propTypes2.default.shape({\n user_id: _propTypes2.default.string.isRequired,\n role_id: _propTypes2.default.string,\n avatar_url: _propTypes2.default.string,\n displayname: _propTypes2.default.string\n }).isRequired\n});\n\nvar CategoryRoomList = _react2.default.createClass({\n displayName: 'CategoryRoomList',\n\n props: {\n rooms: _propTypes2.default.arrayOf(RoomSummaryType).isRequired,\n category: _propTypes2.default.shape({\n profile: _propTypes2.default.shape({\n name: _propTypes2.default.string\n }).isRequired\n }),\n groupId: _propTypes2.default.string.isRequired,\n\n // Whether the list should be editable\n editing: _propTypes2.default.bool.isRequired\n },\n\n onAddRoomsToSummaryClicked: function onAddRoomsToSummaryClicked(ev) {\n var _this = this;\n\n ev.preventDefault();\n var AddressPickerDialog = _index2.default.getComponent(\"dialogs.AddressPickerDialog\");\n _Modal2.default.createTrackedDialog('Add Rooms to Group Summary', '', AddressPickerDialog, {\n title: (0, _languageHandler._t)('Add rooms to the community summary'),\n description: (0, _languageHandler._t)(\"Which rooms would you like to add to this summary?\"),\n placeholder: (0, _languageHandler._t)(\"Room name or alias\"),\n button: (0, _languageHandler._t)(\"Add to summary\"),\n pickerType: 'room',\n validAddressTypes: ['mx-room-id'],\n groupId: this.props.groupId,\n onFinished: function onFinished(success, addrs) {\n if (!success) return;\n var errorList = [];\n _bluebird2.default.all(addrs.map(function (addr) {\n return _GroupStore2.default.addRoomToGroupSummary(_this.props.groupId, addr.address).catch(function () {\n errorList.push(addr.address);\n }).reflect();\n })).then(function () {\n if (errorList.length === 0) {\n return;\n }\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to add the following room to the group summary', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to add the following rooms to the summary of %(groupId)s:\", { groupId: _this.props.groupId }),\n description: errorList.join(\", \")\n });\n });\n }\n });\n },\n\n render: function render() {\n var _this2 = this;\n\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var addButton = this.props.editing ? _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_featuredThings_addButton',\n onClick: this.onAddRoomsToSummaryClicked\n },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-create-room.svg', width: '64', height: '64' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_addButton_label' },\n (0, _languageHandler._t)('Add a Room')\n )\n ) : _react2.default.createElement('div', null);\n\n var roomNodes = this.props.rooms.map(function (r) {\n return _react2.default.createElement(FeaturedRoom, {\n key: r.room_id,\n groupId: _this2.props.groupId,\n editing: _this2.props.editing,\n summaryInfo: r });\n });\n\n var catHeader = _react2.default.createElement('div', null);\n if (this.props.category && this.props.category.profile) {\n catHeader = _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_category' },\n this.props.category.profile.name\n );\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_container' },\n catHeader,\n roomNodes,\n addButton\n );\n }\n});\n\nvar FeaturedRoom = _react2.default.createClass({\n displayName: 'FeaturedRoom',\n\n props: {\n summaryInfo: RoomSummaryType.isRequired,\n editing: _propTypes2.default.bool.isRequired,\n groupId: _propTypes2.default.string.isRequired\n },\n\n onClick: function onClick(e) {\n e.preventDefault();\n e.stopPropagation();\n\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_alias: this.props.summaryInfo.profile.canonical_alias,\n room_id: this.props.summaryInfo.room_id\n });\n },\n\n onDeleteClicked: function onDeleteClicked(e) {\n var _this3 = this;\n\n e.preventDefault();\n e.stopPropagation();\n _GroupStore2.default.removeRoomFromGroupSummary(this.props.groupId, this.props.summaryInfo.room_id).catch(function (err) {\n console.error('Error whilst removing room from group summary', err);\n var roomName = _this3.props.summaryInfo.name || _this3.props.summaryInfo.canonical_alias || _this3.props.summaryInfo.room_id;\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to remove room from group summary', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to remove the room from the summary of %(groupId)s\", { groupId: _this3.props.groupId }),\n description: (0, _languageHandler._t)(\"The room '%(roomName)s' could not be removed from the summary.\", { roomName: roomName })\n });\n });\n },\n\n render: function render() {\n var RoomAvatar = _index2.default.getComponent(\"avatars.RoomAvatar\");\n\n var roomName = this.props.summaryInfo.profile.name || this.props.summaryInfo.profile.canonical_alias || (0, _languageHandler._t)(\"Unnamed Room\");\n\n var oobData = {\n roomId: this.props.summaryInfo.room_id,\n avatarUrl: this.props.summaryInfo.profile.avatar_url,\n name: roomName\n };\n\n var permalink = null;\n if (this.props.summaryInfo.profile && this.props.summaryInfo.profile.canonical_alias) {\n permalink = (0, _matrixTo.makeGroupPermalink)(this.props.summaryInfo.profile.canonical_alias);\n }\n\n var roomNameNode = null;\n if (permalink) {\n roomNameNode = _react2.default.createElement(\n 'a',\n { href: permalink, onClick: this.onClick },\n roomName\n );\n } else {\n roomNameNode = _react2.default.createElement(\n 'span',\n null,\n roomName\n );\n }\n\n var deleteButton = this.props.editing ? _react2.default.createElement('img', {\n className: 'mx_GroupView_featuredThing_deleteButton',\n src: 'img/cancel-small.svg',\n width: '14',\n height: '14',\n alt: 'Delete',\n onClick: this.onDeleteClicked }) : _react2.default.createElement('div', null);\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_featuredThing', onClick: this.onClick },\n _react2.default.createElement(RoomAvatar, { oobData: oobData, width: 64, height: 64 }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThing_name' },\n roomNameNode\n ),\n deleteButton\n );\n }\n});\n\nvar RoleUserList = _react2.default.createClass({\n displayName: 'RoleUserList',\n\n props: {\n users: _propTypes2.default.arrayOf(UserSummaryType).isRequired,\n role: _propTypes2.default.shape({\n profile: _propTypes2.default.shape({\n name: _propTypes2.default.string\n }).isRequired\n }),\n groupId: _propTypes2.default.string.isRequired,\n\n // Whether the list should be editable\n editing: _propTypes2.default.bool.isRequired\n },\n\n onAddUsersClicked: function onAddUsersClicked(ev) {\n var _this4 = this;\n\n ev.preventDefault();\n var AddressPickerDialog = _index2.default.getComponent(\"dialogs.AddressPickerDialog\");\n _Modal2.default.createTrackedDialog('Add Users to Group Summary', '', AddressPickerDialog, {\n title: (0, _languageHandler._t)('Add users to the community summary'),\n description: (0, _languageHandler._t)(\"Who would you like to add to this summary?\"),\n placeholder: (0, _languageHandler._t)(\"Name or matrix ID\"),\n button: (0, _languageHandler._t)(\"Add to summary\"),\n validAddressTypes: ['mx-user-id'],\n groupId: this.props.groupId,\n shouldOmitSelf: false,\n onFinished: function onFinished(success, addrs) {\n if (!success) return;\n var errorList = [];\n _bluebird2.default.all(addrs.map(function (addr) {\n return _GroupStore2.default.addUserToGroupSummary(addr.address).catch(function () {\n errorList.push(addr.address);\n }).reflect();\n })).then(function () {\n if (errorList.length === 0) {\n return;\n }\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to add the following users to the community summary', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to add the following users to the summary of %(groupId)s:\", { groupId: _this4.props.groupId }),\n description: errorList.join(\", \")\n });\n });\n }\n });\n },\n\n render: function render() {\n var _this5 = this;\n\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var addButton = this.props.editing ? _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_featuredThings_addButton', onClick: this.onAddUsersClicked },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-create-room.svg', width: '64', height: '64' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_addButton_label' },\n (0, _languageHandler._t)('Add a User')\n )\n ) : _react2.default.createElement('div', null);\n var userNodes = this.props.users.map(function (u) {\n return _react2.default.createElement(FeaturedUser, {\n key: u.user_id,\n summaryInfo: u,\n editing: _this5.props.editing,\n groupId: _this5.props.groupId });\n });\n var roleHeader = _react2.default.createElement('div', null);\n if (this.props.role && this.props.role.profile) {\n roleHeader = _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_category' },\n this.props.role.profile.name\n );\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_container' },\n roleHeader,\n userNodes,\n addButton\n );\n }\n});\n\nvar FeaturedUser = _react2.default.createClass({\n displayName: 'FeaturedUser',\n\n props: {\n summaryInfo: UserSummaryType.isRequired,\n editing: _propTypes2.default.bool.isRequired,\n groupId: _propTypes2.default.string.isRequired\n },\n\n onClick: function onClick(e) {\n e.preventDefault();\n e.stopPropagation();\n\n _dispatcher2.default.dispatch({\n action: 'view_start_chat_or_reuse',\n user_id: this.props.summaryInfo.user_id,\n go_home_on_cancel: false\n });\n },\n\n onDeleteClicked: function onDeleteClicked(e) {\n var _this6 = this;\n\n e.preventDefault();\n e.stopPropagation();\n _GroupStore2.default.removeUserFromGroupSummary(this.props.groupId, this.props.summaryInfo.user_id).catch(function (err) {\n console.error('Error whilst removing user from group summary', err);\n var displayName = _this6.props.summaryInfo.displayname || _this6.props.summaryInfo.user_id;\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to remove user from community summary', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to remove a user from the summary of %(groupId)s\", { groupId: _this6.props.groupId }),\n description: (0, _languageHandler._t)(\"The user '%(displayName)s' could not be removed from the summary.\", { displayName: displayName })\n });\n });\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n var name = this.props.summaryInfo.displayname || this.props.summaryInfo.user_id;\n\n var permalink = (0, _matrixTo.makeUserPermalink)(this.props.summaryInfo.user_id);\n var userNameNode = _react2.default.createElement(\n 'a',\n { href: permalink, onClick: this.onClick },\n name\n );\n var httpUrl = _MatrixClientPeg2.default.get().mxcUrlToHttp(this.props.summaryInfo.avatar_url, 64, 64);\n\n var deleteButton = this.props.editing ? _react2.default.createElement('img', {\n className: 'mx_GroupView_featuredThing_deleteButton',\n src: 'img/cancel-small.svg',\n width: '14',\n height: '14',\n alt: 'Delete',\n onClick: this.onDeleteClicked }) : _react2.default.createElement('div', null);\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_featuredThing', onClick: this.onClick },\n _react2.default.createElement(BaseAvatar, { name: name, url: httpUrl, width: 64, height: 64 }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThing_name' },\n userNameNode\n ),\n deleteButton\n );\n }\n});\n\nvar GROUP_JOINPOLICY_OPEN = \"open\";\nvar GROUP_JOINPOLICY_INVITE = \"invite\";\n\nexports.default = _react2.default.createClass({\n displayName: 'GroupView',\n\n propTypes: {\n groupId: _propTypes2.default.string.isRequired,\n // Whether this is the first time the group admin is viewing the group\n groupIsNew: _propTypes2.default.bool\n },\n\n childContextTypes: {\n groupStore: _propTypes2.default.instanceOf(_GroupStore2.default)\n },\n\n getInitialState: function getInitialState() {\n return {\n summary: null,\n isGroupPublicised: null,\n isUserPrivileged: null,\n groupRooms: null,\n groupRoomsLoading: null,\n error: null,\n editing: false,\n saving: false,\n uploadingAvatar: false,\n avatarChanged: false,\n membershipBusy: false,\n publicityBusy: false,\n inviterProfile: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n this._matrixClient = _MatrixClientPeg2.default.get();\n this._matrixClient.on(\"Group.myMembership\", this._onGroupMyMembership);\n\n this._changeAvatarComponent = null;\n this._initGroupStore(this.props.groupId, true);\n\n this._dispatcherRef = _dispatcher2.default.register(this._onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n this._matrixClient.removeListener(\"Group.myMembership\", this._onGroupMyMembership);\n _dispatcher2.default.unregister(this._dispatcherRef);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n var _this7 = this;\n\n if (this.props.groupId != newProps.groupId) {\n this.setState({\n summary: null,\n error: null\n }, function () {\n _this7._initGroupStore(newProps.groupId);\n });\n }\n },\n\n _onGroupMyMembership: function _onGroupMyMembership(group) {\n if (this._unmounted || group.groupId !== this.props.groupId) return;\n if (group.myMembership === 'leave') {\n // Leave settings - the user might have clicked the \"Leave\" button\n this._closeSettings();\n }\n this.setState({ membershipBusy: false });\n },\n\n _initGroupStore: function _initGroupStore(groupId, firstInit) {\n var _this8 = this;\n\n var group = this._matrixClient.getGroup(groupId);\n if (group && group.inviter && group.inviter.userId) {\n this._fetchInviterProfile(group.inviter.userId);\n }\n _GroupStore2.default.registerListener(groupId, this.onGroupStoreUpdated.bind(this, firstInit));\n var willDoOnboarding = false;\n // XXX: This should be more fluxy - let's get the error from GroupStore .getError or something\n _GroupStore2.default.on('error', function (err, errorGroupId, stateKey) {\n if (_this8._unmounted || groupId !== errorGroupId) return;\n if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN' && !willDoOnboarding) {\n _dispatcher2.default.dispatch({\n action: 'do_after_sync_prepared',\n deferred_action: {\n action: 'view_group',\n group_id: groupId\n }\n });\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n willDoOnboarding = true;\n }\n if (stateKey === _GroupStore2.default.STATE_KEY.Summary) {\n _this8.setState({\n summary: null,\n error: err,\n editing: false\n });\n }\n });\n },\n\n onGroupStoreUpdated: function onGroupStoreUpdated(firstInit) {\n var _this9 = this;\n\n if (this._unmounted) return;\n var summary = _GroupStore2.default.getSummary(this.props.groupId);\n if (summary.profile) {\n // Default profile fields should be \"\" for later sending to the server (which\n // requires that the fields are strings, not null)\n [\"avatar_url\", \"long_description\", \"name\", \"short_description\"].forEach(function (k) {\n summary.profile[k] = summary.profile[k] || \"\";\n });\n }\n this.setState({\n summary: summary,\n summaryLoading: !_GroupStore2.default.isStateReady(this.props.groupId, _GroupStore2.default.STATE_KEY.Summary),\n isGroupPublicised: _GroupStore2.default.getGroupPublicity(this.props.groupId),\n isUserPrivileged: _GroupStore2.default.isUserPrivileged(this.props.groupId),\n groupRooms: _GroupStore2.default.getGroupRooms(this.props.groupId),\n groupRoomsLoading: !_GroupStore2.default.isStateReady(this.props.groupId, _GroupStore2.default.STATE_KEY.GroupRooms),\n isUserMember: _GroupStore2.default.getGroupMembers(this.props.groupId).some(function (m) {\n return m.userId === _this9._matrixClient.credentials.userId;\n })\n });\n // XXX: This might not work but this.props.groupIsNew unused anyway\n if (this.props.groupIsNew && firstInit) {\n this._onEditClick();\n }\n },\n _fetchInviterProfile: function _fetchInviterProfile(userId) {\n var _this10 = this;\n\n this.setState({\n inviterProfileBusy: true\n });\n this._matrixClient.getProfileInfo(userId).then(function (resp) {\n if (_this10._unmounted) return;\n _this10.setState({\n inviterProfile: {\n avatarUrl: resp.avatar_url,\n displayName: resp.displayname\n }\n });\n }).catch(function (e) {\n console.error('Error getting group inviter profile', e);\n }).finally(function () {\n if (_this10._unmounted) return;\n _this10.setState({\n inviterProfileBusy: false\n });\n });\n },\n\n\n _onShowRhsClick: function _onShowRhsClick(ev) {\n _dispatcher2.default.dispatch({ action: 'show_right_panel' });\n },\n\n _onEditClick: function _onEditClick() {\n this.setState({\n editing: true,\n profileForm: (0, _assign2.default)({}, this.state.summary.profile),\n joinableForm: {\n policyType: this.state.summary.profile.is_openly_joinable ? GROUP_JOINPOLICY_OPEN : GROUP_JOINPOLICY_INVITE\n }\n });\n _dispatcher2.default.dispatch({\n action: 'panel_disable',\n sideDisabled: true\n });\n },\n\n _onShareClick: function _onShareClick() {\n var ShareDialog = _index2.default.getComponent(\"dialogs.ShareDialog\");\n _Modal2.default.createTrackedDialog('share community dialog', '', ShareDialog, {\n target: this._matrixClient.getGroup(this.props.groupId)\n });\n },\n\n _onCancelClick: function _onCancelClick() {\n this._closeSettings();\n },\n\n _onAction: function _onAction(payload) {\n switch (payload.action) {\n // NOTE: close_settings is an app-wide dispatch; as it is dispatched from MatrixChat\n case 'close_settings':\n this.setState({\n editing: false,\n profileForm: null\n });\n break;\n default:\n break;\n }\n },\n _closeSettings: function _closeSettings() {\n _dispatcher2.default.dispatch({ action: 'close_settings' });\n },\n\n\n _onNameChange: function _onNameChange(value) {\n var newProfileForm = (0, _assign2.default)(this.state.profileForm, { name: value });\n this.setState({\n profileForm: newProfileForm\n });\n },\n\n _onShortDescChange: function _onShortDescChange(value) {\n var newProfileForm = (0, _assign2.default)(this.state.profileForm, { short_description: value });\n this.setState({\n profileForm: newProfileForm\n });\n },\n\n _onLongDescChange: function _onLongDescChange(e) {\n var newProfileForm = (0, _assign2.default)(this.state.profileForm, { long_description: e.target.value });\n this.setState({\n profileForm: newProfileForm\n });\n },\n\n _onAvatarSelected: function _onAvatarSelected(ev) {\n var _this11 = this;\n\n var file = ev.target.files[0];\n if (!file) return;\n\n this.setState({ uploadingAvatar: true });\n this._matrixClient.uploadContent(file).then(function (url) {\n var newProfileForm = (0, _assign2.default)(_this11.state.profileForm, { avatar_url: url });\n _this11.setState({\n uploadingAvatar: false,\n profileForm: newProfileForm,\n\n // Indicate that FlairStore needs to be poked to show this change\n // in TagTile (TagPanel), Flair and GroupTile (MyGroups).\n avatarChanged: true\n });\n }).catch(function (e) {\n _this11.setState({ uploadingAvatar: false });\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to upload avatar image\", e);\n _Modal2.default.createTrackedDialog('Failed to upload image', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: (0, _languageHandler._t)('Failed to upload image')\n });\n }).done();\n },\n\n _onJoinableChange: function _onJoinableChange(ev) {\n this.setState({\n joinableForm: { policyType: ev.target.value }\n });\n },\n\n _onSaveClick: function _onSaveClick() {\n var _this12 = this;\n\n this.setState({ saving: true });\n var savePromise = this.state.isUserPrivileged ? this._saveGroup() : _bluebird2.default.resolve();\n savePromise.then(function (result) {\n _this12.setState({\n saving: false,\n editing: false,\n summary: null\n });\n _dispatcher2.default.dispatch({ action: 'panel_disable' });\n _this12._initGroupStore(_this12.props.groupId);\n\n if (_this12.state.avatarChanged) {\n // XXX: Evil - poking a store should be done from an async action\n _FlairStore2.default.refreshGroupProfile(_this12._matrixClient, _this12.props.groupId);\n }\n }).catch(function (e) {\n _this12.setState({\n saving: false\n });\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to save community profile\", e);\n _Modal2.default.createTrackedDialog('Failed to update group', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: (0, _languageHandler._t)('Failed to update community')\n });\n }).finally(function () {\n _this12.setState({\n avatarChanged: false\n });\n }).done();\n },\n\n _saveGroup: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(this._matrixClient.setGroupProfile(this.props.groupId, this.state.profileForm));\n\n case 2:\n _context.next = 4;\n return (0, _bluebird.resolve)(this._matrixClient.setGroupJoinPolicy(this.props.groupId, {\n type: this.state.joinableForm.policyType\n }));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function _saveGroup() {\n return _ref.apply(this, arguments);\n }\n\n return _saveGroup;\n }(),\n\n _onAcceptInviteClick: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var _this13 = this;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n this.setState({ membershipBusy: true });\n\n // Wait 500ms to prevent flashing. Do this before sending a request otherwise we risk the\n // spinner disappearing after we have fetched new group data.\n _context2.next = 3;\n return (0, _bluebird.resolve)(_bluebird2.default.delay(500));\n\n case 3:\n\n _GroupStore2.default.acceptGroupInvite(this.props.groupId).then(function () {\n // don't reset membershipBusy here: wait for the membership change to come down the sync\n }).catch(function (e) {\n _this13.setState({ membershipBusy: false });\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Error accepting invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Unable to accept invite\")\n });\n });\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function _onAcceptInviteClick() {\n return _ref2.apply(this, arguments);\n }\n\n return _onAcceptInviteClick;\n }(),\n\n _onRejectInviteClick: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var _this14 = this;\n\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n this.setState({ membershipBusy: true });\n\n // Wait 500ms to prevent flashing. Do this before sending a request otherwise we risk the\n // spinner disappearing after we have fetched new group data.\n _context3.next = 3;\n return (0, _bluebird.resolve)(_bluebird2.default.delay(500));\n\n case 3:\n\n _GroupStore2.default.leaveGroup(this.props.groupId).then(function () {\n // don't reset membershipBusy here: wait for the membership change to come down the sync\n }).catch(function (e) {\n _this14.setState({ membershipBusy: false });\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Error rejecting invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Unable to reject invite\")\n });\n });\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function _onRejectInviteClick() {\n return _ref3.apply(this, arguments);\n }\n\n return _onRejectInviteClick;\n }(),\n\n _onJoinClick: function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n var _this15 = this;\n\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!this._matrixClient.isGuest()) {\n _context4.next = 3;\n break;\n }\n\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n return _context4.abrupt('return');\n\n case 3:\n\n this.setState({ membershipBusy: true });\n\n // Wait 500ms to prevent flashing. Do this before sending a request otherwise we risk the\n // spinner disappearing after we have fetched new group data.\n _context4.next = 6;\n return (0, _bluebird.resolve)(_bluebird2.default.delay(500));\n\n case 6:\n\n _GroupStore2.default.joinGroup(this.props.groupId).then(function () {\n // don't reset membershipBusy here: wait for the membership change to come down the sync\n }).catch(function (e) {\n _this15.setState({ membershipBusy: false });\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Error joining room', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Unable to join community\")\n });\n });\n\n case 7:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function _onJoinClick() {\n return _ref4.apply(this, arguments);\n }\n\n return _onJoinClick;\n }(),\n\n _leaveGroupWarnings: function _leaveGroupWarnings() {\n var warnings = [];\n\n if (this.state.isUserPrivileged) {\n warnings.push(_react2.default.createElement(\n 'span',\n { className: 'warning' },\n \" \" /* Whitespace, otherwise the sentences get smashed together */,\n (0, _languageHandler._t)(\"You are an administrator of this community. You will not be \" + \"able to rejoin without an invite from another administrator.\")\n ));\n }\n\n return warnings;\n },\n\n _onLeaveClick: function _onLeaveClick() {\n var _this16 = this;\n\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n var warnings = this._leaveGroupWarnings();\n\n _Modal2.default.createTrackedDialog('Leave Group', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Leave Community\"),\n description: _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Leave %(groupName)s?\", { groupName: this.props.groupId }),\n warnings\n ),\n button: (0, _languageHandler._t)(\"Leave\"),\n danger: this.state.isUserPrivileged,\n onFinished: function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(confirmed) {\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n if (confirmed) {\n _context5.next = 2;\n break;\n }\n\n return _context5.abrupt('return');\n\n case 2:\n\n _this16.setState({ membershipBusy: true });\n\n // Wait 500ms to prevent flashing. Do this before sending a request otherwise we risk the\n // spinner disappearing after we have fetched new group data.\n _context5.next = 5;\n return (0, _bluebird.resolve)(_bluebird2.default.delay(500));\n\n case 5:\n\n _GroupStore2.default.leaveGroup(_this16.props.groupId).then(function () {\n // don't reset membershipBusy here: wait for the membership change to come down the sync\n }).catch(function (e) {\n _this16.setState({ membershipBusy: false });\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Error leaving community', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Unable to leave community\")\n });\n });\n\n case 6:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, _this16);\n }));\n\n return function onFinished(_x) {\n return _ref5.apply(this, arguments);\n };\n }()\n });\n },\n\n _onAddRoomsClick: function _onAddRoomsClick() {\n (0, _GroupAddressPicker.showGroupAddRoomDialog)(this.props.groupId);\n },\n\n _getGroupSection: function _getGroupSection() {\n var groupSettingsSectionClasses = (0, _classnames2.default)({\n \"mx_GroupView_group\": this.state.editing,\n \"mx_GroupView_group_disabled\": this.state.editing && !this.state.isUserPrivileged\n });\n\n var header = this.state.editing ? _react2.default.createElement(\n 'h2',\n null,\n ' ',\n (0, _languageHandler._t)('Community Settings'),\n ' '\n ) : _react2.default.createElement('div', null);\n var changeDelayWarning = this.state.editing && this.state.isUserPrivileged ? _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_changeDelayWarning' },\n (0, _languageHandler._t)('Changes made to your community <bold1>name</bold1> and <bold2>avatar</bold2> ' + 'might not be seen by other users for up to 30 minutes.', {}, {\n 'bold1': function bold1(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n ' ',\n sub,\n ' '\n );\n },\n 'bold2': function bold2(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n ' ',\n sub,\n ' '\n );\n }\n })\n ) : _react2.default.createElement('div', null);\n return _react2.default.createElement(\n 'div',\n { className: groupSettingsSectionClasses },\n header,\n changeDelayWarning,\n this._getJoinableNode(),\n this._getLongDescriptionNode(),\n this._getRoomsNode()\n );\n },\n\n _getRoomsNode: function _getRoomsNode() {\n var RoomDetailList = _index2.default.getComponent('rooms.RoomDetailList');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var TintableSvg = _index2.default.getComponent('elements.TintableSvg');\n var Spinner = _index2.default.getComponent('elements.Spinner');\n var ToolTipButton = _index2.default.getComponent('elements.ToolTipButton');\n\n var roomsHelpNode = this.state.editing ? _react2.default.createElement(ToolTipButton, { helpText: (0, _languageHandler._t)('These rooms are displayed to community members on the community page. ' + 'Community members can join the rooms by clicking on them.') }) : _react2.default.createElement('div', null);\n\n var addRoomRow = this.state.editing ? _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_GroupView_rooms_header_addRow',\n onClick: this._onAddRoomsClick\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_rooms_header_addRow_button' },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-room-add.svg', width: '24', height: '24' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_rooms_header_addRow_label' },\n (0, _languageHandler._t)('Add rooms to this community')\n )\n ) : _react2.default.createElement('div', null);\n var roomDetailListClassName = (0, _classnames2.default)({\n \"mx_fadable\": true,\n \"mx_fadable_faded\": this.state.editing\n });\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_rooms' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_rooms_header' },\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Rooms'),\n roomsHelpNode\n ),\n addRoomRow\n ),\n this.state.groupRoomsLoading ? _react2.default.createElement(Spinner, null) : _react2.default.createElement(RoomDetailList, {\n rooms: this.state.groupRooms,\n className: roomDetailListClassName })\n );\n },\n\n _getFeaturedRoomsNode: function _getFeaturedRoomsNode() {\n var _this17 = this;\n\n var summary = this.state.summary;\n\n var defaultCategoryRooms = [];\n var categoryRooms = {};\n summary.rooms_section.rooms.forEach(function (r) {\n if (r.category_id === null) {\n defaultCategoryRooms.push(r);\n } else {\n var list = categoryRooms[r.category_id];\n if (list === undefined) {\n list = [];\n categoryRooms[r.category_id] = list;\n }\n list.push(r);\n }\n });\n\n var defaultCategoryNode = _react2.default.createElement(CategoryRoomList, {\n rooms: defaultCategoryRooms,\n groupId: this.props.groupId,\n editing: this.state.editing });\n var categoryRoomNodes = (0, _keys2.default)(categoryRooms).map(function (catId) {\n var cat = summary.rooms_section.categories[catId];\n return _react2.default.createElement(CategoryRoomList, {\n key: catId,\n rooms: categoryRooms[catId],\n category: cat,\n groupId: _this17.props.groupId,\n editing: _this17.state.editing });\n });\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_header' },\n (0, _languageHandler._t)('Featured Rooms:')\n ),\n defaultCategoryNode,\n categoryRoomNodes\n );\n },\n\n _getFeaturedUsersNode: function _getFeaturedUsersNode() {\n var _this18 = this;\n\n var summary = this.state.summary;\n\n var noRoleUsers = [];\n var roleUsers = {};\n summary.users_section.users.forEach(function (u) {\n if (u.role_id === null) {\n noRoleUsers.push(u);\n } else {\n var list = roleUsers[u.role_id];\n if (list === undefined) {\n list = [];\n roleUsers[u.role_id] = list;\n }\n list.push(u);\n }\n });\n\n var noRoleNode = _react2.default.createElement(RoleUserList, {\n users: noRoleUsers,\n groupId: this.props.groupId,\n editing: this.state.editing });\n var roleUserNodes = (0, _keys2.default)(roleUsers).map(function (roleId) {\n var role = summary.users_section.roles[roleId];\n return _react2.default.createElement(RoleUserList, {\n key: roleId,\n users: roleUsers[roleId],\n role: role,\n groupId: _this18.props.groupId,\n editing: _this18.state.editing });\n });\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_header' },\n (0, _languageHandler._t)('Featured Users:')\n ),\n noRoleNode,\n roleUserNodes\n );\n },\n\n _getMembershipSection: function _getMembershipSection() {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n\n var group = this._matrixClient.getGroup(this.props.groupId);\n\n if (group && group.myMembership === 'invite') {\n if (this.state.membershipBusy || this.state.inviterProfileBusy) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membershipSection' },\n _react2.default.createElement(Spinner, null)\n );\n }\n var httpInviterAvatar = this.state.inviterProfile ? this._matrixClient.mxcUrlToHttp(this.state.inviterProfile.avatarUrl, 36, 36) : null;\n\n var inviterName = group.inviter.userId;\n if (this.state.inviterProfile) {\n inviterName = this.state.inviterProfile.displayName || group.inviter.userId;\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membershipSection mx_GroupView_membershipSection_invited' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membershipSubSection' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membershipSection_description' },\n _react2.default.createElement(BaseAvatar, { url: httpInviterAvatar,\n name: inviterName,\n width: 36,\n height: 36\n }),\n (0, _languageHandler._t)(\"%(inviter)s has invited you to join this community\", {\n inviter: inviterName\n })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membership_buttonContainer' },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_textButton mx_RoomHeader_textButton',\n onClick: this._onAcceptInviteClick\n },\n (0, _languageHandler._t)(\"Accept\")\n ),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_textButton mx_RoomHeader_textButton',\n onClick: this._onRejectInviteClick\n },\n (0, _languageHandler._t)(\"Decline\")\n )\n )\n )\n );\n }\n\n var membershipContainerExtraClasses = void 0;\n var membershipButtonExtraClasses = void 0;\n var membershipButtonTooltip = void 0;\n var membershipButtonText = void 0;\n var membershipButtonOnClick = void 0;\n\n // User is not in the group\n if ((!group || group.myMembership === 'leave') && this.state.summary && this.state.summary.profile && Boolean(this.state.summary.profile.is_openly_joinable)) {\n membershipButtonText = (0, _languageHandler._t)(\"Join this community\");\n membershipButtonOnClick = this._onJoinClick;\n\n membershipButtonExtraClasses = 'mx_GroupView_joinButton';\n membershipContainerExtraClasses = 'mx_GroupView_membershipSection_leave';\n } else if (group && group.myMembership === 'join' && this.state.editing) {\n membershipButtonText = (0, _languageHandler._t)(\"Leave this community\");\n membershipButtonOnClick = this._onLeaveClick;\n membershipButtonTooltip = this.state.isUserPrivileged ? (0, _languageHandler._t)(\"You are an administrator of this community\") : (0, _languageHandler._t)(\"You are a member of this community\");\n\n membershipButtonExtraClasses = {\n 'mx_GroupView_leaveButton': true,\n 'mx_RoomHeader_textButton_danger': this.state.isUserPrivileged\n };\n membershipContainerExtraClasses = 'mx_GroupView_membershipSection_joined';\n } else {\n return null;\n }\n\n var membershipButtonClasses = (0, _classnames2.default)(['mx_RoomHeader_textButton', 'mx_GroupView_textButton'], membershipButtonExtraClasses);\n\n var membershipContainerClasses = (0, _classnames2.default)('mx_GroupView_membershipSection', membershipContainerExtraClasses);\n\n return _react2.default.createElement(\n 'div',\n { className: membershipContainerClasses },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membershipSubSection' },\n this.state.membershipBusy ? _react2.default.createElement(Spinner, null) : _react2.default.createElement('div', null),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membership_buttonContainer' },\n _react2.default.createElement(\n _AccessibleButton2.default,\n {\n className: membershipButtonClasses,\n onClick: membershipButtonOnClick,\n title: membershipButtonTooltip\n },\n membershipButtonText\n )\n )\n )\n );\n },\n\n _getJoinableNode: function _getJoinableNode() {\n var InlineSpinner = _index2.default.getComponent('elements.InlineSpinner');\n return this.state.editing ? _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Who can join this community?'),\n this.state.groupJoinableLoading ? _react2.default.createElement(InlineSpinner, null) : _react2.default.createElement('div', null)\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio',\n value: GROUP_JOINPOLICY_INVITE,\n checked: this.state.joinableForm.policyType === GROUP_JOINPOLICY_INVITE,\n onChange: this._onJoinableChange\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_label_text' },\n (0, _languageHandler._t)('Only people who have been invited')\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio',\n value: GROUP_JOINPOLICY_OPEN,\n checked: this.state.joinableForm.policyType === GROUP_JOINPOLICY_OPEN,\n onChange: this._onJoinableChange\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_label_text' },\n (0, _languageHandler._t)('Everyone')\n )\n )\n )\n ) : null;\n },\n\n _getLongDescriptionNode: function _getLongDescriptionNode() {\n var summary = this.state.summary;\n var description = null;\n if (summary.profile && summary.profile.long_description) {\n description = (0, _HtmlUtils.sanitizedHtmlNode)(summary.profile.long_description);\n } else if (this.state.isUserPrivileged) {\n description = _react2.default.createElement(\n 'div',\n {\n className: 'mx_GroupView_groupDesc_placeholder',\n onClick: this._onEditClick\n },\n (0, _languageHandler._t)('Your community hasn\\'t got a Long Description, a HTML page to show to community members.<br />' + 'Click here to open settings and give it one!', {}, { 'br': _react2.default.createElement('br', null) })\n );\n }\n var groupDescEditingClasses = (0, _classnames2.default)({\n \"mx_GroupView_groupDesc\": true,\n \"mx_GroupView_groupDesc_disabled\": !this.state.isUserPrivileged\n });\n\n return this.state.editing ? _react2.default.createElement(\n 'div',\n { className: groupDescEditingClasses },\n _react2.default.createElement(\n 'h3',\n null,\n ' ',\n (0, _languageHandler._t)(\"Long Description (HTML)\"),\n ' '\n ),\n _react2.default.createElement('textarea', {\n value: this.state.profileForm.long_description,\n placeholder: (0, _languageHandler._t)(LONG_DESC_PLACEHOLDER),\n onChange: this._onLongDescChange,\n tabIndex: '4',\n key: 'editLongDesc'\n })\n ) : _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_groupDesc' },\n description\n );\n },\n\n render: function render() {\n var GroupAvatar = _index2.default.getComponent(\"avatars.GroupAvatar\");\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n\n if (this.state.summaryLoading && this.state.error === null || this.state.saving) {\n return _react2.default.createElement(Spinner, null);\n } else if (this.state.summary && !this.state.error) {\n var summary = this.state.summary;\n\n var avatarNode = void 0;\n var nameNode = void 0;\n var shortDescNode = void 0;\n var rightButtons = [];\n if (this.state.editing && this.state.isUserPrivileged) {\n var avatarImage = void 0;\n if (this.state.uploadingAvatar) {\n avatarImage = _react2.default.createElement(Spinner, null);\n } else {\n var _GroupAvatar = _index2.default.getComponent('avatars.GroupAvatar');\n avatarImage = _react2.default.createElement(_GroupAvatar, { groupId: this.props.groupId,\n groupName: this.state.profileForm.name,\n groupAvatarUrl: this.state.profileForm.avatar_url,\n width: 48, height: 48, resizeMethod: 'crop'\n });\n }\n\n avatarNode = _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_avatarPicker' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'avatarInput', className: 'mx_GroupView_avatarPicker_label' },\n avatarImage\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_avatarPicker_edit' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'avatarInput', className: 'mx_GroupView_avatarPicker_label' },\n _react2.default.createElement('img', { src: 'img/camera.svg',\n alt: (0, _languageHandler._t)(\"Upload avatar\"), title: (0, _languageHandler._t)(\"Upload avatar\"),\n width: '17', height: '15' })\n ),\n _react2.default.createElement('input', { id: 'avatarInput', className: 'mx_GroupView_uploadInput', type: 'file', onChange: this._onAvatarSelected })\n )\n );\n\n var EditableText = _index2.default.getComponent(\"elements.EditableText\");\n\n nameNode = _react2.default.createElement(EditableText, { ref: 'nameEditor',\n className: 'mx_GroupView_editable',\n placeholderClassName: 'mx_GroupView_placeholder',\n placeholder: (0, _languageHandler._t)('Community Name'),\n blurToCancel: false,\n initialValue: this.state.profileForm.name,\n onValueChanged: this._onNameChange,\n tabIndex: '1',\n dir: 'auto' });\n\n shortDescNode = _react2.default.createElement(EditableText, { ref: 'descriptionEditor',\n className: 'mx_GroupView_editable',\n placeholderClassName: 'mx_GroupView_placeholder',\n placeholder: (0, _languageHandler._t)(\"Description\"),\n blurToCancel: false,\n initialValue: this.state.profileForm.short_description,\n onValueChanged: this._onShortDescChange,\n tabIndex: '2',\n dir: 'auto' });\n } else {\n var onGroupHeaderItemClick = this.state.isUserMember ? this._onEditClick : null;\n var groupAvatarUrl = summary.profile ? summary.profile.avatar_url : null;\n var groupName = summary.profile ? summary.profile.name : null;\n avatarNode = _react2.default.createElement(GroupAvatar, {\n groupId: this.props.groupId,\n groupAvatarUrl: groupAvatarUrl,\n groupName: groupName,\n onClick: onGroupHeaderItemClick,\n width: 48, height: 48\n });\n if (summary.profile && summary.profile.name) {\n nameNode = _react2.default.createElement(\n 'div',\n { onClick: onGroupHeaderItemClick },\n _react2.default.createElement(\n 'span',\n null,\n summary.profile.name\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_GroupView_header_groupid' },\n '(',\n this.props.groupId,\n ')'\n )\n );\n } else {\n nameNode = _react2.default.createElement(\n 'span',\n { onClick: onGroupHeaderItemClick },\n this.props.groupId\n );\n }\n if (summary.profile && summary.profile.short_description) {\n shortDescNode = _react2.default.createElement(\n 'span',\n { onClick: onGroupHeaderItemClick },\n summary.profile.short_description\n );\n }\n }\n\n if (this.state.editing) {\n rightButtons.push(_react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_textButton mx_RoomHeader_textButton',\n onClick: this._onSaveClick, key: '_saveButton'\n },\n (0, _languageHandler._t)('Save')\n ));\n rightButtons.push(_react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_cancelButton', onClick: this._onCancelClick, key: '_cancelButton' },\n _react2.default.createElement('img', { src: 'img/cancel.svg', className: 'mx_filterFlipColor',\n width: '18', height: '18', alt: (0, _languageHandler._t)(\"Cancel\") })\n ));\n } else {\n if (summary.user && summary.user.membership === 'join') {\n rightButtons.push(_react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupHeader_button',\n onClick: this._onEditClick, title: (0, _languageHandler._t)(\"Community Settings\"), key: '_editButton'\n },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-settings-room.svg', width: '16', height: '16' })\n ));\n }\n rightButtons.push(_react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupHeader_button', onClick: this._onShareClick, title: (0, _languageHandler._t)('Share Community'), key: '_shareButton' },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-share.svg', width: '16', height: '16' })\n ));\n if (this.props.collapsedRhs) {\n rightButtons.push(_react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupHeader_button',\n onClick: this._onShowRhsClick, title: (0, _languageHandler._t)('Show panel'), key: '_maximiseButton'\n },\n _react2.default.createElement(TintableSvg, { src: 'img/maximise.svg', width: '10', height: '16' })\n ));\n }\n }\n\n var headerClasses = {\n mx_GroupView_header: true,\n mx_GroupView_header_view: !this.state.editing,\n mx_GroupView_header_isUserMember: this.state.isUserMember\n };\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView' },\n _react2.default.createElement(\n 'div',\n { className: (0, _classnames2.default)(headerClasses) },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_header_leftCol' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_header_avatar' },\n avatarNode\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_header_info' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_header_name' },\n nameNode\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_header_shortDesc' },\n shortDescNode\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_header_rightCol' },\n rightButtons\n )\n ),\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { className: 'mx_GroupView_body' },\n this._getMembershipSection(),\n this._getGroupSection()\n )\n );\n } else if (this.state.error) {\n if (this.state.error.httpStatus === 404) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_error' },\n (0, _languageHandler._t)('Community %(groupId)s not found', { groupId: this.props.groupId })\n );\n } else {\n var extraText = void 0;\n if (this.state.error.errcode === 'M_UNRECOGNIZED') {\n extraText = _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('This Home server does not support communities')\n );\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_error' },\n (0, _languageHandler._t)('Failed to load %(groupId)s', { groupId: this.props.groupId }),\n extraText\n );\n }\n } else {\n console.error(\"Invalid state for GroupView\");\n return _react2.default.createElement('div', null);\n }\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupView.js.map","'use strict';\nconst ipRegex = require('ip-regex');\n\nconst isIp = module.exports = x => ipRegex({exact: true}).test(x);\nisIp.v4 = x => ipRegex.v4({exact: true}).test(x);\nisIp.v6 = x => ipRegex.v6({exact: true}).test(x);\n","'use strict';\n\nconst v4 = '(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])(?:\\\\.(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])){3}';\n\nconst v6seg = '[0-9a-fA-F]{1,4}';\nconst v6 = `\n(\n(?:${v6seg}:){7}(?:${v6seg}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${v6seg}:){6}(?:${v4}|:${v6seg}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${v6seg}:){5}(?::${v4}|(:${v6seg}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${v6seg}:){4}(?:(:${v6seg}){0,1}:${v4}|(:${v6seg}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${v6seg}:){3}(?:(:${v6seg}){0,2}:${v4}|(:${v6seg}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${v6seg}:){2}(?:(:${v6seg}){0,3}:${v4}|(:${v6seg}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${v6seg}:){1}(?:(:${v6seg}){0,4}:${v4}|(:${v6seg}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::((?::${v6seg}){0,5}:${v4}|(?::${v6seg}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\\s*\\/\\/.*$/gm, '').replace(/\\n/g, '').trim();\n\nconst ip = module.exports = opts => opts && opts.exact ?\n\tnew RegExp(`(?:^${v4}$)|(?:^${v6}$)`) :\n\tnew RegExp(`(?:${v4})|(?:${v6})`, 'g');\n\nip.v4 = opts => opts && opts.exact ? new RegExp(`^${v4}$`) : new RegExp(v4, 'g');\nip.v6 = opts => opts && opts.exact ? new RegExp(`^${v6}$`) : new RegExp(v6, 'g');\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map characters to HTML entities. */\nvar htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n\n/**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\nvar escapeHtmlChar = basePropertyOf(htmlEscapes);\n\nmodule.exports = escapeHtmlChar;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\n(function(factory) {\n\n // Find the global object for export to both the browser and web workers.\n var globalObject = typeof window === 'object' && window ||\n typeof self === 'object' && self;\n\n // Setup highlight.js for different environments. First is Node.js or\n // CommonJS.\n if(typeof exports !== 'undefined') {\n factory(exports);\n } else if(globalObject) {\n // Export hljs globally even when using AMD for cases when this script\n // is loaded with others that may still expect a global hljs.\n globalObject.hljs = factory({});\n\n // Finally register the global hljs with AMD.\n if(typeof define === 'function' && define.amd) {\n define([], function() {\n return globalObject.hljs;\n });\n }\n }\n\n}(function(hljs) {\n // Convenience variables for build-in objects\n var ArrayProto = [],\n objectKeys = Object.keys;\n\n // Global internal variables used within the highlight.js library.\n var languages = {},\n aliases = {};\n\n // Regular expressions used throughout the highlight.js library.\n var noHighlightRe = /^(no-?highlight|plain|text)$/i,\n languagePrefixRe = /\\blang(?:uage)?-([\\w-]+)\\b/i,\n fixMarkupRe = /((^(<[^>]+>|\\t|)+|(?:\\n)))/gm;\n\n var spanEndTag = '</span>';\n\n // Global options used when within external APIs. This is modified when\n // calling the `hljs.configure` function.\n var options = {\n classPrefix: 'hljs-',\n tabReplace: null,\n useBR: false,\n languages: undefined\n };\n\n\n /* Utility functions */\n\n function escape(value) {\n return value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n }\n\n function tag(node) {\n return node.nodeName.toLowerCase();\n }\n\n function testRe(re, lexeme) {\n var match = re && re.exec(lexeme);\n return match && match.index === 0;\n }\n\n function isNotHighlighted(language) {\n return noHighlightRe.test(language);\n }\n\n function blockLanguage(block) {\n var i, match, length, _class;\n var classes = block.className + ' ';\n\n classes += block.parentNode ? block.parentNode.className : '';\n\n // language-* takes precedence over non-prefixed class names.\n match = languagePrefixRe.exec(classes);\n if (match) {\n return getLanguage(match[1]) ? match[1] : 'no-highlight';\n }\n\n classes = classes.split(/\\s+/);\n\n for (i = 0, length = classes.length; i < length; i++) {\n _class = classes[i]\n\n if (isNotHighlighted(_class) || getLanguage(_class)) {\n return _class;\n }\n }\n }\n\n function inherit(parent) { // inherit(parent, override_obj, override_obj, ...)\n var key;\n var result = {};\n var objects = Array.prototype.slice.call(arguments, 1);\n\n for (key in parent)\n result[key] = parent[key];\n objects.forEach(function(obj) {\n for (key in obj)\n result[key] = obj[key];\n });\n return result;\n }\n\n /* Stream merging */\n\n function nodeStream(node) {\n var result = [];\n (function _nodeStream(node, offset) {\n for (var child = node.firstChild; child; child = child.nextSibling) {\n if (child.nodeType === 3)\n offset += child.nodeValue.length;\n else if (child.nodeType === 1) {\n result.push({\n event: 'start',\n offset: offset,\n node: child\n });\n offset = _nodeStream(child, offset);\n // Prevent void elements from having an end tag that would actually\n // double them in the output. There are more void elements in HTML\n // but we list only those realistically expected in code display.\n if (!tag(child).match(/br|hr|img|input/)) {\n result.push({\n event: 'stop',\n offset: offset,\n node: child\n });\n }\n }\n }\n return offset;\n })(node, 0);\n return result;\n }\n\n function mergeStreams(original, highlighted, value) {\n var processed = 0;\n var result = '';\n var nodeStack = [];\n\n function selectStream() {\n if (!original.length || !highlighted.length) {\n return original.length ? original : highlighted;\n }\n if (original[0].offset !== highlighted[0].offset) {\n return (original[0].offset < highlighted[0].offset) ? original : highlighted;\n }\n\n /*\n To avoid starting the stream just before it should stop the order is\n ensured that original always starts first and closes last:\n\n if (event1 == 'start' && event2 == 'start')\n return original;\n if (event1 == 'start' && event2 == 'stop')\n return highlighted;\n if (event1 == 'stop' && event2 == 'start')\n return original;\n if (event1 == 'stop' && event2 == 'stop')\n return highlighted;\n\n ... which is collapsed to:\n */\n return highlighted[0].event === 'start' ? original : highlighted;\n }\n\n function open(node) {\n function attr_str(a) {return ' ' + a.nodeName + '=\"' + escape(a.value).replace('\"', '"') + '\"';}\n result += '<' + tag(node) + ArrayProto.map.call(node.attributes, attr_str).join('') + '>';\n }\n\n function close(node) {\n result += '</' + tag(node) + '>';\n }\n\n function render(event) {\n (event.event === 'start' ? open : close)(event.node);\n }\n\n while (original.length || highlighted.length) {\n var stream = selectStream();\n result += escape(value.substring(processed, stream[0].offset));\n processed = stream[0].offset;\n if (stream === original) {\n /*\n On any opening or closing tag of the original markup we first close\n the entire highlighted node stack, then render the original tag along\n with all the following original tags at the same offset and then\n reopen all the tags on the highlighted stack.\n */\n nodeStack.reverse().forEach(close);\n do {\n render(stream.splice(0, 1)[0]);\n stream = selectStream();\n } while (stream === original && stream.length && stream[0].offset === processed);\n nodeStack.reverse().forEach(open);\n } else {\n if (stream[0].event === 'start') {\n nodeStack.push(stream[0].node);\n } else {\n nodeStack.pop();\n }\n render(stream.splice(0, 1)[0]);\n }\n }\n return result + escape(value.substr(processed));\n }\n\n /* Initialization */\n\n function expand_mode(mode) {\n if (mode.variants && !mode.cached_variants) {\n mode.cached_variants = mode.variants.map(function(variant) {\n return inherit(mode, {variants: null}, variant);\n });\n }\n return mode.cached_variants || (mode.endsWithParent && [inherit(mode)]) || [mode];\n }\n\n function compileLanguage(language) {\n\n function reStr(re) {\n return (re && re.source) || re;\n }\n\n function langRe(value, global) {\n return new RegExp(\n reStr(value),\n 'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '')\n );\n }\n\n function compileMode(mode, parent) {\n if (mode.compiled)\n return;\n mode.compiled = true;\n\n mode.keywords = mode.keywords || mode.beginKeywords;\n if (mode.keywords) {\n var compiled_keywords = {};\n\n var flatten = function(className, str) {\n if (language.case_insensitive) {\n str = str.toLowerCase();\n }\n str.split(' ').forEach(function(kw) {\n var pair = kw.split('|');\n compiled_keywords[pair[0]] = [className, pair[1] ? Number(pair[1]) : 1];\n });\n };\n\n if (typeof mode.keywords === 'string') { // string\n flatten('keyword', mode.keywords);\n } else {\n objectKeys(mode.keywords).forEach(function (className) {\n flatten(className, mode.keywords[className]);\n });\n }\n mode.keywords = compiled_keywords;\n }\n mode.lexemesRe = langRe(mode.lexemes || /\\w+/, true);\n\n if (parent) {\n if (mode.beginKeywords) {\n mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')\\\\b';\n }\n if (!mode.begin)\n mode.begin = /\\B|\\b/;\n mode.beginRe = langRe(mode.begin);\n if (mode.endSameAsBegin)\n mode.end = mode.begin;\n if (!mode.end && !mode.endsWithParent)\n mode.end = /\\B|\\b/;\n if (mode.end)\n mode.endRe = langRe(mode.end);\n mode.terminator_end = reStr(mode.end) || '';\n if (mode.endsWithParent && parent.terminator_end)\n mode.terminator_end += (mode.end ? '|' : '') + parent.terminator_end;\n }\n if (mode.illegal)\n mode.illegalRe = langRe(mode.illegal);\n if (mode.relevance == null)\n mode.relevance = 1;\n if (!mode.contains) {\n mode.contains = [];\n }\n mode.contains = Array.prototype.concat.apply([], mode.contains.map(function(c) {\n return expand_mode(c === 'self' ? mode : c)\n }));\n mode.contains.forEach(function(c) {compileMode(c, mode);});\n\n if (mode.starts) {\n compileMode(mode.starts, parent);\n }\n\n var terminators =\n mode.contains.map(function(c) {\n return c.beginKeywords ? '\\\\.?(' + c.begin + ')\\\\.?' : c.begin;\n })\n .concat([mode.terminator_end, mode.illegal])\n .map(reStr)\n .filter(Boolean);\n mode.terminators = terminators.length ? langRe(terminators.join('|'), true) : {exec: function(/*s*/) {return null;}};\n }\n\n compileMode(language);\n }\n\n /*\n Core highlighting function. Accepts a language name, or an alias, and a\n string with the code to highlight. Returns an object with the following\n properties:\n\n - relevance (int)\n - value (an HTML string with highlighting markup)\n\n */\n function highlight(name, value, ignore_illegals, continuation) {\n\n function escapeRe(value) {\n return new RegExp(value.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'm');\n }\n\n function subMode(lexeme, mode) {\n var i, length;\n\n for (i = 0, length = mode.contains.length; i < length; i++) {\n if (testRe(mode.contains[i].beginRe, lexeme)) {\n if (mode.contains[i].endSameAsBegin) {\n mode.contains[i].endRe = escapeRe( mode.contains[i].beginRe.exec(lexeme)[0] );\n }\n return mode.contains[i];\n }\n }\n }\n\n function endOfMode(mode, lexeme) {\n if (testRe(mode.endRe, lexeme)) {\n while (mode.endsParent && mode.parent) {\n mode = mode.parent;\n }\n return mode;\n }\n if (mode.endsWithParent) {\n return endOfMode(mode.parent, lexeme);\n }\n }\n\n function isIllegal(lexeme, mode) {\n return !ignore_illegals && testRe(mode.illegalRe, lexeme);\n }\n\n function keywordMatch(mode, match) {\n var match_str = language.case_insensitive ? match[0].toLowerCase() : match[0];\n return mode.keywords.hasOwnProperty(match_str) && mode.keywords[match_str];\n }\n\n function buildSpan(classname, insideSpan, leaveOpen, noPrefix) {\n var classPrefix = noPrefix ? '' : options.classPrefix,\n openSpan = '<span class=\"' + classPrefix,\n closeSpan = leaveOpen ? '' : spanEndTag\n\n openSpan += classname + '\">';\n\n return openSpan + insideSpan + closeSpan;\n }\n\n function processKeywords() {\n var keyword_match, last_index, match, result;\n\n if (!top.keywords)\n return escape(mode_buffer);\n\n result = '';\n last_index = 0;\n top.lexemesRe.lastIndex = 0;\n match = top.lexemesRe.exec(mode_buffer);\n\n while (match) {\n result += escape(mode_buffer.substring(last_index, match.index));\n keyword_match = keywordMatch(top, match);\n if (keyword_match) {\n relevance += keyword_match[1];\n result += buildSpan(keyword_match[0], escape(match[0]));\n } else {\n result += escape(match[0]);\n }\n last_index = top.lexemesRe.lastIndex;\n match = top.lexemesRe.exec(mode_buffer);\n }\n return result + escape(mode_buffer.substr(last_index));\n }\n\n function processSubLanguage() {\n var explicit = typeof top.subLanguage === 'string';\n if (explicit && !languages[top.subLanguage]) {\n return escape(mode_buffer);\n }\n\n var result = explicit ?\n highlight(top.subLanguage, mode_buffer, true, continuations[top.subLanguage]) :\n highlightAuto(mode_buffer, top.subLanguage.length ? top.subLanguage : undefined);\n\n // Counting embedded language score towards the host language may be disabled\n // with zeroing the containing mode relevance. Usecase in point is Markdown that\n // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n // score.\n if (top.relevance > 0) {\n relevance += result.relevance;\n }\n if (explicit) {\n continuations[top.subLanguage] = result.top;\n }\n return buildSpan(result.language, result.value, false, true);\n }\n\n function processBuffer() {\n result += (top.subLanguage != null ? processSubLanguage() : processKeywords());\n mode_buffer = '';\n }\n\n function startNewMode(mode) {\n result += mode.className? buildSpan(mode.className, '', true): '';\n top = Object.create(mode, {parent: {value: top}});\n }\n\n function processLexeme(buffer, lexeme) {\n\n mode_buffer += buffer;\n\n if (lexeme == null) {\n processBuffer();\n return 0;\n }\n\n var new_mode = subMode(lexeme, top);\n if (new_mode) {\n if (new_mode.skip) {\n mode_buffer += lexeme;\n } else {\n if (new_mode.excludeBegin) {\n mode_buffer += lexeme;\n }\n processBuffer();\n if (!new_mode.returnBegin && !new_mode.excludeBegin) {\n mode_buffer = lexeme;\n }\n }\n startNewMode(new_mode, lexeme);\n return new_mode.returnBegin ? 0 : lexeme.length;\n }\n\n var end_mode = endOfMode(top, lexeme);\n if (end_mode) {\n var origin = top;\n if (origin.skip) {\n mode_buffer += lexeme;\n } else {\n if (!(origin.returnEnd || origin.excludeEnd)) {\n mode_buffer += lexeme;\n }\n processBuffer();\n if (origin.excludeEnd) {\n mode_buffer = lexeme;\n }\n }\n do {\n if (top.className) {\n result += spanEndTag;\n }\n if (!top.skip && !top.subLanguage) {\n relevance += top.relevance;\n }\n top = top.parent;\n } while (top !== end_mode.parent);\n if (end_mode.starts) {\n if (end_mode.endSameAsBegin) {\n end_mode.starts.endRe = end_mode.endRe;\n }\n startNewMode(end_mode.starts, '');\n }\n return origin.returnEnd ? 0 : lexeme.length;\n }\n\n if (isIllegal(lexeme, top))\n throw new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.className || '<unnamed>') + '\"');\n\n /*\n Parser should not reach this point as all types of lexemes should be caught\n earlier, but if it does due to some bug make sure it advances at least one\n character forward to prevent infinite looping.\n */\n mode_buffer += lexeme;\n return lexeme.length || 1;\n }\n\n var language = getLanguage(name);\n if (!language) {\n throw new Error('Unknown language: \"' + name + '\"');\n }\n\n compileLanguage(language);\n var top = continuation || language;\n var continuations = {}; // keep continuations for sub-languages\n var result = '', current;\n for(current = top; current !== language; current = current.parent) {\n if (current.className) {\n result = buildSpan(current.className, '', true) + result;\n }\n }\n var mode_buffer = '';\n var relevance = 0;\n try {\n var match, count, index = 0;\n while (true) {\n top.terminators.lastIndex = index;\n match = top.terminators.exec(value);\n if (!match)\n break;\n count = processLexeme(value.substring(index, match.index), match[0]);\n index = match.index + count;\n }\n processLexeme(value.substr(index));\n for(current = top; current.parent; current = current.parent) { // close dangling modes\n if (current.className) {\n result += spanEndTag;\n }\n }\n return {\n relevance: relevance,\n value: result,\n language: name,\n top: top\n };\n } catch (e) {\n if (e.message && e.message.indexOf('Illegal') !== -1) {\n return {\n relevance: 0,\n value: escape(value)\n };\n } else {\n throw e;\n }\n }\n }\n\n /*\n Highlighting with language detection. Accepts a string with the code to\n highlight. Returns an object with the following properties:\n\n - language (detected language)\n - relevance (int)\n - value (an HTML string with highlighting markup)\n - second_best (object with the same structure for second-best heuristically\n detected language, may be absent)\n\n */\n function highlightAuto(text, languageSubset) {\n languageSubset = languageSubset || options.languages || objectKeys(languages);\n var result = {\n relevance: 0,\n value: escape(text)\n };\n var second_best = result;\n languageSubset.filter(getLanguage).filter(autoDetection).forEach(function(name) {\n var current = highlight(name, text, false);\n current.language = name;\n if (current.relevance > second_best.relevance) {\n second_best = current;\n }\n if (current.relevance > result.relevance) {\n second_best = result;\n result = current;\n }\n });\n if (second_best.language) {\n result.second_best = second_best;\n }\n return result;\n }\n\n /*\n Post-processing of the highlighted markup:\n\n - replace TABs with something more useful\n - replace real line-breaks with '<br>' for non-pre containers\n\n */\n function fixMarkup(value) {\n return !(options.tabReplace || options.useBR)\n ? value\n : value.replace(fixMarkupRe, function(match, p1) {\n if (options.useBR && match === '\\n') {\n return '<br>';\n } else if (options.tabReplace) {\n return p1.replace(/\\t/g, options.tabReplace);\n }\n return '';\n });\n }\n\n function buildClassName(prevClassName, currentLang, resultLang) {\n var language = currentLang ? aliases[currentLang] : resultLang,\n result = [prevClassName.trim()];\n\n if (!prevClassName.match(/\\bhljs\\b/)) {\n result.push('hljs');\n }\n\n if (prevClassName.indexOf(language) === -1) {\n result.push(language);\n }\n\n return result.join(' ').trim();\n }\n\n /*\n Applies highlighting to a DOM node containing code. Accepts a DOM node and\n two optional parameters for fixMarkup.\n */\n function highlightBlock(block) {\n var node, originalStream, result, resultNode, text;\n var language = blockLanguage(block);\n\n if (isNotHighlighted(language))\n return;\n\n if (options.useBR) {\n node = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');\n node.innerHTML = block.innerHTML.replace(/\\n/g, '').replace(/<br[ \\/]*>/g, '\\n');\n } else {\n node = block;\n }\n text = node.textContent;\n result = language ? highlight(language, text, true) : highlightAuto(text);\n\n originalStream = nodeStream(node);\n if (originalStream.length) {\n resultNode = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');\n resultNode.innerHTML = result.value;\n result.value = mergeStreams(originalStream, nodeStream(resultNode), text);\n }\n result.value = fixMarkup(result.value);\n\n block.innerHTML = result.value;\n block.className = buildClassName(block.className, language, result.language);\n block.result = {\n language: result.language,\n re: result.relevance\n };\n if (result.second_best) {\n block.second_best = {\n language: result.second_best.language,\n re: result.second_best.relevance\n };\n }\n }\n\n /*\n Updates highlight.js global options with values passed in the form of an object.\n */\n function configure(user_options) {\n options = inherit(options, user_options);\n }\n\n /*\n Applies highlighting to all <pre><code>..</code></pre> blocks on a page.\n */\n function initHighlighting() {\n if (initHighlighting.called)\n return;\n initHighlighting.called = true;\n\n var blocks = document.querySelectorAll('pre code');\n ArrayProto.forEach.call(blocks, highlightBlock);\n }\n\n /*\n Attaches highlighting to the page load event.\n */\n function initHighlightingOnLoad() {\n addEventListener('DOMContentLoaded', initHighlighting, false);\n addEventListener('load', initHighlighting, false);\n }\n\n function registerLanguage(name, language) {\n var lang = languages[name] = language(hljs);\n if (lang.aliases) {\n lang.aliases.forEach(function(alias) {aliases[alias] = name;});\n }\n }\n\n function listLanguages() {\n return objectKeys(languages);\n }\n\n function getLanguage(name) {\n name = (name || '').toLowerCase();\n return languages[name] || languages[aliases[name]];\n }\n\n function autoDetection(name) {\n var lang = getLanguage(name);\n return lang && !lang.disableAutodetect;\n }\n\n /* Interface definition */\n\n hljs.highlight = highlight;\n hljs.highlightAuto = highlightAuto;\n hljs.fixMarkup = fixMarkup;\n hljs.highlightBlock = highlightBlock;\n hljs.configure = configure;\n hljs.initHighlighting = initHighlighting;\n hljs.initHighlightingOnLoad = initHighlightingOnLoad;\n hljs.registerLanguage = registerLanguage;\n hljs.listLanguages = listLanguages;\n hljs.getLanguage = getLanguage;\n hljs.autoDetection = autoDetection;\n hljs.inherit = inherit;\n\n // Common regexps\n hljs.IDENT_RE = '[a-zA-Z]\\\\w*';\n hljs.UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\n hljs.NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\n hljs.C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\n hljs.BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\n hljs.RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n // Common modes\n hljs.BACKSLASH_ESCAPE = {\n begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n };\n hljs.APOS_STRING_MODE = {\n className: 'string',\n begin: '\\'', end: '\\'',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n hljs.QUOTE_STRING_MODE = {\n className: 'string',\n begin: '\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n hljs.PHRASAL_WORDS_MODE = {\n begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n };\n hljs.COMMENT = function (begin, end, inherits) {\n var mode = hljs.inherit(\n {\n className: 'comment',\n begin: begin, end: end,\n contains: []\n },\n inherits || {}\n );\n mode.contains.push(hljs.PHRASAL_WORDS_MODE);\n mode.contains.push({\n className: 'doctag',\n begin: '(?:TODO|FIXME|NOTE|BUG|XXX):',\n relevance: 0\n });\n return mode;\n };\n hljs.C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$');\n hljs.C_BLOCK_COMMENT_MODE = hljs.COMMENT('/\\\\*', '\\\\*/');\n hljs.HASH_COMMENT_MODE = hljs.COMMENT('#', '$');\n hljs.NUMBER_MODE = {\n className: 'number',\n begin: hljs.NUMBER_RE,\n relevance: 0\n };\n hljs.C_NUMBER_MODE = {\n className: 'number',\n begin: hljs.C_NUMBER_RE,\n relevance: 0\n };\n hljs.BINARY_NUMBER_MODE = {\n className: 'number',\n begin: hljs.BINARY_NUMBER_RE,\n relevance: 0\n };\n hljs.CSS_NUMBER_MODE = {\n className: 'number',\n begin: hljs.NUMBER_RE + '(' +\n '%|em|ex|ch|rem' +\n '|vw|vh|vmin|vmax' +\n '|cm|mm|in|pt|pc|px' +\n '|deg|grad|rad|turn' +\n '|s|ms' +\n '|Hz|kHz' +\n '|dpi|dpcm|dppx' +\n ')?',\n relevance: 0\n };\n hljs.REGEXP_MODE = {\n className: 'regexp',\n begin: /\\//, end: /\\/[gimuy]*/,\n illegal: /\\n/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {\n begin: /\\[/, end: /\\]/,\n relevance: 0,\n contains: [hljs.BACKSLASH_ESCAPE]\n }\n ]\n };\n hljs.TITLE_MODE = {\n className: 'title',\n begin: hljs.IDENT_RE,\n relevance: 0\n };\n hljs.UNDERSCORE_TITLE_MODE = {\n className: 'title',\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n };\n hljs.METHOD_GUARD = {\n // excludes method names from keyword processing\n begin: '\\\\.\\\\s*' + hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n };\n\n return hljs;\n}));\n","module.exports = function(hljs){\n\n // общий паттерн для определения идентификаторов\n var UNDERSCORE_IDENT_RE = '[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]+';\n \n // v7 уникальные ключевые слова, отсутствующие в v8 ==> keyword\n var v7_keywords =\n 'далее ';\n\n // v8 ключевые слова ==> keyword\n var v8_keywords =\n 'возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли ' +\n 'конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт ';\n\n // keyword : ключевые слова\n var KEYWORD = v7_keywords + v8_keywords;\n \n // v7 уникальные директивы, отсутствующие в v8 ==> meta-keyword\n var v7_meta_keywords =\n 'загрузитьизфайла ';\n\n // v8 ключевые слова в инструкциях препроцессора, директивах компиляции, аннотациях ==> meta-keyword\n var v8_meta_keywords =\n 'вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер ' +\n 'наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед ' +\n 'после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент ';\n\n // meta-keyword : ключевые слова в инструкциях препроцессора, директивах компиляции, аннотациях\n var METAKEYWORD = v7_meta_keywords + v8_meta_keywords;\n\n // v7 системные константы ==> built_in\n var v7_system_constants =\n 'разделительстраниц разделительстрок символтабуляции ';\n \n // v7 уникальные методы глобального контекста, отсутствующие в v8 ==> built_in\n var v7_global_context_methods =\n 'ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов ' +\n 'датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя ' +\n 'кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца ' +\n 'коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид ' +\n 'назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца ' +\n 'начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов ' +\n 'основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута ' +\n 'получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта ' +\n 'префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына ' +\n 'рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента ' +\n 'счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон ';\n \n // v8 методы глобального контекста ==> built_in\n var v8_global_context_methods =\n 'acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока ' +\n 'xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ' +\n 'ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации ' +\n 'выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода ' +\n 'деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы ' +\n 'загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации ' +\n 'заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию ' +\n 'значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла ' +\n 'изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке ' +\n 'каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку ' +\n 'кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты ' +\n 'конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы ' +\n 'копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти ' +\n 'найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы ' +\n 'началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя ' +\n 'начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты ' +\n 'начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов ' +\n 'начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя ' +\n 'начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога ' +\n 'начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией ' +\n 'начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы ' +\n 'номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения ' +\n 'обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении ' +\n 'отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения ' +\n 'открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально ' +\n 'отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа ' +\n 'перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту ' +\n 'подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения ' +\n 'подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки ' +\n 'показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение ' +\n 'показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя ' +\n 'получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса ' +\n 'получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора ' +\n 'получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса ' +\n 'получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации ' +\n 'получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла ' +\n 'получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации ' +\n 'получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления ' +\n 'получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу ' +\n 'получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы ' +\n 'получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет ' +\n 'получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима ' +\n 'получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения ' +\n 'получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути ' +\n 'получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы ' +\n 'получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю ' +\n 'получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных ' +\n 'получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию ' +\n 'получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище ' +\n 'поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода ' +\n 'представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение ' +\n 'прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока ' +\n 'рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных ' +\n 'раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени ' +\n 'смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить ' +\n 'состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс ' +\n 'строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений '+\n 'стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах ' +\n 'текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации ' +\n 'текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы ' +\n 'удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим ' +\n 'установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту ' +\n 'установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных ' +\n 'установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации ' +\n 'установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения ' +\n 'установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования ' +\n 'установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима ' +\n 'установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим ' +\n 'установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией ' +\n 'установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы ' +\n 'установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса ' +\n 'формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища ';\n\n // v8 свойства глобального контекста ==> built_in\n var v8_global_context_property =\n 'wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы ' +\n 'внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль ' +\n 'документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты ' +\n 'историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений ' +\n 'отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик ' +\n 'планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок ' +\n 'рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений ' +\n 'регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа ' +\n 'средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек ' +\n 'хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков ' +\n 'хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек ';\n\n // built_in : встроенные или библиотечные объекты (константы, классы, функции)\n var BUILTIN =\n v7_system_constants +\n v7_global_context_methods + v8_global_context_methods +\n v8_global_context_property;\n \n // v8 системные наборы значений ==> class\n var v8_system_sets_of_values =\n 'webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля ';\n\n // v8 системные перечисления - интерфейсные ==> class\n var v8_system_enums_interface =\n 'автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий ' +\n 'анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы ' +\n 'вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы ' +\n 'виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя ' +\n 'видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение ' +\n 'горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы ' +\n 'группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания ' +\n 'интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки ' +\n 'используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы ' +\n 'источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева ' +\n 'начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ' +\n 'ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме ' +\n 'отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы ' +\n 'отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы ' +\n 'отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы ' +\n 'отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска ' +\n 'отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования ' +\n 'отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта ' +\n 'отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы ' +\n 'поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы ' +\n 'поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы ' +\n 'положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы ' +\n 'положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы ' +\n 'положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском ' +\n 'положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы ' +\n 'размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта ' +\n 'режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты ' +\n 'режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения ' +\n 'режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра ' +\n 'режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения ' +\n 'режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы ' +\n 'режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки ' +\n 'режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание ' +\n 'сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы ' +\n 'способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление ' +\n 'статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы ' +\n 'типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы ' +\n 'типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления ' +\n 'типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы ' +\n 'типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы ' +\n 'типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений ' +\n 'типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы ' +\n 'типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоединенияточекдиаграммы ' +\n 'типсоединительнойлинии типстороныэлементаграфическойсхемы типформыотчета типшкалырадарнойдиаграммы ' +\n 'факторлиниитрендадиаграммы фигуракнопки фигурыграфическойсхемы фиксациявтаблице форматдняшкалывремени ' +\n 'форматкартинки ширинаподчиненныхэлементовформы ';\n\n // v8 системные перечисления - свойства прикладных объектов ==> class\n var v8_system_enums_objects_properties =\n 'виддвижениябухгалтерии виддвижениянакопления видпериодарегистрарасчета видсчета видточкимаршрутабизнеспроцесса ' +\n 'использованиеагрегатарегистранакопления использованиегруппиэлементов использованиережимапроведения ' +\n 'использованиесреза периодичностьагрегатарегистранакопления режимавтовремя режимзаписидокумента режимпроведениядокумента ';\n\n // v8 системные перечисления - планы обмена ==> class\n var v8_system_enums_exchange_plans =\n 'авторегистрацияизменений допустимыйномерсообщения отправкаэлементаданных получениеэлементаданных ';\n\n // v8 системные перечисления - табличный документ ==> class\n var v8_system_enums_tabular_document =\n 'использованиерасшифровкитабличногодокумента ориентациястраницы положениеитоговколоноксводнойтаблицы ' +\n 'положениеитоговстроксводнойтаблицы положениетекстаотносительнокартинки расположениезаголовкагруппировкитабличногодокумента ' +\n 'способчтениязначенийтабличногодокумента типдвустороннейпечати типзаполненияобластитабличногодокумента ' +\n 'типкурсоровтабличногодокумента типлиниирисункатабличногодокумента типлинииячейкитабличногодокумента ' +\n 'типнаправленияпереходатабличногодокумента типотображениявыделениятабличногодокумента типотображениялинийсводнойтаблицы ' +\n 'типразмещениятекстатабличногодокумента типрисункатабличногодокумента типсмещениятабличногодокумента ' +\n 'типузоратабличногодокумента типфайлатабличногодокумента точностьпечати чередованиерасположениястраниц ';\n\n // v8 системные перечисления - планировщик ==> class\n var v8_system_enums_sheduler =\n 'отображениевремениэлементовпланировщика ';\n\n // v8 системные перечисления - форматированный документ ==> class\n var v8_system_enums_formatted_document =\n 'типфайлаформатированногодокумента ';\n\n // v8 системные перечисления - запрос ==> class\n var v8_system_enums_query =\n 'обходрезультатазапроса типзаписизапроса ';\n\n // v8 системные перечисления - построитель отчета ==> class\n var v8_system_enums_report_builder =\n 'видзаполнениярасшифровкипостроителяотчета типдобавленияпредставлений типизмеренияпостроителяотчета типразмещенияитогов ';\n\n // v8 системные перечисления - работа с файлами ==> class\n var v8_system_enums_files =\n 'доступкфайлу режимдиалогавыборафайла режимоткрытияфайла ';\n\n // v8 системные перечисления - построитель запроса ==> class\n var v8_system_enums_query_builder =\n 'типизмеренияпостроителязапроса ';\n\n // v8 системные перечисления - анализ данных ==> class\n var v8_system_enums_data_analysis =\n 'видданныханализа методкластеризации типединицыинтервалавременианализаданных типзаполнениятаблицырезультатаанализаданных ' +\n 'типиспользованиячисловыхзначенийанализаданных типисточникаданныхпоискаассоциаций типколонкианализаданныхдереворешений ' +\n 'типколонкианализаданныхкластеризация типколонкианализаданныхобщаястатистика типколонкианализаданныхпоискассоциаций ' +\n 'типколонкианализаданныхпоискпоследовательностей типколонкимоделипрогноза типмерырасстоянияанализаданных ' +\n 'типотсеченияправилассоциации типполяанализаданных типстандартизациианализаданных типупорядочиванияправилассоциациианализаданных ' +\n 'типупорядочиванияшаблоновпоследовательностейанализаданных типупрощениядереварешений ';\n\n // v8 системные перечисления - xml, json, xs, dom, xdto, web-сервисы ==> class\n var v8_system_enums_xml_json_xs_dom_xdto_ws =\n 'wsнаправлениепараметра вариантxpathxs вариантзаписидатыjson вариантпростоготипаxs видгруппымоделиxs видфасетаxdto ' +\n 'действиепостроителяdom завершенностьпростоготипаxs завершенностьсоставноготипаxs завершенностьсхемыxs запрещенныеподстановкиxs ' +\n 'исключениягруппподстановкиxs категорияиспользованияатрибутаxs категорияограниченияидентичностиxs категорияограниченияпространствименxs ' +\n 'методнаследованияxs модельсодержимогоxs назначениетипаxml недопустимыеподстановкиxs обработкапробельныхсимволовxs обработкасодержимогоxs ' +\n 'ограничениезначенияxs параметрыотбораузловdom переносстрокjson позициявдокументеdom пробельныесимволыxml типатрибутаxml типзначенияjson ' +\n 'типканоническогоxml типкомпонентыxs типпроверкиxml типрезультатаdomxpath типузлаdom типузлаxml формаxml формапредставленияxs ' +\n 'форматдатыjson экранированиесимволовjson ';\n\n // v8 системные перечисления - система компоновки данных ==> class\n var v8_system_enums_data_composition_system =\n 'видсравнениякомпоновкиданных действиеобработкирасшифровкикомпоновкиданных направлениесортировкикомпоновкиданных ' +\n 'расположениевложенныхэлементоврезультатакомпоновкиданных расположениеитоговкомпоновкиданных расположениегруппировкикомпоновкиданных ' +\n 'расположениеполейгруппировкикомпоновкиданных расположениеполякомпоновкиданных расположениереквизитовкомпоновкиданных ' +\n 'расположениересурсовкомпоновкиданных типбухгалтерскогоостаткакомпоновкиданных типвыводатекстакомпоновкиданных ' +\n 'типгруппировкикомпоновкиданных типгруппыэлементовотборакомпоновкиданных типдополненияпериодакомпоновкиданных ' +\n 'типзаголовкаполейкомпоновкиданных типмакетагруппировкикомпоновкиданных типмакетаобластикомпоновкиданных типостаткакомпоновкиданных ' +\n 'типпериодакомпоновкиданных типразмещениятекстакомпоновкиданных типсвязинаборовданныхкомпоновкиданных типэлементарезультатакомпоновкиданных ' +\n 'расположениелегендыдиаграммыкомпоновкиданных типпримененияотборакомпоновкиданных режимотображенияэлементанастройкикомпоновкиданных ' +\n 'режимотображениянастроеккомпоновкиданных состояниеэлементанастройкикомпоновкиданных способвосстановлениянастроеккомпоновкиданных ' +\n 'режимкомпоновкирезультата использованиепараметракомпоновкиданных автопозицияресурсовкомпоновкиданных '+\n 'вариантиспользованиягруппировкикомпоновкиданных расположениересурсоввдиаграммекомпоновкиданных фиксациякомпоновкиданных ' +\n 'использованиеусловногооформлениякомпоновкиданных ';\n\n // v8 системные перечисления - почта ==> class\n var v8_system_enums_email =\n 'важностьинтернетпочтовогосообщения обработкатекстаинтернетпочтовогосообщения способкодированияинтернетпочтовоговложения ' +\n 'способкодированиянеasciiсимволовинтернетпочтовогосообщения типтекстапочтовогосообщения протоколинтернетпочты ' +\n 'статусразборапочтовогосообщения ';\n\n // v8 системные перечисления - журнал регистрации ==> class\n var v8_system_enums_logbook =\n 'режимтранзакциизаписижурналарегистрации статустранзакциизаписижурналарегистрации уровеньжурналарегистрации ';\n\n // v8 системные перечисления - криптография ==> class\n var v8_system_enums_cryptography =\n 'расположениехранилищасертификатовкриптографии режимвключениясертификатовкриптографии режимпроверкисертификатакриптографии ' +\n 'типхранилищасертификатовкриптографии ';\n\n // v8 системные перечисления - ZIP ==> class\n var v8_system_enums_zip =\n 'кодировкаименфайловвzipфайле методсжатияzip методшифрованияzip режимвосстановленияпутейфайловzip режимобработкиподкаталоговzip ' +\n 'режимсохраненияпутейzip уровеньсжатияzip ';\n\n // v8 системные перечисления - \n // Блокировка данных, Фоновые задания, Автоматизированное тестирование,\n // Доставляемые уведомления, Встроенные покупки, Интернет, Работа с двоичными данными ==> class\n var v8_system_enums_other =\n 'звуковоеоповещение направлениепереходакстроке позициявпотоке порядокбайтов режимблокировкиданных режимуправленияблокировкойданных ' +\n 'сервисвстроенныхпокупок состояниефоновогозадания типподписчикадоставляемыхуведомлений уровеньиспользованиязащищенногосоединенияftp ';\n\n // v8 системные перечисления - схема запроса ==> class\n var v8_system_enums_request_schema =\n 'направлениепорядкасхемызапроса типдополненияпериодамисхемызапроса типконтрольнойточкисхемызапроса типобъединениясхемызапроса ' +\n 'типпараметрадоступнойтаблицысхемызапроса типсоединениясхемызапроса ';\n\n // v8 системные перечисления - свойства объектов метаданных ==> class\n var v8_system_enums_properties_of_metadata_objects =\n 'httpметод автоиспользованиеобщегореквизита автопрефиксномеразадачи вариантвстроенногоязыка видиерархии видрегистранакопления ' +\n 'видтаблицывнешнегоисточникаданных записьдвиженийприпроведении заполнениепоследовательностей индексирование ' +\n 'использованиебазыпланавидоврасчета использованиебыстроговыбора использованиеобщегореквизита использованиеподчинения ' +\n 'использованиеполнотекстовогопоиска использованиеразделяемыхданныхобщегореквизита использованиереквизита ' +\n 'назначениеиспользованияприложения назначениерасширенияконфигурации направлениепередачи обновлениепредопределенныхданных ' +\n 'оперативноепроведение основноепредставлениевидарасчета основноепредставлениевидахарактеристики основноепредставлениезадачи ' +\n 'основноепредставлениепланаобмена основноепредставлениесправочника основноепредставлениесчета перемещениеграницыприпроведении ' +\n 'периодичностьномерабизнеспроцесса периодичностьномерадокумента периодичностьрегистрарасчета периодичностьрегистрасведений ' +\n 'повторноеиспользованиевозвращаемыхзначений полнотекстовыйпоискпривводепостроке принадлежностьобъекта проведение ' +\n 'разделениеаутентификацииобщегореквизита разделениеданныхобщегореквизита разделениерасширенийконфигурацииобщегореквизита '+\n 'режимавтонумерацииобъектов режимзаписирегистра режимиспользованиямодальности ' +\n 'режимиспользованиясинхронныхвызововрасширенийплатформыивнешнихкомпонент режимповторногоиспользованиясеансов ' +\n 'режимполученияданныхвыборапривводепостроке режимсовместимости режимсовместимостиинтерфейса ' +\n 'режимуправленияблокировкойданныхпоумолчанию сериикодовпланавидовхарактеристик сериикодовпланасчетов ' +\n 'сериикодовсправочника созданиепривводе способвыбора способпоискастрокипривводепостроке способредактирования ' +\n 'типданныхтаблицывнешнегоисточникаданных типкодапланавидоврасчета типкодасправочника типмакета типномерабизнеспроцесса ' +\n 'типномерадокумента типномеразадачи типформы удалениедвижений ';\n\n // v8 системные перечисления - разные ==> class\n var v8_system_enums_differents =\n 'важностьпроблемыприменениярасширенияконфигурации вариантинтерфейсаклиентскогоприложения вариантмасштабаформклиентскогоприложения ' +\n 'вариантосновногошрифтаклиентскогоприложения вариантстандартногопериода вариантстандартнойдатыначала видграницы видкартинки ' +\n 'видотображенияполнотекстовогопоиска видрамки видсравнения видцвета видчисловогозначения видшрифта допустимаядлина допустимыйзнак ' +\n 'использованиеbyteordermark использованиеметаданныхполнотекстовогопоиска источникрасширенийконфигурации клавиша кодвозвратадиалога ' +\n 'кодировкаxbase кодировкатекста направлениепоиска направлениесортировки обновлениепредопределенныхданных обновлениеприизмененииданных ' +\n 'отображениепанелиразделов проверказаполнения режимдиалогавопрос режимзапускаклиентскогоприложения режимокругления режимоткрытияформприложения ' +\n 'режимполнотекстовогопоиска скоростьклиентскогосоединения состояниевнешнегоисточникаданных состояниеобновленияконфигурациибазыданных ' +\n 'способвыборасертификатаwindows способкодированиястроки статуссообщения типвнешнейкомпоненты типплатформы типповеденияклавишиenter ' +\n 'типэлементаинформацииовыполненииобновленияконфигурациибазыданных уровеньизоляциитранзакций хешфункция частидаты';\n\n // class: встроенные наборы значений, системные перечисления (содержат дочерние значения, обращения к которым через разыменование)\n var CLASS =\n v8_system_sets_of_values +\n v8_system_enums_interface +\n v8_system_enums_objects_properties +\n v8_system_enums_exchange_plans +\n v8_system_enums_tabular_document +\n v8_system_enums_sheduler +\n v8_system_enums_formatted_document +\n v8_system_enums_query +\n v8_system_enums_report_builder +\n v8_system_enums_files +\n v8_system_enums_query_builder +\n v8_system_enums_data_analysis +\n v8_system_enums_xml_json_xs_dom_xdto_ws +\n v8_system_enums_data_composition_system +\n v8_system_enums_email +\n v8_system_enums_logbook +\n v8_system_enums_cryptography +\n v8_system_enums_zip +\n v8_system_enums_other +\n v8_system_enums_request_schema +\n v8_system_enums_properties_of_metadata_objects +\n v8_system_enums_differents;\n\n // v8 общие объекты (у объектов есть конструктор, экземпляры создаются методом НОВЫЙ) ==> type\n var v8_shared_object =\n 'comобъект ftpсоединение httpзапрос httpсервисответ httpсоединение wsопределения wsпрокси xbase анализданных аннотацияxs ' +\n 'блокировкаданных буфердвоичныхданных включениеxs выражениекомпоновкиданных генераторслучайныхчисел географическаясхема ' +\n 'географическиекоординаты графическаясхема группамоделиxs данныерасшифровкикомпоновкиданных двоичныеданные дендрограмма ' +\n 'диаграмма диаграммаганта диалогвыборафайла диалогвыборацвета диалогвыборашрифта диалограсписаниярегламентногозадания ' +\n 'диалогредактированиястандартногопериода диапазон документdom документhtml документацияxs доставляемоеуведомление ' +\n 'записьdom записьfastinfoset записьhtml записьjson записьxml записьzipфайла записьданных записьтекста записьузловdom ' +\n 'запрос защищенноесоединениеopenssl значенияполейрасшифровкикомпоновкиданных извлечениетекста импортxs интернетпочта ' +\n 'интернетпочтовоесообщение интернетпочтовыйпрофиль интернетпрокси интернетсоединение информациядляприложенияxs ' +\n 'использованиеатрибутаxs использованиесобытияжурналарегистрации источникдоступныхнастроеккомпоновкиданных ' +\n 'итераторузловdom картинка квалификаторыдаты квалификаторыдвоичныхданных квалификаторыстроки квалификаторычисла ' +\n 'компоновщикмакетакомпоновкиданных компоновщикнастроеккомпоновкиданных конструктормакетаоформлениякомпоновкиданных ' +\n 'конструкторнастроеккомпоновкиданных конструкторформатнойстроки линия макеткомпоновкиданных макетобластикомпоновкиданных ' +\n 'макетоформлениякомпоновкиданных маскаxs менеджеркриптографии наборсхемxml настройкикомпоновкиданных настройкисериализацииjson ' +\n 'обработкакартинок обработкарасшифровкикомпоновкиданных обходдереваdom объявлениеатрибутаxs объявлениенотацииxs ' +\n 'объявлениеэлементаxs описаниеиспользованиясобытиядоступжурналарегистрации ' +\n 'описаниеиспользованиясобытияотказвдоступежурналарегистрации описаниеобработкирасшифровкикомпоновкиданных ' +\n 'описаниепередаваемогофайла описаниетипов определениегруппыатрибутовxs определениегруппымоделиxs ' +\n 'определениеограниченияидентичностиxs определениепростоготипаxs определениесоставноготипаxs определениетипадокументаdom ' +\n 'определенияxpathxs отборкомпоновкиданных пакетотображаемыхдокументов параметрвыбора параметркомпоновкиданных ' +\n 'параметрызаписиjson параметрызаписиxml параметрычтенияxml переопределениеxs планировщик полеанализаданных ' +\n 'полекомпоновкиданных построительdom построительзапроса построительотчета построительотчетаанализаданных ' +\n 'построительсхемxml поток потоквпамяти почта почтовоесообщение преобразованиеxsl преобразованиекканоническомуxml ' +\n 'процессорвыводарезультатакомпоновкиданныхвколлекциюзначений процессорвыводарезультатакомпоновкиданныхвтабличныйдокумент ' +\n 'процессоркомпоновкиданных разыменовательпространствименdom рамка расписаниерегламентногозадания расширенноеимяxml ' +\n 'результатчтенияданных своднаядиаграмма связьпараметравыбора связьпотипу связьпотипукомпоновкиданных сериализаторxdto ' +\n 'сертификатклиентаwindows сертификатклиентафайл сертификаткриптографии сертификатыудостоверяющихцентровwindows ' +\n 'сертификатыудостоверяющихцентровфайл сжатиеданных системнаяинформация сообщениепользователю сочетаниеклавиш ' +\n 'сравнениезначений стандартнаядатаначала стандартныйпериод схемаxml схемакомпоновкиданных табличныйдокумент ' +\n 'текстовыйдокумент тестируемоеприложение типданныхxml уникальныйидентификатор фабрикаxdto файл файловыйпоток ' +\n 'фасетдлиныxs фасетколичестваразрядовдробнойчастиxs фасетмаксимальноговключающегозначенияxs ' +\n 'фасетмаксимальногоисключающегозначенияxs фасетмаксимальнойдлиныxs фасетминимальноговключающегозначенияxs ' +\n 'фасетминимальногоисключающегозначенияxs фасетминимальнойдлиныxs фасетобразцаxs фасетобщегоколичестваразрядовxs ' +\n 'фасетперечисленияxs фасетпробельныхсимволовxs фильтрузловdom форматированнаястрока форматированныйдокумент ' +\n 'фрагментxs хешированиеданных хранилищезначения цвет чтениеfastinfoset чтениеhtml чтениеjson чтениеxml чтениеzipфайла ' +\n 'чтениеданных чтениетекста чтениеузловdom шрифт элементрезультатакомпоновкиданных ';\n\n // v8 универсальные коллекции значений ==> type\n var v8_universal_collection =\n 'comsafearray деревозначений массив соответствие списокзначений структура таблицазначений фиксированнаяструктура ' +\n 'фиксированноесоответствие фиксированныймассив ';\n\n // type : встроенные типы\n var TYPE =\n v8_shared_object +\n v8_universal_collection;\n\n // literal : примитивные типы\n var LITERAL = 'null истина ложь неопределено';\n \n // number : числа\n var NUMBERS = hljs.inherit(hljs.NUMBER_MODE);\n\n // string : строки\n var STRINGS = {\n className: 'string',\n begin: '\"|\\\\|', end: '\"|$',\n contains: [{begin: '\"\"'}]\n };\n\n // number : даты\n var DATE = {\n begin: \"'\", end: \"'\", excludeBegin: true, excludeEnd: true,\n contains: [\n {\n className: 'number',\n begin: '\\\\d{4}([\\\\.\\\\\\\\/:-]?\\\\d{2}){0,5}'\n }\n ]\n };\n \n // comment : комментарии\n var COMMENTS = hljs.inherit(hljs.C_LINE_COMMENT_MODE);\n \n // meta : инструкции препроцессора, директивы компиляции\n var META = {\n className: 'meta',\n lexemes: UNDERSCORE_IDENT_RE,\n begin: '#|&', end: '$',\n keywords: {'meta-keyword': KEYWORD + METAKEYWORD},\n contains: [\n COMMENTS\n ]\n };\n \n // symbol : метка goto\n var SYMBOL = {\n className: 'symbol',\n begin: '~', end: ';|:', excludeEnd: true\n }; \n \n // function : объявление процедур и функций\n var FUNCTION = {\n className: 'function',\n lexemes: UNDERSCORE_IDENT_RE,\n variants: [\n {begin: 'процедура|функция', end: '\\\\)', keywords: 'процедура функция'},\n {begin: 'конецпроцедуры|конецфункции', keywords: 'конецпроцедуры конецфункции'}\n ],\n contains: [\n {\n begin: '\\\\(', end: '\\\\)', endsParent : true,\n contains: [\n {\n className: 'params',\n lexemes: UNDERSCORE_IDENT_RE,\n begin: UNDERSCORE_IDENT_RE, end: ',', excludeEnd: true, endsWithParent: true,\n keywords: {\n keyword: 'знач',\n literal: LITERAL\n },\n contains: [\n NUMBERS,\n STRINGS,\n DATE\n ]\n },\n COMMENTS\n ]\n },\n hljs.inherit(hljs.TITLE_MODE, {begin: UNDERSCORE_IDENT_RE})\n ]\n };\n\n return {\n case_insensitive: true,\n lexemes: UNDERSCORE_IDENT_RE,\n keywords: {\n keyword: KEYWORD,\n built_in: BUILTIN,\n class: CLASS,\n type: TYPE,\n literal: LITERAL\n },\n contains: [\n META,\n FUNCTION,\n COMMENTS,\n SYMBOL,\n NUMBERS,\n STRINGS,\n DATE\n ] \n }\n};","module.exports = function(hljs) {\n var regexes = {\n ruleDeclaration: \"^[a-zA-Z][a-zA-Z0-9-]*\",\n unexpectedChars: \"[!@#$^&',?+~`|:]\"\n };\n\n var keywords = [\n \"ALPHA\",\n \"BIT\",\n \"CHAR\",\n \"CR\",\n \"CRLF\",\n \"CTL\",\n \"DIGIT\",\n \"DQUOTE\",\n \"HEXDIG\",\n \"HTAB\",\n \"LF\",\n \"LWSP\",\n \"OCTET\",\n \"SP\",\n \"VCHAR\",\n \"WSP\"\n ];\n\n var commentMode = hljs.COMMENT(\";\", \"$\");\n\n var terminalBinaryMode = {\n className: \"symbol\",\n begin: /%b[0-1]+(-[0-1]+|(\\.[0-1]+)+){0,1}/\n };\n\n var terminalDecimalMode = {\n className: \"symbol\",\n begin: /%d[0-9]+(-[0-9]+|(\\.[0-9]+)+){0,1}/\n };\n\n var terminalHexadecimalMode = {\n className: \"symbol\",\n begin: /%x[0-9A-F]+(-[0-9A-F]+|(\\.[0-9A-F]+)+){0,1}/,\n };\n\n var caseSensitivityIndicatorMode = {\n className: \"symbol\",\n begin: /%[si]/\n };\n\n var ruleDeclarationMode = {\n begin: regexes.ruleDeclaration + '\\\\s*=',\n returnBegin: true,\n end: /=/,\n relevance: 0,\n contains: [{className: \"attribute\", begin: regexes.ruleDeclaration}]\n };\n\n return {\n illegal: regexes.unexpectedChars,\n keywords: keywords.join(\" \"),\n contains: [\n ruleDeclarationMode,\n commentMode,\n terminalBinaryMode,\n terminalDecimalMode,\n terminalHexadecimalMode,\n caseSensitivityIndicatorMode,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n contains: [\n // IP\n {\n className: 'number',\n begin: '\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b'\n },\n // Other numbers\n {\n className: 'number',\n begin: '\\\\b\\\\d+\\\\b',\n relevance: 0\n },\n // Requests\n {\n className: 'string',\n begin: '\"(GET|POST|HEAD|PUT|DELETE|CONNECT|OPTIONS|PATCH|TRACE)', end: '\"',\n keywords: 'GET POST HEAD PUT DELETE CONNECT OPTIONS PATCH TRACE',\n illegal: '\\\\n',\n relevance: 10\n },\n // Dates\n {\n className: 'string',\n begin: /\\[/, end: /\\]/,\n illegal: '\\\\n'\n },\n // Strings\n {\n className: 'string',\n begin: '\"', end: '\"',\n illegal: '\\\\n'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[a-zA-Z_$][a-zA-Z0-9_$]*';\n var IDENT_FUNC_RETURN_TYPE_RE = '([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)';\n\n var AS3_REST_ARG_MODE = {\n className: 'rest_arg',\n begin: '[.]{3}', end: IDENT_RE,\n relevance: 10\n };\n\n return {\n aliases: ['as'],\n keywords: {\n keyword: 'as break case catch class const continue default delete do dynamic each ' +\n 'else extends final finally for function get if implements import in include ' +\n 'instanceof interface internal is namespace native new override package private ' +\n 'protected public return set static super switch this throw try typeof use var void ' +\n 'while with',\n literal: 'true false null undefined'\n },\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'class',\n beginKeywords: 'package', end: '{',\n contains: [hljs.TITLE_MODE]\n },\n {\n className: 'class',\n beginKeywords: 'class interface', end: '{', excludeEnd: true,\n contains: [\n {\n beginKeywords: 'extends implements'\n },\n hljs.TITLE_MODE\n ]\n },\n {\n className: 'meta',\n beginKeywords: 'import include', end: ';',\n keywords: {'meta-keyword': 'import include'}\n },\n {\n className: 'function',\n beginKeywords: 'function', end: '[{;]', excludeEnd: true,\n illegal: '\\\\S',\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n AS3_REST_ARG_MODE\n ]\n },\n {\n begin: ':\\\\s*' + IDENT_FUNC_RETURN_TYPE_RE\n }\n ]\n },\n hljs.METHOD_GUARD\n ],\n illegal: /#/\n };\n};","module.exports = // We try to support full Ada2012\n//\n// We highlight all appearances of types, keywords, literals (string, char, number, bool)\n// and titles (user defined function/procedure/package)\n// CSS classes are set accordingly\n//\n// Languages causing problems for language detection:\n// xml (broken by Foo : Bar type), elm (broken by Foo : Bar type), vbscript-html (broken by body keyword)\n// sql (ada default.txt has a lot of sql keywords)\n\nfunction(hljs) {\n // Regular expression for Ada numeric literals.\n // stolen form the VHDL highlighter\n\n // Decimal literal:\n var INTEGER_RE = '\\\\d(_|\\\\d)*';\n var EXPONENT_RE = '[eE][-+]?' + INTEGER_RE;\n var DECIMAL_LITERAL_RE = INTEGER_RE + '(\\\\.' + INTEGER_RE + ')?' + '(' + EXPONENT_RE + ')?';\n\n // Based literal:\n var BASED_INTEGER_RE = '\\\\w+';\n var BASED_LITERAL_RE = INTEGER_RE + '#' + BASED_INTEGER_RE + '(\\\\.' + BASED_INTEGER_RE + ')?' + '#' + '(' + EXPONENT_RE + ')?';\n\n var NUMBER_RE = '\\\\b(' + BASED_LITERAL_RE + '|' + DECIMAL_LITERAL_RE + ')';\n\n // Identifier regex\n var ID_REGEX = '[A-Za-z](_?[A-Za-z0-9.])*';\n\n // bad chars, only allowed in literals\n var BAD_CHARS = '[]{}%#\\'\\\"'\n\n // Ada doesn't have block comments, only line comments\n var COMMENTS = hljs.COMMENT('--', '$');\n\n // variable declarations of the form\n // Foo : Bar := Baz;\n // where only Bar will be highlighted\n var VAR_DECLS = {\n // TODO: These spaces are not required by the Ada syntax\n // however, I have yet to see handwritten Ada code where\n // someone does not put spaces around :\n begin: '\\\\s+:\\\\s+', end: '\\\\s*(:=|;|\\\\)|=>|$)',\n // endsWithParent: true,\n // returnBegin: true,\n illegal: BAD_CHARS,\n contains: [\n {\n // workaround to avoid highlighting\n // named loops and declare blocks\n beginKeywords: 'loop for declare others',\n endsParent: true,\n },\n {\n // properly highlight all modifiers\n className: 'keyword',\n beginKeywords: 'not null constant access function procedure in out aliased exception'\n },\n {\n className: 'type',\n begin: ID_REGEX,\n endsParent: true,\n relevance: 0,\n }\n ]\n };\n\n return {\n case_insensitive: true,\n keywords: {\n keyword:\n 'abort else new return abs elsif not reverse abstract end ' +\n 'accept entry select access exception of separate aliased exit or some ' +\n 'all others subtype and for out synchronized array function overriding ' +\n 'at tagged generic package task begin goto pragma terminate ' +\n 'body private then if procedure type case in protected constant interface ' +\n 'is raise use declare range delay limited record when delta loop rem while ' +\n 'digits renames with do mod requeue xor',\n literal:\n 'True False',\n },\n contains: [\n COMMENTS,\n // strings \"foobar\"\n {\n className: 'string',\n begin: /\"/, end: /\"/,\n contains: [{begin: /\"\"/, relevance: 0}]\n },\n // characters ''\n {\n // character literals always contain one char\n className: 'string',\n begin: /'.'/\n },\n {\n // number literals\n className: 'number',\n begin: NUMBER_RE,\n relevance: 0\n },\n {\n // Attributes\n className: 'symbol',\n begin: \"'\" + ID_REGEX,\n },\n {\n // package definition, maybe inside generic\n className: 'title',\n begin: '(\\\\bwith\\\\s+)?(\\\\bprivate\\\\s+)?\\\\bpackage\\\\s+(\\\\bbody\\\\s+)?', end: '(is|$)',\n keywords: 'package body',\n excludeBegin: true,\n excludeEnd: true,\n illegal: BAD_CHARS\n },\n {\n // function/procedure declaration/definition\n // maybe inside generic\n begin: '(\\\\b(with|overriding)\\\\s+)?\\\\b(function|procedure)\\\\s+', end: '(\\\\bis|\\\\bwith|\\\\brenames|\\\\)\\\\s*;)',\n keywords: 'overriding function procedure with is renames return',\n // we need to re-match the 'function' keyword, so that\n // the title mode below matches only exactly once\n returnBegin: true,\n contains:\n [\n COMMENTS,\n {\n // name of the function/procedure\n className: 'title',\n begin: '(\\\\bwith\\\\s+)?\\\\b(function|procedure)\\\\s+',\n end: '(\\\\(|\\\\s+|$)',\n excludeBegin: true,\n excludeEnd: true,\n illegal: BAD_CHARS\n },\n // 'self'\n // // parameter types\n VAR_DECLS,\n {\n // return type\n className: 'type',\n begin: '\\\\breturn\\\\s+', end: '(\\\\s+|;|$)',\n keywords: 'return',\n excludeBegin: true,\n excludeEnd: true,\n // we are done with functions\n endsParent: true,\n illegal: BAD_CHARS\n\n },\n ]\n },\n {\n // new type declarations\n // maybe inside generic\n className: 'type',\n begin: '\\\\b(sub)?type\\\\s+', end: '\\\\s+',\n keywords: 'type',\n excludeBegin: true,\n illegal: BAD_CHARS\n },\n\n // see comment above the definition\n VAR_DECLS,\n\n // no markup\n // relevance boosters for small snippets\n // {begin: '\\\\s*=>\\\\s*'},\n // {begin: '\\\\s*:=\\\\s*'},\n // {begin: '\\\\s+:=\\\\s+'},\n ]\n };\n};","module.exports = function(hljs) {\n var builtInTypeMode = {\n className: 'built_in',\n begin: '\\\\b(void|bool|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|string|ref|array|double|float|auto|dictionary)'\n };\n\n var objectHandleMode = {\n className: 'symbol',\n begin: '[a-zA-Z0-9_]+@'\n };\n\n var genericMode = {\n className: 'keyword',\n begin: '<', end: '>',\n contains: [ builtInTypeMode, objectHandleMode ]\n };\n\n builtInTypeMode.contains = [ genericMode ];\n objectHandleMode.contains = [ genericMode ];\n\n return {\n aliases: [ 'asc' ],\n\n keywords:\n 'for in|0 break continue while do|0 return if else case switch namespace is cast ' +\n 'or and xor not get|0 in inout|10 out override set|0 private public const default|0 ' +\n 'final shared external mixin|10 enum typedef funcdef this super import from interface ' +\n 'abstract|0 try catch protected explicit',\n\n // avoid close detection with C# and JS\n illegal: '(^using\\\\s+[A-Za-z0-9_\\\\.]+;$|\\\\bfunction\\s*[^\\\\(])',\n\n contains: [\n { // 'strings'\n className: 'string',\n begin: '\\'', end: '\\'',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ],\n relevance: 0\n },\n\n { // \"strings\"\n className: 'string',\n begin: '\"', end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ],\n relevance: 0\n },\n\n // \"\"\"heredoc strings\"\"\"\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"'\n },\n\n hljs.C_LINE_COMMENT_MODE, // single-line comments\n hljs.C_BLOCK_COMMENT_MODE, // comment blocks\n\n { // interface or namespace declaration\n beginKeywords: 'interface namespace', end: '{',\n illegal: '[;.\\\\-]',\n contains: [\n { // interface or namespace name\n className: 'symbol',\n begin: '[a-zA-Z0-9_]+'\n }\n ]\n },\n\n { // class declaration\n beginKeywords: 'class', end: '{',\n illegal: '[;.\\\\-]',\n contains: [\n { // class name\n className: 'symbol',\n begin: '[a-zA-Z0-9_]+',\n contains: [\n {\n begin: '[:,]\\\\s*',\n contains: [\n {\n className: 'symbol',\n begin: '[a-zA-Z0-9_]+'\n }\n ]\n }\n ]\n }\n ]\n },\n\n builtInTypeMode, // built-in types\n objectHandleMode, // object handles\n\n { // literals\n className: 'literal',\n begin: '\\\\b(null|true|false)'\n },\n\n { // numbers\n className: 'number',\n begin: '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?f?|\\\\.\\\\d+f?)([eE][-+]?\\\\d+f?)?)'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var NUMBER = {className: 'number', begin: '[\\\\$%]\\\\d+'};\n return {\n aliases: ['apacheconf'],\n case_insensitive: true,\n contains: [\n hljs.HASH_COMMENT_MODE,\n {className: 'section', begin: '</?', end: '>'},\n {\n className: 'attribute',\n begin: /\\w+/,\n relevance: 0,\n // keywords aren’t needed for highlighting per se, they only boost relevance\n // for a very generally defined mode (starts with a word, ends with line-end\n keywords: {\n nomarkup:\n 'order deny allow setenv rewriterule rewriteengine rewritecond documentroot ' +\n 'sethandler errordocument loadmodule options header listen serverroot ' +\n 'servername'\n },\n starts: {\n end: /$/,\n relevance: 0,\n keywords: {\n literal: 'on off all'\n },\n contains: [\n {\n className: 'meta',\n begin: '\\\\s\\\\[', end: '\\\\]$'\n },\n {\n className: 'variable',\n begin: '[\\\\$%]\\\\{', end: '\\\\}',\n contains: ['self', NUMBER]\n },\n NUMBER,\n hljs.QUOTE_STRING_MODE\n ]\n }\n }\n ],\n illegal: /\\S/\n };\n};","module.exports = function(hljs) {\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: ''});\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n contains: ['self', hljs.C_NUMBER_MODE, STRING]\n };\n var COMMENT_MODE_1 = hljs.COMMENT('--', '$');\n var COMMENT_MODE_2 = hljs.COMMENT(\n '\\\\(\\\\*',\n '\\\\*\\\\)',\n {\n contains: ['self', COMMENT_MODE_1] //allow nesting\n }\n );\n var COMMENTS = [\n COMMENT_MODE_1,\n COMMENT_MODE_2,\n hljs.HASH_COMMENT_MODE\n ];\n\n return {\n aliases: ['osascript'],\n keywords: {\n keyword:\n 'about above after against and around as at back before beginning ' +\n 'behind below beneath beside between but by considering ' +\n 'contain contains continue copy div does eighth else end equal ' +\n 'equals error every exit fifth first for fourth from front ' +\n 'get given global if ignoring in into is it its last local me ' +\n 'middle mod my ninth not of on onto or over prop property put ref ' +\n 'reference repeat returning script second set seventh since ' +\n 'sixth some tell tenth that the|0 then third through thru ' +\n 'timeout times to transaction try until where while whose with ' +\n 'without',\n literal:\n 'AppleScript false linefeed return pi quote result space tab true',\n built_in:\n 'alias application boolean class constant date file integer list ' +\n 'number real record string text ' +\n 'activate beep count delay launch log offset read round ' +\n 'run say summarize write ' +\n 'character characters contents day frontmost id item length ' +\n 'month name paragraph paragraphs rest reverse running time version ' +\n 'weekday word words year'\n },\n contains: [\n STRING,\n hljs.C_NUMBER_MODE,\n {\n className: 'built_in',\n begin:\n '\\\\b(clipboard info|the clipboard|info for|list (disks|folder)|' +\n 'mount volume|path to|(close|open for) access|(get|set) eof|' +\n 'current date|do shell script|get volume settings|random number|' +\n 'set volume|system attribute|system info|time to GMT|' +\n '(load|run|store) script|scripting components|' +\n 'ASCII (character|number)|localized string|' +\n 'choose (application|color|file|file name|' +\n 'folder|from list|remote application|URL)|' +\n 'display (alert|dialog))\\\\b|^\\\\s*return\\\\b'\n },\n {\n className: 'literal',\n begin:\n '\\\\b(text item delimiters|current application|missing value)\\\\b'\n },\n {\n className: 'keyword',\n begin:\n '\\\\b(apart from|aside from|instead of|out of|greater than|' +\n \"isn't|(doesn't|does not) (equal|come before|come after|contain)|\" +\n '(greater|less) than( or equal)?|(starts?|ends|begins?) with|' +\n 'contained by|comes (before|after)|a (ref|reference)|POSIX file|' +\n 'POSIX path|(date|time) string|quoted form)\\\\b'\n },\n {\n beginKeywords: 'on',\n illegal: '[${=;\\\\n]',\n contains: [hljs.UNDERSCORE_TITLE_MODE, PARAMS]\n }\n ].concat(COMMENTS),\n illegal: '//|->|=>|\\\\[\\\\['\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[A-Za-z_][0-9A-Za-z_]*';\n var KEYWORDS = {\n keyword:\n 'if for while var new function do return void else break',\n literal:\n 'true false null undefined NaN Infinity PI BackSlash DoubleQuote ForwardSlash NewLine SingleQuote Tab',\n built_in:\n 'Abs Acos Area AreaGeodetic Asin Atan Atan2 Average Boolean Buffer BufferGeodetic ' +\n 'Ceil Centroid Clip Console Constrain Contains Cos Count Crosses Cut Date DateAdd ' +\n 'DateDiff Day Decode DefaultValue Dictionary Difference Disjoint Distance Distinct ' +\n 'DomainCode DomainName Equals Exp Extent Feature FeatureSet FeatureSetById FeatureSetByTitle ' +\n 'FeatureSetByUrl Filter First Floor Geometry Guid HasKey Hour IIf IndexOf Intersection ' +\n 'Intersects IsEmpty Length LengthGeodetic Log Max Mean Millisecond Min Minute Month ' +\n 'MultiPartToSinglePart Multipoint NextSequenceValue Now Number OrderBy Overlaps Point Polygon ' +\n 'Polyline Pow Random Relate Reverse Round Second SetGeometry Sin Sort Sqrt Stdev Sum ' +\n 'SymmetricDifference Tan Text Timestamp Today ToLocal Top Touches ToUTC TypeOf Union Variance ' +\n 'Weekday When Within Year '\n };\n var EXPRESSIONS;\n var SYMBOL = {\n className: 'symbol',\n begin: '\\\\$[feature|layer|map|value|view]+'\n };\n var NUMBER = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0[bB][01]+)' },\n { begin: '\\\\b(0[oO][0-7]+)' },\n { begin: hljs.C_NUMBER_RE }\n ],\n relevance: 0\n };\n var SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{', end: '\\\\}',\n keywords: KEYWORDS,\n contains: [] // defined later\n };\n var TEMPLATE_STRING = {\n className: 'string',\n begin: '`', end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n SUBST.contains = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n TEMPLATE_STRING,\n NUMBER,\n hljs.REGEXP_MODE\n ];\n var PARAMS_CONTAINS = SUBST.contains.concat([\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]);\n\n return {\n aliases: ['arcade'],\n keywords: KEYWORDS,\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n TEMPLATE_STRING,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n SYMBOL,\n NUMBER,\n { // object attr container\n begin: /[{,]\\s*/, relevance: 0,\n contains: [\n {\n begin: IDENT_RE + '\\\\s*:', returnBegin: true,\n relevance: 0,\n contains: [{className: 'attr', begin: IDENT_RE, relevance: 0}]\n }\n ]\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(return)\\\\b)\\\\s*',\n keywords: 'return',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n begin: '(\\\\(.*?\\\\)|' + IDENT_RE + ')\\\\s*=>', returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: IDENT_RE\n },\n {\n begin: /\\(\\s*\\)/,\n },\n {\n begin: /\\(/, end: /\\)/,\n excludeBegin: true, excludeEnd: true,\n keywords: KEYWORDS,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n beginKeywords: 'function', end: /\\{/, excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: IDENT_RE}),\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n contains: PARAMS_CONTAINS\n }\n ],\n illegal: /\\[|%/\n },\n {\n begin: /\\$[(.]/\n }\n ],\n illegal: /#(?!!)/\n };\n};","module.exports = function(hljs) {\n var CPP_PRIMITIVE_TYPES = {\n className: 'keyword',\n begin: '\\\\b[a-z\\\\d_]*_t\\\\b'\n };\n\n var STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '(u8?|U|L)?\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n // TODO: This does not handle raw string literals with prefixes. Using\n // a single regex with backreferences would work (note to use *?\n // instead of * to make it non-greedy), but the mode.terminators\n // computation in highlight.js breaks the counting.\n begin: '(u8?|U|L)?R\"\\\\(', end: '\\\\)\"',\n },\n {\n begin: '\\'\\\\\\\\?.', end: '\\'',\n illegal: '.'\n }\n ]\n };\n\n var NUMBERS = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0b[01\\']+)' },\n { begin: '(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)(u|U|l|L|ul|UL|f|F|b|B)' },\n { begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)' }\n ],\n relevance: 0\n };\n\n var PREPROCESSOR = {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/, end: /$/,\n keywords: {\n 'meta-keyword':\n 'if else elif endif define undef warning error line ' +\n 'pragma ifdef ifndef include'\n },\n contains: [\n {\n begin: /\\\\\\n/, relevance: 0\n },\n hljs.inherit(STRINGS, {className: 'meta-string'}),\n {\n className: 'meta-string',\n begin: /<[^\\n>]*>/, end: /$/,\n illegal: '\\\\n',\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n var FUNCTION_TITLE = hljs.IDENT_RE + '\\\\s*\\\\(';\n\n var CPP_KEYWORDS = {\n keyword: 'int float while private char catch import module export virtual operator sizeof ' +\n 'dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace ' +\n 'unsigned long volatile static protected bool template mutable if public friend ' +\n 'do goto auto void enum else break extern using asm case typeid ' +\n 'short reinterpret_cast|10 default double register explicit signed typename try this ' +\n 'switch continue inline delete alignof constexpr decltype ' +\n 'noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary ' +\n 'atomic_bool atomic_char atomic_schar ' +\n 'atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong ' +\n 'atomic_ullong new throw return ' +\n 'and or not',\n built_in: 'std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream ' +\n 'auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set ' +\n 'unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos ' +\n 'asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp ' +\n 'fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper ' +\n 'isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow ' +\n 'printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp ' +\n 'strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan ' +\n 'vfprintf vprintf vsprintf endl initializer_list unique_ptr',\n literal: 'true false nullptr NULL'\n };\n\n var EXPRESSION_CONTAINS = [\n CPP_PRIMITIVE_TYPES,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n\n return {\n aliases: ['c', 'cc', 'h', 'c++', 'h++', 'hpp'],\n keywords: CPP_KEYWORDS,\n illegal: '</',\n contains: EXPRESSION_CONTAINS.concat([\n PREPROCESSOR,\n {\n begin: '\\\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\\\s*<', end: '>',\n keywords: CPP_KEYWORDS,\n contains: ['self', CPP_PRIMITIVE_TYPES]\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: CPP_KEYWORDS\n },\n {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {begin: /=/, end: /;/},\n {begin: /\\(/, end: /\\)/},\n {beginKeywords: 'new throw return else', end: /;/}\n ],\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/, end: /\\)/,\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat(['self']),\n relevance: 0\n }\n ]),\n relevance: 0\n },\n {\n className: 'function',\n begin: '(' + hljs.IDENT_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n returnBegin: true, end: /[{;=]/,\n excludeEnd: true,\n keywords: CPP_KEYWORDS,\n illegal: /[^\\w\\s\\*&]/,\n contains: [\n {\n begin: FUNCTION_TITLE, returnBegin: true,\n contains: [hljs.TITLE_MODE],\n relevance: 0\n },\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES,\n // Count matching parentheses.\n {\n begin: /\\(/, end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n 'self',\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES\n ]\n }\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class struct', end: /[{;:]/,\n contains: [\n {begin: /</, end: />/, contains: ['self']}, // skip generic stuff\n hljs.TITLE_MODE\n ]\n }\n ]),\n exports: {\n preprocessor: PREPROCESSOR,\n strings: STRINGS,\n keywords: CPP_KEYWORDS\n }\n };\n};","module.exports = function(hljs) {\n var CPP = hljs.getLanguage('cpp').exports;\n\treturn {\n keywords: {\n keyword:\n 'boolean byte word string String array ' + CPP.keywords.keyword,\n built_in:\n 'setup loop while catch for if do goto try switch case else ' +\n 'default break continue return ' +\n 'KeyboardController MouseController SoftwareSerial ' +\n 'EthernetServer EthernetClient LiquidCrystal ' +\n 'RobotControl GSMVoiceCall EthernetUDP EsploraTFT ' +\n 'HttpClient RobotMotor WiFiClient GSMScanner ' +\n 'FileSystem Scheduler GSMServer YunClient YunServer ' +\n 'IPAddress GSMClient GSMModem Keyboard Ethernet ' +\n 'Console GSMBand Esplora Stepper Process ' +\n 'WiFiUDP GSM_SMS Mailbox USBHost Firmata PImage ' +\n 'Client Server GSMPIN FileIO Bridge Serial ' +\n 'EEPROM Stream Mouse Audio Servo File Task ' +\n 'GPRS WiFi Wire TFT GSM SPI SD ' +\n 'runShellCommandAsynchronously analogWriteResolution ' +\n 'retrieveCallingNumber printFirmwareVersion ' +\n 'analogReadResolution sendDigitalPortPair ' +\n 'noListenOnLocalhost readJoystickButton setFirmwareVersion ' +\n 'readJoystickSwitch scrollDisplayRight getVoiceCallStatus ' +\n 'scrollDisplayLeft writeMicroseconds delayMicroseconds ' +\n 'beginTransmission getSignalStrength runAsynchronously ' +\n 'getAsynchronously listenOnLocalhost getCurrentCarrier ' +\n 'readAccelerometer messageAvailable sendDigitalPorts ' +\n 'lineFollowConfig countryNameWrite runShellCommand ' +\n 'readStringUntil rewindDirectory readTemperature ' +\n 'setClockDivider readLightSensor endTransmission ' +\n 'analogReference detachInterrupt countryNameRead ' +\n 'attachInterrupt encryptionType readBytesUntil ' +\n 'robotNameWrite readMicrophone robotNameRead cityNameWrite ' +\n 'userNameWrite readJoystickY readJoystickX mouseReleased ' +\n 'openNextFile scanNetworks noInterrupts digitalWrite ' +\n 'beginSpeaker mousePressed isActionDone mouseDragged ' +\n 'displayLogos noAutoscroll addParameter remoteNumber ' +\n 'getModifiers keyboardRead userNameRead waitContinue ' +\n 'processInput parseCommand printVersion readNetworks ' +\n 'writeMessage blinkVersion cityNameRead readMessage ' +\n 'setDataMode parsePacket isListening setBitOrder ' +\n 'beginPacket isDirectory motorsWrite drawCompass ' +\n 'digitalRead clearScreen serialEvent rightToLeft ' +\n 'setTextSize leftToRight requestFrom keyReleased ' +\n 'compassRead analogWrite interrupts WiFiServer ' +\n 'disconnect playMelody parseFloat autoscroll ' +\n 'getPINUsed setPINUsed setTimeout sendAnalog ' +\n 'readSlider analogRead beginWrite createChar ' +\n 'motorsStop keyPressed tempoWrite readButton ' +\n 'subnetMask debugPrint macAddress writeGreen ' +\n 'randomSeed attachGPRS readString sendString ' +\n 'remotePort releaseAll mouseMoved background ' +\n 'getXChange getYChange answerCall getResult ' +\n 'voiceCall endPacket constrain getSocket writeJSON ' +\n 'getButton available connected findUntil readBytes ' +\n 'exitValue readGreen writeBlue startLoop IPAddress ' +\n 'isPressed sendSysex pauseMode gatewayIP setCursor ' +\n 'getOemKey tuneWrite noDisplay loadImage switchPIN ' +\n 'onRequest onReceive changePIN playFile noBuffer ' +\n 'parseInt overflow checkPIN knobRead beginTFT ' +\n 'bitClear updateIR bitWrite position writeRGB ' +\n 'highByte writeRed setSpeed readBlue noStroke ' +\n 'remoteIP transfer shutdown hangCall beginSMS ' +\n 'endWrite attached maintain noCursor checkReg ' +\n 'checkPUK shiftOut isValid shiftIn pulseIn ' +\n 'connect println localIP pinMode getIMEI ' +\n 'display noBlink process getBand running beginSD ' +\n 'drawBMP lowByte setBand release bitRead prepare ' +\n 'pointTo readRed setMode noFill remove listen ' +\n 'stroke detach attach noTone exists buffer ' +\n 'height bitSet circle config cursor random ' +\n 'IRread setDNS endSMS getKey micros ' +\n 'millis begin print write ready flush width ' +\n 'isPIN blink clear press mkdir rmdir close ' +\n 'point yield image BSSID click delay ' +\n 'read text move peek beep rect line open ' +\n 'seek fill size turn stop home find ' +\n 'step tone sqrt RSSI SSID ' +\n 'end bit tan cos sin pow map abs max ' +\n 'min get run put',\n literal:\n 'DIGITAL_MESSAGE FIRMATA_STRING ANALOG_MESSAGE ' +\n 'REPORT_DIGITAL REPORT_ANALOG INPUT_PULLUP ' +\n 'SET_PIN_MODE INTERNAL2V56 SYSTEM_RESET LED_BUILTIN ' +\n 'INTERNAL1V1 SYSEX_START INTERNAL EXTERNAL ' +\n 'DEFAULT OUTPUT INPUT HIGH LOW'\n },\n contains: [\n CPP.preprocessor,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n //local labels: %?[FB]?[AT]?\\d{1,2}\\w+\n return {\n case_insensitive: true,\n aliases: ['arm'],\n lexemes: '\\\\.?' + hljs.IDENT_RE,\n keywords: {\n meta:\n //GNU preprocs\n '.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg '+\n //ARM directives\n 'ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ',\n built_in:\n 'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 '+ //standard registers\n 'pc lr sp ip sl sb fp '+ //typical regs plus backward compatibility\n 'a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 '+ //more regs and fp\n 'p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 '+ //coprocessor regs\n 'c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 '+ //more coproc\n 'q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 '+ //advanced SIMD NEON regs\n\n //program status registers\n 'cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf '+\n 'spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf '+\n\n //NEON and VFP registers\n 's0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 '+\n 's16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 '+\n 'd0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 '+\n 'd16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 ' +\n\n '{PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @'\n },\n contains: [\n {\n className: 'keyword',\n begin: '\\\\b('+ //mnemonics\n 'adc|'+\n '(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|'+\n 'and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|'+\n 'bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|'+\n 'setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|'+\n 'ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|'+\n 'mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|'+\n 'mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|'+\n 'mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|'+\n 'rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|'+\n 'stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|'+\n '[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|'+\n 'wfe|wfi|yield'+\n ')'+\n '(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?'+ //condition codes\n '[sptrx]?' , //legal postfixes\n end: '\\\\s'\n },\n hljs.COMMENT('[;@]', '$', {relevance: 0}),\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\'',\n end: '[^\\\\\\\\]\\'',\n relevance: 0\n },\n {\n className: 'title',\n begin: '\\\\|', end: '\\\\|',\n illegal: '\\\\n',\n relevance: 0\n },\n {\n className: 'number',\n variants: [\n {begin: '[#$=]?0x[0-9a-f]+'}, //hex\n {begin: '[#$=]?0b[01]+'}, //bin\n {begin: '[#$=]\\\\d+'}, //literal\n {begin: '\\\\b\\\\d+'} //bare number\n ],\n relevance: 0\n },\n {\n className: 'symbol',\n variants: [\n {begin: '^[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+'}, //ARM syntax\n {begin: '^\\\\s*[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+:'}, //GNU ARM syntax\n {begin: '[=#]\\\\w+' } //label reference\n ],\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n var XML_IDENT_RE = '[A-Za-z0-9\\\\._:-]+';\n var TAG_INTERNALS = {\n endsWithParent: true,\n illegal: /</,\n relevance: 0,\n contains: [\n {\n className: 'attr',\n begin: XML_IDENT_RE,\n relevance: 0\n },\n {\n begin: /=\\s*/,\n relevance: 0,\n contains: [\n {\n className: 'string',\n endsParent: true,\n variants: [\n {begin: /\"/, end: /\"/},\n {begin: /'/, end: /'/},\n {begin: /[^\\s\"'=<>`]+/}\n ]\n }\n ]\n }\n ]\n };\n return {\n aliases: ['html', 'xhtml', 'rss', 'atom', 'xjb', 'xsd', 'xsl', 'plist'],\n case_insensitive: true,\n contains: [\n {\n className: 'meta',\n begin: '<!DOCTYPE', end: '>',\n relevance: 10,\n contains: [{begin: '\\\\[', end: '\\\\]'}]\n },\n hljs.COMMENT(\n '<!--',\n '-->',\n {\n relevance: 10\n }\n ),\n {\n begin: '<\\\\!\\\\[CDATA\\\\[', end: '\\\\]\\\\]>',\n relevance: 10\n },\n {\n className: 'meta',\n begin: /<\\?xml/, end: /\\?>/, relevance: 10\n },\n {\n begin: /<\\?(php)?/, end: /\\?>/,\n subLanguage: 'php',\n contains: [\n // We don't want the php closing tag ?> to close the PHP block when\n // inside any of the following blocks:\n {begin: '/\\\\*', end: '\\\\*/', skip: true},\n {begin: 'b\"', end: '\"', skip: true},\n {begin: 'b\\'', end: '\\'', skip: true},\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null, className: null, contains: null, skip: true}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null, className: null, contains: null, skip: true})\n ]\n },\n {\n className: 'tag',\n /*\n The lookahead pattern (?=...) ensures that 'begin' only matches\n '<style' as a single word, followed by a whitespace or an\n ending braket. The '$' is needed for the lexeme to be recognized\n by hljs.subMode() that tests lexemes outside the stream.\n */\n begin: '<style(?=\\\\s|>|$)', end: '>',\n keywords: {name: 'style'},\n contains: [TAG_INTERNALS],\n starts: {\n end: '</style>', returnEnd: true,\n subLanguage: ['css', 'xml']\n }\n },\n {\n className: 'tag',\n // See the comment in the <style tag about the lookahead pattern\n begin: '<script(?=\\\\s|>|$)', end: '>',\n keywords: {name: 'script'},\n contains: [TAG_INTERNALS],\n starts: {\n end: '\\<\\/script\\>', returnEnd: true,\n subLanguage: ['actionscript', 'javascript', 'handlebars', 'xml']\n }\n },\n {\n className: 'tag',\n begin: '</?', end: '/?>',\n contains: [\n {\n className: 'name', begin: /[^\\/><\\s]+/, relevance: 0\n },\n TAG_INTERNALS\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['adoc'],\n contains: [\n // block comment\n hljs.COMMENT(\n '^/{4,}\\\\n',\n '\\\\n/{4,}$',\n // can also be done as...\n //'^/{4,}$',\n //'^/{4,}$',\n {\n relevance: 10\n }\n ),\n // line comment\n hljs.COMMENT(\n '^//',\n '$',\n {\n relevance: 0\n }\n ),\n // title\n {\n className: 'title',\n begin: '^\\\\.\\\\w.*$'\n },\n // example, admonition & sidebar blocks\n {\n begin: '^[=\\\\*]{4,}\\\\n',\n end: '\\\\n^[=\\\\*]{4,}$',\n relevance: 10\n },\n // headings\n {\n className: 'section',\n relevance: 10,\n variants: [\n {begin: '^(={1,5}) .+?( \\\\1)?$'},\n {begin: '^[^\\\\[\\\\]\\\\n]+?\\\\n[=\\\\-~\\\\^\\\\+]{2,}$'},\n ]\n },\n // document attributes\n {\n className: 'meta',\n begin: '^:.+?:',\n end: '\\\\s',\n excludeEnd: true,\n relevance: 10\n },\n // block attributes\n {\n className: 'meta',\n begin: '^\\\\[.+?\\\\]$',\n relevance: 0\n },\n // quoteblocks\n {\n className: 'quote',\n begin: '^_{4,}\\\\n',\n end: '\\\\n_{4,}$',\n relevance: 10\n },\n // listing and literal blocks\n {\n className: 'code',\n begin: '^[\\\\-\\\\.]{4,}\\\\n',\n end: '\\\\n[\\\\-\\\\.]{4,}$',\n relevance: 10\n },\n // passthrough blocks\n {\n begin: '^\\\\+{4,}\\\\n',\n end: '\\\\n\\\\+{4,}$',\n contains: [\n {\n begin: '<', end: '>',\n subLanguage: 'xml',\n relevance: 0\n }\n ],\n relevance: 10\n },\n // lists (can only capture indicators)\n {\n className: 'bullet',\n begin: '^(\\\\*+|\\\\-+|\\\\.+|[^\\\\n]+?::)\\\\s+'\n },\n // admonition\n {\n className: 'symbol',\n begin: '^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\\\s+',\n relevance: 10\n },\n // inline strong\n {\n className: 'strong',\n // must not follow a word character or be followed by an asterisk or space\n begin: '\\\\B\\\\*(?![\\\\*\\\\s])',\n end: '(\\\\n{2}|\\\\*)',\n // allow escaped asterisk followed by word char\n contains: [\n {\n begin: '\\\\\\\\*\\\\w',\n relevance: 0\n }\n ]\n },\n // inline emphasis\n {\n className: 'emphasis',\n // must not follow a word character or be followed by a single quote or space\n begin: '\\\\B\\'(?![\\'\\\\s])',\n end: '(\\\\n{2}|\\')',\n // allow escaped single quote followed by word char\n contains: [\n {\n begin: '\\\\\\\\\\'\\\\w',\n relevance: 0\n }\n ],\n relevance: 0\n },\n // inline emphasis (alt)\n {\n className: 'emphasis',\n // must not follow a word character or be followed by an underline or space\n begin: '_(?![_\\\\s])',\n end: '(\\\\n{2}|_)',\n relevance: 0\n },\n // inline smart quotes\n {\n className: 'string',\n variants: [\n {begin: \"``.+?''\"},\n {begin: \"`.+?'\"}\n ]\n },\n // inline code snippets (TODO should get same treatment as strong and emphasis)\n {\n className: 'code',\n begin: '(`.+?`|\\\\+.+?\\\\+)',\n relevance: 0\n },\n // indented literal block\n {\n className: 'code',\n begin: '^[ \\\\t]',\n end: '$',\n relevance: 0\n },\n // horizontal rules\n {\n begin: '^\\'{3,}[ \\\\t]*$',\n relevance: 10\n },\n // images and links\n {\n begin: '(link:)?(http|https|ftp|file|irc|image:?):\\\\S+\\\\[.*?\\\\]',\n returnBegin: true,\n contains: [\n {\n begin: '(link|image:?):',\n relevance: 0\n },\n {\n className: 'link',\n begin: '\\\\w',\n end: '[^\\\\[]+',\n relevance: 0\n },\n {\n className: 'string',\n begin: '\\\\[',\n end: '\\\\]',\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n }\n ],\n relevance: 10\n }\n ]\n };\n};","module.exports = function (hljs) {\n var KEYWORDS =\n 'false synchronized int abstract float private char boolean static null if const ' +\n 'for true while long throw strictfp finally protected import native final return void ' +\n 'enum else extends implements break transient new catch instanceof byte super volatile case ' +\n 'assert short package default double public try this switch continue throws privileged ' +\n 'aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization ' +\n 'staticinitialization withincode target within execution getWithinTypeName handler ' +\n 'thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents '+\n 'warning error soft precedence thisAspectInstance';\n var SHORTKEYS = 'get set args call';\n return {\n keywords : KEYWORDS,\n illegal : /<\\/|#/,\n contains : [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance : 0,\n contains : [\n {\n // eat up @'s in emails to prevent them to be recognized as doctags\n begin: /\\w+@/, relevance: 0\n },\n {\n className : 'doctag',\n begin : '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className : 'class',\n beginKeywords : 'aspect',\n end : /[{;=]/,\n excludeEnd : true,\n illegal : /[:;\"\\[\\]]/,\n contains : [\n {\n beginKeywords : 'extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton'\n },\n hljs.UNDERSCORE_TITLE_MODE,\n {\n begin : /\\([^\\)]*/,\n end : /[)]+/,\n keywords : KEYWORDS + ' ' + SHORTKEYS,\n excludeEnd : false\n }\n ]\n },\n {\n className : 'class',\n beginKeywords : 'class interface',\n end : /[{;=]/,\n excludeEnd : true,\n relevance: 0,\n keywords : 'class interface',\n illegal : /[:\"\\[\\]]/,\n contains : [\n {beginKeywords : 'extends implements'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n // AspectJ Constructs\n beginKeywords : 'pointcut after before around throwing returning',\n end : /[)]/,\n excludeEnd : false,\n illegal : /[\"\\[\\]]/,\n contains : [\n {\n begin : hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\n returnBegin : true,\n contains : [hljs.UNDERSCORE_TITLE_MODE]\n }\n ]\n },\n {\n begin : /[:]/,\n returnBegin : true,\n end : /[{;]/,\n relevance: 0,\n excludeEnd : false,\n keywords : KEYWORDS,\n illegal : /[\"\\[\\]]/,\n contains : [\n {\n begin : hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\n keywords : KEYWORDS + ' ' + SHORTKEYS,\n relevance: 0\n },\n hljs.QUOTE_STRING_MODE\n ]\n },\n {\n // this prevents 'new Name(...), or throw ...' from being recognized as a function definition\n beginKeywords : 'new throw',\n relevance : 0\n },\n {\n // the function class is a bit different for AspectJ compared to the Java language\n className : 'function',\n begin : /\\w+ +\\w+(\\.)?\\w+\\s*\\([^\\)]*\\)\\s*((throws)[\\w\\s,]+)?[\\{;]/,\n returnBegin : true,\n end : /[{;=]/,\n keywords : KEYWORDS,\n excludeEnd : true,\n contains : [\n {\n begin : hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\n returnBegin : true,\n relevance: 0,\n contains : [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n className : 'params',\n begin : /\\(/, end : /\\)/,\n relevance: 0,\n keywords : KEYWORDS,\n contains : [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_NUMBER_MODE,\n {\n // annotation is also used in this language\n className : 'meta',\n begin : '@[A-Za-z]+'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var BACKTICK_ESCAPE = {\n begin: '`[\\\\s\\\\S]'\n };\n\n return {\n case_insensitive: true,\n aliases: [ 'ahk' ],\n keywords: {\n keyword: 'Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group',\n literal: 'A|0 true false NOT AND OR',\n built_in: 'ComSpec Clipboard ClipboardAll ErrorLevel',\n },\n contains: [\n {\n className: 'built_in',\n begin: 'A_[a-zA-Z0-9]+'\n },\n BACKTICK_ESCAPE,\n hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [BACKTICK_ESCAPE]}),\n hljs.COMMENT(';', '$', {relevance: 0}),\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'number',\n begin: hljs.NUMBER_RE,\n relevance: 0\n },\n {\n className: 'subst', // FIXED\n begin: '%(?=[a-zA-Z0-9#_$@])', end: '%',\n illegal: '[^a-zA-Z0-9#_$@]'\n },\n {\n className: 'built_in',\n begin: '^\\\\s*\\\\w+\\\\s*,'\n //I don't really know if this is totally relevant\n },\n {\n className: 'meta', \n begin: '^\\\\s*#\\w+', end:'$',\n relevance: 0\n },\n {\n className: 'symbol',\n contains: [BACKTICK_ESCAPE],\n variants: [\n {begin: '^[^\\\\n\";]+::(?!=)'},\n {begin: '^[^\\\\n\";]+:(?!=)', relevance: 0} // zero relevance as it catches a lot of things\n // followed by a single ':' in many languages\n ]\n },\n {\n // consecutive commas, not for highlighting but just for relevance\n begin: ',\\\\s*,'\n }\n ]\n }\n};","module.exports = function(hljs) {\n var KEYWORDS = 'ByRef Case Const ContinueCase ContinueLoop ' +\n 'Default Dim Do Else ElseIf EndFunc EndIf EndSelect ' +\n 'EndSwitch EndWith Enum Exit ExitLoop For Func ' +\n 'Global If In Local Next ReDim Return Select Static ' +\n 'Step Switch Then To Until Volatile WEnd While With',\n\n LITERAL = 'True False And Null Not Or',\n\n BUILT_IN =\n 'Abs ACos AdlibRegister AdlibUnRegister Asc AscW ASin Assign ATan AutoItSetOption AutoItWinGetTitle AutoItWinSetTitle Beep Binary BinaryLen BinaryMid BinaryToString BitAND BitNOT BitOR BitRotate BitShift BitXOR BlockInput Break Call CDTray Ceiling Chr ChrW ClipGet ClipPut ConsoleRead ConsoleWrite ConsoleWriteError ControlClick ControlCommand ControlDisable ControlEnable ControlFocus ControlGetFocus ControlGetHandle ControlGetPos ControlGetText ControlHide ControlListView ControlMove ControlSend ControlSetText ControlShow ControlTreeView Cos Dec DirCopy DirCreate DirGetSize DirMove DirRemove DllCall DllCallAddress DllCallbackFree DllCallbackGetPtr DllCallbackRegister DllClose DllOpen DllStructCreate DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData DriveGetDrive DriveGetFileSystem DriveGetLabel DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus EnvGet EnvSet EnvUpdate Eval Execute Exp FileChangeDir FileClose FileCopy FileCreateNTFSLink FileCreateShortcut FileDelete FileExists FileFindFirstFile FileFindNextFile FileFlush FileGetAttrib FileGetEncoding FileGetLongName FileGetPos FileGetShortcut FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall FileMove FileOpen FileOpenDialog FileRead FileReadLine FileReadToArray FileRecycle FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName GUICreate GUICtrlCreateAvi GUICtrlCreateButton GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem GUICtrlCreateTreeView GUICtrlCreateTreeViewItem GUICtrlCreateUpdown GUICtrlDelete GUICtrlGetHandle GUICtrlGetState GUICtrlRead GUICtrlRecvMsg GUICtrlRegisterListViewSort GUICtrlSendMsg GUICtrlSendToDummy GUICtrlSetBkColor GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetDefBkColor GUICtrlSetDefColor GUICtrlSetFont GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle GUICtrlSetTip GUIDelete GUIGetCursorInfo GUIGetMsg GUIGetStyle GUIRegisterMsg GUISetAccelerators GUISetBkColor GUISetCoord GUISetCursor GUISetFont GUISetHelp GUISetIcon GUISetOnEvent GUISetState GUISetStyle GUIStartGroup GUISwitch Hex HotKeySet HttpSetProxy HttpSetUserAgent HWnd InetClose InetGet InetGetInfo InetGetSize InetRead IniDelete IniRead IniReadSection IniReadSectionNames IniRenameSection IniWrite IniWriteSection InputBox Int IsAdmin IsArray IsBinary IsBool IsDeclared IsDllStruct IsFloat IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch ProcessClose ProcessExists ProcessGetStats ProcessList ProcessSetPriority ProcessWait ProcessWaitClose ProgressOff ProgressOn ProgressSet Ptr Random RegDelete RegEnumKey RegEnumVal RegRead RegWrite Round Run RunAs RunAsWait RunWait Send SendKeepActive SetError SetExtended ShellExecute ShellExecuteWait Shutdown Sin Sleep SoundPlay SoundSetWaveVolume SplashImageOn SplashOff SplashTextOn Sqrt SRandom StatusbarGetText StderrRead StdinWrite StdioClose StdoutRead String StringAddCR StringCompare StringFormat StringFromASCIIArray StringInStr StringIsAlNum StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft StringLen StringLower StringMid StringRegExp StringRegExpReplace StringReplace StringReverse StringRight StringSplit StringStripCR StringStripWS StringToASCIIArray StringToBinary StringTrimLeft StringTrimRight StringUpper Tan TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIP TCPRecv TCPSend TCPShutdown, UDPShutdown TCPStartup, UDPStartup TimerDiff TimerInit ToolTip TrayCreateItem TrayCreateMenu TrayGetMsg TrayItemDelete TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent TrayItemSetState TrayItemSetText TraySetClick TraySetIcon TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip UBound UDPBind UDPCloseSocket UDPOpen UDPRecv UDPSend VarGetType WinActivate WinActive WinClose WinExists WinFlash WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait',\n\n COMMENT = {\n variants: [\n hljs.COMMENT(';', '$', {relevance: 0}),\n hljs.COMMENT('#cs', '#ce'),\n hljs.COMMENT('#comments-start', '#comments-end')\n ]\n },\n\n VARIABLE = {\n begin: '\\\\$[A-z0-9_]+'\n },\n\n STRING = {\n className: 'string',\n variants: [{\n begin: /\"/,\n end: /\"/,\n contains: [{\n begin: /\"\"/,\n relevance: 0\n }]\n }, {\n begin: /'/,\n end: /'/,\n contains: [{\n begin: /''/,\n relevance: 0\n }]\n }]\n },\n\n NUMBER = {\n variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]\n },\n\n PREPROCESSOR = {\n className: 'meta',\n begin: '#',\n end: '$',\n keywords: {'meta-keyword': 'comments include include-once NoTrayIcon OnAutoItStartRegister pragma compile RequireAdmin'},\n contains: [{\n begin: /\\\\\\n/,\n relevance: 0\n }, {\n beginKeywords: 'include',\n keywords: {'meta-keyword': 'include'},\n end: '$',\n contains: [\n STRING, {\n className: 'meta-string',\n variants: [{\n begin: '<',\n end: '>'\n }, {\n begin: /\"/,\n end: /\"/,\n contains: [{\n begin: /\"\"/,\n relevance: 0\n }]\n }, {\n begin: /'/,\n end: /'/,\n contains: [{\n begin: /''/,\n relevance: 0\n }]\n }]\n }\n ]\n },\n STRING,\n COMMENT\n ]\n },\n\n CONSTANT = {\n className: 'symbol',\n // begin: '@',\n // end: '$',\n // keywords: 'AppDataCommonDir AppDataDir AutoItExe AutoItPID AutoItVersion AutoItX64 COM_EventObj CommonFilesDir Compiled ComputerName ComSpec CPUArch CR CRLF DesktopCommonDir DesktopDepth DesktopDir DesktopHeight DesktopRefresh DesktopWidth DocumentsCommonDir error exitCode exitMethod extended FavoritesCommonDir FavoritesDir GUI_CtrlHandle GUI_CtrlId GUI_DragFile GUI_DragId GUI_DropId GUI_WinHandle HomeDrive HomePath HomeShare HotKeyPressed HOUR IPAddress1 IPAddress2 IPAddress3 IPAddress4 KBLayout LF LocalAppDataDir LogonDNSDomain LogonDomain LogonServer MDAY MIN MON MSEC MUILang MyDocumentsDir NumParams OSArch OSBuild OSLang OSServicePack OSType OSVersion ProgramFilesDir ProgramsCommonDir ProgramsDir ScriptDir ScriptFullPath ScriptLineNumber ScriptName SEC StartMenuCommonDir StartMenuDir StartupCommonDir StartupDir SW_DISABLE SW_ENABLE SW_HIDE SW_LOCK SW_MAXIMIZE SW_MINIMIZE SW_RESTORE SW_SHOW SW_SHOWDEFAULT SW_SHOWMAXIMIZED SW_SHOWMINIMIZED SW_SHOWMINNOACTIVE SW_SHOWNA SW_SHOWNOACTIVATE SW_SHOWNORMAL SW_UNLOCK SystemDir TAB TempDir TRAY_ID TrayIconFlashing TrayIconVisible UserName UserProfileDir WDAY WindowsDir WorkingDir YDAY YEAR',\n // relevance: 5\n begin: '@[A-z0-9_]+'\n },\n\n FUNCTION = {\n className: 'function',\n beginKeywords: 'Func',\n end: '$',\n illegal: '\\\\$|\\\\[|%',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE, {\n className: 'params',\n begin: '\\\\(',\n end: '\\\\)',\n contains: [\n VARIABLE,\n STRING,\n NUMBER\n ]\n }\n ]\n };\n\n return {\n case_insensitive: true,\n illegal: /\\/\\*/,\n keywords: {\n keyword: KEYWORDS,\n built_in: BUILT_IN,\n literal: LITERAL\n },\n contains: [\n COMMENT,\n VARIABLE,\n STRING,\n NUMBER,\n PREPROCESSOR,\n CONSTANT,\n FUNCTION\n ]\n }\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n lexemes: '\\\\.?' + hljs.IDENT_RE,\n keywords: {\n keyword:\n /* mnemonic */\n 'adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs ' +\n 'brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr ' +\n 'clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor ' +\n 'fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul ' +\n 'muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs ' +\n 'sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub ' +\n 'subi swap tst wdr',\n built_in:\n /* general purpose registers */\n 'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 ' +\n 'r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ' +\n /* IO Registers (ATMega128) */\n 'ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h ' +\n 'tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ' +\n 'ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ' +\n 'ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk ' +\n 'tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ' +\n 'ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr ' +\n 'porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ' +\n 'ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf',\n meta:\n '.byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list ' +\n '.listmac .macro .nolist .org .set'\n },\n contains: [\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n ),\n hljs.C_NUMBER_MODE, // 0x..., decimal, float\n hljs.BINARY_NUMBER_MODE, // 0b...\n {\n className: 'number',\n begin: '\\\\b(\\\\$[a-zA-Z0-9]+|0o[0-7]+)' // $..., 0o...\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\'', end: '[^\\\\\\\\]\\'',\n illegal: '[^\\\\\\\\][^\\']'\n },\n {className: 'symbol', begin: '^[A-Za-z0-9_.$]+:'},\n {className: 'meta', begin: '#', end: '$'},\n { // подстановка в «.macro»\n className: 'subst',\n begin: '@[0-9]+'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var VARIABLE = {\n className: 'variable',\n variants: [\n {begin: /\\$[\\w\\d#@][\\w\\d_]*/},\n {begin: /\\$\\{(.*?)}/}\n ]\n };\n var KEYWORDS = 'BEGIN END if else while do for in break continue delete next nextfile function func exit|10';\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {\n begin: /(u|b)?r?'''/, end: /'''/,\n relevance: 10\n },\n {\n begin: /(u|b)?r?\"\"\"/, end: /\"\"\"/,\n relevance: 10\n },\n {\n begin: /(u|r|ur)'/, end: /'/,\n relevance: 10\n },\n {\n begin: /(u|r|ur)\"/, end: /\"/,\n relevance: 10\n },\n {\n begin: /(b|br)'/, end: /'/\n },\n {\n begin: /(b|br)\"/, end: /\"/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n return {\n\t keywords: {\n\t keyword: KEYWORDS\n },\n contains: [\n VARIABLE,\n STRING,\n hljs.REGEXP_MODE,\n hljs.HASH_COMMENT_MODE,\n hljs.NUMBER_MODE\n ]\n }\n};","module.exports = function(hljs) {\n return {\n keywords: 'false int abstract private char boolean static null if for true ' +\n 'while long throw finally protected final return void enum else ' +\n 'break new catch byte super case short default double public try this switch ' +\n 'continue reverse firstfast firstonly forupdate nofetch sum avg minof maxof count ' +\n 'order group by asc desc index hint like dispaly edit client server ttsbegin ' +\n 'ttscommit str real date container anytype common div mod',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '#', end: '$'\n },\n {\n className: 'class',\n beginKeywords: 'class interface', end: '{', excludeEnd: true,\n illegal: ':',\n contains: [\n {beginKeywords: 'extends implements'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var VAR = {\n className: 'variable',\n variants: [\n {begin: /\\$[\\w\\d#@][\\w\\d_]*/},\n {begin: /\\$\\{(.*?)}/}\n ]\n };\n var QUOTE_STRING = {\n className: 'string',\n begin: /\"/, end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR,\n {\n className: 'variable',\n begin: /\\$\\(/, end: /\\)/,\n contains: [hljs.BACKSLASH_ESCAPE]\n }\n ]\n };\n var APOS_STRING = {\n className: 'string',\n begin: /'/, end: /'/\n };\n\n return {\n aliases: ['sh', 'zsh'],\n lexemes: /\\b-?[a-z\\._]+\\b/,\n keywords: {\n keyword:\n 'if then else elif fi for while in do done case esac function',\n literal:\n 'true false',\n built_in:\n // Shell built-ins\n // http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n 'break cd continue eval exec exit export getopts hash pwd readonly return shift test times ' +\n 'trap umask unset ' +\n // Bash built-ins\n 'alias bind builtin caller command declare echo enable help let local logout mapfile printf ' +\n 'read readarray source type typeset ulimit unalias ' +\n // Shell modifiers\n 'set shopt ' +\n // Zsh built-ins\n 'autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles ' +\n 'compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate ' +\n 'fc fg float functions getcap getln history integer jobs kill limit log noglob popd print ' +\n 'pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit ' +\n 'unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof ' +\n 'zpty zregexparse zsocket zstyle ztcp',\n _:\n '-ne -eq -lt -gt -f -d -e -s -l -a' // relevance booster\n },\n contains: [\n {\n className: 'meta',\n begin: /^#![^\\n]+sh\\s*$/,\n relevance: 10\n },\n {\n className: 'function',\n begin: /\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,\n returnBegin: true,\n contains: [hljs.inherit(hljs.TITLE_MODE, {begin: /\\w[\\w\\d_]*/})],\n relevance: 0\n },\n hljs.HASH_COMMENT_MODE,\n QUOTE_STRING,\n APOS_STRING,\n VAR\n ]\n };\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n illegal: '^\\.',\n // Support explicitely typed variables that end with $%! or #.\n lexemes: '[a-zA-Z][a-zA-Z0-9_\\$\\%\\!\\#]*',\n keywords: {\n keyword:\n 'ABS ASC AND ATN AUTO|0 BEEP BLOAD|10 BSAVE|10 CALL CALLS CDBL CHAIN CHDIR CHR$|10 CINT CIRCLE ' +\n 'CLEAR CLOSE CLS COLOR COM COMMON CONT COS CSNG CSRLIN CVD CVI CVS DATA DATE$ ' +\n 'DEFDBL DEFINT DEFSNG DEFSTR DEF|0 SEG USR DELETE DIM DRAW EDIT END ENVIRON ENVIRON$ ' +\n 'EOF EQV ERASE ERDEV ERDEV$ ERL ERR ERROR EXP FIELD FILES FIX FOR|0 FRE GET GOSUB|10 GOTO ' +\n 'HEX$ IF|0 THEN ELSE|0 INKEY$ INP INPUT INPUT# INPUT$ INSTR IMP INT IOCTL IOCTL$ KEY ON ' +\n 'OFF LIST KILL LEFT$ LEN LET LINE LLIST LOAD LOC LOCATE LOF LOG LPRINT USING LSET ' +\n 'MERGE MID$ MKDIR MKD$ MKI$ MKS$ MOD NAME NEW NEXT NOISE NOT OCT$ ON OR PEN PLAY STRIG OPEN OPTION ' +\n 'BASE OUT PAINT PALETTE PCOPY PEEK PMAP POINT POKE POS PRINT PRINT] PSET PRESET ' +\n 'PUT RANDOMIZE READ REM RENUM RESET|0 RESTORE RESUME RETURN|0 RIGHT$ RMDIR RND RSET ' +\n 'RUN SAVE SCREEN SGN SHELL SIN SOUND SPACE$ SPC SQR STEP STICK STOP STR$ STRING$ SWAP ' +\n 'SYSTEM TAB TAN TIME$ TIMER TROFF TRON TO USR VAL VARPTR VARPTR$ VIEW WAIT WHILE ' +\n 'WEND WIDTH WINDOW WRITE XOR'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.COMMENT('REM', '$', {relevance: 10}),\n hljs.COMMENT('\\'', '$', {relevance: 0}),\n {\n // Match line numbers\n className: 'symbol',\n begin: '^[0-9]+\\ ',\n relevance: 10\n },\n {\n // Match typed numeric constants (1000, 12.34!, 1.2e5, 1.5#, 1.2D2)\n className: 'number',\n begin: '\\\\b([0-9]+[0-9edED\\.]*[#\\!]?)',\n relevance: 0\n },\n {\n // Match hexadecimal numbers (&Hxxxx)\n className: 'number',\n begin: '(\\&[hH][0-9a-fA-F]{1,4})'\n },\n {\n // Match octal numbers (&Oxxxxxx)\n className: 'number',\n begin: '(\\&[oO][0-7]{1,6})'\n }\n ]\n };\n};","module.exports = function(hljs){\n return {\n contains: [\n // Attribute\n {\n className: 'attribute',\n begin: /</, end: />/\n },\n // Specific\n {\n begin: /::=/,\n starts: {\n end: /$/,\n contains: [\n {\n begin: /</, end: />/\n },\n // Common\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n }\n }\n ]\n };\n};","module.exports = function(hljs){\n var LITERAL = {\n className: 'literal',\n begin: '[\\\\+\\\\-]',\n relevance: 0\n };\n return {\n aliases: ['bf'],\n contains: [\n hljs.COMMENT(\n '[^\\\\[\\\\]\\\\.,\\\\+\\\\-<> \\r\\n]',\n '[\\\\[\\\\]\\\\.,\\\\+\\\\-<> \\r\\n]',\n {\n returnEnd: true,\n relevance: 0\n }\n ),\n {\n className: 'title',\n begin: '[\\\\[\\\\]]',\n relevance: 0\n },\n {\n className: 'string',\n begin: '[\\\\.,]',\n relevance: 0\n },\n {\n // this mode works as the only relevance counter\n begin: /\\+\\+|\\-\\-/, returnBegin: true,\n contains: [LITERAL]\n },\n LITERAL\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS =\n 'div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to ' +\n 'until while with var';\n var LITERALS = 'false true';\n var COMMENT_MODES = [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT(\n /\\{/,\n /\\}/,\n {\n relevance: 0\n }\n ),\n hljs.COMMENT(\n /\\(\\*/,\n /\\*\\)/,\n {\n relevance: 10\n }\n )\n ];\n var STRING = {\n className: 'string',\n begin: /'/, end: /'/,\n contains: [{begin: /''/}]\n };\n var CHAR_STRING = {\n className: 'string', begin: /(#\\d+)+/\n };\n var DATE = {\n className: 'number',\n begin: '\\\\b\\\\d+(\\\\.\\\\d+)?(DT|D|T)',\n relevance: 0\n };\n var DBL_QUOTED_VARIABLE = {\n className: 'string', // not a string technically but makes sense to be highlighted in the same style\n begin: '\"',\n end: '\"'\n };\n\n var PROCEDURE = {\n className: 'function',\n beginKeywords: 'procedure', end: /[:;]/,\n keywords: 'procedure|10',\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n contains: [STRING, CHAR_STRING]\n }\n ].concat(COMMENT_MODES)\n };\n\n var OBJECT = {\n className: 'class',\n begin: 'OBJECT (Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query) (\\\\d+) ([^\\\\r\\\\n]+)',\n returnBegin: true,\n contains: [\n hljs.TITLE_MODE,\n PROCEDURE\n ]\n };\n\n return {\n case_insensitive: true,\n keywords: { keyword: KEYWORDS, literal: LITERALS },\n illegal: /\\/\\*/,\n contains: [\n STRING, CHAR_STRING,\n DATE, DBL_QUOTED_VARIABLE,\n hljs.NUMBER_MODE,\n OBJECT,\n PROCEDURE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['capnp'],\n keywords: {\n keyword:\n 'struct enum interface union group import using const annotation extends in of on as with from fixed',\n built_in:\n 'Void Bool Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 Float32 Float64 ' +\n 'Text Data AnyPointer AnyStruct Capability List',\n literal:\n 'true false'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n hljs.HASH_COMMENT_MODE,\n {\n className: 'meta',\n begin: /@0x[\\w\\d]{16};/,\n illegal: /\\n/\n },\n {\n className: 'symbol',\n begin: /@\\d+\\b/\n },\n {\n className: 'class',\n beginKeywords: 'struct enum', end: /\\{/,\n illegal: /\\n/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\n })\n ]\n },\n {\n className: 'class',\n beginKeywords: 'interface', end: /\\{/,\n illegal: /\\n/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\n })\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n // 2.3. Identifiers and keywords\n var KEYWORDS =\n 'assembly module package import alias class interface object given value ' +\n 'assign void function new of extends satisfies abstracts in out return ' +\n 'break continue throw assert dynamic if else switch case for while try ' +\n 'catch finally then let this outer super is exists nonempty';\n // 7.4.1 Declaration Modifiers\n var DECLARATION_MODIFIERS =\n 'shared abstract formal default actual variable late native deprecated' +\n 'final sealed annotation suppressWarnings small';\n // 7.4.2 Documentation\n var DOCUMENTATION =\n 'doc by license see throws tagged';\n var SUBST = {\n className: 'subst', excludeBegin: true, excludeEnd: true,\n begin: /``/, end: /``/,\n keywords: KEYWORDS,\n relevance: 10\n };\n var EXPRESSIONS = [\n {\n // verbatim string\n className: 'string',\n begin: '\"\"\"',\n end: '\"\"\"',\n relevance: 10\n },\n {\n // string literal or template\n className: 'string',\n begin: '\"', end: '\"',\n contains: [SUBST]\n },\n {\n // character literal\n className: 'string',\n begin: \"'\",\n end: \"'\"\n },\n {\n // numeric literal\n className: 'number',\n begin: '#[0-9a-fA-F_]+|\\\\$[01_]+|[0-9_]+(?:\\\\.[0-9_](?:[eE][+-]?\\\\d+)?)?[kMGTPmunpf]?',\n relevance: 0\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n return {\n keywords: {\n keyword: KEYWORDS + ' ' + DECLARATION_MODIFIERS,\n meta: DOCUMENTATION\n },\n illegal: '\\\\$[^01]|#[^0-9a-fA-F]',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT('/\\\\*', '\\\\*/', {contains: ['self']}),\n {\n // compiler annotation\n className: 'meta',\n begin: '@[a-z]\\\\w*(?:\\\\:\\\"[^\\\"]*\\\")?'\n }\n ].concat(EXPRESSIONS)\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['clean','icl','dcl'],\n keywords: {\n keyword:\n 'if let in with where case of class instance otherwise ' +\n 'implementation definition system module from import qualified as ' +\n 'special code inline foreign export ccall stdcall generic derive ' +\n 'infix infixl infixr',\n literal:\n 'True False'\n },\n contains: [\n\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n\n {begin: '->|<-[|:]?|::|#!?|>>=|\\\\{\\\\||\\\\|\\\\}|:==|=:|\\\\.\\\\.|<>|`'} // relevance booster\n ]\n };\n};","module.exports = function(hljs) {\n var keywords = {\n 'builtin-name':\n // Clojure keywords\n 'def defonce cond apply if-not if-let if not not= = < > <= >= == + / * - rem '+\n 'quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? '+\n 'set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? '+\n 'class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? '+\n 'string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . '+\n 'inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last '+\n 'drop-while while intern condp case reduced cycle split-at split-with repeat replicate '+\n 'iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext '+\n 'nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends '+\n 'add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler '+\n 'set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter '+\n 'monitor-exit defmacro defn defn- macroexpand macroexpand-1 for dosync and or '+\n 'when when-not when-let comp juxt partial sequence memoize constantly complement identity assert '+\n 'peek pop doto proxy defstruct first rest cons defprotocol cast coll deftype defrecord last butlast '+\n 'sigs reify second ffirst fnext nfirst nnext defmulti defmethod meta with-meta ns in-ns create-ns import '+\n 'refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! '+\n 'assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger '+\n 'bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline '+\n 'flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking '+\n 'assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! '+\n 'reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! '+\n 'new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty '+\n 'hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list '+\n 'disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer '+\n 'chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate '+\n 'unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta '+\n 'lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize'\n };\n\n var SYMBOLSTART = 'a-zA-Z_\\\\-!.?+*=<>&#\\'';\n var SYMBOL_RE = '[' + SYMBOLSTART + '][' + SYMBOLSTART + '0-9/;:]*';\n var SIMPLE_NUMBER_RE = '[-+]?\\\\d+(\\\\.\\\\d+)?';\n\n var SYMBOL = {\n begin: SYMBOL_RE,\n relevance: 0\n };\n var NUMBER = {\n className: 'number', begin: SIMPLE_NUMBER_RE,\n relevance: 0\n };\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});\n var COMMENT = hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n );\n var LITERAL = {\n className: 'literal',\n begin: /\\b(true|false|nil)\\b/\n };\n var COLLECTION = {\n begin: '[\\\\[\\\\{]', end: '[\\\\]\\\\}]'\n };\n var HINT = {\n className: 'comment',\n begin: '\\\\^' + SYMBOL_RE\n };\n var HINT_COL = hljs.COMMENT('\\\\^\\\\{', '\\\\}');\n var KEY = {\n className: 'symbol',\n begin: '[:]{1,2}' + SYMBOL_RE\n };\n var LIST = {\n begin: '\\\\(', end: '\\\\)'\n };\n var BODY = {\n endsWithParent: true,\n relevance: 0\n };\n var NAME = {\n keywords: keywords,\n lexemes: SYMBOL_RE,\n className: 'name', begin: SYMBOL_RE,\n starts: BODY\n };\n var DEFAULT_CONTAINS = [LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL, SYMBOL];\n\n LIST.contains = [hljs.COMMENT('comment', ''), NAME, BODY];\n BODY.contains = DEFAULT_CONTAINS;\n COLLECTION.contains = DEFAULT_CONTAINS;\n HINT_COL.contains = [COLLECTION];\n\n return {\n aliases: ['clj'],\n illegal: /\\S/,\n contains: [LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL]\n }\n};","module.exports = function(hljs) {\n return {\n contains: [\n {\n className: 'meta',\n begin: /^([\\w.-]+|\\s*#_)=>/,\n starts: {\n end: /$/,\n subLanguage: 'clojure'\n }\n }\n ]\n }\n};","module.exports = function(hljs) {\n return {\n aliases: ['cmake.in'],\n case_insensitive: true,\n keywords: {\n keyword:\n // scripting commands\n 'break cmake_host_system_information cmake_minimum_required cmake_parse_arguments ' +\n 'cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro ' +\n 'endwhile execute_process file find_file find_library find_package find_path ' +\n 'find_program foreach function get_cmake_property get_directory_property ' +\n 'get_filename_component get_property if include include_guard list macro ' +\n 'mark_as_advanced math message option return separate_arguments ' +\n 'set_directory_properties set_property set site_name string unset variable_watch while ' +\n // project commands\n 'add_compile_definitions add_compile_options add_custom_command add_custom_target ' +\n 'add_definitions add_dependencies add_executable add_library add_link_options ' +\n 'add_subdirectory add_test aux_source_directory build_command create_test_sourcelist ' +\n 'define_property enable_language enable_testing export fltk_wrap_ui ' +\n 'get_source_file_property get_target_property get_test_property include_directories ' +\n 'include_external_msproject include_regular_expression install link_directories ' +\n 'link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions ' +\n 'set_source_files_properties set_target_properties set_tests_properties source_group ' +\n 'target_compile_definitions target_compile_features target_compile_options ' +\n 'target_include_directories target_link_directories target_link_libraries ' +\n 'target_link_options target_sources try_compile try_run ' +\n // CTest commands\n 'ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ' +\n 'ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ' +\n 'ctest_test ctest_update ctest_upload ' +\n // deprecated commands\n 'build_name exec_program export_library_dependencies install_files install_programs ' +\n 'install_targets load_command make_directory output_required_files remove ' +\n 'subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file ' +\n 'qt5_use_modules qt5_use_package qt5_wrap_cpp ' +\n // core keywords\n 'on off true false and or not command policy target test exists is_newer_than ' +\n 'is_directory is_symlink is_absolute matches less greater equal less_equal ' +\n 'greater_equal strless strgreater strequal strless_equal strgreater_equal version_less ' +\n 'version_greater version_equal version_less_equal version_greater_equal in_list defined'\n },\n contains: [\n {\n className: 'variable',\n begin: '\\\\${', end: '}'\n },\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n // JS keywords\n 'in if for while finally new do return else break catch instanceof throw try this ' +\n 'switch continue typeof delete debugger super yield import export from as default await ' +\n // Coffee keywords\n 'then unless until loop of by when and or is isnt not',\n literal:\n // JS literals\n 'true false null undefined ' +\n // Coffee literals\n 'yes no on off',\n built_in:\n 'npm require console print module global window document'\n };\n var JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\n var SUBST = {\n className: 'subst',\n begin: /#\\{/, end: /}/,\n keywords: KEYWORDS\n };\n var EXPRESSIONS = [\n hljs.BINARY_NUMBER_MODE,\n hljs.inherit(hljs.C_NUMBER_MODE, {starts: {end: '(\\\\s*/)?', relevance: 0}}), // a number tries to eat the following slash to prevent treating it as a regexp\n {\n className: 'string',\n variants: [\n {\n begin: /'''/, end: /'''/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /'/, end: /'/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /\"\"\"/, end: /\"\"\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n {\n begin: /\"/, end: /\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n }\n ]\n },\n {\n className: 'regexp',\n variants: [\n {\n begin: '///', end: '///',\n contains: [SUBST, hljs.HASH_COMMENT_MODE]\n },\n {\n begin: '//[gim]*',\n relevance: 0\n },\n {\n // regex can't start with space to parse x / 2 / 3 as two divisions\n // regex can't start with *, and it supports an \"illegal\" in the main mode\n begin: /\\/(?![ *])(\\\\\\/|.)*?\\/[gim]*(?=\\W|$)/\n }\n ]\n },\n {\n begin: '@' + JS_IDENT_RE // relevance booster\n },\n {\n subLanguage: 'javascript',\n excludeBegin: true, excludeEnd: true,\n variants: [\n {\n begin: '```', end: '```',\n },\n {\n begin: '`', end: '`',\n }\n ]\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: JS_IDENT_RE});\n var PARAMS_RE = '(\\\\(.*\\\\))?\\\\s*\\\\B[-=]>';\n var PARAMS = {\n className: 'params',\n begin: '\\\\([^\\\\(]', returnBegin: true,\n /* We need another contained nameless mode to not have every nested\n pair of parens to be called \"params\" */\n contains: [{\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n contains: ['self'].concat(EXPRESSIONS)\n }]\n };\n\n return {\n aliases: ['coffee', 'cson', 'iced'],\n keywords: KEYWORDS,\n illegal: /\\/\\*/,\n contains: EXPRESSIONS.concat([\n hljs.COMMENT('###', '###'),\n hljs.HASH_COMMENT_MODE,\n {\n className: 'function',\n begin: '^\\\\s*' + JS_IDENT_RE + '\\\\s*=\\\\s*' + PARAMS_RE, end: '[-=]>',\n returnBegin: true,\n contains: [TITLE, PARAMS]\n },\n {\n // anonymous function start\n begin: /[:\\(,=]\\s*/,\n relevance: 0,\n contains: [\n {\n className: 'function',\n begin: PARAMS_RE, end: '[-=]>',\n returnBegin: true,\n contains: [PARAMS]\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class',\n end: '$',\n illegal: /[:=\"\\[\\]]/,\n contains: [\n {\n beginKeywords: 'extends',\n endsWithParent: true,\n illegal: /[:=\"\\[\\]]/,\n contains: [TITLE]\n },\n TITLE\n ]\n },\n {\n begin: JS_IDENT_RE + ':', end: ':',\n returnBegin: true, returnEnd: true,\n relevance: 0\n }\n ])\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword:\n '_ as at cofix else end exists exists2 fix for forall fun if IF in let ' +\n 'match mod Prop return Set then Type using where with ' +\n 'Abort About Add Admit Admitted All Arguments Assumptions Axiom Back BackTo ' +\n 'Backtrack Bind Blacklist Canonical Cd Check Class Classes Close Coercion ' +\n 'Coercions CoFixpoint CoInductive Collection Combined Compute Conjecture ' +\n 'Conjectures Constant constr Constraint Constructors Context Corollary ' +\n 'CreateHintDb Cut Declare Defined Definition Delimit Dependencies Dependent' +\n 'Derive Drop eauto End Equality Eval Example Existential Existentials ' +\n 'Existing Export exporting Extern Extract Extraction Fact Field Fields File ' +\n 'Fixpoint Focus for From Function Functional Generalizable Global Goal Grab ' +\n 'Grammar Graph Guarded Heap Hint HintDb Hints Hypotheses Hypothesis ident ' +\n 'Identity If Immediate Implicit Import Include Inductive Infix Info Initial ' +\n 'Inline Inspect Instance Instances Intro Intros Inversion Inversion_clear ' +\n 'Language Left Lemma Let Libraries Library Load LoadPath Local Locate Ltac ML ' +\n 'Mode Module Modules Monomorphic Morphism Next NoInline Notation Obligation ' +\n 'Obligations Opaque Open Optimize Options Parameter Parameters Parametric ' +\n 'Path Paths pattern Polymorphic Preterm Print Printing Program Projections ' +\n 'Proof Proposition Pwd Qed Quit Rec Record Recursive Redirect Relation Remark ' +\n 'Remove Require Reserved Reset Resolve Restart Rewrite Right Ring Rings Save ' +\n 'Scheme Scope Scopes Script Search SearchAbout SearchHead SearchPattern ' +\n 'SearchRewrite Section Separate Set Setoid Show Solve Sorted Step Strategies ' +\n 'Strategy Structure SubClass Table Tables Tactic Term Test Theorem Time ' +\n 'Timeout Transparent Type Typeclasses Types Undelimit Undo Unfocus Unfocused ' +\n 'Unfold Universe Universes Unset Unshelve using Variable Variables Variant ' +\n 'Verbose Visibility where with',\n built_in:\n 'abstract absurd admit after apply as assert assumption at auto autorewrite ' +\n 'autounfold before bottom btauto by case case_eq cbn cbv change ' +\n 'classical_left classical_right clear clearbody cofix compare compute ' +\n 'congruence constr_eq constructor contradict contradiction cut cutrewrite ' +\n 'cycle decide decompose dependent destruct destruction dintuition ' +\n 'discriminate discrR do double dtauto eapply eassumption eauto ecase ' +\n 'econstructor edestruct ediscriminate eelim eexact eexists einduction ' +\n 'einjection eleft elim elimtype enough equality erewrite eright ' +\n 'esimplify_eq esplit evar exact exactly_once exfalso exists f_equal fail ' +\n 'field field_simplify field_simplify_eq first firstorder fix fold fourier ' +\n 'functional generalize generalizing gfail give_up has_evar hnf idtac in ' +\n 'induction injection instantiate intro intro_pattern intros intuition ' +\n 'inversion inversion_clear is_evar is_var lapply lazy left lia lra move ' +\n 'native_compute nia nsatz omega once pattern pose progress proof psatz quote ' +\n 'record red refine reflexivity remember rename repeat replace revert ' +\n 'revgoals rewrite rewrite_strat right ring ring_simplify rtauto set ' +\n 'setoid_reflexivity setoid_replace setoid_rewrite setoid_symmetry ' +\n 'setoid_transitivity shelve shelve_unifiable simpl simple simplify_eq solve ' +\n 'specialize split split_Rabs split_Rmult stepl stepr subst sum swap ' +\n 'symmetry tactic tauto time timeout top transitivity trivial try tryif ' +\n 'unfold unify until using vm_compute with'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.COMMENT('\\\\(\\\\*', '\\\\*\\\\)'),\n hljs.C_NUMBER_MODE,\n {\n className: 'type',\n excludeBegin: true,\n begin: '\\\\|\\\\s*',\n end: '\\\\w+'\n },\n {begin: /[-=]>/} // relevance booster\n ]\n };\n};","module.exports = function cos (hljs) {\n\n var STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '\"',\n end: '\"',\n contains: [{ // escaped\n begin: \"\\\"\\\"\",\n relevance: 0\n }]\n }\n ]\n };\n\n var NUMBERS = {\n className: \"number\",\n begin: \"\\\\b(\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)\",\n relevance: 0\n };\n\n var COS_KEYWORDS =\n 'property parameter class classmethod clientmethod extends as break ' +\n 'catch close continue do d|0 else elseif for goto halt hang h|0 if job ' +\n 'j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 ' +\n 'tcommit throw trollback try tstart use view while write w|0 xecute x|0 ' +\n 'zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert ' +\n 'zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit ' +\n 'zsync ascii';\n\n // registered function - no need in them due to all functions are highlighted,\n // but I'll just leave this here.\n\n //\"$bit\", \"$bitcount\",\n //\"$bitfind\", \"$bitlogic\", \"$case\", \"$char\", \"$classmethod\", \"$classname\",\n //\"$compile\", \"$data\", \"$decimal\", \"$double\", \"$extract\", \"$factor\",\n //\"$find\", \"$fnumber\", \"$get\", \"$increment\", \"$inumber\", \"$isobject\",\n //\"$isvaliddouble\", \"$isvalidnum\", \"$justify\", \"$length\", \"$list\",\n //\"$listbuild\", \"$listdata\", \"$listfind\", \"$listfromstring\", \"$listget\",\n //\"$listlength\", \"$listnext\", \"$listsame\", \"$listtostring\", \"$listvalid\",\n //\"$locate\", \"$match\", \"$method\", \"$name\", \"$nconvert\", \"$next\",\n //\"$normalize\", \"$now\", \"$number\", \"$order\", \"$parameter\", \"$piece\",\n //\"$prefetchoff\", \"$prefetchon\", \"$property\", \"$qlength\", \"$qsubscript\",\n //\"$query\", \"$random\", \"$replace\", \"$reverse\", \"$sconvert\", \"$select\",\n //\"$sortbegin\", \"$sortend\", \"$stack\", \"$text\", \"$translate\", \"$view\",\n //\"$wascii\", \"$wchar\", \"$wextract\", \"$wfind\", \"$wiswide\", \"$wlength\",\n //\"$wreverse\", \"$xecute\", \"$zabs\", \"$zarccos\", \"$zarcsin\", \"$zarctan\",\n //\"$zcos\", \"$zcot\", \"$zcsc\", \"$zdate\", \"$zdateh\", \"$zdatetime\",\n //\"$zdatetimeh\", \"$zexp\", \"$zhex\", \"$zln\", \"$zlog\", \"$zpower\", \"$zsec\",\n //\"$zsin\", \"$zsqr\", \"$ztan\", \"$ztime\", \"$ztimeh\", \"$zboolean\",\n //\"$zconvert\", \"$zcrc\", \"$zcyc\", \"$zdascii\", \"$zdchar\", \"$zf\",\n //\"$ziswide\", \"$zlascii\", \"$zlchar\", \"$zname\", \"$zposition\", \"$zqascii\",\n //\"$zqchar\", \"$zsearch\", \"$zseek\", \"$zstrip\", \"$zwascii\", \"$zwchar\",\n //\"$zwidth\", \"$zwpack\", \"$zwbpack\", \"$zwunpack\", \"$zwbunpack\", \"$zzenkaku\",\n //\"$change\", \"$mv\", \"$mvat\", \"$mvfmt\", \"$mvfmts\", \"$mviconv\",\n //\"$mviconvs\", \"$mvinmat\", \"$mvlover\", \"$mvoconv\", \"$mvoconvs\", \"$mvraise\",\n //\"$mvtrans\", \"$mvv\", \"$mvname\", \"$zbitand\", \"$zbitcount\", \"$zbitfind\",\n //\"$zbitget\", \"$zbitlen\", \"$zbitnot\", \"$zbitor\", \"$zbitset\", \"$zbitstr\",\n //\"$zbitxor\", \"$zincrement\", \"$znext\", \"$zorder\", \"$zprevious\", \"$zsort\",\n //\"device\", \"$ecode\", \"$estack\", \"$etrap\", \"$halt\", \"$horolog\",\n //\"$io\", \"$job\", \"$key\", \"$namespace\", \"$principal\", \"$quit\", \"$roles\",\n //\"$storage\", \"$system\", \"$test\", \"$this\", \"$tlevel\", \"$username\",\n //\"$x\", \"$y\", \"$za\", \"$zb\", \"$zchild\", \"$zeof\", \"$zeos\", \"$zerror\",\n //\"$zhorolog\", \"$zio\", \"$zjob\", \"$zmode\", \"$znspace\", \"$zparent\", \"$zpi\",\n //\"$zpos\", \"$zreference\", \"$zstorage\", \"$ztimestamp\", \"$ztimezone\",\n //\"$ztrap\", \"$zversion\"\n\n return {\n case_insensitive: true,\n aliases: [\"cos\", \"cls\"],\n keywords: COS_KEYWORDS,\n contains: [\n NUMBERS,\n STRINGS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: \"comment\",\n begin: /;/, end: \"$\",\n relevance: 0\n },\n { // Functions and user-defined functions: write $ztime(60*60*3), $$myFunc(10), $$^Val(1)\n className: \"built_in\",\n begin: /(?:\\$\\$?|\\.\\.)\\^?[a-zA-Z]+/\n },\n { // Macro command: quit $$$OK\n className: \"built_in\",\n begin: /\\$\\$\\$[a-zA-Z]+/\n },\n { // Special (global) variables: write %request.Content; Built-in classes: %Library.Integer\n className: \"built_in\",\n begin: /%[a-z]+(?:\\.[a-z]+)*/\n },\n { // Global variable: set ^globalName = 12 write ^globalName\n className: \"symbol\",\n begin: /\\^%?[a-zA-Z][\\w]*/\n },\n { // Some control constructions: do ##class(Package.ClassName).Method(), ##super()\n className: \"keyword\",\n begin: /##class|##super|#define|#dim/\n },\n\n // sub-languages: are not fully supported by hljs by 11/15/2015\n // left for the future implementation.\n {\n begin: /&sql\\(/, end: /\\)/,\n excludeBegin: true, excludeEnd: true,\n subLanguage: \"sql\"\n },\n {\n begin: /&(js|jscript|javascript)</, end: />/,\n excludeBegin: true, excludeEnd: true,\n subLanguage: \"javascript\"\n },\n {\n // this brakes first and last tag, but this is the only way to embed a valid html\n begin: /&html<\\s*</, end: />\\s*>/,\n subLanguage: \"xml\"\n }\n ]\n };\n};","module.exports = function(hljs) {\n var RESOURCES = 'primitive rsc_template';\n\n var COMMANDS = 'group clone ms master location colocation order fencing_topology ' +\n 'rsc_ticket acl_target acl_group user role ' +\n 'tag xml';\n\n var PROPERTY_SETS = 'property rsc_defaults op_defaults';\n\n var KEYWORDS = 'params meta operations op rule attributes utilization';\n\n var OPERATORS = 'read write deny defined not_defined in_range date spec in ' +\n 'ref reference attribute type xpath version and or lt gt tag ' +\n 'lte gte eq ne \\\\';\n\n var TYPES = 'number string';\n\n var LITERALS = 'Master Started Slave Stopped start promote demote stop monitor true false';\n\n return {\n aliases: ['crm', 'pcmk'],\n case_insensitive: true,\n keywords: {\n keyword: KEYWORDS + ' ' + OPERATORS + ' ' + TYPES,\n literal: LITERALS\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n beginKeywords: 'node',\n starts: {\n end: '\\\\s*([\\\\w_-]+:)?',\n starts: {\n className: 'title',\n end: '\\\\s*[\\\\$\\\\w_][\\\\w_-]*'\n }\n }\n },\n {\n beginKeywords: RESOURCES,\n starts: {\n className: 'title',\n end: '\\\\s*[\\\\$\\\\w_][\\\\w_-]*',\n starts: {\n end: '\\\\s*@?[\\\\w_][\\\\w_\\\\.:-]*'\n }\n }\n },\n {\n begin: '\\\\b(' + COMMANDS.split(' ').join('|') + ')\\\\s+',\n keywords: COMMANDS,\n starts: {\n className: 'title',\n end: '[\\\\$\\\\w_][\\\\w_-]*'\n }\n },\n {\n beginKeywords: PROPERTY_SETS,\n starts: {\n className: 'title',\n end: '\\\\s*([\\\\w_-]+:)?'\n }\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'meta',\n begin: '(ocf|systemd|service|lsb):[\\\\w_:-]+',\n relevance: 0\n },\n {\n className: 'number',\n begin: '\\\\b\\\\d+(\\\\.\\\\d+)?(ms|s|h|m)?',\n relevance: 0\n },\n {\n className: 'literal',\n begin: '[-]?(infinity|inf)',\n relevance: 0\n },\n {\n className: 'attr',\n begin: /([A-Za-z\\$_\\#][\\w_-]+)=/,\n relevance: 0\n },\n {\n className: 'tag',\n begin: '</?',\n end: '/?>',\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n var NUM_SUFFIX = '(_[uif](8|16|32|64))?';\n var CRYSTAL_IDENT_RE = '[a-zA-Z_]\\\\w*[!?=]?';\n var RE_STARTER = '!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|' +\n '>>|>|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n var CRYSTAL_METHOD_RE = '[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\][=?]?';\n var CRYSTAL_KEYWORDS = {\n keyword:\n 'abstract alias as as? asm begin break case class def do else elsif end ensure enum extend for fun if ' +\n 'include instance_sizeof is_a? lib macro module next nil? of out pointerof private protected rescue responds_to? ' +\n 'return require select self sizeof struct super then type typeof union uninitialized unless until when while with yield ' +\n '__DIR__ __END_LINE__ __FILE__ __LINE__',\n literal: 'false nil true'\n };\n var SUBST = {\n className: 'subst',\n begin: '#{', end: '}',\n keywords: CRYSTAL_KEYWORDS\n };\n var EXPANSION = {\n className: 'template-variable',\n variants: [\n {begin: '\\\\{\\\\{', end: '\\\\}\\\\}'},\n {begin: '\\\\{%', end: '%\\\\}'}\n ],\n keywords: CRYSTAL_KEYWORDS\n };\n\n function recursiveParen(begin, end) {\n var\n contains = [{begin: begin, end: end}];\n contains[0].contains = contains;\n return contains;\n }\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {begin: /'/, end: /'/},\n {begin: /\"/, end: /\"/},\n {begin: /`/, end: /`/},\n {begin: '%w?\\\\(', end: '\\\\)', contains: recursiveParen('\\\\(', '\\\\)')},\n {begin: '%w?\\\\[', end: '\\\\]', contains: recursiveParen('\\\\[', '\\\\]')},\n {begin: '%w?{', end: '}', contains: recursiveParen('{', '}')},\n {begin: '%w?<', end: '>', contains: recursiveParen('<', '>')},\n {begin: '%w?/', end: '/'},\n {begin: '%w?%', end: '%'},\n {begin: '%w?-', end: '-'},\n {begin: '%w?\\\\|', end: '\\\\|'},\n {begin: /<<-\\w+$/, end: /^\\s*\\w+$/},\n ],\n relevance: 0,\n };\n var Q_STRING = {\n className: 'string',\n variants: [\n {begin: '%q\\\\(', end: '\\\\)', contains: recursiveParen('\\\\(', '\\\\)')},\n {begin: '%q\\\\[', end: '\\\\]', contains: recursiveParen('\\\\[', '\\\\]')},\n {begin: '%q{', end: '}', contains: recursiveParen('{', '}')},\n {begin: '%q<', end: '>', contains: recursiveParen('<', '>')},\n {begin: '%q/', end: '/'},\n {begin: '%q%', end: '%'},\n {begin: '%q-', end: '-'},\n {begin: '%q\\\\|', end: '\\\\|'},\n {begin: /<<-'\\w+'$/, end: /^\\s*\\w+$/},\n ],\n relevance: 0,\n };\n var REGEXP = {\n begin: '(' + RE_STARTER + ')\\\\s*',\n contains: [\n {\n className: 'regexp',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {begin: '//[a-z]*', relevance: 0},\n {begin: '/', end: '/[a-z]*'},\n {begin: '%r\\\\(', end: '\\\\)', contains: recursiveParen('\\\\(', '\\\\)')},\n {begin: '%r\\\\[', end: '\\\\]', contains: recursiveParen('\\\\[', '\\\\]')},\n {begin: '%r{', end: '}', contains: recursiveParen('{', '}')},\n {begin: '%r<', end: '>', contains: recursiveParen('<', '>')},\n {begin: '%r/', end: '/'},\n {begin: '%r%', end: '%'},\n {begin: '%r-', end: '-'},\n {begin: '%r\\\\|', end: '\\\\|'},\n ]\n }\n ],\n relevance: 0\n };\n var REGEXP2 = {\n className: 'regexp',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {begin: '%r\\\\(', end: '\\\\)', contains: recursiveParen('\\\\(', '\\\\)')},\n {begin: '%r\\\\[', end: '\\\\]', contains: recursiveParen('\\\\[', '\\\\]')},\n {begin: '%r{', end: '}', contains: recursiveParen('{', '}')},\n {begin: '%r<', end: '>', contains: recursiveParen('<', '>')},\n {begin: '%r/', end: '/'},\n {begin: '%r%', end: '%'},\n {begin: '%r-', end: '-'},\n {begin: '%r\\\\|', end: '\\\\|'},\n ],\n relevance: 0\n };\n var ATTRIBUTE = {\n className: 'meta',\n begin: '@\\\\[', end: '\\\\]',\n contains: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'meta-string'})\n ]\n };\n var CRYSTAL_DEFAULT_CONTAINS = [\n EXPANSION,\n STRING,\n Q_STRING,\n REGEXP,\n REGEXP2,\n ATTRIBUTE,\n hljs.HASH_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'class module struct', end: '$|;',\n illegal: /=/,\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.inherit(hljs.TITLE_MODE, {begin: '[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?'}),\n {begin: '<'} // relevance booster for inheritance\n ]\n },\n {\n className: 'class',\n beginKeywords: 'lib enum union', end: '$|;',\n illegal: /=/,\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.inherit(hljs.TITLE_MODE, {begin: '[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?'}),\n ],\n relevance: 10\n },\n {\n className: 'function',\n beginKeywords: 'def', end: /\\B\\b/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: CRYSTAL_METHOD_RE,\n endsParent: true\n })\n ]\n },\n {\n className: 'function',\n beginKeywords: 'fun macro', end: /\\B\\b/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: CRYSTAL_METHOD_RE,\n endsParent: true\n })\n ],\n relevance: 5\n },\n {\n className: 'symbol',\n begin: hljs.UNDERSCORE_IDENT_RE + '(\\\\!|\\\\?)?:',\n relevance: 0\n },\n {\n className: 'symbol',\n begin: ':',\n contains: [STRING, {begin: CRYSTAL_METHOD_RE}],\n relevance: 0\n },\n {\n className: 'number',\n variants: [\n { begin: '\\\\b0b([01_]*[01])' + NUM_SUFFIX },\n { begin: '\\\\b0o([0-7_]*[0-7])' + NUM_SUFFIX },\n { begin: '\\\\b0x([A-Fa-f0-9_]*[A-Fa-f0-9])' + NUM_SUFFIX },\n { begin: '\\\\b(([0-9][0-9_]*[0-9]|[0-9])(\\\\.[0-9_]*[0-9])?([eE][+-]?[0-9_]*[0-9])?)' + NUM_SUFFIX}\n ],\n relevance: 0\n }\n ];\n SUBST.contains = CRYSTAL_DEFAULT_CONTAINS;\n EXPANSION.contains = CRYSTAL_DEFAULT_CONTAINS.slice(1); // without EXPANSION\n\n return {\n aliases: ['cr'],\n lexemes: CRYSTAL_IDENT_RE,\n keywords: CRYSTAL_KEYWORDS,\n contains: CRYSTAL_DEFAULT_CONTAINS\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n // Normal keywords.\n 'abstract as base bool break byte case catch char checked const continue decimal ' +\n 'default delegate do double enum event explicit extern finally fixed float ' +\n 'for foreach goto if implicit in int interface internal is lock long nameof ' +\n 'object operator out override params private protected public readonly ref sbyte ' +\n 'sealed short sizeof stackalloc static string struct switch this try typeof ' +\n 'uint ulong unchecked unsafe ushort using virtual void volatile while ' +\n // Contextual keywords.\n 'add alias ascending async await by descending dynamic equals from get global group into join ' +\n 'let on orderby partial remove select set value var where yield',\n literal:\n 'null false true'\n };\n var NUMBERS = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0b[01\\']+)' },\n { begin: '(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)(u|U|l|L|ul|UL|f|F|b|B)' },\n { begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)' }\n ],\n relevance: 0\n };\n var VERBATIM_STRING = {\n className: 'string',\n begin: '@\"', end: '\"',\n contains: [{begin: '\"\"'}]\n };\n var VERBATIM_STRING_NO_LF = hljs.inherit(VERBATIM_STRING, {illegal: /\\n/});\n var SUBST = {\n className: 'subst',\n begin: '{', end: '}',\n keywords: KEYWORDS\n };\n var SUBST_NO_LF = hljs.inherit(SUBST, {illegal: /\\n/});\n var INTERPOLATED_STRING = {\n className: 'string',\n begin: /\\$\"/, end: '\"',\n illegal: /\\n/,\n contains: [{begin: '{{'}, {begin: '}}'}, hljs.BACKSLASH_ESCAPE, SUBST_NO_LF]\n };\n var INTERPOLATED_VERBATIM_STRING = {\n className: 'string',\n begin: /\\$@\"/, end: '\"',\n contains: [{begin: '{{'}, {begin: '}}'}, {begin: '\"\"'}, SUBST]\n };\n var INTERPOLATED_VERBATIM_STRING_NO_LF = hljs.inherit(INTERPOLATED_VERBATIM_STRING, {\n illegal: /\\n/,\n contains: [{begin: '{{'}, {begin: '}}'}, {begin: '\"\"'}, SUBST_NO_LF]\n });\n SUBST.contains = [\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMBERS,\n hljs.C_BLOCK_COMMENT_MODE\n ];\n SUBST_NO_LF.contains = [\n INTERPOLATED_VERBATIM_STRING_NO_LF,\n INTERPOLATED_STRING,\n VERBATIM_STRING_NO_LF,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMBERS,\n hljs.inherit(hljs.C_BLOCK_COMMENT_MODE, {illegal: /\\n/})\n ];\n var STRING = {\n variants: [\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n\n var TYPE_IDENT_RE = hljs.IDENT_RE + '(<' + hljs.IDENT_RE + '(\\\\s*,\\\\s*' + hljs.IDENT_RE + ')*>)?(\\\\[\\\\])?';\n\n return {\n aliases: ['csharp'],\n keywords: KEYWORDS,\n illegal: /::/,\n contains: [\n hljs.COMMENT(\n '///',\n '$',\n {\n returnBegin: true,\n contains: [\n {\n className: 'doctag',\n variants: [\n {\n begin: '///', relevance: 0\n },\n {\n begin: '<!--|-->'\n },\n {\n begin: '</?', end: '>'\n }\n ]\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'meta',\n begin: '#', end: '$',\n keywords: {\n 'meta-keyword': 'if else elif endif define undef warning error line region endregion pragma checksum'\n }\n },\n STRING,\n NUMBERS,\n {\n beginKeywords: 'class interface', end: /[{;=]/,\n illegal: /[^\\s:,]/,\n contains: [\n hljs.TITLE_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n beginKeywords: 'namespace', end: /[{;=]/,\n illegal: /[^\\s:]/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: '[a-zA-Z](\\\\.?\\\\w)*'}),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n // [Attributes(\"\")]\n className: 'meta',\n begin: '^\\\\s*\\\\[', excludeBegin: true, end: '\\\\]', excludeEnd: true,\n contains: [\n {className: 'meta-string', begin: /\"/, end: /\"/}\n ]\n },\n {\n // Expression keywords prevent 'keyword Name(...)' from being\n // recognized as a function definition\n beginKeywords: 'new return throw await else',\n relevance: 0\n },\n {\n className: 'function',\n begin: '(' + TYPE_IDENT_RE + '\\\\s+)+' + hljs.IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\n end: /\\s*[{;=]/, excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n {\n begin: hljs.IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\n contains: [hljs.TITLE_MODE],\n relevance: 0\n },\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n STRING,\n NUMBERS,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n case_insensitive: false,\n lexemes: '[a-zA-Z][a-zA-Z0-9_-]*',\n keywords: {\n keyword: 'base-uri child-src connect-src default-src font-src form-action' +\n ' frame-ancestors frame-src img-src media-src object-src plugin-types' +\n ' report-uri sandbox script-src style-src', \n },\n contains: [\n {\n className: 'string',\n begin: \"'\", end: \"'\"\n },\n {\n className: 'attribute',\n begin: '^Content', end: ':', excludeEnd: true,\n },\n ]\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n var RULE = {\n begin: /[A-Z\\_\\.\\-]+\\s*:/, returnBegin: true, end: ';', endsWithParent: true,\n contains: [\n {\n className: 'attribute',\n begin: /\\S/, end: ':', excludeEnd: true,\n starts: {\n endsWithParent: true, excludeEnd: true,\n contains: [\n {\n begin: /[\\w-]+\\(/, returnBegin: true,\n contains: [\n {\n className: 'built_in',\n begin: /[\\w-]+/\n },\n {\n begin: /\\(/, end: /\\)/,\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n }\n ]\n },\n hljs.CSS_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'number', begin: '#[0-9A-Fa-f]+'\n },\n {\n className: 'meta', begin: '!important'\n }\n ]\n }\n }\n ]\n };\n\n return {\n case_insensitive: true,\n illegal: /[=\\/|'\\$]/,\n contains: [\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'selector-id', begin: /#[A-Za-z0-9_-]+/\n },\n {\n className: 'selector-class', begin: /\\.[A-Za-z0-9_-]+/\n },\n {\n className: 'selector-attr',\n begin: /\\[/, end: /\\]/,\n illegal: '$'\n },\n {\n className: 'selector-pseudo',\n begin: /:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"'.]+/\n },\n {\n begin: '@(font-face|page)',\n lexemes: '[a-z-]+',\n keywords: 'font-face page'\n },\n {\n begin: '@', end: '[{;]', // at_rule eating first \"{\" is a good thing\n // because it doesn’t let it to be parsed as\n // a rule set but instead drops parser into\n // the default mode which is how it should be.\n illegal: /:/, // break on Less variables @var: ...\n contains: [\n {\n className: 'keyword',\n begin: /\\w+/\n },\n {\n begin: /\\s/, endsWithParent: true, excludeEnd: true,\n relevance: 0,\n contains: [\n hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE,\n hljs.CSS_NUMBER_MODE\n ]\n }\n ]\n },\n {\n className: 'selector-tag', begin: IDENT_RE,\n relevance: 0\n },\n {\n begin: '{', end: '}',\n illegal: /\\S/,\n contains: [\n hljs.C_BLOCK_COMMENT_MODE,\n RULE,\n ]\n }\n ]\n };\n};","module.exports = /**\n * Known issues:\n *\n * - invalid hex string literals will be recognized as a double quoted strings\n * but 'x' at the beginning of string will not be matched\n *\n * - delimited string literals are not checked for matching end delimiter\n * (not possible to do with js regexp)\n *\n * - content of token string is colored as a string (i.e. no keyword coloring inside a token string)\n * also, content of token string is not validated to contain only valid D tokens\n *\n * - special token sequence rule is not strictly following D grammar (anything following #line\n * up to the end of line is matched as special token sequence)\n */\n\nfunction(hljs) {\n /**\n * Language keywords\n *\n * @type {Object}\n */\n var D_KEYWORDS = {\n keyword:\n 'abstract alias align asm assert auto body break byte case cast catch class ' +\n 'const continue debug default delete deprecated do else enum export extern final ' +\n 'finally for foreach foreach_reverse|10 goto if immutable import in inout int ' +\n 'interface invariant is lazy macro mixin module new nothrow out override package ' +\n 'pragma private protected public pure ref return scope shared static struct ' +\n 'super switch synchronized template this throw try typedef typeid typeof union ' +\n 'unittest version void volatile while with __FILE__ __LINE__ __gshared|10 ' +\n '__thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__',\n built_in:\n 'bool cdouble cent cfloat char creal dchar delegate double dstring float function ' +\n 'idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar ' +\n 'wstring',\n literal:\n 'false null true'\n };\n\n /**\n * Number literal regexps\n *\n * @type {String}\n */\n var decimal_integer_re = '(0|[1-9][\\\\d_]*)',\n decimal_integer_nosus_re = '(0|[1-9][\\\\d_]*|\\\\d[\\\\d_]*|[\\\\d_]+?\\\\d)',\n binary_integer_re = '0[bB][01_]+',\n hexadecimal_digits_re = '([\\\\da-fA-F][\\\\da-fA-F_]*|_[\\\\da-fA-F][\\\\da-fA-F_]*)',\n hexadecimal_integer_re = '0[xX]' + hexadecimal_digits_re,\n\n decimal_exponent_re = '([eE][+-]?' + decimal_integer_nosus_re + ')',\n decimal_float_re = '(' + decimal_integer_nosus_re + '(\\\\.\\\\d*|' + decimal_exponent_re + ')|' +\n '\\\\d+\\\\.' + decimal_integer_nosus_re + decimal_integer_nosus_re + '|' +\n '\\\\.' + decimal_integer_re + decimal_exponent_re + '?' +\n ')',\n hexadecimal_float_re = '(0[xX](' +\n hexadecimal_digits_re + '\\\\.' + hexadecimal_digits_re + '|'+\n '\\\\.?' + hexadecimal_digits_re +\n ')[pP][+-]?' + decimal_integer_nosus_re + ')',\n\n integer_re = '(' +\n decimal_integer_re + '|' +\n binary_integer_re + '|' +\n hexadecimal_integer_re +\n ')',\n\n float_re = '(' +\n hexadecimal_float_re + '|' +\n decimal_float_re +\n ')';\n\n /**\n * Escape sequence supported in D string and character literals\n *\n * @type {String}\n */\n var escape_sequence_re = '\\\\\\\\(' +\n '[\\'\"\\\\?\\\\\\\\abfnrtv]|' + // common escapes\n 'u[\\\\dA-Fa-f]{4}|' + // four hex digit unicode codepoint\n '[0-7]{1,3}|' + // one to three octal digit ascii char code\n 'x[\\\\dA-Fa-f]{2}|' + // two hex digit ascii char code\n 'U[\\\\dA-Fa-f]{8}' + // eight hex digit unicode codepoint\n ')|' +\n '&[a-zA-Z\\\\d]{2,};'; // named character entity\n\n /**\n * D integer number literals\n *\n * @type {Object}\n */\n var D_INTEGER_MODE = {\n className: 'number',\n begin: '\\\\b' + integer_re + '(L|u|U|Lu|LU|uL|UL)?',\n relevance: 0\n };\n\n /**\n * [D_FLOAT_MODE description]\n * @type {Object}\n */\n var D_FLOAT_MODE = {\n className: 'number',\n begin: '\\\\b(' +\n float_re + '([fF]|L|i|[fF]i|Li)?|' +\n integer_re + '(i|[fF]i|Li)' +\n ')',\n relevance: 0\n };\n\n /**\n * D character literal\n *\n * @type {Object}\n */\n var D_CHARACTER_MODE = {\n className: 'string',\n begin: '\\'(' + escape_sequence_re + '|.)', end: '\\'',\n illegal: '.'\n };\n\n /**\n * D string escape sequence\n *\n * @type {Object}\n */\n var D_ESCAPE_SEQUENCE = {\n begin: escape_sequence_re,\n relevance: 0\n };\n\n /**\n * D double quoted string literal\n *\n * @type {Object}\n */\n var D_STRING_MODE = {\n className: 'string',\n begin: '\"',\n contains: [D_ESCAPE_SEQUENCE],\n end: '\"[cwd]?'\n };\n\n /**\n * D wysiwyg and delimited string literals\n *\n * @type {Object}\n */\n var D_WYSIWYG_DELIMITED_STRING_MODE = {\n className: 'string',\n begin: '[rq]\"',\n end: '\"[cwd]?',\n relevance: 5\n };\n\n /**\n * D alternate wysiwyg string literal\n *\n * @type {Object}\n */\n var D_ALTERNATE_WYSIWYG_STRING_MODE = {\n className: 'string',\n begin: '`',\n end: '`[cwd]?'\n };\n\n /**\n * D hexadecimal string literal\n *\n * @type {Object}\n */\n var D_HEX_STRING_MODE = {\n className: 'string',\n begin: 'x\"[\\\\da-fA-F\\\\s\\\\n\\\\r]*\"[cwd]?',\n relevance: 10\n };\n\n /**\n * D delimited string literal\n *\n * @type {Object}\n */\n var D_TOKEN_STRING_MODE = {\n className: 'string',\n begin: 'q\"\\\\{',\n end: '\\\\}\"'\n };\n\n /**\n * Hashbang support\n *\n * @type {Object}\n */\n var D_HASHBANG_MODE = {\n className: 'meta',\n begin: '^#!',\n end: '$',\n relevance: 5\n };\n\n /**\n * D special token sequence\n *\n * @type {Object}\n */\n var D_SPECIAL_TOKEN_SEQUENCE_MODE = {\n className: 'meta',\n begin: '#(line)',\n end: '$',\n relevance: 5\n };\n\n /**\n * D attributes\n *\n * @type {Object}\n */\n var D_ATTRIBUTE_MODE = {\n className: 'keyword',\n begin: '@[a-zA-Z_][a-zA-Z_\\\\d]*'\n };\n\n /**\n * D nesting comment\n *\n * @type {Object}\n */\n var D_NESTING_COMMENT_MODE = hljs.COMMENT(\n '\\\\/\\\\+',\n '\\\\+\\\\/',\n {\n contains: ['self'],\n relevance: 10\n }\n );\n\n return {\n lexemes: hljs.UNDERSCORE_IDENT_RE,\n keywords: D_KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n D_NESTING_COMMENT_MODE,\n D_HEX_STRING_MODE,\n D_STRING_MODE,\n D_WYSIWYG_DELIMITED_STRING_MODE,\n D_ALTERNATE_WYSIWYG_STRING_MODE,\n D_TOKEN_STRING_MODE,\n D_FLOAT_MODE,\n D_INTEGER_MODE,\n D_CHARACTER_MODE,\n D_HASHBANG_MODE,\n D_SPECIAL_TOKEN_SEQUENCE_MODE,\n D_ATTRIBUTE_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['md', 'mkdown', 'mkd'],\n contains: [\n // highlight headers\n {\n className: 'section',\n variants: [\n { begin: '^#{1,6}', end: '$' },\n { begin: '^.+?\\\\n[=-]{2,}$' }\n ]\n },\n // inline html\n {\n begin: '<', end: '>',\n subLanguage: 'xml',\n relevance: 0\n },\n // lists (indicators only)\n {\n className: 'bullet',\n begin: '^([*+-]|(\\\\d+\\\\.))\\\\s+'\n },\n // strong segments\n {\n className: 'strong',\n begin: '[*_]{2}.+?[*_]{2}'\n },\n // emphasis segments\n {\n className: 'emphasis',\n variants: [\n { begin: '\\\\*.+?\\\\*' },\n { begin: '_.+?_'\n , relevance: 0\n }\n ]\n },\n // blockquotes\n {\n className: 'quote',\n begin: '^>\\\\s+', end: '$'\n },\n // code snippets\n {\n className: 'code',\n variants: [\n {\n begin: '^```\\w*\\s*$', end: '^```\\s*$'\n },\n {\n begin: '`.+?`'\n },\n {\n begin: '^( {4}|\\t)', end: '$',\n relevance: 0\n }\n ]\n },\n // horizontal rules\n {\n begin: '^[-\\\\*]{3,}', end: '$'\n },\n // using links - title and link\n {\n begin: '\\\\[.+?\\\\][\\\\(\\\\[].*?[\\\\)\\\\]]',\n returnBegin: true,\n contains: [\n {\n className: 'string',\n begin: '\\\\[', end: '\\\\]',\n excludeBegin: true,\n returnEnd: true,\n relevance: 0\n },\n {\n className: 'link',\n begin: '\\\\]\\\\(', end: '\\\\)',\n excludeBegin: true, excludeEnd: true\n },\n {\n className: 'symbol',\n begin: '\\\\]\\\\[', end: '\\\\]',\n excludeBegin: true, excludeEnd: true\n }\n ],\n relevance: 10\n },\n {\n begin: /^\\[[^\\n]+\\]:/,\n returnBegin: true,\n contains: [\n {\n className: 'symbol',\n begin: /\\[/, end: /\\]/,\n excludeBegin: true, excludeEnd: true\n },\n {\n className: 'link',\n begin: /:\\s*/, end: /$/,\n excludeBegin: true\n }\n ]\n }\n ]\n };\n};","module.exports = function (hljs) {\n var SUBST = {\n className: 'subst',\n variants: [\n {begin: '\\\\${', end: '}'},\n {begin: '\\\\$[A-Za-z0-9_]+'}\n ],\n keywords: 'true false null this is new super'\n };\n\n var STRING = {\n className: 'string',\n variants: [\n {\n begin: 'r\\'\\'\\'', end: '\\'\\'\\''\n },\n {\n begin: 'r\"\"\"', end: '\"\"\"'\n },\n {\n begin: 'r\\'', end: '\\'',\n illegal: '\\\\n'\n },\n {\n begin: 'r\"', end: '\"',\n illegal: '\\\\n'\n },\n {\n begin: '\\'\\'\\'', end: '\\'\\'\\'',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n {\n begin: '\"\"\"', end: '\"\"\"',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n {\n begin: '\\'', end: '\\'',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n {\n begin: '\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n }\n ]\n };\n SUBST.contains = [\n hljs.C_NUMBER_MODE, STRING\n ];\n\n var KEYWORDS = {\n keyword: 'assert async await break case catch class const continue default do else enum extends false final ' +\n 'finally for if in is new null rethrow return super switch sync this throw true try var void while with yield ' +\n 'abstract as dynamic export external factory get implements import library operator part set static typedef',\n built_in:\n // dart:core\n 'print Comparable DateTime Duration Function Iterable Iterator List Map Match Null Object Pattern RegExp Set ' +\n 'Stopwatch String StringBuffer StringSink Symbol Type Uri bool double int num ' +\n // dart:html\n 'document window querySelector querySelectorAll Element ElementList'\n };\n\n return {\n keywords: KEYWORDS,\n contains: [\n STRING,\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n subLanguage: 'markdown'\n }\n ),\n hljs.COMMENT(\n '///',\n '$',\n {\n subLanguage: 'markdown'\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'class interface', end: '{', excludeEnd: true,\n contains: [\n {\n beginKeywords: 'extends implements'\n },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n hljs.C_NUMBER_MODE,\n {\n className: 'meta', begin: '@[A-Za-z]+'\n },\n {\n begin: '=>' // No markup, just a relevance booster\n }\n ]\n }\n};","module.exports = function(hljs) {\n var KEYWORDS =\n 'exports register file shl array record property for mod while set ally label uses raise not ' +\n 'stored class safecall var interface or private static exit index inherited to else stdcall ' +\n 'override shr asm far resourcestring finalization packed virtual out and protected library do ' +\n 'xorwrite goto near function end div overload object unit begin string on inline repeat until ' +\n 'destructor write message program with read initialization except default nil if case cdecl in ' +\n 'downto threadvar of try pascal const external constructor type public then implementation ' +\n 'finally published procedure absolute reintroduce operator as is abstract alias assembler ' +\n 'bitpacked break continue cppdecl cvar enumerator experimental platform deprecated ' +\n 'unimplemented dynamic export far16 forward generic helper implements interrupt iochecks ' +\n 'local name nodefault noreturn nostackframe oldfpccall otherwise saveregisters softfloat ' +\n 'specialize strict unaligned varargs ';\n var COMMENT_MODES = [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT(/\\{/, /\\}/, {relevance: 0}),\n hljs.COMMENT(/\\(\\*/, /\\*\\)/, {relevance: 10})\n ];\n var DIRECTIVE = {\n className: 'meta',\n variants: [\n {begin: /\\{\\$/, end: /\\}/},\n {begin: /\\(\\*\\$/, end: /\\*\\)/}\n ]\n };\n var STRING = {\n className: 'string',\n begin: /'/, end: /'/,\n contains: [{begin: /''/}]\n };\n var CHAR_STRING = {\n className: 'string', begin: /(#\\d+)+/\n };\n var CLASS = {\n begin: hljs.IDENT_RE + '\\\\s*=\\\\s*class\\\\s*\\\\(', returnBegin: true,\n contains: [\n hljs.TITLE_MODE\n ]\n };\n var FUNCTION = {\n className: 'function',\n beginKeywords: 'function constructor destructor procedure', end: /[:;]/,\n keywords: 'function constructor|10 destructor|10 procedure|10',\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n contains: [STRING, CHAR_STRING, DIRECTIVE].concat(COMMENT_MODES)\n },\n DIRECTIVE\n ].concat(COMMENT_MODES)\n };\n return {\n aliases: ['dpr', 'dfm', 'pas', 'pascal', 'freepascal', 'lazarus', 'lpr', 'lfm'],\n case_insensitive: true,\n keywords: KEYWORDS,\n illegal: /\"|\\$[G-Zg-z]|\\/\\*|<\\/|\\|/,\n contains: [\n STRING, CHAR_STRING,\n hljs.NUMBER_MODE,\n CLASS,\n FUNCTION,\n DIRECTIVE\n ].concat(COMMENT_MODES)\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['patch'],\n contains: [\n {\n className: 'meta',\n relevance: 10,\n variants: [\n {begin: /^@@ +\\-\\d+,\\d+ +\\+\\d+,\\d+ +@@$/},\n {begin: /^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$/},\n {begin: /^\\-\\-\\- +\\d+,\\d+ +\\-\\-\\-\\-$/}\n ]\n },\n {\n className: 'comment',\n variants: [\n {begin: /Index: /, end: /$/},\n {begin: /={3,}/, end: /$/},\n {begin: /^\\-{3}/, end: /$/},\n {begin: /^\\*{3} /, end: /$/},\n {begin: /^\\+{3}/, end: /$/},\n {begin: /\\*{5}/, end: /\\*{5}$/}\n ]\n },\n {\n className: 'addition',\n begin: '^\\\\+', end: '$'\n },\n {\n className: 'deletion',\n begin: '^\\\\-', end: '$'\n },\n {\n className: 'addition',\n begin: '^\\\\!', end: '$'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var FILTER = {\n begin: /\\|[A-Za-z]+:?/,\n keywords: {\n name:\n 'truncatewords removetags linebreaksbr yesno get_digit timesince random striptags ' +\n 'filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands ' +\n 'title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode ' +\n 'timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort ' +\n 'dictsortreversed default_if_none pluralize lower join center default ' +\n 'truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first ' +\n 'escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize ' +\n 'localtime utc timezone'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE\n ]\n };\n\n return {\n aliases: ['jinja'],\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT(/\\{%\\s*comment\\s*%}/, /\\{%\\s*endcomment\\s*%}/),\n hljs.COMMENT(/\\{#/, /#}/),\n {\n className: 'template-tag',\n begin: /\\{%/, end: /%}/,\n contains: [\n {\n className: 'name',\n begin: /\\w+/,\n keywords: {\n name:\n 'comment endcomment load templatetag ifchanged endifchanged if endif firstof for ' +\n 'endfor ifnotequal endifnotequal widthratio extends include spaceless ' +\n 'endspaceless regroup ifequal endifequal ssi now with cycle url filter ' +\n 'endfilter debug block endblock else autoescape endautoescape csrf_token empty elif ' +\n 'endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix ' +\n 'plural get_current_language language get_available_languages ' +\n 'get_current_language_bidi get_language_info get_language_info_list localize ' +\n 'endlocalize localtime endlocaltime timezone endtimezone get_current_timezone ' +\n 'verbatim'\n },\n starts: {\n endsWithParent: true,\n keywords: 'in by as',\n contains: [FILTER],\n relevance: 0\n }\n }\n ]\n },\n {\n className: 'template-variable',\n begin: /\\{\\{/, end: /}}/,\n contains: [FILTER]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['bind', 'zone'],\n keywords: {\n keyword:\n 'IN A AAAA AFSDB APL CAA CDNSKEY CDS CERT CNAME DHCID DLV DNAME DNSKEY DS HIP IPSECKEY KEY KX ' +\n 'LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM PTR RRSIG RP SIG SOA SRV SSHFP TA TKEY TLSA TSIG TXT'\n },\n contains: [\n hljs.COMMENT(';', '$', {relevance: 0}),\n {\n className: 'meta',\n begin: /^\\$(TTL|GENERATE|INCLUDE|ORIGIN)\\b/\n },\n // IPv6\n {\n className: 'number',\n begin: '((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:)))\\\\b'\n },\n // IPv4\n {\n className: 'number',\n begin: '((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\b'\n },\n hljs.inherit(hljs.NUMBER_MODE, {begin: /\\b\\d+[dhwm]?/})\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['docker'],\n case_insensitive: true,\n keywords: 'from maintainer expose env arg user onbuild stopsignal',\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n {\n beginKeywords: 'run cmd entrypoint volume add copy workdir label healthcheck shell',\n starts: {\n end: /[^\\\\]\\n/,\n subLanguage: 'bash'\n }\n }\n ],\n illegal: '</'\n }\n};","module.exports = function(hljs) {\n var COMMENT = hljs.COMMENT(\n /^\\s*@?rem\\b/, /$/,\n {\n relevance: 10\n }\n );\n var LABEL = {\n className: 'symbol',\n begin: '^\\\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\\\s+label)',\n relevance: 0\n };\n return {\n aliases: ['bat', 'cmd'],\n case_insensitive: true,\n illegal: /\\/\\*/,\n keywords: {\n keyword:\n 'if else goto for in do call exit not exist errorlevel defined ' +\n 'equ neq lss leq gtr geq',\n built_in:\n 'prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux ' +\n 'shift cd dir echo setlocal endlocal set pause copy ' +\n 'append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color ' +\n 'comp compact convert date dir diskcomp diskcopy doskey erase fs ' +\n 'find findstr format ftype graftabl help keyb label md mkdir mode more move path ' +\n 'pause print popd pushd promt rd recover rem rename replace restore rmdir shift' +\n 'sort start subst time title tree type ver verify vol ' +\n // winutils\n 'ping net ipconfig taskkill xcopy ren del'\n },\n contains: [\n {\n className: 'variable', begin: /%%[^ ]|%[^ ]+?%|![^ ]+?!/\n },\n {\n className: 'function',\n begin: LABEL.begin, end: 'goto:eof',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: '([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*'}),\n COMMENT\n ]\n },\n {\n className: 'number', begin: '\\\\b\\\\d+',\n relevance: 0\n },\n COMMENT\n ]\n };\n};","module.exports = function(hljs) {\n var QUOTED_PROPERTY = {\n className: 'string',\n begin: /\"/, end: /\"/\n };\n var APOS_PROPERTY = {\n className: 'string',\n begin: /'/, end: /'/\n };\n var UNQUOTED_PROPERTY = {\n className: 'string',\n begin: '[\\\\w-?]+:\\\\w+', end: '\\\\W',\n relevance: 0\n };\n var VALUELESS_PROPERTY = {\n className: 'string',\n begin: '\\\\w+-?\\\\w+', end: '\\\\W',\n relevance: 0\n };\n\n return {\n keywords: 'dsconfig',\n contains: [\n {\n className: 'keyword',\n begin: '^dsconfig', end: '\\\\s', excludeEnd: true,\n relevance: 10\n },\n {\n className: 'built_in',\n begin: '(list|create|get|set|delete)-(\\\\w+)', end: '\\\\s', excludeEnd: true,\n illegal: '!@#$%^&*()',\n relevance: 10\n },\n {\n className: 'built_in',\n begin: '--(\\\\w+)', end: '\\\\s', excludeEnd: true\n },\n QUOTED_PROPERTY,\n APOS_PROPERTY,\n UNQUOTED_PROPERTY,\n VALUELESS_PROPERTY,\n hljs.HASH_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var STRINGS = {\n className: 'string',\n variants: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, { begin: '((u8?|U)|L)?\"' }),\n {\n begin: '(u8?|U)?R\"', end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\\'\\\\\\\\?.', end: '\\'',\n illegal: '.'\n }\n ]\n };\n\n var NUMBERS = {\n className: 'number',\n variants: [\n { begin: '\\\\b(\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)(u|U|l|L|ul|UL|f|F)' },\n { begin: hljs.C_NUMBER_RE }\n ],\n relevance: 0\n };\n\n var PREPROCESSOR = {\n className: 'meta',\n begin: '#', end: '$',\n keywords: {'meta-keyword': 'if else elif endif define undef ifdef ifndef'},\n contains: [\n {\n begin: /\\\\\\n/, relevance: 0\n },\n {\n beginKeywords: 'include', end: '$',\n keywords: {'meta-keyword': 'include'},\n contains: [\n hljs.inherit(STRINGS, {className: 'meta-string'}),\n {\n className: 'meta-string',\n begin: '<', end: '>',\n illegal: '\\\\n'\n }\n ]\n },\n STRINGS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n var DTS_REFERENCE = {\n className: 'variable',\n begin: '\\\\&[a-z\\\\d_]*\\\\b'\n };\n\n var DTS_KEYWORD = {\n className: 'meta-keyword',\n begin: '/[a-z][a-z\\\\d-]*/'\n };\n\n var DTS_LABEL = {\n className: 'symbol',\n begin: '^\\\\s*[a-zA-Z_][a-zA-Z\\\\d_]*:'\n };\n\n var DTS_CELL_PROPERTY = {\n className: 'params',\n begin: '<',\n end: '>',\n contains: [\n NUMBERS,\n DTS_REFERENCE\n ]\n };\n\n var DTS_NODE = {\n className: 'class',\n begin: /[a-zA-Z_][a-zA-Z\\d_@]*\\s{/,\n end: /[{;=]/,\n returnBegin: true,\n excludeEnd: true\n };\n\n var DTS_ROOT_NODE = {\n className: 'class',\n begin: '/\\\\s*{',\n end: '};',\n relevance: 10,\n contains: [\n DTS_REFERENCE,\n DTS_KEYWORD,\n DTS_LABEL,\n DTS_NODE,\n DTS_CELL_PROPERTY,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ]\n };\n\n return {\n keywords: \"\",\n contains: [\n DTS_ROOT_NODE,\n DTS_REFERENCE,\n DTS_KEYWORD,\n DTS_LABEL,\n DTS_NODE,\n DTS_CELL_PROPERTY,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS,\n PREPROCESSOR,\n {\n begin: hljs.IDENT_RE + '::',\n keywords: \"\"\n }\n ]\n };\n};","module.exports = function(hljs) {\n var EXPRESSION_KEYWORDS = 'if eq ne lt lte gt gte select default math sep';\n return {\n aliases: ['dst'],\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n {\n className: 'template-tag',\n begin: /\\{[#\\/]/, end: /\\}/, illegal: /;/,\n contains: [\n {\n className: 'name',\n begin: /[a-zA-Z\\.-]+/,\n starts: {\n endsWithParent: true, relevance: 0,\n contains: [\n hljs.QUOTE_STRING_MODE\n ]\n }\n }\n ]\n },\n {\n className: 'template-variable',\n begin: /\\{/, end: /\\}/, illegal: /;/,\n keywords: EXPRESSION_KEYWORDS\n }\n ]\n };\n};","module.exports = function(hljs) {\n var commentMode = hljs.COMMENT(/\\(\\*/, /\\*\\)/);\n\n var nonTerminalMode = {\n className: \"attribute\",\n begin: /^[ ]*[a-zA-Z][a-zA-Z-]*([\\s-]+[a-zA-Z][a-zA-Z]*)*/\n };\n\n var specialSequenceMode = {\n className: \"meta\",\n begin: /\\?.*\\?/\n };\n\n var ruleBodyMode = {\n begin: /=/, end: /;/,\n contains: [\n commentMode,\n specialSequenceMode,\n // terminals\n hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE\n ]\n };\n\n return {\n illegal: /\\S/,\n contains: [\n commentMode,\n nonTerminalMode,\n ruleBodyMode\n ]\n };\n};","module.exports = function(hljs) {\n var ELIXIR_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9_.]*(\\\\!|\\\\?)?';\n var ELIXIR_METHOD_RE = '[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?';\n var ELIXIR_KEYWORDS =\n 'and false then defined module in return redo retry end for true self when ' +\n 'next until do begin unless nil break not case cond alias while ensure or ' +\n 'include use alias fn quote require import with|0';\n var SUBST = {\n className: 'subst',\n begin: '#\\\\{', end: '}',\n lexemes: ELIXIR_IDENT_RE,\n keywords: ELIXIR_KEYWORDS\n };\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {\n begin: /'/, end: /'/\n },\n {\n begin: /\"/, end: /\"/\n }\n ]\n };\n var FUNCTION = {\n className: 'function',\n beginKeywords: 'def defp defmacro', end: /\\B\\b/, // the mode is ended by the title\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: ELIXIR_IDENT_RE,\n endsParent: true\n })\n ]\n };\n var CLASS = hljs.inherit(FUNCTION, {\n className: 'class',\n beginKeywords: 'defimpl defmodule defprotocol defrecord', end: /\\bdo\\b|$|;/\n });\n var ELIXIR_DEFAULT_CONTAINS = [\n STRING,\n hljs.HASH_COMMENT_MODE,\n CLASS,\n FUNCTION,\n {\n begin: '::'\n },\n {\n className: 'symbol',\n begin: ':(?![\\\\s:])',\n contains: [STRING, {begin: ELIXIR_METHOD_RE}],\n relevance: 0\n },\n {\n className: 'symbol',\n begin: ELIXIR_IDENT_RE + ':(?!:)',\n relevance: 0\n },\n {\n className: 'number',\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n relevance: 0\n },\n {\n className: 'variable',\n begin: '(\\\\$\\\\W)|((\\\\$|\\\\@\\\\@?)(\\\\w+))'\n },\n {\n begin: '->'\n },\n { // regexp container\n begin: '(' + hljs.RE_STARTERS_RE + ')\\\\s*',\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: 'regexp',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {\n begin: '/', end: '/[a-z]*'\n },\n {\n begin: '%r\\\\[', end: '\\\\][a-z]*'\n }\n ]\n }\n ],\n relevance: 0\n }\n ];\n SUBST.contains = ELIXIR_DEFAULT_CONTAINS;\n\n return {\n lexemes: ELIXIR_IDENT_RE,\n keywords: ELIXIR_KEYWORDS,\n contains: ELIXIR_DEFAULT_CONTAINS\n };\n};","module.exports = function(hljs) {\n var COMMENT = {\n variants: [\n hljs.COMMENT('--', '$'),\n hljs.COMMENT(\n '{-',\n '-}',\n {\n contains: ['self']\n }\n )\n ]\n };\n\n var CONSTRUCTOR = {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*', // TODO: other constructors (built-in, infix).\n relevance: 0\n };\n\n var LIST = {\n begin: '\\\\(', end: '\\\\)',\n illegal: '\"',\n contains: [\n {className: 'type', begin: '\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?'},\n COMMENT\n ]\n };\n\n var RECORD = {\n begin: '{', end: '}',\n contains: LIST.contains\n };\n\n var CHARACTER = {\n className: 'string',\n begin: '\\'\\\\\\\\?.', end: '\\'',\n illegal: '.'\n };\n\n return {\n keywords:\n 'let in if then else case of where module import exposing ' +\n 'type alias as infix infixl infixr port effect command subscription',\n contains: [\n\n // Top-level constructions.\n\n {\n beginKeywords: 'port effect module', end: 'exposing',\n keywords: 'port effect module where command subscription exposing',\n contains: [LIST, COMMENT],\n illegal: '\\\\W\\\\.|;'\n },\n {\n begin: 'import', end: '$',\n keywords: 'import as exposing',\n contains: [LIST, COMMENT],\n illegal: '\\\\W\\\\.|;'\n },\n {\n begin: 'type', end: '$',\n keywords: 'type alias',\n contains: [CONSTRUCTOR, LIST, RECORD, COMMENT]\n },\n {\n beginKeywords: 'infix infixl infixr', end: '$',\n contains: [hljs.C_NUMBER_MODE, COMMENT]\n },\n {\n begin: 'port', end: '$',\n keywords: 'port',\n contains: [COMMENT]\n },\n\n // Literals and names.\n\n CHARACTER,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n CONSTRUCTOR,\n hljs.inherit(hljs.TITLE_MODE, {begin: '^[_a-z][\\\\w\\']*'}),\n COMMENT,\n\n {begin: '->|<-'} // No markup, relevance booster\n ],\n illegal: /;/\n };\n};","module.exports = function(hljs) {\n var RUBY_METHOD_RE = '[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?';\n var RUBY_KEYWORDS = {\n keyword:\n 'and then defined module in return redo if BEGIN retry end for self when ' +\n 'next until do begin unless END rescue else break undef not super class case ' +\n 'require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor',\n literal:\n 'true false nil'\n };\n var YARDOCTAG = {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n };\n var IRB_OBJECT = {\n begin: '#<', end: '>'\n };\n var COMMENT_MODES = [\n hljs.COMMENT(\n '#',\n '$',\n {\n contains: [YARDOCTAG]\n }\n ),\n hljs.COMMENT(\n '^\\\\=begin',\n '^\\\\=end',\n {\n contains: [YARDOCTAG],\n relevance: 10\n }\n ),\n hljs.COMMENT('^__END__', '\\\\n$')\n ];\n var SUBST = {\n className: 'subst',\n begin: '#\\\\{', end: '}',\n keywords: RUBY_KEYWORDS\n };\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {begin: /'/, end: /'/},\n {begin: /\"/, end: /\"/},\n {begin: /`/, end: /`/},\n {begin: '%[qQwWx]?\\\\(', end: '\\\\)'},\n {begin: '%[qQwWx]?\\\\[', end: '\\\\]'},\n {begin: '%[qQwWx]?{', end: '}'},\n {begin: '%[qQwWx]?<', end: '>'},\n {begin: '%[qQwWx]?/', end: '/'},\n {begin: '%[qQwWx]?%', end: '%'},\n {begin: '%[qQwWx]?-', end: '-'},\n {begin: '%[qQwWx]?\\\\|', end: '\\\\|'},\n {\n // \\B in the beginning suppresses recognition of ?-sequences where ?\n // is the last character of a preceding identifier, as in: `func?4`\n begin: /\\B\\?(\\\\\\d{1,3}|\\\\x[A-Fa-f0-9]{1,2}|\\\\u[A-Fa-f0-9]{4}|\\\\?\\S)\\b/\n },\n {\n begin: /<<(-?)\\w+$/, end: /^\\s*\\w+$/,\n }\n ]\n };\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)', endsParent: true,\n keywords: RUBY_KEYWORDS\n };\n\n var RUBY_DEFAULT_CONTAINS = [\n STRING,\n IRB_OBJECT,\n {\n className: 'class',\n beginKeywords: 'class module', end: '$|;',\n illegal: /=/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: '[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?'}),\n {\n begin: '<\\\\s*',\n contains: [{\n begin: '(' + hljs.IDENT_RE + '::)?' + hljs.IDENT_RE\n }]\n }\n ].concat(COMMENT_MODES)\n },\n {\n className: 'function',\n beginKeywords: 'def', end: '$|;',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: RUBY_METHOD_RE}),\n PARAMS\n ].concat(COMMENT_MODES)\n },\n {\n // swallow namespace qualifiers before symbols\n begin: hljs.IDENT_RE + '::'\n },\n {\n className: 'symbol',\n begin: hljs.UNDERSCORE_IDENT_RE + '(\\\\!|\\\\?)?:',\n relevance: 0\n },\n {\n className: 'symbol',\n begin: ':(?!\\\\s)',\n contains: [STRING, {begin: RUBY_METHOD_RE}],\n relevance: 0\n },\n {\n className: 'number',\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n relevance: 0\n },\n {\n begin: '(\\\\$\\\\W)|((\\\\$|\\\\@\\\\@?)(\\\\w+))' // variables\n },\n {\n className: 'params',\n begin: /\\|/, end: /\\|/,\n keywords: RUBY_KEYWORDS\n },\n { // regexp container\n begin: '(' + hljs.RE_STARTERS_RE + '|unless)\\\\s*',\n keywords: 'unless',\n contains: [\n IRB_OBJECT,\n {\n className: 'regexp',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n illegal: /\\n/,\n variants: [\n {begin: '/', end: '/[a-z]*'},\n {begin: '%r{', end: '}[a-z]*'},\n {begin: '%r\\\\(', end: '\\\\)[a-z]*'},\n {begin: '%r!', end: '![a-z]*'},\n {begin: '%r\\\\[', end: '\\\\][a-z]*'}\n ]\n }\n ].concat(COMMENT_MODES),\n relevance: 0\n }\n ].concat(COMMENT_MODES);\n\n SUBST.contains = RUBY_DEFAULT_CONTAINS;\n PARAMS.contains = RUBY_DEFAULT_CONTAINS;\n\n var SIMPLE_PROMPT = \"[>?]>\";\n var DEFAULT_PROMPT = \"[\\\\w#]+\\\\(\\\\w+\\\\):\\\\d+:\\\\d+>\";\n var RVM_PROMPT = \"(\\\\w+-)?\\\\d+\\\\.\\\\d+\\\\.\\\\d(p\\\\d+)?[^>]+>\";\n\n var IRB_DEFAULT = [\n {\n begin: /^\\s*=>/,\n starts: {\n end: '$', contains: RUBY_DEFAULT_CONTAINS\n }\n },\n {\n className: 'meta',\n begin: '^('+SIMPLE_PROMPT+\"|\"+DEFAULT_PROMPT+'|'+RVM_PROMPT+')',\n starts: {\n end: '$', contains: RUBY_DEFAULT_CONTAINS\n }\n }\n ];\n\n return {\n aliases: ['rb', 'gemspec', 'podspec', 'thor', 'irb'],\n keywords: RUBY_KEYWORDS,\n illegal: /\\/\\*/,\n contains: COMMENT_MODES.concat(IRB_DEFAULT).concat(RUBY_DEFAULT_CONTAINS)\n };\n};","module.exports = function(hljs) {\n return {\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT('<%#', '%>'),\n {\n begin: '<%[%=-]?', end: '[%-]?%>',\n subLanguage: 'ruby',\n excludeBegin: true,\n excludeEnd: true\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n built_in:\n 'spawn spawn_link self',\n keyword:\n 'after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if ' +\n 'let not of or orelse|10 query receive rem try when xor'\n },\n contains: [\n {\n className: 'meta', begin: '^[0-9]+> ',\n relevance: 10\n },\n hljs.COMMENT('%', '$'),\n {\n className: 'number',\n begin: '\\\\b(\\\\d+#[a-fA-F0-9]+|\\\\d+(\\\\.\\\\d+)?([eE][-+]?\\\\d+)?)',\n relevance: 0\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n begin: '\\\\?(::)?([A-Z]\\\\w*(::)?)+'\n },\n {\n begin: '->'\n },\n {\n begin: 'ok'\n },\n {\n begin: '!'\n },\n {\n begin: '(\\\\b[a-z\\'][a-zA-Z0-9_\\']*:[a-z\\'][a-zA-Z0-9_\\']*)|(\\\\b[a-z\\'][a-zA-Z0-9_\\']*)',\n relevance: 0\n },\n {\n begin: '[A-Z][a-zA-Z0-9_\\']*',\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n var BASIC_ATOM_RE = '[a-z\\'][a-zA-Z0-9_\\']*';\n var FUNCTION_NAME_RE = '(' + BASIC_ATOM_RE + ':' + BASIC_ATOM_RE + '|' + BASIC_ATOM_RE + ')';\n var ERLANG_RESERVED = {\n keyword:\n 'after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if ' +\n 'let not of orelse|10 query receive rem try when xor',\n literal:\n 'false true'\n };\n\n var COMMENT = hljs.COMMENT('%', '$');\n var NUMBER = {\n className: 'number',\n begin: '\\\\b(\\\\d+#[a-fA-F0-9]+|\\\\d+(\\\\.\\\\d+)?([eE][-+]?\\\\d+)?)',\n relevance: 0\n };\n var NAMED_FUN = {\n begin: 'fun\\\\s+' + BASIC_ATOM_RE + '/\\\\d+'\n };\n var FUNCTION_CALL = {\n begin: FUNCTION_NAME_RE + '\\\\(', end: '\\\\)',\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n begin: FUNCTION_NAME_RE, relevance: 0\n },\n {\n begin: '\\\\(', end: '\\\\)', endsWithParent: true,\n returnEnd: true,\n relevance: 0\n // \"contains\" defined later\n }\n ]\n };\n var TUPLE = {\n begin: '{', end: '}',\n relevance: 0\n // \"contains\" defined later\n };\n var VAR1 = {\n begin: '\\\\b_([A-Z][A-Za-z0-9_]*)?',\n relevance: 0\n };\n var VAR2 = {\n begin: '[A-Z][a-zA-Z0-9_]*',\n relevance: 0\n };\n var RECORD_ACCESS = {\n begin: '#' + hljs.UNDERSCORE_IDENT_RE,\n relevance: 0,\n returnBegin: true,\n contains: [\n {\n begin: '#' + hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n begin: '{', end: '}',\n relevance: 0\n // \"contains\" defined later\n }\n ]\n };\n\n var BLOCK_STATEMENTS = {\n beginKeywords: 'fun receive if try case', end: 'end',\n keywords: ERLANG_RESERVED\n };\n BLOCK_STATEMENTS.contains = [\n COMMENT,\n NAMED_FUN,\n hljs.inherit(hljs.APOS_STRING_MODE, {className: ''}),\n BLOCK_STATEMENTS,\n FUNCTION_CALL,\n hljs.QUOTE_STRING_MODE,\n NUMBER,\n TUPLE,\n VAR1, VAR2,\n RECORD_ACCESS\n ];\n\n var BASIC_MODES = [\n COMMENT,\n NAMED_FUN,\n BLOCK_STATEMENTS,\n FUNCTION_CALL,\n hljs.QUOTE_STRING_MODE,\n NUMBER,\n TUPLE,\n VAR1, VAR2,\n RECORD_ACCESS\n ];\n FUNCTION_CALL.contains[1].contains = BASIC_MODES;\n TUPLE.contains = BASIC_MODES;\n RECORD_ACCESS.contains[1].contains = BASIC_MODES;\n\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n contains: BASIC_MODES\n };\n return {\n aliases: ['erl'],\n keywords: ERLANG_RESERVED,\n illegal: '(</|\\\\*=|\\\\+=|-=|/\\\\*|\\\\*/|\\\\(\\\\*|\\\\*\\\\))',\n contains: [\n {\n className: 'function',\n begin: '^' + BASIC_ATOM_RE + '\\\\s*\\\\(', end: '->',\n returnBegin: true,\n illegal: '\\\\(|#|//|/\\\\*|\\\\\\\\|:|;',\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, {begin: BASIC_ATOM_RE})\n ],\n starts: {\n end: ';|\\\\.',\n keywords: ERLANG_RESERVED,\n contains: BASIC_MODES\n }\n },\n COMMENT,\n {\n begin: '^-', end: '\\\\.',\n relevance: 0,\n excludeEnd: true,\n returnBegin: true,\n lexemes: '-' + hljs.IDENT_RE,\n keywords:\n '-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn ' +\n '-import -include -include_lib -compile -define -else -endif -file -behaviour ' +\n '-behavior -spec',\n contains: [PARAMS]\n },\n NUMBER,\n hljs.QUOTE_STRING_MODE,\n RECORD_ACCESS,\n VAR1, VAR2,\n TUPLE,\n {begin: /\\.$/} // relevance booster\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['xlsx', 'xls'],\n case_insensitive: true,\n lexemes: /[a-zA-Z][\\w\\.]*/,\n // built-in functions imported from https://web.archive.org/web/20160513042710/https://support.office.com/en-us/article/Excel-functions-alphabetical-b3944572-255d-4efb-bb96-c6d90033e188\n keywords: {\n built_in: 'ABS ACCRINT ACCRINTM ACOS ACOSH ACOT ACOTH AGGREGATE ADDRESS AMORDEGRC AMORLINC AND ARABIC AREAS ASC ASIN ASINH ATAN ATAN2 ATANH AVEDEV AVERAGE AVERAGEA AVERAGEIF AVERAGEIFS BAHTTEXT BASE BESSELI BESSELJ BESSELK BESSELY BETADIST BETA.DIST BETAINV BETA.INV BIN2DEC BIN2HEX BIN2OCT BINOMDIST BINOM.DIST BINOM.DIST.RANGE BINOM.INV BITAND BITLSHIFT BITOR BITRSHIFT BITXOR CALL CEILING CEILING.MATH CEILING.PRECISE CELL CHAR CHIDIST CHIINV CHITEST CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT CHISQ.TEST CHOOSE CLEAN CODE COLUMN COLUMNS COMBIN COMBINA COMPLEX CONCAT CONCATENATE CONFIDENCE CONFIDENCE.NORM CONFIDENCE.T CONVERT CORREL COS COSH COT COTH COUNT COUNTA COUNTBLANK COUNTIF COUNTIFS COUPDAYBS COUPDAYS COUPDAYSNC COUPNCD COUPNUM COUPPCD COVAR COVARIANCE.P COVARIANCE.S CRITBINOM CSC CSCH CUBEKPIMEMBER CUBEMEMBER CUBEMEMBERPROPERTY CUBERANKEDMEMBER CUBESET CUBESETCOUNT CUBEVALUE CUMIPMT CUMPRINC DATE DATEDIF DATEVALUE DAVERAGE DAY DAYS DAYS360 DB DBCS DCOUNT DCOUNTA DDB DEC2BIN DEC2HEX DEC2OCT DECIMAL DEGREES DELTA DEVSQ DGET DISC DMAX DMIN DOLLAR DOLLARDE DOLLARFR DPRODUCT DSTDEV DSTDEVP DSUM DURATION DVAR DVARP EDATE EFFECT ENCODEURL EOMONTH ERF ERF.PRECISE ERFC ERFC.PRECISE ERROR.TYPE EUROCONVERT EVEN EXACT EXP EXPON.DIST EXPONDIST FACT FACTDOUBLE FALSE|0 F.DIST FDIST F.DIST.RT FILTERXML FIND FINDB F.INV F.INV.RT FINV FISHER FISHERINV FIXED FLOOR FLOOR.MATH FLOOR.PRECISE FORECAST FORECAST.ETS FORECAST.ETS.CONFINT FORECAST.ETS.SEASONALITY FORECAST.ETS.STAT FORECAST.LINEAR FORMULATEXT FREQUENCY F.TEST FTEST FV FVSCHEDULE GAMMA GAMMA.DIST GAMMADIST GAMMA.INV GAMMAINV GAMMALN GAMMALN.PRECISE GAUSS GCD GEOMEAN GESTEP GETPIVOTDATA GROWTH HARMEAN HEX2BIN HEX2DEC HEX2OCT HLOOKUP HOUR HYPERLINK HYPGEOM.DIST HYPGEOMDIST IF|0 IFERROR IFNA IFS IMABS IMAGINARY IMARGUMENT IMCONJUGATE IMCOS IMCOSH IMCOT IMCSC IMCSCH IMDIV IMEXP IMLN IMLOG10 IMLOG2 IMPOWER IMPRODUCT IMREAL IMSEC IMSECH IMSIN IMSINH IMSQRT IMSUB IMSUM IMTAN INDEX INDIRECT INFO INT INTERCEPT INTRATE IPMT IRR ISBLANK ISERR ISERROR ISEVEN ISFORMULA ISLOGICAL ISNA ISNONTEXT ISNUMBER ISODD ISREF ISTEXT ISO.CEILING ISOWEEKNUM ISPMT JIS KURT LARGE LCM LEFT LEFTB LEN LENB LINEST LN LOG LOG10 LOGEST LOGINV LOGNORM.DIST LOGNORMDIST LOGNORM.INV LOOKUP LOWER MATCH MAX MAXA MAXIFS MDETERM MDURATION MEDIAN MID MIDBs MIN MINIFS MINA MINUTE MINVERSE MIRR MMULT MOD MODE MODE.MULT MODE.SNGL MONTH MROUND MULTINOMIAL MUNIT N NA NEGBINOM.DIST NEGBINOMDIST NETWORKDAYS NETWORKDAYS.INTL NOMINAL NORM.DIST NORMDIST NORMINV NORM.INV NORM.S.DIST NORMSDIST NORM.S.INV NORMSINV NOT NOW NPER NPV NUMBERVALUE OCT2BIN OCT2DEC OCT2HEX ODD ODDFPRICE ODDFYIELD ODDLPRICE ODDLYIELD OFFSET OR PDURATION PEARSON PERCENTILE.EXC PERCENTILE.INC PERCENTILE PERCENTRANK.EXC PERCENTRANK.INC PERCENTRANK PERMUT PERMUTATIONA PHI PHONETIC PI PMT POISSON.DIST POISSON POWER PPMT PRICE PRICEDISC PRICEMAT PROB PRODUCT PROPER PV QUARTILE QUARTILE.EXC QUARTILE.INC QUOTIENT RADIANS RAND RANDBETWEEN RANK.AVG RANK.EQ RANK RATE RECEIVED REGISTER.ID REPLACE REPLACEB REPT RIGHT RIGHTB ROMAN ROUND ROUNDDOWN ROUNDUP ROW ROWS RRI RSQ RTD SEARCH SEARCHB SEC SECH SECOND SERIESSUM SHEET SHEETS SIGN SIN SINH SKEW SKEW.P SLN SLOPE SMALL SQL.REQUEST SQRT SQRTPI STANDARDIZE STDEV STDEV.P STDEV.S STDEVA STDEVP STDEVPA STEYX SUBSTITUTE SUBTOTAL SUM SUMIF SUMIFS SUMPRODUCT SUMSQ SUMX2MY2 SUMX2PY2 SUMXMY2 SWITCH SYD T TAN TANH TBILLEQ TBILLPRICE TBILLYIELD T.DIST T.DIST.2T T.DIST.RT TDIST TEXT TEXTJOIN TIME TIMEVALUE T.INV T.INV.2T TINV TODAY TRANSPOSE TREND TRIM TRIMMEAN TRUE|0 TRUNC T.TEST TTEST TYPE UNICHAR UNICODE UPPER VALUE VAR VAR.P VAR.S VARA VARP VARPA VDB VLOOKUP WEBSERVICE WEEKDAY WEEKNUM WEIBULL WEIBULL.DIST WORKDAY WORKDAY.INTL XIRR XNPV XOR YEAR YEARFRAC YIELD YIELDDISC YIELDMAT Z.TEST ZTEST'\n },\n contains: [\n {\n /* matches a beginning equal sign found in Excel formula examples */ \n begin: /^=/,\n end: /[^=]/, returnEnd: true, illegal: /=/, /* only allow single equal sign at front of line */\n relevance: 10\n },\n /* technically, there can be more than 2 letters in column names, but this prevents conflict with some keywords */\n {\n /* matches a reference to a single cell */\n className: 'symbol',\n begin: /\\b[A-Z]{1,2}\\d+\\b/,\n end: /[^\\d]/, excludeEnd: true,\n relevance: 0\n },\n {\n /* matches a reference to a range of cells */\n className: 'symbol',\n begin: /[A-Z]{0,2}\\d*:[A-Z]{0,2}\\d*/,\n relevance: 0\n },\n hljs.BACKSLASH_ESCAPE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'number',\n begin: hljs.NUMBER_RE + '(%)?',\n relevance: 0\n },\n /* Excel formula comments are done by putting the comment in a function call to N() */\n hljs.COMMENT(/\\bN\\(/,/\\)/,\n {\n excludeBegin: true,\n excludeEnd: true,\n illegal: /\\n/\n })\n ]\n };\n};","module.exports = function(hljs) {\n return {\n contains: [\n {\n begin: /[^\\u2401\\u0001]+/,\n end: /[\\u2401\\u0001]/,\n excludeEnd: true,\n returnBegin: true,\n returnEnd: false,\n contains: [\n {\n begin: /([^\\u2401\\u0001=]+)/,\n end: /=([^\\u2401\\u0001=]+)/,\n returnEnd: true,\n returnBegin: false,\n className: 'attr'\n },\n {\n begin: /=/,\n end: /([\\u2401\\u0001])/,\n excludeEnd: true,\n excludeBegin: true,\n className: 'string'\n }]\n }],\n case_insensitive: true\n };\n};","module.exports = function (hljs) {\n\n var CHAR = {\n className: 'string',\n begin: /'(.|\\\\[xXuU][a-zA-Z0-9]+)'/\n };\n\n var STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"', end: '\"'\n }\n ]\n };\n\n var NAME = {\n className: 'title',\n begin: /[^0-9\\n\\t \"'(),.`{}\\[\\]:;][^\\n\\t \"'(),.`{}\\[\\]:;]+|[^0-9\\n\\t \"'(),.`{}\\[\\]:;=]/\n };\n\n var METHOD = {\n className: 'function',\n beginKeywords: 'def',\n end: /[:={\\[(\\n;]/,\n excludeEnd: true,\n contains: [NAME]\n };\n\n return {\n keywords: {\n literal: 'true false',\n keyword: 'case class def else enum if impl import in lat rel index let match namespace switch type yield with'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n CHAR,\n STRING,\n METHOD,\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)'\n };\n\n var F_KEYWORDS = {\n literal: '.False. .True.',\n keyword: 'kind do while private call intrinsic where elsewhere ' +\n 'type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then ' +\n 'public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. ' +\n 'goto save else use module select case ' +\n 'access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit ' +\n 'continue format pause cycle exit ' +\n 'c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg ' +\n 'synchronous nopass non_overridable pass protected volatile abstract extends import ' +\n 'non_intrinsic value deferred generic final enumerator class associate bind enum ' +\n 'c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t ' +\n 'c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double ' +\n 'c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr ' +\n 'c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer ' +\n 'c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor ' +\n 'numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ' +\n 'ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive ' +\n 'pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure ' +\n 'integer real character complex logical dimension allocatable|10 parameter ' +\n 'external implicit|10 none double precision assign intent optional pointer ' +\n 'target in out common equivalence data',\n built_in: 'alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint ' +\n 'dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl ' +\n 'algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama ' +\n 'iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod ' +\n 'qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log ' +\n 'log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate ' +\n 'adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product ' +\n 'eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul ' +\n 'maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product ' +\n 'radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind ' +\n 'set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer ' +\n 'dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ' +\n 'ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode ' +\n 'is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of' +\n 'acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 ' +\n 'atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits ' +\n 'bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr ' +\n 'num_images parity popcnt poppar shifta shiftl shiftr this_image'\n };\n return {\n case_insensitive: true,\n aliases: ['f90', 'f95'],\n keywords: F_KEYWORDS,\n illegal: /\\/\\*/,\n contains: [\n hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'string', relevance: 0}),\n {\n className: 'function',\n beginKeywords: 'subroutine function program',\n illegal: '[${=\\\\n]',\n contains: [hljs.UNDERSCORE_TITLE_MODE, PARAMS]\n },\n hljs.COMMENT('!', '$', {relevance: 0}),\n {\n className: 'number',\n begin: '(?=\\\\b|\\\\+|\\\\-|\\\\.)(?=\\\\.\\\\d|\\\\d)(?:\\\\d+)?(?:\\\\.?\\\\d*)(?:[de][+-]?\\\\d+)?\\\\b\\\\.?',\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n var TYPEPARAM = {\n begin: '<', end: '>',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: /'[a-zA-Z0-9_]+/})\n ]\n };\n\n return {\n aliases: ['fs'],\n keywords:\n 'abstract and as assert base begin class default delegate do done ' +\n 'downcast downto elif else end exception extern false finally for ' +\n 'fun function global if in inherit inline interface internal lazy let ' +\n 'match member module mutable namespace new null of open or ' +\n 'override private public rec return sig static struct then to ' +\n 'true try type upcast use val void when while with yield',\n illegal: /\\/\\*/,\n contains: [\n {\n // monad builder keywords (matches before non-bang kws)\n className: 'keyword',\n begin: /\\b(yield|return|let|do)!/\n },\n {\n className: 'string',\n begin: '@\"', end: '\"',\n contains: [{begin: '\"\"'}]\n },\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"'\n },\n hljs.COMMENT('\\\\(\\\\*', '\\\\*\\\\)'),\n {\n className: 'class',\n beginKeywords: 'type', end: '\\\\(|=|$', excludeEnd: true,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n TYPEPARAM\n ]\n },\n {\n className: 'meta',\n begin: '\\\\[<', end: '>\\\\]',\n relevance: 10\n },\n {\n className: 'symbol',\n begin: '\\\\B(\\'[A-Za-z])\\\\b',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function (hljs) {\n var KEYWORDS = {\n 'keyword':\n 'abort acronym acronyms alias all and assign binary card diag display ' +\n 'else eq file files for free ge gt if integer le loop lt maximizing ' +\n 'minimizing model models ne negative no not option options or ord ' +\n 'positive prod put putpage puttl repeat sameas semicont semiint smax ' +\n 'smin solve sos1 sos2 sum system table then until using while xor yes',\n 'literal': 'eps inf na',\n 'built-in':\n 'abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy ' +\n 'cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact ' +\n 'floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max ' +\n 'min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power ' +\n 'randBinomial randLinear randTriangle round rPower sigmoid sign ' +\n 'signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt ' +\n 'tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp ' +\n 'bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt ' +\n 'rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear ' +\n 'jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion ' +\n 'handleCollect handleDelete handleStatus handleSubmit heapFree ' +\n 'heapLimit heapSize jobHandle jobKill jobStatus jobTerminate ' +\n 'licenseLevel licenseStatus maxExecError sleep timeClose timeComp ' +\n 'timeElapsed timeExec timeStart'\n };\n var PARAMS = {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n };\n var SYMBOLS = {\n className: 'symbol',\n variants: [\n {begin: /\\=[lgenxc]=/},\n {begin: /\\$/},\n ]\n };\n var QSTR = { // One-line quoted comment string\n className: 'comment',\n variants: [\n {begin: '\\'', end: '\\''},\n {begin: '\"', end: '\"'},\n ],\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n var ASSIGNMENT = {\n begin: '/',\n end: '/',\n keywords: KEYWORDS,\n contains: [\n QSTR,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_NUMBER_MODE,\n ],\n };\n var DESCTEXT = { // Parameter/set/variable description text\n begin: /[a-z][a-z0-9_]*(\\([a-z0-9_, ]*\\))?[ \\t]+/,\n excludeBegin: true,\n end: '$',\n endsWithParent: true,\n contains: [\n QSTR,\n ASSIGNMENT,\n {\n className: 'comment',\n begin: /([ ]*[a-z0-9&#*=?@>\\\\<:\\-,()$\\[\\]_.{}!+%^]+)+/,\n relevance: 0\n },\n ],\n };\n\n return {\n aliases: ['gms'],\n case_insensitive: true,\n keywords: KEYWORDS,\n contains: [\n hljs.COMMENT(/^\\$ontext/, /^\\$offtext/),\n {\n className: 'meta',\n begin: '^\\\\$[a-z0-9]+',\n end: '$',\n returnBegin: true,\n contains: [\n {\n className: 'meta-keyword',\n begin: '^\\\\$[a-z0-9]+',\n }\n ]\n },\n hljs.COMMENT('^\\\\*', '$'),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n // Declarations\n {\n beginKeywords:\n 'set sets parameter parameters variable variables ' +\n 'scalar scalars equation equations',\n end: ';',\n contains: [\n hljs.COMMENT('^\\\\*', '$'),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n ASSIGNMENT,\n DESCTEXT,\n ]\n },\n { // table environment\n beginKeywords: 'table',\n end: ';',\n returnBegin: true,\n contains: [\n { // table header row\n beginKeywords: 'table',\n end: '$',\n contains: [DESCTEXT],\n },\n hljs.COMMENT('^\\\\*', '$'),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_NUMBER_MODE,\n // Table does not contain DESCTEXT or ASSIGNMENT\n ]\n },\n // Function definitions\n {\n className: 'function',\n begin: /^[a-z][a-z0-9_,\\-+' ()$]+\\.{2}/,\n returnBegin: true,\n contains: [\n { // Function title\n className: 'title',\n begin: /^[a-z0-9_]+/,\n },\n PARAMS,\n SYMBOLS,\n ],\n },\n hljs.C_NUMBER_MODE,\n SYMBOLS,\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword: 'and bool break call callexe checkinterrupt clear clearg closeall cls comlog compile ' +\n 'continue create debug declare delete disable dlibrary dllcall do dos ed edit else ' +\n 'elseif enable end endfor endif endp endo errorlog errorlogat expr external fn ' +\n 'for format goto gosub graph if keyword let lib library line load loadarray loadexe ' +\n 'loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow ' +\n 'matrix msym ndpclex new not open or output outwidth plot plotsym pop prcsn print ' +\n 'printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen ' +\n 'scroll setarray show sparse stop string struct system trace trap threadfor ' +\n 'threadendfor threadbegin threadjoin threadstat threadend until use while winprint',\n built_in: 'abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol ' +\n 'AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks ' +\n 'AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults ' +\n 'annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness ' +\n 'annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd ' +\n 'astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar ' +\n 'base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 ' +\n 'cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv ' +\n 'cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn ' +\n 'cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi ' +\n 'cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ' +\n 'ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated ' +\n 'complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs ' +\n 'cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos ' +\n 'datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd ' +\n 'dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName ' +\n 'dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy ' +\n 'dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen ' +\n 'dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA ' +\n 'dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField ' +\n 'dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition ' +\n 'dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows ' +\n 'dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly ' +\n 'dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy ' +\n 'dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl ' +\n 'dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt ' +\n 'dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday ' +\n 'dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays ' +\n 'endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error ' +\n 'etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut ' +\n 'EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol ' +\n 'EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq ' +\n 'feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt ' +\n 'floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC ' +\n 'gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders ' +\n 'gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse ' +\n 'gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray ' +\n 'getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders ' +\n 'getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT ' +\n 'gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm ' +\n 'hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 ' +\n 'indicesf indicesfn indnv indsav integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 ' +\n 'inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf ' +\n 'isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv ' +\n 'lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn ' +\n 'lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind ' +\n 'loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars ' +\n 'makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli ' +\n 'mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave ' +\n 'movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate ' +\n 'olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto ' +\n 'pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox ' +\n 'plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea ' +\n 'plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout ' +\n 'plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill ' +\n 'plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol ' +\n 'plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange ' +\n 'plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel ' +\n 'plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot ' +\n 'pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames ' +\n 'pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector ' +\n 'pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate ' +\n 'qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr ' +\n 'real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn ' +\n 'rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel ' +\n 'rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn ' +\n 'rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh ' +\n 'rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind ' +\n 'scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa ' +\n 'setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind ' +\n 'sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL ' +\n 'spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense ' +\n 'spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet ' +\n 'sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt ' +\n 'strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr ' +\n 'surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname threadBegin threadEnd threadEndFor threadFor ' +\n 'threadJoin threadStat time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk ' +\n 'trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt ' +\n 'utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs ' +\n 'vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window ' +\n 'writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM ' +\n 'xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics cdfEmpirical dot h5create h5open h5read h5readAttribute ' +\n 'h5write h5writeAttribute ldl plotAddErrorBar plotAddSurface plotCDFEmpirical plotSetColormap plotSetContourLabels ' +\n 'plotSetLegendFont plotSetTextInterpreter plotSetXTicCount plotSetYTicCount plotSetZLevels powerm strjoin strtrim sylvester',\n literal: 'DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS ' +\n 'DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 ' +\n 'DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS ' +\n 'DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES ' +\n 'DB_TRANSACTIONS DB_UNICODE DB_VIEWS'\n };\n\n var PREPROCESSOR =\n {\n className: 'meta',\n begin: '#', end: '$',\n keywords: {'meta-keyword': 'define definecs|10 undef ifdef ifndef iflight ifdllcall ifmac ifos2win ifunix else endif lineson linesoff srcfile srcline'},\n contains: [\n {\n begin: /\\\\\\n/, relevance: 0\n },\n {\n beginKeywords: 'include', end: '$',\n keywords: {'meta-keyword': 'include'},\n contains: [\n {\n className: 'meta-string',\n begin: '\"', end: '\"',\n illegal: '\\\\n'\n }\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n var FUNCTION_TITLE = hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(?';\n var PARSE_PARAMS = [\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n }\n ];\n\n return {\n aliases: ['gss'],\n case_insensitive: true, // language is case-insensitive\n keywords: KEYWORDS,\n illegal: '(\\\\{[%#]|[%#]\\\\})',\n contains: [\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT('@', '@'),\n PREPROCESSOR,\n {\n className: 'string',\n begin: '\"', end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n className: 'function',\n beginKeywords: 'proc keyword',\n end: ';',\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n {\n begin: FUNCTION_TITLE, returnBegin: true,\n contains: [hljs.UNDERSCORE_TITLE_MODE],\n relevance: 0\n },\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ].concat(PARSE_PARAMS)\n },\n {\n className: 'function',\n beginKeywords: 'fn',\n end: ';',\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n {\n begin: FUNCTION_TITLE + hljs.IDENT_RE + '\\\\)?\\\\s*\\\\=\\\\s*', returnBegin: true,\n contains: [hljs.UNDERSCORE_TITLE_MODE],\n relevance: 0\n },\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ].concat(PARSE_PARAMS)\n },\n {\n className: 'function',\n begin: '\\\\bexternal (proc|keyword|fn)\\\\s+',\n end: ';',\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n {\n begin: FUNCTION_TITLE, returnBegin: true,\n contains: [hljs.UNDERSCORE_TITLE_MODE],\n relevance: 0\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n className: 'function',\n begin: '\\\\bexternal (matrix|string|array|sparse matrix|struct ' + hljs.IDENT_RE + ')\\\\s+',\n end: ';',\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var GCODE_IDENT_RE = '[A-Z_][A-Z0-9_.]*';\n var GCODE_CLOSE_RE = '\\\\%';\n var GCODE_KEYWORDS =\n 'IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT ' +\n 'EQ LT GT NE GE LE OR XOR';\n var GCODE_START = {\n className: 'meta',\n begin: '([O])([0-9]+)'\n };\n var GCODE_CODE = [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT(/\\(/, /\\)/),\n hljs.inherit(hljs.C_NUMBER_MODE, {begin: '([-+]?([0-9]*\\\\.?[0-9]+\\\\.?))|' + hljs.C_NUMBER_RE}),\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n {\n className: 'name',\n begin: '([G])([0-9]+\\\\.?[0-9]?)'\n },\n {\n className: 'name',\n begin: '([M])([0-9]+\\\\.?[0-9]?)'\n },\n {\n className: 'attr',\n begin: '(VC|VS|#)',\n end: '(\\\\d+)'\n },\n {\n className: 'attr',\n begin: '(VZOFX|VZOFY|VZOFZ)'\n },\n {\n className: 'built_in',\n begin: '(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\\\[)',\n end: '([-+]?([0-9]*\\\\.?[0-9]+\\\\.?))(\\\\])'\n },\n {\n className: 'symbol',\n variants: [\n {\n begin: 'N', end: '\\\\d+',\n illegal: '\\\\W'\n }\n ]\n }\n ];\n\n return {\n aliases: ['nc'],\n // Some implementations (CNC controls) of G-code are interoperable with uppercase and lowercase letters seamlessly.\n // However, most prefer all uppercase and uppercase is customary.\n case_insensitive: true,\n lexemes: GCODE_IDENT_RE,\n keywords: GCODE_KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: GCODE_CLOSE_RE\n },\n GCODE_START\n ].concat(GCODE_CODE)\n };\n};","module.exports = function (hljs) {\n return {\n aliases: ['feature'],\n keywords: 'Feature Background Ability Business\\ Need Scenario Scenarios Scenario\\ Outline Scenario\\ Template Examples Given And Then But When',\n contains: [\n {\n className: 'symbol',\n begin: '\\\\*',\n relevance: 0\n },\n {\n className: 'meta',\n begin: '@[^@\\\\s]+'\n },\n {\n begin: '\\\\|', end: '\\\\|\\\\w*$',\n contains: [\n {\n className: 'string',\n begin: '[^|]+'\n }\n ]\n },\n {\n className: 'variable',\n begin: '<', end: '>'\n },\n hljs.HASH_COMMENT_MODE,\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"'\n },\n hljs.QUOTE_STRING_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword:\n // Statements\n 'break continue discard do else for if return while switch case default ' +\n // Qualifiers\n 'attribute binding buffer ccw centroid centroid varying coherent column_major const cw ' +\n 'depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing ' +\n 'flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant ' +\n 'invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y ' +\n 'local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left ' +\n 'out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f '+\n 'r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict ' +\n 'rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 ' +\n 'rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 ' +\n 'rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip ' +\n 'triangles triangles_adjacency uniform varying vertices volatile writeonly',\n type:\n 'atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 ' +\n 'dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray ' +\n 'iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBuffer' +\n 'iimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray ' +\n 'image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray ' +\n 'isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D ' +\n 'isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 ' +\n 'mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray ' +\n 'sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow ' +\n 'sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D ' +\n 'samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow ' +\n 'image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect ' +\n 'uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray ' +\n 'usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D ' +\n 'samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void',\n built_in:\n // Constants\n 'gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes ' +\n 'gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms ' +\n 'gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers ' +\n 'gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits ' +\n 'gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize ' +\n 'gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters ' +\n 'gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors ' +\n 'gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers ' +\n 'gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents ' +\n 'gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits ' +\n 'gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents ' +\n 'gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset ' +\n 'gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms ' +\n 'gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits ' +\n 'gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents ' +\n 'gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters ' +\n 'gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents ' +\n 'gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents ' +\n 'gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits ' +\n 'gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors ' +\n 'gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms ' +\n 'gl_MaxVertexOutputComponents gl_MaxVertexOutputVectors gl_MaxVertexTextureImageUnits ' +\n 'gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffset ' +\n // Variables\n 'gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial ' +\n 'gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color ' +\n 'gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord ' +\n 'gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor ' +\n 'gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial ' +\n 'gl_FrontSecondaryColor gl_GlobalInvocationID gl_InstanceID gl_InvocationID gl_Layer gl_LightModel ' +\n 'gl_LightSource gl_LocalInvocationID gl_LocalInvocationIndex gl_ModelViewMatrix ' +\n 'gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose ' +\n 'gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose ' +\n 'gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 ' +\n 'gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 ' +\n 'gl_Normal gl_NormalMatrix gl_NormalScale gl_NumSamples gl_NumWorkGroups gl_ObjectPlaneQ ' +\n 'gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_Point gl_PointCoord ' +\n 'gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse ' +\n 'gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask ' +\n 'gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter ' +\n 'gl_TexCoord gl_TextureEnvColor gl_TextureMatrix gl_TextureMatrixInverse gl_TextureMatrixInverseTranspose ' +\n 'gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize gl_in gl_out ' +\n // Functions\n 'EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin ' +\n 'asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement ' +\n 'atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier ' +\n 'bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross ' +\n 'dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB ' +\n 'floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan ' +\n 'greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap ' +\n 'imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad ' +\n 'imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset ' +\n 'interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log ' +\n 'log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer ' +\n 'memoryBarrierImage memoryBarrierShared min mix mod modf noise1 noise2 noise3 noise4 ' +\n 'normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 ' +\n 'packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod ' +\n 'shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh ' +\n 'smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod ' +\n 'texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod ' +\n 'texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod ' +\n 'textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset ' +\n 'textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset ' +\n 'textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod ' +\n 'textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 ' +\n 'unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow',\n literal: 'true false'\n },\n illegal: '\"',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '#', end: '$'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var GML_KEYWORDS = {\n keywords: 'begin end if then else while do for break continue with until ' +\n 'repeat exit and or xor not return mod div switch case default var ' +\n 'globalvar enum #macro #region #endregion',\n built_in: 'is_real is_string is_array is_undefined is_int32 is_int64 ' +\n 'is_ptr is_vec3 is_vec4 is_matrix is_bool typeof ' +\n 'variable_global_exists variable_global_get variable_global_set ' +\n 'variable_instance_exists variable_instance_get variable_instance_set ' +\n 'variable_instance_get_names array_length_1d array_length_2d ' +\n 'array_height_2d array_equals array_create array_copy random ' +\n 'random_range irandom irandom_range random_set_seed random_get_seed ' +\n 'randomize randomise choose abs round floor ceil sign frac sqrt sqr ' +\n 'exp ln log2 log10 sin cos tan arcsin arccos arctan arctan2 dsin dcos ' +\n 'dtan darcsin darccos darctan darctan2 degtorad radtodeg power logn ' +\n 'min max mean median clamp lerp dot_product dot_product_3d ' +\n 'dot_product_normalised dot_product_3d_normalised ' +\n 'dot_product_normalized dot_product_3d_normalized math_set_epsilon ' +\n 'math_get_epsilon angle_difference point_distance_3d point_distance ' +\n 'point_direction lengthdir_x lengthdir_y real string int64 ptr ' +\n 'string_format chr ansi_char ord string_length string_byte_length ' +\n 'string_pos string_copy string_char_at string_ord_at string_byte_at ' +\n 'string_set_byte_at string_delete string_insert string_lower ' +\n 'string_upper string_repeat string_letters string_digits ' +\n 'string_lettersdigits string_replace string_replace_all string_count ' +\n 'string_hash_to_newline clipboard_has_text clipboard_set_text ' +\n 'clipboard_get_text date_current_datetime date_create_datetime ' +\n 'date_valid_datetime date_inc_year date_inc_month date_inc_week ' +\n 'date_inc_day date_inc_hour date_inc_minute date_inc_second ' +\n 'date_get_year date_get_month date_get_week date_get_day ' +\n 'date_get_hour date_get_minute date_get_second date_get_weekday ' +\n 'date_get_day_of_year date_get_hour_of_year date_get_minute_of_year ' +\n 'date_get_second_of_year date_year_span date_month_span ' +\n 'date_week_span date_day_span date_hour_span date_minute_span ' +\n 'date_second_span date_compare_datetime date_compare_date ' +\n 'date_compare_time date_date_of date_time_of date_datetime_string ' +\n 'date_date_string date_time_string date_days_in_month ' +\n 'date_days_in_year date_leap_year date_is_today date_set_timezone ' +\n 'date_get_timezone game_set_speed game_get_speed motion_set ' +\n 'motion_add place_free place_empty place_meeting place_snapped ' +\n 'move_random move_snap move_towards_point move_contact_solid ' +\n 'move_contact_all move_outside_solid move_outside_all ' +\n 'move_bounce_solid move_bounce_all move_wrap distance_to_point ' +\n 'distance_to_object position_empty position_meeting path_start ' +\n 'path_end mp_linear_step mp_potential_step mp_linear_step_object ' +\n 'mp_potential_step_object mp_potential_settings mp_linear_path ' +\n 'mp_potential_path mp_linear_path_object mp_potential_path_object ' +\n 'mp_grid_create mp_grid_destroy mp_grid_clear_all mp_grid_clear_cell ' +\n 'mp_grid_clear_rectangle mp_grid_add_cell mp_grid_get_cell ' +\n 'mp_grid_add_rectangle mp_grid_add_instances mp_grid_path ' +\n 'mp_grid_draw mp_grid_to_ds_grid collision_point collision_rectangle ' +\n 'collision_circle collision_ellipse collision_line ' +\n 'collision_point_list collision_rectangle_list collision_circle_list ' +\n 'collision_ellipse_list collision_line_list instance_position_list ' +\n 'instance_place_list point_in_rectangle ' +\n 'point_in_triangle point_in_circle rectangle_in_rectangle ' +\n 'rectangle_in_triangle rectangle_in_circle instance_find ' +\n 'instance_exists instance_number instance_position instance_nearest ' +\n 'instance_furthest instance_place instance_create_depth ' +\n 'instance_create_layer instance_copy instance_change instance_destroy ' +\n 'position_destroy position_change instance_id_get ' +\n 'instance_deactivate_all instance_deactivate_object ' +\n 'instance_deactivate_region instance_activate_all ' +\n 'instance_activate_object instance_activate_region room_goto ' +\n 'room_goto_previous room_goto_next room_previous room_next ' +\n 'room_restart game_end game_restart game_load game_save ' +\n 'game_save_buffer game_load_buffer event_perform event_user ' +\n 'event_perform_object event_inherited show_debug_message ' +\n 'show_debug_overlay debug_event debug_get_callstack alarm_get ' +\n 'alarm_set font_texture_page_size keyboard_set_map keyboard_get_map ' +\n 'keyboard_unset_map keyboard_check keyboard_check_pressed ' +\n 'keyboard_check_released keyboard_check_direct keyboard_get_numlock ' +\n 'keyboard_set_numlock keyboard_key_press keyboard_key_release ' +\n 'keyboard_clear io_clear mouse_check_button ' +\n 'mouse_check_button_pressed mouse_check_button_released ' +\n 'mouse_wheel_up mouse_wheel_down mouse_clear draw_self draw_sprite ' +\n 'draw_sprite_pos draw_sprite_ext draw_sprite_stretched ' +\n 'draw_sprite_stretched_ext draw_sprite_tiled draw_sprite_tiled_ext ' +\n 'draw_sprite_part draw_sprite_part_ext draw_sprite_general draw_clear ' +\n 'draw_clear_alpha draw_point draw_line draw_line_width draw_rectangle ' +\n 'draw_roundrect draw_roundrect_ext draw_triangle draw_circle ' +\n 'draw_ellipse draw_set_circle_precision draw_arrow draw_button ' +\n 'draw_path draw_healthbar draw_getpixel draw_getpixel_ext ' +\n 'draw_set_colour draw_set_color draw_set_alpha draw_get_colour ' +\n 'draw_get_color draw_get_alpha merge_colour make_colour_rgb ' +\n 'make_colour_hsv colour_get_red colour_get_green colour_get_blue ' +\n 'colour_get_hue colour_get_saturation colour_get_value merge_color ' +\n 'make_color_rgb make_color_hsv color_get_red color_get_green ' +\n 'color_get_blue color_get_hue color_get_saturation color_get_value ' +\n 'merge_color screen_save screen_save_part draw_set_font ' +\n 'draw_set_halign draw_set_valign draw_text draw_text_ext string_width ' +\n 'string_height string_width_ext string_height_ext ' +\n 'draw_text_transformed draw_text_ext_transformed draw_text_colour ' +\n 'draw_text_ext_colour draw_text_transformed_colour ' +\n 'draw_text_ext_transformed_colour draw_text_color draw_text_ext_color ' +\n 'draw_text_transformed_color draw_text_ext_transformed_color ' +\n 'draw_point_colour draw_line_colour draw_line_width_colour ' +\n 'draw_rectangle_colour draw_roundrect_colour ' +\n 'draw_roundrect_colour_ext draw_triangle_colour draw_circle_colour ' +\n 'draw_ellipse_colour draw_point_color draw_line_color ' +\n 'draw_line_width_color draw_rectangle_color draw_roundrect_color ' +\n 'draw_roundrect_color_ext draw_triangle_color draw_circle_color ' +\n 'draw_ellipse_color draw_primitive_begin draw_vertex ' +\n 'draw_vertex_colour draw_vertex_color draw_primitive_end ' +\n 'sprite_get_uvs font_get_uvs sprite_get_texture font_get_texture ' +\n 'texture_get_width texture_get_height texture_get_uvs ' +\n 'draw_primitive_begin_texture draw_vertex_texture ' +\n 'draw_vertex_texture_colour draw_vertex_texture_color ' +\n 'texture_global_scale surface_create surface_create_ext ' +\n 'surface_resize surface_free surface_exists surface_get_width ' +\n 'surface_get_height surface_get_texture surface_set_target ' +\n 'surface_set_target_ext surface_reset_target surface_depth_disable ' +\n 'surface_get_depth_disable draw_surface draw_surface_stretched ' +\n 'draw_surface_tiled draw_surface_part draw_surface_ext ' +\n 'draw_surface_stretched_ext draw_surface_tiled_ext ' +\n 'draw_surface_part_ext draw_surface_general surface_getpixel ' +\n 'surface_getpixel_ext surface_save surface_save_part surface_copy ' +\n 'surface_copy_part application_surface_draw_enable ' +\n 'application_get_position application_surface_enable ' +\n 'application_surface_is_enabled display_get_width display_get_height ' +\n 'display_get_orientation display_get_gui_width display_get_gui_height ' +\n 'display_reset display_mouse_get_x display_mouse_get_y ' +\n 'display_mouse_set display_set_ui_visibility ' +\n 'window_set_fullscreen window_get_fullscreen ' +\n 'window_set_caption window_set_min_width window_set_max_width ' +\n 'window_set_min_height window_set_max_height window_get_visible_rects ' +\n 'window_get_caption window_set_cursor window_get_cursor ' +\n 'window_set_colour window_get_colour window_set_color ' +\n 'window_get_color window_set_position window_set_size ' +\n 'window_set_rectangle window_center window_get_x window_get_y ' +\n 'window_get_width window_get_height window_mouse_get_x ' +\n 'window_mouse_get_y window_mouse_set window_view_mouse_get_x ' +\n 'window_view_mouse_get_y window_views_mouse_get_x ' +\n 'window_views_mouse_get_y audio_listener_position ' +\n 'audio_listener_velocity audio_listener_orientation ' +\n 'audio_emitter_position audio_emitter_create audio_emitter_free ' +\n 'audio_emitter_exists audio_emitter_pitch audio_emitter_velocity ' +\n 'audio_emitter_falloff audio_emitter_gain audio_play_sound ' +\n 'audio_play_sound_on audio_play_sound_at audio_stop_sound ' +\n 'audio_resume_music audio_music_is_playing audio_resume_sound ' +\n 'audio_pause_sound audio_pause_music audio_channel_num ' +\n 'audio_sound_length audio_get_type audio_falloff_set_model ' +\n 'audio_play_music audio_stop_music audio_master_gain audio_music_gain ' +\n 'audio_sound_gain audio_sound_pitch audio_stop_all audio_resume_all ' +\n 'audio_pause_all audio_is_playing audio_is_paused audio_exists ' +\n 'audio_sound_set_track_position audio_sound_get_track_position ' +\n 'audio_emitter_get_gain audio_emitter_get_pitch audio_emitter_get_x ' +\n 'audio_emitter_get_y audio_emitter_get_z audio_emitter_get_vx ' +\n 'audio_emitter_get_vy audio_emitter_get_vz ' +\n 'audio_listener_set_position audio_listener_set_velocity ' +\n 'audio_listener_set_orientation audio_listener_get_data ' +\n 'audio_set_master_gain audio_get_master_gain audio_sound_get_gain ' +\n 'audio_sound_get_pitch audio_get_name audio_sound_set_track_position ' +\n 'audio_sound_get_track_position audio_create_stream ' +\n 'audio_destroy_stream audio_create_sync_group ' +\n 'audio_destroy_sync_group audio_play_in_sync_group ' +\n 'audio_start_sync_group audio_stop_sync_group audio_pause_sync_group ' +\n 'audio_resume_sync_group audio_sync_group_get_track_pos ' +\n 'audio_sync_group_debug audio_sync_group_is_playing audio_debug ' +\n 'audio_group_load audio_group_unload audio_group_is_loaded ' +\n 'audio_group_load_progress audio_group_name audio_group_stop_all ' +\n 'audio_group_set_gain audio_create_buffer_sound ' +\n 'audio_free_buffer_sound audio_create_play_queue ' +\n 'audio_free_play_queue audio_queue_sound audio_get_recorder_count ' +\n 'audio_get_recorder_info audio_start_recording audio_stop_recording ' +\n 'audio_sound_get_listener_mask audio_emitter_get_listener_mask ' +\n 'audio_get_listener_mask audio_sound_set_listener_mask ' +\n 'audio_emitter_set_listener_mask audio_set_listener_mask ' +\n 'audio_get_listener_count audio_get_listener_info audio_system ' +\n 'show_message show_message_async clickable_add clickable_add_ext ' +\n 'clickable_change clickable_change_ext clickable_delete ' +\n 'clickable_exists clickable_set_style show_question ' +\n 'show_question_async get_integer get_string get_integer_async ' +\n 'get_string_async get_login_async get_open_filename get_save_filename ' +\n 'get_open_filename_ext get_save_filename_ext show_error ' +\n 'highscore_clear highscore_add highscore_value highscore_name ' +\n 'draw_highscore sprite_exists sprite_get_name sprite_get_number ' +\n 'sprite_get_width sprite_get_height sprite_get_xoffset ' +\n 'sprite_get_yoffset sprite_get_bbox_left sprite_get_bbox_right ' +\n 'sprite_get_bbox_top sprite_get_bbox_bottom sprite_save ' +\n 'sprite_save_strip sprite_set_cache_size sprite_set_cache_size_ext ' +\n 'sprite_get_tpe sprite_prefetch sprite_prefetch_multi sprite_flush ' +\n 'sprite_flush_multi sprite_set_speed sprite_get_speed_type ' +\n 'sprite_get_speed font_exists font_get_name font_get_fontname ' +\n 'font_get_bold font_get_italic font_get_first font_get_last ' +\n 'font_get_size font_set_cache_size path_exists path_get_name ' +\n 'path_get_length path_get_time path_get_kind path_get_closed ' +\n 'path_get_precision path_get_number path_get_point_x path_get_point_y ' +\n 'path_get_point_speed path_get_x path_get_y path_get_speed ' +\n 'script_exists script_get_name timeline_add timeline_delete ' +\n 'timeline_clear timeline_exists timeline_get_name ' +\n 'timeline_moment_clear timeline_moment_add_script timeline_size ' +\n 'timeline_max_moment object_exists object_get_name object_get_sprite ' +\n 'object_get_solid object_get_visible object_get_persistent ' +\n 'object_get_mask object_get_parent object_get_physics ' +\n 'object_is_ancestor room_exists room_get_name sprite_set_offset ' +\n 'sprite_duplicate sprite_assign sprite_merge sprite_add ' +\n 'sprite_replace sprite_create_from_surface sprite_add_from_surface ' +\n 'sprite_delete sprite_set_alpha_from_sprite sprite_collision_mask ' +\n 'font_add_enable_aa font_add_get_enable_aa font_add font_add_sprite ' +\n 'font_add_sprite_ext font_replace font_replace_sprite ' +\n 'font_replace_sprite_ext font_delete path_set_kind path_set_closed ' +\n 'path_set_precision path_add path_assign path_duplicate path_append ' +\n 'path_delete path_add_point path_insert_point path_change_point ' +\n 'path_delete_point path_clear_points path_reverse path_mirror ' +\n 'path_flip path_rotate path_rescale path_shift script_execute ' +\n 'object_set_sprite object_set_solid object_set_visible ' +\n 'object_set_persistent object_set_mask room_set_width room_set_height ' +\n 'room_set_persistent room_set_background_colour ' +\n 'room_set_background_color room_set_view room_set_viewport ' +\n 'room_get_viewport room_set_view_enabled room_add room_duplicate ' +\n 'room_assign room_instance_add room_instance_clear room_get_camera ' +\n 'room_set_camera asset_get_index asset_get_type ' +\n 'file_text_open_from_string file_text_open_read file_text_open_write ' +\n 'file_text_open_append file_text_close file_text_write_string ' +\n 'file_text_write_real file_text_writeln file_text_read_string ' +\n 'file_text_read_real file_text_readln file_text_eof file_text_eoln ' +\n 'file_exists file_delete file_rename file_copy directory_exists ' +\n 'directory_create directory_destroy file_find_first file_find_next ' +\n 'file_find_close file_attributes filename_name filename_path ' +\n 'filename_dir filename_drive filename_ext filename_change_ext ' +\n 'file_bin_open file_bin_rewrite file_bin_close file_bin_position ' +\n 'file_bin_size file_bin_seek file_bin_write_byte file_bin_read_byte ' +\n 'parameter_count parameter_string environment_get_variable ' +\n 'ini_open_from_string ini_open ini_close ini_read_string ' +\n 'ini_read_real ini_write_string ini_write_real ini_key_exists ' +\n 'ini_section_exists ini_key_delete ini_section_delete ' +\n 'ds_set_precision ds_exists ds_stack_create ds_stack_destroy ' +\n 'ds_stack_clear ds_stack_copy ds_stack_size ds_stack_empty ' +\n 'ds_stack_push ds_stack_pop ds_stack_top ds_stack_write ds_stack_read ' +\n 'ds_queue_create ds_queue_destroy ds_queue_clear ds_queue_copy ' +\n 'ds_queue_size ds_queue_empty ds_queue_enqueue ds_queue_dequeue ' +\n 'ds_queue_head ds_queue_tail ds_queue_write ds_queue_read ' +\n 'ds_list_create ds_list_destroy ds_list_clear ds_list_copy ' +\n 'ds_list_size ds_list_empty ds_list_add ds_list_insert ' +\n 'ds_list_replace ds_list_delete ds_list_find_index ds_list_find_value ' +\n 'ds_list_mark_as_list ds_list_mark_as_map ds_list_sort ' +\n 'ds_list_shuffle ds_list_write ds_list_read ds_list_set ds_map_create ' +\n 'ds_map_destroy ds_map_clear ds_map_copy ds_map_size ds_map_empty ' +\n 'ds_map_add ds_map_add_list ds_map_add_map ds_map_replace ' +\n 'ds_map_replace_map ds_map_replace_list ds_map_delete ds_map_exists ' +\n 'ds_map_find_value ds_map_find_previous ds_map_find_next ' +\n 'ds_map_find_first ds_map_find_last ds_map_write ds_map_read ' +\n 'ds_map_secure_save ds_map_secure_load ds_map_secure_load_buffer ' +\n 'ds_map_secure_save_buffer ds_map_set ds_priority_create ' +\n 'ds_priority_destroy ds_priority_clear ds_priority_copy ' +\n 'ds_priority_size ds_priority_empty ds_priority_add ' +\n 'ds_priority_change_priority ds_priority_find_priority ' +\n 'ds_priority_delete_value ds_priority_delete_min ds_priority_find_min ' +\n 'ds_priority_delete_max ds_priority_find_max ds_priority_write ' +\n 'ds_priority_read ds_grid_create ds_grid_destroy ds_grid_copy ' +\n 'ds_grid_resize ds_grid_width ds_grid_height ds_grid_clear ' +\n 'ds_grid_set ds_grid_add ds_grid_multiply ds_grid_set_region ' +\n 'ds_grid_add_region ds_grid_multiply_region ds_grid_set_disk ' +\n 'ds_grid_add_disk ds_grid_multiply_disk ds_grid_set_grid_region ' +\n 'ds_grid_add_grid_region ds_grid_multiply_grid_region ds_grid_get ' +\n 'ds_grid_get_sum ds_grid_get_max ds_grid_get_min ds_grid_get_mean ' +\n 'ds_grid_get_disk_sum ds_grid_get_disk_min ds_grid_get_disk_max ' +\n 'ds_grid_get_disk_mean ds_grid_value_exists ds_grid_value_x ' +\n 'ds_grid_value_y ds_grid_value_disk_exists ds_grid_value_disk_x ' +\n 'ds_grid_value_disk_y ds_grid_shuffle ds_grid_write ds_grid_read ' +\n 'ds_grid_sort ds_grid_set ds_grid_get effect_create_below ' +\n 'effect_create_above effect_clear part_type_create part_type_destroy ' +\n 'part_type_exists part_type_clear part_type_shape part_type_sprite ' +\n 'part_type_size part_type_scale part_type_orientation part_type_life ' +\n 'part_type_step part_type_death part_type_speed part_type_direction ' +\n 'part_type_gravity part_type_colour1 part_type_colour2 ' +\n 'part_type_colour3 part_type_colour_mix part_type_colour_rgb ' +\n 'part_type_colour_hsv part_type_color1 part_type_color2 ' +\n 'part_type_color3 part_type_color_mix part_type_color_rgb ' +\n 'part_type_color_hsv part_type_alpha1 part_type_alpha2 ' +\n 'part_type_alpha3 part_type_blend part_system_create ' +\n 'part_system_create_layer part_system_destroy part_system_exists ' +\n 'part_system_clear part_system_draw_order part_system_depth ' +\n 'part_system_position part_system_automatic_update ' +\n 'part_system_automatic_draw part_system_update part_system_drawit ' +\n 'part_system_get_layer part_system_layer part_particles_create ' +\n 'part_particles_create_colour part_particles_create_color ' +\n 'part_particles_clear part_particles_count part_emitter_create ' +\n 'part_emitter_destroy part_emitter_destroy_all part_emitter_exists ' +\n 'part_emitter_clear part_emitter_region part_emitter_burst ' +\n 'part_emitter_stream external_call external_define external_free ' +\n 'window_handle window_device matrix_get matrix_set ' +\n 'matrix_build_identity matrix_build matrix_build_lookat ' +\n 'matrix_build_projection_ortho matrix_build_projection_perspective ' +\n 'matrix_build_projection_perspective_fov matrix_multiply ' +\n 'matrix_transform_vertex matrix_stack_push matrix_stack_pop ' +\n 'matrix_stack_multiply matrix_stack_set matrix_stack_clear ' +\n 'matrix_stack_top matrix_stack_is_empty browser_input_capture ' +\n 'os_get_config os_get_info os_get_language os_get_region ' +\n 'os_lock_orientation display_get_dpi_x display_get_dpi_y ' +\n 'display_set_gui_size display_set_gui_maximise ' +\n 'display_set_gui_maximize device_mouse_dbclick_enable ' +\n 'display_set_timing_method display_get_timing_method ' +\n 'display_set_sleep_margin display_get_sleep_margin virtual_key_add ' +\n 'virtual_key_hide virtual_key_delete virtual_key_show ' +\n 'draw_enable_drawevent draw_enable_swf_aa draw_set_swf_aa_level ' +\n 'draw_get_swf_aa_level draw_texture_flush draw_flush ' +\n 'gpu_set_blendenable gpu_set_ztestenable gpu_set_zfunc ' +\n 'gpu_set_zwriteenable gpu_set_lightingenable gpu_set_fog ' +\n 'gpu_set_cullmode gpu_set_blendmode gpu_set_blendmode_ext ' +\n 'gpu_set_blendmode_ext_sepalpha gpu_set_colorwriteenable ' +\n 'gpu_set_colourwriteenable gpu_set_alphatestenable ' +\n 'gpu_set_alphatestref gpu_set_alphatestfunc gpu_set_texfilter ' +\n 'gpu_set_texfilter_ext gpu_set_texrepeat gpu_set_texrepeat_ext ' +\n 'gpu_set_tex_filter gpu_set_tex_filter_ext gpu_set_tex_repeat ' +\n 'gpu_set_tex_repeat_ext gpu_set_tex_mip_filter ' +\n 'gpu_set_tex_mip_filter_ext gpu_set_tex_mip_bias ' +\n 'gpu_set_tex_mip_bias_ext gpu_set_tex_min_mip gpu_set_tex_min_mip_ext ' +\n 'gpu_set_tex_max_mip gpu_set_tex_max_mip_ext gpu_set_tex_max_aniso ' +\n 'gpu_set_tex_max_aniso_ext gpu_set_tex_mip_enable ' +\n 'gpu_set_tex_mip_enable_ext gpu_get_blendenable gpu_get_ztestenable ' +\n 'gpu_get_zfunc gpu_get_zwriteenable gpu_get_lightingenable ' +\n 'gpu_get_fog gpu_get_cullmode gpu_get_blendmode gpu_get_blendmode_ext ' +\n 'gpu_get_blendmode_ext_sepalpha gpu_get_blendmode_src ' +\n 'gpu_get_blendmode_dest gpu_get_blendmode_srcalpha ' +\n 'gpu_get_blendmode_destalpha gpu_get_colorwriteenable ' +\n 'gpu_get_colourwriteenable gpu_get_alphatestenable ' +\n 'gpu_get_alphatestref gpu_get_alphatestfunc gpu_get_texfilter ' +\n 'gpu_get_texfilter_ext gpu_get_texrepeat gpu_get_texrepeat_ext ' +\n 'gpu_get_tex_filter gpu_get_tex_filter_ext gpu_get_tex_repeat ' +\n 'gpu_get_tex_repeat_ext gpu_get_tex_mip_filter ' +\n 'gpu_get_tex_mip_filter_ext gpu_get_tex_mip_bias ' +\n 'gpu_get_tex_mip_bias_ext gpu_get_tex_min_mip gpu_get_tex_min_mip_ext ' +\n 'gpu_get_tex_max_mip gpu_get_tex_max_mip_ext gpu_get_tex_max_aniso ' +\n 'gpu_get_tex_max_aniso_ext gpu_get_tex_mip_enable ' +\n 'gpu_get_tex_mip_enable_ext gpu_push_state gpu_pop_state ' +\n 'gpu_get_state gpu_set_state draw_light_define_ambient ' +\n 'draw_light_define_direction draw_light_define_point ' +\n 'draw_light_enable draw_set_lighting draw_light_get_ambient ' +\n 'draw_light_get draw_get_lighting shop_leave_rating url_get_domain ' +\n 'url_open url_open_ext url_open_full get_timer achievement_login ' +\n 'achievement_logout achievement_post achievement_increment ' +\n 'achievement_post_score achievement_available ' +\n 'achievement_show_achievements achievement_show_leaderboards ' +\n 'achievement_load_friends achievement_load_leaderboard ' +\n 'achievement_send_challenge achievement_load_progress ' +\n 'achievement_reset achievement_login_status achievement_get_pic ' +\n 'achievement_show_challenge_notifications achievement_get_challenges ' +\n 'achievement_event achievement_show achievement_get_info ' +\n 'cloud_file_save cloud_string_save cloud_synchronise ads_enable ' +\n 'ads_disable ads_setup ads_engagement_launch ads_engagement_available ' +\n 'ads_engagement_active ads_event ads_event_preload ' +\n 'ads_set_reward_callback ads_get_display_height ads_get_display_width ' +\n 'ads_move ads_interstitial_available ads_interstitial_display ' +\n 'device_get_tilt_x device_get_tilt_y device_get_tilt_z ' +\n 'device_is_keypad_open device_mouse_check_button ' +\n 'device_mouse_check_button_pressed device_mouse_check_button_released ' +\n 'device_mouse_x device_mouse_y device_mouse_raw_x device_mouse_raw_y ' +\n 'device_mouse_x_to_gui device_mouse_y_to_gui iap_activate iap_status ' +\n 'iap_enumerate_products iap_restore_all iap_acquire iap_consume ' +\n 'iap_product_details iap_purchase_details facebook_init ' +\n 'facebook_login facebook_status facebook_graph_request ' +\n 'facebook_dialog facebook_logout facebook_launch_offerwall ' +\n 'facebook_post_message facebook_send_invite facebook_user_id ' +\n 'facebook_accesstoken facebook_check_permission ' +\n 'facebook_request_read_permissions ' +\n 'facebook_request_publish_permissions gamepad_is_supported ' +\n 'gamepad_get_device_count gamepad_is_connected ' +\n 'gamepad_get_description gamepad_get_button_threshold ' +\n 'gamepad_set_button_threshold gamepad_get_axis_deadzone ' +\n 'gamepad_set_axis_deadzone gamepad_button_count gamepad_button_check ' +\n 'gamepad_button_check_pressed gamepad_button_check_released ' +\n 'gamepad_button_value gamepad_axis_count gamepad_axis_value ' +\n 'gamepad_set_vibration gamepad_set_colour gamepad_set_color ' +\n 'os_is_paused window_has_focus code_is_compiled http_get ' +\n 'http_get_file http_post_string http_request json_encode json_decode ' +\n 'zip_unzip load_csv base64_encode base64_decode md5_string_unicode ' +\n 'md5_string_utf8 md5_file os_is_network_connected sha1_string_unicode ' +\n 'sha1_string_utf8 sha1_file os_powersave_enable analytics_event ' +\n 'analytics_event_ext win8_livetile_tile_notification ' +\n 'win8_livetile_tile_clear win8_livetile_badge_notification ' +\n 'win8_livetile_badge_clear win8_livetile_queue_enable ' +\n 'win8_secondarytile_pin win8_secondarytile_badge_notification ' +\n 'win8_secondarytile_delete win8_livetile_notification_begin ' +\n 'win8_livetile_notification_secondary_begin ' +\n 'win8_livetile_notification_expiry win8_livetile_notification_tag ' +\n 'win8_livetile_notification_text_add ' +\n 'win8_livetile_notification_image_add win8_livetile_notification_end ' +\n 'win8_appbar_enable win8_appbar_add_element ' +\n 'win8_appbar_remove_element win8_settingscharm_add_entry ' +\n 'win8_settingscharm_add_html_entry win8_settingscharm_add_xaml_entry ' +\n 'win8_settingscharm_set_xaml_property ' +\n 'win8_settingscharm_get_xaml_property win8_settingscharm_remove_entry ' +\n 'win8_share_image win8_share_screenshot win8_share_file ' +\n 'win8_share_url win8_share_text win8_search_enable ' +\n 'win8_search_disable win8_search_add_suggestions ' +\n 'win8_device_touchscreen_available win8_license_initialize_sandbox ' +\n 'win8_license_trial_version winphone_license_trial_version ' +\n 'winphone_tile_title winphone_tile_count winphone_tile_back_title ' +\n 'winphone_tile_back_content winphone_tile_back_content_wide ' +\n 'winphone_tile_front_image winphone_tile_front_image_small ' +\n 'winphone_tile_front_image_wide winphone_tile_back_image ' +\n 'winphone_tile_back_image_wide winphone_tile_background_colour ' +\n 'winphone_tile_background_color winphone_tile_icon_image ' +\n 'winphone_tile_small_icon_image winphone_tile_wide_content ' +\n 'winphone_tile_cycle_images winphone_tile_small_background_image ' +\n 'physics_world_create physics_world_gravity ' +\n 'physics_world_update_speed physics_world_update_iterations ' +\n 'physics_world_draw_debug physics_pause_enable physics_fixture_create ' +\n 'physics_fixture_set_kinematic physics_fixture_set_density ' +\n 'physics_fixture_set_awake physics_fixture_set_restitution ' +\n 'physics_fixture_set_friction physics_fixture_set_collision_group ' +\n 'physics_fixture_set_sensor physics_fixture_set_linear_damping ' +\n 'physics_fixture_set_angular_damping physics_fixture_set_circle_shape ' +\n 'physics_fixture_set_box_shape physics_fixture_set_edge_shape ' +\n 'physics_fixture_set_polygon_shape physics_fixture_set_chain_shape ' +\n 'physics_fixture_add_point physics_fixture_bind ' +\n 'physics_fixture_bind_ext physics_fixture_delete physics_apply_force ' +\n 'physics_apply_impulse physics_apply_angular_impulse ' +\n 'physics_apply_local_force physics_apply_local_impulse ' +\n 'physics_apply_torque physics_mass_properties physics_draw_debug ' +\n 'physics_test_overlap physics_remove_fixture physics_set_friction ' +\n 'physics_set_density physics_set_restitution physics_get_friction ' +\n 'physics_get_density physics_get_restitution ' +\n 'physics_joint_distance_create physics_joint_rope_create ' +\n 'physics_joint_revolute_create physics_joint_prismatic_create ' +\n 'physics_joint_pulley_create physics_joint_wheel_create ' +\n 'physics_joint_weld_create physics_joint_friction_create ' +\n 'physics_joint_gear_create physics_joint_enable_motor ' +\n 'physics_joint_get_value physics_joint_set_value physics_joint_delete ' +\n 'physics_particle_create physics_particle_delete ' +\n 'physics_particle_delete_region_circle ' +\n 'physics_particle_delete_region_box ' +\n 'physics_particle_delete_region_poly physics_particle_set_flags ' +\n 'physics_particle_set_category_flags physics_particle_draw ' +\n 'physics_particle_draw_ext physics_particle_count ' +\n 'physics_particle_get_data physics_particle_get_data_particle ' +\n 'physics_particle_group_begin physics_particle_group_circle ' +\n 'physics_particle_group_box physics_particle_group_polygon ' +\n 'physics_particle_group_add_point physics_particle_group_end ' +\n 'physics_particle_group_join physics_particle_group_delete ' +\n 'physics_particle_group_count physics_particle_group_get_data ' +\n 'physics_particle_group_get_mass physics_particle_group_get_inertia ' +\n 'physics_particle_group_get_centre_x ' +\n 'physics_particle_group_get_centre_y physics_particle_group_get_vel_x ' +\n 'physics_particle_group_get_vel_y physics_particle_group_get_ang_vel ' +\n 'physics_particle_group_get_x physics_particle_group_get_y ' +\n 'physics_particle_group_get_angle physics_particle_set_group_flags ' +\n 'physics_particle_get_group_flags physics_particle_get_max_count ' +\n 'physics_particle_get_radius physics_particle_get_density ' +\n 'physics_particle_get_damping physics_particle_get_gravity_scale ' +\n 'physics_particle_set_max_count physics_particle_set_radius ' +\n 'physics_particle_set_density physics_particle_set_damping ' +\n 'physics_particle_set_gravity_scale network_create_socket ' +\n 'network_create_socket_ext network_create_server ' +\n 'network_create_server_raw network_connect network_connect_raw ' +\n 'network_send_packet network_send_raw network_send_broadcast ' +\n 'network_send_udp network_send_udp_raw network_set_timeout ' +\n 'network_set_config network_resolve network_destroy buffer_create ' +\n 'buffer_write buffer_read buffer_seek buffer_get_surface ' +\n 'buffer_set_surface buffer_delete buffer_exists buffer_get_type ' +\n 'buffer_get_alignment buffer_poke buffer_peek buffer_save ' +\n 'buffer_save_ext buffer_load buffer_load_ext buffer_load_partial ' +\n 'buffer_copy buffer_fill buffer_get_size buffer_tell buffer_resize ' +\n 'buffer_md5 buffer_sha1 buffer_base64_encode buffer_base64_decode ' +\n 'buffer_base64_decode_ext buffer_sizeof buffer_get_address ' +\n 'buffer_create_from_vertex_buffer ' +\n 'buffer_create_from_vertex_buffer_ext buffer_copy_from_vertex_buffer ' +\n 'buffer_async_group_begin buffer_async_group_option ' +\n 'buffer_async_group_end buffer_load_async buffer_save_async ' +\n 'gml_release_mode gml_pragma steam_activate_overlay ' +\n 'steam_is_overlay_enabled steam_is_overlay_activated ' +\n 'steam_get_persona_name steam_initialised ' +\n 'steam_is_cloud_enabled_for_app steam_is_cloud_enabled_for_account ' +\n 'steam_file_persisted steam_get_quota_total steam_get_quota_free ' +\n 'steam_file_write steam_file_write_file steam_file_read ' +\n 'steam_file_delete steam_file_exists steam_file_size steam_file_share ' +\n 'steam_is_screenshot_requested steam_send_screenshot ' +\n 'steam_is_user_logged_on steam_get_user_steam_id steam_user_owns_dlc ' +\n 'steam_user_installed_dlc steam_set_achievement steam_get_achievement ' +\n 'steam_clear_achievement steam_set_stat_int steam_set_stat_float ' +\n 'steam_set_stat_avg_rate steam_get_stat_int steam_get_stat_float ' +\n 'steam_get_stat_avg_rate steam_reset_all_stats ' +\n 'steam_reset_all_stats_achievements steam_stats_ready ' +\n 'steam_create_leaderboard steam_upload_score steam_upload_score_ext ' +\n 'steam_download_scores_around_user steam_download_scores ' +\n 'steam_download_friends_scores steam_upload_score_buffer ' +\n 'steam_upload_score_buffer_ext steam_current_game_language ' +\n 'steam_available_languages steam_activate_overlay_browser ' +\n 'steam_activate_overlay_user steam_activate_overlay_store ' +\n 'steam_get_user_persona_name steam_get_app_id ' +\n 'steam_get_user_account_id steam_ugc_download steam_ugc_create_item ' +\n 'steam_ugc_start_item_update steam_ugc_set_item_title ' +\n 'steam_ugc_set_item_description steam_ugc_set_item_visibility ' +\n 'steam_ugc_set_item_tags steam_ugc_set_item_content ' +\n 'steam_ugc_set_item_preview steam_ugc_submit_item_update ' +\n 'steam_ugc_get_item_update_progress steam_ugc_subscribe_item ' +\n 'steam_ugc_unsubscribe_item steam_ugc_num_subscribed_items ' +\n 'steam_ugc_get_subscribed_items steam_ugc_get_item_install_info ' +\n 'steam_ugc_get_item_update_info steam_ugc_request_item_details ' +\n 'steam_ugc_create_query_user steam_ugc_create_query_user_ex ' +\n 'steam_ugc_create_query_all steam_ugc_create_query_all_ex ' +\n 'steam_ugc_query_set_cloud_filename_filter ' +\n 'steam_ugc_query_set_match_any_tag steam_ugc_query_set_search_text ' +\n 'steam_ugc_query_set_ranked_by_trend_days ' +\n 'steam_ugc_query_add_required_tag steam_ugc_query_add_excluded_tag ' +\n 'steam_ugc_query_set_return_long_description ' +\n 'steam_ugc_query_set_return_total_only ' +\n 'steam_ugc_query_set_allow_cached_response steam_ugc_send_query ' +\n 'shader_set shader_get_name shader_reset shader_current ' +\n 'shader_is_compiled shader_get_sampler_index shader_get_uniform ' +\n 'shader_set_uniform_i shader_set_uniform_i_array shader_set_uniform_f ' +\n 'shader_set_uniform_f_array shader_set_uniform_matrix ' +\n 'shader_set_uniform_matrix_array shader_enable_corner_id ' +\n 'texture_set_stage texture_get_texel_width texture_get_texel_height ' +\n 'shaders_are_supported vertex_format_begin vertex_format_end ' +\n 'vertex_format_delete vertex_format_add_position ' +\n 'vertex_format_add_position_3d vertex_format_add_colour ' +\n 'vertex_format_add_color vertex_format_add_normal ' +\n 'vertex_format_add_texcoord vertex_format_add_textcoord ' +\n 'vertex_format_add_custom vertex_create_buffer ' +\n 'vertex_create_buffer_ext vertex_delete_buffer vertex_begin ' +\n 'vertex_end vertex_position vertex_position_3d vertex_colour ' +\n 'vertex_color vertex_argb vertex_texcoord vertex_normal vertex_float1 ' +\n 'vertex_float2 vertex_float3 vertex_float4 vertex_ubyte4 ' +\n 'vertex_submit vertex_freeze vertex_get_number vertex_get_buffer_size ' +\n 'vertex_create_buffer_from_buffer ' +\n 'vertex_create_buffer_from_buffer_ext push_local_notification ' +\n 'push_get_first_local_notification push_get_next_local_notification ' +\n 'push_cancel_local_notification skeleton_animation_set ' +\n 'skeleton_animation_get skeleton_animation_mix ' +\n 'skeleton_animation_set_ext skeleton_animation_get_ext ' +\n 'skeleton_animation_get_duration skeleton_animation_get_frames ' +\n 'skeleton_animation_clear skeleton_skin_set skeleton_skin_get ' +\n 'skeleton_attachment_set skeleton_attachment_get ' +\n 'skeleton_attachment_create skeleton_collision_draw_set ' +\n 'skeleton_bone_data_get skeleton_bone_data_set ' +\n 'skeleton_bone_state_get skeleton_bone_state_set skeleton_get_minmax ' +\n 'skeleton_get_num_bounds skeleton_get_bounds ' +\n 'skeleton_animation_get_frame skeleton_animation_set_frame ' +\n 'draw_skeleton draw_skeleton_time draw_skeleton_instance ' +\n 'draw_skeleton_collision skeleton_animation_list skeleton_skin_list ' +\n 'skeleton_slot_data layer_get_id layer_get_id_at_depth ' +\n 'layer_get_depth layer_create layer_destroy layer_destroy_instances ' +\n 'layer_add_instance layer_has_instance layer_set_visible ' +\n 'layer_get_visible layer_exists layer_x layer_y layer_get_x ' +\n 'layer_get_y layer_hspeed layer_vspeed layer_get_hspeed ' +\n 'layer_get_vspeed layer_script_begin layer_script_end layer_shader ' +\n 'layer_get_script_begin layer_get_script_end layer_get_shader ' +\n 'layer_set_target_room layer_get_target_room layer_reset_target_room ' +\n 'layer_get_all layer_get_all_elements layer_get_name layer_depth ' +\n 'layer_get_element_layer layer_get_element_type layer_element_move ' +\n 'layer_force_draw_depth layer_is_draw_depth_forced ' +\n 'layer_get_forced_depth layer_background_get_id ' +\n 'layer_background_exists layer_background_create ' +\n 'layer_background_destroy layer_background_visible ' +\n 'layer_background_change layer_background_sprite ' +\n 'layer_background_htiled layer_background_vtiled ' +\n 'layer_background_stretch layer_background_yscale ' +\n 'layer_background_xscale layer_background_blend ' +\n 'layer_background_alpha layer_background_index layer_background_speed ' +\n 'layer_background_get_visible layer_background_get_sprite ' +\n 'layer_background_get_htiled layer_background_get_vtiled ' +\n 'layer_background_get_stretch layer_background_get_yscale ' +\n 'layer_background_get_xscale layer_background_get_blend ' +\n 'layer_background_get_alpha layer_background_get_index ' +\n 'layer_background_get_speed layer_sprite_get_id layer_sprite_exists ' +\n 'layer_sprite_create layer_sprite_destroy layer_sprite_change ' +\n 'layer_sprite_index layer_sprite_speed layer_sprite_xscale ' +\n 'layer_sprite_yscale layer_sprite_angle layer_sprite_blend ' +\n 'layer_sprite_alpha layer_sprite_x layer_sprite_y ' +\n 'layer_sprite_get_sprite layer_sprite_get_index ' +\n 'layer_sprite_get_speed layer_sprite_get_xscale ' +\n 'layer_sprite_get_yscale layer_sprite_get_angle ' +\n 'layer_sprite_get_blend layer_sprite_get_alpha layer_sprite_get_x ' +\n 'layer_sprite_get_y layer_tilemap_get_id layer_tilemap_exists ' +\n 'layer_tilemap_create layer_tilemap_destroy tilemap_tileset tilemap_x ' +\n 'tilemap_y tilemap_set tilemap_set_at_pixel tilemap_get_tileset ' +\n 'tilemap_get_tile_width tilemap_get_tile_height tilemap_get_width ' +\n 'tilemap_get_height tilemap_get_x tilemap_get_y tilemap_get ' +\n 'tilemap_get_at_pixel tilemap_get_cell_x_at_pixel ' +\n 'tilemap_get_cell_y_at_pixel tilemap_clear draw_tilemap draw_tile ' +\n 'tilemap_set_global_mask tilemap_get_global_mask tilemap_set_mask ' +\n 'tilemap_get_mask tilemap_get_frame tile_set_empty tile_set_index ' +\n 'tile_set_flip tile_set_mirror tile_set_rotate tile_get_empty ' +\n 'tile_get_index tile_get_flip tile_get_mirror tile_get_rotate ' +\n 'layer_tile_exists layer_tile_create layer_tile_destroy ' +\n 'layer_tile_change layer_tile_xscale layer_tile_yscale ' +\n 'layer_tile_blend layer_tile_alpha layer_tile_x layer_tile_y ' +\n 'layer_tile_region layer_tile_visible layer_tile_get_sprite ' +\n 'layer_tile_get_xscale layer_tile_get_yscale layer_tile_get_blend ' +\n 'layer_tile_get_alpha layer_tile_get_x layer_tile_get_y ' +\n 'layer_tile_get_region layer_tile_get_visible ' +\n 'layer_instance_get_instance instance_activate_layer ' +\n 'instance_deactivate_layer camera_create camera_create_view ' +\n 'camera_destroy camera_apply camera_get_active camera_get_default ' +\n 'camera_set_default camera_set_view_mat camera_set_proj_mat ' +\n 'camera_set_update_script camera_set_begin_script ' +\n 'camera_set_end_script camera_set_view_pos camera_set_view_size ' +\n 'camera_set_view_speed camera_set_view_border camera_set_view_angle ' +\n 'camera_set_view_target camera_get_view_mat camera_get_proj_mat ' +\n 'camera_get_update_script camera_get_begin_script ' +\n 'camera_get_end_script camera_get_view_x camera_get_view_y ' +\n 'camera_get_view_width camera_get_view_height camera_get_view_speed_x ' +\n 'camera_get_view_speed_y camera_get_view_border_x ' +\n 'camera_get_view_border_y camera_get_view_angle ' +\n 'camera_get_view_target view_get_camera view_get_visible ' +\n 'view_get_xport view_get_yport view_get_wport view_get_hport ' +\n 'view_get_surface_id view_set_camera view_set_visible view_set_xport ' +\n 'view_set_yport view_set_wport view_set_hport view_set_surface_id ' +\n 'gesture_drag_time gesture_drag_distance gesture_flick_speed ' +\n 'gesture_double_tap_time gesture_double_tap_distance ' +\n 'gesture_pinch_distance gesture_pinch_angle_towards ' +\n 'gesture_pinch_angle_away gesture_rotate_time gesture_rotate_angle ' +\n 'gesture_tap_count gesture_get_drag_time gesture_get_drag_distance ' +\n 'gesture_get_flick_speed gesture_get_double_tap_time ' +\n 'gesture_get_double_tap_distance gesture_get_pinch_distance ' +\n 'gesture_get_pinch_angle_towards gesture_get_pinch_angle_away ' +\n 'gesture_get_rotate_time gesture_get_rotate_angle ' +\n 'gesture_get_tap_count keyboard_virtual_show keyboard_virtual_hide ' +\n 'keyboard_virtual_status keyboard_virtual_height',\n literal: 'self other all noone global local undefined pointer_invalid ' +\n 'pointer_null path_action_stop path_action_restart ' +\n 'path_action_continue path_action_reverse true false pi GM_build_date ' +\n 'GM_version GM_runtime_version timezone_local timezone_utc ' +\n 'gamespeed_fps gamespeed_microseconds ev_create ev_destroy ev_step ' +\n 'ev_alarm ev_keyboard ev_mouse ev_collision ev_other ev_draw ' +\n 'ev_draw_begin ev_draw_end ev_draw_pre ev_draw_post ev_keypress ' +\n 'ev_keyrelease ev_trigger ev_left_button ev_right_button ' +\n 'ev_middle_button ev_no_button ev_left_press ev_right_press ' +\n 'ev_middle_press ev_left_release ev_right_release ev_middle_release ' +\n 'ev_mouse_enter ev_mouse_leave ev_mouse_wheel_up ev_mouse_wheel_down ' +\n 'ev_global_left_button ev_global_right_button ev_global_middle_button ' +\n 'ev_global_left_press ev_global_right_press ev_global_middle_press ' +\n 'ev_global_left_release ev_global_right_release ' +\n 'ev_global_middle_release ev_joystick1_left ev_joystick1_right ' +\n 'ev_joystick1_up ev_joystick1_down ev_joystick1_button1 ' +\n 'ev_joystick1_button2 ev_joystick1_button3 ev_joystick1_button4 ' +\n 'ev_joystick1_button5 ev_joystick1_button6 ev_joystick1_button7 ' +\n 'ev_joystick1_button8 ev_joystick2_left ev_joystick2_right ' +\n 'ev_joystick2_up ev_joystick2_down ev_joystick2_button1 ' +\n 'ev_joystick2_button2 ev_joystick2_button3 ev_joystick2_button4 ' +\n 'ev_joystick2_button5 ev_joystick2_button6 ev_joystick2_button7 ' +\n 'ev_joystick2_button8 ev_outside ev_boundary ev_game_start ' +\n 'ev_game_end ev_room_start ev_room_end ev_no_more_lives ' +\n 'ev_animation_end ev_end_of_path ev_no_more_health ev_close_button ' +\n 'ev_user0 ev_user1 ev_user2 ev_user3 ev_user4 ev_user5 ev_user6 ' +\n 'ev_user7 ev_user8 ev_user9 ev_user10 ev_user11 ev_user12 ev_user13 ' +\n 'ev_user14 ev_user15 ev_step_normal ev_step_begin ev_step_end ev_gui ' +\n 'ev_gui_begin ev_gui_end ev_cleanup ev_gesture ev_gesture_tap ' +\n 'ev_gesture_double_tap ev_gesture_drag_start ev_gesture_dragging ' +\n 'ev_gesture_drag_end ev_gesture_flick ev_gesture_pinch_start ' +\n 'ev_gesture_pinch_in ev_gesture_pinch_out ev_gesture_pinch_end ' +\n 'ev_gesture_rotate_start ev_gesture_rotating ev_gesture_rotate_end ' +\n 'ev_global_gesture_tap ev_global_gesture_double_tap ' +\n 'ev_global_gesture_drag_start ev_global_gesture_dragging ' +\n 'ev_global_gesture_drag_end ev_global_gesture_flick ' +\n 'ev_global_gesture_pinch_start ev_global_gesture_pinch_in ' +\n 'ev_global_gesture_pinch_out ev_global_gesture_pinch_end ' +\n 'ev_global_gesture_rotate_start ev_global_gesture_rotating ' +\n 'ev_global_gesture_rotate_end vk_nokey vk_anykey vk_enter vk_return ' +\n 'vk_shift vk_control vk_alt vk_escape vk_space vk_backspace vk_tab ' +\n 'vk_pause vk_printscreen vk_left vk_right vk_up vk_down vk_home ' +\n 'vk_end vk_delete vk_insert vk_pageup vk_pagedown vk_f1 vk_f2 vk_f3 ' +\n 'vk_f4 vk_f5 vk_f6 vk_f7 vk_f8 vk_f9 vk_f10 vk_f11 vk_f12 vk_numpad0 ' +\n 'vk_numpad1 vk_numpad2 vk_numpad3 vk_numpad4 vk_numpad5 vk_numpad6 ' +\n 'vk_numpad7 vk_numpad8 vk_numpad9 vk_divide vk_multiply vk_subtract ' +\n 'vk_add vk_decimal vk_lshift vk_lcontrol vk_lalt vk_rshift ' +\n 'vk_rcontrol vk_ralt mb_any mb_none mb_left mb_right mb_middle ' +\n 'c_aqua c_black c_blue c_dkgray c_fuchsia c_gray c_green c_lime ' +\n 'c_ltgray c_maroon c_navy c_olive c_purple c_red c_silver c_teal ' +\n 'c_white c_yellow c_orange fa_left fa_center fa_right fa_top ' +\n 'fa_middle fa_bottom pr_pointlist pr_linelist pr_linestrip ' +\n 'pr_trianglelist pr_trianglestrip pr_trianglefan bm_complex bm_normal ' +\n 'bm_add bm_max bm_subtract bm_zero bm_one bm_src_colour ' +\n 'bm_inv_src_colour bm_src_color bm_inv_src_color bm_src_alpha ' +\n 'bm_inv_src_alpha bm_dest_alpha bm_inv_dest_alpha bm_dest_colour ' +\n 'bm_inv_dest_colour bm_dest_color bm_inv_dest_color bm_src_alpha_sat ' +\n 'tf_point tf_linear tf_anisotropic mip_off mip_on mip_markedonly ' +\n 'audio_falloff_none audio_falloff_inverse_distance ' +\n 'audio_falloff_inverse_distance_clamped audio_falloff_linear_distance ' +\n 'audio_falloff_linear_distance_clamped ' +\n 'audio_falloff_exponent_distance ' +\n 'audio_falloff_exponent_distance_clamped audio_old_system ' +\n 'audio_new_system audio_mono audio_stereo audio_3d cr_default cr_none ' +\n 'cr_arrow cr_cross cr_beam cr_size_nesw cr_size_ns cr_size_nwse ' +\n 'cr_size_we cr_uparrow cr_hourglass cr_drag cr_appstart cr_handpoint ' +\n 'cr_size_all spritespeed_framespersecond ' +\n 'spritespeed_framespergameframe asset_object asset_unknown ' +\n 'asset_sprite asset_sound asset_room asset_path asset_script ' +\n 'asset_font asset_timeline asset_tiles asset_shader fa_readonly ' +\n 'fa_hidden fa_sysfile fa_volumeid fa_directory fa_archive ' +\n 'ds_type_map ds_type_list ds_type_stack ds_type_queue ds_type_grid ' +\n 'ds_type_priority ef_explosion ef_ring ef_ellipse ef_firework ' +\n 'ef_smoke ef_smokeup ef_star ef_spark ef_flare ef_cloud ef_rain ' +\n 'ef_snow pt_shape_pixel pt_shape_disk pt_shape_square pt_shape_line ' +\n 'pt_shape_star pt_shape_circle pt_shape_ring pt_shape_sphere ' +\n 'pt_shape_flare pt_shape_spark pt_shape_explosion pt_shape_cloud ' +\n 'pt_shape_smoke pt_shape_snow ps_distr_linear ps_distr_gaussian ' +\n 'ps_distr_invgaussian ps_shape_rectangle ps_shape_ellipse ' +\n 'ps_shape_diamond ps_shape_line ty_real ty_string dll_cdecl ' +\n 'dll_stdcall matrix_view matrix_projection matrix_world os_win32 ' +\n 'os_windows os_macosx os_ios os_android os_symbian os_linux ' +\n 'os_unknown os_winphone os_tizen os_win8native ' +\n 'os_wiiu os_3ds os_psvita os_bb10 os_ps4 os_xboxone ' +\n 'os_ps3 os_xbox360 os_uwp os_tvos os_switch ' +\n 'browser_not_a_browser browser_unknown browser_ie browser_firefox ' +\n 'browser_chrome browser_safari browser_safari_mobile browser_opera ' +\n 'browser_tizen browser_edge browser_windows_store browser_ie_mobile ' +\n 'device_ios_unknown device_ios_iphone device_ios_iphone_retina ' +\n 'device_ios_ipad device_ios_ipad_retina device_ios_iphone5 ' +\n 'device_ios_iphone6 device_ios_iphone6plus device_emulator ' +\n 'device_tablet display_landscape display_landscape_flipped ' +\n 'display_portrait display_portrait_flipped tm_sleep tm_countvsyncs ' +\n 'of_challenge_win of_challen ge_lose of_challenge_tie ' +\n 'leaderboard_type_number leaderboard_type_time_mins_secs ' +\n 'cmpfunc_never cmpfunc_less cmpfunc_equal cmpfunc_lessequal ' +\n 'cmpfunc_greater cmpfunc_notequal cmpfunc_greaterequal cmpfunc_always ' +\n 'cull_noculling cull_clockwise cull_counterclockwise lighttype_dir ' +\n 'lighttype_point iap_ev_storeload iap_ev_product iap_ev_purchase ' +\n 'iap_ev_consume iap_ev_restore iap_storeload_ok iap_storeload_failed ' +\n 'iap_status_uninitialised iap_status_unavailable iap_status_loading ' +\n 'iap_status_available iap_status_processing iap_status_restoring ' +\n 'iap_failed iap_unavailable iap_available iap_purchased iap_canceled ' +\n 'iap_refunded fb_login_default fb_login_fallback_to_webview ' +\n 'fb_login_no_fallback_to_webview fb_login_forcing_webview ' +\n 'fb_login_use_system_account fb_login_forcing_safari ' +\n 'phy_joint_anchor_1_x phy_joint_anchor_1_y phy_joint_anchor_2_x ' +\n 'phy_joint_anchor_2_y phy_joint_reaction_force_x ' +\n 'phy_joint_reaction_force_y phy_joint_reaction_torque ' +\n 'phy_joint_motor_speed phy_joint_angle phy_joint_motor_torque ' +\n 'phy_joint_max_motor_torque phy_joint_translation phy_joint_speed ' +\n 'phy_joint_motor_force phy_joint_max_motor_force phy_joint_length_1 ' +\n 'phy_joint_length_2 phy_joint_damping_ratio phy_joint_frequency ' +\n 'phy_joint_lower_angle_limit phy_joint_upper_angle_limit ' +\n 'phy_joint_angle_limits phy_joint_max_length phy_joint_max_torque ' +\n 'phy_joint_max_force phy_debug_render_aabb ' +\n 'phy_debug_render_collision_pairs phy_debug_render_coms ' +\n 'phy_debug_render_core_shapes phy_debug_render_joints ' +\n 'phy_debug_render_obb phy_debug_render_shapes ' +\n 'phy_particle_flag_water phy_particle_flag_zombie ' +\n 'phy_particle_flag_wall phy_particle_flag_spring ' +\n 'phy_particle_flag_elastic phy_particle_flag_viscous ' +\n 'phy_particle_flag_powder phy_particle_flag_tensile ' +\n 'phy_particle_flag_colourmixing phy_particle_flag_colormixing ' +\n 'phy_particle_group_flag_solid phy_particle_group_flag_rigid ' +\n 'phy_particle_data_flag_typeflags phy_particle_data_flag_position ' +\n 'phy_particle_data_flag_velocity phy_particle_data_flag_colour ' +\n 'phy_particle_data_flag_color phy_particle_data_flag_category ' +\n 'achievement_our_info achievement_friends_info ' +\n 'achievement_leaderboard_info achievement_achievement_info ' +\n 'achievement_filter_all_players achievement_filter_friends_only ' +\n 'achievement_filter_favorites_only ' +\n 'achievement_type_achievement_challenge ' +\n 'achievement_type_score_challenge achievement_pic_loaded ' +\n 'achievement_show_ui achievement_show_profile ' +\n 'achievement_show_leaderboard achievement_show_achievement ' +\n 'achievement_show_bank achievement_show_friend_picker ' +\n 'achievement_show_purchase_prompt network_socket_tcp ' +\n 'network_socket_udp network_socket_bluetooth network_type_connect ' +\n 'network_type_disconnect network_type_data ' +\n 'network_type_non_blocking_connect network_config_connect_timeout ' +\n 'network_config_use_non_blocking_socket ' +\n 'network_config_enable_reliable_udp ' +\n 'network_config_disable_reliable_udp buffer_fixed buffer_grow ' +\n 'buffer_wrap buffer_fast buffer_vbuffer buffer_network buffer_u8 ' +\n 'buffer_s8 buffer_u16 buffer_s16 buffer_u32 buffer_s32 buffer_u64 ' +\n 'buffer_f16 buffer_f32 buffer_f64 buffer_bool buffer_text ' +\n 'buffer_string buffer_surface_copy buffer_seek_start ' +\n 'buffer_seek_relative buffer_seek_end ' +\n 'buffer_generalerror buffer_outofspace buffer_outofbounds ' +\n 'buffer_invalidtype text_type button_type input_type ANSI_CHARSET ' +\n 'DEFAULT_CHARSET EASTEUROPE_CHARSET RUSSIAN_CHARSET SYMBOL_CHARSET ' +\n 'SHIFTJIS_CHARSET HANGEUL_CHARSET GB2312_CHARSET CHINESEBIG5_CHARSET ' +\n 'JOHAB_CHARSET HEBREW_CHARSET ARABIC_CHARSET GREEK_CHARSET ' +\n 'TURKISH_CHARSET VIETNAMESE_CHARSET THAI_CHARSET MAC_CHARSET ' +\n 'BALTIC_CHARSET OEM_CHARSET gp_face1 gp_face2 gp_face3 gp_face4 ' +\n 'gp_shoulderl gp_shoulderr gp_shoulderlb gp_shoulderrb gp_select ' +\n 'gp_start gp_stickl gp_stickr gp_padu gp_padd gp_padl gp_padr ' +\n 'gp_axislh gp_axislv gp_axisrh gp_axisrv ov_friends ov_community ' +\n 'ov_players ov_settings ov_gamegroup ov_achievements lb_sort_none ' +\n 'lb_sort_ascending lb_sort_descending lb_disp_none lb_disp_numeric ' +\n 'lb_disp_time_sec lb_disp_time_ms ugc_result_success ' +\n 'ugc_filetype_community ugc_filetype_microtrans ugc_visibility_public ' +\n 'ugc_visibility_friends_only ugc_visibility_private ' +\n 'ugc_query_RankedByVote ugc_query_RankedByPublicationDate ' +\n 'ugc_query_AcceptedForGameRankedByAcceptanceDate ' +\n 'ugc_query_RankedByTrend ' +\n 'ugc_query_FavoritedByFriendsRankedByPublicationDate ' +\n 'ugc_query_CreatedByFriendsRankedByPublicationDate ' +\n 'ugc_query_RankedByNumTimesReported ' +\n 'ugc_query_CreatedByFollowedUsersRankedByPublicationDate ' +\n 'ugc_query_NotYetRated ugc_query_RankedByTotalVotesAsc ' +\n 'ugc_query_RankedByVotesUp ugc_query_RankedByTextSearch ' +\n 'ugc_sortorder_CreationOrderDesc ugc_sortorder_CreationOrderAsc ' +\n 'ugc_sortorder_TitleAsc ugc_sortorder_LastUpdatedDesc ' +\n 'ugc_sortorder_SubscriptionDateDesc ugc_sortorder_VoteScoreDesc ' +\n 'ugc_sortorder_ForModeration ugc_list_Published ugc_list_VotedOn ' +\n 'ugc_list_VotedUp ugc_list_VotedDown ugc_list_WillVoteLater ' +\n 'ugc_list_Favorited ugc_list_Subscribed ugc_list_UsedOrPlayed ' +\n 'ugc_list_Followed ugc_match_Items ugc_match_Items_Mtx ' +\n 'ugc_match_Items_ReadyToUse ugc_match_Collections ugc_match_Artwork ' +\n 'ugc_match_Videos ugc_match_Screenshots ugc_match_AllGuides ' +\n 'ugc_match_WebGuides ugc_match_IntegratedGuides ' +\n 'ugc_match_UsableInGame ugc_match_ControllerBindings ' +\n 'vertex_usage_position vertex_usage_colour vertex_usage_color ' +\n 'vertex_usage_normal vertex_usage_texcoord vertex_usage_textcoord ' +\n 'vertex_usage_blendweight vertex_usage_blendindices ' +\n 'vertex_usage_psize vertex_usage_tangent vertex_usage_binormal ' +\n 'vertex_usage_fog vertex_usage_depth vertex_usage_sample ' +\n 'vertex_type_float1 vertex_type_float2 vertex_type_float3 ' +\n 'vertex_type_float4 vertex_type_colour vertex_type_color ' +\n 'vertex_type_ubyte4 layerelementtype_undefined ' +\n 'layerelementtype_background layerelementtype_instance ' +\n 'layerelementtype_oldtilemap layerelementtype_sprite ' +\n 'layerelementtype_tilemap layerelementtype_particlesystem ' +\n 'layerelementtype_tile tile_rotate tile_flip tile_mirror ' +\n 'tile_index_mask kbv_type_default kbv_type_ascii kbv_type_url ' +\n 'kbv_type_email kbv_type_numbers kbv_type_phone kbv_type_phone_name ' +\n 'kbv_returnkey_default kbv_returnkey_go kbv_returnkey_google ' +\n 'kbv_returnkey_join kbv_returnkey_next kbv_returnkey_route ' +\n 'kbv_returnkey_search kbv_returnkey_send kbv_returnkey_yahoo ' +\n 'kbv_returnkey_done kbv_returnkey_continue kbv_returnkey_emergency ' +\n 'kbv_autocapitalize_none kbv_autocapitalize_words ' +\n 'kbv_autocapitalize_sentences kbv_autocapitalize_characters',\n symbol: 'argument_relative argument argument0 argument1 argument2 ' +\n 'argument3 argument4 argument5 argument6 argument7 argument8 ' +\n 'argument9 argument10 argument11 argument12 argument13 argument14 ' +\n 'argument15 argument_count x y xprevious yprevious xstart ystart ' +\n 'hspeed vspeed direction speed friction gravity gravity_direction ' +\n 'path_index path_position path_positionprevious path_speed ' +\n 'path_scale path_orientation path_endaction object_index id solid ' +\n 'persistent mask_index instance_count instance_id room_speed fps ' +\n 'fps_real current_time current_year current_month current_day ' +\n 'current_weekday current_hour current_minute current_second alarm ' +\n 'timeline_index timeline_position timeline_speed timeline_running ' +\n 'timeline_loop room room_first room_last room_width room_height ' +\n 'room_caption room_persistent score lives health show_score ' +\n 'show_lives show_health caption_score caption_lives caption_health ' +\n 'event_type event_number event_object event_action ' +\n 'application_surface gamemaker_pro gamemaker_registered ' +\n 'gamemaker_version error_occurred error_last debug_mode ' +\n 'keyboard_key keyboard_lastkey keyboard_lastchar keyboard_string ' +\n 'mouse_x mouse_y mouse_button mouse_lastbutton cursor_sprite ' +\n 'visible sprite_index sprite_width sprite_height sprite_xoffset ' +\n 'sprite_yoffset image_number image_index image_speed depth ' +\n 'image_xscale image_yscale image_angle image_alpha image_blend ' +\n 'bbox_left bbox_right bbox_top bbox_bottom layer background_colour ' +\n 'background_showcolour background_color background_showcolor ' +\n 'view_enabled view_current view_visible view_xview view_yview ' +\n 'view_wview view_hview view_xport view_yport view_wport view_hport ' +\n 'view_angle view_hborder view_vborder view_hspeed view_vspeed ' +\n 'view_object view_surface_id view_camera game_id game_display_name ' +\n 'game_project_name game_save_id working_directory temp_directory ' +\n 'program_directory browser_width browser_height os_type os_device ' +\n 'os_browser os_version display_aa async_load delta_time ' +\n 'webgl_enabled event_data iap_data phy_rotation phy_position_x ' +\n 'phy_position_y phy_angular_velocity phy_linear_velocity_x ' +\n 'phy_linear_velocity_y phy_speed_x phy_speed_y phy_speed ' +\n 'phy_angular_damping phy_linear_damping phy_bullet ' +\n 'phy_fixed_rotation phy_active phy_mass phy_inertia phy_com_x ' +\n 'phy_com_y phy_dynamic phy_kinematic phy_sleeping ' +\n 'phy_collision_points phy_collision_x phy_collision_y ' +\n 'phy_col_normal_x phy_col_normal_y phy_position_xprevious ' +\n 'phy_position_yprevious'\n };\n\n return {\n aliases: ['gml', 'GML'],\n case_insensitive: false, // language is case-insensitive\n keywords: GML_KEYWORDS,\n\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var GO_KEYWORDS = {\n keyword:\n 'break default func interface select case map struct chan else goto package switch ' +\n 'const fallthrough if range type continue for import return var go defer ' +\n 'bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 ' +\n 'uint16 uint32 uint64 int uint uintptr rune',\n literal:\n 'true false iota nil',\n built_in:\n 'append cap close complex copy imag len make new panic print println real recover delete'\n };\n return {\n aliases: ['golang'],\n keywords: GO_KEYWORDS,\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'string',\n variants: [\n hljs.QUOTE_STRING_MODE,\n {begin: '\\'', end: '[^\\\\\\\\]\\''},\n {begin: '`', end: '`'},\n ]\n },\n {\n className: 'number',\n variants: [\n {begin: hljs.C_NUMBER_RE + '[dflsi]', relevance: 1},\n hljs.C_NUMBER_MODE\n ]\n },\n {\n begin: /:=/ // relevance booster\n },\n {\n className: 'function',\n beginKeywords: 'func', end: /\\s*\\{/, excludeEnd: true,\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n keywords: GO_KEYWORDS,\n illegal: /[\"']/\n }\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword:\n 'println readln print import module function local return let var ' +\n 'while for foreach times in case when match with break continue ' +\n 'augment augmentation each find filter reduce ' +\n 'if then else otherwise try catch finally raise throw orIfNull ' +\n 'DynamicObject|10 DynamicVariable struct Observable map set vector list array',\n literal:\n 'true false null'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta', begin: '@[A-Za-z]+'\n }\n ]\n }\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n keywords: {\n keyword:\n 'task project allprojects subprojects artifacts buildscript configurations ' +\n 'dependencies repositories sourceSets description delete from into include ' +\n 'exclude source classpath destinationDir includes options sourceCompatibility ' +\n 'targetCompatibility group flatDir doLast doFirst flatten todir fromdir ant ' +\n 'def abstract break case catch continue default do else extends final finally ' +\n 'for if implements instanceof native new private protected public return static ' +\n 'switch synchronized throw throws transient try volatile while strictfp package ' +\n 'import false null super this true antlrtask checkstyle codenarc copy boolean ' +\n 'byte char class double float int interface long short void compile runTime ' +\n 'file fileTree abs any append asList asWritable call collect compareTo count ' +\n 'div dump each eachByte eachFile eachLine every find findAll flatten getAt ' +\n 'getErr getIn getOut getText grep immutable inject inspect intersect invokeMethods ' +\n 'isCase join leftShift minus multiply newInputStream newOutputStream newPrintWriter ' +\n 'newReader newWriter next plus pop power previous print println push putAt read ' +\n 'readBytes readLines reverse reverseEach round size sort splitEachLine step subMap ' +\n 'times toInteger toList tokenize upto waitForOrKill withPrintWriter withReader ' +\n 'withStream withWriter withWriterAppend write writeLine'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n hljs.REGEXP_MODE\n\n ]\n }\n};","module.exports = function(hljs) {\n return {\n keywords: {\n literal : 'true false null',\n keyword:\n 'byte short char int long boolean float double void ' +\n // groovy specific keywords\n 'def as in assert trait ' +\n // common keywords with Java\n 'super this abstract static volatile transient public private protected synchronized final ' +\n 'class interface enum if else for while switch case break default continue ' +\n 'throw throws try catch finally implements extends new import package return instanceof'\n },\n\n contains: [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance : 0,\n contains : [\n {\n // eat up @'s in emails to prevent them to be recognized as doctags\n begin: /\\w+@/, relevance: 0\n },\n {\n className : 'doctag',\n begin : '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"'\n },\n {\n className: 'string',\n begin: \"'''\", end: \"'''\"\n },\n {\n className: 'string',\n begin: \"\\\\$/\", end: \"/\\\\$\",\n relevance: 10\n },\n hljs.APOS_STRING_MODE,\n {\n className: 'regexp',\n begin: /~?\\/[^\\/\\n]+\\//,\n contains: [\n hljs.BACKSLASH_ESCAPE\n ]\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'meta',\n begin: \"^#!/usr/bin/env\", end: '$',\n illegal: '\\n'\n },\n hljs.BINARY_NUMBER_MODE,\n {\n className: 'class',\n beginKeywords: 'class interface trait enum', end: '{',\n illegal: ':',\n contains: [\n {beginKeywords: 'extends implements'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n hljs.C_NUMBER_MODE,\n {\n className: 'meta', begin: '@[A-Za-z]+'\n },\n {\n // highlight map keys and named parameters as strings\n className: 'string', begin: /[^\\?]{0}[A-Za-z0-9_$]+ *:/\n },\n {\n // catch middle element of the ternary operator\n // to avoid highlight it as a label, named parameter, or map key\n begin: /\\?/, end: /\\:/\n },\n {\n // highlight labeled statements\n className: 'symbol', begin: '^\\\\s*[A-Za-z0-9_$]+:',\n relevance: 0\n }\n ],\n illegal: /#|<\\//\n }\n};","module.exports = // TODO support filter tags like :javascript, support inline HTML\nfunction(hljs) {\n return {\n case_insensitive: true,\n contains: [\n {\n className: 'meta',\n begin: '^!!!( (5|1\\\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\\\b.*))?$',\n relevance: 10\n },\n // FIXME these comments should be allowed to span indented lines\n hljs.COMMENT(\n '^\\\\s*(!=#|=#|-#|/).*$',\n false,\n {\n relevance: 0\n }\n ),\n {\n begin: '^\\\\s*(-|=|!=)(?!#)',\n starts: {\n end: '\\\\n',\n subLanguage: 'ruby'\n }\n },\n {\n className: 'tag',\n begin: '^\\\\s*%',\n contains: [\n {\n className: 'selector-tag',\n begin: '\\\\w+'\n },\n {\n className: 'selector-id',\n begin: '#[\\\\w-]+'\n },\n {\n className: 'selector-class',\n begin: '\\\\.[\\\\w-]+'\n },\n {\n begin: '{\\\\s*',\n end: '\\\\s*}',\n contains: [\n {\n begin: ':\\\\w+\\\\s*=>',\n end: ',\\\\s+',\n returnBegin: true,\n endsWithParent: true,\n contains: [\n {\n className: 'attr',\n begin: ':\\\\w+'\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n begin: '\\\\w+',\n relevance: 0\n }\n ]\n }\n ]\n },\n {\n begin: '\\\\(\\\\s*',\n end: '\\\\s*\\\\)',\n excludeEnd: true,\n contains: [\n {\n begin: '\\\\w+\\\\s*=',\n end: '\\\\s+',\n returnBegin: true,\n endsWithParent: true,\n contains: [\n {\n className: 'attr',\n begin: '\\\\w+',\n relevance: 0\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n begin: '\\\\w+',\n relevance: 0\n }\n ]\n }\n ]\n }\n ]\n },\n {\n begin: '^\\\\s*[=~]\\\\s*'\n },\n {\n begin: '#{',\n starts: {\n end: '}',\n subLanguage: 'ruby'\n }\n }\n ]\n };\n};","module.exports = function(hljs) {\n var BUILT_INS = {'builtin-name': 'each in with if else unless bindattr action collection debugger log outlet template unbound view yield'};\n return {\n aliases: ['hbs', 'html.hbs', 'html.handlebars'],\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT('{{!(--)?', '(--)?}}'),\n {\n className: 'template-tag',\n begin: /\\{\\{[#\\/]/, end: /\\}\\}/,\n contains: [\n {\n className: 'name',\n begin: /[a-zA-Z\\.-]+/,\n keywords: BUILT_INS,\n starts: {\n endsWithParent: true, relevance: 0,\n contains: [\n hljs.QUOTE_STRING_MODE\n ]\n }\n }\n ]\n },\n {\n className: 'template-variable',\n begin: /\\{\\{/, end: /\\}\\}/,\n keywords: BUILT_INS\n }\n ]\n };\n};","module.exports = function(hljs) {\n var COMMENT = {\n variants: [\n hljs.COMMENT('--', '$'),\n hljs.COMMENT(\n '{-',\n '-}',\n {\n contains: ['self']\n }\n )\n ]\n };\n\n var PRAGMA = {\n className: 'meta',\n begin: '{-#', end: '#-}'\n };\n\n var PREPROCESSOR = {\n className: 'meta',\n begin: '^#', end: '$'\n };\n\n var CONSTRUCTOR = {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*', // TODO: other constructors (build-in, infix).\n relevance: 0\n };\n\n var LIST = {\n begin: '\\\\(', end: '\\\\)',\n illegal: '\"',\n contains: [\n PRAGMA,\n PREPROCESSOR,\n {className: 'type', begin: '\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?'},\n hljs.inherit(hljs.TITLE_MODE, {begin: '[_a-z][\\\\w\\']*'}),\n COMMENT\n ]\n };\n\n var RECORD = {\n begin: '{', end: '}',\n contains: LIST.contains\n };\n\n return {\n aliases: ['hs'],\n keywords:\n 'let in if then else case of where do module import hiding ' +\n 'qualified type data newtype deriving class instance as default ' +\n 'infix infixl infixr foreign export ccall stdcall cplusplus ' +\n 'jvm dotnet safe unsafe family forall mdo proc rec',\n contains: [\n\n // Top-level constructions.\n\n {\n beginKeywords: 'module', end: 'where',\n keywords: 'module where',\n contains: [LIST, COMMENT],\n illegal: '\\\\W\\\\.|;'\n },\n {\n begin: '\\\\bimport\\\\b', end: '$',\n keywords: 'import qualified as hiding',\n contains: [LIST, COMMENT],\n illegal: '\\\\W\\\\.|;'\n },\n\n {\n className: 'class',\n begin: '^(\\\\s*)?(class|instance)\\\\b', end: 'where',\n keywords: 'class family instance where',\n contains: [CONSTRUCTOR, LIST, COMMENT]\n },\n {\n className: 'class',\n begin: '\\\\b(data|(new)?type)\\\\b', end: '$',\n keywords: 'data family type newtype deriving',\n contains: [PRAGMA, CONSTRUCTOR, LIST, RECORD, COMMENT]\n },\n {\n beginKeywords: 'default', end: '$',\n contains: [CONSTRUCTOR, LIST, COMMENT]\n },\n {\n beginKeywords: 'infix infixl infixr', end: '$',\n contains: [hljs.C_NUMBER_MODE, COMMENT]\n },\n {\n begin: '\\\\bforeign\\\\b', end: '$',\n keywords: 'foreign import export ccall stdcall cplusplus jvm ' +\n 'dotnet safe unsafe',\n contains: [CONSTRUCTOR, hljs.QUOTE_STRING_MODE, COMMENT]\n },\n {\n className: 'meta',\n begin: '#!\\\\/usr\\\\/bin\\\\/env\\ runhaskell', end: '$'\n },\n\n // \"Whitespaces\".\n\n PRAGMA,\n PREPROCESSOR,\n\n // Literals and names.\n\n // TODO: characters.\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n CONSTRUCTOR,\n hljs.inherit(hljs.TITLE_MODE, {begin: '^[_a-z][\\\\w\\']*'}),\n\n COMMENT,\n\n {begin: '->|<-'} // No markup, relevance booster\n ]\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[a-zA-Z_$][a-zA-Z0-9_$]*';\n var IDENT_FUNC_RETURN_TYPE_RE = '([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)';\n\n var HAXE_BASIC_TYPES = 'Int Float String Bool Dynamic Void Array ';\n\n return {\n aliases: ['hx'],\n keywords: {\n keyword: 'break case cast catch continue default do dynamic else enum extern ' +\n 'for function here if import in inline never new override package private get set ' +\n 'public return static super switch this throw trace try typedef untyped using var while ' +\n HAXE_BASIC_TYPES,\n built_in:\n 'trace this',\n literal:\n 'true false null _'\n },\n contains: [\n { className: 'string', // interpolate-able strings\n begin: '\\'', end: '\\'',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n { className: 'subst', // interpolation\n begin: '\\\\$\\\\{', end: '\\\\}'\n },\n { className: 'subst', // interpolation\n begin: '\\\\$', end: '\\\\W}'\n }\n ]\n },\n hljs.QUOTE_STRING_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n { className: 'meta', // compiler meta\n begin: '@:', end: '$'\n },\n { className: 'meta', // compiler conditionals\n begin: '#', end: '$',\n keywords: {'meta-keyword': 'if else elseif end error'}\n },\n { className: 'type', // function types\n begin: ':[ \\t]*', end: '[^A-Za-z0-9_ \\t\\\\->]',\n excludeBegin: true, excludeEnd: true,\n relevance: 0\n },\n { className: 'type', // types\n begin: ':[ \\t]*', end: '\\\\W',\n excludeBegin: true, excludeEnd: true\n },\n { className: 'type', // instantiation\n begin: 'new *', end: '\\\\W',\n excludeBegin: true, excludeEnd: true\n },\n { className: 'class', // enums\n beginKeywords: 'enum', end: '\\\\{',\n contains: [\n hljs.TITLE_MODE\n ]\n },\n { className: 'class', // abstracts\n beginKeywords: 'abstract', end: '[\\\\{$]',\n contains: [\n { className: 'type',\n begin: '\\\\(', end: '\\\\)',\n excludeBegin: true, excludeEnd: true\n },\n { className: 'type',\n begin: 'from +', end: '\\\\W',\n excludeBegin: true, excludeEnd: true\n },\n { className: 'type',\n begin: 'to +', end: '\\\\W',\n excludeBegin: true, excludeEnd: true\n },\n hljs.TITLE_MODE\n ],\n keywords: {\n keyword: 'abstract from to'\n }\n },\n { className: 'class', // classes\n begin: '\\\\b(class|interface) +', end: '[\\\\{$]', excludeEnd: true,\n keywords: 'class interface',\n contains: [\n { className: 'keyword',\n begin: '\\\\b(extends|implements) +',\n keywords: 'extends implements',\n contains: [\n {\n className: 'type',\n begin: hljs.IDENT_RE,\n relevance: 0\n }\n ]\n },\n hljs.TITLE_MODE\n ]\n },\n { className: 'function',\n beginKeywords: 'function', end: '\\\\(', excludeEnd: true,\n illegal: '\\\\S',\n contains: [\n hljs.TITLE_MODE\n ]\n }\n ],\n illegal: /<\\//\n };\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n lexemes: /[\\w\\._]+/,\n keywords: 'goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n\n {\n // multi-line string\n className: 'string',\n begin: '{\"', end: '\"}',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n\n hljs.COMMENT(';', '$', {relevance: 0}),\n\n {\n // pre-processor\n className: 'meta',\n begin: '#', end: '$',\n keywords: {'meta-keyword': 'addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib'},\n contains: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'meta-string'}),\n hljs.NUMBER_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n\n {\n // label\n className: 'symbol',\n begin: '^\\\\*(\\\\w+|@)'\n },\n\n hljs.NUMBER_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var BUILT_INS = 'action collection component concat debugger each each-in else get hash if input link-to loc log mut outlet partial query-params render textarea unbound unless with yield view';\n\n var ATTR_ASSIGNMENT = {\n illegal: /\\}\\}/,\n begin: /[a-zA-Z0-9_]+=/,\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'attr', begin: /[a-zA-Z0-9_]+/\n }\n ]\n };\n\n var SUB_EXPR = {\n illegal: /\\}\\}/,\n begin: /\\)/, end: /\\)/,\n contains: [\n {\n begin: /[a-zA-Z\\.\\-]+/,\n keywords: {built_in: BUILT_INS},\n starts: {\n endsWithParent: true, relevance: 0,\n contains: [\n hljs.QUOTE_STRING_MODE,\n ]\n }\n }\n ]\n };\n\n var TAG_INNARDS = {\n endsWithParent: true, relevance: 0,\n keywords: {keyword: 'as', built_in: BUILT_INS},\n contains: [\n hljs.QUOTE_STRING_MODE,\n ATTR_ASSIGNMENT,\n hljs.NUMBER_MODE\n ]\n };\n\n return {\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT('{{!(--)?', '(--)?}}'),\n {\n className: 'template-tag',\n begin: /\\{\\{[#\\/]/, end: /\\}\\}/,\n contains: [\n {\n className: 'name',\n begin: /[a-zA-Z\\.\\-]+/,\n keywords: {'builtin-name': BUILT_INS},\n starts: TAG_INNARDS\n }\n ]\n },\n {\n className: 'template-variable',\n begin: /\\{\\{[a-zA-Z][a-zA-Z\\-]+/, end: /\\}\\}/,\n keywords: {keyword: 'as', built_in: BUILT_INS},\n contains: [\n hljs.QUOTE_STRING_MODE\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var VERSION = 'HTTP/[0-9\\\\.]+';\n return {\n aliases: ['https'],\n illegal: '\\\\S',\n contains: [\n {\n begin: '^' + VERSION, end: '$',\n contains: [{className: 'number', begin: '\\\\b\\\\d{3}\\\\b'}]\n },\n {\n begin: '^[A-Z]+ (.*?) ' + VERSION + '$', returnBegin: true, end: '$',\n contains: [\n {\n className: 'string',\n begin: ' ', end: ' ',\n excludeBegin: true, excludeEnd: true\n },\n {\n begin: VERSION\n },\n {\n className: 'keyword',\n begin: '[A-Z]+'\n }\n ]\n },\n {\n className: 'attribute',\n begin: '^\\\\w', end: ': ', excludeEnd: true,\n illegal: '\\\\n|\\\\s|=',\n starts: {end: '$', relevance: 0}\n },\n {\n begin: '\\\\n\\\\n',\n starts: {subLanguage: [], endsWithParent: true}\n }\n ]\n };\n};","module.exports = function(hljs) {\n var keywords = {\n 'builtin-name':\n // keywords\n '!= % %= & &= * ** **= *= *map ' +\n '+ += , --build-class-- --import-- -= . / // //= ' +\n '/= < << <<= <= = > >= >> >>= ' +\n '@ @= ^ ^= abs accumulate all and any ap-compose ' +\n 'ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ' +\n 'ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast ' +\n 'callable calling-module-name car case cdr chain chr coll? combinations compile ' +\n 'compress cond cons cons? continue count curry cut cycle dec ' +\n 'def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn ' +\n 'defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir ' +\n 'disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? ' +\n 'end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first ' +\n 'flatten float? fn fnc fnr for for* format fraction genexpr ' +\n 'gensym get getattr global globals group-by hasattr hash hex id ' +\n 'identity if if* if-not if-python2 import in inc input instance? ' +\n 'integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even ' +\n 'is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none ' +\n 'is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass ' +\n 'iter iterable? iterate iterator? keyword keyword? lambda last len let ' +\n 'lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all ' +\n 'map max merge-with method-decorator min multi-decorator multicombinations name neg? next ' +\n 'none? nonlocal not not-in not? nth numeric? oct odd? open ' +\n 'or ord partition permutations pos? post-route postwalk pow prewalk print ' +\n 'product profile/calls profile/cpu put-route quasiquote quote raise range read read-str ' +\n 'recursive-replace reduce remove repeat repeatedly repr require rest round route ' +\n 'route-with-methods rwm second seq set-comp setattr setv some sorted string ' +\n 'string? sum switch symbol? take take-nth take-while tee try unless ' +\n 'unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms ' +\n 'xi xor yield yield-from zero? zip zip-longest | |= ~'\n };\n\n var SYMBOLSTART = 'a-zA-Z_\\\\-!.?+*=<>&#\\'';\n var SYMBOL_RE = '[' + SYMBOLSTART + '][' + SYMBOLSTART + '0-9/;:]*';\n var SIMPLE_NUMBER_RE = '[-+]?\\\\d+(\\\\.\\\\d+)?';\n\n var SHEBANG = {\n className: 'meta',\n begin: '^#!', end: '$'\n };\n\n var SYMBOL = {\n begin: SYMBOL_RE,\n relevance: 0\n };\n var NUMBER = {\n className: 'number', begin: SIMPLE_NUMBER_RE,\n relevance: 0\n };\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});\n var COMMENT = hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n );\n var LITERAL = {\n className: 'literal',\n begin: /\\b([Tt]rue|[Ff]alse|nil|None)\\b/\n };\n var COLLECTION = {\n begin: '[\\\\[\\\\{]', end: '[\\\\]\\\\}]'\n };\n var HINT = {\n className: 'comment',\n begin: '\\\\^' + SYMBOL_RE\n };\n var HINT_COL = hljs.COMMENT('\\\\^\\\\{', '\\\\}');\n var KEY = {\n className: 'symbol',\n begin: '[:]{1,2}' + SYMBOL_RE\n };\n var LIST = {\n begin: '\\\\(', end: '\\\\)'\n };\n var BODY = {\n endsWithParent: true,\n relevance: 0\n };\n var NAME = {\n keywords: keywords,\n lexemes: SYMBOL_RE,\n className: 'name', begin: SYMBOL_RE,\n starts: BODY\n };\n var DEFAULT_CONTAINS = [LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL, SYMBOL];\n\n LIST.contains = [hljs.COMMENT('comment', ''), NAME, BODY];\n BODY.contains = DEFAULT_CONTAINS;\n COLLECTION.contains = DEFAULT_CONTAINS;\n\n return {\n aliases: ['hylang'],\n illegal: /\\S/,\n contains: [SHEBANG, LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL]\n }\n};","module.exports = function(hljs) {\n var START_BRACKET = '\\\\[';\n var END_BRACKET = '\\\\]';\n return {\n aliases: ['i7'],\n case_insensitive: true,\n keywords: {\n // Some keywords more or less unique to I7, for relevance.\n keyword:\n // kind:\n 'thing room person man woman animal container ' +\n 'supporter backdrop door ' +\n // characteristic:\n 'scenery open closed locked inside gender ' +\n // verb:\n 'is are say understand ' +\n // misc keyword:\n 'kind of rule'\n },\n contains: [\n {\n className: 'string',\n begin: '\"', end: '\"',\n relevance: 0,\n contains: [\n {\n className: 'subst',\n begin: START_BRACKET, end: END_BRACKET\n }\n ]\n },\n {\n className: 'section',\n begin: /^(Volume|Book|Part|Chapter|Section|Table)\\b/,\n end: '$'\n },\n {\n // Rule definition\n // This is here for relevance.\n begin: /^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\\b/,\n end: ':',\n contains: [\n {\n //Rule name\n begin: '\\\\(This', end: '\\\\)'\n }\n ]\n },\n {\n className: 'comment',\n begin: START_BRACKET, end: END_BRACKET,\n contains: ['self']\n }\n ]\n };\n};","module.exports = function(hljs) {\n var STRING = {\n className: \"string\",\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {\n begin: \"'''\", end: \"'''\",\n relevance: 10\n }, {\n begin: '\"\"\"', end: '\"\"\"',\n relevance: 10\n }, {\n begin: '\"', end: '\"'\n }, {\n begin: \"'\", end: \"'\"\n }\n ]\n };\n return {\n aliases: ['toml'],\n case_insensitive: true,\n illegal: /\\S/,\n contains: [\n hljs.COMMENT(';', '$'),\n hljs.HASH_COMMENT_MODE,\n {\n className: 'section',\n begin: /^\\s*\\[+/, end: /\\]+/\n },\n {\n begin: /^[a-z0-9\\[\\]_-]+\\s*=\\s*/, end: '$',\n returnBegin: true,\n contains: [\n {\n className: 'attr',\n begin: /[a-z0-9\\[\\]_-]+/\n },\n {\n begin: /=/, endsWithParent: true,\n relevance: 0,\n contains: [\n {\n className: 'literal',\n begin: /\\bon|off|true|false|yes|no\\b/\n },\n {\n className: 'variable',\n variants: [\n {begin: /\\$[\\w\\d\"][\\w\\d_]*/},\n {begin: /\\$\\{(.*?)}/}\n ]\n },\n STRING,\n {\n className: 'number',\n begin: /([\\+\\-]+)?[\\d]+_[\\d_]+/\n },\n hljs.NUMBER_MODE\n ]\n }\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)'\n };\n\n var F_KEYWORDS = {\n literal: '.False. .True.',\n keyword: 'kind do while private call intrinsic where elsewhere ' +\n 'type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then ' +\n 'public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. ' +\n 'goto save else use module select case ' +\n 'access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit ' +\n 'continue format pause cycle exit ' +\n 'c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg ' +\n 'synchronous nopass non_overridable pass protected volatile abstract extends import ' +\n 'non_intrinsic value deferred generic final enumerator class associate bind enum ' +\n 'c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t ' +\n 'c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double ' +\n 'c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr ' +\n 'c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer ' +\n 'c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor ' +\n 'numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ' +\n 'ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive ' +\n 'pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure ' +\n 'integer real character complex logical dimension allocatable|10 parameter ' +\n 'external implicit|10 none double precision assign intent optional pointer ' +\n 'target in out common equivalence data ' +\n // IRPF90 special keywords\n 'begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch ' +\n 'soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read',\n built_in: 'alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint ' +\n 'dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl ' +\n 'algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama ' +\n 'iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod ' +\n 'qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log ' +\n 'log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate ' +\n 'adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product ' +\n 'eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul ' +\n 'maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product ' +\n 'radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind ' +\n 'set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer ' +\n 'dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ' +\n 'ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode ' +\n 'is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of' +\n 'acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 ' +\n 'atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits ' +\n 'bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr ' +\n 'num_images parity popcnt poppar shifta shiftl shiftr this_image ' +\n // IRPF90 special built_ins\n 'IRP_ALIGN irp_here'\n };\n return {\n case_insensitive: true,\n keywords: F_KEYWORDS,\n illegal: /\\/\\*/,\n contains: [\n hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'string', relevance: 0}),\n {\n className: 'function',\n beginKeywords: 'subroutine function program',\n illegal: '[${=\\\\n]',\n contains: [hljs.UNDERSCORE_TITLE_MODE, PARAMS]\n },\n hljs.COMMENT('!', '$', {relevance: 0}),\n hljs.COMMENT('begin_doc', 'end_doc', {relevance: 10}),\n {\n className: 'number',\n begin: '(?=\\\\b|\\\\+|\\\\-|\\\\.)(?=\\\\.\\\\d|\\\\d)(?:\\\\d+)?(?:\\\\.?\\\\d*)(?:[de][+-]?\\\\d+)?\\\\b\\\\.?',\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n // Определение идентификаторов\n var UNDERSCORE_IDENT_RE = \"[A-Za-zА-Яа-яёЁ_!][A-Za-zА-Яа-яёЁ_0-9]*\";\n\n // Определение имен функций\n var FUNCTION_NAME_IDENT_RE = \"[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*\";\n\n // keyword : ключевые слова\n var KEYWORD =\n \"and и else иначе endexcept endfinally endforeach конецвсе endif конецесли endwhile конецпока \" +\n \"except exitfor finally foreach все if если in в not не or или try while пока \";\n\n // SYSRES Constants\n var sysres_constants =\n \"SYSRES_CONST_ACCES_RIGHT_TYPE_EDIT \" +\n \"SYSRES_CONST_ACCES_RIGHT_TYPE_FULL \" +\n \"SYSRES_CONST_ACCES_RIGHT_TYPE_VIEW \" +\n \"SYSRES_CONST_ACCESS_MODE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_NO_ACCESS_VIEW \" +\n \"SYSRES_CONST_ACCESS_NO_ACCESS_VIEW_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_VIEW \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_VIEW_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_TYPE_CHANGE \" +\n \"SYSRES_CONST_ACCESS_TYPE_CHANGE_CODE \" +\n \"SYSRES_CONST_ACCESS_TYPE_EXISTS \" +\n \"SYSRES_CONST_ACCESS_TYPE_EXISTS_CODE \" +\n \"SYSRES_CONST_ACCESS_TYPE_FULL \" +\n \"SYSRES_CONST_ACCESS_TYPE_FULL_CODE \" +\n \"SYSRES_CONST_ACCESS_TYPE_VIEW \" +\n \"SYSRES_CONST_ACCESS_TYPE_VIEW_CODE \" +\n \"SYSRES_CONST_ACTION_TYPE_ABORT \" +\n \"SYSRES_CONST_ACTION_TYPE_ACCEPT \" +\n \"SYSRES_CONST_ACTION_TYPE_ACCESS_RIGHTS \" +\n \"SYSRES_CONST_ACTION_TYPE_ADD_ATTACHMENT \" +\n \"SYSRES_CONST_ACTION_TYPE_CHANGE_CARD \" +\n \"SYSRES_CONST_ACTION_TYPE_CHANGE_KIND \" +\n \"SYSRES_CONST_ACTION_TYPE_CHANGE_STORAGE \" +\n \"SYSRES_CONST_ACTION_TYPE_CONTINUE \" +\n \"SYSRES_CONST_ACTION_TYPE_COPY \" +\n \"SYSRES_CONST_ACTION_TYPE_CREATE \" +\n \"SYSRES_CONST_ACTION_TYPE_CREATE_VERSION \" +\n \"SYSRES_CONST_ACTION_TYPE_DELETE \" +\n \"SYSRES_CONST_ACTION_TYPE_DELETE_ATTACHMENT \" +\n \"SYSRES_CONST_ACTION_TYPE_DELETE_VERSION \" +\n \"SYSRES_CONST_ACTION_TYPE_DISABLE_DELEGATE_ACCESS_RIGHTS \" +\n \"SYSRES_CONST_ACTION_TYPE_ENABLE_DELEGATE_ACCESS_RIGHTS \" +\n \"SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE \" +\n \"SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE_AND_PASSWORD \" +\n \"SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_PASSWORD \" +\n \"SYSRES_CONST_ACTION_TYPE_EXPORT_WITH_LOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_EXPORT_WITHOUT_LOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_IMPORT_WITH_UNLOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_IMPORT_WITHOUT_UNLOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_LIFE_CYCLE_STAGE \" +\n \"SYSRES_CONST_ACTION_TYPE_LOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_LOCK_FOR_SERVER \" +\n \"SYSRES_CONST_ACTION_TYPE_LOCK_MODIFY \" +\n \"SYSRES_CONST_ACTION_TYPE_MARK_AS_READED \" +\n \"SYSRES_CONST_ACTION_TYPE_MARK_AS_UNREADED \" +\n \"SYSRES_CONST_ACTION_TYPE_MODIFY \" +\n \"SYSRES_CONST_ACTION_TYPE_MODIFY_CARD \" +\n \"SYSRES_CONST_ACTION_TYPE_MOVE_TO_ARCHIVE \" +\n \"SYSRES_CONST_ACTION_TYPE_OFF_ENCRYPTION \" +\n \"SYSRES_CONST_ACTION_TYPE_PASSWORD_CHANGE \" +\n \"SYSRES_CONST_ACTION_TYPE_PERFORM \" +\n \"SYSRES_CONST_ACTION_TYPE_RECOVER_FROM_LOCAL_COPY \" +\n \"SYSRES_CONST_ACTION_TYPE_RESTART \" +\n \"SYSRES_CONST_ACTION_TYPE_RESTORE_FROM_ARCHIVE \" +\n \"SYSRES_CONST_ACTION_TYPE_REVISION \" +\n \"SYSRES_CONST_ACTION_TYPE_SEND_BY_MAIL \" +\n \"SYSRES_CONST_ACTION_TYPE_SIGN \" +\n \"SYSRES_CONST_ACTION_TYPE_START \" +\n \"SYSRES_CONST_ACTION_TYPE_UNLOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_UNLOCK_FROM_SERVER \" +\n \"SYSRES_CONST_ACTION_TYPE_VERSION_STATE \" +\n \"SYSRES_CONST_ACTION_TYPE_VERSION_VISIBILITY \" +\n \"SYSRES_CONST_ACTION_TYPE_VIEW \" +\n \"SYSRES_CONST_ACTION_TYPE_VIEW_SHADOW_COPY \" +\n \"SYSRES_CONST_ACTION_TYPE_WORKFLOW_DESCRIPTION_MODIFY \" +\n \"SYSRES_CONST_ACTION_TYPE_WRITE_HISTORY \" +\n \"SYSRES_CONST_ACTIVE_VERSION_STATE_PICK_VALUE \" +\n \"SYSRES_CONST_ADD_REFERENCE_MODE_NAME \" +\n \"SYSRES_CONST_ADDITION_REQUISITE_CODE \" +\n \"SYSRES_CONST_ADDITIONAL_PARAMS_REQUISITE_CODE \" +\n \"SYSRES_CONST_ADITIONAL_JOB_END_DATE_REQUISITE_NAME \" +\n \"SYSRES_CONST_ADITIONAL_JOB_READ_REQUISITE_NAME \" +\n \"SYSRES_CONST_ADITIONAL_JOB_START_DATE_REQUISITE_NAME \" +\n \"SYSRES_CONST_ADITIONAL_JOB_STATE_REQUISITE_NAME \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE_ACTION \" +\n \"SYSRES_CONST_ALL_ACCEPT_CONDITION_RUS \" +\n \"SYSRES_CONST_ALL_USERS_GROUP \" +\n \"SYSRES_CONST_ALL_USERS_GROUP_NAME \" +\n \"SYSRES_CONST_ALL_USERS_SERVER_GROUP_NAME \" +\n \"SYSRES_CONST_ALLOWED_ACCESS_TYPE_CODE \" +\n \"SYSRES_CONST_ALLOWED_ACCESS_TYPE_NAME \" +\n \"SYSRES_CONST_APP_VIEWER_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_APPROVING_SIGNATURE_NAME \" +\n \"SYSRES_CONST_APPROVING_SIGNATURE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE \" +\n \"SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE_CODE \" +\n \"SYSRES_CONST_ATTACH_TYPE_COMPONENT_TOKEN \" +\n \"SYSRES_CONST_ATTACH_TYPE_DOC \" +\n \"SYSRES_CONST_ATTACH_TYPE_EDOC \" +\n \"SYSRES_CONST_ATTACH_TYPE_FOLDER \" +\n \"SYSRES_CONST_ATTACH_TYPE_JOB \" +\n \"SYSRES_CONST_ATTACH_TYPE_REFERENCE \" +\n \"SYSRES_CONST_ATTACH_TYPE_TASK \" +\n \"SYSRES_CONST_AUTH_ENCODED_PASSWORD \" +\n \"SYSRES_CONST_AUTH_ENCODED_PASSWORD_CODE \" +\n \"SYSRES_CONST_AUTH_NOVELL \" +\n \"SYSRES_CONST_AUTH_PASSWORD \" +\n \"SYSRES_CONST_AUTH_PASSWORD_CODE \" +\n \"SYSRES_CONST_AUTH_WINDOWS \" +\n \"SYSRES_CONST_AUTHENTICATING_SIGNATURE_NAME \" +\n \"SYSRES_CONST_AUTHENTICATING_SIGNATURE_REQUISITE_CODE \" +\n \"SYSRES_CONST_AUTO_ENUM_METHOD_FLAG \" +\n \"SYSRES_CONST_AUTO_NUMERATION_CODE \" +\n \"SYSRES_CONST_AUTO_STRONG_ENUM_METHOD_FLAG \" +\n \"SYSRES_CONST_AUTOTEXT_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_TEXT_REQUISITE_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_ALL \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_ALL_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_SIGN \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_SIGN_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_WORK \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_WORK_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USE_ANYWHERE_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USE_ON_SIGNING_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USE_ON_WORK_CODE \" +\n \"SYSRES_CONST_BEGIN_DATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_BLACK_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_BLUE_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_BTN_PART \" +\n \"SYSRES_CONST_CALCULATED_ROLE_TYPE_CODE \" +\n \"SYSRES_CONST_CALL_TYPE_VARIABLE_BUTTON_VALUE \" +\n \"SYSRES_CONST_CALL_TYPE_VARIABLE_PROGRAM_VALUE \" +\n \"SYSRES_CONST_CANCEL_MESSAGE_FUNCTION_RESULT \" +\n \"SYSRES_CONST_CARD_PART \" +\n \"SYSRES_CONST_CARD_REFERENCE_MODE_NAME \" +\n \"SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_ENCRYPT_VALUE \" +\n \"SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_AND_ENCRYPT_VALUE \" +\n \"SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_VALUE \" +\n \"SYSRES_CONST_CHECK_PARAM_VALUE_DATE_PARAM_TYPE \" +\n \"SYSRES_CONST_CHECK_PARAM_VALUE_FLOAT_PARAM_TYPE \" +\n \"SYSRES_CONST_CHECK_PARAM_VALUE_INTEGER_PARAM_TYPE \" +\n \"SYSRES_CONST_CHECK_PARAM_VALUE_PICK_PARAM_TYPE \" +\n \"SYSRES_CONST_CHECK_PARAM_VALUE_REEFRENCE_PARAM_TYPE \" +\n \"SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_FEMININE \" +\n \"SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_MASCULINE \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_ADMIN \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_DEVELOPER \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_DOCS \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_EDOC_CARDS \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_EXTERNAL_EXECUTABLE \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_OTHER \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_REFERENCE \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_REPORT \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_SCRIPT \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_URL \" +\n \"SYSRES_CONST_CODE_REQUISITE_ACCESS \" +\n \"SYSRES_CONST_CODE_REQUISITE_CODE \" +\n \"SYSRES_CONST_CODE_REQUISITE_COMPONENT \" +\n \"SYSRES_CONST_CODE_REQUISITE_DESCRIPTION \" +\n \"SYSRES_CONST_CODE_REQUISITE_EXCLUDE_COMPONENT \" +\n \"SYSRES_CONST_CODE_REQUISITE_RECORD \" +\n \"SYSRES_CONST_COMMENT_REQ_CODE \" +\n \"SYSRES_CONST_COMMON_SETTINGS_REQUISITE_CODE \" +\n \"SYSRES_CONST_COMP_CODE_GRD \" +\n \"SYSRES_CONST_COMPONENT_GROUP_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_COMPONENT_TYPE_ADMIN_COMPONENTS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_DEVELOPER_COMPONENTS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_DOCS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_EDOC_CARDS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_EDOCS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_EXTERNAL_EXECUTABLE \" +\n \"SYSRES_CONST_COMPONENT_TYPE_OTHER \" +\n \"SYSRES_CONST_COMPONENT_TYPE_REFERENCE_TYPES \" +\n \"SYSRES_CONST_COMPONENT_TYPE_REFERENCES \" +\n \"SYSRES_CONST_COMPONENT_TYPE_REPORTS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_SCRIPTS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_URL \" +\n \"SYSRES_CONST_COMPONENTS_REMOTE_SERVERS_VIEW_CODE \" +\n \"SYSRES_CONST_CONDITION_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_CONST_FIRM_STATUS_COMMON \" +\n \"SYSRES_CONST_CONST_FIRM_STATUS_INDIVIDUAL \" +\n \"SYSRES_CONST_CONST_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_CONST_POSITIVE_VALUE \" +\n \"SYSRES_CONST_CONST_SERVER_STATUS_DONT_REPLICATE \" +\n \"SYSRES_CONST_CONST_SERVER_STATUS_REPLICATE \" +\n \"SYSRES_CONST_CONTENTS_REQUISITE_CODE \" +\n \"SYSRES_CONST_DATA_TYPE_BOOLEAN \" +\n \"SYSRES_CONST_DATA_TYPE_DATE \" +\n \"SYSRES_CONST_DATA_TYPE_FLOAT \" +\n \"SYSRES_CONST_DATA_TYPE_INTEGER \" +\n \"SYSRES_CONST_DATA_TYPE_PICK \" +\n \"SYSRES_CONST_DATA_TYPE_REFERENCE \" +\n \"SYSRES_CONST_DATA_TYPE_STRING \" +\n \"SYSRES_CONST_DATA_TYPE_TEXT \" +\n \"SYSRES_CONST_DATA_TYPE_VARIANT \" +\n \"SYSRES_CONST_DATE_CLOSE_REQ_CODE \" +\n \"SYSRES_CONST_DATE_FORMAT_DATE_ONLY_CHAR \" +\n \"SYSRES_CONST_DATE_OPEN_REQ_CODE \" +\n \"SYSRES_CONST_DATE_REQUISITE \" +\n \"SYSRES_CONST_DATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_DATE_REQUISITE_NAME \" +\n \"SYSRES_CONST_DATE_REQUISITE_TYPE \" +\n \"SYSRES_CONST_DATE_TYPE_CHAR \" +\n \"SYSRES_CONST_DATETIME_FORMAT_VALUE \" +\n \"SYSRES_CONST_DEA_ACCESS_RIGHTS_ACTION_CODE \" +\n \"SYSRES_CONST_DESCRIPTION_LOCALIZE_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_DESCRIPTION_REQUISITE_CODE \" +\n \"SYSRES_CONST_DET1_PART \" +\n \"SYSRES_CONST_DET2_PART \" +\n \"SYSRES_CONST_DET3_PART \" +\n \"SYSRES_CONST_DET4_PART \" +\n \"SYSRES_CONST_DET5_PART \" +\n \"SYSRES_CONST_DET6_PART \" +\n \"SYSRES_CONST_DETAIL_DATASET_KEY_REQUISITE_CODE \" +\n \"SYSRES_CONST_DETAIL_PICK_REQUISITE_CODE \" +\n \"SYSRES_CONST_DETAIL_REQ_CODE \" +\n \"SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_CODE \" +\n \"SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_NAME \" +\n \"SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_CODE \" +\n \"SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_NAME \" +\n \"SYSRES_CONST_DOCUMENT_STORAGES_CODE \" +\n \"SYSRES_CONST_DOCUMENT_TEMPLATES_TYPE_NAME \" +\n \"SYSRES_CONST_DOUBLE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITOR_CLOSE_FILE_OBSERV_TYPE_CODE \" +\n \"SYSRES_CONST_EDITOR_CLOSE_PROCESS_OBSERV_TYPE_CODE \" +\n \"SYSRES_CONST_EDITOR_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_APPLICATION_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_CREATE_SEVERAL_PROCESSES_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_EXTENSION_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_OBSERVER_BY_PROCESS_TYPE \" +\n \"SYSRES_CONST_EDITORS_REFERENCE_CODE \" +\n \"SYSRES_CONST_EDITORS_REPLACE_SPEC_CHARS_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_USE_PLUGINS_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_VIEW_DOCUMENT_OPENED_TO_EDIT_CODE \" +\n \"SYSRES_CONST_EDOC_CARD_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_CARD_TYPES_LINK_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_CERTIFICATE_AND_PASSWORD_ENCODE_CODE \" +\n \"SYSRES_CONST_EDOC_CERTIFICATE_ENCODE_CODE \" +\n \"SYSRES_CONST_EDOC_DATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_KIND_REFERENCE_CODE \" +\n \"SYSRES_CONST_EDOC_KINDS_BY_TEMPLATE_ACTION_CODE \" +\n \"SYSRES_CONST_EDOC_MANAGE_ACCESS_CODE \" +\n \"SYSRES_CONST_EDOC_NONE_ENCODE_CODE \" +\n \"SYSRES_CONST_EDOC_NUMBER_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_PASSWORD_ENCODE_CODE \" +\n \"SYSRES_CONST_EDOC_READONLY_ACCESS_CODE \" +\n \"SYSRES_CONST_EDOC_SHELL_LIFE_TYPE_VIEW_VALUE \" +\n \"SYSRES_CONST_EDOC_SIZE_RESTRICTION_PRIORITY_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_CHECK_ACCESS_RIGHTS_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_COMPUTER_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_DATABASE_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_EDIT_IN_STORAGE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_LOCAL_PATH_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_SHARED_SOURCE_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_TEMPLATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_TYPES_REFERENCE_CODE \" +\n \"SYSRES_CONST_EDOC_VERSION_ACTIVE_STAGE_CODE \" +\n \"SYSRES_CONST_EDOC_VERSION_DESIGN_STAGE_CODE \" +\n \"SYSRES_CONST_EDOC_VERSION_OBSOLETE_STAGE_CODE \" +\n \"SYSRES_CONST_EDOC_WRITE_ACCES_CODE \" +\n \"SYSRES_CONST_EDOCUMENT_CARD_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE \" +\n \"SYSRES_CONST_ENCODE_CERTIFICATE_TYPE_CODE \" +\n \"SYSRES_CONST_END_DATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ENUMERATION_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EXECUTE_ACCESS_RIGHTS_TYPE_CODE \" +\n \"SYSRES_CONST_EXECUTIVE_FILE_STORAGE_TYPE \" +\n \"SYSRES_CONST_EXIST_CONST \" +\n \"SYSRES_CONST_EXIST_VALUE \" +\n \"SYSRES_CONST_EXPORT_LOCK_TYPE_ASK \" +\n \"SYSRES_CONST_EXPORT_LOCK_TYPE_WITH_LOCK \" +\n \"SYSRES_CONST_EXPORT_LOCK_TYPE_WITHOUT_LOCK \" +\n \"SYSRES_CONST_EXPORT_VERSION_TYPE_ASK \" +\n \"SYSRES_CONST_EXPORT_VERSION_TYPE_LAST \" +\n \"SYSRES_CONST_EXPORT_VERSION_TYPE_LAST_ACTIVE \" +\n \"SYSRES_CONST_EXTENSION_REQUISITE_CODE \" +\n \"SYSRES_CONST_FILTER_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_FILTER_REQUISITE_CODE \" +\n \"SYSRES_CONST_FILTER_TYPE_COMMON_CODE \" +\n \"SYSRES_CONST_FILTER_TYPE_COMMON_NAME \" +\n \"SYSRES_CONST_FILTER_TYPE_USER_CODE \" +\n \"SYSRES_CONST_FILTER_TYPE_USER_NAME \" +\n \"SYSRES_CONST_FILTER_VALUE_REQUISITE_NAME \" +\n \"SYSRES_CONST_FLOAT_NUMBER_FORMAT_CHAR \" +\n \"SYSRES_CONST_FLOAT_REQUISITE_TYPE \" +\n \"SYSRES_CONST_FOLDER_AUTHOR_VALUE \" +\n \"SYSRES_CONST_FOLDER_KIND_ANY_OBJECTS \" +\n \"SYSRES_CONST_FOLDER_KIND_COMPONENTS \" +\n \"SYSRES_CONST_FOLDER_KIND_EDOCS \" +\n \"SYSRES_CONST_FOLDER_KIND_JOBS \" +\n \"SYSRES_CONST_FOLDER_KIND_TASKS \" +\n \"SYSRES_CONST_FOLDER_TYPE_COMMON \" +\n \"SYSRES_CONST_FOLDER_TYPE_COMPONENT \" +\n \"SYSRES_CONST_FOLDER_TYPE_FAVORITES \" +\n \"SYSRES_CONST_FOLDER_TYPE_INBOX \" +\n \"SYSRES_CONST_FOLDER_TYPE_OUTBOX \" +\n \"SYSRES_CONST_FOLDER_TYPE_QUICK_LAUNCH \" +\n \"SYSRES_CONST_FOLDER_TYPE_SEARCH \" +\n \"SYSRES_CONST_FOLDER_TYPE_SHORTCUTS \" +\n \"SYSRES_CONST_FOLDER_TYPE_USER \" +\n \"SYSRES_CONST_FROM_DICTIONARY_ENUM_METHOD_FLAG \" +\n \"SYSRES_CONST_FULL_SUBSTITUTE_TYPE \" +\n \"SYSRES_CONST_FULL_SUBSTITUTE_TYPE_CODE \" +\n \"SYSRES_CONST_FUNCTION_CANCEL_RESULT \" +\n \"SYSRES_CONST_FUNCTION_CATEGORY_SYSTEM \" +\n \"SYSRES_CONST_FUNCTION_CATEGORY_USER \" +\n \"SYSRES_CONST_FUNCTION_FAILURE_RESULT \" +\n \"SYSRES_CONST_FUNCTION_SAVE_RESULT \" +\n \"SYSRES_CONST_GENERATED_REQUISITE \" +\n \"SYSRES_CONST_GREEN_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_GROUP_ACCOUNT_TYPE_VALUE_CODE \" +\n \"SYSRES_CONST_GROUP_CATEGORY_NORMAL_CODE \" +\n \"SYSRES_CONST_GROUP_CATEGORY_NORMAL_NAME \" +\n \"SYSRES_CONST_GROUP_CATEGORY_SERVICE_CODE \" +\n \"SYSRES_CONST_GROUP_CATEGORY_SERVICE_NAME \" +\n \"SYSRES_CONST_GROUP_COMMON_CATEGORY_FIELD_VALUE \" +\n \"SYSRES_CONST_GROUP_FULL_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUP_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUP_RIGHTS_T_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUP_SERVER_CODES_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUP_SERVER_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUP_SERVICE_CATEGORY_FIELD_VALUE \" +\n \"SYSRES_CONST_GROUP_USER_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUPS_REFERENCE_CODE \" +\n \"SYSRES_CONST_GROUPS_REQUISITE_CODE \" +\n \"SYSRES_CONST_HIDDEN_MODE_NAME \" +\n \"SYSRES_CONST_HIGH_LVL_REQUISITE_CODE \" +\n \"SYSRES_CONST_HISTORY_ACTION_CREATE_CODE \" +\n \"SYSRES_CONST_HISTORY_ACTION_DELETE_CODE \" +\n \"SYSRES_CONST_HISTORY_ACTION_EDIT_CODE \" +\n \"SYSRES_CONST_HOUR_CHAR \" +\n \"SYSRES_CONST_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_IDSPS_REQUISITE_CODE \" +\n \"SYSRES_CONST_IMAGE_MODE_COLOR \" +\n \"SYSRES_CONST_IMAGE_MODE_GREYSCALE \" +\n \"SYSRES_CONST_IMAGE_MODE_MONOCHROME \" +\n \"SYSRES_CONST_IMPORTANCE_HIGH \" +\n \"SYSRES_CONST_IMPORTANCE_LOW \" +\n \"SYSRES_CONST_IMPORTANCE_NORMAL \" +\n \"SYSRES_CONST_IN_DESIGN_VERSION_STATE_PICK_VALUE \" +\n \"SYSRES_CONST_INCOMING_WORK_RULE_TYPE_CODE \" +\n \"SYSRES_CONST_INT_REQUISITE \" +\n \"SYSRES_CONST_INT_REQUISITE_TYPE \" +\n \"SYSRES_CONST_INTEGER_NUMBER_FORMAT_CHAR \" +\n \"SYSRES_CONST_INTEGER_TYPE_CHAR \" +\n \"SYSRES_CONST_IS_GENERATED_REQUISITE_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_IS_PUBLIC_ROLE_REQUISITE_CODE \" +\n \"SYSRES_CONST_IS_REMOTE_USER_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_IS_REMOTE_USER_POSITIVE_VALUE \" +\n \"SYSRES_CONST_IS_STORED_REQUISITE_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_IS_STORED_REQUISITE_STORED_VALUE \" +\n \"SYSRES_CONST_ITALIC_LIFE_CYCLE_STAGE_DRAW_STYLE \" +\n \"SYSRES_CONST_JOB_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_JOB_KIND_CONTROL_JOB \" +\n \"SYSRES_CONST_JOB_KIND_JOB \" +\n \"SYSRES_CONST_JOB_KIND_NOTICE \" +\n \"SYSRES_CONST_JOB_STATE_ABORTED \" +\n \"SYSRES_CONST_JOB_STATE_COMPLETE \" +\n \"SYSRES_CONST_JOB_STATE_WORKING \" +\n \"SYSRES_CONST_KIND_REQUISITE_CODE \" +\n \"SYSRES_CONST_KIND_REQUISITE_NAME \" +\n \"SYSRES_CONST_KINDS_CREATE_SHADOW_COPIES_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_DEFAULT_EDOC_LIFE_STAGE_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_ALL_TEPLATES_ALLOWED_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_ALLOW_LIFE_CYCLE_STAGE_CHANGING_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_ALLOW_MULTIPLE_ACTIVE_VERSIONS_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_SHARE_ACCES_RIGHTS_BY_DEFAULT_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_TEMPLATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_SIGNERS_REQUISITES_CODE \" +\n \"SYSRES_CONST_KOD_INPUT_TYPE \" +\n \"SYSRES_CONST_LAST_UPDATE_DATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_LIFE_CYCLE_START_STAGE_REQUISITE_CODE \" +\n \"SYSRES_CONST_LILAC_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_COMPONENT \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_DOCUMENT \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_EDOC \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_FOLDER \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_JOB \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_REFERENCE \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_TASK \" +\n \"SYSRES_CONST_LINK_REF_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_LIST_REFERENCE_MODE_NAME \" +\n \"SYSRES_CONST_LOCALIZATION_DICTIONARY_MAIN_VIEW_CODE \" +\n \"SYSRES_CONST_MAIN_VIEW_CODE \" +\n \"SYSRES_CONST_MANUAL_ENUM_METHOD_FLAG \" +\n \"SYSRES_CONST_MASTER_COMP_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_MASTER_TABLE_REC_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_MAXIMIZED_MODE_NAME \" +\n \"SYSRES_CONST_ME_VALUE \" +\n \"SYSRES_CONST_MESSAGE_ATTENTION_CAPTION \" +\n \"SYSRES_CONST_MESSAGE_CONFIRMATION_CAPTION \" +\n \"SYSRES_CONST_MESSAGE_ERROR_CAPTION \" +\n \"SYSRES_CONST_MESSAGE_INFORMATION_CAPTION \" +\n \"SYSRES_CONST_MINIMIZED_MODE_NAME \" +\n \"SYSRES_CONST_MINUTE_CHAR \" +\n \"SYSRES_CONST_MODULE_REQUISITE_CODE \" +\n \"SYSRES_CONST_MONITORING_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_MONTH_FORMAT_VALUE \" +\n \"SYSRES_CONST_NAME_LOCALIZE_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_NAME_SINGULAR_REQUISITE_CODE \" +\n \"SYSRES_CONST_NAMEAN_INPUT_TYPE \" +\n \"SYSRES_CONST_NEGATIVE_PICK_VALUE \" +\n \"SYSRES_CONST_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_NO \" +\n \"SYSRES_CONST_NO_PICK_VALUE \" +\n \"SYSRES_CONST_NO_SIGNATURE_REQUISITE_CODE \" +\n \"SYSRES_CONST_NO_VALUE \" +\n \"SYSRES_CONST_NONE_ACCESS_RIGHTS_TYPE_CODE \" +\n \"SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE \" +\n \"SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE_MASCULINE \" +\n \"SYSRES_CONST_NORMAL_ACCESS_RIGHTS_TYPE_CODE \" +\n \"SYSRES_CONST_NORMAL_LIFE_CYCLE_STAGE_DRAW_STYLE \" +\n \"SYSRES_CONST_NORMAL_MODE_NAME \" +\n \"SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_CODE \" +\n \"SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_NAME \" +\n \"SYSRES_CONST_NOTE_REQUISITE_CODE \" +\n \"SYSRES_CONST_NOTICE_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_NUM_REQUISITE \" +\n \"SYSRES_CONST_NUM_STR_REQUISITE_CODE \" +\n \"SYSRES_CONST_NUMERATION_AUTO_NOT_STRONG \" +\n \"SYSRES_CONST_NUMERATION_AUTO_STRONG \" +\n \"SYSRES_CONST_NUMERATION_FROM_DICTONARY \" +\n \"SYSRES_CONST_NUMERATION_MANUAL \" +\n \"SYSRES_CONST_NUMERIC_TYPE_CHAR \" +\n \"SYSRES_CONST_NUMREQ_REQUISITE_CODE \" +\n \"SYSRES_CONST_OBSOLETE_VERSION_STATE_PICK_VALUE \" +\n \"SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE \" +\n \"SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_CODE \" +\n \"SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_FEMININE \" +\n \"SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_MASCULINE \" +\n \"SYSRES_CONST_OPTIONAL_FORM_COMP_REQCODE_PREFIX \" +\n \"SYSRES_CONST_ORANGE_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_ORIGINALREF_REQUISITE_CODE \" +\n \"SYSRES_CONST_OURFIRM_REF_CODE \" +\n \"SYSRES_CONST_OURFIRM_REQUISITE_CODE \" +\n \"SYSRES_CONST_OURFIRM_VAR \" +\n \"SYSRES_CONST_OUTGOING_WORK_RULE_TYPE_CODE \" +\n \"SYSRES_CONST_PICK_NEGATIVE_RESULT \" +\n \"SYSRES_CONST_PICK_POSITIVE_RESULT \" +\n \"SYSRES_CONST_PICK_REQUISITE \" +\n \"SYSRES_CONST_PICK_REQUISITE_TYPE \" +\n \"SYSRES_CONST_PICK_TYPE_CHAR \" +\n \"SYSRES_CONST_PLAN_STATUS_REQUISITE_CODE \" +\n \"SYSRES_CONST_PLATFORM_VERSION_COMMENT \" +\n \"SYSRES_CONST_PLUGINS_SETTINGS_DESCRIPTION_REQUISITE_CODE \" +\n \"SYSRES_CONST_POSITIVE_PICK_VALUE \" +\n \"SYSRES_CONST_POWER_TO_CREATE_ACTION_CODE \" +\n \"SYSRES_CONST_POWER_TO_SIGN_ACTION_CODE \" +\n \"SYSRES_CONST_PRIORITY_REQUISITE_CODE \" +\n \"SYSRES_CONST_QUALIFIED_TASK_TYPE \" +\n \"SYSRES_CONST_QUALIFIED_TASK_TYPE_CODE \" +\n \"SYSRES_CONST_RECSTAT_REQUISITE_CODE \" +\n \"SYSRES_CONST_RED_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_REF_ID_T_REF_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_REF_REQUISITE \" +\n \"SYSRES_CONST_REF_REQUISITE_TYPE \" +\n \"SYSRES_CONST_REF_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE \" +\n \"SYSRES_CONST_REFERENCE_RECORD_HISTORY_CREATE_ACTION_CODE \" +\n \"SYSRES_CONST_REFERENCE_RECORD_HISTORY_DELETE_ACTION_CODE \" +\n \"SYSRES_CONST_REFERENCE_RECORD_HISTORY_MODIFY_ACTION_CODE \" +\n \"SYSRES_CONST_REFERENCE_TYPE_CHAR \" +\n \"SYSRES_CONST_REFERENCE_TYPE_REQUISITE_NAME \" +\n \"SYSRES_CONST_REFERENCES_ADD_PARAMS_REQUISITE_CODE \" +\n \"SYSRES_CONST_REFERENCES_DISPLAY_REQUISITE_REQUISITE_CODE \" +\n \"SYSRES_CONST_REMOTE_SERVER_STATUS_WORKING \" +\n \"SYSRES_CONST_REMOTE_SERVER_TYPE_MAIN \" +\n \"SYSRES_CONST_REMOTE_SERVER_TYPE_SECONDARY \" +\n \"SYSRES_CONST_REMOTE_USER_FLAG_VALUE_CODE \" +\n \"SYSRES_CONST_REPORT_APP_EDITOR_INTERNAL \" +\n \"SYSRES_CONST_REPORT_BASE_REPORT_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_REPORT_BASE_REPORT_REQUISITE_CODE \" +\n \"SYSRES_CONST_REPORT_SCRIPT_REQUISITE_CODE \" +\n \"SYSRES_CONST_REPORT_TEMPLATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_REPORT_VIEWER_CODE_REQUISITE_CODE \" +\n \"SYSRES_CONST_REQ_ALLOW_COMPONENT_DEFAULT_VALUE \" +\n \"SYSRES_CONST_REQ_ALLOW_RECORD_DEFAULT_VALUE \" +\n \"SYSRES_CONST_REQ_ALLOW_SERVER_COMPONENT_DEFAULT_VALUE \" +\n \"SYSRES_CONST_REQ_MODE_AVAILABLE_CODE \" +\n \"SYSRES_CONST_REQ_MODE_EDIT_CODE \" +\n \"SYSRES_CONST_REQ_MODE_HIDDEN_CODE \" +\n \"SYSRES_CONST_REQ_MODE_NOT_AVAILABLE_CODE \" +\n \"SYSRES_CONST_REQ_MODE_VIEW_CODE \" +\n \"SYSRES_CONST_REQ_NUMBER_REQUISITE_CODE \" +\n \"SYSRES_CONST_REQ_SECTION_VALUE \" +\n \"SYSRES_CONST_REQ_TYPE_VALUE \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_BY_UNIT \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_DATE_FULL \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_DATE_TIME \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_LEFT \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_RIGHT \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_WITHOUT_UNIT \" +\n \"SYSRES_CONST_REQUISITE_NUMBER_REQUISITE_CODE \" +\n \"SYSRES_CONST_REQUISITE_SECTION_ACTIONS \" +\n \"SYSRES_CONST_REQUISITE_SECTION_BUTTON \" +\n \"SYSRES_CONST_REQUISITE_SECTION_BUTTONS \" +\n \"SYSRES_CONST_REQUISITE_SECTION_CARD \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE10 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE11 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE12 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE13 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE14 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE15 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE16 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE17 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE18 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE19 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE2 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE20 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE21 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE22 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE23 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE24 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE3 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE4 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE5 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE6 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE7 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE8 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE9 \" +\n \"SYSRES_CONST_REQUISITES_PSEUDOREFERENCE_REQUISITE_NUMBER_REQUISITE_CODE \" +\n \"SYSRES_CONST_RIGHT_ALIGNMENT_CODE \" +\n \"SYSRES_CONST_ROLES_REFERENCE_CODE \" +\n \"SYSRES_CONST_ROUTE_STEP_AFTER_RUS \" +\n \"SYSRES_CONST_ROUTE_STEP_AND_CONDITION_RUS \" +\n \"SYSRES_CONST_ROUTE_STEP_OR_CONDITION_RUS \" +\n \"SYSRES_CONST_ROUTE_TYPE_COMPLEX \" +\n \"SYSRES_CONST_ROUTE_TYPE_PARALLEL \" +\n \"SYSRES_CONST_ROUTE_TYPE_SERIAL \" +\n \"SYSRES_CONST_SBDATASETDESC_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_SBDATASETDESC_POSITIVE_VALUE \" +\n \"SYSRES_CONST_SBVIEWSDESC_POSITIVE_VALUE \" +\n \"SYSRES_CONST_SCRIPT_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_SEARCH_BY_TEXT_REQUISITE_CODE \" +\n \"SYSRES_CONST_SEARCHES_COMPONENT_CONTENT \" +\n \"SYSRES_CONST_SEARCHES_CRITERIA_ACTION_NAME \" +\n \"SYSRES_CONST_SEARCHES_EDOC_CONTENT \" +\n \"SYSRES_CONST_SEARCHES_FOLDER_CONTENT \" +\n \"SYSRES_CONST_SEARCHES_JOB_CONTENT \" +\n \"SYSRES_CONST_SEARCHES_REFERENCE_CODE \" +\n \"SYSRES_CONST_SEARCHES_TASK_CONTENT \" +\n \"SYSRES_CONST_SECOND_CHAR \" +\n \"SYSRES_CONST_SECTION_REQUISITE_ACTIONS_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_CARD_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_CODE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_1_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_2_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_3_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_4_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_5_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_6_VALUE \" +\n \"SYSRES_CONST_SELECT_REFERENCE_MODE_NAME \" +\n \"SYSRES_CONST_SELECT_TYPE_SELECTABLE \" +\n \"SYSRES_CONST_SELECT_TYPE_SELECTABLE_ONLY_CHILD \" +\n \"SYSRES_CONST_SELECT_TYPE_SELECTABLE_WITH_CHILD \" +\n \"SYSRES_CONST_SELECT_TYPE_UNSLECTABLE \" +\n \"SYSRES_CONST_SERVER_TYPE_MAIN \" +\n \"SYSRES_CONST_SERVICE_USER_CATEGORY_FIELD_VALUE \" +\n \"SYSRES_CONST_SETTINGS_USER_REQUISITE_CODE \" +\n \"SYSRES_CONST_SIGNATURE_AND_ENCODE_CERTIFICATE_TYPE_CODE \" +\n \"SYSRES_CONST_SIGNATURE_CERTIFICATE_TYPE_CODE \" +\n \"SYSRES_CONST_SINGULAR_TITLE_REQUISITE_CODE \" +\n \"SYSRES_CONST_SQL_SERVER_AUTHENTIFICATION_FLAG_VALUE_CODE \" +\n \"SYSRES_CONST_SQL_SERVER_ENCODE_AUTHENTIFICATION_FLAG_VALUE_CODE \" +\n \"SYSRES_CONST_STANDART_ROUTE_REFERENCE_CODE \" +\n \"SYSRES_CONST_STANDART_ROUTE_REFERENCE_COMMENT_REQUISITE_CODE \" +\n \"SYSRES_CONST_STANDART_ROUTES_GROUPS_REFERENCE_CODE \" +\n \"SYSRES_CONST_STATE_REQ_NAME \" +\n \"SYSRES_CONST_STATE_REQUISITE_ACTIVE_VALUE \" +\n \"SYSRES_CONST_STATE_REQUISITE_CLOSED_VALUE \" +\n \"SYSRES_CONST_STATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_STATIC_ROLE_TYPE_CODE \" +\n \"SYSRES_CONST_STATUS_PLAN_DEFAULT_VALUE \" +\n \"SYSRES_CONST_STATUS_VALUE_AUTOCLEANING \" +\n \"SYSRES_CONST_STATUS_VALUE_BLUE_SQUARE \" +\n \"SYSRES_CONST_STATUS_VALUE_COMPLETE \" +\n \"SYSRES_CONST_STATUS_VALUE_GREEN_SQUARE \" +\n \"SYSRES_CONST_STATUS_VALUE_ORANGE_SQUARE \" +\n \"SYSRES_CONST_STATUS_VALUE_PURPLE_SQUARE \" +\n \"SYSRES_CONST_STATUS_VALUE_RED_SQUARE \" +\n \"SYSRES_CONST_STATUS_VALUE_SUSPEND \" +\n \"SYSRES_CONST_STATUS_VALUE_YELLOW_SQUARE \" +\n \"SYSRES_CONST_STDROUTE_SHOW_TO_USERS_REQUISITE_CODE \" +\n \"SYSRES_CONST_STORAGE_TYPE_FILE \" +\n \"SYSRES_CONST_STORAGE_TYPE_SQL_SERVER \" +\n \"SYSRES_CONST_STR_REQUISITE \" +\n \"SYSRES_CONST_STRIKEOUT_LIFE_CYCLE_STAGE_DRAW_STYLE \" +\n \"SYSRES_CONST_STRING_FORMAT_LEFT_ALIGN_CHAR \" +\n \"SYSRES_CONST_STRING_FORMAT_RIGHT_ALIGN_CHAR \" +\n \"SYSRES_CONST_STRING_REQUISITE_CODE \" +\n \"SYSRES_CONST_STRING_REQUISITE_TYPE \" +\n \"SYSRES_CONST_STRING_TYPE_CHAR \" +\n \"SYSRES_CONST_SUBSTITUTES_PSEUDOREFERENCE_CODE \" +\n \"SYSRES_CONST_SUBTASK_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_SYSTEM_SETTING_CURRENT_USER_PARAM_VALUE \" +\n \"SYSRES_CONST_SYSTEM_SETTING_EMPTY_VALUE_PARAM_VALUE \" +\n \"SYSRES_CONST_SYSTEM_VERSION_COMMENT \" +\n \"SYSRES_CONST_TASK_ACCESS_TYPE_ALL \" +\n \"SYSRES_CONST_TASK_ACCESS_TYPE_ALL_MEMBERS \" +\n \"SYSRES_CONST_TASK_ACCESS_TYPE_MANUAL \" +\n \"SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION \" +\n \"SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION_AND_PASSWORD \" +\n \"SYSRES_CONST_TASK_ENCODE_TYPE_NONE \" +\n \"SYSRES_CONST_TASK_ENCODE_TYPE_PASSWORD \" +\n \"SYSRES_CONST_TASK_ROUTE_ALL_CONDITION \" +\n \"SYSRES_CONST_TASK_ROUTE_AND_CONDITION \" +\n \"SYSRES_CONST_TASK_ROUTE_OR_CONDITION \" +\n \"SYSRES_CONST_TASK_STATE_ABORTED \" +\n \"SYSRES_CONST_TASK_STATE_COMPLETE \" +\n \"SYSRES_CONST_TASK_STATE_CONTINUED \" +\n \"SYSRES_CONST_TASK_STATE_CONTROL \" +\n \"SYSRES_CONST_TASK_STATE_INIT \" +\n \"SYSRES_CONST_TASK_STATE_WORKING \" +\n \"SYSRES_CONST_TASK_TITLE \" +\n \"SYSRES_CONST_TASK_TYPES_GROUPS_REFERENCE_CODE \" +\n \"SYSRES_CONST_TASK_TYPES_REFERENCE_CODE \" +\n \"SYSRES_CONST_TEMPLATES_REFERENCE_CODE \" +\n \"SYSRES_CONST_TEST_DATE_REQUISITE_NAME \" +\n \"SYSRES_CONST_TEST_DEV_DATABASE_NAME \" +\n \"SYSRES_CONST_TEST_DEV_SYSTEM_CODE \" +\n \"SYSRES_CONST_TEST_EDMS_DATABASE_NAME \" +\n \"SYSRES_CONST_TEST_EDMS_MAIN_CODE \" +\n \"SYSRES_CONST_TEST_EDMS_MAIN_DB_NAME \" +\n \"SYSRES_CONST_TEST_EDMS_SECOND_CODE \" +\n \"SYSRES_CONST_TEST_EDMS_SECOND_DB_NAME \" +\n \"SYSRES_CONST_TEST_EDMS_SYSTEM_CODE \" +\n \"SYSRES_CONST_TEST_NUMERIC_REQUISITE_NAME \" +\n \"SYSRES_CONST_TEXT_REQUISITE \" +\n \"SYSRES_CONST_TEXT_REQUISITE_CODE \" +\n \"SYSRES_CONST_TEXT_REQUISITE_TYPE \" +\n \"SYSRES_CONST_TEXT_TYPE_CHAR \" +\n \"SYSRES_CONST_TYPE_CODE_REQUISITE_CODE \" +\n \"SYSRES_CONST_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_UNDEFINED_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_UNITS_SECTION_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_UNITS_SECTION_REQUISITE_CODE \" +\n \"SYSRES_CONST_UNOPERATING_RECORD_FLAG_VALUE_CODE \" +\n \"SYSRES_CONST_UNSTORED_DATA_REQUISITE_CODE \" +\n \"SYSRES_CONST_UNSTORED_DATA_REQUISITE_NAME \" +\n \"SYSRES_CONST_USE_ACCESS_TYPE_CODE \" +\n \"SYSRES_CONST_USE_ACCESS_TYPE_NAME \" +\n \"SYSRES_CONST_USER_ACCOUNT_TYPE_VALUE_CODE \" +\n \"SYSRES_CONST_USER_ADDITIONAL_INFORMATION_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_AND_GROUP_ID_FROM_PSEUDOREFERENCE_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_CATEGORY_NORMAL \" +\n \"SYSRES_CONST_USER_CERTIFICATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_CERTIFICATE_STATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_CERTIFICATE_SUBJECT_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_CERTIFICATE_THUMBPRINT_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_COMMON_CATEGORY \" +\n \"SYSRES_CONST_USER_COMMON_CATEGORY_CODE \" +\n \"SYSRES_CONST_USER_FULL_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_GROUP_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_LOGIN_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_REMOTE_CONTROLLER_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_REMOTE_SYSTEM_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_RIGHTS_T_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_SERVER_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_SERVICE_CATEGORY \" +\n \"SYSRES_CONST_USER_SERVICE_CATEGORY_CODE \" +\n \"SYSRES_CONST_USER_STATUS_ADMINISTRATOR_CODE \" +\n \"SYSRES_CONST_USER_STATUS_ADMINISTRATOR_NAME \" +\n \"SYSRES_CONST_USER_STATUS_DEVELOPER_CODE \" +\n \"SYSRES_CONST_USER_STATUS_DEVELOPER_NAME \" +\n \"SYSRES_CONST_USER_STATUS_DISABLED_CODE \" +\n \"SYSRES_CONST_USER_STATUS_DISABLED_NAME \" +\n \"SYSRES_CONST_USER_STATUS_SYSTEM_DEVELOPER_CODE \" +\n \"SYSRES_CONST_USER_STATUS_USER_CODE \" +\n \"SYSRES_CONST_USER_STATUS_USER_NAME \" +\n \"SYSRES_CONST_USER_STATUS_USER_NAME_DEPRECATED \" +\n \"SYSRES_CONST_USER_TYPE_FIELD_VALUE_USER \" +\n \"SYSRES_CONST_USER_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_CONTROLLER_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_IS_MAIN_SERVER_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_REFERENCE_CODE \" +\n \"SYSRES_CONST_USERS_REGISTRATION_CERTIFICATES_ACTION_NAME \" +\n \"SYSRES_CONST_USERS_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_SYSTEM_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_USER_ACCESS_RIGHTS_TYPR_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_USER_AUTHENTICATION_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_USER_COMPONENT_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_USER_GROUP_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_VIEW_CERTIFICATES_ACTION_NAME \" +\n \"SYSRES_CONST_VIEW_DEFAULT_CODE \" +\n \"SYSRES_CONST_VIEW_DEFAULT_NAME \" +\n \"SYSRES_CONST_VIEWER_REQUISITE_CODE \" +\n \"SYSRES_CONST_WAITING_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_WIZARD_FORM_LABEL_TEST_STRING \" +\n \"SYSRES_CONST_WIZARD_QUERY_PARAM_HEIGHT_ETALON_STRING \" +\n \"SYSRES_CONST_WIZARD_REFERENCE_COMMENT_REQUISITE_CODE \" +\n \"SYSRES_CONST_WORK_RULES_DESCRIPTION_REQUISITE_CODE \" +\n \"SYSRES_CONST_WORK_TIME_CALENDAR_REFERENCE_CODE \" +\n \"SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE \" +\n \"SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE \" +\n \"SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE_RUS \" +\n \"SYSRES_CONST_WORK_WORKFLOW_SOFT_ROUTE_TYPE_VALUE_CODE_RUS \" +\n \"SYSRES_CONST_WORKFLOW_ROUTE_TYPR_HARD \" +\n \"SYSRES_CONST_WORKFLOW_ROUTE_TYPR_SOFT \" +\n \"SYSRES_CONST_XML_ENCODING \" +\n \"SYSRES_CONST_XREC_STAT_REQUISITE_CODE \" +\n \"SYSRES_CONST_XRECID_FIELD_NAME \" +\n \"SYSRES_CONST_YES \" +\n \"SYSRES_CONST_YES_NO_2_REQUISITE_CODE \" +\n \"SYSRES_CONST_YES_NO_REQUISITE_CODE \" +\n \"SYSRES_CONST_YES_NO_T_REF_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_YES_PICK_VALUE \" +\n \"SYSRES_CONST_YES_VALUE \";\n\n // Base constant\n var base_constants = \"CR FALSE nil NO_VALUE NULL TAB TRUE YES_VALUE \";\n\n // Base group name\n var base_group_name_constants =\n \"ADMINISTRATORS_GROUP_NAME CUSTOMIZERS_GROUP_NAME DEVELOPERS_GROUP_NAME SERVICE_USERS_GROUP_NAME \";\n\n // Decision block properties\n var decision_block_properties_constants =\n \"DECISION_BLOCK_FIRST_OPERAND_PROPERTY DECISION_BLOCK_NAME_PROPERTY DECISION_BLOCK_OPERATION_PROPERTY \" +\n \"DECISION_BLOCK_RESULT_TYPE_PROPERTY DECISION_BLOCK_SECOND_OPERAND_PROPERTY \";\n\n // File extension\n var file_extension_constants =\n \"ANY_FILE_EXTENTION COMPRESSED_DOCUMENT_EXTENSION EXTENDED_DOCUMENT_EXTENSION \" +\n \"SHORT_COMPRESSED_DOCUMENT_EXTENSION SHORT_EXTENDED_DOCUMENT_EXTENSION \";\n\n // Job block properties\n var job_block_properties_constants =\n \"JOB_BLOCK_ABORT_DEADLINE_PROPERTY \" +\n \"JOB_BLOCK_AFTER_FINISH_EVENT \" +\n \"JOB_BLOCK_AFTER_QUERY_PARAMETERS_EVENT \" +\n \"JOB_BLOCK_ATTACHMENT_PROPERTY \" +\n \"JOB_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY \" +\n \"JOB_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY \" +\n \"JOB_BLOCK_BEFORE_QUERY_PARAMETERS_EVENT \" +\n \"JOB_BLOCK_BEFORE_START_EVENT \" +\n \"JOB_BLOCK_CREATED_JOBS_PROPERTY \" +\n \"JOB_BLOCK_DEADLINE_PROPERTY \" +\n \"JOB_BLOCK_EXECUTION_RESULTS_PROPERTY \" +\n \"JOB_BLOCK_IS_PARALLEL_PROPERTY \" +\n \"JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY \" +\n \"JOB_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\n \"JOB_BLOCK_JOB_TEXT_PROPERTY \" +\n \"JOB_BLOCK_NAME_PROPERTY \" +\n \"JOB_BLOCK_NEED_SIGN_ON_PERFORM_PROPERTY \" +\n \"JOB_BLOCK_PERFORMER_PROPERTY \" +\n \"JOB_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY \" +\n \"JOB_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \" +\n \"JOB_BLOCK_SUBJECT_PROPERTY \";\n\n // Language code\n var language_code_constants = \"ENGLISH_LANGUAGE_CODE RUSSIAN_LANGUAGE_CODE \";\n\n // Launching external applications\n var launching_external_applications_constants =\n \"smHidden smMaximized smMinimized smNormal wmNo wmYes \";\n\n // Link kind\n var link_kind_constants =\n \"COMPONENT_TOKEN_LINK_KIND \" +\n \"DOCUMENT_LINK_KIND \" +\n \"EDOCUMENT_LINK_KIND \" +\n \"FOLDER_LINK_KIND \" +\n \"JOB_LINK_KIND \" +\n \"REFERENCE_LINK_KIND \" +\n \"TASK_LINK_KIND \";\n\n // Lock type\n var lock_type_constants =\n \"COMPONENT_TOKEN_LOCK_TYPE EDOCUMENT_VERSION_LOCK_TYPE \";\n\n // Monitor block properties\n var monitor_block_properties_constants =\n \"MONITOR_BLOCK_AFTER_FINISH_EVENT \" +\n \"MONITOR_BLOCK_BEFORE_START_EVENT \" +\n \"MONITOR_BLOCK_DEADLINE_PROPERTY \" +\n \"MONITOR_BLOCK_INTERVAL_PROPERTY \" +\n \"MONITOR_BLOCK_INTERVAL_TYPE_PROPERTY \" +\n \"MONITOR_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\n \"MONITOR_BLOCK_NAME_PROPERTY \" +\n \"MONITOR_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \" +\n \"MONITOR_BLOCK_SEARCH_SCRIPT_PROPERTY \";\n\n // Notice block properties\n var notice_block_properties_constants =\n \"NOTICE_BLOCK_AFTER_FINISH_EVENT \" +\n \"NOTICE_BLOCK_ATTACHMENT_PROPERTY \" +\n \"NOTICE_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY \" +\n \"NOTICE_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY \" +\n \"NOTICE_BLOCK_BEFORE_START_EVENT \" +\n \"NOTICE_BLOCK_CREATED_NOTICES_PROPERTY \" +\n \"NOTICE_BLOCK_DEADLINE_PROPERTY \" +\n \"NOTICE_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\n \"NOTICE_BLOCK_NAME_PROPERTY \" +\n \"NOTICE_BLOCK_NOTICE_TEXT_PROPERTY \" +\n \"NOTICE_BLOCK_PERFORMER_PROPERTY \" +\n \"NOTICE_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \" +\n \"NOTICE_BLOCK_SUBJECT_PROPERTY \";\n\n // Object events\n var object_events_constants =\n \"dseAfterCancel \" +\n \"dseAfterClose \" +\n \"dseAfterDelete \" +\n \"dseAfterDeleteOutOfTransaction \" +\n \"dseAfterInsert \" +\n \"dseAfterOpen \" +\n \"dseAfterScroll \" +\n \"dseAfterUpdate \" +\n \"dseAfterUpdateOutOfTransaction \" +\n \"dseBeforeCancel \" +\n \"dseBeforeClose \" +\n \"dseBeforeDelete \" +\n \"dseBeforeDetailUpdate \" +\n \"dseBeforeInsert \" +\n \"dseBeforeOpen \" +\n \"dseBeforeUpdate \" +\n \"dseOnAnyRequisiteChange \" +\n \"dseOnCloseRecord \" +\n \"dseOnDeleteError \" +\n \"dseOnOpenRecord \" +\n \"dseOnPrepareUpdate \" +\n \"dseOnUpdateError \" +\n \"dseOnUpdateRatifiedRecord \" +\n \"dseOnValidDelete \" +\n \"dseOnValidUpdate \" +\n \"reOnChange \" +\n \"reOnChangeValues \" +\n \"SELECTION_BEGIN_ROUTE_EVENT \" +\n \"SELECTION_END_ROUTE_EVENT \";\n\n // Object params\n var object_params_constants =\n \"CURRENT_PERIOD_IS_REQUIRED \" +\n \"PREVIOUS_CARD_TYPE_NAME \" +\n \"SHOW_RECORD_PROPERTIES_FORM \";\n\n // Other\n var other_constants =\n \"ACCESS_RIGHTS_SETTING_DIALOG_CODE \" +\n \"ADMINISTRATOR_USER_CODE \" +\n \"ANALYTIC_REPORT_TYPE \" +\n \"asrtHideLocal \" +\n \"asrtHideRemote \" +\n \"CALCULATED_ROLE_TYPE_CODE \" +\n \"COMPONENTS_REFERENCE_DEVELOPER_VIEW_CODE \" +\n \"DCTS_TEST_PROTOCOLS_FOLDER_PATH \" +\n \"E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED \" +\n \"E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED_BY_USER \" +\n \"E_EDOC_VERSION_ALREDY_SIGNED \" +\n \"E_EDOC_VERSION_ALREDY_SIGNED_BY_USER \" +\n \"EDOC_TYPES_CODE_REQUISITE_FIELD_NAME \" +\n \"EDOCUMENTS_ALIAS_NAME \" +\n \"FILES_FOLDER_PATH \" +\n \"FILTER_OPERANDS_DELIMITER \" +\n \"FILTER_OPERATIONS_DELIMITER \" +\n \"FORMCARD_NAME \" +\n \"FORMLIST_NAME \" +\n \"GET_EXTENDED_DOCUMENT_EXTENSION_CREATION_MODE \" +\n \"GET_EXTENDED_DOCUMENT_EXTENSION_IMPORT_MODE \" +\n \"INTEGRATED_REPORT_TYPE \" +\n \"IS_BUILDER_APPLICATION_ROLE \" +\n \"IS_BUILDER_APPLICATION_ROLE2 \" +\n \"IS_BUILDER_USERS \" +\n \"ISBSYSDEV \" +\n \"LOG_FOLDER_PATH \" +\n \"mbCancel \" +\n \"mbNo \" +\n \"mbNoToAll \" +\n \"mbOK \" +\n \"mbYes \" +\n \"mbYesToAll \" +\n \"MEMORY_DATASET_DESRIPTIONS_FILENAME \" +\n \"mrNo \" +\n \"mrNoToAll \" +\n \"mrYes \" +\n \"mrYesToAll \" +\n \"MULTIPLE_SELECT_DIALOG_CODE \" +\n \"NONOPERATING_RECORD_FLAG_FEMININE \" +\n \"NONOPERATING_RECORD_FLAG_MASCULINE \" +\n \"OPERATING_RECORD_FLAG_FEMININE \" +\n \"OPERATING_RECORD_FLAG_MASCULINE \" +\n \"PROFILING_SETTINGS_COMMON_SETTINGS_CODE_VALUE \" +\n \"PROGRAM_INITIATED_LOOKUP_ACTION \" +\n \"ratDelete \" +\n \"ratEdit \" +\n \"ratInsert \" +\n \"REPORT_TYPE \" +\n \"REQUIRED_PICK_VALUES_VARIABLE \" +\n \"rmCard \" +\n \"rmList \" +\n \"SBRTE_PROGID_DEV \" +\n \"SBRTE_PROGID_RELEASE \" +\n \"STATIC_ROLE_TYPE_CODE \" +\n \"SUPPRESS_EMPTY_TEMPLATE_CREATION \" +\n \"SYSTEM_USER_CODE \" +\n \"UPDATE_DIALOG_DATASET \" +\n \"USED_IN_OBJECT_HINT_PARAM \" +\n \"USER_INITIATED_LOOKUP_ACTION \" +\n \"USER_NAME_FORMAT \" +\n \"USER_SELECTION_RESTRICTIONS \" +\n \"WORKFLOW_TEST_PROTOCOLS_FOLDER_PATH \" +\n \"ELS_SUBTYPE_CONTROL_NAME \" +\n \"ELS_FOLDER_KIND_CONTROL_NAME \" +\n \"REPEAT_PROCESS_CURRENT_OBJECT_EXCEPTION_NAME \";\n\n // Privileges\n var privileges_constants =\n \"PRIVILEGE_COMPONENT_FULL_ACCESS \" +\n \"PRIVILEGE_DEVELOPMENT_EXPORT \" +\n \"PRIVILEGE_DEVELOPMENT_IMPORT \" +\n \"PRIVILEGE_DOCUMENT_DELETE \" +\n \"PRIVILEGE_ESD \" +\n \"PRIVILEGE_FOLDER_DELETE \" +\n \"PRIVILEGE_MANAGE_ACCESS_RIGHTS \" +\n \"PRIVILEGE_MANAGE_REPLICATION \" +\n \"PRIVILEGE_MANAGE_SESSION_SERVER \" +\n \"PRIVILEGE_OBJECT_FULL_ACCESS \" +\n \"PRIVILEGE_OBJECT_VIEW \" +\n \"PRIVILEGE_RESERVE_LICENSE \" +\n \"PRIVILEGE_SYSTEM_CUSTOMIZE \" +\n \"PRIVILEGE_SYSTEM_DEVELOP \" +\n \"PRIVILEGE_SYSTEM_INSTALL \" +\n \"PRIVILEGE_TASK_DELETE \" +\n \"PRIVILEGE_USER_PLUGIN_SETTINGS_CUSTOMIZE \" +\n \"PRIVILEGES_PSEUDOREFERENCE_CODE \";\n\n // Pseudoreference code\n var pseudoreference_code_constants =\n \"ACCESS_TYPES_PSEUDOREFERENCE_CODE \" +\n \"ALL_AVAILABLE_COMPONENTS_PSEUDOREFERENCE_CODE \" +\n \"ALL_AVAILABLE_PRIVILEGES_PSEUDOREFERENCE_CODE \" +\n \"ALL_REPLICATE_COMPONENTS_PSEUDOREFERENCE_CODE \" +\n \"AVAILABLE_DEVELOPERS_COMPONENTS_PSEUDOREFERENCE_CODE \" +\n \"COMPONENTS_PSEUDOREFERENCE_CODE \" +\n \"FILTRATER_SETTINGS_CONFLICTS_PSEUDOREFERENCE_CODE \" +\n \"GROUPS_PSEUDOREFERENCE_CODE \" +\n \"RECEIVE_PROTOCOL_PSEUDOREFERENCE_CODE \" +\n \"REFERENCE_REQUISITE_PSEUDOREFERENCE_CODE \" +\n \"REFERENCE_REQUISITES_PSEUDOREFERENCE_CODE \" +\n \"REFTYPES_PSEUDOREFERENCE_CODE \" +\n \"REPLICATION_SEANCES_DIARY_PSEUDOREFERENCE_CODE \" +\n \"SEND_PROTOCOL_PSEUDOREFERENCE_CODE \" +\n \"SUBSTITUTES_PSEUDOREFERENCE_CODE \" +\n \"SYSTEM_SETTINGS_PSEUDOREFERENCE_CODE \" +\n \"UNITS_PSEUDOREFERENCE_CODE \" +\n \"USERS_PSEUDOREFERENCE_CODE \" +\n \"VIEWERS_PSEUDOREFERENCE_CODE \";\n\n // Requisite ISBCertificateType values\n var requisite_ISBCertificateType_values_constants =\n \"CERTIFICATE_TYPE_ENCRYPT \" +\n \"CERTIFICATE_TYPE_SIGN \" +\n \"CERTIFICATE_TYPE_SIGN_AND_ENCRYPT \";\n\n // Requisite ISBEDocStorageType values\n var requisite_ISBEDocStorageType_values_constants =\n \"STORAGE_TYPE_FILE \" +\n \"STORAGE_TYPE_NAS_CIFS \" +\n \"STORAGE_TYPE_SAPERION \" +\n \"STORAGE_TYPE_SQL_SERVER \";\n\n // Requisite CompType2 values\n var requisite_compType2_values_constants =\n \"COMPTYPE2_REQUISITE_DOCUMENTS_VALUE \" +\n \"COMPTYPE2_REQUISITE_TASKS_VALUE \" +\n \"COMPTYPE2_REQUISITE_FOLDERS_VALUE \" +\n \"COMPTYPE2_REQUISITE_REFERENCES_VALUE \";\n\n // Requisite name\n var requisite_name_constants =\n \"SYSREQ_CODE \" +\n \"SYSREQ_COMPTYPE2 \" +\n \"SYSREQ_CONST_AVAILABLE_FOR_WEB \" +\n \"SYSREQ_CONST_COMMON_CODE \" +\n \"SYSREQ_CONST_COMMON_VALUE \" +\n \"SYSREQ_CONST_FIRM_CODE \" +\n \"SYSREQ_CONST_FIRM_STATUS \" +\n \"SYSREQ_CONST_FIRM_VALUE \" +\n \"SYSREQ_CONST_SERVER_STATUS \" +\n \"SYSREQ_CONTENTS \" +\n \"SYSREQ_DATE_OPEN \" +\n \"SYSREQ_DATE_CLOSE \" +\n \"SYSREQ_DESCRIPTION \" +\n \"SYSREQ_DESCRIPTION_LOCALIZE_ID \" +\n \"SYSREQ_DOUBLE \" +\n \"SYSREQ_EDOC_ACCESS_TYPE \" +\n \"SYSREQ_EDOC_AUTHOR \" +\n \"SYSREQ_EDOC_CREATED \" +\n \"SYSREQ_EDOC_DELEGATE_RIGHTS_REQUISITE_CODE \" +\n \"SYSREQ_EDOC_EDITOR \" +\n \"SYSREQ_EDOC_ENCODE_TYPE \" +\n \"SYSREQ_EDOC_ENCRYPTION_PLUGIN_NAME \" +\n \"SYSREQ_EDOC_ENCRYPTION_PLUGIN_VERSION \" +\n \"SYSREQ_EDOC_EXPORT_DATE \" +\n \"SYSREQ_EDOC_EXPORTER \" +\n \"SYSREQ_EDOC_KIND \" +\n \"SYSREQ_EDOC_LIFE_STAGE_NAME \" +\n \"SYSREQ_EDOC_LOCKED_FOR_SERVER_CODE \" +\n \"SYSREQ_EDOC_MODIFIED \" +\n \"SYSREQ_EDOC_NAME \" +\n \"SYSREQ_EDOC_NOTE \" +\n \"SYSREQ_EDOC_QUALIFIED_ID \" +\n \"SYSREQ_EDOC_SESSION_KEY \" +\n \"SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_NAME \" +\n \"SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_VERSION \" +\n \"SYSREQ_EDOC_SIGNATURE_TYPE \" +\n \"SYSREQ_EDOC_SIGNED \" +\n \"SYSREQ_EDOC_STORAGE \" +\n \"SYSREQ_EDOC_STORAGES_ARCHIVE_STORAGE \" +\n \"SYSREQ_EDOC_STORAGES_CHECK_RIGHTS \" +\n \"SYSREQ_EDOC_STORAGES_COMPUTER_NAME \" +\n \"SYSREQ_EDOC_STORAGES_EDIT_IN_STORAGE \" +\n \"SYSREQ_EDOC_STORAGES_EXECUTIVE_STORAGE \" +\n \"SYSREQ_EDOC_STORAGES_FUNCTION \" +\n \"SYSREQ_EDOC_STORAGES_INITIALIZED \" +\n \"SYSREQ_EDOC_STORAGES_LOCAL_PATH \" +\n \"SYSREQ_EDOC_STORAGES_SAPERION_DATABASE_NAME \" +\n \"SYSREQ_EDOC_STORAGES_SEARCH_BY_TEXT \" +\n \"SYSREQ_EDOC_STORAGES_SERVER_NAME \" +\n \"SYSREQ_EDOC_STORAGES_SHARED_SOURCE_NAME \" +\n \"SYSREQ_EDOC_STORAGES_TYPE \" +\n \"SYSREQ_EDOC_TEXT_MODIFIED \" +\n \"SYSREQ_EDOC_TYPE_ACT_CODE \" +\n \"SYSREQ_EDOC_TYPE_ACT_DESCRIPTION \" +\n \"SYSREQ_EDOC_TYPE_ACT_DESCRIPTION_LOCALIZE_ID \" +\n \"SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE \" +\n \"SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE_EXISTS \" +\n \"SYSREQ_EDOC_TYPE_ACT_SECTION \" +\n \"SYSREQ_EDOC_TYPE_ADD_PARAMS \" +\n \"SYSREQ_EDOC_TYPE_COMMENT \" +\n \"SYSREQ_EDOC_TYPE_EVENT_TEXT \" +\n \"SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR \" +\n \"SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID \" +\n \"SYSREQ_EDOC_TYPE_NAME_LOCALIZE_ID \" +\n \"SYSREQ_EDOC_TYPE_NUMERATION_METHOD \" +\n \"SYSREQ_EDOC_TYPE_PSEUDO_REQUISITE_CODE \" +\n \"SYSREQ_EDOC_TYPE_REQ_CODE \" +\n \"SYSREQ_EDOC_TYPE_REQ_DESCRIPTION \" +\n \"SYSREQ_EDOC_TYPE_REQ_DESCRIPTION_LOCALIZE_ID \" +\n \"SYSREQ_EDOC_TYPE_REQ_IS_LEADING \" +\n \"SYSREQ_EDOC_TYPE_REQ_IS_REQUIRED \" +\n \"SYSREQ_EDOC_TYPE_REQ_NUMBER \" +\n \"SYSREQ_EDOC_TYPE_REQ_ON_CHANGE \" +\n \"SYSREQ_EDOC_TYPE_REQ_ON_CHANGE_EXISTS \" +\n \"SYSREQ_EDOC_TYPE_REQ_ON_SELECT \" +\n \"SYSREQ_EDOC_TYPE_REQ_ON_SELECT_KIND \" +\n \"SYSREQ_EDOC_TYPE_REQ_SECTION \" +\n \"SYSREQ_EDOC_TYPE_VIEW_CARD \" +\n \"SYSREQ_EDOC_TYPE_VIEW_CODE \" +\n \"SYSREQ_EDOC_TYPE_VIEW_COMMENT \" +\n \"SYSREQ_EDOC_TYPE_VIEW_IS_MAIN \" +\n \"SYSREQ_EDOC_TYPE_VIEW_NAME \" +\n \"SYSREQ_EDOC_TYPE_VIEW_NAME_LOCALIZE_ID \" +\n \"SYSREQ_EDOC_VERSION_AUTHOR \" +\n \"SYSREQ_EDOC_VERSION_CRC \" +\n \"SYSREQ_EDOC_VERSION_DATA \" +\n \"SYSREQ_EDOC_VERSION_EDITOR \" +\n \"SYSREQ_EDOC_VERSION_EXPORT_DATE \" +\n \"SYSREQ_EDOC_VERSION_EXPORTER \" +\n \"SYSREQ_EDOC_VERSION_HIDDEN \" +\n \"SYSREQ_EDOC_VERSION_LIFE_STAGE \" +\n \"SYSREQ_EDOC_VERSION_MODIFIED \" +\n \"SYSREQ_EDOC_VERSION_NOTE \" +\n \"SYSREQ_EDOC_VERSION_SIGNATURE_TYPE \" +\n \"SYSREQ_EDOC_VERSION_SIGNED \" +\n \"SYSREQ_EDOC_VERSION_SIZE \" +\n \"SYSREQ_EDOC_VERSION_SOURCE \" +\n \"SYSREQ_EDOC_VERSION_TEXT_MODIFIED \" +\n \"SYSREQ_EDOCKIND_DEFAULT_VERSION_STATE_CODE \" +\n \"SYSREQ_FOLDER_KIND \" +\n \"SYSREQ_FUNC_CATEGORY \" +\n \"SYSREQ_FUNC_COMMENT \" +\n \"SYSREQ_FUNC_GROUP \" +\n \"SYSREQ_FUNC_GROUP_COMMENT \" +\n \"SYSREQ_FUNC_GROUP_NUMBER \" +\n \"SYSREQ_FUNC_HELP \" +\n \"SYSREQ_FUNC_PARAM_DEF_VALUE \" +\n \"SYSREQ_FUNC_PARAM_IDENT \" +\n \"SYSREQ_FUNC_PARAM_NUMBER \" +\n \"SYSREQ_FUNC_PARAM_TYPE \" +\n \"SYSREQ_FUNC_TEXT \" +\n \"SYSREQ_GROUP_CATEGORY \" +\n \"SYSREQ_ID \" +\n \"SYSREQ_LAST_UPDATE \" +\n \"SYSREQ_LEADER_REFERENCE \" +\n \"SYSREQ_LINE_NUMBER \" +\n \"SYSREQ_MAIN_RECORD_ID \" +\n \"SYSREQ_NAME \" +\n \"SYSREQ_NAME_LOCALIZE_ID \" +\n \"SYSREQ_NOTE \" +\n \"SYSREQ_ORIGINAL_RECORD \" +\n \"SYSREQ_OUR_FIRM \" +\n \"SYSREQ_PROFILING_SETTINGS_BATCH_LOGING \" +\n \"SYSREQ_PROFILING_SETTINGS_BATCH_SIZE \" +\n \"SYSREQ_PROFILING_SETTINGS_PROFILING_ENABLED \" +\n \"SYSREQ_PROFILING_SETTINGS_SQL_PROFILING_ENABLED \" +\n \"SYSREQ_PROFILING_SETTINGS_START_LOGGED \" +\n \"SYSREQ_RECORD_STATUS \" +\n \"SYSREQ_REF_REQ_FIELD_NAME \" +\n \"SYSREQ_REF_REQ_FORMAT \" +\n \"SYSREQ_REF_REQ_GENERATED \" +\n \"SYSREQ_REF_REQ_LENGTH \" +\n \"SYSREQ_REF_REQ_PRECISION \" +\n \"SYSREQ_REF_REQ_REFERENCE \" +\n \"SYSREQ_REF_REQ_SECTION \" +\n \"SYSREQ_REF_REQ_STORED \" +\n \"SYSREQ_REF_REQ_TOKENS \" +\n \"SYSREQ_REF_REQ_TYPE \" +\n \"SYSREQ_REF_REQ_VIEW \" +\n \"SYSREQ_REF_TYPE_ACT_CODE \" +\n \"SYSREQ_REF_TYPE_ACT_DESCRIPTION \" +\n \"SYSREQ_REF_TYPE_ACT_DESCRIPTION_LOCALIZE_ID \" +\n \"SYSREQ_REF_TYPE_ACT_ON_EXECUTE \" +\n \"SYSREQ_REF_TYPE_ACT_ON_EXECUTE_EXISTS \" +\n \"SYSREQ_REF_TYPE_ACT_SECTION \" +\n \"SYSREQ_REF_TYPE_ADD_PARAMS \" +\n \"SYSREQ_REF_TYPE_COMMENT \" +\n \"SYSREQ_REF_TYPE_COMMON_SETTINGS \" +\n \"SYSREQ_REF_TYPE_DISPLAY_REQUISITE_NAME \" +\n \"SYSREQ_REF_TYPE_EVENT_TEXT \" +\n \"SYSREQ_REF_TYPE_MAIN_LEADING_REF \" +\n \"SYSREQ_REF_TYPE_NAME_IN_SINGULAR \" +\n \"SYSREQ_REF_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID \" +\n \"SYSREQ_REF_TYPE_NAME_LOCALIZE_ID \" +\n \"SYSREQ_REF_TYPE_NUMERATION_METHOD \" +\n \"SYSREQ_REF_TYPE_REQ_CODE \" +\n \"SYSREQ_REF_TYPE_REQ_DESCRIPTION \" +\n \"SYSREQ_REF_TYPE_REQ_DESCRIPTION_LOCALIZE_ID \" +\n \"SYSREQ_REF_TYPE_REQ_IS_CONTROL \" +\n \"SYSREQ_REF_TYPE_REQ_IS_FILTER \" +\n \"SYSREQ_REF_TYPE_REQ_IS_LEADING \" +\n \"SYSREQ_REF_TYPE_REQ_IS_REQUIRED \" +\n \"SYSREQ_REF_TYPE_REQ_NUMBER \" +\n \"SYSREQ_REF_TYPE_REQ_ON_CHANGE \" +\n \"SYSREQ_REF_TYPE_REQ_ON_CHANGE_EXISTS \" +\n \"SYSREQ_REF_TYPE_REQ_ON_SELECT \" +\n \"SYSREQ_REF_TYPE_REQ_ON_SELECT_KIND \" +\n \"SYSREQ_REF_TYPE_REQ_SECTION \" +\n \"SYSREQ_REF_TYPE_VIEW_CARD \" +\n \"SYSREQ_REF_TYPE_VIEW_CODE \" +\n \"SYSREQ_REF_TYPE_VIEW_COMMENT \" +\n \"SYSREQ_REF_TYPE_VIEW_IS_MAIN \" +\n \"SYSREQ_REF_TYPE_VIEW_NAME \" +\n \"SYSREQ_REF_TYPE_VIEW_NAME_LOCALIZE_ID \" +\n \"SYSREQ_REFERENCE_TYPE_ID \" +\n \"SYSREQ_STATE \" +\n \"SYSREQ_STATЕ \" +\n \"SYSREQ_SYSTEM_SETTINGS_VALUE \" +\n \"SYSREQ_TYPE \" +\n \"SYSREQ_UNIT \" +\n \"SYSREQ_UNIT_ID \" +\n \"SYSREQ_USER_GROUPS_GROUP_FULL_NAME \" +\n \"SYSREQ_USER_GROUPS_GROUP_NAME \" +\n \"SYSREQ_USER_GROUPS_GROUP_SERVER_NAME \" +\n \"SYSREQ_USERS_ACCESS_RIGHTS \" +\n \"SYSREQ_USERS_AUTHENTICATION \" +\n \"SYSREQ_USERS_CATEGORY \" +\n \"SYSREQ_USERS_COMPONENT \" +\n \"SYSREQ_USERS_COMPONENT_USER_IS_PUBLIC \" +\n \"SYSREQ_USERS_DOMAIN \" +\n \"SYSREQ_USERS_FULL_USER_NAME \" +\n \"SYSREQ_USERS_GROUP \" +\n \"SYSREQ_USERS_IS_MAIN_SERVER \" +\n \"SYSREQ_USERS_LOGIN \" +\n \"SYSREQ_USERS_REFERENCE_USER_IS_PUBLIC \" +\n \"SYSREQ_USERS_STATUS \" +\n \"SYSREQ_USERS_USER_CERTIFICATE \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_INFO \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_NAME \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_VERSION \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_STATE \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_SUBJECT_NAME \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_THUMBPRINT \" +\n \"SYSREQ_USERS_USER_DEFAULT_CERTIFICATE \" +\n \"SYSREQ_USERS_USER_DESCRIPTION \" +\n \"SYSREQ_USERS_USER_GLOBAL_NAME \" +\n \"SYSREQ_USERS_USER_LOGIN \" +\n \"SYSREQ_USERS_USER_MAIN_SERVER \" +\n \"SYSREQ_USERS_USER_TYPE \" +\n \"SYSREQ_WORK_RULES_FOLDER_ID \";\n\n // Result\n var result_constants = \"RESULT_VAR_NAME RESULT_VAR_NAME_ENG \";\n\n // Rule identification\n var rule_identification_constants =\n \"AUTO_NUMERATION_RULE_ID \" +\n \"CANT_CHANGE_ID_REQUISITE_RULE_ID \" +\n \"CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID \" +\n \"CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID \" +\n \"CHECK_CODE_REQUISITE_RULE_ID \" +\n \"CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID \" +\n \"CHECK_FILTRATER_CHANGES_RULE_ID \" +\n \"CHECK_RECORD_INTERVAL_RULE_ID \" +\n \"CHECK_REFERENCE_INTERVAL_RULE_ID \" +\n \"CHECK_REQUIRED_DATA_FULLNESS_RULE_ID \" +\n \"CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID \" +\n \"MAKE_RECORD_UNRATIFIED_RULE_ID \" +\n \"RESTORE_AUTO_NUMERATION_RULE_ID \" +\n \"SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID \" +\n \"SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID \" +\n \"SET_IDSPS_VALUE_RULE_ID \" +\n \"SET_NEXT_CODE_VALUE_RULE_ID \" +\n \"SET_OURFIRM_BOUNDS_RULE_ID \" +\n \"SET_OURFIRM_REQUISITE_RULE_ID \";\n\n // Script block properties\n var script_block_properties_constants =\n \"SCRIPT_BLOCK_AFTER_FINISH_EVENT \" +\n \"SCRIPT_BLOCK_BEFORE_START_EVENT \" +\n \"SCRIPT_BLOCK_EXECUTION_RESULTS_PROPERTY \" +\n \"SCRIPT_BLOCK_NAME_PROPERTY \" +\n \"SCRIPT_BLOCK_SCRIPT_PROPERTY \";\n\n // Subtask block properties\n var subtask_block_properties_constants =\n \"SUBTASK_BLOCK_ABORT_DEADLINE_PROPERTY \" +\n \"SUBTASK_BLOCK_AFTER_FINISH_EVENT \" +\n \"SUBTASK_BLOCK_ASSIGN_PARAMS_EVENT \" +\n \"SUBTASK_BLOCK_ATTACHMENTS_PROPERTY \" +\n \"SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY \" +\n \"SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY \" +\n \"SUBTASK_BLOCK_BEFORE_START_EVENT \" +\n \"SUBTASK_BLOCK_CREATED_TASK_PROPERTY \" +\n \"SUBTASK_BLOCK_CREATION_EVENT \" +\n \"SUBTASK_BLOCK_DEADLINE_PROPERTY \" +\n \"SUBTASK_BLOCK_IMPORTANCE_PROPERTY \" +\n \"SUBTASK_BLOCK_INITIATOR_PROPERTY \" +\n \"SUBTASK_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY \" +\n \"SUBTASK_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\n \"SUBTASK_BLOCK_JOBS_TYPE_PROPERTY \" +\n \"SUBTASK_BLOCK_NAME_PROPERTY \" +\n \"SUBTASK_BLOCK_PARALLEL_ROUTE_PROPERTY \" +\n \"SUBTASK_BLOCK_PERFORMERS_PROPERTY \" +\n \"SUBTASK_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY \" +\n \"SUBTASK_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \" +\n \"SUBTASK_BLOCK_REQUIRE_SIGN_PROPERTY \" +\n \"SUBTASK_BLOCK_STANDARD_ROUTE_PROPERTY \" +\n \"SUBTASK_BLOCK_START_EVENT \" +\n \"SUBTASK_BLOCK_STEP_CONTROL_PROPERTY \" +\n \"SUBTASK_BLOCK_SUBJECT_PROPERTY \" +\n \"SUBTASK_BLOCK_TASK_CONTROL_PROPERTY \" +\n \"SUBTASK_BLOCK_TEXT_PROPERTY \" +\n \"SUBTASK_BLOCK_UNLOCK_ATTACHMENTS_ON_STOP_PROPERTY \" +\n \"SUBTASK_BLOCK_USE_STANDARD_ROUTE_PROPERTY \" +\n \"SUBTASK_BLOCK_WAIT_FOR_TASK_COMPLETE_PROPERTY \";\n\n // System component\n var system_component_constants =\n \"SYSCOMP_CONTROL_JOBS \" +\n \"SYSCOMP_FOLDERS \" +\n \"SYSCOMP_JOBS \" +\n \"SYSCOMP_NOTICES \" +\n \"SYSCOMP_TASKS \";\n\n // System dialogs\n var system_dialogs_constants =\n \"SYSDLG_CREATE_EDOCUMENT \" +\n \"SYSDLG_CREATE_EDOCUMENT_VERSION \" +\n \"SYSDLG_CURRENT_PERIOD \" +\n \"SYSDLG_EDIT_FUNCTION_HELP \" +\n \"SYSDLG_EDOCUMENT_KINDS_FOR_TEMPLATE \" +\n \"SYSDLG_EXPORT_MULTIPLE_EDOCUMENTS \" +\n \"SYSDLG_EXPORT_SINGLE_EDOCUMENT \" +\n \"SYSDLG_IMPORT_EDOCUMENT \" +\n \"SYSDLG_MULTIPLE_SELECT \" +\n \"SYSDLG_SETUP_ACCESS_RIGHTS \" +\n \"SYSDLG_SETUP_DEFAULT_RIGHTS \" +\n \"SYSDLG_SETUP_FILTER_CONDITION \" +\n \"SYSDLG_SETUP_SIGN_RIGHTS \" +\n \"SYSDLG_SETUP_TASK_OBSERVERS \" +\n \"SYSDLG_SETUP_TASK_ROUTE \" +\n \"SYSDLG_SETUP_USERS_LIST \" +\n \"SYSDLG_SIGN_EDOCUMENT \" +\n \"SYSDLG_SIGN_MULTIPLE_EDOCUMENTS \";\n\n // System reference names\n var system_reference_names_constants =\n \"SYSREF_ACCESS_RIGHTS_TYPES \" +\n \"SYSREF_ADMINISTRATION_HISTORY \" +\n \"SYSREF_ALL_AVAILABLE_COMPONENTS \" +\n \"SYSREF_ALL_AVAILABLE_PRIVILEGES \" +\n \"SYSREF_ALL_REPLICATING_COMPONENTS \" +\n \"SYSREF_AVAILABLE_DEVELOPERS_COMPONENTS \" +\n \"SYSREF_CALENDAR_EVENTS \" +\n \"SYSREF_COMPONENT_TOKEN_HISTORY \" +\n \"SYSREF_COMPONENT_TOKENS \" +\n \"SYSREF_COMPONENTS \" +\n \"SYSREF_CONSTANTS \" +\n \"SYSREF_DATA_RECEIVE_PROTOCOL \" +\n \"SYSREF_DATA_SEND_PROTOCOL \" +\n \"SYSREF_DIALOGS \" +\n \"SYSREF_DIALOGS_REQUISITES \" +\n \"SYSREF_EDITORS \" +\n \"SYSREF_EDOC_CARDS \" +\n \"SYSREF_EDOC_TYPES \" +\n \"SYSREF_EDOCUMENT_CARD_REQUISITES \" +\n \"SYSREF_EDOCUMENT_CARD_TYPES \" +\n \"SYSREF_EDOCUMENT_CARD_TYPES_REFERENCE \" +\n \"SYSREF_EDOCUMENT_CARDS \" +\n \"SYSREF_EDOCUMENT_HISTORY \" +\n \"SYSREF_EDOCUMENT_KINDS \" +\n \"SYSREF_EDOCUMENT_REQUISITES \" +\n \"SYSREF_EDOCUMENT_SIGNATURES \" +\n \"SYSREF_EDOCUMENT_TEMPLATES \" +\n \"SYSREF_EDOCUMENT_TEXT_STORAGES \" +\n \"SYSREF_EDOCUMENT_VIEWS \" +\n \"SYSREF_FILTERER_SETUP_CONFLICTS \" +\n \"SYSREF_FILTRATER_SETTING_CONFLICTS \" +\n \"SYSREF_FOLDER_HISTORY \" +\n \"SYSREF_FOLDERS \" +\n \"SYSREF_FUNCTION_GROUPS \" +\n \"SYSREF_FUNCTION_PARAMS \" +\n \"SYSREF_FUNCTIONS \" +\n \"SYSREF_JOB_HISTORY \" +\n \"SYSREF_LINKS \" +\n \"SYSREF_LOCALIZATION_DICTIONARY \" +\n \"SYSREF_LOCALIZATION_LANGUAGES \" +\n \"SYSREF_MODULES \" +\n \"SYSREF_PRIVILEGES \" +\n \"SYSREF_RECORD_HISTORY \" +\n \"SYSREF_REFERENCE_REQUISITES \" +\n \"SYSREF_REFERENCE_TYPE_VIEWS \" +\n \"SYSREF_REFERENCE_TYPES \" +\n \"SYSREF_REFERENCES \" +\n \"SYSREF_REFERENCES_REQUISITES \" +\n \"SYSREF_REMOTE_SERVERS \" +\n \"SYSREF_REPLICATION_SESSIONS_LOG \" +\n \"SYSREF_REPLICATION_SESSIONS_PROTOCOL \" +\n \"SYSREF_REPORTS \" +\n \"SYSREF_ROLES \" +\n \"SYSREF_ROUTE_BLOCK_GROUPS \" +\n \"SYSREF_ROUTE_BLOCKS \" +\n \"SYSREF_SCRIPTS \" +\n \"SYSREF_SEARCHES \" +\n \"SYSREF_SERVER_EVENTS \" +\n \"SYSREF_SERVER_EVENTS_HISTORY \" +\n \"SYSREF_STANDARD_ROUTE_GROUPS \" +\n \"SYSREF_STANDARD_ROUTES \" +\n \"SYSREF_STATUSES \" +\n \"SYSREF_SYSTEM_SETTINGS \" +\n \"SYSREF_TASK_HISTORY \" +\n \"SYSREF_TASK_KIND_GROUPS \" +\n \"SYSREF_TASK_KINDS \" +\n \"SYSREF_TASK_RIGHTS \" +\n \"SYSREF_TASK_SIGNATURES \" +\n \"SYSREF_TASKS \" +\n \"SYSREF_UNITS \" +\n \"SYSREF_USER_GROUPS \" +\n \"SYSREF_USER_GROUPS_REFERENCE \" +\n \"SYSREF_USER_SUBSTITUTION \" +\n \"SYSREF_USERS \" +\n \"SYSREF_USERS_REFERENCE \" +\n \"SYSREF_VIEWERS \" +\n \"SYSREF_WORKING_TIME_CALENDARS \";\n\n // Table name\n var table_name_constants =\n \"ACCESS_RIGHTS_TABLE_NAME \" +\n \"EDMS_ACCESS_TABLE_NAME \" +\n \"EDOC_TYPES_TABLE_NAME \";\n\n // Test\n var test_constants =\n \"TEST_DEV_DB_NAME \" +\n \"TEST_DEV_SYSTEM_CODE \" +\n \"TEST_EDMS_DB_NAME \" +\n \"TEST_EDMS_MAIN_CODE \" +\n \"TEST_EDMS_MAIN_DB_NAME \" +\n \"TEST_EDMS_SECOND_CODE \" +\n \"TEST_EDMS_SECOND_DB_NAME \" +\n \"TEST_EDMS_SYSTEM_CODE \" +\n \"TEST_ISB5_MAIN_CODE \" +\n \"TEST_ISB5_SECOND_CODE \" +\n \"TEST_SQL_SERVER_2005_NAME \" +\n \"TEST_SQL_SERVER_NAME \";\n\n // Using the dialog windows\n var using_the_dialog_windows_constants =\n \"ATTENTION_CAPTION \" +\n \"cbsCommandLinks \" +\n \"cbsDefault \" +\n \"CONFIRMATION_CAPTION \" +\n \"ERROR_CAPTION \" +\n \"INFORMATION_CAPTION \" +\n \"mrCancel \" +\n \"mrOk \";\n\n // Using the document\n var using_the_document_constants =\n \"EDOC_VERSION_ACTIVE_STAGE_CODE \" +\n \"EDOC_VERSION_DESIGN_STAGE_CODE \" +\n \"EDOC_VERSION_OBSOLETE_STAGE_CODE \";\n\n // Using the EA and encryption\n var using_the_EA_and_encryption_constants =\n \"cpDataEnciphermentEnabled \" +\n \"cpDigitalSignatureEnabled \" +\n \"cpID \" +\n \"cpIssuer \" +\n \"cpPluginVersion \" +\n \"cpSerial \" +\n \"cpSubjectName \" +\n \"cpSubjSimpleName \" +\n \"cpValidFromDate \" +\n \"cpValidToDate \";\n\n // Using the ISBL-editor\n var using_the_ISBL_editor_constants =\n \"ISBL_SYNTAX \" + \"NO_SYNTAX \" + \"XML_SYNTAX \";\n\n // Wait block properties\n var wait_block_properties_constants =\n \"WAIT_BLOCK_AFTER_FINISH_EVENT \" +\n \"WAIT_BLOCK_BEFORE_START_EVENT \" +\n \"WAIT_BLOCK_DEADLINE_PROPERTY \" +\n \"WAIT_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\n \"WAIT_BLOCK_NAME_PROPERTY \" +\n \"WAIT_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \";\n\n // SYSRES Common\n var sysres_common_constants =\n \"SYSRES_COMMON \" +\n \"SYSRES_CONST \" +\n \"SYSRES_MBFUNC \" +\n \"SYSRES_SBDATA \" +\n \"SYSRES_SBGUI \" +\n \"SYSRES_SBINTF \" +\n \"SYSRES_SBREFDSC \" +\n \"SYSRES_SQLERRORS \" +\n \"SYSRES_SYSCOMP \";\n\n // Константы ==> built_in\n var CONSTANTS =\n sysres_constants +\n base_constants +\n base_group_name_constants +\n decision_block_properties_constants +\n file_extension_constants +\n job_block_properties_constants +\n language_code_constants +\n launching_external_applications_constants +\n link_kind_constants +\n lock_type_constants +\n monitor_block_properties_constants +\n notice_block_properties_constants +\n object_events_constants +\n object_params_constants +\n other_constants +\n privileges_constants +\n pseudoreference_code_constants +\n requisite_ISBCertificateType_values_constants +\n requisite_ISBEDocStorageType_values_constants +\n requisite_compType2_values_constants +\n requisite_name_constants +\n result_constants +\n rule_identification_constants +\n script_block_properties_constants +\n subtask_block_properties_constants +\n system_component_constants +\n system_dialogs_constants +\n system_reference_names_constants +\n table_name_constants +\n test_constants +\n using_the_dialog_windows_constants +\n using_the_document_constants +\n using_the_EA_and_encryption_constants +\n using_the_ISBL_editor_constants +\n wait_block_properties_constants +\n sysres_common_constants;\n\n // enum TAccountType\n var TAccountType = \"atUser atGroup atRole \";\n\n // enum TActionEnabledMode\n var TActionEnabledMode =\n \"aemEnabledAlways \" +\n \"aemDisabledAlways \" +\n \"aemEnabledOnBrowse \" +\n \"aemEnabledOnEdit \" +\n \"aemDisabledOnBrowseEmpty \";\n\n // enum TAddPosition\n var TAddPosition = \"apBegin apEnd \";\n\n // enum TAlignment\n var TAlignment = \"alLeft alRight \";\n\n // enum TAreaShowMode\n var TAreaShowMode =\n \"asmNever \" +\n \"asmNoButCustomize \" +\n \"asmAsLastTime \" +\n \"asmYesButCustomize \" +\n \"asmAlways \";\n\n // enum TCertificateInvalidationReason\n var TCertificateInvalidationReason = \"cirCommon cirRevoked \";\n\n // enum TCertificateType\n var TCertificateType = \"ctSignature ctEncode ctSignatureEncode \";\n\n // enum TCheckListBoxItemState\n var TCheckListBoxItemState = \"clbUnchecked clbChecked clbGrayed \";\n\n // enum TCloseOnEsc\n var TCloseOnEsc = \"ceISB ceAlways ceNever \";\n\n // enum TCompType\n var TCompType =\n \"ctDocument \" +\n \"ctReference \" +\n \"ctScript \" +\n \"ctUnknown \" +\n \"ctReport \" +\n \"ctDialog \" +\n \"ctFunction \" +\n \"ctFolder \" +\n \"ctEDocument \" +\n \"ctTask \" +\n \"ctJob \" +\n \"ctNotice \" +\n \"ctControlJob \";\n\n // enum TConditionFormat\n var TConditionFormat = \"cfInternal cfDisplay \";\n\n // enum TConnectionIntent\n var TConnectionIntent = \"ciUnspecified ciWrite ciRead \";\n\n // enum TContentKind\n var TContentKind =\n \"ckFolder \" +\n \"ckEDocument \" +\n \"ckTask \" +\n \"ckJob \" +\n \"ckComponentToken \" +\n \"ckAny \" +\n \"ckReference \" +\n \"ckScript \" +\n \"ckReport \" +\n \"ckDialog \";\n\n // enum TControlType\n var TControlType =\n \"ctISBLEditor \" +\n \"ctBevel \" +\n \"ctButton \" +\n \"ctCheckListBox \" +\n \"ctComboBox \" +\n \"ctComboEdit \" +\n \"ctGrid \" +\n \"ctDBCheckBox \" +\n \"ctDBComboBox \" +\n \"ctDBEdit \" +\n \"ctDBEllipsis \" +\n \"ctDBMemo \" +\n \"ctDBNavigator \" +\n \"ctDBRadioGroup \" +\n \"ctDBStatusLabel \" +\n \"ctEdit \" +\n \"ctGroupBox \" +\n \"ctInplaceHint \" +\n \"ctMemo \" +\n \"ctPanel \" +\n \"ctListBox \" +\n \"ctRadioButton \" +\n \"ctRichEdit \" +\n \"ctTabSheet \" +\n \"ctWebBrowser \" +\n \"ctImage \" +\n \"ctHyperLink \" +\n \"ctLabel \" +\n \"ctDBMultiEllipsis \" +\n \"ctRibbon \" +\n \"ctRichView \" +\n \"ctInnerPanel \" +\n \"ctPanelGroup \" +\n \"ctBitButton \";\n\n // enum TCriterionContentType\n var TCriterionContentType =\n \"cctDate \" +\n \"cctInteger \" +\n \"cctNumeric \" +\n \"cctPick \" +\n \"cctReference \" +\n \"cctString \" +\n \"cctText \";\n\n // enum TCultureType\n var TCultureType = \"cltInternal cltPrimary cltGUI \";\n\n // enum TDataSetEventType\n var TDataSetEventType =\n \"dseBeforeOpen \" +\n \"dseAfterOpen \" +\n \"dseBeforeClose \" +\n \"dseAfterClose \" +\n \"dseOnValidDelete \" +\n \"dseBeforeDelete \" +\n \"dseAfterDelete \" +\n \"dseAfterDeleteOutOfTransaction \" +\n \"dseOnDeleteError \" +\n \"dseBeforeInsert \" +\n \"dseAfterInsert \" +\n \"dseOnValidUpdate \" +\n \"dseBeforeUpdate \" +\n \"dseOnUpdateRatifiedRecord \" +\n \"dseAfterUpdate \" +\n \"dseAfterUpdateOutOfTransaction \" +\n \"dseOnUpdateError \" +\n \"dseAfterScroll \" +\n \"dseOnOpenRecord \" +\n \"dseOnCloseRecord \" +\n \"dseBeforeCancel \" +\n \"dseAfterCancel \" +\n \"dseOnUpdateDeadlockError \" +\n \"dseBeforeDetailUpdate \" +\n \"dseOnPrepareUpdate \" +\n \"dseOnAnyRequisiteChange \";\n\n // enum TDataSetState\n var TDataSetState = \"dssEdit dssInsert dssBrowse dssInActive \";\n\n // enum TDateFormatType\n var TDateFormatType = \"dftDate dftShortDate dftDateTime dftTimeStamp \";\n\n // enum TDateOffsetType\n var TDateOffsetType = \"dotDays dotHours dotMinutes dotSeconds \";\n\n // enum TDateTimeKind\n var TDateTimeKind = \"dtkndLocal dtkndUTC \";\n\n // enum TDeaAccessRights\n var TDeaAccessRights = \"arNone arView arEdit arFull \";\n\n // enum TDocumentDefaultAction\n var TDocumentDefaultAction = \"ddaView ddaEdit \";\n\n // enum TEditMode\n var TEditMode =\n \"emLock \" +\n \"emEdit \" +\n \"emSign \" +\n \"emExportWithLock \" +\n \"emImportWithUnlock \" +\n \"emChangeVersionNote \" +\n \"emOpenForModify \" +\n \"emChangeLifeStage \" +\n \"emDelete \" +\n \"emCreateVersion \" +\n \"emImport \" +\n \"emUnlockExportedWithLock \" +\n \"emStart \" +\n \"emAbort \" +\n \"emReInit \" +\n \"emMarkAsReaded \" +\n \"emMarkAsUnreaded \" +\n \"emPerform \" +\n \"emAccept \" +\n \"emResume \" +\n \"emChangeRights \" +\n \"emEditRoute \" +\n \"emEditObserver \" +\n \"emRecoveryFromLocalCopy \" +\n \"emChangeWorkAccessType \" +\n \"emChangeEncodeTypeToCertificate \" +\n \"emChangeEncodeTypeToPassword \" +\n \"emChangeEncodeTypeToNone \" +\n \"emChangeEncodeTypeToCertificatePassword \" +\n \"emChangeStandardRoute \" +\n \"emGetText \" +\n \"emOpenForView \" +\n \"emMoveToStorage \" +\n \"emCreateObject \" +\n \"emChangeVersionHidden \" +\n \"emDeleteVersion \" +\n \"emChangeLifeCycleStage \" +\n \"emApprovingSign \" +\n \"emExport \" +\n \"emContinue \" +\n \"emLockFromEdit \" +\n \"emUnLockForEdit \" +\n \"emLockForServer \" +\n \"emUnlockFromServer \" +\n \"emDelegateAccessRights \" +\n \"emReEncode \";\n\n // enum TEditorCloseObservType\n var TEditorCloseObservType = \"ecotFile ecotProcess \";\n\n // enum TEdmsApplicationAction\n var TEdmsApplicationAction = \"eaGet eaCopy eaCreate eaCreateStandardRoute \";\n\n // enum TEDocumentLockType\n var TEDocumentLockType = \"edltAll edltNothing edltQuery \";\n\n // enum TEDocumentStepShowMode\n var TEDocumentStepShowMode = \"essmText essmCard \";\n\n // enum TEDocumentStepVersionType\n var TEDocumentStepVersionType = \"esvtLast esvtLastActive esvtSpecified \";\n\n // enum TEDocumentStorageFunction\n var TEDocumentStorageFunction = \"edsfExecutive edsfArchive \";\n\n // enum TEDocumentStorageType\n var TEDocumentStorageType = \"edstSQLServer edstFile \";\n\n // enum TEDocumentVersionSourceType\n var TEDocumentVersionSourceType =\n \"edvstNone edvstEDocumentVersionCopy edvstFile edvstTemplate edvstScannedFile \";\n\n // enum TEDocumentVersionState\n var TEDocumentVersionState = \"vsDefault vsDesign vsActive vsObsolete \";\n\n // enum TEncodeType\n var TEncodeType = \"etNone etCertificate etPassword etCertificatePassword \";\n\n // enum TExceptionCategory\n var TExceptionCategory = \"ecException ecWarning ecInformation \";\n\n // enum TExportedSignaturesType\n var TExportedSignaturesType = \"estAll estApprovingOnly \";\n\n // enum TExportedVersionType\n var TExportedVersionType = \"evtLast evtLastActive evtQuery \";\n\n // enum TFieldDataType\n var TFieldDataType =\n \"fdtString \" +\n \"fdtNumeric \" +\n \"fdtInteger \" +\n \"fdtDate \" +\n \"fdtText \" +\n \"fdtUnknown \" +\n \"fdtWideString \" +\n \"fdtLargeInteger \";\n\n // enum TFolderType\n var TFolderType =\n \"ftInbox \" +\n \"ftOutbox \" +\n \"ftFavorites \" +\n \"ftCommonFolder \" +\n \"ftUserFolder \" +\n \"ftComponents \" +\n \"ftQuickLaunch \" +\n \"ftShortcuts \" +\n \"ftSearch \";\n\n // enum TGridRowHeight\n var TGridRowHeight = \"grhAuto \" + \"grhX1 \" + \"grhX2 \" + \"grhX3 \";\n\n // enum THyperlinkType\n var THyperlinkType = \"hltText \" + \"hltRTF \" + \"hltHTML \";\n\n // enum TImageFileFormat\n var TImageFileFormat =\n \"iffBMP \" +\n \"iffJPEG \" +\n \"iffMultiPageTIFF \" +\n \"iffSinglePageTIFF \" +\n \"iffTIFF \" +\n \"iffPNG \";\n\n // enum TImageMode\n var TImageMode = \"im8bGrayscale \" + \"im24bRGB \" + \"im1bMonochrome \";\n\n // enum TImageType\n var TImageType = \"itBMP \" + \"itJPEG \" + \"itWMF \" + \"itPNG \";\n\n // enum TInplaceHintKind\n var TInplaceHintKind =\n \"ikhInformation \" + \"ikhWarning \" + \"ikhError \" + \"ikhNoIcon \";\n\n // enum TISBLContext\n var TISBLContext =\n \"icUnknown \" +\n \"icScript \" +\n \"icFunction \" +\n \"icIntegratedReport \" +\n \"icAnalyticReport \" +\n \"icDataSetEventHandler \" +\n \"icActionHandler \" +\n \"icFormEventHandler \" +\n \"icLookUpEventHandler \" +\n \"icRequisiteChangeEventHandler \" +\n \"icBeforeSearchEventHandler \" +\n \"icRoleCalculation \" +\n \"icSelectRouteEventHandler \" +\n \"icBlockPropertyCalculation \" +\n \"icBlockQueryParamsEventHandler \" +\n \"icChangeSearchResultEventHandler \" +\n \"icBlockEventHandler \" +\n \"icSubTaskInitEventHandler \" +\n \"icEDocDataSetEventHandler \" +\n \"icEDocLookUpEventHandler \" +\n \"icEDocActionHandler \" +\n \"icEDocFormEventHandler \" +\n \"icEDocRequisiteChangeEventHandler \" +\n \"icStructuredConversionRule \" +\n \"icStructuredConversionEventBefore \" +\n \"icStructuredConversionEventAfter \" +\n \"icWizardEventHandler \" +\n \"icWizardFinishEventHandler \" +\n \"icWizardStepEventHandler \" +\n \"icWizardStepFinishEventHandler \" +\n \"icWizardActionEnableEventHandler \" +\n \"icWizardActionExecuteEventHandler \" +\n \"icCreateJobsHandler \" +\n \"icCreateNoticesHandler \" +\n \"icBeforeLookUpEventHandler \" +\n \"icAfterLookUpEventHandler \" +\n \"icTaskAbortEventHandler \" +\n \"icWorkflowBlockActionHandler \" +\n \"icDialogDataSetEventHandler \" +\n \"icDialogActionHandler \" +\n \"icDialogLookUpEventHandler \" +\n \"icDialogRequisiteChangeEventHandler \" +\n \"icDialogFormEventHandler \" +\n \"icDialogValidCloseEventHandler \" +\n \"icBlockFormEventHandler \" +\n \"icTaskFormEventHandler \" +\n \"icReferenceMethod \" +\n \"icEDocMethod \" +\n \"icDialogMethod \" +\n \"icProcessMessageHandler \";\n\n // enum TItemShow\n var TItemShow = \"isShow \" + \"isHide \" + \"isByUserSettings \";\n\n // enum TJobKind\n var TJobKind = \"jkJob \" + \"jkNotice \" + \"jkControlJob \";\n\n // enum TJoinType\n var TJoinType = \"jtInner \" + \"jtLeft \" + \"jtRight \" + \"jtFull \" + \"jtCross \";\n\n // enum TLabelPos\n var TLabelPos = \"lbpAbove \" + \"lbpBelow \" + \"lbpLeft \" + \"lbpRight \";\n\n // enum TLicensingType\n var TLicensingType = \"eltPerConnection \" + \"eltPerUser \";\n\n // enum TLifeCycleStageFontColor\n var TLifeCycleStageFontColor =\n \"sfcUndefined \" +\n \"sfcBlack \" +\n \"sfcGreen \" +\n \"sfcRed \" +\n \"sfcBlue \" +\n \"sfcOrange \" +\n \"sfcLilac \";\n\n // enum TLifeCycleStageFontStyle\n var TLifeCycleStageFontStyle = \"sfsItalic \" + \"sfsStrikeout \" + \"sfsNormal \";\n\n // enum TLockableDevelopmentComponentType\n var TLockableDevelopmentComponentType =\n \"ldctStandardRoute \" +\n \"ldctWizard \" +\n \"ldctScript \" +\n \"ldctFunction \" +\n \"ldctRouteBlock \" +\n \"ldctIntegratedReport \" +\n \"ldctAnalyticReport \" +\n \"ldctReferenceType \" +\n \"ldctEDocumentType \" +\n \"ldctDialog \" +\n \"ldctServerEvents \";\n\n // enum TMaxRecordCountRestrictionType\n var TMaxRecordCountRestrictionType =\n \"mrcrtNone \" + \"mrcrtUser \" + \"mrcrtMaximal \" + \"mrcrtCustom \";\n\n // enum TRangeValueType\n var TRangeValueType =\n \"vtEqual \" + \"vtGreaterOrEqual \" + \"vtLessOrEqual \" + \"vtRange \";\n\n // enum TRelativeDate\n var TRelativeDate =\n \"rdYesterday \" +\n \"rdToday \" +\n \"rdTomorrow \" +\n \"rdThisWeek \" +\n \"rdThisMonth \" +\n \"rdThisYear \" +\n \"rdNextMonth \" +\n \"rdNextWeek \" +\n \"rdLastWeek \" +\n \"rdLastMonth \";\n\n // enum TReportDestination\n var TReportDestination = \"rdWindow \" + \"rdFile \" + \"rdPrinter \";\n\n // enum TReqDataType\n var TReqDataType =\n \"rdtString \" +\n \"rdtNumeric \" +\n \"rdtInteger \" +\n \"rdtDate \" +\n \"rdtReference \" +\n \"rdtAccount \" +\n \"rdtText \" +\n \"rdtPick \" +\n \"rdtUnknown \" +\n \"rdtLargeInteger \" +\n \"rdtDocument \";\n\n // enum TRequisiteEventType\n var TRequisiteEventType = \"reOnChange \" + \"reOnChangeValues \";\n\n // enum TSBTimeType\n var TSBTimeType = \"ttGlobal \" + \"ttLocal \" + \"ttUser \" + \"ttSystem \";\n\n // enum TSearchShowMode\n var TSearchShowMode =\n \"ssmBrowse \" + \"ssmSelect \" + \"ssmMultiSelect \" + \"ssmBrowseModal \";\n\n // enum TSelectMode\n var TSelectMode = \"smSelect \" + \"smLike \" + \"smCard \";\n\n // enum TSignatureType\n var TSignatureType = \"stNone \" + \"stAuthenticating \" + \"stApproving \";\n\n // enum TSignerContentType\n var TSignerContentType = \"sctString \" + \"sctStream \";\n\n // enum TStringsSortType\n var TStringsSortType = \"sstAnsiSort \" + \"sstNaturalSort \";\n\n // enum TStringValueType\n var TStringValueType = \"svtEqual \" + \"svtContain \";\n\n // enum TStructuredObjectAttributeType\n var TStructuredObjectAttributeType =\n \"soatString \" +\n \"soatNumeric \" +\n \"soatInteger \" +\n \"soatDatetime \" +\n \"soatReferenceRecord \" +\n \"soatText \" +\n \"soatPick \" +\n \"soatBoolean \" +\n \"soatEDocument \" +\n \"soatAccount \" +\n \"soatIntegerCollection \" +\n \"soatNumericCollection \" +\n \"soatStringCollection \" +\n \"soatPickCollection \" +\n \"soatDatetimeCollection \" +\n \"soatBooleanCollection \" +\n \"soatReferenceRecordCollection \" +\n \"soatEDocumentCollection \" +\n \"soatAccountCollection \" +\n \"soatContents \" +\n \"soatUnknown \";\n\n // enum TTaskAbortReason\n var TTaskAbortReason = \"tarAbortByUser \" + \"tarAbortByWorkflowException \";\n\n // enum TTextValueType\n var TTextValueType = \"tvtAllWords \" + \"tvtExactPhrase \" + \"tvtAnyWord \";\n\n // enum TUserObjectStatus\n var TUserObjectStatus =\n \"usNone \" +\n \"usCompleted \" +\n \"usRedSquare \" +\n \"usBlueSquare \" +\n \"usYellowSquare \" +\n \"usGreenSquare \" +\n \"usOrangeSquare \" +\n \"usPurpleSquare \" +\n \"usFollowUp \";\n\n // enum TUserType\n var TUserType =\n \"utUnknown \" +\n \"utUser \" +\n \"utDeveloper \" +\n \"utAdministrator \" +\n \"utSystemDeveloper \" +\n \"utDisconnected \";\n\n // enum TValuesBuildType\n var TValuesBuildType =\n \"btAnd \" + \"btDetailAnd \" + \"btOr \" + \"btNotOr \" + \"btOnly \";\n\n // enum TViewMode\n var TViewMode = \"vmView \" + \"vmSelect \" + \"vmNavigation \";\n\n // enum TViewSelectionMode\n var TViewSelectionMode =\n \"vsmSingle \" + \"vsmMultiple \" + \"vsmMultipleCheck \" + \"vsmNoSelection \";\n\n // enum TWizardActionType\n var TWizardActionType =\n \"wfatPrevious \" + \"wfatNext \" + \"wfatCancel \" + \"wfatFinish \";\n\n // enum TWizardFormElementProperty\n var TWizardFormElementProperty =\n \"wfepUndefined \" +\n \"wfepText3 \" +\n \"wfepText6 \" +\n \"wfepText9 \" +\n \"wfepSpinEdit \" +\n \"wfepDropDown \" +\n \"wfepRadioGroup \" +\n \"wfepFlag \" +\n \"wfepText12 \" +\n \"wfepText15 \" +\n \"wfepText18 \" +\n \"wfepText21 \" +\n \"wfepText24 \" +\n \"wfepText27 \" +\n \"wfepText30 \" +\n \"wfepRadioGroupColumn1 \" +\n \"wfepRadioGroupColumn2 \" +\n \"wfepRadioGroupColumn3 \";\n\n // enum TWizardFormElementType\n var TWizardFormElementType =\n \"wfetQueryParameter \" + \"wfetText \" + \"wfetDelimiter \" + \"wfetLabel \";\n\n // enum TWizardParamType\n var TWizardParamType =\n \"wptString \" +\n \"wptInteger \" +\n \"wptNumeric \" +\n \"wptBoolean \" +\n \"wptDateTime \" +\n \"wptPick \" +\n \"wptText \" +\n \"wptUser \" +\n \"wptUserList \" +\n \"wptEDocumentInfo \" +\n \"wptEDocumentInfoList \" +\n \"wptReferenceRecordInfo \" +\n \"wptReferenceRecordInfoList \" +\n \"wptFolderInfo \" +\n \"wptTaskInfo \" +\n \"wptContents \" +\n \"wptFileName \" +\n \"wptDate \";\n\n // enum TWizardStepResult\n var TWizardStepResult =\n \"wsrComplete \" +\n \"wsrGoNext \" +\n \"wsrGoPrevious \" +\n \"wsrCustom \" +\n \"wsrCancel \" +\n \"wsrGoFinal \";\n\n // enum TWizardStepType\n var TWizardStepType =\n \"wstForm \" +\n \"wstEDocument \" +\n \"wstTaskCard \" +\n \"wstReferenceRecordCard \" +\n \"wstFinal \";\n\n // enum TWorkAccessType\n var TWorkAccessType = \"waAll \" + \"waPerformers \" + \"waManual \";\n\n // enum TWorkflowBlockType\n var TWorkflowBlockType =\n \"wsbStart \" +\n \"wsbFinish \" +\n \"wsbNotice \" +\n \"wsbStep \" +\n \"wsbDecision \" +\n \"wsbWait \" +\n \"wsbMonitor \" +\n \"wsbScript \" +\n \"wsbConnector \" +\n \"wsbSubTask \" +\n \"wsbLifeCycleStage \" +\n \"wsbPause \";\n\n // enum TWorkflowDataType\n var TWorkflowDataType =\n \"wdtInteger \" +\n \"wdtFloat \" +\n \"wdtString \" +\n \"wdtPick \" +\n \"wdtDateTime \" +\n \"wdtBoolean \" +\n \"wdtTask \" +\n \"wdtJob \" +\n \"wdtFolder \" +\n \"wdtEDocument \" +\n \"wdtReferenceRecord \" +\n \"wdtUser \" +\n \"wdtGroup \" +\n \"wdtRole \" +\n \"wdtIntegerCollection \" +\n \"wdtFloatCollection \" +\n \"wdtStringCollection \" +\n \"wdtPickCollection \" +\n \"wdtDateTimeCollection \" +\n \"wdtBooleanCollection \" +\n \"wdtTaskCollection \" +\n \"wdtJobCollection \" +\n \"wdtFolderCollection \" +\n \"wdtEDocumentCollection \" +\n \"wdtReferenceRecordCollection \" +\n \"wdtUserCollection \" +\n \"wdtGroupCollection \" +\n \"wdtRoleCollection \" +\n \"wdtContents \" +\n \"wdtUserList \" +\n \"wdtSearchDescription \" +\n \"wdtDeadLine \" +\n \"wdtPickSet \" +\n \"wdtAccountCollection \";\n\n // enum TWorkImportance\n var TWorkImportance = \"wiLow \" + \"wiNormal \" + \"wiHigh \";\n\n // enum TWorkRouteType\n var TWorkRouteType = \"wrtSoft \" + \"wrtHard \";\n\n // enum TWorkState\n var TWorkState =\n \"wsInit \" +\n \"wsRunning \" +\n \"wsDone \" +\n \"wsControlled \" +\n \"wsAborted \" +\n \"wsContinued \";\n\n // enum TWorkTextBuildingMode\n var TWorkTextBuildingMode =\n \"wtmFull \" + \"wtmFromCurrent \" + \"wtmOnlyCurrent \";\n\n // Перечисления\n var ENUMS =\n TAccountType +\n TActionEnabledMode +\n TAddPosition +\n TAlignment +\n TAreaShowMode +\n TCertificateInvalidationReason +\n TCertificateType +\n TCheckListBoxItemState +\n TCloseOnEsc +\n TCompType +\n TConditionFormat +\n TConnectionIntent +\n TContentKind +\n TControlType +\n TCriterionContentType +\n TCultureType +\n TDataSetEventType +\n TDataSetState +\n TDateFormatType +\n TDateOffsetType +\n TDateTimeKind +\n TDeaAccessRights +\n TDocumentDefaultAction +\n TEditMode +\n TEditorCloseObservType +\n TEdmsApplicationAction +\n TEDocumentLockType +\n TEDocumentStepShowMode +\n TEDocumentStepVersionType +\n TEDocumentStorageFunction +\n TEDocumentStorageType +\n TEDocumentVersionSourceType +\n TEDocumentVersionState +\n TEncodeType +\n TExceptionCategory +\n TExportedSignaturesType +\n TExportedVersionType +\n TFieldDataType +\n TFolderType +\n TGridRowHeight +\n THyperlinkType +\n TImageFileFormat +\n TImageMode +\n TImageType +\n TInplaceHintKind +\n TISBLContext +\n TItemShow +\n TJobKind +\n TJoinType +\n TLabelPos +\n TLicensingType +\n TLifeCycleStageFontColor +\n TLifeCycleStageFontStyle +\n TLockableDevelopmentComponentType +\n TMaxRecordCountRestrictionType +\n TRangeValueType +\n TRelativeDate +\n TReportDestination +\n TReqDataType +\n TRequisiteEventType +\n TSBTimeType +\n TSearchShowMode +\n TSelectMode +\n TSignatureType +\n TSignerContentType +\n TStringsSortType +\n TStringValueType +\n TStructuredObjectAttributeType +\n TTaskAbortReason +\n TTextValueType +\n TUserObjectStatus +\n TUserType +\n TValuesBuildType +\n TViewMode +\n TViewSelectionMode +\n TWizardActionType +\n TWizardFormElementProperty +\n TWizardFormElementType +\n TWizardParamType +\n TWizardStepResult +\n TWizardStepType +\n TWorkAccessType +\n TWorkflowBlockType +\n TWorkflowDataType +\n TWorkImportance +\n TWorkRouteType +\n TWorkState +\n TWorkTextBuildingMode;\n\n // Системные функции ==> SYSFUNCTIONS\n var system_functions =\n \"AddSubString \" +\n \"AdjustLineBreaks \" +\n \"AmountInWords \" +\n \"Analysis \" +\n \"ArrayDimCount \" +\n \"ArrayHighBound \" +\n \"ArrayLowBound \" +\n \"ArrayOf \" +\n \"ArrayReDim \" +\n \"Assert \" +\n \"Assigned \" +\n \"BeginOfMonth \" +\n \"BeginOfPeriod \" +\n \"BuildProfilingOperationAnalysis \" +\n \"CallProcedure \" +\n \"CanReadFile \" +\n \"CArrayElement \" +\n \"CDataSetRequisite \" +\n \"ChangeDate \" +\n \"ChangeReferenceDataset \" +\n \"Char \" +\n \"CharPos \" +\n \"CheckParam \" +\n \"CheckParamValue \" +\n \"CompareStrings \" +\n \"ConstantExists \" +\n \"ControlState \" +\n \"ConvertDateStr \" +\n \"Copy \" +\n \"CopyFile \" +\n \"CreateArray \" +\n \"CreateCachedReference \" +\n \"CreateConnection \" +\n \"CreateDialog \" +\n \"CreateDualListDialog \" +\n \"CreateEditor \" +\n \"CreateException \" +\n \"CreateFile \" +\n \"CreateFolderDialog \" +\n \"CreateInputDialog \" +\n \"CreateLinkFile \" +\n \"CreateList \" +\n \"CreateLock \" +\n \"CreateMemoryDataSet \" +\n \"CreateObject \" +\n \"CreateOpenDialog \" +\n \"CreateProgress \" +\n \"CreateQuery \" +\n \"CreateReference \" +\n \"CreateReport \" +\n \"CreateSaveDialog \" +\n \"CreateScript \" +\n \"CreateSQLPivotFunction \" +\n \"CreateStringList \" +\n \"CreateTreeListSelectDialog \" +\n \"CSelectSQL \" +\n \"CSQL \" +\n \"CSubString \" +\n \"CurrentUserID \" +\n \"CurrentUserName \" +\n \"CurrentVersion \" +\n \"DataSetLocateEx \" +\n \"DateDiff \" +\n \"DateTimeDiff \" +\n \"DateToStr \" +\n \"DayOfWeek \" +\n \"DeleteFile \" +\n \"DirectoryExists \" +\n \"DisableCheckAccessRights \" +\n \"DisableCheckFullShowingRestriction \" +\n \"DisableMassTaskSendingRestrictions \" +\n \"DropTable \" +\n \"DupeString \" +\n \"EditText \" +\n \"EnableCheckAccessRights \" +\n \"EnableCheckFullShowingRestriction \" +\n \"EnableMassTaskSendingRestrictions \" +\n \"EndOfMonth \" +\n \"EndOfPeriod \" +\n \"ExceptionExists \" +\n \"ExceptionsOff \" +\n \"ExceptionsOn \" +\n \"Execute \" +\n \"ExecuteProcess \" +\n \"Exit \" +\n \"ExpandEnvironmentVariables \" +\n \"ExtractFileDrive \" +\n \"ExtractFileExt \" +\n \"ExtractFileName \" +\n \"ExtractFilePath \" +\n \"ExtractParams \" +\n \"FileExists \" +\n \"FileSize \" +\n \"FindFile \" +\n \"FindSubString \" +\n \"FirmContext \" +\n \"ForceDirectories \" +\n \"Format \" +\n \"FormatDate \" +\n \"FormatNumeric \" +\n \"FormatSQLDate \" +\n \"FormatString \" +\n \"FreeException \" +\n \"GetComponent \" +\n \"GetComponentLaunchParam \" +\n \"GetConstant \" +\n \"GetLastException \" +\n \"GetReferenceRecord \" +\n \"GetRefTypeByRefID \" +\n \"GetTableID \" +\n \"GetTempFolder \" +\n \"IfThen \" +\n \"In \" +\n \"IndexOf \" +\n \"InputDialog \" +\n \"InputDialogEx \" +\n \"InteractiveMode \" +\n \"IsFileLocked \" +\n \"IsGraphicFile \" +\n \"IsNumeric \" +\n \"Length \" +\n \"LoadString \" +\n \"LoadStringFmt \" +\n \"LocalTimeToUTC \" +\n \"LowerCase \" +\n \"Max \" +\n \"MessageBox \" +\n \"MessageBoxEx \" +\n \"MimeDecodeBinary \" +\n \"MimeDecodeString \" +\n \"MimeEncodeBinary \" +\n \"MimeEncodeString \" +\n \"Min \" +\n \"MoneyInWords \" +\n \"MoveFile \" +\n \"NewID \" +\n \"Now \" +\n \"OpenFile \" +\n \"Ord \" +\n \"Precision \" +\n \"Raise \" +\n \"ReadCertificateFromFile \" +\n \"ReadFile \" +\n \"ReferenceCodeByID \" +\n \"ReferenceNumber \" +\n \"ReferenceRequisiteMode \" +\n \"ReferenceRequisiteValue \" +\n \"RegionDateSettings \" +\n \"RegionNumberSettings \" +\n \"RegionTimeSettings \" +\n \"RegRead \" +\n \"RegWrite \" +\n \"RenameFile \" +\n \"Replace \" +\n \"Round \" +\n \"SelectServerCode \" +\n \"SelectSQL \" +\n \"ServerDateTime \" +\n \"SetConstant \" +\n \"SetManagedFolderFieldsState \" +\n \"ShowConstantsInputDialog \" +\n \"ShowMessage \" +\n \"Sleep \" +\n \"Split \" +\n \"SQL \" +\n \"SQL2XLSTAB \" +\n \"SQLProfilingSendReport \" +\n \"StrToDate \" +\n \"SubString \" +\n \"SubStringCount \" +\n \"SystemSetting \" +\n \"Time \" +\n \"TimeDiff \" +\n \"Today \" +\n \"Transliterate \" +\n \"Trim \" +\n \"UpperCase \" +\n \"UserStatus \" +\n \"UTCToLocalTime \" +\n \"ValidateXML \" +\n \"VarIsClear \" +\n \"VarIsEmpty \" +\n \"VarIsNull \" +\n \"WorkTimeDiff \" +\n \"WriteFile \" +\n \"WriteFileEx \" +\n \"WriteObjectHistory \" +\n \"Анализ \" +\n \"БазаДанных \" +\n \"БлокЕсть \" +\n \"БлокЕстьРасш \" +\n \"БлокИнфо \" +\n \"БлокСнять \" +\n \"БлокСнятьРасш \" +\n \"БлокУстановить \" +\n \"Ввод \" +\n \"ВводМеню \" +\n \"ВедС \" +\n \"ВедСпр \" +\n \"ВерхняяГраницаМассива \" +\n \"ВнешПрогр \" +\n \"Восст \" +\n \"ВременнаяПапка \" +\n \"Время \" +\n \"ВыборSQL \" +\n \"ВыбратьЗапись \" +\n \"ВыделитьСтр \" +\n \"Вызвать \" +\n \"Выполнить \" +\n \"ВыпПрогр \" +\n \"ГрафическийФайл \" +\n \"ГруппаДополнительно \" +\n \"ДатаВремяСерв \" +\n \"ДеньНедели \" +\n \"ДиалогДаНет \" +\n \"ДлинаСтр \" +\n \"ДобПодстр \" +\n \"ЕПусто \" +\n \"ЕслиТо \" +\n \"ЕЧисло \" +\n \"ЗамПодстр \" +\n \"ЗаписьСправочника \" +\n \"ЗначПоляСпр \" +\n \"ИДТипСпр \" +\n \"ИзвлечьДиск \" +\n \"ИзвлечьИмяФайла \" +\n \"ИзвлечьПуть \" +\n \"ИзвлечьРасширение \" +\n \"ИзмДат \" +\n \"ИзменитьРазмерМассива \" +\n \"ИзмеренийМассива \" +\n \"ИмяОрг \" +\n \"ИмяПоляСпр \" +\n \"Индекс \" +\n \"ИндикаторЗакрыть \" +\n \"ИндикаторОткрыть \" +\n \"ИндикаторШаг \" +\n \"ИнтерактивныйРежим \" +\n \"ИтогТблСпр \" +\n \"КодВидВедСпр \" +\n \"КодВидСпрПоИД \" +\n \"КодПоAnalit \" +\n \"КодСимвола \" +\n \"КодСпр \" +\n \"КолПодстр \" +\n \"КолПроп \" +\n \"КонМес \" +\n \"Конст \" +\n \"КонстЕсть \" +\n \"КонстЗнач \" +\n \"КонТран \" +\n \"КопироватьФайл \" +\n \"КопияСтр \" +\n \"КПериод \" +\n \"КСтрТблСпр \" +\n \"Макс \" +\n \"МаксСтрТблСпр \" +\n \"Массив \" +\n \"Меню \" +\n \"МенюРасш \" +\n \"Мин \" +\n \"НаборДанныхНайтиРасш \" +\n \"НаимВидСпр \" +\n \"НаимПоAnalit \" +\n \"НаимСпр \" +\n \"НастроитьПереводыСтрок \" +\n \"НачМес \" +\n \"НачТран \" +\n \"НижняяГраницаМассива \" +\n \"НомерСпр \" +\n \"НПериод \" +\n \"Окно \" +\n \"Окр \" +\n \"Окружение \" +\n \"ОтлИнфДобавить \" +\n \"ОтлИнфУдалить \" +\n \"Отчет \" +\n \"ОтчетАнал \" +\n \"ОтчетИнт \" +\n \"ПапкаСуществует \" +\n \"Пауза \" +\n \"ПВыборSQL \" +\n \"ПереименоватьФайл \" +\n \"Переменные \" +\n \"ПереместитьФайл \" +\n \"Подстр \" +\n \"ПоискПодстр \" +\n \"ПоискСтр \" +\n \"ПолучитьИДТаблицы \" +\n \"ПользовательДополнительно \" +\n \"ПользовательИД \" +\n \"ПользовательИмя \" +\n \"ПользовательСтатус \" +\n \"Прервать \" +\n \"ПроверитьПараметр \" +\n \"ПроверитьПараметрЗнач \" +\n \"ПроверитьУсловие \" +\n \"РазбСтр \" +\n \"РазнВремя \" +\n \"РазнДат \" +\n \"РазнДатаВремя \" +\n \"РазнРабВремя \" +\n \"РегУстВрем \" +\n \"РегУстДат \" +\n \"РегУстЧсл \" +\n \"РедТекст \" +\n \"РеестрЗапись \" +\n \"РеестрСписокИменПарам \" +\n \"РеестрЧтение \" +\n \"РеквСпр \" +\n \"РеквСпрПр \" +\n \"Сегодня \" +\n \"Сейчас \" +\n \"Сервер \" +\n \"СерверПроцессИД \" +\n \"СертификатФайлСчитать \" +\n \"СжПроб \" +\n \"Символ \" +\n \"СистемаДиректумКод \" +\n \"СистемаИнформация \" +\n \"СистемаКод \" +\n \"Содержит \" +\n \"СоединениеЗакрыть \" +\n \"СоединениеОткрыть \" +\n \"СоздатьДиалог \" +\n \"СоздатьДиалогВыбораИзДвухСписков \" +\n \"СоздатьДиалогВыбораПапки \" +\n \"СоздатьДиалогОткрытияФайла \" +\n \"СоздатьДиалогСохраненияФайла \" +\n \"СоздатьЗапрос \" +\n \"СоздатьИндикатор \" +\n \"СоздатьИсключение \" +\n \"СоздатьКэшированныйСправочник \" +\n \"СоздатьМассив \" +\n \"СоздатьНаборДанных \" +\n \"СоздатьОбъект \" +\n \"СоздатьОтчет \" +\n \"СоздатьПапку \" +\n \"СоздатьРедактор \" +\n \"СоздатьСоединение \" +\n \"СоздатьСписок \" +\n \"СоздатьСписокСтрок \" +\n \"СоздатьСправочник \" +\n \"СоздатьСценарий \" +\n \"СоздСпр \" +\n \"СостСпр \" +\n \"Сохр \" +\n \"СохрСпр \" +\n \"СписокСистем \" +\n \"Спр \" +\n \"Справочник \" +\n \"СпрБлокЕсть \" +\n \"СпрБлокСнять \" +\n \"СпрБлокСнятьРасш \" +\n \"СпрБлокУстановить \" +\n \"СпрИзмНабДан \" +\n \"СпрКод \" +\n \"СпрНомер \" +\n \"СпрОбновить \" +\n \"СпрОткрыть \" +\n \"СпрОтменить \" +\n \"СпрПарам \" +\n \"СпрПолеЗнач \" +\n \"СпрПолеИмя \" +\n \"СпрРекв \" +\n \"СпрРеквВведЗн \" +\n \"СпрРеквНовые \" +\n \"СпрРеквПр \" +\n \"СпрРеквПредЗн \" +\n \"СпрРеквРежим \" +\n \"СпрРеквТипТекст \" +\n \"СпрСоздать \" +\n \"СпрСост \" +\n \"СпрСохранить \" +\n \"СпрТблИтог \" +\n \"СпрТблСтр \" +\n \"СпрТблСтрКол \" +\n \"СпрТблСтрМакс \" +\n \"СпрТблСтрМин \" +\n \"СпрТблСтрПред \" +\n \"СпрТблСтрСлед \" +\n \"СпрТблСтрСозд \" +\n \"СпрТблСтрУд \" +\n \"СпрТекПредст \" +\n \"СпрУдалить \" +\n \"СравнитьСтр \" +\n \"СтрВерхРегистр \" +\n \"СтрНижнРегистр \" +\n \"СтрТблСпр \" +\n \"СумПроп \" +\n \"Сценарий \" +\n \"СценарийПарам \" +\n \"ТекВерсия \" +\n \"ТекОрг \" +\n \"Точн \" +\n \"Тран \" +\n \"Транслитерация \" +\n \"УдалитьТаблицу \" +\n \"УдалитьФайл \" +\n \"УдСпр \" +\n \"УдСтрТблСпр \" +\n \"Уст \" +\n \"УстановкиКонстант \" +\n \"ФайлАтрибутСчитать \" +\n \"ФайлАтрибутУстановить \" +\n \"ФайлВремя \" +\n \"ФайлВремяУстановить \" +\n \"ФайлВыбрать \" +\n \"ФайлЗанят \" +\n \"ФайлЗаписать \" +\n \"ФайлИскать \" +\n \"ФайлКопировать \" +\n \"ФайлМожноЧитать \" +\n \"ФайлОткрыть \" +\n \"ФайлПереименовать \" +\n \"ФайлПерекодировать \" +\n \"ФайлПереместить \" +\n \"ФайлПросмотреть \" +\n \"ФайлРазмер \" +\n \"ФайлСоздать \" +\n \"ФайлСсылкаСоздать \" +\n \"ФайлСуществует \" +\n \"ФайлСчитать \" +\n \"ФайлУдалить \" +\n \"ФмтSQLДат \" +\n \"ФмтДат \" +\n \"ФмтСтр \" +\n \"ФмтЧсл \" +\n \"Формат \" +\n \"ЦМассивЭлемент \" +\n \"ЦНаборДанныхРеквизит \" +\n \"ЦПодстр \";\n\n // Предопределенные переменные ==> built_in\n var predefined_variables =\n \"AltState \" +\n \"Application \" +\n \"CallType \" +\n \"ComponentTokens \" +\n \"CreatedJobs \" +\n \"CreatedNotices \" +\n \"ControlState \" +\n \"DialogResult \" +\n \"Dialogs \" +\n \"EDocuments \" +\n \"EDocumentVersionSource \" +\n \"Folders \" +\n \"GlobalIDs \" +\n \"Job \" +\n \"Jobs \" +\n \"InputValue \" +\n \"LookUpReference \" +\n \"LookUpRequisiteNames \" +\n \"LookUpSearch \" +\n \"Object \" +\n \"ParentComponent \" +\n \"Processes \" +\n \"References \" +\n \"Requisite \" +\n \"ReportName \" +\n \"Reports \" +\n \"Result \" +\n \"Scripts \" +\n \"Searches \" +\n \"SelectedAttachments \" +\n \"SelectedItems \" +\n \"SelectMode \" +\n \"Sender \" +\n \"ServerEvents \" +\n \"ServiceFactory \" +\n \"ShiftState \" +\n \"SubTask \" +\n \"SystemDialogs \" +\n \"Tasks \" +\n \"Wizard \" +\n \"Wizards \" +\n \"Work \" +\n \"ВызовСпособ \" +\n \"ИмяОтчета \" +\n \"РеквЗнач \";\n\n // Интерфейсы ==> type\n var interfaces =\n \"IApplication \" +\n \"IAccessRights \" +\n \"IAccountRepository \" +\n \"IAccountSelectionRestrictions \" +\n \"IAction \" +\n \"IActionList \" +\n \"IAdministrationHistoryDescription \" +\n \"IAnchors \" +\n \"IApplication \" +\n \"IArchiveInfo \" +\n \"IAttachment \" +\n \"IAttachmentList \" +\n \"ICheckListBox \" +\n \"ICheckPointedList \" +\n \"IColumn \" +\n \"IComponent \" +\n \"IComponentDescription \" +\n \"IComponentToken \" +\n \"IComponentTokenFactory \" +\n \"IComponentTokenInfo \" +\n \"ICompRecordInfo \" +\n \"IConnection \" +\n \"IContents \" +\n \"IControl \" +\n \"IControlJob \" +\n \"IControlJobInfo \" +\n \"IControlList \" +\n \"ICrypto \" +\n \"ICrypto2 \" +\n \"ICustomJob \" +\n \"ICustomJobInfo \" +\n \"ICustomListBox \" +\n \"ICustomObjectWizardStep \" +\n \"ICustomWork \" +\n \"ICustomWorkInfo \" +\n \"IDataSet \" +\n \"IDataSetAccessInfo \" +\n \"IDataSigner \" +\n \"IDateCriterion \" +\n \"IDateRequisite \" +\n \"IDateRequisiteDescription \" +\n \"IDateValue \" +\n \"IDeaAccessRights \" +\n \"IDeaObjectInfo \" +\n \"IDevelopmentComponentLock \" +\n \"IDialog \" +\n \"IDialogFactory \" +\n \"IDialogPickRequisiteItems \" +\n \"IDialogsFactory \" +\n \"IDICSFactory \" +\n \"IDocRequisite \" +\n \"IDocumentInfo \" +\n \"IDualListDialog \" +\n \"IECertificate \" +\n \"IECertificateInfo \" +\n \"IECertificates \" +\n \"IEditControl \" +\n \"IEditorForm \" +\n \"IEdmsExplorer \" +\n \"IEdmsObject \" +\n \"IEdmsObjectDescription \" +\n \"IEdmsObjectFactory \" +\n \"IEdmsObjectInfo \" +\n \"IEDocument \" +\n \"IEDocumentAccessRights \" +\n \"IEDocumentDescription \" +\n \"IEDocumentEditor \" +\n \"IEDocumentFactory \" +\n \"IEDocumentInfo \" +\n \"IEDocumentStorage \" +\n \"IEDocumentVersion \" +\n \"IEDocumentVersionListDialog \" +\n \"IEDocumentVersionSource \" +\n \"IEDocumentWizardStep \" +\n \"IEDocVerSignature \" +\n \"IEDocVersionState \" +\n \"IEnabledMode \" +\n \"IEncodeProvider \" +\n \"IEncrypter \" +\n \"IEvent \" +\n \"IEventList \" +\n \"IException \" +\n \"IExternalEvents \" +\n \"IExternalHandler \" +\n \"IFactory \" +\n \"IField \" +\n \"IFileDialog \" +\n \"IFolder \" +\n \"IFolderDescription \" +\n \"IFolderDialog \" +\n \"IFolderFactory \" +\n \"IFolderInfo \" +\n \"IForEach \" +\n \"IForm \" +\n \"IFormTitle \" +\n \"IFormWizardStep \" +\n \"IGlobalIDFactory \" +\n \"IGlobalIDInfo \" +\n \"IGrid \" +\n \"IHasher \" +\n \"IHistoryDescription \" +\n \"IHyperLinkControl \" +\n \"IImageButton \" +\n \"IImageControl \" +\n \"IInnerPanel \" +\n \"IInplaceHint \" +\n \"IIntegerCriterion \" +\n \"IIntegerList \" +\n \"IIntegerRequisite \" +\n \"IIntegerValue \" +\n \"IISBLEditorForm \" +\n \"IJob \" +\n \"IJobDescription \" +\n \"IJobFactory \" +\n \"IJobForm \" +\n \"IJobInfo \" +\n \"ILabelControl \" +\n \"ILargeIntegerCriterion \" +\n \"ILargeIntegerRequisite \" +\n \"ILargeIntegerValue \" +\n \"ILicenseInfo \" +\n \"ILifeCycleStage \" +\n \"IList \" +\n \"IListBox \" +\n \"ILocalIDInfo \" +\n \"ILocalization \" +\n \"ILock \" +\n \"IMemoryDataSet \" +\n \"IMessagingFactory \" +\n \"IMetadataRepository \" +\n \"INotice \" +\n \"INoticeInfo \" +\n \"INumericCriterion \" +\n \"INumericRequisite \" +\n \"INumericValue \" +\n \"IObject \" +\n \"IObjectDescription \" +\n \"IObjectImporter \" +\n \"IObjectInfo \" +\n \"IObserver \" +\n \"IPanelGroup \" +\n \"IPickCriterion \" +\n \"IPickProperty \" +\n \"IPickRequisite \" +\n \"IPickRequisiteDescription \" +\n \"IPickRequisiteItem \" +\n \"IPickRequisiteItems \" +\n \"IPickValue \" +\n \"IPrivilege \" +\n \"IPrivilegeList \" +\n \"IProcess \" +\n \"IProcessFactory \" +\n \"IProcessMessage \" +\n \"IProgress \" +\n \"IProperty \" +\n \"IPropertyChangeEvent \" +\n \"IQuery \" +\n \"IReference \" +\n \"IReferenceCriterion \" +\n \"IReferenceEnabledMode \" +\n \"IReferenceFactory \" +\n \"IReferenceHistoryDescription \" +\n \"IReferenceInfo \" +\n \"IReferenceRecordCardWizardStep \" +\n \"IReferenceRequisiteDescription \" +\n \"IReferencesFactory \" +\n \"IReferenceValue \" +\n \"IRefRequisite \" +\n \"IReport \" +\n \"IReportFactory \" +\n \"IRequisite \" +\n \"IRequisiteDescription \" +\n \"IRequisiteDescriptionList \" +\n \"IRequisiteFactory \" +\n \"IRichEdit \" +\n \"IRouteStep \" +\n \"IRule \" +\n \"IRuleList \" +\n \"ISchemeBlock \" +\n \"IScript \" +\n \"IScriptFactory \" +\n \"ISearchCriteria \" +\n \"ISearchCriterion \" +\n \"ISearchDescription \" +\n \"ISearchFactory \" +\n \"ISearchFolderInfo \" +\n \"ISearchForObjectDescription \" +\n \"ISearchResultRestrictions \" +\n \"ISecuredContext \" +\n \"ISelectDialog \" +\n \"IServerEvent \" +\n \"IServerEventFactory \" +\n \"IServiceDialog \" +\n \"IServiceFactory \" +\n \"ISignature \" +\n \"ISignProvider \" +\n \"ISignProvider2 \" +\n \"ISignProvider3 \" +\n \"ISimpleCriterion \" +\n \"IStringCriterion \" +\n \"IStringList \" +\n \"IStringRequisite \" +\n \"IStringRequisiteDescription \" +\n \"IStringValue \" +\n \"ISystemDialogsFactory \" +\n \"ISystemInfo \" +\n \"ITabSheet \" +\n \"ITask \" +\n \"ITaskAbortReasonInfo \" +\n \"ITaskCardWizardStep \" +\n \"ITaskDescription \" +\n \"ITaskFactory \" +\n \"ITaskInfo \" +\n \"ITaskRoute \" +\n \"ITextCriterion \" +\n \"ITextRequisite \" +\n \"ITextValue \" +\n \"ITreeListSelectDialog \" +\n \"IUser \" +\n \"IUserList \" +\n \"IValue \" +\n \"IView \" +\n \"IWebBrowserControl \" +\n \"IWizard \" +\n \"IWizardAction \" +\n \"IWizardFactory \" +\n \"IWizardFormElement \" +\n \"IWizardParam \" +\n \"IWizardPickParam \" +\n \"IWizardReferenceParam \" +\n \"IWizardStep \" +\n \"IWorkAccessRights \" +\n \"IWorkDescription \" +\n \"IWorkflowAskableParam \" +\n \"IWorkflowAskableParams \" +\n \"IWorkflowBlock \" +\n \"IWorkflowBlockResult \" +\n \"IWorkflowEnabledMode \" +\n \"IWorkflowParam \" +\n \"IWorkflowPickParam \" +\n \"IWorkflowReferenceParam \" +\n \"IWorkState \" +\n \"IWorkTreeCustomNode \" +\n \"IWorkTreeJobNode \" +\n \"IWorkTreeTaskNode \" +\n \"IXMLEditorForm \" +\n \"SBCrypto \";\n\n // built_in : встроенные или библиотечные объекты (константы, перечисления)\n var BUILTIN = CONSTANTS + ENUMS;\n\n // class: встроенные наборы значений, системные объекты, фабрики\n var CLASS = predefined_variables;\n\n // literal : примитивные типы\n var LITERAL = \"null true false nil \";\n\n // number : числа\n var NUMBERS = {\n className: \"number\",\n begin: hljs.NUMBER_RE,\n relevance: 0,\n };\n\n // string : строки\n var STRINGS = {\n className: \"string\",\n variants: [{ begin: '\"', end: '\"' }, { begin: \"'\", end: \"'\" }],\n };\n\n // Токены\n var DOCTAGS = {\n className: \"doctag\",\n begin: \"\\\\b(?:TODO|DONE|BEGIN|END|STUB|CHG|FIXME|NOTE|BUG|XXX)\\\\b\",\n relevance: 0,\n };\n\n // Однострочный комментарий\n var ISBL_LINE_COMMENT_MODE = {\n className: \"comment\",\n begin: \"//\",\n end: \"$\",\n relevance: 0,\n contains: [hljs.PHRASAL_WORDS_MODE, DOCTAGS],\n };\n\n // Многострочный комментарий\n var ISBL_BLOCK_COMMENT_MODE = {\n className: \"comment\",\n begin: \"/\\\\*\",\n end: \"\\\\*/\",\n relevance: 0,\n contains: [hljs.PHRASAL_WORDS_MODE, DOCTAGS],\n };\n\n // comment : комментарии\n var COMMENTS = {\n variants: [ISBL_LINE_COMMENT_MODE, ISBL_BLOCK_COMMENT_MODE],\n };\n\n // keywords : ключевые слова\n var KEYWORDS = {\n keyword: KEYWORD,\n built_in: BUILTIN,\n class: CLASS,\n literal: LITERAL,\n };\n\n // methods : методы\n var METHODS = {\n begin: \"\\\\.\\\\s*\" + hljs.UNDERSCORE_IDENT_RE,\n keywords: KEYWORDS,\n relevance: 0,\n };\n\n // type : встроенные типы\n var TYPES = {\n className: \"type\",\n begin: \":[ \\\\t]*(\" + interfaces.trim().replace(/\\s/g, \"|\") + \")\",\n end: \"[ \\\\t]*=\",\n excludeEnd: true,\n };\n\n // variables : переменные\n var VARIABLES = {\n className: \"variable\",\n lexemes: UNDERSCORE_IDENT_RE,\n keywords: KEYWORDS,\n begin: UNDERSCORE_IDENT_RE,\n relevance: 0,\n containts: [TYPES, METHODS],\n };\n\n // Имена функций\n var FUNCTION_TITLE = FUNCTION_NAME_IDENT_RE + \"\\\\(\";\n\n var TITLE_MODE = {\n className: \"title\",\n lexemes: UNDERSCORE_IDENT_RE,\n keywords: {\n built_in: system_functions,\n },\n begin: FUNCTION_TITLE,\n end: \"\\\\(\",\n returnBegin: true,\n excludeEnd: true,\n };\n\n // function : функции\n var FUNCTIONS = {\n className: \"function\",\n begin: FUNCTION_TITLE,\n end: \"\\\\)$\",\n returnBegin: true,\n lexemes: UNDERSCORE_IDENT_RE,\n keywords: KEYWORDS,\n illegal: \"[\\\\[\\\\]\\\\|\\\\$\\\\?%,~#@]\",\n contains: [TITLE_MODE, METHODS, VARIABLES, STRINGS, NUMBERS, COMMENTS],\n };\n\n return {\n aliases: [\"isbl\"],\n case_insensitive: true,\n lexemes: UNDERSCORE_IDENT_RE,\n keywords: KEYWORDS,\n illegal: \"\\\\$|\\\\?|%|,|;$|~|#|@|</\",\n contains: [\n FUNCTIONS,\n TYPES,\n METHODS,\n VARIABLES,\n STRINGS,\n NUMBERS,\n COMMENTS,\n ],\n };\n};","module.exports = function(hljs) {\n var JAVA_IDENT_RE = '[\\u00C0-\\u02B8a-zA-Z_$][\\u00C0-\\u02B8a-zA-Z_$0-9]*';\n var GENERIC_IDENT_RE = JAVA_IDENT_RE + '(<' + JAVA_IDENT_RE + '(\\\\s*,\\\\s*' + JAVA_IDENT_RE + ')*>)?';\n var KEYWORDS =\n 'false synchronized int abstract float private char boolean var static null if const ' +\n 'for true while long strictfp finally protected import native final void ' +\n 'enum else break transient catch instanceof byte super volatile case assert short ' +\n 'package default double public try this switch continue throws protected public private ' +\n 'module requires exports do';\n\n // https://docs.oracle.com/javase/7/docs/technotes/guides/language/underscores-literals.html\n var JAVA_NUMBER_RE = '\\\\b' +\n '(' +\n '0[bB]([01]+[01_]+[01]+|[01]+)' + // 0b...\n '|' +\n '0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)' + // 0x...\n '|' +\n '(' +\n '([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)(\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))?' +\n '|' +\n '\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)' +\n ')' +\n '([eE][-+]?\\\\d+)?' + // octal, decimal, float\n ')' +\n '[lLfF]?';\n var JAVA_NUMBER_MODE = {\n className: 'number',\n begin: JAVA_NUMBER_RE,\n relevance: 0\n };\n\n return {\n aliases: ['jsp'],\n keywords: KEYWORDS,\n illegal: /<\\/|#/,\n contains: [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance : 0,\n contains : [\n {\n // eat up @'s in emails to prevent them to be recognized as doctags\n begin: /\\w+@/, relevance: 0\n },\n {\n className : 'doctag',\n begin : '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'class',\n beginKeywords: 'class interface', end: /[{;=]/, excludeEnd: true,\n keywords: 'class interface',\n illegal: /[:\"\\[\\]]/,\n contains: [\n {beginKeywords: 'extends implements'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n // Expression keywords prevent 'keyword Name(...)' from being\n // recognized as a function definition\n beginKeywords: 'new throw return else',\n relevance: 0\n },\n {\n className: 'function',\n begin: '(' + GENERIC_IDENT_RE + '\\\\s+)+' + hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(', returnBegin: true, end: /[{;=]/,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\n relevance: 0,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n JAVA_NUMBER_MODE,\n {\n className: 'meta', begin: '@[A-Za-z]+'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\n var KEYWORDS = {\n keyword:\n 'in of if for while finally var new function do return void else break catch ' +\n 'instanceof with throw case default try this switch continue typeof delete ' +\n 'let yield const export super debugger as async await static ' +\n // ECMAScript 6 modules import\n 'import from as'\n ,\n literal:\n 'true false null undefined NaN Infinity',\n built_in:\n 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\n 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\n 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\n 'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\n 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\n 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\n 'module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect ' +\n 'Promise'\n };\n var EXPRESSIONS;\n var NUMBER = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0[bB][01]+)' },\n { begin: '\\\\b(0[oO][0-7]+)' },\n { begin: hljs.C_NUMBER_RE }\n ],\n relevance: 0\n };\n var SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{', end: '\\\\}',\n keywords: KEYWORDS,\n contains: [] // defined later\n };\n var TEMPLATE_STRING = {\n className: 'string',\n begin: '`', end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n SUBST.contains = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n TEMPLATE_STRING,\n NUMBER,\n hljs.REGEXP_MODE\n ]\n var PARAMS_CONTAINS = SUBST.contains.concat([\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]);\n\n return {\n aliases: ['js', 'jsx'],\n keywords: KEYWORDS,\n contains: [\n {\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n },\n {\n className: 'meta',\n begin: /^#!/, end: /$/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n TEMPLATE_STRING,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBER,\n { // object attr container\n begin: /[{,]\\s*/, relevance: 0,\n contains: [\n {\n begin: IDENT_RE + '\\\\s*:', returnBegin: true,\n relevance: 0,\n contains: [{className: 'attr', begin: IDENT_RE, relevance: 0}]\n }\n ]\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n begin: '(\\\\(.*?\\\\)|' + IDENT_RE + ')\\\\s*=>', returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: IDENT_RE\n },\n {\n begin: /\\(\\s*\\)/,\n },\n {\n begin: /\\(/, end: /\\)/,\n excludeBegin: true, excludeEnd: true,\n keywords: KEYWORDS,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n { // E4X / JSX\n begin: /</, end: /(\\/\\w+|\\w+\\/)>/,\n subLanguage: 'xml',\n contains: [\n {begin: /<\\w+\\s*\\/>/, skip: true},\n {\n begin: /<\\w+/, end: /(\\/\\w+|\\w+\\/)>/, skip: true,\n contains: [\n {begin: /<\\w+\\s*\\/>/, skip: true},\n 'self'\n ]\n }\n ]\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n beginKeywords: 'function', end: /\\{/, excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: IDENT_RE}),\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n contains: PARAMS_CONTAINS\n }\n ],\n illegal: /\\[|%/\n },\n {\n begin: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n },\n hljs.METHOD_GUARD,\n { // ES6 class\n className: 'class',\n beginKeywords: 'class', end: /[{;=]/, excludeEnd: true,\n illegal: /[:\"\\[\\]]/,\n contains: [\n {beginKeywords: 'extends'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n beginKeywords: 'constructor', end: /\\{/, excludeEnd: true\n }\n ],\n illegal: /#(?!!)/\n };\n};","module.exports = function (hljs) {\n var PARAM = {\n begin: /[\\w-]+ *=/, returnBegin: true,\n relevance: 0,\n contains: [{className: 'attr', begin: /[\\w-]+/}]\n };\n var PARAMSBLOCK = {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n contains: [PARAM],\n relevance : 0\n };\n var OPERATION = {\n className: 'function',\n begin: /:[\\w\\-.]+/,\n relevance: 0\n };\n var PATH = {\n className: 'string',\n begin: /\\B(([\\/.])[\\w\\-.\\/=]+)+/,\n };\n var COMMAND_PARAMS = {\n className: 'params',\n begin: /--[\\w\\-=\\/]+/,\n };\n return {\n aliases: ['wildfly-cli'],\n lexemes: '[a-z\\-]+',\n keywords: {\n keyword: 'alias batch cd clear command connect connection-factory connection-info data-source deploy ' +\n 'deployment-info deployment-overlay echo echo-dmr help history if jdbc-driver-info jms-queue|20 jms-topic|20 ls ' +\n 'patch pwd quit read-attribute read-operation reload rollout-plan run-batch set shutdown try unalias ' +\n 'undeploy unset version xa-data-source', // module\n literal: 'true false'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n COMMAND_PARAMS,\n OPERATION,\n PATH,\n PARAMSBLOCK\n ]\n }\n};","module.exports = function(hljs) {\n var LITERALS = {literal: 'true false null'};\n var TYPES = [\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ];\n var VALUE_CONTAINER = {\n end: ',', endsWithParent: true, excludeEnd: true,\n contains: TYPES,\n keywords: LITERALS\n };\n var OBJECT = {\n begin: '{', end: '}',\n contains: [\n {\n className: 'attr',\n begin: /\"/, end: /\"/,\n contains: [hljs.BACKSLASH_ESCAPE],\n illegal: '\\\\n',\n },\n hljs.inherit(VALUE_CONTAINER, {begin: /:/})\n ],\n illegal: '\\\\S'\n };\n var ARRAY = {\n begin: '\\\\[', end: '\\\\]',\n contains: [hljs.inherit(VALUE_CONTAINER)], // inherit is a workaround for a bug that makes shared modes with endsWithParent compile only the ending of one of the parents\n illegal: '\\\\S'\n };\n TYPES.splice(TYPES.length, 0, OBJECT, ARRAY);\n return {\n contains: TYPES,\n keywords: LITERALS,\n illegal: '\\\\S'\n };\n};","module.exports = function(hljs) {\n // Since there are numerous special names in Julia, it is too much trouble\n // to maintain them by hand. Hence these names (i.e. keywords, literals and\n // built-ins) are automatically generated from Julia v0.6 itself through\n // the following scripts for each.\n\n var KEYWORDS = {\n // # keyword generator, multi-word keywords handled manually below\n // foreach(println, [\"in\", \"isa\", \"where\"])\n // for kw in Base.REPLCompletions.complete_keyword(\"\")\n // if !(contains(kw, \" \") || kw == \"struct\")\n // println(kw)\n // end\n // end\n keyword:\n 'in isa where ' +\n 'baremodule begin break catch ccall const continue do else elseif end export false finally for function ' +\n 'global if import importall let local macro module quote return true try using while ' +\n // legacy, to be deprecated in the next release\n 'type immutable abstract bitstype typealias ',\n\n // # literal generator\n // println(\"true\")\n // println(\"false\")\n // for name in Base.REPLCompletions.completions(\"\", 0)[1]\n // try\n // v = eval(Symbol(name))\n // if !(v isa Function || v isa Type || v isa TypeVar || v isa Module || v isa Colon)\n // println(name)\n // end\n // end\n // end\n literal:\n 'true false ' +\n 'ARGS C_NULL DevNull ENDIAN_BOM ENV I Inf Inf16 Inf32 Inf64 InsertionSort JULIA_HOME LOAD_PATH MergeSort ' +\n 'NaN NaN16 NaN32 NaN64 PROGRAM_FILE QuickSort RoundDown RoundFromZero RoundNearest RoundNearestTiesAway ' +\n 'RoundNearestTiesUp RoundToZero RoundUp STDERR STDIN STDOUT VERSION catalan e|0 eu|0 eulergamma golden im ' +\n 'nothing pi γ π φ ',\n\n // # built_in generator:\n // for name in Base.REPLCompletions.completions(\"\", 0)[1]\n // try\n // v = eval(Symbol(name))\n // if v isa Type || v isa TypeVar\n // println(name)\n // end\n // end\n // end\n built_in:\n 'ANY AbstractArray AbstractChannel AbstractFloat AbstractMatrix AbstractRNG AbstractSerializer AbstractSet ' +\n 'AbstractSparseArray AbstractSparseMatrix AbstractSparseVector AbstractString AbstractUnitRange AbstractVecOrMat ' +\n 'AbstractVector Any ArgumentError Array AssertionError Associative Base64DecodePipe Base64EncodePipe Bidiagonal '+\n 'BigFloat BigInt BitArray BitMatrix BitVector Bool BoundsError BufferStream CachingPool CapturedException ' +\n 'CartesianIndex CartesianRange Cchar Cdouble Cfloat Channel Char Cint Cintmax_t Clong Clonglong ClusterManager ' +\n 'Cmd CodeInfo Colon Complex Complex128 Complex32 Complex64 CompositeException Condition ConjArray ConjMatrix ' +\n 'ConjVector Cptrdiff_t Cshort Csize_t Cssize_t Cstring Cuchar Cuint Cuintmax_t Culong Culonglong Cushort Cwchar_t ' +\n 'Cwstring DataType Date DateFormat DateTime DenseArray DenseMatrix DenseVecOrMat DenseVector Diagonal Dict ' +\n 'DimensionMismatch Dims DirectIndexString Display DivideError DomainError EOFError EachLine Enum Enumerate ' +\n 'ErrorException Exception ExponentialBackOff Expr Factorization FileMonitor Float16 Float32 Float64 Function ' +\n 'Future GlobalRef GotoNode HTML Hermitian IO IOBuffer IOContext IOStream IPAddr IPv4 IPv6 IndexCartesian IndexLinear ' +\n 'IndexStyle InexactError InitError Int Int128 Int16 Int32 Int64 Int8 IntSet Integer InterruptException ' +\n 'InvalidStateException Irrational KeyError LabelNode LinSpace LineNumberNode LoadError LowerTriangular MIME Matrix ' +\n 'MersenneTwister Method MethodError MethodTable Module NTuple NewvarNode NullException Nullable Number ObjectIdDict ' +\n 'OrdinalRange OutOfMemoryError OverflowError Pair ParseError PartialQuickSort PermutedDimsArray Pipe ' +\n 'PollingFileWatcher ProcessExitedException Ptr QuoteNode RandomDevice Range RangeIndex Rational RawFD ' +\n 'ReadOnlyMemoryError Real ReentrantLock Ref Regex RegexMatch RemoteChannel RemoteException RevString RoundingMode ' +\n 'RowVector SSAValue SegmentationFault SerializationState Set SharedArray SharedMatrix SharedVector Signed ' +\n 'SimpleVector Slot SlotNumber SparseMatrixCSC SparseVector StackFrame StackOverflowError StackTrace StepRange ' +\n 'StepRangeLen StridedArray StridedMatrix StridedVecOrMat StridedVector String SubArray SubString SymTridiagonal ' +\n 'Symbol Symmetric SystemError TCPSocket Task Text TextDisplay Timer Tridiagonal Tuple Type TypeError TypeMapEntry ' +\n 'TypeMapLevel TypeName TypeVar TypedSlot UDPSocket UInt UInt128 UInt16 UInt32 UInt64 UInt8 UndefRefError UndefVarError ' +\n 'UnicodeError UniformScaling Union UnionAll UnitRange Unsigned UpperTriangular Val Vararg VecElement VecOrMat Vector ' +\n 'VersionNumber Void WeakKeyDict WeakRef WorkerConfig WorkerPool '\n };\n\n // ref: http://julia.readthedocs.org/en/latest/manual/variables/#allowed-variable-names\n var VARIABLE_NAME_RE = '[A-Za-z_\\\\u00A1-\\\\uFFFF][A-Za-z_0-9\\\\u00A1-\\\\uFFFF]*';\n\n // placeholder for recursive self-reference\n var DEFAULT = {\n lexemes: VARIABLE_NAME_RE, keywords: KEYWORDS, illegal: /<\\//\n };\n\n // ref: http://julia.readthedocs.org/en/latest/manual/integers-and-floating-point-numbers/\n var NUMBER = {\n className: 'number',\n // supported numeric literals:\n // * binary literal (e.g. 0x10)\n // * octal literal (e.g. 0o76543210)\n // * hexadecimal literal (e.g. 0xfedcba876543210)\n // * hexadecimal floating point literal (e.g. 0x1p0, 0x1.2p2)\n // * decimal literal (e.g. 9876543210, 100_000_000)\n // * floating pointe literal (e.g. 1.2, 1.2f, .2, 1., 1.2e10, 1.2e-10)\n begin: /(\\b0x[\\d_]*(\\.[\\d_]*)?|0x\\.\\d[\\d_]*)p[-+]?\\d+|\\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\\b\\d[\\d_]*(\\.[\\d_]*)?|\\.\\d[\\d_]*)([eEfF][-+]?\\d+)?/,\n relevance: 0\n };\n\n var CHAR = {\n className: 'string',\n begin: /'(.|\\\\[xXuU][a-zA-Z0-9]+)'/\n };\n\n var INTERPOLATION = {\n className: 'subst',\n begin: /\\$\\(/, end: /\\)/,\n keywords: KEYWORDS\n };\n\n var INTERPOLATED_VARIABLE = {\n className: 'variable',\n begin: '\\\\$' + VARIABLE_NAME_RE\n };\n\n // TODO: neatly escape normal code in string literal\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, INTERPOLATION, INTERPOLATED_VARIABLE],\n variants: [\n { begin: /\\w*\"\"\"/, end: /\"\"\"\\w*/, relevance: 10 },\n { begin: /\\w*\"/, end: /\"\\w*/ }\n ]\n };\n\n var COMMAND = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, INTERPOLATION, INTERPOLATED_VARIABLE],\n begin: '`', end: '`'\n };\n\n var MACROCALL = {\n className: 'meta',\n begin: '@' + VARIABLE_NAME_RE\n };\n\n var COMMENT = {\n className: 'comment',\n variants: [\n { begin: '#=', end: '=#', relevance: 10 },\n { begin: '#', end: '$' }\n ]\n };\n\n DEFAULT.contains = [\n NUMBER,\n CHAR,\n STRING,\n COMMAND,\n MACROCALL,\n COMMENT,\n hljs.HASH_COMMENT_MODE,\n {\n className: 'keyword',\n begin:\n '\\\\b(((abstract|primitive)\\\\s+)type|(mutable\\\\s+)?struct)\\\\b'\n },\n {begin: /<:/} // relevance booster\n ];\n INTERPOLATION.contains = DEFAULT.contains;\n\n return DEFAULT;\n};","module.exports = function(hljs) {\n return {\n contains: [\n {\n className: 'meta',\n begin: /^julia>/,\n relevance: 10,\n starts: {\n // end the highlighting if we are on a new line and the line does not have at\n // least six spaces in the beginning\n end: /^(?![ ]{6})/,\n subLanguage: 'julia'\n },\n // jldoctest Markdown blocks are used in the Julia manual and package docs indicate\n // code snippets that should be verified when the documentation is built. They can be\n // either REPL-like or script-like, but are usually REPL-like and therefore we apply\n // julia-repl highlighting to them. More information can be found in Documenter's\n // manual: https://juliadocs.github.io/Documenter.jl/latest/man/doctests.html\n aliases: ['jldoctest']\n }\n ]\n }\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'abstract as val var vararg get set class object open private protected public noinline ' +\n 'crossinline dynamic final enum if else do while for when throw try catch finally ' +\n 'import package is in fun override companion reified inline lateinit init ' +\n 'interface annotation data sealed internal infix operator out by constructor super ' +\n 'tailrec where const inner suspend typealias external expect actual ' +\n // to be deleted soon\n 'trait volatile transient native default',\n built_in:\n 'Byte Short Char Int Long Boolean Float Double Void Unit Nothing',\n literal:\n 'true false null'\n };\n var KEYWORDS_WITH_LABEL = {\n className: 'keyword',\n begin: /\\b(break|continue|return|this)\\b/,\n starts: {\n contains: [\n {\n className: 'symbol',\n begin: /@\\w+/\n }\n ]\n }\n };\n var LABEL = {\n className: 'symbol', begin: hljs.UNDERSCORE_IDENT_RE + '@'\n };\n\n // for string templates\n var SUBST = {\n className: 'subst',\n begin: '\\\\${', end: '}', contains: [hljs.APOS_STRING_MODE, hljs.C_NUMBER_MODE]\n };\n var VARIABLE = {\n className: 'variable', begin: '\\\\$' + hljs.UNDERSCORE_IDENT_RE\n };\n var STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"\"\"', end: '\"\"\"',\n contains: [VARIABLE, SUBST]\n },\n // Can't use built-in modes easily, as we want to use STRING in the meta\n // context as 'meta-string' and there's no syntax to remove explicitly set\n // classNames in built-in modes.\n {\n begin: '\\'', end: '\\'',\n illegal: /\\n/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\"', end: '\"',\n illegal: /\\n/,\n contains: [hljs.BACKSLASH_ESCAPE, VARIABLE, SUBST]\n }\n ]\n };\n\n var ANNOTATION_USE_SITE = {\n className: 'meta', begin: '@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\\\s*:(?:\\\\s*' + hljs.UNDERSCORE_IDENT_RE + ')?'\n };\n var ANNOTATION = {\n className: 'meta', begin: '@' + hljs.UNDERSCORE_IDENT_RE,\n contains: [\n {\n begin: /\\(/, end: /\\)/,\n contains: [\n hljs.inherit(STRING, {className: 'meta-string'})\n ]\n }\n ]\n };\n\n // https://kotlinlang.org/docs/reference/whatsnew11.html#underscores-in-numeric-literals\n // According to the doc above, the number mode of kotlin is the same as java 8,\n // so the code below is copied from java.js\n var KOTLIN_NUMBER_RE = '\\\\b' +\n '(' +\n '0[bB]([01]+[01_]+[01]+|[01]+)' + // 0b...\n '|' +\n '0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)' + // 0x...\n '|' +\n '(' +\n '([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)(\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))?' +\n '|' +\n '\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)' +\n ')' +\n '([eE][-+]?\\\\d+)?' + // octal, decimal, float\n ')' +\n '[lLfF]?';\n var KOTLIN_NUMBER_MODE = {\n className: 'number',\n begin: KOTLIN_NUMBER_RE,\n relevance: 0\n };\n\n return {\n aliases: ['kt'],\n keywords: KEYWORDS,\n contains : [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance : 0,\n contains : [{\n className : 'doctag',\n begin : '@[A-Za-z]+'\n }]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n KEYWORDS_WITH_LABEL,\n LABEL,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n {\n className: 'function',\n beginKeywords: 'fun', end: '[(]|$',\n returnBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n illegal: /fun\\s+(<.*>)?[^\\s\\(]+(\\s+[^\\s\\(]+)\\s*=/,\n relevance: 5,\n contains: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\n relevance: 0,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n className: 'type',\n begin: /</, end: />/, keywords: 'reified',\n relevance: 0\n },\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n endsParent: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n {\n begin: /:/, end: /[=,\\/]/, endsWithParent: true,\n contains: [\n {className: 'type', begin: hljs.UNDERSCORE_IDENT_RE},\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n relevance: 0\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n STRING,\n hljs.C_NUMBER_MODE\n ]\n },\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface trait', end: /[:\\{(]|$/, // remove 'trait' when removed from KEYWORDS\n excludeEnd: true,\n illegal: 'extends implements',\n contains: [\n {beginKeywords: 'public protected internal private constructor'},\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'type',\n begin: /</, end: />/, excludeBegin: true, excludeEnd: true,\n relevance: 0\n },\n {\n className: 'type',\n begin: /[,:]\\s*/, end: /[<\\(,]|$/, excludeBegin: true, returnEnd: true\n },\n ANNOTATION_USE_SITE,\n ANNOTATION\n ]\n },\n STRING,\n {\n className: 'meta',\n begin: \"^#!/usr/bin/env\", end: '$',\n illegal: '\\n'\n },\n KOTLIN_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var LASSO_IDENT_RE = '[a-zA-Z_][\\\\w.]*';\n var LASSO_ANGLE_RE = '<\\\\?(lasso(script)?|=)';\n var LASSO_CLOSE_RE = '\\\\]|\\\\?>';\n var LASSO_KEYWORDS = {\n literal:\n 'true false none minimal full all void and or not ' +\n 'bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft',\n built_in:\n 'array date decimal duration integer map pair string tag xml null ' +\n 'boolean bytes keyword list locale queue set stack staticarray ' +\n 'local var variable global data self inherited currentcapture givenblock',\n keyword:\n 'cache database_names database_schemanames database_tablenames ' +\n 'define_tag define_type email_batch encode_set html_comment handle ' +\n 'handle_error header if inline iterate ljax_target link ' +\n 'link_currentaction link_currentgroup link_currentrecord link_detail ' +\n 'link_firstgroup link_firstrecord link_lastgroup link_lastrecord ' +\n 'link_nextgroup link_nextrecord link_prevgroup link_prevrecord log ' +\n 'loop namespace_using output_none portal private protect records ' +\n 'referer referrer repeating resultset rows search_args ' +\n 'search_arguments select sort_args sort_arguments thread_atomic ' +\n 'value_list while abort case else fail_if fail_ifnot fail if_empty ' +\n 'if_false if_null if_true loop_abort loop_continue loop_count params ' +\n 'params_up return return_value run_children soap_definetag ' +\n 'soap_lastrequest soap_lastresponse tag_name ascending average by ' +\n 'define descending do equals frozen group handle_failure import in ' +\n 'into join let match max min on order parent protected provide public ' +\n 'require returnhome skip split_thread sum take thread to trait type ' +\n 'where with yield yieldhome'\n };\n var HTML_COMMENT = hljs.COMMENT(\n '<!--',\n '-->',\n {\n relevance: 0\n }\n );\n var LASSO_NOPROCESS = {\n className: 'meta',\n begin: '\\\\[noprocess\\\\]',\n starts: {\n end: '\\\\[/noprocess\\\\]',\n returnEnd: true,\n contains: [HTML_COMMENT]\n }\n };\n var LASSO_START = {\n className: 'meta',\n begin: '\\\\[/noprocess|' + LASSO_ANGLE_RE\n };\n var LASSO_DATAMEMBER = {\n className: 'symbol',\n begin: '\\'' + LASSO_IDENT_RE + '\\''\n };\n var LASSO_CODE = [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.inherit(hljs.C_NUMBER_MODE, {begin: hljs.C_NUMBER_RE + '|(-?infinity|NaN)\\\\b'}),\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n {\n className: 'string',\n begin: '`', end: '`'\n },\n { // variables\n variants: [\n {\n begin: '[#$]' + LASSO_IDENT_RE\n },\n {\n begin: '#', end: '\\\\d+',\n illegal: '\\\\W'\n }\n ]\n },\n {\n className: 'type',\n begin: '::\\\\s*', end: LASSO_IDENT_RE,\n illegal: '\\\\W'\n },\n {\n className: 'params',\n variants: [\n {\n begin: '-(?!infinity)' + LASSO_IDENT_RE,\n relevance: 0\n },\n {\n begin: '(\\\\.\\\\.\\\\.)'\n }\n ]\n },\n {\n begin: /(->|\\.)\\s*/,\n relevance: 0,\n contains: [LASSO_DATAMEMBER]\n },\n {\n className: 'class',\n beginKeywords: 'define',\n returnEnd: true, end: '\\\\(|=>',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: LASSO_IDENT_RE + '(=(?!>))?|[-+*/%](?!>)'})\n ]\n }\n ];\n return {\n aliases: ['ls', 'lassoscript'],\n case_insensitive: true,\n lexemes: LASSO_IDENT_RE + '|&[lg]t;',\n keywords: LASSO_KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: LASSO_CLOSE_RE,\n relevance: 0,\n starts: { // markup\n end: '\\\\[|' + LASSO_ANGLE_RE,\n returnEnd: true,\n relevance: 0,\n contains: [HTML_COMMENT]\n }\n },\n LASSO_NOPROCESS,\n LASSO_START,\n {\n className: 'meta',\n begin: '\\\\[no_square_brackets',\n starts: {\n end: '\\\\[/no_square_brackets\\\\]', // not implemented in the language\n lexemes: LASSO_IDENT_RE + '|&[lg]t;',\n keywords: LASSO_KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: LASSO_CLOSE_RE,\n relevance: 0,\n starts: {\n end: '\\\\[noprocess\\\\]|' + LASSO_ANGLE_RE,\n returnEnd: true,\n contains: [HTML_COMMENT]\n }\n },\n LASSO_NOPROCESS,\n LASSO_START\n ].concat(LASSO_CODE)\n }\n },\n {\n className: 'meta',\n begin: '\\\\[',\n relevance: 0\n },\n {\n className: 'meta',\n begin: '^#!', end:'lasso9$',\n relevance: 10\n }\n ].concat(LASSO_CODE)\n };\n};","module.exports = function(hljs) {\n return {\n contains: [\n {\n className: 'attribute',\n begin: '^dn', end: ': ', excludeEnd: true,\n starts: {end: '$', relevance: 0},\n relevance: 10\n },\n {\n className: 'attribute',\n begin: '^\\\\w', end: ': ', excludeEnd: true,\n starts: {end: '$', relevance: 0}\n },\n {\n className: 'literal',\n begin: '^-', end: '$'\n },\n hljs.HASH_COMMENT_MODE\n ]\n };\n};","module.exports = function (hljs) {\n return {\n contains: [\n {\n className: 'function',\n begin: '#+' + '[A-Za-z_0-9]*' + '\\\\(',\n end:' {',\n returnBegin: true,\n excludeEnd: true,\n contains : [\n {\n className: 'keyword',\n begin: '#+'\n },\n {\n className: 'title',\n begin: '[A-Za-z_][A-Za-z_0-9]*'\n },\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n endsParent: true,\n contains: [\n {\n className: 'string',\n begin: '\"',\n end: '\"'\n },\n {\n className: 'variable',\n begin: '[A-Za-z_][A-Za-z_0-9]*'\n }\n ]\n }\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[\\\\w-]+'; // yes, Less identifiers may begin with a digit\n var INTERP_IDENT_RE = '(' + IDENT_RE + '|@{' + IDENT_RE + '})';\n\n /* Generic Modes */\n\n var RULES = [], VALUE = []; // forward def. for recursive modes\n\n var STRING_MODE = function(c) { return {\n // Less strings are not multiline (also include '~' for more consistent coloring of \"escaped\" strings)\n className: 'string', begin: '~?' + c + '.*?' + c\n };};\n\n var IDENT_MODE = function(name, begin, relevance) { return {\n className: name, begin: begin, relevance: relevance\n };};\n\n var PARENS_MODE = {\n // used only to properly balance nested parens inside mixin call, def. arg list\n begin: '\\\\(', end: '\\\\)', contains: VALUE, relevance: 0\n };\n\n // generic Less highlighter (used almost everywhere except selectors):\n VALUE.push(\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING_MODE(\"'\"),\n STRING_MODE('\"'),\n hljs.CSS_NUMBER_MODE, // fixme: it does not include dot for numbers like .5em :(\n {\n begin: '(url|data-uri)\\\\(',\n starts: {className: 'string', end: '[\\\\)\\\\n]', excludeEnd: true}\n },\n IDENT_MODE('number', '#[0-9A-Fa-f]+\\\\b'),\n PARENS_MODE,\n IDENT_MODE('variable', '@@?' + IDENT_RE, 10),\n IDENT_MODE('variable', '@{' + IDENT_RE + '}'),\n IDENT_MODE('built_in', '~?`[^`]*?`'), // inline javascript (or whatever host language) *multiline* string\n { // @media features (it’s here to not duplicate things in AT_RULE_MODE with extra PARENS_MODE overriding):\n className: 'attribute', begin: IDENT_RE + '\\\\s*:', end: ':', returnBegin: true, excludeEnd: true\n },\n {\n className: 'meta',\n begin: '!important'\n }\n );\n\n var VALUE_WITH_RULESETS = VALUE.concat({\n begin: '{', end: '}', contains: RULES\n });\n\n var MIXIN_GUARD_MODE = {\n beginKeywords: 'when', endsWithParent: true,\n contains: [{beginKeywords: 'and not'}].concat(VALUE) // using this form to override VALUE’s 'function' match\n };\n\n /* Rule-Level Modes */\n\n var RULE_MODE = {\n begin: INTERP_IDENT_RE + '\\\\s*:', returnBegin: true, end: '[;}]',\n relevance: 0,\n contains: [\n {\n className: 'attribute',\n begin: INTERP_IDENT_RE, end: ':', excludeEnd: true,\n starts: {\n endsWithParent: true, illegal: '[<=$]',\n relevance: 0,\n contains: VALUE\n }\n }\n ]\n };\n\n var AT_RULE_MODE = {\n className: 'keyword',\n begin: '@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\\\b',\n starts: {end: '[;{}]', returnEnd: true, contains: VALUE, relevance: 0}\n };\n\n // variable definitions and calls\n var VAR_RULE_MODE = {\n className: 'variable',\n variants: [\n // using more strict pattern for higher relevance to increase chances of Less detection.\n // this is *the only* Less specific statement used in most of the sources, so...\n // (we’ll still often loose to the css-parser unless there's '//' comment,\n // simply because 1 variable just can't beat 99 properties :)\n {begin: '@' + IDENT_RE + '\\\\s*:', relevance: 15},\n {begin: '@' + IDENT_RE}\n ],\n starts: {end: '[;}]', returnEnd: true, contains: VALUE_WITH_RULESETS}\n };\n\n var SELECTOR_MODE = {\n // first parse unambiguous selectors (i.e. those not starting with tag)\n // then fall into the scary lookahead-discriminator variant.\n // this mode also handles mixin definitions and calls\n variants: [{\n begin: '[\\\\.#:&\\\\[>]', end: '[;{}]' // mixin calls end with ';'\n }, {\n begin: INTERP_IDENT_RE, end: '{'\n }],\n returnBegin: true,\n returnEnd: true,\n illegal: '[<=\\'$\"]',\n relevance: 0,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n MIXIN_GUARD_MODE,\n IDENT_MODE('keyword', 'all\\\\b'),\n IDENT_MODE('variable', '@{' + IDENT_RE + '}'), // otherwise it’s identified as tag\n IDENT_MODE('selector-tag', INTERP_IDENT_RE + '%?', 0), // '%' for more consistent coloring of @keyframes \"tags\"\n IDENT_MODE('selector-id', '#' + INTERP_IDENT_RE),\n IDENT_MODE('selector-class', '\\\\.' + INTERP_IDENT_RE, 0),\n IDENT_MODE('selector-tag', '&', 0),\n {className: 'selector-attr', begin: '\\\\[', end: '\\\\]'},\n {className: 'selector-pseudo', begin: /:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"'.]+/},\n {begin: '\\\\(', end: '\\\\)', contains: VALUE_WITH_RULESETS}, // argument list of parametric mixins\n {begin: '!important'} // eat !important after mixin call or it will be colored as tag\n ]\n };\n\n RULES.push(\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n AT_RULE_MODE,\n VAR_RULE_MODE,\n RULE_MODE,\n SELECTOR_MODE\n );\n\n return {\n case_insensitive: true,\n illegal: '[=>\\'/<($\"]',\n contains: RULES\n };\n};","module.exports = function(hljs) {\n var LISP_IDENT_RE = '[a-zA-Z_\\\\-\\\\+\\\\*\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#][a-zA-Z0-9_\\\\-\\\\+\\\\*\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#!]*';\n var MEC_RE = '\\\\|[^]*?\\\\|';\n var LISP_SIMPLE_NUMBER_RE = '(\\\\-|\\\\+)?\\\\d+(\\\\.\\\\d+|\\\\/\\\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\\\+|\\\\-)?\\\\d+)?';\n var SHEBANG = {\n className: 'meta',\n begin: '^#!', end: '$'\n };\n var LITERAL = {\n className: 'literal',\n begin: '\\\\b(t{1}|nil)\\\\b'\n };\n var NUMBER = {\n className: 'number',\n variants: [\n {begin: LISP_SIMPLE_NUMBER_RE, relevance: 0},\n {begin: '#(b|B)[0-1]+(/[0-1]+)?'},\n {begin: '#(o|O)[0-7]+(/[0-7]+)?'},\n {begin: '#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?'},\n {begin: '#(c|C)\\\\(' + LISP_SIMPLE_NUMBER_RE + ' +' + LISP_SIMPLE_NUMBER_RE, end: '\\\\)'}\n ]\n };\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});\n var COMMENT = hljs.COMMENT(\n ';', '$',\n {\n relevance: 0\n }\n );\n var VARIABLE = {\n begin: '\\\\*', end: '\\\\*'\n };\n var KEYWORD = {\n className: 'symbol',\n begin: '[:&]' + LISP_IDENT_RE\n };\n var IDENT = {\n begin: LISP_IDENT_RE,\n relevance: 0\n };\n var MEC = {\n begin: MEC_RE\n };\n var QUOTED_LIST = {\n begin: '\\\\(', end: '\\\\)',\n contains: ['self', LITERAL, STRING, NUMBER, IDENT]\n };\n var QUOTED = {\n contains: [NUMBER, STRING, VARIABLE, KEYWORD, QUOTED_LIST, IDENT],\n variants: [\n {\n begin: '[\\'`]\\\\(', end: '\\\\)'\n },\n {\n begin: '\\\\(quote ', end: '\\\\)',\n keywords: {name: 'quote'}\n },\n {\n begin: '\\'' + MEC_RE\n }\n ]\n };\n var QUOTED_ATOM = {\n variants: [\n {begin: '\\'' + LISP_IDENT_RE},\n {begin: '#\\'' + LISP_IDENT_RE + '(::' + LISP_IDENT_RE + ')*'}\n ]\n };\n var LIST = {\n begin: '\\\\(\\\\s*', end: '\\\\)'\n };\n var BODY = {\n endsWithParent: true,\n relevance: 0\n };\n LIST.contains = [\n {\n className: 'name',\n variants: [\n {begin: LISP_IDENT_RE},\n {begin: MEC_RE}\n ]\n },\n BODY\n ];\n BODY.contains = [QUOTED, QUOTED_ATOM, LIST, LITERAL, NUMBER, STRING, COMMENT, VARIABLE, KEYWORD, MEC, IDENT];\n\n return {\n illegal: /\\S/,\n contains: [\n NUMBER,\n SHEBANG,\n LITERAL,\n STRING,\n COMMENT,\n QUOTED,\n QUOTED_ATOM,\n LIST,\n IDENT\n ]\n };\n};","module.exports = function(hljs) {\n var VARIABLE = {\n begin: '\\\\b[gtps][A-Z]+[A-Za-z0-9_\\\\-]*\\\\b|\\\\$_[A-Z]+',\n relevance: 0\n };\n var COMMENT_MODES = [\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT('--', '$'),\n hljs.COMMENT('[^:]//', '$')\n ];\n var TITLE1 = hljs.inherit(hljs.TITLE_MODE, {\n variants: [\n {begin: '\\\\b_*rig[A-Z]+[A-Za-z0-9_\\\\-]*'},\n {begin: '\\\\b_[a-z0-9\\\\-]+'}\n ]\n });\n var TITLE2 = hljs.inherit(hljs.TITLE_MODE, {begin: '\\\\b([A-Za-z0-9_\\\\-]+)\\\\b'});\n return {\n case_insensitive: false,\n keywords: {\n keyword:\n '$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER ' +\n 'codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph ' +\n 'after byte bytes english the until http forever descending using line real8 with seventh ' +\n 'for stdout finally element word words fourth before black ninth sixth characters chars stderr ' +\n 'uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid ' +\n 'at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 ' +\n 'int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat ' +\n 'end repeat URL in try into switch to words https token binfile each tenth as ticks tick ' +\n 'system real4 by dateItems without char character ascending eighth whole dateTime numeric short ' +\n 'first ftp integer abbreviated abbr abbrev private case while if ' +\n 'div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within ' +\n 'contains ends with begins the keys of keys',\n literal:\n 'SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE ' +\n 'QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO ' +\n 'six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five ' +\n 'quote empty one true return cr linefeed right backslash null seven tab three two ' +\n 'RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK ' +\n 'FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK',\n built_in:\n 'put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode ' +\n 'base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum ' +\n 'cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress ' +\n 'constantNames cos date dateFormat decompress directories ' +\n 'diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global ' +\n 'globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset ' +\n 'keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders ' +\n 'libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 ' +\n 'longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge millisec ' +\n 'millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar ' +\n 'numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets ' +\n 'paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation ' +\n 'populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile ' +\n 'revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull ' +\n 'revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered ' +\n 'revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames ' +\n 'revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull ' +\n 'revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections ' +\n 'revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype ' +\n 'revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext ' +\n 'revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames ' +\n 'revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase ' +\n 'revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute ' +\n 'revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces ' +\n 'revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode ' +\n 'revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling ' +\n 'revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error ' +\n 'revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute ' +\n 'revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort ' +\n 'revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree ' +\n 'revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance ' +\n 'sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound ' +\n 'stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper ' +\n 'transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames ' +\n 'variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet ' +\n 'xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process ' +\n 'combine constant convert create new alias folder directory decrypt delete variable word line folder ' +\n 'directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile ' +\n 'libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback ' +\n 'libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime ' +\n 'libURLSetStatusCallback load multiply socket prepare process post seek rel relative read from process rename ' +\n 'replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase ' +\n 'revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees ' +\n 'revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord ' +\n 'revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase ' +\n 'revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD ' +\n 'revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost ' +\n 'revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData ' +\n 'revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel ' +\n 'revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback ' +\n 'revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop ' +\n 'subtract union unload wait write'\n },\n contains: [\n VARIABLE,\n {\n className: 'keyword',\n begin: '\\\\bend\\\\sif\\\\b'\n },\n {\n className: 'function',\n beginKeywords: 'function', end: '$',\n contains: [\n VARIABLE,\n TITLE2,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.BINARY_NUMBER_MODE,\n hljs.C_NUMBER_MODE,\n TITLE1\n ]\n },\n {\n className: 'function',\n begin: '\\\\bend\\\\s+', end: '$',\n keywords: 'end',\n contains: [\n TITLE2,\n TITLE1\n ],\n relevance: 0\n },\n {\n beginKeywords: 'command on', end: '$',\n contains: [\n VARIABLE,\n TITLE2,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.BINARY_NUMBER_MODE,\n hljs.C_NUMBER_MODE,\n TITLE1\n ]\n },\n {\n className: 'meta',\n variants: [\n {\n begin: '<\\\\?(rev|lc|livecode)',\n relevance: 10\n },\n { begin: '<\\\\?' },\n { begin: '\\\\?>' }\n ]\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.BINARY_NUMBER_MODE,\n hljs.C_NUMBER_MODE,\n TITLE1\n ].concat(COMMENT_MODES),\n illegal: ';$|^\\\\[|^=|&|{'\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n // JS keywords\n 'in if for while finally new do return else break catch instanceof throw try this ' +\n 'switch continue typeof delete debugger case default function var with ' +\n // LiveScript keywords\n 'then unless until loop of by when and or is isnt not it that otherwise from to til fallthrough super ' +\n 'case default function var void const let enum export import native ' +\n '__hasProp __extends __slice __bind __indexOf',\n literal:\n // JS literals\n 'true false null undefined ' +\n // LiveScript literals\n 'yes no on off it that void',\n built_in:\n 'npm require console print module global window document'\n };\n var JS_IDENT_RE = '[A-Za-z$_](?:\\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*';\n var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: JS_IDENT_RE});\n var SUBST = {\n className: 'subst',\n begin: /#\\{/, end: /}/,\n keywords: KEYWORDS\n };\n var SUBST_SIMPLE = {\n className: 'subst',\n begin: /#[A-Za-z$_]/, end: /(?:\\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/,\n keywords: KEYWORDS\n };\n var EXPRESSIONS = [\n hljs.BINARY_NUMBER_MODE,\n {\n className: 'number',\n begin: '(\\\\b0[xX][a-fA-F0-9_]+)|(\\\\b\\\\d(\\\\d|_\\\\d)*(\\\\.(\\\\d(\\\\d|_\\\\d)*)?)?(_*[eE]([-+]\\\\d(_\\\\d|\\\\d)*)?)?[_a-z]*)',\n relevance: 0,\n starts: {end: '(\\\\s*/)?', relevance: 0} // a number tries to eat the following slash to prevent treating it as a regexp\n },\n {\n className: 'string',\n variants: [\n {\n begin: /'''/, end: /'''/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /'/, end: /'/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /\"\"\"/, end: /\"\"\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST, SUBST_SIMPLE]\n },\n {\n begin: /\"/, end: /\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST, SUBST_SIMPLE]\n },\n {\n begin: /\\\\/, end: /(\\s|$)/,\n excludeEnd: true\n }\n ]\n },\n {\n className: 'regexp',\n variants: [\n {\n begin: '//', end: '//[gim]*',\n contains: [SUBST, hljs.HASH_COMMENT_MODE]\n },\n {\n // regex can't start with space to parse x / 2 / 3 as two divisions\n // regex can't start with *, and it supports an \"illegal\" in the main mode\n begin: /\\/(?![ *])(\\\\\\/|.)*?\\/[gim]*(?=\\W|$)/\n }\n ]\n },\n {\n begin: '@' + JS_IDENT_RE\n },\n {\n begin: '``', end: '``',\n excludeBegin: true, excludeEnd: true,\n subLanguage: 'javascript'\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', returnBegin: true,\n /* We need another contained nameless mode to not have every nested\n pair of parens to be called \"params\" */\n contains: [\n {\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n contains: ['self'].concat(EXPRESSIONS)\n }\n ]\n };\n\n return {\n aliases: ['ls'],\n keywords: KEYWORDS,\n illegal: /\\/\\*/,\n contains: EXPRESSIONS.concat([\n hljs.COMMENT('\\\\/\\\\*', '\\\\*\\\\/'),\n hljs.HASH_COMMENT_MODE,\n {\n className: 'function',\n contains: [TITLE, PARAMS],\n returnBegin: true,\n variants: [\n {\n begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?(\\\\(.*\\\\))?\\\\s*\\\\B\\\\->\\\\*?', end: '\\\\->\\\\*?'\n },\n {\n begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?!?(\\\\(.*\\\\))?\\\\s*\\\\B[-~]{1,2}>\\\\*?', end: '[-~]{1,2}>\\\\*?'\n },\n {\n begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?(\\\\(.*\\\\))?\\\\s*\\\\B!?[-~]{1,2}>\\\\*?', end: '!?[-~]{1,2}>\\\\*?'\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class',\n end: '$',\n illegal: /[:=\"\\[\\]]/,\n contains: [\n {\n beginKeywords: 'extends',\n endsWithParent: true,\n illegal: /[:=\"\\[\\]]/,\n contains: [TITLE]\n },\n TITLE\n ]\n },\n {\n begin: JS_IDENT_RE + ':', end: ':',\n returnBegin: true, returnEnd: true,\n relevance: 0\n }\n ])\n };\n};","module.exports = function(hljs) {\n var identifier = '([-a-zA-Z$._][\\\\w\\\\-$.]*)';\n return {\n //lexemes: '[.%]?' + hljs.IDENT_RE,\n keywords:\n 'begin end true false declare define global ' +\n 'constant private linker_private internal ' +\n 'available_externally linkonce linkonce_odr weak ' +\n 'weak_odr appending dllimport dllexport common ' +\n 'default hidden protected extern_weak external ' +\n 'thread_local zeroinitializer undef null to tail ' +\n 'target triple datalayout volatile nuw nsw nnan ' +\n 'ninf nsz arcp fast exact inbounds align ' +\n 'addrspace section alias module asm sideeffect ' +\n 'gc dbg linker_private_weak attributes blockaddress ' +\n 'initialexec localdynamic localexec prefix unnamed_addr ' +\n 'ccc fastcc coldcc x86_stdcallcc x86_fastcallcc ' +\n 'arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ' +\n 'ptx_kernel intel_ocl_bicc msp430_intrcc spir_func ' +\n 'spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc ' +\n 'cc c signext zeroext inreg sret nounwind ' +\n 'noreturn noalias nocapture byval nest readnone ' +\n 'readonly inlinehint noinline alwaysinline optsize ssp ' +\n 'sspreq noredzone noimplicitfloat naked builtin cold ' +\n 'nobuiltin noduplicate nonlazybind optnone returns_twice ' +\n 'sanitize_address sanitize_memory sanitize_thread sspstrong ' +\n 'uwtable returned type opaque eq ne slt sgt ' +\n 'sle sge ult ugt ule uge oeq one olt ogt ' +\n 'ole oge ord uno ueq une x acq_rel acquire ' +\n 'alignstack atomic catch cleanup filter inteldialect ' +\n 'max min monotonic nand personality release seq_cst ' +\n 'singlethread umax umin unordered xchg add fadd ' +\n 'sub fsub mul fmul udiv sdiv fdiv urem srem ' +\n 'frem shl lshr ashr and or xor icmp fcmp ' +\n 'phi call trunc zext sext fptrunc fpext uitofp ' +\n 'sitofp fptoui fptosi inttoptr ptrtoint bitcast ' +\n 'addrspacecast select va_arg ret br switch invoke ' +\n 'unwind unreachable indirectbr landingpad resume ' +\n 'malloc alloca free load store getelementptr ' +\n 'extractelement insertelement shufflevector getresult ' +\n 'extractvalue insertvalue atomicrmw cmpxchg fence ' +\n 'argmemonly double',\n contains: [\n {\n className: 'keyword',\n begin: 'i\\\\d+'\n },\n hljs.COMMENT(\n ';', '\\\\n', {relevance: 0}\n ),\n // Double quote string\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n variants: [\n // Double-quoted string\n { begin: '\"', end: '[^\\\\\\\\]\"' },\n ],\n relevance: 0\n },\n {\n className: 'title',\n variants: [\n { begin: '@' + identifier },\n { begin: '@\\\\d+' },\n { begin: '!' + identifier },\n { begin: '!\\\\d+' + identifier }\n ]\n },\n {\n className: 'symbol',\n variants: [\n { begin: '%' + identifier },\n { begin: '%\\\\d+' },\n { begin: '#\\\\d+' },\n ]\n },\n {\n className: 'number',\n variants: [\n { begin: '0[xX][a-fA-F0-9]+' },\n { begin: '-?\\\\d+(?:[.]\\\\d+)?(?:[eE][-+]?\\\\d+(?:[.]\\\\d+)?)?' }\n ],\n relevance: 0\n },\n ]\n };\n};","module.exports = function(hljs) {\n\n var LSL_STRING_ESCAPE_CHARS = {\n className: 'subst',\n begin: /\\\\[tn\"\\\\]/\n };\n\n var LSL_STRINGS = {\n className: 'string',\n begin: '\"',\n end: '\"',\n contains: [\n LSL_STRING_ESCAPE_CHARS\n ]\n };\n\n var LSL_NUMBERS = {\n className: 'number',\n begin: hljs.C_NUMBER_RE\n };\n\n var LSL_CONSTANTS = {\n className: 'literal',\n variants: [\n {\n begin: '\\\\b(?:PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\\\b'\n },\n {\n begin: '\\\\b(?:XP_ERROR_(?:EXPERIENCES_DISABLED|EXPERIENCE_(?:DISABLED|SUSPENDED)|INVALID_(?:EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(?:FOUND|PERMITTED(?:_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(?:PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(?:_OBJECT)?|(?:DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(?:FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(?:_(?:BY_(?:LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(?:PARCEL(?:_OWNER)?|REGION)))?|CAMERA_(?:PITCH|DISTANCE|BEHINDNESS_(?:ANGLE|LAG)|(?:FOCUS|POSITION)(?:_(?:THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(?:ROOT|SET|ALL_(?:OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(?:IVE|_(?:ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(?:FWD|BACK|(?:ROT_)?(?:LEFT|RIGHT)|UP|DOWN|(?:ML_)?LBUTTON)|PERMISSION_(?:RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(?:CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(?:TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(?:INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(?:_START)?|TELEPORT|MEDIA)|OBJECT_(?:CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(?:PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_ON_REZ|NAME|DESC|POS|PRIM_(?:COUNT|EQUIVALENCE)|RETURN_(?:PARCEL(?:_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP|CREATOR|ATTACHED_POINT|RENDER_WEIGHT|(?:BODY_SHAPE|PATHFINDING)_TYPE|(?:RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(?:MEMORY|TIME))|TYPE_(?:INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(?:DEBUG|PUBLIC)_CHANNEL|ATTACH_(?:AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](?:SHOULDER|HAND|FOOT|EAR|EYE|[UL](?:ARM|LEG)|HIP)|(?:LEFT|RIGHT)_PEC|HUD_(?:CENTER_[12]|TOP_(?:RIGHT|CENTER|LEFT)|BOTTOM(?:_(?:RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(?:BASE|TIP)|[LR]WING|FACE_(?:JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(?:LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(?:ONLINE|NAME|BORN|SIM_(?:POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(?:ON_FILE|USED)|REMOTE_DATA_(?:CHANNEL|REQUEST|REPLY)|PSYS_(?:PART_(?:BF_(?:ZERO|ONE(?:_MINUS_(?:DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(?:START|END)_(?:COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(?:RIBBON|WIND|INTERP_(?:COLOR|SCALE)|BOUNCE|FOLLOW_(?:SRC|VELOCITY)|TARGET_(?:POS|LINEAR)|EMISSIVE)_MASK)|SRC_(?:MAX_AGE|PATTERN|ANGLE_(?:BEGIN|END)|BURST_(?:RATE|PART_COUNT|RADIUS|SPEED_(?:MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(?:DROP|EXPLODE|ANGLE(?:_CONE(?:_EMPTY)?)?)))|VEHICLE_(?:REFERENCE_FRAME|TYPE_(?:NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(?:LINEAR|ANGULAR)_(?:FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(?:HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(?:LINEAR|ANGULAR)_(?:DEFLECTION_(?:EFFICIENCY|TIMESCALE)|MOTOR_(?:DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(?:EFFICIENCY|TIMESCALE)|BANKING_(?:EFFICIENCY|MIX|TIMESCALE)|FLAG_(?:NO_DEFLECTION_UP|LIMIT_(?:ROLL_ONLY|MOTOR_UP)|HOVER_(?:(?:WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(?:STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(?:ALPHA_MODE(?:_(?:BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(?:_(?:BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(?:DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(?:_(?:STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(?:NONE|LOW|MEDIUM|HIGH)|BUMP_(?:NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(?:DEFAULT|PLANAR)|SCULPT_(?:TYPE_(?:SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(?:MIRROR|INVERT))|PHYSICS(?:_(?:SHAPE_(?:CONVEX|NONE|PRIM|TYPE)))?|(?:POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(?:ALT_IMAGE_ENABLE|CONTROLS|(?:CURRENT|HOME)_URL|AUTO_(?:LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(?:WIDTH|HEIGHT)_PIXELS|WHITELIST(?:_ENABLE)?|PERMS_(?:INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(?:STANDARD|MINI)|PERM_(?:NONE|OWNER|GROUP|ANYONE)|MAX_(?:URL_LENGTH|WHITELIST_(?:SIZE|COUNT)|(?:WIDTH|HEIGHT)_PIXELS)))|MASK_(?:BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(?:TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(?:MEDIA_COMMAND_(?:STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(?:ALLOW_(?:FLY|(?:GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(?:GROUP_)?OBJECTS)|USE_(?:ACCESS_(?:GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(?:GROUP|ALL)_OBJECT_ENTRY)|COUNT_(?:TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(?:NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(?:MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(?:_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(?:HIDE|DEFAULT)|REGION_FLAG_(?:ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(?:COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(?:METHOD|MIMETYPE|BODY_(?:MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|STRING_(?:TRIM(?:_(?:HEAD|TAIL))?)|CLICK_ACTION_(?:NONE|TOUCH|SIT|BUY|PAY|OPEN(?:_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(?:NONE|SCRIPT_MEMORY)|RC_(?:DATA_FLAGS|DETECT_PHANTOM|GET_(?:LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(?:TYPES|AGENTS|(?:NON)?PHYSICAL|LAND))|RCERR_(?:CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(?:ALLOWED_(?:AGENT|GROUP)_(?:ADD|REMOVE)|BANNED_AGENT_(?:ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(?:COMMAND|CMD_(?:PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(?:GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(?:CMD_(?:(?:SMOOTH_)?STOP|JUMP)|DESIRED_(?:TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(?:_(?:[ABCD]|NONE))?|MAX_(?:DECEL|TURN_RADIUS|(?:ACCEL|SPEED)))|PURSUIT_(?:OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(?:CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(?:EVADE_(?:HIDDEN|SPOTTED)|FAILURE_(?:DYNAMIC_PATHFINDING_DISABLED|INVALID_(?:GOAL|START)|NO_(?:NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(?:PARCEL_)?UNREACHABLE)|(?:GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(?:_(?:FAST|NONE|SLOW))?|CONTENT_TYPE_(?:ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(?:RADIUS|STATIC)|(?:PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(?:AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\\\b'\n },\n {\n begin: '\\\\b(?:FALSE|TRUE)\\\\b'\n },\n {\n begin: '\\\\b(?:ZERO_ROTATION)\\\\b'\n },\n {\n begin: '\\\\b(?:EOF|JSON_(?:ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(?:BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(?:GRANTED|DENIED))\\\\b'\n },\n {\n begin: '\\\\b(?:ZERO_VECTOR|TOUCH_INVALID_(?:TEXCOORD|VECTOR))\\\\b'\n }\n ]\n };\n\n var LSL_FUNCTIONS = {\n className: 'built_in',\n begin: '\\\\b(?:ll(?:AgentInExperience|(?:Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(?:Details|ErrorMessage)|ReturnObjectsBy(?:ID|Owner)|Json(?:2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(?:Mag|Norm|Dist)|Rot(?:Between|2(?:Euler|Fwd|Left|Up))|(?:Euler|Axes)2Rot|Whisper|(?:Region|Owner)?Say|Shout|Listen(?:Control|Remove)?|Sensor(?:Repeat|Remove)?|Detected(?:Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|(?:[GS]et)(?:AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(?:Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(?:Scale|Offset|Rotate)Texture|(?:Rot)?Target(?:Remove)?|(?:Stop)?MoveToTarget|Apply(?:Rotational)?Impulse|Set(?:KeyframedMotion|ContentType|RegionPos|(?:Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(?:Queueing|Radius)|Vehicle(?:Type|(?:Float|Vector|Rotation)Param)|(?:Touch|Sit)?Text|Camera(?:Eye|At)Offset|PrimitiveParams|ClickAction|Link(?:Alpha|Color|PrimitiveParams(?:Fast)?|Texture(?:Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get(?:(?:Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(?:PrimitiveParams|Number(?:OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(?:Details|PermMask|PrimCount)|Parcel(?:MaxPrims|Details|Prim(?:Count|Owners))|Attached(?:List)?|(?:SPMax|Free|Used)Memory|Region(?:Name|TimeDilation|FPS|Corner|AgentCount)|Root(?:Position|Rotation)|UnixTime|(?:Parcel|Region)Flags|(?:Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(?:Prims|NotecardLines|Sides)|Animation(?:List)?|(?:Camera|Local)(?:Pos|Rot)|Vel|Accel|Omega|Time(?:stamp|OfDay)|(?:Object|CenterOf)?Mass|MassMKS|Energy|Owner|(?:Owner)?Key|SunDirection|Texture(?:Offset|Scale|Rot)|Inventory(?:Number|Name|Key|Type|Creator|PermMask)|Permissions(?:Key)?|StartParameter|List(?:Length|EntryType)|Date|Agent(?:Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(?:Name|State))|(?:Get|Reset|GetAndReset)Time|PlaySound(?:Slave)?|LoopSound(?:Master|Slave)?|(?:Trigger|Stop|Preload)Sound|(?:(?:Get|Delete)Sub|Insert)String|To(?:Upper|Lower)|Give(?:InventoryList|Money)|RezObject|(?:Stop)?LookAt|Sleep|CollisionFilter|(?:Take|Release)Controls|DetachFromAvatar|AttachToAvatar(?:Temp)?|InstantMessage|(?:GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(?:Length|Trim)|(?:Start|Stop)Animation|TargetOmega|Request(?:Experience)?Permissions|(?:Create|Break)Link|BreakAllLinks|(?:Give|Remove)Inventory|Water|PassTouches|Request(?:Agent|Inventory)Data|TeleportAgent(?:Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(?:Axis|Angle)|A(?:cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(?:CSV|Integer|Json|Float|String|Key|Vector|Rot|List(?:Strided)?)|DeleteSubList|List(?:Statistics|Sort|Randomize|(?:Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(?:CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(?:Slope|Normal|Contour)|GroundRepel|(?:Set|Remove)VehicleFlags|(?:AvatarOn)?(?:Link)?SitTarget|Script(?:Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(?:Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(?:Integer|String)ToBase64|XorBase64|Log(?:10)?|Base64To(?:String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(?:Load|Release|(?:E|Une)scape)URL|ParcelMedia(?:CommandList|Query)|ModPow|MapDestination|(?:RemoveFrom|AddTo|Reset)Land(?:Pass|Ban)List|(?:Set|Clear)CameraParams|HTTP(?:Request|Response)|TextBox|DetectedTouch(?:UV|Face|Pos|(?:N|Bin)ormal|ST)|(?:MD5|SHA1|DumpList2)String|Request(?:Secure)?URL|Clear(?:Prim|Link)Media|(?:Link)?ParticleSystem|(?:Get|Request)(?:Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(?:Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\\\b'\n };\n\n return {\n illegal: ':',\n contains: [\n LSL_STRINGS,\n {\n className: 'comment',\n variants: [\n hljs.COMMENT('//', '$'),\n hljs.COMMENT('/\\\\*', '\\\\*/')\n ]\n },\n LSL_NUMBERS,\n {\n className: 'section',\n variants: [\n {\n begin: '\\\\b(?:state|default)\\\\b'\n },\n {\n begin: '\\\\b(?:state_(?:entry|exit)|touch(?:_(?:start|end))?|(?:land_)?collision(?:_(?:start|end))?|timer|listen|(?:no_)?sensor|control|(?:not_)?at_(?:rot_)?target|money|email|experience_permissions(?:_denied)?|run_time_permissions|changed|attach|dataserver|moving_(?:start|end)|link_message|(?:on|object)_rez|remote_data|http_re(?:sponse|quest)|path_update|transaction_result)\\\\b'\n }\n ]\n },\n LSL_FUNCTIONS,\n LSL_CONSTANTS,\n {\n className: 'type',\n begin: '\\\\b(?:integer|float|string|key|vector|quaternion|rotation|list)\\\\b'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var OPENING_LONG_BRACKET = '\\\\[=*\\\\[';\n var CLOSING_LONG_BRACKET = '\\\\]=*\\\\]';\n var LONG_BRACKETS = {\n begin: OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET,\n contains: ['self']\n };\n var COMMENTS = [\n hljs.COMMENT('--(?!' + OPENING_LONG_BRACKET + ')', '$'),\n hljs.COMMENT(\n '--' + OPENING_LONG_BRACKET,\n CLOSING_LONG_BRACKET,\n {\n contains: [LONG_BRACKETS],\n relevance: 10\n }\n )\n ];\n return {\n lexemes: hljs.UNDERSCORE_IDENT_RE,\n keywords: {\n literal: \"true false nil\",\n keyword: \"and break do else elseif end for goto if in local not or repeat return then until while\",\n built_in:\n //Metatags and globals:\n '_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len ' +\n '__gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert ' +\n //Standard methods and properties:\n 'collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring' +\n 'module next pairs pcall print rawequal rawget rawset require select setfenv' +\n 'setmetatable tonumber tostring type unpack xpcall arg self' +\n //Library methods and properties (one line per library):\n 'coroutine resume yield status wrap create running debug getupvalue ' +\n 'debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv ' +\n 'io lines write close flush open output type read stderr stdin input stdout popen tmpfile ' +\n 'math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan ' +\n 'os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall ' +\n 'string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower ' +\n 'table setn insert getn foreachi maxn foreach concat sort remove'\n },\n contains: COMMENTS.concat([\n {\n className: 'function',\n beginKeywords: 'function', end: '\\\\)',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: '([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*'}),\n {\n className: 'params',\n begin: '\\\\(', endsWithParent: true,\n contains: COMMENTS\n }\n ].concat(COMMENTS)\n },\n hljs.C_NUMBER_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET,\n contains: [LONG_BRACKETS],\n relevance: 5\n }\n ])\n };\n};","module.exports = function(hljs) {\n /* Variables: simple (eg $(var)) and special (eg $@) */\n var VARIABLE = {\n className: 'variable',\n variants: [\n {\n begin: '\\\\$\\\\(' + hljs.UNDERSCORE_IDENT_RE + '\\\\)',\n contains: [hljs.BACKSLASH_ESCAPE],\n },\n {\n begin: /\\$[@%<?\\^\\+\\*]/\n },\n ]\n };\n /* Quoted string with variables inside */\n var QUOTE_STRING = {\n className: 'string',\n begin: /\"/, end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VARIABLE,\n ]\n };\n /* Function: $(func arg,...) */\n var FUNC = {\n className: 'variable',\n begin: /\\$\\([\\w-]+\\s/, end: /\\)/,\n keywords: {\n built_in:\n 'subst patsubst strip findstring filter filter-out sort ' +\n 'word wordlist firstword lastword dir notdir suffix basename ' +\n 'addsuffix addprefix join wildcard realpath abspath error warning ' +\n 'shell origin flavor foreach if or and call eval file value',\n },\n contains: [\n VARIABLE,\n ]\n };\n /* Variable assignment */\n var VAR_ASSIG = {\n begin: '^' + hljs.UNDERSCORE_IDENT_RE + '\\\\s*[:+?]?=',\n illegal: '\\\\n',\n returnBegin: true,\n contains: [\n {\n begin: '^' + hljs.UNDERSCORE_IDENT_RE, end: '[:+?]?=',\n excludeEnd: true,\n }\n ]\n };\n /* Meta targets (.PHONY) */\n var META = {\n className: 'meta',\n begin: /^\\.PHONY:/, end: /$/,\n keywords: {'meta-keyword': '.PHONY'},\n lexemes: /[\\.\\w]+/\n };\n /* Targets */\n var TARGET = {\n className: 'section',\n begin: /^[^\\s]+:/, end: /$/,\n contains: [VARIABLE,]\n };\n return {\n aliases: ['mk', 'mak'],\n keywords:\n 'define endef undefine ifdef ifndef ifeq ifneq else endif ' +\n 'include -include sinclude override export unexport private vpath',\n lexemes: /[\\w-]+/,\n contains: [\n hljs.HASH_COMMENT_MODE,\n VARIABLE,\n QUOTE_STRING,\n FUNC,\n VAR_ASSIG,\n META,\n TARGET,\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['mma'],\n lexemes: '(\\\\$|\\\\b)' + hljs.IDENT_RE + '\\\\b',\n keywords: 'AbelianGroup Abort AbortKernels AbortProtect Above Abs Absolute AbsoluteCorrelation AbsoluteCorrelationFunction AbsoluteCurrentValue AbsoluteDashing AbsoluteFileName AbsoluteOptions AbsolutePointSize AbsoluteThickness AbsoluteTime AbsoluteTiming AccountingForm Accumulate Accuracy AccuracyGoal ActionDelay ActionMenu ActionMenuBox ActionMenuBoxOptions Active ActiveItem ActiveStyle AcyclicGraphQ AddOnHelpPath AddTo AdjacencyGraph AdjacencyList AdjacencyMatrix AdjustmentBox AdjustmentBoxOptions AdjustTimeSeriesForecast AffineTransform After AiryAi AiryAiPrime AiryAiZero AiryBi AiryBiPrime AiryBiZero AlgebraicIntegerQ AlgebraicNumber AlgebraicNumberDenominator AlgebraicNumberNorm AlgebraicNumberPolynomial AlgebraicNumberTrace AlgebraicRules AlgebraicRulesData Algebraics AlgebraicUnitQ Alignment AlignmentMarker AlignmentPoint All AllowedDimensions AllowGroupClose AllowInlineCells AllowKernelInitialization AllowReverseGroupClose AllowScriptLevelChange AlphaChannel AlternatingGroup AlternativeHypothesis Alternatives AmbientLight Analytic AnchoredSearch And AndersonDarlingTest AngerJ AngleBracket AngularGauge Animate AnimationCycleOffset AnimationCycleRepetitions AnimationDirection AnimationDisplayTime AnimationRate AnimationRepetitions AnimationRunning Animator AnimatorBox AnimatorBoxOptions AnimatorElements Annotation Annuity AnnuityDue Antialiasing Antisymmetric Apart ApartSquareFree Appearance AppearanceElements AppellF1 Append AppendTo Apply ArcCos ArcCosh ArcCot ArcCoth ArcCsc ArcCsch ArcSec ArcSech ArcSin ArcSinDistribution ArcSinh ArcTan ArcTanh Arg ArgMax ArgMin ArgumentCountQ ARIMAProcess ArithmeticGeometricMean ARMAProcess ARProcess Array ArrayComponents ArrayDepth ArrayFlatten ArrayPad ArrayPlot ArrayQ ArrayReshape ArrayRules Arrays Arrow Arrow3DBox ArrowBox Arrowheads AspectRatio AspectRatioFixed Assert Assuming Assumptions AstronomicalData Asynchronous AsynchronousTaskObject AsynchronousTasks AtomQ Attributes AugmentedSymmetricPolynomial AutoAction AutoDelete AutoEvaluateEvents AutoGeneratedPackage AutoIndent AutoIndentSpacings AutoItalicWords AutoloadPath AutoMatch Automatic AutomaticImageSize AutoMultiplicationSymbol AutoNumberFormatting AutoOpenNotebooks AutoOpenPalettes AutorunSequencing AutoScaling AutoScroll AutoSpacing AutoStyleOptions AutoStyleWords Axes AxesEdge AxesLabel AxesOrigin AxesStyle Axis ' +\n 'BabyMonsterGroupB Back Background BackgroundTasksSettings Backslash Backsubstitution Backward Band BandpassFilter BandstopFilter BarabasiAlbertGraphDistribution BarChart BarChart3D BarLegend BarlowProschanImportance BarnesG BarOrigin BarSpacing BartlettHannWindow BartlettWindow BaseForm Baseline BaselinePosition BaseStyle BatesDistribution BattleLemarieWavelet Because BeckmannDistribution Beep Before Begin BeginDialogPacket BeginFrontEndInteractionPacket BeginPackage BellB BellY Below BenfordDistribution BeniniDistribution BenktanderGibratDistribution BenktanderWeibullDistribution BernoulliB BernoulliDistribution BernoulliGraphDistribution BernoulliProcess BernsteinBasis BesselFilterModel BesselI BesselJ BesselJZero BesselK BesselY BesselYZero Beta BetaBinomialDistribution BetaDistribution BetaNegativeBinomialDistribution BetaPrimeDistribution BetaRegularized BetweennessCentrality BezierCurve BezierCurve3DBox BezierCurve3DBoxOptions BezierCurveBox BezierCurveBoxOptions BezierFunction BilateralFilter Binarize BinaryFormat BinaryImageQ BinaryRead BinaryReadList BinaryWrite BinCounts BinLists Binomial BinomialDistribution BinomialProcess BinormalDistribution BiorthogonalSplineWavelet BipartiteGraphQ BirnbaumImportance BirnbaumSaundersDistribution BitAnd BitClear BitGet BitLength BitNot BitOr BitSet BitShiftLeft BitShiftRight BitXor Black BlackmanHarrisWindow BlackmanNuttallWindow BlackmanWindow Blank BlankForm BlankNullSequence BlankSequence Blend Block BlockRandom BlomqvistBeta BlomqvistBetaTest Blue Blur BodePlot BohmanWindow Bold Bookmarks Boole BooleanConsecutiveFunction BooleanConvert BooleanCountingFunction BooleanFunction BooleanGraph BooleanMaxterms BooleanMinimize BooleanMinterms Booleans BooleanTable BooleanVariables BorderDimensions BorelTannerDistribution Bottom BottomHatTransform BoundaryStyle Bounds Box BoxBaselineShift BoxData BoxDimensions Boxed Boxes BoxForm BoxFormFormatTypes BoxFrame BoxID BoxMargins BoxMatrix BoxRatios BoxRotation BoxRotationPoint BoxStyle BoxWhiskerChart Bra BracketingBar BraKet BrayCurtisDistance BreadthFirstScan Break Brown BrownForsytheTest BrownianBridgeProcess BrowserCategory BSplineBasis BSplineCurve BSplineCurve3DBox BSplineCurveBox BSplineCurveBoxOptions BSplineFunction BSplineSurface BSplineSurface3DBox BubbleChart BubbleChart3D BubbleScale BubbleSizes BulletGauge BusinessDayQ ButterflyGraph ButterworthFilterModel Button ButtonBar ButtonBox ButtonBoxOptions ButtonCell ButtonContents ButtonData ButtonEvaluator ButtonExpandable ButtonFrame ButtonFunction ButtonMargins ButtonMinHeight ButtonNote ButtonNotebook ButtonSource ButtonStyle ButtonStyleMenuListing Byte ByteCount ByteOrdering ' +\n 'C CachedValue CacheGraphics CalendarData CalendarType CallPacket CanberraDistance Cancel CancelButton CandlestickChart Cap CapForm CapitalDifferentialD CardinalBSplineBasis CarmichaelLambda Cases Cashflow Casoratian Catalan CatalanNumber Catch CauchyDistribution CauchyWindow CayleyGraph CDF CDFDeploy CDFInformation CDFWavelet Ceiling Cell CellAutoOverwrite CellBaseline CellBoundingBox CellBracketOptions CellChangeTimes CellContents CellContext CellDingbat CellDynamicExpression CellEditDuplicate CellElementsBoundingBox CellElementSpacings CellEpilog CellEvaluationDuplicate CellEvaluationFunction CellEventActions CellFrame CellFrameColor CellFrameLabelMargins CellFrameLabels CellFrameMargins CellGroup CellGroupData CellGrouping CellGroupingRules CellHorizontalScrolling CellID CellLabel CellLabelAutoDelete CellLabelMargins CellLabelPositioning CellMargins CellObject CellOpen CellPrint CellProlog Cells CellSize CellStyle CellTags CellularAutomaton CensoredDistribution Censoring Center CenterDot CentralMoment CentralMomentGeneratingFunction CForm ChampernowneNumber ChanVeseBinarize Character CharacterEncoding CharacterEncodingsPath CharacteristicFunction CharacteristicPolynomial CharacterRange Characters ChartBaseStyle ChartElementData ChartElementDataFunction ChartElementFunction ChartElements ChartLabels ChartLayout ChartLegends ChartStyle Chebyshev1FilterModel Chebyshev2FilterModel ChebyshevDistance ChebyshevT ChebyshevU Check CheckAbort CheckAll Checkbox CheckboxBar CheckboxBox CheckboxBoxOptions ChemicalData ChessboardDistance ChiDistribution ChineseRemainder ChiSquareDistribution ChoiceButtons ChoiceDialog CholeskyDecomposition Chop Circle CircleBox CircleDot CircleMinus CirclePlus CircleTimes CirculantGraph CityData Clear ClearAll ClearAttributes ClearSystemCache ClebschGordan ClickPane Clip ClipboardNotebook ClipFill ClippingStyle ClipPlanes ClipRange Clock ClockGauge ClockwiseContourIntegral Close Closed CloseKernels ClosenessCentrality Closing ClosingAutoSave ClosingEvent ClusteringComponents CMYKColor Coarse Coefficient CoefficientArrays CoefficientDomain CoefficientList CoefficientRules CoifletWavelet Collect Colon ColonForm ColorCombine ColorConvert ColorData ColorDataFunction ColorFunction ColorFunctionScaling Colorize ColorNegate ColorOutput ColorProfileData ColorQuantize ColorReplace ColorRules ColorSelectorSettings ColorSeparate ColorSetter ColorSetterBox ColorSetterBoxOptions ColorSlider ColorSpace Column ColumnAlignments ColumnBackgrounds ColumnForm ColumnLines ColumnsEqual ColumnSpacings ColumnWidths CommonDefaultFormatTypes Commonest CommonestFilter CommonUnits CommunityBoundaryStyle CommunityGraphPlot CommunityLabels CommunityRegionStyle CompatibleUnitQ CompilationOptions CompilationTarget Compile Compiled CompiledFunction Complement CompleteGraph CompleteGraphQ CompleteKaryTree CompletionsListPacket Complex Complexes ComplexExpand ComplexInfinity ComplexityFunction ComponentMeasurements ' +\n 'ComponentwiseContextMenu Compose ComposeList ComposeSeries Composition CompoundExpression CompoundPoissonDistribution CompoundPoissonProcess CompoundRenewalProcess Compress CompressedData Condition ConditionalExpression Conditioned Cone ConeBox ConfidenceLevel ConfidenceRange ConfidenceTransform ConfigurationPath Congruent Conjugate ConjugateTranspose Conjunction Connect ConnectedComponents ConnectedGraphQ ConnesWindow ConoverTest ConsoleMessage ConsoleMessagePacket ConsolePrint Constant ConstantArray Constants ConstrainedMax ConstrainedMin ContentPadding ContentsBoundingBox ContentSelectable ContentSize Context ContextMenu Contexts ContextToFilename ContextToFileName Continuation Continue ContinuedFraction ContinuedFractionK ContinuousAction ContinuousMarkovProcess ContinuousTimeModelQ ContinuousWaveletData ContinuousWaveletTransform ContourDetect ContourGraphics ContourIntegral ContourLabels ContourLines ContourPlot ContourPlot3D Contours ContourShading ContourSmoothing ContourStyle ContraharmonicMean Control ControlActive ControlAlignment ControllabilityGramian ControllabilityMatrix ControllableDecomposition ControllableModelQ ControllerDuration ControllerInformation ControllerInformationData ControllerLinking ControllerManipulate ControllerMethod ControllerPath ControllerState ControlPlacement ControlsRendering ControlType Convergents ConversionOptions ConversionRules ConvertToBitmapPacket ConvertToPostScript ConvertToPostScriptPacket Convolve ConwayGroupCo1 ConwayGroupCo2 ConwayGroupCo3 CoordinateChartData CoordinatesToolOptions CoordinateTransform CoordinateTransformData CoprimeQ Coproduct CopulaDistribution Copyable CopyDirectory CopyFile CopyTag CopyToClipboard CornerFilter CornerNeighbors Correlation CorrelationDistance CorrelationFunction CorrelationTest Cos Cosh CoshIntegral CosineDistance CosineWindow CosIntegral Cot Coth Count CounterAssignments CounterBox CounterBoxOptions CounterClockwiseContourIntegral CounterEvaluator CounterFunction CounterIncrements CounterStyle CounterStyleMenuListing CountRoots CountryData Covariance CovarianceEstimatorFunction CovarianceFunction CoxianDistribution CoxIngersollRossProcess CoxModel CoxModelFit CramerVonMisesTest CreateArchive CreateDialog CreateDirectory CreateDocument CreateIntermediateDirectories CreatePalette CreatePalettePacket CreateScheduledTask CreateTemporary CreateWindow CriticalityFailureImportance CriticalitySuccessImportance CriticalSection Cross CrossingDetect CrossMatrix Csc Csch CubeRoot Cubics Cuboid CuboidBox Cumulant CumulantGeneratingFunction Cup CupCap Curl CurlyDoubleQuote CurlyQuote CurrentImage CurrentlySpeakingPacket CurrentValue CurvatureFlowFilter CurveClosed Cyan CycleGraph CycleIndexPolynomial Cycles CyclicGroup Cyclotomic Cylinder CylinderBox CylindricalDecomposition ' +\n 'D DagumDistribution DamerauLevenshteinDistance DampingFactor Darker Dashed Dashing DataCompression DataDistribution DataRange DataReversed Date DateDelimiters DateDifference DateFunction DateList DateListLogPlot DateListPlot DatePattern DatePlus DateRange DateString DateTicksFormat DaubechiesWavelet DavisDistribution DawsonF DayCount DayCountConvention DayMatchQ DayName DayPlus DayRange DayRound DeBruijnGraph Debug DebugTag Decimal DeclareKnownSymbols DeclarePackage Decompose Decrement DedekindEta Default DefaultAxesStyle DefaultBaseStyle DefaultBoxStyle DefaultButton DefaultColor DefaultControlPlacement DefaultDuplicateCellStyle DefaultDuration DefaultElement DefaultFaceGridsStyle DefaultFieldHintStyle DefaultFont DefaultFontProperties DefaultFormatType DefaultFormatTypeForStyle DefaultFrameStyle DefaultFrameTicksStyle DefaultGridLinesStyle DefaultInlineFormatType DefaultInputFormatType DefaultLabelStyle DefaultMenuStyle DefaultNaturalLanguage DefaultNewCellStyle DefaultNewInlineCellStyle DefaultNotebook DefaultOptions DefaultOutputFormatType DefaultStyle DefaultStyleDefinitions DefaultTextFormatType DefaultTextInlineFormatType DefaultTicksStyle DefaultTooltipStyle DefaultValues Defer DefineExternal DefineInputStreamMethod DefineOutputStreamMethod Definition Degree DegreeCentrality DegreeGraphDistribution DegreeLexicographic DegreeReverseLexicographic Deinitialization Del Deletable Delete DeleteBorderComponents DeleteCases DeleteContents DeleteDirectory DeleteDuplicates DeleteFile DeleteSmallComponents DeleteWithContents DeletionWarning Delimiter DelimiterFlashTime DelimiterMatching Delimiters Denominator DensityGraphics DensityHistogram DensityPlot DependentVariables Deploy Deployed Depth DepthFirstScan Derivative DerivativeFilter DescriptorStateSpace DesignMatrix Det DGaussianWavelet DiacriticalPositioning Diagonal DiagonalMatrix Dialog DialogIndent DialogInput DialogLevel DialogNotebook DialogProlog DialogReturn DialogSymbols Diamond DiamondMatrix DiceDissimilarity DictionaryLookup DifferenceDelta DifferenceOrder DifferenceRoot DifferenceRootReduce Differences DifferentialD DifferentialRoot DifferentialRootReduce DifferentiatorFilter DigitBlock DigitBlockMinimum DigitCharacter DigitCount DigitQ DihedralGroup Dilation Dimensions DiracComb DiracDelta DirectedEdge DirectedEdges DirectedGraph DirectedGraphQ DirectedInfinity Direction Directive Directory DirectoryName DirectoryQ DirectoryStack DirichletCharacter DirichletConvolve DirichletDistribution DirichletL DirichletTransform DirichletWindow DisableConsolePrintPacket DiscreteChirpZTransform DiscreteConvolve DiscreteDelta DiscreteHadamardTransform DiscreteIndicator DiscreteLQEstimatorGains DiscreteLQRegulatorGains DiscreteLyapunovSolve DiscreteMarkovProcess DiscretePlot DiscretePlot3D DiscreteRatio DiscreteRiccatiSolve DiscreteShift DiscreteTimeModelQ DiscreteUniformDistribution DiscreteVariables DiscreteWaveletData DiscreteWaveletPacketTransform ' +\n 'DiscreteWaveletTransform Discriminant Disjunction Disk DiskBox DiskMatrix Dispatch DispersionEstimatorFunction Display DisplayAllSteps DisplayEndPacket DisplayFlushImagePacket DisplayForm DisplayFunction DisplayPacket DisplayRules DisplaySetSizePacket DisplayString DisplayTemporary DisplayWith DisplayWithRef DisplayWithVariable DistanceFunction DistanceTransform Distribute Distributed DistributedContexts DistributeDefinitions DistributionChart DistributionDomain DistributionFitTest DistributionParameterAssumptions DistributionParameterQ Dithering Div Divergence Divide DivideBy Dividers Divisible Divisors DivisorSigma DivisorSum DMSList DMSString Do DockedCells DocumentNotebook DominantColors DOSTextFormat Dot DotDashed DotEqual Dotted DoubleBracketingBar DoubleContourIntegral DoubleDownArrow DoubleLeftArrow DoubleLeftRightArrow DoubleLeftTee DoubleLongLeftArrow DoubleLongLeftRightArrow DoubleLongRightArrow DoubleRightArrow DoubleRightTee DoubleUpArrow DoubleUpDownArrow DoubleVerticalBar DoublyInfinite Down DownArrow DownArrowBar DownArrowUpArrow DownLeftRightVector DownLeftTeeVector DownLeftVector DownLeftVectorBar DownRightTeeVector DownRightVector DownRightVectorBar Downsample DownTee DownTeeArrow DownValues DragAndDrop DrawEdges DrawFrontFaces DrawHighlighted Drop DSolve Dt DualLinearProgramming DualSystemsModel DumpGet DumpSave DuplicateFreeQ Dynamic DynamicBox DynamicBoxOptions DynamicEvaluationTimeout DynamicLocation DynamicModule DynamicModuleBox DynamicModuleBoxOptions DynamicModuleParent DynamicModuleValues DynamicName DynamicNamespace DynamicReference DynamicSetting DynamicUpdating DynamicWrapper DynamicWrapperBox DynamicWrapperBoxOptions ' +\n 'E EccentricityCentrality EdgeAdd EdgeBetweennessCentrality EdgeCapacity EdgeCapForm EdgeColor EdgeConnectivity EdgeCost EdgeCount EdgeCoverQ EdgeDashing EdgeDelete EdgeDetect EdgeForm EdgeIndex EdgeJoinForm EdgeLabeling EdgeLabels EdgeLabelStyle EdgeList EdgeOpacity EdgeQ EdgeRenderingFunction EdgeRules EdgeShapeFunction EdgeStyle EdgeThickness EdgeWeight Editable EditButtonSettings EditCellTagsSettings EditDistance EffectiveInterest Eigensystem Eigenvalues EigenvectorCentrality Eigenvectors Element ElementData Eliminate EliminationOrder EllipticE EllipticExp EllipticExpPrime EllipticF EllipticFilterModel EllipticK EllipticLog EllipticNomeQ EllipticPi EllipticReducedHalfPeriods EllipticTheta EllipticThetaPrime EmitSound EmphasizeSyntaxErrors EmpiricalDistribution Empty EmptyGraphQ EnableConsolePrintPacket Enabled Encode End EndAdd EndDialogPacket EndFrontEndInteractionPacket EndOfFile EndOfLine EndOfString EndPackage EngineeringForm Enter EnterExpressionPacket EnterTextPacket Entropy EntropyFilter Environment Epilog Equal EqualColumns EqualRows EqualTilde EquatedTo Equilibrium EquirippleFilterKernel Equivalent Erf Erfc Erfi ErlangB ErlangC ErlangDistribution Erosion ErrorBox ErrorBoxOptions ErrorNorm ErrorPacket ErrorsDialogSettings EstimatedDistribution EstimatedProcess EstimatorGains EstimatorRegulator EuclideanDistance EulerE EulerGamma EulerianGraphQ EulerPhi Evaluatable Evaluate Evaluated EvaluatePacket EvaluationCell EvaluationCompletionAction EvaluationElements EvaluationMode EvaluationMonitor EvaluationNotebook EvaluationObject EvaluationOrder Evaluator EvaluatorNames EvenQ EventData EventEvaluator EventHandler EventHandlerTag EventLabels ExactBlackmanWindow ExactNumberQ ExactRootIsolation ExampleData Except ExcludedForms ExcludePods Exclusions ExclusionsStyle Exists Exit ExitDialog Exp Expand ExpandAll ExpandDenominator ExpandFileName ExpandNumerator Expectation ExpectationE ExpectedValue ExpGammaDistribution ExpIntegralE ExpIntegralEi Exponent ExponentFunction ExponentialDistribution ExponentialFamily ExponentialGeneratingFunction ExponentialMovingAverage ExponentialPowerDistribution ExponentPosition ExponentStep Export ExportAutoReplacements ExportPacket ExportString Expression ExpressionCell ExpressionPacket ExpToTrig ExtendedGCD Extension ExtentElementFunction ExtentMarkers ExtentSize ExternalCall ExternalDataCharacterEncoding Extract ExtractArchive ExtremeValueDistribution ' +\n 'FaceForm FaceGrids FaceGridsStyle Factor FactorComplete Factorial Factorial2 FactorialMoment FactorialMomentGeneratingFunction FactorialPower FactorInteger FactorList FactorSquareFree FactorSquareFreeList FactorTerms FactorTermsList Fail FailureDistribution False FARIMAProcess FEDisableConsolePrintPacket FeedbackSector FeedbackSectorStyle FeedbackType FEEnableConsolePrintPacket Fibonacci FieldHint FieldHintStyle FieldMasked FieldSize File FileBaseName FileByteCount FileDate FileExistsQ FileExtension FileFormat FileHash FileInformation FileName FileNameDepth FileNameDialogSettings FileNameDrop FileNameJoin FileNames FileNameSetter FileNameSplit FileNameTake FilePrint FileType FilledCurve FilledCurveBox Filling FillingStyle FillingTransform FilterRules FinancialBond FinancialData FinancialDerivative FinancialIndicator Find FindArgMax FindArgMin FindClique FindClusters FindCurvePath FindDistributionParameters FindDivisions FindEdgeCover FindEdgeCut FindEulerianCycle FindFaces FindFile FindFit FindGeneratingFunction FindGeoLocation FindGeometricTransform FindGraphCommunities FindGraphIsomorphism FindGraphPartition FindHamiltonianCycle FindIndependentEdgeSet FindIndependentVertexSet FindInstance FindIntegerNullVector FindKClan FindKClique FindKClub FindKPlex FindLibrary FindLinearRecurrence FindList FindMaximum FindMaximumFlow FindMaxValue FindMinimum FindMinimumCostFlow FindMinimumCut FindMinValue FindPermutation FindPostmanTour FindProcessParameters FindRoot FindSequenceFunction FindSettings FindShortestPath FindShortestTour FindThreshold FindVertexCover FindVertexCut Fine FinishDynamic FiniteAbelianGroupCount FiniteGroupCount FiniteGroupData First FirstPassageTimeDistribution FischerGroupFi22 FischerGroupFi23 FischerGroupFi24Prime FisherHypergeometricDistribution FisherRatioTest FisherZDistribution Fit FitAll FittedModel FixedPoint FixedPointList FlashSelection Flat Flatten FlattenAt FlatTopWindow FlipView Floor FlushPrintOutputPacket Fold FoldList Font FontColor FontFamily FontForm FontName FontOpacity FontPostScriptName FontProperties FontReencoding FontSize FontSlant FontSubstitutions FontTracking FontVariations FontWeight For ForAll Format FormatRules FormatType FormatTypeAutoConvert FormatValues FormBox FormBoxOptions FortranForm Forward ForwardBackward Fourier FourierCoefficient FourierCosCoefficient FourierCosSeries FourierCosTransform FourierDCT FourierDCTFilter FourierDCTMatrix FourierDST FourierDSTMatrix FourierMatrix FourierParameters FourierSequenceTransform FourierSeries FourierSinCoefficient FourierSinSeries FourierSinTransform FourierTransform FourierTrigSeries FractionalBrownianMotionProcess FractionalPart FractionBox FractionBoxOptions FractionLine Frame FrameBox FrameBoxOptions Framed FrameInset FrameLabel Frameless FrameMargins FrameStyle FrameTicks FrameTicksStyle FRatioDistribution FrechetDistribution FreeQ FrequencySamplingFilterKernel FresnelC FresnelS Friday FrobeniusNumber FrobeniusSolve ' +\n 'FromCharacterCode FromCoefficientRules FromContinuedFraction FromDate FromDigits FromDMS Front FrontEndDynamicExpression FrontEndEventActions FrontEndExecute FrontEndObject FrontEndResource FrontEndResourceString FrontEndStackSize FrontEndToken FrontEndTokenExecute FrontEndValueCache FrontEndVersion FrontFaceColor FrontFaceOpacity Full FullAxes FullDefinition FullForm FullGraphics FullOptions FullSimplify Function FunctionExpand FunctionInterpolation FunctionSpace FussellVeselyImportance ' +\n 'GaborFilter GaborMatrix GaborWavelet GainMargins GainPhaseMargins Gamma GammaDistribution GammaRegularized GapPenalty Gather GatherBy GaugeFaceElementFunction GaugeFaceStyle GaugeFrameElementFunction GaugeFrameSize GaugeFrameStyle GaugeLabels GaugeMarkers GaugeStyle GaussianFilter GaussianIntegers GaussianMatrix GaussianWindow GCD GegenbauerC General GeneralizedLinearModelFit GenerateConditions GeneratedCell GeneratedParameters GeneratingFunction Generic GenericCylindricalDecomposition GenomeData GenomeLookup GeodesicClosing GeodesicDilation GeodesicErosion GeodesicOpening GeoDestination GeodesyData GeoDirection GeoDistance GeoGridPosition GeometricBrownianMotionProcess GeometricDistribution GeometricMean GeometricMeanFilter GeometricTransformation GeometricTransformation3DBox GeometricTransformation3DBoxOptions GeometricTransformationBox GeometricTransformationBoxOptions GeoPosition GeoPositionENU GeoPositionXYZ GeoProjectionData GestureHandler GestureHandlerTag Get GetBoundingBoxSizePacket GetContext GetEnvironment GetFileName GetFrontEndOptionsDataPacket GetLinebreakInformationPacket GetMenusPacket GetPageBreakInformationPacket Glaisher GlobalClusteringCoefficient GlobalPreferences GlobalSession Glow GoldenRatio GompertzMakehamDistribution GoodmanKruskalGamma GoodmanKruskalGammaTest Goto Grad Gradient GradientFilter GradientOrientationFilter Graph GraphAssortativity GraphCenter GraphComplement GraphData GraphDensity GraphDiameter GraphDifference GraphDisjointUnion ' +\n 'GraphDistance GraphDistanceMatrix GraphElementData GraphEmbedding GraphHighlight GraphHighlightStyle GraphHub Graphics Graphics3D Graphics3DBox Graphics3DBoxOptions GraphicsArray GraphicsBaseline GraphicsBox GraphicsBoxOptions GraphicsColor GraphicsColumn GraphicsComplex GraphicsComplex3DBox GraphicsComplex3DBoxOptions GraphicsComplexBox GraphicsComplexBoxOptions GraphicsContents GraphicsData GraphicsGrid GraphicsGridBox GraphicsGroup GraphicsGroup3DBox GraphicsGroup3DBoxOptions GraphicsGroupBox GraphicsGroupBoxOptions GraphicsGrouping GraphicsHighlightColor GraphicsRow GraphicsSpacing GraphicsStyle GraphIntersection GraphLayout GraphLinkEfficiency GraphPeriphery GraphPlot GraphPlot3D GraphPower GraphPropertyDistribution GraphQ GraphRadius GraphReciprocity GraphRoot GraphStyle GraphUnion Gray GrayLevel GreatCircleDistance Greater GreaterEqual GreaterEqualLess GreaterFullEqual GreaterGreater GreaterLess GreaterSlantEqual GreaterTilde Green Grid GridBaseline GridBox GridBoxAlignment GridBoxBackground GridBoxDividers GridBoxFrame GridBoxItemSize GridBoxItemStyle GridBoxOptions GridBoxSpacings GridCreationSettings GridDefaultElement GridElementStyleOptions GridFrame GridFrameMargins GridGraph GridLines GridLinesStyle GroebnerBasis GroupActionBase GroupCentralizer GroupElementFromWord GroupElementPosition GroupElementQ GroupElements GroupElementToWord GroupGenerators GroupMultiplicationTable GroupOrbits GroupOrder GroupPageBreakWithin GroupSetwiseStabilizer GroupStabilizer GroupStabilizerChain Gudermannian GumbelDistribution ' +\n 'HaarWavelet HadamardMatrix HalfNormalDistribution HamiltonianGraphQ HammingDistance HammingWindow HankelH1 HankelH2 HankelMatrix HannPoissonWindow HannWindow HaradaNortonGroupHN HararyGraph HarmonicMean HarmonicMeanFilter HarmonicNumber Hash HashTable Haversine HazardFunction Head HeadCompose Heads HeavisideLambda HeavisidePi HeavisideTheta HeldGroupHe HeldPart HelpBrowserLookup HelpBrowserNotebook HelpBrowserSettings HermiteDecomposition HermiteH HermitianMatrixQ HessenbergDecomposition Hessian HexadecimalCharacter Hexahedron HexahedronBox HexahedronBoxOptions HiddenSurface HighlightGraph HighlightImage HighpassFilter HigmanSimsGroupHS HilbertFilter HilbertMatrix Histogram Histogram3D HistogramDistribution HistogramList HistogramTransform HistogramTransformInterpolation HitMissTransform HITSCentrality HodgeDual HoeffdingD HoeffdingDTest Hold HoldAll HoldAllComplete HoldComplete HoldFirst HoldForm HoldPattern HoldRest HolidayCalendar HomeDirectory HomePage Horizontal HorizontalForm HorizontalGauge HorizontalScrollPosition HornerForm HotellingTSquareDistribution HoytDistribution HTMLSave Hue HumpDownHump HumpEqual HurwitzLerchPhi HurwitzZeta HyperbolicDistribution HypercubeGraph HyperexponentialDistribution Hyperfactorial Hypergeometric0F1 Hypergeometric0F1Regularized Hypergeometric1F1 Hypergeometric1F1Regularized Hypergeometric2F1 Hypergeometric2F1Regularized HypergeometricDistribution HypergeometricPFQ HypergeometricPFQRegularized HypergeometricU Hyperlink HyperlinkCreationSettings Hyphenation HyphenationOptions HypoexponentialDistribution HypothesisTestData ' +\n 'I Identity IdentityMatrix If IgnoreCase Im Image Image3D Image3DSlices ImageAccumulate ImageAdd ImageAdjust ImageAlign ImageApply ImageAspectRatio ImageAssemble ImageCache ImageCacheValid ImageCapture ImageChannels ImageClip ImageColorSpace ImageCompose ImageConvolve ImageCooccurrence ImageCorners ImageCorrelate ImageCorrespondingPoints ImageCrop ImageData ImageDataPacket ImageDeconvolve ImageDemosaic ImageDifference ImageDimensions ImageDistance ImageEffect ImageFeatureTrack ImageFileApply ImageFileFilter ImageFileScan ImageFilter ImageForestingComponents ImageForwardTransformation ImageHistogram ImageKeypoints ImageLevels ImageLines ImageMargins ImageMarkers ImageMeasurements ImageMultiply ImageOffset ImagePad ImagePadding ImagePartition ImagePeriodogram ImagePerspectiveTransformation ImageQ ImageRangeCache ImageReflect ImageRegion ImageResize ImageResolution ImageRotate ImageRotated ImageScaled ImageScan ImageSize ImageSizeAction ImageSizeCache ImageSizeMultipliers ImageSizeRaw ImageSubtract ImageTake ImageTransformation ImageTrim ImageType ImageValue ImageValuePositions Implies Import ImportAutoReplacements ImportString ImprovementImportance In IncidenceGraph IncidenceList IncidenceMatrix IncludeConstantBasis IncludeFileExtension IncludePods IncludeSingularTerm Increment Indent IndentingNewlineSpacings IndentMaxFraction IndependenceTest IndependentEdgeSetQ IndependentUnit IndependentVertexSetQ Indeterminate IndexCreationOptions Indexed IndexGraph IndexTag Inequality InexactNumberQ InexactNumbers Infinity Infix Information Inherited InheritScope Initialization InitializationCell InitializationCellEvaluation InitializationCellWarning InlineCounterAssignments InlineCounterIncrements InlineRules Inner Inpaint Input InputAliases InputAssumptions InputAutoReplacements InputField InputFieldBox InputFieldBoxOptions InputForm InputGrouping InputNamePacket InputNotebook InputPacket InputSettings InputStream InputString InputStringPacket InputToBoxFormPacket Insert InsertionPointObject InsertResults Inset Inset3DBox Inset3DBoxOptions InsetBox InsetBoxOptions Install InstallService InString Integer IntegerDigits IntegerExponent IntegerLength IntegerPart IntegerPartitions IntegerQ Integers IntegerString Integral Integrate Interactive InteractiveTradingChart Interlaced Interleaving InternallyBalancedDecomposition InterpolatingFunction InterpolatingPolynomial Interpolation InterpolationOrder InterpolationPoints InterpolationPrecision Interpretation InterpretationBox InterpretationBoxOptions InterpretationFunction ' +\n 'InterpretTemplate InterquartileRange Interrupt InterruptSettings Intersection Interval IntervalIntersection IntervalMemberQ IntervalUnion Inverse InverseBetaRegularized InverseCDF InverseChiSquareDistribution InverseContinuousWaveletTransform InverseDistanceTransform InverseEllipticNomeQ InverseErf InverseErfc InverseFourier InverseFourierCosTransform InverseFourierSequenceTransform InverseFourierSinTransform InverseFourierTransform InverseFunction InverseFunctions InverseGammaDistribution InverseGammaRegularized InverseGaussianDistribution InverseGudermannian InverseHaversine InverseJacobiCD InverseJacobiCN InverseJacobiCS InverseJacobiDC InverseJacobiDN InverseJacobiDS InverseJacobiNC InverseJacobiND InverseJacobiNS InverseJacobiSC InverseJacobiSD InverseJacobiSN InverseLaplaceTransform InversePermutation InverseRadon InverseSeries InverseSurvivalFunction InverseWaveletTransform InverseWeierstrassP InverseZTransform Invisible InvisibleApplication InvisibleTimes IrreduciblePolynomialQ IsolatingInterval IsomorphicGraphQ IsotopeData Italic Item ItemBox ItemBoxOptions ItemSize ItemStyle ItoProcess ' +\n 'JaccardDissimilarity JacobiAmplitude Jacobian JacobiCD JacobiCN JacobiCS JacobiDC JacobiDN JacobiDS JacobiNC JacobiND JacobiNS JacobiP JacobiSC JacobiSD JacobiSN JacobiSymbol JacobiZeta JankoGroupJ1 JankoGroupJ2 JankoGroupJ3 JankoGroupJ4 JarqueBeraALMTest JohnsonDistribution Join Joined JoinedCurve JoinedCurveBox JoinForm JordanDecomposition JordanModelDecomposition ' +\n 'K KagiChart KaiserBesselWindow KaiserWindow KalmanEstimator KalmanFilter KarhunenLoeveDecomposition KaryTree KatzCentrality KCoreComponents KDistribution KelvinBei KelvinBer KelvinKei KelvinKer KendallTau KendallTauTest KernelExecute KernelMixtureDistribution KernelObject Kernels Ket Khinchin KirchhoffGraph KirchhoffMatrix KleinInvariantJ KnightTourGraph KnotData KnownUnitQ KolmogorovSmirnovTest KroneckerDelta KroneckerModelDecomposition KroneckerProduct KroneckerSymbol KuiperTest KumaraswamyDistribution Kurtosis KuwaharaFilter ' +\n 'Label Labeled LabeledSlider LabelingFunction LabelStyle LaguerreL LambdaComponents LambertW LanczosWindow LandauDistribution Language LanguageCategory LaplaceDistribution LaplaceTransform Laplacian LaplacianFilter LaplacianGaussianFilter Large Larger Last Latitude LatitudeLongitude LatticeData LatticeReduce Launch LaunchKernels LayeredGraphPlot LayerSizeFunction LayoutInformation LCM LeafCount LeapYearQ LeastSquares LeastSquaresFilterKernel Left LeftArrow LeftArrowBar LeftArrowRightArrow LeftDownTeeVector LeftDownVector LeftDownVectorBar LeftRightArrow LeftRightVector LeftTee LeftTeeArrow LeftTeeVector LeftTriangle LeftTriangleBar LeftTriangleEqual LeftUpDownVector LeftUpTeeVector LeftUpVector LeftUpVectorBar LeftVector LeftVectorBar LegendAppearance Legended LegendFunction LegendLabel LegendLayout LegendMargins LegendMarkers LegendMarkerSize LegendreP LegendreQ LegendreType Length LengthWhile LerchPhi Less LessEqual LessEqualGreater LessFullEqual LessGreater LessLess LessSlantEqual LessTilde LetterCharacter LetterQ Level LeveneTest LeviCivitaTensor LevyDistribution Lexicographic LibraryFunction LibraryFunctionError LibraryFunctionInformation LibraryFunctionLoad LibraryFunctionUnload LibraryLoad LibraryUnload LicenseID LiftingFilterData LiftingWaveletTransform LightBlue LightBrown LightCyan Lighter LightGray LightGreen Lighting LightingAngle LightMagenta LightOrange LightPink LightPurple LightRed LightSources LightYellow Likelihood Limit LimitsPositioning LimitsPositioningTokens LindleyDistribution Line Line3DBox LinearFilter LinearFractionalTransform LinearModelFit LinearOffsetFunction LinearProgramming LinearRecurrence LinearSolve LinearSolveFunction LineBox LineBreak LinebreakAdjustments LineBreakChart LineBreakWithin LineColor LineForm LineGraph LineIndent LineIndentMaxFraction LineIntegralConvolutionPlot LineIntegralConvolutionScale LineLegend LineOpacity LineSpacing LineWrapParts LinkActivate LinkClose LinkConnect LinkConnectedQ LinkCreate LinkError LinkFlush LinkFunction LinkHost LinkInterrupt LinkLaunch LinkMode LinkObject LinkOpen LinkOptions LinkPatterns LinkProtocol LinkRead LinkReadHeld LinkReadyQ Links LinkWrite LinkWriteHeld LiouvilleLambda List Listable ListAnimate ListContourPlot ListContourPlot3D ListConvolve ListCorrelate ListCurvePathPlot ListDeconvolve ListDensityPlot Listen ListFourierSequenceTransform ListInterpolation ListLineIntegralConvolutionPlot ListLinePlot ListLogLinearPlot ListLogLogPlot ListLogPlot ListPicker ListPickerBox ListPickerBoxBackground ListPickerBoxOptions ListPlay ListPlot ListPlot3D ListPointPlot3D ListPolarPlot ListQ ListStreamDensityPlot ListStreamPlot ListSurfacePlot3D ListVectorDensityPlot ListVectorPlot ListVectorPlot3D ListZTransform Literal LiteralSearch LocalClusteringCoefficient LocalizeVariables LocationEquivalenceTest LocationTest Locator LocatorAutoCreate LocatorBox LocatorBoxOptions LocatorCentering LocatorPane LocatorPaneBox LocatorPaneBoxOptions ' +\n 'LocatorRegion Locked Log Log10 Log2 LogBarnesG LogGamma LogGammaDistribution LogicalExpand LogIntegral LogisticDistribution LogitModelFit LogLikelihood LogLinearPlot LogLogisticDistribution LogLogPlot LogMultinormalDistribution LogNormalDistribution LogPlot LogRankTest LogSeriesDistribution LongEqual Longest LongestAscendingSequence LongestCommonSequence LongestCommonSequencePositions LongestCommonSubsequence LongestCommonSubsequencePositions LongestMatch LongForm Longitude LongLeftArrow LongLeftRightArrow LongRightArrow Loopback LoopFreeGraphQ LowerCaseQ LowerLeftArrow LowerRightArrow LowerTriangularize LowpassFilter LQEstimatorGains LQGRegulator LQOutputRegulatorGains LQRegulatorGains LUBackSubstitution LucasL LuccioSamiComponents LUDecomposition LyapunovSolve LyonsGroupLy ' +\n 'MachineID MachineName MachineNumberQ MachinePrecision MacintoshSystemPageSetup Magenta Magnification Magnify MainSolve MaintainDynamicCaches Majority MakeBoxes MakeExpression MakeRules MangoldtLambda ManhattanDistance Manipulate Manipulator MannWhitneyTest MantissaExponent Manual Map MapAll MapAt MapIndexed MAProcess MapThread MarcumQ MardiaCombinedTest MardiaKurtosisTest MardiaSkewnessTest MarginalDistribution MarkovProcessProperties Masking MatchingDissimilarity MatchLocalNameQ MatchLocalNames MatchQ Material MathematicaNotation MathieuC MathieuCharacteristicA MathieuCharacteristicB MathieuCharacteristicExponent MathieuCPrime MathieuGroupM11 MathieuGroupM12 MathieuGroupM22 MathieuGroupM23 MathieuGroupM24 MathieuS MathieuSPrime MathMLForm MathMLText Matrices MatrixExp MatrixForm MatrixFunction MatrixLog MatrixPlot MatrixPower MatrixQ MatrixRank Max MaxBend MaxDetect MaxExtraBandwidths MaxExtraConditions MaxFeatures MaxFilter Maximize MaxIterations MaxMemoryUsed MaxMixtureKernels MaxPlotPoints MaxPoints MaxRecursion MaxStableDistribution MaxStepFraction MaxSteps MaxStepSize MaxValue MaxwellDistribution McLaughlinGroupMcL Mean MeanClusteringCoefficient MeanDegreeConnectivity MeanDeviation MeanFilter MeanGraphDistance MeanNeighborDegree MeanShift MeanShiftFilter Median MedianDeviation MedianFilter Medium MeijerG MeixnerDistribution MemberQ MemoryConstrained MemoryInUse Menu MenuAppearance MenuCommandKey MenuEvaluator MenuItem MenuPacket MenuSortingValue MenuStyle MenuView MergeDifferences Mesh MeshFunctions MeshRange MeshShading MeshStyle Message MessageDialog MessageList MessageName MessageOptions MessagePacket Messages MessagesNotebook MetaCharacters MetaInformation Method MethodOptions MexicanHatWavelet MeyerWavelet Min MinDetect MinFilter MinimalPolynomial MinimalStateSpaceModel Minimize Minors MinRecursion MinSize MinStableDistribution Minus MinusPlus MinValue Missing MissingDataMethod MittagLefflerE MixedRadix MixedRadixQuantity MixtureDistribution Mod Modal Mode Modular ModularLambda Module Modulus MoebiusMu Moment Momentary MomentConvert MomentEvaluate MomentGeneratingFunction Monday Monitor MonomialList MonomialOrder MonsterGroupM MorletWavelet MorphologicalBinarize MorphologicalBranchPoints MorphologicalComponents MorphologicalEulerNumber MorphologicalGraph MorphologicalPerimeter MorphologicalTransform Most MouseAnnotation MouseAppearance MouseAppearanceTag MouseButtons Mouseover MousePointerNote MousePosition MovingAverage MovingMedian MoyalDistribution MultiedgeStyle MultilaunchWarning MultiLetterItalics MultiLetterStyle MultilineFunction Multinomial MultinomialDistribution MultinormalDistribution MultiplicativeOrder Multiplicity Multiselection MultivariateHypergeometricDistribution MultivariatePoissonDistribution MultivariateTDistribution ' +\n 'N NakagamiDistribution NameQ Names NamespaceBox Nand NArgMax NArgMin NBernoulliB NCache NDSolve NDSolveValue Nearest NearestFunction NeedCurrentFrontEndPackagePacket NeedCurrentFrontEndSymbolsPacket NeedlemanWunschSimilarity Needs Negative NegativeBinomialDistribution NegativeMultinomialDistribution NeighborhoodGraph Nest NestedGreaterGreater NestedLessLess NestedScriptRules NestList NestWhile NestWhileList NevilleThetaC NevilleThetaD NevilleThetaN NevilleThetaS NewPrimitiveStyle NExpectation Next NextPrime NHoldAll NHoldFirst NHoldRest NicholsGridLines NicholsPlot NIntegrate NMaximize NMaxValue NMinimize NMinValue NominalVariables NonAssociative NoncentralBetaDistribution NoncentralChiSquareDistribution NoncentralFRatioDistribution NoncentralStudentTDistribution NonCommutativeMultiply NonConstants None NonlinearModelFit NonlocalMeansFilter NonNegative NonPositive Nor NorlundB Norm Normal NormalDistribution NormalGrouping Normalize NormalizedSquaredEuclideanDistance NormalsFunction NormFunction Not NotCongruent NotCupCap NotDoubleVerticalBar Notebook NotebookApply NotebookAutoSave NotebookClose NotebookConvertSettings NotebookCreate NotebookCreateReturnObject NotebookDefault NotebookDelete NotebookDirectory NotebookDynamicExpression NotebookEvaluate NotebookEventActions NotebookFileName NotebookFind NotebookFindReturnObject NotebookGet NotebookGetLayoutInformationPacket NotebookGetMisspellingsPacket NotebookInformation NotebookInterfaceObject NotebookLocate NotebookObject NotebookOpen NotebookOpenReturnObject NotebookPath NotebookPrint NotebookPut NotebookPutReturnObject NotebookRead NotebookResetGeneratedCells Notebooks NotebookSave NotebookSaveAs NotebookSelection NotebookSetupLayoutInformationPacket NotebooksMenu NotebookWrite NotElement NotEqualTilde NotExists NotGreater NotGreaterEqual NotGreaterFullEqual NotGreaterGreater NotGreaterLess NotGreaterSlantEqual NotGreaterTilde NotHumpDownHump NotHumpEqual NotLeftTriangle NotLeftTriangleBar NotLeftTriangleEqual NotLess NotLessEqual NotLessFullEqual NotLessGreater NotLessLess NotLessSlantEqual NotLessTilde NotNestedGreaterGreater NotNestedLessLess NotPrecedes NotPrecedesEqual NotPrecedesSlantEqual NotPrecedesTilde NotReverseElement NotRightTriangle NotRightTriangleBar NotRightTriangleEqual NotSquareSubset NotSquareSubsetEqual NotSquareSuperset NotSquareSupersetEqual NotSubset NotSubsetEqual NotSucceeds NotSucceedsEqual NotSucceedsSlantEqual NotSucceedsTilde NotSuperset NotSupersetEqual NotTilde NotTildeEqual NotTildeFullEqual NotTildeTilde NotVerticalBar NProbability NProduct NProductFactors NRoots NSolve NSum NSumTerms Null NullRecords NullSpace NullWords Number NumberFieldClassNumber NumberFieldDiscriminant NumberFieldFundamentalUnits NumberFieldIntegralBasis NumberFieldNormRepresentatives NumberFieldRegulator NumberFieldRootsOfUnity NumberFieldSignature NumberForm NumberFormat NumberMarks NumberMultiplier NumberPadding NumberPoint NumberQ NumberSeparator ' +\n 'NumberSigns NumberString Numerator NumericFunction NumericQ NuttallWindow NValues NyquistGridLines NyquistPlot ' +\n 'O ObservabilityGramian ObservabilityMatrix ObservableDecomposition ObservableModelQ OddQ Off Offset OLEData On ONanGroupON OneIdentity Opacity Open OpenAppend Opener OpenerBox OpenerBoxOptions OpenerView OpenFunctionInspectorPacket Opening OpenRead OpenSpecialOptions OpenTemporary OpenWrite Operate OperatingSystem OptimumFlowData Optional OptionInspectorSettings OptionQ Options OptionsPacket OptionsPattern OptionValue OptionValueBox OptionValueBoxOptions Or Orange Order OrderDistribution OrderedQ Ordering Orderless OrnsteinUhlenbeckProcess Orthogonalize Out Outer OutputAutoOverwrite OutputControllabilityMatrix OutputControllableModelQ OutputForm OutputFormData OutputGrouping OutputMathEditExpression OutputNamePacket OutputResponse OutputSizeLimit OutputStream Over OverBar OverDot Overflow OverHat Overlaps Overlay OverlayBox OverlayBoxOptions Overscript OverscriptBox OverscriptBoxOptions OverTilde OverVector OwenT OwnValues ' +\n 'PackingMethod PaddedForm Padding PadeApproximant PadLeft PadRight PageBreakAbove PageBreakBelow PageBreakWithin PageFooterLines PageFooters PageHeaderLines PageHeaders PageHeight PageRankCentrality PageWidth PairedBarChart PairedHistogram PairedSmoothHistogram PairedTTest PairedZTest PaletteNotebook PalettePath Pane PaneBox PaneBoxOptions Panel PanelBox PanelBoxOptions Paneled PaneSelector PaneSelectorBox PaneSelectorBoxOptions PaperWidth ParabolicCylinderD ParagraphIndent ParagraphSpacing ParallelArray ParallelCombine ParallelDo ParallelEvaluate Parallelization Parallelize ParallelMap ParallelNeeds ParallelProduct ParallelSubmit ParallelSum ParallelTable ParallelTry Parameter ParameterEstimator ParameterMixtureDistribution ParameterVariables ParametricFunction ParametricNDSolve ParametricNDSolveValue ParametricPlot ParametricPlot3D ParentConnect ParentDirectory ParentForm Parenthesize ParentList ParetoDistribution Part PartialCorrelationFunction PartialD ParticleData Partition PartitionsP PartitionsQ ParzenWindow PascalDistribution PassEventsDown PassEventsUp Paste PasteBoxFormInlineCells PasteButton Path PathGraph PathGraphQ Pattern PatternSequence PatternTest PauliMatrix PaulWavelet Pause PausedTime PDF PearsonChiSquareTest PearsonCorrelationTest PearsonDistribution PerformanceGoal PeriodicInterpolation Periodogram PeriodogramArray PermutationCycles PermutationCyclesQ PermutationGroup PermutationLength PermutationList PermutationListQ PermutationMax PermutationMin PermutationOrder PermutationPower PermutationProduct PermutationReplace Permutations PermutationSupport Permute PeronaMalikFilter Perpendicular PERTDistribution PetersenGraph PhaseMargins Pi Pick PIDData PIDDerivativeFilter PIDFeedforward PIDTune Piecewise PiecewiseExpand PieChart PieChart3D PillaiTrace PillaiTraceTest Pink Pivoting PixelConstrained PixelValue PixelValuePositions Placed Placeholder PlaceholderReplace Plain PlanarGraphQ Play PlayRange Plot Plot3D Plot3Matrix PlotDivision PlotJoined PlotLabel PlotLayout PlotLegends PlotMarkers PlotPoints PlotRange PlotRangeClipping PlotRangePadding PlotRegion PlotStyle Plus PlusMinus Pochhammer PodStates PodWidth Point Point3DBox PointBox PointFigureChart PointForm PointLegend PointSize PoissonConsulDistribution PoissonDistribution PoissonProcess PoissonWindow PolarAxes PolarAxesOrigin PolarGridLines PolarPlot PolarTicks PoleZeroMarkers PolyaAeppliDistribution PolyGamma Polygon Polygon3DBox Polygon3DBoxOptions PolygonBox PolygonBoxOptions PolygonHoleScale PolygonIntersections PolygonScale PolyhedronData PolyLog PolynomialExtendedGCD PolynomialForm PolynomialGCD PolynomialLCM PolynomialMod PolynomialQ PolynomialQuotient PolynomialQuotientRemainder PolynomialReduce PolynomialRemainder Polynomials PopupMenu PopupMenuBox PopupMenuBoxOptions PopupView PopupWindow Position Positive PositiveDefiniteMatrixQ PossibleZeroQ Postfix PostScript Power PowerDistribution PowerExpand PowerMod PowerModList ' +\n 'PowerSpectralDensity PowersRepresentations PowerSymmetricPolynomial Precedence PrecedenceForm Precedes PrecedesEqual PrecedesSlantEqual PrecedesTilde Precision PrecisionGoal PreDecrement PredictionRoot PreemptProtect PreferencesPath Prefix PreIncrement Prepend PrependTo PreserveImageOptions Previous PriceGraphDistribution PrimaryPlaceholder Prime PrimeNu PrimeOmega PrimePi PrimePowerQ PrimeQ Primes PrimeZetaP PrimitiveRoot PrincipalComponents PrincipalValue Print PrintAction PrintForm PrintingCopies PrintingOptions PrintingPageRange PrintingStartingPageNumber PrintingStyleEnvironment PrintPrecision PrintTemporary Prism PrismBox PrismBoxOptions PrivateCellOptions PrivateEvaluationOptions PrivateFontOptions PrivateFrontEndOptions PrivateNotebookOptions PrivatePaths Probability ProbabilityDistribution ProbabilityPlot ProbabilityPr ProbabilityScalePlot ProbitModelFit ProcessEstimator ProcessParameterAssumptions ProcessParameterQ ProcessStateDomain ProcessTimeDomain Product ProductDistribution ProductLog ProgressIndicator ProgressIndicatorBox ProgressIndicatorBoxOptions Projection Prolog PromptForm Properties Property PropertyList PropertyValue Proportion Proportional Protect Protected ProteinData Pruning PseudoInverse Purple Put PutAppend Pyramid PyramidBox PyramidBoxOptions ' +\n 'QBinomial QFactorial QGamma QHypergeometricPFQ QPochhammer QPolyGamma QRDecomposition QuadraticIrrationalQ Quantile QuantilePlot Quantity QuantityForm QuantityMagnitude QuantityQ QuantityUnit Quartics QuartileDeviation Quartiles QuartileSkewness QueueingNetworkProcess QueueingProcess QueueProperties Quiet Quit Quotient QuotientRemainder ' +\n 'RadialityCentrality RadicalBox RadicalBoxOptions RadioButton RadioButtonBar RadioButtonBox RadioButtonBoxOptions Radon RamanujanTau RamanujanTauL RamanujanTauTheta RamanujanTauZ Random RandomChoice RandomComplex RandomFunction RandomGraph RandomImage RandomInteger RandomPermutation RandomPrime RandomReal RandomSample RandomSeed RandomVariate RandomWalkProcess Range RangeFilter RangeSpecification RankedMax RankedMin Raster Raster3D Raster3DBox Raster3DBoxOptions RasterArray RasterBox RasterBoxOptions Rasterize RasterSize Rational RationalFunctions Rationalize Rationals Ratios Raw RawArray RawBoxes RawData RawMedium RayleighDistribution Re Read ReadList ReadProtected Real RealBlockDiagonalForm RealDigits RealExponent Reals Reap Record RecordLists RecordSeparators Rectangle RectangleBox RectangleBoxOptions RectangleChart RectangleChart3D RecurrenceFilter RecurrenceTable RecurringDigitsForm Red Reduce RefBox ReferenceLineStyle ReferenceMarkers ReferenceMarkerStyle Refine ReflectionMatrix ReflectionTransform Refresh RefreshRate RegionBinarize RegionFunction RegionPlot RegionPlot3D RegularExpression Regularization Reinstall Release ReleaseHold ReliabilityDistribution ReliefImage ReliefPlot Remove RemoveAlphaChannel RemoveAsynchronousTask Removed RemoveInputStreamMethod RemoveOutputStreamMethod RemoveProperty RemoveScheduledTask RenameDirectory RenameFile RenderAll RenderingOptions RenewalProcess RenkoChart Repeated RepeatedNull RepeatedString Replace ReplaceAll ReplaceHeldPart ReplaceImageValue ReplaceList ReplacePart ReplacePixelValue ReplaceRepeated Resampling Rescale RescalingTransform ResetDirectory ResetMenusPacket ResetScheduledTask Residue Resolve Rest Resultant ResumePacket Return ReturnExpressionPacket ReturnInputFormPacket ReturnPacket ReturnTextPacket Reverse ReverseBiorthogonalSplineWavelet ReverseElement ReverseEquilibrium ReverseGraph ReverseUpEquilibrium RevolutionAxis RevolutionPlot3D RGBColor RiccatiSolve RiceDistribution RidgeFilter RiemannR RiemannSiegelTheta RiemannSiegelZ Riffle Right RightArrow RightArrowBar RightArrowLeftArrow RightCosetRepresentative RightDownTeeVector RightDownVector RightDownVectorBar RightTee RightTeeArrow RightTeeVector RightTriangle RightTriangleBar RightTriangleEqual RightUpDownVector RightUpTeeVector RightUpVector RightUpVectorBar RightVector RightVectorBar RiskAchievementImportance RiskReductionImportance RogersTanimotoDissimilarity Root RootApproximant RootIntervals RootLocusPlot RootMeanSquare RootOfUnityQ RootReduce Roots RootSum Rotate RotateLabel RotateLeft RotateRight RotationAction RotationBox RotationBoxOptions RotationMatrix RotationTransform Round RoundImplies RoundingRadius Row RowAlignments RowBackgrounds RowBox RowHeights RowLines RowMinHeight RowReduce RowsEqual RowSpacings RSolve RudvalisGroupRu Rule RuleCondition RuleDelayed RuleForm RulerUnits Run RunScheduledTask RunThrough RuntimeAttributes RuntimeOptions RussellRaoDissimilarity ' +\n 'SameQ SameTest SampleDepth SampledSoundFunction SampledSoundList SampleRate SamplingPeriod SARIMAProcess SARMAProcess SatisfiabilityCount SatisfiabilityInstances SatisfiableQ Saturday Save Saveable SaveAutoDelete SaveDefinitions SawtoothWave Scale Scaled ScaleDivisions ScaledMousePosition ScaleOrigin ScalePadding ScaleRanges ScaleRangeStyle ScalingFunctions ScalingMatrix ScalingTransform Scan ScheduledTaskActiveQ ScheduledTaskData ScheduledTaskObject ScheduledTasks SchurDecomposition ScientificForm ScreenRectangle ScreenStyleEnvironment ScriptBaselineShifts ScriptLevel ScriptMinSize ScriptRules ScriptSizeMultipliers Scrollbars ScrollingOptions ScrollPosition Sec Sech SechDistribution SectionGrouping SectorChart SectorChart3D SectorOrigin SectorSpacing SeedRandom Select Selectable SelectComponents SelectedCells SelectedNotebook Selection SelectionAnimate SelectionCell SelectionCellCreateCell SelectionCellDefaultStyle SelectionCellParentStyle SelectionCreateCell SelectionDebuggerTag SelectionDuplicateCell SelectionEvaluate SelectionEvaluateCreateCell SelectionMove SelectionPlaceholder SelectionSetStyle SelectWithContents SelfLoops SelfLoopStyle SemialgebraicComponentInstances SendMail Sequence SequenceAlignment SequenceForm SequenceHold SequenceLimit Series SeriesCoefficient SeriesData SessionTime Set SetAccuracy SetAlphaChannel SetAttributes Setbacks SetBoxFormNamesPacket SetDelayed SetDirectory SetEnvironment SetEvaluationNotebook SetFileDate SetFileLoadingContext SetNotebookStatusLine SetOptions SetOptionsPacket SetPrecision SetProperty SetSelectedNotebook SetSharedFunction SetSharedVariable SetSpeechParametersPacket SetStreamPosition SetSystemOptions Setter SetterBar SetterBox SetterBoxOptions Setting SetValue Shading Shallow ShannonWavelet ShapiroWilkTest Share Sharpen ShearingMatrix ShearingTransform ShenCastanMatrix Short ShortDownArrow Shortest ShortestMatch ShortestPathFunction ShortLeftArrow ShortRightArrow ShortUpArrow Show ShowAutoStyles ShowCellBracket ShowCellLabel ShowCellTags ShowClosedCellArea ShowContents ShowControls ShowCursorTracker ShowGroupOpenCloseIcon ShowGroupOpener ShowInvisibleCharacters ShowPageBreaks ShowPredictiveInterface ShowSelection ShowShortBoxForm ShowSpecialCharacters ShowStringCharacters ShowSyntaxStyles ShrinkingDelay ShrinkWrapBoundingBox SiegelTheta SiegelTukeyTest Sign Signature SignedRankTest SignificanceLevel SignPadding SignTest SimilarityRules SimpleGraph SimpleGraphQ Simplify Sin Sinc SinghMaddalaDistribution SingleEvaluation SingleLetterItalics SingleLetterStyle SingularValueDecomposition SingularValueList SingularValuePlot SingularValues Sinh SinhIntegral SinIntegral SixJSymbol Skeleton SkeletonTransform SkellamDistribution Skewness SkewNormalDistribution Skip SliceDistribution Slider Slider2D Slider2DBox Slider2DBoxOptions SliderBox SliderBoxOptions SlideView Slot SlotSequence Small SmallCircle Smaller SmithDelayCompensator SmithWatermanSimilarity ' +\n 'SmoothDensityHistogram SmoothHistogram SmoothHistogram3D SmoothKernelDistribution SocialMediaData Socket SokalSneathDissimilarity Solve SolveAlways SolveDelayed Sort SortBy Sound SoundAndGraphics SoundNote SoundVolume Sow Space SpaceForm Spacer Spacings Span SpanAdjustments SpanCharacterRounding SpanFromAbove SpanFromBoth SpanFromLeft SpanLineThickness SpanMaxSize SpanMinSize SpanningCharacters SpanSymmetric SparseArray SpatialGraphDistribution Speak SpeakTextPacket SpearmanRankTest SpearmanRho Spectrogram SpectrogramArray Specularity SpellingCorrection SpellingDictionaries SpellingDictionariesPath SpellingOptions SpellingSuggestionsPacket Sphere SphereBox SphericalBesselJ SphericalBesselY SphericalHankelH1 SphericalHankelH2 SphericalHarmonicY SphericalPlot3D SphericalRegion SpheroidalEigenvalue SpheroidalJoiningFactor SpheroidalPS SpheroidalPSPrime SpheroidalQS SpheroidalQSPrime SpheroidalRadialFactor SpheroidalS1 SpheroidalS1Prime SpheroidalS2 SpheroidalS2Prime Splice SplicedDistribution SplineClosed SplineDegree SplineKnots SplineWeights Split SplitBy SpokenString Sqrt SqrtBox SqrtBoxOptions Square SquaredEuclideanDistance SquareFreeQ SquareIntersection SquaresR SquareSubset SquareSubsetEqual SquareSuperset SquareSupersetEqual SquareUnion SquareWave StabilityMargins StabilityMarginsStyle StableDistribution Stack StackBegin StackComplete StackInhibit StandardDeviation StandardDeviationFilter StandardForm Standardize StandbyDistribution Star StarGraph StartAsynchronousTask StartingStepSize StartOfLine StartOfString StartScheduledTask StartupSound StateDimensions StateFeedbackGains StateOutputEstimator StateResponse StateSpaceModel StateSpaceRealization StateSpaceTransform StationaryDistribution StationaryWaveletPacketTransform StationaryWaveletTransform StatusArea StatusCentrality StepMonitor StieltjesGamma StirlingS1 StirlingS2 StopAsynchronousTask StopScheduledTask StrataVariables StratonovichProcess StreamColorFunction StreamColorFunctionScaling StreamDensityPlot StreamPlot StreamPoints StreamPosition Streams StreamScale StreamStyle String StringBreak StringByteCount StringCases StringCount StringDrop StringExpression StringForm StringFormat StringFreeQ StringInsert StringJoin StringLength StringMatchQ StringPosition StringQ StringReplace StringReplaceList StringReplacePart StringReverse StringRotateLeft StringRotateRight StringSkeleton StringSplit StringTake StringToStream StringTrim StripBoxes StripOnInput StripWrapperBoxes StrokeForm StructuralImportance StructuredArray StructuredSelection StruveH StruveL Stub StudentTDistribution Style StyleBox StyleBoxAutoDelete StyleBoxOptions StyleData StyleDefinitions StyleForm StyleKeyMapping StyleMenuListing StyleNameDialogSettings StyleNames StylePrint StyleSheetPath Subfactorial Subgraph SubMinus SubPlus SubresultantPolynomialRemainders ' +\n 'SubresultantPolynomials Subresultants Subscript SubscriptBox SubscriptBoxOptions Subscripted Subset SubsetEqual Subsets SubStar Subsuperscript SubsuperscriptBox SubsuperscriptBoxOptions Subtract SubtractFrom SubValues Succeeds SucceedsEqual SucceedsSlantEqual SucceedsTilde SuchThat Sum SumConvergence Sunday SuperDagger SuperMinus SuperPlus Superscript SuperscriptBox SuperscriptBoxOptions Superset SupersetEqual SuperStar Surd SurdForm SurfaceColor SurfaceGraphics SurvivalDistribution SurvivalFunction SurvivalModel SurvivalModelFit SuspendPacket SuzukiDistribution SuzukiGroupSuz SwatchLegend Switch Symbol SymbolName SymletWavelet Symmetric SymmetricGroup SymmetricMatrixQ SymmetricPolynomial SymmetricReduction Symmetrize SymmetrizedArray SymmetrizedArrayRules SymmetrizedDependentComponents SymmetrizedIndependentComponents SymmetrizedReplacePart SynchronousInitialization SynchronousUpdating Syntax SyntaxForm SyntaxInformation SyntaxLength SyntaxPacket SyntaxQ SystemDialogInput SystemException SystemHelpPath SystemInformation SystemInformationData SystemOpen SystemOptions SystemsModelDelay SystemsModelDelayApproximate SystemsModelDelete SystemsModelDimensions SystemsModelExtract SystemsModelFeedbackConnect SystemsModelLabels SystemsModelOrder SystemsModelParallelConnect SystemsModelSeriesConnect SystemsModelStateFeedbackConnect SystemStub ' +\n 'Tab TabFilling Table TableAlignments TableDepth TableDirections TableForm TableHeadings TableSpacing TableView TableViewBox TabSpacings TabView TabViewBox TabViewBoxOptions TagBox TagBoxNote TagBoxOptions TaggingRules TagSet TagSetDelayed TagStyle TagUnset Take TakeWhile Tally Tan Tanh TargetFunctions TargetUnits TautologyQ TelegraphProcess TemplateBox TemplateBoxOptions TemplateSlotSequence TemporalData Temporary TemporaryVariable TensorContract TensorDimensions TensorExpand TensorProduct TensorQ TensorRank TensorReduce TensorSymmetry TensorTranspose TensorWedge Tetrahedron TetrahedronBox TetrahedronBoxOptions TeXForm TeXSave Text Text3DBox Text3DBoxOptions TextAlignment TextBand TextBoundingBox TextBox TextCell TextClipboardType TextData TextForm TextJustification TextLine TextPacket TextParagraph TextRecognize TextRendering TextStyle Texture TextureCoordinateFunction TextureCoordinateScaling Therefore ThermometerGauge Thick Thickness Thin Thinning ThisLink ThompsonGroupTh Thread ThreeJSymbol Threshold Through Throw Thumbnail Thursday Ticks TicksStyle Tilde TildeEqual TildeFullEqual TildeTilde TimeConstrained TimeConstraint Times TimesBy TimeSeriesForecast TimeSeriesInvertibility TimeUsed TimeValue TimeZone Timing Tiny TitleGrouping TitsGroupT ToBoxes ToCharacterCode ToColor ToContinuousTimeModel ToDate ToDiscreteTimeModel ToeplitzMatrix ToExpression ToFileName Together Toggle ToggleFalse Toggler TogglerBar TogglerBox TogglerBoxOptions ToHeldExpression ToInvertibleTimeSeries TokenWords Tolerance ToLowerCase ToNumberField TooBig Tooltip TooltipBox TooltipBoxOptions TooltipDelay TooltipStyle Top TopHatTransform TopologicalSort ToRadicals ToRules ToString Total TotalHeight TotalVariationFilter TotalWidth TouchscreenAutoZoom TouchscreenControlPlacement ToUpperCase Tr Trace TraceAbove TraceAction TraceBackward TraceDepth TraceDialog TraceForward TraceInternal TraceLevel TraceOff TraceOn TraceOriginal TracePrint TraceScan TrackedSymbols TradingChart TraditionalForm TraditionalFunctionNotation TraditionalNotation TraditionalOrder TransferFunctionCancel TransferFunctionExpand TransferFunctionFactor TransferFunctionModel TransferFunctionPoles TransferFunctionTransform TransferFunctionZeros TransformationFunction TransformationFunctions TransformationMatrix TransformedDistribution TransformedField Translate TranslationTransform TransparentColor Transpose TreeForm TreeGraph TreeGraphQ TreePlot TrendStyle TriangleWave TriangularDistribution Trig TrigExpand TrigFactor TrigFactorList Trigger TrigReduce TrigToExp TrimmedMean True TrueQ TruncatedDistribution TsallisQExponentialDistribution TsallisQGaussianDistribution TTest Tube TubeBezierCurveBox TubeBezierCurveBoxOptions TubeBox TubeBSplineCurveBox TubeBSplineCurveBoxOptions Tuesday TukeyLambdaDistribution TukeyWindow Tuples TuranGraph TuringMachine ' +\n 'Transparent ' +\n 'UnateQ Uncompress Undefined UnderBar Underflow Underlined Underoverscript UnderoverscriptBox UnderoverscriptBoxOptions Underscript UnderscriptBox UnderscriptBoxOptions UndirectedEdge UndirectedGraph UndirectedGraphQ UndocumentedTestFEParserPacket UndocumentedTestGetSelectionPacket Unequal Unevaluated UniformDistribution UniformGraphDistribution UniformSumDistribution Uninstall Union UnionPlus Unique UnitBox UnitConvert UnitDimensions Unitize UnitRootTest UnitSimplify UnitStep UnitTriangle UnitVector Unprotect UnsameQ UnsavedVariables Unset UnsetShared UntrackedVariables Up UpArrow UpArrowBar UpArrowDownArrow Update UpdateDynamicObjects UpdateDynamicObjectsSynchronous UpdateInterval UpDownArrow UpEquilibrium UpperCaseQ UpperLeftArrow UpperRightArrow UpperTriangularize Upsample UpSet UpSetDelayed UpTee UpTeeArrow UpValues URL URLFetch URLFetchAsynchronous URLSave URLSaveAsynchronous UseGraphicsRange Using UsingFrontEnd ' +\n 'V2Get ValidationLength Value ValueBox ValueBoxOptions ValueForm ValueQ ValuesData Variables Variance VarianceEquivalenceTest VarianceEstimatorFunction VarianceGammaDistribution VarianceTest VectorAngle VectorColorFunction VectorColorFunctionScaling VectorDensityPlot VectorGlyphData VectorPlot VectorPlot3D VectorPoints VectorQ Vectors VectorScale VectorStyle Vee Verbatim Verbose VerboseConvertToPostScriptPacket VerifyConvergence VerifySolutions VerifyTestAssumptions Version VersionNumber VertexAdd VertexCapacity VertexColors VertexComponent VertexConnectivity VertexCoordinateRules VertexCoordinates VertexCorrelationSimilarity VertexCosineSimilarity VertexCount VertexCoverQ VertexDataCoordinates VertexDegree VertexDelete VertexDiceSimilarity VertexEccentricity VertexInComponent VertexInDegree VertexIndex VertexJaccardSimilarity VertexLabeling VertexLabels VertexLabelStyle VertexList VertexNormals VertexOutComponent VertexOutDegree VertexQ VertexRenderingFunction VertexReplace VertexShape VertexShapeFunction VertexSize VertexStyle VertexTextureCoordinates VertexWeight Vertical VerticalBar VerticalForm VerticalGauge VerticalSeparator VerticalSlider VerticalTilde ViewAngle ViewCenter ViewMatrix ViewPoint ViewPointSelectorSettings ViewPort ViewRange ViewVector ViewVertical VirtualGroupData Visible VisibleCell VoigtDistribution VonMisesDistribution ' +\n 'WaitAll WaitAsynchronousTask WaitNext WaitUntil WakebyDistribution WalleniusHypergeometricDistribution WaringYuleDistribution WatershedComponents WatsonUSquareTest WattsStrogatzGraphDistribution WaveletBestBasis WaveletFilterCoefficients WaveletImagePlot WaveletListPlot WaveletMapIndexed WaveletMatrixPlot WaveletPhi WaveletPsi WaveletScale WaveletScalogram WaveletThreshold WeaklyConnectedComponents WeaklyConnectedGraphQ WeakStationarity WeatherData WeberE Wedge Wednesday WeibullDistribution WeierstrassHalfPeriods WeierstrassInvariants WeierstrassP WeierstrassPPrime WeierstrassSigma WeierstrassZeta WeightedAdjacencyGraph WeightedAdjacencyMatrix WeightedData WeightedGraphQ Weights WelchWindow WheelGraph WhenEvent Which While White Whitespace WhitespaceCharacter WhittakerM WhittakerW WienerFilter WienerProcess WignerD WignerSemicircleDistribution WilksW WilksWTest WindowClickSelect WindowElements WindowFloating WindowFrame WindowFrameElements WindowMargins WindowMovable WindowOpacity WindowSelected WindowSize WindowStatusArea WindowTitle WindowToolbars WindowWidth With WolframAlpha WolframAlphaDate WolframAlphaQuantity WolframAlphaResult Word WordBoundary WordCharacter WordData WordSearch WordSeparators WorkingPrecision Write WriteString Wronskian ' +\n 'XMLElement XMLObject Xnor Xor ' +\n 'Yellow YuleDissimilarity ' +\n 'ZernikeR ZeroSymmetric ZeroTest ZeroWidthTimes Zeta ZetaZero ZipfDistribution ZTest ZTransform ' +\n '$Aborted $ActivationGroupID $ActivationKey $ActivationUserRegistered $AddOnsDirectory $AssertFunction $Assumptions $AsynchronousTask $BaseDirectory $BatchInput $BatchOutput $BoxForms $ByteOrdering $Canceled $CharacterEncoding $CharacterEncodings $CommandLine $CompilationTarget $ConditionHold $ConfiguredKernels $Context $ContextPath $ControlActiveSetting $CreationDate $CurrentLink $DateStringFormat $DefaultFont $DefaultFrontEnd $DefaultImagingDevice $DefaultPath $Display $DisplayFunction $DistributedContexts $DynamicEvaluation $Echo $Epilog $ExportFormats $Failed $FinancialDataSource $FormatType $FrontEnd $FrontEndSession $GeoLocation $HistoryLength $HomeDirectory $HTTPCookies $IgnoreEOF $ImagingDevices $ImportFormats $InitialDirectory $Input $InputFileName $InputStreamMethods $Inspector $InstallationDate $InstallationDirectory $InterfaceEnvironment $IterationLimit $KernelCount $KernelID $Language $LaunchDirectory $LibraryPath $LicenseExpirationDate $LicenseID $LicenseProcesses $LicenseServer $LicenseSubprocesses $LicenseType $Line $Linked $LinkSupported $LoadedFiles $MachineAddresses $MachineDomain $MachineDomains $MachineEpsilon $MachineID $MachineName $MachinePrecision $MachineType $MaxExtraPrecision $MaxLicenseProcesses $MaxLicenseSubprocesses $MaxMachineNumber $MaxNumber $MaxPiecewiseCases $MaxPrecision $MaxRootDegree $MessageGroups $MessageList $MessagePrePrint $Messages $MinMachineNumber $MinNumber $MinorReleaseNumber $MinPrecision $ModuleNumber $NetworkLicense $NewMessage $NewSymbol $Notebooks $NumberMarks $Off $OperatingSystem $Output $OutputForms $OutputSizeLimit $OutputStreamMethods $Packages $ParentLink $ParentProcessID $PasswordFile $PatchLevelID $Path $PathnameSeparator $PerformanceGoal $PipeSupported $Post $Pre $PreferencesDirectory $PrePrint $PreRead $PrintForms $PrintLiteral $ProcessID $ProcessorCount $ProcessorType $ProductInformation $ProgramName $RandomState $RecursionLimit $ReleaseNumber $RootDirectory $ScheduledTask $ScriptCommandLine $SessionID $SetParentLink $SharedFunctions $SharedVariables $SoundDisplay $SoundDisplayFunction $SuppressInputFormHeads $SynchronousEvaluation $SyntaxHandler $System $SystemCharacterEncoding $SystemID $SystemWordLength $TemporaryDirectory $TemporaryPrefix $TextStyle $TimedOut $TimeUnit $TimeZone $TopDirectory $TraceOff $TraceOn $TracePattern $TracePostAction $TracePreAction $Urgent $UserAddOnsDirectory $UserBaseDirectory $UserDocumentsDirectory $UserName $Version $VersionNumber',\n contains: [\n {\n className: 'comment',\n begin: /\\(\\*/, end: /\\*\\)/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n begin: /\\{/, end: /\\}/,\n illegal: /:/\n }\n ]\n };\n};","module.exports = /*\n Formal syntax is not published, helpful link:\n https://github.com/kornilova-l/matlab-IntelliJ-plugin/blob/master/src/main/grammar/Matlab.bnf\n*/\nfunction(hljs) {\n\n var TRANSPOSE_RE = '(\\'|\\\\.\\')+';\n var TRANSPOSE = {\n relevance: 0,\n contains: [\n { begin: TRANSPOSE_RE }\n ]\n };\n\n return {\n keywords: {\n keyword:\n 'break case catch classdef continue else elseif end enumerated events for function ' +\n 'global if methods otherwise parfor persistent properties return spmd switch try while',\n built_in:\n 'sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan ' +\n 'atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot ' +\n 'cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog ' +\n 'realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal ' +\n 'cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli ' +\n 'besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma ' +\n 'gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms ' +\n 'nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones ' +\n 'eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ' +\n 'ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril ' +\n 'triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute ' +\n 'shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan ' +\n 'isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal ' +\n 'rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table ' +\n 'readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun ' +\n 'legend intersect ismember procrustes hold num2cell '\n },\n illegal: '(//|\"|#|/\\\\*|\\\\s+/\\\\w+)',\n contains: [\n {\n className: 'function',\n beginKeywords: 'function', end: '$',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'params',\n variants: [\n {begin: '\\\\(', end: '\\\\)'},\n {begin: '\\\\[', end: '\\\\]'}\n ]\n }\n ]\n },\n {\n className: 'built_in',\n begin: /true|false/,\n relevance: 0,\n starts: TRANSPOSE\n },\n {\n begin: '[a-zA-Z][a-zA-Z_0-9]*' + TRANSPOSE_RE,\n relevance: 0\n },\n {\n className: 'number',\n begin: hljs.C_NUMBER_RE,\n relevance: 0,\n starts: TRANSPOSE\n },\n {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {begin: '\\'\\''}]\n },\n {\n begin: /\\]|}|\\)/,\n relevance: 0,\n starts: TRANSPOSE\n },\n {\n className: 'string',\n begin: '\"', end: '\"',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {begin: '\"\"'}\n ],\n starts: TRANSPOSE\n },\n hljs.COMMENT('^\\\\s*\\\\%\\\\{\\\\s*$', '^\\\\s*\\\\%\\\\}\\\\s*$'),\n hljs.COMMENT('\\\\%', '$')\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = 'if then else elseif for thru do while unless step in and or not';\n var LITERALS = 'true false unknown inf minf ind und %e %i %pi %phi %gamma';\n var BUILTIN_FUNCTIONS =\n ' abasep abs absint absolute_real_time acos acosh acot acoth acsc acsch activate'\n + ' addcol add_edge add_edges addmatrices addrow add_vertex add_vertices adjacency_matrix'\n + ' adjoin adjoint af agd airy airy_ai airy_bi airy_dai airy_dbi algsys alg_type'\n + ' alias allroots alphacharp alphanumericp amortization %and annuity_fv'\n + ' annuity_pv antid antidiff AntiDifference append appendfile apply apply1 apply2'\n + ' applyb1 apropos args arit_amortization arithmetic arithsum array arrayapply'\n + ' arrayinfo arraymake arraysetapply ascii asec asech asin asinh askinteger'\n + ' asksign assoc assoc_legendre_p assoc_legendre_q assume assume_external_byte_order'\n + ' asympa at atan atan2 atanh atensimp atom atvalue augcoefmatrix augmented_lagrangian_method'\n + ' av average_degree backtrace bars barsplot barsplot_description base64 base64_decode'\n + ' bashindices batch batchload bc2 bdvac belln benefit_cost bern bernpoly bernstein_approx'\n + ' bernstein_expand bernstein_poly bessel bessel_i bessel_j bessel_k bessel_simplify'\n + ' bessel_y beta beta_incomplete beta_incomplete_generalized beta_incomplete_regularized'\n + ' bezout bfallroots bffac bf_find_root bf_fmin_cobyla bfhzeta bfloat bfloatp'\n + ' bfpsi bfpsi0 bfzeta biconnected_components bimetric binomial bipartition'\n + ' block blockmatrixp bode_gain bode_phase bothcoef box boxplot boxplot_description'\n + ' break bug_report build_info|10 buildq build_sample burn cabs canform canten'\n + ' cardinality carg cartan cartesian_product catch cauchy_matrix cbffac cdf_bernoulli'\n + ' cdf_beta cdf_binomial cdf_cauchy cdf_chi2 cdf_continuous_uniform cdf_discrete_uniform'\n + ' cdf_exp cdf_f cdf_gamma cdf_general_finite_discrete cdf_geometric cdf_gumbel'\n + ' cdf_hypergeometric cdf_laplace cdf_logistic cdf_lognormal cdf_negative_binomial'\n + ' cdf_noncentral_chi2 cdf_noncentral_student_t cdf_normal cdf_pareto cdf_poisson'\n + ' cdf_rank_sum cdf_rayleigh cdf_signed_rank cdf_student_t cdf_weibull cdisplay'\n + ' ceiling central_moment cequal cequalignore cf cfdisrep cfexpand cgeodesic'\n + ' cgreaterp cgreaterpignore changename changevar chaosgame charat charfun charfun2'\n + ' charlist charp charpoly chdir chebyshev_t chebyshev_u checkdiv check_overlaps'\n + ' chinese cholesky christof chromatic_index chromatic_number cint circulant_graph'\n + ' clear_edge_weight clear_rules clear_vertex_label clebsch_gordan clebsch_graph'\n + ' clessp clesspignore close closefile cmetric coeff coefmatrix cograd col collapse'\n + ' collectterms columnop columnspace columnswap columnvector combination combine'\n + ' comp2pui compare compfile compile compile_file complement_graph complete_bipartite_graph'\n + ' complete_graph complex_number_p components compose_functions concan concat'\n + ' conjugate conmetderiv connected_components connect_vertices cons constant'\n + ' constantp constituent constvalue cont2part content continuous_freq contortion'\n + ' contour_plot contract contract_edge contragrad contrib_ode convert coord'\n + ' copy copy_file copy_graph copylist copymatrix cor cos cosh cot coth cov cov1'\n + ' covdiff covect covers crc24sum create_graph create_list csc csch csetup cspline'\n + ' ctaylor ct_coordsys ctransform ctranspose cube_graph cuboctahedron_graph'\n + ' cunlisp cv cycle_digraph cycle_graph cylindrical days360 dblint deactivate'\n + ' declare declare_constvalue declare_dimensions declare_fundamental_dimensions'\n + ' declare_fundamental_units declare_qty declare_translated declare_unit_conversion'\n + ' declare_units declare_weights decsym defcon define define_alt_display define_variable'\n + ' defint defmatch defrule defstruct deftaylor degree_sequence del delete deleten'\n + ' delta demo demoivre denom depends derivdegree derivlist describe desolve'\n + ' determinant dfloat dgauss_a dgauss_b dgeev dgemm dgeqrf dgesv dgesvd diag'\n + ' diagmatrix diag_matrix diagmatrixp diameter diff digitcharp dimacs_export'\n + ' dimacs_import dimension dimensionless dimensions dimensions_as_list direct'\n + ' directory discrete_freq disjoin disjointp disolate disp dispcon dispform'\n + ' dispfun dispJordan display disprule dispterms distrib divide divisors divsum'\n + ' dkummer_m dkummer_u dlange dodecahedron_graph dotproduct dotsimp dpart'\n + ' draw draw2d draw3d drawdf draw_file draw_graph dscalar echelon edge_coloring'\n + ' edge_connectivity edges eigens_by_jacobi eigenvalues eigenvectors eighth'\n + ' einstein eivals eivects elapsed_real_time elapsed_run_time ele2comp ele2polynome'\n + ' ele2pui elem elementp elevation_grid elim elim_allbut eliminate eliminate_using'\n + ' ellipse elliptic_e elliptic_ec elliptic_eu elliptic_f elliptic_kc elliptic_pi'\n + ' ematrix empty_graph emptyp endcons entermatrix entertensor entier equal equalp'\n + ' equiv_classes erf erfc erf_generalized erfi errcatch error errormsg errors'\n + ' euler ev eval_string evenp every evolution evolution2d evundiff example exp'\n + ' expand expandwrt expandwrt_factored expint expintegral_chi expintegral_ci'\n + ' expintegral_e expintegral_e1 expintegral_ei expintegral_e_simplify expintegral_li'\n + ' expintegral_shi expintegral_si explicit explose exponentialize express expt'\n + ' exsec extdiff extract_linear_equations extremal_subset ezgcd %f f90 facsum'\n + ' factcomb factor factorfacsum factorial factorout factorsum facts fast_central_elements'\n + ' fast_linsolve fasttimes featurep fernfale fft fib fibtophi fifth filename_merge'\n + ' file_search file_type fillarray findde find_root find_root_abs find_root_error'\n + ' find_root_rel first fix flatten flength float floatnump floor flower_snark'\n + ' flush flush1deriv flushd flushnd flush_output fmin_cobyla forget fortran'\n + ' fourcos fourexpand fourier fourier_elim fourint fourintcos fourintsin foursimp'\n + ' foursin fourth fposition frame_bracket freeof freshline fresnel_c fresnel_s'\n + ' from_adjacency_matrix frucht_graph full_listify fullmap fullmapl fullratsimp'\n + ' fullratsubst fullsetify funcsolve fundamental_dimensions fundamental_units'\n + ' fundef funmake funp fv g0 g1 gamma gamma_greek gamma_incomplete gamma_incomplete_generalized'\n + ' gamma_incomplete_regularized gauss gauss_a gauss_b gaussprob gcd gcdex gcdivide'\n + ' gcfac gcfactor gd generalized_lambert_w genfact gen_laguerre genmatrix gensym'\n + ' geo_amortization geo_annuity_fv geo_annuity_pv geomap geometric geometric_mean'\n + ' geosum get getcurrentdirectory get_edge_weight getenv get_lu_factors get_output_stream_string'\n + ' get_pixel get_plot_option get_tex_environment get_tex_environment_default'\n + ' get_vertex_label gfactor gfactorsum ggf girth global_variances gn gnuplot_close'\n + ' gnuplot_replot gnuplot_reset gnuplot_restart gnuplot_start go Gosper GosperSum'\n + ' gr2d gr3d gradef gramschmidt graph6_decode graph6_encode graph6_export graph6_import'\n + ' graph_center graph_charpoly graph_eigenvalues graph_flow graph_order graph_periphery'\n + ' graph_product graph_size graph_union great_rhombicosidodecahedron_graph great_rhombicuboctahedron_graph'\n + ' grid_graph grind grobner_basis grotzch_graph hamilton_cycle hamilton_path'\n + ' hankel hankel_1 hankel_2 harmonic harmonic_mean hav heawood_graph hermite'\n + ' hessian hgfred hilbertmap hilbert_matrix hipow histogram histogram_description'\n + ' hodge horner hypergeometric i0 i1 %ibes ic1 ic2 ic_convert ichr1 ichr2 icosahedron_graph'\n + ' icosidodecahedron_graph icurvature ident identfor identity idiff idim idummy'\n + ' ieqn %if ifactors iframes ifs igcdex igeodesic_coords ilt image imagpart'\n + ' imetric implicit implicit_derivative implicit_plot indexed_tensor indices'\n + ' induced_subgraph inferencep inference_result infix info_display init_atensor'\n + ' init_ctensor in_neighbors innerproduct inpart inprod inrt integerp integer_partitions'\n + ' integrate intersect intersection intervalp intopois intosum invariant1 invariant2'\n + ' inverse_fft inverse_jacobi_cd inverse_jacobi_cn inverse_jacobi_cs inverse_jacobi_dc'\n + ' inverse_jacobi_dn inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd inverse_jacobi_ns'\n + ' inverse_jacobi_sc inverse_jacobi_sd inverse_jacobi_sn invert invert_by_adjoint'\n + ' invert_by_lu inv_mod irr is is_biconnected is_bipartite is_connected is_digraph'\n + ' is_edge_in_graph is_graph is_graph_or_digraph ishow is_isomorphic isolate'\n + ' isomorphism is_planar isqrt isreal_p is_sconnected is_tree is_vertex_in_graph'\n + ' items_inference %j j0 j1 jacobi jacobian jacobi_cd jacobi_cn jacobi_cs jacobi_dc'\n + ' jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_p jacobi_sc jacobi_sd'\n + ' jacobi_sn JF jn join jordan julia julia_set julia_sin %k kdels kdelta kill'\n + ' killcontext kostka kron_delta kronecker_product kummer_m kummer_u kurtosis'\n + ' kurtosis_bernoulli kurtosis_beta kurtosis_binomial kurtosis_chi2 kurtosis_continuous_uniform'\n + ' kurtosis_discrete_uniform kurtosis_exp kurtosis_f kurtosis_gamma kurtosis_general_finite_discrete'\n + ' kurtosis_geometric kurtosis_gumbel kurtosis_hypergeometric kurtosis_laplace'\n + ' kurtosis_logistic kurtosis_lognormal kurtosis_negative_binomial kurtosis_noncentral_chi2'\n + ' kurtosis_noncentral_student_t kurtosis_normal kurtosis_pareto kurtosis_poisson'\n + ' kurtosis_rayleigh kurtosis_student_t kurtosis_weibull label labels lagrange'\n + ' laguerre lambda lambert_w laplace laplacian_matrix last lbfgs lc2kdt lcharp'\n + ' lc_l lcm lc_u ldefint ldisp ldisplay legendre_p legendre_q leinstein length'\n + ' let letrules letsimp levi_civita lfreeof lgtreillis lhs li liediff limit'\n + ' Lindstedt linear linearinterpol linear_program linear_regression line_graph'\n + ' linsolve listarray list_correlations listify list_matrix_entries list_nc_monomials'\n + ' listoftens listofvars listp lmax lmin load loadfile local locate_matrix_entry'\n + ' log logcontract log_gamma lopow lorentz_gauge lowercasep lpart lratsubst'\n + ' lreduce lriemann lsquares_estimates lsquares_estimates_approximate lsquares_estimates_exact'\n + ' lsquares_mse lsquares_residual_mse lsquares_residuals lsum ltreillis lu_backsub'\n + ' lucas lu_factor %m macroexpand macroexpand1 make_array makebox makefact makegamma'\n + ' make_graph make_level_picture makelist makeOrders make_poly_continent make_poly_country'\n + ' make_polygon make_random_state make_rgb_picture makeset make_string_input_stream'\n + ' make_string_output_stream make_transform mandelbrot mandelbrot_set map mapatom'\n + ' maplist matchdeclare matchfix mat_cond mat_fullunblocker mat_function mathml_display'\n + ' mat_norm matrix matrixmap matrixp matrix_size mattrace mat_trace mat_unblocker'\n + ' max max_clique max_degree max_flow maximize_lp max_independent_set max_matching'\n + ' maybe md5sum mean mean_bernoulli mean_beta mean_binomial mean_chi2 mean_continuous_uniform'\n + ' mean_deviation mean_discrete_uniform mean_exp mean_f mean_gamma mean_general_finite_discrete'\n + ' mean_geometric mean_gumbel mean_hypergeometric mean_laplace mean_logistic'\n + ' mean_lognormal mean_negative_binomial mean_noncentral_chi2 mean_noncentral_student_t'\n + ' mean_normal mean_pareto mean_poisson mean_rayleigh mean_student_t mean_weibull'\n + ' median median_deviation member mesh metricexpandall mgf1_sha1 min min_degree'\n + ' min_edge_cut minfactorial minimalPoly minimize_lp minimum_spanning_tree minor'\n + ' minpack_lsquares minpack_solve min_vertex_cover min_vertex_cut mkdir mnewton'\n + ' mod mode_declare mode_identity ModeMatrix moebius mon2schur mono monomial_dimensions'\n + ' multibernstein_poly multi_display_for_texinfo multi_elem multinomial multinomial_coeff'\n + ' multi_orbit multiplot_mode multi_pui multsym multthru mycielski_graph nary'\n + ' natural_unit nc_degree ncexpt ncharpoly negative_picture neighbors new newcontext'\n + ' newdet new_graph newline newton new_variable next_prime nicedummies niceindices'\n + ' ninth nofix nonarray noncentral_moment nonmetricity nonnegintegerp nonscalarp'\n + ' nonzeroandfreeof notequal nounify nptetrad npv nroots nterms ntermst'\n + ' nthroot nullity nullspace num numbered_boundaries numberp number_to_octets'\n + ' num_distinct_partitions numerval numfactor num_partitions nusum nzeta nzetai'\n + ' nzetar octets_to_number octets_to_oid odd_girth oddp ode2 ode_check odelin'\n + ' oid_to_octets op opena opena_binary openr openr_binary openw openw_binary'\n + ' operatorp opsubst optimize %or orbit orbits ordergreat ordergreatp orderless'\n + ' orderlessp orthogonal_complement orthopoly_recur orthopoly_weight outermap'\n + ' out_neighbors outofpois pade parabolic_cylinder_d parametric parametric_surface'\n + ' parg parGosper parse_string parse_timedate part part2cont partfrac partition'\n + ' partition_set partpol path_digraph path_graph pathname_directory pathname_name'\n + ' pathname_type pdf_bernoulli pdf_beta pdf_binomial pdf_cauchy pdf_chi2 pdf_continuous_uniform'\n + ' pdf_discrete_uniform pdf_exp pdf_f pdf_gamma pdf_general_finite_discrete'\n + ' pdf_geometric pdf_gumbel pdf_hypergeometric pdf_laplace pdf_logistic pdf_lognormal'\n + ' pdf_negative_binomial pdf_noncentral_chi2 pdf_noncentral_student_t pdf_normal'\n + ' pdf_pareto pdf_poisson pdf_rank_sum pdf_rayleigh pdf_signed_rank pdf_student_t'\n + ' pdf_weibull pearson_skewness permanent permut permutation permutations petersen_graph'\n + ' petrov pickapart picture_equalp picturep piechart piechart_description planar_embedding'\n + ' playback plog plot2d plot3d plotdf ploteq plsquares pochhammer points poisdiff'\n + ' poisexpt poisint poismap poisplus poissimp poissubst poistimes poistrim polar'\n + ' polarform polartorect polar_to_xy poly_add poly_buchberger poly_buchberger_criterion'\n + ' poly_colon_ideal poly_content polydecomp poly_depends_p poly_elimination_ideal'\n + ' poly_exact_divide poly_expand poly_expt poly_gcd polygon poly_grobner poly_grobner_equal'\n + ' poly_grobner_member poly_grobner_subsetp poly_ideal_intersection poly_ideal_polysaturation'\n + ' poly_ideal_polysaturation1 poly_ideal_saturation poly_ideal_saturation1 poly_lcm'\n + ' poly_minimization polymod poly_multiply polynome2ele polynomialp poly_normal_form'\n + ' poly_normalize poly_normalize_list poly_polysaturation_extension poly_primitive_part'\n + ' poly_pseudo_divide poly_reduced_grobner poly_reduction poly_saturation_extension'\n + ' poly_s_polynomial poly_subtract polytocompanion pop postfix potential power_mod'\n + ' powerseries powerset prefix prev_prime primep primes principal_components'\n + ' print printf printfile print_graph printpois printprops prodrac product properties'\n + ' propvars psi psubst ptriangularize pui pui2comp pui2ele pui2polynome pui_direct'\n + ' puireduc push put pv qput qrange qty quad_control quad_qag quad_qagi quad_qagp'\n + ' quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quadrilateral quantile'\n + ' quantile_bernoulli quantile_beta quantile_binomial quantile_cauchy quantile_chi2'\n + ' quantile_continuous_uniform quantile_discrete_uniform quantile_exp quantile_f'\n + ' quantile_gamma quantile_general_finite_discrete quantile_geometric quantile_gumbel'\n + ' quantile_hypergeometric quantile_laplace quantile_logistic quantile_lognormal'\n + ' quantile_negative_binomial quantile_noncentral_chi2 quantile_noncentral_student_t'\n + ' quantile_normal quantile_pareto quantile_poisson quantile_rayleigh quantile_student_t'\n + ' quantile_weibull quartile_skewness quit qunit quotient racah_v racah_w radcan'\n + ' radius random random_bernoulli random_beta random_binomial random_bipartite_graph'\n + ' random_cauchy random_chi2 random_continuous_uniform random_digraph random_discrete_uniform'\n + ' random_exp random_f random_gamma random_general_finite_discrete random_geometric'\n + ' random_graph random_graph1 random_gumbel random_hypergeometric random_laplace'\n + ' random_logistic random_lognormal random_negative_binomial random_network'\n + ' random_noncentral_chi2 random_noncentral_student_t random_normal random_pareto'\n + ' random_permutation random_poisson random_rayleigh random_regular_graph random_student_t'\n + ' random_tournament random_tree random_weibull range rank rat ratcoef ratdenom'\n + ' ratdiff ratdisrep ratexpand ratinterpol rational rationalize ratnumer ratnump'\n + ' ratp ratsimp ratsubst ratvars ratweight read read_array read_binary_array'\n + ' read_binary_list read_binary_matrix readbyte readchar read_hashed_array readline'\n + ' read_list read_matrix read_nested_list readonly read_xpm real_imagpart_to_conjugate'\n + ' realpart realroots rearray rectangle rectform rectform_log_if_constant recttopolar'\n + ' rediff reduce_consts reduce_order region region_boundaries region_boundaries_plus'\n + ' rem remainder remarray rembox remcomps remcon remcoord remfun remfunction'\n + ' remlet remove remove_constvalue remove_dimensions remove_edge remove_fundamental_dimensions'\n + ' remove_fundamental_units remove_plot_option remove_vertex rempart remrule'\n + ' remsym remvalue rename rename_file reset reset_displays residue resolvante'\n + ' resolvante_alternee1 resolvante_bipartite resolvante_diedrale resolvante_klein'\n + ' resolvante_klein3 resolvante_produit_sym resolvante_unitaire resolvante_vierer'\n + ' rest resultant return reveal reverse revert revert2 rgb2level rhs ricci riemann'\n + ' rinvariant risch rk rmdir rncombine romberg room rootscontract round row'\n + ' rowop rowswap rreduce run_testsuite %s save saving scalarp scaled_bessel_i'\n + ' scaled_bessel_i0 scaled_bessel_i1 scalefactors scanmap scatterplot scatterplot_description'\n + ' scene schur2comp sconcat scopy scsimp scurvature sdowncase sec sech second'\n + ' sequal sequalignore set_alt_display setdifference set_draw_defaults set_edge_weight'\n + ' setelmx setequalp setify setp set_partitions set_plot_option set_prompt set_random_state'\n + ' set_tex_environment set_tex_environment_default setunits setup_autoload set_up_dot_simplifications'\n + ' set_vertex_label seventh sexplode sf sha1sum sha256sum shortest_path shortest_weighted_path'\n + ' show showcomps showratvars sierpinskiale sierpinskimap sign signum similaritytransform'\n + ' simp_inequality simplify_sum simplode simpmetderiv simtran sin sinh sinsert'\n + ' sinvertcase sixth skewness skewness_bernoulli skewness_beta skewness_binomial'\n + ' skewness_chi2 skewness_continuous_uniform skewness_discrete_uniform skewness_exp'\n + ' skewness_f skewness_gamma skewness_general_finite_discrete skewness_geometric'\n + ' skewness_gumbel skewness_hypergeometric skewness_laplace skewness_logistic'\n + ' skewness_lognormal skewness_negative_binomial skewness_noncentral_chi2 skewness_noncentral_student_t'\n + ' skewness_normal skewness_pareto skewness_poisson skewness_rayleigh skewness_student_t'\n + ' skewness_weibull slength smake small_rhombicosidodecahedron_graph small_rhombicuboctahedron_graph'\n + ' smax smin smismatch snowmap snub_cube_graph snub_dodecahedron_graph solve'\n + ' solve_rec solve_rec_rat some somrac sort sparse6_decode sparse6_encode sparse6_export'\n + ' sparse6_import specint spherical spherical_bessel_j spherical_bessel_y spherical_hankel1'\n + ' spherical_hankel2 spherical_harmonic spherical_to_xyz splice split sposition'\n + ' sprint sqfr sqrt sqrtdenest sremove sremovefirst sreverse ssearch ssort sstatus'\n + ' ssubst ssubstfirst staircase standardize standardize_inverse_trig starplot'\n + ' starplot_description status std std1 std_bernoulli std_beta std_binomial'\n + ' std_chi2 std_continuous_uniform std_discrete_uniform std_exp std_f std_gamma'\n + ' std_general_finite_discrete std_geometric std_gumbel std_hypergeometric std_laplace'\n + ' std_logistic std_lognormal std_negative_binomial std_noncentral_chi2 std_noncentral_student_t'\n + ' std_normal std_pareto std_poisson std_rayleigh std_student_t std_weibull'\n + ' stemplot stirling stirling1 stirling2 strim striml strimr string stringout'\n + ' stringp strong_components struve_h struve_l sublis sublist sublist_indices'\n + ' submatrix subsample subset subsetp subst substinpart subst_parallel substpart'\n + ' substring subvar subvarp sum sumcontract summand_to_rec supcase supcontext'\n + ' symbolp symmdifference symmetricp system take_channel take_inference tan'\n + ' tanh taylor taylorinfo taylorp taylor_simplifier taytorat tcl_output tcontract'\n + ' tellrat tellsimp tellsimpafter tentex tenth test_mean test_means_difference'\n + ' test_normality test_proportion test_proportions_difference test_rank_sum'\n + ' test_sign test_signed_rank test_variance test_variance_ratio tex tex1 tex_display'\n + ' texput %th third throw time timedate timer timer_info tldefint tlimit todd_coxeter'\n + ' toeplitz tokens to_lisp topological_sort to_poly to_poly_solve totaldisrep'\n + ' totalfourier totient tpartpol trace tracematrix trace_options transform_sample'\n + ' translate translate_file transpose treefale tree_reduce treillis treinat'\n + ' triangle triangularize trigexpand trigrat trigreduce trigsimp trunc truncate'\n + ' truncated_cube_graph truncated_dodecahedron_graph truncated_icosahedron_graph'\n + ' truncated_tetrahedron_graph tr_warnings_get tube tutte_graph ueivects uforget'\n + ' ultraspherical underlying_graph undiff union unique uniteigenvectors unitp'\n + ' units unit_step unitvector unorder unsum untellrat untimer'\n + ' untrace uppercasep uricci uriemann uvect vandermonde_matrix var var1 var_bernoulli'\n + ' var_beta var_binomial var_chi2 var_continuous_uniform var_discrete_uniform'\n + ' var_exp var_f var_gamma var_general_finite_discrete var_geometric var_gumbel'\n + ' var_hypergeometric var_laplace var_logistic var_lognormal var_negative_binomial'\n + ' var_noncentral_chi2 var_noncentral_student_t var_normal var_pareto var_poisson'\n + ' var_rayleigh var_student_t var_weibull vector vectorpotential vectorsimp'\n + ' verbify vers vertex_coloring vertex_connectivity vertex_degree vertex_distance'\n + ' vertex_eccentricity vertex_in_degree vertex_out_degree vertices vertices_to_cycle'\n + ' vertices_to_path %w weyl wheel_graph wiener_index wigner_3j wigner_6j'\n + ' wigner_9j with_stdout write_binary_data writebyte write_data writefile wronskian'\n + ' xreduce xthru %y Zeilberger zeroequiv zerofor zeromatrix zeromatrixp zeta'\n + ' zgeev zheev zlange zn_add_table zn_carmichael_lambda zn_characteristic_factors'\n + ' zn_determinant zn_factor_generators zn_invert_by_lu zn_log zn_mult_table'\n + ' absboxchar activecontexts adapt_depth additive adim aform algebraic'\n + ' algepsilon algexact aliases allbut all_dotsimp_denoms allocation allsym alphabetic'\n + ' animation antisymmetric arrays askexp assume_pos assume_pos_pred assumescalar'\n + ' asymbol atomgrad atrig1 axes axis_3d axis_bottom axis_left axis_right axis_top'\n + ' azimuth background background_color backsubst berlefact bernstein_explicit'\n + ' besselexpand beta_args_sum_to_integer beta_expand bftorat bftrunc bindtest'\n + ' border boundaries_array box boxchar breakup %c capping cauchysum cbrange'\n + ' cbtics center cflength cframe_flag cnonmet_flag color color_bar color_bar_tics'\n + ' colorbox columns commutative complex cone context contexts contour contour_levels'\n + ' cosnpiflag ctaypov ctaypt ctayswitch ctayvar ct_coords ctorsion_flag ctrgsimp'\n + ' cube current_let_rule_package cylinder data_file_name debugmode decreasing'\n + ' default_let_rule_package delay dependencies derivabbrev derivsubst detout'\n + ' diagmetric diff dim dimensions dispflag display2d|10 display_format_internal'\n + ' distribute_over doallmxops domain domxexpt domxmxops domxnctimes dontfactor'\n + ' doscmxops doscmxplus dot0nscsimp dot0simp dot1simp dotassoc dotconstrules'\n + ' dotdistrib dotexptsimp dotident dotscrules draw_graph_program draw_realpart'\n + ' edge_color edge_coloring edge_partition edge_type edge_width %edispflag'\n + ' elevation %emode endphi endtheta engineering_format_floats enhanced3d %enumer'\n + ' epsilon_lp erfflag erf_representation errormsg error_size error_syms error_type'\n + ' %e_to_numlog eval even evenfun evflag evfun ev_point expandwrt_denom expintexpand'\n + ' expintrep expon expop exptdispflag exptisolate exptsubst facexpand facsum_combine'\n + ' factlim factorflag factorial_expand factors_only fb feature features'\n + ' file_name file_output_append file_search_demo file_search_lisp file_search_maxima|10'\n + ' file_search_tests file_search_usage file_type_lisp file_type_maxima|10 fill_color'\n + ' fill_density filled_func fixed_vertices flipflag float2bf font font_size'\n + ' fortindent fortspaces fpprec fpprintprec functions gamma_expand gammalim'\n + ' gdet genindex gensumnum GGFCFMAX GGFINFINITY globalsolve gnuplot_command'\n + ' gnuplot_curve_styles gnuplot_curve_titles gnuplot_default_term_command gnuplot_dumb_term_command'\n + ' gnuplot_file_args gnuplot_file_name gnuplot_out_file gnuplot_pdf_term_command'\n + ' gnuplot_pm3d gnuplot_png_term_command gnuplot_postamble gnuplot_preamble'\n + ' gnuplot_ps_term_command gnuplot_svg_term_command gnuplot_term gnuplot_view_args'\n + ' Gosper_in_Zeilberger gradefs grid grid2d grind halfangles head_angle head_both'\n + ' head_length head_type height hypergeometric_representation %iargs ibase'\n + ' icc1 icc2 icounter idummyx ieqnprint ifb ifc1 ifc2 ifg ifgi ifr iframe_bracket_form'\n + ' ifri igeowedge_flag ikt1 ikt2 imaginary inchar increasing infeval'\n + ' infinity inflag infolists inm inmc1 inmc2 intanalysis integer integervalued'\n + ' integrate_use_rootsof integration_constant integration_constant_counter interpolate_color'\n + ' intfaclim ip_grid ip_grid_in irrational isolate_wrt_times iterations itr'\n + ' julia_parameter %k1 %k2 keepfloat key key_pos kinvariant kt label label_alignment'\n + ' label_orientation labels lassociative lbfgs_ncorrections lbfgs_nfeval_max'\n + ' leftjust legend letrat let_rule_packages lfg lg lhospitallim limsubst linear'\n + ' linear_solver linechar linel|10 linenum line_type linewidth line_width linsolve_params'\n + ' linsolvewarn lispdisp listarith listconstvars listdummyvars lmxchar load_pathname'\n + ' loadprint logabs logarc logcb logconcoeffp logexpand lognegint logsimp logx'\n + ' logx_secondary logy logy_secondary logz lriem m1pbranch macroexpansion macros'\n + ' mainvar manual_demo maperror mapprint matrix_element_add matrix_element_mult'\n + ' matrix_element_transpose maxapplydepth maxapplyheight maxima_tempdir|10 maxima_userdir|10'\n + ' maxnegex MAX_ORD maxposex maxpsifracdenom maxpsifracnum maxpsinegint maxpsiposint'\n + ' maxtayorder mesh_lines_color method mod_big_prime mode_check_errorp'\n + ' mode_checkp mode_check_warnp mod_test mod_threshold modular_linear_solver'\n + ' modulus multiplicative multiplicities myoptions nary negdistrib negsumdispflag'\n + ' newline newtonepsilon newtonmaxiter nextlayerfactor niceindicespref nm nmc'\n + ' noeval nolabels nonegative_lp noninteger nonscalar noun noundisp nouns np'\n + ' npi nticks ntrig numer numer_pbranch obase odd oddfun opacity opproperties'\n + ' opsubst optimprefix optionset orientation origin orthopoly_returns_intervals'\n + ' outative outchar packagefile palette partswitch pdf_file pfeformat phiresolution'\n + ' %piargs piece pivot_count_sx pivot_max_sx plot_format plot_options plot_realpart'\n + ' png_file pochhammer_max_index points pointsize point_size points_joined point_type'\n + ' poislim poisson poly_coefficient_ring poly_elimination_order polyfactor poly_grobner_algorithm'\n + ' poly_grobner_debug poly_monomial_order poly_primary_elimination_order poly_return_term_list'\n + ' poly_secondary_elimination_order poly_top_reduction_only posfun position'\n + ' powerdisp pred prederror primep_number_of_tests product_use_gamma program'\n + ' programmode promote_float_to_bigfloat prompt proportional_axes props psexpand'\n + ' ps_file radexpand radius radsubstflag rassociative ratalgdenom ratchristof'\n + ' ratdenomdivide rateinstein ratepsilon ratfac rational ratmx ratprint ratriemann'\n + ' ratsimpexpons ratvarswitch ratweights ratweyl ratwtlvl real realonly redraw'\n + ' refcheck resolution restart resultant ric riem rmxchar %rnum_list rombergabs'\n + ' rombergit rombergmin rombergtol rootsconmode rootsepsilon run_viewer same_xy'\n + ' same_xyz savedef savefactors scalar scalarmatrixp scale scale_lp setcheck'\n + ' setcheckbreak setval show_edge_color show_edges show_edge_type show_edge_width'\n + ' show_id show_label showtime show_vertex_color show_vertex_size show_vertex_type'\n + ' show_vertices show_weight simp simplified_output simplify_products simpproduct'\n + ' simpsum sinnpiflag solvedecomposes solveexplicit solvefactors solvenullwarn'\n + ' solveradcan solvetrigwarn space sparse sphere spring_embedding_depth sqrtdispflag'\n + ' stardisp startphi starttheta stats_numer stringdisp structures style sublis_apply_lambda'\n + ' subnumsimp sumexpand sumsplitfact surface surface_hide svg_file symmetric'\n + ' tab taylordepth taylor_logexpand taylor_order_coefficients taylor_truncate_polynomials'\n + ' tensorkill terminal testsuite_files thetaresolution timer_devalue title tlimswitch'\n + ' tr track transcompile transform transform_xy translate_fast_arrays transparent'\n + ' transrun tr_array_as_ref tr_bound_function_applyp tr_file_tty_messagesp tr_float_can_branch_complex'\n + ' tr_function_call_default trigexpandplus trigexpandtimes triginverses trigsign'\n + ' trivial_solutions tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars'\n + ' tr_warn_bad_function_calls tr_warn_fexpr tr_warn_meval tr_warn_mode'\n + ' tr_warn_undeclared tr_warn_undefined_variable tstep ttyoff tube_extremes'\n + ' ufg ug %unitexpand unit_vectors uric uriem use_fast_arrays user_preamble'\n + ' usersetunits values vect_cross verbose vertex_color vertex_coloring vertex_partition'\n + ' vertex_size vertex_type view warnings weyl width windowname windowtitle wired_surface'\n + ' wireframe xaxis xaxis_color xaxis_secondary xaxis_type xaxis_width xlabel'\n + ' xlabel_secondary xlength xrange xrange_secondary xtics xtics_axis xtics_rotate'\n + ' xtics_rotate_secondary xtics_secondary xtics_secondary_axis xu_grid x_voxel'\n + ' xy_file xyplane xy_scale yaxis yaxis_color yaxis_secondary yaxis_type yaxis_width'\n + ' ylabel ylabel_secondary ylength yrange yrange_secondary ytics ytics_axis'\n + ' ytics_rotate ytics_rotate_secondary ytics_secondary ytics_secondary_axis'\n + ' yv_grid y_voxel yx_ratio zaxis zaxis_color zaxis_type zaxis_width zeroa zerob'\n + ' zerobern zeta%pi zlabel zlabel_rotate zlength zmin zn_primroot_limit zn_primroot_pretest';\n var SYMBOLS = '_ __ %|0 %%|0';\n\n return {\n lexemes: '[A-Za-z_%][0-9A-Za-z_%]*',\n keywords: {\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILTIN_FUNCTIONS,\n symbol: SYMBOLS,\n },\n contains: [\n {\n className: 'comment',\n begin: '/\\\\*',\n end: '\\\\*/',\n contains: ['self']\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'number',\n relevance: 0,\n variants: [\n {\n // float number w/ exponent\n // hmm, I wonder if we ought to include other exponent markers?\n begin: '\\\\b(\\\\d+|\\\\d+\\\\.|\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)[Ee][-+]?\\\\d+\\\\b',\n },\n {\n // bigfloat number\n begin: '\\\\b(\\\\d+|\\\\d+\\\\.|\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)[Bb][-+]?\\\\d+\\\\b',\n relevance: 10\n },\n {\n // float number w/out exponent\n // Doesn't seem to recognize floats which start with '.'\n begin: '\\\\b(\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)\\\\b',\n },\n {\n // integer in base up to 36\n // Doesn't seem to recognize integers which end with '.'\n begin: '\\\\b(\\\\d+|0[0-9A-Za-z]+)\\\\.?\\\\b',\n }\n ]\n }\n ],\n illegal: /@/\n }\n};","module.exports = function(hljs) {\n return {\n keywords:\n 'int float string vector matrix if else switch case default while do for in break ' +\n 'continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic ' +\n 'addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey ' +\n 'affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve ' +\n 'alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor ' +\n 'animDisplay animView annotate appendStringArray applicationName applyAttrPreset ' +\n 'applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx ' +\n 'artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu ' +\n 'artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand ' +\n 'assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface ' +\n 'attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu ' +\n 'attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp ' +\n 'attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery ' +\n 'autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults ' +\n 'bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership ' +\n 'bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType ' +\n 'boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu ' +\n 'buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge ' +\n 'cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch ' +\n 'catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox ' +\n 'character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp ' +\n 'checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip ' +\n 'clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore ' +\n 'closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter ' +\n 'cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color ' +\n 'colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp ' +\n 'colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem ' +\n 'componentEditor compositingInterop computePolysetVolume condition cone confirmDialog ' +\n 'connectAttr connectControl connectDynamic connectJoint connectionInfo constrain ' +\n 'constrainValue constructionHistory container containsMultibyte contextInfo control ' +\n 'convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation ' +\n 'convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache ' +\n 'cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel ' +\n 'cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver ' +\n 'cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor ' +\n 'createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer ' +\n 'createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse ' +\n 'currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx ' +\n 'curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface ' +\n 'curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox ' +\n 'defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete ' +\n 'deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes ' +\n 'delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo ' +\n 'dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable ' +\n 'disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected ' +\n 'displayColor displayCull displayLevelOfDetail displayPref displayRGBColor ' +\n 'displaySmoothness displayStats displayString displaySurface distanceDimContext ' +\n 'distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct ' +\n 'doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator ' +\n 'duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression ' +\n 'dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor ' +\n 'dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers ' +\n 'editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor ' +\n 'editorTemplate effector emit emitter enableDevice encodeString endString endsWith env ' +\n 'equivalent equivalentTol erf error eval evalDeferred evalEcho event ' +\n 'exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp ' +\n 'expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof ' +\n 'fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo ' +\n 'filetest filletCurve filter filterCurve filterExpand filterStudioImport ' +\n 'findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster ' +\n 'finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar ' +\n 'floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo ' +\n 'fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint ' +\n 'frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss ' +\n 'geometryConstraint getApplicationVersionAsFloat getAttr getClassification ' +\n 'getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes ' +\n 'getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender ' +\n 'glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl ' +\n 'gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid ' +\n 'gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap ' +\n 'HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor ' +\n 'HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached ' +\n 'HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel ' +\n 'headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey ' +\n 'hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender ' +\n 'hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox ' +\n 'iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ' +\n 'ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ' +\n 'ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform ' +\n 'insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance ' +\n 'instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp ' +\n 'interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf ' +\n 'isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect ' +\n 'itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx ' +\n 'jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner ' +\n 'keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx ' +\n 'keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx ' +\n 'keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx ' +\n 'keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor ' +\n 'layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList ' +\n 'lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep ' +\n 'listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory ' +\n 'listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation ' +\n 'listNodeTypes listPanelCategories listRelatives listSets listTransforms ' +\n 'listUnselected listerEditor loadFluid loadNewShelf loadPlugin ' +\n 'loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log ' +\n 'longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive ' +\n 'makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext ' +\n 'manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx ' +\n 'manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout ' +\n 'menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp ' +\n 'mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move ' +\n 'moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute ' +\n 'nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast ' +\n 'nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint ' +\n 'normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect ' +\n 'nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref ' +\n 'nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType ' +\n 'objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface ' +\n 'offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit ' +\n 'orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier ' +\n 'paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration ' +\n 'panelHistory paramDimContext paramDimension paramLocator parent parentConstraint ' +\n 'particle particleExists particleInstancer particleRenderInfo partition pasteKey ' +\n 'pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture ' +\n 'pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo ' +\n 'pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult ' +\n 'pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend ' +\n 'polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal ' +\n 'polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge ' +\n 'polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge ' +\n 'polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet ' +\n 'polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet ' +\n 'polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection ' +\n 'polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge ' +\n 'polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet ' +\n 'polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix ' +\n 'polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut ' +\n 'polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet ' +\n 'polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge ' +\n 'polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex ' +\n 'polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection ' +\n 'polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection ' +\n 'polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint ' +\n 'polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate ' +\n 'polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge ' +\n 'polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing ' +\n 'polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet ' +\n 'polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace ' +\n 'popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer ' +\n 'projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx ' +\n 'propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd ' +\n 'python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection ' +\n 'radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl ' +\n 'readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference ' +\n 'referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE ' +\n 'registerPluginResource rehash reloadImage removeJoint removeMultiInstance ' +\n 'removePanelCategory rename renameAttr renameSelectionList renameUI render ' +\n 'renderGlobalsNode renderInfo renderLayerButton renderLayerParent ' +\n 'renderLayerPostProcess renderLayerUnparent renderManip renderPartition ' +\n 'renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor ' +\n 'renderWindowSelectContext renderer reorder reorderDeformers requires reroot ' +\n 'resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget ' +\n 'reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx ' +\n 'rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout ' +\n 'runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage ' +\n 'saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale ' +\n 'scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor ' +\n 'sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable ' +\n 'scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt ' +\n 'searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey ' +\n 'selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType ' +\n 'selectedNodes selectionConnection separator setAttr setAttrEnumResource ' +\n 'setAttrMapping setAttrNiceNameResource setConstraintRestPosition ' +\n 'setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr ' +\n 'setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe ' +\n 'setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag ' +\n 'setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject ' +\n 'setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets ' +\n 'shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare ' +\n 'shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField ' +\n 'shortNameOf showHelp showHidden showManipCtx showSelectionInTitle ' +\n 'showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface ' +\n 'size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep ' +\n 'snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound ' +\n 'soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort ' +\n 'spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString ' +\n 'startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp ' +\n 'stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex ' +\n 'stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex ' +\n 'stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString ' +\n 'stringToStringArray strip stripPrefixFromName stroke subdAutoProjection ' +\n 'subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV ' +\n 'subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror ' +\n 'subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease ' +\n 'subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring ' +\n 'surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton ' +\n 'symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext ' +\n 'texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext ' +\n 'texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text ' +\n 'textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList ' +\n 'textToShelf textureDisplacePlane textureHairColor texturePlacementContext ' +\n 'textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath ' +\n 'toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower ' +\n 'toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper ' +\n 'trace track trackCtx transferAttributes transformCompare transformLimits translator ' +\n 'trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence ' +\n 'twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit ' +\n 'unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink ' +\n 'uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane ' +\n 'viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex ' +\n 'waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire ' +\n 'wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform',\n illegal: '</',\n contains: [\n hljs.C_NUMBER_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '`', end: '`',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n { // eats variables\n begin: '[\\\\$\\\\%\\\\@](\\\\^\\\\w\\\\b|#\\\\w+|[^\\\\s\\\\w{]|{\\\\w+}|\\\\w+)'\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'module use_module import_module include_module end_module initialise ' +\n 'mutable initialize finalize finalise interface implementation pred ' +\n 'mode func type inst solver any_pred any_func is semidet det nondet ' +\n 'multi erroneous failure cc_nondet cc_multi typeclass instance where ' +\n 'pragma promise external trace atomic or_else require_complete_switch ' +\n 'require_det require_semidet require_multi require_nondet ' +\n 'require_cc_multi require_cc_nondet require_erroneous require_failure',\n meta:\n // pragma\n 'inline no_inline type_spec source_file fact_table obsolete memo ' +\n 'loop_check minimal_model terminates does_not_terminate ' +\n 'check_termination promise_equivalent_clauses ' +\n // preprocessor\n 'foreign_proc foreign_decl foreign_code foreign_type ' +\n 'foreign_import_module foreign_export_enum foreign_export ' +\n 'foreign_enum may_call_mercury will_not_call_mercury thread_safe ' +\n 'not_thread_safe maybe_thread_safe promise_pure promise_semipure ' +\n 'tabled_for_io local untrailed trailed attach_to_io_state ' +\n 'can_pass_as_mercury_type stable will_not_throw_exception ' +\n 'may_modify_trail will_not_modify_trail may_duplicate ' +\n 'may_not_duplicate affects_liveness does_not_affect_liveness ' +\n 'doesnt_affect_liveness no_sharing unknown_sharing sharing',\n built_in:\n 'some all not if then else true fail false try catch catch_any ' +\n 'semidet_true semidet_false semidet_fail impure_true impure semipure'\n };\n\n var COMMENT = hljs.COMMENT('%', '$');\n\n var NUMCODE = {\n className: 'number',\n begin: \"0'.\\\\|0[box][0-9a-fA-F]*\"\n };\n\n var ATOM = hljs.inherit(hljs.APOS_STRING_MODE, {relevance: 0});\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {relevance: 0});\n var STRING_FMT = {\n className: 'subst',\n begin: '\\\\\\\\[abfnrtv]\\\\|\\\\\\\\x[0-9a-fA-F]*\\\\\\\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]',\n relevance: 0\n };\n STRING.contains.push(STRING_FMT);\n\n var IMPLICATION = {\n className: 'built_in',\n variants: [\n {begin: '<=>'},\n {begin: '<=', relevance: 0},\n {begin: '=>', relevance: 0},\n {begin: '/\\\\\\\\'},\n {begin: '\\\\\\\\/'}\n ]\n };\n\n var HEAD_BODY_CONJUNCTION = {\n className: 'built_in',\n variants: [\n {begin: ':-\\\\|-->'},\n {begin: '=', relevance: 0}\n ]\n };\n\n return {\n aliases: ['m', 'moo'],\n keywords: KEYWORDS,\n contains: [\n IMPLICATION,\n HEAD_BODY_CONJUNCTION,\n COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMCODE,\n hljs.NUMBER_MODE,\n ATOM,\n STRING,\n {begin: /:-/} // relevance booster\n ]\n };\n};","module.exports = function(hljs) {\n //local labels: %?[FB]?[AT]?\\d{1,2}\\w+\n return {\n case_insensitive: true,\n aliases: ['mips'],\n lexemes: '\\\\.?' + hljs.IDENT_RE,\n keywords: {\n meta:\n //GNU preprocs\n '.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ',\n built_in:\n '$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 ' + // integer registers\n '$16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 ' + // integer registers\n 'zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 ' + // integer register aliases\n 't0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 ' + // integer register aliases\n 'k0 k1 gp sp fp ra ' + // integer register aliases\n '$f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 ' + // floating-point registers\n '$f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 ' + // floating-point registers\n 'Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi ' + // Coprocessor 0 registers\n 'HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId ' + // Coprocessor 0 registers\n 'EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ' + // Coprocessor 0 registers\n 'ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt ' // Coprocessor 0 registers\n },\n contains: [\n {\n className: 'keyword',\n begin: '\\\\b('+ //mnemonics\n // 32-bit integer instructions\n 'addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|' +\n 'bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(\\.hb)?|jr(\\.hb)?|lbu?|lhu?|' +\n 'll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|' +\n 'multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|' +\n 'srlv?|subu?|sw[lr]?|xori?|wsbh|' +\n // floating-point instructions\n 'abs\\.[sd]|add\\.[sd]|alnv.ps|bc1[ft]l?|' +\n 'c\\.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et])\\.[sd]|' +\n '(ceil|floor|round|trunc)\\.[lw]\\.[sd]|cfc1|cvt\\.d\\.[lsw]|' +\n 'cvt\\.l\\.[dsw]|cvt\\.ps\\.s|cvt\\.s\\.[dlw]|cvt\\.s\\.p[lu]|cvt\\.w\\.[dls]|' +\n 'div\\.[ds]|ldx?c1|luxc1|lwx?c1|madd\\.[sd]|mfc1|mov[fntz]?\\.[ds]|' +\n 'msub\\.[sd]|mth?c1|mul\\.[ds]|neg\\.[ds]|nmadd\\.[ds]|nmsub\\.[ds]|' +\n 'p[lu][lu]\\.ps|recip\\.fmt|r?sqrt\\.[ds]|sdx?c1|sub\\.[ds]|suxc1|' +\n 'swx?c1|' +\n // system control instructions\n 'break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|' +\n 'rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|' +\n 'tlti?u?|tnei?|wait|wrpgpr'+\n ')',\n end: '\\\\s'\n },\n hljs.COMMENT('[;#]', '$'),\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\'',\n end: '[^\\\\\\\\]\\'',\n relevance: 0\n },\n {\n className: 'title',\n begin: '\\\\|', end: '\\\\|',\n illegal: '\\\\n',\n relevance: 0\n },\n {\n className: 'number',\n variants: [\n {begin: '0x[0-9a-f]+'}, //hex\n {begin: '\\\\b-?\\\\d+'} //bare number\n ],\n relevance: 0\n },\n {\n className: 'symbol',\n variants: [\n {begin: '^\\\\s*[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+:'}, //GNU MIPS syntax\n {begin: '^\\\\s*[0-9]+:'}, // numbered local labels\n {begin: '[0-9]+[bf]' } // number local label reference (backwards, forwards)\n ],\n relevance: 0\n }\n ],\n illegal: '\\/'\n };\n};","module.exports = function(hljs) {\n return {\n keywords:\n 'environ vocabularies notations constructors definitions ' +\n 'registrations theorems schemes requirements begin end definition ' +\n 'registration cluster existence pred func defpred deffunc theorem ' +\n 'proof let take assume then thus hence ex for st holds consider ' +\n 'reconsider such that and in provided of as from be being by means ' +\n 'equals implies iff redefine define now not or attr is mode ' +\n 'suppose per cases set thesis contradiction scheme reserve struct ' +\n 'correctness compatibility coherence symmetry assymetry ' +\n 'reflexivity irreflexivity connectedness uniqueness commutativity ' +\n 'idempotence involutiveness projectivity',\n contains: [\n hljs.COMMENT('::', '$')\n ]\n };\n};","module.exports = function(hljs) {\n var PERL_KEYWORDS = 'getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ' +\n 'ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime ' +\n 'readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qq' +\n 'fileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent ' +\n 'shutdown dump chomp connect getsockname die socketpair close flock exists index shmget' +\n 'sub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr ' +\n 'unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 ' +\n 'getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline ' +\n 'endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand ' +\n 'mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink ' +\n 'getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr ' +\n 'untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link ' +\n 'getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller ' +\n 'lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and ' +\n 'sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 ' +\n 'chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach ' +\n 'tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedir' +\n 'ioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe ' +\n 'atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when';\n var SUBST = {\n className: 'subst',\n begin: '[$@]\\\\{', end: '\\\\}',\n keywords: PERL_KEYWORDS\n };\n var METHOD = {\n begin: '->{', end: '}'\n // contains defined later\n };\n var VAR = {\n variants: [\n {begin: /\\$\\d/},\n {begin: /[\\$%@](\\^\\w\\b|#\\w+(::\\w+)*|{\\w+}|\\w+(::\\w*)*)/},\n {begin: /[\\$%@][^\\s\\w{]/, relevance: 0}\n ]\n };\n var STRING_CONTAINS = [hljs.BACKSLASH_ESCAPE, SUBST, VAR];\n var PERL_DEFAULT_CONTAINS = [\n VAR,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT(\n '^\\\\=\\\\w',\n '\\\\=cut',\n {\n endsWithParent: true\n }\n ),\n METHOD,\n {\n className: 'string',\n contains: STRING_CONTAINS,\n variants: [\n {\n begin: 'q[qwxr]?\\\\s*\\\\(', end: '\\\\)',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\[', end: '\\\\]',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\{', end: '\\\\}',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\|', end: '\\\\|',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\<', end: '\\\\>',\n relevance: 5\n },\n {\n begin: 'qw\\\\s+q', end: 'q',\n relevance: 5\n },\n {\n begin: '\\'', end: '\\'',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\"', end: '\"'\n },\n {\n begin: '`', end: '`',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '{\\\\w+}',\n contains: [],\n relevance: 0\n },\n {\n begin: '\\-?\\\\w+\\\\s*\\\\=\\\\>',\n contains: [],\n relevance: 0\n }\n ]\n },\n {\n className: 'number',\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n relevance: 0\n },\n { // regexp container\n begin: '(\\\\/\\\\/|' + hljs.RE_STARTERS_RE + '|\\\\b(split|return|print|reverse|grep)\\\\b)\\\\s*',\n keywords: 'split return print reverse grep',\n relevance: 0,\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: 'regexp',\n begin: '(s|tr|y)/(\\\\\\\\.|[^/])*/(\\\\\\\\.|[^/])*/[a-z]*',\n relevance: 10\n },\n {\n className: 'regexp',\n begin: '(m|qr)?/', end: '/[a-z]*',\n contains: [hljs.BACKSLASH_ESCAPE],\n relevance: 0 // allows empty \"//\" which is a common comment delimiter in other languages\n }\n ]\n },\n {\n className: 'function',\n beginKeywords: 'sub', end: '(\\\\s*\\\\(.*?\\\\))?[;{]', excludeEnd: true,\n relevance: 5,\n contains: [hljs.TITLE_MODE]\n },\n {\n begin: '-\\\\w\\\\b',\n relevance: 0\n },\n {\n begin: \"^__DATA__$\",\n end: \"^__END__$\",\n subLanguage: 'mojolicious',\n contains: [\n {\n begin: \"^@@.*\",\n end: \"$\",\n className: \"comment\"\n }\n ]\n }\n ];\n SUBST.contains = PERL_DEFAULT_CONTAINS;\n METHOD.contains = PERL_DEFAULT_CONTAINS;\n\n return {\n aliases: ['pl', 'pm'],\n lexemes: /[\\w\\.]+/,\n keywords: PERL_KEYWORDS,\n contains: PERL_DEFAULT_CONTAINS\n };\n};","module.exports = function(hljs) {\n return {\n subLanguage: 'xml',\n contains: [\n {\n className: 'meta',\n begin: '^__(END|DATA)__$'\n },\n // mojolicious line\n {\n begin: \"^\\\\s*%{1,2}={0,2}\", end: '$',\n subLanguage: 'perl'\n },\n // mojolicious block\n {\n begin: \"<%{1,2}={0,2}\",\n end: \"={0,1}%>\",\n subLanguage: 'perl',\n excludeBegin: true,\n excludeEnd: true\n }\n ]\n };\n};","module.exports = function(hljs) {\n var NUMBER = {\n className: 'number', relevance: 0,\n variants: [\n {\n begin: '[$][a-fA-F0-9]+'\n },\n hljs.NUMBER_MODE\n ]\n };\n\n return {\n case_insensitive: true,\n keywords: {\n keyword: 'public private property continue exit extern new try catch ' +\n 'eachin not abstract final select case default const local global field ' +\n 'end if then else elseif endif while wend repeat until forever for ' +\n 'to step next return module inline throw import',\n\n built_in: 'DebugLog DebugStop Error Print ACos ACosr ASin ASinr ATan ATan2 ATan2r ATanr Abs Abs Ceil ' +\n 'Clamp Clamp Cos Cosr Exp Floor Log Max Max Min Min Pow Sgn Sgn Sin Sinr Sqrt Tan Tanr Seed PI HALFPI TWOPI',\n\n literal: 'true false null and or shl shr mod'\n },\n illegal: /\\/\\*/,\n contains: [\n hljs.COMMENT('#rem', '#end'),\n hljs.COMMENT(\n \"'\",\n '$',\n {\n relevance: 0\n }\n ),\n {\n className: 'function',\n beginKeywords: 'function method', end: '[(=:]|$',\n illegal: /\\n/,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface', end: '$',\n contains: [\n {\n beginKeywords: 'extends implements'\n },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n className: 'built_in',\n begin: '\\\\b(self|super)\\\\b'\n },\n {\n className: 'meta',\n begin: '\\\\s*#', end: '$',\n keywords: {'meta-keyword': 'if else elseif endif end then'}\n },\n {\n className: 'meta',\n begin: '^\\\\s*strict\\\\b'\n },\n {\n beginKeywords: 'alias', end: '=',\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n hljs.QUOTE_STRING_MODE,\n NUMBER\n ]\n }\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n // Moonscript keywords\n 'if then not for in while do return else elseif break continue switch and or ' +\n 'unless when class extends super local import export from using',\n literal:\n 'true false nil',\n built_in:\n '_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load ' +\n 'loadfile loadstring module next pairs pcall print rawequal rawget rawset require ' +\n 'select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug ' +\n 'io math os package string table'\n };\n var JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\n var SUBST = {\n className: 'subst',\n begin: /#\\{/, end: /}/,\n keywords: KEYWORDS\n };\n var EXPRESSIONS = [\n hljs.inherit(hljs.C_NUMBER_MODE,\n {starts: {end: '(\\\\s*/)?', relevance: 0}}), // a number tries to eat the following slash to prevent treating it as a regexp\n {\n className: 'string',\n variants: [\n {\n begin: /'/, end: /'/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /\"/, end: /\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n }\n ]\n },\n {\n className: 'built_in',\n begin: '@__' + hljs.IDENT_RE\n },\n {\n begin: '@' + hljs.IDENT_RE // relevance booster on par with CoffeeScript\n },\n {\n begin: hljs.IDENT_RE + '\\\\\\\\' + hljs.IDENT_RE // inst\\method\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: JS_IDENT_RE});\n var PARAMS_RE = '(\\\\(.*\\\\))?\\\\s*\\\\B[-=]>';\n var PARAMS = {\n className: 'params',\n begin: '\\\\([^\\\\(]', returnBegin: true,\n /* We need another contained nameless mode to not have every nested\n pair of parens to be called \"params\" */\n contains: [{\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n contains: ['self'].concat(EXPRESSIONS)\n }]\n };\n\n return {\n aliases: ['moon'],\n keywords: KEYWORDS,\n illegal: /\\/\\*/,\n contains: EXPRESSIONS.concat([\n hljs.COMMENT('--', '$'),\n {\n className: 'function', // function: -> =>\n begin: '^\\\\s*' + JS_IDENT_RE + '\\\\s*=\\\\s*' + PARAMS_RE, end: '[-=]>',\n returnBegin: true,\n contains: [TITLE, PARAMS]\n },\n {\n begin: /[\\(,:=]\\s*/, // anonymous function start\n relevance: 0,\n contains: [\n {\n className: 'function',\n begin: PARAMS_RE, end: '[-=]>',\n returnBegin: true,\n contains: [PARAMS]\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class',\n end: '$',\n illegal: /[:=\"\\[\\]]/,\n contains: [\n {\n beginKeywords: 'extends',\n endsWithParent: true,\n illegal: /[:=\"\\[\\]]/,\n contains: [TITLE]\n },\n TITLE\n ]\n },\n {\n className: 'name', // table\n begin: JS_IDENT_RE + ':', end: ':',\n returnBegin: true, returnEnd: true,\n relevance: 0\n }\n ])\n };\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n contains: [\n {\n beginKeywords:\n 'build create index delete drop explain infer|10 insert merge prepare select update upsert|10',\n end: /;/, endsWithParent: true,\n keywords: {\n // Taken from http://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/reservedwords.html\n keyword:\n 'all alter analyze and any array as asc begin between binary boolean break bucket build by call ' +\n 'case cast cluster collate collection commit connect continue correlate cover create database ' +\n 'dataset datastore declare decrement delete derived desc describe distinct do drop each element ' +\n 'else end every except exclude execute exists explain fetch first flatten for force from ' +\n 'function grant group gsi having if ignore ilike in include increment index infer inline inner ' +\n 'insert intersect into is join key keys keyspace known last left let letting like limit lsm map ' +\n 'mapping matched materialized merge minus namespace nest not number object offset on ' +\n 'option or order outer over parse partition password path pool prepare primary private privilege ' +\n 'procedure public raw realm reduce rename return returning revoke right role rollback satisfies ' +\n 'schema select self semi set show some start statistics string system then to transaction trigger ' +\n 'truncate under union unique unknown unnest unset update upsert use user using validate value ' +\n 'valued values via view when where while with within work xor',\n // Taken from http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/literals.html\n literal:\n 'true false null missing|5',\n // Taken from http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/functions.html\n built_in:\n 'array_agg array_append array_concat array_contains array_count array_distinct array_ifnull array_length ' +\n 'array_max array_min array_position array_prepend array_put array_range array_remove array_repeat array_replace ' +\n 'array_reverse array_sort array_sum avg count max min sum greatest least ifmissing ifmissingornull ifnull ' +\n 'missingif nullif ifinf ifnan ifnanorinf naninf neginfif posinfif clock_millis clock_str date_add_millis ' +\n 'date_add_str date_diff_millis date_diff_str date_part_millis date_part_str date_trunc_millis date_trunc_str ' +\n 'duration_to_str millis str_to_millis millis_to_str millis_to_utc millis_to_zone_name now_millis now_str ' +\n 'str_to_duration str_to_utc str_to_zone_name decode_json encode_json encoded_size poly_length base64 base64_encode ' +\n 'base64_decode meta uuid abs acos asin atan atan2 ceil cos degrees e exp ln log floor pi power radians random ' +\n 'round sign sin sqrt tan trunc object_length object_names object_pairs object_inner_pairs object_values ' +\n 'object_inner_values object_add object_put object_remove object_unwrap regexp_contains regexp_like regexp_position ' +\n 'regexp_replace contains initcap length lower ltrim position repeat replace rtrim split substr title trim upper ' +\n 'isarray isatom isboolean isnumber isobject isstring type toarray toatom toboolean tonumber toobject tostring'\n },\n contains: [\n {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [hljs.BACKSLASH_ESCAPE],\n relevance: 0\n },\n {\n className: 'string',\n begin: '\"', end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE],\n relevance: 0\n },\n {\n className: 'symbol',\n begin: '`', end: '`',\n contains: [hljs.BACKSLASH_ESCAPE],\n relevance: 2\n },\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var VAR = {\n className: 'variable',\n variants: [\n {begin: /\\$\\d+/},\n {begin: /\\$\\{/, end: /}/},\n {begin: '[\\\\$\\\\@]' + hljs.UNDERSCORE_IDENT_RE}\n ]\n };\n var DEFAULT = {\n endsWithParent: true,\n lexemes: '[a-z/_]+',\n keywords: {\n literal:\n 'on off yes no true false none blocked debug info notice warn error crit ' +\n 'select break last permanent redirect kqueue rtsig epoll poll /dev/poll'\n },\n relevance: 0,\n illegal: '=>',\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, VAR],\n variants: [\n {begin: /\"/, end: /\"/},\n {begin: /'/, end: /'/}\n ]\n },\n // this swallows entire URLs to avoid detecting numbers within\n {\n begin: '([a-z]+):/', end: '\\\\s', endsWithParent: true, excludeEnd: true,\n contains: [VAR]\n },\n {\n className: 'regexp',\n contains: [hljs.BACKSLASH_ESCAPE, VAR],\n variants: [\n {begin: \"\\\\s\\\\^\", end: \"\\\\s|{|;\", returnEnd: true},\n // regexp locations (~, ~*)\n {begin: \"~\\\\*?\\\\s+\", end: \"\\\\s|{|;\", returnEnd: true},\n // *.example.com\n {begin: \"\\\\*(\\\\.[a-z\\\\-]+)+\"},\n // sub.example.*\n {begin: \"([a-z\\\\-]+\\\\.)+\\\\*\"}\n ]\n },\n // IP\n {\n className: 'number',\n begin: '\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b'\n },\n // units\n {\n className: 'number',\n begin: '\\\\b\\\\d+[kKmMgGdshdwy]*\\\\b',\n relevance: 0\n },\n VAR\n ]\n };\n\n return {\n aliases: ['nginxconf'],\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s+{', returnBegin: true,\n end: '{',\n contains: [\n {\n className: 'section',\n begin: hljs.UNDERSCORE_IDENT_RE\n }\n ],\n relevance: 0\n },\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s', end: ';|{', returnBegin: true,\n contains: [\n {\n className: 'attribute',\n begin: hljs.UNDERSCORE_IDENT_RE,\n starts: DEFAULT\n }\n ],\n relevance: 0\n }\n ],\n illegal: '[^\\\\s\\\\}]'\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['nim'],\n keywords: {\n keyword:\n 'addr and as asm bind block break case cast const continue converter ' +\n 'discard distinct div do elif else end enum except export finally ' +\n 'for from generic if import in include interface is isnot iterator ' +\n 'let macro method mixin mod nil not notin object of or out proc ptr ' +\n 'raise ref return shl shr static template try tuple type using var ' +\n 'when while with without xor yield',\n literal:\n 'shared guarded stdin stdout stderr result true false',\n built_in:\n 'int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float ' +\n 'float32 float64 bool char string cstring pointer expr stmt void ' +\n 'auto any range array openarray varargs seq set clong culong cchar ' +\n 'cschar cshort cint csize clonglong cfloat cdouble clongdouble ' +\n 'cuchar cushort cuint culonglong cstringarray semistatic'\n },\n contains: [ {\n className: 'meta', // Actually pragma\n begin: /{\\./,\n end: /\\.}/,\n relevance: 10\n }, {\n className: 'string',\n begin: /[a-zA-Z]\\w*\"/,\n end: /\"/,\n contains: [{begin: /\"\"/}]\n }, {\n className: 'string',\n begin: /([a-zA-Z]\\w*)?\"\"\"/,\n end: /\"\"\"/\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'type',\n begin: /\\b[A-Z]\\w+\\b/,\n relevance: 0\n }, {\n className: 'number',\n relevance: 0,\n variants: [\n {begin: /\\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/},\n {begin: /\\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/},\n {begin: /\\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/},\n {begin: /\\b(\\d[_\\d]*)('?[iIuUfF](8|16|32|64))?/}\n ]\n },\n hljs.HASH_COMMENT_MODE\n ]\n }\n};","module.exports = function(hljs) {\n var NIX_KEYWORDS = {\n keyword:\n 'rec with let in inherit assert if else then',\n literal:\n 'true false or and null',\n built_in:\n 'import abort baseNameOf dirOf isNull builtins map removeAttrs throw ' +\n 'toString derivation'\n };\n var ANTIQUOTE = {\n className: 'subst',\n begin: /\\$\\{/,\n end: /}/,\n keywords: NIX_KEYWORDS\n };\n var ATTRS = {\n begin: /[a-zA-Z0-9-_]+(\\s*=)/, returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'attr',\n begin: /\\S+/\n }\n ]\n };\n var STRING = {\n className: 'string',\n contains: [ANTIQUOTE],\n variants: [\n {begin: \"''\", end: \"''\"},\n {begin: '\"', end: '\"'}\n ]\n };\n var EXPRESSIONS = [\n hljs.NUMBER_MODE,\n hljs.HASH_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n ATTRS\n ];\n ANTIQUOTE.contains = EXPRESSIONS;\n return {\n aliases: [\"nixos\"],\n keywords: NIX_KEYWORDS,\n contains: EXPRESSIONS\n };\n};","module.exports = function(hljs) {\n var CONSTANTS = {\n className: 'variable',\n begin: /\\$(ADMINTOOLS|APPDATA|CDBURN_AREA|CMDLINE|COMMONFILES32|COMMONFILES64|COMMONFILES|COOKIES|DESKTOP|DOCUMENTS|EXEDIR|EXEFILE|EXEPATH|FAVORITES|FONTS|HISTORY|HWNDPARENT|INSTDIR|INTERNET_CACHE|LANGUAGE|LOCALAPPDATA|MUSIC|NETHOOD|OUTDIR|PICTURES|PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES32|PROGRAMFILES64|PROGRAMFILES|QUICKLAUNCH|RECENT|RESOURCES_LOCALIZED|RESOURCES|SENDTO|SMPROGRAMS|SMSTARTUP|STARTMENU|SYSDIR|TEMP|TEMPLATES|VIDEOS|WINDIR)/\n };\n\n var DEFINES = {\n // ${defines}\n className: 'variable',\n begin: /\\$+{[\\w\\.:-]+}/\n };\n\n var VARIABLES = {\n // $variables\n className: 'variable',\n begin: /\\$+\\w+/,\n illegal: /\\(\\){}/\n };\n\n var LANGUAGES = {\n // $(language_strings)\n className: 'variable',\n begin: /\\$+\\([\\w\\^\\.:-]+\\)/\n };\n\n var PARAMETERS = {\n // command parameters\n className: 'params',\n begin: '(ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)'\n };\n\n var COMPILER = {\n // !compiler_flags\n className: 'keyword',\n begin: /\\!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|searchparse|searchreplace|system|tempfile|undef|verbose|warning)/\n };\n\n var METACHARS = {\n // $\\n, $\\r, $\\t, $$\n className: 'meta',\n begin: /\\$(\\\\[nrt]|\\$)/\n };\n\n var PLUGINS = {\n // plug::ins\n className: 'class',\n begin: /\\w+\\:\\:\\w+/\n };\n\n var STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"', end: '\"'\n },\n {\n begin: '\\'', end: '\\''\n },\n {\n begin: '`', end: '`'\n }\n ],\n illegal: /\\n/,\n contains: [\n METACHARS,\n CONSTANTS,\n DEFINES,\n VARIABLES,\n LANGUAGES\n ]\n };\n\n return {\n case_insensitive: false,\n keywords: {\n keyword:\n 'Abort AddBrandingImage AddSize AllowRootDirInstall AllowSkipFiles AutoCloseWindow BGFont BGGradient BrandingText BringToFront Call CallInstDLL Caption ChangeUI CheckBitmap ClearErrors CompletedText ComponentText CopyFiles CRCCheck CreateDirectory CreateFont CreateShortCut Delete DeleteINISec DeleteINIStr DeleteRegKey DeleteRegValue DetailPrint DetailsButtonText DirText DirVar DirVerify EnableWindow EnumRegKey EnumRegValue Exch Exec ExecShell ExecShellWait ExecWait ExpandEnvStrings File FileBufSize FileClose FileErrorText FileOpen FileRead FileReadByte FileReadUTF16LE FileReadWord FileSeek FileWrite FileWriteByte FileWriteUTF16LE FileWriteWord FindClose FindFirst FindNext FindWindow FlushINI FunctionEnd GetCurInstType GetCurrentAddress GetDlgItem GetDLLVersion GetDLLVersionLocal GetErrorLevel GetFileTime GetFileTimeLocal GetFullPathName GetFunctionAddress GetInstDirError GetLabelAddress GetTempFileName Goto HideWindow Icon IfAbort IfErrors IfFileExists IfRebootFlag IfSilent InitPluginsDir InstallButtonText InstallColors InstallDir InstallDirRegKey InstProgressFlags InstType InstTypeGetText InstTypeSetText Int64Cmp Int64CmpU Int64Fmt IntCmp IntCmpU IntFmt IntOp IntPtrCmp IntPtrCmpU IntPtrOp IsWindow LangString LicenseBkColor LicenseData LicenseForceSelection LicenseLangString LicenseText LoadLanguageFile LockWindow LogSet LogText ManifestDPIAware ManifestSupportedOS MessageBox MiscButtonText Name Nop OutFile Page PageCallbacks PageExEnd Pop Push Quit ReadEnvStr ReadINIStr ReadRegDWORD ReadRegStr Reboot RegDLL Rename RequestExecutionLevel ReserveFile Return RMDir SearchPath SectionEnd SectionGetFlags SectionGetInstTypes SectionGetSize SectionGetText SectionGroupEnd SectionIn SectionSetFlags SectionSetInstTypes SectionSetSize SectionSetText SendMessage SetAutoClose SetBrandingImage SetCompress SetCompressor SetCompressorDictSize SetCtlColors SetCurInstType SetDatablockOptimize SetDateSave SetDetailsPrint SetDetailsView SetErrorLevel SetErrors SetFileAttributes SetFont SetOutPath SetOverwrite SetRebootFlag SetRegView SetShellVarContext SetSilent ShowInstDetails ShowUninstDetails ShowWindow SilentInstall SilentUnInstall Sleep SpaceTexts StrCmp StrCmpS StrCpy StrLen SubCaption Unicode UninstallButtonText UninstallCaption UninstallIcon UninstallSubCaption UninstallText UninstPage UnRegDLL Var VIAddVersionKey VIFileVersion VIProductVersion WindowIcon WriteINIStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegMultiStr WriteRegNone WriteRegStr WriteUninstaller XPStyle',\n literal:\n 'admin all auto both bottom bzip2 colored components current custom directory false force hide highest ifdiff ifnewer instfiles lastused leave left license listonly lzma nevershow none normal notset off on open print right show silent silentlog smooth textonly top true try un.components un.custom un.directory un.instfiles un.license uninstConfirm user Win10 Win7 Win8 WinVista zlib'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n ),\n {\n className: 'function',\n beginKeywords: 'Function PageEx Section SectionGroup', end: '$'\n },\n STRING,\n COMPILER,\n DEFINES,\n VARIABLES,\n LANGUAGES,\n PARAMETERS,\n PLUGINS,\n hljs.NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var API_CLASS = {\n className: 'built_in',\n begin: '\\\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\\\w+',\n };\n var OBJC_KEYWORDS = {\n keyword:\n 'int float while char export sizeof typedef const struct for union ' +\n 'unsigned long volatile static bool mutable if do return goto void ' +\n 'enum else break extern asm case short default double register explicit ' +\n 'signed typename this switch continue wchar_t inline readonly assign ' +\n 'readwrite self @synchronized id typeof ' +\n 'nonatomic super unichar IBOutlet IBAction strong weak copy ' +\n 'in out inout bycopy byref oneway __strong __weak __block __autoreleasing ' +\n '@private @protected @public @try @property @end @throw @catch @finally ' +\n '@autoreleasepool @synthesize @dynamic @selector @optional @required ' +\n '@encode @package @import @defs @compatibility_alias ' +\n '__bridge __bridge_transfer __bridge_retained __bridge_retain ' +\n '__covariant __contravariant __kindof ' +\n '_Nonnull _Nullable _Null_unspecified ' +\n '__FUNCTION__ __PRETTY_FUNCTION__ __attribute__ ' +\n 'getter setter retain unsafe_unretained ' +\n 'nonnull nullable null_unspecified null_resettable class instancetype ' +\n 'NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER ' +\n 'NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED ' +\n 'NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE ' +\n 'NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END ' +\n 'NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW ' +\n 'NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN',\n literal:\n 'false true FALSE TRUE nil YES NO NULL',\n built_in:\n 'BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once'\n };\n var LEXEMES = /[a-zA-Z@][a-zA-Z0-9_]*/;\n var CLASS_KEYWORDS = '@interface @class @protocol @implementation';\n return {\n aliases: ['mm', 'objc', 'obj-c'],\n keywords: OBJC_KEYWORDS,\n lexemes: LEXEMES,\n illegal: '</',\n contains: [\n API_CLASS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n variants: [\n {\n begin: '@\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\\'', end: '[^\\\\\\\\]\\'',\n illegal: '[^\\\\\\\\][^\\']'\n }\n ]\n },\n {\n className: 'meta',\n begin: '#',\n end: '$',\n contains: [\n {\n className: 'meta-string',\n variants: [\n { begin: '\\\"', end: '\\\"' },\n { begin: '<', end: '>' }\n ]\n }\n ]\n },\n {\n className: 'class',\n begin: '(' + CLASS_KEYWORDS.split(' ').join('|') + ')\\\\b', end: '({|$)', excludeEnd: true,\n keywords: CLASS_KEYWORDS, lexemes: LEXEMES,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n begin: '\\\\.'+hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n /* missing support for heredoc-like string (OCaml 4.0.2+) */\n return {\n aliases: ['ml'],\n keywords: {\n keyword:\n 'and as assert asr begin class constraint do done downto else end ' +\n 'exception external for fun function functor if in include ' +\n 'inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method ' +\n 'mod module mutable new object of open! open or private rec sig struct ' +\n 'then to try type val! val virtual when while with ' +\n /* camlp4 */\n 'parser value',\n built_in:\n /* built-in types */\n 'array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit ' +\n /* (some) types in Pervasives */\n 'in_channel out_channel ref',\n literal:\n 'true false'\n },\n illegal: /\\/\\/|>>/,\n lexemes: '[a-z_]\\\\w*!?',\n contains: [\n {\n className: 'literal',\n begin: '\\\\[(\\\\|\\\\|)?\\\\]|\\\\(\\\\)',\n relevance: 0\n },\n hljs.COMMENT(\n '\\\\(\\\\*',\n '\\\\*\\\\)',\n {\n contains: ['self']\n }\n ),\n { /* type variable */\n className: 'symbol',\n begin: '\\'[A-Za-z_](?!\\')[\\\\w\\']*'\n /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */\n },\n { /* polymorphic variant */\n className: 'type',\n begin: '`[A-Z][\\\\w\\']*'\n },\n { /* module or constructor */\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*',\n relevance: 0\n },\n { /* don't color identifiers, but safely catch all identifiers with '*/\n begin: '[a-z_]\\\\w*\\'[\\\\w\\']*', relevance: 0\n },\n hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n {\n className: 'number',\n begin:\n '\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|' +\n '0[oO][0-7_]+[Lln]?|' +\n '0[bB][01_]+[Lln]?|' +\n '[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)',\n relevance: 0\n },\n {\n begin: /[-=]>/ // relevance booster\n }\n ]\n }\n};","module.exports = function(hljs) {\n\tvar SPECIAL_VARS = {\n\t\tclassName: 'keyword',\n\t\tbegin: '\\\\$(f[asn]|t|vp[rtd]|children)'\n\t},\n\tLITERALS = {\n\t\tclassName: 'literal',\n\t\tbegin: 'false|true|PI|undef'\n\t},\n\tNUMBERS = {\n\t\tclassName: 'number',\n\t\tbegin: '\\\\b\\\\d+(\\\\.\\\\d+)?(e-?\\\\d+)?', //adds 1e5, 1e-10\n\t\trelevance: 0\n\t},\n\tSTRING = hljs.inherit(hljs.QUOTE_STRING_MODE,{illegal: null}),\n\tPREPRO = {\n\t\tclassName: 'meta',\n\t\tkeywords: {'meta-keyword': 'include use'},\n\t\tbegin: 'include|use <',\n\t\tend: '>'\n\t},\n\tPARAMS = {\n\t\tclassName: 'params',\n\t\tbegin: '\\\\(', end: '\\\\)',\n\t\tcontains: ['self', NUMBERS, STRING, SPECIAL_VARS, LITERALS]\n\t},\n\tMODIFIERS = {\n\t\tbegin: '[*!#%]',\n\t\trelevance: 0\n\t},\n\tFUNCTIONS = {\n\t\tclassName: 'function',\n\t\tbeginKeywords: 'module function',\n\t\tend: '\\\\=|\\\\{',\n\t\tcontains: [PARAMS, hljs.UNDERSCORE_TITLE_MODE]\n\t};\n\n\treturn {\n\t\taliases: ['scad'],\n\t\tkeywords: {\n\t\t\tkeyword: 'function module include use for intersection_for if else \\\\%',\n\t\t\tliteral: 'false true PI undef',\n\t\t\tbuilt_in: 'circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign'\n\t\t},\n\t\tcontains: [\n\t\t\thljs.C_LINE_COMMENT_MODE,\n\t\t\thljs.C_BLOCK_COMMENT_MODE,\n\t\t\tNUMBERS,\n\t\t\tPREPRO,\n\t\t\tSTRING,\n\t\t\tSPECIAL_VARS,\n\t\t\tMODIFIERS,\n\t\t\tFUNCTIONS\n\t\t]\n\t}\n};","module.exports = function(hljs) {\n var OXYGENE_KEYWORDS = 'abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue '+\n 'create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false '+\n 'final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited '+\n 'inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of '+\n 'old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly '+\n 'record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple '+\n 'type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal '+\n 'register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained';\n var CURLY_COMMENT = hljs.COMMENT(\n '{',\n '}',\n {\n relevance: 0\n }\n );\n var PAREN_COMMENT = hljs.COMMENT(\n '\\\\(\\\\*',\n '\\\\*\\\\)',\n {\n relevance: 10\n }\n );\n var STRING = {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [{begin: '\\'\\''}]\n };\n var CHAR_STRING = {\n className: 'string', begin: '(#\\\\d+)+'\n };\n var FUNCTION = {\n className: 'function',\n beginKeywords: 'function constructor destructor procedure method', end: '[:;]',\n keywords: 'function constructor|10 destructor|10 procedure|10 method|10',\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n keywords: OXYGENE_KEYWORDS,\n contains: [STRING, CHAR_STRING]\n },\n CURLY_COMMENT, PAREN_COMMENT\n ]\n };\n return {\n case_insensitive: true,\n lexemes: /\\.?\\w+/,\n keywords: OXYGENE_KEYWORDS,\n illegal: '(\"|\\\\$[G-Zg-z]|\\\\/\\\\*|</|=>|->)',\n contains: [\n CURLY_COMMENT, PAREN_COMMENT, hljs.C_LINE_COMMENT_MODE,\n STRING, CHAR_STRING,\n hljs.NUMBER_MODE,\n FUNCTION,\n {\n className: 'class',\n begin: '=\\\\bclass\\\\b', end: 'end;',\n keywords: OXYGENE_KEYWORDS,\n contains: [\n STRING, CHAR_STRING,\n CURLY_COMMENT, PAREN_COMMENT, hljs.C_LINE_COMMENT_MODE,\n FUNCTION\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var CURLY_SUBCOMMENT = hljs.COMMENT(\n '{',\n '}',\n {\n contains: ['self']\n }\n );\n return {\n subLanguage: 'xml', relevance: 0,\n contains: [\n hljs.COMMENT('^#', '$'),\n hljs.COMMENT(\n '\\\\^rem{',\n '}',\n {\n relevance: 10,\n contains: [\n CURLY_SUBCOMMENT\n ]\n }\n ),\n {\n className: 'meta',\n begin: '^@(?:BASE|USE|CLASS|OPTIONS)$',\n relevance: 10\n },\n {\n className: 'title',\n begin: '@[\\\\w\\\\-]+\\\\[[\\\\w^;\\\\-]*\\\\](?:\\\\[[\\\\w^;\\\\-]*\\\\])?(?:.*)$'\n },\n {\n className: 'variable',\n begin: '\\\\$\\\\{?[\\\\w\\\\-\\\\.\\\\:]+\\\\}?'\n },\n {\n className: 'keyword',\n begin: '\\\\^[\\\\w\\\\-\\\\.\\\\:]+'\n },\n {\n className: 'number',\n begin: '\\\\^#[0-9a-fA-F]+'\n },\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var MACRO = {\n className: 'variable',\n begin: /\\$[\\w\\d#@][\\w\\d_]*/\n };\n var TABLE = {\n className: 'variable',\n begin: /<(?!\\/)/, end: />/\n };\n var QUOTE_STRING = {\n className: 'string',\n begin: /\"/, end: /\"/\n };\n\n return {\n aliases: ['pf.conf'],\n lexemes: /[a-z0-9_<>-]+/,\n keywords: {\n built_in: /* block match pass are \"actions\" in pf.conf(5), the rest are\n * lexically similar top-level commands.\n */\n 'block match pass load anchor|5 antispoof|10 set table',\n keyword:\n 'in out log quick on rdomain inet inet6 proto from port os to route' +\n 'allow-opts divert-packet divert-reply divert-to flags group icmp-type' +\n 'icmp6-type label once probability recieved-on rtable prio queue' +\n 'tos tag tagged user keep fragment for os drop' +\n 'af-to|10 binat-to|10 nat-to|10 rdr-to|10 bitmask least-stats random round-robin' +\n 'source-hash static-port' +\n 'dup-to reply-to route-to' +\n 'parent bandwidth default min max qlimit' +\n 'block-policy debug fingerprints hostid limit loginterface optimization' +\n 'reassemble ruleset-optimization basic none profile skip state-defaults' +\n 'state-policy timeout' +\n 'const counters persist' +\n 'no modulate synproxy state|5 floating if-bound no-sync pflow|10 sloppy' +\n 'source-track global rule max-src-nodes max-src-states max-src-conn' +\n 'max-src-conn-rate overload flush' +\n 'scrub|5 max-mss min-ttl no-df|10 random-id',\n literal:\n 'all any no-route self urpf-failed egress|5 unknown'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n MACRO,\n TABLE\n ]\n };\n};","module.exports = function(hljs) {\n var COMMENT_MODE = hljs.COMMENT('--', '$');\n var UNQUOTED_IDENT = '[a-zA-Z_][a-zA-Z_0-9$]*';\n var DOLLAR_STRING = '\\\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\\\$';\n var LABEL = '<<\\\\s*' + UNQUOTED_IDENT + '\\\\s*>>';\n\n var SQL_KW = \n // https://www.postgresql.org/docs/11/static/sql-keywords-appendix.html\n // https://www.postgresql.org/docs/11/static/sql-commands.html\n // SQL commands (starting words)\n 'ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE ' +\n 'DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY ' +\n 'PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW ' +\n 'START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES ' +\n // SQL commands (others)\n 'AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN ' +\n 'WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS ' +\n 'FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM ' +\n 'TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS ' +\n 'METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION ' +\n 'INDEX PROCEDURE ASSERTION ' +\n // additional reserved key words\n 'ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK ' +\n 'COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS ' +\n 'DEFERRABLE RANGE ' +\n 'DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ' +\n 'ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT ' +\n 'NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY ' +\n 'REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN ' +\n 'TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH ' +\n // some of non-reserved (which are used in clauses or as PL/pgSQL keyword)\n 'BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN ' +\n 'BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT ' +\n 'TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN ' +\n 'EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH ' +\n 'REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ' +\n 'ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED ' +\n 'INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 ' +\n 'INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ' +\n 'ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES ' +\n 'RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS ' +\n 'UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF ' +\n // some parameters of VACUUM/ANALYZE/EXPLAIN\n 'FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING ' +\n //\n 'RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED ' +\n 'OF NOTHING NONE EXCLUDE ATTRIBUTE ' +\n // from GRANT (not keywords actually)\n 'USAGE ROUTINES ' +\n // actually literals, but look better this way (due to IS TRUE, IS FALSE, ISNULL etc)\n 'TRUE FALSE NAN INFINITY ';\n\n var ROLE_ATTRS = // only those not in keywrods already\n 'SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT ' +\n 'LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS ';\n\n var PLPGSQL_KW = \n 'ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS ' +\n 'STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT ' +\n 'OPEN ';\n\n var TYPES =\n // https://www.postgresql.org/docs/11/static/datatype.html\n 'BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR ' +\n 'CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 ' +\n 'MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL PATH POINT POLYGON REAL FLOAT4 SMALLINT INT2 ' +\n 'SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 ' +\n 'TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR ' +\n 'INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ' +\n // pseudotypes\n 'ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL ' +\n 'RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR ' +\n // spec. type\n 'NAME ' +\n // OID-types\n 'OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 ' +\n 'REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 ';// +\n // some types from standard extensions\n 'HSTORE|10 LO LTREE|10 ';\n \n var TYPES_RE = \n TYPES.trim()\n .split(' ')\n .map( function(val) { return val.split('|')[0]; } )\n .join('|');\n\n var SQL_BI =\n 'CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP ' +\n 'CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC ';\n\n var PLPGSQL_BI =\n 'FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 ' +\n 'TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ' +\n // get diagnostics\n 'ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME ' +\n 'PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 ' +\n 'PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 ';\n\n var PLPGSQL_EXCEPTIONS =\n // exceptions https://www.postgresql.org/docs/current/static/errcodes-appendix.html\n 'SQLSTATE SQLERRM|10 ' +\n 'SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING ' +\n 'NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED ' +\n 'STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED ' +\n 'SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE ' +\n 'SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION ' +\n 'TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED ' +\n 'INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR ' +\n 'INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION ' +\n 'STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION ' +\n 'DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW ' +\n 'DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW ' +\n 'INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION ' +\n 'INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION ' +\n 'INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST ' +\n 'INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE ' +\n 'NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE ' +\n 'INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE ' +\n 'INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT ' +\n 'INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH ' +\n 'NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE ' +\n 'SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION ' +\n 'SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING ' +\n 'FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION ' +\n 'BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT ' +\n 'INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION ' +\n 'INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION ' +\n 'UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE ' +\n 'INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE ' +\n 'HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION ' +\n 'INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION ' +\n 'NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION ' +\n 'SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION ' +\n 'IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME ' +\n 'TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD ' +\n 'DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST ' +\n 'INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT ' +\n 'MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED ' +\n 'READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION ' +\n 'CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED ' +\n 'PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED ' +\n 'EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED ' +\n 'TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED ' +\n 'SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME ' +\n 'INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION ' +\n 'SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED ' +\n 'SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE ' +\n 'GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME ' +\n 'NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH ' +\n 'INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN ' +\n 'UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT ' +\n 'DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION ' +\n 'DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS ' +\n 'DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS ' +\n 'INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION ' +\n 'INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION ' +\n 'INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION ' +\n 'INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL ' +\n 'OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED ' +\n 'STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE ' +\n 'OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION ' +\n 'QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED ' +\n 'SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR ' +\n 'LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED ' +\n 'FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION ' +\n 'FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER ' +\n 'FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS ' +\n 'FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX ' +\n 'FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH ' +\n 'FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES ' +\n 'FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE ' +\n 'FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION ' +\n 'FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR ' +\n 'RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED ' +\n 'INDEX_CORRUPTED ';\n\n var FUNCTIONS =\n // https://www.postgresql.org/docs/11/static/functions-aggregate.html\n 'ARRAY_AGG AVG BIT_AND BIT_OR BOOL_AND BOOL_OR COUNT EVERY JSON_AGG JSONB_AGG JSON_OBJECT_AGG ' +\n 'JSONB_OBJECT_AGG MAX MIN MODE STRING_AGG SUM XMLAGG ' +\n 'CORR COVAR_POP COVAR_SAMP REGR_AVGX REGR_AVGY REGR_COUNT REGR_INTERCEPT REGR_R2 REGR_SLOPE ' +\n 'REGR_SXX REGR_SXY REGR_SYY STDDEV STDDEV_POP STDDEV_SAMP VARIANCE VAR_POP VAR_SAMP ' +\n 'PERCENTILE_CONT PERCENTILE_DISC ' +\n // https://www.postgresql.org/docs/11/static/functions-window.html\n 'ROW_NUMBER RANK DENSE_RANK PERCENT_RANK CUME_DIST NTILE LAG LEAD FIRST_VALUE LAST_VALUE NTH_VALUE ' +\n // https://www.postgresql.org/docs/11/static/functions-comparison.html\n 'NUM_NONNULLS NUM_NULLS ' +\n // https://www.postgresql.org/docs/11/static/functions-math.html\n 'ABS CBRT CEIL CEILING DEGREES DIV EXP FLOOR LN LOG MOD PI POWER RADIANS ROUND SCALE SIGN SQRT ' +\n 'TRUNC WIDTH_BUCKET ' +\n 'RANDOM SETSEED ' +\n 'ACOS ACOSD ASIN ASIND ATAN ATAND ATAN2 ATAN2D COS COSD COT COTD SIN SIND TAN TAND ' +\n // https://www.postgresql.org/docs/11/static/functions-string.html\n 'BIT_LENGTH CHAR_LENGTH CHARACTER_LENGTH LOWER OCTET_LENGTH OVERLAY POSITION SUBSTRING TREAT TRIM UPPER ' +\n 'ASCII BTRIM CHR CONCAT CONCAT_WS CONVERT CONVERT_FROM CONVERT_TO DECODE ENCODE INITCAP' +\n 'LEFT LENGTH LPAD LTRIM MD5 PARSE_IDENT PG_CLIENT_ENCODING QUOTE_IDENT|10 QUOTE_LITERAL|10 ' +\n 'QUOTE_NULLABLE|10 REGEXP_MATCH REGEXP_MATCHES REGEXP_REPLACE REGEXP_SPLIT_TO_ARRAY ' +\n 'REGEXP_SPLIT_TO_TABLE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SPLIT_PART STRPOS SUBSTR ' +\n 'TO_ASCII TO_HEX TRANSLATE ' +\n // https://www.postgresql.org/docs/11/static/functions-binarystring.html\n 'OCTET_LENGTH GET_BIT GET_BYTE SET_BIT SET_BYTE ' +\n // https://www.postgresql.org/docs/11/static/functions-formatting.html\n 'TO_CHAR TO_DATE TO_NUMBER TO_TIMESTAMP ' +\n // https://www.postgresql.org/docs/11/static/functions-datetime.html\n 'AGE CLOCK_TIMESTAMP|10 DATE_PART DATE_TRUNC ISFINITE JUSTIFY_DAYS JUSTIFY_HOURS JUSTIFY_INTERVAL ' +\n 'MAKE_DATE MAKE_INTERVAL|10 MAKE_TIME MAKE_TIMESTAMP|10 MAKE_TIMESTAMPTZ|10 NOW STATEMENT_TIMESTAMP|10 ' +\n 'TIMEOFDAY TRANSACTION_TIMESTAMP|10 ' +\n // https://www.postgresql.org/docs/11/static/functions-enum.html\n 'ENUM_FIRST ENUM_LAST ENUM_RANGE ' +\n // https://www.postgresql.org/docs/11/static/functions-geometry.html\n 'AREA CENTER DIAMETER HEIGHT ISCLOSED ISOPEN NPOINTS PCLOSE POPEN RADIUS WIDTH ' +\n 'BOX BOUND_BOX CIRCLE LINE LSEG PATH POLYGON ' +\n // https://www.postgresql.org/docs/11/static/functions-net.html\n 'ABBREV BROADCAST HOST HOSTMASK MASKLEN NETMASK NETWORK SET_MASKLEN TEXT INET_SAME_FAMILY' +\n 'INET_MERGE MACADDR8_SET7BIT ' +\n // https://www.postgresql.org/docs/11/static/functions-textsearch.html\n 'ARRAY_TO_TSVECTOR GET_CURRENT_TS_CONFIG NUMNODE PLAINTO_TSQUERY PHRASETO_TSQUERY WEBSEARCH_TO_TSQUERY ' +\n 'QUERYTREE SETWEIGHT STRIP TO_TSQUERY TO_TSVECTOR JSON_TO_TSVECTOR JSONB_TO_TSVECTOR TS_DELETE ' +\n 'TS_FILTER TS_HEADLINE TS_RANK TS_RANK_CD TS_REWRITE TSQUERY_PHRASE TSVECTOR_TO_ARRAY ' +\n 'TSVECTOR_UPDATE_TRIGGER TSVECTOR_UPDATE_TRIGGER_COLUMN ' +\n // https://www.postgresql.org/docs/11/static/functions-xml.html\n 'XMLCOMMENT XMLCONCAT XMLELEMENT XMLFOREST XMLPI XMLROOT ' +\n 'XMLEXISTS XML_IS_WELL_FORMED XML_IS_WELL_FORMED_DOCUMENT XML_IS_WELL_FORMED_CONTENT ' +\n 'XPATH XPATH_EXISTS XMLTABLE XMLNAMESPACES ' +\n 'TABLE_TO_XML TABLE_TO_XMLSCHEMA TABLE_TO_XML_AND_XMLSCHEMA ' +\n 'QUERY_TO_XML QUERY_TO_XMLSCHEMA QUERY_TO_XML_AND_XMLSCHEMA ' +\n 'CURSOR_TO_XML CURSOR_TO_XMLSCHEMA ' +\n 'SCHEMA_TO_XML SCHEMA_TO_XMLSCHEMA SCHEMA_TO_XML_AND_XMLSCHEMA ' +\n 'DATABASE_TO_XML DATABASE_TO_XMLSCHEMA DATABASE_TO_XML_AND_XMLSCHEMA ' +\n 'XMLATTRIBUTES ' +\n // https://www.postgresql.org/docs/11/static/functions-json.html\n 'TO_JSON TO_JSONB ARRAY_TO_JSON ROW_TO_JSON JSON_BUILD_ARRAY JSONB_BUILD_ARRAY JSON_BUILD_OBJECT ' +\n 'JSONB_BUILD_OBJECT JSON_OBJECT JSONB_OBJECT JSON_ARRAY_LENGTH JSONB_ARRAY_LENGTH JSON_EACH ' +\n 'JSONB_EACH JSON_EACH_TEXT JSONB_EACH_TEXT JSON_EXTRACT_PATH JSONB_EXTRACT_PATH ' +\n 'JSON_OBJECT_KEYS JSONB_OBJECT_KEYS JSON_POPULATE_RECORD JSONB_POPULATE_RECORD JSON_POPULATE_RECORDSET ' +\n 'JSONB_POPULATE_RECORDSET JSON_ARRAY_ELEMENTS JSONB_ARRAY_ELEMENTS JSON_ARRAY_ELEMENTS_TEXT ' +\n 'JSONB_ARRAY_ELEMENTS_TEXT JSON_TYPEOF JSONB_TYPEOF JSON_TO_RECORD JSONB_TO_RECORD JSON_TO_RECORDSET ' +\n 'JSONB_TO_RECORDSET JSON_STRIP_NULLS JSONB_STRIP_NULLS JSONB_SET JSONB_INSERT JSONB_PRETTY ' +\n // https://www.postgresql.org/docs/11/static/functions-sequence.html\n 'CURRVAL LASTVAL NEXTVAL SETVAL ' +\n // https://www.postgresql.org/docs/11/static/functions-conditional.html\n 'COALESCE NULLIF GREATEST LEAST ' +\n // https://www.postgresql.org/docs/11/static/functions-array.html\n 'ARRAY_APPEND ARRAY_CAT ARRAY_NDIMS ARRAY_DIMS ARRAY_FILL ARRAY_LENGTH ARRAY_LOWER ARRAY_POSITION ' +\n 'ARRAY_POSITIONS ARRAY_PREPEND ARRAY_REMOVE ARRAY_REPLACE ARRAY_TO_STRING ARRAY_UPPER CARDINALITY ' +\n 'STRING_TO_ARRAY UNNEST ' +\n // https://www.postgresql.org/docs/11/static/functions-range.html\n 'ISEMPTY LOWER_INC UPPER_INC LOWER_INF UPPER_INF RANGE_MERGE ' +\n // https://www.postgresql.org/docs/11/static/functions-srf.html\n 'GENERATE_SERIES GENERATE_SUBSCRIPTS ' +\n // https://www.postgresql.org/docs/11/static/functions-info.html\n 'CURRENT_DATABASE CURRENT_QUERY CURRENT_SCHEMA|10 CURRENT_SCHEMAS|10 INET_CLIENT_ADDR INET_CLIENT_PORT ' +\n 'INET_SERVER_ADDR INET_SERVER_PORT ROW_SECURITY_ACTIVE FORMAT_TYPE ' +\n 'TO_REGCLASS TO_REGPROC TO_REGPROCEDURE TO_REGOPER TO_REGOPERATOR TO_REGTYPE TO_REGNAMESPACE TO_REGROLE ' +\n 'COL_DESCRIPTION OBJ_DESCRIPTION SHOBJ_DESCRIPTION ' +\n 'TXID_CURRENT TXID_CURRENT_IF_ASSIGNED TXID_CURRENT_SNAPSHOT TXID_SNAPSHOT_XIP TXID_SNAPSHOT_XMAX ' +\n 'TXID_SNAPSHOT_XMIN TXID_VISIBLE_IN_SNAPSHOT TXID_STATUS ' +\n // https://www.postgresql.org/docs/11/static/functions-admin.html\n 'CURRENT_SETTING SET_CONFIG BRIN_SUMMARIZE_NEW_VALUES BRIN_SUMMARIZE_RANGE BRIN_DESUMMARIZE_RANGE ' +\n 'GIN_CLEAN_PENDING_LIST ' +\n // https://www.postgresql.org/docs/11/static/functions-trigger.html\n 'SUPPRESS_REDUNDANT_UPDATES_TRIGGER ' +\n // ihttps://www.postgresql.org/docs/devel/static/lo-funcs.html\n 'LO_FROM_BYTEA LO_PUT LO_GET LO_CREAT LO_CREATE LO_UNLINK LO_IMPORT LO_EXPORT LOREAD LOWRITE ' +\n //\n 'GROUPING CAST ';\n\n var FUNCTIONS_RE = \n FUNCTIONS.trim()\n .split(' ')\n .map( function(val) { return val.split('|')[0]; } )\n .join('|');\n\n return {\n aliases: ['postgres','postgresql'],\n case_insensitive: true,\n keywords: {\n keyword:\n SQL_KW + PLPGSQL_KW + ROLE_ATTRS,\n built_in:\n SQL_BI + PLPGSQL_BI + PLPGSQL_EXCEPTIONS,\n },\n // Forbid some cunstructs from other languages to improve autodetect. In fact\n // \"[a-z]:\" is legal (as part of array slice), but improbabal.\n illegal: /:==|\\W\\s*\\(\\*|(^|\\s)\\$[a-z]|{{|[a-z]:\\s*$|\\.\\.\\.|TO:|DO:/,\n contains: [\n // special handling of some words, which are reserved only in some contexts\n {\n className: 'keyword',\n variants: [\n { begin: /\\bTEXT\\s*SEARCH\\b/ },\n { begin: /\\b(PRIMARY|FOREIGN|FOR(\\s+NO)?)\\s+KEY\\b/ },\n { begin: /\\bPARALLEL\\s+(UNSAFE|RESTRICTED|SAFE)\\b/ },\n { begin: /\\bSTORAGE\\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\\b/ },\n { begin: /\\bMATCH\\s+(FULL|PARTIAL|SIMPLE)\\b/ },\n { begin: /\\bNULLS\\s+(FIRST|LAST)\\b/ },\n { begin: /\\bEVENT\\s+TRIGGER\\b/ },\n { begin: /\\b(MAPPING|OR)\\s+REPLACE\\b/ },\n { begin: /\\b(FROM|TO)\\s+(PROGRAM|STDIN|STDOUT)\\b/ },\n { begin: /\\b(SHARE|EXCLUSIVE)\\s+MODE\\b/ },\n { begin: /\\b(LEFT|RIGHT)\\s+(OUTER\\s+)?JOIN\\b/ },\n { begin: /\\b(FETCH|MOVE)\\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\\b/ },\n { begin: /\\bPRESERVE\\s+ROWS\\b/ },\n { begin: /\\bDISCARD\\s+PLANS\\b/ },\n { begin: /\\bREFERENCING\\s+(OLD|NEW)\\b/ },\n { begin: /\\bSKIP\\s+LOCKED\\b/ },\n { begin: /\\bGROUPING\\s+SETS\\b/ },\n { begin: /\\b(BINARY|INSENSITIVE|SCROLL|NO\\s+SCROLL)\\s+(CURSOR|FOR)\\b/ },\n { begin: /\\b(WITH|WITHOUT)\\s+HOLD\\b/ },\n { begin: /\\bWITH\\s+(CASCADED|LOCAL)\\s+CHECK\\s+OPTION\\b/ },\n { begin: /\\bEXCLUDE\\s+(TIES|NO\\s+OTHERS)\\b/ },\n { begin: /\\bFORMAT\\s+(TEXT|XML|JSON|YAML)\\b/ },\n { begin: /\\bSET\\s+((SESSION|LOCAL)\\s+)?NAMES\\b/ },\n { begin: /\\bIS\\s+(NOT\\s+)?UNKNOWN\\b/ },\n { begin: /\\bSECURITY\\s+LABEL\\b/ },\n { begin: /\\bSTANDALONE\\s+(YES|NO|NO\\s+VALUE)\\b/ },\n { begin: /\\bWITH\\s+(NO\\s+)?DATA\\b/ },\n { begin: /\\b(FOREIGN|SET)\\s+DATA\\b/ },\n { begin: /\\bSET\\s+(CATALOG|CONSTRAINTS)\\b/ },\n { begin: /\\b(WITH|FOR)\\s+ORDINALITY\\b/ },\n { begin: /\\bIS\\s+(NOT\\s+)?DOCUMENT\\b/ },\n { begin: /\\bXML\\s+OPTION\\s+(DOCUMENT|CONTENT)\\b/ },\n { begin: /\\b(STRIP|PRESERVE)\\s+WHITESPACE\\b/ },\n { begin: /\\bNO\\s+(ACTION|MAXVALUE|MINVALUE)\\b/ },\n { begin: /\\bPARTITION\\s+BY\\s+(RANGE|LIST|HASH)\\b/ },\n { begin: /\\bAT\\s+TIME\\s+ZONE\\b/ },\n { begin: /\\bGRANTED\\s+BY\\b/ },\n { begin: /\\bRETURN\\s+(QUERY|NEXT)\\b/ },\n { begin: /\\b(ATTACH|DETACH)\\s+PARTITION\\b/ },\n { begin: /\\bFORCE\\s+ROW\\s+LEVEL\\s+SECURITY\\b/ },\n { begin: /\\b(INCLUDING|EXCLUDING)\\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\\b/ },\n { begin: /\\bAS\\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\\b/ }\n ]\n },\n // functions named as keywords, followed by '('\n {\n begin: /\\b(FORMAT|FAMILY|VERSION)\\s*\\(/,\n //keywords: { built_in: 'FORMAT FAMILY VERSION' }\n },\n // INCLUDE ( ... ) in index_parameters in CREATE TABLE\n {\n begin: /\\bINCLUDE\\s*\\(/,\n keywords: 'INCLUDE'\n },\n // not highlight RANGE if not in frame_clause (not 100% correct, but seems satisfactory)\n {\n begin: /\\bRANGE(?!\\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))/\n },\n // disable highlighting in commands CREATE AGGREGATE/COLLATION/DATABASE/OPERTOR/TEXT SEARCH .../TYPE\n // and in PL/pgSQL RAISE ... USING\n {\n begin: /\\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\\s*=/\n },\n // PG_smth; HAS_some_PRIVILEGE\n {\n //className: 'built_in',\n begin: /\\b(PG_\\w+?|HAS_[A-Z_]+_PRIVILEGE)\\b/,\n relevance: 10\n },\n // extract\n {\n begin: /\\bEXTRACT\\s*\\(/,\n end: /\\bFROM\\b/,\n returnEnd: true,\n keywords: {\n //built_in: 'EXTRACT',\n type: 'CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS ' +\n 'MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR ' +\n 'TIMEZONE_MINUTE WEEK YEAR'\n }\n },\n // xmlelement, xmlpi - special NAME\n {\n begin: /\\b(XMLELEMENT|XMLPI)\\s*\\(\\s*NAME/,\n keywords: {\n //built_in: 'XMLELEMENT XMLPI',\n keyword: 'NAME'\n }\n },\n // xmlparse, xmlserialize\n {\n begin: /\\b(XMLPARSE|XMLSERIALIZE)\\s*\\(\\s*(DOCUMENT|CONTENT)/,\n keywords: {\n //built_in: 'XMLPARSE XMLSERIALIZE',\n keyword: 'DOCUMENT CONTENT'\n }\n },\n // Sequences. We actually skip everything between CACHE|INCREMENT|MAXVALUE|MINVALUE and\n // nearest following numeric constant. Without with trick we find a lot of \"keywords\"\n // in 'avrasm' autodetection test...\n {\n beginKeywords: 'CACHE INCREMENT MAXVALUE MINVALUE',\n end: hljs.C_NUMBER_RE,\n returnEnd: true,\n keywords: 'BY CACHE INCREMENT MAXVALUE MINVALUE'\n },\n // WITH|WITHOUT TIME ZONE as part of datatype\n {\n className: 'type',\n begin: /\\b(WITH|WITHOUT)\\s+TIME\\s+ZONE\\b/\n },\n // INTERVAL optional fields\n {\n className: 'type',\n begin: /\\bINTERVAL\\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\\s+TO\\s+(MONTH|HOUR|MINUTE|SECOND))?\\b/\n },\n // Pseudo-types which allowed only as return type\n {\n begin: /\\bRETURNS\\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\\b/,\n keywords: {\n keyword: 'RETURNS',\n type: 'LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER'\n }\n },\n // Known functions - only when followed by '('\n {\n begin: '\\\\b(' + FUNCTIONS_RE + ')\\\\s*\\\\('\n //keywords: { built_in: FUNCTIONS }\n },\n // Types\n {\n begin: '\\\\.(' + TYPES_RE + ')\\\\b' // prevent highlight as type, say, 'oid' in 'pgclass.oid'\n },\n {\n begin: '\\\\b(' + TYPES_RE + ')\\\\s+PATH\\\\b', // in XMLTABLE\n keywords: {\n keyword: 'PATH', // hopefully no one would use PATH type in XMLTABLE...\n type: TYPES.replace('PATH ','')\n }\n },\n {\n className: 'type',\n begin: '\\\\b(' + TYPES_RE + ')\\\\b'\n },\n // Strings, see https://www.postgresql.org/docs/11/static/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS\n {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [{begin: '\\'\\''}]\n },\n {\n className: 'string',\n begin: '(e|E|u&|U&)\\'', end: '\\'',\n contains: [{begin: '\\\\\\\\.'}],\n relevance: 10\n },\n {\n begin: DOLLAR_STRING,\n endSameAsBegin: true,\n contains: [\n {\n // actually we want them all except SQL; listed are those with known implementations\n // and XML + JSON just in case\n subLanguage: ['pgsql','perl','python','tcl','r','lua','java','php','ruby','bash','scheme','xml','json'],\n endsWithParent: true\n }\n ]\n },\n // identifiers in quotes\n {\n begin: '\"', end: '\"',\n contains: [{begin: '\"\"'}]\n },\n // numbers\n hljs.C_NUMBER_MODE,\n // comments\n hljs.C_BLOCK_COMMENT_MODE,\n COMMENT_MODE,\n // PL/pgSQL staff\n // %ROWTYPE, %TYPE, $n\n {\n className: 'meta',\n variants: [\n {begin: '%(ROW)?TYPE', relevance: 10}, // %TYPE, %ROWTYPE\n {begin: '\\\\$\\\\d+'}, // $n\n {begin: '^#\\\\w', end: '$'} // #compiler option\n ]\n },\n // <<labeles>>\n {\n className: 'symbol',\n begin: LABEL,\n relevance: 10\n }\n ]\n };\n};","module.exports = function(hljs) {\n var VARIABLE = {\n begin: '\\\\$+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*'\n };\n var PREPROCESSOR = {\n className: 'meta', begin: /<\\?(php)?|\\?>/\n };\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, PREPROCESSOR],\n variants: [\n {\n begin: 'b\"', end: '\"'\n },\n {\n begin: 'b\\'', end: '\\''\n },\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null})\n ]\n };\n var NUMBER = {variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]};\n return {\n aliases: ['php', 'php3', 'php4', 'php5', 'php6', 'php7'],\n case_insensitive: true,\n keywords:\n 'and include_once list abstract global private echo interface as static endswitch ' +\n 'array null if endwhile or const for endforeach self var while isset public ' +\n 'protected exit foreach throw elseif include __FILE__ empty require_once do xor ' +\n 'return parent clone use __CLASS__ __LINE__ else break print eval new ' +\n 'catch __METHOD__ case exception default die require __FUNCTION__ ' +\n 'enddeclare final try switch continue endfor endif declare unset true false ' +\n 'trait goto instanceof insteadof __DIR__ __NAMESPACE__ ' +\n 'yield finally',\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT('//', '$', {contains: [PREPROCESSOR]}),\n hljs.COMMENT(\n '/\\\\*',\n '\\\\*/',\n {\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.COMMENT(\n '__halt_compiler.+?;',\n false,\n {\n endsWithParent: true,\n keywords: '__halt_compiler',\n lexemes: hljs.UNDERSCORE_IDENT_RE\n }\n ),\n {\n className: 'string',\n begin: /<<<['\"]?\\w+['\"]?$/, end: /^\\w+;?$/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {\n className: 'subst',\n variants: [\n {begin: /\\$\\w+/},\n {begin: /\\{\\$/, end: /\\}/}\n ]\n }\n ]\n },\n PREPROCESSOR,\n {\n className: 'keyword', begin: /\\$this\\b/\n },\n VARIABLE,\n {\n // swallow composed identifiers to avoid parsing them as keywords\n begin: /(::|->)+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/\n },\n {\n className: 'function',\n beginKeywords: 'function', end: /[;{]/, excludeEnd: true,\n illegal: '\\\\$|\\\\[|%',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n contains: [\n 'self',\n VARIABLE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER\n ]\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface', end: '{', excludeEnd: true,\n illegal: /[:\\(\\$\"]/,\n contains: [\n {beginKeywords: 'extends implements'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n beginKeywords: 'namespace', end: ';',\n illegal: /[\\.']/,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n beginKeywords: 'use', end: ';',\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n begin: '=>' // No markup, just a relevance booster\n },\n STRING,\n NUMBER\n ]\n };\n};","module.exports = function(hljs) {\n return {\n disableAutodetect: true\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'actor addressof and as be break class compile_error compile_intrinsic' +\n 'consume continue delegate digestof do else elseif embed end error' +\n 'for fun if ifdef in interface is isnt lambda let match new not object' +\n 'or primitive recover repeat return struct then trait try type until ' +\n 'use var where while with xor',\n meta:\n 'iso val tag trn box ref',\n literal:\n 'this false true'\n };\n\n var TRIPLE_QUOTE_STRING_MODE = {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"',\n relevance: 10\n };\n\n var QUOTE_STRING_MODE = {\n className: 'string',\n begin: '\"', end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n\n var SINGLE_QUOTE_CHAR_MODE = {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [hljs.BACKSLASH_ESCAPE],\n relevance: 0\n };\n\n var TYPE_NAME = {\n className: 'type',\n begin: '\\\\b_?[A-Z][\\\\w]*',\n relevance: 0\n };\n\n var PRIMED_NAME = {\n begin: hljs.IDENT_RE + '\\'', relevance: 0\n };\n\n var CLASS = {\n className: 'class',\n beginKeywords: 'class actor', end: '$',\n contains: [\n hljs.TITLE_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]\n }\n\n var FUNCTION = {\n className: 'function',\n beginKeywords: 'new fun', end: '=>',\n contains: [\n hljs.TITLE_MODE,\n {\n begin: /\\(/, end: /\\)/,\n contains: [\n TYPE_NAME,\n PRIMED_NAME,\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n begin: /:/, endsWithParent: true,\n contains: [TYPE_NAME]\n },\n hljs.C_LINE_COMMENT_MODE\n ]\n }\n\n return {\n keywords: KEYWORDS,\n contains: [\n CLASS,\n FUNCTION,\n TYPE_NAME,\n TRIPLE_QUOTE_STRING_MODE,\n QUOTE_STRING_MODE,\n SINGLE_QUOTE_CHAR_MODE,\n PRIMED_NAME,\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var BACKTICK_ESCAPE = {\n begin: '`[\\\\s\\\\S]',\n relevance: 0\n };\n var VAR = {\n className: 'variable',\n variants: [\n {begin: /\\$[\\w\\d][\\w\\d_:]*/}\n ]\n };\n var LITERAL = {\n className: 'literal',\n begin: /\\$(null|true|false)\\b/\n };\n var QUOTE_STRING = {\n className: 'string',\n variants: [\n { begin: /\"/, end: /\"/ },\n { begin: /@\"/, end: /^\"@/ }\n ],\n contains: [\n BACKTICK_ESCAPE,\n VAR,\n {\n className: 'variable',\n begin: /\\$[A-z]/, end: /[^A-z]/\n }\n ]\n };\n var APOS_STRING = {\n className: 'string',\n variants: [\n { begin: /'/, end: /'/ },\n { begin: /@'/, end: /^'@/ }\n ]\n };\n\n var PS_HELPTAGS = {\n className: 'doctag',\n variants: [\n /* no paramater help tags */ \n { begin: /\\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/ },\n /* one parameter help tags */\n { begin: /\\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\\s+\\S+/ }\n ]\n };\n var PS_COMMENT = hljs.inherit(\n hljs.COMMENT(null, null),\n {\n variants: [\n /* single-line comment */\n { begin: /#/, end: /$/ },\n /* multi-line comment */\n { begin: /<#/, end: /#>/ }\n ],\n contains: [PS_HELPTAGS]\n }\n );\n\n return {\n aliases: ['ps'],\n lexemes: /-?[A-z\\.\\-]+/,\n case_insensitive: true,\n keywords: {\n keyword: 'if else foreach return function do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch',\n built_in: 'Add-Computer Add-Content Add-History Add-JobTrigger Add-Member Add-PSSnapin Add-Type Checkpoint-Computer Clear-Content Clear-EventLog Clear-History Clear-Host Clear-Item Clear-ItemProperty Clear-Variable Compare-Object Complete-Transaction Connect-PSSession Connect-WSMan Convert-Path ConvertFrom-Csv ConvertFrom-Json ConvertFrom-SecureString ConvertFrom-StringData ConvertTo-Csv ConvertTo-Html ConvertTo-Json ConvertTo-SecureString ConvertTo-Xml Copy-Item Copy-ItemProperty Debug-Process Disable-ComputerRestore Disable-JobTrigger Disable-PSBreakpoint Disable-PSRemoting Disable-PSSessionConfiguration Disable-WSManCredSSP Disconnect-PSSession Disconnect-WSMan Disable-ScheduledJob Enable-ComputerRestore Enable-JobTrigger Enable-PSBreakpoint Enable-PSRemoting Enable-PSSessionConfiguration Enable-ScheduledJob Enable-WSManCredSSP Enter-PSSession Exit-PSSession Export-Alias Export-Clixml Export-Console Export-Counter Export-Csv Export-FormatData Export-ModuleMember Export-PSSession ForEach-Object Format-Custom Format-List Format-Table Format-Wide Get-Acl Get-Alias Get-AuthenticodeSignature Get-ChildItem Get-Command Get-ComputerRestorePoint Get-Content Get-ControlPanelItem Get-Counter Get-Credential Get-Culture Get-Date Get-Event Get-EventLog Get-EventSubscriber Get-ExecutionPolicy Get-FormatData Get-Host Get-HotFix Get-Help Get-History Get-IseSnippet Get-Item Get-ItemProperty Get-Job Get-JobTrigger Get-Location Get-Member Get-Module Get-PfxCertificate Get-Process Get-PSBreakpoint Get-PSCallStack Get-PSDrive Get-PSProvider Get-PSSession Get-PSSessionConfiguration Get-PSSnapin Get-Random Get-ScheduledJob Get-ScheduledJobOption Get-Service Get-TraceSource Get-Transaction Get-TypeData Get-UICulture Get-Unique Get-Variable Get-Verb Get-WinEvent Get-WmiObject Get-WSManCredSSP Get-WSManInstance Group-Object Import-Alias Import-Clixml Import-Counter Import-Csv Import-IseSnippet Import-LocalizedData Import-PSSession Import-Module Invoke-AsWorkflow Invoke-Command Invoke-Expression Invoke-History Invoke-Item Invoke-RestMethod Invoke-WebRequest Invoke-WmiMethod Invoke-WSManAction Join-Path Limit-EventLog Measure-Command Measure-Object Move-Item Move-ItemProperty New-Alias New-Event New-EventLog New-IseSnippet New-Item New-ItemProperty New-JobTrigger New-Object New-Module New-ModuleManifest New-PSDrive New-PSSession New-PSSessionConfigurationFile New-PSSessionOption New-PSTransportOption New-PSWorkflowExecutionOption New-PSWorkflowSession New-ScheduledJobOption New-Service New-TimeSpan New-Variable New-WebServiceProxy New-WinEvent New-WSManInstance New-WSManSessionOption Out-Default Out-File Out-GridView Out-Host Out-Null Out-Printer Out-String Pop-Location Push-Location Read-Host Receive-Job Register-EngineEvent Register-ObjectEvent Register-PSSessionConfiguration Register-ScheduledJob Register-WmiEvent Remove-Computer Remove-Event Remove-EventLog Remove-Item Remove-ItemProperty Remove-Job Remove-JobTrigger Remove-Module Remove-PSBreakpoint Remove-PSDrive Remove-PSSession Remove-PSSnapin Remove-TypeData Remove-Variable Remove-WmiObject Remove-WSManInstance Rename-Computer Rename-Item Rename-ItemProperty Reset-ComputerMachinePassword Resolve-Path Restart-Computer Restart-Service Restore-Computer Resume-Job Resume-Service Save-Help Select-Object Select-String Select-Xml Send-MailMessage Set-Acl Set-Alias Set-AuthenticodeSignature Set-Content Set-Date Set-ExecutionPolicy Set-Item Set-ItemProperty Set-JobTrigger Set-Location Set-PSBreakpoint Set-PSDebug Set-PSSessionConfiguration Set-ScheduledJob Set-ScheduledJobOption Set-Service Set-StrictMode Set-TraceSource Set-Variable Set-WmiInstance Set-WSManInstance Set-WSManQuickConfig Show-Command Show-ControlPanelItem Show-EventLog Sort-Object Split-Path Start-Job Start-Process Start-Service Start-Sleep Start-Transaction Start-Transcript Stop-Computer Stop-Job Stop-Process Stop-Service Stop-Transcript Suspend-Job Suspend-Service Tee-Object Test-ComputerSecureChannel Test-Connection Test-ModuleManifest Test-Path Test-PSSessionConfigurationFile Trace-Command Unblock-File Undo-Transaction Unregister-Event Unregister-PSSessionConfiguration Unregister-ScheduledJob Update-FormatData Update-Help Update-List Update-TypeData Use-Transaction Wait-Event Wait-Job Wait-Process Where-Object Write-Debug Write-Error Write-EventLog Write-Host Write-Output Write-Progress Write-Verbose Write-Warning Add-MDTPersistentDrive Disable-MDTMonitorService Enable-MDTMonitorService Get-MDTDeploymentShareStatistics Get-MDTMonitorData Get-MDTOperatingSystemCatalog Get-MDTPersistentDrive Import-MDTApplication Import-MDTDriver Import-MDTOperatingSystem Import-MDTPackage Import-MDTTaskSequence New-MDTDatabase Remove-MDTMonitorData Remove-MDTPersistentDrive Restore-MDTPersistentDrive Set-MDTMonitorData Test-MDTDeploymentShare Test-MDTMonitorData Update-MDTDatabaseSchema Update-MDTDeploymentShare Update-MDTLinkedDS Update-MDTMedia Update-MDTMedia Add-VamtProductKey Export-VamtData Find-VamtManagedMachine Get-VamtConfirmationId Get-VamtProduct Get-VamtProductKey Import-VamtData Initialize-VamtData Install-VamtConfirmationId Install-VamtProductActivation Install-VamtProductKey Update-VamtProduct',\n nomarkup: '-ne -eq -lt -gt -ge -le -not -like -notlike -match -notmatch -contains -notcontains -in -notin -replace'\n },\n contains: [\n BACKTICK_ESCAPE,\n hljs.NUMBER_MODE,\n QUOTE_STRING,\n APOS_STRING,\n LITERAL,\n VAR,\n PS_COMMENT\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword: 'BufferedReader PVector PFont PImage PGraphics HashMap boolean byte char color ' +\n 'double float int long String Array FloatDict FloatList IntDict IntList JSONArray JSONObject ' +\n 'Object StringDict StringList Table TableRow XML ' +\n // Java keywords\n 'false synchronized int abstract float private char boolean static null if const ' +\n 'for true while long throw strictfp finally protected import native final return void ' +\n 'enum else break transient new catch instanceof byte super volatile case assert short ' +\n 'package default double public try this switch continue throws protected public private',\n literal: 'P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI',\n title: 'setup draw',\n built_in: 'displayHeight displayWidth mouseY mouseX mousePressed pmouseX pmouseY key ' +\n 'keyCode pixels focused frameCount frameRate height width ' +\n 'size createGraphics beginDraw createShape loadShape PShape arc ellipse line point ' +\n 'quad rect triangle bezier bezierDetail bezierPoint bezierTangent curve curveDetail curvePoint ' +\n 'curveTangent curveTightness shape shapeMode beginContour beginShape bezierVertex curveVertex ' +\n 'endContour endShape quadraticVertex vertex ellipseMode noSmooth rectMode smooth strokeCap ' +\n 'strokeJoin strokeWeight mouseClicked mouseDragged mouseMoved mousePressed mouseReleased ' +\n 'mouseWheel keyPressed keyPressedkeyReleased keyTyped print println save saveFrame day hour ' +\n 'millis minute month second year background clear colorMode fill noFill noStroke stroke alpha ' +\n 'blue brightness color green hue lerpColor red saturation modelX modelY modelZ screenX screenY ' +\n 'screenZ ambient emissive shininess specular add createImage beginCamera camera endCamera frustum ' +\n 'ortho perspective printCamera printProjection cursor frameRate noCursor exit loop noLoop popStyle ' +\n 'pushStyle redraw binary boolean byte char float hex int str unbinary unhex join match matchAll nf ' +\n 'nfc nfp nfs split splitTokens trim append arrayCopy concat expand reverse shorten sort splice subset ' +\n 'box sphere sphereDetail createInput createReader loadBytes loadJSONArray loadJSONObject loadStrings ' +\n 'loadTable loadXML open parseXML saveTable selectFolder selectInput beginRaw beginRecord createOutput ' +\n 'createWriter endRaw endRecord PrintWritersaveBytes saveJSONArray saveJSONObject saveStream saveStrings ' +\n 'saveXML selectOutput popMatrix printMatrix pushMatrix resetMatrix rotate rotateX rotateY rotateZ scale ' +\n 'shearX shearY translate ambientLight directionalLight lightFalloff lights lightSpecular noLights normal ' +\n 'pointLight spotLight image imageMode loadImage noTint requestImage tint texture textureMode textureWrap ' +\n 'blend copy filter get loadPixels set updatePixels blendMode loadShader PShaderresetShader shader createFont ' +\n 'loadFont text textFont textAlign textLeading textMode textSize textWidth textAscent textDescent abs ceil ' +\n 'constrain dist exp floor lerp log mag map max min norm pow round sq sqrt acos asin atan atan2 cos degrees ' +\n 'radians sin tan noise noiseDetail noiseSeed random randomGaussian randomSeed'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n contains: [\n hljs.C_NUMBER_MODE,\n {\n begin: '[a-zA-Z_][\\\\da-zA-Z_]+\\\\.[\\\\da-zA-Z_]{1,3}', end: ':',\n excludeEnd: true\n },\n {\n begin: '(ncalls|tottime|cumtime)', end: '$',\n keywords: 'ncalls tottime|10 cumtime|10 filename',\n relevance: 10\n },\n {\n begin: 'function calls', end: '$',\n contains: [hljs.C_NUMBER_MODE],\n relevance: 10\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\\\(', end: '\\\\)$',\n excludeBegin: true, excludeEnd: true,\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n\n var ATOM = {\n\n begin: /[a-z][A-Za-z0-9_]*/,\n relevance: 0\n };\n\n var VAR = {\n\n className: 'symbol',\n variants: [\n {begin: /[A-Z][a-zA-Z0-9_]*/},\n {begin: /_[A-Za-z0-9_]*/},\n ],\n relevance: 0\n };\n\n var PARENTED = {\n\n begin: /\\(/,\n end: /\\)/,\n relevance: 0\n };\n\n var LIST = {\n\n begin: /\\[/,\n end: /\\]/\n };\n\n var LINE_COMMENT = {\n\n className: 'comment',\n begin: /%/, end: /$/,\n contains: [hljs.PHRASAL_WORDS_MODE]\n };\n\n var BACKTICK_STRING = {\n\n className: 'string',\n begin: /`/, end: /`/,\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n\n var CHAR_CODE = {\n\n className: 'string', // 0'a etc.\n begin: /0\\'(\\\\\\'|.)/\n };\n\n var SPACE_CODE = {\n\n className: 'string',\n begin: /0\\'\\\\s/ // 0'\\s\n };\n\n var PRED_OP = { // relevance booster\n begin: /:-/\n };\n\n var inner = [\n\n ATOM,\n VAR,\n PARENTED,\n PRED_OP,\n LIST,\n LINE_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n BACKTICK_STRING,\n CHAR_CODE,\n SPACE_CODE,\n hljs.C_NUMBER_MODE\n ];\n\n PARENTED.contains = inner;\n LIST.contains = inner;\n\n return {\n contains: inner.concat([\n {begin: /\\.$/} // relevance booster\n ])\n };\n};","module.exports = function(hljs) {\n\n // whitespaces: space, tab, formfeed\n var WS0 = '[ \\\\t\\\\f]*';\n var WS1 = '[ \\\\t\\\\f]+';\n // delimiter\n var DELIM = '(' + WS0+'[:=]'+WS0+ '|' + WS1 + ')';\n var KEY_ALPHANUM = '([^\\\\\\\\\\\\W:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+';\n var KEY_OTHER = '([^\\\\\\\\:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+';\n\n var DELIM_AND_VALUE = {\n // skip DELIM\n end: DELIM,\n relevance: 0,\n starts: {\n // value: everything until end of line (again, taking into account backslashes)\n className: 'string',\n end: /$/,\n relevance: 0,\n contains: [\n { begin: '\\\\\\\\\\\\n' }\n ]\n }\n };\n\n return {\n case_insensitive: true,\n illegal: /\\S/,\n contains: [\n hljs.COMMENT('^\\\\s*[!#]', '$'),\n // key: everything until whitespace or = or : (taking into account backslashes)\n // case of a \"normal\" key\n {\n begin: KEY_ALPHANUM + DELIM,\n returnBegin: true,\n contains: [\n {\n className: 'attr',\n begin: KEY_ALPHANUM,\n endsParent: true,\n relevance: 0\n }\n ],\n starts: DELIM_AND_VALUE\n },\n // case of key containing non-alphanumeric chars => relevance = 0\n {\n begin: KEY_OTHER + DELIM,\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'meta',\n begin: KEY_OTHER,\n endsParent: true,\n relevance: 0\n }\n ],\n starts: DELIM_AND_VALUE\n },\n // case of an empty key\n {\n className: 'attr',\n relevance: 0,\n begin: KEY_OTHER + WS0 + '$'\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword: 'package import option optional required repeated group oneof',\n built_in: 'double float int32 int64 uint32 uint64 sint32 sint64 ' +\n 'fixed32 fixed64 sfixed32 sfixed64 bool string bytes',\n literal: 'true false'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'message enum service', end: /\\{/,\n illegal: /\\n/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\n })\n ]\n },\n {\n className: 'function',\n beginKeywords: 'rpc',\n end: /;/, excludeEnd: true,\n keywords: 'rpc returns'\n },\n {\n begin: /^\\s*[A-Z_]+/,\n end: /\\s*=/, excludeEnd: true\n }\n ]\n };\n};","module.exports = function(hljs) {\n\n var PUPPET_KEYWORDS = {\n keyword:\n /* language keywords */\n 'and case default else elsif false if in import enherits node or true undef unless main settings $string ',\n literal:\n /* metaparameters */\n 'alias audit before loglevel noop require subscribe tag ' +\n /* normal attributes */\n 'owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check ' +\n 'en_address ip_address realname command environment hour monute month monthday special target weekday '+\n 'creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore ' +\n 'links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source ' +\n 'souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid '+\n 'ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel ' +\n 'native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options ' +\n 'device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use ' +\n 'message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform ' +\n 'responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running ' +\n 'start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age ' +\n 'password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled ' +\n 'enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist ' +\n 'priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey ' +\n 'sslverify mounted',\n built_in:\n /* core facts */\n 'architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers ' +\n 'domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces '+\n 'ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion ' +\n 'kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease ' +\n 'lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major ' +\n 'macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease '+\n 'operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion '+\n 'rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced '+\n 'selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime '+\n 'uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version'\n };\n\n var COMMENT = hljs.COMMENT('#', '$');\n\n var IDENT_RE = '([A-Za-z_]|::)(\\\\w|::)*';\n\n var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: IDENT_RE});\n\n var VARIABLE = {className: 'variable', begin: '\\\\$' + IDENT_RE};\n\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, VARIABLE],\n variants: [\n {begin: /'/, end: /'/},\n {begin: /\"/, end: /\"/}\n ]\n };\n\n return {\n aliases: ['pp'],\n contains: [\n COMMENT,\n VARIABLE,\n STRING,\n {\n beginKeywords: 'class', end: '\\\\{|;',\n illegal: /=/,\n contains: [TITLE, COMMENT]\n },\n {\n beginKeywords: 'define', end: /\\{/,\n contains: [\n {\n className: 'section', begin: hljs.IDENT_RE, endsParent: true\n }\n ]\n },\n {\n begin: hljs.IDENT_RE + '\\\\s+\\\\{', returnBegin: true,\n end: /\\S/,\n contains: [\n {\n className: 'keyword',\n begin: hljs.IDENT_RE\n },\n {\n begin: /\\{/, end: /\\}/,\n keywords: PUPPET_KEYWORDS,\n relevance: 0,\n contains: [\n STRING,\n COMMENT,\n {\n begin:'[a-zA-Z_]+\\\\s*=>',\n returnBegin: true, end: '=>',\n contains: [\n {\n className: 'attr',\n begin: hljs.IDENT_RE,\n }\n ]\n },\n {\n className: 'number',\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n relevance: 0\n },\n VARIABLE\n ]\n }\n ],\n relevance: 0\n }\n ]\n }\n};","module.exports = // Base deafult colors in PB IDE: background: #FFFFDF; foreground: #000000;\n\nfunction(hljs) {\n var STRINGS = { // PB IDE color: #0080FF (Azure Radiance)\n className: 'string',\n begin: '(~)?\"', end: '\"',\n illegal: '\\\\n'\n };\n var CONSTANTS = { // PB IDE color: #924B72 (Cannon Pink)\n // \"#\" + a letter or underscore + letters, digits or underscores + (optional) \"$\"\n className: 'symbol',\n begin: '#[a-zA-Z_]\\\\w*\\\\$?'\n };\n\n return {\n aliases: ['pb', 'pbi'],\n keywords: // PB IDE color: #006666 (Blue Stone) + Bold\n // The following keywords list was taken and adapted from GuShH's PureBasic language file for GeSHi...\n 'And As Break CallDebugger Case CompilerCase CompilerDefault CompilerElse CompilerEndIf CompilerEndSelect ' +\n 'CompilerError CompilerIf CompilerSelect Continue Data DataSection EndDataSection Debug DebugLevel ' +\n 'Default Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM ' +\n 'EnableDebugger EnableExplicit End EndEnumeration EndIf EndImport EndInterface EndMacro EndProcedure ' +\n 'EndSelect EndStructure EndStructureUnion EndWith Enumeration Extends FakeReturn For Next ForEach ' +\n 'ForEver Global Gosub Goto If Import ImportC IncludeBinary IncludeFile IncludePath Interface Macro ' +\n 'NewList Not Or ProcedureReturn Protected Prototype ' +\n 'PrototypeC Read ReDim Repeat Until Restore Return Select Shared Static Step Structure StructureUnion ' +\n 'Swap To Wend While With XIncludeFile XOr ' +\n 'Procedure ProcedureC ProcedureCDLL ProcedureDLL Declare DeclareC DeclareCDLL DeclareDLL',\n contains: [\n // COMMENTS | PB IDE color: #00AAAA (Persian Green)\n hljs.COMMENT(';', '$', {relevance: 0}),\n\n { // PROCEDURES DEFINITIONS\n className: 'function',\n begin: '\\\\b(Procedure|Declare)(C|CDLL|DLL)?\\\\b',\n end: '\\\\(',\n excludeEnd: true,\n returnBegin: true,\n contains: [\n { // PROCEDURE KEYWORDS | PB IDE color: #006666 (Blue Stone) + Bold\n className: 'keyword',\n begin: '(Procedure|Declare)(C|CDLL|DLL)?',\n excludeEnd: true\n },\n { // PROCEDURE RETURN TYPE SETTING | PB IDE color: #000000 (Black)\n className: 'type',\n begin: '\\\\.\\\\w*'\n // end: ' ',\n },\n hljs.UNDERSCORE_TITLE_MODE // PROCEDURE NAME | PB IDE color: #006666 (Blue Stone)\n ]\n },\n STRINGS,\n CONSTANTS\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'and elif is global as in if from raise for except finally print import pass return ' +\n 'exec else break not with class assert yield try while continue del or def lambda ' +\n 'async await nonlocal|10 None True False',\n built_in:\n 'Ellipsis NotImplemented'\n };\n var PROMPT = {\n className: 'meta', begin: /^(>>>|\\.\\.\\.) /\n };\n var SUBST = {\n className: 'subst',\n begin: /\\{/, end: /\\}/,\n keywords: KEYWORDS,\n illegal: /#/\n };\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {\n begin: /(u|b)?r?'''/, end: /'''/,\n contains: [hljs.BACKSLASH_ESCAPE, PROMPT],\n relevance: 10\n },\n {\n begin: /(u|b)?r?\"\"\"/, end: /\"\"\"/,\n contains: [hljs.BACKSLASH_ESCAPE, PROMPT],\n relevance: 10\n },\n {\n begin: /(fr|rf|f)'''/, end: /'''/,\n contains: [hljs.BACKSLASH_ESCAPE, PROMPT, SUBST]\n },\n {\n begin: /(fr|rf|f)\"\"\"/, end: /\"\"\"/,\n contains: [hljs.BACKSLASH_ESCAPE, PROMPT, SUBST]\n },\n {\n begin: /(u|r|ur)'/, end: /'/,\n relevance: 10\n },\n {\n begin: /(u|r|ur)\"/, end: /\"/,\n relevance: 10\n },\n {\n begin: /(b|br)'/, end: /'/\n },\n {\n begin: /(b|br)\"/, end: /\"/\n },\n {\n begin: /(fr|rf|f)'/, end: /'/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n {\n begin: /(fr|rf|f)\"/, end: /\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n var NUMBER = {\n className: 'number', relevance: 0,\n variants: [\n {begin: hljs.BINARY_NUMBER_RE + '[lLjJ]?'},\n {begin: '\\\\b(0o[0-7]+)[lLjJ]?'},\n {begin: hljs.C_NUMBER_RE + '[lLjJ]?'}\n ]\n };\n var PARAMS = {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n contains: ['self', PROMPT, NUMBER, STRING]\n };\n SUBST.contains = [STRING, NUMBER, PROMPT];\n return {\n aliases: ['py', 'gyp'],\n keywords: KEYWORDS,\n illegal: /(<\\/|->|\\?)|=>/,\n contains: [\n PROMPT,\n NUMBER,\n STRING,\n hljs.HASH_COMMENT_MODE,\n {\n variants: [\n {className: 'function', beginKeywords: 'def'},\n {className: 'class', beginKeywords: 'class'}\n ],\n end: /:/,\n illegal: /[${=;\\n,]/,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n PARAMS,\n {\n begin: /->/, endsWithParent: true,\n keywords: 'None'\n }\n ]\n },\n {\n className: 'meta',\n begin: /^[\\t ]*@/, end: /$/\n },\n {\n begin: /\\b(print|exec)\\(/ // don’t highlight keywords-turned-functions in Python 3\n }\n ]\n };\n};","module.exports = function(hljs) {\n var Q_KEYWORDS = {\n keyword:\n 'do while select delete by update from',\n literal:\n '0b 1b',\n built_in:\n 'neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum',\n type:\n '`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid'\n };\n return {\n aliases:['k', 'kdb'],\n keywords: Q_KEYWORDS,\n lexemes: /(`?)[A-Za-z0-9_]+\\b/,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'in of on if for while finally var new function do return void else break catch ' +\n 'instanceof with throw case default try this switch continue typeof delete ' +\n 'let yield const export super debugger as async await import',\n literal:\n 'true false null undefined NaN Infinity',\n built_in:\n 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\n 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\n 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\n 'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\n 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\n 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\n 'module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect ' +\n 'Behavior bool color coordinate date double enumeration font geocircle georectangle ' +\n 'geoshape int list matrix4x4 parent point quaternion real rect ' +\n 'size string url variant vector2d vector3d vector4d' +\n 'Promise'\n };\n\n var QML_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9\\\\._]*';\n\n // Isolate property statements. Ends at a :, =, ;, ,, a comment or end of line.\n // Use property class.\n var PROPERTY = {\n className: 'keyword',\n begin: '\\\\bproperty\\\\b',\n starts: {\n className: 'string',\n end: '(:|=|;|,|//|/\\\\*|$)',\n returnEnd: true\n }\n };\n\n // Isolate signal statements. Ends at a ) a comment or end of line.\n // Use property class.\n var SIGNAL = {\n className: 'keyword',\n begin: '\\\\bsignal\\\\b',\n starts: {\n className: 'string',\n end: '(\\\\(|:|=|;|,|//|/\\\\*|$)',\n returnEnd: true\n }\n };\n\n // id: is special in QML. When we see id: we want to mark the id: as attribute and\n // emphasize the token following.\n var ID_ID = {\n className: 'attribute',\n begin: '\\\\bid\\\\s*:',\n starts: {\n className: 'string',\n end: QML_IDENT_RE,\n returnEnd: false\n }\n };\n\n // Find QML object attribute. An attribute is a QML identifier followed by :.\n // Unfortunately it's hard to know where it ends, as it may contain scalars,\n // objects, object definitions, or javascript. The true end is either when the parent\n // ends or the next attribute is detected.\n var QML_ATTRIBUTE = {\n begin: QML_IDENT_RE + '\\\\s*:',\n returnBegin: true,\n contains: [\n {\n className: 'attribute',\n begin: QML_IDENT_RE,\n end: '\\\\s*:',\n excludeEnd: true,\n relevance: 0\n }\n ],\n relevance: 0\n };\n\n // Find QML object. A QML object is a QML identifier followed by { and ends at the matching }.\n // All we really care about is finding IDENT followed by { and just mark up the IDENT and ignore the {.\n var QML_OBJECT = {\n begin: QML_IDENT_RE + '\\\\s*{', end: '{',\n returnBegin: true,\n relevance: 0,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: QML_IDENT_RE})\n ]\n };\n\n return {\n aliases: ['qt'],\n case_insensitive: false,\n keywords: KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n { // template string\n className: 'string',\n begin: '`', end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {\n className: 'subst',\n begin: '\\\\$\\\\{', end: '\\\\}'\n }\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'number',\n variants: [\n { begin: '\\\\b(0[bB][01]+)' },\n { begin: '\\\\b(0[oO][0-7]+)' },\n { begin: hljs.C_NUMBER_RE }\n ],\n relevance: 0\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.REGEXP_MODE,\n { // E4X / JSX\n begin: /</, end: />\\s*[);\\]]/,\n relevance: 0,\n subLanguage: 'xml'\n }\n ],\n relevance: 0\n },\n SIGNAL,\n PROPERTY,\n {\n className: 'function',\n beginKeywords: 'function', end: /\\{/, excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: /[A-Za-z$_][0-9A-Za-z$_]*/}),\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n }\n ],\n illegal: /\\[|%/\n },\n {\n begin: '\\\\.' + hljs.IDENT_RE, relevance: 0 // hack: prevents detection of keywords after dots\n },\n ID_ID,\n QML_ATTRIBUTE,\n QML_OBJECT\n ],\n illegal: /#/\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '([a-zA-Z]|\\\\.[a-zA-Z.])[a-zA-Z0-9._]*';\n\n return {\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n begin: IDENT_RE,\n lexemes: IDENT_RE,\n keywords: {\n keyword:\n 'function if in break next repeat else for return switch while try tryCatch ' +\n 'stop warning require library attach detach source setMethod setGeneric ' +\n 'setGroupGeneric setClass ...',\n literal:\n 'NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 ' +\n 'NA_complex_|10'\n },\n relevance: 0\n },\n {\n // hex value\n className: 'number',\n begin: \"0[xX][0-9a-fA-F]+[Li]?\\\\b\",\n relevance: 0\n },\n {\n // explicit integer\n className: 'number',\n begin: \"\\\\d+(?:[eE][+\\\\-]?\\\\d*)?L\\\\b\",\n relevance: 0\n },\n {\n // number with trailing decimal\n className: 'number',\n begin: \"\\\\d+\\\\.(?!\\\\d)(?:i\\\\b)?\",\n relevance: 0\n },\n {\n // number\n className: 'number',\n begin: \"\\\\d+(?:\\\\.\\\\d*)?(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\n relevance: 0\n },\n {\n // number with leading decimal\n className: 'number',\n begin: \"\\\\.\\\\d+(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\n relevance: 0\n },\n\n {\n // escaped identifier\n begin: '`',\n end: '`',\n relevance: 0\n },\n\n {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {begin: '\"', end: '\"'},\n {begin: \"'\", end: \"'\"}\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n function orReValues(ops){\n return ops\n .map(function(op) {\n return op\n .split('')\n .map(function(char) {\n return '\\\\' + char;\n })\n .join('');\n })\n .join('|');\n }\n\n var RE_IDENT = '~?[a-z$_][0-9a-zA-Z$_]*';\n var RE_MODULE_IDENT = '`?[A-Z$_][0-9a-zA-Z$_]*';\n\n var RE_PARAM_TYPEPARAM = '\\'?[a-z$_][0-9a-z$_]*';\n var RE_PARAM_TYPE = '\\s*:\\s*[a-z$_][0-9a-z$_]*(\\(\\s*(' + RE_PARAM_TYPEPARAM + '\\s*(,' + RE_PARAM_TYPEPARAM + ')*)?\\s*\\))?';\n var RE_PARAM = RE_IDENT + '(' + RE_PARAM_TYPE + ')?(' + RE_PARAM_TYPE + ')?';\n var RE_OPERATOR = \"(\" + orReValues(['||', '&&', '++', '**', '+.', '*', '/', '*.', '/.', '...', '|>']) + \"|==|===)\";\n var RE_OPERATOR_SPACED = \"\\\\s+\" + RE_OPERATOR + \"\\\\s+\";\n\n var KEYWORDS = {\n keyword:\n 'and as asr assert begin class constraint do done downto else end exception external' +\n 'for fun function functor if in include inherit initializer' +\n 'land lazy let lor lsl lsr lxor match method mod module mutable new nonrec' +\n 'object of open or private rec sig struct then to try type val virtual when while with',\n built_in:\n 'array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ',\n literal:\n 'true false'\n };\n\n var RE_NUMBER = '\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|' +\n '0[oO][0-7_]+[Lln]?|' +\n '0[bB][01_]+[Lln]?|' +\n '[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)';\n\n var NUMBER_MODE = {\n className: 'number',\n relevance: 0,\n variants: [\n {\n begin: RE_NUMBER\n },\n {\n begin: '\\\\(\\\\-' + RE_NUMBER + '\\\\)'\n }\n ]\n };\n\n var OPERATOR_MODE = {\n className: 'operator',\n relevance: 0,\n begin: RE_OPERATOR\n };\n var LIST_CONTENTS_MODES = [\n {\n className: 'identifier',\n relevance: 0,\n begin: RE_IDENT\n },\n OPERATOR_MODE,\n NUMBER_MODE\n ];\n\n var MODULE_ACCESS_CONTENTS = [\n hljs.QUOTE_STRING_MODE,\n OPERATOR_MODE,\n {\n className: 'module',\n begin: \"\\\\b\" + RE_MODULE_IDENT, returnBegin: true,\n end: \"\\.\",\n contains: [\n {\n className: 'identifier',\n begin: RE_MODULE_IDENT,\n relevance: 0\n }\n ]\n }\n ];\n\n var PARAMS_CONTENTS = [\n {\n className: 'module',\n begin: \"\\\\b\" + RE_MODULE_IDENT, returnBegin: true,\n end: \"\\.\",\n relevance: 0,\n contains: [\n {\n className: 'identifier',\n begin: RE_MODULE_IDENT,\n relevance: 0\n }\n ]\n }\n ];\n\n var PARAMS_MODE = {\n begin: RE_IDENT,\n end: '(,|\\\\n|\\\\))',\n relevance: 0,\n contains: [\n OPERATOR_MODE,\n {\n className: 'typing',\n begin: ':',\n end: '(,|\\\\n)',\n returnBegin: true,\n relevance: 0,\n contains: PARAMS_CONTENTS\n }\n ]\n };\n\n var FUNCTION_BLOCK_MODE = {\n className: 'function',\n relevance: 0,\n keywords: KEYWORDS,\n variants: [\n {\n begin: '\\\\s(\\\\(\\\\.?.*?\\\\)|' + RE_IDENT + ')\\\\s*=>',\n end: '\\\\s*=>',\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: RE_IDENT\n },\n {\n begin: RE_PARAM\n },\n {\n begin: /\\(\\s*\\)/,\n }\n ]\n }\n ]\n },\n {\n begin: '\\\\s\\\\(\\\\.?[^;\\\\|]*\\\\)\\\\s*=>',\n end: '\\\\s=>',\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'params',\n relevance: 0,\n variants: [\n PARAMS_MODE\n ]\n }\n ]\n },\n {\n begin: '\\\\(\\\\.\\\\s' + RE_IDENT + '\\\\)\\\\s*=>'\n }\n ]\n };\n MODULE_ACCESS_CONTENTS.push(FUNCTION_BLOCK_MODE);\n\n var CONSTRUCTOR_MODE = {\n className: 'constructor',\n begin: RE_MODULE_IDENT + '\\\\(',\n end: '\\\\)',\n illegal: '\\\\n',\n keywords: KEYWORDS,\n contains: [\n hljs.QUOTE_STRING_MODE,\n OPERATOR_MODE,\n {\n className: 'params',\n begin: '\\\\b' + RE_IDENT\n }\n ]\n };\n\n var PATTERN_MATCH_BLOCK_MODE = {\n className: 'pattern-match',\n begin: '\\\\|',\n returnBegin: true,\n keywords: KEYWORDS,\n end: '=>',\n relevance: 0,\n contains: [\n CONSTRUCTOR_MODE,\n OPERATOR_MODE,\n {\n relevance: 0,\n className: 'constructor',\n begin: RE_MODULE_IDENT\n }\n ]\n };\n\n var MODULE_ACCESS_MODE = {\n className: 'module-access',\n keywords: KEYWORDS,\n returnBegin: true,\n variants: [\n {\n begin: \"\\\\b(\" + RE_MODULE_IDENT + \"\\\\.)+\" + RE_IDENT\n },\n {\n begin: \"\\\\b(\" + RE_MODULE_IDENT + \"\\\\.)+\\\\(\",\n end: \"\\\\)\",\n returnBegin: true,\n contains: [\n FUNCTION_BLOCK_MODE,\n {\n begin: '\\\\(',\n end: '\\\\)',\n skip: true\n }\n ].concat(MODULE_ACCESS_CONTENTS)\n },\n {\n begin: \"\\\\b(\" + RE_MODULE_IDENT + \"\\\\.)+{\",\n end: \"}\"\n }\n ],\n contains: MODULE_ACCESS_CONTENTS\n };\n\n PARAMS_CONTENTS.push(MODULE_ACCESS_MODE);\n\n return {\n aliases: ['re'],\n keywords: KEYWORDS,\n illegal: '(:\\\\-|:=|\\\\${|\\\\+=)',\n contains: [\n hljs.COMMENT('/\\\\*', '\\\\*/', { illegal: '^(\\\\#,\\\\/\\\\/)' }),\n {\n className: 'character',\n begin: '\\'(\\\\\\\\[^\\']+|[^\\'])\\'',\n illegal: '\\\\n',\n relevance: 0\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'literal',\n begin: '\\\\(\\\\)',\n relevance: 0\n },\n {\n className: 'literal',\n begin: '\\\\[\\\\|',\n end: '\\\\|\\\\]',\n relevance: 0,\n contains: LIST_CONTENTS_MODES\n },\n {\n className: 'literal',\n begin: '\\\\[',\n end: '\\\\]',\n relevance: 0,\n contains: LIST_CONTENTS_MODES\n },\n CONSTRUCTOR_MODE,\n {\n className: 'operator',\n begin: RE_OPERATOR_SPACED,\n illegal: '\\\\-\\\\->',\n relevance: 0\n },\n NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n PATTERN_MATCH_BLOCK_MODE,\n FUNCTION_BLOCK_MODE,\n {\n className: 'module-def',\n begin: \"\\\\bmodule\\\\s+\" + RE_IDENT + \"\\\\s+\" + RE_MODULE_IDENT + \"\\\\s+=\\\\s+{\",\n end: \"}\",\n returnBegin: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n {\n className: 'module',\n relevance: 0,\n begin: RE_MODULE_IDENT\n },\n {\n begin: '{',\n end: '}',\n skip: true\n }\n ].concat(MODULE_ACCESS_CONTENTS)\n },\n MODULE_ACCESS_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords:\n 'ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis ' +\n 'Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone ' +\n 'CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail ' +\n 'DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format ' +\n 'FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry ' +\n 'Hider Hyperboloid Identity Illuminate Imager Interior LightSource ' +\n 'MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte ' +\n 'MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option ' +\n 'Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples ' +\n 'PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection ' +\n 'Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ' +\n 'ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere ' +\n 'SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd ' +\n 'TransformPoints Translate TrimCurve WorldBegin WorldEnd',\n illegal: '</',\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var IDENTIFIER = '[a-zA-Z-_][^\\\\n{]+\\\\{';\n\n var PROPERTY = {\n className: 'attribute',\n begin: /[a-zA-Z-_]+/, end: /\\s*:/, excludeEnd: true,\n starts: {\n end: ';',\n relevance: 0,\n contains: [\n {\n className: 'variable',\n begin: /\\.[a-zA-Z-_]+/\n },\n {\n className: 'keyword',\n begin: /\\(optional\\)/\n }\n ]\n }\n };\n\n return {\n aliases: ['graph', 'instances'],\n case_insensitive: true,\n keywords: 'import',\n contains: [\n // Facet sections\n {\n begin: '^facet ' + IDENTIFIER,\n end: '}',\n keywords: 'facet',\n contains: [\n PROPERTY,\n hljs.HASH_COMMENT_MODE\n ]\n },\n\n // Instance sections\n {\n begin: '^\\\\s*instance of ' + IDENTIFIER,\n end: '}',\n keywords: 'name count channels instance-data instance-state instance of',\n illegal: /\\S/,\n contains: [\n 'self',\n PROPERTY,\n hljs.HASH_COMMENT_MODE\n ]\n },\n\n // Component sections\n {\n begin: '^' + IDENTIFIER,\n end: '}',\n contains: [\n PROPERTY,\n hljs.HASH_COMMENT_MODE\n ]\n },\n\n // Comments\n hljs.HASH_COMMENT_MODE\n ]\n };\n};","module.exports = // Colors from RouterOS terminal:\n// green - #0E9A00\n// teal - #0C9A9A\n// purple - #99069A\n// light-brown - #9A9900\n\nfunction(hljs) {\n\n var STATEMENTS = 'foreach do while for if from to step else on-error and or not in';\n\n // Global commands: Every global command should start with \":\" token, otherwise it will be treated as variable.\n var GLOBAL_COMMANDS = 'global local beep delay put len typeof pick log time set find environment terminal error execute parse resolve toarray tobool toid toip toip6 tonum tostr totime';\n\n // Common commands: Following commands available from most sub-menus:\n var COMMON_COMMANDS = 'add remove enable disable set get print export edit find run debug error info warning';\n\n var LITERALS = 'true false yes no nothing nil null';\n\n var OBJECTS = 'traffic-flow traffic-generator firewall scheduler aaa accounting address-list address align area bandwidth-server bfd bgp bridge client clock community config connection console customer default dhcp-client dhcp-server discovery dns e-mail ethernet filter firewall firmware gps graphing group hardware health hotspot identity igmp-proxy incoming instance interface ip ipsec ipv6 irq l2tp-server lcd ldp logging mac-server mac-winbox mangle manual mirror mme mpls nat nd neighbor network note ntp ospf ospf-v3 ovpn-server page peer pim ping policy pool port ppp pppoe-client pptp-server prefix profile proposal proxy queue radius resource rip ripng route routing screen script security-profiles server service service-port settings shares smb sms sniffer snmp snooper socks sstp-server system tool tracking type upgrade upnp user-manager users user vlan secret vrrp watchdog web-access wireless pptp pppoe lan wan layer7-protocol lease simple raw';\n\n // print parameters\n // Several parameters are available for print command:\n // ToDo: var PARAMETERS_PRINT = 'append as-value brief detail count-only file follow follow-only from interval terse value-list without-paging where info';\n // ToDo: var OPERATORS = '&& and ! not || or in ~ ^ & << >> + - * /';\n // ToDo: var TYPES = 'num number bool boolean str string ip ip6-prefix id time array';\n // ToDo: The following tokens serve as delimiters in the grammar: () [] {} : ; $ / \n\n var VAR_PREFIX = 'global local set for foreach';\n\n var VAR = {\n className: 'variable',\n variants: [\n {begin: /\\$[\\w\\d#@][\\w\\d_]*/},\n {begin: /\\$\\{(.*?)}/}\n ]\n };\n \n var QUOTE_STRING = {\n className: 'string',\n begin: /\"/, end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR,\n {\n className: 'variable',\n begin: /\\$\\(/, end: /\\)/,\n contains: [hljs.BACKSLASH_ESCAPE]\n }\n ]\n };\n \n var APOS_STRING = {\n className: 'string',\n begin: /'/, end: /'/\n };\n \n var IPADDR = '((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\b';\n var IPADDR_wBITMASK = IPADDR+'/(3[0-2]|[1-2][0-9]|\\\\d)';\n //////////////////////////////////////////////////////////////////////\n return {\n aliases: ['routeros', 'mikrotik'],\n case_insensitive: true,\n lexemes: /:?[\\w-]+/,\n keywords: {\n literal: LITERALS,\n keyword: STATEMENTS + ' :' + STATEMENTS.split(' ').join(' :') + ' :' + GLOBAL_COMMANDS.split(' ').join(' :'),\n },\n contains: [\n { // недопустимые конструкции\n variants: [\n { begin: /^@/, end: /$/, }, // dns\n { begin: /\\/\\*/, end: /\\*\\//, }, // -- comment\n { begin: /%%/, end: /$/, }, // -- comment\n { begin: /^'/, end: /$/, }, // Monkey one line comment\n { begin: /^\\s*\\/[\\w-]+=/, end: /$/, }, // jboss-cli\n { begin: /\\/\\//, end: /$/, }, // Stan comment\n { begin: /^\\[\\</, end: /\\>\\]$/, }, // F# class declaration?\n { begin: /<\\//, end: />/, }, // HTML tags\n { begin: /^facet /, end: /\\}/, }, // roboconf - лютый костыль )))\n { begin: '^1\\\\.\\\\.(\\\\d+)$', end: /$/, }, // tap \n ],\n illegal: /./,\n },\n hljs.COMMENT('^#', '$'),\n QUOTE_STRING,\n APOS_STRING,\n VAR,\n { // attribute=value\n begin: /[\\w-]+\\=([^\\s\\{\\}\\[\\]\\(\\)]+)/, \n relevance: 0,\n returnBegin: true,\n contains: [\n {\n className: 'attribute',\n begin: /[^=]+/\n },\n {\n begin: /=/, \n endsWithParent: true,\n relevance: 0,\n contains: [\n QUOTE_STRING,\n APOS_STRING,\n VAR,\n {\n className: 'literal',\n begin: '\\\\b(' + LITERALS.split(' ').join('|') + ')\\\\b',\n },\n /*{\n // IPv4 addresses and subnets\n className: 'number',\n variants: [\n {begin: IPADDR_wBITMASK+'(,'+IPADDR_wBITMASK+')*'}, //192.168.0.0/24,1.2.3.0/24\n {begin: IPADDR+'-'+IPADDR}, // 192.168.0.1-192.168.0.3\n {begin: IPADDR+'(,'+IPADDR+')*'}, // 192.168.0.1,192.168.0.34,192.168.24.1,192.168.0.1\n ]\n }, // */\n /*{\n // MAC addresses and DHCP Client IDs\n className: 'number',\n begin: /\\b(1:)?([0-9A-Fa-f]{1,2}[:-]){5}([0-9A-Fa-f]){1,2}\\b/,\n }, //*/\n {\n // Не форматировать не классифицированные значения. Необходимо для исключения подсветки значений как built_in.\n // className: 'number', \n begin: /(\"[^\"]*\"|[^\\s\\{\\}\\[\\]]+)/,\n }, //*/\n ]\n } //*/\n ]\n },//*/\n {\n // HEX values\n className: 'number',\n begin: /\\*[0-9a-fA-F]+/,\n }, //*/\n\n { \n begin: '\\\\b(' + COMMON_COMMANDS.split(' ').join('|') + ')([\\\\s\\[\\(]|\\])',\n returnBegin: true,\n contains: [\n {\n className: 'builtin-name', //'function',\n begin: /\\w+/,\n },\n ], \n },\n \n { \n className: 'built_in',\n variants: [\n {begin: '(\\\\.\\\\./|/|\\\\s)((' + OBJECTS.split(' ').join('|') + ');?\\\\s)+',relevance: 10,},\n {begin: /\\.\\./,},\n ],\n },//*/\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword:\n 'float color point normal vector matrix while for if do return else break extern continue',\n built_in:\n 'abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise ' +\n 'clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp ' +\n 'faceforward filterstep floor format fresnel incident length lightsource log match ' +\n 'max min mod noise normalize ntransform opposite option phong pnoise pow printf ' +\n 'ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp ' +\n 'setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan ' +\n 'texture textureinfo trace transform vtransform xcomp ycomp zcomp'\n },\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '#', end: '$'\n },\n {\n className: 'class',\n beginKeywords: 'surface displacement light volume imager', end: '\\\\('\n },\n {\n beginKeywords: 'illuminate illuminance gather', end: '\\\\('\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword: 'BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE ' +\n 'INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 ' +\n 'INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 ' +\n 'INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 ' +\n 'INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 ' +\n 'INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 ' +\n 'INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 ' +\n 'INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 ' +\n 'INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 ' +\n 'INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 ' +\n 'INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 ' +\n 'INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 ' +\n 'INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 ' +\n 'INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 ' +\n 'INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 ' +\n 'MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER ' +\n 'OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE ' +\n 'NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH ' +\n 'IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND ' +\n 'UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ' +\n 'ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE ' +\n 'GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE ' +\n 'SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING ' +\n 'DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF ' +\n 'MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY ' +\n 'YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE ' +\n 'COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR ' +\n 'READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ' +\n 'ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE ' +\n 'EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE ' +\n 'SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL ' +\n 'COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN ' +\n 'MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING ' +\n 'FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM ' +\n 'NUMDAYS READ_DATE STAGING',\n built_in: 'IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML ' +\n 'DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT ' +\n 'DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE ' +\n 'DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT ' +\n 'DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'literal',\n variants: [\n {begin: '#\\\\s+[a-zA-Z\\\\ \\\\.]*', relevance: 0}, // looks like #-comment\n {begin: '#[a-zA-Z\\\\ \\\\.]+'}\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var NUM_SUFFIX = '([ui](8|16|32|64|128|size)|f(32|64))\\?';\n var KEYWORDS =\n 'alignof as be box break const continue crate do else enum extern ' +\n 'false fn for if impl in let loop match mod mut offsetof once priv ' +\n 'proc pub pure ref return self Self sizeof static struct super trait true ' +\n 'type typeof unsafe unsized use virtual while where yield move default';\n var BUILTINS =\n // functions\n 'drop ' +\n // types\n 'i8 i16 i32 i64 i128 isize ' +\n 'u8 u16 u32 u64 u128 usize ' +\n 'f32 f64 ' +\n 'str char bool ' +\n 'Box Option Result String Vec ' +\n // traits\n 'Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug ' +\n 'PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator ' +\n 'Extend IntoIterator DoubleEndedIterator ExactSizeIterator ' +\n 'SliceConcatExt ToString ' +\n // macros\n 'assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! ' +\n 'debug_assert! debug_assert_eq! env! panic! file! format! format_args! ' +\n 'include_bin! include_str! line! local_data_key! module_path! ' +\n 'option_env! print! println! select! stringify! try! unimplemented! ' +\n 'unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!';\n return {\n aliases: ['rs'],\n keywords: {\n keyword:\n KEYWORDS,\n literal:\n 'true false Some None Ok Err',\n built_in:\n BUILTINS\n },\n lexemes: hljs.IDENT_RE + '!?',\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT('/\\\\*', '\\\\*/', {contains: ['self']}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {begin: /b?\"/, illegal: null}),\n {\n className: 'string',\n variants: [\n { begin: /r(#*)\"(.|\\n)*?\"\\1(?!#)/ },\n { begin: /b?'\\\\?(x\\w{2}|u\\w{4}|U\\w{8}|.)'/ }\n ]\n },\n {\n className: 'symbol',\n begin: /'[a-zA-Z_][a-zA-Z0-9_]*/\n },\n {\n className: 'number',\n variants: [\n { begin: '\\\\b0b([01_]+)' + NUM_SUFFIX },\n { begin: '\\\\b0o([0-7_]+)' + NUM_SUFFIX },\n { begin: '\\\\b0x([A-Fa-f0-9_]+)' + NUM_SUFFIX },\n { begin: '\\\\b(\\\\d[\\\\d_]*(\\\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)' +\n NUM_SUFFIX\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n beginKeywords: 'fn', end: '(\\\\(|<)', excludeEnd: true,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n className: 'meta',\n begin: '#\\\\!?\\\\[', end: '\\\\]',\n contains: [\n {\n className: 'meta-string',\n begin: /\"/, end: /\"/\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'type', end: ';',\n contains: [\n hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, {endsParent: true})\n ],\n illegal: '\\\\S'\n },\n {\n className: 'class',\n beginKeywords: 'trait enum struct union', end: '{',\n contains: [\n hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, {endsParent: true})\n ],\n illegal: '[\\\\w\\\\d]'\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: {built_in: BUILTINS}\n },\n {\n begin: '->'\n }\n ]\n };\n};","module.exports = function(hljs) {\n\n // Data step and PROC SQL statements\n var SAS_KEYWORDS = ''+\n 'do if then else end until while '+\n ''+\n 'abort array attrib by call cards cards4 catname continue '+\n 'datalines datalines4 delete delim delimiter display dm drop '+\n 'endsas error file filename footnote format goto in infile '+\n 'informat input keep label leave length libname link list '+\n 'lostcard merge missing modify options output out page put '+\n 'redirect remove rename replace retain return select set skip '+\n 'startsas stop title update waitsas where window x systask '+\n ''+\n 'add and alter as cascade check create delete describe '+\n 'distinct drop foreign from group having index insert into in '+\n 'key like message modify msgtype not null on or order primary '+\n 'references reset restrict select set table unique update '+\n 'validate view where';\n\n // Built-in SAS functions\n var SAS_FUN = ''+\n 'abs|addr|airy|arcos|arsin|atan|attrc|attrn|band|'+\n 'betainv|blshift|bnot|bor|brshift|bxor|byte|cdf|ceil|'+\n 'cexist|cinv|close|cnonct|collate|compbl|compound|'+\n 'compress|cos|cosh|css|curobs|cv|daccdb|daccdbsl|'+\n 'daccsl|daccsyd|dacctab|dairy|date|datejul|datepart|'+\n 'datetime|day|dclose|depdb|depdbsl|depdbsl|depsl|'+\n 'depsl|depsyd|depsyd|deptab|deptab|dequote|dhms|dif|'+\n 'digamma|dim|dinfo|dnum|dopen|doptname|doptnum|dread|'+\n 'dropnote|dsname|erf|erfc|exist|exp|fappend|fclose|'+\n 'fcol|fdelete|fetch|fetchobs|fexist|fget|fileexist|'+\n 'filename|fileref|finfo|finv|fipname|fipnamel|'+\n 'fipstate|floor|fnonct|fnote|fopen|foptname|foptnum|'+\n 'fpoint|fpos|fput|fread|frewind|frlen|fsep|fuzz|'+\n 'fwrite|gaminv|gamma|getoption|getvarc|getvarn|hbound|'+\n 'hms|hosthelp|hour|ibessel|index|indexc|indexw|input|'+\n 'inputc|inputn|int|intck|intnx|intrr|irr|jbessel|'+\n 'juldate|kurtosis|lag|lbound|left|length|lgamma|'+\n 'libname|libref|log|log10|log2|logpdf|logpmf|logsdf|'+\n 'lowcase|max|mdy|mean|min|minute|mod|month|mopen|'+\n 'mort|n|netpv|nmiss|normal|note|npv|open|ordinal|'+\n 'pathname|pdf|peek|peekc|pmf|point|poisson|poke|'+\n 'probbeta|probbnml|probchi|probf|probgam|probhypr|'+\n 'probit|probnegb|probnorm|probt|put|putc|putn|qtr|'+\n 'quote|ranbin|rancau|ranexp|rangam|range|rank|rannor|'+\n 'ranpoi|rantbl|rantri|ranuni|repeat|resolve|reverse|'+\n 'rewind|right|round|saving|scan|sdf|second|sign|'+\n 'sin|sinh|skewness|soundex|spedis|sqrt|std|stderr|'+\n 'stfips|stname|stnamel|substr|sum|symget|sysget|'+\n 'sysmsg|sysprod|sysrc|system|tan|tanh|time|timepart|'+\n 'tinv|tnonct|today|translate|tranwrd|trigamma|'+\n 'trim|trimn|trunc|uniform|upcase|uss|var|varfmt|'+\n 'varinfmt|varlabel|varlen|varname|varnum|varray|'+\n 'varrayx|vartype|verify|vformat|vformatd|vformatdx|'+\n 'vformatn|vformatnx|vformatw|vformatwx|vformatx|'+\n 'vinarray|vinarrayx|vinformat|vinformatd|vinformatdx|'+\n 'vinformatn|vinformatnx|vinformatw|vinformatwx|'+\n 'vinformatx|vlabel|vlabelx|vlength|vlengthx|vname|'+\n 'vnamex|vtype|vtypex|weekday|year|yyq|zipfips|zipname|'+\n 'zipnamel|zipstate';\n\n // Built-in macro functions\n var SAS_MACRO_FUN = 'bquote|nrbquote|cmpres|qcmpres|compstor|'+\n 'datatyp|display|do|else|end|eval|global|goto|'+\n 'if|index|input|keydef|label|left|length|let|'+\n 'local|lowcase|macro|mend|nrbquote|nrquote|'+\n 'nrstr|put|qcmpres|qleft|qlowcase|qscan|'+\n 'qsubstr|qsysfunc|qtrim|quote|qupcase|scan|str|'+\n 'substr|superq|syscall|sysevalf|sysexec|sysfunc|'+\n 'sysget|syslput|sysprod|sysrc|sysrput|then|to|'+\n 'trim|unquote|until|upcase|verify|while|window';\n\n return {\n aliases: ['sas', 'SAS'],\n case_insensitive: true, // SAS is case-insensitive\n keywords: {\n literal:\n 'null missing _all_ _automatic_ _character_ _infile_ '+\n '_n_ _name_ _null_ _numeric_ _user_ _webout_',\n meta:\n SAS_KEYWORDS\n },\n contains: [\n {\n // Distinct highlight for proc <proc>, data, run, quit\n className: 'keyword',\n begin: /^\\s*(proc [\\w\\d_]+|data|run|quit)[\\s\\;]/\n },\n {\n // Macro variables\n className: 'variable',\n begin: /\\&[a-zA-Z_\\&][a-zA-Z0-9_]*\\.?/\n },\n {\n // Special emphasis for datalines|cards\n className: 'emphasis',\n begin: /^\\s*datalines|cards.*;/,\n end: /^\\s*;\\s*$/\n },\n { // Built-in macro variables take precedence\n className: 'built_in',\n begin: '%(' + SAS_MACRO_FUN + ')'\n },\n {\n // User-defined macro functions highlighted after\n className: 'name',\n begin: /%[a-zA-Z_][a-zA-Z_0-9]*/\n },\n {\n className: 'meta',\n begin: '[^%](' + SAS_FUN + ')[\\(]'\n },\n {\n className: 'string',\n variants: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n },\n hljs.COMMENT('\\\\*', ';'),\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n\n var ANNOTATION = { className: 'meta', begin: '@[A-Za-z]+' };\n\n // used in strings for escaping/interpolation/substitution\n var SUBST = {\n className: 'subst',\n variants: [\n {begin: '\\\\$[A-Za-z0-9_]+'},\n {begin: '\\\\${', end: '}'}\n ]\n };\n\n var STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\"\"\"', end: '\"\"\"',\n relevance: 10\n },\n {\n begin: '[a-z]+\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n {\n className: 'string',\n begin: '[a-z]+\"\"\"', end: '\"\"\"',\n contains: [SUBST],\n relevance: 10\n }\n ]\n\n };\n\n var SYMBOL = {\n className: 'symbol',\n begin: '\\'\\\\w[\\\\w\\\\d_]*(?!\\')'\n };\n\n var TYPE = {\n className: 'type',\n begin: '\\\\b[A-Z][A-Za-z0-9_]*',\n relevance: 0\n };\n\n var NAME = {\n className: 'title',\n begin: /[^0-9\\n\\t \"'(),.`{}\\[\\]:;][^\\n\\t \"'(),.`{}\\[\\]:;]+|[^0-9\\n\\t \"'(),.`{}\\[\\]:;=]/,\n relevance: 0\n };\n\n var CLASS = {\n className: 'class',\n beginKeywords: 'class object trait type',\n end: /[:={\\[\\n;]/,\n excludeEnd: true,\n contains: [\n {\n beginKeywords: 'extends with',\n relevance: 10\n },\n {\n begin: /\\[/,\n end: /\\]/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0,\n contains: [TYPE]\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0,\n contains: [TYPE]\n },\n NAME\n ]\n };\n\n var METHOD = {\n className: 'function',\n beginKeywords: 'def',\n end: /[:={\\[(\\n;]/,\n excludeEnd: true,\n contains: [NAME]\n };\n\n return {\n keywords: {\n literal: 'true false null',\n keyword: 'type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n SYMBOL,\n TYPE,\n METHOD,\n CLASS,\n hljs.C_NUMBER_MODE,\n ANNOTATION\n ]\n };\n};","module.exports = function(hljs) {\n var SCHEME_IDENT_RE = '[^\\\\(\\\\)\\\\[\\\\]\\\\{\\\\}\",\\'`;#|\\\\\\\\\\\\s]+';\n var SCHEME_SIMPLE_NUMBER_RE = '(\\\\-|\\\\+)?\\\\d+([./]\\\\d+)?';\n var SCHEME_COMPLEX_NUMBER_RE = SCHEME_SIMPLE_NUMBER_RE + '[+\\\\-]' + SCHEME_SIMPLE_NUMBER_RE + 'i';\n var BUILTINS = {\n 'builtin-name':\n 'case-lambda call/cc class define-class exit-handler field import ' +\n 'inherit init-field interface let*-values let-values let/ec mixin ' +\n 'opt-lambda override protect provide public rename require ' +\n 'require-for-syntax syntax syntax-case syntax-error unit/sig unless ' +\n 'when with-syntax and begin call-with-current-continuation ' +\n 'call-with-input-file call-with-output-file case cond define ' +\n 'define-syntax delay do dynamic-wind else for-each if lambda let let* ' +\n 'let-syntax letrec letrec-syntax map or syntax-rules \\' * + , ,@ - ... / ' +\n '; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan ' +\n 'boolean? caar cadr call-with-input-file call-with-output-file ' +\n 'call-with-values car cdddar cddddr cdr ceiling char->integer ' +\n 'char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? ' +\n 'char-downcase char-lower-case? char-numeric? char-ready? char-upcase ' +\n 'char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? ' +\n 'char? close-input-port close-output-port complex? cons cos ' +\n 'current-input-port current-output-port denominator display eof-object? ' +\n 'eq? equal? eqv? eval even? exact->inexact exact? exp expt floor ' +\n 'force gcd imag-part inexact->exact inexact? input-port? integer->char ' +\n 'integer? interaction-environment lcm length list list->string ' +\n 'list->vector list-ref list-tail list? load log magnitude make-polar ' +\n 'make-rectangular make-string make-vector max member memq memv min ' +\n 'modulo negative? newline not null-environment null? number->string ' +\n 'number? numerator odd? open-input-file open-output-file output-port? ' +\n 'pair? peek-char port? positive? procedure? quasiquote quote quotient ' +\n 'rational? rationalize read read-char real-part real? remainder reverse ' +\n 'round scheme-report-environment set! set-car! set-cdr! sin sqrt string ' +\n 'string->list string->number string->symbol string-append string-ci<=? ' +\n 'string-ci<? string-ci=? string-ci>=? string-ci>? string-copy ' +\n 'string-fill! string-length string-ref string-set! string<=? string<? ' +\n 'string=? string>=? string>? string? substring symbol->string symbol? ' +\n 'tan transcript-off transcript-on truncate values vector ' +\n 'vector->list vector-fill! vector-length vector-ref vector-set! ' +\n 'with-input-from-file with-output-to-file write write-char zero?'\n };\n\n var SHEBANG = {\n className: 'meta',\n begin: '^#!',\n end: '$'\n };\n\n var LITERAL = {\n className: 'literal',\n begin: '(#t|#f|#\\\\\\\\' + SCHEME_IDENT_RE + '|#\\\\\\\\.)'\n };\n\n var NUMBER = {\n className: 'number',\n variants: [\n { begin: SCHEME_SIMPLE_NUMBER_RE, relevance: 0 },\n { begin: SCHEME_COMPLEX_NUMBER_RE, relevance: 0 },\n { begin: '#b[0-1]+(/[0-1]+)?' },\n { begin: '#o[0-7]+(/[0-7]+)?' },\n { begin: '#x[0-9a-f]+(/[0-9a-f]+)?' }\n ]\n };\n\n var STRING = hljs.QUOTE_STRING_MODE;\n\n var REGULAR_EXPRESSION = {\n className: 'regexp',\n begin: '#[pr]x\"',\n end: '[^\\\\\\\\]\"'\n };\n\n var COMMENT_MODES = [\n hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n ),\n hljs.COMMENT('#\\\\|', '\\\\|#')\n ];\n\n var IDENT = {\n begin: SCHEME_IDENT_RE,\n relevance: 0\n };\n\n var QUOTED_IDENT = {\n className: 'symbol',\n begin: '\\'' + SCHEME_IDENT_RE\n };\n\n var BODY = {\n endsWithParent: true,\n relevance: 0\n };\n\n var QUOTED_LIST = {\n variants: [\n { begin: /'/ },\n { begin: '`' }\n ],\n contains: [\n {\n begin: '\\\\(', end: '\\\\)',\n contains: ['self', LITERAL, STRING, NUMBER, IDENT, QUOTED_IDENT]\n }\n ]\n };\n\n var NAME = {\n className: 'name',\n begin: SCHEME_IDENT_RE,\n lexemes: SCHEME_IDENT_RE,\n keywords: BUILTINS\n };\n\n var LAMBDA = {\n begin: /lambda/, endsWithParent: true, returnBegin: true,\n contains: [\n NAME,\n {\n begin: /\\(/, end: /\\)/, endsParent: true,\n contains: [IDENT],\n }\n ]\n };\n\n var LIST = {\n variants: [\n { begin: '\\\\(', end: '\\\\)' },\n { begin: '\\\\[', end: '\\\\]' }\n ],\n contains: [LAMBDA, NAME, BODY]\n };\n\n BODY.contains = [LITERAL, NUMBER, STRING, IDENT, QUOTED_IDENT, QUOTED_LIST, LIST].concat(COMMENT_MODES);\n\n return {\n illegal: /\\S/,\n contains: [SHEBANG, NUMBER, STRING, QUOTED_IDENT, QUOTED_LIST, LIST].concat(COMMENT_MODES)\n };\n};","module.exports = function(hljs) {\n\n var COMMON_CONTAINS = [\n hljs.C_NUMBER_MODE,\n {\n className: 'string',\n begin: '\\'|\\\"', end: '\\'|\\\"',\n contains: [hljs.BACKSLASH_ESCAPE, {begin: '\\'\\''}]\n }\n ];\n\n return {\n aliases: ['sci'],\n lexemes: /%?\\w+/,\n keywords: {\n keyword: 'abort break case clear catch continue do elseif else endfunction end for function '+\n 'global if pause return resume select try then while',\n literal:\n '%f %F %t %T %pi %eps %inf %nan %e %i %z %s',\n built_in: // Scilab has more than 2000 functions. Just list the most commons\n 'abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error '+\n 'exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty '+\n 'isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log '+\n 'max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real '+\n 'round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan '+\n 'type typename warning zeros matrix'\n },\n illegal: '(\"|#|/\\\\*|\\\\s+/\\\\w+)',\n contains: [\n {\n className: 'function',\n beginKeywords: 'function', end: '$',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)'\n }\n ]\n },\n {\n begin: '[a-zA-Z_][a-zA-Z_0-9]*(\\'+[\\\\.\\']*|[\\\\.\\']+)', end: '',\n relevance: 0\n },\n {\n begin: '\\\\[', end: '\\\\]\\'*[\\\\.\\']*',\n relevance: 0,\n contains: COMMON_CONTAINS\n },\n hljs.COMMENT('//', '$')\n ].concat(COMMON_CONTAINS)\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n var VARIABLE = {\n className: 'variable',\n begin: '(\\\\$' + IDENT_RE + ')\\\\b'\n };\n var HEXCOLOR = {\n className: 'number', begin: '#[0-9A-Fa-f]+'\n };\n var DEF_INTERNALS = {\n className: 'attribute',\n begin: '[A-Z\\\\_\\\\.\\\\-]+', end: ':',\n excludeEnd: true,\n illegal: '[^\\\\s]',\n starts: {\n endsWithParent: true, excludeEnd: true,\n contains: [\n HEXCOLOR,\n hljs.CSS_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'meta', begin: '!important'\n }\n ]\n }\n };\n return {\n case_insensitive: true,\n illegal: '[=/|\\']',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'selector-id', begin: '\\\\#[A-Za-z0-9_-]+',\n relevance: 0\n },\n {\n className: 'selector-class', begin: '\\\\.[A-Za-z0-9_-]+',\n relevance: 0\n },\n {\n className: 'selector-attr', begin: '\\\\[', end: '\\\\]',\n illegal: '$'\n },\n {\n className: 'selector-tag', // begin: IDENT_RE, end: '[,|\\\\s]'\n begin: '\\\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\\\b',\n relevance: 0\n },\n {\n begin: ':(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)'\n },\n {\n begin: '::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)'\n },\n VARIABLE,\n {\n className: 'attribute',\n begin: '\\\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\\\b',\n illegal: '[^\\\\s]'\n },\n {\n begin: '\\\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\\\b'\n },\n {\n begin: ':', end: ';',\n contains: [\n VARIABLE,\n HEXCOLOR,\n hljs.CSS_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n {\n className: 'meta', begin: '!important'\n }\n ]\n },\n {\n begin: '@', end: '[{;]',\n keywords: 'mixin include extend for if else each while charset import debug media page content font-face namespace warn',\n contains: [\n VARIABLE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n HEXCOLOR,\n hljs.CSS_NUMBER_MODE,\n {\n begin: '\\\\s[A-Za-z0-9_.-]+',\n relevance: 0\n }\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['console'],\n contains: [\n {\n className: 'meta',\n begin: '^\\\\s{0,3}[\\\\w\\\\d\\\\[\\\\]()@-]*[>%$#]',\n starts: {\n end: '$', subLanguage: 'bash'\n }\n }\n ]\n }\n};","module.exports = function(hljs) {\n var smali_instr_low_prio = ['add', 'and', 'cmp', 'cmpg', 'cmpl', 'const', 'div', 'double', 'float', 'goto', 'if', 'int', 'long', 'move', 'mul', 'neg', 'new', 'nop', 'not', 'or', 'rem', 'return', 'shl', 'shr', 'sput', 'sub', 'throw', 'ushr', 'xor'];\n var smali_instr_high_prio = ['aget', 'aput', 'array', 'check', 'execute', 'fill', 'filled', 'goto/16', 'goto/32', 'iget', 'instance', 'invoke', 'iput', 'monitor', 'packed', 'sget', 'sparse'];\n var smali_keywords = ['transient', 'constructor', 'abstract', 'final', 'synthetic', 'public', 'private', 'protected', 'static', 'bridge', 'system'];\n return {\n aliases: ['smali'],\n contains: [\n {\n className: 'string',\n begin: '\"', end: '\"',\n relevance: 0\n },\n hljs.COMMENT(\n '#',\n '$',\n {\n relevance: 0\n }\n ),\n {\n className: 'keyword',\n variants: [\n {begin: '\\\\s*\\\\.end\\\\s[a-zA-Z0-9]*'},\n {begin: '^[ ]*\\\\.[a-zA-Z]*', relevance: 0},\n {begin: '\\\\s:[a-zA-Z_0-9]*', relevance: 0},\n {begin: '\\\\s(' + smali_keywords.join('|') + ')'}\n ]\n },\n {\n className: 'built_in',\n variants : [\n {\n begin: '\\\\s('+smali_instr_low_prio.join('|')+')\\\\s'\n },\n {\n begin: '\\\\s('+smali_instr_low_prio.join('|')+')((\\\\-|/)[a-zA-Z0-9]+)+\\\\s',\n relevance: 10\n },\n {\n begin: '\\\\s('+smali_instr_high_prio.join('|')+')((\\\\-|/)[a-zA-Z0-9]+)*\\\\s',\n relevance: 10\n },\n ]\n },\n {\n className: 'class',\n begin: 'L[^\\(;:\\n]*;',\n relevance: 0\n },\n {\n begin: '[vp][0-9]+',\n }\n ]\n };\n};","module.exports = function(hljs) {\n var VAR_IDENT_RE = '[a-z][a-zA-Z0-9_]*';\n var CHAR = {\n className: 'string',\n begin: '\\\\$.{1}'\n };\n var SYMBOL = {\n className: 'symbol',\n begin: '#' + hljs.UNDERSCORE_IDENT_RE\n };\n return {\n aliases: ['st'],\n keywords: 'self super nil true false thisContext', // only 6\n contains: [\n hljs.COMMENT('\"', '\"'),\n hljs.APOS_STRING_MODE,\n {\n className: 'type',\n begin: '\\\\b[A-Z][A-Za-z0-9_]*',\n relevance: 0\n },\n {\n begin: VAR_IDENT_RE + ':',\n relevance: 0\n },\n hljs.C_NUMBER_MODE,\n SYMBOL,\n CHAR,\n {\n // This looks more complicated than needed to avoid combinatorial\n // explosion under V8. It effectively means `| var1 var2 ... |` with\n // whitespace adjacent to `|` being optional.\n begin: '\\\\|[ ]*' + VAR_IDENT_RE + '([ ]+' + VAR_IDENT_RE + ')*[ ]*\\\\|',\n returnBegin: true, end: /\\|/,\n illegal: /\\S/,\n contains: [{begin: '(\\\\|[ ]*)?' + VAR_IDENT_RE}]\n },\n {\n begin: '\\\\#\\\\(', end: '\\\\)',\n contains: [\n hljs.APOS_STRING_MODE,\n CHAR,\n hljs.C_NUMBER_MODE,\n SYMBOL\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['ml'],\n keywords: {\n keyword:\n /* according to Definition of Standard ML 97 */\n 'abstype and andalso as case datatype do else end eqtype ' +\n 'exception fn fun functor handle if in include infix infixr ' +\n 'let local nonfix of op open orelse raise rec sharing sig ' +\n 'signature struct structure then type val with withtype where while',\n built_in:\n /* built-in types according to basis library */\n 'array bool char exn int list option order real ref string substring vector unit word',\n literal:\n 'true false NONE SOME LESS EQUAL GREATER nil'\n },\n illegal: /\\/\\/|>>/,\n lexemes: '[a-z_]\\\\w*!?',\n contains: [\n {\n className: 'literal',\n begin: /\\[(\\|\\|)?\\]|\\(\\)/,\n relevance: 0\n },\n hljs.COMMENT(\n '\\\\(\\\\*',\n '\\\\*\\\\)',\n {\n contains: ['self']\n }\n ),\n { /* type variable */\n className: 'symbol',\n begin: '\\'[A-Za-z_](?!\\')[\\\\w\\']*'\n /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */\n },\n { /* polymorphic variant */\n className: 'type',\n begin: '`[A-Z][\\\\w\\']*'\n },\n { /* module or constructor */\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*',\n relevance: 0\n },\n { /* don't color identifiers, but safely catch all identifiers with '*/\n begin: '[a-z_]\\\\w*\\'[\\\\w\\']*'\n },\n hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n {\n className: 'number',\n begin:\n '\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|' +\n '0[oO][0-7_]+[Lln]?|' +\n '0[bB][01_]+[Lln]?|' +\n '[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)',\n relevance: 0\n },\n {\n begin: /[-=]>/ // relevance booster\n }\n ]\n };\n};","module.exports = function(hljs) {\n var CPP = hljs.getLanguage('cpp').exports;\n\n // In SQF, a variable start with _\n var VARIABLE = {\n className: 'variable',\n begin: /\\b_+[a-zA-Z_]\\w*/\n };\n\n // In SQF, a function should fit myTag_fnc_myFunction pattern\n // https://community.bistudio.com/wiki/Functions_Library_(Arma_3)#Adding_a_Function\n var FUNCTION = {\n className: 'title',\n begin: /[a-zA-Z][a-zA-Z0-9]+_fnc_\\w*/\n };\n\n // In SQF strings, quotes matching the start are escaped by adding a consecutive.\n // Example of single escaped quotes: \" \"\" \" and ' '' '.\n var STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '\"',\n end: '\"',\n contains: [{begin: '\"\"', relevance: 0}]\n },\n {\n begin: '\\'',\n end: '\\'',\n contains: [{begin: '\\'\\'', relevance: 0}]\n }\n ]\n };\n\n return {\n aliases: ['sqf'],\n case_insensitive: true,\n keywords: {\n keyword:\n 'case catch default do else exit exitWith for forEach from if ' +\n 'private switch then throw to try waitUntil while with',\n built_in:\n 'abs accTime acos action actionIDs actionKeys actionKeysImages actionKeysNames ' +\n 'actionKeysNamesArray actionName actionParams activateAddons activatedAddons activateKey ' +\n 'add3DENConnection add3DENEventHandler add3DENLayer addAction addBackpack addBackpackCargo ' +\n 'addBackpackCargoGlobal addBackpackGlobal addCamShake addCuratorAddons addCuratorCameraArea ' +\n 'addCuratorEditableObjects addCuratorEditingArea addCuratorPoints addEditorObject addEventHandler ' +\n 'addForce addGoggles addGroupIcon addHandgunItem addHeadgear addItem addItemCargo ' +\n 'addItemCargoGlobal addItemPool addItemToBackpack addItemToUniform addItemToVest addLiveStats ' +\n 'addMagazine addMagazineAmmoCargo addMagazineCargo addMagazineCargoGlobal addMagazineGlobal ' +\n 'addMagazinePool addMagazines addMagazineTurret addMenu addMenuItem addMissionEventHandler ' +\n 'addMPEventHandler addMusicEventHandler addOwnedMine addPlayerScores addPrimaryWeaponItem ' +\n 'addPublicVariableEventHandler addRating addResources addScore addScoreSide addSecondaryWeaponItem ' +\n 'addSwitchableUnit addTeamMember addToRemainsCollector addTorque addUniform addVehicle addVest ' +\n 'addWaypoint addWeapon addWeaponCargo addWeaponCargoGlobal addWeaponGlobal addWeaponItem ' +\n 'addWeaponPool addWeaponTurret admin agent agents AGLToASL aimedAtTarget aimPos airDensityRTD ' +\n 'airplaneThrottle airportSide AISFinishHeal alive all3DENEntities allAirports allControls ' +\n 'allCurators allCutLayers allDead allDeadMen allDisplays allGroups allMapMarkers allMines ' +\n 'allMissionObjects allow3DMode allowCrewInImmobile allowCuratorLogicIgnoreAreas allowDamage ' +\n 'allowDammage allowFileOperations allowFleeing allowGetIn allowSprint allPlayers allSimpleObjects ' +\n 'allSites allTurrets allUnits allUnitsUAV allVariables ammo ammoOnPylon and animate animateBay ' +\n 'animateDoor animatePylon animateSource animationNames animationPhase animationSourcePhase ' +\n 'animationState append apply armoryPoints arrayIntersect asin ASLToAGL ASLToATL assert ' +\n 'assignAsCargo assignAsCargoIndex assignAsCommander assignAsDriver assignAsGunner assignAsTurret ' +\n 'assignCurator assignedCargo assignedCommander assignedDriver assignedGunner assignedItems ' +\n 'assignedTarget assignedTeam assignedVehicle assignedVehicleRole assignItem assignTeam ' +\n 'assignToAirport atan atan2 atg ATLToASL attachedObject attachedObjects attachedTo attachObject ' +\n 'attachTo attackEnabled backpack backpackCargo backpackContainer backpackItems backpackMagazines ' +\n 'backpackSpaceFor behaviour benchmark binocular boundingBox boundingBoxReal boundingCenter ' +\n 'breakOut breakTo briefingName buildingExit buildingPos buttonAction buttonSetAction cadetMode ' +\n 'call callExtension camCommand camCommit camCommitPrepared camCommitted camConstuctionSetParams ' +\n 'camCreate camDestroy cameraEffect cameraEffectEnableHUD cameraInterest cameraOn cameraView ' +\n 'campaignConfigFile camPreload camPreloaded camPrepareBank camPrepareDir camPrepareDive ' +\n 'camPrepareFocus camPrepareFov camPrepareFovRange camPreparePos camPrepareRelPos camPrepareTarget ' +\n 'camSetBank camSetDir camSetDive camSetFocus camSetFov camSetFovRange camSetPos camSetRelPos ' +\n 'camSetTarget camTarget camUseNVG canAdd canAddItemToBackpack canAddItemToUniform canAddItemToVest ' +\n 'cancelSimpleTaskDestination canFire canMove canSlingLoad canStand canSuspend ' +\n 'canTriggerDynamicSimulation canUnloadInCombat canVehicleCargo captive captiveNum cbChecked ' +\n 'cbSetChecked ceil channelEnabled cheatsEnabled checkAIFeature checkVisibility className ' +\n 'clearAllItemsFromBackpack clearBackpackCargo clearBackpackCargoGlobal clearGroupIcons ' +\n 'clearItemCargo clearItemCargoGlobal clearItemPool clearMagazineCargo clearMagazineCargoGlobal ' +\n 'clearMagazinePool clearOverlay clearRadio clearWeaponCargo clearWeaponCargoGlobal clearWeaponPool ' +\n 'clientOwner closeDialog closeDisplay closeOverlay collapseObjectTree collect3DENHistory ' +\n 'collectiveRTD combatMode commandArtilleryFire commandChat commander commandFire commandFollow ' +\n 'commandFSM commandGetOut commandingMenu commandMove commandRadio commandStop ' +\n 'commandSuppressiveFire commandTarget commandWatch comment commitOverlay compile compileFinal ' +\n 'completedFSM composeText configClasses configFile configHierarchy configName configProperties ' +\n 'configSourceAddonList configSourceMod configSourceModList confirmSensorTarget ' +\n 'connectTerminalToUAV controlsGroupCtrl copyFromClipboard copyToClipboard copyWaypoints cos count ' +\n 'countEnemy countFriendly countSide countType countUnknown create3DENComposition create3DENEntity ' +\n 'createAgent createCenter createDialog createDiaryLink createDiaryRecord createDiarySubject ' +\n 'createDisplay createGearDialog createGroup createGuardedPoint createLocation createMarker ' +\n 'createMarkerLocal createMenu createMine createMissionDisplay createMPCampaignDisplay ' +\n 'createSimpleObject createSimpleTask createSite createSoundSource createTask createTeam ' +\n 'createTrigger createUnit createVehicle createVehicleCrew createVehicleLocal crew ctAddHeader ' +\n 'ctAddRow ctClear ctCurSel ctData ctFindHeaderRows ctFindRowHeader ctHeaderControls ctHeaderCount ' +\n 'ctRemoveHeaders ctRemoveRows ctrlActivate ctrlAddEventHandler ctrlAngle ctrlAutoScrollDelay ' +\n 'ctrlAutoScrollRewind ctrlAutoScrollSpeed ctrlChecked ctrlClassName ctrlCommit ctrlCommitted ' +\n 'ctrlCreate ctrlDelete ctrlEnable ctrlEnabled ctrlFade ctrlHTMLLoaded ctrlIDC ctrlIDD ' +\n 'ctrlMapAnimAdd ctrlMapAnimClear ctrlMapAnimCommit ctrlMapAnimDone ctrlMapCursor ctrlMapMouseOver ' +\n 'ctrlMapScale ctrlMapScreenToWorld ctrlMapWorldToScreen ctrlModel ctrlModelDirAndUp ctrlModelScale ' +\n 'ctrlParent ctrlParentControlsGroup ctrlPosition ctrlRemoveAllEventHandlers ctrlRemoveEventHandler ' +\n 'ctrlScale ctrlSetActiveColor ctrlSetAngle ctrlSetAutoScrollDelay ctrlSetAutoScrollRewind ' +\n 'ctrlSetAutoScrollSpeed ctrlSetBackgroundColor ctrlSetChecked ctrlSetEventHandler ctrlSetFade ' +\n 'ctrlSetFocus ctrlSetFont ctrlSetFontH1 ctrlSetFontH1B ctrlSetFontH2 ctrlSetFontH2B ctrlSetFontH3 ' +\n 'ctrlSetFontH3B ctrlSetFontH4 ctrlSetFontH4B ctrlSetFontH5 ctrlSetFontH5B ctrlSetFontH6 ' +\n 'ctrlSetFontH6B ctrlSetFontHeight ctrlSetFontHeightH1 ctrlSetFontHeightH2 ctrlSetFontHeightH3 ' +\n 'ctrlSetFontHeightH4 ctrlSetFontHeightH5 ctrlSetFontHeightH6 ctrlSetFontHeightSecondary ' +\n 'ctrlSetFontP ctrlSetFontPB ctrlSetFontSecondary ctrlSetForegroundColor ctrlSetModel ' +\n 'ctrlSetModelDirAndUp ctrlSetModelScale ctrlSetPixelPrecision ctrlSetPosition ctrlSetScale ' +\n 'ctrlSetStructuredText ctrlSetText ctrlSetTextColor ctrlSetTooltip ctrlSetTooltipColorBox ' +\n 'ctrlSetTooltipColorShade ctrlSetTooltipColorText ctrlShow ctrlShown ctrlText ctrlTextHeight ' +\n 'ctrlTextWidth ctrlType ctrlVisible ctRowControls ctRowCount ctSetCurSel ctSetData ' +\n 'ctSetHeaderTemplate ctSetRowTemplate ctSetValue ctValue curatorAddons curatorCamera ' +\n 'curatorCameraArea curatorCameraAreaCeiling curatorCoef curatorEditableObjects curatorEditingArea ' +\n 'curatorEditingAreaType curatorMouseOver curatorPoints curatorRegisteredObjects curatorSelected ' +\n 'curatorWaypointCost current3DENOperation currentChannel currentCommand currentMagazine ' +\n 'currentMagazineDetail currentMagazineDetailTurret currentMagazineTurret currentMuzzle ' +\n 'currentNamespace currentTask currentTasks currentThrowable currentVisionMode currentWaypoint ' +\n 'currentWeapon currentWeaponMode currentWeaponTurret currentZeroing cursorObject cursorTarget ' +\n 'customChat customRadio cutFadeOut cutObj cutRsc cutText damage date dateToNumber daytime ' +\n 'deActivateKey debriefingText debugFSM debugLog deg delete3DENEntities deleteAt deleteCenter ' +\n 'deleteCollection deleteEditorObject deleteGroup deleteGroupWhenEmpty deleteIdentity ' +\n 'deleteLocation deleteMarker deleteMarkerLocal deleteRange deleteResources deleteSite deleteStatus ' +\n 'deleteTeam deleteVehicle deleteVehicleCrew deleteWaypoint detach detectedMines ' +\n 'diag_activeMissionFSMs diag_activeScripts diag_activeSQFScripts diag_activeSQSScripts ' +\n 'diag_captureFrame diag_captureFrameToFile diag_captureSlowFrame diag_codePerformance ' +\n 'diag_drawMode diag_enable diag_enabled diag_fps diag_fpsMin diag_frameNo diag_lightNewLoad ' +\n 'diag_list diag_log diag_logSlowFrame diag_mergeConfigFile diag_recordTurretLimits ' +\n 'diag_setLightNew diag_tickTime diag_toggle dialog diarySubjectExists didJIP didJIPOwner ' +\n 'difficulty difficultyEnabled difficultyEnabledRTD difficultyOption direction directSay disableAI ' +\n 'disableCollisionWith disableConversation disableDebriefingStats disableMapIndicators ' +\n 'disableNVGEquipment disableRemoteSensors disableSerialization disableTIEquipment ' +\n 'disableUAVConnectability disableUserInput displayAddEventHandler displayCtrl displayParent ' +\n 'displayRemoveAllEventHandlers displayRemoveEventHandler displaySetEventHandler dissolveTeam ' +\n 'distance distance2D distanceSqr distributionRegion do3DENAction doArtilleryFire doFire doFollow ' +\n 'doFSM doGetOut doMove doorPhase doStop doSuppressiveFire doTarget doWatch drawArrow drawEllipse ' +\n 'drawIcon drawIcon3D drawLine drawLine3D drawLink drawLocation drawPolygon drawRectangle ' +\n 'drawTriangle driver drop dynamicSimulationDistance dynamicSimulationDistanceCoef ' +\n 'dynamicSimulationEnabled dynamicSimulationSystemEnabled echo edit3DENMissionAttributes editObject ' +\n 'editorSetEventHandler effectiveCommander emptyPositions enableAI enableAIFeature ' +\n 'enableAimPrecision enableAttack enableAudioFeature enableAutoStartUpRTD enableAutoTrimRTD ' +\n 'enableCamShake enableCaustics enableChannel enableCollisionWith enableCopilot ' +\n 'enableDebriefingStats enableDiagLegend enableDynamicSimulation enableDynamicSimulationSystem ' +\n 'enableEndDialog enableEngineArtillery enableEnvironment enableFatigue enableGunLights ' +\n 'enableInfoPanelComponent enableIRLasers enableMimics enablePersonTurret enableRadio enableReload ' +\n 'enableRopeAttach enableSatNormalOnDetail enableSaving enableSentences enableSimulation ' +\n 'enableSimulationGlobal enableStamina enableTeamSwitch enableTraffic enableUAVConnectability ' +\n 'enableUAVWaypoints enableVehicleCargo enableVehicleSensor enableWeaponDisassembly ' +\n 'endLoadingScreen endMission engineOn enginesIsOnRTD enginesRpmRTD enginesTorqueRTD entities ' +\n 'environmentEnabled estimatedEndServerTime estimatedTimeLeft evalObjectArgument everyBackpack ' +\n 'everyContainer exec execEditorScript execFSM execVM exp expectedDestination exportJIPMessages ' +\n 'eyeDirection eyePos face faction fadeMusic fadeRadio fadeSound fadeSpeech failMission ' +\n 'fillWeaponsFromPool find findCover findDisplay findEditorObject findEmptyPosition ' +\n 'findEmptyPositionReady findIf findNearestEnemy finishMissionInit finite fire fireAtTarget ' +\n 'firstBackpack flag flagAnimationPhase flagOwner flagSide flagTexture fleeing floor flyInHeight ' +\n 'flyInHeightASL fog fogForecast fogParams forceAddUniform forcedMap forceEnd forceFlagTexture ' +\n 'forceFollowRoad forceMap forceRespawn forceSpeed forceWalk forceWeaponFire forceWeatherChange ' +\n 'forEachMember forEachMemberAgent forEachMemberTeam forgetTarget format formation ' +\n 'formationDirection formationLeader formationMembers formationPosition formationTask formatText ' +\n 'formLeader freeLook fromEditor fuel fullCrew gearIDCAmmoCount gearSlotAmmoCount gearSlotData ' +\n 'get3DENActionState get3DENAttribute get3DENCamera get3DENConnections get3DENEntity ' +\n 'get3DENEntityID get3DENGrid get3DENIconsVisible get3DENLayerEntities get3DENLinesVisible ' +\n 'get3DENMissionAttribute get3DENMouseOver get3DENSelected getAimingCoef getAllEnvSoundControllers ' +\n 'getAllHitPointsDamage getAllOwnedMines getAllSoundControllers getAmmoCargo getAnimAimPrecision ' +\n 'getAnimSpeedCoef getArray getArtilleryAmmo getArtilleryComputerSettings getArtilleryETA ' +\n 'getAssignedCuratorLogic getAssignedCuratorUnit getBackpackCargo getBleedingRemaining ' +\n 'getBurningValue getCameraViewDirection getCargoIndex getCenterOfMass getClientState ' +\n 'getClientStateNumber getCompatiblePylonMagazines getConnectedUAV getContainerMaxLoad ' +\n 'getCursorObjectParams getCustomAimCoef getDammage getDescription getDir getDirVisual ' +\n 'getDLCAssetsUsage getDLCAssetsUsageByName getDLCs getEditorCamera getEditorMode ' +\n 'getEditorObjectScope getElevationOffset getEnvSoundController getFatigue getForcedFlagTexture ' +\n 'getFriend getFSMVariable getFuelCargo getGroupIcon getGroupIconParams getGroupIcons getHideFrom ' +\n 'getHit getHitIndex getHitPointDamage getItemCargo getMagazineCargo getMarkerColor getMarkerPos ' +\n 'getMarkerSize getMarkerType getMass getMissionConfig getMissionConfigValue getMissionDLCs ' +\n 'getMissionLayerEntities getModelInfo getMousePosition getMusicPlayedTime getNumber ' +\n 'getObjectArgument getObjectChildren getObjectDLC getObjectMaterials getObjectProxy ' +\n 'getObjectTextures getObjectType getObjectViewDistance getOxygenRemaining getPersonUsedDLCs ' +\n 'getPilotCameraDirection getPilotCameraPosition getPilotCameraRotation getPilotCameraTarget ' +\n 'getPlateNumber getPlayerChannel getPlayerScores getPlayerUID getPos getPosASL getPosASLVisual ' +\n 'getPosASLW getPosATL getPosATLVisual getPosVisual getPosWorld getPylonMagazines getRelDir ' +\n 'getRelPos getRemoteSensorsDisabled getRepairCargo getResolution getShadowDistance getShotParents ' +\n 'getSlingLoad getSoundController getSoundControllerResult getSpeed getStamina getStatValue ' +\n 'getSuppression getTerrainGrid getTerrainHeightASL getText getTotalDLCUsageTime getUnitLoadout ' +\n 'getUnitTrait getUserMFDText getUserMFDvalue getVariable getVehicleCargo getWeaponCargo ' +\n 'getWeaponSway getWingsOrientationRTD getWingsPositionRTD getWPPos glanceAt globalChat globalRadio ' +\n 'goggles goto group groupChat groupFromNetId groupIconSelectable groupIconsVisible groupId ' +\n 'groupOwner groupRadio groupSelectedUnits groupSelectUnit gunner gusts halt handgunItems ' +\n 'handgunMagazine handgunWeapon handsHit hasInterface hasPilotCamera hasWeapon hcAllGroups ' +\n 'hcGroupParams hcLeader hcRemoveAllGroups hcRemoveGroup hcSelected hcSelectGroup hcSetGroup ' +\n 'hcShowBar hcShownBar headgear hideBody hideObject hideObjectGlobal hideSelection hint hintC ' +\n 'hintCadet hintSilent hmd hostMission htmlLoad HUDMovementLevels humidity image importAllGroups ' +\n 'importance in inArea inAreaArray incapacitatedState inflame inflamed infoPanel ' +\n 'infoPanelComponentEnabled infoPanelComponents infoPanels inGameUISetEventHandler inheritsFrom ' +\n 'initAmbientLife inPolygon inputAction inRangeOfArtillery insertEditorObject intersect is3DEN ' +\n 'is3DENMultiplayer isAbleToBreathe isAgent isArray isAutoHoverOn isAutonomous isAutotest ' +\n 'isBleeding isBurning isClass isCollisionLightOn isCopilotEnabled isDamageAllowed isDedicated ' +\n 'isDLCAvailable isEngineOn isEqualTo isEqualType isEqualTypeAll isEqualTypeAny isEqualTypeArray ' +\n 'isEqualTypeParams isFilePatchingEnabled isFlashlightOn isFlatEmpty isForcedWalk isFormationLeader ' +\n 'isGroupDeletedWhenEmpty isHidden isInRemainsCollector isInstructorFigureEnabled isIRLaserOn ' +\n 'isKeyActive isKindOf isLaserOn isLightOn isLocalized isManualFire isMarkedForCollection ' +\n 'isMultiplayer isMultiplayerSolo isNil isNull isNumber isObjectHidden isObjectRTD isOnRoad ' +\n 'isPipEnabled isPlayer isRealTime isRemoteExecuted isRemoteExecutedJIP isServer isShowing3DIcons ' +\n 'isSimpleObject isSprintAllowed isStaminaEnabled isSteamMission isStreamFriendlyUIEnabled isText ' +\n 'isTouchingGround isTurnedOut isTutHintsEnabled isUAVConnectable isUAVConnected isUIContext ' +\n 'isUniformAllowed isVehicleCargo isVehicleRadarOn isVehicleSensorEnabled isWalking ' +\n 'isWeaponDeployed isWeaponRested itemCargo items itemsWithMagazines join joinAs joinAsSilent ' +\n 'joinSilent joinString kbAddDatabase kbAddDatabaseTargets kbAddTopic kbHasTopic kbReact ' +\n 'kbRemoveTopic kbTell kbWasSaid keyImage keyName knowsAbout land landAt landResult language ' +\n 'laserTarget lbAdd lbClear lbColor lbColorRight lbCurSel lbData lbDelete lbIsSelected lbPicture ' +\n 'lbPictureRight lbSelection lbSetColor lbSetColorRight lbSetCurSel lbSetData lbSetPicture ' +\n 'lbSetPictureColor lbSetPictureColorDisabled lbSetPictureColorSelected lbSetPictureRight ' +\n 'lbSetPictureRightColor lbSetPictureRightColorDisabled lbSetPictureRightColorSelected ' +\n 'lbSetSelectColor lbSetSelectColorRight lbSetSelected lbSetText lbSetTextRight lbSetTooltip ' +\n 'lbSetValue lbSize lbSort lbSortByValue lbText lbTextRight lbValue leader leaderboardDeInit ' +\n 'leaderboardGetRows leaderboardInit leaderboardRequestRowsFriends leaderboardsRequestUploadScore ' +\n 'leaderboardsRequestUploadScoreKeepBest leaderboardState leaveVehicle libraryCredits ' +\n 'libraryDisclaimers lifeState lightAttachObject lightDetachObject lightIsOn lightnings limitSpeed ' +\n 'linearConversion lineIntersects lineIntersectsObjs lineIntersectsSurfaces lineIntersectsWith ' +\n 'linkItem list listObjects listRemoteTargets listVehicleSensors ln lnbAddArray lnbAddColumn ' +\n 'lnbAddRow lnbClear lnbColor lnbCurSelRow lnbData lnbDeleteColumn lnbDeleteRow ' +\n 'lnbGetColumnsPosition lnbPicture lnbSetColor lnbSetColumnsPos lnbSetCurSelRow lnbSetData ' +\n 'lnbSetPicture lnbSetText lnbSetValue lnbSize lnbSort lnbSortByValue lnbText lnbValue load loadAbs ' +\n 'loadBackpack loadFile loadGame loadIdentity loadMagazine loadOverlay loadStatus loadUniform ' +\n 'loadVest local localize locationPosition lock lockCameraTo lockCargo lockDriver locked ' +\n 'lockedCargo lockedDriver lockedTurret lockIdentity lockTurret lockWP log logEntities logNetwork ' +\n 'logNetworkTerminate lookAt lookAtPos magazineCargo magazines magazinesAllTurrets magazinesAmmo ' +\n 'magazinesAmmoCargo magazinesAmmoFull magazinesDetail magazinesDetailBackpack ' +\n 'magazinesDetailUniform magazinesDetailVest magazinesTurret magazineTurretAmmo mapAnimAdd ' +\n 'mapAnimClear mapAnimCommit mapAnimDone mapCenterOnCamera mapGridPosition markAsFinishedOnSteam ' +\n 'markerAlpha markerBrush markerColor markerDir markerPos markerShape markerSize markerText ' +\n 'markerType max members menuAction menuAdd menuChecked menuClear menuCollapse menuData menuDelete ' +\n 'menuEnable menuEnabled menuExpand menuHover menuPicture menuSetAction menuSetCheck menuSetData ' +\n 'menuSetPicture menuSetValue menuShortcut menuShortcutText menuSize menuSort menuText menuURL ' +\n 'menuValue min mineActive mineDetectedBy missionConfigFile missionDifficulty missionName ' +\n 'missionNamespace missionStart missionVersion mod modelToWorld modelToWorldVisual ' +\n 'modelToWorldVisualWorld modelToWorldWorld modParams moonIntensity moonPhase morale move ' +\n 'move3DENCamera moveInAny moveInCargo moveInCommander moveInDriver moveInGunner moveInTurret ' +\n 'moveObjectToEnd moveOut moveTime moveTo moveToCompleted moveToFailed musicVolume name nameSound ' +\n 'nearEntities nearestBuilding nearestLocation nearestLocations nearestLocationWithDubbing ' +\n 'nearestObject nearestObjects nearestTerrainObjects nearObjects nearObjectsReady nearRoads ' +\n 'nearSupplies nearTargets needReload netId netObjNull newOverlay nextMenuItemIndex ' +\n 'nextWeatherChange nMenuItems not numberOfEnginesRTD numberToDate objectCurators objectFromNetId ' +\n 'objectParent objStatus onBriefingGroup onBriefingNotes onBriefingPlan onBriefingTeamSwitch ' +\n 'onCommandModeChanged onDoubleClick onEachFrame onGroupIconClick onGroupIconOverEnter ' +\n 'onGroupIconOverLeave onHCGroupSelectionChanged onMapSingleClick onPlayerConnected ' +\n 'onPlayerDisconnected onPreloadFinished onPreloadStarted onShowNewObject onTeamSwitch ' +\n 'openCuratorInterface openDLCPage openMap openSteamApp openYoutubeVideo or orderGetIn overcast ' +\n 'overcastForecast owner param params parseNumber parseSimpleArray parseText parsingNamespace ' +\n 'particlesQuality pickWeaponPool pitch pixelGrid pixelGridBase pixelGridNoUIScale pixelH pixelW ' +\n 'playableSlotsNumber playableUnits playAction playActionNow player playerRespawnTime playerSide ' +\n 'playersNumber playGesture playMission playMove playMoveNow playMusic playScriptedMission ' +\n 'playSound playSound3D position positionCameraToWorld posScreenToWorld posWorldToScreen ' +\n 'ppEffectAdjust ppEffectCommit ppEffectCommitted ppEffectCreate ppEffectDestroy ppEffectEnable ' +\n 'ppEffectEnabled ppEffectForceInNVG precision preloadCamera preloadObject preloadSound ' +\n 'preloadTitleObj preloadTitleRsc preprocessFile preprocessFileLineNumbers primaryWeapon ' +\n 'primaryWeaponItems primaryWeaponMagazine priority processDiaryLink productVersion profileName ' +\n 'profileNamespace profileNameSteam progressLoadingScreen progressPosition progressSetPosition ' +\n 'publicVariable publicVariableClient publicVariableServer pushBack pushBackUnique putWeaponPool ' +\n 'queryItemsPool queryMagazinePool queryWeaponPool rad radioChannelAdd radioChannelCreate ' +\n 'radioChannelRemove radioChannelSetCallSign radioChannelSetLabel radioVolume rain rainbow random ' +\n 'rank rankId rating rectangular registeredTasks registerTask reload reloadEnabled remoteControl ' +\n 'remoteExec remoteExecCall remoteExecutedOwner remove3DENConnection remove3DENEventHandler ' +\n 'remove3DENLayer removeAction removeAll3DENEventHandlers removeAllActions removeAllAssignedItems ' +\n 'removeAllContainers removeAllCuratorAddons removeAllCuratorCameraAreas ' +\n 'removeAllCuratorEditingAreas removeAllEventHandlers removeAllHandgunItems removeAllItems ' +\n 'removeAllItemsWithMagazines removeAllMissionEventHandlers removeAllMPEventHandlers ' +\n 'removeAllMusicEventHandlers removeAllOwnedMines removeAllPrimaryWeaponItems removeAllWeapons ' +\n 'removeBackpack removeBackpackGlobal removeCuratorAddons removeCuratorCameraArea ' +\n 'removeCuratorEditableObjects removeCuratorEditingArea removeDrawIcon removeDrawLinks ' +\n 'removeEventHandler removeFromRemainsCollector removeGoggles removeGroupIcon removeHandgunItem ' +\n 'removeHeadgear removeItem removeItemFromBackpack removeItemFromUniform removeItemFromVest ' +\n 'removeItems removeMagazine removeMagazineGlobal removeMagazines removeMagazinesTurret ' +\n 'removeMagazineTurret removeMenuItem removeMissionEventHandler removeMPEventHandler ' +\n 'removeMusicEventHandler removeOwnedMine removePrimaryWeaponItem removeSecondaryWeaponItem ' +\n 'removeSimpleTask removeSwitchableUnit removeTeamMember removeUniform removeVest removeWeapon ' +\n 'removeWeaponAttachmentCargo removeWeaponCargo removeWeaponGlobal removeWeaponTurret ' +\n 'reportRemoteTarget requiredVersion resetCamShake resetSubgroupDirection resize resources ' +\n 'respawnVehicle restartEditorCamera reveal revealMine reverse reversedMouseY roadAt ' +\n 'roadsConnectedTo roleDescription ropeAttachedObjects ropeAttachedTo ropeAttachEnabled ' +\n 'ropeAttachTo ropeCreate ropeCut ropeDestroy ropeDetach ropeEndPosition ropeLength ropes ' +\n 'ropeUnwind ropeUnwound rotorsForcesRTD rotorsRpmRTD round runInitScript safeZoneH safeZoneW ' +\n 'safeZoneWAbs safeZoneX safeZoneXAbs safeZoneY save3DENInventory saveGame saveIdentity ' +\n 'saveJoysticks saveOverlay saveProfileNamespace saveStatus saveVar savingEnabled say say2D say3D ' +\n 'scopeName score scoreSide screenshot screenToWorld scriptDone scriptName scudState ' +\n 'secondaryWeapon secondaryWeaponItems secondaryWeaponMagazine select selectBestPlaces ' +\n 'selectDiarySubject selectedEditorObjects selectEditorObject selectionNames selectionPosition ' +\n 'selectLeader selectMax selectMin selectNoPlayer selectPlayer selectRandom selectRandomWeighted ' +\n 'selectWeapon selectWeaponTurret sendAUMessage sendSimpleCommand sendTask sendTaskResult ' +\n 'sendUDPMessage serverCommand serverCommandAvailable serverCommandExecutable serverName serverTime ' +\n 'set set3DENAttribute set3DENAttributes set3DENGrid set3DENIconsVisible set3DENLayer ' +\n 'set3DENLinesVisible set3DENLogicType set3DENMissionAttribute set3DENMissionAttributes ' +\n 'set3DENModelsVisible set3DENObjectType set3DENSelected setAccTime setActualCollectiveRTD ' +\n 'setAirplaneThrottle setAirportSide setAmmo setAmmoCargo setAmmoOnPylon setAnimSpeedCoef ' +\n 'setAperture setApertureNew setArmoryPoints setAttributes setAutonomous setBehaviour ' +\n 'setBleedingRemaining setBrakesRTD setCameraInterest setCamShakeDefParams setCamShakeParams ' +\n 'setCamUseTI setCaptive setCenterOfMass setCollisionLight setCombatMode setCompassOscillation ' +\n 'setConvoySeparation setCuratorCameraAreaCeiling setCuratorCoef setCuratorEditingAreaType ' +\n 'setCuratorWaypointCost setCurrentChannel setCurrentTask setCurrentWaypoint setCustomAimCoef ' +\n 'setCustomWeightRTD setDamage setDammage setDate setDebriefingText setDefaultCamera setDestination ' +\n 'setDetailMapBlendPars setDir setDirection setDrawIcon setDriveOnPath setDropInterval ' +\n 'setDynamicSimulationDistance setDynamicSimulationDistanceCoef setEditorMode setEditorObjectScope ' +\n 'setEffectCondition setEngineRPMRTD setFace setFaceAnimation setFatigue setFeatureType ' +\n 'setFlagAnimationPhase setFlagOwner setFlagSide setFlagTexture setFog setFormation ' +\n 'setFormationTask setFormDir setFriend setFromEditor setFSMVariable setFuel setFuelCargo ' +\n 'setGroupIcon setGroupIconParams setGroupIconsSelectable setGroupIconsVisible setGroupId ' +\n 'setGroupIdGlobal setGroupOwner setGusts setHideBehind setHit setHitIndex setHitPointDamage ' +\n 'setHorizonParallaxCoef setHUDMovementLevels setIdentity setImportance setInfoPanel setLeader ' +\n 'setLightAmbient setLightAttenuation setLightBrightness setLightColor setLightDayLight ' +\n 'setLightFlareMaxDistance setLightFlareSize setLightIntensity setLightnings setLightUseFlare ' +\n 'setLocalWindParams setMagazineTurretAmmo setMarkerAlpha setMarkerAlphaLocal setMarkerBrush ' +\n 'setMarkerBrushLocal setMarkerColor setMarkerColorLocal setMarkerDir setMarkerDirLocal ' +\n 'setMarkerPos setMarkerPosLocal setMarkerShape setMarkerShapeLocal setMarkerSize ' +\n 'setMarkerSizeLocal setMarkerText setMarkerTextLocal setMarkerType setMarkerTypeLocal setMass ' +\n 'setMimic setMousePosition setMusicEffect setMusicEventHandler setName setNameSound ' +\n 'setObjectArguments setObjectMaterial setObjectMaterialGlobal setObjectProxy setObjectTexture ' +\n 'setObjectTextureGlobal setObjectViewDistance setOvercast setOwner setOxygenRemaining ' +\n 'setParticleCircle setParticleClass setParticleFire setParticleParams setParticleRandom ' +\n 'setPilotCameraDirection setPilotCameraRotation setPilotCameraTarget setPilotLight setPiPEffect ' +\n 'setPitch setPlateNumber setPlayable setPlayerRespawnTime setPos setPosASL setPosASL2 setPosASLW ' +\n 'setPosATL setPosition setPosWorld setPylonLoadOut setPylonsPriority setRadioMsg setRain ' +\n 'setRainbow setRandomLip setRank setRectangular setRepairCargo setRotorBrakeRTD setShadowDistance ' +\n 'setShotParents setSide setSimpleTaskAlwaysVisible setSimpleTaskCustomData ' +\n 'setSimpleTaskDescription setSimpleTaskDestination setSimpleTaskTarget setSimpleTaskType ' +\n 'setSimulWeatherLayers setSize setSkill setSlingLoad setSoundEffect setSpeaker setSpeech ' +\n 'setSpeedMode setStamina setStaminaScheme setStatValue setSuppression setSystemOfUnits ' +\n 'setTargetAge setTaskMarkerOffset setTaskResult setTaskState setTerrainGrid setText ' +\n 'setTimeMultiplier setTitleEffect setTrafficDensity setTrafficDistance setTrafficGap ' +\n 'setTrafficSpeed setTriggerActivation setTriggerArea setTriggerStatements setTriggerText ' +\n 'setTriggerTimeout setTriggerType setType setUnconscious setUnitAbility setUnitLoadout setUnitPos ' +\n 'setUnitPosWeak setUnitRank setUnitRecoilCoefficient setUnitTrait setUnloadInCombat ' +\n 'setUserActionText setUserMFDText setUserMFDvalue setVariable setVectorDir setVectorDirAndUp ' +\n 'setVectorUp setVehicleAmmo setVehicleAmmoDef setVehicleArmor setVehicleCargo setVehicleId ' +\n 'setVehicleLock setVehiclePosition setVehicleRadar setVehicleReceiveRemoteTargets ' +\n 'setVehicleReportOwnPosition setVehicleReportRemoteTargets setVehicleTIPars setVehicleVarName ' +\n 'setVelocity setVelocityModelSpace setVelocityTransformation setViewDistance ' +\n 'setVisibleIfTreeCollapsed setWantedRPMRTD setWaves setWaypointBehaviour setWaypointCombatMode ' +\n 'setWaypointCompletionRadius setWaypointDescription setWaypointForceBehaviour setWaypointFormation ' +\n 'setWaypointHousePosition setWaypointLoiterRadius setWaypointLoiterType setWaypointName ' +\n 'setWaypointPosition setWaypointScript setWaypointSpeed setWaypointStatements setWaypointTimeout ' +\n 'setWaypointType setWaypointVisible setWeaponReloadingTime setWind setWindDir setWindForce ' +\n 'setWindStr setWingForceScaleRTD setWPPos show3DIcons showChat showCinemaBorder showCommandingMenu ' +\n 'showCompass showCuratorCompass showGPS showHUD showLegend showMap shownArtilleryComputer ' +\n 'shownChat shownCompass shownCuratorCompass showNewEditorObject shownGPS shownHUD shownMap ' +\n 'shownPad shownRadio shownScoretable shownUAVFeed shownWarrant shownWatch showPad showRadio ' +\n 'showScoretable showSubtitles showUAVFeed showWarrant showWatch showWaypoint showWaypoints side ' +\n 'sideChat sideEnemy sideFriendly sideRadio simpleTasks simulationEnabled simulCloudDensity ' +\n 'simulCloudOcclusion simulInClouds simulWeatherSync sin size sizeOf skill skillFinal skipTime ' +\n 'sleep sliderPosition sliderRange sliderSetPosition sliderSetRange sliderSetSpeed sliderSpeed ' +\n 'slingLoadAssistantShown soldierMagazines someAmmo sort soundVolume spawn speaker speed speedMode ' +\n 'splitString sqrt squadParams stance startLoadingScreen step stop stopEngineRTD stopped str ' +\n 'sunOrMoon supportInfo suppressFor surfaceIsWater surfaceNormal surfaceType swimInDepth ' +\n 'switchableUnits switchAction switchCamera switchGesture switchLight switchMove ' +\n 'synchronizedObjects synchronizedTriggers synchronizedWaypoints synchronizeObjectsAdd ' +\n 'synchronizeObjectsRemove synchronizeTrigger synchronizeWaypoint systemChat systemOfUnits tan ' +\n 'targetKnowledge targets targetsAggregate targetsQuery taskAlwaysVisible taskChildren ' +\n 'taskCompleted taskCustomData taskDescription taskDestination taskHint taskMarkerOffset taskParent ' +\n 'taskResult taskState taskType teamMember teamName teams teamSwitch teamSwitchEnabled teamType ' +\n 'terminate terrainIntersect terrainIntersectASL terrainIntersectAtASL text textLog textLogFormat ' +\n 'tg time timeMultiplier titleCut titleFadeOut titleObj titleRsc titleText toArray toFixed toLower ' +\n 'toString toUpper triggerActivated triggerActivation triggerArea triggerAttachedVehicle ' +\n 'triggerAttachObject triggerAttachVehicle triggerDynamicSimulation triggerStatements triggerText ' +\n 'triggerTimeout triggerTimeoutCurrent triggerType turretLocal turretOwner turretUnit tvAdd tvClear ' +\n 'tvCollapse tvCollapseAll tvCount tvCurSel tvData tvDelete tvExpand tvExpandAll tvPicture ' +\n 'tvSetColor tvSetCurSel tvSetData tvSetPicture tvSetPictureColor tvSetPictureColorDisabled ' +\n 'tvSetPictureColorSelected tvSetPictureRight tvSetPictureRightColor tvSetPictureRightColorDisabled ' +\n 'tvSetPictureRightColorSelected tvSetText tvSetTooltip tvSetValue tvSort tvSortByValue tvText ' +\n 'tvTooltip tvValue type typeName typeOf UAVControl uiNamespace uiSleep unassignCurator ' +\n 'unassignItem unassignTeam unassignVehicle underwater uniform uniformContainer uniformItems ' +\n 'uniformMagazines unitAddons unitAimPosition unitAimPositionVisual unitBackpack unitIsUAV unitPos ' +\n 'unitReady unitRecoilCoefficient units unitsBelowHeight unlinkItem unlockAchievement ' +\n 'unregisterTask updateDrawIcon updateMenuItem updateObjectTree useAISteeringComponent ' +\n 'useAudioTimeForMoves userInputDisabled vectorAdd vectorCos vectorCrossProduct vectorDiff ' +\n 'vectorDir vectorDirVisual vectorDistance vectorDistanceSqr vectorDotProduct vectorFromTo ' +\n 'vectorMagnitude vectorMagnitudeSqr vectorModelToWorld vectorModelToWorldVisual vectorMultiply ' +\n 'vectorNormalized vectorUp vectorUpVisual vectorWorldToModel vectorWorldToModelVisual vehicle ' +\n 'vehicleCargoEnabled vehicleChat vehicleRadio vehicleReceiveRemoteTargets vehicleReportOwnPosition ' +\n 'vehicleReportRemoteTargets vehicles vehicleVarName velocity velocityModelSpace verifySignature ' +\n 'vest vestContainer vestItems vestMagazines viewDistance visibleCompass visibleGPS visibleMap ' +\n 'visiblePosition visiblePositionASL visibleScoretable visibleWatch waves waypointAttachedObject ' +\n 'waypointAttachedVehicle waypointAttachObject waypointAttachVehicle waypointBehaviour ' +\n 'waypointCombatMode waypointCompletionRadius waypointDescription waypointForceBehaviour ' +\n 'waypointFormation waypointHousePosition waypointLoiterRadius waypointLoiterType waypointName ' +\n 'waypointPosition waypoints waypointScript waypointsEnabledUAV waypointShow waypointSpeed ' +\n 'waypointStatements waypointTimeout waypointTimeoutCurrent waypointType waypointVisible ' +\n 'weaponAccessories weaponAccessoriesCargo weaponCargo weaponDirection weaponInertia weaponLowered ' +\n 'weapons weaponsItems weaponsItemsCargo weaponState weaponsTurret weightRTD WFSideText wind ',\n literal:\n 'blufor civilian configNull controlNull displayNull east endl false grpNull independent lineBreak ' +\n 'locationNull nil objNull opfor pi resistance scriptNull sideAmbientLife sideEmpty sideLogic ' +\n 'sideUnknown taskNull teamMemberNull true west',\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.NUMBER_MODE,\n VARIABLE,\n FUNCTION,\n STRINGS,\n CPP.preprocessor\n ],\n illegal: /#|^\\$ /\n };\n};","module.exports = function(hljs) {\n var COMMENT_MODE = hljs.COMMENT('--', '$');\n return {\n case_insensitive: true,\n illegal: /[<>{}*]/,\n contains: [\n {\n beginKeywords:\n 'begin end start commit rollback savepoint lock alter create drop rename call ' +\n 'delete do handler insert load replace select truncate update set show pragma grant ' +\n 'merge describe use explain help declare prepare execute deallocate release ' +\n 'unlock purge reset change stop analyze cache flush optimize repair kill ' +\n 'install uninstall checksum restore check backup revoke comment with',\n end: /;/, endsWithParent: true,\n lexemes: /[\\w\\.]+/,\n keywords: {\n keyword:\n 'as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add ' +\n 'addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias ' +\n 'allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply ' +\n 'archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan ' +\n 'atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid ' +\n 'authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile ' +\n 'before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float ' +\n 'binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound ' +\n 'buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel ' +\n 'capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base ' +\n 'char_length character_length characters characterset charindex charset charsetform charsetid check ' +\n 'checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close ' +\n 'cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation ' +\n 'collect colu colum column column_value columns columns_updated comment commit compact compatibility ' +\n 'compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn ' +\n 'connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection ' +\n 'consider consistent constant constraint constraints constructor container content contents context ' +\n 'contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost ' +\n 'count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation ' +\n 'critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user ' +\n 'cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add ' +\n 'date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts ' +\n 'day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate ' +\n 'declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults ' +\n 'deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank ' +\n 'depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor ' +\n 'deterministic diagnostics difference dimension direct_load directory disable disable_all ' +\n 'disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div ' +\n 'do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable ' +\n 'editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt ' +\n 'end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors ' +\n 'escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding ' +\n 'execu execut execute exempt exists exit exp expire explain export export_set extended extent external ' +\n 'external_1 external_2 externally extract failed failed_login_attempts failover failure far fast ' +\n 'feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final ' +\n 'finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign ' +\n 'form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ' +\n 'ftp full function general generated get get_format get_lock getdate getutcdate global global_name ' +\n 'globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups ' +\n 'gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex ' +\n 'hierarchy high high_priority hosts hour http id ident_current ident_incr ident_seed identified ' +\n 'identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment ' +\n 'index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile ' +\n 'initial initialized initially initrans inmemory inner innodb input insert install instance instantiable ' +\n 'instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat ' +\n 'is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists ' +\n 'keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lax lcase ' +\n 'lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit ' +\n 'lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate ' +\n 'locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call ' +\n 'logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime ' +\n 'managed management manual map mapping mask master master_pos_wait match matched materialized max ' +\n 'maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans ' +\n 'md5 measures median medium member memcompress memory merge microsecond mid migration min minextents ' +\n 'minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month ' +\n 'months mount move movement multiset mutex name name_const names nan national native natural nav nchar ' +\n 'nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile ' +\n 'nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile ' +\n 'nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder ' +\n 'nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck ' +\n 'noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe ' +\n 'nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ' +\n 'ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old ' +\n 'on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date ' +\n 'oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary ' +\n 'out outer outfile outline output over overflow overriding package pad parallel parallel_enable ' +\n 'parameters parent parse partial partition partitions pascal passing password password_grace_time ' +\n 'password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex ' +\n 'pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc ' +\n 'performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin ' +\n 'policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction ' +\n 'prediction_cost prediction_details prediction_probability prediction_set prepare present preserve ' +\n 'prior priority private private_sga privileges procedural procedure procedure_analyze processlist ' +\n 'profiles project prompt protection public publishingservername purge quarter query quick quiesce quota ' +\n 'quotename radians raise rand range rank raw read reads readsize rebuild record records ' +\n 'recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh ' +\n 'regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy ' +\n 'reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename ' +\n 'repair repeat replace replicate replication required reset resetlogs resize resource respect restore ' +\n 'restricted result result_cache resumable resume retention return returning returns reuse reverse revoke ' +\n 'right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows ' +\n 'rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll ' +\n 'sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select ' +\n 'self sequence sequential serializable server servererror session session_user sessions_per_user set ' +\n 'sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor ' +\n 'si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin ' +\n 'size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex ' +\n 'source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows ' +\n 'sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone ' +\n 'standby start starting startup statement static statistics stats_binomial_test stats_crosstab ' +\n 'stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep ' +\n 'stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev ' +\n 'stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate ' +\n 'subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum ' +\n 'suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate ' +\n 'sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tan tdo ' +\n 'template temporary terminated tertiary_weights test than then thread through tier ties time time_format ' +\n 'time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr ' +\n 'timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking ' +\n 'transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate ' +\n 'try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress ' +\n 'under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot ' +\n 'unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert ' +\n 'url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date ' +\n 'utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var ' +\n 'var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray ' +\n 'verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear ' +\n 'wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped ' +\n 'xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces ' +\n 'xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek',\n literal:\n 'true false null unknown',\n built_in:\n 'array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number ' +\n 'numeric real record serial serial8 smallint text time timestamp varchar varying void'\n },\n contains: [\n {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [hljs.BACKSLASH_ESCAPE, {begin: '\\'\\''}]\n },\n {\n className: 'string',\n begin: '\"', end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE, {begin: '\"\"'}]\n },\n {\n className: 'string',\n begin: '`', end: '`',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n COMMENT_MODE,\n hljs.HASH_COMMENT_MODE\n ]\n },\n hljs.C_BLOCK_COMMENT_MODE,\n COMMENT_MODE,\n hljs.HASH_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n begin: hljs.UNDERSCORE_IDENT_RE,\n lexemes: hljs.UNDERSCORE_IDENT_RE,\n keywords: {\n // Stan's keywords\n name:\n 'for in while repeat until if then else',\n // Stan's probablity distributions (less beta and gamma, as commonly\n // used for parameter names). So far, _log and _rng variants are not\n // included\n symbol:\n 'bernoulli bernoulli_logit binomial binomial_logit ' +\n 'beta_binomial hypergeometric categorical categorical_logit ' +\n 'ordered_logistic neg_binomial neg_binomial_2 ' +\n 'neg_binomial_2_log poisson poisson_log multinomial normal ' +\n 'exp_mod_normal skew_normal student_t cauchy double_exponential ' +\n 'logistic gumbel lognormal chi_square inv_chi_square ' +\n 'scaled_inv_chi_square exponential inv_gamma weibull frechet ' +\n 'rayleigh wiener pareto pareto_type_2 von_mises uniform ' +\n 'multi_normal multi_normal_prec multi_normal_cholesky multi_gp ' +\n 'multi_gp_cholesky multi_student_t gaussian_dlm_obs dirichlet ' +\n 'lkj_corr lkj_corr_cholesky wishart inv_wishart',\n // Stan's data types\n 'selector-tag':\n 'int real vector simplex unit_vector ordered positive_ordered ' +\n 'row_vector matrix cholesky_factor_corr cholesky_factor_cov ' +\n 'corr_matrix cov_matrix',\n // Stan's model blocks\n title:\n 'functions model data parameters quantities transformed ' +\n 'generated',\n literal:\n 'true false'\n },\n relevance: 0\n },\n // The below is all taken from the R language definition\n {\n // hex value\n className: 'number',\n begin: \"0[xX][0-9a-fA-F]+[Li]?\\\\b\",\n relevance: 0\n },\n {\n // hex value\n className: 'number',\n begin: \"0[xX][0-9a-fA-F]+[Li]?\\\\b\",\n relevance: 0\n },\n {\n // explicit integer\n className: 'number',\n begin: \"\\\\d+(?:[eE][+\\\\-]?\\\\d*)?L\\\\b\",\n relevance: 0\n },\n {\n // number with trailing decimal\n className: 'number',\n begin: \"\\\\d+\\\\.(?!\\\\d)(?:i\\\\b)?\",\n relevance: 0\n },\n {\n // number\n className: 'number',\n begin: \"\\\\d+(?:\\\\.\\\\d*)?(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\n relevance: 0\n },\n {\n // number with leading decimal\n className: 'number',\n begin: \"\\\\.\\\\d+(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['do', 'ado'],\n case_insensitive: true,\n keywords: 'if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize meqparse mer merg merge mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5',\n contains: [\n {\n className: 'symbol',\n begin: /`[a-zA-Z0-9_]+'/\n },\n {\n className: 'variable',\n begin: /\\$\\{?[a-zA-Z0-9_]+\\}?/\n },\n {\n className: 'string',\n variants: [\n {begin: '`\"[^\\r\\n]*?\"\\''},\n {begin: '\"[^\\r\\n\"]*\"'}\n ]\n },\n\n {\n className: 'built_in',\n variants: [\n {\n begin: '\\\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\\\(|$)'\n }\n ]\n },\n\n hljs.COMMENT('^[ \\t]*\\\\*.*$', false),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var STEP21_IDENT_RE = '[A-Z_][A-Z0-9_.]*';\n var STEP21_KEYWORDS = {\n keyword: 'HEADER ENDSEC DATA'\n };\n var STEP21_START = {\n className: 'meta',\n begin: 'ISO-10303-21;',\n relevance: 10\n };\n var STEP21_CLOSE = {\n className: 'meta',\n begin: 'END-ISO-10303-21;',\n relevance: 10\n };\n\n return {\n aliases: ['p21', 'step', 'stp'],\n case_insensitive: true, // STEP 21 is case insensitive in theory, in practice all non-comments are capitalized.\n lexemes: STEP21_IDENT_RE,\n keywords: STEP21_KEYWORDS,\n contains: [\n STEP21_START,\n STEP21_CLOSE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT('/\\\\*\\\\*!', '\\\\*/'),\n hljs.C_NUMBER_MODE,\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n {\n className: 'string',\n begin: \"'\", end: \"'\"\n },\n {\n className: 'symbol',\n variants: [\n {\n begin: '#', end: '\\\\d+',\n illegal: '\\\\W'\n }\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n\n var VARIABLE = {\n className: 'variable',\n begin: '\\\\$' + hljs.IDENT_RE\n };\n\n var HEX_COLOR = {\n className: 'number',\n begin: '#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})'\n };\n\n var AT_KEYWORDS = [\n 'charset',\n 'css',\n 'debug',\n 'extend',\n 'font-face',\n 'for',\n 'import',\n 'include',\n 'media',\n 'mixin',\n 'page',\n 'warn',\n 'while'\n ];\n\n var PSEUDO_SELECTORS = [\n 'after',\n 'before',\n 'first-letter',\n 'first-line',\n 'active',\n 'first-child',\n 'focus',\n 'hover',\n 'lang',\n 'link',\n 'visited'\n ];\n\n var TAGS = [\n 'a',\n 'abbr',\n 'address',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'blockquote',\n 'body',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'mark',\n 'menu',\n 'nav',\n 'object',\n 'ol',\n 'p',\n 'q',\n 'quote',\n 'samp',\n 'section',\n 'span',\n 'strong',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'var',\n 'video'\n ];\n\n var TAG_END = '[\\\\.\\\\s\\\\n\\\\[\\\\:,]';\n\n var ATTRIBUTES = [\n 'align-content',\n 'align-items',\n 'align-self',\n 'animation',\n 'animation-delay',\n 'animation-direction',\n 'animation-duration',\n 'animation-fill-mode',\n 'animation-iteration-count',\n 'animation-name',\n 'animation-play-state',\n 'animation-timing-function',\n 'auto',\n 'backface-visibility',\n 'background',\n 'background-attachment',\n 'background-clip',\n 'background-color',\n 'background-image',\n 'background-origin',\n 'background-position',\n 'background-repeat',\n 'background-size',\n 'border',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-style',\n 'border-bottom-width',\n 'border-collapse',\n 'border-color',\n 'border-image',\n 'border-image-outset',\n 'border-image-repeat',\n 'border-image-slice',\n 'border-image-source',\n 'border-image-width',\n 'border-left',\n 'border-left-color',\n 'border-left-style',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-style',\n 'border-right-width',\n 'border-spacing',\n 'border-style',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-style',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-decoration-break',\n 'box-shadow',\n 'box-sizing',\n 'break-after',\n 'break-before',\n 'break-inside',\n 'caption-side',\n 'clear',\n 'clip',\n 'clip-path',\n 'color',\n 'column-count',\n 'column-fill',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-style',\n 'column-rule-width',\n 'column-span',\n 'column-width',\n 'columns',\n 'content',\n 'counter-increment',\n 'counter-reset',\n 'cursor',\n 'direction',\n 'display',\n 'empty-cells',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-direction',\n 'flex-flow',\n 'flex-grow',\n 'flex-shrink',\n 'flex-wrap',\n 'float',\n 'font',\n 'font-family',\n 'font-feature-settings',\n 'font-kerning',\n 'font-language-override',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-variant-ligatures',\n 'font-weight',\n 'height',\n 'hyphens',\n 'icon',\n 'image-orientation',\n 'image-rendering',\n 'image-resolution',\n 'ime-mode',\n 'inherit',\n 'initial',\n 'justify-content',\n 'left',\n 'letter-spacing',\n 'line-height',\n 'list-style',\n 'list-style-image',\n 'list-style-position',\n 'list-style-type',\n 'margin',\n 'margin-bottom',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'marks',\n 'mask',\n 'max-height',\n 'max-width',\n 'min-height',\n 'min-width',\n 'nav-down',\n 'nav-index',\n 'nav-left',\n 'nav-right',\n 'nav-up',\n 'none',\n 'normal',\n 'object-fit',\n 'object-position',\n 'opacity',\n 'order',\n 'orphans',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-style',\n 'outline-width',\n 'overflow',\n 'overflow-wrap',\n 'overflow-x',\n 'overflow-y',\n 'padding',\n 'padding-bottom',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'page-break-after',\n 'page-break-before',\n 'page-break-inside',\n 'perspective',\n 'perspective-origin',\n 'pointer-events',\n 'position',\n 'quotes',\n 'resize',\n 'right',\n 'tab-size',\n 'table-layout',\n 'text-align',\n 'text-align-last',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-line',\n 'text-decoration-style',\n 'text-indent',\n 'text-overflow',\n 'text-rendering',\n 'text-shadow',\n 'text-transform',\n 'text-underline-position',\n 'top',\n 'transform',\n 'transform-origin',\n 'transform-style',\n 'transition',\n 'transition-delay',\n 'transition-duration',\n 'transition-property',\n 'transition-timing-function',\n 'unicode-bidi',\n 'vertical-align',\n 'visibility',\n 'white-space',\n 'widows',\n 'width',\n 'word-break',\n 'word-spacing',\n 'word-wrap',\n 'z-index'\n ];\n\n // illegals\n var ILLEGAL = [\n '\\\\?',\n '(\\\\bReturn\\\\b)', // monkey\n '(\\\\bEnd\\\\b)', // monkey\n '(\\\\bend\\\\b)', // vbscript\n '(\\\\bdef\\\\b)', // gradle\n ';', // a whole lot of languages\n '#\\\\s', // markdown\n '\\\\*\\\\s', // markdown\n '===\\\\s', // markdown\n '\\\\|',\n '%', // prolog\n ];\n\n return {\n aliases: ['styl'],\n case_insensitive: false,\n keywords: 'if else for in',\n illegal: '(' + ILLEGAL.join('|') + ')',\n contains: [\n\n // strings\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n\n // comments\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n\n // hex colors\n HEX_COLOR,\n\n // class tag\n {\n begin: '\\\\.[a-zA-Z][a-zA-Z0-9_-]*' + TAG_END,\n returnBegin: true,\n contains: [\n {className: 'selector-class', begin: '\\\\.[a-zA-Z][a-zA-Z0-9_-]*'}\n ]\n },\n\n // id tag\n {\n begin: '\\\\#[a-zA-Z][a-zA-Z0-9_-]*' + TAG_END,\n returnBegin: true,\n contains: [\n {className: 'selector-id', begin: '\\\\#[a-zA-Z][a-zA-Z0-9_-]*'}\n ]\n },\n\n // tags\n {\n begin: '\\\\b(' + TAGS.join('|') + ')' + TAG_END,\n returnBegin: true,\n contains: [\n {className: 'selector-tag', begin: '\\\\b[a-zA-Z][a-zA-Z0-9_-]*'}\n ]\n },\n\n // psuedo selectors\n {\n begin: '&?:?:\\\\b(' + PSEUDO_SELECTORS.join('|') + ')' + TAG_END\n },\n\n // @ keywords\n {\n begin: '\\@(' + AT_KEYWORDS.join('|') + ')\\\\b'\n },\n\n // variables\n VARIABLE,\n\n // dimension\n hljs.CSS_NUMBER_MODE,\n\n // number\n hljs.NUMBER_MODE,\n\n // functions\n // - only from beginning of line + whitespace\n {\n className: 'function',\n begin: '^[a-zA-Z][a-zA-Z0-9_\\-]*\\\\(.*\\\\)',\n illegal: '[\\\\n]',\n returnBegin: true,\n contains: [\n {className: 'title', begin: '\\\\b[a-zA-Z][a-zA-Z0-9_\\-]*'},\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n contains: [\n HEX_COLOR,\n VARIABLE,\n hljs.APOS_STRING_MODE,\n hljs.CSS_NUMBER_MODE,\n hljs.NUMBER_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n }\n ]\n },\n\n // attributes\n // - only from beginning of line + whitespace\n // - must have whitespace after it\n {\n className: 'attribute',\n begin: '\\\\b(' + ATTRIBUTES.reverse().join('|') + ')\\\\b',\n starts: {\n // value container\n end: /;|$/,\n contains: [\n HEX_COLOR,\n VARIABLE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.CSS_NUMBER_MODE,\n hljs.NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n illegal: /\\./,\n relevance: 0\n }\n }\n ]\n };\n};","module.exports = function(hljs) {\n var DETAILS = {\n className: 'string',\n begin: '\\\\[\\n(multipart)?', end: '\\\\]\\n'\n };\n var TIME = {\n className: 'string',\n begin: '\\\\d{4}-\\\\d{2}-\\\\d{2}(\\\\s+)\\\\d{2}:\\\\d{2}:\\\\d{2}\\.\\\\d+Z'\n };\n var PROGRESSVALUE = {\n className: 'string',\n begin: '(\\\\+|-)\\\\d+'\n };\n var KEYWORDS = {\n className: 'keyword',\n relevance: 10,\n variants: [\n { begin: '^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\\\s+(test)?' },\n { begin: '^progress(:?)(\\\\s+)?(pop|push)?' },\n { begin: '^tags:' },\n { begin: '^time:' }\n ],\n };\n return {\n case_insensitive: true,\n contains: [\n DETAILS,\n TIME,\n PROGRESSVALUE,\n KEYWORDS\n ]\n };\n};","module.exports = function(hljs) {\n var SWIFT_KEYWORDS = {\n keyword: '#available #colorLiteral #column #else #elseif #endif #file ' +\n '#fileLiteral #function #if #imageLiteral #line #selector #sourceLocation ' +\n '_ __COLUMN__ __FILE__ __FUNCTION__ __LINE__ Any as as! as? associatedtype ' +\n 'associativity break case catch class continue convenience default defer deinit didSet do ' +\n 'dynamic dynamicType else enum extension fallthrough false fileprivate final for func ' +\n 'get guard if import in indirect infix init inout internal is lazy left let ' +\n 'mutating nil none nonmutating open operator optional override postfix precedence ' +\n 'prefix private protocol Protocol public repeat required rethrows return ' +\n 'right self Self set static struct subscript super switch throw throws true ' +\n 'try try! try? Type typealias unowned var weak where while willSet',\n literal: 'true false nil',\n built_in: 'abs advance alignof alignofValue anyGenerator assert assertionFailure ' +\n 'bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC ' +\n 'bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros ' +\n 'debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords ' +\n 'enumerate equal fatalError filter find getBridgedObjectiveCType getVaList ' +\n 'indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC ' +\n 'isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare ' +\n 'map max maxElement min minElement numericCast overlaps partition posix ' +\n 'precondition preconditionFailure print println quickSort readLine reduce reflect ' +\n 'reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split ' +\n 'startsWith stride strideof strideofValue swap toString transcode ' +\n 'underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap ' +\n 'unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer ' +\n 'withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers ' +\n 'withUnsafePointer withUnsafePointers withVaList zip'\n };\n\n var TYPE = {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\u00C0-\\u02B8\\']*',\n relevance: 0\n };\n var BLOCK_COMMENT = hljs.COMMENT(\n '/\\\\*',\n '\\\\*/',\n {\n contains: ['self']\n }\n );\n var SUBST = {\n className: 'subst',\n begin: /\\\\\\(/, end: '\\\\)',\n keywords: SWIFT_KEYWORDS,\n contains: [] // assigned later\n };\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {begin: /\"\"\"/, end: /\"\"\"/},\n {begin: /\"/, end: /\"/},\n ]\n };\n var NUMBERS = {\n className: 'number',\n begin: '\\\\b([\\\\d_]+(\\\\.[\\\\deE_]+)?|0x[a-fA-F0-9_]+(\\\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\\\b',\n relevance: 0\n };\n SUBST.contains = [NUMBERS];\n\n return {\n keywords: SWIFT_KEYWORDS,\n contains: [\n STRING,\n hljs.C_LINE_COMMENT_MODE,\n BLOCK_COMMENT,\n TYPE,\n NUMBERS,\n {\n className: 'function',\n beginKeywords: 'func', end: '{', excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: /[A-Za-z$_][0-9A-Za-z$_]*/\n }),\n {\n begin: /</, end: />/\n },\n {\n className: 'params',\n begin: /\\(/, end: /\\)/, endsParent: true,\n keywords: SWIFT_KEYWORDS,\n contains: [\n 'self',\n NUMBERS,\n STRING,\n hljs.C_BLOCK_COMMENT_MODE,\n {begin: ':'} // relevance booster\n ],\n illegal: /[\"']/\n }\n ],\n illegal: /\\[|%/\n },\n {\n className: 'class',\n beginKeywords: 'struct protocol class extension enum',\n keywords: SWIFT_KEYWORDS,\n end: '\\\\{',\n excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: /[A-Za-z$_][\\u00C0-\\u02B80-9A-Za-z$_]*/})\n ]\n },\n {\n className: 'meta', // @attributes\n begin: '(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|' +\n '@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|' +\n '@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|' +\n '@infix|@prefix|@postfix|@autoclosure|@testable|@available|' +\n '@nonobjc|@NSApplicationMain|@UIApplicationMain)'\n\n },\n {\n beginKeywords: 'import', end: /$/,\n contains: [hljs.C_LINE_COMMENT_MODE, BLOCK_COMMENT]\n }\n ]\n };\n};","module.exports = function(hljs) {\n\n var COMMENT = {\n className: 'comment',\n begin: /\\$noop\\(/,\n end: /\\)/,\n contains: [{\n begin: /\\(/,\n end: /\\)/,\n contains: ['self', {\n begin: /\\\\./\n }]\n }],\n relevance: 10\n };\n\n var FUNCTION = {\n className: 'keyword',\n begin: /\\$(?!noop)[a-zA-Z][_a-zA-Z0-9]*/,\n end: /\\(/,\n excludeEnd: true\n };\n\n var VARIABLE = {\n className: 'variable',\n begin: /%[_a-zA-Z0-9:]*/,\n end: '%'\n };\n\n var ESCAPE_SEQUENCE = {\n className: 'symbol',\n begin: /\\\\./\n };\n\n return {\n contains: [\n COMMENT,\n FUNCTION,\n VARIABLE,\n ESCAPE_SEQUENCE\n ]\n };\n};","module.exports = function(hljs) {\n var LITERALS = 'true false yes no null';\n\n var keyPrefix = '^[ \\\\-]*';\n var keyName = '[a-zA-Z_][\\\\w\\\\-]*';\n var KEY = {\n className: 'attr',\n variants: [\n { begin: keyPrefix + keyName + \":\"},\n { begin: keyPrefix + '\"' + keyName + '\"' + \":\"},\n { begin: keyPrefix + \"'\" + keyName + \"'\" + \":\"}\n ]\n };\n\n var TEMPLATE_VARIABLES = {\n className: 'template-variable',\n variants: [\n { begin: '\\{\\{', end: '\\}\\}' }, // jinja templates Ansible\n { begin: '%\\{', end: '\\}' } // Ruby i18n\n ]\n };\n var STRING = {\n className: 'string',\n relevance: 0,\n variants: [\n {begin: /'/, end: /'/},\n {begin: /\"/, end: /\"/},\n {begin: /\\S+/}\n ],\n contains: [\n hljs.BACKSLASH_ESCAPE,\n TEMPLATE_VARIABLES\n ]\n };\n\n return {\n case_insensitive: true,\n aliases: ['yml', 'YAML', 'yaml'],\n contains: [\n KEY,\n {\n className: 'meta',\n begin: '^---\\s*$',\n relevance: 10\n },\n { // multi line string\n className: 'string',\n begin: '[\\\\|>] *$',\n returnEnd: true,\n contains: STRING.contains,\n // very simple termination: next hash key\n end: KEY.variants[0].begin\n },\n { // Ruby/Rails erb\n begin: '<%[%=-]?', end: '[%-]?%>',\n subLanguage: 'ruby',\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n },\n { // local tags\n className: 'type',\n begin: '!' + hljs.UNDERSCORE_IDENT_RE,\n },\n { // data type\n className: 'type',\n begin: '!!' + hljs.UNDERSCORE_IDENT_RE,\n },\n { // fragment id &ref\n className: 'meta',\n begin: '&' + hljs.UNDERSCORE_IDENT_RE + '$',\n },\n { // fragment reference *ref\n className: 'meta',\n begin: '\\\\*' + hljs.UNDERSCORE_IDENT_RE + '$'\n },\n { // array listing\n className: 'bullet',\n begin: '^ *-',\n relevance: 0\n },\n hljs.HASH_COMMENT_MODE,\n {\n beginKeywords: LITERALS,\n keywords: {literal: LITERALS}\n },\n hljs.C_NUMBER_MODE,\n STRING\n ]\n };\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n contains: [\n hljs.HASH_COMMENT_MODE,\n // version of format and total amount of testcases\n {\n className: 'meta',\n variants: [\n { begin: '^TAP version (\\\\d+)$' },\n { begin: '^1\\\\.\\\\.(\\\\d+)$' }\n ],\n },\n // YAML block\n {\n begin: '(\\s+)?---$', end: '\\\\.\\\\.\\\\.$',\n subLanguage: 'yaml',\n relevance: 0\n },\n\t // testcase number\n {\n className: 'number',\n begin: ' (\\\\d+) '\n },\n\t // testcase status and description\n {\n className: 'symbol',\n variants: [\n { begin: '^ok' },\n { begin: '^not ok' }\n ],\n },\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['tk'],\n keywords: 'after append apply array auto_execok auto_import auto_load auto_mkindex ' +\n 'auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock ' +\n 'close concat continue dde dict encoding eof error eval exec exit expr fblocked ' +\n 'fconfigure fcopy file fileevent filename flush for foreach format gets glob global ' +\n 'history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list ' +\n 'llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 '+\n 'mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex '+\n 'platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename '+\n 'return safe scan seek set socket source split string subst switch tcl_endOfWord '+\n 'tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter '+\n 'tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update '+\n 'uplevel upvar variable vwait while',\n contains: [\n hljs.COMMENT(';[ \\\\t]*#', '$'),\n hljs.COMMENT('^[ \\\\t]*#', '$'),\n {\n beginKeywords: 'proc',\n end: '[\\\\{]',\n excludeEnd: true,\n contains: [\n {\n className: 'title',\n begin: '[ \\\\t\\\\n\\\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*',\n end: '[ \\\\t\\\\n\\\\r]',\n endsWithParent: true,\n excludeEnd: true\n }\n ]\n },\n {\n excludeEnd: true,\n variants: [\n {\n begin: '\\\\$(\\\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\\\(([a-zA-Z0-9_])*\\\\)',\n end: '[^a-zA-Z0-9_\\\\}\\\\$]'\n },\n {\n begin: '\\\\$(\\\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*',\n end: '(\\\\))?[^a-zA-Z0-9_\\\\}\\\\$]'\n }\n ]\n },\n {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null})\n ]\n },\n {\n className: 'number',\n variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]\n }\n ]\n }\n};","module.exports = function(hljs) {\n var COMMAND = {\n className: 'tag',\n begin: /\\\\/,\n relevance: 0,\n contains: [\n {\n className: 'name',\n variants: [\n {begin: /[a-zA-Zа-яА-я]+[*]?/},\n {begin: /[^a-zA-Zа-яА-я0-9]/}\n ],\n starts: {\n endsWithParent: true,\n relevance: 0,\n contains: [\n {\n className: 'string', // because it looks like attributes in HTML tags\n variants: [\n {begin: /\\[/, end: /\\]/},\n {begin: /\\{/, end: /\\}/}\n ]\n },\n {\n begin: /\\s*=\\s*/, endsWithParent: true,\n relevance: 0,\n contains: [\n {\n className: 'number',\n begin: /-?\\d*\\.?\\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?/\n }\n ]\n }\n ]\n }\n }\n ]\n };\n\n return {\n contains: [\n COMMAND,\n {\n className: 'formula',\n contains: [COMMAND],\n relevance: 0,\n variants: [\n {begin: /\\$\\$/, end: /\\$\\$/},\n {begin: /\\$/, end: /\\$/}\n ]\n },\n hljs.COMMENT(\n '%',\n '$',\n {\n relevance: 0\n }\n )\n ]\n };\n};","module.exports = function(hljs) {\n var BUILT_IN_TYPES = 'bool byte i16 i32 i64 double string binary';\n return {\n keywords: {\n keyword:\n 'namespace const typedef struct enum service exception void oneway set list map required optional',\n built_in:\n BUILT_IN_TYPES,\n literal:\n 'true false'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'struct enum service exception', end: /\\{/,\n illegal: /\\n/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\n })\n ]\n },\n {\n begin: '\\\\b(set|list|map)\\\\s*<', end: '>',\n keywords: BUILT_IN_TYPES,\n contains: ['self']\n }\n ]\n };\n};","module.exports = function(hljs) {\n var TPID = {\n className: 'number',\n begin: '[1-9][0-9]*', /* no leading zeros */\n relevance: 0\n };\n var TPLABEL = {\n className: 'symbol',\n begin: ':[^\\\\]]+'\n };\n var TPDATA = {\n className: 'built_in',\n begin: '(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER|\\\n TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\\\[', end: '\\\\]',\n contains: [\n 'self',\n TPID,\n TPLABEL\n ]\n };\n var TPIO = {\n className: 'built_in',\n begin: '(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\\\[', end: '\\\\]',\n contains: [\n 'self',\n TPID,\n hljs.QUOTE_STRING_MODE, /* for pos section at bottom */\n TPLABEL\n ]\n };\n\n return {\n keywords: {\n keyword:\n 'ABORT ACC ADJUST AND AP_LD BREAK CALL CNT COL CONDITION CONFIG DA DB ' +\n 'DIV DETECT ELSE END ENDFOR ERR_NUM ERROR_PROG FINE FOR GP GUARD INC ' +\n 'IF JMP LINEAR_MAX_SPEED LOCK MOD MONITOR OFFSET Offset OR OVERRIDE ' +\n 'PAUSE PREG PTH RT_LD RUN SELECT SKIP Skip TA TB TO TOOL_OFFSET ' +\n 'Tool_Offset UF UT UFRAME_NUM UTOOL_NUM UNLOCK WAIT X Y Z W P R STRLEN ' +\n 'SUBSTR FINDSTR VOFFSET PROG ATTR MN POS',\n literal:\n 'ON OFF max_speed LPOS JPOS ENABLE DISABLE START STOP RESET'\n },\n contains: [\n TPDATA,\n TPIO,\n {\n className: 'keyword',\n begin: '/(PROG|ATTR|MN|POS|END)\\\\b'\n },\n {\n /* this is for cases like ,CALL */\n className: 'keyword',\n begin: '(CALL|RUN|POINT_LOGIC|LBL)\\\\b'\n },\n {\n /* this is for cases like CNT100 where the default lexemes do not\n * separate the keyword and the number */\n className: 'keyword',\n begin: '\\\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)'\n },\n {\n /* to catch numbers that do not have a word boundary on the left */\n className: 'number',\n begin: '\\\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\\\b',\n relevance: 0\n },\n hljs.COMMENT('//', '[;$]'),\n hljs.COMMENT('!', '[;$]'),\n hljs.COMMENT('--eg:', '$'),\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\'', end: '\\''\n },\n hljs.C_NUMBER_MODE,\n {\n className: 'variable',\n begin: '\\\\$[A-Za-z0-9_]+'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)'\n };\n\n var FUNCTION_NAMES = 'attribute block constant cycle date dump include ' +\n 'max min parent random range source template_from_string';\n\n var FUNCTIONS = {\n beginKeywords: FUNCTION_NAMES,\n keywords: {name: FUNCTION_NAMES},\n relevance: 0,\n contains: [\n PARAMS\n ]\n };\n\n var FILTER = {\n begin: /\\|[A-Za-z_]+:?/,\n keywords:\n 'abs batch capitalize convert_encoding date date_modify default ' +\n 'escape first format join json_encode keys last length lower ' +\n 'merge nl2br number_format raw replace reverse round slice sort split ' +\n 'striptags title trim upper url_encode',\n contains: [\n FUNCTIONS\n ]\n };\n\n var TAGS = 'autoescape block do embed extends filter flush for ' +\n 'if import include macro sandbox set spaceless use verbatim';\n\n TAGS = TAGS + ' ' + TAGS.split(' ').map(function(t){return 'end' + t}).join(' ');\n\n return {\n aliases: ['craftcms'],\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT(/\\{#/, /#}/),\n {\n className: 'template-tag',\n begin: /\\{%/, end: /%}/,\n contains: [\n {\n className: 'name',\n begin: /\\w+/,\n keywords: TAGS,\n starts: {\n endsWithParent: true,\n contains: [FILTER, FUNCTIONS],\n relevance: 0\n }\n }\n ]\n },\n {\n className: 'template-variable',\n begin: /\\{\\{/, end: /}}/,\n contains: ['self', FILTER, FUNCTIONS]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\n var KEYWORDS = {\n keyword:\n 'in if for while finally var new function do return void else break catch ' +\n 'instanceof with throw case default try this switch continue typeof delete ' +\n 'let yield const class public private protected get set super ' +\n 'static implements enum export import declare type namespace abstract ' +\n 'as from extends async await',\n literal:\n 'true false null undefined NaN Infinity',\n built_in:\n 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\n 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\n 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\n 'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\n 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\n 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\n 'module console window document any number boolean string void Promise'\n };\n\n var DECORATOR = {\n className: 'meta',\n begin: '@' + JS_IDENT_RE,\n };\n\n var ARGS =\n {\n begin: '\\\\(',\n end: /\\)/,\n keywords: KEYWORDS,\n contains: [\n 'self',\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.NUMBER_MODE\n ]\n };\n\n var PARAMS = {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n DECORATOR,\n ARGS\n ]\n };\n\n return {\n aliases: ['ts'],\n keywords: KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: /^\\s*['\"]use strict['\"]/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n { // template string\n className: 'string',\n begin: '`', end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {\n className: 'subst',\n begin: '\\\\$\\\\{', end: '\\\\}'\n }\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'number',\n variants: [\n { begin: '\\\\b(0[bB][01]+)' },\n { begin: '\\\\b(0[oO][0-7]+)' },\n { begin: hljs.C_NUMBER_RE }\n ],\n relevance: 0\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n begin: '(\\\\(.*?\\\\)|' + hljs.IDENT_RE + ')\\\\s*=>', returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: hljs.IDENT_RE\n },\n {\n begin: /\\(\\s*\\)/,\n },\n {\n begin: /\\(/, end: /\\)/,\n excludeBegin: true, excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n 'self',\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n }\n ]\n }\n ]\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n begin: 'function', end: /[\\{;]/, excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n 'self',\n hljs.inherit(hljs.TITLE_MODE, { begin: JS_IDENT_RE }),\n PARAMS\n ],\n illegal: /%/,\n relevance: 0 // () => {} is more typical in TypeScript\n },\n {\n beginKeywords: 'constructor', end: /\\{/, excludeEnd: true,\n contains: [\n 'self',\n PARAMS\n ]\n },\n { // prevent references like module.id from being higlighted as module definitions\n begin: /module\\./,\n keywords: { built_in: 'module' },\n relevance: 0\n },\n {\n beginKeywords: 'module', end: /\\{/, excludeEnd: true\n },\n {\n beginKeywords: 'interface', end: /\\{/, excludeEnd: true,\n keywords: 'interface extends'\n },\n {\n begin: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n },\n {\n begin: '\\\\.' + hljs.IDENT_RE, relevance: 0 // hack: prevents detection of keywords after dots\n },\n DECORATOR,\n ARGS\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword:\n // Value types\n 'char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 ' +\n 'uint16 uint32 uint64 float double bool struct enum string void ' +\n // Reference types\n 'weak unowned owned ' +\n // Modifiers\n 'async signal static abstract interface override virtual delegate ' +\n // Control Structures\n 'if while do for foreach else switch case break default return try catch ' +\n // Visibility\n 'public private protected internal ' +\n // Other\n 'using new this get set const stdout stdin stderr var',\n built_in:\n 'DBus GLib CCode Gee Object Gtk Posix',\n literal:\n 'false true null'\n },\n contains: [\n {\n className: 'class',\n beginKeywords: 'class interface namespace', end: '{', excludeEnd: true,\n illegal: '[^,:\\\\n\\\\s\\\\.]',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"',\n relevance: 5\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '^#', end: '$',\n relevance: 2\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['vb'],\n case_insensitive: true,\n keywords: {\n keyword:\n 'addhandler addressof alias and andalso aggregate ansi as assembly auto binary by byref byval ' + /* a-b */\n 'call case catch class compare const continue custom declare default delegate dim distinct do ' + /* c-d */\n 'each equals else elseif end enum erase error event exit explicit finally for friend from function ' + /* e-f */\n 'get global goto group handles if implements imports in inherits interface into is isfalse isnot istrue ' + /* g-i */\n 'join key let lib like loop me mid mod module mustinherit mustoverride mybase myclass ' + /* j-m */\n 'namespace narrowing new next not notinheritable notoverridable ' + /* n */\n 'of off on operator option optional or order orelse overloads overridable overrides ' + /* o */\n 'paramarray partial preserve private property protected public ' + /* p */\n 'raiseevent readonly redim rem removehandler resume return ' + /* r */\n 'select set shadows shared skip static step stop structure strict sub synclock ' + /* s */\n 'take text then throw to try unicode until using when where while widening with withevents writeonly xor', /* t-x */\n built_in:\n 'boolean byte cbool cbyte cchar cdate cdec cdbl char cint clng cobj csbyte cshort csng cstr ctype ' + /* b-c */\n 'date decimal directcast double gettype getxmlnamespace iif integer long object ' + /* d-o */\n 'sbyte short single string trycast typeof uinteger ulong ushort', /* s-u */\n literal:\n 'true false nothing'\n },\n illegal: '//|{|}|endif|gosub|variant|wend|^\\\\$ ', /* reserved deprecated keywords */\n contains: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [{begin: '\"\"'}]}),\n hljs.COMMENT(\n '\\'',\n '$',\n {\n returnBegin: true,\n contains: [\n {\n className: 'doctag',\n begin: '\\'\\'\\'|<!--|-->',\n contains: [hljs.PHRASAL_WORDS_MODE]\n },\n {\n className: 'doctag',\n begin: '</?', end: '>',\n contains: [hljs.PHRASAL_WORDS_MODE]\n }\n ]\n }\n ),\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '#', end: '$',\n keywords: {'meta-keyword': 'if else elseif end region externalsource'}\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['vbs'],\n case_insensitive: true,\n keywords: {\n keyword:\n 'call class const dim do loop erase execute executeglobal exit for each next function ' +\n 'if then else on error option explicit new private property let get public randomize ' +\n 'redim rem select case set stop sub while wend with end to elseif is or xor and not ' +\n 'class_initialize class_terminate default preserve in me byval byref step resume goto',\n built_in:\n 'lcase month vartype instrrev ubound setlocale getobject rgb getref string ' +\n 'weekdayname rnd dateadd monthname now day minute isarray cbool round formatcurrency ' +\n 'conversions csng timevalue second year space abs clng timeserial fixs len asc ' +\n 'isempty maths dateserial atn timer isobject filter weekday datevalue ccur isdate ' +\n 'instr datediff formatdatetime replace isnull right sgn array snumeric log cdbl hex ' +\n 'chr lbound msgbox ucase getlocale cos cdate cbyte rtrim join hour oct typename trim ' +\n 'strcomp int createobject loadpicture tan formatnumber mid scriptenginebuildversion ' +\n 'scriptengine split scriptengineminorversion cint sin datepart ltrim sqr ' +\n 'scriptenginemajorversion time derived eval date formatpercent exp inputbox left ascw ' +\n 'chrw regexp server response request cstr err',\n literal:\n 'true false null nothing empty'\n },\n illegal: '//',\n contains: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [{begin: '\"\"'}]}),\n hljs.COMMENT(\n /'/,\n /$/,\n {\n relevance: 0\n }\n ),\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n subLanguage: 'xml',\n contains: [\n {\n begin: '<%', end: '%>',\n subLanguage: 'vbscript'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var SV_KEYWORDS = {\n keyword:\n 'accept_on alias always always_comb always_ff always_latch and assert assign ' +\n 'assume automatic before begin bind bins binsof bit break buf|0 bufif0 bufif1 ' +\n 'byte case casex casez cell chandle checker class clocking cmos config const ' +\n 'constraint context continue cover covergroup coverpoint cross deassign default ' +\n 'defparam design disable dist do edge else end endcase endchecker endclass ' +\n 'endclocking endconfig endfunction endgenerate endgroup endinterface endmodule ' +\n 'endpackage endprimitive endprogram endproperty endspecify endsequence endtable ' +\n 'endtask enum event eventually expect export extends extern final first_match for ' +\n 'force foreach forever fork forkjoin function generate|5 genvar global highz0 highz1 ' +\n 'if iff ifnone ignore_bins illegal_bins implements implies import incdir include ' +\n 'initial inout input inside instance int integer interconnect interface intersect ' +\n 'join join_any join_none large let liblist library local localparam logic longint ' +\n 'macromodule matches medium modport module nand negedge nettype new nexttime nmos ' +\n 'nor noshowcancelled not notif0 notif1 or output package packed parameter pmos ' +\n 'posedge primitive priority program property protected pull0 pull1 pulldown pullup ' +\n 'pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos ' +\n 'real realtime ref reg reject_on release repeat restrict return rnmos rpmos rtran ' +\n 'rtranif0 rtranif1 s_always s_eventually s_nexttime s_until s_until_with scalared ' +\n 'sequence shortint shortreal showcancelled signed small soft solve specify specparam ' +\n 'static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on ' +\n 'sync_reject_on table tagged task this throughout time timeprecision timeunit tran ' +\n 'tranif0 tranif1 tri tri0 tri1 triand trior trireg type typedef union unique unique0 ' +\n 'unsigned until until_with untyped use uwire var vectored virtual void wait wait_order ' +\n 'wand weak weak0 weak1 while wildcard wire with within wor xnor xor',\n literal:\n 'null',\n built_in:\n '$finish $stop $exit $fatal $error $warning $info $realtime $time $printtimescale ' +\n '$bitstoreal $bitstoshortreal $itor $signed $cast $bits $stime $timeformat ' +\n '$realtobits $shortrealtobits $rtoi $unsigned $asserton $assertkill $assertpasson ' +\n '$assertfailon $assertnonvacuouson $assertoff $assertcontrol $assertpassoff ' +\n '$assertfailoff $assertvacuousoff $isunbounded $sampled $fell $changed $past_gclk ' +\n '$fell_gclk $changed_gclk $rising_gclk $steady_gclk $coverage_control ' +\n '$coverage_get $coverage_save $set_coverage_db_name $rose $stable $past ' +\n '$rose_gclk $stable_gclk $future_gclk $falling_gclk $changing_gclk $display ' +\n '$coverage_get_max $coverage_merge $get_coverage $load_coverage_db $typename ' +\n '$unpacked_dimensions $left $low $increment $clog2 $ln $log10 $exp $sqrt $pow ' +\n '$floor $ceil $sin $cos $tan $countbits $onehot $isunknown $fatal $warning ' +\n '$dimensions $right $high $size $asin $acos $atan $atan2 $hypot $sinh $cosh ' +\n '$tanh $asinh $acosh $atanh $countones $onehot0 $error $info $random ' +\n '$dist_chi_square $dist_erlang $dist_exponential $dist_normal $dist_poisson ' +\n '$dist_t $dist_uniform $q_initialize $q_remove $q_exam $async$and$array ' +\n '$async$nand$array $async$or$array $async$nor$array $sync$and$array ' +\n '$sync$nand$array $sync$or$array $sync$nor$array $q_add $q_full $psprintf ' +\n '$async$and$plane $async$nand$plane $async$or$plane $async$nor$plane ' +\n '$sync$and$plane $sync$nand$plane $sync$or$plane $sync$nor$plane $system ' +\n '$display $displayb $displayh $displayo $strobe $strobeb $strobeh $strobeo ' +\n '$write $readmemb $readmemh $writememh $value$plusargs ' +\n '$dumpvars $dumpon $dumplimit $dumpports $dumpportson $dumpportslimit ' +\n '$writeb $writeh $writeo $monitor $monitorb $monitorh $monitoro $writememb ' +\n '$dumpfile $dumpoff $dumpall $dumpflush $dumpportsoff $dumpportsall ' +\n '$dumpportsflush $fclose $fdisplay $fdisplayb $fdisplayh $fdisplayo ' +\n '$fstrobe $fstrobeb $fstrobeh $fstrobeo $swrite $swriteb $swriteh ' +\n '$swriteo $fscanf $fread $fseek $fflush $feof $fopen $fwrite $fwriteb ' +\n '$fwriteh $fwriteo $fmonitor $fmonitorb $fmonitorh $fmonitoro $sformat ' +\n '$sformatf $fgetc $ungetc $fgets $sscanf $rewind $ftell $ferror'\n };\n return {\n aliases: ['v', 'sv', 'svh'],\n case_insensitive: false,\n keywords: SV_KEYWORDS, lexemes: /[\\w\\$]+/,\n contains: [\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'number',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {begin: '\\\\b((\\\\d+\\'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)'},\n {begin: '\\\\B((\\'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)'},\n {begin: '\\\\b([0-9_])+', relevance: 0}\n ]\n },\n /* parameters to instances */\n {\n className: 'variable',\n variants: [\n {begin: '#\\\\((?!parameter).+\\\\)'},\n {begin: '\\\\.\\\\w+', relevance: 0},\n ]\n },\n {\n className: 'meta',\n begin: '`', end: '$',\n keywords: {'meta-keyword': 'define __FILE__ ' +\n '__LINE__ begin_keywords celldefine default_nettype define ' +\n 'else elsif end_keywords endcelldefine endif ifdef ifndef ' +\n 'include line nounconnected_drive pragma resetall timescale ' +\n 'unconnected_drive undef undefineall'},\n relevance: 0\n }\n ]\n }; // return\n};","module.exports = function(hljs) {\n // Regular expression for VHDL numeric literals.\n\n // Decimal literal:\n var INTEGER_RE = '\\\\d(_|\\\\d)*';\n var EXPONENT_RE = '[eE][-+]?' + INTEGER_RE;\n var DECIMAL_LITERAL_RE = INTEGER_RE + '(\\\\.' + INTEGER_RE + ')?' + '(' + EXPONENT_RE + ')?';\n // Based literal:\n var BASED_INTEGER_RE = '\\\\w+';\n var BASED_LITERAL_RE = INTEGER_RE + '#' + BASED_INTEGER_RE + '(\\\\.' + BASED_INTEGER_RE + ')?' + '#' + '(' + EXPONENT_RE + ')?';\n\n var NUMBER_RE = '\\\\b(' + BASED_LITERAL_RE + '|' + DECIMAL_LITERAL_RE + ')';\n\n return {\n case_insensitive: true,\n keywords: {\n keyword:\n 'abs access after alias all and architecture array assert assume assume_guarantee attribute ' +\n 'begin block body buffer bus case component configuration constant context cover disconnect ' +\n 'downto default else elsif end entity exit fairness file for force function generate ' +\n 'generic group guarded if impure in inertial inout is label library linkage literal ' +\n 'loop map mod nand new next nor not null of on open or others out package parameter port ' +\n 'postponed procedure process property protected pure range record register reject ' +\n 'release rem report restrict restrict_guarantee return rol ror select sequence ' +\n 'severity shared signal sla sll sra srl strong subtype then to transport type ' +\n 'unaffected units until use variable view vmode vprop vunit wait when while with xnor xor',\n built_in:\n 'boolean bit character ' +\n 'integer time delay_length natural positive ' +\n 'string bit_vector file_open_kind file_open_status ' +\n 'std_logic std_logic_vector unsigned signed boolean_vector integer_vector ' +\n 'std_ulogic std_ulogic_vector unresolved_unsigned u_unsigned unresolved_signed u_signed ' +\n 'real_vector time_vector',\n literal:\n 'false true note warning error failure ' + // severity_level\n 'line text side width' // textio\n },\n illegal: '{',\n contains: [\n hljs.C_BLOCK_COMMENT_MODE, // VHDL-2008 block commenting.\n hljs.COMMENT('--', '$'),\n hljs.QUOTE_STRING_MODE,\n {\n className: 'number',\n begin: NUMBER_RE,\n relevance: 0\n },\n {\n className: 'string',\n begin: '\\'(U|X|0|1|Z|W|L|H|-)\\'',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n className: 'symbol',\n begin: '\\'[A-Za-z](_?[A-Za-z0-9])*',\n contains: [hljs.BACKSLASH_ESCAPE]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n lexemes: /[!#@\\w]+/,\n keywords: {\n keyword:\n // express version except: ! & * < = > !! # @ @@\n 'N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope '+\n 'cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc '+\n 'ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 '+\n 'profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor '+\n 'so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew '+\n 'tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ '+\n // full version\n 'Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload '+\n 'bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap '+\n 'cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor '+\n 'endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap '+\n 'imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview '+\n 'lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap '+\n 'nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext '+\n 'ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding '+\n 'scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace '+\n 'startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious '+'trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew '+\n 'vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank',\n built_in: //built in func\n 'synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv ' +\n 'complete_check add getwinposx getqflist getwinposy screencol ' +\n 'clearmatches empty extend getcmdpos mzeval garbagecollect setreg ' +\n 'ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable ' +\n 'shiftwidth max sinh isdirectory synID system inputrestore winline ' +\n 'atan visualmode inputlist tabpagewinnr round getregtype mapcheck ' +\n 'hasmapto histdel argidx findfile sha256 exists toupper getcmdline ' +\n 'taglist string getmatches bufnr strftime winwidth bufexists ' +\n 'strtrans tabpagebuflist setcmdpos remote_read printf setloclist ' +\n 'getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval ' +\n 'resolve libcallnr foldclosedend reverse filter has_key bufname ' +\n 'str2float strlen setline getcharmod setbufvar index searchpos ' +\n 'shellescape undofile foldclosed setqflist buflisted strchars str2nr ' +\n 'virtcol floor remove undotree remote_expr winheight gettabwinvar ' +\n 'reltime cursor tabpagenr finddir localtime acos getloclist search ' +\n 'tanh matchend rename gettabvar strdisplaywidth type abs py3eval ' +\n 'setwinvar tolower wildmenumode log10 spellsuggest bufloaded ' +\n 'synconcealed nextnonblank server2client complete settabwinvar ' +\n 'executable input wincol setmatches getftype hlID inputsave ' +\n 'searchpair or screenrow line settabvar histadd deepcopy strpart ' +\n 'remote_peek and eval getftime submatch screenchar winsaveview ' +\n 'matchadd mkdir screenattr getfontname libcall reltimestr getfsize ' +\n 'winnr invert pow getbufline byte2line soundfold repeat fnameescape ' +\n 'tagfiles sin strwidth spellbadword trunc maparg log lispindent ' +\n 'hostname setpos globpath remote_foreground getchar synIDattr ' +\n 'fnamemodify cscope_connection stridx winbufnr indent min ' +\n 'complete_add nr2char searchpairpos inputdialog values matchlist ' +\n 'items hlexists strridx browsedir expand fmod pathshorten line2byte ' +\n 'argc count getwinvar glob foldtextresult getreg foreground cosh ' +\n 'matchdelete has char2nr simplify histget searchdecl iconv ' +\n 'winrestcmd pumvisible writefile foldlevel haslocaldir keys cos ' +\n 'matchstr foldtext histnr tan tempname getcwd byteidx getbufvar ' +\n 'islocked escape eventhandler remote_send serverlist winrestview ' +\n 'synstack pyeval prevnonblank readfile cindent filereadable changenr ' +\n 'exp'\n },\n illegal: /;/,\n contains: [\n hljs.NUMBER_MODE,\n {\n className: 'string',\n begin: '\\'', end: '\\'',\n illegal: '\\\\n'\n },\n\n /*\n A double quote can start either a string or a line comment. Strings are\n ended before the end of a line by another double quote and can contain\n escaped double-quotes and post-escaped line breaks.\n\n Also, any double quote at the beginning of a line is a comment but we\n don't handle that properly at the moment: any double quote inside will\n turn them into a string. Handling it properly will require a smarter\n parser.\n */\n {\n className: 'string',\n begin: /\"(\\\\\"|\\n\\\\|[^\"\\n])*\"/\n },\n hljs.COMMENT('\"', '$'),\n\n {\n className: 'variable',\n begin: /[bwtglsav]:[\\w\\d_]*/\n },\n {\n className: 'function',\n beginKeywords: 'function function!', end: '$',\n relevance: 0,\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)'\n }\n ]\n },\n {\n className: 'symbol',\n begin: /<[\\w-]+>/\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n lexemes: '[.%]?' + hljs.IDENT_RE,\n keywords: {\n keyword:\n 'lock rep repe repz repne repnz xaquire xrelease bnd nobnd ' +\n 'aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63',\n built_in:\n // Instruction pointer\n 'ip eip rip ' +\n // 8-bit registers\n 'al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ' +\n // 16-bit registers\n 'ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w ' +\n // 32-bit registers\n 'eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d ' +\n // 64-bit registers\n 'rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 ' +\n // Segment registers\n 'cs ds es fs gs ss ' +\n // Floating point stack registers\n 'st st0 st1 st2 st3 st4 st5 st6 st7 ' +\n // MMX Registers\n 'mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 ' +\n // SSE registers\n 'xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 ' +\n 'xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ' +\n // AVX registers\n 'ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ' +\n 'ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 ' +\n // AVX-512F registers\n 'zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 ' +\n 'zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 ' +\n // AVX-512F mask registers\n 'k0 k1 k2 k3 k4 k5 k6 k7 ' +\n // Bound (MPX) register\n 'bnd0 bnd1 bnd2 bnd3 ' +\n // Special register\n 'cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 ' +\n // NASM altreg package\n 'r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b ' +\n 'r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d ' +\n 'r0h r1h r2h r3h ' +\n 'r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l ' +\n\n 'db dw dd dq dt ddq do dy dz ' +\n 'resb resw resd resq rest resdq reso resy resz ' +\n 'incbin equ times ' +\n 'byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr',\n\n meta:\n '%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif ' +\n '%if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep ' +\n '%endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment ' +\n '.nolist ' +\n '__FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ ' +\n '__UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend ' +\n 'align alignb sectalign daz nodaz up down zero default option assume public ' +\n\n 'bits use16 use32 use64 default section segment absolute extern global common cpu float ' +\n '__utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ ' +\n '__float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ ' +\n '__Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e ' +\n 'float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__'\n },\n contains: [\n hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n ),\n {\n className: 'number',\n variants: [\n // Float number and x87 BCD\n {\n begin: '\\\\b(?:([0-9][0-9_]*)?\\\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|' +\n '(0[Xx])?[0-9][0-9_]*\\\\.?[0-9_]*(?:[pP](?:[+-]?[0-9_]+)?)?)\\\\b',\n relevance: 0\n },\n\n // Hex number in $\n { begin: '\\\\$[0-9][0-9A-Fa-f]*', relevance: 0 },\n\n // Number in H,D,T,Q,O,B,Y suffix\n { begin: '\\\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\\\b' },\n\n // Number in X,D,T,Q,O,B,Y prefix\n { begin: '\\\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\\\b'}\n ]\n },\n // Double quote string\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n variants: [\n // Single-quoted string\n { begin: '\\'', end: '[^\\\\\\\\]\\'' },\n // Backquoted string\n { begin: '`', end: '[^\\\\\\\\]`' }\n ],\n relevance: 0\n },\n {\n className: 'symbol',\n variants: [\n // Global label and local label\n { begin: '^\\\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\\\s+label)' },\n // Macro-local label\n { begin: '^\\\\s*%%[A-Za-z0-9_$#@~.?]*:' }\n ],\n relevance: 0\n },\n // Macro parameter\n {\n className: 'subst',\n begin: '%[0-9]+',\n relevance: 0\n },\n // Macro parameter\n {\n className: 'subst',\n begin: '%!\\S+',\n relevance: 0\n },\n {\n className: 'meta',\n begin: /^\\s*\\.[\\w_-]+/\n }\n ]\n };\n};","module.exports = function(hljs) {\n var BUILTIN_MODULES =\n 'ObjectLoader Animate MovieCredits Slides Filters Shading Materials LensFlare Mapping VLCAudioVideo ' +\n 'StereoDecoder PointCloud NetworkAccess RemoteControl RegExp ChromaKey Snowfall NodeJS Speech Charts';\n\n var XL_KEYWORDS = {\n keyword:\n 'if then else do while until for loop import with is as where when by data constant ' +\n 'integer real text name boolean symbol infix prefix postfix block tree',\n literal:\n 'true false nil',\n built_in:\n 'in mod rem and or xor not abs sign floor ceil sqrt sin cos tan asin ' +\n 'acos atan exp expm1 log log2 log10 log1p pi at text_length text_range ' +\n 'text_find text_replace contains page slide basic_slide title_slide ' +\n 'title subtitle fade_in fade_out fade_at clear_color color line_color ' +\n 'line_width texture_wrap texture_transform texture scale_?x scale_?y ' +\n 'scale_?z? translate_?x translate_?y translate_?z? rotate_?x rotate_?y ' +\n 'rotate_?z? rectangle circle ellipse sphere path line_to move_to ' +\n 'quad_to curve_to theme background contents locally time mouse_?x ' +\n 'mouse_?y mouse_buttons ' +\n BUILTIN_MODULES\n };\n\n var DOUBLE_QUOTE_TEXT = {\n className: 'string',\n begin: '\"', end: '\"', illegal: '\\\\n'\n };\n var SINGLE_QUOTE_TEXT = {\n className: 'string',\n begin: '\\'', end: '\\'', illegal: '\\\\n'\n };\n var LONG_TEXT = {\n className: 'string',\n begin: '<<', end: '>>'\n };\n var BASED_NUMBER = {\n className: 'number',\n begin: '[0-9]+#[0-9A-Z_]+(\\\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?'\n };\n var IMPORT = {\n beginKeywords: 'import', end: '$',\n keywords: XL_KEYWORDS,\n contains: [DOUBLE_QUOTE_TEXT]\n };\n var FUNCTION_DEFINITION = {\n className: 'function',\n begin: /[a-z][^\\n]*->/, returnBegin: true, end: /->/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {starts: {\n endsWithParent: true,\n keywords: XL_KEYWORDS\n }})\n ]\n };\n return {\n aliases: ['tao'],\n lexemes: /[a-zA-Z][a-zA-Z0-9_?]*/,\n keywords: XL_KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n DOUBLE_QUOTE_TEXT,\n SINGLE_QUOTE_TEXT,\n LONG_TEXT,\n FUNCTION_DEFINITION,\n IMPORT,\n BASED_NUMBER,\n hljs.NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = 'for let if while then else return where group by xquery encoding version' +\n 'module namespace boundary-space preserve strip default collation base-uri ordering' +\n 'copy-namespaces order declare import schema namespace function option in allowing empty' +\n 'at tumbling window sliding window start when only end when previous next stable ascending' +\n 'descending empty greatest least some every satisfies switch case typeswitch try catch and' +\n 'or to union intersect instance of treat as castable cast map array delete insert into' +\n 'replace value rename copy modify update';\n var LITERAL = 'false true xs:string xs:integer element item xs:date xs:datetime xs:float xs:double xs:decimal QName xs:anyURI xs:long xs:int xs:short xs:byte attribute';\n var VAR = {\n begin: /\\$[a-zA-Z0-9\\-]+/\n };\n\n var NUMBER = {\n className: 'number',\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n relevance: 0\n };\n\n var STRING = {\n className: 'string',\n variants: [\n {begin: /\"/, end: /\"/, contains: [{begin: /\"\"/, relevance: 0}]},\n {begin: /'/, end: /'/, contains: [{begin: /''/, relevance: 0}]}\n ]\n };\n\n var ANNOTATION = {\n className: 'meta',\n begin: '%\\\\w+'\n };\n\n var COMMENT = {\n className: 'comment',\n begin: '\\\\(:', end: ':\\\\)',\n relevance: 10,\n contains: [\n {\n className: 'doctag', begin: '@\\\\w+'\n }\n ]\n };\n\n var METHOD = {\n begin: '{', end: '}'\n };\n\n var CONTAINS = [\n VAR,\n STRING,\n NUMBER,\n COMMENT,\n ANNOTATION,\n METHOD\n ];\n METHOD.contains = CONTAINS;\n\n\n return {\n aliases: ['xpath', 'xq'],\n case_insensitive: false,\n lexemes: /[a-zA-Z\\$][a-zA-Z0-9_:\\-]*/,\n illegal: /(proc)|(abstract)|(extends)|(until)|(#)/,\n keywords: {\n keyword: KEYWORDS,\n literal: LITERAL\n },\n contains: CONTAINS\n };\n};","module.exports = function(hljs) {\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {\n begin: 'b\"', end: '\"'\n },\n {\n begin: 'b\\'', end: '\\''\n },\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null})\n ]\n };\n var NUMBER = {variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]};\n return {\n aliases: ['zep'],\n case_insensitive: true,\n keywords:\n 'and include_once list abstract global private echo interface as static endswitch ' +\n 'array null if endwhile or const for endforeach self var let while isset public ' +\n 'protected exit foreach throw elseif include __FILE__ empty require_once do xor ' +\n 'return parent clone use __CLASS__ __LINE__ else break print eval new ' +\n 'catch __METHOD__ case exception default die require __FUNCTION__ ' +\n 'enddeclare final try switch continue endfor endif declare unset true false ' +\n 'trait goto instanceof insteadof __DIR__ __NAMESPACE__ ' +\n 'yield finally int uint long ulong char uchar double float bool boolean string' +\n 'likely unlikely',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT(\n '/\\\\*',\n '\\\\*/',\n {\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.COMMENT(\n '__halt_compiler.+?;',\n false,\n {\n endsWithParent: true,\n keywords: '__halt_compiler',\n lexemes: hljs.UNDERSCORE_IDENT_RE\n }\n ),\n {\n className: 'string',\n begin: '<<<[\\'\"]?\\\\w+[\\'\"]?$', end: '^\\\\w+;',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n // swallow composed identifiers to avoid parsing them as keywords\n begin: /(::|->)+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/\n },\n {\n className: 'function',\n beginKeywords: 'function', end: /[;{]/, excludeEnd: true,\n illegal: '\\\\$|\\\\[|%',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n contains: [\n 'self',\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER\n ]\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface', end: '{', excludeEnd: true,\n illegal: /[:\\(\\$\"]/,\n contains: [\n {beginKeywords: 'extends implements'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n beginKeywords: 'namespace', end: ';',\n illegal: /[\\.']/,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n beginKeywords: 'use', end: ';',\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n begin: '=>' // No markup, just a relevance booster\n },\n STRING,\n NUMBER\n ]\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _InteractiveAuthEntryComponents = require('../views/login/InteractiveAuthEntryComponents');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar InteractiveAuth = _matrixJsSdk2.default.InteractiveAuth; /*\n Copyright 2017 Vector Creations Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = _react2.default.createClass({\n displayName: 'InteractiveAuth',\n\n propTypes: {\n // matrix client to use for UI auth requests\n matrixClient: _propTypes2.default.object.isRequired,\n\n // response from initial request. If not supplied, will do a request on\n // mount.\n authData: _propTypes2.default.shape({\n flows: _propTypes2.default.array,\n params: _propTypes2.default.object,\n session: _propTypes2.default.string\n }),\n\n // callback\n makeRequest: _propTypes2.default.func.isRequired,\n\n // callback called when the auth process has finished,\n // successfully or unsuccessfully.\n // @param {bool} status True if the operation requiring\n // auth was completed sucessfully, false if canceled.\n // @param {object} result The result of the authenticated call\n // if successful, otherwise the error object\n // @param {object} extra Additional information about the UI Auth\n // process:\n // * emailSid {string} If email auth was performed, the sid of\n // the auth session.\n // * clientSecret {string} The client secret used in auth\n // sessions with the ID server.\n onAuthFinished: _propTypes2.default.func.isRequired,\n\n // Inputs provided by the user to the auth process\n // and used by various stages. As passed to js-sdk\n // interactive-auth\n inputs: _propTypes2.default.object,\n\n // As js-sdk interactive-auth\n makeRegistrationUrl: _propTypes2.default.func,\n sessionId: _propTypes2.default.string,\n clientSecret: _propTypes2.default.string,\n emailSid: _propTypes2.default.string,\n\n // If true, poll to see if the auth flow has been completed\n // out-of-band\n poll: _propTypes2.default.bool,\n\n // If true, components will be told that the 'Continue' button\n // is managed by some other party and should not be managed by\n // the component itself.\n continueIsManaged: _propTypes2.default.bool\n },\n\n getInitialState: function getInitialState() {\n return {\n authStage: null,\n busy: false,\n errorText: null,\n stageErrorText: null,\n submitButtonEnabled: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this._unmounted = false;\n this._authLogic = new InteractiveAuth({\n authData: this.props.authData,\n doRequest: this._requestCallback,\n inputs: this.props.inputs,\n stateUpdated: this._authStateUpdated,\n matrixClient: this.props.matrixClient,\n sessionId: this.props.sessionId,\n clientSecret: this.props.clientSecret,\n emailSid: this.props.emailSid\n });\n\n this._authLogic.attemptAuth().then(function (result) {\n var extra = {\n emailSid: _this._authLogic.getEmailSid(),\n clientSecret: _this._authLogic.getClientSecret()\n };\n _this.props.onAuthFinished(true, result, extra);\n }).catch(function (error) {\n _this.props.onAuthFinished(false, error);\n console.error(\"Error during user-interactive auth:\", error);\n if (_this._unmounted) {\n return;\n }\n\n var msg = error.message || error.toString();\n _this.setState({\n errorText: msg\n });\n }).done();\n\n this._intervalId = null;\n if (this.props.poll) {\n this._intervalId = setInterval(function () {\n _this._authLogic.poll();\n }, 2000);\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n\n if (this._intervalId !== null) {\n clearInterval(this._intervalId);\n }\n },\n\n tryContinue: function tryContinue() {\n if (this.refs.stageComponent && this.refs.stageComponent.tryContinue) {\n this.refs.stageComponent.tryContinue();\n }\n },\n\n _authStateUpdated: function _authStateUpdated(stageType, stageState) {\n var _this2 = this;\n\n var oldStage = this.state.authStage;\n this.setState({\n authStage: stageType,\n stageState: stageState,\n errorText: stageState.error\n }, function () {\n if (oldStage != stageType) _this2._setFocus();\n });\n },\n\n _requestCallback: function _requestCallback(auth, background) {\n var _this3 = this;\n\n var makeRequestPromise = this.props.makeRequest(auth);\n\n // if it's a background request, just do it: we don't want\n // it to affect the state of our UI.\n if (background) return makeRequestPromise;\n\n // otherwise, manage the state of the spinner and error messages\n this.setState({\n busy: true,\n errorText: null,\n stageErrorText: null\n });\n return makeRequestPromise.finally(function () {\n if (_this3._unmounted) {\n return;\n }\n _this3.setState({\n busy: false\n });\n });\n },\n\n _setFocus: function _setFocus() {\n if (this.refs.stageComponent && this.refs.stageComponent.focus) {\n this.refs.stageComponent.focus();\n }\n },\n\n _submitAuthDict: function _submitAuthDict(authData) {\n this._authLogic.submitAuthDict(authData);\n },\n\n _renderCurrentStage: function _renderCurrentStage() {\n var stage = this.state.authStage;\n if (!stage) return null;\n\n var StageComponent = (0, _InteractiveAuthEntryComponents.getEntryComponentForLoginType)(stage);\n return _react2.default.createElement(StageComponent, { ref: 'stageComponent',\n loginType: stage,\n matrixClient: this.props.matrixClient,\n authSessionId: this._authLogic.getSessionId(),\n clientSecret: this._authLogic.getClientSecret(),\n stageParams: this._authLogic.getStageParams(stage),\n submitAuthDict: this._submitAuthDict,\n errorText: this.state.stageErrorText,\n busy: this.state.busy,\n inputs: this.props.inputs,\n stageState: this.state.stageState,\n fail: this._onAuthStageFailed,\n setEmailSid: this._setEmailSid,\n makeRegistrationUrl: this.props.makeRegistrationUrl,\n showContinue: !this.props.continueIsManaged\n });\n },\n\n _onAuthStageFailed: function _onAuthStageFailed(e) {\n this.props.onAuthFinished(false, e);\n },\n _setEmailSid: function _setEmailSid(sid) {\n this._authLogic.setEmailSid(sid);\n },\n\n render: function render() {\n var error = null;\n if (this.state.errorText) {\n error = _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.errorText\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n this._renderCurrentStage(),\n error\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=InteractiveAuth.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _Keyboard = require('../../Keyboard');\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _VectorConferenceHandler = require('../../VectorConferenceHandler');\n\nvar _VectorConferenceHandler2 = _interopRequireDefault(_VectorConferenceHandler);\n\nvar _SettingsStore = require('../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LeftPanel = _react2.default.createClass({\n displayName: 'LeftPanel',\n\n // NB. If you add props, don't forget to update\n // shouldComponentUpdate!\n propTypes: {\n collapsed: _propTypes2.default.bool.isRequired\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getInitialState: function getInitialState() {\n return {\n searchFilter: ''\n };\n },\n\n componentWillMount: function componentWillMount() {\n this.focusedElement = null;\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n // MatrixChat will update whenever the user switches\n // rooms, but propagating this change all the way down\n // the react tree is quite slow, so we cut this off\n // here. The RoomTiles listen for the room change\n // events themselves to know when to update.\n // We just need to update if any of these things change.\n if (this.props.collapsed !== nextProps.collapsed || this.props.disabled !== nextProps.disabled) {\n return true;\n }\n\n if (this.state.searchFilter !== nextState.searchFilter) {\n return true;\n }\n\n return false;\n },\n\n _onFocus: function _onFocus(ev) {\n this.focusedElement = ev.target;\n },\n\n _onBlur: function _onBlur(ev) {\n this.focusedElement = null;\n },\n\n _onKeyDown: function _onKeyDown(ev) {\n if (!this.focusedElement) return;\n var handled = true;\n\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.TAB:\n this._onMoveFocus(ev.shiftKey);\n break;\n case _Keyboard.KeyCode.UP:\n this._onMoveFocus(true);\n break;\n case _Keyboard.KeyCode.DOWN:\n this._onMoveFocus(false);\n break;\n case _Keyboard.KeyCode.ENTER:\n this._onMoveFocus(false);\n if (this.focusedElement) {\n this.focusedElement.click();\n }\n break;\n default:\n handled = false;\n }\n\n if (handled) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n },\n\n _onMoveFocus: function _onMoveFocus(up) {\n var element = this.focusedElement;\n\n // unclear why this isn't needed\n // var descending = (up == this.focusDirection) ? this.focusDescending : !this.focusDescending;\n // this.focusDirection = up;\n\n var descending = false; // are we currently descending or ascending through the DOM tree?\n var classes = void 0;\n\n do {\n var child = up ? element.lastElementChild : element.firstElementChild;\n var sibling = up ? element.previousElementSibling : element.nextElementSibling;\n\n if (descending) {\n if (child) {\n element = child;\n } else if (sibling) {\n element = sibling;\n } else {\n descending = false;\n element = element.parentElement;\n }\n } else {\n if (sibling) {\n element = sibling;\n descending = true;\n } else {\n element = element.parentElement;\n }\n }\n\n if (element) {\n classes = element.classList;\n if (classes.contains(\"mx_LeftPanel\")) {\n // we hit the top\n element = up ? element.lastElementChild : element.firstElementChild;\n descending = true;\n }\n }\n } while (element && !(classes.contains(\"mx_RoomTile\") || classes.contains(\"mx_SearchBox_search\") || classes.contains(\"mx_RoomSubList_ellipsis\")));\n\n if (element) {\n element.focus();\n this.focusedElement = element;\n this.focusedDescending = descending;\n }\n },\n\n onHideClick: function onHideClick() {\n _dispatcher2.default.dispatch({\n action: 'hide_left_panel'\n });\n },\n\n onSearch: function onSearch(term) {\n this.setState({ searchFilter: term });\n },\n\n collectRoomList: function collectRoomList(ref) {\n this._roomList = ref;\n },\n\n render: function render() {\n var RoomList = _index2.default.getComponent('rooms.RoomList');\n var TagPanel = _index2.default.getComponent('structures.TagPanel');\n var BottomLeftMenu = _index2.default.getComponent('structures.BottomLeftMenu');\n var CallPreview = _index2.default.getComponent('voip.CallPreview');\n\n var SearchBox = _index2.default.getComponent('structures.SearchBox');\n var topBox = _react2.default.createElement(SearchBox, { collapsed: this.props.collapsed, onSearch: this.onSearch });\n\n var classes = (0, _classnames2.default)(\"mx_LeftPanel\", {\n \"collapsed\": this.props.collapsed\n });\n\n var tagPanelEnabled = !_SettingsStore2.default.getValue(\"TagPanel.disableTagPanel\");\n var tagPanel = tagPanelEnabled ? _react2.default.createElement(TagPanel, null) : _react2.default.createElement('div', null);\n\n var containerClasses = (0, _classnames2.default)(\"mx_LeftPanel_container\", \"mx_fadable\", {\n \"mx_LeftPanel_container_collapsed\": this.props.collapsed,\n \"mx_LeftPanel_container_hasTagPanel\": tagPanelEnabled,\n \"mx_fadable_faded\": this.props.disabled\n });\n\n return _react2.default.createElement(\n 'div',\n { className: containerClasses },\n tagPanel,\n _react2.default.createElement(\n 'aside',\n { className: classes, onKeyDown: this._onKeyDown, onFocus: this._onFocus, onBlur: this._onBlur },\n topBox,\n _react2.default.createElement(CallPreview, { ConferenceHandler: _VectorConferenceHandler2.default }),\n _react2.default.createElement(RoomList, {\n ref: this.collectRoomList,\n collapsed: this.props.collapsed,\n searchFilter: this.state.searchFilter,\n ConferenceHandler: _VectorConferenceHandler2.default }),\n _react2.default.createElement(BottomLeftMenu, { collapsed: this.props.collapsed })\n )\n );\n }\n});\n\nmodule.exports = LeftPanel;\n//# sourceMappingURL=LeftPanel.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _set = require('babel-runtime/core-js/set');\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _bluebird = require('bluebird');\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar Matrix = _interopRequireWildcard(_matrixJsSdk);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactBeautifulDnd = require('react-beautiful-dnd');\n\nvar _Keyboard = require('../../Keyboard');\n\nvar _Notifier = require('../../Notifier');\n\nvar _Notifier2 = _interopRequireDefault(_Notifier);\n\nvar _PageTypes = require('../../PageTypes');\n\nvar _PageTypes2 = _interopRequireDefault(_PageTypes);\n\nvar _CallMediaHandler = require('../../CallMediaHandler');\n\nvar _CallMediaHandler2 = _interopRequireDefault(_CallMediaHandler);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _SessionStore = require('../../stores/SessionStore');\n\nvar _SessionStore2 = _interopRequireDefault(_SessionStore);\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _SettingsStore = require('../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _RoomListStore = require('../../stores/RoomListStore');\n\nvar _RoomListStore2 = _interopRequireDefault(_RoomListStore);\n\nvar _TagOrderActions = require('../../actions/TagOrderActions');\n\nvar _TagOrderActions2 = _interopRequireDefault(_TagOrderActions);\n\nvar _RoomListActions = require('../../actions/RoomListActions');\n\nvar _RoomListActions2 = _interopRequireDefault(_RoomListActions);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// We need to fetch each pinned message individually (if we don't already have it)\n// so each pinned message may trigger a request. Limit the number per room for sanity.\n// NB. this is just for server notices rather than pinned messages in general.\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MAX_PINNED_NOTICES_PER_ROOM = 2;\n\n/**\n * This is what our MatrixChat shows when we are logged in. The precise view is\n * determined by the page_type property.\n *\n * Currently it's very tightly coupled with MatrixChat. We should try to do\n * something about that.\n *\n * Components mounted below us can access the matrix client via the react context.\n */\nvar LoggedInView = _react2.default.createClass({\n displayName: 'LoggedInView',\n\n propTypes: {\n matrixClient: _propTypes2.default.instanceOf(Matrix.MatrixClient).isRequired,\n page_type: _propTypes2.default.string.isRequired,\n onRoomCreated: _propTypes2.default.func,\n onUserSettingsClose: _propTypes2.default.func,\n\n // Called with the credentials of a registered user (if they were a ROU that\n // transitioned to PWLU)\n onRegistered: _propTypes2.default.func,\n\n teamToken: _propTypes2.default.string,\n\n // Used by the RoomView to handle joining rooms\n viaServers: _propTypes2.default.arrayOf(_propTypes2.default.string)\n\n // and lots and lots of other stuff.\n },\n\n childContextTypes: {\n matrixClient: _propTypes2.default.instanceOf(Matrix.MatrixClient),\n authCache: _propTypes2.default.object\n },\n\n getChildContext: function getChildContext() {\n return {\n matrixClient: this._matrixClient,\n authCache: {\n auth: {},\n lastUpdate: 0\n }\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n // use compact timeline view\n useCompactLayout: _SettingsStore2.default.getValue('useCompactLayout'),\n // any currently active server notice events\n serverNoticeEvents: []\n };\n },\n\n componentWillMount: function componentWillMount() {\n // stash the MatrixClient in case we log out before we are unmounted\n this._matrixClient = this.props.matrixClient;\n\n _CallMediaHandler2.default.loadDevices();\n\n document.addEventListener('keydown', this._onKeyDown);\n\n this._sessionStore = _SessionStore2.default;\n this._sessionStoreToken = this._sessionStore.addListener(this._setStateFromSessionStore);\n this._setStateFromSessionStore();\n\n this._updateServerNoticeEvents();\n\n this._matrixClient.on(\"accountData\", this.onAccountData);\n this._matrixClient.on(\"sync\", this.onSync);\n this._matrixClient.on(\"RoomState.events\", this.onRoomStateEvents);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n document.removeEventListener('keydown', this._onKeyDown);\n this._matrixClient.removeListener(\"accountData\", this.onAccountData);\n this._matrixClient.removeListener(\"sync\", this.onSync);\n this._matrixClient.removeListener(\"RoomState.events\", this.onRoomStateEvents);\n if (this._sessionStoreToken) {\n this._sessionStoreToken.remove();\n }\n },\n\n // Child components assume that the client peg will not be null, so give them some\n // sort of assurance here by only allowing a re-render if the client is truthy.\n //\n // This is required because `LoggedInView` maintains its own state and if this state\n // updates after the client peg has been made null (during logout), then it will\n // attempt to re-render and the children will throw errors.\n shouldComponentUpdate: function shouldComponentUpdate() {\n return Boolean(_MatrixClientPeg2.default.get());\n },\n\n canResetTimelineInRoom: function canResetTimelineInRoom(roomId) {\n if (!this.refs.roomView) {\n return true;\n }\n return this.refs.roomView.canResetTimeline();\n },\n\n _setStateFromSessionStore: function _setStateFromSessionStore() {\n this.setState({\n userHasGeneratedPassword: Boolean(this._sessionStore.getCachedPassword())\n });\n },\n\n\n onAccountData: function onAccountData(event) {\n if (event.getType() === \"im.vector.web.settings\") {\n this.setState({\n useCompactLayout: event.getContent().useCompactLayout\n });\n }\n if (event.getType() === \"m.ignored_user_list\") {\n _dispatcher2.default.dispatch({ action: \"ignore_state_changed\" });\n }\n },\n\n onSync: function onSync(syncState, oldSyncState, data) {\n var oldErrCode = this.state.syncErrorData && this.state.syncErrorData.error && this.state.syncErrorData.error.errcode;\n var newErrCode = data && data.error && data.error.errcode;\n if (syncState === oldSyncState && oldErrCode === newErrCode) return;\n\n if (syncState === 'ERROR') {\n this.setState({\n syncErrorData: data\n });\n } else {\n this.setState({\n syncErrorData: null\n });\n }\n\n if (oldSyncState === 'PREPARED' && syncState === 'SYNCING') {\n this._updateServerNoticeEvents();\n }\n },\n\n onRoomStateEvents: function onRoomStateEvents(ev, state) {\n var roomLists = _RoomListStore2.default.getRoomLists();\n if (roomLists['m.server_notice'] && roomLists['m.server_notice'].some(function (r) {\n return r.roomId === ev.getRoomId();\n })) {\n this._updateServerNoticeEvents();\n }\n },\n\n _updateServerNoticeEvents: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this = this;\n\n var roomLists, pinnedEvents, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, room, pinStateEvent, pinnedEventIds, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _loop, _iterator2, _step2;\n\n return _regenerator2.default.wrap(function _callee$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n roomLists = _RoomListStore2.default.getRoomLists();\n\n if (roomLists['m.server_notice']) {\n _context2.next = 3;\n break;\n }\n\n return _context2.abrupt('return', []);\n\n case 3:\n pinnedEvents = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context2.prev = 7;\n _iterator = (0, _getIterator3.default)(roomLists['m.server_notice']);\n\n case 9:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context2.next = 43;\n break;\n }\n\n room = _step.value;\n pinStateEvent = room.currentState.getStateEvents(\"m.room.pinned_events\", \"\");\n\n if (!(!pinStateEvent || !pinStateEvent.getContent().pinned)) {\n _context2.next = 14;\n break;\n }\n\n return _context2.abrupt('continue', 40);\n\n case 14:\n pinnedEventIds = pinStateEvent.getContent().pinned.slice(0, MAX_PINNED_NOTICES_PER_ROOM);\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context2.prev = 18;\n _loop = /*#__PURE__*/_regenerator2.default.mark(function _loop() {\n var eventId, timeline, ev;\n return _regenerator2.default.wrap(function _loop$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n eventId = _step2.value;\n _context.next = 3;\n return (0, _bluebird.resolve)(_this._matrixClient.getEventTimeline(room.getUnfilteredTimelineSet(), eventId, 0));\n\n case 3:\n timeline = _context.sent;\n ev = timeline.getEvents().find(function (ev) {\n return ev.getId() === eventId;\n });\n\n if (ev) pinnedEvents.push(ev);\n\n case 6:\n case 'end':\n return _context.stop();\n }\n }\n }, _loop, _this);\n });\n _iterator2 = (0, _getIterator3.default)(pinnedEventIds);\n\n case 21:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context2.next = 26;\n break;\n }\n\n return _context2.delegateYield(_loop(), 't0', 23);\n\n case 23:\n _iteratorNormalCompletion2 = true;\n _context2.next = 21;\n break;\n\n case 26:\n _context2.next = 32;\n break;\n\n case 28:\n _context2.prev = 28;\n _context2.t1 = _context2['catch'](18);\n _didIteratorError2 = true;\n _iteratorError2 = _context2.t1;\n\n case 32:\n _context2.prev = 32;\n _context2.prev = 33;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n\n case 35:\n _context2.prev = 35;\n\n if (!_didIteratorError2) {\n _context2.next = 38;\n break;\n }\n\n throw _iteratorError2;\n\n case 38:\n return _context2.finish(35);\n\n case 39:\n return _context2.finish(32);\n\n case 40:\n _iteratorNormalCompletion = true;\n _context2.next = 9;\n break;\n\n case 43:\n _context2.next = 49;\n break;\n\n case 45:\n _context2.prev = 45;\n _context2.t2 = _context2['catch'](7);\n _didIteratorError = true;\n _iteratorError = _context2.t2;\n\n case 49:\n _context2.prev = 49;\n _context2.prev = 50;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 52:\n _context2.prev = 52;\n\n if (!_didIteratorError) {\n _context2.next = 55;\n break;\n }\n\n throw _iteratorError;\n\n case 55:\n return _context2.finish(52);\n\n case 56:\n return _context2.finish(49);\n\n case 57:\n this.setState({\n serverNoticeEvents: pinnedEvents\n });\n\n case 58:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee, this, [[7, 45, 49, 57], [18, 28, 32, 40], [33,, 35, 39], [50,, 52, 56]]);\n }));\n\n function _updateServerNoticeEvents() {\n return _ref.apply(this, arguments);\n }\n\n return _updateServerNoticeEvents;\n }(),\n\n _onKeyDown: function _onKeyDown(ev) {\n /*\n // Remove this for now as ctrl+alt = alt-gr so this breaks keyboards which rely on alt-gr for numbers\n // Will need to find a better meta key if anyone actually cares about using this.\n if (ev.altKey && ev.ctrlKey && ev.keyCode > 48 && ev.keyCode < 58) {\n dis.dispatch({\n action: 'view_indexed_room',\n roomIndex: ev.keyCode - 49,\n });\n ev.stopPropagation();\n ev.preventDefault();\n return;\n }\n */\n\n var handled = false;\n var ctrlCmdOnly = (0, _Keyboard.isOnlyCtrlOrCmdKeyEvent)(ev);\n\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.UP:\n case _Keyboard.KeyCode.DOWN:\n if (ev.altKey && !ev.shiftKey && !ev.ctrlKey && !ev.metaKey) {\n var action = ev.keyCode == _Keyboard.KeyCode.UP ? 'view_prev_room' : 'view_next_room';\n _dispatcher2.default.dispatch({ action: action });\n handled = true;\n }\n break;\n\n case _Keyboard.KeyCode.PAGE_UP:\n case _Keyboard.KeyCode.PAGE_DOWN:\n if (!ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n this._onScrollKeyPressed(ev);\n handled = true;\n }\n break;\n\n case _Keyboard.KeyCode.HOME:\n case _Keyboard.KeyCode.END:\n if (ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n this._onScrollKeyPressed(ev);\n handled = true;\n }\n break;\n case _Keyboard.KeyCode.KEY_K:\n if (ctrlCmdOnly) {\n _dispatcher2.default.dispatch({\n action: 'focus_room_filter'\n });\n handled = true;\n }\n break;\n }\n\n if (handled) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n },\n\n /** dispatch a page-up/page-down/etc to the appropriate component */\n _onScrollKeyPressed: function _onScrollKeyPressed(ev) {\n if (this.refs.roomView) {\n this.refs.roomView.handleScrollKey(ev);\n } else if (this.refs.roomDirectory) {\n this.refs.roomDirectory.handleScrollKey(ev);\n }\n },\n\n _onDragEnd: function _onDragEnd(result) {\n // Dragged to an invalid destination, not onto a droppable\n if (!result.destination) {\n return;\n }\n\n var dest = result.destination.droppableId;\n\n if (dest === 'tag-panel-droppable') {\n // Could be \"GroupTile +groupId:domain\"\n var draggableId = result.draggableId.split(' ').pop();\n\n // Dispatch synchronously so that the TagPanel receives an\n // optimistic update from TagOrderStore before the previous\n // state is shown.\n _dispatcher2.default.dispatch(_TagOrderActions2.default.moveTag(this._matrixClient, draggableId, result.destination.index), true);\n } else if (dest.startsWith('room-sub-list-droppable_')) {\n this._onRoomTileEndDrag(result);\n }\n },\n\n _onRoomTileEndDrag: function _onRoomTileEndDrag(result) {\n var newTag = result.destination.droppableId.split('_')[1];\n var prevTag = result.source.droppableId.split('_')[1];\n if (newTag === 'undefined') newTag = undefined;\n if (prevTag === 'undefined') prevTag = undefined;\n\n var roomId = result.draggableId.split('_')[1];\n\n var oldIndex = result.source.index;\n var newIndex = result.destination.index;\n\n _dispatcher2.default.dispatch(_RoomListActions2.default.tagRoom(this._matrixClient, this._matrixClient.getRoom(roomId), prevTag, newTag, oldIndex, newIndex), true);\n },\n\n _onMouseDown: function _onMouseDown(ev) {\n // When the panels are disabled, clicking on them results in a mouse event\n // which bubbles to certain elements in the tree. When this happens, close\n // any settings page that is currently open (user/room/group).\n if (this.props.leftDisabled && this.props.rightDisabled) {\n var targetClasses = new _set2.default(ev.target.className.split(' '));\n if (targetClasses.has('mx_MatrixChat') || targetClasses.has('mx_MatrixChat_middlePanel') || targetClasses.has('mx_RoomView')) {\n this.setState({\n mouseDown: {\n x: ev.pageX,\n y: ev.pageY\n }\n });\n }\n }\n },\n\n _onMouseUp: function _onMouseUp(ev) {\n if (!this.state.mouseDown) return;\n\n var deltaX = ev.pageX - this.state.mouseDown.x;\n var deltaY = ev.pageY - this.state.mouseDown.y;\n var distance = Math.sqrt(deltaX * deltaX + (deltaY + deltaY));\n var maxRadius = 5; // People shouldn't be straying too far, hopefully\n\n // Note: we track how far the user moved their mouse to help\n // combat against https://github.com/vector-im/riot-web/issues/7158\n\n if (distance < maxRadius) {\n // This is probably a real click, and not a drag\n _dispatcher2.default.dispatch({ action: 'close_settings' });\n }\n\n // Always clear the mouseDown state to ensure we don't accidentally\n // use stale values due to the mouseDown checks.\n this.setState({ mouseDown: null });\n },\n\n render: function render() {\n var LeftPanel = _index2.default.getComponent('structures.LeftPanel');\n var RightPanel = _index2.default.getComponent('structures.RightPanel');\n var RoomView = _index2.default.getComponent('structures.RoomView');\n var UserSettings = _index2.default.getComponent('structures.UserSettings');\n var CreateRoom = _index2.default.getComponent('structures.CreateRoom');\n var RoomDirectory = _index2.default.getComponent('structures.RoomDirectory');\n var HomePage = _index2.default.getComponent('structures.HomePage');\n var GroupView = _index2.default.getComponent('structures.GroupView');\n var MyGroups = _index2.default.getComponent('structures.MyGroups');\n var MatrixToolbar = _index2.default.getComponent('globals.MatrixToolbar');\n var CookieBar = _index2.default.getComponent('globals.CookieBar');\n var NewVersionBar = _index2.default.getComponent('globals.NewVersionBar');\n var UpdateCheckBar = _index2.default.getComponent('globals.UpdateCheckBar');\n var PasswordNagBar = _index2.default.getComponent('globals.PasswordNagBar');\n var ServerLimitBar = _index2.default.getComponent('globals.ServerLimitBar');\n\n var page_element = void 0;\n var right_panel = '';\n\n switch (this.props.page_type) {\n case _PageTypes2.default.RoomView:\n page_element = _react2.default.createElement(RoomView, {\n ref: 'roomView',\n autoJoin: this.props.autoJoin,\n onRegistered: this.props.onRegistered,\n thirdPartyInvite: this.props.thirdPartyInvite,\n oobData: this.props.roomOobData,\n viaServers: this.props.viaServers,\n eventPixelOffset: this.props.initialEventPixelOffset,\n key: this.props.currentRoomId || 'roomview',\n disabled: this.props.middleDisabled,\n collapsedRhs: this.props.collapseRhs,\n ConferenceHandler: this.props.ConferenceHandler\n });\n if (!this.props.collapseRhs) {\n right_panel = _react2.default.createElement(RightPanel, { roomId: this.props.currentRoomId, disabled: this.props.rightDisabled });\n }\n break;\n\n case _PageTypes2.default.UserSettings:\n page_element = _react2.default.createElement(UserSettings, {\n onClose: this.props.onCloseAllSettings,\n brand: this.props.config.brand,\n referralBaseUrl: this.props.config.referralBaseUrl,\n teamToken: this.props.teamToken\n });\n if (!this.props.collapseRhs) right_panel = _react2.default.createElement(RightPanel, { disabled: this.props.rightDisabled });\n break;\n\n case _PageTypes2.default.MyGroups:\n page_element = _react2.default.createElement(MyGroups, null);\n break;\n\n case _PageTypes2.default.CreateRoom:\n page_element = _react2.default.createElement(CreateRoom, {\n onRoomCreated: this.props.onRoomCreated,\n collapsedRhs: this.props.collapseRhs\n });\n if (!this.props.collapseRhs) right_panel = _react2.default.createElement(RightPanel, { disabled: this.props.rightDisabled });\n break;\n\n case _PageTypes2.default.RoomDirectory:\n page_element = _react2.default.createElement(RoomDirectory, {\n ref: 'roomDirectory',\n config: this.props.config.roomDirectory\n });\n break;\n\n case _PageTypes2.default.HomePage:\n {\n // If team server config is present, pass the teamServerURL. props.teamToken\n // must also be set for the team page to be displayed, otherwise the\n // welcomePageUrl is used (which might be undefined).\n var teamServerUrl = this.props.config.teamServerConfig ? this.props.config.teamServerConfig.teamServerURL : null;\n\n page_element = _react2.default.createElement(HomePage, {\n teamServerUrl: teamServerUrl,\n teamToken: this.props.teamToken,\n homePageUrl: this.props.config.welcomePageUrl\n });\n }\n break;\n\n case _PageTypes2.default.UserView:\n page_element = null; // deliberately null for now\n right_panel = _react2.default.createElement(RightPanel, { disabled: this.props.rightDisabled });\n break;\n case _PageTypes2.default.GroupView:\n page_element = _react2.default.createElement(GroupView, {\n groupId: this.props.currentGroupId,\n isNew: this.props.currentGroupIsNew,\n collapsedRhs: this.props.collapseRhs\n });\n if (!this.props.collapseRhs) right_panel = _react2.default.createElement(RightPanel, { groupId: this.props.currentGroupId, disabled: this.props.rightDisabled });\n break;\n }\n\n var usageLimitEvent = this.state.serverNoticeEvents.find(function (e) {\n return e && e.getType() === 'm.room.message' && e.getContent()['server_notice_type'] === 'm.server_notice.usage_limit_reached';\n });\n\n var topBar = void 0;\n var isGuest = this.props.matrixClient.isGuest();\n if (this.state.syncErrorData && this.state.syncErrorData.error.errcode === 'M_RESOURCE_LIMIT_EXCEEDED') {\n topBar = _react2.default.createElement(ServerLimitBar, { kind: 'hard',\n adminContact: this.state.syncErrorData.error.data.admin_contact,\n limitType: this.state.syncErrorData.error.data.limit_type\n });\n } else if (usageLimitEvent) {\n topBar = _react2.default.createElement(ServerLimitBar, { kind: 'soft',\n adminContact: usageLimitEvent.getContent().admin_contact,\n limitType: usageLimitEvent.getContent().limit_type\n });\n } else if (this.props.showCookieBar && this.props.config.piwik) {\n var policyUrl = this.props.config.piwik.policyUrl || null;\n topBar = _react2.default.createElement(CookieBar, { policyUrl: policyUrl });\n } else if (this.props.hasNewVersion) {\n topBar = _react2.default.createElement(NewVersionBar, { version: this.props.version, newVersion: this.props.newVersion,\n releaseNotes: this.props.newVersionReleaseNotes\n });\n } else if (this.props.checkingForUpdate) {\n topBar = _react2.default.createElement(UpdateCheckBar, this.props.checkingForUpdate);\n } else if (this.state.userHasGeneratedPassword) {\n topBar = _react2.default.createElement(PasswordNagBar, null);\n } else if (!isGuest && _Notifier2.default.supportsDesktopNotifications() && !_Notifier2.default.isEnabled() && !_Notifier2.default.isToolbarHidden()) {\n topBar = _react2.default.createElement(MatrixToolbar, null);\n }\n\n var bodyClasses = 'mx_MatrixChat';\n if (topBar) {\n bodyClasses += ' mx_MatrixChat_toolbarShowing';\n }\n if (this.state.useCompactLayout) {\n bodyClasses += ' mx_MatrixChat_useCompactLayout';\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixChat_wrapper', 'aria-hidden': this.props.hideToSRUsers, onMouseDown: this._onMouseDown, onMouseUp: this._onMouseUp },\n topBar,\n _react2.default.createElement(\n _reactBeautifulDnd.DragDropContext,\n { onDragEnd: this._onDragEnd },\n _react2.default.createElement(\n 'div',\n { className: bodyClasses },\n _react2.default.createElement(LeftPanel, {\n collapsed: this.props.collapseLhs || false,\n disabled: this.props.leftDisabled\n }),\n _react2.default.createElement(\n 'main',\n { className: 'mx_MatrixChat_middlePanel' },\n page_element\n ),\n right_panel\n )\n )\n );\n }\n});\n\nexports.default = LoggedInView;\nmodule.exports = exports['default'];\n//# sourceMappingURL=LoggedInView.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _dragDropContext = require('./drag-drop-context');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_dragDropContext).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _DragDropContext$chil;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _createStore = require('../../state/create-store');\n\nvar _createStore2 = _interopRequireDefault(_createStore);\n\nvar _fireHooks = require('../../state/fire-hooks');\n\nvar _fireHooks2 = _interopRequireDefault(_fireHooks);\n\nvar _dimensionMarshal = require('../../state/dimension-marshal/dimension-marshal');\n\nvar _dimensionMarshal2 = _interopRequireDefault(_dimensionMarshal);\n\nvar _styleMarshal = require('../style-marshal/style-marshal');\n\nvar _styleMarshal2 = _interopRequireDefault(_styleMarshal);\n\nvar _canStartDrag = require('../../state/can-start-drag');\n\nvar _canStartDrag2 = _interopRequireDefault(_canStartDrag);\n\nvar _contextKeys = require('../context-keys');\n\nvar _actionCreators = require('../../state/action-creators');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DragDropContext = function (_React$Component) {\n (0, _inherits3.default)(DragDropContext, _React$Component);\n\n function DragDropContext() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, DragDropContext);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = DragDropContext.__proto__ || (0, _getPrototypeOf2.default)(DragDropContext)).call.apply(_ref, [this].concat(args))), _this), _this.canLift = function (id) {\n return (0, _canStartDrag2.default)(_this.store.getState(), id);\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(DragDropContext, [{\n key: 'getChildContext',\n value: function getChildContext() {\n var _ref2;\n\n return _ref2 = {}, (0, _defineProperty3.default)(_ref2, _contextKeys.storeKey, this.store), (0, _defineProperty3.default)(_ref2, _contextKeys.dimensionMarshalKey, this.dimensionMarshal), (0, _defineProperty3.default)(_ref2, _contextKeys.styleContextKey, this.styleMarshal.styleContext), (0, _defineProperty3.default)(_ref2, _contextKeys.canLiftContextKey, this.canLift), _ref2;\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n this.store = (0, _createStore2.default)();\n\n this.styleMarshal = (0, _styleMarshal2.default)();\n\n var callbacks = {\n cancel: function cancel() {\n _this2.store.dispatch((0, _actionCreators.clean)());\n },\n publishDraggables: function publishDraggables(dimensions) {\n _this2.store.dispatch((0, _actionCreators.publishDraggableDimensions)(dimensions));\n },\n publishDroppables: function publishDroppables(dimensions) {\n _this2.store.dispatch((0, _actionCreators.publishDroppableDimensions)(dimensions));\n },\n updateDroppableScroll: function updateDroppableScroll(id, newScroll) {\n _this2.store.dispatch((0, _actionCreators.updateDroppableDimensionScroll)(id, newScroll));\n },\n updateDroppableIsEnabled: function updateDroppableIsEnabled(id, isEnabled) {\n _this2.store.dispatch((0, _actionCreators.updateDroppableDimensionIsEnabled)(id, isEnabled));\n }\n };\n this.dimensionMarshal = (0, _dimensionMarshal2.default)(callbacks);\n\n var previous = this.store.getState();\n\n this.unsubscribe = this.store.subscribe(function () {\n var previousValue = previous;\n var current = _this2.store.getState();\n\n previous = current;\n\n if (current.phase === previousValue.phase) {\n return;\n }\n\n var hooks = {\n onDragStart: _this2.props.onDragStart,\n onDragEnd: _this2.props.onDragEnd\n };\n (0, _fireHooks2.default)(hooks, previousValue, current);\n\n _this2.styleMarshal.onPhaseChange(current);\n\n _this2.dimensionMarshal.onPhaseChange(current);\n });\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.styleMarshal.mount();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unsubscribe();\n this.styleMarshal.unmount();\n }\n }, {\n key: 'render',\n value: function render() {\n return this.props.children;\n }\n }]);\n return DragDropContext;\n}(_react2.default.Component);\n\nDragDropContext.childContextTypes = (_DragDropContext$chil = {}, (0, _defineProperty3.default)(_DragDropContext$chil, _contextKeys.storeKey, _propTypes2.default.shape({\n dispatch: _propTypes2.default.func.isRequired,\n subscribe: _propTypes2.default.func.isRequired,\n getState: _propTypes2.default.func.isRequired\n}).isRequired), (0, _defineProperty3.default)(_DragDropContext$chil, _contextKeys.dimensionMarshalKey, _propTypes2.default.object.isRequired), (0, _defineProperty3.default)(_DragDropContext$chil, _contextKeys.styleContextKey, _propTypes2.default.string.isRequired), (0, _defineProperty3.default)(_DragDropContext$chil, _contextKeys.canLiftContextKey, _propTypes2.default.func.isRequired), _DragDropContext$chil);\nexports.default = DragDropContext;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof2 = require('babel-runtime/helpers/typeof');\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _redux = require('redux');\n\nvar _reduxThunk = require('redux-thunk');\n\nvar _reduxThunk2 = _interopRequireDefault(_reduxThunk);\n\nvar _reducer = require('./reducer');\n\nvar _reducer2 = _interopRequireDefault(_reducer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar composeEnhancers = (typeof window === 'undefined' ? 'undefined' : (0, _typeof3.default)(window)) === 'object' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : _redux.compose;\n\nexports.default = function () {\n return (0, _redux.createStore)(_reducer2.default, composeEnhancers((0, _redux.applyMiddleware)(_reduxThunk2.default)));\n};","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","function createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexport default thunk;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends4 = require('babel-runtime/helpers/extends');\n\nvar _extends5 = _interopRequireDefault(_extends4);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _position = require('./position');\n\nvar _noImpact = require('./no-impact');\n\nvar _getDragImpact = require('./get-drag-impact/');\n\nvar _getDragImpact2 = _interopRequireDefault(_getDragImpact);\n\nvar _moveToNextIndex = require('./move-to-next-index/');\n\nvar _moveToNextIndex2 = _interopRequireDefault(_moveToNextIndex);\n\nvar _moveCrossAxis = require('./move-cross-axis/');\n\nvar _moveCrossAxis2 = _interopRequireDefault(_moveCrossAxis);\n\nvar _dimension = require('./dimension');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar noDimensions = {\n request: null,\n draggable: {},\n droppable: {}\n};\n\nvar origin = { x: 0, y: 0 };\n\nvar clean = (0, _memoizeOne2.default)(function () {\n var phase = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'IDLE';\n return {\n phase: phase,\n drag: null,\n drop: null,\n dimension: noDimensions\n };\n});\n\nvar canPublishDimension = function canPublishDimension(phase) {\n return ['IDLE', 'DROP_ANIMATING', 'DROP_COMPLETE'].indexOf(phase) === -1;\n};\n\nvar move = function move(_ref) {\n var state = _ref.state,\n clientSelection = _ref.clientSelection,\n shouldAnimate = _ref.shouldAnimate,\n windowScroll = _ref.windowScroll,\n impact = _ref.impact;\n\n if (state.phase !== 'DRAGGING') {\n console.error('cannot move while not dragging');\n return clean();\n }\n\n var last = state.drag;\n\n if (last == null) {\n console.error('cannot move if there is no drag information');\n return clean();\n }\n\n var previous = last.current;\n var initial = last.initial;\n var currentWindowScroll = windowScroll || previous.windowScroll;\n\n var client = function () {\n var offset = (0, _position.subtract)(clientSelection, initial.client.selection);\n\n var result = {\n offset: offset,\n selection: clientSelection,\n center: (0, _position.add)(offset, initial.client.center)\n };\n return result;\n }();\n\n var page = {\n selection: (0, _position.add)(client.selection, currentWindowScroll),\n offset: (0, _position.add)(client.offset, currentWindowScroll),\n center: (0, _position.add)(client.center, currentWindowScroll)\n };\n\n var current = {\n client: client,\n page: page,\n shouldAnimate: shouldAnimate,\n windowScroll: currentWindowScroll\n };\n\n var newImpact = impact || (0, _getDragImpact2.default)({\n pageCenter: page.center,\n draggable: state.dimension.draggable[initial.descriptor.id],\n draggables: state.dimension.draggable,\n droppables: state.dimension.droppable,\n previousImpact: last.impact\n });\n\n var drag = {\n initial: initial,\n impact: newImpact,\n current: current\n };\n\n return (0, _extends5.default)({}, state, {\n drag: drag\n });\n};\n\nvar updateStateAfterDimensionChange = function updateStateAfterDimensionChange(newState) {\n if (newState.phase === 'COLLECTING_INITIAL_DIMENSIONS') {\n return newState;\n }\n\n if (newState.phase !== 'DRAGGING') {\n return newState;\n }\n\n if (!newState.drag) {\n console.error('cannot update a draggable dimension in an existing drag as there is invalid drag state');\n return clean();\n }\n\n return move({\n state: newState,\n\n clientSelection: newState.drag.current.client.selection,\n shouldAnimate: newState.drag.current.shouldAnimate\n });\n};\n\nexports.default = function () {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : clean('IDLE');\n var action = arguments[1];\n\n if (action.type === 'CLEAN') {\n return clean();\n }\n\n if (action.type === 'PREPARE') {\n return clean('PREPARING');\n }\n\n if (action.type === 'REQUEST_DIMENSIONS') {\n if (state.phase !== 'PREPARING') {\n console.error('trying to start a lift while not preparing for a lift');\n return clean();\n }\n\n var id = action.payload;\n\n return {\n phase: 'COLLECTING_INITIAL_DIMENSIONS',\n drag: null,\n drop: null,\n dimension: {\n request: id,\n draggable: {},\n droppable: {}\n }\n };\n }\n\n if (action.type === 'PUBLISH_DRAGGABLE_DIMENSIONS') {\n var dimensions = action.payload;\n\n if (!canPublishDimension(state.phase)) {\n console.warn('dimensions rejected as no longer allowing dimension capture in phase', state.phase);\n return state;\n }\n\n var additions = dimensions.reduce(function (previous, current) {\n previous[current.descriptor.id] = current;\n return previous;\n }, {});\n\n var newState = (0, _extends5.default)({}, state, {\n dimension: {\n request: state.dimension.request,\n droppable: state.dimension.droppable,\n draggable: (0, _extends5.default)({}, state.dimension.draggable, additions)\n }\n });\n\n return updateStateAfterDimensionChange(newState);\n }\n\n if (action.type === 'PUBLISH_DROPPABLE_DIMENSIONS') {\n var _dimensions = action.payload;\n\n if (!canPublishDimension(state.phase)) {\n console.warn('dimensions rejected as no longer allowing dimension capture in phase', state.phase);\n return state;\n }\n\n var _additions = _dimensions.reduce(function (previous, current) {\n previous[current.descriptor.id] = current;\n return previous;\n }, {});\n\n var _newState = (0, _extends5.default)({}, state, {\n dimension: {\n request: state.dimension.request,\n draggable: state.dimension.draggable,\n droppable: (0, _extends5.default)({}, state.dimension.droppable, _additions)\n }\n });\n\n return updateStateAfterDimensionChange(_newState);\n }\n\n if (action.type === 'COMPLETE_LIFT') {\n if (state.phase !== 'COLLECTING_INITIAL_DIMENSIONS') {\n console.error('trying complete lift without collecting dimensions');\n return state;\n }\n\n var _action$payload = action.payload,\n _id = _action$payload.id,\n client = _action$payload.client,\n _windowScroll = _action$payload.windowScroll,\n isScrollAllowed = _action$payload.isScrollAllowed;\n\n var page = {\n selection: (0, _position.add)(client.selection, _windowScroll),\n center: (0, _position.add)(client.center, _windowScroll)\n };\n\n var draggable = state.dimension.draggable[_id];\n\n if (!draggable) {\n console.error('could not find draggable in store after lift');\n return clean();\n }\n\n var descriptor = draggable.descriptor;\n\n var initial = {\n descriptor: descriptor,\n isScrollAllowed: isScrollAllowed,\n client: client,\n page: page,\n windowScroll: _windowScroll\n };\n\n var current = {\n client: {\n selection: client.selection,\n center: client.center,\n offset: origin\n },\n page: {\n selection: page.selection,\n center: page.center,\n offset: origin\n },\n windowScroll: _windowScroll,\n shouldAnimate: false\n };\n\n var home = state.dimension.droppable[descriptor.droppableId];\n\n if (!home) {\n console.error('Cannot find home dimension for initial lift');\n return clean();\n }\n\n var destination = {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n };\n\n var _impact = {\n movement: _noImpact.noMovement,\n direction: home.axis.direction,\n destination: destination\n };\n\n return (0, _extends5.default)({}, state, {\n phase: 'DRAGGING',\n drag: {\n initial: initial,\n current: current,\n impact: _impact\n }\n });\n }\n\n if (action.type === 'UPDATE_DROPPABLE_DIMENSION_SCROLL') {\n if (state.phase !== 'DRAGGING') {\n console.error('cannot update a droppable dimensions scroll when not dragging');\n return clean();\n }\n\n if (state.drag == null) {\n console.error('invalid store state');\n return clean();\n }\n\n if (!state.drag.initial.isScrollAllowed) {\n return clean();\n }\n\n var _action$payload2 = action.payload,\n _id2 = _action$payload2.id,\n offset = _action$payload2.offset;\n\n\n var target = state.dimension.droppable[_id2];\n\n if (!target) {\n console.warn('cannot update scroll for droppable as it has not yet been collected');\n return state;\n }\n\n var dimension = (0, _dimension.scrollDroppable)(target, offset);\n\n var _newState2 = (0, _extends5.default)({}, state, {\n dimension: {\n request: state.dimension.request,\n draggable: state.dimension.draggable,\n droppable: (0, _extends5.default)({}, state.dimension.droppable, (0, _defineProperty3.default)({}, _id2, dimension))\n }\n });\n\n return updateStateAfterDimensionChange(_newState2);\n }\n\n if (action.type === 'UPDATE_DROPPABLE_DIMENSION_IS_ENABLED') {\n if (!(0, _keys2.default)(state.dimension.droppable).length) {\n return state;\n }\n\n var _action$payload3 = action.payload,\n _id3 = _action$payload3.id,\n isEnabled = _action$payload3.isEnabled;\n\n var _target = state.dimension.droppable[_id3];\n\n if (!_target) {\n console.warn('cannot update enabled state for droppable as it has not yet been collected');\n return state;\n }\n\n if (_target.isEnabled === isEnabled) {\n console.warn('trying to set droppable isEnabled to ' + String(isEnabled) + ' but it is already ' + String(isEnabled));\n return state;\n }\n\n var updatedDroppableDimension = (0, _extends5.default)({}, _target, {\n isEnabled: isEnabled\n });\n\n var result = (0, _extends5.default)({}, state, {\n dimension: (0, _extends5.default)({}, state.dimension, {\n droppable: (0, _extends5.default)({}, state.dimension.droppable, (0, _defineProperty3.default)({}, _id3, updatedDroppableDimension))\n })\n });\n\n return updateStateAfterDimensionChange(result);\n }\n\n if (action.type === 'MOVE') {\n var _action$payload4 = action.payload,\n _client = _action$payload4.client,\n _windowScroll2 = _action$payload4.windowScroll;\n\n return move({\n state: state,\n clientSelection: _client,\n windowScroll: _windowScroll2,\n shouldAnimate: false\n });\n }\n\n if (action.type === 'MOVE_BY_WINDOW_SCROLL') {\n var _windowScroll3 = action.payload.windowScroll;\n\n\n if (!state.drag) {\n console.error('cannot move with window scrolling if no current drag');\n return clean();\n }\n\n return move({\n state: state,\n clientSelection: state.drag.current.client.selection,\n windowScroll: _windowScroll3,\n shouldAnimate: false\n });\n }\n\n if (action.type === 'MOVE_FORWARD' || action.type === 'MOVE_BACKWARD') {\n if (state.phase !== 'DRAGGING') {\n console.error('cannot move while not dragging', action);\n return clean();\n }\n\n if (!state.drag) {\n console.error('cannot move if there is no drag information');\n return clean();\n }\n\n var existing = state.drag;\n var isMovingForward = action.type === 'MOVE_FORWARD';\n\n if (!existing.impact.destination) {\n console.error('cannot move if there is no previous destination');\n return clean();\n }\n\n var droppable = state.dimension.droppable[existing.impact.destination.droppableId];\n\n var _result = (0, _moveToNextIndex2.default)({\n isMovingForward: isMovingForward,\n draggableId: existing.initial.descriptor.id,\n droppable: droppable,\n draggables: state.dimension.draggable,\n previousImpact: existing.impact\n });\n\n if (!_result) {\n return state;\n }\n\n var _impact2 = _result.impact;\n var _page = _result.pageCenter;\n var _client2 = (0, _position.subtract)(_page, existing.current.windowScroll);\n\n return move({\n state: state,\n impact: _impact2,\n clientSelection: _client2,\n shouldAnimate: true\n });\n }\n\n if (action.type === 'CROSS_AXIS_MOVE_FORWARD' || action.type === 'CROSS_AXIS_MOVE_BACKWARD') {\n if (state.phase !== 'DRAGGING') {\n console.error('cannot move cross axis when not dragging');\n return clean();\n }\n\n if (!state.drag) {\n console.error('cannot move cross axis if there is no drag information');\n return clean();\n }\n\n if (!state.drag.impact.destination) {\n console.error('cannot move cross axis if not in a droppable');\n return clean();\n }\n\n var _current = state.drag.current;\n var _descriptor = state.drag.initial.descriptor;\n var draggableId = _descriptor.id;\n var center = _current.page.center;\n var droppableId = state.drag.impact.destination.droppableId;\n var _home = {\n index: _descriptor.index,\n droppableId: _descriptor.droppableId\n };\n\n var _result2 = (0, _moveCrossAxis2.default)({\n isMovingForward: action.type === 'CROSS_AXIS_MOVE_FORWARD',\n pageCenter: center,\n draggableId: draggableId,\n droppableId: droppableId,\n home: _home,\n draggables: state.dimension.draggable,\n droppables: state.dimension.droppable,\n previousImpact: state.drag.impact\n });\n\n if (!_result2) {\n return state;\n }\n\n var _page2 = _result2.pageCenter;\n var _client3 = (0, _position.subtract)(_page2, _current.windowScroll);\n\n return move({\n state: state,\n clientSelection: _client3,\n impact: _result2.impact,\n shouldAnimate: true\n });\n }\n\n if (action.type === 'DROP_ANIMATE') {\n var _action$payload5 = action.payload,\n trigger = _action$payload5.trigger,\n newHomeOffset = _action$payload5.newHomeOffset,\n _impact3 = _action$payload5.impact,\n _result3 = _action$payload5.result;\n\n\n if (state.phase !== 'DRAGGING') {\n console.error('cannot animate drop while not dragging', action);\n return state;\n }\n\n if (!state.drag) {\n console.error('cannot animate drop - invalid drag state');\n return clean();\n }\n\n var pending = {\n trigger: trigger,\n newHomeOffset: newHomeOffset,\n result: _result3,\n impact: _impact3\n };\n\n return {\n phase: 'DROP_ANIMATING',\n drag: null,\n drop: {\n pending: pending,\n result: null\n },\n dimension: state.dimension\n };\n }\n\n if (action.type === 'DROP_COMPLETE') {\n var _result4 = action.payload;\n\n return {\n phase: 'DROP_COMPLETE',\n drag: null,\n drop: {\n pending: null,\n result: _result4\n },\n dimension: noDimensions\n };\n }\n\n return state;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getDroppableOver = require('../get-droppable-over');\n\nvar _getDroppableOver2 = _interopRequireDefault(_getDroppableOver);\n\nvar _getDraggablesInsideDroppable = require('../get-draggables-inside-droppable');\n\nvar _getDraggablesInsideDroppable2 = _interopRequireDefault(_getDraggablesInsideDroppable);\n\nvar _noImpact = require('../no-impact');\n\nvar _noImpact2 = _interopRequireDefault(_noImpact);\n\nvar _inHomeList = require('./in-home-list');\n\nvar _inHomeList2 = _interopRequireDefault(_inHomeList);\n\nvar _inForeignList = require('./in-foreign-list');\n\nvar _inForeignList2 = _interopRequireDefault(_inForeignList);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var pageCenter = _ref.pageCenter,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n droppables = _ref.droppables,\n previousImpact = _ref.previousImpact;\n\n var previousDroppableOverId = previousImpact.destination && previousImpact.destination.droppableId;\n\n var destinationId = (0, _getDroppableOver2.default)({\n target: pageCenter,\n draggable: draggable,\n draggables: draggables,\n droppables: droppables,\n previousDroppableOverId: previousDroppableOverId\n });\n\n if (!destinationId) {\n return _noImpact2.default;\n }\n\n var destination = droppables[destinationId];\n\n if (!destination.isEnabled) {\n return _noImpact2.default;\n }\n\n var home = droppables[draggable.descriptor.droppableId];\n var isWithinHomeDroppable = home.descriptor.id === destinationId;\n var insideDestination = (0, _getDraggablesInsideDroppable2.default)(destination, draggables);\n\n if (isWithinHomeDroppable) {\n return (0, _inHomeList2.default)({\n pageCenter: pageCenter,\n draggable: draggable,\n home: home,\n insideHome: insideDestination,\n previousImpact: previousImpact || _noImpact2.default\n });\n }\n\n return (0, _inForeignList2.default)({\n pageCenter: pageCenter,\n draggable: draggable,\n destination: destination,\n insideDestination: insideDestination,\n previousImpact: previousImpact || _noImpact2.default\n });\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _getArea = require('./get-area');\n\nvar _getArea2 = _interopRequireDefault(_getArea);\n\nvar _getDraggablesInsideDroppable = require('./get-draggables-inside-droppable');\n\nvar _getDraggablesInsideDroppable2 = _interopRequireDefault(_getDraggablesInsideDroppable);\n\nvar _isPositionInFrame = require('./visibility/is-position-in-frame');\n\nvar _isPositionInFrame2 = _interopRequireDefault(_isPositionInFrame);\n\nvar _position = require('./position');\n\nvar _spacing = require('./spacing');\n\nvar _dimension = require('./dimension');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getRequiredGrowth = (0, _memoizeOne2.default)(function (draggable, draggables, droppable) {\n\n var getResult = function getResult(existingSpace) {\n var requiredSpace = draggable.page.withMargin[droppable.axis.size];\n\n if (requiredSpace <= existingSpace) {\n return null;\n }\n var requiredGrowth = (0, _position.patch)(droppable.axis.line, requiredSpace - existingSpace);\n\n return requiredGrowth;\n };\n\n var dimensions = (0, _getDraggablesInsideDroppable2.default)(droppable, draggables);\n\n if (!dimensions.length) {\n var _existingSpace = droppable.page.withMargin[droppable.axis.size];\n return getResult(_existingSpace);\n }\n\n var endOfDraggables = dimensions[dimensions.length - 1].page.withMargin[droppable.axis.end];\n var endOfDroppable = droppable.page.withMargin[droppable.axis.end];\n var existingSpace = endOfDroppable - endOfDraggables;\n\n return getResult(existingSpace);\n});\n\nvar getWithGrowth = (0, _memoizeOne2.default)(function (area, growth) {\n return (0, _getArea2.default)((0, _spacing.addPosition)(area, growth));\n});\n\nvar getClippedAreaWithPlaceholder = function getClippedAreaWithPlaceholder(_ref) {\n var draggable = _ref.draggable,\n draggables = _ref.draggables,\n droppable = _ref.droppable,\n previousDroppableOverId = _ref.previousDroppableOverId;\n\n var isHome = draggable.descriptor.droppableId === droppable.descriptor.id;\n var wasOver = Boolean(previousDroppableOverId && previousDroppableOverId === droppable.descriptor.id);\n var subject = droppable.viewport.subject;\n var frame = droppable.viewport.frame;\n var clipped = droppable.viewport.clipped;\n\n if (!clipped) {\n return clipped;\n }\n\n if (isHome || !wasOver) {\n return clipped;\n }\n\n var requiredGrowth = getRequiredGrowth(draggable, draggables, droppable);\n\n if (!requiredGrowth) {\n return clipped;\n }\n\n var isClippedByFrame = subject[droppable.axis.size] !== frame[droppable.axis.size];\n\n var subjectWithGrowth = getWithGrowth(clipped, requiredGrowth);\n\n if (!isClippedByFrame) {\n return subjectWithGrowth;\n }\n\n return (0, _dimension.clip)(frame, subjectWithGrowth);\n};\n\nexports.default = function (_ref2) {\n var target = _ref2.target,\n draggable = _ref2.draggable,\n draggables = _ref2.draggables,\n droppables = _ref2.droppables,\n previousDroppableOverId = _ref2.previousDroppableOverId;\n\n var maybe = (0, _keys2.default)(droppables).map(function (id) {\n return droppables[id];\n }).filter(function (droppable) {\n return droppable.isEnabled;\n }).find(function (droppable) {\n var withPlaceholder = getClippedAreaWithPlaceholder({\n draggable: draggable, draggables: draggables, droppable: droppable, previousDroppableOverId: previousDroppableOverId\n });\n\n if (!withPlaceholder) {\n return false;\n }\n\n return (0, _isPositionInFrame2.default)(withPlaceholder)(target);\n });\n\n return maybe ? maybe.descriptor.id : null;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _isWithin = require('../is-within');\n\nvar _isWithin2 = _interopRequireDefault(_isWithin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (frame) {\n var isWithinVertical = (0, _isWithin2.default)(frame.top, frame.bottom);\n var isWithinHorizontal = (0, _isWithin2.default)(frame.left, frame.right);\n\n return function (point) {\n return isWithinVertical(point.y) && isWithinVertical(point.y) && isWithinHorizontal(point.x) && isWithinHorizontal(point.x);\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar vertical = exports.vertical = {\n direction: 'vertical',\n line: 'y',\n crossLine: 'x',\n start: 'top',\n end: 'bottom',\n size: 'height',\n crossAxisStart: 'left',\n crossAxisEnd: 'right',\n crossAxisSize: 'width'\n};\n\nvar horizontal = exports.horizontal = {\n direction: 'horizontal',\n line: 'x',\n crossLine: 'y',\n start: 'left',\n end: 'right',\n size: 'width',\n crossAxisStart: 'top',\n crossAxisEnd: 'bottom',\n crossAxisSize: 'height'\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _position = require('../position');\n\nvar _getDisplacement = require('../get-displacement');\n\nvar _getDisplacement2 = _interopRequireDefault(_getDisplacement);\n\nvar _getViewport = require('../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var pageCenter = _ref.pageCenter,\n draggable = _ref.draggable,\n home = _ref.home,\n insideHome = _ref.insideHome,\n previousImpact = _ref.previousImpact;\n\n var viewport = (0, _getViewport2.default)();\n var axis = home.axis;\n\n var originalCenter = draggable.page.withoutMargin.center;\n\n var homeScrollDiff = home.viewport.frameScroll.diff.value;\n\n var currentCenter = (0, _position.add)(pageCenter, homeScrollDiff);\n\n var isBeyondStartPosition = currentCenter[axis.line] - originalCenter[axis.line] > 0;\n\n var amount = (0, _position.patch)(axis.line, draggable.client.withMargin[axis.size]);\n\n var displaced = insideHome.filter(function (child) {\n if (child === draggable) {\n return false;\n }\n\n var area = child.page.withoutMargin;\n\n if (isBeyondStartPosition) {\n if (area.center[axis.line] < originalCenter[axis.line]) {\n return false;\n }\n\n return currentCenter[axis.line] > area[axis.start];\n }\n\n if (originalCenter[axis.line] < area.center[axis.line]) {\n return false;\n }\n\n return currentCenter[axis.line] < area[axis.end];\n }).map(function (dimension) {\n return (0, _getDisplacement2.default)({\n draggable: dimension,\n destination: home,\n previousImpact: previousImpact,\n viewport: viewport\n });\n });\n\n var ordered = isBeyondStartPosition ? displaced.reverse() : displaced;\n var index = function () {\n var startIndex = insideHome.indexOf(draggable);\n var length = ordered.length;\n if (!length) {\n return startIndex;\n }\n\n if (isBeyondStartPosition) {\n return startIndex + length;\n }\n\n return startIndex - length;\n }();\n\n var movement = {\n amount: amount,\n displaced: ordered,\n isBeyondStartPosition: isBeyondStartPosition\n };\n\n var impact = {\n movement: movement,\n direction: axis.direction,\n destination: {\n droppableId: home.descriptor.id,\n index: index\n }\n };\n\n return impact;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _position = require('../position');\n\nvar _getDisplacement = require('../get-displacement');\n\nvar _getDisplacement2 = _interopRequireDefault(_getDisplacement);\n\nvar _getViewport = require('../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var pageCenter = _ref.pageCenter,\n draggable = _ref.draggable,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination,\n previousImpact = _ref.previousImpact;\n\n var axis = destination.axis;\n var viewport = (0, _getViewport2.default)();\n\n var destinationScrollDiff = destination.viewport.frameScroll.diff.value;\n var currentCenter = (0, _position.add)(pageCenter, destinationScrollDiff);\n\n var displaced = insideDestination.filter(function (child) {\n var threshold = child.page.withoutMargin[axis.end];\n return threshold > currentCenter[axis.line];\n }).map(function (dimension) {\n return (0, _getDisplacement2.default)({\n draggable: dimension,\n destination: destination,\n previousImpact: previousImpact,\n viewport: viewport\n });\n });\n\n var newIndex = insideDestination.length - displaced.length;\n\n var movement = {\n amount: (0, _position.patch)(axis.line, draggable.page.withMargin[axis.size]),\n displaced: displaced,\n isBeyondStartPosition: false\n };\n\n var impact = {\n movement: movement,\n direction: axis.direction,\n destination: {\n droppableId: destination.descriptor.id,\n index: newIndex\n }\n };\n\n return impact;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inHomeList = require('./in-home-list');\n\nvar _inHomeList2 = _interopRequireDefault(_inHomeList);\n\nvar _inForeignList = require('./in-foreign-list');\n\nvar _inForeignList2 = _interopRequireDefault(_inForeignList);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (args) {\n var draggableId = args.draggableId,\n draggables = args.draggables,\n droppable = args.droppable;\n\n\n var draggable = draggables[draggableId];\n var isInHomeList = draggable.descriptor.droppableId === droppable.descriptor.id;\n\n if (!droppable.isEnabled) {\n return null;\n }\n\n if (isInHomeList) {\n return (0, _inHomeList2.default)(args);\n }\n\n return (0, _inForeignList2.default)(args);\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _getDraggablesInsideDroppable = require('../get-draggables-inside-droppable');\n\nvar _getDraggablesInsideDroppable2 = _interopRequireDefault(_getDraggablesInsideDroppable);\n\nvar _position = require('../position');\n\nvar _isVisibleInNewLocation = require('./is-visible-in-new-location');\n\nvar _isVisibleInNewLocation2 = _interopRequireDefault(_isVisibleInNewLocation);\n\nvar _getViewport = require('../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nvar _moveToEdge = require('../move-to-edge');\n\nvar _moveToEdge2 = _interopRequireDefault(_moveToEdge);\n\nvar _getDisplacement = require('../get-displacement');\n\nvar _getDisplacement2 = _interopRequireDefault(_getDisplacement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getIndex = (0, _memoizeOne2.default)(function (draggables, target) {\n return draggables.indexOf(target);\n});\n\nexports.default = function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n draggableId = _ref.draggableId,\n previousImpact = _ref.previousImpact,\n droppable = _ref.droppable,\n draggables = _ref.draggables;\n\n var location = previousImpact.destination;\n\n if (!location) {\n console.error('cannot move to next index when there is not previous destination');\n return null;\n }\n\n var draggable = draggables[draggableId];\n var axis = droppable.axis;\n\n var insideDroppable = (0, _getDraggablesInsideDroppable2.default)(droppable, draggables);\n\n var startIndex = getIndex(insideDroppable, draggable);\n var currentIndex = location.index;\n var proposedIndex = isMovingForward ? currentIndex + 1 : currentIndex - 1;\n\n if (startIndex === -1) {\n console.error('could not find draggable inside current droppable');\n return null;\n }\n\n if (proposedIndex > insideDroppable.length - 1) {\n return null;\n }\n\n if (proposedIndex < 0) {\n return null;\n }\n\n var destination = insideDroppable[proposedIndex];\n var isMovingTowardStart = isMovingForward && proposedIndex <= startIndex || !isMovingForward && proposedIndex >= startIndex;\n\n var edge = function () {\n if (!isMovingTowardStart) {\n return isMovingForward ? 'end' : 'start';\n }\n\n return isMovingForward ? 'start' : 'end';\n }();\n\n var newCenter = (0, _moveToEdge2.default)({\n source: draggable.page.withoutMargin,\n sourceEdge: edge,\n destination: destination.page.withoutMargin,\n destinationEdge: edge,\n destinationAxis: droppable.axis\n });\n\n var viewport = (0, _getViewport2.default)();\n\n var isVisible = (0, _isVisibleInNewLocation2.default)({\n draggable: draggable,\n destination: droppable,\n newCenter: newCenter,\n viewport: viewport\n });\n\n if (!isVisible) {\n return null;\n }\n\n var destinationDisplacement = {\n draggableId: destination.descriptor.id,\n isVisible: true,\n shouldAnimate: true\n };\n\n var modified = isMovingTowardStart ? previousImpact.movement.displaced.slice(1, previousImpact.movement.displaced.length) : [destinationDisplacement].concat((0, _toConsumableArray3.default)(previousImpact.movement.displaced));\n\n var displaced = modified.map(function (displacement) {\n var target = draggables[displacement.draggableId];\n\n var updated = (0, _getDisplacement2.default)({\n draggable: target,\n destination: droppable,\n previousImpact: previousImpact,\n viewport: viewport\n });\n\n return updated;\n });\n\n var newImpact = {\n movement: {\n displaced: displaced,\n\n amount: (0, _position.patch)(axis.line, draggable.page.withMargin[axis.size]),\n isBeyondStartPosition: proposedIndex > startIndex\n },\n destination: {\n droppableId: droppable.descriptor.id,\n index: proposedIndex\n },\n direction: droppable.axis.direction\n };\n\n var result = {\n pageCenter: newCenter,\n impact: newImpact\n };\n\n return result;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _getDraggablesInsideDroppable = require('../get-draggables-inside-droppable');\n\nvar _getDraggablesInsideDroppable2 = _interopRequireDefault(_getDraggablesInsideDroppable);\n\nvar _position = require('../position');\n\nvar _moveToEdge = require('../move-to-edge');\n\nvar _moveToEdge2 = _interopRequireDefault(_moveToEdge);\n\nvar _getDisplacement = require('../get-displacement');\n\nvar _getDisplacement2 = _interopRequireDefault(_getDisplacement);\n\nvar _getViewport = require('../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nvar _isVisibleInNewLocation = require('./is-visible-in-new-location');\n\nvar _isVisibleInNewLocation2 = _interopRequireDefault(_isVisibleInNewLocation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n draggableId = _ref.draggableId,\n previousImpact = _ref.previousImpact,\n droppable = _ref.droppable,\n draggables = _ref.draggables;\n\n if (!previousImpact.destination) {\n console.error('cannot move to next index when there is not previous destination');\n return null;\n }\n\n var location = previousImpact.destination;\n var draggable = draggables[draggableId];\n var axis = droppable.axis;\n\n var insideForeignDroppable = (0, _getDraggablesInsideDroppable2.default)(droppable, draggables);\n\n var currentIndex = location.index;\n var proposedIndex = isMovingForward ? currentIndex + 1 : currentIndex - 1;\n var lastIndex = insideForeignDroppable.length - 1;\n\n if (proposedIndex > insideForeignDroppable.length) {\n return null;\n }\n\n if (proposedIndex < 0) {\n return null;\n }\n\n var movingRelativeTo = insideForeignDroppable[Math.min(proposedIndex, lastIndex)];\n\n var isMovingPastLastIndex = proposedIndex > lastIndex;\n var sourceEdge = 'start';\n var destinationEdge = function () {\n if (isMovingPastLastIndex) {\n return 'end';\n }\n\n return 'start';\n }();\n\n var viewport = (0, _getViewport2.default)();\n var newCenter = (0, _moveToEdge2.default)({\n source: draggable.page.withoutMargin,\n sourceEdge: sourceEdge,\n destination: movingRelativeTo.page.withMargin,\n destinationEdge: destinationEdge,\n destinationAxis: droppable.axis\n });\n\n var isVisible = function () {\n if (isMovingPastLastIndex) {\n return true;\n }\n\n return (0, _isVisibleInNewLocation2.default)({\n draggable: draggable,\n destination: droppable,\n newCenter: newCenter,\n viewport: viewport\n });\n }();\n\n if (!isVisible) {\n return null;\n }\n\n var movingRelativeToDisplacement = {\n draggableId: movingRelativeTo.descriptor.id,\n isVisible: true,\n shouldAnimate: true\n };\n\n var modified = isMovingForward ? previousImpact.movement.displaced.slice(1, previousImpact.movement.displaced.length) : [movingRelativeToDisplacement].concat((0, _toConsumableArray3.default)(previousImpact.movement.displaced));\n\n var displaced = modified.map(function (displacement) {\n if (displacement === movingRelativeToDisplacement) {\n return displacement;\n }\n\n var target = draggables[displacement.draggableId];\n\n var updated = (0, _getDisplacement2.default)({\n draggable: target,\n destination: droppable,\n viewport: viewport,\n previousImpact: previousImpact\n });\n\n return updated;\n });\n\n var newImpact = {\n movement: {\n displaced: displaced,\n\n amount: (0, _position.patch)(axis.line, draggable.page.withMargin[axis.size]),\n\n isBeyondStartPosition: false\n },\n destination: {\n droppableId: droppable.descriptor.id,\n index: proposedIndex\n },\n direction: droppable.axis.direction\n };\n\n return {\n pageCenter: newCenter,\n impact: newImpact\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getBestCrossAxisDroppable = require('./get-best-cross-axis-droppable');\n\nvar _getBestCrossAxisDroppable2 = _interopRequireDefault(_getBestCrossAxisDroppable);\n\nvar _getClosestDraggable = require('./get-closest-draggable');\n\nvar _getClosestDraggable2 = _interopRequireDefault(_getClosestDraggable);\n\nvar _moveToNewDroppable = require('./move-to-new-droppable/');\n\nvar _moveToNewDroppable2 = _interopRequireDefault(_moveToNewDroppable);\n\nvar _noImpact = require('../no-impact');\n\nvar _noImpact2 = _interopRequireDefault(_noImpact);\n\nvar _getDraggablesInsideDroppable = require('../get-draggables-inside-droppable');\n\nvar _getDraggablesInsideDroppable2 = _interopRequireDefault(_getDraggablesInsideDroppable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n pageCenter = _ref.pageCenter,\n draggableId = _ref.draggableId,\n droppableId = _ref.droppableId,\n home = _ref.home,\n draggables = _ref.draggables,\n droppables = _ref.droppables,\n previousImpact = _ref.previousImpact;\n\n var draggable = draggables[draggableId];\n var source = droppables[droppableId];\n\n var destination = (0, _getBestCrossAxisDroppable2.default)({\n isMovingForward: isMovingForward,\n pageCenter: pageCenter,\n source: source,\n droppables: droppables\n });\n\n if (!destination) {\n return null;\n }\n\n var insideDestination = (0, _getDraggablesInsideDroppable2.default)(destination, draggables);\n\n var target = (0, _getClosestDraggable2.default)({\n axis: destination.axis,\n pageCenter: pageCenter,\n destination: destination,\n insideDestination: insideDestination\n });\n\n if (insideDestination.length && !target) {\n return null;\n }\n\n return (0, _moveToNewDroppable2.default)({\n pageCenter: pageCenter,\n destination: destination,\n draggable: draggable,\n target: target,\n insideDestination: insideDestination,\n home: home,\n previousImpact: previousImpact || _noImpact2.default\n });\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _position = require('../position');\n\nvar _isWithin = require('../is-within');\n\nvar _isWithin2 = _interopRequireDefault(_isWithin);\n\nvar _spacing = require('../spacing');\n\nvar _getViewport = require('../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nvar _isVisibleThroughFrame = require('../visibility/is-visible-through-frame');\n\nvar _isVisibleThroughFrame2 = _interopRequireDefault(_isVisibleThroughFrame);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getSafeClipped = function getSafeClipped(droppable) {\n var area = droppable.viewport.clipped;\n\n if (!area) {\n throw new Error('cannot get clipped area from droppable');\n }\n return area;\n};\n\nexports.default = function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n pageCenter = _ref.pageCenter,\n source = _ref.source,\n droppables = _ref.droppables;\n\n var sourceClipped = source.viewport.clipped;\n\n if (!sourceClipped) {\n return null;\n }\n\n var axis = source.axis;\n var isBetweenSourceClipped = (0, _isWithin2.default)(sourceClipped[axis.start], sourceClipped[axis.end]);\n var viewport = (0, _getViewport2.default)();\n\n var candidates = (0, _keys2.default)(droppables).map(function (id) {\n return droppables[id];\n }).filter(function (droppable) {\n return droppable !== source;\n }).filter(function (droppable) {\n return droppable.isEnabled;\n }).filter(function (droppable) {\n return Boolean(droppable.viewport.clipped);\n }).filter(function (droppable) {\n return (0, _isVisibleThroughFrame2.default)(viewport)(droppable.viewport.frame);\n }).filter(function (droppable) {\n var targetClipped = getSafeClipped(droppable);\n\n if (isMovingForward) {\n return sourceClipped[axis.crossAxisEnd] <= targetClipped[axis.crossAxisStart];\n }\n\n return targetClipped[axis.crossAxisEnd] <= sourceClipped[axis.crossAxisStart];\n }).filter(function (droppable) {\n var targetClipped = getSafeClipped(droppable);\n\n var isBetweenDestinationClipped = (0, _isWithin2.default)(targetClipped[axis.start], targetClipped[axis.end]);\n\n return isBetweenSourceClipped(targetClipped[axis.start]) || isBetweenSourceClipped(targetClipped[axis.end]) || isBetweenDestinationClipped(sourceClipped[axis.start]) || isBetweenDestinationClipped(sourceClipped[axis.end]);\n }).sort(function (a, b) {\n var first = getSafeClipped(a)[axis.crossAxisStart];\n var second = getSafeClipped(b)[axis.crossAxisStart];\n\n if (isMovingForward) {\n return first - second;\n }\n return second - first;\n }).filter(function (droppable, index, array) {\n return getSafeClipped(droppable)[axis.crossAxisStart] === getSafeClipped(array[0])[axis.crossAxisStart];\n });\n\n if (!candidates.length) {\n return null;\n }\n\n if (candidates.length === 1) {\n return candidates[0];\n }\n\n var contains = candidates.filter(function (droppable) {\n var isWithinDroppable = (0, _isWithin2.default)(getSafeClipped(droppable)[axis.start], getSafeClipped(droppable)[axis.end]);\n return isWithinDroppable(pageCenter[axis.line]);\n });\n\n if (contains.length === 1) {\n return contains[0];\n }\n\n if (contains.length > 1) {\n return contains.sort(function (a, b) {\n return getSafeClipped(a)[axis.start] - getSafeClipped(b)[axis.start];\n })[0];\n }\n\n return candidates.sort(function (a, b) {\n var first = (0, _position.closest)(pageCenter, (0, _spacing.getCorners)(getSafeClipped(a)));\n var second = (0, _position.closest)(pageCenter, (0, _spacing.getCorners)(getSafeClipped(b)));\n\n if (first !== second) {\n return first - second;\n }\n\n return getSafeClipped(a)[axis.start] - getSafeClipped(b)[axis.start];\n })[0];\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _position = require('../position');\n\nvar _getViewport = require('../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nvar _isPartiallyVisible = require('../visibility/is-partially-visible');\n\nvar _isPartiallyVisible2 = _interopRequireDefault(_isPartiallyVisible);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var axis = _ref.axis,\n pageCenter = _ref.pageCenter,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination;\n\n if (!insideDestination.length) {\n return null;\n }\n\n var viewport = (0, _getViewport2.default)();\n\n var result = insideDestination.filter(function (draggable) {\n return (0, _isPartiallyVisible2.default)({\n target: draggable.page.withMargin,\n destination: destination,\n viewport: viewport\n });\n }).sort(function (a, b) {\n var distanceToA = (0, _position.distance)(pageCenter, a.page.withMargin.center);\n var distanceToB = (0, _position.distance)(pageCenter, b.page.withMargin.center);\n\n if (distanceToA < distanceToB) {\n return -1;\n }\n\n if (distanceToB < distanceToA) {\n return 1;\n }\n\n return a.page.withMargin[axis.start] - b.page.withMargin[axis.start];\n });\n\n return result.length ? result[0] : null;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toHomeList = require('./to-home-list');\n\nvar _toHomeList2 = _interopRequireDefault(_toHomeList);\n\nvar _toForeignList = require('./to-foreign-list');\n\nvar _toForeignList2 = _interopRequireDefault(_toForeignList);\n\nvar _position = require('../../position');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var pageCenter = _ref.pageCenter,\n destination = _ref.destination,\n draggable = _ref.draggable,\n target = _ref.target,\n home = _ref.home,\n insideDestination = _ref.insideDestination,\n previousImpact = _ref.previousImpact;\n\n var amount = (0, _position.patch)(destination.axis.line, draggable.client.withMargin[destination.axis.size]);\n\n if (destination.descriptor.id === draggable.descriptor.droppableId) {\n return (0, _toHomeList2.default)({\n amount: amount,\n originalIndex: home.index,\n target: target,\n insideDroppable: insideDestination,\n draggable: draggable,\n droppable: destination,\n previousImpact: previousImpact\n });\n }\n\n return (0, _toForeignList2.default)({\n amount: amount,\n pageCenter: pageCenter,\n target: target,\n insideDroppable: insideDestination,\n draggable: draggable,\n droppable: destination,\n previousImpact: previousImpact\n });\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _moveToEdge = require('../../move-to-edge');\n\nvar _moveToEdge2 = _interopRequireDefault(_moveToEdge);\n\nvar _getViewport = require('../../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nvar _getDisplacement = require('../../get-displacement');\n\nvar _getDisplacement2 = _interopRequireDefault(_getDisplacement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var amount = _ref.amount,\n originalIndex = _ref.originalIndex,\n target = _ref.target,\n insideDroppable = _ref.insideDroppable,\n draggable = _ref.draggable,\n droppable = _ref.droppable,\n previousImpact = _ref.previousImpact;\n\n if (!target) {\n console.error('there will always be a target in the original list');\n return null;\n }\n\n var axis = droppable.axis;\n var targetIndex = insideDroppable.indexOf(target);\n\n if (targetIndex === -1) {\n console.error('unable to find target in destination droppable');\n return null;\n }\n\n if (targetIndex === originalIndex) {\n var _newCenter = draggable.page.withoutMargin.center;\n var _newImpact = {\n movement: {\n displaced: [],\n amount: amount,\n isBeyondStartPosition: false\n },\n direction: droppable.axis.direction,\n destination: {\n droppableId: droppable.descriptor.id,\n index: originalIndex\n }\n };\n\n return {\n pageCenter: _newCenter,\n impact: _newImpact\n };\n }\n\n var isMovingPastOriginalIndex = targetIndex > originalIndex;\n var edge = isMovingPastOriginalIndex ? 'end' : 'start';\n\n var newCenter = (0, _moveToEdge2.default)({\n source: draggable.page.withoutMargin,\n sourceEdge: edge,\n destination: isMovingPastOriginalIndex ? target.page.withoutMargin : target.page.withMargin,\n destinationEdge: edge,\n destinationAxis: axis\n });\n\n var modified = function () {\n if (!isMovingPastOriginalIndex) {\n return insideDroppable.slice(targetIndex, originalIndex);\n }\n\n var from = originalIndex + 1;\n\n var to = targetIndex + 1;\n\n return insideDroppable.slice(from, to).reverse();\n }();\n\n var viewport = (0, _getViewport2.default)();\n var displaced = modified.map(function (dimension) {\n return (0, _getDisplacement2.default)({\n draggable: dimension,\n destination: droppable,\n previousImpact: previousImpact,\n viewport: viewport\n });\n });\n\n var newImpact = {\n movement: {\n displaced: displaced,\n amount: amount,\n isBeyondStartPosition: isMovingPastOriginalIndex\n },\n direction: axis.direction,\n destination: {\n droppableId: droppable.descriptor.id,\n index: targetIndex\n }\n };\n\n return {\n pageCenter: newCenter,\n impact: newImpact\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _moveToEdge = require('../../move-to-edge');\n\nvar _moveToEdge2 = _interopRequireDefault(_moveToEdge);\n\nvar _getDisplacement = require('../../get-displacement');\n\nvar _getDisplacement2 = _interopRequireDefault(_getDisplacement);\n\nvar _getViewport = require('../../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var amount = _ref.amount,\n pageCenter = _ref.pageCenter,\n target = _ref.target,\n insideDroppable = _ref.insideDroppable,\n draggable = _ref.draggable,\n droppable = _ref.droppable,\n previousImpact = _ref.previousImpact;\n\n var axis = droppable.axis;\n var isGoingBeforeTarget = Boolean(target && pageCenter[droppable.axis.line] < target.page.withMargin.center[droppable.axis.line]);\n\n if (!target) {\n\n var _newCenter = (0, _moveToEdge2.default)({\n source: draggable.page.withoutMargin,\n sourceEdge: 'start',\n destination: droppable.page.withMarginAndPadding,\n destinationEdge: 'start',\n destinationAxis: axis\n });\n\n var _newImpact = {\n movement: {\n displaced: [],\n amount: amount,\n isBeyondStartPosition: false\n },\n direction: axis.direction,\n destination: {\n droppableId: droppable.descriptor.id,\n index: 0\n }\n };\n\n return {\n pageCenter: _newCenter,\n impact: _newImpact\n };\n }\n\n var targetIndex = insideDroppable.indexOf(target);\n var proposedIndex = isGoingBeforeTarget ? targetIndex : targetIndex + 1;\n\n if (targetIndex === -1) {\n console.error('could not find target inside destination');\n return null;\n }\n\n var newCenter = (0, _moveToEdge2.default)({\n source: draggable.page.withoutMargin,\n sourceEdge: 'start',\n destination: target.page.withMargin,\n destinationEdge: isGoingBeforeTarget ? 'start' : 'end',\n destinationAxis: axis\n });\n\n var viewport = (0, _getViewport2.default)();\n var displaced = insideDroppable.slice(proposedIndex, insideDroppable.length).map(function (dimension) {\n return (0, _getDisplacement2.default)({\n draggable: dimension,\n destination: droppable,\n viewport: viewport,\n previousImpact: previousImpact\n });\n });\n\n var newImpact = {\n movement: {\n displaced: displaced,\n amount: amount,\n isBeyondStartPosition: false\n },\n direction: axis.direction,\n destination: {\n droppableId: droppable.descriptor.id,\n index: proposedIndex\n }\n };\n\n return {\n pageCenter: newCenter,\n impact: newImpact\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (hooks, previous, current) {\n var onDragStart = hooks.onDragStart,\n onDragEnd = hooks.onDragEnd;\n\n var currentPhase = current.phase;\n var previousPhase = previous.phase;\n\n if (currentPhase === previousPhase) {\n return;\n }\n\n if (currentPhase === 'DRAGGING' && previousPhase !== 'DRAGGING') {\n if (!onDragStart) {\n return;\n }\n\n if (!current.drag) {\n console.error('cannot fire onDragStart hook without drag state', { current: current, previous: previous });\n return;\n }\n\n var descriptor = current.drag.initial.descriptor;\n var home = current.dimension.droppable[descriptor.droppableId];\n\n if (!home) {\n console.error('cannot find dimension for home droppable');\n return;\n }\n\n var source = {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n };\n\n var start = {\n draggableId: descriptor.id,\n type: home.descriptor.type,\n source: source\n };\n\n onDragStart(start);\n return;\n }\n\n if (currentPhase === 'DROP_COMPLETE' && previousPhase !== 'DROP_COMPLETE') {\n if (!current.drop || !current.drop.result) {\n console.error('cannot fire onDragEnd hook without drag state', { current: current, previous: previous });\n return;\n }\n\n var _current$drop$result = current.drop.result,\n _source = _current$drop$result.source,\n destination = _current$drop$result.destination,\n draggableId = _current$drop$result.draggableId,\n type = _current$drop$result.type;\n\n if (!destination) {\n onDragEnd(current.drop.result);\n return;\n }\n\n var didMove = _source.droppableId !== destination.droppableId || _source.index !== destination.index;\n\n if (didMove) {\n onDragEnd(current.drop.result);\n return;\n }\n\n var muted = {\n draggableId: draggableId,\n type: type,\n source: _source,\n destination: null\n };\n\n onDragEnd(muted);\n return;\n }\n\n if (currentPhase === 'IDLE' && previousPhase === 'DRAGGING') {\n if (!previous.drag) {\n console.error('cannot fire onDragEnd for cancel because cannot find previous drag');\n return;\n }\n\n var _descriptor = previous.drag.initial.descriptor;\n var _home = previous.dimension.droppable[_descriptor.droppableId];\n\n if (!_home) {\n console.error('cannot find dimension for home droppable');\n return;\n }\n\n var _source2 = {\n index: _descriptor.index,\n droppableId: _descriptor.droppableId\n };\n\n var result = {\n draggableId: _descriptor.id,\n type: _home.descriptor.type,\n source: _source2,\n destination: null\n };\n onDragEnd(result);\n return;\n }\n\n if (currentPhase === 'IDLE' && previousPhase === 'DROP_ANIMATING') {\n if (!previous.drop || !previous.drop.pending) {\n console.error('cannot fire onDragEnd for cancel because cannot find previous pending drop');\n return;\n }\n\n var _result = {\n draggableId: previous.drop.pending.result.draggableId,\n type: previous.drop.pending.result.type,\n source: previous.drop.pending.result.source,\n destination: null\n };\n onDragEnd(_result);\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends4 = require('babel-runtime/helpers/extends');\n\nvar _extends5 = _interopRequireDefault(_extends4);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (callbacks) {\n var state = {\n droppables: {},\n draggables: {},\n isCollecting: false,\n request: null,\n frameId: null\n };\n\n var setState = function setState(partial) {\n var newState = (0, _extends5.default)({}, state, partial);\n state = newState;\n };\n\n var cancel = function cancel() {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n\n if (!state.isCollecting) {\n return;\n }\n\n stopCollecting();\n callbacks.cancel();\n };\n\n var registerDraggable = function registerDraggable(descriptor, getDimension) {\n var id = descriptor.id;\n\n if (!state.droppables[descriptor.droppableId]) {\n cancel('Cannot register Draggable ' + id + ' as there is no entry for the Droppable ' + descriptor.droppableId);\n return;\n }\n\n var entry = {\n descriptor: descriptor,\n getDimension: getDimension\n };\n var draggables = (0, _extends5.default)({}, state.draggables, (0, _defineProperty3.default)({}, id, entry));\n\n setState({\n draggables: draggables\n });\n\n if (!state.isCollecting) {\n return;\n }\n\n console.warn('Adding a draggable during a drag is currently not supported');\n };\n\n var registerDroppable = function registerDroppable(descriptor, droppableCallbacks) {\n var id = descriptor.id;\n\n var entry = {\n descriptor: descriptor,\n callbacks: droppableCallbacks\n };\n\n var droppables = (0, _extends5.default)({}, state.droppables, (0, _defineProperty3.default)({}, id, entry));\n\n setState({\n droppables: droppables\n });\n\n if (!state.isCollecting) {\n return;\n }\n\n console.warn('Currently not supporting updating Droppables during a drag');\n };\n\n var updateDroppableIsEnabled = function updateDroppableIsEnabled(id, isEnabled) {\n if (!state.droppables[id]) {\n cancel('Cannot update the scroll on Droppable ' + id + ' as it is not registered');\n return;\n }\n\n if (!state.isCollecting) {\n return;\n }\n callbacks.updateDroppableIsEnabled(id, isEnabled);\n };\n\n var updateDroppableScroll = function updateDroppableScroll(id, newScroll) {\n if (!state.droppables[id]) {\n cancel('Cannot update the scroll on Droppable ' + id + ' as it is not registered');\n return;\n }\n\n if (!state.isCollecting) {\n return;\n }\n callbacks.updateDroppableScroll(id, newScroll);\n };\n\n var unregisterDraggable = function unregisterDraggable(descriptor) {\n var entry = state.draggables[descriptor.id];\n\n if (!entry) {\n cancel('Cannot unregister Draggable with id ' + descriptor.id + ' as it is not registered');\n return;\n }\n\n if (entry.descriptor !== descriptor) {\n return;\n }\n\n var newMap = (0, _extends5.default)({}, state.draggables);\n delete newMap[descriptor.id];\n\n setState({\n draggables: newMap\n });\n\n if (!state.isCollecting) {\n return;\n }\n\n console.warn('currently not supporting unmounting a Draggable during a drag');\n };\n\n var unregisterDroppable = function unregisterDroppable(descriptor) {\n var entry = state.droppables[descriptor.id];\n\n if (!entry) {\n cancel('Cannot unregister Droppable with id ' + descriptor.id + ' as as it is not registered');\n return;\n }\n\n if (entry.descriptor !== descriptor) {\n return;\n }\n\n var newMap = (0, _extends5.default)({}, state.droppables);\n delete newMap[descriptor.id];\n\n setState({\n droppables: newMap\n });\n\n if (!state.isCollecting) {\n return;\n }\n\n console.warn('currently not supporting unmounting a Droppable during a drag');\n };\n\n var getToBeCollected = function getToBeCollected() {\n var draggables = state.draggables;\n var droppables = state.droppables;\n var request = state.request;\n\n if (!request) {\n console.error('cannot find request in state');\n return [];\n }\n\n var descriptor = draggables[request].descriptor;\n var home = droppables[descriptor.droppableId].descriptor;\n\n var draggablesToBeCollected = (0, _keys2.default)(draggables).map(function (id) {\n return draggables[id].descriptor;\n }).filter(function (item) {\n return item.id !== descriptor.id;\n }).filter(function (item) {\n var entry = droppables[item.droppableId];\n\n if (!entry) {\n console.warn('Orphan Draggable found ' + item.id + ' which says it belongs to unknown Droppable ' + item.droppableId);\n return false;\n }\n\n return entry.descriptor.type === home.type;\n });\n\n var droppablesToBeCollected = (0, _keys2.default)(droppables).map(function (id) {\n return droppables[id].descriptor;\n }).filter(function (item) {\n return item.id !== home.id;\n }).filter(function (item) {\n var droppable = droppables[item.id].descriptor;\n return droppable.type === home.type;\n });\n\n var toBeCollected = [].concat((0, _toConsumableArray3.default)(droppablesToBeCollected), (0, _toConsumableArray3.default)(draggablesToBeCollected));\n\n return toBeCollected;\n };\n\n var processPrimaryDimensions = function processPrimaryDimensions(request) {\n if (state.isCollecting) {\n cancel('Cannot start capturing dimensions for a drag it is already dragging');\n return;\n }\n\n if (!request) {\n cancel('Cannot start capturing dimensions with an invalid request', request);\n return;\n }\n\n setState({\n isCollecting: true,\n request: request\n });\n\n var draggables = state.draggables;\n var droppables = state.droppables;\n var draggableEntry = draggables[request];\n\n if (!draggableEntry) {\n cancel('Cannot find Draggable with id ' + request + ' to start collecting dimensions');\n return;\n }\n\n var homeEntry = droppables[draggableEntry.descriptor.droppableId];\n\n if (!homeEntry) {\n cancel('Cannot find home Droppable [id:' + draggableEntry.descriptor.droppableId + '] for Draggable [id:' + request + ']');\n return;\n }\n\n var home = homeEntry.callbacks.getDimension();\n var draggable = draggableEntry.getDimension();\n\n callbacks.publishDroppables([home]);\n callbacks.publishDraggables([draggable]);\n\n homeEntry.callbacks.watchScroll();\n };\n\n var setFrameId = function setFrameId(frameId) {\n setState({\n frameId: frameId\n });\n };\n\n var processSecondaryDimensions = function processSecondaryDimensions() {\n if (!state.isCollecting) {\n cancel('Cannot collect secondary dimensions when collection is not occurring');\n return;\n }\n\n var toBeCollected = getToBeCollected();\n\n var collectFrameId = requestAnimationFrame(function () {\n var toBePublishedBuffer = toBeCollected.map(function (descriptor) {\n if (descriptor.type) {\n return state.droppables[descriptor.id].callbacks.getDimension();\n }\n\n return state.draggables[descriptor.id].getDimension();\n });\n\n var publishFrameId = requestAnimationFrame(function () {\n var toBePublished = toBePublishedBuffer.reduce(function (previous, dimension) {\n if (dimension.placeholder) {\n previous.draggables.push(dimension);\n } else {\n previous.droppables.push(dimension);\n }\n return previous;\n }, { draggables: [], droppables: [] });\n\n if (toBePublished.droppables.length) {\n callbacks.publishDroppables(toBePublished.droppables);\n }\n if (toBePublished.draggables.length) {\n callbacks.publishDraggables(toBePublished.draggables);\n }\n\n toBePublished.droppables.forEach(function (dimension) {\n var entry = state.droppables[dimension.descriptor.id];\n entry.callbacks.watchScroll();\n });\n\n setFrameId(null);\n });\n\n setFrameId(publishFrameId);\n });\n\n setFrameId(collectFrameId);\n };\n\n var stopCollecting = function stopCollecting() {\n (0, _keys2.default)(state.droppables).forEach(function (id) {\n return state.droppables[id].callbacks.unwatchScroll();\n });\n\n if (state.frameId) {\n cancelAnimationFrame(state.frameId);\n }\n\n setState({\n isCollecting: false,\n request: null,\n frameId: null\n });\n };\n\n var onPhaseChange = function onPhaseChange(current) {\n var phase = current.phase;\n\n if (phase === 'COLLECTING_INITIAL_DIMENSIONS') {\n processPrimaryDimensions(current.dimension.request);\n return;\n }\n\n if (phase === 'DRAGGING') {\n if (current.dimension.request !== state.request) {\n cancel('Request in local state does not match that of the store');\n return;\n }\n\n processSecondaryDimensions();\n return;\n }\n\n if (phase === 'DROP_ANIMATING' || phase === 'DROP_COMPLETE') {\n if (state.isCollecting) {\n stopCollecting();\n }\n return;\n }\n\n if (phase === 'IDLE') {\n if (state.isCollecting) {\n stopCollecting();\n }\n }\n };\n\n var marshal = {\n registerDraggable: registerDraggable,\n unregisterDraggable: unregisterDraggable,\n registerDroppable: registerDroppable,\n unregisterDroppable: unregisterDroppable,\n updateDroppableIsEnabled: updateDroppableIsEnabled,\n updateDroppableScroll: updateDroppableScroll,\n onPhaseChange: onPhaseChange\n };\n\n return marshal;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _getStyles = require('./get-styles');\n\nvar _getStyles2 = _interopRequireDefault(_getStyles);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar count = 0;\n\nvar prefix = 'data-react-beautiful-dnd';\n\nexports.default = function () {\n var context = '' + count++;\n var styles = (0, _getStyles2.default)(context);\n\n var state = {\n el: null\n };\n\n var setState = function setState(newState) {\n state = newState;\n };\n\n var setStyle = (0, _memoizeOne2.default)(function (proposed) {\n if (!state.el) {\n console.error('cannot set style of style tag if not mounted');\n return;\n }\n\n state.el.innerHTML = proposed;\n });\n\n var mount = function mount() {\n if (state.el) {\n console.error('Style marshal already mounted');\n return;\n }\n\n var el = document.createElement('style');\n el.type = 'text/css';\n\n el.setAttribute(prefix, context);\n var head = document.querySelector('head');\n\n if (!head) {\n throw new Error('Cannot find the head to append a style to');\n }\n\n head.appendChild(el);\n setState({\n el: el\n });\n\n setStyle(styles.resting);\n };\n\n var onPhaseChange = function onPhaseChange(current) {\n if (!state.el) {\n console.error('cannot update styles until style marshal is mounted');\n return;\n }\n\n var phase = current.phase;\n\n if (phase === 'DRAGGING') {\n setStyle(styles.dragging);\n return;\n }\n\n if (phase === 'DROP_ANIMATING') {\n if (!current.drop || !current.drop.pending) {\n console.error('Invalid state found in style-marshal');\n return;\n }\n\n var trigger = current.drop.pending.trigger;\n\n if (trigger === 'DROP') {\n setStyle(styles.dropAnimating);\n return;\n }\n setStyle(styles.userCancel);\n return;\n }\n\n setStyle(styles.resting);\n };\n\n var unmount = function unmount() {\n if (!state.el) {\n console.error('Cannot unmount style marshal as it is already unmounted');\n return;\n }\n var previous = state.el;\n\n setState({\n el: null\n });\n\n if (!previous.parentNode) {\n console.error('Cannot unmount style marshal as cannot find parent');\n return;\n }\n\n previous.parentNode.removeChild(previous);\n };\n\n var marshal = {\n onPhaseChange: onPhaseChange,\n styleContext: context,\n mount: mount,\n unmount: unmount\n };\n\n return marshal;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _animation = require('../animation');\n\nvar prefix = 'data-react-beautiful-dnd';\n\nexports.default = function (styleContext) {\n var dragHandleSelector = '[' + prefix + '-drag-handle=\"' + styleContext + '\"]';\n var draggableSelector = '[' + prefix + '-draggable=\"' + styleContext + '\"]';\n\n var dragHandleStyles = {\n base: '\\n ' + dragHandleSelector + ' {\\n -webkit-touch-callout: none;\\n -webkit-tap-highlight-color: rgba(0,0,0,0);\\n touch-action: manipulation;\\n }\\n ',\n grabCursor: '\\n ' + dragHandleSelector + ' {\\n cursor: -webkit-grab;\\n cursor: grab;\\n }\\n ',\n blockPointerEvents: '\\n ' + dragHandleSelector + ' {\\n pointer-events: none;\\n }\\n '\n };\n\n var draggableStyles = {\n animateMovement: '\\n ' + draggableSelector + ' {\\n transition: ' + _animation.css.outOfTheWay + ';\\n }\\n '\n };\n\n var bodyStyles = {\n whileActiveDragging: '\\n body {\\n cursor: grabbing;\\n cursor: -webkit-grabbing;\\n user-select: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n }\\n '\n };\n\n var resting = [dragHandleStyles.base, dragHandleStyles.grabCursor].join('');\n\n var dragging = [dragHandleStyles.base, dragHandleStyles.blockPointerEvents, draggableStyles.animateMovement, bodyStyles.whileActiveDragging].join('');\n\n var dropAnimating = [dragHandleStyles.base, dragHandleStyles.grabCursor, draggableStyles.animateMovement].join('');\n\n var userCancel = [dragHandleStyles.base, draggableStyles.animateMovement].join('');\n\n return { resting: resting, dragging: dragging, dropAnimating: dropAnimating, userCancel: userCancel };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (state, id) {\n var phase = state.phase;\n\n if (phase === 'IDLE' || phase === 'DROP_COMPLETE') {\n return true;\n }\n\n if (phase === 'PREPARING' || phase === 'COLLECTING_INITIAL_DIMENSIONS' || phase === 'DRAGGING') {\n return false;\n }\n\n if (phase === 'DROP_ANIMATING') {\n if (!state.drop || !state.drop.pending) {\n console.error('Invalid state shape for drop animating');\n return false;\n }\n\n if (state.drop.pending.result.draggableId === id) {\n return false;\n }\n\n return state.drop.pending.trigger === 'DROP';\n }\n\n console.warn('unhandled phase ' + phase + ' in canLift check');\n return false;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _moveToEdge = require('./move-to-edge');\n\nvar _moveToEdge2 = _interopRequireDefault(_moveToEdge);\n\nvar _getDraggablesInsideDroppable = require('./get-draggables-inside-droppable');\n\nvar _getDraggablesInsideDroppable2 = _interopRequireDefault(_getDraggablesInsideDroppable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var movement = _ref.movement,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n destination = _ref.destination;\n\n var homeCenter = draggable.client.withMargin.center;\n\n if (destination == null) {\n return homeCenter;\n }\n\n var displaced = movement.displaced,\n isBeyondStartPosition = movement.isBeyondStartPosition;\n\n var axis = destination.axis;\n\n var isWithinHomeDroppable = destination.descriptor.id === draggable.descriptor.droppableId;\n\n if (isWithinHomeDroppable && !displaced.length) {\n return homeCenter;\n }\n\n var draggablesInDestination = (0, _getDraggablesInsideDroppable2.default)(destination, draggables);\n\n var destinationFragment = function () {\n if (isWithinHomeDroppable) {\n return draggables[displaced[0].draggableId].client.withMargin;\n }\n\n if (displaced.length) {\n return draggables[displaced[0].draggableId].client.withMargin;\n }\n\n if (draggablesInDestination.length) {\n return draggablesInDestination[draggablesInDestination.length - 1].client.withMargin;\n }\n\n return destination.client.withMarginAndPadding;\n }();\n\n var _ref2 = function () {\n if (isWithinHomeDroppable) {\n if (isBeyondStartPosition) {\n return { sourceEdge: 'end', destinationEdge: 'end' };\n }\n\n return { sourceEdge: 'start', destinationEdge: 'start' };\n }\n\n if (!displaced.length && draggablesInDestination.length) {\n return { sourceEdge: 'start', destinationEdge: 'end' };\n }\n\n return { sourceEdge: 'start', destinationEdge: 'start' };\n }(),\n sourceEdge = _ref2.sourceEdge,\n destinationEdge = _ref2.destinationEdge;\n\n var source = draggable.client.withMargin;\n\n var targetCenter = (0, _moveToEdge2.default)({\n source: source,\n sourceEdge: sourceEdge,\n destination: destinationFragment,\n destinationEdge: destinationEdge,\n destinationAxis: axis\n });\n\n return targetCenter;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _connectedDroppable = require('./connected-droppable');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_connectedDroppable).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.makeSelector = undefined;\n\nvar _reactRedux = require('react-redux');\n\nvar _reselect = require('reselect');\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _contextKeys = require('../context-keys');\n\nvar _selectors = require('../../state/selectors');\n\nvar _droppable = require('./droppable');\n\nvar _droppable2 = _interopRequireDefault(_droppable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar makeSelector = exports.makeSelector = function makeSelector() {\n var idSelector = function idSelector(state, ownProps) {\n return ownProps.droppableId;\n };\n var isDropDisabledSelector = function isDropDisabledSelector(state, ownProps) {\n return ownProps.isDropDisabled || false;\n };\n\n var getIsDraggingOver = (0, _memoizeOne2.default)(function (id, destination) {\n if (!destination) {\n return false;\n }\n return destination.droppableId === id;\n });\n\n var getPlaceholder = (0, _memoizeOne2.default)(function (id, destination, draggable) {\n if (!draggable) {\n return null;\n }\n\n if (!destination) {\n return null;\n }\n\n if (id === draggable.descriptor.droppableId) {\n return null;\n }\n\n if (id !== destination.droppableId) {\n return null;\n }\n\n return draggable.placeholder;\n });\n\n var getMapProps = (0, _memoizeOne2.default)(function (isDraggingOver, placeholder) {\n return {\n isDraggingOver: isDraggingOver,\n placeholder: placeholder\n };\n });\n\n return (0, _reselect.createSelector)([_selectors.phaseSelector, _selectors.dragSelector, _selectors.draggingDraggableSelector, _selectors.pendingDropSelector, idSelector, isDropDisabledSelector], function (phase, drag, draggable, pending, id, isDropDisabled) {\n if (isDropDisabled) {\n return getMapProps(false, null);\n }\n\n if (phase === 'DRAGGING') {\n if (!drag) {\n console.error('cannot determine dragging over as there is not drag');\n return getMapProps(false, null);\n }\n\n var isDraggingOver = getIsDraggingOver(id, drag.impact.destination);\n\n var placeholder = getPlaceholder(id, drag.impact.destination, draggable);\n return getMapProps(isDraggingOver, placeholder);\n }\n\n if (phase === 'DROP_ANIMATING') {\n if (!pending) {\n console.error('cannot determine dragging over as there is no pending result');\n return getMapProps(false, null);\n }\n\n var _isDraggingOver = getIsDraggingOver(id, pending.impact.destination);\n var _placeholder = getPlaceholder(id, pending.result.destination, draggable);\n return getMapProps(_isDraggingOver, _placeholder);\n }\n\n return getMapProps(false, null);\n });\n};\n\nvar makeMapStateToProps = function makeMapStateToProps() {\n var selector = makeSelector();\n return function (state, props) {\n return selector(state, props);\n };\n};\n\nexports.default = (0, _reactRedux.connect)(makeMapStateToProps, null, null, { storeKey: _contextKeys.storeKey })(_droppable2.default);","/** @license React v16.7.0\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.draggingDraggableSelector = exports.dragSelector = exports.pendingDropSelector = exports.phaseSelector = undefined;\n\nvar _reselect = require('reselect');\n\nvar phaseSelector = exports.phaseSelector = function phaseSelector(state) {\n return state.phase;\n};\n\nvar pendingDropSelector = exports.pendingDropSelector = function pendingDropSelector(state) {\n if (!state.drop || !state.drop.pending) {\n return null;\n }\n return state.drop.pending;\n};\n\nvar dragSelector = exports.dragSelector = function dragSelector(state) {\n return state.drag;\n};\n\nvar draggableMapSelector = function draggableMapSelector(state) {\n return state.dimension.draggable;\n};\n\nvar draggingDraggableSelector = exports.draggingDraggableSelector = (0, _reselect.createSelector)([phaseSelector, dragSelector, pendingDropSelector, draggableMapSelector], function (phase, drag, pending, draggables) {\n if (phase === 'DRAGGING') {\n if (!drag) {\n console.error('cannot get placeholder dimensions as there is an invalid drag state');\n return null;\n }\n\n var draggable = draggables[drag.initial.descriptor.id];\n return draggable;\n }\n\n if (phase === 'DROP_ANIMATING') {\n if (!pending) {\n console.error('cannot get placeholder dimensions as there is an invalid drag state');\n return null;\n }\n\n if (!pending.result.destination) {\n return null;\n }\n\n var _draggable = draggables[pending.result.draggableId];\n return _draggable;\n }\n\n return null;\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _droppableDimensionPublisher = require('../droppable-dimension-publisher/');\n\nvar _droppableDimensionPublisher2 = _interopRequireDefault(_droppableDimensionPublisher);\n\nvar _placeholder = require('../placeholder/');\n\nvar _placeholder2 = _interopRequireDefault(_placeholder);\n\nvar _contextKeys = require('../context-keys');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Droppable = function (_Component) {\n (0, _inherits3.default)(Droppable, _Component);\n\n function Droppable() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, Droppable);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = Droppable.__proto__ || (0, _getPrototypeOf2.default)(Droppable)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n ref: null\n }, _this.setRef = function (ref) {\n if (ref === null) {\n return;\n }\n\n if (ref === _this.state.ref) {\n return;\n }\n\n _this.setState({\n ref: ref\n });\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(Droppable, [{\n key: 'getChildContext',\n value: function getChildContext() {\n var value = (0, _defineProperty3.default)({}, _contextKeys.droppableIdKey, this.props.droppableId);\n return value;\n }\n }, {\n key: 'getPlaceholder',\n value: function getPlaceholder() {\n if (!this.props.placeholder) {\n return null;\n }\n\n return _react2.default.createElement(_placeholder2.default, { placeholder: this.props.placeholder });\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n direction = _props.direction,\n droppableId = _props.droppableId,\n ignoreContainerClipping = _props.ignoreContainerClipping,\n isDraggingOver = _props.isDraggingOver,\n isDropDisabled = _props.isDropDisabled,\n type = _props.type;\n\n var provided = {\n innerRef: this.setRef,\n placeholder: this.getPlaceholder()\n };\n var snapshot = {\n isDraggingOver: isDraggingOver\n };\n\n return _react2.default.createElement(\n _droppableDimensionPublisher2.default,\n {\n droppableId: droppableId,\n type: type,\n direction: direction,\n ignoreContainerClipping: ignoreContainerClipping,\n isDropDisabled: isDropDisabled,\n targetRef: this.state.ref\n },\n children(provided, snapshot)\n );\n }\n }]);\n return Droppable;\n}(_react.Component);\n\nDroppable.defaultProps = {\n type: 'DEFAULT',\n isDropDisabled: false,\n direction: 'vertical',\n ignoreContainerClipping: false\n};\nDroppable.childContextTypes = (0, _defineProperty3.default)({}, _contextKeys.droppableIdKey, _propTypes2.default.string.isRequired);\nexports.default = Droppable;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _droppableDimensionPublisher = require('./droppable-dimension-publisher');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_droppableDimensionPublisher).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _rafSchd = require('raf-schd');\n\nvar _rafSchd2 = _interopRequireDefault(_rafSchd);\n\nvar _getWindowScrollPosition = require('../get-window-scroll-position');\n\nvar _getWindowScrollPosition2 = _interopRequireDefault(_getWindowScrollPosition);\n\nvar _getArea = require('../../state/get-area');\n\nvar _getArea2 = _interopRequireDefault(_getArea);\n\nvar _dimension = require('../../state/dimension');\n\nvar _getClosestScrollable = require('../get-closest-scrollable');\n\nvar _getClosestScrollable2 = _interopRequireDefault(_getClosestScrollable);\n\nvar _contextKeys = require('../context-keys');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar origin = { x: 0, y: 0 };\n\nvar DroppableDimensionPublisher = function (_Component) {\n (0, _inherits3.default)(DroppableDimensionPublisher, _Component);\n\n function DroppableDimensionPublisher(props, context) {\n (0, _classCallCheck3.default)(this, DroppableDimensionPublisher);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DroppableDimensionPublisher.__proto__ || (0, _getPrototypeOf2.default)(DroppableDimensionPublisher)).call(this, props, context));\n\n _this.closestScrollable = null;\n _this.isWatchingScroll = false;\n _this.publishedDescriptor = null;\n\n _this.getScrollOffset = function () {\n if (!_this.closestScrollable) {\n return origin;\n }\n\n var offset = {\n x: _this.closestScrollable.scrollLeft,\n y: _this.closestScrollable.scrollTop\n };\n\n return offset;\n };\n\n _this.memoizedUpdateScroll = (0, _memoizeOne2.default)(function (x, y) {\n if (!_this.publishedDescriptor) {\n console.error('Cannot update scroll on unpublished droppable');\n return;\n }\n\n var newScroll = { x: x, y: y };\n var marshal = _this.context[_contextKeys.dimensionMarshalKey];\n marshal.updateDroppableScroll(_this.publishedDescriptor.id, newScroll);\n });\n _this.scheduleScrollUpdate = (0, _rafSchd2.default)(function (offset) {\n if (_this.isWatchingScroll) {\n _this.memoizedUpdateScroll(offset.x, offset.y);\n }\n });\n\n _this.onClosestScroll = function () {\n _this.scheduleScrollUpdate(_this.getScrollOffset());\n };\n\n _this.watchScroll = function () {\n if (!_this.props.targetRef) {\n console.error('cannot watch droppable scroll if not in the dom');\n return;\n }\n\n if (_this.closestScrollable == null) {\n return;\n }\n\n if (_this.isWatchingScroll) {\n return;\n }\n\n _this.isWatchingScroll = true;\n _this.closestScrollable.addEventListener('scroll', _this.onClosestScroll, { passive: true });\n };\n\n _this.unwatchScroll = function () {\n if (!_this.isWatchingScroll) {\n return;\n }\n\n _this.isWatchingScroll = false;\n\n if (!_this.closestScrollable) {\n console.error('cannot unbind event listener if element is null');\n return;\n }\n\n _this.closestScrollable.removeEventListener('scroll', _this.onClosestScroll);\n };\n\n _this.getMemoizedDescriptor = (0, _memoizeOne2.default)(function (id, type) {\n return {\n id: id,\n type: type\n };\n });\n\n _this.unpublish = function () {\n if (!_this.publishedDescriptor) {\n console.error('cannot unpublish descriptor when none is published');\n return;\n }\n\n var marshal = _this.context[_contextKeys.dimensionMarshalKey];\n marshal.unregisterDroppable(_this.publishedDescriptor);\n _this.publishedDescriptor = null;\n };\n\n _this.publish = function (descriptor) {\n if (descriptor === _this.publishedDescriptor) {\n return;\n }\n\n if (_this.publishedDescriptor) {\n _this.unpublish();\n }\n\n var marshal = _this.context[_contextKeys.dimensionMarshalKey];\n marshal.registerDroppable(descriptor, _this.callbacks);\n _this.publishedDescriptor = descriptor;\n };\n\n _this.getDimension = function () {\n var _this$props = _this.props,\n direction = _this$props.direction,\n ignoreContainerClipping = _this$props.ignoreContainerClipping,\n isDropDisabled = _this$props.isDropDisabled,\n targetRef = _this$props.targetRef;\n\n\n if (!targetRef) {\n throw new Error('DimensionPublisher cannot calculate a dimension when not attached to the DOM');\n }\n\n if (_this.isWatchingScroll) {\n throw new Error('Attempting to recapture Droppable dimension while already watching scroll on previous capture');\n }\n\n var descriptor = _this.publishedDescriptor;\n\n if (!descriptor) {\n throw new Error('Cannot get dimension for unpublished droppable');\n }\n\n _this.closestScrollable = (0, _getClosestScrollable2.default)(targetRef);\n var frameScroll = _this.getScrollOffset();\n var style = window.getComputedStyle(targetRef);\n\n var margin = {\n top: parseInt(style.marginTop, 10),\n right: parseInt(style.marginRight, 10),\n bottom: parseInt(style.marginBottom, 10),\n left: parseInt(style.marginLeft, 10)\n };\n var padding = {\n top: parseInt(style.paddingTop, 10),\n right: parseInt(style.paddingRight, 10),\n bottom: parseInt(style.paddingBottom, 10),\n left: parseInt(style.paddingLeft, 10)\n };\n\n var client = (0, _getArea2.default)(targetRef.getBoundingClientRect());\n\n var frameClient = function () {\n if (ignoreContainerClipping) {\n return null;\n }\n if (!_this.closestScrollable) {\n return null;\n }\n if (_this.closestScrollable === targetRef) {\n return null;\n }\n return (0, _getArea2.default)(_this.closestScrollable.getBoundingClientRect());\n }();\n\n var dimension = (0, _dimension.getDroppableDimension)({\n descriptor: descriptor,\n direction: direction,\n client: client,\n frameClient: frameClient,\n frameScroll: frameScroll,\n margin: margin,\n padding: padding,\n windowScroll: (0, _getWindowScrollPosition2.default)(),\n isEnabled: !isDropDisabled\n });\n\n return dimension;\n };\n\n var callbacks = {\n getDimension: _this.getDimension,\n watchScroll: _this.watchScroll,\n unwatchScroll: _this.unwatchScroll\n };\n _this.callbacks = callbacks;\n return _this;\n }\n\n (0, _createClass3.default)(DroppableDimensionPublisher, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (!nextProps.targetRef) {\n console.error('Cannot update droppable dimension publisher without a target ref');\n return;\n }\n\n var droppableId = nextProps.droppableId,\n type = nextProps.type;\n\n var descriptor = this.getMemoizedDescriptor(droppableId, type);\n\n this.publish(descriptor);\n\n if (this.props.isDropDisabled === nextProps.isDropDisabled) {\n return;\n }\n\n var marshal = this.context[_contextKeys.dimensionMarshalKey];\n marshal.updateDroppableIsEnabled(nextProps.droppableId, !nextProps.isDropDisabled);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.isWatchingScroll) {\n console.warn('unmounting droppable while it was watching scroll');\n this.unwatchScroll();\n }\n\n this.unpublish();\n }\n }, {\n key: 'render',\n value: function render() {\n return this.props.children;\n }\n }]);\n return DroppableDimensionPublisher;\n}(_react.Component);\n\nDroppableDimensionPublisher.contextTypes = (0, _defineProperty3.default)({}, _contextKeys.dimensionMarshalKey, _propTypes2.default.object.isRequired);\nexports.default = DroppableDimensionPublisher;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar isScrollable = function isScrollable() {\n for (var _len = arguments.length, values = Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n\n return values.some(function (value) {\n return value === 'auto' || value === 'scroll';\n });\n};\n\nvar isElementScrollable = function isElementScrollable(el) {\n var style = window.getComputedStyle(el);\n return isScrollable(style.overflow, style.overflowY, style.overflowX);\n};\n\nvar getClosestScrollable = function getClosestScrollable(el) {\n if (el == null) {\n return null;\n }\n\n if (!isElementScrollable(el)) {\n return getClosestScrollable(el.parentElement);\n }\n\n return el;\n};\n\nexports.default = getClosestScrollable;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Placeholder = function (_PureComponent) {\n (0, _inherits3.default)(Placeholder, _PureComponent);\n\n function Placeholder() {\n (0, _classCallCheck3.default)(this, Placeholder);\n return (0, _possibleConstructorReturn3.default)(this, (Placeholder.__proto__ || (0, _getPrototypeOf2.default)(Placeholder)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(Placeholder, [{\n key: 'render',\n value: function render() {\n\n var placeholder = this.props.placeholder;\n var _placeholder$margin = placeholder.margin,\n top = _placeholder$margin.top,\n left = _placeholder$margin.left,\n bottom = _placeholder$margin.bottom,\n right = _placeholder$margin.right;\n var _placeholder$withoutM = placeholder.withoutMargin,\n width = _placeholder$withoutM.width,\n height = _placeholder$withoutM.height;\n\n\n var style = {\n width: width,\n height: height,\n marginTop: top,\n marginLeft: left,\n marginBottom: bottom,\n marginRight: right,\n pointerEvents: 'none',\n boxSizing: 'border-box'\n };\n return _react2.default.createElement('div', { style: style });\n }\n }]);\n return Placeholder;\n}(_react.PureComponent);\n\nexports.default = Placeholder;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _connectedDraggable = require('./connected-draggable');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_connectedDraggable).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.makeSelector = undefined;\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _reactRedux = require('react-redux');\n\nvar _reselect = require('reselect');\n\nvar _draggable = require('./draggable');\n\nvar _draggable2 = _interopRequireDefault(_draggable);\n\nvar _contextKeys = require('../context-keys');\n\nvar _position = require('../../state/position');\n\nvar _getDisplacementMap = require('../../state/get-displacement-map');\n\nvar _getDisplacementMap2 = _interopRequireDefault(_getDisplacementMap);\n\nvar _actionCreators = require('../../state/action-creators');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar origin = { x: 0, y: 0 };\n\nvar defaultMapProps = {\n isDropAnimating: false,\n isDragging: false,\n offset: origin,\n shouldAnimateDragMovement: false,\n\n shouldAnimateDisplacement: true,\n\n dimension: null,\n direction: null\n};\n\nvar makeSelector = exports.makeSelector = function makeSelector() {\n var memoizedOffset = (0, _memoizeOne2.default)(function (x, y) {\n return {\n x: x, y: y\n };\n });\n\n var getNotDraggingProps = (0, _memoizeOne2.default)(function (offset, shouldAnimateDisplacement) {\n return {\n isDropAnimating: false,\n isDragging: false,\n offset: offset,\n shouldAnimateDisplacement: shouldAnimateDisplacement,\n\n shouldAnimateDragMovement: false,\n dimension: null,\n direction: null\n };\n });\n\n var getDraggingProps = (0, _memoizeOne2.default)(function (offset, shouldAnimateDragMovement, dimension, direction) {\n return {\n isDragging: true,\n isDropAnimating: false,\n shouldAnimateDisplacement: false,\n offset: offset,\n shouldAnimateDragMovement: shouldAnimateDragMovement,\n dimension: dimension,\n direction: direction\n };\n });\n\n var draggingSelector = function draggingSelector(state, ownProps) {\n if (state.phase !== 'DRAGGING' && state.phase !== 'DROP_ANIMATING') {\n return null;\n }\n\n if (state.phase === 'DRAGGING') {\n if (!state.drag) {\n console.error('invalid drag state found in selector');\n return null;\n }\n\n if (state.drag.initial.descriptor.id !== ownProps.draggableId) {\n return null;\n }\n\n var offset = state.drag.current.client.offset;\n var dimension = state.dimension.draggable[ownProps.draggableId];\n var direction = state.drag.impact.direction;\n var shouldAnimateDragMovement = state.drag.current.shouldAnimate;\n\n return getDraggingProps(memoizedOffset(offset.x, offset.y), shouldAnimateDragMovement, dimension, direction);\n }\n\n if (!state.drop || !state.drop.pending) {\n console.error('cannot provide props for dropping item when there is invalid state');\n return null;\n }\n\n if (state.drop.pending.result.draggableId !== ownProps.draggableId) {\n return null;\n }\n\n return {\n isDragging: false,\n isDropAnimating: true,\n offset: state.drop.pending.newHomeOffset,\n\n dimension: state.dimension.draggable[ownProps.draggableId],\n\n direction: null,\n\n shouldAnimateDragMovement: false,\n\n shouldAnimateDisplacement: false\n };\n };\n\n var getOutOfTheWayMovement = function getOutOfTheWayMovement(id, movement) {\n var map = (0, _getDisplacementMap2.default)(movement.displaced);\n var displacement = map[id];\n\n if (!displacement) {\n return null;\n }\n\n if (!displacement.isVisible) {\n return null;\n }\n\n var amount = movement.isBeyondStartPosition ? (0, _position.negate)(movement.amount) : movement.amount;\n\n return getNotDraggingProps(memoizedOffset(amount.x, amount.y), displacement.shouldAnimate);\n };\n\n var movingOutOfTheWaySelector = function movingOutOfTheWaySelector(state, ownProps) {\n if (state.phase !== 'DRAGGING' && state.phase !== 'DROP_ANIMATING') {\n return null;\n }\n\n if (state.phase === 'DRAGGING') {\n if (!state.drag) {\n console.error('cannot correctly move item out of the way when there is invalid state');\n return null;\n }\n\n if (state.drag.initial.descriptor.id === ownProps.draggableId) {\n return null;\n }\n\n return getOutOfTheWayMovement(ownProps.draggableId, state.drag.impact.movement);\n }\n\n if (!state.drop || !state.drop.pending) {\n console.error('cannot provide props for dropping item when there is invalid state');\n return null;\n }\n\n if (state.drop.pending.result.draggableId === ownProps.draggableId) {\n return null;\n }\n\n return getOutOfTheWayMovement(ownProps.draggableId, state.drop.pending.impact.movement);\n };\n\n return (0, _reselect.createSelector)([draggingSelector, movingOutOfTheWaySelector], function (dragging, movingOutOfTheWay) {\n if (dragging) {\n return dragging;\n }\n\n if (movingOutOfTheWay) {\n return movingOutOfTheWay;\n }\n\n return defaultMapProps;\n });\n};\n\nvar makeMapStateToProps = function makeMapStateToProps() {\n var selector = makeSelector();\n\n return function (state, props) {\n return selector(state, props);\n };\n};\n\nvar mapDispatchToProps = {\n lift: _actionCreators.lift,\n move: _actionCreators.move,\n moveForward: _actionCreators.moveForward,\n moveBackward: _actionCreators.moveBackward,\n crossAxisMoveForward: _actionCreators.crossAxisMoveForward,\n crossAxisMoveBackward: _actionCreators.crossAxisMoveBackward,\n moveByWindowScroll: _actionCreators.moveByWindowScroll,\n drop: _actionCreators.drop,\n dropAnimationFinished: _actionCreators.dropAnimationFinished,\n cancel: _actionCreators.cancel\n};\n\nexports.default = (0, _reactRedux.connect)(makeMapStateToProps, mapDispatchToProps, null, { storeKey: _contextKeys.storeKey })(_draggable2.default);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.zIndexOptions = undefined;\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Draggable$contextTyp;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _draggableDimensionPublisher = require('../draggable-dimension-publisher/');\n\nvar _draggableDimensionPublisher2 = _interopRequireDefault(_draggableDimensionPublisher);\n\nvar _moveable = require('../moveable/');\n\nvar _moveable2 = _interopRequireDefault(_moveable);\n\nvar _dragHandle = require('../drag-handle');\n\nvar _dragHandle2 = _interopRequireDefault(_dragHandle);\n\nvar _getWindowScrollPosition = require('../get-window-scroll-position');\n\nvar _getWindowScrollPosition2 = _interopRequireDefault(_getWindowScrollPosition);\n\nvar _getCenterPosition = require('../get-center-position');\n\nvar _getCenterPosition2 = _interopRequireDefault(_getCenterPosition);\n\nvar _placeholder = require('../placeholder');\n\nvar _placeholder2 = _interopRequireDefault(_placeholder);\n\nvar _contextKeys = require('../context-keys');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar zIndexOptions = exports.zIndexOptions = {\n dragging: 5000,\n dropAnimating: 4500\n};\n\nvar Draggable = function (_Component) {\n (0, _inherits3.default)(Draggable, _Component);\n\n function Draggable(props, context) {\n (0, _classCallCheck3.default)(this, Draggable);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Draggable.__proto__ || (0, _getPrototypeOf2.default)(Draggable)).call(this, props, context));\n\n _this.state = {\n ref: null\n };\n\n _this.onMoveEnd = function () {\n if (!_this.props.isDropAnimating) {\n return;\n }\n\n _this.props.dropAnimationFinished();\n };\n\n _this.onLift = function (options) {\n _this.throwIfCannotDrag();\n var client = options.client,\n isScrollAllowed = options.isScrollAllowed;\n var _this$props = _this.props,\n lift = _this$props.lift,\n draggableId = _this$props.draggableId;\n var ref = _this.state.ref;\n\n\n if (!ref) {\n throw new Error('cannot lift at this time');\n }\n\n var initial = {\n selection: client,\n center: (0, _getCenterPosition2.default)(ref)\n };\n\n var windowScroll = (0, _getWindowScrollPosition2.default)();\n\n lift(draggableId, initial, windowScroll, isScrollAllowed);\n };\n\n _this.onMove = function (client) {\n _this.throwIfCannotDrag();\n\n var _this$props2 = _this.props,\n draggableId = _this$props2.draggableId,\n dimension = _this$props2.dimension,\n move = _this$props2.move;\n\n if (!dimension) {\n return;\n }\n\n var windowScroll = (0, _getWindowScrollPosition2.default)();\n\n move(draggableId, client, windowScroll);\n };\n\n _this.onMoveForward = function () {\n _this.throwIfCannotDrag();\n _this.props.moveForward(_this.props.draggableId);\n };\n\n _this.onMoveBackward = function () {\n _this.throwIfCannotDrag();\n _this.props.moveBackward(_this.props.draggableId);\n };\n\n _this.onCrossAxisMoveForward = function () {\n _this.throwIfCannotDrag();\n _this.props.crossAxisMoveForward(_this.props.draggableId);\n };\n\n _this.onCrossAxisMoveBackward = function () {\n _this.throwIfCannotDrag();\n _this.props.crossAxisMoveBackward(_this.props.draggableId);\n };\n\n _this.onWindowScroll = function () {\n _this.throwIfCannotDrag();\n var windowScroll = (0, _getWindowScrollPosition2.default)();\n _this.props.moveByWindowScroll(_this.props.draggableId, windowScroll);\n };\n\n _this.onDrop = function () {\n _this.throwIfCannotDrag();\n _this.props.drop();\n };\n\n _this.onCancel = function () {\n _this.props.cancel();\n };\n\n _this.setRef = function (ref) {\n if (ref === null) {\n return;\n }\n\n if (ref === _this.state.ref) {\n return;\n }\n\n _this.setState({\n ref: ref\n });\n };\n\n _this.getDraggableRef = function () {\n return _this.state.ref;\n };\n\n _this.getDraggingStyle = (0, _memoizeOne2.default)(function (dimension, isDropAnimating, movementStyle) {\n var _dimension$client$wit = dimension.client.withoutMargin,\n width = _dimension$client$wit.width,\n height = _dimension$client$wit.height,\n top = _dimension$client$wit.top,\n left = _dimension$client$wit.left;\n\n var style = {\n position: 'fixed',\n boxSizing: 'border-box',\n zIndex: isDropAnimating ? zIndexOptions.dropAnimating : zIndexOptions.dragging,\n width: width,\n height: height,\n top: top,\n left: left,\n margin: 0,\n pointerEvents: 'none',\n transition: 'none',\n transform: movementStyle.transform ? '' + movementStyle.transform : null\n };\n return style;\n });\n _this.getNotDraggingStyle = (0, _memoizeOne2.default)(function (movementStyle, shouldAnimateDisplacement) {\n var style = {\n transform: movementStyle.transform,\n\n transition: shouldAnimateDisplacement ? null : 'none'\n };\n return style;\n });\n _this.getProvided = (0, _memoizeOne2.default)(function (isDragging, isDropAnimating, shouldAnimateDisplacement, dimension, dragHandleProps, movementStyle) {\n var useDraggingStyle = isDragging || isDropAnimating;\n\n var draggableStyle = function () {\n if (!useDraggingStyle) {\n return _this.getNotDraggingStyle(movementStyle, shouldAnimateDisplacement);\n }\n\n (0, _invariant2.default)(dimension, 'draggable dimension required for dragging');\n\n return _this.getDraggingStyle(dimension, isDropAnimating, movementStyle);\n }();\n\n var provided = {\n innerRef: _this.setRef,\n draggableProps: {\n 'data-react-beautiful-dnd-draggable': _this.styleContext,\n style: draggableStyle\n },\n dragHandleProps: dragHandleProps,\n placeholder: useDraggingStyle ? _this.getPlaceholder() : null\n };\n return provided;\n });\n _this.getSnapshot = (0, _memoizeOne2.default)(function (isDragging, isDropAnimating) {\n return {\n isDragging: isDragging || isDropAnimating\n };\n });\n _this.getSpeed = (0, _memoizeOne2.default)(function (isDragging, shouldAnimateDragMovement, isDropAnimating) {\n if (isDropAnimating) {\n return 'STANDARD';\n }\n\n if (isDragging && shouldAnimateDragMovement) {\n return 'FAST';\n }\n\n return 'INSTANT';\n });\n\n\n var callbacks = {\n onLift: _this.onLift,\n onMove: _this.onMove,\n onDrop: _this.onDrop,\n onCancel: _this.onCancel,\n onMoveBackward: _this.onMoveBackward,\n onMoveForward: _this.onMoveForward,\n onCrossAxisMoveForward: _this.onCrossAxisMoveForward,\n onCrossAxisMoveBackward: _this.onCrossAxisMoveBackward,\n onWindowScroll: _this.onWindowScroll\n };\n\n _this.callbacks = callbacks;\n _this.styleContext = context[_contextKeys.styleContextKey];\n return _this;\n }\n\n (0, _createClass3.default)(Draggable, [{\n key: 'throwIfCannotDrag',\n value: function throwIfCannotDrag() {\n (0, _invariant2.default)(this.state.ref, 'Draggable: cannot drag as no DOM node has been provided');\n (0, _invariant2.default)(!this.props.isDragDisabled, 'Draggable: cannot drag as dragging is not enabled');\n }\n }, {\n key: 'getPlaceholder',\n value: function getPlaceholder() {\n var dimension = this.props.dimension;\n (0, _invariant2.default)(dimension, 'cannot get a drag placeholder when not dragging');\n\n return _react2.default.createElement(_placeholder2.default, { placeholder: dimension.placeholder });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n draggableId = _props.draggableId,\n index = _props.index,\n offset = _props.offset,\n isDragging = _props.isDragging,\n isDropAnimating = _props.isDropAnimating,\n isDragDisabled = _props.isDragDisabled,\n dimension = _props.dimension,\n children = _props.children,\n direction = _props.direction,\n shouldAnimateDragMovement = _props.shouldAnimateDragMovement,\n shouldAnimateDisplacement = _props.shouldAnimateDisplacement,\n disableInteractiveElementBlocking = _props.disableInteractiveElementBlocking;\n\n var droppableId = this.context[_contextKeys.droppableIdKey];\n\n var speed = this.getSpeed(isDragging, shouldAnimateDragMovement, isDropAnimating);\n\n return _react2.default.createElement(\n _draggableDimensionPublisher2.default,\n {\n draggableId: draggableId,\n droppableId: droppableId,\n index: index,\n targetRef: this.state.ref\n },\n _react2.default.createElement(\n _moveable2.default,\n {\n speed: speed,\n destination: offset,\n onMoveEnd: this.onMoveEnd\n },\n function (movementStyle) {\n return _react2.default.createElement(\n _dragHandle2.default,\n {\n draggableId: draggableId,\n isDragging: isDragging,\n direction: direction,\n isEnabled: !isDragDisabled,\n callbacks: _this2.callbacks,\n getDraggableRef: _this2.getDraggableRef,\n\n canDragInteractiveElements: disableInteractiveElementBlocking\n },\n function (dragHandleProps) {\n return children(_this2.getProvided(isDragging, isDropAnimating, shouldAnimateDisplacement, dimension, dragHandleProps, movementStyle), _this2.getSnapshot(isDragging, isDropAnimating));\n }\n );\n }\n )\n );\n }\n }]);\n return Draggable;\n}(_react.Component);\n\nDraggable.defaultProps = {\n isDragDisabled: false,\n\n disableInteractiveElementBlocking: false\n};\nDraggable.contextTypes = (_Draggable$contextTyp = {}, (0, _defineProperty3.default)(_Draggable$contextTyp, _contextKeys.droppableIdKey, _propTypes2.default.string.isRequired), (0, _defineProperty3.default)(_Draggable$contextTyp, _contextKeys.styleContextKey, _propTypes2.default.string.isRequired), _Draggable$contextTyp);\nexports.default = Draggable;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _draggableDimensionPublisher = require('./draggable-dimension-publisher');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_draggableDimensionPublisher).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _getWindowScrollPosition = require('../get-window-scroll-position');\n\nvar _getWindowScrollPosition2 = _interopRequireDefault(_getWindowScrollPosition);\n\nvar _dimension = require('../../state/dimension');\n\nvar _contextKeys = require('../context-keys');\n\nvar _getArea = require('../../state/get-area');\n\nvar _getArea2 = _interopRequireDefault(_getArea);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DraggableDimensionPublisher = function (_Component) {\n (0, _inherits3.default)(DraggableDimensionPublisher, _Component);\n\n function DraggableDimensionPublisher() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, DraggableDimensionPublisher);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = DraggableDimensionPublisher.__proto__ || (0, _getPrototypeOf2.default)(DraggableDimensionPublisher)).call.apply(_ref, [this].concat(args))), _this), _this.publishedDescriptor = null, _this.getMemoizedDescriptor = (0, _memoizeOne2.default)(function (id, droppableId, index) {\n return {\n id: id,\n droppableId: droppableId,\n index: index\n };\n }), _this.unpublish = function () {\n if (!_this.publishedDescriptor) {\n console.error('cannot unpublish descriptor when none is published');\n return;\n }\n\n var marshal = _this.context[_contextKeys.dimensionMarshalKey];\n marshal.unregisterDraggable(_this.publishedDescriptor);\n _this.publishedDescriptor = null;\n }, _this.publish = function (descriptor) {\n if (descriptor === _this.publishedDescriptor) {\n return;\n }\n\n if (_this.publishedDescriptor) {\n _this.unpublish();\n }\n\n var marshal = _this.context[_contextKeys.dimensionMarshalKey];\n marshal.registerDraggable(descriptor, _this.getDimension);\n _this.publishedDescriptor = descriptor;\n }, _this.getDimension = function () {\n var targetRef = _this.props.targetRef;\n\n if (!targetRef) {\n throw new Error('DraggableDimensionPublisher cannot calculate a dimension when not attached to the DOM');\n }\n\n var descriptor = _this.publishedDescriptor;\n\n if (!descriptor) {\n throw new Error('Cannot get dimension for unpublished draggable');\n }\n\n var style = window.getComputedStyle(targetRef);\n\n var margin = {\n top: parseInt(style.marginTop, 10),\n right: parseInt(style.marginRight, 10),\n bottom: parseInt(style.marginBottom, 10),\n left: parseInt(style.marginLeft, 10)\n };\n\n var client = (0, _getArea2.default)(targetRef.getBoundingClientRect());\n\n var dimension = (0, _dimension.getDraggableDimension)({\n descriptor: descriptor,\n client: client,\n margin: margin,\n windowScroll: (0, _getWindowScrollPosition2.default)()\n });\n\n return dimension;\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(DraggableDimensionPublisher, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var draggableId = nextProps.draggableId,\n droppableId = nextProps.droppableId,\n index = nextProps.index,\n targetRef = nextProps.targetRef;\n\n\n if (!targetRef) {\n console.error('Updating draggable dimension handler without a targetRef');\n return;\n }\n\n var descriptor = this.getMemoizedDescriptor(draggableId, droppableId, index);\n\n this.publish(descriptor);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unpublish();\n }\n }, {\n key: 'render',\n value: function render() {\n return this.props.children;\n }\n }]);\n return DraggableDimensionPublisher;\n}(_react.Component);\n\nDraggableDimensionPublisher.contextTypes = (0, _defineProperty3.default)({}, _contextKeys.dimensionMarshalKey, _propTypes2.default.object.isRequired);\nexports.default = DraggableDimensionPublisher;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _moveable = require('./moveable');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_moveable).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactMotion = require('react-motion');\n\nvar _animation = require('../animation');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar origin = {\n x: 0,\n y: 0\n};\n\nvar noMovement = {\n transform: null\n};\n\nvar isAtOrigin = function isAtOrigin(point) {\n return point.x === origin.x && point.y === origin.y;\n};\n\nvar getStyle = function getStyle(isNotMoving, x, y) {\n if (isNotMoving) {\n return noMovement;\n }\n\n var point = { x: x, y: y };\n\n if (isAtOrigin(point)) {\n return noMovement;\n }\n var style = {\n transform: 'translate(' + point.x + 'px, ' + point.y + 'px)'\n };\n return style;\n};\n\nvar Movable = function (_Component) {\n (0, _inherits3.default)(Movable, _Component);\n\n function Movable() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, Movable);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = Movable.__proto__ || (0, _getPrototypeOf2.default)(Movable)).call.apply(_ref, [this].concat(args))), _this), _this.onRest = function () {\n var onMoveEnd = _this.props.onMoveEnd;\n\n\n if (!onMoveEnd) {\n return;\n }\n\n setTimeout(function () {\n return onMoveEnd();\n });\n }, _this.getFinal = function () {\n var destination = _this.props.destination;\n var speed = _this.props.speed;\n\n if (speed === 'INSTANT') {\n return destination;\n }\n\n var selected = speed === 'FAST' ? _animation.physics.fast : _animation.physics.standard;\n\n return {\n x: (0, _reactMotion.spring)(destination.x, selected),\n y: (0, _reactMotion.spring)(destination.y, selected)\n };\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(Movable, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var final = this.getFinal();\n\n var isNotMoving = isAtOrigin(final);\n\n return _react2.default.createElement(\n _reactMotion.Motion,\n { defaultStyle: origin, style: final, onRest: this.onRest },\n function (current) {\n return _this2.props.children(getStyle(isNotMoving, current.x, current.y));\n }\n );\n }\n }]);\n return Movable;\n}(_react.Component);\n\nMovable.defaultProps = {\n destination: origin\n};\nexports.default = Movable;","'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequire(obj) { return obj && obj.__esModule ? obj['default'] : obj; }\n\nvar _Motion = require('./Motion');\n\nexports.Motion = _interopRequire(_Motion);\n\nvar _StaggeredMotion = require('./StaggeredMotion');\n\nexports.StaggeredMotion = _interopRequire(_StaggeredMotion);\n\nvar _TransitionMotion = require('./TransitionMotion');\n\nexports.TransitionMotion = _interopRequire(_TransitionMotion);\n\nvar _spring = require('./spring');\n\nexports.spring = _interopRequire(_spring);\n\nvar _presets = require('./presets');\n\nexports.presets = _interopRequire(_presets);\n\nvar _stripStyle = require('./stripStyle');\n\nexports.stripStyle = _interopRequire(_stripStyle);\n\n// deprecated, dummy warning function\n\nvar _reorderKeys = require('./reorderKeys');\n\nexports.reorderKeys = _interopRequire(_reorderKeys);","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _mapToZero = require('./mapToZero');\n\nvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\nvar _stripStyle = require('./stripStyle');\n\nvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\nvar _stepper3 = require('./stepper');\n\nvar _stepper4 = _interopRequireDefault(_stepper3);\n\nvar _performanceNow = require('performance-now');\n\nvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\nvar _raf = require('raf');\n\nvar _raf2 = _interopRequireDefault(_raf);\n\nvar _shouldStopAnimation = require('./shouldStopAnimation');\n\nvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar msPerFrame = 1000 / 60;\n\nvar Motion = (function (_React$Component) {\n _inherits(Motion, _React$Component);\n\n _createClass(Motion, null, [{\n key: 'propTypes',\n value: {\n // TOOD: warn against putting a config in here\n defaultStyle: _propTypes2['default'].objectOf(_propTypes2['default'].number),\n style: _propTypes2['default'].objectOf(_propTypes2['default'].oneOfType([_propTypes2['default'].number, _propTypes2['default'].object])).isRequired,\n children: _propTypes2['default'].func.isRequired,\n onRest: _propTypes2['default'].func\n },\n enumerable: true\n }]);\n\n function Motion(props) {\n var _this = this;\n\n _classCallCheck(this, Motion);\n\n _React$Component.call(this, props);\n this.wasAnimating = false;\n this.animationID = null;\n this.prevTime = 0;\n this.accumulatedTime = 0;\n this.unreadPropStyle = null;\n\n this.clearUnreadPropStyle = function (destStyle) {\n var dirty = false;\n var _state = _this.state;\n var currentStyle = _state.currentStyle;\n var currentVelocity = _state.currentVelocity;\n var lastIdealStyle = _state.lastIdealStyle;\n var lastIdealVelocity = _state.lastIdealVelocity;\n\n for (var key in destStyle) {\n if (!Object.prototype.hasOwnProperty.call(destStyle, key)) {\n continue;\n }\n\n var styleValue = destStyle[key];\n if (typeof styleValue === 'number') {\n if (!dirty) {\n dirty = true;\n currentStyle = _extends({}, currentStyle);\n currentVelocity = _extends({}, currentVelocity);\n lastIdealStyle = _extends({}, lastIdealStyle);\n lastIdealVelocity = _extends({}, lastIdealVelocity);\n }\n\n currentStyle[key] = styleValue;\n currentVelocity[key] = 0;\n lastIdealStyle[key] = styleValue;\n lastIdealVelocity[key] = 0;\n }\n }\n\n if (dirty) {\n _this.setState({ currentStyle: currentStyle, currentVelocity: currentVelocity, lastIdealStyle: lastIdealStyle, lastIdealVelocity: lastIdealVelocity });\n }\n };\n\n this.startAnimationIfNecessary = function () {\n // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n // call cb? No, otherwise accidental parent rerender causes cb trigger\n _this.animationID = _raf2['default'](function (timestamp) {\n // check if we need to animate in the first place\n var propsStyle = _this.props.style;\n if (_shouldStopAnimation2['default'](_this.state.currentStyle, propsStyle, _this.state.currentVelocity)) {\n if (_this.wasAnimating && _this.props.onRest) {\n _this.props.onRest();\n }\n\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.wasAnimating = false;\n _this.accumulatedTime = 0;\n return;\n }\n\n _this.wasAnimating = true;\n\n var currentTime = timestamp || _performanceNow2['default']();\n var timeDelta = currentTime - _this.prevTime;\n _this.prevTime = currentTime;\n _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n // more than 10 frames? prolly switched browser tab. Restart\n if (_this.accumulatedTime > msPerFrame * 10) {\n _this.accumulatedTime = 0;\n }\n\n if (_this.accumulatedTime === 0) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.startAnimationIfNecessary();\n return;\n }\n\n var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\n var newLastIdealStyle = {};\n var newLastIdealVelocity = {};\n var newCurrentStyle = {};\n var newCurrentVelocity = {};\n\n for (var key in propsStyle) {\n if (!Object.prototype.hasOwnProperty.call(propsStyle, key)) {\n continue;\n }\n\n var styleValue = propsStyle[key];\n if (typeof styleValue === 'number') {\n newCurrentStyle[key] = styleValue;\n newCurrentVelocity[key] = 0;\n newLastIdealStyle[key] = styleValue;\n newLastIdealVelocity[key] = 0;\n } else {\n var newLastIdealStyleValue = _this.state.lastIdealStyle[key];\n var newLastIdealVelocityValue = _this.state.lastIdealVelocity[key];\n for (var i = 0; i < framesToCatchUp; i++) {\n var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n newLastIdealStyleValue = _stepper[0];\n newLastIdealVelocityValue = _stepper[1];\n }\n\n var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n var nextIdealX = _stepper2[0];\n var nextIdealV = _stepper2[1];\n\n newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n newLastIdealStyle[key] = newLastIdealStyleValue;\n newLastIdealVelocity[key] = newLastIdealVelocityValue;\n }\n }\n\n _this.animationID = null;\n // the amount we're looped over above\n _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\n _this.setState({\n currentStyle: newCurrentStyle,\n currentVelocity: newCurrentVelocity,\n lastIdealStyle: newLastIdealStyle,\n lastIdealVelocity: newLastIdealVelocity\n });\n\n _this.unreadPropStyle = null;\n\n _this.startAnimationIfNecessary();\n });\n };\n\n this.state = this.defaultState();\n }\n\n Motion.prototype.defaultState = function defaultState() {\n var _props = this.props;\n var defaultStyle = _props.defaultStyle;\n var style = _props.style;\n\n var currentStyle = defaultStyle || _stripStyle2['default'](style);\n var currentVelocity = _mapToZero2['default'](currentStyle);\n return {\n currentStyle: currentStyle,\n currentVelocity: currentVelocity,\n lastIdealStyle: currentStyle,\n lastIdealVelocity: currentVelocity\n };\n };\n\n // it's possible that currentStyle's value is stale: if props is immediately\n // changed from 0 to 400 to spring(0) again, the async currentStyle is still\n // at 0 (didn't have time to tick and interpolate even once). If we naively\n // compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n // In reality currentStyle should be 400\n\n Motion.prototype.componentDidMount = function componentDidMount() {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n };\n\n Motion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n if (this.unreadPropStyle != null) {\n // previous props haven't had the chance to be set yet; set them here\n this.clearUnreadPropStyle(this.unreadPropStyle);\n }\n\n this.unreadPropStyle = props.style;\n if (this.animationID == null) {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n }\n };\n\n Motion.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.animationID != null) {\n _raf2['default'].cancel(this.animationID);\n this.animationID = null;\n }\n };\n\n Motion.prototype.render = function render() {\n var renderedChildren = this.props.children(this.state.currentStyle);\n return renderedChildren && _react2['default'].Children.only(renderedChildren);\n };\n\n return Motion;\n})(_react2['default'].Component);\n\nexports['default'] = Motion;\nmodule.exports = exports['default'];\n\n// after checking for unreadPropStyle != null, we manually go set the\n// non-interpolating values (those that are a number, without a spring\n// config)","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _mapToZero = require('./mapToZero');\n\nvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\nvar _stripStyle = require('./stripStyle');\n\nvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\nvar _stepper3 = require('./stepper');\n\nvar _stepper4 = _interopRequireDefault(_stepper3);\n\nvar _performanceNow = require('performance-now');\n\nvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\nvar _raf = require('raf');\n\nvar _raf2 = _interopRequireDefault(_raf);\n\nvar _shouldStopAnimation = require('./shouldStopAnimation');\n\nvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar msPerFrame = 1000 / 60;\n\nfunction shouldStopAnimationAll(currentStyles, styles, currentVelocities) {\n for (var i = 0; i < currentStyles.length; i++) {\n if (!_shouldStopAnimation2['default'](currentStyles[i], styles[i], currentVelocities[i])) {\n return false;\n }\n }\n return true;\n}\n\nvar StaggeredMotion = (function (_React$Component) {\n _inherits(StaggeredMotion, _React$Component);\n\n _createClass(StaggeredMotion, null, [{\n key: 'propTypes',\n value: {\n // TOOD: warn against putting a config in here\n defaultStyles: _propTypes2['default'].arrayOf(_propTypes2['default'].objectOf(_propTypes2['default'].number)),\n styles: _propTypes2['default'].func.isRequired,\n children: _propTypes2['default'].func.isRequired\n },\n enumerable: true\n }]);\n\n function StaggeredMotion(props) {\n var _this = this;\n\n _classCallCheck(this, StaggeredMotion);\n\n _React$Component.call(this, props);\n this.animationID = null;\n this.prevTime = 0;\n this.accumulatedTime = 0;\n this.unreadPropStyles = null;\n\n this.clearUnreadPropStyle = function (unreadPropStyles) {\n var _state = _this.state;\n var currentStyles = _state.currentStyles;\n var currentVelocities = _state.currentVelocities;\n var lastIdealStyles = _state.lastIdealStyles;\n var lastIdealVelocities = _state.lastIdealVelocities;\n\n var someDirty = false;\n for (var i = 0; i < unreadPropStyles.length; i++) {\n var unreadPropStyle = unreadPropStyles[i];\n var dirty = false;\n\n for (var key in unreadPropStyle) {\n if (!Object.prototype.hasOwnProperty.call(unreadPropStyle, key)) {\n continue;\n }\n\n var styleValue = unreadPropStyle[key];\n if (typeof styleValue === 'number') {\n if (!dirty) {\n dirty = true;\n someDirty = true;\n currentStyles[i] = _extends({}, currentStyles[i]);\n currentVelocities[i] = _extends({}, currentVelocities[i]);\n lastIdealStyles[i] = _extends({}, lastIdealStyles[i]);\n lastIdealVelocities[i] = _extends({}, lastIdealVelocities[i]);\n }\n currentStyles[i][key] = styleValue;\n currentVelocities[i][key] = 0;\n lastIdealStyles[i][key] = styleValue;\n lastIdealVelocities[i][key] = 0;\n }\n }\n }\n\n if (someDirty) {\n _this.setState({ currentStyles: currentStyles, currentVelocities: currentVelocities, lastIdealStyles: lastIdealStyles, lastIdealVelocities: lastIdealVelocities });\n }\n };\n\n this.startAnimationIfNecessary = function () {\n // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n // call cb? No, otherwise accidental parent rerender causes cb trigger\n _this.animationID = _raf2['default'](function (timestamp) {\n var destStyles = _this.props.styles(_this.state.lastIdealStyles);\n\n // check if we need to animate in the first place\n if (shouldStopAnimationAll(_this.state.currentStyles, destStyles, _this.state.currentVelocities)) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.accumulatedTime = 0;\n return;\n }\n\n var currentTime = timestamp || _performanceNow2['default']();\n var timeDelta = currentTime - _this.prevTime;\n _this.prevTime = currentTime;\n _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n // more than 10 frames? prolly switched browser tab. Restart\n if (_this.accumulatedTime > msPerFrame * 10) {\n _this.accumulatedTime = 0;\n }\n\n if (_this.accumulatedTime === 0) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.startAnimationIfNecessary();\n return;\n }\n\n var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\n var newLastIdealStyles = [];\n var newLastIdealVelocities = [];\n var newCurrentStyles = [];\n var newCurrentVelocities = [];\n\n for (var i = 0; i < destStyles.length; i++) {\n var destStyle = destStyles[i];\n var newCurrentStyle = {};\n var newCurrentVelocity = {};\n var newLastIdealStyle = {};\n var newLastIdealVelocity = {};\n\n for (var key in destStyle) {\n if (!Object.prototype.hasOwnProperty.call(destStyle, key)) {\n continue;\n }\n\n var styleValue = destStyle[key];\n if (typeof styleValue === 'number') {\n newCurrentStyle[key] = styleValue;\n newCurrentVelocity[key] = 0;\n newLastIdealStyle[key] = styleValue;\n newLastIdealVelocity[key] = 0;\n } else {\n var newLastIdealStyleValue = _this.state.lastIdealStyles[i][key];\n var newLastIdealVelocityValue = _this.state.lastIdealVelocities[i][key];\n for (var j = 0; j < framesToCatchUp; j++) {\n var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n newLastIdealStyleValue = _stepper[0];\n newLastIdealVelocityValue = _stepper[1];\n }\n\n var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n var nextIdealX = _stepper2[0];\n var nextIdealV = _stepper2[1];\n\n newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n newLastIdealStyle[key] = newLastIdealStyleValue;\n newLastIdealVelocity[key] = newLastIdealVelocityValue;\n }\n }\n\n newCurrentStyles[i] = newCurrentStyle;\n newCurrentVelocities[i] = newCurrentVelocity;\n newLastIdealStyles[i] = newLastIdealStyle;\n newLastIdealVelocities[i] = newLastIdealVelocity;\n }\n\n _this.animationID = null;\n // the amount we're looped over above\n _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\n _this.setState({\n currentStyles: newCurrentStyles,\n currentVelocities: newCurrentVelocities,\n lastIdealStyles: newLastIdealStyles,\n lastIdealVelocities: newLastIdealVelocities\n });\n\n _this.unreadPropStyles = null;\n\n _this.startAnimationIfNecessary();\n });\n };\n\n this.state = this.defaultState();\n }\n\n StaggeredMotion.prototype.defaultState = function defaultState() {\n var _props = this.props;\n var defaultStyles = _props.defaultStyles;\n var styles = _props.styles;\n\n var currentStyles = defaultStyles || styles().map(_stripStyle2['default']);\n var currentVelocities = currentStyles.map(function (currentStyle) {\n return _mapToZero2['default'](currentStyle);\n });\n return {\n currentStyles: currentStyles,\n currentVelocities: currentVelocities,\n lastIdealStyles: currentStyles,\n lastIdealVelocities: currentVelocities\n };\n };\n\n StaggeredMotion.prototype.componentDidMount = function componentDidMount() {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n };\n\n StaggeredMotion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n if (this.unreadPropStyles != null) {\n // previous props haven't had the chance to be set yet; set them here\n this.clearUnreadPropStyle(this.unreadPropStyles);\n }\n\n this.unreadPropStyles = props.styles(this.state.lastIdealStyles);\n if (this.animationID == null) {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n }\n };\n\n StaggeredMotion.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.animationID != null) {\n _raf2['default'].cancel(this.animationID);\n this.animationID = null;\n }\n };\n\n StaggeredMotion.prototype.render = function render() {\n var renderedChildren = this.props.children(this.state.currentStyles);\n return renderedChildren && _react2['default'].Children.only(renderedChildren);\n };\n\n return StaggeredMotion;\n})(_react2['default'].Component);\n\nexports['default'] = StaggeredMotion;\nmodule.exports = exports['default'];\n\n// it's possible that currentStyle's value is stale: if props is immediately\n// changed from 0 to 400 to spring(0) again, the async currentStyle is still\n// at 0 (didn't have time to tick and interpolate even once). If we naively\n// compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n// In reality currentStyle should be 400\n\n// after checking for unreadPropStyles != null, we manually go set the\n// non-interpolating values (those that are a number, without a spring\n// config)","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _mapToZero = require('./mapToZero');\n\nvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\nvar _stripStyle = require('./stripStyle');\n\nvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\nvar _stepper3 = require('./stepper');\n\nvar _stepper4 = _interopRequireDefault(_stepper3);\n\nvar _mergeDiff = require('./mergeDiff');\n\nvar _mergeDiff2 = _interopRequireDefault(_mergeDiff);\n\nvar _performanceNow = require('performance-now');\n\nvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\nvar _raf = require('raf');\n\nvar _raf2 = _interopRequireDefault(_raf);\n\nvar _shouldStopAnimation = require('./shouldStopAnimation');\n\nvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar msPerFrame = 1000 / 60;\n\n// the children function & (potential) styles function asks as param an\n// Array<TransitionPlainStyle>, where each TransitionPlainStyle is of the format\n// {key: string, data?: any, style: PlainStyle}. However, the way we keep\n// internal states doesn't contain such a data structure (check the state and\n// TransitionMotionState). So when children function and others ask for such\n// data we need to generate them on the fly by combining mergedPropsStyles and\n// currentStyles/lastIdealStyles\nfunction rehydrateStyles(mergedPropsStyles, unreadPropStyles, plainStyles) {\n // Copy the value to a `const` so that Flow understands that the const won't\n // change and will be non-nullable in the callback below.\n var cUnreadPropStyles = unreadPropStyles;\n if (cUnreadPropStyles == null) {\n return mergedPropsStyles.map(function (mergedPropsStyle, i) {\n return {\n key: mergedPropsStyle.key,\n data: mergedPropsStyle.data,\n style: plainStyles[i]\n };\n });\n }\n return mergedPropsStyles.map(function (mergedPropsStyle, i) {\n for (var j = 0; j < cUnreadPropStyles.length; j++) {\n if (cUnreadPropStyles[j].key === mergedPropsStyle.key) {\n return {\n key: cUnreadPropStyles[j].key,\n data: cUnreadPropStyles[j].data,\n style: plainStyles[i]\n };\n }\n }\n return { key: mergedPropsStyle.key, data: mergedPropsStyle.data, style: plainStyles[i] };\n });\n}\n\nfunction shouldStopAnimationAll(currentStyles, destStyles, currentVelocities, mergedPropsStyles) {\n if (mergedPropsStyles.length !== destStyles.length) {\n return false;\n }\n\n for (var i = 0; i < mergedPropsStyles.length; i++) {\n if (mergedPropsStyles[i].key !== destStyles[i].key) {\n return false;\n }\n }\n\n // we have the invariant that mergedPropsStyles and\n // currentStyles/currentVelocities/last* are synced in terms of cells, see\n // mergeAndSync comment for more info\n for (var i = 0; i < mergedPropsStyles.length; i++) {\n if (!_shouldStopAnimation2['default'](currentStyles[i], destStyles[i].style, currentVelocities[i])) {\n return false;\n }\n }\n\n return true;\n}\n\n// core key merging logic\n\n// things to do: say previously merged style is {a, b}, dest style (prop) is {b,\n// c}, previous current (interpolating) style is {a, b}\n// **invariant**: current[i] corresponds to merged[i] in terms of key\n\n// steps:\n// turn merged style into {a?, b, c}\n// add c, value of c is destStyles.c\n// maybe remove a, aka call willLeave(a), then merged is either {b, c} or {a, b, c}\n// turn current (interpolating) style from {a, b} into {a?, b, c}\n// maybe remove a\n// certainly add c, value of c is willEnter(c)\n// loop over merged and construct new current\n// dest doesn't change, that's owner's\nfunction mergeAndSync(willEnter, willLeave, didLeave, oldMergedPropsStyles, destStyles, oldCurrentStyles, oldCurrentVelocities, oldLastIdealStyles, oldLastIdealVelocities) {\n var newMergedPropsStyles = _mergeDiff2['default'](oldMergedPropsStyles, destStyles, function (oldIndex, oldMergedPropsStyle) {\n var leavingStyle = willLeave(oldMergedPropsStyle);\n if (leavingStyle == null) {\n didLeave({ key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data });\n return null;\n }\n if (_shouldStopAnimation2['default'](oldCurrentStyles[oldIndex], leavingStyle, oldCurrentVelocities[oldIndex])) {\n didLeave({ key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data });\n return null;\n }\n return { key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data, style: leavingStyle };\n });\n\n var newCurrentStyles = [];\n var newCurrentVelocities = [];\n var newLastIdealStyles = [];\n var newLastIdealVelocities = [];\n for (var i = 0; i < newMergedPropsStyles.length; i++) {\n var newMergedPropsStyleCell = newMergedPropsStyles[i];\n var foundOldIndex = null;\n for (var j = 0; j < oldMergedPropsStyles.length; j++) {\n if (oldMergedPropsStyles[j].key === newMergedPropsStyleCell.key) {\n foundOldIndex = j;\n break;\n }\n }\n // TODO: key search code\n if (foundOldIndex == null) {\n var plainStyle = willEnter(newMergedPropsStyleCell);\n newCurrentStyles[i] = plainStyle;\n newLastIdealStyles[i] = plainStyle;\n\n var velocity = _mapToZero2['default'](newMergedPropsStyleCell.style);\n newCurrentVelocities[i] = velocity;\n newLastIdealVelocities[i] = velocity;\n } else {\n newCurrentStyles[i] = oldCurrentStyles[foundOldIndex];\n newLastIdealStyles[i] = oldLastIdealStyles[foundOldIndex];\n newCurrentVelocities[i] = oldCurrentVelocities[foundOldIndex];\n newLastIdealVelocities[i] = oldLastIdealVelocities[foundOldIndex];\n }\n }\n\n return [newMergedPropsStyles, newCurrentStyles, newCurrentVelocities, newLastIdealStyles, newLastIdealVelocities];\n}\n\nvar TransitionMotion = (function (_React$Component) {\n _inherits(TransitionMotion, _React$Component);\n\n _createClass(TransitionMotion, null, [{\n key: 'propTypes',\n value: {\n defaultStyles: _propTypes2['default'].arrayOf(_propTypes2['default'].shape({\n key: _propTypes2['default'].string.isRequired,\n data: _propTypes2['default'].any,\n style: _propTypes2['default'].objectOf(_propTypes2['default'].number).isRequired\n })),\n styles: _propTypes2['default'].oneOfType([_propTypes2['default'].func, _propTypes2['default'].arrayOf(_propTypes2['default'].shape({\n key: _propTypes2['default'].string.isRequired,\n data: _propTypes2['default'].any,\n style: _propTypes2['default'].objectOf(_propTypes2['default'].oneOfType([_propTypes2['default'].number, _propTypes2['default'].object])).isRequired\n }))]).isRequired,\n children: _propTypes2['default'].func.isRequired,\n willEnter: _propTypes2['default'].func,\n willLeave: _propTypes2['default'].func,\n didLeave: _propTypes2['default'].func\n },\n enumerable: true\n }, {\n key: 'defaultProps',\n value: {\n willEnter: function willEnter(styleThatEntered) {\n return _stripStyle2['default'](styleThatEntered.style);\n },\n // recall: returning null makes the current unmounting TransitionStyle\n // disappear immediately\n willLeave: function willLeave() {\n return null;\n },\n didLeave: function didLeave() {}\n },\n enumerable: true\n }]);\n\n function TransitionMotion(props) {\n var _this = this;\n\n _classCallCheck(this, TransitionMotion);\n\n _React$Component.call(this, props);\n this.unmounting = false;\n this.animationID = null;\n this.prevTime = 0;\n this.accumulatedTime = 0;\n this.unreadPropStyles = null;\n\n this.clearUnreadPropStyle = function (unreadPropStyles) {\n var _mergeAndSync = mergeAndSync(_this.props.willEnter, _this.props.willLeave, _this.props.didLeave, _this.state.mergedPropsStyles, unreadPropStyles, _this.state.currentStyles, _this.state.currentVelocities, _this.state.lastIdealStyles, _this.state.lastIdealVelocities);\n\n var mergedPropsStyles = _mergeAndSync[0];\n var currentStyles = _mergeAndSync[1];\n var currentVelocities = _mergeAndSync[2];\n var lastIdealStyles = _mergeAndSync[3];\n var lastIdealVelocities = _mergeAndSync[4];\n\n for (var i = 0; i < unreadPropStyles.length; i++) {\n var unreadPropStyle = unreadPropStyles[i].style;\n var dirty = false;\n\n for (var key in unreadPropStyle) {\n if (!Object.prototype.hasOwnProperty.call(unreadPropStyle, key)) {\n continue;\n }\n\n var styleValue = unreadPropStyle[key];\n if (typeof styleValue === 'number') {\n if (!dirty) {\n dirty = true;\n currentStyles[i] = _extends({}, currentStyles[i]);\n currentVelocities[i] = _extends({}, currentVelocities[i]);\n lastIdealStyles[i] = _extends({}, lastIdealStyles[i]);\n lastIdealVelocities[i] = _extends({}, lastIdealVelocities[i]);\n mergedPropsStyles[i] = {\n key: mergedPropsStyles[i].key,\n data: mergedPropsStyles[i].data,\n style: _extends({}, mergedPropsStyles[i].style)\n };\n }\n currentStyles[i][key] = styleValue;\n currentVelocities[i][key] = 0;\n lastIdealStyles[i][key] = styleValue;\n lastIdealVelocities[i][key] = 0;\n mergedPropsStyles[i].style[key] = styleValue;\n }\n }\n }\n\n // unlike the other 2 components, we can't detect staleness and optionally\n // opt out of setState here. each style object's data might contain new\n // stuff we're not/cannot compare\n _this.setState({\n currentStyles: currentStyles,\n currentVelocities: currentVelocities,\n mergedPropsStyles: mergedPropsStyles,\n lastIdealStyles: lastIdealStyles,\n lastIdealVelocities: lastIdealVelocities\n });\n };\n\n this.startAnimationIfNecessary = function () {\n if (_this.unmounting) {\n return;\n }\n\n // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n // call cb? No, otherwise accidental parent rerender causes cb trigger\n _this.animationID = _raf2['default'](function (timestamp) {\n // https://github.com/chenglou/react-motion/pull/420\n // > if execution passes the conditional if (this.unmounting), then\n // executes async defaultRaf and after that component unmounts and after\n // that the callback of defaultRaf is called, then setState will be called\n // on unmounted component.\n if (_this.unmounting) {\n return;\n }\n\n var propStyles = _this.props.styles;\n var destStyles = typeof propStyles === 'function' ? propStyles(rehydrateStyles(_this.state.mergedPropsStyles, _this.unreadPropStyles, _this.state.lastIdealStyles)) : propStyles;\n\n // check if we need to animate in the first place\n if (shouldStopAnimationAll(_this.state.currentStyles, destStyles, _this.state.currentVelocities, _this.state.mergedPropsStyles)) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.accumulatedTime = 0;\n return;\n }\n\n var currentTime = timestamp || _performanceNow2['default']();\n var timeDelta = currentTime - _this.prevTime;\n _this.prevTime = currentTime;\n _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n // more than 10 frames? prolly switched browser tab. Restart\n if (_this.accumulatedTime > msPerFrame * 10) {\n _this.accumulatedTime = 0;\n }\n\n if (_this.accumulatedTime === 0) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.startAnimationIfNecessary();\n return;\n }\n\n var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\n var _mergeAndSync2 = mergeAndSync(_this.props.willEnter, _this.props.willLeave, _this.props.didLeave, _this.state.mergedPropsStyles, destStyles, _this.state.currentStyles, _this.state.currentVelocities, _this.state.lastIdealStyles, _this.state.lastIdealVelocities);\n\n var newMergedPropsStyles = _mergeAndSync2[0];\n var newCurrentStyles = _mergeAndSync2[1];\n var newCurrentVelocities = _mergeAndSync2[2];\n var newLastIdealStyles = _mergeAndSync2[3];\n var newLastIdealVelocities = _mergeAndSync2[4];\n\n for (var i = 0; i < newMergedPropsStyles.length; i++) {\n var newMergedPropsStyle = newMergedPropsStyles[i].style;\n var newCurrentStyle = {};\n var newCurrentVelocity = {};\n var newLastIdealStyle = {};\n var newLastIdealVelocity = {};\n\n for (var key in newMergedPropsStyle) {\n if (!Object.prototype.hasOwnProperty.call(newMergedPropsStyle, key)) {\n continue;\n }\n\n var styleValue = newMergedPropsStyle[key];\n if (typeof styleValue === 'number') {\n newCurrentStyle[key] = styleValue;\n newCurrentVelocity[key] = 0;\n newLastIdealStyle[key] = styleValue;\n newLastIdealVelocity[key] = 0;\n } else {\n var newLastIdealStyleValue = newLastIdealStyles[i][key];\n var newLastIdealVelocityValue = newLastIdealVelocities[i][key];\n for (var j = 0; j < framesToCatchUp; j++) {\n var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n newLastIdealStyleValue = _stepper[0];\n newLastIdealVelocityValue = _stepper[1];\n }\n\n var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n var nextIdealX = _stepper2[0];\n var nextIdealV = _stepper2[1];\n\n newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n newLastIdealStyle[key] = newLastIdealStyleValue;\n newLastIdealVelocity[key] = newLastIdealVelocityValue;\n }\n }\n\n newLastIdealStyles[i] = newLastIdealStyle;\n newLastIdealVelocities[i] = newLastIdealVelocity;\n newCurrentStyles[i] = newCurrentStyle;\n newCurrentVelocities[i] = newCurrentVelocity;\n }\n\n _this.animationID = null;\n // the amount we're looped over above\n _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\n _this.setState({\n currentStyles: newCurrentStyles,\n currentVelocities: newCurrentVelocities,\n lastIdealStyles: newLastIdealStyles,\n lastIdealVelocities: newLastIdealVelocities,\n mergedPropsStyles: newMergedPropsStyles\n });\n\n _this.unreadPropStyles = null;\n\n _this.startAnimationIfNecessary();\n });\n };\n\n this.state = this.defaultState();\n }\n\n TransitionMotion.prototype.defaultState = function defaultState() {\n var _props = this.props;\n var defaultStyles = _props.defaultStyles;\n var styles = _props.styles;\n var willEnter = _props.willEnter;\n var willLeave = _props.willLeave;\n var didLeave = _props.didLeave;\n\n var destStyles = typeof styles === 'function' ? styles(defaultStyles) : styles;\n\n // this is special. for the first time around, we don't have a comparison\n // between last (no last) and current merged props. we'll compute last so:\n // say default is {a, b} and styles (dest style) is {b, c}, we'll\n // fabricate last as {a, b}\n var oldMergedPropsStyles = undefined;\n if (defaultStyles == null) {\n oldMergedPropsStyles = destStyles;\n } else {\n oldMergedPropsStyles = defaultStyles.map(function (defaultStyleCell) {\n // TODO: key search code\n for (var i = 0; i < destStyles.length; i++) {\n if (destStyles[i].key === defaultStyleCell.key) {\n return destStyles[i];\n }\n }\n return defaultStyleCell;\n });\n }\n var oldCurrentStyles = defaultStyles == null ? destStyles.map(function (s) {\n return _stripStyle2['default'](s.style);\n }) : defaultStyles.map(function (s) {\n return _stripStyle2['default'](s.style);\n });\n var oldCurrentVelocities = defaultStyles == null ? destStyles.map(function (s) {\n return _mapToZero2['default'](s.style);\n }) : defaultStyles.map(function (s) {\n return _mapToZero2['default'](s.style);\n });\n\n var _mergeAndSync3 = mergeAndSync(\n // Because this is an old-style createReactClass component, Flow doesn't\n // understand that the willEnter and willLeave props have default values\n // and will always be present.\n willEnter, willLeave, didLeave, oldMergedPropsStyles, destStyles, oldCurrentStyles, oldCurrentVelocities, oldCurrentStyles, // oldLastIdealStyles really\n oldCurrentVelocities);\n\n var mergedPropsStyles = _mergeAndSync3[0];\n var currentStyles = _mergeAndSync3[1];\n var currentVelocities = _mergeAndSync3[2];\n var lastIdealStyles = _mergeAndSync3[3];\n var lastIdealVelocities = _mergeAndSync3[4];\n // oldLastIdealVelocities really\n\n return {\n currentStyles: currentStyles,\n currentVelocities: currentVelocities,\n lastIdealStyles: lastIdealStyles,\n lastIdealVelocities: lastIdealVelocities,\n mergedPropsStyles: mergedPropsStyles\n };\n };\n\n // after checking for unreadPropStyles != null, we manually go set the\n // non-interpolating values (those that are a number, without a spring\n // config)\n\n TransitionMotion.prototype.componentDidMount = function componentDidMount() {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n };\n\n TransitionMotion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n if (this.unreadPropStyles) {\n // previous props haven't had the chance to be set yet; set them here\n this.clearUnreadPropStyle(this.unreadPropStyles);\n }\n\n var styles = props.styles;\n if (typeof styles === 'function') {\n this.unreadPropStyles = styles(rehydrateStyles(this.state.mergedPropsStyles, this.unreadPropStyles, this.state.lastIdealStyles));\n } else {\n this.unreadPropStyles = styles;\n }\n\n if (this.animationID == null) {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n }\n };\n\n TransitionMotion.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unmounting = true;\n if (this.animationID != null) {\n _raf2['default'].cancel(this.animationID);\n this.animationID = null;\n }\n };\n\n TransitionMotion.prototype.render = function render() {\n var hydratedStyles = rehydrateStyles(this.state.mergedPropsStyles, this.unreadPropStyles, this.state.currentStyles);\n var renderedChildren = this.props.children(hydratedStyles);\n return renderedChildren && _react2['default'].Children.only(renderedChildren);\n };\n\n return TransitionMotion;\n})(_react2['default'].Component);\n\nexports['default'] = TransitionMotion;\nmodule.exports = exports['default'];\n\n// list of styles, each containing interpolating values. Part of what's passed\n// to children function. Notice that this is\n// Array<ActualInterpolatingStyleObject>, without the wrapper that is {key: ...,\n// data: ... style: ActualInterpolatingStyleObject}. Only mergedPropsStyles\n// contains the key & data info (so that we only have a single source of truth\n// for these, and to save space). Check the comment for `rehydrateStyles` to\n// see how we regenerate the entirety of what's passed to children function\n\n// the array that keeps track of currently rendered stuff! Including stuff\n// that you've unmounted but that's still animating. This is where it lives\n\n// it's possible that currentStyle's value is stale: if props is immediately\n// changed from 0 to 400 to spring(0) again, the async currentStyle is still\n// at 0 (didn't have time to tick and interpolate even once). If we naively\n// compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n// In reality currentStyle should be 400","\n\n// core keys merging algorithm. If previous render's keys are [a, b], and the\n// next render's [c, b, d], what's the final merged keys and ordering?\n\n// - c and a must both be before b\n// - b before d\n// - ordering between a and c ambiguous\n\n// this reduces to merging two partially ordered lists (e.g. lists where not\n// every item has a definite ordering, like comparing a and c above). For the\n// ambiguous ordering we deterministically choose to place the next render's\n// item after the previous'; so c after a\n\n// this is called a topological sorting. Except the existing algorithms don't\n// work well with js bc of the amount of allocation, and isn't optimized for our\n// current use-case bc the runtime is linear in terms of edges (see wiki for\n// meaning), which is huge when two lists have many common elements\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = mergeDiff;\n\nfunction mergeDiff(prev, next, onRemove) {\n // bookkeeping for easier access of a key's index below. This is 2 allocations +\n // potentially triggering chrome hash map mode for objs (so it might be faster\n\n var prevKeyIndex = {};\n for (var i = 0; i < prev.length; i++) {\n prevKeyIndex[prev[i].key] = i;\n }\n var nextKeyIndex = {};\n for (var i = 0; i < next.length; i++) {\n nextKeyIndex[next[i].key] = i;\n }\n\n // first, an overly elaborate way of merging prev and next, eliminating\n // duplicates (in terms of keys). If there's dupe, keep the item in next).\n // This way of writing it saves allocations\n var ret = [];\n for (var i = 0; i < next.length; i++) {\n ret[i] = next[i];\n }\n for (var i = 0; i < prev.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(nextKeyIndex, prev[i].key)) {\n // this is called my TM's `mergeAndSync`, which calls willLeave. We don't\n // merge in keys that the user desires to kill\n var fill = onRemove(i, prev[i]);\n if (fill != null) {\n ret.push(fill);\n }\n }\n }\n\n // now all the items all present. Core sorting logic to have the right order\n return ret.sort(function (a, b) {\n var nextOrderA = nextKeyIndex[a.key];\n var nextOrderB = nextKeyIndex[b.key];\n var prevOrderA = prevKeyIndex[a.key];\n var prevOrderB = prevKeyIndex[b.key];\n\n if (nextOrderA != null && nextOrderB != null) {\n // both keys in next\n return nextKeyIndex[a.key] - nextKeyIndex[b.key];\n } else if (prevOrderA != null && prevOrderB != null) {\n // both keys in prev\n return prevKeyIndex[a.key] - prevKeyIndex[b.key];\n } else if (nextOrderA != null) {\n // key a in next, key b in prev\n\n // how to determine the order between a and b? We find a \"pivot\" (term\n // abuse), a key present in both prev and next, that is sandwiched between\n // a and b. In the context of our above example, if we're comparing a and\n // d, b's (the only) pivot\n for (var i = 0; i < next.length; i++) {\n var pivot = next[i].key;\n if (!Object.prototype.hasOwnProperty.call(prevKeyIndex, pivot)) {\n continue;\n }\n\n if (nextOrderA < nextKeyIndex[pivot] && prevOrderB > prevKeyIndex[pivot]) {\n return -1;\n } else if (nextOrderA > nextKeyIndex[pivot] && prevOrderB < prevKeyIndex[pivot]) {\n return 1;\n }\n }\n // pluggable. default to: next bigger than prev\n return 1;\n }\n // prevOrderA, nextOrderB\n for (var i = 0; i < next.length; i++) {\n var pivot = next[i].key;\n if (!Object.prototype.hasOwnProperty.call(prevKeyIndex, pivot)) {\n continue;\n }\n if (nextOrderB < nextKeyIndex[pivot] && prevOrderA > prevKeyIndex[pivot]) {\n return 1;\n } else if (nextOrderB > nextKeyIndex[pivot] && prevOrderA < prevKeyIndex[pivot]) {\n return -1;\n }\n }\n // pluggable. default to: next bigger than prev\n return -1;\n });\n}\n\nmodule.exports = exports['default'];\n// to loop through and find a key's index each time), but I no longer care","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports['default'] = spring;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _presets = require('./presets');\n\nvar _presets2 = _interopRequireDefault(_presets);\n\nvar defaultConfig = _extends({}, _presets2['default'].noWobble, {\n precision: 0.01\n});\n\nfunction spring(val, config) {\n return _extends({}, defaultConfig, config, { val: val });\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = reorderKeys;\n\nvar hasWarned = false;\n\nfunction reorderKeys() {\n if (process.env.NODE_ENV === 'development') {\n if (!hasWarned) {\n hasWarned = true;\n console.error('`reorderKeys` has been removed, since it is no longer needed for TransitionMotion\\'s new styles array API.');\n }\n }\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _dragHandle = require('./drag-handle');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_dragHandle).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _DragHandle$contextTy;\n\nvar _react = require('react');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _contextKeys = require('../context-keys');\n\nvar _shouldAllowDraggingFromTarget = require('./util/should-allow-dragging-from-target');\n\nvar _shouldAllowDraggingFromTarget2 = _interopRequireDefault(_shouldAllowDraggingFromTarget);\n\nvar _createMouseSensor = require('./sensor/create-mouse-sensor');\n\nvar _createMouseSensor2 = _interopRequireDefault(_createMouseSensor);\n\nvar _createKeyboardSensor = require('./sensor/create-keyboard-sensor');\n\nvar _createKeyboardSensor2 = _interopRequireDefault(_createKeyboardSensor);\n\nvar _createTouchSensor = require('./sensor/create-touch-sensor');\n\nvar _createTouchSensor2 = _interopRequireDefault(_createTouchSensor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getFalse = function getFalse() {\n return false;\n};\n\nvar DragHandle = function (_Component) {\n (0, _inherits3.default)(DragHandle, _Component);\n\n function DragHandle(props, context) {\n (0, _classCallCheck3.default)(this, DragHandle);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DragHandle.__proto__ || (0, _getPrototypeOf2.default)(DragHandle)).call(this, props, context));\n\n _this.onKeyDown = function (event) {\n if (_this.mouseSensor.isCapturing()) {\n return;\n }\n\n _this.keyboardSensor.onKeyDown(event, _this.props);\n };\n\n _this.onMouseDown = function (event) {\n if (_this.keyboardSensor.isCapturing() || _this.mouseSensor.isCapturing()) {\n return;\n }\n\n _this.mouseSensor.onMouseDown(event);\n };\n\n _this.onTouchStart = function (event) {\n if (_this.mouseSensor.isCapturing() || _this.keyboardSensor.isCapturing()) {\n console.error('mouse or keyboard already listening when attempting to touch drag');\n return;\n }\n\n _this.touchSensor.onTouchStart(event);\n };\n\n _this.onTouchMove = function (event) {\n _this.touchSensor.onTouchMove(event);\n };\n\n _this.onClick = function (event) {\n _this.mouseSensor.onClick(event);\n _this.touchSensor.onClick(event);\n };\n\n _this.canStartCapturing = function (event) {\n if (_this.isAnySensorCapturing()) {\n return false;\n }\n\n if (!_this.canLift(_this.props.draggableId)) {\n return false;\n }\n\n return (0, _shouldAllowDraggingFromTarget2.default)(event, _this.props);\n };\n\n _this.isAnySensorDragging = function () {\n return _this.sensors.some(function (sensor) {\n return sensor.isDragging();\n });\n };\n\n _this.isAnySensorCapturing = function () {\n return _this.sensors.some(function (sensor) {\n return sensor.isCapturing();\n });\n };\n\n _this.getProvided = (0, _memoizeOne2.default)(function (isEnabled, isDragging) {\n if (!isEnabled) {\n return null;\n }\n\n var provided = {\n onMouseDown: _this.onMouseDown,\n onKeyDown: _this.onKeyDown,\n onTouchStart: _this.onTouchStart,\n onTouchMove: _this.onTouchMove,\n onClick: _this.onClick,\n tabIndex: 0,\n 'aria-grabbed': isDragging,\n 'data-react-beautiful-dnd-drag-handle': _this.styleContext,\n draggable: false,\n onDragStart: getFalse,\n onDrop: getFalse\n };\n\n return provided;\n });\n\n\n var args = {\n callbacks: _this.props.callbacks,\n getDraggableRef: _this.props.getDraggableRef,\n canStartCapturing: _this.canStartCapturing\n };\n\n _this.mouseSensor = (0, _createMouseSensor2.default)(args);\n _this.keyboardSensor = (0, _createKeyboardSensor2.default)(args);\n _this.touchSensor = (0, _createTouchSensor2.default)(args);\n _this.sensors = [_this.mouseSensor, _this.keyboardSensor, _this.touchSensor];\n _this.styleContext = context[_contextKeys.styleContextKey];\n\n _this.canLift = context[_contextKeys.canLiftContextKey];\n return _this;\n }\n\n (0, _createClass3.default)(DragHandle, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var _this2 = this;\n\n this.sensors.forEach(function (sensor) {\n var wasCapturing = sensor.isCapturing();\n var wasDragging = sensor.isDragging();\n\n if (wasCapturing) {\n sensor.kill();\n }\n\n if (wasDragging) {\n _this2.props.callbacks.onCancel();\n }\n });\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var _this3 = this;\n\n var isCapturing = this.isAnySensorCapturing();\n\n if (!isCapturing) {\n return;\n }\n\n var isDragStopping = this.props.isDragging && !nextProps.isDragging;\n\n if (isDragStopping) {\n this.sensors.forEach(function (sensor) {\n if (sensor.isCapturing()) {\n sensor.kill();\n }\n });\n return;\n }\n\n if (!nextProps.isEnabled) {\n this.sensors.forEach(function (sensor) {\n if (sensor.isCapturing()) {\n var wasDragging = sensor.isDragging();\n\n sensor.kill();\n\n if (wasDragging) {\n _this3.props.callbacks.onCancel();\n }\n }\n });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n isEnabled = _props.isEnabled;\n\n\n return children(this.getProvided(isEnabled, this.isAnySensorDragging()));\n }\n }]);\n return DragHandle;\n}(_react.Component);\n\nDragHandle.contextTypes = (_DragHandle$contextTy = {}, (0, _defineProperty3.default)(_DragHandle$contextTy, _contextKeys.styleContextKey, _propTypes2.default.string.isRequired), (0, _defineProperty3.default)(_DragHandle$contextTy, _contextKeys.canLiftContextKey, _propTypes2.default.func.isRequired), _DragHandle$contextTy);\nexports.default = DragHandle;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar interactiveTagNames = exports.interactiveTagNames = ['input', 'button', 'textarea', 'select', 'option', 'optgroup', 'video', 'audio'];\n\nvar isContentEditable = function isContentEditable(parent, current) {\n if (current == null) {\n return false;\n }\n\n var attribute = current.getAttribute('contenteditable');\n if (attribute === 'true' || attribute === '') {\n return true;\n }\n\n if (current === parent) {\n return false;\n }\n\n return isContentEditable(parent, current.parentElement);\n};\n\nexports.default = function (event, props) {\n if (props.canDragInteractiveElements) {\n return true;\n }\n\n var target = event.target,\n currentTarget = event.currentTarget;\n\n if (!(target instanceof HTMLElement) || !(currentTarget instanceof HTMLElement)) {\n return true;\n }\n\n var isTargetInteractive = interactiveTagNames.indexOf(target.tagName.toLowerCase()) !== -1;\n\n if (isTargetInteractive) {\n return false;\n }\n\n return !isContentEditable(currentTarget, target);\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _stopEvent = require('../util/stop-event');\n\nvar _stopEvent2 = _interopRequireDefault(_stopEvent);\n\nvar _createScheduler = require('../util/create-scheduler');\n\nvar _createScheduler2 = _interopRequireDefault(_createScheduler);\n\nvar _isSloppyClickThresholdExceeded = require('../util/is-sloppy-click-threshold-exceeded');\n\nvar _isSloppyClickThresholdExceeded2 = _interopRequireDefault(_isSloppyClickThresholdExceeded);\n\nvar _getWindowFromRef = require('../../get-window-from-ref');\n\nvar _getWindowFromRef2 = _interopRequireDefault(_getWindowFromRef);\n\nvar _keyCodes = require('../../key-codes');\n\nvar keyCodes = _interopRequireWildcard(_keyCodes);\n\nvar _blockStandardKeyEvents = require('../util/block-standard-key-events');\n\nvar _blockStandardKeyEvents2 = _interopRequireDefault(_blockStandardKeyEvents);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar primaryButton = 0;\nvar noop = function noop() {};\n\nexports.default = function (_ref) {\n var callbacks = _ref.callbacks,\n getDraggableRef = _ref.getDraggableRef,\n canStartCapturing = _ref.canStartCapturing;\n\n var state = {\n isDragging: false,\n pending: null,\n preventClick: false\n };\n var setState = function setState(partial) {\n var newState = (0, _extends3.default)({}, state, partial);\n state = newState;\n };\n var isDragging = function isDragging() {\n return state.isDragging;\n };\n var isCapturing = function isCapturing() {\n return Boolean(state.pending || state.isDragging);\n };\n var schedule = (0, _createScheduler2.default)(callbacks, isDragging);\n\n var startDragging = function startDragging() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n setState({\n pending: null,\n isDragging: true,\n preventClick: true\n });\n fn();\n };\n var stopDragging = function stopDragging() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n unbindWindowEvents();\n setState({\n isDragging: false,\n pending: null\n });\n fn();\n };\n var startPendingDrag = function startPendingDrag(point) {\n setState({ pending: point, isDragging: false });\n bindWindowEvents();\n };\n var stopPendingDrag = function stopPendingDrag() {\n setState({\n preventClick: false\n });\n stopDragging();\n };\n\n var kill = function kill() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n if (state.pending) {\n stopPendingDrag();\n return;\n }\n stopDragging(fn);\n };\n\n var cancel = function cancel() {\n kill(callbacks.onCancel);\n };\n\n var windowBindings = {\n mousemove: function mousemove(event) {\n var button = event.button,\n clientX = event.clientX,\n clientY = event.clientY;\n\n if (button !== primaryButton) {\n return;\n }\n\n var point = {\n x: clientX,\n y: clientY\n };\n\n if (state.isDragging) {\n schedule.move(point);\n return;\n }\n\n if (!state.pending) {\n console.error('invalid state');\n return;\n }\n\n if (!(0, _isSloppyClickThresholdExceeded2.default)(state.pending, point)) {\n return;\n }\n\n startDragging(function () {\n return callbacks.onLift({ client: point, isScrollAllowed: true });\n });\n },\n mouseup: function mouseup() {\n if (state.pending) {\n stopPendingDrag();\n return;\n }\n\n stopDragging(callbacks.onDrop);\n },\n mousedown: function mousedown() {\n stopDragging(callbacks.onCancel);\n },\n keydown: function keydown(event) {\n if (event.keyCode === keyCodes.escape) {\n (0, _stopEvent2.default)(event);\n cancel();\n return;\n }\n\n (0, _blockStandardKeyEvents2.default)(event);\n },\n resize: cancel,\n scroll: function scroll() {\n if (state.pending) {\n stopPendingDrag();\n return;\n }\n schedule.windowScrollMove();\n },\n\n webkitmouseforcechanged: function webkitmouseforcechanged(event) {\n if (event.webkitForce == null || MouseEvent.WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN == null) {\n console.error('handling a mouse force changed event when it is not supported');\n return;\n }\n\n var forcePressThreshold = MouseEvent.WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN;\n var isForcePressing = event.webkitForce >= forcePressThreshold;\n\n if (isForcePressing) {\n cancel();\n }\n }\n };\n\n var eventKeys = (0, _keys2.default)(windowBindings);\n\n var bindWindowEvents = function bindWindowEvents() {\n var win = (0, _getWindowFromRef2.default)(getDraggableRef());\n\n eventKeys.forEach(function (eventKey) {\n if (eventKey === 'scroll') {\n win.addEventListener(eventKey, windowBindings.scroll, { passive: true });\n return;\n }\n\n win.addEventListener(eventKey, windowBindings[eventKey]);\n });\n };\n\n var unbindWindowEvents = function unbindWindowEvents() {\n var win = (0, _getWindowFromRef2.default)(getDraggableRef());\n\n eventKeys.forEach(function (eventKey) {\n return win.removeEventListener(eventKey, windowBindings[eventKey]);\n });\n };\n\n var onMouseDown = function onMouseDown(event) {\n if (!canStartCapturing(event)) {\n return;\n }\n\n if (isCapturing()) {\n console.error('should not be able to perform a mouse down while a drag or pending drag is occurring');\n cancel();\n return;\n }\n\n var button = event.button,\n clientX = event.clientX,\n clientY = event.clientY;\n\n if (button !== primaryButton) {\n return;\n }\n\n (0, _stopEvent2.default)(event);\n var point = {\n x: clientX,\n y: clientY\n };\n\n startPendingDrag(point);\n };\n\n var onClick = function onClick(event) {\n if (!state.preventClick) {\n return;\n }\n\n setState({\n preventClick: false\n });\n (0, _stopEvent2.default)(event);\n };\n\n var sensor = {\n onMouseDown: onMouseDown,\n onClick: onClick,\n kill: kill,\n isCapturing: isCapturing,\n isDragging: isDragging\n };\n\n return sensor;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar sloppyClickThreshold = exports.sloppyClickThreshold = 5;\n\nexports.default = function (original, current) {\n return Math.abs(current.x - original.x) >= sloppyClickThreshold || Math.abs(current.y - original.y) >= sloppyClickThreshold;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _stopEvent = require('../util/stop-event');\n\nvar _stopEvent2 = _interopRequireDefault(_stopEvent);\n\nvar _createScheduler = require('../util/create-scheduler');\n\nvar _createScheduler2 = _interopRequireDefault(_createScheduler);\n\nvar _blockStandardKeyEvents = require('../util/block-standard-key-events');\n\nvar _blockStandardKeyEvents2 = _interopRequireDefault(_blockStandardKeyEvents);\n\nvar _keyCodes = require('../../key-codes');\n\nvar keyCodes = _interopRequireWildcard(_keyCodes);\n\nvar _getWindowFromRef = require('../../get-window-from-ref');\n\nvar _getWindowFromRef2 = _interopRequireDefault(_getWindowFromRef);\n\nvar _getCenterPosition = require('../../get-center-position');\n\nvar _getCenterPosition2 = _interopRequireDefault(_getCenterPosition);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar noop = function noop() {};\n\nexports.default = function (_ref) {\n var callbacks = _ref.callbacks,\n getDraggableRef = _ref.getDraggableRef,\n canStartCapturing = _ref.canStartCapturing;\n\n var state = {\n isDragging: false\n };\n var setState = function setState(newState) {\n state = newState;\n };\n var startDragging = function startDragging() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n setState({\n isDragging: true\n });\n bindWindowEvents();\n fn();\n };\n var stopDragging = function stopDragging() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n unbindWindowEvents();\n setState({\n isDragging: false\n });\n fn();\n };\n var kill = function kill() {\n return stopDragging();\n };\n var cancel = function cancel() {\n stopDragging(callbacks.onCancel);\n };\n var isDragging = function isDragging() {\n return state.isDragging;\n };\n var schedule = (0, _createScheduler2.default)(callbacks, isDragging);\n\n var onKeyDown = function onKeyDown(event, props) {\n var direction = props.direction;\n\n if (!isDragging()) {\n if (!canStartCapturing(event)) {\n return;\n }\n\n if (event.keyCode !== keyCodes.space) {\n return;\n }\n\n (0, _stopEvent2.default)(event);\n\n var ref = getDraggableRef();\n\n if (!ref) {\n console.error('cannot start a keyboard drag without a draggable ref');\n return;\n }\n\n var center = (0, _getCenterPosition2.default)(ref);\n\n startDragging(function () {\n return callbacks.onLift({ client: center, isScrollAllowed: false });\n });\n return;\n }\n\n if (event.keyCode === keyCodes.escape) {\n (0, _stopEvent2.default)(event);\n cancel();\n return;\n }\n\n if (event.keyCode === keyCodes.space) {\n (0, _stopEvent2.default)(event);\n stopDragging(callbacks.onDrop);\n return;\n }\n\n if (!direction) {\n console.error('Cannot handle keyboard movement event if direction is not provided');\n (0, _stopEvent2.default)(event);\n cancel();\n return;\n }\n\n var executeBasedOnDirection = function executeBasedOnDirection(fns) {\n if (direction === 'vertical') {\n fns.vertical();\n return;\n }\n fns.horizontal();\n };\n\n if (event.keyCode === keyCodes.arrowDown) {\n (0, _stopEvent2.default)(event);\n executeBasedOnDirection({\n vertical: schedule.moveForward,\n horizontal: schedule.crossAxisMoveForward\n });\n return;\n }\n\n if (event.keyCode === keyCodes.arrowUp) {\n (0, _stopEvent2.default)(event);\n executeBasedOnDirection({\n vertical: schedule.moveBackward,\n horizontal: schedule.crossAxisMoveBackward\n });\n return;\n }\n\n if (event.keyCode === keyCodes.arrowRight) {\n (0, _stopEvent2.default)(event);\n executeBasedOnDirection({\n vertical: schedule.crossAxisMoveForward,\n horizontal: schedule.moveForward\n });\n return;\n }\n\n if (event.keyCode === keyCodes.arrowLeft) {\n (0, _stopEvent2.default)(event);\n executeBasedOnDirection({\n vertical: schedule.crossAxisMoveBackward,\n horizontal: schedule.moveBackward\n });\n }\n\n (0, _blockStandardKeyEvents2.default)(event);\n };\n\n var windowBindings = {\n mousedown: cancel,\n resize: cancel,\n\n scroll: cancel\n };\n\n var eventKeys = (0, _keys2.default)(windowBindings);\n\n var bindWindowEvents = function bindWindowEvents() {\n var win = (0, _getWindowFromRef2.default)(getDraggableRef());\n\n eventKeys.forEach(function (eventKey) {\n win.addEventListener(eventKey, windowBindings[eventKey]);\n });\n };\n\n var unbindWindowEvents = function unbindWindowEvents() {\n var win = (0, _getWindowFromRef2.default)(getDraggableRef());\n\n eventKeys.forEach(function (eventKey) {\n win.removeEventListener(eventKey, windowBindings[eventKey]);\n });\n };\n\n var sensor = {\n onKeyDown: onKeyDown,\n kill: kill,\n isDragging: isDragging,\n\n isCapturing: isDragging\n };\n\n return sensor;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.forcePressThreshold = exports.timeForLongPress = undefined;\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _stopEvent = require('../util/stop-event');\n\nvar _stopEvent2 = _interopRequireDefault(_stopEvent);\n\nvar _createScheduler = require('../util/create-scheduler');\n\nvar _createScheduler2 = _interopRequireDefault(_createScheduler);\n\nvar _getWindowFromRef = require('../../get-window-from-ref');\n\nvar _getWindowFromRef2 = _interopRequireDefault(_getWindowFromRef);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeForLongPress = exports.timeForLongPress = 150;\nvar forcePressThreshold = exports.forcePressThreshold = 0.15;\n\nvar noop = function noop() {};\n\nvar initial = {\n isDragging: false,\n pending: null,\n hasMoved: false,\n preventClick: false,\n longPressTimerId: null\n};\n\nexports.default = function (_ref) {\n var callbacks = _ref.callbacks,\n getDraggableRef = _ref.getDraggableRef,\n canStartCapturing = _ref.canStartCapturing;\n\n var state = initial;\n\n var setState = function setState(partial) {\n state = (0, _extends3.default)({}, state, partial);\n };\n var isDragging = function isDragging() {\n return state.isDragging;\n };\n var isCapturing = function isCapturing() {\n return Boolean(state.pending || state.isDragging || state.longPressTimerId);\n };\n var schedule = (0, _createScheduler2.default)(callbacks, isDragging);\n\n var startDragging = function startDragging() {\n var pending = state.pending;\n\n if (!pending) {\n console.error('cannot start a touch drag without a pending position');\n kill();\n return;\n }\n\n setState({\n isDragging: true,\n\n hasMoved: false,\n\n pending: null,\n longPressTimerId: null\n });\n\n callbacks.onLift({\n client: pending,\n\n isScrollAllowed: false\n });\n };\n var stopDragging = function stopDragging() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n unbindWindowEvents();\n setState((0, _extends3.default)({}, initial, {\n preventClick: true\n }));\n fn();\n };\n\n var startPendingDrag = function startPendingDrag(event) {\n var touch = event.touches[0];\n var clientX = touch.clientX,\n clientY = touch.clientY;\n\n var point = {\n x: clientX,\n y: clientY\n };\n\n var longPressTimerId = setTimeout(startDragging, timeForLongPress);\n\n setState({\n longPressTimerId: longPressTimerId,\n pending: point,\n isDragging: false,\n hasMoved: false\n });\n bindWindowEvents();\n };\n\n var stopPendingDrag = function stopPendingDrag() {\n clearTimeout(state.longPressTimerId);\n unbindWindowEvents();\n\n setState(initial);\n };\n\n var kill = function kill() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n if (state.pending) {\n stopPendingDrag();\n return;\n }\n stopDragging(fn);\n };\n\n var cancel = function cancel() {\n kill(callbacks.onCancel);\n };\n\n var windowBindings = {\n touchmove: function touchmove(event) {\n if (state.pending) {\n stopPendingDrag();\n return;\n }\n\n if (!state.hasMoved) {\n setState({\n hasMoved: true\n });\n }\n\n (0, _stopEvent2.default)(event);\n\n var _event$touches$ = event.touches[0],\n clientX = _event$touches$.clientX,\n clientY = _event$touches$.clientY;\n\n\n var point = {\n x: clientX,\n y: clientY\n };\n\n schedule.move(point);\n },\n touchend: function touchend(event) {\n if (state.pending) {\n stopPendingDrag();\n\n return;\n }\n\n stopDragging(callbacks.onDrop);\n (0, _stopEvent2.default)(event);\n },\n touchcancel: cancel,\n touchstart: function touchstart() {\n if (isDragging()) {\n console.error('touch start fired while already dragging');\n cancel();\n }\n },\n\n orientationchange: cancel,\n\n resize: cancel,\n\n scroll: cancel,\n\n contextmenu: _stopEvent2.default,\n\n keydown: cancel,\n\n touchforcechange: function touchforcechange(event) {\n if (state.hasMoved) {\n return;\n }\n\n var touch = event.touches[0];\n\n if (touch.force >= forcePressThreshold) {\n cancel();\n }\n }\n };\n\n var eventKeys = (0, _keys2.default)(windowBindings);\n\n var bindWindowEvents = function bindWindowEvents() {\n var win = (0, _getWindowFromRef2.default)(getDraggableRef());\n\n eventKeys.forEach(function (eventKey) {\n var fn = windowBindings[eventKey];\n\n if (eventKey === 'touchmove') {\n win.addEventListener(eventKey, fn, { passive: false });\n return;\n }\n\n win.addEventListener(eventKey, fn);\n });\n };\n\n var unbindWindowEvents = function unbindWindowEvents() {\n var win = (0, _getWindowFromRef2.default)(getDraggableRef());\n\n eventKeys.forEach(function (eventKey) {\n return win.removeEventListener(eventKey, windowBindings[eventKey]);\n });\n };\n\n var onTouchStart = function onTouchStart(event) {\n if (!canStartCapturing(event)) {\n return;\n }\n\n if (isCapturing()) {\n console.error('should not be able to perform a touch start while a drag or pending drag is occurring');\n cancel();\n return;\n }\n\n event.stopPropagation();\n\n startPendingDrag(event);\n };\n\n var onTouchMove = function onTouchMove() {\n if (state.pending) {\n stopPendingDrag();\n }\n };\n\n var onClick = function onClick(event) {\n if (!state.preventClick) {\n return;\n }\n\n (0, _stopEvent2.default)(event);\n setState(initial);\n };\n\n var sensor = {\n onTouchStart: onTouchStart,\n onTouchMove: onTouchMove,\n onClick: onClick,\n kill: kill,\n isCapturing: isCapturing,\n isDragging: isDragging\n };\n\n return sensor;\n};","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxContainer\n * \n */\n'use strict';\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FluxStoreGroup = require('./FluxStoreGroup');\n\nvar invariant = require('fbjs/lib/invariant');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\n\nvar DEFAULT_OPTIONS = {\n pure: true,\n withProps: false\n};\n\n/**\n * A FluxContainer is used to subscribe a react component to multiple stores.\n * The stores that are used must be returned from a static `getStores()` method.\n *\n * The component receives information from the stores via state. The state\n * is generated using a static `calculateState()` method that each container\n * must implement. A simple container may look like:\n */\nfunction create(Base, options) {\n enforceInterface(Base);\n\n // Construct the options using default, override with user values as necessary\n var realOptions = _extends({}, DEFAULT_OPTIONS, options || {});\n\n var FluxContainerClass = (function (_Base) {\n _inherits(FluxContainerClass, _Base);\n\n function FluxContainerClass(props) {\n _classCallCheck(this, FluxContainerClass);\n\n _Base.call(this, props);\n this.state = realOptions.withProps ? Base.calculateState(null, props) : Base.calculateState(null, undefined);\n }\n\n // Make sure we override shouldComponentUpdate only if the pure option is\n // specified. We can't override this above because we don't want to override\n // the default behavior on accident. Super works weird with react ES6 classes\n // right now\n\n FluxContainerClass.prototype.componentDidMount = function componentDidMount() {\n var _this = this;\n\n if (_Base.prototype.componentDidMount) {\n _Base.prototype.componentDidMount.call(this);\n }\n\n var stores = Base.getStores();\n\n // This tracks when any store has changed and we may need to update.\n var changed = false;\n var setChanged = function () {\n changed = true;\n };\n\n // This adds subscriptions to stores. When a store changes all we do is\n // set changed to true.\n this._fluxContainerSubscriptions = stores.map(function (store) {\n return store.addListener(setChanged);\n });\n\n // This callback is called after the dispatch of the relevant stores. If\n // any have reported a change we update the state, then reset changed.\n var callback = function () {\n if (changed) {\n _this.setState(function (prevState) {\n return realOptions.withProps ? Base.calculateState(prevState, _this.props) : Base.calculateState(prevState, undefined);\n });\n }\n changed = false;\n };\n this._fluxContainerStoreGroup = new FluxStoreGroup(stores, callback);\n };\n\n FluxContainerClass.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps, nextContext) {\n if (_Base.prototype.componentWillReceiveProps) {\n _Base.prototype.componentWillReceiveProps.call(this, nextProps, nextContext);\n }\n\n // Don't do anything else if the container is not configured to use props\n if (!realOptions.withProps) {\n return;\n }\n\n // If it's pure we can potentially optimize out the calculate state\n if (realOptions.pure && shallowEqual(this.props, nextProps)) {\n return;\n }\n\n // Finally update the state using the new props\n this.setState(function (prevState) {\n return Base.calculateState(prevState, nextProps);\n });\n };\n\n FluxContainerClass.prototype.componentWillUnmount = function componentWillUnmount() {\n if (_Base.prototype.componentWillUnmount) {\n _Base.prototype.componentWillUnmount.call(this);\n }\n\n this._fluxContainerStoreGroup.release();\n for (var _iterator = this._fluxContainerSubscriptions, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var subscription = _ref;\n\n subscription.remove();\n }\n this._fluxContainerSubscriptions = [];\n };\n\n return FluxContainerClass;\n })(Base);\n\n var container = realOptions.pure ? createPureContainer(FluxContainerClass) : FluxContainerClass;\n\n // Update the name of the container before returning\n var componentName = Base.displayName || Base.name;\n container.displayName = 'FluxContainer(' + componentName + ')';\n\n return container;\n}\n\n// TODO: typecheck this better\nfunction createPureContainer(FluxContainerBase) {\n var PureFluxContainerClass = (function (_FluxContainerBase) {\n _inherits(PureFluxContainerClass, _FluxContainerBase);\n\n function PureFluxContainerClass() {\n _classCallCheck(this, PureFluxContainerClass);\n\n _FluxContainerBase.apply(this, arguments);\n }\n\n PureFluxContainerClass.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {\n return !shallowEqual(this.props, nextProps) || !shallowEqual(this.state, nextState);\n };\n\n return PureFluxContainerClass;\n })(FluxContainerBase);\n\n return PureFluxContainerClass;\n}\n\nfunction enforceInterface(o) {\n !o.getStores ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Components that use FluxContainer must implement `static getStores()`') : invariant(false) : undefined;\n !o.calculateState ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Components that use FluxContainer must implement `static calculateState()`') : invariant(false) : undefined;\n}\n\nmodule.exports = { create: create };","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule shallowEqual\n * @typechecks\n * \n */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n var bHasOwnProperty = hasOwnProperty.bind(objB);\n for (var i = 0; i < keysA.length; i++) {\n if (!bHasOwnProperty(keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxMapStore\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FluxReduceStore = require('./FluxReduceStore');\nvar Immutable = require('immutable');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * This is a simple store. It allows caching key value pairs. An implementation\n * of a store using this might look like:\n *\n * class FooStore extends FluxMapStore {\n * reduce(state, action) {\n * switch (action.type) {\n * case 'foo':\n * return state.set(action.id, action.foo);\n * case 'bar':\n * return state.delete(action.id);\n * default:\n * return state;\n * }\n * }\n * }\n *\n */\n\nvar FluxMapStore = (function (_FluxReduceStore) {\n _inherits(FluxMapStore, _FluxReduceStore);\n\n function FluxMapStore() {\n _classCallCheck(this, FluxMapStore);\n\n _FluxReduceStore.apply(this, arguments);\n }\n\n FluxMapStore.prototype.getInitialState = function getInitialState() {\n return Immutable.Map();\n };\n\n /**\n * Access the value at the given key. throws an error if the key does not\n * exist in the cache.\n */\n\n FluxMapStore.prototype.at = function at(key) {\n !this.has(key) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected store to have key %s', key) : invariant(false) : undefined;\n return this.get(key);\n };\n\n /**\n * Check if the cache has a particular key\n */\n\n FluxMapStore.prototype.has = function has(key) {\n return this.getState().has(key);\n };\n\n /**\n * Get the value of a particular key. Returns undefined if the key does not\n * exist in the cache.\n */\n\n FluxMapStore.prototype.get = function get(key) {\n return this.getState().get(key);\n };\n\n /**\n * Gets an array of keys and puts the values in a map if they exist, it allows\n * providing a previous result to update instead of generating a new map.\n *\n * Providing a previous result allows the possibility of keeping the same\n * reference if the keys did not change.\n */\n\n FluxMapStore.prototype.getAll = function getAll(keys, prev) {\n var _this = this;\n\n var newKeys = Immutable.Set(keys);\n var start = prev || Immutable.Map();\n return start.withMutations(function (map) {\n // remove any old keys that are not in new keys or are no longer in\n // the cache\n for (var _iterator = start, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var entry = _ref;\n var oldKey = entry[0];\n\n if (!newKeys.has(oldKey) || !_this.has(oldKey)) {\n map['delete'](oldKey);\n }\n }\n\n // then add all of the new keys that exist in the cache\n for (var _iterator2 = newKeys, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n var key = _ref2;\n\n if (_this.has(key)) {\n map.set(key, _this.at(key));\n }\n }\n });\n };\n\n return FluxMapStore;\n})(FluxReduceStore);\n\nmodule.exports = FluxMapStore;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nvar fbemitter = {\n EventEmitter: require('./lib/BaseEventEmitter'),\n EmitterSubscription : require('./lib/EmitterSubscription')\n};\n\nmodule.exports = fbemitter;\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule BaseEventEmitter\n * @typechecks\n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar EmitterSubscription = require('./EmitterSubscription');\nvar EventSubscriptionVendor = require('./EventSubscriptionVendor');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * @class BaseEventEmitter\n * @description\n * An EventEmitter is responsible for managing a set of listeners and publishing\n * events to them when it is told that such events happened. In addition to the\n * data for the given event it also sends a event control object which allows\n * the listeners/handlers to prevent the default behavior of the given event.\n *\n * The emitter is designed to be generic enough to support all the different\n * contexts in which one might want to emit events. It is a simple multicast\n * mechanism on top of which extra functionality can be composed. For example, a\n * more advanced emitter may use an EventHolder and EventFactory.\n */\n\nvar BaseEventEmitter = (function () {\n /**\n * @constructor\n */\n\n function BaseEventEmitter() {\n _classCallCheck(this, BaseEventEmitter);\n\n this._subscriber = new EventSubscriptionVendor();\n this._currentSubscription = null;\n }\n\n /**\n * Adds a listener to be invoked when events of the specified type are\n * emitted. An optional calling context may be provided. The data arguments\n * emitted will be passed to the listener function.\n *\n * TODO: Annotate the listener arg's type. This is tricky because listeners\n * can be invoked with varargs.\n *\n * @param {string} eventType - Name of the event to listen to\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n\n BaseEventEmitter.prototype.addListener = function addListener(eventType, listener, context) {\n return this._subscriber.addSubscription(eventType, new EmitterSubscription(this._subscriber, listener, context));\n };\n\n /**\n * Similar to addListener, except that the listener is removed after it is\n * invoked once.\n *\n * @param {string} eventType - Name of the event to listen to\n * @param {function} listener - Function to invoke only once when the\n * specified event is emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n\n BaseEventEmitter.prototype.once = function once(eventType, listener, context) {\n var emitter = this;\n return this.addListener(eventType, function () {\n emitter.removeCurrentListener();\n listener.apply(context, arguments);\n });\n };\n\n /**\n * Removes all of the registered listeners, including those registered as\n * listener maps.\n *\n * @param {?string} eventType - Optional name of the event whose registered\n * listeners to remove\n */\n\n BaseEventEmitter.prototype.removeAllListeners = function removeAllListeners(eventType) {\n this._subscriber.removeAllSubscriptions(eventType);\n };\n\n /**\n * Provides an API that can be called during an eventing cycle to remove the\n * last listener that was invoked. This allows a developer to provide an event\n * object that can remove the listener (or listener map) during the\n * invocation.\n *\n * If it is called when not inside of an emitting cycle it will throw.\n *\n * @throws {Error} When called not during an eventing cycle\n *\n * @example\n * var subscription = emitter.addListenerMap({\n * someEvent: function(data, event) {\n * console.log(data);\n * emitter.removeCurrentListener();\n * }\n * });\n *\n * emitter.emit('someEvent', 'abc'); // logs 'abc'\n * emitter.emit('someEvent', 'def'); // does not log anything\n */\n\n BaseEventEmitter.prototype.removeCurrentListener = function removeCurrentListener() {\n !!!this._currentSubscription ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Not in an emitting cycle; there is no current subscription') : invariant(false) : undefined;\n this._subscriber.removeSubscription(this._currentSubscription);\n };\n\n /**\n * Returns an array of listeners that are currently registered for the given\n * event.\n *\n * @param {string} eventType - Name of the event to query\n * @return {array}\n */\n\n BaseEventEmitter.prototype.listeners = function listeners(eventType) /* TODO: Array<EventSubscription> */{\n var subscriptions = this._subscriber.getSubscriptionsForType(eventType);\n return subscriptions ? subscriptions.filter(emptyFunction.thatReturnsTrue).map(function (subscription) {\n return subscription.listener;\n }) : [];\n };\n\n /**\n * Emits an event of the given type with the given data. All handlers of that\n * particular type will be notified.\n *\n * @param {string} eventType - Name of the event to emit\n * @param {*} Arbitrary arguments to be passed to each registered listener\n *\n * @example\n * emitter.addListener('someEvent', function(message) {\n * console.log(message);\n * });\n *\n * emitter.emit('someEvent', 'abc'); // logs 'abc'\n */\n\n BaseEventEmitter.prototype.emit = function emit(eventType) {\n var subscriptions = this._subscriber.getSubscriptionsForType(eventType);\n if (subscriptions) {\n var keys = Object.keys(subscriptions);\n for (var ii = 0; ii < keys.length; ii++) {\n var key = keys[ii];\n var subscription = subscriptions[key];\n // The subscription may have been removed during this event loop.\n if (subscription) {\n this._currentSubscription = subscription;\n this.__emitToSubscription.apply(this, [subscription].concat(Array.prototype.slice.call(arguments)));\n }\n }\n this._currentSubscription = null;\n }\n };\n\n /**\n * Provides a hook to override how the emitter emits an event to a specific\n * subscription. This allows you to set up logging and error boundaries\n * specific to your environment.\n *\n * @param {EmitterSubscription} subscription\n * @param {string} eventType\n * @param {*} Arbitrary arguments to be passed to each registered listener\n */\n\n BaseEventEmitter.prototype.__emitToSubscription = function __emitToSubscription(subscription, eventType) {\n var args = Array.prototype.slice.call(arguments, 2);\n subscription.listener.apply(subscription.context, args);\n };\n\n return BaseEventEmitter;\n})();\n\nmodule.exports = BaseEventEmitter;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventSubscription\n * @typechecks\n */\n\n'use strict';\n\n/**\n * EventSubscription represents a subscription to a particular event. It can\n * remove its own subscription.\n */\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar EventSubscription = (function () {\n\n /**\n * @param {EventSubscriptionVendor} subscriber the subscriber that controls\n * this subscription.\n */\n\n function EventSubscription(subscriber) {\n _classCallCheck(this, EventSubscription);\n\n this.subscriber = subscriber;\n }\n\n /**\n * Removes this subscription from the subscriber that controls it.\n */\n\n EventSubscription.prototype.remove = function remove() {\n if (this.subscriber) {\n this.subscriber.removeSubscription(this);\n this.subscriber = null;\n }\n };\n\n return EventSubscription;\n})();\n\nmodule.exports = EventSubscription;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n * \n * @providesModule EventSubscriptionVendor\n * @typechecks\n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * EventSubscriptionVendor stores a set of EventSubscriptions that are\n * subscribed to a particular event type.\n */\n\nvar EventSubscriptionVendor = (function () {\n function EventSubscriptionVendor() {\n _classCallCheck(this, EventSubscriptionVendor);\n\n this._subscriptionsForType = {};\n this._currentSubscription = null;\n }\n\n /**\n * Adds a subscription keyed by an event type.\n *\n * @param {string} eventType\n * @param {EventSubscription} subscription\n */\n\n EventSubscriptionVendor.prototype.addSubscription = function addSubscription(eventType, subscription) {\n !(subscription.subscriber === this) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'The subscriber of the subscription is incorrectly set.') : invariant(false) : undefined;\n if (!this._subscriptionsForType[eventType]) {\n this._subscriptionsForType[eventType] = [];\n }\n var key = this._subscriptionsForType[eventType].length;\n this._subscriptionsForType[eventType].push(subscription);\n subscription.eventType = eventType;\n subscription.key = key;\n return subscription;\n };\n\n /**\n * Removes a bulk set of the subscriptions.\n *\n * @param {?string} eventType - Optional name of the event type whose\n * registered supscriptions to remove, if null remove all subscriptions.\n */\n\n EventSubscriptionVendor.prototype.removeAllSubscriptions = function removeAllSubscriptions(eventType) {\n if (eventType === undefined) {\n this._subscriptionsForType = {};\n } else {\n delete this._subscriptionsForType[eventType];\n }\n };\n\n /**\n * Removes a specific subscription. Instead of calling this function, call\n * `subscription.remove()` directly.\n *\n * @param {object} subscription\n */\n\n EventSubscriptionVendor.prototype.removeSubscription = function removeSubscription(subscription) {\n var eventType = subscription.eventType;\n var key = subscription.key;\n\n var subscriptionsForType = this._subscriptionsForType[eventType];\n if (subscriptionsForType) {\n delete subscriptionsForType[key];\n }\n };\n\n /**\n * Returns the array of subscriptions that are currently registered for the\n * given event type.\n *\n * Note: This array can be potentially sparse as subscriptions are deleted\n * from it when they are removed.\n *\n * TODO: This returns a nullable array. wat?\n *\n * @param {string} eventType\n * @return {?array}\n */\n\n EventSubscriptionVendor.prototype.getSubscriptionsForType = function getSubscriptionsForType(eventType) {\n return this._subscriptionsForType[eventType];\n };\n\n return EventSubscriptionVendor;\n})();\n\nmodule.exports = EventSubscriptionVendor;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule abstractMethod\n * \n */\n\n'use strict';\n\nvar invariant = require('fbjs/lib/invariant');\n\nfunction abstractMethod(className, methodName) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Subclasses of %s must override %s() with their own implementation.', className, methodName) : invariant(false) : undefined;\n}\n\nmodule.exports = abstractMethod;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxMixinLegacy\n * \n */\n\n'use strict';\n\nvar FluxStoreGroup = require('./FluxStoreGroup');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * `FluxContainer` should be preferred over this mixin, but it requires using\n * react with classes. So this mixin is provided where it is not yet possible\n * to convert a container to be a class.\n *\n * This mixin should be used for React components that have state based purely\n * on stores. `this.props` will not be available inside of `calculateState()`.\n *\n * This mixin will only `setState` not replace it, so you should always return\n * every key in your state unless you know what you are doing. Consider this:\n *\n * var Foo = React.createClass({\n * mixins: [\n * FluxMixinLegacy([FooStore])\n * ],\n *\n * statics: {\n * calculateState(prevState) {\n * if (!prevState) {\n * return {\n * foo: FooStore.getFoo(),\n * };\n * }\n *\n * return {\n * bar: FooStore.getBar(),\n * };\n * }\n * },\n * });\n *\n * On the second calculateState when prevState is not null, the state will be\n * updated to contain the previous foo AND the bar that was just returned. Only\n * returning bar will not delete foo.\n *\n */\nfunction FluxMixinLegacy(stores) {\n return {\n getInitialState: function () {\n enforceInterface(this);\n return this.constructor.calculateState(null);\n },\n\n componentDidMount: function () {\n var _this = this;\n\n // This tracks when any store has changed and we may need to update.\n var changed = false;\n var setChanged = function () {\n changed = true;\n };\n\n // This adds subscriptions to stores. When a store changes all we do is\n // set changed to true.\n this._fluxMixinSubscriptions = stores.map(function (store) {\n return store.addListener(setChanged);\n });\n\n // This callback is called after the dispatch of the relevant stores. If\n // any have reported a change we update the state, then reset changed.\n var callback = function () {\n if (changed) {\n _this.setState(function (prevState) {\n return _this.constructor.calculateState(_this.state);\n });\n }\n changed = false;\n };\n this._fluxMixinStoreGroup = new FluxStoreGroup(stores, callback);\n },\n\n componentWillUnmount: function () {\n this._fluxMixinStoreGroup.release();\n for (var _iterator = this._fluxMixinSubscriptions, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var subscription = _ref;\n\n subscription.remove();\n }\n this._fluxMixinSubscriptions = [];\n }\n };\n}\n\nfunction enforceInterface(o) {\n !o.constructor.calculateState ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Components that use FluxMixinLegacy must implement ' + '`calculateState()` on the statics object') : invariant(false) : undefined;\n}\n\nmodule.exports = FluxMixinLegacy;","require('../../modules/es6.number.max-safe-integer');\nmodule.exports = 0x1fffffffffffff;\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _languageHandler = require('../../languageHandler');\n\nvar React = require('react');\n\nvar dis = require('../../dispatcher');\nvar AccessibleButton = require('../../components/views/elements/AccessibleButton');\n\nmodule.exports = React.createClass({\n displayName: 'LoginBox',\n\n propTypes: {},\n\n onLoginClick: function onLoginClick() {\n dis.dispatch({ action: 'start_login' });\n },\n\n onRegisterClick: function onRegisterClick() {\n dis.dispatch({ action: 'start_registration' });\n },\n\n render: function render() {\n var loginButton = React.createElement(\n 'div',\n { className: 'mx_LoginBox_loginButton_wrapper' },\n React.createElement(\n AccessibleButton,\n { className: 'mx_LoginBox_loginButton', element: 'button', onClick: this.onLoginClick },\n (0, _languageHandler._t)(\"Login\")\n ),\n React.createElement(\n AccessibleButton,\n { className: 'mx_LoginBox_registerButton', element: 'button', onClick: this.onRegisterClick },\n (0, _languageHandler._t)(\"Register\")\n )\n );\n\n return React.createElement(\n 'div',\n { className: 'mx_LoginBox' },\n loginButton\n );\n }\n});\n//# sourceMappingURL=LoginBox.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _create = require('babel-runtime/core-js/object/create');\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _Analytics = require('../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _DecryptionFailureTracker = require('../../DecryptionFailureTracker');\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _PlatformPeg = require('../../PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _SdkConfig = require('../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _RoomListSorter = require('../../RoomListSorter');\n\nvar RoomListSorter = _interopRequireWildcard(_RoomListSorter);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Modal = require('../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _Tinter = require('../../Tinter');\n\nvar _Tinter2 = _interopRequireDefault(_Tinter);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _RoomInvite = require('../../RoomInvite');\n\nvar _Rooms = require('../../Rooms');\n\nvar Rooms = _interopRequireWildcard(_Rooms);\n\nvar _linkifyMatrix = require('../../linkify-matrix');\n\nvar _linkifyMatrix2 = _interopRequireDefault(_linkifyMatrix);\n\nvar _Lifecycle = require('../../Lifecycle');\n\nvar Lifecycle = _interopRequireWildcard(_Lifecycle);\n\nvar _PageTypes = require('../../PageTypes');\n\nvar _PageTypes2 = _interopRequireDefault(_PageTypes);\n\nvar _createRoom2 = require('../../createRoom');\n\nvar _createRoom3 = _interopRequireDefault(_createRoom2);\n\nvar _KeyRequestHandler = require('../../KeyRequestHandler');\n\nvar _KeyRequestHandler2 = _interopRequireDefault(_KeyRequestHandler);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _SettingsStore = require('../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _Registration = require('../../Registration.js');\n\nvar _ErrorUtils = require('../../utils/ErrorUtils');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// LifecycleStore is not used but does listen to and dispatch actions\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nrequire('../../stores/LifecycleStore');\n\n\nvar AutoDiscovery = _matrixJsSdk2.default.AutoDiscovery;\n\n// Disable warnings for now: we use deprecated bluebird functions\n// and need to migrate, but they spam the console with warnings.\n_bluebird2.default.config({ warnings: false });\n\n/** constants for MatrixChat.state.view */\nvar VIEWS = {\n // a special initial state which is only used at startup, while we are\n // trying to re-animate a matrix client or register as a guest.\n LOADING: 0,\n\n // we are showing the login view\n LOGIN: 1,\n\n // we are showing the registration view\n REGISTER: 2,\n\n // completeing the registration flow\n POST_REGISTRATION: 3,\n\n // showing the 'forgot password' view\n FORGOT_PASSWORD: 4,\n\n // we have valid matrix credentials (either via an explicit login, via the\n // initial re-animation/guest registration, or via a registration), and are\n // now setting up a matrixclient to talk to it. This isn't an instant\n // process because (a) we need to clear out indexeddb, and (b) we need to\n // talk to the team server; while it is going on we show a big spinner.\n LOGGING_IN: 5,\n\n // we are logged in with an active matrix client.\n LOGGED_IN: 6\n};\n\n// Actions that are redirected through the onboarding process prior to being\n// re-dispatched. NOTE: some actions are non-trivial and would require\n// re-factoring to be included in this list in future.\nvar ONBOARDING_FLOW_STARTERS = ['view_user_settings', 'view_create_chat', 'view_create_room', 'view_create_group'];\n\nexports.default = _react2.default.createClass({\n // we export this so that the integration tests can use it :-S\n statics: {\n VIEWS: VIEWS\n },\n\n displayName: 'MatrixChat',\n\n propTypes: {\n config: _propTypes2.default.object,\n ConferenceHandler: _propTypes2.default.any,\n onNewScreen: _propTypes2.default.func,\n registrationUrl: _propTypes2.default.string,\n enableGuest: _propTypes2.default.bool,\n\n // the queryParams extracted from the [real] query-string of the URI\n realQueryParams: _propTypes2.default.object,\n\n // the initial queryParams extracted from the hash-fragment of the URI\n startingFragmentQueryParams: _propTypes2.default.object,\n\n // called when we have completed a token login\n onTokenLoginCompleted: _propTypes2.default.func,\n\n // Represents the screen to display as a result of parsing the initial\n // window.location\n initialScreenAfterLogin: _propTypes2.default.shape({\n screen: _propTypes2.default.string.isRequired,\n params: _propTypes2.default.object\n }),\n\n // displayname, if any, to set on the device when logging\n // in/registering.\n defaultDeviceDisplayName: _propTypes2.default.string,\n\n // A function that makes a registration URL\n makeRegistrationUrl: _propTypes2.default.func.isRequired\n },\n\n childContextTypes: {\n appConfig: _propTypes2.default.object\n },\n\n AuxPanel: {\n RoomSettings: \"room_settings\"\n },\n\n getChildContext: function getChildContext() {\n return {\n appConfig: this.props.config\n };\n },\n\n getInitialState: function getInitialState() {\n var s = {\n // the master view we are showing.\n view: VIEWS.LOADING,\n\n // What the LoggedInView would be showing if visible\n page_type: null,\n\n // The ID of the room we're viewing. This is either populated directly\n // in the case where we view a room by ID or by RoomView when it resolves\n // what ID an alias points at.\n currentRoomId: null,\n\n // If we're trying to just view a user ID (i.e. /user URL), this is it\n viewUserId: null,\n\n collapseLhs: false,\n collapseRhs: false,\n leftDisabled: false,\n middleDisabled: false,\n rightDisabled: false,\n\n version: null,\n newVersion: null,\n hasNewVersion: false,\n newVersionReleaseNotes: null,\n checkingForUpdate: null,\n\n showCookieBar: false,\n\n // Parameters used in the registration dance with the IS\n register_client_secret: null,\n register_session_id: null,\n register_hs_url: null,\n register_is_url: null,\n register_id_sid: null,\n\n // Parameters used for setting up the login/registration views\n defaultServerName: this.props.config.default_server_name,\n defaultHsUrl: this.props.config.default_hs_url,\n defaultIsUrl: this.props.config.default_is_url,\n defaultServerDiscoveryError: null,\n\n // When showing Modal dialogs we need to set aria-hidden on the root app element\n // and disable it when there are no dialogs\n hideToSRUsers: false,\n\n syncError: null // If the current syncing status is ERROR, the error object, otherwise null.\n };\n return s;\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n realQueryParams: {},\n startingFragmentQueryParams: {},\n config: {},\n onTokenLoginCompleted: function onTokenLoginCompleted() {}\n };\n },\n\n getDefaultServerName: function getDefaultServerName() {\n return this.state.defaultServerName;\n },\n\n getCurrentHsUrl: function getCurrentHsUrl() {\n if (this.state.register_hs_url) {\n return this.state.register_hs_url;\n } else if (_MatrixClientPeg2.default.get()) {\n return _MatrixClientPeg2.default.get().getHomeserverUrl();\n } else {\n return this.getDefaultHsUrl();\n }\n },\n\n getDefaultHsUrl: function getDefaultHsUrl(defaultToMatrixDotOrg) {\n defaultToMatrixDotOrg = typeof defaultToMatrixDotOrg !== 'boolean' ? true : defaultToMatrixDotOrg;\n if (!this.state.defaultHsUrl && defaultToMatrixDotOrg) return \"https://matrix.org\";\n return this.state.defaultHsUrl;\n },\n\n\n getFallbackHsUrl: function getFallbackHsUrl() {\n return this.props.config.fallback_hs_url;\n },\n\n getCurrentIsUrl: function getCurrentIsUrl() {\n if (this.state.register_is_url) {\n return this.state.register_is_url;\n } else if (_MatrixClientPeg2.default.get()) {\n return _MatrixClientPeg2.default.get().getIdentityServerUrl();\n } else {\n return this.getDefaultIsUrl();\n }\n },\n\n getDefaultIsUrl: function getDefaultIsUrl() {\n return this.state.defaultIsUrl || \"https://vector.im\";\n },\n\n\n componentWillMount: function componentWillMount() {\n _SdkConfig2.default.put(this.props.config);\n\n // Used by _viewRoom before getting state from sync\n this.firstSyncComplete = false;\n this.firstSyncPromise = _bluebird2.default.defer();\n\n if (this.props.config.sync_timeline_limit) {\n _MatrixClientPeg2.default.opts.initialSyncLimit = this.props.config.sync_timeline_limit;\n }\n\n // To enable things like riot.im/geektime in a nicer way than rewriting the URL\n // and appending a team token query parameter, use the first path segment to\n // indicate a team, with \"public\" team tokens stored in the config teamTokenMap.\n var routedTeamToken = null;\n if (this.props.config.teamTokenMap) {\n var teamName = window.location.pathname.split('/')[1];\n if (teamName && this.props.config.teamTokenMap.hasOwnProperty(teamName)) {\n routedTeamToken = this.props.config.teamTokenMap[teamName];\n }\n }\n\n // Persist the team token across refreshes using sessionStorage. A new window or\n // tab will not persist sessionStorage, but refreshes will.\n if (this.props.startingFragmentQueryParams.team_token) {\n window.sessionStorage.setItem('mx_team_token', this.props.startingFragmentQueryParams.team_token);\n }\n\n // Use the locally-stored team token first, then as a fall-back, check to see if\n // a referral link was used, which will contain a query parameter `team_token`.\n this._teamToken = routedTeamToken || window.localStorage.getItem('mx_team_token') || window.sessionStorage.getItem('mx_team_token');\n\n // Some users have ended up with \"undefined\" as their local storage team token,\n // treat that as undefined.\n if (this._teamToken === \"undefined\") {\n this._teamToken = undefined;\n }\n\n if (this._teamToken) {\n console.info('Team token set to ' + this._teamToken);\n }\n\n // Set up the default URLs (async)\n if (this.getDefaultServerName() && !this.getDefaultHsUrl(false)) {\n this.setState({ loadingDefaultHomeserver: true });\n this._tryDiscoverDefaultHomeserver(this.getDefaultServerName());\n } else if (this.getDefaultServerName() && this.getDefaultHsUrl(false)) {\n // Ideally we would somehow only communicate this to the server admins, but\n // given this is at login time we can't really do much besides hope that people\n // will check their settings.\n this.setState({\n defaultServerName: null, // To un-hide any secrets people might be keeping\n defaultServerDiscoveryError: (0, _languageHandler._t)(\"Invalid configuration: Cannot supply a default homeserver URL and a default server name\")\n });\n }\n\n // Set a default HS with query param `hs_url`\n var paramHs = this.props.startingFragmentQueryParams.hs_url;\n if (paramHs) {\n console.log('Setting register_hs_url ', paramHs);\n this.setState({\n register_hs_url: paramHs\n });\n }\n // Set a default IS with query param `is_url`\n var paramIs = this.props.startingFragmentQueryParams.is_url;\n if (paramIs) {\n console.log('Setting register_is_url ', paramIs);\n this.setState({\n register_is_url: paramIs\n });\n }\n\n // a thing to call showScreen with once login completes. this is kept\n // outside this.state because updating it should never trigger a\n // rerender.\n this._screenAfterLogin = this.props.initialScreenAfterLogin;\n\n this._windowWidth = 10000;\n this.handleResize();\n window.addEventListener('resize', this.handleResize);\n\n this._pageChanging = false;\n\n // check we have the right tint applied for this theme.\n // N.B. we don't call the whole of setTheme() here as we may be\n // racing with the theme CSS download finishing from index.js\n _Tinter2.default.tint();\n },\n\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n\n this.focusComposer = false;\n\n // this can technically be done anywhere but doing this here keeps all\n // the routing url path logic together.\n if (this.onAliasClick) {\n _linkifyMatrix2.default.onAliasClick = this.onAliasClick;\n }\n if (this.onUserClick) {\n _linkifyMatrix2.default.onUserClick = this.onUserClick;\n }\n if (this.onGroupClick) {\n _linkifyMatrix2.default.onGroupClick = this.onGroupClick;\n }\n\n var teamServerConfig = this.props.config.teamServerConfig || {};\n Lifecycle.initRtsClient(teamServerConfig.teamServerURL);\n\n // the first thing to do is to try the token params in the query-string\n Lifecycle.attemptTokenLogin(this.props.realQueryParams).then(function (loggedIn) {\n if (loggedIn) {\n _this.props.onTokenLoginCompleted();\n\n // don't do anything else until the page reloads - just stay in\n // the 'loading' state.\n return;\n }\n\n // if the user has followed a login or register link, don't reanimate\n // the old creds, but rather go straight to the relevant page\n var firstScreen = _this._screenAfterLogin ? _this._screenAfterLogin.screen : null;\n\n if (firstScreen === 'login' || firstScreen === 'register' || firstScreen === 'forgot_password') {\n _this._showScreenAfterLogin();\n return;\n }\n\n // the extra Promise.resolve() ensures that synchronous exceptions hit the same codepath as\n // asynchronous ones.\n return _bluebird2.default.resolve().then(function () {\n return Lifecycle.loadSession({\n fragmentQueryParams: _this.props.startingFragmentQueryParams,\n enableGuest: _this.props.enableGuest,\n guestHsUrl: _this.getCurrentHsUrl(),\n guestIsUrl: _this.getCurrentIsUrl(),\n defaultDeviceDisplayName: _this.props.defaultDeviceDisplayName\n });\n }).then(function (loadedSession) {\n if (!loadedSession) {\n // fall back to showing the login screen\n _dispatcher2.default.dispatch({ action: \"start_login\" });\n }\n });\n // Note we don't catch errors from this: we catch everything within\n // loadSession as there's logic there to ask the user if they want\n // to try logging out.\n });\n\n if (_SettingsStore2.default.getValue(\"showCookieBar\")) {\n this.setState({\n showCookieBar: true\n });\n }\n\n if (_SettingsStore2.default.getValue(\"analyticsOptIn\")) {\n _Analytics2.default.enable();\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n Lifecycle.stopMatrixClient();\n _dispatcher2.default.unregister(this.dispatcherRef);\n window.removeEventListener(\"focus\", this.onFocus);\n window.removeEventListener('resize', this.handleResize);\n },\n\n componentWillUpdate: function componentWillUpdate(props, state) {\n if (this.shouldTrackPageChange(this.state, state)) {\n this.startPageChangeTimer();\n }\n },\n\n componentDidUpdate: function componentDidUpdate(prevProps, prevState) {\n if (this.shouldTrackPageChange(prevState, this.state)) {\n var durationMs = this.stopPageChangeTimer();\n _Analytics2.default.trackPageChange(durationMs);\n }\n if (this.focusComposer) {\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n this.focusComposer = false;\n }\n },\n\n startPageChangeTimer: function startPageChangeTimer() {\n // Tor doesn't support performance\n if (!performance || !performance.mark) return null;\n\n // This shouldn't happen because componentWillUpdate and componentDidUpdate\n // are used.\n if (this._pageChanging) {\n console.warn('MatrixChat.startPageChangeTimer: timer already started');\n return;\n }\n this._pageChanging = true;\n performance.mark('riot_MatrixChat_page_change_start');\n },\n stopPageChangeTimer: function stopPageChangeTimer() {\n // Tor doesn't support performance\n if (!performance || !performance.mark) return null;\n\n if (!this._pageChanging) {\n console.warn('MatrixChat.stopPageChangeTimer: timer not started');\n return;\n }\n this._pageChanging = false;\n performance.mark('riot_MatrixChat_page_change_stop');\n performance.measure('riot_MatrixChat_page_change_delta', 'riot_MatrixChat_page_change_start', 'riot_MatrixChat_page_change_stop');\n performance.clearMarks('riot_MatrixChat_page_change_start');\n performance.clearMarks('riot_MatrixChat_page_change_stop');\n var measurement = performance.getEntriesByName('riot_MatrixChat_page_change_delta').pop();\n\n // In practice, sometimes the entries list is empty, so we get no measurement\n if (!measurement) return null;\n\n return measurement.duration;\n },\n shouldTrackPageChange: function shouldTrackPageChange(prevState, state) {\n return prevState.currentRoomId !== state.currentRoomId || prevState.view !== state.view || prevState.page_type !== state.page_type;\n },\n\n\n setStateForNewView: function setStateForNewView(state) {\n if (state.view === undefined) {\n throw new Error(\"setStateForNewView with no view!\");\n }\n var newState = {\n viewUserId: null\n };\n (0, _assign2.default)(newState, state);\n this.setState(newState);\n },\n\n onAction: function onAction(payload) {\n var _this2 = this;\n\n // console.log(`MatrixClientPeg.onAction: ${payload.action}`);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n\n // Start the onboarding process for certain actions\n if (_MatrixClientPeg2.default.get() && _MatrixClientPeg2.default.get().isGuest() && ONBOARDING_FLOW_STARTERS.includes(payload.action)) {\n // This will cause `payload` to be dispatched later, once a\n // sync has reached the \"prepared\" state. Setting a matrix ID\n // will cause a full login and sync and finally the deferred\n // action will be dispatched.\n _dispatcher2.default.dispatch({\n action: 'do_after_sync_prepared',\n deferred_action: payload\n });\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n return;\n }\n\n switch (payload.action) {\n case 'logout':\n Lifecycle.logout();\n break;\n case 'require_registration':\n (0, _Registration.startAnyRegistrationFlow)(payload);\n break;\n case 'start_registration':\n // This starts the full registration flow\n this._startRegistration(payload.params || {});\n break;\n case 'start_login':\n this.setStateForNewView({\n view: VIEWS.LOGIN\n });\n this.notifyNewScreen('login');\n break;\n case 'start_post_registration':\n this.setState({\n view: VIEWS.POST_REGISTRATION\n });\n break;\n case 'start_password_recovery':\n this.setStateForNewView({\n view: VIEWS.FORGOT_PASSWORD\n });\n this.notifyNewScreen('forgot_password');\n break;\n case 'start_chat':\n (0, _createRoom3.default)({\n dmUserId: payload.user_id\n });\n break;\n case 'leave_room':\n this._leaveRoom(payload.room_id);\n break;\n case 'reject_invite':\n _Modal2.default.createTrackedDialog('Reject invitation', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Reject invitation'),\n description: (0, _languageHandler._t)('Are you sure you want to reject the invitation?'),\n onFinished: function onFinished(confirm) {\n if (confirm) {\n // FIXME: controller shouldn't be loading a view :(\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n var modal = _Modal2.default.createDialog(Loader, null, 'mx_Dialog_spinner');\n\n _MatrixClientPeg2.default.get().leave(payload.room_id).done(function () {\n modal.close();\n if (_this2.state.currentRoomId === payload.room_id) {\n _dispatcher2.default.dispatch({ action: 'view_next_room' });\n }\n }, function (err) {\n modal.close();\n _Modal2.default.createTrackedDialog('Failed to reject invitation', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to reject invitation'),\n description: err.toString()\n });\n });\n }\n }\n });\n break;\n case 'view_user':\n // FIXME: ugly hack to expand the RightPanel and then re-dispatch.\n if (this.state.collapseRhs) {\n setTimeout(function () {\n _dispatcher2.default.dispatch({\n action: 'show_right_panel'\n });\n _dispatcher2.default.dispatch({\n action: 'view_user',\n member: payload.member\n });\n }, 0);\n }\n break;\n case 'view_room':\n // Takes either a room ID or room alias: if switching to a room the client is already\n // known to be in (eg. user clicks on a room in the recents panel), supply the ID\n // If the user is clicking on a room in the context of the alias being presented\n // to them, supply the room alias. If both are supplied, the room ID will be ignored.\n this._viewRoom(payload);\n break;\n case 'view_prev_room':\n this._viewNextRoom(-1);\n break;\n case 'view_next_room':\n this._viewNextRoom(1);\n break;\n case 'view_indexed_room':\n this._viewIndexedRoom(payload.roomIndex);\n break;\n case 'view_user_settings':\n this._setPage(_PageTypes2.default.UserSettings);\n this.notifyNewScreen('settings');\n break;\n case 'close_settings':\n this.setState({\n leftDisabled: false,\n rightDisabled: false,\n middleDisabled: false\n });\n if (this.state.page_type === _PageTypes2.default.UserSettings) {\n // We do this to get setPage and notifyNewScreen\n if (this.state.currentRoomId) {\n this._viewRoom({\n room_id: this.state.currentRoomId\n });\n } else if (this.state.currentGroupId) {\n this._viewGroup({\n group_id: this.state.currentGroupId\n });\n } else {\n this._viewHome();\n }\n }\n break;\n case 'view_create_room':\n this._createRoom();\n break;\n case 'view_create_group':\n {\n var CreateGroupDialog = _index2.default.getComponent(\"dialogs.CreateGroupDialog\");\n _Modal2.default.createTrackedDialog('Create Community', '', CreateGroupDialog);\n }\n break;\n case 'view_room_directory':\n this._setPage(_PageTypes2.default.RoomDirectory);\n this.notifyNewScreen('directory');\n break;\n case 'view_my_groups':\n this._setPage(_PageTypes2.default.MyGroups);\n this.notifyNewScreen('groups');\n break;\n case 'view_group':\n this._viewGroup(payload);\n break;\n case 'view_home_page':\n this._viewHome();\n break;\n case 'view_set_mxid':\n this._setMxId(payload);\n break;\n case 'view_start_chat_or_reuse':\n this._chatCreateOrReuse(payload.user_id, payload.go_home_on_cancel);\n break;\n case 'view_create_chat':\n (0, _RoomInvite.showStartChatInviteDialog)();\n break;\n case 'view_invite':\n (0, _RoomInvite.showRoomInviteDialog)(payload.roomId);\n break;\n case 'notifier_enabled':\n this.forceUpdate();\n break;\n case 'hide_left_panel':\n this.setState({\n collapseLhs: true\n });\n break;\n case 'show_left_panel':\n this.setState({\n collapseLhs: false\n });\n break;\n case 'hide_right_panel':\n this.setState({\n collapseRhs: true\n });\n break;\n case 'show_right_panel':\n this.setState({\n collapseRhs: false\n });\n break;\n case 'panel_disable':\n {\n this.setState({\n leftDisabled: payload.leftDisabled || payload.sideDisabled || false,\n middleDisabled: payload.middleDisabled || false,\n rightDisabled: payload.rightDisabled || payload.sideDisabled || false\n });\n break;\n }\n case 'set_theme':\n this._onSetTheme(payload.value);\n break;\n case 'on_logging_in':\n // We are now logging in, so set the state to reflect that\n // NB. This does not touch 'ready' since if our dispatches\n // are delayed, the sync could already have completed\n this.setStateForNewView({\n view: VIEWS.LOGGING_IN\n });\n break;\n case 'on_logged_in':\n this._onLoggedIn(payload.teamToken);\n break;\n case 'on_logged_out':\n this._onLoggedOut();\n break;\n case 'will_start_client':\n this.setState({ ready: false }, function () {\n // if the client is about to start, we are, by definition, not ready.\n // Set ready to false now, then it'll be set to true when the sync\n // listener we set below fires.\n _this2._onWillStartClient();\n });\n break;\n case 'client_started':\n this._onClientStarted();\n break;\n case 'new_version':\n this.onVersion(payload.currentVersion, payload.newVersion, payload.releaseNotes);\n break;\n case 'check_updates':\n this.setState({ checkingForUpdate: payload.value });\n break;\n case 'send_event':\n this.onSendEvent(payload.room_id, payload.event);\n break;\n case 'aria_hide_main_app':\n this.setState({\n hideToSRUsers: true\n });\n break;\n case 'aria_unhide_main_app':\n this.setState({\n hideToSRUsers: false\n });\n break;\n case 'accept_cookies':\n _SettingsStore2.default.setValue(\"analyticsOptIn\", null, _SettingsStore.SettingLevel.DEVICE, true);\n _SettingsStore2.default.setValue(\"showCookieBar\", null, _SettingsStore.SettingLevel.DEVICE, false);\n\n this.setState({\n showCookieBar: false\n });\n _Analytics2.default.enable();\n break;\n case 'reject_cookies':\n _SettingsStore2.default.setValue(\"analyticsOptIn\", null, _SettingsStore.SettingLevel.DEVICE, false);\n _SettingsStore2.default.setValue(\"showCookieBar\", null, _SettingsStore.SettingLevel.DEVICE, false);\n\n this.setState({\n showCookieBar: false\n });\n break;\n }\n },\n\n _setPage: function _setPage(pageType) {\n this.setState({\n page_type: pageType\n });\n },\n\n _startRegistration: function _startRegistration(params) {\n var newState = {\n view: VIEWS.REGISTER\n };\n\n // Only honour params if they are all present, otherwise we reset\n // HS and IS URLs when switching to registration.\n if (params.client_secret && params.session_id && params.hs_url && params.is_url && params.sid) {\n newState.register_client_secret = params.client_secret;\n newState.register_session_id = params.session_id;\n newState.register_hs_url = params.hs_url;\n newState.register_is_url = params.is_url;\n newState.register_id_sid = params.sid;\n }\n\n this.setStateForNewView(newState);\n this.notifyNewScreen('register');\n },\n\n // TODO: Move to RoomViewStore\n _viewNextRoom: function _viewNextRoom(roomIndexDelta) {\n var allRooms = RoomListSorter.mostRecentActivityFirst(_MatrixClientPeg2.default.get().getRooms());\n // If there are 0 rooms or 1 room, view the home page because otherwise\n // if there are 0, we end up trying to index into an empty array, and\n // if there is 1, we end up viewing the same room.\n if (allRooms.length < 2) {\n _dispatcher2.default.dispatch({\n action: 'view_home_page'\n });\n return;\n }\n var roomIndex = -1;\n for (var i = 0; i < allRooms.length; ++i) {\n if (allRooms[i].roomId == this.state.currentRoomId) {\n roomIndex = i;\n break;\n }\n }\n roomIndex = (roomIndex + roomIndexDelta) % allRooms.length;\n if (roomIndex < 0) roomIndex = allRooms.length - 1;\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: allRooms[roomIndex].roomId\n });\n },\n\n // TODO: Move to RoomViewStore\n _viewIndexedRoom: function _viewIndexedRoom(roomIndex) {\n var allRooms = RoomListSorter.mostRecentActivityFirst(_MatrixClientPeg2.default.get().getRooms());\n if (allRooms[roomIndex]) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: allRooms[roomIndex].roomId\n });\n }\n },\n\n // switch view to the given room\n //\n // @param {Object} roomInfo Object containing data about the room to be joined\n // @param {string=} roomInfo.room_id ID of the room to join. One of room_id or room_alias must be given.\n // @param {string=} roomInfo.room_alias Alias of the room to join. One of room_id or room_alias must be given.\n // @param {boolean=} roomInfo.auto_join If true, automatically attempt to join the room if not already a member.\n // @param {string=} roomInfo.event_id ID of the event in this room to show: this will cause a switch to the\n // context of that particular event.\n // @param {boolean=} roomInfo.highlighted If true, add event_id to the hash of the URL\n // and alter the EventTile to appear highlighted.\n // @param {Object=} roomInfo.third_party_invite Object containing data about the third party\n // we received to join the room, if any.\n // @param {string=} roomInfo.third_party_invite.inviteSignUrl 3pid invite sign URL\n // @param {string=} roomInfo.third_party_invite.invitedEmail The email address the invite was sent to\n // @param {Object=} roomInfo.oob_data Object of additional data about the room\n // that has been passed out-of-band (eg.\n // room name and avatar from an invite email)\n _viewRoom: function _viewRoom(roomInfo) {\n var _this3 = this;\n\n this.focusComposer = true;\n\n var newState = {\n currentRoomId: roomInfo.room_id || null,\n page_type: _PageTypes2.default.RoomView,\n thirdPartyInvite: roomInfo.third_party_invite,\n roomOobData: roomInfo.oob_data,\n viaServers: roomInfo.via_servers\n };\n\n if (roomInfo.room_alias) {\n console.log('Switching to room alias ' + roomInfo.room_alias + ' at event ' + roomInfo.event_id);\n } else {\n console.log('Switching to room id ' + roomInfo.room_id + ' at event ' + roomInfo.event_id);\n }\n\n // Wait for the first sync to complete so that if a room does have an alias,\n // it would have been retrieved.\n var waitFor = _bluebird2.default.resolve(null);\n if (!this.firstSyncComplete) {\n if (!this.firstSyncPromise) {\n console.warn('Cannot view a room before first sync. room_id:', roomInfo.room_id);\n return;\n }\n waitFor = this.firstSyncPromise.promise;\n }\n\n waitFor.done(function () {\n var presentedId = roomInfo.room_alias || roomInfo.room_id;\n var room = _MatrixClientPeg2.default.get().getRoom(roomInfo.room_id);\n if (room) {\n var theAlias = Rooms.getDisplayAliasForRoom(room);\n if (theAlias) presentedId = theAlias;\n\n // Store this as the ID of the last room accessed. This is so that we can\n // persist which room is being stored across refreshes and browser quits.\n if (localStorage) {\n localStorage.setItem('mx_last_room_id', room.roomId);\n }\n }\n\n if (roomInfo.event_id && roomInfo.highlighted) {\n presentedId += \"/\" + roomInfo.event_id;\n }\n _this3.notifyNewScreen('room/' + presentedId);\n newState.ready = true;\n _this3.setState(newState);\n });\n },\n\n _viewGroup: function _viewGroup(payload) {\n var groupId = payload.group_id;\n this.setState({\n currentGroupId: groupId,\n currentGroupIsNew: payload.group_is_new\n });\n this._setPage(_PageTypes2.default.GroupView);\n this.notifyNewScreen('group/' + groupId);\n },\n\n _viewHome: function _viewHome() {\n this._setPage(_PageTypes2.default.HomePage);\n this.notifyNewScreen('home');\n },\n\n _setMxId: function _setMxId(payload) {\n var _this4 = this;\n\n var SetMxIdDialog = _index2.default.getComponent('views.dialogs.SetMxIdDialog');\n var close = _Modal2.default.createTrackedDialog('Set MXID', '', SetMxIdDialog, {\n homeserverUrl: _MatrixClientPeg2.default.get().getHomeserverUrl(),\n onFinished: function onFinished(submitted, credentials) {\n if (!submitted) {\n _dispatcher2.default.dispatch({\n action: 'cancel_after_sync_prepared'\n });\n if (payload.go_home_on_cancel) {\n _dispatcher2.default.dispatch({\n action: 'view_home_page'\n });\n }\n return;\n }\n _this4.onRegistered(credentials);\n },\n onDifferentServerClicked: function onDifferentServerClicked(ev) {\n _dispatcher2.default.dispatch({ action: 'start_registration' });\n close();\n },\n onLoginClick: function onLoginClick(ev) {\n _dispatcher2.default.dispatch({ action: 'start_login' });\n close();\n }\n }).close;\n },\n\n _createRoom: function _createRoom() {\n var CreateRoomDialog = _index2.default.getComponent('dialogs.CreateRoomDialog');\n _Modal2.default.createTrackedDialog('Create Room', '', CreateRoomDialog, {\n onFinished: function onFinished(shouldCreate, name, noFederate) {\n if (shouldCreate) {\n var createOpts = {};\n if (name) createOpts.name = name;\n if (noFederate) createOpts.creation_content = { 'm.federate': false };\n (0, _createRoom3.default)({ createOpts: createOpts }).done();\n }\n }\n });\n },\n\n _chatCreateOrReuse: function _chatCreateOrReuse(userId, goHomeOnCancel) {\n if (goHomeOnCancel === undefined) goHomeOnCancel = true;\n\n var ChatCreateOrReuseDialog = _index2.default.getComponent('views.dialogs.ChatCreateOrReuseDialog');\n // Use a deferred action to reshow the dialog once the user has registered\n if (_MatrixClientPeg2.default.get().isGuest()) {\n // No point in making 2 DMs with welcome bot. This assumes view_set_mxid will\n // result in a new DM with the welcome user.\n if (userId !== this.props.config.welcomeUserId) {\n _dispatcher2.default.dispatch({\n action: 'do_after_sync_prepared',\n deferred_action: {\n action: 'view_start_chat_or_reuse',\n user_id: userId\n }\n });\n }\n _dispatcher2.default.dispatch({\n action: 'require_registration',\n // If the set_mxid dialog is cancelled, view /home because if the browser\n // was pointing at /user/@someone:domain?action=chat, the URL needs to be\n // reset so that they can revisit /user/.. // (and trigger\n // `_chatCreateOrReuse` again)\n go_home_on_cancel: true\n });\n return;\n }\n\n var close = _Modal2.default.createTrackedDialog('Chat create or reuse', '', ChatCreateOrReuseDialog, {\n userId: userId,\n onFinished: function onFinished(success) {\n if (!success && goHomeOnCancel) {\n // Dialog cancelled, default to home\n _dispatcher2.default.dispatch({ action: 'view_home_page' });\n }\n },\n onNewDMClick: function onNewDMClick() {\n _dispatcher2.default.dispatch({\n action: 'start_chat',\n user_id: userId\n });\n // Close the dialog, indicate success (calls onFinished(true))\n close(true);\n },\n onExistingRoomSelected: function onExistingRoomSelected(roomId) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: roomId\n });\n close(true);\n }\n }).close;\n },\n\n _leaveRoomWarnings: function _leaveRoomWarnings(roomId) {\n var roomToLeave = _MatrixClientPeg2.default.get().getRoom(roomId);\n // Show a warning if there are additional complications.\n var joinRules = roomToLeave.currentState.getStateEvents('m.room.join_rules', '');\n var warnings = [];\n if (joinRules) {\n var rule = joinRules.getContent().join_rule;\n if (rule !== \"public\") {\n warnings.push(_react2.default.createElement(\n 'span',\n { className: 'warning', key: 'non_public_warning' },\n ' ' /* Whitespace, otherwise the sentences get smashed together */,\n (0, _languageHandler._t)(\"This room is not public. You will not be able to rejoin without an invite.\")\n ));\n }\n }\n return warnings;\n },\n\n _leaveRoom: function _leaveRoom(roomId) {\n var _this5 = this;\n\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n var roomToLeave = _MatrixClientPeg2.default.get().getRoom(roomId);\n var warnings = this._leaveRoomWarnings(roomId);\n\n _Modal2.default.createTrackedDialog('Leave room', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Leave room\"),\n description: _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Are you sure you want to leave the room '%(roomName)s'?\", { roomName: roomToLeave.name }),\n warnings\n ),\n button: (0, _languageHandler._t)(\"Leave\"),\n onFinished: function onFinished(shouldLeave) {\n if (shouldLeave) {\n var d = _MatrixClientPeg2.default.get().leave(roomId);\n\n // FIXME: controller shouldn't be loading a view :(\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n var modal = _Modal2.default.createDialog(Loader, null, 'mx_Dialog_spinner');\n\n d.then(function () {\n modal.close();\n if (_this5.state.currentRoomId === roomId) {\n _dispatcher2.default.dispatch({ action: 'view_next_room' });\n }\n }, function (err) {\n modal.close();\n console.error(\"Failed to leave room \" + roomId + \" \" + err);\n var title = (0, _languageHandler._t)(\"Failed to leave room\");\n var message = (0, _languageHandler._t)(\"Server may be unavailable, overloaded, or you hit a bug.\");\n if (err.errcode == 'M_CANNOT_LEAVE_SERVER_NOTICE_ROOM') {\n title = (0, _languageHandler._t)(\"Can't leave Server Notices room\");\n message = (0, _languageHandler._t)(\"This room is used for important messages from the Homeserver, \" + \"so you cannot leave it.\");\n } else if (err && err.message) {\n message = err.message;\n }\n _Modal2.default.createTrackedDialog('Failed to leave room', '', ErrorDialog, {\n title: title,\n description: message\n });\n });\n }\n }\n });\n },\n\n /**\n * Called whenever someone changes the theme\n *\n * @param {string} theme new theme\n */\n _onSetTheme: function _onSetTheme(theme) {\n if (!theme) {\n theme = _SettingsStore2.default.getValue(\"theme\");\n }\n\n // look for the stylesheet elements.\n // styleElements is a map from style name to HTMLLinkElement.\n var styleElements = (0, _create2.default)(null);\n var a = void 0;\n for (var i = 0; a = document.getElementsByTagName(\"link\")[i]; i++) {\n var href = a.getAttribute(\"href\");\n // shouldn't we be using the 'title' tag rather than the href?\n var match = href.match(/^bundles\\/.*\\/theme-(.*)\\.css$/);\n if (match) {\n styleElements[match[1]] = a;\n }\n }\n\n if (!(theme in styleElements)) {\n throw new Error(\"Unknown theme \" + theme);\n }\n\n // disable all of them first, then enable the one we want. Chrome only\n // bothers to do an update on a true->false transition, so this ensures\n // that we get exactly one update, at the right time.\n //\n // ^ This comment was true when we used to use alternative stylesheets\n // for the CSS. Nowadays we just set them all as disabled in index.html\n // and enable them as needed. It might be cleaner to disable them all\n // at the same time to prevent loading two themes simultaneously and\n // having them interact badly... but this causes a flash of unstyled app\n // which is even uglier. So we don't.\n\n styleElements[theme].disabled = false;\n\n var switchTheme = function switchTheme() {\n // we re-enable our theme here just in case we raced with another\n // theme set request as per https://github.com/vector-im/riot-web/issues/5601.\n // We could alternatively lock or similar to stop the race, but\n // this is probably good enough for now.\n styleElements[theme].disabled = false;\n (0, _values2.default)(styleElements).forEach(function (a) {\n if (a == styleElements[theme]) return;\n a.disabled = true;\n });\n _Tinter2.default.setTheme(theme);\n };\n\n // turns out that Firefox preloads the CSS for link elements with\n // the disabled attribute, but Chrome doesn't.\n\n var cssLoaded = false;\n\n styleElements[theme].onload = function () {\n switchTheme();\n };\n\n for (var _i = 0; _i < document.styleSheets.length; _i++) {\n var ss = document.styleSheets[_i];\n if (ss && ss.href === styleElements[theme].href) {\n cssLoaded = true;\n break;\n }\n }\n\n if (cssLoaded) {\n styleElements[theme].onload = undefined;\n switchTheme();\n }\n },\n\n /**\n * Called when a new logged in session has started\n *\n * @param {string} teamToken\n */\n _onLoggedIn: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(teamToken) {\n var roomId;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.setState({\n view: VIEWS.LOGGED_IN\n });\n\n if (!teamToken) {\n _context.next = 6;\n break;\n }\n\n // A team member has logged in, not a guest\n this._teamToken = teamToken;\n _dispatcher2.default.dispatch({ action: 'view_home_page' });\n _context.next = 18;\n break;\n\n case 6:\n if (!this._is_registered) {\n _context.next = 17;\n break;\n }\n\n this._is_registered = false;\n\n if (!(this.props.config.welcomeUserId && (0, _languageHandler.getCurrentLanguage)().startsWith(\"en\"))) {\n _context.next = 14;\n break;\n }\n\n _context.next = 11;\n return (0, _bluebird.resolve)((0, _createRoom3.default)({\n dmUserId: this.props.config.welcomeUserId,\n // Only view the welcome user if we're NOT looking at a room\n andView: !this.state.currentRoomId\n }));\n\n case 11:\n roomId = _context.sent;\n\n if (!roomId) {\n _context.next = 14;\n break;\n }\n\n return _context.abrupt('return');\n\n case 14:\n // The user has just logged in after registering\n _dispatcher2.default.dispatch({ action: 'view_home_page' });\n _context.next = 18;\n break;\n\n case 17:\n this._showScreenAfterLogin();\n\n case 18:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function _onLoggedIn(_x) {\n return _ref.apply(this, arguments);\n }\n\n return _onLoggedIn;\n }(),\n\n _showScreenAfterLogin: function _showScreenAfterLogin() {\n // If screenAfterLogin is set, use that, then null it so that a second login will\n // result in view_home_page, _user_settings or _room_directory\n if (this._screenAfterLogin && this._screenAfterLogin.screen) {\n this.showScreen(this._screenAfterLogin.screen, this._screenAfterLogin.params);\n this._screenAfterLogin = null;\n } else if (localStorage && localStorage.getItem('mx_last_room_id')) {\n // Before defaulting to directory, show the last viewed room\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: localStorage.getItem('mx_last_room_id')\n });\n } else {\n _dispatcher2.default.dispatch({ action: 'view_home_page' });\n }\n },\n\n /**\n * Called when the session is logged out\n */\n _onLoggedOut: function _onLoggedOut() {\n this.notifyNewScreen('login');\n this.setStateForNewView({\n view: VIEWS.LOGIN,\n ready: false,\n collapseLhs: false,\n collapseRhs: false,\n currentRoomId: null,\n page_type: _PageTypes2.default.RoomDirectory\n });\n this._teamToken = null;\n this._setPageSubtitle();\n },\n\n /**\n * Called just before the matrix client is started\n * (useful for setting listeners)\n */\n _onWillStartClient: function _onWillStartClient() {\n var self = this;\n\n // reset the 'have completed first sync' flag,\n // since we're about to start the client and therefore about\n // to do the first sync\n this.firstSyncComplete = false;\n this.firstSyncPromise = _bluebird2.default.defer();\n var cli = _MatrixClientPeg2.default.get();\n\n // Allow the JS SDK to reap timeline events. This reduces the amount of\n // memory consumed as the JS SDK stores multiple distinct copies of room\n // state (each of which can be 10s of MBs) for each DISJOINT timeline. This is\n // particularly noticeable when there are lots of 'limited' /sync responses\n // such as when laptops unsleep.\n // https://github.com/vector-im/riot-web/issues/3307#issuecomment-282895568\n cli.setCanResetTimelineCallback(function (roomId) {\n console.log(\"Request to reset timeline in room \", roomId, \" viewing:\", self.state.currentRoomId);\n if (roomId !== self.state.currentRoomId) {\n // It is safe to remove events from rooms we are not viewing.\n return true;\n }\n // We are viewing the room which we want to reset. It is only safe to do\n // this if we are not scrolled up in the view. To find out, delegate to\n // the timeline panel. If the timeline panel doesn't exist, then we assume\n // it is safe to reset the timeline.\n if (!self._loggedInView || !self._loggedInView.child) {\n return true;\n }\n return self._loggedInView.child.canResetTimelineInRoom(roomId);\n });\n\n cli.on('sync', function (state, prevState, data) {\n // LifecycleStore and others cannot directly subscribe to matrix client for\n // events because flux only allows store state changes during flux dispatches.\n // So dispatch directly from here. Ideally we'd use a SyncStateStore that\n // would do this dispatch and expose the sync state itself (by listening to\n // its own dispatch).\n _dispatcher2.default.dispatch({ action: 'sync_state', prevState: prevState, state: state });\n\n if (state === \"ERROR\" || state === \"RECONNECTING\") {\n if (data.error instanceof _matrixJsSdk2.default.InvalidStoreError) {\n Lifecycle.handleInvalidStoreError(data.error);\n }\n self.setState({ syncError: data.error || true });\n } else if (self.state.syncError) {\n self.setState({ syncError: null });\n }\n\n self.updateStatusIndicator(state, prevState);\n if (state === \"SYNCING\" && prevState === \"SYNCING\") {\n return;\n }\n console.log(\"MatrixClient sync state => %s\", state);\n if (state !== \"PREPARED\") {\n return;\n }\n\n self.firstSyncComplete = true;\n self.firstSyncPromise.resolve();\n\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n self.setState({ ready: true });\n });\n cli.on('Call.incoming', function (call) {\n // we dispatch this synchronously to make sure that the event\n // handlers on the call are set up immediately (so that if\n // we get an immediate hangup, we don't get a stuck call)\n _dispatcher2.default.dispatch({\n action: 'incoming_call',\n call: call\n }, true);\n });\n cli.on('Session.logged_out', function (call) {\n if (Lifecycle.isLoggingOut()) return;\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Signed out', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Signed Out'),\n description: (0, _languageHandler._t)('For security, this session has been signed out. Please sign in again.')\n });\n _dispatcher2.default.dispatch({\n action: 'logout'\n });\n });\n cli.on('no_consent', function (message, consentUri) {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('No Consent Dialog', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Terms and Conditions'),\n description: _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n ' ',\n (0, _languageHandler._t)('To continue using the %(homeserverDomain)s homeserver ' + 'you must review and agree to our terms and conditions.', { homeserverDomain: cli.getDomain() })\n )\n ),\n button: (0, _languageHandler._t)('Review terms and conditions'),\n cancelButton: (0, _languageHandler._t)('Dismiss'),\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n window.open(consentUri, '_blank');\n }\n }\n }, null, true);\n });\n\n cli.on(\"accountData\", function (ev) {\n if (ev.getType() === 'im.vector.web.settings') {\n if (ev.getContent() && ev.getContent().theme) {\n _dispatcher2.default.dispatch({\n action: 'set_theme',\n value: ev.getContent().theme\n });\n }\n }\n });\n\n var dft = new _DecryptionFailureTracker.DecryptionFailureTracker(function (total, errorCode) {\n _Analytics2.default.trackEvent('E2E', 'Decryption failure', errorCode, total);\n }, function (errorCode) {\n // Map JS-SDK error codes to tracker codes for aggregation\n switch (errorCode) {\n case 'MEGOLM_UNKNOWN_INBOUND_SESSION_ID':\n return 'olm_keys_not_sent_error';\n case 'OLM_UNKNOWN_MESSAGE_INDEX':\n return 'olm_index_error';\n case undefined:\n return 'unexpected_error';\n default:\n return 'unspecified_error';\n }\n });\n\n // Shelved for later date when we have time to think about persisting history of\n // tracked events across sessions.\n // dft.loadTrackedEventHashMap();\n\n dft.start();\n\n // When logging out, stop tracking failures and destroy state\n cli.on(\"Session.logged_out\", function () {\n return dft.stop();\n });\n cli.on(\"Event.decrypted\", function (e, err) {\n return dft.eventDecrypted(e, err);\n });\n\n var krh = new _KeyRequestHandler2.default(cli);\n cli.on(\"crypto.roomKeyRequest\", function (req) {\n krh.handleKeyRequest(req);\n });\n cli.on(\"crypto.roomKeyRequestCancellation\", function (req) {\n krh.handleKeyRequestCancellation(req);\n });\n\n cli.on(\"Room\", function (room) {\n if (_MatrixClientPeg2.default.get().isCryptoEnabled()) {\n var blacklistEnabled = _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.ROOM_DEVICE, \"blacklistUnverifiedDevices\", room.roomId,\n /*explicit=*/true);\n room.setBlacklistUnverifiedDevices(blacklistEnabled);\n }\n });\n cli.on(\"crypto.warning\", function (type) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n switch (type) {\n case 'CRYPTO_WARNING_OLD_VERSION_DETECTED':\n _Modal2.default.createTrackedDialog('Crypto migrated', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Old cryptography data detected'),\n description: (0, _languageHandler._t)(\"Data from an older version of Riot has been detected. \" + \"This will have caused end-to-end cryptography to malfunction \" + \"in the older version. End-to-end encrypted messages exchanged \" + \"recently whilst using the older version may not be decryptable \" + \"in this version. This may also cause messages exchanged with this \" + \"version to fail. If you experience problems, log out and back in \" + \"again. To retain message history, export and re-import your keys.\")\n });\n break;\n }\n });\n cli.on(\"crypto.keyBackupFailed\", function () {\n _Modal2.default.createTrackedDialogAsync('New Recovery Method', 'New Recovery Method', import('../../async-components/views/dialogs/keybackup/NewRecoveryMethodDialog'));\n });\n\n // Fire the tinter right on startup to ensure the default theme is applied\n // A later sync can/will correct the tint to be the right value for the user\n var colorScheme = _SettingsStore2.default.getValue(\"roomColor\");\n _Tinter2.default.tint(colorScheme.primary_color, colorScheme.secondary_color);\n },\n\n\n /**\n * Called shortly after the matrix client has started. Useful for\n * setting up anything that requires the client to be started.\n * @private\n */\n _onClientStarted: function _onClientStarted() {\n var cli = _MatrixClientPeg2.default.get();\n\n if (cli.isCryptoEnabled()) {\n var blacklistEnabled = _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, \"blacklistUnverifiedDevices\");\n cli.setGlobalBlacklistUnverifiedDevices(blacklistEnabled);\n }\n },\n\n showScreen: function showScreen(screen, params) {\n var _this6 = this;\n\n if (screen == 'register') {\n _dispatcher2.default.dispatch({\n action: 'start_registration',\n params: params\n });\n } else if (screen == 'login') {\n _dispatcher2.default.dispatch({\n action: 'start_login',\n params: params\n });\n } else if (screen == 'forgot_password') {\n _dispatcher2.default.dispatch({\n action: 'start_password_recovery',\n params: params\n });\n } else if (screen == 'new') {\n _dispatcher2.default.dispatch({\n action: 'view_create_room'\n });\n } else if (screen == 'settings') {\n _dispatcher2.default.dispatch({\n action: 'view_user_settings'\n });\n } else if (screen == 'home') {\n _dispatcher2.default.dispatch({\n action: 'view_home_page'\n });\n } else if (screen == 'start') {\n this.showScreen('home');\n _dispatcher2.default.dispatch({\n action: 'require_registration'\n });\n } else if (screen == 'directory') {\n _dispatcher2.default.dispatch({\n action: 'view_room_directory'\n });\n } else if (screen == 'groups') {\n _dispatcher2.default.dispatch({\n action: 'view_my_groups'\n });\n } else if (screen == 'post_registration') {\n _dispatcher2.default.dispatch({\n action: 'start_post_registration'\n });\n } else if (screen.indexOf('room/') == 0) {\n var segments = screen.substring(5).split('/');\n var roomString = segments[0];\n var eventId = segments[1]; // undefined if no event id given\n\n // FIXME: sort_out caseConsistency\n var thirdPartyInvite = {\n inviteSignUrl: params.signurl,\n invitedEmail: params.email\n };\n var oobData = {\n name: params.room_name,\n avatarUrl: params.room_avatar_url,\n inviterName: params.inviter_name\n };\n\n // on our URLs there might be a ?via=matrix.org or similar to help\n // joins to the room succeed. We'll pass these through as an array\n // to other levels. If there's just one ?via= then params.via is a\n // single string. If someone does something like ?via=one.com&via=two.com\n // then params.via is an array of strings.\n var via = [];\n if (params.via) {\n if (typeof params.via === 'string') via = [params.via];else via = params.via;\n }\n\n var payload = {\n action: 'view_room',\n event_id: eventId,\n via_servers: via,\n // If an event ID is given in the URL hash, notify RoomViewStore to mark\n // it as highlighted, which will propagate to RoomView and highlight the\n // associated EventTile.\n highlighted: Boolean(eventId),\n third_party_invite: thirdPartyInvite,\n oob_data: oobData\n };\n if (roomString[0] == '#') {\n payload.room_alias = roomString;\n } else {\n payload.room_id = roomString;\n }\n\n // we can't view a room unless we're logged in\n // (a guest account is fine)\n if (this.state.view === VIEWS.LOGGED_IN) {\n _dispatcher2.default.dispatch(payload);\n }\n } else if (screen.indexOf('user/') == 0) {\n var userId = screen.substring(5);\n\n // Wait for the first sync so that `getRoom` gives us a room object if it's\n // in the sync response\n var waitFor = this.firstSyncPromise ? this.firstSyncPromise.promise : _bluebird2.default.resolve();\n waitFor.then(function () {\n if (params.action === 'chat') {\n _this6._chatCreateOrReuse(userId);\n return;\n }\n\n _this6._setPage(_PageTypes2.default.UserView);\n _this6.notifyNewScreen('user/' + userId);\n var member = new _matrixJsSdk2.default.RoomMember(null, userId);\n _dispatcher2.default.dispatch({\n action: 'view_user',\n member: member\n });\n });\n } else if (screen.indexOf('group/') == 0) {\n var groupId = screen.substring(6);\n\n // TODO: Check valid group ID\n\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: groupId\n });\n } else {\n console.info(\"Ignoring showScreen for '%s'\", screen);\n }\n },\n\n notifyNewScreen: function notifyNewScreen(screen) {\n if (this.props.onNewScreen) {\n this.props.onNewScreen(screen);\n }\n },\n\n onAliasClick: function onAliasClick(event, alias) {\n event.preventDefault();\n _dispatcher2.default.dispatch({ action: 'view_room', room_alias: alias });\n },\n\n onUserClick: function onUserClick(event, userId) {\n event.preventDefault();\n\n var member = new _matrixJsSdk2.default.RoomMember(null, userId);\n if (!member) {\n return;\n }\n _dispatcher2.default.dispatch({\n action: 'view_user',\n member: member\n });\n },\n\n onGroupClick: function onGroupClick(event, groupId) {\n event.preventDefault();\n _dispatcher2.default.dispatch({ action: 'view_group', group_id: groupId });\n },\n\n onLogoutClick: function onLogoutClick(event) {\n _dispatcher2.default.dispatch({\n action: 'logout'\n });\n event.stopPropagation();\n event.preventDefault();\n },\n\n handleResize: function handleResize(e) {\n var hideLhsThreshold = 1000;\n var showLhsThreshold = 1000;\n var hideRhsThreshold = 820;\n var showRhsThreshold = 820;\n\n if (this._windowWidth > hideLhsThreshold && window.innerWidth <= hideLhsThreshold) {\n _dispatcher2.default.dispatch({ action: 'hide_left_panel' });\n }\n if (this._windowWidth <= showLhsThreshold && window.innerWidth > showLhsThreshold) {\n _dispatcher2.default.dispatch({ action: 'show_left_panel' });\n }\n if (this._windowWidth > hideRhsThreshold && window.innerWidth <= hideRhsThreshold) {\n _dispatcher2.default.dispatch({ action: 'hide_right_panel' });\n }\n if (this._windowWidth <= showRhsThreshold && window.innerWidth > showRhsThreshold) {\n _dispatcher2.default.dispatch({ action: 'show_right_panel' });\n }\n\n this._windowWidth = window.innerWidth;\n },\n\n onRoomCreated: function onRoomCreated(roomId) {\n _dispatcher2.default.dispatch({\n action: \"view_room\",\n room_id: roomId\n });\n },\n\n onRegisterClick: function onRegisterClick() {\n this.showScreen(\"register\");\n },\n\n onLoginClick: function onLoginClick() {\n this.showScreen(\"login\");\n },\n\n onForgotPasswordClick: function onForgotPasswordClick() {\n this.showScreen(\"forgot_password\");\n },\n\n onReturnToAppClick: function onReturnToAppClick() {\n // treat it the same as if the user had completed the login\n this._onLoggedIn(null);\n },\n\n // returns a promise which resolves to the new MatrixClient\n onRegistered: function onRegistered(credentials, teamToken) {\n // XXX: These both should be in state or ideally store(s) because we risk not\n // rendering the most up-to-date view of state otherwise.\n // teamToken may not be truthy\n this._teamToken = teamToken;\n this._is_registered = true;\n return Lifecycle.setLoggedIn(credentials);\n },\n\n onFinishPostRegistration: function onFinishPostRegistration() {\n // Don't confuse this with \"PageType\" which is the middle window to show\n this.setState({\n view: VIEWS.LOGGED_IN\n });\n this.showScreen(\"settings\");\n },\n\n onVersion: function onVersion(current, latest, releaseNotes) {\n this.setState({\n version: current,\n newVersion: latest,\n hasNewVersion: current !== latest,\n newVersionReleaseNotes: releaseNotes,\n checkingForUpdate: null\n });\n },\n\n onSendEvent: function onSendEvent(roomId, event) {\n var cli = _MatrixClientPeg2.default.get();\n if (!cli) {\n _dispatcher2.default.dispatch({ action: 'message_send_failed' });\n return;\n }\n\n cli.sendEvent(roomId, event.getType(), event.getContent()).done(function () {\n _dispatcher2.default.dispatch({ action: 'message_sent' });\n }, function (err) {\n _dispatcher2.default.dispatch({ action: 'message_send_failed' });\n });\n },\n\n _setPageSubtitle: function _setPageSubtitle() {\n var subtitle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n document.title = 'Riot ' + subtitle;\n },\n\n updateStatusIndicator: function updateStatusIndicator(state, prevState) {\n var notifCount = 0;\n\n var rooms = _MatrixClientPeg2.default.get().getRooms();\n for (var i = 0; i < rooms.length; ++i) {\n if (rooms[i].hasMembershipState(_MatrixClientPeg2.default.get().credentials.userId, 'invite')) {\n notifCount++;\n } else if (rooms[i].getUnreadNotificationCount()) {\n // if we were summing unread notifs:\n // notifCount += rooms[i].getUnreadNotificationCount();\n // instead, we just count the number of rooms with notifs.\n notifCount++;\n }\n }\n\n if (_PlatformPeg2.default.get()) {\n _PlatformPeg2.default.get().setErrorStatus(state === 'ERROR');\n _PlatformPeg2.default.get().setNotificationCount(notifCount);\n }\n\n var subtitle = '';\n if (state === \"ERROR\") {\n subtitle += '[' + (0, _languageHandler._t)(\"Offline\") + '] ';\n }\n if (notifCount > 0) {\n subtitle += '[' + notifCount + ']';\n }\n\n this._setPageSubtitle(subtitle);\n },\n\n onCloseAllSettings: function onCloseAllSettings() {\n _dispatcher2.default.dispatch({ action: 'close_settings' });\n },\n onServerConfigChange: function onServerConfigChange(config) {\n var newState = {};\n if (config.hsUrl) {\n newState.register_hs_url = config.hsUrl;\n }\n if (config.isUrl) {\n newState.register_is_url = config.isUrl;\n }\n this.setState(newState);\n },\n\n\n _tryDiscoverDefaultHomeserver: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(serverName) {\n var discovery, state, hsUrl, isUrl;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n _context2.next = 3;\n return (0, _bluebird.resolve)(AutoDiscovery.findClientConfig(serverName));\n\n case 3:\n discovery = _context2.sent;\n state = discovery[\"m.homeserver\"].state;\n\n if (state !== AutoDiscovery.SUCCESS) {\n console.error(\"Failed to discover homeserver on startup:\", discovery);\n this.setState({\n defaultServerDiscoveryError: discovery[\"m.homeserver\"].error,\n loadingDefaultHomeserver: false\n });\n } else {\n hsUrl = discovery[\"m.homeserver\"].base_url;\n isUrl = discovery[\"m.identity_server\"].state === AutoDiscovery.SUCCESS ? discovery[\"m.identity_server\"].base_url : \"https://vector.im\";\n\n this.setState({\n defaultHsUrl: hsUrl,\n defaultIsUrl: isUrl,\n loadingDefaultHomeserver: false\n });\n }\n _context2.next = 12;\n break;\n\n case 8:\n _context2.prev = 8;\n _context2.t0 = _context2['catch'](0);\n\n console.error(_context2.t0);\n this.setState({\n defaultServerDiscoveryError: (0, _languageHandler._t)(\"Unknown error discovering homeserver\"),\n loadingDefaultHomeserver: false\n });\n\n case 12:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[0, 8]]);\n }));\n\n function _tryDiscoverDefaultHomeserver(_x3) {\n return _ref2.apply(this, arguments);\n }\n\n return _tryDiscoverDefaultHomeserver;\n }(),\n\n _makeRegistrationUrl: function _makeRegistrationUrl(params) {\n if (this.props.startingFragmentQueryParams.referrer) {\n params.referrer = this.props.startingFragmentQueryParams.referrer;\n }\n return this.props.makeRegistrationUrl(params);\n },\n\n _collectLoggedInView: function _collectLoggedInView(ref) {\n this._loggedInView = ref;\n },\n\n render: function render() {\n // console.log(`Rendering MatrixChat with view ${this.state.view}`);\n\n if (this.state.view === VIEWS.LOADING || this.state.view === VIEWS.LOGGING_IN || this.state.loadingDefaultHomeserver) {\n var Spinner = _index2.default.getComponent('elements.Spinner');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixChat_splash' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n // needs to be before normal PageTypes as you are logged in technically\n if (this.state.view === VIEWS.POST_REGISTRATION) {\n var PostRegistration = _index2.default.getComponent('structures.login.PostRegistration');\n return _react2.default.createElement(PostRegistration, {\n onComplete: this.onFinishPostRegistration });\n }\n\n if (this.state.view === VIEWS.LOGGED_IN) {\n // store errors stop the client syncing and require user intervention, so we'll\n // be showing a dialog. Don't show anything else.\n var isStoreError = this.state.syncError && this.state.syncError instanceof _matrixJsSdk2.default.InvalidStoreError;\n\n // `ready` and `view==LOGGED_IN` may be set before `page_type` (because the\n // latter is set via the dispatcher). If we don't yet have a `page_type`,\n // keep showing the spinner for now.\n if (this.state.ready && this.state.page_type && !isStoreError) {\n /* for now, we stuff the entirety of our props and state into the LoggedInView.\n * we should go through and figure out what we actually need to pass down, as well\n * as using something like redux to avoid having a billion bits of state kicking around.\n */\n var LoggedInView = _index2.default.getComponent('structures.LoggedInView');\n return _react2.default.createElement(LoggedInView, (0, _extends3.default)({ ref: this._collectLoggedInView, matrixClient: _MatrixClientPeg2.default.get(),\n onRoomCreated: this.onRoomCreated,\n onCloseAllSettings: this.onCloseAllSettings,\n onRegistered: this.onRegistered,\n currentRoomId: this.state.currentRoomId,\n teamToken: this._teamToken,\n showCookieBar: this.state.showCookieBar\n }, this.props, this.state));\n } else {\n // we think we are logged in, but are still waiting for the /sync to complete\n var _Spinner = _index2.default.getComponent('elements.Spinner');\n var errorBox = void 0;\n if (this.state.syncError && !isStoreError) {\n errorBox = _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixChat_syncError' },\n (0, _ErrorUtils.messageForSyncError)(this.state.syncError)\n );\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixChat_splash' },\n errorBox,\n _react2.default.createElement(_Spinner, null),\n _react2.default.createElement(\n 'a',\n { href: '#', className: 'mx_MatrixChat_splashButtons', onClick: this.onLogoutClick },\n (0, _languageHandler._t)('Logout')\n )\n );\n }\n }\n\n if (this.state.view === VIEWS.REGISTER) {\n var Registration = _index2.default.getComponent('structures.login.Registration');\n return _react2.default.createElement(Registration, {\n clientSecret: this.state.register_client_secret,\n sessionId: this.state.register_session_id,\n idSid: this.state.register_id_sid,\n email: this.props.startingFragmentQueryParams.email,\n referrer: this.props.startingFragmentQueryParams.referrer,\n defaultServerName: this.getDefaultServerName(),\n defaultServerDiscoveryError: this.state.defaultServerDiscoveryError,\n defaultHsUrl: this.getDefaultHsUrl(),\n defaultIsUrl: this.getDefaultIsUrl(),\n brand: this.props.config.brand,\n teamServerConfig: this.props.config.teamServerConfig,\n customHsUrl: this.getCurrentHsUrl(),\n customIsUrl: this.getCurrentIsUrl(),\n makeRegistrationUrl: this._makeRegistrationUrl,\n defaultDeviceDisplayName: this.props.defaultDeviceDisplayName,\n onLoggedIn: this.onRegistered,\n onLoginClick: this.onLoginClick,\n onRegisterClick: this.onRegisterClick,\n onCancelClick: _MatrixClientPeg2.default.get() ? this.onReturnToAppClick : null,\n onServerConfigChange: this.onServerConfigChange\n });\n }\n\n if (this.state.view === VIEWS.FORGOT_PASSWORD) {\n var ForgotPassword = _index2.default.getComponent('structures.login.ForgotPassword');\n return _react2.default.createElement(ForgotPassword, {\n defaultServerName: this.getDefaultServerName(),\n defaultServerDiscoveryError: this.state.defaultServerDiscoveryError,\n defaultHsUrl: this.getDefaultHsUrl(),\n defaultIsUrl: this.getDefaultIsUrl(),\n customHsUrl: this.getCurrentHsUrl(),\n customIsUrl: this.getCurrentIsUrl(),\n onComplete: this.onLoginClick,\n onRegisterClick: this.onRegisterClick,\n onLoginClick: this.onLoginClick });\n }\n\n if (this.state.view === VIEWS.LOGIN) {\n var Login = _index2.default.getComponent('structures.login.Login');\n return _react2.default.createElement(Login, {\n onLoggedIn: Lifecycle.setLoggedIn,\n onRegisterClick: this.onRegisterClick,\n defaultServerName: this.getDefaultServerName(),\n defaultServerDiscoveryError: this.state.defaultServerDiscoveryError,\n defaultHsUrl: this.getDefaultHsUrl(),\n defaultIsUrl: this.getDefaultIsUrl(),\n customHsUrl: this.getCurrentHsUrl(),\n customIsUrl: this.getCurrentIsUrl(),\n fallbackHsUrl: this.getFallbackHsUrl(),\n defaultDeviceDisplayName: this.props.defaultDeviceDisplayName,\n onForgotPasswordClick: this.onForgotPasswordClick,\n enableGuest: this.props.enableGuest,\n onCancelClick: _MatrixClientPeg2.default.get() ? this.onReturnToAppClick : null,\n onServerConfigChange: this.onServerConfigChange\n });\n }\n\n console.error('Unknown view ' + this.state.view);\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=MatrixChat.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DecryptionFailureTracker = exports.DecryptionFailure = undefined;\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends3 = require('babel-runtime/helpers/extends');\n\nvar _extends4 = _interopRequireDefault(_extends3);\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _map = require('babel-runtime/core-js/map');\n\nvar _map2 = _interopRequireDefault(_map);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DecryptionFailure = exports.DecryptionFailure = function DecryptionFailure(failedEventId, errorCode) {\n (0, _classCallCheck3.default)(this, DecryptionFailure);\n\n this.failedEventId = failedEventId;\n this.errorCode = errorCode;\n this.ts = Date.now();\n};\n\nvar DecryptionFailureTracker = exports.DecryptionFailureTracker = function () {\n\n /**\n * Create a new DecryptionFailureTracker.\n *\n * Call `eventDecrypted(event, err)` on this instance when an event is decrypted.\n *\n * Call `start()` to start the tracker, and `stop()` to stop tracking.\n *\n * @param {function} fn The tracking function, which will be called when failures\n * are tracked. The function should have a signature `(count, trackedErrorCode) => {...}`,\n * where `count` is the number of failures and `errorCode` matches the `.code` of\n * provided DecryptionError errors (by default, unless `errorCodeMapFn` is specified.\n * @param {function?} errorCodeMapFn The function used to map error codes to the\n * trackedErrorCode. If not provided, the `.code` of errors will be used.\n */\n\n\n // Call `checkFailures` every `CHECK_INTERVAL_MS`.\n\n\n // Event IDs of failures that were tracked previously\n\n // Array of items of type DecryptionFailure. Every `CHECK_INTERVAL_MS`, this list\n // is checked for failures that happened > `GRACE_PERIOD_MS` ago. Those that did\n // are accumulated in `failureCounts`.\n function DecryptionFailureTracker(fn, errorCodeMapFn) {\n (0, _classCallCheck3.default)(this, DecryptionFailureTracker);\n this.failures = [];\n this.failureCounts = {\n // [errorCode]: 42\n };\n this.trackedEventHashMap = {\n // [eventId]: true\n };\n this.checkInterval = null;\n this.trackInterval = null;\n\n if (!fn || typeof fn !== 'function') {\n throw new Error('DecryptionFailureTracker requires tracking function');\n }\n\n if (errorCodeMapFn && typeof errorCodeMapFn !== 'function') {\n throw new Error('DecryptionFailureTracker second constructor argument should be a function');\n }\n\n this._trackDecryptionFailure = fn;\n this._mapErrorCode = errorCodeMapFn;\n }\n\n // loadTrackedEventHashMap() {\n // this.trackedEventHashMap = JSON.parse(localStorage.getItem('mx-decryption-failure-event-id-hashes')) || {};\n // }\n\n // saveTrackedEventHashMap() {\n // localStorage.setItem('mx-decryption-failure-event-id-hashes', JSON.stringify(this.trackedEventHashMap));\n // }\n\n // Give events a chance to be decrypted by waiting `GRACE_PERIOD_MS` before counting\n // the failure in `failureCounts`.\n\n\n // Spread the load on `Analytics` by tracking at a low frequency, `TRACK_INTERVAL_MS`.\n\n\n // Set to an interval ID when `start` is called\n\n\n // A histogram of the number of failures that will be tracked at the next tracking\n // interval, split by failure error code.\n\n\n (0, _createClass3.default)(DecryptionFailureTracker, [{\n key: 'eventDecrypted',\n value: function eventDecrypted(e, err) {\n if (err) {\n this.addDecryptionFailure(new DecryptionFailure(e.getId(), err.code));\n } else {\n // Could be an event in the failures, remove it\n this.removeDecryptionFailuresForEvent(e);\n }\n }\n }, {\n key: 'addDecryptionFailure',\n value: function addDecryptionFailure(failure) {\n this.failures.push(failure);\n }\n }, {\n key: 'removeDecryptionFailuresForEvent',\n value: function removeDecryptionFailuresForEvent(e) {\n this.failures = this.failures.filter(function (f) {\n return f.failedEventId !== e.getId();\n });\n }\n\n /**\n * Start checking for and tracking failures.\n */\n\n }, {\n key: 'start',\n value: function start() {\n var _this = this;\n\n this.checkInterval = setInterval(function () {\n return _this.checkFailures(Date.now());\n }, DecryptionFailureTracker.CHECK_INTERVAL_MS);\n\n this.trackInterval = setInterval(function () {\n return _this.trackFailures();\n }, DecryptionFailureTracker.TRACK_INTERVAL_MS);\n }\n\n /**\n * Clear state and stop checking for and tracking failures.\n */\n\n }, {\n key: 'stop',\n value: function stop() {\n clearInterval(this.checkInterval);\n clearInterval(this.trackInterval);\n\n this.failures = [];\n this.failureCounts = {};\n }\n\n /**\n * Mark failures that occured before nowTs - GRACE_PERIOD_MS as failures that should be\n * tracked. Only mark one failure per event ID.\n * @param {number} nowTs the timestamp that represents the time now.\n */\n\n }, {\n key: 'checkFailures',\n value: function checkFailures(nowTs) {\n var _this2 = this;\n\n var failuresGivenGrace = [];\n var failuresNotReady = [];\n while (this.failures.length > 0) {\n var f = this.failures.shift();\n if (nowTs > f.ts + DecryptionFailureTracker.GRACE_PERIOD_MS) {\n failuresGivenGrace.push(f);\n } else {\n failuresNotReady.push(f);\n }\n }\n this.failures = failuresNotReady;\n\n // Only track one failure per event\n var dedupedFailuresMap = failuresGivenGrace.reduce(function (map, failure) {\n if (!_this2.trackedEventHashMap[failure.failedEventId]) {\n return map.set(failure.failedEventId, failure);\n } else {\n return map;\n }\n },\n // Use a map to preseve key ordering\n new _map2.default());\n\n var trackedEventIds = [].concat((0, _toConsumableArray3.default)(dedupedFailuresMap.keys()));\n\n this.trackedEventHashMap = trackedEventIds.reduce(function (result, eventId) {\n return (0, _extends4.default)({}, result, (0, _defineProperty3.default)({}, eventId, true));\n }, this.trackedEventHashMap);\n\n // Commented out for now for expediency, we need to consider unbound nature of storing\n // this in localStorage\n // this.saveTrackedEventHashMap();\n\n var dedupedFailures = dedupedFailuresMap.values();\n\n this._aggregateFailures(dedupedFailures);\n }\n }, {\n key: '_aggregateFailures',\n value: function _aggregateFailures(failures) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(failures), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var failure = _step.value;\n\n var errorCode = failure.errorCode;\n this.failureCounts[errorCode] = (this.failureCounts[errorCode] || 0) + 1;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n\n /**\n * If there are failures that should be tracked, call the given trackDecryptionFailure\n * function with the number of failures that should be tracked.\n */\n\n }, {\n key: 'trackFailures',\n value: function trackFailures() {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(this.failureCounts)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var errorCode = _step2.value;\n\n if (this.failureCounts[errorCode] > 0) {\n var trackedErrorCode = this._mapErrorCode ? this._mapErrorCode(errorCode) : errorCode;\n\n this._trackDecryptionFailure(this.failureCounts[errorCode], trackedErrorCode);\n this.failureCounts[errorCode] = 0;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n }]);\n return DecryptionFailureTracker;\n}();\n\nDecryptionFailureTracker.TRACK_INTERVAL_MS = 60000;\nDecryptionFailureTracker.CHECK_INTERVAL_MS = 5000;\nDecryptionFailureTracker.GRACE_PERIOD_MS = 60000;\n//# sourceMappingURL=DecryptionFailureTracker.js.map","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.map');\nrequire('../modules/es7.map.to-json');\nrequire('../modules/es7.map.of');\nrequire('../modules/es7.map.from');\nmodule.exports = require('../modules/_core').Map;\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Map', { toJSON: require('./_collection-to-json')('Map') });\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\nrequire('./_set-collection-of')('Map');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\nrequire('./_set-collection-from')('Map');\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _maxSafeInteger = require('babel-runtime/core-js/number/max-safe-integer');\n\nvar _maxSafeInteger2 = _interopRequireDefault(_maxSafeInteger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction tsOfNewestEvent(room) {\n if (room.timeline.length) {\n return room.timeline[room.timeline.length - 1].getTs();\n } else {\n return _maxSafeInteger2.default;\n }\n}\n\nfunction mostRecentActivityFirst(roomList) {\n return roomList.sort(function (a, b) {\n return tsOfNewestEvent(b) - tsOfNewestEvent(a);\n });\n}\n\nmodule.exports = {\n mostRecentActivityFirst: mostRecentActivityFirst\n};\n//# sourceMappingURL=RoomListSorter.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nexports.showStartChatInviteDialog = showStartChatInviteDialog;\nexports.showRoomInviteDialog = showRoomInviteDialog;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _MultiInviter = require('./utils/MultiInviter');\n\nvar _MultiInviter2 = _interopRequireDefault(_MultiInviter);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _UserAddress = require('./UserAddress');\n\nvar _createRoom = require('./createRoom');\n\nvar _createRoom2 = _interopRequireDefault(_createRoom);\n\nvar _ = require('./');\n\nvar _2 = _interopRequireDefault(_);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _DMRoomMap = require('./utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Invites multiple addresses to a room\n * Simpler interface to utils/MultiInviter but with\n * no option to cancel.\n *\n * @param {string} roomId The ID of the room to invite to\n * @param {string[]} addrs Array of strings of addresses to invite. May be matrix IDs or 3pids.\n * @returns {Promise} Promise\n */\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction inviteMultipleToRoom(roomId, addrs) {\n var inviter = new _MultiInviter2.default(roomId);\n return inviter.invite(addrs).then(function (states) {\n return _promise2.default.resolve({ states: states, inviter: inviter });\n });\n}\n\nfunction showStartChatInviteDialog() {\n var AddressPickerDialog = _2.default.getComponent(\"dialogs.AddressPickerDialog\");\n _Modal2.default.createTrackedDialog('Start a chat', '', AddressPickerDialog, {\n title: (0, _languageHandler._t)('Start a chat'),\n description: (0, _languageHandler._t)(\"Who would you like to communicate with?\"),\n placeholder: (0, _languageHandler._t)(\"Email, name or matrix ID\"),\n validAddressTypes: ['mx-user-id', 'email'],\n button: (0, _languageHandler._t)(\"Start Chat\"),\n onFinished: _onStartChatFinished\n });\n}\n\nfunction showRoomInviteDialog(roomId) {\n var AddressPickerDialog = _2.default.getComponent(\"dialogs.AddressPickerDialog\");\n _Modal2.default.createTrackedDialog('Chat Invite', '', AddressPickerDialog, {\n title: (0, _languageHandler._t)('Invite new room members'),\n description: (0, _languageHandler._t)('Who would you like to add to this room?'),\n button: (0, _languageHandler._t)('Send Invites'),\n placeholder: (0, _languageHandler._t)(\"Email, name or matrix ID\"),\n onFinished: function onFinished(shouldInvite, addrs) {\n _onRoomInviteFinished(roomId, shouldInvite, addrs);\n }\n });\n}\n\nfunction _onStartChatFinished(shouldInvite, addrs) {\n if (!shouldInvite) return;\n\n var addrTexts = addrs.map(function (addr) {\n return addr.address;\n });\n\n if (_isDmChat(addrTexts)) {\n var rooms = _getDirectMessageRooms(addrTexts[0]);\n if (rooms.length > 0) {\n // A Direct Message room already exists for this user, so select a\n // room from a list that is similar to the one in MemberInfo panel\n var ChatCreateOrReuseDialog = _2.default.getComponent(\"views.dialogs.ChatCreateOrReuseDialog\");\n var close = _Modal2.default.createTrackedDialog('Create or Reuse', '', ChatCreateOrReuseDialog, {\n userId: addrTexts[0],\n onNewDMClick: function onNewDMClick() {\n _dispatcher2.default.dispatch({\n action: 'start_chat',\n user_id: addrTexts[0]\n });\n close(true);\n },\n onExistingRoomSelected: function onExistingRoomSelected(roomId) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: roomId\n });\n close(true);\n }\n }).close;\n } else {\n // Start a new DM chat\n (0, _createRoom2.default)({ dmUserId: addrTexts[0] }).catch(function (err) {\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite user', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite user\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n }\n } else if (addrTexts.length === 1) {\n // Start a new DM chat\n (0, _createRoom2.default)({ dmUserId: addrTexts[0] }).catch(function (err) {\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite user', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite user\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n } else {\n // Start multi user chat\n var room = void 0;\n (0, _createRoom2.default)().then(function (roomId) {\n room = _MatrixClientPeg2.default.get().getRoom(roomId);\n return inviteMultipleToRoom(roomId, addrTexts);\n }).then(function (result) {\n return _showAnyInviteErrors(result.states, room, result.inviter);\n }).catch(function (err) {\n console.error(err.stack);\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n }\n}\n\nfunction _onRoomInviteFinished(roomId, shouldInvite, addrs) {\n if (!shouldInvite) return;\n\n var addrTexts = addrs.map(function (addr) {\n return addr.address;\n });\n\n // Invite new users to a room\n inviteMultipleToRoom(roomId, addrTexts).then(function (result) {\n var room = _MatrixClientPeg2.default.get().getRoom(roomId);\n return _showAnyInviteErrors(result.states, room, result.inviter);\n }).catch(function (err) {\n console.error(err.stack);\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n}\n\nfunction _isDmChat(addrTexts) {\n if (addrTexts.length === 1 && (0, _UserAddress.getAddressType)(addrTexts[0]) === 'mx-user-id') {\n return true;\n } else {\n return false;\n }\n}\n\nfunction _showAnyInviteErrors(addrs, room, inviter) {\n // Show user any errors\n var failedUsers = (0, _keys2.default)(addrs).filter(function (a) {\n return addrs[a] === 'error';\n });\n if (failedUsers.length === 1 && inviter.fatal) {\n // Just get the first message because there was a fatal problem on the first\n // user. This usually means that no other users were attempted, making it\n // pointless for us to list who failed exactly.\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite users to the room', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite users to the room:\", { roomName: room.name }),\n description: inviter.getErrorText(failedUsers[0])\n });\n } else {\n var errorList = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(failedUsers), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var addr = _step.value;\n\n if (addrs[addr] === \"error\") {\n var reason = inviter.getErrorText(addr);\n errorList.push(addr + \": \" + reason);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (errorList.length > 0) {\n var _ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite the following users to the room', '', _ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite the following users to the %(roomName)s room:\", { roomName: room.name }),\n description: errorList.join(_react2.default.createElement('br', null))\n });\n }\n }\n\n return addrs;\n}\n\nfunction _getDirectMessageRooms(addr) {\n var dmRoomMap = new _DMRoomMap2.default(_MatrixClientPeg2.default.get());\n var dmRooms = dmRoomMap.getDMRoomsForUserId(addr);\n var rooms = dmRooms.filter(function (dmRoom) {\n var room = _MatrixClientPeg2.default.get().getRoom(dmRoom);\n if (room) {\n return room.getMyMembership() === 'join';\n }\n });\n return rooms;\n}\n//# sourceMappingURL=RoomInvite.js.map","\"use strict\";\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MatrixClientPeg = require(\"./MatrixClientPeg\");\nvar dis = require(\"./dispatcher\");\n\n// Time in ms after that a user is considered as unavailable/away\nvar UNAVAILABLE_TIME_MS = 3 * 60 * 1000; // 3 mins\nvar PRESENCE_STATES = [\"online\", \"offline\", \"unavailable\"];\n\nvar Presence = function () {\n function Presence() {\n (0, _classCallCheck3.default)(this, Presence);\n }\n\n (0, _createClass3.default)(Presence, [{\n key: \"start\",\n\n /**\n * Start listening the user activity to evaluate his presence state.\n * Any state change will be sent to the Home Server.\n */\n value: function start() {\n this.running = true;\n if (undefined === this.state) {\n this._resetTimer();\n this.dispatcherRef = dis.register(this._onAction.bind(this));\n }\n }\n\n /**\n * Stop tracking user activity\n */\n\n }, {\n key: \"stop\",\n value: function stop() {\n this.running = false;\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = undefined;\n dis.unregister(this.dispatcherRef);\n }\n this.state = undefined;\n }\n\n /**\n * Get the current presence state.\n * @returns {string} the presence state (see PRESENCE enum)\n */\n\n }, {\n key: \"getState\",\n value: function getState() {\n return this.state;\n }\n\n /**\n * Set the presence state.\n * If the state has changed, the Home Server will be notified.\n * @param {string} newState the new presence state (see PRESENCE enum)\n */\n\n }, {\n key: \"setState\",\n value: function setState(newState) {\n if (newState === this.state) {\n return;\n }\n if (PRESENCE_STATES.indexOf(newState) === -1) {\n throw new Error(\"Bad presence state: \" + newState);\n }\n if (!this.running) {\n return;\n }\n var old_state = this.state;\n this.state = newState;\n\n if (MatrixClientPeg.get().isGuest()) {\n return; // don't try to set presence when a guest; it won't work.\n }\n\n var self = this;\n MatrixClientPeg.get().setPresence(this.state).done(function () {\n console.log(\"Presence: %s\", newState);\n }, function (err) {\n console.error(\"Failed to set presence: %s\", err);\n self.state = old_state;\n });\n }\n\n /**\n * Callback called when the user made no action on the page for UNAVAILABLE_TIME ms.\n * @private\n */\n\n }, {\n key: \"_onUnavailableTimerFire\",\n value: function _onUnavailableTimerFire() {\n this.setState(\"unavailable\");\n }\n }, {\n key: \"_onAction\",\n value: function _onAction(payload) {\n if (payload.action === \"user_activity\") {\n this._resetTimer();\n }\n }\n\n /**\n * Callback called when the user made an action on the page\n * @private\n */\n\n }, {\n key: \"_resetTimer\",\n value: function _resetTimer() {\n var self = this;\n this.setState(\"online\");\n // Re-arm the timer\n clearTimeout(this.timer);\n this.timer = setTimeout(function () {\n self._onUnavailableTimerFire();\n }, UNAVAILABLE_TIME_MS);\n }\n }]);\n return Presence;\n}();\n\nmodule.exports = new Presence();\n//# sourceMappingURL=Presence.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _create = require('babel-runtime/core-js/object/create');\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar KeyRequestHandler = function () {\n function KeyRequestHandler(matrixClient) {\n (0, _classCallCheck3.default)(this, KeyRequestHandler);\n\n this._matrixClient = matrixClient;\n\n // the user/device for which we currently have a dialog open\n this._currentUser = null;\n this._currentDevice = null;\n\n // userId -> deviceId -> [keyRequest]\n this._pendingKeyRequests = (0, _create2.default)(null);\n }\n\n (0, _createClass3.default)(KeyRequestHandler, [{\n key: 'handleKeyRequest',\n value: function handleKeyRequest(keyRequest) {\n var userId = keyRequest.userId;\n var deviceId = keyRequest.deviceId;\n var requestId = keyRequest.requestId;\n\n if (!this._pendingKeyRequests[userId]) {\n this._pendingKeyRequests[userId] = (0, _create2.default)(null);\n }\n if (!this._pendingKeyRequests[userId][deviceId]) {\n this._pendingKeyRequests[userId][deviceId] = [];\n }\n\n // check if we already have this request\n var requests = this._pendingKeyRequests[userId][deviceId];\n if (requests.find(function (r) {\n return r.requestId === requestId;\n })) {\n console.log(\"Already have this key request, ignoring\");\n return;\n }\n\n requests.push(keyRequest);\n\n if (this._currentUser) {\n // ignore for now\n console.log(\"Key request, but we already have a dialog open\");\n return;\n }\n\n this._processNextRequest();\n }\n }, {\n key: 'handleKeyRequestCancellation',\n value: function handleKeyRequestCancellation(cancellation) {\n // see if we can find the request in the queue\n var userId = cancellation.userId;\n var deviceId = cancellation.deviceId;\n var requestId = cancellation.requestId;\n\n if (userId === this._currentUser && deviceId === this._currentDevice) {\n console.log(\"room key request cancellation for the user we currently have a\" + \" dialog open for\");\n // TODO: update the dialog. For now, we just ignore the\n // cancellation.\n return;\n }\n\n if (!this._pendingKeyRequests[userId]) {\n return;\n }\n var requests = this._pendingKeyRequests[userId][deviceId];\n if (!requests) {\n return;\n }\n var idx = requests.findIndex(function (r) {\n return r.requestId === requestId;\n });\n if (idx < 0) {\n return;\n }\n console.log(\"Forgetting room key request\");\n requests.splice(idx, 1);\n if (requests.length === 0) {\n delete this._pendingKeyRequests[userId][deviceId];\n if ((0, _keys2.default)(this._pendingKeyRequests[userId]).length === 0) {\n delete this._pendingKeyRequests[userId];\n }\n }\n }\n }, {\n key: '_processNextRequest',\n value: function _processNextRequest() {\n var _this = this;\n\n var userId = (0, _keys2.default)(this._pendingKeyRequests)[0];\n if (!userId) {\n return;\n }\n var deviceId = (0, _keys2.default)(this._pendingKeyRequests[userId])[0];\n if (!deviceId) {\n return;\n }\n console.log('Starting KeyShareDialog for ' + userId + ':' + deviceId);\n\n var finished = function finished(r) {\n _this._currentUser = null;\n _this._currentDevice = null;\n\n if (r) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(_this._pendingKeyRequests[userId][deviceId]), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var req = _step.value;\n\n req.share();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n delete _this._pendingKeyRequests[userId][deviceId];\n if ((0, _keys2.default)(_this._pendingKeyRequests[userId]).length === 0) {\n delete _this._pendingKeyRequests[userId];\n }\n\n _this._processNextRequest();\n };\n\n var KeyShareDialog = _index2.default.getComponent(\"dialogs.KeyShareDialog\");\n _Modal2.default.createTrackedDialog('Key Share', 'Process Next Request', KeyShareDialog, {\n matrixClient: this._matrixClient,\n userId: userId,\n deviceId: deviceId,\n onFinished: finished\n });\n this._currentUser = userId;\n this._currentDevice = deviceId;\n }\n }]);\n return KeyRequestHandler;\n}();\n\nexports.default = KeyRequestHandler;\nmodule.exports = exports['default'];\n//# sourceMappingURL=KeyRequestHandler.js.map","'use strict';\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _utils = require('flux/utils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar INITIAL_STATE = {\n deferred_action: null\n};\n\n/**\n * A class for storing application state to do with login/registration. This is a simple\n * flux store that listens for actions and updates its state accordingly, informing any\n * listeners (views) of state changes.\n */\n\nvar LifecycleStore = function (_Store) {\n (0, _inherits3.default)(LifecycleStore, _Store);\n\n function LifecycleStore() {\n (0, _classCallCheck3.default)(this, LifecycleStore);\n\n // Initialise state\n var _this = (0, _possibleConstructorReturn3.default)(this, (LifecycleStore.__proto__ || (0, _getPrototypeOf2.default)(LifecycleStore)).call(this, _dispatcher2.default));\n\n _this._state = INITIAL_STATE;\n return _this;\n }\n\n (0, _createClass3.default)(LifecycleStore, [{\n key: '_setState',\n value: function _setState(newState) {\n this._state = (0, _assign2.default)(this._state, newState);\n this.__emitChange();\n }\n }, {\n key: '__onDispatch',\n value: function __onDispatch(payload) {\n switch (payload.action) {\n case 'do_after_sync_prepared':\n this._setState({\n deferred_action: payload.deferred_action\n });\n break;\n case 'cancel_after_sync_prepared':\n this._setState({\n deferred_action: null\n });\n break;\n case 'sync_state':\n {\n if (payload.state !== 'PREPARED') {\n break;\n }\n if (!this._state.deferred_action) break;\n var deferredAction = (0, _assign2.default)({}, this._state.deferred_action);\n this._setState({\n deferred_action: null\n });\n _dispatcher2.default.dispatch(deferredAction);\n break;\n }\n case 'on_logged_out':\n this.reset();\n break;\n }\n }\n }, {\n key: 'reset',\n value: function reset() {\n this._state = (0, _assign2.default)({}, INITIAL_STATE);\n }\n }]);\n return LifecycleStore;\n}(_utils.Store);\n\nvar singletonLifecycleStore = null;\nif (!singletonLifecycleStore) {\n singletonLifecycleStore = new LifecycleStore();\n}\nmodule.exports = singletonLifecycleStore;\n//# sourceMappingURL=LifecycleStore.js.map","'use strict';\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _shouldHideEvent = require('../../shouldHideEvent');\n\nvar _shouldHideEvent2 = _interopRequireDefault(_shouldHideEvent);\n\nvar _DateUtils = require('../../DateUtils');\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar CONTINUATION_MAX_INTERVAL = 5 * 60 * 1000; // 5 minutes\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar continuedTypes = ['m.sticker', 'm.room.message'];\n\n/* (almost) stateless UI component which builds the event tiles in the room timeline.\n */\nmodule.exports = _react2.default.createClass({\n displayName: 'MessagePanel',\n\n propTypes: {\n // true to give the component a 'display: none' style.\n hidden: _propTypes2.default.bool,\n\n // true to show a spinner at the top of the timeline to indicate\n // back-pagination in progress\n backPaginating: _propTypes2.default.bool,\n\n // true to show a spinner at the end of the timeline to indicate\n // forward-pagination in progress\n forwardPaginating: _propTypes2.default.bool,\n\n // the list of MatrixEvents to display\n events: _propTypes2.default.array.isRequired,\n\n // ID of an event to highlight. If undefined, no event will be highlighted.\n highlightedEventId: _propTypes2.default.string,\n\n // Should we show URL Previews\n showUrlPreview: _propTypes2.default.bool,\n\n // event after which we should show a read marker\n readMarkerEventId: _propTypes2.default.string,\n\n // whether the read marker should be visible\n readMarkerVisible: _propTypes2.default.bool,\n\n // the userid of our user. This is used to suppress the read marker\n // for pending messages.\n ourUserId: _propTypes2.default.string,\n\n // true to suppress the date at the start of the timeline\n suppressFirstDateSeparator: _propTypes2.default.bool,\n\n // whether to show read receipts\n showReadReceipts: _propTypes2.default.bool,\n\n // true if updates to the event list should cause the scroll panel to\n // scroll down when we are at the bottom of the window. See ScrollPanel\n // for more details.\n stickyBottom: _propTypes2.default.bool,\n\n // callback which is called when the panel is scrolled.\n onScroll: _propTypes2.default.func,\n\n // callback which is called when more content is needed.\n onFillRequest: _propTypes2.default.func,\n\n // className for the panel\n className: _propTypes2.default.string.isRequired,\n\n // shape parameter to be passed to EventTiles\n tileShape: _propTypes2.default.string,\n\n // show twelve hour timestamps\n isTwelveHour: _propTypes2.default.bool,\n\n // show timestamps always\n alwaysShowTimestamps: _propTypes2.default.bool\n },\n\n componentWillMount: function componentWillMount() {\n // the event after which we put a visible unread marker on the last\n // render cycle; null if readMarkerVisible was false or the RM was\n // suppressed (eg because it was at the end of the timeline)\n this.currentReadMarkerEventId = null;\n\n // the event after which we are showing a disappearing read marker\n // animation\n this.currentGhostEventId = null;\n\n // opaque readreceipt info for each userId; used by ReadReceiptMarker\n // to manage its animations\n this._readReceiptMap = {};\n\n // Remember the read marker ghost node so we can do the cleanup that\n // Velocity requires\n this._readMarkerGhostNode = null;\n\n this._isMounted = true;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._isMounted = false;\n },\n\n /* get the DOM node representing the given event */\n getNodeForEventId: function getNodeForEventId(eventId) {\n if (!this.eventNodes) {\n return undefined;\n }\n\n return this.eventNodes[eventId];\n },\n\n /* return true if the content is fully scrolled down right now; else false.\n */\n isAtBottom: function isAtBottom() {\n return this.refs.scrollPanel && this.refs.scrollPanel.isAtBottom();\n },\n\n /* get the current scroll state. See ScrollPanel.getScrollState for\n * details.\n *\n * returns null if we are not mounted.\n */\n getScrollState: function getScrollState() {\n if (!this.refs.scrollPanel) {\n return null;\n }\n return this.refs.scrollPanel.getScrollState();\n },\n\n // returns one of:\n //\n // null: there is no read marker\n // -1: read marker is above the window\n // 0: read marker is within the window\n // +1: read marker is below the window\n getReadMarkerPosition: function getReadMarkerPosition() {\n var readMarker = this.refs.readMarkerNode;\n var messageWrapper = this.refs.scrollPanel;\n\n if (!readMarker || !messageWrapper) {\n return null;\n }\n\n var wrapperRect = _reactDom2.default.findDOMNode(messageWrapper).getBoundingClientRect();\n var readMarkerRect = readMarker.getBoundingClientRect();\n\n // the read-marker pretends to have zero height when it is actually\n // two pixels high; +2 here to account for that.\n if (readMarkerRect.bottom + 2 < wrapperRect.top) {\n return -1;\n } else if (readMarkerRect.top < wrapperRect.bottom) {\n return 0;\n } else {\n return 1;\n }\n },\n\n /* jump to the top of the content.\n */\n scrollToTop: function scrollToTop() {\n if (this.refs.scrollPanel) {\n this.refs.scrollPanel.scrollToTop();\n }\n },\n\n /* jump to the bottom of the content.\n */\n scrollToBottom: function scrollToBottom() {\n if (this.refs.scrollPanel) {\n this.refs.scrollPanel.scrollToBottom();\n }\n },\n\n /**\n * Page up/down.\n *\n * @param {number} mult: -1 to page up, +1 to page down\n */\n scrollRelative: function scrollRelative(mult) {\n if (this.refs.scrollPanel) {\n this.refs.scrollPanel.scrollRelative(mult);\n }\n },\n\n /**\n * Scroll up/down in response to a scroll key\n *\n * @param {KeyboardEvent} ev: the keyboard event to handle\n */\n handleScrollKey: function handleScrollKey(ev) {\n if (this.refs.scrollPanel) {\n this.refs.scrollPanel.handleScrollKey(ev);\n }\n },\n\n /* jump to the given event id.\n *\n * offsetBase gives the reference point for the pixelOffset. 0 means the\n * top of the container, 1 means the bottom, and fractional values mean\n * somewhere in the middle. If omitted, it defaults to 0.\n *\n * pixelOffset gives the number of pixels *above* the offsetBase that the\n * node (specifically, the bottom of it) will be positioned. If omitted, it\n * defaults to 0.\n */\n scrollToEvent: function scrollToEvent(eventId, pixelOffset, offsetBase) {\n if (this.refs.scrollPanel) {\n this.refs.scrollPanel.scrollToToken(eventId, pixelOffset, offsetBase);\n }\n },\n\n /* check the scroll state and send out pagination requests if necessary.\n */\n checkFillState: function checkFillState() {\n if (this.refs.scrollPanel) {\n this.refs.scrollPanel.checkFillState();\n }\n },\n\n _isUnmounting: function _isUnmounting() {\n return !this._isMounted;\n },\n\n // TODO: Implement granular (per-room) hide options\n _shouldShowEvent: function _shouldShowEvent(mxEv) {\n if (mxEv.sender && _MatrixClientPeg2.default.get().isUserIgnored(mxEv.sender.userId)) {\n return false; // ignored = no show (only happens if the ignore happens after an event was received)\n }\n\n var EventTile = _index2.default.getComponent('rooms.EventTile');\n if (!EventTile.haveTileForEvent(mxEv)) {\n return false; // no tile = no show\n }\n\n // Always show highlighted event\n if (this.props.highlightedEventId === mxEv.getId()) return true;\n\n return !(0, _shouldHideEvent2.default)(mxEv);\n },\n\n _getEventTiles: function _getEventTiles() {\n var _this = this;\n\n var DateSeparator = _index2.default.getComponent('messages.DateSeparator');\n var MemberEventListSummary = _index2.default.getComponent('views.elements.MemberEventListSummary');\n\n this.eventNodes = {};\n\n var visible = false;\n var i = void 0;\n\n // first figure out which is the last event in the list which we're\n // actually going to show; this allows us to behave slightly\n // differently for the last event in the list. (eg show timestamp)\n //\n // we also need to figure out which is the last event we show which isn't\n // a local echo, to manage the read-marker.\n var lastShownEvent = void 0;\n\n var lastShownNonLocalEchoIndex = -1;\n for (i = this.props.events.length - 1; i >= 0; i--) {\n var mxEv = this.props.events[i];\n if (!this._shouldShowEvent(mxEv)) {\n continue;\n }\n\n if (lastShownEvent === undefined) {\n lastShownEvent = mxEv;\n }\n\n if (mxEv.status) {\n // this is a local echo\n continue;\n }\n\n lastShownNonLocalEchoIndex = i;\n break;\n }\n\n var ret = [];\n\n var prevEvent = null; // the last event we showed\n\n // assume there is no read marker until proven otherwise\n var readMarkerVisible = false;\n\n // if the readmarker has moved, cancel any active ghost.\n if (this.currentReadMarkerEventId && this.props.readMarkerEventId && this.props.readMarkerVisible && this.currentReadMarkerEventId !== this.props.readMarkerEventId) {\n this.currentGhostEventId = null;\n }\n\n var isMembershipChange = function isMembershipChange(e) {\n return e.getType() === 'm.room.member';\n };\n\n for (i = 0; i < this.props.events.length; i++) {\n var _mxEv = this.props.events[i];\n var eventId = _mxEv.getId();\n var last = _mxEv === lastShownEvent;\n\n var wantTile = this._shouldShowEvent(_mxEv);\n\n // Wrap consecutive member events in a ListSummary, ignore if redacted\n if (isMembershipChange(_mxEv) && wantTile) {\n var readMarkerInMels = false;\n var ts1 = _mxEv.getTs();\n // Ensure that the key of the MemberEventListSummary does not change with new\n // member events. This will prevent it from being re-created unnecessarily, and\n // instead will allow new props to be provided. In turn, the shouldComponentUpdate\n // method on MELS can be used to prevent unnecessary renderings.\n //\n // Whilst back-paginating with a MELS at the top of the panel, prevEvent will be null,\n // so use the key \"membereventlistsummary-initial\". Otherwise, use the ID of the first\n // membership event, which will not change during forward pagination.\n var key = \"membereventlistsummary-\" + (prevEvent ? _mxEv.getId() : \"initial\");\n\n if (this._wantsDateSeparator(prevEvent, _mxEv.getDate())) {\n var dateSeparator = _react2.default.createElement(\n 'li',\n { key: ts1 + '~' },\n _react2.default.createElement(DateSeparator, { key: ts1 + '~', ts: ts1 })\n );\n ret.push(dateSeparator);\n }\n\n // If RM event is the first in the MELS, append the RM after MELS\n if (_mxEv.getId() === this.props.readMarkerEventId) {\n readMarkerInMels = true;\n }\n\n var summarisedEvents = [_mxEv];\n for (; i + 1 < this.props.events.length; i++) {\n var collapsedMxEv = this.props.events[i + 1];\n\n // Ignore redacted/hidden member events\n if (!this._shouldShowEvent(collapsedMxEv)) {\n // If this hidden event is the RM and in or at end of a MELS put RM after MELS.\n if (collapsedMxEv.getId() === this.props.readMarkerEventId) {\n readMarkerInMels = true;\n }\n continue;\n }\n\n if (!isMembershipChange(collapsedMxEv) || this._wantsDateSeparator(_mxEv, collapsedMxEv.getDate())) {\n break;\n }\n\n // If RM event is in MELS mark it as such and the RM will be appended after MELS.\n if (collapsedMxEv.getId() === this.props.readMarkerEventId) {\n readMarkerInMels = true;\n }\n\n summarisedEvents.push(collapsedMxEv);\n }\n\n var highlightInMels = false;\n\n // At this point, i = the index of the last event in the summary sequence\n var eventTiles = summarisedEvents.map(function (e) {\n if (e.getId() === _this.props.highlightedEventId) {\n highlightInMels = true;\n }\n // In order to prevent DateSeparators from appearing in the expanded form\n // of MemberEventListSummary, render each member event as if the previous\n // one was itself. This way, the timestamp of the previous event === the\n // timestamp of the current event, and no DateSeperator is inserted.\n return _this._getTilesForEvent(e, e, e === lastShownEvent);\n }).reduce(function (a, b) {\n return a.concat(b);\n });\n\n if (eventTiles.length === 0) {\n eventTiles = null;\n }\n\n ret.push(_react2.default.createElement(\n MemberEventListSummary,\n { key: key,\n events: summarisedEvents,\n onToggle: this._onWidgetLoad // Update scroll state\n , startExpanded: highlightInMels\n },\n eventTiles\n ));\n\n if (readMarkerInMels) {\n ret.push(this._getReadMarkerTile(visible));\n }\n\n prevEvent = _mxEv;\n continue;\n }\n\n if (wantTile) {\n // make sure we unpack the array returned by _getTilesForEvent,\n // otherwise react will auto-generate keys and we will end up\n // replacing all of the DOM elements every time we paginate.\n ret.push.apply(ret, (0, _toConsumableArray3.default)(this._getTilesForEvent(prevEvent, _mxEv, last)));\n prevEvent = _mxEv;\n }\n\n var isVisibleReadMarker = false;\n\n if (eventId === this.props.readMarkerEventId) {\n visible = this.props.readMarkerVisible;\n\n // if the read marker comes at the end of the timeline (except\n // for local echoes, which are excluded from RMs, because they\n // don't have useful event ids), we don't want to show it, but\n // we still want to create the <li/> for it so that the\n // algorithms which depend on its position on the screen aren't\n // confused.\n if (i >= lastShownNonLocalEchoIndex) {\n visible = false;\n }\n ret.push(this._getReadMarkerTile(visible));\n readMarkerVisible = visible;\n isVisibleReadMarker = visible;\n }\n\n // XXX: there should be no need for a ghost tile - we should just use a\n // a dispatch (user_activity_end) to start the RM animation.\n if (eventId === this.currentGhostEventId) {\n // if we're showing an animation, continue to show it.\n ret.push(this._getReadMarkerGhostTile());\n } else if (!isVisibleReadMarker && eventId === this.currentReadMarkerEventId) {\n // there is currently a read-up-to marker at this point, but no\n // more. Show an animation of it disappearing.\n ret.push(this._getReadMarkerGhostTile());\n this.currentGhostEventId = eventId;\n }\n }\n\n this.currentReadMarkerEventId = readMarkerVisible ? this.props.readMarkerEventId : null;\n return ret;\n },\n\n _getTilesForEvent: function _getTilesForEvent(prevEvent, mxEv, last) {\n var EventTile = _index2.default.getComponent('rooms.EventTile');\n var DateSeparator = _index2.default.getComponent('messages.DateSeparator');\n var ret = [];\n\n // is this a continuation of the previous message?\n var continuation = false;\n\n // Some events should appear as continuations from previous events of\n // different types.\n\n var eventTypeContinues = prevEvent !== null && continuedTypes.includes(mxEv.getType()) && continuedTypes.includes(prevEvent.getType());\n\n // if there is a previous event and it has the same sender as this event\n // and the types are the same/is in continuedTypes and the time between them is <= CONTINUATION_MAX_INTERVAL\n if (prevEvent !== null && prevEvent.sender && mxEv.sender && mxEv.sender.userId === prevEvent.sender.userId && (mxEv.getType() === prevEvent.getType() || eventTypeContinues) && mxEv.getTs() - prevEvent.getTs() <= CONTINUATION_MAX_INTERVAL) {\n continuation = true;\n }\n\n /*\n // Work out if this is still a continuation, as we are now showing commands\n // and /me messages with their own little avatar. The case of a change of\n // event type (commands) is handled above, but we need to handle the /me\n // messages seperately as they have a msgtype of 'm.emote' but are classed\n // as normal messages\n if (prevEvent !== null && prevEvent.sender && mxEv.sender\n && mxEv.sender.userId === prevEvent.sender.userId\n && mxEv.getType() == prevEvent.getType()\n && prevEvent.getContent().msgtype === 'm.emote') {\n continuation = false;\n }\n */\n\n // local echoes have a fake date, which could even be yesterday. Treat them\n // as 'today' for the date separators.\n var ts1 = mxEv.getTs();\n var eventDate = mxEv.getDate();\n if (mxEv.status) {\n eventDate = new Date();\n ts1 = eventDate.getTime();\n }\n\n // do we need a date separator since the last event?\n if (this._wantsDateSeparator(prevEvent, eventDate)) {\n var dateSeparator = _react2.default.createElement(\n 'li',\n { key: ts1 },\n _react2.default.createElement(DateSeparator, { key: ts1, ts: ts1 })\n );\n ret.push(dateSeparator);\n continuation = false;\n }\n\n var eventId = mxEv.getId();\n var highlight = eventId === this.props.highlightedEventId;\n\n // we can't use local echoes as scroll tokens, because their event IDs change.\n // Local echos have a send \"status\".\n var scrollToken = mxEv.status ? undefined : eventId;\n\n var readReceipts = void 0;\n if (this.props.showReadReceipts) {\n readReceipts = this._getReadReceiptsForEvent(mxEv);\n }\n ret.push(_react2.default.createElement(\n 'li',\n { key: eventId,\n ref: this._collectEventNode.bind(this, eventId),\n 'data-scroll-tokens': scrollToken },\n _react2.default.createElement(EventTile, { mxEvent: mxEv, continuation: continuation,\n isRedacted: mxEv.isRedacted(),\n onWidgetLoad: this._onWidgetLoad,\n readReceipts: readReceipts,\n readReceiptMap: this._readReceiptMap,\n showUrlPreview: this.props.showUrlPreview,\n checkUnmounting: this._isUnmounting,\n eventSendStatus: mxEv.status,\n tileShape: this.props.tileShape,\n isTwelveHour: this.props.isTwelveHour,\n last: last, isSelectedEvent: highlight })\n ));\n\n return ret;\n },\n\n _wantsDateSeparator: function _wantsDateSeparator(prevEvent, nextEventDate) {\n if (prevEvent == null) {\n // first event in the panel: depends if we could back-paginate from\n // here.\n return !this.props.suppressFirstDateSeparator;\n }\n return (0, _DateUtils.wantsDateSeparator)(prevEvent.getDate(), nextEventDate);\n },\n\n // get a list of read receipts that should be shown next to this event\n // Receipts are objects which have a 'userId', 'roomMember' and 'ts'.\n _getReadReceiptsForEvent: function _getReadReceiptsForEvent(event) {\n var myUserId = _MatrixClientPeg2.default.get().credentials.userId;\n\n // get list of read receipts, sorted most recent first\n var room = _MatrixClientPeg2.default.get().getRoom(event.getRoomId());\n if (!room) {\n return null;\n }\n var receipts = [];\n room.getReceiptsForEvent(event).forEach(function (r) {\n if (!r.userId || r.type !== \"m.read\" || r.userId === myUserId) {\n return; // ignore non-read receipts and receipts from self.\n }\n if (_MatrixClientPeg2.default.get().isUserIgnored(r.userId)) {\n return; // ignore ignored users\n }\n var member = room.getMember(r.userId);\n receipts.push({\n userId: r.userId,\n roomMember: member,\n ts: r.data ? r.data.ts : 0\n });\n });\n\n return receipts.sort(function (r1, r2) {\n return r2.ts - r1.ts;\n });\n },\n\n _getReadMarkerTile: function _getReadMarkerTile(visible) {\n var hr = void 0;\n if (visible) {\n hr = _react2.default.createElement('hr', { className: 'mx_RoomView_myReadMarker',\n style: { opacity: 1, width: '99%' }\n });\n }\n\n return _react2.default.createElement(\n 'li',\n { key: '_readupto', ref: 'readMarkerNode',\n className: 'mx_RoomView_myReadMarker_container' },\n hr\n );\n },\n\n _startAnimation: function _startAnimation(ghostNode) {\n if (this._readMarkerGhostNode) {\n Velocity.Utilities.removeData(this._readMarkerGhostNode);\n }\n this._readMarkerGhostNode = ghostNode;\n\n if (ghostNode) {\n Velocity(ghostNode, { opacity: '0', width: '10%' }, { duration: 400, easing: 'easeInSine',\n delay: 1000 });\n }\n },\n\n _getReadMarkerGhostTile: function _getReadMarkerGhostTile() {\n var hr = _react2.default.createElement('hr', { className: 'mx_RoomView_myReadMarker',\n style: { opacity: 1, width: '99%' },\n ref: this._startAnimation\n });\n\n // give it a key which depends on the event id. That will ensure that\n // we get a new DOM node (restarting the animation) when the ghost\n // moves to a different event.\n return _react2.default.createElement(\n 'li',\n { key: \"_readuptoghost_\" + this.currentGhostEventId,\n className: 'mx_RoomView_myReadMarker_container' },\n hr\n );\n },\n\n _collectEventNode: function _collectEventNode(eventId, node) {\n this.eventNodes[eventId] = node;\n },\n\n // once dynamic content in the events load, make the scrollPanel check the\n // scroll offsets.\n _onWidgetLoad: function _onWidgetLoad() {\n var scrollPanel = this.refs.scrollPanel;\n if (scrollPanel) {\n scrollPanel.forceUpdate();\n }\n },\n\n onResize: function onResize() {\n _dispatcher2.default.dispatch({ action: 'timeline_resize' }, true);\n },\n\n render: function render() {\n var ScrollPanel = _index2.default.getComponent(\"structures.ScrollPanel\");\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n var topSpinner = void 0;\n var bottomSpinner = void 0;\n if (this.props.backPaginating) {\n topSpinner = _react2.default.createElement(\n 'li',\n { key: '_topSpinner' },\n _react2.default.createElement(Spinner, null)\n );\n }\n if (this.props.forwardPaginating) {\n bottomSpinner = _react2.default.createElement(\n 'li',\n { key: '_bottomSpinner' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n var style = this.props.hidden ? { display: 'none' } : {};\n\n var className = (0, _classnames2.default)(this.props.className, {\n \"mx_MessagePanel_alwaysShowTimestamps\": this.props.alwaysShowTimestamps\n });\n\n return _react2.default.createElement(\n ScrollPanel,\n { ref: 'scrollPanel', className: className,\n onScroll: this.props.onScroll,\n onResize: this.onResize,\n onFillRequest: this.props.onFillRequest,\n onUnfillRequest: this.props.onUnfillRequest,\n style: style,\n stickyBottom: this.props.stickyBottom },\n topSpinner,\n this._getEventTiles(),\n bottomSpinner\n );\n }\n});\n//# sourceMappingURL=MessagePanel.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _withMatrixClient = require('../../wrappers/withMatrixClient');\n\nvar _withMatrixClient2 = _interopRequireDefault(_withMatrixClient);\n\nvar _AccessibleButton = require('../views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _withMatrixClient2.default)(_react2.default.createClass({\n displayName: 'MyGroups',\n\n propTypes: {\n matrixClient: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n groups: null,\n error: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._fetch();\n },\n\n _onCreateGroupClick: function _onCreateGroupClick() {\n _dispatcher2.default.dispatch({ action: 'view_create_group' });\n },\n\n _fetch: function _fetch() {\n var _this = this;\n\n this.props.matrixClient.getJoinedGroups().done(function (result) {\n _this.setState({ groups: result.groups, error: null });\n }, function (err) {\n if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN') {\n // Indicate that the guest isn't in any groups (which should be true)\n _this.setState({ groups: [], error: null });\n return;\n }\n _this.setState({ groups: null, error: err });\n });\n },\n\n render: function render() {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n var SimpleRoomHeader = _index2.default.getComponent('rooms.SimpleRoomHeader');\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var GroupTile = _index2.default.getComponent(\"groups.GroupTile\");\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n\n var content = void 0;\n var contentHeader = void 0;\n if (this.state.groups) {\n var groupNodes = [];\n this.state.groups.forEach(function (g) {\n groupNodes.push(_react2.default.createElement(GroupTile, { key: g, groupId: g }));\n });\n contentHeader = groupNodes.length > 0 ? _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Your Communities')\n ) : _react2.default.createElement('div', null);\n content = groupNodes.length > 0 ? _react2.default.createElement(\n GeminiScrollbarWrapper,\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_microcopy' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Did you know: you can use communities to filter your Riot.im experience!\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"To set up a filter, drag a community avatar over to the filter panel on \" + \"the far left hand side of the screen. You can click on an avatar in the \" + \"filter panel at any time to see only the rooms and people associated \" + \"with that community.\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_joinedGroups' },\n groupNodes\n )\n ) : _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_placeholder' },\n (0, _languageHandler._t)(\"You're not currently a member of any communities.\")\n );\n } else if (this.state.error) {\n content = _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_error' },\n (0, _languageHandler._t)('Error whilst fetching joined communities')\n );\n } else {\n content = _react2.default.createElement(Loader, null);\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups' },\n _react2.default.createElement(SimpleRoomHeader, { title: (0, _languageHandler._t)(\"Communities\"), icon: 'img/icons-groups.svg' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_header' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_headerCard' },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MyGroups_headerCard_button', onClick: this._onCreateGroupClick },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-create-room.svg', width: '50', height: '50' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_headerCard_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_headerCard_header' },\n (0, _languageHandler._t)('Create a new community')\n ),\n (0, _languageHandler._t)('Create a community to group together users and rooms! ' + 'Build a custom homepage to mark out your space in the Matrix universe.')\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_content' },\n contentHeader,\n content\n )\n );\n }\n})); /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=MyGroups.js.map","'use strict';\n\nvar _languageHandler = require('../../languageHandler');\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require('react');\nvar ReactDOM = require(\"react-dom\");\n\nvar Matrix = require(\"matrix-js-sdk\");\nvar sdk = require('../../index');\nvar MatrixClientPeg = require(\"../../MatrixClientPeg\");\nvar dis = require(\"../../dispatcher\");\n\n/*\n * Component which shows the global notification list using a TimelinePanel\n */\nvar NotificationPanel = React.createClass({\n displayName: 'NotificationPanel',\n\n propTypes: {},\n\n render: function render() {\n // wrap a TimelinePanel with the jump-to-event bits turned off.\n var TimelinePanel = sdk.getComponent(\"structures.TimelinePanel\");\n var Loader = sdk.getComponent(\"elements.Spinner\");\n\n var timelineSet = MatrixClientPeg.get().getNotifTimelineSet();\n if (timelineSet) {\n return React.createElement(TimelinePanel, { key: \"NotificationPanel_\" + this.props.roomId,\n className: 'mx_NotificationPanel',\n manageReadReceipts: false,\n manageReadMarkers: false,\n timelineSet: timelineSet,\n showUrlPreview: false,\n tileShape: 'notif',\n empty: (0, _languageHandler._t)('You have no visible notifications')\n });\n } else {\n console.error(\"No notifTimelineSet available!\");\n return React.createElement(\n 'div',\n { className: 'mx_NotificationPanel' },\n React.createElement(Loader, null)\n );\n }\n }\n});\n\nmodule.exports = NotificationPanel;\n//# sourceMappingURL=NotificationPanel.js.map","'use strict';\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _Analytics = require('../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _ratelimitedfunc = require('../../ratelimitedfunc');\n\nvar _ratelimitedfunc2 = _interopRequireDefault(_ratelimitedfunc);\n\nvar _AccessibleButton = require('../../components/views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _GroupAddressPicker = require('../../GroupAddressPicker');\n\nvar _GroupStore = require('../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _FormattingUtils = require('../../utils/FormattingUtils');\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar HeaderButton = function (_React$Component) {\n (0, _inherits3.default)(HeaderButton, _React$Component);\n\n function HeaderButton() {\n (0, _classCallCheck3.default)(this, HeaderButton);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (HeaderButton.__proto__ || (0, _getPrototypeOf2.default)(HeaderButton)).call(this));\n\n _this.onClick = _this.onClick.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(HeaderButton, [{\n key: 'onClick',\n value: function onClick(ev) {\n _Analytics2.default.trackEvent.apply(_Analytics2.default, (0, _toConsumableArray3.default)(this.props.analytics));\n _dispatcher2.default.dispatch({\n action: 'view_right_panel_phase',\n phase: this.props.clickPhase\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var AccessibleButton = _index2.default.getComponent(\"elements.AccessibleButton\");\n\n // XXX: We really shouldn't be hardcoding colors here, but the way TintableSvg\n // works kinda prevents us from using normal CSS tactics. We use $warning-color\n // here.\n // Note: This array gets passed along to the Tinter's forceColors eventually.\n var tintableColors = this.props.badgeHighlight ? [\"#ff0064\"] : null;\n\n var classNames = [\"mx_RightPanel_headerButton\"];\n if (this.props.badgeHighlight) classNames.push(\"mx_RightPanel_headerButton_badgeHighlight\");\n\n return _react2.default.createElement(\n AccessibleButton,\n {\n 'aria-label': this.props.title,\n 'aria-expanded': this.props.isHighlighted,\n title: this.props.title,\n className: classNames.join(\" \"),\n onClick: this.onClick },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_headerButton_badge' },\n this.props.badge ? this.props.badge : _react2.default.createElement(\n 'span',\n null,\n '\\xA0'\n )\n ),\n _react2.default.createElement(TintableSvg, { src: this.props.iconSrc, width: '25', height: '25', forceColors: tintableColors }),\n this.props.isHighlighted ? _react2.default.createElement('div', { className: 'mx_RightPanel_headerButton_highlight' }) : _react2.default.createElement('div', null)\n );\n }\n }]);\n return HeaderButton;\n}(_react2.default.Component);\n\nHeaderButton.propTypes = {\n // Whether this button is highlighted\n isHighlighted: _propTypes2.default.bool.isRequired,\n // The phase to swap to when the button is clicked\n clickPhase: _propTypes2.default.string.isRequired,\n // The source file of the icon to display\n iconSrc: _propTypes2.default.string.isRequired,\n\n // The badge to display above the icon\n badge: _propTypes2.default.node,\n badgeHighlight: _propTypes2.default.bool,\n // The parameters to track the click event\n analytics: _propTypes2.default.arrayOf(_propTypes2.default.string).isRequired,\n\n // Button title\n title: _propTypes2.default.string.isRequired\n};\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RightPanel',\n\n propTypes: {\n // TODO: We're trying to move away from these being props, but we need to know\n // whether we should be displaying a room or group member list\n roomId: _react2.default.PropTypes.string, // if showing panels for a given room, this is set\n groupId: _react2.default.PropTypes.string, // if showing panels for a given group, this is set\n collapsed: _react2.default.PropTypes.bool // currently unused property to request for a minimized view of the panel\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n Phase: {\n RoomMemberList: 'RoomMemberList',\n GroupMemberList: 'GroupMemberList',\n GroupRoomList: 'GroupRoomList',\n GroupRoomInfo: 'GroupRoomInfo',\n FilePanel: 'FilePanel',\n NotificationPanel: 'NotificationPanel',\n RoomMemberInfo: 'RoomMemberInfo',\n GroupMemberInfo: 'GroupMemberInfo'\n },\n\n componentWillMount: function componentWillMount() {\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n var cli = this.context.matrixClient;\n cli.on(\"RoomState.members\", this.onRoomStateMember);\n this._initGroupStore(this.props.groupId);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n if (this.context.matrixClient) {\n this.context.matrixClient.removeListener(\"RoomState.members\", this.onRoomStateMember);\n }\n this._unregisterGroupStore(this.props.groupId);\n },\n\n getInitialState: function getInitialState() {\n return {\n phase: this.props.groupId ? this.Phase.GroupMemberList : this.Phase.RoomMemberList,\n isUserPrivilegedInGroup: null\n };\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n if (newProps.groupId !== this.props.groupId) {\n this._unregisterGroupStore(this.props.groupId);\n this._initGroupStore(newProps.groupId);\n }\n },\n _initGroupStore: function _initGroupStore(groupId) {\n if (!groupId) return;\n _GroupStore2.default.registerListener(groupId, this.onGroupStoreUpdated);\n },\n _unregisterGroupStore: function _unregisterGroupStore() {\n _GroupStore2.default.unregisterListener(this.onGroupStoreUpdated);\n },\n\n\n onGroupStoreUpdated: function onGroupStoreUpdated() {\n this.setState({\n isUserPrivilegedInGroup: _GroupStore2.default.isUserPrivileged(this.props.groupId)\n });\n },\n\n onCollapseClick: function onCollapseClick() {\n _dispatcher2.default.dispatch({\n action: 'hide_right_panel'\n });\n },\n\n onInviteButtonClick: function onInviteButtonClick() {\n if (this.context.matrixClient.isGuest()) {\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n return;\n }\n\n // call AddressPickerDialog\n _dispatcher2.default.dispatch({\n action: 'view_invite',\n roomId: this.props.roomId\n });\n },\n\n onInviteToGroupButtonClick: function onInviteToGroupButtonClick() {\n var _this2 = this;\n\n (0, _GroupAddressPicker.showGroupInviteDialog)(this.props.groupId).then(function () {\n _this2.setState({\n phase: _this2.Phase.GroupMemberList\n });\n });\n },\n\n onAddRoomToGroupButtonClick: function onAddRoomToGroupButtonClick() {\n var _this3 = this;\n\n (0, _GroupAddressPicker.showGroupAddRoomDialog)(this.props.groupId).then(function () {\n _this3.forceUpdate();\n });\n },\n\n onRoomStateMember: function onRoomStateMember(ev, state, member) {\n if (member.roomId !== this.props.roomId) {\n return;\n }\n // redraw the badge on the membership list\n if (this.state.phase === this.Phase.RoomMemberList && member.roomId === this.props.roomId) {\n this._delayedUpdate();\n } else if (this.state.phase === this.Phase.RoomMemberInfo && member.roomId === this.props.roomId && member.userId === this.state.member.userId) {\n // refresh the member info (e.g. new power level)\n this._delayedUpdate();\n }\n },\n\n _delayedUpdate: new _ratelimitedfunc2.default(function () {\n this.forceUpdate(); // eslint-disable-line babel/no-invalid-this\n }, 500),\n\n onAction: function onAction(payload) {\n if (payload.action === \"event_notification\") {\n // Try and re-caclulate any badge counts we might have\n this.forceUpdate();\n } else if (payload.action === \"view_user\") {\n _dispatcher2.default.dispatch({\n action: 'show_right_panel'\n });\n if (payload.member) {\n this.setState({\n phase: this.Phase.RoomMemberInfo,\n member: payload.member\n });\n } else {\n if (this.props.roomId) {\n this.setState({\n phase: this.Phase.RoomMemberList\n });\n } else if (this.props.groupId) {\n this.setState({\n phase: this.Phase.GroupMemberList,\n member: payload.member\n });\n }\n }\n } else if (payload.action === \"view_group\") {\n this.setState({\n phase: this.Phase.GroupMemberList,\n member: null\n });\n } else if (payload.action === \"view_group_room\") {\n this.setState({\n phase: this.Phase.GroupRoomInfo,\n groupRoomId: payload.groupRoomId\n });\n } else if (payload.action === \"view_group_room_list\") {\n this.setState({\n phase: this.Phase.GroupRoomList\n });\n } else if (payload.action === \"view_group_member_list\") {\n this.setState({\n phase: this.Phase.GroupMemberList\n });\n } else if (payload.action === \"view_group_user\") {\n this.setState({\n phase: this.Phase.GroupMemberInfo,\n member: payload.member\n });\n } else if (payload.action === \"view_room\") {\n this.setState({\n phase: this.Phase.RoomMemberList\n });\n } else if (payload.action === \"view_right_panel_phase\") {\n this.setState({\n phase: payload.phase\n });\n }\n },\n\n render: function render() {\n var MemberList = _index2.default.getComponent('rooms.MemberList');\n var MemberInfo = _index2.default.getComponent('rooms.MemberInfo');\n var NotificationPanel = _index2.default.getComponent('structures.NotificationPanel');\n var FilePanel = _index2.default.getComponent('structures.FilePanel');\n\n var GroupMemberList = _index2.default.getComponent('groups.GroupMemberList');\n var GroupMemberInfo = _index2.default.getComponent('groups.GroupMemberInfo');\n var GroupRoomList = _index2.default.getComponent('groups.GroupRoomList');\n var GroupRoomInfo = _index2.default.getComponent('groups.GroupRoomInfo');\n\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n\n var inviteGroup = void 0;\n\n var membersBadge = void 0;\n var membersTitle = (0, _languageHandler._t)('Members');\n if ((this.state.phase === this.Phase.RoomMemberList || this.state.phase === this.Phase.RoomMemberInfo) && this.props.roomId) {\n var cli = this.context.matrixClient;\n var room = cli.getRoom(this.props.roomId);\n var isUserInRoom = void 0;\n if (room) {\n var numMembers = room.getJoinedMemberCount();\n membersTitle = (0, _languageHandler._t)('%(count)s Members', { count: numMembers });\n membersBadge = _react2.default.createElement(\n 'div',\n { title: membersTitle },\n (0, _FormattingUtils.formatCount)(numMembers)\n );\n isUserInRoom = room.hasMembershipState(this.context.matrixClient.credentials.userId, 'join');\n }\n\n if (isUserInRoom) {\n inviteGroup = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RightPanel_invite', onClick: this.onInviteButtonClick },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_icon' },\n _react2.default.createElement(TintableSvg, { src: 'img/icon-invite-people.svg', width: '35', height: '35' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_message' },\n (0, _languageHandler._t)('Invite to this room')\n )\n );\n }\n }\n\n var isPhaseGroup = [this.Phase.GroupMemberInfo, this.Phase.GroupMemberList].includes(this.state.phase);\n\n var headerButtons = [];\n if (this.props.roomId) {\n var notifCountBadge = void 0;\n var notifCount = 0;\n _MatrixClientPeg2.default.get().getRooms().forEach(function (r) {\n return notifCount += r.getUnreadNotificationCount('highlight') || 0;\n });\n if (notifCount > 0) {\n var title = (0, _languageHandler._t)(\"%(count)s Notifications\", { count: (0, _FormattingUtils.formatCount)(notifCount) });\n notifCountBadge = _react2.default.createElement(\n 'div',\n { title: title },\n (0, _FormattingUtils.formatCount)(notifCount)\n );\n }\n\n headerButtons = [_react2.default.createElement(HeaderButton, { key: '_membersButton', title: membersTitle, iconSrc: 'img/icons-people.svg',\n isHighlighted: [this.Phase.RoomMemberList, this.Phase.RoomMemberInfo].includes(this.state.phase),\n clickPhase: this.Phase.RoomMemberList,\n badge: membersBadge,\n analytics: ['Right Panel', 'Member List Button', 'click']\n }), _react2.default.createElement(HeaderButton, { key: '_filesButton', title: (0, _languageHandler._t)('Files'), iconSrc: 'img/icons-files.svg',\n isHighlighted: this.state.phase === this.Phase.FilePanel,\n clickPhase: this.Phase.FilePanel,\n analytics: ['Right Panel', 'File List Button', 'click']\n }), _react2.default.createElement(HeaderButton, { key: '_notifsButton', title: (0, _languageHandler._t)('Notifications'), iconSrc: 'img/icons-notifications.svg',\n isHighlighted: this.state.phase === this.Phase.NotificationPanel,\n clickPhase: this.Phase.NotificationPanel,\n badge: notifCountBadge, badgeHighlight: notifCount > 0,\n analytics: ['Right Panel', 'Notification List Button', 'click']\n })];\n } else if (this.props.groupId) {\n headerButtons = [_react2.default.createElement(HeaderButton, { key: '_groupMembersButton', title: (0, _languageHandler._t)('Members'), iconSrc: 'img/icons-people.svg',\n isHighlighted: isPhaseGroup,\n clickPhase: this.Phase.GroupMemberList,\n analytics: ['Right Panel', 'Group Member List Button', 'click']\n }), _react2.default.createElement(HeaderButton, { key: '_roomsButton', title: (0, _languageHandler._t)('Rooms'), iconSrc: 'img/icons-room.svg',\n isHighlighted: [this.Phase.GroupRoomList, this.Phase.GroupRoomInfo].includes(this.state.phase),\n clickPhase: this.Phase.GroupRoomList,\n analytics: ['Right Panel', 'Group Room List Button', 'click']\n })];\n }\n\n if (this.props.roomId || this.props.groupId) {\n // Hiding the right panel hides it completely and relies on an 'expand' button\n // being put in the RoomHeader or GroupView header, so only show the minimise\n // button on these 2 screens or you won't be able to re-expand the panel.\n headerButtons.push(_react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RightPanel_headerButton mx_RightPanel_collapsebutton', key: '_minimizeButton',\n title: (0, _languageHandler._t)(\"Hide panel\"), 'aria-label': (0, _languageHandler._t)(\"Hide panel\"), onClick: this.onCollapseClick\n },\n _react2.default.createElement(TintableSvg, { src: 'img/minimise.svg', width: '10', height: '16', alt: '' })\n ));\n }\n\n var panel = _react2.default.createElement('div', null);\n if (!this.props.collapsed) {\n if (this.props.roomId && this.state.phase === this.Phase.RoomMemberList) {\n panel = _react2.default.createElement(MemberList, { roomId: this.props.roomId, key: this.props.roomId });\n } else if (this.props.groupId && this.state.phase === this.Phase.GroupMemberList) {\n panel = _react2.default.createElement(GroupMemberList, { groupId: this.props.groupId, key: this.props.groupId });\n } else if (this.state.phase === this.Phase.GroupRoomList) {\n panel = _react2.default.createElement(GroupRoomList, { groupId: this.props.groupId, key: this.props.groupId });\n } else if (this.state.phase === this.Phase.RoomMemberInfo) {\n panel = _react2.default.createElement(MemberInfo, { member: this.state.member, key: this.props.roomId || this.state.member.userId });\n } else if (this.state.phase === this.Phase.GroupMemberInfo) {\n panel = _react2.default.createElement(GroupMemberInfo, {\n groupMember: this.state.member,\n groupId: this.props.groupId,\n key: this.state.member.user_id });\n } else if (this.state.phase === this.Phase.GroupRoomInfo) {\n panel = _react2.default.createElement(GroupRoomInfo, {\n groupRoomId: this.state.groupRoomId,\n groupId: this.props.groupId,\n key: this.state.groupRoomId });\n } else if (this.state.phase === this.Phase.NotificationPanel) {\n panel = _react2.default.createElement(NotificationPanel, null);\n } else if (this.state.phase === this.Phase.FilePanel) {\n panel = _react2.default.createElement(FilePanel, { roomId: this.props.roomId });\n }\n }\n\n if (!panel) {\n panel = _react2.default.createElement('div', { className: 'mx_RightPanel_blank' });\n }\n\n if (this.props.groupId && this.state.isUserPrivilegedInGroup) {\n inviteGroup = isPhaseGroup ? _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RightPanel_invite', onClick: this.onInviteToGroupButtonClick },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_icon' },\n _react2.default.createElement(TintableSvg, { src: 'img/icon-invite-people.svg', width: '35', height: '35' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_message' },\n (0, _languageHandler._t)('Invite to this community')\n )\n ) : _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RightPanel_invite', onClick: this.onAddRoomToGroupButtonClick },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_icon' },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-room-add.svg', width: '35', height: '35' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_message' },\n (0, _languageHandler._t)('Add rooms to this community')\n )\n );\n }\n\n var classes = (0, _classnames2.default)(\"mx_RightPanel\", \"mx_fadable\", {\n \"collapsed\": this.props.collapsed,\n \"mx_fadable_faded\": this.props.disabled\n });\n\n return _react2.default.createElement(\n 'aside',\n { className: classes },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_header' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_headerButtonGroup' },\n headerButtons\n )\n ),\n panel,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_footer' },\n inviteGroup\n )\n );\n }\n});\n//# sourceMappingURL=RightPanel.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _DirectoryUtils = require('../../utils/DirectoryUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar MatrixClientPeg = require('../../MatrixClientPeg');\nvar ContentRepo = require(\"matrix-js-sdk\").ContentRepo;\nvar Modal = require('../../Modal');\nvar sdk = require('../../index');\nvar dis = require('../../dispatcher');\n\nvar linkify = require('linkifyjs');\nvar linkifyString = require('linkifyjs/string');\nvar linkifyMatrix = require('../../linkify-matrix');\nvar sanitizeHtml = require('sanitize-html');\n\n\nvar MAX_NAME_LENGTH = 80;\nvar MAX_TOPIC_LENGTH = 160;\n\nlinkifyMatrix(linkify);\n\nmodule.exports = React.createClass({\n displayName: 'RoomDirectory',\n\n propTypes: {\n config: React.PropTypes.object\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n config: {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n publicRooms: [],\n loading: true,\n protocolsLoading: true,\n instanceId: null,\n includeAll: false,\n roomServer: null,\n filterString: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this._unmounted = false;\n this.nextBatch = null;\n this.filterTimeout = null;\n this.scrollPanel = null;\n this.protocols = null;\n\n this.setState({ protocolsLoading: true });\n MatrixClientPeg.get().getThirdpartyProtocols().done(function (response) {\n _this.protocols = response;\n _this.setState({ protocolsLoading: false });\n }, function (err) {\n console.warn('error loading thirdparty protocols: ' + err);\n _this.setState({ protocolsLoading: false });\n if (MatrixClientPeg.get().isGuest()) {\n // Guests currently aren't allowed to use this API, so\n // ignore this as otherwise this error is literally the\n // thing you see when loading the client!\n return;\n }\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Failed to get protocol list from Home Server', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to get protocol list from Home Server'),\n description: (0, _languageHandler._t)('The Home Server may be too old to support third party networks')\n });\n });\n\n // dis.dispatch({\n // action: 'panel_disable',\n // sideDisabled: true,\n // middleDisabled: true,\n // });\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // dis.dispatch({\n // action: 'panel_disable',\n // sideDisabled: false,\n // middleDisabled: false,\n // });\n if (this.filterTimeout) {\n clearTimeout(this.filterTimeout);\n }\n this._unmounted = true;\n },\n\n refreshRoomList: function refreshRoomList() {\n this.nextBatch = null;\n this.setState({\n publicRooms: [],\n loading: true\n });\n this.getMoreRooms().done();\n },\n\n getMoreRooms: function getMoreRooms() {\n var _this2 = this;\n\n if (!MatrixClientPeg.get()) return _bluebird2.default.resolve();\n\n var my_filter_string = this.state.filterString;\n var my_server = this.state.roomServer;\n // remember the next batch token when we sent the request\n // too. If it's changed, appending to the list will corrupt it.\n var my_next_batch = this.nextBatch;\n var opts = { limit: 20 };\n if (my_server != MatrixClientPeg.getHomeServerName()) {\n opts.server = my_server;\n }\n if (this.state.instanceId) {\n opts.third_party_instance_id = this.state.instanceId;\n } else if (this.state.includeAll) {\n opts.include_all_networks = true;\n }\n if (this.nextBatch) opts.since = this.nextBatch;\n if (my_filter_string) opts.filter = { generic_search_term: my_filter_string };\n return MatrixClientPeg.get().publicRooms(opts).then(function (data) {\n if (my_filter_string != _this2.state.filterString || my_server != _this2.state.roomServer || my_next_batch != _this2.nextBatch) {\n // if the filter or server has changed since this request was sent,\n // throw away the result (don't even clear the busy flag\n // since we must still have a request in flight)\n return;\n }\n\n if (_this2._unmounted) {\n // if we've been unmounted, we don't care either.\n return;\n }\n\n _this2.nextBatch = data.next_batch;\n _this2.setState(function (s) {\n var _s$publicRooms;\n\n (_s$publicRooms = s.publicRooms).push.apply(_s$publicRooms, (0, _toConsumableArray3.default)(data.chunk));\n s.loading = false;\n return s;\n });\n return Boolean(data.next_batch);\n }, function (err) {\n if (my_filter_string != _this2.state.filterString || my_server != _this2.state.roomServer || my_next_batch != _this2.nextBatch) {\n // as above: we don't care about errors for old\n // requests either\n return;\n }\n\n if (_this2._unmounted) {\n // if we've been unmounted, we don't care either.\n return;\n }\n\n _this2.setState({ loading: false });\n console.error(\"Failed to get publicRooms: %s\", (0, _stringify2.default)(err));\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Failed to get public room list', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to get public room list'),\n description: err && err.message ? err.message : (0, _languageHandler._t)('The server may be unavailable or overloaded')\n });\n });\n },\n\n /**\n * A limited interface for removing rooms from the directory.\n * Will set the room to not be publicly visible and delete the\n * default alias. In the long term, it would be better to allow\n * HS admins to do this through the RoomSettings interface, but\n * this needs SPEC-417.\n */\n removeFromDirectory: function removeFromDirectory(room) {\n var _this3 = this;\n\n var alias = get_display_alias_for_room(room);\n var name = room.name || alias || (0, _languageHandler._t)('Unnamed room');\n\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n\n var desc = void 0;\n if (alias) {\n desc = (0, _languageHandler._t)('Delete the room alias %(alias)s and remove %(name)s from the directory?', { alias: alias, name: name });\n } else {\n desc = (0, _languageHandler._t)('Remove %(name)s from the directory?', { name: name });\n }\n\n Modal.createTrackedDialog('Remove from Directory', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Remove from Directory'),\n description: desc,\n onFinished: function onFinished(should_delete) {\n if (!should_delete) return;\n\n var Loader = sdk.getComponent(\"elements.Spinner\");\n var modal = Modal.createDialog(Loader);\n var step = (0, _languageHandler._t)('remove %(name)s from the directory.', { name: name });\n\n MatrixClientPeg.get().setRoomDirectoryVisibility(room.room_id, 'private').then(function () {\n if (!alias) return;\n step = (0, _languageHandler._t)('delete the alias.');\n return MatrixClientPeg.get().deleteAlias(alias);\n }).done(function () {\n modal.close();\n _this3.refreshRoomList();\n }, function (err) {\n modal.close();\n _this3.refreshRoomList();\n console.error(\"Failed to \" + step + \": \" + err);\n Modal.createTrackedDialog('Remove from Directory Error', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: err && err.message ? err.message : (0, _languageHandler._t)('The server may be unavailable or overloaded')\n });\n });\n }\n });\n },\n\n onRoomClicked: function onRoomClicked(room, ev) {\n if (ev.shiftKey) {\n ev.preventDefault();\n this.removeFromDirectory(room);\n } else {\n this.showRoom(room);\n }\n },\n\n onOptionChange: function onOptionChange(server, instanceId, includeAll) {\n // clear next batch so we don't try to load more rooms\n this.nextBatch = null;\n this.setState({\n // Clear the public rooms out here otherwise we needlessly\n // spend time filtering lots of rooms when we're about to\n // to clear the list anyway.\n publicRooms: [],\n roomServer: server,\n instanceId: instanceId,\n includeAll: includeAll\n }, this.refreshRoomList);\n // We also refresh the room list each time even though this\n // filtering is client-side. It hopefully won't be client side\n // for very long, and we may have fetched a thousand rooms to\n // find the five gitter ones, at which point we do not want\n // to render all those rooms when switching back to 'all networks'.\n // Easiest to just blow away the state & re-fetch.\n },\n\n onFillRequest: function onFillRequest(backwards) {\n if (backwards || !this.nextBatch) return _bluebird2.default.resolve(false);\n\n return this.getMoreRooms();\n },\n\n onFilterChange: function onFilterChange(alias) {\n var _this4 = this;\n\n this.setState({\n filterString: alias || null\n });\n\n // don't send the request for a little bit,\n // no point hammering the server with a\n // request for every keystroke, let the\n // user finish typing.\n if (this.filterTimeout) {\n clearTimeout(this.filterTimeout);\n }\n this.filterTimeout = setTimeout(function () {\n _this4.filterTimeout = null;\n _this4.refreshRoomList();\n }, 700);\n },\n\n onFilterClear: function onFilterClear() {\n // update immediately\n this.setState({\n filterString: null\n }, this.refreshRoomList);\n\n if (this.filterTimeout) {\n clearTimeout(this.filterTimeout);\n }\n },\n\n onJoinClick: function onJoinClick(alias) {\n var _this5 = this;\n\n // If we don't have a particular instance id selected, just show that rooms alias\n if (!this.state.instanceId) {\n // If the user specified an alias without a domain, add on whichever server is selected\n // in the dropdown\n if (alias.indexOf(':') == -1) {\n alias = alias + ':' + this.state.roomServer;\n }\n this.showRoomAlias(alias);\n } else {\n // This is a 3rd party protocol. Let's see if we can join it\n var protocolName = (0, _DirectoryUtils.protocolNameForInstanceId)(this.protocols, this.state.instanceId);\n var instance = (0, _DirectoryUtils.instanceForInstanceId)(this.protocols, this.state.instanceId);\n var fields = protocolName ? this._getFieldsForThirdPartyLocation(alias, this.protocols[protocolName], instance) : null;\n if (!fields) {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Unable to join network', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Unable to join network'),\n description: (0, _languageHandler._t)('Riot does not know how to join a room on this network')\n });\n return;\n }\n MatrixClientPeg.get().getThirdpartyLocation(protocolName, fields).done(function (resp) {\n if (resp.length > 0 && resp[0].alias) {\n _this5.showRoomAlias(resp[0].alias);\n } else {\n var _ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Room not found', '', _ErrorDialog, {\n title: (0, _languageHandler._t)('Room not found'),\n description: (0, _languageHandler._t)('Couldn\\'t find a matching Matrix room')\n });\n }\n }, function (e) {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Fetching third party location failed', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Fetching third party location failed'),\n description: (0, _languageHandler._t)('Unable to look up room ID from server')\n });\n });\n }\n },\n\n showRoomAlias: function showRoomAlias(alias) {\n this.showRoom(null, alias);\n },\n\n showRoom: function showRoom(room, room_alias) {\n var payload = { action: 'view_room' };\n if (room) {\n // Don't let the user view a room they won't be able to either\n // peek or join: fail earlier so they don't have to click back\n // to the directory.\n if (MatrixClientPeg.get().isGuest()) {\n if (!room.world_readable && !room.guest_can_join) {\n dis.dispatch({ action: 'require_registration' });\n return;\n }\n }\n\n if (!room_alias) {\n room_alias = get_display_alias_for_room(room);\n }\n\n payload.oob_data = {\n avatarUrl: room.avatar_url,\n // XXX: This logic is duplicated from the JS SDK which\n // would normally decide what the name is.\n name: room.name || room_alias || (0, _languageHandler._t)('Unnamed room')\n };\n }\n // It's not really possible to join Matrix rooms by ID because the HS has no way to know\n // which servers to start querying. However, there's no other way to join rooms in\n // this list without aliases at present, so if roomAlias isn't set here we have no\n // choice but to supply the ID.\n if (room_alias) {\n payload.room_alias = room_alias;\n } else {\n payload.room_id = room.room_id;\n }\n dis.dispatch(payload);\n },\n\n getRows: function getRows() {\n var BaseAvatar = sdk.getComponent('avatars.BaseAvatar');\n\n if (!this.state.publicRooms) return [];\n\n var rooms = this.state.publicRooms;\n var rows = [];\n var self = this;\n var guestRead = void 0;var guestJoin = void 0;var perms = void 0;\n for (var i = 0; i < rooms.length; i++) {\n guestRead = null;\n guestJoin = null;\n\n if (rooms[i].world_readable) {\n guestRead = React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perm' },\n (0, _languageHandler._t)('World readable')\n );\n }\n if (rooms[i].guest_can_join) {\n guestJoin = React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perm' },\n (0, _languageHandler._t)('Guests can join')\n );\n }\n\n perms = null;\n if (guestRead || guestJoin) {\n perms = React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perms' },\n guestRead,\n guestJoin\n );\n }\n\n var name = rooms[i].name || get_display_alias_for_room(rooms[i]) || (0, _languageHandler._t)('Unnamed room');\n if (name.length > MAX_NAME_LENGTH) {\n name = name.substring(0, MAX_NAME_LENGTH) + '...';\n }\n\n var topic = rooms[i].topic || '';\n if (topic.length > MAX_TOPIC_LENGTH) {\n topic = topic.substring(0, MAX_TOPIC_LENGTH) + '...';\n }\n topic = linkifyString(sanitizeHtml(topic));\n\n rows.push(React.createElement(\n 'tr',\n { key: rooms[i].room_id,\n onClick: self.onRoomClicked.bind(self, rooms[i])\n // cancel onMouseDown otherwise shift-clicking highlights text\n , onMouseDown: function onMouseDown(ev) {\n ev.preventDefault();\n }\n },\n React.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomAvatar' },\n React.createElement(BaseAvatar, { width: 24, height: 24, resizeMethod: 'crop',\n name: name, idName: name,\n url: ContentRepo.getHttpUriForMxc(MatrixClientPeg.get().getHomeserverUrl(), rooms[i].avatar_url, 24, 24, \"crop\") })\n ),\n React.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomDescription' },\n React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_name' },\n name\n ),\n '\\xA0',\n perms,\n React.createElement('div', { className: 'mx_RoomDirectory_topic',\n onClick: function onClick(e) {\n e.stopPropagation();\n },\n dangerouslySetInnerHTML: { __html: topic } }),\n React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_alias' },\n get_display_alias_for_room(rooms[i])\n )\n ),\n React.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomMemberCount' },\n rooms[i].num_joined_members\n )\n ));\n }\n return rows;\n },\n\n collectScrollPanel: function collectScrollPanel(element) {\n this.scrollPanel = element;\n },\n\n _stringLooksLikeId: function _stringLooksLikeId(s, field_type) {\n var pat = /^#[^\\s]+:[^\\s]/;\n if (field_type && field_type.regexp) {\n pat = new RegExp(field_type.regexp);\n }\n\n return pat.test(s);\n },\n\n _getFieldsForThirdPartyLocation: function _getFieldsForThirdPartyLocation(userInput, protocol, instance) {\n // make an object with the fields specified by that protocol. We\n // require that the values of all but the last field come from the\n // instance. The last is the user input.\n var requiredFields = protocol.location_fields;\n if (!requiredFields) return null;\n var fields = {};\n for (var i = 0; i < requiredFields.length - 1; ++i) {\n var thisField = requiredFields[i];\n if (instance.fields[thisField] === undefined) return null;\n fields[thisField] = instance.fields[thisField];\n }\n fields[requiredFields[requiredFields.length - 1]] = userInput;\n return fields;\n },\n\n /**\n * called by the parent component when PageUp/Down/etc is pressed.\n *\n * We pass it down to the scroll panel.\n */\n handleScrollKey: function handleScrollKey(ev) {\n if (this.scrollPanel) {\n this.scrollPanel.handleScrollKey(ev);\n }\n },\n\n render: function render() {\n var SimpleRoomHeader = sdk.getComponent('rooms.SimpleRoomHeader');\n var Loader = sdk.getComponent(\"elements.Spinner\");\n\n if (this.state.protocolsLoading) {\n return React.createElement(\n 'div',\n { className: 'mx_RoomDirectory' },\n React.createElement(SimpleRoomHeader, { title: (0, _languageHandler._t)('Directory') }),\n React.createElement(Loader, null)\n );\n }\n\n var content = void 0;\n if (this.state.loading) {\n content = React.createElement(\n 'div',\n { className: 'mx_RoomDirectory' },\n React.createElement(Loader, null)\n );\n } else {\n var rows = this.getRows();\n // we still show the scrollpanel, at least for now, because\n // otherwise we don't fetch more because we don't get a fill\n // request from the scrollpanel because there isn't one\n var scrollpanel_content = void 0;\n if (rows.length == 0) {\n scrollpanel_content = React.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('No rooms to show')\n );\n } else {\n scrollpanel_content = React.createElement(\n 'table',\n { ref: 'directory_table', className: 'mx_RoomDirectory_table' },\n React.createElement(\n 'tbody',\n null,\n this.getRows()\n )\n );\n }\n var ScrollPanel = sdk.getComponent(\"structures.ScrollPanel\");\n content = React.createElement(\n ScrollPanel,\n { ref: this.collectScrollPanel,\n className: 'mx_RoomDirectory_tableWrapper',\n onFillRequest: this.onFillRequest,\n stickyBottom: false,\n startAtBottom: false,\n onResize: function onResize() {}\n },\n scrollpanel_content\n );\n }\n\n var protocolName = (0, _DirectoryUtils.protocolNameForInstanceId)(this.protocols, this.state.instanceId);\n var instance_expected_field_type = void 0;\n if (protocolName && this.protocols && this.protocols[protocolName] && this.protocols[protocolName].location_fields.length > 0 && this.protocols[protocolName].field_types) {\n var last_field = this.protocols[protocolName].location_fields.slice(-1)[0];\n instance_expected_field_type = this.protocols[protocolName].field_types[last_field];\n }\n\n var placeholder = (0, _languageHandler._t)('Search for a room');\n if (!this.state.instanceId) {\n placeholder = (0, _languageHandler._t)('#example') + ':' + this.state.roomServer;\n } else if (instance_expected_field_type) {\n placeholder = instance_expected_field_type.placeholder;\n }\n\n var showJoinButton = this._stringLooksLikeId(this.state.filterString, instance_expected_field_type);\n if (protocolName) {\n var instance = (0, _DirectoryUtils.instanceForInstanceId)(this.protocols, this.state.instanceId);\n if (this._getFieldsForThirdPartyLocation(this.state.filterString, this.protocols[protocolName], instance) === null) {\n showJoinButton = false;\n }\n }\n\n var NetworkDropdown = sdk.getComponent('directory.NetworkDropdown');\n var DirectorySearchBox = sdk.getComponent('elements.DirectorySearchBox');\n return React.createElement(\n 'div',\n { className: 'mx_RoomDirectory' },\n React.createElement(SimpleRoomHeader, { title: (0, _languageHandler._t)('Directory'), icon: 'img/icons-directory.svg' }),\n React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_list' },\n React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_listheader' },\n React.createElement(DirectorySearchBox, {\n className: 'mx_RoomDirectory_searchbox',\n onChange: this.onFilterChange, onClear: this.onFilterClear, onJoinClick: this.onJoinClick,\n placeholder: placeholder, showJoinButton: showJoinButton\n }),\n React.createElement(NetworkDropdown, { config: this.props.config, protocols: this.protocols, onOptionChange: this.onOptionChange })\n ),\n content\n )\n );\n }\n});\n\n// Similar to matrix-react-sdk's MatrixTools.getDisplayAliasForRoom\n// but works with the objects we get from the public room list\nfunction get_display_alias_for_room(room) {\n return room.canonical_alias || (room.aliases ? room.aliases[0] : \"\");\n}\n//# sourceMappingURL=RoomDirectory.js.map","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar defaults = {\n\tdefaultProtocol: 'http',\n\tevents: null,\n\tformat: noop,\n\tformatHref: noop,\n\tnl2br: false,\n\ttagName: 'a',\n\ttarget: typeToTarget,\n\tvalidate: true,\n\tignoreTags: [],\n\tattributes: null,\n\tclassName: 'linkified' // Deprecated value - no default class will be provided in the future\n};\n\nexports.defaults = defaults;\nexports.Options = Options;\nexports.contains = contains;\n\n\nfunction Options(opts) {\n\topts = opts || {};\n\n\tthis.defaultProtocol = opts.hasOwnProperty('defaultProtocol') ? opts.defaultProtocol : defaults.defaultProtocol;\n\tthis.events = opts.hasOwnProperty('events') ? opts.events : defaults.events;\n\tthis.format = opts.hasOwnProperty('format') ? opts.format : defaults.format;\n\tthis.formatHref = opts.hasOwnProperty('formatHref') ? opts.formatHref : defaults.formatHref;\n\tthis.nl2br = opts.hasOwnProperty('nl2br') ? opts.nl2br : defaults.nl2br;\n\tthis.tagName = opts.hasOwnProperty('tagName') ? opts.tagName : defaults.tagName;\n\tthis.target = opts.hasOwnProperty('target') ? opts.target : defaults.target;\n\tthis.validate = opts.hasOwnProperty('validate') ? opts.validate : defaults.validate;\n\tthis.ignoreTags = [];\n\n\t// linkAttributes and linkClass is deprecated\n\tthis.attributes = opts.attributes || opts.linkAttributes || defaults.attributes;\n\tthis.className = opts.hasOwnProperty('className') ? opts.className : opts.linkClass || defaults.className;\n\n\t// Make all tags names upper case\n\tvar ignoredTags = opts.hasOwnProperty('ignoreTags') ? opts.ignoreTags : defaults.ignoreTags;\n\tfor (var i = 0; i < ignoredTags.length; i++) {\n\t\tthis.ignoreTags.push(ignoredTags[i].toUpperCase());\n\t}\n}\n\nOptions.prototype = {\n\t/**\n * Given the token, return all options for how it should be displayed\n */\n\tresolve: function resolve(token) {\n\t\tvar href = token.toHref(this.defaultProtocol);\n\t\treturn {\n\t\t\tformatted: this.get('format', token.toString(), token),\n\t\t\tformattedHref: this.get('formatHref', href, token),\n\t\t\ttagName: this.get('tagName', href, token),\n\t\t\tclassName: this.get('className', href, token),\n\t\t\ttarget: this.get('target', href, token),\n\t\t\tevents: this.getObject('events', href, token),\n\t\t\tattributes: this.getObject('attributes', href, token)\n\t\t};\n\t},\n\n\n\t/**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options. By default,\n */\n\tcheck: function check(token) {\n\t\treturn this.get('validate', token.toString(), token);\n\t},\n\n\n\t// Private methods\n\n\t/**\n * Resolve an option's value based on the value of the option and the given\n * params.\n * @param {String} key Name of option to use\n * @param operator will be passed to the target option if it's method\n * @param {MultiToken} token The token from linkify.tokenize\n */\n\tget: function get(key, operator, token) {\n\t\tvar optionValue = void 0,\n\t\t option = this[key];\n\t\tif (!option) {\n\t\t\treturn option;\n\t\t}\n\n\t\tswitch (typeof option === 'undefined' ? 'undefined' : _typeof(option)) {\n\t\t\tcase 'function':\n\t\t\t\treturn option(operator, token.type);\n\t\t\tcase 'object':\n\t\t\t\toptionValue = option.hasOwnProperty(token.type) ? option[token.type] : defaults[key];\n\t\t\t\treturn typeof optionValue === 'function' ? optionValue(operator, token.type) : optionValue;\n\t\t}\n\n\t\treturn option;\n\t},\n\tgetObject: function getObject(key, operator, token) {\n\t\tvar option = this[key];\n\t\treturn typeof option === 'function' ? option(operator, token.type) : option;\n\t}\n};\n\n/**\n * Quick indexOf replacement for checking the ignoreTags option\n */\nfunction contains(arr, value) {\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tif (arr[i] === value) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction noop(val) {\n\treturn val;\n}\n\nfunction typeToTarget(href, type) {\n\treturn type === 'url' ? '_blank' : null;\n}","'use strict';\n\nexports.__esModule = true;\nexports.start = exports.run = exports.TOKENS = exports.State = undefined;\n\nvar _state = require('./state');\n\nvar _text = require('./tokens/text');\n\nvar TOKENS = _interopRequireWildcard(_text);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar tlds = 'aaa|aarp|abarth|abb|abbott|abbvie|abc|able|abogado|abudhabi|ac|academy|accenture|accountant|accountants|aco|active|actor|ad|adac|ads|adult|ae|aeg|aero|aetna|af|afamilycompany|afl|africa|ag|agakhan|agency|ai|aig|aigo|airbus|airforce|airtel|akdn|al|alfaromeo|alibaba|alipay|allfinanz|allstate|ally|alsace|alstom|am|americanexpress|americanfamily|amex|amfam|amica|amsterdam|analytics|android|anquan|anz|ao|aol|apartments|app|apple|aq|aquarelle|ar|arab|aramco|archi|army|arpa|art|arte|as|asda|asia|associates|at|athleta|attorney|au|auction|audi|audible|audio|auspost|author|auto|autos|avianca|aw|aws|ax|axa|az|azure|ba|baby|baidu|banamex|bananarepublic|band|bank|bar|barcelona|barclaycard|barclays|barefoot|bargains|baseball|basketball|bauhaus|bayern|bb|bbc|bbt|bbva|bcg|bcn|bd|be|beats|beauty|beer|bentley|berlin|best|bestbuy|bet|bf|bg|bh|bharti|bi|bible|bid|bike|bing|bingo|bio|biz|bj|black|blackfriday|blanco|blockbuster|blog|bloomberg|blue|bm|bms|bmw|bn|bnl|bnpparibas|bo|boats|boehringer|bofa|bom|bond|boo|book|booking|boots|bosch|bostik|boston|bot|boutique|box|br|bradesco|bridgestone|broadway|broker|brother|brussels|bs|bt|budapest|bugatti|build|builders|business|buy|buzz|bv|bw|by|bz|bzh|ca|cab|cafe|cal|call|calvinklein|cam|camera|camp|cancerresearch|canon|capetown|capital|capitalone|car|caravan|cards|care|career|careers|cars|cartier|casa|case|caseih|cash|casino|cat|catering|catholic|cba|cbn|cbre|cbs|cc|cd|ceb|center|ceo|cern|cf|cfa|cfd|cg|ch|chanel|channel|chase|chat|cheap|chintai|chloe|christmas|chrome|chrysler|church|ci|cipriani|circle|cisco|citadel|citi|citic|city|cityeats|ck|cl|claims|cleaning|click|clinic|clinique|clothing|cloud|club|clubmed|cm|cn|co|coach|codes|coffee|college|cologne|com|comcast|commbank|community|company|compare|computer|comsec|condos|construction|consulting|contact|contractors|cooking|cookingchannel|cool|coop|corsica|country|coupon|coupons|courses|cr|credit|creditcard|creditunion|cricket|crown|crs|cruise|cruises|csc|cu|cuisinella|cv|cw|cx|cy|cymru|cyou|cz|dabur|dad|dance|data|date|dating|datsun|day|dclk|dds|de|deal|dealer|deals|degree|delivery|dell|deloitte|delta|democrat|dental|dentist|desi|design|dev|dhl|diamonds|diet|digital|direct|directory|discount|discover|dish|diy|dj|dk|dm|dnp|do|docs|doctor|dodge|dog|doha|domains|dot|download|drive|dtv|dubai|duck|dunlop|duns|dupont|durban|dvag|dvr|dz|earth|eat|ec|eco|edeka|edu|education|ee|eg|email|emerck|energy|engineer|engineering|enterprises|epost|epson|equipment|er|ericsson|erni|es|esq|estate|esurance|et|etisalat|eu|eurovision|eus|events|everbank|exchange|expert|exposed|express|extraspace|fage|fail|fairwinds|faith|family|fan|fans|farm|farmers|fashion|fast|fedex|feedback|ferrari|ferrero|fi|fiat|fidelity|fido|film|final|finance|financial|fire|firestone|firmdale|fish|fishing|fit|fitness|fj|fk|flickr|flights|flir|florist|flowers|fly|fm|fo|foo|food|foodnetwork|football|ford|forex|forsale|forum|foundation|fox|fr|free|fresenius|frl|frogans|frontdoor|frontier|ftr|fujitsu|fujixerox|fun|fund|furniture|futbol|fyi|ga|gal|gallery|gallo|gallup|game|games|gap|garden|gb|gbiz|gd|gdn|ge|gea|gent|genting|george|gf|gg|ggee|gh|gi|gift|gifts|gives|giving|gl|glade|glass|gle|global|globo|gm|gmail|gmbh|gmo|gmx|gn|godaddy|gold|goldpoint|golf|goo|goodhands|goodyear|goog|google|gop|got|gov|gp|gq|gr|grainger|graphics|gratis|green|gripe|grocery|group|gs|gt|gu|guardian|gucci|guge|guide|guitars|guru|gw|gy|hair|hamburg|hangout|haus|hbo|hdfc|hdfcbank|health|healthcare|help|helsinki|here|hermes|hgtv|hiphop|hisamitsu|hitachi|hiv|hk|hkt|hm|hn|hockey|holdings|holiday|homedepot|homegoods|homes|homesense|honda|honeywell|horse|hospital|host|hosting|hot|hoteles|hotels|hotmail|house|how|hr|hsbc|ht|htc|hu|hughes|hyatt|hyundai|ibm|icbc|ice|icu|id|ie|ieee|ifm|ikano|il|im|imamat|imdb|immo|immobilien|in|industries|infiniti|info|ing|ink|institute|insurance|insure|int|intel|international|intuit|investments|io|ipiranga|iq|ir|irish|is|iselect|ismaili|ist|istanbul|it|itau|itv|iveco|iwc|jaguar|java|jcb|jcp|je|jeep|jetzt|jewelry|jio|jlc|jll|jm|jmp|jnj|jo|jobs|joburg|jot|joy|jp|jpmorgan|jprs|juegos|juniper|kaufen|kddi|ke|kerryhotels|kerrylogistics|kerryproperties|kfh|kg|kh|ki|kia|kim|kinder|kindle|kitchen|kiwi|km|kn|koeln|komatsu|kosher|kp|kpmg|kpn|kr|krd|kred|kuokgroup|kw|ky|kyoto|kz|la|lacaixa|ladbrokes|lamborghini|lamer|lancaster|lancia|lancome|land|landrover|lanxess|lasalle|lat|latino|latrobe|law|lawyer|lb|lc|lds|lease|leclerc|lefrak|legal|lego|lexus|lgbt|li|liaison|lidl|life|lifeinsurance|lifestyle|lighting|like|lilly|limited|limo|lincoln|linde|link|lipsy|live|living|lixil|lk|loan|loans|locker|locus|loft|lol|london|lotte|lotto|love|lpl|lplfinancial|lr|ls|lt|ltd|ltda|lu|lundbeck|lupin|luxe|luxury|lv|ly|ma|macys|madrid|maif|maison|makeup|man|management|mango|map|market|marketing|markets|marriott|marshalls|maserati|mattel|mba|mc|mckinsey|md|me|med|media|meet|melbourne|meme|memorial|men|menu|meo|merckmsd|metlife|mg|mh|miami|microsoft|mil|mini|mint|mit|mitsubishi|mk|ml|mlb|mls|mm|mma|mn|mo|mobi|mobile|mobily|moda|moe|moi|mom|monash|money|monster|mopar|mormon|mortgage|moscow|moto|motorcycles|mov|movie|movistar|mp|mq|mr|ms|msd|mt|mtn|mtr|mu|museum|mutual|mv|mw|mx|my|mz|na|nab|nadex|nagoya|name|nationwide|natura|navy|nba|nc|ne|nec|net|netbank|netflix|network|neustar|new|newholland|news|next|nextdirect|nexus|nf|nfl|ng|ngo|nhk|ni|nico|nike|nikon|ninja|nissan|nissay|nl|no|nokia|northwesternmutual|norton|now|nowruz|nowtv|np|nr|nra|nrw|ntt|nu|nyc|nz|obi|observer|off|office|okinawa|olayan|olayangroup|oldnavy|ollo|om|omega|one|ong|onl|online|onyourside|ooo|open|oracle|orange|org|organic|origins|osaka|otsuka|ott|ovh|pa|page|panasonic|panerai|paris|pars|partners|parts|party|passagens|pay|pccw|pe|pet|pf|pfizer|pg|ph|pharmacy|phd|philips|phone|photo|photography|photos|physio|piaget|pics|pictet|pictures|pid|pin|ping|pink|pioneer|pizza|pk|pl|place|play|playstation|plumbing|plus|pm|pn|pnc|pohl|poker|politie|porn|post|pr|pramerica|praxi|press|prime|pro|prod|productions|prof|progressive|promo|properties|property|protection|pru|prudential|ps|pt|pub|pw|pwc|py|qa|qpon|quebec|quest|qvc|racing|radio|raid|re|read|realestate|realtor|realty|recipes|red|redstone|redumbrella|rehab|reise|reisen|reit|reliance|ren|rent|rentals|repair|report|republican|rest|restaurant|review|reviews|rexroth|rich|richardli|ricoh|rightathome|ril|rio|rip|rmit|ro|rocher|rocks|rodeo|rogers|room|rs|rsvp|ru|rugby|ruhr|run|rw|rwe|ryukyu|sa|saarland|safe|safety|sakura|sale|salon|samsclub|samsung|sandvik|sandvikcoromant|sanofi|sap|sapo|sarl|sas|save|saxo|sb|sbi|sbs|sc|sca|scb|schaeffler|schmidt|scholarships|school|schule|schwarz|science|scjohnson|scor|scot|sd|se|search|seat|secure|security|seek|select|sener|services|ses|seven|sew|sex|sexy|sfr|sg|sh|shangrila|sharp|shaw|shell|shia|shiksha|shoes|shop|shopping|shouji|show|showtime|shriram|si|silk|sina|singles|site|sj|sk|ski|skin|sky|skype|sl|sling|sm|smart|smile|sn|sncf|so|soccer|social|softbank|software|sohu|solar|solutions|song|sony|soy|space|spiegel|spot|spreadbetting|sr|srl|srt|st|stada|staples|star|starhub|statebank|statefarm|statoil|stc|stcgroup|stockholm|storage|store|stream|studio|study|style|su|sucks|supplies|supply|support|surf|surgery|suzuki|sv|swatch|swiftcover|swiss|sx|sy|sydney|symantec|systems|sz|tab|taipei|talk|taobao|target|tatamotors|tatar|tattoo|tax|taxi|tc|tci|td|tdk|team|tech|technology|tel|telecity|telefonica|temasek|tennis|teva|tf|tg|th|thd|theater|theatre|tiaa|tickets|tienda|tiffany|tips|tires|tirol|tj|tjmaxx|tjx|tk|tkmaxx|tl|tm|tmall|tn|to|today|tokyo|tools|top|toray|toshiba|total|tours|town|toyota|toys|tr|trade|trading|training|travel|travelchannel|travelers|travelersinsurance|trust|trv|tt|tube|tui|tunes|tushu|tv|tvs|tw|tz|ua|ubank|ubs|uconnect|ug|uk|unicom|university|uno|uol|ups|us|uy|uz|va|vacations|vana|vanguard|vc|ve|vegas|ventures|verisign|versicherung|vet|vg|vi|viajes|video|vig|viking|villas|vin|vip|virgin|visa|vision|vista|vistaprint|viva|vivo|vlaanderen|vn|vodka|volkswagen|volvo|vote|voting|voto|voyage|vu|vuelos|wales|walmart|walter|wang|wanggou|warman|watch|watches|weather|weatherchannel|webcam|weber|website|wed|wedding|weibo|weir|wf|whoswho|wien|wiki|williamhill|win|windows|wine|winners|wme|wolterskluwer|woodside|work|works|world|wow|ws|wtc|wtf|xbox|xerox|xfinity|xihuan|xin|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--30rr7y|xn--3bst00m|xn--3ds443g|xn--3e0b707e|xn--3hcrj9c|xn--3oq18vl8pn36a|xn--3pxu8k|xn--42c2d9a|xn--45br5cyl|xn--45brj9c|xn--45q11c|xn--4gbrim|xn--54b7fta0cc|xn--55qw42g|xn--55qx5d|xn--5su34j936bgsg|xn--5tzm5g|xn--6frz82g|xn--6qq986b3xl|xn--80adxhks|xn--80ao21a|xn--80aqecdr1a|xn--80asehdb|xn--80aswg|xn--8y0a063a|xn--90a3ac|xn--90ae|xn--90ais|xn--9dbq2a|xn--9et52u|xn--9krt00a|xn--b4w605ferd|xn--bck1b9a5dre4c|xn--c1avg|xn--c2br7g|xn--cck2b3b|xn--cg4bki|xn--clchc0ea0b2g2a9gcd|xn--czr694b|xn--czrs0t|xn--czru2d|xn--d1acj3b|xn--d1alf|xn--e1a4c|xn--eckvdtc9d|xn--efvy88h|xn--estv75g|xn--fct429k|xn--fhbei|xn--fiq228c5hs|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--fjq720a|xn--flw351e|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--fzys8d69uvgm|xn--g2xx48c|xn--gckr3f0f|xn--gecrj9c|xn--gk3at1e|xn--h2breg3eve|xn--h2brj9c|xn--h2brj9c8c|xn--hxt814e|xn--i1b6b1a6a2e|xn--imr513n|xn--io0a7i|xn--j1aef|xn--j1amh|xn--j6w193g|xn--jlq61u9w7b|xn--jvr189m|xn--kcrx77d1x4a|xn--kprw13d|xn--kpry57d|xn--kpu716f|xn--kput3i|xn--l1acc|xn--lgbbat1ad8j|xn--mgb9awbf|xn--mgba3a3ejt|xn--mgba3a4f16a|xn--mgba7c0bbn0a|xn--mgbaakc7dvf|xn--mgbaam7a8h|xn--mgbab2bd|xn--mgbai9azgqp6j|xn--mgbayh7gpa|xn--mgbb9fbpob|xn--mgbbh1a|xn--mgbbh1a71e|xn--mgbc0a9azcg|xn--mgbca7dzdo|xn--mgberp4a5d4ar|xn--mgbgu82a|xn--mgbi4ecexp|xn--mgbpl2fh|xn--mgbt3dhd|xn--mgbtx2b|xn--mgbx4cd0ab|xn--mix891f|xn--mk1bu44c|xn--mxtq1m|xn--ngbc5azd|xn--ngbe9e0a|xn--ngbrx|xn--node|xn--nqv7f|xn--nqv7fs00ema|xn--nyqy26a|xn--o3cw4h|xn--ogbpf8fl|xn--p1acf|xn--p1ai|xn--pbt977c|xn--pgbs0dh|xn--pssy2u|xn--q9jyb4c|xn--qcka1pmc|xn--qxam|xn--rhqv96g|xn--rovu88b|xn--rvc1e0am3e|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--tckwe|xn--tiq49xqyj|xn--unup4y|xn--vermgensberater-ctb|xn--vermgensberatung-pwb|xn--vhquv|xn--vuq861b|xn--w4r85el8fhu5dnra|xn--w4rs40l|xn--wgbh1c|xn--wgbl6a|xn--xhq521b|xn--xkc2al3hye2a|xn--xkc2dl3a5ee0h|xn--y9a3aq|xn--yfro4i67o|xn--ygbi2ammx|xn--zfr164b|xperia|xxx|xyz|yachts|yahoo|yamaxun|yandex|ye|yodobashi|yoga|yokohama|you|youtube|yt|yun|za|zappos|zara|zero|zip|zippo|zm|zone|zuerich|zw'.split('|'); // macro, see gulpfile.js\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n\n\t@module linkify\n\t@submodule scanner\n\t@main scanner\n*/\n\nvar NUMBERS = '0123456789'.split('');\nvar ALPHANUM = '0123456789abcdefghijklmnopqrstuvwxyz'.split('');\nvar WHITESPACE = [' ', '\\f', '\\r', '\\t', '\\v', '\\xA0', '\\u1680', '\\u180E']; // excluding line breaks\n\nvar domainStates = []; // states that jump to DOMAIN on /[a-z0-9]/\nvar makeState = function makeState(tokenClass) {\n\treturn new _state.CharacterState(tokenClass);\n};\n\n// Frequently used states\nvar S_START = makeState();\nvar S_NUM = makeState(_text.NUM);\nvar S_DOMAIN = makeState(_text.DOMAIN);\nvar S_DOMAIN_HYPHEN = makeState(); // domain followed by 1 or more hyphen characters\nvar S_WS = makeState(_text.WS);\n\n// States for special URL symbols\nS_START.on('@', makeState(_text.AT)).on('.', makeState(_text.DOT)).on('+', makeState(_text.PLUS)).on('#', makeState(_text.POUND)).on('?', makeState(_text.QUERY)).on('/', makeState(_text.SLASH)).on('_', makeState(_text.UNDERSCORE)).on(':', makeState(_text.COLON)).on('{', makeState(_text.OPENBRACE)).on('[', makeState(_text.OPENBRACKET)).on('<', makeState(_text.OPENANGLEBRACKET)).on('(', makeState(_text.OPENPAREN)).on('}', makeState(_text.CLOSEBRACE)).on(']', makeState(_text.CLOSEBRACKET)).on('>', makeState(_text.CLOSEANGLEBRACKET)).on(')', makeState(_text.CLOSEPAREN)).on('&', makeState(_text.AMPERSAND)).on([',', ';', '!', '\"', '\\''], makeState(_text.PUNCTUATION));\n\n// Whitespace jumps\n// Tokens of only non-newline whitespace are arbitrarily long\nS_START.on('\\n', makeState(_text.NL)).on(WHITESPACE, S_WS);\n\n// If any whitespace except newline, more whitespace!\nS_WS.on(WHITESPACE, S_WS);\n\n// Generates states for top-level domains\n// Note that this is most accurate when tlds are in alphabetical order\nfor (var i = 0; i < tlds.length; i++) {\n\tvar newStates = (0, _state.stateify)(tlds[i], S_START, _text.TLD, _text.DOMAIN);\n\tdomainStates.push.apply(domainStates, newStates);\n}\n\n// Collect the states generated by different protocls\nvar partialProtocolFileStates = (0, _state.stateify)('file', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolFtpStates = (0, _state.stateify)('ftp', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolHttpStates = (0, _state.stateify)('http', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolMailtoStates = (0, _state.stateify)('mailto', S_START, _text.DOMAIN, _text.DOMAIN);\n\n// Add the states to the array of DOMAINeric states\ndomainStates.push.apply(domainStates, partialProtocolFileStates);\ndomainStates.push.apply(domainStates, partialProtocolFtpStates);\ndomainStates.push.apply(domainStates, partialProtocolHttpStates);\ndomainStates.push.apply(domainStates, partialProtocolMailtoStates);\n\n// Protocol states\nvar S_PROTOCOL_FILE = partialProtocolFileStates.pop();\nvar S_PROTOCOL_FTP = partialProtocolFtpStates.pop();\nvar S_PROTOCOL_HTTP = partialProtocolHttpStates.pop();\nvar S_MAILTO = partialProtocolMailtoStates.pop();\nvar S_PROTOCOL_SECURE = makeState(_text.DOMAIN);\nvar S_FULL_PROTOCOL = makeState(_text.PROTOCOL); // Full protocol ends with COLON\nvar S_FULL_MAILTO = makeState(_text.MAILTO); // Mailto ends with COLON\n\n// Secure protocols (end with 's')\nS_PROTOCOL_FTP.on('s', S_PROTOCOL_SECURE).on(':', S_FULL_PROTOCOL);\n\nS_PROTOCOL_HTTP.on('s', S_PROTOCOL_SECURE).on(':', S_FULL_PROTOCOL);\n\ndomainStates.push(S_PROTOCOL_SECURE);\n\n// Become protocol tokens after a COLON\nS_PROTOCOL_FILE.on(':', S_FULL_PROTOCOL);\nS_PROTOCOL_SECURE.on(':', S_FULL_PROTOCOL);\nS_MAILTO.on(':', S_FULL_MAILTO);\n\n// Localhost\nvar partialLocalhostStates = (0, _state.stateify)('localhost', S_START, _text.LOCALHOST, _text.DOMAIN);\ndomainStates.push.apply(domainStates, partialLocalhostStates);\n\n// Everything else\n// DOMAINs make more DOMAINs\n// Number and character transitions\nS_START.on(NUMBERS, S_NUM);\nS_NUM.on('-', S_DOMAIN_HYPHEN).on(NUMBERS, S_NUM).on(ALPHANUM, S_DOMAIN); // number becomes DOMAIN\n\nS_DOMAIN.on('-', S_DOMAIN_HYPHEN).on(ALPHANUM, S_DOMAIN);\n\n// All the generated states should have a jump to DOMAIN\nfor (var _i = 0; _i < domainStates.length; _i++) {\n\tdomainStates[_i].on('-', S_DOMAIN_HYPHEN).on(ALPHANUM, S_DOMAIN);\n}\n\nS_DOMAIN_HYPHEN.on('-', S_DOMAIN_HYPHEN).on(NUMBERS, S_DOMAIN).on(ALPHANUM, S_DOMAIN);\n\n// Set default transition\nS_START.defaultTransition = makeState(_text.SYM);\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {String} str Input string to scan\n\t@return {Array} Array of TOKEN instances\n*/\nvar run = function run(str) {\n\n\t// The state machine only looks at lowercase strings.\n\t// This selective `toLowerCase` is used because lowercasing the entire\n\t// string causes the length and character position to vary in some in some\n\t// non-English strings. This happens only on V8-based runtimes.\n\tvar lowerStr = str.replace(/[A-Z]/g, function (c) {\n\t\treturn c.toLowerCase();\n\t});\n\tvar len = str.length;\n\tvar tokens = []; // return value\n\n\tvar cursor = 0;\n\n\t// Tokenize the string\n\twhile (cursor < len) {\n\t\tvar state = S_START;\n\t\tvar nextState = null;\n\t\tvar tokenLength = 0;\n\t\tvar latestAccepting = null;\n\t\tvar sinceAccepts = -1;\n\n\t\twhile (cursor < len && (nextState = state.next(lowerStr[cursor]))) {\n\t\t\tstate = nextState;\n\n\t\t\t// Keep track of the latest accepting state\n\t\t\tif (state.accepts()) {\n\t\t\t\tsinceAccepts = 0;\n\t\t\t\tlatestAccepting = state;\n\t\t\t} else if (sinceAccepts >= 0) {\n\t\t\t\tsinceAccepts++;\n\t\t\t}\n\n\t\t\ttokenLength++;\n\t\t\tcursor++;\n\t\t}\n\n\t\tif (sinceAccepts < 0) {\n\t\t\tcontinue;\n\t\t} // Should never happen\n\n\t\t// Roll back to the latest accepting state\n\t\tcursor -= sinceAccepts;\n\t\ttokenLength -= sinceAccepts;\n\n\t\t// Get the class for the new token\n\t\tvar TOKEN = latestAccepting.emit(); // Current token class\n\n\t\t// No more jumps, just make a new token\n\t\ttokens.push(new TOKEN(str.substr(cursor - tokenLength, tokenLength)));\n\t}\n\n\treturn tokens;\n};\n\nvar start = S_START;\nexports.State = _state.CharacterState;\nexports.TOKENS = TOKENS;\nexports.run = run;\nexports.start = start;","'use strict';\n\nexports.__esModule = true;\nexports.start = exports.run = exports.TOKENS = exports.State = undefined;\n\nvar _state = require('./state');\n\nvar _multi = require('./tokens/multi');\n\nvar MULTI_TOKENS = _interopRequireWildcard(_multi);\n\nvar _text = require('./tokens/text');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/Email_address (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main parser\n*/\n\nvar makeState = function makeState(tokenClass) {\n\treturn new _state.TokenState(tokenClass);\n};\n\n// The universal starting state.\nvar S_START = makeState();\n\n// Intermediate states for URLs. Note that domains that begin with a protocol\n// are treated slighly differently from those that don't.\nvar S_PROTOCOL = makeState(); // e.g., 'http:'\nvar S_MAILTO = makeState(); // 'mailto:'\nvar S_PROTOCOL_SLASH = makeState(); // e.g., '/', 'http:/''\nvar S_PROTOCOL_SLASH_SLASH = makeState(); // e.g., '//', 'http://'\nvar S_DOMAIN = makeState(); // parsed string ends with a potential domain name (A)\nvar S_DOMAIN_DOT = makeState(); // (A) domain followed by DOT\nvar S_TLD = makeState(_multi.URL); // (A) Simplest possible URL with no query string\nvar S_TLD_COLON = makeState(); // (A) URL followed by colon (potential port number here)\nvar S_TLD_PORT = makeState(_multi.URL); // TLD followed by a port number\nvar S_URL = makeState(_multi.URL); // Long URL with optional port and maybe query string\nvar S_URL_NON_ACCEPTING = makeState(); // URL followed by some symbols (will not be part of the final URL)\nvar S_URL_OPENBRACE = makeState(); // URL followed by {\nvar S_URL_OPENBRACKET = makeState(); // URL followed by [\nvar S_URL_OPENANGLEBRACKET = makeState(); // URL followed by <\nvar S_URL_OPENPAREN = makeState(); // URL followed by (\nvar S_URL_OPENBRACE_Q = makeState(_multi.URL); // URL followed by { and some symbols that the URL can end it\nvar S_URL_OPENBRACKET_Q = makeState(_multi.URL); // URL followed by [ and some symbols that the URL can end it\nvar S_URL_OPENANGLEBRACKET_Q = makeState(_multi.URL); // URL followed by < and some symbols that the URL can end it\nvar S_URL_OPENPAREN_Q = makeState(_multi.URL); // URL followed by ( and some symbols that the URL can end it\nvar S_URL_OPENBRACE_SYMS = makeState(); // S_URL_OPENBRACE_Q followed by some symbols it cannot end it\nvar S_URL_OPENBRACKET_SYMS = makeState(); // S_URL_OPENBRACKET_Q followed by some symbols it cannot end it\nvar S_URL_OPENANGLEBRACKET_SYMS = makeState(); // S_URL_OPENANGLEBRACKET_Q followed by some symbols it cannot end it\nvar S_URL_OPENPAREN_SYMS = makeState(); // S_URL_OPENPAREN_Q followed by some symbols it cannot end it\nvar S_EMAIL_DOMAIN = makeState(); // parsed string starts with local email info + @ with a potential domain name (C)\nvar S_EMAIL_DOMAIN_DOT = makeState(); // (C) domain followed by DOT\nvar S_EMAIL = makeState(_multi.EMAIL); // (C) Possible email address (could have more tlds)\nvar S_EMAIL_COLON = makeState(); // (C) URL followed by colon (potential port number here)\nvar S_EMAIL_PORT = makeState(_multi.EMAIL); // (C) Email address with a port\nvar S_MAILTO_EMAIL = makeState(_multi.MAILTOEMAIL); // Email that begins with the mailto prefix (D)\nvar S_MAILTO_EMAIL_NON_ACCEPTING = makeState(); // (D) Followed by some non-query string chars\nvar S_LOCALPART = makeState(); // Local part of the email address\nvar S_LOCALPART_AT = makeState(); // Local part of the email address plus @\nvar S_LOCALPART_DOT = makeState(); // Local part of the email address plus '.' (localpart cannot end in .)\nvar S_NL = makeState(_multi.NL); // single new line\n\n// Make path from start to protocol (with '//')\nS_START.on(_text.NL, S_NL).on(_text.PROTOCOL, S_PROTOCOL).on(_text.MAILTO, S_MAILTO).on(_text.SLASH, S_PROTOCOL_SLASH);\n\nS_PROTOCOL.on(_text.SLASH, S_PROTOCOL_SLASH);\nS_PROTOCOL_SLASH.on(_text.SLASH, S_PROTOCOL_SLASH_SLASH);\n\n// The very first potential domain name\nS_START.on(_text.TLD, S_DOMAIN).on(_text.DOMAIN, S_DOMAIN).on(_text.LOCALHOST, S_TLD).on(_text.NUM, S_DOMAIN);\n\n// Force URL for protocol followed by anything sane\nS_PROTOCOL_SLASH_SLASH.on(_text.TLD, S_URL).on(_text.DOMAIN, S_URL).on(_text.NUM, S_URL).on(_text.LOCALHOST, S_URL);\n\n// Account for dots and hyphens\n// hyphens are usually parts of domain names\nS_DOMAIN.on(_text.DOT, S_DOMAIN_DOT);\nS_EMAIL_DOMAIN.on(_text.DOT, S_EMAIL_DOMAIN_DOT);\n\n// Hyphen can jump back to a domain name\n\n// After the first domain and a dot, we can find either a URL or another domain\nS_DOMAIN_DOT.on(_text.TLD, S_TLD).on(_text.DOMAIN, S_DOMAIN).on(_text.NUM, S_DOMAIN).on(_text.LOCALHOST, S_DOMAIN);\n\nS_EMAIL_DOMAIN_DOT.on(_text.TLD, S_EMAIL).on(_text.DOMAIN, S_EMAIL_DOMAIN).on(_text.NUM, S_EMAIL_DOMAIN).on(_text.LOCALHOST, S_EMAIL_DOMAIN);\n\n// S_TLD accepts! But the URL could be longer, try to find a match greedily\n// The `run` function should be able to \"rollback\" to the accepting state\nS_TLD.on(_text.DOT, S_DOMAIN_DOT);\nS_EMAIL.on(_text.DOT, S_EMAIL_DOMAIN_DOT);\n\n// Become real URLs after `SLASH` or `COLON NUM SLASH`\n// Here PSS and non-PSS converge\nS_TLD.on(_text.COLON, S_TLD_COLON).on(_text.SLASH, S_URL);\nS_TLD_COLON.on(_text.NUM, S_TLD_PORT);\nS_TLD_PORT.on(_text.SLASH, S_URL);\nS_EMAIL.on(_text.COLON, S_EMAIL_COLON);\nS_EMAIL_COLON.on(_text.NUM, S_EMAIL_PORT);\n\n// Types of characters the URL can definitely end in\nvar qsAccepting = [_text.DOMAIN, _text.AT, _text.LOCALHOST, _text.NUM, _text.PLUS, _text.POUND, _text.PROTOCOL, _text.SLASH, _text.TLD, _text.UNDERSCORE, _text.SYM, _text.AMPERSAND];\n\n// Types of tokens that can follow a URL and be part of the query string\n// but cannot be the very last characters\n// Characters that cannot appear in the URL at all should be excluded\nvar qsNonAccepting = [_text.COLON, _text.DOT, _text.QUERY, _text.PUNCTUATION, _text.CLOSEBRACE, _text.CLOSEBRACKET, _text.CLOSEANGLEBRACKET, _text.CLOSEPAREN, _text.OPENBRACE, _text.OPENBRACKET, _text.OPENANGLEBRACKET, _text.OPENPAREN];\n\n// These states are responsible primarily for determining whether or not to\n// include the final round bracket.\n\n// URL, followed by an opening bracket\nS_URL.on(_text.OPENBRACE, S_URL_OPENBRACE).on(_text.OPENBRACKET, S_URL_OPENBRACKET).on(_text.OPENANGLEBRACKET, S_URL_OPENANGLEBRACKET).on(_text.OPENPAREN, S_URL_OPENPAREN);\n\n// URL with extra symbols at the end, followed by an opening bracket\nS_URL_NON_ACCEPTING.on(_text.OPENBRACE, S_URL_OPENBRACE).on(_text.OPENBRACKET, S_URL_OPENBRACKET).on(_text.OPENANGLEBRACKET, S_URL_OPENANGLEBRACKET).on(_text.OPENPAREN, S_URL_OPENPAREN);\n\n// Closing bracket component. This character WILL be included in the URL\nS_URL_OPENBRACE.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN.on(_text.CLOSEPAREN, S_URL);\nS_URL_OPENBRACE_Q.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET_Q.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET_Q.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN_Q.on(_text.CLOSEPAREN, S_URL);\nS_URL_OPENBRACE_SYMS.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET_SYMS.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET_SYMS.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN_SYMS.on(_text.CLOSEPAREN, S_URL);\n\n// URL that beings with an opening bracket, followed by a symbols.\n// Note that the final state can still be `S_URL_OPENBRACE_Q` (if the URL only\n// has a single opening bracket for some reason).\nS_URL_OPENBRACE.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE.on(qsNonAccepting, S_URL_OPENBRACE_SYMS);\nS_URL_OPENBRACKET.on(qsNonAccepting, S_URL_OPENBRACKET_SYMS);\nS_URL_OPENANGLEBRACKET.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_SYMS);\nS_URL_OPENPAREN.on(qsNonAccepting, S_URL_OPENPAREN_SYMS);\n\n// URL that begins with an opening bracket, followed by some symbols\nS_URL_OPENBRACE_Q.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_Q.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_Q.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_Q.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE_Q.on(qsNonAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_Q.on(qsNonAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_Q.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_Q.on(qsNonAccepting, S_URL_OPENPAREN_Q);\n\nS_URL_OPENBRACE_SYMS.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_SYMS.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_SYMS.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_SYMS.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE_SYMS.on(qsNonAccepting, S_URL_OPENBRACE_SYMS);\nS_URL_OPENBRACKET_SYMS.on(qsNonAccepting, S_URL_OPENBRACKET_SYMS);\nS_URL_OPENANGLEBRACKET_SYMS.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_SYMS);\nS_URL_OPENPAREN_SYMS.on(qsNonAccepting, S_URL_OPENPAREN_SYMS);\n\n// Account for the query string\nS_URL.on(qsAccepting, S_URL);\nS_URL_NON_ACCEPTING.on(qsAccepting, S_URL);\n\nS_URL.on(qsNonAccepting, S_URL_NON_ACCEPTING);\nS_URL_NON_ACCEPTING.on(qsNonAccepting, S_URL_NON_ACCEPTING);\n\n// Email address-specific state definitions\n// Note: We are not allowing '/' in email addresses since this would interfere\n// with real URLs\n\n// For addresses with the mailto prefix\n// 'mailto:' followed by anything sane is a valid email\nS_MAILTO.on(_text.TLD, S_MAILTO_EMAIL).on(_text.DOMAIN, S_MAILTO_EMAIL).on(_text.NUM, S_MAILTO_EMAIL).on(_text.LOCALHOST, S_MAILTO_EMAIL);\n\n// Greedily get more potential valid email values\nS_MAILTO_EMAIL.on(qsAccepting, S_MAILTO_EMAIL).on(qsNonAccepting, S_MAILTO_EMAIL_NON_ACCEPTING);\nS_MAILTO_EMAIL_NON_ACCEPTING.on(qsAccepting, S_MAILTO_EMAIL).on(qsNonAccepting, S_MAILTO_EMAIL_NON_ACCEPTING);\n\n// For addresses without the mailto prefix\n// Tokens allowed in the localpart of the email\nvar localpartAccepting = [_text.DOMAIN, _text.NUM, _text.PLUS, _text.POUND, _text.QUERY, _text.UNDERSCORE, _text.SYM, _text.AMPERSAND, _text.TLD];\n\n// Some of the tokens in `localpartAccepting` are already accounted for here and\n// will not be overwritten (don't worry)\nS_DOMAIN.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT);\nS_TLD.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT);\nS_DOMAIN_DOT.on(localpartAccepting, S_LOCALPART);\n\n// Okay we're on a localpart. Now what?\n// TODO: IP addresses and what if the email starts with numbers?\nS_LOCALPART.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT) // close to an email address now\n.on(_text.DOT, S_LOCALPART_DOT);\nS_LOCALPART_DOT.on(localpartAccepting, S_LOCALPART);\nS_LOCALPART_AT.on(_text.TLD, S_EMAIL_DOMAIN).on(_text.DOMAIN, S_EMAIL_DOMAIN).on(_text.LOCALHOST, S_EMAIL);\n// States following `@` defined above\n\nvar run = function run(tokens) {\n\tvar len = tokens.length;\n\tvar cursor = 0;\n\tvar multis = [];\n\tvar textTokens = [];\n\n\twhile (cursor < len) {\n\t\tvar state = S_START;\n\t\tvar secondState = null;\n\t\tvar nextState = null;\n\t\tvar multiLength = 0;\n\t\tvar latestAccepting = null;\n\t\tvar sinceAccepts = -1;\n\n\t\twhile (cursor < len && !(secondState = state.next(tokens[cursor]))) {\n\t\t\t// Starting tokens with nowhere to jump to.\n\t\t\t// Consider these to be just plain text\n\t\t\ttextTokens.push(tokens[cursor++]);\n\t\t}\n\n\t\twhile (cursor < len && (nextState = secondState || state.next(tokens[cursor]))) {\n\n\t\t\t// Get the next state\n\t\t\tsecondState = null;\n\t\t\tstate = nextState;\n\n\t\t\t// Keep track of the latest accepting state\n\t\t\tif (state.accepts()) {\n\t\t\t\tsinceAccepts = 0;\n\t\t\t\tlatestAccepting = state;\n\t\t\t} else if (sinceAccepts >= 0) {\n\t\t\t\tsinceAccepts++;\n\t\t\t}\n\n\t\t\tcursor++;\n\t\t\tmultiLength++;\n\t\t}\n\n\t\tif (sinceAccepts < 0) {\n\n\t\t\t// No accepting state was found, part of a regular text token\n\t\t\t// Add all the tokens we looked at to the text tokens array\n\t\t\tfor (var i = cursor - multiLength; i < cursor; i++) {\n\t\t\t\ttextTokens.push(tokens[i]);\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Accepting state!\n\n\t\t\t// First close off the textTokens (if available)\n\t\t\tif (textTokens.length > 0) {\n\t\t\t\tmultis.push(new _multi.TEXT(textTokens));\n\t\t\t\ttextTokens = [];\n\t\t\t}\n\n\t\t\t// Roll back to the latest accepting state\n\t\t\tcursor -= sinceAccepts;\n\t\t\tmultiLength -= sinceAccepts;\n\n\t\t\t// Create a new multitoken\n\t\t\tvar MULTI = latestAccepting.emit();\n\t\t\tmultis.push(new MULTI(tokens.slice(cursor - multiLength, cursor)));\n\t\t}\n\t}\n\n\t// Finally close off the textTokens (if available)\n\tif (textTokens.length > 0) {\n\t\tmultis.push(new _multi.TEXT(textTokens));\n\t}\n\n\treturn multis;\n};\n\nexports.State = _state.TokenState;\nexports.TOKENS = MULTI_TOKENS;\nexports.run = run;\nexports.start = S_START;","'use strict';\n\nexports.__esModule = true;\nexports.URL = exports.TEXT = exports.NL = exports.EMAIL = exports.MAILTOEMAIL = exports.Base = undefined;\n\nvar _createTokenClass = require('./create-token-class');\n\nvar _class = require('../../utils/class');\n\nvar _text = require('./text');\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n// Is the given token a valid domain token?\n// Should nums be included here?\nfunction isDomainToken(token) {\n\treturn token instanceof _text.DOMAIN || token instanceof _text.TLD;\n}\n\n/**\n\tAbstract class used for manufacturing tokens of text tokens. That is rather\n\tthan the value for a token being a small string of text, it's value an array\n\tof text tokens.\n\n\tUsed for grouping together URLs, emails, hashtags, and other potential\n\tcreations.\n\n\t@class MultiToken\n\t@abstract\n*/\nvar MultiToken = (0, _createTokenClass.createTokenClass)();\n\nMultiToken.prototype = {\n\t/**\n \tString representing the type for this token\n \t@property type\n \t@default 'TOKEN'\n */\n\ttype: 'token',\n\n\t/**\n \tIs this multitoken a link?\n \t@property isLink\n \t@default false\n */\n\tisLink: false,\n\n\t/**\n \tReturn the string this token represents.\n \t@method toString\n \t@return {String}\n */\n\ttoString: function toString() {\n\t\tvar result = [];\n\t\tfor (var i = 0; i < this.v.length; i++) {\n\t\t\tresult.push(this.v[i].toString());\n\t\t}\n\t\treturn result.join('');\n\t},\n\n\n\t/**\n \tWhat should the value for this token be in the `href` HTML attribute?\n \tReturns the `.toString` value by default.\n \t\t@method toHref\n \t@return {String}\n */\n\ttoHref: function toHref() {\n\t\treturn this.toString();\n\t},\n\n\n\t/**\n \tReturns a hash of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {String} [protocol] `'http'` by default\n \t@return {Object}\n */\n\ttoObject: function toObject() {\n\t\tvar protocol = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'http';\n\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tvalue: this.toString(),\n\t\t\thref: this.toHref(protocol)\n\t\t};\n\t}\n};\n\n/**\n\tRepresents an arbitrarily mailto email address with the prefix included\n\t@class MAILTO\n\t@extends MultiToken\n*/\nvar MAILTOEMAIL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'email',\n\tisLink: true\n});\n\n/**\n\tRepresents a list of tokens making up a valid email address\n\t@class EMAIL\n\t@extends MultiToken\n*/\nvar EMAIL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'email',\n\tisLink: true,\n\ttoHref: function toHref() {\n\t\treturn 'mailto:' + this.toString();\n\t}\n});\n\n/**\n\tRepresents some plain text\n\t@class TEXT\n\t@extends MultiToken\n*/\nvar TEXT = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), { type: 'text' });\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class NL\n\t@extends MultiToken\n*/\nvar NL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), { type: 'nl' });\n\n/**\n\tRepresents a list of tokens making up a valid URL\n\t@class URL\n\t@extends MultiToken\n*/\nvar URL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'url',\n\tisLink: true,\n\n\t/**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@method href\n \t@param {String} protocol\n \t@return {String}\n */\n\ttoHref: function toHref() {\n\t\tvar protocol = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'http';\n\n\t\tvar hasProtocol = false;\n\t\tvar hasSlashSlash = false;\n\t\tvar tokens = this.v;\n\t\tvar result = [];\n\t\tvar i = 0;\n\n\t\t// Make the first part of the domain lowercase\n\t\t// Lowercase protocol\n\t\twhile (tokens[i] instanceof _text.PROTOCOL) {\n\t\t\thasProtocol = true;\n\t\t\tresult.push(tokens[i].toString().toLowerCase());\n\t\t\ti++;\n\t\t}\n\n\t\t// Skip slash-slash\n\t\twhile (tokens[i] instanceof _text.SLASH) {\n\t\t\thasSlashSlash = true;\n\t\t\tresult.push(tokens[i].toString());\n\t\t\ti++;\n\t\t}\n\n\t\t// Lowercase all other characters in the domain\n\t\twhile (isDomainToken(tokens[i])) {\n\t\t\tresult.push(tokens[i].toString().toLowerCase());\n\t\t\ti++;\n\t\t}\n\n\t\t// Leave all other characters as they were written\n\t\tfor (; i < tokens.length; i++) {\n\t\t\tresult.push(tokens[i].toString());\n\t\t}\n\n\t\tresult = result.join('');\n\n\t\tif (!(hasProtocol || hasSlashSlash)) {\n\t\t\tresult = protocol + '://' + result;\n\t\t}\n\n\t\treturn result;\n\t},\n\thasProtocol: function hasProtocol() {\n\t\treturn this.v[0] instanceof _text.PROTOCOL;\n\t}\n});\n\nexports.Base = MultiToken;\nexports.MAILTOEMAIL = MAILTOEMAIL;\nexports.EMAIL = EMAIL;\nexports.NL = NL;\nexports.TEXT = TEXT;\nexports.URL = URL;","module.exports = require('./lib/linkify-string').default;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _linkify = require('./linkify');\n\nvar linkify = _interopRequireWildcard(_linkify);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar tokenize = linkify.tokenize,\n options = linkify.options; /**\n \tConvert strings of text into linkable HTML text\n */\n\nvar Options = options.Options;\n\n\nfunction escapeText(text) {\n\treturn text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n}\n\nfunction escapeAttr(href) {\n\treturn href.replace(/\"/g, '"');\n}\n\nfunction attributesToString(attributes) {\n\tif (!attributes) {\n\t\treturn '';\n\t}\n\tvar result = [];\n\n\tfor (var attr in attributes) {\n\t\tvar val = attributes[attr] + '';\n\t\tresult.push(attr + '=\"' + escapeAttr(val) + '\"');\n\t}\n\treturn result.join(' ');\n}\n\nfunction linkifyStr(str) {\n\tvar opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\topts = new Options(opts);\n\n\tvar tokens = tokenize(str);\n\tvar result = [];\n\n\tfor (var i = 0; i < tokens.length; i++) {\n\t\tvar token = tokens[i];\n\n\t\tif (token.type === 'nl' && opts.nl2br) {\n\t\t\tresult.push('<br>\\n');\n\t\t\tcontinue;\n\t\t} else if (!token.isLink || !opts.check(token)) {\n\t\t\tresult.push(escapeText(token.toString()));\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar _opts$resolve = opts.resolve(token),\n\t\t formatted = _opts$resolve.formatted,\n\t\t formattedHref = _opts$resolve.formattedHref,\n\t\t tagName = _opts$resolve.tagName,\n\t\t className = _opts$resolve.className,\n\t\t target = _opts$resolve.target,\n\t\t attributes = _opts$resolve.attributes;\n\n\t\tvar link = '<' + tagName + ' href=\"' + escapeAttr(formattedHref) + '\"';\n\n\t\tif (className) {\n\t\t\tlink += ' class=\"' + escapeAttr(className) + '\"';\n\t\t}\n\n\t\tif (target) {\n\t\t\tlink += ' target=\"' + escapeAttr(target) + '\"';\n\t\t}\n\n\t\tif (attributes) {\n\t\t\tlink += ' ' + attributesToString(attributes);\n\t\t}\n\n\t\tlink += '>' + escapeText(formatted) + '</' + tagName + '>';\n\t\tresult.push(link);\n\t}\n\n\treturn result.join('');\n}\n\nif (!String.prototype.linkify) {\n\ttry {\n\t\tObject.defineProperty(String.prototype, 'linkify', {\n\t\t\tset: function set() {},\n\t\t\tget: function get() {\n\t\t\t\treturn function linkify(opts) {\n\t\t\t\t\treturn linkifyStr(this, opts);\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t} catch (e) {\n\t\t// IE 8 doesn't like Object.defineProperty on non-DOM objects\n\t\tif (!String.prototype.linkify) {\n\t\t\tString.prototype.linkify = function (opts) {\n\t\t\t\treturn linkifyStr(this, opts);\n\t\t\t};\n\t\t}\n\t}\n}\n\nexports.default = linkifyStr;","'use strict';\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _WhoIsTyping = require('../../WhoIsTyping');\n\nvar _WhoIsTyping2 = _interopRequireDefault(_WhoIsTyping);\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _MemberAvatar = require('../views/avatars/MemberAvatar');\n\nvar _MemberAvatar2 = _interopRequireDefault(_MemberAvatar);\n\nvar _Resend = require('../../Resend');\n\nvar _Resend2 = _interopRequireDefault(_Resend);\n\nvar _cryptodevices = require('../../cryptodevices');\n\nvar cryptodevices = _interopRequireWildcard(_cryptodevices);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _ErrorUtils = require('../../utils/ErrorUtils');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar STATUS_BAR_HIDDEN = 0;\nvar STATUS_BAR_EXPANDED = 1;\nvar STATUS_BAR_EXPANDED_LARGE = 2;\n\nfunction getUnsentMessages(room) {\n if (!room) {\n return [];\n }\n return room.getPendingEvents().filter(function (ev) {\n return ev.status === _matrixJsSdk2.default.EventStatus.NOT_SENT;\n });\n}\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomStatusBar',\n\n propTypes: {\n // the room this statusbar is representing.\n room: _propTypes2.default.object.isRequired,\n\n // the number of messages which have arrived since we've been scrolled up\n numUnreadMessages: _propTypes2.default.number,\n\n // this is true if we are fully scrolled-down, and are looking at\n // the end of the live timeline.\n atEndOfLiveTimeline: _propTypes2.default.bool,\n\n // This is true when the user is alone in the room, but has also sent a message.\n // Used to suggest to the user to invite someone\n sentMessageAndIsAlone: _propTypes2.default.bool,\n\n // true if there is an active call in this room (means we show\n // the 'Active Call' text in the status bar if there is nothing\n // more interesting)\n hasActiveCall: _propTypes2.default.bool,\n\n // Number of names to display in typing indication. E.g. set to 3, will\n // result in \"X, Y, Z and 100 others are typing.\"\n whoIsTypingLimit: _propTypes2.default.number,\n\n // true if the room is being peeked at. This affects components that shouldn't\n // logically be shown when peeking, such as a prompt to invite people to a room.\n isPeeking: _propTypes2.default.bool,\n\n // callback for when the user clicks on the 'resend all' button in the\n // 'unsent messages' bar\n onResendAllClick: _propTypes2.default.func,\n\n // callback for when the user clicks on the 'cancel all' button in the\n // 'unsent messages' bar\n onCancelAllClick: _propTypes2.default.func,\n\n // callback for when the user clicks on the 'invite others' button in the\n // 'you are alone' bar\n onInviteClick: _propTypes2.default.func,\n\n // callback for when the user clicks on the 'stop warning me' button in the\n // 'you are alone' bar\n onStopWarningClick: _propTypes2.default.func,\n\n // callback for when the user clicks on the 'scroll to bottom' button\n onScrollToBottomClick: _propTypes2.default.func,\n\n // callback for when we do something that changes the size of the\n // status bar. This is used to trigger a re-layout in the parent\n // component.\n onResize: _propTypes2.default.func,\n\n // callback for when the status bar can be hidden from view, as it is\n // not displaying anything\n onHidden: _propTypes2.default.func,\n\n // callback for when the status bar is displaying something and should\n // be visible\n onVisible: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n whoIsTypingLimit: 3\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n syncState: _MatrixClientPeg2.default.get().getSyncState(),\n syncStateData: _MatrixClientPeg2.default.get().getSyncStateData(),\n usersTyping: _WhoIsTyping2.default.usersTypingApartFromMe(this.props.room),\n unsentMessages: getUnsentMessages(this.props.room)\n };\n },\n\n componentWillMount: function componentWillMount() {\n _MatrixClientPeg2.default.get().on(\"sync\", this.onSyncStateChange);\n _MatrixClientPeg2.default.get().on(\"RoomMember.typing\", this.onRoomMemberTyping);\n _MatrixClientPeg2.default.get().on(\"Room.localEchoUpdated\", this._onRoomLocalEchoUpdated);\n\n this._checkSize();\n },\n\n componentDidUpdate: function componentDidUpdate() {\n this._checkSize();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // we may have entirely lost our client as we're logging out before clicking login on the guest bar...\n var client = _MatrixClientPeg2.default.get();\n if (client) {\n client.removeListener(\"sync\", this.onSyncStateChange);\n client.removeListener(\"RoomMember.typing\", this.onRoomMemberTyping);\n client.removeListener(\"Room.localEchoUpdated\", this._onRoomLocalEchoUpdated);\n }\n },\n\n onSyncStateChange: function onSyncStateChange(state, prevState, data) {\n if (state === \"SYNCING\" && prevState === \"SYNCING\") {\n return;\n }\n this.setState({\n syncState: state,\n syncStateData: data\n });\n },\n\n onRoomMemberTyping: function onRoomMemberTyping(ev, member) {\n this.setState({\n usersTyping: _WhoIsTyping2.default.usersTypingApartFromMeAndIgnored(this.props.room)\n });\n },\n\n _onSendWithoutVerifyingClick: function _onSendWithoutVerifyingClick() {\n var _this = this;\n\n cryptodevices.getUnknownDevicesForRoom(_MatrixClientPeg2.default.get(), this.props.room).then(function (devices) {\n cryptodevices.markAllDevicesKnown(_MatrixClientPeg2.default.get(), devices);\n _Resend2.default.resendUnsentEvents(_this.props.room);\n });\n },\n\n _onResendAllClick: function _onResendAllClick() {\n _Resend2.default.resendUnsentEvents(this.props.room);\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n },\n\n _onCancelAllClick: function _onCancelAllClick() {\n _Resend2.default.cancelUnsentEvents(this.props.room);\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n },\n\n _onShowDevicesClick: function _onShowDevicesClick() {\n cryptodevices.showUnknownDeviceDialogForMessages(_MatrixClientPeg2.default.get(), this.props.room);\n },\n\n _onRoomLocalEchoUpdated: function _onRoomLocalEchoUpdated(event, room, oldEventId, oldStatus) {\n if (room.roomId !== this.props.room.roomId) return;\n\n this.setState({\n unsentMessages: getUnsentMessages(this.props.room)\n });\n },\n\n // Check whether current size is greater than 0, if yes call props.onVisible\n _checkSize: function _checkSize() {\n if (this._getSize()) {\n if (this.props.onVisible) this.props.onVisible();\n } else {\n if (this.props.onHidden) this.props.onHidden();\n }\n },\n\n // We don't need the actual height - just whether it is likely to have\n // changed - so we use '0' to indicate normal size, and other values to\n // indicate other sizes.\n _getSize: function _getSize() {\n if (this._shouldShowConnectionError() || this.state.usersTyping.length > 0 || this.props.numUnreadMessages || !this.props.atEndOfLiveTimeline || this.props.hasActiveCall || this.props.sentMessageAndIsAlone) {\n return STATUS_BAR_EXPANDED;\n } else if (this.state.unsentMessages.length > 0) {\n return STATUS_BAR_EXPANDED_LARGE;\n }\n return STATUS_BAR_HIDDEN;\n },\n\n // return suitable content for the image on the left of the status bar.\n //\n // if wantPlaceholder is true, we include a \"...\" placeholder if\n // there is nothing better to put in.\n _getIndicator: function _getIndicator(wantPlaceholder) {\n if (this.props.numUnreadMessages) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_scrollDownIndicator',\n onClick: this.props.onScrollToBottomClick },\n _react2.default.createElement('img', { src: 'img/newmessages.svg', width: '24', height: '24',\n alt: '' })\n );\n }\n\n var AccessibleButton = _index2.default.getComponent(\"elements.AccessibleButton\");\n if (!this.props.atEndOfLiveTimeline) {\n return _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_RoomStatusBar_scrollDownIndicator',\n onClick: this.props.onScrollToBottomClick },\n _react2.default.createElement('img', { src: 'img/scrolldown.svg', width: '24', height: '24',\n alt: (0, _languageHandler._t)(\"Scroll to bottom of page\"),\n title: (0, _languageHandler._t)(\"Scroll to bottom of page\") })\n );\n }\n\n if (this.props.hasActiveCall) {\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n return _react2.default.createElement(TintableSvg, { src: 'img/sound-indicator.svg', width: '23', height: '20' });\n }\n\n if (this._shouldShowConnectionError()) {\n return null;\n }\n\n if (wantPlaceholder) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_typingIndicatorAvatars' },\n this._renderTypingIndicatorAvatars(this.props.whoIsTypingLimit)\n );\n }\n\n return null;\n },\n\n _renderTypingIndicatorAvatars: function _renderTypingIndicatorAvatars(limit) {\n var users = this.state.usersTyping;\n\n var othersCount = 0;\n if (users.length > limit) {\n othersCount = users.length - limit + 1;\n users = users.slice(0, limit - 1);\n }\n\n var avatars = users.map(function (u) {\n return _react2.default.createElement(_MemberAvatar2.default, {\n key: u.userId,\n member: u,\n width: 24,\n height: 24,\n resizeMethod: 'crop'\n });\n });\n\n if (othersCount > 0) {\n avatars.push(_react2.default.createElement(\n 'span',\n { className: 'mx_RoomStatusBar_typingIndicatorRemaining', key: 'others' },\n '+',\n othersCount\n ));\n }\n\n return avatars;\n },\n\n _shouldShowConnectionError: function _shouldShowConnectionError() {\n // no conn bar trumps unread count since you can't get unread messages\n // without a connection! (technically may already have some but meh)\n // It also trumps the \"some not sent\" msg since you can't resend without\n // a connection!\n // There's one situation in which we don't show this 'no connection' bar, and that's\n // if it's a resource limit exceeded error: those are shown in the top bar.\n var errorIsMauError = Boolean(this.state.syncStateData && this.state.syncStateData.error && this.state.syncStateData.error.errcode === 'M_RESOURCE_LIMIT_EXCEEDED');\n return this.state.syncState === \"ERROR\" && !errorIsMauError;\n },\n\n _getUnsentMessageContent: function _getUnsentMessageContent() {\n var _this2 = this;\n\n var unsentMessages = this.state.unsentMessages;\n if (!unsentMessages.length) return null;\n\n var title = void 0;\n var content = void 0;\n\n var hasUDE = unsentMessages.some(function (m) {\n return m.error && m.error.name === \"UnknownDeviceError\";\n });\n\n if (hasUDE) {\n title = (0, _languageHandler._t)(\"Message not sent due to unknown devices being present\");\n content = (0, _languageHandler._t)(\"<showDevicesText>Show devices</showDevicesText>, <sendAnywayText>send anyway</sendAnywayText> or <cancelText>cancel</cancelText>.\", {}, {\n 'showDevicesText': function showDevicesText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'resend', onClick: _this2._onShowDevicesClick },\n sub\n );\n },\n 'sendAnywayText': function sendAnywayText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'sendAnyway', onClick: _this2._onSendWithoutVerifyingClick },\n sub\n );\n },\n 'cancelText': function cancelText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'cancel', onClick: _this2._onCancelAllClick },\n sub\n );\n }\n });\n } else {\n var consentError = null;\n var resourceLimitError = null;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(unsentMessages), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var m = _step.value;\n\n if (m.error && m.error.errcode === 'M_CONSENT_NOT_GIVEN') {\n consentError = m.error;\n break;\n } else if (m.error && m.error.errcode === 'M_RESOURCE_LIMIT_EXCEEDED') {\n resourceLimitError = m.error;\n break;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (consentError) {\n title = (0, _languageHandler._t)(\"You can't send any messages until you review and agree to \" + \"<consentLink>our terms and conditions</consentLink>.\", {}, {\n 'consentLink': function consentLink(sub) {\n return _react2.default.createElement(\n 'a',\n { href: consentError.data && consentError.data.consent_uri, target: '_blank' },\n sub\n );\n }\n });\n } else if (resourceLimitError) {\n title = (0, _ErrorUtils.messageForResourceLimitError)(resourceLimitError.data.limit_type, resourceLimitError.data.admin_contact, {\n 'monthly_active_user': (0, _languageHandler._td)(\"Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. \" + \"Please <a>contact your service administrator</a> to continue using the service.\"),\n '': (0, _languageHandler._td)(\"Your message wasn't sent because this homeserver has exceeded a resource limit. \" + \"Please <a>contact your service administrator</a> to continue using the service.\")\n });\n } else if (unsentMessages.length === 1 && unsentMessages[0].error && unsentMessages[0].error.data && unsentMessages[0].error.data.error) {\n title = unsentMessages[0].error.data.error;\n } else {\n title = (0, _languageHandler._t)('%(count)s of your messages have not been sent.', { count: unsentMessages.length });\n }\n content = (0, _languageHandler._t)(\"%(count)s <resendText>Resend all</resendText> or <cancelText>cancel all</cancelText> now. \" + \"You can also select individual messages to resend or cancel.\", { count: unsentMessages.length }, {\n 'resendText': function resendText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'resend', onClick: _this2._onResendAllClick },\n sub\n );\n },\n 'cancelText': function cancelText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'cancel', onClick: _this2._onCancelAllClick },\n sub\n );\n }\n });\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_connectionLostBar' },\n _react2.default.createElement('img', { src: 'img/warning.svg', width: '24', height: '23', title: (0, _languageHandler._t)(\"Warning\"), alt: '' }),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_connectionLostBar_title' },\n title\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_connectionLostBar_desc' },\n content\n )\n )\n );\n },\n\n // return suitable content for the main (text) part of the status bar.\n _getContent: function _getContent() {\n var _this3 = this;\n\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n\n if (this._shouldShowConnectionError()) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_connectionLostBar' },\n _react2.default.createElement('img', { src: 'img/warning.svg', width: '24', height: '23', title: '/!\\\\ ', alt: '/!\\\\ ' }),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_connectionLostBar_title' },\n (0, _languageHandler._t)('Connectivity to the server has been lost.')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_connectionLostBar_desc' },\n (0, _languageHandler._t)('Sent messages will be stored until your connection has returned.')\n )\n )\n );\n }\n\n if (this.state.unsentMessages.length > 0) {\n return this._getUnsentMessageContent();\n }\n\n // unread count trumps who is typing since the unread count is only\n // set when you've scrolled up\n if (this.props.numUnreadMessages) {\n // MUST use var name \"count\" for pluralization to kick in\n var unreadMsgs = (0, _languageHandler._t)(\"%(count)s new messages\", { count: this.props.numUnreadMessages });\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_unreadMessagesBar',\n onClick: this.props.onScrollToBottomClick },\n unreadMsgs\n );\n }\n\n var typingString = _WhoIsTyping2.default.whoIsTypingString(this.state.usersTyping, this.props.whoIsTypingLimit);\n if (typingString) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_typingBar' },\n _react2.default.createElement(\n EmojiText,\n null,\n typingString\n )\n );\n }\n\n if (this.props.hasActiveCall) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_callBar' },\n _react2.default.createElement(\n 'b',\n null,\n (0, _languageHandler._t)('Active call')\n )\n );\n }\n\n // If you're alone in the room, and have sent a message, suggest to invite someone\n if (this.props.sentMessageAndIsAlone && !this.props.isPeeking) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_isAlone' },\n (0, _languageHandler._t)(\"There's no one else here! Would you like to <inviteText>invite others</inviteText> \" + \"or <nowarnText>stop warning about the empty room</nowarnText>?\", {}, {\n 'inviteText': function inviteText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'invite', onClick: _this3.props.onInviteClick },\n sub\n );\n },\n 'nowarnText': function nowarnText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'nowarn', onClick: _this3.props.onStopWarningClick },\n sub\n );\n }\n })\n );\n }\n\n return null;\n },\n\n render: function render() {\n var content = this._getContent();\n var indicator = this._getIndicator(this.state.usersTyping.length > 0);\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_indicator' },\n indicator\n ),\n _react2.default.createElement(\n 'div',\n { role: 'alert' },\n content\n )\n );\n }\n});\n//# sourceMappingURL=RoomStatusBar.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MatrixClientPeg = require(\"./MatrixClientPeg\");\n\n\nmodule.exports = {\n usersTypingApartFromMeAndIgnored: function usersTypingApartFromMeAndIgnored(room) {\n return this.usersTyping(room, [MatrixClientPeg.get().credentials.userId].concat(MatrixClientPeg.get().getIgnoredUsers()));\n },\n\n usersTypingApartFromMe: function usersTypingApartFromMe(room) {\n return this.usersTyping(room, [MatrixClientPeg.get().credentials.userId]);\n },\n\n /**\n * Given a Room object and, optionally, a list of userID strings\n * to exclude, return a list of user objects who are typing.\n */\n usersTyping: function usersTyping(room, exclude) {\n var whoIsTyping = [];\n\n if (exclude === undefined) {\n exclude = [];\n }\n\n var memberKeys = (0, _keys2.default)(room.currentState.members);\n for (var i = 0; i < memberKeys.length; ++i) {\n var userId = memberKeys[i];\n\n if (room.currentState.members[userId].typing) {\n if (exclude.indexOf(userId) == -1) {\n whoIsTyping.push(room.currentState.members[userId]);\n }\n }\n }\n\n return whoIsTyping;\n },\n\n whoIsTypingString: function whoIsTypingString(whoIsTyping, limit) {\n var othersCount = 0;\n if (whoIsTyping.length > limit) {\n othersCount = whoIsTyping.length - limit + 1;\n }\n if (whoIsTyping.length == 0) {\n return '';\n } else if (whoIsTyping.length == 1) {\n return (0, _languageHandler._t)('%(displayName)s is typing', { displayName: whoIsTyping[0].name });\n }\n var names = whoIsTyping.map(function (m) {\n return m.name;\n });\n if (othersCount >= 1) {\n return (0, _languageHandler._t)('%(names)s and %(count)s others are typing', { names: names.slice(0, limit - 1).join(', '), count: othersCount });\n } else {\n var lastPerson = names.pop();\n return (0, _languageHandler._t)('%(names)s and %(lastPerson)s are typing', { names: names.join(', '), lastPerson: lastPerson });\n }\n }\n};\n//# sourceMappingURL=WhoIsTyping.js.map","'use strict';\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _reactBeautifulDnd = require('react-beautiful-dnd');\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Unread = require('../../Unread');\n\nvar _Unread2 = _interopRequireDefault(_Unread);\n\nvar _RoomNotifs = require('../../RoomNotifs');\n\nvar RoomNotifs = _interopRequireWildcard(_RoomNotifs);\n\nvar _FormattingUtils = require('../../utils/FormattingUtils');\n\nvar FormattingUtils = _interopRequireWildcard(_FormattingUtils);\n\nvar _Keyboard = require('../../Keyboard');\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// turn this on for drop & drag console debugging galore\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar debug = false;\n\nvar TRUNCATE_AT = 10;\n\nvar RoomSubList = _react2.default.createClass({\n displayName: 'RoomSubList',\n\n debug: debug,\n\n propTypes: {\n list: _propTypes2.default.arrayOf(_propTypes2.default.object).isRequired,\n label: _propTypes2.default.string.isRequired,\n tagName: _propTypes2.default.string,\n editable: _propTypes2.default.bool,\n\n order: _propTypes2.default.string.isRequired,\n\n // passed through to RoomTile and used to highlight room with `!` regardless of notifications count\n isInvite: _propTypes2.default.bool,\n\n startAsHidden: _propTypes2.default.bool,\n showSpinner: _propTypes2.default.bool, // true to show a spinner if 0 elements when expanded\n collapsed: _propTypes2.default.bool.isRequired, // is LeftPanel collapsed?\n onHeaderClick: _propTypes2.default.func,\n alwaysShowHeader: _propTypes2.default.bool,\n incomingCall: _propTypes2.default.object,\n onShowMoreRooms: _propTypes2.default.func,\n searchFilter: _propTypes2.default.string,\n emptyContent: _propTypes2.default.node, // content shown if the list is empty\n headerItems: _propTypes2.default.node, // content shown in the sublist header\n extraTiles: _propTypes2.default.arrayOf(_propTypes2.default.node), // extra elements added beneath tiles\n showEmpty: _propTypes2.default.bool\n },\n\n getInitialState: function getInitialState() {\n return {\n hidden: this.props.startAsHidden || false,\n truncateAt: TRUNCATE_AT,\n sortedList: []\n };\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onHeaderClick: function onHeaderClick() {}, // NOP\n onShowMoreRooms: function onShowMoreRooms() {}, // NOP\n extraTiles: [],\n isInvite: false,\n showEmpty: true\n };\n },\n\n componentWillMount: function componentWillMount() {\n this.setState({\n sortedList: this.applySearchFilter(this.props.list, this.props.searchFilter)\n });\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n // order the room list appropriately before we re-render\n //if (debug) console.log(\"received new props, list = \" + newProps.list);\n this.setState({\n sortedList: this.applySearchFilter(newProps.list, newProps.searchFilter)\n });\n },\n\n applySearchFilter: function applySearchFilter(list, filter) {\n if (filter === \"\") return list;\n var lcFilter = filter.toLowerCase();\n // case insensitive if room name includes filter,\n // or if starts with `#` and one of room's aliases starts with filter\n return list.filter(function (room) {\n return room.name && room.name.toLowerCase().includes(lcFilter) || filter[0] === '#' && room.getAliases().some(function (alias) {\n return alias.toLowerCase().startsWith(lcFilter);\n });\n });\n },\n\n // The header is collapsable if it is hidden or not stuck\n // The dataset elements are added in the RoomList _initAndPositionStickyHeaders method\n isCollapsableOnClick: function isCollapsableOnClick() {\n var stuck = this.refs.header.dataset.stuck;\n if (this.state.hidden || stuck === undefined || stuck === \"none\") {\n return true;\n } else {\n return false;\n }\n },\n\n onAction: function onAction(payload) {\n // XXX: Previously RoomList would forceUpdate whenever on_room_read is dispatched,\n // but this is no longer true, so we must do it here (and can apply the small\n // optimisation of checking that we care about the room being read).\n //\n // Ultimately we need to transition to a state pushing flow where something\n // explicitly notifies the components concerned that the notif count for a room\n // has change (e.g. a Flux store).\n if (payload.action === 'on_room_read' && this.props.list.some(function (r) {\n return r.roomId === payload.roomId;\n })) {\n this.forceUpdate();\n }\n },\n\n onClick: function onClick(ev) {\n if (this.isCollapsableOnClick()) {\n // The header isCollapsable, so the click is to be interpreted as collapse and truncation logic\n var isHidden = !this.state.hidden;\n this.setState({ hidden: isHidden });\n\n if (isHidden) {\n // as good a way as any to reset the truncate state\n this.setState({ truncateAt: TRUNCATE_AT });\n }\n\n this.props.onShowMoreRooms();\n this.props.onHeaderClick(isHidden);\n } else {\n // The header is stuck, so the click is to be interpreted as a scroll to the header\n this.props.onHeaderClick(this.state.hidden, this.refs.header.dataset.originalPosition);\n }\n },\n\n onRoomTileClick: function onRoomTileClick(roomId, ev) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: roomId,\n clear_search: ev && (ev.keyCode === _Keyboard.KeyCode.ENTER || ev.keyCode === _Keyboard.KeyCode.SPACE)\n });\n },\n\n\n _shouldShowNotifBadge: function _shouldShowNotifBadge(roomNotifState) {\n var showBadgeInStates = [RoomNotifs.ALL_MESSAGES, RoomNotifs.ALL_MESSAGES_LOUD];\n return showBadgeInStates.indexOf(roomNotifState) > -1;\n },\n\n _shouldShowMentionBadge: function _shouldShowMentionBadge(roomNotifState) {\n return roomNotifState !== RoomNotifs.MUTE;\n },\n\n /**\n * Total up all the notification counts from the rooms\n *\n * @param {Number} truncateAt If supplied will only total notifications for rooms outside the truncation number\n * @returns {Array} The array takes the form [total, highlight] where highlight is a bool\n */\n roomNotificationCount: function roomNotificationCount(truncateAt) {\n var self = this;\n\n if (this.props.isInvite) {\n return [0, true];\n }\n\n return this.props.list.reduce(function (result, room, index) {\n if (truncateAt === undefined || index >= truncateAt) {\n var roomNotifState = RoomNotifs.getRoomNotifsState(room.roomId);\n var highlight = room.getUnreadNotificationCount('highlight') > 0;\n var notificationCount = room.getUnreadNotificationCount();\n\n var notifBadges = notificationCount > 0 && self._shouldShowNotifBadge(roomNotifState);\n var mentionBadges = highlight && self._shouldShowMentionBadge(roomNotifState);\n var badges = notifBadges || mentionBadges;\n\n if (badges) {\n result[0] += notificationCount;\n if (highlight) {\n result[1] = true;\n }\n }\n }\n return result;\n }, [0, false]);\n },\n\n _updateSubListCount: function _updateSubListCount() {\n // Force an update by setting the state to the current state\n // Doing it this way rather than using forceUpdate(), so that the shouldComponentUpdate()\n // method is honoured\n this.setState(this.state);\n },\n\n makeRoomTiles: function makeRoomTiles() {\n var _this = this;\n\n var DNDRoomTile = _index2.default.getComponent(\"rooms.DNDRoomTile\");\n var RoomTile = _index2.default.getComponent(\"rooms.RoomTile\");\n return this.state.sortedList.map(function (room, index) {\n // XXX: is it evil to pass in this as a prop to RoomTile? Yes.\n\n // We should only use <DNDRoomTile /> when editable\n var RoomTileComponent = _this.props.editable ? DNDRoomTile : RoomTile;\n return _react2.default.createElement(RoomTileComponent, {\n index: index // For DND\n , room: room,\n roomSubList: _this,\n tagName: _this.props.tagName,\n key: room.roomId,\n collapsed: _this.props.collapsed || false,\n unread: _Unread2.default.doesRoomHaveUnreadMessages(room),\n highlight: room.getUnreadNotificationCount('highlight') > 0 || _this.props.isInvite,\n isInvite: _this.props.isInvite,\n refreshSubList: _this._updateSubListCount,\n incomingCall: null,\n onClick: _this.onRoomTileClick\n });\n });\n },\n\n _onNotifBadgeClick: function _onNotifBadgeClick(e) {\n // prevent the roomsublist collapsing\n e.preventDefault();\n e.stopPropagation();\n // find first room which has notifications and switch to it\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this.state.sortedList), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var room = _step.value;\n\n var roomNotifState = RoomNotifs.getRoomNotifsState(room.roomId);\n var highlight = room.getUnreadNotificationCount('highlight') > 0;\n var notificationCount = room.getUnreadNotificationCount();\n\n var notifBadges = notificationCount > 0 && this._shouldShowNotifBadge(roomNotifState);\n var mentionBadges = highlight && this._shouldShowMentionBadge(roomNotifState);\n\n if (notifBadges || mentionBadges) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: room.roomId\n });\n return;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n },\n\n _onInviteBadgeClick: function _onInviteBadgeClick(e) {\n // prevent the roomsublist collapsing\n e.preventDefault();\n e.stopPropagation();\n // switch to first room in sortedList as that'll be the top of the list for the user\n if (this.state.sortedList && this.state.sortedList.length > 0) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: this.state.sortedList[0].roomId\n });\n } else if (this.props.extraTiles && this.props.extraTiles.length > 0) {\n // Group Invites are different in that they are all extra tiles and not rooms\n // XXX: this is a horrible special case because Group Invite sublist is a hack\n if (this.props.extraTiles[0].props && this.props.extraTiles[0].props.group instanceof _matrixJsSdk.Group) {\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: this.props.extraTiles[0].props.group.groupId\n });\n }\n }\n },\n\n _getHeaderJsx: function _getHeaderJsx() {\n var subListNotifications = this.roomNotificationCount();\n var subListNotifCount = subListNotifications[0];\n var subListNotifHighlight = subListNotifications[1];\n\n var totalTiles = this.props.list.length + (this.props.extraTiles || []).length;\n var roomCount = totalTiles > 0 ? totalTiles : '';\n\n var chevronClasses = (0, _classnames2.default)({\n 'mx_RoomSubList_chevron': true,\n 'mx_RoomSubList_chevronRight': this.state.hidden,\n 'mx_RoomSubList_chevronDown': !this.state.hidden\n });\n\n var badgeClasses = (0, _classnames2.default)({\n 'mx_RoomSubList_badge': true,\n 'mx_RoomSubList_badgeHighlight': subListNotifHighlight\n });\n\n var badge = void 0;\n if (subListNotifCount > 0) {\n badge = _react2.default.createElement(\n 'div',\n { className: badgeClasses, onClick: this._onNotifBadgeClick },\n FormattingUtils.formatCount(subListNotifCount)\n );\n } else if (this.props.isInvite) {\n // no notifications but highlight anyway because this is an invite badge\n badge = _react2.default.createElement(\n 'div',\n { className: badgeClasses, onClick: this._onInviteBadgeClick },\n '!'\n );\n }\n\n // When collapsed, allow a long hover on the header to show user\n // the full tag name and room count\n var title = void 0;\n if (this.props.collapsed) {\n title = this.props.label;\n if (roomCount !== '') {\n title += \" [\" + roomCount + \"]\";\n }\n }\n\n var incomingCall = void 0;\n if (this.props.incomingCall) {\n // We can assume that if we have an incoming call then it is for this list\n var IncomingCallBox = _index2.default.getComponent(\"voip.IncomingCallBox\");\n incomingCall = _react2.default.createElement(IncomingCallBox, { className: 'mx_RoomSubList_incomingCall', incomingCall: this.props.incomingCall });\n }\n\n var tabindex = this.props.searchFilter === \"\" ? \"0\" : \"-1\";\n\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSubList_labelContainer', title: title, ref: 'header' },\n _react2.default.createElement(\n AccessibleButton,\n { onClick: this.onClick, className: 'mx_RoomSubList_label', tabIndex: tabindex },\n this.props.collapsed ? '' : this.props.label,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSubList_roomCount' },\n roomCount\n ),\n _react2.default.createElement('div', { className: chevronClasses }),\n badge,\n incomingCall\n )\n );\n },\n\n _createOverflowTile: function _createOverflowTile(overflowCount, totalCount) {\n var content = _react2.default.createElement('div', { className: 'mx_RoomSubList_chevronDown' });\n\n var overflowNotifications = this.roomNotificationCount(TRUNCATE_AT);\n var overflowNotifCount = overflowNotifications[0];\n var overflowNotifHighlight = overflowNotifications[1];\n if (overflowNotifCount && !this.props.collapsed) {\n content = FormattingUtils.formatCount(overflowNotifCount);\n }\n\n var badgeClasses = (0, _classnames2.default)({\n 'mx_RoomSubList_moreBadge': true,\n 'mx_RoomSubList_moreBadgeNotify': overflowNotifCount && !this.props.collapsed,\n 'mx_RoomSubList_moreBadgeHighlight': overflowNotifHighlight && !this.props.collapsed\n });\n\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n return _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_RoomSubList_ellipsis', onClick: this._showFullMemberList },\n _react2.default.createElement('div', { className: 'mx_RoomSubList_line' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSubList_more' },\n (0, _languageHandler._t)(\"more\")\n ),\n _react2.default.createElement(\n 'div',\n { className: badgeClasses },\n content\n )\n );\n },\n\n _showFullMemberList: function _showFullMemberList() {\n this.setState({\n truncateAt: -1\n });\n\n this.props.onShowMoreRooms();\n this.props.onHeaderClick(false);\n },\n\n render: function render() {\n var TruncatedList = _index2.default.getComponent('elements.TruncatedList');\n\n var content = void 0;\n\n if (this.props.showEmpty) {\n // this is new behaviour with still controversial UX in that in hiding RoomSubLists the drop zones for DnD\n // are also gone so when filtering users can't DnD rooms to some tags but is a lot cleaner otherwise.\n if (this.state.sortedList.length === 0 && !this.props.searchFilter && this.props.extraTiles.length === 0) {\n content = this.props.emptyContent;\n } else {\n var _content;\n\n content = this.makeRoomTiles();\n (_content = content).push.apply(_content, (0, _toConsumableArray3.default)(this.props.extraTiles));\n }\n } else {\n if (this.state.sortedList.length === 0 && this.props.extraTiles.length === 0) {\n // if no search filter is applied and there is a placeholder defined then show it, otherwise show nothing\n if (!this.props.searchFilter && this.props.emptyContent) {\n content = this.props.emptyContent;\n } else {\n // don't show an empty sublist\n return null;\n }\n } else {\n var _content2;\n\n content = this.makeRoomTiles();\n (_content2 = content).push.apply(_content2, (0, _toConsumableArray3.default)(this.props.extraTiles));\n }\n }\n\n if (this.state.sortedList.length > 0 || this.props.extraTiles.length > 0 || this.props.editable) {\n var subList = void 0;\n var classes = \"mx_RoomSubList\";\n\n if (!this.state.hidden) {\n subList = _react2.default.createElement(\n TruncatedList,\n { className: classes, truncateAt: this.state.truncateAt,\n createOverflowElement: this._createOverflowTile },\n content\n );\n } else {\n subList = _react2.default.createElement(TruncatedList, { className: classes });\n }\n\n var subListContent = _react2.default.createElement(\n 'div',\n null,\n this._getHeaderJsx(),\n subList\n );\n\n return this.props.editable ? _react2.default.createElement(\n _reactBeautifulDnd.Droppable,\n {\n droppableId: \"room-sub-list-droppable_\" + this.props.tagName,\n type: 'draggable-RoomTile'\n },\n function (provided, snapshot) {\n return _react2.default.createElement(\n 'div',\n { ref: provided.innerRef },\n subListContent\n );\n }\n ) : subListContent;\n } else {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n if (this.props.showSpinner) {\n content = _react2.default.createElement(Loader, null);\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSubList' },\n this.props.alwaysShowHeader ? this._getHeaderJsx() : undefined,\n this.state.hidden ? undefined : content\n );\n }\n }\n});\n\nmodule.exports = RoomSubList;\n//# sourceMappingURL=RoomSubList.js.map","\"use strict\";\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _toConsumableArray2 = require(\"babel-runtime/helpers/toConsumableArray\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _shouldHideEvent = require(\"../../shouldHideEvent\");\n\nvar _shouldHideEvent2 = _interopRequireDefault(_shouldHideEvent);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _filesize = require(\"filesize\");\n\nvar _filesize2 = _interopRequireDefault(_filesize);\n\nvar _languageHandler = require(\"../../languageHandler\");\n\nvar _Keyboard = require(\"../../Keyboard\");\n\nvar _RoomViewStore = require(\"../../stores/RoomViewStore\");\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _RoomScrollStateStore = require(\"../../stores/RoomScrollStateStore\");\n\nvar _RoomScrollStateStore2 = _interopRequireDefault(_RoomScrollStateStore);\n\nvar _WidgetEchoStore = require(\"../../stores/WidgetEchoStore\");\n\nvar _WidgetEchoStore2 = _interopRequireDefault(_WidgetEchoStore);\n\nvar _SettingsStore = require(\"../../settings/SettingsStore\");\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _WidgetUtils = require(\"../../utils/WidgetUtils\");\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require(\"react\"); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n// TODO: This component is enormous! There's several things which could stand-alone:\n// - Search results component\n// - Drag and drop\n// - File uploading - uploadFile()\n\nvar ReactDOM = require(\"react-dom\");\n\nvar classNames = require(\"classnames\");\n\n\nvar MatrixClientPeg = require(\"../../MatrixClientPeg\");\nvar ContentMessages = require(\"../../ContentMessages\");\nvar Modal = require(\"../../Modal\");\nvar sdk = require('../../index');\nvar CallHandler = require('../../CallHandler');\nvar dis = require(\"../../dispatcher\");\nvar Tinter = require(\"../../Tinter\");\nvar rate_limited_func = require('../../ratelimitedfunc');\nvar ObjectUtils = require('../../ObjectUtils');\nvar Rooms = require('../../Rooms');\n\nvar DEBUG = false;\nvar debuglog = function debuglog() {};\n\nvar BROWSER_SUPPORTS_SANDBOX = 'sandbox' in document.createElement('iframe');\n\nif (DEBUG) {\n // using bind means that we get to keep useful line numbers in the console\n debuglog = console.log.bind(console);\n}\n\nmodule.exports = React.createClass({\n displayName: 'RoomView',\n propTypes: {\n ConferenceHandler: _propTypes2.default.any,\n\n // Called with the credentials of a registered user (if they were a ROU that\n // transitioned to PWLU)\n onRegistered: _propTypes2.default.func,\n\n // An object representing a third party invite to join this room\n // Fields:\n // * inviteSignUrl (string) The URL used to join this room from an email invite\n // (given as part of the link in the invite email)\n // * invitedEmail (string) The email address that was invited to this room\n thirdPartyInvite: _propTypes2.default.object,\n\n // Any data about the room that would normally come from the Home Server\n // but has been passed out-of-band, eg. the room name and avatar URL\n // from an email invite (a workaround for the fact that we can't\n // get this information from the HS using an email invite).\n // Fields:\n // * name (string) The room's name\n // * avatarUrl (string) The mxc:// avatar URL for the room\n // * inviterName (string) The display name of the person who\n // * invited us tovthe room\n oobData: _propTypes2.default.object,\n\n // is the RightPanel collapsed?\n collapsedRhs: _propTypes2.default.bool,\n\n // Servers the RoomView can use to try and assist joins\n viaServers: _propTypes2.default.arrayOf(_propTypes2.default.string)\n },\n\n getInitialState: function getInitialState() {\n var llMembers = MatrixClientPeg.get().hasLazyLoadMembersEnabled();\n return {\n room: null,\n roomId: null,\n roomLoading: true,\n peekLoading: false,\n shouldPeek: true,\n\n // Media limits for uploading.\n mediaConfig: undefined,\n\n // used to trigger a rerender in TimelinePanel once the members are loaded,\n // so RR are rendered again (now with the members available), ...\n membersLoaded: !llMembers,\n // The event to be scrolled to initially\n initialEventId: null,\n // The offset in pixels from the event with which to scroll vertically\n initialEventPixelOffset: null,\n // Whether to highlight the event scrolled to\n isInitialEventHighlighted: null,\n\n forwardingEvent: null,\n editingRoomSettings: false,\n uploadingRoomSettings: false,\n numUnreadMessages: 0,\n draggingFile: false,\n searching: false,\n searchResults: null,\n callState: null,\n guestsCanJoin: false,\n canPeek: false,\n showApps: false,\n isAlone: false,\n isPeeking: false,\n showingPinned: false,\n\n // error object, as from the matrix client/server API\n // If we failed to load information about the room,\n // store the error here.\n roomLoadError: null,\n\n // Have we sent a request to join the room that we're waiting to complete?\n joining: false,\n\n // this is true if we are fully scrolled-down, and are looking at\n // the end of the live timeline. It has the effect of hiding the\n // 'scroll to bottom' knob, among a couple of other things.\n atEndOfLiveTimeline: true,\n\n showTopUnreadMessagesBar: false,\n\n auxPanelMaxHeight: undefined,\n\n statusBarVisible: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n this.dispatcherRef = dis.register(this.onAction);\n MatrixClientPeg.get().on(\"Room\", this.onRoom);\n MatrixClientPeg.get().on(\"Room.timeline\", this.onRoomTimeline);\n MatrixClientPeg.get().on(\"Room.name\", this.onRoomName);\n MatrixClientPeg.get().on(\"Room.accountData\", this.onRoomAccountData);\n MatrixClientPeg.get().on(\"RoomState.members\", this.onRoomStateMember);\n MatrixClientPeg.get().on(\"Room.myMembership\", this.onMyMembership);\n MatrixClientPeg.get().on(\"accountData\", this.onAccountData);\n MatrixClientPeg.get().on(\"crypto.keyBackupStatus\", this.onKeyBackupStatus);\n this._fetchMediaConfig();\n // Start listening for RoomViewStore updates\n this._roomStoreToken = _RoomViewStore2.default.addListener(this._onRoomViewStoreUpdate);\n this._onRoomViewStoreUpdate(true);\n\n _WidgetEchoStore2.default.on('update', this._onWidgetEchoStoreUpdate);\n },\n\n _fetchMediaConfig: function _fetchMediaConfig() {\n var _this = this;\n\n var invalidateCache = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n /// NOTE: Using global here so we don't make repeated requests for the\n /// config every time we swap room.\n if (global.mediaConfig !== undefined && !invalidateCache) {\n this.setState({ mediaConfig: global.mediaConfig });\n return;\n }\n console.log(\"[Media Config] Fetching\");\n MatrixClientPeg.get().getMediaConfig().then(function (config) {\n console.log(\"[Media Config] Fetched config:\", config);\n return config;\n }).catch(function () {\n // Media repo can't or won't report limits, so provide an empty object (no limits).\n console.log(\"[Media Config] Could not fetch config, so not limiting uploads.\");\n return {};\n }).then(function (config) {\n global.mediaConfig = config;\n _this.setState({ mediaConfig: config });\n });\n },\n\n _onRoomViewStoreUpdate: function _onRoomViewStoreUpdate(initial) {\n if (this.unmounted) {\n return;\n }\n\n if (!initial && this.state.roomId !== _RoomViewStore2.default.getRoomId()) {\n // RoomView explicitly does not support changing what room\n // is being viewed: instead it should just be re-mounted when\n // switching rooms. Therefore, if the room ID changes, we\n // ignore this. We either need to do this or add code to handle\n // saving the scroll position (otherwise we end up saving the\n // scroll position against the wrong room).\n\n // Given that doing the setState here would cause a bunch of\n // unnecessary work, we just ignore the change since we know\n // that if the current room ID has changed from what we thought\n // it was, it means we're about to be unmounted.\n return;\n }\n\n var newState = {\n roomId: _RoomViewStore2.default.getRoomId(),\n roomAlias: _RoomViewStore2.default.getRoomAlias(),\n roomLoading: _RoomViewStore2.default.isRoomLoading(),\n roomLoadError: _RoomViewStore2.default.getRoomLoadError(),\n joining: _RoomViewStore2.default.isJoining(),\n initialEventId: _RoomViewStore2.default.getInitialEventId(),\n isInitialEventHighlighted: _RoomViewStore2.default.isInitialEventHighlighted(),\n forwardingEvent: _RoomViewStore2.default.getForwardingEvent(),\n shouldPeek: _RoomViewStore2.default.shouldPeek(),\n showingPinned: _SettingsStore2.default.getValue(\"PinnedEvents.isOpen\", _RoomViewStore2.default.getRoomId()),\n editingRoomSettings: _RoomViewStore2.default.isEditingSettings()\n };\n\n if (this.state.editingRoomSettings && !newState.editingRoomSettings) dis.dispatch({ action: 'focus_composer' });\n\n // Temporary logging to diagnose https://github.com/vector-im/riot-web/issues/4307\n console.log('RVS update:', newState.roomId, newState.roomAlias, 'loading?', newState.roomLoading, 'joining?', newState.joining, 'initial?', initial, 'shouldPeek?', newState.shouldPeek);\n\n // NB: This does assume that the roomID will not change for the lifetime of\n // the RoomView instance\n if (initial) {\n newState.room = MatrixClientPeg.get().getRoom(newState.roomId);\n if (newState.room) {\n newState.showApps = this._shouldShowApps(newState.room);\n this._onRoomLoaded(newState.room);\n }\n }\n\n if (this.state.roomId === null && newState.roomId !== null) {\n // Get the scroll state for the new room\n\n // If an event ID wasn't specified, default to the one saved for this room\n // in the scroll state store. Assume initialEventPixelOffset should be set.\n if (!newState.initialEventId) {\n var roomScrollState = _RoomScrollStateStore2.default.getScrollState(newState.roomId);\n if (roomScrollState) {\n newState.initialEventId = roomScrollState.focussedEvent;\n newState.initialEventPixelOffset = roomScrollState.pixelOffset;\n }\n }\n }\n\n // Clear the search results when clicking a search result (which changes the\n // currently scrolled to event, this.state.initialEventId).\n if (this.state.initialEventId !== newState.initialEventId) {\n newState.searchResults = null;\n }\n\n this.setState(newState);\n // At this point, newState.roomId could be null (e.g. the alias might not\n // have been resolved yet) so anything called here must handle this case.\n\n // We pass the new state into this function for it to read: it needs to\n // observe the new state but we don't want to put it in the setState\n // callback because this would prevent the setStates from being batched,\n // ie. cause it to render RoomView twice rather than the once that is necessary.\n if (initial) {\n this._setupRoom(newState.room, newState.roomId, newState.joining, newState.shouldPeek);\n }\n },\n\n _onWidgetEchoStoreUpdate: function _onWidgetEchoStoreUpdate() {\n this.setState({\n showApps: this._shouldShowApps(this.state.room)\n });\n },\n\n _setupRoom: function _setupRoom(room, roomId, joining, shouldPeek) {\n var _this2 = this;\n\n // if this is an unknown room then we're in one of three states:\n // - This is a room we can peek into (search engine) (we can /peek)\n // - This is a room we can publicly join or were invited to. (we can /join)\n // - This is a room we cannot join at all. (no action can help us)\n // We can't try to /join because this may implicitly accept invites (!)\n // We can /peek though. If it fails then we present the join UI. If it\n // succeeds then great, show the preview (but we still may be able to /join!).\n // Note that peeking works by room ID and room ID only, as opposed to joining\n // which must be by alias or invite wherever possible (peeking currently does\n // not work over federation).\n\n // NB. We peek if we have never seen the room before (i.e. js-sdk does not know\n // about it). We don't peek in the historical case where we were joined but are\n // now not joined because the js-sdk peeking API will clobber our historical room,\n // making it impossible to indicate a newly joined room.\n if (!joining && roomId) {\n if (this.props.autoJoin) {\n this.onJoinButtonClicked();\n } else if (!room && shouldPeek) {\n console.log(\"Attempting to peek into room %s\", roomId);\n this.setState({\n peekLoading: true,\n isPeeking: true // this will change to false if peeking fails\n });\n MatrixClientPeg.get().peekInRoom(roomId).then(function (room) {\n if (_this2.unmounted) {\n return;\n }\n _this2.setState({\n room: room,\n peekLoading: false\n });\n _this2._onRoomLoaded(room);\n }, function (err) {\n if (_this2.unmounted) {\n return;\n }\n\n // Stop peeking if anything went wrong\n _this2.setState({\n isPeeking: false\n });\n\n // This won't necessarily be a MatrixError, but we duck-type\n // here and say if it's got an 'errcode' key with the right value,\n // it means we can't peek.\n if (err.errcode == \"M_GUEST_ACCESS_FORBIDDEN\") {\n // This is fine: the room just isn't peekable (we assume).\n _this2.setState({\n peekLoading: false\n });\n } else {\n throw err;\n }\n });\n } else if (room) {\n //viewing a previously joined room, try to lazy load members\n\n // Stop peeking because we have joined this room previously\n MatrixClientPeg.get().stopPeeking();\n this.setState({ isPeeking: false });\n }\n }\n },\n\n _shouldShowApps: function _shouldShowApps(room) {\n if (!BROWSER_SUPPORTS_SANDBOX) return false;\n\n // Check if user has previously chosen to hide the app drawer for this\n // room. If so, do not show apps\n var hideWidgetDrawer = localStorage.getItem(room.roomId + \"_hide_widget_drawer\");\n\n if (hideWidgetDrawer === \"true\") {\n return false;\n }\n\n var widgets = _WidgetEchoStore2.default.getEchoedRoomWidgets(room.roomId, _WidgetUtils2.default.getRoomWidgets(room));\n\n return widgets.length > 0 || _WidgetEchoStore2.default.roomHasPendingWidgets(room.roomId, _WidgetUtils2.default.getRoomWidgets(room));\n },\n\n componentDidMount: function componentDidMount() {\n var call = this._getCallForRoom();\n var callState = call ? call.call_state : \"ended\";\n this.setState({\n callState: callState\n });\n\n this._updateConfCallNotification();\n\n window.addEventListener('beforeunload', this.onPageUnload);\n window.addEventListener('resize', this.onResize);\n this.onResize();\n\n document.addEventListener(\"keydown\", this.onKeyDown);\n\n // XXX: EVIL HACK to autofocus inviting on empty rooms.\n // We use the setTimeout to avoid racing with focus_composer.\n if (this.state.room && this.state.room.getJoinedMemberCount() == 1 && this.state.room.getLiveTimeline() && this.state.room.getLiveTimeline().getEvents() && this.state.room.getLiveTimeline().getEvents().length <= 6) {\n var inviteBox = document.getElementById(\"mx_SearchableEntityList_query\");\n setTimeout(function () {\n if (inviteBox) {\n inviteBox.focus();\n }\n }, 50);\n }\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n return !ObjectUtils.shallowEqual(this.props, nextProps) || !ObjectUtils.shallowEqual(this.state, nextState);\n },\n\n componentDidUpdate: function componentDidUpdate() {\n if (this.refs.roomView) {\n var roomView = ReactDOM.findDOMNode(this.refs.roomView);\n if (!roomView.ondrop) {\n roomView.addEventListener('drop', this.onDrop);\n roomView.addEventListener('dragover', this.onDragOver);\n roomView.addEventListener('dragleave', this.onDragLeaveOrEnd);\n roomView.addEventListener('dragend', this.onDragLeaveOrEnd);\n }\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // set a boolean to say we've been unmounted, which any pending\n // promises can use to throw away their results.\n //\n // (We could use isMounted, but facebook have deprecated that.)\n this.unmounted = true;\n\n // update the scroll map before we get unmounted\n if (this.state.roomId) {\n _RoomScrollStateStore2.default.setScrollState(this.state.roomId, this._getScrollState());\n }\n\n if (this.refs.roomView) {\n // disconnect the D&D event listeners from the room view. This\n // is really just for hygiene - we're going to be\n // deleted anyway, so it doesn't matter if the event listeners\n // don't get cleaned up.\n var roomView = ReactDOM.findDOMNode(this.refs.roomView);\n roomView.removeEventListener('drop', this.onDrop);\n roomView.removeEventListener('dragover', this.onDragOver);\n roomView.removeEventListener('dragleave', this.onDragLeaveOrEnd);\n roomView.removeEventListener('dragend', this.onDragLeaveOrEnd);\n }\n dis.unregister(this.dispatcherRef);\n if (MatrixClientPeg.get()) {\n MatrixClientPeg.get().removeListener(\"Room\", this.onRoom);\n MatrixClientPeg.get().removeListener(\"Room.timeline\", this.onRoomTimeline);\n MatrixClientPeg.get().removeListener(\"Room.name\", this.onRoomName);\n MatrixClientPeg.get().removeListener(\"Room.accountData\", this.onRoomAccountData);\n MatrixClientPeg.get().removeListener(\"Room.myMembership\", this.onMyMembership);\n MatrixClientPeg.get().removeListener(\"RoomState.members\", this.onRoomStateMember);\n MatrixClientPeg.get().removeListener(\"accountData\", this.onAccountData);\n MatrixClientPeg.get().removeListener(\"crypto.keyBackupStatus\", this.onKeyBackupStatus);\n }\n\n window.removeEventListener('beforeunload', this.onPageUnload);\n window.removeEventListener('resize', this.onResize);\n\n document.removeEventListener(\"keydown\", this.onKeyDown);\n\n // Remove RoomStore listener\n if (this._roomStoreToken) {\n this._roomStoreToken.remove();\n }\n\n _WidgetEchoStore2.default.removeListener('update', this._onWidgetEchoStoreUpdate);\n\n // cancel any pending calls to the rate_limited_funcs\n this._updateRoomMembers.cancelPendingCall();\n\n // no need to do this as Dir & Settings are now overlays. It just burnt CPU.\n // console.log(\"Tinter.tint from RoomView.unmount\");\n // Tinter.tint(); // reset colourscheme\n },\n\n onPageUnload: function onPageUnload(event) {\n if (ContentMessages.getCurrentUploads().length > 0) {\n return event.returnValue = (0, _languageHandler._t)(\"You seem to be uploading files, are you sure you want to quit?\");\n } else if (this._getCallForRoom() && this.state.callState !== 'ended') {\n return event.returnValue = (0, _languageHandler._t)(\"You seem to be in a call, are you sure you want to quit?\");\n }\n },\n\n\n onKeyDown: function onKeyDown(ev) {\n var handled = false;\n var ctrlCmdOnly = (0, _Keyboard.isOnlyCtrlOrCmdKeyEvent)(ev);\n\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.KEY_D:\n if (ctrlCmdOnly) {\n this.onMuteAudioClick();\n handled = true;\n }\n break;\n\n case _Keyboard.KeyCode.KEY_E:\n if (ctrlCmdOnly) {\n this.onMuteVideoClick();\n handled = true;\n }\n break;\n }\n\n if (handled) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n case 'message_send_failed':\n case 'message_sent':\n this._checkIfAlone(this.state.room);\n break;\n case 'post_sticker_message':\n this.injectSticker(payload.data.content.url, payload.data.content.info, payload.data.description || payload.data.name);\n break;\n case 'picture_snapshot':\n this.uploadFile(payload.file);\n break;\n case 'notifier_enabled':\n case 'upload_failed':\n // 413: File was too big or upset the server in some way.\n if (payload.error.http_status === 413) {\n this._fetchMediaConfig(true);\n }\n case 'upload_started':\n case 'upload_finished':\n this.forceUpdate();\n break;\n case 'call_state':\n // don't filter out payloads for room IDs other than props.room because\n // we may be interested in the conf 1:1 room\n\n if (!payload.room_id) {\n return;\n }\n\n var call = this._getCallForRoom();\n var callState;\n\n if (call) {\n callState = call.call_state;\n } else {\n callState = \"ended\";\n }\n\n // possibly remove the conf call notification if we're now in\n // the conf\n this._updateConfCallNotification();\n\n this.setState({\n callState: callState\n });\n\n break;\n case 'appsDrawer':\n this.setState({\n showApps: payload.show\n });\n break;\n }\n },\n\n onRoomTimeline: function onRoomTimeline(ev, room, toStartOfTimeline, removed, data) {\n if (this.unmounted) return;\n\n // ignore events for other rooms\n if (!room) return;\n if (!this.state.room || room.roomId != this.state.room.roomId) return;\n\n // ignore events from filtered timelines\n if (data.timeline.getTimelineSet() !== room.getUnfilteredTimelineSet()) return;\n\n if (ev.getType() === \"org.matrix.room.preview_urls\") {\n this._updatePreviewUrlVisibility(room);\n }\n\n // ignore anything but real-time updates at the end of the room:\n // updates from pagination will happen when the paginate completes.\n if (toStartOfTimeline || !data || !data.liveEvent) return;\n\n // no point handling anything while we're waiting for the join to finish:\n // we'll only be showing a spinner.\n if (this.state.joining) return;\n\n if (ev.getSender() !== MatrixClientPeg.get().credentials.userId) {\n // update unread count when scrolled up\n if (!this.state.searchResults && this.state.atEndOfLiveTimeline) {\n // no change\n } else if (!(0, _shouldHideEvent2.default)(ev)) {\n this.setState(function (state, props) {\n return { numUnreadMessages: state.numUnreadMessages + 1 };\n });\n }\n }\n },\n\n onRoomName: function onRoomName(room) {\n if (this.state.room && room.roomId == this.state.room.roomId) {\n this.forceUpdate();\n }\n },\n\n onRoomRecoveryReminderFinished: function onRoomRecoveryReminderFinished(backupCreated) {\n var _this3 = this;\n\n return (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (backupCreated) {\n _context.next = 3;\n break;\n }\n\n _context.next = 3;\n return (0, _bluebird.resolve)(_SettingsStore2.default.setValue(\"showRoomRecoveryReminder\", null, _SettingsStore.SettingLevel.ACCOUNT, false));\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, _this3);\n }))();\n },\n onKeyBackupStatus: function onKeyBackupStatus() {\n // Key backup status changes affect whether the in-room recovery\n // reminder is displayed.\n this.forceUpdate();\n },\n\n\n canResetTimeline: function canResetTimeline() {\n if (!this.refs.messagePanel) {\n return true;\n }\n return this.refs.messagePanel.canResetTimeline();\n },\n\n // called when state.room is first initialised (either at initial load,\n // after a successful peek, or after we join the room).\n _onRoomLoaded: function _onRoomLoaded(room) {\n this._warnAboutEncryption(room);\n this._calculatePeekRules(room);\n this._updatePreviewUrlVisibility(room);\n this._loadMembersIfJoined(room);\n },\n\n _loadMembersIfJoined: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(room) {\n var cli, errorMessage;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // lazy load members if enabled\n cli = MatrixClientPeg.get();\n\n if (!cli.hasLazyLoadMembersEnabled()) {\n _context2.next = 14;\n break;\n }\n\n if (!(room && room.getMyMembership() === 'join')) {\n _context2.next = 14;\n break;\n }\n\n _context2.prev = 3;\n _context2.next = 6;\n return (0, _bluebird.resolve)(room.loadMembersIfNeeded());\n\n case 6:\n if (!this.unmounted) {\n this.setState({ membersLoaded: true });\n }\n _context2.next = 14;\n break;\n\n case 9:\n _context2.prev = 9;\n _context2.t0 = _context2[\"catch\"](3);\n errorMessage = \"Fetching room members for \" + room.roomId + \" failed.\" + \" Room members will appear incomplete.\";\n\n console.error(errorMessage);\n console.error(_context2.t0);\n\n case 14:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[3, 9]]);\n }));\n\n function _loadMembersIfJoined(_x2) {\n return _ref.apply(this, arguments);\n }\n\n return _loadMembersIfJoined;\n }(),\n\n _warnAboutEncryption: function _warnAboutEncryption(room) {\n if (!MatrixClientPeg.get().isRoomEncrypted(room.roomId)) {\n return;\n }\n var userHasUsedEncryption = false;\n if (localStorage) {\n userHasUsedEncryption = localStorage.getItem('mx_user_has_used_encryption');\n }\n if (!userHasUsedEncryption) {\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n Modal.createTrackedDialog('E2E Warning', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Warning!\"),\n hasCancelButton: false,\n description: React.createElement(\n \"div\",\n null,\n React.createElement(\n \"p\",\n null,\n (0, _languageHandler._t)(\"End-to-end encryption is in beta and may not be reliable\"),\n \".\"\n ),\n React.createElement(\n \"p\",\n null,\n (0, _languageHandler._t)(\"You should not yet trust it to secure data\"),\n \".\"\n ),\n React.createElement(\n \"p\",\n null,\n (0, _languageHandler._t)(\"Devices will not yet be able to decrypt history from before they joined the room\"),\n \".\"\n ),\n React.createElement(\n \"p\",\n null,\n (0, _languageHandler._t)(\"Encrypted messages will not be visible on clients that do not yet implement encryption\"),\n \".\"\n )\n )\n });\n }\n if (localStorage) {\n localStorage.setItem('mx_user_has_used_encryption', true);\n }\n },\n\n _calculatePeekRules: function _calculatePeekRules(room) {\n var guestAccessEvent = room.currentState.getStateEvents(\"m.room.guest_access\", \"\");\n if (guestAccessEvent && guestAccessEvent.getContent().guest_access === \"can_join\") {\n this.setState({\n guestsCanJoin: true\n });\n }\n\n var historyVisibility = room.currentState.getStateEvents(\"m.room.history_visibility\", \"\");\n if (historyVisibility && historyVisibility.getContent().history_visibility === \"world_readable\") {\n this.setState({\n canPeek: true\n });\n }\n },\n\n _updatePreviewUrlVisibility: function _updatePreviewUrlVisibility(_ref2) {\n var roomId = _ref2.roomId;\n\n // URL Previews in E2EE rooms can be a privacy leak so use a different setting which is per-room explicit\n var key = MatrixClientPeg.get().isRoomEncrypted(roomId) ? 'urlPreviewsEnabled_e2ee' : 'urlPreviewsEnabled';\n this.setState({\n showUrlPreview: _SettingsStore2.default.getValue(key, roomId)\n });\n },\n\n onRoom: function onRoom(room) {\n var _this4 = this;\n\n if (!room || room.roomId !== this.state.roomId) {\n return;\n }\n this.setState({\n room: room\n }, function () {\n _this4._onRoomLoaded(room);\n });\n },\n\n updateTint: function updateTint() {\n var room = this.state.room;\n if (!room) return;\n\n console.log(\"Tinter.tint from updateTint\");\n var colorScheme = _SettingsStore2.default.getValue(\"roomColor\", room.roomId);\n Tinter.tint(colorScheme.primary_color, colorScheme.secondary_color);\n },\n\n onAccountData: function onAccountData(event) {\n var type = event.getType();\n if ((type === \"org.matrix.preview_urls\" || type === \"im.vector.web.settings\") && this.state.room) {\n // non-e2ee url previews are stored in legacy event type `org.matrix.room.preview_urls`\n this._updatePreviewUrlVisibility(this.state.room);\n }\n },\n\n onRoomAccountData: function onRoomAccountData(event, room) {\n if (room.roomId == this.state.roomId) {\n var type = event.getType();\n if (type === \"org.matrix.room.color_scheme\") {\n var colorScheme = event.getContent();\n // XXX: we should validate the event\n console.log(\"Tinter.tint from onRoomAccountData\");\n Tinter.tint(colorScheme.primary_color, colorScheme.secondary_color);\n } else if (type === \"org.matrix.room.preview_urls\" || type === \"im.vector.web.settings\") {\n // non-e2ee url previews are stored in legacy event type `org.matrix.room.preview_urls`\n this._updatePreviewUrlVisibility(room);\n }\n }\n },\n\n onRoomStateMember: function onRoomStateMember(ev, state, member) {\n // ignore if we don't have a room yet\n if (!this.state.room) {\n return;\n }\n\n // ignore members in other rooms\n if (member.roomId !== this.state.room.roomId) {\n return;\n }\n\n this._updateRoomMembers();\n },\n\n onMyMembership: function onMyMembership(room, membership, oldMembership) {\n if (room.roomId === this.state.roomId) {\n this.forceUpdate();\n this._loadMembersIfJoined(room);\n }\n },\n\n // rate limited because a power level change will emit an event for every\n // member in the room.\n _updateRoomMembers: new rate_limited_func(function () {\n // a member state changed in this room\n // refresh the conf call notification state\n this._updateConfCallNotification();\n this._updateDMState();\n this._checkIfAlone(this.state.room);\n }, 500),\n\n _checkIfAlone: function _checkIfAlone(room) {\n var warnedAboutLonelyRoom = false;\n if (localStorage) {\n warnedAboutLonelyRoom = localStorage.getItem('mx_user_alone_warned_' + this.state.room.roomId);\n }\n if (warnedAboutLonelyRoom) {\n if (this.state.isAlone) this.setState({ isAlone: false });\n return;\n }\n\n var joinedOrInvitedMemberCount = room.getJoinedMemberCount() + room.getInvitedMemberCount();\n this.setState({ isAlone: joinedOrInvitedMemberCount === 1 });\n },\n\n _updateConfCallNotification: function _updateConfCallNotification() {\n var room = this.state.room;\n if (!room || !this.props.ConferenceHandler) {\n return;\n }\n var confMember = room.getMember(this.props.ConferenceHandler.getConferenceUserIdForRoom(room.roomId));\n\n if (!confMember) {\n return;\n }\n var confCall = this.props.ConferenceHandler.getConferenceCallForRoom(confMember.roomId);\n\n // A conf call notification should be displayed if there is an ongoing\n // conf call but this cilent isn't a part of it.\n this.setState({\n displayConfCallNotification: (!confCall || confCall.call_state === \"ended\") && confMember.membership === \"join\"\n });\n },\n\n _updateDMState: function _updateDMState() {\n var room = this.state.room;\n if (room.getMyMembership() != \"join\") {\n return;\n }\n var dmInviter = room.getDMInviter();\n if (dmInviter) {\n Rooms.setDMRoom(room.roomId, dmInviter);\n }\n },\n\n\n onSearchResultsResize: function onSearchResultsResize() {\n dis.dispatch({ action: 'timeline_resize' }, true);\n },\n\n onSearchResultsFillRequest: function onSearchResultsFillRequest(backwards) {\n if (!backwards) {\n return _bluebird2.default.resolve(false);\n }\n\n if (this.state.searchResults.next_batch) {\n debuglog(\"requesting more search results\");\n var searchPromise = MatrixClientPeg.get().backPaginateRoomEventsSearch(this.state.searchResults);\n return this._handleSearchResult(searchPromise);\n } else {\n debuglog(\"no more search results\");\n return _bluebird2.default.resolve(false);\n }\n },\n\n onInviteButtonClick: function onInviteButtonClick() {\n // call AddressPickerDialog\n dis.dispatch({\n action: 'view_invite',\n roomId: this.state.room.roomId\n });\n this.setState({ isAlone: false }); // there's a good chance they'll invite someone\n },\n\n onStopAloneWarningClick: function onStopAloneWarningClick() {\n if (localStorage) {\n localStorage.setItem('mx_user_alone_warned_' + this.state.room.roomId, true);\n }\n this.setState({ isAlone: false });\n },\n\n onJoinButtonClicked: function onJoinButtonClicked(ev) {\n var _this5 = this;\n\n var cli = MatrixClientPeg.get();\n\n // If the user is a ROU, allow them to transition to a PWLU\n if (cli && cli.isGuest()) {\n // Join this room once the user has registered and logged in\n var signUrl = this.props.thirdPartyInvite ? this.props.thirdPartyInvite.inviteSignUrl : undefined;\n dis.dispatch({\n action: 'do_after_sync_prepared',\n deferred_action: {\n action: 'join_room',\n opts: { inviteSignUrl: signUrl, viaServers: this.props.viaServers }\n }\n });\n\n // Don't peek whilst registering otherwise getPendingEventList complains\n // Do this by indicating our intention to join\n dis.dispatch({\n action: 'will_join'\n });\n\n var SetMxIdDialog = sdk.getComponent('views.dialogs.SetMxIdDialog');\n var close = Modal.createTrackedDialog('Set MXID', '', SetMxIdDialog, {\n homeserverUrl: cli.getHomeserverUrl(),\n onFinished: function onFinished(submitted, credentials) {\n if (submitted) {\n _this5.props.onRegistered(credentials);\n } else {\n dis.dispatch({\n action: 'cancel_after_sync_prepared'\n });\n dis.dispatch({\n action: 'cancel_join'\n });\n }\n },\n onDifferentServerClicked: function onDifferentServerClicked(ev) {\n dis.dispatch({ action: 'start_registration' });\n close();\n },\n onLoginClick: function onLoginClick(ev) {\n dis.dispatch({ action: 'start_login' });\n close();\n }\n }).close;\n return;\n }\n\n _bluebird2.default.resolve().then(function () {\n var signUrl = _this5.props.thirdPartyInvite ? _this5.props.thirdPartyInvite.inviteSignUrl : undefined;\n dis.dispatch({\n action: 'join_room',\n opts: { inviteSignUrl: signUrl, viaServers: _this5.props.viaServers }\n });\n return _bluebird2.default.resolve();\n });\n },\n\n onMessageListScroll: function onMessageListScroll(ev) {\n if (this.refs.messagePanel.isAtEndOfLiveTimeline()) {\n this.setState({\n numUnreadMessages: 0,\n atEndOfLiveTimeline: true\n });\n } else {\n this.setState({\n atEndOfLiveTimeline: false\n });\n }\n this._updateTopUnreadMessagesBar();\n },\n\n onDragOver: function onDragOver(ev) {\n ev.stopPropagation();\n ev.preventDefault();\n\n ev.dataTransfer.dropEffect = 'none';\n\n var items = [].concat((0, _toConsumableArray3.default)(ev.dataTransfer.items));\n if (items.length >= 1) {\n var isDraggingFiles = items.every(function (item) {\n return item.kind == 'file';\n });\n\n if (isDraggingFiles) {\n this.setState({ draggingFile: true });\n ev.dataTransfer.dropEffect = 'copy';\n }\n }\n },\n\n onDrop: function onDrop(ev) {\n ev.stopPropagation();\n ev.preventDefault();\n this.setState({ draggingFile: false });\n var files = [].concat((0, _toConsumableArray3.default)(ev.dataTransfer.files));\n files.forEach(this.uploadFile);\n },\n\n onDragLeaveOrEnd: function onDragLeaveOrEnd(ev) {\n ev.stopPropagation();\n ev.preventDefault();\n this.setState({ draggingFile: false });\n },\n\n isFileUploadAllowed: function isFileUploadAllowed(file) {\n if (this.state.mediaConfig !== undefined && this.state.mediaConfig[\"m.upload.size\"] !== undefined && file.size > this.state.mediaConfig[\"m.upload.size\"]) {\n return (0, _languageHandler._t)(\"File is too big. Maximum file size is %(fileSize)s\", { fileSize: (0, _filesize2.default)(this.state.mediaConfig[\"m.upload.size\"]) });\n }\n return true;\n },\n\n\n uploadFile: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(file) {\n var ErrorDialog;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n dis.dispatch({ action: 'focus_composer' });\n\n if (!MatrixClientPeg.get().isGuest()) {\n _context3.next = 4;\n break;\n }\n\n dis.dispatch({ action: 'require_registration' });\n return _context3.abrupt(\"return\");\n\n case 4:\n _context3.prev = 4;\n _context3.next = 7;\n return (0, _bluebird.resolve)(ContentMessages.sendContentToRoom(file, this.state.room.roomId, MatrixClientPeg.get()));\n\n case 7:\n _context3.next = 17;\n break;\n\n case 9:\n _context3.prev = 9;\n _context3.t0 = _context3[\"catch\"](4);\n\n if (!(_context3.t0.name === \"UnknownDeviceError\")) {\n _context3.next = 13;\n break;\n }\n\n return _context3.abrupt(\"return\");\n\n case 13:\n ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n\n console.error(\"Failed to upload file \" + file + \" \" + _context3.t0);\n Modal.createTrackedDialog('Failed to upload file', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to upload file'),\n description: _context3.t0 && _context3.t0.message ? _context3.t0.message : (0, _languageHandler._t)(\"Server may be unavailable, overloaded, or the file too big\")\n });\n\n // bail early to avoid calling the dispatch below\n return _context3.abrupt(\"return\");\n\n case 17:\n\n // Send message_sent callback, for things like _checkIfAlone because after all a file is still a message.\n dis.dispatch({\n action: 'message_sent'\n });\n\n case 18:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[4, 9]]);\n }));\n\n function uploadFile(_x3) {\n return _ref3.apply(this, arguments);\n }\n\n return uploadFile;\n }(),\n\n injectSticker: function injectSticker(url, info, text) {\n if (MatrixClientPeg.get().isGuest()) {\n dis.dispatch({ action: 'require_registration' });\n return;\n }\n\n ContentMessages.sendStickerContentToRoom(url, this.state.room.roomId, info, text, MatrixClientPeg.get()).done(undefined, function (error) {\n if (error.name === \"UnknownDeviceError\") {\n // Let the staus bar handle this\n return;\n }\n });\n },\n\n onSearch: function onSearch(term, scope) {\n this.setState({\n searchTerm: term,\n searchScope: scope,\n searchResults: {},\n searchHighlights: []\n });\n\n // if we already have a search panel, we need to tell it to forget\n // about its scroll state.\n if (this.refs.searchResultsPanel) {\n this.refs.searchResultsPanel.resetScrollState();\n }\n\n // make sure that we don't end up showing results from\n // an aborted search by keeping a unique id.\n //\n // todo: should cancel any previous search requests.\n this.searchId = new Date().getTime();\n\n var filter = void 0;\n if (scope === \"Room\") {\n filter = {\n // XXX: it's unintuitive that the filter for searching doesn't have the same shape as the v2 filter API :(\n rooms: [this.state.room.roomId]\n };\n }\n\n debuglog(\"sending search request\");\n\n var searchPromise = MatrixClientPeg.get().searchRoomEvents({\n filter: filter,\n term: term\n });\n this._handleSearchResult(searchPromise).done();\n },\n\n _handleSearchResult: function _handleSearchResult(searchPromise) {\n var self = this;\n\n // keep a record of the current search id, so that if the search terms\n // change before we get a response, we can ignore the results.\n var localSearchId = this.searchId;\n\n this.setState({\n searchInProgress: true\n });\n\n return searchPromise.then(function (results) {\n debuglog(\"search complete\");\n if (self.unmounted || !self.state.searching || self.searchId != localSearchId) {\n console.error(\"Discarding stale search results\");\n return;\n }\n\n // postgres on synapse returns us precise details of the strings\n // which actually got matched for highlighting.\n //\n // In either case, we want to highlight the literal search term\n // whether it was used by the search engine or not.\n\n var highlights = results.highlights;\n if (highlights.indexOf(self.state.searchTerm) < 0) {\n highlights = highlights.concat(self.state.searchTerm);\n }\n\n // For overlapping highlights,\n // favour longer (more specific) terms first\n highlights = highlights.sort(function (a, b) {\n return b.length - a.length;\n });\n\n self.setState({\n searchHighlights: highlights,\n searchResults: results\n });\n }, function (error) {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Search failed: \" + error);\n Modal.createTrackedDialog('Search failed', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Search failed\"),\n description: error && error.message ? error.message : (0, _languageHandler._t)(\"Server may be unavailable, overloaded, or search timed out :(\")\n });\n }).finally(function () {\n self.setState({\n searchInProgress: false\n });\n });\n },\n\n getSearchResultTiles: function getSearchResultTiles() {\n var _this6 = this;\n\n var EventTile = sdk.getComponent('rooms.EventTile');\n var SearchResultTile = sdk.getComponent('rooms.SearchResultTile');\n var Spinner = sdk.getComponent(\"elements.Spinner\");\n\n var cli = MatrixClientPeg.get();\n\n // XXX: todo: merge overlapping results somehow?\n // XXX: why doesn't searching on name work?\n\n if (this.state.searchResults.results === undefined) {\n // awaiting results\n return [];\n }\n\n var ret = [];\n\n if (this.state.searchInProgress) {\n ret.push(React.createElement(\n \"li\",\n { key: \"search-spinner\" },\n React.createElement(Spinner, null)\n ));\n }\n\n if (!this.state.searchResults.next_batch) {\n if (this.state.searchResults.results.length == 0) {\n ret.push(React.createElement(\n \"li\",\n { key: \"search-top-marker\" },\n React.createElement(\n \"h2\",\n { className: \"mx_RoomView_topMarker\" },\n (0, _languageHandler._t)(\"No results\")\n )\n ));\n } else {\n ret.push(React.createElement(\n \"li\",\n { key: \"search-top-marker\" },\n React.createElement(\n \"h2\",\n { className: \"mx_RoomView_topMarker\" },\n (0, _languageHandler._t)(\"No more results\")\n )\n ));\n }\n }\n\n // once dynamic content in the search results load, make the scrollPanel check\n // the scroll offsets.\n var onWidgetLoad = function onWidgetLoad() {\n var scrollPanel = _this6.refs.searchResultsPanel;\n if (scrollPanel) {\n scrollPanel.checkScroll();\n }\n };\n\n var lastRoomId = void 0;\n\n for (var i = this.state.searchResults.results.length - 1; i >= 0; i--) {\n var result = this.state.searchResults.results[i];\n\n var mxEv = result.context.getEvent();\n var roomId = mxEv.getRoomId();\n\n if (!EventTile.haveTileForEvent(mxEv)) {\n // XXX: can this ever happen? It will make the result count\n // not match the displayed count.\n continue;\n }\n\n if (this.state.searchScope === 'All') {\n if (roomId != lastRoomId) {\n var room = cli.getRoom(roomId);\n\n // XXX: if we've left the room, we might not know about\n // it. We should tell the js sdk to go and find out about\n // it. But that's not an issue currently, as synapse only\n // returns results for rooms we're joined to.\n var roomName = room ? room.name : (0, _languageHandler._t)(\"Unknown room %(roomId)s\", { roomId: roomId });\n\n ret.push(React.createElement(\n \"li\",\n { key: mxEv.getId() + \"-room\" },\n React.createElement(\n \"h1\",\n null,\n (0, _languageHandler._t)(\"Room\"),\n \": \",\n roomName\n )\n ));\n lastRoomId = roomId;\n }\n }\n\n var resultLink = \"#/room/\" + roomId + \"/\" + mxEv.getId();\n\n ret.push(React.createElement(SearchResultTile, { key: mxEv.getId(),\n searchResult: result,\n searchHighlights: this.state.searchHighlights,\n resultLink: resultLink,\n onWidgetLoad: onWidgetLoad }));\n }\n return ret;\n },\n\n onPinnedClick: function onPinnedClick() {\n var nowShowingPinned = !this.state.showingPinned;\n var roomId = this.state.room.roomId;\n this.setState({ showingPinned: nowShowingPinned, searching: false });\n _SettingsStore2.default.setValue(\"PinnedEvents.isOpen\", roomId, _SettingsStore.SettingLevel.ROOM_DEVICE, nowShowingPinned);\n },\n\n onSettingsClick: function onSettingsClick() {\n dis.dispatch({ action: 'open_room_settings' });\n },\n\n onSettingsSaveClick: function onSettingsSaveClick() {\n var _this7 = this;\n\n if (!this.refs.room_settings) return;\n\n this.setState({\n uploadingRoomSettings: true\n });\n\n var newName = this.refs.header.getEditedName();\n if (newName !== undefined) {\n this.refs.room_settings.setName(newName);\n }\n var newTopic = this.refs.header.getEditedTopic();\n if (newTopic !== undefined) {\n this.refs.room_settings.setTopic(newTopic);\n }\n\n this.refs.room_settings.save().then(function (results) {\n var fails = results.filter(function (result) {\n return result.state !== \"fulfilled\";\n });\n console.log(\"Settings saved with %s errors\", fails.length);\n if (fails.length) {\n fails.forEach(function (result) {\n console.error(result.reason);\n });\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Failed to save room settings', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to save settings\"),\n description: fails.map(function (result) {\n return result.reason;\n }).join(\"\\n\")\n });\n // still editing room settings\n } else {\n dis.dispatch({ action: 'close_settings' });\n }\n }).finally(function () {\n _this7.setState({\n uploadingRoomSettings: false\n });\n dis.dispatch({ action: 'close_settings' });\n }).done();\n },\n\n onCancelClick: function onCancelClick() {\n console.log(\"updateTint from onCancelClick\");\n this.updateTint();\n dis.dispatch({ action: 'close_settings' });\n if (this.state.forwardingEvent) {\n dis.dispatch({\n action: 'forward_event',\n event: null\n });\n }\n dis.dispatch({ action: 'focus_composer' });\n },\n\n onLeaveClick: function onLeaveClick() {\n dis.dispatch({\n action: 'leave_room',\n room_id: this.state.room.roomId\n });\n },\n\n onForgetClick: function onForgetClick() {\n MatrixClientPeg.get().forget(this.state.room.roomId).done(function () {\n dis.dispatch({ action: 'view_next_room' });\n }, function (err) {\n var errCode = err.errcode || (0, _languageHandler._t)(\"unknown error code\");\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Failed to forget room', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Failed to forget room %(errCode)s\", { errCode: errCode })\n });\n });\n },\n\n onRejectButtonClicked: function onRejectButtonClicked(ev) {\n var self = this;\n this.setState({\n rejecting: true\n });\n MatrixClientPeg.get().leave(this.state.roomId).done(function () {\n dis.dispatch({ action: 'view_next_room' });\n self.setState({\n rejecting: false\n });\n }, function (error) {\n console.error(\"Failed to reject invite: %s\", error);\n\n var msg = error.message ? error.message : (0, _stringify2.default)(error);\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Failed to reject invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to reject invite\"),\n description: msg\n });\n\n self.setState({\n rejecting: false,\n rejectError: error\n });\n });\n },\n\n onRejectThreepidInviteButtonClicked: function onRejectThreepidInviteButtonClicked(ev) {\n // We can reject 3pid invites in the same way that we accept them,\n // using /leave rather than /join. In the short term though, we\n // just ignore them.\n // https://github.com/vector-im/vector-web/issues/1134\n dis.dispatch({\n action: 'view_room_directory'\n });\n },\n\n onSearchClick: function onSearchClick() {\n this.setState({ searching: true, showingPinned: false });\n },\n\n onCancelSearchClick: function onCancelSearchClick() {\n this.setState({\n searching: false,\n searchResults: null\n });\n },\n\n // jump down to the bottom of this room, where new events are arriving\n jumpToLiveTimeline: function jumpToLiveTimeline() {\n this.refs.messagePanel.jumpToLiveTimeline();\n dis.dispatch({ action: 'focus_composer' });\n },\n\n // jump up to wherever our read marker is\n jumpToReadMarker: function jumpToReadMarker() {\n this.refs.messagePanel.jumpToReadMarker();\n },\n\n // update the read marker to match the read-receipt\n forgetReadMarker: function forgetReadMarker(ev) {\n ev.stopPropagation();\n this.refs.messagePanel.forgetReadMarker();\n },\n\n // decide whether or not the top 'unread messages' bar should be shown\n _updateTopUnreadMessagesBar: function _updateTopUnreadMessagesBar() {\n if (!this.refs.messagePanel) {\n return;\n }\n\n var showBar = this.refs.messagePanel.canJumpToReadMarker();\n if (this.state.showTopUnreadMessagesBar != showBar) {\n this.setState({ showTopUnreadMessagesBar: showBar }, this.onChildResize);\n }\n },\n\n // get the current scroll position of the room, so that it can be\n // restored when we switch back to it.\n //\n _getScrollState: function _getScrollState() {\n var messagePanel = this.refs.messagePanel;\n if (!messagePanel) return null;\n\n // if we're following the live timeline, we want to return null; that\n // means that, if we switch back, we will jump to the read-up-to mark.\n //\n // That should be more intuitive than slavishly preserving the current\n // scroll state, in the case where the room advances in the meantime\n // (particularly in the case that the user reads some stuff on another\n // device).\n //\n if (this.state.atEndOfLiveTimeline) {\n return null;\n }\n\n var scrollState = messagePanel.getScrollState();\n\n if (scrollState.stuckAtBottom) {\n // we don't really expect to be in this state, but it will\n // occasionally happen when no scroll state has been set on the\n // messagePanel (ie, we didn't have an initial event (so it's\n // probably a new room), there has been no user-initiated scroll, and\n // no read-receipts have arrived to update the scroll position).\n //\n // Return null, which will cause us to scroll to last unread on\n // reload.\n return null;\n }\n\n return {\n focussedEvent: scrollState.trackedScrollToken,\n pixelOffset: scrollState.pixelOffset\n };\n },\n\n onResize: function onResize(e) {\n // It seems flexbox doesn't give us a way to constrain the auxPanel height to have\n // a minimum of the height of the video element, whilst also capping it from pushing out the page\n // so we have to do it via JS instead. In this implementation we cap the height by putting\n // a maxHeight on the underlying remote video tag.\n\n // header + footer + status + give us at least 120px of scrollback at all times.\n var auxPanelMaxHeight = window.innerHeight - (83 + // height of RoomHeader\n 36 + // height of the status area\n 72 + ( // minimum height of the message compmoser\n this.state.editingRoomSettings ? window.innerHeight * 0.3 : 120)); // amount of desired scrollback\n\n // XXX: this is a bit of a hack and might possibly cause the video to push out the page anyway\n // but it's better than the video going missing entirely\n if (auxPanelMaxHeight < 50) auxPanelMaxHeight = 50;\n\n this.setState({ auxPanelMaxHeight: auxPanelMaxHeight });\n\n // changing the maxHeight on the auxpanel will trigger a callback go\n // onChildResize, so no need to worry about that here.\n },\n\n onFullscreenClick: function onFullscreenClick() {\n dis.dispatch({\n action: 'video_fullscreen',\n fullscreen: true\n }, true);\n },\n\n onMuteAudioClick: function onMuteAudioClick() {\n var call = this._getCallForRoom();\n if (!call) {\n return;\n }\n var newState = !call.isMicrophoneMuted();\n call.setMicrophoneMuted(newState);\n this.forceUpdate(); // TODO: just update the voip buttons\n },\n\n onMuteVideoClick: function onMuteVideoClick() {\n var call = this._getCallForRoom();\n if (!call) {\n return;\n }\n var newState = !call.isLocalVideoMuted();\n call.setLocalVideoMuted(newState);\n this.forceUpdate(); // TODO: just update the voip buttons\n },\n\n onChildResize: function onChildResize() {\n // no longer anything to do here\n },\n\n onStatusBarVisible: function onStatusBarVisible() {\n if (this.unmounted) return;\n this.setState({\n statusBarVisible: true\n });\n },\n\n onStatusBarHidden: function onStatusBarHidden() {\n // This is currently not desired as it is annoying if it keeps expanding and collapsing\n // TODO: Find a less annoying way of hiding the status bar\n /*if (this.unmounted) return;\n this.setState({\n statusBarVisible: false,\n });*/\n },\n\n /**\n * called by the parent component when PageUp/Down/etc is pressed.\n *\n * We pass it down to the scroll panel.\n */\n handleScrollKey: function handleScrollKey(ev) {\n var panel = void 0;\n if (this.refs.searchResultsPanel) {\n panel = this.refs.searchResultsPanel;\n } else if (this.refs.messagePanel) {\n panel = this.refs.messagePanel;\n }\n\n if (panel) {\n panel.handleScrollKey(ev);\n }\n },\n\n /**\n * get any current call for this room\n */\n _getCallForRoom: function _getCallForRoom() {\n if (!this.state.room) {\n return null;\n }\n return CallHandler.getCallForRoom(this.state.room.roomId);\n },\n\n // this has to be a proper method rather than an unnamed function,\n // otherwise react calls it with null on each update.\n _gatherTimelinePanelRef: function _gatherTimelinePanelRef(r) {\n this.refs.messagePanel = r;\n if (r) {\n console.log(\"updateTint from RoomView._gatherTimelinePanelRef\");\n this.updateTint();\n }\n },\n\n render: function render() {\n var RoomHeader = sdk.getComponent('rooms.RoomHeader');\n var MessageComposer = sdk.getComponent('rooms.MessageComposer');\n var ForwardMessage = sdk.getComponent(\"rooms.ForwardMessage\");\n var RoomSettings = sdk.getComponent(\"rooms.RoomSettings\");\n var AuxPanel = sdk.getComponent(\"rooms.AuxPanel\");\n var SearchBar = sdk.getComponent(\"rooms.SearchBar\");\n var PinnedEventsPanel = sdk.getComponent(\"rooms.PinnedEventsPanel\");\n var ScrollPanel = sdk.getComponent(\"structures.ScrollPanel\");\n var TintableSvg = sdk.getComponent(\"elements.TintableSvg\");\n var RoomPreviewBar = sdk.getComponent(\"rooms.RoomPreviewBar\");\n var Loader = sdk.getComponent(\"elements.Spinner\");\n var TimelinePanel = sdk.getComponent(\"structures.TimelinePanel\");\n var RoomUpgradeWarningBar = sdk.getComponent(\"rooms.RoomUpgradeWarningBar\");\n var RoomRecoveryReminder = sdk.getComponent(\"rooms.RoomRecoveryReminder\");\n\n if (!this.state.room) {\n if (this.state.roomLoading || this.state.peekLoading) {\n return React.createElement(\n \"div\",\n { className: \"mx_RoomView\" },\n React.createElement(Loader, null)\n );\n } else {\n var inviterName = undefined;\n if (this.props.oobData) {\n inviterName = this.props.oobData.inviterName;\n }\n var invitedEmail = undefined;\n if (this.props.thirdPartyInvite) {\n invitedEmail = this.props.thirdPartyInvite.invitedEmail;\n }\n\n // We have no room object for this room, only the ID.\n // We've got to this room by following a link, possibly a third party invite.\n var roomAlias = this.state.roomAlias;\n return React.createElement(\n \"div\",\n { className: \"mx_RoomView\" },\n React.createElement(RoomHeader, { ref: \"header\",\n room: this.state.room,\n oobData: this.props.oobData,\n collapsedRhs: this.props.collapsedRhs\n }),\n React.createElement(\n \"div\",\n { className: \"mx_RoomView_auxPanel\" },\n React.createElement(RoomPreviewBar, { onJoinClick: this.onJoinButtonClicked,\n onForgetClick: this.onForgetClick,\n onRejectClick: this.onRejectThreepidInviteButtonClicked,\n canPreview: false, error: this.state.roomLoadError,\n roomAlias: roomAlias,\n spinner: this.state.joining,\n spinnerState: \"joining\",\n inviterName: inviterName,\n invitedEmail: invitedEmail,\n room: this.state.room\n })\n ),\n React.createElement(\"div\", { className: \"mx_RoomView_messagePanel\" })\n );\n }\n }\n\n var myMembership = this.state.room.getMyMembership();\n if (myMembership == 'invite') {\n if (this.state.joining || this.state.rejecting) {\n return React.createElement(\n \"div\",\n { className: \"mx_RoomView\" },\n React.createElement(Loader, null)\n );\n } else {\n var myUserId = MatrixClientPeg.get().credentials.userId;\n var myMember = this.state.room.getMember(myUserId);\n var inviteEvent = myMember.events.member;\n var inviterName = inviteEvent.sender ? inviteEvent.sender.name : inviteEvent.getSender();\n\n // We deliberately don't try to peek into invites, even if we have permission to peek\n // as they could be a spam vector.\n // XXX: in future we could give the option of a 'Preview' button which lets them view anyway.\n\n // We have a regular invite for this room.\n return React.createElement(\n \"div\",\n { className: \"mx_RoomView\" },\n React.createElement(RoomHeader, {\n ref: \"header\",\n room: this.state.room,\n collapsedRhs: this.props.collapsedRhs\n }),\n React.createElement(\n \"div\",\n { className: \"mx_RoomView_auxPanel\" },\n React.createElement(RoomPreviewBar, { onJoinClick: this.onJoinButtonClicked,\n onForgetClick: this.onForgetClick,\n onRejectClick: this.onRejectButtonClicked,\n inviterName: inviterName,\n canPreview: false,\n spinner: this.state.joining,\n spinnerState: \"joining\",\n room: this.state.room\n })\n ),\n React.createElement(\"div\", { className: \"mx_RoomView_messagePanel\" })\n );\n }\n }\n\n // We have successfully loaded this room, and are not previewing.\n // Display the \"normal\" room view.\n\n var call = this._getCallForRoom();\n var inCall = false;\n if (call && this.state.callState !== 'ended' && this.state.callState !== 'ringing') {\n inCall = true;\n }\n\n var scrollheader_classes = classNames({\n mx_RoomView_scrollheader: true\n });\n\n var statusBar = void 0;\n var isStatusAreaExpanded = true;\n\n if (ContentMessages.getCurrentUploads().length > 0) {\n var UploadBar = sdk.getComponent('structures.UploadBar');\n statusBar = React.createElement(UploadBar, { room: this.state.room });\n } else if (!this.state.searchResults) {\n var RoomStatusBar = sdk.getComponent('structures.RoomStatusBar');\n isStatusAreaExpanded = this.state.statusBarVisible;\n statusBar = React.createElement(RoomStatusBar, {\n room: this.state.room,\n numUnreadMessages: this.state.numUnreadMessages,\n atEndOfLiveTimeline: this.state.atEndOfLiveTimeline,\n sentMessageAndIsAlone: this.state.isAlone,\n hasActiveCall: inCall,\n isPeeking: myMembership !== \"join\",\n onInviteClick: this.onInviteButtonClick,\n onStopWarningClick: this.onStopAloneWarningClick,\n onScrollToBottomClick: this.jumpToLiveTimeline,\n onResize: this.onChildResize,\n onVisible: this.onStatusBarVisible,\n onHidden: this.onStatusBarHidden,\n whoIsTypingLimit: 3\n });\n }\n\n var showRoomUpgradeBar = this.state.room.shouldUpgradeToVersion() && this.state.room.userMayUpgradeRoom(MatrixClientPeg.get().credentials.userId);\n\n var showRoomRecoveryReminder = _SettingsStore2.default.isFeatureEnabled(\"feature_keybackup\") && _SettingsStore2.default.getValue(\"showRoomRecoveryReminder\") && MatrixClientPeg.get().isRoomEncrypted(this.state.room.roomId) && !MatrixClientPeg.get().getKeyBackupEnabled();\n\n var aux = null;\n var hideCancel = false;\n if (this.state.editingRoomSettings) {\n aux = React.createElement(RoomSettings, { ref: \"room_settings\", onSaveClick: this.onSettingsSaveClick, onCancelClick: this.onCancelClick, room: this.state.room });\n } else if (this.state.uploadingRoomSettings) {\n aux = React.createElement(Loader, null);\n } else if (this.state.forwardingEvent !== null) {\n aux = React.createElement(ForwardMessage, { onCancelClick: this.onCancelClick });\n } else if (this.state.searching) {\n hideCancel = true; // has own cancel\n aux = React.createElement(SearchBar, { ref: \"search_bar\", searchInProgress: this.state.searchInProgress, onCancelClick: this.onCancelSearchClick, onSearch: this.onSearch });\n } else if (showRoomUpgradeBar) {\n aux = React.createElement(RoomUpgradeWarningBar, { room: this.state.room });\n hideCancel = true;\n } else if (showRoomRecoveryReminder) {\n aux = React.createElement(RoomRecoveryReminder, { onFinished: this.onRoomRecoveryReminderFinished });\n hideCancel = true;\n } else if (this.state.showingPinned) {\n hideCancel = true; // has own cancel\n aux = React.createElement(PinnedEventsPanel, { room: this.state.room, onCancelClick: this.onPinnedClick });\n } else if (myMembership !== \"join\") {\n // We do have a room object for this room, but we're not currently in it.\n // We may have a 3rd party invite to it.\n var inviterName = undefined;\n if (this.props.oobData) {\n inviterName = this.props.oobData.inviterName;\n }\n var invitedEmail = undefined;\n if (this.props.thirdPartyInvite) {\n invitedEmail = this.props.thirdPartyInvite.invitedEmail;\n }\n hideCancel = true;\n aux = React.createElement(RoomPreviewBar, { onJoinClick: this.onJoinButtonClicked,\n onForgetClick: this.onForgetClick,\n onRejectClick: this.onRejectThreepidInviteButtonClicked,\n spinner: this.state.joining,\n spinnerState: \"joining\",\n inviterName: inviterName,\n invitedEmail: invitedEmail,\n canPreview: this.state.canPeek,\n room: this.state.room\n });\n }\n\n var auxPanel = React.createElement(\n AuxPanel,\n { ref: \"auxPanel\", room: this.state.room,\n userId: MatrixClientPeg.get().credentials.userId,\n conferenceHandler: this.props.ConferenceHandler,\n draggingFile: this.state.draggingFile,\n displayConfCallNotification: this.state.displayConfCallNotification,\n maxHeight: this.state.auxPanelMaxHeight,\n onResize: this.onChildResize,\n showApps: this.state.showApps,\n hideAppsDrawer: this.state.editingRoomSettings },\n aux\n );\n\n var messageComposer = void 0;var searchInfo = void 0;\n var canSpeak =\n // joined and not showing search results\n myMembership === 'join' && !this.state.searchResults;\n if (canSpeak) {\n messageComposer = React.createElement(MessageComposer, {\n room: this.state.room,\n onResize: this.onChildResize,\n uploadFile: this.uploadFile,\n callState: this.state.callState,\n disabled: this.props.disabled,\n showApps: this.state.showApps,\n uploadAllowed: this.isFileUploadAllowed\n });\n }\n\n if (MatrixClientPeg.get().isGuest()) {\n var LoginBox = sdk.getComponent('structures.LoginBox');\n messageComposer = React.createElement(LoginBox, null);\n }\n\n // TODO: Why aren't we storing the term/scope/count in this format\n // in this.state if this is what RoomHeader desires?\n if (this.state.searchResults) {\n searchInfo = {\n searchTerm: this.state.searchTerm,\n searchScope: this.state.searchScope,\n searchCount: this.state.searchResults.count\n };\n }\n\n if (inCall) {\n var zoomButton = void 0;var voiceMuteButton = void 0;var videoMuteButton = void 0;\n\n if (call.type === \"video\") {\n zoomButton = React.createElement(\n \"div\",\n { className: \"mx_RoomView_voipButton\", onClick: this.onFullscreenClick, title: (0, _languageHandler._t)(\"Fill screen\") },\n React.createElement(TintableSvg, { src: \"img/fullscreen.svg\", width: \"29\", height: \"22\", style: { marginTop: 1, marginRight: 4 } })\n );\n\n videoMuteButton = React.createElement(\n \"div\",\n { className: \"mx_RoomView_voipButton\", onClick: this.onMuteVideoClick },\n React.createElement(TintableSvg, { src: call.isLocalVideoMuted() ? \"img/video-unmute.svg\" : \"img/video-mute.svg\",\n alt: call.isLocalVideoMuted() ? (0, _languageHandler._t)(\"Click to unmute video\") : (0, _languageHandler._t)(\"Click to mute video\"),\n width: \"31\", height: \"27\" })\n );\n }\n voiceMuteButton = React.createElement(\n \"div\",\n { className: \"mx_RoomView_voipButton\", onClick: this.onMuteAudioClick },\n React.createElement(TintableSvg, { src: call.isMicrophoneMuted() ? \"img/voice-unmute.svg\" : \"img/voice-mute.svg\",\n alt: call.isMicrophoneMuted() ? (0, _languageHandler._t)(\"Click to unmute audio\") : (0, _languageHandler._t)(\"Click to mute audio\"),\n width: \"21\", height: \"26\" })\n );\n\n // wrap the existing status bar into a 'callStatusBar' which adds more knobs.\n statusBar = React.createElement(\n \"div\",\n { className: \"mx_RoomView_callStatusBar\" },\n voiceMuteButton,\n videoMuteButton,\n zoomButton,\n statusBar,\n React.createElement(TintableSvg, { className: \"mx_RoomView_voipChevron\", src: \"img/voip-chevron.svg\", width: \"22\", height: \"17\" })\n );\n }\n\n // if we have search results, we keep the messagepanel (so that it preserves its\n // scroll state), but hide it.\n var searchResultsPanel = void 0;\n var hideMessagePanel = false;\n\n if (this.state.searchResults) {\n searchResultsPanel = React.createElement(\n ScrollPanel,\n { ref: \"searchResultsPanel\",\n className: \"mx_RoomView_messagePanel mx_RoomView_searchResultsPanel\",\n onFillRequest: this.onSearchResultsFillRequest,\n onResize: this.onSearchResultsResize\n },\n React.createElement(\"li\", { className: scrollheader_classes }),\n this.getSearchResultTiles()\n );\n hideMessagePanel = true;\n }\n\n var shouldHighlight = this.state.isInitialEventHighlighted;\n var highlightedEventId = null;\n if (this.state.forwardingEvent) {\n highlightedEventId = this.state.forwardingEvent.getId();\n } else if (shouldHighlight) {\n highlightedEventId = this.state.initialEventId;\n }\n\n // console.log(\"ShowUrlPreview for %s is %s\", this.state.room.roomId, this.state.showUrlPreview);\n var messagePanel = React.createElement(TimelinePanel, { ref: this._gatherTimelinePanelRef,\n timelineSet: this.state.room.getUnfilteredTimelineSet(),\n showReadReceipts: !_SettingsStore2.default.getValue('hideReadReceipts'),\n manageReadReceipts: !this.state.isPeeking,\n manageReadMarkers: !this.state.isPeeking,\n hidden: hideMessagePanel,\n highlightedEventId: highlightedEventId,\n eventId: this.state.initialEventId,\n eventPixelOffset: this.state.initialEventPixelOffset,\n onScroll: this.onMessageListScroll,\n onReadMarkerUpdated: this._updateTopUnreadMessagesBar,\n showUrlPreview: this.state.showUrlPreview,\n className: \"mx_RoomView_messagePanel\",\n membersLoaded: this.state.membersLoaded\n });\n\n var topUnreadMessagesBar = null;\n if (this.state.showTopUnreadMessagesBar) {\n var TopUnreadMessagesBar = sdk.getComponent('rooms.TopUnreadMessagesBar');\n topUnreadMessagesBar = React.createElement(\n \"div\",\n { className: \"mx_RoomView_topUnreadMessagesBar\" },\n React.createElement(TopUnreadMessagesBar, {\n onScrollUpClick: this.jumpToReadMarker,\n onCloseClick: this.forgetReadMarker\n })\n );\n }\n var statusBarAreaClass = classNames(\"mx_RoomView_statusArea\", {\n \"mx_RoomView_statusArea_expanded\": isStatusAreaExpanded\n });\n\n var fadableSectionClasses = classNames(\"mx_RoomView_body\", \"mx_fadable\", {\n \"mx_fadable_faded\": this.props.disabled\n });\n\n return React.createElement(\n \"div\",\n { className: \"mx_RoomView\" + (inCall ? \" mx_RoomView_inCall\" : \"\"), ref: \"roomView\" },\n React.createElement(RoomHeader, { ref: \"header\", room: this.state.room, searchInfo: searchInfo,\n oobData: this.props.oobData,\n editing: this.state.editingRoomSettings,\n saving: this.state.uploadingRoomSettings,\n inRoom: myMembership === 'join',\n collapsedRhs: this.props.collapsedRhs,\n onSearchClick: this.onSearchClick,\n onSettingsClick: this.onSettingsClick,\n onPinnedClick: this.onPinnedClick,\n onSaveClick: this.onSettingsSaveClick,\n onCancelClick: aux && !hideCancel ? this.onCancelClick : null,\n onForgetClick: myMembership === \"leave\" ? this.onForgetClick : null,\n onLeaveClick: myMembership === \"join\" ? this.onLeaveClick : null\n }),\n auxPanel,\n React.createElement(\n \"div\",\n { className: fadableSectionClasses },\n topUnreadMessagesBar,\n messagePanel,\n searchResultsPanel,\n React.createElement(\n \"div\",\n { className: statusBarAreaClass },\n React.createElement(\n \"div\",\n { className: \"mx_RoomView_statusAreaBox\" },\n React.createElement(\"div\", { className: \"mx_RoomView_statusAreaBox_line\" }),\n statusBar\n )\n ),\n messageComposer\n )\n );\n }\n});\n//# sourceMappingURL=RoomView.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Stores where the user has scrolled to in each room\n */\nvar RoomScrollStateStore = function () {\n function RoomScrollStateStore() {\n (0, _classCallCheck3.default)(this, RoomScrollStateStore);\n\n // A map from room id to scroll state.\n //\n // If there is no special scroll state (ie, we are following the live\n // timeline), the scroll state is null. Otherwise, it is an object with\n // the following properties:\n //\n // focussedEvent: the ID of the 'focussed' event. Typically this is\n // the last event fully visible in the viewport, though if we\n // have done an explicit scroll to an explicit event, it will be\n // that event.\n //\n // pixelOffset: the number of pixels the window is scrolled down\n // from the focussedEvent.\n this._scrollStateMap = {};\n }\n\n (0, _createClass3.default)(RoomScrollStateStore, [{\n key: \"getScrollState\",\n value: function getScrollState(roomId) {\n return this._scrollStateMap[roomId];\n }\n }, {\n key: \"setScrollState\",\n value: function setScrollState(roomId, scrollState) {\n this._scrollStateMap[roomId] = scrollState;\n }\n }]);\n return RoomScrollStateStore;\n}();\n\nif (global.mx_RoomScrollStateStore === undefined) {\n global.mx_RoomScrollStateStore = new RoomScrollStateStore();\n}\nexports.default = global.mx_RoomScrollStateStore;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=RoomScrollStateStore.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nmodule.exports = function (dest, src) {\n for (var i in src) {\n if (src.hasOwnProperty(i)) {\n dest[i] = src[i];\n }\n }\n return dest;\n};\n//# sourceMappingURL=extend.js.map","/*\n * JavaScript Canvas to Blob\n * https://github.com/blueimp/JavaScript-Canvas-to-Blob\n *\n * Copyright 2012, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on stackoverflow user Stoive's code snippet:\n * http://stackoverflow.com/q/4998908\n */\n\n/* global atob, Blob, define */\n\n;(function (window) {\n 'use strict'\n\n var CanvasPrototype =\n window.HTMLCanvasElement && window.HTMLCanvasElement.prototype\n var hasBlobConstructor =\n window.Blob &&\n (function () {\n try {\n return Boolean(new Blob())\n } catch (e) {\n return false\n }\n })()\n var hasArrayBufferViewSupport =\n hasBlobConstructor &&\n window.Uint8Array &&\n (function () {\n try {\n return new Blob([new Uint8Array(100)]).size === 100\n } catch (e) {\n return false\n }\n })()\n var BlobBuilder =\n window.BlobBuilder ||\n window.WebKitBlobBuilder ||\n window.MozBlobBuilder ||\n window.MSBlobBuilder\n var dataURIPattern = /^data:((.*?)(;charset=.*?)?)(;base64)?,/\n var dataURLtoBlob =\n (hasBlobConstructor || BlobBuilder) &&\n window.atob &&\n window.ArrayBuffer &&\n window.Uint8Array &&\n function (dataURI) {\n var matches,\n mediaType,\n isBase64,\n dataString,\n byteString,\n arrayBuffer,\n intArray,\n i,\n bb\n // Parse the dataURI components as per RFC 2397\n matches = dataURI.match(dataURIPattern)\n if (!matches) {\n throw new Error('invalid data URI')\n }\n // Default to text/plain;charset=US-ASCII\n mediaType = matches[2]\n ? matches[1]\n : 'text/plain' + (matches[3] || ';charset=US-ASCII')\n isBase64 = !!matches[4]\n dataString = dataURI.slice(matches[0].length)\n if (isBase64) {\n // Convert base64 to raw binary data held in a string:\n byteString = atob(dataString)\n } else {\n // Convert base64/URLEncoded data component to raw binary:\n byteString = decodeURIComponent(dataString)\n }\n // Write the bytes of the string to an ArrayBuffer:\n arrayBuffer = new ArrayBuffer(byteString.length)\n intArray = new Uint8Array(arrayBuffer)\n for (i = 0; i < byteString.length; i += 1) {\n intArray[i] = byteString.charCodeAt(i)\n }\n // Write the ArrayBuffer (or ArrayBufferView) to a blob:\n if (hasBlobConstructor) {\n return new Blob([hasArrayBufferViewSupport ? intArray : arrayBuffer], {\n type: mediaType\n })\n }\n bb = new BlobBuilder()\n bb.append(arrayBuffer)\n return bb.getBlob(mediaType)\n }\n if (window.HTMLCanvasElement && !CanvasPrototype.toBlob) {\n if (CanvasPrototype.mozGetAsFile) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this\n setTimeout(function () {\n if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) {\n callback(dataURLtoBlob(self.toDataURL(type, quality)))\n } else {\n callback(self.mozGetAsFile('blob', type))\n }\n })\n }\n } else if (CanvasPrototype.toDataURL && dataURLtoBlob) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this\n setTimeout(function () {\n callback(dataURLtoBlob(self.toDataURL(type, quality)))\n })\n }\n }\n }\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return dataURLtoBlob\n })\n } else if (typeof module === 'object' && module.exports) {\n module.exports = dataURLtoBlob\n } else {\n window.dataURLtoBlob = dataURLtoBlob\n }\n})(window)\n","\"use strict\";\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _Keyboard = require(\"../../Keyboard\");\n\nvar _index = require(\"../../index.js\");\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require(\"react\");\nvar ReactDOM = require(\"react-dom\");\n\n\nvar DEBUG_SCROLL = false;\n// var DEBUG_SCROLL = true;\n\n// The amount of extra scroll distance to allow prior to unfilling.\n// See _getExcessHeight.\nvar UNPAGINATION_PADDING = 6000;\n// The number of milliseconds to debounce calls to onUnfillRequest, to prevent\n// many scroll events causing many unfilling requests.\nvar UNFILL_REQUEST_DEBOUNCE_MS = 200;\n\nif (DEBUG_SCROLL) {\n // using bind means that we get to keep useful line numbers in the console\n var debuglog = console.log.bind(console);\n} else {\n var debuglog = function debuglog() {};\n}\n\n/* This component implements an intelligent scrolling list.\n *\n * It wraps a list of <li> children; when items are added to the start or end\n * of the list, the scroll position is updated so that the user still sees the\n * same position in the list.\n *\n * It also provides a hook which allows parents to provide more list elements\n * when we get close to the start or end of the list.\n *\n * Each child element should have a 'data-scroll-tokens'. This string of\n * comma-separated tokens may contain a single token or many, where many indicates\n * that the element contains elements that have scroll tokens themselves. The first\n * token in 'data-scroll-tokens' is used to serialise the scroll state, and returned\n * as the 'trackedScrollToken' attribute by getScrollState().\n *\n * IMPORTANT: INDIVIDUAL TOKENS WITHIN 'data-scroll-tokens' MUST NOT CONTAIN COMMAS.\n *\n * Some notes about the implementation:\n *\n * The saved 'scrollState' can exist in one of two states:\n *\n * - stuckAtBottom: (the default, and restored by resetScrollState): the\n * viewport is scrolled down as far as it can be. When the children are\n * updated, the scroll position will be updated to ensure it is still at\n * the bottom.\n *\n * - fixed, in which the viewport is conceptually tied at a specific scroll\n * offset. We don't save the absolute scroll offset, because that would be\n * affected by window width, zoom level, amount of scrollback, etc. Instead\n * we save an identifier for the last fully-visible message, and the number\n * of pixels the window was scrolled below it - which is hopefully near\n * enough.\n *\n * The 'stickyBottom' property controls the behaviour when we reach the bottom\n * of the window (either through a user-initiated scroll, or by calling\n * scrollToBottom). If stickyBottom is enabled, the scrollState will enter\n * 'stuckAtBottom' state - ensuring that new additions cause the window to\n * scroll down further. If stickyBottom is disabled, we just save the scroll\n * offset as normal.\n */\nmodule.exports = React.createClass({\n displayName: 'ScrollPanel',\n\n propTypes: {\n /* stickyBottom: if set to true, then once the user hits the bottom of\n * the list, any new children added to the list will cause the list to\n * scroll down to show the new element, rather than preserving the\n * existing view.\n */\n stickyBottom: _propTypes2.default.bool,\n\n /* startAtBottom: if set to true, the view is assumed to start\n * scrolled to the bottom.\n * XXX: It's likley this is unecessary and can be derived from\n * stickyBottom, but I'm adding an extra parameter to ensure\n * behaviour stays the same for other uses of ScrollPanel.\n * If so, let's remove this parameter down the line.\n */\n startAtBottom: _propTypes2.default.bool,\n\n /* onFillRequest(backwards): a callback which is called on scroll when\n * the user nears the start (backwards = true) or end (backwards =\n * false) of the list.\n *\n * This should return a promise; no more calls will be made until the\n * promise completes.\n *\n * The promise should resolve to true if there is more data to be\n * retrieved in this direction (in which case onFillRequest may be\n * called again immediately), or false if there is no more data in this\n * directon (at this time) - which will stop the pagination cycle until\n * the user scrolls again.\n */\n onFillRequest: _propTypes2.default.func,\n\n /* onUnfillRequest(backwards): a callback which is called on scroll when\n * there are children elements that are far out of view and could be removed\n * without causing pagination to occur.\n *\n * This function should accept a boolean, which is true to indicate the back/top\n * of the panel and false otherwise, and a scroll token, which refers to the\n * first element to remove if removing from the front/bottom, and last element\n * to remove if removing from the back/top.\n */\n onUnfillRequest: _propTypes2.default.func,\n\n /* onScroll: a callback which is called whenever any scroll happens.\n */\n onScroll: _propTypes2.default.func,\n\n /* onResize: a callback which is called whenever the Gemini scroll\n * panel is resized\n */\n onResize: _propTypes2.default.func,\n\n /* className: classnames to add to the top-level div\n */\n className: _propTypes2.default.string,\n\n /* style: styles to add to the top-level div\n */\n style: _propTypes2.default.object\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n stickyBottom: true,\n startAtBottom: true,\n onFillRequest: function onFillRequest(backwards) {\n return _bluebird2.default.resolve(false);\n },\n onUnfillRequest: function onUnfillRequest(backwards, scrollToken) {},\n onScroll: function onScroll() {},\n onResize: function onResize() {}\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._pendingFillRequests = { b: null, f: null };\n this.resetScrollState();\n },\n\n componentDidMount: function componentDidMount() {\n this.checkScroll();\n },\n\n componentDidUpdate: function componentDidUpdate() {\n // after adding event tiles, we may need to tweak the scroll (either to\n // keep at the bottom of the timeline, or to maintain the view after\n // adding events to the top).\n //\n // This will also re-check the fill state, in case the paginate was inadequate\n this.checkScroll();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // set a boolean to say we've been unmounted, which any pending\n // promises can use to throw away their results.\n //\n // (We could use isMounted(), but facebook have deprecated that.)\n this.unmounted = true;\n },\n\n onScroll: function onScroll(ev) {\n var sn = this._getScrollNode();\n debuglog(\"Scroll event: offset now:\", sn.scrollTop, \"_lastSetScroll:\", this._lastSetScroll);\n\n // Sometimes we see attempts to write to scrollTop essentially being\n // ignored. (Or rather, it is successfully written, but on the next\n // scroll event, it's been reset again).\n //\n // This was observed on Chrome 47, when scrolling using the trackpad in OS\n // X Yosemite. Can't reproduce on El Capitan. Our theory is that this is\n // due to Chrome not being able to cope with the scroll offset being reset\n // while a two-finger drag is in progress.\n //\n // By way of a workaround, we detect this situation and just keep\n // resetting scrollTop until we see the scroll node have the right\n // value.\n if (this._lastSetScroll !== undefined && sn.scrollTop < this._lastSetScroll - 200) {\n console.log(\"Working around vector-im/vector-web#528\");\n this._restoreSavedScrollState();\n return;\n }\n\n // If there weren't enough children to fill the viewport, the scroll we\n // got might be different to the scroll we wanted; we don't want to\n // forget what we wanted, so don't overwrite the saved state unless\n // this appears to be a user-initiated scroll.\n if (sn.scrollTop != this._lastSetScroll) {\n this._saveScrollState();\n } else {\n debuglog(\"Ignoring scroll echo\");\n\n // only ignore the echo once, otherwise we'll get confused when the\n // user scrolls away from, and back to, the autoscroll point.\n this._lastSetScroll = undefined;\n }\n\n this.props.onScroll(ev);\n\n this.checkFillState();\n },\n\n onResize: function onResize() {\n this.props.onResize();\n this.checkScroll();\n if (this._gemScroll) this._gemScroll.forceUpdate();\n },\n\n // after an update to the contents of the panel, check that the scroll is\n // where it ought to be, and set off pagination requests if necessary.\n checkScroll: function checkScroll() {\n this._restoreSavedScrollState();\n this.checkFillState();\n },\n\n // return true if the content is fully scrolled down right now; else false.\n //\n // note that this is independent of the 'stuckAtBottom' state - it is simply\n // about whether the the content is scrolled down right now, irrespective of\n // whether it will stay that way when the children update.\n isAtBottom: function isAtBottom() {\n var sn = this._getScrollNode();\n\n // there seems to be some bug with flexbox/gemini/chrome/richvdh's\n // understanding of the box model, wherein the scrollNode ends up 2\n // pixels higher than the available space, even when there are less\n // than a screenful of messages. + 3 is a fudge factor to pretend\n // that we're at the bottom when we're still a few pixels off.\n\n return sn.scrollHeight - Math.ceil(sn.scrollTop) <= sn.clientHeight + 3;\n },\n\n // returns the vertical height in the given direction that can be removed from\n // the content box (which has a height of scrollHeight, see checkFillState) without\n // pagination occuring.\n //\n // padding* = UNPAGINATION_PADDING\n //\n // ### Region determined as excess.\n //\n // .---------. - -\n // |#########| | |\n // |#########| - | scrollTop |\n // | | | padding* | |\n // | | | | |\n // .-+---------+-. - - | |\n // : | | : | | |\n // : | | : | clientHeight | |\n // : | | : | | |\n // .-+---------+-. - - |\n // | | | | | |\n // | | | | | clientHeight | scrollHeight\n // | | | | | |\n // `-+---------+-' - |\n // : | | : | |\n // : | | : | clientHeight |\n // : | | : | |\n // `-+---------+-' - - |\n // | | | padding* |\n // | | | |\n // |#########| - |\n // |#########| |\n // `---------' -\n _getExcessHeight: function _getExcessHeight(backwards) {\n var sn = this._getScrollNode();\n if (backwards) {\n return sn.scrollTop - sn.clientHeight - UNPAGINATION_PADDING;\n } else {\n return sn.scrollHeight - (sn.scrollTop + 2 * sn.clientHeight) - UNPAGINATION_PADDING;\n }\n },\n\n // check the scroll state and send out backfill requests if necessary.\n checkFillState: function checkFillState() {\n if (this.unmounted) {\n return;\n }\n\n var sn = this._getScrollNode();\n\n // if there is less than a screenful of messages above or below the\n // viewport, try to get some more messages.\n //\n // scrollTop is the number of pixels between the top of the content and\n // the top of the viewport.\n //\n // scrollHeight is the total height of the content.\n //\n // clientHeight is the height of the viewport (excluding borders,\n // margins, and scrollbars).\n //\n //\n // .---------. - -\n // | | | scrollTop |\n // .-+---------+-. - - |\n // | | | | | |\n // | | | | | clientHeight | scrollHeight\n // | | | | | |\n // `-+---------+-' - |\n // | | |\n // | | |\n // `---------' -\n //\n\n if (sn.scrollTop < sn.clientHeight) {\n // need to back-fill\n this._maybeFill(true);\n }\n if (sn.scrollTop > sn.scrollHeight - sn.clientHeight * 2) {\n // need to forward-fill\n this._maybeFill(false);\n }\n },\n\n // check if unfilling is possible and send an unfill request if necessary\n _checkUnfillState: function _checkUnfillState(backwards) {\n var _this = this;\n\n var excessHeight = this._getExcessHeight(backwards);\n if (excessHeight <= 0) {\n return;\n }\n var tiles = this.refs.itemlist.children;\n\n // The scroll token of the first/last tile to be unpaginated\n var markerScrollToken = null;\n\n // Subtract heights of tiles to simulate the tiles being unpaginated until the\n // excess height is less than the height of the next tile to subtract. This\n // prevents excessHeight becoming negative, which could lead to future\n // pagination.\n //\n // If backwards is true, we unpaginate (remove) tiles from the back (top).\n for (var i = 0; i < tiles.length; i++) {\n var tile = tiles[backwards ? i : tiles.length - 1 - i];\n // Subtract height of tile as if it were unpaginated\n excessHeight -= tile.clientHeight;\n //If removing the tile would lead to future pagination, break before setting scroll token\n if (tile.clientHeight > excessHeight) {\n break;\n }\n // The tile may not have a scroll token, so guard it\n if (tile.dataset.scrollTokens) {\n markerScrollToken = tile.dataset.scrollTokens.split(',')[0];\n }\n }\n\n if (markerScrollToken) {\n // Use a debouncer to prevent multiple unfill calls in quick succession\n // This is to make the unfilling process less aggressive\n if (this._unfillDebouncer) {\n clearTimeout(this._unfillDebouncer);\n }\n this._unfillDebouncer = setTimeout(function () {\n _this._unfillDebouncer = null;\n _this.props.onUnfillRequest(backwards, markerScrollToken);\n }, UNFILL_REQUEST_DEBOUNCE_MS);\n }\n },\n\n // check if there is already a pending fill request. If not, set one off.\n _maybeFill: function _maybeFill(backwards) {\n var _this2 = this;\n\n var dir = backwards ? 'b' : 'f';\n if (this._pendingFillRequests[dir]) {\n debuglog(\"ScrollPanel: Already a \" + dir + \" fill in progress - not starting another\");\n return;\n }\n\n debuglog(\"ScrollPanel: starting \" + dir + \" fill\");\n\n // onFillRequest can end up calling us recursively (via onScroll\n // events) so make sure we set this before firing off the call.\n this._pendingFillRequests[dir] = true;\n\n _bluebird2.default.try(function () {\n return _this2.props.onFillRequest(backwards);\n }).finally(function () {\n _this2._pendingFillRequests[dir] = false;\n }).then(function (hasMoreResults) {\n if (_this2.unmounted) {\n return;\n }\n // Unpaginate once filling is complete\n _this2._checkUnfillState(!backwards);\n\n debuglog(\"ScrollPanel: \" + dir + \" fill complete; hasMoreResults:\" + hasMoreResults);\n if (hasMoreResults) {\n // further pagination requests have been disabled until now, so\n // it's time to check the fill state again in case the pagination\n // was insufficient.\n _this2.checkFillState();\n }\n }).done();\n },\n\n /* get the current scroll state. This returns an object with the following\n * properties:\n *\n * boolean stuckAtBottom: true if we are tracking the bottom of the\n * scroll. false if we are tracking a particular child.\n *\n * string trackedScrollToken: undefined if stuckAtBottom is true; if it is\n * false, the first token in data-scroll-tokens of the child which we are\n * tracking.\n *\n * number pixelOffset: undefined if stuckAtBottom is true; if it is false,\n * the number of pixels the bottom of the tracked child is above the\n * bottom of the scroll panel.\n */\n getScrollState: function getScrollState() {\n return this.scrollState;\n },\n\n /* reset the saved scroll state.\n *\n * This is useful if the list is being replaced, and you don't want to\n * preserve scroll even if new children happen to have the same scroll\n * tokens as old ones.\n *\n * This will cause the viewport to be scrolled down to the bottom on the\n * next update of the child list. This is different to scrollToBottom(),\n * which would save the current bottom-most child as the active one (so is\n * no use if no children exist yet, or if you are about to replace the\n * child list.)\n */\n resetScrollState: function resetScrollState() {\n this.scrollState = { stuckAtBottom: this.props.startAtBottom };\n },\n\n /**\n * jump to the top of the content.\n */\n scrollToTop: function scrollToTop() {\n this._setScrollTop(0);\n this._saveScrollState();\n },\n\n /**\n * jump to the bottom of the content.\n */\n scrollToBottom: function scrollToBottom() {\n // the easiest way to make sure that the scroll state is correctly\n // saved is to do the scroll, then save the updated state. (Calculating\n // it ourselves is hard, and we can't rely on an onScroll callback\n // happening, since there may be no user-visible change here).\n this._setScrollTop(Number.MAX_VALUE);\n this._saveScrollState();\n },\n\n /**\n * Page up/down.\n *\n * mult: -1 to page up, +1 to page down\n */\n scrollRelative: function scrollRelative(mult) {\n var scrollNode = this._getScrollNode();\n var delta = mult * scrollNode.clientHeight * 0.5;\n this._setScrollTop(scrollNode.scrollTop + delta);\n this._saveScrollState();\n },\n\n /**\n * Scroll up/down in response to a scroll key\n */\n handleScrollKey: function handleScrollKey(ev) {\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.PAGE_UP:\n if (!ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n this.scrollRelative(-1);\n }\n break;\n\n case _Keyboard.KeyCode.PAGE_DOWN:\n if (!ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n this.scrollRelative(1);\n }\n break;\n\n case _Keyboard.KeyCode.HOME:\n if (ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n this.scrollToTop();\n }\n break;\n\n case _Keyboard.KeyCode.END:\n if (ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n this.scrollToBottom();\n }\n break;\n }\n },\n\n /* Scroll the panel to bring the DOM node with the scroll token\n * `scrollToken` into view.\n *\n * offsetBase gives the reference point for the pixelOffset. 0 means the\n * top of the container, 1 means the bottom, and fractional values mean\n * somewhere in the middle. If omitted, it defaults to 0.\n *\n * pixelOffset gives the number of pixels *above* the offsetBase that the\n * node (specifically, the bottom of it) will be positioned. If omitted, it\n * defaults to 0.\n */\n scrollToToken: function scrollToToken(scrollToken, pixelOffset, offsetBase) {\n pixelOffset = pixelOffset || 0;\n offsetBase = offsetBase || 0;\n\n // convert pixelOffset so that it is based on the bottom of the\n // container.\n pixelOffset += this._getScrollNode().clientHeight * (1 - offsetBase);\n\n // save the desired scroll state. It's important we do this here rather\n // than as a result of the scroll event, because (a) we might not *get*\n // a scroll event, and (b) it might not currently be possible to set\n // the requested scroll state (eg, because we hit the end of the\n // timeline and need to do more pagination); we want to save the\n // *desired* scroll state rather than what we end up achieving.\n this.scrollState = {\n stuckAtBottom: false,\n trackedScrollToken: scrollToken,\n pixelOffset: pixelOffset\n };\n\n // ... then make it so.\n this._restoreSavedScrollState();\n },\n\n // set the scrollTop attribute appropriately to position the given child at the\n // given offset in the window. A helper for _restoreSavedScrollState.\n _scrollToToken: function _scrollToToken(scrollToken, pixelOffset) {\n /* find the dom node with the right scrolltoken */\n var node = void 0;\n var messages = this.refs.itemlist.children;\n for (var i = messages.length - 1; i >= 0; --i) {\n var m = messages[i];\n // 'data-scroll-tokens' is a DOMString of comma-separated scroll tokens\n // There might only be one scroll token\n if (m.dataset.scrollTokens && m.dataset.scrollTokens.split(',').indexOf(scrollToken) !== -1) {\n node = m;\n break;\n }\n }\n\n if (!node) {\n debuglog(\"ScrollPanel: No node with scrollToken '\" + scrollToken + \"'\");\n return;\n }\n\n var scrollNode = this._getScrollNode();\n var wrapperRect = ReactDOM.findDOMNode(this).getBoundingClientRect();\n var boundingRect = node.getBoundingClientRect();\n var scrollDelta = boundingRect.bottom + pixelOffset - wrapperRect.bottom;\n\n debuglog(\"ScrollPanel: scrolling to token '\" + scrollToken + \"'+\" + pixelOffset + \" (delta: \" + scrollDelta + \")\");\n\n if (scrollDelta != 0) {\n this._setScrollTop(scrollNode.scrollTop + scrollDelta);\n }\n },\n\n _saveScrollState: function _saveScrollState() {\n if (this.props.stickyBottom && this.isAtBottom()) {\n this.scrollState = { stuckAtBottom: true };\n debuglog(\"ScrollPanel: Saved scroll state\", this.scrollState);\n return;\n }\n\n var itemlist = this.refs.itemlist;\n var wrapperRect = ReactDOM.findDOMNode(this).getBoundingClientRect();\n var messages = itemlist.children;\n var newScrollState = null;\n\n for (var i = messages.length - 1; i >= 0; --i) {\n var node = messages[i];\n if (!node.dataset.scrollTokens) continue;\n\n var boundingRect = node.getBoundingClientRect();\n newScrollState = {\n stuckAtBottom: false,\n trackedScrollToken: node.dataset.scrollTokens.split(',')[0],\n pixelOffset: wrapperRect.bottom - boundingRect.bottom\n };\n // If the bottom of the panel intersects the ClientRect of node, use this node\n // as the scrollToken.\n // If this is false for the entire for-loop, we default to the last node\n // (which is why newScrollState is set on every iteration).\n if (boundingRect.top < wrapperRect.bottom) {\n // Use this node as the scrollToken\n break;\n }\n }\n // This is only false if there were no nodes with `node.dataset.scrollTokens` set.\n if (newScrollState) {\n this.scrollState = newScrollState;\n debuglog(\"ScrollPanel: saved scroll state\", this.scrollState);\n } else {\n debuglog(\"ScrollPanel: unable to save scroll state: found no children in the viewport\");\n }\n },\n\n _restoreSavedScrollState: function _restoreSavedScrollState() {\n var scrollState = this.scrollState;\n var scrollNode = this._getScrollNode();\n\n if (scrollState.stuckAtBottom) {\n this._setScrollTop(Number.MAX_VALUE);\n } else if (scrollState.trackedScrollToken) {\n this._scrollToToken(scrollState.trackedScrollToken, scrollState.pixelOffset);\n }\n },\n\n _setScrollTop: function _setScrollTop(scrollTop) {\n var scrollNode = this._getScrollNode();\n\n var prevScroll = scrollNode.scrollTop;\n\n // FF ignores attempts to set scrollTop to very large numbers\n scrollNode.scrollTop = Math.min(scrollTop, scrollNode.scrollHeight);\n\n // If this change generates a scroll event, we should not update the\n // saved scroll state on it. See the comments in onScroll.\n //\n // If we *don't* expect a scroll event, we need to leave _lastSetScroll\n // alone, otherwise we'll end up ignoring a future scroll event which is\n // nothing to do with this change.\n\n if (scrollNode.scrollTop != prevScroll) {\n this._lastSetScroll = scrollNode.scrollTop;\n }\n\n debuglog(\"ScrollPanel: set scrollTop:\", scrollNode.scrollTop, \"requested:\", scrollTop, \"_lastSetScroll:\", this._lastSetScroll);\n },\n\n /* get the DOM node which has the scrollTop property we care about for our\n * message panel.\n */\n _getScrollNode: function _getScrollNode() {\n if (this.unmounted) {\n // this shouldn't happen, but when it does, turn the NPE into\n // something more meaningful.\n throw new Error(\"ScrollPanel._getScrollNode called when unmounted\");\n }\n\n if (!this._gemScroll) {\n // Likewise, we should have the ref by this point, but if not\n // turn the NPE into something meaningful.\n throw new Error(\"ScrollPanel._getScrollNode called before gemini ref collected\");\n }\n\n return this._gemScroll.scrollbar.getViewElement();\n },\n\n _collectGeminiScroll: function _collectGeminiScroll(gemScroll) {\n this._gemScroll = gemScroll;\n },\n\n render: function render() {\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n // TODO: the classnames on the div and ol could do with being updated to\n // reflect the fact that we don't necessarily contain a list of messages.\n // it's not obvious why we have a separate div and ol anyway.\n return React.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true, wrappedRef: this._collectGeminiScroll,\n onScroll: this.onScroll, onResize: this.onResize,\n className: this.props.className, style: this.props.style },\n React.createElement(\n \"div\",\n { className: \"mx_RoomView_messageListWrapper\" },\n React.createElement(\n \"ol\",\n { ref: \"itemlist\", className: \"mx_RoomView_MessageList\", \"aria-live\": \"polite\" },\n this.props.children\n )\n )\n );\n }\n});\n//# sourceMappingURL=ScrollPanel.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _Keyboard = require('../../Keyboard');\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _ratelimitedfunc = require('../../ratelimitedfunc');\n\nvar _ratelimitedfunc2 = _interopRequireDefault(_ratelimitedfunc);\n\nvar _AccessibleButton = require('../../components/views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'SearchBox',\n\n propTypes: {\n collapsed: _react2.default.PropTypes.bool,\n onSearch: _react2.default.PropTypes.func\n },\n\n getInitialState: function getInitialState() {\n return {\n searchTerm: \"\"\n };\n },\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n case 'view_room':\n if (this.refs.search && payload.clear_search) {\n this._clearSearch();\n }\n break;\n case 'focus_room_filter':\n if (this.refs.search) {\n this.refs.search.focus();\n this.refs.search.select();\n }\n break;\n }\n },\n\n onChange: function onChange() {\n if (!this.refs.search) return;\n this.setState({ searchTerm: this.refs.search.value });\n this.onSearch();\n },\n\n onSearch: new _ratelimitedfunc2.default(function () {\n this.props.onSearch(this.refs.search.value);\n }, 100),\n\n onToggleCollapse: function onToggleCollapse(show) {\n if (show) {\n _dispatcher2.default.dispatch({\n action: 'show_left_panel'\n });\n } else {\n _dispatcher2.default.dispatch({\n action: 'hide_left_panel'\n });\n }\n },\n\n _onKeyDown: function _onKeyDown(ev) {\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.ESCAPE:\n this._clearSearch();\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n break;\n }\n },\n\n _clearSearch: function _clearSearch() {\n this.refs.search.value = \"\";\n this.onChange();\n },\n\n render: function render() {\n var _this = this;\n\n var TintableSvg = _index2.default.getComponent('elements.TintableSvg');\n\n var collapseTabIndex = this.refs.search && this.refs.search.value !== \"\" ? \"-1\" : \"0\";\n\n var toggleCollapse = void 0;\n if (this.props.collapsed) {\n toggleCollapse = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_SearchBox_maximise', tabIndex: collapseTabIndex, onClick: this.onToggleCollapse.bind(this, true) },\n _react2.default.createElement(TintableSvg, { src: 'img/maximise.svg', width: '10', height: '16', alt: (0, _languageHandler._t)(\"Expand panel\") })\n );\n } else {\n toggleCollapse = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_SearchBox_minimise', tabIndex: collapseTabIndex, onClick: this.onToggleCollapse.bind(this, false) },\n _react2.default.createElement(TintableSvg, { src: 'img/minimise.svg', width: '10', height: '16', alt: (0, _languageHandler._t)(\"Collapse panel\") })\n );\n }\n\n var searchControls = void 0;\n if (!this.props.collapsed) {\n searchControls = [this.state.searchTerm.length > 0 ? _react2.default.createElement(\n _AccessibleButton2.default,\n { key: 'button',\n className: 'mx_SearchBox_closeButton',\n onClick: function onClick() {\n _this._clearSearch();\n } },\n _react2.default.createElement(TintableSvg, {\n className: 'mx_SearchBox_searchButton',\n src: 'img/icons-close.svg', width: '24', height: '24'\n })\n ) : _react2.default.createElement(TintableSvg, {\n key: 'button',\n className: 'mx_SearchBox_searchButton',\n src: 'img/icons-search-copy.svg', width: '13', height: '13'\n }), _react2.default.createElement('input', {\n key: 'searchfield',\n type: 'text',\n ref: 'search',\n className: 'mx_SearchBox_search',\n value: this.state.searchTerm,\n onChange: this.onChange,\n onKeyDown: this._onKeyDown,\n placeholder: (0, _languageHandler._t)('Filter room names')\n })];\n }\n\n var self = this;\n return _react2.default.createElement(\n 'div',\n { className: 'mx_SearchBox' },\n searchControls,\n toggleCollapse\n );\n }\n});\n//# sourceMappingURL=SearchBox.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _TagOrderStore = require('../../stores/TagOrderStore');\n\nvar _TagOrderStore2 = _interopRequireDefault(_TagOrderStore);\n\nvar _GroupActions = require('../../actions/GroupActions');\n\nvar _GroupActions2 = _interopRequireDefault(_GroupActions);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _reactBeautifulDnd = require('react-beautiful-dnd');\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017, 2018 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar TagPanel = _react2.default.createClass({\n displayName: 'TagPanel',\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getInitialState: function getInitialState() {\n return {\n orderedTags: [],\n selectedTags: []\n };\n },\n\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this.unmounted = false;\n this.context.matrixClient.on(\"Group.myMembership\", this._onGroupMyMembership);\n this.context.matrixClient.on(\"sync\", this._onClientSync);\n\n this._tagOrderStoreToken = _TagOrderStore2.default.addListener(function () {\n if (_this.unmounted) {\n return;\n }\n _this.setState({\n orderedTags: _TagOrderStore2.default.getOrderedTags() || [],\n selectedTags: _TagOrderStore2.default.getSelectedTags()\n });\n });\n // This could be done by anything with a matrix client\n _dispatcher2.default.dispatch(_GroupActions2.default.fetchJoinedGroups(this.context.matrixClient));\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this.unmounted = true;\n this.context.matrixClient.removeListener(\"Group.myMembership\", this._onGroupMyMembership);\n this.context.matrixClient.removeListener(\"sync\", this._onClientSync);\n if (this._filterStoreToken) {\n this._filterStoreToken.remove();\n }\n },\n _onGroupMyMembership: function _onGroupMyMembership() {\n if (this.unmounted) return;\n _dispatcher2.default.dispatch(_GroupActions2.default.fetchJoinedGroups(this.context.matrixClient));\n },\n _onClientSync: function _onClientSync(syncState, prevState) {\n // Consider the client reconnected if there is no error with syncing.\n // This means the state could be RECONNECTING, SYNCING, PREPARED or CATCHUP.\n var reconnected = syncState !== \"ERROR\" && prevState !== syncState;\n if (reconnected) {\n // Load joined groups\n _dispatcher2.default.dispatch(_GroupActions2.default.fetchJoinedGroups(this.context.matrixClient));\n }\n },\n onMouseDown: function onMouseDown(e) {\n // only dispatch if its not a no-op\n if (this.state.selectedTags.length > 0) {\n _dispatcher2.default.dispatch({ action: 'deselect_tags' });\n }\n },\n onCreateGroupClick: function onCreateGroupClick(ev) {\n ev.stopPropagation();\n _dispatcher2.default.dispatch({ action: 'view_create_group' });\n },\n onClearFilterClick: function onClearFilterClick(ev) {\n _dispatcher2.default.dispatch({ action: 'deselect_tags' });\n },\n render: function render() {\n var _this2 = this;\n\n var GroupsButton = _index2.default.getComponent('elements.GroupsButton');\n var DNDTagTile = _index2.default.getComponent('elements.DNDTagTile');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var TintableSvg = _index2.default.getComponent('elements.TintableSvg');\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n\n var tags = this.state.orderedTags.map(function (tag, index) {\n return _react2.default.createElement(DNDTagTile, {\n key: tag,\n tag: tag,\n index: index,\n selected: _this2.state.selectedTags.includes(tag)\n });\n });\n\n var itemsSelected = this.state.selectedTags.length > 0;\n\n var clearButton = void 0;\n if (itemsSelected) {\n clearButton = _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_TagPanel_clearButton', onClick: this.onClearFilterClick },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-close.svg', width: '24', height: '24',\n alt: (0, _languageHandler._t)(\"Clear filter\"),\n title: (0, _languageHandler._t)(\"Clear filter\")\n })\n );\n }\n\n var classes = (0, _classnames2.default)('mx_TagPanel', {\n mx_TagPanel_items_selected: itemsSelected\n });\n\n return _react2.default.createElement(\n 'div',\n { className: classes },\n _react2.default.createElement(\n 'div',\n { className: 'mx_TagPanel_clearButton_container' },\n clearButton\n ),\n _react2.default.createElement('div', { className: 'mx_TagPanel_divider' }),\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n {\n className: 'mx_TagPanel_scroller',\n autoshow: true\n // XXX: Use onMouseDown as a workaround for https://github.com/atlassian/react-beautiful-dnd/issues/273\n // instead of onClick. Otherwise we experience https://github.com/vector-im/riot-web/issues/6253\n , onMouseDown: this.onMouseDown\n },\n _react2.default.createElement(\n _reactBeautifulDnd.Droppable,\n {\n droppableId: 'tag-panel-droppable',\n type: 'draggable-TagTile'\n },\n function (provided, snapshot) {\n return _react2.default.createElement(\n 'div',\n {\n className: 'mx_TagPanel_tagTileContainer',\n ref: provided.innerRef\n },\n tags,\n provided.placeholder\n );\n }\n )\n ),\n _react2.default.createElement('div', { className: 'mx_TagPanel_divider' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_TagPanel_groupsButton' },\n _react2.default.createElement(GroupsButton, { tooltip: true })\n )\n );\n }\n});\nexports.default = TagPanel;\nmodule.exports = exports['default'];\n//# sourceMappingURL=TagPanel.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _actionCreators = require('./actionCreators');\n\nvar GroupActions = {};\n\n/**\n * Creates an action thunk that will do an asynchronous request to fetch\n * the groups to which a user is joined.\n *\n * @param {MatrixClient} matrixClient the matrix client to query.\n * @returns {function} an action thunk that will dispatch actions\n * indicating the status of the request.\n * @see asyncAction\n */\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nGroupActions.fetchJoinedGroups = function (matrixClient) {\n return (0, _actionCreators.asyncAction)('GroupActions.fetchJoinedGroups', function () {\n return matrixClient.getJoinedGroups();\n });\n};\n\nexports.default = GroupActions;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupActions.js.map","\"use strict\";\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _toConsumableArray2 = require(\"babel-runtime/helpers/toConsumableArray\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _SettingsStore = require(\"../../settings/SettingsStore\");\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _languageHandler = require(\"../../languageHandler\");\n\nvar _Keyboard = require(\"../../Keyboard\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react'); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar ReactDOM = require(\"react-dom\");\n\n\nvar Matrix = require(\"matrix-js-sdk\");\nvar EventTimeline = Matrix.EventTimeline;\n\nvar sdk = require('../../index');\n\nvar MatrixClientPeg = require(\"../../MatrixClientPeg\");\nvar dis = require(\"../../dispatcher\");\nvar ObjectUtils = require('../../ObjectUtils');\nvar Modal = require(\"../../Modal\");\nvar UserActivity = require(\"../../UserActivity\");\n\n\nvar PAGINATE_SIZE = 20;\nvar INITIAL_SIZE = 20;\n\nvar DEBUG = false;\n\nif (DEBUG) {\n // using bind means that we get to keep useful line numbers in the console\n var debuglog = console.log.bind(console);\n} else {\n var debuglog = function debuglog() {};\n}\n\n/*\n * Component which shows the event timeline in a room view.\n *\n * Also responsible for handling and sending read receipts.\n */\nvar TimelinePanel = React.createClass({\n displayName: 'TimelinePanel',\n\n propTypes: {\n // The js-sdk EventTimelineSet object for the timeline sequence we are\n // representing. This may or may not have a room, depending on what it's\n // a timeline representing. If it has a room, we maintain RRs etc for\n // that room.\n timelineSet: _propTypes2.default.object.isRequired,\n\n showReadReceipts: _propTypes2.default.bool,\n // Enable managing RRs and RMs. These require the timelineSet to have a room.\n manageReadReceipts: _propTypes2.default.bool,\n manageReadMarkers: _propTypes2.default.bool,\n\n // true to give the component a 'display: none' style.\n hidden: _propTypes2.default.bool,\n\n // ID of an event to highlight. If undefined, no event will be highlighted.\n // typically this will be either 'eventId' or undefined.\n highlightedEventId: _propTypes2.default.string,\n\n // id of an event to jump to. If not given, will go to the end of the\n // live timeline.\n eventId: _propTypes2.default.string,\n\n // where to position the event given by eventId, in pixels from the\n // bottom of the viewport. If not given, will try to put the event\n // half way down the viewport.\n eventPixelOffset: _propTypes2.default.number,\n\n // Should we show URL Previews\n showUrlPreview: _propTypes2.default.bool,\n\n // callback which is called when the panel is scrolled.\n onScroll: _propTypes2.default.func,\n\n // callback which is called when the read-up-to mark is updated.\n onReadMarkerUpdated: _propTypes2.default.func,\n\n // maximum number of events to show in a timeline\n timelineCap: _propTypes2.default.number,\n\n // classname to use for the messagepanel\n className: _propTypes2.default.string,\n\n // shape property to be passed to EventTiles\n tileShape: _propTypes2.default.string,\n\n // placeholder text to use if the timeline is empty\n empty: _propTypes2.default.string\n },\n\n statics: {\n // a map from room id to read marker event timestamp\n roomReadMarkerTsMap: {}\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n // By default, disable the timelineCap in favour of unpaginating based on\n // event tile heights. (See _unpaginateEvents)\n timelineCap: Number.MAX_VALUE,\n className: 'mx_RoomView_messagePanel'\n };\n },\n\n getInitialState: function getInitialState() {\n // XXX: we could track RM per TimelineSet rather than per Room.\n // but for now we just do it per room for simplicity.\n var initialReadMarker = null;\n if (this.props.manageReadMarkers) {\n var readmarker = this.props.timelineSet.room.getAccountData('m.fully_read');\n if (readmarker) {\n initialReadMarker = readmarker.getContent().event_id;\n } else {\n initialReadMarker = this._getCurrentReadReceipt();\n }\n }\n\n return {\n events: [],\n timelineLoading: true, // track whether our room timeline is loading\n\n // canBackPaginate == false may mean:\n //\n // * we haven't (successfully) loaded the timeline yet, or:\n //\n // * we have got to the point where the room was created, or:\n //\n // * the server indicated that there were no more visible events\n // (normally implying we got to the start of the room), or:\n //\n // * we gave up asking the server for more events\n canBackPaginate: false,\n\n // canForwardPaginate == false may mean:\n //\n // * we haven't (successfully) loaded the timeline yet\n //\n // * we have got to the end of time and are now tracking the live\n // timeline, or:\n //\n // * the server indicated that there were no more visible events\n // (not sure if this ever happens when we're not at the live\n // timeline), or:\n //\n // * we are looking at some historical point, but gave up asking\n // the server for more events\n canForwardPaginate: false,\n\n // start with the read-marker visible, so that we see its animated\n // disappearance when switching into the room.\n readMarkerVisible: true,\n\n readMarkerEventId: initialReadMarker,\n\n backPaginating: false,\n forwardPaginating: false,\n\n // cache of matrixClient.getSyncState() (but from the 'sync' event)\n clientSyncState: MatrixClientPeg.get().getSyncState(),\n\n // should the event tiles have twelve hour times\n isTwelveHour: _SettingsStore2.default.getValue(\"showTwelveHourTimestamps\"),\n\n // always show timestamps on event tiles?\n alwaysShowTimestamps: _SettingsStore2.default.getValue(\"alwaysShowTimestamps\")\n };\n },\n\n componentWillMount: function componentWillMount() {\n debuglog(\"TimelinePanel: mounting\");\n\n this.lastRRSentEventId = undefined;\n this.lastRMSentEventId = undefined;\n\n this.dispatcherRef = dis.register(this.onAction);\n MatrixClientPeg.get().on(\"Room.timeline\", this.onRoomTimeline);\n MatrixClientPeg.get().on(\"Room.timelineReset\", this.onRoomTimelineReset);\n MatrixClientPeg.get().on(\"Room.redaction\", this.onRoomRedaction);\n MatrixClientPeg.get().on(\"Room.receipt\", this.onRoomReceipt);\n MatrixClientPeg.get().on(\"Room.localEchoUpdated\", this.onLocalEchoUpdated);\n MatrixClientPeg.get().on(\"Room.accountData\", this.onAccountData);\n MatrixClientPeg.get().on(\"Event.decrypted\", this.onEventDecrypted);\n MatrixClientPeg.get().on(\"sync\", this.onSync);\n\n this._initTimeline(this.props);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n if (newProps.timelineSet !== this.props.timelineSet) {\n // throw new Error(\"changing timelineSet on a TimelinePanel is not supported\");\n\n // regrettably, this does happen; in particular, when joining a\n // room with /join. In that case, there are two Rooms in\n // circulation - one which is created by the MatrixClient.joinRoom\n // call and used to create the RoomView, and a second which is\n // created by the sync loop once the room comes back down the /sync\n // pipe. Once the latter happens, our room is replaced with the new one.\n //\n // for now, just warn about this. But we're going to end up paginating\n // both rooms separately, and it's all bad.\n console.warn(\"Replacing timelineSet on a TimelinePanel - confusion may ensue\");\n }\n\n if (newProps.eventId != this.props.eventId) {\n console.log(\"TimelinePanel switching to eventId \" + newProps.eventId + \" (was \" + this.props.eventId + \")\");\n return this._initTimeline(newProps);\n }\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n if (!ObjectUtils.shallowEqual(this.props, nextProps)) {\n if (DEBUG) {\n console.group(\"Timeline.shouldComponentUpdate: props change\");\n console.log(\"props before:\", this.props);\n console.log(\"props after:\", nextProps);\n console.groupEnd();\n }\n return true;\n }\n\n if (!ObjectUtils.shallowEqual(this.state, nextState)) {\n if (DEBUG) {\n console.group(\"Timeline.shouldComponentUpdate: state change\");\n console.log(\"state before:\", this.state);\n console.log(\"state after:\", nextState);\n console.groupEnd();\n }\n return true;\n }\n\n return false;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // set a boolean to say we've been unmounted, which any pending\n // promises can use to throw away their results.\n //\n // (We could use isMounted, but facebook have deprecated that.)\n this.unmounted = true;\n\n dis.unregister(this.dispatcherRef);\n\n var client = MatrixClientPeg.get();\n if (client) {\n client.removeListener(\"Room.timeline\", this.onRoomTimeline);\n client.removeListener(\"Room.timelineReset\", this.onRoomTimelineReset);\n client.removeListener(\"Room.redaction\", this.onRoomRedaction);\n client.removeListener(\"Room.receipt\", this.onRoomReceipt);\n client.removeListener(\"Room.localEchoUpdated\", this.onLocalEchoUpdated);\n client.removeListener(\"Room.accountData\", this.onAccountData);\n client.removeListener(\"Event.decrypted\", this.onEventDecrypted);\n client.removeListener(\"sync\", this.onSync);\n }\n },\n\n onMessageListUnfillRequest: function onMessageListUnfillRequest(backwards, scrollToken) {\n // If backwards, unpaginate from the back (i.e. the start of the timeline)\n var dir = backwards ? EventTimeline.BACKWARDS : EventTimeline.FORWARDS;\n debuglog(\"TimelinePanel: unpaginating events in direction\", dir);\n\n // All tiles are inserted by MessagePanel to have a scrollToken === eventId, and\n // this particular event should be the first or last to be unpaginated.\n var eventId = scrollToken;\n\n var marker = this.state.events.findIndex(function (ev) {\n return ev.getId() === eventId;\n });\n\n var count = backwards ? marker + 1 : this.state.events.length - marker;\n\n if (count > 0) {\n var _setState;\n\n debuglog(\"TimelinePanel: Unpaginating\", count, \"in direction\", dir);\n this._timelineWindow.unpaginate(count, backwards);\n\n // We can now paginate in the unpaginated direction\n var canPaginateKey = backwards ? 'canBackPaginate' : 'canForwardPaginate';\n this.setState((_setState = {}, (0, _defineProperty3.default)(_setState, canPaginateKey, true), (0, _defineProperty3.default)(_setState, \"events\", this._getEvents()), _setState));\n }\n },\n\n // set off a pagination request.\n onMessageListFillRequest: function onMessageListFillRequest(backwards) {\n var _this = this;\n\n if (!this._shouldPaginate()) return _bluebird2.default.resolve(false);\n\n var dir = backwards ? EventTimeline.BACKWARDS : EventTimeline.FORWARDS;\n var canPaginateKey = backwards ? 'canBackPaginate' : 'canForwardPaginate';\n var paginatingKey = backwards ? 'backPaginating' : 'forwardPaginating';\n\n if (!this.state[canPaginateKey]) {\n debuglog(\"TimelinePanel: have given up\", dir, \"paginating this timeline\");\n return _bluebird2.default.resolve(false);\n }\n\n if (!this._timelineWindow.canPaginate(dir)) {\n debuglog(\"TimelinePanel: can't\", dir, \"paginate any further\");\n this.setState((0, _defineProperty3.default)({}, canPaginateKey, false));\n return _bluebird2.default.resolve(false);\n }\n\n debuglog(\"TimelinePanel: Initiating paginate; backwards:\" + backwards);\n this.setState((0, _defineProperty3.default)({}, paginatingKey, true));\n\n return this._timelineWindow.paginate(dir, PAGINATE_SIZE).then(function (r) {\n var _newState;\n\n if (_this.unmounted) {\n return;\n }\n\n debuglog(\"TimelinePanel: paginate complete backwards:\" + backwards + \"; success:\" + r);\n\n var newState = (_newState = {}, (0, _defineProperty3.default)(_newState, paginatingKey, false), (0, _defineProperty3.default)(_newState, canPaginateKey, r), (0, _defineProperty3.default)(_newState, \"events\", _this._getEvents()), _newState);\n\n // moving the window in this direction may mean that we can now\n // paginate in the other where we previously could not.\n var otherDirection = backwards ? EventTimeline.FORWARDS : EventTimeline.BACKWARDS;\n var canPaginateOtherWayKey = backwards ? 'canForwardPaginate' : 'canBackPaginate';\n if (!_this.state[canPaginateOtherWayKey] && _this._timelineWindow.canPaginate(otherDirection)) {\n debuglog('TimelinePanel: can now', otherDirection, 'paginate again');\n newState[canPaginateOtherWayKey] = true;\n }\n\n // Don't resolve until the setState has completed: we need to let\n // the component update before we consider the pagination completed,\n // otherwise we'll end up paginating in all the history the js-sdk\n // has in memory because we never gave the component a chance to scroll\n // itself into the right place\n return new _bluebird2.default(function (resolve) {\n _this.setState(newState, function () {\n resolve(r);\n });\n });\n });\n },\n\n onMessageListScroll: function onMessageListScroll(e) {\n if (this.props.onScroll) {\n this.props.onScroll(e);\n }\n\n if (this.props.manageReadMarkers) {\n // we hide the read marker when it first comes onto the screen, but if\n // it goes back off the top of the screen (presumably because the user\n // clicks on the 'jump to bottom' button), we need to re-enable it.\n if (this.getReadMarkerPosition() < 0) {\n this.setState({ readMarkerVisible: true });\n }\n }\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n case 'user_activity':\n case 'user_activity_end':\n // we could treat user_activity_end differently and not\n // send receipts for messages that have arrived between\n // the actual user activity and the time they stopped\n // being active, but let's see if this is actually\n // necessary.\n this.sendReadReceipt();\n this.updateReadMarker();\n break;\n case 'ignore_state_changed':\n this.forceUpdate();\n break;\n }\n },\n\n onRoomTimeline: function onRoomTimeline(ev, room, toStartOfTimeline, removed, data) {\n var _this2 = this;\n\n // ignore events for other timeline sets\n if (data.timeline.getTimelineSet() !== this.props.timelineSet) return;\n\n // ignore anything but real-time updates at the end of the room:\n // updates from pagination will happen when the paginate completes.\n if (toStartOfTimeline || !data || !data.liveEvent) return;\n\n if (!this.refs.messagePanel) return;\n\n if (!this.refs.messagePanel.getScrollState().stuckAtBottom) {\n // we won't load this event now, because we don't want to push any\n // events off the other end of the timeline. But we need to note\n // that we can now paginate.\n this.setState({ canForwardPaginate: true });\n return;\n }\n\n // tell the timeline window to try to advance itself, but not to make\n // an http request to do so.\n //\n // we deliberately avoid going via the ScrollPanel for this call - the\n // ScrollPanel might already have an active pagination promise, which\n // will fail, but would stop us passing the pagination request to the\n // timeline window.\n //\n // see https://github.com/vector-im/vector-web/issues/1035\n this._timelineWindow.paginate(EventTimeline.FORWARDS, 1, false).done(function () {\n if (_this2.unmounted) {\n return;\n }\n\n var events = _this2._timelineWindow.getEvents();\n var lastEv = events[events.length - 1];\n\n // if we're at the end of the live timeline, append the pending events\n if (_this2.props.timelineSet.room && !_this2._timelineWindow.canPaginate(EventTimeline.FORWARDS)) {\n events.push.apply(events, (0, _toConsumableArray3.default)(_this2.props.timelineSet.room.getPendingEvents()));\n }\n\n var updatedState = { events: events };\n\n if (_this2.props.manageReadMarkers) {\n // when a new event arrives when the user is not watching the\n // window, but the window is in its auto-scroll mode, make sure the\n // read marker is visible.\n //\n // We ignore events we have sent ourselves; we don't want to see the\n // read-marker when a remote echo of an event we have just sent takes\n // more than the timeout on userCurrentlyActive.\n //\n var myUserId = MatrixClientPeg.get().credentials.userId;\n var sender = ev.sender ? ev.sender.userId : null;\n var callback = null;\n if (sender != myUserId && !UserActivity.userCurrentlyActive()) {\n updatedState.readMarkerVisible = true;\n } else if (lastEv && _this2.getReadMarkerPosition() === 0) {\n // we know we're stuckAtBottom, so we can advance the RM\n // immediately, to save a later render cycle\n\n _this2._setReadMarker(lastEv.getId(), lastEv.getTs(), true);\n updatedState.readMarkerVisible = false;\n updatedState.readMarkerEventId = lastEv.getId();\n callback = _this2.props.onReadMarkerUpdated;\n }\n }\n\n _this2.setState(updatedState, callback);\n });\n },\n\n onRoomTimelineReset: function onRoomTimelineReset(room, timelineSet) {\n if (timelineSet !== this.props.timelineSet) return;\n\n if (this.refs.messagePanel && this.refs.messagePanel.isAtBottom()) {\n this._loadTimeline();\n }\n },\n\n canResetTimeline: function canResetTimeline() {\n return this.refs.messagePanel && this.refs.messagePanel.isAtBottom();\n },\n\n onRoomRedaction: function onRoomRedaction(ev, room) {\n if (this.unmounted) return;\n\n // ignore events for other rooms\n if (room !== this.props.timelineSet.room) return;\n\n // we could skip an update if the event isn't in our timeline,\n // but that's probably an early optimisation.\n this.forceUpdate();\n },\n\n onRoomReceipt: function onRoomReceipt(ev, room) {\n if (this.unmounted) return;\n\n // ignore events for other rooms\n if (room !== this.props.timelineSet.room) return;\n\n this.forceUpdate();\n },\n\n onLocalEchoUpdated: function onLocalEchoUpdated(ev, room, oldEventId) {\n if (this.unmounted) return;\n\n // ignore events for other rooms\n if (room !== this.props.timelineSet.room) return;\n\n this._reloadEvents();\n },\n\n onAccountData: function onAccountData(ev, room) {\n if (this.unmounted) return;\n\n // ignore events for other rooms\n if (room !== this.props.timelineSet.room) return;\n\n if (ev.getType() !== \"m.fully_read\") return;\n\n // XXX: roomReadMarkerTsMap not updated here so it is now inconsistent. Replace\n // this mechanism of determining where the RM is relative to the view-port with\n // one supported by the server (the client needs more than an event ID).\n this.setState({\n readMarkerEventId: ev.getContent().event_id\n }, this.props.onReadMarkerUpdated);\n },\n\n onEventDecrypted: function onEventDecrypted(ev) {\n // Need to update as we don't display event tiles for events that\n // haven't yet been decrypted. The event will have just been updated\n // in place so we just need to re-render.\n // TODO: We should restrict this to only events in our timeline,\n // but possibly the event tile itself should just update when this\n // happens to save us re-rendering the whole timeline.\n if (ev.getRoomId() === this.props.timelineSet.room.roomId) {\n this.forceUpdate();\n }\n },\n\n onSync: function onSync(state, prevState, data) {\n this.setState({ clientSyncState: state });\n },\n\n sendReadReceipt: function sendReadReceipt() {\n var _this3 = this;\n\n if (!this.refs.messagePanel) return;\n if (!this.props.manageReadReceipts) return;\n // This happens on user_activity_end which is delayed, and it's\n // very possible have logged out within that timeframe, so check\n // we still have a client.\n var cli = MatrixClientPeg.get();\n // if no client or client is guest don't send RR or RM\n if (!cli || cli.isGuest()) return;\n\n var shouldSendRR = true;\n\n var currentRREventId = this._getCurrentReadReceipt(true);\n var currentRREventIndex = this._indexForEventId(currentRREventId);\n // We want to avoid sending out read receipts when we are looking at\n // events in the past which are before the latest RR.\n //\n // For now, let's apply a heuristic: if (a) the event corresponding to\n // the latest RR (either from the server, or sent by ourselves) doesn't\n // appear in our timeline, and (b) we could forward-paginate the event\n // timeline, then don't send any more RRs.\n //\n // This isn't watertight, as we could be looking at a section of\n // timeline which is *after* the latest RR (so we should actually send\n // RRs) - but that is a bit of a niche case. It will sort itself out when\n // the user eventually hits the live timeline.\n //\n if (currentRREventId && currentRREventIndex === null && this._timelineWindow.canPaginate(EventTimeline.FORWARDS)) {\n shouldSendRR = false;\n }\n\n var lastReadEventIndex = this._getLastDisplayedEventIndex({\n ignoreOwn: true\n });\n if (lastReadEventIndex === null) {\n shouldSendRR = false;\n }\n var lastReadEvent = this.state.events[lastReadEventIndex];\n shouldSendRR = shouldSendRR &&\n // Only send a RR if the last read event is ahead in the timeline relative to\n // the current RR event.\n lastReadEventIndex > currentRREventIndex &&\n // Only send a RR if the last RR set != the one we would send\n this.lastRRSentEventId != lastReadEvent.getId();\n\n // Only send a RM if the last RM sent != the one we would send\n var shouldSendRM = this.lastRMSentEventId != this.state.readMarkerEventId;\n\n // we also remember the last read receipt we sent to avoid spamming the\n // same one at the server repeatedly\n if (shouldSendRR || shouldSendRM) {\n if (shouldSendRR) {\n this.lastRRSentEventId = lastReadEvent.getId();\n } else {\n lastReadEvent = null;\n }\n this.lastRMSentEventId = this.state.readMarkerEventId;\n\n debuglog('TimelinePanel: Sending Read Markers for ', this.props.timelineSet.room.roomId, 'rm', this.state.readMarkerEventId, lastReadEvent ? 'rr ' + lastReadEvent.getId() : '');\n MatrixClientPeg.get().setRoomReadMarkers(this.props.timelineSet.room.roomId, this.state.readMarkerEventId, lastReadEvent // Could be null, in which case no RR is sent\n ).catch(function (e) {\n // /read_markers API is not implemented on this HS, fallback to just RR\n if (e.errcode === 'M_UNRECOGNIZED' && lastReadEvent) {\n return MatrixClientPeg.get().sendReadReceipt(lastReadEvent).catch(function () {\n _this3.lastRRSentEventId = undefined;\n });\n }\n // it failed, so allow retries next time the user is active\n _this3.lastRRSentEventId = undefined;\n _this3.lastRMSentEventId = undefined;\n });\n\n // do a quick-reset of our unreadNotificationCount to avoid having\n // to wait from the remote echo from the homeserver.\n // we only do this if we're right at the end, because we're just assuming\n // that sending an RR for the latest message will set our notif counter\n // to zero: it may not do this if we send an RR for somewhere before the end.\n if (this.isAtEndOfLiveTimeline()) {\n this.props.timelineSet.room.setUnreadNotificationCount('total', 0);\n this.props.timelineSet.room.setUnreadNotificationCount('highlight', 0);\n dis.dispatch({\n action: 'on_room_read',\n roomId: this.props.timelineSet.room.roomId\n });\n }\n }\n },\n\n // if the read marker is on the screen, we can now assume we've caught up to the end\n // of the screen, so move the marker down to the bottom of the screen.\n updateReadMarker: function updateReadMarker() {\n if (!this.props.manageReadMarkers) return;\n if (this.getReadMarkerPosition() !== 0) {\n return;\n }\n\n // move the RM to *after* the message at the bottom of the screen. This\n // avoids a problem whereby we never advance the RM if there is a huge\n // message which doesn't fit on the screen.\n //\n // But ignore local echoes for this - they have a temporary event ID\n // and we'll get confused when their ID changes and we can't figure out\n // where the RM is pointing to. The read marker will be invisible for\n // now anyway, so this doesn't really matter.\n var lastDisplayedIndex = this._getLastDisplayedEventIndex({\n allowPartial: true,\n ignoreEchoes: true\n });\n\n if (lastDisplayedIndex === null) {\n return;\n }\n\n var lastDisplayedEvent = this.state.events[lastDisplayedIndex];\n this._setReadMarker(lastDisplayedEvent.getId(), lastDisplayedEvent.getTs());\n\n // the read-marker should become invisible, so that if the user scrolls\n // down, they don't see it.\n if (this.state.readMarkerVisible) {\n this.setState({\n readMarkerVisible: false\n });\n }\n },\n\n // advance the read marker past any events we sent ourselves.\n _advanceReadMarkerPastMyEvents: function _advanceReadMarkerPastMyEvents() {\n if (!this.props.manageReadMarkers) return;\n\n // we call _timelineWindow.getEvents() rather than using\n // this.state.events, because react batches the update to the latter, so it\n // may not have been updated yet.\n var events = this._timelineWindow.getEvents();\n\n // first find where the current RM is\n for (var i = 0; i < events.length; i++) {\n if (events[i].getId() == this.state.readMarkerEventId) {\n break;\n }\n }\n if (i >= events.length) {\n return;\n }\n\n // now think about advancing it\n var myUserId = MatrixClientPeg.get().credentials.userId;\n for (i++; i < events.length; i++) {\n var ev = events[i];\n if (!ev.sender || ev.sender.userId != myUserId) {\n break;\n }\n }\n // i is now the first unread message which we didn't send ourselves.\n i--;\n\n var ev = events[i];\n this._setReadMarker(ev.getId(), ev.getTs());\n },\n\n /* jump down to the bottom of this room, where new events are arriving\n */\n jumpToLiveTimeline: function jumpToLiveTimeline() {\n // if we can't forward-paginate the existing timeline, then there\n // is no point reloading it - just jump straight to the bottom.\n //\n // Otherwise, reload the timeline rather than trying to paginate\n // through all of space-time.\n if (this._timelineWindow.canPaginate(EventTimeline.FORWARDS)) {\n this._loadTimeline();\n } else {\n if (this.refs.messagePanel) {\n this.refs.messagePanel.scrollToBottom();\n }\n }\n },\n\n /* scroll to show the read-up-to marker. We put it 1/3 of the way down\n * the container.\n */\n jumpToReadMarker: function jumpToReadMarker() {\n if (!this.props.manageReadMarkers) return;\n if (!this.refs.messagePanel) return;\n if (!this.state.readMarkerEventId) return;\n\n // we may not have loaded the event corresponding to the read-marker\n // into the _timelineWindow. In that case, attempts to scroll to it\n // will fail.\n //\n // a quick way to figure out if we've loaded the relevant event is\n // simply to check if the messagepanel knows where the read-marker is.\n var ret = this.refs.messagePanel.getReadMarkerPosition();\n if (ret !== null) {\n // The messagepanel knows where the RM is, so we must have loaded\n // the relevant event.\n this.refs.messagePanel.scrollToEvent(this.state.readMarkerEventId, 0, 1 / 3);\n return;\n }\n\n // Looks like we haven't loaded the event corresponding to the read-marker.\n // As with jumpToLiveTimeline, we want to reload the timeline around the\n // read-marker.\n this._loadTimeline(this.state.readMarkerEventId, 0, 1 / 3);\n },\n\n /* update the read-up-to marker to match the read receipt\n */\n forgetReadMarker: function forgetReadMarker() {\n if (!this.props.manageReadMarkers) return;\n\n var rmId = this._getCurrentReadReceipt();\n\n // see if we know the timestamp for the rr event\n var tl = this.props.timelineSet.getTimelineForEvent(rmId);\n var rmTs = void 0;\n if (tl) {\n var event = tl.getEvents().find(function (e) {\n return e.getId() == rmId;\n });\n if (event) {\n rmTs = event.getTs();\n }\n }\n\n this._setReadMarker(rmId, rmTs);\n },\n\n /* return true if the content is fully scrolled down and we are\n * at the end of the live timeline.\n */\n isAtEndOfLiveTimeline: function isAtEndOfLiveTimeline() {\n return this.refs.messagePanel && this.refs.messagePanel.isAtBottom() && this._timelineWindow && !this._timelineWindow.canPaginate(EventTimeline.FORWARDS);\n },\n\n /* get the current scroll state. See ScrollPanel.getScrollState for\n * details.\n *\n * returns null if we are not mounted.\n */\n getScrollState: function getScrollState() {\n if (!this.refs.messagePanel) {\n return null;\n }\n return this.refs.messagePanel.getScrollState();\n },\n\n // returns one of:\n //\n // null: there is no read marker\n // -1: read marker is above the window\n // 0: read marker is visible\n // +1: read marker is below the window\n getReadMarkerPosition: function getReadMarkerPosition() {\n if (!this.props.manageReadMarkers) return null;\n if (!this.refs.messagePanel) return null;\n\n var ret = this.refs.messagePanel.getReadMarkerPosition();\n if (ret !== null) {\n return ret;\n }\n\n // the messagePanel doesn't know where the read marker is.\n // if we know the timestamp of the read marker, make a guess based on that.\n var rmTs = TimelinePanel.roomReadMarkerTsMap[this.props.timelineSet.room.roomId];\n if (rmTs && this.state.events.length > 0) {\n if (rmTs < this.state.events[0].getTs()) {\n return -1;\n } else {\n return 1;\n }\n }\n\n return null;\n },\n\n canJumpToReadMarker: function canJumpToReadMarker() {\n // 1. Do not show jump bar if neither the RM nor the RR are set.\n // 2. Only show jump bar if RR !== RM. If they are the same, there are only fully\n // read messages and unread messages. We already have a badge count and the bottom\n // bar to jump to \"live\" when we have unread messages.\n // 3. We want to show the bar if the read-marker is off the top of the screen.\n // 4. Also, if pos === null, the event might not be paginated - show the unread bar\n var pos = this.getReadMarkerPosition();\n return this.state.readMarkerEventId !== null && // 1.\n this.state.readMarkerEventId !== this._getCurrentReadReceipt() && ( // 2.\n pos < 0 || pos === null); // 3., 4.\n },\n\n /**\n * called by the parent component when PageUp/Down/etc is pressed.\n *\n * We pass it down to the scroll panel.\n */\n handleScrollKey: function handleScrollKey(ev) {\n if (!this.refs.messagePanel) {\n return;\n }\n\n // jump to the live timeline on ctrl-end, rather than the end of the\n // timeline window.\n if (ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey && ev.keyCode == _Keyboard.KeyCode.END) {\n this.jumpToLiveTimeline();\n } else {\n this.refs.messagePanel.handleScrollKey(ev);\n }\n },\n\n _initTimeline: function _initTimeline(props) {\n var initialEvent = props.eventId;\n var pixelOffset = props.eventPixelOffset;\n\n // if a pixelOffset is given, it is relative to the bottom of the\n // container. If not, put the event in the middle of the container.\n var offsetBase = 1;\n if (pixelOffset == null) {\n offsetBase = 0.5;\n }\n\n return this._loadTimeline(initialEvent, pixelOffset, offsetBase);\n },\n\n /**\n * (re)-load the event timeline, and initialise the scroll state, centered\n * around the given event.\n *\n * @param {string?} eventId the event to focus on. If undefined, will\n * scroll to the bottom of the room.\n *\n * @param {number?} pixelOffset offset to position the given event at\n * (pixels from the offsetBase). If omitted, defaults to 0.\n *\n * @param {number?} offsetBase the reference point for the pixelOffset. 0\n * means the top of the container, 1 means the bottom, and fractional\n * values mean somewhere in the middle. If omitted, it defaults to 0.\n *\n * returns a promise which will resolve when the load completes.\n */\n _loadTimeline: function _loadTimeline(eventId, pixelOffset, offsetBase) {\n var _this4 = this;\n\n this._timelineWindow = new Matrix.TimelineWindow(MatrixClientPeg.get(), this.props.timelineSet, { windowLimit: this.props.timelineCap });\n\n var onLoaded = function onLoaded() {\n _this4._reloadEvents();\n\n // If we switched away from the room while there were pending\n // outgoing events, the read-marker will be before those events.\n // We need to skip over any which have subsequently been sent.\n _this4._advanceReadMarkerPastMyEvents();\n\n _this4.setState({\n canBackPaginate: _this4._timelineWindow.canPaginate(EventTimeline.BACKWARDS),\n canForwardPaginate: _this4._timelineWindow.canPaginate(EventTimeline.FORWARDS),\n timelineLoading: false\n }, function () {\n // initialise the scroll state of the message panel\n if (!_this4.refs.messagePanel) {\n // this shouldn't happen - we know we're mounted because\n // we're in a setState callback, and we know\n // timelineLoading is now false, so render() should have\n // mounted the message panel.\n console.log(\"can't initialise scroll state because \" + \"messagePanel didn't load\");\n return;\n }\n if (eventId) {\n _this4.refs.messagePanel.scrollToEvent(eventId, pixelOffset, offsetBase);\n } else {\n _this4.refs.messagePanel.scrollToBottom();\n }\n\n _this4.sendReadReceipt();\n _this4.updateReadMarker();\n });\n };\n\n var onError = function onError(error) {\n _this4.setState({ timelineLoading: false });\n console.error(\"Error loading timeline panel at \" + eventId + \": \" + error);\n var msg = error.message ? error.message : (0, _stringify2.default)(error);\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n\n var onFinished = void 0;\n\n // if we were given an event ID, then when the user closes the\n // dialog, let's jump to the end of the timeline. If we weren't,\n // something has gone badly wrong and rather than causing a loop of\n // undismissable dialogs, let's just give up.\n if (eventId) {\n onFinished = function onFinished() {\n // go via the dispatcher so that the URL is updated\n dis.dispatch({\n action: 'view_room',\n room_id: _this4.props.timelineSet.room.roomId\n });\n };\n }\n var message = error.errcode == 'M_FORBIDDEN' ? (0, _languageHandler._t)(\"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.\") : (0, _languageHandler._t)(\"Tried to load a specific point in this room's timeline, but was unable to find it.\");\n Modal.createTrackedDialog('Failed to load timeline position', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to load timeline position\"),\n description: message,\n onFinished: onFinished\n });\n };\n\n var prom = this._timelineWindow.load(eventId, INITIAL_SIZE);\n\n // if we already have the event in question, TimelineWindow.load\n // returns a resolved promise.\n //\n // In this situation, we don't really want to defer the update of the\n // state to the next event loop, because it makes room-switching feel\n // quite slow. So we detect that situation and shortcut straight to\n // calling _reloadEvents and updating the state.\n\n if (prom.isFulfilled()) {\n onLoaded();\n } else {\n this.setState({\n events: [],\n canBackPaginate: false,\n canForwardPaginate: false,\n timelineLoading: true\n });\n\n prom = prom.then(onLoaded, onError);\n }\n\n prom.done();\n },\n\n // handle the completion of a timeline load or localEchoUpdate, by\n // reloading the events from the timelinewindow and pending event list into\n // the state.\n _reloadEvents: function _reloadEvents() {\n // we might have switched rooms since the load started - just bin\n // the results if so.\n if (this.unmounted) return;\n\n this.setState({\n events: this._getEvents()\n });\n },\n\n // get the list of events from the timeline window and the pending event list\n _getEvents: function _getEvents() {\n var events = this._timelineWindow.getEvents();\n\n // if we're at the end of the live timeline, append the pending events\n if (!this._timelineWindow.canPaginate(EventTimeline.FORWARDS)) {\n events.push.apply(events, (0, _toConsumableArray3.default)(this.props.timelineSet.getPendingEvents()));\n }\n\n return events;\n },\n\n _indexForEventId: function _indexForEventId(evId) {\n for (var i = 0; i < this.state.events.length; ++i) {\n if (evId == this.state.events[i].getId()) {\n return i;\n }\n }\n return null;\n },\n\n _getLastDisplayedEventIndex: function _getLastDisplayedEventIndex(opts) {\n opts = opts || {};\n var ignoreOwn = opts.ignoreOwn || false;\n var ignoreEchoes = opts.ignoreEchoes || false;\n var allowPartial = opts.allowPartial || false;\n\n var messagePanel = this.refs.messagePanel;\n if (messagePanel === undefined) return null;\n\n var wrapperRect = ReactDOM.findDOMNode(messagePanel).getBoundingClientRect();\n var myUserId = MatrixClientPeg.get().credentials.userId;\n\n for (var i = this.state.events.length - 1; i >= 0; --i) {\n var ev = this.state.events[i];\n\n if (ignoreOwn && ev.sender && ev.sender.userId == myUserId) {\n continue;\n }\n\n // local echoes have a fake event ID\n if (ignoreEchoes && ev.status) {\n continue;\n }\n\n var node = messagePanel.getNodeForEventId(ev.getId());\n if (!node) continue;\n\n var boundingRect = node.getBoundingClientRect();\n if (allowPartial && boundingRect.top < wrapperRect.bottom || !allowPartial && boundingRect.bottom < wrapperRect.bottom) {\n return i;\n }\n }\n return null;\n },\n\n /**\n * get the id of the event corresponding to our user's latest read-receipt.\n *\n * @param {Boolean} ignoreSynthesized If true, return only receipts that\n * have been sent by the server, not\n * implicit ones generated by the JS\n * SDK.\n */\n _getCurrentReadReceipt: function _getCurrentReadReceipt(ignoreSynthesized) {\n var client = MatrixClientPeg.get();\n // the client can be null on logout\n if (client == null) {\n return null;\n }\n\n var myUserId = client.credentials.userId;\n return this.props.timelineSet.room.getEventReadUpTo(myUserId, ignoreSynthesized);\n },\n\n _setReadMarker: function _setReadMarker(eventId, eventTs, inhibitSetState) {\n var roomId = this.props.timelineSet.room.roomId;\n\n // don't update the state (and cause a re-render) if there is\n // no change to the RM.\n if (eventId === this.state.readMarkerEventId) {\n return;\n }\n\n // in order to later figure out if the read marker is\n // above or below the visible timeline, we stash the timestamp.\n TimelinePanel.roomReadMarkerTsMap[roomId] = eventTs;\n\n if (inhibitSetState) {\n return;\n }\n\n // Do the local echo of the RM\n // run the render cycle before calling the callback, so that\n // getReadMarkerPosition() returns the right thing.\n this.setState({\n readMarkerEventId: eventId\n }, this.props.onReadMarkerUpdated);\n },\n\n _shouldPaginate: function _shouldPaginate() {\n // don't try to paginate while events in the timeline are\n // still being decrypted. We don't render events while they're\n // being decrypted, so they don't take up space in the timeline.\n // This means we can pull quite a lot of events into the timeline\n // and end up trying to render a lot of events.\n return !this.state.events.some(function (e) {\n return e.isBeingDecrypted();\n });\n },\n\n render: function render() {\n var MessagePanel = sdk.getComponent(\"structures.MessagePanel\");\n var Loader = sdk.getComponent(\"elements.Spinner\");\n\n // just show a spinner while the timeline loads.\n //\n // put it in a div of the right class (mx_RoomView_messagePanel) so\n // that the order in the roomview flexbox is correct, and\n // mx_RoomView_messageListWrapper to position the inner div in the\n // right place.\n //\n // Note that the click-on-search-result functionality relies on the\n // fact that the messagePanel is hidden while the timeline reloads,\n // but that the RoomHeader (complete with search term) continues to\n // exist.\n if (this.state.timelineLoading) {\n return React.createElement(\n \"div\",\n { className: \"mx_RoomView_messagePanelSpinner\" },\n React.createElement(Loader, null)\n );\n }\n\n if (this.state.events.length == 0 && !this.state.canBackPaginate && this.props.empty) {\n return React.createElement(\n \"div\",\n { className: this.props.className + \" mx_RoomView_messageListWrapper\" },\n React.createElement(\n \"div\",\n { className: \"mx_RoomView_empty\" },\n this.props.empty\n )\n );\n }\n\n // give the messagepanel a stickybottom if we're at the end of the\n // live timeline, so that the arrival of new events triggers a\n // scroll.\n //\n // Make sure that stickyBottom is *false* if we can paginate\n // forwards, otherwise if somebody hits the bottom of the loaded\n // events when viewing historical messages, we get stuck in a loop\n // of paginating our way through the entire history of the room.\n var stickyBottom = !this._timelineWindow.canPaginate(EventTimeline.FORWARDS);\n\n // If the state is PREPARED or CATCHUP, we're still waiting for the js-sdk to sync with\n // the HS and fetch the latest events, so we are effectively forward paginating.\n var forwardPaginating = this.state.forwardPaginating || ['PREPARED', 'CATCHUP'].includes(this.state.clientSyncState);\n return React.createElement(MessagePanel, { ref: \"messagePanel\",\n hidden: this.props.hidden,\n backPaginating: this.state.backPaginating,\n forwardPaginating: forwardPaginating,\n events: this.state.events,\n highlightedEventId: this.props.highlightedEventId,\n readMarkerEventId: this.state.readMarkerEventId,\n readMarkerVisible: this.state.readMarkerVisible,\n suppressFirstDateSeparator: this.state.canBackPaginate,\n showUrlPreview: this.props.showUrlPreview,\n showReadReceipts: this.props.showReadReceipts,\n ourUserId: MatrixClientPeg.get().credentials.userId,\n stickyBottom: stickyBottom,\n onScroll: this.onMessageListScroll,\n onFillRequest: this.onMessageListFillRequest,\n onUnfillRequest: this.onMessageListUnfillRequest,\n isTwelveHour: this.state.isTwelveHour,\n alwaysShowTimestamps: this.state.alwaysShowTimestamps,\n className: this.props.className,\n tileShape: this.props.tileShape\n });\n }\n});\n\nmodule.exports = TimelinePanel;\n//# sourceMappingURL=TimelinePanel.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require('react');\n\nvar ContentMessages = require('../../ContentMessages');\nvar dis = require('../../dispatcher');\nvar filesize = require('filesize');\n\n\nmodule.exports = React.createClass({ displayName: 'UploadBar',\n propTypes: {\n room: _propTypes2.default.object\n },\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = dis.register(this.onAction);\n this.mounted = true;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this.mounted = false;\n dis.unregister(this.dispatcherRef);\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n case 'upload_progress':\n case 'upload_finished':\n case 'upload_failed':\n if (this.mounted) this.forceUpdate();\n break;\n }\n },\n\n render: function render() {\n var uploads = ContentMessages.getCurrentUploads();\n\n // for testing UI... - also fix up the ContentMessages.getCurrentUploads().length\n // check in RoomView\n //\n // uploads = [{\n // roomId: this.props.room.roomId,\n // loaded: 123493,\n // total: 347534,\n // fileName: \"testing_fooble.jpg\",\n // }];\n\n if (uploads.length == 0) {\n return React.createElement('div', null);\n }\n\n var upload = void 0;\n for (var i = 0; i < uploads.length; ++i) {\n if (uploads[i].roomId == this.props.room.roomId) {\n upload = uploads[i];\n break;\n }\n }\n if (!upload) {\n return React.createElement('div', null);\n }\n\n var innerProgressStyle = {\n width: upload.loaded / (upload.total || 1) * 100 + '%'\n };\n var uploadedSize = filesize(upload.loaded);\n var totalSize = filesize(upload.total);\n if (uploadedSize.replace(/^.* /, '') === totalSize.replace(/^.* /, '')) {\n uploadedSize = uploadedSize.replace(/ .*/, '');\n }\n\n // MUST use var name 'count' for pluralization to kick in\n var uploadText = (0, _languageHandler._t)(\"Uploading %(filename)s and %(count)s others\", { filename: upload.fileName, count: uploads.length - 1 });\n\n return React.createElement(\n 'div',\n { className: 'mx_UploadBar' },\n React.createElement(\n 'div',\n { className: 'mx_UploadBar_uploadProgressOuter' },\n React.createElement('div', { className: 'mx_UploadBar_uploadProgressInner', style: innerProgressStyle })\n ),\n React.createElement('img', { className: 'mx_UploadBar_uploadIcon mx_filterFlipColor', src: 'img/fileicon.png', width: '17', height: '22' }),\n React.createElement('img', { className: 'mx_UploadBar_uploadCancel mx_filterFlipColor', src: 'img/cancel.svg', width: '18', height: '18',\n onClick: function onClick() {\n ContentMessages.cancelUpload(upload.promise);\n }\n }),\n React.createElement(\n 'div',\n { className: 'mx_UploadBar_uploadBytes' },\n uploadedSize,\n ' / ',\n totalSize\n ),\n React.createElement(\n 'div',\n { className: 'mx_UploadBar_uploadFilename' },\n uploadText\n )\n );\n }\n});\n//# sourceMappingURL=UploadBar.js.map","'use strict';\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _SettingsStore = require('../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _SessionStore = require('../../stores/SessionStore');\n\nvar _SessionStore2 = _interopRequireDefault(_SessionStore);\n\nvar _Analytics = require('../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _AccessibleButton = require('../views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar languageHandler = _interopRequireWildcard(_languageHandler);\n\nvar _FormattingUtils = require('../../utils/FormattingUtils');\n\nvar FormattingUtils = _interopRequireWildcard(_FormattingUtils);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react'); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2017, 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar ReactDOM = require('react-dom');\n\nvar sdk = require('../../index');\nvar MatrixClientPeg = require(\"../../MatrixClientPeg\");\nvar PlatformPeg = require(\"../../PlatformPeg\");\nvar Modal = require('../../Modal');\nvar dis = require(\"../../dispatcher\");\n\nvar packageJson = require('../../../package.json');\nvar UserSettingsStore = require('../../UserSettingsStore');\nvar CallMediaHandler = require('../../CallMediaHandler');\nvar Email = require('../../email');\nvar AddThreepid = require('../../AddThreepid');\nvar SdkConfig = require('../../SdkConfig');\n\n\n// if this looks like a release, use the 'version' from package.json; else use\n// the git sha. Prepend version with v, to look like riot-web version\nvar REACT_SDK_VERSION = 'dist' in packageJson ? packageJson.version : packageJson.gitHead || '<local>';\n\n// Simple method to help prettify GH Release Tags and Commit Hashes.\nvar semVerRegex = /^v?(\\d+\\.\\d+\\.\\d+(?:-rc.+)?)(?:-(?:\\d+-g)?([0-9a-fA-F]+))?(?:-dirty)?$/i;\nvar gHVersionLabel = function gHVersionLabel(repo) {\n var token = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var match = token.match(semVerRegex);\n var url = void 0;\n if (match && match[1]) {\n // basic semVer string possibly with commit hash\n url = match.length > 1 && match[2] ? 'https://github.com/' + repo + '/commit/' + match[2] : 'https://github.com/' + repo + '/releases/tag/v' + match[1];\n } else {\n url = 'https://github.com/' + repo + '/commit/' + token.split('-')[0];\n }\n return React.createElement(\n 'a',\n { target: '_blank', rel: 'noopener', href: url },\n token\n );\n};\n\n// Enumerate some simple 'flip a bit' UI settings (if any). The strings provided here\n// must be settings defined in SettingsStore.\nvar SIMPLE_SETTINGS = [{ id: \"urlPreviewsEnabled\" }, { id: \"autoplayGifsAndVideos\" }, { id: \"alwaysShowEncryptionIcons\" }, { id: \"showRoomRecoveryReminder\" }, { id: \"hideReadReceipts\" }, { id: \"dontSendTypingNotifications\" }, { id: \"alwaysShowTimestamps\" }, { id: \"showTwelveHourTimestamps\" }, { id: \"hideJoinLeaves\" }, { id: \"hideAvatarChanges\" }, { id: \"hideDisplaynameChanges\" }, { id: \"useCompactLayout\" }, { id: \"hideRedactions\" }, { id: \"enableSyntaxHighlightLanguageDetection\" }, { id: \"MessageComposerInput.autoReplaceEmoji\" }, { id: \"MessageComposerInput.dontSuggestEmoji\" }, { id: \"Pill.shouldHidePillAvatar\" }, { id: \"TextualBody.disableBigEmoji\" }, { id: \"VideoView.flipVideoHorizontally\" }, { id: \"TagPanel.disableTagPanel\" }, { id: \"enableWidgetScreenshots\" }, { id: \"RoomSubList.showEmpty\" }, { id: \"pinMentionedRooms\" }, { id: \"pinUnreadRooms\" }, { id: \"showDeveloperTools\" }, { id: \"promptBeforeInviteUnknownUsers\" }];\n\n// These settings must be defined in SettingsStore\nvar ANALYTICS_SETTINGS = [{\n id: 'analyticsOptIn',\n fn: function fn(checked) {\n checked ? _Analytics2.default.enable() : _Analytics2.default.disable();\n }\n}];\n\n// These settings must be defined in SettingsStore\nvar WEBRTC_SETTINGS = [{\n id: 'webRtcForceTURN',\n fn: function fn(val) {\n MatrixClientPeg.get().setForceTURN(val);\n }\n}];\n\n// These settings must be defined in SettingsStore\nvar CRYPTO_SETTINGS = [{\n id: 'blacklistUnverifiedDevices',\n fn: function fn(checked) {\n MatrixClientPeg.get().setGlobalBlacklistUnverifiedDevices(checked);\n }\n}];\n\n// Enumerate the available themes, with a nice human text label.\n// 'label' is how we describe it in the UI.\n// 'value' is the value for the theme setting\n//\n// XXX: Ideally we would have a theme manifest or something and they'd be nicely\n// packaged up in a single directory, and/or located at the application layer.\n// But for now for expedience we just hardcode them here.\nvar THEMES = [{ label: (0, _languageHandler._td)('Light theme'), value: 'light' }, { label: (0, _languageHandler._td)('Dark theme'), value: 'dark' }, { label: (0, _languageHandler._td)('Status.im theme'), value: 'status' }];\n\nvar IgnoredUser = React.createClass({\n displayName: 'IgnoredUser',\n\n propTypes: {\n userId: _propTypes2.default.string.isRequired,\n onUnignored: _propTypes2.default.func.isRequired\n },\n\n _onUnignoreClick: function _onUnignoreClick() {\n var _this = this;\n\n var ignoredUsers = MatrixClientPeg.get().getIgnoredUsers();\n var index = ignoredUsers.indexOf(this.props.userId);\n if (index !== -1) {\n ignoredUsers.splice(index, 1);\n MatrixClientPeg.get().setIgnoredUsers(ignoredUsers).then(function () {\n return _this.props.onUnignored(_this.props.userId);\n });\n } else this.props.onUnignored(this.props.userId);\n },\n\n render: function render() {\n return React.createElement(\n 'li',\n null,\n React.createElement(\n _AccessibleButton2.default,\n { onClick: this._onUnignoreClick, className: 'mx_textButton' },\n (0, _languageHandler._t)(\"Unignore\")\n ),\n this.props.userId\n );\n }\n});\n\nmodule.exports = React.createClass({\n displayName: 'UserSettings',\n\n propTypes: {\n onClose: _propTypes2.default.func,\n // The brand string given when creating email pushers\n brand: _propTypes2.default.string,\n\n // The base URL to use in the referral link. Defaults to window.location.origin.\n referralBaseUrl: _propTypes2.default.string,\n\n // Team token for the referral link. If falsy, the referral section will\n // not appear\n teamToken: _propTypes2.default.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onClose: function onClose() {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n avatarUrl: null,\n threepids: [],\n phase: \"UserSettings.LOADING\", // LOADING, DISPLAY\n email_add_pending: false,\n vectorVersion: undefined,\n canSelfUpdate: null,\n rejectingInvites: false,\n mediaDevices: null,\n ignoredUsers: [],\n autoLaunchEnabled: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this2 = this;\n\n this._unmounted = false;\n this._addThreepid = null;\n\n if (PlatformPeg.get()) {\n _bluebird2.default.resolve().then(function () {\n return PlatformPeg.get().getAppVersion();\n }).done(function (appVersion) {\n if (_this2._unmounted) return;\n _this2.setState({\n vectorVersion: appVersion\n });\n }, function (e) {\n console.log(\"Failed to fetch app version\", e);\n });\n\n PlatformPeg.get().canSelfUpdate().then(function (canUpdate) {\n if (_this2._unmounted) return;\n _this2.setState({\n canSelfUpdate: canUpdate\n });\n });\n }\n\n this._refreshMediaDevices();\n this._refreshIgnoredUsers();\n\n // Bulk rejecting invites:\n // /sync won't have had time to return when UserSettings re-renders from state changes, so getRooms()\n // will still return rooms with invites. To get around this, add a listener for\n // membership updates and kick the UI.\n MatrixClientPeg.get().on(\"RoomMember.membership\", this._onInviteStateChange);\n\n dis.dispatch({\n action: 'panel_disable',\n sideDisabled: true,\n middleDisabled: true\n });\n this._refreshFromServer();\n\n if (PlatformPeg.get().supportsAutoLaunch()) {\n PlatformPeg.get().getAutoLaunchEnabled().then(function (enabled) {\n _this2.setState({\n autoLaunchEnabled: enabled\n });\n });\n }\n\n this.setState({\n language: languageHandler.getCurrentLanguage()\n });\n\n this._sessionStore = _SessionStore2.default;\n this._sessionStoreToken = this._sessionStore.addListener(this._setStateFromSessionStore);\n this._setStateFromSessionStore();\n },\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = dis.register(this.onAction);\n this._me = MatrixClientPeg.get().credentials.userId;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n dis.dispatch({\n action: 'panel_disable',\n sideDisabled: false,\n middleDisabled: false\n });\n dis.unregister(this.dispatcherRef);\n var cli = MatrixClientPeg.get();\n if (cli) {\n cli.removeListener(\"RoomMember.membership\", this._onInviteStateChange);\n }\n },\n\n // `UserSettings` assumes that the client peg will not be null, so give it some\n // sort of assurance here by only allowing a re-render if the client is truthy.\n //\n // This is required because `UserSettings` maintains its own state and if this state\n // updates (e.g. during _setStateFromSessionStore) after the client peg has been made\n // null (during logout), then it will attempt to re-render and throw errors.\n shouldComponentUpdate: function shouldComponentUpdate() {\n return Boolean(MatrixClientPeg.get());\n },\n\n _setStateFromSessionStore: function _setStateFromSessionStore() {\n this.setState({\n userHasGeneratedPassword: Boolean(this._sessionStore.getCachedPassword())\n });\n },\n\n _refreshMediaDevices: function _refreshMediaDevices(stream) {\n var _this3 = this;\n\n if (stream) {\n // kill stream so that we don't leave it lingering around with webcam enabled etc\n // as here we called gUM to ask user for permission to their device names only\n stream.getTracks().forEach(function (track) {\n return track.stop();\n });\n }\n\n _bluebird2.default.resolve().then(function () {\n return CallMediaHandler.getDevices();\n }).then(function (mediaDevices) {\n // console.log(\"got mediaDevices\", mediaDevices, this._unmounted);\n if (_this3._unmounted) return;\n _this3.setState({\n mediaDevices: mediaDevices,\n activeAudioOutput: _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, 'webrtc_audiooutput'),\n activeAudioInput: _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, 'webrtc_audioinput'),\n activeVideoInput: _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, 'webrtc_videoinput')\n });\n });\n },\n\n _refreshFromServer: function _refreshFromServer() {\n var self = this;\n _bluebird2.default.all([UserSettingsStore.loadProfileInfo(), UserSettingsStore.loadThreePids()]).done(function (resps) {\n self.setState({\n avatarUrl: resps[0].avatar_url,\n threepids: resps[1].threepids,\n phase: \"UserSettings.DISPLAY\"\n });\n }, function (error) {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to load user settings: \" + error);\n Modal.createTrackedDialog('Can\\'t load user settings', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Can't load user settings\"),\n description: error && error.message ? error.message : (0, _languageHandler._t)(\"Server may be unavailable or overloaded\")\n });\n });\n },\n\n _refreshIgnoredUsers: function _refreshIgnoredUsers() {\n var userIdUnignored = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n var users = MatrixClientPeg.get().getIgnoredUsers();\n if (userIdUnignored) {\n var index = users.indexOf(userIdUnignored);\n if (index !== -1) users.splice(index, 1);\n }\n this.setState({\n ignoredUsers: users\n });\n },\n\n onAction: function onAction(payload) {\n if (payload.action === \"notifier_enabled\") {\n this.forceUpdate();\n } else if (payload.action === \"ignore_state_changed\") {\n this._refreshIgnoredUsers();\n }\n },\n\n onAvatarPickerClick: function onAvatarPickerClick(ev) {\n if (this.refs.file_label) {\n this.refs.file_label.click();\n }\n },\n\n onAvatarSelected: function onAvatarSelected(ev) {\n var self = this;\n var changeAvatar = this.refs.changeAvatar;\n if (!changeAvatar) {\n console.error(\"No ChangeAvatar found to upload image to!\");\n return;\n }\n changeAvatar.onFileSelected(ev).done(function () {\n // dunno if the avatar changed, re-check it.\n self._refreshFromServer();\n }, function (err) {\n // const errMsg = (typeof err === \"string\") ? err : (err.error || \"\");\n console.error(\"Failed to set avatar: \" + err);\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Failed to set avatar', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to set avatar.\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n },\n\n onAvatarRemoveClick: function onAvatarRemoveClick() {\n MatrixClientPeg.get().setAvatarUrl(null);\n this.setState({ avatarUrl: null }); // the avatar update will complete async for us\n },\n\n onLogoutClicked: function onLogoutClicked(ev) {\n var _this4 = this;\n\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n Modal.createTrackedDialog('Logout E2E Export', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Sign out\"),\n description: React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"For security, logging out will delete any end-to-end \" + \"encryption keys from this browser. If you want to be able \" + \"to decrypt your conversation history from future Riot sessions, \" + \"please export your room keys for safe-keeping.\")\n ),\n button: (0, _languageHandler._t)(\"Sign out\"),\n extraButtons: [React.createElement(\n 'button',\n { key: 'export', className: 'mx_Dialog_primary',\n onClick: this._onExportE2eKeysClicked },\n (0, _languageHandler._t)(\"Export E2E room keys\")\n )],\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n dis.dispatch({ action: 'logout' });\n if (_this4.props.onFinished) {\n _this4.props.onFinished();\n }\n }\n }\n });\n },\n\n onPasswordChangeError: function onPasswordChangeError(err) {\n var errMsg = err.error || \"\";\n if (err.httpStatus === 403) {\n errMsg = (0, _languageHandler._t)(\"Failed to change password. Is your password correct?\");\n } else if (err.httpStatus) {\n errMsg += ' (HTTP status ' + err.httpStatus + ')';\n }\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to change password: \" + errMsg);\n Modal.createTrackedDialog('Failed to change password', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: errMsg\n });\n },\n\n onPasswordChanged: function onPasswordChanged() {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Password changed', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Success\"),\n description: (0, _languageHandler._t)(\"Your password was successfully changed. You will not receive \" + \"push notifications on other devices until you log back in to them\") + \".\"\n });\n },\n\n _onAddEmailEditFinished: function _onAddEmailEditFinished(value, shouldSubmit) {\n if (!shouldSubmit) return;\n this._addEmail();\n },\n\n _addEmail: function _addEmail() {\n var _this5 = this;\n\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n\n var emailAddress = this.refs.add_email_input.value;\n if (!Email.looksValid(emailAddress)) {\n Modal.createTrackedDialog('Invalid email address', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Invalid Email Address\"),\n description: (0, _languageHandler._t)(\"This doesn't appear to be a valid email address\")\n });\n return;\n }\n this._addThreepid = new AddThreepid();\n // we always bind emails when registering, so let's do the\n // same here.\n this._addThreepid.addEmailAddress(emailAddress, true).done(function () {\n Modal.createTrackedDialog('Verification Pending', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Verification Pending\"),\n description: (0, _languageHandler._t)(\"Please check your email and click on the link it contains. Once this \" + \"is done, click continue.\"),\n button: (0, _languageHandler._t)('Continue'),\n onFinished: _this5.onEmailDialogFinished\n });\n }, function (err) {\n _this5.setState({ email_add_pending: false });\n console.error(\"Unable to add email address \" + emailAddress + \" \" + err);\n Modal.createTrackedDialog('Unable to add email address', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Unable to add email address\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n ReactDOM.findDOMNode(this.refs.add_email_input).blur();\n this.setState({ email_add_pending: true });\n },\n\n onRemoveThreepidClicked: function onRemoveThreepidClicked(threepid) {\n var _this6 = this;\n\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n Modal.createTrackedDialog('Remove 3pid', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Remove Contact Information?\"),\n description: (0, _languageHandler._t)(\"Remove %(threePid)s?\", { threePid: threepid.address }),\n button: (0, _languageHandler._t)('Remove'),\n onFinished: function onFinished(submit) {\n if (submit) {\n _this6.setState({\n phase: \"UserSettings.LOADING\"\n });\n MatrixClientPeg.get().deleteThreePid(threepid.medium, threepid.address).then(function () {\n return _this6._refreshFromServer();\n }).catch(function (err) {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Unable to remove contact information: \" + err);\n Modal.createTrackedDialog('Remove 3pid failed', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Unable to remove contact information\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n }).done();\n }\n }\n });\n },\n\n onEmailDialogFinished: function onEmailDialogFinished(ok) {\n if (ok) {\n this.verifyEmailAddress();\n } else {\n this.setState({ email_add_pending: false });\n }\n },\n\n verifyEmailAddress: function verifyEmailAddress() {\n var _this7 = this;\n\n this._addThreepid.checkEmailLinkClicked().done(function () {\n _this7._addThreepid = null;\n _this7.setState({\n phase: \"UserSettings.LOADING\"\n });\n _this7._refreshFromServer();\n _this7.setState({ email_add_pending: false });\n }, function (err) {\n _this7.setState({ email_add_pending: false });\n if (err.errcode == 'M_THREEPID_AUTH_FAILED') {\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n var message = (0, _languageHandler._t)(\"Unable to verify email address.\") + \" \" + (0, _languageHandler._t)(\"Please check your email and click on the link it contains. Once this is done, click continue.\");\n Modal.createTrackedDialog('Verification Pending', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Verification Pending\"),\n description: message,\n button: (0, _languageHandler._t)('Continue'),\n onFinished: _this7.onEmailDialogFinished\n });\n } else {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Unable to verify email address: \" + err);\n Modal.createTrackedDialog('Unable to verify email address', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Unable to verify email address.\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n }\n });\n },\n\n _onDeactivateAccountClicked: function _onDeactivateAccountClicked() {\n var DeactivateAccountDialog = sdk.getComponent(\"dialogs.DeactivateAccountDialog\");\n Modal.createTrackedDialog('Deactivate Account', '', DeactivateAccountDialog, {});\n },\n\n _onBugReportClicked: function _onBugReportClicked() {\n var BugReportDialog = sdk.getComponent(\"dialogs.BugReportDialog\");\n if (!BugReportDialog) {\n return;\n }\n Modal.createTrackedDialog('Bug Report Dialog', '', BugReportDialog, {});\n },\n\n _onClearCacheClicked: function _onClearCacheClicked() {\n if (!PlatformPeg.get()) return;\n\n MatrixClientPeg.get().stopClient();\n MatrixClientPeg.get().store.deleteAllData().done(function () {\n PlatformPeg.get().reload();\n });\n },\n\n _onInviteStateChange: function _onInviteStateChange(event, member, oldMembership) {\n if (member.userId === this._me && oldMembership === \"invite\") {\n this.forceUpdate();\n }\n },\n\n _onRejectAllInvitesClicked: function _onRejectAllInvitesClicked(rooms, ev) {\n var _this8 = this;\n\n this.setState({\n rejectingInvites: true\n });\n // reject the invites\n var promises = rooms.map(function (room) {\n return MatrixClientPeg.get().leave(room.roomId).catch(function (e) {\n // purposefully drop errors to the floor: we'll just have a non-zero number on the UI\n // after trying to reject all the invites.\n });\n });\n _bluebird2.default.all(promises).then(function () {\n _this8.setState({\n rejectingInvites: false\n });\n });\n },\n\n _onExportE2eKeysClicked: function _onExportE2eKeysClicked() {\n Modal.createTrackedDialogAsync('Export E2E Keys', '', import('../../async-components/views/dialogs/ExportE2eKeysDialog'), {\n matrixClient: MatrixClientPeg.get()\n });\n },\n\n _onImportE2eKeysClicked: function _onImportE2eKeysClicked() {\n Modal.createTrackedDialogAsync('Import E2E Keys', '', import('../../async-components/views/dialogs/ImportE2eKeysDialog'), {\n matrixClient: MatrixClientPeg.get()\n });\n },\n\n _renderGroupSettings: function _renderGroupSettings() {\n var GroupUserSettings = sdk.getComponent('groups.GroupUserSettings');\n return React.createElement(GroupUserSettings, null);\n },\n\n _renderReferral: function _renderReferral() {\n var teamToken = this.props.teamToken;\n if (!teamToken) {\n return null;\n }\n if (typeof teamToken !== 'string') {\n console.warn('Team token not a string');\n return null;\n }\n var href = (this.props.referralBaseUrl || window.location.origin) + ('/#/register?referrer=' + this._me + '&team_token=' + teamToken);\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n 'Referral'\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n (0, _languageHandler._t)(\"Refer a friend to Riot:\"),\n ' ',\n React.createElement(\n 'a',\n { href: href },\n href\n )\n )\n );\n },\n\n onLanguageChange: function onLanguageChange(newLang) {\n if (this.state.language !== newLang) {\n _SettingsStore2.default.setValue(\"language\", null, _SettingsStore.SettingLevel.DEVICE, newLang);\n this.setState({\n language: newLang\n });\n PlatformPeg.get().reload();\n }\n },\n\n _renderLanguageSetting: function _renderLanguageSetting() {\n var LanguageDropdown = sdk.getComponent('views.elements.LanguageDropdown');\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'label',\n { htmlFor: 'languageSelector' },\n (0, _languageHandler._t)('Interface Language')\n ),\n React.createElement(LanguageDropdown, { ref: 'language', onOptionChange: this.onLanguageChange,\n className: 'mx_UserSettings_language',\n value: this.state.language\n })\n );\n },\n\n _renderUserInterfaceSettings: function _renderUserInterfaceSettings() {\n // TODO: this ought to be a separate component so that we don't need\n // to rebind the onChange each time we render\n var onChange = function onChange(e) {\n return _SettingsStore2.default.setValue(\"autocompleteDelay\", null, _SettingsStore.SettingLevel.DEVICE, e.target.value);\n };\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"User Interface\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n SIMPLE_SETTINGS.map(this._renderAccountSetting),\n THEMES.map(this._renderThemeOption),\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'strong',\n null,\n (0, _languageHandler._t)('Autocomplete Delay (ms):')\n )\n ),\n React.createElement(\n 'td',\n null,\n React.createElement('input', {\n type: 'number',\n defaultValue: _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, \"autocompleteDelay\"),\n onChange: onChange\n })\n )\n )\n )\n ),\n this._renderLanguageSetting()\n )\n );\n },\n\n _renderAccountSetting: function _renderAccountSetting(setting) {\n var SettingsFlag = sdk.getComponent(\"elements.SettingsFlag\");\n return React.createElement(\n 'div',\n { className: 'mx_UserSettings_toggle', key: setting.id },\n React.createElement(SettingsFlag, { name: setting.id,\n label: setting.label,\n level: _SettingsStore.SettingLevel.ACCOUNT,\n onChange: setting.fn })\n );\n },\n\n _renderThemeOption: function _renderThemeOption(setting) {\n var SettingsFlag = sdk.getComponent(\"elements.SettingsFlag\");\n var onChange = function onChange(v) {\n return dis.dispatch({ action: 'set_theme', value: setting.value });\n };\n return React.createElement(\n 'div',\n { className: 'mx_UserSettings_toggle', key: setting.id + '_' + setting.value },\n React.createElement(SettingsFlag, { name: 'theme',\n label: setting.label,\n level: _SettingsStore.SettingLevel.ACCOUNT,\n onChange: onChange,\n group: 'theme',\n value: setting.value })\n );\n },\n\n _renderCryptoInfo: function _renderCryptoInfo() {\n var client = MatrixClientPeg.get();\n var deviceId = client.deviceId;\n var identityKey = client.getDeviceEd25519Key();\n if (!identityKey) {\n identityKey = (0, _languageHandler._t)(\"<not supported>\");\n } else {\n identityKey = FormattingUtils.formatCryptoKey(identityKey);\n }\n\n var importExportButtons = null;\n\n if (client.isCryptoEnabled) {\n importExportButtons = React.createElement(\n 'div',\n { className: 'mx_UserSettings_importExportButtons' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_button',\n onClick: this._onExportE2eKeysClicked },\n (0, _languageHandler._t)(\"Export E2E room keys\")\n ),\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_button',\n onClick: this._onImportE2eKeysClicked },\n (0, _languageHandler._t)(\"Import E2E room keys\")\n )\n );\n }\n\n var keyBackupSection = void 0;\n if (_SettingsStore2.default.isFeatureEnabled(\"feature_keybackup\")) {\n var KeyBackupPanel = sdk.getComponent('views.settings.KeyBackupPanel');\n keyBackupSection = React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Key Backup\")\n ),\n React.createElement(KeyBackupPanel, null)\n );\n }\n\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Cryptography\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section mx_UserSettings_cryptoSection' },\n React.createElement(\n 'ul',\n null,\n React.createElement(\n 'li',\n null,\n React.createElement(\n 'label',\n null,\n (0, _languageHandler._t)(\"Device ID:\")\n ),\n React.createElement(\n 'span',\n null,\n React.createElement(\n 'code',\n null,\n deviceId\n )\n )\n ),\n React.createElement(\n 'li',\n null,\n React.createElement(\n 'label',\n null,\n (0, _languageHandler._t)(\"Device key:\")\n ),\n React.createElement(\n 'span',\n null,\n React.createElement(\n 'code',\n null,\n React.createElement(\n 'b',\n null,\n identityKey\n )\n )\n )\n )\n ),\n importExportButtons\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n CRYPTO_SETTINGS.map(this._renderDeviceSetting)\n ),\n keyBackupSection\n );\n },\n\n _renderIgnoredUsers: function _renderIgnoredUsers() {\n if (this.state.ignoredUsers.length > 0) {\n var updateHandler = this._refreshIgnoredUsers;\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Ignored Users\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section mx_UserSettings_ignoredUsersSection' },\n React.createElement(\n 'ul',\n null,\n this.state.ignoredUsers.map(function (userId) {\n return React.createElement(IgnoredUser, { key: userId,\n userId: userId,\n onUnignored: updateHandler });\n })\n )\n )\n );\n } else return React.createElement('div', null);\n },\n\n _renderDeviceSetting: function _renderDeviceSetting(setting) {\n var SettingsFlag = sdk.getComponent(\"elements.SettingsFlag\");\n return React.createElement(\n 'div',\n { className: 'mx_UserSettings_toggle', key: setting.id },\n React.createElement(SettingsFlag, { name: setting.id,\n label: setting.label,\n level: _SettingsStore.SettingLevel.DEVICE,\n onChange: setting.fn })\n );\n },\n\n _renderDevicesPanel: function _renderDevicesPanel() {\n var DevicesPanel = sdk.getComponent('settings.DevicesPanel');\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Devices\")\n ),\n React.createElement(DevicesPanel, { className: 'mx_UserSettings_section' })\n );\n },\n\n _renderBugReport: function _renderBugReport() {\n if (!SdkConfig.get().bug_report_endpoint_url) {\n return React.createElement('div', null);\n }\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Submit Debug Logs\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"If you've submitted a bug via GitHub, debug logs can help \" + \"us track down the problem. Debug logs contain application \" + \"usage data including your username, the IDs or aliases of \" + \"the rooms or groups you have visited and the usernames of \" + \"other users. They do not contain messages.\")\n ),\n React.createElement(\n 'button',\n { className: 'mx_UserSettings_button',\n onClick: this._onBugReportClicked },\n (0, _languageHandler._t)('Submit debug logs')\n )\n )\n );\n },\n\n _renderAnalyticsControl: function _renderAnalyticsControl() {\n if (!SdkConfig.get().piwik) return React.createElement('div', null);\n\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Analytics')\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n (0, _languageHandler._t)('Riot collects anonymous analytics to allow us to improve the application.'),\n React.createElement('br', null),\n (0, _languageHandler._t)('Privacy is important to us, so we don\\'t collect any personal' + ' or identifiable data for our analytics.'),\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_advanced_spoiler', onClick: _Analytics2.default.showDetailsModal },\n (0, _languageHandler._t)('Learn more about how we use analytics.')\n ),\n ANALYTICS_SETTINGS.map(this._renderDeviceSetting)\n )\n );\n },\n\n _renderLabs: function _renderLabs() {\n var _this9 = this;\n\n var features = [];\n _SettingsStore2.default.getLabsFeatures().forEach(function (featureId) {\n // TODO: this ought to be a separate component so that we don't need\n // to rebind the onChange each time we render\n var onChange = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(e) {\n var checked, confirmed;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n checked = e.target.checked;\n\n if (!(featureId === \"feature_lazyloading\")) {\n _context.next = 8;\n break;\n }\n\n _context.next = 4;\n return (0, _bluebird.resolve)(_this9._onLazyLoadChanging(checked));\n\n case 4:\n confirmed = _context.sent;\n\n if (confirmed) {\n _context.next = 8;\n break;\n }\n\n e.preventDefault();\n return _context.abrupt('return');\n\n case 8:\n _context.next = 10;\n return (0, _bluebird.resolve)(_SettingsStore2.default.setFeatureEnabled(featureId, checked));\n\n case 10:\n _this9.forceUpdate();\n\n case 11:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this9);\n }));\n\n return function onChange(_x3) {\n return _ref.apply(this, arguments);\n };\n }();\n\n features.push(React.createElement(\n 'div',\n { key: featureId, className: 'mx_UserSettings_toggle' },\n React.createElement('input', {\n type: 'checkbox',\n id: featureId,\n name: featureId,\n checked: _SettingsStore2.default.isFeatureEnabled(featureId),\n onChange: onChange\n }),\n React.createElement(\n 'label',\n { htmlFor: featureId },\n _SettingsStore2.default.getDisplayName(featureId)\n )\n ));\n });\n\n // No labs section when there are no features in labs\n if (features.length === 0) {\n return null;\n }\n\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Labs\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"These are experimental features that may break in unexpected ways\"),\n '. ',\n (0, _languageHandler._t)(\"Use with caution\"),\n '.'\n ),\n features\n )\n );\n },\n\n _onLazyLoadChanging: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(enabling) {\n var supported;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!enabling) {\n _context2.next = 8;\n break;\n }\n\n _context2.next = 3;\n return (0, _bluebird.resolve)(MatrixClientPeg.get().doesServerSupportLazyLoading());\n\n case 3:\n supported = _context2.sent;\n\n if (supported) {\n _context2.next = 8;\n break;\n }\n\n _context2.next = 7;\n return (0, _bluebird.resolve)(new _bluebird2.default(function (resolve) {\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n Modal.createDialog(QuestionDialog, {\n title: (0, _languageHandler._t)(\"Lazy loading members not supported\"),\n description: React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Lazy loading is not supported by your \" + \"current homeserver.\")\n ),\n button: (0, _languageHandler._t)(\"OK\"),\n onFinished: resolve\n });\n }));\n\n case 7:\n return _context2.abrupt('return', false);\n\n case 8:\n return _context2.abrupt('return', true);\n\n case 9:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function _onLazyLoadChanging(_x4) {\n return _ref2.apply(this, arguments);\n }\n\n return _onLazyLoadChanging;\n }(),\n\n _renderDeactivateAccount: function _renderDeactivateAccount() {\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Deactivate Account\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_button danger',\n onClick: this._onDeactivateAccountClicked },\n ' ',\n (0, _languageHandler._t)(\"Deactivate my account\")\n )\n )\n );\n },\n\n _renderTermsAndConditionsLinks: function _renderTermsAndConditionsLinks() {\n if (SdkConfig.get().terms_and_conditions_links) {\n var tncLinks = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(SdkConfig.get().terms_and_conditions_links), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var tncEntry = _step.value;\n\n tncLinks.push(React.createElement(\n 'div',\n { key: tncEntry.url },\n React.createElement(\n 'a',\n { href: tncEntry.url, rel: 'noopener', target: '_blank' },\n tncEntry.text\n )\n ));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Legal\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n tncLinks\n )\n );\n } else {\n return null;\n }\n },\n\n _renderClearCache: function _renderClearCache() {\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Clear Cache\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_button danger',\n onClick: this._onClearCacheClicked },\n (0, _languageHandler._t)(\"Clear Cache and Reload\")\n )\n )\n );\n },\n\n _renderCheckUpdate: function _renderCheckUpdate() {\n var platform = PlatformPeg.get();\n if (this.state.canSelfUpdate) {\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Updates')\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_button', onClick: platform.startUpdateCheck },\n (0, _languageHandler._t)('Check for update')\n )\n )\n );\n }\n return React.createElement('div', null);\n },\n\n _renderBulkOptions: function _renderBulkOptions() {\n var _this10 = this;\n\n var invitedRooms = MatrixClientPeg.get().getRooms().filter(function (r) {\n return r.hasMembershipState(_this10._me, \"invite\");\n });\n if (invitedRooms.length === 0) {\n return null;\n }\n\n var Spinner = sdk.getComponent(\"elements.Spinner\");\n\n var reject = React.createElement(Spinner, null);\n if (!this.state.rejectingInvites) {\n // bind() the invited rooms so any new invites that may come in as this button is clicked\n // don't inadvertently get rejected as well.\n var onClick = this._onRejectAllInvitesClicked.bind(this, invitedRooms);\n reject = React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_button danger',\n onClick: onClick },\n (0, _languageHandler._t)(\"Reject all %(invitedRooms)s invites\", { invitedRooms: invitedRooms.length })\n );\n }\n\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Bulk Options\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n reject\n )\n );\n },\n\n _renderElectronSettings: function _renderElectronSettings() {\n if (!PlatformPeg.get().supportsAutoLaunch()) return;\n\n // TODO: This should probably be a granular setting, but it only applies to electron\n // and ends up being get/set outside of matrix anyways (local system setting).\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Desktop specific')\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_toggle' },\n React.createElement('input', { type: 'checkbox',\n name: 'auto-launch',\n defaultChecked: this.state.autoLaunchEnabled,\n onChange: this._onAutoLaunchChanged\n }),\n React.createElement(\n 'label',\n { htmlFor: 'auto-launch' },\n (0, _languageHandler._t)('Start automatically after system login')\n )\n )\n )\n );\n },\n\n _onAutoLaunchChanged: function _onAutoLaunchChanged(e) {\n var _this11 = this;\n\n PlatformPeg.get().setAutoLaunchEnabled(e.target.checked).then(function () {\n _this11.setState({\n autoLaunchEnabled: e.target.checked\n });\n });\n },\n\n _mapWebRtcDevicesToSpans: function _mapWebRtcDevicesToSpans(devices) {\n return devices.map(function (device) {\n return React.createElement(\n 'span',\n { key: device.deviceId },\n device.label\n );\n });\n },\n\n _setAudioOutput: function _setAudioOutput(deviceId) {\n this.setState({ activeAudioOutput: deviceId });\n CallMediaHandler.setAudioOutput(deviceId);\n },\n\n _setAudioInput: function _setAudioInput(deviceId) {\n this.setState({ activeAudioInput: deviceId });\n CallMediaHandler.setAudioInput(deviceId);\n },\n\n _setVideoInput: function _setVideoInput(deviceId) {\n this.setState({ activeVideoInput: deviceId });\n CallMediaHandler.setVideoInput(deviceId);\n },\n\n _requestMediaPermissions: function _requestMediaPermissions(event) {\n var getUserMedia = window.navigator.getUserMedia || window.navigator.webkitGetUserMedia || window.navigator.mozGetUserMedia;\n if (getUserMedia) {\n return getUserMedia.apply(window.navigator, [{ video: true, audio: true }, this._refreshMediaDevices, function () {\n var ErrorDialog = sdk.getComponent('dialogs.ErrorDialog');\n Modal.createTrackedDialog('No media permissions', '', ErrorDialog, {\n title: (0, _languageHandler._t)('No media permissions'),\n description: (0, _languageHandler._t)('You may need to manually permit Riot to access your microphone/webcam')\n });\n }]);\n }\n },\n\n _renderWebRtcDeviceSettings: function _renderWebRtcDeviceSettings() {\n if (this.state.mediaDevices === false) {\n return React.createElement(\n _AccessibleButton2.default,\n { element: 'p', className: 'mx_UserSettings_link', onClick: this._requestMediaPermissions },\n (0, _languageHandler._t)('Missing Media Permissions, click here to request.')\n );\n } else if (!this.state.mediaDevices) return;\n\n var Dropdown = sdk.getComponent('elements.Dropdown');\n\n var speakerDropdown = React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('No Audio Outputs detected')\n );\n var microphoneDropdown = React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('No Microphones detected')\n );\n var webcamDropdown = React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('No Webcams detected')\n );\n\n var defaultOption = {\n deviceId: '',\n label: (0, _languageHandler._t)('Default Device')\n };\n\n var audioOutputs = this.state.mediaDevices.audiooutput.slice(0);\n if (audioOutputs.length > 0) {\n var defaultOutput = '';\n if (!audioOutputs.some(function (input) {\n return input.deviceId === 'default';\n })) {\n audioOutputs.unshift(defaultOption);\n } else {\n defaultOutput = 'default';\n }\n\n speakerDropdown = React.createElement(\n 'div',\n null,\n React.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)('Audio Output')\n ),\n React.createElement(\n Dropdown,\n {\n className: 'mx_UserSettings_webRtcDevices_dropdown',\n value: this.state.activeAudioOutput || defaultOutput,\n onOptionChange: this._setAudioOutput },\n this._mapWebRtcDevicesToSpans(audioOutputs)\n )\n );\n }\n\n var audioInputs = this.state.mediaDevices.audioinput.slice(0);\n if (audioInputs.length > 0) {\n var defaultInput = '';\n if (!audioInputs.some(function (input) {\n return input.deviceId === 'default';\n })) {\n audioInputs.unshift(defaultOption);\n } else {\n defaultInput = 'default';\n }\n\n microphoneDropdown = React.createElement(\n 'div',\n null,\n React.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)('Microphone')\n ),\n React.createElement(\n Dropdown,\n {\n className: 'mx_UserSettings_webRtcDevices_dropdown',\n value: this.state.activeAudioInput || defaultInput,\n onOptionChange: this._setAudioInput },\n this._mapWebRtcDevicesToSpans(audioInputs)\n )\n );\n }\n\n var videoInputs = this.state.mediaDevices.videoinput.slice(0);\n if (videoInputs.length > 0) {\n var _defaultInput = '';\n if (!videoInputs.some(function (input) {\n return input.deviceId === 'default';\n })) {\n videoInputs.unshift(defaultOption);\n } else {\n _defaultInput = 'default';\n }\n\n webcamDropdown = React.createElement(\n 'div',\n null,\n React.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)('Camera')\n ),\n React.createElement(\n Dropdown,\n {\n className: 'mx_UserSettings_webRtcDevices_dropdown',\n value: this.state.activeVideoInput || _defaultInput,\n onOptionChange: this._setVideoInput },\n this._mapWebRtcDevicesToSpans(videoInputs)\n )\n );\n }\n\n return React.createElement(\n 'div',\n null,\n speakerDropdown,\n microphoneDropdown,\n webcamDropdown\n );\n },\n\n _renderWebRtcSettings: function _renderWebRtcSettings() {\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('VoIP')\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n WEBRTC_SETTINGS.map(this._renderDeviceSetting),\n this._renderWebRtcDeviceSettings()\n )\n );\n },\n\n onSelfShareClick: function onSelfShareClick() {\n var cli = MatrixClientPeg.get();\n var ShareDialog = sdk.getComponent(\"dialogs.ShareDialog\");\n Modal.createTrackedDialog('share self dialog', '', ShareDialog, {\n target: cli.getUser(this._me)\n });\n },\n\n _showSpoiler: function _showSpoiler(event) {\n var target = event.target;\n target.innerHTML = target.getAttribute('data-spoiler');\n\n var range = document.createRange();\n range.selectNodeContents(target);\n\n var selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n\n nameForMedium: function nameForMedium(medium) {\n if (medium === 'msisdn') return (0, _languageHandler._t)('Phone');\n if (medium === 'email') return (0, _languageHandler._t)('Email');\n return medium[0].toUpperCase() + medium.slice(1);\n },\n\n presentableTextForThreepid: function presentableTextForThreepid(threepid) {\n if (threepid.medium === 'msisdn') {\n return '+' + threepid.address;\n } else {\n return threepid.address;\n }\n },\n\n render: function render() {\n var _this12 = this;\n\n var Loader = sdk.getComponent(\"elements.Spinner\");\n switch (this.state.phase) {\n case \"UserSettings.LOADING\":\n return React.createElement(Loader, null);\n case \"UserSettings.DISPLAY\":\n break; // quit the switch to return the common state\n default:\n throw new Error(\"Unknown state.phase => \" + this.state.phase);\n }\n // can only get here if phase is UserSettings.DISPLAY\n var SimpleRoomHeader = sdk.getComponent('rooms.SimpleRoomHeader');\n var ChangeDisplayName = sdk.getComponent(\"views.settings.ChangeDisplayName\");\n var ChangePassword = sdk.getComponent(\"views.settings.ChangePassword\");\n var ChangeAvatar = sdk.getComponent('settings.ChangeAvatar');\n var Notifications = sdk.getComponent(\"settings.Notifications\");\n var EditableText = sdk.getComponent('elements.EditableText');\n var GeminiScrollbarWrapper = sdk.getComponent(\"elements.GeminiScrollbarWrapper\");\n\n var avatarUrl = this.state.avatarUrl ? MatrixClientPeg.get().mxcUrlToHttp(this.state.avatarUrl) : null;\n\n var threepidsSection = this.state.threepids.map(function (val, pidIndex) {\n var id = \"3pid-\" + val.address;\n // TODO: make a separate component to avoid having to rebind onClick\n // each time we render\n var onRemoveClick = function onRemoveClick(e) {\n return _this12.onRemoveThreepidClicked(val);\n };\n return React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileTableRow', key: pidIndex },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileLabelCell' },\n React.createElement(\n 'label',\n { htmlFor: id },\n _this12.nameForMedium(val.medium)\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileInputCell' },\n React.createElement('input', { type: 'text', key: val.address, id: id,\n value: _this12.presentableTextForThreepid(val), disabled: true\n })\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_threepidButton mx_filterFlipColor' },\n React.createElement(_AccessibleButton2.default, { element: 'img', src: 'img/cancel-small.svg', width: '14', height: '14', alt: (0, _languageHandler._t)(\"Remove\"),\n onClick: onRemoveClick })\n )\n );\n });\n var addEmailSection = void 0;\n if (this.state.email_add_pending) {\n addEmailSection = React.createElement(Loader, { key: '_email_add_spinner' });\n } else {\n addEmailSection = React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileTableRow', key: '_newEmail' },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileLabelCell' },\n React.createElement(\n 'label',\n null,\n (0, _languageHandler._t)('Email')\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileInputCell' },\n React.createElement(EditableText, {\n ref: 'add_email_input',\n className: 'mx_UserSettings_editable',\n placeholderClassName: 'mx_UserSettings_threepidPlaceholder',\n placeholder: (0, _languageHandler._t)(\"Add email address\"),\n blurToCancel: false,\n onValueChanged: this._onAddEmailEditFinished })\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_threepidButton mx_filterFlipColor' },\n React.createElement(_AccessibleButton2.default, { element: 'img', src: 'img/plus.svg', width: '14', height: '14', alt: (0, _languageHandler._t)(\"Add\"), onClick: this._addEmail })\n )\n );\n }\n var AddPhoneNumber = sdk.getComponent('views.settings.AddPhoneNumber');\n var addMsisdnSection = React.createElement(AddPhoneNumber, { key: '_addMsisdn', onThreepidAdded: this._refreshFromServer });\n threepidsSection.push(addEmailSection);\n threepidsSection.push(addMsisdnSection);\n\n var accountJsx = React.createElement(ChangePassword, {\n className: 'mx_UserSettings_accountTable',\n rowClassName: 'mx_UserSettings_profileTableRow',\n rowLabelClassName: 'mx_UserSettings_profileLabelCell',\n rowInputClassName: 'mx_UserSettings_profileInputCell',\n buttonClassName: 'mx_UserSettings_button mx_UserSettings_changePasswordButton',\n onError: this.onPasswordChangeError,\n onFinished: this.onPasswordChanged });\n\n var notificationArea = void 0;\n if (this.state.threepids !== undefined) {\n notificationArea = React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Notifications\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(Notifications, { threepids: this.state.threepids, brand: this.props.brand })\n )\n );\n }\n\n var olmVersion = MatrixClientPeg.get().olmVersion;\n // If the olmVersion is not defined then either crypto is disabled, or\n // we are using a version old version of olm. We assume the former.\n var olmVersionString = \"<not-enabled>\";\n if (olmVersion) {\n olmVersionString = olmVersion[0] + '.' + olmVersion[1] + '.' + olmVersion[2];\n }\n\n return React.createElement(\n 'div',\n { className: 'mx_UserSettings' },\n React.createElement(SimpleRoomHeader, {\n title: (0, _languageHandler._t)(\"Settings\"),\n onCancelClick: this.props.onClose\n }),\n React.createElement(\n GeminiScrollbarWrapper,\n {\n className: 'mx_UserSettings_body',\n autoshow: true },\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Profile\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileTable' },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileTableRow' },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileLabelCell' },\n React.createElement(\n 'label',\n { htmlFor: 'displayName' },\n (0, _languageHandler._t)('Display name')\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileInputCell' },\n React.createElement(ChangeDisplayName, null)\n )\n ),\n threepidsSection\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_avatarPicker' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_avatarPicker_remove', onClick: this.onAvatarRemoveClick },\n React.createElement('img', { src: 'img/cancel.svg',\n width: '15', height: '15',\n className: 'mx_filterFlipColor',\n alt: (0, _languageHandler._t)(\"Remove avatar\"),\n title: (0, _languageHandler._t)(\"Remove avatar\") })\n ),\n React.createElement(\n 'div',\n { onClick: this.onAvatarPickerClick, className: 'mx_UserSettings_avatarPicker_imgContainer' },\n React.createElement(ChangeAvatar, { ref: 'changeAvatar', initialAvatarUrl: avatarUrl,\n showUploadSection: false, className: 'mx_UserSettings_avatarPicker_img' })\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_avatarPicker_edit' },\n React.createElement(\n 'label',\n { htmlFor: 'avatarInput', ref: 'file_label' },\n React.createElement('img', { src: 'img/camera.svg', className: 'mx_filterFlipColor',\n alt: (0, _languageHandler._t)(\"Upload avatar\"), title: (0, _languageHandler._t)(\"Upload avatar\"),\n width: '17', height: '15' })\n ),\n React.createElement('input', { id: 'avatarInput', type: 'file', onChange: this.onAvatarSelected })\n )\n )\n ),\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Account\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section cadcampoHide' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_logout mx_UserSettings_button', onClick: this.onLogoutClicked },\n (0, _languageHandler._t)(\"Sign out\")\n ),\n this.state.userHasGeneratedPassword ? React.createElement(\n 'div',\n { className: 'mx_UserSettings_passwordWarning' },\n (0, _languageHandler._t)(\"To return to your account in future you need to set a password\")\n ) : null,\n accountJsx\n ),\n this._renderGroupSettings(),\n this._renderReferral(),\n notificationArea,\n this._renderUserInterfaceSettings(),\n this._renderLabs(),\n this._renderWebRtcSettings(),\n this._renderDevicesPanel(),\n this._renderCryptoInfo(),\n this._renderIgnoredUsers(),\n this._renderBulkOptions(),\n this._renderBugReport(),\n this._renderElectronSettings(),\n this._renderAnalyticsControl(),\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Advanced\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_advanced' },\n (0, _languageHandler._t)(\"Logged in as:\") + ' ',\n React.createElement(\n 'a',\n { onClick: this.onSelfShareClick, className: 'mx_UserSettings_link' },\n this._me\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_advanced' },\n (0, _languageHandler._t)('Access Token:') + ' ',\n React.createElement(\n _AccessibleButton2.default,\n { element: 'span', className: 'mx_UserSettings_advanced_spoiler',\n onClick: this._showSpoiler,\n 'data-spoiler': MatrixClientPeg.get().getAccessToken() },\n '<',\n (0, _languageHandler._t)(\"click to reveal\"),\n '>'\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_advanced' },\n (0, _languageHandler._t)(\"Homeserver is\"),\n ' ',\n MatrixClientPeg.get().getHomeserverUrl()\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_advanced' },\n (0, _languageHandler._t)(\"Identity Server is\"),\n ' ',\n MatrixClientPeg.get().getIdentityServerUrl()\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_advanced' },\n (0, _languageHandler._t)('matrix-react-sdk version:'),\n ' ',\n REACT_SDK_VERSION !== '<local>' ? gHVersionLabel('matrix-org/matrix-react-sdk', REACT_SDK_VERSION) : REACT_SDK_VERSION,\n React.createElement('br', null),\n (0, _languageHandler._t)('riot-web version:'),\n ' ',\n this.state.vectorVersion !== undefined ? gHVersionLabel('vector-im/riot-web', this.state.vectorVersion) : 'unknown',\n React.createElement('br', null),\n (0, _languageHandler._t)(\"olm version:\"),\n ' ',\n olmVersionString,\n React.createElement('br', null)\n )\n ),\n this._renderCheckUpdate(),\n this._renderClearCache(),\n this._renderDeactivateAccount(),\n this._renderTermsAndConditionsLinks()\n )\n );\n }\n});\n//# sourceMappingURL=UserSettings.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _SyntaxHighlight = require('../views/elements/SyntaxHighlight');\n\nvar _SyntaxHighlight2 = _interopRequireDefault(_SyntaxHighlight);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'ViewSource',\n\n propTypes: {\n content: _propTypes2.default.object.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n componentDidMount: function componentDidMount() {\n document.addEventListener(\"keydown\", this.onKeyDown);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n document.removeEventListener(\"keydown\", this.onKeyDown);\n },\n\n onKeyDown: function onKeyDown(ev) {\n if (ev.keyCode == 27) {\n // escape\n ev.stopPropagation();\n ev.preventDefault();\n this.props.onFinished();\n }\n },\n\n render: function render() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ViewSource' },\n _react2.default.createElement(\n _SyntaxHighlight2.default,\n { className: 'json' },\n (0, _stringify2.default)(this.props.content, null, 2)\n )\n );\n }\n});\n//# sourceMappingURL=ViewSource.js.map","'use strict';\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _PasswordReset = require('../../../PasswordReset');\n\nvar _PasswordReset2 = _interopRequireDefault(_PasswordReset);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'ForgotPassword',\n\n propTypes: {\n defaultHsUrl: _propTypes2.default.string,\n defaultIsUrl: _propTypes2.default.string,\n customHsUrl: _propTypes2.default.string,\n customIsUrl: _propTypes2.default.string,\n onLoginClick: _propTypes2.default.func,\n onRegisterClick: _propTypes2.default.func,\n onComplete: _propTypes2.default.func.isRequired,\n\n // The default server name to use when the user hasn't specified\n // one. This is used when displaying the defaultHsUrl in the UI.\n defaultServerName: _propTypes2.default.string,\n\n // An error passed along from higher up explaining that something\n // went wrong when finding the defaultHsUrl.\n defaultServerDiscoveryError: _propTypes2.default.string\n },\n\n getInitialState: function getInitialState() {\n return {\n enteredHomeserverUrl: this.props.customHsUrl || this.props.defaultHsUrl,\n enteredIdentityServerUrl: this.props.customIsUrl || this.props.defaultIsUrl,\n progress: null,\n password: null,\n password2: null,\n errorText: null\n };\n },\n\n submitPasswordReset: function submitPasswordReset(hsUrl, identityUrl, email, password) {\n var _this = this;\n\n this.setState({\n progress: \"sending_email\"\n });\n this.reset = new _PasswordReset2.default(hsUrl, identityUrl);\n this.reset.resetPassword(email, password).done(function () {\n _this.setState({\n progress: \"sent_email\"\n });\n }, function (err) {\n _this.showErrorDialog((0, _languageHandler._t)('Failed to send email') + \": \" + err.message);\n _this.setState({\n progress: null\n });\n });\n },\n\n onVerify: function onVerify(ev) {\n var _this2 = this;\n\n ev.preventDefault();\n if (!this.reset) {\n console.error(\"onVerify called before submitPasswordReset!\");\n return;\n }\n this.reset.checkEmailLinkClicked().done(function (res) {\n _this2.setState({ progress: \"complete\" });\n }, function (err) {\n _this2.showErrorDialog(err.message);\n });\n },\n\n onSubmitForm: function onSubmitForm(ev) {\n var _this3 = this;\n\n ev.preventDefault();\n\n // Don't allow the user to register if there's a discovery error\n // Without this, the user could end up registering on the wrong homeserver.\n if (this.props.defaultServerDiscoveryError) {\n this.setState({ errorText: this.props.defaultServerDiscoveryError });\n return;\n }\n\n if (!this.state.email) {\n this.showErrorDialog((0, _languageHandler._t)('The email address linked to your account must be entered.'));\n } else if (!this.state.password || !this.state.password2) {\n this.showErrorDialog((0, _languageHandler._t)('A new password must be entered.'));\n } else if (this.state.password !== this.state.password2) {\n this.showErrorDialog((0, _languageHandler._t)('New passwords must match each other.'));\n } else {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('Forgot Password Warning', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Warning!'),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Resetting password will currently reset any ' + 'end-to-end encryption keys on all devices, ' + 'making encrypted chat history unreadable, ' + 'unless you first export your room keys and re-import ' + 'them afterwards. In future this will be improved.')\n ),\n button: (0, _languageHandler._t)('Continue'),\n extraButtons: [_react2.default.createElement(\n 'button',\n { key: 'export_keys', className: 'mx_Dialog_primary',\n onClick: this._onExportE2eKeysClicked },\n (0, _languageHandler._t)('Export E2E room keys')\n )],\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n _this3.submitPasswordReset(_this3.state.enteredHomeserverUrl, _this3.state.enteredIdentityServerUrl, _this3.state.email, _this3.state.password);\n }\n }\n });\n }\n },\n\n _onExportE2eKeysClicked: function _onExportE2eKeysClicked() {\n _Modal2.default.createTrackedDialogAsync('Export E2E Keys', 'Forgot Password', import('../../../async-components/views/dialogs/ExportE2eKeysDialog'), {\n matrixClient: _MatrixClientPeg2.default.get()\n });\n },\n\n onInputChanged: function onInputChanged(stateKey, ev) {\n this.setState((0, _defineProperty3.default)({}, stateKey, ev.target.value));\n },\n\n onServerConfigChange: function onServerConfigChange(config) {\n var newState = {};\n if (config.hsUrl !== undefined) {\n newState.enteredHomeserverUrl = config.hsUrl;\n }\n if (config.isUrl !== undefined) {\n newState.enteredIdentityServerUrl = config.isUrl;\n }\n this.setState(newState);\n },\n\n showErrorDialog: function showErrorDialog(body, title) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Forgot Password Error', '', ErrorDialog, {\n title: title,\n description: body\n });\n },\n\n render: function render() {\n var LoginPage = _index2.default.getComponent(\"login.LoginPage\");\n var LoginHeader = _index2.default.getComponent(\"login.LoginHeader\");\n var LoginFooter = _index2.default.getComponent(\"login.LoginFooter\");\n var ServerConfig = _index2.default.getComponent(\"login.ServerConfig\");\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n\n var resetPasswordJsx = void 0;\n\n if (this.state.progress === \"sending_email\") {\n resetPasswordJsx = _react2.default.createElement(Spinner, null);\n } else if (this.state.progress === \"sent_email\") {\n resetPasswordJsx = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_prompt' },\n (0, _languageHandler._t)(\"An email has been sent to %(emailAddress)s. Once you've followed the link it contains, \" + \"click below.\", { emailAddress: this.state.email }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { className: 'mx_Login_submit', type: 'button', onClick: this.onVerify,\n value: (0, _languageHandler._t)('I have verified my email address') })\n );\n } else if (this.state.progress === \"complete\") {\n resetPasswordJsx = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_prompt' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Your password has been reset'),\n '.'\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('You have been logged out of all devices and will no longer receive push notifications. ' + 'To re-enable notifications, sign in again on each device'),\n '.'\n ),\n _react2.default.createElement('input', { className: 'mx_Login_submit', type: 'button', onClick: this.props.onComplete,\n value: (0, _languageHandler._t)('Return to login screen') })\n );\n } else {\n var serverConfigSection = void 0;\n if (!_SdkConfig2.default.get()['disable_custom_urls']) {\n serverConfigSection = _react2.default.createElement(ServerConfig, { ref: 'serverConfig',\n withToggleButton: true,\n defaultHsUrl: this.props.defaultHsUrl,\n defaultIsUrl: this.props.defaultIsUrl,\n customHsUrl: this.props.customHsUrl,\n customIsUrl: this.props.customIsUrl,\n onServerConfigChange: this.onServerConfigChange,\n delayTimeMs: 0 });\n }\n\n var errorText = null;\n var err = this.state.errorText || this.props.defaultServerDiscoveryError;\n if (err) {\n errorText = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_error' },\n err\n );\n }\n\n var LanguageSelector = _index2.default.getComponent('structures.login.LanguageSelector');\n\n resetPasswordJsx = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_prompt' },\n (0, _languageHandler._t)('To reset your password, enter the email address linked to your account'),\n ':'\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'form',\n { onSubmit: this.onSubmitForm },\n _react2.default.createElement('input', { className: 'mx_Login_field', ref: 'user', type: 'text',\n name: 'reset_email' // define a name so browser's password autofill gets less confused\n , value: this.state.email,\n onChange: this.onInputChanged.bind(this, \"email\"),\n placeholder: (0, _languageHandler._t)('Email address'), autoFocus: true }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { className: 'mx_Login_field', ref: 'pass', type: 'password',\n name: 'reset_password',\n value: this.state.password,\n onChange: this.onInputChanged.bind(this, \"password\"),\n placeholder: (0, _languageHandler._t)('New password') }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { className: 'mx_Login_field', ref: 'pass', type: 'password',\n name: 'reset_password_confirm',\n value: this.state.password2,\n onChange: this.onInputChanged.bind(this, \"password2\"),\n placeholder: (0, _languageHandler._t)('Confirm your new password') }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { className: 'mx_Login_submit', type: 'submit', value: (0, _languageHandler._t)('Send Reset Email') })\n ),\n serverConfigSection,\n errorText,\n _react2.default.createElement(\n 'a',\n { className: 'mx_Login_create', onClick: this.props.onLoginClick, href: '#' },\n (0, _languageHandler._t)('Return to login screen')\n ),\n _react2.default.createElement(\n 'a',\n { className: 'mx_Login_create', onClick: this.props.onRegisterClick, href: '#' },\n (0, _languageHandler._t)('Create an account')\n ),\n _react2.default.createElement(LanguageSelector, null),\n _react2.default.createElement(LoginFooter, null)\n )\n );\n }\n\n return _react2.default.createElement(\n LoginPage,\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_box' },\n _react2.default.createElement(LoginHeader, null),\n resetPasswordJsx\n )\n );\n }\n});\n//# sourceMappingURL=ForgotPassword.js.map","'use strict';\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar Matrix = _interopRequireWildcard(_matrixJsSdk);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Allows a user to reset their password on a homeserver.\n *\n * This involves getting an email token from the identity server to \"prove\" that\n * the client owns the given email address, which is then passed to the password\n * API on the homeserver in question with the new password.\n */\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar PasswordReset = function () {\n /**\n * Configure the endpoints for password resetting.\n * @param {string} homeserverUrl The URL to the HS which has the account to reset.\n * @param {string} identityUrl The URL to the IS which has linked the email -> mxid mapping.\n */\n function PasswordReset(homeserverUrl, identityUrl) {\n (0, _classCallCheck3.default)(this, PasswordReset);\n\n this.client = Matrix.createClient({\n baseUrl: homeserverUrl,\n idBaseUrl: identityUrl\n });\n this.clientSecret = this.client.generateClientSecret();\n this.identityServerDomain = identityUrl.split(\"://\")[1];\n }\n\n /**\n * Attempt to reset the user's password. This will trigger a side-effect of\n * sending an email to the provided email address.\n * @param {string} emailAddress The email address\n * @param {string} newPassword The new password for the account.\n * @return {Promise} Resolves when the email has been sent. Then call checkEmailLinkClicked().\n */\n\n\n (0, _createClass3.default)(PasswordReset, [{\n key: 'resetPassword',\n value: function resetPassword(emailAddress, newPassword) {\n var _this = this;\n\n this.password = newPassword;\n return this.client.requestPasswordEmailToken(emailAddress, this.clientSecret, 1).then(function (res) {\n _this.sessionId = res.sid;\n return res;\n }, function (err) {\n if (err.errcode === 'M_THREEPID_NOT_FOUND') {\n err.message = (0, _languageHandler._t)('This email address was not found');\n } else if (err.httpStatus) {\n err.message = err.message + (' (Status ' + err.httpStatus + ')');\n }\n throw err;\n });\n }\n\n /**\n * Checks if the email link has been clicked by attempting to change the password\n * for the mxid linked to the email.\n * @return {Promise} Resolves if the password was reset. Rejects with an object\n * with a \"message\" property which contains a human-readable message detailing why\n * the reset failed, e.g. \"There is no mapped matrix user ID for the given email address\".\n */\n\n }, {\n key: 'checkEmailLinkClicked',\n value: function checkEmailLinkClicked() {\n return this.client.setPassword({\n type: \"m.login.email.identity\",\n threepid_creds: {\n sid: this.sessionId,\n client_secret: this.clientSecret,\n id_server: this.identityServerDomain\n }\n }, this.password).catch(function (err) {\n if (err.httpStatus === 401) {\n err.message = (0, _languageHandler._t)('Failed to verify email address: make sure you clicked the link in the email');\n } else if (err.httpStatus === 404) {\n err.message = (0, _languageHandler._t)('Your email address does not appear to be associated with a Matrix ID on this Homeserver.');\n } else if (err.httpStatus) {\n err.message += ' (Status ' + err.httpStatus + ')';\n }\n throw err;\n });\n }\n }]);\n return PasswordReset;\n}();\n\nmodule.exports = PasswordReset;\n//# sourceMappingURL=PasswordReset.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = LanguageSelector;\n\nvar _SdkConfig = require(\"../../../SdkConfig\");\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nvar _SettingsStore = require(\"../../../settings/SettingsStore\");\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _PlatformPeg = require(\"../../../PlatformPeg\");\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _index = require(\"../../../index\");\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction onChange(newLang) {\n if ((0, _languageHandler.getCurrentLanguage)() !== newLang) {\n _SettingsStore2.default.setValue(\"language\", null, _SettingsStore.SettingLevel.DEVICE, newLang);\n _PlatformPeg2.default.get().reload();\n }\n}\n\nfunction LanguageSelector() {\n if (_SdkConfig2.default.get()['disable_login_language_selector']) return _react2.default.createElement(\"div\", null);\n\n var LanguageDropdown = _index2.default.getComponent('views.elements.LanguageDropdown');\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_Login_language_div\" },\n _react2.default.createElement(LanguageDropdown, { onOptionChange: onChange, className: \"mx_Login_language\", value: (0, _languageHandler.getCurrentLanguage)() })\n );\n}\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=LanguageSelector.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Login = require('../../../Login');\n\nvar _Login2 = _interopRequireDefault(_Login);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _ErrorUtils = require('../../../utils/ErrorUtils');\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// For validating phone numbers without country codes\nvar PHONE_NUMBER_REGEX = /^[0-9()\\-\\s]*$/;\n\n// These are used in several places, and come from the js-sdk's autodiscovery\n// stuff. We define them here so that they'll be picked up by i18n.\n(0, _languageHandler._td)(\"Invalid homeserver discovery response\");\n(0, _languageHandler._td)(\"Invalid identity server discovery response\");\n(0, _languageHandler._td)(\"General failure\");\n\n/**\n * A wire component which glues together login UI components and Login logic\n */\nmodule.exports = _react2.default.createClass({\n displayName: 'Login',\n\n propTypes: {\n onLoggedIn: _propTypes2.default.func.isRequired,\n\n enableGuest: _propTypes2.default.bool,\n\n customHsUrl: _propTypes2.default.string,\n customIsUrl: _propTypes2.default.string,\n defaultHsUrl: _propTypes2.default.string,\n defaultIsUrl: _propTypes2.default.string,\n // Secondary HS which we try to log into if the user is using\n // the default HS but login fails. Useful for migrating to a\n // different home server without confusing users.\n fallbackHsUrl: _propTypes2.default.string,\n\n // The default server name to use when the user hasn't specified\n // one. This is used when displaying the defaultHsUrl in the UI.\n defaultServerName: _propTypes2.default.string,\n\n // An error passed along from higher up explaining that something\n // went wrong when finding the defaultHsUrl.\n defaultServerDiscoveryError: _propTypes2.default.string,\n\n defaultDeviceDisplayName: _propTypes2.default.string,\n\n // login shouldn't know or care how registration is done.\n onRegisterClick: _propTypes2.default.func.isRequired,\n\n // login shouldn't care how password recovery is done.\n onForgotPasswordClick: _propTypes2.default.func,\n onCancelClick: _propTypes2.default.func,\n onServerConfigChange: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n busy: false,\n errorText: null,\n loginIncorrect: false,\n enteredHomeserverUrl: this.props.customHsUrl || this.props.defaultHsUrl,\n enteredIdentityServerUrl: this.props.customIsUrl || this.props.defaultIsUrl,\n\n // used for preserving form values when changing homeserver\n username: \"\",\n phoneCountry: null,\n phoneNumber: \"\",\n currentFlow: \"m.login.password\",\n\n // .well-known discovery\n discoveredHsUrl: \"\",\n discoveredIsUrl: \"\",\n discoveryError: \"\",\n findingHomeserver: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this._unmounted = false;\n\n // map from login step type to a function which will render a control\n // letting you do that login type\n this._stepRendererMap = {\n 'm.login.password': this._renderPasswordStep,\n\n // CAS and SSO are the same thing, modulo the url we link to\n 'm.login.cas': function mLoginCas() {\n return _this._renderSsoStep(_this._loginLogic.getSsoLoginUrl(\"cas\"));\n },\n 'm.login.sso': function mLoginSso() {\n return _this._renderSsoStep(_this._loginLogic.getSsoLoginUrl(\"sso\"));\n }\n };\n\n this._initLoginLogic();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n onPasswordLoginError: function onPasswordLoginError(errorText) {\n this.setState({\n errorText: errorText,\n loginIncorrect: Boolean(errorText)\n });\n },\n\n onPasswordLogin: function onPasswordLogin(username, phoneCountry, phoneNumber, password) {\n var _this2 = this;\n\n // Prevent people from submitting their password when homeserver\n // discovery went wrong\n if (this.state.discoveryError || this.props.defaultServerDiscoveryError) return;\n\n this.setState({\n busy: true,\n errorText: null,\n loginIncorrect: false\n });\n\n this._loginLogic.loginViaPassword(username, phoneCountry, phoneNumber, password).then(function (data) {\n _this2.props.onLoggedIn(data);\n }, function (error) {\n if (_this2._unmounted) {\n return;\n }\n var errorText = void 0;\n\n // Some error strings only apply for logging in\n var usingEmail = username.indexOf(\"@\") > 0;\n if (error.httpStatus === 400 && usingEmail) {\n errorText = (0, _languageHandler._t)('This Home Server does not support login using email address.');\n } else if (error.errcode == 'M_RESOURCE_LIMIT_EXCEEDED') {\n var errorTop = (0, _ErrorUtils.messageForResourceLimitError)(error.data.limit_type, error.data.admin_contact, {\n 'monthly_active_user': (0, _languageHandler._td)(\"This homeserver has hit its Monthly Active User limit.\"),\n '': (0, _languageHandler._td)(\"This homeserver has exceeded one of its resource limits.\")\n });\n var errorDetail = (0, _ErrorUtils.messageForResourceLimitError)(error.data.limit_type, error.data.admin_contact, {\n '': (0, _languageHandler._td)(\"Please <a>contact your service administrator</a> to continue using this service.\")\n });\n errorText = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n errorTop\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_smallError' },\n errorDetail\n )\n );\n } else if (error.httpStatus === 401 || error.httpStatus === 403) {\n if (_SdkConfig2.default.get()['disable_custom_urls']) {\n errorText = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Incorrect username and/or password.')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_smallError' },\n (0, _languageHandler._t)('Please note you are logging into the %(hs)s server, not matrix.org.', {\n hs: _this2.props.defaultHsUrl.replace(/^https?:\\/\\//, '')\n })\n )\n );\n } else {\n errorText = (0, _languageHandler._t)('Incorrect username and/or password.');\n }\n } else {\n // other errors, not specific to doing a password login\n errorText = _this2._errorTextFromError(error);\n }\n\n _this2.setState({\n errorText: errorText,\n // 401 would be the sensible status code for 'incorrect password'\n // but the login API gives a 403 https://matrix.org/jira/browse/SYN-744\n // mentions this (although the bug is for UI auth which is not this)\n // We treat both as an incorrect password\n loginIncorrect: error.httpStatus === 401 || error.httpStatus === 403\n });\n }).finally(function () {\n if (_this2._unmounted) {\n return;\n }\n _this2.setState({\n busy: false\n });\n }).done();\n },\n\n _onLoginAsGuestClick: function _onLoginAsGuestClick() {\n var self = this;\n self.setState({\n busy: true,\n errorText: null,\n loginIncorrect: false\n });\n\n this._loginLogic.loginAsGuest().then(function (data) {\n self.props.onLoggedIn(data);\n }, function (error) {\n var errorText = void 0;\n if (error.httpStatus === 403) {\n errorText = (0, _languageHandler._t)(\"Guest access is disabled on this Home Server.\");\n } else {\n errorText = self._errorTextFromError(error);\n }\n self.setState({\n errorText: errorText,\n loginIncorrect: false\n });\n }).finally(function () {\n self.setState({\n busy: false\n });\n }).done();\n },\n\n onUsernameChanged: function onUsernameChanged(username) {\n this.setState({ username: username });\n },\n\n onUsernameBlur: function onUsernameBlur(username) {\n this.setState({ username: username });\n if (username[0] === \"@\") {\n var serverName = username.split(':').slice(1).join(':');\n try {\n // we have to append 'https://' to make the URL constructor happy\n // otherwise we get things like 'protocol: matrix.org, pathname: 8448'\n var url = new URL(\"https://\" + serverName);\n this._tryWellKnownDiscovery(url.hostname);\n } catch (e) {\n console.error(\"Problem parsing URL or unhandled error doing .well-known discovery:\", e);\n this.setState({ discoveryError: (0, _languageHandler._t)(\"Failed to perform homeserver discovery\") });\n }\n }\n },\n\n onPhoneCountryChanged: function onPhoneCountryChanged(phoneCountry) {\n this.setState({ phoneCountry: phoneCountry });\n },\n\n onPhoneNumberChanged: function onPhoneNumberChanged(phoneNumber) {\n // Validate the phone number entered\n if (!PHONE_NUMBER_REGEX.test(phoneNumber)) {\n this.setState({ errorText: (0, _languageHandler._t)('The phone number entered looks invalid') });\n return;\n }\n\n this.setState({\n phoneNumber: phoneNumber,\n errorText: null\n });\n },\n\n onServerConfigChange: function onServerConfigChange(config) {\n var self = this;\n var newState = {\n errorText: null // reset err messages\n };\n if (config.hsUrl !== undefined) {\n newState.enteredHomeserverUrl = config.hsUrl;\n }\n if (config.isUrl !== undefined) {\n newState.enteredIdentityServerUrl = config.isUrl;\n }\n\n this.props.onServerConfigChange(config);\n this.setState(newState, function () {\n self._initLoginLogic(config.hsUrl || null, config.isUrl);\n });\n },\n\n _tryWellKnownDiscovery: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(serverName) {\n var discovery, state;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (serverName.trim()) {\n _context.next = 3;\n break;\n }\n\n // Nothing to discover\n this.setState({ discoveryError: \"\", discoveredHsUrl: \"\", discoveredIsUrl: \"\", findingHomeserver: false });\n return _context.abrupt('return');\n\n case 3:\n\n this.setState({ findingHomeserver: true });\n _context.prev = 4;\n _context.next = 7;\n return (0, _bluebird.resolve)(_matrixJsSdk.AutoDiscovery.findClientConfig(serverName));\n\n case 7:\n discovery = _context.sent;\n state = discovery[\"m.homeserver\"].state;\n\n if (state !== _matrixJsSdk.AutoDiscovery.SUCCESS && state !== _matrixJsSdk.AutoDiscovery.PROMPT) {\n this.setState({\n discoveredHsUrl: \"\",\n discoveredIsUrl: \"\",\n discoveryError: discovery[\"m.homeserver\"].error,\n findingHomeserver: false\n });\n } else if (state === _matrixJsSdk.AutoDiscovery.PROMPT) {\n this.setState({\n discoveredHsUrl: \"\",\n discoveredIsUrl: \"\",\n discoveryError: \"\",\n findingHomeserver: false\n });\n } else if (state === _matrixJsSdk.AutoDiscovery.SUCCESS) {\n this.setState({\n discoveredHsUrl: discovery[\"m.homeserver\"].base_url,\n discoveredIsUrl: discovery[\"m.identity_server\"].state === _matrixJsSdk.AutoDiscovery.SUCCESS ? discovery[\"m.identity_server\"].base_url : \"\",\n discoveryError: \"\",\n findingHomeserver: false\n });\n } else {\n console.warn(\"Unknown state for m.homeserver in discovery response: \", discovery);\n this.setState({\n discoveredHsUrl: \"\",\n discoveredIsUrl: \"\",\n discoveryError: (0, _languageHandler._t)(\"Unknown failure discovering homeserver\"),\n findingHomeserver: false\n });\n }\n _context.next = 16;\n break;\n\n case 12:\n _context.prev = 12;\n _context.t0 = _context['catch'](4);\n\n console.error(_context.t0);\n this.setState({\n findingHomeserver: false,\n discoveryError: (0, _languageHandler._t)(\"Unknown error discovering homeserver\")\n });\n\n case 16:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 12]]);\n }));\n\n function _tryWellKnownDiscovery(_x) {\n return _ref.apply(this, arguments);\n }\n\n return _tryWellKnownDiscovery;\n }(),\n\n _initLoginLogic: function _initLoginLogic(hsUrl, isUrl) {\n var _this3 = this;\n\n var self = this;\n hsUrl = hsUrl || this.state.enteredHomeserverUrl;\n isUrl = isUrl || this.state.enteredIdentityServerUrl;\n\n var fallbackHsUrl = hsUrl === this.props.defaultHsUrl ? this.props.fallbackHsUrl : null;\n\n var loginLogic = new _Login2.default(hsUrl, isUrl, fallbackHsUrl, {\n defaultDeviceDisplayName: this.props.defaultDeviceDisplayName\n });\n this._loginLogic = loginLogic;\n\n this.setState({\n enteredHomeserverUrl: hsUrl,\n enteredIdentityServerUrl: isUrl,\n busy: true,\n loginIncorrect: false\n });\n\n loginLogic.getFlows().then(function (flows) {\n // look for a flow where we understand all of the steps.\n for (var i = 0; i < flows.length; i++) {\n if (!_this3._isSupportedFlow(flows[i])) {\n continue;\n }\n\n // we just pick the first flow where we support all the\n // steps. (we don't have a UI for multiple logins so let's skip\n // that for now).\n loginLogic.chooseFlow(i);\n _this3.setState({\n currentFlow: _this3._getCurrentFlowStep()\n });\n return;\n }\n // we got to the end of the list without finding a suitable\n // flow.\n _this3.setState({\n errorText: (0, _languageHandler._t)(\"This homeserver doesn't offer any login flows which are \" + \"supported by this client.\")\n });\n }, function (err) {\n self.setState({\n errorText: self._errorTextFromError(err),\n loginIncorrect: false\n });\n }).finally(function () {\n self.setState({\n busy: false\n });\n }).done();\n },\n\n _isSupportedFlow: function _isSupportedFlow(flow) {\n // technically the flow can have multiple steps, but no one does this\n // for login and loginLogic doesn't support it so we can ignore it.\n if (!this._stepRendererMap[flow.type]) {\n console.log(\"Skipping flow\", flow, \"due to unsupported login type\", flow.type);\n return false;\n }\n return true;\n },\n\n _getCurrentFlowStep: function _getCurrentFlowStep() {\n return this._loginLogic ? this._loginLogic.getCurrentFlowStep() : null;\n },\n\n _errorTextFromError: function _errorTextFromError(err) {\n var _this4 = this;\n\n var errCode = err.errcode;\n if (!errCode && err.httpStatus) {\n errCode = \"HTTP \" + err.httpStatus;\n }\n\n var errorText = (0, _languageHandler._t)(\"Error: Problem communicating with the given homeserver.\") + (errCode ? \" (\" + errCode + \")\" : \"\");\n\n if (err.cors === 'rejected') {\n if (window.location.protocol === 'https:' && (this.state.enteredHomeserverUrl.startsWith(\"http:\") || !this.state.enteredHomeserverUrl.startsWith(\"http\"))) {\n errorText = _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. \" + \"Either use HTTPS or <a>enable unsafe scripts</a>.\", {}, {\n 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: 'https://www.google.com/search?&q=enable%20unsafe%20scripts' },\n sub\n );\n }\n })\n );\n } else {\n errorText = _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Can't connect to homeserver - please check your connectivity, ensure your \" + \"<a>homeserver's SSL certificate</a> is trusted, and that a browser extension \" + \"is not blocking requests.\", {}, {\n 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: _this4.state.enteredHomeserverUrl },\n sub\n );\n }\n })\n );\n }\n }\n\n return errorText;\n },\n\n\n componentForStep: function componentForStep(step) {\n if (!step) {\n return null;\n }\n\n var stepRenderer = this._stepRendererMap[step];\n\n if (stepRenderer) {\n return stepRenderer();\n }\n\n return null;\n },\n\n _renderPasswordStep: function _renderPasswordStep() {\n var PasswordLogin = _index2.default.getComponent('login.PasswordLogin');\n return _react2.default.createElement(PasswordLogin, {\n onSubmit: this.onPasswordLogin,\n onError: this.onPasswordLoginError,\n initialUsername: this.state.username,\n initialPhoneCountry: this.state.phoneCountry,\n initialPhoneNumber: this.state.phoneNumber,\n onUsernameChanged: this.onUsernameChanged,\n onUsernameBlur: this.onUsernameBlur,\n onPhoneCountryChanged: this.onPhoneCountryChanged,\n onPhoneNumberChanged: this.onPhoneNumberChanged,\n onForgotPasswordClick: this.props.onForgotPasswordClick,\n loginIncorrect: this.state.loginIncorrect,\n hsUrl: this.state.enteredHomeserverUrl,\n hsName: this.props.defaultServerName,\n disableSubmit: this.state.findingHomeserver\n });\n },\n\n _renderSsoStep: function _renderSsoStep(url) {\n return _react2.default.createElement(\n 'a',\n { href: url, className: 'mx_Login_sso_link' },\n (0, _languageHandler._t)('Sign in with single sign-on')\n );\n },\n\n render: function render() {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n var LoginPage = _index2.default.getComponent(\"login.LoginPage\");\n var LoginHeader = _index2.default.getComponent(\"login.LoginHeader\");\n var LoginFooter = _index2.default.getComponent(\"login.LoginFooter\");\n var ServerConfig = _index2.default.getComponent(\"login.ServerConfig\");\n var loader = this.state.busy ? _react2.default.createElement(\n 'div',\n { className: 'mx_Login_loader' },\n _react2.default.createElement(Loader, null)\n ) : null;\n\n var errorText = this.props.defaultServerDiscoveryError || this.state.discoveryError || this.state.errorText;\n\n var loginAsGuestJsx = void 0;\n if (this.props.enableGuest) {\n loginAsGuestJsx = _react2.default.createElement(\n 'a',\n { className: 'mx_Login_create', onClick: this._onLoginAsGuestClick, href: '#' },\n (0, _languageHandler._t)('Try the app first')\n );\n }\n\n var serverConfig = void 0;\n var header = void 0;\n\n if (!_SdkConfig2.default.get()['disable_custom_urls']) {\n serverConfig = _react2.default.createElement(ServerConfig, { ref: 'serverConfig',\n withToggleButton: true,\n customHsUrl: this.state.discoveredHsUrl || this.props.customHsUrl,\n customIsUrl: this.state.discoveredIsUrl || this.props.customIsUrl,\n defaultHsUrl: this.props.defaultHsUrl,\n defaultIsUrl: this.props.defaultIsUrl,\n onServerConfigChange: this.onServerConfigChange,\n delayTimeMs: 1000 });\n }\n\n // FIXME: remove status.im theme tweaks\n var theme = _SettingsStore2.default.getValue(\"theme\");\n if (theme !== \"status\") {\n header = _react2.default.createElement(\n 'h2',\n null,\n (0, _languageHandler._t)('Sign in'),\n ' ',\n loader\n );\n } else {\n if (!errorText) {\n header = _react2.default.createElement(\n 'h2',\n null,\n (0, _languageHandler._t)('Sign in to get started'),\n ' ',\n loader\n );\n }\n }\n\n var errorTextSection = void 0;\n if (errorText) {\n errorTextSection = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_error' },\n errorText\n );\n }\n\n var LanguageSelector = _index2.default.getComponent('structures.login.LanguageSelector');\n\n return _react2.default.createElement(\n LoginPage,\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_box' },\n _react2.default.createElement(LoginHeader, null),\n _react2.default.createElement(\n 'div',\n null,\n header,\n errorTextSection,\n this.componentForStep(this.state.currentFlow),\n serverConfig,\n _react2.default.createElement(\n 'a',\n { className: 'mx_Login_create', onClick: this.props.onRegisterClick, href: '#' },\n (0, _languageHandler._t)('Create an account')\n ),\n loginAsGuestJsx,\n _react2.default.createElement(LanguageSelector, null),\n _react2.default.createElement(LoginFooter, null)\n )\n )\n );\n }\n});\n//# sourceMappingURL=Login.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'PostRegistration',\n\n propTypes: {\n onComplete: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n avatarUrl: null,\n errorString: null,\n busy: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n // There is some assymetry between ChangeDisplayName and ChangeAvatar,\n // as ChangeDisplayName will auto-get the name but ChangeAvatar expects\n // the URL to be passed to you (because it's also used for room avatars).\n var cli = _MatrixClientPeg2.default.get();\n this.setState({ busy: true });\n var self = this;\n cli.getProfileInfo(cli.credentials.userId).done(function (result) {\n self.setState({\n avatarUrl: _MatrixClientPeg2.default.get().mxcUrlToHttp(result.avatar_url),\n busy: false\n });\n }, function (error) {\n self.setState({\n errorString: (0, _languageHandler._t)(\"Failed to fetch avatar URL\"),\n busy: false\n });\n });\n },\n\n render: function render() {\n var ChangeDisplayName = _index2.default.getComponent('settings.ChangeDisplayName');\n var ChangeAvatar = _index2.default.getComponent('settings.ChangeAvatar');\n var LoginPage = _index2.default.getComponent('login.LoginPage');\n var LoginHeader = _index2.default.getComponent('login.LoginHeader');\n return _react2.default.createElement(\n LoginPage,\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_box' },\n _react2.default.createElement(LoginHeader, null),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_profile' },\n (0, _languageHandler._t)('Set a display name:'),\n _react2.default.createElement(ChangeDisplayName, null),\n (0, _languageHandler._t)('Upload an avatar:'),\n _react2.default.createElement(ChangeAvatar, {\n initialAvatarUrl: this.state.avatarUrl }),\n _react2.default.createElement(\n 'button',\n { onClick: this.props.onComplete },\n (0, _languageHandler._t)('Continue')\n ),\n this.state.errorString\n )\n )\n );\n }\n});\n//# sourceMappingURL=PostRegistration.js.map","'use strict';\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _RegistrationForm = require('../../views/login/RegistrationForm');\n\nvar _RegistrationForm2 = _interopRequireDefault(_RegistrationForm);\n\nvar _RtsClient = require('../../../RtsClient');\n\nvar _RtsClient2 = _interopRequireDefault(_RtsClient);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _ErrorUtils = require('../../../utils/ErrorUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MIN_PASSWORD_LENGTH = 6;\n\nmodule.exports = _react2.default.createClass({\n displayName: 'Registration',\n\n propTypes: {\n onLoggedIn: _propTypes2.default.func.isRequired,\n clientSecret: _propTypes2.default.string,\n sessionId: _propTypes2.default.string,\n makeRegistrationUrl: _propTypes2.default.func.isRequired,\n idSid: _propTypes2.default.string,\n customHsUrl: _propTypes2.default.string,\n customIsUrl: _propTypes2.default.string,\n defaultHsUrl: _propTypes2.default.string,\n defaultIsUrl: _propTypes2.default.string,\n brand: _propTypes2.default.string,\n email: _propTypes2.default.string,\n referrer: _propTypes2.default.string,\n teamServerConfig: _propTypes2.default.shape({\n // Email address to request new teams\n supportEmail: _propTypes2.default.string.isRequired,\n // URL of the riot-team-server to get team configurations and track referrals\n teamServerURL: _propTypes2.default.string.isRequired\n }),\n teamSelected: _propTypes2.default.object,\n\n // The default server name to use when the user hasn't specified\n // one. This is used when displaying the defaultHsUrl in the UI.\n defaultServerName: _propTypes2.default.string,\n\n // An error passed along from higher up explaining that something\n // went wrong when finding the defaultHsUrl.\n defaultServerDiscoveryError: _propTypes2.default.string,\n\n defaultDeviceDisplayName: _propTypes2.default.string,\n\n // registration shouldn't know or care how login is done.\n onLoginClick: _propTypes2.default.func.isRequired,\n onCancelClick: _propTypes2.default.func,\n onServerConfigChange: _propTypes2.default.func.isRequired,\n\n rtsClient: _propTypes2.default.shape({\n getTeamsConfig: _propTypes2.default.func.isRequired,\n trackReferral: _propTypes2.default.func.isRequired,\n getTeam: _propTypes2.default.func.isRequired\n })\n },\n\n getInitialState: function getInitialState() {\n return {\n busy: false,\n teamServerBusy: false,\n errorText: null,\n // We remember the values entered by the user because\n // the registration form will be unmounted during the\n // course of registration, but if there's an error we\n // want to bring back the registration form with the\n // values the user entered still in it. We can keep\n // them in this component's state since this component\n // persist for the duration of the registration process.\n formVals: {\n email: this.props.email\n },\n // true if we're waiting for the user to complete\n // user-interactive auth\n // If we've been given a session ID, we're resuming\n // straight back into UI auth\n doingUIAuth: Boolean(this.props.sessionId),\n hsUrl: this.props.customHsUrl,\n isUrl: this.props.customIsUrl,\n flows: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this._unmounted = false;\n\n this._replaceClient();\n\n if (this.props.teamServerConfig && this.props.teamServerConfig.teamServerURL && !this._rtsClient) {\n this._rtsClient = this.props.rtsClient || new _RtsClient2.default(this.props.teamServerConfig.teamServerURL);\n\n this.setState({\n teamServerBusy: true\n });\n // GET team configurations including domains, names and icons\n this._rtsClient.getTeamsConfig().then(function (data) {\n var teamsConfig = {\n teams: data,\n supportEmail: _this.props.teamServerConfig.supportEmail\n };\n console.log('Setting teams config to ', teamsConfig);\n _this.setState({\n teamsConfig: teamsConfig,\n teamServerBusy: false\n });\n }, function (err) {\n console.error('Error retrieving config for teams', err);\n _this.setState({\n teamServerBusy: false\n });\n });\n }\n },\n\n onServerConfigChange: function onServerConfigChange(config) {\n var _this2 = this;\n\n var newState = {};\n if (config.hsUrl !== undefined) {\n newState.hsUrl = config.hsUrl;\n }\n if (config.isUrl !== undefined) {\n newState.isUrl = config.isUrl;\n }\n this.props.onServerConfigChange(config);\n this.setState(newState, function () {\n _this2._replaceClient();\n });\n },\n\n _replaceClient: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this._matrixClient = _matrixJsSdk2.default.createClient({\n baseUrl: this.state.hsUrl,\n idBaseUrl: this.state.isUrl\n });\n _context.prev = 1;\n _context.next = 4;\n return (0, _bluebird.resolve)(this._makeRegisterRequest({}));\n\n case 4:\n // This should never succeed since we specified an empty\n // auth object.\n console.log(\"Expecting 401 from register request but got success!\");\n _context.next = 10;\n break;\n\n case 7:\n _context.prev = 7;\n _context.t0 = _context['catch'](1);\n\n if (_context.t0.httpStatus === 401) {\n this.setState({\n flows: _context.t0.data.flows\n });\n } else {\n this.setState({\n errorText: (0, _languageHandler._t)(\"Unable to query for supported registration methods\")\n });\n }\n\n case 10:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[1, 7]]);\n }));\n\n function _replaceClient() {\n return _ref.apply(this, arguments);\n }\n\n return _replaceClient;\n }(),\n\n onFormSubmit: function onFormSubmit(formVals) {\n // Don't allow the user to register if there's a discovery error\n // Without this, the user could end up registering on the wrong homeserver.\n if (this.props.defaultServerDiscoveryError) {\n this.setState({ errorText: this.props.defaultServerDiscoveryError });\n return;\n }\n this.setState({\n errorText: \"\",\n busy: true,\n formVals: formVals,\n doingUIAuth: true\n });\n },\n\n _onUIAuthFinished: function _onUIAuthFinished(success, response, extra) {\n var _this3 = this;\n\n if (!success) {\n var msg = response.message || response.toString();\n // can we give a better error message?\n if (response.errcode == 'M_RESOURCE_LIMIT_EXCEEDED') {\n var errorTop = (0, _ErrorUtils.messageForResourceLimitError)(response.data.limit_type, response.data.admin_contact, {\n 'monthly_active_user': (0, _languageHandler._td)(\"This homeserver has hit its Monthly Active User limit.\"),\n '': (0, _languageHandler._td)(\"This homeserver has exceeded one of its resource limits.\")\n });\n var errorDetail = (0, _ErrorUtils.messageForResourceLimitError)(response.data.limit_type, response.data.admin_contact, {\n '': (0, _languageHandler._td)(\"Please <a>contact your service administrator</a> to continue using this service.\")\n });\n msg = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n errorTop\n ),\n _react2.default.createElement(\n 'p',\n null,\n errorDetail\n )\n );\n } else if (response.required_stages && response.required_stages.indexOf('m.login.msisdn') > -1) {\n var msisdnAvailable = false;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(response.available_flows), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var flow = _step.value;\n\n msisdnAvailable |= flow.stages.indexOf('m.login.msisdn') > -1;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (!msisdnAvailable) {\n msg = (0, _languageHandler._t)('This server does not support authentication with a phone number.');\n }\n }\n this.setState({\n busy: false,\n doingUIAuth: false,\n errorText: msg\n });\n return;\n }\n\n this.setState({\n // we're still busy until we get unmounted: don't show the registration form again\n busy: true,\n doingUIAuth: false\n });\n\n // Done regardless of `teamSelected`. People registering with non-team emails\n // will just nop. The point of this being we might not have the email address\n // that the user registered with at this stage (depending on whether this\n // is the client they initiated registration).\n var trackPromise = _bluebird2.default.resolve(null);\n if (this._rtsClient && extra.emailSid) {\n // Track referral if this.props.referrer set, get team_token in order to\n // retrieve team config and see welcome page etc.\n trackPromise = this._rtsClient.trackReferral(this.props.referrer || '', // Default to empty string = not referred\n extra.emailSid, extra.clientSecret).then(function (data) {\n var teamToken = data.team_token;\n // Store for use /w welcome pages\n window.localStorage.setItem('mx_team_token', teamToken);\n\n _this3._rtsClient.getTeam(teamToken).then(function (team) {\n console.log('User successfully registered with team ' + team.name);\n if (!team.rooms) {\n return;\n }\n // Auto-join rooms\n team.rooms.forEach(function (room) {\n if (room.auto_join && room.room_id) {\n console.log('Auto-joining ' + room.room_id);\n _MatrixClientPeg2.default.get().joinRoom(room.room_id);\n }\n });\n }, function (err) {\n console.error('Error getting team config', err);\n });\n\n return teamToken;\n }, function (err) {\n console.error('Error tracking referral', err);\n });\n }\n\n trackPromise.then(function (teamToken) {\n return _this3.props.onLoggedIn({\n userId: response.user_id,\n deviceId: response.device_id,\n homeserverUrl: _this3._matrixClient.getHomeserverUrl(),\n identityServerUrl: _this3._matrixClient.getIdentityServerUrl(),\n accessToken: response.access_token\n }, teamToken);\n }).then(function (cli) {\n return _this3._setupPushers(cli);\n });\n },\n\n _setupPushers: function _setupPushers(matrixClient) {\n var _this4 = this;\n\n if (!this.props.brand) {\n return _bluebird2.default.resolve();\n }\n return matrixClient.getPushers().then(function (resp) {\n var pushers = resp.pushers;\n for (var i = 0; i < pushers.length; ++i) {\n if (pushers[i].kind === 'email') {\n var emailPusher = pushers[i];\n emailPusher.data = { brand: _this4.props.brand };\n matrixClient.setPusher(emailPusher).done(function () {\n console.log(\"Set email branding to \" + _this4.props.brand);\n }, function (error) {\n console.error(\"Couldn't set email branding: \" + error);\n });\n }\n }\n }, function (error) {\n console.error(\"Couldn't get pushers: \" + error);\n });\n },\n\n onFormValidationFailed: function onFormValidationFailed(errCode) {\n var errMsg = void 0;\n switch (errCode) {\n case \"RegistrationForm.ERR_PASSWORD_MISSING\":\n errMsg = (0, _languageHandler._t)('Missing password.');\n break;\n case \"RegistrationForm.ERR_PASSWORD_MISMATCH\":\n errMsg = (0, _languageHandler._t)('Passwords don\\'t match.');\n break;\n case \"RegistrationForm.ERR_PASSWORD_LENGTH\":\n errMsg = (0, _languageHandler._t)('Password too short (min %(MIN_PASSWORD_LENGTH)s).', { MIN_PASSWORD_LENGTH: MIN_PASSWORD_LENGTH });\n break;\n case \"RegistrationForm.ERR_EMAIL_INVALID\":\n errMsg = (0, _languageHandler._t)('This doesn\\'t look like a valid email address.');\n break;\n case \"RegistrationForm.ERR_PHONE_NUMBER_INVALID\":\n errMsg = (0, _languageHandler._t)('This doesn\\'t look like a valid phone number.');\n break;\n case \"RegistrationForm.ERR_MISSING_EMAIL\":\n errMsg = (0, _languageHandler._t)('An email address is required to register on this homeserver.');\n break;\n case \"RegistrationForm.ERR_MISSING_PHONE_NUMBER\":\n errMsg = (0, _languageHandler._t)('A phone number is required to register on this homeserver.');\n break;\n case \"RegistrationForm.ERR_USERNAME_INVALID\":\n errMsg = (0, _languageHandler._t)(\"Only use lower case letters, numbers and '=_-./'\");\n break;\n case \"RegistrationForm.ERR_USERNAME_BLANK\":\n errMsg = (0, _languageHandler._t)('You need to enter a user name.');\n break;\n default:\n console.error(\"Unknown error code: %s\", errCode);\n errMsg = (0, _languageHandler._t)('An unknown error occurred.');\n break;\n }\n this.setState({\n errorText: errMsg\n });\n },\n\n onTeamSelected: function onTeamSelected(teamSelected) {\n if (!this._unmounted) {\n this.setState({ teamSelected: teamSelected });\n }\n },\n\n _makeRegisterRequest: function _makeRegisterRequest(auth) {\n // Only send the bind params if we're sending username / pw params\n // (Since we need to send no params at all to use the ones saved in the\n // session).\n var bindThreepids = this.state.formVals.password ? {\n email: true,\n msisdn: true\n } : {};\n\n return this._matrixClient.register(this.state.formVals.username, this.state.formVals.password, undefined, // session id: included in the auth dict already\n auth, bindThreepids, null);\n },\n\n _getUIAuthInputs: function _getUIAuthInputs() {\n return {\n emailAddress: this.state.formVals.email,\n phoneCountry: this.state.formVals.phoneCountry,\n phoneNumber: this.state.formVals.phoneNumber\n };\n },\n\n render: function render() {\n var LoginHeader = _index2.default.getComponent('login.LoginHeader');\n var LoginFooter = _index2.default.getComponent('login.LoginFooter');\n var LoginPage = _index2.default.getComponent('login.LoginPage');\n var InteractiveAuth = _index2.default.getComponent('structures.InteractiveAuth');\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n var ServerConfig = _index2.default.getComponent('views.login.ServerConfig');\n\n var theme = _SettingsStore2.default.getValue(\"theme\");\n\n var registerBody = void 0;\n if (this.state.doingUIAuth) {\n registerBody = _react2.default.createElement(InteractiveAuth, {\n matrixClient: this._matrixClient,\n makeRequest: this._makeRegisterRequest,\n onAuthFinished: this._onUIAuthFinished,\n inputs: this._getUIAuthInputs(),\n makeRegistrationUrl: this.props.makeRegistrationUrl,\n sessionId: this.props.sessionId,\n clientSecret: this.props.clientSecret,\n emailSid: this.props.idSid,\n poll: true\n });\n } else if (this.state.busy || this.state.teamServerBusy || !this.state.flows) {\n registerBody = _react2.default.createElement(Spinner, null);\n } else {\n var serverConfigSection = void 0;\n if (!_SdkConfig2.default.get()['disable_custom_urls']) {\n serverConfigSection = _react2.default.createElement(ServerConfig, { ref: 'serverConfig',\n withToggleButton: true,\n customHsUrl: this.props.customHsUrl,\n customIsUrl: this.props.customIsUrl,\n defaultHsUrl: this.props.defaultHsUrl,\n defaultIsUrl: this.props.defaultIsUrl,\n onServerConfigChange: this.onServerConfigChange,\n delayTimeMs: 1000\n });\n }\n registerBody = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(_RegistrationForm2.default, {\n defaultUsername: this.state.formVals.username,\n defaultEmail: this.state.formVals.email,\n defaultPhoneCountry: this.state.formVals.phoneCountry,\n defaultPhoneNumber: this.state.formVals.phoneNumber,\n defaultPassword: this.state.formVals.password,\n teamsConfig: this.state.teamsConfig,\n minPasswordLength: MIN_PASSWORD_LENGTH,\n onError: this.onFormValidationFailed,\n onRegisterClick: this.onFormSubmit,\n onTeamSelected: this.onTeamSelected,\n flows: this.state.flows\n }),\n serverConfigSection\n );\n }\n\n var header = void 0;\n var errorText = void 0;\n // FIXME: remove hardcoded Status team tweaks at some point\n var err = this.state.errorText || this.props.defaultServerDiscoveryError;\n if (theme === 'status' && err) {\n header = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_error' },\n err\n );\n } else {\n header = _react2.default.createElement(\n 'h2',\n null,\n (0, _languageHandler._t)('Create an account')\n );\n if (err) {\n errorText = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_error' },\n err\n );\n }\n }\n\n var signIn = void 0;\n if (!this.state.doingUIAuth) {\n signIn = _react2.default.createElement(\n 'a',\n { className: 'mx_Login_create', onClick: this.props.onLoginClick, href: '#' },\n theme === 'status' ? (0, _languageHandler._t)('Sign in') : (0, _languageHandler._t)('I already have an account')\n );\n }\n\n var LanguageSelector = _index2.default.getComponent('structures.login.LanguageSelector');\n\n return _react2.default.createElement(\n LoginPage,\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_box' },\n _react2.default.createElement(LoginHeader, {\n icon: this.state.teamSelected ? this.props.teamServerConfig.teamServerURL + \"/static/common/\" + this.state.teamSelected.domain + \"/icon.png\" : null\n }),\n header,\n registerBody,\n signIn,\n errorText,\n _react2.default.createElement(LanguageSelector, null),\n _react2.default.createElement(LoginFooter, null)\n )\n );\n }\n});\n//# sourceMappingURL=Registration.js.map","'use strict';\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _Avatar = require('../../../Avatar');\n\nvar _Avatar2 = _interopRequireDefault(_Avatar);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'BaseAvatar',\n\n propTypes: {\n name: _propTypes2.default.string.isRequired, // The name (first initial used as default)\n idName: _propTypes2.default.string, // ID for generating hash colours\n title: _propTypes2.default.string, // onHover title text\n url: _propTypes2.default.string, // highest priority of them all, shortcut to set in urls[0]\n urls: _propTypes2.default.array, // [highest_priority, ... , lowest_priority]\n width: _propTypes2.default.number,\n height: _propTypes2.default.number,\n // XXX resizeMethod not actually used.\n resizeMethod: _propTypes2.default.string,\n defaultToInitialLetter: _propTypes2.default.bool // true to add default url\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n width: 40,\n height: 40,\n resizeMethod: 'crop',\n defaultToInitialLetter: true\n };\n },\n\n getInitialState: function getInitialState() {\n return this._getState(this.props);\n },\n\n componentWillMount: function componentWillMount() {\n this.unmounted = false;\n this.context.matrixClient.on('sync', this.onClientSync);\n },\n componentWillUnmount: function componentWillUnmount() {\n this.unmounted = true;\n this.context.matrixClient.removeListener('sync', this.onClientSync);\n },\n\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n // work out if we need to call setState (if the image URLs array has changed)\n var newState = this._getState(nextProps);\n var newImageUrls = newState.imageUrls;\n var oldImageUrls = this.state.imageUrls;\n if (newImageUrls.length !== oldImageUrls.length) {\n this.setState(newState); // detected a new entry\n } else {\n // check each one to see if they are the same\n for (var i = 0; i < newImageUrls.length; i++) {\n if (oldImageUrls[i] !== newImageUrls[i]) {\n this.setState(newState); // detected a diff\n break;\n }\n }\n }\n },\n\n onClientSync: function onClientSync(syncState, prevState) {\n if (this.unmounted) return;\n\n // Consider the client reconnected if there is no error with syncing.\n // This means the state could be RECONNECTING, SYNCING, PREPARED or CATCHUP.\n var reconnected = syncState !== \"ERROR\" && prevState !== syncState;\n if (reconnected &&\n // Did we fall back?\n this.state.urlsIndex > 0) {\n // Start from the highest priority URL again\n this.setState({\n urlsIndex: 0\n });\n }\n },\n\n _getState: function _getState(props) {\n // work out the full set of urls to try to load. This is formed like so:\n // imageUrls: [ props.url, props.urls, default image ]\n\n var urls = props.urls || [];\n if (props.url) {\n urls.unshift(props.url); // put in urls[0]\n }\n\n var defaultImageUrl = null;\n if (props.defaultToInitialLetter) {\n defaultImageUrl = _Avatar2.default.defaultAvatarUrlForString(props.idName || props.name);\n urls.push(defaultImageUrl); // lowest priority\n }\n return {\n imageUrls: urls,\n defaultImageUrl: defaultImageUrl,\n urlsIndex: 0\n };\n },\n\n onError: function onError(ev) {\n var nextIndex = this.state.urlsIndex + 1;\n if (nextIndex < this.state.imageUrls.length) {\n // try the next one\n this.setState({\n urlsIndex: nextIndex\n });\n }\n },\n\n /**\n * returns the first (non-sigil) character of 'name',\n * converted to uppercase\n */\n _getInitialLetter: function _getInitialLetter(name) {\n if (name.length < 1) {\n return undefined;\n }\n\n var idx = 0;\n var initial = name[0];\n if ((initial === '@' || initial === '#' || initial === '+') && name[1]) {\n idx++;\n }\n\n // string.codePointAt(0) would do this, but that isn't supported by\n // some browsers (notably PhantomJS).\n var chars = 1;\n var first = name.charCodeAt(idx);\n\n // check if it’s the start of a surrogate pair\n if (first >= 0xD800 && first <= 0xDBFF && name[idx + 1]) {\n var second = name.charCodeAt(idx + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n chars++;\n }\n }\n\n var firstChar = name.substring(idx, idx + chars);\n return firstChar.toUpperCase();\n },\n\n render: function render() {\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var imageUrl = this.state.imageUrls[this.state.urlsIndex];\n\n var _props = this.props,\n name = _props.name,\n idName = _props.idName,\n title = _props.title,\n url = _props.url,\n urls = _props.urls,\n width = _props.width,\n height = _props.height,\n resizeMethod = _props.resizeMethod,\n defaultToInitialLetter = _props.defaultToInitialLetter,\n onClick = _props.onClick,\n otherProps = (0, _objectWithoutProperties3.default)(_props, ['name', 'idName', 'title', 'url', 'urls', 'width', 'height', 'resizeMethod', 'defaultToInitialLetter', 'onClick']);\n\n\n if (imageUrl === this.state.defaultImageUrl) {\n var initialLetter = this._getInitialLetter(name);\n var textNode = _react2.default.createElement(\n EmojiText,\n { className: 'mx_BaseAvatar_initial', 'aria-hidden': 'true',\n style: { fontSize: width * 0.65 + \"px\",\n width: width + \"px\",\n lineHeight: height + \"px\" }\n },\n initialLetter\n );\n var imgNode = _react2.default.createElement('img', { className: 'mx_BaseAvatar_image', src: imageUrl,\n alt: '', title: title, onError: this.onError,\n width: width, height: height });\n if (onClick != null) {\n return _react2.default.createElement(\n _AccessibleButton2.default,\n (0, _extends3.default)({ element: 'span', className: 'mx_BaseAvatar',\n onClick: onClick }, otherProps),\n textNode,\n imgNode\n );\n } else {\n return _react2.default.createElement(\n 'span',\n (0, _extends3.default)({ className: 'mx_BaseAvatar' }, otherProps),\n textNode,\n imgNode\n );\n }\n }\n if (onClick != null) {\n return _react2.default.createElement(_AccessibleButton2.default, (0, _extends3.default)({ className: 'mx_BaseAvatar mx_BaseAvatar_image',\n element: 'img',\n src: imageUrl,\n onClick: onClick,\n onError: this.onError,\n width: width, height: height,\n title: title, alt: ''\n }, otherProps));\n } else {\n return _react2.default.createElement('img', (0, _extends3.default)({ className: 'mx_BaseAvatar mx_BaseAvatar_image', src: imageUrl,\n onError: this.onError,\n width: width, height: height,\n title: title, alt: ''\n }, otherProps));\n }\n }\n});\n//# sourceMappingURL=BaseAvatar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'GroupAvatar',\n\n propTypes: {\n groupId: _propTypes2.default.string,\n groupName: _propTypes2.default.string,\n groupAvatarUrl: _propTypes2.default.string,\n width: _propTypes2.default.number,\n height: _propTypes2.default.number,\n resizeMethod: _propTypes2.default.string,\n onClick: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n width: 36,\n height: 36,\n resizeMethod: 'crop'\n };\n },\n\n getGroupAvatarUrl: function getGroupAvatarUrl() {\n return _MatrixClientPeg2.default.get().mxcUrlToHttp(this.props.groupAvatarUrl, this.props.width, this.props.height, this.props.resizeMethod);\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n // extract the props we use from props so we can pass any others through\n // should consider adding this as a global rule in js-sdk?\n /*eslint no-unused-vars: [\"error\", { \"ignoreRestSiblings\": true }]*/\n var _props = this.props,\n groupId = _props.groupId,\n groupAvatarUrl = _props.groupAvatarUrl,\n groupName = _props.groupName,\n otherProps = (0, _objectWithoutProperties3.default)(_props, ['groupId', 'groupAvatarUrl', 'groupName']);\n\n\n return _react2.default.createElement(BaseAvatar, (0, _extends3.default)({\n name: groupName || this.props.groupId[1],\n idName: this.props.groupId,\n url: this.getGroupAvatarUrl()\n }, otherProps));\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupAvatar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _MemberAvatar = require('../avatars/MemberAvatar');\n\nvar _MemberAvatar2 = _interopRequireDefault(_MemberAvatar);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _ContextualMenu = require('../../structures/ContextualMenu');\n\nvar ContextualMenu = _interopRequireWildcard(_ContextualMenu);\n\nvar _StatusMessageContextMenu = require('../context_menus/StatusMessageContextMenu');\n\nvar _StatusMessageContextMenu2 = _interopRequireDefault(_StatusMessageContextMenu);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MemberStatusMessageAvatar = function (_React$Component) {\n (0, _inherits3.default)(MemberStatusMessageAvatar, _React$Component);\n\n function MemberStatusMessageAvatar(props, context) {\n (0, _classCallCheck3.default)(this, MemberStatusMessageAvatar);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (MemberStatusMessageAvatar.__proto__ || (0, _getPrototypeOf2.default)(MemberStatusMessageAvatar)).call(this, props, context));\n\n _this._onRoomStateEvents = function (ev, state) {\n if (ev.getStateKey() !== _MatrixClientPeg2.default.get().getUserId()) return;\n if (ev.getType() !== \"im.vector.user_status\") return;\n // TODO: We should be relying on `this.props.member.user._unstable_statusMessage`\n // We don't currently because the js-sdk doesn't emit a specific event for this\n // change, and we don't want to race it. This should be improved when we rip out\n // the im.vector.user_status stuff and replace it with a complete solution.\n _this.setState({ message: ev.getContent()[\"status\"] });\n };\n\n _this._onClick = function (e) {\n e.stopPropagation();\n\n var elementRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = elementRect.left + window.pageXOffset - elementRect.width / 2 + 3;\n var chevronOffset = 12;\n var y = elementRect.top + elementRect.height / 2 + window.pageYOffset;\n y = y - (chevronOffset + 4); // where 4 is 1/4 the height of the chevron\n\n ContextualMenu.createMenu(_StatusMessageContextMenu2.default, {\n chevronOffset: chevronOffset,\n chevronFace: 'bottom',\n left: x,\n top: y,\n menuWidth: 190,\n user: _this.props.member.user\n });\n };\n\n return _this;\n }\n\n (0, _createClass3.default)(MemberStatusMessageAvatar, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n if (this.props.member.userId !== _MatrixClientPeg2.default.get().getUserId()) {\n throw new Error(\"Cannot use MemberStatusMessageAvatar on anyone but the logged in user\");\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n _MatrixClientPeg2.default.get().on(\"RoomState.events\", this._onRoomStateEvents);\n\n if (this.props.member.user) {\n this.setState({ message: this.props.member.user._unstable_statusMessage });\n } else {\n this.setState({ message: \"\" });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener(\"RoomState.events\", this._onRoomStateEvents);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n if (!_SettingsStore2.default.isFeatureEnabled(\"feature_custom_status\")) {\n return _react2.default.createElement(_MemberAvatar2.default, { member: this.props.member,\n width: this.props.width,\n height: this.props.height,\n resizeMethod: this.props.resizeMethod });\n }\n\n var hasStatus = this.props.member.user ? !!this.props.member.user._unstable_statusMessage : false;\n\n var classes = (0, _classnames2.default)({\n \"mx_MemberStatusMessageAvatar\": true,\n \"mx_MemberStatusMessageAvatar_hasStatus\": hasStatus\n });\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._onClick, className: classes, element: 'div' },\n _react2.default.createElement(_MemberAvatar2.default, { member: this.props.member,\n width: this.props.width,\n height: this.props.height,\n resizeMethod: this.props.resizeMethod })\n );\n }\n }]);\n return MemberStatusMessageAvatar;\n}(_react2.default.Component); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nMemberStatusMessageAvatar.propTypes = {\n member: _propTypes2.default.object.isRequired,\n width: _propTypes2.default.number,\n height: _propTypes2.default.number,\n resizeMethod: _propTypes2.default.string\n};\nMemberStatusMessageAvatar.defaultProps = {\n width: 40,\n height: 40,\n resizeMethod: 'crop'\n};\nexports.default = MemberStatusMessageAvatar;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MemberStatusMessageAvatar.js.map","\"use strict\";\n\nvar _extends2 = require(\"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require(\"babel-runtime/helpers/objectWithoutProperties\");\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require(\"matrix-js-sdk\");\n\nvar _MatrixClientPeg = require(\"../../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require(\"../../../Modal\");\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require(\"../../../index\");\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _DMRoomMap = require(\"../../../utils/DMRoomMap\");\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomAvatar',\n\n // Room may be left unset here, but if it is,\n // oobData.avatarUrl should be set (else there\n // would be nowhere to get the avatar from)\n propTypes: {\n room: _propTypes2.default.object,\n oobData: _propTypes2.default.object,\n width: _propTypes2.default.number,\n height: _propTypes2.default.number,\n resizeMethod: _propTypes2.default.string,\n viewAvatarOnClick: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n width: 36,\n height: 36,\n resizeMethod: 'crop',\n oobData: {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n urls: this.getImageUrls(this.props)\n };\n },\n\n componentWillMount: function componentWillMount() {\n _MatrixClientPeg2.default.get().on(\"RoomState.events\", this.onRoomStateEvents);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var cli = _MatrixClientPeg2.default.get();\n if (cli) {\n cli.removeListener(\"RoomState.events\", this.onRoomStateEvents);\n }\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n this.setState({\n urls: this.getImageUrls(newProps)\n });\n },\n\n onRoomStateEvents: function onRoomStateEvents(ev) {\n if (!this.props.room || ev.getRoomId() !== this.props.room.roomId || ev.getType() !== 'm.room.avatar') return;\n\n this.setState({\n urls: this.getImageUrls(this.props)\n });\n },\n\n getImageUrls: function getImageUrls(props) {\n return [_matrixJsSdk.ContentRepo.getHttpUriForMxc(_MatrixClientPeg2.default.get().getHomeserverUrl(), props.oobData.avatarUrl, Math.floor(props.width * window.devicePixelRatio), Math.floor(props.height * window.devicePixelRatio), props.resizeMethod), // highest priority\n this.getRoomAvatarUrl(props), this.getOneToOneAvatar(props)].filter(function (url) {\n return url != null && url != \"\";\n });\n },\n\n getRoomAvatarUrl: function getRoomAvatarUrl(props) {\n if (!props.room) return null;\n\n return props.room.getAvatarUrl(_MatrixClientPeg2.default.get().getHomeserverUrl(), Math.floor(props.width * window.devicePixelRatio), Math.floor(props.height * window.devicePixelRatio), props.resizeMethod, false);\n },\n\n getOneToOneAvatar: function getOneToOneAvatar(props) {\n var room = props.room;\n if (!room) {\n return null;\n }\n var otherMember = null;\n var otherUserId = _DMRoomMap2.default.shared().getUserIdForRoomId(room.roomId);\n if (otherUserId) {\n otherMember = room.getMember(otherUserId);\n } else {\n // if the room is not marked as a 1:1, but only has max 2 members\n // then still try to show any avatar (pref. other member)\n otherMember = room.getAvatarFallbackMember();\n }\n if (otherMember) {\n return otherMember.getAvatarUrl(_MatrixClientPeg2.default.get().getHomeserverUrl(), Math.floor(props.width * window.devicePixelRatio), Math.floor(props.height * window.devicePixelRatio), props.resizeMethod, false);\n }\n return null;\n },\n\n onRoomAvatarClick: function onRoomAvatarClick() {\n var avatarUrl = this.props.room.getAvatarUrl(_MatrixClientPeg2.default.get().getHomeserverUrl(), null, null, null, false);\n var ImageView = _index2.default.getComponent(\"elements.ImageView\");\n var params = {\n src: avatarUrl,\n name: this.props.room.name\n };\n\n _Modal2.default.createDialog(ImageView, params, \"mx_Dialog_lightbox\");\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n\n /*eslint no-unused-vars: [\"error\", { \"ignoreRestSiblings\": true }]*/\n var _props = this.props,\n room = _props.room,\n oobData = _props.oobData,\n viewAvatarOnClick = _props.viewAvatarOnClick,\n otherProps = (0, _objectWithoutProperties3.default)(_props, [\"room\", \"oobData\", \"viewAvatarOnClick\"]);\n\n\n var roomName = room ? room.name : oobData.name;\n\n return _react2.default.createElement(BaseAvatar, (0, _extends3.default)({}, otherProps, { name: roomName,\n idName: room ? room.roomId : null,\n urls: this.state.urls,\n onClick: this.props.viewAvatarOnClick ? this.onRoomAvatarClick : null }));\n }\n}); /*\n Copyright 2015, 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=RoomAvatar.js.map","/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * This component can be used to display generic HTML content in a contextual\n * menu.\n */\n\nvar GenericElementContextMenu = function (_React$Component) {\n (0, _inherits3.default)(GenericElementContextMenu, _React$Component);\n\n function GenericElementContextMenu(props) {\n (0, _classCallCheck3.default)(this, GenericElementContextMenu);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (GenericElementContextMenu.__proto__ || (0, _getPrototypeOf2.default)(GenericElementContextMenu)).call(this, props));\n\n _this.resize = _this.resize.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(GenericElementContextMenu, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.resize = this.resize.bind(this);\n window.addEventListener(\"resize\", this.resize);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n window.removeEventListener(\"resize\", this.resize);\n }\n }, {\n key: 'resize',\n value: function resize() {\n if (this.props.onResize) {\n this.props.onResize();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'div',\n null,\n this.props.element\n );\n }\n }]);\n return GenericElementContextMenu;\n}(_react2.default.Component);\n\nGenericElementContextMenu.PropTypes = {\n element: _propTypes2.default.element.isRequired,\n // Function to be called when the parent window is resized\n // This can be used to reposition or close the menu on resize and\n // ensure that it is not displayed in a stale position.\n onResize: _propTypes2.default.func\n};\nexports.default = GenericElementContextMenu;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GenericElementContextMenu.js.map","/*\nCopyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar GenericTextContextMenu = function (_React$Component) {\n (0, _inherits3.default)(GenericTextContextMenu, _React$Component);\n\n function GenericTextContextMenu() {\n (0, _classCallCheck3.default)(this, GenericTextContextMenu);\n return (0, _possibleConstructorReturn3.default)(this, (GenericTextContextMenu.__proto__ || (0, _getPrototypeOf2.default)(GenericTextContextMenu)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(GenericTextContextMenu, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'div',\n null,\n this.props.message\n );\n }\n }]);\n return GenericTextContextMenu;\n}(_react2.default.Component);\n\nGenericTextContextMenu.PropTypes = {\n message: _propTypes2.default.string.isRequired\n};\nexports.default = GenericTextContextMenu;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GenericTextContextMenu.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar GroupInviteTileContextMenu = function (_React$Component) {\n (0, _inherits3.default)(GroupInviteTileContextMenu, _React$Component);\n\n function GroupInviteTileContextMenu(props, context) {\n (0, _classCallCheck3.default)(this, GroupInviteTileContextMenu);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (GroupInviteTileContextMenu.__proto__ || (0, _getPrototypeOf2.default)(GroupInviteTileContextMenu)).call(this, props, context));\n\n _this._onClickReject = _this._onClickReject.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(GroupInviteTileContextMenu, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this._unmounted = false;\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: '_onClickReject',\n value: function _onClickReject() {\n var _this2 = this;\n\n var QuestionDialog = _index2.default.getComponent('dialogs.QuestionDialog');\n _Modal2.default.createTrackedDialog('Reject community invite', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Reject invitation'),\n description: (0, _languageHandler._t)('Are you sure you want to reject the invitation?'),\n onFinished: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(shouldLeave) {\n var Loader, modal, ErrorDialog;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (shouldLeave) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt('return');\n\n case 2:\n\n // FIXME: controller shouldn't be loading a view :(\n Loader = _index2.default.getComponent(\"elements.Spinner\");\n modal = _Modal2.default.createDialog(Loader, null, 'mx_Dialog_spinner');\n _context.prev = 4;\n _context.next = 7;\n return (0, _bluebird.resolve)(_GroupStore2.default.leaveGroup(_this2.props.group.groupId));\n\n case 7:\n _context.next = 14;\n break;\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context['catch'](4);\n\n console.error(\"Error rejecting community invite: \", _context.t0);\n ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n _Modal2.default.createTrackedDialog('Error rejecting invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Unable to reject invite\")\n });\n\n case 14:\n _context.prev = 14;\n\n modal.close();\n return _context.finish(14);\n\n case 17:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this2, [[4, 9, 14, 17]]);\n }));\n\n return function onFinished(_x) {\n return _ref.apply(this, arguments);\n };\n }()\n });\n\n // Close the context menu\n if (this.props.onFinished) {\n this.props.onFinished();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTileContextMenu_leave', onClick: this._onClickReject },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon', src: 'img/icon_context_delete.svg', width: '15', height: '15' }),\n (0, _languageHandler._t)('Reject')\n )\n );\n }\n }]);\n return GroupInviteTileContextMenu;\n}(_react2.default.Component); /*\n Copyright 2018 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nGroupInviteTileContextMenu.propTypes = {\n group: _propTypes2.default.instanceOf(_matrixJsSdk.Group).isRequired,\n /* callback called when the menu is dismissed */\n onFinished: _propTypes2.default.func\n};\nexports.default = GroupInviteTileContextMenu;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupInviteTileContextMenu.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _Resend = require('../../../Resend');\n\nvar _Resend2 = _interopRequireDefault(_Resend);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _matrixTo = require('../../../matrix-to');\n\nvar _HtmlUtils = require('../../../HtmlUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MessageContextMenu',\n\n propTypes: {\n /* the MatrixEvent associated with the context menu */\n mxEvent: _propTypes2.default.object.isRequired,\n\n /* an optional EventTileOps implementation that can be used to unhide preview widgets */\n eventTileOps: _propTypes2.default.object,\n\n /* an optional function to be called when the user clicks collapse thread, if not provided hide button */\n collapseReplyThread: _propTypes2.default.func,\n\n /* callback called when the menu is dismissed */\n onFinished: _propTypes2.default.func\n },\n\n getInitialState: function getInitialState() {\n return {\n canRedact: false,\n canPin: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n _MatrixClientPeg2.default.get().on('RoomMember.powerLevel', this._checkPermissions);\n this._checkPermissions();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var cli = _MatrixClientPeg2.default.get();\n if (cli) {\n cli.removeListener('RoomMember.powerLevel', this._checkPermissions);\n }\n },\n\n _checkPermissions: function _checkPermissions() {\n var cli = _MatrixClientPeg2.default.get();\n var room = cli.getRoom(this.props.mxEvent.getRoomId());\n\n var canRedact = room.currentState.maySendRedactionForEvent(this.props.mxEvent, cli.credentials.userId);\n var canPin = room.currentState.mayClientSendStateEvent('m.room.pinned_events', cli);\n\n // HACK: Intentionally say we can't pin if the user doesn't want to use the functionality\n if (!_SettingsStore2.default.isFeatureEnabled(\"feature_pinning\")) canPin = false;\n\n this.setState({ canRedact: canRedact, canPin: canPin });\n },\n\n _isPinned: function _isPinned() {\n var room = _MatrixClientPeg2.default.get().getRoom(this.props.mxEvent.getRoomId());\n var pinnedEvent = room.currentState.getStateEvents('m.room.pinned_events', '');\n if (!pinnedEvent) return false;\n return pinnedEvent.getContent().pinned.includes(this.props.mxEvent.getId());\n },\n\n onResendClick: function onResendClick() {\n _Resend2.default.resend(this.props.mxEvent);\n this.closeMenu();\n },\n\n onViewSourceClick: function onViewSourceClick() {\n var ViewSource = _index2.default.getComponent('structures.ViewSource');\n _Modal2.default.createTrackedDialog('View Event Source', '', ViewSource, {\n content: this.props.mxEvent.event\n }, 'mx_Dialog_viewsource');\n this.closeMenu();\n },\n\n onViewClearSourceClick: function onViewClearSourceClick() {\n var ViewSource = _index2.default.getComponent('structures.ViewSource');\n _Modal2.default.createTrackedDialog('View Clear Event Source', '', ViewSource, {\n // FIXME: _clearEvent is private\n content: this.props.mxEvent._clearEvent\n }, 'mx_Dialog_viewsource');\n this.closeMenu();\n },\n\n onRedactClick: function onRedactClick() {\n var _this = this;\n\n var ConfirmRedactDialog = _index2.default.getComponent(\"dialogs.ConfirmRedactDialog\");\n _Modal2.default.createTrackedDialog('Confirm Redact Dialog', '', ConfirmRedactDialog, {\n onFinished: function onFinished(proceed) {\n if (!proceed) return;\n\n var cli = _MatrixClientPeg2.default.get();\n cli.redactEvent(_this.props.mxEvent.getRoomId(), _this.props.mxEvent.getId()).catch(function (e) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n // display error message stating you couldn't delete this.\n var code = e.errcode || e.statusCode;\n _Modal2.default.createTrackedDialog('You cannot delete this message', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: (0, _languageHandler._t)('You cannot delete this message. (%(code)s)', { code: code })\n });\n }).done();\n }\n }, 'mx_Dialog_confirmredact');\n this.closeMenu();\n },\n\n onCancelSendClick: function onCancelSendClick() {\n _Resend2.default.removeFromQueue(this.props.mxEvent);\n this.closeMenu();\n },\n\n onForwardClick: function onForwardClick() {\n _dispatcher2.default.dispatch({\n action: 'forward_event',\n event: this.props.mxEvent\n });\n this.closeMenu();\n },\n\n onPinClick: function onPinClick() {\n var _this2 = this;\n\n _MatrixClientPeg2.default.get().getStateEvent(this.props.mxEvent.getRoomId(), 'm.room.pinned_events', '').catch(function (e) {\n // Intercept the Event Not Found error and fall through the promise chain with no event.\n if (e.errcode === \"M_NOT_FOUND\") return null;\n throw e;\n }).then(function (event) {\n var eventIds = (event ? event.pinned : []) || [];\n if (!eventIds.includes(_this2.props.mxEvent.getId())) {\n // Not pinned - add\n eventIds.push(_this2.props.mxEvent.getId());\n } else {\n // Pinned - remove\n eventIds.splice(eventIds.indexOf(_this2.props.mxEvent.getId()), 1);\n }\n\n var cli = _MatrixClientPeg2.default.get();\n cli.sendStateEvent(_this2.props.mxEvent.getRoomId(), 'm.room.pinned_events', { pinned: eventIds }, '');\n });\n this.closeMenu();\n },\n\n closeMenu: function closeMenu() {\n if (this.props.onFinished) this.props.onFinished();\n },\n\n onUnhidePreviewClick: function onUnhidePreviewClick() {\n if (this.props.eventTileOps) {\n this.props.eventTileOps.unhideWidget();\n }\n this.closeMenu();\n },\n\n onQuoteClick: function onQuoteClick() {\n _dispatcher2.default.dispatch({\n action: 'quote',\n event: this.props.mxEvent\n });\n this.closeMenu();\n },\n\n onPermalinkClick: function onPermalinkClick(e) {\n e.preventDefault();\n var ShareDialog = _index2.default.getComponent(\"dialogs.ShareDialog\");\n _Modal2.default.createTrackedDialog('share room message dialog', '', ShareDialog, {\n target: this.props.mxEvent\n });\n this.closeMenu();\n },\n\n onReplyClick: function onReplyClick() {\n _dispatcher2.default.dispatch({\n action: 'reply_to_event',\n event: this.props.mxEvent\n });\n this.closeMenu();\n },\n\n onCollapseReplyThreadClick: function onCollapseReplyThreadClick() {\n this.props.collapseReplyThread();\n this.closeMenu();\n },\n\n render: function render() {\n var eventStatus = this.props.mxEvent.status;\n var resendButton = void 0;\n var redactButton = void 0;\n var cancelButton = void 0;\n var forwardButton = void 0;\n var pinButton = void 0;\n var viewClearSourceButton = void 0;\n var unhidePreviewButton = void 0;\n var externalURLButton = void 0;\n var quoteButton = void 0;\n var replyButton = void 0;\n var collapseReplyThread = void 0;\n\n // status is SENT before remote-echo, null after\n var isSent = !eventStatus || eventStatus === _matrixJsSdk.EventStatus.SENT;\n\n if (eventStatus === _matrixJsSdk.EventStatus.NOT_SENT) {\n resendButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onResendClick },\n (0, _languageHandler._t)('Resend')\n );\n }\n\n if (isSent && this.state.canRedact) {\n redactButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onRedactClick },\n (0, _languageHandler._t)('Remove')\n );\n }\n\n if (eventStatus === _matrixJsSdk.EventStatus.QUEUED || eventStatus === _matrixJsSdk.EventStatus.NOT_SENT) {\n cancelButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onCancelSendClick },\n (0, _languageHandler._t)('Cancel Sending')\n );\n }\n\n if (isSent && this.props.mxEvent.getType() === 'm.room.message') {\n var content = this.props.mxEvent.getContent();\n if (content.msgtype && content.msgtype !== 'm.bad.encrypted' && content.hasOwnProperty('body')) {\n forwardButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onForwardClick },\n (0, _languageHandler._t)('Forward Message')\n );\n\n replyButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onReplyClick },\n (0, _languageHandler._t)('Reply')\n );\n\n if (this.state.canPin) {\n pinButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onPinClick },\n this._isPinned() ? (0, _languageHandler._t)('Unpin Message') : (0, _languageHandler._t)('Pin Message')\n );\n }\n }\n }\n\n var viewSourceButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onViewSourceClick },\n (0, _languageHandler._t)('View Source')\n );\n\n if (this.props.mxEvent.getType() !== this.props.mxEvent.getWireType()) {\n viewClearSourceButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onViewClearSourceClick },\n (0, _languageHandler._t)('View Decrypted Source')\n );\n }\n\n if (this.props.eventTileOps) {\n if (this.props.eventTileOps.isWidgetHidden()) {\n unhidePreviewButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onUnhidePreviewClick },\n (0, _languageHandler._t)('Unhide Preview')\n );\n }\n }\n\n // XXX: if we use room ID, we should also include a server where the event can be found (other than in the domain of the event ID)\n var permalinkButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field' },\n _react2.default.createElement(\n 'a',\n { href: (0, _matrixTo.makeEventPermalink)(this.props.mxEvent.getRoomId(), this.props.mxEvent.getId()),\n target: '_blank', rel: 'noopener', onClick: this.onPermalinkClick },\n (0, _languageHandler._t)('Share Message')\n )\n );\n\n if (this.props.eventTileOps && this.props.eventTileOps.getInnerText) {\n quoteButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onQuoteClick },\n (0, _languageHandler._t)('Quote')\n );\n }\n\n // Bridges can provide a 'external_url' to link back to the source.\n if (typeof this.props.mxEvent.event.content.external_url === \"string\" && (0, _HtmlUtils.isUrlPermitted)(this.props.mxEvent.event.content.external_url)) {\n externalURLButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field' },\n _react2.default.createElement(\n 'a',\n { href: this.props.mxEvent.event.content.external_url,\n rel: 'noopener', target: '_blank', onClick: this.closeMenu },\n (0, _languageHandler._t)('Source URL')\n )\n );\n }\n\n if (this.props.collapseReplyThread) {\n collapseReplyThread = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onCollapseReplyThreadClick },\n (0, _languageHandler._t)('Collapse Reply Thread')\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n resendButton,\n redactButton,\n cancelButton,\n forwardButton,\n pinButton,\n viewSourceButton,\n viewClearSourceButton,\n unhidePreviewButton,\n permalinkButton,\n quoteButton,\n replyButton,\n externalURLButton,\n collapseReplyThread\n );\n }\n});\n//# sourceMappingURL=MessageContextMenu.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _DMRoomMap = require('../../../utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _Rooms = require('../../../Rooms');\n\nvar Rooms = _interopRequireWildcard(_Rooms);\n\nvar _RoomNotifs = require('../../../RoomNotifs');\n\nvar RoomNotifs = _interopRequireWildcard(_RoomNotifs);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _RoomListActions = require('../../../actions/RoomListActions');\n\nvar _RoomListActions2 = _interopRequireDefault(_RoomListActions);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomTileContextMenu',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired,\n /* callback called when the menu is dismissed */\n onFinished: _propTypes2.default.func\n },\n\n getInitialState: function getInitialState() {\n var dmRoomMap = new _DMRoomMap2.default(_MatrixClientPeg2.default.get());\n return {\n roomNotifState: RoomNotifs.getRoomNotifsState(this.props.room.roomId),\n isFavourite: this.props.room.tags.hasOwnProperty(\"m.favourite\"),\n isLowPriority: this.props.room.tags.hasOwnProperty(\"m.lowpriority\"),\n isDirectMessage: Boolean(dmRoomMap.getUserIdForRoomId(this.props.room.roomId))\n };\n },\n\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n _toggleTag: function _toggleTag(tagNameOn, tagNameOff) {\n var _this = this;\n\n if (!_MatrixClientPeg2.default.get().isGuest()) {\n _bluebird2.default.delay(500).then(function () {\n _dispatcher2.default.dispatch(_RoomListActions2.default.tagRoom(_MatrixClientPeg2.default.get(), _this.props.room, tagNameOff, tagNameOn, undefined, 0), true);\n\n _this.props.onFinished();\n });\n }\n },\n\n _onClickFavourite: function _onClickFavourite() {\n // Tag room as 'Favourite'\n if (!this.state.isFavourite && this.state.isLowPriority) {\n this.setState({\n isFavourite: true,\n isLowPriority: false\n });\n this._toggleTag(\"m.favourite\", \"m.lowpriority\");\n } else if (this.state.isFavourite) {\n this.setState({ isFavourite: false });\n this._toggleTag(null, \"m.favourite\");\n } else if (!this.state.isFavourite) {\n this.setState({ isFavourite: true });\n this._toggleTag(\"m.favourite\");\n }\n },\n\n _onClickLowPriority: function _onClickLowPriority() {\n // Tag room as 'Low Priority'\n if (!this.state.isLowPriority && this.state.isFavourite) {\n this.setState({\n isFavourite: false,\n isLowPriority: true\n });\n this._toggleTag(\"m.lowpriority\", \"m.favourite\");\n } else if (this.state.isLowPriority) {\n this.setState({ isLowPriority: false });\n this._toggleTag(null, \"m.lowpriority\");\n } else if (!this.state.isLowPriority) {\n this.setState({ isLowPriority: true });\n this._toggleTag(\"m.lowpriority\");\n }\n },\n\n _onClickDM: function _onClickDM() {\n var _this2 = this;\n\n if (_MatrixClientPeg2.default.get().isGuest()) return;\n\n var newIsDirectMessage = !this.state.isDirectMessage;\n this.setState({\n isDirectMessage: newIsDirectMessage\n });\n\n Rooms.guessAndSetDMRoom(this.props.room, newIsDirectMessage).delay(500).finally(function () {\n // Close the context menu\n if (_this2.props.onFinished) {\n _this2.props.onFinished();\n }\n }, function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to set Direct Message status of room', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to set Direct Message status of room'),\n description: err && err.message ? err.message : (0, _languageHandler._t)('Operation failed')\n });\n });\n },\n\n _onClickLeave: function _onClickLeave() {\n // Leave room\n _dispatcher2.default.dispatch({\n action: 'leave_room',\n room_id: this.props.room.roomId\n });\n\n // Close the context menu\n if (this.props.onFinished) {\n this.props.onFinished();\n }\n },\n\n _onClickReject: function _onClickReject() {\n _dispatcher2.default.dispatch({\n action: 'reject_invite',\n room_id: this.props.room.roomId\n });\n\n // Close the context menu\n if (this.props.onFinished) {\n this.props.onFinished();\n }\n },\n\n _onClickForget: function _onClickForget() {\n // FIXME: duplicated with RoomSettings (and dead code in RoomView)\n _MatrixClientPeg2.default.get().forget(this.props.room.roomId).done(function () {\n _dispatcher2.default.dispatch({ action: 'view_next_room' });\n }, function (err) {\n var errCode = err.errcode || (0, _languageHandler._td)(\"unknown error code\");\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to forget room', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to forget room %(errCode)s', { errCode: errCode }),\n description: err && err.message ? err.message : (0, _languageHandler._t)('Operation failed')\n });\n });\n\n // Close the context menu\n if (this.props.onFinished) {\n this.props.onFinished();\n }\n },\n\n _saveNotifState: function _saveNotifState(newState) {\n var _this3 = this;\n\n if (_MatrixClientPeg2.default.get().isGuest()) return;\n\n var oldState = this.state.roomNotifState;\n var roomId = this.props.room.roomId;\n\n this.setState({\n roomNotifState: newState\n });\n RoomNotifs.setRoomNotifsState(roomId, newState).done(function () {\n // delay slightly so that the user can see their state change\n // before closing the menu\n return _bluebird2.default.delay(500).then(function () {\n if (_this3._unmounted) return;\n // Close the context menu\n if (_this3.props.onFinished) {\n _this3.props.onFinished();\n }\n });\n }, function (error) {\n // TODO: some form of error notification to the user\n // to inform them that their state change failed.\n // For now we at least set the state back\n if (_this3._unmounted) return;\n _this3.setState({\n roomNotifState: oldState\n });\n });\n },\n\n _onClickAlertMe: function _onClickAlertMe() {\n this._saveNotifState(RoomNotifs.ALL_MESSAGES_LOUD);\n },\n\n _onClickAllNotifs: function _onClickAllNotifs() {\n this._saveNotifState(RoomNotifs.ALL_MESSAGES);\n },\n\n _onClickMentions: function _onClickMentions() {\n this._saveNotifState(RoomNotifs.MENTIONS_ONLY);\n },\n\n _onClickMute: function _onClickMute() {\n this._saveNotifState(RoomNotifs.MUTE);\n },\n\n _renderNotifMenu: function _renderNotifMenu() {\n var alertMeClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_notif_field': true,\n 'mx_RoomTileContextMenu_notif_fieldSet': this.state.roomNotifState == RoomNotifs.ALL_MESSAGES_LOUD\n });\n\n var allNotifsClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_notif_field': true,\n 'mx_RoomTileContextMenu_notif_fieldSet': this.state.roomNotifState == RoomNotifs.ALL_MESSAGES\n });\n\n var mentionsClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_notif_field': true,\n 'mx_RoomTileContextMenu_notif_fieldSet': this.state.roomNotifState == RoomNotifs.MENTIONS_ONLY\n });\n\n var muteNotifsClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_notif_field': true,\n 'mx_RoomTileContextMenu_notif_fieldSet': this.state.roomNotifState == RoomNotifs.MUTE\n });\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTileContextMenu_notif_picker' },\n _react2.default.createElement('img', { src: 'img/notif-slider.svg', width: '20', height: '107' })\n ),\n _react2.default.createElement(\n 'div',\n { className: alertMeClasses, onClick: this._onClickAlertMe },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_activeIcon', src: 'img/notif-active.svg', width: '12', height: '12' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_icon mx_filterFlipColor', src: 'img/icon-context-mute-off-copy.svg', width: '16', height: '12' }),\n (0, _languageHandler._t)('All messages (noisy)')\n ),\n _react2.default.createElement(\n 'div',\n { className: allNotifsClasses, onClick: this._onClickAllNotifs },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_activeIcon', src: 'img/notif-active.svg', width: '12', height: '12' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_icon mx_filterFlipColor', src: 'img/icon-context-mute-off.svg', width: '16', height: '12' }),\n (0, _languageHandler._t)('All messages')\n ),\n _react2.default.createElement(\n 'div',\n { className: mentionsClasses, onClick: this._onClickMentions },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_activeIcon', src: 'img/notif-active.svg', width: '12', height: '12' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_icon mx_filterFlipColor', src: 'img/icon-context-mute-mentions.svg', width: '16', height: '12' }),\n (0, _languageHandler._t)('Mentions only')\n ),\n _react2.default.createElement(\n 'div',\n { className: muteNotifsClasses, onClick: this._onClickMute },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_activeIcon', src: 'img/notif-active.svg', width: '12', height: '12' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_icon mx_filterFlipColor', src: 'img/icon-context-mute.svg', width: '16', height: '12' }),\n (0, _languageHandler._t)('Mute')\n )\n );\n },\n\n _renderLeaveMenu: function _renderLeaveMenu(membership) {\n if (!membership) {\n return null;\n }\n\n var leaveClickHandler = null;\n var leaveText = null;\n\n switch (membership) {\n case \"join\":\n leaveClickHandler = this._onClickLeave;\n leaveText = (0, _languageHandler._t)('Leave');\n break;\n case \"leave\":\n case \"ban\":\n leaveClickHandler = this._onClickForget;\n leaveText = (0, _languageHandler._t)('Forget');\n break;\n case \"invite\":\n leaveClickHandler = this._onClickReject;\n leaveText = (0, _languageHandler._t)('Reject');\n break;\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTileContextMenu_leave', onClick: leaveClickHandler },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon', src: 'img/icon_context_delete.svg', width: '15', height: '15' }),\n leaveText\n )\n );\n },\n\n _renderRoomTagMenu: function _renderRoomTagMenu() {\n var favouriteClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_tag_field': true,\n 'mx_RoomTileContextMenu_tag_fieldSet': this.state.isFavourite,\n 'mx_RoomTileContextMenu_tag_fieldDisabled': false\n });\n\n var lowPriorityClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_tag_field': true,\n 'mx_RoomTileContextMenu_tag_fieldSet': this.state.isLowPriority,\n 'mx_RoomTileContextMenu_tag_fieldDisabled': false\n });\n\n var dmClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_tag_field': true,\n 'mx_RoomTileContextMenu_tag_fieldSet': this.state.isDirectMessage,\n 'mx_RoomTileContextMenu_tag_fieldDisabled': false\n });\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: favouriteClasses, onClick: this._onClickFavourite },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon', src: 'img/icon_context_fave.svg', width: '15', height: '15' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon_set', src: 'img/icon_context_fave_on.svg', width: '15', height: '15' }),\n (0, _languageHandler._t)('Favourite')\n ),\n _react2.default.createElement(\n 'div',\n { className: lowPriorityClasses, onClick: this._onClickLowPriority },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon', src: 'img/icon_context_low.svg', width: '15', height: '15' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon_set', src: 'img/icon_context_low_on.svg', width: '15', height: '15' }),\n (0, _languageHandler._t)('Low Priority')\n ),\n _react2.default.createElement(\n 'div',\n { className: dmClasses, onClick: this._onClickDM },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon', src: 'img/icon_context_person.svg', width: '15', height: '15' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon_set', src: 'img/icon_context_person_on.svg', width: '15', height: '15' }),\n (0, _languageHandler._t)('Direct Chat')\n )\n );\n },\n\n render: function render() {\n var myMembership = this.props.room.getMyMembership();\n\n // Can't set notif level or tags on non-join rooms\n if (myMembership !== 'join') {\n return this._renderLeaveMenu(myMembership);\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n this._renderNotifMenu(),\n _react2.default.createElement('hr', { className: 'mx_RoomTileContextMenu_separator' }),\n this._renderLeaveMenu(myMembership),\n _react2.default.createElement('hr', { className: 'mx_RoomTileContextMenu_separator' }),\n this._renderRoomTagMenu()\n );\n }\n});\n//# sourceMappingURL=RoomTileContextMenu.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _TagOrderActions = require('../../../actions/TagOrderActions');\n\nvar _TagOrderActions2 = _interopRequireDefault(_TagOrderActions);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TagTileContextMenu = function (_React$Component) {\n (0, _inherits3.default)(TagTileContextMenu, _React$Component);\n\n function TagTileContextMenu() {\n (0, _classCallCheck3.default)(this, TagTileContextMenu);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (TagTileContextMenu.__proto__ || (0, _getPrototypeOf2.default)(TagTileContextMenu)).call(this));\n\n _this._onViewCommunityClick = _this._onViewCommunityClick.bind(_this);\n _this._onRemoveClick = _this._onRemoveClick.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(TagTileContextMenu, [{\n key: '_onViewCommunityClick',\n value: function _onViewCommunityClick() {\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: this.props.tag\n });\n this.props.onFinished();\n }\n }, {\n key: '_onRemoveClick',\n value: function _onRemoveClick() {\n _dispatcher2.default.dispatch(_TagOrderActions2.default.removeTag(\n // XXX: Context menus don't have a MatrixClient context\n _MatrixClientPeg2.default.get(), this.props.tag));\n this.props.onFinished();\n }\n }, {\n key: 'render',\n value: function render() {\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_TagTileContextMenu_item', onClick: this._onViewCommunityClick },\n _react2.default.createElement(TintableSvg, {\n className: 'mx_TagTileContextMenu_item_icon',\n src: 'img/icons-groups.svg',\n width: '15',\n height: '15'\n }),\n (0, _languageHandler._t)('View Community')\n ),\n _react2.default.createElement('hr', { className: 'mx_TagTileContextMenu_separator' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_TagTileContextMenu_item', onClick: this._onRemoveClick },\n _react2.default.createElement('img', { className: 'mx_TagTileContextMenu_item_icon', src: 'img/icon_context_delete.svg', width: '15', height: '15' }),\n (0, _languageHandler._t)('Remove')\n )\n );\n }\n }]);\n return TagTileContextMenu;\n}(_react2.default.Component); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nTagTileContextMenu.propTypes = {\n tag: _propTypes2.default.string.isRequired,\n /* callback called when the menu is dismissed */\n onFinished: _propTypes2.default.func.isRequired\n};\nexports.default = TagTileContextMenu;\nmodule.exports = exports['default'];\n//# sourceMappingURL=TagTileContextMenu.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'CreateRoomButton',\n propTypes: {\n onCreateRoom: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onCreateRoom: function onCreateRoom() {}\n };\n },\n\n onClick: function onClick() {\n this.props.onCreateRoom();\n },\n\n render: function render() {\n return _react2.default.createElement(\n 'button',\n { className: 'mx_CreateRoomButton', onClick: this.onClick },\n (0, _languageHandler._t)(\"Create Room\")\n );\n }\n});\n//# sourceMappingURL=CreateRoomButton.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nvar Presets = {\n PrivateChat: \"private_chat\",\n PublicChat: \"public_chat\",\n Custom: \"custom\"\n};\n\nmodule.exports = React.createClass({\n displayName: 'CreateRoomPresets',\n propTypes: {\n onChange: _propTypes2.default.func,\n preset: _propTypes2.default.string\n },\n\n Presets: Presets,\n\n getDefaultProps: function getDefaultProps() {\n return {\n onChange: function onChange() {}\n };\n },\n\n onValueChanged: function onValueChanged(ev) {\n this.props.onChange(ev.target.value);\n },\n\n render: function render() {\n return React.createElement(\n 'select',\n { className: 'mx_Presets', onChange: this.onValueChanged, value: this.props.preset },\n React.createElement(\n 'option',\n { value: this.Presets.PrivateChat },\n (0, _languageHandler._t)(\"Private Chat\")\n ),\n React.createElement(\n 'option',\n { value: this.Presets.PublicChat },\n (0, _languageHandler._t)(\"Public Chat\")\n ),\n React.createElement(\n 'option',\n { value: this.Presets.Custom },\n (0, _languageHandler._t)(\"Custom\")\n )\n );\n }\n});\n//# sourceMappingURL=Presets.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require('react');\n\n\nmodule.exports = React.createClass({\n displayName: 'RoomAlias',\n propTypes: {\n // Specifying a homeserver will make magical things happen when you,\n // e.g. start typing in the room alias box.\n homeserver: _propTypes2.default.string,\n alias: _propTypes2.default.string,\n onChange: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onChange: function onChange() {},\n alias: ''\n };\n },\n\n getAliasLocalpart: function getAliasLocalpart() {\n var room_alias = this.props.alias;\n\n if (room_alias && this.props.homeserver) {\n var suffix = \":\" + this.props.homeserver;\n if (room_alias.startsWith(\"#\") && room_alias.endsWith(suffix)) {\n room_alias = room_alias.slice(1, -suffix.length);\n }\n }\n\n return room_alias;\n },\n\n onValueChanged: function onValueChanged(ev) {\n this.props.onChange(ev.target.value);\n },\n\n onFocus: function onFocus(ev) {\n var target = ev.target;\n var curr_val = ev.target.value;\n\n if (this.props.homeserver) {\n if (curr_val == \"\") {\n var self = this;\n setTimeout(function () {\n target.value = \"#:\" + self.props.homeserver;\n target.setSelectionRange(1, 1);\n }, 0);\n } else {\n var suffix = \":\" + this.props.homeserver;\n setTimeout(function () {\n target.setSelectionRange(curr_val.startsWith(\"#\") ? 1 : 0, curr_val.endsWith(suffix) ? target.value.length - suffix.length : target.value.length);\n }, 0);\n }\n }\n },\n\n onBlur: function onBlur(ev) {\n var curr_val = ev.target.value;\n\n if (this.props.homeserver) {\n if (curr_val == \"#:\" + this.props.homeserver) {\n ev.target.value = \"\";\n return;\n }\n\n if (curr_val != \"\") {\n var new_val = ev.target.value;\n var suffix = \":\" + this.props.homeserver;\n if (!curr_val.startsWith(\"#\")) new_val = \"#\" + new_val;\n if (!curr_val.endsWith(suffix)) new_val = new_val + suffix;\n ev.target.value = new_val;\n }\n }\n },\n\n render: function render() {\n return React.createElement('input', { type: 'text', className: 'mx_RoomAlias', placeholder: (0, _languageHandler._t)(\"Alias (optional)\"),\n onChange: this.onValueChanged, onFocus: this.onFocus, onBlur: this.onBlur,\n value: this.props.alias });\n }\n});\n//# sourceMappingURL=RoomAlias.js.map","'use strict';\n\nvar _set = require('babel-runtime/core-js/set');\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _UserAddress = require('../../../UserAddress.js');\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _email = require('../../../email');\n\nvar Email = _interopRequireWildcard(_email);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TRUNCATE_QUERY_LIST = 40; /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017, 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar QUERY_USER_DIRECTORY_DEBOUNCE_MS = 200;\n\nvar addressTypeName = {\n 'mx-user-id': (0, _languageHandler._td)(\"Matrix ID\"),\n 'mx-room-id': (0, _languageHandler._td)(\"Matrix Room ID\"),\n 'email': (0, _languageHandler._td)(\"email address\")\n};\n\nmodule.exports = _react2.default.createClass({\n displayName: \"AddressPickerDialog\",\n\n propTypes: {\n title: _propTypes2.default.string.isRequired,\n description: _propTypes2.default.node,\n // Extra node inserted after picker input, dropdown and errors\n extraNode: _propTypes2.default.node,\n value: _propTypes2.default.string,\n placeholder: _propTypes2.default.string,\n roomId: _propTypes2.default.string,\n button: _propTypes2.default.string,\n focus: _propTypes2.default.bool,\n validAddressTypes: _propTypes2.default.arrayOf(_propTypes2.default.oneOf(_UserAddress.addressTypes)),\n onFinished: _propTypes2.default.func.isRequired,\n groupId: _propTypes2.default.string,\n // The type of entity to search for. Default: 'user'.\n pickerType: _propTypes2.default.oneOf(['user', 'room']),\n // Whether the current user should be included in the addresses returned. Only\n // applicable when pickerType is `user`. Default: false.\n includeSelf: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n value: \"\",\n focus: true,\n validAddressTypes: _UserAddress.addressTypes,\n pickerType: 'user',\n includeSelf: false\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n error: false,\n\n // List of UserAddressType objects representing\n // the list of addresses we're going to invite\n selectedList: [],\n\n // Whether a search is ongoing\n busy: false,\n // An error message generated during the user directory search\n searchError: null,\n // Whether the server supports the user_directory API\n serverSupportsUserDirectory: true,\n // The query being searched for\n query: \"\",\n // List of UserAddressType objects representing the set of\n // auto-completion results for the current search query.\n suggestedList: []\n };\n },\n\n componentDidMount: function componentDidMount() {\n if (this.props.focus) {\n // Set the cursor at the end of the text input\n this.refs.textinput.value = this.props.value;\n }\n },\n\n onButtonClick: function onButtonClick() {\n var selectedList = this.state.selectedList.slice();\n // Check the text input field to see if user has an unconverted address\n // If there is and it's valid add it to the local selectedList\n if (this.refs.textinput.value !== '') {\n selectedList = this._addInputToList();\n if (selectedList === null) return;\n }\n this.props.onFinished(true, selectedList);\n },\n\n onCancel: function onCancel() {\n this.props.onFinished(false);\n },\n\n onKeyDown: function onKeyDown(e) {\n if (e.keyCode === 27) {\n // escape\n e.stopPropagation();\n e.preventDefault();\n this.props.onFinished(false);\n } else if (e.keyCode === 38) {\n // up arrow\n e.stopPropagation();\n e.preventDefault();\n if (this.addressSelector) this.addressSelector.moveSelectionUp();\n } else if (e.keyCode === 40) {\n // down arrow\n e.stopPropagation();\n e.preventDefault();\n if (this.addressSelector) this.addressSelector.moveSelectionDown();\n } else if (this.state.suggestedList.length > 0 && (e.keyCode === 188 || e.keyCode === 13 || e.keyCode === 9)) {\n // comma or enter or tab\n e.stopPropagation();\n e.preventDefault();\n if (this.addressSelector) this.addressSelector.chooseSelection();\n } else if (this.refs.textinput.value.length === 0 && this.state.selectedList.length && e.keyCode === 8) {\n // backspace\n e.stopPropagation();\n e.preventDefault();\n this.onDismissed(this.state.selectedList.length - 1)();\n } else if (e.keyCode === 13) {\n // enter\n e.stopPropagation();\n e.preventDefault();\n if (this.refs.textinput.value === '') {\n // if there's nothing in the input box, submit the form\n this.onButtonClick();\n } else {\n this._addInputToList();\n }\n } else if (e.keyCode === 188 || e.keyCode === 9) {\n // comma or tab\n e.stopPropagation();\n e.preventDefault();\n this._addInputToList();\n }\n },\n\n onQueryChanged: function onQueryChanged(ev) {\n var _this = this;\n\n var query = ev.target.value;\n if (this.queryChangedDebouncer) {\n clearTimeout(this.queryChangedDebouncer);\n }\n // Only do search if there is something to search\n if (query.length > 0 && query !== '@' && query.length >= 2) {\n this.queryChangedDebouncer = setTimeout(function () {\n if (_this.props.pickerType === 'user') {\n if (_this.props.groupId) {\n _this._doNaiveGroupSearch(query);\n } else if (_this.state.serverSupportsUserDirectory) {\n _this._doUserDirectorySearch(query);\n } else {\n _this._doLocalSearch(query);\n }\n } else if (_this.props.pickerType === 'room') {\n if (_this.props.groupId) {\n _this._doNaiveGroupRoomSearch(query);\n } else {\n _this._doRoomSearch(query);\n }\n } else {\n console.error('Unknown pickerType', _this.props.pickerType);\n }\n }, QUERY_USER_DIRECTORY_DEBOUNCE_MS);\n } else {\n this.setState({\n suggestedList: [],\n query: \"\",\n searchError: null\n });\n }\n },\n\n onDismissed: function onDismissed(index) {\n var _this2 = this;\n\n return function () {\n var selectedList = _this2.state.selectedList.slice();\n selectedList.splice(index, 1);\n _this2.setState({\n selectedList: selectedList,\n suggestedList: [],\n query: \"\"\n });\n if (_this2._cancelThreepidLookup) _this2._cancelThreepidLookup();\n };\n },\n\n onClick: function onClick(index) {\n var _this3 = this;\n\n return function () {\n _this3.onSelected(index);\n };\n },\n\n onSelected: function onSelected(index) {\n var selectedList = this.state.selectedList.slice();\n selectedList.push(this.state.suggestedList[index]);\n this.setState({\n selectedList: selectedList,\n suggestedList: [],\n query: \"\"\n });\n if (this._cancelThreepidLookup) this._cancelThreepidLookup();\n },\n\n _doNaiveGroupSearch: function _doNaiveGroupSearch(query) {\n var _this4 = this;\n\n var lowerCaseQuery = query.toLowerCase();\n this.setState({\n busy: true,\n query: query,\n searchError: null\n });\n _MatrixClientPeg2.default.get().getGroupUsers(this.props.groupId).then(function (resp) {\n var results = [];\n resp.chunk.forEach(function (u) {\n var userIdMatch = u.user_id.toLowerCase().includes(lowerCaseQuery);\n var displayNameMatch = (u.displayname || '').toLowerCase().includes(lowerCaseQuery);\n if (!(userIdMatch || displayNameMatch)) {\n return;\n }\n results.push({\n user_id: u.user_id,\n avatar_url: u.avatar_url,\n display_name: u.displayname\n });\n });\n _this4._processResults(results, query);\n }).catch(function (err) {\n console.error('Error whilst searching group rooms: ', err);\n _this4.setState({\n searchError: err.errcode ? err.message : (0, _languageHandler._t)('Something went wrong!')\n });\n }).done(function () {\n _this4.setState({\n busy: false\n });\n });\n },\n\n _doNaiveGroupRoomSearch: function _doNaiveGroupRoomSearch(query) {\n var lowerCaseQuery = query.toLowerCase();\n var results = [];\n _GroupStore2.default.getGroupRooms(this.props.groupId).forEach(function (r) {\n var nameMatch = (r.name || '').toLowerCase().includes(lowerCaseQuery);\n var topicMatch = (r.topic || '').toLowerCase().includes(lowerCaseQuery);\n var aliasMatch = (r.canonical_alias || '').toLowerCase().includes(lowerCaseQuery);\n if (!(nameMatch || topicMatch || aliasMatch)) {\n return;\n }\n results.push({\n room_id: r.room_id,\n avatar_url: r.avatar_url,\n name: r.name || r.canonical_alias\n });\n });\n this._processResults(results, query);\n this.setState({\n busy: false\n });\n },\n\n _doRoomSearch: function _doRoomSearch(query) {\n var lowerCaseQuery = query.toLowerCase();\n var rooms = _MatrixClientPeg2.default.get().getRooms();\n var results = [];\n rooms.forEach(function (room) {\n var rank = Infinity;\n var nameEvent = room.currentState.getStateEvents('m.room.name', '');\n var name = nameEvent ? nameEvent.getContent().name : '';\n var canonicalAlias = room.getCanonicalAlias();\n var aliasEvents = room.currentState.getStateEvents('m.room.aliases');\n var aliases = aliasEvents.map(function (ev) {\n return ev.getContent().aliases;\n }).reduce(function (a, b) {\n return a.concat(b);\n }, []);\n\n var nameMatch = (name || '').toLowerCase().includes(lowerCaseQuery);\n var aliasMatch = false;\n var shortestMatchingAliasLength = Infinity;\n aliases.forEach(function (alias) {\n if ((alias || '').toLowerCase().includes(lowerCaseQuery)) {\n aliasMatch = true;\n if (shortestMatchingAliasLength > alias.length) {\n shortestMatchingAliasLength = alias.length;\n }\n }\n });\n\n if (!(nameMatch || aliasMatch)) {\n return;\n }\n\n if (aliasMatch) {\n // A shorter matching alias will give a better rank\n rank = shortestMatchingAliasLength;\n }\n\n var avatarEvent = room.currentState.getStateEvents('m.room.avatar', '');\n var avatarUrl = avatarEvent ? avatarEvent.getContent().url : undefined;\n\n results.push({\n rank: rank,\n room_id: room.roomId,\n avatar_url: avatarUrl,\n name: name || canonicalAlias || aliases[0] || (0, _languageHandler._t)('Unnamed Room')\n });\n });\n\n // Sort by rank ascending (a high rank being less relevant)\n var sortedResults = results.sort(function (a, b) {\n return a.rank - b.rank;\n });\n\n this._processResults(sortedResults, query);\n this.setState({\n busy: false\n });\n },\n\n _doUserDirectorySearch: function _doUserDirectorySearch(query) {\n var _this5 = this;\n\n this.setState({\n busy: true,\n query: query,\n searchError: null\n });\n _MatrixClientPeg2.default.get().searchUserDirectory({\n term: query\n }).then(function (resp) {\n // The query might have changed since we sent the request, so ignore\n // responses for anything other than the latest query.\n if (_this5.state.query !== query) {\n return;\n }\n _this5._processResults(resp.results, query);\n }).catch(function (err) {\n console.error('Error whilst searching user directory: ', err);\n _this5.setState({\n searchError: err.errcode ? err.message : (0, _languageHandler._t)('Something went wrong!')\n });\n if (err.errcode === 'M_UNRECOGNIZED') {\n _this5.setState({\n serverSupportsUserDirectory: false\n });\n // Do a local search immediately\n _this5._doLocalSearch(query);\n }\n }).done(function () {\n _this5.setState({\n busy: false\n });\n });\n },\n\n _doLocalSearch: function _doLocalSearch(query) {\n this.setState({\n query: query,\n searchError: null\n });\n var queryLowercase = query.toLowerCase();\n var results = [];\n _MatrixClientPeg2.default.get().getUsers().forEach(function (user) {\n if (user.userId.toLowerCase().indexOf(queryLowercase) === -1 && user.displayName.toLowerCase().indexOf(queryLowercase) === -1) {\n return;\n }\n\n // Put results in the format of the new API\n results.push({\n user_id: user.userId,\n display_name: user.displayName,\n avatar_url: user.avatarUrl\n });\n });\n this._processResults(results, query);\n },\n\n _processResults: function _processResults(results, query) {\n var _this6 = this;\n\n var suggestedList = [];\n results.forEach(function (result) {\n if (result.room_id) {\n suggestedList.push({\n addressType: 'mx-room-id',\n address: result.room_id,\n displayName: result.name,\n avatarMxc: result.avatar_url,\n isKnown: true\n });\n return;\n }\n if (!_this6.props.includeSelf && result.user_id === _MatrixClientPeg2.default.get().credentials.userId) {\n return;\n }\n\n // Return objects, structure of which is defined\n // by UserAddressType\n suggestedList.push({\n addressType: 'mx-user-id',\n address: result.user_id,\n displayName: result.display_name,\n avatarMxc: result.avatar_url,\n isKnown: true\n });\n });\n\n // If the query is a valid address, add an entry for that\n // This is important, otherwise there's no way to invite\n // a perfectly valid address if there are close matches.\n var addrType = (0, _UserAddress.getAddressType)(query);\n if (this.props.validAddressTypes.includes(addrType)) {\n if (addrType === 'email' && !Email.looksValid(query)) {\n this.setState({ searchError: (0, _languageHandler._t)(\"That doesn't look like a valid email address\") });\n return;\n }\n suggestedList.unshift({\n addressType: addrType,\n address: query,\n isKnown: false\n });\n if (this._cancelThreepidLookup) this._cancelThreepidLookup();\n if (addrType === 'email') {\n this._lookupThreepid(addrType, query).done();\n }\n }\n this.setState({\n suggestedList: suggestedList,\n error: false\n }, function () {\n if (_this6.addressSelector) _this6.addressSelector.moveSelectionTop();\n });\n },\n\n _addInputToList: function _addInputToList() {\n var addressText = this.refs.textinput.value.trim();\n var addrType = (0, _UserAddress.getAddressType)(addressText);\n var addrObj = {\n addressType: addrType,\n address: addressText,\n isKnown: false\n };\n if (!this.props.validAddressTypes.includes(addrType)) {\n this.setState({ error: true });\n return null;\n } else if (addrType === 'mx-user-id') {\n var user = _MatrixClientPeg2.default.get().getUser(addrObj.address);\n if (user) {\n addrObj.displayName = user.displayName;\n addrObj.avatarMxc = user.avatarUrl;\n addrObj.isKnown = true;\n }\n } else if (addrType === 'mx-room-id') {\n var room = _MatrixClientPeg2.default.get().getRoom(addrObj.address);\n if (room) {\n addrObj.displayName = room.name;\n addrObj.avatarMxc = room.avatarUrl;\n addrObj.isKnown = true;\n }\n }\n\n var selectedList = this.state.selectedList.slice();\n selectedList.push(addrObj);\n this.setState({\n selectedList: selectedList,\n suggestedList: [],\n query: \"\"\n });\n if (this._cancelThreepidLookup) this._cancelThreepidLookup();\n return selectedList;\n },\n\n _lookupThreepid: function _lookupThreepid(medium, address) {\n var _this7 = this;\n\n var cancelled = false;\n // Note that we can't safely remove this after we're done\n // because we don't know that it's the same one, so we just\n // leave it: it's replacing the old one each time so it's\n // not like they leak.\n this._cancelThreepidLookup = function () {\n cancelled = true;\n };\n\n // wait a bit to let the user finish typing\n return _bluebird2.default.delay(500).then(function () {\n if (cancelled) return null;\n return _MatrixClientPeg2.default.get().lookupThreePid(medium, address);\n }).then(function (res) {\n if (res === null || !res.mxid) return null;\n if (cancelled) return null;\n\n return _MatrixClientPeg2.default.get().getProfileInfo(res.mxid);\n }).then(function (res) {\n if (res === null) return null;\n if (cancelled) return null;\n _this7.setState({\n suggestedList: [{\n // a UserAddressType\n addressType: medium,\n address: address,\n displayName: res.displayname,\n avatarMxc: res.avatar_url,\n isKnown: true\n }]\n });\n });\n },\n\n render: function render() {\n var _this8 = this;\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n var AddressSelector = _index2.default.getComponent(\"elements.AddressSelector\");\n this.scrollElement = null;\n\n // map addressType => set of addresses to avoid O(n*m) operation\n var selectedAddresses = {};\n this.state.selectedList.forEach(function (_ref) {\n var address = _ref.address,\n addressType = _ref.addressType;\n\n if (!selectedAddresses[addressType]) selectedAddresses[addressType] = new _set2.default();\n selectedAddresses[addressType].add(address);\n });\n\n // Filter out any addresses in the above already selected addresses (matching both type and address)\n var filteredSuggestedList = this.state.suggestedList.filter(function (_ref2) {\n var address = _ref2.address,\n addressType = _ref2.addressType;\n\n return !(selectedAddresses[addressType] && selectedAddresses[addressType].has(address));\n });\n\n var query = [];\n // create the invite list\n if (this.state.selectedList.length > 0) {\n var AddressTile = _index2.default.getComponent(\"elements.AddressTile\");\n for (var i = 0; i < this.state.selectedList.length; i++) {\n query.push(_react2.default.createElement(AddressTile, {\n key: i,\n address: this.state.selectedList[i],\n canDismiss: true,\n onDismissed: this.onDismissed(i),\n showAddress: this.props.pickerType === 'user' }));\n }\n }\n\n // Add the query at the end\n query.push(_react2.default.createElement('textarea', { key: this.state.selectedList.length,\n rows: '1',\n id: 'textinput',\n ref: 'textinput',\n className: 'mx_ChatInviteDialog_input',\n onChange: this.onQueryChanged,\n placeholder: this.props.placeholder,\n defaultValue: this.props.value,\n autoFocus: this.props.focus }));\n\n var error = void 0;\n var addressSelector = void 0;\n if (this.state.error) {\n var validTypeDescriptions = this.props.validAddressTypes.map(function (t) {\n return (0, _languageHandler._t)(addressTypeName[t]);\n });\n error = _react2.default.createElement(\n 'div',\n { className: 'mx_ChatInviteDialog_error' },\n (0, _languageHandler._t)(\"You have entered an invalid address.\"),\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)(\"Try using one of the following valid address types: %(validTypesList)s.\", {\n validTypesList: validTypeDescriptions.join(\", \")\n })\n );\n } else if (this.state.searchError) {\n error = _react2.default.createElement(\n 'div',\n { className: 'mx_ChatInviteDialog_error' },\n this.state.searchError\n );\n } else if (this.state.query.length > 0 && filteredSuggestedList.length === 0 && !this.state.busy) {\n error = _react2.default.createElement(\n 'div',\n { className: 'mx_ChatInviteDialog_error' },\n (0, _languageHandler._t)(\"No results\")\n );\n } else {\n addressSelector = _react2.default.createElement(AddressSelector, { ref: function ref(_ref3) {\n _this8.addressSelector = _ref3;\n },\n addressList: filteredSuggestedList,\n showAddress: this.props.pickerType === 'user',\n onSelected: this.onSelected,\n truncateAt: TRUNCATE_QUERY_LIST\n });\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_ChatInviteDialog', onKeyDown: this.onKeyDown,\n onFinished: this.props.onFinished, title: this.props.title },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ChatInviteDialog_label' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'textinput' },\n this.props.description\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ChatInviteDialog_inputContainer' },\n query\n ),\n error,\n addressSelector,\n this.props.extraNode\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: this.props.button,\n onPrimaryButtonClick: this.onButtonClick,\n onCancel: this.onCancel })\n );\n }\n});\n//# sourceMappingURL=AddressPickerDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'AskInviteAnywayDialog',\n\n propTypes: {\n unknownProfileUsers: _propTypes2.default.array.isRequired, // [ {userId, errorText}... ]\n onInviteAnyways: _propTypes2.default.func.isRequired,\n onGiveUp: _propTypes2.default.func.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n _onInviteClicked: function _onInviteClicked() {\n this.props.onInviteAnyways();\n this.props.onFinished(true);\n },\n\n _onInviteNeverWarnClicked: function _onInviteNeverWarnClicked() {\n _SettingsStore2.default.setValue(\"promptBeforeInviteUnknownUsers\", null, _SettingsStore.SettingLevel.ACCOUNT, false);\n this.props.onInviteAnyways();\n this.props.onFinished(true);\n },\n\n _onGiveUpClicked: function _onGiveUpClicked() {\n this.props.onGiveUp();\n this.props.onFinished(false);\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n\n var errorList = this.props.unknownProfileUsers.map(function (address) {\n return _react2.default.createElement(\n 'li',\n { key: address.userId },\n address.userId,\n ': ',\n address.errorText\n );\n });\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_RetryInvitesDialog',\n onFinished: this._onGiveUpClicked,\n title: (0, _languageHandler._t)('The following users may not exist'),\n contentId: 'mx_Dialog_content'\n },\n _react2.default.createElement(\n 'div',\n { id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Unable to find profiles for the Matrix IDs listed below - would you like to invite them anyway?\")\n ),\n _react2.default.createElement(\n 'ul',\n null,\n errorList\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this._onGiveUpClicked },\n (0, _languageHandler._t)('Close')\n ),\n _react2.default.createElement(\n 'button',\n { onClick: this._onInviteNeverWarnClicked },\n (0, _languageHandler._t)('Invite anyway and never warn me again')\n ),\n _react2.default.createElement(\n 'button',\n { onClick: this._onInviteClicked, autoFocus: 'true' },\n (0, _languageHandler._t)('Invite anyway')\n )\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=AskInviteAnywayDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _focusTrapReact = require('focus-trap-react');\n\nvar _focusTrapReact2 = _interopRequireDefault(_focusTrapReact);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _Keyboard = require('../../../Keyboard');\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Basic container for modal dialogs.\n *\n * Includes a div for the title, and a keypress handler which cancels the\n * dialog on escape.\n */\nexports.default = _react2.default.createClass({\n displayName: 'BaseDialog',\n\n propTypes: {\n // onFinished callback to call when Escape is pressed\n // Take a boolean which is true if the dialog was dismissed\n // with a positive / confirm action or false if it was\n // cancelled (BaseDialog itself only calls this with false).\n onFinished: _propTypes2.default.func.isRequired,\n\n // Whether the dialog should have a 'close' button that will\n // cause the dialog to be cancelled. This should only be set\n // to false if there is nothing the app can sensibly do if the\n // dialog is cancelled, eg. \"We can't restore your session and\n // the app cannot work\". Default: true.\n hasCancel: _propTypes2.default.bool,\n\n // called when a key is pressed\n onKeyDown: _propTypes2.default.func,\n\n // CSS class to apply to dialog div\n className: _propTypes2.default.string,\n\n // Title for the dialog.\n title: _propTypes2.default.node.isRequired,\n\n // children should be the content of the dialog\n children: _propTypes2.default.node,\n\n // Id of content element\n // If provided, this is used to add a aria-describedby attribute\n contentId: _propTypes2.default.string,\n\n // optional additional class for the title element\n titleClass: _propTypes2.default.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n hasCancel: true\n };\n },\n\n childContextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getChildContext: function getChildContext() {\n return {\n matrixClient: this._matrixClient\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._matrixClient = _MatrixClientPeg2.default.get();\n },\n\n\n _onKeyDown: function _onKeyDown(e) {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n if (this.props.hasCancel && e.keyCode === _Keyboard.KeyCode.ESCAPE) {\n e.stopPropagation();\n e.preventDefault();\n this.props.onFinished(false);\n }\n },\n\n _onCancelClick: function _onCancelClick(e) {\n this.props.onFinished(false);\n },\n\n render: function render() {\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n\n var cancelButton = void 0;\n if (this.props.hasCancel) {\n cancelButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._onCancelClick, className: 'mx_Dialog_cancelButton' },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-close-button.svg', width: '35', height: '35' })\n );\n }\n\n return _react2.default.createElement(\n _focusTrapReact2.default,\n { onKeyDown: this._onKeyDown,\n className: this.props.className,\n role: 'dialog',\n 'aria-labelledby': 'mx_BaseDialog_title'\n // This should point to a node describing the dialog.\n // If we were about to completely follow this recommendation we'd need to\n // make all the components relying on BaseDialog to be aware of it.\n // So instead we will use the whole content as the description.\n // Description comes first and if the content contains more text,\n // AT users can skip its presentation.\n , 'aria-describedby': this.props.contentId\n },\n cancelButton,\n _react2.default.createElement(\n 'div',\n { className: (0, _classnames2.default)('mx_Dialog_title', this.props.titleClass), id: 'mx_BaseDialog_title' },\n this.props.title\n ),\n this.props.children\n );\n }\n}); /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=BaseDialog.js.map","'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar createFocusTrap = require('focus-trap');\n\nvar checkedProps = ['active', 'paused', 'tag', 'focusTrapOptions', '_createFocusTrap'];\n\nvar FocusTrap = function (_React$Component) {\n _inherits(FocusTrap, _React$Component);\n\n function FocusTrap(props) {\n _classCallCheck(this, FocusTrap);\n\n var _this = _possibleConstructorReturn(this, (FocusTrap.__proto__ || Object.getPrototypeOf(FocusTrap)).call(this, props));\n\n _this.setNode = function (el) {\n _this.node = el;\n };\n\n if (typeof document !== 'undefined') {\n _this.previouslyFocusedElement = document.activeElement;\n }\n return _this;\n }\n\n _createClass(FocusTrap, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n // We need to hijack the returnFocusOnDeactivate option,\n // because React can move focus into the element before we arrived at\n // this lifecycle hook (e.g. with autoFocus inputs). So the component\n // captures the previouslyFocusedElement in componentWillMount,\n // then (optionally) returns focus to it in componentWillUnmount.\n var specifiedFocusTrapOptions = this.props.focusTrapOptions;\n var tailoredFocusTrapOptions = {\n returnFocusOnDeactivate: false\n };\n for (var optionName in specifiedFocusTrapOptions) {\n if (!specifiedFocusTrapOptions.hasOwnProperty(optionName)) continue;\n if (optionName === 'returnFocusOnDeactivate') continue;\n tailoredFocusTrapOptions[optionName] = specifiedFocusTrapOptions[optionName];\n }\n\n this.focusTrap = this.props._createFocusTrap(this.node, tailoredFocusTrapOptions);\n if (this.props.active) {\n this.focusTrap.activate();\n }\n if (this.props.paused) {\n this.focusTrap.pause();\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (prevProps.active && !this.props.active) {\n this.focusTrap.deactivate();\n } else if (!prevProps.active && this.props.active) {\n this.focusTrap.activate();\n }\n\n if (prevProps.paused && !this.props.paused) {\n this.focusTrap.unpause();\n } else if (!prevProps.paused && this.props.paused) {\n this.focusTrap.pause();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.focusTrap.deactivate();\n if (this.props.focusTrapOptions.returnFocusOnDeactivate !== false && this.previouslyFocusedElement && this.previouslyFocusedElement.focus) {\n this.previouslyFocusedElement.focus();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var elementProps = {\n ref: this.setNode\n };\n\n // This will get id, className, style, etc. -- arbitrary element props\n for (var prop in this.props) {\n if (!this.props.hasOwnProperty(prop)) continue;\n if (checkedProps.indexOf(prop) !== -1) continue;\n elementProps[prop] = this.props[prop];\n }\n\n return React.createElement(this.props.tag, elementProps, this.props.children);\n }\n }]);\n\n return FocusTrap;\n}(React.Component);\n\nFocusTrap.defaultProps = {\n active: true,\n tag: 'div',\n paused: false,\n focusTrapOptions: {},\n _createFocusTrap: createFocusTrap\n};\n\nmodule.exports = FocusTrap;","var tabbable = require('tabbable');\n\nvar listeningFocusTrap = null;\n\nfunction focusTrap(element, userOptions) {\n var tabbableNodes = [];\n var firstTabbableNode = null;\n var lastTabbableNode = null;\n var nodeFocusedBeforeActivation = null;\n var active = false;\n var paused = false;\n var tabEvent = null;\n\n var container = (typeof element === 'string')\n ? document.querySelector(element)\n : element;\n\n var config = userOptions || {};\n config.returnFocusOnDeactivate = (userOptions && userOptions.returnFocusOnDeactivate !== undefined)\n ? userOptions.returnFocusOnDeactivate\n : true;\n config.escapeDeactivates = (userOptions && userOptions.escapeDeactivates !== undefined)\n ? userOptions.escapeDeactivates\n : true;\n\n var trap = {\n activate: activate,\n deactivate: deactivate,\n pause: pause,\n unpause: unpause,\n };\n\n return trap;\n\n function activate(activateOptions) {\n if (active) return;\n\n var defaultedActivateOptions = {\n onActivate: (activateOptions && activateOptions.onActivate !== undefined)\n ? activateOptions.onActivate\n : config.onActivate,\n };\n\n active = true;\n paused = false;\n nodeFocusedBeforeActivation = document.activeElement;\n\n if (defaultedActivateOptions.onActivate) {\n defaultedActivateOptions.onActivate();\n }\n\n addListeners();\n return trap;\n }\n\n function deactivate(deactivateOptions) {\n if (!active) return;\n\n var defaultedDeactivateOptions = {\n returnFocus: (deactivateOptions && deactivateOptions.returnFocus !== undefined)\n ? deactivateOptions.returnFocus\n : config.returnFocusOnDeactivate,\n onDeactivate: (deactivateOptions && deactivateOptions.onDeactivate !== undefined)\n ? deactivateOptions.onDeactivate\n : config.onDeactivate,\n };\n\n removeListeners();\n\n if (defaultedDeactivateOptions.onDeactivate) {\n defaultedDeactivateOptions.onDeactivate();\n }\n\n if (defaultedDeactivateOptions.returnFocus) {\n setTimeout(function () {\n tryFocus(nodeFocusedBeforeActivation);\n }, 0);\n }\n\n active = false;\n paused = false;\n return this;\n }\n\n function pause() {\n if (paused || !active) return;\n paused = true;\n removeListeners();\n }\n\n function unpause() {\n if (!paused || !active) return;\n paused = false;\n addListeners();\n }\n\n function addListeners() {\n if (!active) return;\n\n // There can be only one listening focus trap at a time\n if (listeningFocusTrap) {\n listeningFocusTrap.pause();\n }\n listeningFocusTrap = trap;\n\n updateTabbableNodes();\n // Ensure that the focused element doesn't capture the event that caused the focus trap activation\n setTimeout(function () {\n tryFocus(firstFocusNode());\n }, 0);\n document.addEventListener('focus', checkFocus, true);\n document.addEventListener('click', checkClick, true);\n document.addEventListener('mousedown', checkPointerDown, true);\n document.addEventListener('touchstart', checkPointerDown, true);\n document.addEventListener('keydown', checkKey, true);\n\n return trap;\n }\n\n function removeListeners() {\n if (!active || listeningFocusTrap !== trap) return;\n\n document.removeEventListener('focus', checkFocus, true);\n document.removeEventListener('click', checkClick, true);\n document.removeEventListener('mousedown', checkPointerDown, true);\n document.removeEventListener('touchstart', checkPointerDown, true);\n document.removeEventListener('keydown', checkKey, true);\n\n listeningFocusTrap = null;\n\n return trap;\n }\n\n function getNodeForOption(optionName) {\n var optionValue = config[optionName];\n var node = optionValue;\n if (!optionValue) {\n return null;\n }\n if (typeof optionValue === 'string') {\n node = document.querySelector(optionValue);\n if (!node) {\n throw new Error('`' + optionName + '` refers to no known node');\n }\n }\n if (typeof optionValue === 'function') {\n node = optionValue();\n if (!node) {\n throw new Error('`' + optionName + '` did not return a node');\n }\n }\n return node;\n }\n\n function firstFocusNode() {\n var node;\n if (getNodeForOption('initialFocus') !== null) {\n node = getNodeForOption('initialFocus');\n } else if (container.contains(document.activeElement)) {\n node = document.activeElement;\n } else {\n node = tabbableNodes[0] || getNodeForOption('fallbackFocus');\n }\n\n if (!node) {\n throw new Error('You can\\'t have a focus-trap without at least one focusable element');\n }\n\n return node;\n }\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event\n function checkPointerDown(e) {\n if (config.clickOutsideDeactivates && !container.contains(e.target)) {\n deactivate({ returnFocus: false });\n }\n }\n\n function checkClick(e) {\n if (config.clickOutsideDeactivates) return;\n if (container.contains(e.target)) return;\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n\n function checkFocus(e) {\n if (container.contains(e.target)) return;\n e.preventDefault();\n e.stopImmediatePropagation();\n // Checking for a blur method here resolves a Firefox issue (#15)\n if (typeof e.target.blur === 'function') e.target.blur();\n\n if (tabEvent) {\n readjustFocus(tabEvent);\n }\n }\n\n function checkKey(e) {\n if (e.key === 'Tab' || e.keyCode === 9) {\n handleTab(e);\n }\n\n if (config.escapeDeactivates !== false && isEscapeEvent(e)) {\n deactivate();\n }\n }\n\n function handleTab(e) {\n updateTabbableNodes();\n\n if (e.target.hasAttribute('tabindex') && Number(e.target.getAttribute('tabindex')) < 0) {\n return tabEvent = e;\n }\n\n e.preventDefault();\n var currentFocusIndex = tabbableNodes.indexOf(e.target);\n\n if (e.shiftKey) {\n if (e.target === firstTabbableNode || tabbableNodes.indexOf(e.target) === -1) {\n return tryFocus(lastTabbableNode);\n }\n return tryFocus(tabbableNodes[currentFocusIndex - 1]);\n }\n\n if (e.target === lastTabbableNode) return tryFocus(firstTabbableNode);\n\n tryFocus(tabbableNodes[currentFocusIndex + 1]);\n }\n\n function updateTabbableNodes() {\n tabbableNodes = tabbable(container);\n firstTabbableNode = tabbableNodes[0];\n lastTabbableNode = tabbableNodes[tabbableNodes.length - 1];\n }\n\n function readjustFocus(e) {\n if (e.shiftKey) return tryFocus(lastTabbableNode);\n\n tryFocus(firstTabbableNode);\n }\n}\n\nfunction isEscapeEvent(e) {\n return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;\n}\n\nfunction tryFocus(node) {\n if (!node || !node.focus) return;\n if (node === document.activeElement) return;\n\n node.focus();\n if (node.tagName.toLowerCase() === 'input') {\n node.select();\n }\n}\n\nmodule.exports = focusTrap;\n","module.exports = function(el, options) {\n options = options || {};\n\n var elementDocument = el.ownerDocument || el;\n var basicTabbables = [];\n var orderedTabbables = [];\n\n // A node is \"available\" if\n // - it's computed style\n var isUnavailable = createIsUnavailable(elementDocument);\n\n var candidateSelectors = [\n 'input',\n 'select',\n 'a[href]',\n 'textarea',\n 'button',\n '[tabindex]',\n ];\n\n var candidates = el.querySelectorAll(candidateSelectors.join(','));\n\n if (options.includeContainer) {\n var matches = Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n if (\n candidateSelectors.some(function(candidateSelector) {\n return matches.call(el, candidateSelector);\n })\n ) {\n candidates = Array.prototype.slice.apply(candidates);\n candidates.unshift(el);\n }\n }\n\n var candidate, candidateIndexAttr, candidateIndex;\n for (var i = 0, l = candidates.length; i < l; i++) {\n candidate = candidates[i];\n candidateIndexAttr = parseInt(candidate.getAttribute('tabindex'), 10)\n candidateIndex = isNaN(candidateIndexAttr) ? candidate.tabIndex : candidateIndexAttr;\n\n if (\n candidateIndex < 0\n || (candidate.tagName === 'INPUT' && candidate.type === 'hidden')\n || candidate.disabled\n || isUnavailable(candidate, elementDocument)\n ) {\n continue;\n }\n\n if (candidateIndex === 0) {\n basicTabbables.push(candidate);\n } else {\n orderedTabbables.push({\n index: i,\n tabIndex: candidateIndex,\n node: candidate,\n });\n }\n }\n\n var tabbableNodes = orderedTabbables\n .sort(function(a, b) {\n return a.tabIndex === b.tabIndex ? a.index - b.index : a.tabIndex - b.tabIndex;\n })\n .map(function(a) {\n return a.node\n });\n\n Array.prototype.push.apply(tabbableNodes, basicTabbables);\n\n return tabbableNodes;\n}\n\nfunction createIsUnavailable(elementDocument) {\n // Node cache must be refreshed on every check, in case\n // the content of the element has changed\n var isOffCache = [];\n\n // \"off\" means `display: none;`, as opposed to \"hidden\",\n // which means `visibility: hidden;`. getComputedStyle\n // accurately reflects visiblity in context but not\n // \"off\" state, so we need to recursively check parents.\n\n function isOff(node, nodeComputedStyle) {\n if (node === elementDocument.documentElement) return false;\n\n // Find the cached node (Array.prototype.find not available in IE9)\n for (var i = 0, length = isOffCache.length; i < length; i++) {\n if (isOffCache[i][0] === node) return isOffCache[i][1];\n }\n\n nodeComputedStyle = nodeComputedStyle || elementDocument.defaultView.getComputedStyle(node);\n\n var result = false;\n\n if (nodeComputedStyle.display === 'none') {\n result = true;\n } else if (node.parentNode) {\n result = isOff(node.parentNode);\n }\n\n isOffCache.push([node, result]);\n\n return result;\n }\n\n return function isUnavailable(node) {\n if (node === elementDocument.documentElement) return false;\n\n var computedStyle = elementDocument.defaultView.getComputedStyle(node);\n\n if (isOff(node, computedStyle)) return true;\n\n return computedStyle.visibility === 'hidden';\n }\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BugReportDialog = function (_React$Component) {\n (0, _inherits3.default)(BugReportDialog, _React$Component);\n\n function BugReportDialog(props, context) {\n (0, _classCallCheck3.default)(this, BugReportDialog);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (BugReportDialog.__proto__ || (0, _getPrototypeOf2.default)(BugReportDialog)).call(this, props, context));\n\n _this.state = {\n sendLogs: true,\n busy: false,\n err: null,\n issueUrl: \"\",\n text: \"\",\n progress: null\n };\n _this._unmounted = false;\n _this._onSubmit = _this._onSubmit.bind(_this);\n _this._onCancel = _this._onCancel.bind(_this);\n _this._onTextChange = _this._onTextChange.bind(_this);\n _this._onIssueUrlChange = _this._onIssueUrlChange.bind(_this);\n _this._onSendLogsChange = _this._onSendLogsChange.bind(_this);\n _this._sendProgressCallback = _this._sendProgressCallback.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(BugReportDialog, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: '_onCancel',\n value: function _onCancel(ev) {\n this.props.onFinished(false);\n }\n }, {\n key: '_onSubmit',\n value: function _onSubmit(ev) {\n var _this2 = this;\n\n var userText = (this.state.text.length > 0 ? this.state.text + '\\n\\n' : '') + 'Issue: ' + (this.state.issueUrl.length > 0 ? this.state.issueUrl : 'No issue link given');\n\n this.setState({ busy: true, progress: null, err: null });\n this._sendProgressCallback((0, _languageHandler._t)(\"Preparing to send logs\"));\n\n require(['../../../rageshake/submit-rageshake'], function (s) {\n s(_SdkConfig2.default.get().bug_report_endpoint_url, {\n userText: userText,\n sendLogs: true,\n progressCallback: _this2._sendProgressCallback\n }).then(function () {\n if (!_this2._unmounted) {\n _this2.props.onFinished(false);\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n // N.B. first param is passed to piwik and so doesn't want i18n\n _Modal2.default.createTrackedDialog('Bug report sent', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Logs sent'),\n description: (0, _languageHandler._t)('Thank you!'),\n hasCancelButton: false\n });\n }\n }, function (err) {\n if (!_this2._unmounted) {\n _this2.setState({\n busy: false,\n progress: null,\n err: (0, _languageHandler._t)(\"Failed to send logs: \") + ('' + err.message)\n });\n }\n });\n });\n }\n }, {\n key: '_onTextChange',\n value: function _onTextChange(ev) {\n this.setState({ text: ev.target.value });\n }\n }, {\n key: '_onIssueUrlChange',\n value: function _onIssueUrlChange(ev) {\n this.setState({ issueUrl: ev.target.value });\n }\n }, {\n key: '_onSendLogsChange',\n value: function _onSendLogsChange(ev) {\n this.setState({ sendLogs: ev.target.checked });\n }\n }, {\n key: '_sendProgressCallback',\n value: function _sendProgressCallback(progress) {\n if (this._unmounted) {\n return;\n }\n this.setState({ progress: progress });\n }\n }, {\n key: 'render',\n value: function render() {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n\n var error = null;\n if (this.state.err) {\n error = _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.err\n );\n }\n\n var progress = null;\n if (this.state.busy) {\n progress = _react2.default.createElement(\n 'div',\n { className: 'progress' },\n _react2.default.createElement(Loader, null),\n this.state.progress,\n ' ...'\n );\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_BugReportDialog', onFinished: this._onCancel,\n title: (0, _languageHandler._t)('Submit debug logs'),\n contentId: 'mx_Dialog_content'\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Debug logs contain application usage data including your \" + \"username, the IDs or aliases of the rooms or groups you \" + \"have visited and the usernames of other users. They do \" + \"not contain messages.\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n _react2.default.createElement(\n 'b',\n null,\n (0, _languageHandler._t)(\"Before submitting logs, you must <a>create a GitHub issue</a> to describe your problem.\", {}, {\n a: function a(sub) {\n return _react2.default.createElement(\n 'a',\n {\n target: '_blank',\n href: 'https://github.com/vector-im/riot-web/issues/new'\n },\n sub\n );\n }\n })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_BugReportDialog_field_container' },\n _react2.default.createElement(\n 'label',\n {\n htmlFor: 'mx_BugReportDialog_issueUrl',\n className: 'mx_BugReportDialog_field_label'\n },\n (0, _languageHandler._t)(\"What GitHub issue are these logs for?\")\n ),\n _react2.default.createElement('input', {\n id: 'mx_BugReportDialog_issueUrl',\n type: 'text',\n className: 'mx_BugReportDialog_field_input',\n onChange: this._onIssueUrlChange,\n value: this.state.issueUrl,\n placeholder: 'https://github.com/vector-im/riot-web/issues/...'\n })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_BugReportDialog_field_container' },\n _react2.default.createElement(\n 'label',\n {\n htmlFor: 'mx_BugReportDialog_notes_label',\n className: 'mx_BugReportDialog_field_label'\n },\n (0, _languageHandler._t)(\"Notes:\")\n ),\n _react2.default.createElement('textarea', {\n className: 'mx_BugReportDialog_field_input',\n rows: 5,\n onChange: this._onTextChange,\n value: this.state.text\n })\n ),\n progress,\n error\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: (0, _languageHandler._t)(\"Send logs\"),\n onPrimaryButtonClick: this._onSubmit,\n focus: true,\n onCancel: this._onCancel,\n disabled: this.state.busy\n })\n );\n }\n }]);\n return BugReportDialog;\n}(_react2.default.Component); /*\n Copyright 2017 OpenMarket Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = BugReportDialog;\n\n\nBugReportDialog.propTypes = {\n onFinished: _react2.default.PropTypes.func.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=BugReportDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _browserRequest = require('browser-request');\n\nvar _browserRequest2 = _interopRequireDefault(_browserRequest);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n Copyright 2016 Aviral Dasgupta\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar REPOS = ['vector-im/riot-web', 'matrix-org/matrix-react-sdk', 'matrix-org/matrix-js-sdk'];\n\nvar ChangelogDialog = function (_React$Component) {\n (0, _inherits3.default)(ChangelogDialog, _React$Component);\n\n function ChangelogDialog(props) {\n (0, _classCallCheck3.default)(this, ChangelogDialog);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ChangelogDialog.__proto__ || (0, _getPrototypeOf2.default)(ChangelogDialog)).call(this, props));\n\n _this.state = {};\n return _this;\n }\n\n (0, _createClass3.default)(ChangelogDialog, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n var version = this.props.newVersion.split('-');\n var version2 = this.props.version.split('-');\n if (version == null || version2 == null) return;\n // parse versions of form: [vectorversion]-react-[react-sdk-version]-js-[js-sdk-version]\n\n var _loop = function _loop(i) {\n var oldVersion = version2[2 * i];\n var newVersion = version[2 * i];\n var url = 'https://api.github.com/repos/' + REPOS[i] + '/compare/' + oldVersion + '...' + newVersion;\n (0, _browserRequest2.default)(url, function (err, response, body) {\n if (response.statusCode < 200 || response.statusCode >= 300) {\n _this2.setState((0, _defineProperty3.default)({}, REPOS[i], response.statusText));\n return;\n }\n _this2.setState((0, _defineProperty3.default)({}, REPOS[i], JSON.parse(body).commits));\n });\n };\n\n for (var i = 0; i < REPOS.length; i++) {\n _loop(i);\n }\n }\n }, {\n key: '_elementsForCommit',\n value: function _elementsForCommit(commit) {\n return _react2.default.createElement(\n 'li',\n { key: commit.sha, className: 'mx_ChangelogDialog_li' },\n _react2.default.createElement(\n 'a',\n { href: commit.html_url, target: '_blank', rel: 'noopener' },\n commit.commit.message\n )\n );\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var Spinner = _index2.default.getComponent('views.elements.Spinner');\n var QuestionDialog = _index2.default.getComponent('dialogs.QuestionDialog');\n\n var logs = REPOS.map(function (repo) {\n var content = void 0;\n if (_this3.state[repo] == null) {\n content = _react2.default.createElement(Spinner, { key: repo });\n } else if (typeof _this3.state[repo] === \"string\") {\n content = (0, _languageHandler._t)(\"Unable to load commit detail: %(msg)s\", {\n msg: _this3.state[repo]\n });\n } else {\n content = _this3.state[repo].map(_this3._elementsForCommit);\n }\n return _react2.default.createElement(\n 'div',\n { key: repo },\n _react2.default.createElement(\n 'h2',\n null,\n repo\n ),\n _react2.default.createElement(\n 'ul',\n null,\n content\n )\n );\n });\n\n var content = _react2.default.createElement(\n 'div',\n { className: 'mx_ChangelogDialog_content' },\n this.props.version == null || this.props.newVersion == null ? _react2.default.createElement(\n 'h2',\n null,\n (0, _languageHandler._t)(\"Unavailable\")\n ) : logs\n );\n\n return _react2.default.createElement(QuestionDialog, {\n title: (0, _languageHandler._t)(\"Changelog\"),\n description: content,\n button: (0, _languageHandler._t)(\"Update\"),\n onFinished: this.props.onFinished\n });\n }\n }]);\n return ChangelogDialog;\n}(_react2.default.Component);\n\nexports.default = ChangelogDialog;\n\n\nChangelogDialog.propTypes = {\n version: _react2.default.PropTypes.string.isRequired,\n newVersion: _react2.default.PropTypes.string.isRequired,\n onFinished: _react2.default.PropTypes.func.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=ChangelogDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _DMRoomMap = require('../../../utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _Unread = require('../../../Unread');\n\nvar _Unread2 = _interopRequireDefault(_Unread);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ChatCreateOrReuseDialog = function (_React$Component) {\n (0, _inherits3.default)(ChatCreateOrReuseDialog, _React$Component);\n\n function ChatCreateOrReuseDialog(props) {\n (0, _classCallCheck3.default)(this, ChatCreateOrReuseDialog);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ChatCreateOrReuseDialog.__proto__ || (0, _getPrototypeOf2.default)(ChatCreateOrReuseDialog)).call(this, props));\n\n _this.onFinished = _this.onFinished.bind(_this);\n _this.onRoomTileClick = _this.onRoomTileClick.bind(_this);\n\n _this.state = {\n tiles: [],\n profile: {\n displayName: null,\n avatarUrl: null\n },\n profileError: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(ChatCreateOrReuseDialog, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n var client = _MatrixClientPeg2.default.get();\n\n var dmRoomMap = new _DMRoomMap2.default(client);\n var dmRooms = dmRoomMap.getDMRoomsForUserId(this.props.userId);\n\n var RoomTile = _index2.default.getComponent(\"rooms.RoomTile\");\n\n var tiles = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(dmRooms), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var roomId = _step.value;\n\n var room = client.getRoom(roomId);\n if (room) {\n var isInvite = room.getMyMembership() === \"invite\";\n var highlight = room.getUnreadNotificationCount('highlight') > 0 || isInvite;\n tiles.push(_react2.default.createElement(RoomTile, { key: room.roomId, room: room,\n transparent: true,\n collapsed: false,\n selected: false,\n unread: _Unread2.default.doesRoomHaveUnreadMessages(room),\n highlight: highlight,\n isInvite: isInvite,\n onClick: this.onRoomTileClick\n }));\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n this.setState({\n tiles: tiles\n });\n\n if (tiles.length === 0) {\n this.setState({\n busyProfile: true\n });\n _MatrixClientPeg2.default.get().getProfileInfo(this.props.userId).done(function (resp) {\n var profile = {\n displayName: resp.displayname,\n avatarUrl: null\n };\n if (resp.avatar_url) {\n profile.avatarUrl = _MatrixClientPeg2.default.get().mxcUrlToHttp(resp.avatar_url, 48, 48, \"crop\");\n }\n _this2.setState({\n busyProfile: false,\n profile: profile\n });\n }, function (err) {\n console.error('Unable to get profile for user ' + _this2.props.userId + ':', err);\n _this2.setState({\n busyProfile: false,\n profileError: err\n });\n });\n }\n }\n }, {\n key: 'onRoomTileClick',\n value: function onRoomTileClick(roomId) {\n this.props.onExistingRoomSelected(roomId);\n }\n }, {\n key: 'onFinished',\n value: function onFinished() {\n this.props.onFinished(false);\n }\n }, {\n key: 'render',\n value: function render() {\n var title = '';\n var content = null;\n if (this.state.tiles.length > 0) {\n // Show the existing rooms with a \"+\" to add a new dm\n title = (0, _languageHandler._t)('Create a new chat or reuse an existing one');\n var labelClasses = (0, _classnames2.default)({\n mx_MemberInfo_createRoom_label: true,\n mx_RoomTile_name: true\n });\n var startNewChat = _react2.default.createElement(\n _AccessibleButton2.default,\n {\n className: 'mx_MemberInfo_createRoom',\n onClick: this.props.onNewDMClick\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_avatar' },\n _react2.default.createElement('img', { src: 'img/create-big.svg', width: '26', height: '26' })\n ),\n _react2.default.createElement(\n 'div',\n { className: labelClasses },\n _react2.default.createElement(\n 'i',\n null,\n (0, _languageHandler._t)(\"Start new chat\")\n )\n )\n );\n content = _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n (0, _languageHandler._t)('You already have existing direct chats with this user:'),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ChatCreateOrReuseDialog_tiles' },\n this.state.tiles,\n startNewChat\n )\n );\n } else {\n // Show the avatar, name and a button to confirm that a new chat is requested\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n var Spinner = _index2.default.getComponent('elements.Spinner');\n title = (0, _languageHandler._t)('Start chatting');\n\n var profile = null;\n if (this.state.busyProfile) {\n profile = _react2.default.createElement(Spinner, null);\n } else if (this.state.profileError) {\n profile = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n 'Unable to load profile information for ',\n this.props.userId\n );\n } else {\n profile = _react2.default.createElement(\n 'div',\n { className: 'mx_ChatCreateOrReuseDialog_profile' },\n _react2.default.createElement(BaseAvatar, {\n name: this.state.profile.displayName || this.props.userId,\n url: this.state.profile.avatarUrl,\n width: 48, height: 48\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ChatCreateOrReuseDialog_profile_name' },\n this.state.profile.displayName || this.props.userId\n )\n );\n }\n content = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Click on the button below to start chatting!')\n ),\n profile\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: (0, _languageHandler._t)('Start Chatting'),\n onPrimaryButtonClick: this.props.onNewDMClick, focus: true })\n );\n }\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_ChatCreateOrReuseDialog',\n onFinished: this.onFinished,\n title: title,\n contentId: 'mx_Dialog_content'\n },\n content\n );\n }\n }]);\n return ChatCreateOrReuseDialog;\n}(_react2.default.Component); /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = ChatCreateOrReuseDialog;\n\n\nChatCreateOrReuseDialog.propTypes = {\n userId: _propTypes2.default.string.isRequired,\n // Called when clicking outside of the dialog\n onFinished: _propTypes2.default.func.isRequired,\n onNewDMClick: _propTypes2.default.func.isRequired,\n onExistingRoomSelected: _propTypes2.default.func.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=ChatCreateOrReuseDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * A dialog for confirming a redaction.\n */\nexports.default = _react2.default.createClass({\n displayName: 'ConfirmRedactDialog',\n\n render: function render() {\n var QuestionDialog = _index2.default.getComponent('views.dialogs.QuestionDialog');\n return _react2.default.createElement(QuestionDialog, { onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)(\"Confirm Removal\"),\n description: (0, _languageHandler._t)(\"Are you sure you wish to remove (delete) this event? \" + \"Note that if you delete a room name or topic change, it could undo the change.\"),\n button: (0, _languageHandler._t)(\"Remove\") });\n }\n}); /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=ConfirmRedactDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _groups = require('../../../groups');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * A dialog for confirming an operation on another user.\n * Takes a user ID and a verb, displays the target user prominently\n * such that it should be easy to confirm that the operation is being\n * performed on the right person, and displays the operation prominently\n * to make it obvious what is going to happen.\n * Also tweaks the style for 'dangerous' actions (albeit only with colour)\n */\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'ConfirmUserActionDialog',\n propTypes: {\n // matrix-js-sdk (room) member object. Supply either this or 'groupMember'\n member: _propTypes2.default.object,\n // group member object. Supply either this or 'member'\n groupMember: _groups.GroupMemberType,\n // needed if a group member is specified\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient),\n action: _propTypes2.default.string.isRequired, // eg. 'Ban'\n title: _propTypes2.default.string.isRequired, // eg. 'Ban this user?'\n\n // Whether to display a text field for a reason\n // If true, the second argument to onFinished will\n // be the string entered.\n askReason: _propTypes2.default.bool,\n danger: _propTypes2.default.bool,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n defaultProps: {\n danger: false,\n askReason: false\n },\n\n componentWillMount: function componentWillMount() {\n this._reasonField = null;\n },\n\n onOk: function onOk() {\n var reason = void 0;\n if (this._reasonField) {\n reason = this._reasonField.value;\n }\n this.props.onFinished(true, reason);\n },\n\n onCancel: function onCancel() {\n this.props.onFinished(false);\n },\n\n _collectReasonField: function _collectReasonField(e) {\n this._reasonField = e;\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n var MemberAvatar = _index2.default.getComponent(\"views.avatars.MemberAvatar\");\n var BaseAvatar = _index2.default.getComponent(\"views.avatars.BaseAvatar\");\n\n var confirmButtonClass = this.props.danger ? 'danger' : '';\n\n var reasonBox = void 0;\n if (this.props.askReason) {\n reasonBox = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'form',\n { onSubmit: this.onOk },\n _react2.default.createElement('input', { className: 'mx_ConfirmUserActionDialog_reasonField',\n ref: this._collectReasonField,\n placeholder: (0, _languageHandler._t)(\"Reason\"),\n autoFocus: true\n })\n )\n );\n }\n\n var avatar = void 0;\n var name = void 0;\n var userId = void 0;\n if (this.props.member) {\n avatar = _react2.default.createElement(MemberAvatar, { member: this.props.member, width: 48, height: 48 });\n name = this.props.member.name;\n userId = this.props.member.userId;\n } else {\n var httpAvatarUrl = this.props.groupMember.avatarUrl ? this.props.matrixClient.mxcUrlToHttp(this.props.groupMember.avatarUrl, 48, 48) : null;\n name = this.props.groupMember.displayname || this.props.groupMember.userId;\n userId = this.props.groupMember.userId;\n avatar = _react2.default.createElement(BaseAvatar, { name: name, url: httpAvatarUrl, width: 48, height: 48 });\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_ConfirmUserActionDialog', onFinished: this.props.onFinished,\n title: this.props.title,\n contentId: 'mx_Dialog_content'\n },\n _react2.default.createElement(\n 'div',\n { id: 'mx_Dialog_content', className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ConfirmUserActionDialog_avatar' },\n avatar\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ConfirmUserActionDialog_name' },\n name\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ConfirmUserActionDialog_userId' },\n userId\n )\n ),\n reasonBox,\n _react2.default.createElement(DialogButtons, { primaryButton: this.props.action,\n onPrimaryButtonClick: this.onOk,\n primaryButtonClass: confirmButtonClass,\n focus: !this.props.askReason,\n onCancel: this.onCancel })\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=ConfirmUserActionDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'CreateGroupDialog',\n propTypes: {\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n groupName: '',\n groupId: '',\n groupError: null,\n creating: false,\n createError: null\n };\n },\n\n _onGroupNameChange: function _onGroupNameChange(e) {\n this.setState({\n groupName: e.target.value\n });\n },\n\n _onGroupIdChange: function _onGroupIdChange(e) {\n this.setState({\n groupId: e.target.value\n });\n },\n\n _onGroupIdBlur: function _onGroupIdBlur(e) {\n this._checkGroupId();\n },\n\n _checkGroupId: function _checkGroupId(e) {\n var error = null;\n if (!this.state.groupId) {\n error = (0, _languageHandler._t)(\"Community IDs cannot be empty.\");\n } else if (!/^[a-z0-9=_\\-./]*$/.test(this.state.groupId)) {\n error = (0, _languageHandler._t)(\"Community IDs may only contain characters a-z, 0-9, or '=_-./'\");\n }\n this.setState({\n groupIdError: error,\n // Reset createError to get rid of now stale error message\n createError: null\n });\n return error;\n },\n\n _onFormSubmit: function _onFormSubmit(e) {\n var _this = this;\n\n e.preventDefault();\n\n if (this._checkGroupId()) return;\n\n var profile = {};\n if (this.state.groupName !== '') {\n profile.name = this.state.groupName;\n }\n this.setState({ creating: true });\n _MatrixClientPeg2.default.get().createGroup({\n localpart: this.state.groupId,\n profile: profile\n }).then(function (result) {\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: result.group_id,\n group_is_new: true\n });\n _this.props.onFinished(true);\n }).catch(function (e) {\n _this.setState({ createError: e });\n }).finally(function () {\n _this.setState({ creating: false });\n }).done();\n },\n\n _onCancel: function _onCancel() {\n this.props.onFinished(false);\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var Spinner = _index2.default.getComponent('elements.Spinner');\n\n if (this.state.creating) {\n return _react2.default.createElement(Spinner, null);\n }\n\n var createErrorNode = void 0;\n if (this.state.createError) {\n // XXX: We should catch errcodes and give sensible i18ned messages for them,\n // rather than displaying what the server gives us, but synapse doesn't give\n // any yet.\n createErrorNode = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Something went wrong whilst creating your community')\n ),\n _react2.default.createElement(\n 'div',\n null,\n this.state.createError.message\n )\n );\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_CreateGroupDialog', onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('Create Community')\n },\n _react2.default.createElement(\n 'form',\n { onSubmit: this._onFormSubmit },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateGroupDialog_inputRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateGroupDialog_label' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'groupname' },\n (0, _languageHandler._t)('Community Name')\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { id: 'groupname', className: 'mx_CreateGroupDialog_input',\n autoFocus: true, size: '64',\n placeholder: (0, _languageHandler._t)('Example'),\n onChange: this._onGroupNameChange,\n value: this.state.groupName\n })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateGroupDialog_inputRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateGroupDialog_label' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'groupid' },\n (0, _languageHandler._t)('Community ID')\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateGroupDialog_input_group' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_CreateGroupDialog_prefix' },\n '+'\n ),\n _react2.default.createElement('input', { id: 'groupid',\n className: 'mx_CreateGroupDialog_input mx_CreateGroupDialog_input_hasPrefixAndSuffix',\n size: '32',\n placeholder: (0, _languageHandler._t)('example'),\n onChange: this._onGroupIdChange,\n onBlur: this._onGroupIdBlur,\n value: this.state.groupId\n }),\n _react2.default.createElement(\n 'span',\n { className: 'mx_CreateGroupDialog_suffix' },\n ':',\n _MatrixClientPeg2.default.get().getDomain()\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.groupIdError\n ),\n createErrorNode\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement('input', { type: 'submit', value: (0, _languageHandler._t)('Create'), className: 'mx_Dialog_primary' }),\n _react2.default.createElement(\n 'button',\n { onClick: this._onCancel },\n (0, _languageHandler._t)(\"Cancel\")\n )\n )\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=CreateGroupDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'CreateRoomDialog',\n propTypes: {\n onFinished: _propTypes2.default.func.isRequired\n },\n\n componentWillMount: function componentWillMount() {\n var config = _SdkConfig2.default.get();\n // Dialog shows inverse of m.federate (noFederate) strict false check to skip undefined check (default = true)\n this.defaultNoFederate = config.default_federate === false;\n },\n\n onOk: function onOk() {\n this.props.onFinished(true, this.refs.textinput.value, this.refs.checkbox.checked);\n },\n\n onCancel: function onCancel() {\n this.props.onFinished(false);\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_CreateRoomDialog', onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('Create Room')\n },\n _react2.default.createElement(\n 'form',\n { onSubmit: this.onOk },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateRoomDialog_label' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'textinput' },\n ' ',\n (0, _languageHandler._t)('Room name (optional)'),\n ' '\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateRoomDialog_input_container' },\n _react2.default.createElement('input', { id: 'textinput', ref: 'textinput', className: 'mx_CreateRoomDialog_input', autoFocus: true })\n ),\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n 'details',\n { className: 'mx_CreateRoomDialog_details' },\n _react2.default.createElement(\n 'summary',\n { className: 'mx_CreateRoomDialog_details_summary' },\n (0, _languageHandler._t)('Advanced options')\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { type: 'checkbox', id: 'checkbox', ref: 'checkbox', defaultChecked: this.defaultNoFederate }),\n _react2.default.createElement(\n 'label',\n { htmlFor: 'checkbox' },\n (0, _languageHandler._t)('Block users on other matrix homeservers from joining this room'),\n _react2.default.createElement('br', null),\n '(',\n (0, _languageHandler._t)('This setting cannot be changed later!'),\n ')'\n )\n )\n )\n )\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: (0, _languageHandler._t)('Create Room'),\n onPrimaryButtonClick: this.onOk,\n onCancel: this.onCancel })\n );\n }\n}); /*\n Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=CreateRoomDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (props) {\n var _onLogoutClicked = function _onLogoutClicked() {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('Logout e2e db too new', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Sign out\"),\n description: (0, _languageHandler._t)(\"To avoid losing your chat history, you must export your room keys \" + \"before logging out. You will need to go back to the newer version of \" + \"Riot to do this\"),\n button: (0, _languageHandler._t)(\"Sign out\"),\n focus: false,\n onFinished: function onFinished(doLogout) {\n if (doLogout) {\n _dispatcher2.default.dispatch({ action: 'logout' });\n props.onFinished();\n }\n }\n });\n };\n\n var description = (0, _languageHandler._t)(\"You've previously used a newer version of Riot on %(host)s. \" + \"To use this version again with end to end encryption, you will \" + \"need to sign out and back in again. \", { host: props.host });\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_CryptoStoreTooNewDialog',\n contentId: 'mx_Dialog_content',\n title: (0, _languageHandler._t)(\"Incompatible Database\"),\n hasCancel: false,\n onFinished: props.onFinished\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n description\n ),\n _react2.default.createElement(\n DialogButtons,\n { primaryButton: (0, _languageHandler._t)('Continue With Encryption Disabled'),\n hasCancel: false,\n onPrimaryButtonClick: props.onFinished\n },\n _react2.default.createElement(\n 'button',\n { onClick: _onLogoutClicked },\n (0, _languageHandler._t)('Sign out')\n )\n )\n );\n}; /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=CryptoStoreTooNewDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Analytics = require('../../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Lifecycle = require('../../../Lifecycle');\n\nvar Lifecycle = _interopRequireWildcard(_Lifecycle);\n\nvar _velocityVector = require('velocity-vector');\n\nvar _velocityVector2 = _interopRequireDefault(_velocityVector);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DeactivateAccountDialog = function (_React$Component) {\n (0, _inherits3.default)(DeactivateAccountDialog, _React$Component);\n\n function DeactivateAccountDialog(props, context) {\n (0, _classCallCheck3.default)(this, DeactivateAccountDialog);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DeactivateAccountDialog.__proto__ || (0, _getPrototypeOf2.default)(DeactivateAccountDialog)).call(this, props, context));\n\n _this._passwordField = null;\n\n _this._onOk = _this._onOk.bind(_this);\n _this._onCancel = _this._onCancel.bind(_this);\n _this._onPasswordFieldChange = _this._onPasswordFieldChange.bind(_this);\n _this._onEraseFieldChange = _this._onEraseFieldChange.bind(_this);\n\n _this.state = {\n confirmButtonEnabled: false,\n busy: false,\n shouldErase: false,\n errStr: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(DeactivateAccountDialog, [{\n key: '_onPasswordFieldChange',\n value: function _onPasswordFieldChange(ev) {\n this.setState({\n confirmButtonEnabled: Boolean(ev.target.value)\n });\n }\n }, {\n key: '_onEraseFieldChange',\n value: function _onEraseFieldChange(ev) {\n this.setState({\n shouldErase: ev.target.checked\n });\n }\n }, {\n key: '_onOk',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var auth, errStr;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.setState({ busy: true });\n\n _context.prev = 1;\n\n // This assumes that the HS requires password UI auth\n // for this endpoint. In reality it could be any UI auth.\n auth = {\n type: 'm.login.password',\n user: _MatrixClientPeg2.default.get().credentials.userId,\n password: this._passwordField.value\n };\n _context.next = 5;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().deactivateAccount(auth, this.state.shouldErase));\n\n case 5:\n _context.next = 13;\n break;\n\n case 7:\n _context.prev = 7;\n _context.t0 = _context['catch'](1);\n errStr = (0, _languageHandler._t)('Unknown error');\n // https://matrix.org/jira/browse/SYN-744\n\n if (_context.t0.httpStatus == 401 || _context.t0.httpStatus == 403) {\n errStr = (0, _languageHandler._t)('Incorrect password');\n (0, _velocityVector2.default)(this._passwordField, \"callout.shake\", 300);\n }\n this.setState({\n busy: false,\n errStr: errStr\n });\n return _context.abrupt('return');\n\n case 13:\n\n _Analytics2.default.trackEvent('Account', 'Deactivate Account');\n Lifecycle.onLoggedOut();\n this.props.onFinished(false);\n\n case 16:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[1, 7]]);\n }));\n\n function _onOk() {\n return _ref.apply(this, arguments);\n }\n\n return _onOk;\n }()\n }, {\n key: '_onCancel',\n value: function _onCancel() {\n this.props.onFinished(false);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n var passwordBoxClass = '';\n\n var error = null;\n if (this.state.errStr) {\n error = _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.errStr\n );\n passwordBoxClass = 'error';\n }\n\n var okLabel = this.state.busy ? _react2.default.createElement(Loader, null) : (0, _languageHandler._t)('Deactivate Account');\n var okEnabled = this.state.confirmButtonEnabled && !this.state.busy;\n\n var cancelButton = null;\n if (!this.state.busy) {\n cancelButton = _react2.default.createElement(\n 'button',\n { onClick: this._onCancel, autoFocus: true },\n (0, _languageHandler._t)(\"Cancel\")\n );\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_DeactivateAccountDialog',\n onFinished: this.props.onFinished,\n onEnterPressed: this.onOk,\n titleClass: 'danger',\n title: (0, _languageHandler._t)(\"Deactivate Account\")\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"This will make your account permanently unusable. \" + \"You will not be able to log in, and no one will be able to re-register the same \" + \"user ID. \" + \"This will cause your account to leave all rooms it is participating in, and it \" + \"will remove your account details from your identity server. \" + \"<b>This action is irreversible.</b>\", {}, { b: function b(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n ' ',\n sub,\n ' '\n );\n } })\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Deactivating your account <b>does not by default cause us to forget messages you \" + \"have sent.</b> \" + \"If you would like us to forget your messages, please tick the box below.\", {}, { b: function b(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n ' ',\n sub,\n ' '\n );\n } })\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Message visibility in Matrix is similar to email. \" + \"Our forgetting your messages means that messages you have sent will not be shared \" + \"with any new or unregistered users, but registered users who already have access \" + \"to these messages will still have access to their copy.\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DeactivateAccountDialog_input_section' },\n _react2.default.createElement(\n 'p',\n null,\n _react2.default.createElement(\n 'label',\n { htmlFor: 'mx_DeactivateAccountDialog_erase_account_input' },\n _react2.default.createElement('input', {\n id: 'mx_DeactivateAccountDialog_erase_account_input',\n type: 'checkbox',\n checked: this.state.shouldErase,\n onChange: this._onEraseFieldChange\n }),\n (0, _languageHandler._t)(\"Please forget all messages I have sent when my account is deactivated \" + \"(<b>Warning:</b> this will cause future users to see an incomplete view \" + \"of conversations)\", {}, { b: function b(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n sub\n );\n } })\n )\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"To continue, please enter your password:\")\n ),\n _react2.default.createElement('input', {\n type: 'password',\n placeholder: (0, _languageHandler._t)(\"password\"),\n onChange: this._onPasswordFieldChange,\n ref: function ref(e) {\n _this2._passwordField = e;\n },\n className: passwordBoxClass\n })\n ),\n error\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n {\n className: 'mx_Dialog_primary danger',\n onClick: this._onOk,\n disabled: !okEnabled\n },\n okLabel\n ),\n cancelButton\n )\n );\n }\n }]);\n return DeactivateAccountDialog;\n}(_react2.default.Component);\n\nexports.default = DeactivateAccountDialog;\n\n\nDeactivateAccountDialog.propTypes = {\n onFinished: _propTypes2.default.func.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=DeactivateAccountDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = DeviceVerifyDialog;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _FormattingUtils = require('../../../utils/FormattingUtils');\n\nvar FormattingUtils = _interopRequireWildcard(_FormattingUtils);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction DeviceVerifyDialog(props) {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n\n var key = FormattingUtils.formatCryptoKey(props.device.getFingerprint());\n var body = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"To verify that this device can be trusted, please contact its \" + \"owner using some other means (e.g. in person or a phone call) \" + \"and ask them whether the key they see in their User Settings \" + \"for this device matches the key below:\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_cryptoSection' },\n _react2.default.createElement(\n 'ul',\n null,\n _react2.default.createElement(\n 'li',\n null,\n _react2.default.createElement(\n 'label',\n null,\n (0, _languageHandler._t)(\"Device name\"),\n ':'\n ),\n ' ',\n _react2.default.createElement(\n 'span',\n null,\n props.device.getDisplayName()\n )\n ),\n _react2.default.createElement(\n 'li',\n null,\n _react2.default.createElement(\n 'label',\n null,\n (0, _languageHandler._t)(\"Device ID\"),\n ':'\n ),\n ' ',\n _react2.default.createElement(\n 'span',\n null,\n _react2.default.createElement(\n 'code',\n null,\n props.device.deviceId\n )\n )\n ),\n _react2.default.createElement(\n 'li',\n null,\n _react2.default.createElement(\n 'label',\n null,\n (0, _languageHandler._t)(\"Device key\"),\n ':'\n ),\n ' ',\n _react2.default.createElement(\n 'span',\n null,\n _react2.default.createElement(\n 'code',\n null,\n _react2.default.createElement(\n 'b',\n null,\n key\n )\n )\n )\n )\n )\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"If it matches, press the verify button below. \" + \"If it doesn't, then someone else is intercepting this device \" + \"and you probably want to press the blacklist button instead.\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"In future this verification process will be more sophisticated.\")\n )\n );\n\n function onFinished(confirm) {\n if (confirm) {\n _MatrixClientPeg2.default.get().setDeviceVerified(props.userId, props.device.deviceId, true);\n }\n props.onFinished(confirm);\n }\n\n return _react2.default.createElement(QuestionDialog, {\n title: (0, _languageHandler._t)(\"Verify device\"),\n description: body,\n button: (0, _languageHandler._t)(\"I verify that the keys match\"),\n onFinished: onFinished\n });\n}\n\nDeviceVerifyDialog.propTypes = {\n userId: _propTypes2.default.string.isRequired,\n device: _propTypes2.default.object.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=DeviceVerifyDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SyntaxHighlight = require('../elements/SyntaxHighlight');\n\nvar _SyntaxHighlight2 = _interopRequireDefault(_SyntaxHighlight);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DevtoolsComponent = function (_React$Component) {\n (0, _inherits3.default)(DevtoolsComponent, _React$Component);\n\n function DevtoolsComponent() {\n (0, _classCallCheck3.default)(this, DevtoolsComponent);\n return (0, _possibleConstructorReturn3.default)(this, (DevtoolsComponent.__proto__ || (0, _getPrototypeOf2.default)(DevtoolsComponent)).apply(this, arguments));\n }\n\n return DevtoolsComponent;\n}(_react2.default.Component);\n\nDevtoolsComponent.contextTypes = {\n roomId: _propTypes2.default.string.isRequired\n};\n\nvar GenericEditor = function (_DevtoolsComponent) {\n (0, _inherits3.default)(GenericEditor, _DevtoolsComponent);\n\n // static propTypes = {onBack: PropTypes.func.isRequired};\n\n function GenericEditor(props, context) {\n (0, _classCallCheck3.default)(this, GenericEditor);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (GenericEditor.__proto__ || (0, _getPrototypeOf2.default)(GenericEditor)).call(this, props, context));\n\n _this2._onChange = _this2._onChange.bind(_this2);\n _this2.onBack = _this2.onBack.bind(_this2);\n return _this2;\n }\n\n (0, _createClass3.default)(GenericEditor, [{\n key: 'onBack',\n value: function onBack() {\n if (this.state.message) {\n this.setState({ message: null });\n } else {\n this.props.onBack();\n }\n }\n }, {\n key: '_onChange',\n value: function _onChange(e) {\n this.setState((0, _defineProperty3.default)({}, e.target.id, e.target.type === 'checkbox' ? e.target.checked : e.target.value));\n }\n }, {\n key: '_buttons',\n value: function _buttons() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n ),\n !this.state.message && _react2.default.createElement(\n 'button',\n { onClick: this._send },\n (0, _languageHandler._t)('Send')\n )\n );\n }\n }, {\n key: 'textInput',\n value: function textInput(id, label) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_inputRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_inputLabelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: id },\n label\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_inputCell' },\n _react2.default.createElement('input', { id: id, className: 'mx_TextInputDialog_input', onChange: this._onChange, value: this.state[id], size: '32', autoFocus: true })\n )\n );\n }\n }]);\n return GenericEditor;\n}(DevtoolsComponent);\n\nvar SendCustomEvent = function (_GenericEditor) {\n (0, _inherits3.default)(SendCustomEvent, _GenericEditor);\n (0, _createClass3.default)(SendCustomEvent, null, [{\n key: 'getLabel',\n value: function getLabel() {\n return (0, _languageHandler._t)('Send Custom Event');\n }\n }]);\n\n function SendCustomEvent(props, context) {\n (0, _classCallCheck3.default)(this, SendCustomEvent);\n\n var _this3 = (0, _possibleConstructorReturn3.default)(this, (SendCustomEvent.__proto__ || (0, _getPrototypeOf2.default)(SendCustomEvent)).call(this, props, context));\n\n _this3._send = _this3._send.bind(_this3);\n\n var _Object$assign = (0, _assign2.default)({\n eventType: '',\n stateKey: '',\n evContent: '{\\n\\n}'\n }, _this3.props.inputs),\n eventType = _Object$assign.eventType,\n stateKey = _Object$assign.stateKey,\n evContent = _Object$assign.evContent;\n\n _this3.state = {\n isStateEvent: Boolean(_this3.props.forceStateEvent),\n\n eventType: eventType,\n stateKey: stateKey,\n evContent: evContent\n };\n return _this3;\n }\n\n (0, _createClass3.default)(SendCustomEvent, [{\n key: 'send',\n value: function send(content) {\n var cli = _MatrixClientPeg2.default.get();\n if (this.state.isStateEvent) {\n return cli.sendStateEvent(this.context.roomId, this.state.eventType, content, this.state.stateKey);\n } else {\n return cli.sendEvent(this.context.roomId, this.state.eventType, content);\n }\n }\n }, {\n key: '_send',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var message, content;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(this.state.eventType === '')) {\n _context.next = 3;\n break;\n }\n\n this.setState({ message: (0, _languageHandler._t)('You must specify an event type!') });\n return _context.abrupt('return');\n\n case 3:\n message = void 0;\n _context.prev = 4;\n content = JSON.parse(this.state.evContent);\n _context.next = 8;\n return (0, _bluebird.resolve)(this.send(content));\n\n case 8:\n message = (0, _languageHandler._t)('Event sent!');\n _context.next = 14;\n break;\n\n case 11:\n _context.prev = 11;\n _context.t0 = _context['catch'](4);\n\n message = (0, _languageHandler._t)('Failed to send custom event.') + ' (' + _context.t0.toString() + ')';\n\n case 14:\n this.setState({ message: message });\n\n case 15:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 11]]);\n }));\n\n function _send() {\n return _ref.apply(this, arguments);\n }\n\n return _send;\n }()\n }, {\n key: 'render',\n value: function render() {\n if (this.state.message) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n this.state.message\n ),\n this._buttons()\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_content' },\n this.textInput('eventType', (0, _languageHandler._t)('Event Type')),\n this.state.isStateEvent && this.textInput('stateKey', (0, _languageHandler._t)('State Key')),\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_inputLabelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'evContent' },\n ' ',\n (0, _languageHandler._t)('Event Content'),\n ' '\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('textarea', { id: 'evContent', onChange: this._onChange, value: this.state.evContent, className: 'mx_DevTools_textarea' })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n ),\n !this.state.message && _react2.default.createElement(\n 'button',\n { onClick: this._send },\n (0, _languageHandler._t)('Send')\n ),\n !this.state.message && !this.props.forceStateEvent && _react2.default.createElement(\n 'div',\n { style: { float: \"right\" } },\n _react2.default.createElement('input', { id: 'isStateEvent', className: 'mx_DevTools_tgl mx_DevTools_tgl-flip', type: 'checkbox', onChange: this._onChange, checked: this.state.isStateEvent }),\n _react2.default.createElement('label', { className: 'mx_DevTools_tgl-btn', 'data-tg-off': 'Event', 'data-tg-on': 'State Event', htmlFor: 'isStateEvent' })\n )\n )\n );\n }\n }]);\n return SendCustomEvent;\n}(GenericEditor);\n\nSendCustomEvent.propTypes = {\n onBack: _propTypes2.default.func.isRequired,\n forceStateEvent: _propTypes2.default.bool,\n inputs: _propTypes2.default.object\n};\n\nvar SendAccountData = function (_GenericEditor2) {\n (0, _inherits3.default)(SendAccountData, _GenericEditor2);\n (0, _createClass3.default)(SendAccountData, null, [{\n key: 'getLabel',\n value: function getLabel() {\n return (0, _languageHandler._t)('Send Account Data');\n }\n }]);\n\n function SendAccountData(props, context) {\n (0, _classCallCheck3.default)(this, SendAccountData);\n\n var _this4 = (0, _possibleConstructorReturn3.default)(this, (SendAccountData.__proto__ || (0, _getPrototypeOf2.default)(SendAccountData)).call(this, props, context));\n\n _this4._send = _this4._send.bind(_this4);\n\n var _Object$assign3 = (0, _assign2.default)({\n eventType: '',\n evContent: '{\\n\\n}'\n }, _this4.props.inputs),\n eventType = _Object$assign3.eventType,\n evContent = _Object$assign3.evContent;\n\n _this4.state = {\n isRoomAccountData: Boolean(_this4.props.isRoomAccountData),\n\n eventType: eventType,\n evContent: evContent\n };\n return _this4;\n }\n\n (0, _createClass3.default)(SendAccountData, [{\n key: 'send',\n value: function send(content) {\n var cli = _MatrixClientPeg2.default.get();\n if (this.state.isRoomAccountData) {\n return cli.setRoomAccountData(this.context.roomId, this.state.eventType, content);\n }\n return cli.setAccountData(this.state.eventType, content);\n }\n }, {\n key: '_send',\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var message, content;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(this.state.eventType === '')) {\n _context2.next = 3;\n break;\n }\n\n this.setState({ message: (0, _languageHandler._t)('You must specify an event type!') });\n return _context2.abrupt('return');\n\n case 3:\n message = void 0;\n _context2.prev = 4;\n content = JSON.parse(this.state.evContent);\n _context2.next = 8;\n return (0, _bluebird.resolve)(this.send(content));\n\n case 8:\n message = (0, _languageHandler._t)('Event sent!');\n _context2.next = 14;\n break;\n\n case 11:\n _context2.prev = 11;\n _context2.t0 = _context2['catch'](4);\n\n message = (0, _languageHandler._t)('Failed to send custom event.') + ' (' + _context2.t0.toString() + ')';\n\n case 14:\n this.setState({ message: message });\n\n case 15:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[4, 11]]);\n }));\n\n function _send() {\n return _ref2.apply(this, arguments);\n }\n\n return _send;\n }()\n }, {\n key: 'render',\n value: function render() {\n if (this.state.message) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n this.state.message\n ),\n this._buttons()\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_content' },\n this.textInput('eventType', (0, _languageHandler._t)('Event Type')),\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_inputLabelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'evContent' },\n ' ',\n (0, _languageHandler._t)('Event Content'),\n ' '\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('textarea', { id: 'evContent', onChange: this._onChange, value: this.state.evContent, className: 'mx_DevTools_textarea' })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n ),\n !this.state.message && _react2.default.createElement(\n 'button',\n { onClick: this._send },\n (0, _languageHandler._t)('Send')\n ),\n !this.state.message && _react2.default.createElement(\n 'div',\n { style: { float: \"right\" } },\n _react2.default.createElement('input', { id: 'isRoomAccountData', className: 'mx_DevTools_tgl mx_DevTools_tgl-flip', type: 'checkbox', onChange: this._onChange, checked: this.state.isRoomAccountData, disabled: this.props.forceMode }),\n _react2.default.createElement('label', { className: 'mx_DevTools_tgl-btn', 'data-tg-off': 'Account Data', 'data-tg-on': 'Room Data', htmlFor: 'isRoomAccountData' })\n )\n )\n );\n }\n }]);\n return SendAccountData;\n}(GenericEditor);\n\nSendAccountData.propTypes = {\n isRoomAccountData: _propTypes2.default.bool,\n forceMode: _propTypes2.default.bool,\n inputs: _propTypes2.default.object\n};\n\n\nvar INITIAL_LOAD_TILES = 20;\nvar LOAD_TILES_STEP_SIZE = 50;\n\nvar FilteredList = function (_React$Component2) {\n (0, _inherits3.default)(FilteredList, _React$Component2);\n (0, _createClass3.default)(FilteredList, null, [{\n key: 'filterChildren',\n value: function filterChildren(children, query) {\n if (!query) return children;\n var lcQuery = query.toLowerCase();\n return children.filter(function (child) {\n return child.key.toLowerCase().includes(lcQuery);\n });\n }\n }]);\n\n function FilteredList(props, context) {\n (0, _classCallCheck3.default)(this, FilteredList);\n\n var _this5 = (0, _possibleConstructorReturn3.default)(this, (FilteredList.__proto__ || (0, _getPrototypeOf2.default)(FilteredList)).call(this, props, context));\n\n _this5.showAll = function () {\n _this5.setState({\n truncateAt: _this5.state.truncateAt + LOAD_TILES_STEP_SIZE\n });\n };\n\n _this5.createOverflowElement = function (overflowCount, totalCount) {\n return _react2.default.createElement(\n 'button',\n { className: 'mx_DevTools_RoomStateExplorer_button', onClick: _this5.showAll },\n (0, _languageHandler._t)(\"and %(count)s others...\", { count: overflowCount })\n );\n };\n\n _this5.onQuery = function (ev) {\n if (_this5.props.onChange) _this5.props.onChange(ev.target.value);\n };\n\n _this5.getChildren = function (start, end) {\n return _this5.state.filteredChildren.slice(start, end);\n };\n\n _this5.getChildCount = function () {\n return _this5.state.filteredChildren.length;\n };\n\n _this5.state = {\n filteredChildren: FilteredList.filterChildren(_this5.props.children, _this5.props.query),\n truncateAt: INITIAL_LOAD_TILES\n };\n return _this5;\n }\n\n (0, _createClass3.default)(FilteredList, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (this.props.children === nextProps.children && this.props.query === nextProps.query) return;\n this.setState({\n filteredChildren: FilteredList.filterChildren(nextProps.children, nextProps.query),\n truncateAt: INITIAL_LOAD_TILES\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var TruncatedList = _index2.default.getComponent(\"elements.TruncatedList\");\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { size: '64',\n autoFocus: true,\n onChange: this.onQuery,\n value: this.props.query,\n placeholder: (0, _languageHandler._t)('Filter results'),\n className: 'mx_TextInputDialog_input mx_DevTools_RoomStateExplorer_query'\n // force re-render so that autoFocus is applied when this component is re-used\n , key: this.props.children[0] ? this.props.children[0].key : '' }),\n _react2.default.createElement(TruncatedList, { getChildren: this.getChildren,\n getChildCount: this.getChildCount,\n truncateAt: this.state.truncateAt,\n createOverflowElement: this.createOverflowElement })\n );\n }\n }]);\n return FilteredList;\n}(_react2.default.Component);\n\nFilteredList.propTypes = {\n children: _propTypes2.default.any,\n query: _propTypes2.default.string,\n onChange: _propTypes2.default.func\n};\n\nvar RoomStateExplorer = function (_DevtoolsComponent2) {\n (0, _inherits3.default)(RoomStateExplorer, _DevtoolsComponent2);\n (0, _createClass3.default)(RoomStateExplorer, null, [{\n key: 'getLabel',\n value: function getLabel() {\n return (0, _languageHandler._t)('Explore Room State');\n }\n }]);\n\n function RoomStateExplorer(props, context) {\n (0, _classCallCheck3.default)(this, RoomStateExplorer);\n\n var _this6 = (0, _possibleConstructorReturn3.default)(this, (RoomStateExplorer.__proto__ || (0, _getPrototypeOf2.default)(RoomStateExplorer)).call(this, props, context));\n\n var room = _MatrixClientPeg2.default.get().getRoom(_this6.context.roomId);\n _this6.roomStateEvents = room.currentState.events;\n\n _this6.onBack = _this6.onBack.bind(_this6);\n _this6.editEv = _this6.editEv.bind(_this6);\n _this6.onQueryEventType = _this6.onQueryEventType.bind(_this6);\n _this6.onQueryStateKey = _this6.onQueryStateKey.bind(_this6);\n\n _this6.state = {\n eventType: null,\n event: null,\n editing: false,\n\n queryEventType: '',\n queryStateKey: ''\n };\n return _this6;\n }\n\n (0, _createClass3.default)(RoomStateExplorer, [{\n key: 'browseEventType',\n value: function browseEventType(eventType) {\n var _this7 = this;\n\n return function () {\n _this7.setState({ eventType: eventType });\n };\n }\n }, {\n key: 'onViewSourceClick',\n value: function onViewSourceClick(event) {\n var _this8 = this;\n\n return function () {\n _this8.setState({ event: event });\n };\n }\n }, {\n key: 'onBack',\n value: function onBack() {\n if (this.state.editing) {\n this.setState({ editing: false });\n } else if (this.state.event) {\n this.setState({ event: null });\n } else if (this.state.eventType) {\n this.setState({ eventType: null });\n } else {\n this.props.onBack();\n }\n }\n }, {\n key: 'editEv',\n value: function editEv() {\n this.setState({ editing: true });\n }\n }, {\n key: 'onQueryEventType',\n value: function onQueryEventType(filterEventType) {\n this.setState({ queryEventType: filterEventType });\n }\n }, {\n key: 'onQueryStateKey',\n value: function onQueryStateKey(filterStateKey) {\n this.setState({ queryStateKey: filterStateKey });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this9 = this;\n\n if (this.state.event) {\n if (this.state.editing) {\n return _react2.default.createElement(SendCustomEvent, { forceStateEvent: true, onBack: this.onBack, inputs: {\n eventType: this.state.event.getType(),\n evContent: (0, _stringify2.default)(this.state.event.getContent(), null, '\\t'),\n stateKey: this.state.event.getStateKey()\n } });\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ViewSource' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n _SyntaxHighlight2.default,\n { className: 'json' },\n (0, _stringify2.default)(this.state.event.event, null, 2)\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n ),\n _react2.default.createElement(\n 'button',\n { onClick: this.editEv },\n (0, _languageHandler._t)('Edit')\n )\n )\n );\n }\n\n var list = null;\n\n var classes = 'mx_DevTools_RoomStateExplorer_button';\n if (this.state.eventType === null) {\n list = _react2.default.createElement(\n FilteredList,\n { query: this.state.queryEventType, onChange: this.onQueryEventType },\n (0, _keys2.default)(this.roomStateEvents).map(function (evType) {\n var stateGroup = _this9.roomStateEvents[evType];\n var stateKeys = (0, _keys2.default)(stateGroup);\n\n var onClickFn = void 0;\n if (stateKeys.length === 1 && stateKeys[0] === '') {\n onClickFn = _this9.onViewSourceClick(stateGroup[stateKeys[0]]);\n } else {\n onClickFn = _this9.browseEventType(evType);\n }\n\n return _react2.default.createElement(\n 'button',\n { className: classes, key: evType, onClick: onClickFn },\n evType\n );\n })\n );\n } else {\n var stateGroup = this.roomStateEvents[this.state.eventType];\n\n list = _react2.default.createElement(\n FilteredList,\n { query: this.state.queryStateKey, onChange: this.onQueryStateKey },\n (0, _keys2.default)(stateGroup).map(function (stateKey) {\n var ev = stateGroup[stateKey];\n return _react2.default.createElement(\n 'button',\n { className: classes, key: stateKey, onClick: _this9.onViewSourceClick(ev) },\n stateKey\n );\n })\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n list\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n )\n )\n );\n }\n }]);\n return RoomStateExplorer;\n}(DevtoolsComponent);\n\nRoomStateExplorer.propTypes = {\n onBack: _propTypes2.default.func.isRequired\n};\n\nvar AccountDataExplorer = function (_DevtoolsComponent3) {\n (0, _inherits3.default)(AccountDataExplorer, _DevtoolsComponent3);\n (0, _createClass3.default)(AccountDataExplorer, null, [{\n key: 'getLabel',\n value: function getLabel() {\n return (0, _languageHandler._t)('Explore Account Data');\n }\n }]);\n\n function AccountDataExplorer(props, context) {\n (0, _classCallCheck3.default)(this, AccountDataExplorer);\n\n var _this10 = (0, _possibleConstructorReturn3.default)(this, (AccountDataExplorer.__proto__ || (0, _getPrototypeOf2.default)(AccountDataExplorer)).call(this, props, context));\n\n _this10.onBack = _this10.onBack.bind(_this10);\n _this10.editEv = _this10.editEv.bind(_this10);\n _this10._onChange = _this10._onChange.bind(_this10);\n _this10.onQueryEventType = _this10.onQueryEventType.bind(_this10);\n\n _this10.state = {\n isRoomAccountData: false,\n event: null,\n editing: false,\n\n queryEventType: ''\n };\n return _this10;\n }\n\n (0, _createClass3.default)(AccountDataExplorer, [{\n key: 'getData',\n value: function getData() {\n var cli = _MatrixClientPeg2.default.get();\n if (this.state.isRoomAccountData) {\n return cli.getRoom(this.context.roomId).accountData;\n }\n return cli.store.accountData;\n }\n }, {\n key: 'onViewSourceClick',\n value: function onViewSourceClick(event) {\n var _this11 = this;\n\n return function () {\n _this11.setState({ event: event });\n };\n }\n }, {\n key: 'onBack',\n value: function onBack() {\n if (this.state.editing) {\n this.setState({ editing: false });\n } else if (this.state.event) {\n this.setState({ event: null });\n } else {\n this.props.onBack();\n }\n }\n }, {\n key: '_onChange',\n value: function _onChange(e) {\n this.setState((0, _defineProperty3.default)({}, e.target.id, e.target.type === 'checkbox' ? e.target.checked : e.target.value));\n }\n }, {\n key: 'editEv',\n value: function editEv() {\n this.setState({ editing: true });\n }\n }, {\n key: 'onQueryEventType',\n value: function onQueryEventType(queryEventType) {\n this.setState({ queryEventType: queryEventType });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this12 = this;\n\n if (this.state.event) {\n if (this.state.editing) {\n return _react2.default.createElement(SendAccountData, { isRoomAccountData: this.state.isRoomAccountData, onBack: this.onBack, inputs: {\n eventType: this.state.event.getType(),\n evContent: (0, _stringify2.default)(this.state.event.getContent(), null, '\\t')\n }, forceMode: true });\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ViewSource' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_content' },\n _react2.default.createElement(\n _SyntaxHighlight2.default,\n { className: 'json' },\n (0, _stringify2.default)(this.state.event.event, null, 2)\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n ),\n _react2.default.createElement(\n 'button',\n { onClick: this.editEv },\n (0, _languageHandler._t)('Edit')\n )\n )\n );\n }\n\n var rows = [];\n\n var classes = 'mx_DevTools_RoomStateExplorer_button';\n\n var data = this.getData();\n (0, _keys2.default)(data).forEach(function (evType) {\n var ev = data[evType];\n rows.push(_react2.default.createElement(\n 'button',\n { className: classes, key: evType, onClick: _this12.onViewSourceClick(ev) },\n evType\n ));\n });\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n FilteredList,\n { query: this.state.queryEventType, onChange: this.onQueryEventType },\n rows\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n ),\n !this.state.message && _react2.default.createElement(\n 'div',\n { style: { float: \"right\" } },\n _react2.default.createElement('input', { id: 'isRoomAccountData', className: 'mx_DevTools_tgl mx_DevTools_tgl-flip', type: 'checkbox', onChange: this._onChange, checked: this.state.isRoomAccountData }),\n _react2.default.createElement('label', { className: 'mx_DevTools_tgl-btn', 'data-tg-off': 'Account Data', 'data-tg-on': 'Room Data', htmlFor: 'isRoomAccountData' })\n )\n )\n );\n }\n }]);\n return AccountDataExplorer;\n}(DevtoolsComponent);\n\nAccountDataExplorer.propTypes = {\n onBack: _propTypes2.default.func.isRequired\n};\n\n\nvar Entries = [SendCustomEvent, RoomStateExplorer, SendAccountData, AccountDataExplorer];\n\nvar DevtoolsDialog = function (_React$Component3) {\n (0, _inherits3.default)(DevtoolsDialog, _React$Component3);\n\n function DevtoolsDialog(props, context) {\n (0, _classCallCheck3.default)(this, DevtoolsDialog);\n\n var _this13 = (0, _possibleConstructorReturn3.default)(this, (DevtoolsDialog.__proto__ || (0, _getPrototypeOf2.default)(DevtoolsDialog)).call(this, props, context));\n\n _this13.onBack = _this13.onBack.bind(_this13);\n _this13.onCancel = _this13.onCancel.bind(_this13);\n\n _this13.state = {\n mode: null\n };\n return _this13;\n }\n\n (0, _createClass3.default)(DevtoolsDialog, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: 'getChildContext',\n value: function getChildContext() {\n return { roomId: this.props.roomId };\n }\n }, {\n key: '_setMode',\n value: function _setMode(mode) {\n var _this14 = this;\n\n return function () {\n _this14.setState({ mode: mode });\n };\n }\n }, {\n key: 'onBack',\n value: function onBack() {\n if (this.prevMode) {\n this.setState({ mode: this.prevMode });\n this.prevMode = null;\n } else {\n this.setState({ mode: null });\n }\n }\n }, {\n key: 'onCancel',\n value: function onCancel() {\n this.props.onFinished(false);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this15 = this;\n\n var body = void 0;\n\n if (this.state.mode) {\n body = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_label_left' },\n this.state.mode.getLabel()\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_label_right' },\n 'Room ID: ',\n this.props.roomId\n ),\n _react2.default.createElement('div', { className: 'mx_DevTools_label_bottom' }),\n _react2.default.createElement(this.state.mode, { onBack: this.onBack })\n );\n } else {\n var classes = \"mx_DevTools_RoomStateExplorer_button\";\n body = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_label_left' },\n (0, _languageHandler._t)('Toolbox')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_label_right' },\n 'Room ID: ',\n this.props.roomId\n ),\n _react2.default.createElement('div', { className: 'mx_DevTools_label_bottom' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n Entries.map(function (Entry) {\n var label = Entry.getLabel();\n var onClick = _this15._setMode(Entry);\n return _react2.default.createElement(\n 'button',\n { className: classes, key: label, onClick: onClick },\n label\n );\n })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onCancel },\n (0, _languageHandler._t)('Cancel')\n )\n )\n );\n }\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_QuestionDialog', onFinished: this.props.onFinished, title: (0, _languageHandler._t)('Developer Tools') },\n body\n );\n }\n }]);\n return DevtoolsDialog;\n}(_react2.default.Component);\n\nDevtoolsDialog.childContextTypes = {\n roomId: _propTypes2.default.string.isRequired\n // client: PropTypes.instanceOf(MatixClient),\n};\nDevtoolsDialog.propTypes = {\n roomId: _propTypes2.default.string.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n};\nexports.default = DevtoolsDialog;\nmodule.exports = exports['default'];\n//# sourceMappingURL=DevtoolsDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/*\n * Usage:\n * Modal.createTrackedDialog('An Identifier', 'some detail', ErrorDialog, {\n * title: \"some text\", (default: \"Error\")\n * description: \"some more text\",\n * button: \"Button Text\",\n * onFinished: someFunction,\n * focus: true|false (default: true)\n * });\n */\n\nexports.default = _react2.default.createClass({\n displayName: 'ErrorDialog',\n propTypes: {\n title: _propTypes2.default.string,\n description: _propTypes2.default.oneOfType([_propTypes2.default.element, _propTypes2.default.string]),\n button: _propTypes2.default.string,\n focus: _propTypes2.default.bool,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n focus: true,\n title: null,\n description: null,\n button: null\n };\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_ErrorDialog', onFinished: this.props.onFinished,\n title: this.props.title || (0, _languageHandler._t)('Error'),\n contentId: 'mx_Dialog_content'\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n this.props.description || (0, _languageHandler._t)('An error has occurred.')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { className: 'mx_Dialog_primary', onClick: this.props.onFinished, autoFocus: this.props.focus },\n this.props.button || (0, _languageHandler._t)('OK')\n )\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=ErrorDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'InteractiveAuthDialog',\n\n propTypes: {\n // matrix client to use for UI auth requests\n matrixClient: _propTypes2.default.object.isRequired,\n\n // response from initial request. If not supplied, will do a request on\n // mount.\n authData: _propTypes2.default.shape({\n flows: _propTypes2.default.array,\n params: _propTypes2.default.object,\n session: _propTypes2.default.string\n }),\n\n // callback\n makeRequest: _propTypes2.default.func.isRequired,\n\n onFinished: _propTypes2.default.func.isRequired,\n\n title: _propTypes2.default.string\n },\n\n getInitialState: function getInitialState() {\n return {\n authError: null\n };\n },\n\n _onAuthFinished: function _onAuthFinished(success, result) {\n if (success) {\n this.props.onFinished(true, result);\n } else {\n this.setState({\n authError: result\n });\n }\n },\n\n _onDismissClick: function _onDismissClick() {\n this.props.onFinished(false);\n },\n\n render: function render() {\n var InteractiveAuth = _index2.default.getComponent(\"structures.InteractiveAuth\");\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n\n var content = void 0;\n if (this.state.authError) {\n content = _react2.default.createElement(\n 'div',\n { id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { role: 'alert' },\n this.state.authError.message || this.state.authError.toString()\n ),\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._onDismissClick,\n className: 'mx_UserSettings_button',\n autoFocus: 'true'\n },\n (0, _languageHandler._t)(\"Dismiss\")\n )\n );\n } else {\n content = _react2.default.createElement(\n 'div',\n { id: 'mx_Dialog_content' },\n _react2.default.createElement(InteractiveAuth, { ref: this._collectInteractiveAuth,\n matrixClient: this.props.matrixClient,\n authData: this.props.authData,\n makeRequest: this.props.makeRequest,\n onAuthFinished: this._onAuthFinished\n })\n );\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_InteractiveAuthDialog',\n onFinished: this.props.onFinished,\n title: this.state.authError ? 'Error' : this.props.title || (0, _languageHandler._t)('Authentication'),\n contentId: 'mx_Dialog_content'\n },\n content\n );\n }\n}); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=InteractiveAuthDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Dialog which asks the user whether they want to share their keys with\n * an unverified device.\n *\n * onFinished is called with `true` if the key should be shared, `false` if it\n * should not, and `undefined` if the dialog is cancelled. (In other words:\n * truthy: do the key share. falsy: don't share the keys).\n */\nexports.default = _react2.default.createClass({\n displayName: 'KeyShareDialog',\n\n propTypes: {\n matrixClient: _propTypes2.default.object.isRequired,\n userId: _propTypes2.default.string.isRequired,\n deviceId: _propTypes2.default.string.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n deviceInfo: null,\n wasNewDevice: false\n };\n },\n\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n this._unmounted = false;\n var userId = this.props.userId;\n var deviceId = this.props.deviceId;\n\n // give the client a chance to refresh the device list\n this.props.matrixClient.downloadKeys([userId], false).then(function (r) {\n if (_this._unmounted) {\n return;\n }\n\n var deviceInfo = r[userId][deviceId];\n\n if (!deviceInfo) {\n console.warn('No details found for device ' + userId + ':' + deviceId);\n\n _this.props.onFinished(false);\n return;\n }\n\n var wasNewDevice = !deviceInfo.isKnown();\n\n _this.setState({\n deviceInfo: deviceInfo,\n wasNewDevice: wasNewDevice\n });\n\n // if the device was new before, it's not any more.\n if (wasNewDevice) {\n _this.props.matrixClient.setDeviceKnown(userId, deviceId, true);\n }\n }).done();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n _onVerifyClicked: function _onVerifyClicked() {\n var _this2 = this;\n\n var DeviceVerifyDialog = _index2.default.getComponent('views.dialogs.DeviceVerifyDialog');\n\n console.log(\"KeyShareDialog: Starting verify dialog\");\n _Modal2.default.createTrackedDialog('Key Share', 'Starting dialog', DeviceVerifyDialog, {\n userId: this.props.userId,\n device: this.state.deviceInfo,\n onFinished: function onFinished(verified) {\n if (verified) {\n // can automatically share the keys now.\n _this2.props.onFinished(true);\n }\n }\n });\n },\n\n _onShareClicked: function _onShareClicked() {\n console.log(\"KeyShareDialog: User clicked 'share'\");\n this.props.onFinished(true);\n },\n\n _onIgnoreClicked: function _onIgnoreClicked() {\n console.log(\"KeyShareDialog: User clicked 'ignore'\");\n this.props.onFinished(false);\n },\n\n _renderContent: function _renderContent() {\n var displayName = this.state.deviceInfo.getDisplayName() || this.state.deviceInfo.deviceId;\n\n var text = void 0;\n if (this.state.wasNewDevice) {\n text = (0, _languageHandler._td)(\"You added a new device '%(displayName)s', which is\" + \" requesting encryption keys.\");\n } else {\n text = (0, _languageHandler._td)(\"Your unverified device '%(displayName)s' is requesting\" + \" encryption keys.\");\n }\n text = (0, _languageHandler._t)(text, { displayName: displayName });\n\n return _react2.default.createElement(\n 'div',\n { id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n text\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this._onVerifyClicked, autoFocus: 'true' },\n (0, _languageHandler._t)('Start verification')\n ),\n _react2.default.createElement(\n 'button',\n { onClick: this._onShareClicked },\n (0, _languageHandler._t)('Share without verifying')\n ),\n _react2.default.createElement(\n 'button',\n { onClick: this._onIgnoreClicked },\n (0, _languageHandler._t)('Ignore request')\n )\n )\n );\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var Spinner = _index2.default.getComponent('views.elements.Spinner');\n\n var content = void 0;\n\n if (this.state.deviceInfo) {\n content = this._renderContent();\n } else {\n content = _react2.default.createElement(\n 'div',\n { id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Loading device info...')\n ),\n _react2.default.createElement(Spinner, null)\n );\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_KeyShareRequestDialog',\n onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('Encryption key request'),\n contentId: 'mx_Dialog_content'\n },\n content\n );\n }\n}); /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=KeyShareDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _QuestionDialog = require('./QuestionDialog');\n\nvar _QuestionDialog2 = _interopRequireDefault(_QuestionDialog);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (props) {\n var description1 = (0, _languageHandler._t)(\"You've previously used Riot on %(host)s with lazy loading of members enabled. \" + \"In this version lazy loading is disabled. \" + \"As the local cache is not compatible between these two settings, \" + \"Riot needs to resync your account.\", { host: props.host });\n var description2 = (0, _languageHandler._t)(\"If the other version of Riot is still open in another tab, \" + \"please close it as using Riot on the same host with both \" + \"lazy loading enabled and disabled simultaneously will cause issues.\");\n\n return _react2.default.createElement(_QuestionDialog2.default, {\n hasCancelButton: false,\n title: (0, _languageHandler._t)(\"Incompatible local cache\"),\n description: _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n description1\n ),\n _react2.default.createElement(\n 'p',\n null,\n description2\n )\n ),\n button: (0, _languageHandler._t)(\"Clear cache and resync\"),\n onFinished: props.onFinished\n });\n}; /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=LazyLoadingDisabledDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _QuestionDialog = require('./QuestionDialog');\n\nvar _QuestionDialog2 = _interopRequireDefault(_QuestionDialog);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (props) {\n var description = (0, _languageHandler._t)(\"Riot now uses 3-5x less memory, by only loading information about other users\" + \" when needed. Please wait whilst we resynchronise with the server!\");\n\n return _react2.default.createElement(_QuestionDialog2.default, {\n hasCancelButton: false,\n title: (0, _languageHandler._t)(\"Updating Riot\"),\n description: _react2.default.createElement(\n 'div',\n null,\n description\n ),\n button: (0, _languageHandler._t)(\"OK\"),\n onFinished: props.onFinished\n });\n}; /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=LazyLoadingResyncDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'RoomUpgradeDialog',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n componentWillMount: function componentWillMount() {\n this._targetVersion = this.props.room.shouldUpgradeToVersion();\n },\n\n getInitialState: function getInitialState() {\n return {\n busy: false\n };\n },\n\n _onCancelClick: function _onCancelClick() {\n this.props.onFinished(false);\n },\n\n _onUpgradeClick: function _onUpgradeClick() {\n var _this = this;\n\n this.setState({ busy: true });\n _MatrixClientPeg2.default.get().upgradeRoom(this.props.room.roomId, this._targetVersion).catch(function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to upgrade room', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to upgrade room\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"The room upgrade could not be completed\")\n });\n }).finally(function () {\n _this.setState({ busy: false });\n });\n },\n\n render: function render() {\n var _React$createElement;\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n var Spinner = _index2.default.getComponent('views.elements.Spinner');\n\n var buttons = void 0;\n if (this.state.busy) {\n buttons = _react2.default.createElement(Spinner, null);\n } else {\n buttons = _react2.default.createElement(DialogButtons, {\n primaryButton: (0, _languageHandler._t)('Upgrade this room to version %(version)s', { version: this._targetVersion }),\n primaryButtonClass: 'danger',\n hasCancel: true,\n onPrimaryButtonClick: this._onUpgradeClick,\n focus: this.props.focus,\n onCancel: this._onCancelClick\n });\n }\n\n return _react2.default.createElement(\n BaseDialog,\n (_React$createElement = { className: 'mx_RoomUpgradeDialog',\n onFinished: this.onCancelled,\n title: (0, _languageHandler._t)(\"Upgrade Room Version\"),\n contentId: 'mx_Dialog_content'\n }, (0, _defineProperty3.default)(_React$createElement, 'onFinished', this.props.onFinished), (0, _defineProperty3.default)(_React$createElement, 'hasCancel', true), _React$createElement),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Upgrading this room requires closing down the current \" + \"instance of the room and creating a new room it its place. \" + \"To give room members the best possible experience, we will:\")\n ),\n _react2.default.createElement(\n 'ol',\n null,\n _react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)(\"Create a new room with the same name, description and avatar\")\n ),\n _react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)(\"Update any local room aliases to point to the new room\")\n ),\n _react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)(\"Stop users from speaking in the old version of the room, and post a message advising users to move to the new room\")\n ),\n _react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)(\"Put a link back to the old room at the start of the new room so people can see old messages\")\n )\n ),\n buttons\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomUpgradeDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'SessionRestoreErrorDialog',\n\n propTypes: {\n error: _propTypes2.default.string.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n _sendBugReport: function _sendBugReport() {\n var BugReportDialog = _index2.default.getComponent(\"dialogs.BugReportDialog\");\n _Modal2.default.createTrackedDialog('Session Restore Error', 'Send Bug Report Dialog', BugReportDialog, {});\n },\n\n _onClearStorageClick: function _onClearStorageClick() {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('Session Restore Confirm Logout', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Sign out\"),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Log out and remove encryption keys?\")\n ),\n button: (0, _languageHandler._t)(\"Sign out\"),\n danger: true,\n onFinished: this.props.onFinished\n });\n },\n\n _onRefreshClick: function _onRefreshClick() {\n // Is this likely to help? Probably not, but giving only one button\n // that clears your storage seems awful.\n window.location.reload(true);\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n\n var clearStorageButton = _react2.default.createElement(\n 'button',\n { onClick: this._onClearStorageClick, className: 'danger' },\n (0, _languageHandler._t)(\"Clear Storage and Sign Out\")\n );\n\n var dialogButtons = void 0;\n if (_SdkConfig2.default.get().bug_report_endpoint_url) {\n dialogButtons = _react2.default.createElement(\n DialogButtons,\n { primaryButton: (0, _languageHandler._t)(\"Send Logs\"),\n onPrimaryButtonClick: this._sendBugReport,\n focus: true,\n hasCancel: false\n },\n clearStorageButton\n );\n } else {\n dialogButtons = _react2.default.createElement(\n DialogButtons,\n { primaryButton: (0, _languageHandler._t)(\"Refresh\"),\n onPrimaryButtonClick: this._onRefreshClick,\n focus: true,\n hasCancel: false\n },\n clearStorageButton\n );\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_ErrorDialog', onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('Unable to restore session'),\n contentId: 'mx_Dialog_content',\n hasCancel: false\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"We encountered an error trying to restore your previous session.\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"If you have previously used a more recent version of Riot, your session \" + \"may be incompatible with this version. Close this window and return \" + \"to the more recent version.\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Clearing your browser's storage may fix the problem, but will sign you \" + \"out and cause any encrypted chat history to become unreadable.\")\n )\n ),\n dialogButtons\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=SessionRestoreErrorDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _email = require('../../../email');\n\nvar _email2 = _interopRequireDefault(_email);\n\nvar _AddThreepid = require('../../../AddThreepid');\n\nvar _AddThreepid2 = _interopRequireDefault(_AddThreepid);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Prompt the user to set an email address.\n *\n * On success, `onFinished(true)` is called.\n */\nexports.default = _react2.default.createClass({\n displayName: 'SetEmailDialog',\n propTypes: {\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n emailAddress: '',\n emailBusy: false\n };\n },\n\n onEmailAddressChanged: function onEmailAddressChanged(value) {\n this.setState({\n emailAddress: value\n });\n },\n\n onSubmit: function onSubmit() {\n var _this = this;\n\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n\n var emailAddress = this.state.emailAddress;\n if (!_email2.default.looksValid(emailAddress)) {\n _Modal2.default.createTrackedDialog('Invalid Email Address', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Invalid Email Address\"),\n description: (0, _languageHandler._t)(\"This doesn't appear to be a valid email address\")\n });\n return;\n }\n this._addThreepid = new _AddThreepid2.default();\n // we always bind emails when registering, so let's do the\n // same here.\n this._addThreepid.addEmailAddress(emailAddress, true).done(function () {\n _Modal2.default.createTrackedDialog('Verification Pending', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Verification Pending\"),\n description: (0, _languageHandler._t)(\"Please check your email and click on the link it contains. Once this \" + \"is done, click continue.\"),\n button: (0, _languageHandler._t)('Continue'),\n onFinished: _this.onEmailDialogFinished\n });\n }, function (err) {\n _this.setState({ emailBusy: false });\n console.error(\"Unable to add email address \" + emailAddress + \" \" + err);\n _Modal2.default.createTrackedDialog('Unable to add email address', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Unable to add email address\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n this.setState({ emailBusy: true });\n },\n\n onCancelled: function onCancelled() {\n this.props.onFinished(false);\n },\n\n onEmailDialogFinished: function onEmailDialogFinished(ok) {\n if (ok) {\n this.verifyEmailAddress();\n } else {\n this.setState({ emailBusy: false });\n }\n },\n\n verifyEmailAddress: function verifyEmailAddress() {\n var _this2 = this;\n\n this._addThreepid.checkEmailLinkClicked().done(function () {\n _this2.props.onFinished(true);\n }, function (err) {\n _this2.setState({ emailBusy: false });\n if (err.errcode == 'M_THREEPID_AUTH_FAILED') {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n var message = (0, _languageHandler._t)(\"Unable to verify email address.\") + \" \" + (0, _languageHandler._t)(\"Please check your email and click on the link it contains. Once this is done, click continue.\");\n _Modal2.default.createTrackedDialog('Verification Pending', '3pid Auth Failed', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Verification Pending\"),\n description: message,\n button: (0, _languageHandler._t)('Continue'),\n onFinished: _this2.onEmailDialogFinished\n });\n } else {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Unable to verify email address: \" + err);\n _Modal2.default.createTrackedDialog('Unable to verify email address', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Unable to verify email address.\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n }\n });\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var Spinner = _index2.default.getComponent('elements.Spinner');\n var EditableText = _index2.default.getComponent('elements.EditableText');\n\n var emailInput = this.state.emailBusy ? _react2.default.createElement(Spinner, null) : _react2.default.createElement(EditableText, {\n initialValue: this.state.emailAddress,\n className: 'mx_SetEmailDialog_email_input',\n autoFocus: 'true',\n placeholder: (0, _languageHandler._t)(\"Email address\"),\n placeholderClassName: 'mx_SetEmailDialog_email_input_placeholder',\n blurToCancel: false,\n onValueChanged: this.onEmailAddressChanged });\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_SetEmailDialog',\n onFinished: this.onCancelled,\n title: this.props.title,\n contentId: 'mx_Dialog_content'\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n { id: 'mx_Dialog_content' },\n (0, _languageHandler._t)('This will allow you to reset your password and receive notifications.')\n ),\n emailInput\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement('input', { className: 'mx_Dialog_primary',\n type: 'submit',\n value: (0, _languageHandler._t)(\"Continue\"),\n onClick: this.onSubmit\n }),\n _react2.default.createElement('input', {\n type: 'submit',\n value: (0, _languageHandler._t)(\"Skip\"),\n onClick: this.onCancelled\n })\n )\n );\n }\n}); /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=SetEmailDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _Keyboard = require('../../../Keyboard');\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Registration = require('../../../Registration');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The amount of time to wait for further changes to the input username before\n// sending a request to the server\nvar USERNAME_CHECK_DEBOUNCE_MS = 250;\n\n/**\n * Prompt the user to set a display name.\n *\n * On success, `onFinished(true, newDisplayName)` is called.\n */\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'SetMxIdDialog',\n propTypes: {\n onFinished: _propTypes2.default.func.isRequired,\n // Called when the user requests to register with a different homeserver\n onDifferentServerClicked: _propTypes2.default.func.isRequired,\n // Called if the user wants to switch to login instead\n onLoginClick: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n // The entered username\n username: '',\n // Indicate ongoing work on the username\n usernameBusy: false,\n // Indicate error with username\n usernameError: '',\n // Assume the homeserver supports username checking until \"M_UNRECOGNIZED\"\n usernameCheckSupport: true,\n\n // Whether the auth UI is currently being used\n doingUIAuth: false,\n // Indicate error with auth\n authError: ''\n };\n },\n\n componentDidMount: function componentDidMount() {\n this.refs.input_value.select();\n\n this._matrixClient = _MatrixClientPeg2.default.get();\n },\n\n onValueChange: function onValueChange(ev) {\n var _this = this;\n\n this.setState({\n username: ev.target.value,\n usernameBusy: true,\n usernameError: ''\n }, function () {\n if (!_this.state.username || !_this.state.usernameCheckSupport) {\n _this.setState({\n usernameBusy: false\n });\n return;\n }\n\n // Debounce the username check to limit number of requests sent\n if (_this._usernameCheckTimeout) {\n clearTimeout(_this._usernameCheckTimeout);\n }\n _this._usernameCheckTimeout = setTimeout(function () {\n _this._doUsernameCheck().finally(function () {\n _this.setState({\n usernameBusy: false\n });\n });\n }, USERNAME_CHECK_DEBOUNCE_MS);\n });\n },\n\n onKeyUp: function onKeyUp(ev) {\n if (ev.keyCode === _Keyboard.KeyCode.ENTER) {\n this.onSubmit();\n }\n },\n\n onSubmit: function onSubmit(ev) {\n if (this.refs.uiAuth) {\n this.refs.uiAuth.tryContinue();\n }\n this.setState({\n doingUIAuth: true\n });\n },\n\n _doUsernameCheck: function _doUsernameCheck() {\n var _this2 = this;\n\n // We do a quick check ahead of the username availability API to ensure the\n // user ID roughly looks okay from a Matrix perspective.\n if (!_Registration.SAFE_LOCALPART_REGEX.test(this.state.username)) {\n this.setState({\n usernameError: (0, _languageHandler._t)(\"Only use lower case letters, numbers and '=_-./'\")\n });\n return _bluebird2.default.reject();\n }\n\n // Check if username is available\n return this._matrixClient.isUsernameAvailable(this.state.username).then(function (isAvailable) {\n if (isAvailable) {\n _this2.setState({ usernameError: '' });\n }\n }, function (err) {\n // Indicate whether the homeserver supports username checking\n var newState = {\n usernameCheckSupport: err.errcode !== \"M_UNRECOGNIZED\"\n };\n console.error('Error whilst checking username availability: ', err);\n switch (err.errcode) {\n case \"M_USER_IN_USE\":\n newState.usernameError = (0, _languageHandler._t)('Username not available');\n break;\n case \"M_INVALID_USERNAME\":\n newState.usernameError = (0, _languageHandler._t)('Username invalid: %(errMessage)s', { errMessage: err.message });\n break;\n case \"M_UNRECOGNIZED\":\n // This homeserver doesn't support username checking, assume it's\n // fine and rely on the error appearing in registration step.\n newState.usernameError = '';\n break;\n case undefined:\n newState.usernameError = (0, _languageHandler._t)('Something went wrong!');\n break;\n default:\n newState.usernameError = (0, _languageHandler._t)('An error occurred: %(error_string)s', { error_string: err.message });\n break;\n }\n _this2.setState(newState);\n });\n },\n\n _generatePassword: function _generatePassword() {\n return Math.random().toString(36).slice(2);\n },\n\n _makeRegisterRequest: function _makeRegisterRequest(auth) {\n // Not upgrading - changing mxids\n var guestAccessToken = null;\n if (!this._generatedPassword) {\n this._generatedPassword = this._generatePassword();\n }\n return this._matrixClient.register(this.state.username, this._generatedPassword, undefined, // session id: included in the auth dict already\n auth, {}, guestAccessToken);\n },\n\n _onUIAuthFinished: function _onUIAuthFinished(success, response) {\n this.setState({\n doingUIAuth: false\n });\n\n if (!success) {\n this.setState({ authError: response.message });\n return;\n }\n\n // XXX Implement RTS /register here\n var teamToken = null;\n\n this.props.onFinished(true, {\n userId: response.user_id,\n deviceId: response.device_id,\n homeserverUrl: this._matrixClient.getHomeserverUrl(),\n identityServerUrl: this._matrixClient.getIdentityServerUrl(),\n accessToken: response.access_token,\n password: this._generatedPassword,\n teamToken: teamToken\n });\n },\n\n render: function render() {\n var _this3 = this;\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var InteractiveAuth = _index2.default.getComponent('structures.InteractiveAuth');\n\n var auth = void 0;\n if (this.state.doingUIAuth) {\n auth = _react2.default.createElement(InteractiveAuth, {\n matrixClient: this._matrixClient,\n makeRequest: this._makeRegisterRequest,\n onAuthFinished: this._onUIAuthFinished,\n inputs: {},\n poll: true,\n ref: 'uiAuth',\n continueIsManaged: true\n });\n }\n var inputClasses = (0, _classnames2.default)({\n \"mx_SetMxIdDialog_input\": true,\n \"error\": Boolean(this.state.usernameError)\n });\n\n var usernameIndicator = null;\n if (this.state.usernameBusy) {\n usernameIndicator = _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Checking...\")\n );\n } else {\n var usernameAvailable = this.state.username && this.state.usernameCheckSupport && !this.state.usernameError;\n var usernameIndicatorClasses = (0, _classnames2.default)({\n \"error\": Boolean(this.state.usernameError),\n \"success\": usernameAvailable\n });\n usernameIndicator = _react2.default.createElement(\n 'div',\n { className: usernameIndicatorClasses, role: 'alert' },\n usernameAvailable ? (0, _languageHandler._t)('Username available') : this.state.usernameError\n );\n }\n\n var authErrorIndicator = null;\n if (this.state.authError) {\n authErrorIndicator = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.state.authError\n );\n }\n var canContinue = this.state.username && !this.state.usernameError && !this.state.usernameBusy;\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_SetMxIdDialog',\n onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('To get started, please pick a username!'),\n contentId: 'mx_Dialog_content'\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_SetMxIdDialog_input_group' },\n _react2.default.createElement('input', { type: 'text', ref: 'input_value', value: this.state.username,\n autoFocus: true,\n onChange: this.onValueChange,\n onKeyUp: this.onKeyUp,\n size: '30',\n className: inputClasses\n })\n ),\n usernameIndicator,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('This will be your account name on the <span></span> ' + 'homeserver, or you can pick a <a>different server</a>.', {}, {\n 'span': _react2.default.createElement(\n 'span',\n null,\n this.props.homeserverUrl\n ),\n 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: '#', onClick: _this3.props.onDifferentServerClicked },\n sub\n );\n }\n })\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('If you already have a Matrix account you can <a>log in</a> instead.', {}, { 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: '#', onClick: _this3.props.onLoginClick },\n sub\n );\n } })\n ),\n auth,\n authErrorIndicator\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement('input', { className: 'mx_Dialog_primary',\n type: 'submit',\n value: (0, _languageHandler._t)(\"Continue\"),\n onClick: this.onSubmit,\n disabled: !canContinue\n })\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=SetMxIdDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar WarmFuzzy = function WarmFuzzy(props) {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var title = (0, _languageHandler._t)('You have successfully set a password!');\n if (props.didSetEmail) {\n title = (0, _languageHandler._t)('You have successfully set a password and an email address!');\n }\n var advice = (0, _languageHandler._t)('You can now return to your account after signing out, and sign in on other devices.');\n var extraAdvice = null;\n if (!props.didSetEmail) {\n extraAdvice = (0, _languageHandler._t)('Remember, you can always set an email address in user settings if you change your mind.');\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_SetPasswordDialog',\n onFinished: props.onFinished,\n title: title\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n advice\n ),\n _react2.default.createElement(\n 'p',\n null,\n extraAdvice\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n {\n className: 'mx_Dialog_primary',\n autoFocus: true,\n onClick: props.onFinished },\n (0, _languageHandler._t)('Continue')\n )\n )\n );\n};\n\n/**\n * Prompt the user to set a password\n *\n * On success, `onFinished()` when finished\n */\nexports.default = _react2.default.createClass({\n displayName: 'SetPasswordDialog',\n propTypes: {\n onFinished: _react2.default.PropTypes.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n error: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n console.info('SetPasswordDialog component will mount');\n },\n\n _onPasswordChanged: function _onPasswordChanged(res) {\n var _this = this;\n\n _Modal2.default.createDialog(WarmFuzzy, {\n didSetEmail: res.didSetEmail,\n onFinished: function onFinished() {\n _this.props.onFinished();\n }\n });\n },\n\n _onPasswordChangeError: function _onPasswordChangeError(err) {\n var errMsg = err.error || \"\";\n if (err.httpStatus === 403) {\n errMsg = (0, _languageHandler._t)('Failed to change password. Is your password correct?');\n } else if (err.httpStatus) {\n errMsg += ' ' + (0, _languageHandler._t)('(HTTP status %(httpStatus)s)', { httpStatus: err.httpStatus });\n }\n this.setState({\n error: errMsg\n });\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var ChangePassword = _index2.default.getComponent('views.settings.ChangePassword');\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_SetPasswordDialog',\n onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('Please set a password!')\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('This will allow you to return to your account after signing out, and sign in on other devices.')\n ),\n _react2.default.createElement(ChangePassword, {\n className: 'mx_SetPasswordDialog_change_password',\n rowClassName: '',\n rowLabelClassName: '',\n rowInputClassName: '',\n buttonClassName: 'mx_Dialog_primary mx_SetPasswordDialog_change_password_button',\n confirm: false,\n autoFocusNewPasswordInput: true,\n shouldAskForEmail: true,\n onError: this._onPasswordChangeError,\n onFinished: this._onPasswordChanged }),\n _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.error\n )\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=SetPasswordDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _qrcodeReact = require('qrcode-react');\n\nvar _qrcodeReact2 = _interopRequireDefault(_qrcodeReact);\n\nvar _matrixTo = require('../../../matrix-to');\n\nvar _ContextualMenu = require('../../structures/ContextualMenu');\n\nvar ContextualMenu = _interopRequireWildcard(_ContextualMenu);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar socials = [{\n name: 'Facebook',\n img: 'img/social/facebook.png',\n url: function url(_url) {\n return 'https://www.facebook.com/sharer/sharer.php?u=' + _url;\n }\n}, {\n name: 'Twitter',\n img: 'img/social/twitter-2.png',\n url: function url(_url2) {\n return 'https://twitter.com/home?status=' + _url2;\n }\n}, /* // icon missing\n name: 'Google Plus',\n img: 'img/social/',\n url: (url) => `https://plus.google.com/share?url=${url}`,\n },*/{\n name: 'LinkedIn',\n img: 'img/social/linkedin.png',\n url: function url(_url3) {\n return 'https://www.linkedin.com/shareArticle?mini=true&url=' + _url3;\n }\n}, {\n name: 'Reddit',\n img: 'img/social/reddit.png',\n url: function url(_url4) {\n return 'http://www.reddit.com/submit?url=' + _url4;\n }\n}, {\n name: 'email',\n img: 'img/social/email-1.png',\n url: function url(_url5) {\n return 'mailto:?body=' + _url5;\n }\n}];\n\nvar ShareDialog = function (_React$Component) {\n (0, _inherits3.default)(ShareDialog, _React$Component);\n\n function ShareDialog(props) {\n (0, _classCallCheck3.default)(this, ShareDialog);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ShareDialog.__proto__ || (0, _getPrototypeOf2.default)(ShareDialog)).call(this, props));\n\n _this.onCopyClick = _this.onCopyClick.bind(_this);\n _this.onLinkSpecificEventCheckboxClick = _this.onLinkSpecificEventCheckboxClick.bind(_this);\n\n _this.state = {\n // MatrixEvent defaults to share linkSpecificEvent\n linkSpecificEvent: _this.props.target instanceof _matrixJsSdk.MatrixEvent\n };\n return _this;\n }\n\n (0, _createClass3.default)(ShareDialog, [{\n key: 'onCopyClick',\n value: function onCopyClick(e) {\n e.preventDefault();\n\n ShareDialog._selectText(this.refs.link);\n\n var successful = void 0;\n try {\n successful = document.execCommand('copy');\n } catch (err) {\n console.error('Failed to copy: ', err);\n }\n\n var GenericTextContextMenu = _index2.default.getComponent('context_menus.GenericTextContextMenu');\n var buttonRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = buttonRect.right + window.pageXOffset;\n var y = buttonRect.top + buttonRect.height / 2 + window.pageYOffset - 19;\n\n var _ContextualMenu$creat = ContextualMenu.createMenu(GenericTextContextMenu, {\n chevronOffset: 10,\n left: x,\n top: y,\n message: successful ? (0, _languageHandler._t)('Copied!') : (0, _languageHandler._t)('Failed to copy')\n }, false),\n close = _ContextualMenu$creat.close;\n\n e.target.onmouseleave = close;\n }\n }, {\n key: 'onLinkSpecificEventCheckboxClick',\n value: function onLinkSpecificEventCheckboxClick() {\n this.setState({\n linkSpecificEvent: !this.state.linkSpecificEvent\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var title = void 0;\n var matrixToUrl = void 0;\n\n var checkbox = void 0;\n\n if (this.props.target instanceof _matrixJsSdk.Room) {\n title = (0, _languageHandler._t)('Share Room');\n\n var events = this.props.target.getLiveTimeline().getEvents();\n if (events.length > 0) {\n checkbox = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { type: 'checkbox',\n id: 'mx_ShareDialog_checkbox',\n checked: this.state.linkSpecificEvent,\n onClick: this.onLinkSpecificEventCheckboxClick }),\n _react2.default.createElement(\n 'label',\n { htmlFor: 'mx_ShareDialog_checkbox' },\n (0, _languageHandler._t)('Link to most recent message')\n )\n );\n }\n\n if (this.state.linkSpecificEvent) {\n matrixToUrl = (0, _matrixTo.makeEventPermalink)(this.props.target.roomId, events[events.length - 1].getId());\n } else {\n matrixToUrl = (0, _matrixTo.makeRoomPermalink)(this.props.target.roomId);\n }\n } else if (this.props.target instanceof _matrixJsSdk.User || this.props.target instanceof _matrixJsSdk.RoomMember) {\n title = (0, _languageHandler._t)('Share User');\n matrixToUrl = (0, _matrixTo.makeUserPermalink)(this.props.target.userId);\n } else if (this.props.target instanceof _matrixJsSdk.Group) {\n title = (0, _languageHandler._t)('Share Community');\n matrixToUrl = (0, _matrixTo.makeGroupPermalink)(this.props.target.groupId);\n } else if (this.props.target instanceof _matrixJsSdk.MatrixEvent) {\n title = (0, _languageHandler._t)('Share Room Message');\n checkbox = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { type: 'checkbox',\n id: 'mx_ShareDialog_checkbox',\n checked: this.state.linkSpecificEvent,\n onClick: this.onLinkSpecificEventCheckboxClick }),\n _react2.default.createElement(\n 'label',\n { htmlFor: 'mx_ShareDialog_checkbox' },\n (0, _languageHandler._t)('Link to selected message')\n )\n );\n\n if (this.state.linkSpecificEvent) {\n matrixToUrl = (0, _matrixTo.makeEventPermalink)(this.props.target.getRoomId(), this.props.target.getId());\n } else {\n matrixToUrl = (0, _matrixTo.makeRoomPermalink)(this.props.target.getRoomId());\n }\n }\n\n var encodedUrl = encodeURIComponent(matrixToUrl);\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n return _react2.default.createElement(\n BaseDialog,\n { title: title,\n className: 'mx_ShareDialog',\n contentId: 'mx_Dialog_content',\n onFinished: this.props.onFinished\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ShareDialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ShareDialog_matrixto' },\n _react2.default.createElement(\n 'a',\n { ref: 'link',\n href: matrixToUrl,\n onClick: ShareDialog.onLinkClick,\n className: 'mx_ShareDialog_matrixto_link'\n },\n matrixToUrl\n ),\n _react2.default.createElement(\n 'a',\n { href: matrixToUrl, className: 'mx_ShareDialog_matrixto_copy', onClick: this.onCopyClick },\n (0, _languageHandler._t)('COPY'),\n _react2.default.createElement(\n 'div',\n null,\n '\\xA0'\n )\n )\n ),\n checkbox,\n _react2.default.createElement('hr', null),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ShareDialog_split' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ShareDialog_qrcode_container' },\n _react2.default.createElement(_qrcodeReact2.default, { value: matrixToUrl, size: 256, logoWidth: 48, logo: 'img/matrix-m.svg' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ShareDialog_social_container' },\n socials.map(function (social) {\n return _react2.default.createElement(\n 'a',\n { rel: 'noopener',\n target: '_blank',\n key: social.name,\n name: social.name,\n href: social.url(encodedUrl),\n className: 'mx_ShareDialog_social_icon'\n },\n _react2.default.createElement('img', { src: social.img, alt: social.name, height: 64, width: 64 })\n );\n })\n )\n )\n )\n );\n }\n }], [{\n key: '_selectText',\n value: function _selectText(target) {\n var range = document.createRange();\n range.selectNodeContents(target);\n\n var selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }, {\n key: 'onLinkClick',\n value: function onLinkClick(e) {\n e.preventDefault();\n var target = e.target;\n\n ShareDialog._selectText(target);\n }\n }]);\n return ShareDialog;\n}(_react2.default.Component);\n\nShareDialog.propTypes = {\n onFinished: _propTypes2.default.func.isRequired,\n target: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_matrixJsSdk.Room), _propTypes2.default.instanceOf(_matrixJsSdk.User), _propTypes2.default.instanceOf(_matrixJsSdk.Group), _propTypes2.default.instanceOf(_matrixJsSdk.RoomMember), _propTypes2.default.instanceOf(_matrixJsSdk.MatrixEvent)]).isRequired\n};\nexports.default = ShareDialog;\nmodule.exports = exports['default'];\n//# sourceMappingURL=ShareDialog.js.map","'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar PropTypes = require('prop-types');\nvar ReactDOM = require('react-dom');\nvar qr = require('qr.js');\n\nfunction getBackingStorePixelRatio(ctx) {\n return ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1;\n}\n\nvar getDOMNode;\nif (/^0\\.14/.test(React.version)) {\n getDOMNode = function getDOMNode(ref) {\n return ref;\n };\n} else {\n getDOMNode = function getDOMNode(ref) {\n return ReactDOM.findDOMNode(ref);\n };\n}\n\nvar QRCode = function (_React$Component) {\n _inherits(QRCode, _React$Component);\n\n function QRCode() {\n _classCallCheck(this, QRCode);\n\n return _possibleConstructorReturn(this, (QRCode.__proto__ || Object.getPrototypeOf(QRCode)).apply(this, arguments));\n }\n\n _createClass(QRCode, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps) {\n var that = this;\n return Object.keys(QRCode.propTypes).some(function (k) {\n return that.props[k] !== nextProps[k];\n });\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.update();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.update();\n }\n }, {\n key: 'utf16to8',\n value: function utf16to8(str) {\n var out, i, len, c;\n out = \"\";\n len = str.length;\n for (i = 0; i < len; i++) {\n c = str.charCodeAt(i);\n if (c >= 0x0001 && c <= 0x007F) {\n out += str.charAt(i);\n } else if (c > 0x07FF) {\n out += String.fromCharCode(0xE0 | c >> 12 & 0x0F);\n out += String.fromCharCode(0x80 | c >> 6 & 0x3F);\n out += String.fromCharCode(0x80 | c >> 0 & 0x3F);\n } else {\n out += String.fromCharCode(0xC0 | c >> 6 & 0x1F);\n out += String.fromCharCode(0x80 | c >> 0 & 0x3F);\n }\n }\n return out;\n }\n }, {\n key: 'update',\n value: function update() {\n var value = this.utf16to8(this.props.value);\n var qrcode = qr(value);\n var canvas = getDOMNode(this.refs.canvas);\n\n var ctx = canvas.getContext('2d');\n var cells = qrcode.modules;\n var tileW = this.props.size / cells.length;\n var tileH = this.props.size / cells.length;\n var scale = (window.devicePixelRatio || 1) / getBackingStorePixelRatio(ctx);\n canvas.height = canvas.width = this.props.size * scale;\n ctx.scale(scale, scale);\n\n cells.forEach(function (row, rdx) {\n row.forEach(function (cell, cdx) {\n ctx.fillStyle = cell ? this.props.fgColor : this.props.bgColor;\n var w = Math.ceil((cdx + 1) * tileW) - Math.floor(cdx * tileW);\n var h = Math.ceil((rdx + 1) * tileH) - Math.floor(rdx * tileH);\n ctx.fillRect(Math.round(cdx * tileW), Math.round(rdx * tileH), w, h);\n }, this);\n }, this);\n\n if (this.props.logo) {\n var self = this;\n var size = this.props.size;\n var image = document.createElement('img');\n image.src = this.props.logo;\n image.onload = function () {\n var dwidth = self.props.logoWidth || size * 0.2;\n var dheight = self.props.logoHeight || image.height / image.width * dwidth;\n var dx = (size - dwidth) / 2;\n var dy = (size - dheight) / 2;\n image.width = dwidth;\n image.height = dheight;\n ctx.drawImage(image, dx, dy, dwidth, dheight);\n };\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return React.createElement('canvas', {\n style: { height: this.props.size, width: this.props.size },\n height: this.props.size,\n width: this.props.size,\n ref: 'canvas'\n });\n }\n }]);\n\n return QRCode;\n}(React.Component);\n\nQRCode.propTypes = {\n value: PropTypes.string.isRequired,\n size: PropTypes.number,\n bgColor: PropTypes.string,\n fgColor: PropTypes.string,\n logo: PropTypes.string,\n logoWidth: PropTypes.number,\n logoHeight: PropTypes.number\n};\n\nQRCode.defaultProps = {\n size: 128,\n bgColor: '#FFFFFF',\n fgColor: '#000000',\n value: 'http://facebook.github.io/react/'\n};\n\nmodule.exports = QRCode;\n","var QRCode = require('./lib/QRCode');\r\nvar ErrorCorrectLevel = require('./lib/ErrorCorrectLevel');\r\n\r\nvar qrcode = function(data, opt) {\r\n\topt = opt || {};\r\n\tvar qr = new QRCode(opt.typeNumber || -1,\r\n\t\t\t\t\t\topt.errorCorrectLevel || ErrorCorrectLevel.H);\r\n\tqr.addData(data);\r\n\tqr.make();\r\n\r\n\treturn qr;\r\n};\r\n\r\nqrcode.ErrorCorrectLevel = ErrorCorrectLevel;\r\n\r\nmodule.exports = qrcode;\r\n\r\n","var BitByte = require('./8BitByte');\nvar RSBlock = require('./RSBlock');\nvar BitBuffer = require('./BitBuffer');\nvar util = require('./util');\nvar Polynomial = require('./Polynomial');\n\nfunction QRCode(typeNumber, errorCorrectLevel) {\n\tthis.typeNumber = typeNumber;\n\tthis.errorCorrectLevel = errorCorrectLevel;\n\tthis.modules = null;\n\tthis.moduleCount = 0;\n\tthis.dataCache = null;\n\tthis.dataList = [];\n}\n\n// for client side minification\nvar proto = QRCode.prototype;\n\nproto.addData = function(data) {\n\tvar newData = new BitByte(data);\n\tthis.dataList.push(newData);\n\tthis.dataCache = null;\n};\n\nproto.isDark = function(row, col) {\n\tif (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n\t\tthrow new Error(row + \",\" + col);\n\t}\n\treturn this.modules[row][col];\n};\n\nproto.getModuleCount = function() {\n\treturn this.moduleCount;\n};\n\nproto.make = function() {\n\t// Calculate automatically typeNumber if provided is < 1\n\tif (this.typeNumber < 1 ){\n\t\tvar typeNumber = 1;\n\t\tfor (typeNumber = 1; typeNumber < 40; typeNumber++) {\n\t\t\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);\n\n\t\t\tvar buffer = new BitBuffer();\n\t\t\tvar totalDataCount = 0;\n\t\t\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\t\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < this.dataList.length; i++) {\n\t\t\t\tvar data = this.dataList[i];\n\t\t\t\tbuffer.put(data.mode, 4);\n\t\t\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\t\t\tdata.write(buffer);\n\t\t\t}\n\t\t\tif (buffer.getLengthInBits() <= totalDataCount * 8)\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.typeNumber = typeNumber;\n\t}\n\tthis.makeImpl(false, this.getBestMaskPattern() );\n};\n\nproto.makeImpl = function(test, maskPattern) {\n\t\n\tthis.moduleCount = this.typeNumber * 4 + 17;\n\tthis.modules = new Array(this.moduleCount);\n\t\n\tfor (var row = 0; row < this.moduleCount; row++) {\n\t\t\n\t\tthis.modules[row] = new Array(this.moduleCount);\n\t\t\n\t\tfor (var col = 0; col < this.moduleCount; col++) {\n\t\t\tthis.modules[row][col] = null;//(col + row) % 3;\n\t\t}\n\t}\n\n\tthis.setupPositionProbePattern(0, 0);\n\tthis.setupPositionProbePattern(this.moduleCount - 7, 0);\n\tthis.setupPositionProbePattern(0, this.moduleCount - 7);\n\tthis.setupPositionAdjustPattern();\n\tthis.setupTimingPattern();\n\tthis.setupTypeInfo(test, maskPattern);\n\t\n\tif (this.typeNumber >= 7) {\n\t\tthis.setupTypeNumber(test);\n\t}\n\n\tif (this.dataCache == null) {\n\t\tthis.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList);\n\t}\n\n\tthis.mapData(this.dataCache, maskPattern);\n};\n\nproto.setupPositionProbePattern = function(row, col) {\n\t\n\tfor (var r = -1; r <= 7; r++) {\n\t\t\n\t\tif (row + r <= -1 || this.moduleCount <= row + r) continue;\n\t\t\n\t\tfor (var c = -1; c <= 7; c++) {\n\t\t\t\n\t\t\tif (col + c <= -1 || this.moduleCount <= col + c) continue;\n\t\t\t\n\t\t\tif ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n\t\t\t\t\t|| (0 <= c && c <= 6 && (r == 0 || r == 6) )\n\t\t\t\t\t|| (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t} else {\n\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t}\n\t\t}\t\t\n\t}\t\t\n};\n\nproto.getBestMaskPattern = function() {\n\n\tvar minLostPoint = 0;\n\tvar pattern = 0;\n\n\tfor (var i = 0; i < 8; i++) {\n\t\t\n\t\tthis.makeImpl(true, i);\n\n\t\tvar lostPoint = util.getLostPoint(this);\n\n\t\tif (i == 0 || minLostPoint > lostPoint) {\n\t\t\tminLostPoint = lostPoint;\n\t\t\tpattern = i;\n\t\t}\n\t}\n\n\treturn pattern;\n};\n\nproto.createMovieClip = function(target_mc, instance_name, depth) {\n\n\tvar qr_mc = target_mc.createEmptyMovieClip(instance_name, depth);\n\tvar cs = 1;\n\n\tthis.make();\n\n\tfor (var row = 0; row < this.modules.length; row++) {\n\t\t\n\t\tvar y = row * cs;\n\t\t\n\t\tfor (var col = 0; col < this.modules[row].length; col++) {\n\n\t\t\tvar x = col * cs;\n\t\t\tvar dark = this.modules[row][col];\n\t\t\n\t\t\tif (dark) {\n\t\t\t\tqr_mc.beginFill(0, 100);\n\t\t\t\tqr_mc.moveTo(x, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y + cs);\n\t\t\t\tqr_mc.lineTo(x, y + cs);\n\t\t\t\tqr_mc.endFill();\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn qr_mc;\n};\n\nproto.setupTimingPattern = function() {\n\t\n\tfor (var r = 8; r < this.moduleCount - 8; r++) {\n\t\tif (this.modules[r][6] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[r][6] = (r % 2 == 0);\n\t}\n\n\tfor (var c = 8; c < this.moduleCount - 8; c++) {\n\t\tif (this.modules[6][c] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[6][c] = (c % 2 == 0);\n\t}\n};\n\nproto.setupPositionAdjustPattern = function() {\n\n\tvar pos = util.getPatternPosition(this.typeNumber);\n\t\n\tfor (var i = 0; i < pos.length; i++) {\n\t\n\t\tfor (var j = 0; j < pos.length; j++) {\n\t\t\n\t\t\tvar row = pos[i];\n\t\t\tvar col = pos[j];\n\t\t\t\n\t\t\tif (this.modules[row][col] != null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tfor (var r = -2; r <= 2; r++) {\n\t\t\t\n\t\t\t\tfor (var c = -2; c <= 2; c++) {\n\t\t\t\t\n\t\t\t\t\tif (r == -2 || r == 2 || c == -2 || c == 2\n\t\t\t\t\t\t\t|| (r == 0 && c == 0) ) {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nproto.setupTypeNumber = function(test) {\n\n\tvar bits = util.getBCHTypeNumber(this.typeNumber);\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;\n\t}\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n\t}\n};\n\nproto.setupTypeInfo = function(test, maskPattern) {\n\n\tvar data = (this.errorCorrectLevel << 3) | maskPattern;\n\tvar bits = util.getBCHTypeInfo(data);\n\n\t// vertical\t\t\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\n\t\tif (i < 6) {\n\t\t\tthis.modules[i][8] = mod;\n\t\t} else if (i < 8) {\n\t\t\tthis.modules[i + 1][8] = mod;\n\t\t} else {\n\t\t\tthis.modules[this.moduleCount - 15 + i][8] = mod;\n\t\t}\n\t}\n\n\t// horizontal\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\t\n\t\tif (i < 8) {\n\t\t\tthis.modules[8][this.moduleCount - i - 1] = mod;\n\t\t} else if (i < 9) {\n\t\t\tthis.modules[8][15 - i - 1 + 1] = mod;\n\t\t} else {\n\t\t\tthis.modules[8][15 - i - 1] = mod;\n\t\t}\n\t}\n\n\t// fixed module\n\tthis.modules[this.moduleCount - 8][8] = (!test);\n};\n\nproto.mapData = function(data, maskPattern) {\n\t\n\tvar inc = -1;\n\tvar row = this.moduleCount - 1;\n\tvar bitIndex = 7;\n\tvar byteIndex = 0;\n\t\n\tfor (var col = this.moduleCount - 1; col > 0; col -= 2) {\n\n\t\tif (col == 6) col--;\n\n\t\twhile (true) {\n\n\t\t\tfor (var c = 0; c < 2; c++) {\n\t\t\t\t\n\t\t\t\tif (this.modules[row][col - c] == null) {\n\t\t\t\t\t\n\t\t\t\t\tvar dark = false;\n\n\t\t\t\t\tif (byteIndex < data.length) {\n\t\t\t\t\t\tdark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar mask = util.getMask(maskPattern, row, col - c);\n\n\t\t\t\t\tif (mask) {\n\t\t\t\t\t\tdark = !dark;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.modules[row][col - c] = dark;\n\t\t\t\t\tbitIndex--;\n\n\t\t\t\t\tif (bitIndex == -1) {\n\t\t\t\t\t\tbyteIndex++;\n\t\t\t\t\t\tbitIndex = 7;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\trow += inc;\n\n\t\t\tif (row < 0 || this.moduleCount <= row) {\n\t\t\t\trow -= inc;\n\t\t\t\tinc = -inc;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n};\n\nQRCode.PAD0 = 0xEC;\nQRCode.PAD1 = 0x11;\n\nQRCode.createData = function(typeNumber, errorCorrectLevel, dataList) {\n\t\n\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n\t\n\tvar buffer = new BitBuffer();\n\t\n\tfor (var i = 0; i < dataList.length; i++) {\n\t\tvar data = dataList[i];\n\t\tbuffer.put(data.mode, 4);\n\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\tdata.write(buffer);\n\t}\n\n\t// calc num max data.\n\tvar totalDataCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t}\n\n\tif (buffer.getLengthInBits() > totalDataCount * 8) {\n\t\tthrow new Error(\"code length overflow. (\"\n\t\t\t+ buffer.getLengthInBits()\n\t\t\t+ \">\"\n\t\t\t+ totalDataCount * 8\n\t\t\t+ \")\");\n\t}\n\n\t// end code\n\tif (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n\t\tbuffer.put(0, 4);\n\t}\n\n\t// padding\n\twhile (buffer.getLengthInBits() % 8 != 0) {\n\t\tbuffer.putBit(false);\n\t}\n\n\t// padding\n\twhile (true) {\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD0, 8);\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD1, 8);\n\t}\n\n\treturn QRCode.createBytes(buffer, rsBlocks);\n};\n\nQRCode.createBytes = function(buffer, rsBlocks) {\n\n\tvar offset = 0;\n\t\n\tvar maxDcCount = 0;\n\tvar maxEcCount = 0;\n\t\n\tvar dcdata = new Array(rsBlocks.length);\n\tvar ecdata = new Array(rsBlocks.length);\n\t\n\tfor (var r = 0; r < rsBlocks.length; r++) {\n\n\t\tvar dcCount = rsBlocks[r].dataCount;\n\t\tvar ecCount = rsBlocks[r].totalCount - dcCount;\n\n\t\tmaxDcCount = Math.max(maxDcCount, dcCount);\n\t\tmaxEcCount = Math.max(maxEcCount, ecCount);\n\t\t\n\t\tdcdata[r] = new Array(dcCount);\n\t\t\n\t\tfor (var i = 0; i < dcdata[r].length; i++) {\n\t\t\tdcdata[r][i] = 0xff & buffer.buffer[i + offset];\n\t\t}\n\t\toffset += dcCount;\n\t\t\n\t\tvar rsPoly = util.getErrorCorrectPolynomial(ecCount);\n\t\tvar rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1);\n\n\t\tvar modPoly = rawPoly.mod(rsPoly);\n\t\tecdata[r] = new Array(rsPoly.getLength() - 1);\n\t\tfor (var i = 0; i < ecdata[r].length; i++) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n\t\t\tecdata[r][i] = (modIndex >= 0)? modPoly.get(modIndex) : 0;\n\t\t}\n\n\t}\n\t\n\tvar totalCodeCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalCodeCount += rsBlocks[i].totalCount;\n\t}\n\n\tvar data = new Array(totalCodeCount);\n\tvar index = 0;\n\n\tfor (var i = 0; i < maxDcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < dcdata[r].length) {\n\t\t\t\tdata[index++] = dcdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (var i = 0; i < maxEcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < ecdata[r].length) {\n\t\t\t\tdata[index++] = ecdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn data;\n};\n\nmodule.exports = QRCode;\n\n","var mode = require('./mode');\n\nfunction QR8bitByte(data) {\n\tthis.mode = mode.MODE_8BIT_BYTE;\n\tthis.data = data;\n}\n\nQR8bitByte.prototype = {\n\n\tgetLength : function(buffer) {\n\t\treturn this.data.length;\n\t},\n\t\n\twrite : function(buffer) {\n\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t// not JIS ...\n\t\t\tbuffer.put(this.data.charCodeAt(i), 8);\n\t\t}\n\t}\n};\n\nmodule.exports = QR8bitByte;\n\n","// ErrorCorrectLevel\nvar ECL = require('./ErrorCorrectLevel');\n\nfunction QRRSBlock(totalCount, dataCount) {\n\tthis.totalCount = totalCount;\n\tthis.dataCount = dataCount;\n}\n\nQRRSBlock.RS_BLOCK_TABLE = [\n\n\t// L\n\t// M\n\t// Q\n\t// H\n\n\t// 1\n\t[1, 26, 19],\n\t[1, 26, 16],\n\t[1, 26, 13],\n\t[1, 26, 9],\n\t\n\t// 2\n\t[1, 44, 34],\n\t[1, 44, 28],\n\t[1, 44, 22],\n\t[1, 44, 16],\n\n\t// 3\n\t[1, 70, 55],\n\t[1, 70, 44],\n\t[2, 35, 17],\n\t[2, 35, 13],\n\n\t// 4\t\t\n\t[1, 100, 80],\n\t[2, 50, 32],\n\t[2, 50, 24],\n\t[4, 25, 9],\n\t\n\t// 5\n\t[1, 134, 108],\n\t[2, 67, 43],\n\t[2, 33, 15, 2, 34, 16],\n\t[2, 33, 11, 2, 34, 12],\n\t\n\t// 6\n\t[2, 86, 68],\n\t[4, 43, 27],\n\t[4, 43, 19],\n\t[4, 43, 15],\n\t\n\t// 7\t\t\n\t[2, 98, 78],\n\t[4, 49, 31],\n\t[2, 32, 14, 4, 33, 15],\n\t[4, 39, 13, 1, 40, 14],\n\t\n\t// 8\n\t[2, 121, 97],\n\t[2, 60, 38, 2, 61, 39],\n\t[4, 40, 18, 2, 41, 19],\n\t[4, 40, 14, 2, 41, 15],\n\t\n\t// 9\n\t[2, 146, 116],\n\t[3, 58, 36, 2, 59, 37],\n\t[4, 36, 16, 4, 37, 17],\n\t[4, 36, 12, 4, 37, 13],\n\t\n\t// 10\t\t\n\t[2, 86, 68, 2, 87, 69],\n\t[4, 69, 43, 1, 70, 44],\n\t[6, 43, 19, 2, 44, 20],\n\t[6, 43, 15, 2, 44, 16],\n\n\t// 11\n\t[4, 101, 81],\n\t[1, 80, 50, 4, 81, 51],\n\t[4, 50, 22, 4, 51, 23],\n\t[3, 36, 12, 8, 37, 13],\n\n\t// 12\n\t[2, 116, 92, 2, 117, 93],\n\t[6, 58, 36, 2, 59, 37],\n\t[4, 46, 20, 6, 47, 21],\n\t[7, 42, 14, 4, 43, 15],\n\n\t// 13\n\t[4, 133, 107],\n\t[8, 59, 37, 1, 60, 38],\n\t[8, 44, 20, 4, 45, 21],\n\t[12, 33, 11, 4, 34, 12],\n\n\t// 14\n\t[3, 145, 115, 1, 146, 116],\n\t[4, 64, 40, 5, 65, 41],\n\t[11, 36, 16, 5, 37, 17],\n\t[11, 36, 12, 5, 37, 13],\n\n\t// 15\n\t[5, 109, 87, 1, 110, 88],\n\t[5, 65, 41, 5, 66, 42],\n\t[5, 54, 24, 7, 55, 25],\n\t[11, 36, 12],\n\n\t// 16\n\t[5, 122, 98, 1, 123, 99],\n\t[7, 73, 45, 3, 74, 46],\n\t[15, 43, 19, 2, 44, 20],\n\t[3, 45, 15, 13, 46, 16],\n\n\t// 17\n\t[1, 135, 107, 5, 136, 108],\n\t[10, 74, 46, 1, 75, 47],\n\t[1, 50, 22, 15, 51, 23],\n\t[2, 42, 14, 17, 43, 15],\n\n\t// 18\n\t[5, 150, 120, 1, 151, 121],\n\t[9, 69, 43, 4, 70, 44],\n\t[17, 50, 22, 1, 51, 23],\n\t[2, 42, 14, 19, 43, 15],\n\n\t// 19\n\t[3, 141, 113, 4, 142, 114],\n\t[3, 70, 44, 11, 71, 45],\n\t[17, 47, 21, 4, 48, 22],\n\t[9, 39, 13, 16, 40, 14],\n\n\t// 20\n\t[3, 135, 107, 5, 136, 108],\n\t[3, 67, 41, 13, 68, 42],\n\t[15, 54, 24, 5, 55, 25],\n\t[15, 43, 15, 10, 44, 16],\n\n\t// 21\n\t[4, 144, 116, 4, 145, 117],\n\t[17, 68, 42],\n\t[17, 50, 22, 6, 51, 23],\n\t[19, 46, 16, 6, 47, 17],\n\n\t// 22\n\t[2, 139, 111, 7, 140, 112],\n\t[17, 74, 46],\n\t[7, 54, 24, 16, 55, 25],\n\t[34, 37, 13],\n\n\t// 23\n\t[4, 151, 121, 5, 152, 122],\n\t[4, 75, 47, 14, 76, 48],\n\t[11, 54, 24, 14, 55, 25],\n\t[16, 45, 15, 14, 46, 16],\n\n\t// 24\n\t[6, 147, 117, 4, 148, 118],\n\t[6, 73, 45, 14, 74, 46],\n\t[11, 54, 24, 16, 55, 25],\n\t[30, 46, 16, 2, 47, 17],\n\n\t// 25\n\t[8, 132, 106, 4, 133, 107],\n\t[8, 75, 47, 13, 76, 48],\n\t[7, 54, 24, 22, 55, 25],\n\t[22, 45, 15, 13, 46, 16],\n\n\t// 26\n\t[10, 142, 114, 2, 143, 115],\n\t[19, 74, 46, 4, 75, 47],\n\t[28, 50, 22, 6, 51, 23],\n\t[33, 46, 16, 4, 47, 17],\n\n\t// 27\n\t[8, 152, 122, 4, 153, 123],\n\t[22, 73, 45, 3, 74, 46],\n\t[8, 53, 23, 26, 54, 24],\n\t[12, 45, 15, 28, 46, 16],\n\n\t// 28\n\t[3, 147, 117, 10, 148, 118],\n\t[3, 73, 45, 23, 74, 46],\n\t[4, 54, 24, 31, 55, 25],\n\t[11, 45, 15, 31, 46, 16],\n\n\t// 29\n\t[7, 146, 116, 7, 147, 117],\n\t[21, 73, 45, 7, 74, 46],\n\t[1, 53, 23, 37, 54, 24],\n\t[19, 45, 15, 26, 46, 16],\n\n\t// 30\n\t[5, 145, 115, 10, 146, 116],\n\t[19, 75, 47, 10, 76, 48],\n\t[15, 54, 24, 25, 55, 25],\n\t[23, 45, 15, 25, 46, 16],\n\n\t// 31\n\t[13, 145, 115, 3, 146, 116],\n\t[2, 74, 46, 29, 75, 47],\n\t[42, 54, 24, 1, 55, 25],\n\t[23, 45, 15, 28, 46, 16],\n\n\t// 32\n\t[17, 145, 115],\n\t[10, 74, 46, 23, 75, 47],\n\t[10, 54, 24, 35, 55, 25],\n\t[19, 45, 15, 35, 46, 16],\n\n\t// 33\n\t[17, 145, 115, 1, 146, 116],\n\t[14, 74, 46, 21, 75, 47],\n\t[29, 54, 24, 19, 55, 25],\n\t[11, 45, 15, 46, 46, 16],\n\n\t// 34\n\t[13, 145, 115, 6, 146, 116],\n\t[14, 74, 46, 23, 75, 47],\n\t[44, 54, 24, 7, 55, 25],\n\t[59, 46, 16, 1, 47, 17],\n\n\t// 35\n\t[12, 151, 121, 7, 152, 122],\n\t[12, 75, 47, 26, 76, 48],\n\t[39, 54, 24, 14, 55, 25],\n\t[22, 45, 15, 41, 46, 16],\n\n\t// 36\n\t[6, 151, 121, 14, 152, 122],\n\t[6, 75, 47, 34, 76, 48],\n\t[46, 54, 24, 10, 55, 25],\n\t[2, 45, 15, 64, 46, 16],\n\n\t// 37\n\t[17, 152, 122, 4, 153, 123],\n\t[29, 74, 46, 14, 75, 47],\n\t[49, 54, 24, 10, 55, 25],\n\t[24, 45, 15, 46, 46, 16],\n\n\t// 38\n\t[4, 152, 122, 18, 153, 123],\n\t[13, 74, 46, 32, 75, 47],\n\t[48, 54, 24, 14, 55, 25],\n\t[42, 45, 15, 32, 46, 16],\n\n\t// 39\n\t[20, 147, 117, 4, 148, 118],\n\t[40, 75, 47, 7, 76, 48],\n\t[43, 54, 24, 22, 55, 25],\n\t[10, 45, 15, 67, 46, 16],\n\n\t// 40\n\t[19, 148, 118, 6, 149, 119],\n\t[18, 75, 47, 31, 76, 48],\n\t[34, 54, 24, 34, 55, 25],\n\t[20, 45, 15, 61, 46, 16]\n];\n\nQRRSBlock.getRSBlocks = function(typeNumber, errorCorrectLevel) {\n\t\n\tvar rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n\t\n\tif (rsBlock == undefined) {\n\t\tthrow new Error(\"bad rs block @ typeNumber:\" + typeNumber + \"/errorCorrectLevel:\" + errorCorrectLevel);\n\t}\n\n\tvar length = rsBlock.length / 3;\n\t\n\tvar list = new Array();\n\t\n\tfor (var i = 0; i < length; i++) {\n\n\t\tvar count = rsBlock[i * 3 + 0];\n\t\tvar totalCount = rsBlock[i * 3 + 1];\n\t\tvar dataCount = rsBlock[i * 3 + 2];\n\n\t\tfor (var j = 0; j < count; j++) {\n\t\t\tlist.push(new QRRSBlock(totalCount, dataCount) );\t\n\t\t}\n\t}\n\t\n\treturn list;\n}\n\nQRRSBlock.getRsBlockTable = function(typeNumber, errorCorrectLevel) {\n\n\tswitch(errorCorrectLevel) {\n\tcase ECL.L :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n\tcase ECL.M :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n\tcase ECL.Q :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n\tcase ECL.H :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n\tdefault :\n\t\treturn undefined;\n\t}\n}\n\nmodule.exports = QRRSBlock;\n","function QRBitBuffer() {\n\tthis.buffer = new Array();\n\tthis.length = 0;\n}\n\nQRBitBuffer.prototype = {\n\n\tget : function(index) {\n\t\tvar bufIndex = Math.floor(index / 8);\n\t\treturn ( (this.buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n\t},\n\t\n\tput : function(num, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tthis.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n\t\t}\n\t},\n\t\n\tgetLengthInBits : function() {\n\t\treturn this.length;\n\t},\n\t\n\tputBit : function(bit) {\n\t\n\t\tvar bufIndex = Math.floor(this.length / 8);\n\t\tif (this.buffer.length <= bufIndex) {\n\t\t\tthis.buffer.push(0);\n\t\t}\n\t\n\t\tif (bit) {\n\t\t\tthis.buffer[bufIndex] |= (0x80 >>> (this.length % 8) );\n\t\t}\n\t\n\t\tthis.length++;\n\t}\n};\n\nmodule.exports = QRBitBuffer;\n","var Mode = require('./mode');\nvar Polynomial = require('./Polynomial');\nvar math = require('./math');\n\nvar QRMaskPattern = {\n\tPATTERN000 : 0,\n\tPATTERN001 : 1,\n\tPATTERN010 : 2,\n\tPATTERN011 : 3,\n\tPATTERN100 : 4,\n\tPATTERN101 : 5,\n\tPATTERN110 : 6,\n\tPATTERN111 : 7\n};\n\nvar QRUtil = {\n\n PATTERN_POSITION_TABLE : [\n\t [],\n\t [6, 18],\n\t [6, 22],\n\t [6, 26],\n\t [6, 30],\n\t [6, 34],\n\t [6, 22, 38],\n\t [6, 24, 42],\n\t [6, 26, 46],\n\t [6, 28, 50],\n\t [6, 30, 54],\t\t\n\t [6, 32, 58],\n\t [6, 34, 62],\n\t [6, 26, 46, 66],\n\t [6, 26, 48, 70],\n\t [6, 26, 50, 74],\n\t [6, 30, 54, 78],\n\t [6, 30, 56, 82],\n\t [6, 30, 58, 86],\n\t [6, 34, 62, 90],\n\t [6, 28, 50, 72, 94],\n\t [6, 26, 50, 74, 98],\n\t [6, 30, 54, 78, 102],\n\t [6, 28, 54, 80, 106],\n\t [6, 32, 58, 84, 110],\n\t [6, 30, 58, 86, 114],\n\t [6, 34, 62, 90, 118],\n\t [6, 26, 50, 74, 98, 122],\n\t [6, 30, 54, 78, 102, 126],\n\t [6, 26, 52, 78, 104, 130],\n\t [6, 30, 56, 82, 108, 134],\n\t [6, 34, 60, 86, 112, 138],\n\t [6, 30, 58, 86, 114, 142],\n\t [6, 34, 62, 90, 118, 146],\n\t [6, 30, 54, 78, 102, 126, 150],\n\t [6, 24, 50, 76, 102, 128, 154],\n\t [6, 28, 54, 80, 106, 132, 158],\n\t [6, 32, 58, 84, 110, 136, 162],\n\t [6, 26, 54, 82, 110, 138, 166],\n\t [6, 30, 58, 86, 114, 142, 170]\n ],\n\n G15 : (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),\n G18 : (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),\n G15_MASK : (1 << 14) | (1 << 12) | (1 << 10)\t| (1 << 4) | (1 << 1),\n\n getBCHTypeInfo : function(data) {\n\t var d = data << 10;\n\t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n\t\t d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) ) ); \t\n\t }\n\t return ( (data << 10) | d) ^ QRUtil.G15_MASK;\n },\n\n getBCHTypeNumber : function(data) {\n\t var d = data << 12;\n\t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n\t\t d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) ) ); \t\n\t }\n\t return (data << 12) | d;\n },\n\n getBCHDigit : function(data) {\n\n\t var digit = 0;\n\n\t while (data != 0) {\n\t\t digit++;\n\t\t data >>>= 1;\n\t }\n\n\t return digit;\n },\n\n getPatternPosition : function(typeNumber) {\n\t return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n },\n\n getMask : function(maskPattern, i, j) {\n\t \n\t switch (maskPattern) {\n\t\t \n\t case QRMaskPattern.PATTERN000 : return (i + j) % 2 == 0;\n\t case QRMaskPattern.PATTERN001 : return i % 2 == 0;\n\t case QRMaskPattern.PATTERN010 : return j % 3 == 0;\n\t case QRMaskPattern.PATTERN011 : return (i + j) % 3 == 0;\n\t case QRMaskPattern.PATTERN100 : return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0;\n\t case QRMaskPattern.PATTERN101 : return (i * j) % 2 + (i * j) % 3 == 0;\n\t case QRMaskPattern.PATTERN110 : return ( (i * j) % 2 + (i * j) % 3) % 2 == 0;\n\t case QRMaskPattern.PATTERN111 : return ( (i * j) % 3 + (i + j) % 2) % 2 == 0;\n\n\t default :\n\t\t throw new Error(\"bad maskPattern:\" + maskPattern);\n\t }\n },\n\n getErrorCorrectPolynomial : function(errorCorrectLength) {\n\n\t var a = new Polynomial([1], 0);\n\n\t for (var i = 0; i < errorCorrectLength; i++) {\n\t\t a = a.multiply(new Polynomial([1, math.gexp(i)], 0) );\n\t }\n\n\t return a;\n },\n\n getLengthInBits : function(mode, type) {\n\n\t if (1 <= type && type < 10) {\n\n\t\t // 1 - 9\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 10;\n\t\t case Mode.MODE_ALPHA_NUM \t: return 9;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 8;\n\t\t case Mode.MODE_KANJI \t: return 8;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else if (type < 27) {\n\n\t\t // 10 - 26\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 12;\n\t\t case Mode.MODE_ALPHA_NUM \t: return 11;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t case Mode.MODE_KANJI \t: return 10;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else if (type < 41) {\n\n\t\t // 27 - 40\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 14;\n\t\t case Mode.MODE_ALPHA_NUM\t: return 13;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t case Mode.MODE_KANJI \t: return 12;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else {\n\t\t throw new Error(\"type:\" + type);\n\t }\n },\n\n getLostPoint : function(qrCode) {\n\t \n\t var moduleCount = qrCode.getModuleCount();\n\t \n\t var lostPoint = 0;\n\t \n\t // LEVEL1\n\t \n\t for (var row = 0; row < moduleCount; row++) {\n\n\t\t for (var col = 0; col < moduleCount; col++) {\n\n\t\t\t var sameCount = 0;\n\t\t\t var dark = qrCode.isDark(row, col);\n\n\t\t\t\tfor (var r = -1; r <= 1; r++) {\n\n\t\t\t\t if (row + r < 0 || moduleCount <= row + r) {\n\t\t\t\t\t continue;\n\t\t\t\t }\n\n\t\t\t\t for (var c = -1; c <= 1; c++) {\n\n\t\t\t\t\t if (col + c < 0 || moduleCount <= col + c) {\n\t\t\t\t\t\t continue;\n\t\t\t\t\t }\n\n\t\t\t\t\t if (r == 0 && c == 0) {\n\t\t\t\t\t\t continue;\n\t\t\t\t\t }\n\n\t\t\t\t\t if (dark == qrCode.isDark(row + r, col + c) ) {\n\t\t\t\t\t\t sameCount++;\n\t\t\t\t\t }\n\t\t\t\t }\n\t\t\t }\n\n\t\t\t if (sameCount > 5) {\n\t\t\t\t lostPoint += (3 + sameCount - 5);\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL2\n\n\t for (var row = 0; row < moduleCount - 1; row++) {\n\t\t for (var col = 0; col < moduleCount - 1; col++) {\n\t\t\t var count = 0;\n\t\t\t if (qrCode.isDark(row, col ) ) count++;\n\t\t\t if (qrCode.isDark(row + 1, col ) ) count++;\n\t\t\t if (qrCode.isDark(row, col + 1) ) count++;\n\t\t\t if (qrCode.isDark(row + 1, col + 1) ) count++;\n\t\t\t if (count == 0 || count == 4) {\n\t\t\t\t lostPoint += 3;\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL3\n\n\t for (var row = 0; row < moduleCount; row++) {\n\t\t for (var col = 0; col < moduleCount - 6; col++) {\n\t\t\t if (qrCode.isDark(row, col)\n\t\t\t\t\t && !qrCode.isDark(row, col + 1)\n\t\t\t\t\t && qrCode.isDark(row, col + 2)\n\t\t\t\t\t && qrCode.isDark(row, col + 3)\n\t\t\t\t\t && qrCode.isDark(row, col + 4)\n\t\t\t\t\t && !qrCode.isDark(row, col + 5)\n\t\t\t\t\t && qrCode.isDark(row, col + 6) ) {\n\t\t\t\t lostPoint += 40;\n\t\t\t }\n\t\t }\n\t }\n\n\t for (var col = 0; col < moduleCount; col++) {\n\t\t for (var row = 0; row < moduleCount - 6; row++) {\n\t\t\t if (qrCode.isDark(row, col)\n\t\t\t\t\t && !qrCode.isDark(row + 1, col)\n\t\t\t\t\t && qrCode.isDark(row + 2, col)\n\t\t\t\t\t && qrCode.isDark(row + 3, col)\n\t\t\t\t\t && qrCode.isDark(row + 4, col)\n\t\t\t\t\t && !qrCode.isDark(row + 5, col)\n\t\t\t\t\t && qrCode.isDark(row + 6, col) ) {\n\t\t\t\t lostPoint += 40;\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL4\n\t \n\t var darkCount = 0;\n\n\t for (var col = 0; col < moduleCount; col++) {\n\t\t for (var row = 0; row < moduleCount; row++) {\n\t\t\t if (qrCode.isDark(row, col) ) {\n\t\t\t\t darkCount++;\n\t\t\t }\n\t\t }\n\t }\n\t \n\t var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n\t lostPoint += ratio * 10;\n\n\t return lostPoint;\t\t\n }\n};\n\nmodule.exports = QRUtil;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'TextInputDialog',\n propTypes: {\n title: _propTypes2.default.string,\n description: _propTypes2.default.oneOfType([_propTypes2.default.element, _propTypes2.default.string]),\n value: _propTypes2.default.string,\n button: _propTypes2.default.string,\n focus: _propTypes2.default.bool,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n title: \"\",\n value: \"\",\n description: \"\",\n focus: true\n };\n },\n\n componentDidMount: function componentDidMount() {\n if (this.props.focus) {\n // Set the cursor at the end of the text input\n this.refs.textinput.value = this.props.value;\n }\n },\n\n onOk: function onOk() {\n this.props.onFinished(true, this.refs.textinput.value);\n },\n\n onCancel: function onCancel() {\n this.props.onFinished(false);\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_TextInputDialog', onFinished: this.props.onFinished,\n title: this.props.title\n },\n _react2.default.createElement(\n 'form',\n { onSubmit: this.onOk },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_TextInputDialog_label' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'textinput' },\n ' ',\n this.props.description,\n ' '\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { id: 'textinput', ref: 'textinput', className: 'mx_TextInputDialog_input', defaultValue: this.props.value, autoFocus: this.props.focus, size: '64' })\n )\n )\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: this.props.button,\n onPrimaryButtonClick: this.onOk,\n onCancel: this.onCancel })\n );\n }\n}); /*\n Copyright 2015, 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=TextInputDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _reactGeminiScrollbar = require('react-gemini-scrollbar');\n\nvar _reactGeminiScrollbar2 = _interopRequireDefault(_reactGeminiScrollbar);\n\nvar _Resend = require('../../../Resend');\n\nvar _Resend2 = _interopRequireDefault(_Resend);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _cryptodevices = require('../../../cryptodevices');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction DeviceListEntry(props) {\n var userId = props.userId,\n device = props.device;\n\n\n var DeviceVerifyButtons = _index2.default.getComponent('elements.DeviceVerifyButtons');\n\n return _react2.default.createElement(\n 'li',\n null,\n _react2.default.createElement(DeviceVerifyButtons, { device: device, userId: userId }),\n device.deviceId,\n _react2.default.createElement('br', null),\n device.getDisplayName()\n );\n} /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nDeviceListEntry.propTypes = {\n userId: _propTypes2.default.string.isRequired,\n\n // deviceinfo\n device: _propTypes2.default.object.isRequired\n};\n\nfunction UserUnknownDeviceList(props) {\n var userId = props.userId,\n userDevices = props.userDevices;\n\n\n var deviceListEntries = (0, _keys2.default)(userDevices).map(function (deviceId) {\n return _react2.default.createElement(DeviceListEntry, { key: deviceId, userId: userId,\n device: userDevices[deviceId] });\n });\n\n return _react2.default.createElement(\n 'ul',\n { className: 'mx_UnknownDeviceDialog_deviceList' },\n deviceListEntries\n );\n}\n\nUserUnknownDeviceList.propTypes = {\n userId: _propTypes2.default.string.isRequired,\n\n // map from deviceid -> deviceinfo\n userDevices: _propTypes2.default.object.isRequired\n};\n\nfunction UnknownDeviceList(props) {\n var devices = props.devices;\n\n\n var userListEntries = (0, _keys2.default)(devices).map(function (userId) {\n return _react2.default.createElement(\n 'li',\n { key: userId },\n _react2.default.createElement(\n 'p',\n null,\n userId,\n ':'\n ),\n _react2.default.createElement(UserUnknownDeviceList, { userId: userId, userDevices: devices[userId] })\n );\n });\n\n return _react2.default.createElement(\n 'ul',\n null,\n userListEntries\n );\n}\n\nUnknownDeviceList.propTypes = {\n // map from userid -> deviceid -> deviceinfo\n devices: _propTypes2.default.object.isRequired\n};\n\nexports.default = _react2.default.createClass({\n displayName: 'UnknownDeviceDialog',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired,\n\n // map from userid -> deviceid -> deviceinfo or null if devices are not yet loaded\n devices: _propTypes2.default.object,\n\n onFinished: _propTypes2.default.func.isRequired,\n\n // Label for the button that marks all devices known and tries the send again\n sendAnywayLabel: _propTypes2.default.string.isRequired,\n\n // Label for the button that to send the event if you've verified all devices\n sendLabel: _propTypes2.default.string.isRequired,\n\n // function to retry the request once all devices are verified / known\n onSend: _propTypes2.default.func.isRequired\n },\n\n componentWillMount: function componentWillMount() {\n _MatrixClientPeg2.default.get().on(\"deviceVerificationChanged\", this._onDeviceVerificationChanged);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener(\"deviceVerificationChanged\", this._onDeviceVerificationChanged);\n }\n },\n\n _onDeviceVerificationChanged: function _onDeviceVerificationChanged(userId, deviceId, deviceInfo) {\n if (this.props.devices[userId] && this.props.devices[userId][deviceId]) {\n // XXX: Mutating props :/\n this.props.devices[userId][deviceId] = deviceInfo;\n this.forceUpdate();\n }\n },\n\n _onDismissClicked: function _onDismissClicked() {\n this.props.onFinished();\n },\n\n _onSendAnywayClicked: function _onSendAnywayClicked() {\n (0, _cryptodevices.markAllDevicesKnown)(_MatrixClientPeg2.default.get(), this.props.devices);\n\n this.props.onFinished();\n this.props.onSend();\n },\n\n _onSendClicked: function _onSendClicked() {\n this.props.onFinished();\n this.props.onSend();\n },\n\n render: function render() {\n var _this = this;\n\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n if (this.props.devices === null) {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Spinner, null);\n }\n\n var warning = void 0;\n if (_SettingsStore2.default.getValue(\"blacklistUnverifiedDevices\", this.props.room.roomId)) {\n warning = _react2.default.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)(\"You are currently blacklisting unverified devices; to send \" + \"messages to these devices you must verify them.\")\n );\n } else {\n warning = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"We recommend you go through the verification process \" + \"for each device to confirm they belong to their legitimate owner, \" + \"but you can resend the message without verifying if you prefer.\")\n )\n );\n }\n\n var haveUnknownDevices = false;\n (0, _keys2.default)(this.props.devices).forEach(function (userId) {\n (0, _keys2.default)(_this.props.devices[userId]).map(function (deviceId) {\n var device = _this.props.devices[userId][deviceId];\n if (device.isUnverified() && !device.isKnown()) {\n haveUnknownDevices = true;\n }\n });\n });\n var sendButtonOnClick = haveUnknownDevices ? this._onSendAnywayClicked : this._onSendClicked;\n var sendButtonLabel = haveUnknownDevices ? this.props.sendAnywayLabel : this.props.sendAnywayLabel;\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_UnknownDeviceDialog',\n onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('Room contains unknown devices'),\n contentId: 'mx_Dialog_content'\n },\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: false, className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)('\"%(RoomName)s\" contains devices that you haven\\'t seen before.', { RoomName: this.props.room.name })\n ),\n warning,\n (0, _languageHandler._t)(\"Unknown devices\"),\n ':',\n _react2.default.createElement(UnknownDeviceList, { devices: this.props.devices })\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: sendButtonLabel,\n onPrimaryButtonClick: sendButtonOnClick,\n onCancel: this._onDismissClicked })\n );\n // XXX: do we want to give the user the option to enable blacklistUnverifiedDevices for this room (or globally) at this point?\n // It feels like confused users will likely turn it on and then disappear in a cloud of UISIs...\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=UnknownDeviceDialog.js.map","/**\n * gemini-scrollbar\n * @version 1.4.3\n * @link http://noeldelgado.github.io/gemini-scrollbar/\n * @license MIT\n */\n(function() {\n var SCROLLBAR_WIDTH, DONT_CREATE_GEMINI, CLASSNAMES;\n\n CLASSNAMES = {\n element: 'gm-scrollbar-container',\n verticalScrollbar: 'gm-scrollbar -vertical',\n horizontalScrollbar: 'gm-scrollbar -horizontal',\n thumb: 'thumb',\n view: 'gm-scroll-view',\n autoshow: 'gm-autoshow',\n disable: 'gm-scrollbar-disable-selection',\n prevented: 'gm-prevented',\n resizeTrigger: 'gm-resize-trigger',\n };\n\n function getScrollbarWidth() {\n var e = document.createElement('div'), sw;\n e.style.position = 'absolute';\n e.style.top = '-9999px';\n e.style.width = '100px';\n e.style.height = '100px';\n e.style.overflow = 'scroll';\n e.style.msOverflowStyle = 'scrollbar';\n document.body.appendChild(e);\n sw = (e.offsetWidth - e.clientWidth);\n document.body.removeChild(e);\n return sw;\n }\n\n function addClass(el, classNames) {\n if (el.classList) {\n return classNames.forEach(function(cl) {\n el.classList.add(cl);\n });\n }\n el.className += ' ' + classNames.join(' ');\n }\n\n function removeClass(el, classNames) {\n if (el.classList) {\n return classNames.forEach(function(cl) {\n el.classList.remove(cl);\n });\n }\n el.className = el.className.replace(new RegExp('(^|\\\\b)' + classNames.join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n\n /* Copyright (c) 2015 Lucas Wiener\n * https://github.com/wnr/element-resize-detector\n */\n function isIE() {\n var agent = navigator.userAgent.toLowerCase();\n return agent.indexOf(\"msie\") !== -1 || agent.indexOf(\"trident\") !== -1 || agent.indexOf(\" edge/\") !== -1;\n }\n\n function GeminiScrollbar(config) {\n this.element = null;\n this.autoshow = false;\n this.createElements = true;\n this.forceGemini = false;\n this.onResize = null;\n\n Object.keys(config || {}).forEach(function (propertyName) {\n this[propertyName] = config[propertyName];\n }, this);\n\n SCROLLBAR_WIDTH = getScrollbarWidth();\n DONT_CREATE_GEMINI = ((SCROLLBAR_WIDTH === 0) && (this.forceGemini === false));\n\n this._cache = {events: {}};\n this._created = false;\n this._cursorDown = false;\n this._prevPageX = 0;\n this._prevPageY = 0;\n\n this._document = null;\n this._viewElement = this.element;\n this._scrollbarVerticalElement = null;\n this._thumbVerticalElement = null;\n this._scrollbarHorizontalElement = null;\n this._scrollbarHorizontalElement = null;\n }\n\n GeminiScrollbar.prototype.create = function create() {\n if (DONT_CREATE_GEMINI) {\n addClass(this.element, [CLASSNAMES.prevented]);\n\n if (this.onResize) {\n // still need a resize trigger if we have an onResize callback, which\n // also means we need a separate _viewElement to do the scrolling.\n if (this.createElements === true) {\n this._viewElement = document.createElement('div');\n while(this.element.childNodes.length > 0) {\n this._viewElement.appendChild(this.element.childNodes[0]);\n }\n this.element.appendChild(this._viewElement);\n } else {\n this._viewElement = this.element.querySelector('.' + CLASSNAMES.view);\n }\n addClass(this.element, [CLASSNAMES.element]);\n addClass(this._viewElement, [CLASSNAMES.view]);\n this._createResizeTrigger();\n }\n\n return this;\n }\n\n if (this._created === true) {\n console.warn('calling on a already-created object');\n return this;\n }\n\n if (this.autoshow) {\n addClass(this.element, [CLASSNAMES.autoshow]);\n }\n\n this._document = document;\n\n if (this.createElements === true) {\n this._viewElement = document.createElement('div');\n this._scrollbarVerticalElement = document.createElement('div');\n this._thumbVerticalElement = document.createElement('div');\n this._scrollbarHorizontalElement = document.createElement('div');\n this._thumbHorizontalElement = document.createElement('div');\n while(this.element.childNodes.length > 0) {\n this._viewElement.appendChild(this.element.childNodes[0]);\n }\n\n this._scrollbarVerticalElement.appendChild(this._thumbVerticalElement);\n this._scrollbarHorizontalElement.appendChild(this._thumbHorizontalElement);\n this.element.appendChild(this._scrollbarVerticalElement);\n this.element.appendChild(this._scrollbarHorizontalElement);\n this.element.appendChild(this._viewElement);\n } else {\n this._viewElement = this.element.querySelector('.' + CLASSNAMES.view);\n this._scrollbarVerticalElement = this.element.querySelector('.' + CLASSNAMES.verticalScrollbar.split(' ').join('.'));\n this._thumbVerticalElement = this._scrollbarVerticalElement.querySelector('.' + CLASSNAMES.thumb);\n this._scrollbarHorizontalElement = this.element.querySelector('.' + CLASSNAMES.horizontalScrollbar.split(' ').join('.'));\n this._thumbHorizontalElement = this._scrollbarHorizontalElement.querySelector('.' + CLASSNAMES.thumb);\n }\n\n addClass(this.element, [CLASSNAMES.element]);\n addClass(this._viewElement, [CLASSNAMES.view]);\n addClass(this._scrollbarVerticalElement, CLASSNAMES.verticalScrollbar.split(/\\s/));\n addClass(this._scrollbarHorizontalElement, CLASSNAMES.horizontalScrollbar.split(/\\s/));\n addClass(this._thumbVerticalElement, [CLASSNAMES.thumb]);\n addClass(this._thumbHorizontalElement, [CLASSNAMES.thumb]);\n\n this._scrollbarVerticalElement.style.display = '';\n this._scrollbarHorizontalElement.style.display = '';\n\n this._createResizeTrigger();\n\n this._created = true;\n\n return this._bindEvents().update();\n };\n\n GeminiScrollbar.prototype._createResizeTrigger = function createResizeTrigger() {\n // We need to arrange for self.scrollbar.update to be called whenever\n // the DOM is changed resulting in a size-change for our div. To make\n // this happen, we use a technique described here:\n // http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/.\n //\n // The idea is that we create an <object> element in our div, which we\n // arrange to have the same size as that div. The <object> element\n // contains a Window object, to which we can attach an onresize\n // handler.\n //\n // (React appears to get very confused by the object (we end up with\n // Chrome windows which only show half of the text they are supposed\n // to), so we always do this manually.)\n\n var obj = document.createElement('object');\n addClass(obj, [CLASSNAMES.resizeTrigger]);\n obj.type = 'text/html';\n var resizeHandler = this._resizeHandler.bind(this);\n obj.onload = function () {\n var win = obj.contentDocument.defaultView;\n win.addEventListener('resize', resizeHandler);\n };\n\n //IE: Does not like that this happens before, even if it is also added after.\n if (!isIE()) {\n obj.data = 'about:blank';\n }\n\n this.element.appendChild(obj);\n\n //IE: This must occur after adding the object to the DOM.\n if (isIE()) {\n obj.data = 'about:blank';\n }\n\n this._resizeTriggerElement = obj;\n };\n\n GeminiScrollbar.prototype.update = function update() {\n if (DONT_CREATE_GEMINI) {\n return this;\n }\n\n if (this._created === false) {\n console.warn('calling on a not-yet-created object');\n return this;\n }\n\n var heightPercentage, widthPercentage;\n\n this._viewElement.style.width = ((this.element.offsetWidth + SCROLLBAR_WIDTH).toString() + 'px');\n this._viewElement.style.height = ((this.element.offsetHeight + SCROLLBAR_WIDTH).toString() + 'px');\n\n heightPercentage = (this._viewElement.clientHeight * 100 / this._viewElement.scrollHeight);\n widthPercentage = (this._viewElement.clientWidth * 100 / this._viewElement.scrollWidth);\n\n this._thumbVerticalElement.style.height = (heightPercentage < 100) ? (heightPercentage + '%') : '';\n this._thumbHorizontalElement.style.width = (widthPercentage < 100) ? (widthPercentage + '%') : '';\n\n this._scrollHandler();\n\n return this;\n };\n\n GeminiScrollbar.prototype.destroy = function destroy() {\n if (this._resizeTriggerElement) {\n this.element.removeChild(this._resizeTriggerElement);\n this._resizeTriggerElement = null;\n }\n\n if (DONT_CREATE_GEMINI) {\n return this;\n }\n\n if (this._created === false) {\n console.warn('calling on a not-yet-created object');\n return this;\n }\n\n this._unbinEvents();\n\n removeClass(this.element, [CLASSNAMES.element, CLASSNAMES.autoshow]);\n\n if (this.createElements === true) {\n this.element.removeChild(this._scrollbarVerticalElement);\n this.element.removeChild(this._scrollbarHorizontalElement);\n while(this._viewElement.childNodes.length > 0) {\n this.element.appendChild(this._viewElement.childNodes[0]);\n }\n this.element.removeChild(this._viewElement);\n } else {\n this._viewElement.style.width = '';\n this._viewElement.style.height = '';\n this._scrollbarVerticalElement.style.display = 'none';\n this._scrollbarHorizontalElement.style.display = 'none';\n }\n\n this._created = false;\n this._document = null;\n\n return null;\n };\n\n GeminiScrollbar.prototype.getViewElement = function getViewElement() {\n return this._viewElement;\n };\n\n GeminiScrollbar.prototype._bindEvents = function _bindEvents() {\n this._cache.events.scrollHandler = this._scrollHandler.bind(this);\n this._cache.events.clickVerticalTrackHandler = this._clickVerticalTrackHandler.bind(this);\n this._cache.events.clickHorizontalTrackHandler = this._clickHorizontalTrackHandler.bind(this);\n this._cache.events.clickVerticalThumbHandler = this._clickVerticalThumbHandler.bind(this);\n this._cache.events.clickHorizontalThumbHandler = this._clickHorizontalThumbHandler.bind(this);\n this._cache.events.mouseUpDocumentHandler = this._mouseUpDocumentHandler.bind(this);\n this._cache.events.mouseMoveDocumentHandler = this._mouseMoveDocumentHandler.bind(this);\n\n this._viewElement.addEventListener('scroll', this._cache.events.scrollHandler);\n this._scrollbarVerticalElement.addEventListener('mousedown', this._cache.events.clickVerticalTrackHandler);\n this._scrollbarHorizontalElement.addEventListener('mousedown', this._cache.events.clickHorizontalTrackHandler);\n this._thumbVerticalElement.addEventListener('mousedown', this._cache.events.clickVerticalThumbHandler);\n this._thumbHorizontalElement.addEventListener('mousedown', this._cache.events.clickHorizontalThumbHandler);\n this._document.addEventListener('mouseup', this._cache.events.mouseUpDocumentHandler);\n\n return this;\n };\n\n GeminiScrollbar.prototype._unbinEvents = function _unbinEvents() {\n this._viewElement.removeEventListener('scroll', this._cache.events.scrollHandler);\n this._scrollbarVerticalElement.removeEventListener('mousedown', this._cache.events.clickVerticalTrackHandler);\n this._scrollbarHorizontalElement.removeEventListener('mousedown', this._cache.events.clickHorizontalTrackHandler);\n this._thumbVerticalElement.removeEventListener('mousedown', this._cache.events.clickVerticalThumbHandler);\n this._thumbHorizontalElement.removeEventListener('mousedown', this._cache.events.clickHorizontalThumbHandler);\n this._document.removeEventListener('mouseup', this._cache.events.mouseUpDocumentHandler);\n this._document.removeEventListener('mousemove', this._cache.events.mouseMoveDocumentHandler);\n\n return this;\n };\n\n GeminiScrollbar.prototype._scrollHandler = function _scrollHandler() {\n var viewElement, x, y;\n\n viewElement = this._viewElement;\n y = ((viewElement.scrollTop * 100) / viewElement.clientHeight);\n x = ((viewElement.scrollLeft * 100) / viewElement.clientWidth);\n\n this._thumbVerticalElement.style.msTransform = 'translateY(' + y + '%)';\n this._thumbVerticalElement.style.webkitTransform = 'translateY(' + y + '%)';\n this._thumbVerticalElement.style.transform = 'translateY(' + y + '%)';\n\n this._thumbHorizontalElement.style.msTransform = 'translateX(' + x + '%)';\n this._thumbHorizontalElement.style.webkitTransform = 'translateX(' + x + '%)';\n this._thumbHorizontalElement.style.transform = 'translateX(' + x + '%)';\n };\n\n GeminiScrollbar.prototype._resizeHandler = function _resizeHandler() {\n this.update();\n if (this.onResize) {\n this.onResize();\n }\n };\n\n GeminiScrollbar.prototype._clickVerticalTrackHandler = function _clickVerticalTrackHandler(e) {\n var offset = Math.abs(e.target.getBoundingClientRect().top - e.clientY)\n , thumbHalf = (this._thumbVerticalElement.offsetHeight / 2)\n , thumbPositionPercentage = ((offset - thumbHalf) * 100 / this._scrollbarVerticalElement.offsetHeight);\n this._viewElement.scrollTop = (thumbPositionPercentage * this._viewElement.scrollHeight / 100);\n };\n\n GeminiScrollbar.prototype._clickHorizontalTrackHandler = function _clickHorizontalTrackHandler(e) {\n var offset = Math.abs(e.target.getBoundingClientRect().left - e.clientX)\n , thumbHalf = (this._thumbHorizontalElement.offsetWidth / 2)\n , thumbPositionPercentage = ((offset - thumbHalf) * 100 / this._scrollbarHorizontalElement.offsetWidth);\n this._viewElement.scrollLeft = (thumbPositionPercentage * this._viewElement.scrollWidth / 100);\n };\n\n GeminiScrollbar.prototype._clickVerticalThumbHandler = function _clickVerticalThumbHandler(e) {\n this._startDrag(e);\n this._prevPageY = (e.currentTarget.offsetHeight - (e.clientY - e.currentTarget.getBoundingClientRect().top));\n };\n\n GeminiScrollbar.prototype._clickHorizontalThumbHandler = function _clickHorizontalThumbHandler(e) {\n this._startDrag(e);\n this._prevPageX = (e.currentTarget.offsetWidth - (e.clientX - e.currentTarget.getBoundingClientRect().left));\n };\n\n GeminiScrollbar.prototype._startDrag = function _startDrag(e) {\n e.stopImmediatePropagation();\n this._cursorDown = true;\n addClass(document.body, [CLASSNAMES.disable]);\n this._document.addEventListener('mousemove', this._cache.events.mouseMoveDocumentHandler);\n this._document.onselectstart = function() {return false;};\n };\n\n GeminiScrollbar.prototype._mouseUpDocumentHandler = function _mouseUpDocumentHandler() {\n this._cursorDown = false;\n this._prevPageX = this._prevPageY = 0;\n removeClass(document.body, [CLASSNAMES.disable]);\n this._document.removeEventListener('mousemove', this._cache.events.mouseMoveDocumentHandler);\n this._document.onselectstart = null;\n };\n\n GeminiScrollbar.prototype._mouseMoveDocumentHandler = function _mouseMoveDocumentHandler(e) {\n if (this._cursorDown === false) {return;}\n\n var offset, thumbClickPosition, thumbPositionPercentage;\n\n if (this._prevPageY) {\n offset = ((this._scrollbarVerticalElement.getBoundingClientRect().top - e.clientY) * -1);\n thumbClickPosition = (this._thumbVerticalElement.offsetHeight - this._prevPageY);\n thumbPositionPercentage = ((offset - thumbClickPosition) * 100 / this._scrollbarVerticalElement.offsetHeight);\n this._viewElement.scrollTop = (thumbPositionPercentage * this._viewElement.scrollHeight / 100);\n return void 0;\n }\n\n if (this._prevPageX) {\n offset = ((this._scrollbarHorizontalElement.getBoundingClientRect().left - e.clientX) * -1);\n thumbClickPosition = (this._thumbHorizontalElement.offsetWidth - this._prevPageX);\n thumbPositionPercentage = ((offset - thumbClickPosition) * 100 / this._scrollbarHorizontalElement.offsetWidth);\n this._viewElement.scrollLeft = (thumbPositionPercentage * this._viewElement.scrollWidth / 100);\n }\n };\n\n if (typeof exports === 'object') {\n module.exports = GeminiScrollbar;\n } else {\n window.GeminiScrollbar = GeminiScrollbar;\n }\n})();\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require('../../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Dialog for restoring e2e keys from a backup and the user's recovery key\n */\nexports.default = _react2.default.createClass({\n displayName: 'RestoreKeyBackupDialog',\n\n getInitialState: function getInitialState() {\n return {\n backupInfo: null,\n loading: false,\n loadError: null,\n restoreError: null,\n recoveryKey: \"\",\n recoverInfo: null,\n recoveryKeyValid: false,\n forceRecoveryKey: false,\n passPhrase: ''\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._loadBackupStatus();\n },\n\n _onCancel: function _onCancel() {\n this.props.onFinished(false);\n },\n\n _onDone: function _onDone() {\n this.props.onFinished(true);\n },\n\n _onUseRecoveryKeyClick: function _onUseRecoveryKeyClick() {\n this.setState({\n forceRecoveryKey: true\n });\n },\n\n _onResetRecoveryClick: function _onResetRecoveryClick() {\n var _this = this;\n\n this.props.onFinished(false);\n _Modal2.default.createTrackedDialogAsync('Key Backup', 'Key Backup', import('../../../../async-components/views/dialogs/keybackup/CreateKeyBackupDialog'), {\n onFinished: function onFinished() {\n _this._loadBackupStatus();\n }\n });\n },\n\n _onRecoveryKeyChange: function _onRecoveryKeyChange(e) {\n this.setState({\n recoveryKey: e.target.value,\n recoveryKeyValid: _MatrixClientPeg2.default.get().isValidRecoveryKey(e.target.value)\n });\n },\n\n _onPassPhraseNext: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var recoverInfo;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.setState({\n loading: true,\n restoreError: null\n });\n _context.prev = 1;\n _context.next = 4;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().restoreKeyBackupWithPassword(this.state.passPhrase, undefined, undefined, this.state.backupInfo.version));\n\n case 4:\n recoverInfo = _context.sent;\n\n this.setState({\n loading: false,\n recoverInfo: recoverInfo\n });\n _context.next = 12;\n break;\n\n case 8:\n _context.prev = 8;\n _context.t0 = _context['catch'](1);\n\n console.log(\"Error restoring backup\", _context.t0);\n this.setState({\n loading: false,\n restoreError: _context.t0\n });\n\n case 12:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[1, 8]]);\n }));\n\n function _onPassPhraseNext() {\n return _ref.apply(this, arguments);\n }\n\n return _onPassPhraseNext;\n }(),\n\n _onRecoveryKeyNext: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var recoverInfo;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n this.setState({\n loading: true,\n restoreError: null\n });\n _context2.prev = 1;\n _context2.next = 4;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().restoreKeyBackupWithRecoveryKey(this.state.recoveryKey, undefined, undefined, this.state.backupInfo.version));\n\n case 4:\n recoverInfo = _context2.sent;\n\n this.setState({\n loading: false,\n recoverInfo: recoverInfo\n });\n _context2.next = 12;\n break;\n\n case 8:\n _context2.prev = 8;\n _context2.t0 = _context2['catch'](1);\n\n console.log(\"Error restoring backup\", _context2.t0);\n this.setState({\n loading: false,\n restoreError: _context2.t0\n });\n\n case 12:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[1, 8]]);\n }));\n\n function _onRecoveryKeyNext() {\n return _ref2.apply(this, arguments);\n }\n\n return _onRecoveryKeyNext;\n }(),\n\n _onPassPhraseChange: function _onPassPhraseChange(e) {\n this.setState({\n passPhrase: e.target.value\n });\n },\n\n _onPassPhraseKeyPress: function _onPassPhraseKeyPress(e) {\n if (e.key === \"Enter\") {\n this._onPassPhraseNext();\n }\n },\n\n _onRecoveryKeyKeyPress: function _onRecoveryKeyKeyPress(e) {\n if (e.key === \"Enter\" && this.state.recoveryKeyValid) {\n this._onRecoveryKeyNext();\n }\n },\n\n _loadBackupStatus: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var backupInfo;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n this.setState({\n loading: true,\n loadError: null\n });\n _context3.prev = 1;\n _context3.next = 4;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().getKeyBackupVersion());\n\n case 4:\n backupInfo = _context3.sent;\n\n this.setState({\n loadError: null,\n loading: false,\n backupInfo: backupInfo\n });\n _context3.next = 12;\n break;\n\n case 8:\n _context3.prev = 8;\n _context3.t0 = _context3['catch'](1);\n\n console.log(\"Error loading backup status\", _context3.t0);\n this.setState({\n loadError: _context3.t0,\n loading: false\n });\n\n case 12:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this, [[1, 8]]);\n }));\n\n function _loadBackupStatus() {\n return _ref3.apply(this, arguments);\n }\n\n return _loadBackupStatus;\n }(),\n\n render: function render() {\n var _this2 = this;\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n\n var backupHasPassphrase = this.state.backupInfo && this.state.backupInfo.auth_data && this.state.backupInfo.auth_data.private_key_salt && this.state.backupInfo.auth_data.private_key_iterations;\n\n var content = void 0;\n var title = void 0;\n if (this.state.loading) {\n title = (0, _languageHandler._t)(\"Loading...\");\n content = _react2.default.createElement(Spinner, null);\n } else if (this.state.loadError) {\n title = (0, _languageHandler._t)(\"Error\");\n content = (0, _languageHandler._t)(\"Unable to load backup status\");\n } else if (this.state.restoreError) {\n title = (0, _languageHandler._t)(\"Error\");\n content = (0, _languageHandler._t)(\"Unable to restore backup\");\n } else if (this.state.backupInfo === null) {\n title = (0, _languageHandler._t)(\"Error\");\n content = (0, _languageHandler._t)(\"No backup found!\");\n } else if (this.state.recoverInfo) {\n title = (0, _languageHandler._t)(\"Backup Restored\");\n var failedToDecrypt = void 0;\n if (this.state.recoverInfo.total > this.state.recoverInfo.imported) {\n failedToDecrypt = _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Failed to decrypt %(failedCount)s sessions!\", { failedCount: this.state.recoverInfo.total - this.state.recoverInfo.imported })\n );\n }\n content = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Restored %(sessionCount)s session keys\", { sessionCount: this.state.recoverInfo.imported })\n ),\n failedToDecrypt\n );\n } else if (backupHasPassphrase && !this.state.forceRecoveryKey) {\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n title = (0, _languageHandler._t)(\"Enter Recovery Passphrase\");\n content = _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Access your secure message history and set up secure \" + \"messaging by entering your recovery passphrase.\"),\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RestoreKeyBackupDialog_primaryContainer' },\n _react2.default.createElement('input', { type: 'password',\n className: 'mx_RestoreKeyBackupDialog_passPhraseInput',\n onChange: this._onPassPhraseChange,\n onKeyPress: this._onPassPhraseKeyPress,\n value: this.state.passPhrase,\n autoFocus: true\n }),\n _react2.default.createElement(DialogButtons, { primaryButton: (0, _languageHandler._t)('Next'),\n onPrimaryButtonClick: this._onPassPhraseNext,\n hasCancel: true,\n onCancel: this._onCancel,\n focus: false\n })\n ),\n (0, _languageHandler._t)(\"If you've forgotten your recovery passphrase you can \" + \"<button1>use your recovery key</button1> or \" + \"<button2>set up new recovery options</button2>\", {}, {\n button1: function button1(s) {\n return _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_linkButton',\n element: 'span',\n onClick: _this2._onUseRecoveryKeyClick\n },\n s\n );\n },\n button2: function button2(s) {\n return _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_linkButton',\n element: 'span',\n onClick: _this2._onResetRecoveryClick\n },\n s\n );\n }\n })\n );\n } else {\n title = (0, _languageHandler._t)(\"Enter Recovery Key\");\n var _DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n var _AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n\n var keyStatus = void 0;\n if (this.state.recoveryKey.length === 0) {\n keyStatus = _react2.default.createElement('div', { className: 'mx_RestoreKeyBackupDialog_keyStatus' });\n } else if (this.state.recoveryKeyValid) {\n keyStatus = _react2.default.createElement(\n 'div',\n { className: 'mx_RestoreKeyBackupDialog_keyStatus' },\n '\\uD83D\\uDC4D ',\n (0, _languageHandler._t)(\"This looks like a valid recovery key!\")\n );\n } else {\n keyStatus = _react2.default.createElement(\n 'div',\n { className: 'mx_RestoreKeyBackupDialog_keyStatus' },\n '\\uD83D\\uDC4E ',\n (0, _languageHandler._t)(\"Not a valid recovery key\")\n );\n }\n\n content = _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Access your secure message history and set up secure \" + \"messaging by entering your recovery key.\"),\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RestoreKeyBackupDialog_primaryContainer' },\n _react2.default.createElement('input', { className: 'mx_RestoreKeyBackupDialog_recoveryKeyInput',\n onChange: this._onRecoveryKeyChange,\n onKeyPress: this._onRecoveryKeyKeyPress,\n value: this.state.recoveryKey,\n autoFocus: true\n }),\n keyStatus,\n _react2.default.createElement(_DialogButtons, { primaryButton: (0, _languageHandler._t)('Next'),\n onPrimaryButtonClick: this._onRecoveryKeyNext,\n hasCancel: true,\n onCancel: this._onCancel,\n focus: false,\n primaryDisabled: !this.state.recoveryKeyValid\n })\n ),\n (0, _languageHandler._t)(\"If you've forgotten your recovery passphrase you can \" + \"<button>set up new recovery options</button>\", {}, {\n button: function button(s) {\n return _react2.default.createElement(\n _AccessibleButton,\n { className: 'mx_linkButton',\n element: 'span',\n onClick: _this2._onResetRecoveryClick\n },\n s\n );\n }\n })\n );\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_RestoreKeyBackupDialog',\n onFinished: this.props.onFinished,\n title: title\n },\n _react2.default.createElement(\n 'div',\n null,\n content\n )\n );\n }\n}); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=RestoreKeyBackupDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _DirectoryUtils = require('../../../utils/DirectoryUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DEFAULT_ICON_URL = \"img/network-matrix.svg\"; /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar NetworkDropdown = function (_React$Component) {\n (0, _inherits3.default)(NetworkDropdown, _React$Component);\n\n function NetworkDropdown(props) {\n (0, _classCallCheck3.default)(this, NetworkDropdown);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (NetworkDropdown.__proto__ || (0, _getPrototypeOf2.default)(NetworkDropdown)).call(this, props));\n\n _this.dropdownRootElement = null;\n _this.ignoreEvent = null;\n\n _this.onInputClick = _this.onInputClick.bind(_this);\n _this.onRootClick = _this.onRootClick.bind(_this);\n _this.onDocumentClick = _this.onDocumentClick.bind(_this);\n _this.onMenuOptionClick = _this.onMenuOptionClick.bind(_this);\n _this.onInputKeyUp = _this.onInputKeyUp.bind(_this);\n _this.collectRoot = _this.collectRoot.bind(_this);\n _this.collectInputTextBox = _this.collectInputTextBox.bind(_this);\n\n _this.inputTextBox = null;\n\n var server = _MatrixClientPeg2.default.getHomeServerName();\n _this.state = {\n expanded: false,\n selectedServer: server,\n selectedInstance: null,\n includeAllNetworks: false\n };\n return _this;\n }\n\n (0, _createClass3.default)(NetworkDropdown, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n // Listen for all clicks on the document so we can close the\n // menu when the user clicks somewhere else\n document.addEventListener('click', this.onDocumentClick, false);\n\n // fire this now so the defaults can be set up\n this.props.onOptionChange(this.state.selectedServer, this.state.selectedInstance, this.state.includeAllNetworks);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n document.removeEventListener('click', this.onDocumentClick, false);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (this.state.expanded && this.inputTextBox) {\n this.inputTextBox.focus();\n }\n }\n }, {\n key: 'onDocumentClick',\n value: function onDocumentClick(ev) {\n // Close the dropdown if the user clicks anywhere that isn't\n // within our root element\n if (ev !== this.ignoreEvent) {\n this.setState({\n expanded: false\n });\n }\n }\n }, {\n key: 'onRootClick',\n value: function onRootClick(ev) {\n // This captures any clicks that happen within our elements,\n // such that we can then ignore them when they're seen by the\n // click listener on the document handler, ie. not close the\n // dropdown immediately after opening it.\n // NB. We can't just stopPropagation() because then the event\n // doesn't reach the React onClick().\n this.ignoreEvent = ev;\n }\n }, {\n key: 'onInputClick',\n value: function onInputClick(ev) {\n this.setState({\n expanded: !this.state.expanded\n });\n ev.preventDefault();\n }\n }, {\n key: 'onMenuOptionClick',\n value: function onMenuOptionClick(server, instance, includeAll) {\n this.setState({\n expanded: false,\n selectedServer: server,\n selectedInstanceId: instance ? instance.instance_id : null,\n includeAll: includeAll\n });\n this.props.onOptionChange(server, instance ? instance.instance_id : null, includeAll);\n }\n }, {\n key: 'onInputKeyUp',\n value: function onInputKeyUp(e) {\n if (e.key == 'Enter') {\n this.setState({\n expanded: false,\n selectedServer: e.target.value,\n selectedNetwork: null\n });\n this.props.onOptionChange(e.target.value, null);\n }\n }\n }, {\n key: 'collectRoot',\n value: function collectRoot(e) {\n if (this.dropdownRootElement) {\n this.dropdownRootElement.removeEventListener('click', this.onRootClick, false);\n }\n if (e) {\n e.addEventListener('click', this.onRootClick, false);\n }\n this.dropdownRootElement = e;\n }\n }, {\n key: 'collectInputTextBox',\n value: function collectInputTextBox(e) {\n this.inputTextBox = e;\n }\n }, {\n key: '_getMenuOptions',\n value: function _getMenuOptions() {\n var options = [];\n\n var servers = [];\n if (this.props.config.servers) {\n servers = servers.concat(this.props.config.servers);\n }\n\n if (servers.indexOf(_MatrixClientPeg2.default.getHomeServerName()) == -1) {\n servers.unshift(_MatrixClientPeg2.default.getHomeServerName());\n }\n\n // For our own HS, we can use the instance_ids given in the third party protocols\n // response to get the server to filter the room list by network for us.\n // We can't get thirdparty protocols for remote server yet though, so for those\n // we can only show the default room list.\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(servers), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var server = _step.value;\n\n options.push(this._makeMenuOption(server, null, true));\n if (server == _MatrixClientPeg2.default.getHomeServerName()) {\n options.push(this._makeMenuOption(server, null, false));\n if (this.props.protocols) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(this.props.protocols)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var proto = _step2.value;\n\n if (!this.props.protocols[proto].instances) continue;\n\n var sortedInstances = this.props.protocols[proto].instances;\n sortedInstances.sort(function (x, y) {\n var a = x.desc;\n var b = y.desc;\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n } else {\n return 0;\n }\n });\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(sortedInstances), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var instance = _step3.value;\n\n if (!instance.instance_id) continue;\n options.push(this._makeMenuOption(server, instance, false));\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return options;\n }\n }, {\n key: '_makeMenuOption',\n value: function _makeMenuOption(server, instance, includeAll, handleClicks) {\n if (handleClicks === undefined) handleClicks = true;\n\n var icon = void 0;\n var name = void 0;\n var span_class = void 0;\n var key = void 0;\n\n if (!instance && includeAll) {\n key = server;\n name = server;\n span_class = 'mx_NetworkDropdown_menu_all';\n } else if (!instance) {\n key = server + '_all';\n name = 'Matrix';\n icon = _react2.default.createElement('img', { src: 'img/network-matrix.svg' });\n span_class = 'mx_NetworkDropdown_menu_network';\n } else {\n key = server + '_inst_' + instance.instance_id;\n var imgUrl = instance.icon ? _MatrixClientPeg2.default.get().mxcUrlToHttp(instance.icon, 25, 25, 'crop', true) : DEFAULT_ICON_URL;\n icon = _react2.default.createElement('img', { src: imgUrl });\n name = instance.desc;\n span_class = 'mx_NetworkDropdown_menu_network';\n }\n\n var click_handler = handleClicks ? this.onMenuOptionClick.bind(this, server, instance, includeAll) : null;\n\n return _react2.default.createElement(\n 'div',\n { key: key, className: 'mx_NetworkDropdown_networkoption', onClick: click_handler },\n icon,\n _react2.default.createElement(\n 'span',\n { className: 'mx_NetworkDropdown_menu_network' },\n name\n )\n );\n }\n }, {\n key: 'render',\n value: function render() {\n var current_value = void 0;\n\n var menu = void 0;\n if (this.state.expanded) {\n var menu_options = this._getMenuOptions();\n menu = _react2.default.createElement(\n 'div',\n { className: 'mx_NetworkDropdown_menu' },\n menu_options\n );\n current_value = _react2.default.createElement('input', { type: 'text', className: 'mx_NetworkDropdown_networkoption',\n ref: this.collectInputTextBox, onKeyUp: this.onInputKeyUp,\n placeholder: 'matrix.org' // 'matrix.org' as an example of an HS name\n });\n } else {\n var instance = (0, _DirectoryUtils.instanceForInstanceId)(this.props.protocols, this.state.selectedInstanceId);\n current_value = this._makeMenuOption(this.state.selectedServer, instance, this.state.includeAll, false);\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_NetworkDropdown', ref: this.collectRoot },\n _react2.default.createElement(\n 'div',\n { className: 'mx_NetworkDropdown_input', onClick: this.onInputClick },\n current_value,\n _react2.default.createElement('span', { className: 'mx_NetworkDropdown_arrow' }),\n menu\n )\n );\n }\n }]);\n return NetworkDropdown;\n}(_react2.default.Component);\n\nexports.default = NetworkDropdown;\n\n\nNetworkDropdown.propTypes = {\n onOptionChange: _react2.default.PropTypes.func.isRequired,\n protocols: _react2.default.PropTypes.object,\n // The room directory config. May have a 'servers' key that is a list of server names to include in the dropdown\n config: _react2.default.PropTypes.object\n};\n\nNetworkDropdown.defaultProps = {\n protocols: {},\n config: {}\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=NetworkDropdown.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _AccessibleButton = require('./AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Analytics = require('../../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'RoleButton',\n\n propTypes: {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool,\n action: _propTypes2.default.string.isRequired,\n mouseOverAction: _propTypes2.default.string,\n label: _propTypes2.default.string.isRequired,\n iconPath: _propTypes2.default.string.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n size: \"25\",\n tooltip: false\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n showTooltip: false\n };\n },\n\n _onClick: function _onClick(ev) {\n ev.stopPropagation();\n _Analytics2.default.trackEvent('Action Button', 'click', this.props.action);\n _dispatcher2.default.dispatch({ action: this.props.action });\n },\n\n _onMouseEnter: function _onMouseEnter() {\n if (this.props.tooltip) this.setState({ showTooltip: true });\n if (this.props.mouseOverAction) {\n _dispatcher2.default.dispatch({ action: this.props.mouseOverAction });\n }\n },\n\n _onMouseLeave: function _onMouseLeave() {\n this.setState({ showTooltip: false });\n },\n\n render: function render() {\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n\n var tooltip = void 0;\n if (this.state.showTooltip) {\n var RoomTooltip = _index2.default.getComponent(\"rooms.RoomTooltip\");\n tooltip = _react2.default.createElement(RoomTooltip, { className: 'mx_RoleButton_tooltip', label: this.props.label });\n }\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoleButton',\n onClick: this._onClick,\n onMouseEnter: this._onMouseEnter,\n onMouseLeave: this._onMouseLeave,\n 'aria-label': this.props.label\n },\n _react2.default.createElement(TintableSvg, { src: this.props.iconPath, width: this.props.size, height: this.props.size }),\n tooltip\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=ActionButton.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _UserAddress = require('../../../UserAddress');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'AddressSelector',\n\n propTypes: {\n onSelected: _propTypes2.default.func.isRequired,\n\n // List of the addresses to display\n addressList: _propTypes2.default.arrayOf(_UserAddress.UserAddressType).isRequired,\n // Whether to show the address on the address tiles\n showAddress: _propTypes2.default.bool,\n truncateAt: _propTypes2.default.number.isRequired,\n selected: _propTypes2.default.number,\n\n // Element to put as a header on top of the list\n header: _propTypes2.default.node\n },\n\n getInitialState: function getInitialState() {\n return {\n selected: this.props.selected === undefined ? 0 : this.props.selected,\n hover: false\n };\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(props) {\n // Make sure the selected item isn't outside the list bounds\n var selected = this.state.selected;\n var maxSelected = this._maxSelected(props.addressList);\n if (selected > maxSelected) {\n this.setState({ selected: maxSelected });\n }\n },\n\n componentDidUpdate: function componentDidUpdate() {\n // As the user scrolls with the arrow keys keep the selected item\n // at the top of the window.\n if (this.scrollElement && this.props.addressList.length > 0 && !this.state.hover) {\n var elementHeight = this.addressListElement.getBoundingClientRect().height;\n this.scrollElement.scrollTop = this.state.selected * elementHeight - elementHeight;\n }\n },\n\n moveSelectionTop: function moveSelectionTop() {\n if (this.state.selected > 0) {\n this.setState({\n selected: 0,\n hover: false\n });\n }\n },\n\n moveSelectionUp: function moveSelectionUp() {\n if (this.state.selected > 0) {\n this.setState({\n selected: this.state.selected - 1,\n hover: false\n });\n }\n },\n\n moveSelectionDown: function moveSelectionDown() {\n if (this.state.selected < this._maxSelected(this.props.addressList)) {\n this.setState({\n selected: this.state.selected + 1,\n hover: false\n });\n }\n },\n\n chooseSelection: function chooseSelection() {\n this.selectAddress(this.state.selected);\n },\n\n onClick: function onClick(index) {\n this.selectAddress(index);\n },\n\n onMouseEnter: function onMouseEnter(index) {\n this.setState({\n selected: index,\n hover: true\n });\n },\n\n onMouseLeave: function onMouseLeave() {\n this.setState({ hover: false });\n },\n\n selectAddress: function selectAddress(index) {\n // Only try to select an address if one exists\n if (this.props.addressList.length !== 0) {\n this.props.onSelected(index);\n this.setState({ hover: false });\n }\n },\n\n createAddressListTiles: function createAddressListTiles() {\n var _this = this;\n\n var self = this;\n var AddressTile = _index2.default.getComponent(\"elements.AddressTile\");\n var maxSelected = this._maxSelected(this.props.addressList);\n var addressList = [];\n\n // Only create the address elements if there are address\n if (this.props.addressList.length > 0) {\n for (var i = 0; i <= maxSelected; i++) {\n var classes = (0, _classnames2.default)({\n \"mx_AddressSelector_addressListElement\": true,\n \"mx_AddressSelector_selected\": this.state.selected === i\n });\n\n // NOTE: Defaulting to \"vector\" as the network, until the network backend stuff is done.\n // Saving the addressListElement so we can use it to work out, in the componentDidUpdate\n // method, how far to scroll when using the arrow keys\n addressList.push(_react2.default.createElement(\n 'div',\n {\n className: classes,\n onClick: this.onClick.bind(this, i),\n onMouseEnter: this.onMouseEnter.bind(this, i),\n onMouseLeave: this.onMouseLeave,\n key: this.props.addressList[i].addressType + \"/\" + this.props.addressList[i].address,\n ref: function ref(_ref) {\n _this.addressListElement = _ref;\n }\n },\n _react2.default.createElement(AddressTile, {\n address: this.props.addressList[i],\n showAddress: this.props.showAddress,\n justified: true,\n networkName: 'vector',\n networkUrl: 'img/search-icon-vector.svg'\n })\n ));\n }\n }\n return addressList;\n },\n\n _maxSelected: function _maxSelected(list) {\n var listSize = list.length === 0 ? 0 : list.length - 1;\n var maxSelected = listSize > this.props.truncateAt - 1 ? this.props.truncateAt - 1 : listSize;\n return maxSelected;\n },\n\n render: function render() {\n var _this2 = this;\n\n var classes = (0, _classnames2.default)({\n \"mx_AddressSelector\": true,\n \"mx_AddressSelector_empty\": this.props.addressList.length === 0\n });\n\n return _react2.default.createElement(\n 'div',\n { className: classes, ref: function ref(_ref2) {\n _this2.scrollElement = _ref2;\n } },\n this.props.header,\n this.createAddressListTiles()\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=AddressSelector.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _UserAddress = require('../../../UserAddress.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'AddressTile',\n\n propTypes: {\n address: _UserAddress.UserAddressType.isRequired,\n canDismiss: _propTypes2.default.bool,\n onDismissed: _propTypes2.default.func,\n justified: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n canDismiss: false,\n onDismissed: function onDismissed() {}, // NOP\n justified: false\n };\n },\n\n render: function render() {\n var address = this.props.address;\n var name = address.displayName || address.address;\n\n var imgUrls = [];\n var isMatrixAddress = ['mx-user-id', 'mx-room-id'].includes(address.addressType);\n\n if (isMatrixAddress && address.avatarMxc) {\n imgUrls.push(_MatrixClientPeg2.default.get().mxcUrlToHttp(address.avatarMxc, 25, 25, 'crop'));\n } else if (address.addressType === 'email') {\n imgUrls.push('img/icon-email-user.svg');\n }\n\n // Removing networks for now as they're not really supported\n /*\n var network;\n if (this.props.networkUrl !== \"\") {\n network = (\n <div className=\"mx_AddressTile_network\">\n <BaseAvatar width={25} height={25} name={this.props.networkName} title=\"Riot\" url={this.props.networkUrl} />\n </div>\n );\n }\n */\n\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n\n var nameClasses = (0, _classnames2.default)({\n \"mx_AddressTile_name\": true,\n \"mx_AddressTile_justified\": this.props.justified\n });\n\n var info = void 0;\n var error = false;\n if (isMatrixAddress && address.isKnown) {\n var idClasses = (0, _classnames2.default)({\n \"mx_AddressTile_id\": true,\n \"mx_AddressTile_justified\": this.props.justified\n });\n\n info = _react2.default.createElement(\n 'div',\n { className: 'mx_AddressTile_mx' },\n _react2.default.createElement(\n 'div',\n { className: nameClasses },\n name\n ),\n this.props.showAddress ? _react2.default.createElement(\n 'div',\n { className: idClasses },\n address.address\n ) : _react2.default.createElement('div', null)\n );\n } else if (isMatrixAddress) {\n var unknownMxClasses = (0, _classnames2.default)({\n \"mx_AddressTile_unknownMx\": true,\n \"mx_AddressTile_justified\": this.props.justified\n });\n\n info = _react2.default.createElement(\n 'div',\n { className: unknownMxClasses },\n this.props.address.address\n );\n } else if (address.addressType === \"email\") {\n var emailClasses = (0, _classnames2.default)({\n \"mx_AddressTile_email\": true,\n \"mx_AddressTile_justified\": this.props.justified\n });\n\n var nameNode = null;\n if (address.displayName) {\n nameNode = _react2.default.createElement(\n 'div',\n { className: nameClasses },\n address.displayName\n );\n }\n\n info = _react2.default.createElement(\n 'div',\n { className: 'mx_AddressTile_mx' },\n _react2.default.createElement(\n 'div',\n { className: emailClasses },\n address.address\n ),\n nameNode\n );\n } else {\n error = true;\n var unknownClasses = (0, _classnames2.default)({\n \"mx_AddressTile_unknown\": true,\n \"mx_AddressTile_justified\": this.props.justified\n });\n\n info = _react2.default.createElement(\n 'div',\n { className: unknownClasses },\n (0, _languageHandler._t)(\"Unknown Address\")\n );\n }\n\n var classes = (0, _classnames2.default)({\n \"mx_AddressTile\": true,\n \"mx_AddressTile_error\": error\n });\n\n var dismiss = void 0;\n if (this.props.canDismiss) {\n dismiss = _react2.default.createElement(\n 'div',\n { className: 'mx_AddressTile_dismiss', onClick: this.props.onDismissed },\n _react2.default.createElement(TintableSvg, { src: 'img/icon-address-delete.svg', width: '9', height: '9' })\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { className: classes },\n _react2.default.createElement(\n 'div',\n { className: 'mx_AddressTile_avatar' },\n _react2.default.createElement(BaseAvatar, { defaultToInitialLetter: true, width: 25, height: 25, name: name, title: name, urls: imgUrls })\n ),\n info,\n dismiss\n );\n }\n}); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=AddressTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _FromWidgetPostMessageApi = require('./FromWidgetPostMessageApi');\n\nvar _FromWidgetPostMessageApi2 = _interopRequireDefault(_FromWidgetPostMessageApi);\n\nvar _ToWidgetPostMessageApi = require('./ToWidgetPostMessageApi');\n\nvar _ToWidgetPostMessageApi2 = _interopRequireDefault(_ToWidgetPostMessageApi);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/*\n* See - https://docs.google.com/document/d/1uPF7XWY_dXTKVKV7jZQ2KmsI19wn9-kFRgQ1tFQP7wQ/edit?usp=sharing for\n* spec. details / documentation.\n*/\n\nif (!global.mxFromWidgetMessaging) {\n global.mxFromWidgetMessaging = new _FromWidgetPostMessageApi2.default();\n global.mxFromWidgetMessaging.start();\n}\nif (!global.mxToWidgetMessaging) {\n global.mxToWidgetMessaging = new _ToWidgetPostMessageApi2.default();\n global.mxToWidgetMessaging.start();\n}\n\nvar OUTBOUND_API_NAME = 'toWidget';\n\nvar WidgetMessaging = function () {\n function WidgetMessaging(widgetId, widgetUrl, target) {\n (0, _classCallCheck3.default)(this, WidgetMessaging);\n\n this.widgetId = widgetId;\n this.widgetUrl = widgetUrl;\n this.target = target;\n this.fromWidget = global.mxFromWidgetMessaging;\n this.toWidget = global.mxToWidgetMessaging;\n this.start();\n }\n\n (0, _createClass3.default)(WidgetMessaging, [{\n key: 'messageToWidget',\n value: function messageToWidget(action) {\n action.widgetId = this.widgetId; // Required to be sent for all outbound requests\n\n return this.toWidget.exec(action, this.target).then(function (data) {\n // Check for errors and reject if found\n if (data.response === undefined) {\n // null is valid\n throw new Error(\"Missing 'response' field\");\n }\n if (data.response && data.response.error) {\n var err = data.response.error;\n var msg = String(err.message ? err.message : \"An error was returned\");\n if (err._error) {\n console.error(err._error);\n }\n // Potential XSS attack if 'msg' is not appropriately sanitized,\n // as it is untrusted input by our parent window (which we assume is Riot).\n // We can't aggressively sanitize [A-z0-9] since it might be a translation.\n throw new Error(msg);\n }\n // Return the response field for the request\n return data.response;\n });\n }\n\n /**\n * Request a screenshot from a widget\n * @return {Promise} To be resolved with screenshot data when it has been generated\n */\n\n }, {\n key: 'getScreenshot',\n value: function getScreenshot() {\n console.warn('Requesting screenshot for', this.widgetId);\n return this.messageToWidget({\n api: OUTBOUND_API_NAME,\n action: \"screenshot\"\n }).catch(function (error) {\n return new Error(\"Failed to get screenshot: \" + error.message);\n }).then(function (response) {\n return response.screenshot;\n });\n }\n\n /**\n * Request capabilities required by the widget\n * @return {Promise} To be resolved with an array of requested widget capabilities\n */\n\n }, {\n key: 'getCapabilities',\n value: function getCapabilities() {\n var _this = this;\n\n console.warn('Requesting capabilities for', this.widgetId);\n return this.messageToWidget({\n api: OUTBOUND_API_NAME,\n action: \"capabilities\"\n }).then(function (response) {\n console.warn('Got capabilities for', _this.widgetId, response.capabilities);\n return response.capabilities;\n });\n }\n }, {\n key: 'sendVisibility',\n value: function sendVisibility(visible) {\n return this.messageToWidget({\n api: OUTBOUND_API_NAME,\n action: \"visibility\",\n visible: visible\n }).catch(function (error) {\n console.error(\"Failed to send visibility: \", error);\n });\n }\n }, {\n key: 'start',\n value: function start() {\n this.fromWidget.addEndpoint(this.widgetId, this.widgetUrl);\n }\n }, {\n key: 'stop',\n value: function stop() {\n this.fromWidget.removeEndpoint(this.widgetId, this.widgetUrl);\n }\n }]);\n return WidgetMessaging;\n}();\n\nexports.default = WidgetMessaging;\nmodule.exports = exports['default'];\n//# sourceMappingURL=WidgetMessaging.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _IntegrationManager = require('./IntegrationManager');\n\nvar _IntegrationManager2 = _interopRequireDefault(_IntegrationManager);\n\nvar _WidgetMessagingEndpoint = require('./WidgetMessagingEndpoint');\n\nvar _WidgetMessagingEndpoint2 = _interopRequireDefault(_WidgetMessagingEndpoint);\n\nvar _ActiveWidgetStore = require('./stores/ActiveWidgetStore');\n\nvar _ActiveWidgetStore2 = _interopRequireDefault(_ActiveWidgetStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar WIDGET_API_VERSION = '0.0.1'; // Current API version\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the 'License');\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an 'AS IS' BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar SUPPORTED_WIDGET_API_VERSIONS = ['0.0.1'];\nvar INBOUND_API_NAME = 'fromWidget';\n\n// Listen for and handle incomming requests using the 'fromWidget' postMessage\n// API and initiate responses\n\nvar FromWidgetPostMessageApi = function () {\n function FromWidgetPostMessageApi() {\n (0, _classCallCheck3.default)(this, FromWidgetPostMessageApi);\n\n this.widgetMessagingEndpoints = [];\n\n this.start = this.start.bind(this);\n this.stop = this.stop.bind(this);\n this.onPostMessage = this.onPostMessage.bind(this);\n }\n\n (0, _createClass3.default)(FromWidgetPostMessageApi, [{\n key: 'start',\n value: function start() {\n window.addEventListener('message', this.onPostMessage);\n }\n }, {\n key: 'stop',\n value: function stop() {\n window.removeEventListener('message', this.onPostMessage);\n }\n\n /**\n * Register a widget endpoint for trusted postMessage communication\n * @param {string} widgetId Unique widget identifier\n * @param {string} endpointUrl Widget wurl origin (protocol + (optional port) + host)\n */\n\n }, {\n key: 'addEndpoint',\n value: function addEndpoint(widgetId, endpointUrl) {\n var u = _url2.default.parse(endpointUrl);\n if (!u || !u.protocol || !u.host) {\n console.warn('Add FromWidgetPostMessageApi endpoint - Invalid origin:', endpointUrl);\n return;\n }\n\n var origin = u.protocol + '//' + u.host;\n var endpoint = new _WidgetMessagingEndpoint2.default(widgetId, origin);\n if (this.widgetMessagingEndpoints.some(function (ep) {\n return ep.widgetId === widgetId && ep.endpointUrl === endpointUrl;\n })) {\n // Message endpoint already registered\n console.warn('Add FromWidgetPostMessageApi - Endpoint already registered');\n return;\n } else {\n console.warn('Adding fromWidget messaging endpoint for ' + widgetId, endpoint);\n this.widgetMessagingEndpoints.push(endpoint);\n }\n }\n\n /**\n * De-register a widget endpoint from trusted communication sources\n * @param {string} widgetId Unique widget identifier\n * @param {string} endpointUrl Widget wurl origin (protocol + (optional port) + host)\n * @return {boolean} True if endpoint was successfully removed\n */\n\n }, {\n key: 'removeEndpoint',\n value: function removeEndpoint(widgetId, endpointUrl) {\n var u = _url2.default.parse(endpointUrl);\n if (!u || !u.protocol || !u.host) {\n console.warn('Remove widget messaging endpoint - Invalid origin');\n return;\n }\n\n var origin = u.protocol + '//' + u.host;\n if (this.widgetMessagingEndpoints && this.widgetMessagingEndpoints.length > 0) {\n var length = this.widgetMessagingEndpoints.length;\n this.widgetMessagingEndpoints = this.widgetMessagingEndpoints.filter(function (endpoint) {\n return endpoint.widgetId != widgetId || endpoint.endpointUrl != origin;\n });\n return length > this.widgetMessagingEndpoints.length;\n }\n return false;\n }\n\n /**\n * Handle widget postMessage events\n * Messages are only handled where a valid, registered messaging endpoints\n * @param {Event} event Event to handle\n * @return {undefined}\n */\n\n }, {\n key: 'onPostMessage',\n value: function onPostMessage(event) {\n if (!event.origin) {\n // Handle chrome\n event.origin = event.originalEvent.origin;\n }\n\n // Event origin is empty string if undefined\n if (event.origin.length === 0 || !this.trustedEndpoint(event.origin) || event.data.api !== INBOUND_API_NAME || !event.data.widgetId) {\n return; // don't log this - debugging APIs like to spam postMessage which floods the log otherwise\n }\n\n // Although the requestId is required, we don't use it. We'll be nice and process the message\n // if the property is missing, but with a warning for widget developers.\n if (!event.data.requestId) {\n console.warn(\"fromWidget action '\" + event.data.action + \"' does not have a requestId\");\n }\n\n var action = event.data.action;\n var widgetId = event.data.widgetId;\n if (action === 'content_loaded') {\n console.warn('Widget reported content loaded for', widgetId);\n _dispatcher2.default.dispatch({\n action: 'widget_content_loaded',\n widgetId: widgetId\n });\n this.sendResponse(event, { success: true });\n } else if (action === 'supported_api_versions') {\n this.sendResponse(event, {\n api: INBOUND_API_NAME,\n supported_versions: SUPPORTED_WIDGET_API_VERSIONS\n });\n } else if (action === 'api_version') {\n this.sendResponse(event, {\n api: INBOUND_API_NAME,\n version: WIDGET_API_VERSION\n });\n } else if (action === 'm.sticker') {\n // console.warn('Got sticker message from widget', widgetId);\n // NOTE -- The widgetData field is deprecated (in favour of the 'data' field) and will be removed eventually\n var data = event.data.data || event.data.widgetData;\n _dispatcher2.default.dispatch({ action: 'm.sticker', data: data, widgetId: event.data.widgetId });\n } else if (action === 'integration_manager_open') {\n // Close the stickerpicker\n _dispatcher2.default.dispatch({ action: 'stickerpicker_close' });\n // Open the integration manager\n // NOTE -- The widgetData field is deprecated (in favour of the 'data' field) and will be removed eventually\n var _data = event.data.data || event.data.widgetData;\n var integType = _data && _data.integType ? _data.integType : null;\n var integId = _data && _data.integId ? _data.integId : null;\n _IntegrationManager2.default.open(integType, integId);\n } else if (action === 'set_always_on_screen') {\n // This is a new message: there is no reason to support the deprecated widgetData here\n var _data2 = event.data.data;\n var val = _data2.value;\n\n if (_ActiveWidgetStore2.default.widgetHasCapability(widgetId, 'm.always_on_screen')) {\n _ActiveWidgetStore2.default.setWidgetPersistence(widgetId, val);\n }\n } else {\n console.warn('Widget postMessage event unhandled');\n this.sendError(event, { message: 'The postMessage was unhandled' });\n }\n }\n\n /**\n * Check if message origin is registered as trusted\n * @param {string} origin PostMessage origin to check\n * @return {boolean} True if trusted\n */\n\n }, {\n key: 'trustedEndpoint',\n value: function trustedEndpoint(origin) {\n if (!origin) {\n return false;\n }\n\n return this.widgetMessagingEndpoints.some(function (endpoint) {\n // TODO / FIXME -- Should this also check the widgetId?\n return endpoint.endpointUrl === origin;\n });\n }\n\n /**\n * Send a postmessage response to a postMessage request\n * @param {Event} event The original postMessage request event\n * @param {Object} res Response data\n */\n\n }, {\n key: 'sendResponse',\n value: function sendResponse(event, res) {\n var data = JSON.parse((0, _stringify2.default)(event.data));\n data.response = res;\n event.source.postMessage(data, event.origin);\n }\n\n /**\n * Send an error response to a postMessage request\n * @param {Event} event The original postMessage request event\n * @param {string} msg Error message\n * @param {Error} nestedError Nested error event (optional)\n */\n\n }, {\n key: 'sendError',\n value: function sendError(event, msg, nestedError) {\n console.error('Action:' + event.data.action + ' failed with message: ' + msg);\n var data = JSON.parse((0, _stringify2.default)(event.data));\n data.response = {\n error: {\n message: msg\n }\n };\n if (nestedError) {\n data.response.error._error = nestedError;\n }\n event.source.postMessage(data, event.origin);\n }\n }]);\n return FromWidgetPostMessageApi;\n}();\n\nexports.default = FromWidgetPostMessageApi;\nmodule.exports = exports['default'];\n//# sourceMappingURL=FromWidgetPostMessageApi.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SdkConfig = require('./SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _ScalarMessaging = require('./ScalarMessaging');\n\nvar _ScalarMessaging2 = _interopRequireDefault(_ScalarMessaging);\n\nvar _ScalarAuthClient = require('./ScalarAuthClient');\n\nvar _ScalarAuthClient2 = _interopRequireDefault(_ScalarAuthClient);\n\nvar _RoomViewStore = require('./stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nif (!global.mxIntegrationManager) {\n global.mxIntegrationManager = {};\n}\n\nvar IntegrationManager = function () {\n function IntegrationManager() {\n (0, _classCallCheck3.default)(this, IntegrationManager);\n }\n\n (0, _createClass3.default)(IntegrationManager, null, [{\n key: '_init',\n value: function _init() {\n if (!global.mxIntegrationManager.client || !global.mxIntegrationManager.connected) {\n if (_SdkConfig2.default.get().integrations_ui_url && _SdkConfig2.default.get().integrations_rest_url) {\n _ScalarMessaging2.default.startListening();\n global.mxIntegrationManager.client = new _ScalarAuthClient2.default();\n\n return global.mxIntegrationManager.client.connect().then(function () {\n global.mxIntegrationManager.connected = true;\n }).catch(function (e) {\n console.error(\"Failed to connect to integrations server\", e);\n global.mxIntegrationManager.error = e;\n });\n } else {\n console.error('Invalid integration manager config', _SdkConfig2.default.get());\n }\n }\n }\n\n /**\n * Launch the integrations manager on the stickers integration page\n * @param {string} integName integration / widget type\n * @param {string} integId integration / widget ID\n * @param {function} onFinished Callback to invoke on integration manager close\n */\n\n }, {\n key: 'open',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(integName, integId, onFinished) {\n var IntegrationsManager, integType, src;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(IntegrationManager._init());\n\n case 2:\n IntegrationsManager = _index2.default.getComponent(\"views.settings.IntegrationsManager\");\n\n if (!(global.mxIntegrationManager.error || !(global.mxIntegrationManager.client && global.mxIntegrationManager.client.hasCredentials()))) {\n _context.next = 6;\n break;\n }\n\n console.error(\"Scalar error\", global.mxIntegrationManager);\n return _context.abrupt('return');\n\n case 6:\n integType = 'type_' + integName;\n src = global.mxIntegrationManager.client && global.mxIntegrationManager.client.hasCredentials() ? global.mxIntegrationManager.client.getScalarInterfaceUrlForRoom({ roomId: _RoomViewStore2.default.getRoomId() }, integType, integId) : null;\n\n _Modal2.default.createTrackedDialog('Integrations Manager', '', IntegrationsManager, {\n src: src,\n onFinished: onFinished\n }, \"mx_IntegrationsManager\");\n\n case 9:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function open(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return open;\n }()\n }]);\n return IntegrationManager;\n}();\n\nexports.default = IntegrationManager;\nmodule.exports = exports['default'];\n//# sourceMappingURL=IntegrationManager.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Represents mapping of widget instance to URLs for trusted postMessage communication.\n */\nvar WidgetMessageEndpoint =\n/**\n * Mapping of widget instance to URL for trusted postMessage communication.\n * @param {string} widgetId Unique widget identifier\n * @param {string} endpointUrl Widget wurl origin.\n */\nfunction WidgetMessageEndpoint(widgetId, endpointUrl) {\n (0, _classCallCheck3.default)(this, WidgetMessageEndpoint);\n\n if (!widgetId) {\n throw new Error(\"No widgetId specified in widgetMessageEndpoint constructor\");\n }\n if (!endpointUrl) {\n throw new Error(\"No endpoint specified in widgetMessageEndpoint constructor\");\n }\n this.widgetId = widgetId;\n this.endpointUrl = endpointUrl;\n};\n\nexports.default = WidgetMessageEndpoint;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=WidgetMessagingEndpoint.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// const OUTBOUND_API_NAME = 'toWidget';\n\n// Initiate requests using the \"toWidget\" postMessage API and handle responses\n// NOTE: ToWidgetPostMessageApi only handles message events with a data payload with a\n// response field\nvar ToWidgetPostMessageApi = function () {\n function ToWidgetPostMessageApi(timeoutMs) {\n (0, _classCallCheck3.default)(this, ToWidgetPostMessageApi);\n\n this._timeoutMs = timeoutMs || 5000; // default to 5s timer\n this._counter = 0;\n this._requestMap = {\n // $ID: {resolve, reject}\n };\n this.start = this.start.bind(this);\n this.stop = this.stop.bind(this);\n this.onPostMessage = this.onPostMessage.bind(this);\n }\n\n (0, _createClass3.default)(ToWidgetPostMessageApi, [{\n key: 'start',\n value: function start() {\n window.addEventListener('message', this.onPostMessage);\n }\n }, {\n key: 'stop',\n value: function stop() {\n window.removeEventListener('message', this.onPostMessage);\n }\n }, {\n key: 'onPostMessage',\n value: function onPostMessage(ev) {\n // THIS IS ALL UNSAFE EXECUTION.\n // We do not verify who the sender of `ev` is!\n var payload = ev.data;\n // NOTE: Workaround for running in a mobile WebView where a\n // postMessage immediately triggers this callback even though it is\n // not the response.\n if (payload.response === undefined) {\n return;\n }\n var promise = this._requestMap[payload.requestId];\n if (!promise) {\n return;\n }\n delete this._requestMap[payload.requestId];\n promise.resolve(payload);\n }\n\n // Initiate outbound requests (toWidget)\n\n }, {\n key: 'exec',\n value: function exec(action, targetWindow, targetOrigin) {\n var _this = this;\n\n targetWindow = targetWindow || window.parent; // default to parent window\n targetOrigin = targetOrigin || \"*\";\n this._counter += 1;\n action.requestId = Date.now() + \"-\" + Math.random().toString(36) + \"-\" + this._counter;\n\n return new _bluebird2.default(function (resolve, reject) {\n _this._requestMap[action.requestId] = { resolve: resolve, reject: reject };\n targetWindow.postMessage(action, targetOrigin);\n\n if (_this._timeoutMs > 0) {\n setTimeout(function () {\n if (!_this._requestMap[action.requestId]) {\n return;\n }\n console.error(\"postMessage request timed out. Sent object: \" + (0, _stringify2.default)(action), _this._requestMap);\n _this._requestMap[action.requestId].reject(new Error(\"Timed out\"));\n delete _this._requestMap[action.requestId];\n }, _this._timeoutMs);\n }\n });\n }\n }]);\n return ToWidgetPostMessageApi;\n}(); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = ToWidgetPostMessageApi;\nmodule.exports = exports['default'];\n//# sourceMappingURL=ToWidgetPostMessageApi.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar CreateRoomButton = function CreateRoomButton(props) {\n var ActionButton = _index2.default.getComponent('elements.ActionButton');\n return _react2.default.createElement(ActionButton, { action: 'view_create_room',\n mouseOverAction: props.callout ? \"callout_create_room\" : null,\n label: (0, _languageHandler._t)(\"Create new room\"),\n iconPath: 'img/icons-create-room.svg',\n size: props.size,\n tooltip: props.tooltip\n });\n};\n\nCreateRoomButton.propTypes = {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool\n};\n\nexports.default = CreateRoomButton;\nmodule.exports = exports['default'];\n//# sourceMappingURL=CreateRoomButton.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.default = DNDTagTile;\n\nvar _TagTile = require('./TagTile');\n\nvar _TagTile2 = _interopRequireDefault(_TagTile);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactBeautifulDnd = require('react-beautiful-dnd');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction DNDTagTile(props) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n _reactBeautifulDnd.Draggable,\n {\n key: props.tag,\n draggableId: props.tag,\n index: props.index,\n type: 'draggable-TagTile'\n },\n function (provided, snapshot) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n (0, _extends3.default)({\n ref: provided.innerRef\n }, provided.draggableProps, provided.dragHandleProps),\n _react2.default.createElement(_TagTile2.default, props)\n ),\n provided.placeholder\n );\n }\n )\n );\n} /* eslint new-cap: \"off\" */\n/*\nCopyright 2017 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=DNDTagTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'DeviceVerifyButtons',\n\n propTypes: {\n userId: _propTypes2.default.string.isRequired,\n device: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n device: this.props.device\n };\n },\n\n componentWillMount: function componentWillMount() {\n var cli = _MatrixClientPeg2.default.get();\n cli.on(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var cli = _MatrixClientPeg2.default.get();\n cli.removeListener(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n },\n\n onDeviceVerificationChanged: function onDeviceVerificationChanged(userId, deviceId, deviceInfo) {\n if (userId === this.props.userId && deviceId === this.props.device.deviceId) {\n this.setState({ device: deviceInfo });\n }\n },\n\n onVerifyClick: function onVerifyClick() {\n var DeviceVerifyDialog = _index2.default.getComponent('views.dialogs.DeviceVerifyDialog');\n _Modal2.default.createTrackedDialog('Device Verify Dialog', '', DeviceVerifyDialog, {\n userId: this.props.userId,\n device: this.state.device\n });\n },\n\n onUnverifyClick: function onUnverifyClick() {\n _MatrixClientPeg2.default.get().setDeviceVerified(this.props.userId, this.state.device.deviceId, false);\n },\n\n onBlacklistClick: function onBlacklistClick() {\n _MatrixClientPeg2.default.get().setDeviceBlocked(this.props.userId, this.state.device.deviceId, true);\n },\n\n onUnblacklistClick: function onUnblacklistClick() {\n _MatrixClientPeg2.default.get().setDeviceBlocked(this.props.userId, this.state.device.deviceId, false);\n },\n\n render: function render() {\n var blacklistButton = null;var verifyButton = null;\n\n if (this.state.device.isBlocked()) {\n blacklistButton = _react2.default.createElement(\n 'button',\n { className: 'mx_MemberDeviceInfo_textButton mx_MemberDeviceInfo_unblacklist',\n onClick: this.onUnblacklistClick },\n (0, _languageHandler._t)(\"Unblacklist\")\n );\n } else {\n blacklistButton = _react2.default.createElement(\n 'button',\n { className: 'mx_MemberDeviceInfo_textButton mx_MemberDeviceInfo_blacklist',\n onClick: this.onBlacklistClick },\n (0, _languageHandler._t)(\"Blacklist\")\n );\n }\n\n if (this.state.device.isVerified()) {\n verifyButton = _react2.default.createElement(\n 'button',\n { className: 'mx_MemberDeviceInfo_textButton mx_MemberDeviceInfo_unverify',\n onClick: this.onUnverifyClick },\n (0, _languageHandler._t)(\"Unverify\")\n );\n } else {\n verifyButton = _react2.default.createElement(\n 'button',\n { className: 'mx_MemberDeviceInfo_textButton mx_MemberDeviceInfo_verify',\n onClick: this.onVerifyClick },\n (0, _languageHandler._t)(\"Verify...\")\n );\n }\n\n // mx_MemberDeviceInfo because the vector's CSS on EncryptedEventDialog is awful\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo mx_DeviceVerifyButtons' },\n verifyButton,\n blacklistButton\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=DeviceVerifyButtons.js.map","\"use strict\";\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Basic container for buttons in modal dialogs.\n */\nmodule.exports = _react2.default.createClass({\n displayName: \"DialogButtons\",\n\n propTypes: {\n // The primary button which is styled differently and has default focus.\n primaryButton: _propTypes2.default.node.isRequired,\n\n // A node to insert into the cancel button instead of default \"Cancel\"\n cancelButton: _propTypes2.default.node,\n\n // onClick handler for the primary button.\n onPrimaryButtonClick: _propTypes2.default.func.isRequired,\n\n // should there be a cancel button? default: true\n hasCancel: _propTypes2.default.bool,\n\n // onClick handler for the cancel button.\n onCancel: _propTypes2.default.func,\n\n focus: _propTypes2.default.bool,\n\n // disables the primary and cancel buttons\n disabled: _propTypes2.default.bool,\n\n // disables only the primary button\n primaryDisabled: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n hasCancel: true,\n disabled: false\n };\n },\n\n _onCancelClick: function _onCancelClick() {\n this.props.onCancel();\n },\n\n render: function render() {\n var primaryButtonClassName = \"mx_Dialog_primary\";\n if (this.props.primaryButtonClass) {\n primaryButtonClassName += \" \" + this.props.primaryButtonClass;\n }\n var cancelButton = void 0;\n if (this.props.cancelButton || this.props.hasCancel) {\n cancelButton = _react2.default.createElement(\n \"button\",\n { onClick: this._onCancelClick, disabled: this.props.disabled },\n this.props.cancelButton || (0, _languageHandler._t)(\"Cancel\")\n );\n }\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_Dialog_buttons\" },\n cancelButton,\n this.props.children,\n _react2.default.createElement(\n \"button\",\n { className: primaryButtonClassName,\n onClick: this.props.onPrimaryButtonClick,\n autoFocus: this.props.focus,\n disabled: this.props.disabled || this.props.primaryDisabled\n },\n this.props.primaryButton\n )\n );\n }\n}); /*\n Copyright 2017 Aidan Gauland\n Copyright 2018 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=DialogButtons.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DirectorySearchBox = function (_React$Component) {\n (0, _inherits3.default)(DirectorySearchBox, _React$Component);\n\n function DirectorySearchBox() {\n (0, _classCallCheck3.default)(this, DirectorySearchBox);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DirectorySearchBox.__proto__ || (0, _getPrototypeOf2.default)(DirectorySearchBox)).call(this));\n\n _this._collectInput = _this._collectInput.bind(_this);\n _this._onClearClick = _this._onClearClick.bind(_this);\n _this._onChange = _this._onChange.bind(_this);\n _this._onKeyUp = _this._onKeyUp.bind(_this);\n _this._onJoinButtonClick = _this._onJoinButtonClick.bind(_this);\n\n _this.input = null;\n\n _this.state = {\n value: ''\n };\n return _this;\n }\n\n (0, _createClass3.default)(DirectorySearchBox, [{\n key: '_collectInput',\n value: function _collectInput(e) {\n this.input = e;\n }\n }, {\n key: '_onClearClick',\n value: function _onClearClick() {\n this.setState({ value: '' });\n\n if (this.input) {\n this.input.focus();\n\n if (this.props.onClear) {\n this.props.onClear();\n }\n }\n }\n }, {\n key: '_onChange',\n value: function _onChange(ev) {\n if (!this.input) return;\n this.setState({ value: ev.target.value });\n\n if (this.props.onChange) {\n this.props.onChange(ev.target.value);\n }\n }\n }, {\n key: '_onKeyUp',\n value: function _onKeyUp(ev) {\n if (ev.key == 'Enter' && this.props.showJoinButton) {\n if (this.props.onJoinClick) {\n this.props.onJoinClick(this.state.value);\n }\n }\n }\n }, {\n key: '_onJoinButtonClick',\n value: function _onJoinButtonClick() {\n if (this.props.onJoinClick) {\n this.props.onJoinClick(this.state.value);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var searchbox_classes = {\n mx_DirectorySearchBox: true\n };\n searchbox_classes[this.props.className] = true;\n\n var join_button = void 0;\n if (this.props.showJoinButton) {\n join_button = _react2.default.createElement(\n 'span',\n { className: 'mx_DirectorySearchBox_joinButton',\n onClick: this._onJoinButtonClick\n },\n 'Join'\n );\n }\n\n return _react2.default.createElement(\n 'span',\n { className: (0, _classnames2.default)(searchbox_classes) },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DirectorySearchBox_container' },\n _react2.default.createElement('input', { type: 'text', name: 'dirsearch', value: this.state.value,\n className: 'mx_DirectorySearchBox_input',\n ref: this._collectInput,\n onChange: this._onChange, onKeyUp: this._onKeyUp,\n placeholder: this.props.placeholder, autoFocus: true\n }),\n join_button,\n _react2.default.createElement(\n 'span',\n { className: 'mx_DirectorySearchBox_clear_wrapper' },\n _react2.default.createElement('span', { className: 'mx_DirectorySearchBox_clear', onClick: this._onClearClick })\n )\n )\n );\n }\n }]);\n return DirectorySearchBox;\n}(_react2.default.Component); /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = DirectorySearchBox;\n\n\nDirectorySearchBox.propTypes = {\n className: _propTypes2.default.string,\n onChange: _propTypes2.default.func,\n onClear: _propTypes2.default.func,\n onJoinClick: _propTypes2.default.func,\n placeholder: _propTypes2.default.string,\n showJoinButton: _propTypes2.default.bool\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=DirectorySearchBox.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _AccessibleButton = require('./AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MenuOption = function (_React$Component) {\n (0, _inherits3.default)(MenuOption, _React$Component);\n\n function MenuOption(props) {\n (0, _classCallCheck3.default)(this, MenuOption);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (MenuOption.__proto__ || (0, _getPrototypeOf2.default)(MenuOption)).call(this, props));\n\n _this._onMouseEnter = _this._onMouseEnter.bind(_this);\n _this._onClick = _this._onClick.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(MenuOption, [{\n key: '_onMouseEnter',\n value: function _onMouseEnter() {\n this.props.onMouseEnter(this.props.dropdownKey);\n }\n }, {\n key: '_onClick',\n value: function _onClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.onClick(this.props.dropdownKey);\n }\n }, {\n key: 'render',\n value: function render() {\n var optClasses = (0, _classnames2.default)({\n mx_Dropdown_option: true,\n mx_Dropdown_option_highlight: this.props.highlighted\n });\n\n return _react2.default.createElement(\n 'div',\n { className: optClasses,\n onClick: this._onClick, onKeyPress: this._onKeyPress,\n onMouseEnter: this._onMouseEnter\n },\n this.props.children\n );\n }\n }]);\n return MenuOption;\n}(_react2.default.Component); /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nMenuOption.defaultProps = {\n disabled: false\n};\n\n\nMenuOption.propTypes = {\n children: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_react2.default.PropTypes.node), _propTypes2.default.node]),\n highlighted: _propTypes2.default.bool,\n dropdownKey: _propTypes2.default.string,\n onClick: _propTypes2.default.func.isRequired,\n onMouseEnter: _propTypes2.default.func.isRequired\n};\n\n/*\n * Reusable dropdown select control, akin to react-select,\n * but somewhat simpler as react-select is 79KB of minified\n * javascript.\n *\n * TODO: Port NetworkDropdown to use this.\n */\n\nvar Dropdown = function (_React$Component2) {\n (0, _inherits3.default)(Dropdown, _React$Component2);\n\n function Dropdown(props) {\n (0, _classCallCheck3.default)(this, Dropdown);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (Dropdown.__proto__ || (0, _getPrototypeOf2.default)(Dropdown)).call(this, props));\n\n _this2.dropdownRootElement = null;\n _this2.ignoreEvent = null;\n\n _this2._onInputClick = _this2._onInputClick.bind(_this2);\n _this2._onRootClick = _this2._onRootClick.bind(_this2);\n _this2._onDocumentClick = _this2._onDocumentClick.bind(_this2);\n _this2._onMenuOptionClick = _this2._onMenuOptionClick.bind(_this2);\n _this2._onInputKeyPress = _this2._onInputKeyPress.bind(_this2);\n _this2._onInputKeyUp = _this2._onInputKeyUp.bind(_this2);\n _this2._onInputChange = _this2._onInputChange.bind(_this2);\n _this2._collectRoot = _this2._collectRoot.bind(_this2);\n _this2._collectInputTextBox = _this2._collectInputTextBox.bind(_this2);\n _this2._setHighlightedOption = _this2._setHighlightedOption.bind(_this2);\n\n _this2.inputTextBox = null;\n\n _this2._reindexChildren(_this2.props.children);\n\n var firstChild = _react2.default.Children.toArray(props.children)[0];\n\n _this2.state = {\n // True if the menu is dropped-down\n expanded: false,\n // The key of the highlighted option\n // (the option that would become selected if you pressed enter)\n highlightedOption: firstChild ? firstChild.key : null,\n // the current search query\n searchQuery: ''\n };\n return _this2;\n }\n\n (0, _createClass3.default)(Dropdown, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n // Listen for all clicks on the document so we can close the\n // menu when the user clicks somewhere else\n document.addEventListener('click', this._onDocumentClick, false);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n document.removeEventListener('click', this._onDocumentClick, false);\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (!nextProps.children || nextProps.children.length === 0) {\n return;\n }\n this._reindexChildren(nextProps.children);\n var firstChild = nextProps.children[0];\n this.setState({\n highlightedOption: firstChild ? firstChild.key : null\n });\n }\n }, {\n key: '_reindexChildren',\n value: function _reindexChildren(children) {\n var _this3 = this;\n\n this.childrenByKey = {};\n _react2.default.Children.forEach(children, function (child) {\n _this3.childrenByKey[child.key] = child;\n });\n }\n }, {\n key: '_onDocumentClick',\n value: function _onDocumentClick(ev) {\n // Close the dropdown if the user clicks anywhere that isn't\n // within our root element\n if (ev !== this.ignoreEvent) {\n this.setState({\n expanded: false\n });\n }\n }\n }, {\n key: '_onRootClick',\n value: function _onRootClick(ev) {\n // This captures any clicks that happen within our elements,\n // such that we can then ignore them when they're seen by the\n // click listener on the document handler, ie. not close the\n // dropdown immediately after opening it.\n // NB. We can't just stopPropagation() because then the event\n // doesn't reach the React onClick().\n this.ignoreEvent = ev;\n }\n }, {\n key: '_onInputClick',\n value: function _onInputClick(ev) {\n if (this.props.disabled) return;\n\n if (!this.state.expanded) {\n this.setState({\n expanded: true\n });\n ev.preventDefault();\n }\n }\n }, {\n key: '_onMenuOptionClick',\n value: function _onMenuOptionClick(dropdownKey) {\n this.setState({\n expanded: false\n });\n this.props.onOptionChange(dropdownKey);\n }\n }, {\n key: '_onInputKeyPress',\n value: function _onInputKeyPress(e) {\n // This needs to be on the keypress event because otherwise\n // it can't cancel the form submission\n if (e.key == 'Enter') {\n this.setState({\n expanded: false\n });\n this.props.onOptionChange(this.state.highlightedOption);\n e.preventDefault();\n }\n }\n }, {\n key: '_onInputKeyUp',\n value: function _onInputKeyUp(e) {\n // These keys don't generate keypress events and so needs to\n // be on keyup\n if (e.key == 'Escape') {\n this.setState({\n expanded: false\n });\n } else if (e.key == 'ArrowDown') {\n this.setState({\n highlightedOption: this._nextOption(this.state.highlightedOption)\n });\n } else if (e.key == 'ArrowUp') {\n this.setState({\n highlightedOption: this._prevOption(this.state.highlightedOption)\n });\n }\n }\n }, {\n key: '_onInputChange',\n value: function _onInputChange(e) {\n this.setState({\n searchQuery: e.target.value\n });\n if (this.props.onSearchChange) {\n this.props.onSearchChange(e.target.value);\n }\n }\n }, {\n key: '_collectRoot',\n value: function _collectRoot(e) {\n if (this.dropdownRootElement) {\n this.dropdownRootElement.removeEventListener('click', this._onRootClick, false);\n }\n if (e) {\n e.addEventListener('click', this._onRootClick, false);\n }\n this.dropdownRootElement = e;\n }\n }, {\n key: '_collectInputTextBox',\n value: function _collectInputTextBox(e) {\n this.inputTextBox = e;\n if (e) e.focus();\n }\n }, {\n key: '_setHighlightedOption',\n value: function _setHighlightedOption(optionKey) {\n this.setState({\n highlightedOption: optionKey\n });\n }\n }, {\n key: '_nextOption',\n value: function _nextOption(optionKey) {\n var keys = (0, _keys2.default)(this.childrenByKey);\n var index = keys.indexOf(optionKey);\n return keys[(index + 1) % keys.length];\n }\n }, {\n key: '_prevOption',\n value: function _prevOption(optionKey) {\n var keys = (0, _keys2.default)(this.childrenByKey);\n var index = keys.indexOf(optionKey);\n return keys[(index - 1) % keys.length];\n }\n }, {\n key: '_getMenuOptions',\n value: function _getMenuOptions() {\n var _this4 = this;\n\n var options = _react2.default.Children.map(this.props.children, function (child) {\n return _react2.default.createElement(\n MenuOption,\n { key: child.key, dropdownKey: child.key,\n highlighted: _this4.state.highlightedOption == child.key,\n onMouseEnter: _this4._setHighlightedOption,\n onClick: _this4._onMenuOptionClick\n },\n child\n );\n });\n if (options.length === 0) {\n return [_react2.default.createElement(\n 'div',\n { key: '0', className: 'mx_Dropdown_option' },\n (0, _languageHandler._t)(\"No results\")\n )];\n }\n return options;\n }\n }, {\n key: 'render',\n value: function render() {\n var currentValue = void 0;\n\n var menuStyle = {};\n if (this.props.menuWidth) menuStyle.width = this.props.menuWidth;\n\n var menu = void 0;\n if (this.state.expanded) {\n if (this.props.searchEnabled) {\n currentValue = _react2.default.createElement('input', { type: 'text', className: 'mx_Dropdown_option',\n ref: this._collectInputTextBox, onKeyPress: this._onInputKeyPress,\n onKeyUp: this._onInputKeyUp,\n onChange: this._onInputChange,\n value: this.state.searchQuery\n });\n }\n menu = _react2.default.createElement(\n 'div',\n { className: 'mx_Dropdown_menu', style: menuStyle },\n this._getMenuOptions()\n );\n }\n\n if (!currentValue) {\n var selectedChild = this.props.getShortOption ? this.props.getShortOption(this.props.value) : this.childrenByKey[this.props.value];\n currentValue = _react2.default.createElement(\n 'div',\n { className: 'mx_Dropdown_option' },\n selectedChild\n );\n }\n\n var dropdownClasses = {\n mx_Dropdown: true,\n mx_Dropdown_disabled: this.props.disabled\n };\n if (this.props.className) {\n dropdownClasses[this.props.className] = true;\n }\n\n // Note the menu sits inside the AccessibleButton div so it's anchored\n // to the input, but overflows below it. The root contains both.\n return _react2.default.createElement(\n 'div',\n { className: (0, _classnames2.default)(dropdownClasses), ref: this._collectRoot },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_Dropdown_input', onClick: this._onInputClick },\n currentValue,\n _react2.default.createElement('span', { className: 'mx_Dropdown_arrow' }),\n menu\n )\n );\n }\n }]);\n return Dropdown;\n}(_react2.default.Component);\n\nexports.default = Dropdown;\n\n\nDropdown.propTypes = {\n // The width that the dropdown should be. If specified,\n // the dropped-down part of the menu will be set to this\n // width.\n menuWidth: _propTypes2.default.number,\n // Called when the selected option changes\n onOptionChange: _propTypes2.default.func.isRequired,\n // Called when the value of the search field changes\n onSearchChange: _propTypes2.default.func,\n searchEnabled: _propTypes2.default.bool,\n // Function that, given the key of an option, returns\n // a node representing that option to be displayed in the\n // box itself as the currently-selected option (ie. as\n // opposed to in the actual dropped-down part). If\n // unspecified, the appropriate child element is used as\n // in the dropped-down menu.\n getShortOption: _propTypes2.default.func,\n value: _propTypes2.default.string,\n // negative for consistency with HTML\n disabled: _propTypes2.default.bool\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=Dropdown.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar EditableItem = _react2.default.createClass({\n displayName: 'EditableItem',\n\n propTypes: {\n initialValue: _propTypes2.default.string,\n index: _propTypes2.default.number,\n placeholder: _propTypes2.default.string,\n\n onChange: _propTypes2.default.func,\n onRemove: _propTypes2.default.func,\n onAdd: _propTypes2.default.func,\n\n addOnChange: _propTypes2.default.bool\n },\n\n onChange: function onChange(value) {\n this.setState({ value: value });\n if (this.props.onChange) this.props.onChange(value, this.props.index);\n if (this.props.addOnChange && this.props.onAdd) this.props.onAdd(value);\n },\n\n onRemove: function onRemove() {\n if (this.props.onRemove) this.props.onRemove(this.props.index);\n },\n\n onAdd: function onAdd() {\n if (this.props.onAdd) this.props.onAdd(this.state.value);\n },\n\n render: function render() {\n var EditableText = _index2.default.getComponent('elements.EditableText');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_EditableItem' },\n _react2.default.createElement(EditableText, {\n className: 'mx_EditableItem_editable',\n placeholderClassName: 'mx_EditableItem_editablePlaceholder',\n placeholder: this.props.placeholder,\n blurToCancel: false,\n editable: true,\n initialValue: this.props.initialValue,\n onValueChanged: this.onChange }),\n this.props.onAdd ? _react2.default.createElement(\n 'div',\n { className: 'mx_EditableItem_addButton' },\n _react2.default.createElement('img', { className: 'mx_filterFlipColor',\n src: 'img/plus.svg', width: '14', height: '14',\n alt: (0, _languageHandler._t)(\"Add\"), onClick: this.onAdd })\n ) : _react2.default.createElement(\n 'div',\n { className: 'mx_EditableItem_removeButton' },\n _react2.default.createElement('img', { className: 'mx_filterFlipColor',\n src: 'img/cancel-small.svg', width: '14', height: '14',\n alt: (0, _languageHandler._t)(\"Delete\"), onClick: this.onRemove })\n )\n );\n }\n});\n\nmodule.exports = _react2.default.createClass({\n displayName: 'EditableItemList',\n\n propTypes: {\n items: _propTypes2.default.arrayOf(_propTypes2.default.string).isRequired,\n onNewItemChanged: _propTypes2.default.func,\n onItemAdded: _propTypes2.default.func,\n onItemEdited: _propTypes2.default.func,\n onItemRemoved: _propTypes2.default.func,\n\n canEdit: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onItemAdded: function onItemAdded() {},\n onItemEdited: function onItemEdited() {},\n onItemRemoved: function onItemRemoved() {},\n onNewItemChanged: function onNewItemChanged() {}\n };\n },\n\n onItemAdded: function onItemAdded(value) {\n this.props.onItemAdded(value);\n },\n\n onItemEdited: function onItemEdited(value, index) {\n if (value.length === 0) {\n this.onItemRemoved(index);\n } else {\n this.props.onItemEdited(value, index);\n }\n },\n\n onItemRemoved: function onItemRemoved(index) {\n this.props.onItemRemoved(index);\n },\n\n onNewItemChanged: function onNewItemChanged(value) {\n this.props.onNewItemChanged(value);\n },\n\n render: function render() {\n var _this = this;\n\n var editableItems = this.props.items.map(function (item, index) {\n return _react2.default.createElement(EditableItem, {\n key: index,\n index: index,\n initialValue: item,\n onChange: _this.onItemEdited,\n onRemove: _this.onItemRemoved,\n placeholder: _this.props.placeholder\n });\n });\n\n var label = this.props.items.length > 0 ? this.props.itemsLabel : this.props.noItemsLabel;\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_EditableItemList' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_EditableItemList_label' },\n label\n ),\n editableItems,\n this.props.canEdit ?\n // This is slightly evil; we want a new instance of\n // EditableItem when the list grows. To make sure it's\n // reset to its initial state.\n _react2.default.createElement(EditableItem, {\n key: editableItems.length,\n initialValue: this.props.newItem,\n onAdd: this.onItemAdded,\n onChange: this.onNewItemChanged,\n addOnChange: true,\n placeholder: this.props.placeholder\n }) : _react2.default.createElement('div', null)\n );\n }\n});\n//# sourceMappingURL=EditableItemList.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'EditableText',\n\n propTypes: {\n onValueChanged: _propTypes2.default.func,\n initialValue: _propTypes2.default.string,\n label: _propTypes2.default.string,\n placeholder: _propTypes2.default.string,\n className: _propTypes2.default.string,\n labelClassName: _propTypes2.default.string,\n placeholderClassName: _propTypes2.default.string,\n // Overrides blurToSubmit if true\n blurToCancel: _propTypes2.default.bool,\n // Will cause onValueChanged(value, true) to fire on blur\n blurToSubmit: _propTypes2.default.bool,\n editable: _propTypes2.default.bool\n },\n\n Phases: {\n Display: \"display\",\n Edit: \"edit\"\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onValueChanged: function onValueChanged() {},\n initialValue: '',\n label: '',\n placeholder: '',\n editable: true,\n className: \"mx_EditableText\",\n placeholderClassName: \"mx_EditableText_placeholder\",\n blurToSubmit: false\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n phase: this.Phases.Display\n };\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n if (nextProps.initialValue !== this.props.initialValue) {\n this.value = nextProps.initialValue;\n if (this.refs.editable_div) {\n this.showPlaceholder(!this.value);\n }\n }\n },\n\n componentWillMount: function componentWillMount() {\n // we track value as an JS object field rather than in React state\n // as React doesn't play nice with contentEditable.\n this.value = '';\n this.placeholder = false;\n },\n\n componentDidMount: function componentDidMount() {\n this.value = this.props.initialValue;\n if (this.refs.editable_div) {\n this.showPlaceholder(!this.value);\n }\n },\n\n showPlaceholder: function showPlaceholder(show) {\n if (show) {\n this.refs.editable_div.textContent = this.props.placeholder;\n this.refs.editable_div.setAttribute(\"class\", this.props.className + \" \" + this.props.placeholderClassName);\n this.placeholder = true;\n this.value = '';\n } else {\n this.refs.editable_div.textContent = this.value;\n this.refs.editable_div.setAttribute(\"class\", this.props.className);\n this.placeholder = false;\n }\n },\n\n getValue: function getValue() {\n return this.value;\n },\n\n setValue: function setValue(value) {\n this.value = value;\n this.showPlaceholder(!this.value);\n },\n\n edit: function edit() {\n this.setState({\n phase: this.Phases.Edit\n });\n },\n\n cancelEdit: function cancelEdit() {\n this.setState({\n phase: this.Phases.Display\n });\n this.value = this.props.initialValue;\n this.showPlaceholder(!this.value);\n this.onValueChanged(false);\n this.refs.editable_div.blur();\n },\n\n onValueChanged: function onValueChanged(shouldSubmit) {\n this.props.onValueChanged(this.value, shouldSubmit);\n },\n\n onKeyDown: function onKeyDown(ev) {\n // console.log(\"keyDown: textContent=\" + ev.target.textContent + \", value=\" + this.value + \", placeholder=\" + this.placeholder);\n\n if (this.placeholder) {\n this.showPlaceholder(false);\n }\n\n if (ev.key === \"Enter\") {\n ev.stopPropagation();\n ev.preventDefault();\n }\n\n // console.log(\"keyDown: textContent=\" + ev.target.textContent + \", value=\" + this.value + \", placeholder=\" + this.placeholder);\n },\n\n onKeyUp: function onKeyUp(ev) {\n // console.log(\"keyUp: textContent=\" + ev.target.textContent + \", value=\" + this.value + \", placeholder=\" + this.placeholder);\n\n if (!ev.target.textContent) {\n this.showPlaceholder(true);\n } else if (!this.placeholder) {\n this.value = ev.target.textContent;\n }\n\n if (ev.key === \"Enter\") {\n this.onFinish(ev);\n } else if (ev.key === \"Escape\") {\n this.cancelEdit();\n }\n\n // console.log(\"keyUp: textContent=\" + ev.target.textContent + \", value=\" + this.value + \", placeholder=\" + this.placeholder);\n },\n\n onClickDiv: function onClickDiv(ev) {\n if (!this.props.editable) return;\n\n this.setState({\n phase: this.Phases.Edit\n });\n },\n\n onFocus: function onFocus(ev) {\n //ev.target.setSelectionRange(0, ev.target.textContent.length);\n\n var node = ev.target.childNodes[0];\n if (node) {\n var range = document.createRange();\n range.setStart(node, 0);\n range.setEnd(node, node.length);\n\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n }\n },\n\n onFinish: function onFinish(ev, shouldSubmit) {\n var _this = this;\n\n var self = this;\n var submit = ev.key === \"Enter\" || shouldSubmit;\n this.setState({\n phase: this.Phases.Display\n }, function () {\n if (_this.value !== _this.props.initialValue) {\n self.onValueChanged(submit);\n }\n });\n },\n\n onBlur: function onBlur(ev) {\n var sel = window.getSelection();\n sel.removeAllRanges();\n\n if (this.props.blurToCancel) {\n this.cancelEdit();\n } else {\n this.onFinish(ev, this.props.blurToSubmit);\n }\n\n this.showPlaceholder(!this.value);\n },\n\n render: function render() {\n var _props = this.props,\n className = _props.className,\n editable = _props.editable,\n initialValue = _props.initialValue,\n label = _props.label,\n labelClassName = _props.labelClassName;\n\n var editableEl = void 0;\n\n if (!editable || this.state.phase === this.Phases.Display && (label || labelClassName) && !this.value) {\n // show the label\n editableEl = _react2.default.createElement(\n 'div',\n { className: className + \" \" + labelClassName, onClick: this.onClickDiv },\n label || initialValue\n );\n } else {\n // show the content editable div, but manually manage its contents as react and contentEditable don't play nice together\n editableEl = _react2.default.createElement('div', { ref: 'editable_div',\n contentEditable: true,\n className: className,\n onKeyDown: this.onKeyDown,\n onKeyUp: this.onKeyUp,\n onFocus: this.onFocus,\n onBlur: this.onBlur });\n }\n\n return editableEl;\n }\n});\n//# sourceMappingURL=EditableText.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A component which wraps an EditableText, with a spinner while updates take\n * place.\n *\n * Parent components should supply an 'onSubmit' callback which returns a\n * promise; a spinner is shown until the promise resolves.\n *\n * The parent can also supply a 'getIntialValue' callback, which works in a\n * similarly asynchronous way. If this is not provided, the initial value is\n * taken from the 'initialValue' property.\n */\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar EditableTextContainer = function (_React$Component) {\n (0, _inherits3.default)(EditableTextContainer, _React$Component);\n\n function EditableTextContainer(props, context) {\n (0, _classCallCheck3.default)(this, EditableTextContainer);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (EditableTextContainer.__proto__ || (0, _getPrototypeOf2.default)(EditableTextContainer)).call(this, props, context));\n\n _this._unmounted = false;\n _this.state = {\n busy: false,\n errorString: null,\n value: props.initialValue\n };\n _this._onValueChanged = _this._onValueChanged.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(EditableTextContainer, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n if (this.props.getInitialValue === undefined) {\n // use whatever was given in the initialValue property.\n return;\n }\n\n this.setState({ busy: true });\n\n this.props.getInitialValue().done(function (result) {\n if (_this2._unmounted) {\n return;\n }\n _this2.setState({\n busy: false,\n value: result\n });\n }, function (error) {\n if (_this2._unmounted) {\n return;\n }\n _this2.setState({\n errorString: error.toString(),\n busy: false\n });\n });\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: '_onValueChanged',\n value: function _onValueChanged(value, shouldSubmit) {\n var _this3 = this;\n\n if (!shouldSubmit) {\n return;\n }\n\n this.setState({\n busy: true,\n errorString: null\n });\n\n this.props.onSubmit(value).done(function () {\n if (_this3._unmounted) {\n return;\n }\n _this3.setState({\n busy: false,\n value: value\n });\n }, function (error) {\n if (_this3._unmounted) {\n return;\n }\n _this3.setState({\n errorString: error.toString(),\n busy: false\n });\n });\n }\n }, {\n key: 'render',\n value: function render() {\n if (this.state.busy) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n } else if (this.state.errorString) {\n return _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.errorString\n );\n } else {\n var EditableText = _index2.default.getComponent('elements.EditableText');\n return _react2.default.createElement(EditableText, { initialValue: this.state.value,\n placeholder: this.props.placeholder,\n onValueChanged: this._onValueChanged,\n blurToSubmit: this.props.blurToSubmit\n });\n }\n }\n }]);\n return EditableTextContainer;\n}(_react2.default.Component);\n\nexports.default = EditableTextContainer;\n\n\nEditableTextContainer.propTypes = {\n /* callback to retrieve the initial value. */\n getInitialValue: _propTypes2.default.func,\n\n /* initial value; used if getInitialValue is not given */\n initialValue: _propTypes2.default.string,\n\n /* placeholder text to use when the value is empty (and not being\n * edited) */\n placeholder: _propTypes2.default.string,\n\n /* callback to update the value. Called with a single argument: the new\n * value. */\n onSubmit: _propTypes2.default.func,\n\n /* should the input submit when focus is lost? */\n blurToSubmit: _propTypes2.default.bool\n};\n\nEditableTextContainer.defaultProps = {\n initialValue: \"\",\n placeholder: \"\",\n blurToSubmit: false,\n onSubmit: function onSubmit(v) {\n return _bluebird2.default.resolve();\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=EditableTextContainer.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nexports.default = EmojiText;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _HtmlUtils = require('../../../HtmlUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction EmojiText(props) {\n var element = props.element,\n children = props.children,\n restProps = (0, _objectWithoutProperties3.default)(props, ['element', 'children']);\n\n // fast path: simple regex to detect strings that don't contain\n // emoji and just return them\n\n if ((0, _HtmlUtils.containsEmoji)(children)) {\n restProps.dangerouslySetInnerHTML = (0, _HtmlUtils.emojifyText)(children);\n return _react2.default.createElement(element, restProps);\n } else {\n return _react2.default.createElement(element, restProps, children);\n }\n} /*\n Copyright 2016 Aviral Dasgupta\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nEmojiText.propTypes = {\n element: _propTypes2.default.string,\n children: _propTypes2.default.string.isRequired\n};\n\nEmojiText.defaultProps = {\n element: 'span'\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=EmojiText.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactGeminiScrollbar = require('react-gemini-scrollbar');\n\nvar _reactGeminiScrollbar2 = _interopRequireDefault(_reactGeminiScrollbar);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction GeminiScrollbarWrapper(props) {\n var wrappedRef = props.wrappedRef,\n wrappedProps = (0, _objectWithoutProperties3.default)(props, ['wrappedRef']);\n\n // Enable forceGemini so that gemini is always enabled. This is\n // to avoid future issues where a feature is implemented without\n // doing QA on every OS/browser combination.\n //\n // By default GeminiScrollbar allows native scrollbars to be used\n // on macOS. Use forceGemini to enable Gemini's non-native\n // scrollbars on all OSs.\n\n return _react2.default.createElement(\n _reactGeminiScrollbar2.default,\n (0, _extends3.default)({ ref: wrappedRef, forceGemini: true }, wrappedProps),\n props.children\n );\n}\nexports.default = GeminiScrollbarWrapper;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GeminiScrollbarWrapper.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar GroupsButton = function GroupsButton(props) {\n var ActionButton = _index2.default.getComponent('elements.ActionButton');\n return _react2.default.createElement(ActionButton, { action: 'view_my_groups',\n label: (0, _languageHandler._t)(\"Communities\"),\n iconPath: 'img/icons-groups.svg',\n size: props.size,\n tooltip: props.tooltip\n });\n};\n\nGroupsButton.propTypes = {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool\n};\n\nexports.default = GroupsButton;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupsButton.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar HomeButton = function HomeButton(props) {\n var ActionButton = _index2.default.getComponent('elements.ActionButton');\n return _react2.default.createElement(ActionButton, { action: 'view_home_page',\n label: (0, _languageHandler._t)(\"Home\"),\n iconPath: 'img/icons-home.svg',\n size: props.size,\n tooltip: props.tooltip\n });\n};\n\nHomeButton.propTypes = {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool\n};\n\nexports.default = HomeButton;\nmodule.exports = exports['default'];\n//# sourceMappingURL=HomeButton.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _DateUtils = require('../../../DateUtils');\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar React = require('react');\n\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar filesize = require('filesize');\nvar AccessibleButton = require('../../../components/views/elements/AccessibleButton');\nvar Modal = require('../../../Modal');\nvar sdk = require('../../../index');\n\n\nmodule.exports = React.createClass({\n displayName: 'ImageView',\n\n propTypes: {\n src: React.PropTypes.string.isRequired, // the source of the image being displayed\n name: React.PropTypes.string, // the main title ('name') for the image\n link: React.PropTypes.string, // the link (if any) applied to the name of the image\n width: React.PropTypes.number, // width of the image src in pixels\n height: React.PropTypes.number, // height of the image src in pixels\n fileSize: React.PropTypes.number, // size of the image src in bytes\n onFinished: React.PropTypes.func.isRequired, // callback when the lightbox is dismissed\n\n // the event (if any) that the Image is displaying. Used for event-specific stuff like\n // redactions, senders, timestamps etc. Other descriptors are taken from the explicit\n // properties above, which let us use lightboxes to display images which aren't associated\n // with events.\n mxEvent: React.PropTypes.object\n },\n\n // XXX: keyboard shortcuts for managing dialogs should be done by the modal\n // dialog base class somehow, surely...\n componentDidMount: function componentDidMount() {\n document.addEventListener(\"keydown\", this.onKeyDown);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n document.removeEventListener(\"keydown\", this.onKeyDown);\n },\n\n onKeyDown: function onKeyDown(ev) {\n if (ev.keyCode == 27) {\n // escape\n ev.stopPropagation();\n ev.preventDefault();\n this.props.onFinished();\n }\n },\n\n onRedactClick: function onRedactClick() {\n var _this = this;\n\n var ConfirmRedactDialog = sdk.getComponent(\"dialogs.ConfirmRedactDialog\");\n Modal.createTrackedDialog('Confirm Redact Dialog', 'Image View', ConfirmRedactDialog, {\n onFinished: function onFinished(proceed) {\n if (!proceed) return;\n var self = _this;\n MatrixClientPeg.get().redactEvent(_this.props.mxEvent.getRoomId(), _this.props.mxEvent.getId()).catch(function (e) {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n // display error message stating you couldn't delete this.\n var code = e.errcode || e.statusCode;\n Modal.createTrackedDialog('You cannot delete this image.', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: (0, _languageHandler._t)('You cannot delete this image. (%(code)s)', { code: code })\n });\n }).done();\n }\n });\n },\n\n getName: function getName() {\n var name = this.props.name;\n if (name && this.props.link) {\n name = React.createElement(\n 'a',\n { href: this.props.link, target: '_blank', rel: 'noopener' },\n name\n );\n }\n return name;\n },\n\n render: function render() {\n /*\n // In theory max-width: 80%, max-height: 80% on the CSS should work\n // but in practice, it doesn't, so do it manually:\n \n var width = this.props.width || 500;\n var height = this.props.height || 500;\n \n var maxWidth = document.documentElement.clientWidth * 0.8;\n var maxHeight = document.documentElement.clientHeight * 0.8;\n \n var widthFrac = width / maxWidth;\n var heightFrac = height / maxHeight;\n \n var displayWidth;\n var displayHeight;\n if (widthFrac > heightFrac) {\n displayWidth = Math.min(width, maxWidth);\n displayHeight = (displayWidth / width) * height;\n } else {\n displayHeight = Math.min(height, maxHeight);\n displayWidth = (displayHeight / height) * width;\n }\n \n var style = {\n width: displayWidth,\n height: displayHeight\n };\n */\n var style = void 0;var res = void 0;\n\n if (this.props.width && this.props.height) {\n style = {\n width: this.props.width,\n height: this.props.height\n };\n res = style.width + \"x\" + style.height + \"px\";\n }\n\n var size = void 0;\n if (this.props.fileSize) {\n size = filesize(this.props.fileSize);\n }\n\n var size_res = void 0;\n if (size && res) {\n size_res = size + \", \" + res;\n } else {\n size_res = size || res;\n }\n\n var showEventMeta = !!this.props.mxEvent;\n\n var eventMeta = void 0;\n if (showEventMeta) {\n // Figure out the sender, defaulting to mxid\n var sender = this.props.mxEvent.getSender();\n var room = MatrixClientPeg.get().getRoom(this.props.mxEvent.getRoomId());\n if (room) {\n var member = room.getMember(sender);\n if (member) sender = member.name;\n }\n\n eventMeta = React.createElement(\n 'div',\n { className: 'mx_ImageView_metadata' },\n (0, _languageHandler._t)('Uploaded on %(date)s by %(user)s', { date: (0, _DateUtils.formatDate)(new Date(this.props.mxEvent.getTs())), user: sender })\n );\n }\n\n var eventRedact = void 0;\n if (showEventMeta) {\n eventRedact = React.createElement(\n 'div',\n { className: 'mx_ImageView_button', onClick: this.onRedactClick },\n (0, _languageHandler._t)('Remove')\n );\n }\n\n return React.createElement(\n 'div',\n { className: 'mx_ImageView' },\n React.createElement('div', { className: 'mx_ImageView_lhs' }),\n React.createElement(\n 'div',\n { className: 'mx_ImageView_content' },\n React.createElement('img', { src: this.props.src, style: style }),\n React.createElement(\n 'div',\n { className: 'mx_ImageView_labelWrapper' },\n React.createElement(\n 'div',\n { className: 'mx_ImageView_label' },\n React.createElement(\n AccessibleButton,\n { className: 'mx_ImageView_cancel', onClick: this.props.onFinished },\n React.createElement('img', { src: 'img/cancel-white.svg', width: '18', height: '18', alt: (0, _languageHandler._t)('Close') })\n ),\n React.createElement('div', { className: 'mx_ImageView_shim' }),\n React.createElement(\n 'div',\n { className: 'mx_ImageView_name' },\n this.getName()\n ),\n eventMeta,\n React.createElement(\n 'a',\n { className: 'mx_ImageView_link', href: this.props.src, download: this.props.name, target: '_blank', rel: 'noopener' },\n React.createElement(\n 'div',\n { className: 'mx_ImageView_download' },\n (0, _languageHandler._t)('Download this file'),\n React.createElement('br', null),\n React.createElement(\n 'span',\n { className: 'mx_ImageView_size' },\n size_res\n )\n )\n ),\n eventRedact,\n React.createElement('div', { className: 'mx_ImageView_shim' })\n )\n )\n ),\n React.createElement('div', { className: 'mx_ImageView_rhs' })\n );\n }\n});\n//# sourceMappingURL=ImageView.js.map","'use strict';\n\n/*\nCopyright 2017 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require('react');\n\nmodule.exports = React.createClass({\n displayName: 'InlineSpinner',\n\n render: function render() {\n var w = this.props.w || 16;\n var h = this.props.h || 16;\n var imgClass = this.props.imgClassName || \"\";\n\n return React.createElement(\n 'div',\n { className: 'mx_InlineSpinner' },\n React.createElement('img', { src: 'img/spinner.gif', width: w, height: h, className: imgClass })\n );\n }\n});\n//# sourceMappingURL=InlineSpinner.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar languageHandler = _interopRequireWildcard(_languageHandler);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction languageMatchesSearchQuery(query, language) {\n if (language.label.toUpperCase().indexOf(query.toUpperCase()) == 0) return true;\n if (language.value.toUpperCase() == query.toUpperCase()) return true;\n return false;\n} /*\n Copyright 2017 Marcel Radzio (MTRNord)\n Copyright 2017 Vector Creations Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar LanguageDropdown = function (_React$Component) {\n (0, _inherits3.default)(LanguageDropdown, _React$Component);\n\n function LanguageDropdown(props) {\n (0, _classCallCheck3.default)(this, LanguageDropdown);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (LanguageDropdown.__proto__ || (0, _getPrototypeOf2.default)(LanguageDropdown)).call(this, props));\n\n _this._onSearchChange = _this._onSearchChange.bind(_this);\n\n _this.state = {\n searchQuery: '',\n langs: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(LanguageDropdown, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n languageHandler.getAllLanguagesFromJson().then(function (langs) {\n langs.sort(function (a, b) {\n if (a.label < b.label) return -1;\n if (a.label > b.label) return 1;\n return 0;\n });\n _this2.setState({ langs: langs });\n }).catch(function () {\n _this2.setState({ langs: ['en'] });\n }).done();\n\n if (!this.props.value) {\n // If no value is given, we start with the first\n // country selected, but our parent component\n // doesn't know this, therefore we do this.\n var language = _SettingsStore2.default.getValue(\"language\", null, /*excludeDefault:*/true);\n if (language) {\n this.props.onOptionChange(language);\n } else {\n var _language = languageHandler.normalizeLanguageKey(languageHandler.getLanguageFromBrowser());\n this.props.onOptionChange(_language);\n }\n }\n }\n }, {\n key: '_onSearchChange',\n value: function _onSearchChange(search) {\n this.setState({\n searchQuery: search\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n if (this.state.langs === null) {\n var Spinner = _index2.default.getComponent('elements.Spinner');\n return _react2.default.createElement(Spinner, null);\n }\n\n var Dropdown = _index2.default.getComponent('elements.Dropdown');\n\n var displayedLanguages = void 0;\n if (this.state.searchQuery) {\n displayedLanguages = this.state.langs.filter(function (lang) {\n return languageMatchesSearchQuery(_this3.state.searchQuery, lang);\n });\n } else {\n displayedLanguages = this.state.langs;\n }\n\n var options = displayedLanguages.map(function (language) {\n return _react2.default.createElement(\n 'div',\n { key: language.value },\n language.label\n );\n });\n\n // default value here too, otherwise we need to handle null / undefined\n // values between mounting and the initial value propgating\n var language = _SettingsStore2.default.getValue(\"language\", null, /*excludeDefault:*/true);\n var value = null;\n if (language) {\n value = this.props.value || language;\n } else {\n language = navigator.language || navigator.userLanguage;\n value = this.props.value || language;\n }\n\n return _react2.default.createElement(\n Dropdown,\n { className: this.props.className,\n onOptionChange: this.props.onOptionChange, onSearchChange: this._onSearchChange,\n searchEnabled: true, value: value\n },\n options\n );\n }\n }]);\n return LanguageDropdown;\n}(_react2.default.Component);\n\nexports.default = LanguageDropdown;\n\n\nLanguageDropdown.propTypes = {\n className: _propTypes2.default.string,\n onOptionChange: _propTypes2.default.func.isRequired,\n value: _propTypes2.default.string\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=LanguageDropdown.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MemberAvatar = require('../avatars/MemberAvatar.js'); /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MemberEventListSummary',\n\n propTypes: {\n // An array of member events to summarise\n events: _propTypes2.default.array.isRequired,\n // An array of EventTiles to render when expanded\n children: _propTypes2.default.array.isRequired,\n // The maximum number of names to show in either each summary e.g. 2 would result \"A, B and 234 others left\"\n summaryLength: _propTypes2.default.number,\n // The maximum number of avatars to display in the summary\n avatarsMaxLength: _propTypes2.default.number,\n // The minimum number of events needed to trigger summarisation\n threshold: _propTypes2.default.number,\n // Called when the MELS expansion is toggled\n onToggle: _propTypes2.default.func,\n // Whether or not to begin with state.expanded=true\n startExpanded: _propTypes2.default.bool\n },\n\n getInitialState: function getInitialState() {\n return {\n expanded: Boolean(this.props.startExpanded)\n };\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n summaryLength: 1,\n threshold: 3,\n avatarsMaxLength: 5\n };\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n // Update if\n // - The number of summarised events has changed\n // - or if the summary is currently expanded\n // - or if the summary is about to toggle to become collapsed\n // - or if there are fewEvents, meaning the child eventTiles are shown as-is\n return nextProps.events.length !== this.props.events.length || this.state.expanded || nextState.expanded || nextProps.events.length < this.props.threshold;\n },\n\n _toggleSummary: function _toggleSummary() {\n this.setState({\n expanded: !this.state.expanded\n });\n this.props.onToggle();\n },\n\n /**\n * Render the JSX for users aggregated by their transition sequences (`eventAggregates`) where\n * the sequences are ordered by `orderedTransitionSequences`.\n * @param {object[]} eventAggregates a map of transition sequence to array of user display names\n * or user IDs.\n * @param {string[]} orderedTransitionSequences an array which is some ordering of\n * `Object.keys(eventAggregates)`.\n * @returns {ReactElement} a single <span> containing the textual summary of the aggregated\n * events that occurred.\n */\n _renderSummary: function _renderSummary(eventAggregates, orderedTransitionSequences) {\n var _this = this;\n\n var summaries = orderedTransitionSequences.map(function (transitions) {\n var userNames = eventAggregates[transitions];\n var nameList = _this._renderNameList(userNames);\n\n var splitTransitions = transitions.split(',');\n\n // Some neighbouring transitions are common, so canonicalise some into \"pair\"\n // transitions\n var canonicalTransitions = _this._getCanonicalTransitions(splitTransitions);\n // Transform into consecutive repetitions of the same transition (like 5\n // consecutive 'joined_and_left's)\n var coalescedTransitions = _this._coalesceRepeatedTransitions(canonicalTransitions);\n\n var descs = coalescedTransitions.map(function (t) {\n return _this._getDescriptionForTransition(t.transitionType, userNames.length, t.repeats);\n });\n\n var desc = _this._renderCommaSeparatedList(descs);\n\n return (0, _languageHandler._t)('%(nameList)s %(transitionList)s', { nameList: nameList, transitionList: desc });\n });\n\n if (!summaries) {\n return null;\n }\n\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n\n return _react2.default.createElement(\n 'span',\n { className: 'mx_TextualEvent mx_MemberEventListSummary_summary' },\n _react2.default.createElement(\n EmojiText,\n null,\n summaries.join(\", \")\n )\n );\n },\n\n /**\n * @param {string[]} users an array of user display names or user IDs.\n * @returns {string} a comma-separated list that ends with \"and [n] others\" if there are\n * more items in `users` than `this.props.summaryLength`, which is the number of names\n * included before \"and [n] others\".\n */\n _renderNameList: function _renderNameList(users) {\n return this._renderCommaSeparatedList(users, this.props.summaryLength);\n },\n\n /**\n * Canonicalise an array of transitions such that some pairs of transitions become\n * single transitions. For example an input ['joined','left'] would result in an output\n * ['joined_and_left'].\n * @param {string[]} transitions an array of transitions.\n * @returns {string[]} an array of transitions.\n */\n _getCanonicalTransitions: function _getCanonicalTransitions(transitions) {\n var modMap = {\n 'joined': {\n 'after': 'left',\n 'newTransition': 'joined_and_left'\n },\n 'left': {\n 'after': 'joined',\n 'newTransition': 'left_and_joined'\n }\n // $currentTransition : {\n // 'after' : $nextTransition,\n // 'newTransition' : 'new_transition_type',\n // },\n };\n var res = [];\n\n for (var i = 0; i < transitions.length; i++) {\n var t = transitions[i];\n var t2 = transitions[i + 1];\n\n var transition = t;\n\n if (i < transitions.length - 1 && modMap[t] && modMap[t].after === t2) {\n transition = modMap[t].newTransition;\n i++;\n }\n\n res.push(transition);\n }\n return res;\n },\n\n /**\n * Transform an array of transitions into an array of transitions and how many times\n * they are repeated consecutively.\n *\n * An array of 123 \"joined_and_left\" transitions, would result in:\n * ```\n * [{\n * transitionType: \"joined_and_left\"\n * repeats: 123\n * }]\n * ```\n * @param {string[]} transitions the array of transitions to transform.\n * @returns {object[]} an array of coalesced transitions.\n */\n _coalesceRepeatedTransitions: function _coalesceRepeatedTransitions(transitions) {\n var res = [];\n for (var i = 0; i < transitions.length; i++) {\n if (res.length > 0 && res[res.length - 1].transitionType === transitions[i]) {\n res[res.length - 1].repeats += 1;\n } else {\n res.push({\n transitionType: transitions[i],\n repeats: 1\n });\n }\n }\n return res;\n },\n\n /**\n * For a certain transition, t, describe what happened to the users that\n * underwent the transition.\n * @param {string} t the transition type.\n * @param {integer} userCount number of usernames\n * @param {number} repeats the number of times the transition was repeated in a row.\n * @returns {string} the written Human Readable equivalent of the transition.\n */\n _getDescriptionForTransition: function _getDescriptionForTransition(t, userCount, repeats) {\n // The empty interpolations 'severalUsers' and 'oneUser'\n // are there only to show translators to non-English languages\n // that the verb is conjugated to plural or singular Subject.\n var res = null;\n switch (t) {\n case \"joined\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)sjoined %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)sjoined %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"left\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)sleft %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)sleft %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"joined_and_left\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)sjoined and left %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)sjoined and left %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"left_and_joined\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)sleft and rejoined %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)sleft and rejoined %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"invite_reject\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)srejected their invitations %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)srejected their invitation %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"invite_withdrawal\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)shad their invitations withdrawn %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)shad their invitation withdrawn %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"invited\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"were invited %(count)s times\", { count: repeats }) : (0, _languageHandler._t)(\"was invited %(count)s times\", { count: repeats });\n break;\n case \"banned\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"were banned %(count)s times\", { count: repeats }) : (0, _languageHandler._t)(\"was banned %(count)s times\", { count: repeats });\n break;\n case \"unbanned\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"were unbanned %(count)s times\", { count: repeats }) : (0, _languageHandler._t)(\"was unbanned %(count)s times\", { count: repeats });\n break;\n case \"kicked\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"were kicked %(count)s times\", { count: repeats }) : (0, _languageHandler._t)(\"was kicked %(count)s times\", { count: repeats });\n break;\n case \"changed_name\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)schanged their name %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)schanged their name %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"changed_avatar\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)schanged their avatar %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)schanged their avatar %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n }\n\n return res;\n },\n\n\n /**\n * Constructs a written English string representing `items`, with an optional limit on\n * the number of items included in the result. If specified and if the length of\n *`items` is greater than the limit, the string \"and n others\" will be appended onto\n * the result.\n * If `items` is empty, returns the empty string. If there is only one item, return\n * it.\n * @param {string[]} items the items to construct a string from.\n * @param {number?} itemLimit the number by which to limit the list.\n * @returns {string} a string constructed by joining `items` with a comma between each\n * item, but with the last item appended as \" and [lastItem]\".\n */\n _renderCommaSeparatedList: function _renderCommaSeparatedList(items, itemLimit) {\n var remaining = itemLimit === undefined ? 0 : Math.max(items.length - itemLimit, 0);\n if (items.length === 0) {\n return \"\";\n } else if (items.length === 1) {\n return items[0];\n } else if (remaining > 0) {\n items = items.slice(0, itemLimit);\n return (0, _languageHandler._t)(\"%(items)s and %(count)s others\", { items: items.join(', '), count: remaining });\n } else {\n var lastItem = items.pop();\n return (0, _languageHandler._t)(\"%(items)s and %(lastItem)s\", { items: items.join(', '), lastItem: lastItem });\n }\n },\n\n\n _renderAvatars: function _renderAvatars(roomMembers) {\n var avatars = roomMembers.slice(0, this.props.avatarsMaxLength).map(function (m) {\n return _react2.default.createElement(MemberAvatar, { key: m.userId, member: m, width: 14, height: 14 });\n });\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MemberEventListSummary_avatars', onClick: this._toggleSummary },\n avatars\n );\n },\n\n _getTransitionSequence: function _getTransitionSequence(events) {\n return events.map(this._getTransition);\n },\n\n /**\n * Label a given membership event, `e`, where `getContent().membership` has\n * changed for each transition allowed by the Matrix protocol. This attempts to\n * label the membership changes that occur in `../../../TextForEvent.js`.\n * @param {MatrixEvent} e the membership change event to label.\n * @returns {string?} the transition type given to this event. This defaults to `null`\n * if a transition is not recognised.\n */\n _getTransition: function _getTransition(e) {\n switch (e.mxEvent.getContent().membership) {\n case 'invite':\n return 'invited';\n case 'ban':\n return 'banned';\n case 'join':\n if (e.mxEvent.getPrevContent().membership === 'join') {\n if (e.mxEvent.getContent().displayname !== e.mxEvent.getPrevContent().displayname) {\n return 'changed_name';\n } else if (e.mxEvent.getContent().avatar_url !== e.mxEvent.getPrevContent().avatar_url) {\n return 'changed_avatar';\n }\n // console.log(\"MELS ignoring duplicate membership join event\");\n return null;\n } else {\n return 'joined';\n }\n case 'leave':\n if (e.mxEvent.getSender() === e.mxEvent.getStateKey()) {\n switch (e.mxEvent.getPrevContent().membership) {\n case 'invite':\n return 'invite_reject';\n default:\n return 'left';\n }\n }\n switch (e.mxEvent.getPrevContent().membership) {\n case 'invite':\n return 'invite_withdrawal';\n case 'ban':\n return 'unbanned';\n case 'join':\n return 'kicked';\n default:\n return 'left';\n }\n default:\n return null;\n }\n },\n\n _getAggregate: function _getAggregate(userEvents) {\n var _this2 = this;\n\n // A map of aggregate type to arrays of display names. Each aggregate type\n // is a comma-delimited string of transitions, e.g. \"joined,left,kicked\".\n // The array of display names is the array of users who went through that\n // sequence during eventsToRender.\n var aggregate = {\n // $aggregateType : []:string\n };\n // A map of aggregate types to the indices that order them (the index of\n // the first event for a given transition sequence)\n var aggregateIndices = {\n // $aggregateType : int\n };\n\n var users = (0, _keys2.default)(userEvents);\n users.forEach(function (userId) {\n var firstEvent = userEvents[userId][0];\n var displayName = firstEvent.displayName;\n\n var seq = _this2._getTransitionSequence(userEvents[userId]);\n if (!aggregate[seq]) {\n aggregate[seq] = [];\n aggregateIndices[seq] = -1;\n }\n\n aggregate[seq].push(displayName);\n\n if (aggregateIndices[seq] === -1 || firstEvent.index < aggregateIndices[seq]) {\n aggregateIndices[seq] = firstEvent.index;\n }\n });\n\n return {\n names: aggregate,\n indices: aggregateIndices\n };\n },\n\n render: function render() {\n var eventsToRender = this.props.events;\n var eventIds = eventsToRender.map(function (e) {\n return e.getId();\n }).join(',');\n var fewEvents = eventsToRender.length < this.props.threshold;\n var expanded = this.state.expanded || fewEvents;\n\n var expandedEvents = null;\n if (expanded) {\n expandedEvents = this.props.children;\n }\n\n if (fewEvents) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberEventListSummary', 'data-scroll-tokens': eventIds },\n expandedEvents\n );\n }\n\n // Map user IDs to an array of objects:\n var userEvents = {\n // $userId : [{\n // // The original event\n // mxEvent: e,\n // // The display name of the user (if not, then user ID)\n // displayName: e.target.name || userId,\n // // The original index of the event in this.props.events\n // index: index,\n // }]\n };\n\n var avatarMembers = [];\n eventsToRender.forEach(function (e, index) {\n var userId = e.getStateKey();\n // Initialise a user's events\n if (!userEvents[userId]) {\n userEvents[userId] = [];\n if (e.target) avatarMembers.push(e.target);\n }\n userEvents[userId].push({\n mxEvent: e,\n displayName: (e.target ? e.target.name : null) || userId,\n index: index\n });\n });\n\n var aggregate = this._getAggregate(userEvents);\n\n // Sort types by order of lowest event index within sequence\n var orderedTransitionSequences = (0, _keys2.default)(aggregate.names).sort(function (seq1, seq2) {\n return aggregate.indices[seq1] > aggregate.indices[seq2];\n });\n\n var summaryContainer = null;\n if (!expanded) {\n summaryContainer = _react2.default.createElement(\n 'div',\n { className: 'mx_EventTile_line' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_EventTile_info' },\n this._renderAvatars(avatarMembers),\n this._renderSummary(aggregate.names, orderedTransitionSequences)\n )\n );\n }\n var toggleButton = _react2.default.createElement(\n 'div',\n { className: \"mx_MemberEventListSummary_toggle\", onClick: this._toggleSummary },\n expanded ? (0, _languageHandler._t)('collapse') : (0, _languageHandler._t)('expand')\n );\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberEventListSummary', 'data-scroll-tokens': eventIds },\n toggleButton,\n summaryContainer,\n expanded ? _react2.default.createElement(\n 'div',\n { className: 'mx_MemberEventListSummary_line' },\n '\\xA0'\n ) : null,\n expandedEvents\n );\n }\n});\n//# sourceMappingURL=MemberEventListSummary.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _resizeObserverPolyfill = require('resize-observer-polyfill');\n\nvar _resizeObserverPolyfill2 = _interopRequireDefault(_resizeObserverPolyfill);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Shamelessly ripped off Modal.js. There's probably a better way\n// of doing reusable widgets like dialog boxes & menus where we go and\n// pass in a custom control as the actual body.\n\nfunction getContainer(containerId) {\n return document.getElementById(containerId);\n} /*\n Copyright 2018 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction getOrCreateContainer(containerId) {\n var container = getContainer(containerId);\n\n if (!container) {\n container = document.createElement(\"div\");\n container.id = containerId;\n document.body.appendChild(container);\n }\n\n return container;\n}\n\n/*\n * Class of component that renders its children in a separate ReactDOM virtual tree\n * in a container element appended to document.body.\n *\n * This prevents the children from being unmounted when the parent of PersistedElement\n * unmounts, allowing them to persist.\n *\n * When PE is unmounted, it hides the children using CSS. When mounted or updated, the\n * children are made visible and are positioned into a div that is given the same\n * bounding rect as the parent of PE.\n */\n\nvar PersistedElement = function (_React$Component) {\n (0, _inherits3.default)(PersistedElement, _React$Component);\n\n function PersistedElement() {\n (0, _classCallCheck3.default)(this, PersistedElement);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (PersistedElement.__proto__ || (0, _getPrototypeOf2.default)(PersistedElement)).call(this));\n\n _this.collectChildContainer = _this.collectChildContainer.bind(_this);\n _this.collectChild = _this.collectChild.bind(_this);\n _this._repositionChild = _this._repositionChild.bind(_this);\n _this._onAction = _this._onAction.bind(_this);\n\n _this.resizeObserver = new _resizeObserverPolyfill2.default(_this._repositionChild);\n // Annoyingly, a resize observer is insufficient, since we also care\n // about when the element moves on the screen without changing its\n // dimensions. Doesn't look like there's a ResizeObserver equivalent\n // for this, so we bodge it by listening for document resize and\n // the timeline_resize action.\n window.addEventListener('resize', _this._repositionChild);\n _this._dispatcherRef = _dispatcher2.default.register(_this._onAction);\n return _this;\n }\n\n /**\n * Removes the DOM elements created when a PersistedElement with the given\n * persistKey was mounted. The DOM elements will be re-added if another\n * PeristedElement is mounted in the future.\n *\n * @param {string} persistKey Key used to uniquely identify this PersistedElement\n */\n\n\n (0, _createClass3.default)(PersistedElement, [{\n key: 'collectChildContainer',\n value: function collectChildContainer(ref) {\n if (this.childContainer) {\n this.resizeObserver.unobserve(this.childContainer);\n }\n this.childContainer = ref;\n if (ref) {\n this.resizeObserver.observe(ref);\n }\n }\n }, {\n key: 'collectChild',\n value: function collectChild(ref) {\n this.child = ref;\n this.updateChild();\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.updateChild();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.updateChild();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.updateChildVisibility(this.child, false);\n this.resizeObserver.disconnect();\n window.removeEventListener('resize', this._repositionChild);\n _dispatcher2.default.unregister(this._dispatcherRef);\n }\n }, {\n key: '_onAction',\n value: function _onAction(payload) {\n if (payload.action === 'timeline_resize') {\n this._repositionChild();\n }\n }\n }, {\n key: '_repositionChild',\n value: function _repositionChild() {\n this.updateChildPosition(this.child, this.childContainer);\n }\n }, {\n key: 'updateChild',\n value: function updateChild() {\n this.updateChildPosition(this.child, this.childContainer);\n this.updateChildVisibility(this.child, true);\n }\n }, {\n key: 'updateChildVisibility',\n value: function updateChildVisibility(child, visible) {\n if (!child) return;\n child.style.display = visible ? 'block' : 'none';\n }\n }, {\n key: 'updateChildPosition',\n value: function updateChildPosition(child, parent) {\n if (!child || !parent) return;\n\n var parentRect = parent.getBoundingClientRect();\n (0, _assign2.default)(child.style, {\n position: 'absolute',\n top: parentRect.top + 'px',\n left: parentRect.left + 'px',\n width: parentRect.width + 'px',\n height: parentRect.height + 'px'\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var content = _react2.default.createElement(\n 'div',\n { ref: this.collectChild, style: this.props.style },\n this.props.children\n );\n\n _reactDom2.default.render(content, getOrCreateContainer('mx_persistedElement_' + this.props.persistKey));\n\n return _react2.default.createElement('div', { ref: this.collectChildContainer });\n }\n }], [{\n key: 'destroyElement',\n value: function destroyElement(persistKey) {\n var container = getContainer('mx_persistedElement_' + persistKey);\n if (container) {\n container.remove();\n }\n }\n }, {\n key: 'isMounted',\n value: function isMounted(persistKey) {\n return Boolean(getContainer('mx_persistedElement_' + persistKey));\n }\n }]);\n return PersistedElement;\n}(_react2.default.Component);\n\nPersistedElement.propTypes = {\n // Unique identifier for this PersistedElement instance\n // Any PersistedElements with the same persistKey will use\n // the same DOM container.\n persistKey: _propTypes2.default.string.isRequired\n};\nexports.default = PersistedElement;\nmodule.exports = exports['default'];\n//# sourceMappingURL=PersistedElement.js.map","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array<Array>} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array<ResizeObserverSPI>}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the <html> itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array<ResizeObservation>}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map<Element, ResizeObservation>}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _ActiveWidgetStore = require('../../../stores/ActiveWidgetStore');\n\nvar _ActiveWidgetStore2 = _interopRequireDefault(_ActiveWidgetStore);\n\nvar _WidgetUtils = require('../../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'PersistentApp',\n\n getInitialState: function getInitialState() {\n return {\n roomId: _RoomViewStore2.default.getRoomId(),\n persistentWidgetId: _ActiveWidgetStore2.default.getPersistentWidgetId()\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._roomStoreToken = _RoomViewStore2.default.addListener(this._onRoomViewStoreUpdate);\n _ActiveWidgetStore2.default.on('update', this._onActiveWidgetStoreUpdate);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (this._roomStoreToken) {\n this._roomStoreToken.remove();\n }\n _ActiveWidgetStore2.default.removeListener('update', this._onActiveWidgetStoreUpdate);\n },\n\n _onRoomViewStoreUpdate: function _onRoomViewStoreUpdate(payload) {\n if (_RoomViewStore2.default.getRoomId() === this.state.roomId) return;\n this.setState({\n roomId: _RoomViewStore2.default.getRoomId()\n });\n },\n\n _onActiveWidgetStoreUpdate: function _onActiveWidgetStoreUpdate() {\n this.setState({\n persistentWidgetId: _ActiveWidgetStore2.default.getPersistentWidgetId()\n });\n },\n\n render: function render() {\n if (this.state.persistentWidgetId) {\n var persistentWidgetInRoomId = _ActiveWidgetStore2.default.getRoomId(this.state.persistentWidgetId);\n if (this.state.roomId !== persistentWidgetInRoomId) {\n var persistentWidgetInRoom = _MatrixClientPeg2.default.get().getRoom(persistentWidgetInRoomId);\n // get the widget data\n var appEvent = _WidgetUtils2.default.getRoomWidgets(persistentWidgetInRoom).find(function (ev) {\n return ev.getStateKey() === _ActiveWidgetStore2.default.getPersistentWidgetId();\n });\n var app = _WidgetUtils2.default.makeAppConfig(appEvent.getStateKey(), appEvent.getContent(), appEvent.sender, persistentWidgetInRoomId);\n var capWhitelist = _WidgetUtils2.default.getCapWhitelistForAppTypeInRoomId(app.type, persistentWidgetInRoomId);\n var AppTile = _index2.default.getComponent('elements.AppTile');\n return _react2.default.createElement(AppTile, {\n key: app.id,\n id: app.id,\n url: app.url,\n name: app.name,\n type: app.type,\n fullWidth: true,\n room: persistentWidgetInRoom,\n userId: _MatrixClientPeg2.default.get().credentials.userId,\n show: true,\n creatorUserId: app.creatorUserId,\n widgetPageTitle: app.data && app.data.title ? app.data.title : '',\n waitForIframeLoad: app.waitForIframeLoad,\n whitelistCapabilities: capWhitelist,\n showDelete: false,\n showMinimise: false,\n miniMode: true\n });\n }\n }\n return null;\n }\n});\n//# sourceMappingURL=PersistentApp.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _linkifyMatrix = require('../../../linkify-matrix');\n\nvar _Rooms = require('../../../Rooms');\n\nvar _FlairStore = require('../../../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar REGEX_MATRIXTO = new RegExp(_linkifyMatrix.MATRIXTO_URL_PATTERN);\n\n// For URLs of matrix.to links in the timeline which have been reformatted by\n// HttpUtils transformTags to relative links. This excludes event URLs (with `[^\\/]*`)\nvar REGEX_LOCAL_MATRIXTO = /^#\\/(?:user|room|group)\\/(([#!@+])[^/]*)$/;\n\nvar Pill = _react2.default.createClass({\n displayName: 'Pill',\n\n statics: {\n isPillUrl: function isPillUrl(url) {\n return !!REGEX_MATRIXTO.exec(url);\n },\n isMessagePillUrl: function isMessagePillUrl(url) {\n return !!REGEX_LOCAL_MATRIXTO.exec(url);\n },\n roomNotifPos: function roomNotifPos(text) {\n return text.indexOf(\"@room\");\n },\n roomNotifLen: function roomNotifLen() {\n return \"@room\".length;\n },\n TYPE_USER_MENTION: 'TYPE_USER_MENTION',\n TYPE_ROOM_MENTION: 'TYPE_ROOM_MENTION',\n TYPE_GROUP_MENTION: 'TYPE_GROUP_MENTION',\n TYPE_AT_ROOM_MENTION: 'TYPE_AT_ROOM_MENTION' // '@room' mention\n },\n\n props: {\n // The Type of this Pill. If url is given, this is auto-detected.\n type: _propTypes2.default.string,\n // The URL to pillify (no validation is done, see isPillUrl and isMessagePillUrl)\n url: _propTypes2.default.string,\n // Whether the pill is in a message\n inMessage: _propTypes2.default.bool,\n // The room in which this pill is being rendered\n room: _propTypes2.default.instanceOf(_matrixJsSdk.Room),\n // Whether to include an avatar in the pill\n shouldShowPillAvatar: _propTypes2.default.bool,\n // Whether to render this pill as if it were highlit by a selection\n isSelected: _propTypes2.default.bool\n },\n\n childContextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getChildContext: function getChildContext() {\n return {\n matrixClient: this._matrixClient\n };\n },\n getInitialState: function getInitialState() {\n return {\n // ID/alias of the room/user\n resourceId: null,\n // Type of pill\n pillType: null,\n\n // The member related to the user pill\n member: null,\n // The group related to the group pill\n group: null,\n // The room related to the room pill\n room: null\n };\n },\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n var _this = this;\n\n return (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var regex, matrixToMatch, resourceId, prefix, pillType, member, group, room, localMember, localRoom, cli;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n regex = REGEX_MATRIXTO;\n\n if (nextProps.inMessage) {\n regex = REGEX_LOCAL_MATRIXTO;\n }\n\n matrixToMatch = void 0;\n resourceId = void 0;\n prefix = void 0;\n\n\n if (nextProps.url) {\n // Default to the empty array if no match for simplicity\n // resource and prefix will be undefined instead of throwing\n matrixToMatch = regex.exec(nextProps.url) || [];\n\n resourceId = matrixToMatch[1]; // The room/user ID\n prefix = matrixToMatch[2]; // The first character of prefix\n }\n\n pillType = _this.props.type || {\n '@': Pill.TYPE_USER_MENTION,\n '#': Pill.TYPE_ROOM_MENTION,\n '!': Pill.TYPE_ROOM_MENTION,\n '+': Pill.TYPE_GROUP_MENTION\n }[prefix];\n member = void 0;\n group = void 0;\n room = void 0;\n _context.t0 = pillType;\n _context.next = _context.t0 === Pill.TYPE_AT_ROOM_MENTION ? 13 : _context.t0 === Pill.TYPE_USER_MENTION ? 15 : _context.t0 === Pill.TYPE_ROOM_MENTION ? 19 : _context.t0 === Pill.TYPE_GROUP_MENTION ? 23 : 33;\n break;\n\n case 13:\n room = nextProps.room;\n return _context.abrupt('break', 33);\n\n case 15:\n localMember = nextProps.room.getMember(resourceId);\n\n member = localMember;\n if (!localMember) {\n member = new _matrixJsSdk.RoomMember(null, resourceId);\n _this.doProfileLookup(resourceId, member);\n }\n return _context.abrupt('break', 33);\n\n case 19:\n localRoom = resourceId[0] === '#' ? _MatrixClientPeg2.default.get().getRooms().find(function (r) {\n return r.getAliases().includes(resourceId);\n }) : _MatrixClientPeg2.default.get().getRoom(resourceId);\n\n room = localRoom;\n if (!localRoom) {\n // TODO: This would require a new API to resolve a room alias to\n // a room avatar and name.\n // this.doRoomProfileLookup(resourceId, member);\n }\n return _context.abrupt('break', 33);\n\n case 23:\n cli = _MatrixClientPeg2.default.get();\n _context.prev = 24;\n _context.next = 27;\n return (0, _bluebird.resolve)(_FlairStore2.default.getGroupProfileCached(cli, resourceId));\n\n case 27:\n group = _context.sent;\n _context.next = 33;\n break;\n\n case 30:\n _context.prev = 30;\n _context.t1 = _context['catch'](24);\n // if FlairStore failed, fall back to just groupId\n group = {\n groupId: resourceId,\n avatarUrl: null,\n name: null\n };\n\n case 33:\n _this.setState({ resourceId: resourceId, pillType: pillType, member: member, group: group, room: room });\n\n case 34:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this, [[24, 30]]);\n }))();\n },\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n this._matrixClient = _MatrixClientPeg2.default.get();\n this.componentWillReceiveProps(this.props);\n },\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n\n doProfileLookup: function doProfileLookup(userId, member) {\n var _this2 = this;\n\n _MatrixClientPeg2.default.get().getProfileInfo(userId).then(function (resp) {\n if (_this2._unmounted) {\n return;\n }\n member.name = resp.displayname;\n member.rawDisplayName = resp.displayname;\n member.events.member = {\n getContent: function getContent() {\n return { avatar_url: resp.avatar_url };\n },\n getDirectionalContent: function getDirectionalContent() {\n return this.getContent();\n }\n };\n _this2.setState({ member: member });\n }).catch(function (err) {\n console.error('Could not retrieve profile data for ' + userId + ':', err);\n });\n },\n\n onUserPillClicked: function onUserPillClicked() {\n _dispatcher2.default.dispatch({\n action: 'view_user',\n member: this.state.member\n });\n },\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('views.avatars.BaseAvatar');\n var MemberAvatar = _index2.default.getComponent('avatars.MemberAvatar');\n var RoomAvatar = _index2.default.getComponent('avatars.RoomAvatar');\n\n var resource = this.state.resourceId;\n\n var avatar = null;\n var linkText = resource;\n var pillClass = void 0;\n var userId = void 0;\n var href = this.props.url;\n var onClick = void 0;\n switch (this.state.pillType) {\n case Pill.TYPE_AT_ROOM_MENTION:\n {\n var _room = this.props.room;\n if (_room) {\n linkText = \"@room\";\n if (this.props.shouldShowPillAvatar) {\n avatar = _react2.default.createElement(RoomAvatar, { room: _room, width: 16, height: 16 });\n }\n pillClass = 'mx_AtRoomPill';\n }\n }\n break;\n case Pill.TYPE_USER_MENTION:\n {\n // If this user is not a member of this room, default to the empty member\n var _member = this.state.member;\n if (_member) {\n userId = _member.userId;\n _member.rawDisplayName = _member.rawDisplayName || '';\n linkText = _member.rawDisplayName;\n if (this.props.shouldShowPillAvatar) {\n avatar = _react2.default.createElement(MemberAvatar, { member: _member, width: 16, height: 16 });\n }\n pillClass = 'mx_UserPill';\n href = null;\n onClick = this.onUserPillClicked;\n }\n }\n break;\n case Pill.TYPE_ROOM_MENTION:\n {\n var _room2 = this.state.room;\n if (_room2) {\n linkText = (_room2 ? (0, _Rooms.getDisplayAliasForRoom)(_room2) : null) || resource;\n if (this.props.shouldShowPillAvatar) {\n avatar = _react2.default.createElement(RoomAvatar, { room: _room2, width: 16, height: 16 });\n }\n pillClass = 'mx_RoomPill';\n }\n }\n break;\n case Pill.TYPE_GROUP_MENTION:\n {\n if (this.state.group) {\n var _state$group = this.state.group,\n avatarUrl = _state$group.avatarUrl,\n groupId = _state$group.groupId,\n name = _state$group.name;\n\n var cli = _MatrixClientPeg2.default.get();\n\n linkText = groupId;\n if (this.props.shouldShowPillAvatar) {\n avatar = _react2.default.createElement(BaseAvatar, { name: name || groupId, width: 16, height: 16,\n url: avatarUrl ? cli.mxcUrlToHttp(avatarUrl, 16, 16) : null });\n }\n pillClass = 'mx_GroupPill';\n }\n }\n break;\n }\n\n var classes = (0, _classnames2.default)(pillClass, {\n \"mx_UserPill_me\": userId === _MatrixClientPeg2.default.get().credentials.userId,\n \"mx_UserPill_selected\": this.props.isSelected\n });\n\n if (this.state.pillType) {\n return this.props.inMessage ? _react2.default.createElement(\n 'a',\n { className: classes, href: href, onClick: onClick, title: resource, 'data-offset-key': this.props.offsetKey },\n avatar,\n linkText\n ) : _react2.default.createElement(\n 'span',\n { className: classes, title: resource, 'data-offset-key': this.props.offsetKey },\n avatar,\n linkText\n );\n } else {\n // Deliberately render nothing if the URL isn't recognised\n return null;\n }\n }\n});\n\nexports.default = Pill;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Pill.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _Roles = require('../../../Roles');\n\nvar Roles = _interopRequireWildcard(_Roles);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'PowerSelector',\n\n propTypes: {\n value: _propTypes2.default.number.isRequired,\n // The maximum value that can be set with the power selector\n maxValue: _propTypes2.default.number.isRequired,\n\n // Default user power level for the room\n usersDefault: _propTypes2.default.number.isRequired,\n\n // if true, the <select/> should be a 'controlled' form element and updated by React\n // to reflect the current value, rather than left freeform.\n // MemberInfo uses controlled; RoomSettings uses non-controlled.\n //\n // ignored if disabled is truthy. false by default.\n controlled: _propTypes2.default.bool,\n\n // should the user be able to change the value? false by default.\n disabled: _propTypes2.default.bool,\n onChange: _propTypes2.default.func,\n\n // Optional key to pass as the second argument to `onChange`\n powerLevelKey: _propTypes2.default.string\n },\n\n getInitialState: function getInitialState() {\n return {\n levelRoleMap: {},\n // List of power levels to show in the drop-down\n options: []\n };\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n maxValue: Infinity,\n usersDefault: 0\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._initStateFromProps(this.props);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n this._initStateFromProps(newProps);\n },\n\n _initStateFromProps: function _initStateFromProps(newProps) {\n // This needs to be done now because levelRoleMap has translated strings\n var levelRoleMap = Roles.levelRoleMap(newProps.usersDefault);\n var options = (0, _keys2.default)(levelRoleMap).filter(function (l) {\n return l === undefined || l <= newProps.maxValue;\n });\n\n this.setState({\n levelRoleMap: levelRoleMap,\n options: options,\n custom: levelRoleMap[newProps.value] === undefined\n });\n },\n\n onSelectChange: function onSelectChange(event) {\n this.setState({ custom: event.target.value === \"SELECT_VALUE_CUSTOM\" });\n if (event.target.value !== \"SELECT_VALUE_CUSTOM\") {\n this.props.onChange(event.target.value, this.props.powerLevelKey);\n }\n },\n\n onCustomBlur: function onCustomBlur(event) {\n this.props.onChange(parseInt(this.refs.custom.value), this.props.powerLevelKey);\n },\n\n onCustomKeyDown: function onCustomKeyDown(event) {\n if (event.key == \"Enter\") {\n this.props.onChange(parseInt(this.refs.custom.value), this.props.powerLevelKey);\n }\n },\n\n render: function render() {\n var _this = this;\n\n var customPicker = void 0;\n if (this.state.custom) {\n if (this.props.disabled) {\n customPicker = _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Custom of %(powerLevel)s\", { powerLevel: this.props.value })\n );\n } else {\n customPicker = _react2.default.createElement(\n 'span',\n null,\n ' = ',\n _react2.default.createElement('input', {\n ref: 'custom',\n type: 'text',\n size: '3',\n defaultValue: this.props.value,\n onBlur: this.onCustomBlur,\n onKeyDown: this.onCustomKeyDown\n })\n );\n }\n }\n\n var selectValue = void 0;\n if (this.state.custom) {\n selectValue = \"SELECT_VALUE_CUSTOM\";\n } else {\n selectValue = this.state.levelRoleMap[this.props.value] ? this.props.value : \"SELECT_VALUE_CUSTOM\";\n }\n var select = void 0;\n if (this.props.disabled) {\n select = _react2.default.createElement(\n 'span',\n null,\n this.state.levelRoleMap[selectValue]\n );\n } else {\n // Each level must have a definition in this.state.levelRoleMap\n var options = this.state.options.map(function (level) {\n return {\n value: level,\n text: Roles.textualPowerLevel(level, _this.props.usersDefault)\n };\n });\n options.push({ value: \"SELECT_VALUE_CUSTOM\", text: (0, _languageHandler._t)(\"Custom level\") });\n options = options.map(function (op) {\n return _react2.default.createElement(\n 'option',\n { value: op.value, key: op.value },\n op.text\n );\n });\n\n select = _react2.default.createElement(\n 'select',\n { ref: 'select',\n value: this.props.controlled ? selectValue : undefined,\n defaultValue: !this.props.controlled ? selectValue : undefined,\n onChange: this.onSelectChange },\n options\n );\n }\n\n return _react2.default.createElement(\n 'span',\n { className: 'mx_PowerSelector' },\n select,\n customPicker\n );\n }\n});\n//# sourceMappingURL=PowerSelector.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nmodule.exports = React.createClass({\n displayName: 'ProgressBar',\n propTypes: {\n value: _propTypes2.default.number,\n max: _propTypes2.default.number\n },\n\n render: function render() {\n // Would use an HTML5 progress tag but if that doesn't animate if you\n // use the HTML attributes rather than styles\n var progressStyle = {\n width: this.props.value / this.props.max * 100 + \"%\"\n };\n return React.createElement(\n 'div',\n { className: 'mx_ProgressBar' },\n React.createElement('div', { className: 'mx_ProgressBar_fill', style: progressStyle })\n );\n }\n});\n//# sourceMappingURL=ProgressBar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar RoomDirectoryButton = function RoomDirectoryButton(props) {\n var ActionButton = _index2.default.getComponent('elements.ActionButton');\n return _react2.default.createElement(ActionButton, { action: 'view_room_directory',\n mouseOverAction: props.callout ? \"callout_room_directory\" : null,\n label: (0, _languageHandler._t)(\"Room directory\"),\n iconPath: 'img/icons-directory.svg',\n size: props.size,\n tooltip: props.tooltip\n });\n};\n\nRoomDirectoryButton.propTypes = {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool\n};\n\nexports.default = RoomDirectoryButton;\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomDirectoryButton.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar SettingsButton = function SettingsButton(props) {\n var ActionButton = _index2.default.getComponent('elements.ActionButton');\n return _react2.default.createElement(ActionButton, { action: 'view_user_settings',\n label: (0, _languageHandler._t)(\"Settings\"),\n iconPath: 'img/icons-settings.svg',\n size: props.size,\n tooltip: props.tooltip\n });\n};\n\nSettingsButton.propTypes = {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool\n};\n\nexports.default = SettingsButton;\nmodule.exports = exports['default'];\n//# sourceMappingURL=SettingsButton.js.map","\"use strict\";\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _SettingsStore = require(\"../../../settings/SettingsStore\");\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'SettingsFlag',\n propTypes: {\n name: _propTypes2.default.string.isRequired,\n level: _propTypes2.default.string.isRequired,\n roomId: _propTypes2.default.string, // for per-room settings\n label: _propTypes2.default.string, // untranslated\n onChange: _propTypes2.default.func,\n isExplicit: _propTypes2.default.bool,\n manualSave: _propTypes2.default.bool,\n\n // If group is supplied, then this will create a radio button instead.\n group: _propTypes2.default.string,\n value: _propTypes2.default.any // the value for the radio button\n },\n\n getInitialState: function getInitialState() {\n return {\n value: _SettingsStore2.default.getValueAt(this.props.level, this.props.name, this.props.roomId, this.props.isExplicit)\n };\n },\n\n onChange: function onChange(e) {\n if (this.props.group && !e.target.checked) return;\n\n var newState = this.props.group ? this.props.value : e.target.checked;\n if (!this.props.manualSave) this.save(newState);else this.setState({ value: newState });\n if (this.props.onChange) this.props.onChange(newState);\n },\n\n save: function save() {\n var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n return _SettingsStore2.default.setValue(this.props.name, this.props.roomId, this.props.level, val !== undefined ? val : this.state.value);\n },\n\n render: function render() {\n var value = this.props.manualSave ? this.state.value : _SettingsStore2.default.getValueAt(this.props.level, this.props.name, this.props.roomId, this.props.isExplicit);\n\n var canChange = _SettingsStore2.default.canSetValue(this.props.name, this.props.roomId, this.props.level);\n\n var label = this.props.label;\n if (!label) label = _SettingsStore2.default.getDisplayName(this.props.name, this.props.level);else label = (0, _languageHandler._t)(label);\n\n // We generate a relatively complex ID to avoid conflicts\n var id = this.props.name + \"_\" + this.props.group + \"_\" + this.props.value + \"_\" + this.props.level;\n var checkbox = _react2.default.createElement(\"input\", { id: id,\n type: \"checkbox\",\n defaultChecked: value,\n onChange: this.onChange,\n disabled: !canChange\n });\n if (this.props.group) {\n checkbox = _react2.default.createElement(\"input\", { id: id,\n type: \"radio\",\n name: this.props.group,\n value: this.props.value,\n checked: value === this.props.value,\n onChange: this.onChange,\n disabled: !canChange\n });\n }\n\n return _react2.default.createElement(\n \"label\",\n null,\n checkbox,\n label\n );\n }\n});\n//# sourceMappingURL=SettingsFlag.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar React = require('react');\n\nmodule.exports = React.createClass({\n displayName: 'Spinner',\n\n render: function render() {\n var w = this.props.w || 32;\n var h = this.props.h || 32;\n var imgClass = this.props.imgClassName || \"\";\n return React.createElement(\n 'div',\n { className: 'mx_Spinner' },\n React.createElement('img', { src: 'img/spinner.gif', width: w, height: h, className: imgClass })\n );\n }\n});\n//# sourceMappingURL=Spinner.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar StartChatButton = function StartChatButton(props) {\n var ActionButton = _index2.default.getComponent('elements.ActionButton');\n return _react2.default.createElement(ActionButton, { action: 'view_create_chat',\n mouseOverAction: props.callout ? \"callout_start_chat\" : null,\n label: (0, _languageHandler._t)(\"Start chat\"),\n iconPath: 'img/icons-people.svg',\n size: props.size,\n tooltip: props.tooltip\n });\n};\n\nStartChatButton.propTypes = {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool\n};\n\nexports.default = StartChatButton;\nmodule.exports = exports['default'];\n//# sourceMappingURL=StartChatButton.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'ToolTipButton',\n\n getInitialState: function getInitialState() {\n return {\n hover: false\n };\n },\n\n onMouseOver: function onMouseOver() {\n this.setState({\n hover: true\n });\n },\n\n onMouseOut: function onMouseOut() {\n this.setState({\n hover: false\n });\n },\n\n render: function render() {\n var RoomTooltip = _index2.default.getComponent(\"rooms.RoomTooltip\");\n var tip = this.state.hover ? _react2.default.createElement(RoomTooltip, {\n className: 'mx_ToolTipButton_container',\n tooltipClassName: 'mx_ToolTipButton_helpText',\n label: this.props.helpText\n }) : _react2.default.createElement('div', null);\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ToolTipButton', onMouseOver: this.onMouseOver, onMouseOut: this.onMouseOut },\n '?',\n tip\n );\n }\n});\n//# sourceMappingURL=ToolTipButton.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'TruncatedList',\n\n propTypes: {\n // The number of elements to show before truncating. If negative, no truncation is done.\n truncateAt: _propTypes2.default.number,\n // The className to apply to the wrapping div\n className: _propTypes2.default.string,\n // A function that returns the children to be rendered into the element.\n // function getChildren(start: number, end: number): Array<React.Node>\n // The start element is included, the end is not (as in `slice`).\n // If omitted, the React child elements will be used. This parameter can be used\n // to avoid creating unnecessary React elements.\n getChildren: _propTypes2.default.func,\n // A function that should return the total number of child element available.\n // Required if getChildren is supplied.\n getChildCount: _propTypes2.default.func,\n // A function which will be invoked when an overflow element is required.\n // This will be inserted after the children.\n createOverflowElement: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n truncateAt: 2,\n createOverflowElement: function createOverflowElement(overflowCount, totalCount) {\n return _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"And %(count)s more...\", { count: overflowCount })\n );\n }\n };\n },\n\n _getChildren: function _getChildren(start, end) {\n if (this.props.getChildren && this.props.getChildCount) {\n return this.props.getChildren(start, end);\n } else {\n // XXX: I'm not sure why anything would pass null into this, it seems\n // like a bizzare case to handle, but I'm preserving the behaviour.\n // (see commit 38d5c7d5c5d5a34dc16ef5d46278315f5c57f542)\n return _react2.default.Children.toArray(this.props.children).filter(function (c) {\n return c != null;\n }).slice(start, end);\n }\n },\n\n _getChildCount: function _getChildCount() {\n if (this.props.getChildren && this.props.getChildCount) {\n return this.props.getChildCount();\n } else {\n return _react2.default.Children.toArray(this.props.children).filter(function (c) {\n return c != null;\n }).length;\n }\n },\n\n render: function render() {\n var overflowNode = null;\n\n var totalChildren = this._getChildCount();\n var upperBound = totalChildren;\n if (this.props.truncateAt >= 0) {\n var overflowCount = totalChildren - this.props.truncateAt;\n if (overflowCount > 1) {\n overflowNode = this.props.createOverflowElement(overflowCount, totalChildren);\n upperBound = this.props.truncateAt;\n }\n }\n var childNodes = this._getChildren(0, upperBound);\n\n return _react2.default.createElement(\n 'div',\n { className: this.props.className },\n childNodes,\n overflowNode\n );\n }\n}); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=TruncatedList.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'UserSelector',\n\n propTypes: {\n onChange: _propTypes2.default.func,\n selected_users: _propTypes2.default.arrayOf(_react2.default.PropTypes.string)\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onChange: function onChange() {},\n selected: []\n };\n },\n\n addUser: function addUser(user_id) {\n if (this.props.selected_users.indexOf(user_id == -1)) {\n this.props.onChange(this.props.selected_users.concat([user_id]));\n }\n },\n\n removeUser: function removeUser(user_id) {\n this.props.onChange(this.props.selected_users.filter(function (e) {\n return e != user_id;\n }));\n },\n\n onAddUserId: function onAddUserId() {\n this.addUser(this.refs.user_id_input.value);\n this.refs.user_id_input.value = \"\";\n },\n\n render: function render() {\n var self = this;\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'ul',\n { className: 'mx_UserSelector_UserIdList', ref: 'list' },\n this.props.selected_users.map(function (user_id, i) {\n return _react2.default.createElement(\n 'li',\n { key: user_id },\n user_id,\n ' - ',\n _react2.default.createElement(\n 'span',\n { onClick: function onClick() {\n self.removeUser(user_id);\n } },\n 'X'\n )\n );\n })\n ),\n _react2.default.createElement('input', { type: 'text', ref: 'user_id_input', defaultValue: '', className: 'mx_UserSelector_userIdInput', placeholder: (0, _languageHandler._t)(\"ex. @bob:example.com\") }),\n _react2.default.createElement(\n 'button',\n { onClick: this.onAddUserId, className: 'mx_UserSelector_AddUserId' },\n (0, _languageHandler._t)(\"Add User\")\n )\n );\n }\n});\n//# sourceMappingURL=UserSelector.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Analytics = require('../../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar CookieBar = function (_React$Component) {\n (0, _inherits3.default)(CookieBar, _React$Component);\n\n function CookieBar() {\n (0, _classCallCheck3.default)(this, CookieBar);\n return (0, _possibleConstructorReturn3.default)(this, (CookieBar.__proto__ || (0, _getPrototypeOf2.default)(CookieBar)).call(this));\n }\n\n (0, _createClass3.default)(CookieBar, [{\n key: 'onUsageDataClicked',\n value: function onUsageDataClicked() {\n _Analytics2.default.showDetailsModal();\n }\n }, {\n key: 'onAccept',\n value: function onAccept() {\n _dispatcher2.default.dispatch({\n action: 'accept_cookies'\n });\n }\n }, {\n key: 'onReject',\n value: function onReject() {\n _dispatcher2.default.dispatch({\n action: 'reject_cookies'\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var toolbarClasses = \"mx_MatrixToolbar\";\n return _react2.default.createElement(\n 'div',\n { className: toolbarClasses },\n _react2.default.createElement('img', { className: 'mx_MatrixToolbar_warning', src: 'img/warning.svg', width: '24', height: '23', alt: '' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_content' },\n this.props.policyUrl ? (0, _languageHandler._t)(\"Please help improve Riot.im by sending <UsageDataLink>anonymous usage data</UsageDataLink>. \" + \"This will use a cookie \" + \"(please see our <PolicyLink>Cookie Policy</PolicyLink>).\", {}, {\n 'UsageDataLink': function UsageDataLink(sub) {\n return _react2.default.createElement(\n 'a',\n {\n className: 'mx_MatrixToolbar_link',\n href: 'javascript:;',\n onClick: _this2.onUsageDataClicked\n },\n sub\n );\n },\n // XXX: We need to link to the page that explains our cookies\n 'PolicyLink': function PolicyLink(sub) {\n return _react2.default.createElement(\n 'a',\n {\n className: 'mx_MatrixToolbar_link',\n target: '_blank',\n href: _this2.props.policyUrl\n },\n sub\n );\n }\n\n }) : (0, _languageHandler._t)(\"Please help improve Riot.im by sending <UsageDataLink>anonymous usage data</UsageDataLink>. \" + \"This will use a cookie.\", {}, {\n 'UsageDataLink': function UsageDataLink(sub) {\n return _react2.default.createElement(\n 'a',\n {\n className: 'mx_MatrixToolbar_link',\n href: 'javascript:;',\n onClick: _this2.onUsageDataClicked\n },\n sub\n );\n }\n })\n ),\n _react2.default.createElement(\n AccessibleButton,\n { element: 'button', className: 'mx_MatrixToolbar_action', onClick: this.onAccept },\n (0, _languageHandler._t)(\"Yes, I want to help!\")\n ),\n _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_MatrixToolbar_close', onClick: this.onReject },\n _react2.default.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18', alt: (0, _languageHandler._t)('Close') })\n )\n );\n }\n }]);\n return CookieBar;\n}(_react2.default.Component);\n\nCookieBar.propTypes = {\n policyUrl: _propTypes2.default.string\n};\nexports.default = CookieBar;\nmodule.exports = exports['default'];\n//# sourceMappingURL=CookieBar.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Notifier = require('../../../Notifier');\n\nvar _Notifier2 = _interopRequireDefault(_Notifier);\n\nvar _AccessibleButton = require('../../../components/views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MatrixToolbar',\n\n hideToolbar: function hideToolbar() {\n _Notifier2.default.setToolbarHidden(true);\n },\n\n onClick: function onClick() {\n _Notifier2.default.setEnabled(true);\n },\n\n render: function render() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar' },\n _react2.default.createElement('img', { className: 'mx_MatrixToolbar_warning', src: 'img/warning.svg', width: '24', height: '23' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_content' },\n (0, _languageHandler._t)('You are not receiving desktop notifications'),\n ' ',\n _react2.default.createElement(\n 'a',\n { className: 'mx_MatrixToolbar_link', onClick: this.onClick },\n ' ',\n (0, _languageHandler._t)('Enable them now')\n )\n ),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MatrixToolbar_close', onClick: this.hideToolbar },\n _react2.default.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18', alt: (0, _languageHandler._t)('Close') })\n )\n );\n }\n});\n//# sourceMappingURL=MatrixToolbar.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _PlatformPeg = require('../../../PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Check a version string is compatible with the Changelog\n * dialog ([vectorversion]-react-[react-sdk-version]-js-[js-sdk-version])\n */\nfunction checkVersion(ver) {\n var parts = ver.split('-');\n return parts.length == 5 && parts[1] == 'react' && parts[3] == 'js';\n}\n\nexports.default = _react2.default.createClass({\n displayName: 'NewVersionBar',\n\n propTypes: {\n version: _react2.default.PropTypes.string.isRequired,\n newVersion: _react2.default.PropTypes.string.isRequired,\n releaseNotes: _react2.default.PropTypes.string\n },\n\n displayReleaseNotes: function displayReleaseNotes(releaseNotes) {\n var QuestionDialog = _index2.default.getComponent('dialogs.QuestionDialog');\n _Modal2.default.createTrackedDialog('Display release notes', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"What's New\"),\n description: _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_changelog' },\n releaseNotes\n ),\n button: (0, _languageHandler._t)(\"Update\"),\n onFinished: function onFinished(update) {\n if (update && _PlatformPeg2.default.get()) {\n _PlatformPeg2.default.get().installUpdate();\n }\n }\n });\n },\n\n displayChangelog: function displayChangelog() {\n var ChangelogDialog = _index2.default.getComponent('dialogs.ChangelogDialog');\n _Modal2.default.createTrackedDialog('Display Changelog', '', ChangelogDialog, {\n version: this.props.version,\n newVersion: this.props.newVersion,\n onFinished: function onFinished(update) {\n if (update && _PlatformPeg2.default.get()) {\n _PlatformPeg2.default.get().installUpdate();\n }\n }\n });\n },\n\n onUpdateClicked: function onUpdateClicked() {\n _PlatformPeg2.default.get().installUpdate();\n },\n\n render: function render() {\n var action_button = void 0;\n // If we have release notes to display, we display them. Otherwise,\n // we display the Changelog Dialog which takes two versions and\n // automatically tells you what's changed (provided the versions\n // are in the right format)\n if (this.props.releaseNotes) {\n action_button = _react2.default.createElement(\n 'button',\n { className: 'mx_MatrixToolbar_action', onClick: this.displayReleaseNotes },\n (0, _languageHandler._t)(\"What's new?\")\n );\n } else if (checkVersion(this.props.version) && checkVersion(this.props.newVersion)) {\n action_button = _react2.default.createElement(\n 'button',\n { className: 'mx_MatrixToolbar_action', onClick: this.displayChangelog },\n (0, _languageHandler._t)(\"What's new?\")\n );\n } else if (_PlatformPeg2.default.get()) {\n action_button = _react2.default.createElement(\n 'button',\n { className: 'mx_MatrixToolbar_action', onClick: this.onUpdateClicked },\n (0, _languageHandler._t)(\"Update\")\n );\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar' },\n _react2.default.createElement('img', { className: 'mx_MatrixToolbar_warning', src: 'img/warning.svg', width: '24', height: '23' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_content' },\n (0, _languageHandler._t)(\"A new version of Riot is available.\")\n ),\n action_button\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=NewVersionBar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'PasswordNagBar',\n\n onUpdateClicked: function onUpdateClicked() {\n var SetPasswordDialog = _index2.default.getComponent('dialogs.SetPasswordDialog');\n _Modal2.default.createTrackedDialog('Set Password Dialog', 'Password Nag Bar', SetPasswordDialog);\n },\n\n render: function render() {\n var toolbarClasses = \"mx_MatrixToolbar mx_MatrixToolbar_clickable\";\n return _react2.default.createElement(\n 'div',\n { className: toolbarClasses, onClick: this.onUpdateClicked },\n _react2.default.createElement('img', { className: 'mx_MatrixToolbar_warning',\n src: 'img/warning.svg',\n width: '24',\n height: '23',\n alt: ''\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_content' },\n (0, _languageHandler._t)(\"To return to your account in future you need to <u>set a password</u>\", {}, { 'u': function u(sub) {\n return _react2.default.createElement(\n 'u',\n null,\n sub\n );\n } })\n ),\n _react2.default.createElement(\n 'button',\n { className: 'mx_MatrixToolbar_action' },\n (0, _languageHandler._t)(\"Set Password\")\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=PasswordNagBar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _ErrorUtils = require('../../../utils/ErrorUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'ServerLimitBar',\n\n propTypes: {\n // 'hard' if the logged in user has been locked out, 'soft' if they haven't\n kind: _propTypes2.default.string,\n adminContact: _propTypes2.default.string,\n // The type of limit that has been hit.\n limitType: _propTypes2.default.string.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n kind: 'hard'\n };\n },\n\n render: function render() {\n var toolbarClasses = {\n 'mx_MatrixToolbar': true\n };\n\n var adminContact = void 0;\n var limitError = void 0;\n if (this.props.kind === 'hard') {\n toolbarClasses['mx_MatrixToolbar_error'] = true;\n\n adminContact = (0, _ErrorUtils.messageForResourceLimitError)(this.props.limitType, this.props.adminContact, {\n '': (0, _languageHandler._td)(\"Please <a>contact your service administrator</a> to continue using the service.\")\n });\n limitError = (0, _ErrorUtils.messageForResourceLimitError)(this.props.limitType, this.props.adminContact, {\n 'monthly_active_user': (0, _languageHandler._td)(\"This homeserver has hit its Monthly Active User limit.\"),\n '': (0, _languageHandler._td)(\"This homeserver has exceeded one of its resource limits.\")\n });\n } else {\n toolbarClasses['mx_MatrixToolbar_info'] = true;\n adminContact = (0, _ErrorUtils.messageForResourceLimitError)(this.props.limitType, this.props.adminContact, {\n '': (0, _languageHandler._td)(\"Please <a>contact your service administrator</a> to get this limit increased.\")\n });\n limitError = (0, _ErrorUtils.messageForResourceLimitError)(this.props.limitType, this.props.adminContact, {\n 'monthly_active_user': (0, _languageHandler._td)(\"This homeserver has hit its Monthly Active User limit so \" + \"<b>some users will not be able to log in</b>.\"),\n '': (0, _languageHandler._td)(\"This homeserver has exceeded one of its resource limits so \" + \"<b>some users will not be able to log in</b>.\")\n }, { 'b': function b(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n sub\n );\n } });\n }\n return _react2.default.createElement(\n 'div',\n { className: (0, _classnames2.default)(toolbarClasses) },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_content' },\n limitError,\n ' ',\n adminContact\n )\n );\n }\n}); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=ServerLimitBar.js.map","/*\nCopyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _PlatformPeg = require('../../../PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _AccessibleButton = require('../../../components/views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'UpdateCheckBar',\n\n propTypes: {\n status: _react2.default.PropTypes.string.isRequired,\n // Currently for error detail but will be usable for download progress\n // once that is a thing that squirrel passes through electron.\n detail: _react2.default.PropTypes.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n detail: ''\n };\n },\n\n getStatusText: function getStatusText() {\n // we can't import the enum from riot-web as we don't want matrix-react-sdk\n // to depend on riot-web. so we grab it as a normal object via API instead.\n var updateCheckStatusEnum = _PlatformPeg2.default.get().getUpdateCheckStatusEnum();\n switch (this.props.status) {\n case updateCheckStatusEnum.ERROR:\n return (0, _languageHandler._t)('Error encountered (%(errorDetail)s).', { errorDetail: this.props.detail });\n case updateCheckStatusEnum.CHECKING:\n return (0, _languageHandler._t)('Checking for an update...');\n case updateCheckStatusEnum.NOTAVAILABLE:\n return (0, _languageHandler._t)('No update available.');\n case updateCheckStatusEnum.DOWNLOADING:\n return (0, _languageHandler._t)('Downloading update...');\n }\n },\n\n hideToolbar: function hideToolbar() {\n _PlatformPeg2.default.get().stopUpdateCheck();\n },\n\n render: function render() {\n var message = this.getStatusText();\n var warning = (0, _languageHandler._t)('Warning');\n\n if (!('getUpdateCheckStatusEnum' in _PlatformPeg2.default.get())) {\n return _react2.default.createElement('div', null);\n }\n\n var updateCheckStatusEnum = _PlatformPeg2.default.get().getUpdateCheckStatusEnum();\n var doneStatuses = [updateCheckStatusEnum.ERROR, updateCheckStatusEnum.NOTAVAILABLE];\n\n var image = void 0;\n if (doneStatuses.includes(this.props.status)) {\n image = _react2.default.createElement('img', { className: 'mx_MatrixToolbar_warning', src: 'img/warning.svg', width: '24', height: '23', alt: '' });\n } else {\n image = _react2.default.createElement('img', { className: 'mx_MatrixToolbar_warning', src: 'img/spinner.gif', width: '24', height: '23', alt: '' });\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar' },\n image,\n _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_content' },\n message\n ),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MatrixToolbar_close', onClick: this.hideToolbar },\n _react2.default.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18', alt: (0, _languageHandler._t)('Close') })\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=UpdateCheckBar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _ContextualMenu = require('../../structures/ContextualMenu');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'GroupInviteTile',\n\n propTypes: {\n group: _propTypes2.default.object.isRequired\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getInitialState: function getInitialState() {\n return {\n hover: false,\n badgeHover: false,\n menuDisplayed: false,\n selected: this.props.group.groupId === null // XXX: this needs linking to LoggedInView/GroupView state\n };\n },\n\n onClick: function onClick(e) {\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: this.props.group.groupId\n });\n },\n\n onMouseEnter: function onMouseEnter() {\n var state = { hover: true };\n // Only allow non-guests to access the context menu\n if (!this.context.matrixClient.isGuest()) {\n state.badgeHover = true;\n }\n this.setState(state);\n },\n\n onMouseLeave: function onMouseLeave() {\n this.setState({\n badgeHover: false,\n hover: false\n });\n },\n\n _showContextMenu: function _showContextMenu(x, y, chevronOffset) {\n var _this = this;\n\n var GroupInviteTileContextMenu = _index2.default.getComponent('context_menus.GroupInviteTileContextMenu');\n\n (0, _ContextualMenu.createMenu)(GroupInviteTileContextMenu, {\n chevronOffset: chevronOffset,\n left: x,\n top: y,\n group: this.props.group,\n onFinished: function onFinished() {\n _this.setState({ menuDisplayed: false });\n }\n });\n this.setState({ menuDisplayed: true });\n },\n\n onContextMenu: function onContextMenu(e) {\n // Prevent the RoomTile onClick event firing as well\n e.preventDefault();\n // Only allow non-guests to access the context menu\n if (_MatrixClientPeg2.default.get().isGuest()) return;\n\n var chevronOffset = 12;\n this._showContextMenu(e.clientX, e.clientY - (chevronOffset + 8), chevronOffset);\n },\n\n onBadgeClicked: function onBadgeClicked(e) {\n // Prevent the RoomTile onClick event firing as well\n e.stopPropagation();\n // Only allow non-guests to access the context menu\n if (_MatrixClientPeg2.default.get().isGuest()) return;\n\n // If the badge is clicked, then no longer show tooltip\n if (this.props.collapsed) {\n this.setState({ hover: false });\n }\n\n var elementRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = elementRect.right + window.pageXOffset + 3;\n var chevronOffset = 12;\n var y = elementRect.top + elementRect.height / 2 + window.pageYOffset;\n y = y - (chevronOffset + 8); // where 8 is half the height of the chevron\n\n this._showContextMenu(x, y, chevronOffset);\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n\n var groupName = this.props.group.name || this.props.group.groupId;\n var httpAvatarUrl = this.props.group.avatarUrl ? this.context.matrixClient.mxcUrlToHttp(this.props.group.avatarUrl, 24, 24) : null;\n\n var av = _react2.default.createElement(BaseAvatar, { name: groupName, width: 24, height: 24, url: httpAvatarUrl });\n\n var nameClasses = (0, _classnames2.default)('mx_RoomTile_name mx_RoomTile_invite mx_RoomTile_badgeShown', {\n 'mx_RoomTile_badgeShown': this.state.badgeHover || this.state.menuDisplayed\n });\n\n var label = _react2.default.createElement(\n EmojiText,\n { element: 'div', title: this.props.group.groupId, className: nameClasses, dir: 'auto' },\n groupName\n );\n\n var badgeEllipsis = this.state.badgeHover || this.state.menuDisplayed;\n var badgeClasses = (0, _classnames2.default)('mx_RoomTile_badge mx_RoomTile_highlight', {\n 'mx_RoomTile_badgeButton': badgeEllipsis\n });\n\n var badgeContent = badgeEllipsis ? '\\xB7\\xB7\\xB7' : '!';\n var badge = _react2.default.createElement(\n 'div',\n { className: badgeClasses, onClick: this.onBadgeClicked },\n badgeContent\n );\n\n var tooltip = void 0;\n if (this.props.collapsed && this.state.hover) {\n var RoomTooltip = _index2.default.getComponent(\"rooms.RoomTooltip\");\n tooltip = _react2.default.createElement(RoomTooltip, { className: 'mx_RoomTile_tooltip', label: groupName, dir: 'auto' });\n }\n\n var classes = (0, _classnames2.default)('mx_RoomTile mx_RoomTile_highlight', {\n 'mx_RoomTile_menuDisplayed': this.state.menuDisplayed,\n 'mx_RoomTile_selected': this.state.selected\n });\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { className: classes,\n onClick: this.onClick,\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave,\n onContextMenu: this.onContextMenu\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_avatar' },\n av\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_nameContainer' },\n label,\n badge\n ),\n tooltip\n );\n }\n}); /*\n Copyright 2017, 2018 New Vector Ltd\n Copyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupInviteTile.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _groups = require('../../../groups');\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'GroupMemberInfo',\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n propTypes: {\n groupId: _propTypes2.default.string,\n groupMember: _groups.GroupMemberType,\n isInvited: _propTypes2.default.bool\n },\n\n getInitialState: function getInitialState() {\n return {\n removingUser: false,\n isUserPrivilegedInGroup: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n this._initGroupStore(this.props.groupId);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n if (newProps.groupId !== this.props.groupId) {\n this._unregisterGroupStore(this.props.groupId);\n this._initGroupStore(newProps.groupId);\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n this._unregisterGroupStore(this.props.groupId);\n },\n _initGroupStore: function _initGroupStore(groupId) {\n _GroupStore2.default.registerListener(groupId, this.onGroupStoreUpdated);\n },\n _unregisterGroupStore: function _unregisterGroupStore(groupId) {\n _GroupStore2.default.unregisterListener(this.onGroupStoreUpdated);\n },\n\n\n onGroupStoreUpdated: function onGroupStoreUpdated() {\n var _this = this;\n\n if (this._unmounted) return;\n this.setState({\n isUserInvited: _GroupStore2.default.getGroupInvitedMembers(this.props.groupId).some(function (m) {\n return m.userId === _this.props.groupMember.userId;\n }),\n isUserPrivilegedInGroup: _GroupStore2.default.isUserPrivileged(this.props.groupId)\n });\n },\n\n _onKick: function _onKick() {\n var _this2 = this;\n\n var ConfirmUserActionDialog = _index2.default.getComponent(\"dialogs.ConfirmUserActionDialog\");\n _Modal2.default.createDialog(ConfirmUserActionDialog, {\n matrixClient: this.context.matrixClient,\n groupMember: this.props.groupMember,\n action: this.state.isUserInvited ? (0, _languageHandler._t)('Disinvite') : (0, _languageHandler._t)('Remove from community'),\n title: this.state.isUserInvited ? (0, _languageHandler._t)('Disinvite this user from community?') : (0, _languageHandler._t)('Remove this user from community?'),\n danger: true,\n onFinished: function onFinished(proceed) {\n if (!proceed) return;\n\n _this2.setState({ removingUser: true });\n _this2.context.matrixClient.removeUserFromGroup(_this2.props.groupId, _this2.props.groupMember.userId).then(function () {\n // return to the user list\n _dispatcher2.default.dispatch({\n action: \"view_user\",\n member: null\n });\n }).catch(function (e) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to remove user from group', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: _this2.state.isUserInvited ? (0, _languageHandler._t)('Failed to withdraw invitation') : (0, _languageHandler._t)('Failed to remove user from community')\n });\n }).finally(function () {\n _this2.setState({ removingUser: false });\n });\n }\n });\n },\n\n _onCancel: function _onCancel(e) {\n // Go back to the user list\n _dispatcher2.default.dispatch({\n action: \"view_user\",\n member: null\n });\n },\n\n onRoomTileClick: function onRoomTileClick(roomId) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: roomId\n });\n },\n\n\n render: function render() {\n if (this.state.removingUser) {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n var adminTools = void 0;\n if (this.state.isUserPrivilegedInGroup) {\n var kickButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_field',\n onClick: this._onKick },\n this.state.isUserInvited ? (0, _languageHandler._t)('Disinvite') : (0, _languageHandler._t)('Remove from community')\n );\n\n // No make/revoke admin API yet\n /*const opLabel = this.state.isTargetMod ? _t(\"Revoke Moderator\") : _t(\"Make Moderator\");\n giveModButton = <AccessibleButton className=\"mx_MemberInfo_field\" onClick={this.onModToggle}>\n {giveOpLabel}\n </AccessibleButton>;*/\n\n if (kickButton) {\n adminTools = _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_adminTools' },\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Admin Tools\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_buttons' },\n kickButton\n )\n );\n }\n }\n\n var avatarUrl = this.context.matrixClient.mxcUrlToHttp(this.props.groupMember.avatarUrl, 36, 36, 'crop');\n\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var avatar = _react2.default.createElement(BaseAvatar, { name: this.props.groupMember.userId, width: 36, height: 36,\n url: avatarUrl\n });\n\n var groupMemberName = this.props.groupMember.displayname || this.props.groupMember.userId;\n\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var GeminiScrollbarWrapper = _index2.default.getComponent('elements.GeminiScrollbarWrapper');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo' },\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_cancel', onClick: this._onCancel },\n _react2.default.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18', className: 'mx_filterFlipColor' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_avatar' },\n avatar\n ),\n _react2.default.createElement(\n EmojiText,\n { element: 'h2' },\n groupMemberName\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profile' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profileField' },\n this.props.groupMember.userId\n )\n ),\n adminTools\n )\n );\n }\n});\n//# sourceMappingURL=GroupMemberInfo.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar INITIAL_LOAD_NUM_MEMBERS = 30; /*\n Copyright 2017 Vector Creations Ltd.\n Copyright 2017 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nexports.default = _react2.default.createClass({\n displayName: 'GroupMemberList',\n\n propTypes: {\n groupId: _propTypes2.default.string.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n members: null,\n membersError: null,\n invitedMembers: null,\n invitedMembersError: null,\n truncateAt: INITIAL_LOAD_NUM_MEMBERS\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n this._initGroupStore(this.props.groupId);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n _initGroupStore: function _initGroupStore(groupId) {\n var _this = this;\n\n _GroupStore2.default.registerListener(groupId, function () {\n _this._fetchMembers();\n });\n _GroupStore2.default.on('error', function (err, errorGroupId, stateKey) {\n if (_this._unmounted || groupId !== errorGroupId) return;\n if (stateKey === _GroupStore2.default.STATE_KEY.GroupMembers) {\n _this.setState({\n membersError: err\n });\n }\n if (stateKey === _GroupStore2.default.STATE_KEY.GroupInvitedMembers) {\n _this.setState({\n invitedMembersError: err\n });\n }\n });\n },\n\n _fetchMembers: function _fetchMembers() {\n if (this._unmounted) return;\n this.setState({\n members: _GroupStore2.default.getGroupMembers(this.props.groupId),\n invitedMembers: _GroupStore2.default.getGroupInvitedMembers(this.props.groupId)\n });\n },\n\n _createOverflowTile: function _createOverflowTile(overflowCount, totalCount) {\n // For now we'll pretend this is any entity. It should probably be a separate tile.\n var EntityTile = _index2.default.getComponent(\"rooms.EntityTile\");\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n var text = (0, _languageHandler._t)(\"and %(count)s others...\", { count: overflowCount });\n return _react2.default.createElement(EntityTile, { className: 'mx_EntityTile_ellipsis', avatarJsx: _react2.default.createElement(BaseAvatar, { url: 'img/ellipsis.svg', name: '...', width: 36, height: 36 }), name: text, presenceState: 'online', suppressOnHover: true,\n onClick: this._showFullMemberList });\n },\n\n _showFullMemberList: function _showFullMemberList() {\n this.setState({\n truncateAt: -1\n });\n },\n\n onSearchQueryChanged: function onSearchQueryChanged(ev) {\n this.setState({ searchQuery: ev.target.value });\n },\n\n makeGroupMemberTiles: function makeGroupMemberTiles(query, memberList, memberListError) {\n var _this2 = this;\n\n if (memberListError) {\n return _react2.default.createElement(\n 'div',\n { className: 'warning' },\n (0, _languageHandler._t)(\"Failed to load group members\")\n );\n }\n\n var GroupMemberTile = _index2.default.getComponent(\"groups.GroupMemberTile\");\n var TruncatedList = _index2.default.getComponent(\"elements.TruncatedList\");\n query = (query || \"\").toLowerCase();\n if (query) {\n memberList = memberList.filter(function (m) {\n var matchesName = (m.displayname || \"\").toLowerCase().includes(query);\n var matchesId = m.userId.toLowerCase().includes(query);\n\n if (!matchesName && !matchesId) {\n return false;\n }\n\n return true;\n });\n }\n\n var uniqueMembers = {};\n memberList.forEach(function (m) {\n if (!uniqueMembers[m.userId]) uniqueMembers[m.userId] = m;\n });\n memberList = (0, _keys2.default)(uniqueMembers).map(function (userId) {\n return uniqueMembers[userId];\n });\n // Descending sort on isPrivileged = true = 1 to isPrivileged = false = 0\n memberList.sort(function (a, b) {\n if (a.isPrivileged === b.isPrivileged) {\n var aName = a.displayname || a.userId;\n var bName = b.displayname || b.userId;\n if (aName < bName) {\n return -1;\n } else if (aName > bName) {\n return 1;\n } else {\n return 0;\n }\n } else {\n return a.isPrivileged ? -1 : 1;\n }\n });\n\n var memberTiles = memberList.map(function (m) {\n return _react2.default.createElement(GroupMemberTile, { key: m.userId, groupId: _this2.props.groupId, member: m });\n });\n\n return _react2.default.createElement(\n TruncatedList,\n { className: 'mx_MemberList_wrapper', truncateAt: this.state.truncateAt,\n createOverflowElement: this._createOverflowTile\n },\n memberTiles\n );\n },\n\n render: function render() {\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n if (this.state.fetching || this.state.fetchingInvitedMembers) {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n var inputBox = _react2.default.createElement(\n 'form',\n { autoComplete: 'off' },\n _react2.default.createElement('input', { className: 'mx_GroupMemberList_query', id: 'mx_GroupMemberList_query', type: 'text',\n onChange: this.onSearchQueryChanged, value: this.state.searchQuery,\n placeholder: (0, _languageHandler._t)('Filter community members') })\n );\n\n var joined = this.state.members ? _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList_joined' },\n this.makeGroupMemberTiles(this.state.searchQuery, this.state.members, this.state.membersError)\n ) : _react2.default.createElement('div', null);\n\n var invited = this.state.invitedMembers && this.state.invitedMembers.length > 0 ? _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList_invited' },\n _react2.default.createElement(\n 'h2',\n null,\n (0, _languageHandler._t)(\"Invited\")\n ),\n this.makeGroupMemberTiles(this.state.searchQuery, this.state.invitedMembers, this.state.invitedMembersError)\n ) : _react2.default.createElement('div', null);\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList' },\n inputBox,\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true },\n joined,\n invited\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupMemberList.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _groups = require('../../../groups');\n\nvar _withMatrixClient = require('../../../wrappers/withMatrixClient');\n\nvar _withMatrixClient2 = _interopRequireDefault(_withMatrixClient);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = (0, _withMatrixClient2.default)(_react2.default.createClass({\n displayName: 'GroupMemberTile',\n\n propTypes: {\n matrixClient: _propTypes2.default.object,\n groupId: _propTypes2.default.string.isRequired,\n member: _groups.GroupMemberType.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {};\n },\n\n onClick: function onClick(e) {\n _dispatcher2.default.dispatch({\n action: 'view_group_user',\n member: this.props.member,\n groupId: this.props.groupId\n });\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var EntityTile = _index2.default.getComponent('rooms.EntityTile');\n\n var name = this.props.member.displayname || this.props.member.userId;\n var avatarUrl = this.props.matrixClient.mxcUrlToHttp(this.props.member.avatarUrl, 36, 36, 'crop');\n\n var av = _react2.default.createElement(BaseAvatar, { name: this.props.member.userId,\n width: 36, height: 36,\n url: avatarUrl\n });\n\n return _react2.default.createElement(EntityTile, { name: name, avatarJsx: av, onClick: this.onClick,\n suppressOnHover: true, presenceState: 'online',\n powerStatus: this.props.member.isPrivileged ? EntityTile.POWER_STATUS_ADMIN : null\n });\n }\n}));\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupMemberTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _languageHandler = require('../../../languageHandler.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'GroupPublicityToggle',\n\n propTypes: {\n groupId: _propTypes2.default.string.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n busy: false,\n ready: false,\n isGroupPublicised: null\n };\n },\n\n\n componentWillMount: function componentWillMount() {\n this._initGroupStore(this.props.groupId);\n },\n\n _initGroupStore: function _initGroupStore(groupId) {\n var _this = this;\n\n this._groupStoreToken = _GroupStore2.default.registerListener(groupId, function () {\n _this.setState({\n isGroupPublicised: _GroupStore2.default.getGroupPublicity(groupId),\n ready: _GroupStore2.default.isStateReady(groupId, _GroupStore2.default.STATE_KEY.Summary)\n });\n });\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (this._groupStoreToken) this._groupStoreToken.unregister();\n },\n\n\n _onPublicityToggle: function _onPublicityToggle(e) {\n var _this2 = this;\n\n e.stopPropagation();\n this.setState({\n busy: true,\n // Optimistic early update\n isGroupPublicised: !this.state.isGroupPublicised\n });\n _GroupStore2.default.setGroupPublicity(this.props.groupId, !this.state.isGroupPublicised).then(function () {\n _this2.setState({\n busy: false\n });\n });\n },\n\n render: function render() {\n var GroupTile = _index2.default.getComponent('groups.GroupTile');\n var input = _react2.default.createElement('input', { type: 'checkbox',\n onChange: this._onPublicityToggle,\n checked: this.state.isGroupPublicised\n });\n var labelText = !this.state.ready ? (0, _languageHandler._t)(\"Loading...\") : this.state.isGroupPublicised ? (0, _languageHandler._t)(\"Flair will appear if enabled in room settings\") : (0, _languageHandler._t)(\"Flair will not appear\");\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupPublicity_toggle' },\n _react2.default.createElement(GroupTile, { groupId: this.props.groupId, showDescription: false, avatarHeight: 40 }),\n _react2.default.createElement(\n 'label',\n { onClick: this._onPublicityToggle },\n input,\n labelText\n )\n );\n }\n}); /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupPublicityToggle.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'GroupRoomInfo',\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n propTypes: {\n groupId: _propTypes2.default.string,\n groupRoomId: _propTypes2.default.string\n },\n\n getInitialState: function getInitialState() {\n return {\n isUserPrivilegedInGroup: null,\n groupRoom: null,\n groupRoomPublicityLoading: false,\n groupRoomRemoveLoading: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._initGroupStore(this.props.groupId);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n if (newProps.groupId !== this.props.groupId) {\n this._unregisterGroupStore(this.props.groupId);\n this._initGroupStore(newProps.groupId);\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n this._unregisterGroupStore(this.props.groupId);\n },\n _initGroupStore: function _initGroupStore(groupId) {\n _GroupStore2.default.registerListener(groupId, this.onGroupStoreUpdated);\n },\n _unregisterGroupStore: function _unregisterGroupStore(groupId) {\n _GroupStore2.default.unregisterListener(this.onGroupStoreUpdated);\n },\n _updateGroupRoom: function _updateGroupRoom() {\n var _this = this;\n\n this.setState({\n groupRoom: _GroupStore2.default.getGroupRooms(this.props.groupId).find(function (r) {\n return r.roomId === _this.props.groupRoomId;\n })\n });\n },\n\n\n onGroupStoreUpdated: function onGroupStoreUpdated() {\n this.setState({\n isUserPrivilegedInGroup: _GroupStore2.default.isUserPrivileged(this.props.groupId)\n });\n this._updateGroupRoom();\n },\n\n _onRemove: function _onRemove(e) {\n var _this2 = this;\n\n var groupId = this.props.groupId;\n var roomName = this.state.groupRoom.displayname;\n e.preventDefault();\n e.stopPropagation();\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('Confirm removal of group from room', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Are you sure you want to remove '%(roomName)s' from %(groupId)s?\", { roomName: roomName, groupId: groupId }),\n description: (0, _languageHandler._t)(\"Removing a room from the community will also remove it from the community page.\"),\n button: (0, _languageHandler._t)(\"Remove\"),\n onFinished: function onFinished(proceed) {\n if (!proceed) return;\n _this2.setState({ groupRoomRemoveLoading: true });\n var groupId = _this2.props.groupId;\n var roomId = _this2.props.groupRoomId;\n _GroupStore2.default.removeRoomFromGroup(_this2.props.groupId, roomId).then(function () {\n _dispatcher2.default.dispatch({\n action: \"view_group_room_list\"\n });\n }).catch(function (err) {\n console.error('Error whilst removing ' + roomId + ' from ' + groupId, err);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to remove room from group', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to remove room from community\"),\n description: (0, _languageHandler._t)(\"Failed to remove '%(roomName)s' from %(groupId)s\", { groupId: groupId, roomName: roomName })\n });\n }).finally(function () {\n _this2.setState({ groupRoomRemoveLoading: false });\n });\n }\n });\n },\n\n _onCancel: function _onCancel(e) {\n _dispatcher2.default.dispatch({\n action: \"view_group_room_list\"\n });\n },\n\n _changeGroupRoomPublicity: function _changeGroupRoomPublicity(e) {\n var _this3 = this;\n\n var isPublic = e.target.value === \"public\";\n this.setState({\n groupRoomPublicityLoading: true\n });\n var groupId = this.props.groupId;\n var roomId = this.props.groupRoomId;\n var roomName = this.state.groupRoom.displayname;\n _GroupStore2.default.updateGroupRoomVisibility(this.props.groupId, roomId, isPublic).catch(function (err) {\n console.error('Error whilst changing visibility of ' + roomId + ' in ' + groupId + ' to ' + isPublic, err);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to remove room from group', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Something went wrong!\"),\n description: (0, _languageHandler._t)(\"The visibility of '%(roomName)s' in %(groupId)s could not be updated.\", { roomName: roomName, groupId: groupId })\n });\n }).finally(function () {\n _this3.setState({\n groupRoomPublicityLoading: false\n });\n });\n },\n\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var InlineSpinner = _index2.default.getComponent('elements.InlineSpinner');\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n if (this.state.groupRoomRemoveLoading || !this.state.groupRoom) {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n var adminTools = void 0;\n if (this.state.isUserPrivilegedInGroup) {\n adminTools = _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_adminTools' },\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Admin Tools\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_buttons' },\n _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_MemberInfo_field', onClick: this._onRemove },\n (0, _languageHandler._t)('Remove from community')\n )\n ),\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Visibility in Room List'),\n this.state.groupRoomPublicityLoading ? _react2.default.createElement(InlineSpinner, null) : _react2.default.createElement('div', null)\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio',\n value: 'public',\n checked: this.state.groupRoom.isPublic,\n onClick: this._changeGroupRoomPublicity\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_label_text' },\n (0, _languageHandler._t)('Visible to everyone')\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio',\n value: 'private',\n checked: !this.state.groupRoom.isPublic,\n onClick: this._changeGroupRoomPublicity\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_label_text' },\n (0, _languageHandler._t)('Only visible to community members')\n )\n )\n )\n );\n }\n\n var avatarUrl = this.context.matrixClient.mxcUrlToHttp(this.state.groupRoom.avatarUrl, 36, 36, 'crop');\n\n var groupRoomName = this.state.groupRoom.displayname;\n var avatar = _react2.default.createElement(BaseAvatar, { name: groupRoomName, width: 36, height: 36, url: avatarUrl });\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo' },\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true },\n _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_MemberInfo_cancel', onClick: this._onCancel },\n _react2.default.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18', className: 'mx_filterFlipColor' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_avatar' },\n avatar\n ),\n _react2.default.createElement(\n EmojiText,\n { element: 'h2' },\n groupRoomName\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profile' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profileField' },\n this.state.groupRoom.canonical_alias\n )\n ),\n adminTools\n )\n );\n }\n});\n//# sourceMappingURL=GroupRoomInfo.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar INITIAL_LOAD_NUM_ROOMS = 30; /*\n Copyright 2017 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nexports.default = _react2.default.createClass({\n displayName: 'GroupRoomList',\n\n propTypes: {\n groupId: _propTypes2.default.string.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n rooms: null,\n truncateAt: INITIAL_LOAD_NUM_ROOMS,\n searchQuery: \"\"\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n this._initGroupStore(this.props.groupId);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n this._unregisterGroupStore();\n },\n _unregisterGroupStore: function _unregisterGroupStore() {\n _GroupStore2.default.unregisterListener(this.onGroupStoreUpdated);\n },\n\n\n _initGroupStore: function _initGroupStore(groupId) {\n var _this = this;\n\n _GroupStore2.default.registerListener(groupId, this.onGroupStoreUpdated);\n // XXX: This should be more fluxy - let's get the error from GroupStore .getError or something\n // XXX: This is also leaked - we should remove it when unmounting\n _GroupStore2.default.on('error', function (err, errorGroupId) {\n if (errorGroupId !== groupId) return;\n _this.setState({\n rooms: null\n });\n });\n },\n\n onGroupStoreUpdated: function onGroupStoreUpdated() {\n if (this._unmounted) return;\n this.setState({\n rooms: _GroupStore2.default.getGroupRooms(this.props.groupId)\n });\n },\n\n _createOverflowTile: function _createOverflowTile(overflowCount, totalCount) {\n // For now we'll pretend this is any entity. It should probably be a separate tile.\n var EntityTile = _index2.default.getComponent(\"rooms.EntityTile\");\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n var text = (0, _languageHandler._t)(\"and %(count)s others...\", { count: overflowCount });\n return _react2.default.createElement(EntityTile, { className: 'mx_EntityTile_ellipsis', avatarJsx: _react2.default.createElement(BaseAvatar, { url: 'img/ellipsis.svg', name: '...', width: 36, height: 36 }), name: text, presenceState: 'online', suppressOnHover: true,\n onClick: this._showFullRoomList });\n },\n\n _showFullRoomList: function _showFullRoomList() {\n this.setState({\n truncateAt: -1\n });\n },\n\n onSearchQueryChanged: function onSearchQueryChanged(ev) {\n this.setState({ searchQuery: ev.target.value });\n },\n\n makeGroupRoomTiles: function makeGroupRoomTiles(query) {\n var _this2 = this;\n\n var GroupRoomTile = _index2.default.getComponent(\"groups.GroupRoomTile\");\n query = (query || \"\").toLowerCase();\n\n var roomList = this.state.rooms;\n if (query) {\n roomList = roomList.filter(function (room) {\n var matchesName = (room.name || \"\").toLowerCase().includes(query);\n var matchesAlias = (room.canonicalAlias || \"\").toLowerCase().includes(query);\n return matchesName || matchesAlias;\n });\n }\n\n roomList = roomList.map(function (groupRoom, index) {\n return _react2.default.createElement(GroupRoomTile, {\n key: index,\n groupId: _this2.props.groupId,\n groupRoom: groupRoom });\n });\n\n return roomList;\n },\n\n render: function render() {\n if (this.state.rooms === null) {\n return null;\n }\n\n var inputBox = _react2.default.createElement(\n 'form',\n { autoComplete: 'off' },\n _react2.default.createElement('input', { className: 'mx_GroupRoomList_query', id: 'mx_GroupRoomList_query', type: 'text',\n onChange: this.onSearchQueryChanged, value: this.state.searchQuery,\n placeholder: (0, _languageHandler._t)('Filter community rooms') })\n );\n\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n var TruncatedList = _index2.default.getComponent(\"elements.TruncatedList\");\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupRoomList' },\n inputBox,\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true, className: 'mx_GroupRoomList_joined mx_GroupRoomList_outerWrapper' },\n _react2.default.createElement(\n TruncatedList,\n { className: 'mx_GroupRoomList_wrapper', truncateAt: this.state.truncateAt,\n createOverflowElement: this._createOverflowTile },\n this.makeGroupRoomTiles(this.state.searchQuery)\n )\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupRoomList.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _groups = require('../../../groups');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar GroupRoomTile = _react2.default.createClass({\n displayName: 'GroupRoomTile',\n\n propTypes: {\n groupId: _propTypes2.default.string.isRequired,\n groupRoom: _groups.GroupRoomType.isRequired\n },\n\n onClick: function onClick(e) {\n _dispatcher2.default.dispatch({\n action: 'view_group_room',\n groupId: this.props.groupId,\n groupRoomId: this.props.groupRoom.roomId\n });\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var avatarUrl = this.context.matrixClient.mxcUrlToHttp(this.props.groupRoom.avatarUrl, 36, 36, 'crop');\n\n var av = _react2.default.createElement(BaseAvatar, { name: this.props.groupRoom.displayname,\n width: 36, height: 36,\n url: avatarUrl\n });\n\n return _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_GroupRoomTile', onClick: this.onClick },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupRoomTile_avatar' },\n av\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupRoomTile_name' },\n this.props.groupRoom.displayname\n )\n );\n }\n});\n\nGroupRoomTile.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n};\n\nexports.default = GroupRoomTile;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupRoomTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _reactBeautifulDnd = require('react-beautiful-dnd');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _FlairStore = require('../../../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction nop() {} /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar GroupTile = _react2.default.createClass({\n displayName: 'GroupTile',\n\n propTypes: {\n groupId: _propTypes2.default.string.isRequired,\n // Whether to show the short description of the group on the tile\n showDescription: _propTypes2.default.bool,\n // Height of the group avatar in pixels\n avatarHeight: _propTypes2.default.number\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n profile: null\n };\n },\n getDefaultProps: function getDefaultProps() {\n return {\n showDescription: true,\n avatarHeight: 50\n };\n },\n\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n _FlairStore2.default.getGroupProfileCached(this.context.matrixClient, this.props.groupId).then(function (profile) {\n _this.setState({ profile: profile });\n }).catch(function (err) {\n console.error('Error whilst getting cached profile for GroupTile', err);\n });\n },\n\n onMouseDown: function onMouseDown(e) {\n e.preventDefault();\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: this.props.groupId\n });\n },\n\n render: function render() {\n var _this2 = this;\n\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var profile = this.state.profile || {};\n var name = profile.name || this.props.groupId;\n var avatarHeight = this.props.avatarHeight;\n var descElement = this.props.showDescription ? _react2.default.createElement(\n 'div',\n { className: 'mx_GroupTile_desc' },\n profile.shortDescription\n ) : _react2.default.createElement('div', null);\n var httpUrl = profile.avatarUrl ? this.context.matrixClient.mxcUrlToHttp(profile.avatarUrl, avatarHeight, avatarHeight, \"crop\") : null;\n // XXX: Use onMouseDown as a workaround for https://github.com/atlassian/react-beautiful-dnd/issues/273\n // instead of onClick. Otherwise we experience https://github.com/vector-im/riot-web/issues/6156\n return _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_GroupTile', onMouseDown: this.onMouseDown, onClick: nop },\n _react2.default.createElement(\n _reactBeautifulDnd.Droppable,\n { droppableId: 'my-groups-droppable', type: 'draggable-TagTile' },\n function (droppableProvided, droppableSnapshot) {\n return _react2.default.createElement(\n 'div',\n { ref: droppableProvided.innerRef },\n _react2.default.createElement(\n _reactBeautifulDnd.Draggable,\n {\n key: \"GroupTile \" + _this2.props.groupId,\n draggableId: \"GroupTile \" + _this2.props.groupId,\n index: _this2.props.groupId,\n type: 'draggable-TagTile'\n },\n function (provided, snapshot) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n (0, _extends3.default)({\n ref: provided.innerRef\n }, provided.draggableProps, provided.dragHandleProps),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupTile_avatar' },\n _react2.default.createElement(BaseAvatar, {\n name: name,\n idName: _this2.props.groupId,\n url: httpUrl,\n width: avatarHeight,\n height: avatarHeight })\n )\n ),\n provided.placeholder ? _react2.default.createElement(\n 'div',\n { className: 'mx_GroupTile_avatar' },\n _react2.default.createElement(BaseAvatar, {\n name: name,\n idName: _this2.props.groupId,\n url: httpUrl,\n width: avatarHeight,\n height: avatarHeight })\n ) : _react2.default.createElement('div', null)\n );\n }\n )\n );\n }\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupTile_profile' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupTile_name' },\n name\n ),\n descElement,\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupTile_groupId' },\n this.props.groupId\n )\n )\n );\n }\n});\n\nexports.default = GroupTile;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'GroupUserSettings',\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getInitialState: function getInitialState() {\n return {\n error: null,\n groups: null\n };\n },\n\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this.context.matrixClient.getJoinedGroups().done(function (result) {\n _this.setState({ groups: result.groups || [], error: null });\n }, function (err) {\n console.error(err);\n _this.setState({ groups: null, error: err });\n });\n },\n\n _renderGroupPublicity: function _renderGroupPublicity() {\n var text = \"\";\n var scrollbox = _react2.default.createElement('div', null);\n var groups = this.state.groups;\n\n if (this.state.error) {\n text = (0, _languageHandler._t)('Something went wrong when trying to get your communities.');\n } else if (groups === null) {\n text = (0, _languageHandler._t)('Loading...');\n } else if (groups.length > 0) {\n var GroupPublicityToggle = _index2.default.getComponent('groups.GroupPublicityToggle');\n var GeminiScrollbarWrapper = _index2.default.getComponent('elements.GeminiScrollbarWrapper');\n var groupPublicityToggles = groups.map(function (groupId, index) {\n return _react2.default.createElement(GroupPublicityToggle, { key: index, groupId: groupId });\n });\n text = (0, _languageHandler._t)('Display your community flair in rooms configured to show it.');\n scrollbox = _react2.default.createElement(\n 'div',\n { className: 'mx_GroupUserSettings_groupPublicity_scrollbox' },\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n null,\n groupPublicityToggles\n )\n );\n } else {\n text = (0, _languageHandler._t)(\"You're not currently a member of any communities.\");\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Flair')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n _react2.default.createElement(\n 'p',\n null,\n text\n ),\n scrollbox\n )\n );\n },\n render: function render() {\n var groupPublicity = this._renderGroupPublicity();\n\n return _react2.default.createElement(\n 'div',\n null,\n groupPublicity\n );\n }\n}); /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupUserSettings.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DIV_ID = 'mx_recaptcha';\n\n/**\n * A pure UI component which displays a captcha form.\n */\nmodule.exports = _react2.default.createClass({\n displayName: 'CaptchaForm',\n\n propTypes: {\n sitePublicKey: _propTypes2.default.string,\n\n // called with the captcha response\n onCaptchaResponse: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onCaptchaResponse: function onCaptchaResponse() {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n errorText: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._captchaWidgetId = null;\n },\n\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n // Just putting a script tag into the returned jsx doesn't work, annoyingly,\n // so we do this instead.\n if (global.grecaptcha) {\n // already loaded\n this._onCaptchaLoaded();\n } else {\n console.log(\"Loading recaptcha script...\");\n window.mx_on_recaptcha_loaded = function () {\n _this._onCaptchaLoaded();\n };\n var protocol = global.location.protocol;\n if (protocol === \"file:\") {\n var warning = document.createElement('div');\n // XXX: fix hardcoded app URL. Better solutions include:\n // * jumping straight to a hosted captcha page (but we don't support that yet)\n // * embedding the captcha in an iframe (if that works)\n // * using a better captcha lib\n _reactDom2.default.render((0, _languageHandler._t)(\"Robot check is currently unavailable on desktop - please use a <a>web browser</a>\", {}, { 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: 'https://riot.im/app' },\n sub\n );\n } }), warning);\n this.refs.recaptchaContainer.appendChild(warning);\n } else {\n var scriptTag = document.createElement('script');\n scriptTag.setAttribute('src', protocol + \"//www.google.com/recaptcha/api.js?onload=mx_on_recaptcha_loaded&render=explicit\");\n this.refs.recaptchaContainer.appendChild(scriptTag);\n }\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._resetRecaptcha();\n },\n\n _renderRecaptcha: function _renderRecaptcha(divId) {\n if (!global.grecaptcha) {\n console.error(\"grecaptcha not loaded!\");\n throw new Error(\"Recaptcha did not load successfully\");\n }\n\n var publicKey = this.props.sitePublicKey;\n if (!publicKey) {\n console.error(\"No public key for recaptcha!\");\n throw new Error(\"This server has not supplied enough information for Recaptcha \" + \"authentication\");\n }\n\n console.log(\"Rendering to %s\", divId);\n this._captchaWidgetId = global.grecaptcha.render(divId, {\n sitekey: publicKey,\n callback: this.props.onCaptchaResponse\n });\n },\n\n _resetRecaptcha: function _resetRecaptcha() {\n if (this._captchaWidgetId !== null) {\n global.grecaptcha.reset(this._captchaWidgetId);\n }\n },\n\n _onCaptchaLoaded: function _onCaptchaLoaded() {\n console.log(\"Loaded recaptcha script.\");\n try {\n this._renderRecaptcha(DIV_ID);\n } catch (e) {\n this.setState({\n errorText: e.toString()\n });\n }\n },\n\n render: function render() {\n var error = null;\n if (this.state.errorText) {\n error = _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.errorText\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { ref: 'recaptchaContainer' },\n (0, _languageHandler._t)(\"This Home Server would like to make sure you are not a robot\"),\n _react2.default.createElement('br', null),\n _react2.default.createElement('div', { id: DIV_ID }),\n error\n );\n }\n});\n//# sourceMappingURL=CaptchaForm.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _phonenumber = require('../../../phonenumber');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar COUNTRIES_BY_ISO2 = new Object(null);\nvar _iteratorNormalCompletion = true;\nvar _didIteratorError = false;\nvar _iteratorError = undefined;\n\ntry {\n for (var _iterator = (0, _getIterator3.default)(_phonenumber.COUNTRIES), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var c = _step.value;\n\n COUNTRIES_BY_ISO2[c.iso2] = c;\n }\n} catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n} finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n}\n\nfunction countryMatchesSearchQuery(query, country) {\n // Remove '+' if present (when searching for a prefix)\n if (query[0] === '+') {\n query = query.slice(1);\n }\n\n if (country.name.toUpperCase().indexOf(query.toUpperCase()) == 0) return true;\n if (country.iso2 == query.toUpperCase()) return true;\n if (country.prefix.indexOf(query) !== -1) return true;\n return false;\n}\n\nvar CountryDropdown = function (_React$Component) {\n (0, _inherits3.default)(CountryDropdown, _React$Component);\n\n function CountryDropdown(props) {\n (0, _classCallCheck3.default)(this, CountryDropdown);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (CountryDropdown.__proto__ || (0, _getPrototypeOf2.default)(CountryDropdown)).call(this, props));\n\n _this._onSearchChange = _this._onSearchChange.bind(_this);\n _this._onOptionChange = _this._onOptionChange.bind(_this);\n _this._getShortOption = _this._getShortOption.bind(_this);\n\n _this.state = {\n searchQuery: ''\n };\n return _this;\n }\n\n (0, _createClass3.default)(CountryDropdown, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n if (!this.props.value) {\n // If no value is given, we start with the first\n // country selected, but our parent component\n // doesn't know this, therefore we do this.\n this.props.onOptionChange(_phonenumber.COUNTRIES[0]);\n }\n }\n }, {\n key: '_onSearchChange',\n value: function _onSearchChange(search) {\n this.setState({\n searchQuery: search\n });\n }\n }, {\n key: '_onOptionChange',\n value: function _onOptionChange(iso2) {\n this.props.onOptionChange(COUNTRIES_BY_ISO2[iso2]);\n }\n }, {\n key: '_flagImgForIso2',\n value: function _flagImgForIso2(iso2) {\n return _react2.default.createElement('img', { src: 'img/flags/' + iso2 + '.png' });\n }\n }, {\n key: '_getShortOption',\n value: function _getShortOption(iso2) {\n if (!this.props.isSmall) {\n return undefined;\n }\n var countryPrefix = void 0;\n if (this.props.showPrefix) {\n countryPrefix = '+' + COUNTRIES_BY_ISO2[iso2].prefix;\n }\n return _react2.default.createElement(\n 'span',\n null,\n this._flagImgForIso2(iso2),\n countryPrefix\n );\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var Dropdown = _index2.default.getComponent('elements.Dropdown');\n\n var displayedCountries = void 0;\n if (this.state.searchQuery) {\n displayedCountries = _phonenumber.COUNTRIES.filter(countryMatchesSearchQuery.bind(this, this.state.searchQuery));\n if (this.state.searchQuery.length == 2 && COUNTRIES_BY_ISO2[this.state.searchQuery.toUpperCase()]) {\n // exact ISO2 country name match: make the first result the matches ISO2\n var matched = COUNTRIES_BY_ISO2[this.state.searchQuery.toUpperCase()];\n displayedCountries = displayedCountries.filter(function (c) {\n return c.iso2 != matched.iso2;\n });\n displayedCountries.unshift(matched);\n }\n } else {\n displayedCountries = _phonenumber.COUNTRIES;\n }\n\n var options = displayedCountries.map(function (country) {\n return _react2.default.createElement(\n 'div',\n { key: country.iso2 },\n _this2._flagImgForIso2(country.iso2),\n country.name,\n ' ',\n _react2.default.createElement(\n 'span',\n null,\n '(+',\n country.prefix,\n ')'\n )\n );\n });\n\n // default value here too, otherwise we need to handle null / undefined\n // values between mounting and the initial value propgating\n var value = this.props.value || _phonenumber.COUNTRIES[0].iso2;\n\n return _react2.default.createElement(\n Dropdown,\n { className: this.props.className + \" left_aligned\",\n onOptionChange: this._onOptionChange, onSearchChange: this._onSearchChange,\n menuWidth: 298, getShortOption: this._getShortOption,\n value: value, searchEnabled: true, disabled: this.props.disabled\n },\n options\n );\n }\n }]);\n return CountryDropdown;\n}(_react2.default.Component);\n\nexports.default = CountryDropdown;\n\n\nCountryDropdown.propTypes = {\n className: _propTypes2.default.string,\n isSmall: _propTypes2.default.bool,\n // if isSmall, show +44 in the selected value\n showPrefix: _propTypes2.default.bool,\n onOptionChange: _propTypes2.default.func.isRequired,\n value: _propTypes2.default.string,\n disabled: _propTypes2.default.bool\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=CountryDropdown.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'CustomServerDialog',\n\n render: function render() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ErrorDialog' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_title' },\n (0, _languageHandler._t)(\"Custom Server Options\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"You can use the custom server options to sign into other Matrix \" + \"servers by specifying a different Home server URL.\"),\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)(\"This allows you to use this app with an existing Matrix account on \" + \"a different home server.\"),\n _react2.default.createElement('br', null),\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)(\"You can also set a custom identity server but this will typically prevent \" + \"interaction with users based on email address.\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.props.onFinished, autoFocus: true },\n (0, _languageHandler._t)(\"Dismiss\")\n )\n )\n );\n }\n});\n//# sourceMappingURL=CustomServerDialog.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'LoginFooter',\n\n render: function render() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Login_links' },\n _react2.default.createElement(\n 'a',\n { href: 'https://matrix.org' },\n (0, _languageHandler._t)(\"powered by Matrix\")\n )\n );\n }\n});\n//# sourceMappingURL=LoginFooter.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar React = require('react');\n\nmodule.exports = React.createClass({\n displayName: 'LoginHeader',\n\n render: function render() {\n return React.createElement(\n 'div',\n { className: 'mx_Login_logo' },\n 'Matrix'\n );\n }\n});\n//# sourceMappingURL=LoginHeader.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nmodule.exports = React.createClass({\n displayName: 'LoginPage',\n\n render: function render() {\n // FIXME: this should be turned into a proper skin with a StatusLoginPage component\n if (_SettingsStore2.default.getValue(\"theme\") === 'status') {\n return React.createElement(\n 'div',\n { className: 'mx_StatusLogin' },\n React.createElement(\n 'div',\n { className: 'mx_StatusLogin_brand' },\n React.createElement('img', { src: 'themes/status/img/logo.svg', alt: 'Status', width: '221', height: '53' })\n ),\n React.createElement(\n 'div',\n { className: 'mx_StatusLogin_content' },\n React.createElement(\n 'div',\n { className: 'mx_StatusLogin_header' },\n React.createElement(\n 'h1',\n null,\n 'Status Community Chat'\n ),\n React.createElement(\n 'div',\n { className: 'mx_StatusLogin_subtitle' },\n 'A safer, decentralised communication platform ',\n React.createElement(\n 'a',\n { href: 'https://riot.im' },\n 'powered by Riot'\n )\n )\n ),\n this.props.children,\n React.createElement(\n 'div',\n { className: 'mx_StatusLogin_footer' },\n React.createElement(\n 'p',\n null,\n 'This channel is for our development community.'\n ),\n React.createElement(\n 'p',\n null,\n 'Interested in SNT and discussions on the cryptocurrency market?'\n ),\n React.createElement(\n 'p',\n null,\n React.createElement(\n 'a',\n { href: 'https://t.me/StatusNetworkChat', target: '_blank', className: 'mx_StatusLogin_footer_cta' },\n 'Join Telegram Chat'\n )\n )\n )\n )\n );\n } else {\n return React.createElement(\n 'div',\n { className: 'mx_Login' },\n this.props.children\n );\n }\n }\n});\n//# sourceMappingURL=LoginPage.js.map","'use strict';\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _UiEffects = require('../../../UiEffects');\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A pure UI component which displays a username/password form.\n */\nvar PasswordLogin = function (_React$Component) {\n (0, _inherits3.default)(PasswordLogin, _React$Component);\n\n function PasswordLogin(props) {\n (0, _classCallCheck3.default)(this, PasswordLogin);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (PasswordLogin.__proto__ || (0, _getPrototypeOf2.default)(PasswordLogin)).call(this, props));\n\n _this.state = {\n username: _this.props.initialUsername,\n password: _this.props.initialPassword,\n phoneCountry: _this.props.initialPhoneCountry,\n phoneNumber: _this.props.initialPhoneNumber,\n loginType: PasswordLogin.LOGIN_FIELD_MXID\n };\n\n _this.onSubmitForm = _this.onSubmitForm.bind(_this);\n _this.onUsernameChanged = _this.onUsernameChanged.bind(_this);\n _this.onUsernameBlur = _this.onUsernameBlur.bind(_this);\n _this.onLoginTypeChange = _this.onLoginTypeChange.bind(_this);\n _this.onPhoneCountryChanged = _this.onPhoneCountryChanged.bind(_this);\n _this.onPhoneNumberChanged = _this.onPhoneNumberChanged.bind(_this);\n _this.onPasswordChanged = _this.onPasswordChanged.bind(_this);\n _this.isLoginEmpty = _this.isLoginEmpty.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(PasswordLogin, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this._passwordField = null;\n this._loginField = null;\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (!this.props.loginIncorrect && nextProps.loginIncorrect) {\n (0, _UiEffects.field_input_incorrect)(this.isLoginEmpty() ? this._loginField : this._passwordField);\n }\n }\n }, {\n key: 'onSubmitForm',\n value: function onSubmitForm(ev) {\n ev.preventDefault();\n\n var username = ''; // XXX: Synapse breaks if you send null here:\n var phoneCountry = null;\n var phoneNumber = null;\n var error = void 0;\n\n switch (this.state.loginType) {\n case PasswordLogin.LOGIN_FIELD_EMAIL:\n username = this.state.username;\n if (!username) {\n error = (0, _languageHandler._t)('The email field must not be blank.');\n }\n break;\n case PasswordLogin.LOGIN_FIELD_MXID:\n username = this.state.username;\n if (!username) {\n error = (0, _languageHandler._t)('The user name field must not be blank.');\n }\n break;\n case PasswordLogin.LOGIN_FIELD_PHONE:\n phoneCountry = this.state.phoneCountry;\n phoneNumber = this.state.phoneNumber;\n if (!phoneNumber) {\n error = (0, _languageHandler._t)('The phone number field must not be blank.');\n }\n break;\n }\n\n if (error) {\n this.props.onError(error);\n return;\n }\n\n if (!this.state.password) {\n this.props.onError((0, _languageHandler._t)('The password field must not be blank.'));\n return;\n }\n\n this.props.onSubmit(username, phoneCountry, phoneNumber, this.state.password);\n }\n }, {\n key: 'onUsernameChanged',\n value: function onUsernameChanged(ev) {\n this.setState({ username: ev.target.value });\n this.props.onUsernameChanged(ev.target.value);\n }\n }, {\n key: 'onUsernameBlur',\n value: function onUsernameBlur(ev) {\n this.props.onUsernameBlur(this.state.username);\n }\n }, {\n key: 'onLoginTypeChange',\n value: function onLoginTypeChange(loginType) {\n this.props.onError(null); // send a null error to clear any error messages\n this.setState({\n loginType: loginType,\n username: \"\" // Reset because email and username use the same state\n });\n }\n }, {\n key: 'onPhoneCountryChanged',\n value: function onPhoneCountryChanged(country) {\n this.setState({\n phoneCountry: country.iso2,\n phonePrefix: country.prefix\n });\n this.props.onPhoneCountryChanged(country.iso2);\n }\n }, {\n key: 'onPhoneNumberChanged',\n value: function onPhoneNumberChanged(ev) {\n this.setState({ phoneNumber: ev.target.value });\n this.props.onPhoneNumberChanged(ev.target.value);\n }\n }, {\n key: 'onPasswordChanged',\n value: function onPasswordChanged(ev) {\n this.setState({ password: ev.target.value });\n this.props.onPasswordChanged(ev.target.value);\n }\n }, {\n key: 'renderLoginField',\n value: function renderLoginField(loginType, disabled) {\n var _this2 = this;\n\n var classes = {\n mx_Login_field: true,\n mx_Login_field_disabled: disabled\n };\n\n switch (loginType) {\n case PasswordLogin.LOGIN_FIELD_EMAIL:\n classes.mx_Login_email = true;\n classes.error = this.props.loginIncorrect && !this.state.username;\n return _react2.default.createElement('input', {\n className: (0, _classnames2.default)(classes),\n ref: function ref(e) {\n _this2._loginField = e;\n },\n key: 'email_input',\n type: 'text',\n name: 'username' // make it a little easier for browser's remember-password\n , onChange: this.onUsernameChanged,\n onBlur: this.onUsernameBlur,\n placeholder: 'joe@example.com',\n value: this.state.username,\n autoFocus: true,\n disabled: disabled\n });\n case PasswordLogin.LOGIN_FIELD_MXID:\n classes.mx_Login_username = true;\n classes.error = this.props.loginIncorrect && !this.state.username;\n return _react2.default.createElement('input', {\n className: (0, _classnames2.default)(classes),\n ref: function ref(e) {\n _this2._loginField = e;\n },\n key: 'username_input',\n type: 'text',\n name: 'username' // make it a little easier for browser's remember-password\n , onChange: this.onUsernameChanged,\n onBlur: this.onUsernameBlur,\n placeholder: _SdkConfig2.default.get().disable_custom_urls ? (0, _languageHandler._t)(\"Username on %(hs)s\", {\n hs: this.props.hsUrl.replace(/^https?:\\/\\//, '')\n }) : (0, _languageHandler._t)(\"User name\"),\n value: this.state.username,\n autoFocus: true,\n disabled: disabled\n });\n case PasswordLogin.LOGIN_FIELD_PHONE:\n {\n var CountryDropdown = _index2.default.getComponent('views.login.CountryDropdown');\n classes.mx_Login_phoneNumberField = true;\n classes.mx_Login_field_has_prefix = true;\n classes.error = this.props.loginIncorrect && !this.state.phoneNumber;\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Login_phoneSection' },\n _react2.default.createElement(CountryDropdown, {\n className: 'mx_Login_phoneCountry mx_Login_field_prefix',\n onOptionChange: this.onPhoneCountryChanged,\n value: this.state.phoneCountry,\n isSmall: true,\n showPrefix: true,\n disabled: disabled\n }),\n _react2.default.createElement('input', {\n className: (0, _classnames2.default)(classes),\n ref: function ref(e) {\n _this2._loginField = e;\n },\n key: 'phone_input',\n type: 'text',\n name: 'phoneNumber',\n onChange: this.onPhoneNumberChanged,\n placeholder: (0, _languageHandler._t)(\"Mobile phone number\"),\n value: this.state.phoneNumber,\n autoFocus: true,\n disabled: disabled\n })\n );\n }\n }\n }\n }, {\n key: 'isLoginEmpty',\n value: function isLoginEmpty() {\n switch (this.state.loginType) {\n case PasswordLogin.LOGIN_FIELD_EMAIL:\n case PasswordLogin.LOGIN_FIELD_MXID:\n return !this.state.username;\n case PasswordLogin.LOGIN_FIELD_PHONE:\n return !this.state.phoneCountry || !this.state.phoneNumber;\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var forgotPasswordJsx = void 0;\n\n if (this.props.onForgotPasswordClick) {\n forgotPasswordJsx = _react2.default.createElement(\n 'a',\n { className: 'mx_Login_forgot', onClick: this.props.onForgotPasswordClick, href: '#' },\n (0, _languageHandler._t)('Forgot your password?')\n );\n }\n\n var matrixIdText = (0, _languageHandler._t)('Matrix ID');\n if (this.props.hsName) {\n matrixIdText = (0, _languageHandler._t)('%(serverName)s Matrix ID', { serverName: this.props.hsName });\n } else {\n try {\n var parsedHsUrl = new URL(this.props.hsUrl);\n matrixIdText = (0, _languageHandler._t)('%(serverName)s Matrix ID', { serverName: parsedHsUrl.hostname });\n } catch (e) {\n // ignore\n }\n }\n\n var pwFieldClass = (0, _classnames2.default)({\n mx_Login_field: true,\n mx_Login_field_disabled: matrixIdText === '',\n error: this.props.loginIncorrect && !this.isLoginEmpty() // only error password if error isn't top field\n });\n\n var Dropdown = _index2.default.getComponent('elements.Dropdown');\n\n var loginField = this.renderLoginField(this.state.loginType, matrixIdText === '');\n\n var loginType = void 0;\n if (!_SdkConfig2.default.get().disable_3pid_login) {\n loginType = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_type_container' },\n _react2.default.createElement(\n 'label',\n { className: 'mx_Login_type_label' },\n (0, _languageHandler._t)('Sign in with')\n ),\n _react2.default.createElement(\n Dropdown,\n {\n className: 'mx_Login_type_dropdown',\n value: this.state.loginType,\n disabled: matrixIdText === '',\n onOptionChange: this.onLoginTypeChange },\n _react2.default.createElement(\n 'span',\n { key: PasswordLogin.LOGIN_FIELD_MXID },\n matrixIdText\n ),\n _react2.default.createElement(\n 'span',\n { key: PasswordLogin.LOGIN_FIELD_EMAIL },\n (0, _languageHandler._t)('Email address')\n ),\n _react2.default.createElement(\n 'span',\n { key: PasswordLogin.LOGIN_FIELD_PHONE },\n (0, _languageHandler._t)('Phone')\n )\n )\n );\n }\n\n var disableSubmit = this.props.disableSubmit || matrixIdText === '';\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'form',\n { onSubmit: this.onSubmitForm },\n loginType,\n loginField,\n _react2.default.createElement('input', { className: pwFieldClass, ref: function ref(e) {\n _this3._passwordField = e;\n }, type: 'password',\n name: 'password',\n value: this.state.password, onChange: this.onPasswordChanged,\n placeholder: (0, _languageHandler._t)('Password'),\n disabled: matrixIdText === ''\n }),\n _react2.default.createElement('br', null),\n forgotPasswordJsx,\n _react2.default.createElement('input', { className: 'mx_Login_submit', type: 'submit', value: (0, _languageHandler._t)('Sign in'), disabled: disableSubmit })\n )\n );\n }\n }]);\n return PasswordLogin;\n}(_react2.default.Component); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nPasswordLogin.defaultProps = {\n onError: function onError() {},\n onUsernameChanged: function onUsernameChanged() {},\n onUsernameBlur: function onUsernameBlur() {},\n onPasswordChanged: function onPasswordChanged() {},\n onPhoneCountryChanged: function onPhoneCountryChanged() {},\n onPhoneNumberChanged: function onPhoneNumberChanged() {},\n initialUsername: \"\",\n initialPhoneCountry: \"\",\n initialPhoneNumber: \"\",\n initialPassword: \"\",\n loginIncorrect: false,\n hsDomain: \"\",\n hsName: null,\n disableSubmit: false\n};\n\n\nPasswordLogin.LOGIN_FIELD_EMAIL = \"login_field_email\";\nPasswordLogin.LOGIN_FIELD_MXID = \"login_field_mxid\";\nPasswordLogin.LOGIN_FIELD_PHONE = \"login_field_phone\";\n\nPasswordLogin.propTypes = {\n onSubmit: _propTypes2.default.func.isRequired, // fn(username, password)\n onError: _propTypes2.default.func,\n onForgotPasswordClick: _propTypes2.default.func, // fn()\n initialUsername: _propTypes2.default.string,\n initialPhoneCountry: _propTypes2.default.string,\n initialPhoneNumber: _propTypes2.default.string,\n initialPassword: _propTypes2.default.string,\n onUsernameChanged: _propTypes2.default.func,\n onPhoneCountryChanged: _propTypes2.default.func,\n onPhoneNumberChanged: _propTypes2.default.func,\n onPasswordChanged: _propTypes2.default.func,\n loginIncorrect: _propTypes2.default.bool,\n hsName: _propTypes2.default.string,\n disableSubmit: _propTypes2.default.bool\n};\n\nmodule.exports = PasswordLogin;\n//# sourceMappingURL=PasswordLogin.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar Modal = require('../../../Modal');\nvar sdk = require('../../../index');\n\n\n/**\n * A pure UI component which displays the HS and IS to use.\n */\nmodule.exports = React.createClass({\n displayName: 'ServerConfig',\n\n propTypes: {\n onServerConfigChange: _propTypes2.default.func,\n\n // default URLs are defined in config.json (or the hardcoded defaults)\n // they are used if the user has not overridden them with a custom URL.\n // In other words, if the custom URL is blank, the default is used.\n defaultHsUrl: _propTypes2.default.string, // e.g. https://matrix.org\n defaultIsUrl: _propTypes2.default.string, // e.g. https://vector.im\n\n // custom URLs are explicitly provided by the user and override the\n // default URLs. The user enters them via the component's input fields,\n // which is reflected on these properties whenever on..UrlChanged fires.\n // They are persisted in localStorage by MatrixClientPeg, and so can\n // override the default URLs when the component initially loads.\n customHsUrl: _propTypes2.default.string,\n customIsUrl: _propTypes2.default.string,\n\n withToggleButton: _propTypes2.default.bool,\n delayTimeMs: _propTypes2.default.number // time to wait before invoking onChanged\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onServerConfigChange: function onServerConfigChange() {},\n customHsUrl: \"\",\n customIsUrl: \"\",\n withToggleButton: false,\n delayTimeMs: 0\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n hs_url: this.props.customHsUrl,\n is_url: this.props.customIsUrl,\n // if withToggleButton is false, then show the config all the time given we have no way otherwise of making it visible\n configVisible: !this.props.withToggleButton || this.props.customHsUrl !== this.props.defaultHsUrl || this.props.customIsUrl !== this.props.defaultIsUrl\n };\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n if (newProps.customHsUrl === this.state.hs_url && newProps.customIsUrl === this.state.is_url) return;\n\n this.setState({\n hs_url: newProps.customHsUrl,\n is_url: newProps.customIsUrl,\n configVisible: !newProps.withToggleButton || newProps.customHsUrl !== newProps.defaultHsUrl || newProps.customIsUrl !== newProps.defaultIsUrl\n });\n this.props.onServerConfigChange({\n hsUrl: newProps.customHsUrl,\n isUrl: newProps.customIsUrl\n });\n },\n\n onHomeserverChanged: function onHomeserverChanged(ev) {\n this.setState({ hs_url: ev.target.value }, function () {\n this._hsTimeoutId = this._waitThenInvoke(this._hsTimeoutId, function () {\n var hsUrl = this.state.hs_url.trim().replace(/\\/$/, \"\");\n if (hsUrl === \"\") hsUrl = this.props.defaultHsUrl;\n this.props.onServerConfigChange({\n hsUrl: this.state.hs_url,\n isUrl: this.state.is_url\n });\n });\n });\n },\n\n onIdentityServerChanged: function onIdentityServerChanged(ev) {\n this.setState({ is_url: ev.target.value }, function () {\n this._isTimeoutId = this._waitThenInvoke(this._isTimeoutId, function () {\n var isUrl = this.state.is_url.trim().replace(/\\/$/, \"\");\n if (isUrl === \"\") isUrl = this.props.defaultIsUrl;\n this.props.onServerConfigChange({\n hsUrl: this.state.hs_url,\n isUrl: this.state.is_url\n });\n });\n });\n },\n\n _waitThenInvoke: function _waitThenInvoke(existingTimeoutId, fn) {\n if (existingTimeoutId) {\n clearTimeout(existingTimeoutId);\n }\n return setTimeout(fn.bind(this), this.props.delayTimeMs);\n },\n\n onServerConfigVisibleChange: function onServerConfigVisibleChange(visible, ev) {\n this.setState({\n configVisible: visible\n });\n if (!visible) {\n this.props.onServerConfigChange({\n hsUrl: this.props.defaultHsUrl,\n isUrl: this.props.defaultIsUrl\n });\n } else {\n this.props.onServerConfigChange({\n hsUrl: this.state.hs_url,\n isUrl: this.state.is_url\n });\n }\n },\n\n showHelpPopup: function showHelpPopup() {\n var CustomServerDialog = sdk.getComponent('login.CustomServerDialog');\n Modal.createTrackedDialog('Custom Server Dialog', '', CustomServerDialog);\n },\n\n render: function render() {\n var serverConfigStyle = {};\n serverConfigStyle.display = this.state.configVisible ? 'block' : 'none';\n\n var toggleButton = void 0;\n if (this.props.withToggleButton) {\n toggleButton = React.createElement(\n 'div',\n { className: 'mx_ServerConfig_selector' },\n React.createElement('input', { className: 'mx_Login_radio', id: 'basic', name: 'configVisible', type: 'radio',\n checked: !this.state.configVisible,\n onChange: this.onServerConfigVisibleChange.bind(this, false) }),\n React.createElement(\n 'label',\n { className: 'mx_Login_label', htmlFor: 'basic' },\n (0, _languageHandler._t)(\"Default server\")\n ),\n '\\xA0\\xA0',\n React.createElement('input', { className: 'mx_Login_radio', id: 'advanced', name: 'configVisible', type: 'radio',\n checked: this.state.configVisible,\n onChange: this.onServerConfigVisibleChange.bind(this, true) }),\n React.createElement(\n 'label',\n { className: 'mx_Login_label', htmlFor: 'advanced' },\n (0, _languageHandler._t)(\"Custom server\")\n )\n );\n }\n\n return React.createElement(\n 'div',\n null,\n toggleButton,\n React.createElement(\n 'div',\n { style: serverConfigStyle },\n React.createElement(\n 'div',\n { className: 'mx_ServerConfig' },\n React.createElement(\n 'label',\n { className: 'mx_Login_label mx_ServerConfig_hslabel', htmlFor: 'hsurl' },\n (0, _languageHandler._t)(\"Home server URL\")\n ),\n React.createElement('input', { className: 'mx_Login_field', id: 'hsurl', type: 'text',\n placeholder: this.props.defaultHsUrl,\n disabled: !this.props.withToggleButton,\n value: this.state.hs_url,\n onChange: this.onHomeserverChanged }),\n React.createElement(\n 'label',\n { className: 'mx_Login_label mx_ServerConfig_islabel', htmlFor: 'isurl' },\n (0, _languageHandler._t)(\"Identity server URL\")\n ),\n React.createElement('input', { className: 'mx_Login_field', id: 'isurl', type: 'text',\n placeholder: this.props.defaultIsUrl,\n disabled: !this.props.withToggleButton,\n value: this.state.is_url,\n onChange: this.onIdentityServerChanged }),\n React.createElement(\n 'a',\n { className: 'mx_ServerConfig_help', href: '#', onClick: this.showHelpPopup },\n (0, _languageHandler._t)(\"What does this mean?\")\n )\n )\n )\n );\n }\n});\n//# sourceMappingURL=ServerConfig.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _DateUtils = require('../../../DateUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction getdaysArray() {\n return [(0, _languageHandler._t)('Sunday'), (0, _languageHandler._t)('Monday'), (0, _languageHandler._t)('Tuesday'), (0, _languageHandler._t)('Wednesday'), (0, _languageHandler._t)('Thursday'), (0, _languageHandler._t)('Friday'), (0, _languageHandler._t)('Saturday')];\n}\n\nvar DateSeparator = function (_React$Component) {\n (0, _inherits3.default)(DateSeparator, _React$Component);\n\n function DateSeparator() {\n (0, _classCallCheck3.default)(this, DateSeparator);\n return (0, _possibleConstructorReturn3.default)(this, (DateSeparator.__proto__ || (0, _getPrototypeOf2.default)(DateSeparator)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(DateSeparator, [{\n key: 'getLabel',\n value: function getLabel() {\n var date = new Date(this.props.ts);\n var today = new Date();\n var yesterday = new Date();\n var days = getdaysArray();\n yesterday.setDate(today.getDate() - 1);\n\n if (date.toDateString() === today.toDateString()) {\n return (0, _languageHandler._t)('Today');\n } else if (date.toDateString() === yesterday.toDateString()) {\n return (0, _languageHandler._t)('Yesterday');\n } else if (today.getTime() - date.getTime() < 6 * 24 * 60 * 60 * 1000) {\n return days[date.getDay()];\n } else {\n return (0, _DateUtils.formatFullDateNoTime)(date);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'h2',\n { className: 'mx_DateSeparator' },\n this.getLabel()\n );\n }\n }]);\n return DateSeparator;\n}(_react2.default.Component);\n\nDateSeparator.propTypes = {\n ts: _propTypes2.default.number.isRequired\n};\nexports.default = DateSeparator;\nmodule.exports = exports['default'];\n//# sourceMappingURL=DateSeparator.js.map","/*\n Copyright 2016 OpenMarket Ltd\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _MFileBody = require('./MFileBody');\n\nvar _MFileBody2 = _interopRequireDefault(_MFileBody);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _DecryptFile = require('../../../utils/DecryptFile');\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MAudioBody = function (_React$Component) {\n (0, _inherits3.default)(MAudioBody, _React$Component);\n\n function MAudioBody(props) {\n (0, _classCallCheck3.default)(this, MAudioBody);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (MAudioBody.__proto__ || (0, _getPrototypeOf2.default)(MAudioBody)).call(this, props));\n\n _this.state = {\n playing: false,\n decryptedUrl: null,\n decryptedBlob: null,\n error: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(MAudioBody, [{\n key: 'onPlayToggle',\n value: function onPlayToggle() {\n this.setState({\n playing: !this.state.playing\n });\n }\n }, {\n key: '_getContentUrl',\n value: function _getContentUrl() {\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined) {\n return this.state.decryptedUrl;\n } else {\n return _MatrixClientPeg2.default.get().mxcUrlToHttp(content.url);\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined && this.state.decryptedUrl === null) {\n var decryptedBlob = void 0;\n (0, _DecryptFile.decryptFile)(content.file).then(function (blob) {\n decryptedBlob = blob;\n return URL.createObjectURL(decryptedBlob);\n }).done(function (url) {\n _this2.setState({\n decryptedUrl: url,\n decryptedBlob: decryptedBlob\n });\n }, function (err) {\n console.warn(\"Unable to decrypt attachment: \", err);\n _this2.setState({\n error: err\n });\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.state.decryptedUrl) {\n URL.revokeObjectURL(this.state.decryptedUrl);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var content = this.props.mxEvent.getContent();\n\n if (this.state.error !== null) {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MAudioBody', ref: 'body' },\n _react2.default.createElement('img', { src: 'img/warning.svg', width: '16', height: '16' }),\n (0, _languageHandler._t)(\"Error decrypting audio\")\n );\n }\n\n if (content.file !== undefined && this.state.decryptedUrl === null) {\n // Need to decrypt the attachment\n // The attachment is decrypted in componentDidMount.\n // For now add an img tag with a 16x16 spinner.\n // Not sure how tall the audio player is so not sure how tall it should actually be.\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MAudioBody' },\n _react2.default.createElement('img', { src: 'img/spinner.gif', alt: content.body, width: '16', height: '16' })\n );\n }\n\n var contentUrl = this._getContentUrl();\n\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MAudioBody' },\n _react2.default.createElement('audio', { src: contentUrl, controls: true }),\n _react2.default.createElement(_MFileBody2.default, (0, _extends3.default)({}, this.props, { decryptedBlob: this.state.decryptedBlob }))\n );\n }\n }]);\n return MAudioBody;\n}(_react2.default.Component);\n\nexports.default = MAudioBody;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MAudioBody.js.map","// the whatwg-fetch polyfill installs the fetch() function\n// on the global object (window or self)\n//\n// Return that as the export for use in Webpack, Browserify etc.\nrequire('whatwg-fetch');\nmodule.exports = self.fetch.bind(self);\n","var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = self.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.onabort = function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!self.fetch) {\n self.fetch = fetch\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n}\n","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _MImageBody2 = require('./MImageBody');\n\nvar _MImageBody3 = _interopRequireDefault(_MImageBody2);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MStickerBody = function (_MImageBody) {\n (0, _inherits3.default)(MStickerBody, _MImageBody);\n\n function MStickerBody() {\n (0, _classCallCheck3.default)(this, MStickerBody);\n return (0, _possibleConstructorReturn3.default)(this, (MStickerBody.__proto__ || (0, _getPrototypeOf2.default)(MStickerBody)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(MStickerBody, [{\n key: 'onClick',\n\n // Empty to prevent default behaviour of MImageBody\n value: function onClick() {}\n\n // MStickerBody doesn't need a wrapping `<a href=...>`, but it does need extra padding\n // which is added by mx_MStickerBody_wrapper\n\n }, {\n key: 'wrapImage',\n value: function wrapImage(contentUrl, children) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MStickerBody_wrapper' },\n ' ',\n children,\n ' '\n );\n }\n\n // Placeholder to show in place of the sticker image if\n // img onLoad hasn't fired yet.\n\n }, {\n key: 'getPlaceholder',\n value: function getPlaceholder() {\n var TintableSVG = _index2.default.getComponent('elements.TintableSvg');\n return _react2.default.createElement(TintableSVG, { src: 'img/icons-show-stickers.svg', width: '75', height: '75' });\n }\n\n // Tooltip to show on mouse over\n\n }, {\n key: 'getTooltip',\n value: function getTooltip() {\n var content = this.props.mxEvent && this.props.mxEvent.getContent();\n\n if (!content || !content.body || !content.info || !content.info.w) return null;\n\n var RoomTooltip = _index2.default.getComponent('rooms.RoomTooltip');\n return _react2.default.createElement(\n 'div',\n { style: { left: content.info.w + 'px' }, className: 'mx_MStickerBody_tooltip' },\n _react2.default.createElement(RoomTooltip, { label: content.body })\n );\n }\n\n // Don't show \"Download this_file.png ...\"\n\n }, {\n key: 'getFileBody',\n value: function getFileBody() {\n return null;\n }\n }]);\n return MStickerBody;\n}(_MImageBody3.default);\n\nexports.default = MStickerBody;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MStickerBody.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MFileBody = require('./MFileBody');\n\nvar _MFileBody2 = _interopRequireDefault(_MFileBody);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _DecryptFile = require('../../../utils/DecryptFile');\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MVideoBody',\n\n propTypes: {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired,\n\n /* called when the video has loaded */\n onWidgetLoad: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n decryptedUrl: null,\n decryptedThumbnailUrl: null,\n decryptedBlob: null,\n error: null\n };\n },\n\n thumbScale: function thumbScale(fullWidth, fullHeight, thumbWidth, thumbHeight) {\n if (!fullWidth || !fullHeight) {\n // Cannot calculate thumbnail height for image: missing w/h in metadata. We can't even\n // log this because it's spammy\n return undefined;\n }\n if (fullWidth < thumbWidth && fullHeight < thumbHeight) {\n // no scaling needs to be applied\n return 1;\n }\n var widthMulti = thumbWidth / fullWidth;\n var heightMulti = thumbHeight / fullHeight;\n if (widthMulti < heightMulti) {\n // width is the dominant dimension so scaling will be fixed on that\n return widthMulti;\n } else {\n // height is the dominant dimension so scaling will be fixed on that\n return heightMulti;\n }\n },\n\n _getContentUrl: function _getContentUrl() {\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined) {\n return this.state.decryptedUrl;\n } else {\n return _MatrixClientPeg2.default.get().mxcUrlToHttp(content.url);\n }\n },\n\n _getThumbUrl: function _getThumbUrl() {\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined) {\n return this.state.decryptedThumbnailUrl;\n } else if (content.info && content.info.thumbnail_url) {\n return _MatrixClientPeg2.default.get().mxcUrlToHttp(content.info.thumbnail_url);\n } else {\n return null;\n }\n },\n\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined && this.state.decryptedUrl === null) {\n var thumbnailPromise = _bluebird2.default.resolve(null);\n if (content.info.thumbnail_file) {\n thumbnailPromise = (0, _DecryptFile.decryptFile)(content.info.thumbnail_file).then(function (blob) {\n return URL.createObjectURL(blob);\n });\n }\n var decryptedBlob = void 0;\n thumbnailPromise.then(function (thumbnailUrl) {\n return (0, _DecryptFile.decryptFile)(content.file).then(function (blob) {\n decryptedBlob = blob;\n return URL.createObjectURL(blob);\n }).then(function (contentUrl) {\n _this.setState({\n decryptedUrl: contentUrl,\n decryptedThumbnailUrl: thumbnailUrl,\n decryptedBlob: decryptedBlob\n });\n _this.props.onWidgetLoad();\n });\n }).catch(function (err) {\n console.warn(\"Unable to decrypt attachment: \", err);\n // Set a placeholder image when we can't decrypt the image.\n _this.setState({\n error: err\n });\n }).done();\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (this.state.decryptedUrl) {\n URL.revokeObjectURL(this.state.decryptedUrl);\n }\n if (this.state.decryptedThumbnailUrl) {\n URL.revokeObjectURL(this.state.decryptedThumbnailUrl);\n }\n },\n\n render: function render() {\n var content = this.props.mxEvent.getContent();\n\n if (this.state.error !== null) {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MVideoBody', ref: 'body' },\n _react2.default.createElement('img', { src: 'img/warning.svg', width: '16', height: '16' }),\n (0, _languageHandler._t)(\"Error decrypting video\")\n );\n }\n\n if (content.file !== undefined && this.state.decryptedUrl === null) {\n // Need to decrypt the attachment\n // The attachment is decrypted in componentDidMount.\n // For now add an img tag with a spinner.\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MVideoBody', ref: 'body' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MImageBody_thumbnail mx_MImageBody_thumbnail_spinner', ref: 'image' },\n _react2.default.createElement('img', { src: 'img/spinner.gif', alt: content.body, width: '16', height: '16' })\n )\n );\n }\n\n var contentUrl = this._getContentUrl();\n var thumbUrl = this._getThumbUrl();\n var autoplay = _SettingsStore2.default.getValue(\"autoplayGifsAndVideos\");\n var height = null;\n var width = null;\n var poster = null;\n var preload = \"metadata\";\n if (content.info) {\n var scale = this.thumbScale(content.info.w, content.info.h, 480, 360);\n if (scale) {\n width = Math.floor(content.info.w * scale);\n height = Math.floor(content.info.h * scale);\n }\n\n if (thumbUrl) {\n poster = thumbUrl;\n preload = \"none\";\n }\n }\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MVideoBody' },\n _react2.default.createElement('video', { className: 'mx_MVideoBody', src: contentUrl, alt: content.body,\n controls: true, preload: preload, muted: autoplay, autoPlay: autoplay,\n height: height, width: width, poster: poster }),\n _react2.default.createElement(_MFileBody2.default, (0, _extends3.default)({}, this.props, { decryptedBlob: this.state.decryptedBlob }))\n );\n }\n});\n//# sourceMappingURL=MVideoBody.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _DateUtils = require('../../../DateUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MessageTimestamp = function (_React$Component) {\n (0, _inherits3.default)(MessageTimestamp, _React$Component);\n\n function MessageTimestamp() {\n (0, _classCallCheck3.default)(this, MessageTimestamp);\n return (0, _possibleConstructorReturn3.default)(this, (MessageTimestamp.__proto__ || (0, _getPrototypeOf2.default)(MessageTimestamp)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(MessageTimestamp, [{\n key: 'render',\n value: function render() {\n var date = new Date(this.props.ts);\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MessageTimestamp', title: (0, _DateUtils.formatFullDate)(date, this.props.showTwelveHour) },\n (0, _DateUtils.formatTime)(date, this.props.showTwelveHour)\n );\n }\n }]);\n return MessageTimestamp;\n}(_react2.default.Component); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nMessageTimestamp.propTypes = {\n ts: _propTypes2.default.number.isRequired,\n showTwelveHour: _propTypes2.default.bool\n};\nexports.default = MessageTimestamp;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MessageTimestamp.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomAvatarEvent',\n\n propTypes: {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired\n },\n\n onAvatarClick: function onAvatarClick(name) {\n var httpUrl = _MatrixClientPeg2.default.get().mxcUrlToHttp(this.props.mxEvent.getContent().url);\n var ImageView = _index2.default.getComponent(\"elements.ImageView\");\n var params = {\n src: httpUrl,\n name: name\n };\n _Modal2.default.createDialog(ImageView, params, \"mx_Dialog_lightbox\");\n },\n\n render: function render() {\n var _this = this;\n\n var ev = this.props.mxEvent;\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n\n var room = _MatrixClientPeg2.default.get().getRoom(this.props.mxEvent.getRoomId());\n var name = (0, _languageHandler._t)('%(senderDisplayName)s changed the avatar for %(roomName)s', {\n senderDisplayName: senderDisplayName,\n roomName: room ? room.name : ''\n });\n\n if (!ev.getContent().url || ev.getContent().url.trim().length === 0) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_TextualEvent' },\n (0, _languageHandler._t)('%(senderDisplayName)s removed the room avatar.', { senderDisplayName: senderDisplayName })\n );\n }\n\n var url = _matrixJsSdk.ContentRepo.getHttpUriForMxc(_MatrixClientPeg2.default.get().getHomeserverUrl(), ev.getContent().url, Math.ceil(14 * window.devicePixelRatio), Math.ceil(14 * window.devicePixelRatio), 'crop');\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomAvatarEvent' },\n (0, _languageHandler._t)('%(senderDisplayName)s changed the room avatar to <img/>', { senderDisplayName: senderDisplayName }, {\n 'img': function img() {\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { key: 'avatar', className: 'mx_RoomAvatarEvent_avatar',\n onClick: _this.onAvatarClick.bind(_this, name) },\n _react2.default.createElement(BaseAvatar, { width: 14, height: 14, url: url, name: name })\n );\n }\n })\n );\n }\n});\n//# sourceMappingURL=RoomAvatarEvent.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _matrixTo = require('../../../matrix-to');\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomCreate',\n\n propTypes: {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired\n },\n\n _onLinkClicked: function _onLinkClicked(e) {\n e.preventDefault();\n\n var predecessor = this.props.mxEvent.getContent()['predecessor'];\n\n _dispatcher2.default.dispatch({\n action: 'view_room',\n event_id: predecessor['event_id'],\n highlighted: true,\n room_id: predecessor['room_id']\n });\n },\n\n render: function render() {\n var predecessor = this.props.mxEvent.getContent()['predecessor'];\n if (predecessor === undefined) {\n return _react2.default.createElement('div', null); // We should never have been instaniated in this case\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_CreateEvent' },\n _react2.default.createElement('img', { className: 'mx_CreateEvent_image', src: 'img/room-continuation.svg' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateEvent_header' },\n (0, _languageHandler._t)(\"This room is a continuation of another conversation.\")\n ),\n _react2.default.createElement(\n 'a',\n { className: 'mx_CreateEvent_link',\n href: (0, _matrixTo.makeEventPermalink)(predecessor['room_id'], predecessor['event_id']),\n onClick: this._onLinkClicked\n },\n (0, _languageHandler._t)(\"Click here to see older messages.\")\n )\n );\n }\n}); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=RoomCreate.js.map","/*\n Copyright 2015, 2016 OpenMarket Ltd\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Flair = require('../elements/Flair.js');\n\nvar _Flair2 = _interopRequireDefault(_Flair);\n\nvar _FlairStore = require('../../../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'SenderProfile',\n propTypes: {\n mxEvent: _propTypes2.default.object.isRequired, // event whose sender we're showing\n text: _propTypes2.default.string, // Text to show. Defaults to sender name\n onClick: _propTypes2.default.func\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getInitialState: function getInitialState() {\n return {\n userGroups: null,\n relatedGroups: []\n };\n },\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this.unmounted = false;\n this._updateRelatedGroups();\n\n _FlairStore2.default.getPublicisedGroupsCached(this.context.matrixClient, this.props.mxEvent.getSender()).then(function (userGroups) {\n if (_this.unmounted) return;\n _this.setState({ userGroups: userGroups });\n });\n\n this.context.matrixClient.on('RoomState.events', this.onRoomStateEvents);\n },\n componentWillUnmount: function componentWillUnmount() {\n this.unmounted = true;\n this.context.matrixClient.removeListener('RoomState.events', this.onRoomStateEvents);\n },\n onRoomStateEvents: function onRoomStateEvents(event) {\n if (event.getType() === 'm.room.related_groups' && event.getRoomId() === this.props.mxEvent.getRoomId()) {\n this._updateRelatedGroups();\n }\n },\n _updateRelatedGroups: function _updateRelatedGroups() {\n if (this.unmounted) return;\n var room = this.context.matrixClient.getRoom(this.props.mxEvent.getRoomId());\n if (!room) return;\n\n var relatedGroupsEvent = room.currentState.getStateEvents('m.room.related_groups', '');\n this.setState({\n relatedGroups: relatedGroupsEvent ? relatedGroupsEvent.getContent().groups || [] : []\n });\n },\n _getDisplayedGroups: function _getDisplayedGroups(userGroups, relatedGroups) {\n var displayedGroups = userGroups || [];\n if (relatedGroups && relatedGroups.length > 0) {\n displayedGroups = relatedGroups.filter(function (groupId) {\n return displayedGroups.includes(groupId);\n });\n } else {\n displayedGroups = [];\n }\n return displayedGroups;\n },\n render: function render() {\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var mxEvent = this.props.mxEvent;\n\n var name = mxEvent.sender ? mxEvent.sender.name : mxEvent.getSender();\n\n var _mxEvent$getContent = mxEvent.getContent(),\n msgtype = _mxEvent$getContent.msgtype;\n\n if (msgtype === 'm.emote') {\n return _react2.default.createElement('span', null); // emote message must include the name so don't duplicate it\n }\n\n var flair = _react2.default.createElement('div', null);\n if (this.props.enableFlair) {\n var displayedGroups = this._getDisplayedGroups(this.state.userGroups, this.state.relatedGroups);\n\n flair = _react2.default.createElement(_Flair2.default, { key: 'flair',\n userId: mxEvent.getSender(),\n groups: displayedGroups\n });\n }\n\n var nameElem = _react2.default.createElement(\n EmojiText,\n { key: 'name' },\n name || ''\n );\n\n // Name + flair\n var nameFlair = _react2.default.createElement(\n 'span',\n null,\n _react2.default.createElement(\n 'span',\n { className: 'mx_SenderProfile_name' },\n nameElem\n ),\n flair\n );\n\n var content = this.props.text ? _react2.default.createElement(\n 'span',\n { className: 'mx_SenderProfile_aux' },\n (0, _languageHandler._t)(this.props.text, { senderName: function senderName() {\n return nameElem;\n } })\n ) : nameFlair;\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_SenderProfile', dir: 'auto', onClick: this.props.onClick },\n content\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=SenderProfile.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _from = require('babel-runtime/core-js/array/from');\n\nvar _from2 = _interopRequireDefault(_from);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _set = require('babel-runtime/core-js/set');\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _highlight = require('highlight.js');\n\nvar _highlight2 = _interopRequireDefault(_highlight);\n\nvar _HtmlUtils = require('../../../HtmlUtils');\n\nvar HtmlUtils = _interopRequireWildcard(_HtmlUtils);\n\nvar _linkifyjs = require('linkifyjs');\n\nvar linkify = _interopRequireWildcard(_linkifyjs);\n\nvar _element = require('linkifyjs/element');\n\nvar _element2 = _interopRequireDefault(_element);\n\nvar _linkifyMatrix = require('../../../linkify-matrix');\n\nvar _linkifyMatrix2 = _interopRequireDefault(_linkifyMatrix);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ScalarAuthClient = require('../../../ScalarAuthClient');\n\nvar _ScalarAuthClient2 = _interopRequireDefault(_ScalarAuthClient);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _ContextualMenu = require('../../structures/ContextualMenu');\n\nvar ContextualMenu = _interopRequireWildcard(_ContextualMenu);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _pushprocessor = require('matrix-js-sdk/lib/pushprocessor');\n\nvar _pushprocessor2 = _interopRequireDefault(_pushprocessor);\n\nvar _ReplyThread = require('../elements/ReplyThread');\n\nvar _ReplyThread2 = _interopRequireDefault(_ReplyThread);\n\nvar _matrixTo = require('../../../matrix-to');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _linkifyMatrix2.default)(linkify);\n\nmodule.exports = _react2.default.createClass({\n displayName: 'TextualBody',\n\n propTypes: {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired,\n\n /* a list of words to highlight */\n highlights: _propTypes2.default.array,\n\n /* link URL for the highlights */\n highlightLink: _propTypes2.default.string,\n\n /* should show URL previews for this event */\n showUrlPreview: _propTypes2.default.bool,\n\n /* callback for when our widget has loaded */\n onWidgetLoad: _propTypes2.default.func,\n\n /* the shape of the tile, used */\n tileShape: _propTypes2.default.string\n },\n\n getInitialState: function getInitialState() {\n return {\n // the URLs (if any) to be previewed with a LinkPreviewWidget\n // inside this TextualBody.\n links: [],\n\n // track whether the preview widget is hidden\n widgetHidden: false\n };\n },\n\n copyToClipboard: function copyToClipboard(text) {\n var textArea = document.createElement(\"textarea\");\n textArea.value = text;\n document.body.appendChild(textArea);\n textArea.select();\n\n var successful = false;\n try {\n successful = document.execCommand('copy');\n } catch (err) {\n console.log('Unable to copy');\n }\n\n document.body.removeChild(textArea);\n return successful;\n },\n\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n this._unmounted = false;\n\n // pillifyLinks BEFORE linkifyElement because plain room/user URLs in the composer\n // are still sent as plaintext URLs. If these are ever pillified in the composer,\n // we should be pillify them here by doing the linkifying BEFORE the pillifying.\n this.pillifyLinks(this.refs.content.children);\n (0, _element2.default)(this.refs.content, _linkifyMatrix2.default.options);\n this.calculateUrlPreview();\n\n if (this.props.mxEvent.getContent().format === \"org.matrix.custom.html\") {\n var blocks = _reactDom2.default.findDOMNode(this).getElementsByTagName(\"code\");\n if (blocks.length > 0) {\n // Do this asynchronously: parsing code takes time and we don't\n // need to block the DOM update on it.\n setTimeout(function () {\n if (_this._unmounted) return;\n for (var i = 0; i < blocks.length; i++) {\n if (_SettingsStore2.default.getValue(\"enableSyntaxHighlightLanguageDetection\")) {\n _highlight2.default.highlightBlock(blocks[i]);\n } else {\n // Only syntax highlight if there's a class starting with language-\n var classes = blocks[i].className.split(/\\s+/).filter(function (cl) {\n return cl.startsWith('language-');\n });\n\n if (classes.length != 0) {\n _highlight2.default.highlightBlock(blocks[i]);\n }\n }\n }\n }, 10);\n }\n this._addCodeCopyButton();\n }\n },\n\n componentDidUpdate: function componentDidUpdate() {\n this.calculateUrlPreview();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n //console.log(\"shouldComponentUpdate: ShowUrlPreview for %s is %s\", this.props.mxEvent.getId(), this.props.showUrlPreview);\n\n // exploit that events are immutable :)\n return nextProps.mxEvent.getId() !== this.props.mxEvent.getId() || nextProps.highlights !== this.props.highlights || nextProps.highlightLink !== this.props.highlightLink || nextProps.showUrlPreview !== this.props.showUrlPreview || nextState.links !== this.state.links || nextState.widgetHidden !== this.state.widgetHidden;\n },\n\n calculateUrlPreview: function calculateUrlPreview() {\n //console.log(\"calculateUrlPreview: ShowUrlPreview for %s is %s\", this.props.mxEvent.getId(), this.props.showUrlPreview);\n\n if (this.props.showUrlPreview && !this.state.links.length) {\n var links = this.findLinks(this.refs.content.children);\n if (links.length) {\n // de-dup the links (but preserve ordering)\n var seen = new _set2.default();\n links = links.filter(function (link) {\n if (seen.has(link)) return false;\n seen.add(link);\n return true;\n });\n\n this.setState({ links: links });\n\n // lazy-load the hidden state of the preview widget from localstorage\n if (global.localStorage) {\n var hidden = global.localStorage.getItem(\"hide_preview_\" + this.props.mxEvent.getId());\n this.setState({ widgetHidden: hidden });\n }\n }\n }\n },\n\n pillifyLinks: function pillifyLinks(nodes) {\n var shouldShowPillAvatar = !_SettingsStore2.default.getValue(\"Pill.shouldHidePillAvatar\");\n var node = nodes[0];\n while (node) {\n var pillified = false;\n\n if (node.tagName === \"A\" && node.getAttribute(\"href\")) {\n var href = node.getAttribute(\"href\");\n\n // If the link is a (localised) matrix.to link, replace it with a pill\n var Pill = _index2.default.getComponent('elements.Pill');\n if (Pill.isMessagePillUrl(href)) {\n var pillContainer = document.createElement('span');\n\n var room = _MatrixClientPeg2.default.get().getRoom(this.props.mxEvent.getRoomId());\n var pill = _react2.default.createElement(Pill, {\n url: href,\n inMessage: true,\n room: room,\n shouldShowPillAvatar: shouldShowPillAvatar\n });\n\n _reactDom2.default.render(pill, pillContainer);\n node.parentNode.replaceChild(pillContainer, node);\n // Pills within pills aren't going to go well, so move on\n pillified = true;\n\n // update the current node with one that's now taken its place\n node = pillContainer;\n }\n } else if (node.nodeType === Node.TEXT_NODE) {\n var _Pill = _index2.default.getComponent('elements.Pill');\n\n var currentTextNode = node;\n var roomNotifTextNodes = [];\n\n // Take a textNode and break it up to make all the instances of @room their\n // own textNode, adding those nodes to roomNotifTextNodes\n while (currentTextNode !== null) {\n var roomNotifPos = _Pill.roomNotifPos(currentTextNode.textContent);\n var nextTextNode = null;\n if (roomNotifPos > -1) {\n var roomTextNode = currentTextNode;\n\n if (roomNotifPos > 0) roomTextNode = roomTextNode.splitText(roomNotifPos);\n if (roomTextNode.textContent.length > _Pill.roomNotifLen()) {\n nextTextNode = roomTextNode.splitText(_Pill.roomNotifLen());\n }\n roomNotifTextNodes.push(roomTextNode);\n }\n currentTextNode = nextTextNode;\n }\n\n if (roomNotifTextNodes.length > 0) {\n var pushProcessor = new _pushprocessor2.default(_MatrixClientPeg2.default.get());\n var atRoomRule = pushProcessor.getPushRuleById(\".m.rule.roomnotif\");\n if (atRoomRule && pushProcessor.ruleMatchesEvent(atRoomRule, this.props.mxEvent)) {\n // Now replace all those nodes with Pills\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(roomNotifTextNodes), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var roomNotifTextNode = _step.value;\n\n // Set the next node to be processed to the one after the node\n // we're adding now, since we've just inserted nodes into the structure\n // we're iterating over.\n // Note we've checked roomNotifTextNodes.length > 0 so we'll do this at least once\n node = roomNotifTextNode.nextSibling;\n\n var _pillContainer = document.createElement('span');\n var _room = _MatrixClientPeg2.default.get().getRoom(this.props.mxEvent.getRoomId());\n var _pill = _react2.default.createElement(_Pill, {\n type: _Pill.TYPE_AT_ROOM_MENTION,\n inMessage: true,\n room: _room,\n shouldShowPillAvatar: true\n });\n\n _reactDom2.default.render(_pill, _pillContainer);\n roomNotifTextNode.parentNode.replaceChild(_pillContainer, roomNotifTextNode);\n }\n // Nothing else to do for a text node (and we don't need to advance\n // the loop pointer because we did it above)\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n continue;\n }\n }\n }\n\n if (node.childNodes && node.childNodes.length && !pillified) {\n this.pillifyLinks(node.childNodes);\n }\n\n node = node.nextSibling;\n }\n },\n\n findLinks: function findLinks(nodes) {\n var links = [];\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n if (node.tagName === \"A\" && node.getAttribute(\"href\")) {\n if (this.isLinkPreviewable(node)) {\n links.push(node.getAttribute(\"href\"));\n }\n } else if (node.tagName === \"PRE\" || node.tagName === \"CODE\" || node.tagName === \"BLOCKQUOTE\") {\n continue;\n } else if (node.children && node.children.length) {\n links = links.concat(this.findLinks(node.children));\n }\n }\n return links;\n },\n\n isLinkPreviewable: function isLinkPreviewable(node) {\n // don't try to preview relative links\n if (!node.getAttribute(\"href\").startsWith(\"http://\") && !node.getAttribute(\"href\").startsWith(\"https://\")) {\n return false;\n }\n\n // as a random heuristic to avoid highlighting things like \"foo.pl\"\n // we require the linked text to either include a / (either from http://\n // or from a full foo.bar/baz style schemeless URL) - or be a markdown-style\n // link, in which case we check the target text differs from the link value.\n // TODO: make this configurable?\n if (node.textContent.indexOf(\"/\") > -1) {\n return true;\n } else {\n var url = node.getAttribute(\"href\");\n var host = url.match(/^https?:\\/\\/(.*?)(\\/|$)/)[1];\n\n // never preview matrix.to links (if anything we should give a smart\n // preview of the room/user they point to: nobody needs to be reminded\n // what the matrix.to site looks like).\n if (host === _matrixTo.host) return false;\n\n if (node.textContent.toLowerCase().trim().startsWith(host.toLowerCase())) {\n // it's a \"foo.pl\" style link\n return false;\n } else {\n // it's a [foo bar](http://foo.com) style link\n return true;\n }\n }\n },\n\n _addCodeCopyButton: function _addCodeCopyButton() {\n var _this2 = this;\n\n // Add 'copy' buttons to pre blocks\n (0, _from2.default)(_reactDom2.default.findDOMNode(this).querySelectorAll('.mx_EventTile_body pre')).forEach(function (p) {\n var button = document.createElement(\"span\");\n button.className = \"mx_EventTile_copyButton\";\n button.onclick = function (e) {\n var copyCode = button.parentNode.getElementsByTagName(\"code\")[0];\n var successful = _this2.copyToClipboard(copyCode.textContent);\n\n var GenericTextContextMenu = _index2.default.getComponent('context_menus.GenericTextContextMenu');\n var buttonRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = buttonRect.right + window.pageXOffset;\n var y = buttonRect.top + buttonRect.height / 2 + window.pageYOffset - 19;\n\n var _ContextualMenu$creat = ContextualMenu.createMenu(GenericTextContextMenu, {\n chevronOffset: 10,\n left: x,\n top: y,\n message: successful ? (0, _languageHandler._t)('Copied!') : (0, _languageHandler._t)('Failed to copy')\n }, false),\n close = _ContextualMenu$creat.close;\n\n e.target.onmouseleave = close;\n };\n\n // Wrap a div around <pre> so that the copy button can be correctly positioned\n // when the <pre> overflows and is scrolled horizontally.\n var div = document.createElement(\"div\");\n div.className = \"mx_EventTile_pre_container\";\n\n // Insert containing div in place of <pre> block\n p.parentNode.replaceChild(div, p);\n\n // Append <pre> block and copy button to container\n div.appendChild(p);\n div.appendChild(button);\n });\n },\n\n\n onCancelClick: function onCancelClick(event) {\n this.setState({ widgetHidden: true });\n // FIXME: persist this somewhere smarter than local storage\n if (global.localStorage) {\n global.localStorage.setItem(\"hide_preview_\" + this.props.mxEvent.getId(), \"1\");\n }\n this.forceUpdate();\n },\n\n onEmoteSenderClick: function onEmoteSenderClick(event) {\n var mxEvent = this.props.mxEvent;\n _dispatcher2.default.dispatch({\n action: 'insert_mention',\n user_id: mxEvent.getSender()\n });\n },\n\n getEventTileOps: function getEventTileOps() {\n var _this3 = this;\n\n return {\n isWidgetHidden: function isWidgetHidden() {\n return _this3.state.widgetHidden;\n },\n\n unhideWidget: function unhideWidget() {\n _this3.setState({ widgetHidden: false });\n if (global.localStorage) {\n global.localStorage.removeItem(\"hide_preview_\" + _this3.props.mxEvent.getId());\n }\n },\n\n getInnerText: function getInnerText() {\n return _this3.refs.content.innerText;\n }\n };\n },\n\n onStarterLinkClick: function onStarterLinkClick(starterLink, ev) {\n ev.preventDefault();\n // We need to add on our scalar token to the starter link, but we may not have one!\n // In addition, we can't fetch one on click and then go to it immediately as that\n // is then treated as a popup!\n // We can get around this by fetching one now and showing a \"confirmation dialog\" (hurr hurr)\n // which requires the user to click through and THEN we can open the link in a new tab because\n // the window.open command occurs in the same stack frame as the onClick callback.\n\n // Go fetch a scalar token\n var scalarClient = new _ScalarAuthClient2.default();\n scalarClient.connect().then(function () {\n var completeUrl = scalarClient.getStarterLink(starterLink);\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n var integrationsUrl = _SdkConfig2.default.get().integrations_ui_url;\n _Modal2.default.createTrackedDialog('Add an integration', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Add an Integration\"),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"You are about to be taken to a third-party site so you can \" + \"authenticate your account for use with %(integrationsUrl)s. \" + \"Do you wish to continue?\", { integrationsUrl: integrationsUrl })\n ),\n button: (0, _languageHandler._t)(\"Continue\"),\n onFinished: function onFinished(confirmed) {\n if (!confirmed) {\n return;\n }\n var width = window.screen.width > 1024 ? 1024 : window.screen.width;\n var height = window.screen.height > 800 ? 800 : window.screen.height;\n var left = (window.screen.width - width) / 2;\n var top = (window.screen.height - height) / 2;\n window.open(completeUrl, '_blank', 'height=' + height + ', width=' + width + ', top=' + top + ', left=' + left + ',');\n }\n });\n });\n },\n\n render: function render() {\n var _this4 = this;\n\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var mxEvent = this.props.mxEvent;\n var content = mxEvent.getContent();\n\n var stripReply = _ReplyThread2.default.getParentEventId(mxEvent);\n var body = HtmlUtils.bodyToHtml(content, this.props.highlights, {\n disableBigEmoji: _SettingsStore2.default.getValue('TextualBody.disableBigEmoji'),\n // Part of Replies fallback support\n stripReplyFallback: stripReply\n });\n\n if (this.props.highlightLink) {\n body = _react2.default.createElement(\n 'a',\n { href: this.props.highlightLink },\n body\n );\n } else if (content.data && typeof content.data[\"org.matrix.neb.starter_link\"] === \"string\") {\n body = _react2.default.createElement(\n 'a',\n { href: '#', onClick: this.onStarterLinkClick.bind(this, content.data[\"org.matrix.neb.starter_link\"]) },\n body\n );\n }\n\n var widgets = void 0;\n if (this.state.links.length && !this.state.widgetHidden && this.props.showUrlPreview) {\n var LinkPreviewWidget = _index2.default.getComponent('rooms.LinkPreviewWidget');\n widgets = this.state.links.map(function (link) {\n return _react2.default.createElement(LinkPreviewWidget, {\n key: link,\n link: link,\n mxEvent: _this4.props.mxEvent,\n onCancelClick: _this4.onCancelClick,\n onWidgetLoad: _this4.props.onWidgetLoad });\n });\n }\n\n switch (content.msgtype) {\n case \"m.emote\":\n var name = mxEvent.sender ? mxEvent.sender.name : mxEvent.getSender();\n return _react2.default.createElement(\n 'span',\n { ref: 'content', className: 'mx_MEmoteBody mx_EventTile_content' },\n '*\\xA0',\n _react2.default.createElement(\n EmojiText,\n {\n className: 'mx_MEmoteBody_sender',\n onClick: this.onEmoteSenderClick\n },\n name\n ),\n '\\xA0',\n body,\n widgets\n );\n case \"m.notice\":\n return _react2.default.createElement(\n 'span',\n { ref: 'content', className: 'mx_MNoticeBody mx_EventTile_content' },\n body,\n widgets\n );\n default:\n // including \"m.text\"\n return _react2.default.createElement(\n 'span',\n { ref: 'content', className: 'mx_MTextBody mx_EventTile_content' },\n body,\n widgets\n );\n }\n }\n});\n//# sourceMappingURL=TextualBody.js.map","'use strict';\n\nexports.__esModule = true;\n\nvar _linkify = require('./linkify');\n\nvar linkify = _interopRequireWildcard(_linkify);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar tokenize = linkify.tokenize,\n options = linkify.options; /**\n \tLinkify a HTML DOM node\n */\n\nvar Options = options.Options;\n\n\nvar TEXT_TOKEN = linkify.parser.TOKENS.TEXT;\n\nvar HTML_NODE = 1,\n TXT_NODE = 3;\n\n/**\n\tGiven a parent element and child node that the parent contains, replaces\n\tthat child with the given array of new children\n*/\nfunction replaceChildWithChildren(parent, oldChild, newChildren) {\n\tvar lastNewChild = newChildren[newChildren.length - 1];\n\tparent.replaceChild(lastNewChild, oldChild);\n\tfor (var i = newChildren.length - 2; i >= 0; i--) {\n\t\tparent.insertBefore(newChildren[i], lastNewChild);\n\t\tlastNewChild = newChildren[i];\n\t}\n}\n\n/**\n\tGiven an array of MultiTokens, return an array of Nodes that are either\n\t(a) Plain Text nodes (node type 3)\n\t(b) Anchor tag nodes (usually, unless tag name is overridden in the options)\n\n\tTakes the same options as linkifyElement and an optional doc element\n\t(this should be passed in by linkifyElement)\n*/\nfunction tokensToNodes(tokens, opts, doc) {\n\tvar result = [];\n\n\tfor (var _iterator = tokens, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n\t\tvar _ref;\n\n\t\tif (_isArray) {\n\t\t\tif (_i >= _iterator.length) break;\n\t\t\t_ref = _iterator[_i++];\n\t\t} else {\n\t\t\t_i = _iterator.next();\n\t\t\tif (_i.done) break;\n\t\t\t_ref = _i.value;\n\t\t}\n\n\t\tvar token = _ref;\n\n\t\tif (token.type === 'nl' && opts.nl2br) {\n\t\t\tresult.push(doc.createElement('br'));\n\t\t\tcontinue;\n\t\t} else if (!token.isLink || !opts.check(token)) {\n\t\t\tresult.push(doc.createTextNode(token.toString()));\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar _opts$resolve = opts.resolve(token),\n\t\t formatted = _opts$resolve.formatted,\n\t\t formattedHref = _opts$resolve.formattedHref,\n\t\t tagName = _opts$resolve.tagName,\n\t\t className = _opts$resolve.className,\n\t\t target = _opts$resolve.target,\n\t\t events = _opts$resolve.events,\n\t\t attributes = _opts$resolve.attributes;\n\n\t\t// Build the link\n\n\n\t\tvar link = doc.createElement(tagName);\n\t\tlink.setAttribute('href', formattedHref);\n\n\t\tif (className) {\n\t\t\tlink.setAttribute('class', className);\n\t\t}\n\n\t\tif (target) {\n\t\t\tlink.setAttribute('target', target);\n\t\t}\n\n\t\t// Build up additional attributes\n\t\tif (attributes) {\n\t\t\tfor (var attr in attributes) {\n\t\t\t\tlink.setAttribute(attr, attributes[attr]);\n\t\t\t}\n\t\t}\n\n\t\tif (events) {\n\t\t\tfor (var event in events) {\n\t\t\t\tif (link.addEventListener) {\n\t\t\t\t\tlink.addEventListener(event, events[event]);\n\t\t\t\t} else if (link.attachEvent) {\n\t\t\t\t\tlink.attachEvent('on' + event, events[event]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlink.appendChild(doc.createTextNode(formatted));\n\t\tresult.push(link);\n\t}\n\n\treturn result;\n}\n\n// Requires document.createElement\nfunction linkifyElementHelper(element, opts, doc) {\n\n\t// Can the element be linkified?\n\tif (!element || element.nodeType !== HTML_NODE) {\n\t\tthrow new Error('Cannot linkify ' + element + ' - Invalid DOM Node type');\n\t}\n\n\tvar ignoreTags = opts.ignoreTags;\n\n\t// Is this element already a link?\n\tif (element.tagName === 'A' || options.contains(ignoreTags, element.tagName)) {\n\t\t// No need to linkify\n\t\treturn element;\n\t}\n\n\tvar childElement = element.firstChild;\n\n\twhile (childElement) {\n\t\tvar str = void 0,\n\t\t tokens = void 0,\n\t\t nodes = void 0;\n\n\t\tswitch (childElement.nodeType) {\n\t\t\tcase HTML_NODE:\n\t\t\t\tlinkifyElementHelper(childElement, opts, doc);\n\t\t\t\tbreak;\n\t\t\tcase TXT_NODE:\n\t\t\t\t{\n\t\t\t\t\tstr = childElement.nodeValue;\n\t\t\t\t\ttokens = tokenize(str);\n\n\t\t\t\t\tif (tokens.length === 0 || tokens.length === 1 && tokens[0] instanceof TEXT_TOKEN) {\n\t\t\t\t\t\t// No node replacement required\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tnodes = tokensToNodes(tokens, opts, doc);\n\n\t\t\t\t\t// Swap out the current child for the set of nodes\n\t\t\t\t\treplaceChildWithChildren(element, childElement, nodes);\n\n\t\t\t\t\t// so that the correct sibling is selected next\n\t\t\t\t\tchildElement = nodes[nodes.length - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\n\t\tchildElement = childElement.nextSibling;\n\t}\n\n\treturn element;\n}\n\nfunction linkifyElement(element, opts) {\n\tvar doc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\n\ttry {\n\t\tdoc = doc || document || window && window.document || global && global.document;\n\t} catch (e) {/* do nothing for now */}\n\n\tif (!doc) {\n\t\tthrow new Error('Cannot find document implementation. ' + 'If you are in a non-browser environment like Node.js, ' + 'pass the document implementation as the third argument to linkifyElement.');\n\t}\n\n\topts = new Options(opts);\n\treturn linkifyElementHelper(element, opts, doc);\n}\n\n// Maintain reference to the recursive helper to cache option-normalization\nlinkifyElement.helper = linkifyElementHelper;\nlinkifyElement.normalize = function (opts) {\n\treturn new Options(opts);\n};\n\nexports.default = linkifyElement;","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nvar TextForEvent = require('../../../TextForEvent');\n\n\nmodule.exports = React.createClass({\n displayName: 'TextualEvent',\n\n propTypes: {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired\n },\n\n render: function render() {\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var text = TextForEvent.textForEvent(this.props.mxEvent);\n if (text == null || text.length === 0) return null;\n return React.createElement(\n EmojiText,\n { element: 'div', className: 'mx_TextualEvent' },\n text\n );\n }\n});\n//# sourceMappingURL=TextualEvent.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'UnknownBody',\n\n render: function render() {\n var tooltip = (0, _languageHandler._t)(\"Removed or unknown message type\");\n if (this.props.mxEvent.isRedacted()) {\n var redactedBecauseUserId = this.props.mxEvent.getUnsigned().redacted_because.sender;\n tooltip = redactedBecauseUserId ? (0, _languageHandler._t)(\"Message removed by %(userId)s\", { userId: redactedBecauseUserId }) : (0, _languageHandler._t)(\"Message removed\");\n }\n\n var text = this.props.mxEvent.getContent().body;\n return _react2.default.createElement(\n 'span',\n { className: 'mx_UnknownBody', title: tooltip },\n text\n );\n }\n});\n//# sourceMappingURL=UnknownBody.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react'); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar ObjectUtils = require(\"../../../ObjectUtils\");\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar sdk = require(\"../../../index\");\n\nvar Modal = require(\"../../../Modal\");\n\nmodule.exports = React.createClass({\n displayName: 'AliasSettings',\n\n propTypes: {\n roomId: _propTypes2.default.string.isRequired,\n canSetCanonicalAlias: _propTypes2.default.bool.isRequired,\n canSetAliases: _propTypes2.default.bool.isRequired,\n aliasEvents: _propTypes2.default.array, // [MatrixEvent]\n canonicalAliasEvent: _propTypes2.default.object // MatrixEvent\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n canSetAliases: false,\n canSetCanonicalAlias: false,\n aliasEvents: []\n };\n },\n\n getInitialState: function getInitialState() {\n return this.recalculateState(this.props.aliasEvents, this.props.canonicalAliasEvent);\n },\n\n recalculateState: function recalculateState(aliasEvents, canonicalAliasEvent) {\n aliasEvents = aliasEvents || [];\n\n var state = {\n domainToAliases: {}, // { domain.com => [#alias1:domain.com, #alias2:domain.com] }\n remoteDomains: [], // [ domain.com, foobar.com ]\n canonicalAlias: null // #canonical:domain.com\n };\n var localDomain = MatrixClientPeg.get().getDomain();\n\n state.domainToAliases = this.aliasEventsToDictionary(aliasEvents);\n\n state.remoteDomains = (0, _keys2.default)(state.domainToAliases).filter(function (domain) {\n return domain !== localDomain && state.domainToAliases[domain].length > 0;\n });\n\n if (canonicalAliasEvent) {\n state.canonicalAlias = canonicalAliasEvent.getContent().alias;\n }\n\n return state;\n },\n\n saveSettings: function saveSettings() {\n var promises = [];\n\n // save new aliases for m.room.aliases\n var aliasOperations = this.getAliasOperations();\n for (var i = 0; i < aliasOperations.length; i++) {\n var alias_operation = aliasOperations[i];\n console.log(\"alias %s %s\", alias_operation.place, alias_operation.val);\n switch (alias_operation.place) {\n case 'add':\n promises.push(MatrixClientPeg.get().createAlias(alias_operation.val, this.props.roomId));\n break;\n case 'del':\n promises.push(MatrixClientPeg.get().deleteAlias(alias_operation.val));\n break;\n default:\n console.log(\"Unknown alias operation, ignoring: \" + alias_operation.place);\n }\n }\n\n var oldCanonicalAlias = null;\n if (this.props.canonicalAliasEvent) {\n oldCanonicalAlias = this.props.canonicalAliasEvent.getContent().alias;\n }\n\n var newCanonicalAlias = this.state.canonicalAlias;\n\n if (this.props.canSetCanonicalAlias && oldCanonicalAlias !== newCanonicalAlias) {\n console.log(\"AliasSettings: Updating canonical alias\");\n promises = [_bluebird2.default.all(promises).then(MatrixClientPeg.get().sendStateEvent(this.props.roomId, \"m.room.canonical_alias\", {\n alias: newCanonicalAlias\n }, \"\"))];\n }\n\n return promises;\n },\n\n aliasEventsToDictionary: function aliasEventsToDictionary(aliasEvents) {\n // m.room.alias events\n var dict = {};\n aliasEvents.forEach(function (event) {\n dict[event.getStateKey()] = (event.getContent().aliases || []).slice() // shallow-copy\n ;\n });\n return dict;\n },\n\n isAliasValid: function isAliasValid(alias) {\n // XXX: FIXME https://github.com/matrix-org/matrix-doc/issues/668\n return alias.match(/^#([^\\/:,]+?):(.+)$/) && encodeURI(alias) === alias;\n },\n\n getAliasOperations: function getAliasOperations() {\n var oldAliases = this.aliasEventsToDictionary(this.props.aliasEvents);\n return ObjectUtils.getKeyValueArrayDiffs(oldAliases, this.state.domainToAliases);\n },\n\n onNewAliasChanged: function onNewAliasChanged(value) {\n this.setState({ newAlias: value });\n },\n\n onLocalAliasAdded: function onLocalAliasAdded(alias) {\n if (!alias || alias.length === 0) return; // ignore attempts to create blank aliases\n\n var localDomain = MatrixClientPeg.get().getDomain();\n if (!alias.includes(':')) alias += ':' + localDomain;\n if (this.isAliasValid(alias) && alias.endsWith(localDomain)) {\n this.state.domainToAliases[localDomain] = this.state.domainToAliases[localDomain] || [];\n this.state.domainToAliases[localDomain].push(alias);\n\n this.setState({\n domainToAliases: this.state.domainToAliases,\n // Reset the add field\n newAlias: \"\"\n });\n } else {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Invalid alias format', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Invalid alias format'),\n description: (0, _languageHandler._t)('\\'%(alias)s\\' is not a valid format for an alias', { alias: alias })\n });\n }\n\n if (!this.props.canonicalAlias) {\n this.setState({\n canonicalAlias: alias\n });\n }\n },\n\n onLocalAliasChanged: function onLocalAliasChanged(alias, index) {\n if (alias === \"\") return; // hit the delete button to delete please\n var localDomain = MatrixClientPeg.get().getDomain();\n if (!alias.includes(':')) alias += ':' + localDomain;\n if (this.isAliasValid(alias) && alias.endsWith(localDomain)) {\n this.state.domainToAliases[localDomain][index] = alias;\n } else {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Invalid address format', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Invalid address format'),\n description: (0, _languageHandler._t)('\\'%(alias)s\\' is not a valid format for an address', { alias: alias })\n });\n }\n },\n\n onLocalAliasDeleted: function onLocalAliasDeleted(index) {\n var localDomain = MatrixClientPeg.get().getDomain();\n // It's a bit naughty to directly manipulate this.state, and React would\n // normally whine at you, but it can't see us doing the splice. Given we\n // promptly setState anyway, it's just about acceptable. The alternative\n // would be to arbitrarily deepcopy to a temp variable and then setState\n // that, but why bother when we can cut this corner.\n var alias = this.state.domainToAliases[localDomain].splice(index, 1);\n this.setState({\n domainToAliases: this.state.domainToAliases\n });\n if (this.props.canonicalAlias === alias) {\n this.setState({\n canonicalAlias: null\n });\n }\n },\n\n onCanonicalAliasChange: function onCanonicalAliasChange(event) {\n this.setState({\n canonicalAlias: event.target.value\n });\n },\n\n render: function render() {\n var _this = this;\n\n var self = this;\n var EditableText = sdk.getComponent(\"elements.EditableText\");\n var EditableItemList = sdk.getComponent(\"elements.EditableItemList\");\n var localDomain = MatrixClientPeg.get().getDomain();\n\n var canonical_alias_section = void 0;\n if (this.props.canSetCanonicalAlias) {\n var found = false;\n var canonicalValue = this.state.canonicalAlias || \"\";\n canonical_alias_section = React.createElement(\n 'select',\n { onChange: this.onCanonicalAliasChange, value: canonicalValue },\n React.createElement(\n 'option',\n { value: '', key: 'unset' },\n (0, _languageHandler._t)('not specified')\n ),\n (0, _keys2.default)(self.state.domainToAliases).map(function (domain, i) {\n return self.state.domainToAliases[domain].map(function (alias, j) {\n if (alias === _this.state.canonicalAlias) found = true;\n return React.createElement(\n 'option',\n { value: alias, key: i + \"_\" + j },\n alias\n );\n });\n }),\n found || !this.stateCanonicalAlias ? '' : React.createElement(\n 'option',\n { value: this.state.canonicalAlias, key: 'arbitrary' },\n this.state.canonicalAlias\n )\n );\n } else {\n canonical_alias_section = React.createElement(\n 'b',\n null,\n this.state.canonicalAlias || (0, _languageHandler._t)('not set')\n );\n }\n\n var remote_aliases_section = void 0;\n if (this.state.remoteDomains.length) {\n remote_aliases_section = React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { className: 'mx_RoomSettings_aliasLabel' },\n (0, _languageHandler._t)(\"Remote addresses for this room:\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_RoomSettings_aliasesTable' },\n this.state.remoteDomains.map(function (domain, i) {\n return _this.state.domainToAliases[domain].map(function (alias, j) {\n return React.createElement(\n 'div',\n { className: 'mx_RoomSettings_aliasesTableRow', key: i + \"_\" + j },\n React.createElement(EditableText, {\n className: 'mx_RoomSettings_alias mx_RoomSettings_editable',\n blurToCancel: false,\n editable: false,\n initialValue: alias })\n );\n });\n })\n )\n );\n }\n\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Addresses')\n ),\n React.createElement(\n 'div',\n { className: 'mx_RoomSettings_aliasLabel' },\n (0, _languageHandler._t)('The main address for this room is'),\n ': ',\n canonical_alias_section\n ),\n React.createElement(EditableItemList, {\n className: \"mx_RoomSettings_localAliases\",\n items: this.state.domainToAliases[localDomain] || [],\n newItem: this.state.newAlias,\n onNewItemChanged: this.onNewAliasChanged,\n canEdit: this.props.canSetAliases,\n onItemAdded: this.onLocalAliasAdded,\n onItemEdited: this.onLocalAliasChanged,\n onItemRemoved: this.onLocalAliasDeleted,\n itemsLabel: (0, _languageHandler._t)('Local addresses for this room:'),\n noItemsLabel: (0, _languageHandler._t)('This room has no local addresses'),\n placeholder: (0, _languageHandler._t)('New address (e.g. #foo:%(localDomain)s)', { localDomain: localDomain })\n }),\n remote_aliases_section\n );\n }\n});\n//# sourceMappingURL=AliasSettings.js.map","'use strict';\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react'); /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n\nvar sdk = require('../../../index');\nvar Tinter = require('../../../Tinter');\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\");\nvar Modal = require(\"../../../Modal\");\n\nvar ROOM_COLORS = [\n// magic room default values courtesy of Ribot\n[Tinter.getKeyRgb()[0], Tinter.getKeyRgb()[1]], [\"#81bddb\", \"#eaf1f4\"], [\"#bd79cb\", \"#f3eaf5\"], [\"#c65d94\", \"#f5eaef\"], [\"#e55e5e\", \"#f5eaea\"], [\"#eca46f\", \"#f5eeea\"], [\"#dad658\", \"#f5f4ea\"], [\"#80c553\", \"#eef5ea\"], [\"#bb814e\", \"#eee8e3\"]];\n\nmodule.exports = React.createClass({\n displayName: 'ColorSettings',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n var data = {\n index: 0,\n primary_color: ROOM_COLORS[0][0],\n secondary_color: ROOM_COLORS[0][1],\n hasChanged: false\n };\n var scheme = _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.ROOM_ACCOUNT, \"roomColor\", this.props.room.roomId);\n\n if (scheme.primary_color && scheme.secondary_color) {\n // We only use the user's scheme if the scheme is valid.\n data.primary_color = scheme.primary_color;\n data.secondary_color = scheme.secondary_color;\n }\n data.index = this._getColorIndex(data);\n\n if (data.index === -1) {\n // append the unrecognised colours to our palette\n data.index = ROOM_COLORS.length;\n ROOM_COLORS.push([scheme.primary_color, scheme.secondary_color]);\n }\n return data;\n },\n\n saveSettings: function saveSettings() {\n // : Promise\n if (!this.state.hasChanged) {\n return _bluebird2.default.resolve(); // They didn't explicitly give a color to save.\n }\n var originalState = this.getInitialState();\n if (originalState.primary_color !== this.state.primary_color || originalState.secondary_color !== this.state.secondary_color) {\n console.log(\"ColorSettings: Saving new color\");\n // We would like guests to be able to set room colour but currently\n // they can't, so we still send the request but display a sensible\n // error if it fails.\n // TODO: Support guests for room color. Technically this is possible via granular settings\n // Granular settings would mean the guest is forced to use the DEVICE level though.\n _SettingsStore2.default.setValue(\"roomColor\", this.props.room.roomId, _SettingsStore.SettingLevel.ROOM_ACCOUNT, {\n primary_color: this.state.primary_color,\n secondary_color: this.state.secondary_color\n }).catch(function (err) {\n if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN') {\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n }\n });\n }\n return _bluebird2.default.resolve(); // no color diff\n },\n\n _getColorIndex: function _getColorIndex(scheme) {\n if (!scheme || !scheme.primary_color || !scheme.secondary_color) {\n return -1;\n }\n // XXX: we should validate these values\n for (var i = 0; i < ROOM_COLORS.length; i++) {\n var room_color = ROOM_COLORS[i];\n if (room_color[0] === String(scheme.primary_color).toLowerCase() && room_color[1] === String(scheme.secondary_color).toLowerCase()) {\n return i;\n }\n }\n return -1;\n },\n\n _onColorSchemeChanged: function _onColorSchemeChanged(index) {\n // preview what the user just changed the scheme to.\n Tinter.tint(ROOM_COLORS[index][0], ROOM_COLORS[index][1]);\n this.setState({\n index: index,\n primary_color: ROOM_COLORS[index][0],\n secondary_color: ROOM_COLORS[index][1],\n hasChanged: true\n });\n },\n\n render: function render() {\n var _this = this;\n\n return React.createElement(\n 'div',\n { className: 'mx_RoomSettings_roomColors' },\n ROOM_COLORS.map(function (room_color, i) {\n var selected = void 0;\n if (i === _this.state.index) {\n selected = React.createElement(\n 'div',\n { className: 'mx_RoomSettings_roomColor_selected' },\n React.createElement('img', { src: 'img/tick.svg', width: '17', height: '14', alt: './' })\n );\n }\n var boundClick = _this._onColorSchemeChanged.bind(_this, i);\n return React.createElement(\n 'div',\n { className: 'mx_RoomSettings_roomColor',\n key: \"room_color_\" + i,\n style: { backgroundColor: room_color[1] },\n onClick: boundClick },\n selected,\n React.createElement('div', { className: 'mx_RoomSettings_roomColorPrimary', style: { backgroundColor: room_color[0] } })\n );\n })\n );\n }\n});\n//# sourceMappingURL=ColorSettings.js.map","'use strict';\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _isEqual = require('lodash/isEqual');\n\nvar _isEqual2 = _interopRequireDefault(_isEqual);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar GROUP_ID_REGEX = /\\+\\S+:\\S+/; /*\n Copyright 2017 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RelatedGroupSettings',\n\n propTypes: {\n roomId: _propTypes2.default.string.isRequired,\n canSetRelatedGroups: _propTypes2.default.bool.isRequired,\n relatedGroupsEvent: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixEvent)\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n canSetRelatedGroups: false\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n newGroupsList: this.getInitialGroupList(),\n newGroupId: null\n };\n },\n\n getInitialGroupList: function getInitialGroupList() {\n return this.props.relatedGroupsEvent ? this.props.relatedGroupsEvent.getContent().groups || [] : [];\n },\n\n needsSaving: function needsSaving() {\n var cli = this.context.matrixClient;\n var room = cli.getRoom(this.props.roomId);\n if (!room.currentState.maySendStateEvent('m.room.related_groups', cli.getUserId())) return false;\n return !(0, _isEqual2.default)(this.getInitialGroupList(), this.state.newGroupsList);\n },\n\n saveSettings: function saveSettings() {\n if (!this.needsSaving()) return _promise2.default.resolve();\n\n return this.context.matrixClient.sendStateEvent(this.props.roomId, 'm.room.related_groups', {\n groups: this.state.newGroupsList\n }, '');\n },\n\n validateGroupId: function validateGroupId(groupId) {\n if (!GROUP_ID_REGEX.test(groupId)) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Invalid related community ID', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Invalid community ID'),\n description: (0, _languageHandler._t)('\\'%(groupId)s\\' is not a valid community ID', { groupId: groupId })\n });\n return false;\n }\n return true;\n },\n\n onNewGroupChanged: function onNewGroupChanged(newGroupId) {\n this.setState({ newGroupId: newGroupId });\n },\n\n onGroupAdded: function onGroupAdded(groupId) {\n if (groupId.length === 0 || !this.validateGroupId(groupId)) {\n return;\n }\n this.setState({\n newGroupsList: this.state.newGroupsList.concat([groupId]),\n newGroupId: ''\n });\n },\n\n onGroupEdited: function onGroupEdited(groupId, index) {\n if (groupId.length === 0 || !this.validateGroupId(groupId)) {\n return;\n }\n this.setState({\n newGroupsList: (0, _assign2.default)(this.state.newGroupsList, (0, _defineProperty3.default)({}, index, groupId))\n });\n },\n\n onGroupDeleted: function onGroupDeleted(index) {\n var newGroupsList = this.state.newGroupsList.slice();\n newGroupsList.splice(index, 1);\n this.setState({ newGroupsList: newGroupsList });\n },\n\n render: function render() {\n var localDomain = this.context.matrixClient.getDomain();\n var EditableItemList = _index2.default.getComponent('elements.EditableItemList');\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Flair')\n ),\n _react2.default.createElement(EditableItemList, {\n items: this.state.newGroupsList,\n className: \"mx_RelatedGroupSettings\",\n newItem: this.state.newGroupId,\n canEdit: this.props.canSetRelatedGroups,\n onNewItemChanged: this.onNewGroupChanged,\n onItemAdded: this.onGroupAdded,\n onItemEdited: this.onGroupEdited,\n onItemRemoved: this.onGroupDeleted,\n itemsLabel: (0, _languageHandler._t)('Showing flair for these communities:'),\n noItemsLabel: (0, _languageHandler._t)('This room is not showing flair for any communities'),\n placeholder: (0, _languageHandler._t)('New community ID (e.g. +foo:%(localDomain)s)', { localDomain: localDomain })\n })\n );\n }\n});\n//# sourceMappingURL=RelatedGroupSettings.js.map","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","'use strict';\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react'); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 Travis Ralston\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar sdk = require(\"../../../index\");\n\n\nmodule.exports = React.createClass({\n displayName: 'UrlPreviewSettings',\n\n propTypes: {\n room: _propTypes2.default.object\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n },\n\n saveSettings: function saveSettings() {\n var promises = [];\n if (this.refs.urlPreviewsRoom) promises.push(this.refs.urlPreviewsRoom.save());\n if (this.refs.urlPreviewsSelf) promises.push(this.refs.urlPreviewsSelf.save());\n return promises;\n },\n\n render: function render() {\n var SettingsFlag = sdk.getComponent(\"elements.SettingsFlag\");\n var roomId = this.props.room.roomId;\n var isEncrypted = this.context.matrixClient.isRoomEncrypted(roomId);\n\n var previewsForAccount = null;\n var previewsForRoom = null;\n\n if (!isEncrypted) {\n // Only show account setting state and room state setting state in non-e2ee rooms where they apply\n var accountEnabled = _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.ACCOUNT, \"urlPreviewsEnabled\");\n if (accountEnabled) {\n previewsForAccount = (0, _languageHandler._t)(\"You have <a>enabled</a> URL previews by default.\", {}, {\n 'a': function a(sub) {\n return React.createElement(\n 'a',\n { href: '#/settings' },\n sub\n );\n }\n });\n } else if (accountEnabled) {\n previewsForAccount = (0, _languageHandler._t)(\"You have <a>disabled</a> URL previews by default.\", {}, {\n 'a': function a(sub) {\n return React.createElement(\n 'a',\n { href: '#/settings' },\n sub\n );\n }\n });\n }\n\n if (_SettingsStore2.default.canSetValue(\"urlPreviewsEnabled\", roomId, \"room\")) {\n previewsForRoom = React.createElement(\n 'label',\n null,\n React.createElement(SettingsFlag, { name: 'urlPreviewsEnabled',\n level: _SettingsStore.SettingLevel.ROOM,\n roomId: roomId,\n isExplicit: true,\n manualSave: true,\n ref: 'urlPreviewsRoom' })\n );\n } else {\n var str = (0, _languageHandler._td)(\"URL previews are enabled by default for participants in this room.\");\n if (!_SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.ROOM, \"urlPreviewsEnabled\", roomId, /*explicit=*/true)) {\n str = (0, _languageHandler._td)(\"URL previews are disabled by default for participants in this room.\");\n }\n previewsForRoom = React.createElement(\n 'label',\n null,\n (0, _languageHandler._t)(str)\n );\n }\n } else {\n previewsForAccount = (0, _languageHandler._t)(\"In encrypted rooms, like this one, URL previews are disabled by default to ensure that your \" + \"homeserver (where the previews are generated) cannot gather information about links you see in \" + \"this room.\");\n }\n\n var previewsForRoomAccount = // in an e2ee room we use a special key to enforce per-room opt-in\n React.createElement(SettingsFlag, { name: isEncrypted ? 'urlPreviewsEnabled_e2ee' : 'urlPreviewsEnabled',\n level: _SettingsStore.SettingLevel.ROOM_ACCOUNT,\n roomId: roomId,\n manualSave: true,\n ref: 'urlPreviewsSelf'\n });\n\n return React.createElement(\n 'div',\n { className: 'mx_RoomSettings_toggles' },\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"URL Previews\")\n ),\n React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('When someone puts a URL in their message, a URL preview can be shown to give more ' + 'information about that link such as the title, description, and an image from the website.')\n ),\n React.createElement(\n 'div',\n null,\n previewsForAccount\n ),\n previewsForRoom,\n React.createElement(\n 'label',\n null,\n previewsForRoomAccount\n )\n );\n }\n});\n//# sourceMappingURL=UrlPreviewSettings.js.map","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nvar _QueryMatcher = require('./QueryMatcher');\n\nvar _QueryMatcher2 = _interopRequireDefault(_QueryMatcher);\n\nvar _Components = require('./Components');\n\nvar _SlashCommands = require('../SlashCommands');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2017 Vector Creations Ltd\nCopyright 2017 New Vector Ltd\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar COMMANDS = (0, _values2.default)(_SlashCommands.CommandMap);\n\nvar COMMAND_RE = /(^\\/\\w*)(?: .*)?/g;\n\nvar CommandProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(CommandProvider, _AutocompleteProvider);\n\n function CommandProvider() {\n (0, _classCallCheck3.default)(this, CommandProvider);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (CommandProvider.__proto__ || (0, _getPrototypeOf2.default)(CommandProvider)).call(this, COMMAND_RE));\n\n _this.matcher = new _QueryMatcher2.default(COMMANDS, {\n keys: ['command', 'args', 'description']\n });\n return _this;\n }\n\n (0, _createClass3.default)(CommandProvider, [{\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.method)(function (query, selection, force) {\n var _getCurrentCommand = this.getCurrentCommand(query, selection),\n command = _getCurrentCommand.command,\n range = _getCurrentCommand.range;\n\n if (!command) return [];\n\n var matches = [];\n // check if the full match differs from the first word (i.e. returns false if the command has args)\n if (command[0] !== command[1]) {\n // The input looks like a command with arguments, perform exact match\n var name = command[1].substr(1); // strip leading `/`\n if (_SlashCommands.CommandMap[name]) {\n // some commands, namely `me` and `ddg` don't suit having the usage shown whilst typing their arguments\n if (_SlashCommands.CommandMap[name].hideCompletionAfterSpace) return [];\n matches = [_SlashCommands.CommandMap[name]];\n }\n } else {\n if (query === '/') {\n // If they have just entered `/` show everything\n matches = COMMANDS;\n } else {\n // otherwise fuzzy match against all of the fields\n matches = this.matcher.match(command[1]);\n }\n }\n\n return matches.map(function (result) {\n return {\n // If the command is the same as the one they entered, we don't want to discard their arguments\n completion: result.command === command[1] ? command[0] : result.command + ' ',\n component: _react2.default.createElement(_Components.TextualCompletion, {\n title: result.command,\n subtitle: result.args,\n description: (0, _languageHandler._t)(result.description) }),\n range: range\n };\n });\n });\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '*️⃣ ' + (0, _languageHandler._t)('Commands');\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_block' },\n completions\n );\n }\n }]);\n return CommandProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = CommandProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=CommandProvider.js.map","var baseAt = require('./_baseAt'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\nvar at = flatRest(baseAt);\n\nmodule.exports = at;\n","var get = require('./get');\n\n/**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\nfunction baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n}\n\nmodule.exports = baseAt;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _QueryMatcher = require('./QueryMatcher');\n\nvar _QueryMatcher2 = _interopRequireDefault(_QueryMatcher);\n\nvar _Components = require('./Components');\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _sortBy2 = require('lodash/sortBy');\n\nvar _sortBy3 = _interopRequireDefault(_sortBy2);\n\nvar _matrixTo = require('../matrix-to');\n\nvar _FlairStore = require('../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar COMMUNITY_REGEX = /\\B\\+\\S*/g;\n\nfunction score(query, space) {\n var index = space.indexOf(query);\n if (index === -1) {\n return Infinity;\n } else {\n return index;\n }\n}\n\nvar CommunityProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(CommunityProvider, _AutocompleteProvider);\n\n function CommunityProvider() {\n (0, _classCallCheck3.default)(this, CommunityProvider);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (CommunityProvider.__proto__ || (0, _getPrototypeOf2.default)(CommunityProvider)).call(this, COMMUNITY_REGEX));\n\n _this.matcher = new _QueryMatcher2.default([], {\n keys: ['groupId', 'name', 'shortDescription']\n });\n return _this;\n }\n\n (0, _createClass3.default)(CommunityProvider, [{\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(query, selection) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var BaseAvatar, cli, completions, _getCurrentCommand, command, range, joinedGroups, groups, matchedString;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n BaseAvatar = _index2.default.getComponent('views.avatars.BaseAvatar');\n\n // Disable autocompletions when composing commands because of various issues\n // (see https://github.com/vector-im/riot-web/issues/4762)\n\n if (!/^(\\/join|\\/leave)/.test(query)) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt('return', []);\n\n case 3:\n cli = _MatrixClientPeg2.default.get();\n completions = [];\n _getCurrentCommand = this.getCurrentCommand(query, selection, force), command = _getCurrentCommand.command, range = _getCurrentCommand.range;\n\n if (!command) {\n _context.next = 15;\n break;\n }\n\n joinedGroups = cli.getGroups().filter(function (_ref2) {\n var myMembership = _ref2.myMembership;\n return myMembership === 'join';\n });\n _context.next = 10;\n return (0, _bluebird.resolve)(_promise2.default.all(joinedGroups.map(function () {\n var _ref3 = (0, _bluebird.method)(function (_ref4) {\n var groupId = _ref4.groupId;\n\n try {\n return _FlairStore2.default.getGroupProfileCached(cli, groupId);\n } catch (e) {\n // if FlairStore failed, fall back to just groupId\n return _promise2.default.resolve({\n name: '',\n groupId: groupId,\n avatarUrl: '',\n shortDescription: ''\n });\n }\n });\n\n return function (_x5) {\n return _ref3.apply(this, arguments);\n };\n }())));\n\n case 10:\n groups = _context.sent;\n\n\n this.matcher.setObjects(groups);\n\n matchedString = command[0];\n\n completions = this.matcher.match(matchedString);\n completions = (0, _sortBy3.default)(completions, [function (c) {\n return score(matchedString, c.groupId);\n }, function (c) {\n return c.groupId.length;\n }]).map(function (_ref5) {\n var avatarUrl = _ref5.avatarUrl,\n groupId = _ref5.groupId,\n name = _ref5.name;\n return {\n completion: groupId,\n suffix: ' ',\n href: (0, _matrixTo.makeGroupPermalink)(groupId),\n component: _react2.default.createElement(_Components.PillCompletion, { initialComponent: _react2.default.createElement(BaseAvatar, { name: name || groupId,\n width: 24, height: 24,\n url: avatarUrl ? cli.mxcUrlToHttp(avatarUrl, 24, 24) : null }), title: name, description: groupId }),\n range: range\n };\n }).slice(0, 4);\n\n case 15:\n return _context.abrupt('return', completions);\n\n case 16:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '💬 ' + (0, _languageHandler._t)('Communities');\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_pill mx_Autocomplete_Completion_container_truncate' },\n completions\n );\n }\n }]);\n return CommunityProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = CommunityProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=CommunityProvider.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nrequire('whatwg-fetch');\n\nvar _Components = require('./Components');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DDG_REGEX = /\\/ddg\\s+(.+)$/g; /*\n Copyright 2016 Aviral Dasgupta\n Copyright 2017 Vector Creations Ltd\n Copyright 2017, 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar REFERRER = 'vector';\n\nvar DuckDuckGoProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(DuckDuckGoProvider, _AutocompleteProvider);\n\n function DuckDuckGoProvider() {\n (0, _classCallCheck3.default)(this, DuckDuckGoProvider);\n return (0, _possibleConstructorReturn3.default)(this, (DuckDuckGoProvider.__proto__ || (0, _getPrototypeOf2.default)(DuckDuckGoProvider)).call(this, DDG_REGEX));\n }\n\n (0, _createClass3.default)(DuckDuckGoProvider, [{\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(query, selection) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var _getCurrentCommand, command, range, response, json, results;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _getCurrentCommand = this.getCurrentCommand(query, selection), command = _getCurrentCommand.command, range = _getCurrentCommand.range;\n\n if (!(!query || !command)) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt('return', []);\n\n case 3:\n _context.next = 5;\n return (0, _bluebird.resolve)(fetch(DuckDuckGoProvider.getQueryUri(command[1]), {\n method: 'GET'\n }));\n\n case 5:\n response = _context.sent;\n _context.next = 8;\n return (0, _bluebird.resolve)(response.json());\n\n case 8:\n json = _context.sent;\n results = json.Results.map(function (result) {\n return {\n completion: result.Text,\n component: _react2.default.createElement(_Components.TextualCompletion, {\n title: result.Text,\n description: result.Result }),\n range: range\n };\n });\n\n if (json.Answer) {\n results.unshift({\n completion: json.Answer,\n component: _react2.default.createElement(_Components.TextualCompletion, {\n title: json.Answer,\n description: json.AnswerType }),\n range: range\n });\n }\n if (json.RelatedTopics && json.RelatedTopics.length > 0) {\n results.unshift({\n completion: json.RelatedTopics[0].Text,\n component: _react2.default.createElement(_Components.TextualCompletion, {\n title: json.RelatedTopics[0].Text }),\n range: range\n });\n }\n if (json.AbstractText) {\n results.unshift({\n completion: json.AbstractText,\n component: _react2.default.createElement(_Components.TextualCompletion, {\n title: json.AbstractText }),\n range: range\n });\n }\n return _context.abrupt('return', results);\n\n case 14:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '🔍 ' + (0, _languageHandler._t)('Results from DuckDuckGo');\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_block' },\n completions\n );\n }\n }], [{\n key: 'getQueryUri',\n value: function getQueryUri(query) {\n return 'https://api.duckduckgo.com/?q=' + encodeURIComponent(query) + ('&format=json&no_redirect=1&no_html=1&t=' + encodeURIComponent(REFERRER));\n }\n }]);\n return DuckDuckGoProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = DuckDuckGoProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=DuckDuckGoProvider.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _QueryMatcher = require('./QueryMatcher');\n\nvar _QueryMatcher2 = _interopRequireDefault(_QueryMatcher);\n\nvar _Components = require('./Components');\n\nvar _Rooms = require('../Rooms');\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _sortBy2 = require('lodash/sortBy');\n\nvar _sortBy3 = _interopRequireDefault(_sortBy2);\n\nvar _matrixTo = require('../matrix-to');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2017 Vector Creations Ltd\nCopyright 2017, 2018 New Vector Ltd\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ROOM_REGEX = /\\B#\\S*/g;\n\nfunction score(query, space) {\n var index = space.indexOf(query);\n if (index === -1) {\n return Infinity;\n } else {\n return index;\n }\n}\n\nvar RoomProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(RoomProvider, _AutocompleteProvider);\n\n function RoomProvider() {\n (0, _classCallCheck3.default)(this, RoomProvider);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (RoomProvider.__proto__ || (0, _getPrototypeOf2.default)(RoomProvider)).call(this, ROOM_REGEX));\n\n _this.matcher = new _QueryMatcher2.default([], {\n keys: ['displayedAlias', 'name']\n });\n return _this;\n }\n\n (0, _createClass3.default)(RoomProvider, [{\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.method)(function (query, selection) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var RoomAvatar = _index2.default.getComponent('views.avatars.RoomAvatar');\n\n var client = _MatrixClientPeg2.default.get();\n var completions = [];\n\n var _getCurrentCommand = this.getCurrentCommand(query, selection, force),\n command = _getCurrentCommand.command,\n range = _getCurrentCommand.range;\n\n if (command) {\n // the only reason we need to do this is because Fuse only matches on properties\n this.matcher.setObjects(client.getRooms().filter(function (room) {\n return !!room && !!(0, _Rooms.getDisplayAliasForRoom)(room);\n }).map(function (room) {\n return {\n room: room,\n name: room.name,\n displayedAlias: (0, _Rooms.getDisplayAliasForRoom)(room)\n };\n }));\n var matchedString = command[0];\n completions = this.matcher.match(matchedString);\n completions = (0, _sortBy3.default)(completions, [function (c) {\n return score(matchedString, c.displayedAlias);\n }, function (c) {\n return c.displayedAlias.length;\n }]).map(function (room) {\n var displayAlias = (0, _Rooms.getDisplayAliasForRoom)(room.room) || room.roomId;\n return {\n completion: displayAlias,\n completionId: displayAlias,\n suffix: ' ',\n href: (0, _matrixTo.makeRoomPermalink)(displayAlias),\n component: _react2.default.createElement(_Components.PillCompletion, { initialComponent: _react2.default.createElement(RoomAvatar, { width: 24, height: 24, room: room.room }), title: room.name, description: displayAlias }),\n range: range\n };\n }).filter(function (completion) {\n return !!completion.completion && completion.completion.length > 0;\n }).slice(0, 4);\n }\n return completions;\n });\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '💬 ' + (0, _languageHandler._t)('Rooms');\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_pill mx_Autocomplete_Completion_container_truncate' },\n completions\n );\n }\n }]);\n return RoomProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = RoomProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomProvider.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nvar _Components = require('./Components');\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _QueryMatcher = require('./QueryMatcher');\n\nvar _QueryMatcher2 = _interopRequireDefault(_QueryMatcher);\n\nvar _sortBy2 = require('lodash/sortBy');\n\nvar _sortBy3 = _interopRequireDefault(_sortBy2);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _matrixTo = require('../matrix-to');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar USER_REGEX = /\\B@\\S*/g;\n\n// used when you hit 'tab' - we allow some separator chars at the beginning\n// to allow you to tab-complete /mat into /(matthew)\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2017 Vector Creations Ltd\nCopyright 2017, 2018 New Vector Ltd\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar FORCED_USER_REGEX = /[^/,:; \\t\\n]\\S*/g;\n\nvar UserProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(UserProvider, _AutocompleteProvider);\n\n function UserProvider(room) {\n (0, _classCallCheck3.default)(this, UserProvider);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (UserProvider.__proto__ || (0, _getPrototypeOf2.default)(UserProvider)).call(this, USER_REGEX, FORCED_USER_REGEX));\n\n _this.users = null;\n _this.room = null;\n\n _this.room = room;\n _this.matcher = new _QueryMatcher2.default([], {\n keys: ['name'],\n funcs: [function (obj) {\n return obj.userId.slice(1);\n }], // index by user id minus the leading '@'\n shouldMatchPrefix: true,\n shouldMatchWordsOnly: false\n });\n\n _this._onRoomTimelineBound = _this._onRoomTimeline.bind(_this);\n _this._onRoomStateMemberBound = _this._onRoomStateMember.bind(_this);\n\n _MatrixClientPeg2.default.get().on(\"Room.timeline\", _this._onRoomTimelineBound);\n _MatrixClientPeg2.default.get().on(\"RoomState.members\", _this._onRoomStateMemberBound);\n return _this;\n }\n\n (0, _createClass3.default)(UserProvider, [{\n key: 'destroy',\n value: function destroy() {\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener(\"Room.timeline\", this._onRoomTimelineBound);\n _MatrixClientPeg2.default.get().removeListener(\"RoomState.members\", this._onRoomStateMemberBound);\n }\n }\n }, {\n key: '_onRoomTimeline',\n value: function _onRoomTimeline(ev, room, toStartOfTimeline, removed, data) {\n if (!room) return;\n if (removed) return;\n if (room.roomId !== this.room.roomId) return;\n\n // ignore events from filtered timelines\n if (data.timeline.getTimelineSet() !== room.getUnfilteredTimelineSet()) return;\n\n // ignore anything but real-time updates at the end of the room:\n // updates from pagination will happen when the paginate completes.\n if (toStartOfTimeline || !data || !data.liveEvent) return;\n\n // TODO: lazyload if we have no ev.sender room member?\n this.onUserSpoke(ev.sender);\n }\n }, {\n key: '_onRoomStateMember',\n value: function _onRoomStateMember(ev, state, member) {\n // ignore members in other rooms\n if (member.roomId !== this.room.roomId) {\n return;\n }\n\n // blow away the users cache\n this.users = null;\n }\n }, {\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.method)(function (query, selection) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var MemberAvatar = _index2.default.getComponent('views.avatars.MemberAvatar');\n\n // lazy-load user list into matcher\n if (this.users === null) this._makeUsers();\n\n var completions = [];\n\n var _getCurrentCommand = this.getCurrentCommand(query, selection, force),\n command = _getCurrentCommand.command,\n range = _getCurrentCommand.range;\n\n if (!command) return completions;\n\n var fullMatch = command[0];\n // Don't search if the query is a single \"@\"\n if (fullMatch && fullMatch !== '@') {\n // Don't include the '@' in our search query - it's only used as a way to trigger completion\n var _query = fullMatch.startsWith('@') ? fullMatch.substring(1) : fullMatch;\n completions = this.matcher.match(_query).map(function (user) {\n var displayName = user.name || user.userId || '';\n return {\n // Length of completion should equal length of text in decorator. draft-js\n // relies on the length of the entity === length of the text in the decoration.\n completion: user.rawDisplayName,\n completionId: user.userId,\n suffix: selection.beginning && range.start === 0 ? ': ' : ' ',\n href: (0, _matrixTo.makeUserPermalink)(user.userId),\n component: _react2.default.createElement(_Components.PillCompletion, {\n initialComponent: _react2.default.createElement(MemberAvatar, { member: user, width: 24, height: 24 }),\n title: displayName,\n description: user.userId }),\n range: range\n };\n });\n }\n return completions;\n });\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '👥 ' + (0, _languageHandler._t)('Users');\n }\n }, {\n key: '_makeUsers',\n value: function _makeUsers() {\n var events = this.room.getLiveTimeline().getEvents();\n var lastSpoken = {};\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(events), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var event = _step.value;\n\n lastSpoken[event.getSender()] = event.getTs();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var currentUserId = _MatrixClientPeg2.default.get().credentials.userId;\n this.users = this.room.getJoinedMembers().filter(function (_ref2) {\n var userId = _ref2.userId;\n return userId !== currentUserId;\n });\n\n this.users = (0, _sortBy3.default)(this.users, function (member) {\n return 1E20 - lastSpoken[member.userId] || 1E20;\n });\n\n this.matcher.setObjects(this.users);\n }\n }, {\n key: 'onUserSpoke',\n value: function onUserSpoke(user) {\n if (this.users === null) return;\n if (!user) return;\n if (user.userId === _MatrixClientPeg2.default.get().credentials.userId) return;\n\n // Move the user that spoke to the front of the array\n this.users.splice(this.users.findIndex(function (user2) {\n return user2.userId === user.userId;\n }), 1);\n this.users = [user].concat((0, _toConsumableArray3.default)(this.users));\n\n this.matcher.setObjects(this.users);\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_pill' },\n completions\n );\n }\n }, {\n key: 'shouldForceComplete',\n value: function shouldForceComplete() {\n return true;\n }\n }]);\n return UserProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = UserProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=UserProvider.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nvar _emojione = require('emojione');\n\nvar _QueryMatcher = require('./QueryMatcher');\n\nvar _QueryMatcher2 = _interopRequireDefault(_QueryMatcher);\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Components = require('./Components');\n\nvar _uniq2 = require('lodash/uniq');\n\nvar _uniq3 = _interopRequireDefault(_uniq2);\n\nvar _sortBy2 = require('lodash/sortBy');\n\nvar _sortBy3 = _interopRequireDefault(_sortBy2);\n\nvar _SettingsStore = require('../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _strippedEmoji = require('../stripped-emoji.json');\n\nvar _strippedEmoji2 = _interopRequireDefault(_strippedEmoji);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LIMIT = 20; /*\n Copyright 2016 Aviral Dasgupta\n Copyright 2017 Vector Creations Ltd\n Copyright 2017, 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar CATEGORY_ORDER = ['people', 'food', 'objects', 'activity', 'nature', 'travel', 'flags', 'regional', 'symbols', 'modifier'];\n\n// Match for \":wink:\" or ascii-style \";-)\" provided by emojione\n// (^|\\s|(emojiUnicode)) to make sure we're either at the start of the string or there's a\n// whitespace character or an emoji before the emoji. The reason for unicodeRegexp is\n// that we need to support inputting multiple emoji with no space between them.\nvar EMOJI_REGEX = new RegExp('(?:^|\\\\s|' + _emojione.unicodeRegexp + ')(' + _emojione.asciiRegexp + '|:[+-\\\\w]*:?)$', 'g');\n\n// We also need to match the non-zero-length prefixes to remove them from the final match,\n// and update the range so that we don't replace the whitespace or the previous emoji.\nvar MATCH_PREFIX_REGEX = new RegExp('(\\\\s|' + _emojione.unicodeRegexp + ')');\n\nvar EMOJI_SHORTNAMES = (0, _keys2.default)(_strippedEmoji2.default).map(function (key) {\n return _strippedEmoji2.default[key];\n}).sort(function (a, b) {\n if (a.category === b.category) {\n return a.emoji_order - b.emoji_order;\n }\n return CATEGORY_ORDER.indexOf(a.category) - CATEGORY_ORDER.indexOf(b.category);\n}).map(function (a, index) {\n return {\n name: a.name,\n shortname: a.shortname,\n aliases: a.aliases ? a.aliases.join(' ') : '',\n aliases_ascii: a.aliases_ascii ? a.aliases_ascii.join(' ') : '',\n // Include the index so that we can preserve the original order\n _orderBy: index\n };\n});\n\nfunction score(query, space) {\n var index = space.indexOf(query);\n if (index === -1) {\n return Infinity;\n } else {\n return index;\n }\n}\n\nvar EmojiProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(EmojiProvider, _AutocompleteProvider);\n\n function EmojiProvider() {\n (0, _classCallCheck3.default)(this, EmojiProvider);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (EmojiProvider.__proto__ || (0, _getPrototypeOf2.default)(EmojiProvider)).call(this, EMOJI_REGEX));\n\n _this.matcher = new _QueryMatcher2.default(EMOJI_SHORTNAMES, {\n keys: ['aliases_ascii', 'shortname', 'aliases'],\n // For matching against ascii equivalents\n shouldMatchWordsOnly: false\n });\n _this.nameMatcher = new _QueryMatcher2.default(EMOJI_SHORTNAMES, {\n keys: ['name'],\n // For removing punctuation\n shouldMatchWordsOnly: true\n });\n return _this;\n }\n\n (0, _createClass3.default)(EmojiProvider, [{\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.method)(function (query, selection, force) {\n if (_SettingsStore2.default.getValue(\"MessageComposerInput.dontSuggestEmoji\")) {\n return []; // don't give any suggestions if the user doesn't want them\n }\n\n var EmojiText = _index2.default.getComponent('views.elements.EmojiText');\n\n var completions = [];\n\n var _getCurrentCommand = this.getCurrentCommand(query, selection),\n command = _getCurrentCommand.command,\n range = _getCurrentCommand.range;\n\n if (command) {\n var matchedString = command[0];\n\n // Remove prefix of any length (single whitespace or unicode emoji)\n var prefixMatch = MATCH_PREFIX_REGEX.exec(matchedString);\n if (prefixMatch) {\n matchedString = matchedString.slice(prefixMatch[0].length);\n range.start += prefixMatch[0].length;\n }\n completions = this.matcher.match(matchedString);\n\n // Do second match with shouldMatchWordsOnly in order to match against 'name'\n completions = completions.concat(this.nameMatcher.match(matchedString));\n\n var sorters = [];\n // First, sort by score (Infinity if matchedString not in shortname)\n sorters.push(function (c) {\n return score(matchedString, c.shortname);\n });\n // If the matchedString is not empty, sort by length of shortname. Example:\n // matchedString = \":bookmark\"\n // completions = [\":bookmark:\", \":bookmark_tabs:\", ...]\n if (matchedString.length > 1) {\n sorters.push(function (c) {\n return c.shortname.length;\n });\n }\n // Finally, sort by original ordering\n sorters.push(function (c) {\n return c._orderBy;\n });\n completions = (0, _sortBy3.default)((0, _uniq3.default)(completions), sorters);\n\n completions = completions.map(function (result) {\n var shortname = result.shortname;\n\n var unicode = (0, _emojione.shortnameToUnicode)(shortname);\n return {\n completion: unicode,\n component: _react2.default.createElement(_Components.PillCompletion, { title: shortname, initialComponent: _react2.default.createElement(\n EmojiText,\n { style: { maxWidth: '1em' } },\n unicode\n ) }),\n range: range\n };\n }).slice(0, LIMIT);\n }\n return completions;\n });\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '😃 ' + (0, _languageHandler._t)('Emoji');\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_pill' },\n completions\n );\n }\n }]);\n return EmojiProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = EmojiProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=EmojiProvider.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Components = require('./Components');\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar AT_ROOM_REGEX = /@\\S*/g;\n\nvar NotifProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(NotifProvider, _AutocompleteProvider);\n\n function NotifProvider(room) {\n (0, _classCallCheck3.default)(this, NotifProvider);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (NotifProvider.__proto__ || (0, _getPrototypeOf2.default)(NotifProvider)).call(this, AT_ROOM_REGEX));\n\n _this.room = room;\n return _this;\n }\n\n (0, _createClass3.default)(NotifProvider, [{\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.method)(function (query, selection) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var RoomAvatar = _index2.default.getComponent('views.avatars.RoomAvatar');\n\n var client = _MatrixClientPeg2.default.get();\n\n if (!this.room.currentState.mayTriggerNotifOfType('room', client.credentials.userId)) return [];\n\n var _getCurrentCommand = this.getCurrentCommand(query, selection, force),\n command = _getCurrentCommand.command,\n range = _getCurrentCommand.range;\n\n if (command && command[0] && '@room'.startsWith(command[0]) && command[0].length > 1) {\n return [{\n completion: '@room',\n completionId: '@room',\n suffix: ' ',\n component: _react2.default.createElement(_Components.PillCompletion, { initialComponent: _react2.default.createElement(RoomAvatar, { width: 24, height: 24, room: this.room }), title: '@room', description: (0, _languageHandler._t)(\"Notify the whole room\") }),\n range: range\n }];\n }\n return [];\n });\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '❗️ ' + (0, _languageHandler._t)('Room Notification');\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_pill mx_Autocomplete_Completion_container_truncate' },\n completions\n );\n }\n }]);\n return NotifProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = NotifProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=NotifProvider.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _ObjectUtils = require('../../../ObjectUtils');\n\nvar _ObjectUtils2 = _interopRequireDefault(_ObjectUtils);\n\nvar _AppsDrawer = require('./AppsDrawer');\n\nvar _AppsDrawer2 = _interopRequireDefault(_AppsDrawer);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'AuxPanel',\n\n propTypes: {\n // js-sdk room object\n room: _propTypes2.default.object.isRequired,\n userId: _propTypes2.default.string.isRequired,\n showApps: _propTypes2.default.bool, // Render apps\n hideAppsDrawer: _propTypes2.default.bool, // Do not display apps drawer and content (may still be rendered)\n\n // Conference Handler implementation\n conferenceHandler: _propTypes2.default.object,\n\n // set to true to show the file drop target\n draggingFile: _propTypes2.default.bool,\n\n // set to true to show the 'active conf call' banner\n displayConfCallNotification: _propTypes2.default.bool,\n\n // maxHeight attribute for the aux panel and the video\n // therein\n maxHeight: _propTypes2.default.number,\n\n // a callback which is called when the content of the aux panel changes\n // content in a way that is likely to make it change size.\n onResize: _propTypes2.default.func\n },\n\n defaultProps: {\n showApps: true,\n hideAppsDrawer: false\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n return !_ObjectUtils2.default.shallowEqual(this.props, nextProps) || !_ObjectUtils2.default.shallowEqual(this.state, nextState);\n },\n\n componentDidUpdate: function componentDidUpdate(prevProps, prevState) {\n // most changes are likely to cause a resize\n if (this.props.onResize) {\n this.props.onResize();\n }\n },\n\n onConferenceNotificationClick: function onConferenceNotificationClick(ev, type) {\n _dispatcher2.default.dispatch({\n action: 'place_call',\n type: type,\n room_id: this.props.room.roomId\n });\n ev.stopPropagation();\n ev.preventDefault();\n },\n\n render: function render() {\n var _this = this;\n\n var CallView = _index2.default.getComponent(\"voip.CallView\");\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n\n var fileDropTarget = null;\n if (this.props.draggingFile) {\n fileDropTarget = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_fileDropTarget' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_fileDropTargetLabel',\n title: (0, _languageHandler._t)(\"Drop File Here\") },\n _react2.default.createElement(TintableSvg, { src: 'img/upload-big.svg', width: '45', height: '59' }),\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)(\"Drop file here to upload\")\n )\n );\n }\n\n var conferenceCallNotification = null;\n if (this.props.displayConfCallNotification) {\n var supportedText = '';\n var joinNode = void 0;\n if (!_MatrixClientPeg2.default.get().supportsVoip()) {\n supportedText = (0, _languageHandler._t)(\" (unsupported)\");\n } else {\n joinNode = _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Join as <voiceText>voice</voiceText> or <videoText>video</videoText>.\", {}, {\n 'voiceText': function voiceText(sub) {\n return _react2.default.createElement(\n 'a',\n { onClick: function onClick(event) {\n _this.onConferenceNotificationClick(event, 'voice');\n }, href: '#' },\n sub\n );\n },\n 'videoText': function videoText(sub) {\n return _react2.default.createElement(\n 'a',\n { onClick: function onClick(event) {\n _this.onConferenceNotificationClick(event, 'video');\n }, href: '#' },\n sub\n );\n }\n })\n );\n }\n // XXX: the translation here isn't great: appending ' (unsupported)' is likely to not make sense in many languages,\n // but there are translations for this in the languages we do have so I'm leaving it for now.\n conferenceCallNotification = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_ongoingConfCallNotification' },\n (0, _languageHandler._t)(\"Ongoing conference call%(supportedText)s.\", { supportedText: supportedText }),\n '\\xA0',\n joinNode\n );\n }\n\n var callView = _react2.default.createElement(CallView, { ref: 'callView', room: this.props.room,\n ConferenceHandler: this.props.conferenceHandler,\n onResize: this.props.onResize,\n maxVideoHeight: this.props.maxHeight\n });\n\n var appsDrawer = _react2.default.createElement(_AppsDrawer2.default, { ref: 'appsDrawer',\n room: this.props.room,\n userId: this.props.userId,\n maxHeight: this.props.maxHeight,\n showApps: this.props.showApps,\n hide: this.props.hideAppsDrawer\n });\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_auxPanel', style: { maxHeight: this.props.maxHeight } },\n appsDrawer,\n fileDropTarget,\n callView,\n conferenceCallNotification,\n this.props.children\n );\n }\n});\n//# sourceMappingURL=AuxPanel.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactBeautifulDnd = require('react-beautiful-dnd');\n\nvar _RoomTile = require('../../../components/views/rooms/RoomTile');\n\nvar _RoomTile2 = _interopRequireDefault(_RoomTile);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DNDRoomTile = function (_React$PureComponent) {\n (0, _inherits3.default)(DNDRoomTile, _React$PureComponent);\n\n function DNDRoomTile() {\n (0, _classCallCheck3.default)(this, DNDRoomTile);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DNDRoomTile.__proto__ || (0, _getPrototypeOf2.default)(DNDRoomTile)).call(this));\n\n _this.getClassName = _this.getClassName.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(DNDRoomTile, [{\n key: 'getClassName',\n value: function getClassName(isDragging) {\n return (0, _classnames2.default)({\n \"mx_DNDRoomTile\": true,\n \"mx_DNDRoomTile_dragging\": isDragging\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var props = this.props;\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n _reactBeautifulDnd.Draggable,\n {\n key: props.room.roomId,\n draggableId: props.tagName + '_' + props.room.roomId,\n index: props.index,\n type: 'draggable-RoomTile'\n },\n function (provided, snapshot) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n (0, _extends3.default)({\n ref: provided.innerRef\n }, provided.draggableProps, provided.dragHandleProps),\n _react2.default.createElement(\n 'div',\n { className: _this2.getClassName(snapshot.isDragging) },\n _react2.default.createElement(_RoomTile2.default, props)\n )\n ),\n provided.placeholder\n );\n }\n )\n );\n }\n }]);\n return DNDRoomTile;\n}(_react2.default.PureComponent);\n\nexports.default = DNDRoomTile;\nmodule.exports = exports['default'];\n//# sourceMappingURL=DNDRoomTile.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _RoomViewStore = require(\"./stores/RoomViewStore\");\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Consumes changes from the RoomViewStore and notifies specific things\n * about when the active room changes. Unlike listening for RoomViewStore\n * changes, you can subscribe to only changes relevant to a particular\n * room.\n *\n * TODO: If we introduce an observer for something else, factor out\n * the adding / removing of listeners & emitting into a common class.\n */\nvar ActiveRoomObserver = function () {\n function ActiveRoomObserver() {\n (0, _classCallCheck3.default)(this, ActiveRoomObserver);\n\n this._listeners = {};\n\n this._activeRoomId = _RoomViewStore2.default.getRoomId();\n // TODO: We could self-destruct when the last listener goes away, or at least\n // stop listening.\n this._roomStoreToken = _RoomViewStore2.default.addListener(this._onRoomViewStoreUpdate.bind(this));\n }\n\n (0, _createClass3.default)(ActiveRoomObserver, [{\n key: \"addListener\",\n value: function addListener(roomId, listener) {\n if (!this._listeners[roomId]) this._listeners[roomId] = [];\n this._listeners[roomId].push(listener);\n }\n }, {\n key: \"removeListener\",\n value: function removeListener(roomId, listener) {\n if (this._listeners[roomId]) {\n var i = this._listeners[roomId].indexOf(listener);\n if (i > -1) {\n this._listeners[roomId].splice(i, 1);\n }\n } else {\n console.warn(\"Unregistering unrecognised listener (roomId=\" + roomId + \")\");\n }\n }\n }, {\n key: \"_emit\",\n value: function _emit(roomId) {\n if (!this._listeners[roomId]) return;\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this._listeners[roomId]), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var l = _step.value;\n\n l.call();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }, {\n key: \"_onRoomViewStoreUpdate\",\n value: function _onRoomViewStoreUpdate() {\n // emit for the old room ID\n if (this._activeRoomId) this._emit(this._activeRoomId);\n\n // update our cache\n this._activeRoomId = _RoomViewStore2.default.getRoomId();\n\n // and emit for the new one\n if (this._activeRoomId) this._emit(this._activeRoomId);\n }\n }]);\n return ActiveRoomObserver;\n}(); /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nif (global.mx_ActiveRoomObserver === undefined) {\n global.mx_ActiveRoomObserver = new ActiveRoomObserver();\n}\nexports.default = global.mx_ActiveRoomObserver;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=ActiveRoomObserver.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar sdk = require('../../../index');\n\n\nvar PRESENCE_CLASS = {\n \"offline\": \"mx_EntityTile_offline\",\n \"online\": \"mx_EntityTile_online\",\n \"unavailable\": \"mx_EntityTile_unavailable\"\n};\n\nfunction presenceClassForMember(presenceState, lastActiveAgo, showPresence) {\n if (showPresence === false) {\n return 'mx_EntityTile_online_beenactive';\n }\n\n // offline is split into two categories depending on whether we have\n // a last_active_ago for them.\n if (presenceState == 'offline') {\n if (lastActiveAgo) {\n return PRESENCE_CLASS['offline'] + '_beenactive';\n } else {\n return PRESENCE_CLASS['offline'] + '_neveractive';\n }\n } else if (presenceState) {\n return PRESENCE_CLASS[presenceState];\n } else {\n return PRESENCE_CLASS['offline'] + '_neveractive';\n }\n}\n\nvar EntityTile = React.createClass({\n displayName: 'EntityTile',\n\n propTypes: {\n name: _propTypes2.default.string,\n title: _propTypes2.default.string,\n avatarJsx: _propTypes2.default.any, // <BaseAvatar />\n className: _propTypes2.default.string,\n presenceState: _propTypes2.default.string,\n presenceLastActiveAgo: _propTypes2.default.number,\n presenceLastTs: _propTypes2.default.number,\n presenceCurrentlyActive: _propTypes2.default.bool,\n showInviteButton: _propTypes2.default.bool,\n shouldComponentUpdate: _propTypes2.default.func,\n onClick: _propTypes2.default.func,\n suppressOnHover: _propTypes2.default.bool,\n showPresence: _propTypes2.default.bool,\n subtextLabel: _propTypes2.default.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n return true;\n },\n onClick: function onClick() {},\n presenceState: \"offline\",\n presenceLastActiveAgo: 0,\n presenceLastTs: 0,\n showInviteButton: false,\n suppressOnHover: false,\n showPresence: true\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n hover: false\n };\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n if (this.state.hover !== nextState.hover) return true;\n return this.props.shouldComponentUpdate(nextProps, nextState);\n },\n\n mouseEnter: function mouseEnter(e) {\n this.setState({ 'hover': true });\n },\n\n mouseLeave: function mouseLeave(e) {\n this.setState({ 'hover': false });\n },\n\n render: function render() {\n var presenceClass = presenceClassForMember(this.props.presenceState, this.props.presenceLastActiveAgo, this.props.showPresence);\n\n var mainClassName = \"mx_EntityTile \";\n mainClassName += presenceClass + (this.props.className ? \" \" + this.props.className : \"\");\n var nameEl = void 0;\n var name = this.props.name;\n\n\n var EmojiText = sdk.getComponent('elements.EmojiText');\n if (this.state.hover && !this.props.suppressOnHover) {\n var activeAgo = this.props.presenceLastActiveAgo ? Date.now() - (this.props.presenceLastTs - this.props.presenceLastActiveAgo) : -1;\n\n mainClassName += \" mx_EntityTile_hover\";\n var PresenceLabel = sdk.getComponent(\"rooms.PresenceLabel\");\n var presenceLabel = null;\n var nameClasses = 'mx_EntityTile_name';\n if (this.props.showPresence) {\n presenceLabel = React.createElement(PresenceLabel, { activeAgo: activeAgo,\n currentlyActive: this.props.presenceCurrentlyActive,\n presenceState: this.props.presenceState });\n nameClasses += ' mx_EntityTile_name_hover';\n }\n if (this.props.subtextLabel) {\n presenceLabel = React.createElement(\n 'span',\n { className: 'mx_EntityTile_subtext' },\n this.props.subtextLabel\n );\n }\n nameEl = React.createElement(\n 'div',\n { className: 'mx_EntityTile_details' },\n React.createElement('img', { className: 'mx_EntityTile_chevron', src: 'img/member_chevron.png', width: '8', height: '12' }),\n React.createElement(\n EmojiText,\n { element: 'div', className: nameClasses, dir: 'auto' },\n name\n ),\n presenceLabel\n );\n } else if (this.props.subtextLabel) {\n nameEl = React.createElement(\n 'div',\n { className: 'mx_EntityTile_details' },\n React.createElement(\n EmojiText,\n { element: 'div', className: 'mx_EntityTile_name', dir: 'auto' },\n name\n ),\n React.createElement(\n 'span',\n { className: 'mx_EntityTile_subtext' },\n this.props.subtextLabel\n )\n );\n } else {\n nameEl = React.createElement(\n EmojiText,\n { element: 'div', className: 'mx_EntityTile_name', dir: 'auto' },\n name\n );\n }\n\n var inviteButton = void 0;\n if (this.props.showInviteButton) {\n inviteButton = React.createElement(\n 'div',\n { className: 'mx_EntityTile_invite' },\n React.createElement('img', { src: 'img/plus.svg', width: '16', height: '16' })\n );\n }\n\n var power = void 0;\n var powerStatus = this.props.powerStatus;\n if (powerStatus) {\n var _EntityTile$POWER_STA, _EntityTile$POWER_STA2;\n\n var src = (_EntityTile$POWER_STA = {}, (0, _defineProperty3.default)(_EntityTile$POWER_STA, EntityTile.POWER_STATUS_MODERATOR, \"img/mod.svg\"), (0, _defineProperty3.default)(_EntityTile$POWER_STA, EntityTile.POWER_STATUS_ADMIN, \"img/admin.svg\"), _EntityTile$POWER_STA)[powerStatus];\n var alt = (_EntityTile$POWER_STA2 = {}, (0, _defineProperty3.default)(_EntityTile$POWER_STA2, EntityTile.POWER_STATUS_MODERATOR, (0, _languageHandler._t)(\"Moderator\")), (0, _defineProperty3.default)(_EntityTile$POWER_STA2, EntityTile.POWER_STATUS_ADMIN, (0, _languageHandler._t)(\"Admin\")), _EntityTile$POWER_STA2)[powerStatus];\n power = React.createElement('img', { src: src, className: 'mx_EntityTile_power', width: '16', height: '17', alt: alt });\n }\n\n var BaseAvatar = sdk.getComponent('avatars.BaseAvatar');\n\n var av = this.props.avatarJsx || React.createElement(BaseAvatar, { name: this.props.name, width: 36, height: 36 });\n\n return React.createElement(\n _AccessibleButton2.default,\n { className: mainClassName, title: this.props.title,\n onClick: this.props.onClick, onMouseEnter: this.mouseEnter,\n onMouseLeave: this.mouseLeave },\n React.createElement(\n 'div',\n { className: 'mx_EntityTile_avatar' },\n av,\n power\n ),\n nameEl,\n inviteButton\n );\n }\n});\n\nEntityTile.POWER_STATUS_MODERATOR = \"moderator\";\nEntityTile.POWER_STATUS_ADMIN = \"admin\";\n\nexports.default = EntityTile;\nmodule.exports = exports['default'];\n//# sourceMappingURL=EntityTile.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _ReplyThread = require('../elements/ReplyThread');\n\nvar _ReplyThread2 = _interopRequireDefault(_ReplyThread);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _withMatrixClient = require('../../../wrappers/withMatrixClient');\n\nvar _withMatrixClient2 = _interopRequireDefault(_withMatrixClient);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _matrixTo = require('../../../matrix-to');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar classNames = require(\"classnames\");\n\nvar Modal = require('../../../Modal');\n\nvar sdk = require('../../../index');\nvar TextForEvent = require('../../../TextForEvent');\n\n\nvar ContextualMenu = require('../../structures/ContextualMenu');\n\n\nvar ObjectUtils = require('../../../ObjectUtils');\n\nvar eventTileTypes = {\n 'm.room.message': 'messages.MessageEvent',\n 'm.sticker': 'messages.MessageEvent',\n 'm.call.invite': 'messages.TextualEvent',\n 'm.call.answer': 'messages.TextualEvent',\n 'm.call.hangup': 'messages.TextualEvent'\n};\n\nvar stateEventTileTypes = {\n 'm.room.aliases': 'messages.TextualEvent',\n // 'm.room.aliases': 'messages.RoomAliasesEvent', // too complex\n 'm.room.canonical_alias': 'messages.TextualEvent',\n 'm.room.create': 'messages.RoomCreate',\n 'm.room.member': 'messages.TextualEvent',\n 'm.room.name': 'messages.TextualEvent',\n 'm.room.avatar': 'messages.RoomAvatarEvent',\n 'm.room.third_party_invite': 'messages.TextualEvent',\n 'm.room.history_visibility': 'messages.TextualEvent',\n 'm.room.encryption': 'messages.TextualEvent',\n 'm.room.topic': 'messages.TextualEvent',\n 'm.room.power_levels': 'messages.TextualEvent',\n 'm.room.pinned_events': 'messages.TextualEvent',\n 'm.room.server_acl': 'messages.TextualEvent',\n 'im.vector.modular.widgets': 'messages.TextualEvent'\n};\n\nfunction getHandlerTile(ev) {\n var type = ev.getType();\n return ev.isState() ? stateEventTileTypes[type] : eventTileTypes[type];\n}\n\nvar MAX_READ_AVATARS = 5;\n\n// Our component structure for EventTiles on the timeline is:\n//\n// .-EventTile------------------------------------------------.\n// | MemberAvatar (SenderProfile) TimeStamp |\n// | .-{Message,Textual}Event---------------. Read Avatars |\n// | | .-MFooBody-------------------. | |\n// | | | (only if MessageEvent) | | |\n// | | '----------------------------' | |\n// | '--------------------------------------' |\n// '----------------------------------------------------------'\n\nmodule.exports = (0, _withMatrixClient2.default)(React.createClass({\n displayName: 'EventTile',\n\n propTypes: {\n /* MatrixClient instance for sender verification etc */\n matrixClient: _propTypes2.default.object.isRequired,\n\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired,\n\n /* true if mxEvent is redacted. This is a prop because using mxEvent.isRedacted()\n * might not be enough when deciding shouldComponentUpdate - prevProps.mxEvent\n * references the same this.props.mxEvent.\n */\n isRedacted: _propTypes2.default.bool,\n\n /* true if this is a continuation of the previous event (which has the\n * effect of not showing another avatar/displayname\n */\n continuation: _propTypes2.default.bool,\n\n /* true if this is the last event in the timeline (which has the effect\n * of always showing the timestamp)\n */\n last: _propTypes2.default.bool,\n\n /* true if this is search context (which has the effect of greying out\n * the text\n */\n contextual: _propTypes2.default.bool,\n\n /* a list of words to highlight, ordered by longest first */\n highlights: _propTypes2.default.array,\n\n /* link URL for the highlights */\n highlightLink: _propTypes2.default.string,\n\n /* should show URL previews for this event */\n showUrlPreview: _propTypes2.default.bool,\n\n /* is this the focused event */\n isSelectedEvent: _propTypes2.default.bool,\n\n /* callback called when dynamic content in events are loaded */\n onWidgetLoad: _propTypes2.default.func,\n\n /* a list of read-receipts we should show. Each object has a 'roomMember' and 'ts'. */\n readReceipts: _propTypes2.default.arrayOf(React.PropTypes.object),\n\n /* opaque readreceipt info for each userId; used by ReadReceiptMarker\n * to manage its animations. Should be an empty object when the room\n * first loads\n */\n readReceiptMap: _propTypes2.default.object,\n\n /* A function which is used to check if the parent panel is being\n * unmounted, to avoid unnecessary work. Should return true if we\n * are being unmounted.\n */\n checkUnmounting: _propTypes2.default.func,\n\n /* the status of this event - ie, mxEvent.status. Denormalised to here so\n * that we can tell when it changes. */\n eventSendStatus: _propTypes2.default.string,\n\n /* the shape of the tile. by default, the layout is intended for the\n * normal room timeline. alternative values are: \"file_list\", \"file_grid\"\n * and \"notif\". This could be done by CSS, but it'd be horribly inefficient.\n * It could also be done by subclassing EventTile, but that'd be quite\n * boiilerplatey. So just make the necessary render decisions conditional\n * for now.\n */\n tileShape: _propTypes2.default.string,\n\n // show twelve hour timestamps\n isTwelveHour: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n // no-op function because onWidgetLoad is optional yet some sub-components assume its existence\n onWidgetLoad: function onWidgetLoad() {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n // Whether the context menu is being displayed.\n menu: false,\n // Whether all read receipts are being displayed. If not, only display\n // a truncation of them.\n allReadAvatars: false,\n // Whether the event's sender has been verified.\n verified: null,\n // Whether onRequestKeysClick has been called since mounting.\n previouslyRequestedKeys: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n // don't do RR animations until we are mounted\n this._suppressReadReceiptAnimation = true;\n this._verifyEvent(this.props.mxEvent);\n },\n\n componentDidMount: function componentDidMount() {\n this._suppressReadReceiptAnimation = false;\n this.props.matrixClient.on(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n this.props.mxEvent.on(\"Event.decrypted\", this._onDecrypted);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n // re-check the sender verification as outgoing events progress through\n // the send process.\n if (nextProps.eventSendStatus !== this.props.eventSendStatus) {\n this._verifyEvent(nextProps.mxEvent);\n }\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n if (!ObjectUtils.shallowEqual(this.state, nextState)) {\n return true;\n }\n\n return !this._propsEqual(this.props, nextProps);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var client = this.props.matrixClient;\n client.removeListener(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n this.props.mxEvent.removeListener(\"Event.decrypted\", this._onDecrypted);\n },\n\n /** called when the event is decrypted after we show it.\n */\n _onDecrypted: function _onDecrypted() {\n // we need to re-verify the sending device.\n // (we call onWidgetLoad in _verifyEvent to handle the case where decryption\n // has caused a change in size of the event tile)\n this._verifyEvent(this.props.mxEvent);\n this.forceUpdate();\n },\n\n onDeviceVerificationChanged: function onDeviceVerificationChanged(userId, device) {\n if (userId === this.props.mxEvent.getSender()) {\n this._verifyEvent(this.props.mxEvent);\n }\n },\n\n _verifyEvent: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(mxEvent) {\n var _this = this;\n\n var verified;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (mxEvent.isEncrypted()) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt('return');\n\n case 2:\n _context.next = 4;\n return (0, _bluebird.resolve)(this.props.matrixClient.isEventSenderVerified(mxEvent));\n\n case 4:\n verified = _context.sent;\n\n this.setState({\n verified: verified\n }, function () {\n // Decryption may have caused a change in size\n _this.props.onWidgetLoad();\n });\n\n case 6:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function _verifyEvent(_x) {\n return _ref.apply(this, arguments);\n }\n\n return _verifyEvent;\n }(),\n\n _propsEqual: function _propsEqual(objA, objB) {\n var keysA = (0, _keys2.default)(objA);\n var keysB = (0, _keys2.default)(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n for (var i = 0; i < keysA.length; i++) {\n var key = keysA[i];\n\n if (!objB.hasOwnProperty(key)) {\n return false;\n }\n\n // need to deep-compare readReceipts\n if (key === 'readReceipts') {\n var rA = objA[key];\n var rB = objB[key];\n if (rA === rB) {\n continue;\n }\n\n if (!rA || !rB) {\n return false;\n }\n\n if (rA.length !== rB.length) {\n return false;\n }\n for (var j = 0; j < rA.length; j++) {\n if (rA[j].userId !== rB[j].userId) {\n return false;\n }\n // one has a member set and the other doesn't?\n if (rA[j].roomMember !== rB[j].roomMember) {\n return false;\n }\n }\n } else {\n if (objA[key] !== objB[key]) {\n return false;\n }\n }\n }\n return true;\n },\n\n shouldHighlight: function shouldHighlight() {\n var actions = this.props.matrixClient.getPushActionsForEvent(this.props.mxEvent);\n if (!actions || !actions.tweaks) {\n return false;\n }\n\n // don't show self-highlights from another of our clients\n if (this.props.mxEvent.getSender() === this.props.matrixClient.credentials.userId) {\n return false;\n }\n\n return actions.tweaks.highlight;\n },\n\n onEditClicked: function onEditClicked(e) {\n var MessageContextMenu = sdk.getComponent('context_menus.MessageContextMenu');\n var buttonRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = buttonRect.right + window.pageXOffset;\n var y = buttonRect.top + buttonRect.height / 2 + window.pageYOffset - 19;\n var self = this;\n\n var _refs = this.refs,\n tile = _refs.tile,\n replyThread = _refs.replyThread;\n\n\n ContextualMenu.createMenu(MessageContextMenu, {\n chevronOffset: 10,\n mxEvent: this.props.mxEvent,\n left: x,\n top: y,\n eventTileOps: tile && tile.getEventTileOps ? tile.getEventTileOps() : undefined,\n collapseReplyThread: replyThread && replyThread.canCollapse() ? replyThread.collapse : undefined,\n onFinished: function onFinished() {\n self.setState({ menu: false });\n }\n });\n this.setState({ menu: true });\n },\n\n toggleAllReadAvatars: function toggleAllReadAvatars() {\n this.setState({\n allReadAvatars: !this.state.allReadAvatars\n });\n },\n\n getReadAvatars: function getReadAvatars() {\n // return early if there are no read receipts\n if (!this.props.readReceipts || this.props.readReceipts.length === 0) {\n return React.createElement('span', { className: 'mx_EventTile_readAvatars' });\n }\n\n var ReadReceiptMarker = sdk.getComponent('rooms.ReadReceiptMarker');\n var avatars = [];\n var receiptOffset = 15;\n var left = 0;\n\n var receipts = this.props.readReceipts || [];\n for (var i = 0; i < receipts.length; ++i) {\n var receipt = receipts[i];\n\n var hidden = true;\n if (i < MAX_READ_AVATARS || this.state.allReadAvatars) {\n hidden = false;\n }\n // TODO: we keep the extra read avatars in the dom to make animation simpler\n // we could optimise this to reduce the dom size.\n\n // If hidden, set offset equal to the offset of the final visible avatar or\n // else set it proportional to index\n left = (hidden ? MAX_READ_AVATARS - 1 : i) * -receiptOffset;\n\n var userId = receipt.userId;\n var readReceiptInfo = void 0;\n\n if (this.props.readReceiptMap) {\n readReceiptInfo = this.props.readReceiptMap[userId];\n if (!readReceiptInfo) {\n readReceiptInfo = {};\n this.props.readReceiptMap[userId] = readReceiptInfo;\n }\n }\n\n // add to the start so the most recent is on the end (ie. ends up rightmost)\n avatars.unshift(React.createElement(ReadReceiptMarker, { key: userId, member: receipt.roomMember,\n fallbackUserId: userId,\n leftOffset: left, hidden: hidden,\n readReceiptInfo: readReceiptInfo,\n checkUnmounting: this.props.checkUnmounting,\n suppressAnimation: this._suppressReadReceiptAnimation,\n onClick: this.toggleAllReadAvatars,\n timestamp: receipt.ts,\n showTwelveHour: this.props.isTwelveHour\n }));\n }\n var remText = void 0;\n if (!this.state.allReadAvatars) {\n var remainder = receipts.length - MAX_READ_AVATARS;\n if (remainder > 0) {\n remText = React.createElement(\n 'span',\n { className: 'mx_EventTile_readAvatarRemainder',\n onClick: this.toggleAllReadAvatars,\n style: { right: -(left - receiptOffset) } },\n remainder,\n '+'\n );\n }\n }\n\n return React.createElement(\n 'span',\n { className: 'mx_EventTile_readAvatars' },\n remText,\n avatars\n );\n },\n\n onSenderProfileClick: function onSenderProfileClick(event) {\n var mxEvent = this.props.mxEvent;\n _dispatcher2.default.dispatch({\n action: 'insert_mention',\n user_id: mxEvent.getSender()\n });\n },\n\n onCryptoClicked: function onCryptoClicked(e) {\n var event = this.props.mxEvent;\n\n Modal.createTrackedDialogAsync('Encrypted Event Dialog', '', import('../../../async-components/views/dialogs/EncryptedEventDialog'), { event: event });\n },\n\n onRequestKeysClick: function onRequestKeysClick() {\n this.setState({\n // Indicate in the UI that the keys have been requested (this is expected to\n // be reset if the component is mounted in the future).\n previouslyRequestedKeys: true\n });\n\n // Cancel any outgoing key request for this event and resend it. If a response\n // is received for the request with the required keys, the event could be\n // decrypted successfully.\n this.props.matrixClient.cancelAndResendEventRoomKeyRequest(this.props.mxEvent);\n },\n\n onPermalinkClicked: function onPermalinkClicked(e) {\n // This allows the permalink to be opened in a new tab/window or copied as\n // matrix.to, but also for it to enable routing within Riot when clicked.\n e.preventDefault();\n _dispatcher2.default.dispatch({\n action: 'view_room',\n event_id: this.props.mxEvent.getId(),\n highlighted: true,\n room_id: this.props.mxEvent.getRoomId()\n });\n },\n\n _renderE2EPadlock: function _renderE2EPadlock() {\n var ev = this.props.mxEvent;\n var props = { onClick: this.onCryptoClicked };\n\n // event could not be decrypted\n if (ev.getContent().msgtype === 'm.bad.encrypted') {\n return React.createElement(E2ePadlockUndecryptable, props);\n }\n\n // event is encrypted, display padlock corresponding to whether or not it is verified\n if (ev.isEncrypted()) {\n return this.state.verified ? React.createElement(E2ePadlockVerified, props) : React.createElement(E2ePadlockUnverified, props);\n }\n\n if (this.props.matrixClient.isRoomEncrypted(ev.getRoomId())) {\n // else if room is encrypted\n // and event is being encrypted or is not_sent (Unknown Devices/Network Error)\n if (ev.status === _matrixJsSdk.EventStatus.ENCRYPTING) {\n return React.createElement(E2ePadlockEncrypting, props);\n }\n if (ev.status === _matrixJsSdk.EventStatus.NOT_SENT) {\n return React.createElement(E2ePadlockNotSent, props);\n }\n // if the event is not encrypted, but it's an e2e room, show the open padlock\n return React.createElement(E2ePadlockUnencrypted, props);\n }\n\n // no padlock needed\n return null;\n },\n\n render: function render() {\n var _this2 = this;\n\n var MessageTimestamp = sdk.getComponent('messages.MessageTimestamp');\n var SenderProfile = sdk.getComponent('messages.SenderProfile');\n var MemberAvatar = sdk.getComponent('avatars.MemberAvatar');\n\n //console.log(\"EventTile showUrlPreview for %s is %s\", this.props.mxEvent.getId(), this.props.showUrlPreview);\n\n var content = this.props.mxEvent.getContent();\n var msgtype = content.msgtype;\n var eventType = this.props.mxEvent.getType();\n\n // Info messages are basically information about commands processed on a room\n var isInfoMessage = eventType !== 'm.room.message' && eventType !== 'm.sticker' && eventType != 'm.room.create';\n\n var tileHandler = getHandlerTile(this.props.mxEvent);\n // This shouldn't happen: the caller should check we support this type\n // before trying to instantiate us\n if (!tileHandler) {\n var mxEvent = this.props.mxEvent;\n\n console.warn('Event type not supported: type:' + mxEvent.getType() + ' isState:' + mxEvent.isState());\n return React.createElement(\n 'div',\n { className: 'mx_EventTile mx_EventTile_info mx_MNoticeBody' },\n React.createElement(\n 'div',\n { className: 'mx_EventTile_line' },\n (0, _languageHandler._t)('This event could not be displayed')\n )\n );\n }\n var EventTileType = sdk.getComponent(tileHandler);\n\n var isSending = ['sending', 'queued', 'encrypting'].indexOf(this.props.eventSendStatus) !== -1;\n var isRedacted = isMessageEvent(this.props.mxEvent) && this.props.isRedacted;\n var isEncryptionFailure = this.props.mxEvent.isDecryptionFailure();\n\n var classes = classNames({\n mx_EventTile: true,\n mx_EventTile_info: isInfoMessage,\n mx_EventTile_12hr: this.props.isTwelveHour,\n mx_EventTile_encrypting: this.props.eventSendStatus === 'encrypting',\n mx_EventTile_sending: isSending,\n mx_EventTile_notSent: this.props.eventSendStatus === 'not_sent',\n mx_EventTile_highlight: this.props.tileShape === 'notif' ? false : this.shouldHighlight(),\n mx_EventTile_selected: this.props.isSelectedEvent,\n mx_EventTile_continuation: this.props.tileShape ? '' : this.props.continuation,\n mx_EventTile_last: this.props.last,\n mx_EventTile_contextual: this.props.contextual,\n menu: this.state.menu,\n mx_EventTile_verified: this.state.verified === true,\n mx_EventTile_unverified: this.state.verified === false,\n mx_EventTile_bad: isEncryptionFailure,\n mx_EventTile_emote: msgtype === 'm.emote',\n mx_EventTile_redacted: isRedacted\n });\n\n var permalink = (0, _matrixTo.makeEventPermalink)(this.props.mxEvent.getRoomId(), this.props.mxEvent.getId());\n\n var readAvatars = this.getReadAvatars();\n\n var avatar = void 0;\n var sender = void 0;\n var avatarSize = void 0;\n var needsSenderProfile = void 0;\n\n if (this.props.tileShape === \"notif\") {\n avatarSize = 24;\n needsSenderProfile = true;\n } else if (tileHandler === 'messages.RoomCreate') {\n avatarSize = 0;\n needsSenderProfile = false;\n } else if (isInfoMessage) {\n // a small avatar, with no sender profile, for\n // joins/parts/etc\n avatarSize = 14;\n needsSenderProfile = false;\n } else if (this.props.continuation && this.props.tileShape !== \"file_grid\") {\n // no avatar or sender profile for continuation messages\n avatarSize = 0;\n needsSenderProfile = false;\n } else {\n avatarSize = 30;\n needsSenderProfile = true;\n }\n\n if (this.props.mxEvent.sender && avatarSize) {\n avatar = React.createElement(\n 'div',\n { className: 'mx_EventTile_avatar' },\n React.createElement(MemberAvatar, { member: this.props.mxEvent.sender,\n width: avatarSize, height: avatarSize,\n viewUserOnClick: true\n })\n );\n }\n\n if (needsSenderProfile) {\n var text = null;\n if (!this.props.tileShape || this.props.tileShape === 'reply' || this.props.tileShape === 'reply_preview') {\n if (msgtype === 'm.image') text = (0, _languageHandler._td)('%(senderName)s sent an image');else if (msgtype === 'm.video') text = (0, _languageHandler._td)('%(senderName)s sent a video');else if (msgtype === 'm.file') text = (0, _languageHandler._td)('%(senderName)s uploaded a file');\n sender = React.createElement(SenderProfile, { onClick: this.onSenderProfileClick,\n mxEvent: this.props.mxEvent,\n enableFlair: !text,\n text: text });\n } else {\n sender = React.createElement(SenderProfile, { mxEvent: this.props.mxEvent, enableFlair: true });\n }\n }\n\n var editButton = React.createElement('span', { className: 'mx_EventTile_editButton', title: (0, _languageHandler._t)(\"Options\"), onClick: this.onEditClicked });\n\n var timestamp = this.props.mxEvent.getTs() ? React.createElement(MessageTimestamp, { showTwelveHour: this.props.isTwelveHour, ts: this.props.mxEvent.getTs() }) : null;\n\n var keyRequestHelpText = React.createElement(\n 'div',\n { className: 'mx_EventTile_keyRequestInfo_tooltip_contents' },\n React.createElement(\n 'p',\n null,\n this.state.previouslyRequestedKeys ? (0, _languageHandler._t)('Your key share request has been sent - please check your other devices ' + 'for key share requests.') : (0, _languageHandler._t)('Key share requests are sent to your other devices automatically. If you ' + 'rejected or dismissed the key share request on your other devices, click ' + 'here to request the keys for this session again.')\n ),\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('If your other devices do not have the key for this message you will not ' + 'be able to decrypt them.')\n )\n );\n var keyRequestInfoContent = this.state.previouslyRequestedKeys ? (0, _languageHandler._t)('Key request sent.') : (0, _languageHandler._t)('<requestLink>Re-request encryption keys</requestLink> from your other devices.', {}, { 'requestLink': function requestLink(sub) {\n return React.createElement(\n 'a',\n { onClick: _this2.onRequestKeysClick },\n sub\n );\n } });\n\n var ToolTipButton = sdk.getComponent('elements.ToolTipButton');\n var keyRequestInfo = isEncryptionFailure ? React.createElement(\n 'div',\n { className: 'mx_EventTile_keyRequestInfo' },\n React.createElement(\n 'span',\n { className: 'mx_EventTile_keyRequestInfo_text' },\n keyRequestInfoContent\n ),\n React.createElement(ToolTipButton, { helpText: keyRequestHelpText })\n ) : null;\n\n switch (this.props.tileShape) {\n case 'notif':\n {\n var EmojiText = sdk.getComponent('elements.EmojiText');\n var room = this.props.matrixClient.getRoom(this.props.mxEvent.getRoomId());\n return React.createElement(\n 'div',\n { className: classes },\n React.createElement(\n 'div',\n { className: 'mx_EventTile_roomName' },\n React.createElement(\n EmojiText,\n { element: 'a', href: permalink, onClick: this.onPermalinkClicked },\n room ? room.name : ''\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_EventTile_senderDetails' },\n avatar,\n React.createElement(\n 'a',\n { href: permalink, onClick: this.onPermalinkClicked },\n sender,\n timestamp\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_EventTile_line' },\n React.createElement(EventTileType, { ref: 'tile',\n mxEvent: this.props.mxEvent,\n highlights: this.props.highlights,\n highlightLink: this.props.highlightLink,\n showUrlPreview: this.props.showUrlPreview,\n onWidgetLoad: this.props.onWidgetLoad })\n )\n );\n }\n case 'file_grid':\n {\n return React.createElement(\n 'div',\n { className: classes },\n React.createElement(\n 'div',\n { className: 'mx_EventTile_line' },\n React.createElement(EventTileType, { ref: 'tile',\n mxEvent: this.props.mxEvent,\n highlights: this.props.highlights,\n highlightLink: this.props.highlightLink,\n showUrlPreview: this.props.showUrlPreview,\n tileShape: this.props.tileShape,\n onWidgetLoad: this.props.onWidgetLoad })\n ),\n React.createElement(\n 'a',\n {\n className: 'mx_EventTile_senderDetailsLink',\n href: permalink,\n onClick: this.onPermalinkClicked\n },\n React.createElement(\n 'div',\n { className: 'mx_EventTile_senderDetails' },\n sender,\n timestamp\n )\n )\n );\n }\n\n case 'reply':\n case 'reply_preview':\n {\n return React.createElement(\n 'div',\n { className: classes },\n avatar,\n sender,\n React.createElement(\n 'div',\n { className: 'mx_EventTile_reply' },\n React.createElement(\n 'a',\n { href: permalink, onClick: this.onPermalinkClicked },\n timestamp\n ),\n this._renderE2EPadlock(),\n this.props.tileShape === 'reply_preview' && _ReplyThread2.default.makeThread(this.props.mxEvent, this.props.onWidgetLoad, 'replyThread'),\n React.createElement(EventTileType, { ref: 'tile',\n mxEvent: this.props.mxEvent,\n highlights: this.props.highlights,\n highlightLink: this.props.highlightLink,\n onWidgetLoad: this.props.onWidgetLoad,\n showUrlPreview: false })\n )\n );\n }\n default:\n {\n return React.createElement(\n 'div',\n { className: classes },\n React.createElement(\n 'div',\n { className: 'mx_EventTile_msgOption' },\n readAvatars\n ),\n sender,\n React.createElement(\n 'div',\n { className: 'mx_EventTile_line' },\n React.createElement(\n 'a',\n { href: permalink, onClick: this.onPermalinkClicked },\n timestamp\n ),\n this._renderE2EPadlock(),\n _ReplyThread2.default.makeThread(this.props.mxEvent, this.props.onWidgetLoad, 'replyThread'),\n React.createElement(EventTileType, { ref: 'tile',\n mxEvent: this.props.mxEvent,\n highlights: this.props.highlights,\n highlightLink: this.props.highlightLink,\n showUrlPreview: this.props.showUrlPreview,\n onWidgetLoad: this.props.onWidgetLoad }),\n keyRequestInfo,\n editButton\n ),\n avatar\n );\n }\n }\n }\n}));\n\n// XXX this'll eventually be dynamic based on the fields once we have extensible event types\nvar messageTypes = ['m.room.message', 'm.sticker'];\nfunction isMessageEvent(ev) {\n return messageTypes.includes(ev.getType());\n}\n\nmodule.exports.haveTileForEvent = function (e) {\n // Only messages have a tile (black-rectangle) if redacted\n if (e.isRedacted() && !isMessageEvent(e)) return false;\n\n var handler = getHandlerTile(e);\n if (handler === undefined) return false;\n if (handler === 'messages.TextualEvent') {\n return TextForEvent.textForEvent(e) !== '';\n } else if (handler === 'messages.RoomCreate') {\n return Boolean(e.getContent()['predecessor']);\n } else {\n return true;\n }\n};\n\nfunction E2ePadlockUndecryptable(props) {\n return React.createElement(E2ePadlock, (0, _extends3.default)({ alt: (0, _languageHandler._t)(\"Undecryptable\"),\n src: 'img/e2e-blocked.svg', width: '12', height: '12',\n style: { marginLeft: \"-1px\" } }, props));\n}\n\nfunction E2ePadlockEncrypting(props) {\n return React.createElement(E2ePadlock, (0, _extends3.default)({ alt: (0, _languageHandler._t)(\"Encrypting\"), src: 'img/e2e-encrypting.svg', width: '10', height: '12' }, props));\n}\n\nfunction E2ePadlockNotSent(props) {\n return React.createElement(E2ePadlock, (0, _extends3.default)({ alt: (0, _languageHandler._t)(\"Encrypted, not sent\"), src: 'img/e2e-not_sent.svg', width: '10', height: '12' }, props));\n}\n\nfunction E2ePadlockVerified(props) {\n return React.createElement(E2ePadlock, (0, _extends3.default)({ alt: (0, _languageHandler._t)(\"Encrypted by a verified device\"),\n src: 'img/e2e-verified.svg', width: '10', height: '12'\n }, props));\n}\n\nfunction E2ePadlockUnverified(props) {\n return React.createElement(E2ePadlock, (0, _extends3.default)({ alt: (0, _languageHandler._t)(\"Encrypted by an unverified device\"),\n src: 'img/e2e-warning.svg', width: '15', height: '12',\n style: { marginLeft: \"-2px\" } }, props));\n}\n\nfunction E2ePadlockUnencrypted(props) {\n return React.createElement(E2ePadlock, (0, _extends3.default)({ alt: (0, _languageHandler._t)(\"Unencrypted message\"),\n src: 'img/e2e-unencrypted.svg', width: '12', height: '12'\n }, props));\n}\n\nfunction E2ePadlock(props) {\n if (_SettingsStore2.default.getValue(\"alwaysShowEncryptionIcons\")) {\n return React.createElement('img', (0, _extends3.default)({ className: 'mx_EventTile_e2eIcon' }, props));\n } else {\n return React.createElement('img', (0, _extends3.default)({ className: 'mx_EventTile_e2eIcon mx_EventTile_e2eIcon_hidden' }, props));\n }\n}\n\nmodule.exports.getHandlerTile = getHandlerTile;\n//# sourceMappingURL=EventTile.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Keyboard = require('../../../Keyboard');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'ForwardMessage',\n\n propTypes: {\n onCancelClick: _propTypes2.default.func.isRequired\n },\n\n componentWillMount: function componentWillMount() {\n _dispatcher2.default.dispatch({\n action: 'panel_disable',\n rightDisabled: true,\n middleDisabled: true\n });\n },\n\n componentDidMount: function componentDidMount() {\n document.addEventListener('keydown', this._onKeyDown);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.dispatch({\n action: 'panel_disable',\n sideDisabled: false,\n middleDisabled: false\n });\n document.removeEventListener('keydown', this._onKeyDown);\n },\n\n _onKeyDown: function _onKeyDown(ev) {\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.ESCAPE:\n this.props.onCancelClick();\n break;\n }\n },\n\n render: function render() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ForwardMessage' },\n _react2.default.createElement(\n 'h1',\n null,\n (0, _languageHandler._t)('Please select the destination room for this message')\n )\n );\n }\n}); /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2017 Michael Telatynski\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=ForwardMessage.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nvar sdk = require('../../../index');\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar ImageUtils = require('../../../ImageUtils');\nvar Modal = require('../../../Modal');\n\nvar linkify = require('linkifyjs');\nvar linkifyElement = require('linkifyjs/element');\nvar linkifyMatrix = require('../../../linkify-matrix');\nlinkifyMatrix(linkify);\n\nmodule.exports = React.createClass({\n displayName: 'LinkPreviewWidget',\n\n propTypes: {\n link: _propTypes2.default.string.isRequired, // the URL being previewed\n mxEvent: _propTypes2.default.object.isRequired, // the Event associated with the preview\n onCancelClick: _propTypes2.default.func, // called when the preview's cancel ('hide') button is clicked\n onWidgetLoad: _propTypes2.default.func // called when the preview's contents has loaded\n },\n\n getInitialState: function getInitialState() {\n return {\n preview: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this.unmounted = false;\n MatrixClientPeg.get().getUrlPreview(this.props.link, this.props.mxEvent.getTs()).then(function (res) {\n if (_this.unmounted) {\n return;\n }\n _this.setState({ preview: res }, _this.props.onWidgetLoad);\n }, function (error) {\n console.error(\"Failed to get preview for \" + _this.props.link + \" \" + error);\n }).done();\n },\n\n componentDidMount: function componentDidMount() {\n if (this.refs.description) {\n linkifyElement(this.refs.description, linkifyMatrix.options);\n }\n },\n\n componentDidUpdate: function componentDidUpdate() {\n if (this.refs.description) {\n linkifyElement(this.refs.description, linkifyMatrix.options);\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this.unmounted = true;\n },\n\n onImageClick: function onImageClick(ev) {\n var p = this.state.preview;\n if (ev.button != 0 || ev.metaKey) return;\n ev.preventDefault();\n var ImageView = sdk.getComponent(\"elements.ImageView\");\n\n var src = p[\"og:image\"];\n if (src && src.startsWith(\"mxc://\")) {\n src = MatrixClientPeg.get().mxcUrlToHttp(src);\n }\n\n var params = {\n src: src,\n width: p[\"og:image:width\"],\n height: p[\"og:image:height\"],\n name: p[\"og:title\"] || p[\"og:description\"] || this.props.link,\n fileSize: p[\"matrix:image:size\"],\n link: this.props.link\n };\n\n Modal.createDialog(ImageView, params, \"mx_Dialog_lightbox\");\n },\n\n render: function render() {\n var p = this.state.preview;\n if (!p || (0, _keys2.default)(p).length === 0) {\n return React.createElement('div', null);\n }\n\n // FIXME: do we want to factor out all image displaying between this and MImageBody - especially for lightboxing?\n var image = p[\"og:image\"];\n var imageMaxWidth = 100;var imageMaxHeight = 100;\n if (image && image.startsWith(\"mxc://\")) {\n image = MatrixClientPeg.get().mxcUrlToHttp(image, imageMaxWidth, imageMaxHeight);\n }\n\n var thumbHeight = imageMaxHeight;\n if (p[\"og:image:width\"] && p[\"og:image:height\"]) {\n thumbHeight = ImageUtils.thumbHeight(p[\"og:image:width\"], p[\"og:image:height\"], imageMaxWidth, imageMaxHeight);\n }\n\n var img = void 0;\n if (image) {\n img = React.createElement(\n 'div',\n { className: 'mx_LinkPreviewWidget_image', style: { height: thumbHeight } },\n React.createElement('img', { style: { maxWidth: imageMaxWidth, maxHeight: imageMaxHeight }, src: image, onClick: this.onImageClick })\n );\n }\n\n return React.createElement(\n 'div',\n { className: 'mx_LinkPreviewWidget' },\n img,\n React.createElement(\n 'div',\n { className: 'mx_LinkPreviewWidget_caption' },\n React.createElement(\n 'div',\n { className: 'mx_LinkPreviewWidget_title' },\n React.createElement(\n 'a',\n { href: this.props.link, target: '_blank', rel: 'noopener' },\n p[\"og:title\"]\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_LinkPreviewWidget_siteName' },\n p[\"og:site_name\"] ? \" - \" + p[\"og:site_name\"] : null\n ),\n React.createElement(\n 'div',\n { className: 'mx_LinkPreviewWidget_description', ref: 'description' },\n p[\"og:description\"]\n )\n ),\n React.createElement('img', { className: 'mx_LinkPreviewWidget_cancel mx_filterFlipColor',\n src: 'img/cancel.svg', width: '18', height: '18',\n onClick: this.props.onCancelClick })\n );\n }\n});\n//# sourceMappingURL=LinkPreviewWidget.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nmodule.exports = {\n\n /**\n * Returns the actual height that an image of dimensions (fullWidth, fullHeight)\n * will occupy if resized to fit inside a thumbnail bounding box of size\n * (thumbWidth, thumbHeight).\n *\n * If the aspect ratio of the source image is taller than the aspect ratio of\n * the thumbnail bounding box, then we return the thumbHeight parameter unchanged.\n * Otherwise we return the thumbHeight parameter scaled down appropriately to\n * reflect the actual height the scaled thumbnail occupies.\n *\n * This is very useful for calculating how much height a thumbnail will actually\n * consume in the timeline, when performing scroll offset calcuations\n * (e.g. scroll locking)\n */\n thumbHeight: function thumbHeight(fullWidth, fullHeight, thumbWidth, _thumbHeight) {\n if (!fullWidth || !fullHeight) {\n // Cannot calculate thumbnail height for image: missing w/h in metadata. We can't even\n // log this because it's spammy\n return undefined;\n }\n if (fullWidth < thumbWidth && fullHeight < _thumbHeight) {\n // no scaling needs to be applied\n return fullHeight;\n }\n var widthMulti = thumbWidth / fullWidth;\n var heightMulti = _thumbHeight / fullHeight;\n if (widthMulti < heightMulti) {\n // width is the dominant dimension so scaling will be fixed on that\n return Math.floor(widthMulti * fullHeight);\n } else {\n // height is the dominant dimension so scaling will be fixed on that\n return Math.floor(heightMulti * fullHeight);\n }\n }\n};\n//# sourceMappingURL=ImageUtils.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MemberDeviceInfo = function (_React$Component) {\n (0, _inherits3.default)(MemberDeviceInfo, _React$Component);\n\n function MemberDeviceInfo() {\n (0, _classCallCheck3.default)(this, MemberDeviceInfo);\n return (0, _possibleConstructorReturn3.default)(this, (MemberDeviceInfo.__proto__ || (0, _getPrototypeOf2.default)(MemberDeviceInfo)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(MemberDeviceInfo, [{\n key: 'render',\n value: function render() {\n var indicator = null;\n var DeviceVerifyButtons = _index2.default.getComponent('elements.DeviceVerifyButtons');\n\n if (this.props.device.isBlocked()) {\n indicator = _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo_blacklisted' },\n _react2.default.createElement('img', { src: 'img/e2e-blocked.svg', width: '12', height: '12', style: { marginLeft: \"-1px\" }, alt: (0, _languageHandler._t)(\"Blacklisted\") })\n );\n } else if (this.props.device.isVerified()) {\n indicator = _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo_verified' },\n _react2.default.createElement('img', { src: 'img/e2e-verified.svg', width: '10', height: '12', alt: (0, _languageHandler._t)(\"Verified\") })\n );\n } else {\n indicator = _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo_unverified' },\n _react2.default.createElement('img', { src: 'img/e2e-warning.svg', width: '15', height: '12', style: { marginLeft: \"-2px\" }, alt: (0, _languageHandler._t)(\"Unverified\") })\n );\n }\n\n var deviceName = this.props.device.ambiguous ? (this.props.device.getDisplayName() ? this.props.device.getDisplayName() : \"\") + \" (\" + this.props.device.deviceId + \")\" : this.props.device.getDisplayName();\n\n // add the deviceId as a titletext to help with debugging\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo',\n title: (0, _languageHandler._t)(\"device id: \") + this.props.device.deviceId },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo_deviceInfo' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo_deviceId' },\n deviceName,\n indicator\n )\n ),\n _react2.default.createElement(DeviceVerifyButtons, { userId: this.props.userId, device: this.props.device })\n );\n }\n }]);\n return MemberDeviceInfo;\n}(_react2.default.Component);\n\nexports.default = MemberDeviceInfo;\n\n\nMemberDeviceInfo.displayName = 'MemberDeviceInfo';\nMemberDeviceInfo.propTypes = {\n userId: _propTypes2.default.string.isRequired,\n device: _propTypes2.default.object.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=MemberDeviceInfo.js.map","'use strict';\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _create = require('babel-runtime/core-js/object/create');\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _createRoom = require('../../../createRoom');\n\nvar _createRoom2 = _interopRequireDefault(_createRoom);\n\nvar _DMRoomMap = require('../../../utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _Unread = require('../../../Unread');\n\nvar _Unread2 = _interopRequireDefault(_Unread);\n\nvar _Receipt = require('../../../utils/Receipt');\n\nvar _withMatrixClient = require('../../../wrappers/withMatrixClient');\n\nvar _withMatrixClient2 = _interopRequireDefault(_withMatrixClient);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _MultiInviter = require('../../../utils/MultiInviter');\n\nvar _MultiInviter2 = _interopRequireDefault(_MultiInviter);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = (0, _withMatrixClient2.default)(_react2.default.createClass({\n displayName: 'MemberInfo',\n\n propTypes: {\n matrixClient: _propTypes2.default.object.isRequired,\n member: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n can: {\n kick: false,\n ban: false,\n mute: false,\n modifyLevel: false\n },\n muted: false,\n isTargetMod: false,\n updating: 0,\n devicesLoading: true,\n devices: null,\n isIgnoring: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._cancelDeviceList = null;\n\n // only display the devices list if our client supports E2E\n this._enableDevices = this.props.matrixClient.isCryptoEnabled();\n\n var cli = this.props.matrixClient;\n cli.on(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n cli.on(\"Room\", this.onRoom);\n cli.on(\"deleteRoom\", this.onDeleteRoom);\n cli.on(\"Room.timeline\", this.onRoomTimeline);\n cli.on(\"Room.name\", this.onRoomName);\n cli.on(\"Room.receipt\", this.onRoomReceipt);\n cli.on(\"RoomState.events\", this.onRoomStateEvents);\n cli.on(\"RoomMember.name\", this.onRoomMemberName);\n cli.on(\"RoomMember.membership\", this.onRoomMemberMembership);\n cli.on(\"accountData\", this.onAccountData);\n\n this._checkIgnoreState();\n },\n\n componentDidMount: function componentDidMount() {\n this._updateStateForNewMember(this.props.member);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n if (this.props.member.userId !== newProps.member.userId) {\n this._updateStateForNewMember(newProps.member);\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var client = this.props.matrixClient;\n if (client) {\n client.removeListener(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n client.removeListener(\"Room\", this.onRoom);\n client.removeListener(\"deleteRoom\", this.onDeleteRoom);\n client.removeListener(\"Room.timeline\", this.onRoomTimeline);\n client.removeListener(\"Room.name\", this.onRoomName);\n client.removeListener(\"Room.receipt\", this.onRoomReceipt);\n client.removeListener(\"RoomState.events\", this.onRoomStateEvents);\n client.removeListener(\"RoomMember.name\", this.onRoomMemberName);\n client.removeListener(\"RoomMember.membership\", this.onRoomMemberMembership);\n client.removeListener(\"accountData\", this.onAccountData);\n }\n if (this._cancelDeviceList) {\n this._cancelDeviceList();\n }\n },\n\n _checkIgnoreState: function _checkIgnoreState() {\n var isIgnoring = this.props.matrixClient.isUserIgnored(this.props.member.userId);\n this.setState({ isIgnoring: isIgnoring });\n },\n\n _disambiguateDevices: function _disambiguateDevices(devices) {\n var names = (0, _create2.default)(null);\n for (var i = 0; i < devices.length; i++) {\n var name = devices[i].getDisplayName();\n var indexList = names[name] || [];\n indexList.push(i);\n names[name] = indexList;\n }\n for (var _name in names) {\n if (names[_name].length > 1) {\n names[_name].forEach(function (j) {\n devices[j].ambiguous = true;\n });\n }\n }\n },\n\n onDeviceVerificationChanged: function onDeviceVerificationChanged(userId, device) {\n var _this = this;\n\n if (!this._enableDevices) {\n return;\n }\n\n if (userId === this.props.member.userId) {\n // no need to re-download the whole thing; just update our copy of\n // the list.\n\n // Promise.resolve to handle transition from static result to promise; can be removed\n // in future\n _promise2.default.resolve(this.props.matrixClient.getStoredDevicesForUser(userId)).then(function (devices) {\n _this.setState({ devices: devices });\n });\n }\n },\n\n onRoom: function onRoom(room) {\n this.forceUpdate();\n },\n\n onDeleteRoom: function onDeleteRoom(roomId) {\n this.forceUpdate();\n },\n\n onRoomTimeline: function onRoomTimeline(ev, room, toStartOfTimeline) {\n if (toStartOfTimeline) return;\n this.forceUpdate();\n },\n\n onRoomName: function onRoomName(room) {\n this.forceUpdate();\n },\n\n onRoomReceipt: function onRoomReceipt(receiptEvent, room) {\n // because if we read a notification, it will affect notification count\n // only bother updating if there's a receipt from us\n if ((0, _Receipt.findReadReceiptFromUserId)(receiptEvent, this.props.matrixClient.credentials.userId)) {\n this.forceUpdate();\n }\n },\n\n onRoomStateEvents: function onRoomStateEvents(ev, state) {\n this.forceUpdate();\n },\n\n onRoomMemberName: function onRoomMemberName(ev, member) {\n this.forceUpdate();\n },\n\n onRoomMemberMembership: function onRoomMemberMembership(ev, member) {\n if (this.props.member.userId === member.userId) this.forceUpdate();\n },\n\n onAccountData: function onAccountData(ev) {\n if (ev.getType() === 'm.direct') {\n this.forceUpdate();\n }\n },\n\n _updateStateForNewMember: function _updateStateForNewMember(member) {\n var newState = this._calculateOpsPermissions(member);\n newState.devicesLoading = true;\n newState.devices = null;\n this.setState(newState);\n\n if (this._cancelDeviceList) {\n this._cancelDeviceList();\n this._cancelDeviceList = null;\n }\n\n this._downloadDeviceList(member);\n },\n\n _downloadDeviceList: function _downloadDeviceList(member) {\n if (!this._enableDevices) {\n return;\n }\n\n var cancelled = false;\n this._cancelDeviceList = function () {\n cancelled = true;\n };\n\n var client = this.props.matrixClient;\n var self = this;\n client.downloadKeys([member.userId], true).then(function () {\n return client.getStoredDevicesForUser(member.userId);\n }).finally(function () {\n self._cancelDeviceList = null;\n }).done(function (devices) {\n if (cancelled) {\n // we got cancelled - presumably a different user now\n return;\n }\n self._disambiguateDevices(devices);\n self.setState({ devicesLoading: false, devices: devices });\n }, function (err) {\n console.log(\"Error downloading devices\", err);\n self.setState({ devicesLoading: false });\n });\n },\n\n onIgnoreToggle: function onIgnoreToggle() {\n var _this2 = this;\n\n var ignoredUsers = this.props.matrixClient.getIgnoredUsers();\n if (this.state.isIgnoring) {\n var index = ignoredUsers.indexOf(this.props.member.userId);\n if (index !== -1) ignoredUsers.splice(index, 1);\n } else {\n ignoredUsers.push(this.props.member.userId);\n }\n\n this.props.matrixClient.setIgnoredUsers(ignoredUsers).then(function () {\n return _this2.setState({ isIgnoring: !_this2.state.isIgnoring });\n });\n },\n\n onKick: function onKick() {\n var _this3 = this;\n\n var membership = this.props.member.membership;\n var ConfirmUserActionDialog = _index2.default.getComponent(\"dialogs.ConfirmUserActionDialog\");\n _Modal2.default.createTrackedDialog('Confirm User Action Dialog', 'onKick', ConfirmUserActionDialog, {\n member: this.props.member,\n action: membership === \"invite\" ? (0, _languageHandler._t)(\"Disinvite\") : (0, _languageHandler._t)(\"Kick\"),\n title: membership === \"invite\" ? (0, _languageHandler._t)(\"Disinvite this user?\") : (0, _languageHandler._t)(\"Kick this user?\"),\n askReason: membership === \"join\",\n danger: true,\n onFinished: function onFinished(proceed, reason) {\n if (!proceed) return;\n\n _this3.setState({ updating: _this3.state.updating + 1 });\n _this3.props.matrixClient.kick(_this3.props.member.roomId, _this3.props.member.userId, reason || undefined).then(function () {\n // NO-OP; rely on the m.room.member event coming down else we could\n // get out of sync if we force setState here!\n console.log(\"Kick success\");\n }, function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Kick error: \" + err);\n _Modal2.default.createTrackedDialog('Failed to kick', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to kick\"),\n description: err && err.message ? err.message : \"Operation failed\"\n });\n }).finally(function () {\n _this3.setState({ updating: _this3.state.updating - 1 });\n });\n }\n });\n },\n\n onBanOrUnban: function onBanOrUnban() {\n var _this4 = this;\n\n var ConfirmUserActionDialog = _index2.default.getComponent(\"dialogs.ConfirmUserActionDialog\");\n _Modal2.default.createTrackedDialog('Confirm User Action Dialog', 'onBanOrUnban', ConfirmUserActionDialog, {\n member: this.props.member,\n action: this.props.member.membership === 'ban' ? (0, _languageHandler._t)(\"Unban\") : (0, _languageHandler._t)(\"Ban\"),\n title: this.props.member.membership === 'ban' ? (0, _languageHandler._t)(\"Unban this user?\") : (0, _languageHandler._t)(\"Ban this user?\"),\n askReason: this.props.member.membership !== 'ban',\n danger: this.props.member.membership !== 'ban',\n onFinished: function onFinished(proceed, reason) {\n if (!proceed) return;\n\n _this4.setState({ updating: _this4.state.updating + 1 });\n var promise = void 0;\n if (_this4.props.member.membership === 'ban') {\n promise = _this4.props.matrixClient.unban(_this4.props.member.roomId, _this4.props.member.userId);\n } else {\n promise = _this4.props.matrixClient.ban(_this4.props.member.roomId, _this4.props.member.userId, reason || undefined);\n }\n promise.then(function () {\n // NO-OP; rely on the m.room.member event coming down else we could\n // get out of sync if we force setState here!\n console.log(\"Ban success\");\n }, function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Ban error: \" + err);\n _Modal2.default.createTrackedDialog('Failed to ban user', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Failed to ban user\")\n });\n }).finally(function () {\n _this4.setState({ updating: _this4.state.updating - 1 });\n });\n }\n });\n },\n\n _warnSelfDemote: function _warnSelfDemote() {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n return new _promise2.default(function (resolve) {\n _Modal2.default.createTrackedDialog('Demoting Self', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Demote yourself?\"),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"You will not be able to undo this change as you are demoting yourself, \" + \"if you are the last privileged user in the room it will be impossible \" + \"to regain privileges.\")\n ),\n button: (0, _languageHandler._t)(\"Demote\"),\n onFinished: resolve\n });\n });\n },\n\n onMuteToggle: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this5 = this;\n\n var ErrorDialog, roomId, target, room, powerLevelEvent, isMuted, powerLevels, levelToSend, level;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n roomId = this.props.member.roomId;\n target = this.props.member.userId;\n room = this.props.matrixClient.getRoom(roomId);\n\n if (room) {\n _context.next = 6;\n break;\n }\n\n return _context.abrupt('return');\n\n case 6:\n if (!(target === this.props.matrixClient.getUserId())) {\n _context.next = 18;\n break;\n }\n\n _context.prev = 7;\n _context.next = 10;\n return (0, _bluebird.resolve)(this._warnSelfDemote());\n\n case 10:\n if (_context.sent) {\n _context.next = 12;\n break;\n }\n\n return _context.abrupt('return');\n\n case 12:\n _context.next = 18;\n break;\n\n case 14:\n _context.prev = 14;\n _context.t0 = _context['catch'](7);\n\n console.error(\"Failed to warn about self demotion: \", _context.t0);\n return _context.abrupt('return');\n\n case 18:\n powerLevelEvent = room.currentState.getStateEvents(\"m.room.power_levels\", \"\");\n\n if (powerLevelEvent) {\n _context.next = 21;\n break;\n }\n\n return _context.abrupt('return');\n\n case 21:\n isMuted = this.state.muted;\n powerLevels = powerLevelEvent.getContent();\n levelToSend = (powerLevels.events ? powerLevels.events[\"m.room.message\"] : null) || powerLevels.events_default;\n level = void 0;\n\n if (isMuted) {\n // unmute\n level = levelToSend;\n } else {\n // mute\n level = levelToSend - 1;\n }\n level = parseInt(level);\n\n if (!isNaN(level)) {\n this.setState({ updating: this.state.updating + 1 });\n this.props.matrixClient.setPowerLevel(roomId, target, level, powerLevelEvent).then(function () {\n // NO-OP; rely on the m.room.member event coming down else we could\n // get out of sync if we force setState here!\n console.log(\"Mute toggle success\");\n }, function (err) {\n console.error(\"Mute error: \" + err);\n _Modal2.default.createTrackedDialog('Failed to mute user', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Failed to mute user\")\n });\n }).finally(function () {\n _this5.setState({ updating: _this5.state.updating - 1 });\n });\n }\n\n case 28:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[7, 14]]);\n }));\n\n function onMuteToggle() {\n return _ref.apply(this, arguments);\n }\n\n return onMuteToggle;\n }(),\n\n onModToggle: function onModToggle() {\n var _this6 = this;\n\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n var roomId = this.props.member.roomId;\n var target = this.props.member.userId;\n var room = this.props.matrixClient.getRoom(roomId);\n if (!room) return;\n\n var powerLevelEvent = room.currentState.getStateEvents(\"m.room.power_levels\", \"\");\n if (!powerLevelEvent) return;\n\n var me = room.getMember(this.props.matrixClient.credentials.userId);\n if (!me) return;\n\n var defaultLevel = powerLevelEvent.getContent().users_default;\n var modLevel = me.powerLevel - 1;\n if (modLevel > 50 && defaultLevel < 50) modLevel = 50; // try to stick with the vector level defaults\n // toggle the level\n var newLevel = this.state.isTargetMod ? defaultLevel : modLevel;\n this.setState({ updating: this.state.updating + 1 });\n this.props.matrixClient.setPowerLevel(roomId, target, parseInt(newLevel), powerLevelEvent).then(function () {\n // NO-OP; rely on the m.room.member event coming down else we could\n // get out of sync if we force setState here!\n console.log(\"Mod toggle success\");\n }, function (err) {\n if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN') {\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n } else {\n console.error(\"Toggle moderator error:\" + err);\n _Modal2.default.createTrackedDialog('Failed to toggle moderator status', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Failed to toggle moderator status\")\n });\n }\n }).finally(function () {\n _this6.setState({ updating: _this6.state.updating - 1 });\n });\n },\n\n _applyPowerChange: function _applyPowerChange(roomId, target, powerLevel, powerLevelEvent) {\n var _this7 = this;\n\n this.setState({ updating: this.state.updating + 1 });\n this.props.matrixClient.setPowerLevel(roomId, target, parseInt(powerLevel), powerLevelEvent).then(function () {\n // NO-OP; rely on the m.room.member event coming down else we could\n // get out of sync if we force setState here!\n console.log(\"Power change success\");\n }, function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to change power level \" + err);\n _Modal2.default.createTrackedDialog('Failed to change power level', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Failed to change power level\")\n });\n }).finally(function () {\n _this7.setState({ updating: _this7.state.updating - 1 });\n }).done();\n },\n\n onPowerChange: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(powerLevel) {\n var _this8 = this;\n\n var roomId, target, room, powerLevelEvent, myUserId, QuestionDialog, myPower;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n roomId = this.props.member.roomId;\n target = this.props.member.userId;\n room = this.props.matrixClient.getRoom(roomId);\n\n if (room) {\n _context2.next = 5;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 5:\n powerLevelEvent = room.currentState.getStateEvents(\"m.room.power_levels\", \"\");\n\n if (powerLevelEvent) {\n _context2.next = 8;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 8:\n if (powerLevelEvent.getContent().users) {\n _context2.next = 11;\n break;\n }\n\n this._applyPowerChange(roomId, target, powerLevel, powerLevelEvent);\n return _context2.abrupt('return');\n\n case 11:\n myUserId = this.props.matrixClient.getUserId();\n QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n\n // If we are changing our own PL it can only ever be decreasing, which we cannot reverse.\n\n if (!(myUserId === target)) {\n _context2.next = 26;\n break;\n }\n\n _context2.prev = 14;\n _context2.next = 17;\n return (0, _bluebird.resolve)(this._warnSelfDemote());\n\n case 17:\n if (_context2.sent) {\n _context2.next = 19;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 19:\n this._applyPowerChange(roomId, target, powerLevel, powerLevelEvent);\n _context2.next = 25;\n break;\n\n case 22:\n _context2.prev = 22;\n _context2.t0 = _context2['catch'](14);\n\n console.error(\"Failed to warn about self demotion: \", _context2.t0);\n\n case 25:\n return _context2.abrupt('return');\n\n case 26:\n myPower = powerLevelEvent.getContent().users[myUserId];\n\n if (!(parseInt(myPower) === parseInt(powerLevel))) {\n _context2.next = 30;\n break;\n }\n\n _Modal2.default.createTrackedDialog('Promote to PL100 Warning', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Warning!\"),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"You will not be able to undo this change as you are promoting the user \" + \"to have the same power level as yourself.\"),\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)(\"Are you sure?\")\n ),\n button: (0, _languageHandler._t)(\"Continue\"),\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n _this8._applyPowerChange(roomId, target, powerLevel, powerLevelEvent);\n }\n }\n });\n return _context2.abrupt('return');\n\n case 30:\n this._applyPowerChange(roomId, target, powerLevel, powerLevelEvent);\n\n case 31:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[14, 22]]);\n }));\n\n function onPowerChange(_x) {\n return _ref2.apply(this, arguments);\n }\n\n return onPowerChange;\n }(),\n\n onNewDMClick: function onNewDMClick() {\n var _this9 = this;\n\n this.setState({ updating: this.state.updating + 1 });\n (0, _createRoom2.default)({ dmUserId: this.props.member.userId }).finally(function () {\n _this9.setState({ updating: _this9.state.updating - 1 });\n }).done();\n },\n\n onLeaveClick: function onLeaveClick() {\n _dispatcher2.default.dispatch({\n action: 'leave_room',\n room_id: this.props.member.roomId\n });\n },\n\n _calculateOpsPermissions: function _calculateOpsPermissions(member) {\n var defaultPerms = {\n can: {},\n muted: false\n };\n var room = this.props.matrixClient.getRoom(member.roomId);\n if (!room) return defaultPerms;\n\n var powerLevels = room.currentState.getStateEvents(\"m.room.power_levels\", \"\");\n if (!powerLevels) return defaultPerms;\n\n var me = room.getMember(this.props.matrixClient.credentials.userId);\n if (!me) return defaultPerms;\n\n var them = member;\n return {\n can: this._calculateCanPermissions(me, them, powerLevels.getContent()),\n muted: this._isMuted(them, powerLevels.getContent()),\n isTargetMod: them.powerLevel > powerLevels.getContent().users_default\n };\n },\n\n _calculateCanPermissions: function _calculateCanPermissions(me, them, powerLevels) {\n var isMe = me.userId === them.userId;\n var can = {\n kick: false,\n ban: false,\n mute: false,\n modifyLevel: false,\n modifyLevelMax: 0\n };\n var canAffectUser = them.powerLevel < me.powerLevel || isMe;\n if (!canAffectUser) {\n //console.log(\"Cannot affect user: %s >= %s\", them.powerLevel, me.powerLevel);\n return can;\n }\n var editPowerLevel = (powerLevels.events ? powerLevels.events[\"m.room.power_levels\"] : null) || powerLevels.state_default;\n\n can.kick = me.powerLevel >= powerLevels.kick;\n can.ban = me.powerLevel >= powerLevels.ban;\n can.mute = me.powerLevel >= editPowerLevel;\n can.modifyLevel = me.powerLevel >= editPowerLevel && (isMe || me.powerLevel > them.powerLevel);\n can.modifyLevelMax = me.powerLevel;\n\n return can;\n },\n\n _isMuted: function _isMuted(member, powerLevelContent) {\n if (!powerLevelContent || !member) return false;\n\n var levelToSend = (powerLevelContent.events ? powerLevelContent.events[\"m.room.message\"] : null) || powerLevelContent.events_default;\n return member.powerLevel < levelToSend;\n },\n\n onCancel: function onCancel(e) {\n _dispatcher2.default.dispatch({\n action: \"view_user\",\n member: null\n });\n },\n\n onMemberAvatarClick: function onMemberAvatarClick() {\n var member = this.props.member;\n var avatarUrl = member.getMxcAvatarUrl();\n if (!avatarUrl) return;\n\n var httpUrl = this.props.matrixClient.mxcUrlToHttp(avatarUrl);\n var ImageView = _index2.default.getComponent(\"elements.ImageView\");\n var params = {\n src: httpUrl,\n name: member.name\n };\n\n _Modal2.default.createDialog(ImageView, params, \"mx_Dialog_lightbox\");\n },\n\n onRoomTileClick: function onRoomTileClick(roomId) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: roomId\n });\n },\n\n\n _renderDevices: function _renderDevices() {\n if (!this._enableDevices) return null;\n\n var devices = this.state.devices;\n var MemberDeviceInfo = _index2.default.getComponent('rooms.MemberDeviceInfo');\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n\n var devComponents = void 0;\n if (this.state.devicesLoading) {\n // still loading\n devComponents = _react2.default.createElement(Spinner, null);\n } else if (devices === null) {\n devComponents = (0, _languageHandler._t)(\"Unable to load device list\");\n } else if (devices.length === 0) {\n devComponents = (0, _languageHandler._t)(\"No devices with registered encryption keys\");\n } else {\n devComponents = [];\n for (var i = 0; i < devices.length; i++) {\n devComponents.push(_react2.default.createElement(MemberDeviceInfo, { key: i,\n userId: this.props.member.userId,\n device: devices[i] }));\n }\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Devices\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_devices' },\n devComponents\n )\n );\n },\n\n onShareUserClick: function onShareUserClick() {\n var ShareDialog = _index2.default.getComponent(\"dialogs.ShareDialog\");\n _Modal2.default.createTrackedDialog('share room member dialog', '', ShareDialog, {\n target: this.props.member\n });\n },\n\n _renderUserOptions: function _renderUserOptions() {\n var _this10 = this;\n\n var cli = this.props.matrixClient;\n var member = this.props.member;\n\n var ignoreButton = null;\n var insertPillButton = null;\n var inviteUserButton = null;\n var readReceiptButton = null;\n\n // Only allow the user to ignore the user if its not ourselves\n // same goes for jumping to read receipt\n if (member.userId !== cli.getUserId()) {\n ignoreButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this.onIgnoreToggle, className: 'mx_MemberInfo_field' },\n this.state.isIgnoring ? (0, _languageHandler._t)(\"Unignore\") : (0, _languageHandler._t)(\"Ignore\")\n );\n\n if (member.roomId) {\n var room = cli.getRoom(member.roomId);\n var eventId = room.getEventReadUpTo(member.userId);\n\n var onReadReceiptButton = function onReadReceiptButton() {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n highlighted: true,\n event_id: eventId,\n room_id: member.roomId\n });\n };\n\n var onInsertPillButton = function onInsertPillButton() {\n _dispatcher2.default.dispatch({\n action: 'insert_mention',\n user_id: member.userId\n });\n };\n\n readReceiptButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: onReadReceiptButton, className: 'mx_MemberInfo_field' },\n (0, _languageHandler._t)('Jump to read receipt')\n );\n\n insertPillButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: onInsertPillButton, className: \"mx_MemberInfo_field\" },\n (0, _languageHandler._t)('Mention')\n );\n }\n\n if (!member || !member.membership || member.membership === 'leave') {\n var roomId = member && member.roomId ? member.roomId : _RoomViewStore2.default.getRoomId();\n var onInviteUserButton = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var inviter, ErrorDialog;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n\n // We use a MultiInviter to re-use the invite logic, even though\n // we're only inviting one user.\n inviter = new _MultiInviter2.default(roomId);\n _context3.next = 4;\n return (0, _bluebird.resolve)(inviter.invite([member.userId]).then(function () {\n if (inviter.getCompletionState(userId) !== \"invited\") throw new Error(inviter.getErrorText(userId));\n }));\n\n case 4:\n _context3.next = 10;\n break;\n\n case 6:\n _context3.prev = 6;\n _context3.t0 = _context3['catch'](0);\n ErrorDialog = _index2.default.getComponent('dialogs.ErrorDialog');\n\n _Modal2.default.createTrackedDialog('Failed to invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to invite'),\n description: _context3.t0 && _context3.t0.message ? _context3.t0.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n\n case 10:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, _this10, [[0, 6]]);\n }));\n\n return function onInviteUserButton() {\n return _ref3.apply(this, arguments);\n };\n }();\n\n inviteUserButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: onInviteUserButton, className: 'mx_MemberInfo_field' },\n (0, _languageHandler._t)('Invite')\n );\n }\n }\n\n var shareUserButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this.onShareUserClick, className: 'mx_MemberInfo_field' },\n (0, _languageHandler._t)('Share Link to User')\n );\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"User Options\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_buttons' },\n readReceiptButton,\n shareUserButton,\n insertPillButton,\n ignoreButton,\n inviteUserButton\n )\n );\n },\n\n render: function render() {\n var startChat = void 0;\n var kickButton = void 0;\n var banButton = void 0;\n var muteButton = void 0;\n var giveModButton = void 0;\n var spinner = void 0;\n\n if (this.props.member.userId !== this.props.matrixClient.credentials.userId) {\n var dmRoomMap = new _DMRoomMap2.default(this.props.matrixClient);\n // dmRooms will not include dmRooms that we have been invited into but did not join.\n // Because DMRoomMap runs off account_data[m.direct] which is only set on join of dm room.\n // XXX: we potentially want DMs we have been invited to, to also show up here :L\n // especially as logic below concerns specially if we haven't joined but have been invited\n var dmRooms = dmRoomMap.getDMRoomsForUserId(this.props.member.userId);\n\n var RoomTile = _index2.default.getComponent(\"rooms.RoomTile\");\n\n var tiles = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(dmRooms), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var roomId = _step.value;\n\n var _room = this.props.matrixClient.getRoom(roomId);\n if (_room) {\n var myMembership = _room.getMyMembership();\n // not a DM room if we have are not joined\n if (myMembership !== 'join') continue;\n\n var them = this.props.member;\n // not a DM room if they are not joined\n if (!them.membership || them.membership !== 'join') continue;\n\n var highlight = _room.getUnreadNotificationCount('highlight') > 0;\n\n tiles.push(_react2.default.createElement(RoomTile, { key: _room.roomId, room: _room,\n transparent: true,\n collapsed: false,\n selected: false,\n unread: _Unread2.default.doesRoomHaveUnreadMessages(_room),\n highlight: highlight,\n isInvite: false,\n onClick: this.onRoomTileClick\n }));\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var labelClasses = (0, _classnames2.default)({\n mx_MemberInfo_createRoom_label: true,\n mx_RoomTile_name: true\n });\n var startNewChat = _react2.default.createElement(\n _AccessibleButton2.default,\n {\n className: 'mx_MemberInfo_createRoom',\n onClick: this.onNewDMClick\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_avatar' },\n _react2.default.createElement('img', { src: 'img/create-big.svg', width: '26', height: '26' })\n ),\n _react2.default.createElement(\n 'div',\n { className: labelClasses },\n _react2.default.createElement(\n 'i',\n null,\n (0, _languageHandler._t)(\"Start a chat\")\n )\n )\n );\n\n startChat = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Direct chats\")\n ),\n tiles,\n startNewChat\n );\n }\n\n if (this.state.updating) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n spinner = _react2.default.createElement(Loader, { imgClassName: 'mx_ContextualMenu_spinner' });\n }\n\n if (this.state.can.kick) {\n var membership = this.props.member.membership;\n var kickLabel = membership === \"invite\" ? (0, _languageHandler._t)(\"Disinvite\") : (0, _languageHandler._t)(\"Kick\");\n kickButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_field',\n onClick: this.onKick },\n kickLabel\n );\n }\n if (this.state.can.ban) {\n var label = (0, _languageHandler._t)(\"Ban\");\n if (this.props.member.membership === 'ban') {\n label = (0, _languageHandler._t)(\"Unban\");\n }\n banButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_field',\n onClick: this.onBanOrUnban },\n label\n );\n }\n if (this.state.can.mute) {\n var muteLabel = this.state.muted ? (0, _languageHandler._t)(\"Unmute\") : (0, _languageHandler._t)(\"Mute\");\n muteButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_field',\n onClick: this.onMuteToggle },\n muteLabel\n );\n }\n if (this.state.can.toggleMod) {\n var giveOpLabel = this.state.isTargetMod ? (0, _languageHandler._t)(\"Revoke Moderator\") : (0, _languageHandler._t)(\"Make Moderator\");\n giveModButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_field', onClick: this.onModToggle },\n giveOpLabel\n );\n }\n\n var adminTools = void 0;\n if (kickButton || banButton || muteButton || giveModButton) {\n adminTools = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Admin Tools\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_buttons' },\n muteButton,\n kickButton,\n banButton,\n giveModButton\n )\n );\n }\n\n var memberName = this.props.member.name;\n\n var presenceState = void 0;\n var presenceLastActiveAgo = void 0;\n var presenceCurrentlyActive = void 0;\n var statusMessage = void 0;\n\n if (this.props.member.user) {\n presenceState = this.props.member.user.presence;\n presenceLastActiveAgo = this.props.member.user.lastActiveAgo;\n presenceCurrentlyActive = this.props.member.user.currentlyActive;\n\n if (_SettingsStore2.default.isFeatureEnabled(\"feature_custom_status\")) {\n statusMessage = this.props.member.user._unstable_statusMessage;\n }\n }\n\n var room = this.props.matrixClient.getRoom(this.props.member.roomId);\n var powerLevelEvent = room ? room.currentState.getStateEvents(\"m.room.power_levels\", \"\") : null;\n var powerLevelUsersDefault = powerLevelEvent ? powerLevelEvent.getContent().users_default : 0;\n\n var enablePresenceByHsUrl = _SdkConfig2.default.get()[\"enable_presence_by_hs_url\"];\n var hsUrl = this.props.matrixClient.baseUrl;\n var showPresence = true;\n if (enablePresenceByHsUrl && enablePresenceByHsUrl[hsUrl] !== undefined) {\n showPresence = enablePresenceByHsUrl[hsUrl];\n }\n\n var presenceLabel = null;\n if (showPresence) {\n var PresenceLabel = _index2.default.getComponent('rooms.PresenceLabel');\n presenceLabel = _react2.default.createElement(PresenceLabel, { activeAgo: presenceLastActiveAgo,\n currentlyActive: presenceCurrentlyActive,\n presenceState: presenceState });\n }\n\n var statusLabel = null;\n if (statusMessage) {\n statusLabel = _react2.default.createElement(\n 'span',\n { className: 'mx_MemberInfo_statusMessage' },\n statusMessage\n );\n }\n\n var roomMemberDetails = null;\n if (this.props.member.roomId) {\n // is in room\n var PowerSelector = _index2.default.getComponent('elements.PowerSelector');\n roomMemberDetails = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profileField' },\n (0, _languageHandler._t)(\"Level:\"),\n ' ',\n _react2.default.createElement(\n 'b',\n null,\n _react2.default.createElement(PowerSelector, { controlled: true,\n value: parseInt(this.props.member.powerLevel),\n maxValue: this.state.can.modifyLevelMax,\n disabled: !this.state.can.modifyLevel,\n usersDefault: powerLevelUsersDefault,\n onChange: this.onPowerChange })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profileField' },\n presenceLabel,\n statusLabel\n )\n );\n }\n\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n var MemberAvatar = _index2.default.getComponent('avatars.MemberAvatar');\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo' },\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_cancel', onClick: this.onCancel },\n _react2.default.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18', className: 'mx_filterFlipColor', alt: (0, _languageHandler._t)('Close') })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_avatar' },\n _react2.default.createElement(MemberAvatar, { onClick: this.onMemberAvatarClick, member: this.props.member, width: 48, height: 48 })\n ),\n _react2.default.createElement(\n EmojiText,\n { element: 'h2' },\n memberName\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profile' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profileField' },\n this.props.member.userId\n ),\n roomMemberDetails\n ),\n this._renderUserOptions(),\n adminTools,\n startChat,\n this._renderDevices(),\n spinner\n )\n );\n }\n})); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017, 2018 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/*\n * State vars:\n * 'can': {\n * kick: boolean,\n * ban: boolean,\n * mute: boolean,\n * modifyLevel: boolean\n * },\n * 'muted': boolean,\n * 'isTargetMod': boolean\n */\n//# sourceMappingURL=MemberInfo.js.map","'use strict';\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\"); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2017, 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar sdk = require('../../../index');\nvar rate_limited_func = require('../../../ratelimitedfunc');\nvar CallHandler = require(\"../../../CallHandler\");\n\nvar INITIAL_LOAD_NUM_MEMBERS = 30;\nvar INITIAL_LOAD_NUM_INVITED = 5;\nvar SHOW_MORE_INCREMENT = 100;\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MemberList',\n\n getInitialState: function getInitialState() {\n var cli = MatrixClientPeg.get();\n if (cli.hasLazyLoadMembersEnabled()) {\n // show an empty list\n return this._getMembersState([]);\n } else {\n return this._getMembersState(this.roomMembers());\n }\n },\n\n componentWillMount: function componentWillMount() {\n this._mounted = true;\n var cli = MatrixClientPeg.get();\n if (cli.hasLazyLoadMembersEnabled()) {\n this._showMembersAccordingToMembershipWithLL();\n cli.on(\"Room.myMembership\", this.onMyMembership);\n } else {\n this._listenForMembersChanges();\n }\n cli.on(\"Room\", this.onRoom); // invites & joining after peek\n var enablePresenceByHsUrl = _SdkConfig2.default.get()[\"enable_presence_by_hs_url\"];\n var hsUrl = MatrixClientPeg.get().baseUrl;\n this._showPresence = true;\n if (enablePresenceByHsUrl && enablePresenceByHsUrl[hsUrl] !== undefined) {\n this._showPresence = enablePresenceByHsUrl[hsUrl];\n }\n },\n\n _listenForMembersChanges: function _listenForMembersChanges() {\n var cli = MatrixClientPeg.get();\n cli.on(\"RoomState.members\", this.onRoomStateMember);\n cli.on(\"RoomMember.name\", this.onRoomMemberName);\n cli.on(\"RoomState.events\", this.onRoomStateEvent);\n // We listen for changes to the lastPresenceTs which is essentially\n // listening for all presence events (we display most of not all of\n // the information contained in presence events).\n cli.on(\"User.lastPresenceTs\", this.onUserLastPresenceTs);\n // cli.on(\"Room.timeline\", this.onRoomTimeline);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._mounted = false;\n var cli = MatrixClientPeg.get();\n if (cli) {\n cli.removeListener(\"RoomState.members\", this.onRoomStateMember);\n cli.removeListener(\"RoomMember.name\", this.onRoomMemberName);\n cli.removeListener(\"Room.myMembership\", this.onMyMembership);\n cli.removeListener(\"RoomState.events\", this.onRoomStateEvent);\n cli.removeListener(\"Room\", this.onRoom);\n cli.removeListener(\"User.lastPresenceTs\", this.onUserLastPresenceTs);\n }\n\n // cancel any pending calls to the rate_limited_funcs\n this._updateList.cancelPendingCall();\n },\n\n /**\n * If lazy loading is enabled, either:\n * show a spinner and load the members if the user is joined,\n * or show the members available so far if the user is invited\n */\n _showMembersAccordingToMembershipWithLL: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var cli, _cli, room, membership;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n cli = MatrixClientPeg.get();\n\n if (!cli.hasLazyLoadMembersEnabled()) {\n _context.next = 18;\n break;\n }\n\n _cli = MatrixClientPeg.get();\n room = _cli.getRoom(this.props.roomId);\n membership = room && room.getMyMembership();\n\n if (!(membership === \"join\")) {\n _context.next = 17;\n break;\n }\n\n this.setState({ loading: true });\n _context.prev = 7;\n _context.next = 10;\n return (0, _bluebird.resolve)(room.loadMembersIfNeeded());\n\n case 10:\n _context.next = 14;\n break;\n\n case 12:\n _context.prev = 12;\n _context.t0 = _context['catch'](7);\n\n case 14:\n if (this._mounted) {\n this.setState(this._getMembersState(this.roomMembers()));\n this._listenForMembersChanges();\n }\n _context.next = 18;\n break;\n\n case 17:\n if (membership === \"invite\") {\n // show the members we've got when invited\n this.setState(this._getMembersState(this.roomMembers()));\n }\n\n case 18:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[7, 12]]);\n }));\n\n function _showMembersAccordingToMembershipWithLL() {\n return _ref.apply(this, arguments);\n }\n\n return _showMembersAccordingToMembershipWithLL;\n }(),\n\n _getMembersState: function _getMembersState(members) {\n // set the state after determining _showPresence to make sure it's\n // taken into account while rerendering\n return {\n loading: false,\n members: members,\n filteredJoinedMembers: this._filterMembers(members, 'join'),\n filteredInvitedMembers: this._filterMembers(members, 'invite'),\n\n // ideally we'd size this to the page height, but\n // in practice I find that a little constraining\n truncateAtJoined: INITIAL_LOAD_NUM_MEMBERS,\n truncateAtInvited: INITIAL_LOAD_NUM_INVITED,\n searchQuery: \"\"\n };\n },\n\n onUserLastPresenceTs: function onUserLastPresenceTs(event, user) {\n // Attach a SINGLE listener for global presence changes then locate the\n // member tile and re-render it. This is more efficient than every tile\n // evar attaching their own listener.\n // console.log(\"explicit presence from \" + user.userId);\n var tile = this.refs[user.userId];\n if (tile) {\n this._updateList(); // reorder the membership list\n }\n },\n\n\n onRoom: function onRoom(room) {\n if (room.roomId !== this.props.roomId) {\n return;\n }\n // We listen for room events because when we accept an invite\n // we need to wait till the room is fully populated with state\n // before refreshing the member list else we get a stale list.\n this._showMembersAccordingToMembershipWithLL();\n },\n\n onMyMembership: function onMyMembership(room, membership, oldMembership) {\n if (room.roomId === this.props.roomId && membership === \"join\") {\n this._showMembersAccordingToMembershipWithLL();\n }\n },\n\n onRoomStateMember: function onRoomStateMember(ev, state, member) {\n if (member.roomId !== this.props.roomId) {\n return;\n }\n this._updateList();\n },\n\n onRoomMemberName: function onRoomMemberName(ev, member) {\n if (member.roomId !== this.props.roomId) {\n return;\n }\n this._updateList();\n },\n\n onRoomStateEvent: function onRoomStateEvent(event, state) {\n if (event.getRoomId() === this.props.roomId && event.getType() === \"m.room.third_party_invite\") {\n this._updateList();\n }\n },\n\n _updateList: new rate_limited_func(function () {\n // console.log(\"Updating memberlist\");\n var newState = {\n loading: false,\n members: this.roomMembers()\n };\n newState.filteredJoinedMembers = this._filterMembers(newState.members, 'join', this.state.searchQuery);\n newState.filteredInvitedMembers = this._filterMembers(newState.members, 'invite', this.state.searchQuery);\n this.setState(newState);\n }, 500),\n\n getMembersWithUser: function getMembersWithUser() {\n if (!this.props.roomId) return [];\n var cli = MatrixClientPeg.get();\n var room = cli.getRoom(this.props.roomId);\n if (!room) return [];\n\n var allMembers = (0, _values2.default)(room.currentState.members);\n\n allMembers.forEach(function (member) {\n // work around a race where you might have a room member object\n // before the user object exists. This may or may not cause\n // https://github.com/vector-im/vector-web/issues/186\n if (member.user === null) {\n member.user = cli.getUser(member.userId);\n }\n\n // XXX: this user may have no lastPresenceTs value!\n // the right solution here is to fix the race rather than leave it as 0\n });\n\n return allMembers;\n },\n\n roomMembers: function roomMembers() {\n var ConferenceHandler = CallHandler.getConferenceHandler();\n\n var allMembers = this.getMembersWithUser();\n var filteredAndSortedMembers = allMembers.filter(function (m) {\n return (m.membership === 'join' || m.membership === 'invite') && (!ConferenceHandler || ConferenceHandler && !ConferenceHandler.isConferenceUser(m.userId));\n });\n filteredAndSortedMembers.sort(this.memberSort);\n return filteredAndSortedMembers;\n },\n\n _createOverflowTileJoined: function _createOverflowTileJoined(overflowCount, totalCount) {\n return this._createOverflowTile(overflowCount, totalCount, this._showMoreJoinedMemberList);\n },\n\n _createOverflowTileInvited: function _createOverflowTileInvited(overflowCount, totalCount) {\n return this._createOverflowTile(overflowCount, totalCount, this._showMoreInvitedMemberList);\n },\n\n _createOverflowTile: function _createOverflowTile(overflowCount, totalCount, onClick) {\n // For now we'll pretend this is any entity. It should probably be a separate tile.\n var EntityTile = sdk.getComponent(\"rooms.EntityTile\");\n var BaseAvatar = sdk.getComponent(\"avatars.BaseAvatar\");\n var text = (0, _languageHandler._t)(\"and %(count)s others...\", { count: overflowCount });\n return _react2.default.createElement(EntityTile, { className: 'mx_EntityTile_ellipsis', avatarJsx: _react2.default.createElement(BaseAvatar, { url: 'img/ellipsis.svg', name: '...', width: 36, height: 36 }), name: text, presenceState: 'online', suppressOnHover: true,\n onClick: onClick });\n },\n\n _showMoreJoinedMemberList: function _showMoreJoinedMemberList() {\n this.setState({\n truncateAtJoined: this.state.truncateAtJoined + SHOW_MORE_INCREMENT\n });\n },\n\n _showMoreInvitedMemberList: function _showMoreInvitedMemberList() {\n this.setState({\n truncateAtInvited: this.state.truncateAtInvited + SHOW_MORE_INCREMENT\n });\n },\n\n memberString: function memberString(member) {\n if (!member) {\n return \"(null)\";\n } else {\n return \"(\" + member.name + \", \" + member.powerLevel + \", \" + member.user.lastActiveAgo + \", \" + member.user.currentlyActive + \")\";\n }\n },\n\n // returns negative if a comes before b,\n // returns 0 if a and b are equivalent in ordering\n // returns positive if a comes after b.\n memberSort: function memberSort(memberA, memberB) {\n // order by last active, with \"active now\" first.\n // ...and then by power\n // ...and then alphabetically.\n // We could tiebreak instead by \"last recently spoken in this room\" if we wanted to.\n\n var userA = memberA.user;\n var userB = memberB.user;\n\n // if (!userA || !userB) {\n // console.log(\"comparing \" + memberA.name + \" user=\" + memberA.user + \" with \" + memberB.name + \" user=\" + memberB.user);\n // }\n\n if (!userA && !userB) return 0;\n if (userA && !userB) return -1;\n if (!userA && userB) return 1;\n\n // console.log(\"comparing \" + this.memberString(memberA) + \" and \" + this.memberString(memberB));\n\n if (userA.currentlyActive && userB.currentlyActive || !this._showPresence) {\n // console.log(memberA.name + \" and \" + memberB.name + \" are both active\");\n if (memberA.powerLevel === memberB.powerLevel) {\n // console.log(memberA + \" and \" + memberB + \" have same power level\");\n if (memberA.name && memberB.name) {\n // console.log(\"comparing names: \" + memberA.name + \" and \" + memberB.name);\n var nameA = memberA.name[0] === '@' ? memberA.name.substr(1) : memberA.name;\n var nameB = memberB.name[0] === '@' ? memberB.name.substr(1) : memberB.name;\n return nameA.localeCompare(nameB);\n } else {\n return 0;\n }\n } else {\n // console.log(\"comparing power: \" + memberA.powerLevel + \" and \" + memberB.powerLevel);\n return memberB.powerLevel - memberA.powerLevel;\n }\n }\n\n if (userA.currentlyActive && !userB.currentlyActive) return -1;\n if (!userA.currentlyActive && userB.currentlyActive) return 1;\n\n // For now, let's just order things by timestamp. It's really annoying\n // that a user disappears from sight just because they temporarily go offline\n return userB.getLastActiveTs() - userA.getLastActiveTs();\n },\n\n onSearchQueryChanged: function onSearchQueryChanged(ev) {\n var q = ev.target.value;\n this.setState({\n searchQuery: q,\n filteredJoinedMembers: this._filterMembers(this.state.members, 'join', q),\n filteredInvitedMembers: this._filterMembers(this.state.members, 'invite', q)\n });\n },\n\n _filterMembers: function _filterMembers(members, membership, query) {\n return members.filter(function (m) {\n if (query) {\n query = query.toLowerCase();\n var matchesName = m.name.toLowerCase().indexOf(query) !== -1;\n var matchesId = m.userId.toLowerCase().indexOf(query) !== -1;\n\n if (!matchesName && !matchesId) {\n return false;\n }\n }\n\n return m.membership === membership;\n });\n },\n\n _getPending3PidInvites: function _getPending3PidInvites() {\n // include 3pid invites (m.room.third_party_invite) state events.\n // The HS may have already converted these into m.room.member invites so\n // we shouldn't add them if the 3pid invite state key (token) is in the\n // member invite (content.third_party_invite.signed.token)\n var room = MatrixClientPeg.get().getRoom(this.props.roomId);\n\n if (room) {\n return room.currentState.getStateEvents(\"m.room.third_party_invite\").filter(function (e) {\n // any events without these keys are not valid 3pid invites, so we ignore them\n var requiredKeys = ['key_validity_url', 'public_key', 'display_name'];\n for (var i = 0; i < requiredKeys.length; ++i) {\n if (e.getContent()[requiredKeys[i]] === undefined) return false;\n }\n\n // discard all invites which have a m.room.member event since we've\n // already added them.\n var memberEvent = room.currentState.getInviteForThreePidToken(e.getStateKey());\n if (memberEvent) return false;\n return true;\n });\n }\n },\n\n _makeMemberTiles: function _makeMemberTiles(members, membership) {\n var _this = this;\n\n var MemberTile = sdk.getComponent(\"rooms.MemberTile\");\n\n var memberList = members.map(function (m) {\n return _react2.default.createElement(MemberTile, { key: m.userId, member: m, ref: m.userId, showPresence: _this._showPresence });\n });\n\n // XXX: surely this is not the right home for this logic.\n // Double XXX: Now it's really, really not the right home for this logic:\n // we shouldn't even be passing in the 'membership' param to this function.\n // Ew, ew, and ew.\n // Triple XXX: This violates the size constraint, the output is expected/desired\n // to be the same length as the members input array.\n if (membership === \"invite\") {\n var EntityTile = sdk.getComponent(\"rooms.EntityTile\");\n memberList.push.apply(memberList, (0, _toConsumableArray3.default)(this._getPending3PidInvites().map(function (e) {\n return _react2.default.createElement(EntityTile, { key: e.getStateKey(),\n name: e.getContent().display_name,\n suppressOnHover: true\n });\n })));\n }\n\n return memberList;\n },\n\n _getChildrenJoined: function _getChildrenJoined(start, end) {\n return this._makeMemberTiles(this.state.filteredJoinedMembers.slice(start, end));\n },\n\n _getChildCountJoined: function _getChildCountJoined() {\n return this.state.filteredJoinedMembers.length;\n },\n\n _getChildrenInvited: function _getChildrenInvited(start, end) {\n return this._makeMemberTiles(this.state.filteredInvitedMembers.slice(start, end), 'invite');\n },\n\n _getChildCountInvited: function _getChildCountInvited() {\n return this.state.filteredInvitedMembers.length + (this._getPending3PidInvites() || []).length;\n },\n\n render: function render() {\n if (this.state.loading) {\n var Spinner = sdk.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n var TruncatedList = sdk.getComponent(\"elements.TruncatedList\");\n var GeminiScrollbarWrapper = sdk.getComponent(\"elements.GeminiScrollbarWrapper\");\n\n var invitedSection = null;\n if (this._getChildCountInvited() > 0) {\n invitedSection = _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList_invited' },\n _react2.default.createElement(\n 'h2',\n null,\n (0, _languageHandler._t)(\"Invited\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList_wrapper' },\n _react2.default.createElement(TruncatedList, { className: 'mx_MemberList_wrapper', truncateAt: this.state.truncateAtInvited,\n createOverflowElement: this._createOverflowTileInvited,\n getChildren: this._getChildrenInvited,\n getChildCount: this._getChildCountInvited\n })\n )\n );\n }\n\n var inputBox = _react2.default.createElement(\n 'form',\n { autoComplete: 'off' },\n _react2.default.createElement('input', { className: 'mx_MemberList_query', id: 'mx_MemberList_query', type: 'text',\n onChange: this.onSearchQueryChanged, value: this.state.searchQuery,\n placeholder: (0, _languageHandler._t)('Filter room members') })\n );\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList' },\n inputBox,\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true, className: 'mx_MemberList_joined' },\n _react2.default.createElement(TruncatedList, { className: 'mx_MemberList_wrapper', truncateAt: this.state.truncateAtJoined,\n createOverflowElement: this._createOverflowTileJoined,\n getChildren: this._getChildrenJoined,\n getChildCount: this._getChildCountJoined\n }),\n invitedSection\n )\n );\n }\n});\n//# sourceMappingURL=MemberList.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar sdk = require('../../../index');\nvar dis = require('../../../dispatcher');\nvar Modal = require(\"../../../Modal\");\n\n\nmodule.exports = React.createClass({\n displayName: 'MemberTile',\n\n propTypes: {\n member: _propTypes2.default.any.isRequired, // RoomMember\n showPresence: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n showPresence: true\n };\n },\n\n getInitialState: function getInitialState() {\n return {};\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n if (this.member_last_modified_time === undefined || this.member_last_modified_time < nextProps.member.getLastModifiedTime()) {\n return true;\n }\n if (nextProps.member.user && (this.user_last_modified_time === undefined || this.user_last_modified_time < nextProps.member.user.getLastModifiedTime())) {\n return true;\n }\n return false;\n },\n\n onClick: function onClick(e) {\n dis.dispatch({\n action: 'view_user',\n member: this.props.member\n });\n },\n\n _getDisplayName: function _getDisplayName() {\n return this.props.member.name;\n },\n\n getPowerLabel: function getPowerLabel() {\n return (0, _languageHandler._t)(\"%(userName)s (power %(powerLevelNumber)s)\", { userName: this.props.member.userId, powerLevelNumber: this.props.member.powerLevel });\n },\n\n render: function render() {\n var MemberAvatar = sdk.getComponent('avatars.MemberAvatar');\n var BaseAvatar = sdk.getComponent('avatars.BaseAvatar');\n var EntityTile = sdk.getComponent('rooms.EntityTile');\n\n var member = this.props.member;\n var name = this._getDisplayName();\n var active = -1;\n var presenceState = member.user ? member.user.presence : null;\n\n var statusMessage = null;\n if (member.user && _SettingsStore2.default.isFeatureEnabled(\"feature_custom_status\")) {\n statusMessage = member.user._unstable_statusMessage;\n }\n\n var av = React.createElement(MemberAvatar, { member: member, width: 36, height: 36 });\n\n if (member.user) {\n this.user_last_modified_time = member.user.getLastModifiedTime();\n }\n this.member_last_modified_time = member.getLastModifiedTime();\n\n // We deliberately leave power levels that are not 100 or 50 undefined\n var powerStatus = {\n 100: EntityTile.POWER_STATUS_ADMIN,\n 50: EntityTile.POWER_STATUS_MODERATOR\n }[this.props.member.powerLevel];\n\n return React.createElement(EntityTile, (0, _extends3.default)({}, this.props, { presenceState: presenceState,\n presenceLastActiveAgo: member.user ? member.user.lastActiveAgo : 0,\n presenceLastTs: member.user ? member.user.lastPresenceTs : 0,\n presenceCurrentlyActive: member.user ? member.user.currentlyActive : false,\n avatarJsx: av, title: this.getPowerLabel(), onClick: this.onClick,\n name: name, powerStatus: powerStatus, showPresence: this.props.showPresence,\n subtextLabel: statusMessage\n }));\n }\n});\n//# sourceMappingURL=MemberTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _CallHandler = require('../../../CallHandler');\n\nvar _CallHandler2 = _interopRequireDefault(_CallHandler);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _Stickerpicker = require('./Stickerpicker');\n\nvar _Stickerpicker2 = _interopRequireDefault(_Stickerpicker);\n\nvar _matrixTo = require('../../../matrix-to');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar formatButtonList = [(0, _languageHandler._td)(\"bold\"), (0, _languageHandler._td)(\"italic\"), (0, _languageHandler._td)(\"deleted\"), (0, _languageHandler._td)(\"underlined\"), (0, _languageHandler._td)(\"inline-code\"), (0, _languageHandler._td)(\"block-quote\"), (0, _languageHandler._td)(\"bulleted-list\"), (0, _languageHandler._td)(\"numbered-list\")];\n\nvar MessageComposer = function (_React$Component) {\n (0, _inherits3.default)(MessageComposer, _React$Component);\n\n function MessageComposer(props, context) {\n (0, _classCallCheck3.default)(this, MessageComposer);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (MessageComposer.__proto__ || (0, _getPrototypeOf2.default)(MessageComposer)).call(this, props, context));\n\n _this.onCallClick = _this.onCallClick.bind(_this);\n _this.onHangupClick = _this.onHangupClick.bind(_this);\n _this.onUploadClick = _this.onUploadClick.bind(_this);\n _this.onUploadFileSelected = _this.onUploadFileSelected.bind(_this);\n _this.uploadFiles = _this.uploadFiles.bind(_this);\n _this.onVoiceCallClick = _this.onVoiceCallClick.bind(_this);\n _this._onAutocompleteConfirm = _this._onAutocompleteConfirm.bind(_this);\n _this.onToggleFormattingClicked = _this.onToggleFormattingClicked.bind(_this);\n _this.onToggleMarkdownClicked = _this.onToggleMarkdownClicked.bind(_this);\n _this.onInputStateChanged = _this.onInputStateChanged.bind(_this);\n _this.onEvent = _this.onEvent.bind(_this);\n _this._onRoomStateEvents = _this._onRoomStateEvents.bind(_this);\n _this._onRoomViewStoreUpdate = _this._onRoomViewStoreUpdate.bind(_this);\n _this._onTombstoneClick = _this._onTombstoneClick.bind(_this);\n\n _this.state = {\n inputState: {\n marks: [],\n blockType: null,\n isRichTextEnabled: _SettingsStore2.default.getValue('MessageComposerInput.isRichTextEnabled')\n },\n showFormatting: _SettingsStore2.default.getValue('MessageComposer.showFormatting'),\n isQuoting: Boolean(_RoomViewStore2.default.getQuotingEvent()),\n tombstone: _this._getRoomTombstone()\n };\n return _this;\n }\n\n (0, _createClass3.default)(MessageComposer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n // N.B. using 'event' rather than 'RoomEvents' otherwise the crypto handler\n // for 'event' fires *after* 'RoomEvent', and our room won't have yet been\n // marked as encrypted.\n // XXX: fragile as all hell - fixme somehow, perhaps with a dedicated Room.encryption event or something.\n _MatrixClientPeg2.default.get().on(\"event\", this.onEvent);\n _MatrixClientPeg2.default.get().on(\"RoomState.events\", this._onRoomStateEvents);\n this._roomStoreToken = _RoomViewStore2.default.addListener(this._onRoomViewStoreUpdate);\n this._waitForOwnMember();\n }\n }, {\n key: '_waitForOwnMember',\n value: function _waitForOwnMember() {\n var _this2 = this;\n\n // if we have the member already, do that\n var me = this.props.room.getMember(_MatrixClientPeg2.default.get().getUserId());\n if (me) {\n this.setState({ me: me });\n return;\n }\n // Otherwise, wait for member loading to finish and then update the member for the avatar.\n // The members should already be loading, and loadMembersIfNeeded\n // will return the promise for the existing operation\n this.props.room.loadMembersIfNeeded().then(function () {\n var me = _this2.props.room.getMember(_MatrixClientPeg2.default.get().getUserId());\n _this2.setState({ me: me });\n });\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener(\"event\", this.onEvent);\n _MatrixClientPeg2.default.get().removeListener(\"RoomState.events\", this._onRoomStateEvents);\n }\n if (this._roomStoreToken) {\n this._roomStoreToken.remove();\n }\n }\n }, {\n key: 'onEvent',\n value: function onEvent(event) {\n if (event.getType() !== 'm.room.encryption') return;\n if (event.getRoomId() !== this.props.room.roomId) return;\n this.forceUpdate();\n }\n }, {\n key: '_onRoomStateEvents',\n value: function _onRoomStateEvents(ev, state) {\n if (ev.getRoomId() !== this.props.room.roomId) return;\n\n if (ev.getType() === 'm.room.tombstone') {\n this.setState({ tombstone: this._getRoomTombstone() });\n }\n }\n }, {\n key: '_getRoomTombstone',\n value: function _getRoomTombstone() {\n return this.props.room.currentState.getStateEvents('m.room.tombstone', '');\n }\n }, {\n key: '_onRoomViewStoreUpdate',\n value: function _onRoomViewStoreUpdate() {\n var isQuoting = Boolean(_RoomViewStore2.default.getQuotingEvent());\n if (this.state.isQuoting === isQuoting) return;\n this.setState({ isQuoting: isQuoting });\n }\n }, {\n key: 'onUploadClick',\n value: function onUploadClick(ev) {\n if (_MatrixClientPeg2.default.get().isGuest()) {\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n return;\n }\n\n this.refs.uploadInput.click();\n }\n }, {\n key: 'onUploadFileSelected',\n value: function onUploadFileSelected(files) {\n var tfiles = files.target.files;\n this.uploadFiles(tfiles);\n }\n }, {\n key: 'uploadFiles',\n value: function uploadFiles(files) {\n var _this3 = this;\n\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n\n var fileList = [];\n var acceptedFiles = [];\n var failedFiles = [];\n\n for (var i = 0; i < files.length; i++) {\n var fileAcceptedOrError = this.props.uploadAllowed(files[i]);\n if (fileAcceptedOrError === true) {\n acceptedFiles.push(_react2.default.createElement(\n 'li',\n { key: i },\n _react2.default.createElement(TintableSvg, { key: i, src: 'img/files.svg', width: '16', height: '16' }),\n ' ',\n files[i].name || (0, _languageHandler._t)('Attachment')\n ));\n fileList.push(files[i]);\n } else {\n failedFiles.push(_react2.default.createElement(\n 'li',\n { key: i },\n _react2.default.createElement(TintableSvg, { key: i, src: 'img/files.svg', width: '16', height: '16' }),\n ' ',\n files[i].name || (0, _languageHandler._t)('Attachment'),\n ' ',\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Reason') + \": \" + fileAcceptedOrError\n )\n ));\n }\n }\n\n var isQuoting = Boolean(_RoomViewStore2.default.getQuotingEvent());\n var replyToWarning = null;\n if (isQuoting) {\n replyToWarning = _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('At this time it is not possible to reply with a file so this will be sent without being a reply.')\n );\n }\n\n var acceptedFilesPart = acceptedFiles.length === 0 ? null : _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Are you sure you want to upload the following files?')\n ),\n _react2.default.createElement(\n 'ul',\n { style: { listStyle: 'none', textAlign: 'left' } },\n acceptedFiles\n )\n );\n\n var failedFilesPart = failedFiles.length === 0 ? null : _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('The following files cannot be uploaded:')\n ),\n _react2.default.createElement(\n 'ul',\n { style: { listStyle: 'none', textAlign: 'left' } },\n failedFiles\n )\n );\n var buttonText = void 0;\n if (acceptedFiles.length > 0 && failedFiles.length > 0) {\n buttonText = \"Upload selected\";\n } else if (failedFiles.length > 0) {\n buttonText = \"Close\";\n }\n\n _Modal2.default.createTrackedDialog('Upload Files confirmation', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Upload Files'),\n description: _react2.default.createElement(\n 'div',\n null,\n acceptedFilesPart,\n failedFilesPart,\n replyToWarning\n ),\n hasCancelButton: acceptedFiles.length > 0,\n button: buttonText,\n onFinished: function onFinished(shouldUpload) {\n if (shouldUpload) {\n // MessageComposer shouldn't have to rely on its parent passing in a callback to upload a file\n if (fileList) {\n for (var _i = 0; _i < fileList.length; _i++) {\n _this3.props.uploadFile(fileList[_i]);\n }\n }\n }\n\n _this3.refs.uploadInput.value = null;\n }\n });\n }\n }, {\n key: 'onHangupClick',\n value: function onHangupClick() {\n var call = _CallHandler2.default.getCallForRoom(this.props.room.roomId);\n //var call = CallHandler.getAnyActiveCall();\n if (!call) {\n return;\n }\n _dispatcher2.default.dispatch({\n action: 'hangup',\n // hangup the call for this room, which may not be the room in props\n // (e.g. conferences which will hangup the 1:1 room instead)\n room_id: call.roomId\n });\n }\n }, {\n key: 'onCallClick',\n value: function onCallClick(ev) {\n _dispatcher2.default.dispatch({\n action: 'place_call',\n type: ev.shiftKey ? \"screensharing\" : \"video\",\n room_id: this.props.room.roomId\n });\n }\n }, {\n key: 'onVoiceCallClick',\n value: function onVoiceCallClick(ev) {\n _dispatcher2.default.dispatch({\n action: 'place_call',\n type: \"voice\",\n room_id: this.props.room.roomId\n });\n }\n }, {\n key: 'onInputStateChanged',\n value: function onInputStateChanged(inputState) {\n this.setState({ inputState: inputState });\n }\n }, {\n key: '_onAutocompleteConfirm',\n value: function _onAutocompleteConfirm(range, completion) {\n if (this.messageComposerInput) {\n this.messageComposerInput.setDisplayedCompletion(range, completion);\n }\n }\n }, {\n key: 'onFormatButtonClicked',\n value: function onFormatButtonClicked(name, event) {\n event.preventDefault();\n this.messageComposerInput.onFormatButtonClicked(name, event);\n }\n }, {\n key: 'onToggleFormattingClicked',\n value: function onToggleFormattingClicked() {\n _SettingsStore2.default.setValue(\"MessageComposer.showFormatting\", null, _SettingsStore.SettingLevel.DEVICE, !this.state.showFormatting);\n this.setState({ showFormatting: !this.state.showFormatting });\n }\n }, {\n key: 'onToggleMarkdownClicked',\n value: function onToggleMarkdownClicked(e) {\n e.preventDefault(); // don't steal focus from the editor!\n this.messageComposerInput.enableRichtext(!this.state.inputState.isRichTextEnabled);\n }\n }, {\n key: '_onTombstoneClick',\n value: function _onTombstoneClick(ev) {\n ev.preventDefault();\n\n var replacementRoomId = this.state.tombstone.getContent()['replacement_room'];\n _dispatcher2.default.dispatch({\n action: 'view_room',\n highlighted: true,\n room_id: replacementRoomId\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var uploadInputStyle = { display: 'none' };\n var MemberStatusMessageAvatar = _index2.default.getComponent('avatars.MemberStatusMessageAvatar');\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var MessageComposerInput = _index2.default.getComponent(\"rooms.MessageComposerInput\");\n\n var controls = [];\n\n if (this.state.me) {\n controls.push(_react2.default.createElement(\n 'div',\n { key: 'controls_avatar', className: 'mx_MessageComposer_avatar' },\n _react2.default.createElement(MemberStatusMessageAvatar, { member: this.state.me, width: 24, height: 24 })\n ));\n }\n\n var e2eImg = void 0;var e2eTitle = void 0;var e2eClass = void 0;\n var roomIsEncrypted = _MatrixClientPeg2.default.get().isRoomEncrypted(this.props.room.roomId);\n if (roomIsEncrypted) {\n // FIXME: show a /!\\ if there are untrusted devices in the room...\n e2eImg = 'img/e2e-verified.svg';\n e2eTitle = (0, _languageHandler._t)('Encrypted room');\n e2eClass = 'mx_MessageComposer_e2eIcon';\n } else {\n e2eImg = 'img/e2e-unencrypted.svg';\n e2eTitle = (0, _languageHandler._t)('Unencrypted room');\n e2eClass = 'mx_MessageComposer_e2eIcon mx_filterFlipColor';\n }\n\n controls.push(_react2.default.createElement('img', { key: 'e2eIcon', className: e2eClass, src: e2eImg, width: '12', height: '12',\n alt: e2eTitle, title: e2eTitle\n }));\n\n var callButton = void 0;\n var videoCallButton = void 0;\n var hangupButton = void 0;\n\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n // Call buttons\n if (this.props.callState && this.props.callState !== 'ended') {\n hangupButton = _react2.default.createElement(\n AccessibleButton,\n { key: 'controls_hangup', className: 'mx_MessageComposer_hangup', onClick: this.onHangupClick },\n _react2.default.createElement('img', { src: 'img/hangup.svg', alt: (0, _languageHandler._t)('Hangup'), title: (0, _languageHandler._t)('Hangup'), width: '25', height: '26' })\n );\n } else {\n callButton = _react2.default.createElement(\n AccessibleButton,\n { key: 'controls_call', className: 'mx_MessageComposer_voicecall', onClick: this.onVoiceCallClick, title: (0, _languageHandler._t)('Voice call') },\n _react2.default.createElement(TintableSvg, { src: 'img/icon-call.svg', width: '35', height: '35' })\n );\n videoCallButton = _react2.default.createElement(\n AccessibleButton,\n { key: 'controls_videocall', className: 'mx_MessageComposer_videocall', onClick: this.onCallClick, title: (0, _languageHandler._t)('Video call') },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-video.svg', width: '35', height: '35' })\n );\n }\n\n var canSendMessages = !this.state.tombstone && this.props.room.maySendMessage();\n\n // TODO: Remove temporary logging for riot-web#7838\n // Note: we rip apart the power level event ourselves because we don't want to\n // log too much data about it - just the bits we care about. Many of the variables\n // logged here are to help figure out where in the stack the 'cannot post in room'\n // warning is coming from. This means logging various numbers from the PL event to\n // verify RoomState._maySendEventOfType is doing the right thing.\n var room = this.props.room;\n var plEvent = room.currentState.getStateEvents('m.room.power_levels', '');\n var plEventString = \"<no power level event>\";\n if (plEvent) {\n var content = plEvent.getContent();\n if (!content) {\n plEventString = \"<no event content>\";\n } else {\n var stringifyFalsey = function stringifyFalsey(v) {\n return v === null ? '<null>' : v === undefined ? '<undefined>' : v;\n };\n var actualUserPl = stringifyFalsey(content.users ? content.users[room.myUserId] : \"<no users in content>\");\n var usersPl = stringifyFalsey(content.users_default);\n var actualEventPl = stringifyFalsey(content.events ? content.events['m.room.message'] : \"<no events in content>\");\n var eventPl = stringifyFalsey(content.events_default);\n plEventString = 'actualUserPl=' + actualUserPl + ' defaultUserPl=' + usersPl + ' actualEventPl=' + actualEventPl + ' defaultEventPl=' + eventPl;\n }\n }\n console.log('[riot-web#7838] renderComposer() hasTombstone=' + !!this.state.tombstone + ' maySendMessage=' + room.maySendMessage() + (' myMembership=' + room.getMyMembership() + ' maySendEvent=' + room.currentState.maySendEvent('m.room.message', room.myUserId)) + (' myUserId=' + room.myUserId + ' roomId=' + room.roomId + ' hasPlEvent=' + !!plEvent + ' powerLevels=\\'' + plEventString + '\\''));\n\n if (canSendMessages) {\n // This also currently includes the call buttons. Really we should\n // check separately for whether we can call, but this is slightly\n // complex because of conference calls.\n var uploadButton = _react2.default.createElement(\n AccessibleButton,\n { key: 'controls_upload', className: 'mx_MessageComposer_upload',\n onClick: this.onUploadClick, title: (0, _languageHandler._t)('Upload file') },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-upload.svg', width: '35', height: '35' }),\n _react2.default.createElement('input', { ref: 'uploadInput', type: 'file',\n style: uploadInputStyle,\n multiple: true,\n onChange: this.onUploadFileSelected })\n );\n\n var formattingButton = this.state.inputState.isRichTextEnabled ? _react2.default.createElement(AccessibleButton, { element: 'img', className: 'mx_MessageComposer_formatting',\n alt: (0, _languageHandler._t)(\"Show Text Formatting Toolbar\"),\n title: (0, _languageHandler._t)(\"Show Text Formatting Toolbar\"),\n src: 'img/button-text-formatting.svg',\n onClick: this.onToggleFormattingClicked,\n style: { visibility: this.state.showFormatting ? 'hidden' : 'visible' },\n key: 'controls_formatting' }) : null;\n\n var placeholderText = void 0;\n if (this.state.isQuoting) {\n if (roomIsEncrypted) {\n placeholderText = (0, _languageHandler._t)('Send an encrypted reply…');\n } else {\n placeholderText = (0, _languageHandler._t)('Send a reply (unencrypted)…');\n }\n } else {\n if (roomIsEncrypted) {\n placeholderText = (0, _languageHandler._t)('Send an encrypted message…');\n } else {\n placeholderText = (0, _languageHandler._t)('Send a message (unencrypted)…');\n }\n }\n\n var stickerpickerButton = _react2.default.createElement(_Stickerpicker2.default, { key: 'stickerpicker_controls_button', room: this.props.room });\n\n controls.push(_react2.default.createElement(MessageComposerInput, {\n ref: function ref(c) {\n return _this4.messageComposerInput = c;\n },\n key: 'controls_input',\n onResize: this.props.onResize,\n room: this.props.room,\n placeholder: placeholderText,\n onFilesPasted: this.uploadFiles,\n onInputStateChanged: this.onInputStateChanged }), formattingButton, stickerpickerButton, uploadButton, hangupButton, callButton, videoCallButton);\n } else if (this.state.tombstone) {\n var replacementRoomId = this.state.tombstone.getContent()['replacement_room'];\n\n controls.push(_react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_replaced_wrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_replaced_valign' },\n _react2.default.createElement('img', { className: 'mx_MessageComposer_roomReplaced_icon', src: 'img/room_replaced.svg' }),\n _react2.default.createElement(\n 'span',\n { className: 'mx_MessageComposer_roomReplaced_header' },\n (0, _languageHandler._t)(\"This room has been replaced and is no longer active.\")\n ),\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n 'a',\n { href: (0, _matrixTo.makeRoomPermalink)(replacementRoomId),\n className: 'mx_MessageComposer_roomReplaced_link',\n onClick: this._onTombstoneClick\n },\n (0, _languageHandler._t)(\"The conversation continues here.\")\n )\n )\n ));\n } else {\n // TODO: Remove temporary logging for riot-web#7838\n console.log(\"[riot-web#7838] Falling back to showing cannot post in room error\");\n controls.push(_react2.default.createElement(\n 'div',\n { key: 'controls_error', className: 'mx_MessageComposer_noperm_error' },\n (0, _languageHandler._t)('You do not have permission to post to this room')\n ));\n }\n\n var formatBar = void 0;\n if (this.state.showFormatting && this.state.inputState.isRichTextEnabled) {\n var _state$inputState = this.state.inputState,\n marks = _state$inputState.marks,\n blockType = _state$inputState.blockType;\n\n var formatButtons = formatButtonList.map(function (name) {\n // special-case to match the md serializer and the special-case in MessageComposerInput.js\n var markName = name === 'inline-code' ? 'code' : name;\n var active = marks.some(function (mark) {\n return mark.type === markName;\n }) || blockType === name;\n var suffix = active ? '-on' : '';\n var onFormatButtonClicked = _this4.onFormatButtonClicked.bind(_this4, name);\n var className = 'mx_MessageComposer_format_button mx_filterFlipColor';\n return _react2.default.createElement('img', { className: className,\n title: (0, _languageHandler._t)(name),\n onMouseDown: onFormatButtonClicked,\n key: name,\n src: 'img/button-text-' + name + suffix + '.svg',\n height: '17' });\n });\n\n formatBar = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_formatbar_wrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_formatbar' },\n formatButtons,\n _react2.default.createElement('div', { style: { flex: 1 } }),\n _react2.default.createElement('img', { title: this.state.inputState.isRichTextEnabled ? (0, _languageHandler._t)(\"Turn Markdown on\") : (0, _languageHandler._t)(\"Turn Markdown off\"),\n onMouseDown: this.onToggleMarkdownClicked,\n className: 'mx_MessageComposer_formatbar_markdown mx_filterFlipColor',\n src: 'img/button-md-' + !this.state.inputState.isRichTextEnabled + '.png' }),\n _react2.default.createElement(AccessibleButton, { element: 'img', title: (0, _languageHandler._t)(\"Hide Text Formatting Toolbar\"),\n onClick: this.onToggleFormattingClicked,\n className: 'mx_MessageComposer_formatbar_cancel mx_filterFlipColor',\n src: 'img/icon-text-cancel.svg' })\n )\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_wrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_row' },\n controls\n )\n ),\n formatBar\n );\n }\n }]);\n return MessageComposer;\n}(_react2.default.Component);\n\nexports.default = MessageComposer;\n\n\nMessageComposer.propTypes = {\n // a callback which is called when the height of the composer is\n // changed due to a change in content.\n onResize: _propTypes2.default.func,\n\n // js-sdk Room object\n room: _propTypes2.default.object.isRequired,\n\n // string representing the current voip call state\n callState: _propTypes2.default.string,\n\n // callback when a file to upload is chosen\n uploadFile: _propTypes2.default.func.isRequired,\n\n // function to test whether a file should be allowed to be uploaded.\n uploadAllowed: _propTypes2.default.func.isRequired,\n\n // string representing the current room app drawer state\n showApps: _propTypes2.default.bool\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=MessageComposer.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _setImmediate2 = require('babel-runtime/core-js/set-immediate');\n\nvar _setImmediate3 = _interopRequireDefault(_setImmediate2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _slateReact = require('slate-react');\n\nvar _slate = require('slate');\n\nvar _slateHtmlSerializer = require('slate-html-serializer');\n\nvar _slateHtmlSerializer2 = _interopRequireDefault(_slateHtmlSerializer);\n\nvar _slateMdSerializer = require('slate-md-serializer');\n\nvar _slateMdSerializer2 = _interopRequireDefault(_slateMdSerializer);\n\nvar _slatePlainSerializer = require('slate-plain-serializer');\n\nvar _slatePlainSerializer2 = _interopRequireDefault(_slatePlainSerializer);\n\nvar _PlainWithPillsSerializer = require('../../../autocomplete/PlainWithPillsSerializer');\n\nvar _PlainWithPillsSerializer2 = _interopRequireDefault(_PlainWithPillsSerializer);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _SlashCommands = require('../../../SlashCommands');\n\nvar _Keyboard = require('../../../Keyboard');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Analytics = require('../../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _RichText = require('../../../RichText');\n\nvar RichText = _interopRequireWildcard(_RichText);\n\nvar _HtmlUtils = require('../../../HtmlUtils');\n\nvar HtmlUtils = _interopRequireWildcard(_HtmlUtils);\n\nvar _Autocomplete = require('./Autocomplete');\n\nvar _Autocomplete2 = _interopRequireDefault(_Autocomplete);\n\nvar _Autocompleter = require('../../../autocomplete/Autocompleter');\n\nvar _Markdown = require('../../../Markdown');\n\nvar _Markdown2 = _interopRequireDefault(_Markdown);\n\nvar _ComposerHistoryManager = require('../../../ComposerHistoryManager');\n\nvar _ComposerHistoryManager2 = _interopRequireDefault(_ComposerHistoryManager);\n\nvar _MessageComposerStore = require('../../../stores/MessageComposerStore');\n\nvar _MessageComposerStore2 = _interopRequireDefault(_MessageComposerStore);\n\nvar _linkifyMatrix = require('../../../linkify-matrix');\n\nvar _emojione = require('emojione');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _matrixTo = require('../../../matrix-to');\n\nvar _ReplyPreview = require('./ReplyPreview');\n\nvar _ReplyPreview2 = _interopRequireDefault(_ReplyPreview);\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _ReplyThread = require('../elements/ReplyThread');\n\nvar _ReplyThread2 = _interopRequireDefault(_ReplyThread);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar REGEX_MATRIXTO_MARKDOWN_GLOBAL = new RegExp(_linkifyMatrix.MATRIXTO_MD_LINK_PATTERN, 'g');\n\nvar EMOJI_SHORTNAMES = (0, _keys2.default)(_emojione.emojioneList);\nvar EMOJI_UNICODE_TO_SHORTNAME = (0, _emojione.mapUnicodeToShort)();\nvar REGEX_EMOJI_WHITESPACE = new RegExp('(?:^|\\\\s)(' + _emojione.asciiRegexp + ')\\\\s$');\nvar EMOJI_REGEX = new RegExp(_emojione.unicodeRegexp, 'g');\n\nvar TYPING_USER_TIMEOUT = 10000;var TYPING_SERVER_TIMEOUT = 30000;\n\nvar ENTITY_TYPES = {\n AT_ROOM_PILL: 'ATROOMPILL'\n};\n\n// the Slate node type to default to for unstyled text\nvar DEFAULT_NODE = 'paragraph';\n\n// map HTML elements through to our Slate schema node types\n// used for the HTML deserializer.\n// (The names here are chosen to match the MD serializer's schema for convenience)\nvar BLOCK_TAGS = {\n p: 'paragraph',\n blockquote: 'block-quote',\n ul: 'bulleted-list',\n h1: 'heading1',\n h2: 'heading2',\n h3: 'heading3',\n h4: 'heading4',\n h5: 'heading5',\n h6: 'heading6',\n li: 'list-item',\n ol: 'numbered-list',\n pre: 'code'\n};\n\nvar MARK_TAGS = {\n strong: 'bold',\n b: 'bold', // deprecated\n em: 'italic',\n i: 'italic', // deprecated\n code: 'code',\n u: 'underlined',\n del: 'deleted',\n strike: 'deleted', // deprecated\n s: 'deleted' // deprecated\n};\n\nvar SLATE_SCHEMA = {\n inlines: {\n pill: {\n isVoid: true\n },\n emoji: {\n isVoid: true\n }\n }\n};\n\nfunction onSendMessageFailed(err, room) {\n // XXX: temporary logging to try to diagnose\n // https://github.com/vector-im/riot-web/issues/3148\n console.log('MessageComposer got send failure: ' + err.name + '(' + err + ')');\n _dispatcher2.default.dispatch({\n action: 'message_send_failed'\n });\n}\n\nfunction rangeEquals(a, b) {\n return a.anchor.key === b.anchor.key && a.anchor.offset === b.anchorOffset && a.focus.key === b.focusKey && a.focus.offset === b.focusOffset && a.isFocused === b.isFocused && a.isBackward === b.isBackward;\n}\n\n/*\n * The textInput part of the MessageComposer\n */\n\nvar MessageComposerInput = function (_React$Component) {\n (0, _inherits3.default)(MessageComposerInput, _React$Component);\n\n function MessageComposerInput(props, context) {\n (0, _classCallCheck3.default)(this, MessageComposerInput);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (MessageComposerInput.__proto__ || (0, _getPrototypeOf2.default)(MessageComposerInput)).call(this, props, context));\n\n _initialiseProps.call(_this);\n\n var isRichTextEnabled = _SettingsStore2.default.getValue('MessageComposerInput.isRichTextEnabled');\n\n _Analytics2.default.setRichtextMode(isRichTextEnabled);\n\n _this.client = _MatrixClientPeg2.default.get();\n\n // track whether we should be trying to show autocomplete suggestions on the current editor\n // contents. currently it's only suppressed when navigating history to avoid ugly flashes\n // of unexpected corrections as you navigate.\n // XXX: should this be in state?\n _this.suppressAutoComplete = false;\n\n // track whether we've just pressed an arrowkey left or right in order to skip void nodes.\n // see https://github.com/ianstormtaylor/slate/issues/762#issuecomment-304855095\n _this.direction = '';\n\n _this.plainWithMdPills = new _PlainWithPillsSerializer2.default({ pillFormat: 'md' });\n _this.plainWithIdPills = new _PlainWithPillsSerializer2.default({ pillFormat: 'id' });\n _this.plainWithPlainPills = new _PlainWithPillsSerializer2.default({ pillFormat: 'plain' });\n\n _this.md = new _slateMdSerializer2.default({\n rules: [{\n // if serialize returns undefined it falls through to the default hardcoded\n // serialization rules\n serialize: function serialize(obj, children) {\n if (obj.object !== 'inline') return;\n switch (obj.type) {\n case 'pill':\n return '[' + obj.data.get('completion') + '](' + obj.data.get('href') + ')';\n case 'emoji':\n return obj.data.get('emojiUnicode');\n }\n }\n }, {\n serialize: function serialize(obj, children) {\n if (obj.object !== 'mark') return;\n // XXX: slate-md-serializer consumes marks other than bold, italic, code, inserted, deleted\n switch (obj.type) {\n case 'underlined':\n return '<u>' + children + '</u>';\n case 'deleted':\n return '<del>' + children + '</del>';\n case 'code':\n // XXX: we only ever get given `code` regardless of whether it was inline or block\n // XXX: workaround for https://github.com/tommoor/slate-md-serializer/issues/14\n // strip single backslashes from children, as they would have been escaped here\n return '`' + children.split('\\\\').map(function (v) {\n return v ? v : '\\\\';\n }).join('') + '`';\n }\n }\n }]\n });\n\n _this.html = new _slateHtmlSerializer2.default({\n rules: [{\n deserialize: function deserialize(el, next) {\n var tag = el.tagName.toLowerCase();\n var type = BLOCK_TAGS[tag];\n if (type) {\n return {\n object: 'block',\n type: type,\n nodes: next(el.childNodes)\n };\n }\n type = MARK_TAGS[tag];\n if (type) {\n return {\n object: 'mark',\n type: type,\n nodes: next(el.childNodes)\n };\n }\n // special case links\n if (tag === 'a') {\n var href = el.getAttribute('href');\n var m = void 0;\n if (href) {\n m = href.match(_linkifyMatrix.MATRIXTO_URL_PATTERN);\n }\n if (m) {\n return {\n object: 'inline',\n type: 'pill',\n data: {\n href: href,\n completion: el.innerText,\n completionId: m[1]\n }\n };\n } else {\n return {\n object: 'inline',\n type: 'link',\n data: { href: href },\n nodes: next(el.childNodes)\n };\n }\n }\n },\n serialize: function serialize(obj, children) {\n if (obj.object === 'block') {\n return _this.renderNode({\n node: obj,\n children: children\n });\n } else if (obj.object === 'mark') {\n return _this.renderMark({\n mark: obj,\n children: children\n });\n } else if (obj.object === 'inline') {\n // special case links, pills and emoji otherwise we\n // end up with React components getting rendered out(!)\n switch (obj.type) {\n case 'pill':\n return _react2.default.createElement(\n 'a',\n { href: obj.data.get('href') },\n obj.data.get('completion')\n );\n case 'link':\n return _react2.default.createElement(\n 'a',\n { href: obj.data.get('href') },\n children\n );\n case 'emoji':\n // XXX: apparently you can't return plain strings from serializer rules\n // until https://github.com/ianstormtaylor/slate/pull/1854 is merged.\n // So instead we temporarily wrap emoji from RTE in an arbitrary tag\n // (<b/>). <span/> would be nicer, but in practice it causes CSS issues.\n return _react2.default.createElement(\n 'b',\n null,\n obj.data.get('emojiUnicode')\n );\n }\n return _this.renderNode({\n node: obj,\n children: children\n });\n }\n }\n }]\n });\n\n var savedState = _MessageComposerStore2.default.getEditorState(_this.props.room.roomId);\n _this.state = {\n // whether we're in rich text or markdown mode\n isRichTextEnabled: isRichTextEnabled,\n\n // the currently displayed editor state (note: this is always what is modified on input)\n editorState: _this.createEditorState(isRichTextEnabled, savedState ? savedState.editor_state : undefined, savedState ? savedState.rich_text : undefined),\n\n // the original editor state, before we started tabbing through completions\n originalEditorState: null,\n\n // the virtual state \"above\" the history stack, the message currently being composed that\n // we want to persist whilst browsing history\n currentlyComposedEditorState: null,\n\n // whether there were any completions\n someCompletions: null\n };\n return _this;\n }\n\n /*\n * \"Does the right thing\" to create an Editor value, based on:\n * - whether we've got rich text mode enabled\n * - contentState was passed in\n * - whether the contentState that was passed in was rich text\n */\n\n\n (0, _createClass3.default)(MessageComposerInput, [{\n key: 'createEditorState',\n value: function createEditorState(wantRichText, editorState, wasRichText) {\n if (editorState instanceof _slate.Value) {\n if (wantRichText && !wasRichText) {\n return this.mdToRichEditorState(editorState);\n }\n if (wasRichText && !wantRichText) {\n return this.richToMdEditorState(editorState);\n }\n return editorState;\n } else {\n // ...or create a new one. and explicitly focus it otherwise tab in-out issues\n var base = _slatePlainSerializer2.default.deserialize('', { defaultBlock: DEFAULT_NODE });\n return base.change().focus().value;\n }\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n this.historyManager = new _ComposerHistoryManager2.default(this.props.room.roomId, 'mx_slate_composer_history_');\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n }\n }, {\n key: 'onTypingActivity',\n value: function onTypingActivity() {\n this.isTyping = true;\n if (!this.userTypingTimer) {\n this.sendTyping(true);\n }\n this.startUserTypingTimer();\n this.startServerTypingTimer();\n }\n }, {\n key: 'onFinishedTyping',\n value: function onFinishedTyping() {\n this.isTyping = false;\n this.sendTyping(false);\n this.stopUserTypingTimer();\n this.stopServerTypingTimer();\n }\n }, {\n key: 'startUserTypingTimer',\n value: function startUserTypingTimer() {\n this.stopUserTypingTimer();\n var self = this;\n this.userTypingTimer = setTimeout(function () {\n self.isTyping = false;\n self.sendTyping(self.isTyping);\n self.userTypingTimer = null;\n }, TYPING_USER_TIMEOUT);\n }\n }, {\n key: 'stopUserTypingTimer',\n value: function stopUserTypingTimer() {\n if (this.userTypingTimer) {\n clearTimeout(this.userTypingTimer);\n this.userTypingTimer = null;\n }\n }\n }, {\n key: 'startServerTypingTimer',\n value: function startServerTypingTimer() {\n if (!this.serverTypingTimer) {\n var self = this;\n this.serverTypingTimer = setTimeout(function () {\n if (self.isTyping) {\n self.sendTyping(self.isTyping);\n self.startServerTypingTimer();\n }\n }, TYPING_SERVER_TIMEOUT / 2);\n }\n }\n }, {\n key: 'stopServerTypingTimer',\n value: function stopServerTypingTimer() {\n if (this.serverTypingTimer) {\n clearTimeout(this.serverTypingTimer);\n this.serverTypingTimer = null;\n }\n }\n }, {\n key: 'sendTyping',\n value: function sendTyping(isTyping) {\n if (_SettingsStore2.default.getValue('dontSendTypingNotifications')) return;\n _MatrixClientPeg2.default.get().sendTyping(this.props.room.roomId, this.isTyping, TYPING_SERVER_TIMEOUT).done();\n }\n }, {\n key: 'refreshTyping',\n value: function refreshTyping() {\n if (this.typingTimeout) {\n clearTimeout(this.typingTimeout);\n this.typingTimeout = null;\n }\n }\n }, {\n key: 'mdToRichEditorState',\n value: function mdToRichEditorState(editorState) {\n // for consistency when roundtripping, we could use slate-md-serializer rather than\n // commonmark, but then we would lose pills as the MD deserialiser doesn't know about\n // them and doesn't have any extensibility hooks.\n //\n // The code looks like this:\n //\n // const markdown = this.plainWithMdPills.serialize(editorState);\n //\n // // weirdly, the Md serializer can't deserialize '' to a valid Value...\n // if (markdown !== '') {\n // editorState = this.md.deserialize(markdown);\n // }\n // else {\n // editorState = Plain.deserialize('', { defaultBlock: DEFAULT_NODE });\n // }\n\n // so, instead, we use commonmark proper (which is arguably more logical to the user\n // anyway, as they'll expect the RTE view to match what they'll see in the timeline,\n // but the HTML->MD conversion is anyone's guess).\n\n var textWithMdPills = this.plainWithMdPills.serialize(editorState);\n var markdown = new _Markdown2.default(textWithMdPills);\n // HTML deserialize has custom rules to turn matrix.to links into pill objects.\n return this.html.deserialize(markdown.toHTML());\n }\n }, {\n key: 'richToMdEditorState',\n value: function richToMdEditorState(editorState) {\n // FIXME: this conversion loses pills (turning them into pure MD links).\n // We need to add a pill-aware deserialize method\n // to PlainWithPillsSerializer which recognises pills in raw MD and turns them into pills.\n return _slatePlainSerializer2.default.deserialize(\n // FIXME: we compile the MD out of the RTE state using slate-md-serializer\n // which doesn't roundtrip symmetrically with commonmark, which we use for\n // compiling MD out of the MD editor state above.\n this.md.serialize(editorState), { defaultBlock: DEFAULT_NODE });\n }\n }, {\n key: 'enableRichtext',\n value: function enableRichtext(enabled) {\n var _this2 = this;\n\n if (enabled === this.state.isRichTextEnabled) return;\n\n var editorState = null;\n if (enabled) {\n editorState = this.mdToRichEditorState(this.state.editorState);\n } else {\n editorState = this.richToMdEditorState(this.state.editorState);\n }\n\n _Analytics2.default.setRichtextMode(enabled);\n\n this.setState({\n editorState: this.createEditorState(enabled, editorState),\n isRichTextEnabled: enabled\n }, function () {\n _this2._editor.focus();\n });\n\n _SettingsStore2.default.setValue(\"MessageComposerInput.isRichTextEnabled\", null, _SettingsStore.SettingLevel.ACCOUNT, enabled);\n }\n\n /**\n * Check if the current selection has a mark with `type` in it.\n *\n * @param {String} type\n * @return {Boolean}\n */\n\n /**\n * Check if the any of the currently selected blocks are of `type`.\n *\n * @param {String} type\n * @return {Boolean}\n */\n\n /* If passed null, restores the original editor content from state.originalEditorState.\n * If passed a non-null displayedCompletion, modifies state.originalEditorState to compute new state.editorState.\n */\n\n }, {\n key: 'getAutocompleteQuery',\n value: function getAutocompleteQuery(editorState) {\n // We can just return the current block where the selection begins, which\n // should be enough to capture any autocompletion input, given autocompletion\n // providers only search for the first match which intersects with the current selection.\n // This avoids us having to serialize the whole thing to plaintext and convert\n // selection offsets in & out of the plaintext domain.\n\n if (editorState.selection.anchor.key) {\n return editorState.document.getDescendant(editorState.selection.anchor.key).text;\n } else {\n return '';\n }\n }\n }, {\n key: 'getSelectionRange',\n value: function getSelectionRange(editorState) {\n var beginning = false;\n var query = this.getAutocompleteQuery(editorState);\n var firstChild = editorState.document.nodes.get(0);\n var firstGrandChild = firstChild && firstChild.nodes.get(0);\n beginning = firstChild && firstGrandChild && firstChild.object === 'block' && firstGrandChild.object === 'text' && editorState.selection.anchor.key === firstGrandChild.key;\n\n // return a character range suitable for handing to an autocomplete provider.\n // the range is relative to the anchor of the current editor selection.\n // if the selection spans multiple blocks, then we collapse it for the calculation.\n var range = {\n beginning: beginning, // whether the selection is in the first block of the editor or not\n start: editorState.selection.anchor.offset,\n end: editorState.selection.anchor.key == editorState.selection.focus.key ? editorState.selection.focus.offset : editorState.selection.anchor.offset\n };\n if (range.start > range.end) {\n var tmp = range.start;\n range.start = range.end;\n range.end = tmp;\n }\n return range;\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var activeEditorState = this.state.originalEditorState || this.state.editorState;\n\n var className = (0, _classnames2.default)('mx_MessageComposer_input', {\n mx_MessageComposer_input_error: this.state.someCompletions === false\n });\n\n var isEmpty = _slatePlainSerializer2.default.serialize(this.state.editorState) === '';\n\n var placeholder = this.props.placeholder;\n // XXX: workaround for placeholder being shown when there is a formatting block e.g blockquote but no text\n\n if (isEmpty && this.state.editorState.startBlock && this.state.editorState.startBlock.type !== DEFAULT_NODE) {\n placeholder = undefined;\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_input_wrapper', onClick: this.focusComposer },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_autocomplete_wrapper' },\n _react2.default.createElement(_ReplyPreview2.default, null),\n _react2.default.createElement(_Autocomplete2.default, {\n ref: function ref(e) {\n return _this3.autocomplete = e;\n },\n room: this.props.room,\n onConfirm: this.onAutocompleteConfirm,\n onSelectionChange: this.setDisplayedCompletion,\n query: this.suppressAutoComplete ? '' : this.getAutocompleteQuery(activeEditorState),\n selection: this.getSelectionRange(activeEditorState)\n })\n ),\n _react2.default.createElement(\n 'div',\n { className: className },\n _react2.default.createElement('img', { className: 'mx_MessageComposer_input_markdownIndicator mx_filterFlipColor',\n onMouseDown: this.onMarkdownToggleClicked,\n title: this.state.isRichTextEnabled ? (0, _languageHandler._t)(\"Markdown is disabled\") : (0, _languageHandler._t)(\"Markdown is enabled\"),\n src: 'img/button-md-' + !this.state.isRichTextEnabled + '.png' }),\n _react2.default.createElement(_slateReact.Editor, { ref: this._collectEditor,\n dir: 'auto',\n className: 'mx_MessageComposer_editor',\n placeholder: placeholder,\n value: this.state.editorState,\n onChange: this.onChange,\n onKeyDown: this.onKeyDown,\n onPaste: this.onPaste,\n renderNode: this.renderNode,\n renderMark: this.renderMark\n // disable spell check for the placeholder because browsers don't like \"unencrypted\"\n , spellCheck: !isEmpty,\n schema: SLATE_SCHEMA\n })\n )\n );\n }\n }]);\n return MessageComposerInput;\n}(_react2.default.Component);\n\nMessageComposerInput.propTypes = {\n // a callback which is called when the height of the composer is\n // changed due to a change in content.\n onResize: _propTypes2.default.func,\n\n // js-sdk Room object\n room: _propTypes2.default.object.isRequired,\n\n onFilesPasted: _propTypes2.default.func,\n\n onInputStateChanged: _propTypes2.default.func\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this4 = this;\n\n this._collectEditor = function (e) {\n _this4._editor = e;\n };\n\n this.onAction = function (payload) {\n var editor = _this4._editor;\n var editorState = _this4.state.editorState;\n\n switch (payload.action) {\n case 'reply_to_event':\n case 'focus_composer':\n _this4.focusComposer();\n break;\n case 'insert_mention':\n {\n // Pretend that we've autocompleted this user because keeping two code\n // paths for inserting a user pill is not fun\n var selection = _this4.getSelectionRange(_this4.state.editorState);\n var member = _this4.props.room.getMember(payload.user_id);\n var completion = member ? member.rawDisplayName : payload.user_id;\n _this4.setDisplayedCompletion({\n completion: completion,\n completionId: payload.user_id,\n selection: selection,\n href: (0, _matrixTo.makeUserPermalink)(payload.user_id),\n suffix: selection.beginning && selection.start === 0 ? ': ' : ' '\n });\n }\n break;\n case 'quote':\n {\n var html = HtmlUtils.bodyToHtml(payload.event.getContent(), null, {\n forComposerQuote: true,\n returnString: true,\n emojiOne: false\n });\n var fragment = _this4.html.deserialize(html);\n // FIXME: do we want to put in a permalink to the original quote here?\n // If so, what should be the format, and how do we differentiate it from replies?\n\n var quote = _slate.Block.create('block-quote');\n if (_this4.state.isRichTextEnabled) {\n var change = editorState.change();\n var anchorText = editorState.anchorText;\n if ((!anchorText || anchorText.text === '') && editorState.anchorBlock.nodes.size === 1) {\n // replace the current block rather than split the block\n // XXX: this destroys our focus by deleting the thing we are anchored/focused on\n change = change.replaceNodeByKey(editorState.anchorBlock.key, quote);\n } else {\n // insert it into the middle of the block (splitting it)\n change = change.insertBlock(quote);\n }\n\n // XXX: heuristic to strip out wrapping <p> which breaks quoting in RT mode\n if (fragment.document.nodes.size && fragment.document.nodes.get(0).type === DEFAULT_NODE) {\n change = change.insertFragmentByKey(quote.key, 0, fragment.document.nodes.get(0));\n } else {\n change = change.insertFragmentByKey(quote.key, 0, fragment.document);\n }\n\n // XXX: this is to bring back the focus in a sane place and add a paragraph after it\n change = change.select(_slate.Range.create({\n anchor: {\n key: quote.key\n },\n focus: {\n key: quote.key\n }\n })).moveToEndOfBlock().insertBlock(_slate.Block.create(DEFAULT_NODE)).focus();\n\n _this4.onChange(change);\n } else {\n var fragmentChange = fragment.change();\n fragmentChange.moveToRangeOfNode(fragment.document).wrapBlock(quote);\n\n // FIXME: handle pills and use commonmark rather than md-serialize\n var md = _this4.md.serialize(fragmentChange.value);\n var _change = editorState.change().insertText(md + '\\n\\n').focus();\n _this4.onChange(_change);\n }\n }\n break;\n }\n };\n\n this.onChange = function (change, originalEditorState) {\n var editorState = change.value;\n\n if (_this4.direction !== '') {\n var focusedNode = editorState.focusInline || editorState.focusText;\n if (editorState.schema.isVoid(focusedNode)) {\n // XXX: does this work in RTL?\n var edge = _this4.direction === 'Previous' ? 'End' : 'Start';\n if (editorState.selection.isCollapsed) {\n change = change['moveTo' + edge + 'Of' + _this4.direction + 'Text']();\n } else {\n var block = _this4.direction === 'Previous' ? editorState.previousText : editorState.nextText;\n if (block) {\n change = change['moveFocusTo' + edge + 'OfNode'](block);\n }\n }\n editorState = change.value;\n }\n }\n\n // when in autocomplete mode and selection changes hide the autocomplete.\n // Selection changes when we enter text so use a heuristic to compare documents without doing it recursively\n if (_this4.autocomplete.state.completionList.length > 0 && !_this4.autocomplete.state.hide && !rangeEquals(_this4.state.editorState.selection, editorState.selection) &&\n // XXX: the heuristic failed when inlines like pills weren't taken into account. This is inideal\n _this4.state.editorState.document.toJSON() === editorState.document.toJSON()) {\n _this4.autocomplete.hide();\n }\n\n if (_slatePlainSerializer2.default.serialize(editorState) !== '') {\n _this4.onTypingActivity();\n } else {\n _this4.onFinishedTyping();\n }\n\n if (editorState.startText !== null) {\n var text = editorState.startText.text;\n var currentStartOffset = editorState.selection.start.offset;\n\n // Automatic replacement of plaintext emoji to Unicode emoji\n if (_SettingsStore2.default.getValue('MessageComposerInput.autoReplaceEmoji')) {\n // The first matched group includes just the matched plaintext emoji\n var emojiMatch = REGEX_EMOJI_WHITESPACE.exec(text.slice(0, currentStartOffset));\n if (emojiMatch) {\n // plaintext -> hex unicode\n var emojiUc = _emojione.asciiList[emojiMatch[1]];\n // hex unicode -> shortname -> actual unicode\n var unicodeEmoji = (0, _emojione.shortnameToUnicode)(EMOJI_UNICODE_TO_SHORTNAME[emojiUc]);\n\n var range = _slate.Range.create({\n anchor: {\n key: editorState.startText.key,\n offset: currentStartOffset - emojiMatch[1].length - 1\n },\n focus: {\n key: editorState.startText.key,\n offset: currentStartOffset - 1\n }\n });\n change = change.insertTextAtRange(range, unicodeEmoji);\n editorState = change.value;\n }\n }\n }\n\n // emojioneify any emoji\n var foundEmoji = void 0;\n do {\n foundEmoji = false;\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(editorState.document.getTexts()), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var node = _step.value;\n\n if (node.text !== '' && HtmlUtils.containsEmoji(node.text)) {\n var match = void 0;\n EMOJI_REGEX.lastIndex = 0;\n while ((match = EMOJI_REGEX.exec(node.text)) !== null) {\n var _range = _slate.Range.create({\n anchor: {\n key: node.key,\n offset: match.index\n },\n focus: {\n key: node.key,\n offset: match.index + match[0].length\n }\n });\n var inline = _slate.Inline.create({\n type: 'emoji',\n data: { emojiUnicode: match[0] }\n });\n change = change.insertInlineAtRange(_range, inline);\n editorState = change.value;\n\n // if we replaced an emoji, start again looking for more\n // emoji in the new editor state since doing the replacement\n // will change the node structure & offsets so we can't compute\n // insertion ranges from node.key / match.index anymore.\n foundEmoji = true;\n break;\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n } while (foundEmoji);\n\n // work around weird bug where inserting emoji via the macOS\n // emoji picker can leave the selection stuck in the emoji's\n // child text. This seems to happen due to selection getting\n // moved in the normalisation phase after calculating these changes\n if (editorState.selection.anchor.key && editorState.document.getParent(editorState.selection.anchor.key).type === 'emoji') {\n change = change.moveToStartOfNextText();\n editorState = change.value;\n }\n\n if (_this4.props.onInputStateChanged && editorState.blocks.size > 0) {\n var blockType = editorState.blocks.first().type;\n // console.log(\"onInputStateChanged; current block type is \" + blockType + \" and marks are \" + editorState.activeMarks);\n\n if (blockType === 'list-item') {\n var parent = editorState.document.getParent(editorState.blocks.first().key);\n if (parent.type === 'numbered-list') {\n blockType = 'numbered-list';\n } else if (parent.type === 'bulleted-list') {\n blockType = 'bulleted-list';\n }\n }\n var inputState = {\n marks: editorState.activeMarks,\n isRichTextEnabled: _this4.state.isRichTextEnabled,\n blockType: blockType\n };\n _this4.props.onInputStateChanged(inputState);\n }\n\n // Record the editor state for this room so that it can be retrieved after switching to another room and back\n _MessageComposerStore2.default.setEditorState(_this4.props.room.roomId, editorState, _this4.state.isRichTextEnabled);\n\n _this4.setState({\n editorState: editorState,\n originalEditorState: originalEditorState || null\n });\n };\n\n this.hasMark = function (type) {\n var editorState = _this4.state.editorState;\n\n return editorState.activeMarks.some(function (mark) {\n return mark.type === type;\n });\n };\n\n this.hasBlock = function (type) {\n var editorState = _this4.state.editorState;\n\n return editorState.blocks.some(function (node) {\n return node.type === type;\n });\n };\n\n this.onKeyDown = function (ev, change, editor) {\n _this4.suppressAutoComplete = false;\n\n // skip void nodes - see\n // https://github.com/ianstormtaylor/slate/issues/762#issuecomment-304855095\n if (ev.keyCode === _Keyboard.KeyCode.LEFT) {\n _this4.direction = 'Previous';\n } else if (ev.keyCode === _Keyboard.KeyCode.RIGHT) {\n _this4.direction = 'Next';\n } else {\n _this4.direction = '';\n }\n\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.ENTER:\n return _this4.handleReturn(ev, change);\n case _Keyboard.KeyCode.BACKSPACE:\n return _this4.onBackspace(ev, change);\n case _Keyboard.KeyCode.UP:\n return _this4.onVerticalArrow(ev, true);\n case _Keyboard.KeyCode.DOWN:\n return _this4.onVerticalArrow(ev, false);\n case _Keyboard.KeyCode.TAB:\n return _this4.onTab(ev);\n case _Keyboard.KeyCode.ESCAPE:\n return _this4.onEscape(ev);\n case _Keyboard.KeyCode.SPACE:\n return _this4.onSpace(ev, change);\n }\n\n if ((0, _Keyboard.isOnlyCtrlOrCmdKeyEvent)(ev)) {\n var _KeyCode$KEY_M$KeyCod;\n\n var ctrlCmdCommand = (_KeyCode$KEY_M$KeyCod = {}, (0, _defineProperty3.default)(_KeyCode$KEY_M$KeyCod, _Keyboard.KeyCode.KEY_M, 'toggle-mode'), (0, _defineProperty3.default)(_KeyCode$KEY_M$KeyCod, _Keyboard.KeyCode.KEY_B, 'bold'), (0, _defineProperty3.default)(_KeyCode$KEY_M$KeyCod, _Keyboard.KeyCode.KEY_I, 'italic'), (0, _defineProperty3.default)(_KeyCode$KEY_M$KeyCod, _Keyboard.KeyCode.KEY_U, 'underlined'), (0, _defineProperty3.default)(_KeyCode$KEY_M$KeyCod, _Keyboard.KeyCode.KEY_J, 'inline-code'), _KeyCode$KEY_M$KeyCod)[ev.keyCode];\n\n if (ctrlCmdCommand) {\n ev.preventDefault(); // to prevent clashing with Mac's minimize window\n return _this4.handleKeyCommand(ctrlCmdCommand);\n }\n }\n };\n\n this.onSpace = function (ev, change) {\n if (ev.metaKey || ev.altKey || ev.shiftKey || ev.ctrlKey) {\n return;\n }\n\n // drop a point in history so the user can undo a word\n // XXX: this seems nasty but adding to history manually seems a no-go\n ev.preventDefault();\n return change.withoutMerging(function () {\n change.insertText(ev.key);\n });\n };\n\n this.onBackspace = function (ev, change) {\n if (ev.metaKey || ev.altKey || ev.shiftKey) {\n return;\n }\n\n var editorState = _this4.state.editorState;\n\n // Allow Ctrl/Cmd-Backspace when focus starts at the start of the composer (e.g select-all)\n // for some reason if slate sees you Ctrl-backspace and your anchor.offset=0 it just resets your focus\n // XXX: Doing this now seems to put slate into a broken state, and it didn't appear to be doing\n // what it claims to do on the old version of slate anyway...\n /*if (!editorState.isCollapsed && editorState.selection.anchor.offset === 0) {\n return change.delete();\n }*/\n\n if (_this4.state.isRichTextEnabled) {\n // let backspace exit lists\n var isList = _this4.hasBlock('list-item');\n\n if (isList && editorState.selection.anchor.offset == 0) {\n change.setBlocks(DEFAULT_NODE).unwrapBlock('bulleted-list').unwrapBlock('numbered-list');\n return change;\n } else if (editorState.selection.anchor.offset == 0 && editorState.isCollapsed) {\n // turn blocks back into paragraphs\n if (_this4.hasBlock('block-quote') || _this4.hasBlock('heading1') || _this4.hasBlock('heading2') || _this4.hasBlock('heading3') || _this4.hasBlock('heading4') || _this4.hasBlock('heading5') || _this4.hasBlock('heading6') || _this4.hasBlock('code')) {\n return change.setBlocks(DEFAULT_NODE);\n }\n\n // remove paragraphs entirely if they're nested\n var parent = editorState.document.getParent(editorState.anchorBlock.key);\n if (editorState.selection.anchor.offset == 0 && _this4.hasBlock('paragraph') && parent.nodes.size == 1 && parent.object !== 'document') {\n return change.replaceNodeByKey(editorState.anchorBlock.key, editorState.anchorText).moveToEndOfNode(parent).focus();\n }\n }\n }\n return;\n };\n\n this.handleKeyCommand = function (command) {\n if (command === 'toggle-mode') {\n _this4.enableRichtext(!_this4.state.isRichTextEnabled);\n return true;\n }\n\n var newState = null;\n\n // Draft handles rich text mode commands by default but we need to do it ourselves for Markdown.\n if (_this4.state.isRichTextEnabled) {\n var type = command;\n var editorState = _this4.state.editorState;\n\n var change = editorState.change();\n var _document = editorState.document;\n\n switch (type) {\n // list-blocks:\n case 'bulleted-list':\n case 'numbered-list':\n {\n // Handle the extra wrapping required for list buttons.\n var isList = _this4.hasBlock('list-item');\n var isType = editorState.blocks.some(function (block) {\n return !!_document.getClosest(block.key, function (parent) {\n return parent.type === type;\n });\n });\n\n if (isList && isType) {\n change.setBlocks(DEFAULT_NODE).unwrapBlock('bulleted-list').unwrapBlock('numbered-list');\n } else if (isList) {\n change.unwrapBlock(type === 'bulleted-list' ? 'numbered-list' : 'bulleted-list').wrapBlock(type);\n } else {\n change.setBlocks('list-item').wrapBlock(type);\n }\n }\n break;\n\n // simple blocks\n case 'paragraph':\n case 'block-quote':\n case 'heading1':\n case 'heading2':\n case 'heading3':\n case 'heading4':\n case 'heading5':\n case 'heading6':\n case 'list-item':\n case 'code':\n {\n var isActive = _this4.hasBlock(type);\n var _isList = _this4.hasBlock('list-item');\n\n if (_isList) {\n change.setBlocks(isActive ? DEFAULT_NODE : type).unwrapBlock('bulleted-list').unwrapBlock('numbered-list');\n } else {\n change.setBlocks(isActive ? DEFAULT_NODE : type);\n }\n }\n break;\n\n // marks:\n case 'bold':\n case 'italic':\n case 'inline-code':\n case 'underlined':\n case 'deleted':\n {\n change.toggleMark(type === 'inline-code' ? 'code' : type);\n }\n break;\n\n default:\n console.warn('ignoring unrecognised RTE command ' + type);\n return false;\n }\n\n _this4.onChange(change);\n\n return true;\n } else {\n /*\n const contentState = this.state.editorState.getCurrentContent();\n const multipleLinesSelected = RichText.hasMultiLineSelection(this.state.editorState);\n \n const selectionState = this.state.editorState.getSelection();\n const start = selectionState.getStartOffset();\n const end = selectionState.getEndOffset();\n \n // If multiple lines are selected or nothing is selected, insert a code block\n // instead of applying inline code formatting. This is an attempt to mimic what\n // happens in non-MD mode.\n const treatInlineCodeAsBlock = multipleLinesSelected || start === end;\n const textMdCodeBlock = (text) => `\\`\\`\\`\\n${text}\\n\\`\\`\\`\\n`;\n const modifyFn = {\n 'bold': (text) => `**${text}**`,\n 'italic': (text) => `*${text}*`,\n 'underline': (text) => `<u>${text}</u>`,\n 'strike': (text) => `<del>${text}</del>`,\n // (\"code\" is triggered by ctrl+j by draft-js by default)\n 'code': (text) => treatInlineCodeAsBlock ? textMdCodeBlock(text) : `\\`${text}\\``,\n 'code': textMdCodeBlock,\n 'blockquote': (text) => text.split('\\n').map((line) => `> ${line}\\n`).join('') + '\\n',\n 'unordered-list-item': (text) => text.split('\\n').map((line) => `\\n- ${line}`).join(''),\n 'ordered-list-item': (text) => text.split('\\n').map((line, i) => `\\n${i + 1}. ${line}`).join(''),\n }[command];\n \n const selectionAfterOffset = {\n 'bold': -2,\n 'italic': -1,\n 'underline': -4,\n 'strike': -6,\n 'code': treatInlineCodeAsBlock ? -5 : -1,\n 'code': -5,\n 'blockquote': -2,\n }[command];\n \n // Returns a function that collapses a selection to its end and moves it by offset\n const collapseAndOffsetSelection = (selection, offset) => {\n const key = selection.endKey();\n return new Range({\n anchorKey: key, anchor.offset: offset,\n focus.key: key, focus.offset: offset,\n });\n };\n \n if (modifyFn) {\n \n const previousSelection = this.state.editorState.getSelection();\n const newContentState = RichText.modifyText(contentState, previousSelection, modifyFn);\n newState = EditorState.push(\n this.state.editorState,\n newContentState,\n 'insert-characters',\n );\n \n let newSelection = newContentState.getSelectionAfter();\n // If the selection range is 0, move the cursor inside the formatted body\n if (previousSelection.getStartOffset() === previousSelection.getEndOffset() &&\n previousSelection.getStartKey() === previousSelection.getEndKey() &&\n selectionAfterOffset !== undefined\n ) {\n const selectedBlock = newContentState.getBlockForKey(previousSelection.getAnchorKey());\n const blockLength = selectedBlock.getText().length;\n const newOffset = blockLength + selectionAfterOffset;\n newSelection = collapseAndOffsetSelection(newSelection, newOffset);\n }\n \n newState = EditorState.forceSelection(newState, newSelection);\n }\n }\n \n if (newState != null) {\n this.setState({editorState: newState});\n return true;\n }\n */\n }\n return false;\n };\n\n this.onPaste = function (event, change, editor) {\n var transfer = (0, _slateReact.getEventTransfer)(event);\n\n switch (transfer.type) {\n case 'files':\n return _this4.props.onFilesPasted(transfer.files);\n case 'html':\n {\n if (_this4.state.isRichTextEnabled) {\n // FIXME: https://github.com/ianstormtaylor/slate/issues/1497 means\n // that we will silently discard nested blocks (e.g. nested lists) :(\n var fragment = _this4.html.deserialize(transfer.html);\n return change\n // XXX: this somehow makes Slate barf on undo and get too empty and break entirely\n // .setOperationFlag(\"skip\", false)\n // .setOperationFlag(\"merge\", false)\n .insertFragment(fragment.document);\n } else {\n // in MD mode we don't want the rich content pasted as the magic was annoying people so paste plain\n return change.withoutMerging(function () {\n change.insertText(transfer.text);\n });\n }\n }\n case 'text':\n // don't skip/merge so that multiple consecutive pastes can be undone individually\n return change.withoutMerging(function () {\n change.insertText(transfer.text);\n });\n }\n };\n\n this.handleReturn = function (ev, change) {\n if (ev.shiftKey) {\n return change.insertText('\\n');\n }\n\n var editorState = _this4.state.editorState;\n\n var lastBlock = editorState.blocks.last();\n if (['code', 'block-quote', 'list-item'].includes(lastBlock.type)) {\n var text = lastBlock.text;\n if (text === '') {\n // allow the user to cancel empty block by hitting return, useful in conjunction with below `inBlock`\n return change.setBlocks(DEFAULT_NODE).unwrapBlock('bulleted-list').unwrapBlock('numbered-list');\n }\n\n // TODO strip trailing lines from blockquotes/list entries\n // the below code seemingly works but doesn't account for edge cases like return with caret not at end\n /* const trailingNewlines = text.match(/\\n*$/);\n if (trailingNewlines && trailingNewlines[0]) {\n remove trailing newlines at the end of this block before making a new one\n return change.deleteBackward(trailingNewlines[0].length);\n }*/\n\n return;\n }\n\n var contentText = void 0;\n var contentHTML = void 0;\n\n // only look for commands if the first block contains simple unformatted text\n // i.e. no pills or rich-text formatting and begins with a /.\n var cmd = void 0;var commandText = void 0;\n var firstChild = editorState.document.nodes.get(0);\n var firstGrandChild = firstChild && firstChild.nodes.get(0);\n if (firstChild && firstGrandChild && firstChild.object === 'block' && firstGrandChild.object === 'text' && firstGrandChild.text[0] === '/') {\n commandText = _this4.plainWithIdPills.serialize(editorState);\n cmd = (0, _SlashCommands.processCommandInput)(_this4.props.room.roomId, commandText);\n }\n\n if (cmd) {\n if (!cmd.error) {\n _this4.historyManager.save(editorState, _this4.state.isRichTextEnabled ? 'rich' : 'markdown');\n _this4.setState({\n editorState: _this4.createEditorState()\n }, function () {\n _this4._editor.focus();\n });\n }\n if (cmd.promise) {\n cmd.promise.then(function () {\n console.log(\"Command success.\");\n }, function (err) {\n console.error(\"Command failure: %s\", err);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Server error', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Server error\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Server unavailable, overloaded, or something else went wrong.\")\n });\n });\n } else if (cmd.error) {\n console.error(cmd.error);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n // TODO possibly track which command they ran (not its Arguments) here\n _Modal2.default.createTrackedDialog('Command error', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Command error\"),\n description: cmd.error\n });\n }\n return true;\n }\n\n var replyingToEv = _RoomViewStore2.default.getQuotingEvent();\n var mustSendHTML = Boolean(replyingToEv);\n\n if (_this4.state.isRichTextEnabled) {\n // We should only send HTML if any block is styled or contains inline style\n var shouldSendHTML = false;\n\n if (mustSendHTML) shouldSendHTML = true;\n\n if (!shouldSendHTML) {\n shouldSendHTML = !!editorState.document.findDescendant(function (node) {\n // N.B. node.getMarks() might be private?\n return node.object === 'block' && node.type !== 'paragraph' || node.object === 'inline' || node.object === 'text' && node.getMarks().size > 0;\n });\n }\n\n contentText = _this4.plainWithPlainPills.serialize(editorState);\n if (contentText === '') return true;\n\n if (shouldSendHTML) {\n contentHTML = HtmlUtils.processHtmlForSending(_this4.html.serialize(editorState));\n }\n } else {\n var sourceWithPills = _this4.plainWithMdPills.serialize(editorState);\n if (sourceWithPills === '') return true;\n\n var mdWithPills = new _Markdown2.default(sourceWithPills);\n\n // if contains no HTML and we're not quoting (needing HTML)\n if (mdWithPills.isPlainText() && !mustSendHTML) {\n // N.B. toPlainText is only usable here because we know that the MD\n // didn't contain any formatting in the first place...\n contentText = mdWithPills.toPlaintext();\n } else {\n // to avoid ugliness on clients which ignore the HTML body we don't\n // send pills in the plaintext body.\n contentText = _this4.plainWithPlainPills.serialize(editorState);\n contentHTML = mdWithPills.toHTML();\n }\n }\n\n var sendHtmlFn = _matrixJsSdk.ContentHelpers.makeHtmlMessage;\n var sendTextFn = _matrixJsSdk.ContentHelpers.makeTextMessage;\n\n _this4.historyManager.save(editorState, _this4.state.isRichTextEnabled ? 'rich' : 'markdown');\n\n if (commandText && commandText.startsWith('/me')) {\n if (replyingToEv) {\n var _ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Emote Reply Fail', '', _ErrorDialog, {\n title: (0, _languageHandler._t)(\"Unable to reply\"),\n description: (0, _languageHandler._t)(\"At this time it is not possible to reply with an emote.\")\n });\n return false;\n }\n\n contentText = contentText.substring(4);\n // bit of a hack, but the alternative would be quite complicated\n if (contentHTML) contentHTML = contentHTML.replace(/\\/me ?/, '');\n sendHtmlFn = _matrixJsSdk.ContentHelpers.makeHtmlEmote;\n sendTextFn = _matrixJsSdk.ContentHelpers.makeEmoteMessage;\n }\n\n var content = contentHTML ? sendHtmlFn(contentText, contentHTML) : sendTextFn(contentText);\n\n if (replyingToEv) {\n var replyContent = _ReplyThread2.default.makeReplyMixIn(replyingToEv);\n content = (0, _assign2.default)(replyContent, content);\n\n // Part of Replies fallback support - prepend the text we're sending\n // with the text we're replying to\n var nestedReply = _ReplyThread2.default.getNestedReplyText(replyingToEv);\n if (nestedReply) {\n if (content.formatted_body) {\n content.formatted_body = nestedReply.html + content.formatted_body;\n }\n content.body = nestedReply.body + content.body;\n }\n\n // Clear reply_to_event as we put the message into the queue\n // if the send fails, retry will handle resending.\n _dispatcher2.default.dispatch({\n action: 'reply_to_event',\n event: null\n });\n }\n\n _this4.client.sendMessage(_this4.props.room.roomId, content).then(function (res) {\n _dispatcher2.default.dispatch({\n action: 'message_sent'\n });\n }).catch(function (e) {\n onSendMessageFailed(e, _this4.props.room);\n });\n\n _this4.setState({\n editorState: _this4.createEditorState()\n }, function () {\n _this4._editor.focus();\n });\n\n return true;\n };\n\n this.onVerticalArrow = function (e, up) {\n if (e.ctrlKey || e.shiftKey || e.altKey || e.metaKey) {\n return;\n }\n\n // Select history only if we are not currently auto-completing\n if (_this4.autocomplete.state.completionList.length === 0) {\n var selection = _this4.state.editorState.selection;\n\n // selection must be collapsed\n if (!selection.isCollapsed) return;\n var _document2 = _this4.state.editorState.document;\n\n // and we must be at the edge of the document (up=start, down=end)\n if (up) {\n if (!selection.anchor.isAtStartOfNode(_document2)) return;\n } else {\n if (!selection.anchor.isAtEndOfNode(_document2)) return;\n }\n\n var selected = _this4.selectHistory(up);\n if (selected) {\n // We're selecting history, so prevent the key event from doing anything else\n e.preventDefault();\n }\n } else {\n _this4.moveAutocompleteSelection(up);\n e.preventDefault();\n }\n };\n\n this.selectHistory = function () {\n var _ref = (0, _bluebird.method)(function (up) {\n var delta = up ? -1 : 1;\n\n // True if we are not currently selecting history, but composing a message\n if (_this4.historyManager.currentIndex === _this4.historyManager.history.length) {\n // We can't go any further - there isn't any more history, so nop.\n if (!up) {\n return;\n }\n _this4.setState({\n currentlyComposedEditorState: _this4.state.editorState\n });\n } else if (_this4.historyManager.currentIndex + delta === _this4.historyManager.history.length) {\n // True when we return to the message being composed currently\n _this4.setState({\n editorState: _this4.state.currentlyComposedEditorState\n });\n _this4.historyManager.currentIndex = _this4.historyManager.history.length;\n return;\n }\n\n var editorState = void 0;\n var historyItem = _this4.historyManager.getItem(delta);\n if (!historyItem) return;\n\n if (historyItem.format === 'rich' && !_this4.state.isRichTextEnabled) {\n editorState = _this4.richToMdEditorState(historyItem.value);\n } else if (historyItem.format === 'markdown' && _this4.state.isRichTextEnabled) {\n editorState = _this4.mdToRichEditorState(historyItem.value);\n } else {\n editorState = historyItem.value;\n }\n\n // Move selection to the end of the selected history\n var change = editorState.change().moveToEndOfNode(editorState.document);\n\n // We don't call this.onChange(change) now, as fixups on stuff like emoji\n // should already have been done and persisted in the history.\n editorState = change.value;\n\n _this4.suppressAutoComplete = true;\n\n _this4.setState({ editorState: editorState }, function () {\n _this4._editor.focus();\n });\n return true;\n });\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.onTab = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(e) {\n var completionCount;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this4.setState({\n someCompletions: null\n });\n e.preventDefault();\n\n if (!(_this4.autocomplete.state.completionList.length === 0)) {\n _context.next = 11;\n break;\n }\n\n _context.next = 5;\n return (0, _bluebird.resolve)(_this4.autocomplete.forceComplete());\n\n case 5:\n completionCount = _context.sent;\n\n _this4.setState({\n someCompletions: completionCount > 0\n });\n // Select the first item by moving \"down\"\n _context.next = 9;\n return (0, _bluebird.resolve)(_this4.moveAutocompleteSelection(false));\n\n case 9:\n _context.next = 13;\n break;\n\n case 11:\n _context.next = 13;\n return (0, _bluebird.resolve)(_this4.moveAutocompleteSelection(e.shiftKey));\n\n case 13:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this4);\n }));\n\n return function (_x2) {\n return _ref2.apply(this, arguments);\n };\n }();\n\n this.moveAutocompleteSelection = function (up) {\n up ? _this4.autocomplete.onUpArrow() : _this4.autocomplete.onDownArrow();\n };\n\n this.onEscape = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(e) {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n e.preventDefault();\n if (_this4.autocomplete) {\n _this4.autocomplete.onEscape(e);\n }\n _context2.next = 4;\n return (0, _bluebird.resolve)(_this4.setDisplayedCompletion(null));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, _this4);\n }));\n\n return function (_x3) {\n return _ref3.apply(this, arguments);\n };\n }();\n\n this.onAutocompleteConfirm = function (displayedCompletion) {\n _this4.focusComposer();\n // XXX: this fails if the composer isn't focused so focus it and delay the completion until next tick\n (0, _setImmediate3.default)(function () {\n _this4.setDisplayedCompletion(displayedCompletion);\n });\n };\n\n this.setDisplayedCompletion = function () {\n var _ref4 = (0, _bluebird.method)(function (displayedCompletion) {\n var activeEditorState = _this4.state.originalEditorState || _this4.state.editorState;\n\n if (displayedCompletion == null) {\n if (_this4.state.originalEditorState) {\n var _editorState = _this4.state.originalEditorState;\n _this4.setState({ editorState: _editorState });\n }\n return false;\n }\n\n var _displayedCompletion$ = displayedCompletion.range,\n range = _displayedCompletion$ === undefined ? null : _displayedCompletion$,\n _displayedCompletion$2 = displayedCompletion.completion,\n completion = _displayedCompletion$2 === undefined ? '' : _displayedCompletion$2,\n _displayedCompletion$3 = displayedCompletion.completionId,\n completionId = _displayedCompletion$3 === undefined ? '' : _displayedCompletion$3,\n _displayedCompletion$4 = displayedCompletion.href,\n href = _displayedCompletion$4 === undefined ? null : _displayedCompletion$4,\n _displayedCompletion$5 = displayedCompletion.suffix,\n suffix = _displayedCompletion$5 === undefined ? '' : _displayedCompletion$5;\n\n\n var inline = void 0;\n if (href) {\n inline = _slate.Inline.create({\n type: 'pill',\n data: { completion: completion, completionId: completionId, href: href }\n });\n } else if (completion === '@room') {\n inline = _slate.Inline.create({\n type: 'pill',\n data: { completion: completion, completionId: completionId }\n });\n }\n\n var editorState = activeEditorState;\n\n if (range) {\n var _change2 = editorState.change().moveToAnchor().moveAnchorTo(range.start).moveFocusTo(range.end).focus();\n editorState = _change2.value;\n }\n\n var change = void 0;\n if (inline) {\n change = editorState.change().insertInlineAtRange(editorState.selection, inline).insertText(suffix).focus();\n } else {\n change = editorState.change().insertTextAtRange(editorState.selection, completion).insertText(suffix).focus();\n }\n // for good hygiene, keep editorState updated to track the result of the change\n // even though we don't do anything subsequently with it\n editorState = change.value;\n\n _this4.onChange(change, activeEditorState);\n\n return true;\n });\n\n return function (_x4) {\n return _ref4.apply(this, arguments);\n };\n }();\n\n this.renderNode = function (props) {\n var attributes = props.attributes,\n children = props.children,\n node = props.node,\n isSelected = props.isSelected;\n\n\n switch (node.type) {\n case 'paragraph':\n return _react2.default.createElement(\n 'p',\n attributes,\n children\n );\n case 'block-quote':\n return _react2.default.createElement(\n 'blockquote',\n attributes,\n children\n );\n case 'bulleted-list':\n return _react2.default.createElement(\n 'ul',\n attributes,\n children\n );\n case 'heading1':\n return _react2.default.createElement(\n 'h1',\n attributes,\n children\n );\n case 'heading2':\n return _react2.default.createElement(\n 'h2',\n attributes,\n children\n );\n case 'heading3':\n return _react2.default.createElement(\n 'h3',\n attributes,\n children\n );\n case 'heading4':\n return _react2.default.createElement(\n 'h4',\n attributes,\n children\n );\n case 'heading5':\n return _react2.default.createElement(\n 'h5',\n attributes,\n children\n );\n case 'heading6':\n return _react2.default.createElement(\n 'h6',\n attributes,\n children\n );\n case 'list-item':\n return _react2.default.createElement(\n 'li',\n attributes,\n children\n );\n case 'numbered-list':\n return _react2.default.createElement(\n 'ol',\n attributes,\n children\n );\n case 'code':\n return _react2.default.createElement(\n 'pre',\n attributes,\n children\n );\n case 'link':\n return _react2.default.createElement(\n 'a',\n (0, _extends3.default)({}, attributes, { href: node.data.get('href') }),\n children\n );\n case 'pill':\n {\n var data = node.data;\n\n var url = data.get('href');\n var completion = data.get('completion');\n\n var shouldShowPillAvatar = !_SettingsStore2.default.getValue(\"Pill.shouldHidePillAvatar\");\n var Pill = _index2.default.getComponent('elements.Pill');\n\n if (completion === '@room') {\n return _react2.default.createElement(Pill, (0, _extends3.default)({\n type: Pill.TYPE_AT_ROOM_MENTION,\n room: _this4.props.room,\n shouldShowPillAvatar: shouldShowPillAvatar,\n isSelected: isSelected\n }, attributes));\n } else if (Pill.isPillUrl(url)) {\n return _react2.default.createElement(Pill, (0, _extends3.default)({\n url: url,\n room: _this4.props.room,\n shouldShowPillAvatar: shouldShowPillAvatar,\n isSelected: isSelected\n }, attributes));\n } else {\n var text = node.text;\n\n return _react2.default.createElement(\n 'a',\n (0, _extends3.default)({ href: url }, props.attributes),\n text\n );\n }\n }\n case 'emoji':\n {\n var _data = node.data;\n\n var emojiUnicode = _data.get('emojiUnicode');\n var uri = RichText.unicodeToEmojiUri(emojiUnicode);\n var shortname = (0, _emojione.toShort)(emojiUnicode);\n var className = (0, _classnames2.default)('mx_emojione', {\n mx_emojione_selected: isSelected\n });\n var style = {};\n if (props.selected) style.border = '1px solid blue';\n return _react2.default.createElement('img', { className: className, src: uri, title: shortname, alt: emojiUnicode, style: style });\n }\n }\n };\n\n this.renderMark = function (props) {\n var children = props.children,\n mark = props.mark,\n attributes = props.attributes;\n\n switch (mark.type) {\n case 'bold':\n return _react2.default.createElement(\n 'strong',\n attributes,\n children\n );\n case 'italic':\n return _react2.default.createElement(\n 'em',\n attributes,\n children\n );\n case 'code':\n return _react2.default.createElement(\n 'code',\n attributes,\n children\n );\n case 'underlined':\n return _react2.default.createElement(\n 'u',\n attributes,\n children\n );\n case 'deleted':\n return _react2.default.createElement(\n 'del',\n attributes,\n children\n );\n }\n };\n\n this.onFormatButtonClicked = function (name, e) {\n e.preventDefault();\n\n // XXX: horrible evil hack to ensure the editor is focused so the act\n // of focusing it doesn't then cancel the format button being pressed\n // FIXME: can we just tell handleKeyCommand's change to invoke .focus()?\n if (document.activeElement && document.activeElement.className !== 'mx_MessageComposer_editor') {\n _this4._editor.focus();\n setTimeout(function () {\n _this4.handleKeyCommand(name);\n }, 500); // can't find any callback to hook this to. onFocus and onChange and willComponentUpdate fire too early.\n return;\n }\n\n _this4.handleKeyCommand(name);\n };\n\n this.onMarkdownToggleClicked = function (e) {\n e.preventDefault(); // don't steal focus from the editor!\n _this4.handleKeyCommand('toggle-mode');\n };\n\n this.focusComposer = function () {\n _this4._editor.focus();\n };\n};\n\nexports.default = MessageComposerInput;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MessageComposerInput.js.map","\"use strict\";\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nfunction setup(env) {\n createDebug.debug = createDebug;\n createDebug.default = createDebug;\n createDebug.coerce = coerce;\n createDebug.disable = disable;\n createDebug.enable = enable;\n createDebug.enabled = enabled;\n createDebug.humanize = require('ms');\n Object.keys(env).forEach(function (key) {\n createDebug[key] = env[key];\n });\n /**\n * Active `debug` instances.\n */\n\n createDebug.instances = [];\n /**\n * The currently active debug mode names, and names to skip.\n */\n\n createDebug.names = [];\n createDebug.skips = [];\n /**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\n createDebug.formatters = {};\n /**\n * Selects a color for a debug namespace\n * @param {String} namespace The namespace string for the for the debug instance to be colored\n * @return {Number|String} An ANSI color code for the given namespace\n * @api private\n */\n\n function selectColor(namespace) {\n var hash = 0;\n\n for (var i = 0; i < namespace.length; i++) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n }\n\n createDebug.selectColor = selectColor;\n /**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\n function createDebug(namespace) {\n var prevTime;\n\n function debug() {\n // Disabled?\n if (!debug.enabled) {\n return;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var self = debug; // Set `diff` timestamp\n\n var curr = Number(new Date());\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n args[0] = createDebug.coerce(args[0]);\n\n if (typeof args[0] !== 'string') {\n // Anything else let's inspect with %O\n args.unshift('%O');\n } // Apply any `formatters` transformations\n\n\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n // If we encounter an escaped % then don't increase the array index\n if (match === '%%') {\n return match;\n }\n\n index++;\n var formatter = createDebug.formatters[format];\n\n if (typeof formatter === 'function') {\n var val = args[index];\n match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format`\n\n args.splice(index, 1);\n index--;\n }\n\n return match;\n }); // Apply env-specific formatting (colors, etc.)\n\n createDebug.formatArgs.call(self, args);\n var logFn = self.log || createDebug.log;\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = createDebug.enabled(namespace);\n debug.useColors = createDebug.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n debug.extend = extend; // Debug.formatArgs = formatArgs;\n // debug.rawLog = rawLog;\n // env-specific initialization logic for debug instances\n\n if (typeof createDebug.init === 'function') {\n createDebug.init(debug);\n }\n\n createDebug.instances.push(debug);\n return debug;\n }\n\n function destroy() {\n var index = createDebug.instances.indexOf(this);\n\n if (index !== -1) {\n createDebug.instances.splice(index, 1);\n return true;\n }\n\n return false;\n }\n\n function extend(namespace, delimiter) {\n return createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n }\n /**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\n\n function enable(namespaces) {\n createDebug.save(namespaces);\n createDebug.names = [];\n createDebug.skips = [];\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue;\n }\n\n namespaces = split[i].replace(/\\*/g, '.*?');\n\n if (namespaces[0] === '-') {\n createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n createDebug.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < createDebug.instances.length; i++) {\n var instance = createDebug.instances[i];\n instance.enabled = createDebug.enabled(instance.namespace);\n }\n }\n /**\n * Disable debug output.\n *\n * @api public\n */\n\n\n function disable() {\n createDebug.enable('');\n }\n /**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\n\n function enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n\n var i;\n var len;\n\n for (i = 0, len = createDebug.skips.length; i < len; i++) {\n if (createDebug.skips[i].test(name)) {\n return false;\n }\n }\n\n for (i = 0, len = createDebug.names.length; i < len; i++) {\n if (createDebug.names[i].test(name)) {\n return true;\n }\n }\n\n return false;\n }\n /**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\n\n function coerce(val) {\n if (val instanceof Error) {\n return val.stack || val.message;\n }\n\n return val;\n }\n\n createDebug.enable(createDebug.load());\n return createDebug;\n}\n\nmodule.exports = setup;\n\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\-?\\d?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","/*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isObject(val) {\n return val != null && typeof val === 'object' && Array.isArray(val) === false;\n};\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n\n return result;\n }\n\n if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n\n return result;\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var basePickBy = require('./_basePickBy'),\n hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","\n/**\n * Module exports.\n */\n\nmodule.exports = getDocument;\n\n// defined by w3c\nvar DOCUMENT_NODE = 9;\n\n/**\n * Returns `true` if `w` is a Document object, or `false` otherwise.\n *\n * @param {?} d - Document object, maybe\n * @return {Boolean}\n * @private\n */\n\nfunction isDocument (d) {\n return d && d.nodeType === DOCUMENT_NODE;\n}\n\n/**\n * Returns the `document` object associated with the given `node`, which may be\n * a DOM element, the Window object, a Selection, a Range. Basically any DOM\n * object that references the Document in some way, this function will find it.\n *\n * @param {Mixed} node - DOM node, selection, or range in which to find the `document` object\n * @return {Document} the `document` object associated with `node`\n * @public\n */\n\nfunction getDocument(node) {\n if (isDocument(node)) {\n return node;\n\n } else if (isDocument(node.ownerDocument)) {\n return node.ownerDocument;\n\n } else if (isDocument(node.document)) {\n return node.document;\n\n } else if (node.parentNode) {\n return getDocument(node.parentNode);\n\n // Range support\n } else if (node.commonAncestorContainer) {\n return getDocument(node.commonAncestorContainer);\n\n } else if (node.startContainer) {\n return getDocument(node.startContainer);\n\n // Selection support\n } else if (node.anchorNode) {\n return getDocument(node.anchorNode);\n }\n}\n","// this is a browser-only module. There is a non-browser equivalent in the same\n// directory. This is done using a `package.json` browser field.\n// old-IE fallback logic: http://stackoverflow.com/a/10260692\nmodule.exports = !!document.attachEvent && window !== document.parentWindow;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","import React from 'react';\nimport { renderToStaticMarkup } from 'react-dom/server';\nimport typeOf from 'type-of';\nimport { Node, Value } from 'slate';\nimport { Record } from 'immutable';\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n\n\n\n\n\n\n\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n/**\n * String.\n *\n * @type {String}\n */\n\nvar String = new Record({\n object: 'string',\n text: ''\n});\n\n/**\n * A rule to (de)serialize text nodes. This is automatically added to the HTML\n * serializer so that users don't have to worry about text-level serialization.\n *\n * @type {Object}\n */\n\nvar TEXT_RULE = {\n deserialize: function deserialize(el) {\n if (el.tagName && el.tagName.toLowerCase() === 'br') {\n return {\n object: 'text',\n leaves: [{\n object: 'leaf',\n text: '\\n'\n }]\n };\n }\n\n if (el.nodeName == '#text') {\n if (el.nodeValue && el.nodeValue.match(/<!--.*?-->/)) return;\n\n return {\n object: 'text',\n leaves: [{\n object: 'leaf',\n text: el.nodeValue\n }]\n };\n }\n },\n serialize: function serialize(obj, children) {\n if (obj.object === 'string') {\n return children.split('\\n').reduce(function (array, text, i) {\n if (i != 0) array.push(React.createElement('br', { key: i }));\n array.push(text);\n return array;\n }, []);\n }\n }\n};\n\n/**\n * A default `parseHtml` function that returns the `<body>` using `DOMParser`.\n *\n * @param {String} html\n * @return {Object}\n */\n\nfunction defaultParseHtml(html) {\n if (typeof DOMParser === 'undefined') {\n throw new Error('The native `DOMParser` global which the `Html` serializer uses by default is not present in this environment. You must supply the `options.parseHtml` function instead.');\n }\n\n var parsed = new DOMParser().parseFromString(html, 'text/html');\n var body = parsed.body;\n // COMPAT: in IE 11 body is null if html is an empty string\n\n return body || window.document.createElement('body');\n}\n\n/**\n * HTML serializer.\n *\n * @type {Html}\n */\n\nvar Html =\n/**\n * Create a new serializer with `rules`.\n *\n * @param {Object} options\n * @property {Array} rules\n * @property {String|Object|Block} defaultBlock\n * @property {Function} parseHtml\n */\n\nfunction Html() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, Html);\n\n _initialiseProps.call(this);\n\n var _options$defaultBlock = options.defaultBlock,\n defaultBlock = _options$defaultBlock === undefined ? 'paragraph' : _options$defaultBlock,\n _options$parseHtml = options.parseHtml,\n parseHtml = _options$parseHtml === undefined ? defaultParseHtml : _options$parseHtml,\n _options$rules = options.rules,\n rules = _options$rules === undefined ? [] : _options$rules;\n\n\n defaultBlock = Node.createProperties(defaultBlock);\n\n this.rules = [].concat(toConsumableArray(rules), [TEXT_RULE]);\n this.defaultBlock = defaultBlock;\n this.parseHtml = parseHtml;\n};\n\n/**\n * Add a unique key to a React `element`.\n *\n * @param {Element} element\n * @return {Element}\n */\n\nvar _initialiseProps = function _initialiseProps() {\n var _this = this;\n\n this.deserialize = function (html) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$toJSON = options.toJSON,\n toJSON = _options$toJSON === undefined ? false : _options$toJSON;\n var defaultBlock = _this.defaultBlock,\n parseHtml = _this.parseHtml;\n\n var fragment = parseHtml(html);\n var children = Array.from(fragment.childNodes);\n var nodes = _this.deserializeElements(children);\n\n // COMPAT: ensure that all top-level inline nodes are wrapped into a block.\n nodes = nodes.reduce(function (memo, node, i, original) {\n if (node.object == 'block') {\n memo.push(node);\n return memo;\n }\n\n if (i > 0 && original[i - 1].object != 'block') {\n var _block = memo[memo.length - 1];\n _block.nodes.push(node);\n return memo;\n }\n\n var block = _extends({\n object: 'block',\n data: {},\n isVoid: false\n }, defaultBlock, {\n nodes: [node]\n });\n\n memo.push(block);\n return memo;\n }, []);\n\n // TODO: pretty sure this is no longer needed.\n if (nodes.length == 0) {\n nodes = [_extends({\n object: 'block',\n data: {},\n isVoid: false\n }, defaultBlock, {\n nodes: [{\n object: 'text',\n leaves: [{\n object: 'leaf',\n text: '',\n marks: []\n }]\n }]\n })];\n }\n\n var json = {\n object: 'value',\n document: {\n object: 'document',\n data: {},\n nodes: nodes\n }\n };\n\n var ret = toJSON ? json : Value.fromJSON(json);\n return ret;\n };\n\n this.deserializeElements = function () {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var nodes = [];\n\n elements.filter(_this.cruftNewline).forEach(function (element) {\n var node = _this.deserializeElement(element);\n\n switch (typeOf(node)) {\n case 'array':\n nodes = nodes.concat(node);\n break;\n case 'object':\n nodes.push(node);\n break;\n }\n });\n\n return nodes;\n };\n\n this.deserializeElement = function (element) {\n var node = void 0;\n\n if (!element.tagName) {\n element.tagName = '';\n }\n\n var next = function next(elements) {\n if (Object.prototype.toString.call(elements) == '[object NodeList]') {\n elements = Array.from(elements);\n }\n\n switch (typeOf(elements)) {\n case 'array':\n return _this.deserializeElements(elements);\n case 'object':\n return _this.deserializeElement(elements);\n case 'null':\n case 'undefined':\n return;\n default:\n throw new Error('The `next` argument was called with invalid children: \"' + elements + '\".');\n }\n };\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = _this.rules[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var rule = _step.value;\n\n if (!rule.deserialize) continue;\n var ret = rule.deserialize(element, next);\n var type = typeOf(ret);\n\n if (type != 'array' && type != 'object' && type != 'null' && type != 'undefined') {\n throw new Error('A rule returned an invalid deserialized representation: \"' + node + '\".');\n }\n\n if (ret === undefined) {\n continue;\n } else if (ret === null) {\n return null;\n } else if (ret.object == 'mark') {\n node = _this.deserializeMark(ret);\n } else {\n node = ret;\n }\n\n break;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return node || next(element.childNodes);\n };\n\n this.deserializeMark = function (mark) {\n var type = mark.type,\n data = mark.data;\n\n\n var applyMark = function applyMark(node) {\n if (node.object == 'mark') {\n return _this.deserializeMark(node);\n } else if (node.object == 'text') {\n node.leaves = node.leaves.map(function (leaf) {\n leaf.marks = leaf.marks || [];\n leaf.marks.push({ type: type, data: data });\n return leaf;\n });\n } else if (node.nodes) {\n node.nodes = node.nodes.map(applyMark);\n }\n\n return node;\n };\n\n return mark.nodes.reduce(function (nodes, node) {\n var ret = applyMark(node);\n if (Array.isArray(ret)) return nodes.concat(ret);\n nodes.push(ret);\n return nodes;\n }, []);\n };\n\n this.serialize = function (value) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var document = value.document;\n\n var elements = document.nodes.map(_this.serializeNode).filter(function (el) {\n return el;\n });\n if (options.render === false) return elements;\n\n var html = renderToStaticMarkup(React.createElement(\n 'body',\n null,\n elements\n ));\n var inner = html.slice(6, -7);\n return inner;\n };\n\n this.serializeNode = function (node) {\n if (node.object === 'text') {\n var leaves = node.getLeaves();\n return leaves.map(_this.serializeLeaf);\n }\n\n var children = node.nodes.map(_this.serializeNode);\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = _this.rules[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var rule = _step2.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(node, children);\n if (ret === null) return;\n if (ret) return addKey(ret);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n throw new Error('No serializer defined for node of type \"' + node.type + '\".');\n };\n\n this.serializeLeaf = function (leaf) {\n var string = new String({ text: leaf.text });\n var text = _this.serializeString(string);\n\n return leaf.marks.reduce(function (children, mark) {\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = _this.rules[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var rule = _step3.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(mark, children);\n if (ret === null) return;\n if (ret) return addKey(ret);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n throw new Error('No serializer defined for mark of type \"' + mark.type + '\".');\n }, text);\n };\n\n this.serializeString = function (string) {\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = _this.rules[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var rule = _step4.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(string, string.text);\n if (ret) return ret;\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n };\n\n this.cruftNewline = function (element) {\n return !(element.nodeName === '#text' && element.nodeValue == '\\n');\n };\n};\n\nvar key = 0;\n\nfunction addKey(element) {\n return React.cloneElement(element, { key: key++ });\n}\n\nexport default Html;\n//# sourceMappingURL=slate-html-serializer.es.js.map\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDefaultInjection = require('./ReactDefaultInjection');\nvar ReactServerRendering = require('./ReactServerRendering');\nvar ReactVersion = require('./ReactVersion');\n\nReactDefaultInjection.inject();\n\nvar ReactDOMServer = {\n renderToString: ReactServerRendering.renderToString,\n renderToStaticMarkup: ReactServerRendering.renderToStaticMarkup,\n version: ReactVersion\n};\n\nmodule.exports = ReactDOMServer;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar React = require('react/lib/React');\nvar ReactDOMContainerInfo = require('./ReactDOMContainerInfo');\nvar ReactDefaultBatchingStrategy = require('./ReactDefaultBatchingStrategy');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMarkupChecksum = require('./ReactMarkupChecksum');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactServerBatchingStrategy = require('./ReactServerBatchingStrategy');\nvar ReactServerRenderingTransaction = require('./ReactServerRenderingTransaction');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar invariant = require('fbjs/lib/invariant');\n\nvar pendingTransactions = 0;\n\n/**\n * @param {ReactElement} element\n * @return {string} the HTML markup\n */\nfunction renderToStringImpl(element, makeStaticMarkup) {\n var transaction;\n try {\n ReactUpdates.injection.injectBatchingStrategy(ReactServerBatchingStrategy);\n\n transaction = ReactServerRenderingTransaction.getPooled(makeStaticMarkup);\n\n pendingTransactions++;\n\n return transaction.perform(function () {\n var componentInstance = instantiateReactComponent(element, true);\n var markup = ReactReconciler.mountComponent(componentInstance, transaction, null, ReactDOMContainerInfo(), emptyObject, 0 /* parentDebugID */\n );\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onUnmountComponent(componentInstance._debugID);\n }\n if (!makeStaticMarkup) {\n markup = ReactMarkupChecksum.addChecksumToMarkup(markup);\n }\n return markup;\n }, null);\n } finally {\n pendingTransactions--;\n ReactServerRenderingTransaction.release(transaction);\n // Revert to the DOM batching strategy since these two renderers\n // currently share these stateful modules.\n if (!pendingTransactions) {\n ReactUpdates.injection.injectBatchingStrategy(ReactDefaultBatchingStrategy);\n }\n }\n}\n\n/**\n * Render a ReactElement to its initial HTML. This should only be used on the\n * server.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdomserver.rendertostring\n */\nfunction renderToString(element) {\n !React.isValidElement(element) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'renderToString(): You must pass a valid ReactElement.') : _prodInvariant('46') : void 0;\n return renderToStringImpl(element, false);\n}\n\n/**\n * Similar to renderToString, except this doesn't create extra DOM attributes\n * such as data-react-id that React uses internally.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdomserver.rendertostaticmarkup\n */\nfunction renderToStaticMarkup(element) {\n !React.isValidElement(element) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'renderToStaticMarkup(): You must pass a valid ReactElement.') : _prodInvariant('47') : void 0;\n return renderToStringImpl(element, true);\n}\n\nmodule.exports = {\n renderToString: renderToString,\n renderToStaticMarkup: renderToStaticMarkup\n};","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactServerBatchingStrategy = {\n isBatchingUpdates: false,\n batchedUpdates: function (callback) {\n // Don't do anything here. During the server rendering we don't want to\n // schedule any updates. We will simply ignore them.\n }\n};\n\nmodule.exports = ReactServerBatchingStrategy;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parser = require(\"./parser\");\n\nvar _parser2 = _interopRequireDefault(_parser);\n\nvar _slate = require(\"slate\");\n\nvar _immutable = require(\"immutable\");\n\nvar _urls = require(\"./urls\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar String = new _immutable.Record({\n object: \"string\",\n text: \"\"\n});\n\n/**\n * Rules to (de)serialize nodes.\n *\n * @type {Object}\n */\n\nvar tableHeader = \"\";\n\nvar RULES = [{\n serialize: function serialize(obj, children) {\n if (obj.object === \"string\") {\n return children;\n }\n }\n}, {\n serialize: function serialize(obj, children, document) {\n if (obj.object !== \"block\") return;\n var parent = document.getParent(obj.key);\n\n // add newline after blocks which must be separated by\n // newlines - i.e. paragraphs, blockquotes and lists.\n var addNewLine = function addNewLine(children) {\n if (document.getNextSibling(obj.key)) {\n return children + \"\\n\\n\";\n } else {\n return children;\n }\n };\n\n switch (obj.type) {\n case \"table\":\n tableHeader = \"\";\n\n // trim removes trailing newline\n return children.trim();\n case \"table-head\":\n {\n switch (obj.getIn([\"data\", \"align\"])) {\n case \"left\":\n tableHeader += \"|:--- \";\n break;\n case \"center\":\n tableHeader += \"|:---:\";\n break;\n case \"right\":\n tableHeader += \"| ---:\";\n break;\n default:\n tableHeader += \"| --- \";\n }\n return \"| \" + children + \" \";\n }\n case \"table-row\":\n var output = \"\";\n if (tableHeader) {\n output = tableHeader + \"|\\n\";\n tableHeader = \"\";\n }\n return children + \"|\\n\" + output;\n case \"table-cell\":\n return \"| \" + children + \" \";\n case \"paragraph\":\n return addNewLine(\"\" + children);\n case \"code\":\n return addNewLine(\"```\\n\" + children + \"\\n```\");\n case \"code-line\":\n return children + \"\\n\";\n case \"block-quote\":\n return addNewLine(\"\" + children.replace(/^/gm, \"> \"));\n case \"todo-list\":\n case \"bulleted-list\":\n case \"ordered-list\":\n if (parent === document) {\n return children;\n }\n return \"\\n\" + addNewLine(children.replace(/^/gm, \" \"));\n case \"list-item\":\n {\n switch (parent.type) {\n case \"ordered-list\":\n return \"1. \" + children + \"\\n\";\n case \"todo-list\":\n var checked = obj.getIn([\"data\", \"checked\"]);\n var box = checked ? \"[x]\" : \"[ ]\";\n return box + \" \" + children + \"\\n\";\n default:\n case \"bulleted-list\":\n return \"* \" + children + \"\\n\";\n }\n }\n case \"heading1\":\n return \"\\n\" + children.replace(/^/gm, \"# \") + \"\\n\";\n case \"heading2\":\n return \"\\n\" + children.replace(/^/gm, \"## \") + \"\\n\";\n case \"heading3\":\n return \"\\n\" + children.replace(/^/gm, \"### \") + \"\\n\";\n case \"heading4\":\n return \"\\n\" + children.replace(/^/gm, \"#### \") + \"\\n\";\n case \"heading5\":\n return \"\\n\" + children.replace(/^/gm, \"##### \") + \"\\n\";\n case \"heading6\":\n return \"\\n\" + children.replace(/^/gm, \"###### \") + \"\\n\";\n case \"horizontal-rule\":\n return \"---\";\n case \"image\":\n var alt = obj.getIn([\"data\", \"alt\"]);\n var src = (0, _urls.encode)(obj.getIn([\"data\", \"src\"]) || \"\");\n return \"![\" + alt + \"](\" + src + \")\";\n }\n }\n}, {\n serialize: function serialize(obj, children) {\n if (obj.object !== \"inline\") return;\n switch (obj.type) {\n case \"link\":\n var href = (0, _urls.encode)(obj.getIn([\"data\", \"href\"]) || \"\");\n return href ? \"[\" + children.trim() + \"](\" + href + \")\" : children.trim();\n }\n }\n},\n// Add a new rule that handles marks...\n{\n serialize: function serialize(obj, children) {\n if (obj.object !== \"mark\") return;\n switch (obj.type) {\n case \"bold\":\n return \"**\" + children + \"**\";\n case \"italic\":\n return \"_\" + children + \"_\";\n case \"code\":\n return \"`\" + children + \"`\";\n case \"inserted\":\n return \"++\" + children + \"++\";\n case \"deleted\":\n return \"~~\" + children + \"~~\";\n }\n }\n}];\n\n/**\n * Markdown serializer.\n *\n * @type {Markdown}\n */\n\nvar Markdown = function () {\n /**\n * Create a new serializer with `rules`.\n *\n * @param {Object} options\n * @property {Array} rules\n * @return {Markdown} serializer\n */\n\n function Markdown() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Markdown);\n\n this.rules = [].concat(_toConsumableArray(options.rules || []), RULES);\n\n this.serializeNode = this.serializeNode.bind(this);\n this.serializeLeaves = this.serializeLeaves.bind(this);\n this.serializeString = this.serializeString.bind(this);\n }\n\n /**\n * Serialize a `state` object into an HTML string.\n *\n * @param {State} state\n * @return {String} markdown\n */\n\n _createClass(Markdown, [{\n key: \"serialize\",\n value: function serialize(state) {\n var _this = this;\n\n var document = state.document;\n\n var elements = document.nodes.map(function (node) {\n return _this.serializeNode(node, document);\n });\n\n var output = elements.join(\"\\n\");\n\n // trim beginning whitespace\n return output.replace(/^\\s+/g, \"\");\n }\n\n /**\n * Serialize a `node`.\n *\n * @param {Node} node\n * @return {String}\n */\n\n }, {\n key: \"serializeNode\",\n value: function serializeNode(node, document) {\n var _this2 = this;\n\n if (node.object == \"text\") {\n var leaves = node.getLeaves();\n var inCodeBlock = !!document.getClosest(node.key, function (n) {\n n.type === 'code';\n });\n return leaves.map(this.serializeLeaves, !inCodeBlock);\n }\n\n var children = node.nodes.map(function (node) {\n return _this2.serializeNode(node, document);\n });\n children = children.flatten().size === 0 ? \"\" : children.flatten().join(\"\");\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = this.rules[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var rule = _step.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(node, children, document);\n if (ret) return ret;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n\n /**\n * Serialize `leaves`.\n *\n * @param {Leave[]} leaves\n * @return {String}\n */\n\n }, {\n key: \"serializeLeaves\",\n value: function serializeLeaves(leaves, escape) {\n var _this3 = this;\n\n var leavesText = leaves.text;\n if (escape) {\n // escape markdown characters\n leavesText = leavesText.replace(/([\\\\`*{}\\[\\]()#+\\-.!_>])/gi, \"\\\\$1\");\n }\n var string = new String({ text: leavesText });\n var text = this.serializeString(string);\n\n return leaves.marks.reduce(function (children, mark) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = _this3.rules[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var rule = _step2.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(mark, children);\n if (ret) return ret;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }, text);\n }\n\n /**\n * Serialize a `string`.\n *\n * @param {String} string\n * @return {String}\n */\n\n }, {\n key: \"serializeString\",\n value: function serializeString(string) {\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = this.rules[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var rule = _step3.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(string, string.text);\n if (ret) return ret;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n\n /**\n * Deserialize a markdown `string`.\n *\n * @param {String} markdown\n * @return {State} state\n */\n\n }, {\n key: \"deserialize\",\n value: function deserialize(markdown) {\n var document = _parser2.default.parse(markdown);\n var state = _slate.Value.fromJSON({ document: document });\n return state;\n }\n }]);\n\n return Markdown;\n}();\n\nexports.default = Markdown;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _urls = require(\"./urls\");\n\n/**\n * Ported from:\n * https://github.com/chjj/marked/blob/49b7eaca/lib/marked.js\n * TODO:\n * Use ES6 classes\n * Add flow annotations\n */\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar assign = Object.assign || function (obj) {\n var i = 1;\n for (; i < arguments.length; i++) {\n var target = arguments[i];\n for (var key in target) {\n if (hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n return obj;\n};\n\nvar flatten = function flatten(ary) {\n return [].concat.apply([], ary);\n};\n\nvar noop = function noop() {};\nnoop.exec = noop;\n\nvar defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n smartLists: true,\n silent: false,\n langPrefix: \"lang-\",\n renderer: new Renderer()\n};\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*(?:\\n|$))+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n(?! )(?!\\1bull )\\n|\\s*$)/,\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n|$)/,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|def))+)(?:\\n|$)/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.|\\[[x\\s]\\])/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, \"gm\")(/bull/g, block.bullet)();\n\nblock.list = replace(block.list)(/bull/g, block.bullet)(\"hr\", \"\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))\")(\"def\", \"\\\\n+(?=\" + block.def.source + \")\")();\n\nblock.blockquote = replace(block.blockquote)(\"def\", block.def)();\n\nblock.paragraph = replace(block.paragraph)(\"hr\", block.hr)(\"heading\", block.heading)(\"lheading\", block.lheading)(\"blockquote\", block.blockquote)(\"def\", block.def)();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = assign({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = assign({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]+?)\\s*\\1 *(?:\\n|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n{1,2}|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)(\"(?!\", \"(?!\" + block.gfm.fences.source.replace(\"\\\\1\", \"\\\\2\") + \"|\" + block.list.source.replace(\"\\\\1\", \"\\\\3\") + \"|\")();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = assign({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = assign({}, options || defaults);\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.parse = function (src, options) {\n var lexer = new Lexer(options);\n return lexer.parse(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.parse = function (src) {\n src = src.replace(/\\r\\n|\\r/g, \"\\n\").replace(/\\t/g, \" \").replace(/\\u00a0/g, \" \").replace(/\\u2424/g, \"\\n\");\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function (src, top, bq) {\n var next;\n var loose;\n var cap;\n var bull;\n var b;\n var item;\n var space;\n var i;\n var l;\n\n src = src.replace(/^ +$/gm, \"\");\n src = src.replace(/^\\n/, \"\");\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n var newlines = cap[0].length;\n\n if (top) {\n for (var _i = 0; _i < newlines; _i++) {\n this.tokens.push({\n type: \"paragraph\",\n text: \"\"\n });\n }\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, \"\");\n this.tokens.push({\n type: \"code\",\n text: !this.options.pedantic ? cap.replace(/\\n+$/, \"\") : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: \"code\",\n lang: cap[2],\n text: cap[3]\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n\n var last = this.tokens[this.tokens.length - 1];\n if (last && last.type === \"paragraph\" && last.text === \"\") {\n this.tokens.splice(-1, 1);\n }\n\n this.tokens.push({\n type: \"heading\",\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: \"table\",\n header: cap[1].replace(/^ *| *\\| *$/g, \"\").split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, \"\").split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, \"\").split(\"\\n\")\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = \"right\";\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = \"center\";\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = \"left\";\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: \"heading\",\n depth: cap[2] === \"=\" ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: \"hr\"\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: \"blockquote_start\"\n });\n\n cap = cap[0].replace(/^ *> ?/gm, \"\");\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: \"blockquote_end\"\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n var ordered = bull.length > 1;\n var todo = bull[0] === \"[\";\n\n this.tokens.push({\n type: \"list_start\",\n style: todo ? \"todo\" : ordered ? \"ordered\" : \"bulleted\"\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n var checked = todo ? !!item.match(/^ *(\\[x\\])/) : undefined;\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.|\\[[x\\s]\\]) +/, \"\");\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf(\"\\n \")) {\n space -= item.length;\n item = !this.options.pedantic ? item.replace(new RegExp(\"^ {1,\" + space + \"}\", \"gm\"), \"\") : item.replace(/^ {1,4}/gm, \"\");\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join(\"\\n\") + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === \"\\n\";\n if (!loose) {\n loose = next;\n }\n }\n\n this.tokens.push({\n checked: checked,\n type: loose ? \"loose_item_start\" : \"list_item_start\"\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: \"list_item_end\"\n });\n }\n\n this.tokens.push({\n type: \"list_end\"\n });\n\n continue;\n }\n\n // def\n if (!bq && top && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: \"table\",\n header: cap[1].replace(/^ *| *\\| *$/g, \"\").split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, \"\").split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, \"\").split(\"\\n\")\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = \"right\";\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = \"center\";\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = \"left\";\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].replace(/^ *\\| *| *\\| *$/g, \"\").split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n var endsWithNewline = cap[1].charAt(cap[1].length - 1) === \"\\n\";\n this.tokens.push({\n type: \"paragraph\",\n text: endsWithNewline ? cap[1].slice(0, -1) : cap[1]\n });\n if (endsWithNewline) {\n this.tokens.push({\n type: \"paragraph\",\n text: \"\"\n });\n }\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: \"text\",\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new Error(\"Infinite loop on byte: \" + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:__|[\\s\\S])+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n ins: noop,\n text: /^[\\s\\S]+?(?=[\\\\<!\\[_*`]| {2,}\\n|$)/\n};\n\ninline._inside = /(?:\\[[^\\]]*\\]|[^\\[\\]]|\\](?=[^\\[]*\\]))*/;\ninline._href = /\\s*<?([\\s\\S]*?)>?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)(\"inside\", inline._inside)(\"href\", inline._href)();\n\ninline.reflink = replace(inline.reflink)(\"inside\", inline._inside)();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = assign({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = assign({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = assign({}, inline.normal, {\n escape: replace(inline.escape)(\"])\", \"~|])\")(),\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n ins: /^\\+\\+(?=\\S)([\\s\\S]*?\\S)\\+\\+/,\n text: replace(inline.text)(\"]|\", \"~+]|\")()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = assign({}, inline.gfm, {\n br: replace(inline.br)(\"{2,}\", \"*\")(),\n text: replace(inline.gfm.text)(\"{2,}\", \"*\")()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = assign({}, options || defaults);\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer();\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new Error(\"Tokens array requires a `links` property.\");\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.parse = function (src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.parse(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.parse = function (src) {\n var out = [];\n var link;\n var cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out.push({\n object: \"text\",\n leaves: [{\n text: cap[1]\n }]\n });\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out.push(this.outputLink(cap, { href: cap[2], title: cap[3] }));\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n // TODO\n if ((cap = this.rules.reflink.exec(src)) || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, \" \");\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out.push({\n object: \"text\",\n leaves: [{\n text: cap[0].charAt(0)\n }]\n });\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out.push(this.outputLink(cap, link));\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.strong(this.parse(cap[2] || cap[1])));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.em(this.parse(cap[2] || cap[1])));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.codespan(cap[2]));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.br());\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.del(this.parse(cap[1])));\n continue;\n }\n\n // ins (gfm extended)\n if (cap = this.rules.ins.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.ins(this.parse(cap[1])));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.text(cap[0]));\n continue;\n }\n\n if (src) {\n throw new Error(\"Infinite loop on byte: \" + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function (cap, link) {\n var href = link.href;\n var title = link.title;\n\n return cap[0].charAt(0) !== \"!\" ? this.renderer.link(href, title, this.parse(cap[1])) : this.renderer.image(href, title, cap[1]);\n};\n\"\";\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.groupTextInLeaves = function (childNode) {\n var _this = this;\n\n var node = flatten(childNode);\n return node.reduce(function (acc, current) {\n var accLast = acc.length - 1;\n var lastIsText = accLast >= 0 && acc[accLast] && acc[accLast][\"object\"] === \"text\";\n\n if (current instanceof TextNode) {\n if (lastIsText) {\n // If the previous item was a text object, push the current text to it's range\n acc[accLast].leaves.push(current);\n return acc;\n } else {\n // Else, create a new text object\n acc.push({\n object: \"text\",\n leaves: [current]\n });\n return acc;\n }\n } else if (current instanceof Array) {\n return acc.concat(_this.groupTextInLeaves(current));\n } else {\n acc.push(current);\n return acc;\n }\n }, []);\n};\n\nRenderer.prototype.code = function (childNode, lang) {\n var data = {};\n\n if (lang) {\n data.language = this.options.langPrefix + lang;\n }\n\n return {\n object: \"block\",\n type: \"code\",\n data: data,\n nodes: this.groupTextInLeaves(childNode)\n };\n};\n\nRenderer.prototype.blockquote = function (childNode) {\n return {\n object: \"block\",\n type: \"block-quote\",\n nodes: this.groupTextInLeaves(childNode)\n };\n};\n\nRenderer.prototype.heading = function (childNode, level) {\n return {\n object: \"block\",\n type: \"heading\" + level,\n nodes: this.groupTextInLeaves(childNode)\n };\n};\n\nRenderer.prototype.hr = function () {\n return {\n object: \"block\",\n type: \"horizontal-rule\",\n isVoid: true\n };\n};\n\nRenderer.prototype.list = function (childNode, style) {\n return {\n object: \"block\",\n type: style + \"-list\",\n nodes: childNode\n };\n};\n\nRenderer.prototype.listitem = function (childNode) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var data = void 0;\n if (flags.checked !== undefined) {\n data = { checked: flags.checked };\n }\n\n return {\n object: \"block\",\n type: \"list-item\",\n data: data,\n nodes: this.groupTextInLeaves(childNode)\n };\n};\n\nRenderer.prototype.paragraph = function (childNode) {\n return {\n object: \"block\",\n type: \"paragraph\",\n nodes: this.groupTextInLeaves(childNode)\n };\n};\n\nRenderer.prototype.table = function (childNode) {\n return {\n object: \"block\",\n type: \"table\",\n nodes: childNode\n };\n};\n\nRenderer.prototype.tablerow = function (childNode) {\n return {\n object: \"block\",\n type: \"table-row\",\n nodes: childNode\n };\n};\n\nRenderer.prototype.tablecell = function (childNode, flags) {\n var align = flags.align;\n\n return {\n object: \"block\",\n data: { align: align },\n type: flags.header ? \"table-head\" : \"table-cell\",\n nodes: this.groupTextInLeaves(childNode)\n };\n};\n\n// span level renderer\nRenderer.prototype.strong = function (childNode) {\n return childNode.map(function (node) {\n if (node.marks) {\n node.marks.push({ type: \"bold\" });\n } else {\n node.marks = [{ type: \"bold\" }];\n }\n return node;\n });\n};\n\nRenderer.prototype.em = function (childNode) {\n return childNode.map(function (node) {\n if (node.marks) {\n node.marks.push({ type: \"italic\" });\n } else {\n node.marks = [{ type: \"italic\" }];\n }\n return node;\n });\n};\n\nRenderer.prototype.codespan = function (text) {\n return new TextNode(text, { type: \"code\" });\n};\n\nRenderer.prototype.br = function () {\n return new TextNode(\"\");\n};\n\nRenderer.prototype.del = function (childNode) {\n return childNode.map(function (node) {\n if (node.marks) {\n node.marks.push({ type: \"deleted\" });\n } else {\n node.marks = [{ type: \"deleted\" }];\n }\n return node;\n });\n};\n\nRenderer.prototype.ins = function (childNode) {\n return childNode.map(function (node) {\n if (node.marks) {\n node.marks.push({ type: \"inserted\" });\n } else {\n node.marks = [{ type: \"inserted\" }];\n }\n return node;\n });\n};\n\nRenderer.prototype.link = function (href, title, childNode) {\n var data = {\n href: (0, _urls.decode)(href)\n };\n if (title) {\n data.title = title;\n }\n return {\n object: \"inline\",\n type: \"link\",\n nodes: this.groupTextInLeaves(childNode),\n data: data\n };\n};\n\nRenderer.prototype.image = function (href, title, alt) {\n var data = {\n src: (0, _urls.decode)(href)\n };\n\n if (title) {\n data.title = title;\n }\n if (alt) {\n data.alt = alt;\n }\n\n return {\n object: \"block\",\n type: \"image\",\n nodes: [{\n object: \"text\",\n leaves: [{\n text: \"\"\n }]\n }],\n isVoid: true,\n data: data\n };\n};\n\nRenderer.prototype.text = function (childNode) {\n return new TextNode(childNode);\n};\n\n// Auxiliary object constructors:\nfunction TextNode(text, marks) {\n this.text = text;\n if (marks) {\n this.marks = [marks];\n }\n}\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = assign({}, options || defaults);\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function (src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function (src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.slice().reverse();\n\n var out = [];\n while (this.next()) {\n out.push(this.tok());\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function () {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function () {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function () {\n var body = this.token.text;\n\n while (this.peek().type === \"text\") {\n body += \"\\n\" + this.next().text;\n }\n\n return this.inline.parse(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function () {\n switch (this.token.type) {\n case \"space\":\n {\n return {\n object: \"text\",\n leaves: [{\n text: \"\"\n }]\n };\n }\n case \"hr\":\n {\n return this.renderer.hr();\n }\n case \"heading\":\n {\n return this.renderer.heading(this.inline.parse(this.token.text), this.token.depth);\n }\n case \"code\":\n {\n return this.renderer.code(this.inline.parse(this.token.text), this.token.lang);\n }\n case \"table\":\n {\n var body = [];\n var i = void 0,\n row = void 0,\n flags = void 0,\n j = void 0;\n\n // header\n var cells = [];\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cells.push(this.renderer.tablecell(this.inline.parse(this.token.header[i]), {\n header: true,\n align: this.token.align[i]\n }));\n }\n body.push(this.renderer.tablerow(cells));\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n var _cells = [];\n for (j = 0; j < row.length; j++) {\n _cells.push(this.renderer.tablecell(this.inline.parse(row[j]), {\n header: false,\n align: this.token.align[j]\n }));\n }\n\n body.push(this.renderer.tablerow(_cells));\n }\n return this.renderer.table(body);\n }\n case \"blockquote_start\":\n {\n var _body = [];\n\n while (this.next().type !== \"blockquote_end\") {\n _body.push(this.inline.parse(this.token.text));\n }\n return this.renderer.blockquote(_body);\n }\n case \"list_start\":\n {\n var _body2 = [];\n var style = this.token.style;\n\n while (this.next().type !== \"list_end\") {\n _body2.push(this.tok());\n }\n\n return this.renderer.list(_body2, style);\n }\n case \"loose_item_start\":\n case \"list_item_start\":\n {\n var _body3 = [];\n var _flags = { checked: this.token.checked };\n\n while (this.next().type !== \"list_item_end\") {\n _body3.push(this.token.type === \"text\" ? this.renderer.paragraph(this.inline.parse(this.token.text)) : this.tok());\n }\n\n return this.renderer.listitem(_body3, _flags);\n }\n case \"paragraph\":\n {\n return this.renderer.paragraph(this.inline.parse(this.token.text));\n }\n case \"text\":\n {\n return this.renderer.text(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction replace(regex, options) {\n regex = regex.source;\n options = options || \"\";\n return function self(name, val) {\n if (!name) {\n return new RegExp(regex, options);\n }\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, \"$1\");\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nvar MarkdownParser = {\n parse: function parse(src, options) {\n options = assign({}, defaults, options);\n try {\n var fragment = Parser.parse(Lexer.parse(src, options), options);\n } catch (e) {\n if (options.silent) {\n fragment = [{\n object: \"block\",\n type: \"paragraph\",\n nodes: [{\n object: \"text\",\n leaves: [{\n text: \"An error occured:\"\n }, {\n text: e.message\n }]\n }]\n }];\n } else {\n throw e;\n }\n }\n var mainNode = { nodes: fragment };\n return mainNode;\n }\n};\n\nexports.default = MarkdownParser;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _slate = require('slate');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Plain text serializer, which converts a Slate `value` to a plain text string,\n * serializing pills into various different formats as required.\n *\n * @type {PlainWithPillsSerializer}\n */\n\nvar PlainWithPillsSerializer =\n/*\n * @param {String} options.pillFormat - either 'md', 'plain', 'id'\n */\nfunction PlainWithPillsSerializer() {\n var _this = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n (0, _classCallCheck3.default)(this, PlainWithPillsSerializer);\n\n this.serialize = function (value) {\n return _this._serializeNode(value.document);\n };\n\n this._serializeNode = function (node) {\n if (node.object == 'document' || node.object == 'block' && _slate.Block.isBlockList(node.nodes)) {\n return node.nodes.map(_this._serializeNode).join('\\n');\n } else if (node.type == 'emoji') {\n return node.data.get('emojiUnicode');\n } else if (node.type == 'pill') {\n var completion = node.data.get('completion');\n // over the wire the @room pill is just plaintext\n if (completion === '@room') return completion;\n\n switch (_this.pillFormat) {\n case 'plain':\n return completion;\n case 'md':\n return '[' + completion + '](' + node.data.get('href') + ')';\n case 'id':\n return node.data.get('completionId') || completion;\n }\n } else if (node.nodes) {\n return node.nodes.map(_this._serializeNode).join('');\n } else {\n return node.text;\n }\n };\n\n var _options$pillFormat = options.pillFormat,\n pillFormat = _options$pillFormat === undefined ? 'plain' : _options$pillFormat;\n\n this.pillFormat = pillFormat;\n}\n\n/**\n * Serialize a Slate `value` to a plain text string,\n * serializing pills as either MD links, plain text representations or\n * ID representations as required.\n *\n * @param {Value} value\n * @return {String}\n */\n\n\n/**\n * Serialize a `node` to plain text.\n *\n * @param {Node} node\n * @return {String}\n */\n;\n\n/**\n * Export.\n *\n * @type {PlainWithPillsSerializer}\n */\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// Based originally on slate-plain-serializer\n\nexports.default = PlainWithPillsSerializer;\nmodule.exports = exports['default'];\n//# sourceMappingURL=PlainWithPillsSerializer.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.unicodeToEmojiUri = unicodeToEmojiUri;\n\nvar _emojione = require('emojione');\n\nvar emojione = _interopRequireWildcard(_emojione);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction unicodeToEmojiUri(str) {\n var mappedUnicode = emojione.mapUnicodeToShort();\n\n // remove any zero width joiners/spaces used in conjugate emojis as the emojione URIs don't contain them\n return str.replace(emojione.regUnicode, function (unicodeChar) {\n if (typeof unicodeChar === 'undefined' || unicodeChar === '' || !(unicodeChar in emojione.jsEscapeMap)) {\n // if the unicodeChar doesn't exist just return the entire match\n return unicodeChar;\n } else {\n // get the unicode codepoint from the actual char\n var unicode = emojione.jsEscapeMap[unicodeChar];\n\n var short = mappedUnicode[unicode];\n var fname = emojione.emojioneList[short].fname;\n\n return emojione.imagePathSVG + fname + '.svg' + emojione.cacheBustParam;\n }\n });\n} /*\n Copyright 2015 - 2017 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=RichText.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _commonmark = require('commonmark');\n\nvar _commonmark2 = _interopRequireDefault(_commonmark);\n\nvar _escape = require('lodash/escape');\n\nvar _escape2 = _interopRequireDefault(_escape);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ALLOWED_HTML_TAGS = ['sub', 'sup', 'del', 'u'];\n\n// These types of node are definitely text\nvar TEXT_NODES = ['text', 'softbreak', 'linebreak', 'paragraph', 'document'];\n\nfunction is_allowed_html_tag(node) {\n // Regex won't work for tags with attrs, but we only\n // allow <del> anyway.\n var matches = /^<\\/?(.*)>$/.exec(node.literal);\n if (matches && matches.length == 2) {\n var tag = matches[1];\n return ALLOWED_HTML_TAGS.indexOf(tag) > -1;\n }\n return false;\n}\n\nfunction html_if_tag_allowed(node) {\n if (is_allowed_html_tag(node)) {\n this.lit(node.literal);\n return;\n } else {\n this.lit((0, _escape2.default)(node.literal));\n }\n}\n\n/*\n * Returns true if the parse output containing the node\n * comprises multiple block level elements (ie. lines),\n * or false if it is only a single line.\n */\nfunction is_multi_line(node) {\n var par = node;\n while (par.parent) {\n par = par.parent;\n }\n return par.firstChild != par.lastChild;\n}\n\n/**\n * Class that wraps commonmark, adding the ability to see whether\n * a given message actually uses any markdown syntax or whether\n * it's plain text.\n */\n\nvar Markdown = function () {\n function Markdown(input) {\n (0, _classCallCheck3.default)(this, Markdown);\n\n this.input = input;\n\n var parser = new _commonmark2.default.Parser();\n this.parsed = parser.parse(this.input);\n }\n\n (0, _createClass3.default)(Markdown, [{\n key: 'isPlainText',\n value: function isPlainText() {\n var walker = this.parsed.walker();\n\n var ev = void 0;\n while (ev = walker.next()) {\n var node = ev.node;\n if (TEXT_NODES.indexOf(node.type) > -1) {\n // definitely text\n continue;\n } else if (node.type == 'html_inline' || node.type == 'html_block') {\n // if it's an allowed html tag, we need to render it and therefore\n // we will need to use HTML. If it's not allowed, it's not HTML since\n // we'll just be treating it as text.\n if (is_allowed_html_tag(node)) {\n return false;\n }\n } else {\n return false;\n }\n }\n return true;\n }\n }, {\n key: 'toHTML',\n value: function toHTML() {\n var renderer = new _commonmark2.default.HtmlRenderer({\n safe: false,\n\n // Set soft breaks to hard HTML breaks: commonmark\n // puts softbreaks in for multiple lines in a blockquote,\n // so if these are just newline characters then the\n // block quote ends up all on one line\n // (https://github.com/vector-im/riot-web/issues/3154)\n softbreak: '<br />'\n });\n\n // Trying to strip out the wrapping <p/> causes a lot more complication\n // than it's worth, i think. For instance, this code will go and strip\n // out any <p/> tag (no matter where it is in the tree) which doesn't\n // contain \\n's.\n // On the flip side, <p/>s are quite opionated and restricted on where\n // you can nest them.\n //\n // Let's try sending with <p/>s anyway for now, though.\n\n var real_paragraph = renderer.paragraph;\n\n renderer.paragraph = function (node, entering) {\n // If there is only one top level node, just return the\n // bare text: it's a single line of text and so should be\n // 'inline', rather than unnecessarily wrapped in its own\n // p tag. If, however, we have multiple nodes, each gets\n // its own p tag to keep them as separate paragraphs.\n if (is_multi_line(node)) {\n real_paragraph.call(this, node, entering);\n }\n };\n\n renderer.html_inline = html_if_tag_allowed;\n\n renderer.html_block = function (node) {\n /*\n // as with `paragraph`, we only insert line breaks\n // if there are multiple lines in the markdown.\n const isMultiLine = is_multi_line(node);\n if (isMultiLine) this.cr();\n */\n html_if_tag_allowed.call(this, node);\n /*\n if (isMultiLine) this.cr();\n */\n };\n\n return renderer.render(this.parsed);\n }\n\n /*\n * Render the markdown message to plain text. That is, essentially\n * just remove any backslashes escaping what would otherwise be\n * markdown syntax\n * (to fix https://github.com/vector-im/riot-web/issues/2870).\n *\n * N.B. this does **NOT** render arbitrary MD to plain text - only MD\n * which has no formatting. Otherwise it emits HTML(!).\n */\n\n }, {\n key: 'toPlaintext',\n value: function toPlaintext() {\n var renderer = new _commonmark2.default.HtmlRenderer({ safe: false });\n var real_paragraph = renderer.paragraph;\n\n // The default `out` function only sends the input through an XML\n // escaping function, which causes messages to be entity encoded,\n // which we don't want in this case.\n renderer.out = function (s) {\n // The `lit` function adds a string literal to the output buffer.\n this.lit(s);\n };\n\n renderer.paragraph = function (node, entering) {\n // as with toHTML, only append lines to paragraphs if there are\n // multiple paragraphs\n if (is_multi_line(node)) {\n if (!entering && node.next) {\n this.lit('\\n\\n');\n }\n }\n };\n\n renderer.html_block = function (node) {\n this.lit(node.literal);\n if (is_multi_line(node) && node.next) this.lit('\\n\\n');\n };\n\n return renderer.render(this.parsed);\n }\n }]);\n return Markdown;\n}();\n\nexports.default = Markdown;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Markdown.js.map","\"use strict\";\n\n// commonmark.js - CommomMark in JavaScript\n// Copyright (C) 2014 John MacFarlane\n// License: BSD3.\n\n// Basic usage:\n//\n// var commonmark = require('commonmark');\n// var parser = new commonmark.Parser();\n// var renderer = new commonmark.HtmlRenderer();\n// console.log(renderer.render(parser.parse('Hello *world*')));\n\nmodule.exports.Node = require('./node');\nmodule.exports.Parser = require('./blocks');\nmodule.exports.HtmlRenderer = require('./render/html');\nmodule.exports.XmlRenderer = require('./render/xml');\n","\"use strict\";\n\nvar Node = require('./node');\nvar unescapeString = require('./common').unescapeString;\nvar OPENTAG = require('./common').OPENTAG;\nvar CLOSETAG = require('./common').CLOSETAG;\n\nvar CODE_INDENT = 4;\n\nvar C_TAB = 9;\nvar C_NEWLINE = 10;\nvar C_GREATERTHAN = 62;\nvar C_LESSTHAN = 60;\nvar C_SPACE = 32;\nvar C_OPEN_BRACKET = 91;\n\nvar InlineParser = require('./inlines');\n\nvar reHtmlBlockOpen = [\n /./, // dummy for 0\n /^<(?:script|pre|style)(?:\\s|>|$)/i,\n /^<!--/,\n /^<[?]/,\n /^<![A-Z]/,\n /^<!\\[CDATA\\[/,\n /^<[/]?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[123456]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|title|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\\s|[/]?[>]|$)/i,\n new RegExp('^(?:' + OPENTAG + '|' + CLOSETAG + ')\\\\s*$', 'i')\n];\n\nvar reHtmlBlockClose = [\n /./, // dummy for 0\n /<\\/(?:script|pre|style)>/i,\n /-->/,\n /\\?>/,\n />/,\n /\\]\\]>/\n];\n\nvar reThematicBreak = /^(?:(?:\\*[ \\t]*){3,}|(?:_[ \\t]*){3,}|(?:-[ \\t]*){3,})[ \\t]*$/;\n\nvar reMaybeSpecial = /^[#`~*+_=<>0-9-]/;\n\nvar reNonSpace = /[^ \\t\\f\\v\\r\\n]/;\n\nvar reBulletListMarker = /^[*+-]/;\n\nvar reOrderedListMarker = /^(\\d{1,9})([.)])/;\n\nvar reATXHeadingMarker = /^#{1,6}(?:[ \\t]+|$)/;\n\nvar reCodeFence = /^`{3,}(?!.*`)|^~{3,}(?!.*~)/;\n\nvar reClosingCodeFence = /^(?:`{3,}|~{3,})(?= *$)/;\n\nvar reSetextHeadingLine = /^(?:=+|-+)[ \\t]*$/;\n\nvar reLineEnding = /\\r\\n|\\n|\\r/;\n\n// Returns true if string contains only space characters.\nvar isBlank = function(s) {\n return !(reNonSpace.test(s));\n};\n\nvar isSpaceOrTab = function(c) {\n return c === C_SPACE || c === C_TAB;\n};\n\nvar peek = function(ln, pos) {\n if (pos < ln.length) {\n return ln.charCodeAt(pos);\n } else {\n return -1;\n }\n};\n\n// DOC PARSER\n\n// These are methods of a Parser object, defined below.\n\n// Returns true if block ends with a blank line, descending if needed\n// into lists and sublists.\nvar endsWithBlankLine = function(block) {\n while (block) {\n if (block._lastLineBlank) {\n return true;\n }\n var t = block.type;\n if (t === 'list' || t === 'item') {\n block = block._lastChild;\n } else {\n break;\n }\n }\n return false;\n};\n\n// Add a line to the block at the tip. We assume the tip\n// can accept lines -- that check should be done before calling this.\nvar addLine = function() {\n if (this.partiallyConsumedTab) {\n this.offset += 1; // skip over tab\n // add space characters:\n var charsToTab = 4 - (this.column % 4);\n this.tip._string_content += (' '.repeat(charsToTab));\n }\n this.tip._string_content += this.currentLine.slice(this.offset) + '\\n';\n};\n\n// Add block of type tag as a child of the tip. If the tip can't\n// accept children, close and finalize it and try its parent,\n// and so on til we find a block that can accept children.\nvar addChild = function(tag, offset) {\n while (!this.blocks[this.tip.type].canContain(tag)) {\n this.finalize(this.tip, this.lineNumber - 1);\n }\n\n var column_number = offset + 1; // offset 0 = column 1\n var newBlock = new Node(tag, [[this.lineNumber, column_number], [0, 0]]);\n newBlock._string_content = '';\n this.tip.appendChild(newBlock);\n this.tip = newBlock;\n return newBlock;\n};\n\n// Parse a list marker and return data on the marker (type,\n// start, delimiter, bullet character, padding) or null.\nvar parseListMarker = function(parser, container) {\n var rest = parser.currentLine.slice(parser.nextNonspace);\n var match;\n var nextc;\n var spacesStartCol;\n var spacesStartOffset;\n var data = { type: null,\n tight: true, // lists are tight by default\n bulletChar: null,\n start: null,\n delimiter: null,\n padding: null,\n markerOffset: parser.indent };\n if ((match = rest.match(reBulletListMarker))) {\n data.type = 'bullet';\n data.bulletChar = match[0][0];\n\n } else if ((match = rest.match(reOrderedListMarker)) &&\n (container.type !== 'paragraph' ||\n match[1] === '1')) {\n data.type = 'ordered';\n data.start = parseInt(match[1]);\n data.delimiter = match[2];\n } else {\n return null;\n }\n // make sure we have spaces after\n nextc = peek(parser.currentLine, parser.nextNonspace + match[0].length);\n if (!(nextc === -1 || nextc === C_TAB || nextc === C_SPACE)) {\n return null;\n }\n\n // if it interrupts paragraph, make sure first line isn't blank\n if (container.type === 'paragraph' && !parser.currentLine.slice(parser.nextNonspace + match[0].length).match(reNonSpace)) {\n return null;\n }\n\n // we've got a match! advance offset and calculate padding\n parser.advanceNextNonspace(); // to start of marker\n parser.advanceOffset(match[0].length, true); // to end of marker\n spacesStartCol = parser.column;\n spacesStartOffset = parser.offset;\n do {\n parser.advanceOffset(1, true);\n nextc = peek(parser.currentLine, parser.offset);\n } while (parser.column - spacesStartCol < 5 &&\n isSpaceOrTab(nextc));\n var blank_item = peek(parser.currentLine, parser.offset) === -1;\n var spaces_after_marker = parser.column - spacesStartCol;\n if (spaces_after_marker >= 5 ||\n spaces_after_marker < 1 ||\n blank_item) {\n data.padding = match[0].length + 1;\n parser.column = spacesStartCol;\n parser.offset = spacesStartOffset;\n if (isSpaceOrTab(peek(parser.currentLine, parser.offset))) {\n parser.advanceOffset(1, true);\n }\n } else {\n data.padding = match[0].length + spaces_after_marker;\n }\n return data;\n};\n\n// Returns true if the two list items are of the same type,\n// with the same delimiter and bullet character. This is used\n// in agglomerating list items into lists.\nvar listsMatch = function(list_data, item_data) {\n return (list_data.type === item_data.type &&\n list_data.delimiter === item_data.delimiter &&\n list_data.bulletChar === item_data.bulletChar);\n};\n\n// Finalize and close any unmatched blocks.\nvar closeUnmatchedBlocks = function() {\n if (!this.allClosed) {\n // finalize any blocks not matched\n while (this.oldtip !== this.lastMatchedContainer) {\n var parent = this.oldtip._parent;\n this.finalize(this.oldtip, this.lineNumber - 1);\n this.oldtip = parent;\n }\n this.allClosed = true;\n }\n};\n\n// 'finalize' is run when the block is closed.\n// 'continue' is run to check whether the block is continuing\n// at a certain line and offset (e.g. whether a block quote\n// contains a `>`. It returns 0 for matched, 1 for not matched,\n// and 2 for \"we've dealt with this line completely, go to next.\"\nvar blocks = {\n document: {\n continue: function() { return 0; },\n finalize: function() { return; },\n canContain: function(t) { return (t !== 'item'); },\n acceptsLines: false\n },\n list: {\n continue: function() { return 0; },\n finalize: function(parser, block) {\n var item = block._firstChild;\n while (item) {\n // check for non-final list item ending with blank line:\n if (endsWithBlankLine(item) && item._next) {\n block._listData.tight = false;\n break;\n }\n // recurse into children of list item, to see if there are\n // spaces between any of them:\n var subitem = item._firstChild;\n while (subitem) {\n if (endsWithBlankLine(subitem) &&\n (item._next || subitem._next)) {\n block._listData.tight = false;\n break;\n }\n subitem = subitem._next;\n }\n item = item._next;\n }\n },\n canContain: function(t) { return (t === 'item'); },\n acceptsLines: false\n },\n block_quote: {\n continue: function(parser) {\n var ln = parser.currentLine;\n if (!parser.indented &&\n peek(ln, parser.nextNonspace) === C_GREATERTHAN) {\n parser.advanceNextNonspace();\n parser.advanceOffset(1, false);\n if (isSpaceOrTab(peek(ln, parser.offset))) {\n parser.advanceOffset(1, true);\n }\n } else {\n return 1;\n }\n return 0;\n },\n finalize: function() { return; },\n canContain: function(t) { return (t !== 'item'); },\n acceptsLines: false\n },\n item: {\n continue: function(parser, container) {\n if (parser.blank) {\n if (container._firstChild == null) {\n // Blank line after empty list item\n return 1;\n } else {\n parser.advanceNextNonspace();\n }\n } else if (parser.indent >=\n container._listData.markerOffset +\n container._listData.padding) {\n parser.advanceOffset(container._listData.markerOffset +\n container._listData.padding, true);\n } else {\n return 1;\n }\n return 0;\n },\n finalize: function() { return; },\n canContain: function(t) { return (t !== 'item'); },\n acceptsLines: false\n },\n heading: {\n continue: function() {\n // a heading can never container > 1 line, so fail to match:\n return 1;\n },\n finalize: function() { return; },\n canContain: function() { return false; },\n acceptsLines: false\n },\n thematic_break: {\n continue: function() {\n // a thematic break can never container > 1 line, so fail to match:\n return 1;\n },\n finalize: function() { return; },\n canContain: function() { return false; },\n acceptsLines: false\n },\n code_block: {\n continue: function(parser, container) {\n var ln = parser.currentLine;\n var indent = parser.indent;\n if (container._isFenced) { // fenced\n var match = (indent <= 3 &&\n ln.charAt(parser.nextNonspace) === container._fenceChar &&\n ln.slice(parser.nextNonspace).match(reClosingCodeFence));\n if (match && match[0].length >= container._fenceLength) {\n // closing fence - we're at end of line, so we can return\n parser.finalize(container, parser.lineNumber);\n return 2;\n } else {\n // skip optional spaces of fence offset\n var i = container._fenceOffset;\n while (i > 0 && isSpaceOrTab(peek(ln, parser.offset))) {\n parser.advanceOffset(1, true);\n i--;\n }\n }\n } else { // indented\n if (indent >= CODE_INDENT) {\n parser.advanceOffset(CODE_INDENT, true);\n } else if (parser.blank) {\n parser.advanceNextNonspace();\n } else {\n return 1;\n }\n }\n return 0;\n },\n finalize: function(parser, block) {\n if (block._isFenced) { // fenced\n // first line becomes info string\n var content = block._string_content;\n var newlinePos = content.indexOf('\\n');\n var firstLine = content.slice(0, newlinePos);\n var rest = content.slice(newlinePos + 1);\n block.info = unescapeString(firstLine.trim());\n block._literal = rest;\n } else { // indented\n block._literal = block._string_content.replace(/(\\n *)+$/, '\\n');\n }\n block._string_content = null; // allow GC\n },\n canContain: function() { return false; },\n acceptsLines: true\n },\n html_block: {\n continue: function(parser, container) {\n return ((parser.blank &&\n (container._htmlBlockType === 6 ||\n container._htmlBlockType === 7)) ? 1 : 0);\n },\n finalize: function(parser, block) {\n block._literal = block._string_content.replace(/(\\n *)+$/, '');\n block._string_content = null; // allow GC\n },\n canContain: function() { return false; },\n acceptsLines: true\n },\n paragraph: {\n continue: function(parser) {\n return (parser.blank ? 1 : 0);\n },\n finalize: function(parser, block) {\n var pos;\n var hasReferenceDefs = false;\n\n // try parsing the beginning as link reference definitions:\n while (peek(block._string_content, 0) === C_OPEN_BRACKET &&\n (pos =\n parser.inlineParser.parseReference(block._string_content,\n parser.refmap))) {\n block._string_content = block._string_content.slice(pos);\n hasReferenceDefs = true;\n }\n if (hasReferenceDefs && isBlank(block._string_content)) {\n block.unlink();\n }\n },\n canContain: function() { return false; },\n acceptsLines: true\n }\n};\n\n// block start functions. Return values:\n// 0 = no match\n// 1 = matched container, keep going\n// 2 = matched leaf, no more block starts\nvar blockStarts = [\n // block quote\n function(parser) {\n if (!parser.indented &&\n peek(parser.currentLine, parser.nextNonspace) === C_GREATERTHAN) {\n parser.advanceNextNonspace();\n parser.advanceOffset(1, false);\n // optional following space\n if (isSpaceOrTab(peek(parser.currentLine, parser.offset))) {\n parser.advanceOffset(1, true);\n }\n parser.closeUnmatchedBlocks();\n parser.addChild('block_quote', parser.nextNonspace);\n return 1;\n } else {\n return 0;\n }\n },\n\n // ATX heading\n function(parser) {\n var match;\n if (!parser.indented &&\n (match = parser.currentLine.slice(parser.nextNonspace).match(reATXHeadingMarker))) {\n parser.advanceNextNonspace();\n parser.advanceOffset(match[0].length, false);\n parser.closeUnmatchedBlocks();\n var container = parser.addChild('heading', parser.nextNonspace);\n container.level = match[0].trim().length; // number of #s\n // remove trailing ###s:\n container._string_content =\n parser.currentLine.slice(parser.offset).replace(/^[ \\t]*#+[ \\t]*$/, '').replace(/[ \\t]+#+[ \\t]*$/, '');\n parser.advanceOffset(parser.currentLine.length - parser.offset);\n return 2;\n } else {\n return 0;\n }\n },\n\n // Fenced code block\n function(parser) {\n var match;\n if (!parser.indented &&\n (match = parser.currentLine.slice(parser.nextNonspace).match(reCodeFence))) {\n var fenceLength = match[0].length;\n parser.closeUnmatchedBlocks();\n var container = parser.addChild('code_block', parser.nextNonspace);\n container._isFenced = true;\n container._fenceLength = fenceLength;\n container._fenceChar = match[0][0];\n container._fenceOffset = parser.indent;\n parser.advanceNextNonspace();\n parser.advanceOffset(fenceLength, false);\n return 2;\n } else {\n return 0;\n }\n },\n\n // HTML block\n function(parser, container) {\n if (!parser.indented &&\n peek(parser.currentLine, parser.nextNonspace) === C_LESSTHAN) {\n var s = parser.currentLine.slice(parser.nextNonspace);\n var blockType;\n\n for (blockType = 1; blockType <= 7; blockType++) {\n if (reHtmlBlockOpen[blockType].test(s) &&\n (blockType < 7 ||\n container.type !== 'paragraph')) {\n parser.closeUnmatchedBlocks();\n // We don't adjust parser.offset;\n // spaces are part of the HTML block:\n var b = parser.addChild('html_block',\n parser.offset);\n b._htmlBlockType = blockType;\n return 2;\n }\n }\n }\n\n return 0;\n\n },\n\n // Setext heading\n function(parser, container) {\n var match;\n if (!parser.indented &&\n container.type === 'paragraph' &&\n ((match = parser.currentLine.slice(parser.nextNonspace).match(reSetextHeadingLine)))) {\n parser.closeUnmatchedBlocks();\n var heading = new Node('heading', container.sourcepos);\n heading.level = match[0][0] === '=' ? 1 : 2;\n heading._string_content = container._string_content;\n container.insertAfter(heading);\n container.unlink();\n parser.tip = heading;\n parser.advanceOffset(parser.currentLine.length - parser.offset, false);\n return 2;\n } else {\n return 0;\n }\n },\n\n // thematic break\n function(parser) {\n if (!parser.indented &&\n reThematicBreak.test(parser.currentLine.slice(parser.nextNonspace))) {\n parser.closeUnmatchedBlocks();\n parser.addChild('thematic_break', parser.nextNonspace);\n parser.advanceOffset(parser.currentLine.length - parser.offset, false);\n return 2;\n } else {\n return 0;\n }\n },\n\n // list item\n function(parser, container) {\n var data;\n\n if ((!parser.indented || container.type === 'list')\n && (data = parseListMarker(parser, container))) {\n parser.closeUnmatchedBlocks();\n\n // add the list if needed\n if (parser.tip.type !== 'list' ||\n !(listsMatch(container._listData, data))) {\n container = parser.addChild('list', parser.nextNonspace);\n container._listData = data;\n }\n\n // add the list item\n container = parser.addChild('item', parser.nextNonspace);\n container._listData = data;\n return 1;\n } else {\n return 0;\n }\n },\n\n // indented code block\n function(parser) {\n if (parser.indented &&\n parser.tip.type !== 'paragraph' &&\n !parser.blank) {\n // indented code\n parser.advanceOffset(CODE_INDENT, true);\n parser.closeUnmatchedBlocks();\n parser.addChild('code_block', parser.offset);\n return 2;\n } else {\n return 0;\n }\n }\n\n];\n\nvar advanceOffset = function(count, columns) {\n var currentLine = this.currentLine;\n var charsToTab, charsToAdvance;\n var c;\n while (count > 0 && (c = currentLine[this.offset])) {\n if (c === '\\t') {\n charsToTab = 4 - (this.column % 4);\n if (columns) {\n this.partiallyConsumedTab = charsToTab > count;\n charsToAdvance = charsToTab > count ? count : charsToTab;\n this.column += charsToAdvance;\n this.offset += this.partiallyConsumedTab ? 0 : 1;\n count -= charsToAdvance;\n } else {\n this.partiallyConsumedTab = false;\n this.column += charsToTab;\n this.offset += 1;\n count -= 1;\n }\n } else {\n this.partiallyConsumedTab = false;\n this.offset += 1;\n this.column += 1; // assume ascii; block starts are ascii\n count -= 1;\n }\n }\n};\n\nvar advanceNextNonspace = function() {\n this.offset = this.nextNonspace;\n this.column = this.nextNonspaceColumn;\n this.partiallyConsumedTab = false;\n};\n\nvar findNextNonspace = function() {\n var currentLine = this.currentLine;\n var i = this.offset;\n var cols = this.column;\n var c;\n\n while ((c = currentLine.charAt(i)) !== '') {\n if (c === ' ') {\n i++;\n cols++;\n } else if (c === '\\t') {\n i++;\n cols += (4 - (cols % 4));\n } else {\n break;\n }\n }\n this.blank = (c === '\\n' || c === '\\r' || c === '');\n this.nextNonspace = i;\n this.nextNonspaceColumn = cols;\n this.indent = this.nextNonspaceColumn - this.column;\n this.indented = this.indent >= CODE_INDENT;\n};\n\n// Analyze a line of text and update the document appropriately.\n// We parse markdown text by calling this on each line of input,\n// then finalizing the document.\nvar incorporateLine = function(ln) {\n var all_matched = true;\n var t;\n\n var container = this.doc;\n this.oldtip = this.tip;\n this.offset = 0;\n this.column = 0;\n this.blank = false;\n this.partiallyConsumedTab = false;\n this.lineNumber += 1;\n\n // replace NUL characters for security\n if (ln.indexOf('\\u0000') !== -1) {\n ln = ln.replace(/\\0/g, '\\uFFFD');\n }\n\n this.currentLine = ln;\n\n // For each containing block, try to parse the associated line start.\n // Bail out on failure: container will point to the last matching block.\n // Set all_matched to false if not all containers match.\n var lastChild;\n while ((lastChild = container._lastChild) && lastChild._open) {\n container = lastChild;\n\n this.findNextNonspace();\n\n switch (this.blocks[container.type].continue(this, container)) {\n case 0: // we've matched, keep going\n break;\n case 1: // we've failed to match a block\n all_matched = false;\n break;\n case 2: // we've hit end of line for fenced code close and can return\n this.lastLineLength = ln.length;\n return;\n default:\n throw 'continue returned illegal value, must be 0, 1, or 2';\n }\n if (!all_matched) {\n container = container._parent; // back up to last matching block\n break;\n }\n }\n\n this.allClosed = (container === this.oldtip);\n this.lastMatchedContainer = container;\n\n var matchedLeaf = container.type !== 'paragraph' &&\n blocks[container.type].acceptsLines;\n var starts = this.blockStarts;\n var startsLen = starts.length;\n // Unless last matched container is a code block, try new container starts,\n // adding children to the last matched container:\n while (!matchedLeaf) {\n\n this.findNextNonspace();\n\n // this is a little performance optimization:\n if (!this.indented &&\n !reMaybeSpecial.test(ln.slice(this.nextNonspace))) {\n this.advanceNextNonspace();\n break;\n }\n\n var i = 0;\n while (i < startsLen) {\n var res = starts[i](this, container);\n if (res === 1) {\n container = this.tip;\n break;\n } else if (res === 2) {\n container = this.tip;\n matchedLeaf = true;\n break;\n } else {\n i++;\n }\n }\n\n if (i === startsLen) { // nothing matched\n this.advanceNextNonspace();\n break;\n }\n }\n\n // What remains at the offset is a text line. Add the text to the\n // appropriate container.\n\n // First check for a lazy paragraph continuation:\n if (!this.allClosed && !this.blank &&\n this.tip.type === 'paragraph') {\n // lazy paragraph continuation\n this.addLine();\n\n } else { // not a lazy continuation\n\n // finalize any blocks not matched\n this.closeUnmatchedBlocks();\n if (this.blank && container.lastChild) {\n container.lastChild._lastLineBlank = true;\n }\n\n t = container.type;\n\n // Block quote lines are never blank as they start with >\n // and we don't count blanks in fenced code for purposes of tight/loose\n // lists or breaking out of lists. We also don't set _lastLineBlank\n // on an empty list item, or if we just closed a fenced block.\n var lastLineBlank = this.blank &&\n !(t === 'block_quote' ||\n (t === 'code_block' && container._isFenced) ||\n (t === 'item' &&\n !container._firstChild &&\n container.sourcepos[0][0] === this.lineNumber));\n\n // propagate lastLineBlank up through parents:\n var cont = container;\n while (cont) {\n cont._lastLineBlank = lastLineBlank;\n cont = cont._parent;\n }\n\n if (this.blocks[t].acceptsLines) {\n this.addLine();\n // if HtmlBlock, check for end condition\n if (t === 'html_block' &&\n container._htmlBlockType >= 1 &&\n container._htmlBlockType <= 5 &&\n reHtmlBlockClose[container._htmlBlockType].test(this.currentLine.slice(this.offset))) {\n this.finalize(container, this.lineNumber);\n }\n\n } else if (this.offset < ln.length && !this.blank) {\n // create paragraph container for line\n container = this.addChild('paragraph', this.offset);\n this.advanceNextNonspace();\n this.addLine();\n }\n }\n this.lastLineLength = ln.length;\n};\n\n// Finalize a block. Close it and do any necessary postprocessing,\n// e.g. creating string_content from strings, setting the 'tight'\n// or 'loose' status of a list, and parsing the beginnings\n// of paragraphs for reference definitions. Reset the tip to the\n// parent of the closed block.\nvar finalize = function(block, lineNumber) {\n var above = block._parent;\n block._open = false;\n block.sourcepos[1] = [lineNumber, this.lastLineLength];\n\n this.blocks[block.type].finalize(this, block);\n\n this.tip = above;\n};\n\n// Walk through a block & children recursively, parsing string content\n// into inline content where appropriate.\nvar processInlines = function(block) {\n var node, event, t;\n var walker = block.walker();\n this.inlineParser.refmap = this.refmap;\n this.inlineParser.options = this.options;\n while ((event = walker.next())) {\n node = event.node;\n t = node.type;\n if (!event.entering && (t === 'paragraph' || t === 'heading')) {\n this.inlineParser.parse(node);\n }\n }\n};\n\nvar Document = function() {\n var doc = new Node('document', [[1, 1], [0, 0]]);\n return doc;\n};\n\n// The main parsing function. Returns a parsed document AST.\nvar parse = function(input) {\n this.doc = new Document();\n this.tip = this.doc;\n this.refmap = {};\n this.lineNumber = 0;\n this.lastLineLength = 0;\n this.offset = 0;\n this.column = 0;\n this.lastMatchedContainer = this.doc;\n this.currentLine = \"\";\n if (this.options.time) { console.time(\"preparing input\"); }\n var lines = input.split(reLineEnding);\n var len = lines.length;\n if (input.charCodeAt(input.length - 1) === C_NEWLINE) {\n // ignore last blank line created by final newline\n len -= 1;\n }\n if (this.options.time) { console.timeEnd(\"preparing input\"); }\n if (this.options.time) { console.time(\"block parsing\"); }\n for (var i = 0; i < len; i++) {\n this.incorporateLine(lines[i]);\n }\n while (this.tip) {\n this.finalize(this.tip, len);\n }\n if (this.options.time) { console.timeEnd(\"block parsing\"); }\n if (this.options.time) { console.time(\"inline parsing\"); }\n this.processInlines(this.doc);\n if (this.options.time) { console.timeEnd(\"inline parsing\"); }\n return this.doc;\n};\n\n\n// The Parser object.\nfunction Parser(options){\n return {\n doc: new Document(),\n blocks: blocks,\n blockStarts: blockStarts,\n tip: this.doc,\n oldtip: this.doc,\n currentLine: \"\",\n lineNumber: 0,\n offset: 0,\n column: 0,\n nextNonspace: 0,\n nextNonspaceColumn: 0,\n indent: 0,\n indented: false,\n blank: false,\n partiallyConsumedTab: false,\n allClosed: true,\n lastMatchedContainer: this.doc,\n refmap: {},\n lastLineLength: 0,\n inlineParser: new InlineParser(options),\n findNextNonspace: findNextNonspace,\n advanceOffset: advanceOffset,\n advanceNextNonspace: advanceNextNonspace,\n addLine: addLine,\n addChild: addChild,\n incorporateLine: incorporateLine,\n finalize: finalize,\n processInlines: processInlines,\n closeUnmatchedBlocks: closeUnmatchedBlocks,\n parse: parse,\n options: options || {}\n };\n}\n\nmodule.exports = Parser;\n","\n'use strict';\n\n\nvar encodeCache = {};\n\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache(exclude) {\n var i, ch, cache = encodeCache[exclude];\n if (cache) { return cache; }\n\n cache = encodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache;\n}\n\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode(string, exclude, keepEscaped) {\n var i, l, code, nextCode, cache,\n result = '';\n\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode.defaultChars;\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n\n cache = getEncodeCache(exclude);\n\n for (i = 0, l = string.length; i < l; i++) {\n code = string.charCodeAt(i);\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n\n if (code < 128) {\n result += cache[code];\n continue;\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n result += '%EF%BF%BD';\n continue;\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result;\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\n\n\nmodule.exports = encode;\n","\n'use strict';\n\n\n/* eslint-disable no-bitwise */\n\nvar decodeCache = {};\n\nfunction getDecodeCache(exclude) {\n var i, ch, cache = decodeCache[exclude];\n if (cache) { return cache; }\n\n cache = decodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n cache.push(ch);\n }\n\n for (i = 0; i < exclude.length; i++) {\n ch = exclude.charCodeAt(i);\n cache[ch] = '%' + ('0' + ch.toString(16).toUpperCase()).slice(-2);\n }\n\n return cache;\n}\n\n\n// Decode percent-encoded string.\n//\nfunction decode(string, exclude) {\n var cache;\n\n if (typeof exclude !== 'string') {\n exclude = decode.defaultChars;\n }\n\n cache = getDecodeCache(exclude);\n\n return string.replace(/(%[a-f0-9]{2})+/gi, function(seq) {\n var i, l, b1, b2, b3, b4, chr,\n result = '';\n\n for (i = 0, l = seq.length; i < l; i += 3) {\n b1 = parseInt(seq.slice(i + 1, i + 3), 16);\n\n if (b1 < 0x80) {\n result += cache[b1];\n continue;\n }\n\n if ((b1 & 0xE0) === 0xC0 && (i + 3 < l)) {\n // 110xxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n\n if ((b2 & 0xC0) === 0x80) {\n chr = ((b1 << 6) & 0x7C0) | (b2 & 0x3F);\n\n if (chr < 0x80) {\n result += '\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 3;\n continue;\n }\n }\n\n if ((b1 & 0xF0) === 0xE0 && (i + 6 < l)) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n chr = ((b1 << 12) & 0xF000) | ((b2 << 6) & 0xFC0) | (b3 & 0x3F);\n\n if (chr < 0x800 || (chr >= 0xD800 && chr <= 0xDFFF)) {\n result += '\\ufffd\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 6;\n continue;\n }\n }\n\n if ((b1 & 0xF8) === 0xF0 && (i + 9 < l)) {\n // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n b4 = parseInt(seq.slice(i + 10, i + 12), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {\n chr = ((b1 << 18) & 0x1C0000) | ((b2 << 12) & 0x3F000) | ((b3 << 6) & 0xFC0) | (b4 & 0x3F);\n\n if (chr < 0x10000 || chr > 0x10FFFF) {\n result += '\\ufffd\\ufffd\\ufffd\\ufffd';\n } else {\n chr -= 0x10000;\n result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF));\n }\n\n i += 9;\n continue;\n }\n }\n\n result += '\\ufffd';\n }\n\n return result;\n });\n}\n\n\ndecode.defaultChars = ';/?:@&=+$,#';\ndecode.componentChars = '';\n\n\nmodule.exports = decode;\n","\"use strict\";\n\nvar Node = require('./node');\nvar common = require('./common');\nvar normalizeReference = require('./normalize-reference');\n\nvar normalizeURI = common.normalizeURI;\nvar unescapeString = common.unescapeString;\nvar fromCodePoint = require('./from-code-point.js');\nvar decodeHTML = require('entities').decodeHTML;\nrequire('string.prototype.repeat'); // Polyfill for String.prototype.repeat\n\n// Constants for character codes:\n\nvar C_NEWLINE = 10;\nvar C_ASTERISK = 42;\nvar C_UNDERSCORE = 95;\nvar C_BACKTICK = 96;\nvar C_OPEN_BRACKET = 91;\nvar C_CLOSE_BRACKET = 93;\nvar C_LESSTHAN = 60;\nvar C_BANG = 33;\nvar C_BACKSLASH = 92;\nvar C_AMPERSAND = 38;\nvar C_OPEN_PAREN = 40;\nvar C_CLOSE_PAREN = 41;\nvar C_COLON = 58;\nvar C_SINGLEQUOTE = 39;\nvar C_DOUBLEQUOTE = 34;\n\n// Some regexps used in inline parser:\n\nvar ESCAPABLE = common.ESCAPABLE;\nvar ESCAPED_CHAR = '\\\\\\\\' + ESCAPABLE;\n\nvar ENTITY = common.ENTITY;\nvar reHtmlTag = common.reHtmlTag;\n\nvar rePunctuation = new RegExp(/[!\"#$%&'()*+,\\-./:;<=>?@\\[\\]^_`{|}~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E42\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC9\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDF3C-\\uDF3E]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]/);\n\nvar reLinkTitle = new RegExp(\n '^(?:\"(' + ESCAPED_CHAR + '|[^\"\\\\x00])*\"' +\n '|' +\n '\\'(' + ESCAPED_CHAR + '|[^\\'\\\\x00])*\\'' +\n '|' +\n '\\\\((' + ESCAPED_CHAR + '|[^)\\\\x00])*\\\\))');\n\nvar reLinkDestinationBraces = new RegExp(\n '^(?:[<](?:[^ <>\\\\t\\\\n\\\\\\\\\\\\x00]' + '|' + ESCAPED_CHAR + '|' + '\\\\\\\\)*[>])');\n\nvar reEscapable = new RegExp('^' + ESCAPABLE);\n\nvar reEntityHere = new RegExp('^' + ENTITY, 'i');\n\nvar reTicks = /`+/;\n\nvar reTicksHere = /^`+/;\n\nvar reEllipses = /\\.\\.\\./g;\n\nvar reDash = /--+/g;\n\nvar reEmailAutolink = /^<([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/;\n\nvar reAutolink = /^<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\\x00-\\x20]*>/i;\n\nvar reSpnl = /^ *(?:\\n *)?/;\n\nvar reWhitespaceChar = /^[ \\t\\n\\x0b\\x0c\\x0d]/;\n\nvar reWhitespace = /[ \\t\\n\\x0b\\x0c\\x0d]+/g;\n\nvar reUnicodeWhitespaceChar = /^\\s/;\n\nvar reFinalSpace = / *$/;\n\nvar reInitialSpace = /^ */;\n\nvar reSpaceAtEndOfLine = /^ *(?:\\n|$)/;\n\nvar reLinkLabel = new RegExp('^\\\\[(?:[^\\\\\\\\\\\\[\\\\]]|' + ESCAPED_CHAR +\n '|\\\\\\\\){0,1000}\\\\]');\n\n// Matches a string of non-special characters.\nvar reMain = /^[^\\n`\\[\\]\\\\!<&*_'\"]+/m;\n\nvar text = function(s) {\n var node = new Node('text');\n node._literal = s;\n return node;\n};\n\n// INLINE PARSER\n\n// These are methods of an InlineParser object, defined below.\n// An InlineParser keeps track of a subject (a string to be\n// parsed) and a position in that subject.\n\n// If re matches at current position in the subject, advance\n// position in subject and return the match; otherwise return null.\nvar match = function(re) {\n var m = re.exec(this.subject.slice(this.pos));\n if (m === null) {\n return null;\n } else {\n this.pos += m.index + m[0].length;\n return m[0];\n }\n};\n\n// Returns the code for the character at the current subject position, or -1\n// there are no more characters.\nvar peek = function() {\n if (this.pos < this.subject.length) {\n return this.subject.charCodeAt(this.pos);\n } else {\n return -1;\n }\n};\n\n// Parse zero or more space characters, including at most one newline\nvar spnl = function() {\n this.match(reSpnl);\n return true;\n};\n\n// All of the parsers below try to match something at the current position\n// in the subject. If they succeed in matching anything, they\n// return the inline matched, advancing the subject.\n\n// Attempt to parse backticks, adding either a backtick code span or a\n// literal sequence of backticks.\nvar parseBackticks = function(block) {\n var ticks = this.match(reTicksHere);\n if (ticks === null) {\n return false;\n }\n var afterOpenTicks = this.pos;\n var matched;\n var node;\n while ((matched = this.match(reTicks)) !== null) {\n if (matched === ticks) {\n node = new Node('code');\n node._literal = this.subject.slice(afterOpenTicks,\n this.pos - ticks.length)\n .trim().replace(reWhitespace, ' ');\n block.appendChild(node);\n return true;\n }\n }\n // If we got here, we didn't match a closing backtick sequence.\n this.pos = afterOpenTicks;\n block.appendChild(text(ticks));\n return true;\n};\n\n// Parse a backslash-escaped special character, adding either the escaped\n// character, a hard line break (if the backslash is followed by a newline),\n// or a literal backslash to the block's children. Assumes current character\n// is a backslash.\nvar parseBackslash = function(block) {\n var subj = this.subject;\n var node;\n this.pos += 1;\n if (this.peek() === C_NEWLINE) {\n this.pos += 1;\n node = new Node('linebreak');\n block.appendChild(node);\n } else if (reEscapable.test(subj.charAt(this.pos))) {\n block.appendChild(text(subj.charAt(this.pos)));\n this.pos += 1;\n } else {\n block.appendChild(text('\\\\'));\n }\n return true;\n};\n\n// Attempt to parse an autolink (URL or email in pointy brackets).\nvar parseAutolink = function(block) {\n var m;\n var dest;\n var node;\n if ((m = this.match(reEmailAutolink))) {\n dest = m.slice(1, m.length - 1);\n node = new Node('link');\n node._destination = normalizeURI('mailto:' + dest);\n node._title = '';\n node.appendChild(text(dest));\n block.appendChild(node);\n return true;\n } else if ((m = this.match(reAutolink))) {\n dest = m.slice(1, m.length - 1);\n node = new Node('link');\n node._destination = normalizeURI(dest);\n node._title = '';\n node.appendChild(text(dest));\n block.appendChild(node);\n return true;\n } else {\n return false;\n }\n};\n\n// Attempt to parse a raw HTML tag.\nvar parseHtmlTag = function(block) {\n var m = this.match(reHtmlTag);\n if (m === null) {\n return false;\n } else {\n var node = new Node('html_inline');\n node._literal = m;\n block.appendChild(node);\n return true;\n }\n};\n\n// Scan a sequence of characters with code cc, and return information about\n// the number of delimiters and whether they are positioned such that\n// they can open and/or close emphasis or strong emphasis. A utility\n// function for strong/emph parsing.\nvar scanDelims = function(cc) {\n var numdelims = 0;\n var char_before, char_after, cc_after;\n var startpos = this.pos;\n var left_flanking, right_flanking, can_open, can_close;\n var after_is_whitespace, after_is_punctuation, before_is_whitespace, before_is_punctuation;\n\n if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {\n numdelims++;\n this.pos++;\n } else {\n while (this.peek() === cc) {\n numdelims++;\n this.pos++;\n }\n }\n\n if (numdelims === 0) {\n return null;\n }\n\n char_before = startpos === 0 ? '\\n' : this.subject.charAt(startpos - 1);\n\n cc_after = this.peek();\n if (cc_after === -1) {\n char_after = '\\n';\n } else {\n char_after = fromCodePoint(cc_after);\n }\n\n after_is_whitespace = reUnicodeWhitespaceChar.test(char_after);\n after_is_punctuation = rePunctuation.test(char_after);\n before_is_whitespace = reUnicodeWhitespaceChar.test(char_before);\n before_is_punctuation = rePunctuation.test(char_before);\n\n left_flanking = !after_is_whitespace &&\n (!after_is_punctuation || before_is_whitespace || before_is_punctuation);\n right_flanking = !before_is_whitespace &&\n (!before_is_punctuation || after_is_whitespace || after_is_punctuation);\n if (cc === C_UNDERSCORE) {\n can_open = left_flanking &&\n (!right_flanking || before_is_punctuation);\n can_close = right_flanking &&\n (!left_flanking || after_is_punctuation);\n } else if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {\n can_open = left_flanking && !right_flanking;\n can_close = right_flanking;\n } else {\n can_open = left_flanking;\n can_close = right_flanking;\n }\n this.pos = startpos;\n return { numdelims: numdelims,\n can_open: can_open,\n can_close: can_close };\n};\n\n// Handle a delimiter marker for emphasis or a quote.\nvar handleDelim = function(cc, block) {\n var res = this.scanDelims(cc);\n if (!res) {\n return false;\n }\n var numdelims = res.numdelims;\n var startpos = this.pos;\n var contents;\n\n this.pos += numdelims;\n if (cc === C_SINGLEQUOTE) {\n contents = \"\\u2019\";\n } else if (cc === C_DOUBLEQUOTE) {\n contents = \"\\u201C\";\n } else {\n contents = this.subject.slice(startpos, this.pos);\n }\n var node = text(contents);\n block.appendChild(node);\n\n // Add entry to stack for this opener\n this.delimiters = { cc: cc,\n numdelims: numdelims,\n origdelims: numdelims,\n node: node,\n previous: this.delimiters,\n next: null,\n can_open: res.can_open,\n can_close: res.can_close };\n if (this.delimiters.previous !== null) {\n this.delimiters.previous.next = this.delimiters;\n }\n\n return true;\n\n};\n\nvar removeDelimiter = function(delim) {\n if (delim.previous !== null) {\n delim.previous.next = delim.next;\n }\n if (delim.next === null) {\n // top of stack\n this.delimiters = delim.previous;\n } else {\n delim.next.previous = delim.previous;\n }\n};\n\nvar removeDelimitersBetween = function(bottom, top) {\n if (bottom.next !== top) {\n bottom.next = top;\n top.previous = bottom;\n }\n};\n\nvar processEmphasis = function(stack_bottom) {\n var opener, closer, old_closer;\n var opener_inl, closer_inl;\n var tempstack;\n var use_delims;\n var tmp, next;\n var opener_found;\n var openers_bottom = [];\n var odd_match = false;\n\n openers_bottom[C_UNDERSCORE] = stack_bottom;\n openers_bottom[C_ASTERISK] = stack_bottom;\n openers_bottom[C_SINGLEQUOTE] = stack_bottom;\n openers_bottom[C_DOUBLEQUOTE] = stack_bottom;\n\n // find first closer above stack_bottom:\n closer = this.delimiters;\n while (closer !== null && closer.previous !== stack_bottom) {\n closer = closer.previous;\n }\n // move forward, looking for closers, and handling each\n while (closer !== null) {\n var closercc = closer.cc;\n if (!closer.can_close) {\n closer = closer.next;\n } else {\n // found emphasis closer. now look back for first matching opener:\n opener = closer.previous;\n opener_found = false;\n while (opener !== null && opener !== stack_bottom &&\n opener !== openers_bottom[closercc]) {\n odd_match = (closer.can_open || opener.can_close) &&\n (opener.origdelims + closer.origdelims) % 3 === 0;\n if (opener.cc === closer.cc && opener.can_open && !odd_match) {\n opener_found = true;\n break;\n }\n opener = opener.previous;\n }\n old_closer = closer;\n\n if (closercc === C_ASTERISK || closercc === C_UNDERSCORE) {\n if (!opener_found) {\n closer = closer.next;\n } else {\n // calculate actual number of delimiters used from closer\n use_delims =\n (closer.numdelims >= 2 && opener.numdelims >= 2) ? 2 : 1;\n\n opener_inl = opener.node;\n closer_inl = closer.node;\n\n // remove used delimiters from stack elts and inlines\n opener.numdelims -= use_delims;\n closer.numdelims -= use_delims;\n opener_inl._literal =\n opener_inl._literal.slice(0,\n opener_inl._literal.length - use_delims);\n closer_inl._literal =\n closer_inl._literal.slice(0,\n closer_inl._literal.length - use_delims);\n\n // build contents for new emph element\n var emph = new Node(use_delims === 1 ? 'emph' : 'strong');\n\n tmp = opener_inl._next;\n while (tmp && tmp !== closer_inl) {\n next = tmp._next;\n tmp.unlink();\n emph.appendChild(tmp);\n tmp = next;\n }\n\n opener_inl.insertAfter(emph);\n\n // remove elts between opener and closer in delimiters stack\n removeDelimitersBetween(opener, closer);\n\n // if opener has 0 delims, remove it and the inline\n if (opener.numdelims === 0) {\n opener_inl.unlink();\n this.removeDelimiter(opener);\n }\n\n if (closer.numdelims === 0) {\n closer_inl.unlink();\n tempstack = closer.next;\n this.removeDelimiter(closer);\n closer = tempstack;\n }\n\n }\n\n } else if (closercc === C_SINGLEQUOTE) {\n closer.node._literal = \"\\u2019\";\n if (opener_found) {\n opener.node._literal = \"\\u2018\";\n }\n closer = closer.next;\n\n } else if (closercc === C_DOUBLEQUOTE) {\n closer.node._literal = \"\\u201D\";\n if (opener_found) {\n opener.node.literal = \"\\u201C\";\n }\n closer = closer.next;\n\n }\n if (!opener_found && !odd_match) {\n // Set lower bound for future searches for openers:\n // We don't do this with odd_match because a **\n // that doesn't match an earlier * might turn into\n // an opener, and the * might be matched by something\n // else.\n openers_bottom[closercc] = old_closer.previous;\n if (!old_closer.can_open) {\n // We can remove a closer that can't be an opener,\n // once we've seen there's no matching opener:\n this.removeDelimiter(old_closer);\n }\n }\n }\n\n }\n\n // remove all delimiters\n while (this.delimiters !== null && this.delimiters !== stack_bottom) {\n this.removeDelimiter(this.delimiters);\n }\n};\n\n// Attempt to parse link title (sans quotes), returning the string\n// or null if no match.\nvar parseLinkTitle = function() {\n var title = this.match(reLinkTitle);\n if (title === null) {\n return null;\n } else {\n // chop off quotes from title and unescape:\n return unescapeString(title.substr(1, title.length - 2));\n }\n};\n\n// Attempt to parse link destination, returning the string or\n// null if no match.\nvar parseLinkDestination = function() {\n var res = this.match(reLinkDestinationBraces);\n if (res === null) {\n // TODO handrolled parser; res should be null or the string\n var savepos = this.pos;\n var openparens = 0;\n var c;\n while ((c = this.peek()) !== -1) {\n if (c === C_BACKSLASH) {\n this.pos += 1;\n if (this.peek() !== -1) {\n this.pos += 1;\n }\n } else if (c === C_OPEN_PAREN) {\n this.pos += 1;\n openparens += 1;\n } else if (c === C_CLOSE_PAREN) {\n if (openparens < 1) {\n break;\n } else {\n this.pos += 1;\n openparens -= 1;\n }\n } else if (reWhitespaceChar.exec(fromCodePoint(c)) !== null) {\n break;\n } else {\n this.pos += 1;\n }\n }\n res = this.subject.substr(savepos, this.pos - savepos);\n return normalizeURI(unescapeString(res));\n } else { // chop off surrounding <..>:\n return normalizeURI(unescapeString(res.substr(1, res.length - 2)));\n }\n};\n\n// Attempt to parse a link label, returning number of characters parsed.\nvar parseLinkLabel = function() {\n var m = this.match(reLinkLabel);\n // Note: our regex will allow something of form [..\\];\n // we disallow it here rather than using lookahead in the regex:\n if (m === null || m.length > 1001 || /[^\\\\]\\\\\\]$/.exec(m)) {\n return 0;\n } else {\n return m.length;\n }\n};\n\n// Add open bracket to delimiter stack and add a text node to block's children.\nvar parseOpenBracket = function(block) {\n var startpos = this.pos;\n this.pos += 1;\n\n var node = text('[');\n block.appendChild(node);\n\n // Add entry to stack for this opener\n this.addBracket(node, startpos, false);\n return true;\n};\n\n// IF next character is [, and ! delimiter to delimiter stack and\n// add a text node to block's children. Otherwise just add a text node.\nvar parseBang = function(block) {\n var startpos = this.pos;\n this.pos += 1;\n if (this.peek() === C_OPEN_BRACKET) {\n this.pos += 1;\n\n var node = text('![');\n block.appendChild(node);\n\n // Add entry to stack for this opener\n this.addBracket(node, startpos + 1, true);\n } else {\n block.appendChild(text('!'));\n }\n return true;\n};\n\n// Try to match close bracket against an opening in the delimiter\n// stack. Add either a link or image, or a plain [ character,\n// to block's children. If there is a matching delimiter,\n// remove it from the delimiter stack.\nvar parseCloseBracket = function(block) {\n var startpos;\n var is_image;\n var dest;\n var title;\n var matched = false;\n var reflabel;\n var opener;\n\n this.pos += 1;\n startpos = this.pos;\n\n // get last [ or ![\n opener = this.brackets;\n\n if (opener === null) {\n // no matched opener, just return a literal\n block.appendChild(text(']'));\n return true;\n }\n\n if (!opener.active) {\n // no matched opener, just return a literal\n block.appendChild(text(']'));\n // take opener off brackets stack\n this.removeBracket();\n return true;\n }\n\n // If we got here, open is a potential opener\n is_image = opener.image;\n\n // Check to see if we have a link/image\n\n var savepos = this.pos;\n\n // Inline link?\n if (this.peek() === C_OPEN_PAREN) {\n this.pos++;\n if (this.spnl() &&\n ((dest = this.parseLinkDestination()) !== null) &&\n this.spnl() &&\n // make sure there's a space before the title:\n (reWhitespaceChar.test(this.subject.charAt(this.pos - 1)) &&\n (title = this.parseLinkTitle()) || true) &&\n this.spnl() &&\n this.peek() === C_CLOSE_PAREN) {\n this.pos += 1;\n matched = true;\n } else {\n this.pos = savepos;\n }\n }\n\n if (!matched) {\n\n // Next, see if there's a link label\n var beforelabel = this.pos;\n var n = this.parseLinkLabel();\n if (n > 2) {\n reflabel = this.subject.slice(beforelabel, beforelabel + n);\n } else if (!opener.bracketAfter) {\n // Empty or missing second label means to use the first label as the reference.\n // The reference must not contain a bracket. If we know there's a bracket, we don't even bother checking it.\n reflabel = this.subject.slice(opener.index, startpos);\n }\n if (n === 0) {\n // If shortcut reference link, rewind before spaces we skipped.\n this.pos = savepos;\n }\n\n if (reflabel) {\n // lookup rawlabel in refmap\n var link = this.refmap[normalizeReference(reflabel)];\n if (link) {\n dest = link.destination;\n title = link.title;\n matched = true;\n }\n }\n }\n\n if (matched) {\n var node = new Node(is_image ? 'image' : 'link');\n node._destination = dest;\n node._title = title || '';\n\n var tmp, next;\n tmp = opener.node._next;\n while (tmp) {\n next = tmp._next;\n tmp.unlink();\n node.appendChild(tmp);\n tmp = next;\n }\n block.appendChild(node);\n this.processEmphasis(opener.previousDelimiter);\n this.removeBracket();\n opener.node.unlink();\n\n // We remove this bracket and processEmphasis will remove later delimiters.\n // Now, for a link, we also deactivate earlier link openers.\n // (no links in links)\n if (!is_image) {\n opener = this.brackets;\n while (opener !== null) {\n if (!opener.image) {\n opener.active = false; // deactivate this opener\n }\n opener = opener.previous;\n }\n }\n\n return true;\n\n } else { // no match\n\n this.removeBracket(); // remove this opener from stack\n this.pos = startpos;\n block.appendChild(text(']'));\n return true;\n }\n\n};\n\nvar addBracket = function(node, index, image) {\n if (this.brackets !== null) {\n this.brackets.bracketAfter = true;\n }\n this.brackets = { node: node,\n previous: this.brackets,\n previousDelimiter: this.delimiters,\n index: index,\n image: image,\n active: true };\n};\n\nvar removeBracket = function() {\n this.brackets = this.brackets.previous;\n};\n\n// Attempt to parse an entity.\nvar parseEntity = function(block) {\n var m;\n if ((m = this.match(reEntityHere))) {\n block.appendChild(text(decodeHTML(m)));\n return true;\n } else {\n return false;\n }\n};\n\n// Parse a run of ordinary characters, or a single character with\n// a special meaning in markdown, as a plain string.\nvar parseString = function(block) {\n var m;\n if ((m = this.match(reMain))) {\n if (this.options.smart) {\n block.appendChild(text(\n m.replace(reEllipses, \"\\u2026\")\n .replace(reDash, function(chars) {\n var enCount = 0;\n var emCount = 0;\n if (chars.length % 3 === 0) { // If divisible by 3, use all em dashes\n emCount = chars.length / 3;\n } else if (chars.length % 2 === 0) { // If divisible by 2, use all en dashes\n enCount = chars.length / 2;\n } else if (chars.length % 3 === 2) { // If 2 extra dashes, use en dash for last 2; em dashes for rest\n enCount = 1;\n emCount = (chars.length - 2) / 3;\n } else { // Use en dashes for last 4 hyphens; em dashes for rest\n enCount = 2;\n emCount = (chars.length - 4) / 3;\n }\n return \"\\u2014\".repeat(emCount) + \"\\u2013\".repeat(enCount);\n })));\n } else {\n block.appendChild(text(m));\n }\n return true;\n } else {\n return false;\n }\n};\n\n// Parse a newline. If it was preceded by two spaces, return a hard\n// line break; otherwise a soft line break.\nvar parseNewline = function(block) {\n this.pos += 1; // assume we're at a \\n\n // check previous node for trailing spaces\n var lastc = block._lastChild;\n if (lastc && lastc.type === 'text' && lastc._literal[lastc._literal.length - 1] === ' ') {\n var hardbreak = lastc._literal[lastc._literal.length - 2] === ' ';\n lastc._literal = lastc._literal.replace(reFinalSpace, '');\n block.appendChild(new Node(hardbreak ? 'linebreak' : 'softbreak'));\n } else {\n block.appendChild(new Node('softbreak'));\n }\n this.match(reInitialSpace); // gobble leading spaces in next line\n return true;\n};\n\n// Attempt to parse a link reference, modifying refmap.\nvar parseReference = function(s, refmap) {\n this.subject = s;\n this.pos = 0;\n var rawlabel;\n var dest;\n var title;\n var matchChars;\n var startpos = this.pos;\n\n // label:\n matchChars = this.parseLinkLabel();\n if (matchChars === 0) {\n return 0;\n } else {\n rawlabel = this.subject.substr(0, matchChars);\n }\n\n // colon:\n if (this.peek() === C_COLON) {\n this.pos++;\n } else {\n this.pos = startpos;\n return 0;\n }\n\n // link url\n this.spnl();\n\n dest = this.parseLinkDestination();\n if (dest === null || dest.length === 0) {\n this.pos = startpos;\n return 0;\n }\n\n var beforetitle = this.pos;\n this.spnl();\n title = this.parseLinkTitle();\n if (title === null) {\n title = '';\n // rewind before spaces\n this.pos = beforetitle;\n }\n\n // make sure we're at line end:\n var atLineEnd = true;\n if (this.match(reSpaceAtEndOfLine) === null) {\n if (title === '') {\n atLineEnd = false;\n } else {\n // the potential title we found is not at the line end,\n // but it could still be a legal link reference if we\n // discard the title\n title = '';\n // rewind before spaces\n this.pos = beforetitle;\n // and instead check if the link URL is at the line end\n atLineEnd = this.match(reSpaceAtEndOfLine) !== null;\n }\n }\n\n if (!atLineEnd) {\n this.pos = startpos;\n return 0;\n }\n\n var normlabel = normalizeReference(rawlabel);\n if (normlabel === '') {\n // label must contain non-whitespace characters\n this.pos = startpos;\n return 0;\n }\n\n if (!refmap[normlabel]) {\n refmap[normlabel] = { destination: dest, title: title };\n }\n return this.pos - startpos;\n};\n\n// Parse the next inline element in subject, advancing subject position.\n// On success, add the result to block's children and return true.\n// On failure, return false.\nvar parseInline = function(block) {\n var res = false;\n var c = this.peek();\n if (c === -1) {\n return false;\n }\n switch(c) {\n case C_NEWLINE:\n res = this.parseNewline(block);\n break;\n case C_BACKSLASH:\n res = this.parseBackslash(block);\n break;\n case C_BACKTICK:\n res = this.parseBackticks(block);\n break;\n case C_ASTERISK:\n case C_UNDERSCORE:\n res = this.handleDelim(c, block);\n break;\n case C_SINGLEQUOTE:\n case C_DOUBLEQUOTE:\n res = this.options.smart && this.handleDelim(c, block);\n break;\n case C_OPEN_BRACKET:\n res = this.parseOpenBracket(block);\n break;\n case C_BANG:\n res = this.parseBang(block);\n break;\n case C_CLOSE_BRACKET:\n res = this.parseCloseBracket(block);\n break;\n case C_LESSTHAN:\n res = this.parseAutolink(block) || this.parseHtmlTag(block);\n break;\n case C_AMPERSAND:\n res = this.parseEntity(block);\n break;\n default:\n res = this.parseString(block);\n break;\n }\n if (!res) {\n this.pos += 1;\n block.appendChild(text(fromCodePoint(c)));\n }\n\n return true;\n};\n\n// Parse string content in block into inline children,\n// using refmap to resolve references.\nvar parseInlines = function(block) {\n this.subject = block._string_content.trim();\n this.pos = 0;\n this.delimiters = null;\n this.brackets = null;\n while (this.parseInline(block)) {\n }\n block._string_content = null; // allow raw string to be garbage collected\n this.processEmphasis(null);\n};\n\n// The InlineParser object.\nfunction InlineParser(options){\n return {\n subject: '',\n delimiters: null, // used by handleDelim method\n brackets: null,\n pos: 0,\n refmap: {},\n match: match,\n peek: peek,\n spnl: spnl,\n parseBackticks: parseBackticks,\n parseBackslash: parseBackslash,\n parseAutolink: parseAutolink,\n parseHtmlTag: parseHtmlTag,\n scanDelims: scanDelims,\n handleDelim: handleDelim,\n parseLinkTitle: parseLinkTitle,\n parseLinkDestination: parseLinkDestination,\n parseLinkLabel: parseLinkLabel,\n parseOpenBracket: parseOpenBracket,\n parseBang: parseBang,\n parseCloseBracket: parseCloseBracket,\n addBracket: addBracket,\n removeBracket: removeBracket,\n parseEntity: parseEntity,\n parseString: parseString,\n parseNewline: parseNewline,\n parseReference: parseReference,\n parseInline: parseInline,\n processEmphasis: processEmphasis,\n removeDelimiter: removeDelimiter,\n options: options || {},\n parse: parseInlines\n };\n}\n\nmodule.exports = InlineParser;\n","\"use strict\";\n\n/* The bulk of this code derives from https://github.com/dmoscrop/fold-case\nBut in addition to case-folding, we also normalize whitespace.\n\nfold-case is Copyright Mathias Bynens <https://mathiasbynens.be/>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\n/*eslint-disable key-spacing, comma-spacing */\n\nvar regex = /[ \\t\\r\\n]+|[A-Z\\xB5\\xC0-\\xD6\\xD8-\\xDF\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u0149\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u017F\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C5\\u01C7\\u01C8\\u01CA\\u01CB\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F0-\\u01F2\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0345\\u0370\\u0372\\u0376\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03AB\\u03B0\\u03C2\\u03CF-\\u03D1\\u03D5\\u03D6\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F0\\u03F1\\u03F4\\u03F5\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0528\\u052A\\u052C\\u052E\\u0531-\\u0556\\u0587\\u10A0-\\u10C5\\u10C7\\u10CD\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E96-\\u1E9B\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F50\\u1F52\\u1F54\\u1F56\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1F80-\\u1FAF\\u1FB2-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD2\\u1FD3\\u1FD6-\\u1FDB\\u1FE2-\\u1FE4\\u1FE6-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2126\\u212A\\u212B\\u2132\\u2160-\\u216F\\u2183\\u24B6-\\u24CF\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\u2CF2\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA698\\uA69A\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA792\\uA796\\uA798\\uA79A\\uA79C\\uA79E\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uA7AA-\\uA7AD\\uA7B0\\uA7B1\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF21-\\uFF3A]|\\uD801[\\uDC00-\\uDC27]|\\uD806[\\uDCA0-\\uDCBF]/g;\n\nvar map = {'A':'a','B':'b','C':'c','D':'d','E':'e','F':'f','G':'g','H':'h','I':'i','J':'j','K':'k','L':'l','M':'m','N':'n','O':'o','P':'p','Q':'q','R':'r','S':'s','T':'t','U':'u','V':'v','W':'w','X':'x','Y':'y','Z':'z','\\xB5':'\\u03BC','\\xC0':'\\xE0','\\xC1':'\\xE1','\\xC2':'\\xE2','\\xC3':'\\xE3','\\xC4':'\\xE4','\\xC5':'\\xE5','\\xC6':'\\xE6','\\xC7':'\\xE7','\\xC8':'\\xE8','\\xC9':'\\xE9','\\xCA':'\\xEA','\\xCB':'\\xEB','\\xCC':'\\xEC','\\xCD':'\\xED','\\xCE':'\\xEE','\\xCF':'\\xEF','\\xD0':'\\xF0','\\xD1':'\\xF1','\\xD2':'\\xF2','\\xD3':'\\xF3','\\xD4':'\\xF4','\\xD5':'\\xF5','\\xD6':'\\xF6','\\xD8':'\\xF8','\\xD9':'\\xF9','\\xDA':'\\xFA','\\xDB':'\\xFB','\\xDC':'\\xFC','\\xDD':'\\xFD','\\xDE':'\\xFE','\\u0100':'\\u0101','\\u0102':'\\u0103','\\u0104':'\\u0105','\\u0106':'\\u0107','\\u0108':'\\u0109','\\u010A':'\\u010B','\\u010C':'\\u010D','\\u010E':'\\u010F','\\u0110':'\\u0111','\\u0112':'\\u0113','\\u0114':'\\u0115','\\u0116':'\\u0117','\\u0118':'\\u0119','\\u011A':'\\u011B','\\u011C':'\\u011D','\\u011E':'\\u011F','\\u0120':'\\u0121','\\u0122':'\\u0123','\\u0124':'\\u0125','\\u0126':'\\u0127','\\u0128':'\\u0129','\\u012A':'\\u012B','\\u012C':'\\u012D','\\u012E':'\\u012F','\\u0132':'\\u0133','\\u0134':'\\u0135','\\u0136':'\\u0137','\\u0139':'\\u013A','\\u013B':'\\u013C','\\u013D':'\\u013E','\\u013F':'\\u0140','\\u0141':'\\u0142','\\u0143':'\\u0144','\\u0145':'\\u0146','\\u0147':'\\u0148','\\u014A':'\\u014B','\\u014C':'\\u014D','\\u014E':'\\u014F','\\u0150':'\\u0151','\\u0152':'\\u0153','\\u0154':'\\u0155','\\u0156':'\\u0157','\\u0158':'\\u0159','\\u015A':'\\u015B','\\u015C':'\\u015D','\\u015E':'\\u015F','\\u0160':'\\u0161','\\u0162':'\\u0163','\\u0164':'\\u0165','\\u0166':'\\u0167','\\u0168':'\\u0169','\\u016A':'\\u016B','\\u016C':'\\u016D','\\u016E':'\\u016F','\\u0170':'\\u0171','\\u0172':'\\u0173','\\u0174':'\\u0175','\\u0176':'\\u0177','\\u0178':'\\xFF','\\u0179':'\\u017A','\\u017B':'\\u017C','\\u017D':'\\u017E','\\u017F':'s','\\u0181':'\\u0253','\\u0182':'\\u0183','\\u0184':'\\u0185','\\u0186':'\\u0254','\\u0187':'\\u0188','\\u0189':'\\u0256','\\u018A':'\\u0257','\\u018B':'\\u018C','\\u018E':'\\u01DD','\\u018F':'\\u0259','\\u0190':'\\u025B','\\u0191':'\\u0192','\\u0193':'\\u0260','\\u0194':'\\u0263','\\u0196':'\\u0269','\\u0197':'\\u0268','\\u0198':'\\u0199','\\u019C':'\\u026F','\\u019D':'\\u0272','\\u019F':'\\u0275','\\u01A0':'\\u01A1','\\u01A2':'\\u01A3','\\u01A4':'\\u01A5','\\u01A6':'\\u0280','\\u01A7':'\\u01A8','\\u01A9':'\\u0283','\\u01AC':'\\u01AD','\\u01AE':'\\u0288','\\u01AF':'\\u01B0','\\u01B1':'\\u028A','\\u01B2':'\\u028B','\\u01B3':'\\u01B4','\\u01B5':'\\u01B6','\\u01B7':'\\u0292','\\u01B8':'\\u01B9','\\u01BC':'\\u01BD','\\u01C4':'\\u01C6','\\u01C5':'\\u01C6','\\u01C7':'\\u01C9','\\u01C8':'\\u01C9','\\u01CA':'\\u01CC','\\u01CB':'\\u01CC','\\u01CD':'\\u01CE','\\u01CF':'\\u01D0','\\u01D1':'\\u01D2','\\u01D3':'\\u01D4','\\u01D5':'\\u01D6','\\u01D7':'\\u01D8','\\u01D9':'\\u01DA','\\u01DB':'\\u01DC','\\u01DE':'\\u01DF','\\u01E0':'\\u01E1','\\u01E2':'\\u01E3','\\u01E4':'\\u01E5','\\u01E6':'\\u01E7','\\u01E8':'\\u01E9','\\u01EA':'\\u01EB','\\u01EC':'\\u01ED','\\u01EE':'\\u01EF','\\u01F1':'\\u01F3','\\u01F2':'\\u01F3','\\u01F4':'\\u01F5','\\u01F6':'\\u0195','\\u01F7':'\\u01BF','\\u01F8':'\\u01F9','\\u01FA':'\\u01FB','\\u01FC':'\\u01FD','\\u01FE':'\\u01FF','\\u0200':'\\u0201','\\u0202':'\\u0203','\\u0204':'\\u0205','\\u0206':'\\u0207','\\u0208':'\\u0209','\\u020A':'\\u020B','\\u020C':'\\u020D','\\u020E':'\\u020F','\\u0210':'\\u0211','\\u0212':'\\u0213','\\u0214':'\\u0215','\\u0216':'\\u0217','\\u0218':'\\u0219','\\u021A':'\\u021B','\\u021C':'\\u021D','\\u021E':'\\u021F','\\u0220':'\\u019E','\\u0222':'\\u0223','\\u0224':'\\u0225','\\u0226':'\\u0227','\\u0228':'\\u0229','\\u022A':'\\u022B','\\u022C':'\\u022D','\\u022E':'\\u022F','\\u0230':'\\u0231','\\u0232':'\\u0233','\\u023A':'\\u2C65','\\u023B':'\\u023C','\\u023D':'\\u019A','\\u023E':'\\u2C66','\\u0241':'\\u0242','\\u0243':'\\u0180','\\u0244':'\\u0289','\\u0245':'\\u028C','\\u0246':'\\u0247','\\u0248':'\\u0249','\\u024A':'\\u024B','\\u024C':'\\u024D','\\u024E':'\\u024F','\\u0345':'\\u03B9','\\u0370':'\\u0371','\\u0372':'\\u0373','\\u0376':'\\u0377','\\u037F':'\\u03F3','\\u0386':'\\u03AC','\\u0388':'\\u03AD','\\u0389':'\\u03AE','\\u038A':'\\u03AF','\\u038C':'\\u03CC','\\u038E':'\\u03CD','\\u038F':'\\u03CE','\\u0391':'\\u03B1','\\u0392':'\\u03B2','\\u0393':'\\u03B3','\\u0394':'\\u03B4','\\u0395':'\\u03B5','\\u0396':'\\u03B6','\\u0397':'\\u03B7','\\u0398':'\\u03B8','\\u0399':'\\u03B9','\\u039A':'\\u03BA','\\u039B':'\\u03BB','\\u039C':'\\u03BC','\\u039D':'\\u03BD','\\u039E':'\\u03BE','\\u039F':'\\u03BF','\\u03A0':'\\u03C0','\\u03A1':'\\u03C1','\\u03A3':'\\u03C3','\\u03A4':'\\u03C4','\\u03A5':'\\u03C5','\\u03A6':'\\u03C6','\\u03A7':'\\u03C7','\\u03A8':'\\u03C8','\\u03A9':'\\u03C9','\\u03AA':'\\u03CA','\\u03AB':'\\u03CB','\\u03C2':'\\u03C3','\\u03CF':'\\u03D7','\\u03D0':'\\u03B2','\\u03D1':'\\u03B8','\\u03D5':'\\u03C6','\\u03D6':'\\u03C0','\\u03D8':'\\u03D9','\\u03DA':'\\u03DB','\\u03DC':'\\u03DD','\\u03DE':'\\u03DF','\\u03E0':'\\u03E1','\\u03E2':'\\u03E3','\\u03E4':'\\u03E5','\\u03E6':'\\u03E7','\\u03E8':'\\u03E9','\\u03EA':'\\u03EB','\\u03EC':'\\u03ED','\\u03EE':'\\u03EF','\\u03F0':'\\u03BA','\\u03F1':'\\u03C1','\\u03F4':'\\u03B8','\\u03F5':'\\u03B5','\\u03F7':'\\u03F8','\\u03F9':'\\u03F2','\\u03FA':'\\u03FB','\\u03FD':'\\u037B','\\u03FE':'\\u037C','\\u03FF':'\\u037D','\\u0400':'\\u0450','\\u0401':'\\u0451','\\u0402':'\\u0452','\\u0403':'\\u0453','\\u0404':'\\u0454','\\u0405':'\\u0455','\\u0406':'\\u0456','\\u0407':'\\u0457','\\u0408':'\\u0458','\\u0409':'\\u0459','\\u040A':'\\u045A','\\u040B':'\\u045B','\\u040C':'\\u045C','\\u040D':'\\u045D','\\u040E':'\\u045E','\\u040F':'\\u045F','\\u0410':'\\u0430','\\u0411':'\\u0431','\\u0412':'\\u0432','\\u0413':'\\u0433','\\u0414':'\\u0434','\\u0415':'\\u0435','\\u0416':'\\u0436','\\u0417':'\\u0437','\\u0418':'\\u0438','\\u0419':'\\u0439','\\u041A':'\\u043A','\\u041B':'\\u043B','\\u041C':'\\u043C','\\u041D':'\\u043D','\\u041E':'\\u043E','\\u041F':'\\u043F','\\u0420':'\\u0440','\\u0421':'\\u0441','\\u0422':'\\u0442','\\u0423':'\\u0443','\\u0424':'\\u0444','\\u0425':'\\u0445','\\u0426':'\\u0446','\\u0427':'\\u0447','\\u0428':'\\u0448','\\u0429':'\\u0449','\\u042A':'\\u044A','\\u042B':'\\u044B','\\u042C':'\\u044C','\\u042D':'\\u044D','\\u042E':'\\u044E','\\u042F':'\\u044F','\\u0460':'\\u0461','\\u0462':'\\u0463','\\u0464':'\\u0465','\\u0466':'\\u0467','\\u0468':'\\u0469','\\u046A':'\\u046B','\\u046C':'\\u046D','\\u046E':'\\u046F','\\u0470':'\\u0471','\\u0472':'\\u0473','\\u0474':'\\u0475','\\u0476':'\\u0477','\\u0478':'\\u0479','\\u047A':'\\u047B','\\u047C':'\\u047D','\\u047E':'\\u047F','\\u0480':'\\u0481','\\u048A':'\\u048B','\\u048C':'\\u048D','\\u048E':'\\u048F','\\u0490':'\\u0491','\\u0492':'\\u0493','\\u0494':'\\u0495','\\u0496':'\\u0497','\\u0498':'\\u0499','\\u049A':'\\u049B','\\u049C':'\\u049D','\\u049E':'\\u049F','\\u04A0':'\\u04A1','\\u04A2':'\\u04A3','\\u04A4':'\\u04A5','\\u04A6':'\\u04A7','\\u04A8':'\\u04A9','\\u04AA':'\\u04AB','\\u04AC':'\\u04AD','\\u04AE':'\\u04AF','\\u04B0':'\\u04B1','\\u04B2':'\\u04B3','\\u04B4':'\\u04B5','\\u04B6':'\\u04B7','\\u04B8':'\\u04B9','\\u04BA':'\\u04BB','\\u04BC':'\\u04BD','\\u04BE':'\\u04BF','\\u04C0':'\\u04CF','\\u04C1':'\\u04C2','\\u04C3':'\\u04C4','\\u04C5':'\\u04C6','\\u04C7':'\\u04C8','\\u04C9':'\\u04CA','\\u04CB':'\\u04CC','\\u04CD':'\\u04CE','\\u04D0':'\\u04D1','\\u04D2':'\\u04D3','\\u04D4':'\\u04D5','\\u04D6':'\\u04D7','\\u04D8':'\\u04D9','\\u04DA':'\\u04DB','\\u04DC':'\\u04DD','\\u04DE':'\\u04DF','\\u04E0':'\\u04E1','\\u04E2':'\\u04E3','\\u04E4':'\\u04E5','\\u04E6':'\\u04E7','\\u04E8':'\\u04E9','\\u04EA':'\\u04EB','\\u04EC':'\\u04ED','\\u04EE':'\\u04EF','\\u04F0':'\\u04F1','\\u04F2':'\\u04F3','\\u04F4':'\\u04F5','\\u04F6':'\\u04F7','\\u04F8':'\\u04F9','\\u04FA':'\\u04FB','\\u04FC':'\\u04FD','\\u04FE':'\\u04FF','\\u0500':'\\u0501','\\u0502':'\\u0503','\\u0504':'\\u0505','\\u0506':'\\u0507','\\u0508':'\\u0509','\\u050A':'\\u050B','\\u050C':'\\u050D','\\u050E':'\\u050F','\\u0510':'\\u0511','\\u0512':'\\u0513','\\u0514':'\\u0515','\\u0516':'\\u0517','\\u0518':'\\u0519','\\u051A':'\\u051B','\\u051C':'\\u051D','\\u051E':'\\u051F','\\u0520':'\\u0521','\\u0522':'\\u0523','\\u0524':'\\u0525','\\u0526':'\\u0527','\\u0528':'\\u0529','\\u052A':'\\u052B','\\u052C':'\\u052D','\\u052E':'\\u052F','\\u0531':'\\u0561','\\u0532':'\\u0562','\\u0533':'\\u0563','\\u0534':'\\u0564','\\u0535':'\\u0565','\\u0536':'\\u0566','\\u0537':'\\u0567','\\u0538':'\\u0568','\\u0539':'\\u0569','\\u053A':'\\u056A','\\u053B':'\\u056B','\\u053C':'\\u056C','\\u053D':'\\u056D','\\u053E':'\\u056E','\\u053F':'\\u056F','\\u0540':'\\u0570','\\u0541':'\\u0571','\\u0542':'\\u0572','\\u0543':'\\u0573','\\u0544':'\\u0574','\\u0545':'\\u0575','\\u0546':'\\u0576','\\u0547':'\\u0577','\\u0548':'\\u0578','\\u0549':'\\u0579','\\u054A':'\\u057A','\\u054B':'\\u057B','\\u054C':'\\u057C','\\u054D':'\\u057D','\\u054E':'\\u057E','\\u054F':'\\u057F','\\u0550':'\\u0580','\\u0551':'\\u0581','\\u0552':'\\u0582','\\u0553':'\\u0583','\\u0554':'\\u0584','\\u0555':'\\u0585','\\u0556':'\\u0586','\\u10A0':'\\u2D00','\\u10A1':'\\u2D01','\\u10A2':'\\u2D02','\\u10A3':'\\u2D03','\\u10A4':'\\u2D04','\\u10A5':'\\u2D05','\\u10A6':'\\u2D06','\\u10A7':'\\u2D07','\\u10A8':'\\u2D08','\\u10A9':'\\u2D09','\\u10AA':'\\u2D0A','\\u10AB':'\\u2D0B','\\u10AC':'\\u2D0C','\\u10AD':'\\u2D0D','\\u10AE':'\\u2D0E','\\u10AF':'\\u2D0F','\\u10B0':'\\u2D10','\\u10B1':'\\u2D11','\\u10B2':'\\u2D12','\\u10B3':'\\u2D13','\\u10B4':'\\u2D14','\\u10B5':'\\u2D15','\\u10B6':'\\u2D16','\\u10B7':'\\u2D17','\\u10B8':'\\u2D18','\\u10B9':'\\u2D19','\\u10BA':'\\u2D1A','\\u10BB':'\\u2D1B','\\u10BC':'\\u2D1C','\\u10BD':'\\u2D1D','\\u10BE':'\\u2D1E','\\u10BF':'\\u2D1F','\\u10C0':'\\u2D20','\\u10C1':'\\u2D21','\\u10C2':'\\u2D22','\\u10C3':'\\u2D23','\\u10C4':'\\u2D24','\\u10C5':'\\u2D25','\\u10C7':'\\u2D27','\\u10CD':'\\u2D2D','\\u1E00':'\\u1E01','\\u1E02':'\\u1E03','\\u1E04':'\\u1E05','\\u1E06':'\\u1E07','\\u1E08':'\\u1E09','\\u1E0A':'\\u1E0B','\\u1E0C':'\\u1E0D','\\u1E0E':'\\u1E0F','\\u1E10':'\\u1E11','\\u1E12':'\\u1E13','\\u1E14':'\\u1E15','\\u1E16':'\\u1E17','\\u1E18':'\\u1E19','\\u1E1A':'\\u1E1B','\\u1E1C':'\\u1E1D','\\u1E1E':'\\u1E1F','\\u1E20':'\\u1E21','\\u1E22':'\\u1E23','\\u1E24':'\\u1E25','\\u1E26':'\\u1E27','\\u1E28':'\\u1E29','\\u1E2A':'\\u1E2B','\\u1E2C':'\\u1E2D','\\u1E2E':'\\u1E2F','\\u1E30':'\\u1E31','\\u1E32':'\\u1E33','\\u1E34':'\\u1E35','\\u1E36':'\\u1E37','\\u1E38':'\\u1E39','\\u1E3A':'\\u1E3B','\\u1E3C':'\\u1E3D','\\u1E3E':'\\u1E3F','\\u1E40':'\\u1E41','\\u1E42':'\\u1E43','\\u1E44':'\\u1E45','\\u1E46':'\\u1E47','\\u1E48':'\\u1E49','\\u1E4A':'\\u1E4B','\\u1E4C':'\\u1E4D','\\u1E4E':'\\u1E4F','\\u1E50':'\\u1E51','\\u1E52':'\\u1E53','\\u1E54':'\\u1E55','\\u1E56':'\\u1E57','\\u1E58':'\\u1E59','\\u1E5A':'\\u1E5B','\\u1E5C':'\\u1E5D','\\u1E5E':'\\u1E5F','\\u1E60':'\\u1E61','\\u1E62':'\\u1E63','\\u1E64':'\\u1E65','\\u1E66':'\\u1E67','\\u1E68':'\\u1E69','\\u1E6A':'\\u1E6B','\\u1E6C':'\\u1E6D','\\u1E6E':'\\u1E6F','\\u1E70':'\\u1E71','\\u1E72':'\\u1E73','\\u1E74':'\\u1E75','\\u1E76':'\\u1E77','\\u1E78':'\\u1E79','\\u1E7A':'\\u1E7B','\\u1E7C':'\\u1E7D','\\u1E7E':'\\u1E7F','\\u1E80':'\\u1E81','\\u1E82':'\\u1E83','\\u1E84':'\\u1E85','\\u1E86':'\\u1E87','\\u1E88':'\\u1E89','\\u1E8A':'\\u1E8B','\\u1E8C':'\\u1E8D','\\u1E8E':'\\u1E8F','\\u1E90':'\\u1E91','\\u1E92':'\\u1E93','\\u1E94':'\\u1E95','\\u1E9B':'\\u1E61','\\u1EA0':'\\u1EA1','\\u1EA2':'\\u1EA3','\\u1EA4':'\\u1EA5','\\u1EA6':'\\u1EA7','\\u1EA8':'\\u1EA9','\\u1EAA':'\\u1EAB','\\u1EAC':'\\u1EAD','\\u1EAE':'\\u1EAF','\\u1EB0':'\\u1EB1','\\u1EB2':'\\u1EB3','\\u1EB4':'\\u1EB5','\\u1EB6':'\\u1EB7','\\u1EB8':'\\u1EB9','\\u1EBA':'\\u1EBB','\\u1EBC':'\\u1EBD','\\u1EBE':'\\u1EBF','\\u1EC0':'\\u1EC1','\\u1EC2':'\\u1EC3','\\u1EC4':'\\u1EC5','\\u1EC6':'\\u1EC7','\\u1EC8':'\\u1EC9','\\u1ECA':'\\u1ECB','\\u1ECC':'\\u1ECD','\\u1ECE':'\\u1ECF','\\u1ED0':'\\u1ED1','\\u1ED2':'\\u1ED3','\\u1ED4':'\\u1ED5','\\u1ED6':'\\u1ED7','\\u1ED8':'\\u1ED9','\\u1EDA':'\\u1EDB','\\u1EDC':'\\u1EDD','\\u1EDE':'\\u1EDF','\\u1EE0':'\\u1EE1','\\u1EE2':'\\u1EE3','\\u1EE4':'\\u1EE5','\\u1EE6':'\\u1EE7','\\u1EE8':'\\u1EE9','\\u1EEA':'\\u1EEB','\\u1EEC':'\\u1EED','\\u1EEE':'\\u1EEF','\\u1EF0':'\\u1EF1','\\u1EF2':'\\u1EF3','\\u1EF4':'\\u1EF5','\\u1EF6':'\\u1EF7','\\u1EF8':'\\u1EF9','\\u1EFA':'\\u1EFB','\\u1EFC':'\\u1EFD','\\u1EFE':'\\u1EFF','\\u1F08':'\\u1F00','\\u1F09':'\\u1F01','\\u1F0A':'\\u1F02','\\u1F0B':'\\u1F03','\\u1F0C':'\\u1F04','\\u1F0D':'\\u1F05','\\u1F0E':'\\u1F06','\\u1F0F':'\\u1F07','\\u1F18':'\\u1F10','\\u1F19':'\\u1F11','\\u1F1A':'\\u1F12','\\u1F1B':'\\u1F13','\\u1F1C':'\\u1F14','\\u1F1D':'\\u1F15','\\u1F28':'\\u1F20','\\u1F29':'\\u1F21','\\u1F2A':'\\u1F22','\\u1F2B':'\\u1F23','\\u1F2C':'\\u1F24','\\u1F2D':'\\u1F25','\\u1F2E':'\\u1F26','\\u1F2F':'\\u1F27','\\u1F38':'\\u1F30','\\u1F39':'\\u1F31','\\u1F3A':'\\u1F32','\\u1F3B':'\\u1F33','\\u1F3C':'\\u1F34','\\u1F3D':'\\u1F35','\\u1F3E':'\\u1F36','\\u1F3F':'\\u1F37','\\u1F48':'\\u1F40','\\u1F49':'\\u1F41','\\u1F4A':'\\u1F42','\\u1F4B':'\\u1F43','\\u1F4C':'\\u1F44','\\u1F4D':'\\u1F45','\\u1F59':'\\u1F51','\\u1F5B':'\\u1F53','\\u1F5D':'\\u1F55','\\u1F5F':'\\u1F57','\\u1F68':'\\u1F60','\\u1F69':'\\u1F61','\\u1F6A':'\\u1F62','\\u1F6B':'\\u1F63','\\u1F6C':'\\u1F64','\\u1F6D':'\\u1F65','\\u1F6E':'\\u1F66','\\u1F6F':'\\u1F67','\\u1FB8':'\\u1FB0','\\u1FB9':'\\u1FB1','\\u1FBA':'\\u1F70','\\u1FBB':'\\u1F71','\\u1FBE':'\\u03B9','\\u1FC8':'\\u1F72','\\u1FC9':'\\u1F73','\\u1FCA':'\\u1F74','\\u1FCB':'\\u1F75','\\u1FD8':'\\u1FD0','\\u1FD9':'\\u1FD1','\\u1FDA':'\\u1F76','\\u1FDB':'\\u1F77','\\u1FE8':'\\u1FE0','\\u1FE9':'\\u1FE1','\\u1FEA':'\\u1F7A','\\u1FEB':'\\u1F7B','\\u1FEC':'\\u1FE5','\\u1FF8':'\\u1F78','\\u1FF9':'\\u1F79','\\u1FFA':'\\u1F7C','\\u1FFB':'\\u1F7D','\\u2126':'\\u03C9','\\u212A':'k','\\u212B':'\\xE5','\\u2132':'\\u214E','\\u2160':'\\u2170','\\u2161':'\\u2171','\\u2162':'\\u2172','\\u2163':'\\u2173','\\u2164':'\\u2174','\\u2165':'\\u2175','\\u2166':'\\u2176','\\u2167':'\\u2177','\\u2168':'\\u2178','\\u2169':'\\u2179','\\u216A':'\\u217A','\\u216B':'\\u217B','\\u216C':'\\u217C','\\u216D':'\\u217D','\\u216E':'\\u217E','\\u216F':'\\u217F','\\u2183':'\\u2184','\\u24B6':'\\u24D0','\\u24B7':'\\u24D1','\\u24B8':'\\u24D2','\\u24B9':'\\u24D3','\\u24BA':'\\u24D4','\\u24BB':'\\u24D5','\\u24BC':'\\u24D6','\\u24BD':'\\u24D7','\\u24BE':'\\u24D8','\\u24BF':'\\u24D9','\\u24C0':'\\u24DA','\\u24C1':'\\u24DB','\\u24C2':'\\u24DC','\\u24C3':'\\u24DD','\\u24C4':'\\u24DE','\\u24C5':'\\u24DF','\\u24C6':'\\u24E0','\\u24C7':'\\u24E1','\\u24C8':'\\u24E2','\\u24C9':'\\u24E3','\\u24CA':'\\u24E4','\\u24CB':'\\u24E5','\\u24CC':'\\u24E6','\\u24CD':'\\u24E7','\\u24CE':'\\u24E8','\\u24CF':'\\u24E9','\\u2C00':'\\u2C30','\\u2C01':'\\u2C31','\\u2C02':'\\u2C32','\\u2C03':'\\u2C33','\\u2C04':'\\u2C34','\\u2C05':'\\u2C35','\\u2C06':'\\u2C36','\\u2C07':'\\u2C37','\\u2C08':'\\u2C38','\\u2C09':'\\u2C39','\\u2C0A':'\\u2C3A','\\u2C0B':'\\u2C3B','\\u2C0C':'\\u2C3C','\\u2C0D':'\\u2C3D','\\u2C0E':'\\u2C3E','\\u2C0F':'\\u2C3F','\\u2C10':'\\u2C40','\\u2C11':'\\u2C41','\\u2C12':'\\u2C42','\\u2C13':'\\u2C43','\\u2C14':'\\u2C44','\\u2C15':'\\u2C45','\\u2C16':'\\u2C46','\\u2C17':'\\u2C47','\\u2C18':'\\u2C48','\\u2C19':'\\u2C49','\\u2C1A':'\\u2C4A','\\u2C1B':'\\u2C4B','\\u2C1C':'\\u2C4C','\\u2C1D':'\\u2C4D','\\u2C1E':'\\u2C4E','\\u2C1F':'\\u2C4F','\\u2C20':'\\u2C50','\\u2C21':'\\u2C51','\\u2C22':'\\u2C52','\\u2C23':'\\u2C53','\\u2C24':'\\u2C54','\\u2C25':'\\u2C55','\\u2C26':'\\u2C56','\\u2C27':'\\u2C57','\\u2C28':'\\u2C58','\\u2C29':'\\u2C59','\\u2C2A':'\\u2C5A','\\u2C2B':'\\u2C5B','\\u2C2C':'\\u2C5C','\\u2C2D':'\\u2C5D','\\u2C2E':'\\u2C5E','\\u2C60':'\\u2C61','\\u2C62':'\\u026B','\\u2C63':'\\u1D7D','\\u2C64':'\\u027D','\\u2C67':'\\u2C68','\\u2C69':'\\u2C6A','\\u2C6B':'\\u2C6C','\\u2C6D':'\\u0251','\\u2C6E':'\\u0271','\\u2C6F':'\\u0250','\\u2C70':'\\u0252','\\u2C72':'\\u2C73','\\u2C75':'\\u2C76','\\u2C7E':'\\u023F','\\u2C7F':'\\u0240','\\u2C80':'\\u2C81','\\u2C82':'\\u2C83','\\u2C84':'\\u2C85','\\u2C86':'\\u2C87','\\u2C88':'\\u2C89','\\u2C8A':'\\u2C8B','\\u2C8C':'\\u2C8D','\\u2C8E':'\\u2C8F','\\u2C90':'\\u2C91','\\u2C92':'\\u2C93','\\u2C94':'\\u2C95','\\u2C96':'\\u2C97','\\u2C98':'\\u2C99','\\u2C9A':'\\u2C9B','\\u2C9C':'\\u2C9D','\\u2C9E':'\\u2C9F','\\u2CA0':'\\u2CA1','\\u2CA2':'\\u2CA3','\\u2CA4':'\\u2CA5','\\u2CA6':'\\u2CA7','\\u2CA8':'\\u2CA9','\\u2CAA':'\\u2CAB','\\u2CAC':'\\u2CAD','\\u2CAE':'\\u2CAF','\\u2CB0':'\\u2CB1','\\u2CB2':'\\u2CB3','\\u2CB4':'\\u2CB5','\\u2CB6':'\\u2CB7','\\u2CB8':'\\u2CB9','\\u2CBA':'\\u2CBB','\\u2CBC':'\\u2CBD','\\u2CBE':'\\u2CBF','\\u2CC0':'\\u2CC1','\\u2CC2':'\\u2CC3','\\u2CC4':'\\u2CC5','\\u2CC6':'\\u2CC7','\\u2CC8':'\\u2CC9','\\u2CCA':'\\u2CCB','\\u2CCC':'\\u2CCD','\\u2CCE':'\\u2CCF','\\u2CD0':'\\u2CD1','\\u2CD2':'\\u2CD3','\\u2CD4':'\\u2CD5','\\u2CD6':'\\u2CD7','\\u2CD8':'\\u2CD9','\\u2CDA':'\\u2CDB','\\u2CDC':'\\u2CDD','\\u2CDE':'\\u2CDF','\\u2CE0':'\\u2CE1','\\u2CE2':'\\u2CE3','\\u2CEB':'\\u2CEC','\\u2CED':'\\u2CEE','\\u2CF2':'\\u2CF3','\\uA640':'\\uA641','\\uA642':'\\uA643','\\uA644':'\\uA645','\\uA646':'\\uA647','\\uA648':'\\uA649','\\uA64A':'\\uA64B','\\uA64C':'\\uA64D','\\uA64E':'\\uA64F','\\uA650':'\\uA651','\\uA652':'\\uA653','\\uA654':'\\uA655','\\uA656':'\\uA657','\\uA658':'\\uA659','\\uA65A':'\\uA65B','\\uA65C':'\\uA65D','\\uA65E':'\\uA65F','\\uA660':'\\uA661','\\uA662':'\\uA663','\\uA664':'\\uA665','\\uA666':'\\uA667','\\uA668':'\\uA669','\\uA66A':'\\uA66B','\\uA66C':'\\uA66D','\\uA680':'\\uA681','\\uA682':'\\uA683','\\uA684':'\\uA685','\\uA686':'\\uA687','\\uA688':'\\uA689','\\uA68A':'\\uA68B','\\uA68C':'\\uA68D','\\uA68E':'\\uA68F','\\uA690':'\\uA691','\\uA692':'\\uA693','\\uA694':'\\uA695','\\uA696':'\\uA697','\\uA698':'\\uA699','\\uA69A':'\\uA69B','\\uA722':'\\uA723','\\uA724':'\\uA725','\\uA726':'\\uA727','\\uA728':'\\uA729','\\uA72A':'\\uA72B','\\uA72C':'\\uA72D','\\uA72E':'\\uA72F','\\uA732':'\\uA733','\\uA734':'\\uA735','\\uA736':'\\uA737','\\uA738':'\\uA739','\\uA73A':'\\uA73B','\\uA73C':'\\uA73D','\\uA73E':'\\uA73F','\\uA740':'\\uA741','\\uA742':'\\uA743','\\uA744':'\\uA745','\\uA746':'\\uA747','\\uA748':'\\uA749','\\uA74A':'\\uA74B','\\uA74C':'\\uA74D','\\uA74E':'\\uA74F','\\uA750':'\\uA751','\\uA752':'\\uA753','\\uA754':'\\uA755','\\uA756':'\\uA757','\\uA758':'\\uA759','\\uA75A':'\\uA75B','\\uA75C':'\\uA75D','\\uA75E':'\\uA75F','\\uA760':'\\uA761','\\uA762':'\\uA763','\\uA764':'\\uA765','\\uA766':'\\uA767','\\uA768':'\\uA769','\\uA76A':'\\uA76B','\\uA76C':'\\uA76D','\\uA76E':'\\uA76F','\\uA779':'\\uA77A','\\uA77B':'\\uA77C','\\uA77D':'\\u1D79','\\uA77E':'\\uA77F','\\uA780':'\\uA781','\\uA782':'\\uA783','\\uA784':'\\uA785','\\uA786':'\\uA787','\\uA78B':'\\uA78C','\\uA78D':'\\u0265','\\uA790':'\\uA791','\\uA792':'\\uA793','\\uA796':'\\uA797','\\uA798':'\\uA799','\\uA79A':'\\uA79B','\\uA79C':'\\uA79D','\\uA79E':'\\uA79F','\\uA7A0':'\\uA7A1','\\uA7A2':'\\uA7A3','\\uA7A4':'\\uA7A5','\\uA7A6':'\\uA7A7','\\uA7A8':'\\uA7A9','\\uA7AA':'\\u0266','\\uA7AB':'\\u025C','\\uA7AC':'\\u0261','\\uA7AD':'\\u026C','\\uA7B0':'\\u029E','\\uA7B1':'\\u0287','\\uFF21':'\\uFF41','\\uFF22':'\\uFF42','\\uFF23':'\\uFF43','\\uFF24':'\\uFF44','\\uFF25':'\\uFF45','\\uFF26':'\\uFF46','\\uFF27':'\\uFF47','\\uFF28':'\\uFF48','\\uFF29':'\\uFF49','\\uFF2A':'\\uFF4A','\\uFF2B':'\\uFF4B','\\uFF2C':'\\uFF4C','\\uFF2D':'\\uFF4D','\\uFF2E':'\\uFF4E','\\uFF2F':'\\uFF4F','\\uFF30':'\\uFF50','\\uFF31':'\\uFF51','\\uFF32':'\\uFF52','\\uFF33':'\\uFF53','\\uFF34':'\\uFF54','\\uFF35':'\\uFF55','\\uFF36':'\\uFF56','\\uFF37':'\\uFF57','\\uFF38':'\\uFF58','\\uFF39':'\\uFF59','\\uFF3A':'\\uFF5A','\\uD801\\uDC00':'\\uD801\\uDC28','\\uD801\\uDC01':'\\uD801\\uDC29','\\uD801\\uDC02':'\\uD801\\uDC2A','\\uD801\\uDC03':'\\uD801\\uDC2B','\\uD801\\uDC04':'\\uD801\\uDC2C','\\uD801\\uDC05':'\\uD801\\uDC2D','\\uD801\\uDC06':'\\uD801\\uDC2E','\\uD801\\uDC07':'\\uD801\\uDC2F','\\uD801\\uDC08':'\\uD801\\uDC30','\\uD801\\uDC09':'\\uD801\\uDC31','\\uD801\\uDC0A':'\\uD801\\uDC32','\\uD801\\uDC0B':'\\uD801\\uDC33','\\uD801\\uDC0C':'\\uD801\\uDC34','\\uD801\\uDC0D':'\\uD801\\uDC35','\\uD801\\uDC0E':'\\uD801\\uDC36','\\uD801\\uDC0F':'\\uD801\\uDC37','\\uD801\\uDC10':'\\uD801\\uDC38','\\uD801\\uDC11':'\\uD801\\uDC39','\\uD801\\uDC12':'\\uD801\\uDC3A','\\uD801\\uDC13':'\\uD801\\uDC3B','\\uD801\\uDC14':'\\uD801\\uDC3C','\\uD801\\uDC15':'\\uD801\\uDC3D','\\uD801\\uDC16':'\\uD801\\uDC3E','\\uD801\\uDC17':'\\uD801\\uDC3F','\\uD801\\uDC18':'\\uD801\\uDC40','\\uD801\\uDC19':'\\uD801\\uDC41','\\uD801\\uDC1A':'\\uD801\\uDC42','\\uD801\\uDC1B':'\\uD801\\uDC43','\\uD801\\uDC1C':'\\uD801\\uDC44','\\uD801\\uDC1D':'\\uD801\\uDC45','\\uD801\\uDC1E':'\\uD801\\uDC46','\\uD801\\uDC1F':'\\uD801\\uDC47','\\uD801\\uDC20':'\\uD801\\uDC48','\\uD801\\uDC21':'\\uD801\\uDC49','\\uD801\\uDC22':'\\uD801\\uDC4A','\\uD801\\uDC23':'\\uD801\\uDC4B','\\uD801\\uDC24':'\\uD801\\uDC4C','\\uD801\\uDC25':'\\uD801\\uDC4D','\\uD801\\uDC26':'\\uD801\\uDC4E','\\uD801\\uDC27':'\\uD801\\uDC4F','\\uD806\\uDCA0':'\\uD806\\uDCC0','\\uD806\\uDCA1':'\\uD806\\uDCC1','\\uD806\\uDCA2':'\\uD806\\uDCC2','\\uD806\\uDCA3':'\\uD806\\uDCC3','\\uD806\\uDCA4':'\\uD806\\uDCC4','\\uD806\\uDCA5':'\\uD806\\uDCC5','\\uD806\\uDCA6':'\\uD806\\uDCC6','\\uD806\\uDCA7':'\\uD806\\uDCC7','\\uD806\\uDCA8':'\\uD806\\uDCC8','\\uD806\\uDCA9':'\\uD806\\uDCC9','\\uD806\\uDCAA':'\\uD806\\uDCCA','\\uD806\\uDCAB':'\\uD806\\uDCCB','\\uD806\\uDCAC':'\\uD806\\uDCCC','\\uD806\\uDCAD':'\\uD806\\uDCCD','\\uD806\\uDCAE':'\\uD806\\uDCCE','\\uD806\\uDCAF':'\\uD806\\uDCCF','\\uD806\\uDCB0':'\\uD806\\uDCD0','\\uD806\\uDCB1':'\\uD806\\uDCD1','\\uD806\\uDCB2':'\\uD806\\uDCD2','\\uD806\\uDCB3':'\\uD806\\uDCD3','\\uD806\\uDCB4':'\\uD806\\uDCD4','\\uD806\\uDCB5':'\\uD806\\uDCD5','\\uD806\\uDCB6':'\\uD806\\uDCD6','\\uD806\\uDCB7':'\\uD806\\uDCD7','\\uD806\\uDCB8':'\\uD806\\uDCD8','\\uD806\\uDCB9':'\\uD806\\uDCD9','\\uD806\\uDCBA':'\\uD806\\uDCDA','\\uD806\\uDCBB':'\\uD806\\uDCDB','\\uD806\\uDCBC':'\\uD806\\uDCDC','\\uD806\\uDCBD':'\\uD806\\uDCDD','\\uD806\\uDCBE':'\\uD806\\uDCDE','\\uD806\\uDCBF':'\\uD806\\uDCDF','\\xDF':'ss','\\u0130':'i\\u0307','\\u0149':'\\u02BCn','\\u01F0':'j\\u030C','\\u0390':'\\u03B9\\u0308\\u0301','\\u03B0':'\\u03C5\\u0308\\u0301','\\u0587':'\\u0565\\u0582','\\u1E96':'h\\u0331','\\u1E97':'t\\u0308','\\u1E98':'w\\u030A','\\u1E99':'y\\u030A','\\u1E9A':'a\\u02BE','\\u1E9E':'ss','\\u1F50':'\\u03C5\\u0313','\\u1F52':'\\u03C5\\u0313\\u0300','\\u1F54':'\\u03C5\\u0313\\u0301','\\u1F56':'\\u03C5\\u0313\\u0342','\\u1F80':'\\u1F00\\u03B9','\\u1F81':'\\u1F01\\u03B9','\\u1F82':'\\u1F02\\u03B9','\\u1F83':'\\u1F03\\u03B9','\\u1F84':'\\u1F04\\u03B9','\\u1F85':'\\u1F05\\u03B9','\\u1F86':'\\u1F06\\u03B9','\\u1F87':'\\u1F07\\u03B9','\\u1F88':'\\u1F00\\u03B9','\\u1F89':'\\u1F01\\u03B9','\\u1F8A':'\\u1F02\\u03B9','\\u1F8B':'\\u1F03\\u03B9','\\u1F8C':'\\u1F04\\u03B9','\\u1F8D':'\\u1F05\\u03B9','\\u1F8E':'\\u1F06\\u03B9','\\u1F8F':'\\u1F07\\u03B9','\\u1F90':'\\u1F20\\u03B9','\\u1F91':'\\u1F21\\u03B9','\\u1F92':'\\u1F22\\u03B9','\\u1F93':'\\u1F23\\u03B9','\\u1F94':'\\u1F24\\u03B9','\\u1F95':'\\u1F25\\u03B9','\\u1F96':'\\u1F26\\u03B9','\\u1F97':'\\u1F27\\u03B9','\\u1F98':'\\u1F20\\u03B9','\\u1F99':'\\u1F21\\u03B9','\\u1F9A':'\\u1F22\\u03B9','\\u1F9B':'\\u1F23\\u03B9','\\u1F9C':'\\u1F24\\u03B9','\\u1F9D':'\\u1F25\\u03B9','\\u1F9E':'\\u1F26\\u03B9','\\u1F9F':'\\u1F27\\u03B9','\\u1FA0':'\\u1F60\\u03B9','\\u1FA1':'\\u1F61\\u03B9','\\u1FA2':'\\u1F62\\u03B9','\\u1FA3':'\\u1F63\\u03B9','\\u1FA4':'\\u1F64\\u03B9','\\u1FA5':'\\u1F65\\u03B9','\\u1FA6':'\\u1F66\\u03B9','\\u1FA7':'\\u1F67\\u03B9','\\u1FA8':'\\u1F60\\u03B9','\\u1FA9':'\\u1F61\\u03B9','\\u1FAA':'\\u1F62\\u03B9','\\u1FAB':'\\u1F63\\u03B9','\\u1FAC':'\\u1F64\\u03B9','\\u1FAD':'\\u1F65\\u03B9','\\u1FAE':'\\u1F66\\u03B9','\\u1FAF':'\\u1F67\\u03B9','\\u1FB2':'\\u1F70\\u03B9','\\u1FB3':'\\u03B1\\u03B9','\\u1FB4':'\\u03AC\\u03B9','\\u1FB6':'\\u03B1\\u0342','\\u1FB7':'\\u03B1\\u0342\\u03B9','\\u1FBC':'\\u03B1\\u03B9','\\u1FC2':'\\u1F74\\u03B9','\\u1FC3':'\\u03B7\\u03B9','\\u1FC4':'\\u03AE\\u03B9','\\u1FC6':'\\u03B7\\u0342','\\u1FC7':'\\u03B7\\u0342\\u03B9','\\u1FCC':'\\u03B7\\u03B9','\\u1FD2':'\\u03B9\\u0308\\u0300','\\u1FD3':'\\u03B9\\u0308\\u0301','\\u1FD6':'\\u03B9\\u0342','\\u1FD7':'\\u03B9\\u0308\\u0342','\\u1FE2':'\\u03C5\\u0308\\u0300','\\u1FE3':'\\u03C5\\u0308\\u0301','\\u1FE4':'\\u03C1\\u0313','\\u1FE6':'\\u03C5\\u0342','\\u1FE7':'\\u03C5\\u0308\\u0342','\\u1FF2':'\\u1F7C\\u03B9','\\u1FF3':'\\u03C9\\u03B9','\\u1FF4':'\\u03CE\\u03B9','\\u1FF6':'\\u03C9\\u0342','\\u1FF7':'\\u03C9\\u0342\\u03B9','\\u1FFC':'\\u03C9\\u03B9','\\uFB00':'ff','\\uFB01':'fi','\\uFB02':'fl','\\uFB03':'ffi','\\uFB04':'ffl','\\uFB05':'st','\\uFB06':'st','\\uFB13':'\\u0574\\u0576','\\uFB14':'\\u0574\\u0565','\\uFB15':'\\u0574\\u056B','\\uFB16':'\\u057E\\u0576','\\uFB17':'\\u0574\\u056D'};\n\n// Normalize reference label: collapse internal whitespace\n// to single space, remove leading/trailing whitespace, case fold.\nmodule.exports = function(string) {\n return string.slice(1, string.length - 1).trim().replace(regex, function($0) {\n // Note: there is no need to check `hasOwnProperty($0)` here.\n // If character not found in lookup table, it must be whitespace.\n return map[$0] || ' ';\n });\n};\n","\"use strict\";\n\n// derived from https://github.com/mathiasbynens/String.fromCodePoint\n/*! http://mths.be/fromcodepoint v0.2.1 by @mathias */\nif (String.fromCodePoint) {\n module.exports = function (_) {\n try {\n return String.fromCodePoint(_);\n } catch (e) {\n if (e instanceof RangeError) {\n return String.fromCharCode(0xFFFD);\n }\n throw e;\n }\n };\n\n} else {\n\n var stringFromCharCode = String.fromCharCode;\n var floor = Math.floor;\n var fromCodePoint = function() {\n var MAX_SIZE = 0x4000;\n var codeUnits = [];\n var highSurrogate;\n var lowSurrogate;\n var index = -1;\n var length = arguments.length;\n if (!length) {\n return '';\n }\n var result = '';\n while (++index < length) {\n var codePoint = Number(arguments[index]);\n if (\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10FFFF || // not a valid Unicode code point\n floor(codePoint) !== codePoint // not an integer\n ) {\n return String.fromCharCode(0xFFFD);\n }\n if (codePoint <= 0xFFFF) { // BMP code point\n codeUnits.push(codePoint);\n } else { // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000;\n highSurrogate = (codePoint >> 10) + 0xD800;\n lowSurrogate = (codePoint % 0x400) + 0xDC00;\n codeUnits.push(highSurrogate, lowSurrogate);\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode.apply(null, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n };\n module.exports = fromCodePoint;\n}\n","/*! http://mths.be/repeat v0.2.0 by @mathias */\nif (!String.prototype.repeat) {\n\t(function() {\n\t\t'use strict'; // needed to support `apply`/`call` with `undefined`/`null`\n\t\tvar defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\ttry {\n\t\t\t\tvar object = {};\n\t\t\t\tvar $defineProperty = Object.defineProperty;\n\t\t\t\tvar result = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {}\n\t\t\treturn result;\n\t\t}());\n\t\tvar repeat = function(count) {\n\t\t\tif (this == null) {\n\t\t\t\tthrow TypeError();\n\t\t\t}\n\t\t\tvar string = String(this);\n\t\t\t// `ToInteger`\n\t\t\tvar n = count ? Number(count) : 0;\n\t\t\tif (n != n) { // better `isNaN`\n\t\t\t\tn = 0;\n\t\t\t}\n\t\t\t// Account for out-of-bounds indices\n\t\t\tif (n < 0 || n == Infinity) {\n\t\t\t\tthrow RangeError();\n\t\t\t}\n\t\t\tvar result = '';\n\t\t\twhile (n) {\n\t\t\t\tif (n % 2 == 1) {\n\t\t\t\t\tresult += string;\n\t\t\t\t}\n\t\t\t\tif (n > 1) {\n\t\t\t\t\tstring += string;\n\t\t\t\t}\n\t\t\t\tn >>= 1;\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String.prototype, 'repeat', {\n\t\t\t\t'value': repeat,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.prototype.repeat = repeat;\n\t\t}\n\t}());\n}\n","\"use strict\";\n\nvar Renderer = require('./renderer');\n\nvar reUnsafeProtocol = /^javascript:|vbscript:|file:|data:/i;\nvar reSafeDataProtocol = /^data:image\\/(?:png|gif|jpeg|webp)/i;\n\nvar potentiallyUnsafe = function(url) {\n return reUnsafeProtocol.test(url) &&\n !reSafeDataProtocol.test(url);\n};\n\n// Helper function to produce an HTML tag.\nfunction tag(name, attrs, selfclosing) {\n if (this.disableTags > 0) {\n return;\n }\n this.buffer += ('<' + name);\n if (attrs && attrs.length > 0) {\n var i = 0;\n var attrib;\n while ((attrib = attrs[i]) !== undefined) {\n this.buffer += (' ' + attrib[0] + '=\"' + attrib[1] + '\"');\n i++;\n }\n }\n if (selfclosing) {\n this.buffer += ' /';\n }\n this.buffer += '>';\n this.lastOut = '>';\n}\n\nfunction HtmlRenderer(options) {\n options = options || {};\n // by default, soft breaks are rendered as newlines in HTML\n options.softbreak = options.softbreak || '\\n';\n // set to \"<br />\" to make them hard breaks\n // set to \" \" if you want to ignore line wrapping in source\n\n this.disableTags = 0;\n this.lastOut = \"\\n\";\n this.options = options;\n}\n\n/* Node methods */\n\nfunction text(node) {\n this.out(node.literal);\n}\n\nfunction softbreak() {\n this.lit(this.options.softbreak);\n}\n\nfunction linebreak() {\n this.tag('br', [], true);\n this.cr();\n}\n\nfunction link(node, entering) {\n var attrs = this.attrs(node);\n if (entering) {\n if (!(this.options.safe && potentiallyUnsafe(node.destination))) {\n attrs.push(['href', this.esc(node.destination, true)]);\n }\n if (node.title) {\n attrs.push(['title', this.esc(node.title, true)]);\n }\n this.tag('a', attrs);\n } else {\n this.tag('/a');\n }\n}\n\nfunction image(node, entering) {\n if (entering) {\n if (this.disableTags === 0) {\n if (this.options.safe && potentiallyUnsafe(node.destination)) {\n this.lit('<img src=\"\" alt=\"');\n } else {\n this.lit('<img src=\"' + this.esc(node.destination, true) +\n '\" alt=\"');\n }\n }\n this.disableTags += 1;\n } else {\n this.disableTags -= 1;\n if (this.disableTags === 0) {\n if (node.title) {\n this.lit('\" title=\"' + this.esc(node.title, true));\n }\n this.lit('\" />');\n }\n }\n}\n\nfunction emph(node, entering) {\n this.tag(entering ? 'em' : '/em');\n}\n\nfunction strong(node, entering) {\n this.tag(entering ? 'strong' : '/strong');\n}\n\nfunction paragraph(node, entering) {\n var grandparent = node.parent.parent\n , attrs = this.attrs(node);\n if (grandparent !== null &&\n grandparent.type === 'list') {\n if (grandparent.listTight) {\n return;\n }\n }\n if (entering) {\n this.cr();\n this.tag('p', attrs);\n } else {\n this.tag('/p');\n this.cr();\n }\n}\n\nfunction heading(node, entering) {\n var tagname = 'h' + node.level\n , attrs = this.attrs(node);\n if (entering) {\n this.cr();\n this.tag(tagname, attrs);\n } else {\n this.tag('/' + tagname);\n this.cr();\n }\n}\n\nfunction code(node) {\n this.tag('code');\n this.out(node.literal);\n this.tag('/code');\n}\n\nfunction code_block(node) {\n var info_words = node.info ? node.info.split(/\\s+/) : []\n , attrs = this.attrs(node);\n if (info_words.length > 0 && info_words[0].length > 0) {\n attrs.push(['class', 'language-' + this.esc(info_words[0], true)]);\n }\n this.cr();\n this.tag('pre');\n this.tag('code', attrs);\n this.out(node.literal);\n this.tag('/code');\n this.tag('/pre');\n this.cr();\n}\n\nfunction thematic_break(node) {\n var attrs = this.attrs(node);\n this.cr();\n this.tag('hr', attrs, true);\n this.cr();\n}\n\nfunction block_quote(node, entering) {\n var attrs = this.attrs(node);\n if (entering) {\n this.cr();\n this.tag('blockquote', attrs);\n this.cr();\n } else {\n this.cr();\n this.tag('/blockquote');\n this.cr();\n }\n}\n\nfunction list(node, entering) {\n var tagname = node.listType === 'bullet' ? 'ul' : 'ol'\n , attrs = this.attrs(node);\n\n if (entering) {\n var start = node.listStart;\n if (start !== null && start !== 1) {\n attrs.push(['start', start.toString()]);\n }\n this.cr();\n this.tag(tagname, attrs);\n this.cr();\n } else {\n this.cr();\n this.tag('/' + tagname);\n this.cr();\n }\n}\n\nfunction item(node, entering) {\n var attrs = this.attrs(node);\n if (entering) {\n this.tag('li', attrs);\n } else {\n this.tag('/li');\n this.cr();\n }\n}\n\nfunction html_inline(node) {\n if (this.options.safe) {\n this.lit('<!-- raw HTML omitted -->');\n } else {\n this.lit(node.literal);\n }\n}\n\nfunction html_block(node) {\n this.cr();\n if (this.options.safe) {\n this.lit('<!-- raw HTML omitted -->');\n } else {\n this.lit(node.literal);\n }\n this.cr();\n}\n\nfunction custom_inline(node, entering) {\n if (entering && node.onEnter) {\n this.lit(node.onEnter);\n } else if (!entering && node.onExit) {\n this.lit(node.onExit);\n }\n}\n\nfunction custom_block(node, entering) {\n this.cr();\n if (entering && node.onEnter) {\n this.lit(node.onEnter);\n } else if (!entering && node.onExit) {\n this.lit(node.onExit);\n }\n this.cr();\n}\n\n/* Helper methods */\n\nfunction out(s) {\n this.lit(this.esc(s, false));\n}\n\nfunction attrs (node) {\n var att = [];\n if (this.options.sourcepos) {\n var pos = node.sourcepos;\n if (pos) {\n att.push(['data-sourcepos', String(pos[0][0]) + ':' +\n String(pos[0][1]) + '-' + String(pos[1][0]) + ':' +\n String(pos[1][1])]);\n }\n }\n return att;\n}\n\n// quick browser-compatible inheritance\nHtmlRenderer.prototype = Object.create(Renderer.prototype);\n\nHtmlRenderer.prototype.text = text;\nHtmlRenderer.prototype.html_inline = html_inline;\nHtmlRenderer.prototype.html_block = html_block;\nHtmlRenderer.prototype.softbreak = softbreak;\nHtmlRenderer.prototype.linebreak = linebreak;\nHtmlRenderer.prototype.link = link;\nHtmlRenderer.prototype.image = image;\nHtmlRenderer.prototype.emph = emph;\nHtmlRenderer.prototype.strong = strong;\nHtmlRenderer.prototype.paragraph = paragraph;\nHtmlRenderer.prototype.heading = heading;\nHtmlRenderer.prototype.code = code;\nHtmlRenderer.prototype.code_block = code_block;\nHtmlRenderer.prototype.thematic_break = thematic_break;\nHtmlRenderer.prototype.block_quote = block_quote;\nHtmlRenderer.prototype.list = list;\nHtmlRenderer.prototype.item = item;\nHtmlRenderer.prototype.custom_inline = custom_inline;\nHtmlRenderer.prototype.custom_block = custom_block;\n\nHtmlRenderer.prototype.esc = require('../common').escapeXml;\n\nHtmlRenderer.prototype.out = out;\nHtmlRenderer.prototype.tag = tag;\nHtmlRenderer.prototype.attrs = attrs;\n\nmodule.exports = HtmlRenderer;\n","\"use strict\";\n\nvar Renderer = require('./renderer');\n\nvar reXMLTag = /\\<[^>]*\\>/;\n\nfunction toTagName(s) {\n return s.replace(/([a-z])([A-Z])/g, \"$1_$2\").toLowerCase();\n}\n\nfunction XmlRenderer(options) {\n options = options || {};\n\n this.disableTags = 0;\n this.lastOut = \"\\n\";\n\n this.indentLevel = 0;\n this.indent = ' ';\n\n this.options = options;\n}\n\nfunction render(ast) {\n\n this.buffer = '';\n\n var attrs;\n var tagname;\n var walker = ast.walker();\n var event, node, entering;\n var container;\n var selfClosing;\n var nodetype;\n\n var options = this.options;\n\n if (options.time) { console.time(\"rendering\"); }\n\n this.buffer += '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n';\n this.buffer += '<!DOCTYPE document SYSTEM \"CommonMark.dtd\">\\n';\n\n while ((event = walker.next())) {\n entering = event.entering;\n node = event.node;\n nodetype = node.type;\n\n container = node.isContainer;\n\n selfClosing = nodetype === 'thematic_break'\n || nodetype === 'linebreak'\n || nodetype === 'softbreak';\n\n tagname = toTagName(nodetype);\n\n if (entering) {\n\n attrs = [];\n\n switch (nodetype) {\n case 'document':\n attrs.push(['xmlns', 'http://commonmark.org/xml/1.0']);\n break;\n case 'list':\n if (node.listType !== null) {\n attrs.push(['type', node.listType.toLowerCase()]);\n }\n if (node.listStart !== null) {\n attrs.push(['start', String(node.listStart)]);\n }\n if (node.listTight !== null) {\n attrs.push(['tight', (node.listTight ? 'true' : 'false')]);\n }\n var delim = node.listDelimiter;\n if (delim !== null) {\n var delimword = '';\n if (delim === '.') {\n delimword = 'period';\n } else {\n delimword = 'paren';\n }\n attrs.push(['delimiter', delimword]);\n }\n break;\n case 'code_block':\n if (node.info) {\n attrs.push(['info', node.info]);\n }\n break;\n case 'heading':\n attrs.push(['level', String(node.level)]);\n break;\n case 'link':\n case 'image':\n attrs.push(['destination', node.destination]);\n attrs.push(['title', node.title]);\n break;\n case 'custom_inline':\n case 'custom_block':\n attrs.push(['on_enter', node.onEnter]);\n attrs.push(['on_exit', node.onExit]);\n break;\n default:\n break;\n }\n if (options.sourcepos) {\n var pos = node.sourcepos;\n if (pos) {\n attrs.push(['sourcepos', String(pos[0][0]) + ':' +\n String(pos[0][1]) + '-' + String(pos[1][0]) + ':' +\n String(pos[1][1])]);\n }\n }\n\n this.cr();\n this.out(this.tag(tagname, attrs, selfClosing));\n if (container) {\n this.indentLevel += 1;\n } else if (!container && !selfClosing) {\n var lit = node.literal;\n if (lit) {\n this.out(this.esc(lit));\n }\n this.out(this.tag('/' + tagname));\n }\n } else {\n this.indentLevel -= 1;\n this.cr();\n this.out(this.tag('/' + tagname));\n }\n }\n if (options.time) { console.timeEnd(\"rendering\"); }\n this.buffer += '\\n';\n return this.buffer;\n}\n\nfunction out(s) {\n if(this.disableTags > 0) {\n this.buffer += s.replace(reXMLTag, '');\n }else{\n this.buffer += s;\n }\n this.lastOut = s;\n}\n\nfunction cr() {\n if(this.lastOut !== '\\n') {\n this.buffer += '\\n';\n this.lastOut = '\\n';\n for(var i = this.indentLevel; i > 0; i--) {\n this.buffer += this.indent;\n }\n }\n}\n\n// Helper function to produce an XML tag.\nfunction tag(name, attrs, selfclosing) {\n var result = '<' + name;\n if(attrs && attrs.length > 0) {\n var i = 0;\n var attrib;\n while ((attrib = attrs[i]) !== undefined) {\n result += ' ' + attrib[0] + '=\"' + this.esc(attrib[1]) + '\"';\n i++;\n }\n }\n if(selfclosing) {\n result += ' /';\n }\n result += '>';\n return result;\n}\n\n// quick browser-compatible inheritance\nXmlRenderer.prototype = Object.create(Renderer.prototype);\n\nXmlRenderer.prototype.render = render;\nXmlRenderer.prototype.out = out;\nXmlRenderer.prototype.cr = cr;\nXmlRenderer.prototype.tag = tag;\nXmlRenderer.prototype.esc = require('../common').escapeXml;\n\nmodule.exports = XmlRenderer;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _slate = require('slate');\n\nvar _clamp2 = require('lodash/clamp');\n\nvar _clamp3 = _interopRequireDefault(_clamp2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Aviral Dasgupta\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar HistoryItem = function () {\n // We store history items in their native format to ensure history is accurate\n // and then convert them if our RTE has subsequently changed format.\n function HistoryItem(value, format) {\n (0, _classCallCheck3.default)(this, HistoryItem);\n this.format = 'rich';\n\n this.value = value;\n this.format = format;\n }\n\n (0, _createClass3.default)(HistoryItem, [{\n key: 'toJSON',\n value: function toJSON() {\n return {\n value: this.value.toJSON(),\n format: this.format\n };\n }\n }], [{\n key: 'fromJSON',\n value: function fromJSON(obj) {\n return new HistoryItem(_slate.Value.fromJSON(obj.value), obj.format);\n }\n }]);\n return HistoryItem;\n}();\n\nvar ComposerHistoryManager = function () {\n // used for indexing the loaded validated history Array\n\n function ComposerHistoryManager(roomId) {\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'mx_composer_history_';\n (0, _classCallCheck3.default)(this, ComposerHistoryManager);\n this.history = [];\n this.lastIndex = 0;\n this.currentIndex = 0;\n\n this.prefix = prefix + roomId;\n\n // TODO: Performance issues?\n var item = void 0;\n for (; item = sessionStorage.getItem(this.prefix + '[' + this.currentIndex + ']'); this.currentIndex++) {\n try {\n this.history.push(HistoryItem.fromJSON(JSON.parse(item)));\n } catch (e) {\n console.warn(\"Throwing away unserialisable history\", e);\n }\n }\n this.lastIndex = this.currentIndex;\n // reset currentIndex to account for any unserialisable history\n this.currentIndex = this.history.length;\n } // used for indexing the storage\n\n\n (0, _createClass3.default)(ComposerHistoryManager, [{\n key: 'save',\n value: function save(value, format) {\n var item = new HistoryItem(value, format);\n this.history.push(item);\n this.currentIndex = this.history.length;\n sessionStorage.setItem(this.prefix + '[' + this.lastIndex++ + ']', (0, _stringify2.default)(item.toJSON()));\n }\n }, {\n key: 'getItem',\n value: function getItem(offset) {\n this.currentIndex = (0, _clamp3.default)(this.currentIndex + offset, 0, this.history.length - 1);\n return this.history[this.currentIndex];\n }\n }]);\n return ComposerHistoryManager;\n}();\n\nexports.default = ComposerHistoryManager;\nmodule.exports = exports['default'];\n//# sourceMappingURL=ComposerHistoryManager.js.map","var baseClamp = require('./_baseClamp'),\n toNumber = require('./toNumber');\n\n/**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\nfunction clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n}\n\nmodule.exports = clamp;\n","/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n}\n\nmodule.exports = baseClamp;\n","'use strict';\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _slate = require('slate');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar localStoragePrefix = 'editor_state_';\n\n/**\n * A class for storing application state to do with the message composer (specifically in-progress message drafts).\n * It does not worry about cleaning up on log out as this is handled in Lifecycle.js by localStorage.clear()\n */\n/*\nCopyright 2017, 2018 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MessageComposerStore = function () {\n function MessageComposerStore() {\n (0, _classCallCheck3.default)(this, MessageComposerStore);\n\n this.prefix = localStoragePrefix;\n }\n\n (0, _createClass3.default)(MessageComposerStore, [{\n key: '_getKey',\n value: function _getKey(roomId) {\n return this.prefix + roomId;\n }\n }, {\n key: 'setEditorState',\n value: function setEditorState(roomId, editorState, richText) {\n localStorage.setItem(this._getKey(roomId), (0, _stringify2.default)({\n editor_state: editorState.toJSON({\n preserveSelection: true,\n // XXX: re-hydrating history is not currently supported by fromJSON\n // preserveHistory: true,\n // XXX: this seems like a workaround for selection.isSet being based on anchorKey instead of anchorPath\n preserveKeys: true\n }),\n rich_text: richText\n }));\n }\n }, {\n key: 'getEditorState',\n value: function getEditorState(roomId) {\n var stateStr = localStorage.getItem(this._getKey(roomId));\n\n var state = void 0;\n if (stateStr) {\n state = JSON.parse(stateStr);\n\n // if it does not have the fields we expect then bail\n if (!state || state.rich_text === undefined || state.editor_state === undefined) return;\n state.editor_state = _slate.Value.fromJSON(state.editor_state);\n }\n\n return state;\n }\n }]);\n return MessageComposerStore;\n}();\n\nvar singletonMessageComposerStore = null;\nif (!singletonMessageComposerStore) {\n singletonMessageComposerStore = new MessageComposerStore();\n}\nmodule.exports = singletonMessageComposerStore;\n//# sourceMappingURL=MessageComposerStore.js.map","\"use strict\";\n\nvar _promise = require(\"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require(\"../../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _AccessibleButton = require(\"../elements/AccessibleButton\");\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _PinnedEventTile = require(\"./PinnedEventTile\");\n\nvar _PinnedEventTile2 = _interopRequireDefault(_PinnedEventTile);\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nvar _PinningUtils = require(\"../../../utils/PinningUtils\");\n\nvar _PinningUtils2 = _interopRequireDefault(_PinningUtils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'PinnedEventsPanel',\n propTypes: {\n // The Room from the js-sdk we're going to show pinned events for\n room: _propTypes2.default.object.isRequired,\n\n onCancelClick: _propTypes2.default.func\n },\n\n getInitialState: function getInitialState() {\n return {\n loading: true\n };\n },\n\n componentDidMount: function componentDidMount() {\n this._updatePinnedMessages();\n _MatrixClientPeg2.default.get().on(\"RoomState.events\", this._onStateEvent);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener(\"RoomState.events\", this._onStateEvent);\n }\n },\n\n _onStateEvent: function _onStateEvent(ev) {\n if (ev.getRoomId() === this.props.room.roomId && ev.getType() === \"m.room.pinned_events\") {\n this._updatePinnedMessages();\n }\n },\n\n _updatePinnedMessages: function _updatePinnedMessages() {\n var _this = this;\n\n var pinnedEvents = this.props.room.currentState.getStateEvents(\"m.room.pinned_events\", \"\");\n if (!pinnedEvents || !pinnedEvents.getContent().pinned) {\n this.setState({ loading: false, pinned: [] });\n } else {\n var promises = [];\n var cli = _MatrixClientPeg2.default.get();\n\n pinnedEvents.getContent().pinned.map(function (eventId) {\n promises.push(cli.getEventTimeline(_this.props.room.getUnfilteredTimelineSet(), eventId, 0).then(function (timeline) {\n var event = timeline.getEvents().find(function (e) {\n return e.getId() === eventId;\n });\n return { eventId: eventId, timeline: timeline, event: event };\n }).catch(function (err) {\n console.error(\"Error looking up pinned event \" + eventId + \" in room \" + _this.props.room.roomId);\n console.error(err);\n return null; // return lack of context to avoid unhandled errors\n }));\n });\n\n _promise2.default.all(promises).then(function (contexts) {\n // Filter out the messages before we try to render them\n var pinned = contexts.filter(function (context) {\n return _PinningUtils2.default.isPinnable(context.event);\n });\n\n _this.setState({ loading: false, pinned: pinned });\n });\n }\n\n this._updateReadState();\n },\n\n _updateReadState: function _updateReadState() {\n var pinnedEvents = this.props.room.currentState.getStateEvents(\"m.room.pinned_events\", \"\");\n if (!pinnedEvents) return; // nothing to read\n\n var readStateEvents = [];\n var readPinsEvent = this.props.room.getAccountData(\"im.vector.room.read_pins\");\n if (readPinsEvent && readPinsEvent.getContent()) {\n readStateEvents = readPinsEvent.getContent().event_ids || [];\n }\n\n if (!readStateEvents.includes(pinnedEvents.getId())) {\n readStateEvents.push(pinnedEvents.getId());\n\n // Only keep the last 10 event IDs to avoid infinite growth\n readStateEvents = readStateEvents.reverse().splice(0, 10).reverse();\n\n _MatrixClientPeg2.default.get().setRoomAccountData(this.props.room.roomId, \"im.vector.room.read_pins\", {\n event_ids: readStateEvents\n });\n }\n },\n\n _getPinnedTiles: function _getPinnedTiles() {\n var _this2 = this;\n\n if (this.state.pinned.length === 0) {\n return _react2.default.createElement(\n \"div\",\n null,\n (0, _languageHandler._t)(\"No pinned messages.\")\n );\n }\n\n return this.state.pinned.map(function (context) {\n return _react2.default.createElement(_PinnedEventTile2.default, { key: context.event.getId(),\n mxRoom: _this2.props.room,\n mxEvent: context.event,\n onUnpinned: _this2._updatePinnedMessages });\n });\n },\n\n render: function render() {\n var tiles = _react2.default.createElement(\n \"div\",\n null,\n (0, _languageHandler._t)(\"Loading...\")\n );\n if (this.state && !this.state.loading) {\n tiles = this._getPinnedTiles();\n }\n\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_PinnedEventsPanel\" },\n _react2.default.createElement(\n \"div\",\n { className: \"mx_PinnedEventsPanel_body\" },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: \"mx_PinnedEventsPanel_cancel\", onClick: this.props.onCancelClick },\n _react2.default.createElement(\"img\", { className: \"mx_filterFlipColor\", src: \"img/cancel.svg\", width: \"18\", height: \"18\" })\n ),\n _react2.default.createElement(\n \"h3\",\n { className: \"mx_PinnedEventsPanel_header\" },\n (0, _languageHandler._t)(\"Pinned Messages\")\n ),\n tiles\n )\n );\n }\n}); /*\n Copyright 2017 Travis Ralston\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=PinnedEventsPanel.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar PinningUtils = function () {\n function PinningUtils() {\n (0, _classCallCheck3.default)(this, PinningUtils);\n }\n\n (0, _createClass3.default)(PinningUtils, null, [{\n key: \"isPinnable\",\n\n /**\n * Determines if the given event may be pinned.\n * @param {MatrixEvent} event The event to check.\n * @return {boolean} True if the event may be pinned, false otherwise.\n */\n value: function isPinnable(event) {\n if (!event) return false;\n if (event.getType() !== \"m.room.message\") return false;\n if (event.isRedacted()) return false;\n\n return true;\n }\n }]);\n return PinningUtils;\n}();\n\nexports.default = PinningUtils;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=PinningUtils.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'PresenceLabel',\n\n propTypes: {\n // number of milliseconds ago this user was last active.\n // zero = unknown\n activeAgo: _propTypes2.default.number,\n\n // if true, activeAgo is an approximation and \"Now\" should\n // be shown instead\n currentlyActive: _propTypes2.default.bool,\n\n // offline, online, etc\n presenceState: _propTypes2.default.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n ago: -1,\n presenceState: null\n };\n },\n\n // Return duration as a string using appropriate time units\n // XXX: This would be better handled using a culture-aware library, but we don't use one yet.\n getDuration: function getDuration(time) {\n if (!time) return;\n var t = parseInt(time / 1000);\n var s = t % 60;\n var m = parseInt(t / 60) % 60;\n var h = parseInt(t / (60 * 60)) % 24;\n var d = parseInt(t / (60 * 60 * 24));\n if (t < 60) {\n if (t < 0) {\n return (0, _languageHandler._t)(\"%(duration)ss\", { duration: 0 });\n }\n return (0, _languageHandler._t)(\"%(duration)ss\", { duration: s });\n }\n if (t < 60 * 60) {\n return (0, _languageHandler._t)(\"%(duration)sm\", { duration: m });\n }\n if (t < 24 * 60 * 60) {\n return (0, _languageHandler._t)(\"%(duration)sh\", { duration: h });\n }\n return (0, _languageHandler._t)(\"%(duration)sd\", { duration: d });\n },\n\n getPrettyPresence: function getPrettyPresence(presence, activeAgo, currentlyActive) {\n if (!currentlyActive && activeAgo !== undefined && activeAgo > 0) {\n var duration = this.getDuration(activeAgo);\n if (presence === \"online\") return (0, _languageHandler._t)(\"Online for %(duration)s\", { duration: duration });\n if (presence === \"unavailable\") return (0, _languageHandler._t)(\"Idle for %(duration)s\", { duration: duration }); // XXX: is this actually right?\n if (presence === \"offline\") return (0, _languageHandler._t)(\"Offline for %(duration)s\", { duration: duration });\n return (0, _languageHandler._t)(\"Unknown for %(duration)s\", { duration: duration });\n } else {\n if (presence === \"online\") return (0, _languageHandler._t)(\"Online\");\n if (presence === \"unavailable\") return (0, _languageHandler._t)(\"Idle\"); // XXX: is this actually right?\n if (presence === \"offline\") return (0, _languageHandler._t)(\"Offline\");\n return (0, _languageHandler._t)(\"Unknown\");\n }\n },\n\n render: function render() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_PresenceLabel' },\n this.getPrettyPresence(this.props.presenceState, this.props.activeAgo, this.props.currentlyActive)\n );\n }\n});\n//# sourceMappingURL=PresenceLabel.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _DateUtils = require('../../../DateUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\nvar ReactDOM = require('react-dom');\n\n\nvar sdk = require('../../../index');\n\nvar Velociraptor = require('../../../Velociraptor');\nrequire('../../../VelocityBounce');\n\n\nvar bounce = false;\ntry {\n if (global.localStorage) {\n bounce = global.localStorage.getItem('avatar_bounce') == 'true';\n }\n} catch (e) {}\n\nmodule.exports = React.createClass({\n displayName: 'ReadReceiptMarker',\n\n propTypes: {\n // the RoomMember to show the RR for\n member: _propTypes2.default.object,\n // userId to fallback the avatar to\n // if the member hasn't been loaded yet\n fallbackUserId: _propTypes2.default.string.isRequired,\n\n // number of pixels to offset the avatar from the right of its parent;\n // typically a negative value.\n leftOffset: _propTypes2.default.number,\n\n // true to hide the avatar (it will still be animated)\n hidden: _propTypes2.default.bool,\n\n // don't animate this RR into position\n suppressAnimation: _propTypes2.default.bool,\n\n // an opaque object for storing information about this user's RR in\n // this room\n readReceiptInfo: _propTypes2.default.object,\n\n // A function which is used to check if the parent panel is being\n // unmounted, to avoid unnecessary work. Should return true if we\n // are being unmounted.\n checkUnmounting: _propTypes2.default.func,\n\n // callback for clicks on this RR\n onClick: _propTypes2.default.func,\n\n // Timestamp when the receipt was read\n timestamp: _propTypes2.default.number,\n\n // True to show twelve hour format, false otherwise\n showTwelveHour: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n leftOffset: 0\n };\n },\n\n getInitialState: function getInitialState() {\n // if we are going to animate the RR, we don't show it on first render,\n // and instead just add a placeholder to the DOM; once we've been\n // mounted, we start an animation which moves the RR from its old\n // position.\n return {\n suppressDisplay: !this.props.suppressAnimation\n };\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // before we remove the rr, store its location in the map, so that if\n // it reappears, it can be animated from the right place.\n var rrInfo = this.props.readReceiptInfo;\n if (!rrInfo) {\n return;\n }\n\n // checking the DOM properties can force a re-layout, which can be\n // quite expensive; so if the parent messagepanel is being unmounted,\n // then don't bother with this.\n if (this.props.checkUnmounting && this.props.checkUnmounting()) {\n return;\n }\n\n var avatarNode = ReactDOM.findDOMNode(this);\n rrInfo.top = avatarNode.offsetTop;\n rrInfo.left = avatarNode.offsetLeft;\n rrInfo.parent = avatarNode.offsetParent;\n },\n\n componentDidMount: function componentDidMount() {\n if (!this.state.suppressDisplay) {\n // we've already done our display - nothing more to do.\n return;\n }\n\n // treat new RRs as though they were off the top of the screen\n var oldTop = -15;\n\n var oldInfo = this.props.readReceiptInfo;\n if (oldInfo && oldInfo.parent) {\n oldTop = oldInfo.top + oldInfo.parent.getBoundingClientRect().top;\n }\n\n var newElement = ReactDOM.findDOMNode(this);\n var startTopOffset = void 0;\n if (!newElement.offsetParent) {\n // this seems to happen sometimes for reasons I don't understand\n // the docs for `offsetParent` say it may be null if `display` is\n // `none`, but I can't see why that would happen.\n console.warn('ReadReceiptMarker for ' + this.props.fallbackUserId + ' in has no offsetParent');\n startTopOffset = 0;\n } else {\n startTopOffset = oldTop - newElement.offsetParent.getBoundingClientRect().top;\n }\n\n var startStyles = [];\n var enterTransitionOpts = [];\n\n if (oldInfo && oldInfo.left) {\n // start at the old height and in the old h pos\n\n startStyles.push({ top: startTopOffset + \"px\",\n left: oldInfo.left + \"px\" });\n\n var reorderTransitionOpts = {\n duration: 100,\n easing: 'easeOut'\n };\n\n enterTransitionOpts.push(reorderTransitionOpts);\n }\n\n // then shift to the rightmost column,\n // and then it will drop down to its resting position\n startStyles.push({ top: startTopOffset + 'px', left: '0px' });\n enterTransitionOpts.push({\n duration: bounce ? Math.min(Math.log(Math.abs(startTopOffset)) * 200, 3000) : 300,\n easing: bounce ? 'easeOutBounce' : 'easeOutCubic'\n });\n\n this.setState({\n suppressDisplay: false,\n startStyles: startStyles,\n enterTransitionOpts: enterTransitionOpts\n });\n },\n\n render: function render() {\n var MemberAvatar = sdk.getComponent('avatars.MemberAvatar');\n if (this.state.suppressDisplay) {\n return React.createElement('div', null);\n }\n\n var style = {\n left: this.props.leftOffset + 'px',\n top: '0px',\n visibility: this.props.hidden ? 'hidden' : 'visible'\n };\n\n var title = void 0;\n if (this.props.timestamp) {\n var dateString = (0, _DateUtils.formatDate)(new Date(this.props.timestamp), this.props.showTwelveHour);\n if (!this.props.member || this.props.fallbackUserId === this.props.member.rawDisplayName) {\n title = (0, _languageHandler._t)(\"Seen by %(userName)s at %(dateTime)s\", { userName: this.props.fallbackUserId,\n dateTime: dateString });\n } else {\n title = (0, _languageHandler._t)(\"Seen by %(displayName)s (%(userName)s) at %(dateTime)s\", { displayName: this.props.member.rawDisplayName,\n userName: this.props.fallbackUserId,\n dateTime: dateString });\n }\n }\n\n return React.createElement(\n Velociraptor,\n {\n startStyles: this.state.startStyles,\n enterTransitionOpts: this.state.enterTransitionOpts },\n React.createElement(MemberAvatar, {\n member: this.props.member,\n fallbackUserId: this.props.fallbackUserId,\n 'aria-hidden': 'true',\n width: 14, height: 14, resizeMethod: 'crop',\n style: style,\n title: title,\n onClick: this.props.onClick\n })\n );\n }\n});\n//# sourceMappingURL=ReadReceiptMarker.js.map","'use strict';\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\nvar ReactDom = require('react-dom');\n\nvar Velocity = require('velocity-vector');\n\n/**\n * The Velociraptor contains components and animates transitions with velocity.\n * It will only pick up direct changes to properties ('left', currently), and so\n * will not work for animating positional changes where the position is implicit\n * from DOM order. This makes it a lot simpler and lighter: if you need fully\n * automatic positional animation, look at react-shuffle or similar libraries.\n */\nmodule.exports = React.createClass({\n displayName: 'Velociraptor',\n\n propTypes: {\n // either a list of child nodes, or a single child.\n children: _propTypes2.default.any,\n\n // optional transition information for changing existing children\n transition: _propTypes2.default.object,\n\n // a list of state objects to apply to each child node in turn\n startStyles: _propTypes2.default.array,\n\n // a list of transition options from the corresponding startStyle\n enterTransitionOpts: _propTypes2.default.array\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n startStyles: [],\n enterTransitionOpts: []\n };\n },\n\n componentWillMount: function componentWillMount() {\n this.nodes = {};\n this._updateChildren(this.props.children);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n this._updateChildren(nextProps.children);\n },\n\n /**\n * update `this.children` according to the new list of children given\n */\n _updateChildren: function _updateChildren(newChildren) {\n var self = this;\n var oldChildren = this.children || {};\n this.children = {};\n React.Children.toArray(newChildren).forEach(function (c) {\n if (oldChildren[c.key]) {\n var old = oldChildren[c.key];\n var oldNode = ReactDom.findDOMNode(self.nodes[old.key]);\n\n if (oldNode && oldNode.style.left != c.props.style.left) {\n Velocity(oldNode, { left: c.props.style.left }, self.props.transition).then(function () {\n // special case visibility because it's nonsensical to animate an invisible element\n // so we always hidden->visible pre-transition and visible->hidden after\n if (oldNode.style.visibility == 'visible' && c.props.style.visibility == 'hidden') {\n oldNode.style.visibility = c.props.style.visibility;\n }\n });\n //console.log(\"translation: \"+oldNode.style.left+\" -> \"+c.props.style.left);\n }\n if (oldNode && oldNode.style.visibility == 'hidden' && c.props.style.visibility == 'visible') {\n oldNode.style.visibility = c.props.style.visibility;\n }\n // clone the old element with the props (and children) of the new element\n // so prop updates are still received by the children.\n self.children[c.key] = React.cloneElement(old, c.props, c.props.children);\n } else {\n // new element. If we have a startStyle, use that as the style and go through\n // the enter animations\n var newProps = {};\n var restingStyle = c.props.style;\n\n var startStyles = self.props.startStyles;\n if (startStyles.length > 0) {\n var startStyle = startStyles[0];\n newProps.style = startStyle;\n // console.log(\"mounted@startstyle0: \"+JSON.stringify(startStyle));\n }\n\n newProps.ref = function (n) {\n return self._collectNode(c.key, n, restingStyle);\n };\n\n self.children[c.key] = React.cloneElement(c, newProps);\n }\n });\n },\n\n /**\n * called when a child element is mounted/unmounted\n *\n * @param {string} k key of the child\n * @param {null|Object} node On mount: React node. On unmount: null\n * @param {Object} restingStyle final style\n */\n _collectNode: function _collectNode(k, node, restingStyle) {\n if (node && this.nodes[k] === undefined && this.props.startStyles.length > 0) {\n var startStyles = this.props.startStyles;\n var transitionOpts = this.props.enterTransitionOpts;\n var domNode = ReactDom.findDOMNode(node);\n // start from startStyle 1: 0 is the one we gave it\n // to start with, so now we animate 1 etc.\n for (var i = 1; i < startStyles.length; ++i) {\n Velocity(domNode, startStyles[i], transitionOpts[i - 1]);\n /*\n console.log(\"start:\",\n JSON.stringify(transitionOpts[i-1]),\n \"->\",\n JSON.stringify(startStyles[i]),\n );\n */\n }\n\n // and then we animate to the resting state\n Velocity(domNode, restingStyle, transitionOpts[i - 1]).then(function () {\n // once we've reached the resting state, hide the element if\n // appropriate\n domNode.style.visibility = restingStyle.visibility;\n });\n\n /*\n console.log(\"enter:\",\n JSON.stringify(transitionOpts[i-1]),\n \"->\",\n JSON.stringify(restingStyle));\n */\n } else if (node === null) {\n // Velocity stores data on elements using the jQuery .data()\n // method, and assumes you'll be using jQuery's .remove() to\n // remove the element, but we don't use jQuery, so we need to\n // blow away the element's data explicitly otherwise it will leak.\n // This uses Velocity's internal jQuery compatible wrapper.\n // See the bug at\n // https://github.com/julianshapiro/velocity/issues/300\n // and the FAQ entry, \"Preventing memory leaks when\n // creating/destroying large numbers of elements\"\n // (https://github.com/julianshapiro/velocity/issues/47)\n var _domNode = ReactDom.findDOMNode(this.nodes[k]);\n if (_domNode) Velocity.Utilities.removeData(_domNode);\n }\n this.nodes[k] = node;\n },\n\n render: function render() {\n return React.createElement(\n 'span',\n null,\n (0, _values2.default)(this.children)\n );\n }\n});\n//# sourceMappingURL=Velociraptor.js.map","'use strict';\n\nvar Velocity = require('velocity-vector');\n\n// courtesy of https://github.com/julianshapiro/velocity/issues/283\n// We only use easeOutBounce (easeInBounce is just sort of nonsensical)\nfunction bounce(p) {\n var pow2 = void 0;\n var bounce = 4;\n\n while (p < ((pow2 = Math.pow(2, --bounce)) - 1) / 11) {\n // just sets pow2\n }\n return 1 / Math.pow(4, 3 - bounce) - 7.5625 * Math.pow((pow2 * 3 - 2) / 22 - p, 2);\n}\n\nVelocity.Easings.easeOutBounce = function (p) {\n return 1 - bounce(1 - p);\n};\n//# sourceMappingURL=VelocityBounce.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _RoomDetailRow = require('./RoomDetailRow');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'RoomDetailList',\n\n propTypes: {\n rooms: _propTypes2.default.arrayOf(_RoomDetailRow.roomShape),\n className: _propTypes2.default.string\n },\n\n getRows: function getRows() {\n var _this = this;\n\n if (!this.props.rooms) return [];\n\n var RoomDetailRow = _index2.default.getComponent('rooms.RoomDetailRow');\n return this.props.rooms.map(function (room, index) {\n return _react2.default.createElement(RoomDetailRow, { key: index, room: room, onClick: _this.onDetailsClick });\n });\n },\n\n onDetailsClick: function onDetailsClick(ev, room) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: room.roomId,\n room_alias: room.canonicalAlias || (room.aliases || [])[0]\n });\n },\n\n render: function render() {\n var rows = this.getRows();\n var rooms = void 0;\n if (rows.length === 0) {\n rooms = _react2.default.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('No rooms to show')\n );\n } else {\n rooms = _react2.default.createElement(\n 'table',\n { ref: 'directory_table', className: 'mx_RoomDirectory_table' },\n _react2.default.createElement(\n 'tbody',\n null,\n this.getRows()\n )\n );\n }\n return _react2.default.createElement(\n 'div',\n { className: (0, _classnames2.default)(\"mx_RoomDetailList\", this.props.className) },\n rooms\n );\n }\n}); /*\n Copyright 2017 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomDetailList.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar React = require('react');\n\nmodule.exports = React.createClass({\n displayName: 'RoomDropTarget',\n\n render: function render() {\n return React.createElement(\n 'div',\n { className: 'mx_RoomDropTarget_container' },\n React.createElement(\n 'div',\n { className: 'mx_RoomDropTarget' },\n React.createElement(\n 'div',\n { className: 'mx_RoomDropTarget_label' },\n this.props.label\n )\n )\n );\n }\n});\n//# sourceMappingURL=RoomDropTarget.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _ratelimitedfunc = require('../../../ratelimitedfunc');\n\nvar _ratelimitedfunc2 = _interopRequireDefault(_ratelimitedfunc);\n\nvar _linkifyjs = require('linkifyjs');\n\nvar linkify = _interopRequireWildcard(_linkifyjs);\n\nvar _element = require('linkifyjs/element');\n\nvar _element2 = _interopRequireDefault(_element);\n\nvar _linkifyMatrix = require('../../../linkify-matrix');\n\nvar _linkifyMatrix2 = _interopRequireDefault(_linkifyMatrix);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _ManageIntegsButton = require('../elements/ManageIntegsButton');\n\nvar _ManageIntegsButton2 = _interopRequireDefault(_ManageIntegsButton);\n\nvar _SimpleRoomHeader = require('./SimpleRoomHeader');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _linkifyMatrix2.default)(linkify);\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomHeader',\n\n propTypes: {\n room: _propTypes2.default.object,\n oobData: _propTypes2.default.object,\n editing: _propTypes2.default.bool,\n saving: _propTypes2.default.bool,\n inRoom: _propTypes2.default.bool,\n collapsedRhs: _propTypes2.default.bool,\n onSettingsClick: _propTypes2.default.func,\n onPinnedClick: _propTypes2.default.func,\n onSaveClick: _propTypes2.default.func,\n onSearchClick: _propTypes2.default.func,\n onLeaveClick: _propTypes2.default.func,\n onCancelClick: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n editing: false,\n inRoom: false,\n onSaveClick: function onSaveClick() {},\n onCancelClick: null\n };\n },\n\n componentDidMount: function componentDidMount() {\n var cli = _MatrixClientPeg2.default.get();\n cli.on(\"RoomState.events\", this._onRoomStateEvents);\n cli.on(\"Room.accountData\", this._onRoomAccountData);\n\n // When a room name occurs, RoomState.events is fired *before*\n // room.name is updated. So we have to listen to Room.name as well as\n // RoomState.events.\n if (this.props.room) {\n this.props.room.on(\"Room.name\", this._onRoomNameChange);\n }\n },\n\n componentDidUpdate: function componentDidUpdate() {\n if (this.refs.topic) {\n (0, _element2.default)(this.refs.topic, _linkifyMatrix2.default.options);\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (this.props.room) {\n this.props.room.removeListener(\"Room.name\", this._onRoomNameChange);\n }\n var cli = _MatrixClientPeg2.default.get();\n if (cli) {\n cli.removeListener(\"RoomState.events\", this._onRoomStateEvents);\n cli.removeListener(\"Room.accountData\", this._onRoomAccountData);\n }\n },\n\n _onRoomStateEvents: function _onRoomStateEvents(event, state) {\n if (!this.props.room || event.getRoomId() !== this.props.room.roomId) {\n return;\n }\n\n // redisplay the room name, topic, etc.\n this._rateLimitedUpdate();\n },\n\n _onRoomAccountData: function _onRoomAccountData(event, room) {\n if (!this.props.room || room.roomId !== this.props.room.roomId) return;\n if (event.getType() !== \"im.vector.room.read_pins\") return;\n\n this._rateLimitedUpdate();\n },\n\n _rateLimitedUpdate: new _ratelimitedfunc2.default(function () {\n /* eslint-disable babel/no-invalid-this */\n this.forceUpdate();\n }, 500),\n\n _onRoomNameChange: function _onRoomNameChange(room) {\n this.forceUpdate();\n },\n\n onAvatarPickerClick: function onAvatarPickerClick(ev) {\n if (this.refs.file_label) {\n this.refs.file_label.click();\n }\n },\n\n onAvatarSelected: function onAvatarSelected(ev) {\n var changeAvatar = this.refs.changeAvatar;\n if (!changeAvatar) {\n console.error(\"No ChangeAvatar found to upload image to!\");\n return;\n }\n changeAvatar.onFileSelected(ev).catch(function (err) {\n var errMsg = typeof err === \"string\" ? err : err.error || \"\";\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to set avatar: \" + errMsg);\n _Modal2.default.createTrackedDialog('Failed to set avatar', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Failed to set avatar.\")\n });\n }).done();\n },\n\n onAvatarRemoveClick: function onAvatarRemoveClick() {\n _MatrixClientPeg2.default.get().sendStateEvent(this.props.room.roomId, 'm.room.avatar', { url: null }, '');\n },\n\n onShowRhsClick: function onShowRhsClick(ev) {\n _dispatcher2.default.dispatch({ action: 'show_right_panel' });\n },\n\n onShareRoomClick: function onShareRoomClick(ev) {\n var ShareDialog = _index2.default.getComponent(\"dialogs.ShareDialog\");\n _Modal2.default.createTrackedDialog('share room dialog', '', ShareDialog, {\n target: this.props.room\n });\n },\n\n _hasUnreadPins: function _hasUnreadPins() {\n var currentPinEvent = this.props.room.currentState.getStateEvents(\"m.room.pinned_events\", '');\n if (!currentPinEvent) return false;\n if (currentPinEvent.getContent().pinned && currentPinEvent.getContent().pinned.length <= 0) {\n return false; // no pins == nothing to read\n }\n\n var readPinsEvent = this.props.room.getAccountData(\"im.vector.room.read_pins\");\n if (readPinsEvent && readPinsEvent.getContent()) {\n var readStateEvents = readPinsEvent.getContent().event_ids || [];\n if (readStateEvents) {\n return !readStateEvents.includes(currentPinEvent.getId());\n }\n }\n\n // There's pins, and we haven't read any of them\n return true;\n },\n\n _hasPins: function _hasPins() {\n var currentPinEvent = this.props.room.currentState.getStateEvents(\"m.room.pinned_events\", '');\n if (!currentPinEvent) return false;\n\n return !(currentPinEvent.getContent().pinned && currentPinEvent.getContent().pinned.length <= 0);\n },\n\n /**\n * After editing the settings, get the new name for the room\n *\n * @return {?string} newName or undefined if we didn't let the user edit the room name\n */\n getEditedName: function getEditedName() {\n var newName = void 0;\n if (this.refs.nameEditor) {\n newName = this.refs.nameEditor.getRoomName();\n }\n return newName;\n },\n\n /**\n * After editing the settings, get the new topic for the room\n *\n * @return {?string} newTopic or undefined if we didn't let the user edit the room topic\n */\n getEditedTopic: function getEditedTopic() {\n var newTopic = void 0;\n if (this.refs.topicEditor) {\n newTopic = this.refs.topicEditor.getTopic();\n }\n return newTopic;\n },\n\n render: function render() {\n var RoomAvatar = _index2.default.getComponent(\"avatars.RoomAvatar\");\n var ChangeAvatar = _index2.default.getComponent(\"settings.ChangeAvatar\");\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n\n var name = null;\n var searchStatus = null;\n var topicElement = null;\n var cancelButton = null;\n var spinner = null;\n var saveButton = null;\n var settingsButton = null;\n var pinnedEventsButton = null;\n\n var canSetRoomName = void 0;\n var canSetRoomAvatar = void 0;\n var canSetRoomTopic = void 0;\n if (this.props.editing) {\n // calculate permissions. XXX: this should be done on mount or something\n var userId = _MatrixClientPeg2.default.get().credentials.userId;\n\n canSetRoomName = this.props.room.currentState.maySendStateEvent('m.room.name', userId);\n canSetRoomAvatar = this.props.room.currentState.maySendStateEvent('m.room.avatar', userId);\n canSetRoomTopic = this.props.room.currentState.maySendStateEvent('m.room.topic', userId);\n\n saveButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_textButton', onClick: this.props.onSaveClick },\n (0, _languageHandler._t)(\"Save\")\n );\n }\n\n if (this.props.onCancelClick) {\n cancelButton = _react2.default.createElement(_SimpleRoomHeader.CancelButton, { onClick: this.props.onCancelClick });\n }\n\n if (this.props.saving) {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n spinner = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_spinner' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n if (canSetRoomName) {\n var RoomNameEditor = _index2.default.getComponent(\"rooms.RoomNameEditor\");\n name = _react2.default.createElement(RoomNameEditor, { ref: 'nameEditor', room: this.props.room });\n } else {\n // don't display the search count until the search completes and\n // gives us a valid (possibly zero) searchCount.\n if (this.props.searchInfo && this.props.searchInfo.searchCount !== undefined && this.props.searchInfo.searchCount !== null) {\n searchStatus = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_searchStatus' },\n '\\xA0',\n (0, _languageHandler._t)(\"(~%(count)s results)\", { count: this.props.searchInfo.searchCount })\n );\n }\n\n // XXX: this is a bit inefficient - we could just compare room.name for 'Empty room'...\n var settingsHint = false;\n var members = this.props.room ? this.props.room.getJoinedMembers() : undefined;\n if (members) {\n if (members.length === 1 && members[0].userId === _MatrixClientPeg2.default.get().credentials.userId) {\n var nameEvent = this.props.room.currentState.getStateEvents('m.room.name', '');\n if (!nameEvent || !nameEvent.getContent().name) {\n settingsHint = true;\n }\n }\n }\n\n var roomName = (0, _languageHandler._t)(\"Join Room\");\n if (this.props.oobData && this.props.oobData.name) {\n roomName = this.props.oobData.name;\n } else if (this.props.room) {\n roomName = this.props.room.name;\n }\n\n var emojiTextClasses = (0, _classnames2.default)('mx_RoomHeader_nametext', { mx_RoomHeader_settingsHint: settingsHint });\n name = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_name', onClick: this.props.onSettingsClick },\n _react2.default.createElement(\n EmojiText,\n { dir: 'auto', element: 'div', className: emojiTextClasses, title: roomName },\n roomName\n ),\n searchStatus\n );\n }\n\n if (canSetRoomTopic) {\n var RoomTopicEditor = _index2.default.getComponent(\"rooms.RoomTopicEditor\");\n topicElement = _react2.default.createElement(RoomTopicEditor, { ref: 'topicEditor', room: this.props.room });\n } else {\n var topic = void 0;\n if (this.props.room) {\n var ev = this.props.room.currentState.getStateEvents('m.room.topic', '');\n if (ev) {\n topic = ev.getContent().topic;\n }\n }\n if (topic) {\n topicElement = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_topic', ref: 'topic', title: topic, dir: 'auto' },\n topic\n );\n }\n }\n\n var roomAvatar = null;\n if (canSetRoomAvatar) {\n roomAvatar = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_avatarPicker' },\n _react2.default.createElement(\n 'div',\n { onClick: this.onAvatarPickerClick },\n _react2.default.createElement(ChangeAvatar, { ref: 'changeAvatar', room: this.props.room, showUploadSection: false, width: 48, height: 48 })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_avatarPicker_edit' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'avatarInput', ref: 'file_label' },\n _react2.default.createElement('img', { src: 'img/camera.svg',\n alt: (0, _languageHandler._t)(\"Upload avatar\"), title: (0, _languageHandler._t)(\"Upload avatar\"),\n width: '17', height: '15' })\n ),\n _react2.default.createElement('input', { id: 'avatarInput', type: 'file', onChange: this.onAvatarSelected })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_avatarPicker_remove', onClick: this.onAvatarRemoveClick },\n _react2.default.createElement('img', { src: 'img/cancel.svg',\n className: 'mx_filterFlipColor',\n width: '10',\n alt: (0, _languageHandler._t)(\"Remove avatar\"),\n title: (0, _languageHandler._t)(\"Remove avatar\") })\n )\n );\n } else if (this.props.room || this.props.oobData && this.props.oobData.name) {\n roomAvatar = _react2.default.createElement(RoomAvatar, { room: this.props.room, width: 48, height: 48, oobData: this.props.oobData,\n viewAvatarOnClick: true });\n }\n\n if (this.props.onSettingsClick) {\n settingsButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_button', onClick: this.props.onSettingsClick, title: (0, _languageHandler._t)(\"Settings\") },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-settings-room.svg', width: '16', height: '16' })\n );\n }\n\n if (this.props.onPinnedClick && _SettingsStore2.default.isFeatureEnabled('feature_pinning')) {\n var pinsIndicator = null;\n if (this._hasUnreadPins()) {\n pinsIndicator = _react2.default.createElement('div', { className: 'mx_RoomHeader_pinsIndicator mx_RoomHeader_pinsIndicatorUnread' });\n } else if (this._hasPins()) {\n pinsIndicator = _react2.default.createElement('div', { className: 'mx_RoomHeader_pinsIndicator' });\n }\n\n pinnedEventsButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_button mx_RoomHeader_pinnedButton',\n onClick: this.props.onPinnedClick, title: (0, _languageHandler._t)(\"Pinned Messages\") },\n pinsIndicator,\n _react2.default.createElement(TintableSvg, { src: 'img/icons-pin.svg', width: '16', height: '16' })\n );\n }\n\n // var leave_button;\n // if (this.props.onLeaveClick) {\n // leave_button =\n // <div className=\"mx_RoomHeader_button\" onClick={this.props.onLeaveClick} title=\"Leave room\">\n // <TintableSvg src=\"img/leave.svg\" width=\"26\" height=\"20\"/>\n // </div>;\n // }\n\n var forgetButton = void 0;\n if (this.props.onForgetClick) {\n forgetButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_button', onClick: this.props.onForgetClick, title: (0, _languageHandler._t)(\"Forget room\") },\n _react2.default.createElement(TintableSvg, { src: 'img/leave.svg', width: '26', height: '20' })\n );\n }\n\n var searchButton = void 0;\n if (this.props.onSearchClick && this.props.inRoom) {\n searchButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_button', onClick: this.props.onSearchClick, title: (0, _languageHandler._t)(\"Search\") },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-search.svg', width: '35', height: '35' })\n );\n }\n\n var shareRoomButton = void 0;\n if (this.props.inRoom) {\n shareRoomButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_button', onClick: this.onShareRoomClick, title: (0, _languageHandler._t)('Share room') },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-share.svg', width: '16', height: '16' })\n );\n }\n\n var rightPanelButtons = void 0;\n if (this.props.collapsedRhs) {\n rightPanelButtons = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_button', onClick: this.onShowRhsClick, title: (0, _languageHandler._t)('Show panel') },\n _react2.default.createElement(TintableSvg, { src: 'img/maximise.svg', width: '10', height: '16' })\n );\n }\n\n var rightRow = void 0;\n var manageIntegsButton = void 0;\n if (this.props.room && this.props.room.roomId && this.props.inRoom) {\n manageIntegsButton = _react2.default.createElement(_ManageIntegsButton2.default, {\n room: this.props.room\n });\n }\n\n if (!this.props.editing) {\n rightRow = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_rightRow' },\n settingsButton,\n pinnedEventsButton,\n shareRoomButton,\n manageIntegsButton,\n forgetButton,\n searchButton,\n rightPanelButtons\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { className: \"mx_RoomHeader \" + (this.props.editing ? \"mx_RoomHeader_editing\" : \"\") },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_wrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_leftRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_avatar' },\n roomAvatar\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_info' },\n name,\n topicElement\n )\n ),\n spinner,\n saveButton,\n cancelButton,\n rightRow\n )\n );\n }\n});\n//# sourceMappingURL=RoomHeader.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017, 2018 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _values = require(\"babel-runtime/core-js/object/values\");\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _from = require(\"babel-runtime/core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nvar _set = require(\"babel-runtime/core-js/set\");\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _SettingsStore = require(\"../../../settings/SettingsStore\");\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nvar _Rooms = require(\"../../../Rooms\");\n\nvar Rooms = _interopRequireWildcard(_Rooms);\n\nvar _DMRoomMap = require(\"../../../utils/DMRoomMap\");\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _TagOrderStore = require(\"../../../stores/TagOrderStore\");\n\nvar _TagOrderStore2 = _interopRequireDefault(_TagOrderStore);\n\nvar _RoomListStore = require(\"../../../stores/RoomListStore\");\n\nvar _RoomListStore2 = _interopRequireDefault(_RoomListStore);\n\nvar _GroupStore = require(\"../../../stores/GroupStore\");\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require(\"react\");\nvar ReactDOM = require(\"react-dom\");\n\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\");\nvar CallHandler = require('../../../CallHandler');\nvar dis = require(\"../../../dispatcher\");\nvar sdk = require('../../../index');\nvar rate_limited_func = require('../../../ratelimitedfunc');\n\nvar Receipt = require('../../../utils/Receipt');\n\n\nvar HIDE_CONFERENCE_CHANS = true;\nvar STANDARD_TAGS_REGEX = /^(m\\.(favourite|lowpriority|server_notice)|im\\.vector\\.fake\\.(invite|recent|direct|archived))$/;\n\nfunction labelForTagName(tagName) {\n if (tagName.startsWith('u.')) return tagName.slice(2);\n return tagName;\n}\n\nfunction phraseForSection(section) {\n switch (section) {\n case 'm.favourite':\n return (0, _languageHandler._t)('Drop here to favourite');\n case 'im.vector.fake.direct':\n return (0, _languageHandler._t)('Drop here to tag direct chat');\n case 'im.vector.fake.recent':\n return (0, _languageHandler._t)('Drop here to restore');\n case 'm.lowpriority':\n return (0, _languageHandler._t)('Drop here to demote');\n default:\n return (0, _languageHandler._t)('Drop here to tag %(section)s', { section: section });\n }\n}\n\nmodule.exports = React.createClass({\n displayName: 'RoomList',\n\n propTypes: {\n ConferenceHandler: _propTypes2.default.any,\n collapsed: _propTypes2.default.bool.isRequired,\n searchFilter: _propTypes2.default.string\n },\n\n getInitialState: function getInitialState() {\n return {\n isLoadingLeftRooms: false,\n totalRoomCount: null,\n lists: {},\n incomingCallTag: null,\n incomingCall: null,\n selectedTags: []\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this.mounted = false;\n\n var cli = MatrixClientPeg.get();\n\n cli.on(\"Room\", this.onRoom);\n cli.on(\"deleteRoom\", this.onDeleteRoom);\n cli.on(\"Room.receipt\", this.onRoomReceipt);\n cli.on(\"RoomMember.name\", this.onRoomMemberName);\n cli.on(\"Event.decrypted\", this.onEventDecrypted);\n cli.on(\"accountData\", this.onAccountData);\n cli.on(\"Group.myMembership\", this._onGroupMyMembership);\n\n var dmRoomMap = _DMRoomMap2.default.shared();\n // A map between tags which are group IDs and the room IDs of rooms that should be kept\n // in the room list when filtering by that tag.\n this._visibleRoomsForGroup = {\n // $groupId: [$roomId1, $roomId2, ...],\n };\n // All rooms that should be kept in the room list when filtering.\n // By default, show all rooms.\n this._visibleRooms = MatrixClientPeg.get().getVisibleRooms();\n\n // Listen to updates to group data. RoomList cares about members and rooms in order\n // to filter the room list when group tags are selected.\n this._groupStoreToken = _GroupStore2.default.registerListener(null, function () {\n (_TagOrderStore2.default.getOrderedTags() || []).forEach(function (tag) {\n if (tag[0] !== '+') {\n return;\n }\n // This group's rooms or members may have updated, update rooms for its tag\n _this.updateVisibleRoomsForTag(dmRoomMap, tag);\n _this.updateVisibleRooms();\n });\n });\n\n this._tagStoreToken = _TagOrderStore2.default.addListener(function () {\n // Filters themselves have changed\n _this.updateVisibleRooms();\n });\n\n this._roomListStoreToken = _RoomListStore2.default.addListener(function () {\n _this._delayedRefreshRoomList();\n });\n\n this.refreshRoomList();\n\n // order of the sublists\n //this.listOrder = [];\n\n // loop count to stop a stack overflow if the user keeps waggling the\n // mouse for >30s in a row, or if running under mocha\n this._delayedRefreshRoomListLoopCount = 0;\n },\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = dis.register(this.onAction);\n // Initialise the stickyHeaders when the component is created\n this._updateStickyHeaders(true);\n\n this.mounted = true;\n },\n\n componentDidUpdate: function componentDidUpdate() {\n // Reinitialise the stickyHeaders when the component is updated\n this._updateStickyHeaders(true);\n this._repositionIncomingCallBox(undefined, false);\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n case 'view_tooltip':\n this.tooltip = payload.tooltip;\n break;\n case 'call_state':\n var call = CallHandler.getCall(payload.room_id);\n if (call && call.call_state === 'ringing') {\n this.setState({\n incomingCall: call,\n incomingCallTag: this.getTagNameForRoomId(payload.room_id)\n });\n this._repositionIncomingCallBox(undefined, true);\n } else {\n this.setState({\n incomingCall: null,\n incomingCallTag: null\n });\n }\n break;\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this.mounted = false;\n\n dis.unregister(this.dispatcherRef);\n if (MatrixClientPeg.get()) {\n MatrixClientPeg.get().removeListener(\"Room\", this.onRoom);\n MatrixClientPeg.get().removeListener(\"deleteRoom\", this.onDeleteRoom);\n MatrixClientPeg.get().removeListener(\"Room.receipt\", this.onRoomReceipt);\n MatrixClientPeg.get().removeListener(\"RoomMember.name\", this.onRoomMemberName);\n MatrixClientPeg.get().removeListener(\"Event.decrypted\", this.onEventDecrypted);\n MatrixClientPeg.get().removeListener(\"accountData\", this.onAccountData);\n MatrixClientPeg.get().removeListener(\"Group.myMembership\", this._onGroupMyMembership);\n }\n\n if (this._tagStoreToken) {\n this._tagStoreToken.remove();\n }\n\n if (this._roomListStoreToken) {\n this._roomListStoreToken.remove();\n }\n\n // NB: GroupStore is not a Flux.Store\n if (this._groupStoreToken) {\n this._groupStoreToken.unregister();\n }\n\n // cancel any pending calls to the rate_limited_funcs\n this._delayedRefreshRoomList.cancelPendingCall();\n },\n\n onRoom: function onRoom(room) {\n this.updateVisibleRooms();\n },\n\n onDeleteRoom: function onDeleteRoom(roomId) {\n this.updateVisibleRooms();\n },\n\n onArchivedHeaderClick: function onArchivedHeaderClick(isHidden, scrollToPosition) {\n if (!isHidden) {\n var self = this;\n this.setState({ isLoadingLeftRooms: true });\n\n // Try scrolling to position\n this._updateStickyHeaders(true, scrollToPosition);\n\n // we don't care about the response since it comes down via \"Room\"\n // events.\n MatrixClientPeg.get().syncLeftRooms().catch(function (err) {\n console.error(\"Failed to sync left rooms: %s\", err);\n console.error(err);\n }).finally(function () {\n self.setState({ isLoadingLeftRooms: false });\n });\n }\n },\n\n onSubListHeaderClick: function onSubListHeaderClick(isHidden, scrollToPosition) {\n // The scroll area has expanded or contracted, so re-calculate sticky headers positions\n this._updateStickyHeaders(true, scrollToPosition);\n },\n\n onRoomReceipt: function onRoomReceipt(receiptEvent, room) {\n // because if we read a notification, it will affect notification count\n // only bother updating if there's a receipt from us\n if (Receipt.findReadReceiptFromUserId(receiptEvent, MatrixClientPeg.get().credentials.userId)) {\n this._delayedRefreshRoomList();\n }\n },\n\n onRoomMemberName: function onRoomMemberName(ev, member) {\n this._delayedRefreshRoomList();\n },\n\n onEventDecrypted: function onEventDecrypted(ev) {\n // An event being decrypted may mean we need to re-order the room list\n this._delayedRefreshRoomList();\n },\n\n onAccountData: function onAccountData(ev) {\n if (ev.getType() == 'm.direct') {\n this._delayedRefreshRoomList();\n }\n },\n\n _onGroupMyMembership: function _onGroupMyMembership(group) {\n this.forceUpdate();\n },\n\n _delayedRefreshRoomList: new rate_limited_func(function () {\n this.refreshRoomList();\n }, 500),\n\n // Update which rooms and users should appear in RoomList for a given group tag\n updateVisibleRoomsForTag: function updateVisibleRoomsForTag(dmRoomMap, tag) {\n var _this2 = this;\n\n if (!this.mounted) return;\n // For now, only handle group tags\n if (tag[0] !== '+') return;\n\n this._visibleRoomsForGroup[tag] = [];\n _GroupStore2.default.getGroupRooms(tag).forEach(function (room) {\n return _this2._visibleRoomsForGroup[tag].push(room.roomId);\n });\n _GroupStore2.default.getGroupMembers(tag).forEach(function (member) {\n if (member.userId === MatrixClientPeg.get().credentials.userId) return;\n dmRoomMap.getDMRoomsForUserId(member.userId).forEach(function (roomId) {\n return _this2._visibleRoomsForGroup[tag].push(roomId);\n });\n });\n // TODO: Check if room has been tagged to the group by the user\n },\n\n // Update which rooms and users should appear according to which tags are selected\n updateVisibleRooms: function updateVisibleRooms() {\n var _this3 = this;\n\n var selectedTags = _TagOrderStore2.default.getSelectedTags();\n var visibleGroupRooms = [];\n selectedTags.forEach(function (tag) {\n (_this3._visibleRoomsForGroup[tag] || []).forEach(function (roomId) {\n return visibleGroupRooms.push(roomId);\n });\n });\n\n // If there are any tags selected, constrain the rooms listed to the\n // visible rooms as determined by visibleGroupRooms. Here, we\n // de-duplicate and filter out rooms that the client doesn't know\n // about (hence the Set and the null-guard on `room`).\n if (selectedTags.length > 0) {\n var roomSet = new _set2.default();\n visibleGroupRooms.forEach(function (roomId) {\n var room = MatrixClientPeg.get().getRoom(roomId);\n if (room) {\n roomSet.add(room);\n }\n });\n this._visibleRooms = (0, _from2.default)(roomSet);\n } else {\n // Show all rooms\n this._visibleRooms = MatrixClientPeg.get().getVisibleRooms();\n }\n this._delayedRefreshRoomList();\n },\n\n refreshRoomList: function refreshRoomList() {\n // TODO: ideally we'd calculate this once at start, and then maintain\n // any changes to it incrementally, updating the appropriate sublists\n // as needed.\n // Alternatively we'd do something magical with Immutable.js or similar.\n var lists = this.getRoomLists();\n var totalRooms = 0;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _values2.default)(lists)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var l = _step.value;\n\n totalRooms += l.length;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n this.setState({\n lists: lists,\n totalRoomCount: totalRooms,\n // Do this here so as to not render every time the selected tags\n // themselves change.\n selectedTags: _TagOrderStore2.default.getSelectedTags()\n });\n\n // this._lastRefreshRoomListTs = Date.now();\n },\n\n getTagNameForRoomId: function getTagNameForRoomId(roomId) {\n var lists = _RoomListStore2.default.getRoomLists();\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(lists)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var tagName = _step2.value;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(lists[tagName]), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var room = _step3.value;\n\n // Should be impossible, but guard anyways.\n if (!room) {\n continue;\n }\n var myUserId = MatrixClientPeg.get().getUserId();\n if (HIDE_CONFERENCE_CHANS && Rooms.isConfCallRoom(room, myUserId, this.props.ConferenceHandler)) {\n continue;\n }\n\n if (room.roomId === roomId) return tagName;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return null;\n },\n\n getRoomLists: function getRoomLists() {\n var _this4 = this;\n\n var lists = _RoomListStore2.default.getRoomLists();\n\n var filteredLists = {};\n\n var isRoomVisible = {\n // $roomId: true,\n };\n\n this._visibleRooms.forEach(function (r) {\n isRoomVisible[r.roomId] = true;\n });\n\n (0, _keys2.default)(lists).forEach(function (tagName) {\n var filteredRooms = lists[tagName].filter(function (taggedRoom) {\n // Somewhat impossible, but guard against it anyway\n if (!taggedRoom) {\n return;\n }\n var myUserId = MatrixClientPeg.get().getUserId();\n if (HIDE_CONFERENCE_CHANS && Rooms.isConfCallRoom(taggedRoom, myUserId, _this4.props.ConferenceHandler)) {\n return;\n }\n\n return Boolean(isRoomVisible[taggedRoom.roomId]);\n });\n\n if (filteredRooms.length > 0 || tagName.match(STANDARD_TAGS_REGEX)) {\n filteredLists[tagName] = filteredRooms;\n }\n });\n\n return filteredLists;\n },\n\n _getScrollNode: function _getScrollNode() {\n if (!this.mounted) return null;\n var panel = ReactDOM.findDOMNode(this);\n if (!panel) return null;\n\n if (panel.classList.contains('gm-prevented')) {\n return panel;\n } else {\n return panel.children[2]; // XXX: Fragile!\n }\n },\n\n _whenScrolling: function _whenScrolling(e) {\n this._hideTooltip(e);\n this._repositionIncomingCallBox(e, false);\n this._updateStickyHeaders(false);\n },\n\n _hideTooltip: function _hideTooltip(e) {\n // Hide tooltip when scrolling, as we'll no longer be over the one we were on\n if (this.tooltip && this.tooltip.style.display !== \"none\") {\n this.tooltip.style.display = \"none\";\n }\n },\n\n _repositionIncomingCallBox: function _repositionIncomingCallBox(e, firstTime) {\n var incomingCallBox = document.getElementById(\"incomingCallBox\");\n if (incomingCallBox && incomingCallBox.parentElement) {\n var scrollArea = this._getScrollNode();\n if (!scrollArea) return;\n // Use the offset of the top of the scroll area from the window\n // as this is used to calculate the CSS fixed top position for the stickies\n var scrollAreaOffset = scrollArea.getBoundingClientRect().top + window.pageYOffset;\n // Use the offset of the top of the component from the window\n // as this is used to calculate the CSS fixed top position for the stickies\n var scrollAreaHeight = ReactDOM.findDOMNode(this).getBoundingClientRect().height;\n\n var top = incomingCallBox.parentElement.getBoundingClientRect().top + window.pageYOffset;\n // Make sure we don't go too far up, if the headers aren't sticky\n top = top < scrollAreaOffset ? scrollAreaOffset : top;\n // make sure we don't go too far down, if the headers aren't sticky\n var bottomMargin = scrollAreaOffset + (scrollAreaHeight - 45);\n top = top > bottomMargin ? bottomMargin : top;\n\n incomingCallBox.style.top = top + \"px\";\n incomingCallBox.style.left = scrollArea.offsetLeft + scrollArea.offsetWidth + 12 + \"px\";\n }\n },\n\n // Doing the sticky headers as raw DOM, for speed, as it gets very stuttery if done\n // properly through React\n _initAndPositionStickyHeaders: function _initAndPositionStickyHeaders(initialise, scrollToPosition) {\n var scrollArea = this._getScrollNode();\n if (!scrollArea) return;\n // Use the offset of the top of the scroll area from the window\n // as this is used to calculate the CSS fixed top position for the stickies\n var scrollAreaOffset = scrollArea.getBoundingClientRect().top + window.pageYOffset;\n // Use the offset of the top of the componet from the window\n // as this is used to calculate the CSS fixed top position for the stickies\n var scrollAreaHeight = ReactDOM.findDOMNode(this).getBoundingClientRect().height;\n\n if (initialise) {\n // Get a collection of sticky header containers references\n this.stickies = document.getElementsByClassName(\"mx_RoomSubList_labelContainer\");\n\n if (!this.stickies.length) return;\n\n // Make sure there is sufficient space to do sticky headers: 120px plus all the sticky headers\n this.scrollAreaSufficient = 120 + this.stickies[0].getBoundingClientRect().height * this.stickies.length < scrollAreaHeight;\n\n // Initialise the sticky headers\n if ((0, _typeof3.default)(this.stickies) === \"object\" && this.stickies.length > 0) {\n // Initialise the sticky headers\n Array.prototype.forEach.call(this.stickies, function (sticky, i) {\n // Save the positions of all the stickies within scroll area.\n // These positions are relative to the LHS Panel top\n sticky.dataset.originalPosition = sticky.offsetTop - scrollArea.offsetTop;\n\n // Save and set the sticky heights\n var originalHeight = sticky.getBoundingClientRect().height;\n sticky.dataset.originalHeight = originalHeight;\n sticky.style.height = originalHeight;\n\n return sticky;\n });\n }\n }\n\n if (!this.stickies) return;\n\n var self = this;\n var scrollStuckOffset = 0;\n // Scroll to the passed in position, i.e. a header was clicked and in a scroll to state\n // rather than a collapsable one (see RoomSubList.isCollapsableOnClick method for details)\n if (scrollToPosition !== undefined) {\n scrollArea.scrollTop = scrollToPosition;\n }\n // Stick headers to top and bottom, or free them\n Array.prototype.forEach.call(this.stickies, function (sticky, i, stickyWrappers) {\n var stickyPosition = sticky.dataset.originalPosition;\n var stickyHeight = sticky.dataset.originalHeight;\n var stickyHeader = sticky.childNodes[0];\n var topStuckHeight = stickyHeight * i;\n var bottomStuckHeight = stickyHeight * (stickyWrappers.length - i);\n\n if (self.scrollAreaSufficient && stickyPosition < scrollArea.scrollTop + topStuckHeight) {\n // Top stickies\n sticky.dataset.stuck = \"top\";\n stickyHeader.classList.add(\"mx_RoomSubList_fixed\");\n stickyHeader.style.top = scrollAreaOffset + topStuckHeight + \"px\";\n // If stuck at top adjust the scroll back down to take account of all the stuck headers\n if (scrollToPosition !== undefined && stickyPosition === scrollToPosition) {\n scrollStuckOffset = topStuckHeight;\n }\n } else if (self.scrollAreaSufficient && stickyPosition > scrollArea.scrollTop + scrollAreaHeight - bottomStuckHeight) {\n /// Bottom stickies\n sticky.dataset.stuck = \"bottom\";\n stickyHeader.classList.add(\"mx_RoomSubList_fixed\");\n stickyHeader.style.top = scrollAreaOffset + scrollAreaHeight - bottomStuckHeight + \"px\";\n } else {\n // Not sticky\n sticky.dataset.stuck = \"none\";\n stickyHeader.classList.remove(\"mx_RoomSubList_fixed\");\n stickyHeader.style.top = null;\n }\n });\n // Adjust the scroll to take account of top stuck headers\n if (scrollToPosition !== undefined) {\n scrollArea.scrollTop -= scrollStuckOffset;\n }\n },\n\n _updateStickyHeaders: function _updateStickyHeaders(initialise, scrollToPosition) {\n var self = this;\n\n if (initialise) {\n // Useing setTimeout to ensure that the code is run after the painting\n // of the newly rendered object as using requestAnimationFrame caused\n // artefacts to appear on screen briefly\n window.setTimeout(function () {\n self._initAndPositionStickyHeaders(initialise, scrollToPosition);\n });\n } else {\n this._initAndPositionStickyHeaders(initialise, scrollToPosition);\n }\n },\n\n onShowMoreRooms: function onShowMoreRooms() {\n // kick gemini in the balls to get it to wake up\n // XXX: uuuuuuugh.\n if (!this._gemScroll) return;\n this._gemScroll.forceUpdate();\n },\n\n _getEmptyContent: function _getEmptyContent(section) {\n if (this.state.selectedTags.length > 0) {\n return null;\n }\n\n var RoomDropTarget = sdk.getComponent('rooms.RoomDropTarget');\n\n if (this.props.collapsed) {\n return React.createElement(RoomDropTarget, { label: \"\" });\n }\n\n var StartChatButton = sdk.getComponent('elements.StartChatButton');\n var RoomDirectoryButton = sdk.getComponent('elements.RoomDirectoryButton');\n var CreateRoomButton = sdk.getComponent('elements.CreateRoomButton');\n\n var tip = null;\n\n switch (section) {\n case 'im.vector.fake.direct':\n tip = React.createElement(\n \"div\",\n { className: \"mx_RoomList_emptySubListTip\" },\n (0, _languageHandler._t)(\"Press <StartChatButton> to start a chat with someone\", {}, { 'StartChatButton': React.createElement(StartChatButton, { size: \"16\", callout: true }) })\n );\n break;\n case 'im.vector.fake.recent':\n tip = React.createElement(\n \"div\",\n { className: \"mx_RoomList_emptySubListTip\" },\n (0, _languageHandler._t)(\"You're not in any rooms yet! Press <CreateRoomButton> to make a room or\" + \" <RoomDirectoryButton> to browse the directory\", {}, {\n 'CreateRoomButton': React.createElement(CreateRoomButton, { size: \"16\", callout: true }),\n 'RoomDirectoryButton': React.createElement(RoomDirectoryButton, { size: \"16\", callout: true })\n })\n );\n break;\n }\n\n if (tip) {\n return React.createElement(\n \"div\",\n { className: \"mx_RoomList_emptySubListTip_container\" },\n tip\n );\n }\n\n // We don't want to display drop targets if there are no room tiles to drag'n'drop\n if (this.state.totalRoomCount === 0) {\n return null;\n }\n\n var labelText = phraseForSection(section);\n\n return React.createElement(RoomDropTarget, { label: labelText });\n },\n\n _getHeaderItems: function _getHeaderItems(section) {\n var StartChatButton = sdk.getComponent('elements.StartChatButton');\n var RoomDirectoryButton = sdk.getComponent('elements.RoomDirectoryButton');\n var CreateRoomButton = sdk.getComponent('elements.CreateRoomButton');\n switch (section) {\n case 'im.vector.fake.direct':\n return React.createElement(\n \"span\",\n { className: \"mx_RoomList_headerButtons\" },\n React.createElement(StartChatButton, { size: \"16\" })\n );\n case 'im.vector.fake.recent':\n return React.createElement(\n \"span\",\n { className: \"mx_RoomList_headerButtons\" },\n React.createElement(RoomDirectoryButton, { size: \"16\" }),\n React.createElement(CreateRoomButton, { size: \"16\" })\n );\n }\n },\n\n _makeGroupInviteTiles: function _makeGroupInviteTiles(filter) {\n var ret = [];\n var lcFilter = filter && filter.toLowerCase();\n\n var GroupInviteTile = sdk.getComponent('groups.GroupInviteTile');\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)(MatrixClientPeg.get().getGroups()), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var group = _step4.value;\n var groupId = group.groupId,\n name = group.name,\n myMembership = group.myMembership;\n // filter to only groups in invite state and group_id starts with filter or group name includes it\n\n if (myMembership !== 'invite') continue;\n if (lcFilter && !groupId.toLowerCase().startsWith(lcFilter) && !(name && name.toLowerCase().includes(lcFilter))) continue;\n ret.push(React.createElement(GroupInviteTile, { key: groupId, group: group, collapsed: this.props.collapsed }));\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n return ret;\n },\n _collectGemini: function _collectGemini(gemScroll) {\n this._gemScroll = gemScroll;\n },\n\n\n render: function render() {\n var _this5 = this;\n\n var RoomSubList = sdk.getComponent('structures.RoomSubList');\n var GeminiScrollbarWrapper = sdk.getComponent(\"elements.GeminiScrollbarWrapper\");\n\n // XXX: we can't detect device-level (localStorage) settings onChange as the SettingsStore does not notify\n // so checking on every render is the sanest thing at this time.\n var showEmpty = _SettingsStore2.default.getValue('RoomSubList.showEmpty');\n\n var incomingCallIfTaggedAs = function incomingCallIfTaggedAs(tagName) {\n if (!_this5.state.incomingCall) return null;\n if (_this5.state.incomingCallTag !== tagName) return null;\n return _this5.state.incomingCall;\n };\n\n var self = this;\n return React.createElement(\n GeminiScrollbarWrapper,\n { className: \"mx_RoomList_scrollbar\",\n autoshow: true, onScroll: self._whenScrolling, onResize: self._whenScrolling, wrappedRef: this._collectGemini },\n React.createElement(\n \"div\",\n { className: \"mx_RoomList\" },\n React.createElement(RoomSubList, { list: [],\n extraTiles: this._makeGroupInviteTiles(self.props.searchFilter),\n label: (0, _languageHandler._t)('Community Invites'),\n editable: false,\n order: \"recent\",\n isInvite: true,\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty\n }),\n React.createElement(RoomSubList, { list: self.state.lists['im.vector.fake.invite'],\n label: (0, _languageHandler._t)('Invites'),\n editable: false,\n order: \"recent\",\n isInvite: true,\n incomingCall: incomingCallIfTaggedAs('im.vector.fake.invite'),\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty\n }),\n React.createElement(RoomSubList, { list: self.state.lists['m.favourite'],\n label: (0, _languageHandler._t)('Favourites'),\n tagName: \"m.favourite\",\n emptyContent: this._getEmptyContent('m.favourite'),\n editable: true,\n order: \"manual\",\n incomingCall: incomingCallIfTaggedAs('m.favourite'),\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty }),\n React.createElement(RoomSubList, { list: self.state.lists['im.vector.fake.direct'],\n label: (0, _languageHandler._t)('People'),\n tagName: \"im.vector.fake.direct\",\n emptyContent: this._getEmptyContent('im.vector.fake.direct'),\n headerItems: this._getHeaderItems('im.vector.fake.direct'),\n editable: true,\n order: \"recent\",\n incomingCall: incomingCallIfTaggedAs('im.vector.fake.direct'),\n collapsed: self.props.collapsed,\n alwaysShowHeader: true,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty }),\n React.createElement(RoomSubList, { list: self.state.lists['im.vector.fake.recent'],\n label: (0, _languageHandler._t)('Rooms'),\n editable: true,\n emptyContent: this._getEmptyContent('im.vector.fake.recent'),\n headerItems: this._getHeaderItems('im.vector.fake.recent'),\n order: \"recent\",\n incomingCall: incomingCallIfTaggedAs('im.vector.fake.recent'),\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty }),\n (0, _keys2.default)(self.state.lists).map(function (tagName) {\n if (!tagName.match(STANDARD_TAGS_REGEX)) {\n return React.createElement(RoomSubList, { list: self.state.lists[tagName],\n key: tagName,\n label: labelForTagName(tagName),\n tagName: tagName,\n emptyContent: _this5._getEmptyContent(tagName),\n editable: true,\n order: \"manual\",\n incomingCall: incomingCallIfTaggedAs(tagName),\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty });\n }\n }),\n React.createElement(RoomSubList, { list: self.state.lists['m.lowpriority'],\n label: (0, _languageHandler._t)('Low priority'),\n tagName: \"m.lowpriority\",\n emptyContent: this._getEmptyContent('m.lowpriority'),\n editable: true,\n order: \"recent\",\n incomingCall: incomingCallIfTaggedAs('m.lowpriority'),\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty }),\n React.createElement(RoomSubList, { list: self.state.lists['im.vector.fake.archived'],\n emptyContent: self.props.collapsed ? null : React.createElement(\n \"div\",\n { className: \"mx_RoomList_emptySubListTip_container\" },\n React.createElement(\n \"div\",\n { className: \"mx_RoomList_emptySubListTip\" },\n (0, _languageHandler._t)('You have no historical rooms')\n )\n ),\n label: (0, _languageHandler._t)('Historical'),\n editable: false,\n order: \"recent\",\n collapsed: self.props.collapsed,\n alwaysShowHeader: true,\n startAsHidden: true,\n showSpinner: self.state.isLoadingLeftRooms,\n onHeaderClick: self.onArchivedHeaderClick,\n incomingCall: incomingCallIfTaggedAs('im.vector.fake.archived'),\n searchFilter: self.props.searchFilter,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty }),\n React.createElement(RoomSubList, { list: self.state.lists['m.server_notice'],\n label: (0, _languageHandler._t)('System Alerts'),\n tagName: \"m.lowpriority\",\n editable: false,\n order: \"recent\",\n incomingCall: incomingCallIfTaggedAs('m.server_notice'),\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: false })\n )\n );\n }\n});\n//# sourceMappingURL=RoomList.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar sdk = require('../../../index');\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\n\n\nmodule.exports = React.createClass({\n displayName: 'RoomNameEditor',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n name: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n var room = this.props.room;\n var name = room.currentState.getStateEvents('m.room.name', '');\n var myId = MatrixClientPeg.get().credentials.userId;\n var defaultName = room.getDefaultRoomName(myId);\n\n this.setState({\n name: name ? name.getContent().name : ''\n });\n\n this._placeholderName = (0, _languageHandler._t)(\"Unnamed Room\");\n if (defaultName && defaultName !== 'Empty room') {\n // default name from JS SDK, needs no translation as we don't ever show it.\n this._placeholderName += \" (\" + defaultName + \")\";\n }\n },\n\n getRoomName: function getRoomName() {\n return this.state.name;\n },\n\n _onValueChanged: function _onValueChanged(value, shouldSubmit) {\n this.setState({\n name: value\n });\n },\n\n render: function render() {\n var EditableText = sdk.getComponent(\"elements.EditableText\");\n\n return React.createElement(\n 'div',\n { className: 'mx_RoomHeader_name' },\n React.createElement(EditableText, { ref: 'editor',\n className: 'mx_RoomHeader_nametext mx_RoomHeader_editable',\n placeholderClassName: 'mx_RoomHeader_placeholder',\n placeholder: this._placeholderName,\n blurToCancel: false,\n initialValue: this.state.name,\n onValueChanged: this._onValueChanged,\n dir: 'auto' })\n );\n }\n});\n//# sourceMappingURL=RoomNameEditor.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar sdk = require('../../../index');\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\n\nmodule.exports = React.createClass({\n displayName: 'RoomPreviewBar',\n\n propTypes: {\n onJoinClick: _propTypes2.default.func,\n onRejectClick: _propTypes2.default.func,\n onForgetClick: _propTypes2.default.func,\n\n // if inviterName is specified, the preview bar will shown an invite to the room.\n // You should also specify onRejectClick if specifiying inviterName\n inviterName: _propTypes2.default.string,\n\n // If invited by 3rd party invite, the email address the invite was sent to\n invitedEmail: _propTypes2.default.string,\n\n // A standard client/server API error object. If supplied, indicates that the\n // caller was unable to fetch details about the room for the given reason.\n error: _propTypes2.default.object,\n\n canPreview: _propTypes2.default.bool,\n room: _propTypes2.default.object,\n\n // When a spinner is present, a spinnerState can be specified to indicate the\n // purpose of the spinner.\n spinner: _propTypes2.default.bool,\n spinnerState: _propTypes2.default.oneOf([\"joining\"]),\n\n // The alias that was used to access this room, if appropriate\n // If given, this will be how the room is referred to (eg.\n // in error messages).\n roomAlias: _propTypes2.default.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onJoinClick: function onJoinClick() {},\n canPreview: true\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n busy: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n // If this is an invite and we've been told what email\n // address was invited, fetch the user's list of 3pids\n // so we can check them against the one that was invited\n if (this.props.inviterName && this.props.invitedEmail) {\n this.setState({ busy: true });\n MatrixClientPeg.get().lookupThreePid('email', this.props.invitedEmail).finally(function () {\n _this.setState({ busy: false });\n }).done(function (result) {\n _this.setState({ invitedEmailMxid: result.mxid });\n }, function (err) {\n _this.setState({ threePidFetchError: err });\n });\n }\n },\n\n _roomNameElement: function _roomNameElement() {\n return this.props.room ? this.props.room.name : this.props.room_alias || \"\";\n },\n\n render: function render() {\n var _this2 = this;\n\n var joinBlock = void 0;var previewBlock = void 0;\n\n if (this.props.spinner || this.state.busy) {\n var Spinner = sdk.getComponent(\"elements.Spinner\");\n var spinnerIntro = \"\";\n if (this.props.spinnerState === \"joining\") {\n spinnerIntro = (0, _languageHandler._t)(\"Joining room...\");\n }\n return React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar' },\n React.createElement(\n 'p',\n { className: 'mx_RoomPreviewBar_spinnerIntro' },\n spinnerIntro\n ),\n React.createElement(Spinner, null)\n );\n }\n\n var myMember = this.props.room ? this.props.room.getMember(MatrixClientPeg.get().getUserId()) : null;\n var kicked = myMember && myMember.isKicked();\n var banned = myMember && myMember && myMember.membership == 'ban';\n\n if (this.props.inviterName) {\n var emailMatchBlock = void 0;\n if (this.props.invitedEmail) {\n if (this.state.threePidFetchError) {\n emailMatchBlock = React.createElement(\n 'div',\n { className: 'error' },\n (0, _languageHandler._t)(\"Unable to ascertain that the address this invite was sent to matches one associated with your account.\")\n );\n } else if (this.state.invitedEmailMxid != MatrixClientPeg.get().credentials.userId) {\n emailMatchBlock = React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_warning' },\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_warningIcon' },\n React.createElement('img', { src: 'img/warning.svg', width: '24', height: '23', title: '/!\\\\\\\\', alt: '/!\\\\\\\\' })\n ),\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_warningText' },\n (0, _languageHandler._t)(\"This invitation was sent to an email address which is not associated with this account:\"),\n React.createElement(\n 'b',\n null,\n React.createElement(\n 'span',\n { className: 'email' },\n this.props.invitedEmail\n )\n ),\n React.createElement('br', null),\n (0, _languageHandler._t)(\"You may wish to login with a different account, or add this email to this account.\")\n )\n );\n }\n }\n joinBlock = React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_invite_text' },\n (0, _languageHandler._t)('You have been invited to join this room by %(inviterName)s', { inviterName: this.props.inviterName })\n ),\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_join_text' },\n (0, _languageHandler._t)('Would you like to <acceptText>accept</acceptText> or <declineText>decline</declineText> this invitation?', {}, {\n 'acceptText': function acceptText(sub) {\n return React.createElement(\n 'a',\n { onClick: _this2.props.onJoinClick },\n sub\n );\n },\n 'declineText': function declineText(sub) {\n return React.createElement(\n 'a',\n { onClick: _this2.props.onRejectClick },\n sub\n );\n }\n })\n ),\n emailMatchBlock\n );\n } else if (kicked || banned) {\n var roomName = this._roomNameElement();\n var kickerMember = this.props.room.currentState.getMember(myMember.events.member.getSender());\n var kickerName = kickerMember ? kickerMember.name : myMember.events.member.getSender();\n var reason = void 0;\n if (myMember.events.member.getContent().reason) {\n reason = React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Reason: %(reasonText)s\", { reasonText: myMember.events.member.getContent().reason })\n );\n }\n var rejoinBlock = void 0;\n if (!banned) {\n rejoinBlock = React.createElement(\n 'div',\n null,\n React.createElement(\n 'a',\n { onClick: this.props.onJoinClick },\n React.createElement(\n 'b',\n null,\n (0, _languageHandler._t)(\"Rejoin\")\n )\n )\n );\n }\n\n var actionText = void 0;\n if (kicked) {\n if (roomName) {\n actionText = (0, _languageHandler._t)(\"You have been kicked from %(roomName)s by %(userName)s.\", { roomName: roomName, userName: kickerName });\n } else {\n actionText = (0, _languageHandler._t)(\"You have been kicked from this room by %(userName)s.\", { userName: kickerName });\n }\n } else if (banned) {\n if (roomName) {\n actionText = (0, _languageHandler._t)(\"You have been banned from %(roomName)s by %(userName)s.\", { roomName: roomName, userName: kickerName });\n } else {\n actionText = (0, _languageHandler._t)(\"You have been banned from this room by %(userName)s.\", { userName: kickerName });\n }\n } // no other options possible due to the kicked || banned check above.\n\n joinBlock = React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_join_text' },\n actionText,\n React.createElement('br', null),\n reason,\n rejoinBlock,\n React.createElement(\n 'a',\n { onClick: this.props.onForgetClick },\n React.createElement(\n 'b',\n null,\n (0, _languageHandler._t)(\"Forget room\")\n )\n )\n )\n );\n } else if (this.props.error) {\n var name = this.props.roomAlias || (0, _languageHandler._t)(\"This room\");\n var error = void 0;\n if (this.props.error.errcode == 'M_NOT_FOUND') {\n error = (0, _languageHandler._t)(\"%(roomName)s does not exist.\", { roomName: name });\n } else {\n error = (0, _languageHandler._t)(\"%(roomName)s is not accessible at this time.\", { roomName: name });\n }\n joinBlock = React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_join_text' },\n error\n )\n );\n } else {\n var _name = this._roomNameElement();\n joinBlock = React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_join_text' },\n _name ? (0, _languageHandler._t)('You are trying to access %(roomName)s.', { roomName: _name }) : (0, _languageHandler._t)('You are trying to access a room.'),\n React.createElement('br', null),\n (0, _languageHandler._t)(\"<a>Click here</a> to join the discussion!\", {}, { 'a': function a(sub) {\n return React.createElement(\n 'a',\n { onClick: _this2.props.onJoinClick },\n React.createElement(\n 'b',\n null,\n sub\n )\n );\n } })\n )\n );\n }\n\n if (this.props.canPreview) {\n previewBlock = React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_preview_text' },\n (0, _languageHandler._t)('This is a preview of this room. Room interactions have been disabled'),\n '.'\n );\n }\n\n return React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar' },\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_wrapper' },\n joinBlock,\n previewBlock\n )\n );\n }\n});\n//# sourceMappingURL=RoomPreviewBar.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require(\"../../../index\");\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nvar _Modal = require(\"../../../Modal\");\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _MatrixClientPeg = require(\"../../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar RoomRecoveryReminder = function (_React$PureComponent) {\n (0, _inherits3.default)(RoomRecoveryReminder, _React$PureComponent);\n\n function RoomRecoveryReminder(props) {\n (0, _classCallCheck3.default)(this, RoomRecoveryReminder);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (RoomRecoveryReminder.__proto__ || (0, _getPrototypeOf2.default)(RoomRecoveryReminder)).call(this, props));\n\n _this.showSetupDialog = function () {\n if (_this.state.unverifiedDevice) {\n // A key backup exists for this account, but the creating device is not\n // verified, so we'll show the device verify dialog.\n // TODO: Should change to a restore key backup flow that checks the recovery\n // passphrase while at the same time also cross-signing the device as well in\n // a single flow (for cases where a key backup exists but the backup creating\n // device is unverified). Since we don't have that yet, we'll look for an\n // unverified device and verify it. Note that this means we won't restore\n // keys yet; instead we'll only trust the backup for sending our own new keys\n // to it.\n var DeviceVerifyDialog = _index2.default.getComponent('views.dialogs.DeviceVerifyDialog');\n _Modal2.default.createTrackedDialog('Device Verify Dialog', '', DeviceVerifyDialog, {\n userId: _MatrixClientPeg2.default.get().credentials.userId,\n device: _this.state.unverifiedDevice,\n onFinished: _this.props.onFinished\n });\n return;\n }\n\n // The default case assumes that a key backup doesn't exist for this account, so\n // we'll show the create key backup flow.\n _Modal2.default.createTrackedDialogAsync(\"Key Backup\", \"Key Backup\", import(\"../../../async-components/views/dialogs/keybackup/CreateKeyBackupDialog\"), {\n onFinished: _this.props.onFinished\n });\n };\n\n _this.onDontAskAgainClick = function () {\n // When you choose \"Don't ask again\" from the room reminder, we show a\n // dialog to confirm the choice.\n _Modal2.default.createTrackedDialogAsync(\"Ignore Recovery Reminder\", \"Ignore Recovery Reminder\", import(\"../../../async-components/views/dialogs/keybackup/IgnoreRecoveryReminderDialog\"), {\n onDontAskAgain: function onDontAskAgain() {\n // Report false to the caller, who should prevent the\n // reminder from appearing in the future.\n _this.props.onFinished(false);\n },\n onSetup: function onSetup() {\n _this.showSetupDialog();\n }\n });\n };\n\n _this.onSetupClick = function () {\n _this.showSetupDialog();\n };\n\n _this.state = {\n loading: true,\n error: null,\n unverifiedDevice: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(RoomRecoveryReminder, [{\n key: \"componentWillMount\",\n value: function componentWillMount() {\n this._loadBackupStatus();\n }\n }, {\n key: \"_loadBackupStatus\",\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var backupSigStatus, backupInfo, unverifiedDevice, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, sig;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n backupSigStatus = void 0;\n _context.prev = 1;\n _context.next = 4;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().getKeyBackupVersion());\n\n case 4:\n backupInfo = _context.sent;\n _context.next = 7;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().isKeyBackupTrusted(backupInfo));\n\n case 7:\n backupSigStatus = _context.sent;\n _context.next = 15;\n break;\n\n case 10:\n _context.prev = 10;\n _context.t0 = _context[\"catch\"](1);\n\n console.log(\"Unable to fetch key backup status\", _context.t0);\n this.setState({\n loading: false,\n error: _context.t0\n });\n return _context.abrupt(\"return\");\n\n case 15:\n unverifiedDevice = void 0;\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 19;\n _iterator = (0, _getIterator3.default)(backupSigStatus.sigs);\n\n case 21:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context.next = 29;\n break;\n }\n\n sig = _step.value;\n\n if (sig.device.isVerified()) {\n _context.next = 26;\n break;\n }\n\n unverifiedDevice = sig.device;\n return _context.abrupt(\"break\", 29);\n\n case 26:\n _iteratorNormalCompletion = true;\n _context.next = 21;\n break;\n\n case 29:\n _context.next = 35;\n break;\n\n case 31:\n _context.prev = 31;\n _context.t1 = _context[\"catch\"](19);\n _didIteratorError = true;\n _iteratorError = _context.t1;\n\n case 35:\n _context.prev = 35;\n _context.prev = 36;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 38:\n _context.prev = 38;\n\n if (!_didIteratorError) {\n _context.next = 41;\n break;\n }\n\n throw _iteratorError;\n\n case 41:\n return _context.finish(38);\n\n case 42:\n return _context.finish(35);\n\n case 43:\n this.setState({\n loading: false,\n unverifiedDevice: unverifiedDevice\n });\n\n case 44:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[1, 10], [19, 31, 35, 43], [36,, 38, 42]]);\n }));\n\n function _loadBackupStatus() {\n return _ref.apply(this, arguments);\n }\n\n return _loadBackupStatus;\n }()\n }, {\n key: \"render\",\n value: function render() {\n if (this.state.loading) {\n return null;\n }\n\n var AccessibleButton = _index2.default.getComponent(\"views.elements.AccessibleButton\");\n\n var body = void 0;\n if (this.state.error) {\n body = _react2.default.createElement(\n \"div\",\n { className: \"error\" },\n (0, _languageHandler._t)(\"Unable to load key backup status\")\n );\n } else if (this.state.unverifiedDevice) {\n // A key backup exists for this account, but the creating device is not\n // verified.\n body = (0, _languageHandler._t)(\"To view your secure message history and ensure you can view new \" + \"messages on future devices, set up Secure Message Recovery.\");\n } else {\n // The default case assumes that a key backup doesn't exist for this account.\n // (This component doesn't currently check that itself.)\n body = (0, _languageHandler._t)(\"If you log out or use another device, you'll lose your \" + \"secure message history. To prevent this, set up Secure \" + \"Message Recovery.\");\n }\n\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_RoomRecoveryReminder\" },\n _react2.default.createElement(\n \"div\",\n { className: \"mx_RoomRecoveryReminder_header\" },\n (0, _languageHandler._t)(\"Secure Message Recovery\")\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"mx_RoomRecoveryReminder_body\" },\n body\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"mx_RoomRecoveryReminder_buttons\" },\n _react2.default.createElement(\n AccessibleButton,\n { className: \"mx_RoomRecoveryReminder_button mx_RoomRecoveryReminder_secondary\",\n onClick: this.onDontAskAgainClick },\n (0, _languageHandler._t)(\"Don't ask again\")\n ),\n _react2.default.createElement(\n AccessibleButton,\n { className: \"mx_RoomRecoveryReminder_button\",\n onClick: this.onSetupClick },\n (0, _languageHandler._t)(\"Set up\")\n )\n )\n );\n }\n }]);\n return RoomRecoveryReminder;\n}(_react2.default.PureComponent);\n\nRoomRecoveryReminder.propTypes = {\n onFinished: _propTypes2.default.func.isRequired\n};\nexports.default = RoomRecoveryReminder;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=RoomRecoveryReminder.js.map","'use strict';\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _ObjectUtils = require('../../../ObjectUtils');\n\nvar _ObjectUtils2 = _interopRequireDefault(_ObjectUtils);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// parse a string as an integer; if the input is undefined, or cannot be parsed\n// as an integer, return a default.\nfunction parseIntWithDefault(val, def) {\n var res = parseInt(val);\n return isNaN(res) ? def : res;\n} /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar plEventsToLabels = {\n // These will be translated for us later.\n \"m.room.avatar\": (0, _languageHandler._td)(\"To change the room's avatar, you must be a\"),\n \"m.room.name\": (0, _languageHandler._td)(\"To change the room's name, you must be a\"),\n \"m.room.canonical_alias\": (0, _languageHandler._td)(\"To change the room's main address, you must be a\"),\n \"m.room.history_visibility\": (0, _languageHandler._td)(\"To change the room's history visibility, you must be a\"),\n \"m.room.power_levels\": (0, _languageHandler._td)(\"To change the permissions in the room, you must be a\"),\n \"m.room.topic\": (0, _languageHandler._td)(\"To change the topic, you must be a\"),\n\n \"im.vector.modular.widgets\": (0, _languageHandler._td)(\"To modify widgets in the room, you must be a\")\n};\n\nvar plEventsToShow = {\n // If an event is listed here, it will be shown in the PL settings. Defaults will be calculated.\n \"m.room.avatar\": { isState: true },\n \"m.room.name\": { isState: true },\n \"m.room.canonical_alias\": { isState: true },\n \"m.room.history_visibility\": { isState: true },\n \"m.room.power_levels\": { isState: true },\n \"m.room.topic\": { isState: true },\n\n \"im.vector.modular.widgets\": { isState: true }\n};\n\nvar BannedUser = _react2.default.createClass({\n displayName: 'BannedUser',\n\n propTypes: {\n canUnban: _propTypes2.default.bool,\n member: _propTypes2.default.object.isRequired, // js-sdk RoomMember\n by: _propTypes2.default.string.isRequired,\n reason: _propTypes2.default.string\n },\n\n _onUnbanClick: function _onUnbanClick() {\n var _this = this;\n\n var ConfirmUserActionDialog = _index2.default.getComponent(\"dialogs.ConfirmUserActionDialog\");\n _Modal2.default.createTrackedDialog('Confirm User Action Dialog', 'onUnbanClick', ConfirmUserActionDialog, {\n member: this.props.member,\n action: (0, _languageHandler._t)('Unban'),\n title: (0, _languageHandler._t)('Unban this user?'),\n danger: false,\n onFinished: function onFinished(proceed) {\n if (!proceed) return;\n\n _MatrixClientPeg2.default.get().unban(_this.props.member.roomId, _this.props.member.userId).catch(function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to unban: \" + err);\n _Modal2.default.createTrackedDialog('Failed to unban', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: (0, _languageHandler._t)('Failed to unban')\n });\n }).done();\n }\n });\n },\n\n render: function render() {\n var unbanButton = void 0;\n\n if (this.props.canUnban) {\n unbanButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomSettings_unbanButton', onClick: this._onUnbanClick },\n (0, _languageHandler._t)('Unban')\n );\n }\n\n return _react2.default.createElement(\n 'li',\n null,\n unbanButton,\n _react2.default.createElement(\n 'span',\n { title: (0, _languageHandler._t)(\"Banned by %(displayName)s\", { displayName: this.props.by }) },\n _react2.default.createElement(\n 'strong',\n null,\n this.props.member.name\n ),\n ' ',\n this.props.member.userId,\n this.props.reason ? \" \" + (0, _languageHandler._t)('Reason') + \": \" + this.props.reason : \"\"\n )\n );\n }\n});\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomSettings',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n var tags = {};\n (0, _keys2.default)(this.props.room.tags).forEach(function (tagName) {\n tags[tagName] = ['yep'];\n });\n\n return {\n name: this._yankValueFromEvent(\"m.room.name\", \"name\"),\n topic: this._yankValueFromEvent(\"m.room.topic\", \"topic\"),\n join_rule: this._yankValueFromEvent(\"m.room.join_rules\", \"join_rule\"),\n history_visibility: this._yankValueFromEvent(\"m.room.history_visibility\", \"history_visibility\"),\n guest_access: this._yankValueFromEvent(\"m.room.guest_access\", \"guest_access\"),\n powerLevels: this._yankContentFromEvent(\"m.room.power_levels\", {}),\n powerLevelsChanged: false,\n tags_changed: false,\n tags: tags,\n // isRoomPublished is loaded async in componentWillMount so when the component\n // inits, the saved value will always be undefined, however getInitialState()\n // is also called from the saving code so we must return the correct value here\n // if we have it (although this could race if the user saves before we load whether\n // the room is published or not).\n // Default to false if it's undefined, otherwise react complains about changing\n // components from uncontrolled to controlled\n isRoomPublished: this._originalIsRoomPublished || false\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this2 = this;\n\n _MatrixClientPeg2.default.get().on(\"RoomMember.membership\", this._onRoomMemberMembership);\n\n _MatrixClientPeg2.default.get().getRoomDirectoryVisibility(this.props.room.roomId).done(function () {\n var result = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _this2.setState({ isRoomPublished: result.visibility === \"public\" });\n _this2._originalIsRoomPublished = result.visibility === \"public\";\n }, function (err) {\n console.error(\"Failed to get room visibility: \" + err);\n });\n\n _dispatcher2.default.dispatch({\n action: 'panel_disable',\n sideDisabled: true,\n middleDisabled: true\n });\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var cli = _MatrixClientPeg2.default.get();\n if (cli) {\n cli.removeListener(\"RoomMember.membership\", this._onRoomMemberMembership);\n }\n\n _dispatcher2.default.dispatch({\n action: 'panel_disable',\n sideDisabled: false,\n middleDisabled: false\n });\n },\n\n setName: function setName(name) {\n this.setState({\n name: name\n });\n },\n\n setTopic: function setTopic(topic) {\n this.setState({\n topic: topic\n });\n },\n\n /**\n * Returns a promise which resolves once all of the save operations have completed or failed.\n *\n * The result is a list of promise state snapshots, each with the form\n * `{ state: \"fulfilled\", value: v }` or `{ state: \"rejected\", reason: r }`.\n */\n save: function save() {\n var _this3 = this;\n\n var stateWasSetDefer = _bluebird2.default.defer();\n // the caller may have JUST called setState on stuff, so we need to re-render before saving\n // else we won't use the latest values of things.\n // We can be a bit cheeky here and set a loading flag, and listen for the callback on that\n // to know when things have been set.\n this.setState({ _loading: true }, function () {\n stateWasSetDefer.resolve();\n _this3.setState({ _loading: false });\n });\n\n function mapPromiseToSnapshot(p) {\n return p.then(function (r) {\n return { state: \"fulfilled\", value: r };\n }, function (e) {\n return { state: \"rejected\", reason: e };\n });\n }\n\n return stateWasSetDefer.promise.then(function () {\n return _bluebird2.default.all(_this3._calcSavePromises().map(mapPromiseToSnapshot));\n });\n },\n\n _calcSavePromises: function _calcSavePromises() {\n var roomId = this.props.room.roomId;\n var promises = this.saveAliases(); // returns Promise[]\n var originalState = this.getInitialState();\n\n // diff between original state and this.state to work out what has been changed\n console.log(\"Original: %s\", (0, _stringify2.default)(originalState));\n console.log(\"New: %s\", (0, _stringify2.default)(this.state));\n\n // name and topic\n if (this._hasDiff(this.state.name, originalState.name)) {\n promises.push(_MatrixClientPeg2.default.get().setRoomName(roomId, this.state.name));\n }\n if (this._hasDiff(this.state.topic, originalState.topic)) {\n promises.push(_MatrixClientPeg2.default.get().setRoomTopic(roomId, this.state.topic));\n }\n\n if (this.state.history_visibility !== originalState.history_visibility) {\n promises.push(_MatrixClientPeg2.default.get().sendStateEvent(roomId, \"m.room.history_visibility\", { history_visibility: this.state.history_visibility }, \"\"));\n }\n\n if (this.state.isRoomPublished !== originalState.isRoomPublished) {\n promises.push(_MatrixClientPeg2.default.get().setRoomDirectoryVisibility(roomId, this.state.isRoomPublished ? \"public\" : \"private\"));\n }\n\n if (this.state.join_rule !== originalState.join_rule) {\n promises.push(_MatrixClientPeg2.default.get().sendStateEvent(roomId, \"m.room.join_rules\", { join_rule: this.state.join_rule }, \"\"));\n }\n\n if (this.state.guest_access !== originalState.guest_access) {\n promises.push(_MatrixClientPeg2.default.get().sendStateEvent(roomId, \"m.room.guest_access\", { guest_access: this.state.guest_access }, \"\"));\n }\n\n // power levels\n var powerLevels = this.state.powerLevels;\n if (this.state.powerLevelsChanged) {\n promises.push(_MatrixClientPeg2.default.get().sendStateEvent(roomId, \"m.room.power_levels\", powerLevels, \"\"));\n }\n\n // tags\n if (this.state.tags_changed) {\n var tagDiffs = _ObjectUtils2.default.getKeyValueArrayDiffs(originalState.tags, this.state.tags);\n // [ {place: add, key: \"m.favourite\", val: [\"yep\"]} ]\n tagDiffs.forEach(function (diff) {\n switch (diff.place) {\n case \"add\":\n promises.push(_MatrixClientPeg2.default.get().setRoomTag(roomId, diff.key, {}));\n break;\n case \"del\":\n promises.push(_MatrixClientPeg2.default.get().deleteRoomTag(roomId, diff.key));\n break;\n default:\n console.error(\"Unknown tag operation: %s\", diff.place);\n break;\n }\n });\n }\n\n // color scheme\n var p = void 0;\n p = this.saveColor();\n if (!p.isFulfilled()) {\n promises.push(p);\n }\n\n // url preview settings\n var ps = this.saveUrlPreviewSettings();\n if (ps.length > 0) {\n ps.map(function (p) {\n return promises.push(p);\n });\n }\n\n // related groups\n promises.push(this.saveRelatedGroups());\n\n // encryption\n p = this.saveEnableEncryption();\n if (!p.isFulfilled()) {\n promises.push(p);\n }\n\n this.saveBlacklistUnverifiedDevicesPerRoom();\n\n console.log(\"Performing %s operations: %s\", promises.length, (0, _stringify2.default)(promises));\n return promises;\n },\n\n saveAliases: function saveAliases() {\n if (!this.refs.alias_settings) {\n return [_bluebird2.default.resolve()];\n }\n return this.refs.alias_settings.saveSettings();\n },\n\n saveRelatedGroups: function saveRelatedGroups() {\n if (!this.refs.related_groups) {\n return _bluebird2.default.resolve();\n }\n return this.refs.related_groups.saveSettings();\n },\n\n saveColor: function saveColor() {\n if (!this.refs.color_settings) {\n return _bluebird2.default.resolve();\n }\n return this.refs.color_settings.saveSettings();\n },\n\n saveUrlPreviewSettings: function saveUrlPreviewSettings() {\n if (!this.refs.url_preview_settings) {\n return _bluebird2.default.resolve();\n }\n return this.refs.url_preview_settings.saveSettings();\n },\n\n saveEnableEncryption: function saveEnableEncryption() {\n if (!this.refs.encrypt) {\n return _bluebird2.default.resolve();\n }\n\n var encrypt = this.refs.encrypt.checked;\n if (!encrypt) {\n return _bluebird2.default.resolve();\n }\n\n var roomId = this.props.room.roomId;\n return _MatrixClientPeg2.default.get().sendStateEvent(roomId, \"m.room.encryption\", { algorithm: \"m.megolm.v1.aes-sha2\" });\n },\n\n saveBlacklistUnverifiedDevicesPerRoom: function saveBlacklistUnverifiedDevicesPerRoom() {\n var _this4 = this;\n\n if (!this.refs.blacklistUnverifiedDevices) return;\n this.refs.blacklistUnverifiedDevices.save().then(function () {\n var value = _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.ROOM_DEVICE, \"blacklistUnverifiedDevices\", _this4.props.room.roomId,\n /*explicit=*/true);\n _this4.props.room.setBlacklistUnverifiedDevices(value);\n });\n },\n\n _hasDiff: function _hasDiff(strA, strB) {\n // treat undefined as an empty string because other components may blindly\n // call setName(\"\") when there has been no diff made to the name!\n strA = strA || \"\";\n strB = strB || \"\";\n return strA !== strB;\n },\n\n onPowerLevelsChanged: function onPowerLevelsChanged(value, powerLevelKey) {\n var powerLevels = (0, _assign2.default)({}, this.state.powerLevels);\n var eventsLevelPrefix = \"event_levels_\";\n\n value = parseInt(value);\n\n if (powerLevelKey.startsWith(eventsLevelPrefix)) {\n // deep copy \"events\" object, Object.assign itself won't deep copy\n powerLevels[\"events\"] = (0, _assign2.default)({}, this.state.powerLevels[\"events\"] || {});\n powerLevels[\"events\"][powerLevelKey.slice(eventsLevelPrefix.length)] = value;\n } else {\n var keyPath = powerLevelKey.split('.');\n var parentObj = void 0;\n var currentObj = powerLevels;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(keyPath), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n\n if (!currentObj[key]) {\n currentObj[key] = {};\n }\n parentObj = currentObj;\n currentObj = currentObj[key];\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n parentObj[keyPath[keyPath.length - 1]] = value;\n }\n this.setState({\n powerLevels: powerLevels,\n powerLevelsChanged: true\n });\n },\n\n _yankContentFromEvent: function _yankContentFromEvent(stateEventType, defaultValue) {\n // E.g.(\"m.room.name\") would yank the content of \"m.room.name\"\n var event = this.props.room.currentState.getStateEvents(stateEventType, '');\n if (!event) {\n return defaultValue;\n }\n return event.getContent() || defaultValue;\n },\n\n _yankValueFromEvent: function _yankValueFromEvent(stateEventType, keyName, defaultValue) {\n // E.g.(\"m.room.name\",\"name\") would yank the \"name\" content key from \"m.room.name\"\n var event = this.props.room.currentState.getStateEvents(stateEventType, '');\n if (!event) {\n return defaultValue;\n }\n var content = event.getContent();\n return keyName in content ? content[keyName] : defaultValue;\n },\n\n _onHistoryRadioToggle: function _onHistoryRadioToggle(ev) {\n var self = this;\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n\n // cancel the click unless the user confirms it\n ev.preventDefault();\n var value = ev.target.value;\n\n _Modal2.default.createTrackedDialog('Privacy warning', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Privacy warning'),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Changes to who can read history will only apply to future messages in this room'),\n '.',\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)('The visibility of existing history will be unchanged'),\n '.'\n ),\n button: (0, _languageHandler._t)('Continue'),\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n self.setState({\n history_visibility: value\n });\n }\n }\n });\n },\n\n _onRoomAccessRadioToggle: function _onRoomAccessRadioToggle(ev) {\n // join_rule\n // INVITE | PUBLIC\n // ----------------------+----------------\n // guest CAN_JOIN | inv_only | pub_with_guest\n // access ----------------------+----------------\n // FORBIDDEN | inv_only | pub_no_guest\n // ----------------------+----------------\n\n switch (ev.target.value) {\n case \"invite_only\":\n this.setState({\n join_rule: \"invite\",\n // we always set guests can_join here as it makes no sense to have\n // an invite-only room that guests can't join. If you explicitly\n // invite them, you clearly want them to join, whether they're a\n // guest or not. In practice, guest_access should probably have\n // been implemented as part of the join_rules enum.\n guest_access: \"can_join\"\n });\n break;\n case \"public_no_guests\":\n this.setState({\n join_rule: \"public\",\n guest_access: \"forbidden\"\n });\n break;\n case \"public_with_guests\":\n this.setState({\n join_rule: \"public\",\n guest_access: \"can_join\"\n });\n break;\n }\n },\n\n _onToggle: function _onToggle(keyName, checkedValue, uncheckedValue, ev) {\n console.log(\"Checkbox toggle: %s %s\", keyName, ev.target.checked);\n var state = {};\n state[keyName] = ev.target.checked ? checkedValue : uncheckedValue;\n this.setState(state);\n },\n\n _onTagChange: function _onTagChange(tagName, event) {\n if (event.target.checked) {\n if (tagName === 'm.favourite') {\n delete this.state.tags['m.lowpriority'];\n } else if (tagName === 'm.lowpriority') {\n delete this.state.tags['m.favourite'];\n }\n\n this.state.tags[tagName] = this.state.tags[tagName] || [\"yep\"];\n } else {\n delete this.state.tags[tagName];\n }\n\n this.setState({\n tags: this.state.tags,\n tags_changed: true\n });\n },\n\n mayChangeRoomAccess: function mayChangeRoomAccess() {\n var cli = _MatrixClientPeg2.default.get();\n var roomState = this.props.room.currentState;\n return roomState.mayClientSendStateEvent(\"m.room.join_rules\", cli) && roomState.mayClientSendStateEvent(\"m.room.guest_access\", cli);\n },\n\n onLeaveClick: function onLeaveClick() {\n _dispatcher2.default.dispatch({\n action: 'leave_room',\n room_id: this.props.room.roomId\n });\n },\n onForgetClick: function onForgetClick() {\n // FIXME: duplicated with RoomTagContextualMenu (and dead code in RoomView)\n _MatrixClientPeg2.default.get().forget(this.props.room.roomId).done(function () {\n _dispatcher2.default.dispatch({ action: 'view_next_room' });\n }, function (err) {\n var errCode = err.errcode || (0, _languageHandler._t)('unknown error code');\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to forget room', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: (0, _languageHandler._t)(\"Failed to forget room %(errCode)s\", { errCode: errCode })\n });\n });\n },\n onEnableEncryptionClick: function onEnableEncryptionClick() {\n var _this5 = this;\n\n if (!this.refs.encrypt.checked) return;\n\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('E2E Enable Warning', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Warning!'),\n description: _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('End-to-end encryption is in beta and may not be reliable'),\n '.'\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('You should not yet trust it to secure data'),\n '.'\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Devices will not yet be able to decrypt history from before they joined the room'),\n '.'\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Once encryption is enabled for a room it cannot be turned off again (for now)'),\n '.'\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Encrypted messages will not be visible on clients that do not yet implement encryption'),\n '.'\n )\n ),\n onFinished: function onFinished(confirm) {\n if (!confirm) {\n _this5.refs.encrypt.checked = false;\n }\n }\n });\n },\n\n\n _onRoomUpgradeClick: function _onRoomUpgradeClick() {\n var RoomUpgradeDialog = _index2.default.getComponent('dialogs.RoomUpgradeDialog');\n _Modal2.default.createTrackedDialog('Upgrade Room Version', '', RoomUpgradeDialog, { room: this.props.room });\n },\n\n _onRoomMemberMembership: function _onRoomMemberMembership() {\n // Update, since our banned user list may have changed\n this.forceUpdate();\n },\n\n _populateDefaultPlEvents: function _populateDefaultPlEvents(eventsSection, stateLevel, eventsLevel) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(plEventsToShow)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var desiredEvent = _step2.value;\n\n if (!(desiredEvent in eventsSection)) {\n eventsSection[desiredEvent] = plEventsToShow[desiredEvent].isState ? stateLevel : eventsLevel;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n },\n\n _openDevtools: function _openDevtools() {\n var DevtoolsDialog = _index2.default.getComponent('dialogs.DevtoolsDialog');\n _Modal2.default.createDialog(DevtoolsDialog, { roomId: this.props.room.roomId });\n },\n\n _renderEncryptionSection: function _renderEncryptionSection() {\n var SettingsFlag = _index2.default.getComponent(\"elements.SettingsFlag\");\n\n var cli = _MatrixClientPeg2.default.get();\n var roomState = this.props.room.currentState;\n var isEncrypted = cli.isRoomEncrypted(this.props.room.roomId);\n\n var settings = _react2.default.createElement(SettingsFlag, { name: 'blacklistUnverifiedDevices',\n level: _SettingsStore.SettingLevel.ROOM_DEVICE,\n roomId: this.props.room.roomId,\n manualSave: true,\n ref: 'blacklistUnverifiedDevices'\n });\n\n if (!isEncrypted && roomState.mayClientSendStateEvent(\"m.room.encryption\", cli)) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'checkbox', ref: 'encrypt', onClick: this.onEnableEncryptionClick }),\n _react2.default.createElement('img', { className: 'mx_RoomSettings_e2eIcon mx_filterFlipColor', src: 'img/e2e-unencrypted.svg', width: '12', height: '12' }),\n (0, _languageHandler._t)('Enable encryption'),\n ' ',\n (0, _languageHandler._t)('(warning: cannot be disabled again!)')\n ),\n settings\n );\n } else {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n isEncrypted ? _react2.default.createElement('img', { className: 'mx_RoomSettings_e2eIcon', src: 'img/e2e-verified.svg', width: '10', height: '12' }) : _react2.default.createElement('img', { className: 'mx_RoomSettings_e2eIcon mx_filterFlipColor', src: 'img/e2e-unencrypted.svg', width: '12', height: '12' }),\n isEncrypted ? (0, _languageHandler._t)(\"Encryption is enabled in this room\") : (0, _languageHandler._t)(\"Encryption is not enabled in this room\"),\n '.'\n ),\n settings\n );\n }\n },\n\n render: function render() {\n var _this6 = this;\n\n // TODO: go through greying out things you don't have permission to change\n // (or turning them into informative stuff)\n\n var AliasSettings = _index2.default.getComponent(\"room_settings.AliasSettings\");\n var ColorSettings = _index2.default.getComponent(\"room_settings.ColorSettings\");\n var UrlPreviewSettings = _index2.default.getComponent(\"room_settings.UrlPreviewSettings\");\n var RelatedGroupSettings = _index2.default.getComponent(\"room_settings.RelatedGroupSettings\");\n var PowerSelector = _index2.default.getComponent('elements.PowerSelector');\n\n var cli = _MatrixClientPeg2.default.get();\n var roomState = this.props.room.currentState;\n var myUserId = cli.credentials.userId;\n\n var powerLevels = this.state.powerLevels;\n var eventsLevels = powerLevels.events || {};\n var userLevels = powerLevels.users || {};\n\n var powerLevelDescriptors = {\n \"users_default\": {\n desc: (0, _languageHandler._t)('The default role for new room members is'),\n defaultValue: 0\n },\n \"events_default\": {\n desc: (0, _languageHandler._t)('To send messages, you must be a'),\n defaultValue: 0\n },\n \"invite\": {\n desc: (0, _languageHandler._t)('To invite users into the room, you must be a'),\n defaultValue: 50\n },\n \"state_default\": {\n desc: (0, _languageHandler._t)('To configure the room, you must be a'),\n defaultValue: 50\n },\n \"kick\": {\n desc: (0, _languageHandler._t)('To kick users, you must be a'),\n defaultValue: 50\n },\n \"ban\": {\n desc: (0, _languageHandler._t)('To ban users, you must be a'),\n defaultValue: 50\n },\n \"redact\": {\n desc: (0, _languageHandler._t)('To remove other users\\' messages, you must be a'),\n defaultValue: 50\n },\n \"notifications.room\": {\n desc: (0, _languageHandler._t)('To notify everyone in the room, you must be a'),\n defaultValue: 50\n }\n };\n\n var banLevel = parseIntWithDefault(powerLevels.ban, powerLevelDescriptors.ban.defaultValue);\n var defaultUserLevel = parseIntWithDefault(powerLevels.users_default, powerLevelDescriptors.users_default.defaultValue);\n\n this._populateDefaultPlEvents(eventsLevels, parseIntWithDefault(powerLevels.state_default, powerLevelDescriptors.state_default.defaultValue), parseIntWithDefault(powerLevels.events_default, powerLevelDescriptors.events_default.defaultValue));\n\n var currentUserLevel = userLevels[myUserId];\n if (currentUserLevel === undefined) {\n currentUserLevel = defaultUserLevel;\n }\n\n var canChangeLevels = roomState.mayClientSendStateEvent(\"m.room.power_levels\", cli);\n\n var canSetTag = !cli.isGuest();\n\n var self = this;\n\n var relatedGroupsSection = _react2.default.createElement(RelatedGroupSettings, { ref: 'related_groups',\n roomId: this.props.room.roomId,\n canSetRelatedGroups: roomState.mayClientSendStateEvent(\"m.room.related_groups\", cli),\n relatedGroupsEvent: this.props.room.currentState.getStateEvents('m.room.related_groups', '')\n });\n\n var privilegedUsersSection = _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('No users have specific privileges in this room'),\n '.'\n ); // default\n var mutedUsersSection = void 0;\n if ((0, _keys2.default)(userLevels).length) {\n var privilegedUsers = [];\n var mutedUsers = [];\n\n (0, _keys2.default)(userLevels).forEach(function (user) {\n if (userLevels[user] > defaultUserLevel) {\n // privileged\n privilegedUsers.push(_react2.default.createElement(\n 'li',\n { className: 'mx_RoomSettings_userLevel', key: user },\n (0, _languageHandler._t)(\"%(user)s is a %(userRole)s\", {\n user: user,\n userRole: _react2.default.createElement(PowerSelector, { value: userLevels[user], disabled: true })\n })\n ));\n } else if (userLevels[user] < defaultUserLevel) {\n // muted\n mutedUsers.push(_react2.default.createElement(\n 'li',\n { className: 'mx_RoomSettings_userLevel', key: user },\n (0, _languageHandler._t)(\"%(user)s is a %(userRole)s\", {\n user: user,\n userRole: _react2.default.createElement(PowerSelector, { value: userLevels[user], disabled: true })\n })\n ));\n }\n });\n\n // comparator for sorting PL users lexicographically on PL descending, MXID ascending. (case-insensitive)\n var comparator = function comparator(a, b) {\n var plDiff = userLevels[b.key] - userLevels[a.key];\n return plDiff !== 0 ? plDiff : a.key.toLocaleLowerCase().localeCompare(b.key.toLocaleLowerCase());\n };\n\n privilegedUsers.sort(comparator);\n mutedUsers.sort(comparator);\n\n if (privilegedUsers.length) {\n privilegedUsersSection = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Privileged Users')\n ),\n _react2.default.createElement(\n 'ul',\n { className: 'mx_RoomSettings_userLevels' },\n privilegedUsers\n )\n );\n }\n if (mutedUsers.length) {\n mutedUsersSection = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Muted Users')\n ),\n _react2.default.createElement(\n 'ul',\n { className: 'mx_RoomSettings_userLevels' },\n mutedUsers\n )\n );\n }\n }\n\n var banned = this.props.room.getMembersWithMembership(\"ban\");\n var bannedUsersSection = void 0;\n if (banned.length) {\n var canBanUsers = currentUserLevel >= banLevel;\n bannedUsersSection = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Banned users')\n ),\n _react2.default.createElement(\n 'ul',\n { className: 'mx_RoomSettings_banned' },\n banned.map(function (member) {\n var banEvent = member.events.member.getContent();\n var sender = self.props.room.getMember(member.events.member.getSender());\n var bannedBy = member.events.member.getSender(); // start by falling back to mxid\n if (sender) bannedBy = sender.name;\n return _react2.default.createElement(BannedUser, { key: member.userId, canUnban: canBanUsers, member: member, reason: banEvent.reason, by: bannedBy });\n })\n )\n );\n }\n\n var unfederatableSection = void 0;\n if (this._yankValueFromEvent(\"m.room.create\", \"m.federate\", true) === false) {\n unfederatableSection = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_powerLevel' },\n (0, _languageHandler._t)('This room is not accessible by remote Matrix servers'),\n '.'\n );\n }\n\n var leaveButton = null;\n var myMemberShip = this.props.room.getMyMembership();\n if (myMemberShip) {\n if (myMemberShip === \"join\") {\n leaveButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomSettings_leaveButton', onClick: this.onLeaveClick },\n (0, _languageHandler._t)('Leave room')\n );\n } else if (myMemberShip === \"leave\") {\n leaveButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomSettings_leaveButton', onClick: this.onForgetClick },\n (0, _languageHandler._t)('Forget room')\n );\n }\n }\n\n // TODO: support editing custom events_levels\n // TODO: support editing custom user_levels\n\n var tags = [{ name: \"m.favourite\", label: (0, _languageHandler._t)('Favourite'), ref: \"tag_favourite\" }, { name: \"m.lowpriority\", label: (0, _languageHandler._t)('Low priority'), ref: \"tag_lowpriority\" }];\n\n (0, _keys2.default)(this.state.tags).sort().forEach(function (tagName) {\n if (tagName !== 'm.favourite' && tagName !== 'm.lowpriority') {\n tags.push({ name: tagName, label: tagName });\n }\n });\n\n var tagsSection = null;\n if (canSetTag || self.state.tags) {\n tagsSection = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_tags' },\n (0, _languageHandler._t)(\"Tagged as: \"),\n canSetTag ? tags.map(function (tag, i) {\n return _react2.default.createElement(\n 'label',\n { key: i },\n _react2.default.createElement('input', { type: 'checkbox',\n ref: tag.ref,\n checked: tag.name in self.state.tags,\n onChange: self._onTagChange.bind(self, tag.name) }),\n tag.label\n );\n }) : self.state.tags && self.state.tags.join ? self.state.tags.join(\", \") : \"\"\n );\n }\n\n // If there is no history_visibility, it is assumed to be 'shared'.\n // http://matrix.org/docs/spec/r0.0.0/client_server.html#id31\n var historyVisibility = this.state.history_visibility || \"shared\";\n\n var addressWarning = void 0;\n var aliasEvents = this.props.room.currentState.getStateEvents('m.room.aliases') || [];\n var aliasCount = 0;\n aliasEvents.forEach(function (event) {\n var aliases = event.getContent().aliases || [];\n aliasCount += aliases.length;\n });\n\n if (this.state.join_rule === \"public\" && aliasCount == 0) {\n addressWarning = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_warning' },\n (0, _languageHandler._t)('To link to a room it must have <a>an address</a>.', {}, { 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: '#addresses' },\n sub\n );\n } })\n );\n }\n\n var inviteGuestWarning = void 0;\n if (this.state.join_rule !== \"public\" && this.state.guest_access === \"forbidden\") {\n inviteGuestWarning = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_warning' },\n (0, _languageHandler._t)('Guests cannot join this room even if explicitly invited.'),\n ' ',\n _react2.default.createElement(\n 'a',\n { href: '#', onClick: function onClick(e) {\n _this6.setState({ join_rule: \"invite\", guest_access: \"can_join\" });\n e.preventDefault();\n } },\n (0, _languageHandler._t)('Click here to fix')\n ),\n '.'\n );\n }\n\n var powerSelectors = (0, _keys2.default)(powerLevelDescriptors).map(function (key, index) {\n var descriptor = powerLevelDescriptors[key];\n\n var keyPath = key.split('.');\n var currentObj = powerLevels;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(keyPath), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var prop = _step3.value;\n\n if (currentObj === undefined) {\n break;\n }\n currentObj = currentObj[prop];\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n var value = parseIntWithDefault(currentObj, descriptor.defaultValue);\n return _react2.default.createElement(\n 'div',\n { key: index, className: 'mx_RoomSettings_powerLevel' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_RoomSettings_powerLevelKey' },\n descriptor.desc\n ),\n _react2.default.createElement(PowerSelector, {\n value: value,\n usersDefault: defaultUserLevel,\n controlled: false,\n disabled: !canChangeLevels || currentUserLevel < value,\n powerLevelKey: key // Will be sent as the second parameter to `onChange`\n , onChange: _this6.onPowerLevelsChanged\n })\n );\n });\n\n var eventPowerSelectors = (0, _keys2.default)(eventsLevels).map(function (eventType, i) {\n var label = plEventsToLabels[eventType];\n if (label) {\n label = (0, _languageHandler._t)(label);\n } else {\n label = (0, _languageHandler._t)(\"To send events of type <eventType/>, you must be a\", {}, { 'eventType': _react2.default.createElement(\n 'code',\n null,\n eventType\n ) });\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_powerLevel', key: eventType },\n _react2.default.createElement(\n 'span',\n { className: 'mx_RoomSettings_powerLevelKey' },\n label,\n ' '\n ),\n _react2.default.createElement(PowerSelector, {\n value: eventsLevels[eventType],\n usersDefault: defaultUserLevel,\n controlled: false,\n disabled: !canChangeLevels || currentUserLevel < eventsLevels[eventType],\n powerLevelKey: \"event_levels_\" + eventType,\n onChange: self.onPowerLevelsChanged\n })\n );\n });\n\n var roomUpgradeButton = null;\n if (this.props.room.shouldUpgradeToVersion() && this.props.room.userMayUpgradeRoom(myUserId)) {\n roomUpgradeButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomSettings_upgradeButton danger', onClick: this._onRoomUpgradeClick },\n (0, _languageHandler._t)(\"Upgrade room to version %(ver)s\", { ver: this.props.room.shouldUpgradeToVersion() })\n );\n }\n\n var devtoolsButton = _SettingsStore2.default.getValue(\"showDeveloperTools\") ? _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomSettings_devtoolsButton', onClick: this._openDevtools },\n (0, _languageHandler._t)(\"Open Devtools\")\n ) : null;\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings' },\n leaveButton,\n tagsSection,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_toggles' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_settings' },\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Who can access this room?')\n ),\n inviteGuestWarning,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'roomVis', value: 'invite_only',\n disabled: !this.mayChangeRoomAccess(),\n onChange: this._onRoomAccessRadioToggle,\n checked: this.state.join_rule !== \"public\" }),\n (0, _languageHandler._t)('Only people who have been invited')\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'roomVis', value: 'public_no_guests',\n disabled: !this.mayChangeRoomAccess(),\n onChange: this._onRoomAccessRadioToggle,\n checked: this.state.join_rule === \"public\" && this.state.guest_access !== \"can_join\" }),\n (0, _languageHandler._t)('Anyone who knows the room\\'s link, apart from guests')\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'roomVis', value: 'public_with_guests',\n disabled: !this.mayChangeRoomAccess(),\n onChange: this._onRoomAccessRadioToggle,\n checked: this.state.join_rule === \"public\" && this.state.guest_access === \"can_join\" }),\n (0, _languageHandler._t)('Anyone who knows the room\\'s link, including guests')\n ),\n addressWarning,\n _react2.default.createElement('br', null),\n this._renderEncryptionSection(),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'checkbox', disabled: !roomState.mayClientSendStateEvent(\"m.room.aliases\", cli),\n onChange: this._onToggle.bind(this, \"isRoomPublished\", true, false),\n checked: this.state.isRoomPublished }),\n (0, _languageHandler._t)(\"Publish this room to the public in %(domain)s's room directory?\", { domain: _MatrixClientPeg2.default.get().getDomain() })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_settings' },\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Who can read history?')\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'historyVis', value: 'world_readable',\n disabled: !roomState.mayClientSendStateEvent(\"m.room.history_visibility\", cli),\n checked: historyVisibility === \"world_readable\",\n onChange: this._onHistoryRadioToggle }),\n (0, _languageHandler._t)(\"Anyone\")\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'historyVis', value: 'shared',\n disabled: !roomState.mayClientSendStateEvent(\"m.room.history_visibility\", cli),\n checked: historyVisibility === \"shared\",\n onChange: this._onHistoryRadioToggle }),\n (0, _languageHandler._t)('Members only (since the point in time of selecting this option)')\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'historyVis', value: 'invited',\n disabled: !roomState.mayClientSendStateEvent(\"m.room.history_visibility\", cli),\n checked: historyVisibility === \"invited\",\n onChange: this._onHistoryRadioToggle }),\n (0, _languageHandler._t)('Members only (since they were invited)')\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'historyVis', value: 'joined',\n disabled: !roomState.mayClientSendStateEvent(\"m.room.history_visibility\", cli),\n checked: historyVisibility === \"joined\",\n onChange: this._onHistoryRadioToggle }),\n (0, _languageHandler._t)('Members only (since they joined)')\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Room Colour')\n ),\n _react2.default.createElement(ColorSettings, { ref: 'color_settings', room: this.props.room })\n ),\n _react2.default.createElement('a', { id: 'addresses' }),\n _react2.default.createElement(AliasSettings, { ref: 'alias_settings',\n roomId: this.props.room.roomId,\n canSetCanonicalAlias: roomState.mayClientSendStateEvent(\"m.room.canonical_alias\", cli),\n canSetAliases: true\n /* Originally, we arbitrarily restricted creating aliases to room admins: roomState.mayClientSendStateEvent(\"m.room.aliases\", cli) */\n ,\n canonicalAliasEvent: this.props.room.currentState.getStateEvents('m.room.canonical_alias', ''),\n aliasEvents: this.props.room.currentState.getStateEvents('m.room.aliases') }),\n relatedGroupsSection,\n _react2.default.createElement(UrlPreviewSettings, { ref: 'url_preview_settings', room: this.props.room }),\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Permissions')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_powerLevels mx_RoomSettings_settings' },\n powerSelectors,\n eventPowerSelectors,\n unfederatableSection\n ),\n privilegedUsersSection,\n mutedUsersSection,\n bannedUsersSection,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Advanced')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_settings' },\n (0, _languageHandler._t)('Internal room ID: '),\n ' ',\n _react2.default.createElement(\n 'code',\n null,\n this.props.room.roomId\n ),\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)('Room version number: '),\n ' ',\n _react2.default.createElement(\n 'code',\n null,\n this.props.room.getVersion()\n ),\n _react2.default.createElement('br', null),\n roomUpgradeButton,\n devtoolsButton\n )\n );\n }\n});\n//# sourceMappingURL=RoomSettings.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MIN_TOOLTIP_HEIGHT = 25;\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomTooltip',\n\n propTypes: {\n // Class applied to the element used to position the tooltip\n className: _react2.default.PropTypes.string.isRequired,\n // Class applied to the tooltip itself\n tooltipClassName: _react2.default.PropTypes.string,\n // The tooltip is derived from either the room name or a label\n room: _react2.default.PropTypes.object,\n label: _react2.default.PropTypes.node\n },\n\n // Create a wrapper for the tooltip outside the parent and attach it to the body element\n componentDidMount: function componentDidMount() {\n this.tooltipContainer = document.createElement(\"div\");\n this.tooltipContainer.className = \"mx_RoomTileTooltip_wrapper\";\n document.body.appendChild(this.tooltipContainer);\n window.addEventListener('scroll', this._renderTooltip, true);\n\n this.parent = _reactDom2.default.findDOMNode(this).parentNode;\n\n this._renderTooltip();\n },\n\n componentDidUpdate: function componentDidUpdate() {\n this._renderTooltip();\n },\n\n // Remove the wrapper element, as the tooltip has finished using it\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.dispatch({\n action: 'view_tooltip',\n tooltip: null,\n parent: null\n });\n\n _reactDom2.default.unmountComponentAtNode(this.tooltipContainer);\n document.body.removeChild(this.tooltipContainer);\n window.removeEventListener('scroll', this._renderTooltip, true);\n },\n\n _updatePosition: function _updatePosition(style) {\n var parentBox = this.parent.getBoundingClientRect();\n var offset = 0;\n if (parentBox.height > MIN_TOOLTIP_HEIGHT) {\n offset = Math.floor((parentBox.height - MIN_TOOLTIP_HEIGHT) / 2);\n }\n style.top = parentBox.top - 2 + window.pageYOffset + offset;\n style.left = 6 + parentBox.right + window.pageXOffset;\n return style;\n },\n\n\n _renderTooltip: function _renderTooltip() {\n // Add the parent's position to the tooltips, so it's correctly\n // positioned, also taking into account any window zoom\n // NOTE: The additional 6 pixels for the left position, is to take account of the\n // tooltips chevron\n var parent = _reactDom2.default.findDOMNode(this).parentNode;\n var style = {};\n style = this._updatePosition(style);\n style.display = \"block\";\n\n var tooltipClasses = (0, _classnames2.default)(\"mx_RoomTooltip\", this.props.tooltipClassName);\n\n var tooltip = _react2.default.createElement(\n 'div',\n { className: tooltipClasses, style: style },\n _react2.default.createElement('div', { className: 'mx_RoomTooltip_chevron' }),\n this.props.label\n );\n\n // Render the tooltip manually, as we wish it not to be rendered within the parent\n this.tooltip = _reactDom2.default.render(tooltip, this.tooltipContainer);\n\n // Tell the roomlist about us so it can manipulate us if it wishes\n _dispatcher2.default.dispatch({\n action: 'view_tooltip',\n tooltip: this.tooltip,\n parent: parent\n });\n },\n\n render: function render() {\n // Render a placeholder\n return _react2.default.createElement('div', { className: this.props.className });\n }\n});\n//# sourceMappingURL=RoomTooltip.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar sdk = require('../../../index');\n\n\nmodule.exports = React.createClass({\n displayName: 'RoomTopicEditor',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n topic: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n var room = this.props.room;\n var topic = room.currentState.getStateEvents('m.room.topic', '');\n this.setState({\n topic: topic ? topic.getContent().topic : ''\n });\n },\n\n getTopic: function getTopic() {\n return this.state.topic;\n },\n\n _onValueChanged: function _onValueChanged(value) {\n this.setState({\n topic: value\n });\n },\n\n render: function render() {\n var EditableText = sdk.getComponent(\"elements.EditableText\");\n\n return React.createElement(EditableText, {\n className: 'mx_RoomHeader_topic mx_RoomHeader_editable',\n placeholderClassName: 'mx_RoomHeader_placeholder',\n placeholder: (0, _languageHandler._t)(\"Add a topic\"),\n blurToCancel: false,\n initialValue: this.state.topic,\n onValueChanged: this._onValueChanged,\n dir: 'auto' });\n }\n});\n//# sourceMappingURL=RoomTopicEditor.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomUpgradeWarningBar',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired\n },\n\n onUpgradeClick: function onUpgradeClick() {\n var RoomUpgradeDialog = _index2.default.getComponent('dialogs.RoomUpgradeDialog');\n _Modal2.default.createTrackedDialog('Upgrade Room Version', '', RoomUpgradeDialog, { room: this.props.room });\n },\n\n render: function render() {\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomUpgradeWarningBar' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomUpgradeWarningBar_header' },\n (0, _languageHandler._t)(\"There is a known vulnerability affecting this room.\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomUpgradeWarningBar_body' },\n (0, _languageHandler._t)(\"This room version is vulnerable to malicious modification of room state.\")\n ),\n _react2.default.createElement(\n 'p',\n { className: 'mx_RoomUpgradeWarningBar_upgradelink' },\n _react2.default.createElement(\n AccessibleButton,\n { onClick: this.onUpgradeClick },\n (0, _languageHandler._t)(\"Click here to upgrade to the latest room version and ensure room integrity is protected.\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomUpgradeWarningBar_small' },\n (0, _languageHandler._t)(\"Only room administrators will see this warning\")\n )\n );\n }\n}); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=RoomUpgradeWarningBar.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar React = require('react');\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar sdk = require('../../../index');\nvar classNames = require('classnames');\nvar AccessibleButton = require('../../../components/views/elements/AccessibleButton');\n\n\nmodule.exports = React.createClass({\n displayName: 'SearchBar',\n\n getInitialState: function getInitialState() {\n return {\n scope: 'Room'\n };\n },\n\n onThisRoomClick: function onThisRoomClick() {\n this.setState({ scope: 'Room' });\n },\n\n onAllRoomsClick: function onAllRoomsClick() {\n this.setState({ scope: 'All' });\n },\n\n onSearchChange: function onSearchChange(e) {\n if (e.keyCode === 13) {\n // on enter...\n this.onSearch();\n }\n if (e.keyCode === 27) {\n // escape...\n this.props.onCancelClick();\n }\n },\n\n onSearch: function onSearch() {\n this.props.onSearch(this.refs.search_term.value, this.state.scope);\n },\n\n render: function render() {\n var searchButtonClasses = classNames({ mx_SearchBar_searchButton: true, mx_SearchBar_searching: this.props.searchInProgress });\n var thisRoomClasses = classNames({ mx_SearchBar_button: true, mx_SearchBar_unselected: this.state.scope !== 'Room' });\n var allRoomsClasses = classNames({ mx_SearchBar_button: true, mx_SearchBar_unselected: this.state.scope !== 'All' });\n\n return React.createElement(\n 'div',\n { className: 'mx_SearchBar' },\n React.createElement('input', { ref: 'search_term', className: 'mx_SearchBar_input', type: 'text', autoFocus: true, placeholder: (0, _languageHandler._t)(\"Search…\"), onKeyDown: this.onSearchChange }),\n React.createElement(\n AccessibleButton,\n { className: searchButtonClasses, onClick: this.onSearch },\n React.createElement('img', { src: 'img/search-button.svg', width: '37', height: '37', alt: (0, _languageHandler._t)(\"Search\") })\n ),\n React.createElement(\n AccessibleButton,\n { className: thisRoomClasses, onClick: this.onThisRoomClick },\n (0, _languageHandler._t)(\"This Room\")\n ),\n React.createElement(\n AccessibleButton,\n { className: allRoomsClasses, onClick: this.onAllRoomsClick },\n (0, _languageHandler._t)(\"All Rooms\")\n ),\n React.createElement(\n AccessibleButton,\n { className: 'mx_SearchBar_cancel', onClick: this.props.onCancelClick },\n React.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18' })\n )\n );\n }\n});\n//# sourceMappingURL=SearchBar.js.map","/*\nCopyright 2015 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar sdk = require('../../../index');\n\nmodule.exports = React.createClass({\n displayName: 'SearchResult',\n\n propTypes: {\n // a matrix-js-sdk SearchResult containing the details of this result\n searchResult: _propTypes2.default.object.isRequired,\n\n // a list of strings to be highlighted in the results\n searchHighlights: _propTypes2.default.array,\n\n // href for the highlights in this result\n resultLink: _propTypes2.default.string,\n\n onWidgetLoad: _propTypes2.default.func\n },\n\n render: function render() {\n var DateSeparator = sdk.getComponent('messages.DateSeparator');\n var EventTile = sdk.getComponent('rooms.EventTile');\n var result = this.props.searchResult;\n var mxEv = result.context.getEvent();\n var eventId = mxEv.getId();\n\n var ts1 = mxEv.getTs();\n var ret = [React.createElement(DateSeparator, { key: ts1 + \"-search\", ts: ts1 })];\n\n var timeline = result.context.getTimeline();\n for (var j = 0; j < timeline.length; j++) {\n var ev = timeline[j];\n var highlights;\n var contextual = j != result.context.getOurEventIndex();\n if (!contextual) {\n highlights = this.props.searchHighlights;\n }\n if (EventTile.haveTileForEvent(ev)) {\n ret.push(React.createElement(EventTile, { key: eventId + \"+\" + j, mxEvent: ev, contextual: contextual, highlights: highlights,\n highlightLink: this.props.resultLink,\n onWidgetLoad: this.props.onWidgetLoad }));\n }\n }\n return React.createElement(\n 'li',\n { 'data-scroll-tokens': eventId + \"+\" + j },\n ret\n );\n }\n});\n//# sourceMappingURL=SearchResultTile.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar React = require('react');\n\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\");\nvar Modal = require(\"../../../Modal\");\nvar sdk = require(\"../../../index\");\n\n\n// A list capable of displaying entities which conform to the SearchableEntity\n// interface which is an object containing getJsx(): Jsx and matches(query: string): boolean\nvar SearchableEntityList = React.createClass({\n displayName: 'SearchableEntityList',\n\n propTypes: {\n emptyQueryShowsAll: _propTypes2.default.bool,\n showInputBox: _propTypes2.default.bool,\n onQueryChanged: _propTypes2.default.func, // fn(inputText)\n onSubmit: _propTypes2.default.func, // fn(inputText)\n entities: _propTypes2.default.array,\n truncateAt: _propTypes2.default.number\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n showInputBox: true,\n entities: [],\n emptyQueryShowsAll: false,\n onSubmit: function onSubmit() {},\n onQueryChanged: function onQueryChanged(input) {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n query: \"\",\n focused: false,\n truncateAt: this.props.truncateAt,\n results: this.getSearchResults(\"\", this.props.entities)\n };\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n // recalculate the search results in case we got new entities\n this.setState({\n results: this.getSearchResults(this.state.query, newProps.entities)\n });\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // pretend the query box was blanked out else filters could still be\n // applied to other components which rely on onQueryChanged.\n this.props.onQueryChanged(\"\");\n },\n\n /**\n * Public-facing method to set the input query text to the given input.\n * @param {string} input\n */\n setQuery: function setQuery(input) {\n this.setState({\n query: input,\n results: this.getSearchResults(input, this.props.entities)\n });\n },\n\n onQueryChanged: function onQueryChanged(ev) {\n var _this = this;\n\n var q = ev.target.value;\n this.setState({\n query: q,\n // reset truncation if they back out the entire text\n truncateAt: q.length === 0 ? this.props.truncateAt : this.state.truncateAt,\n results: this.getSearchResults(q, this.props.entities)\n }, function () {\n // invoke the callback AFTER we've flushed the new state. We need to\n // do this because onQueryChanged can result in new props being passed\n // to this component, which will then try to recalculate the search\n // list. If we do this without flushing, we'll recalc with the last\n // search term and not the current one!\n _this.props.onQueryChanged(q);\n });\n },\n\n onQuerySubmit: function onQuerySubmit(ev) {\n ev.preventDefault();\n this.props.onSubmit(this.state.query);\n },\n\n getSearchResults: function getSearchResults(query, entities) {\n if (!query || query.length === 0) {\n return this.props.emptyQueryShowsAll ? entities : [];\n }\n return entities.filter(function (e) {\n return e.matches(query);\n });\n },\n\n _showAll: function _showAll() {\n this.setState({\n truncateAt: -1\n });\n },\n\n _createOverflowEntity: function _createOverflowEntity(overflowCount, totalCount) {\n var EntityTile = sdk.getComponent(\"rooms.EntityTile\");\n var BaseAvatar = sdk.getComponent(\"avatars.BaseAvatar\");\n var text = (0, _languageHandler._t)(\"and %(count)s others...\", { count: overflowCount });\n return React.createElement(EntityTile, { className: 'mx_EntityTile_ellipsis', avatarJsx: React.createElement(BaseAvatar, { url: 'img/ellipsis.svg', name: '...', width: 36, height: 36 }), name: text, presenceState: 'online', suppressOnHover: true,\n onClick: this._showAll });\n },\n\n render: function render() {\n var _this2 = this;\n\n var inputBox = void 0;\n\n if (this.props.showInputBox) {\n inputBox = React.createElement(\n 'form',\n { onSubmit: this.onQuerySubmit, autoComplete: 'off' },\n React.createElement('input', { className: 'mx_SearchableEntityList_query', id: 'mx_SearchableEntityList_query', type: 'text',\n onChange: this.onQueryChanged, value: this.state.query,\n onFocus: function onFocus() {\n _this2.setState({ focused: true });\n },\n onBlur: function onBlur() {\n _this2.setState({ focused: false });\n },\n placeholder: (0, _languageHandler._t)(\"Search\") })\n );\n }\n\n var list = void 0;\n if (this.state.results.length > 1 || this.state.focused) {\n if (this.props.truncateAt) {\n // caller wants list truncated\n var TruncatedList = sdk.getComponent(\"elements.TruncatedList\");\n list = React.createElement(\n TruncatedList,\n { className: 'mx_SearchableEntityList_list',\n truncateAt: this.state.truncateAt // use state truncation as it may be expanded\n , createOverflowElement: this._createOverflowEntity },\n this.state.results.map(function (entity) {\n return entity.getJsx();\n })\n );\n } else {\n list = React.createElement(\n 'div',\n { className: 'mx_SearchableEntityList_list' },\n this.state.results.map(function (entity) {\n return entity.getJsx();\n })\n );\n }\n var GeminiScrollbarWrapper = sdk.getComponent(\"elements.GeminiScrollbarWrapper\");\n list = React.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true,\n className: 'mx_SearchableEntityList_listWrapper' },\n list\n );\n }\n\n return React.createElement(\n 'div',\n { className: \"mx_SearchableEntityList \" + (list ? \"mx_SearchableEntityList_expanded\" : \"\") },\n inputBox,\n list,\n list ? React.createElement(\n 'div',\n { className: 'mx_SearchableEntityList_hrWrapper' },\n React.createElement('hr', null)\n ) : ''\n );\n }\n});\n\nmodule.exports = SearchableEntityList;\n//# sourceMappingURL=SearchableEntityList.js.map","/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar sdk = require('../../../index');\n\nmodule.exports = React.createClass({\n displayName: 'TopUnreadMessagesBar',\n\n propTypes: {\n onScrollUpClick: _propTypes2.default.func,\n onCloseClick: _propTypes2.default.func\n },\n\n render: function render() {\n return React.createElement(\n 'div',\n { className: 'mx_TopUnreadMessagesBar' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_TopUnreadMessagesBar_scrollUp',\n onClick: this.props.onScrollUpClick },\n React.createElement('img', { src: 'img/scrollto.svg', width: '24', height: '24'\n // No point on setting up non empty alt on this image\n // as it only complements the text which follows it.\n , alt: '',\n title: (0, _languageHandler._t)('Scroll to unread messages')\n // In order not to use this title attribute for accessible name\n // calculation of the parent button set the role presentation\n , role: 'presentation' }),\n (0, _languageHandler._t)(\"Jump to first unread message.\")\n ),\n React.createElement(_AccessibleButton2.default, { element: 'img', className: 'mx_TopUnreadMessagesBar_close mx_filterFlipColor',\n src: 'img/cancel.svg', width: '18', height: '18',\n alt: (0, _languageHandler._t)(\"Close\"), title: (0, _languageHandler._t)(\"Close\"),\n onClick: this.props.onCloseClick })\n );\n }\n});\n//# sourceMappingURL=TopUnreadMessagesBar.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nvar Avatar = require(\"../../../Avatar\");\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar sdk = require('../../../index');\nvar dis = require('../../../dispatcher');\nvar Modal = require(\"../../../Modal\");\n\nmodule.exports = React.createClass({\n displayName: 'UserTile',\n\n propTypes: {\n user: _propTypes2.default.any.isRequired // User\n },\n\n render: function render() {\n var EntityTile = sdk.getComponent(\"rooms.EntityTile\");\n var user = this.props.user;\n var name = user.displayName || user.userId;\n var active = -1;\n\n // FIXME: make presence data update whenever User.presence changes...\n active = user.lastActiveAgo ? Date.now() - (user.lastPresenceTs - user.lastActiveAgo) : -1;\n\n var BaseAvatar = sdk.getComponent('avatars.BaseAvatar');\n var avatarJsx = React.createElement(BaseAvatar, { width: 36, height: 36, name: name, idName: user.userId,\n url: Avatar.avatarUrlForUser(user, 36, 36, \"crop\") });\n\n return React.createElement(EntityTile, (0, _extends3.default)({}, this.props, { presenceState: user.presence, presenceActiveAgo: active,\n presenceCurrentlyActive: user.currentlyActive,\n name: name, title: user.userId, avatarJsx: avatarJsx }));\n }\n});\n//# sourceMappingURL=UserTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _AddThreepid = require('../../../AddThreepid');\n\nvar _AddThreepid2 = _interopRequireDefault(_AddThreepid);\n\nvar _withMatrixClient = require('../../../wrappers/withMatrixClient');\n\nvar _withMatrixClient2 = _interopRequireDefault(_withMatrixClient);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _withMatrixClient2.default)(_react2.default.createClass({\n displayName: 'AddPhoneNumber',\n\n propTypes: {\n matrixClient: _propTypes2.default.object.isRequired,\n onThreepidAdded: _propTypes2.default.func\n },\n\n getInitialState: function getInitialState() {\n return {\n busy: false,\n phoneCountry: null,\n phoneNumber: \"\",\n msisdn_add_pending: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._addThreepid = null;\n this._addMsisdnInput = null;\n this._unmounted = false;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n _onPhoneCountryChange: function _onPhoneCountryChange(phoneCountry) {\n this.setState({ phoneCountry: phoneCountry.iso2 });\n },\n\n _onPhoneNumberChange: function _onPhoneNumberChange(ev) {\n this.setState({ phoneNumber: ev.target.value });\n },\n\n _onAddMsisdnEditFinished: function _onAddMsisdnEditFinished(value, shouldSubmit) {\n if (!shouldSubmit) return;\n this._addMsisdn();\n },\n\n _onAddMsisdnSubmit: function _onAddMsisdnSubmit(ev) {\n ev.preventDefault();\n this._addMsisdn();\n },\n\n _collectAddMsisdnInput: function _collectAddMsisdnInput(e) {\n this._addMsisdnInput = e;\n },\n\n _addMsisdn: function _addMsisdn() {\n var _this = this;\n\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n this._addThreepid = new _AddThreepid2.default();\n // we always bind phone numbers when registering, so let's do the\n // same here.\n this._addThreepid.addMsisdn(this.state.phoneCountry, this.state.phoneNumber, true).then(function (resp) {\n _this._promptForMsisdnVerificationCode(resp.msisdn);\n }).catch(function (err) {\n console.error(\"Unable to add phone number: \" + err);\n var msg = err.message;\n _Modal2.default.createTrackedDialog('Add Phone Number Error', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: msg\n });\n }).finally(function () {\n if (_this._unmounted) return;\n _this.setState({ msisdn_add_pending: false });\n }).done();\n this._addMsisdnInput.blur();\n this.setState({ msisdn_add_pending: true });\n },\n\n _promptForMsisdnVerificationCode: function _promptForMsisdnVerificationCode(msisdn, err) {\n var _this2 = this;\n\n if (this._unmounted) return;\n var TextInputDialog = _index2.default.getComponent(\"dialogs.TextInputDialog\");\n var msgElements = [_react2.default.createElement(\n 'div',\n { key: '_static' },\n (0, _languageHandler._t)(\"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains\", { msisdn: msisdn })\n )];\n if (err) {\n var msg = err.error;\n if (err.errcode == 'M_THREEPID_AUTH_FAILED') {\n msg = (0, _languageHandler._t)(\"Incorrect verification code\");\n }\n msgElements.push(_react2.default.createElement(\n 'div',\n { key: '_error', className: 'error' },\n msg\n ));\n }\n _Modal2.default.createTrackedDialog('Prompt for MSISDN Verification Code', '', TextInputDialog, {\n title: (0, _languageHandler._t)(\"Enter Code\"),\n description: _react2.default.createElement(\n 'div',\n null,\n msgElements\n ),\n button: (0, _languageHandler._t)(\"Submit\"),\n onFinished: function onFinished(should_verify, token) {\n if (!should_verify) {\n _this2._addThreepid = null;\n return;\n }\n if (_this2._unmounted) return;\n _this2.setState({ msisdn_add_pending: true });\n _this2._addThreepid.haveMsisdnToken(token).then(function () {\n _this2._addThreepid = null;\n _this2.setState({ phoneNumber: '' });\n if (_this2.props.onThreepidAdded) _this2.props.onThreepidAdded();\n }).catch(function (err) {\n _this2._promptForMsisdnVerificationCode(msisdn, err);\n }).finally(function () {\n if (_this2._unmounted) return;\n _this2.setState({ msisdn_add_pending: false });\n }).done();\n }\n });\n },\n\n render: function render() {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n if (this.state.msisdn_add_pending) {\n return _react2.default.createElement(Loader, null);\n } else if (this.props.matrixClient.isGuest()) {\n return _react2.default.createElement('div', null);\n }\n\n var CountryDropdown = _index2.default.getComponent('views.login.CountryDropdown');\n // XXX: This CSS relies on the CSS surrounding it in UserSettings as its in\n // a tabular format to align the submit buttons\n return _react2.default.createElement(\n 'form',\n { className: 'mx_UserSettings_profileTableRow', onSubmit: this._onAddMsisdnSubmit },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_profileLabelCell' },\n _react2.default.createElement(\n 'label',\n null,\n (0, _languageHandler._t)('Phone')\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_profileInputCell' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_phoneSection' },\n _react2.default.createElement(CountryDropdown, { onOptionChange: this._onPhoneCountryChange,\n className: 'mx_UserSettings_phoneCountry',\n value: this.state.phoneCountry,\n isSmall: true\n }),\n _react2.default.createElement('input', { type: 'text',\n ref: this._collectAddMsisdnInput,\n className: 'mx_UserSettings_phoneNumberField',\n placeholder: (0, _languageHandler._t)('Add phone number'),\n value: this.state.phoneNumber,\n onChange: this._onPhoneNumberChange\n })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_threepidButton mx_filterFlipColor' },\n _react2.default.createElement('input', { type: 'image', value: (0, _languageHandler._t)(\"Add\"), src: 'img/plus.svg', width: '14', height: '14' })\n )\n );\n }\n})); /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=AddPhoneNumber.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require('react');\n\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\");\nvar sdk = require('../../../index');\n\n\nmodule.exports = React.createClass({\n displayName: 'ChangeAvatar',\n propTypes: {\n initialAvatarUrl: _propTypes2.default.string,\n room: _propTypes2.default.object,\n // if false, you need to call changeAvatar.onFileSelected yourself.\n showUploadSection: _propTypes2.default.bool,\n width: _propTypes2.default.number,\n height: _propTypes2.default.number,\n className: _propTypes2.default.string\n },\n\n Phases: {\n Display: \"display\",\n Uploading: \"uploading\",\n Error: \"error\"\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n showUploadSection: true,\n className: \"\",\n width: 80,\n height: 80\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n avatarUrl: this.props.initialAvatarUrl,\n phase: this.Phases.Display\n };\n },\n\n componentWillMount: function componentWillMount() {\n MatrixClientPeg.get().on(\"RoomState.events\", this.onRoomStateEvents);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n if (this.avatarSet) {\n // don't clobber what the user has just set\n return;\n }\n this.setState({\n avatarUrl: newProps.initialAvatarUrl\n });\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (MatrixClientPeg.get()) {\n MatrixClientPeg.get().removeListener(\"RoomState.events\", this.onRoomStateEvents);\n }\n },\n\n onRoomStateEvents: function onRoomStateEvents(ev) {\n if (!this.props.room) {\n return;\n }\n\n if (ev.getRoomId() !== this.props.room.roomId || ev.getType() !== 'm.room.avatar' || ev.getSender() !== MatrixClientPeg.get().getUserId()) {\n return;\n }\n\n if (!ev.getContent().url) {\n this.avatarSet = false;\n this.setState({}); // force update\n }\n },\n\n setAvatarFromFile: function setAvatarFromFile(file) {\n var newUrl = null;\n\n this.setState({\n phase: this.Phases.Uploading\n });\n var self = this;\n var httpPromise = MatrixClientPeg.get().uploadContent(file).then(function (url) {\n newUrl = url;\n if (self.props.room) {\n return MatrixClientPeg.get().sendStateEvent(self.props.room.roomId, 'm.room.avatar', { url: url }, '');\n } else {\n return MatrixClientPeg.get().setAvatarUrl(url);\n }\n });\n\n httpPromise.done(function () {\n self.setState({\n phase: self.Phases.Display,\n avatarUrl: MatrixClientPeg.get().mxcUrlToHttp(newUrl)\n });\n }, function (error) {\n self.setState({\n phase: self.Phases.Error\n });\n self.onError(error);\n });\n\n return httpPromise;\n },\n\n onFileSelected: function onFileSelected(ev) {\n this.avatarSet = true;\n return this.setAvatarFromFile(ev.target.files[0]);\n },\n\n onError: function onError(error) {\n this.setState({\n errorText: (0, _languageHandler._t)(\"Failed to upload profile picture!\")\n });\n },\n\n render: function render() {\n var avatarImg = void 0;\n // Having just set an avatar we just display that since it will take a little\n // time to propagate through to the RoomAvatar.\n if (this.props.room && !this.avatarSet) {\n var RoomAvatar = sdk.getComponent('avatars.RoomAvatar');\n avatarImg = React.createElement(RoomAvatar, { room: this.props.room, width: this.props.width, height: this.props.height, resizeMethod: 'crop' });\n } else {\n var BaseAvatar = sdk.getComponent(\"avatars.BaseAvatar\");\n // XXX: FIXME: once we track in the JS what our own displayname is(!) then use it here rather than ?\n avatarImg = React.createElement(BaseAvatar, { width: this.props.width, height: this.props.height, resizeMethod: 'crop',\n name: '?', idName: MatrixClientPeg.get().getUserIdLocalpart(), url: this.state.avatarUrl });\n }\n\n var uploadSection = void 0;\n if (this.props.showUploadSection) {\n uploadSection = React.createElement(\n 'div',\n { className: this.props.className },\n (0, _languageHandler._t)(\"Upload new:\"),\n React.createElement('input', { type: 'file', accept: 'image/*', onChange: this.onFileSelected }),\n this.state.errorText\n );\n }\n\n switch (this.state.phase) {\n case this.Phases.Display:\n case this.Phases.Error:\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { className: this.props.className },\n avatarImg\n ),\n uploadSection\n );\n case this.Phases.Uploading:\n var Loader = sdk.getComponent(\"elements.Spinner\");\n return React.createElement(Loader, null);\n }\n }\n});\n//# sourceMappingURL=ChangeAvatar.js.map","'use strict';\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'ChangeDisplayName',\n\n _getDisplayName: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var cli, res;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n cli = _MatrixClientPeg2.default.get();\n _context.prev = 1;\n _context.next = 4;\n return (0, _bluebird.resolve)(cli.getProfileInfo(cli.getUserId()));\n\n case 4:\n res = _context.sent;\n return _context.abrupt('return', res.displayname);\n\n case 8:\n _context.prev = 8;\n _context.t0 = _context['catch'](1);\n throw new Error(\"Failed to fetch display name\");\n\n case 11:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[1, 8]]);\n }));\n\n function _getDisplayName() {\n return _ref.apply(this, arguments);\n }\n\n return _getDisplayName;\n }(),\n\n _changeDisplayName: function _changeDisplayName(newDisplayname) {\n var cli = _MatrixClientPeg2.default.get();\n return cli.setDisplayName(newDisplayname).catch(function (e) {\n throw new Error(\"Failed to set display name\", e);\n });\n },\n\n render: function render() {\n var EditableTextContainer = _index2.default.getComponent('elements.EditableTextContainer');\n return _react2.default.createElement(EditableTextContainer, {\n getInitialValue: this._getDisplayName,\n placeholder: (0, _languageHandler._t)(\"No display name\"),\n blurToSubmit: true,\n onSubmit: this._changeDisplayName });\n }\n});\n//# sourceMappingURL=ChangeDisplayName.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SessionStore = require('../../../stores/SessionStore');\n\nvar _SessionStore2 = _interopRequireDefault(_SessionStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require('react');\n\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\");\nvar Modal = require(\"../../../Modal\");\nvar sdk = require(\"../../../index\");\n\nmodule.exports = React.createClass({\n displayName: 'ChangePassword',\n propTypes: {\n onFinished: _propTypes2.default.func,\n onError: _propTypes2.default.func,\n onCheckPassword: _propTypes2.default.func,\n rowClassName: _propTypes2.default.string,\n rowLabelClassName: _propTypes2.default.string,\n rowInputClassName: _propTypes2.default.string,\n buttonClassName: _propTypes2.default.string,\n confirm: _propTypes2.default.bool,\n // Whether to autoFocus the new password input\n autoFocusNewPasswordInput: _propTypes2.default.bool\n },\n\n Phases: {\n Edit: \"edit\",\n Uploading: \"uploading\",\n Error: \"error\"\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onFinished: function onFinished() {},\n onError: function onError() {},\n onCheckPassword: function onCheckPassword(oldPass, newPass, confirmPass) {\n if (newPass !== confirmPass) {\n return {\n error: (0, _languageHandler._t)(\"New passwords don't match\")\n };\n } else if (!newPass || newPass.length === 0) {\n return {\n error: (0, _languageHandler._t)(\"Passwords can't be empty\")\n };\n }\n },\n confirm: true\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n phase: this.Phases.Edit,\n cachedPassword: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._sessionStore = _SessionStore2.default;\n this._sessionStoreToken = this._sessionStore.addListener(this._setStateFromSessionStore);\n\n this._setStateFromSessionStore();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (this._sessionStoreToken) {\n this._sessionStoreToken.remove();\n }\n },\n\n _setStateFromSessionStore: function _setStateFromSessionStore() {\n this.setState({\n cachedPassword: this._sessionStore.getCachedPassword()\n });\n },\n\n changePassword: function changePassword(oldPassword, newPassword) {\n var _this = this;\n\n var cli = MatrixClientPeg.get();\n\n if (!this.props.confirm) {\n this._changePassword(cli, oldPassword, newPassword);\n return;\n }\n\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n Modal.createTrackedDialog('Change Password', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Warning!\"),\n description: React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Changing password will currently reset any end-to-end encryption keys on all devices, ' + 'making encrypted chat history unreadable, unless you first export your room keys ' + 'and re-import them afterwards. ' + 'In future this will be improved.'),\n ' (',\n React.createElement(\n 'a',\n { href: 'https://github.com/vector-im/riot-web/issues/2671' },\n 'https://github.com/vector-im/riot-web/issues/2671'\n ),\n ')'\n ),\n button: (0, _languageHandler._t)(\"Continue\"),\n extraButtons: [React.createElement(\n 'button',\n { className: 'mx_Dialog_primary',\n onClick: this._onExportE2eKeysClicked },\n (0, _languageHandler._t)('Export E2E room keys')\n )],\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n _this._changePassword(cli, oldPassword, newPassword);\n }\n }\n });\n },\n\n _changePassword: function _changePassword(cli, oldPassword, newPassword) {\n var _this2 = this;\n\n var authDict = {\n type: 'm.login.password',\n user: cli.credentials.userId,\n password: oldPassword\n };\n\n this.setState({\n phase: this.Phases.Uploading\n });\n\n cli.setPassword(authDict, newPassword).then(function () {\n // Notify SessionStore that the user's password was changed\n _dispatcher2.default.dispatch({ action: 'password_changed' });\n\n if (_this2.props.shouldAskForEmail) {\n return _this2._optionallySetEmail().then(function (confirmed) {\n _this2.props.onFinished({\n didSetEmail: confirmed\n });\n });\n } else {\n _this2.props.onFinished();\n }\n }, function (err) {\n _this2.props.onError(err);\n }).finally(function () {\n _this2.setState({\n phase: _this2.Phases.Edit\n });\n }).done();\n },\n\n _optionallySetEmail: function _optionallySetEmail() {\n var deferred = _bluebird2.default.defer();\n // Ask for an email otherwise the user has no way to reset their password\n var SetEmailDialog = sdk.getComponent(\"dialogs.SetEmailDialog\");\n Modal.createTrackedDialog('Do you want to set an email address?', '', SetEmailDialog, {\n title: (0, _languageHandler._t)('Do you want to set an email address?'),\n onFinished: function onFinished(confirmed) {\n // ignore confirmed, setting an email is optional\n deferred.resolve(confirmed);\n }\n });\n return deferred.promise;\n },\n\n _onExportE2eKeysClicked: function _onExportE2eKeysClicked() {\n Modal.createTrackedDialogAsync('Export E2E Keys', 'Change Password', import('../../../async-components/views/dialogs/ExportE2eKeysDialog'), {\n matrixClient: MatrixClientPeg.get()\n });\n },\n\n onClickChange: function onClickChange(ev) {\n ev.preventDefault();\n var oldPassword = this.state.cachedPassword || this.refs.old_input.value;\n var newPassword = this.refs.new_input.value;\n var confirmPassword = this.refs.confirm_input.value;\n var err = this.props.onCheckPassword(oldPassword, newPassword, confirmPassword);\n if (err) {\n this.props.onError(err);\n } else {\n this.changePassword(oldPassword, newPassword);\n }\n },\n\n render: function render() {\n var rowClassName = this.props.rowClassName;\n var rowLabelClassName = this.props.rowLabelClassName;\n var rowInputClassName = this.props.rowInputClassName;\n var buttonClassName = this.props.buttonClassName;\n\n var currentPassword = null;\n if (!this.state.cachedPassword) {\n currentPassword = React.createElement(\n 'div',\n { className: rowClassName },\n React.createElement(\n 'div',\n { className: rowLabelClassName },\n React.createElement(\n 'label',\n { htmlFor: 'passwordold' },\n (0, _languageHandler._t)('Current password')\n )\n ),\n React.createElement(\n 'div',\n { className: rowInputClassName },\n React.createElement('input', { id: 'passwordold', type: 'password', ref: 'old_input' })\n )\n );\n }\n\n switch (this.state.phase) {\n case this.Phases.Edit:\n var passwordLabel = this.state.cachedPassword ? (0, _languageHandler._t)('Password') : (0, _languageHandler._t)('New Password');\n return React.createElement(\n 'form',\n { className: this.props.className, onSubmit: this.onClickChange },\n currentPassword,\n React.createElement(\n 'div',\n { className: rowClassName },\n React.createElement(\n 'div',\n { className: rowLabelClassName },\n React.createElement(\n 'label',\n { htmlFor: 'password1' },\n passwordLabel\n )\n ),\n React.createElement(\n 'div',\n { className: rowInputClassName },\n React.createElement('input', { id: 'password1', type: 'password', ref: 'new_input', autoFocus: this.props.autoFocusNewPasswordInput })\n )\n ),\n React.createElement(\n 'div',\n { className: rowClassName },\n React.createElement(\n 'div',\n { className: rowLabelClassName },\n React.createElement(\n 'label',\n { htmlFor: 'password2' },\n (0, _languageHandler._t)('Confirm password')\n )\n ),\n React.createElement(\n 'div',\n { className: rowInputClassName },\n React.createElement('input', { id: 'password2', type: 'password', ref: 'confirm_input' })\n )\n ),\n React.createElement(\n _AccessibleButton2.default,\n { className: buttonClassName,\n onClick: this.onClickChange,\n element: 'button' },\n (0, _languageHandler._t)('Change Password')\n )\n );\n case this.Phases.Uploading:\n var Loader = sdk.getComponent(\"elements.Spinner\");\n return React.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n React.createElement(Loader, null)\n );\n }\n }\n});\n//# sourceMappingURL=ChangePassword.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DevicesPanel = function (_React$Component) {\n (0, _inherits3.default)(DevicesPanel, _React$Component);\n\n function DevicesPanel(props, context) {\n (0, _classCallCheck3.default)(this, DevicesPanel);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DevicesPanel.__proto__ || (0, _getPrototypeOf2.default)(DevicesPanel)).call(this, props, context));\n\n _this.state = {\n devices: undefined,\n deviceLoadError: undefined,\n\n selectedDevices: [],\n deleting: false\n };\n\n _this._unmounted = false;\n\n _this._renderDevice = _this._renderDevice.bind(_this);\n _this._onDeviceSelectionToggled = _this._onDeviceSelectionToggled.bind(_this);\n _this._onDeleteClick = _this._onDeleteClick.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(DevicesPanel, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this._loadDevices();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: '_loadDevices',\n value: function _loadDevices() {\n var _this2 = this;\n\n _MatrixClientPeg2.default.get().getDevices().done(function (resp) {\n if (_this2._unmounted) {\n return;\n }\n _this2.setState({ devices: resp.devices || [] });\n }, function (error) {\n if (_this2._unmounted) {\n return;\n }\n var errtxt = void 0;\n if (error.httpStatus == 404) {\n // 404 probably means the HS doesn't yet support the API.\n errtxt = (0, _languageHandler._t)(\"Your home server does not support device management.\");\n } else {\n console.error(\"Error loading devices:\", error);\n errtxt = (0, _languageHandler._t)(\"Unable to load device list\");\n }\n _this2.setState({ deviceLoadError: errtxt });\n });\n }\n\n /**\n * compare two devices, sorting from most-recently-seen to least-recently-seen\n * (and then, for stability, by device id)\n */\n\n }, {\n key: '_deviceCompare',\n value: function _deviceCompare(a, b) {\n // return < 0 if a comes before b, > 0 if a comes after b.\n var lastSeenDelta = (b.last_seen_ts || 0) - (a.last_seen_ts || 0);\n\n if (lastSeenDelta !== 0) {\n return lastSeenDelta;\n }\n\n var idA = a.device_id;\n var idB = b.device_id;\n return idA < idB ? -1 : idA > idB ? 1 : 0;\n }\n }, {\n key: '_onDeviceSelectionToggled',\n value: function _onDeviceSelectionToggled(device) {\n if (this._unmounted) {\n return;\n }\n\n var deviceId = device.device_id;\n this.setState(function (state, props) {\n // Make a copy of the selected devices, then add or remove the device\n var selectedDevices = state.selectedDevices.slice();\n\n var i = selectedDevices.indexOf(deviceId);\n if (i === -1) {\n selectedDevices.push(deviceId);\n } else {\n selectedDevices.splice(i, 1);\n }\n\n return { selectedDevices: selectedDevices };\n });\n }\n }, {\n key: '_onDeleteClick',\n value: function _onDeleteClick() {\n var _this3 = this;\n\n this.setState({\n deleting: true\n });\n\n this._makeDeleteRequest(null).catch(function (error) {\n if (_this3._unmounted) {\n return;\n }\n if (error.httpStatus !== 401 || !error.data || !error.data.flows) {\n // doesn't look like an interactive-auth failure\n throw error;\n }\n\n // pop up an interactive auth dialog\n var InteractiveAuthDialog = _index2.default.getComponent(\"dialogs.InteractiveAuthDialog\");\n\n _Modal2.default.createTrackedDialog('Delete Device Dialog', '', InteractiveAuthDialog, {\n title: (0, _languageHandler._t)(\"Authentication\"),\n matrixClient: _MatrixClientPeg2.default.get(),\n authData: error.data,\n makeRequest: _this3._makeDeleteRequest.bind(_this3)\n });\n }).catch(function (e) {\n console.error(\"Error deleting devices\", e);\n if (_this3._unmounted) {\n return;\n }\n }).finally(function () {\n _this3.setState({\n deleting: false\n });\n });\n }\n }, {\n key: '_makeDeleteRequest',\n value: function _makeDeleteRequest(auth) {\n var _this4 = this;\n\n return _MatrixClientPeg2.default.get().deleteMultipleDevices(this.state.selectedDevices, auth).then(function () {\n // Remove the deleted devices from `devices`, reset selection to []\n _this4.setState({\n devices: _this4.state.devices.filter(function (d) {\n return !_this4.state.selectedDevices.includes(d.device_id);\n }),\n selectedDevices: []\n });\n });\n }\n }, {\n key: '_renderDevice',\n value: function _renderDevice(device) {\n var DevicesPanelEntry = _index2.default.getComponent('settings.DevicesPanelEntry');\n return _react2.default.createElement(DevicesPanelEntry, {\n key: device.device_id,\n device: device,\n selected: this.state.selectedDevices.includes(device.device_id),\n onDeviceToggled: this._onDeviceSelectionToggled\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n var AccessibleButton = _index2.default.getComponent(\"elements.AccessibleButton\");\n\n if (this.state.deviceLoadError !== undefined) {\n var _classes = (0, _classnames2.default)(this.props.className, \"error\");\n return _react2.default.createElement(\n 'div',\n { className: _classes },\n this.state.deviceLoadError\n );\n }\n\n var devices = this.state.devices;\n if (devices === undefined) {\n // still loading\n var _classes2 = this.props.className;\n return _react2.default.createElement(Spinner, { className: _classes2 });\n }\n\n devices.sort(this._deviceCompare);\n\n var deleteButton = this.state.deleting ? _react2.default.createElement(Spinner, { w: 22, h: 22 }) : _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_textButton', onClick: this._onDeleteClick },\n (0, _languageHandler._t)(\"Delete %(count)s devices\", { count: this.state.selectedDevices.length })\n );\n\n var classes = (0, _classnames2.default)(this.props.className, \"mx_DevicesPanel\");\n return _react2.default.createElement(\n 'div',\n { className: classes },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_header' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceId' },\n (0, _languageHandler._t)(\"Device ID\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceName' },\n (0, _languageHandler._t)(\"Device Name\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceLastSeen' },\n (0, _languageHandler._t)(\"Last seen\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceButtons' },\n this.state.selectedDevices.length > 0 ? deleteButton : (0, _languageHandler._t)('Select devices')\n )\n ),\n devices.map(this._renderDevice)\n );\n }\n }]);\n return DevicesPanel;\n}(_react2.default.Component); /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = DevicesPanel;\n\n\nDevicesPanel.displayName = 'MemberDeviceInfo';\nDevicesPanel.propTypes = {\n className: _propTypes2.default.string\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=DevicesPanel.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _DateUtils = require('../../../DateUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DevicesPanelEntry = function (_React$Component) {\n (0, _inherits3.default)(DevicesPanelEntry, _React$Component);\n\n function DevicesPanelEntry(props, context) {\n (0, _classCallCheck3.default)(this, DevicesPanelEntry);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DevicesPanelEntry.__proto__ || (0, _getPrototypeOf2.default)(DevicesPanelEntry)).call(this, props, context));\n\n _this._unmounted = false;\n _this.onDeviceToggled = _this.onDeviceToggled.bind(_this);\n _this._onDisplayNameChanged = _this._onDisplayNameChanged.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(DevicesPanelEntry, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: '_onDisplayNameChanged',\n value: function _onDisplayNameChanged(value) {\n var device = this.props.device;\n return _MatrixClientPeg2.default.get().setDeviceDetails(device.device_id, {\n display_name: value\n }).catch(function (e) {\n console.error(\"Error setting device display name\", e);\n throw new Error((0, _languageHandler._t)(\"Failed to set display name\"));\n });\n }\n }, {\n key: 'onDeviceToggled',\n value: function onDeviceToggled() {\n this.props.onDeviceToggled(this.props.device);\n }\n }, {\n key: 'render',\n value: function render() {\n var EditableTextContainer = _index2.default.getComponent('elements.EditableTextContainer');\n\n var device = this.props.device;\n\n var lastSeen = \"\";\n if (device.last_seen_ts) {\n var lastSeenDate = (0, _DateUtils.formatDate)(new Date(device.last_seen_ts));\n lastSeen = device.last_seen_ip + \" @ \" + lastSeenDate.toLocaleString();\n }\n\n var myDeviceClass = '';\n if (device.device_id === _MatrixClientPeg2.default.get().getDeviceId()) {\n myDeviceClass = \" mx_DevicesPanel_myDevice\";\n }\n\n return _react2.default.createElement(\n 'div',\n { className: \"mx_DevicesPanel_device\" + myDeviceClass },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceId' },\n device.device_id\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceName' },\n _react2.default.createElement(EditableTextContainer, { initialValue: device.display_name,\n onSubmit: this._onDisplayNameChanged,\n placeholder: device.device_id\n })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_lastSeen' },\n lastSeen\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceButtons' },\n _react2.default.createElement('input', { type: 'checkbox', onClick: this.onDeviceToggled, checked: this.props.selected })\n )\n );\n }\n }]);\n return DevicesPanelEntry;\n}(_react2.default.Component);\n\nexports.default = DevicesPanelEntry;\n\n\nDevicesPanelEntry.propTypes = {\n device: _propTypes2.default.object.isRequired,\n onDeviceToggled: _propTypes2.default.func\n};\n\nDevicesPanelEntry.defaultProps = {\n onDeviceToggled: function onDeviceToggled() {}\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=DevicesPanelEntry.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nvar React = require(\"react\");\nvar Notifier = require(\"../../../Notifier\");\nvar dis = require(\"../../../dispatcher\");\n\n\nmodule.exports = React.createClass({\n displayName: 'EnableNotificationsButton',\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = dis.register(this.onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n dis.unregister(this.dispatcherRef);\n },\n\n onAction: function onAction(payload) {\n if (payload.action !== \"notifier_enabled\") {\n return;\n }\n this.forceUpdate();\n },\n\n enabled: function enabled() {\n return Notifier.isEnabled();\n },\n\n onClick: function onClick() {\n var self = this;\n if (!Notifier.supportsDesktopNotifications()) {\n return;\n }\n if (!Notifier.isEnabled()) {\n Notifier.setEnabled(true, function () {\n self.forceUpdate();\n });\n } else {\n Notifier.setEnabled(false);\n }\n this.forceUpdate();\n },\n\n render: function render() {\n if (this.enabled()) {\n return React.createElement(\n \"button\",\n { className: \"mx_EnableNotificationsButton\", onClick: this.onClick },\n (0, _languageHandler._t)(\"Disable Notifications\")\n );\n } else {\n return React.createElement(\n \"button\",\n { className: \"mx_EnableNotificationsButton\", onClick: this.onClick },\n (0, _languageHandler._t)(\"Enable Notifications\")\n );\n }\n }\n});\n//# sourceMappingURL=EnableNotificationsButton.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar React = require('react');\nvar sdk = require('../../../index');\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar dis = require('../../../dispatcher');\n\nmodule.exports = React.createClass({\n displayName: 'IntegrationsManager',\n\n propTypes: {\n src: React.PropTypes.string.isRequired, // the source of the integration manager being embedded\n onFinished: React.PropTypes.func.isRequired // callback when the lightbox is dismissed\n },\n\n // XXX: keyboard shortcuts for managing dialogs should be done by the modal\n // dialog base class somehow, surely...\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = dis.register(this.onAction);\n document.addEventListener(\"keydown\", this.onKeyDown);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n dis.unregister(this.dispatcherRef);\n document.removeEventListener(\"keydown\", this.onKeyDown);\n },\n\n onKeyDown: function onKeyDown(ev) {\n if (ev.keyCode == 27) {\n // escape\n ev.stopPropagation();\n ev.preventDefault();\n this.props.onFinished();\n }\n },\n\n onAction: function onAction(payload) {\n if (payload.action === 'close_scalar') {\n this.props.onFinished();\n }\n },\n\n render: function render() {\n return React.createElement('iframe', { src: this.props.src });\n }\n});\n//# sourceMappingURL=IntegrationsManager.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar KeyBackupPanel = function (_React$Component) {\n (0, _inherits3.default)(KeyBackupPanel, _React$Component);\n\n function KeyBackupPanel(props) {\n (0, _classCallCheck3.default)(this, KeyBackupPanel);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (KeyBackupPanel.__proto__ || (0, _getPrototypeOf2.default)(KeyBackupPanel)).call(this, props));\n\n _this._startNewBackup = _this._startNewBackup.bind(_this);\n _this._deleteBackup = _this._deleteBackup.bind(_this);\n _this._verifyDevice = _this._verifyDevice.bind(_this);\n _this._onKeyBackupStatus = _this._onKeyBackupStatus.bind(_this);\n _this._restoreBackup = _this._restoreBackup.bind(_this);\n\n _this._unmounted = false;\n _this.state = {\n loading: true,\n error: null,\n backupInfo: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(KeyBackupPanel, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this._loadBackupStatus();\n\n _MatrixClientPeg2.default.get().on('crypto.keyBackupStatus', this._onKeyBackupStatus);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener('crypto.keyBackupStatus', this._onKeyBackupStatus);\n }\n }\n }, {\n key: '_onKeyBackupStatus',\n value: function _onKeyBackupStatus() {\n this._loadBackupStatus();\n }\n }, {\n key: '_loadBackupStatus',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var backupInfo, backupSigStatus;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.setState({ loading: true });\n _context.prev = 1;\n _context.next = 4;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().getKeyBackupVersion());\n\n case 4:\n backupInfo = _context.sent;\n _context.next = 7;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().isKeyBackupTrusted(backupInfo));\n\n case 7:\n backupSigStatus = _context.sent;\n\n if (!this._unmounted) {\n _context.next = 10;\n break;\n }\n\n return _context.abrupt('return');\n\n case 10:\n this.setState({\n backupInfo: backupInfo,\n backupSigStatus: backupSigStatus,\n loading: false\n });\n _context.next = 20;\n break;\n\n case 13:\n _context.prev = 13;\n _context.t0 = _context['catch'](1);\n\n console.log(\"Unable to fetch key backup status\", _context.t0);\n\n if (!this._unmounted) {\n _context.next = 18;\n break;\n }\n\n return _context.abrupt('return');\n\n case 18:\n this.setState({\n error: _context.t0,\n loading: false\n });\n return _context.abrupt('return');\n\n case 20:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[1, 13]]);\n }));\n\n function _loadBackupStatus() {\n return _ref.apply(this, arguments);\n }\n\n return _loadBackupStatus;\n }()\n }, {\n key: '_startNewBackup',\n value: function _startNewBackup() {\n var _this2 = this;\n\n _Modal2.default.createTrackedDialogAsync('Key Backup', 'Key Backup', import('../../../async-components/views/dialogs/keybackup/CreateKeyBackupDialog'), {\n onFinished: function onFinished() {\n _this2._loadBackupStatus();\n }\n });\n }\n }, {\n key: '_deleteBackup',\n value: function _deleteBackup() {\n var _this3 = this;\n\n var QuestionDialog = _index2.default.getComponent('dialogs.QuestionDialog');\n _Modal2.default.createTrackedDialog('Delete Backup', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Delete Backup'),\n description: (0, _languageHandler._t)(\"Delete your backed up encryption keys from the server? \" + \"You will no longer be able to use your recovery key to read encrypted message history\"),\n button: (0, _languageHandler._t)('Delete backup'),\n danger: true,\n onFinished: function onFinished(proceed) {\n if (!proceed) return;\n _this3.setState({ loading: true });\n _MatrixClientPeg2.default.get().deleteKeyBackupVersion(_this3.state.backupInfo.version).then(function () {\n _this3._loadBackupStatus();\n });\n }\n });\n }\n }, {\n key: '_restoreBackup',\n value: function _restoreBackup() {\n var RestoreKeyBackupDialog = _index2.default.getComponent('dialogs.keybackup.RestoreKeyBackupDialog');\n _Modal2.default.createTrackedDialog('Restore Backup', '', RestoreKeyBackupDialog, {});\n }\n }, {\n key: '_verifyDevice',\n value: function _verifyDevice(e) {\n var _this4 = this;\n\n var device = this.state.backupSigStatus.sigs[e.target.getAttribute('data-sigindex')].device;\n\n var DeviceVerifyDialog = _index2.default.getComponent('views.dialogs.DeviceVerifyDialog');\n _Modal2.default.createTrackedDialog('Device Verify Dialog', '', DeviceVerifyDialog, {\n userId: _MatrixClientPeg2.default.get().credentials.userId,\n device: device,\n onFinished: function onFinished() {\n _this4._loadBackupStatus();\n }\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this5 = this;\n\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n var AccessibleButton = _index2.default.getComponent(\"elements.AccessibleButton\");\n\n if (this.state.error) {\n return _react2.default.createElement(\n 'div',\n { className: 'error' },\n (0, _languageHandler._t)(\"Unable to load key backup status\")\n );\n } else if (this.state.loading) {\n return _react2.default.createElement(Spinner, null);\n } else if (this.state.backupInfo) {\n var clientBackupStatus = void 0;\n if (_MatrixClientPeg2.default.get().getKeyBackupEnabled()) {\n clientBackupStatus = (0, _languageHandler._t)(\"This device is uploading keys to this backup\");\n } else {\n // XXX: display why and how to fix it\n clientBackupStatus = (0, _languageHandler._t)(\"This device is <b>not</b> uploading keys to this backup\", {}, { b: function b(x) {\n return _react2.default.createElement(\n 'b',\n null,\n x\n );\n } });\n }\n\n var backupSigStatuses = this.state.backupSigStatus.sigs.map(function (sig, i) {\n var deviceName = sig.device.getDisplayName() || sig.device.deviceId;\n var sigStatusSubstitutions = {\n validity: function validity(sub) {\n return _react2.default.createElement(\n 'span',\n { className: sig.valid ? 'mx_KeyBackupPanel_sigValid' : 'mx_KeyBackupPanel_sigInvalid' },\n sub\n );\n },\n verify: function verify(sub) {\n return _react2.default.createElement(\n 'span',\n { className: sig.device.isVerified() ? 'mx_KeyBackupPanel_deviceVerified' : 'mx_KeyBackupPanel_deviceNotVerified' },\n sub\n );\n },\n device: function device(sub) {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_KeyBackupPanel_deviceName' },\n deviceName\n );\n }\n };\n var sigStatus = void 0;\n if (sig.device.getFingerprint() === _MatrixClientPeg2.default.get().getDeviceEd25519Key()) {\n sigStatus = (0, _languageHandler._t)(\"Backup has a <validity>valid</validity> signature from this device\", {}, sigStatusSubstitutions);\n } else if (sig.valid && sig.device.isVerified()) {\n sigStatus = (0, _languageHandler._t)(\"Backup has a <validity>valid</validity> signature from \" + \"<verify>verified</verify> device <device></device>\", {}, sigStatusSubstitutions);\n } else if (sig.valid && !sig.device.isVerified()) {\n sigStatus = (0, _languageHandler._t)(\"Backup has a <validity>valid</validity> signature from \" + \"<verify>unverified</verify> device <device></device>\", {}, sigStatusSubstitutions);\n } else if (!sig.valid && sig.device.isVerified()) {\n sigStatus = (0, _languageHandler._t)(\"Backup has an <validity>invalid</validity> signature from \" + \"<verify>verified</verify> device <device></device>\", {}, sigStatusSubstitutions);\n } else if (!sig.valid && !sig.device.isVerified()) {\n sigStatus = (0, _languageHandler._t)(\"Backup has an <validity>invalid</validity> signature from \" + \"<verify>unverified</verify> device <device></device>\", {}, sigStatusSubstitutions);\n }\n\n var verifyButton = void 0;\n if (!sig.device.isVerified()) {\n verifyButton = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_UserSettings_button',\n onClick: _this5._verifyDevice, 'data-sigindex': i },\n (0, _languageHandler._t)(\"Verify...\")\n )\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { key: i },\n sigStatus,\n verifyButton\n );\n });\n if (this.state.backupSigStatus.sigs.length === 0) {\n backupSigStatuses = (0, _languageHandler._t)(\"Backup is not signed by any of your devices\");\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Backup version: \"),\n this.state.backupInfo.version,\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)(\"Algorithm: \"),\n this.state.backupInfo.algorithm,\n _react2.default.createElement('br', null),\n clientBackupStatus,\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n 'div',\n null,\n backupSigStatuses\n ),\n _react2.default.createElement('br', null),\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_UserSettings_button',\n onClick: this._restoreBackup },\n (0, _languageHandler._t)(\"Restore backup\")\n ),\n '\\xA0\\xA0\\xA0',\n _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_UserSettings_button danger',\n onClick: this._deleteBackup },\n (0, _languageHandler._t)(\"Delete backup\")\n )\n );\n } else {\n return _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"No backup is present\"),\n _react2.default.createElement('br', null),\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_UserSettings_button',\n onClick: this._startNewBackup },\n (0, _languageHandler._t)(\"Start a new backup\")\n )\n );\n }\n }\n }]);\n return KeyBackupPanel;\n}(_react2.default.Component); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = KeyBackupPanel;\nmodule.exports = exports['default'];\n//# sourceMappingURL=KeyBackupPanel.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _UserSettingsStore = require('../../../UserSettingsStore');\n\nvar _UserSettingsStore2 = _interopRequireDefault(_UserSettingsStore);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _notifications = require('../../../notifications');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// TODO: this \"view\" component still has far too much application logic in it,\n// which should be factored out to other files.\n\n// TODO: this component also does a lot of direct poking into this.state, which\n// is VERY NAUGHTY.\n\n\n/**\n * Rules that Vector used to set in order to override the actions of default rules.\n * These are used to port peoples existing overrides to match the current API.\n * These can be removed and forgotten once everyone has moved to the new client.\n */\nvar LEGACY_RULES = {\n \"im.vector.rule.contains_display_name\": \".m.rule.contains_display_name\",\n \"im.vector.rule.room_one_to_one\": \".m.rule.room_one_to_one\",\n \"im.vector.rule.room_message\": \".m.rule.message\",\n \"im.vector.rule.invite_for_me\": \".m.rule.invite_for_me\",\n \"im.vector.rule.call\": \".m.rule.call\",\n \"im.vector.rule.notices\": \".m.rule.suppress_notices\"\n}; /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction portLegacyActions(actions) {\n var decoded = _notifications.NotificationUtils.decodeActions(actions);\n if (decoded !== null) {\n return _notifications.NotificationUtils.encodeActions(decoded);\n } else {\n // We don't recognise one of the actions here, so we don't try to\n // canonicalise them.\n return actions;\n }\n}\n\nmodule.exports = _react2.default.createClass({\n displayName: 'Notifications',\n\n phases: {\n LOADING: \"LOADING\", // The component is loading or sending data to the hs\n DISPLAY: \"DISPLAY\", // The component is ready and display data\n ERROR: \"ERROR\" // There was an error\n },\n\n propTypes: {\n // The array of threepids from the JS SDK (required for email notifications)\n threepids: _react2.default.PropTypes.array.isRequired,\n // The brand string set when creating an email pusher\n brand: _react2.default.PropTypes.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n threepids: []\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n phase: this.phases.LOADING,\n masterPushRule: undefined, // The master rule ('.m.rule.master')\n vectorPushRules: [], // HS default push rules displayed in Vector UI\n vectorContentRules: { // Keyword push rules displayed in Vector UI\n vectorState: _notifications.PushRuleVectorState.ON,\n rules: []\n },\n externalPushRules: [], // Push rules (except content rule) that have been defined outside Vector UI\n externalContentRules: [] // Keyword push rules that have been defined outside Vector UI\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._refreshFromServer();\n },\n\n onEnableNotificationsChange: function onEnableNotificationsChange(event) {\n var self = this;\n this.setState({\n phase: this.phases.LOADING\n });\n\n _MatrixClientPeg2.default.get().setPushRuleEnabled('global', self.state.masterPushRule.kind, self.state.masterPushRule.rule_id, !event.target.checked).done(function () {\n self._refreshFromServer();\n });\n },\n\n onEnableDesktopNotificationsChange: function onEnableDesktopNotificationsChange(event) {\n var _this = this;\n\n _SettingsStore2.default.setValue(\"notificationsEnabled\", null, _SettingsStore.SettingLevel.DEVICE, event.target.checked).finally(function () {\n _this.forceUpdate();\n });\n },\n\n onEnableDesktopNotificationBodyChange: function onEnableDesktopNotificationBodyChange(event) {\n var _this2 = this;\n\n _SettingsStore2.default.setValue(\"notificationBodyEnabled\", null, _SettingsStore.SettingLevel.DEVICE, event.target.checked).finally(function () {\n _this2.forceUpdate();\n });\n },\n\n onEnableAudioNotificationsChange: function onEnableAudioNotificationsChange(event) {\n var _this3 = this;\n\n _SettingsStore2.default.setValue(\"audioNotificationsEnabled\", null, _SettingsStore.SettingLevel.DEVICE, event.target.checked).finally(function () {\n _this3.forceUpdate();\n });\n },\n\n onEnableEmailNotificationsChange: function onEnableEmailNotificationsChange(address, event) {\n var _this4 = this;\n\n var emailPusherPromise = void 0;\n if (event.target.checked) {\n var data = {};\n data['brand'] = this.props.brand || 'Riot';\n emailPusherPromise = _UserSettingsStore2.default.addEmailPusher(address, data);\n } else {\n var emailPusher = _UserSettingsStore2.default.getEmailPusher(this.state.pushers, address);\n emailPusher.kind = null;\n emailPusherPromise = _MatrixClientPeg2.default.get().setPusher(emailPusher);\n }\n emailPusherPromise.done(function () {\n _this4._refreshFromServer();\n }, function (error) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Error saving email notification preferences', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error saving email notification preferences'),\n description: (0, _languageHandler._t)('An error occurred whilst saving your email notification preferences.')\n });\n });\n },\n\n onNotifStateButtonClicked: function onNotifStateButtonClicked(event) {\n // FIXME: use .bind() rather than className metadata here surely\n var vectorRuleId = event.target.className.split(\"-\")[0];\n var newPushRuleVectorState = event.target.className.split(\"-\")[1];\n\n if (\"_keywords\" === vectorRuleId) {\n this._setKeywordsPushRuleVectorState(newPushRuleVectorState);\n } else {\n var rule = this.getRule(vectorRuleId);\n if (rule) {\n this._setPushRuleVectorState(rule, newPushRuleVectorState);\n }\n }\n },\n\n onKeywordsClicked: function onKeywordsClicked(event) {\n var self = this;\n\n // Compute the keywords list to display\n var keywords = [];\n for (var i in this.state.vectorContentRules.rules) {\n var rule = this.state.vectorContentRules.rules[i];\n keywords.push(rule.pattern);\n }\n if (keywords.length) {\n // As keeping the order of per-word push rules hs side is a bit tricky to code,\n // display the keywords in alphabetical order to the user\n keywords.sort();\n\n keywords = keywords.join(\", \");\n } else {\n keywords = \"\";\n }\n\n var TextInputDialog = _index2.default.getComponent(\"dialogs.TextInputDialog\");\n _Modal2.default.createTrackedDialog('Keywords Dialog', '', TextInputDialog, {\n title: (0, _languageHandler._t)('Keywords'),\n description: (0, _languageHandler._t)('Enter keywords separated by a comma:'),\n button: (0, _languageHandler._t)('OK'),\n value: keywords,\n onFinished: function onFinished(should_leave, newValue) {\n if (should_leave && newValue !== keywords) {\n var newKeywords = newValue.split(',');\n for (var _i in newKeywords) {\n newKeywords[_i] = newKeywords[_i].trim();\n }\n\n // Remove duplicates and empty\n newKeywords = newKeywords.reduce(function (array, keyword) {\n if (keyword !== \"\" && array.indexOf(keyword) < 0) {\n array.push(keyword);\n }\n return array;\n }, []);\n\n self._setKeywords(newKeywords);\n }\n }\n });\n },\n\n getRule: function getRule(vectorRuleId) {\n for (var i in this.state.vectorPushRules) {\n var rule = this.state.vectorPushRules[i];\n if (rule.vectorRuleId === vectorRuleId) {\n return rule;\n }\n }\n },\n\n _setPushRuleVectorState: function _setPushRuleVectorState(rule, newPushRuleVectorState) {\n if (rule && rule.vectorState !== newPushRuleVectorState) {\n this.setState({\n phase: this.phases.LOADING\n });\n\n var self = this;\n var cli = _MatrixClientPeg2.default.get();\n var deferreds = [];\n var ruleDefinition = _notifications.VectorPushRulesDefinitions[rule.vectorRuleId];\n\n if (rule.rule) {\n var actions = ruleDefinition.vectorStateToActions[newPushRuleVectorState];\n\n if (!actions) {\n // The new state corresponds to disabling the rule.\n deferreds.push(cli.setPushRuleEnabled('global', rule.rule.kind, rule.rule.rule_id, false));\n } else {\n // The new state corresponds to enabling the rule and setting specific actions\n deferreds.push(this._updatePushRuleActions(rule.rule, actions, true));\n }\n }\n\n _bluebird2.default.all(deferreds).done(function () {\n self._refreshFromServer();\n }, function (error) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to change settings: \" + error);\n _Modal2.default.createTrackedDialog('Failed to change settings', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to change settings'),\n description: error && error.message ? error.message : (0, _languageHandler._t)('Operation failed'),\n onFinished: self._refreshFromServer\n });\n });\n }\n },\n\n _setKeywordsPushRuleVectorState: function _setKeywordsPushRuleVectorState(newPushRuleVectorState) {\n // Is there really a change?\n if (this.state.vectorContentRules.vectorState === newPushRuleVectorState || this.state.vectorContentRules.rules.length === 0) {\n return;\n }\n\n var self = this;\n var cli = _MatrixClientPeg2.default.get();\n\n this.setState({\n phase: this.phases.LOADING\n });\n\n // Update all rules in self.state.vectorContentRules\n var deferreds = [];\n for (var i in this.state.vectorContentRules.rules) {\n var rule = this.state.vectorContentRules.rules[i];\n\n var enabled = void 0;var actions = void 0;\n switch (newPushRuleVectorState) {\n case _notifications.PushRuleVectorState.ON:\n if (rule.actions.length !== 1) {\n actions = _notifications.PushRuleVectorState.actionsFor(_notifications.PushRuleVectorState.ON);\n }\n\n if (this.state.vectorContentRules.vectorState === _notifications.PushRuleVectorState.OFF) {\n enabled = true;\n }\n break;\n\n case _notifications.PushRuleVectorState.LOUD:\n if (rule.actions.length !== 3) {\n actions = _notifications.PushRuleVectorState.actionsFor(_notifications.PushRuleVectorState.LOUD);\n }\n\n if (this.state.vectorContentRules.vectorState === _notifications.PushRuleVectorState.OFF) {\n enabled = true;\n }\n break;\n\n case _notifications.PushRuleVectorState.OFF:\n enabled = false;\n break;\n }\n\n if (actions) {\n // Note that the workaround in _updatePushRuleActions will automatically\n // enable the rule\n deferreds.push(this._updatePushRuleActions(rule, actions, enabled));\n } else if (enabled != undefined) {\n deferreds.push(cli.setPushRuleEnabled('global', rule.kind, rule.rule_id, enabled));\n }\n }\n\n _bluebird2.default.all(deferreds).done(function (resps) {\n self._refreshFromServer();\n }, function (error) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Can't update user notification settings: \" + error);\n _Modal2.default.createTrackedDialog('Can\\'t update user notifcation settings', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Can\\'t update user notification settings'),\n description: error && error.message ? error.message : (0, _languageHandler._t)('Operation failed'),\n onFinished: self._refreshFromServer\n });\n });\n },\n\n _setKeywords: function _setKeywords(newKeywords) {\n this.setState({\n phase: this.phases.LOADING\n });\n\n var self = this;\n var cli = _MatrixClientPeg2.default.get();\n var removeDeferreds = [];\n\n // Remove per-word push rules of keywords that are no more in the list\n var vectorContentRulesPatterns = [];\n for (var i in self.state.vectorContentRules.rules) {\n var rule = self.state.vectorContentRules.rules[i];\n\n vectorContentRulesPatterns.push(rule.pattern);\n\n if (newKeywords.indexOf(rule.pattern) < 0) {\n removeDeferreds.push(cli.deletePushRule('global', rule.kind, rule.rule_id));\n }\n }\n\n // If the keyword is part of `externalContentRules`, remove the rule\n // before recreating it in the right Vector path\n for (var _i2 in self.state.externalContentRules) {\n var _rule = self.state.externalContentRules[_i2];\n\n if (newKeywords.indexOf(_rule.pattern) >= 0) {\n removeDeferreds.push(cli.deletePushRule('global', _rule.kind, _rule.rule_id));\n }\n }\n\n var onError = function onError(error) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to update keywords: \" + error);\n _Modal2.default.createTrackedDialog('Failed to update keywords', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to update keywords'),\n description: error && error.message ? error.message : (0, _languageHandler._t)('Operation failed'),\n onFinished: self._refreshFromServer\n });\n };\n\n // Then, add the new ones\n _bluebird2.default.all(removeDeferreds).done(function (resps) {\n var deferreds = [];\n\n var pushRuleVectorStateKind = self.state.vectorContentRules.vectorState;\n if (pushRuleVectorStateKind === _notifications.PushRuleVectorState.OFF) {\n // When the current global keywords rule is OFF, we need to look at\n // the flavor of rules in 'vectorContentRules' to apply the same actions\n // when creating the new rule.\n // Thus, this new rule will join the 'vectorContentRules' set.\n if (self.state.vectorContentRules.rules.length) {\n pushRuleVectorStateKind = _notifications.PushRuleVectorState.contentRuleVectorStateKind(self.state.vectorContentRules.rules[0]);\n } else {\n // ON is default\n pushRuleVectorStateKind = _notifications.PushRuleVectorState.ON;\n }\n }\n\n for (var _i3 in newKeywords) {\n var keyword = newKeywords[_i3];\n\n if (vectorContentRulesPatterns.indexOf(keyword) < 0) {\n if (self.state.vectorContentRules.vectorState !== _notifications.PushRuleVectorState.OFF) {\n deferreds.push(cli.addPushRule('global', 'content', keyword, {\n actions: _notifications.PushRuleVectorState.actionsFor(pushRuleVectorStateKind),\n pattern: keyword\n }));\n } else {\n deferreds.push(self._addDisabledPushRule('global', 'content', keyword, {\n actions: _notifications.PushRuleVectorState.actionsFor(pushRuleVectorStateKind),\n pattern: keyword\n }));\n }\n }\n }\n\n _bluebird2.default.all(deferreds).done(function (resps) {\n self._refreshFromServer();\n }, onError);\n }, onError);\n },\n\n // Create a push rule but disabled\n _addDisabledPushRule: function _addDisabledPushRule(scope, kind, ruleId, body) {\n var cli = _MatrixClientPeg2.default.get();\n return cli.addPushRule(scope, kind, ruleId, body).then(function () {\n return cli.setPushRuleEnabled(scope, kind, ruleId, false);\n });\n },\n\n // Check if any legacy im.vector rules need to be ported to the new API\n // for overriding the actions of default rules.\n _portRulesToNewAPI: function _portRulesToNewAPI(rulesets) {\n var self = this;\n var needsUpdate = [];\n var cli = _MatrixClientPeg2.default.get();\n\n for (var kind in rulesets.global) {\n var ruleset = rulesets.global[kind];\n for (var i = 0; i < ruleset.length; ++i) {\n var rule = ruleset[i];\n if (rule.rule_id in LEGACY_RULES) {\n console.log(\"Porting legacy rule\", rule);\n needsUpdate.push(function (kind, rule) {\n return cli.setPushRuleActions('global', kind, LEGACY_RULES[rule.rule_id], portLegacyActions(rule.actions)).then(function () {\n return cli.deletePushRule('global', kind, rule.rule_id);\n }).catch(function (e) {\n console.warn('Error when porting legacy rule: ' + e);\n });\n }(kind, rule));\n }\n }\n }\n\n if (needsUpdate.length > 0) {\n // If some of the rules need to be ported then wait for the porting\n // to happen and then fetch the rules again.\n return _bluebird2.default.all(needsUpdate).then(function () {\n return cli.getPushRules();\n });\n } else {\n // Otherwise return the rules that we already have.\n return rulesets;\n }\n },\n\n _refreshFromServer: function _refreshFromServer() {\n var self = this;\n var pushRulesPromise = _MatrixClientPeg2.default.get().getPushRules().then(self._portRulesToNewAPI).then(function (rulesets) {\n /// XXX seriously? wtf is this?\n _MatrixClientPeg2.default.get().pushRules = rulesets;\n\n // Get homeserver default rules and triage them by categories\n var rule_categories = {\n // The master rule (all notifications disabling)\n '.m.rule.master': 'master',\n\n // The default push rules displayed by Vector UI\n '.m.rule.contains_display_name': 'vector',\n '.m.rule.contains_user_name': 'vector',\n '.m.rule.roomnotif': 'vector',\n '.m.rule.room_one_to_one': 'vector',\n '.m.rule.encrypted_room_one_to_one': 'vector',\n '.m.rule.message': 'vector',\n '.m.rule.encrypted': 'vector',\n '.m.rule.invite_for_me': 'vector',\n //'.m.rule.member_event': 'vector',\n '.m.rule.call': 'vector',\n '.m.rule.suppress_notices': 'vector'\n\n // Others go to others\n };\n\n // HS default rules\n var defaultRules = { master: [], vector: {}, others: [] };\n\n for (var kind in rulesets.global) {\n for (var i = 0; i < (0, _keys2.default)(rulesets.global[kind]).length; ++i) {\n var r = rulesets.global[kind][i];\n var cat = rule_categories[r.rule_id];\n r.kind = kind;\n\n if (r.rule_id[0] === '.') {\n if (cat === 'vector') {\n defaultRules.vector[r.rule_id] = r;\n } else if (cat === 'master') {\n defaultRules.master.push(r);\n } else {\n defaultRules['others'].push(r);\n }\n }\n }\n }\n\n // Get the master rule if any defined by the hs\n if (defaultRules.master.length > 0) {\n self.state.masterPushRule = defaultRules.master[0];\n }\n\n // parse the keyword rules into our state\n var contentRules = _notifications.ContentRules.parseContentRules(rulesets);\n self.state.vectorContentRules = {\n vectorState: contentRules.vectorState,\n rules: contentRules.rules\n };\n self.state.externalContentRules = contentRules.externalRules;\n\n // Build the rules displayed in the Vector UI matrix table\n self.state.vectorPushRules = [];\n self.state.externalPushRules = [];\n\n var vectorRuleIds = ['.m.rule.contains_display_name', '.m.rule.contains_user_name', '.m.rule.roomnotif', '_keywords', '.m.rule.room_one_to_one', '.m.rule.encrypted_room_one_to_one', '.m.rule.message', '.m.rule.encrypted', '.m.rule.invite_for_me',\n //'im.vector.rule.member_event',\n '.m.rule.call', '.m.rule.suppress_notices'];\n for (var _i4 in vectorRuleIds) {\n var vectorRuleId = vectorRuleIds[_i4];\n\n if (vectorRuleId === '_keywords') {\n // keywords needs a special handling\n // For Vector UI, this is a single global push rule but translated in Matrix,\n // it corresponds to all content push rules (stored in self.state.vectorContentRule)\n self.state.vectorPushRules.push({\n \"vectorRuleId\": \"_keywords\",\n \"description\": _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)('Messages containing <span>keywords</span>', {}, { 'span': function span(sub) {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_UserNotifSettings_keywords', onClick: self.onKeywordsClicked },\n sub\n );\n }\n })\n ),\n \"vectorState\": self.state.vectorContentRules.vectorState\n });\n } else {\n var ruleDefinition = _notifications.VectorPushRulesDefinitions[vectorRuleId];\n var rule = defaultRules.vector[vectorRuleId];\n\n var vectorState = ruleDefinition.ruleToVectorState(rule);\n\n //console.log(\"Refreshing vectorPushRules for \" + vectorRuleId +\", \"+ ruleDefinition.description +\", \" + rule +\", \" + vectorState);\n\n self.state.vectorPushRules.push({\n \"vectorRuleId\": vectorRuleId,\n \"description\": (0, _languageHandler._t)(ruleDefinition.description), // Text from VectorPushRulesDefinitions.js\n \"rule\": rule,\n \"vectorState\": vectorState\n });\n\n // if there was a rule which we couldn't parse, add it to the external list\n if (rule && !vectorState) {\n rule.description = ruleDefinition.description;\n self.state.externalPushRules.push(rule);\n }\n }\n }\n\n // Build the rules not managed by Vector UI\n var otherRulesDescriptions = {\n '.m.rule.message': (0, _languageHandler._t)('Notify for all other messages/rooms'),\n '.m.rule.fallback': (0, _languageHandler._t)('Notify me for anything else')\n };\n\n for (var _i5 in defaultRules.others) {\n var _rule2 = defaultRules.others[_i5];\n var ruleDescription = otherRulesDescriptions[_rule2.rule_id];\n\n // Show enabled default rules that was modified by the user\n if (ruleDescription && _rule2.enabled && !_rule2.default) {\n _rule2.description = ruleDescription;\n self.state.externalPushRules.push(_rule2);\n }\n }\n });\n\n var pushersPromise = _MatrixClientPeg2.default.get().getPushers().then(function (resp) {\n self.setState({ pushers: resp.pushers });\n });\n\n _bluebird2.default.all([pushRulesPromise, pushersPromise]).then(function () {\n self.setState({\n phase: self.phases.DISPLAY\n });\n }, function (error) {\n console.error(error);\n self.setState({\n phase: self.phases.ERROR\n });\n }).finally(function () {\n // actually explicitly update our state having been deep-manipulating it\n self.setState({\n masterPushRule: self.state.masterPushRule,\n vectorContentRules: self.state.vectorContentRules,\n vectorPushRules: self.state.vectorPushRules,\n externalContentRules: self.state.externalContentRules,\n externalPushRules: self.state.externalPushRules\n });\n }).done();\n },\n\n _updatePushRuleActions: function _updatePushRuleActions(rule, actions, enabled) {\n var cli = _MatrixClientPeg2.default.get();\n\n return cli.setPushRuleActions('global', rule.kind, rule.rule_id, actions).then(function () {\n // Then, if requested, enabled or disabled the rule\n if (undefined != enabled) {\n return cli.setPushRuleEnabled('global', rule.kind, rule.rule_id, enabled);\n }\n });\n },\n\n renderNotifRulesTableRow: function renderNotifRulesTableRow(title, className, pushRuleVectorState) {\n return _react2.default.createElement(\n 'tr',\n { key: className },\n _react2.default.createElement(\n 'th',\n null,\n title\n ),\n _react2.default.createElement(\n 'th',\n null,\n _react2.default.createElement('input', { className: className + \"-\" + _notifications.PushRuleVectorState.OFF,\n type: 'radio',\n checked: pushRuleVectorState === _notifications.PushRuleVectorState.OFF,\n onChange: this.onNotifStateButtonClicked })\n ),\n _react2.default.createElement(\n 'th',\n null,\n _react2.default.createElement('input', { className: className + \"-\" + _notifications.PushRuleVectorState.ON,\n type: 'radio',\n checked: pushRuleVectorState === _notifications.PushRuleVectorState.ON,\n onChange: this.onNotifStateButtonClicked })\n ),\n _react2.default.createElement(\n 'th',\n null,\n _react2.default.createElement('input', { className: className + \"-\" + _notifications.PushRuleVectorState.LOUD,\n type: 'radio',\n checked: pushRuleVectorState === _notifications.PushRuleVectorState.LOUD,\n onChange: this.onNotifStateButtonClicked })\n )\n );\n },\n\n renderNotifRulesTableRows: function renderNotifRulesTableRows() {\n var rows = [];\n for (var i in this.state.vectorPushRules) {\n var rule = this.state.vectorPushRules[i];\n //console.log(\"rendering: \" + rule.description + \", \" + rule.vectorRuleId + \", \" + rule.vectorState);\n rows.push(this.renderNotifRulesTableRow(rule.description, rule.vectorRuleId, rule.vectorState));\n }\n return rows;\n },\n\n emailNotificationsRow: function emailNotificationsRow(address, label) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_tableRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_inputCell' },\n _react2.default.createElement('input', { id: 'enableEmailNotifications_{address}',\n ref: 'enableEmailNotifications_{address}',\n type: 'checkbox',\n checked: _UserSettingsStore2.default.hasEmailPusher(this.state.pushers, address),\n onChange: this.onEnableEmailNotificationsChange.bind(this, address)\n })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_labelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'enableEmailNotifications_{address}' },\n label\n )\n )\n );\n },\n\n render: function render() {\n var self = this;\n\n var spinner = void 0;\n if (this.state.phase === this.phases.LOADING) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n spinner = _react2.default.createElement(Loader, null);\n }\n\n var masterPushRuleDiv = void 0;\n if (this.state.masterPushRule) {\n masterPushRuleDiv = _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_tableRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_inputCell' },\n _react2.default.createElement('input', { id: 'enableNotifications',\n ref: 'enableNotifications',\n type: 'checkbox',\n checked: !this.state.masterPushRule.enabled,\n onChange: this.onEnableNotificationsChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_labelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'enableNotifications' },\n (0, _languageHandler._t)('Enable notifications for this account')\n )\n )\n );\n }\n\n // When enabled, the master rule inhibits all existing rules\n // So do not show all notification settings\n if (this.state.masterPushRule && this.state.masterPushRule.enabled) {\n return _react2.default.createElement(\n 'div',\n null,\n masterPushRuleDiv,\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_notifTable' },\n (0, _languageHandler._t)('All notifications are currently disabled for all targets.'),\n '.'\n )\n );\n }\n\n var emailThreepids = this.props.threepids.filter(function (tp) {\n return tp.medium === \"email\";\n });\n var emailNotificationsRow = void 0;\n if (emailThreepids.length === 0) {\n emailNotificationsRow = _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Add an email address above to configure email notifications')\n );\n } else {\n // This only supports the first email address in your profile for now\n emailNotificationsRow = this.emailNotificationsRow(emailThreepids[0].address, (0, _languageHandler._t)('Enable email notifications') + ' (' + emailThreepids[0].address + ')');\n }\n\n // Build external push rules\n var externalRules = [];\n for (var i in this.state.externalPushRules) {\n var rule = this.state.externalPushRules[i];\n externalRules.push(_react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)(rule.description)\n ));\n }\n\n // Show keywords not displayed by the vector UI as a single external push rule\n var externalKeywords = [];\n for (var _i6 in this.state.externalContentRules) {\n var _rule3 = this.state.externalContentRules[_i6];\n externalKeywords.push(_rule3.pattern);\n }\n if (externalKeywords.length) {\n externalKeywords = externalKeywords.join(\", \");\n externalRules.push(_react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)('Notifications on the following keywords follow rules which can’t be displayed here:'),\n ' ',\n externalKeywords\n ));\n }\n\n var devicesSection = void 0;\n if (this.state.pushers === undefined) {\n devicesSection = _react2.default.createElement(\n 'div',\n { className: 'error' },\n (0, _languageHandler._t)('Unable to fetch notification target list')\n );\n } else if (this.state.pushers.length == 0) {\n devicesSection = null;\n } else {\n // TODO: It would be great to be able to delete pushers from here too,\n // and this wouldn't be hard to add.\n var rows = [];\n for (var _i7 = 0; _i7 < this.state.pushers.length; ++_i7) {\n rows.push(_react2.default.createElement(\n 'tr',\n { key: _i7 },\n _react2.default.createElement(\n 'td',\n null,\n this.state.pushers[_i7].app_display_name\n ),\n _react2.default.createElement(\n 'td',\n null,\n this.state.pushers[_i7].device_display_name\n )\n ));\n }\n devicesSection = _react2.default.createElement(\n 'table',\n { className: 'mx_UserSettings_devicesTable' },\n _react2.default.createElement(\n 'tbody',\n null,\n rows\n )\n );\n }\n if (devicesSection) {\n devicesSection = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Notification targets')\n ),\n devicesSection\n );\n }\n\n var advancedSettings = void 0;\n if (externalRules.length) {\n advancedSettings = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Advanced notification settings')\n ),\n (0, _languageHandler._t)('There are advanced notifications which are not shown here'),\n '.',\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)('You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply'),\n '.',\n _react2.default.createElement(\n 'ul',\n null,\n externalRules\n )\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n masterPushRuleDiv,\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_notifTable' },\n spinner,\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_tableRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_inputCell' },\n _react2.default.createElement('input', { id: 'enableDesktopNotifications',\n ref: 'enableDesktopNotifications',\n type: 'checkbox',\n checked: _SettingsStore2.default.getValue(\"notificationsEnabled\"),\n onChange: this.onEnableDesktopNotificationsChange })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_labelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'enableDesktopNotifications' },\n (0, _languageHandler._t)('Enable desktop notifications')\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_tableRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_inputCell' },\n _react2.default.createElement('input', { id: 'enableDesktopNotificationBody',\n ref: 'enableDesktopNotificationBody',\n type: 'checkbox',\n checked: _SettingsStore2.default.getValue(\"notificationBodyEnabled\"),\n onChange: this.onEnableDesktopNotificationBodyChange })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_labelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'enableDesktopNotificationBody' },\n (0, _languageHandler._t)('Show message in desktop notification')\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_tableRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_inputCell' },\n _react2.default.createElement('input', { id: 'enableDesktopAudioNotifications',\n ref: 'enableDesktopAudioNotifications',\n type: 'checkbox',\n checked: _SettingsStore2.default.getValue(\"audioNotificationsEnabled\"),\n onChange: this.onEnableAudioNotificationsChange })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_labelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'enableDesktopAudioNotifications' },\n (0, _languageHandler._t)('Enable audible notifications in web client')\n )\n )\n ),\n emailNotificationsRow,\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_pushRulesTableWrapper' },\n _react2.default.createElement(\n 'table',\n { className: 'mx_UserNotifSettings_pushRulesTable' },\n _react2.default.createElement(\n 'thead',\n null,\n _react2.default.createElement(\n 'tr',\n null,\n _react2.default.createElement('th', { width: '55%' }),\n _react2.default.createElement(\n 'th',\n { width: '15%' },\n (0, _languageHandler._t)('Off')\n ),\n _react2.default.createElement(\n 'th',\n { width: '15%' },\n (0, _languageHandler._t)('On')\n ),\n _react2.default.createElement(\n 'th',\n { width: '15%' },\n (0, _languageHandler._t)('Noisy')\n )\n )\n ),\n _react2.default.createElement(\n 'tbody',\n null,\n this.renderNotifRulesTableRows()\n )\n )\n ),\n advancedSettings,\n devicesSection\n )\n );\n }\n});\n//# sourceMappingURL=Notifications.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nmodule.exports = {\n NotificationUtils: require('./NotificationUtils'),\n PushRuleVectorState: require('./PushRuleVectorState'),\n VectorPushRulesDefinitions: require('./VectorPushRulesDefinitions'),\n ContentRules: require('./ContentRules')\n};\n//# sourceMappingURL=index.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _languageHandler = require('../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar StandardActions = require('./StandardActions');\nvar PushRuleVectorState = require('./PushRuleVectorState');\n\nvar _require = require('./NotificationUtils'),\n decodeActions = _require.decodeActions;\n\nvar VectorPushRuleDefinition = function () {\n function VectorPushRuleDefinition(opts) {\n (0, _classCallCheck3.default)(this, VectorPushRuleDefinition);\n\n this.kind = opts.kind;\n this.description = opts.description;\n this.vectorStateToActions = opts.vectorStateToActions;\n }\n\n // Translate the rule actions and its enabled value into vector state\n\n\n (0, _createClass3.default)(VectorPushRuleDefinition, [{\n key: 'ruleToVectorState',\n value: function ruleToVectorState(rule) {\n var enabled = false;\n if (rule) {\n enabled = rule.enabled;\n }\n\n for (var stateKey in PushRuleVectorState.states) {\n // eslint-disable-line guard-for-in\n var state = PushRuleVectorState.states[stateKey];\n var vectorStateToActions = this.vectorStateToActions[state];\n\n if (!vectorStateToActions) {\n // No defined actions means that this vector state expects a disabled (or absent) rule\n if (!enabled) {\n return state;\n }\n } else {\n // The actions must match to the ones expected by vector state.\n // Use `decodeActions` on both sides to canonicalize things like\n // value: true vs. unspecified for highlight (which defaults to\n // true, making them equivalent).\n if (enabled && (0, _stringify2.default)(decodeActions(rule.actions)) === (0, _stringify2.default)(decodeActions(vectorStateToActions))) {\n return state;\n }\n }\n }\n\n console.error('Cannot translate rule actions into Vector rule state. ' + ('Rule: ' + (0, _stringify2.default)(rule) + ', ') + ('Expected: ' + (0, _stringify2.default)(this.vectorStateToActions)));\n return undefined;\n }\n }]);\n return VectorPushRuleDefinition;\n}();\n\n/**\n * The descriptions of rules managed by the Vector UI.\n */\n\n\nmodule.exports = {\n // Messages containing user's display name\n \".m.rule.contains_display_name\": new VectorPushRuleDefinition({\n kind: \"override\",\n description: (0, _languageHandler._td)(\"Messages containing my display name\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: { // The actions for each vector state, or null to disable the rule.\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_HIGHLIGHT_DEFAULT_SOUND,\n off: StandardActions.ACTION_DISABLED\n }\n }),\n\n // Messages containing user's username (localpart/MXID)\n \".m.rule.contains_user_name\": new VectorPushRuleDefinition({\n kind: \"override\",\n description: (0, _languageHandler._td)(\"Messages containing my user name\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: { // The actions for each vector state, or null to disable the rule.\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_HIGHLIGHT_DEFAULT_SOUND,\n off: StandardActions.ACTION_DISABLED\n }\n }),\n\n // Messages containing @room\n \".m.rule.roomnotif\": new VectorPushRuleDefinition({\n kind: \"override\",\n description: (0, _languageHandler._td)(\"Messages containing @room\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: { // The actions for each vector state, or null to disable the rule.\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_HIGHLIGHT,\n off: StandardActions.ACTION_DISABLED\n }\n }),\n\n // Messages just sent to the user in a 1:1 room\n \".m.rule.room_one_to_one\": new VectorPushRuleDefinition({\n kind: \"underride\",\n description: (0, _languageHandler._td)(\"Messages in one-to-one chats\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: {\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND,\n off: StandardActions.ACTION_DONT_NOTIFY\n }\n }),\n\n // Encrypted messages just sent to the user in a 1:1 room\n \".m.rule.encrypted_room_one_to_one\": new VectorPushRuleDefinition({\n kind: \"underride\",\n description: (0, _languageHandler._td)(\"Encrypted messages in one-to-one chats\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: {\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND,\n off: StandardActions.ACTION_DONT_NOTIFY\n }\n }),\n\n // Messages just sent to a group chat room\n // 1:1 room messages are catched by the .m.rule.room_one_to_one rule if any defined\n // By opposition, all other room messages are from group chat rooms.\n \".m.rule.message\": new VectorPushRuleDefinition({\n kind: \"underride\",\n description: (0, _languageHandler._td)(\"Messages in group chats\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: {\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND,\n off: StandardActions.ACTION_DONT_NOTIFY\n }\n }),\n\n // Encrypted messages just sent to a group chat room\n // Encrypted 1:1 room messages are catched by the .m.rule.encrypted_room_one_to_one rule if any defined\n // By opposition, all other room messages are from group chat rooms.\n \".m.rule.encrypted\": new VectorPushRuleDefinition({\n kind: \"underride\",\n description: (0, _languageHandler._td)(\"Encrypted messages in group chats\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: {\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND,\n off: StandardActions.ACTION_DONT_NOTIFY\n }\n }),\n\n // Invitation for the user\n \".m.rule.invite_for_me\": new VectorPushRuleDefinition({\n kind: \"underride\",\n description: (0, _languageHandler._td)(\"When I'm invited to a room\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: {\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND,\n off: StandardActions.ACTION_DISABLED\n }\n }),\n\n // Incoming call\n \".m.rule.call\": new VectorPushRuleDefinition({\n kind: \"underride\",\n description: (0, _languageHandler._td)(\"Call invitation\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: {\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_NOTIFY_RING_SOUND,\n off: StandardActions.ACTION_DISABLED\n }\n }),\n\n // Notifications from bots\n \".m.rule.suppress_notices\": new VectorPushRuleDefinition({\n kind: \"override\",\n description: (0, _languageHandler._td)(\"Messages sent by bot\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: {\n // .m.rule.suppress_notices is a \"negative\" rule, we have to invert its enabled value for vector UI\n on: StandardActions.ACTION_DISABLED,\n loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND,\n off: StandardActions.ACTION_DONT_NOTIFY\n }\n })\n};\n//# sourceMappingURL=VectorPushRulesDefinitions.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PushRuleVectorState = require('./PushRuleVectorState');\n\nmodule.exports = {\n /**\n * Extract the keyword rules from a list of rules, and parse them\n * into a form which is useful for Vector's UI.\n *\n * Returns an object containing:\n * rules: the primary list of keyword rules\n * vectorState: a PushRuleVectorState indicating whether those rules are\n * OFF/ON/LOUD\n * externalRules: a list of other keyword rules, with states other than\n * vectorState\n */\n parseContentRules: function parseContentRules(rulesets) {\n // first categorise the keyword rules in terms of their actions\n var contentRules = this._categoriseContentRules(rulesets);\n\n // Decide which content rules to display in Vector UI.\n // Vector displays a single global rule for a list of keywords\n // whereas Matrix has a push rule per keyword.\n // Vector can set the unique rule in ON, LOUD or OFF state.\n // Matrix has enabled/disabled plus a combination of (highlight, sound) tweaks.\n\n // The code below determines which set of user's content push rules can be\n // displayed by the vector UI.\n // Push rules that does not fit, ie defined by another Matrix client, ends\n // in externalRules.\n // There is priority in the determination of which set will be the displayed one.\n // The set with rules that have LOUD tweaks is the first choice. Then, the ones\n // with ON tweaks (no tweaks).\n\n if (contentRules.loud.length) {\n return {\n vectorState: PushRuleVectorState.LOUD,\n rules: contentRules.loud,\n externalRules: [].concat(contentRules.loud_but_disabled, contentRules.on, contentRules.on_but_disabled, contentRules.other)\n };\n } else if (contentRules.loud_but_disabled.length) {\n return {\n vectorState: PushRuleVectorState.OFF,\n rules: contentRules.loud_but_disabled,\n externalRules: [].concat(contentRules.on, contentRules.on_but_disabled, contentRules.other)\n };\n } else if (contentRules.on.length) {\n return {\n vectorState: PushRuleVectorState.ON,\n rules: contentRules.on,\n externalRules: [].concat(contentRules.on_but_disabled, contentRules.other)\n };\n } else if (contentRules.on_but_disabled.length) {\n return {\n vectorState: PushRuleVectorState.OFF,\n rules: contentRules.on_but_disabled,\n externalRules: contentRules.other\n };\n } else {\n return {\n vectorState: PushRuleVectorState.ON,\n rules: [],\n externalRules: contentRules.other\n };\n }\n },\n\n _categoriseContentRules: function _categoriseContentRules(rulesets) {\n var contentRules = { on: [], on_but_disabled: [], loud: [], loud_but_disabled: [], other: [] };\n for (var kind in rulesets.global) {\n for (var i = 0; i < (0, _keys2.default)(rulesets.global[kind]).length; ++i) {\n var r = rulesets.global[kind][i];\n\n // check it's not a default rule\n if (r.rule_id[0] === '.' || kind !== 'content') {\n continue;\n }\n\n r.kind = kind; // is this needed? not sure\n\n switch (PushRuleVectorState.contentRuleVectorStateKind(r)) {\n case PushRuleVectorState.ON:\n if (r.enabled) {\n contentRules.on.push(r);\n } else {\n contentRules.on_but_disabled.push(r);\n }\n break;\n case PushRuleVectorState.LOUD:\n if (r.enabled) {\n contentRules.loud.push(r);\n } else {\n contentRules.loud_but_disabled.push(r);\n }\n break;\n default:\n contentRules.other.push(r);\n break;\n }\n }\n }\n return contentRules;\n }\n};\n//# sourceMappingURL=ContentRules.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _CallHandler = require('../../../CallHandler');\n\nvar _CallHandler2 = _interopRequireDefault(_CallHandler);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'CallPreview',\n\n propTypes: {\n // A Conference Handler implementation\n // Must have a function signature:\n // getConferenceCallForRoom(roomId: string): MatrixCall\n ConferenceHandler: _propTypes2.default.object\n },\n\n getInitialState: function getInitialState() {\n return {\n roomId: _RoomViewStore2.default.getRoomId(),\n activeCall: _CallHandler2.default.getAnyActiveCall()\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._roomStoreToken = _RoomViewStore2.default.addListener(this._onRoomViewStoreUpdate);\n this.dispatcherRef = _dispatcher2.default.register(this._onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (this._roomStoreToken) {\n this._roomStoreToken.remove();\n }\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n _onRoomViewStoreUpdate: function _onRoomViewStoreUpdate(payload) {\n if (_RoomViewStore2.default.getRoomId() === this.state.roomId) return;\n this.setState({\n roomId: _RoomViewStore2.default.getRoomId()\n });\n },\n\n _onAction: function _onAction(payload) {\n switch (payload.action) {\n // listen for call state changes to prod the render method, which\n // may hide the global CallView if the call it is tracking is dead\n case 'call_state':\n this.setState({\n activeCall: _CallHandler2.default.getAnyActiveCall()\n });\n break;\n }\n },\n\n _onCallViewClick: function _onCallViewClick() {\n var call = _CallHandler2.default.getAnyActiveCall();\n if (call) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: call.groupRoomId || call.roomId\n });\n }\n },\n\n render: function render() {\n var callForRoom = _CallHandler2.default.getCallForRoom(this.state.roomId);\n var showCall = this.state.activeCall && this.state.activeCall.call_state === 'connected' && !callForRoom;\n\n if (showCall) {\n var CallView = _index2.default.getComponent('voip.CallView');\n return _react2.default.createElement(CallView, {\n className: 'mx_LeftPanel_callView', showVoice: true, onClick: this._onCallViewClick,\n ConferenceHandler: this.props.ConferenceHandler\n });\n }\n var PersistentApp = _index2.default.getComponent('elements.PersistentApp');\n return _react2.default.createElement(PersistentApp, null);\n }\n});\n//# sourceMappingURL=CallPreview.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _CallHandler = require('../../../CallHandler');\n\nvar _CallHandler2 = _interopRequireDefault(_CallHandler);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'CallView',\n\n propTypes: {\n // js-sdk room object. If set, we will only show calls for the given\n // room; if not, we will show any active call.\n room: _propTypes2.default.object,\n\n // A Conference Handler implementation\n // Must have a function signature:\n // getConferenceCallForRoom(roomId: string): MatrixCall\n ConferenceHandler: _propTypes2.default.object,\n\n // maxHeight style attribute for the video panel\n maxVideoHeight: _propTypes2.default.number,\n\n // a callback which is called when the user clicks on the video div\n onClick: _propTypes2.default.func,\n\n // a callback which is called when the content in the callview changes\n // in a way that is likely to cause a resize.\n onResize: _propTypes2.default.func,\n\n // render ongoing audio call details - useful when in LeftPanel\n showVoice: _propTypes2.default.bool\n },\n\n getInitialState: function getInitialState() {\n return {\n // the call this view is displaying (if any)\n call: null\n };\n },\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n this.showCall();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n onAction: function onAction(payload) {\n // don't filter out payloads for room IDs other than props.room because\n // we may be interested in the conf 1:1 room\n if (payload.action !== 'call_state') {\n return;\n }\n this.showCall();\n },\n\n showCall: function showCall() {\n var call = void 0;\n\n if (this.props.room) {\n var roomId = this.props.room.roomId;\n call = _CallHandler2.default.getCallForRoom(roomId) || (this.props.ConferenceHandler ? this.props.ConferenceHandler.getConferenceCallForRoom(roomId) : null);\n\n if (this.call) {\n this.setState({ call: call });\n }\n } else {\n call = _CallHandler2.default.getAnyActiveCall();\n this.setState({ call: call });\n }\n\n if (call) {\n call.setLocalVideoElement(this.getVideoView().getLocalVideoElement());\n call.setRemoteVideoElement(this.getVideoView().getRemoteVideoElement());\n // always use a separate element for audio stream playback.\n // this is to let us move CallView around the DOM without interrupting remote audio\n // during playback, by having the audio rendered by a top-level <audio/> element.\n // rather than being rendered by the main remoteVideo <video/> element.\n call.setRemoteAudioElement(this.getVideoView().getRemoteAudioElement());\n }\n if (call && call.type === \"video\" && call.call_state !== \"ended\" && call.call_state !== \"ringing\") {\n // if this call is a conf call, don't display local video as the\n // conference will have us in it\n this.getVideoView().getLocalVideoElement().style.display = call.confUserId ? \"none\" : \"block\";\n this.getVideoView().getRemoteVideoElement().style.display = \"block\";\n } else {\n this.getVideoView().getLocalVideoElement().style.display = \"none\";\n this.getVideoView().getRemoteVideoElement().style.display = \"none\";\n _dispatcher2.default.dispatch({ action: 'video_fullscreen', fullscreen: false });\n }\n\n if (this.props.onResize) {\n this.props.onResize();\n }\n },\n\n getVideoView: function getVideoView() {\n return this.refs.video;\n },\n\n render: function render() {\n var VideoView = _index2.default.getComponent('voip.VideoView');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n\n var voice = void 0;\n if (this.state.call && this.state.call.type === \"voice\" && this.props.showVoice) {\n var callRoom = _MatrixClientPeg2.default.get().getRoom(this.state.call.roomId);\n voice = _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_CallView_voice', onClick: this.props.onClick },\n (0, _languageHandler._t)(\"Active call (%(roomName)s)\", { roomName: callRoom.name })\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(VideoView, { ref: 'video', onClick: this.props.onClick,\n onResize: this.props.onResize,\n maxHeight: this.props.maxVideoHeight\n }),\n voice\n );\n }\n}); /*\n Copyright 2015, 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=CallView.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nmodule.exports = _react2.default.createClass({\n displayName: 'IncomingCallBox',\n\n propTypes: {\n incomingCall: _propTypes2.default.object\n },\n\n onAnswerClick: function onAnswerClick(e) {\n e.stopPropagation();\n _dispatcher2.default.dispatch({\n action: 'answer',\n room_id: this.props.incomingCall.roomId\n });\n },\n\n onRejectClick: function onRejectClick(e) {\n e.stopPropagation();\n _dispatcher2.default.dispatch({\n action: 'hangup',\n room_id: this.props.incomingCall.roomId\n });\n },\n\n render: function render() {\n var room = null;\n if (this.props.incomingCall) {\n room = _MatrixClientPeg2.default.get().getRoom(this.props.incomingCall.roomId);\n }\n\n var caller = room ? room.name : (0, _languageHandler._t)(\"unknown caller\");\n\n var incomingCallText = null;\n if (this.props.incomingCall) {\n if (this.props.incomingCall.type === \"voice\") {\n incomingCallText = (0, _languageHandler._t)(\"Incoming voice call from %(name)s\", { name: caller });\n } else if (this.props.incomingCall.type === \"video\") {\n incomingCallText = (0, _languageHandler._t)(\"Incoming video call from %(name)s\", { name: caller });\n } else {\n incomingCallText = (0, _languageHandler._t)(\"Incoming call from %(name)s\", { name: caller });\n }\n }\n\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_IncomingCallBox', id: 'incomingCallBox' },\n _react2.default.createElement('img', { className: 'mx_IncomingCallBox_chevron', src: 'img/chevron-left.png', width: '9', height: '16' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_IncomingCallBox_title' },\n incomingCallText\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_IncomingCallBox_buttons' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_IncomingCallBox_buttons_cell' },\n _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_IncomingCallBox_buttons_decline', onClick: this.onRejectClick },\n (0, _languageHandler._t)(\"Decline\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_IncomingCallBox_buttons_cell' },\n _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_IncomingCallBox_buttons_accept', onClick: this.onAnswerClick },\n (0, _languageHandler._t)(\"Accept\")\n )\n )\n )\n );\n }\n});\n//# sourceMappingURL=IncomingCallBox.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'VideoFeed',\n\n propTypes: {\n // maxHeight style attribute for the video element\n maxHeight: _propTypes2.default.number,\n\n // a callback which is called when the video element is resized\n // due to a change in video metadata\n onResize: _propTypes2.default.func\n },\n\n componentDidMount: function componentDidMount() {\n this.refs.vid.addEventListener('resize', this.onResize);\n },\n componentWillUnmount: function componentWillUnmount() {\n this.refs.vid.removeEventListener('resize', this.onResize);\n },\n\n\n onResize: function onResize(e) {\n if (this.props.onResize) {\n this.props.onResize(e);\n }\n },\n\n render: function render() {\n return _react2.default.createElement('video', { ref: 'vid', style: { maxHeight: this.props.maxHeight } });\n }\n});\n//# sourceMappingURL=VideoFeed.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getFullScreenElement() {\n return document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement;\n}\n\nmodule.exports = _react2.default.createClass({\n displayName: 'VideoView',\n\n propTypes: {\n // maxHeight style attribute for the video element\n maxHeight: _propTypes2.default.number,\n\n // a callback which is called when the user clicks on the video div\n onClick: _propTypes2.default.func,\n\n // a callback which is called when the video element is resized due to\n // a change in video metadata\n onResize: _propTypes2.default.func\n },\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n getRemoteVideoElement: function getRemoteVideoElement() {\n return _reactDom2.default.findDOMNode(this.refs.remote);\n },\n\n getRemoteAudioElement: function getRemoteAudioElement() {\n // this needs to be somewhere at the top of the DOM which\n // always exists to avoid audio interruptions.\n // Might as well just use DOM.\n var remoteAudioElement = document.getElementById(\"remoteAudio\");\n if (!remoteAudioElement) {\n console.error(\"Failed to find remoteAudio element - cannot play audio!\" + \"You need to add an <audio/> to the DOM.\");\n }\n return remoteAudioElement;\n },\n\n getLocalVideoElement: function getLocalVideoElement() {\n return _reactDom2.default.findDOMNode(this.refs.local);\n },\n\n setContainer: function setContainer(c) {\n this.container = c;\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n case 'video_fullscreen':\n {\n if (!this.container) {\n return;\n }\n var element = this.container;\n if (payload.fullscreen) {\n var requestMethod = element.requestFullScreen || element.webkitRequestFullScreen || element.mozRequestFullScreen || element.msRequestFullscreen;\n requestMethod.call(element);\n } else if (getFullScreenElement()) {\n var exitMethod = document.exitFullscreen || document.mozCancelFullScreen || document.webkitExitFullscreen || document.msExitFullscreen;\n if (exitMethod) {\n exitMethod.call(document);\n }\n }\n break;\n }\n }\n },\n\n render: function render() {\n var VideoFeed = _index2.default.getComponent('voip.VideoFeed');\n\n // if we're fullscreen, we don't want to set a maxHeight on the video element.\n var maxVideoHeight = getFullScreenElement() ? null : this.props.maxHeight;\n var localVideoFeedClasses = (0, _classnames2.default)(\"mx_VideoView_localVideoFeed\", { \"mx_VideoView_localVideoFeed_flipped\": _SettingsStore2.default.getValue('VideoView.flipVideoHorizontally')\n });\n return _react2.default.createElement(\n 'div',\n { className: 'mx_VideoView', ref: this.setContainer, onClick: this.props.onClick },\n _react2.default.createElement(\n 'div',\n { className: 'mx_VideoView_remoteVideoFeed' },\n _react2.default.createElement(VideoFeed, { ref: 'remote', onResize: this.props.onResize,\n maxHeight: maxVideoHeight })\n ),\n _react2.default.createElement(\n 'div',\n { className: localVideoFeedClasses },\n _react2.default.createElement(VideoFeed, { ref: 'local' })\n )\n );\n }\n});\n//# sourceMappingURL=VideoView.js.map","import { Block, Change, Data, Document, History, Inline, Leaf, Mark, Node, Range, Schema, Stack, Value, Text } from 'slate';\n\n/**\n * Create a prop type checker for Slate objects with `name` and `validate`.\n *\n * @param {String} name\n * @param {Function} validate\n * @return {Function}\n */\n\nfunction create(name, validate) {\n function check(isRequired, props, propName, componentName, location) {\n var value = props[propName];\n if (value == null && !isRequired) return null;\n if (value == null && isRequired) return new Error('The ' + location + ' `' + propName + '` is marked as required in `' + componentName + '`, but it was not supplied.');\n if (validate(value)) return null;\n return new Error('Invalid ' + location + ' `' + propName + '` supplied to `' + componentName + '`, expected a Slate `' + name + '` but received: ' + value);\n }\n\n function propType() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return check.apply(undefined, [false].concat(args));\n }\n\n propType.isRequired = function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return check.apply(undefined, [true].concat(args));\n };\n\n return propType;\n}\n\n/**\n * Prop type checkers.\n *\n * @type {Object}\n */\n\nvar Types = {\n block: create('Block', function (v) {\n return Block.isBlock(v);\n }),\n blocks: create('List<Block>', function (v) {\n return Block.isBlockList(v);\n }),\n change: create('Change', function (v) {\n return Change.isChange(v);\n }),\n data: create('Data', function (v) {\n return Data.isData(v);\n }),\n document: create('Document', function (v) {\n return Document.isDocument(v);\n }),\n history: create('History', function (v) {\n return History.isHistory(v);\n }),\n inline: create('Inline', function (v) {\n return Inline.isInline(v);\n }),\n inlines: create('Inline', function (v) {\n return Inline.isInlineList(v);\n }),\n leaf: create('Leaf', function (v) {\n return Leaf.isLeaf(v);\n }),\n leaves: create('List<Leaf>', function (v) {\n return Leaf.isLeafList(v);\n }),\n mark: create('Mark', function (v) {\n return Mark.isMark(v);\n }),\n marks: create('Set<Mark>', function (v) {\n return Mark.isMarkSet(v);\n }),\n node: create('Node', function (v) {\n return Node.isNode(v);\n }),\n nodes: create('List<Node>', function (v) {\n return Node.isNodeList(v);\n }),\n range: create('Range', function (v) {\n return Range.isRange(v);\n }),\n ranges: create('List<Range>', function (v) {\n return Range.isRangeList(v);\n }),\n schema: create('Schema', function (v) {\n return Schema.isSchema(v);\n }),\n stack: create('Stack', function (v) {\n return Stack.isStack(v);\n }),\n value: create('Value', function (v) {\n return Value.isValue(v);\n }),\n text: create('Text', function (v) {\n return Text.isText(v);\n }),\n texts: create('List<Text>', function (v) {\n return Text.isTextList(v);\n })\n\n /**\n * Export.\n *\n * @type {Object}\n */\n\n};\n\nexport default Types;\n//# sourceMappingURL=slate-prop-types.es.js.map\n","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexport var isBrowser = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\" && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === 'object' && document.nodeType === 9;\n\nexport default isBrowser;\n","import isBrowser from 'is-in-browser';\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\n/**\n * Browser matching rules.\n *\n * @type {Array}\n */\n\nvar BROWSER_RULES = [['edge', /Edge\\/([0-9\\._]+)/], ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/], ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/], ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/], ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)$/], ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+)\\).*Gecko$/], ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/], ['ie', /MSIE\\s(7\\.0)/], ['android', /Android\\s([0-9\\.]+)/], ['safari', /Version\\/([0-9\\._]+).*Safari/]];\n\nvar browser = void 0;\n\nif (isBrowser) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = BROWSER_RULES[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ref = _step.value;\n\n var _ref2 = slicedToArray(_ref, 2);\n\n var name = _ref2[0];\n var regexp = _ref2[1];\n\n if (regexp.test(window.navigator.userAgent)) {\n browser = name;\n break;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\n/**\n * Operating system matching rules.\n *\n * @type {Array}\n */\n\nvar OS_RULES = [['ios', /os ([\\.\\_\\d]+) like mac os/i], // must be before the macos rule\n['macos', /mac os x/i], ['android', /android/i], ['firefoxos', /mozilla\\/[a-z\\.\\_\\d]+ \\((?:mobile)|(?:tablet)/i], ['windows', /windows\\s*(?:nt)?\\s*([\\.\\_\\d]+)/i]];\n\nvar os = void 0;\n\nif (isBrowser) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = OS_RULES[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _ref3 = _step2.value;\n\n var _ref4 = slicedToArray(_ref3, 2);\n\n var _name = _ref4[0];\n var _regexp = _ref4[1];\n\n if (_regexp.test(window.navigator.userAgent)) {\n os = _name;\n break;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n}\n\n/**\n * Feature matching rules.\n *\n * @type {Array}\n */\n\nvar FEATURE_RULES = [['inputeventslevel1', function (window) {\n var event = window.InputEvent ? new window.InputEvent('input') : {};\n var support = 'inputType' in event;\n return support;\n}], ['inputeventslevel2', function (window) {\n var element = window.document.createElement('div');\n element.contentEditable = true;\n var support = 'onbeforeinput' in element;\n return support;\n}]];\n\nvar features = [];\n\nif (isBrowser) {\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = FEATURE_RULES[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _ref5 = _step3.value;\n\n var _ref6 = slicedToArray(_ref5, 2);\n\n var _name2 = _ref6[0];\n var test = _ref6[1];\n\n if (test(window)) {\n features.push(_name2);\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n}\n\n/**\n * Export.\n *\n * @type {Boolean}\n */\n\nvar IS_CHROME = browser === 'chrome';\nvar IS_OPERA = browser === 'opera';\nvar IS_FIREFOX = browser === 'firefox';\nvar IS_SAFARI = browser === 'safari';\nvar IS_IE = browser === 'ie';\nvar IS_EDGE = browser === 'edge';\n\nvar IS_ANDROID = os === 'android';\nvar IS_IOS = os === 'ios';\nvar IS_MAC = os === 'macos';\nvar IS_WINDOWS = os === 'windows';\n\nvar HAS_INPUT_EVENTS_LEVEL_1 = features.includes('inputeventslevel1');\nvar HAS_INPUT_EVENTS_LEVEL_2 = features.includes('inputeventslevel2');\n\nexport { IS_CHROME, IS_OPERA, IS_FIREFOX, IS_SAFARI, IS_IE, IS_EDGE, IS_ANDROID, IS_IOS, IS_MAC, IS_WINDOWS, HAS_INPUT_EVENTS_LEVEL_1, HAS_INPUT_EVENTS_LEVEL_2 };\n//# sourceMappingURL=slate-dev-environment.es.js.map\n","import { Node, Value } from 'slate';\nimport { atob, btoa } from 'isomorphic-base64';\n\n/**\n * Encode a JSON `object` as base-64 `string`.\n *\n * @param {Object} object\n * @return {String}\n */\n\nfunction encode(object) {\n var string = JSON.stringify(object);\n var encoded = btoa(encodeURIComponent(string));\n return encoded;\n}\n\n/**\n * Decode a base-64 `string` to a JSON `object`.\n *\n * @param {String} string\n * @return {Object}\n */\n\nfunction decode(string) {\n var decoded = decodeURIComponent(atob(string));\n var object = JSON.parse(decoded);\n return object;\n}\n\n/**\n * Deserialize a Value `string`.\n *\n * @param {String} string\n * @return {Value}\n */\n\nfunction deserialize(string, options) {\n var raw = decode(string);\n var value = Value.fromJSON(raw, options);\n return value;\n}\n\n/**\n * Deserialize a Node `string`.\n *\n * @param {String} string\n * @return {Node}\n */\n\nfunction deserializeNode(string, options) {\n var raw = decode(string);\n var node = Node.fromJSON(raw, options);\n return node;\n}\n\n/**\n * Serialize a `value`.\n *\n * @param {Value} value\n * @return {String}\n */\n\nfunction serialize(value, options) {\n var raw = value.toJSON(options);\n var encoded = encode(raw);\n return encoded;\n}\n\n/**\n * Serialize a `node`.\n *\n * @param {Node} node\n * @return {String}\n */\n\nfunction serializeNode(node, options) {\n var raw = node.toJSON(options);\n var encoded = encode(raw);\n return encoded;\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar index = {\n deserialize: deserialize,\n deserializeNode: deserializeNode,\n serialize: serialize,\n serializeNode: serializeNode\n};\n\nexport default index;\n//# sourceMappingURL=slate-base64-serializer.es.js.map\n","import { isKeyHotkey } from 'is-hotkey';\nimport { IS_IOS, IS_MAC } from 'slate-dev-environment';\n\n/**\n * Hotkey mappings for each platform.\n *\n * @type {Object}\n */\n\nvar HOTKEYS = {\n bold: 'mod+b',\n compose: ['down', 'left', 'right', 'up', 'backspace', 'enter'],\n moveBackward: 'left',\n moveForward: 'right',\n moveWordBackward: 'ctrl+left',\n moveWordForward: 'ctrl+right',\n deleteBackward: 'shift?+backspace',\n deleteForward: 'shift?+delete',\n extendBackward: 'shift+left',\n extendForward: 'shift+right',\n italic: 'mod+i',\n splitBlock: 'shift?+enter',\n undo: 'mod+z'\n};\n\nvar APPLE_HOTKEYS = {\n moveLineBackward: 'opt+up',\n moveLineForward: 'opt+down',\n moveWordBackward: 'opt+left',\n moveWordForward: 'opt+right',\n deleteBackward: ['ctrl+backspace', 'ctrl+h'],\n deleteForward: ['ctrl+delete', 'ctrl+d'],\n deleteLineBackward: 'cmd+shift?+backspace',\n deleteLineForward: ['cmd+shift?+delete', 'ctrl+k'],\n deleteWordBackward: 'opt+shift?+backspace',\n deleteWordForward: 'opt+shift?+delete',\n extendLineBackward: 'opt+shift+up',\n extendLineForward: 'opt+shift+down',\n redo: 'cmd+shift+z',\n transposeCharacter: 'ctrl+t'\n};\n\nvar WINDOWS_HOTKEYS = {\n deleteWordBackward: 'ctrl+shift?+backspace',\n deleteWordForward: 'ctrl+shift?+delete',\n redo: 'ctrl+y'\n\n /**\n * Hotkeys.\n *\n * @type {Object}\n */\n\n};var Hotkeys = {};\n\nvar IS_APPLE = IS_IOS || IS_MAC;\nvar IS_WINDOWS = !IS_APPLE;\nvar KEYS = [].concat(Object.keys(HOTKEYS)).concat(Object.keys(APPLE_HOTKEYS)).concat(Object.keys(WINDOWS_HOTKEYS));\n\nKEYS.forEach(function (key) {\n var method = 'is' + key[0].toUpperCase() + key.slice(1);\n if (Hotkeys[method]) return;\n\n var generic = HOTKEYS[key];\n var apple = APPLE_HOTKEYS[key];\n var windows = WINDOWS_HOTKEYS[key];\n\n var isGeneric = generic && isKeyHotkey(generic);\n var isApple = apple && isKeyHotkey(apple);\n var isWindows = windows && isKeyHotkey(windows);\n\n Hotkeys[method] = function (event) {\n if (isGeneric && isGeneric(event)) return true;\n if (IS_APPLE && isApple && isApple(event)) return true;\n if (IS_WINDOWS && isWindows && isWindows(event)) return true;\n return false;\n };\n});\n\nexport default Hotkeys;\n//# sourceMappingURL=slate-hotkeys.es.js.map\n","var simpleIsEqual = function simpleIsEqual(a, b) {\n return a === b;\n};\n\nfunction index (resultFn, isEqual) {\n if (isEqual === void 0) {\n isEqual = simpleIsEqual;\n }\n\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n\n var isNewArgEqualToLast = function isNewArgEqualToLast(newArg, index) {\n return isEqual(newArg, lastArgs[index]);\n };\n\n var result = function result() {\n for (var _len = arguments.length, newArgs = new Array(_len), _key = 0; _key < _len; _key++) {\n newArgs[_key] = arguments[_key];\n }\n\n if (calledOnce && lastThis === this && newArgs.length === lastArgs.length && newArgs.every(isNewArgEqualToLast)) {\n return lastResult;\n }\n\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n };\n\n return result;\n}\n\nexport default index;\n","import Debug from 'debug';\nimport React from 'react';\nimport Types from 'prop-types';\nimport SlateTypes from 'slate-prop-types';\nimport ImmutableTypes from 'react-immutable-proptypes';\nimport { PathUtils, Node, Value, Text, Schema, Stack } from 'slate';\nimport { Set } from 'immutable';\nimport warning from 'slate-dev-warning';\nimport getWindow from 'get-window';\nimport { IS_IE, IS_EDGE, IS_SAFARI, IS_IOS, IS_FIREFOX, HAS_INPUT_EVENTS_LEVEL_2 } from 'slate-dev-environment';\nimport isBackward from 'selection-is-backward';\nimport throttle from 'lodash/throttle';\nimport Base64 from 'slate-base64-serializer';\nimport Plain from 'slate-plain-serializer';\nimport Hotkeys from 'slate-hotkeys';\nimport { findDOMNode } from 'react-dom';\nimport memoizeOne from 'memoize-one';\n\n/**\n * Event handlers used by Slate plugins.\n *\n * @type {Array}\n */\n\nvar EVENT_HANDLERS = ['onBeforeInput', 'onBlur', 'onClick', 'onContextMenu', 'onCompositionEnd', 'onCompositionStart', 'onCopy', 'onCut', 'onDragEnd', 'onDragEnter', 'onDragExit', 'onDragLeave', 'onDragOver', 'onDragStart', 'onDrop', 'onInput', 'onFocus', 'onKeyDown', 'onKeyUp', 'onPaste', 'onSelect'];\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\n\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n/**\n * Props that can be defined by plugins.\n *\n * @type {Array}\n */\n\nvar PLUGIN_PROPS = [].concat(toConsumableArray(EVENT_HANDLERS), ['decorateNode', 'onChange', 'renderEditor', 'renderMark', 'renderNode', 'renderPlaceholder', 'renderPortal', 'schema', 'validateNode']);\n\n/**\n * Offset key parser regex.\n *\n * @type {RegExp}\n */\n\nvar PARSER = /^([\\w-]+)(?::(\\d+))?$/;\n\n/**\n * Parse an offset key `string`.\n *\n * @param {String} string\n * @return {Object}\n */\n\nfunction parse(string) {\n var matches = PARSER.exec(string);\n\n if (!matches) {\n throw new Error(\"Invalid offset key string \\\"\" + string + \"\\\".\");\n }\n\n var _matches = slicedToArray(matches, 3),\n original = _matches[0],\n key = _matches[1],\n index = _matches[2]; // eslint-disable-line no-unused-vars\n\n\n return {\n key: key,\n index: parseInt(index, 10)\n };\n}\n\n/**\n * Stringify an offset key `object`.\n *\n * @param {Object} object\n * @property {String} key\n * @property {Number} index\n * @return {String}\n */\n\nfunction stringify(object) {\n return object.key + \":\" + object.index;\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar OffsetKey = {\n parse: parse,\n stringify: stringify\n};\n\n/**\n * Debugger.\n *\n * @type {Function}\n */\n\nvar debug = Debug('slate:leaves');\n\n/**\n * Leaf.\n *\n * @type {Component}\n */\n\nvar Leaf = function (_React$Component) {\n inherits(Leaf, _React$Component);\n\n function Leaf() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Leaf);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Leaf.__proto__ || Object.getPrototypeOf(Leaf)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Debug.\n *\n * @param {String} message\n * @param {Mixed} ...args\n */\n\n createClass(Leaf, [{\n key: 'shouldComponentUpdate',\n\n\n /**\n * Should component update?\n *\n * @param {Object} props\n * @return {Boolean}\n */\n\n value: function shouldComponentUpdate(props) {\n // If any of the regular properties have changed, re-render.\n if (props.index != this.props.index || props.marks != this.props.marks || props.text != this.props.text || props.parent != this.props.parent) {\n return true;\n }\n\n // Otherwise, don't update.\n return false;\n }\n\n /**\n * Render the leaf.\n *\n * @return {Element}\n */\n\n }, {\n key: 'render',\n value: function render() {\n this.debug('render', this);\n\n var _props = this.props,\n node = _props.node,\n index = _props.index;\n\n var offsetKey = OffsetKey.stringify({\n key: node.key,\n index: index\n });\n\n return React.createElement(\n 'span',\n { 'data-offset-key': offsetKey },\n this.renderMarks()\n );\n }\n\n /**\n * Render all of the leaf's mark components.\n *\n * @return {Element}\n */\n\n }, {\n key: 'renderMarks',\n value: function renderMarks() {\n var _props2 = this.props,\n marks = _props2.marks,\n node = _props2.node,\n offset = _props2.offset,\n text = _props2.text,\n editor = _props2.editor;\n var stack = editor.stack;\n\n var leaf = this.renderText();\n var attributes = {\n 'data-slate-leaf': true\n };\n\n return marks.reduce(function (children, mark) {\n var props = {\n editor: editor,\n mark: mark,\n marks: marks,\n node: node,\n offset: offset,\n text: text,\n children: children,\n attributes: attributes\n };\n var element = stack.find('renderMark', props);\n return element || children;\n }, leaf);\n }\n\n /**\n * Render the text content of the leaf, accounting for browsers.\n *\n * @return {Element}\n */\n\n }, {\n key: 'renderText',\n value: function renderText() {\n var _props3 = this.props,\n block = _props3.block,\n node = _props3.node,\n editor = _props3.editor,\n parent = _props3.parent,\n text = _props3.text,\n index = _props3.index,\n leaves = _props3.leaves;\n var value = editor.value;\n var schema = value.schema;\n\n // COMPAT: Render text inside void nodes with a zero-width space.\n // So the node can contain selection but the text is not visible.\n\n if (schema.isVoid(parent)) {\n return React.createElement(\n 'span',\n { 'data-slate-zero-width': 'z' },\n '\\uFEFF'\n );\n }\n\n // COMPAT: If this is the last text node in an empty block, render a zero-\n // width space that will convert into a line break when copying and pasting\n // to support expected plain text.\n if (text === '' && parent.object === 'block' && parent.text === '' && parent.nodes.last() === node) {\n return React.createElement(\n 'span',\n { 'data-slate-zero-width': 'n' },\n '\\uFEFF'\n );\n }\n\n // COMPAT: If the text is empty, it's because it's on the edge of an inline\n // node, so we render a zero-width space so that the selection can be\n // inserted next to it still.\n if (text === '') {\n return React.createElement(\n 'span',\n { 'data-slate-zero-width': 'z' },\n '\\uFEFF'\n );\n }\n\n // COMPAT: Browsers will collapse trailing new lines at the end of blocks,\n // so we need to add an extra trailing new lines to prevent that.\n var lastText = block.getLastText();\n var lastChar = text.charAt(text.length - 1);\n var isLastText = node === lastText;\n var isLastLeaf = index === leaves.size - 1;\n if (isLastText && isLastLeaf && lastChar === '\\n') return text + '\\n';\n\n // Otherwise, just return the text.\n return text;\n }\n }]);\n return Leaf;\n}(React.Component);\n\n/**\n * Export.\n *\n * @type {Component}\n */\n\nLeaf.propTypes = {\n block: SlateTypes.block.isRequired,\n editor: Types.object.isRequired,\n index: Types.number.isRequired,\n leaves: SlateTypes.leaves.isRequired,\n marks: SlateTypes.marks.isRequired,\n node: SlateTypes.node.isRequired,\n offset: Types.number.isRequired,\n parent: SlateTypes.node.isRequired,\n text: Types.string.isRequired };\n\nvar _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.debug = function (message) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n debug.apply(undefined, [message, _this2.props.node.key + '-' + _this2.props.index].concat(args));\n };\n};\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$1 = Debug('slate:node');\n\n/**\n * Text.\n *\n * @type {Component}\n */\n\nvar Text$1 = function (_React$Component) {\n inherits(Text$$1, _React$Component);\n\n function Text$$1() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Text$$1);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Text$$1.__proto__ || Object.getPrototypeOf(Text$$1)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps$1.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Default prop types.\n *\n * @type {Object}\n */\n\n /**\n * Debug.\n *\n * @param {String} message\n * @param {Mixed} ...args\n */\n\n /**\n * Should the node update?\n *\n * @param {Object} nextProps\n * @param {Object} value\n * @return {Boolean}\n */\n\n createClass(Text$$1, [{\n key: 'render',\n\n\n /**\n * Render.\n *\n * @return {Element}\n */\n\n value: function render() {\n var _this2 = this;\n\n this.debug('render', this);\n\n var _props = this.props,\n decorations = _props.decorations,\n editor = _props.editor,\n node = _props.node,\n style = _props.style;\n var value = editor.value;\n var document = value.document;\n var key = node.key;\n\n\n var decs = decorations.filter(function (d) {\n var start = d.start,\n end = d.end;\n\n // If either of the decoration's keys match, include it.\n\n if (start.key === key || end.key === key) return true;\n\n // Otherwise, if the decoration is in a single node, it's not ours.\n if (start.key === end.key) return false;\n\n // If the node's path is before the start path, ignore it.\n var path = document.assertPath(key);\n if (PathUtils.compare(path, start.path) === -1) return false;\n\n // If the node's path is after the end path, ignore it.\n if (PathUtils.compare(path, end.path) === 1) return false;\n\n // Otherwise, include it.\n return true;\n });\n\n // PERF: Take advantage of cache by avoiding arguments\n var leaves = decs.size === 0 ? node.getLeaves() : node.getLeaves(decs);\n var offset = 0;\n\n var children = leaves.map(function (leaf, i) {\n var child = _this2.renderLeaf(leaves, leaf, i, offset);\n offset += leaf.text.length;\n return child;\n });\n\n return React.createElement(\n 'span',\n { 'data-key': key, style: style },\n children\n );\n }\n\n /**\n * Render a single leaf given a `leaf` and `offset`.\n *\n * @param {List<Leaf>} leaves\n * @param {Leaf} leaf\n * @param {Number} index\n * @param {Number} offset\n * @return {Element} leaf\n */\n\n }]);\n return Text$$1;\n}(React.Component);\n\n/**\n * Export.\n *\n * @type {Component}\n */\n\nText$1.propTypes = {\n block: SlateTypes.block,\n decorations: ImmutableTypes.list.isRequired,\n editor: Types.object.isRequired,\n node: SlateTypes.node.isRequired,\n parent: SlateTypes.node.isRequired,\n style: Types.object };\nText$1.defaultProps = {\n style: null };\n\nvar _initialiseProps$1 = function _initialiseProps() {\n var _this3 = this;\n\n this.debug = function (message) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var node = _this3.props.node;\n var key = node.key;\n\n debug$1.apply(undefined, [message, key + ' (text)'].concat(args));\n };\n\n this.shouldComponentUpdate = function (nextProps) {\n var props = _this3.props;\n\n var n = nextProps;\n var p = props;\n\n // If the node has changed, update. PERF: There are cases where it will have\n // changed, but it's properties will be exactly the same (eg. copy-paste)\n // which this won't catch. But that's rare and not a drag on performance, so\n // for simplicity we just let them through.\n if (n.node != p.node) return true;\n\n // If the node parent is a block node, and it was the last child of the\n // block, re-render to cleanup extra `\\n`.\n if (n.parent.object == 'block') {\n var pLast = p.parent.nodes.last();\n var nLast = n.parent.nodes.last();\n if (p.node == pLast && n.node != nLast) return true;\n }\n\n // Re-render if the current decorations have changed.\n if (!n.decorations.equals(p.decorations)) return true;\n\n // Otherwise, don't update.\n return false;\n };\n\n this.renderLeaf = function (leaves, leaf, index, offset) {\n var _props2 = _this3.props,\n block = _props2.block,\n node = _props2.node,\n parent = _props2.parent,\n editor = _props2.editor;\n var text = leaf.text,\n marks = leaf.marks;\n\n\n return React.createElement(Leaf, {\n key: node.key + '-' + index,\n block: block,\n editor: editor,\n index: index,\n marks: marks,\n node: node,\n offset: offset,\n parent: parent,\n leaves: leaves,\n text: text\n });\n };\n};\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$2 = Debug('slate:void');\n\n/**\n * Void.\n *\n * @type {Component}\n */\n\nvar Void = function (_React$Component) {\n inherits(Void, _React$Component);\n\n function Void() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Void);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Void.__proto__ || Object.getPrototypeOf(Void)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps$2.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Debug.\n *\n * @param {String} message\n * @param {Mixed} ...args\n */\n\n createClass(Void, [{\n key: 'render',\n\n\n /**\n * Render.\n *\n * @return {Element}\n */\n\n value: function render() {\n var props = this.props;\n var children = props.children,\n node = props.node,\n readOnly = props.readOnly;\n\n var Tag = node.object == 'block' ? 'div' : 'span';\n var style = {\n height: '0',\n color: 'transparent',\n outline: 'none',\n position: 'absolute'\n };\n\n var spacer = React.createElement(\n Tag,\n { 'data-slate-spacer': true, style: style },\n this.renderText()\n );\n\n var content = React.createElement(\n Tag,\n { contentEditable: readOnly ? null : false },\n children\n );\n\n this.debug('render', { props: props });\n\n return React.createElement(\n Tag,\n {\n 'data-slate-void': true,\n 'data-key': node.key,\n contentEditable: readOnly || node.object == 'block' ? null : false\n },\n readOnly ? null : spacer,\n content\n );\n }\n\n /**\n * Render the void node's text node, which will catch the cursor when it the\n * void node is navigated to with the arrow keys.\n *\n * Having this text node there means the browser continues to manage the\n * selection natively, so it keeps track of the right offset when moving\n * across the block.\n *\n * @return {Element}\n */\n\n }]);\n return Void;\n}(React.Component);\n\n/**\n * Export.\n *\n * @type {Component}\n */\n\nVoid.propTypes = {\n block: SlateTypes.block,\n children: Types.any.isRequired,\n editor: Types.object.isRequired,\n node: SlateTypes.node.isRequired,\n parent: SlateTypes.node.isRequired,\n readOnly: Types.bool.isRequired };\n\nvar _initialiseProps$2 = function _initialiseProps() {\n var _this2 = this;\n\n this.debug = function (message) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var node = _this2.props.node;\n var key = node.key,\n type = node.type;\n\n var id = key + ' (' + type + ')';\n debug$2.apply(undefined, [message, '' + id].concat(args));\n };\n\n this.renderText = function () {\n var _props = _this2.props,\n block = _props.block,\n decorations = _props.decorations,\n node = _props.node,\n readOnly = _props.readOnly,\n editor = _props.editor;\n\n var child = node.getFirstText();\n return React.createElement(Text$1, {\n block: node.object == 'block' ? node : block,\n decorations: decorations,\n editor: editor,\n key: child.key,\n node: child,\n parent: node,\n readOnly: readOnly\n });\n };\n};\n\n/**\n * Split the decorations in lists of relevant decorations for each child.\n *\n * @param {Node} node\n * @param {List} decorations\n * @return {Array<List<Decoration>>}\n */\n\nfunction getChildrenDecorations(node, decorations) {\n var activeDecorations = Set().asMutable();\n var childrenDecorations = [];\n\n orderChildDecorations(node, decorations).forEach(function (item) {\n if (item.isRangeStart) {\n // Item is a decoration start\n activeDecorations.add(item.decoration);\n } else if (item.isRangeEnd) {\n // item is a decoration end\n activeDecorations.remove(item.decoration);\n } else {\n // Item is a child node\n childrenDecorations.push(activeDecorations.toList());\n }\n });\n\n return childrenDecorations;\n}\n\n/**\n * Orders the children of provided node and its decoration endpoints (start, end)\n * so that decorations can be passed only to relevant children (see use in Node.render())\n *\n * @param {Node} node\n * @param {List} decorations\n * @return {Array<Item>}\n *\n * where type Item =\n * {\n * child: Node,\n * // Index of the child in its parent\n * index: number\n * }\n * or {\n * // True if this represents the start of the given decoration\n * isRangeStart: boolean,\n * // True if this represents the end of the given decoration\n * isRangeEnd: boolean,\n * decoration: Range\n * }\n */\n\nfunction orderChildDecorations(node, decorations) {\n if (decorations.isEmpty()) {\n return node.nodes.toArray().map(function (child, index) {\n return {\n child: child,\n index: index\n };\n });\n }\n\n // Map each key to its global order\n var keyOrders = defineProperty({}, node.key, 0);\n var globalOrder = 1;\n\n node.forEachDescendant(function (child) {\n keyOrders[child.key] = globalOrder;\n globalOrder = globalOrder + 1;\n });\n\n var childNodes = node.nodes.toArray();\n\n var endPoints = childNodes.map(function (child, index) {\n return {\n child: child,\n index: index,\n order: keyOrders[child.key]\n };\n });\n\n decorations.forEach(function (decoration) {\n // Range start.\n // A rangeStart should be before the child containing its startKey, in order\n // to consider it active before going down the child.\n var startKeyOrder = keyOrders[decoration.start.key];\n var containingChildOrder = startKeyOrder === undefined ? 0 : getContainingChildOrder(childNodes, keyOrders, startKeyOrder);\n\n endPoints.push({\n isRangeStart: true,\n order: containingChildOrder - 0.5,\n decoration: decoration\n });\n\n // Range end.\n var endKeyOrder = (keyOrders[decoration.end.key] || globalOrder) + 0.5;\n\n endPoints.push({\n isRangeEnd: true,\n order: endKeyOrder,\n decoration: decoration\n });\n });\n\n return endPoints.sort(function (a, b) {\n return a.order > b.order ? 1 : -1;\n });\n}\n\n/*\n * Returns the key order of the child right before the given order.\n */\n\nfunction getContainingChildOrder(children, keyOrders, order) {\n // Find the first child that is after the given key\n var nextChildIndex = children.findIndex(function (child) {\n return order < keyOrders[child.key];\n });\n\n if (nextChildIndex <= 0) {\n return 0;\n }\n\n var containingChild = children[nextChildIndex - 1];\n return keyOrders[containingChild.key];\n}\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$3 = Debug('slate:node');\n\n/**\n * Node.\n *\n * @type {Component}\n */\n\nvar Node$1 = function (_React$Component) {\n inherits(Node$$1, _React$Component);\n\n function Node$$1() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Node$$1);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Node$$1.__proto__ || Object.getPrototypeOf(Node$$1)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps$3.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Debug.\n *\n * @param {String} message\n * @param {Mixed} ...args\n */\n\n createClass(Node$$1, [{\n key: 'shouldComponentUpdate',\n\n\n /**\n * Should the node update?\n *\n * @param {Object} nextProps\n * @param {Object} value\n * @return {Boolean}\n */\n\n value: function shouldComponentUpdate(nextProps) {\n var props = this.props;\n var stack = props.editor.stack;\n\n var shouldUpdate = stack.find('shouldNodeComponentUpdate', props, nextProps);\n var n = nextProps;\n var p = props;\n\n // If the `Component` has a custom logic to determine whether the component\n // needs to be updated or not, return true if it returns true. If it returns\n // false, we need to ignore it, because it shouldn't be allowed it.\n if (shouldUpdate != null) {\n if (shouldUpdate) {\n return true;\n }\n\n warning(shouldUpdate !== false, \"Returning false in `shouldNodeComponentUpdate` does not disable Slate's internal `shouldComponentUpdate` logic. If you want to prevent updates, use React's `shouldComponentUpdate` instead.\");\n }\n\n // If the `readOnly` status has changed, re-render in case there is any\n // user-land logic that depends on it, like nested editable contents.\n if (n.readOnly != p.readOnly) return true;\n\n // If the node has changed, update. PERF: There are cases where it will have\n // changed, but it's properties will be exactly the same (eg. copy-paste)\n // which this won't catch. But that's rare and not a drag on performance, so\n // for simplicity we just let them through.\n if (n.node != p.node) return true;\n\n // If the selection value of the node or of some of its children has changed,\n // re-render in case there is any user-land logic depends on it to render.\n // if the node is selected update it, even if it was already selected: the\n // selection value of some of its children could have been changed and they\n // need to be rendered again.\n if (n.isSelected || p.isSelected) return true;\n if (n.isFocused || p.isFocused) return true;\n\n // If the decorations have changed, update.\n if (!n.decorations.equals(p.decorations)) return true;\n\n // Otherwise, don't update.\n return false;\n }\n\n /**\n * Render.\n *\n * @return {Element}\n */\n\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n this.debug('render', this);\n var _props = this.props,\n editor = _props.editor,\n isSelected = _props.isSelected,\n isFocused = _props.isFocused,\n node = _props.node,\n decorations = _props.decorations,\n parent = _props.parent,\n readOnly = _props.readOnly;\n var value = editor.value;\n var selection = value.selection,\n schema = value.schema;\n var stack = editor.stack;\n\n var indexes = node.getSelectionIndexes(selection, isSelected);\n var decs = decorations.concat(node.getDecorations(stack));\n var childrenDecorations = getChildrenDecorations(node, decs);\n\n var children = [];\n\n node.nodes.forEach(function (child, i) {\n var isChildSelected = !!indexes && indexes.start <= i && i < indexes.end;\n\n children.push(_this2.renderNode(child, isChildSelected, childrenDecorations[i]));\n });\n\n // Attributes that the developer must mix into the element in their\n // custom node renderer component.\n var attributes = { 'data-key': node.key\n\n // If it's a block node with inline children, add the proper `dir` attribute\n // for text direction.\n };if (node.object == 'block' && node.nodes.first().object != 'block') {\n var direction = node.getTextDirection();\n if (direction == 'rtl') attributes.dir = 'rtl';\n }\n\n var props = {\n key: node.key,\n editor: editor,\n isFocused: isFocused,\n isSelected: isSelected,\n node: node,\n parent: parent,\n readOnly: readOnly\n };\n\n var placeholder = stack.find('renderPlaceholder', props);\n\n if (placeholder) {\n placeholder = React.cloneElement(placeholder, {\n key: node.key + '-placeholder'\n });\n\n children = [placeholder].concat(toConsumableArray(children));\n }\n\n var element = stack.find('renderNode', _extends({}, props, {\n attributes: attributes,\n children: children\n }));\n\n return schema.isVoid(node) ? React.createElement(\n Void,\n this.props,\n element\n ) : element;\n }\n\n /**\n * Render a `child` node.\n *\n * @param {Node} child\n * @param {Boolean} isSelected\n * @param {Array<Decoration>} decorations\n * @return {Element}\n */\n\n }]);\n return Node$$1;\n}(React.Component);\n\n/**\n * Export.\n *\n * @type {Component}\n */\n\nNode$1.propTypes = {\n block: SlateTypes.block,\n decorations: ImmutableTypes.list.isRequired,\n editor: Types.object.isRequired,\n isFocused: Types.bool.isRequired,\n isSelected: Types.bool.isRequired,\n node: SlateTypes.node.isRequired,\n parent: SlateTypes.node.isRequired,\n readOnly: Types.bool.isRequired };\n\nvar _initialiseProps$3 = function _initialiseProps() {\n var _this3 = this;\n\n this.debug = function (message) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var node = _this3.props.node;\n var key = node.key,\n type = node.type;\n\n debug$3.apply(undefined, [message, key + ' (' + type + ')'].concat(args));\n };\n\n this.renderNode = function (child, isSelected, decorations) {\n var _props2 = _this3.props,\n block = _props2.block,\n editor = _props2.editor,\n node = _props2.node,\n readOnly = _props2.readOnly,\n isFocused = _props2.isFocused;\n\n var Component = child.object == 'text' ? Text$1 : Node$1;\n\n return React.createElement(Component, {\n block: node.object == 'block' ? node : block,\n decorations: decorations,\n editor: editor,\n isSelected: isSelected,\n isFocused: isFocused && isSelected,\n key: child.key,\n node: child,\n parent: node,\n readOnly: readOnly\n });\n };\n};\n\n/**\n * Find the DOM node for a `key`.\n *\n * @param {String|Node} key\n * @param {Window} win (optional)\n * @return {Element}\n */\n\nfunction findDOMNode$1(key) {\n var win = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;\n\n if (Node.isNode(key)) {\n key = key.key;\n }\n\n var el = win.document.querySelector('[data-key=\"' + key + '\"]');\n\n if (!el) {\n throw new Error('Unable to find a DOM node for \"' + key + '\". This is often because of forgetting to add `props.attributes` to a custom component.');\n }\n\n return el;\n}\n\n/**\n * Find a native DOM selection point from a Slate `point`.\n *\n * @param {Point} point\n * @param {Window} win (optional)\n * @return {Object|Null}\n */\n\nfunction findDOMPoint(point) {\n var win = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;\n\n var el = findDOMNode$1(point.key, win);\n var start = 0;\n var n = void 0;\n\n // COMPAT: In IE, this method's arguments are not optional, so we have to\n // pass in all four even though the last two are defaults. (2017/10/25)\n var iterator = win.document.createNodeIterator(el, NodeFilter.SHOW_TEXT, function () {\n return NodeFilter.FILTER_ACCEPT;\n }, false);\n\n while (n = iterator.nextNode()) {\n var length = n.textContent.length;\n\n var end = start + length;\n\n if (point.offset <= end) {\n var o = point.offset - start;\n return { node: n, offset: o >= 0 ? o : 0 };\n }\n\n start = end;\n }\n\n return null;\n}\n\n/**\n * Find a native DOM range Slate `range`.\n *\n * @param {Range} range\n * @param {Window} win (optional)\n * @return {Object|Null}\n */\n\nfunction findDOMRange(range) {\n var win = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;\n var anchor = range.anchor,\n focus = range.focus,\n isBackward$$1 = range.isBackward,\n isCollapsed = range.isCollapsed;\n\n var domAnchor = findDOMPoint(anchor, win);\n var domFocus = isCollapsed ? domAnchor : findDOMPoint(focus, win);\n\n if (!domAnchor || !domFocus) return null;\n\n var r = win.document.createRange();\n var start = isBackward$$1 ? domFocus : domAnchor;\n var end = isBackward$$1 ? domAnchor : domFocus;\n r.setStart(start.node, start.offset);\n r.setEnd(end.node, end.offset);\n return r;\n}\n\n/**\n * Constants.\n *\n * @type {String}\n */\n\nvar ZERO_WIDTH_ATTRIBUTE = 'data-slate-zero-width';\nvar ZERO_WIDTH_SELECTOR = '[' + ZERO_WIDTH_ATTRIBUTE + ']';\nvar OFFSET_KEY_ATTRIBUTE = 'data-offset-key';\nvar RANGE_SELECTOR = '[' + OFFSET_KEY_ATTRIBUTE + ']';\nvar TEXT_SELECTOR = '[data-key]';\nvar VOID_SELECTOR = '[data-slate-void]';\n\n/**\n * Find a Slate point from a DOM selection's `nativeNode` and `nativeOffset`.\n *\n * @param {Element} nativeNode\n * @param {Number} nativeOffset\n * @param {Value} value\n * @return {Point}\n */\n\nfunction findPoint(nativeNode, nativeOffset, value) {\n var _normalizeNodeAndOffs = normalizeNodeAndOffset(nativeNode, nativeOffset),\n nearestNode = _normalizeNodeAndOffs.node,\n nearestOffset = _normalizeNodeAndOffs.offset;\n\n var window = getWindow(nativeNode);\n var parentNode = nearestNode.parentNode;\n\n var rangeNode = parentNode.closest(RANGE_SELECTOR);\n var offset = void 0;\n var node = void 0;\n\n // Calculate how far into the text node the `nearestNode` is, so that we can\n // determine what the offset relative to the text node is.\n if (rangeNode) {\n var range = window.document.createRange();\n var textNode = rangeNode.closest(TEXT_SELECTOR);\n range.setStart(textNode, 0);\n range.setEnd(nearestNode, nearestOffset);\n node = textNode;\n offset = range.toString().length;\n } else {\n // For void nodes, the element with the offset key will be a cousin, not an\n // ancestor, so find it by going down from the nearest void parent.\n var voidNode = parentNode.closest(VOID_SELECTOR);\n if (!voidNode) return null;\n rangeNode = voidNode.querySelector(RANGE_SELECTOR);\n if (!rangeNode) return null;\n node = rangeNode;\n offset = node.textContent.length;\n }\n\n // COMPAT: If the parent node is a Slate zero-width space, this is because the\n // text node should have no characters. However, during IME composition the\n // ASCII characters will be prepended to the zero-width space, so subtract 1\n // from the offset to account for the zero-width space character.\n if (offset == node.textContent.length && parentNode.hasAttribute(ZERO_WIDTH_ATTRIBUTE)) {\n offset--;\n }\n\n // Get the string value of the offset key attribute.\n var offsetKey = rangeNode.getAttribute(OFFSET_KEY_ATTRIBUTE);\n if (!offsetKey) return null;\n\n var _OffsetKey$parse = OffsetKey.parse(offsetKey),\n key = _OffsetKey$parse.key;\n\n // COMPAT: If someone is clicking from one Slate editor into another, the\n // select event fires twice, once for the old editor's `element` first, and\n // then afterwards for the correct `element`. (2017/03/03)\n\n\n if (!value.document.hasDescendant(key)) return null;\n\n var point = value.document.createPoint({ key: key, offset: offset });\n return point;\n}\n\n/**\n * From a DOM selection's `node` and `offset`, normalize so that it always\n * refers to a text node.\n *\n * @param {Element} node\n * @param {Number} offset\n * @return {Object}\n */\n\nfunction normalizeNodeAndOffset(node, offset) {\n // If it's an element node, its offset refers to the index of its children\n // including comment nodes, so try to find the right text child node.\n if (node.nodeType == 1 && node.childNodes.length) {\n var isLast = offset == node.childNodes.length;\n var direction = isLast ? 'backward' : 'forward';\n var index = isLast ? offset - 1 : offset;\n node = getEditableChild(node, index, direction);\n\n // If the node has children, traverse until we have a leaf node. Leaf nodes\n // can be either text nodes, or other void DOM nodes.\n while (node.nodeType == 1 && node.childNodes.length) {\n var i = isLast ? node.childNodes.length - 1 : 0;\n node = getEditableChild(node, i, direction);\n }\n\n // Determine the new offset inside the text node.\n offset = isLast ? node.textContent.length : 0;\n }\n\n // Return the node and offset.\n return { node: node, offset: offset };\n}\n\n/**\n * Get the nearest editable child at `index` in a `parent`, preferring\n * `direction`.\n *\n * @param {Element} parent\n * @param {Number} index\n * @param {String} direction ('forward' or 'backward')\n * @return {Element|Null}\n */\n\nfunction getEditableChild(parent, index, direction) {\n var childNodes = parent.childNodes;\n\n var child = childNodes[index];\n var i = index;\n var triedForward = false;\n var triedBackward = false;\n\n // While the child is a comment node, or an element node with no children,\n // keep iterating to find a sibling non-void, non-comment node.\n while (child.nodeType == 8 || child.nodeType == 1 && child.childNodes.length == 0 || child.nodeType == 1 && child.getAttribute('contenteditable') == 'false') {\n if (triedForward && triedBackward) break;\n\n if (i >= childNodes.length) {\n triedForward = true;\n i = index - 1;\n direction = 'backward';\n continue;\n }\n\n if (i < 0) {\n triedBackward = true;\n i = index + 1;\n direction = 'forward';\n continue;\n }\n\n child = childNodes[i];\n if (direction == 'forward') i++;\n if (direction == 'backward') i--;\n }\n\n return child || null;\n}\n\n/**\n * Find a Slate range from a DOM `native` selection.\n *\n * @param {Selection} native\n * @param {Value} value\n * @return {Range}\n */\n\nfunction findRange(native, value) {\n var el = native.anchorNode || native.startContainer;\n if (!el) return null;\n\n var window = getWindow(el);\n\n // If the `native` object is a DOM `Range` or `StaticRange` object, change it\n // into something that looks like a DOM `Selection` instead.\n if (native instanceof window.Range || window.StaticRange && native instanceof window.StaticRange) {\n native = {\n anchorNode: native.startContainer,\n anchorOffset: native.startOffset,\n focusNode: native.endContainer,\n focusOffset: native.endOffset\n };\n }\n\n var _native = native,\n anchorNode = _native.anchorNode,\n anchorOffset = _native.anchorOffset,\n focusNode = _native.focusNode,\n focusOffset = _native.focusOffset,\n isCollapsed = _native.isCollapsed;\n\n var anchor = findPoint(anchorNode, anchorOffset, value);\n var focus = isCollapsed ? anchor : findPoint(focusNode, focusOffset, value);\n if (!anchor || !focus) return null;\n\n // COMPAT: ??? The Edge browser seems to have a case where if you select the\n // last word of a span, it sets the endContainer to the containing span.\n // `selection-is-backward` doesn't handle this case.\n if (IS_IE || IS_EDGE) {\n var domAnchor = findDOMPoint(anchor);\n var domFocus = findDOMPoint(focus);\n\n native = {\n anchorNode: domAnchor.node,\n anchorOffset: domAnchor.offset,\n focusNode: domFocus.node,\n focusOffset: domFocus.offset\n };\n }\n\n var document = value.document;\n\n var range = document.createRange({\n anchor: anchor,\n focus: focus\n });\n\n return range;\n}\n\n/**\n * CSS overflow values that would cause scrolling.\n *\n * @type {Array}\n */\n\nvar OVERFLOWS = ['auto', 'overlay', 'scroll'];\n\n/**\n * Detect whether we are running IOS version 11\n */\n\nvar IS_IOS_11 = IS_IOS && !!window.navigator.userAgent.match(/os 11_/i);\n\n/**\n * Find the nearest parent with scrolling, or window.\n *\n * @param {el} Element\n */\n\nfunction findScrollContainer(el, window) {\n var parent = el.parentNode;\n var scroller = void 0;\n\n while (!scroller) {\n if (!parent.parentNode) break;\n\n var style = window.getComputedStyle(parent);\n var overflowY = style.overflowY;\n\n\n if (OVERFLOWS.includes(overflowY)) {\n scroller = parent;\n break;\n }\n\n parent = parent.parentNode;\n }\n\n // COMPAT: Because Chrome does not allow doucment.body.scrollTop, we're\n // assuming that window.scrollTo() should be used if the scrollable element\n // turns out to be document.body or document.documentElement. This will work\n // unless body is intentionally set to scrollable by restricting its height\n // (e.g. height: 100vh).\n if (!scroller) {\n return window.document.body;\n }\n\n return scroller;\n}\n\n/**\n * Scroll the current selection's focus point into view if needed.\n *\n * @param {Selection} selection\n */\n\nfunction scrollToSelection(selection) {\n if (IS_IOS_11) return;\n if (!selection.anchorNode) return;\n\n var window = getWindow(selection.anchorNode);\n var scroller = findScrollContainer(selection.anchorNode, window);\n var isWindow = scroller == window.document.body || scroller == window.document.documentElement;\n var backward = isBackward(selection);\n\n var range = selection.getRangeAt(0).cloneRange();\n range.collapse(backward);\n var cursorRect = range.getBoundingClientRect();\n\n // COMPAT: range.getBoundingClientRect() returns 0s in Safari when range is\n // collapsed. Expanding the range by 1 is a relatively effective workaround\n // for vertical scroll, although horizontal may be off by 1 character.\n // https://bugs.webkit.org/show_bug.cgi?id=138949\n // https://bugs.chromium.org/p/chromium/issues/detail?id=435438\n if (IS_SAFARI) {\n if (range.collapsed && cursorRect.top == 0 && cursorRect.height == 0) {\n if (range.startOffset == 0) {\n range.setEnd(range.endContainer, 1);\n } else {\n range.setStart(range.startContainer, range.startOffset - 1);\n }\n\n cursorRect = range.getBoundingClientRect();\n\n if (cursorRect.top == 0 && cursorRect.height == 0) {\n if (range.getClientRects().length) {\n cursorRect = range.getClientRects()[0];\n }\n }\n }\n }\n\n var width = void 0;\n var height = void 0;\n var yOffset = void 0;\n var xOffset = void 0;\n var scrollerTop = 0;\n var scrollerLeft = 0;\n var scrollerBordersY = 0;\n var scrollerBordersX = 0;\n var scrollerPaddingTop = 0;\n var scrollerPaddingBottom = 0;\n var scrollerPaddingLeft = 0;\n var scrollerPaddingRight = 0;\n\n if (isWindow) {\n var innerWidth = window.innerWidth,\n innerHeight = window.innerHeight,\n pageYOffset = window.pageYOffset,\n pageXOffset = window.pageXOffset;\n\n width = innerWidth;\n height = innerHeight;\n yOffset = pageYOffset;\n xOffset = pageXOffset;\n } else {\n var offsetWidth = scroller.offsetWidth,\n offsetHeight = scroller.offsetHeight,\n scrollTop = scroller.scrollTop,\n scrollLeft = scroller.scrollLeft;\n\n var _window$getComputedSt = window.getComputedStyle(scroller),\n borderTopWidth = _window$getComputedSt.borderTopWidth,\n borderBottomWidth = _window$getComputedSt.borderBottomWidth,\n borderLeftWidth = _window$getComputedSt.borderLeftWidth,\n borderRightWidth = _window$getComputedSt.borderRightWidth,\n paddingTop = _window$getComputedSt.paddingTop,\n paddingBottom = _window$getComputedSt.paddingBottom,\n paddingLeft = _window$getComputedSt.paddingLeft,\n paddingRight = _window$getComputedSt.paddingRight;\n\n var scrollerRect = scroller.getBoundingClientRect();\n width = offsetWidth;\n height = offsetHeight;\n scrollerTop = scrollerRect.top + parseInt(borderTopWidth, 10);\n scrollerLeft = scrollerRect.left + parseInt(borderLeftWidth, 10);\n\n scrollerBordersY = parseInt(borderTopWidth, 10) + parseInt(borderBottomWidth, 10);\n\n scrollerBordersX = parseInt(borderLeftWidth, 10) + parseInt(borderRightWidth, 10);\n\n scrollerPaddingTop = parseInt(paddingTop, 10);\n scrollerPaddingBottom = parseInt(paddingBottom, 10);\n scrollerPaddingLeft = parseInt(paddingLeft, 10);\n scrollerPaddingRight = parseInt(paddingRight, 10);\n yOffset = scrollTop;\n xOffset = scrollLeft;\n }\n\n var cursorTop = cursorRect.top + yOffset - scrollerTop;\n var cursorLeft = cursorRect.left + xOffset - scrollerLeft;\n\n var x = xOffset;\n var y = yOffset;\n\n if (cursorLeft < xOffset) {\n // selection to the left of viewport\n x = cursorLeft - scrollerPaddingLeft;\n } else if (cursorLeft + cursorRect.width + scrollerBordersX > xOffset + width) {\n // selection to the right of viewport\n x = cursorLeft + scrollerBordersX + scrollerPaddingRight - width;\n }\n\n if (cursorTop < yOffset) {\n // selection above viewport\n y = cursorTop - scrollerPaddingTop;\n } else if (cursorTop + cursorRect.height + scrollerBordersY > yOffset + height) {\n // selection below viewport\n y = cursorTop + scrollerBordersY + scrollerPaddingBottom + cursorRect.height - height;\n }\n\n if (isWindow) {\n window.scrollTo(x, y);\n } else {\n scroller.scrollTop = y;\n scroller.scrollLeft = x;\n }\n}\n\n/**\n * COMPAT: if we are in <= IE11 and the selection contains\n * tables, `removeAllRanges()` will throw\n * \"unable to complete the operation due to error 800a025e\"\n *\n * @param {Selection} selection document selection\n */\n\nfunction removeAllRanges(selection) {\n var doc = window.document;\n\n if (doc && doc.body.createTextRange) {\n // All IE but Edge\n var range = doc.body.createTextRange();\n range.collapse();\n range.select();\n } else {\n selection.removeAllRanges();\n }\n}\n\nvar FIREFOX_NODE_TYPE_ACCESS_ERROR = /Permission denied to access property \"nodeType\"/;\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$4 = Debug('slate:content');\n\n/**\n * Content.\n *\n * @type {Component}\n */\n\nvar Content = function (_React$Component) {\n inherits(Content, _React$Component);\n\n function Content() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Content);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Content.__proto__ || Object.getPrototypeOf(Content)).call.apply(_ref, [this].concat(args))), _this), _this.tmp = {\n isUpdatingSelection: false\n\n /**\n * Create a set of bound event handlers.\n *\n * @type {Object}\n */\n\n }, _this.handlers = EVENT_HANDLERS.reduce(function (obj, handler) {\n obj[handler] = function (event) {\n return _this.onEvent(handler, event);\n };\n return obj;\n }, {}), _this.updateSelection = function () {\n var editor = _this.props.editor;\n var value = editor.value;\n var selection = value.selection;\n var isBackward$$1 = selection.isBackward;\n\n var window = getWindow(_this.element);\n var native = window.getSelection();\n\n // .getSelection() can return null in some cases\n // https://bugzilla.mozilla.org/show_bug.cgi?id=827585\n if (!native) return;\n\n var rangeCount = native.rangeCount,\n anchorNode = native.anchorNode;\n\n // If both selections are blurred, do nothing.\n\n if (!rangeCount && selection.isBlurred) return;\n\n // If the selection has been blurred, but is still inside the editor in the\n // DOM, blur it manually.\n if (selection.isBlurred) {\n if (!_this.isInEditor(anchorNode)) return;\n removeAllRanges(native);\n _this.element.blur();\n debug$4('updateSelection', { selection: selection, native: native });\n return;\n }\n\n // If the selection isn't set, do nothing.\n if (selection.isUnset) return;\n\n // Otherwise, figure out which DOM nodes should be selected...\n var current = !!rangeCount && native.getRangeAt(0);\n var range = findDOMRange(selection, window);\n\n if (!range) {\n warning(false, 'Unable to find a native DOM range from the current selection.');\n\n return;\n }\n\n var startContainer = range.startContainer,\n startOffset = range.startOffset,\n endContainer = range.endContainer,\n endOffset = range.endOffset;\n\n // If the new range matches the current selection, there is nothing to fix.\n // COMPAT: The native `Range` object always has it's \"start\" first and \"end\"\n // last in the DOM. It has no concept of \"backwards/forwards\", so we have\n // to check both orientations here. (2017/10/31)\n\n if (current) {\n if (startContainer == current.startContainer && startOffset == current.startOffset && endContainer == current.endContainer && endOffset == current.endOffset || startContainer == current.endContainer && startOffset == current.endOffset && endContainer == current.startContainer && endOffset == current.startOffset) {\n return;\n }\n }\n\n // Otherwise, set the `isUpdatingSelection` flag and update the selection.\n _this.tmp.isUpdatingSelection = true;\n removeAllRanges(native);\n\n // COMPAT: IE 11 does not support Selection.setBaseAndExtent\n if (native.setBaseAndExtent) {\n // COMPAT: Since the DOM range has no concept of backwards/forwards\n // we need to check and do the right thing here.\n if (isBackward$$1) {\n native.setBaseAndExtent(range.endContainer, range.endOffset, range.startContainer, range.startOffset);\n } else {\n native.setBaseAndExtent(range.startContainer, range.startOffset, range.endContainer, range.endOffset);\n }\n } else {\n // COMPAT: IE 11 does not support Selection.extend, fallback to addRange\n native.addRange(range);\n }\n\n // Scroll to the selection, in case it's out of view.\n scrollToSelection(native);\n\n // Then unset the `isUpdatingSelection` flag after a delay.\n setTimeout(function () {\n // COMPAT: In Firefox, it's not enough to create a range, you also need to\n // focus the contenteditable element too. (2016/11/16)\n if (IS_FIREFOX && _this.element) _this.element.focus();\n _this.tmp.isUpdatingSelection = false;\n });\n\n debug$4('updateSelection', { selection: selection, native: native });\n }, _this.ref = function (element) {\n _this.element = element;\n }, _this.isInEditor = function (target) {\n var _this2 = _this,\n element = _this2.element;\n\n\n var el = void 0;\n\n try {\n // COMPAT: In Firefox, sometimes the node can be comment which doesn't\n // have .closest and it crashes.\n if (target.nodeType === 8) {\n return false;\n }\n\n // COMPAT: Text nodes don't have `isContentEditable` property. So, when\n // `target` is a text node use its parent node for check.\n el = target.nodeType === 3 ? target.parentNode : target;\n } catch (err) {\n // COMPAT: In Firefox, `target.nodeType` will throw an error if target is\n // originating from an internal \"restricted\" element (e.g. a stepper\n // arrow on a number input)\n // see github.com/ianstormtaylor/slate/issues/1819\n if (IS_FIREFOX && FIREFOX_NODE_TYPE_ACCESS_ERROR.test(err.message)) {\n return false;\n }\n\n throw err;\n }\n\n var allowEdit = el.isContentEditable || el.closest('[data-slate-void]');\n return allowEdit && (el === element || el.closest('[data-slate-editor]') === element);\n }, _this.onNativeSelectionChange = throttle(function (event) {\n if (_this.props.readOnly) return;\n\n var window = getWindow(event.target);\n var activeElement = window.document.activeElement;\n\n if (activeElement !== _this.element) return;\n\n _this.props.onSelect(event);\n }, 100), _this.renderNode = function (child, isSelected, decorations) {\n var _this$props = _this.props,\n editor = _this$props.editor,\n readOnly = _this$props.readOnly;\n var value = editor.value;\n var document = value.document,\n selection = value.selection;\n var isFocused = selection.isFocused;\n\n\n return React.createElement(Node$1, {\n block: null,\n editor: editor,\n decorations: decorations,\n isSelected: isSelected,\n isFocused: isFocused && isSelected,\n key: child.key,\n node: child,\n parent: document,\n readOnly: readOnly\n });\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Default properties.\n *\n * @type {Object}\n */\n\n /**\n * Temporary values.\n *\n * @type {Object}\n */\n\n createClass(Content, [{\n key: 'componentDidMount',\n\n\n /**\n * When the editor first mounts in the DOM we need to:\n *\n * - Add native DOM event listeners.\n * - Update the selection, in case it starts focused.\n */\n\n value: function componentDidMount() {\n var window = getWindow(this.element);\n\n window.document.addEventListener('selectionchange', this.onNativeSelectionChange);\n\n // COMPAT: Restrict scope of `beforeinput` to clients that support the\n // Input Events Level 2 spec, since they are preventable events.\n if (HAS_INPUT_EVENTS_LEVEL_2) {\n this.element.addEventListener('beforeinput', this.handlers.onBeforeInput);\n }\n\n this.updateSelection();\n }\n\n /**\n * When unmounting, remove DOM event listeners.\n */\n\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var window = getWindow(this.element);\n\n if (window) {\n window.document.removeEventListener('selectionchange', this.onNativeSelectionChange);\n }\n\n if (HAS_INPUT_EVENTS_LEVEL_2) {\n this.element.removeEventListener('beforeinput', this.handlers.onBeforeInput);\n }\n }\n\n /**\n * On update, update the selection.\n */\n\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.updateSelection();\n }\n\n /**\n * Update the native DOM selection to reflect the internal model.\n */\n\n /**\n * The React ref method to set the root content element locally.\n *\n * @param {Element} element\n */\n\n /**\n * Check if an event `target` is fired from within the contenteditable\n * element. This should be false for edits happening in non-contenteditable\n * children, such as void nodes and other nested Slate editors.\n *\n * @param {Element} target\n * @return {Boolean}\n */\n\n }, {\n key: 'onEvent',\n\n\n /**\n * On `event` with `handler`.\n *\n * @param {String} handler\n * @param {Event} event\n */\n\n value: function onEvent(handler, event) {\n debug$4('onEvent', handler);\n\n // Ignore `onBlur`, `onFocus` and `onSelect` events generated\n // programmatically while updating selection.\n if (this.tmp.isUpdatingSelection && (handler == 'onSelect' || handler == 'onBlur' || handler == 'onFocus')) {\n return;\n }\n\n // COMPAT: There are situations where a select event will fire with a new\n // native selection that resolves to the same internal position. In those\n // cases we don't need to trigger any changes, since our internal model is\n // already up to date, but we do want to update the native selection again\n // to make sure it is in sync. (2017/10/16)\n if (handler == 'onSelect') {\n var editor = this.props.editor;\n var value = editor.value;\n var selection = value.selection;\n\n var window = getWindow(event.target);\n var native = window.getSelection();\n var range = findRange(native, value);\n\n if (range && range.equals(selection.toRange())) {\n this.updateSelection();\n return;\n }\n }\n\n // Don't handle drag and drop events coming from embedded editors.\n if (handler == 'onDragEnd' || handler == 'onDragEnter' || handler == 'onDragExit' || handler == 'onDragLeave' || handler == 'onDragOver' || handler == 'onDragStart' || handler == 'onDrop') {\n var target = event.target;\n\n var targetEditorNode = target.closest('[data-slate-editor]');\n if (targetEditorNode !== this.element) return;\n }\n\n // Some events require being in editable in the editor, so if the event\n // target isn't, ignore them.\n if (handler == 'onBeforeInput' || handler == 'onBlur' || handler == 'onCompositionEnd' || handler == 'onCompositionStart' || handler == 'onCopy' || handler == 'onCut' || handler == 'onFocus' || handler == 'onInput' || handler == 'onKeyDown' || handler == 'onKeyUp' || handler == 'onPaste' || handler == 'onSelect') {\n if (!this.isInEditor(event.target)) return;\n }\n\n this.props[handler](event);\n }\n\n /**\n * On native `selectionchange` event, trigger the `onSelect` handler. This is\n * needed to account for React's `onSelect` being non-standard and not firing\n * until after a selection has been released. This causes issues in situations\n * where another change happens while a selection is being made.\n *\n * @param {Event} event\n */\n\n }, {\n key: 'render',\n\n\n /**\n * Render the editor content.\n *\n * @return {Element}\n */\n\n value: function render() {\n var _this3 = this;\n\n var props = this.props,\n handlers = this.handlers;\n var className = props.className,\n readOnly = props.readOnly,\n editor = props.editor,\n tabIndex = props.tabIndex,\n role = props.role,\n tagName = props.tagName,\n spellCheck = props.spellCheck;\n var value = editor.value,\n stack = editor.stack;\n\n var Container = tagName;\n var document = value.document,\n selection = value.selection,\n decorations = value.decorations;\n\n var indexes = document.getSelectionIndexes(selection);\n var decs = document.getDecorations(stack).concat(decorations);\n var childrenDecorations = getChildrenDecorations(document, decs);\n\n var children = document.nodes.toArray().map(function (child, i) {\n var isSelected = !!indexes && indexes.start <= i && i < indexes.end;\n\n return _this3.renderNode(child, isSelected, childrenDecorations[i]);\n });\n\n var style = _extends({\n // Prevent the default outline styles.\n outline: 'none',\n // Preserve adjacent whitespace and new lines.\n whiteSpace: 'pre-wrap',\n // Allow words to break if they are too long.\n wordWrap: 'break-word'\n }, readOnly ? {} : { WebkitUserModify: 'read-write-plaintext-only' }, props.style);\n\n debug$4('render', { props: props });\n\n return React.createElement(\n Container,\n _extends({}, handlers, {\n 'data-slate-editor': true,\n ref: this.ref,\n 'data-key': document.key,\n contentEditable: readOnly ? null : true,\n suppressContentEditableWarning: true,\n className: className,\n autoCorrect: props.autoCorrect ? 'on' : 'off',\n spellCheck: spellCheck,\n style: style,\n role: readOnly ? null : role || 'textbox',\n tabIndex: tabIndex\n // COMPAT: The Grammarly Chrome extension works by changing the DOM out\n // from under `contenteditable` elements, which leads to weird behaviors\n // so we have to disable it like this. (2017/04/24)\n , 'data-gramm': false\n }),\n children\n );\n }\n\n /**\n * Render a `child` node of the document.\n *\n * @param {Node} child\n * @param {Boolean} isSelected\n * @return {Element}\n */\n\n }]);\n return Content;\n}(React.Component);\n\n/**\n * Mix in handler prop types.\n */\n\nContent.propTypes = {\n autoCorrect: Types.bool.isRequired,\n className: Types.string,\n editor: Types.object.isRequired,\n readOnly: Types.bool.isRequired,\n role: Types.string,\n spellCheck: Types.bool.isRequired,\n style: Types.object,\n tabIndex: Types.number,\n tagName: Types.string };\nContent.defaultProps = {\n style: {},\n tagName: 'div' };\nEVENT_HANDLERS.forEach(function (handler) {\n Content.propTypes[handler] = Types.func.isRequired;\n});\n\n/**\n * The transfer types that Slate recognizes.\n *\n * @type {Object}\n */\n\nvar TRANSFER_TYPES = {\n FRAGMENT: 'application/x-slate-fragment',\n HTML: 'text/html',\n NODE: 'application/x-slate-node',\n RICH: 'text/rtf',\n TEXT: 'text/plain'\n\n /**\n * Export.\n *\n * @type {Object}\n */\n\n};\n\nvar FRAGMENT = TRANSFER_TYPES.FRAGMENT;\nvar HTML = TRANSFER_TYPES.HTML;\nvar TEXT = TRANSFER_TYPES.TEXT;\n\n/**\n * Prepares a Slate document fragment to be copied to the clipboard.\n *\n * @param {Event} event\n * @param {Value} value\n * @param {Document} [fragment]\n */\n\nfunction cloneFragment(event, value) {\n var fragment = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : value.fragment;\n var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {\n return undefined;\n };\n\n var window = getWindow(event.target);\n var native = window.getSelection();\n var schema = value.schema;\n var _value$selection = value.selection,\n start = _value$selection.start,\n end = _value$selection.end;\n\n var startVoid = value.document.getClosestVoid(start.key, schema);\n var endVoid = value.document.getClosestVoid(end.key, schema);\n\n // If the selection is collapsed, and it isn't inside a void node, abort.\n if (native.isCollapsed && !startVoid) return;\n\n // Create a fake selection so that we can add a Base64-encoded copy of the\n // fragment to the HTML, to decode on future pastes.\n var encoded = Base64.serializeNode(fragment);\n var range = native.getRangeAt(0);\n var contents = range.cloneContents();\n var attach = contents.childNodes[0];\n\n // Make sure attach is a non-empty node, since empty nodes will not get copied\n contents.childNodes.forEach(function (node) {\n if (node.textContent && node.textContent.trim() !== '') {\n attach = node;\n }\n });\n\n // COMPAT: If the end node is a void node, we need to move the end of the\n // range from the void node's spacer span, to the end of the void node's\n // content, since the spacer is before void's content in the DOM.\n if (endVoid) {\n var r = range.cloneRange();\n var node = findDOMNode$1(endVoid, window);\n r.setEndAfter(node);\n contents = r.cloneContents();\n }\n\n // COMPAT: If the start node is a void node, we need to attach the encoded\n // fragment to the void node's content node instead of the spacer, because\n // attaching it to empty `<div>/<span>` nodes will end up having it erased by\n // most browsers. (2018/04/27)\n if (startVoid) {\n attach = contents.childNodes[0].childNodes[1].firstChild;\n }\n\n // Remove any zero-width space spans from the cloned DOM so that they don't\n // show up elsewhere when pasted.\n [].slice.call(contents.querySelectorAll(ZERO_WIDTH_SELECTOR)).forEach(function (zw) {\n var isNewline = zw.getAttribute(ZERO_WIDTH_ATTRIBUTE) === 'n';\n zw.textContent = isNewline ? '\\n' : '';\n });\n\n // Set a `data-slate-fragment` attribute on a non-empty node, so it shows up\n // in the HTML, and can be used for intra-Slate pasting. If it's a text\n // node, wrap it in a `<span>` so we have something to set an attribute on.\n if (attach.nodeType == 3) {\n var span = window.document.createElement('span');\n\n // COMPAT: In Chrome and Safari, if we don't add the `white-space` style\n // then leading and trailing spaces will be ignored. (2017/09/21)\n span.style.whiteSpace = 'pre';\n\n span.appendChild(attach);\n contents.appendChild(span);\n attach = span;\n }\n\n attach.setAttribute('data-slate-fragment', encoded);\n\n // Creates value from only the selected blocks\n // Then gets plaintext for clipboard with proper linebreaks for BLOCK elements\n // Via Plain serializer\n var valFromSelection = Value.create({ document: fragment });\n var plainText = Plain.serialize(valFromSelection);\n\n // Add the phony content to a div element. This is needed to copy the\n // contents into the html clipboard register.\n var div = window.document.createElement('div');\n div.appendChild(contents);\n\n // For browsers supporting it, we set the clipboard registers manually,\n // since the result is more predictable.\n // COMPAT: IE supports the setData method, but only in restricted sense.\n // IE doesn't support arbitrary MIME types or common ones like 'text/plain';\n // it only accepts \"Text\" (which gets mapped to 'text/plain') and \"Url\"\n // (mapped to 'text/url-list'); so, we should only enter block if !IS_IE\n if (event.clipboardData && event.clipboardData.setData && !IS_IE) {\n event.preventDefault();\n event.clipboardData.setData(TEXT, plainText);\n event.clipboardData.setData(FRAGMENT, encoded);\n event.clipboardData.setData(HTML, div.innerHTML);\n callback();\n }\n\n // COMPAT: For browser that don't support the Clipboard API's setData method,\n // we must rely on the browser to natively copy what's selected.\n // So we add the div (containing our content) to the DOM, and select it.\n var editor = event.target.closest('[data-slate-editor]');\n div.setAttribute('contenteditable', true);\n div.style.position = 'absolute';\n div.style.left = '-9999px';\n editor.appendChild(div);\n native.selectAllChildren(div);\n\n // Revert to the previous selection right after copying.\n window.requestAnimationFrame(function () {\n editor.removeChild(div);\n removeAllRanges(native);\n native.addRange(range);\n callback();\n });\n}\n\n/**\n * Find a Slate node from a DOM `element`.\n *\n * @param {Element} element\n * @param {Value} value\n * @return {Node|Null}\n */\n\nfunction findNode(element, value) {\n var closest = element.closest('[data-key]');\n if (!closest) return null;\n\n var key = closest.getAttribute('data-key');\n if (!key) return null;\n\n var node = value.document.getNode(key);\n return node || null;\n}\n\n/**\n * Get the target range from a DOM `event`.\n *\n * @param {Event} event\n * @param {Value} value\n * @return {Range}\n */\n\nfunction getEventRange(event, value) {\n if (event.nativeEvent) {\n event = event.nativeEvent;\n }\n\n var _event = event,\n x = _event.x,\n y = _event.y,\n target = _event.target;\n\n if (x == null || y == null) return null;\n\n var document = value.document,\n schema = value.schema;\n\n var node = findNode(target, value);\n if (!node) return null;\n\n // If the drop target is inside a void node, move it into either the next or\n // previous node, depending on which side the `x` and `y` coordinates are\n // closest to.\n if (schema.isVoid(node)) {\n var rect = target.getBoundingClientRect();\n var isPrevious = node.object == 'inline' ? x - rect.left < rect.left + rect.width - x : y - rect.top < rect.top + rect.height - y;\n\n var text = node.getFirstText();\n var _range = document.createRange();\n\n if (isPrevious) {\n var previousText = document.getPreviousText(text.key);\n\n if (previousText) {\n return _range.moveToEndOfNode(previousText);\n }\n }\n\n var nextText = document.getNextText(text.key);\n return nextText ? _range.moveToStartOfNode(nextText) : null;\n }\n\n // Else resolve a range from the caret position where the drop occured.\n var window = getWindow(target);\n var native = void 0;\n\n // COMPAT: In Firefox, `caretRangeFromPoint` doesn't exist. (2016/07/25)\n if (window.document.caretRangeFromPoint) {\n native = window.document.caretRangeFromPoint(x, y);\n } else if (window.document.caretPositionFromPoint) {\n var position = window.document.caretPositionFromPoint(x, y);\n native = window.document.createRange();\n native.setStart(position.offsetNode, position.offset);\n native.setEnd(position.offsetNode, position.offset);\n } else if (window.document.body.createTextRange) {\n // COMPAT: In IE, `caretRangeFromPoint` and\n // `caretPositionFromPoint` don't exist. (2018/07/11)\n native = window.document.body.createTextRange();\n\n try {\n native.moveToPoint(x, y);\n } catch (error) {\n // IE11 will raise an `unspecified error` if `moveToPoint` is\n // called during a dropEvent.\n return null;\n }\n }\n\n // Resolve a Slate range from the DOM range.\n var range = findRange(native, value);\n if (!range) return null;\n\n return range;\n}\n\n/**\n * Transfer types.\n *\n * @type {String}\n */\n\nvar FRAGMENT$1 = TRANSFER_TYPES.FRAGMENT;\nvar HTML$1 = TRANSFER_TYPES.HTML;\nvar NODE = TRANSFER_TYPES.NODE;\nvar RICH = TRANSFER_TYPES.RICH;\nvar TEXT$1 = TRANSFER_TYPES.TEXT;\n\n/**\n * Fragment matching regexp for HTML nodes.\n *\n * @type {RegExp}\n */\n\nvar FRAGMENT_MATCHER = / data-slate-fragment=\"([^\\s\"]+)\"/;\n\n/**\n * Get the transfer data from an `event`.\n *\n * @param {Event} event\n * @return {Object}\n */\n\nfunction getEventTransfer(event) {\n // COMPAT: IE 11 doesn't populate nativeEvent with either\n // dataTransfer or clipboardData. We'll need to use the base event\n // object (2018/14/6)\n if (!IS_IE && event.nativeEvent) {\n event = event.nativeEvent;\n }\n\n var transfer = event.dataTransfer || event.clipboardData;\n var fragment = getType(transfer, FRAGMENT$1);\n var node = getType(transfer, NODE);\n var html = getType(transfer, HTML$1);\n var rich = getType(transfer, RICH);\n var text = getType(transfer, TEXT$1);\n var files = void 0;\n\n // If there isn't a fragment, but there is HTML, check to see if the HTML is\n // actually an encoded fragment.\n if (!fragment && html && ~html.indexOf(' data-slate-fragment=\"')) {\n var matches = FRAGMENT_MATCHER.exec(html);\n\n var _matches = slicedToArray(matches, 2),\n full = _matches[0],\n encoded = _matches[1]; // eslint-disable-line no-unused-vars\n\n\n if (encoded) fragment = encoded;\n }\n\n // COMPAT: Edge doesn't handle custom data types\n // These will be embedded in text/plain in this case (2017/7/12)\n if (text) {\n var embeddedTypes = getEmbeddedTypes(text);\n\n if (embeddedTypes[FRAGMENT$1]) fragment = embeddedTypes[FRAGMENT$1];\n if (embeddedTypes[NODE]) node = embeddedTypes[NODE];\n if (embeddedTypes[TEXT$1]) text = embeddedTypes[TEXT$1];\n }\n\n // Decode a fragment or node if they exist.\n if (fragment) fragment = Base64.deserializeNode(fragment);\n if (node) node = Base64.deserializeNode(node);\n\n // COMPAT: Edge sometimes throws 'NotSupportedError'\n // when accessing `transfer.items` (2017/7/12)\n try {\n // Get and normalize files if they exist.\n if (transfer.items && transfer.items.length) {\n files = Array.from(transfer.items).map(function (item) {\n return item.kind == 'file' ? item.getAsFile() : null;\n }).filter(function (exists) {\n return exists;\n });\n } else if (transfer.files && transfer.files.length) {\n files = Array.from(transfer.files);\n }\n } catch (err) {\n if (transfer.files && transfer.files.length) {\n files = Array.from(transfer.files);\n }\n }\n\n // Determine the type of the data.\n var data = { files: files, fragment: fragment, html: html, node: node, rich: rich, text: text };\n data.type = getTransferType(data);\n return data;\n}\n\n/**\n * Takes text input, checks whether contains embedded data\n * and returns object with original text +/- additional data\n *\n * @param {String} text\n * @return {Object}\n */\n\nfunction getEmbeddedTypes(text) {\n var prefix = 'SLATE-DATA-EMBED::';\n\n if (text.substring(0, prefix.length) != prefix) {\n return { TEXT: text };\n }\n\n // Attempt to parse, if fails then just standard text/plain\n // Otherwise, already had data embedded\n try {\n return JSON.parse(text.substring(prefix.length));\n } catch (err) {\n throw new Error('Unable to parse custom Slate drag event data.');\n }\n}\n\n/**\n * Get the type of a transfer from its `data`.\n *\n * @param {Object} data\n * @return {String}\n */\n\nfunction getTransferType(data) {\n if (data.fragment) return 'fragment';\n if (data.node) return 'node';\n\n // COMPAT: Microsoft Word adds an image of the selected text to the data.\n // Since files are preferred over HTML or text, this would cause the type to\n // be considered `files`. But it also adds rich text data so we can check\n // for that and properly set the type to `html` or `text`. (2016/11/21)\n if (data.rich && data.html) return 'html';\n if (data.rich && data.text) return 'text';\n\n if (data.files && data.files.length) return 'files';\n if (data.html) return 'html';\n if (data.text) return 'text';\n return 'unknown';\n}\n\n/**\n * Get one of types `TYPES.FRAGMENT`, `TYPES.NODE`, `text/html`, `text/rtf` or\n * `text/plain` from transfers's `data` if possible, otherwise return null.\n *\n * @param {Object} transfer\n * @param {String} type\n * @return {String}\n */\n\nfunction getType(transfer, type) {\n if (!transfer.types || !transfer.types.length) {\n // COMPAT: In IE 11, there is no `types` field but `getData('Text')`\n // is supported`. (2017/06/23)\n return type == TEXT$1 ? transfer.getData('Text') || null : null;\n }\n\n // COMPAT: In Edge, transfer.types doesn't respond to `indexOf`. (2017/10/25)\n var types = Array.from(transfer.types);\n\n return types.indexOf(type) !== -1 ? transfer.getData(type) || null : null;\n}\n\n/**\n * The default plain text transfer type.\n *\n * @type {String}\n */\n\nvar TEXT$2 = TRANSFER_TYPES.TEXT;\n\n/**\n * Set data with `type` and `content` on an `event`.\n *\n * COMPAT: In Edge, custom types throw errors, so embed all non-standard\n * types in text/plain compound object. (2017/7/12)\n *\n * @param {Event} event\n * @param {String} type\n * @param {String} content\n */\n\nfunction setEventTransfer(event, type, content) {\n var mime = TRANSFER_TYPES[type.toUpperCase()];\n\n if (!mime) {\n throw new Error('Cannot set unknown transfer type \"' + mime + '\".');\n }\n\n if (event.nativeEvent) {\n event = event.nativeEvent;\n }\n\n var transfer = event.dataTransfer || event.clipboardData;\n\n try {\n transfer.setData(mime, content);\n // COMPAT: Safari needs to have the 'text' (and not 'text/plain') value in dataTransfer\n // to display the cursor while dragging internally.\n transfer.setData('text', transfer.getData('text'));\n } catch (err) {\n var prefix = 'SLATE-DATA-EMBED::';\n var text = transfer.getData(TEXT$2);\n var obj = {};\n\n // If the existing plain text data is prefixed, it's Slate JSON data.\n if (text.substring(0, prefix.length) === prefix) {\n try {\n obj = JSON.parse(text.substring(prefix.length));\n } catch (e) {\n throw new Error('Failed to parse Slate data from `DataTransfer` object.');\n }\n } else {\n // Otherwise, it's just set it as is.\n obj[TEXT$2] = text;\n }\n\n obj[mime] = content;\n var string = '' + prefix + JSON.stringify(obj);\n transfer.setData(TEXT$2, string);\n }\n}\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$5 = Debug('slate:after');\n\n/**\n * The after plugin.\n *\n * @return {Object}\n */\n\nfunction AfterPlugin() {\n var isDraggingInternally = null;\n\n /**\n * On before input.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onBeforeInput(event, change, editor) {\n debug$5('onBeforeInput', { event: event });\n\n var isSynthetic = !!event.nativeEvent;\n\n // If the event is synthetic, it's React's polyfill of `beforeinput` that\n // isn't a true `beforeinput` event with meaningful information. It only\n // gets triggered for character insertions, so we can just insert directly.\n if (isSynthetic) {\n event.preventDefault();\n change.insertText(event.data);\n return;\n }\n\n // Otherwise, we can use the information in the `beforeinput` event to\n // figure out the exact change that will occur, and prevent it.\n\n var _event$getTargetRange = event.getTargetRanges(),\n _event$getTargetRange2 = slicedToArray(_event$getTargetRange, 1),\n targetRange = _event$getTargetRange2[0];\n\n if (!targetRange) return;\n\n event.preventDefault();\n\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n schema = value.schema;\n\n var range = findRange(targetRange, value);\n\n switch (event.inputType) {\n case 'deleteByDrag':\n case 'deleteByCut':\n case 'deleteContent':\n case 'deleteContentBackward':\n case 'deleteContentForward':\n {\n change.deleteAtRange(range);\n return;\n }\n\n case 'deleteWordBackward':\n {\n change.deleteWordBackwardAtRange(range);\n return;\n }\n\n case 'deleteWordForward':\n {\n change.deleteWordForwardAtRange(range);\n return;\n }\n\n case 'deleteSoftLineBackward':\n case 'deleteHardLineBackward':\n {\n change.deleteLineBackwardAtRange(range);\n return;\n }\n\n case 'deleteSoftLineForward':\n case 'deleteHardLineForward':\n {\n change.deleteLineForwardAtRange(range);\n return;\n }\n\n case 'insertLineBreak':\n case 'insertParagraph':\n {\n var hasVoidParent = document.hasVoidParent(selection.start.path, schema);\n\n if (hasVoidParent) {\n change.moveToStartOfNextText();\n } else {\n change.splitBlockAtRange(range);\n }\n\n return;\n }\n\n case 'insertFromYank':\n case 'insertReplacementText':\n case 'insertText':\n {\n // COMPAT: `data` should have the text for the `insertText` input type\n // and `dataTransfer` should have the text for the\n // `insertReplacementText` input type, but Safari uses `insertText` for\n // spell check replacements and sets `data` to `null`. (2018/08/09)\n var text = event.data == null ? event.dataTransfer.getData('text/plain') : event.data;\n\n if (text == null) return;\n\n change.insertTextAtRange(range, text, selection.marks);\n\n // If the text was successfully inserted, and the selection had marks\n // on it, unset the selection's marks.\n if (selection.marks && value.document != change.value.document) {\n change.select({ marks: null });\n }\n\n return;\n }\n }\n }\n\n /**\n * On blur.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onBlur(event, change, editor) {\n debug$5('onBlur', { event: event });\n\n change.blur();\n }\n\n /**\n * On click.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onClick(event, change, editor) {\n if (editor.props.readOnly) {\n return true;\n }\n\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n\n var node = findNode(event.target, value);\n\n if (!node) {\n return;\n }\n\n var ancestors = document.getAncestors(node.key);\n var isVoid = node && (schema.isVoid(node) || ancestors.some(function (a) {\n return schema.isVoid(a);\n }));\n\n if (isVoid) {\n // COMPAT: In Chrome & Safari, selections that are at the zero offset of\n // an inline node will be automatically replaced to be at the last offset\n // of a previous inline node, which screws us up, so we always want to set\n // it to the end of the node. (2016/11/29)\n change.focus().moveToEndOfNode(node);\n }\n\n debug$5('onClick', { event: event });\n }\n\n /**\n * On copy.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onCopy(event, change, editor) {\n debug$5('onCopy', { event: event });\n\n cloneFragment(event, change.value);\n }\n\n /**\n * On cut.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onCut(event, change, editor) {\n debug$5('onCut', { event: event });\n\n // Once the fake cut content has successfully been added to the clipboard,\n // delete the content in the current selection.\n cloneFragment(event, change.value, change.value.fragment, function () {\n // If user cuts a void block node or a void inline node,\n // manually removes it since selection is collapsed in this case.\n var value = change.value;\n var endBlock = value.endBlock,\n endInline = value.endInline,\n selection = value.selection,\n schema = value.schema;\n var isCollapsed = selection.isCollapsed;\n\n var isVoidBlock = endBlock && schema.isVoid(endBlock) && isCollapsed;\n var isVoidInline = endInline && schema.isVoid(endInline) && isCollapsed;\n\n if (isVoidBlock) {\n editor.change(function (c) {\n return c.removeNodeByKey(endBlock.key);\n });\n } else if (isVoidInline) {\n editor.change(function (c) {\n return c.removeNodeByKey(endInline.key);\n });\n } else {\n editor.change(function (c) {\n return c.delete();\n });\n }\n });\n }\n\n /**\n * On drag end.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragEnd(event, change, editor) {\n debug$5('onDragEnd', { event: event });\n\n isDraggingInternally = null;\n }\n\n /**\n * On drag over.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragOver(event, change, editor) {\n debug$5('onDragOver', { event: event });\n }\n\n /**\n * On drag start.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragStart(event, change, editor) {\n debug$5('onDragStart', { event: event });\n\n isDraggingInternally = true;\n\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n\n var node = findNode(event.target, value);\n var ancestors = document.getAncestors(node.key);\n var isVoid = node && (schema.isVoid(node) || ancestors.some(function (a) {\n return schema.isVoid(a);\n }));\n var selectionIncludesNode = value.blocks.some(function (block) {\n return block.key === node.key;\n });\n\n // If a void block is dragged and is not selected, select it (necessary for local drags).\n if (isVoid && !selectionIncludesNode) {\n change.moveToRangeOfNode(node);\n }\n\n var fragment = change.value.fragment;\n var encoded = Base64.serializeNode(fragment);\n setEventTransfer(event, 'fragment', encoded);\n }\n\n /**\n * On drop.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDrop(event, change, editor) {\n debug$5('onDrop', { event: event });\n\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n schema = value.schema;\n\n var window = getWindow(event.target);\n var target = getEventRange(event, value);\n if (!target) return;\n\n var transfer = getEventTransfer(event);\n var type = transfer.type,\n fragment = transfer.fragment,\n text = transfer.text;\n\n\n change.focus();\n\n // If the drag is internal and the target is after the selection, it\n // needs to account for the selection's content being deleted.\n if (isDraggingInternally && selection.end.key == target.end.key && selection.end.offset < target.end.offset) {\n target = target.moveForward(selection.start.key == selection.end.key ? 0 - selection.end.offset + selection.start.offset : 0 - selection.end.offset);\n }\n\n if (isDraggingInternally) {\n change.delete();\n }\n\n change.select(target);\n\n if (type == 'text' || type == 'html') {\n var _target = target,\n anchor = _target.anchor;\n\n var hasVoidParent = document.hasVoidParent(anchor.key, schema);\n\n if (hasVoidParent) {\n var n = document.getNode(anchor.key);\n\n while (hasVoidParent) {\n n = document.getNextText(n.key);\n if (!n) break;\n hasVoidParent = document.hasVoidParent(n.key, schema);\n }\n\n if (n) change.moveToStartOfNode(n);\n }\n\n if (text) {\n text.split('\\n').forEach(function (line, i) {\n if (i > 0) change.splitBlock();\n change.insertText(line);\n });\n }\n }\n\n if (type == 'fragment') {\n change.insertFragment(fragment);\n }\n\n // COMPAT: React's onSelect event breaks after an onDrop event\n // has fired in a node: https://github.com/facebook/react/issues/11379.\n // Until this is fixed in React, we dispatch a mouseup event on that\n // DOM node, since that will make it go back to normal.\n var focusNode = document.getNode(target.focus.key);\n var el = findDOMNode$1(focusNode, window);\n if (!el) return;\n\n el.dispatchEvent(new MouseEvent('mouseup', {\n view: window,\n bubbles: true,\n cancelable: true\n }));\n }\n\n /**\n * On input.\n *\n * @param {Event} eventvent\n * @param {Change} change\n */\n\n function onInput(event, change, editor) {\n debug$5('onInput', { event: event });\n\n var window = getWindow(event.target);\n var value = change.value;\n\n // Get the selection point.\n\n var native = window.getSelection();\n var anchorNode = native.anchorNode;\n\n var point = findPoint(anchorNode, 0, value);\n if (!point) return;\n\n // Get the text node and leaf in question.\n var document = value.document,\n selection = value.selection;\n\n var node = document.getDescendant(point.key);\n var block = document.getClosestBlock(node.key);\n var leaves = node.getLeaves();\n var lastText = block.getLastText();\n var lastLeaf = leaves.last();\n var start = 0;\n var end = 0;\n\n var leaf = leaves.find(function (r) {\n start = end;\n end += r.text.length;\n if (end > point.offset) return true;\n }) || lastLeaf;\n\n // Get the text information.\n var text = leaf.text;\n var textContent = anchorNode.textContent;\n\n var isLastText = node == lastText;\n var isLastLeaf = leaf == lastLeaf;\n var lastChar = textContent.charAt(textContent.length - 1);\n\n // COMPAT: If this is the last leaf, and the DOM text ends in a new line,\n // we will have added another new line in <Leaf>'s render method to account\n // for browsers collapsing a single trailing new lines, so remove it.\n if (isLastText && isLastLeaf && lastChar == '\\n') {\n textContent = textContent.slice(0, -1);\n }\n\n // If the text is no different, abort.\n if (textContent == text) return;\n\n // Determine what the selection should be after changing the text.\n var delta = textContent.length - text.length;\n var corrected = selection.moveToEnd().moveForward(delta);\n var entire = selection.moveAnchorTo(point.key, start).moveFocusTo(point.key, end);\n\n entire = document.resolveRange(entire);\n\n // Change the current value to have the leaf's text replaced.\n change.insertTextAtRange(entire, textContent, leaf.marks).select(corrected);\n }\n\n /**\n * On key down.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onKeyDown(event, change, editor) {\n debug$5('onKeyDown', { event: event });\n\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n schema = value.schema;\n\n var hasVoidParent = document.hasVoidParent(selection.start.path, schema);\n\n // COMPAT: In iOS, some of these hotkeys are handled in the\n // `onNativeBeforeInput` handler of the `<Content>` component in order to\n // preserve native autocorrect behavior, so they shouldn't be handled here.\n if (Hotkeys.isSplitBlock(event) && !IS_IOS) {\n return hasVoidParent ? change.moveToStartOfNextText() : change.splitBlock();\n }\n\n if (Hotkeys.isDeleteBackward(event) && !IS_IOS) {\n return change.deleteCharBackward();\n }\n\n if (Hotkeys.isDeleteForward(event) && !IS_IOS) {\n return change.deleteCharForward();\n }\n\n if (Hotkeys.isDeleteLineBackward(event)) {\n return change.deleteLineBackward();\n }\n\n if (Hotkeys.isDeleteLineForward(event)) {\n return change.deleteLineForward();\n }\n\n if (Hotkeys.isDeleteWordBackward(event)) {\n return change.deleteWordBackward();\n }\n\n if (Hotkeys.isDeleteWordForward(event)) {\n return change.deleteWordForward();\n }\n\n if (Hotkeys.isRedo(event)) {\n return change.redo();\n }\n\n if (Hotkeys.isUndo(event)) {\n return change.undo();\n }\n\n // COMPAT: Certain browsers don't handle the selection updates properly. In\n // Chrome, the selection isn't properly extended. And in Firefox, the\n // selection isn't properly collapsed. (2017/10/17)\n if (Hotkeys.isMoveLineBackward(event)) {\n event.preventDefault();\n return change.moveToStartOfBlock();\n }\n\n if (Hotkeys.isMoveLineForward(event)) {\n event.preventDefault();\n return change.moveToEndOfBlock();\n }\n\n if (Hotkeys.isExtendLineBackward(event)) {\n event.preventDefault();\n return change.moveFocusToStartOfBlock();\n }\n\n if (Hotkeys.isExtendLineForward(event)) {\n event.preventDefault();\n return change.moveFocusToEndOfBlock();\n }\n\n // COMPAT: If a void node is selected, or a zero-width text node adjacent to\n // an inline is selected, we need to handle these hotkeys manually because\n // browsers won't know what to do.\n if (Hotkeys.isMoveBackward(event)) {\n var previousText = value.previousText,\n startText = value.startText;\n\n var isPreviousInVoid = previousText && document.hasVoidParent(previousText.key, schema);\n\n if (hasVoidParent || isPreviousInVoid || startText.text == '') {\n event.preventDefault();\n return change.moveBackward();\n }\n }\n\n if (Hotkeys.isMoveForward(event)) {\n var nextText = value.nextText,\n _startText = value.startText;\n\n var isNextInVoid = nextText && document.hasVoidParent(nextText.key, schema);\n\n if (hasVoidParent || isNextInVoid || _startText.text == '') {\n event.preventDefault();\n return change.moveForward();\n }\n }\n\n if (Hotkeys.isExtendBackward(event)) {\n var _previousText = value.previousText,\n _startText2 = value.startText;\n\n var _isPreviousInVoid = _previousText && document.hasVoidParent(_previousText.key, schema);\n\n if (hasVoidParent || _isPreviousInVoid || _startText2.text == '') {\n event.preventDefault();\n return change.moveFocusBackward();\n }\n }\n\n if (Hotkeys.isExtendForward(event)) {\n var _nextText = value.nextText,\n _startText3 = value.startText;\n\n var _isNextInVoid = _nextText && document.hasVoidParent(_nextText.key, schema);\n\n if (hasVoidParent || _isNextInVoid || _startText3.text == '') {\n event.preventDefault();\n return change.moveFocusForward();\n }\n }\n }\n\n /**\n * On paste.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onPaste(event, change, editor) {\n debug$5('onPaste', { event: event });\n\n var transfer = getEventTransfer(event);\n var type = transfer.type,\n fragment = transfer.fragment,\n text = transfer.text;\n\n\n if (type == 'fragment') {\n change.insertFragment(fragment);\n }\n\n if (type == 'text' || type == 'html') {\n if (!text) return;\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n startBlock = value.startBlock,\n schema = value.schema;\n\n if (schema.isVoid(startBlock)) return;\n\n var defaultBlock = startBlock;\n var defaultMarks = document.getInsertMarksAtRange(selection);\n var frag = Plain.deserialize(text, { defaultBlock: defaultBlock, defaultMarks: defaultMarks }).document;\n change.insertFragment(frag);\n }\n }\n\n /**\n * On select.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onSelect(event, change, editor) {\n debug$5('onSelect', { event: event });\n\n var window = getWindow(event.target);\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n\n var native = window.getSelection();\n\n // If there are no ranges, the editor was blurred natively.\n if (!native.rangeCount) {\n change.blur();\n return;\n }\n\n // Otherwise, determine the Slate selection from the native one.\n var range = findRange(native, value);\n if (!range) return;\n\n var _range = range,\n anchor = _range.anchor,\n focus = _range.focus;\n\n var anchorText = document.getNode(anchor.key);\n var focusText = document.getNode(focus.key);\n var anchorInline = document.getClosestInline(anchor.key);\n var focusInline = document.getClosestInline(focus.key);\n var focusBlock = document.getClosestBlock(focus.key);\n var anchorBlock = document.getClosestBlock(anchor.key);\n\n // COMPAT: If the anchor point is at the start of a non-void, and the\n // focus point is inside a void node with an offset that isn't `0`, set\n // the focus offset to `0`. This is due to void nodes <span>'s being\n // positioned off screen, resulting in the offset always being greater\n // than `0`. Since we can't know what it really should be, and since an\n // offset of `0` is less destructive because it creates a hanging\n // selection, go with `0`. (2017/09/07)\n if (anchorBlock && !schema.isVoid(anchorBlock) && anchor.offset == 0 && focusBlock && schema.isVoid(focusBlock) && focus.offset != 0) {\n range = range.setFocus(focus.setOffset(0));\n }\n\n // COMPAT: If the selection is at the end of a non-void inline node, and\n // there is a node after it, put it in the node after instead. This\n // standardizes the behavior, since it's indistinguishable to the user.\n if (anchorInline && !schema.isVoid(anchorInline) && anchor.offset == anchorText.text.length) {\n var block = document.getClosestBlock(anchor.key);\n var next = block.getNextText(anchor.key);\n if (next) range = range.moveAnchorTo(next.key, 0);\n }\n\n if (focusInline && !schema.isVoid(focusInline) && focus.offset == focusText.text.length) {\n var _block = document.getClosestBlock(focus.key);\n var _next = _block.getNextText(focus.key);\n if (_next) range = range.moveFocusTo(_next.key, 0);\n }\n\n var selection = document.createSelection(range);\n selection = selection.setIsFocused(true);\n\n // Preserve active marks from the current selection.\n // They will be cleared by `change.select` if the selection actually moved.\n selection = selection.set('marks', value.selection.marks);\n\n change.select(selection);\n }\n\n /**\n * Render editor.\n *\n * @param {Object} props\n * @param {Editor} editor\n * @return {Object}\n */\n\n function renderEditor(props, editor) {\n var handlers = editor.handlers;\n\n return React.createElement(Content, _extends({}, handlers, {\n autoCorrect: props.autoCorrect,\n className: props.className,\n editor: editor,\n readOnly: props.readOnly,\n role: props.role,\n spellCheck: props.spellCheck,\n style: props.style,\n tabIndex: props.tabIndex,\n tagName: props.tagName\n }));\n }\n\n /**\n * Render node.\n *\n * @param {Object} props\n * @return {Element}\n */\n\n function renderNode(props) {\n var attributes = props.attributes,\n children = props.children,\n node = props.node;\n\n if (node.object != 'block' && node.object != 'inline') return;\n var Tag = node.object == 'block' ? 'div' : 'span';\n var style = { position: 'relative' };\n return React.createElement(\n Tag,\n _extends({}, attributes, { style: style }),\n children\n );\n }\n\n /**\n * Render placeholder.\n *\n * @param {Object} props\n * @return {Element}\n */\n\n function renderPlaceholder(props) {\n var editor = props.editor,\n node = props.node;\n\n if (!editor.props.placeholder) return;\n if (editor.state.isComposing) return;\n if (node.object != 'block') return;\n if (!Text.isTextList(node.nodes)) return;\n if (node.text != '') return;\n if (editor.value.document.getBlocks().size > 1) return;\n\n var style = {\n pointerEvents: 'none',\n display: 'inline-block',\n width: '0',\n maxWidth: '100%',\n whiteSpace: 'nowrap',\n opacity: '0.333'\n };\n\n return React.createElement(\n 'span',\n { contentEditable: false, style: style },\n editor.props.placeholder\n );\n }\n\n /**\n * Return the plugin.\n *\n * @type {Object}\n */\n\n return {\n onBeforeInput: onBeforeInput,\n onBlur: onBlur,\n onClick: onClick,\n onCopy: onCopy,\n onCut: onCut,\n onDragEnd: onDragEnd,\n onDragOver: onDragOver,\n onDragStart: onDragStart,\n onDrop: onDrop,\n onInput: onInput,\n onKeyDown: onKeyDown,\n onPaste: onPaste,\n onSelect: onSelect,\n renderEditor: renderEditor,\n renderNode: renderNode,\n renderPlaceholder: renderPlaceholder\n };\n}\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$6 = Debug('slate:before');\n\n/**\n * The core before plugin.\n *\n * @return {Object}\n */\n\nfunction BeforePlugin() {\n var activeElement = null;\n var compositionCount = 0;\n var isComposing = false;\n var isCopying = false;\n var isDragging = false;\n\n /**\n * On before input.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onBeforeInput(event, change, editor) {\n if (editor.props.readOnly) return true;\n\n var isSynthetic = !!event.nativeEvent;\n\n // COMPAT: If the browser supports Input Events Level 2, we will have\n // attached a custom handler for the real `beforeinput` events, instead of\n // allowing React's synthetic polyfill, so we need to ignore synthetics.\n if (isSynthetic && HAS_INPUT_EVENTS_LEVEL_2) return true;\n\n debug$6('onBeforeInput', { event: event });\n }\n\n /**\n * On blur.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onBlur(event, change, editor) {\n if (isCopying) return true;\n if (editor.props.readOnly) return true;\n\n var value = change.value;\n var schema = value.schema;\n var relatedTarget = event.relatedTarget,\n target = event.target;\n\n var window = getWindow(target);\n\n // COMPAT: If the current `activeElement` is still the previous one, this is\n // due to the window being blurred when the tab itself becomes unfocused, so\n // we want to abort early to allow to editor to stay focused when the tab\n // becomes focused again.\n if (activeElement == window.document.activeElement) return true;\n\n // COMPAT: The `relatedTarget` can be null when the new focus target is not\n // a \"focusable\" element (eg. a `<div>` without `tabindex` set).\n if (relatedTarget) {\n var el = findDOMNode(editor);\n\n // COMPAT: The event should be ignored if the focus is returning to the\n // editor from an embedded editable element (eg. an <input> element inside\n // a void node).\n if (relatedTarget == el) return true;\n\n // COMPAT: The event should be ignored if the focus is moving from the\n // editor to inside a void node's spacer element.\n if (relatedTarget.hasAttribute('data-slate-spacer')) return true;\n\n // COMPAT: The event should be ignored if the focus is moving to a non-\n // editable section of an element that isn't a void node (eg. a list item\n // of the check list example).\n var node = findNode(relatedTarget, value);\n if (el.contains(relatedTarget) && node && !schema.isVoid(node)) return true;\n }\n\n debug$6('onBlur', { event: event });\n }\n\n /**\n * On change.\n *\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onChange(change, editor) {\n var value = change.value;\n\n // If the value's schema isn't the editor's schema, update it. This can\n // happen on the initialization of the editor, or if the schema changes.\n // This change isn't save into history since only schema is updated.\n\n if (value.schema != editor.schema) {\n change.withoutSaving(function () {\n change.setValue({ schema: editor.schema }).normalize();\n });\n }\n\n debug$6('onChange');\n }\n\n /**\n * On composition end.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onCompositionEnd(event, change, editor) {\n var n = compositionCount;\n\n // The `count` check here ensures that if another composition starts\n // before the timeout has closed out this one, we will abort unsetting the\n // `isComposing` flag, since a composition is still in affect.\n window.requestAnimationFrame(function () {\n if (compositionCount > n) return;\n isComposing = false;\n\n // HACK: we need to re-render the editor here so that it will update its\n // placeholder in case one is currently rendered. This should be handled\n // differently ideally, in a less invasive way?\n // (apply force re-render if isComposing changes)\n if (editor.state.isComposing) {\n editor.setState({ isComposing: false });\n }\n });\n\n debug$6('onCompositionEnd', { event: event });\n }\n\n /**\n * On composition start.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onCompositionStart(event, change, editor) {\n isComposing = true;\n compositionCount++;\n\n // HACK: we need to re-render the editor here so that it will update its\n // placeholder in case one is currently rendered. This should be handled\n // differently ideally, in a less invasive way?\n // (apply force re-render if isComposing changes)\n if (!editor.state.isComposing) {\n editor.setState({ isComposing: true });\n }\n\n debug$6('onCompositionStart', { event: event });\n }\n\n /**\n * On copy.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onCopy(event, change, editor) {\n var window = getWindow(event.target);\n isCopying = true;\n window.requestAnimationFrame(function () {\n return isCopying = false;\n });\n\n debug$6('onCopy', { event: event });\n }\n\n /**\n * On cut.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onCut(event, change, editor) {\n if (editor.props.readOnly) return true;\n\n var window = getWindow(event.target);\n isCopying = true;\n window.requestAnimationFrame(function () {\n return isCopying = false;\n });\n\n debug$6('onCut', { event: event });\n }\n\n /**\n * On drag end.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragEnd(event, change, editor) {\n isDragging = false;\n\n debug$6('onDragEnd', { event: event });\n }\n\n /**\n * On drag enter.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragEnter(event, change, editor) {\n debug$6('onDragEnter', { event: event });\n }\n\n /**\n * On drag exit.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragExit(event, change, editor) {\n debug$6('onDragExit', { event: event });\n }\n\n /**\n * On drag leave.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragLeave(event, change, editor) {\n debug$6('onDragLeave', { event: event });\n }\n\n /**\n * On drag over.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragOver(event, change, editor) {\n // If the target is inside a void node, and only in this case,\n // call `preventDefault` to signal that drops are allowed.\n // When the target is editable, dropping is already allowed by\n // default, and calling `preventDefault` hides the cursor.\n var value = editor.value;\n var schema = value.schema;\n\n var node = findNode(event.target, editor.value);\n if (schema.isVoid(node)) event.preventDefault();\n\n // COMPAT: IE won't call onDrop on contentEditables unless the\n // default dragOver is prevented:\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/913982/\n // (2018/07/11)\n if (IS_IE) event.preventDefault();\n\n // If a drag is already in progress, don't do this again.\n if (!isDragging) {\n isDragging = true;\n\n // COMPAT: IE will raise an `unspecified error` if dropEffect is\n // set. (2018/07/11)\n if (!IS_IE) {\n event.nativeEvent.dataTransfer.dropEffect = 'move';\n }\n }\n\n debug$6('onDragOver', { event: event });\n }\n\n /**\n * On drag start.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragStart(event, change, editor) {\n isDragging = true;\n\n debug$6('onDragStart', { event: event });\n }\n\n /**\n * On drop.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDrop(event, change, editor) {\n // Nothing happens in read-only mode.\n if (editor.props.readOnly) return true;\n\n // Prevent default so the DOM's value isn't corrupted.\n event.preventDefault();\n\n debug$6('onDrop', { event: event });\n }\n\n /**\n * On focus.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onFocus(event, change, editor) {\n if (isCopying) return true;\n if (editor.props.readOnly) return true;\n\n var el = findDOMNode(editor);\n\n // Save the new `activeElement`.\n var window = getWindow(event.target);\n activeElement = window.document.activeElement;\n\n // COMPAT: If the editor has nested editable elements, the focus can go to\n // those elements. In Firefox, this must be prevented because it results in\n // issues with keyboard navigation. (2017/03/30)\n if (IS_FIREFOX && event.target != el) {\n el.focus();\n return true;\n }\n\n debug$6('onFocus', { event: event });\n }\n\n /**\n * On input.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onInput(event, change, editor) {\n if (isComposing) return true;\n if (change.value.selection.isBlurred) return true;\n\n debug$6('onInput', { event: event });\n }\n\n /**\n * On key down.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onKeyDown(event, change, editor) {\n if (editor.props.readOnly) return true;\n\n // When composing, we need to prevent all hotkeys from executing while\n // typing. However, certain characters also move the selection before\n // we're able to handle it, so prevent their default behavior.\n if (isComposing) {\n if (Hotkeys.isCompose(event)) event.preventDefault();\n return true;\n }\n\n // Certain hotkeys have native editing behaviors in `contenteditable`\n // elements which will change the DOM and cause our value to be out of sync,\n // so they need to always be prevented.\n if (!IS_IOS && (Hotkeys.isBold(event) || Hotkeys.isDeleteBackward(event) || Hotkeys.isDeleteForward(event) || Hotkeys.isDeleteLineBackward(event) || Hotkeys.isDeleteLineForward(event) || Hotkeys.isDeleteWordBackward(event) || Hotkeys.isDeleteWordForward(event) || Hotkeys.isItalic(event) || Hotkeys.isRedo(event) || Hotkeys.isSplitBlock(event) || Hotkeys.isTransposeCharacter(event) || Hotkeys.isUndo(event))) {\n event.preventDefault();\n }\n\n debug$6('onKeyDown', { event: event });\n }\n\n /**\n * On paste.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onPaste(event, change, editor) {\n if (editor.props.readOnly) return true;\n\n // Prevent defaults so the DOM state isn't corrupted.\n event.preventDefault();\n\n debug$6('onPaste', { event: event });\n }\n\n /**\n * On select.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onSelect(event, change, editor) {\n if (isCopying) return true;\n if (isComposing) return true;\n if (editor.props.readOnly) return true;\n\n // Save the new `activeElement`.\n var window = getWindow(event.target);\n activeElement = window.document.activeElement;\n\n debug$6('onSelect', { event: event });\n }\n\n /**\n * Return the plugin.\n *\n * @type {Object}\n */\n\n return {\n onBeforeInput: onBeforeInput,\n onBlur: onBlur,\n onChange: onChange,\n onCompositionEnd: onCompositionEnd,\n onCompositionStart: onCompositionStart,\n onCopy: onCopy,\n onCut: onCut,\n onDragEnd: onDragEnd,\n onDragEnter: onDragEnter,\n onDragExit: onDragExit,\n onDragLeave: onDragLeave,\n onDragOver: onDragOver,\n onDragStart: onDragStart,\n onDrop: onDrop,\n onFocus: onFocus,\n onInput: onInput,\n onKeyDown: onKeyDown,\n onPaste: onPaste,\n onSelect: onSelect\n };\n}\n\n/**\n * Noop.\n *\n * @return {Void}\n */\n\nfunction noop() {}\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$7 = Debug('slate:editor');\n\n/**\n * Editor.\n *\n * @type {Component}\n */\n\nvar Editor = function (_React$Component) {\n inherits(Editor, _React$Component);\n\n function Editor() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Editor);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Editor.__proto__ || Object.getPrototypeOf(Editor)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps$4.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Default properties.\n *\n * @type {Object}\n */\n\n /**\n * Initial state.\n *\n * @type {Object}\n */\n\n /**\n * Temporary values.\n *\n * @type {Object}\n */\n\n /**\n * Create a set of bound event handlers.\n *\n * @type {Object}\n */\n\n createClass(Editor, [{\n key: 'componentDidMount',\n\n\n /**\n * When the component first mounts, flush any temporary changes, and then,\n * focus the editor if `autoFocus` is set.\n */\n\n value: function componentDidMount() {\n this.tmp.updates++;\n\n var autoFocus = this.props.autoFocus;\n var change = this.tmp.change;\n\n\n if (autoFocus) {\n if (change) {\n change.focus();\n } else {\n this.focus();\n }\n }\n\n if (change) {\n this.onChange(change);\n }\n }\n\n /**\n * When the component updates, flush any temporary change.\n */\n\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n this.tmp.updates++;\n\n var _tmp = this.tmp,\n change = _tmp.change,\n resolves = _tmp.resolves,\n updates = _tmp.updates;\n\n // If we've resolved a few times already, and it's exactly in line with\n // the updates, then warn the user that they may be doing something wrong.\n\n warning(resolves < 5 || resolves !== updates, 'A Slate <Editor> component is re-resolving `props.plugins` or `props.schema` on each update, which leads to poor performance. This is often due to passing in a new `schema` or `plugins` prop with each render by declaring them inline in your render function. Do not do this!');\n\n if (change) {\n this.onChange(change);\n }\n }\n\n /**\n * Render the editor.\n *\n * @return {Element}\n */\n\n }, {\n key: 'render',\n value: function render() {\n debug$7('render', this);\n var props = _extends({}, this.props);\n var tree = this.stack.render('renderEditor', props, this);\n return tree;\n }\n\n /**\n * Get the editor's current plugins.\n *\n * @return {Array}\n */\n\n }, {\n key: 'plugins',\n get: function get$$1() {\n var plugins = this.resolvePlugins(this.props.plugins, this.props.schema);\n return plugins;\n }\n\n /**\n * Get the editor's current schema.\n *\n * @return {Schema}\n */\n\n }, {\n key: 'schema',\n get: function get$$1() {\n var schema = this.resolveSchema(this.plugins);\n return schema;\n }\n\n /**\n * Get the editor's current stack.\n *\n * @return {Stack}\n */\n\n }, {\n key: 'stack',\n get: function get$$1() {\n var stack = this.resolveStack(this.plugins);\n return stack;\n }\n\n /**\n * Get the editor's current value.\n *\n * @return {Value}\n */\n\n }, {\n key: 'value',\n get: function get$$1() {\n // If the current `plugins` and `value` are the same as the last seen ones\n // that were saved in `tmp`, don't re-resolve because that will trigger\n // extra `onChange` runs.\n if (this.plugins === this.tmp.plugins && this.props.value === this.tmp.value) {\n return this.tmp.value;\n }\n\n var value = this.resolveValue(this.plugins, this.props.value);\n return value;\n }\n\n /**\n * Perform a change on the editor, passing `...args` to `change.call`.\n *\n * @param {Mixed} ...args\n */\n\n /**\n * Programmatically blur the editor.\n */\n\n /**\n * Programmatically focus the editor.\n */\n\n /**\n * On change.\n *\n * @param {Change} change\n */\n\n /**\n * On event.\n *\n * @param {String} handler\n * @param {Event} event\n */\n\n /**\n * Resolve a change from the current `plugins`, a potential `change` and its\n * current operations `size`.\n *\n * @param {Array} plugins\n * @param {Change} change\n * @param {Number} size\n */\n\n /**\n * Resolve a set of plugins from potential `plugins` and a `schema`.\n *\n * In addition to the plugins provided in props, this will initialize three\n * other plugins:\n *\n * - The top-level editor plugin, which allows for top-level handlers, etc.\n * - The two \"core\" plugins, one before all the other and one after.\n *\n * @param {Array|Void} plugins\n * @param {Schema|Object|Void} schema\n * @return {Array}\n */\n\n /**\n * Resolve a schema from the current `plugins`.\n *\n * @param {Array} plugins\n * @return {Schema}\n */\n\n /**\n * Resolve a stack from the current `plugins`.\n *\n * @param {Array} plugins\n * @return {Stack}\n */\n\n /**\n * Resolve a value from the current `plugins` and a potential `value`.\n *\n * @param {Array} plugins\n * @param {Value} value\n * @return {Change}\n */\n\n }]);\n return Editor;\n}(React.Component);\n\n/**\n * Mix in the prop types for the event handlers.\n */\n\nEditor.propTypes = {\n autoCorrect: Types.bool,\n autoFocus: Types.bool,\n className: Types.string,\n onChange: Types.func,\n placeholder: Types.any,\n plugins: Types.array,\n readOnly: Types.bool,\n role: Types.string,\n schema: Types.object,\n spellCheck: Types.bool,\n style: Types.object,\n tabIndex: Types.number,\n value: SlateTypes.value.isRequired };\nEditor.defaultProps = {\n autoFocus: false,\n autoCorrect: true,\n onChange: noop,\n plugins: [],\n readOnly: false,\n schema: {},\n spellCheck: true };\n\nvar _initialiseProps$4 = function _initialiseProps() {\n var _this2 = this;\n\n this.state = {};\n this.tmp = {\n change: null,\n isChanging: false,\n operationsSize: null,\n plugins: null,\n resolves: 0,\n updates: 0,\n value: null };\n this.handlers = EVENT_HANDLERS.reduce(function (obj, handler) {\n obj[handler] = function (event) {\n return _this2.onEvent(handler, event);\n };\n return obj;\n }, {});\n\n this.change = function () {\n if (_this2.tmp.isChanging) {\n warning(false, \"The `editor.change` method was called from within an existing `editor.change` callback. This is not allowed, and often due to calling `editor.change` directly from a plugin's event handler which is unnecessary.\");\n\n return;\n }\n\n var change = _this2.value.change();\n\n try {\n _this2.tmp.isChanging = true;\n change.call.apply(change, arguments);\n } catch (error) {\n throw error;\n } finally {\n _this2.tmp.isChanging = false;\n }\n\n _this2.onChange(change);\n };\n\n this.blur = function () {\n _this2.change(function (c) {\n return c.blur();\n });\n };\n\n this.focus = function () {\n _this2.change(function (c) {\n return c.focus();\n });\n };\n\n this.onChange = function (change) {\n // If the change doesn't define any operations to apply, abort.\n if (change.operations.size === 0) {\n return;\n }\n\n debug$7('onChange', { change: change });\n change = _this2.resolveChange(_this2.plugins, change, change.operations.size);\n\n // Store a reference to the last `value` and `plugins` that were seen by the\n // editor, so we can know whether to normalize a new unknown value if one\n // is passed in via `this.props`.\n _this2.tmp.value = change.value;\n _this2.tmp.plugins = _this2.plugins;\n\n // Remove the temporary `change`, since it's being flushed.\n delete _this2.tmp.change;\n delete _this2.tmp.operationsSize;\n\n _this2.props.onChange(change);\n };\n\n this.onEvent = function (handler, event) {\n _this2.change(function (change) {\n _this2.stack.run(handler, event, change, _this2);\n });\n };\n\n this.resolveChange = memoizeOne(function (plugins, change, size) {\n var stack = _this2.resolveStack(plugins);\n stack.run('onChange', change, _this2);\n return change;\n });\n this.resolvePlugins = memoizeOne(function () {\n var plugins = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n debug$7('resolvePlugins', { plugins: plugins, schema: schema });\n _this2.tmp.resolves++;\n\n var beforePlugin = BeforePlugin();\n var afterPlugin = AfterPlugin();\n var editorPlugin = { schema: schema };\n\n var _loop = function _loop(_prop) {\n // Skip `onChange` because the editor's `onChange` is special.\n if (_prop == 'onChange') return 'continue';\n\n // Skip `schema` because it can't be proxied easily, so it must be passed\n // in as an argument to this function instead.\n if (_prop == 'schema') return 'continue';\n\n // Define a function that will just proxies into `props`.\n editorPlugin[_prop] = function () {\n var _props;\n\n return _this2.props[_prop] && (_props = _this2.props)[_prop].apply(_props, arguments);\n };\n };\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = PLUGIN_PROPS[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _prop = _step2.value;\n\n var _ret2 = _loop(_prop);\n\n if (_ret2 === 'continue') continue;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return [beforePlugin, editorPlugin].concat(toConsumableArray(plugins), [afterPlugin]);\n });\n this.resolveSchema = memoizeOne(function (plugins) {\n debug$7('resolveSchema', { plugins: plugins });\n var schema = Schema.create({ plugins: plugins });\n return schema;\n });\n this.resolveStack = memoizeOne(function (plugins) {\n debug$7('resolveStack', { plugins: plugins });\n var stack = Stack.create({ plugins: plugins });\n return stack;\n });\n this.resolveValue = memoizeOne(function (plugins, value) {\n debug$7('resolveValue', { plugins: plugins, value: value });\n var change = value.change();\n change = _this2.resolveChange(plugins, change, change.operations.size);\n\n // Store the change and it's operations count so that it can be flushed once\n // the component next updates.\n _this2.tmp.change = change;\n _this2.tmp.operationsSize = change.operations.size;\n\n return change.value;\n });\n};\n\nvar _iteratorNormalCompletion = true;\nvar _didIteratorError = false;\nvar _iteratorError = undefined;\n\ntry {\n for (var _iterator = EVENT_HANDLERS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var prop = _step.value;\n\n Editor.propTypes[prop] = Types.func;\n }\n\n /**\n * Export.\n *\n * @type {Component}\n */\n} catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n} finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n}\n\nvar index = {\n Editor: Editor,\n cloneFragment: cloneFragment,\n findDOMNode: findDOMNode$1,\n findDOMRange: findDOMRange,\n findNode: findNode,\n findRange: findRange,\n getEventRange: getEventRange,\n getEventTransfer: getEventTransfer,\n setEventTransfer: setEventTransfer,\n AfterPlugin: AfterPlugin,\n BeforePlugin: BeforePlugin\n};\n\nexport default index;\nexport { Editor, cloneFragment, findDOMNode$1 as findDOMNode, findDOMRange, findNode, findRange, getEventRange, getEventTransfer, setEventTransfer, AfterPlugin, BeforePlugin };\n//# sourceMappingURL=slate-react.es.js.map\n"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/c2932262ed6106cd4535/indexeddb-worker.js b/riot/bundles/c2932262ed6106cd4535/indexeddb-worker.js new file mode 100644 index 0000000..6179def --- /dev/null +++ b/riot/bundles/c2932262ed6106cd4535/indexeddb-worker.js @@ -0,0 +1,2 @@ +!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1891)}({100:function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},114:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},115:function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},116:function(t,e,n){n(367);for(var r=n(33),o=n(59),i=n(75),a=n(39)("toStringTag"),s="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),c=0;c<s.length;c++){var u=s[c],l=r[u],f=l&&l.prototype;f&&!f[a]&&o(f,a,u),i[u]=i.Array}},118:function(t,e,n){"use strict";e.__esModule=!0;var r=i(n(399)),o=i(n(19));function i(t){return t&&t.__esModule?t:{default:t}}e.default=function(){return function(t,e){if(Array.isArray(t))return t;if((0,r.default)(Object(t)))return function(t,e){var n=[],r=!0,i=!1,a=void 0;try{for(var s,c=(0,o.default)(t);!(r=(s=c.next()).done)&&(n.push(s.value),!e||n.length!==e);r=!0);}catch(t){i=!0,a=t}finally{try{!r&&c.return&&c.return()}finally{if(i)throw a}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},121:function(t,e,n){var r=n(34);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},122:function(t,e,n){var r=n(52),o=n(272),i=n(126),a=n(124)("IE_PROTO"),s=function(){},c=function(){var t,e=n(138)("iframe"),r=i.length;for(e.style.display="none",n(273).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),c=t.F;r--;)delete c.prototype[i[r]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(s.prototype=r(t),n=new s,s.prototype=null,n[a]=t):n=c(),void 0===e?n:o(n,e)}},123:function(t,e,n){var r=n(114),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},124:function(t,e,n){var r=n(125)("keys"),o=n(100);t.exports=function(t){return r[t]||(r[t]=o(t))}},125:function(t,e,n){var r=n(18),o=n(33),i=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n(89)?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},126:function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},127:function(t,e,n){var r=n(47).f,o=n(57),i=n(39)("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},129:function(t,e){e.f={}.propertyIsEnumerable},138:function(t,e,n){var r=n(34),o=n(33).document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},139:function(t,e,n){var r=n(100)("meta"),o=n(34),i=n(57),a=n(47).f,s=0,c=Object.isExtensible||function(){return!0},u=!n(56)(function(){return c(Object.preventExtensions({}))}),l=function(t){a(t,r,{value:{i:"O"+ ++s,w:{}}})},f=t.exports={KEY:r,NEED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,r)){if(!c(t))return"F";if(!e)return"E";l(t)}return t[r].i},getWeak:function(t,e){if(!i(t,r)){if(!c(t))return!0;if(!e)return!1;l(t)}return t[r].w},onFreeze:function(t){return u&&f.NEED&&c(t)&&!i(t,r)&&l(t),t}}},14:function(t,e,n){t.exports={default:n(215),__esModule:!0}},16:function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},162:function(t,e,n){t.exports=!n(44)&&!n(56)(function(){return 7!=Object.defineProperty(n(138)("div"),"a",{get:function(){return 7}}).a})},163:function(t,e,n){var r=n(57),o=n(58),i=n(208)(!1),a=n(124)("IE_PROTO");t.exports=function(t,e){var n,s=o(t),c=0,u=[];for(n in s)n!=a&&r(s,n)&&u.push(n);for(;e.length>c;)r(s,n=e[c++])&&(~i(u,n)||u.push(n));return u}},164:function(t,e,n){var r=n(99);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},165:function(t,e,n){var r=n(99),o=n(39)("toStringTag"),i="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),o))?n:i?r(e):"Object"==(a=r(e))&&"function"==typeof e.callee?"Arguments":a}},167:function(t,e,n){e.f=n(39)},168:function(t,e,n){var r=n(33),o=n(18),i=n(89),a=n(167),s=n(47).f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||s(e,t,{value:a.f(t)})}},17:function(t,e,n){t.exports=n(211)},18:function(t,e){var n=t.exports={version:"2.5.7"};"number"==typeof __e&&(__e=n)},183:function(t,e,n){"use strict";var r=n(89),o=n(27),i=n(207),a=n(59),s=n(75),c=n(358),u=n(127),l=n(210),f=n(39)("iterator"),p=!([].keys&&"next"in[].keys()),h=function(){return this};t.exports=function(t,e,n,d,v,_,y){c(n,e,d);var m,g,b,w=function(t){if(!p&&t in O)return O[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},x=e+" Iterator",j="values"==v,k=!1,O=t.prototype,E=O[f]||O["@@iterator"]||v&&O[v],C=E||w(v),T=v?j?w("entries"):C:void 0,S="Array"==e&&O.entries||E;if(S&&(b=l(S.call(new t)))!==Object.prototype&&b.next&&(u(b,x,!0),r||"function"==typeof b[f]||a(b,f,h)),j&&E&&"values"!==E.name&&(k=!0,C=function(){return E.call(this)}),r&&!y||!p&&!k&&O[f]||a(O,f,C),s[e]=C,s[x]=h,v)if(m={values:j?C:w("values"),keys:_?C:w("keys"),entries:T},y)for(g in m)g in O||i(O,g,m[g]);else o(o.P+o.F*(p||k),e,m);return m}},184:function(t,e,n){var r=n(165),o=n(39)("iterator"),i=n(75);t.exports=n(18).getIteratorMethod=function(t){if(void 0!=t)return t[o]||t["@@iterator"]||i[r(t)]}},186:function(t,e){e.f=Object.getOwnPropertySymbols},187:function(t,e){},1891:function(t,e,n){"use strict";(function(t){var e=new(n(1892).IndexedDBStoreWorker)(postMessage);t.onmessage=e.onMessage}).call(this,n(16))},1892:function(t,e,n){"use strict";t.exports.IndexedDBStoreWorker=n(1893)},1893:function(t,e,n){"use strict";var r=c(n(51)),o=c(n(4)),i=c(n(5)),a=c(n(9)),s=c(n(402));function c(t){return t&&t.__esModule?t:{default:t}}var u=function(){function t(e){(0,o.default)(this,t),this.backend=null,this.postMessage=e,this.onMessage=this.onMessage.bind(this)}return(0,i.default)(t,[{key:"onMessage",value:function(t){var e,n,o=this,i=t.data,c=void 0;switch(i.command){case"_setupWorker":this.backend=new s.default(indexedDB,i.args[0]),c=a.default.resolve();break;case"connect":c=this.backend.connect();break;case"isNewlyCreated":c=this.backend.isNewlyCreated();break;case"clearDatabase":c=this.backend.clearDatabase().then(function(t){return{}});break;case"getSavedSync":c=this.backend.getSavedSync(!1);break;case"setSyncData":c=(e=this.backend).setSyncData.apply(e,(0,r.default)(i.args));break;case"syncToDatabase":c=(n=this.backend).syncToDatabase.apply(n,(0,r.default)(i.args)).then(function(){return{}});break;case"getUserPresenceEvents":c=this.backend.getUserPresenceEvents();break;case"getNextBatchToken":c=this.backend.getNextBatchToken();break;case"getOutOfBandMembers":c=this.backend.getOutOfBandMembers(i.args[0]);break;case"clearOutOfBandMembers":c=this.backend.clearOutOfBandMembers(i.args[0]);break;case"setOutOfBandMembers":c=this.backend.setOutOfBandMembers(i.args[0],i.args[1]);break;case"getClientOptions":c=this.backend.getClientOptions();break;case"storeClientOptions":c=this.backend.storeClientOptions(i.args[0])}void 0!==c?c.done(function(t){o.postMessage.call(null,{command:"cmd_success",seq:i.seq,result:t})},function(t){console.error("Error running command: "+i.command),console.error(t),o.postMessage.call(null,{command:"cmd_fail",seq:i.seq,error:{message:t.message,name:t.name}})}):this.postMessage({command:"cmd_fail",seq:i.seq,error:"Unrecognised command"})}}]),t}();t.exports=u},19:function(t,e,n){t.exports={default:n(397),__esModule:!0}},206:function(t,e,n){t.exports={default:n(356),__esModule:!0}},207:function(t,e,n){t.exports=n(59)},208:function(t,e,n){var r=n(58),o=n(123),i=n(209);t.exports=function(t){return function(e,n,a){var s,c=r(e),u=o(c.length),l=i(a,u);if(t&&n!=n){for(;u>l;)if((s=c[l++])!=s)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}}},209:function(t,e,n){var r=n(114),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=r(t))<0?o(t+e,0):i(t,e)}},210:function(t,e,n){var r=n(57),o=n(90),i=n(124)("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},211:function(t,e,n){var r=function(){return this}()||Function("return this")(),o=r.regeneratorRuntime&&Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime")>=0,i=o&&r.regeneratorRuntime;if(r.regeneratorRuntime=void 0,t.exports=n(212),o)r.regeneratorRuntime=i;else try{delete r.regeneratorRuntime}catch(t){r.regeneratorRuntime=void 0}},212:function(t,e){!function(e){"use strict";var n,r=Object.prototype,o=r.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag",u="object"==typeof t,l=e.regeneratorRuntime;if(l)u&&(t.exports=l);else{(l=e.regeneratorRuntime=u?t.exports:{}).wrap=b;var f="suspendedStart",p="suspendedYield",h="executing",d="completed",v={},_={};_[a]=function(){return this};var y=Object.getPrototypeOf,m=y&&y(y(P([])));m&&m!==r&&o.call(m,a)&&(_=m);var g=k.prototype=x.prototype=Object.create(_);j.prototype=g.constructor=k,k.constructor=j,k[c]=j.displayName="GeneratorFunction",l.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===j||"GeneratorFunction"===(e.displayName||e.name))},l.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,k):(t.__proto__=k,c in t||(t[c]="GeneratorFunction")),t.prototype=Object.create(g),t},l.awrap=function(t){return{__await:t}},O(E.prototype),E.prototype[s]=function(){return this},l.AsyncIterator=E,l.async=function(t,e,n,r){var o=new E(b(t,e,n,r));return l.isGeneratorFunction(e)?o:o.next().then(function(t){return t.done?t.value:o.next()})},O(g),g[c]="Generator",g[a]=function(){return this},g.toString=function(){return"[object Generator]"},l.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var r=e.pop();if(r in t)return n.value=r,n.done=!1,n}return n.done=!0,n}},l.values=P,F.prototype={constructor:F,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(S),!t)for(var e in this)"t"===e.charAt(0)&&o.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(r,o){return s.type="throw",s.arg=t,e.next=r,o&&(e.method="next",e.arg=n),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=o.call(a,"catchLoc"),u=o.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var i=r;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,v):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),v},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),S(n),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;S(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:P(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=n),v}}}function b(t,e,n,r){var o=e&&e.prototype instanceof x?e:x,i=Object.create(o.prototype),a=new F(r||[]);return i._invoke=function(t,e,n){var r=f;return function(o,i){if(r===h)throw new Error("Generator is already running");if(r===d){if("throw"===o)throw i;return R()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var s=C(a,n);if(s){if(s===v)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===f)throw r=d,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=h;var c=w(t,e,n);if("normal"===c.type){if(r=n.done?d:p,c.arg===v)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r=d,n.method="throw",n.arg=c.arg)}}}(t,n,a),i}function w(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}function x(){}function j(){}function k(){}function O(t){["next","throw","return"].forEach(function(e){t[e]=function(t){return this._invoke(e,t)}})}function E(t){var e;this._invoke=function(n,r){function i(){return new Promise(function(e,i){!function e(n,r,i,a){var s=w(t[n],t,r);if("throw"!==s.type){var c=s.arg,u=c.value;return u&&"object"==typeof u&&o.call(u,"__await")?Promise.resolve(u.__await).then(function(t){e("next",t,i,a)},function(t){e("throw",t,i,a)}):Promise.resolve(u).then(function(t){c.value=t,i(c)},a)}a(s.arg)}(n,r,e,i)})}return e=e?e.then(i,i):i()}}function C(t,e){var r=t.iterator[e.method];if(r===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=n,C(t,e),"throw"===e.method))return v;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return v}var o=w(r,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,v;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,v):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,v)}function T(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function S(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function F(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(T,this),this.reset(!0)}function P(t){if(t){var e=t[a];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,i=function e(){for(;++r<t.length;)if(o.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=n,e.done=!0,e};return i.next=i}}return{next:R}}function R(){return{value:n,done:!0}}}(function(){return this}()||Function("return this")())},213:function(t,e,n){(function(t){var r=void 0!==t&&t||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},e.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(214),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(16))},214:function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var r,o=1,i={},a=!1,s=t.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(t);c=c&&c.setTimeout?c:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick(function(){l(t)})}:function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?function(){var e="setImmediate$"+Math.random()+"$",n=function(n){n.source===t&&"string"==typeof n.data&&0===n.data.indexOf(e)&&l(+n.data.slice(e.length))};t.addEventListener?t.addEventListener("message",n,!1):t.attachEvent("onmessage",n),r=function(n){t.postMessage(e+n,"*")}}():t.MessageChannel?function(){var t=new MessageChannel;t.port1.onmessage=function(t){l(t.data)},r=function(e){t.port2.postMessage(e)}}():s&&"onreadystatechange"in s.createElement("script")?function(){var t=s.documentElement;r=function(e){var n=s.createElement("script");n.onreadystatechange=function(){l(e),n.onreadystatechange=null,t.removeChild(n),n=null},t.appendChild(n)}}():r=function(t){setTimeout(l,0,t)},c.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var a={callback:t,args:e};return i[o]=a,r(o),o++},c.clearImmediate=u}function u(t){delete i[t]}function l(t){if(a)setTimeout(l,0,t);else{var e=i[t];if(e){a=!0;try{!function(t){var e=t.callback,r=t.args;switch(r.length){case 0:e();break;case 1:e(r[0]);break;case 2:e(r[0],r[1]);break;case 3:e(r[0],r[1],r[2]);break;default:e.apply(n,r)}}(e)}finally{u(t),a=!1}}}}}("undefined"==typeof self?void 0===t?this:t:self)}).call(this,n(16),n(64))},215:function(t,e,n){n(216),t.exports=n(18).Object.keys},216:function(t,e,n){var r=n(90),o=n(76);n(68)("keys",function(){return function(t){return o(r(t))}})},217:function(t,e,n){t.exports={default:n(361),__esModule:!0}},220:function(t,e,n){var r=n(129),o=n(74),i=n(58),a=n(121),s=n(57),c=n(162),u=Object.getOwnPropertyDescriptor;e.f=n(44)?u:function(t,e){if(t=i(t),e=a(e,!0),c)try{return u(t,e)}catch(t){}if(s(t,e))return o(!r.f.call(t,e),t[e])}},221:function(t,e,n){var r=n(163),o=n(126).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},27:function(t,e,n){var r=n(33),o=n(18),i=n(67),a=n(59),s=n(57),c=function(t,e,n){var u,l,f,p=t&c.F,h=t&c.G,d=t&c.S,v=t&c.P,_=t&c.B,y=t&c.W,m=h?o:o[e]||(o[e]={}),g=m.prototype,b=h?r:d?r[e]:(r[e]||{}).prototype;for(u in h&&(n=e),n)(l=!p&&b&&void 0!==b[u])&&s(m,u)||(f=l?b[u]:n[u],m[u]=h&&"function"!=typeof b[u]?n[u]:_&&l?i(f,r):y&&b[u]==f?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(f):v&&"function"==typeof f?i(Function.call,f):f,v&&((m.virtual||(m.virtual={}))[u]=f,t&c.R&&g&&!g[u]&&a(g,u,f)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},272:function(t,e,n){var r=n(47),o=n(52),i=n(76);t.exports=n(44)?Object.defineProperties:function(t,e){o(t);for(var n,a=i(e),s=a.length,c=0;s>c;)r.f(t,n=a[c++],e[n]);return t}},273:function(t,e,n){var r=n(33).document;t.exports=r&&r.documentElement},274:function(t,e,n){var r=n(52);t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(e){var i=t.return;throw void 0!==i&&r(i.call(t)),e}}},275:function(t,e,n){var r=n(75),o=n(39)("iterator"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||i[o]===t)}},276:function(t,e,n){var r=n(39)("iterator"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i=[7],a=i[r]();a.next=function(){return{done:n=!0}},i[r]=function(){return a},t(i)}catch(t){}return n}},277:function(t,e,n){var r=n(58),o=n(221).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?function(t){try{return o(t)}catch(t){return a.slice()}}(t):o(r(t))}},278:function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},279:function(t,e,n){var r=n(99);t.exports=Array.isArray||function(t){return"Array"==r(t)}},286:function(t,e,n){"use strict";var r=c(n(77)),o=c(n(14)),i=c(n(4)),a=c(n(5)),s=c(n(29));function c(t){return t&&t.__esModule?t:{default:t}}var u=function(){function t(e){(0,i.default)(this,t),(e=e||{}).maxTimelineEntries=e.maxTimelineEntries||50,this.opts=e,this.accountData={},this.inviteRooms={},this.joinRooms={},this.nextBatch=null,this.groups={invite:{},join:{},leave:{}}}return(0,a.default)(t,[{key:"accumulate",value:function(t){this._accumulateRooms(t),this._accumulateGroups(t),this._accumulateAccountData(t),this.nextBatch=t.next_batch}},{key:"_accumulateAccountData",value:function(t){var e=this;t.account_data&&t.account_data.events&&t.account_data.events.forEach(function(t){e.accountData[t.type]=t})}},{key:"_accumulateRooms",value:function(t){var e=this;t.rooms&&(t.rooms.invite&&(0,o.default)(t.rooms.invite).forEach(function(n){e._accumulateRoom(n,"invite",t.rooms.invite[n])}),t.rooms.join&&(0,o.default)(t.rooms.join).forEach(function(n){e._accumulateRoom(n,"join",t.rooms.join[n])}),t.rooms.leave&&(0,o.default)(t.rooms.leave).forEach(function(n){e._accumulateRoom(n,"leave",t.rooms.leave[n])}))}},{key:"_accumulateRoom",value:function(t,e,n){switch(e){case"invite":this._accumulateInviteState(t,n);break;case"join":this.inviteRooms[t]&&delete this.inviteRooms[t],this._accumulateJoinState(t,n);break;case"leave":this.inviteRooms[t]?delete this.inviteRooms[t]:delete this.joinRooms[t];break;default:console.error("Unknown cateogory: ",e)}}},{key:"_accumulateInviteState",value:function(t,e){if(e.invite_state&&e.invite_state.events)if(this.inviteRooms[t]){var n=this.inviteRooms[t];e.invite_state.events.forEach(function(t){for(var e=!1,r=0;r<n.invite_state.events.length;r++){var o=n.invite_state.events[r];o.type===t.type&&o.state_key==t.state_key&&(n.invite_state.events[r]=t,e=!0)}e||n.invite_state.events.push(t)})}else this.inviteRooms[t]={invite_state:e.invite_state}}},{key:"_accumulateJoinState",value:function(t,e){this.joinRooms[t]||(this.joinRooms[t]={_currentState:(0,r.default)(null),_timeline:[],_accountData:(0,r.default)(null),_unreadNotifications:{},_summary:{},_readReceipts:{}});var n=this.joinRooms[t];if(e.account_data&&e.account_data.events&&e.account_data.events.forEach(function(t){n._accountData[t.type]=t}),e.unread_notifications&&(n._unreadNotifications=e.unread_notifications),e.summary){var i=n._summary,a=e.summary;i["m.heroes"]=a["m.heroes"]||i["m.heroes"],i["m.joined_member_count"]=a["m.joined_member_count"]||i["m.joined_member_count"],i["m.invited_member_count"]=a["m.invited_member_count"]||i["m.invited_member_count"]}if(e.ephemeral&&e.ephemeral.events&&e.ephemeral.events.forEach(function(t){"m.receipt"===t.type&&t.content&&(0,o.default)(t.content).forEach(function(e){t.content[e]["m.read"]&&(0,o.default)(t.content[e]["m.read"]).forEach(function(r){n._readReceipts[r]={data:t.content[e]["m.read"][r],eventId:e}})})}),e.timeline&&e.timeline.limited&&(n._timeline=[]),e.state&&e.state.events&&e.state.events.forEach(function(t){l(n._currentState,t)}),e.timeline&&e.timeline.events&&e.timeline.events.forEach(function(t,r){l(n._currentState,t),n._timeline.push({event:t,token:0===r?e.timeline.prev_batch:null})}),n._timeline.length>this.opts.maxTimelineEntries)for(var s=n._timeline.length-this.opts.maxTimelineEntries;s<n._timeline.length;s++)if(n._timeline[s].token){n._timeline=n._timeline.slice(s,n._timeline.length);break}}},{key:"_accumulateGroups",value:function(t){var e=this;t.groups&&(t.groups.invite&&(0,o.default)(t.groups.invite).forEach(function(n){e._accumulateGroup(n,"invite",t.groups.invite[n])}),t.groups.join&&(0,o.default)(t.groups.join).forEach(function(n){e._accumulateGroup(n,"join",t.groups.join[n])}),t.groups.leave&&(0,o.default)(t.groups.leave).forEach(function(n){e._accumulateGroup(n,"leave",t.groups.leave[n])}))}},{key:"_accumulateGroup",value:function(t,e,n){for(var r=["invite","join","leave"],o=0;o<r.length;o++){var i=r[o];delete this.groups[i][t]}this.groups[e][t]=n}},{key:"getJSON",value:function(){var t=this,e={join:{},invite:{},leave:{}};(0,o.default)(this.inviteRooms).forEach(function(n){e.invite[n]=t.inviteRooms[n]}),(0,o.default)(this.joinRooms).forEach(function(n){var i=t.joinRooms[n],a={ephemeral:{events:[]},account_data:{events:[]},state:{events:[]},timeline:{events:[],prev_batch:null},unread_notifications:i._unreadNotifications,summary:i._summary};(0,o.default)(i._accountData).forEach(function(t){a.account_data.events.push(i._accountData[t])});var c={type:"m.receipt",room_id:n,content:{}};(0,o.default)(i._readReceipts).forEach(function(t){var e=i._readReceipts[t];c.content[e.eventId]||(c.content[e.eventId]={"m.read":{}}),c.content[e.eventId]["m.read"][t]=e.data}),(0,o.default)(c.content).length>0&&a.ephemeral.events.push(c),i._timeline.forEach(function(t){if(!a.timeline.prev_batch){if(!t.token)return;a.timeline.prev_batch=t.token}a.timeline.events.push(t.event)});for(var u=(0,r.default)(null),f=a.timeline.events.length-1;f>=0;f--){var p=a.timeline.events[f];if(null!==p.state_key&&void 0!==p.state_key){var h=s.default.deepCopy(p);h.unsigned&&(h.unsigned.prev_content&&(h.content=h.unsigned.prev_content),h.unsigned.prev_sender&&(h.sender=h.unsigned.prev_sender)),l(u,h)}}(0,o.default)(i._currentState).forEach(function(t){(0,o.default)(i._currentState[t]).forEach(function(e){var n=i._currentState[t][e];u[t]&&u[t][e]&&(n=u[t][e]),a.state.events.push(n)})}),e.join[n]=a});var n=[];return(0,o.default)(this.accountData).forEach(function(e){n.push(t.accountData[e])}),{nextBatch:this.nextBatch,roomsData:e,groupsData:this.groups,accountData:n}}},{key:"getNextBatchToken",value:function(){return this.nextBatch}}]),t}();function l(t,e){null!==e.state_key&&void 0!==e.state_key&&e.type&&(t[e.type]||(t[e.type]=(0,r.default)(null)),t[e.type][e.state_key]=e)}t.exports=u},29:function(t,e,n){"use strict";var r=a(n(77)),o=a(n(65)),i=a(n(31));function a(t){return t&&t.__esModule?t:{default:t}}var s=n(395);t.exports.encodeParams=function(t){var e="";for(var n in t)t.hasOwnProperty(n)&&(e+="&"+encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e.substring(1)},t.exports.encodeUri=function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t=t.replace(n,encodeURIComponent(e[n])));return t},t.exports.map=function(t,e){for(var n=new Array(t.length),r=0;r<t.length;r++)n[r]=e(t[r]);return n},t.exports.filter=function(t,e){for(var n=[],r=0;r<t.length;r++)e(t[r],r,t)&&n.push(t[r]);return n},t.exports.keys=function(t){var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push(n);return e},t.exports.values=function(t){var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push(t[n]);return e},t.exports.forEach=function(t,e){for(var n=0;n<t.length;n++)e(t[n],n)},t.exports.findElement=function(t,e,n){var r=void 0;if(n){for(r=t.length-1;r>=0;r--)if(e(t[r],r,t))return t[r]}else for(r=0;r<t.length;r++)if(e(t[r],r,t))return t[r]},t.exports.removeElement=function(t,e,n){var r=void 0,o=void 0;if(n){for(r=t.length-1;r>=0;r--)if(e(t[r],r,t))return o=t[r],t.splice(r,1),o}else for(r=0;r<t.length;r++)if(e(t[r],r,t))return o=t[r],t.splice(r,1),o;return!1},t.exports.isFunction=function(t){return"[object Function]"==Object.prototype.toString.call(t)},t.exports.isArray=function(t){return Array.isArray?Array.isArray(t):Boolean(t&&t.constructor===Array)},t.exports.checkObjectHasKeys=function(t,e){for(var n=0;n<e.length;n++)if(!t.hasOwnProperty(e[n]))throw new Error("Missing required key: "+e[n])},t.exports.checkObjectHasNoAdditionalKeys=function(t,e){for(var n in t)if(t.hasOwnProperty(n)&&-1===e.indexOf(n))throw new Error("Unknown key: "+n)},t.exports.deepCopy=function(t){return JSON.parse((0,i.default)(t))};var c=t.exports.deepCompare=function(t,e){if(t===e)return!0;if((void 0===t?"undefined":(0,o.default)(t))!==(void 0===e?"undefined":(0,o.default)(e)))return!1;if("number"==typeof t&&isNaN(t)&&isNaN(e))return!0;if(null===t||null===e)return t===e;if(!(t instanceof Object))return!1;if(t.constructor!==e.constructor||t.prototype!==e.prototype)return!1;if(t instanceof RegExp||t instanceof Date)return t.toString()===e.toString();if(t instanceof Array){if(t.length!==e.length)return!1;for(var n=0;n<t.length;n++)if(!c(t[n],e[n]))return!1}else{var r=void 0;for(r in e)if(e.hasOwnProperty(r)!==t.hasOwnProperty(r))return!1;for(r in e){if(e.hasOwnProperty(r)!==t.hasOwnProperty(r))return!1;if(!c(t[r],e[r]))return!1}}return!0};t.exports.extend=function(){for(var t=arguments[0]||{},e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)t[r]=n[r]}return t},t.exports.runPolyfills=function(){Array.prototype.filter||(Array.prototype.filter=function(t){if(void 0===this||null===this)throw new TypeError;var e=Object(this),n=e.length>>>0;if("function"!=typeof t)throw new TypeError;for(var r=[],o=arguments.length>=2?arguments[1]:void 0,i=0;i<n;i++)if(i in e){var a=e[i];t.call(o,a,i,e)&&r.push(a)}return r}),Array.prototype.map||(Array.prototype.map=function(t,e){var n=void 0,r=void 0;if(null===this||void 0===this)throw new TypeError(" this is null or not defined");var o=Object(this),i=o.length>>>0;if("function"!=typeof t)throw new TypeError(t+" is not a function");arguments.length>1&&(n=e);var a=new Array(i);for(r=0;r<i;){var s,c;r in o&&(s=o[r],c=t.call(n,s,r,o),a[r]=c),r++}return a}),Array.prototype.forEach||(Array.prototype.forEach=function(t,e){var n=void 0,r=void 0;if(null===this||void 0===this)throw new TypeError(" this is null or not defined");var o=Object(this),i=o.length>>>0;if("function"!=typeof t)throw new TypeError(t+" is not a function");for(arguments.length>1&&(n=e),r=0;r<i;){var a;r in o&&(a=o[r],t.call(n,a,r,o)),r++}})},t.exports.inherits=function(t,e){"function"!=typeof r.default&&(Object.create=function(){function t(){}var e=Object.prototype.hasOwnProperty;return function(n){if("object"!=(void 0===n?"undefined":(0,o.default)(n)))throw new TypeError("Object prototype may only be an Object or null");t.prototype=n;var r=new t;if(t.prototype=null,arguments.length>1){var i=Object(arguments[1]);for(var a in i)e.call(i,a)&&(r[a]=i[a])}return r}}()),t.super_=e,t.prototype=(0,r.default)(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})},t.exports.isNumber=function(t){return"number"==typeof t&&isFinite(t)},t.exports.removeHiddenChars=function(t){return s(t.normalize("NFD").replace(u,""))};var u=/[\u200B-\u200D\u0300-\u036f\uFEFF\s]/g;function l(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}t.exports.escapeRegExp=l,t.exports.globToRegexp=function(t,e){e="boolean"!=typeof e||e;var n=l(t);return n=(n=n.replace(/\\\*/g,".*")).replace(/\?/g,"."),e&&(n=n.replace(/\\\[(!|)(.*)\\]/g,function(t,e,n,r,o){return"["+(e?"^":"")+n.replace(/\\-/,"-")+"]"})),n}},31:function(t,e,n){t.exports={default:n(394),__esModule:!0}},33:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},34:function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},356:function(t,e,n){n(88),n(359),t.exports=n(18).Array.from},357:function(t,e,n){var r=n(114),o=n(115);t.exports=function(t){return function(e,n){var i,a,s=String(o(e)),c=r(n),u=s.length;return c<0||c>=u?t?"":void 0:(i=s.charCodeAt(c))<55296||i>56319||c+1===u||(a=s.charCodeAt(c+1))<56320||a>57343?t?s.charAt(c):i:t?s.slice(c,c+2):a-56320+(i-55296<<10)+65536}}},358:function(t,e,n){"use strict";var r=n(122),o=n(74),i=n(127),a={};n(59)(a,n(39)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+" Iterator")}},359:function(t,e,n){"use strict";var r=n(67),o=n(27),i=n(90),a=n(274),s=n(275),c=n(123),u=n(360),l=n(184);o(o.S+o.F*!n(276)(function(t){Array.from(t)}),"Array",{from:function(t){var e,n,o,f,p=i(t),h="function"==typeof this?this:Array,d=arguments.length,v=d>1?arguments[1]:void 0,_=void 0!==v,y=0,m=l(p);if(_&&(v=r(v,d>2?arguments[2]:void 0,2)),void 0==m||h==Array&&s(m))for(n=new h(e=c(p.length));e>y;y++)u(n,y,_?v(p[y],y):p[y]);else for(f=m.call(p),n=new h;!(o=f.next()).done;y++)u(n,y,_?a(f,v,[o.value,y],!0):o.value);return n.length=y,n}})},360:function(t,e,n){"use strict";var r=n(47),o=n(74);t.exports=function(t,e,n){e in t?r.f(t,e,o(0,n)):t[e]=n}},361:function(t,e,n){n(362);var r=n(18).Object;t.exports=function(t,e,n){return r.defineProperty(t,e,n)}},362:function(t,e,n){var r=n(27);r(r.S+r.F*!n(44),"Object",{defineProperty:n(47).f})},363:function(t,e,n){n(364);var r=n(18).Object;t.exports=function(t,e){return r.create(t,e)}},364:function(t,e,n){var r=n(27);r(r.S,"Object",{create:n(122)})},365:function(t,e,n){t.exports={default:n(366),__esModule:!0}},366:function(t,e,n){n(88),n(116),t.exports=n(167).f("iterator")},367:function(t,e,n){"use strict";var r=n(368),o=n(278),i=n(75),a=n(58);t.exports=n(183)(Array,"Array",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},368:function(t,e){t.exports=function(){}},369:function(t,e,n){t.exports={default:n(370),__esModule:!0}},370:function(t,e,n){n(371),n(187),n(373),n(374),t.exports=n(18).Symbol},371:function(t,e,n){"use strict";var r=n(33),o=n(57),i=n(44),a=n(27),s=n(207),c=n(139).KEY,u=n(56),l=n(125),f=n(127),p=n(100),h=n(39),d=n(167),v=n(168),_=n(372),y=n(279),m=n(52),g=n(34),b=n(58),w=n(121),x=n(74),j=n(122),k=n(277),O=n(220),E=n(47),C=n(76),T=O.f,S=E.f,F=k.f,P=r.Symbol,R=r.JSON,A=R&&R.stringify,D=h("_hidden"),L=h("toPrimitive"),M={}.propertyIsEnumerable,N=l("symbol-registry"),B=l("symbols"),I=l("op-symbols"),V=Object.prototype,H="function"==typeof P,U=r.QObject,G=!U||!U.prototype||!U.prototype.findChild,X=i&&u(function(){return 7!=j(S({},"a",{get:function(){return S(this,"a",{value:7}).a}})).a})?function(t,e,n){var r=T(V,e);r&&delete V[e],S(t,e,n),r&&t!==V&&S(V,e,r)}:S,q=function(t){var e=B[t]=j(P.prototype);return e._k=t,e},K=H&&"symbol"==typeof P.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof P},W=function(t,e,n){return t===V&&W(I,e,n),m(t),e=w(e,!0),m(n),o(B,e)?(n.enumerable?(o(t,D)&&t[D][e]&&(t[D][e]=!1),n=j(n,{enumerable:x(0,!1)})):(o(t,D)||S(t,D,x(1,{})),t[D][e]=!0),X(t,e,n)):S(t,e,n)},z=function(t,e){m(t);for(var n,r=_(e=b(e)),o=0,i=r.length;i>o;)W(t,n=r[o++],e[n]);return t},J=function(t){var e=M.call(this,t=w(t,!0));return!(this===V&&o(B,t)&&!o(I,t))&&(!(e||!o(this,t)||!o(B,t)||o(this,D)&&this[D][t])||e)},Q=function(t,e){if(t=b(t),e=w(e,!0),t!==V||!o(B,e)||o(I,e)){var n=T(t,e);return!n||!o(B,e)||o(t,D)&&t[D][e]||(n.enumerable=!0),n}},Y=function(t){for(var e,n=F(b(t)),r=[],i=0;n.length>i;)o(B,e=n[i++])||e==D||e==c||r.push(e);return r},$=function(t){for(var e,n=t===V,r=F(n?I:b(t)),i=[],a=0;r.length>a;)!o(B,e=r[a++])||n&&!o(V,e)||i.push(B[e]);return i};H||(s((P=function(){if(this instanceof P)throw TypeError("Symbol is not a constructor!");var t=p(arguments.length>0?arguments[0]:void 0),e=function(n){this===V&&e.call(I,n),o(this,D)&&o(this[D],t)&&(this[D][t]=!1),X(this,t,x(1,n))};return i&&G&&X(V,t,{configurable:!0,set:e}),q(t)}).prototype,"toString",function(){return this._k}),O.f=Q,E.f=W,n(221).f=k.f=Y,n(129).f=J,n(186).f=$,i&&!n(89)&&s(V,"propertyIsEnumerable",J,!0),d.f=function(t){return q(h(t))}),a(a.G+a.W+a.F*!H,{Symbol:P});for(var Z="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),tt=0;Z.length>tt;)h(Z[tt++]);for(var et=C(h.store),nt=0;et.length>nt;)v(et[nt++]);a(a.S+a.F*!H,"Symbol",{for:function(t){return o(N,t+="")?N[t]:N[t]=P(t)},keyFor:function(t){if(!K(t))throw TypeError(t+" is not a symbol!");for(var e in N)if(N[e]===t)return e},useSetter:function(){G=!0},useSimple:function(){G=!1}}),a(a.S+a.F*!H,"Object",{create:function(t,e){return void 0===e?j(t):z(j(t),e)},defineProperty:W,defineProperties:z,getOwnPropertyDescriptor:Q,getOwnPropertyNames:Y,getOwnPropertySymbols:$}),R&&a(a.S+a.F*(!H||u(function(){var t=P();return"[null]"!=A([t])||"{}"!=A({a:t})||"{}"!=A(Object(t))})),"JSON",{stringify:function(t){for(var e,n,r=[t],o=1;arguments.length>o;)r.push(arguments[o++]);if(n=e=r[1],(g(e)||void 0!==t)&&!K(t))return y(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!K(e))return e}),r[1]=e,A.apply(R,r)}}),P.prototype[L]||n(59)(P.prototype,L,P.prototype.valueOf),f(P,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},372:function(t,e,n){var r=n(76),o=n(186),i=n(129);t.exports=function(t){var e=r(t),n=o.f;if(n)for(var a,s=n(t),c=i.f,u=0;s.length>u;)c.call(t,a=s[u++])&&e.push(a);return e}},373:function(t,e,n){n(168)("asyncIterator")},374:function(t,e,n){n(168)("observable")},39:function(t,e,n){var r=n(125)("wks"),o=n(100),i=n(33).Symbol,a="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)("Symbol."+t))}).store=r},394:function(t,e,n){var r=n(18),o=r.JSON||(r.JSON={stringify:JSON.stringify});t.exports=function(t){return o.stringify.apply(o,arguments)}},395:function(t,e,n){"use strict";var r=n(396);var o=RegExp(Object.keys(r).map(function(t){return t.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}).join("|"),"g");function i(t){return r[t]}t.exports=function(t){return t.replace(o,i)}},396:function(t){t.exports={0:"O",1:"l","֭":"֖","֮":"֘","֨":"֙","֤":"֚","᪴":"ۛ","⃛":"ۛ","ؙ":"̓","ࣳ":"̓","̓":"̓","̕":"̓","ُ":"̓","ٝ":"̔","֜":"́","֝":"́","ؘ":"́","݇":"́","́":"́","॔":"́","َ":"́","̀":"̀","॓":"̀","̌":"̆","꙼":"̆","٘":"̆","ٚ":"̆","ͮ":"̆","ۨ":"̆̇","̐":"̆̇","ँ":"̆̇","ঁ":"̆̇","ઁ":"̆̇","ଁ":"̆̇","ఀ":"̆̇","ಁ":"̆̇","ഁ":"̆̇","𑒿":"̆̇","᳐":"̂","̑":"̂","ٛ":"̂","߮":"̂","꛰":"̂","֯":"̊","۟":"̊","៓":"̊","゚":"̊","ْ":"̊","ஂ":"̊","ံ":"̊","ំ":"̊","𑌀":"̊","ํ":"̊","ໍ":"̊","ͦ":"̊","࣫":"̈","߳":"̈","ً":"̋","ࣰ":"̋","͂":"̃","ٓ":"̃","ׄ":"̇","۬":"̇","݀":"̇","࣪":"̇","݁":"̇","͘":"̇","ֹ":"̇","ֺ":"̇","ׂ":"̇","ׁ":"̇","߭":"̇","ं":"̇","ਂ":"̇","ં":"̇","்":"̇","̷":"̸","᪷":"̨","̢":"̨","ͅ":"̨","᳒":"̄","̅":"̄","ٙ":"̄","߫":"̄","꛱":"̄","᳚":"̎","ٗ":"̒","͗":"͐","ࣿ":"͐","ࣸ":"͐","ऀ":"͒","᳭":"̖","᳜":"̩","ٖ":"̩","᳕":"̫","͇":"̳","ࣹ":"͔","ࣺ":"͕","゛":"゙","゜":"゚","̶":"̵","〬":"̉","ׅ":"̣","࣭":"̣","᳝":"̣","ִ":"̣","ٜ":"̣","़":"̣","়":"̣","਼":"̣","઼":"̣","଼":"̣","𑇊":"̣","𑓃":"̣","𐨺":"̣","࣮":"̤","᳞":"̤","〭":"̥","̧":"̦","̡":"̦","̹":"̦","᳙":"̭","᳘":"̮","॒":"̱","̠":"̱","ࣱ":"ٌ","ࣨ":"ٌ","ࣥ":"ٌ","ﱞ":"ﹲّ","ࣲ":"ٍ","ﱟ":"ﹴّ","ﳲ":"ﹷّ","ﱠ":"ﹶّ","ﳳ":"ﹹّ","ﱡ":"ﹸّ","ؚ":"ِ","̗":"ِ","ﳴ":"ﹻّ","ﱢ":"ﹺّ","ﱣ":"ﹼٰ","ٟ":"ٕ","̍":"ٰ","݂":"ܼ","ਃ":"ঃ","ః":"ঃ","ಃ":"ঃ","ഃ":"ঃ","ඃ":"ঃ","း":"ঃ","𑓁":"ঃ","់":"่","່":"่","້":"้","໊":"๊","໋":"๋","꙯":"⃩","\u2028":" ","\u2029":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" ","ߺ":"_","﹍":"_","﹎":"_","﹏":"_","‐":"-","‑":"-","‒":"-","–":"-","﹘":"-","۔":"-","⁃":"-","˗":"-","−":"-","➖":"-","Ⲻ":"-","⨩":"-̓","⸚":"-̈","﬩":"-̇","∸":"-̇","⨪":"-̣","꓾":"-.","~":"〜","؍":",","٫":",","‚":",","¸":",","ꓹ":",","⸲":"،","٬":"،",";":";","⸵":"؛","ः":":","ઃ":":",":":":","։":":","܃":":","܄":":","᛬":":","︰":":","᠃":":","᠉":":","⁚":":","׃":":","˸":":","꞉":":","∶":":","ː":":","ꓽ":":","⩴":"::=","⧴":":→","!":"!","ǃ":"!","ⵑ":"!","‼":"!!","⁉":"!?","ʔ":"?","Ɂ":"?","ॽ":"?","Ꭾ":"?","ꛫ":"?","⁈":"?!","⁇":"??","⸮":"؟","𝅭":".","․":".","܁":".","܂":".","꘎":".","𐩐":".","٠":".","۰":".","ꓸ":".","ꓻ":".,","‥":"..","ꓺ":"..","…":"...","꛴":"꛳꛳","・":"·","・":"·","᛫":"·","·":"·","⸱":"·","𐄁":"·","•":"·","‧":"·","∙":"·","⋅":"·","ꞏ":"·","ᐧ":"·","⋯":"···","ⵈ":"···","ᑄ":"·<","⋗":"·>","ᐷ":"·>","ᑀ":"·>","ᔯ":"·4","ᑺ":"·d","ᒘ":"·J","ᒶ":"·L","ᑶ":"·P","ᑗ":"·U","ᐺ":"·V","ᐼ":"·Ʌ","ᒮ":"·Γ","ᐎ":"·Δ","ᑙ":"·Ո","ᐌ":"·ᐁ","ᐐ":"·ᐄ","ᐒ":"·ᐅ","ᐔ":"·ᐆ","ᐗ":"·ᐊ","ᐙ":"·ᐋ","ᐾ":"·ᐲ","ᑂ":"·ᐴ","ᑆ":"·ᐹ","ᑛ":"·ᑏ","ᑔ":"·ᑐ","ᑝ":"·ᑐ","ᑟ":"·ᑑ","ᑡ":"·ᑕ","ᑣ":"·ᑖ","ᑴ":"·ᑫ","ᑸ":"·ᑮ","ᑼ":"·ᑰ","ᑾ":"·ᑲ","ᒀ":"·ᑳ","ᒒ":"·ᒉ","ᒔ":"·ᒋ","ᒖ":"·ᒌ","ᒚ":"·ᒎ","ᒜ":"·ᒐ","ᒞ":"·ᒑ","ᒬ":"·ᒣ","ᒰ":"·ᒦ","ᒲ":"·ᒧ","ᒴ":"·ᒨ","ᒸ":"·ᒫ","ᓉ":"·ᓀ","ᓋ":"·ᓇ","ᓍ":"·ᓈ","ᓜ":"·ᓓ","ᓞ":"·ᓕ","ᓠ":"·ᓖ","ᓢ":"·ᓗ","ᓤ":"·ᓘ","ᓦ":"·ᓚ","ᓨ":"·ᓛ","ᓶ":"·ᓭ","ᓸ":"·ᓯ","ᓺ":"·ᓰ","ᓼ":"·ᓱ","ᓾ":"·ᓲ","ᔀ":"·ᓴ","ᔂ":"·ᓵ","ᔗ":"·ᔐ","ᔙ":"·ᔑ","ᔛ":"·ᔒ","ᔝ":"·ᔓ","ᔟ":"·ᔔ","ᔡ":"·ᔕ","ᔣ":"·ᔖ","ᔱ":"·ᔨ","ᔳ":"·ᔩ","ᔵ":"·ᔪ","ᔷ":"·ᔫ","ᔹ":"·ᔭ","ᔻ":"·ᔮ","ᕎ":"·ᕌ","ᕛ":"·ᕚ","ᕨ":"·ᕧ","ᢳ":"·ᢱ","ᢶ":"·ᢴ","ᢹ":"·ᢸ","ᣂ":"·ᣀ","꠰":"।","॥":"।।","᰼":"᰻᰻","။":"၊၊","᪩":"᪨᪨","᪫":"᪪᪨","᭟":"᭞᭞","𐩗":"𐩖𐩖","᱿":"᱾᱾","՝":"'","'":"'","‘":"'","’":"'","‛":"'","′":"'","‵":"'","՚":"'","׳":"'","`":"'","`":"'","`":"'","´":"'","΄":"'","´":"'","᾽":"'","᾿":"'","῾":"'","ʹ":"'","ʹ":"'","ˈ":"'","ˊ":"'","ˋ":"'","˴":"'","ʻ":"'","ʽ":"'","ʼ":"'","ʾ":"'","ꞌ":"'","י":"'","ߴ":"'","ߵ":"'","ᑊ":"'","ᛌ":"'","᳓":"''",'"':"''",""":"''","“":"''","”":"''","‟":"''","″":"''","‶":"''","〃":"''","״":"''","˝":"''","ʺ":"''","˶":"''","ˮ":"''","ײ":"''","‴":"'''","‷":"'''","⁗":"''''","Ɓ":"'B","Ɗ":"'D","ʼn":"'n","Ƥ":"'P","Ƭ":"'T","Ƴ":"'Y","[":"(","❨":"(","❲":"(","〔":"(","﴾":"(","⸨":"((","㈠":"(ー)","⑵":"(2)","⒇":"(2O)","⑶":"(3)","⑷":"(4)","⑸":"(5)","⑹":"(6)","⑺":"(7)","⑻":"(8)","⑼":"(9)","⒜":"(a)","🄐":"(A)","⒝":"(b)","🄑":"(B)","⒞":"(c)","🄒":"(C)","⒟":"(d)","🄓":"(D)","⒠":"(e)","🄔":"(E)","⒡":"(f)","🄕":"(F)","⒢":"(g)","🄖":"(G)","⒣":"(h)","🄗":"(H)","⒤":"(i)","⒥":"(j)","🄙":"(J)","⒦":"(k)","🄚":"(K)","⑴":"(l)","🄘":"(l)","⒧":"(l)","🄛":"(L)","⑿":"(l2)","⒀":"(l3)","⒁":"(l4)","⒂":"(l5)","⒃":"(l6)","⒄":"(l7)","⒅":"(l8)","⒆":"(l9)","⑾":"(ll)","⑽":"(lO)","🄜":"(M)","⒩":"(n)","🄝":"(N)","⒪":"(o)","🄞":"(O)","⒫":"(p)","🄟":"(P)","⒬":"(q)","🄠":"(Q)","⒭":"(r)","🄡":"(R)","⒨":"(rn)","⒮":"(s)","🄢":"(S)","🄪":"(S)","⒯":"(t)","🄣":"(T)","⒰":"(u)","🄤":"(U)","⒱":"(v)","🄥":"(V)","⒲":"(vv)","🄦":"(W)","⒳":"(x)","🄧":"(X)","⒴":"(y)","🄨":"(Y)","⒵":"(z)","🄩":"(Z)","㈀":"(ᄀ)","㈎":"(가)","㈁":"(ᄂ)","㈏":"(나)","㈂":"(ᄃ)","㈐":"(다)","㈃":"(ᄅ)","㈑":"(라)","㈄":"(ᄆ)","㈒":"(마)","㈅":"(ᄇ)","㈓":"(바)","㈆":"(ᄉ)","㈔":"(사)","㈇":"(ᄋ)","㈕":"(아)","㈝":"(오전)","㈞":"(오후)","㈈":"(ᄌ)","㈖":"(자)","㈜":"(주)","㈉":"(ᄎ)","㈗":"(차)","㈊":"(ᄏ)","㈘":"(카)","㈋":"(ᄐ)","㈙":"(타)","㈌":"(ᄑ)","㈚":"(파)","㈍":"(ᄒ)","㈛":"(하)","㈦":"(七)","㈢":"(三)","🉁":"(三)","㈨":"(九)","㈡":"(二)","🉂":"(二)","㈤":"(五)","㈹":"(代)","㈽":"(企)","㉁":"(休)","㈧":"(八)","㈥":"(六)","㈸":"(労)","🉇":"(勝)","㈩":"(十)","㈿":"(協)","㈴":"(名)","㈺":"(呼)","㈣":"(四)","㈯":"(土)","㈻":"(学)","🉃":"(安)","🉅":"(打)","🉈":"(敗)","㈰":"(日)","㈪":"(月)","㈲":"(有)","㈭":"(木)","🉀":"(本)","㈱":"(株)","㈬":"(水)","㈫":"(火)","🉄":"(点)","㈵":"(特)","🉆":"(盗)","㈼":"(監)","㈳":"(社)","㈷":"(祝)","㉀":"(祭)","㉂":"(自)","㉃":"(至)","㈶":"(財)","㈾":"(資)","㈮":"(金)","]":")","❩":")","❳":")","〕":")","﴿":")","⸩":"))","❴":"{","𝄔":"{","❵":"}","〚":"⟦","〛":"⟧","⟨":"❬","〈":"❬","〈":"❬","㇛":"❬","く":"❬","𡿨":"❬","⟩":"❭","〉":"❭","〉":"❭","^":"︿","⸿":"¶","⁎":"*","٭":"*","∗":"*","𐌟":"*","᜵":"/","⁁":"/","∕":"/","⁄":"/","╱":"/","⟋":"/","⧸":"/","𝈺":"/","㇓":"/","〳":"/","Ⳇ":"/","ノ":"/","丿":"/","⼃":"/","⧶":"/̄","⫽":"//","⫻":"///","\":"\\","﹨":"\\","∖":"\\","⟍":"\\","⧵":"\\","⧹":"\\","𝈏":"\\","𝈻":"\\","㇔":"\\","丶":"\\","⼂":"\\","⳹":"\\\\","⑊":"\\\\","⟈":"\\ᑕ","ꝸ":"&","૰":"॰","𑂻":"॰","𑇇":"॰","⚬":"॰","𑇛":"꣼","៙":"๏","៕":"๚","៚":"๛","༌":"་","༎":"།།","˄":"^","ˆ":"^","꙾":"ˇ","˘":"ˇ","‾":"ˉ","﹉":"ˉ","﹊":"ˉ","﹋":"ˉ","﹌":"ˉ","¯":"ˉ"," ̄":"ˉ","▔":"ˉ","ъ":"ˉb","ꙑ":"ˉbi","͵":"ˏ","˻":"˪","꜖":"˪","꜔":"˫","。":"˳","⸰":"°","˚":"°","∘":"°","○":"°","◦":"°","⍜":"°̲","⍤":"°̈","℃":"°C","℉":"°F","௵":"௳","༛":"༚༚","༟":"༚༝","࿎":"༝༚","༞":"༝༝","Ⓒ":"©","Ⓡ":"®","Ⓟ":"℗","𝈛":"⅄","⯬":"↞","⯭":"↟","⯮":"↠","⯯":"↡","↵":"↲","⥥":"⇃⇂","⥯":"⇃ᛚ","𝛛":"∂","𝜕":"∂","𝝏":"∂","𝞉":"∂","𝟃":"∂","𞣌":"∂","𞣍":"∂̵","ð":"∂̵","⌀":"∅","𝛁":"∇","𝛻":"∇","𝜵":"∇","𝝯":"∇","𝞩":"∇","𑢨":"∇","⍢":"∇̈","⍫":"∇̴","█":"∎","■":"∎","⨿":"∐","᛭":"+","➕":"+","𐊛":"+","⨣":"+̂","⨢":"+̊","⨤":"+̃","∔":"+̇","⨥":"+̣","⨦":"+̰","⨧":"+₂","➗":"÷","‹":"<","❮":"<","˂":"<","𝈶":"<","ᐸ":"<","ᚲ":"<","⋖":"<·","Ⲵ":"<·","ᑅ":"<·","≪":"<<","⋘":"<<<","᐀":"=","⹀":"=","゠":"=","꓿":"=","≚":"=̆","≙":"=̂","≗":"=̊","≐":"=̇","≑":"=̣̇","⩮":"=⃰","⩵":"==","⩶":"===","≞":"=ͫ","›":">","❯":">","˃":">","𝈷":">","ᐳ":">","ᑁ":">·","⪥":"><","≫":">>","⨠":">>","⋙":">>>","⁓":"~","˜":"~","῀":"~","∼":"~","⍨":"~̈","⸞":"~̇","⩪":"~̇","⸟":"~̣","𞣈":"∠","⋀":"∧","∯":"∮∮","∰":"∮∮∮","⸫":"∴","⸪":"∵","⸬":"∷","𑇞":"≈","♎":"≏","🝞":"≏","≣":"≡","⨃":"⊍","⨄":"⊎","𝈸":"⊏","𝈹":"⊐","⨅":"⊓","⨆":"⊔","⨂":"⊗","⍟":"⊛","🝱":"⊠","🝕":"⊡","◁":"⊲","▷":"⊳","⍣":"⋆̈","︴":"⌇","◠":"⌒","⨽":"⌙","⌥":"⌤","⧇":"⌻","◎":"⌾","⦾":"⌾","⧅":"⍂","⦰":"⍉","⏃":"⍋","⏂":"⍎","⏁":"⍕","Ö":"⍥","Ő":"⍥","⏆":"⍭","☸":"⎈","︵":"⏜","︶":"⏝","︷":"⏞","︸":"⏟","︹":"⏠","︺":"⏡","▱":"⏥","︱":"│","|":"│","┃":"│","┏":"┌","┣":"├","▐":"▌","▗":"▖","▝":"▘","☐":"□","■":"▪","▸":"▶","►":"▶","⳩":"☧","🜊":"☩","🌒":"☽","🌙":"☽","🌘":"☾","⏾":"☾","⧙":"⦚","🜺":"⧟","⨾":"⨟","♩":"𝅘𝅥","♪":"𝅘𝅥𝅮","˙":"ॱ","ൎ":"ॱ","-":"ー","—":"ー","―":"ー","─":"ー","━":"ー","㇐":"ー","ꟷ":"ー","ᅳ":"ー","ㅡ":"ー","一":"ー","⼀":"ー","ᆖ":"ーー","ힹ":"ーᅡ","ힺ":"ーᅥ","ힻ":"ーᅥ丨","ힼ":"ーᅩ","ᆕ":"ーᅮ","ᅴ":"ー丨","ㅢ":"ー丨","ᆗ":"ー丨ᅮ","₤":"£","〒":"₸","〶":"₸","᭜":"᭐","꧆":"꧐","𑓑":"১","೧":"౧","ၥ":"၁","①":"➀","⑩":"➉","⏨":"₁₀","𝟐":"2","𝟚":"2","𝟤":"2","𝟮":"2","𝟸":"2","Ꝛ":"2","Ƨ":"2","Ϩ":"2","Ꙅ":"2","ᒿ":"2","ꛯ":"2","ꧏ":"٢","۲":"٢","૨":"२","𑓒":"২","೨":"౨","②":"➁","ƻ":"2̵","🄃":"2,","⒉":"2.","㏵":"22日","㍮":"22点","㏶":"23日","㍯":"23点","㏷":"24日","㍰":"24点","㏸":"25日","㏹":"26日","㏺":"27日","㏻":"28日","㏼":"29日","㏴":"2l日","㍭":"2l点","⒛":"2O.","㏳":"2O日","㍬":"2O点","෩":"෨ා","෯":"෨ී","㏡":"2日","㋁":"2月","㍚":"2点","𝈆":"3","𝟑":"3","𝟛":"3","𝟥":"3","𝟯":"3","𝟹":"3","Ɜ":"3","Ȝ":"3","Ʒ":"3","Ꝫ":"3","Ⳍ":"3","З":"3","Ӡ":"3","𑣊":"3","۳":"٣","𞣉":"٣","૩":"३","③":"➂","Ҙ":"3̦","🄄":"3,","⒊":"3.","㏾":"3l日","㏽":"3O日","㏢":"3日","㋂":"3月","㍛":"3点","𝟒":"4","𝟜":"4","𝟦":"4","𝟰":"4","𝟺":"4","Ꮞ":"4","𑢯":"4","۴":"٤","૪":"४","④":"➃","🄅":"4,","⒋":"4.","ᔰ":"4·","㏣":"4日","㋃":"4月","㍜":"4点","𝟓":"5","𝟝":"5","𝟧":"5","𝟱":"5","𝟻":"5","Ƽ":"5","𑢻":"5","⑤":"➄","🄆":"5,","⒌":"5.","㏤":"5日","㋄":"5月","㍝":"5点","𝟔":"6","𝟞":"6","𝟨":"6","𝟲":"6","𝟼":"6","Ⳓ":"6","б":"6","Ꮾ":"6","𑣕":"6","۶":"٦","𑓖":"৬","⑥":"➅","🄇":"6,","⒍":"6.","㏥":"6日","㋅":"6月","㍞":"6点","𝈒":"7","𝟕":"7","𝟟":"7","𝟩":"7","𝟳":"7","𝟽":"7","𑣆":"7","⑦":"➆","🄈":"7,","⒎":"7.","㏦":"7日","㋆":"7月","㍟":"7点","ଃ":"8","৪":"8","੪":"8","𞣋":"8","𝟖":"8","𝟠":"8","𝟪":"8","𝟴":"8","𝟾":"8","ȣ":"8","Ȣ":"8","𐌚":"8","૮":"८","⑧":"➇","🄉":"8,","⒏":"8.","㏧":"8日","㋇":"8月","㍠":"8点","੧":"9","୨":"9","৭":"9","൭":"9","𝟗":"9","𝟡":"9","𝟫":"9","𝟵":"9","𝟿":"9","Ꝯ":"9","Ⳋ":"9","𑣌":"9","𑢬":"9","𑣖":"9","१":"٩","𑣤":"٩","۹":"٩","೯":"౯","⑨":"➈","🄊":"9,","⒐":"9.","㏨":"9日","㋈":"9月","㍡":"9点","⍺":"a","a":"a","𝐚":"a","𝑎":"a","𝒂":"a","𝒶":"a","𝓪":"a","𝔞":"a","𝕒":"a","𝖆":"a","𝖺":"a","𝗮":"a","𝘢":"a","𝙖":"a","𝚊":"a","ɑ":"a","α":"a","𝛂":"a","𝛼":"a","𝜶":"a","𝝰":"a","𝞪":"a","а":"a","A":"A","𝐀":"A","𝐴":"A","𝑨":"A","𝒜":"A","𝓐":"A","𝔄":"A","𝔸":"A","𝕬":"A","𝖠":"A","𝗔":"A","𝘈":"A","𝘼":"A","𝙰":"A","ᴀ":"A","Α":"A","𝚨":"A","𝛢":"A","𝜜":"A","𝝖":"A","𝞐":"A","А":"A","Ꭺ":"A","ᗅ":"A","ꓮ":"A","𐊠":"A","⍶":"a̲","ǎ":"ă","Ǎ":"Ă","ȧ":"å","Ȧ":"Å","ẚ":"ả","℀":"a/c","℁":"a/s","ꜳ":"aa","Ꜳ":"AA","æ":"ae","ӕ":"ae","Æ":"AE","Ӕ":"AE","ꜵ":"ao","Ꜵ":"AO","🜇":"AR","ꜷ":"au","Ꜷ":"AU","ꜹ":"av","ꜻ":"av","Ꜹ":"AV","Ꜻ":"AV","ꜽ":"ay","Ꜽ":"AY","∀":"Ɐ","𝈗":"Ɐ","ᗄ":"Ɐ","ꓯ":"Ɐ","𐐟":"Ɒ","𝐛":"b","𝑏":"b","𝒃":"b","𝒷":"b","𝓫":"b","𝔟":"b","𝕓":"b","𝖇":"b","𝖻":"b","𝗯":"b","𝘣":"b","𝙗":"b","𝚋":"b","Ƅ":"b","Ь":"b","Ꮟ":"b","ᖯ":"b","B":"B","ℬ":"B","𝐁":"B","𝐵":"B","𝑩":"B","𝓑":"B","𝔅":"B","𝔹":"B","𝕭":"B","𝖡":"B","𝗕":"B","𝘉":"B","𝘽":"B","𝙱":"B","Ꞵ":"B","Β":"B","𝚩":"B","𝛣":"B","𝜝":"B","𝝗":"B","𝞑":"B","В":"B","Ᏼ":"B","ᗷ":"B","ꓐ":"B","𐊂":"B","𐊡":"B","𐌁":"B","ɓ":"b̔","ƃ":"b̄","Ƃ":"b̄","Б":"b̄","ƀ":"b̵","ҍ":"b̵","Ҍ":"b̵","ѣ":"b̵","Ѣ":"b̵","Ы":"bl","в":"ʙ","c":"c","ⅽ":"c","𝐜":"c","𝑐":"c","𝒄":"c","𝒸":"c","𝓬":"c","𝔠":"c","𝕔":"c","𝖈":"c","𝖼":"c","𝗰":"c","𝘤":"c","𝙘":"c","𝚌":"c","ᴄ":"c","ϲ":"c","ⲥ":"c","с":"c","𐐽":"c","🝌":"C","𑣲":"C","𑣩":"C","C":"C","Ⅽ":"C","ℂ":"C","ℭ":"C","𝐂":"C","𝐶":"C","𝑪":"C","𝒞":"C","𝓒":"C","𝕮":"C","𝖢":"C","𝗖":"C","𝘊":"C","𝘾":"C","𝙲":"C","Ϲ":"C","Ⲥ":"C","С":"C","Ꮯ":"C","ꓚ":"C","𐊢":"C","𐌂":"C","𐐕":"C","𐔜":"C","¢":"c̸","ȼ":"c̸","₡":"C⃫","ç":"c̦","ҫ":"c̦","Ç":"C̦","Ҫ":"C̦","Ƈ":"C'","℅":"c/o","℆":"c/u","⋴":"ꞓ","ɛ":"ꞓ","ε":"ꞓ","ϵ":"ꞓ","𝛆":"ꞓ","𝛜":"ꞓ","𝜀":"ꞓ","𝜖":"ꞓ","𝜺":"ꞓ","𝝐":"ꞓ","𝝴":"ꞓ","𝞊":"ꞓ","𝞮":"ꞓ","𝟄":"ꞓ","ⲉ":"ꞓ","є":"ꞓ","ԑ":"ꞓ","𑣎":"ꞓ","𐐩":"ꞓ","€":"Ꞓ","Ⲉ":"Ꞓ","Є":"Ꞓ","⍷":"ꞓ̲","ͽ":"ꜿ","Ͽ":"Ꜿ","ⅾ":"d","ⅆ":"d","𝐝":"d","𝑑":"d","𝒅":"d","𝒹":"d","𝓭":"d","𝔡":"d","𝕕":"d","𝖉":"d","𝖽":"d","𝗱":"d","𝘥":"d","𝙙":"d","𝚍":"d","ԁ":"d","Ꮷ":"d","ᑯ":"d","ꓒ":"d","Ⅾ":"D","ⅅ":"D","𝐃":"D","𝐷":"D","𝑫":"D","𝒟":"D","𝓓":"D","𝔇":"D","𝔻":"D","𝕯":"D","𝖣":"D","𝗗":"D","𝘋":"D","𝘿":"D","𝙳":"D","Ꭰ":"D","ᗞ":"D","ᗪ":"D","ꓓ":"D","ɗ":"d̔","ɖ":"d̨","ƌ":"d̄","đ":"d̵","Đ":"D̵","Ð":"D̵","Ɖ":"D̵","₫":"ḏ̵","ꝺ":"Ꝺ","ᑻ":"d·","ᒇ":"d'","ʤ":"dȝ","dz":"dz","ʣ":"dz","Dz":"Dz","DZ":"DZ","dž":"dž","Dž":"Dž","DŽ":"DŽ","ʥ":"dʑ","⸹":"ẟ","δ":"ẟ","𝛅":"ẟ","𝛿":"ẟ","𝜹":"ẟ","𝝳":"ẟ","𝞭":"ẟ","ծ":"ẟ","ᕷ":"ẟ","℮":"e","e":"e","ℯ":"e","ⅇ":"e","𝐞":"e","𝑒":"e","𝒆":"e","𝓮":"e","𝔢":"e","𝕖":"e","𝖊":"e","𝖾":"e","𝗲":"e","𝘦":"e","𝙚":"e","𝚎":"e","ꬲ":"e","е":"e","ҽ":"e","⋿":"E","E":"E","ℰ":"E","𝐄":"E","𝐸":"E","𝑬":"E","𝓔":"E","𝔈":"E","𝔼":"E","𝕰":"E","𝖤":"E","𝗘":"E","𝘌":"E","𝙀":"E","𝙴":"E","Ε":"E","𝚬":"E","𝛦":"E","𝜠":"E","𝝚":"E","𝞔":"E","Е":"E","ⴹ":"E","Ꭼ":"E","ꓰ":"E","𑢦":"E","𑢮":"E","𐊆":"E","ě":"ĕ","Ě":"Ĕ","ɇ":"e̸","Ɇ":"E̸","ҿ":"ę","ə":"ǝ","ә":"ǝ","∃":"Ǝ","ⴺ":"Ǝ","ꓱ":"Ǝ","ɚ":"ǝ˞","ᴔ":"ǝo","ꭁ":"ǝo̸","ꭂ":"ǝo̵","Ә":"Ə","𝈡":"Ɛ","ℇ":"Ɛ","Ԑ":"Ɛ","Ꮛ":"Ɛ","𐐁":"Ɛ","ᶟ":"ᵋ","ᴈ":"ɜ","з":"ɜ","ҙ":"ɜ̦","𐑂":"ɞ","ꞝ":"ʚ","𐐪":"ʚ","𝐟":"f","𝑓":"f","𝒇":"f","𝒻":"f","𝓯":"f","𝔣":"f","𝕗":"f","𝖋":"f","𝖿":"f","𝗳":"f","𝘧":"f","𝙛":"f","𝚏":"f","ꬵ":"f","ꞙ":"f","ſ":"f","ẝ":"f","ք":"f","𝈓":"F","ℱ":"F","𝐅":"F","𝐹":"F","𝑭":"F","𝓕":"F","𝔉":"F","𝔽":"F","𝕱":"F","𝖥":"F","𝗙":"F","𝘍":"F","𝙁":"F","𝙵":"F","Ꞙ":"F","Ϝ":"F","𝟊":"F","ᖴ":"F","ꓝ":"F","𑣂":"F","𑢢":"F","𐊇":"F","𐊥":"F","𐔥":"F","ƒ":"f̦","Ƒ":"F̦","ᵮ":"f̴","℻":"FAX","ff":"ff","ffi":"ffi","ffl":"ffl","fi":"fi","fl":"fl","ʩ":"fŋ","ᖵ":"Ⅎ","ꓞ":"Ⅎ","𝈰":"ꟻ","ᖷ":"ꟻ","g":"g","ℊ":"g","𝐠":"g","𝑔":"g","𝒈":"g","𝓰":"g","𝔤":"g","𝕘":"g","𝖌":"g","𝗀":"g","𝗴":"g","𝘨":"g","𝙜":"g","𝚐":"g","ɡ":"g","ᶃ":"g","ƍ":"g","ց":"g","𝐆":"G","𝐺":"G","𝑮":"G","𝒢":"G","𝓖":"G","𝔊":"G","𝔾":"G","𝕲":"G","𝖦":"G","𝗚":"G","𝘎":"G","𝙂":"G","𝙶":"G","Ԍ":"G","Ꮐ":"G","Ᏻ":"G","ꓖ":"G","ᶢ":"ᵍ","ɠ":"g̔","ǧ":"ğ","Ǧ":"Ğ","ǵ":"ģ","ǥ":"g̵","Ǥ":"G̵","Ɠ":"G'","ԍ":"ɢ","h":"h","ℎ":"h","𝐡":"h","𝒉":"h","𝒽":"h","𝓱":"h","𝔥":"h","𝕙":"h","𝖍":"h","𝗁":"h","𝗵":"h","𝘩":"h","𝙝":"h","𝚑":"h","һ":"h","հ":"h","Ꮒ":"h","H":"H","ℋ":"H","ℌ":"H","ℍ":"H","𝐇":"H","𝐻":"H","𝑯":"H","𝓗":"H","𝕳":"H","𝖧":"H","𝗛":"H","𝘏":"H","𝙃":"H","𝙷":"H","Η":"H","𝚮":"H","𝛨":"H","𝜢":"H","𝝜":"H","𝞖":"H","Ⲏ":"H","Н":"H","Ꮋ":"H","ᕼ":"H","ꓧ":"H","𐋏":"H","ᵸ":"ᴴ","ɦ":"h̔","ꚕ":"h̔","Ᏺ":"h̔","Ⱨ":"H̩","Ң":"H̩","ħ":"h̵","ℏ":"h̵","ћ":"h̵","Ħ":"H̵","Ӊ":"H̦","Ӈ":"H̦","н":"ʜ","ң":"ʜ̩","ӊ":"ʜ̦","ӈ":"ʜ̦","Ԋ":"Ƕ","Ͱ":"Ⱶ","Ꭸ":"Ⱶ","Ꮀ":"Ⱶ","ꚱ":"Ⱶ","ꞕ":"ꜧ","˛":"i","⍳":"i","i":"i","ⅰ":"i","ℹ":"i","ⅈ":"i","𝐢":"i","𝑖":"i","𝒊":"i","𝒾":"i","𝓲":"i","𝔦":"i","𝕚":"i","𝖎":"i","𝗂":"i","𝗶":"i","𝘪":"i","𝙞":"i","𝚒":"i","ı":"i","𝚤":"i","ɪ":"i","ɩ":"i","ι":"i","ι":"i","ͺ":"i","𝛊":"i","𝜄":"i","𝜾":"i","𝝸":"i","𝞲":"i","і":"i","ꙇ":"i","ӏ":"i","Ꭵ":"i","𑣃":"i","ⓛ":"Ⓘ","⍸":"i̲","ǐ":"ĭ","Ǐ":"Ĭ","ɨ":"i̵","ᵻ":"i̵","ᵼ":"i̵","ⅱ":"ii","ⅲ":"iii","ij":"ij","ⅳ":"iv","ⅸ":"ix","j":"j","ⅉ":"j","𝐣":"j","𝑗":"j","𝒋":"j","𝒿":"j","𝓳":"j","𝔧":"j","𝕛":"j","𝖏":"j","𝗃":"j","𝗷":"j","𝘫":"j","𝙟":"j","𝚓":"j","ϳ":"j","ј":"j","J":"J","𝐉":"J","𝐽":"J","𝑱":"J","𝒥":"J","𝓙":"J","𝔍":"J","𝕁":"J","𝕵":"J","𝖩":"J","𝗝":"J","𝘑":"J","𝙅":"J","𝙹":"J","Ʝ":"J","Ϳ":"J","Ј":"J","Ꭻ":"J","ᒍ":"J","ꓙ":"J","ɉ":"j̵","Ɉ":"J̵","ᒙ":"J·","𝚥":"ȷ","յ":"ȷ","𝐤":"k","𝑘":"k","𝒌":"k","𝓀":"k","𝓴":"k","𝔨":"k","𝕜":"k","𝖐":"k","𝗄":"k","𝗸":"k","𝘬":"k","𝙠":"k","𝚔":"k","ᴋ":"k","ĸ":"k","κ":"k","ϰ":"k","𝛋":"k","𝛞":"k","𝜅":"k","𝜘":"k","𝜿":"k","𝝒":"k","𝝹":"k","𝞌":"k","𝞳":"k","𝟆":"k","ⲕ":"k","к":"k","K":"K","K":"K","𝐊":"K","𝐾":"K","𝑲":"K","𝒦":"K","𝓚":"K","𝔎":"K","𝕂":"K","𝕶":"K","𝖪":"K","𝗞":"K","𝘒":"K","𝙆":"K","𝙺":"K","Κ":"K","𝚱":"K","𝛫":"K","𝜥":"K","𝝟":"K","𝞙":"K","Ⲕ":"K","К":"K","Ꮶ":"K","ᛕ":"K","ꓗ":"K","𐔘":"K","ƙ":"k̔","қ":"k̩","Ⱪ":"K̩","Қ":"K̩","ҟ":"k̵","₭":"K̵","Ꝁ":"K̵","Ҟ":"K̵","Ƙ":"K'","׀":"l","|":"l","∣":"l","│":"l","١":"l","۱":"l","𐌠":"l","𞣇":"l","𝟏":"l","𝟙":"l","𝟣":"l","𝟭":"l","𝟷":"l",I:"l","I":"l","Ⅰ":"l","ℐ":"l","ℑ":"l","𝐈":"l","𝐼":"l","𝑰":"l","𝓘":"l","𝕀":"l","𝕴":"l","𝖨":"l","𝗜":"l","𝘐":"l","𝙄":"l","𝙸":"l","Ɩ":"l","l":"l","ⅼ":"l","ℓ":"l","𝐥":"l","𝑙":"l","𝒍":"l","𝓁":"l","𝓵":"l","𝔩":"l","𝕝":"l","𝖑":"l","𝗅":"l","𝗹":"l","𝘭":"l","𝙡":"l","𝚕":"l","ǀ":"l","Ι":"l","𝚰":"l","𝛪":"l","𝜤":"l","𝝞":"l","𝞘":"l","Ⲓ":"l","І":"l","Ӏ":"l","ו":"l","ן":"l","ا":"l","𞸀":"l","𞺀":"l","ﺎ":"l","ﺍ":"l","ߊ":"l","ⵏ":"l","ᛁ":"l","ꓲ":"l","𐊊":"l","𐌉":"l","⏽":"l","𝈪":"L","Ⅼ":"L","ℒ":"L","𝐋":"L","𝐿":"L","𝑳":"L","𝓛":"L","𝔏":"L","𝕃":"L","𝕷":"L","𝖫":"L","𝗟":"L","𝘓":"L","𝙇":"L","𝙻":"L","Ⳑ":"L","Ꮮ":"L","ᒪ":"L","ꓡ":"L","𑢣":"L","𑢲":"L","𐐛":"L","𐔦":"L","ﴼ":"l̋","ﴽ":"l̋","ł":"l̸","Ł":"L̸","ɭ":"l̨","Ɨ":"l̵","ƚ":"l̵","ɫ":"l̴","إ":"lٕ","ﺈ":"lٕ","ﺇ":"lٕ","ٳ":"lٕ","ŀ":"l·","Ŀ":"l·","ᒷ":"l·","🄂":"l,","⒈":"l.","ױ":"l'","⒓":"l2.","㏫":"l2日","㋋":"l2月","㍤":"l2点","⒔":"l3.","㏬":"l3日","㍥":"l3点","⒕":"l4.","㏭":"l4日","㍦":"l4点","⒖":"l5.","㏮":"l5日","㍧":"l5点","⒗":"l6.","㏯":"l6日","㍨":"l6点","⒘":"l7.","㏰":"l7日","㍩":"l7点","⒙":"l8.","㏱":"l8日","㍪":"l8点","⒚":"l9.","㏲":"l9日","㍫":"l9点","lj":"lj","IJ":"lJ","Lj":"Lj","LJ":"LJ","‖":"ll","∥":"ll","Ⅱ":"ll","ǁ":"ll","װ":"ll","⒒":"ll.","Ⅲ":"lll","㏪":"ll日","㋊":"ll月","㍣":"ll点","Ю":"lO","⒑":"lO.","㏩":"lO日","㋉":"lO月","㍢":"lO点","ʪ":"ls","₶":"lt","Ⅳ":"lV","Ⅸ":"lX","ɮ":"lȝ","ʫ":"lz","أ":"lٴ","ﺄ":"lٴ","ﺃ":"lٴ","ٲ":"lٴ","ٵ":"lٴ","ﷳ":"lكبر","ﷲ":"lللّٰo","㏠":"l日","㋀":"l月","㍙":"l点","ⳑ":"ʟ","𐑃":"ʟ","M":"M","Ⅿ":"M","ℳ":"M","𝐌":"M","𝑀":"M","𝑴":"M","𝓜":"M","𝔐":"M","𝕄":"M","𝕸":"M","𝖬":"M","𝗠":"M","𝘔":"M","𝙈":"M","𝙼":"M","Μ":"M","𝚳":"M","𝛭":"M","𝜧":"M","𝝡":"M","𝞛":"M","Ϻ":"M","Ⲙ":"M","М":"M","Ꮇ":"M","ᗰ":"M","ᛖ":"M","ꓟ":"M","𐊰":"M","𐌑":"M","Ӎ":"M̦","🝫":"MB","ⷨ":"ᷟ","𝐧":"n","𝑛":"n","𝒏":"n","𝓃":"n","𝓷":"n","𝔫":"n","𝕟":"n","𝖓":"n","𝗇":"n","𝗻":"n","𝘯":"n","𝙣":"n","𝚗":"n","π":"n","ϖ":"n","ℼ":"n","𝛑":"n","𝛡":"n","𝜋":"n","𝜛":"n","𝝅":"n","𝝕":"n","𝝿":"n","𝞏":"n","𝞹":"n","𝟉":"n","ᴨ":"n","п":"n","ո":"n","ռ":"n","N":"N","ℕ":"N","𝐍":"N","𝑁":"N","𝑵":"N","𝒩":"N","𝓝":"N","𝔑":"N","𝕹":"N","𝖭":"N","𝗡":"N","𝘕":"N","𝙉":"N","𝙽":"N","Ν":"N","𝚴":"N","𝛮":"N","𝜨":"N","𝝢":"N","𝞜":"N","Ⲛ":"N","ꓠ":"N","𐔓":"N","ɳ":"n̨","ƞ":"n̩","η":"n̩","𝛈":"n̩","𝜂":"n̩","𝜼":"n̩","𝝶":"n̩","𝞰":"n̩","Ɲ":"N̦","ᵰ":"n̴","nj":"nj","Nj":"Nj","NJ":"NJ","№":"No","ͷ":"ᴎ","и":"ᴎ","𐑍":"ᴎ","ņ":"ɲ","ం":"o","ಂ":"o","ം":"o","ං":"o","०":"o","੦":"o","૦":"o","௦":"o","౦":"o","೦":"o","൦":"o","๐":"o","໐":"o","၀":"o","٥":"o","۵":"o","o":"o","ℴ":"o","𝐨":"o","𝑜":"o","𝒐":"o","𝓸":"o","𝔬":"o","𝕠":"o","𝖔":"o","𝗈":"o","𝗼":"o","𝘰":"o","𝙤":"o","𝚘":"o","ᴏ":"o","ᴑ":"o","ꬽ":"o","ο":"o","𝛐":"o","𝜊":"o","𝝄":"o","𝝾":"o","𝞸":"o","σ":"o","𝛔":"o","𝜎":"o","𝝈":"o","𝞂":"o","𝞼":"o","ⲟ":"o","о":"o","ჿ":"o","օ":"o","ס":"o","ه":"o","𞸤":"o","𞹤":"o","𞺄":"o","ﻫ":"o","ﻬ":"o","ﻪ":"o","ﻩ":"o","ھ":"o","ﮬ":"o","ﮭ":"o","ﮫ":"o","ﮪ":"o","ہ":"o","ﮨ":"o","ﮩ":"o","ﮧ":"o","ﮦ":"o","ە":"o","ഠ":"o","ဝ":"o","𑣈":"o","𑣗":"o","𐐬":"o","߀":"O","০":"O","୦":"O","〇":"O","𑓐":"O","𑣠":"O","𝟎":"O","𝟘":"O","𝟢":"O","𝟬":"O","𝟶":"O","O":"O","𝐎":"O","𝑂":"O","𝑶":"O","𝒪":"O","𝓞":"O","𝔒":"O","𝕆":"O","𝕺":"O","𝖮":"O","𝗢":"O","𝘖":"O","𝙊":"O","𝙾":"O","Ο":"O","𝚶":"O","𝛰":"O","𝜪":"O","𝝤":"O","𝞞":"O","Ⲟ":"O","О":"O","Օ":"O","ⵔ":"O","ዐ":"O","ଠ":"O","ꓳ":"O","𑢵":"O","𐊒":"O","𐊫":"O","𐐄":"O","𐔖":"O","⁰":"º","ᵒ":"º","ǒ":"ŏ","Ǒ":"Ŏ","ۿ":"ô","ø":"o̸","ꬾ":"o̸","Ø":"O̸","ⵁ":"O̸","Ǿ":"Ó̸","ɵ":"o̵","ꝋ":"o̵","ө":"o̵","ѳ":"o̵","⊖":"O̵","⊝":"O̵","⍬":"O̵","𝈚":"O̵","🜔":"O̵","Ɵ":"O̵","Ꝋ":"O̵","θ":"O̵","ϑ":"O̵","𝛉":"O̵","𝛝":"O̵","𝜃":"O̵","𝜗":"O̵","𝜽":"O̵","𝝑":"O̵","𝝷":"O̵","𝞋":"O̵","𝞱":"O̵","𝟅":"O̵","Θ":"O̵","ϴ":"O̵","𝚯":"O̵","𝚹":"O̵","𝛩":"O̵","𝛳":"O̵","𝜣":"O̵","𝜭":"O̵","𝝝":"O̵","𝝧":"O̵","𝞗":"O̵","𝞡":"O̵","Ө":"O̵","Ѳ":"O̵","ⴱ":"O̵","Ꮎ":"O̵","Ꮻ":"O̵","ﳙ":"oٰ","🄁":"O,","🄀":"O.","ơ":"o'","Ơ":"O'","Ꭴ":"O'","%":"º/₀","٪":"º/₀","⁒":"º/₀","‰":"º/₀₀","؉":"º/₀₀","‱":"º/₀₀₀","؊":"º/₀₀₀","œ":"oe","Œ":"OE","ɶ":"oᴇ","∞":"oo","ꝏ":"oo","ꚙ":"oo","Ꝏ":"OO","Ꚙ":"OO","ﳗ":"oج","ﱑ":"oج","ﳘ":"oم","ﱒ":"oم","ﶓ":"oمج","ﶔ":"oمم","ﱓ":"oى","ﱔ":"oى","ൟ":"oരo","တ":"oာ","㍘":"O点","ↄ":"ɔ","ᴐ":"ɔ","ͻ":"ɔ","𐑋":"ɔ","Ↄ":"Ɔ","Ͻ":"Ɔ","ꓛ":"Ɔ","𐐣":"Ɔ","ꬿ":"ɔ̸","𐐿":"ɷ","⍴":"p","p":"p","𝐩":"p","𝑝":"p","𝒑":"p","𝓅":"p","𝓹":"p","𝔭":"p","𝕡":"p","𝖕":"p","𝗉":"p","𝗽":"p","𝘱":"p","𝙥":"p","𝚙":"p","ρ":"p","ϱ":"p","𝛒":"p","𝛠":"p","𝜌":"p","𝜚":"p","𝝆":"p","𝝔":"p","𝞀":"p","𝞎":"p","𝞺":"p","𝟈":"p","ⲣ":"p","р":"p","P":"P","ℙ":"P","𝐏":"P","𝑃":"P","𝑷":"P","𝒫":"P","𝓟":"P","𝔓":"P","𝕻":"P","𝖯":"P","𝗣":"P","𝘗":"P","𝙋":"P","𝙿":"P","Ρ":"P","𝚸":"P","𝛲":"P","𝜬":"P","𝝦":"P","𝞠":"P","Ⲣ":"P","Р":"P","Ꮲ":"P","ᑭ":"P","ꓑ":"P","𐊕":"P","ƥ":"p̔","ᵽ":"p̵","ᑷ":"p·","ᒆ":"P'","ᴩ":"ᴘ","φ":"ɸ","ϕ":"ɸ","𝛗":"ɸ","𝛟":"ɸ","𝜑":"ɸ","𝜙":"ɸ","𝝋":"ɸ","𝝓":"ɸ","𝞅":"ɸ","𝞍":"ɸ","𝞿":"ɸ","𝟇":"ɸ","ⲫ":"ɸ","ф":"ɸ","𝐪":"q","𝑞":"q","𝒒":"q","𝓆":"q","𝓺":"q","𝔮":"q","𝕢":"q","𝖖":"q","𝗊":"q","𝗾":"q","𝘲":"q","𝙦":"q","𝚚":"q","ԛ":"q","գ":"q","զ":"q","ℚ":"Q","𝐐":"Q","𝑄":"Q","𝑸":"Q","𝒬":"Q","𝓠":"Q","𝔔":"Q","𝕼":"Q","𝖰":"Q","𝗤":"Q","𝘘":"Q","𝙌":"Q","𝚀":"Q","ⵕ":"Q","ʠ":"q̔","🜀":"QE","ᶐ":"ɋ","𝐫":"r","𝑟":"r","𝒓":"r","𝓇":"r","𝓻":"r","𝔯":"r","𝕣":"r","𝖗":"r","𝗋":"r","𝗿":"r","𝘳":"r","𝙧":"r","𝚛":"r","ꭇ":"r","ꭈ":"r","ᴦ":"r","ⲅ":"r","г":"r","𝈖":"R","ℛ":"R","ℜ":"R","ℝ":"R","𝐑":"R","𝑅":"R","𝑹":"R","𝓡":"R","𝕽":"R","𝖱":"R","𝗥":"R","𝘙":"R","𝙍":"R","𝚁":"R","Ʀ":"R","Ꭱ":"R","Ꮢ":"R","ᖇ":"R","ꓣ":"R","ɽ":"r̨","ɼ":"r̩","ɍ":"r̵","ғ":"r̵","ᵲ":"r̴","ґ":"r'","𑣣":"rn",m:"rn","ⅿ":"rn","𝐦":"rn","𝑚":"rn","𝒎":"rn","𝓂":"rn","𝓶":"rn","𝔪":"rn","𝕞":"rn","𝖒":"rn","𝗆":"rn","𝗺":"rn","𝘮":"rn","𝙢":"rn","𝚖":"rn","ᴍ":"rn","ꭑ":"rn","ʍ":"rn","м":"rn","𑜀":"rn","₥":"rn̸","ɱ":"rn̦","ӎ":"rn̦","ᵯ":"rn̴","₨":"Rs","я":"ᴙ","ᵳ":"ɾ̴","℩":"ɿ","s":"s","𝐬":"s","𝑠":"s","𝒔":"s","𝓈":"s","𝓼":"s","𝔰":"s","𝕤":"s","𝖘":"s","𝗌":"s","𝘀":"s","𝘴":"s","𝙨":"s","𝚜":"s","ꜱ":"s","ƽ":"s","ѕ":"s","𑣁":"s","𐑈":"s","S":"S","𝐒":"S","𝑆":"S","𝑺":"S","𝒮":"S","𝓢":"S","𝔖":"S","𝕊":"S","𝕾":"S","𝖲":"S","𝗦":"S","𝘚":"S","𝙎":"S","𝚂":"S","Ѕ":"S","Տ":"S","Ꮥ":"S","Ꮪ":"S","ꓢ":"S","𐊖":"S","𐐠":"S","ʂ":"s̨","ᵴ":"s̴","ꞵ":"ß","β":"ß","ϐ":"ß","𝛃":"ß","𝛽":"ß","𝜷":"ß","𝝱":"ß","𝞫":"ß","Ᏸ":"ß","🝜":"sss","st":"st","∫":"ʃ","ꭍ":"ʃ","∑":"Ʃ","⅀":"Ʃ","Σ":"Ʃ","𝚺":"Ʃ","𝛴":"Ʃ","𝜮":"Ʃ","𝝨":"Ʃ","𝞢":"Ʃ","ⵉ":"Ʃ","∬":"ʃʃ","∭":"ʃʃʃ","⨌":"ʃʃʃʃ","𝐭":"t","𝑡":"t","𝒕":"t","𝓉":"t","𝓽":"t","𝔱":"t","𝕥":"t","𝖙":"t","𝗍":"t","𝘁":"t","𝘵":"t","𝙩":"t","𝚝":"t","ᴛ":"t","τ":"t","𝛕":"t","𝜏":"t","𝝉":"t","𝞃":"t","𝞽":"t","т":"t","⊤":"T","⟙":"T","🝨":"T","T":"T","𝐓":"T","𝑇":"T","𝑻":"T","𝒯":"T","𝓣":"T","𝔗":"T","𝕋":"T","𝕿":"T","𝖳":"T","𝗧":"T","𝘛":"T","𝙏":"T","𝚃":"T","Τ":"T","𝚻":"T","𝛵":"T","𝜯":"T","𝝩":"T","𝞣":"T","Ⲧ":"T","Т":"T","Ꭲ":"T","ꓔ":"T","𑢼":"T","𐊗":"T","𐊱":"T","𐌕":"T","ƭ":"t̔","⍡":"T̈","Ⱦ":"T̸","Ț":"Ţ","Ʈ":"T̨","ҭ":"t̩","Ҭ":"T̩","₮":"T⃫","ŧ":"t̵","Ŧ":"T̵","ᵵ":"t̴","Ⴀ":"Ꞇ","Ꜩ":"T3","ʨ":"tɕ","℡":"TEL","ꝷ":"tf","ʦ":"ts","ʧ":"tʃ","ꜩ":"tȝ","ţ":"ƫ","ț":"ƫ","Ꮏ":"ƫ","𝐮":"u","𝑢":"u","𝒖":"u","𝓊":"u","𝓾":"u","𝔲":"u","𝕦":"u","𝖚":"u","𝗎":"u","𝘂":"u","𝘶":"u","𝙪":"u","𝚞":"u","ꞟ":"u","ᴜ":"u","ꭎ":"u","ꭒ":"u","ʋ":"u","υ":"u","𝛖":"u","𝜐":"u","𝝊":"u","𝞄":"u","𝞾":"u","ц":"u","ս":"u","𑣘":"u","∪":"U","⋃":"U","𝐔":"U","𝑈":"U","𝑼":"U","𝒰":"U","𝓤":"U","𝔘":"U","𝕌":"U","𝖀":"U","𝖴":"U","𝗨":"U","𝘜":"U","𝙐":"U","𝚄":"U","Ս":"U","ሀ":"U","ᑌ":"U","ꓴ":"U","𑢸":"U","ǔ":"ŭ","Ǔ":"Ŭ","ᵾ":"u̵","Ʉ":"U̵","Ꮜ":"U̵","ᑘ":"U·","ᑧ":"U'","ᵫ":"ue","պ":"ɰ","ሣ":"ɰ","℧":"Ʊ","ᘮ":"Ʊ","ᘴ":"Ʊ","ᵿ":"ʊ̵","∨":"v","⋁":"v","v":"v","ⅴ":"v","𝐯":"v","𝑣":"v","𝒗":"v","𝓋":"v","𝓿":"v","𝔳":"v","𝕧":"v","𝖛":"v","𝗏":"v","𝘃":"v","𝘷":"v","𝙫":"v","𝚟":"v","ᴠ":"v","ν":"v","𝛎":"v","𝜈":"v","𝝂":"v","𝝼":"v","𝞶":"v","ѵ":"v","ט":"v","𑣀":"v","𝈍":"V","٧":"V","۷":"V","Ⅴ":"V","𝐕":"V","𝑉":"V","𝑽":"V","𝒱":"V","𝓥":"V","𝔙":"V","𝕍":"V","𝖁":"V","𝖵":"V","𝗩":"V","𝘝":"V","𝙑":"V","𝚅":"V","Ѵ":"V","ⴸ":"V","Ꮩ":"V","ᐯ":"V","ꛟ":"V","ꓦ":"V","𑢠":"V","𐔝":"V","ᐻ":"V·","🝬":"VB","ⅵ":"vi","ⅶ":"vii","ⅷ":"viii","Ⅵ":"Vl","Ⅶ":"Vll","Ⅷ":"Vlll","🜈":"Vᷤ","ɯ":"vv",w:"vv","𝐰":"vv","𝑤":"vv","𝒘":"vv","𝓌":"vv","𝔀":"vv","𝔴":"vv","𝕨":"vv","𝖜":"vv","𝗐":"vv","𝘄":"vv","𝘸":"vv","𝙬":"vv","𝚠":"vv","ᴡ":"vv","ѡ":"vv","ԝ":"vv","ա":"vv","𑜎":"vv","𑜏":"vv","ѽ":"vv҆҇","𑓅":"vv̇","ꝡ":"vy","ᴧ":"ʌ","٨":"Ʌ","۸":"Ʌ","Λ":"Ʌ","𝚲":"Ʌ","𝛬":"Ʌ","𝜦":"Ʌ","𝝠":"Ʌ","𝞚":"Ʌ","Л":"Ʌ","ⴷ":"Ʌ","ᐱ":"Ʌ","ꛎ":"Ʌ","ꓥ":"Ʌ","𐊍":"Ʌ","Ӆ":"Ʌ̦","ᐽ":"Ʌ·","𑣯":"W","𑣦":"W","𝐖":"W","𝑊":"W","𝑾":"W","𝒲":"W","𝓦":"W","𝔚":"W","𝕎":"W","𝖂":"W","𝖶":"W","𝗪":"W","𝘞":"W","𝙒":"W","𝚆":"W","Ԝ":"W","Ꮃ":"W","Ꮤ":"W","ꓪ":"W","₩":"W̵","᙮":"x","×":"x","⤫":"x","⤬":"x","⨯":"x","x":"x","ⅹ":"x","𝐱":"x","𝑥":"x","𝒙":"x","𝓍":"x","𝔁":"x","𝔵":"x","𝕩":"x","𝖝":"x","𝗑":"x","𝘅":"x","𝘹":"x","𝙭":"x","𝚡":"x","х":"x","ᕁ":"x","ᕽ":"x","᙭":"X","╳":"X","𐌢":"X","𑣬":"X","X":"X","Ⅹ":"X","𝐗":"X","𝑋":"X","𝑿":"X","𝒳":"X","𝓧":"X","𝔛":"X","𝕏":"X","𝖃":"X","𝖷":"X","𝗫":"X","𝘟":"X","𝙓":"X","𝚇":"X","Ꭓ":"X","Χ":"X","𝚾":"X","𝛸":"X","𝜲":"X","𝝬":"X","𝞦":"X","Ⲭ":"X","Х":"X","ⵝ":"X","ᚷ":"X","ꓫ":"X","𐊐":"X","𐊴":"X","𐌗":"X","𐔧":"X","⨰":"ẋ","Ҳ":"X̩","ⅺ":"xi","ⅻ":"xii","Ⅺ":"Xl","Ⅻ":"Xll","ɣ":"y","ᶌ":"y","y":"y","𝐲":"y","𝑦":"y","𝒚":"y","𝓎":"y","𝔂":"y","𝔶":"y","𝕪":"y","𝖞":"y","𝗒":"y","𝘆":"y","𝘺":"y","𝙮":"y","𝚢":"y","ʏ":"y","ỿ":"y","ꭚ":"y","γ":"y","ℽ":"y","𝛄":"y","𝛾":"y","𝜸":"y","𝝲":"y","𝞬":"y","у":"y","ү":"y","ყ":"y","𑣜":"y","Y":"Y","𝐘":"Y","𝑌":"Y","𝒀":"Y","𝒴":"Y","𝓨":"Y","𝔜":"Y","𝕐":"Y","𝖄":"Y","𝖸":"Y","𝗬":"Y","𝘠":"Y","𝙔":"Y","𝚈":"Y","Υ":"Y","ϒ":"Y","𝚼":"Y","𝛶":"Y","𝜰":"Y","𝝪":"Y","𝞤":"Y","Ⲩ":"Y","Ү":"Y","Ꭹ":"Y","Ꮍ":"Y","ꓬ":"Y","𑢤":"Y","𐊲":"Y","ƴ":"y̔","ɏ":"y̵","ұ":"y̵","¥":"Y̵","Ɏ":"Y̵","Ұ":"Y̵","ʒ":"ȝ","ꝫ":"ȝ","ⳍ":"ȝ","ӡ":"ȝ","ჳ":"ȝ","𝐳":"z","𝑧":"z","𝒛":"z","𝓏":"z","𝔃":"z","𝔷":"z","𝕫":"z","𝖟":"z","𝗓":"z","𝘇":"z","𝘻":"z","𝙯":"z","𝚣":"z","ᴢ":"z","𑣄":"z","𐋵":"Z","𑣥":"Z","Z":"Z","ℤ":"Z","ℨ":"Z","𝐙":"Z","𝑍":"Z","𝒁":"Z","𝒵":"Z","𝓩":"Z","𝖅":"Z","𝖹":"Z","𝗭":"Z","𝘡":"Z","𝙕":"Z","𝚉":"Z","Ζ":"Z","𝚭":"Z","𝛧":"Z","𝜡":"Z","𝝛":"Z","𝞕":"Z","Ꮓ":"Z","ꓜ":"Z","𑢩":"Z","ʐ":"z̨","ƶ":"z̵","Ƶ":"Z̵","ȥ":"z̦","Ȥ":"Z̦","ᵶ":"z̴","ƿ":"þ","ϸ":"þ","Ϸ":"Þ","⁹":"ꝰ","ᴤ":"ƨ","ϩ":"ƨ","ꙅ":"ƨ","ь":"ƅ","ы":"ƅi","ˤ":"ˁ","ꛍ":"ʡ","⊙":"ʘ","☉":"ʘ","⨀":"ʘ","Ꙩ":"ʘ","ⵙ":"ʘ","ℾ":"Γ","𝚪":"Γ","𝛤":"Γ","𝜞":"Γ","𝝘":"Γ","𝞒":"Γ","Ⲅ":"Γ","Г":"Γ","Ꮁ":"Γ","ᒥ":"Γ","Ғ":"Γ̵","ᒯ":"Γ·","Ґ":"Γ'","∆":"Δ","△":"Δ","🜂":"Δ","𝚫":"Δ","𝛥":"Δ","𝜟":"Δ","𝝙":"Δ","𝞓":"Δ","Ⲇ":"Δ","ⵠ":"Δ","ᐃ":"Δ","𐊅":"Δ","𐊣":"Δ","⍙":"Δ̲","ᐏ":"Δ·","ᐬ":"Δᐠ","𝟋":"ϝ","𝛇":"ζ","𝜁":"ζ","𝜻":"ζ","𝝵":"ζ","𝞯":"ζ","ⳤ":"ϗ","𝛌":"λ","𝜆":"λ","𝝀":"λ","𝝺":"λ","𝞴":"λ","Ⲗ":"λ","µ":"μ","𝛍":"μ","𝜇":"μ","𝝁":"μ","𝝻":"μ","𝞵":"μ","𝛏":"ξ","𝜉":"ξ","𝝃":"ξ","𝝽":"ξ","𝞷":"ξ","𝚵":"Ξ","𝛯":"Ξ","𝜩":"Ξ","𝝣":"Ξ","𝞝":"Ξ","∏":"Π","ℿ":"Π","𝚷":"Π","𝛱":"Π","𝜫":"Π","𝝥":"Π","𝞟":"Π","Ⲡ":"Π","П":"Π","ꛛ":"Π","𐊭":"Ϙ","𐌒":"Ϙ","ϛ":"ς","𝛓":"ς","𝜍":"ς","𝝇":"ς","𝞁":"ς","𝞻":"ς","𝚽":"Φ","𝛷":"Φ","𝜱":"Φ","𝝫":"Φ","𝞥":"Φ","Ⲫ":"Φ","Ф":"Φ","Փ":"Φ","ቀ":"Φ","ᛰ":"Φ","𐊳":"Φ","ꭓ":"χ","ꭕ":"χ","𝛘":"χ","𝜒":"χ","𝝌":"χ","𝞆":"χ","𝟀":"χ","ⲭ":"χ","𝛙":"ψ","𝜓":"ψ","𝝍":"ψ","𝞇":"ψ","𝟁":"ψ","ѱ":"ψ","𝚿":"Ψ","𝛹":"Ψ","𝜳":"Ψ","𝝭":"Ψ","𝞧":"Ψ","Ⲯ":"Ψ","Ѱ":"Ψ","ᛘ":"Ψ","𐊵":"Ψ","⍵":"ω","ꞷ":"ω","𝛚":"ω","𝜔":"ω","𝝎":"ω","𝞈":"ω","𝟂":"ω","ⲱ":"ω","ꙍ":"ω","Ω":"Ω","𝛀":"Ω","𝛺":"Ω","𝜴":"Ω","𝝮":"Ω","𝞨":"Ω","ᘯ":"Ω","ᘵ":"Ω","𐊶":"Ω","⍹":"ω̲","ώ":"ῴ","☰":"Ⲷ","Ⳝ":"Ϭ","җ":"ж̩","Җ":"Ж̩","𝈋":"И","Ͷ":"И","ꚡ":"И","𐐥":"И","Й":"Ѝ","Ҋ":"Ѝ̦","ѝ":"й","ҋ":"й̦","ᴫ":"л","ӆ":"л̦","ꭠ":"љ","𝈂":"Ӿ","𝈢":"Ѡ","Ꮗ":"Ѡ","ᗯ":"Ѡ","Ѽ":"Ѡ҆҇","ᣭ":"Ѡ·","Ꞷ":"Ꙍ","ӌ":"ҷ","Ӌ":"Ҷ","Ҿ":"Ҽ̨","ⲽ":"ш","Ⲽ":"Ш","Ꙑ":"Ъl","℈":"Э","🜁":"Ꙙ","ꦒ":"ⰿ","և":"եւ","ኔ":"ձ","ﬔ":"մե","ﬕ":"մի","ﬗ":"մխ","ﬓ":"մն","∩":"Ո","⋂":"Ո","𝉅":"Ո","በ":"Ո","ᑎ":"Ո","ꓵ":"Ո","ᑚ":"Ո·","ᑨ":"Ո'","ﬖ":"վն","₽":"Ք","˓":"ՙ","ʿ":"ՙ","ℵ":"א","ﬡ":"א","אָ":"אַ","אּ":"אַ","ﭏ":"אל","ℶ":"ב","ℷ":"ג","ℸ":"ד","ﬢ":"ד","ﬣ":"ה","יּ":"יִ","ﬤ":"כ","ﬥ":"ל","ﬦ":"ם","ﬠ":"ע","ﬧ":"ר","שׂ":"שׁ","שּ":"שׁ","שּׂ":"שּׁ","ﬨ":"ת","ﺀ":"ء","۽":"ء͈","ﺂ":"آ","ﺁ":"آ","ﭑ":"ٱ","ﭐ":"ٱ","𞸁":"ب","𞸡":"ب","𞹡":"ب","𞺁":"ب","𞺡":"ب","ﺑ":"ب","ﺒ":"ب","ﺐ":"ب","ﺏ":"ب","ݑ":"بۛ","ࢡ":"بٔ","ﲠ":"بo","ﳢ":"بo","ﲜ":"بج","ﰅ":"بج","ﲝ":"بح","ﰆ":"بح","ﷂ":"بحى","ﲞ":"بخ","ﰇ":"بخ","ﳒ":"بخ","ﱋ":"بخ","ﶞ":"بخى","ﱪ":"بر","ﱫ":"بز","ﲟ":"بم","ﳡ":"بم","ﱬ":"بم","ﰈ":"بم","ﱭ":"بن","ﱮ":"بى","ﰉ":"بى","ﱯ":"بى","ﰊ":"بى","ﭔ":"ٻ","ﭕ":"ٻ","ﭓ":"ٻ","ﭒ":"ٻ","ې":"ٻ","ﯦ":"ٻ","ﯧ":"ٻ","ﯥ":"ٻ","ﯤ":"ٻ","ﭜ":"ڀ","ﭝ":"ڀ","ﭛ":"ڀ","ﭚ":"ڀ","ࢩ":"ݔ","ݧ":"ݔ","ö":"ة","ﺔ":"ة","ﺓ":"ة","ۃ":"ة","𞸕":"ت","𞸵":"ت","𞹵":"ت","𞺕":"ت","𞺵":"ت","ﺗ":"ت","ﺘ":"ت","ﺖ":"ت","ﺕ":"ت","ﲥ":"تo","ﳤ":"تo","ﲡ":"تج","ﰋ":"تج","ﵐ":"تجم","ﶠ":"تجى","ﶟ":"تجى","ﲢ":"تح","ﰌ":"تح","ﵒ":"تحج","ﵑ":"تحج","ﵓ":"تحم","ﲣ":"تخ","ﰍ":"تخ","ﵔ":"تخم","ﶢ":"تخى","ﶡ":"تخى","ﱰ":"تر","ﱱ":"تز","ﲤ":"تم","ﳣ":"تم","ﱲ":"تم","ﰎ":"تم","ﵕ":"تمج","ﵖ":"تمح","ﵗ":"تمخ","ﶤ":"تمى","ﶣ":"تمى","ﱳ":"تن","ﱴ":"تى","ﰏ":"تى","ﱵ":"تى","ﰐ":"تى","ﭠ":"ٺ","ﭡ":"ٺ","ﭟ":"ٺ","ﭞ":"ٺ","ﭤ":"ٿ","ﭥ":"ٿ","ﭣ":"ٿ","ﭢ":"ٿ","𞸂":"ج","𞸢":"ج","𞹂":"ج","𞹢":"ج","𞺂":"ج","𞺢":"ج","ﺟ":"ج","ﺠ":"ج","ﺞ":"ج","ﺝ":"ج","ﲧ":"جح","ﰕ":"جح","ﶦ":"جحى","ﶾ":"جحى","ﷻ":"جل جلlلo","ﲨ":"جم","ﰖ":"جم","ﵙ":"جمح","ﵘ":"جمح","ﶧ":"جمى","ﶥ":"جمى","ﴝ":"جى","ﴁ":"جى","ﴞ":"جى","ﴂ":"جى","ﭸ":"ڃ","ﭹ":"ڃ","ﭷ":"ڃ","ﭶ":"ڃ","ﭴ":"ڄ","ﭵ":"ڄ","ﭳ":"ڄ","ﭲ":"ڄ","ﭼ":"چ","ﭽ":"چ","ﭻ":"چ","ﭺ":"چ","ﮀ":"ڇ","ﮁ":"ڇ","ﭿ":"ڇ","ﭾ":"ڇ","𞸇":"ح","𞸧":"ح","𞹇":"ح","𞹧":"ح","𞺇":"ح","𞺧":"ح","ﺣ":"ح","ﺤ":"ح","ﺢ":"ح","ﺡ":"ح","څ":"حۛ","ځ":"حٔ","ݲ":"حٔ","ﲩ":"حج","ﰗ":"حج","ﶿ":"حجى","ﲪ":"حم","ﰘ":"حم","ﵛ":"حمى","ﵚ":"حمى","ﴛ":"حى","ﳿ":"حى","ﴜ":"حى","ﴀ":"حى","𞸗":"خ","𞸷":"خ","𞹗":"خ","𞹷":"خ","𞺗":"خ","𞺷":"خ","ﺧ":"خ","ﺨ":"خ","ﺦ":"خ","ﺥ":"خ","ﲫ":"خج","ﰙ":"خج","ﰚ":"خح","ﲬ":"خم","ﰛ":"خم","ﴟ":"خى","ﴃ":"خى","ﴠ":"خى","ﴄ":"خى","𐋡":"د","𞸃":"د","𞺃":"د","𞺣":"د","ﺪ":"د","ﺩ":"د","ڈ":"دؕ","ﮉ":"دؕ","ﮈ":"دؕ","ڎ":"دۛ","ﮇ":"دۛ","ﮆ":"دۛ","ۮ":"د̂","ࢮ":"د̤̣","𞸘":"ذ","𞺘":"ذ","𞺸":"ذ","ﺬ":"ذ","ﺫ":"ذ","ﱛ":"ذٰ","ڋ":"ڊؕ","ﮅ":"ڌ","ﮄ":"ڌ","ﮃ":"ڍ","ﮂ":"ڍ","𞸓":"ر","𞺓":"ر","𞺳":"ر","ﺮ":"ر","ﺭ":"ر","ڑ":"رؕ","ﮍ":"رؕ","ﮌ":"رؕ","ژ":"رۛ","ﮋ":"رۛ","ﮊ":"رۛ","ڒ":"ر̆","ۯ":"ر̂","ݬ":"رٔ","ﱜ":"رٰ","ﷶ":"رسول","﷼":"رىlل","𞸆":"ز","𞺆":"ز","𞺦":"ز","ﺰ":"ز","ﺯ":"ز","ࢲ":"ز̂","ݱ":"ڗؕ","𞸎":"س","𞸮":"س","𞹎":"س","𞹮":"س","𞺎":"س","𞺮":"س","ﺳ":"س","ﺴ":"س","ﺲ":"س","ﺱ":"س","ش":"سۛ","𞸔":"سۛ","𞸴":"سۛ","𞹔":"سۛ","𞹴":"سۛ","𞺔":"سۛ","𞺴":"سۛ","ﺷ":"سۛ","ﺸ":"سۛ","ﺶ":"سۛ","ﺵ":"سۛ","ݾ":"س̂","ﴱ":"سo","ﳨ":"سo","ﴲ":"سۛo","ﳪ":"سۛo","ﲭ":"سج","ﴴ":"سج","ﰜ":"سج","ﴭ":"سۛج","ﴷ":"سۛج","ﴥ":"سۛج","ﴉ":"سۛج","ﵝ":"سجح","ﵞ":"سجى","ﵩ":"سۛجى","ﲮ":"سح","ﴵ":"سح","ﰝ":"سح","ﴮ":"سۛح","ﴸ":"سۛح","ﴦ":"سۛح","ﴊ":"سۛح","ﵜ":"سحج","ﵨ":"سۛحم","ﵧ":"سۛحم","ﶪ":"سۛحى","ﲯ":"سخ","ﴶ":"سخ","ﰞ":"سخ","ﴯ":"سۛخ","ﴹ":"سۛخ","ﴧ":"سۛخ","ﴋ":"سۛخ","ﶨ":"سخى","ﷆ":"سخى","ﴪ":"سر","ﴎ":"سر","ﴩ":"سۛر","ﴍ":"سۛر","ﲰ":"سم","ﳧ":"سم","ﰟ":"سم","ﴰ":"سۛم","ﳩ":"سۛم","ﴨ":"سۛم","ﴌ":"سۛم","ﵡ":"سمج","ﵠ":"سمح","ﵟ":"سمح","ﵫ":"سۛمخ","ﵪ":"سۛمخ","ﵣ":"سمم","ﵢ":"سمم","ﵭ":"سۛمم","ﵬ":"سۛمم","ﴗ":"سى","ﳻ":"سى","ﴘ":"سى","ﳼ":"سى","ﴙ":"سۛى","ﳽ":"سۛى","ﴚ":"سۛى","ﳾ":"سۛى","𐋲":"ص","𞸑":"ص","𞸱":"ص","𞹑":"ص","𞹱":"ص","𞺑":"ص","𞺱":"ص","ﺻ":"ص","ﺼ":"ص","ﺺ":"ص","ﺹ":"ص","ڞ":"صۛ","ࢯ":"ص̤̣","ﲱ":"صح","ﰠ":"صح","ﵥ":"صحح","ﵤ":"صحح","ﶩ":"صحى","ﲲ":"صخ","ﴫ":"صر","ﴏ":"صر","ﷵ":"صلعم","ﷹ":"صلى","ﷰ":"صلى","ﷺ":"صلى lللo علىo وسلم","ﲳ":"صم","ﰡ":"صم","ﷅ":"صمم","ﵦ":"صمم","ﴡ":"صى","ﴅ":"صى","ﴢ":"صى","ﴆ":"صى","𞸙":"ض","𞸹":"ض","𞹙":"ض","𞹹":"ض","𞺙":"ض","𞺹":"ض","ﺿ":"ض","ﻀ":"ض","ﺾ":"ض","ﺽ":"ض","ﲴ":"ضج","ﰢ":"ضج","ﲵ":"ضح","ﰣ":"ضح","ﵮ":"ضحى","ﶫ":"ضحى","ﲶ":"ضخ","ﰤ":"ضخ","ﵰ":"ضخم","ﵯ":"ضخم","ﴬ":"ضر","ﴐ":"ضر","ﲷ":"ضم","ﰥ":"ضم","ﴣ":"ضى","ﴇ":"ضى","ﴤ":"ضى","ﴈ":"ضى","𐋨":"ط","𞸈":"ط","𞹨":"ط","𞺈":"ط","𞺨":"ط","ﻃ":"ط","ﻄ":"ط","ﻂ":"ط","ﻁ":"ط","ڟ":"طۛ","ﲸ":"طح","ﰦ":"طح","ﴳ":"طم","ﴺ":"طم","ﰧ":"طم","ﵲ":"طمح","ﵱ":"طمح","ﵳ":"طمم","ﵴ":"طمى","ﴑ":"طى","ﳵ":"طى","ﴒ":"طى","ﳶ":"طى","𞸚":"ظ","𞹺":"ظ","𞺚":"ظ","𞺺":"ظ","ﻇ":"ظ","ﻈ":"ظ","ﻆ":"ظ","ﻅ":"ظ","ﲹ":"ظم","ﴻ":"ظم","ﰨ":"ظم","؏":"ع","𞸏":"ع","𞸯":"ع","𞹏":"ع","𞹯":"ع","𞺏":"ع","𞺯":"ع","ﻋ":"ع","ﻌ":"ع","ﻊ":"ع","ﻉ":"ع","ﲺ":"عج","ﰩ":"عج","ﷄ":"عجم","ﵵ":"عجم","ﷷ":"علىo","ﲻ":"عم","ﰪ":"عم","ﵷ":"عمم","ﵶ":"عمم","ﵸ":"عمى","ﶶ":"عمى","ﴓ":"عى","ﳷ":"عى","ﴔ":"عى","ﳸ":"عى","𞸛":"غ","𞸻":"غ","𞹛":"غ","𞹻":"غ","𞺛":"غ","𞺻":"غ","ﻏ":"غ","ﻐ":"غ","ﻎ":"غ","ﻍ":"غ","ﲼ":"غج","ﰫ":"غج","ﲽ":"غم","ﰬ":"غم","ﵹ":"غمم","ﵻ":"غمى","ﵺ":"غمى","ﴕ":"غى","ﳹ":"غى","ﴖ":"غى","ﳺ":"غى","𞸐":"ف","𞸰":"ف","𞹰":"ف","𞺐":"ف","𞺰":"ف","ﻓ":"ف","ﻔ":"ف","ﻒ":"ف","ﻑ":"ف","ڧ":"ف","ﲾ":"فج","ﰭ":"فج","ﲿ":"فح","ﰮ":"فح","ﳀ":"فخ","ﰯ":"فخ","ﵽ":"فخم","ﵼ":"فخم","ﳁ":"فم","ﰰ":"فم","ﷁ":"فمى","ﱼ":"فى","ﰱ":"فى","ﱽ":"فى","ﰲ":"فى","𞸞":"ڡ","𞹾":"ڡ","ٯ":"ڡ","𞸟":"ڡ","𞹟":"ڡ","ڤ":"ڡۛ","ﭬ":"ڡۛ","ﭭ":"ڡۛ","ﭫ":"ڡۛ","ﭪ":"ڡۛ","ڨ":"ڡۛ","ࢤ":"ڢۛ","ﭰ":"ڦ","ﭱ":"ڦ","ﭯ":"ڦ","ﭮ":"ڦ","𞸒":"ق","𞸲":"ق","𞹒":"ق","𞹲":"ق","𞺒":"ق","𞺲":"ق","ﻗ":"ق","ﻘ":"ق","ﻖ":"ق","ﻕ":"ق","ﳂ":"قح","ﰳ":"قح","ﷱ":"قلى","ﳃ":"قم","ﰴ":"قم","ﶴ":"قمح","ﵾ":"قمح","ﵿ":"قمم","ﶲ":"قمى","ﱾ":"قى","ﰵ":"قى","ﱿ":"قى","ﰶ":"قى","𞸊":"ك","𞸪":"ك","𞹪":"ك","ﻛ":"ك","ﻜ":"ك","ﻚ":"ك","ﻙ":"ك","ک":"ك","ﮐ":"ك","ﮑ":"ك","ﮏ":"ك","ﮎ":"ك","ڪ":"ك","ڭ":"كۛ","ﯕ":"كۛ","ﯖ":"كۛ","ﯔ":"كۛ","ﯓ":"كۛ","ݣ":"كۛ","ﲀ":"كl","ﰷ":"كl","ﳄ":"كج","ﰸ":"كج","ﳅ":"كح","ﰹ":"كح","ﳆ":"كخ","ﰺ":"كخ","ﳇ":"كل","ﳫ":"كل","ﲁ":"كل","ﰻ":"كل","ﳈ":"كم","ﳬ":"كم","ﲂ":"كم","ﰼ":"كم","ﷃ":"كمم","ﶻ":"كمم","ﶷ":"كمى","ﲃ":"كى","ﰽ":"كى","ﲄ":"كى","ﰾ":"كى","ݢ":"ڬ","ﮔ":"گ","ﮕ":"گ","ﮓ":"گ","ﮒ":"گ","ࢰ":"گ","ڴ":"گۛ","ﮜ":"ڱ","ﮝ":"ڱ","ﮛ":"ڱ","ﮚ":"ڱ","ﮘ":"ڳ","ﮙ":"ڳ","ﮗ":"ڳ","ﮖ":"ڳ","𞸋":"ل","𞸫":"ل","𞹋":"ل","𞺋":"ل","𞺫":"ل","ﻟ":"ل","ﻠ":"ل","ﻞ":"ل","ﻝ":"ل","ڷ":"لۛ","ڵ":"ل̆","ﻼ":"لl","ﻻ":"لl","ﻺ":"لlٕ","ﻹ":"لlٕ","ﻸ":"لlٴ","ﻷ":"لlٴ","ﳍ":"لo","ﻶ":"لآ","ﻵ":"لآ","ﳉ":"لج","ﰿ":"لج","ﶃ":"لجج","ﶄ":"لجج","ﶺ":"لجم","ﶼ":"لجم","ﶬ":"لجى","ﳊ":"لح","ﱀ":"لح","ﶵ":"لحم","ﶀ":"لحم","ﶂ":"لحى","ﶁ":"لحى","ﳋ":"لخ","ﱁ":"لخ","ﶆ":"لخم","ﶅ":"لخم","ﳌ":"لم","ﳭ":"لم","ﲅ":"لم","ﱂ":"لم","ﶈ":"لمح","ﶇ":"لمح","ﶭ":"لمى","ﲆ":"لى","ﱃ":"لى","ﲇ":"لى","ﱄ":"لى","𞸌":"م","𞸬":"م","𞹬":"م","𞺌":"م","𞺬":"م","ﻣ":"م","ﻤ":"م","ﻢ":"م","ﻡ":"م","ࢧ":"مۛ","۾":"م͈","ﲈ":"مl","ﳎ":"مج","ﱅ":"مج","ﶌ":"مجح","ﶒ":"مجخ","ﶍ":"مجم","ﷀ":"مجى","ﳏ":"مح","ﱆ":"مح","ﶉ":"محج","ﶊ":"محم","ﷴ":"محمد","ﶋ":"محى","ﳐ":"مخ","ﱇ":"مخ","ﶎ":"مخج","ﶏ":"مخم","ﶹ":"مخى","ﳑ":"مم","ﲉ":"مم","ﱈ":"مم","ﶱ":"ممى","ﱉ":"مى","ﱊ":"مى","𞸍":"ن","𞸭":"ن","𞹍":"ن","𞹭":"ن","𞺍":"ن","𞺭":"ن","ﻧ":"ن","ﻨ":"ن","ﻦ":"ن","ﻥ":"ن","ݨ":"نؕ","ݩ":"ن̆","ﳖ":"نo","ﳯ":"نo","ﶸ":"نجح","ﶽ":"نجح","ﶘ":"نجم","ﶗ":"نجم","ﶙ":"نجى","ﷇ":"نجى","ﳓ":"نح","ﱌ":"نح","ﶕ":"نحم","ﶖ":"نحى","ﶳ":"نحى","ﳔ":"نخ","ﱍ":"نخ","ﲊ":"نر","ﲋ":"نز","ﳕ":"نم","ﳮ":"نم","ﲌ":"نم","ﱎ":"نم","ﶛ":"نمى","ﶚ":"نمى","ﲍ":"نن","ﲎ":"نى","ﱏ":"نى","ﲏ":"نى","ﱐ":"نى","ۂ":"ۀ","ﮥ":"ۀ","ﮤ":"ۀ","𐋤":"و","𞸅":"و","𞺅":"و","𞺥":"و","ﻮ":"و","ﻭ":"و","ࢱ":"و","ۋ":"وۛ","ﯟ":"وۛ","ﯞ":"وۛ","ۇ":"و̓","ﯘ":"و̓","ﯗ":"و̓","ۆ":"و̆","ﯚ":"و̆","ﯙ":"و̆","ۉ":"و̂","ﯣ":"و̂","ﯢ":"و̂","ۈ":"وٰ","ﯜ":"وٰ","ﯛ":"وٰ","ؤ":"وٴ","ﺆ":"وٴ","ﺅ":"وٴ","ٶ":"وٴ","ٷ":"و̓ٴ","ﯝ":"و̓ٴ","ﷸ":"وسلم","ﯡ":"ۅ","ﯠ":"ۅ","ٮ":"ى","𞸜":"ى","𞹼":"ى","ں":"ى","𞸝":"ى","𞹝":"ى","ﮟ":"ى","ﮞ":"ى","ﯨ":"ى","ﯩ":"ى","ﻰ":"ى","ﻯ":"ى","ي":"ى","𞸉":"ى","𞸩":"ى","𞹉":"ى","𞹩":"ى","𞺉":"ى","𞺩":"ى","ﻳ":"ى","ﻴ":"ى","ﻲ":"ى","ﻱ":"ى","ی":"ى","ﯾ":"ى","ﯿ":"ى","ﯽ":"ى","ﯼ":"ى","ے":"ى","ﮯ":"ى","ﮮ":"ى","ٹ":"ىؕ","ﭨ":"ىؕ","ﭩ":"ىؕ","ﭧ":"ىؕ","ﭦ":"ىؕ","ڻ":"ىؕ","ﮢ":"ىؕ","ﮣ":"ىؕ","ﮡ":"ىؕ","ﮠ":"ىؕ","پ":"ىۛ","ﭘ":"ىۛ","ﭙ":"ىۛ","ﭗ":"ىۛ","ﭖ":"ىۛ","ث":"ىۛ","𞸖":"ىۛ","𞸶":"ىۛ","𞹶":"ىۛ","𞺖":"ىۛ","𞺶":"ىۛ","ﺛ":"ىۛ","ﺜ":"ىۛ","ﺚ":"ىۛ","ﺙ":"ىۛ","ڽ":"ىۛ","ۑ":"ىۛ","ؿ":"ىۛ","ݖ":"ى̆","ێ":"ى̆","ؽ":"ى̂","ࢨ":"ىٔ","ﲐ":"ىٰ","ﱝ":"ىٰ","ﳞ":"ىo","ﳱ":"ىo","ﳦ":"ىۛo","ئ":"ىٴ","ﺋ":"ىٴ","ﺌ":"ىٴ","ﺊ":"ىٴ","ﺉ":"ىٴ","ٸ":"ىٴ","ﯫ":"ىٴl","ﯪ":"ىٴl","ﲛ":"ىٴo","ﳠ":"ىٴo","ﯭ":"ىٴo","ﯬ":"ىٴo","ﯸ":"ىٴٻ","ﯷ":"ىٴٻ","ﯶ":"ىٴٻ","ﲗ":"ىٴج","ﰀ":"ىٴج","ﲘ":"ىٴح","ﰁ":"ىٴح","ﲙ":"ىٴخ","ﱤ":"ىٴر","ﱥ":"ىٴز","ﲚ":"ىٴم","ﳟ":"ىٴم","ﱦ":"ىٴم","ﰂ":"ىٴم","ﱧ":"ىٴن","ﯯ":"ىٴو","ﯮ":"ىٴو","ﯱ":"ىٴو̓","ﯰ":"ىٴو̓","ﯳ":"ىٴو̆","ﯲ":"ىٴو̆","ﯵ":"ىٴوٰ","ﯴ":"ىٴوٰ","ﯻ":"ىٴى","ﯺ":"ىٴى","ﱨ":"ىٴى","ﯹ":"ىٴى","ﰃ":"ىٴى","ﱩ":"ىٴى","ﰄ":"ىٴى","ﳚ":"ىج","ﱕ":"ىج","ﰑ":"ىۛج","ﶯ":"ىجى","ﳛ":"ىح","ﱖ":"ىح","ﶮ":"ىحى","ﳜ":"ىخ","ﱗ":"ىخ","ﲑ":"ىر","ﱶ":"ىۛر","ﲒ":"ىز","ﱷ":"ىۛز","ﳝ":"ىم","ﳰ":"ىم","ﲓ":"ىم","ﱘ":"ىم","ﲦ":"ىۛم","ﳥ":"ىۛم","ﱸ":"ىۛم","ﰒ":"ىۛم","ﶝ":"ىمم","ﶜ":"ىمم","ﶰ":"ىمى","ﲔ":"ىن","ﱹ":"ىۛن","ﲕ":"ىى","ﱙ":"ىى","ﲖ":"ىى","ﱚ":"ىى","ﱺ":"ىۛى","ﰓ":"ىۛى","ﱻ":"ىۛى","ﰔ":"ىۛى","ﮱ":"ۓ","ﮰ":"ۓ","𐊸":"ⵀ","⁞":"ⵂ","⸽":"ⵂ","⦙":"ⵂ","︙":"ⵗ","⁝":"ⵗ","⋮":"ⵗ","Մ":"ሆ","Ռ":"ቡ","Ի":"ኮ","Պ":"ጣ","आ":"अा","ऒ":"अाॆ","ओ":"अाे","औ":"अाै","ऄ":"अॆ","ऑ":"अॉ","ऍ":"एॅ","ऎ":"एॆ","ऐ":"एे","ई":"र्इ","ઽ":"ऽ","𑇜":"ꣻ","𑇋":"ऺ","ુ":"ु","ૂ":"ू","ੋ":"ॆ","੍":"्","્":"्","আ":"অা","ৠ":"ঋৃ","ৡ":"ঋৃ","𑒒":"ঘ","𑒔":"চ","𑒖":"জ","𑒘":"ঞ","𑒙":"ট","𑒛":"ড","𑒪":"ণ","𑒞":"ত","𑒟":"থ","𑒠":"দ","𑒡":"ধ","𑒢":"ন","𑒣":"প","𑒩":"ব","𑒧":"ম","𑒨":"য","𑒫":"র","𑒝":"ল","𑒭":"ষ","𑒮":"স","𑓄":"ঽ","𑒰":"া","𑒱":"ি","𑒹":"ে","𑒼":"ো","𑒾":"ৌ","𑓂":"্","𑒽":"ৗ","ਉ":"ੳੁ","ਊ":"ੳੂ","ਆ":"ਅਾ","ਐ":"ਅੈ","ਔ":"ਅੌ","ਇ":"ੲਿ","ਈ":"ੲੀ","ਏ":"ੲੇ","આ":"અા","ઑ":"અાૅ","ઓ":"અાે","ઔ":"અાૈ","ઍ":"અૅ","એ":"અે","ઐ":"અૈ","ଆ":"ଅା","௮":"அ","ர":"ஈ","ா":"ஈ","௫":"ஈு","௨":"உ","ഉ":"உ","ஊ":"உள","ഊ":"உൗ","௭":"எ","௷":"எவ","ஜ":"ஐ","ജ":"ஐ","௧":"க","௪":"ச","௬":"சு","௲":"சூ","ഺ":"டி","ണ":"ண","௺":"நீ","௴":"மீ","௰":"ய","ഴ":"ழ","ௗ":"ள","ை":"ன","ശ":"ஶ","௸":"ஷ","ി":"ி","ീ":"ி","ொ":"ெஈ","ௌ":"ெள","ோ":"ேஈ","ಅ":"అ","ಆ":"ఆ","ಇ":"ఇ","ౠ":"ఋా","ౡ":"ఌా","ಒ":"ఒ","ఔ":"ఒౌ","ಔ":"ఒౌ","ఓ":"ఒౕ","ಓ":"ఒౕ","ಜ":"జ","ಞ":"ఞ","ఢ":"డ̣","ಣ":"ణ","థ":"ధּ","భ":"బ̣","ಯ":"య","ఠ":"రּ","ಱ":"ఱ","ಲ":"ల","ష":"వ̣","హ":"వా","మ":"వు","ూ":"ుా","ౄ":"ృా","ೡ":"ಌಾ","ഈ":"ഇൗ","ഐ":"എെ","ഓ":"ഒാ","ഔ":"ഒൗ","ൡ":"ഞ","൫":"ദ്ര","൹":"നു","ഌ":"നു","ങ":"നു","൯":"ന്","ൻ":"ന്","൬":"ന്ന","൚":"ന്മ","റ":"ര","൪":"ര്","ർ":"ര്","൮":"വ്ര","൶":"ഹ്മ","ൂ":"ു","ൃ":"ു","ൈ":"െെ","෪":"ජ","෫":"ද","𑗘":"𑖂","𑗙":"𑖂","𑗚":"𑖃","𑗛":"𑖄","𑗜":"𑖲","𑗝":"𑖳","ฃ":"ข","ด":"ค","ต":"ค","ม":"ฆ","ຈ":"จ","ซ":"ช","ฏ":"ฎ","ท":"ฑ","ບ":"บ","ປ":"ป","ຝ":"ฝ","ພ":"พ","ຟ":"ฟ","ฦ":"ภ","ຍ":"ย","។":"ฯ","ๅ":"า","ำ":"̊า","ិ":"ิ","ី":"ี","ឹ":"ึ","ឺ":"ื","ຸ":"ุ","ູ":"ู","แ":"เเ","ໜ":"ຫນ","ໝ":"ຫມ","ຳ":"̊າ","ཪ":"ར","ༀ":"ཨོཾ","ཷ":"ྲཱྀ","ཹ":"ླཱྀ","ႁ":"ဂှ","က":"ဂာ","ၰ":"ဃှ","ၦ":"ပှ","ဟ":"ပာ","ၯ":"ပာှ","ဪ":"ဩော်","႞":"ႃ̊","ឣ":"អ","᧐":"ᦞ","᧑":"ᦱ","᪀":"ᩅ","᪐":"ᩅ","꩓":"ꨁ","꩖":"ꨣ","᭒":"ᬍ","᭓":"ᬑ","᭘":"ᬨ","ꦣ":"ꦝ","ᢖ":"ᡜ","ᡕ":"ᠵ","ῶ":"Ꮿ","ᐍ":"ᐁ·","ᐫ":"ᐁᐠ","ᐑ":"ᐄ·","ᐓ":"ᐅ·","ᐭ":"ᐅᐠ","ᐕ":"ᐆ·","ᐘ":"ᐊ·","ᐮ":"ᐊᐠ","ᐚ":"ᐋ·","ᓑ":"ᐡ","ᕀ":"ᐩ","ᐿ":"ᐲ·","ᑃ":"ᐴ·","⍩":"ᐵ","ᑇ":"ᐹ·","ᑜ":"ᑏ·","⸧":"ᑐ","⊃":"ᑐ","ᑞ":"ᑐ·","ᑩ":"ᑐ'","⟉":"ᑐ/","⫗":"ᑐᑕ","ᑠ":"ᑑ·","⸦":"ᑕ","⊂":"ᑕ","ᑢ":"ᑕ·","ᑪ":"ᑕ'","ᑤ":"ᑖ·","ᑵ":"ᑫ·","ᒅ":"ᑫ'","ᑹ":"ᑮ·","ᑽ":"ᑰ·","ᑿ":"ᑲ·","ᒈ":"ᑲ'","ᒁ":"ᑳ·","ᘃ":"ᒉ","ᒓ":"ᒉ·","ᒕ":"ᒋ·","ᒗ":"ᒌ·","ᒛ":"ᒎ·","ᘂ":"ᒐ","ᒝ":"ᒐ·","ᒟ":"ᒑ·","ᒭ":"ᒣ·","ᒱ":"ᒦ·","ᒳ":"ᒧ·","ᒵ":"ᒨ·","ᒹ":"ᒫ·","ᓊ":"ᓀ·","ᓌ":"ᓇ·","ᓎ":"ᓈ·","ᘄ":"ᓓ","ᓝ":"ᓓ·","ᓟ":"ᓕ·","ᓡ":"ᓖ·","ᓣ":"ᓗ·","ᓥ":"ᓘ·","ᘇ":"ᓚ","ᓧ":"ᓚ·","ᓩ":"ᓛ·","ᓷ":"ᓭ·","ᓹ":"ᓯ·","ᓻ":"ᓰ·","ᓽ":"ᓱ·","ᓿ":"ᓲ·","ᔁ":"ᓴ·","ᔃ":"ᓵ·","ᔌ":"ᔋ<","ᔍ":"ᔋᑕ","ᔎ":"ᔋᑲ","ᔏ":"ᔋᒐ","ᔘ":"ᔐ·","ᔚ":"ᔑ·","ᔜ":"ᔒ·","ᔞ":"ᔓ·","ᔠ":"ᔔ·","ᔢ":"ᔕ·","ᔤ":"ᔖ·","ᔲ":"ᔨ·","ᔴ":"ᔩ·","ᔶ":"ᔪ·","ᔸ":"ᔫ·","ᔺ":"ᔭ·","ᔼ":"ᔮ·","ᘢ":"ᕃ","ᣠ":"ᕃ·","ᘣ":"ᕆ","ᘤ":"ᕊ","ᕏ":"ᕌ·","ᖁ":"ᕐd","ᕿ":"ᕐP","ᙯ":"ᕐᑫ","ᕾ":"ᕐᑬ","ᖀ":"ᕐᑮ","ᖂ":"ᕐᑰ","ᖃ":"ᕐᑲ","ᖄ":"ᕐᑳ","ᖅ":"ᕐᒃ","ᕜ":"ᕚ·","ᣣ":"ᕞ·","ᣤ":"ᕦ·","ᕩ":"ᕧ·","ᣥ":"ᕫ·","ᣨ":"ᖆ·","ᖑ":"ᖕJ","ᙰ":"ᖕᒉ","ᖎ":"ᖕᒊ","ᖏ":"ᖕᒋ","ᖐ":"ᖕᒌ","ᖒ":"ᖕᒎ","ᖓ":"ᖕᒐ","ᖔ":"ᖕᒑ","ᙳ":"ᖖJ","ᙱ":"ᖖᒋ","ᙲ":"ᖖᒌ","ᙴ":"ᖖᒎ","ᙵ":"ᖖᒐ","ᙶ":"ᖖᒑ","ᣪ":"ᖗ·","ᙷ":"ᖧ·","ᙸ":"ᖨ·","ᙹ":"ᖩ·","ᙺ":"ᖪ·","ᙻ":"ᖫ·","ᙼ":"ᖬ·","ᙽ":"ᖭ·","⪫":"ᗒ","⪪":"ᗕ","ꓷ":"ᗡ","ᣰ":"ᗴ·","ᣲ":"ᘛ·","ᶻ":"ᙆ","ꓭ":"ᙠ","ˡ":"ᣳ","ʳ":"ᣴ","ˢ":"ᣵ","ꚰ":"ᚹ","ᛡ":"ᚼ","⍿":"ᚽ","ᛂ":"ᚽ","𝈿":"ᛋ","↑":"ᛏ","↿":"ᛐ","⥮":"ᛐ⇂","⥣":"ᛐᛚ","ⵣ":"ᛯ","↾":"ᛚ","⨡":"ᛚ","⋄":"ᛜ","◇":"ᛜ","◊":"ᛜ","♢":"ᛜ","🝔":"ᛜ","𑢷":"ᛜ","𐊔":"ᛜ","⍚":"ᛜ̲","⋈":"ᛞ","⨝":"ᛞ","↕":"ᛨ","ㄱ":"ᄀ","ᆨ":"ᄀ","ᄁ":"ᄀᄀ","ㄲ":"ᄀᄀ","ᆩ":"ᄀᄀ","ᇺ":"ᄀᄂ","ᅚ":"ᄀᄃ","ᇃ":"ᄀᄅ","ᇻ":"ᄀᄇ","ᆪ":"ᄀᄉ","ㄳ":"ᄀᄉ","ᇄ":"ᄀᄉᄀ","ᇼ":"ᄀᄎ","ᇽ":"ᄀᄏ","ᇾ":"ᄀᄒ","ㄴ":"ᄂ","ᆫ":"ᄂ","ᄓ":"ᄂᄀ","ᇅ":"ᄂᄀ","ᄔ":"ᄂᄂ","ㅥ":"ᄂᄂ","ᇿ":"ᄂᄂ","ᄕ":"ᄂᄃ","ㅦ":"ᄂᄃ","ᇆ":"ᄂᄃ","ퟋ":"ᄂᄅ","ᄖ":"ᄂᄇ","ᅛ":"ᄂᄉ","ᇇ":"ᄂᄉ","ㅧ":"ᄂᄉ","ᅜ":"ᄂᄌ","ᆬ":"ᄂᄌ","ㄵ":"ᄂᄌ","ퟌ":"ᄂᄎ","ᇉ":"ᄂᄐ","ᅝ":"ᄂᄒ","ᆭ":"ᄂᄒ","ㄶ":"ᄂᄒ","ᇈ":"ᄂᅀ","ㅨ":"ᄂᅀ","ㄷ":"ᄃ","ᆮ":"ᄃ","ᄗ":"ᄃᄀ","ᇊ":"ᄃᄀ","ᄄ":"ᄃᄃ","ㄸ":"ᄃᄃ","ퟍ":"ᄃᄃ","ퟎ":"ᄃᄃᄇ","ᅞ":"ᄃᄅ","ᇋ":"ᄃᄅ","ꥠ":"ᄃᄆ","ꥡ":"ᄃᄇ","ퟏ":"ᄃᄇ","ꥢ":"ᄃᄉ","ퟐ":"ᄃᄉ","ퟑ":"ᄃᄉᄀ","ꥣ":"ᄃᄌ","ퟒ":"ᄃᄌ","ퟓ":"ᄃᄎ","ퟔ":"ᄃᄐ","ㄹ":"ᄅ","ᆯ":"ᄅ","ꥤ":"ᄅᄀ","ᆰ":"ᄅᄀ","ㄺ":"ᄅᄀ","ꥥ":"ᄅᄀᄀ","ퟕ":"ᄅᄀᄀ","ᇌ":"ᄅᄀᄉ","ㅩ":"ᄅᄀᄉ","ퟖ":"ᄅᄀᄒ","ᄘ":"ᄅᄂ","ᇍ":"ᄅᄂ","ꥦ":"ᄅᄃ","ᇎ":"ᄅᄃ","ㅪ":"ᄅᄃ","ꥧ":"ᄅᄃᄃ","ᇏ":"ᄅᄃᄒ","ᄙ":"ᄅᄅ","ᇐ":"ᄅᄅ","ퟗ":"ᄅᄅᄏ","ꥨ":"ᄅᄆ","ᆱ":"ᄅᄆ","ㄻ":"ᄅᄆ","ᇑ":"ᄅᄆᄀ","ᇒ":"ᄅᄆᄉ","ퟘ":"ᄅᄆᄒ","ꥩ":"ᄅᄇ","ᆲ":"ᄅᄇ","ㄼ":"ᄅᄇ","ퟙ":"ᄅᄇᄃ","ꥪ":"ᄅᄇᄇ","ᇓ":"ᄅᄇᄉ","ㅫ":"ᄅᄇᄉ","ꥫ":"ᄅᄇᄋ","ᇕ":"ᄅᄇᄋ","ퟚ":"ᄅᄇᄑ","ᇔ":"ᄅᄇᄒ","ꥬ":"ᄅᄉ","ᆳ":"ᄅᄉ","ㄽ":"ᄅᄉ","ᇖ":"ᄅᄉᄉ","ᄛ":"ᄅᄋ","ퟝ":"ᄅᄋ","ꥭ":"ᄅᄌ","ꥮ":"ᄅᄏ","ᇘ":"ᄅᄏ","ᆴ":"ᄅᄐ","ㄾ":"ᄅᄐ","ᆵ":"ᄅᄑ","ㄿ":"ᄅᄑ","ᄚ":"ᄅᄒ","ㅀ":"ᄅᄒ","ᄻ":"ᄅᄒ","ᆶ":"ᄅᄒ","ퟲ":"ᄅᄒ","ᇗ":"ᄅᅀ","ㅬ":"ᄅᅀ","ퟛ":"ᄅᅌ","ᇙ":"ᄅᅙ","ㅭ":"ᄅᅙ","ퟜ":"ᄅᅙᄒ","ㅁ":"ᄆ","ᆷ":"ᄆ","ꥯ":"ᄆᄀ","ᇚ":"ᄆᄀ","ퟞ":"ᄆᄂ","ퟟ":"ᄆᄂᄂ","ꥰ":"ᄆᄃ","ᇛ":"ᄆᄅ","ퟠ":"ᄆᄆ","ᄜ":"ᄆᄇ","ㅮ":"ᄆᄇ","ᇜ":"ᄆᄇ","ퟡ":"ᄆᄇᄉ","ꥱ":"ᄆᄉ","ᇝ":"ᄆᄉ","ㅯ":"ᄆᄉ","ᇞ":"ᄆᄉᄉ","ᄝ":"ᄆᄋ","ㅱ":"ᄆᄋ","ᇢ":"ᄆᄋ","ퟢ":"ᄆᄌ","ᇠ":"ᄆᄎ","ᇡ":"ᄆᄒ","ᇟ":"ᄆᅀ","ㅰ":"ᄆᅀ","ㅂ":"ᄇ","ᆸ":"ᄇ","ᄞ":"ᄇᄀ","ㅲ":"ᄇᄀ","ᄟ":"ᄇᄂ","ᄠ":"ᄇᄃ","ㅳ":"ᄇᄃ","ퟣ":"ᄇᄃ","ᇣ":"ᄇᄅ","ퟤ":"ᄇᄅᄑ","ퟥ":"ᄇᄆ","ᄈ":"ᄇᄇ","ㅃ":"ᄇᄇ","ퟦ":"ᄇᄇ","ᄬ":"ᄇᄇᄋ","ㅹ":"ᄇᄇᄋ","ᄡ":"ᄇᄉ","ㅄ":"ᄇᄉ","ᆹ":"ᄇᄉ","ᄢ":"ᄇᄉᄀ","ㅴ":"ᄇᄉᄀ","ᄣ":"ᄇᄉᄃ","ㅵ":"ᄇᄉᄃ","ퟧ":"ᄇᄉᄃ","ᄤ":"ᄇᄉᄇ","ᄥ":"ᄇᄉᄉ","ᄦ":"ᄇᄉᄌ","ꥲ":"ᄇᄉᄐ","ᄫ":"ᄇᄋ","ㅸ":"ᄇᄋ","ᇦ":"ᄇᄋ","ᄧ":"ᄇᄌ","ㅶ":"ᄇᄌ","ퟨ":"ᄇᄌ","ᄨ":"ᄇᄎ","ퟩ":"ᄇᄎ","ꥳ":"ᄇᄏ","ᄩ":"ᄇᄐ","ㅷ":"ᄇᄐ","ᄪ":"ᄇᄑ","ᇤ":"ᄇᄑ","ꥴ":"ᄇᄒ","ᇥ":"ᄇᄒ","ㅅ":"ᄉ","ᆺ":"ᄉ","ᄭ":"ᄉᄀ","ㅺ":"ᄉᄀ","ᇧ":"ᄉᄀ","ᄮ":"ᄉᄂ","ㅻ":"ᄉᄂ","ᄯ":"ᄉᄃ","ㅼ":"ᄉᄃ","ᇨ":"ᄉᄃ","ᄰ":"ᄉᄅ","ᇩ":"ᄉᄅ","ᄱ":"ᄉᄆ","ퟪ":"ᄉᄆ","ᄲ":"ᄉᄇ","ㅽ":"ᄉᄇ","ᇪ":"ᄉᄇ","ᄳ":"ᄉᄇᄀ","ퟫ":"ᄉᄇᄋ","ᄊ":"ᄉᄉ","ㅆ":"ᄉᄉ","ᆻ":"ᄉᄉ","ퟬ":"ᄉᄉᄀ","ퟭ":"ᄉᄉᄃ","ꥵ":"ᄉᄉᄇ","ᄴ":"ᄉᄉᄉ","ᄵ":"ᄉᄋ","ᄶ":"ᄉᄌ","ㅾ":"ᄉᄌ","ퟯ":"ᄉᄌ","ᄷ":"ᄉᄎ","ퟰ":"ᄉᄎ","ᄸ":"ᄉᄏ","ᄹ":"ᄉᄐ","ퟱ":"ᄉᄐ","ᄺ":"ᄉᄑ","ퟮ":"ᄉᅀ","ㅇ":"ᄋ","ᆼ":"ᄋ","ᅁ":"ᄋᄀ","ᇬ":"ᄋᄀ","ᇭ":"ᄋᄀᄀ","ᅂ":"ᄋᄃ","ꥶ":"ᄋᄅ","ᅃ":"ᄋᄆ","ᅄ":"ᄋᄇ","ᅅ":"ᄋᄉ","ᇱ":"ᄋᄉ","ㆂ":"ᄋᄉ","ᅇ":"ᄋᄋ","ㆀ":"ᄋᄋ","ᇮ":"ᄋᄋ","ᅈ":"ᄋᄌ","ᅉ":"ᄋᄎ","ᇯ":"ᄋᄏ","ᅊ":"ᄋᄐ","ᅋ":"ᄋᄑ","ꥷ":"ᄋᄒ","ᅆ":"ᄋᅀ","ᇲ":"ᄋᅀ","ㆃ":"ᄋᅀ","ㅈ":"ᄌ","ᆽ":"ᄌ","ퟷ":"ᄌᄇ","ퟸ":"ᄌᄇᄇ","ᅍ":"ᄌᄋ","ᄍ":"ᄌᄌ","ㅉ":"ᄌᄌ","ퟹ":"ᄌᄌ","ꥸ":"ᄌᄌᄒ","ㅊ":"ᄎ","ᆾ":"ᄎ","ᅒ":"ᄎᄏ","ᅓ":"ᄎᄒ","ㅋ":"ᄏ","ᆿ":"ᄏ","ㅌ":"ᄐ","ᇀ":"ᄐ","ꥹ":"ᄐᄐ","ㅍ":"ᄑ","ᇁ":"ᄑ","ᅖ":"ᄑᄇ","ᇳ":"ᄑᄇ","ퟺ":"ᄑᄉ","ᅗ":"ᄑᄋ","ㆄ":"ᄑᄋ","ᇴ":"ᄑᄋ","ퟻ":"ᄑᄐ","ꥺ":"ᄑᄒ","ㅎ":"ᄒ","ᇂ":"ᄒ","ᇵ":"ᄒᄂ","ᇶ":"ᄒᄅ","ᇷ":"ᄒᄆ","ᇸ":"ᄒᄇ","ꥻ":"ᄒᄉ","ᅘ":"ᄒᄒ","ㆅ":"ᄒᄒ","ᄽ":"ᄼᄼ","ᄿ":"ᄾᄾ","ㅿ":"ᅀ","ᇫ":"ᅀ","ퟳ":"ᅀᄇ","ퟴ":"ᅀᄇᄋ","ㆁ":"ᅌ","ᇰ":"ᅌ","ퟵ":"ᅌᄆ","ퟶ":"ᅌᄒ","ᅏ":"ᅎᅎ","ᅑ":"ᅐᅐ","ㆆ":"ᅙ","ᇹ":"ᅙ","ꥼ":"ᅙᅙ","ㅤ":"ᅠ","ㅏ":"ᅡ","ᆣ":"ᅡー","ᅶ":"ᅡᅩ","ᅷ":"ᅡᅮ","ᅢ":"ᅡ丨","ㅐ":"ᅡ丨","ㅑ":"ᅣ","ᅸ":"ᅣᅩ","ᅹ":"ᅣᅭ","ᆤ":"ᅣᅮ","ᅤ":"ᅣ丨","ㅒ":"ᅣ丨","ㅓ":"ᅥ","ᅼ":"ᅥー","ᅺ":"ᅥᅩ","ᅻ":"ᅥᅮ","ᅦ":"ᅥ丨","ㅔ":"ᅥ丨","ㅕ":"ᅧ","ᆥ":"ᅧᅣ","ᅽ":"ᅧᅩ","ᅾ":"ᅧᅮ","ᅨ":"ᅧ丨","ㅖ":"ᅧ丨","ㅗ":"ᅩ","ᅪ":"ᅩᅡ","ㅘ":"ᅩᅡ","ᅫ":"ᅩᅡ丨","ㅙ":"ᅩᅡ丨","ᆦ":"ᅩᅣ","ᆧ":"ᅩᅣ丨","ᅿ":"ᅩᅥ","ᆀ":"ᅩᅥ丨","ힰ":"ᅩᅧ","ᆁ":"ᅩᅧ丨","ᆂ":"ᅩᅩ","ힱ":"ᅩᅩ丨","ᆃ":"ᅩᅮ","ᅬ":"ᅩ丨","ㅚ":"ᅩ丨","ㅛ":"ᅭ","ힲ":"ᅭᅡ","ힳ":"ᅭᅡ丨","ᆄ":"ᅭᅣ","ㆇ":"ᅭᅣ","ᆆ":"ᅭᅣ","ᆅ":"ᅭᅣ丨","ㆈ":"ᅭᅣ丨","ힴ":"ᅭᅥ","ᆇ":"ᅭᅩ","ᆈ":"ᅭ丨","ㆉ":"ᅭ丨","ㅜ":"ᅮ","ᆉ":"ᅮᅡ","ᆊ":"ᅮᅡ丨","ᅯ":"ᅮᅥ","ㅝ":"ᅮᅥ","ᆋ":"ᅮᅥー","ᅰ":"ᅮᅥ丨","ㅞ":"ᅮᅥ丨","ힵ":"ᅮᅧ","ᆌ":"ᅮᅧ丨","ᆍ":"ᅮᅮ","ᅱ":"ᅮ丨","ㅟ":"ᅮ丨","ힶ":"ᅮ丨丨","ㅠ":"ᅲ","ᆎ":"ᅲᅡ","ힷ":"ᅲᅡ丨","ᆏ":"ᅲᅥ","ᆐ":"ᅲᅥ丨","ᆑ":"ᅲᅧ","ㆊ":"ᅲᅧ","ᆒ":"ᅲᅧ丨","ㆋ":"ᅲᅧ丨","ힸ":"ᅲᅩ","ᆓ":"ᅲᅮ","ᆔ":"ᅲ丨","ㆌ":"ᅲ丨","ㆍ":"ᆞ","ퟅ":"ᆞᅡ","ᆟ":"ᆞᅥ","ퟆ":"ᆞᅥ丨","ᆠ":"ᆞᅮ","ᆢ":"ᆞᆞ","ᆡ":"ᆞ丨","ㆎ":"ᆞ丨","ヘ":"へ","⍁":"〼","⧄":"〼","꒞":"ꁊ","꒬":"ꁐ","꒜":"ꃀ","꒨":"ꄲ","꒿":"ꉙ","꒾":"ꊱ","꒔":"ꋍ","꓀":"ꎫ","꓂":"ꎵ","꒺":"ꎿ","꒰":"ꏂ","꒧":"ꑘ","⊥":"ꓕ","⟂":"ꓕ","𝈜":"ꓕ","Ʇ":"ꓕ","Ꞟ":"ꓤ","⅁":"ꓨ","⅂":"ꓶ","𝈕":"ꓶ","𝈫":"ꓶ","𐐑":"ꓶ","⊕":"𐊨","⨁":"𐊨","🜨":"𐊨","Ꚛ":"𐊨","▽":"𐊼","𝈔":"𐊼","🜄":"𐊼","⧖":"𐋀","ꞛ":"𐐺","Ꞛ":"𐐒","𐒠":"𐒆","𐏑":"𐎂","𐏓":"𐎓","𒀸":"𐎚","☥":"𐦞","𓋹":"𐦞","〹":"卄","不":"不","丽":"丽","並":"並","⎜":"丨","⎟":"丨","⎢":"丨","⎥":"丨","⎪":"丨","⎮":"丨","㇑":"丨","ᅵ":"丨","ㅣ":"丨","⼁":"丨","ᆜ":"丨ー","ᆘ":"丨ᅡ","ᆙ":"丨ᅣ","ힽ":"丨ᅣᅩ","ힾ":"丨ᅣ丨","ힿ":"丨ᅧ","ퟀ":"丨ᅧ丨","ᆚ":"丨ᅩ","ퟁ":"丨ᅩ丨","ퟂ":"丨ᅭ","ᆛ":"丨ᅮ","ퟃ":"丨ᅲ","ᆝ":"丨ᆞ","ퟄ":"丨丨","串":"串","丸":"丸","丹":"丹","乁":"乁","㇠":"乙","⼄":"乙","㇟":"乚","⺃":"乚","㇖":"乛","⺂":"乛","⻲":"亀","亂":"亂","㇚":"亅","⼅":"亅","了":"了","ニ":"二","⼆":"二","𠄢":"𠄢","⼇":"亠","亮":"亮","⼈":"人","イ":"亻","⺅":"亻","什":"什","仌":"仌","令":"令","你":"你","倂":"併","倂":"併","侀":"侀","來":"來","例":"例","侮":"侮","侮":"侮","侻":"侻","便":"便","值":"値","倫":"倫","偺":"偺","備":"備","像":"像","僚":"僚","僧":"僧","僧":"僧","㒞":"㒞","⼉":"儿","兀":"兀","⺎":"兀","充":"充","免":"免","免":"免","兔":"兔","兤":"兤","⼊":"入","內":"內","全":"全","兩":"兩","ハ":"八","⼋":"八","六":"六","具":"具","𠔜":"𠔜","𠔥":"𠔥","冀":"冀","㒹":"㒹","⼌":"冂","再":"再","𠕋":"𠕋","冒":"冒","冕":"冕","㒻":"㒻","最":"最","⼍":"冖","冗":"冗","冤":"冤","⼎":"冫","冬":"冬","况":"况","况":"况","冷":"冷","凉":"凉","凌":"凌","凜":"凜","凞":"凞","⼏":"几","𠘺":"𠘺","凵":"凵","⼐":"凵","⼑":"刀","⺉":"刂","刃":"刃","切":"切","切":"切","列":"列","利":"利","㓟":"㓟","刺":"刺","刻":"刻","剆":"剆","割":"割","剷":"剷","劉":"劉","𠠄":"𠠄","カ":"力","力":"力","⼒":"力","劣":"劣","㔕":"㔕","劳":"劳","勇":"勇","勇":"勇","勉":"勉","勉":"勉","勒":"勒","勞":"勞","勤":"勤","勤":"勤","勵":"勵","⼓":"勹","勺":"勺","勺":"勺","包":"包","匆":"匆","𠣞":"𠣞","⼔":"匕","北":"北","北":"北","⼕":"匚","⼖":"匸","匿":"匿","⼗":"十","〸":"十","〺":"卅","卉":"卉","࿖":"卍","࿕":"卐","卑":"卑","卑":"卑","博":"博","ト":"卜","⼘":"卜","⼙":"卩","⺋":"㔾","即":"即","卵":"卵","卽":"卽","卿":"卿","卿":"卿","卿":"卿","⼚":"厂","𠨬":"𠨬","⼛":"厶","參":"參","⼜":"又","及":"及","叟":"叟","𠭣":"𠭣","ロ":"口","⼝":"口","囗":"口","⼞":"口","句":"句","叫":"叫","叱":"叱","吆":"吆","吏":"吏","吝":"吝","吸":"吸","呂":"呂","呈":"呈","周":"周","咞":"咞","咢":"咢","咽":"咽","䎛":"㖈","哶":"哶","唐":"唐","啓":"啓","啟":"啓","啕":"啕","啣":"啣","善":"善","善":"善","喇":"喇","喙":"喙","喙":"喙","喝":"喝","喝":"喝","喫":"喫","喳":"喳","嗀":"嗀","嗂":"嗂","嗢":"嗢","嘆":"嘆","嘆":"嘆","噑":"噑","噴":"噴","器":"器","囹":"囹","圖":"圖","圗":"圗","⼟":"土","士":"土","⼠":"土","型":"型","城":"城","㦳":"㘽","埴":"埴","堍":"堍","報":"報","堲":"堲","塀":"塀","塚":"塚","塚":"塚","塞":"塞","填":"塡","壿":"墫","墬":"墬","墳":"墳","壘":"壘","壟":"壟","𡓤":"𡓤","壮":"壮","売":"売","壷":"壷","⼡":"夂","夆":"夆","⼢":"夊","タ":"夕","⼣":"夕","多":"多","夢":"夢","⼤":"大","奄":"奄","奈":"奈","契":"契","奔":"奔","奢":"奢","女":"女","⼥":"女","𡚨":"𡚨","𡛪":"𡛪","姘":"姘","姬":"姬","娛":"娛","娧":"娧","婢":"婢","婦":"婦","嬀":"媯","㛮":"㛮","㛼":"㛼","媵":"媵","嬈":"嬈","嬨":"嬨","嬾":"嬾","嬾":"嬾","⼦":"子","⼧":"宀","宅":"宅","𡧈":"𡧈","寃":"寃","寘":"寘","寧":"寧","寧":"寧","寧":"寧","寮":"寮","寳":"寳","𡬘":"𡬘","⼨":"寸","寿":"寿","将":"将","⼩":"小","尢":"尢","⺐":"尢","⼪":"尢","⺏":"尣","㞁":"㞁","⼫":"尸","尿":"尿","屠":"屠","屢":"屢","層":"層","履":"履","屮":"屮","屮":"屮","⼬":"屮","𡴋":"𡴋","⼭":"山","峀":"峀","岍":"岍","𡷤":"𡷤","𡷦":"𡷦","崙":"崙","嵃":"嵃","嵐":"嵐","嵫":"嵫","嵮":"嵮","嵼":"嵼","嶲":"嶲","嶺":"嶺","⼮":"巛","巢":"巢","エ":"工","⼯":"工","⼰":"己","⺒":"巳","㠯":"㠯","巽":"巽","⼱":"巾","帲":"帡","帨":"帨","帽":"帽","幩":"幩","㡢":"㡢","𢆃":"𢆃","⼲":"干","年":"年","𢆟":"𢆟","⺓":"幺","⼳":"幺","⼴":"广","度":"度","㡼":"㡼","庰":"庰","庳":"庳","庶":"庶","廊":"廊","廊":"廊","廉":"廉","廒":"廒","廓":"廓","廙":"廙","廬":"廬","⼵":"廴","廾":"廾","⼶":"廾","𢌱":"𢌱","𢌱":"𢌱","弄":"弄","⼷":"弋","⼸":"弓","弢":"弢","弢":"弢","⼹":"彐","⺔":"彑","当":"当","㣇":"㣇","⼺":"彡","形":"形","彩":"彩","彫":"彫","⼻":"彳","律":"律","㣣":"㣣","徚":"徚","復":"復","徭":"徭","⼼":"心","⺖":"忄","⺗":"㣺","忍":"忍","志":"志","念":"念","忹":"忹","怒":"怒","怜":"怜","恵":"恵","㤜":"㤜","㤺":"㤺","悁":"悁","悔":"悔","悔":"悔","惇":"惇","惘":"惘","惡":"惡","𢛔":"𢛔","愈":"愈","慨":"慨","慄":"慄","慈":"慈","慌":"慌","慌":"慌","慎":"慎","慎":"慎","慠":"慠","慺":"慺","憎":"憎","憎":"憎","憎":"憎","憐":"憐","憤":"憤","憯":"憯","憲":"憲","𢡄":"𢡄","𢡊":"𢡊","懞":"懞","懲":"懲","懲":"懲","懲":"懲","懶":"懶","懶":"懶","戀":"戀","⼽":"戈","成":"成","戛":"戛","戮":"戮","戴":"戴","⼾":"戶","戸":"戶","⼿":"手","⺘":"扌","扝":"扝","抱":"抱","拉":"拉","拏":"拏","拓":"拓","拔":"拔","拼":"拼","拾":"拾","𢬌":"𢬌","挽":"挽","捐":"捐","捨":"捨","捻":"捻","掃":"掃","掠":"掠","掩":"掩","揄":"揄","揤":"揤","摒":"摒","𢯱":"𢯱","搜":"搜","搢":"搢","揅":"揅","摩":"摩","摷":"摷","摾":"摾","㨮":"㨮","搉":"㩁","撚":"撚","撝":"撝","擄":"擄","㩬":"㩬","⽀":"支","⽁":"攴","⺙":"攵","敏":"敏","敏":"敏","敖":"敖","敬":"敬","數":"數","𣀊":"𣀊","⽂":"文","⻫":"斉","⽃":"斗","料":"料","⽄":"斤","⽅":"方","旅":"旅","⽆":"无","⺛":"旡","既":"既","旣":"旣","⽇":"日","易":"易","曶":"㫚","㫤":"㫤","晉":"晉","晩":"晚","晴":"晴","晴":"晴","暑":"暑","暑":"暑","暈":"暈","㬈":"㬈","暜":"暜","暴":"暴","曆":"曆","㬙":"㬙","𣊸":"𣊸","⽈":"曰","更":"更","書":"書","⽉":"月","𣍟":"𣍟","肦":"朌","胐":"朏","胊":"朐","脁":"朓","胶":"㬵","朗":"朗","朗":"朗","朗":"朗","脧":"朘","望":"望","望":"望","朡":"朡","幐":"㬺","䐠":"㬻","𣎓":"𣎓","膧":"朣","𣎜":"𣎜","⽊":"木","李":"李","杓":"杓","杖":"杖","杞":"杞","𣏃":"𣏃","柿":"杮","杻":"杻","枅":"枅","林":"林","㭉":"㭉","𣏕":"𣏕","柳":"柳","柺":"柺","栗":"栗","栟":"栟","桒":"桒","𣑭":"𣑭","梁":"梁","梅":"梅","梅":"梅","梎":"梎","梨":"梨","椔":"椔","楂":"楂","㮝":"㮝","㮝":"㮝","槩":"㮣","樧":"榝","榣":"榣","槪":"槪","樂":"樂","樂":"樂","樂":"樂","樓":"樓","𣚣":"𣚣","檨":"檨","櫓":"櫓","櫛":"櫛","欄":"欄","㰘":"㰘","⽋":"欠","次":"次","𣢧":"𣢧","歔":"歔","㱎":"㱎","⽌":"止","⻭":"歯","歲":"歲","歷":"歷","歹":"歹","⽍":"歹","⺞":"歺","殟":"殟","殮":"殮","⽎":"殳","殺":"殺","殺":"殺","殺":"殺","殻":"殻","𣪍":"𣪍","⽏":"毋","⺟":"母","𣫺":"𣫺","⽐":"比","⽑":"毛","⽒":"氏","⺠":"民","⽓":"气","⽔":"水","⺡":"氵","⺢":"氺","汎":"汎","汧":"汧","沈":"沈","沿":"沿","泌":"泌","泍":"泍","泥":"泥","𣲼":"𣲼","洛":"洛","洞":"洞","洴":"洴","派":"派","流":"流","流":"流","流":"流","洖":"洖","浩":"浩","浪":"浪","海":"海","海":"海","浸":"浸","涅":"涅","𣴞":"𣴞","淋":"淋","淚":"淚","淪":"淪","淹":"淹","渚":"渚","港":"港","湮":"湮","潙":"溈","滋":"滋","滋":"滋","溜":"溜","溺":"溺","滇":"滇","滑":"滑","滛":"滛","㴳":"㴳","漏":"漏","漢":"漢","漢":"漢","漣":"漣","𣻑":"𣻑","潮":"潮","𣽞":"𣽞","𣾎":"𣾎","濆":"濆","濫":"濫","濾":"濾","瀛":"瀛","瀞":"瀞","瀞":"瀞","瀹":"瀹","灊":"灊","㶖":"㶖","⽕":"火","⺣":"灬","灰":"灰","灷":"灷","災":"災","炙":"炙","炭":"炭","烈":"烈","烙":"烙","煮":"煮","煮":"煮","𤉣":"𤉣","煅":"煅","煉":"煉","𤋮":"𤋮","熜":"熜","燎":"燎","燐":"燐","𤎫":"𤎫","爐":"爐","爛":"爛","爨":"爨","⽖":"爪","爫":"爫","⺤":"爫","爵":"爵","爵":"爵","⽗":"父","⽘":"爻","⺦":"丬","⽙":"爿","⽚":"片","牐":"牐","⽛":"牙","𤘈":"𤘈","⽜":"牛","牢":"牢","犀":"犀","犕":"犕","⽝":"犬","⺨":"犭","犯":"犯","狀":"狀","𤜵":"𤜵","狼":"狼","猪":"猪","猪":"猪","𤠔":"𤠔","獵":"獵","獺":"獺","⽞":"玄","率":"率","率":"率","⽟":"玉","王":"王","㺬":"㺬","玥":"玥","玲":"玲","㺸":"㺸","㺸":"㺸","珞":"珞","琉":"琉","理":"理","琢":"琢","瑇":"瑇","瑜":"瑜","瑩":"瑩","瑱":"瑱","瑱":"瑱","璅":"璅","璉":"璉","璘":"璘","瓊":"瓊","⽠":"瓜","⽡":"瓦","㼛":"㼛","甆":"甆","⽢":"甘","⽣":"生","甤":"甤","⽤":"用","⽥":"田","画":"画","甾":"甾","𤰶":"𤰶","留":"留","略":"略","異":"異","異":"異","𤲒":"𤲒","⽦":"疋","⽧":"疒","痢":"痢","瘐":"瘐","瘟":"瘟","瘝":"瘝","療":"療","癩":"癩","⽨":"癶","⽩":"白","𤾡":"𤾡","𤾸":"𤾸","⽪":"皮","⽫":"皿","𥁄":"𥁄","㿼":"㿼","益":"益","益":"益","盛":"盛","盧":"盧","䀈":"䀈","⽬":"目","直":"直","直":"直","𥃲":"𥃲","𥃳":"𥃳","省":"省","䀘":"䀘","𥄙":"𥄙","眞":"眞","真":"真","真":"真","𥄳":"𥄳","着":"着","睊":"睊","睊":"睊","鿃":"䀹","䀹":"䀹","䀹":"䀹","晣":"䀿","䁆":"䁆","瞋":"瞋","𥉉":"𥉉","瞧":"瞧","⽭":"矛","⽮":"矢","⽯":"石","䂖":"䂖","𥐝":"𥐝","硏":"研","硎":"硎","硫":"硫","碌":"碌","碌":"碌","碑":"碑","磊":"磊","磌":"磌","磌":"磌","磻":"磻","䃣":"䃣","礪":"礪","⽰":"示","⺭":"礻","礼":"礼","社":"社","祈":"祈","祉":"祉","𥘦":"𥘦","祐":"祐","祖":"祖","祖":"祖","祝":"祝","神":"神","祥":"祥","視":"視","視":"視","祿":"祿","𥚚":"𥚚","禍":"禍","禎":"禎","福":"福","福":"福","𥛅":"𥛅","禮":"禮","⽱":"禸","⽲":"禾","秊":"秊","䄯":"䄯","秫":"秫","稜":"稜","穊":"穊","穀":"穀","穀":"穀","穏":"穏","⽳":"穴","突":"突","𥥼":"𥥼","窱":"窱","立":"立","⽴":"立","⻯":"竜","𥪧":"𥪧","𥪧":"𥪧","竮":"竮","⽵":"竹","笠":"笠","節":"節","節":"節","䈂":"䈂","𥮫":"𥮫","篆":"篆","䈧":"䈧","築":"築","𥲀":"𥲀","𥳐":"𥳐","簾":"簾","籠":"籠","⽶":"米","类":"类","粒":"粒","精":"精","糒":"糒","糖":"糖","糨":"糨","䊠":"䊠","糣":"糣","糧":"糧","⽷":"糸","⺯":"糹","𥾆":"𥾆","紀":"紀","紐":"紐","索":"索","累":"累","絶":"絕","絣":"絣","絛":"絛","綠":"綠","綾":"綾","緇":"緇","練":"練","練":"練","練":"練","縂":"縂","䌁":"䌁","縉":"縉","縷":"縷","繁":"繁","繅":"繅","𦇚":"𦇚","䌴":"䌴","⽸":"缶","𦈨":"𦈨","缾":"缾","𦉇":"𦉇","⽹":"网","⺫":"罒","⺲":"罒","⺱":"罓","䍙":"䍙","署":"署","𦋙":"𦋙","罹":"罹","罺":"罺","羅":"羅","𦌾":"𦌾","⽺":"羊","羕":"羕","羚":"羚","羽":"羽","⽻":"羽","翺":"翺","老":"老","⽼":"老","⺹":"耂","者":"者","者":"者","者":"者","⽽":"而","𦓚":"𦓚","⽾":"耒","𦔣":"𦔣","⽿":"耳","聆":"聆","聠":"聠","𦖨":"𦖨","聯":"聯","聰":"聰","聾":"聾","⾀":"聿","⺺":"肀","⾁":"肉","肋":"肋","肭":"肭","育":"育","䏕":"䏕","䏙":"䏙","腁":"胼","脃":"脃","脾":"脾","䐋":"䐋","𦞧":"𦞧","𦞵":"𦞵","朦":"䑃","臘":"臘","⾂":"臣","臨":"臨","⾃":"自","臭":"臭","⾄":"至","⾅":"臼","舁":"舁","舁":"舁","舄":"舄","⾆":"舌","舘":"舘","⾇":"舛","⾈":"舟","䑫":"䑫","⾉":"艮","良":"良","⾊":"色","⾋":"艸","艹":"艹","艹":"艹","⺾":"艹","⺿":"艹","⻀":"艹","芋":"芋","芑":"芑","芝":"芝","花":"花","芳":"芳","芽":"芽","若":"若","若":"若","苦":"苦","𦬼":"𦬼","茶":"茶","荒":"荒","荣":"荣","茝":"茝","茣":"茣","莽":"莽","荓":"荓","菉":"菉","菊":"菊","菌":"菌","菜":"菜","菧":"菧","華":"華","菱":"菱","著":"著","著":"著","𦰶":"𦰶","莭":"莭","落":"落","葉":"葉","蔿":"蒍","𦳕":"𦳕","𦵫":"𦵫","蓮":"蓮","蓱":"蓱","蓳":"蓳","蓼":"蓼","蔖":"蔖","䔫":"䔫","蕤":"蕤","𦼬":"𦼬","藍":"藍","䕝":"䕝","𦾱":"𦾱","䕡":"䕡","藺":"藺","蘆":"蘆","䕫":"䕫","蘒":"蘒","蘭":"蘭","𧃒":"𧃒","虁":"蘷","蘿":"蘿","⾌":"虍","⻁":"虎","虐":"虐","虜":"虜","虜":"虜","虧":"虧","虩":"虩","⾍":"虫","蚩":"蚩","蚈":"蚈","蛢":"蛢","蜎":"蜎","蜨":"蜨","蝫":"蝫","蟡":"蟡","蝹":"蝹","蝹":"蝹","螆":"螆","䗗":"䗗","𧏊":"𧏊","螺":"螺","蠁":"蠁","䗹":"䗹","蠟":"蠟","⾎":"血","行":"行","⾏":"行","衠":"衠","衣":"衣","⾐":"衣","⻂":"衤","裂":"裂","𧙧":"𧙧","裏":"裏","裗":"裗","裞":"裞","裡":"裡","裸":"裸","裺":"裺","䘵":"䘵","褐":"褐","襁":"襁","襤":"襤","⾑":"襾","⻄":"西","⻃":"覀","覆":"覆","見":"見","⾒":"見","𧢮":"𧢮","⻅":"见","⾓":"角","⾔":"言","𧥦":"𧥦","詽":"訮","訞":"䚶","䚾":"䚾","䛇":"䛇","誠":"誠","說":"說","說":"說","調":"調","請":"請","諒":"諒","論":"論","諭":"諭","諭":"諭","諸":"諸","諸":"諸","諾":"諾","諾":"諾","謁":"謁","謁":"謁","謹":"謹","謹":"謹","識":"識","讀":"讀","讏":"讆","變":"變","變":"變","⻈":"讠","⾕":"谷","⾖":"豆","豈":"豈","豕":"豕","⾗":"豕","豣":"豜","⾘":"豸","𧲨":"𧲨","⾙":"貝","貫":"貫","賁":"賁","賂":"賂","賈":"賈","賓":"賓","贈":"贈","贈":"贈","贛":"贛","⻉":"贝","⾚":"赤","⾛":"走","起":"起","趆":"赿","𧻓":"𧻓","𧼯":"𧼯","⾜":"足","跋":"跋","趼":"趼","跺":"跥","路":"路","跰":"跰","躛":"躗","⾝":"身","車":"車","⾞":"車","軔":"軔","輧":"軿","輦":"輦","輪":"輪","輸":"輸","輸":"輸","輻":"輻","轢":"轢","⻋":"车","⾟":"辛","辞":"辞","辰":"辰","⾠":"辰","⾡":"辵","辶":"辶","⻌":"辶","⻍":"辶","巡":"巡","連":"連","逸":"逸","逸":"逸","遲":"遲","遼":"遼","𨗒":"𨗒","𨗭":"𨗭","邏":"邏","⾢":"邑","邔":"邔","郎":"郎","郞":"郎","郞":"郎","郱":"郱","都":"都","𨜮":"𨜮","鄑":"鄑","鄛":"鄛","⾣":"酉","酪":"酪","醙":"醙","醴":"醴","⾤":"釆","里":"里","⾥":"里","量":"量","金":"金","⾦":"金","鈴":"鈴","鈸":"鈸","鉶":"鉶","鋗":"鋗","鋘":"鋘","鉼":"鉼","錄":"錄","鍊":"鍊","鎮":"鎭","鏹":"鏹","鐕":"鐕","𨯺":"𨯺","⻐":"钅","⻑":"長","⾧":"長","⻒":"镸","⻓":"长","⾨":"門","開":"開","䦕":"䦕","閭":"閭","閷":"閷","𨵷":"𨵷","⻔":"门","⾩":"阜","⻏":"阝","⻖":"阝","阮":"阮","陋":"陋","降":"降","陵":"陵","陸":"陸","陼":"陼","隆":"隆","隣":"隣","䧦":"䧦","⾪":"隶","隷":"隷","隸":"隷","隸":"隷","⾫":"隹","雃":"雃","離":"離","難":"難","難":"難","⾬":"雨","零":"零","雷":"雷","霣":"霣","𩅅":"𩅅","露":"露","靈":"靈","⾭":"靑","⻘":"青","靖":"靖","靖":"靖","𩇟":"𩇟","⾮":"非","⾯":"面","𩈚":"𩈚","⾰":"革","䩮":"䩮","䩶":"䩶","⾱":"韋","韛":"韛","韠":"韠","⻙":"韦","⾲":"韭","𩐊":"𩐊","⾳":"音","響":"響","響":"響","⾴":"頁","䪲":"䪲","頋":"頋","頋":"頋","頋":"頋","領":"領","頩":"頩","𩒖":"𩒖","頻":"頻","頻":"頻","類":"類","⻚":"页","⾵":"風","𩖶":"𩖶","⻛":"风","⾶":"飛","⻜":"飞","⻝":"食","⾷":"食","⻟":"飠","飢":"飢","飯":"飯","飼":"飼","䬳":"䬳","館":"館","餩":"餩","⻠":"饣","⾸":"首","⾹":"香","馧":"馧","⾺":"馬","駂":"駂","駱":"駱","駾":"駾","驪":"驪","⻢":"马","⾻":"骨","䯎":"䯎","⾼":"高","⾽":"髟","𩬰":"𩬰","鬒":"鬒","鬒":"鬒","⾾":"鬥","⾿":"鬯","⿀":"鬲","⿁":"鬼","⻤":"鬼","⿂":"魚","魯":"魯","鱀":"鱀","鱗":"鱗","⻥":"鱼","⿃":"鳥","鳽":"鳽","䳎":"䳎","鵧":"鵧","䳭":"䳭","𪃎":"𪃎","鶴":"鶴","𪄅":"𪄅","䳸":"䳸","鷺":"鷺","𪈎":"𪈎","鸞":"鸞","鹃":"鹂","⿄":"鹵","鹿":"鹿","⿅":"鹿","𪊑":"𪊑","麗":"麗","麟":"麟","⿆":"麥","⻨":"麦","麻":"麻","⿇":"麻","𪎒":"𪎒","⿈":"黃","⻩":"黄","⿉":"黍","黎":"黎","䵖":"䵖","⿊":"黑","黒":"黑","墨":"墨","黹":"黹","⿋":"黹","⿌":"黽","鼅":"鼅","黾":"黾","⿍":"鼎","鼏":"鼏","⿎":"鼓","鼖":"鼖","⿏":"鼠","鼻":"鼻","⿐":"鼻","齃":"齃","⿑":"齊","⻬":"齐","⿒":"齒","𪘀":"𪘀","⻮":"齿","龍":"龍","⿓":"龍","龎":"龎","⻰":"龙","龜":"龜","龜":"龜","龜":"龜","⿔":"龜","⻳":"龟","⿕":"龠","⏼":"⏻","𑐓":"𑐴𑑂𑐒","𑐙":"𑐴𑑂𑐘","𑐤":"𑐴𑑂𑐣","𑐪":"𑐴𑑂𑐩","𑐭":"𑐴𑑂𑐬","𑐯":"𑐴𑑂𑐮"}},397:function(t,e,n){n(116),n(88),t.exports=n(398)},398:function(t,e,n){var r=n(52),o=n(184);t.exports=n(18).getIterator=function(t){var e=o(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return r(e.call(t))}},399:function(t,e,n){t.exports={default:n(400),__esModule:!0}},4:function(t,e,n){"use strict";e.__esModule=!0,e.default=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},400:function(t,e,n){n(116),n(88),t.exports=n(401)},401:function(t,e,n){var r=n(165),o=n(39)("iterator"),i=n(75);t.exports=n(18).isIterable=function(t){var e=Object(t);return void 0!==e[o]||"@@iterator"in e||i.hasOwnProperty(r(e))}},402:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=l(n(19)),o=l(n(17)),i=n(9),a=l(i),s=l(n(118)),c=l(n(286)),u=l(n(29));function l(t){return t&&t.__esModule?t:{default:t}}function f(t,e,n){var r=t.openCursor(e);return new a.default(function(t,e){var o=[];r.onerror=function(t){e(new Error("Query failed: "+t.target.errorCode))},r.onsuccess=function(e){var r=e.target.result;r?(o.push(n(r)),r.continue()):t(o)}})}function p(t){return new a.default(function(e,n){t.oncomplete=function(t){e(t)},t.onerror=function(t){n(t.target.error)}})}function h(t){return new a.default(function(e,n){t.onsuccess=function(t){e(t)},t.onerror=function(t){n(t.target.error)}})}function d(t){return new a.default(function(e,n){t.onsuccess=function(){return e(t)},t.onerror=function(t){return n(t)}})}function v(t){return h(t).then(function(t){return t.target.result})}var _=function(t,e){this.indexedDB=t,this._dbName="matrix-js-sdk:"+(e||"default"),this.db=null,this._disconnected=!0,this._syncAccumulator=new c.default,this._isNewlyCreated=!1};_.prototype={connect:function(){var t=this;if(!this._disconnected)return console.log("LocalIndexedDBStoreBackend.connect: already connected or connecting"),a.default.resolve();this._disconnected=!1,console.log("LocalIndexedDBStoreBackend.connect: connecting...");var e=this.indexedDB.open(this._dbName,3);return e.onupgradeneeded=function(e){var n=e.target.result,r=e.oldVersion;console.log("LocalIndexedDBStoreBackend.connect: upgrading from "+r),r<1&&(t._isNewlyCreated=!0,function(t){t.createObjectStore("users",{keyPath:["userId"]}),t.createObjectStore("accountData",{keyPath:["type"]}),t.createObjectStore("sync",{keyPath:["clobber"]})}(n)),r<2&&function(t){t.createObjectStore("oob_membership_events",{keyPath:["room_id","state_key"]}).createIndex("room","room_id")}(n),r<3&&function(t){t.createObjectStore("client_options",{keyPath:["clobber"]})}(n)},e.onblocked=function(){console.log("can't yet open LocalIndexedDBStoreBackend because it is open elsewhere")},console.log("LocalIndexedDBStoreBackend.connect: awaiting connection..."),h(e).then(function(e){return console.log("LocalIndexedDBStoreBackend.connect: connected"),t.db=e.target.result,t.db.onversionchange=function(){t.db.close()},t._init()})},isNewlyCreated:function(){return a.default.resolve(this._isNewlyCreated)},_init:function(){var t=this;return a.default.all([this._loadAccountData(),this._loadSyncData()]).then(function(e){var n=(0,s.default)(e,2),r=n[0],o=n[1];console.log("LocalIndexedDBStoreBackend: loaded initial data"),t._syncAccumulator.accumulate({next_batch:o.nextBatch,rooms:o.roomsData,groups:o.groupsData,account_data:{events:r}})})},getOutOfBandMembers:function(t){var e=this;return new a.default(function(n,r){var o=e.db.transaction(["oob_membership_events"],"readonly").objectStore("oob_membership_events").index("room"),i=IDBKeyRange.only(t),a=o.openCursor(i),s=[],c=!1;a.onsuccess=function(t){var e=t.target.result;if(!e)return s.length||c?n(s):n(null);var r=e.value;r.oob_written?c=!0:s.push(r),e.continue()},a.onerror=function(t){r(t)}}).then(function(e){return console.log("LL: got "+(e&&e.length)+" membershipEvents from storage for room "+t+" ..."),e})},setOutOfBandMembers:function(){var t=(0,i.coroutine)(o.default.mark(function t(e,n){var r,a,s;return o.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return console.log("LL: backend about to store "+n.length+" members for "+e),r=this.db.transaction(["oob_membership_events"],"readwrite"),a=r.objectStore("oob_membership_events"),n.forEach(function(t){a.put(t)}),s={room_id:e,oob_written:!0,state_key:0},a.put(s),t.next=8,(0,i.resolve)(p(r));case 8:console.log("LL: backend done storing for "+e+"!");case 9:case"end":return t.stop()}},t,this)}));return function(e,n){return t.apply(this,arguments)}}(),clearOutOfBandMembers:function(){var t=(0,i.coroutine)(o.default.mark(function t(e){var n,r,c,u,l,f,p,h,_,y,m,g,b;return o.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n=this.db.transaction(["oob_membership_events"],"readonly"),r=n.objectStore("oob_membership_events"),c=r.index("room"),u=IDBKeyRange.only(e),l=v(c.openKeyCursor(u,"next")).then(function(t){return t&&t.primaryKey[1]}),f=v(c.openKeyCursor(u,"prev")).then(function(t){return t&&t.primaryKey[1]}),t.next=8,(0,i.resolve)(a.default.all([l,f]));case 8:return p=t.sent,h=(0,s.default)(p,2),_=h[0],y=h[1],m=this.db.transaction(["oob_membership_events"],"readwrite"),g=m.objectStore("oob_membership_events"),b=IDBKeyRange.bound([e,_],[e,y]),console.log("LL: Deleting all users + marker in storage for room "+e+", with key range:",[e,_],[e,y]),t.next=18,(0,i.resolve)(d(g.delete(b)));case 18:case"end":return t.stop()}},t,this)}));return function(e){return t.apply(this,arguments)}}(),clearDatabase:function(){var t=this;return new a.default(function(e,n){console.log("Removing indexeddb instance: "+t._dbName);var r=t.indexedDB.deleteDatabase(t._dbName);r.onblocked=function(){console.log("can't yet delete indexeddb "+t._dbName+" because it is open elsewhere")},r.onerror=function(t){console.warn("unable to delete js-sdk store indexeddb: "+t.target.error),e()},r.onsuccess=function(){console.log("Removed indexeddb instance: "+t._dbName),e()}})},getSavedSync:function(t){void 0===t&&(t=!0);var e=this._syncAccumulator.getJSON();return e.nextBatch?t?a.default.resolve(u.default.deepCopy(e)):a.default.resolve(e):a.default.resolve(null)},getNextBatchToken:function(){return a.default.resolve(this._syncAccumulator.getNextBatchToken())},setSyncData:function(t){var e=this;return a.default.resolve().then(function(){e._syncAccumulator.accumulate(t)})},syncToDatabase:function(t){var e=this._syncAccumulator.getJSON();return a.default.all([this._persistUserPresenceEvents(t),this._persistAccountData(e.accountData),this._persistSyncData(e.nextBatch,e.roomsData,e.groupsData)])},_persistSyncData:function(t,e,n){var r=this;return console.log("Persisting sync data up to ",t),a.default.try(function(){var o=r.db.transaction(["sync"],"readwrite");return o.objectStore("sync").put({clobber:"-",nextBatch:t,roomsData:e,groupsData:n}),p(o)})},_persistAccountData:function(t){var e=this;return a.default.try(function(){for(var n=e.db.transaction(["accountData"],"readwrite"),r=n.objectStore("accountData"),o=0;o<t.length;o++)r.put(t[o]);return p(n)})},_persistUserPresenceEvents:function(t){var e=this;return a.default.try(function(){var n=e.db.transaction(["users"],"readwrite"),o=n.objectStore("users"),i=!0,a=!1,s=void 0;try{for(var c,u=(0,r.default)(t);!(i=(c=u.next()).done);i=!0){var l=c.value;o.put({userId:l[0],event:l[1]})}}catch(t){a=!0,s=t}finally{try{!i&&u.return&&u.return()}finally{if(a)throw s}}return p(n)})},getUserPresenceEvents:function(){var t=this;return a.default.try(function(){return f(t.db.transaction(["users"],"readonly").objectStore("users"),void 0,function(t){return[t.value.userId,t.value.event]})})},_loadAccountData:function(){var t=this;return console.log("LocalIndexedDBStoreBackend: loading account data..."),a.default.try(function(){return f(t.db.transaction(["accountData"],"readonly").objectStore("accountData"),void 0,function(t){return t.value}).then(function(t){return console.log("LocalIndexedDBStoreBackend: loaded account data"),t})})},_loadSyncData:function(){var t=this;return console.log("LocalIndexedDBStoreBackend: loading sync data..."),a.default.try(function(){return f(t.db.transaction(["sync"],"readonly").objectStore("sync"),void 0,function(t){return t.value}).then(function(t){return console.log("LocalIndexedDBStoreBackend: loaded sync data"),t.length>1&&console.warn("loadSyncData: More than 1 sync row found."),t.length>0?t[0]:{}})})},getClientOptions:function(){var t=this;return a.default.resolve().then(function(){return f(t.db.transaction(["client_options"],"readonly").objectStore("client_options"),void 0,function(t){if(t.value&&t.value&&t.value.options)return t.value.options}).then(function(t){return t[0]})})},storeClientOptions:function(){var t=(0,i.coroutine)(o.default.mark(function t(e){var n;return o.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n=this.db.transaction(["client_options"],"readwrite"),n.objectStore("client_options").put({clobber:"-",options:e}),t.next=5,(0,i.resolve)(p(n));case 5:case"end":return t.stop()}},t,this)}));return function(e){return t.apply(this,arguments)}}()},e.default=_},44:function(t,e,n){t.exports=!n(56)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},47:function(t,e,n){var r=n(52),o=n(162),i=n(121),a=Object.defineProperty;e.f=n(44)?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},5:function(t,e,n){"use strict";e.__esModule=!0;var r=function(t){return t&&t.__esModule?t:{default:t}}(n(217));e.default=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),(0,r.default)(t,o.key,o)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}()},51:function(t,e,n){"use strict";e.__esModule=!0;var r=function(t){return t&&t.__esModule?t:{default:t}}(n(206));e.default=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return(0,r.default)(t)}},52:function(t,e,n){var r=n(34);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},56:function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},57:function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},58:function(t,e,n){var r=n(164),o=n(115);t.exports=function(t){return r(o(t))}},59:function(t,e,n){var r=n(47),o=n(74);t.exports=n(44)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},64:function(t,e){var n,r,o=t.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(t){n=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(t){r=a}}();var c,u=[],l=!1,f=-1;function p(){l&&c&&(l=!1,c.length?u=c.concat(u):f=-1,u.length&&h())}function h(){if(!l){var t=s(p);l=!0;for(var e=u.length;e;){for(c=u,u=[];++f<e;)c&&c[f].run();f=-1,e=u.length}c=null,l=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function d(t,e){this.fun=t,this.array=e}function v(){}o.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];u.push(new d(t,e)),1!==u.length||l||s(h)},d.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=v,o.addListener=v,o.once=v,o.off=v,o.removeListener=v,o.removeAllListeners=v,o.emit=v,o.prependListener=v,o.prependOnceListener=v,o.listeners=function(t){return[]},o.binding=function(t){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(t){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},65:function(t,e,n){"use strict";e.__esModule=!0;var r=a(n(365)),o=a(n(369)),i="function"==typeof o.default&&"symbol"==typeof r.default?function(t){return typeof t}:function(t){return t&&"function"==typeof o.default&&t.constructor===o.default&&t!==o.default.prototype?"symbol":typeof t};function a(t){return t&&t.__esModule?t:{default:t}}e.default="function"==typeof o.default&&"symbol"===i(r.default)?function(t){return void 0===t?"undefined":i(t)}:function(t){return t&&"function"==typeof o.default&&t.constructor===o.default&&t!==o.default.prototype?"symbol":void 0===t?"undefined":i(t)}},67:function(t,e,n){var r=n(98);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},68:function(t,e,n){var r=n(27),o=n(18),i=n(56);t.exports=function(t,e){var n=(o.Object||{})[t]||Object[t],a={};a[t]=e(n),r(r.S+r.F*i(function(){n(1)}),"Object",a)}},74:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},75:function(t,e){t.exports={}},76:function(t,e,n){var r=n(163),o=n(126);t.exports=Object.keys||function(t){return r(t,o)}},77:function(t,e,n){t.exports={default:n(363),__esModule:!0}},88:function(t,e,n){"use strict";var r=n(357)(!0);n(183)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},89:function(t,e){t.exports=!0},9:function(t,e,n){(function(e,n,r){t.exports=function(){var t,o,i;return function t(e,n,r){function o(a,s){if(!n[a]){if(!e[a]){var c="function"==typeof _dereq_&&_dereq_;if(!s&&c)return c(a,!0);if(i)return i(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var l=n[a]={exports:{}};e[a][0].call(l.exports,function(t){var n=e[a][1][t];return o(n||t)},l,l.exports,t,e,n,r)}return n[a].exports}for(var i="function"==typeof _dereq_&&_dereq_,a=0;a<r.length;a++)o(r[a]);return o}({1:[function(t,e,n){"use strict";e.exports=function(t){var e=t._SomePromiseArray;function n(t){var n=new e(t),r=n.promise();return n.setHowMany(1),n.setUnwrap(),n.init(),r}t.any=function(t){return n(t)},t.prototype.any=function(){return n(this)}}},{}],2:[function(t,n,r){"use strict";var o;try{throw new Error}catch(t){o=t}var i=t("./schedule"),a=t("./queue"),s=t("./util");function c(){this._customScheduler=!1,this._isTickUsed=!1,this._lateQueue=new a(16),this._normalQueue=new a(16),this._haveDrainedQueues=!1,this._trampolineEnabled=!0;var t=this;this.drainQueues=function(){t._drainQueues()},this._schedule=i}function u(t,e,n){this._lateQueue.push(t,e,n),this._queueTick()}function l(t,e,n){this._normalQueue.push(t,e,n),this._queueTick()}function f(t){this._normalQueue._pushOne(t),this._queueTick()}function p(t){for(;t.length()>0;)h(t)}function h(t){var e=t.shift();if("function"!=typeof e)e._settlePromises();else{var n=t.shift(),r=t.shift();e.call(n,r)}}c.prototype.setScheduler=function(t){var e=this._schedule;return this._schedule=t,this._customScheduler=!0,e},c.prototype.hasCustomScheduler=function(){return this._customScheduler},c.prototype.enableTrampoline=function(){this._trampolineEnabled=!0},c.prototype.disableTrampolineIfNecessary=function(){s.hasDevTools&&(this._trampolineEnabled=!1)},c.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues},c.prototype.fatalError=function(t,n){n?(e.stderr.write("Fatal "+(t instanceof Error?t.stack:t)+"\n"),e.exit(2)):this.throwLater(t)},c.prototype.throwLater=function(t,e){if(1===arguments.length&&(e=t,t=function(){throw e}),"undefined"!=typeof setTimeout)setTimeout(function(){t(e)},0);else try{this._schedule(function(){t(e)})}catch(t){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}},s.hasDevTools?(c.prototype.invokeLater=function(t,e,n){this._trampolineEnabled?u.call(this,t,e,n):this._schedule(function(){setTimeout(function(){t.call(e,n)},100)})},c.prototype.invoke=function(t,e,n){this._trampolineEnabled?l.call(this,t,e,n):this._schedule(function(){t.call(e,n)})},c.prototype.settlePromises=function(t){this._trampolineEnabled?f.call(this,t):this._schedule(function(){t._settlePromises()})}):(c.prototype.invokeLater=u,c.prototype.invoke=l,c.prototype.settlePromises=f),c.prototype._drainQueues=function(){p(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,p(this._lateQueue)},c.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},c.prototype._reset=function(){this._isTickUsed=!1},n.exports=c,n.exports.firstLineError=o},{"./queue":26,"./schedule":29,"./util":36}],3:[function(t,e,n){"use strict";e.exports=function(t,e,n,r){var o=!1,i=function(t,e){this._reject(e)},a=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(i,i,null,this,t)},s=function(t,e){0==(50397184&this._bitField)&&this._resolveCallback(e.target)},c=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(i){o||(o=!0,t.prototype._propagateFrom=r.propagateFromFunction(),t.prototype._boundValue=r.boundValueFunction());var u=n(i),l=new t(e);l._propagateFrom(this,1);var f=this._target();if(l._setBoundTo(u),u instanceof t){var p={promiseRejectionQueued:!1,promise:l,target:f,bindingPromise:u};f._then(e,a,void 0,l,p),u._then(s,c,void 0,l,p),l._setOnCancel(u)}else l._resolveCallback(f);return l},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=2097152|this._bitField,this._boundTo=t):this._bitField=-2097153&this._bitField},t.prototype._isBound=function(){return 2097152==(2097152&this._bitField)},t.bind=function(e,n){return t.resolve(n).bind(e)}}},{}],4:[function(t,e,n){"use strict";var r;"undefined"!=typeof Promise&&(r=Promise);var o=t("./promise")();o.noConflict=function(){try{Promise===o&&(Promise=r)}catch(t){}return o},e.exports=o},{"./promise":22}],5:[function(t,e,n){"use strict";var r=Object.create;if(r){var o=r(null),i=r(null);o[" size"]=i[" size"]=0}e.exports=function(e){var n=t("./util"),r=n.canEvaluate;function o(t){var r=this.pop(),o=function(t,r){var o;if(null!=t&&(o=t[r]),"function"!=typeof o){var i="Object "+n.classString(t)+" has no method '"+n.toString(r)+"'";throw new e.TypeError(i)}return o}(t,r);return o.apply(t,this)}function i(t){return t[this]}function a(t){var e=+this;return e<0&&(e=Math.max(0,e+t.length)),t[e]}n.isIdentifier,e.prototype.call=function(t){var e=[].slice.call(arguments,1);return e.push(t),this._then(o,void 0,void 0,e,void 0)},e.prototype.get=function(t){var e,n="number"==typeof t;if(n)e=a;else if(r){var o=(void 0)(t);e=null!==o?o:i}else e=i;return this._then(e,void 0,void 0,t,void 0)}}},{"./util":36}],6:[function(t,e,n){"use strict";e.exports=function(e,n,r,o){var i=t("./util"),a=i.tryCatch,s=i.errorObj,c=e._async;e.prototype.break=e.prototype.cancel=function(){if(!o.cancellation())return this._warn("cancellation is disabled");for(var t=this,e=t;t._isCancellable();){if(!t._cancelBy(e)){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}var n=t._cancellationParent;if(null==n||!n._isCancellable()){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}t._isFollowing()&&t._followee().cancel(),t._setWillBeCancelled(),e=t,t=n}},e.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},e.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},e.prototype._cancelBy=function(t){return t===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},e.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},e.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),c.invoke(this._cancelPromises,this,void 0))},e.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},e.prototype._unsetOnCancel=function(){this._onCancelField=void 0},e.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},e.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},e.prototype._doInvokeOnCancel=function(t,e){if(i.isArray(t))for(var n=0;n<t.length;++n)this._doInvokeOnCancel(t[n],e);else if(void 0!==t)if("function"==typeof t){if(!e){var r=a(t).call(this._boundValue());r===s&&(this._attachExtraTrace(r.e),c.throwLater(r.e))}}else t._resultCancelled(this)},e.prototype._invokeOnCancel=function(){var t=this._onCancel();this._unsetOnCancel(),c.invoke(this._doInvokeOnCancel,this,t)},e.prototype._invokeInternalOnCancel=function(){this._isCancellable()&&(this._doInvokeOnCancel(this._onCancel(),!0),this._unsetOnCancel())},e.prototype._resultCancelled=function(){this.cancel()}}},{"./util":36}],7:[function(t,e,n){"use strict";e.exports=function(e){var n=t("./util"),r=t("./es5").keys,o=n.tryCatch,i=n.errorObj;return function(t,a,s){return function(c){var u=s._boundValue();t:for(var l=0;l<t.length;++l){var f=t[l];if(f===Error||null!=f&&f.prototype instanceof Error){if(c instanceof f)return o(a).call(u,c)}else if("function"==typeof f){var p=o(f).call(u,c);if(p===i)return p;if(p)return o(a).call(u,c)}else if(n.isObject(c)){for(var h=r(f),d=0;d<h.length;++d){var v=h[d];if(f[v]!=c[v])continue t}return o(a).call(u,c)}}return e}}}},{"./es5":13,"./util":36}],8:[function(t,e,n){"use strict";e.exports=function(t){var e=!1,n=[];function r(){this._trace=new r.CapturedTrace(o())}function o(){var t=n.length-1;if(t>=0)return n[t]}return t.prototype._promiseCreated=function(){},t.prototype._pushContext=function(){},t.prototype._popContext=function(){return null},t._peekContext=t.prototype._peekContext=function(){},r.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,n.push(this._trace))},r.prototype._popContext=function(){if(void 0!==this._trace){var t=n.pop(),e=t._promiseCreated;return t._promiseCreated=null,e}return null},r.CapturedTrace=null,r.create=function(){if(e)return new r},r.deactivateLongStackTraces=function(){},r.activateLongStackTraces=function(){var n=t.prototype._pushContext,i=t.prototype._popContext,a=t._peekContext,s=t.prototype._peekContext,c=t.prototype._promiseCreated;r.deactivateLongStackTraces=function(){t.prototype._pushContext=n,t.prototype._popContext=i,t._peekContext=a,t.prototype._peekContext=s,t.prototype._promiseCreated=c,e=!1},e=!0,t.prototype._pushContext=r.prototype._pushContext,t.prototype._popContext=r.prototype._popContext,t._peekContext=t.prototype._peekContext=o,t.prototype._promiseCreated=function(){var t=this._peekContext();t&&null==t._promiseCreated&&(t._promiseCreated=this)}},r}},{}],9:[function(t,n,r){"use strict";n.exports=function(n,r){var o,i,a,s=n._getDomain,c=n._async,u=t("./errors").Warning,l=t("./util"),f=t("./es5"),p=l.canAttachTrace,h=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,d=/\((?:timers\.js):\d+:\d+\)/,v=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,_=null,y=null,m=!1,g=!(0==l.env("BLUEBIRD_DEBUG")),b=!(0==l.env("BLUEBIRD_WARNINGS")||!g&&!l.env("BLUEBIRD_WARNINGS")),w=!(0==l.env("BLUEBIRD_LONG_STACK_TRACES")||!g&&!l.env("BLUEBIRD_LONG_STACK_TRACES")),x=0!=l.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(b||!!l.env("BLUEBIRD_W_FORGOTTEN_RETURN"));n.prototype.suppressUnhandledRejections=function(){var t=this._target();t._bitField=-1048577&t._bitField|524288},n.prototype._ensurePossibleRejectionHandled=function(){if(0==(524288&this._bitField)){this._setRejectionIsUnhandled();var t=this;setTimeout(function(){t._notifyUnhandledRejection()},1)}},n.prototype._notifyUnhandledRejectionIsHandled=function(){q("rejectionHandled",o,void 0,this)},n.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},n.prototype._returnedNonUndefined=function(){return 0!=(268435456&this._bitField)},n.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var t=this._settledValue();this._setUnhandledRejectionIsNotified(),q("unhandledRejection",i,t,this)}},n.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},n.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},n.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},n.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},n.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},n.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},n.prototype._warn=function(t,e,n){return H(t,e,n||this)},n.onPossiblyUnhandledRejection=function(t){var e=s();i="function"==typeof t?null===e?t:l.domainBind(e,t):void 0},n.onUnhandledRejectionHandled=function(t){var e=s();o="function"==typeof t?null===e?t:l.domainBind(e,t):void 0};var j=function(){};n.longStackTraces=function(){if(c.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!Z.longStackTraces&&W()){var t=n.prototype._captureStackTrace,e=n.prototype._attachExtraTrace,o=n.prototype._dereferenceTrace;Z.longStackTraces=!0,j=function(){if(c.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");n.prototype._captureStackTrace=t,n.prototype._attachExtraTrace=e,n.prototype._dereferenceTrace=o,r.deactivateLongStackTraces(),c.enableTrampoline(),Z.longStackTraces=!1},n.prototype._captureStackTrace=B,n.prototype._attachExtraTrace=I,n.prototype._dereferenceTrace=V,r.activateLongStackTraces(),c.disableTrampolineIfNecessary()}},n.hasLongStackTraces=function(){return Z.longStackTraces&&W()};var k=function(){try{if("function"==typeof CustomEvent){var t=new CustomEvent("CustomEvent");return l.global.dispatchEvent(t),function(t,e){var n={detail:e,cancelable:!0};f.defineProperty(n,"promise",{value:e.promise}),f.defineProperty(n,"reason",{value:e.reason});var r=new CustomEvent(t.toLowerCase(),n);return!l.global.dispatchEvent(r)}}if("function"==typeof Event){var t=new Event("CustomEvent");return l.global.dispatchEvent(t),function(t,e){var n=new Event(t.toLowerCase(),{cancelable:!0});return n.detail=e,f.defineProperty(n,"promise",{value:e.promise}),f.defineProperty(n,"reason",{value:e.reason}),!l.global.dispatchEvent(n)}}var t=document.createEvent("CustomEvent");return t.initCustomEvent("testingtheevent",!1,!0,{}),l.global.dispatchEvent(t),function(t,e){var n=document.createEvent("CustomEvent");return n.initCustomEvent(t.toLowerCase(),!1,!0,e),!l.global.dispatchEvent(n)}}catch(t){}return function(){return!1}}(),O=l.isNode?function(){return e.emit.apply(e,arguments)}:l.global?function(t){var e="on"+t.toLowerCase(),n=l.global[e];return!!n&&(n.apply(l.global,[].slice.call(arguments,1)),!0)}:function(){return!1};function E(t,e){return{promise:e}}var C={promiseCreated:E,promiseFulfilled:E,promiseRejected:E,promiseResolved:E,promiseCancelled:E,promiseChained:function(t,e,n){return{promise:e,child:n}},warning:function(t,e){return{warning:e}},unhandledRejection:function(t,e,n){return{reason:e,promise:n}},rejectionHandled:E},T=function(t){var e=!1;try{e=O.apply(null,arguments)}catch(t){c.throwLater(t),e=!0}var n=!1;try{n=k(t,C[t].apply(null,arguments))}catch(t){c.throwLater(t),n=!0}return n||e};function S(){return!1}function F(t,e,n){var r=this;try{t(e,n,function(t){if("function"!=typeof t)throw new TypeError("onCancel must be a function, got: "+l.toString(t));r._attachCancellationCallback(t)})}catch(t){return t}}function P(t){if(!this._isCancellable())return this;var e=this._onCancel();void 0!==e?l.isArray(e)?e.push(t):this._setOnCancel([e,t]):this._setOnCancel(t)}function R(){return this._onCancelField}function A(t){this._onCancelField=t}function D(){this._cancellationParent=void 0,this._onCancelField=void 0}function L(t,e){if(0!=(1&e)){this._cancellationParent=t;var n=t._branchesRemainingToCancel;void 0===n&&(n=0),t._branchesRemainingToCancel=n+1}0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}n.config=function(t){if("longStackTraces"in(t=Object(t))&&(t.longStackTraces?n.longStackTraces():!t.longStackTraces&&n.hasLongStackTraces()&&j()),"warnings"in t){var e=t.warnings;Z.warnings=!!e,x=Z.warnings,l.isObject(e)&&"wForgottenReturn"in e&&(x=!!e.wForgottenReturn)}if("cancellation"in t&&t.cancellation&&!Z.cancellation){if(c.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");n.prototype._clearCancellationData=D,n.prototype._propagateFrom=L,n.prototype._onCancel=R,n.prototype._setOnCancel=A,n.prototype._attachCancellationCallback=P,n.prototype._execute=F,M=L,Z.cancellation=!0}return"monitoring"in t&&(t.monitoring&&!Z.monitoring?(Z.monitoring=!0,n.prototype._fireEvent=T):!t.monitoring&&Z.monitoring&&(Z.monitoring=!1,n.prototype._fireEvent=S)),n},n.prototype._fireEvent=S,n.prototype._execute=function(t,e,n){try{t(e,n)}catch(t){return t}},n.prototype._onCancel=function(){},n.prototype._setOnCancel=function(t){},n.prototype._attachCancellationCallback=function(t){},n.prototype._captureStackTrace=function(){},n.prototype._attachExtraTrace=function(){},n.prototype._dereferenceTrace=function(){},n.prototype._clearCancellationData=function(){},n.prototype._propagateFrom=function(t,e){};var M=function(t,e){0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)};function N(){var t=this._boundTo;return void 0!==t&&t instanceof n?t.isFulfilled()?t.value():void 0:t}function B(){this._trace=new Y(this._peekContext())}function I(t,e){if(p(t)){var n=this._trace;if(void 0!==n&&e&&(n=n._parent),void 0!==n)n.attachExtraTrace(t);else if(!t.__stackCleaned__){var r=G(t);l.notEnumerableProp(t,"stack",r.message+"\n"+r.stack.join("\n")),l.notEnumerableProp(t,"__stackCleaned__",!0)}}}function V(){this._trace=void 0}function H(t,e,r){if(Z.warnings){var o,i=new u(t);if(e)r._attachExtraTrace(i);else if(Z.longStackTraces&&(o=n._peekContext()))o.attachExtraTrace(i);else{var a=G(i);i.stack=a.message+"\n"+a.stack.join("\n")}T("warning",i)||X(i,"",!0)}}function U(t){for(var e=[],n=0;n<t.length;++n){var r=t[n],o=" (No stack trace)"===r||_.test(r),i=o&&z(r);o&&!i&&(m&&" "!==r.charAt(0)&&(r=" "+r),e.push(r))}return e}function G(t){var e=t.stack,n=t.toString();return e="string"==typeof e&&e.length>0?function(t){for(var e=t.stack.replace(/\s+$/g,"").split("\n"),n=0;n<e.length;++n){var r=e[n];if(" (No stack trace)"===r||_.test(r))break}return n>0&&"SyntaxError"!=t.name&&(e=e.slice(n)),e}(t):[" (No stack trace)"],{message:n,stack:"SyntaxError"==t.name?e:U(e)}}function X(t,e,n){if("undefined"!=typeof console){var r;if(l.isObject(t)){var o=t.stack;r=e+y(o,t)}else r=e+String(t);"function"==typeof a?a(r,n):"function"!=typeof console.log&&"object"!=typeof console.log||console.log(r)}}function q(t,e,n,r){var o=!1;try{"function"==typeof e&&(o=!0,"rejectionHandled"===t?e(r):e(n,r))}catch(t){c.throwLater(t)}"unhandledRejection"===t?T(t,n,r)||o||X(n,"Unhandled rejection "):T(t,r)}function K(t){var e;if("function"==typeof t)e="[function "+(t.name||"anonymous")+"]";else{if(e=t&&"function"==typeof t.toString?t.toString():l.toString(t),/\[object [a-zA-Z0-9$_]+\]/.test(e))try{var n=JSON.stringify(t);e=n}catch(t){}0===e.length&&(e="(empty array)")}return"(<"+function(t){return t.length<41?t:t.substr(0,38)+"..."}(e)+">, no stack trace)"}function W(){return"function"==typeof $}var z=function(){return!1},J=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function Q(t){var e=t.match(J);if(e)return{fileName:e[1],line:parseInt(e[2],10)}}function Y(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);$(this,Y),e>32&&this.uncycle()}l.inherits(Y,Error),r.CapturedTrace=Y,Y.prototype.uncycle=function(){var t=this._length;if(!(t<2)){for(var e=[],n={},r=0,o=this;void 0!==o;++r)e.push(o),o=o._parent;for(var r=(t=this._length=r)-1;r>=0;--r){var i=e[r].stack;void 0===n[i]&&(n[i]=r)}for(var r=0;r<t;++r){var a=e[r].stack,s=n[a];if(void 0!==s&&s!==r){s>0&&(e[s-1]._parent=void 0,e[s-1]._length=1),e[r]._parent=void 0,e[r]._length=1;var c=r>0?e[r-1]:this;s<t-1?(c._parent=e[s+1],c._parent.uncycle(),c._length=c._parent._length+1):(c._parent=void 0,c._length=1);for(var u=c._length+1,l=r-2;l>=0;--l)e[l]._length=u,u++;return}}}},Y.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var e=G(t),n=e.message,r=[e.stack],o=this;void 0!==o;)r.push(U(o.stack.split("\n"))),o=o._parent;!function(t){for(var e=t[0],n=1;n<t.length;++n){for(var r=t[n],o=e.length-1,i=e[o],a=-1,s=r.length-1;s>=0;--s)if(r[s]===i){a=s;break}for(var s=a;s>=0;--s){var c=r[s];if(e[o]!==c)break;e.pop(),o--}e=r}}(r),function(t){for(var e=0;e<t.length;++e)(0===t[e].length||e+1<t.length&&t[e][0]===t[e+1][0])&&(t.splice(e,1),e--)}(r),l.notEnumerableProp(t,"stack",function(t,e){for(var n=0;n<e.length-1;++n)e[n].push("From previous event:"),e[n]=e[n].join("\n");return n<e.length&&(e[n]=e[n].join("\n")),t+"\n"+e.join("\n")}(n,r)),l.notEnumerableProp(t,"__stackCleaned__",!0)}};var $=function(){var t=/^\s*at\s*/,e=function(t,e){return"string"==typeof t?t:void 0!==e.name&&void 0!==e.message?e.toString():K(e)};if("number"==typeof Error.stackTraceLimit&&"function"==typeof Error.captureStackTrace){Error.stackTraceLimit+=6,_=t,y=e;var n=Error.captureStackTrace;return z=function(t){return h.test(t)},function(t,e){Error.stackTraceLimit+=6,n(t,e),Error.stackTraceLimit-=6}}var r,o=new Error;if("string"==typeof o.stack&&o.stack.split("\n")[0].indexOf("stackDetection@")>=0)return _=/@/,y=e,m=!0,function(t){t.stack=(new Error).stack};try{throw new Error}catch(t){r="stack"in t}return"stack"in o||!r||"number"!=typeof Error.stackTraceLimit?(y=function(t,e){return"string"==typeof t?t:"object"!=typeof e&&"function"!=typeof e||void 0===e.name||void 0===e.message?K(e):e.toString()},null):(_=t,y=e,function(t){Error.stackTraceLimit+=6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit-=6})}();"undefined"!=typeof console&&void 0!==console.warn&&(a=function(t){console.warn(t)},l.isNode&&e.stderr.isTTY?a=function(t,e){var n=e?"":"";console.warn(n+t+"\n")}:l.isNode||"string"!=typeof(new Error).stack||(a=function(t,e){console.warn("%c"+t,e?"color: darkorange":"color: red")}));var Z={warnings:b,longStackTraces:!1,cancellation:!1,monitoring:!1};return w&&n.longStackTraces(),{longStackTraces:function(){return Z.longStackTraces},warnings:function(){return Z.warnings},cancellation:function(){return Z.cancellation},monitoring:function(){return Z.monitoring},propagateFromFunction:function(){return M},boundValueFunction:function(){return N},checkForgottenReturns:function(t,e,n,r,o){if(void 0===t&&null!==e&&x){if(void 0!==o&&o._returnedNonUndefined())return;if(0==(65535&r._bitField))return;n&&(n+=" ");var i="",a="";if(e._trace){for(var s=e._trace.stack.split("\n"),c=U(s),u=c.length-1;u>=0;--u){var l=c[u];if(!d.test(l)){var f=l.match(v);f&&(i="at "+f[1]+":"+f[2]+":"+f[3]+" ");break}}if(c.length>0)for(var p=c[0],u=0;u<s.length;++u)if(s[u]===p){u>0&&(a="\n"+s[u-1]);break}}var h="a promise was created in a "+n+"handler "+i+"but was not returned from it, see http://goo.gl/rRqMUw"+a;r._warn(h,!0,e)}},setBounds:function(t,e){if(W()){for(var n,r,o=t.stack.split("\n"),i=e.stack.split("\n"),a=-1,s=-1,c=0;c<o.length;++c){var u=Q(o[c]);if(u){n=u.fileName,a=u.line;break}}for(var c=0;c<i.length;++c){var u=Q(i[c]);if(u){r=u.fileName,s=u.line;break}}a<0||s<0||!n||!r||n!==r||a>=s||(z=function(t){if(h.test(t))return!0;var e=Q(t);return!!(e&&e.fileName===n&&a<=e.line&&e.line<=s)})}},warn:H,deprecated:function(t,e){var n=t+" is deprecated and will be removed in a future version.";return e&&(n+=" Use "+e+" instead."),H(n)},CapturedTrace:Y,fireDomEvent:k,fireGlobalEvent:O}}},{"./errors":12,"./es5":13,"./util":36}],10:[function(t,e,n){"use strict";e.exports=function(t){function e(){return this.value}function n(){throw this.reason}t.prototype.return=t.prototype.thenReturn=function(n){return n instanceof t&&n.suppressUnhandledRejections(),this._then(e,void 0,void 0,{value:n},void 0)},t.prototype.throw=t.prototype.thenThrow=function(t){return this._then(n,void 0,void 0,{reason:t},void 0)},t.prototype.catchThrow=function(t){if(arguments.length<=1)return this._then(void 0,n,void 0,{reason:t},void 0);var e=arguments[1];return this.caught(t,function(){throw e})},t.prototype.catchReturn=function(n){if(arguments.length<=1)return n instanceof t&&n.suppressUnhandledRejections(),this._then(void 0,e,void 0,{value:n},void 0);var r=arguments[1];return r instanceof t&&r.suppressUnhandledRejections(),this.caught(n,function(){return r})}}},{}],11:[function(t,e,n){"use strict";e.exports=function(t,e){var n=t.reduce,r=t.all;function o(){return r(this)}t.prototype.each=function(t){return n(this,t,e,0)._then(o,void 0,void 0,this,void 0)},t.prototype.mapSeries=function(t){return n(this,t,e,e)},t.each=function(t,r){return n(t,r,e,0)._then(o,void 0,void 0,t,void 0)},t.mapSeries=function(t,r){return n(t,r,e,e)}}},{}],12:[function(t,e,n){"use strict";var r,o,i=t("./es5"),a=i.freeze,s=t("./util"),c=s.inherits,u=s.notEnumerableProp;function l(t,e){function n(r){if(!(this instanceof n))return new n(r);u(this,"message","string"==typeof r?r:e),u(this,"name",t),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return c(n,Error),n}var f=l("Warning","warning"),p=l("CancellationError","cancellation error"),h=l("TimeoutError","timeout error"),d=l("AggregateError","aggregate error");try{r=TypeError,o=RangeError}catch(t){r=l("TypeError","type error"),o=l("RangeError","range error")}for(var v="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),_=0;_<v.length;++_)"function"==typeof Array.prototype[v[_]]&&(d.prototype[v[_]]=Array.prototype[v[_]]);i.defineProperty(d.prototype,"length",{value:0,configurable:!1,writable:!0,enumerable:!0}),d.prototype.isOperational=!0;var y=0;function m(t){if(!(this instanceof m))return new m(t);u(this,"name","OperationalError"),u(this,"message",t),this.cause=t,this.isOperational=!0,t instanceof Error?(u(this,"message",t.message),u(this,"stack",t.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}d.prototype.toString=function(){var t=Array(4*y+1).join(" "),e="\n"+t+"AggregateError of:\n";y++,t=Array(4*y+1).join(" ");for(var n=0;n<this.length;++n){for(var r=this[n]===this?"[Circular AggregateError]":this[n]+"",o=r.split("\n"),i=0;i<o.length;++i)o[i]=t+o[i];r=o.join("\n"),e+=r+"\n"}return y--,e},c(m,Error);var g=Error.__BluebirdErrorTypes__;g||(g=a({CancellationError:p,TimeoutError:h,OperationalError:m,RejectionError:m,AggregateError:d}),i.defineProperty(Error,"__BluebirdErrorTypes__",{value:g,writable:!1,enumerable:!1,configurable:!1})),e.exports={Error:Error,TypeError:r,RangeError:o,CancellationError:g.CancellationError,OperationalError:g.OperationalError,TimeoutError:g.TimeoutError,AggregateError:g.AggregateError,Warning:f}},{"./es5":13,"./util":36}],13:[function(t,e,n){var r=function(){"use strict";return void 0===this}();if(r)e.exports={freeze:Object.freeze,defineProperty:Object.defineProperty,getDescriptor:Object.getOwnPropertyDescriptor,keys:Object.keys,names:Object.getOwnPropertyNames,getPrototypeOf:Object.getPrototypeOf,isArray:Array.isArray,isES5:r,propertyIsWritable:function(t,e){var n=Object.getOwnPropertyDescriptor(t,e);return!(n&&!n.writable&&!n.set)}};else{var o={}.hasOwnProperty,i={}.toString,a={}.constructor.prototype,s=function(t){var e=[];for(var n in t)o.call(t,n)&&e.push(n);return e};e.exports={isArray:function(t){try{return"[object Array]"===i.call(t)}catch(t){return!1}},keys:s,names:s,defineProperty:function(t,e,n){return t[e]=n.value,t},getDescriptor:function(t,e){return{value:t[e]}},freeze:function(t){return t},getPrototypeOf:function(t){try{return Object(t).constructor.prototype}catch(t){return a}},isES5:r,propertyIsWritable:function(){return!0}}}},{}],14:[function(t,e,n){"use strict";e.exports=function(t,e){var n=t.map;t.prototype.filter=function(t,r){return n(this,t,r,e)},t.filter=function(t,r,o){return n(t,r,o,e)}}},{}],15:[function(t,e,n){"use strict";e.exports=function(e,n,r){var o=t("./util"),i=e.CancellationError,a=o.errorObj,s=t("./catch_filter")(r);function c(t,e,n){this.promise=t,this.type=e,this.handler=n,this.called=!1,this.cancelPromise=null}function u(t){this.finallyHandler=t}function l(t,e){return null!=t.cancelPromise&&(arguments.length>1?t.cancelPromise._reject(e):t.cancelPromise._cancel(),t.cancelPromise=null,!0)}function f(){return h.call(this,this.promise._target()._settledValue())}function p(t){if(!l(this,t))return a.e=t,a}function h(t){var o=this.promise,s=this.handler;if(!this.called){this.called=!0;var c=this.isFinallyHandler()?s.call(o._boundValue()):s.call(o._boundValue(),t);if(c===r)return c;if(void 0!==c){o._setReturnedNonUndefined();var h=n(c,o);if(h instanceof e){if(null!=this.cancelPromise){if(h._isCancelled()){var d=new i("late cancellation observer");return o._attachExtraTrace(d),a.e=d,a}h.isPending()&&h._attachCancellationCallback(new u(this))}return h._then(f,p,void 0,this,void 0)}}}return o.isRejected()?(l(this),a.e=t,a):(l(this),t)}return c.prototype.isFinallyHandler=function(){return 0===this.type},u.prototype._resultCancelled=function(){l(this.finallyHandler)},e.prototype._passThrough=function(t,e,n,r){return"function"!=typeof t?this.then():this._then(n,r,void 0,new c(this,e,t),void 0)},e.prototype.lastly=e.prototype.finally=function(t){return this._passThrough(t,0,h,h)},e.prototype.tap=function(t){return this._passThrough(t,1,h)},e.prototype.tapCatch=function(t){var n=arguments.length;if(1===n)return this._passThrough(t,1,void 0,h);var r,i=new Array(n-1),a=0;for(r=0;r<n-1;++r){var c=arguments[r];if(!o.isObject(c))return e.reject(new TypeError("tapCatch statement predicate: expecting an object but got "+o.classString(c)));i[a++]=c}i.length=a;var u=arguments[r];return this._passThrough(s(i,u,this),1,void 0,h)},c}},{"./catch_filter":7,"./util":36}],16:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i,a){var s=t("./errors"),c=s.TypeError,u=t("./util"),l=u.errorObj,f=u.tryCatch,p=[];function h(t,n,o,i){if(a.cancellation()){var s=new e(r),c=this._finallyPromise=new e(r);this._promise=s.lastly(function(){return c}),s._captureStackTrace(),s._setOnCancel(this)}else{var u=this._promise=new e(r);u._captureStackTrace()}this._stack=i,this._generatorFunction=t,this._receiver=n,this._generator=void 0,this._yieldHandlers="function"==typeof o?[o].concat(p):p,this._yieldedPromise=null,this._cancellationPhase=!1}u.inherits(h,i),h.prototype._isResolved=function(){return null===this._promise},h.prototype._cleanup=function(){this._promise=this._generator=null,a.cancellation()&&null!==this._finallyPromise&&(this._finallyPromise._fulfill(),this._finallyPromise=null)},h.prototype._promiseCancelled=function(){if(!this._isResolved()){var t,n=void 0!==this._generator.return;if(n)this._promise._pushContext(),t=f(this._generator.return).call(this._generator,void 0),this._promise._popContext();else{var r=new e.CancellationError("generator .return() sentinel");e.coroutine.returnSentinel=r,this._promise._attachExtraTrace(r),this._promise._pushContext(),t=f(this._generator.throw).call(this._generator,r),this._promise._popContext()}this._cancellationPhase=!0,this._yieldedPromise=null,this._continue(t)}},h.prototype._promiseFulfilled=function(t){this._yieldedPromise=null,this._promise._pushContext();var e=f(this._generator.next).call(this._generator,t);this._promise._popContext(),this._continue(e)},h.prototype._promiseRejected=function(t){this._yieldedPromise=null,this._promise._attachExtraTrace(t),this._promise._pushContext();var e=f(this._generator.throw).call(this._generator,t);this._promise._popContext(),this._continue(e)},h.prototype._resultCancelled=function(){if(this._yieldedPromise instanceof e){var t=this._yieldedPromise;this._yieldedPromise=null,t.cancel()}},h.prototype.promise=function(){return this._promise},h.prototype._run=function(){this._generator=this._generatorFunction.call(this._receiver),this._receiver=this._generatorFunction=void 0,this._promiseFulfilled(void 0)},h.prototype._continue=function(t){var n=this._promise;if(t===l)return this._cleanup(),this._cancellationPhase?n.cancel():n._rejectCallback(t.e,!1);var r=t.value;if(!0===t.done)return this._cleanup(),this._cancellationPhase?n.cancel():n._resolveCallback(r);var i=o(r,this._promise);if(i instanceof e||null!==(i=function(t,n,r){for(var i=0;i<n.length;++i){r._pushContext();var a=f(n[i])(t);if(r._popContext(),a===l){r._pushContext();var s=e.reject(l.e);return r._popContext(),s}var c=o(a,r);if(c instanceof e)return c}return null}(i,this._yieldHandlers,this._promise))){var a=(i=i._target())._bitField;0==(50397184&a)?(this._yieldedPromise=i,i._proxy(this,null)):0!=(33554432&a)?e._async.invoke(this._promiseFulfilled,this,i._value()):0!=(16777216&a)?e._async.invoke(this._promiseRejected,this,i._reason()):this._promiseCancelled()}else this._promiseRejected(new c("A value %s was yielded that could not be treated as a promise\n\n See http://goo.gl/MqrFmX\n\n".replace("%s",String(r))+"From coroutine:\n"+this._stack.split("\n").slice(1,-7).join("\n")))},e.coroutine=function(t,e){if("function"!=typeof t)throw new c("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");var n=Object(e).yieldHandler,r=h,o=(new Error).stack;return function(){var e=t.apply(this,arguments),i=new r(void 0,void 0,n,o),a=i.promise();return i._generator=e,i._promiseFulfilled(void 0),a}},e.coroutine.addYieldHandler=function(t){if("function"!=typeof t)throw new c("expecting a function but got "+u.classString(t));p.push(t)},e.spawn=function(t){if(a.deprecated("Promise.spawn()","Promise.coroutine()"),"function"!=typeof t)return n("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");var r=new h(t,this),o=r.promise();return r._run(e.spawn),o}}},{"./errors":12,"./util":36}],17:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i,a){var s=t("./util");s.canEvaluate,s.tryCatch,s.errorObj,e.join=function(){var t,e=arguments.length-1;e>0&&"function"==typeof arguments[e]&&(t=arguments[e]);var r=[].slice.call(arguments);t&&r.pop();var o=new n(r).promise();return void 0!==t?o.spread(t):o}}},{"./util":36}],18:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i,a){var s=e._getDomain,c=t("./util"),u=c.tryCatch,l=c.errorObj,f=e._async;function p(t,e,n,r){this.constructor$(t),this._promise._captureStackTrace();var o=s();this._callback=null===o?e:c.domainBind(o,e),this._preservedValues=r===i?new Array(this.length()):null,this._limit=n,this._inFlight=0,this._queue=[],f.invoke(this._asyncInit,this,void 0)}function h(t,n,o,i){if("function"!=typeof n)return r("expecting a function but got "+c.classString(n));var a=0;if(void 0!==o){if("object"!=typeof o||null===o)return e.reject(new TypeError("options argument must be an object but it is "+c.classString(o)));if("number"!=typeof o.concurrency)return e.reject(new TypeError("'concurrency' must be a number but it is "+c.classString(o.concurrency)));a=o.concurrency}return a="number"==typeof a&&isFinite(a)&&a>=1?a:0,new p(t,n,a,i).promise()}c.inherits(p,n),p.prototype._asyncInit=function(){this._init$(void 0,-2)},p.prototype._init=function(){},p.prototype._promiseFulfilled=function(t,n){var r=this._values,i=this.length(),s=this._preservedValues,c=this._limit;if(n<0){if(r[n=-1*n-1]=t,c>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(c>=1&&this._inFlight>=c)return r[n]=t,this._queue.push(n),!1;null!==s&&(s[n]=t);var f=this._promise,p=this._callback,h=f._boundValue();f._pushContext();var d=u(p).call(h,t,n,i),v=f._popContext();if(a.checkForgottenReturns(d,v,null!==s?"Promise.filter":"Promise.map",f),d===l)return this._reject(d.e),!0;var _=o(d,this._promise);if(_ instanceof e){var y=(_=_._target())._bitField;if(0==(50397184&y))return c>=1&&this._inFlight++,r[n]=_,_._proxy(this,-1*(n+1)),!1;if(0==(33554432&y))return 0!=(16777216&y)?(this._reject(_._reason()),!0):(this._cancel(),!0);d=_._value()}r[n]=d}var m=++this._totalResolved;return m>=i&&(null!==s?this._filter(r,s):this._resolve(r),!0)},p.prototype._drainQueue=function(){for(var t=this._queue,e=this._limit,n=this._values;t.length>0&&this._inFlight<e;){if(this._isResolved())return;var r=t.pop();this._promiseFulfilled(n[r],r)}},p.prototype._filter=function(t,e){for(var n=e.length,r=new Array(n),o=0,i=0;i<n;++i)t[i]&&(r[o++]=e[i]);r.length=o,this._resolve(r)},p.prototype.preservedValues=function(){return this._preservedValues},e.prototype.map=function(t,e){return h(this,t,e,null)},e.map=function(t,e,n,r){return h(t,e,n,r)}}},{"./util":36}],19:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i){var a=t("./util"),s=a.tryCatch;e.method=function(t){if("function"!=typeof t)throw new e.TypeError("expecting a function but got "+a.classString(t));return function(){var r=new e(n);r._captureStackTrace(),r._pushContext();var o=s(t).apply(this,arguments),a=r._popContext();return i.checkForgottenReturns(o,a,"Promise.method",r),r._resolveFromSyncValue(o),r}},e.attempt=e.try=function(t){if("function"!=typeof t)return o("expecting a function but got "+a.classString(t));var r,c=new e(n);if(c._captureStackTrace(),c._pushContext(),arguments.length>1){i.deprecated("calling Promise.try with more than 1 argument");var u=arguments[1],l=arguments[2];r=a.isArray(u)?s(t).apply(l,u):s(t).call(l,u)}else r=s(t)();var f=c._popContext();return i.checkForgottenReturns(r,f,"Promise.try",c),c._resolveFromSyncValue(r),c},e.prototype._resolveFromSyncValue=function(t){t===a.errorObj?this._rejectCallback(t.e,!1):this._resolveCallback(t,!0)}}},{"./util":36}],20:[function(t,e,n){"use strict";var r=t("./util"),o=r.maybeWrapAsError,i=t("./errors"),a=i.OperationalError,s=t("./es5"),c=/^(?:name|message|stack|cause)$/;function u(t){var e;if(function(t){return t instanceof Error&&s.getPrototypeOf(t)===Error.prototype}(t)){(e=new a(t)).name=t.name,e.message=t.message,e.stack=t.stack;for(var n=s.keys(t),o=0;o<n.length;++o){var i=n[o];c.test(i)||(e[i]=t[i])}return e}return r.markAsOriginatingFromRejection(t),t}e.exports=function(t,e){return function(n,r){if(null!==t){if(n){var i=u(o(n));t._attachExtraTrace(i),t._reject(i)}else if(e){var a=[].slice.call(arguments,1);t._fulfill(a)}else t._fulfill(r);t=null}}}},{"./errors":12,"./es5":13,"./util":36}],21:[function(t,e,n){"use strict";e.exports=function(e){var n=t("./util"),r=e._async,o=n.tryCatch,i=n.errorObj;function a(t,e){if(!n.isArray(t))return s.call(this,t,e);var a=o(e).apply(this._boundValue(),[null].concat(t));a===i&&r.throwLater(a.e)}function s(t,e){var n=this._boundValue(),a=void 0===t?o(e).call(n,null):o(e).call(n,null,t);a===i&&r.throwLater(a.e)}function c(t,e){if(!t){var n=new Error(t+"");n.cause=t,t=n}var a=o(e).call(this._boundValue(),t);a===i&&r.throwLater(a.e)}e.prototype.asCallback=e.prototype.nodeify=function(t,e){if("function"==typeof t){var n=s;void 0!==e&&Object(e).spread&&(n=a),this._then(n,c,void 0,this,t)}return this}}},{"./util":36}],22:[function(t,n,r){"use strict";n.exports=function(){var r=function(){return new d("circular promise resolution chain\n\n See http://goo.gl/MqrFmX\n")},o=function(){return new S.PromiseInspection(this._target())},i=function(t){return S.reject(new d(t))};function a(){}var s,c={},u=t("./util");s=u.isNode?function(){var t=e.domain;return void 0===t&&(t=null),t}:function(){return null},u.notEnumerableProp(S,"_getDomain",s);var l=t("./es5"),f=t("./async"),p=new f;l.defineProperty(S,"_async",{value:p});var h=t("./errors"),d=S.TypeError=h.TypeError;S.RangeError=h.RangeError;var v=S.CancellationError=h.CancellationError;S.TimeoutError=h.TimeoutError,S.OperationalError=h.OperationalError,S.RejectionError=h.OperationalError,S.AggregateError=h.AggregateError;var _=function(){},y={},m={},g=t("./thenables")(S,_),b=t("./promise_array")(S,_,g,i,a),w=t("./context")(S),x=w.create,j=t("./debuggability")(S,w),k=(j.CapturedTrace,t("./finally")(S,g,m)),O=t("./catch_filter")(m),E=t("./nodeback"),C=u.errorObj,T=u.tryCatch;function S(t){t!==_&&function(t,e){if(null==t||t.constructor!==S)throw new d("the promise constructor cannot be invoked directly\n\n See http://goo.gl/MqrFmX\n");if("function"!=typeof e)throw new d("expecting a function but got "+u.classString(e))}(this,t),this._bitField=0,this._fulfillmentHandler0=void 0,this._rejectionHandler0=void 0,this._promise0=void 0,this._receiver0=void 0,this._resolveFromExecutor(t),this._promiseCreated(),this._fireEvent("promiseCreated",this)}function F(t){this.promise._resolveCallback(t)}function P(t){this.promise._rejectCallback(t,!1)}function R(t){var e=new S(_);e._fulfillmentHandler0=t,e._rejectionHandler0=t,e._promise0=t,e._receiver0=t}return S.prototype.toString=function(){return"[object Promise]"},S.prototype.caught=S.prototype.catch=function(t){var e=arguments.length;if(e>1){var n,r=new Array(e-1),o=0;for(n=0;n<e-1;++n){var a=arguments[n];if(!u.isObject(a))return i("Catch statement predicate: expecting an object but got "+u.classString(a));r[o++]=a}return r.length=o,t=arguments[n],this.then(void 0,O(r,t,this))}return this.then(void 0,t)},S.prototype.reflect=function(){return this._then(o,o,void 0,this,void 0)},S.prototype.then=function(t,e){if(j.warnings()&&arguments.length>0&&"function"!=typeof t&&"function"!=typeof e){var n=".then() only accepts functions but was passed: "+u.classString(t);arguments.length>1&&(n+=", "+u.classString(e)),this._warn(n)}return this._then(t,e,void 0,void 0,void 0)},S.prototype.done=function(t,e){var n=this._then(t,e,void 0,void 0,void 0);n._setIsFinal()},S.prototype.spread=function(t){return"function"!=typeof t?i("expecting a function but got "+u.classString(t)):this.all()._then(t,void 0,void 0,y,void 0)},S.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},S.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new b(this).promise()},S.prototype.error=function(t){return this.caught(u.originatesFromRejection,t)},S.getNewLibraryCopy=n.exports,S.is=function(t){return t instanceof S},S.fromNode=S.fromCallback=function(t){var e=new S(_);e._captureStackTrace();var n=arguments.length>1&&!!Object(arguments[1]).multiArgs,r=T(t)(E(e,n));return r===C&&e._rejectCallback(r.e,!0),e._isFateSealed()||e._setAsyncGuaranteed(),e},S.all=function(t){return new b(t).promise()},S.cast=function(t){var e=g(t);return e instanceof S||((e=new S(_))._captureStackTrace(),e._setFulfilled(),e._rejectionHandler0=t),e},S.resolve=S.fulfilled=S.cast,S.reject=S.rejected=function(t){var e=new S(_);return e._captureStackTrace(),e._rejectCallback(t,!0),e},S.setScheduler=function(t){if("function"!=typeof t)throw new d("expecting a function but got "+u.classString(t));return p.setScheduler(t)},S.prototype._then=function(t,e,n,r,o){var i=void 0!==o,a=i?o:new S(_),c=this._target(),l=c._bitField;i||(a._propagateFrom(this,3),a._captureStackTrace(),void 0===r&&0!=(2097152&this._bitField)&&(r=0!=(50397184&l)?this._boundValue():c===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,a));var f=s();if(0!=(50397184&l)){var h,d,y=c._settlePromiseCtx;0!=(33554432&l)?(d=c._rejectionHandler0,h=t):0!=(16777216&l)?(d=c._fulfillmentHandler0,h=e,c._unsetRejectionIsUnhandled()):(y=c._settlePromiseLateCancellationObserver,d=new v("late cancellation observer"),c._attachExtraTrace(d),h=e),p.invoke(y,c,{handler:null===f?h:"function"==typeof h&&u.domainBind(f,h),promise:a,receiver:r,value:d})}else c._addCallbacks(t,e,a,r,f);return a},S.prototype._length=function(){return 65535&this._bitField},S.prototype._isFateSealed=function(){return 0!=(117506048&this._bitField)},S.prototype._isFollowing=function(){return 67108864==(67108864&this._bitField)},S.prototype._setLength=function(t){this._bitField=-65536&this._bitField|65535&t},S.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},S.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},S.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},S.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},S.prototype._isFinal=function(){return(4194304&this._bitField)>0},S.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},S.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},S.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},S.prototype._setAsyncGuaranteed=function(){p.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},S.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[4*t-4+3];if(e!==c)return void 0===e&&this._isBound()?this._boundValue():e},S.prototype._promiseAt=function(t){return this[4*t-4+2]},S.prototype._fulfillmentHandlerAt=function(t){return this[4*t-4+0]},S.prototype._rejectionHandlerAt=function(t){return this[4*t-4+1]},S.prototype._boundValue=function(){},S.prototype._migrateCallback0=function(t){t._bitField;var e=t._fulfillmentHandler0,n=t._rejectionHandler0,r=t._promise0,o=t._receiverAt(0);void 0===o&&(o=c),this._addCallbacks(e,n,r,o,null)},S.prototype._migrateCallbackAt=function(t,e){var n=t._fulfillmentHandlerAt(e),r=t._rejectionHandlerAt(e),o=t._promiseAt(e),i=t._receiverAt(e);void 0===i&&(i=c),this._addCallbacks(n,r,o,i,null)},S.prototype._addCallbacks=function(t,e,n,r,o){var i=this._length();if(i>=65531&&(i=0,this._setLength(0)),0===i)this._promise0=n,this._receiver0=r,"function"==typeof t&&(this._fulfillmentHandler0=null===o?t:u.domainBind(o,t)),"function"==typeof e&&(this._rejectionHandler0=null===o?e:u.domainBind(o,e));else{var a=4*i-4;this[a+2]=n,this[a+3]=r,"function"==typeof t&&(this[a+0]=null===o?t:u.domainBind(o,t)),"function"==typeof e&&(this[a+1]=null===o?e:u.domainBind(o,e))}return this._setLength(i+1),i},S.prototype._proxy=function(t,e){this._addCallbacks(void 0,void 0,e,t,null)},S.prototype._resolveCallback=function(t,e){if(0==(117506048&this._bitField)){if(t===this)return this._rejectCallback(r(),!1);var n=g(t,this);if(!(n instanceof S))return this._fulfill(t);e&&this._propagateFrom(n,2);var o=n._target();if(o!==this){var i=o._bitField;if(0==(50397184&i)){var a=this._length();a>0&&o._migrateCallback0(this);for(var s=1;s<a;++s)o._migrateCallbackAt(this,s);this._setFollowing(),this._setLength(0),this._setFollowee(o)}else if(0!=(33554432&i))this._fulfill(o._value());else if(0!=(16777216&i))this._reject(o._reason());else{var c=new v("late cancellation observer");o._attachExtraTrace(c),this._reject(c)}}else this._reject(r())}},S.prototype._rejectCallback=function(t,e,n){var r=u.ensureErrorObject(t),o=r===t;if(!o&&!n&&j.warnings()){var i="a promise was rejected with a non-error: "+u.classString(t);this._warn(i,!0)}this._attachExtraTrace(r,!!e&&o),this._reject(t)},S.prototype._resolveFromExecutor=function(t){if(t!==_){var e=this;this._captureStackTrace(),this._pushContext();var n=!0,r=this._execute(t,function(t){e._resolveCallback(t)},function(t){e._rejectCallback(t,n)});n=!1,this._popContext(),void 0!==r&&e._rejectCallback(r,!0)}},S.prototype._settlePromiseFromHandler=function(t,e,n,r){var o=r._bitField;if(0==(65536&o)){var i;r._pushContext(),e===y?n&&"number"==typeof n.length?i=T(t).apply(this._boundValue(),n):(i=C).e=new d("cannot .spread() a non-array: "+u.classString(n)):i=T(t).call(e,n);var a=r._popContext();0==(65536&(o=r._bitField))&&(i===m?r._reject(n):i===C?r._rejectCallback(i.e,!1):(j.checkForgottenReturns(i,a,"",r,this),r._resolveCallback(i)))}},S.prototype._target=function(){for(var t=this;t._isFollowing();)t=t._followee();return t},S.prototype._followee=function(){return this._rejectionHandler0},S.prototype._setFollowee=function(t){this._rejectionHandler0=t},S.prototype._settlePromise=function(t,e,n,r){var i=t instanceof S,s=this._bitField,c=0!=(134217728&s);0!=(65536&s)?(i&&t._invokeInternalOnCancel(),n instanceof k&&n.isFinallyHandler()?(n.cancelPromise=t,T(e).call(n,r)===C&&t._reject(C.e)):e===o?t._fulfill(o.call(n)):n instanceof a?n._promiseCancelled(t):i||t instanceof b?t._cancel():n.cancel()):"function"==typeof e?i?(c&&t._setAsyncGuaranteed(),this._settlePromiseFromHandler(e,n,r,t)):e.call(n,r,t):n instanceof a?n._isResolved()||(0!=(33554432&s)?n._promiseFulfilled(r,t):n._promiseRejected(r,t)):i&&(c&&t._setAsyncGuaranteed(),0!=(33554432&s)?t._fulfill(r):t._reject(r))},S.prototype._settlePromiseLateCancellationObserver=function(t){var e=t.handler,n=t.promise,r=t.receiver,o=t.value;"function"==typeof e?n instanceof S?this._settlePromiseFromHandler(e,r,o,n):e.call(r,o,n):n instanceof S&&n._reject(o)},S.prototype._settlePromiseCtx=function(t){this._settlePromise(t.promise,t.handler,t.receiver,t.value)},S.prototype._settlePromise0=function(t,e,n){var r=this._promise0,o=this._receiverAt(0);this._promise0=void 0,this._receiver0=void 0,this._settlePromise(r,t,o,e)},S.prototype._clearCallbackDataAtIndex=function(t){var e=4*t-4;this[e+2]=this[e+3]=this[e+0]=this[e+1]=void 0},S.prototype._fulfill=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(t===this){var n=r();return this._attachExtraTrace(n),this._reject(n)}this._setFulfilled(),this._rejectionHandler0=t,(65535&e)>0&&(0!=(134217728&e)?this._settlePromises():p.settlePromises(this),this._dereferenceTrace())}},S.prototype._reject=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=t,this._isFinal())return p.fatalError(t,u.isNode);(65535&e)>0?p.settlePromises(this):this._ensurePossibleRejectionHandled()}},S.prototype._fulfillPromises=function(t,e){for(var n=1;n<t;n++){var r=this._fulfillmentHandlerAt(n),o=this._promiseAt(n),i=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(o,r,i,e)}},S.prototype._rejectPromises=function(t,e){for(var n=1;n<t;n++){var r=this._rejectionHandlerAt(n),o=this._promiseAt(n),i=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(o,r,i,e)}},S.prototype._settlePromises=function(){var t=this._bitField,e=65535&t;if(e>0){if(0!=(16842752&t)){var n=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,n,t),this._rejectPromises(e,n)}else{var r=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,r,t),this._fulfillPromises(e,r)}this._setLength(0)}this._clearCancellationData()},S.prototype._settledValue=function(){var t=this._bitField;return 0!=(33554432&t)?this._rejectionHandler0:0!=(16777216&t)?this._fulfillmentHandler0:void 0},S.defer=S.pending=function(){j.deprecated("Promise.defer","new Promise");var t=new S(_);return{promise:t,resolve:F,reject:P}},u.notEnumerableProp(S,"_makeSelfResolutionError",r),t("./method")(S,_,g,i,j),t("./bind")(S,_,g,j),t("./cancel")(S,b,i,j),t("./direct_resolve")(S),t("./synchronous_inspection")(S),t("./join")(S,b,g,_,p,s),S.Promise=S,S.version="3.5.2",t("./map.js")(S,b,i,g,_,j),t("./call_get.js")(S),t("./using.js")(S,i,g,x,_,j),t("./timers.js")(S,_,j),t("./generators.js")(S,i,_,g,a,j),t("./nodeify.js")(S),t("./promisify.js")(S,_),t("./props.js")(S,b,g,i),t("./race.js")(S,_,g,i),t("./reduce.js")(S,b,i,g,_,j),t("./settle.js")(S,b,j),t("./some.js")(S,b,i),t("./filter.js")(S,_),t("./each.js")(S,_),t("./any.js")(S),u.toFastProperties(S),u.toFastProperties(S.prototype),R({a:1}),R({b:2}),R({c:3}),R(1),R(function(){}),R(void 0),R(!1),R(new S(_)),j.setBounds(f.firstLineError,u.lastLineError),S}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i){var a=t("./util");function s(t){var r=this._promise=new e(n);t instanceof e&&r._propagateFrom(t,3),r._setOnCancel(this),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}return a.isArray,a.inherits(s,i),s.prototype.length=function(){return this._length},s.prototype.promise=function(){return this._promise},s.prototype._init=function t(n,i){var s=r(this._values,this._promise);if(s instanceof e){var c=(s=s._target())._bitField;if(this._values=s,0==(50397184&c))return this._promise._setAsyncGuaranteed(),s._then(t,this._reject,void 0,this,i);if(0==(33554432&c))return 0!=(16777216&c)?this._reject(s._reason()):this._cancel();s=s._value()}if(null!==(s=a.asArray(s)))0!==s.length?this._iterate(s):-5===i?this._resolveEmptyArray():this._resolve(function(t){switch(t){case-2:return[];case-3:return{};case-6:return new Map}}(i));else{var u=o("expecting an array or an iterable object but got "+a.classString(s)).reason();this._promise._rejectCallback(u,!1)}},s.prototype._iterate=function(t){var n=this.getActualLength(t.length);this._length=n,this._values=this.shouldCopyValues()?new Array(n):this._values;for(var o=this._promise,i=!1,a=null,s=0;s<n;++s){var c=r(t[s],o);c instanceof e?(c=c._target(),a=c._bitField):a=null,i?null!==a&&c.suppressUnhandledRejections():null!==a?0==(50397184&a)?(c._proxy(this,s),this._values[s]=c):i=0!=(33554432&a)?this._promiseFulfilled(c._value(),s):0!=(16777216&a)?this._promiseRejected(c._reason(),s):this._promiseCancelled(s):i=this._promiseFulfilled(c,s)}i||o._setAsyncGuaranteed()},s.prototype._isResolved=function(){return null===this._values},s.prototype._resolve=function(t){this._values=null,this._promise._fulfill(t)},s.prototype._cancel=function(){!this._isResolved()&&this._promise._isCancellable()&&(this._values=null,this._promise._cancel())},s.prototype._reject=function(t){this._values=null,this._promise._rejectCallback(t,!1)},s.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;return n>=this._length&&(this._resolve(this._values),!0)},s.prototype._promiseCancelled=function(){return this._cancel(),!0},s.prototype._promiseRejected=function(t){return this._totalResolved++,this._reject(t),!0},s.prototype._resultCancelled=function(){if(!this._isResolved()){var t=this._values;if(this._cancel(),t instanceof e)t.cancel();else for(var n=0;n<t.length;++n)t[n]instanceof e&&t[n].cancel()}},s.prototype.shouldCopyValues=function(){return!0},s.prototype.getActualLength=function(t){return t},s}},{"./util":36}],24:[function(t,e,n){"use strict";e.exports=function(e,n){var r={},o=t("./util"),i=t("./nodeback"),a=o.withAppended,s=o.maybeWrapAsError,c=o.canEvaluate,u=t("./errors").TypeError,l={__isPromisified__:!0},f=new RegExp("^(?:"+["arity","length","name","arguments","caller","callee","prototype","__isPromisified__"].join("|")+")$"),p=function(t){return o.isIdentifier(t)&&"_"!==t.charAt(0)&&"constructor"!==t};function h(t){return!f.test(t)}function d(t){try{return!0===t.__isPromisified__}catch(t){return!1}}function v(t,e,n){var r=o.getDataPropertyOrDefault(t,e+n,l);return!!r&&d(r)}function _(t,e,n,r){for(var i=o.inheritedDataKeys(t),a=[],s=0;s<i.length;++s){var c=i[s],l=t[c],f=r===p||p(c,l,t);"function"!=typeof l||d(l)||v(t,c,e)||!r(c,l,t,f)||a.push(c,l)}return function(t,e,n){for(var r=0;r<t.length;r+=2){var o=t[r];if(n.test(o))for(var i=o.replace(n,""),a=0;a<t.length;a+=2)if(t[a]===i)throw new u("Cannot promisify an API that has normal methods with '%s'-suffix\n\n See http://goo.gl/MqrFmX\n".replace("%s",e))}}(a,e,n),a}var y=function(t){return t.replace(/([$])/,"\\$")},m=c?void 0:function(t,c,u,l,f,p){var h=function(){return this}(),d=t;function v(){var o=c;c===r&&(o=this);var u=new e(n);u._captureStackTrace();var l="string"==typeof d&&this!==h?this[d]:t,f=i(u,p);try{l.apply(o,a(arguments,f))}catch(t){u._rejectCallback(s(t),!0,!0)}return u._isFateSealed()||u._setAsyncGuaranteed(),u}return"string"==typeof d&&(t=l),o.notEnumerableProp(v,"__isPromisified__",!0),v};function g(t,e,n,i,a){for(var s=new RegExp(y(e)+"$"),c=_(t,e,s,n),u=0,l=c.length;u<l;u+=2){var f=c[u],p=c[u+1],h=f+e;if(i===m)t[h]=m(f,r,f,p,e,a);else{var d=i(p,function(){return m(f,r,f,p,e,a)});o.notEnumerableProp(d,"__isPromisified__",!0),t[h]=d}}return o.toFastProperties(t),t}e.promisify=function(t,e){if("function"!=typeof t)throw new u("expecting a function but got "+o.classString(t));if(d(t))return t;var n=void 0===(e=Object(e)).context?r:e.context,i=!!e.multiArgs,a=function(t,e,n){return m(t,e,void 0,t,null,n)}(t,n,i);return o.copyDescriptors(t,a,h),a},e.promisifyAll=function(t,e){if("function"!=typeof t&&"object"!=typeof t)throw new u("the target of promisifyAll must be an object or a function\n\n See http://goo.gl/MqrFmX\n");var n=!!(e=Object(e)).multiArgs,r=e.suffix;"string"!=typeof r&&(r="Async");var i=e.filter;"function"!=typeof i&&(i=p);var a=e.promisifier;if("function"!=typeof a&&(a=m),!o.isIdentifier(r))throw new RangeError("suffix must be a valid identifier\n\n See http://goo.gl/MqrFmX\n");for(var s=o.inheritedDataKeys(t),c=0;c<s.length;++c){var l=t[s[c]];"constructor"!==s[c]&&o.isClass(l)&&(g(l.prototype,r,i,a,n),g(l,r,i,a,n))}return g(t,r,i,a,n)}}},{"./errors":12,"./nodeback":20,"./util":36}],25:[function(t,e,n){"use strict";e.exports=function(e,n,r,o){var i,a=t("./util"),s=a.isObject,c=t("./es5");"function"==typeof Map&&(i=Map);var u=function(){var t=0,e=0;function n(n,r){this[t]=n,this[t+e]=r,t++}return function(r){e=r.size,t=0;var o=new Array(2*r.size);return r.forEach(n,o),o}}();function l(t){var e,n=!1;if(void 0!==i&&t instanceof i)e=u(t),n=!0;else{var r=c.keys(t),o=r.length;e=new Array(2*o);for(var a=0;a<o;++a){var s=r[a];e[a]=t[s],e[a+o]=s}}this.constructor$(e),this._isMap=n,this._init$(void 0,n?-6:-3)}function f(t){var n,i=r(t);return s(i)?(n=i instanceof e?i._then(e.props,void 0,void 0,void 0,void 0):new l(i).promise(),i instanceof e&&n._propagateFrom(i,2),n):o("cannot await properties of a non-object\n\n See http://goo.gl/MqrFmX\n")}a.inherits(l,n),l.prototype._init=function(){},l.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;if(n>=this._length){var r;if(this._isMap)r=function(t){for(var e=new i,n=t.length/2|0,r=0;r<n;++r){var o=t[n+r],a=t[r];e.set(o,a)}return e}(this._values);else{r={};for(var o=this.length(),a=0,s=this.length();a<s;++a)r[this._values[a+o]]=this._values[a]}return this._resolve(r),!0}return!1},l.prototype.shouldCopyValues=function(){return!1},l.prototype.getActualLength=function(t){return t>>1},e.prototype.props=function(){return f(this)},e.props=function(t){return f(t)}}},{"./es5":13,"./util":36}],26:[function(t,e,n){"use strict";function r(t){this._capacity=t,this._length=0,this._front=0}r.prototype._willBeOverCapacity=function(t){return this._capacity<t},r.prototype._pushOne=function(t){var e=this.length();this._checkCapacity(e+1);var n=this._front+e&this._capacity-1;this[n]=t,this._length=e+1},r.prototype.push=function(t,e,n){var r=this.length()+3;if(this._willBeOverCapacity(r))return this._pushOne(t),this._pushOne(e),void this._pushOne(n);var o=this._front+r-3;this._checkCapacity(r);var i=this._capacity-1;this[o+0&i]=t,this[o+1&i]=e,this[o+2&i]=n,this._length=r},r.prototype.shift=function(){var t=this._front,e=this[t];return this[t]=void 0,this._front=t+1&this._capacity-1,this._length--,e},r.prototype.length=function(){return this._length},r.prototype._checkCapacity=function(t){this._capacity<t&&this._resizeTo(this._capacity<<1)},r.prototype._resizeTo=function(t){var e=this._capacity;this._capacity=t;var n=this._front,r=this._length,o=n+r&e-1;!function(t,e,n,r,o){for(var i=0;i<o;++i)n[i+r]=t[i+e],t[i+e]=void 0}(this,0,this,e,o)},e.exports=r},{}],27:[function(t,e,n){"use strict";e.exports=function(e,n,r,o){var i=t("./util"),a=function(t){return t.then(function(e){return s(e,t)})};function s(t,s){var c=r(t);if(c instanceof e)return a(c);if(null===(t=i.asArray(t)))return o("expecting an array or an iterable object but got "+i.classString(t));var u=new e(n);void 0!==s&&u._propagateFrom(s,3);for(var l=u._fulfill,f=u._reject,p=0,h=t.length;p<h;++p){var d=t[p];(void 0!==d||p in t)&&e.cast(d)._then(l,f,void 0,u,null)}return u}e.race=function(t){return s(t,void 0)},e.prototype.race=function(){return s(this,void 0)}}},{"./util":36}],28:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i,a){var s=e._getDomain,c=t("./util"),u=c.tryCatch;function l(t,n,r,o){this.constructor$(t);var a=s();this._fn=null===a?n:c.domainBind(a,n),void 0!==r&&(r=e.resolve(r))._attachCancellationCallback(this),this._initialValue=r,this._currentCancellable=null,this._eachValues=o===i?Array(this._length):0===o?null:void 0,this._promise._captureStackTrace(),this._init$(void 0,-5)}function f(t,e){this.isFulfilled()?e._resolve(t):e._reject(t)}function p(t,e,n,o){if("function"!=typeof e)return r("expecting a function but got "+c.classString(e));var i=new l(t,e,n,o);return i.promise()}function h(t){this.accum=t,this.array._gotAccum(t);var n=o(this.value,this.array._promise);return n instanceof e?(this.array._currentCancellable=n,n._then(d,void 0,void 0,this,void 0)):d.call(this,n)}function d(t){var n,r=this.array,o=r._promise,i=u(r._fn);o._pushContext(),(n=void 0!==r._eachValues?i.call(o._boundValue(),t,this.index,this.length):i.call(o._boundValue(),this.accum,t,this.index,this.length))instanceof e&&(r._currentCancellable=n);var s=o._popContext();return a.checkForgottenReturns(n,s,void 0!==r._eachValues?"Promise.each":"Promise.reduce",o),n}c.inherits(l,n),l.prototype._gotAccum=function(t){void 0!==this._eachValues&&null!==this._eachValues&&t!==i&&this._eachValues.push(t)},l.prototype._eachComplete=function(t){return null!==this._eachValues&&this._eachValues.push(t),this._eachValues},l.prototype._init=function(){},l.prototype._resolveEmptyArray=function(){this._resolve(void 0!==this._eachValues?this._eachValues:this._initialValue)},l.prototype.shouldCopyValues=function(){return!1},l.prototype._resolve=function(t){this._promise._resolveCallback(t),this._values=null},l.prototype._resultCancelled=function(t){if(t===this._initialValue)return this._cancel();this._isResolved()||(this._resultCancelled$(),this._currentCancellable instanceof e&&this._currentCancellable.cancel(),this._initialValue instanceof e&&this._initialValue.cancel())},l.prototype._iterate=function(t){var n,r;this._values=t;var o=t.length;if(void 0!==this._initialValue?(n=this._initialValue,r=0):(n=e.resolve(t[0]),r=1),this._currentCancellable=n,!n.isRejected())for(;r<o;++r){var i={accum:null,value:t[r],index:r,length:o,array:this};n=n._then(h,void 0,void 0,i,void 0)}void 0!==this._eachValues&&(n=n._then(this._eachComplete,void 0,void 0,this,void 0)),n._then(f,f,void 0,n,this)},e.prototype.reduce=function(t,e){return p(this,t,e,null)},e.reduce=function(t,e,n,r){return p(t,e,n,r)}}},{"./util":36}],29:[function(t,o,i){"use strict";var a,s=t("./util"),c=s.getNativePromise();if(s.isNode&&"undefined"==typeof MutationObserver){var u=n.setImmediate,l=e.nextTick;a=s.isRecentNode?function(t){u.call(n,t)}:function(t){l.call(e,t)}}else if("function"==typeof c&&"function"==typeof c.resolve){var f=c.resolve();a=function(t){f.then(t)}}else a="undefined"==typeof MutationObserver||"undefined"!=typeof window&&window.navigator&&(window.navigator.standalone||window.cordova)?void 0!==r?function(t){r(t)}:"undefined"!=typeof setTimeout?function(t){setTimeout(t,0)}:function(){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}:function(){var t=document.createElement("div"),e={attributes:!0},n=!1,r=document.createElement("div"),o=new MutationObserver(function(){t.classList.toggle("foo"),n=!1});return o.observe(r,e),function(o){var i=new MutationObserver(function(){i.disconnect(),o()});i.observe(t,e),n||(n=!0,r.classList.toggle("foo"))}}();o.exports=a},{"./util":36}],30:[function(t,e,n){"use strict";e.exports=function(e,n,r){var o=e.PromiseInspection,i=t("./util");function a(t){this.constructor$(t)}i.inherits(a,n),a.prototype._promiseResolved=function(t,e){this._values[t]=e;var n=++this._totalResolved;return n>=this._length&&(this._resolve(this._values),!0)},a.prototype._promiseFulfilled=function(t,e){var n=new o;return n._bitField=33554432,n._settledValueField=t,this._promiseResolved(e,n)},a.prototype._promiseRejected=function(t,e){var n=new o;return n._bitField=16777216,n._settledValueField=t,this._promiseResolved(e,n)},e.settle=function(t){return r.deprecated(".settle()",".reflect()"),new a(t).promise()},e.prototype.settle=function(){return e.settle(this)}}},{"./util":36}],31:[function(t,e,n){"use strict";e.exports=function(e,n,r){var o=t("./util"),i=t("./errors").RangeError,a=t("./errors").AggregateError,s=o.isArray,c={};function u(t){this.constructor$(t),this._howMany=0,this._unwrap=!1,this._initialized=!1}function l(t,e){if((0|e)!==e||e<0)return r("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var n=new u(t),o=n.promise();return n.setHowMany(e),n.init(),o}o.inherits(u,n),u.prototype._init=function(){if(this._initialized)if(0!==this._howMany){this._init$(void 0,-5);var t=s(this._values);!this._isResolved()&&t&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}else this._resolve([])},u.prototype.init=function(){this._initialized=!0,this._init()},u.prototype.setUnwrap=function(){this._unwrap=!0},u.prototype.howMany=function(){return this._howMany},u.prototype.setHowMany=function(t){this._howMany=t},u.prototype._promiseFulfilled=function(t){return this._addFulfilled(t),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},u.prototype._promiseRejected=function(t){return this._addRejected(t),this._checkOutcome()},u.prototype._promiseCancelled=function(){return this._values instanceof e||null==this._values?this._cancel():(this._addRejected(c),this._checkOutcome())},u.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var t=new a,e=this.length();e<this._values.length;++e)this._values[e]!==c&&t.push(this._values[e]);return t.length>0?this._reject(t):this._cancel(),!0}return!1},u.prototype._fulfilled=function(){return this._totalResolved},u.prototype._rejected=function(){return this._values.length-this.length()},u.prototype._addRejected=function(t){this._values.push(t)},u.prototype._addFulfilled=function(t){this._values[this._totalResolved++]=t},u.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},u.prototype._getRangeError=function(t){var e="Input array must contain at least "+this._howMany+" items but contains only "+t+" items";return new i(e)},u.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},e.some=function(t,e){return l(t,e)},e.prototype.some=function(t){return l(this,t)},e._SomePromiseArray=u}},{"./errors":12,"./util":36}],32:[function(t,e,n){"use strict";e.exports=function(t){function e(t){void 0!==t?(t=t._target(),this._bitField=t._bitField,this._settledValueField=t._isFateSealed()?t._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}e.prototype._settledValue=function(){return this._settledValueField};var n=e.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},r=e.prototype.error=e.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},o=e.prototype.isFulfilled=function(){return 0!=(33554432&this._bitField)},i=e.prototype.isRejected=function(){return 0!=(16777216&this._bitField)},a=e.prototype.isPending=function(){return 0==(50397184&this._bitField)},s=e.prototype.isResolved=function(){return 0!=(50331648&this._bitField)};e.prototype.isCancelled=function(){return 0!=(8454144&this._bitField)},t.prototype.__isCancelled=function(){return 65536==(65536&this._bitField)},t.prototype._isCancelled=function(){return this._target().__isCancelled()},t.prototype.isCancelled=function(){return 0!=(8454144&this._target()._bitField)},t.prototype.isPending=function(){return a.call(this._target())},t.prototype.isRejected=function(){return i.call(this._target())},t.prototype.isFulfilled=function(){return o.call(this._target())},t.prototype.isResolved=function(){return s.call(this._target())},t.prototype.value=function(){return n.call(this._target())},t.prototype.reason=function(){var t=this._target();return t._unsetRejectionIsUnhandled(),r.call(t)},t.prototype._value=function(){return this._settledValue()},t.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},t.PromiseInspection=e}},{}],33:[function(t,e,n){"use strict";e.exports=function(e,n){var r=t("./util"),o=r.errorObj,i=r.isObject,a={}.hasOwnProperty;return function(t,s){if(i(t)){if(t instanceof e)return t;var c=function(t){try{return function(t){return t.then}(t)}catch(t){return o.e=t,o}}(t);if(c===o){s&&s._pushContext();var u=e.reject(c.e);return s&&s._popContext(),u}if("function"==typeof c){if(function(t){try{return a.call(t,"_promise0")}catch(t){return!1}}(t)){var u=new e(n);return t._then(u._fulfill,u._reject,void 0,u,null),u}return function(t,i,a){var s=new e(n),c=s;a&&a._pushContext(),s._captureStackTrace(),a&&a._popContext();var u=!0,l=r.tryCatch(i).call(t,function(t){s&&(s._resolveCallback(t),s=null)},function(t){s&&(s._rejectCallback(t,u,!0),s=null)});return u=!1,s&&l===o&&(s._rejectCallback(l.e,!0,!0),s=null),c}(t,c,s)}}return t}}},{"./util":36}],34:[function(t,e,n){"use strict";e.exports=function(e,n,r){var o=t("./util"),i=e.TimeoutError;function a(t){this.handle=t}a.prototype._resultCancelled=function(){clearTimeout(this.handle)};var s=function(t){return c(+this).thenReturn(t)},c=e.delay=function(t,o){var i,c;return void 0!==o?(i=e.resolve(o)._then(s,null,null,t,void 0),r.cancellation()&&o instanceof e&&i._setOnCancel(o)):(i=new e(n),c=setTimeout(function(){i._fulfill()},+t),r.cancellation()&&i._setOnCancel(new a(c)),i._captureStackTrace()),i._setAsyncGuaranteed(),i};function u(t){return clearTimeout(this.handle),t}function l(t){throw clearTimeout(this.handle),t}e.prototype.delay=function(t){return c(t,this)},e.prototype.timeout=function(t,e){var n,s;t=+t;var c=new a(setTimeout(function(){n.isPending()&&function(t,e,n){var r;r="string"!=typeof e?e instanceof Error?e:new i("operation timed out"):new i(e),o.markAsOriginatingFromRejection(r),t._attachExtraTrace(r),t._reject(r),null!=n&&n.cancel()}(n,e,s)},t));return r.cancellation()?(s=this.then(),(n=s._then(u,l,void 0,c,void 0))._setOnCancel(c)):n=this._then(u,l,void 0,c,void 0),n}}},{"./util":36}],35:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i,a){var s=t("./util"),c=t("./errors").TypeError,u=t("./util").inherits,l=s.errorObj,f=s.tryCatch,p={};function h(t){setTimeout(function(){throw t},0)}function d(t,n){var o=0,a=t.length,s=new e(i);return function i(){if(o>=a)return s._fulfill();var c=function(t){var e=r(t);return e!==t&&"function"==typeof t._isDisposable&&"function"==typeof t._getDisposer&&t._isDisposable()&&e._setDisposable(t._getDisposer()),e}(t[o++]);if(c instanceof e&&c._isDisposable()){try{c=r(c._getDisposer().tryDispose(n),t.promise)}catch(t){return h(t)}if(c instanceof e)return c._then(i,h,null,null,null)}i()}(),s}function v(t,e,n){this._data=t,this._promise=e,this._context=n}function _(t,e,n){this.constructor$(t,e,n)}function y(t){return v.isDisposer(t)?(this.resources[this.index]._setDisposable(t),t.promise()):t}function m(t){this.length=t,this.promise=null,this[t-1]=null}v.prototype.data=function(){return this._data},v.prototype.promise=function(){return this._promise},v.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():p},v.prototype.tryDispose=function(t){var e=this.resource(),n=this._context;void 0!==n&&n._pushContext();var r=e!==p?this.doDispose(e,t):null;return void 0!==n&&n._popContext(),this._promise._unsetDisposable(),this._data=null,r},v.isDisposer=function(t){return null!=t&&"function"==typeof t.resource&&"function"==typeof t.tryDispose},u(_,v),_.prototype.doDispose=function(t,e){var n=this.data();return n.call(t,t,e)},m.prototype._resultCancelled=function(){for(var t=this.length,n=0;n<t;++n){var r=this[n];r instanceof e&&r.cancel()}},e.using=function(){var t=arguments.length;if(t<2)return n("you must pass at least 2 arguments to Promise.using");var o,i=arguments[t-1];if("function"!=typeof i)return n("expecting a function but got "+s.classString(i));var c=!0;2===t&&Array.isArray(arguments[0])?(o=arguments[0],t=o.length,c=!1):(o=arguments,t--);for(var u=new m(t),p=0;p<t;++p){var h=o[p];if(v.isDisposer(h)){var _=h;(h=h.promise())._setDisposable(_)}else{var g=r(h);g instanceof e&&(h=g._then(y,null,null,{resources:u,index:p},void 0))}u[p]=h}for(var b=new Array(u.length),p=0;p<b.length;++p)b[p]=e.resolve(u[p]).reflect();var w=e.all(b).then(function(t){for(var e=0;e<t.length;++e){var n=t[e];if(n.isRejected())return l.e=n.error(),l;if(!n.isFulfilled())return void w.cancel();t[e]=n.value()}x._pushContext(),i=f(i);var r=c?i.apply(void 0,t):i(t),o=x._popContext();return a.checkForgottenReturns(r,o,"Promise.using",x),r}),x=w.lastly(function(){var t=new e.PromiseInspection(w);return d(u,t)});return u.promise=x,x._setOnCancel(u),x},e.prototype._setDisposable=function(t){this._bitField=131072|this._bitField,this._disposer=t},e.prototype._isDisposable=function(){return(131072&this._bitField)>0},e.prototype._getDisposer=function(){return this._disposer},e.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},e.prototype.disposer=function(t){if("function"==typeof t)return new _(t,this,o());throw new c}}},{"./errors":12,"./util":36}],36:[function(t,r,o){"use strict";var i=t("./es5"),a="undefined"==typeof navigator,s={e:{}},c,u="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n?n:void 0!==this?this:null;function l(){try{var t=c;return c=null,t.apply(this,arguments)}catch(t){return s.e=t,s}}function f(t){return c=t,l}var p=function(t,e){var n={}.hasOwnProperty;function r(){for(var r in this.constructor=t,this.constructor$=e,e.prototype)n.call(e.prototype,r)&&"$"!==r.charAt(r.length-1)&&(this[r+"$"]=e.prototype[r])}return r.prototype=e.prototype,t.prototype=new r,t.prototype};function h(t){return null==t||!0===t||!1===t||"string"==typeof t||"number"==typeof t}function d(t){return"function"==typeof t||"object"==typeof t&&null!==t}function v(t){return h(t)?new Error(C(t)):t}function _(t,e){var n,r=t.length,o=new Array(r+1);for(n=0;n<r;++n)o[n]=t[n];return o[n]=e,o}function y(t,e,n){if(!i.isES5)return{}.hasOwnProperty.call(t,e)?t[e]:void 0;var r=Object.getOwnPropertyDescriptor(t,e);return null!=r?null==r.get&&null==r.set?r.value:n:void 0}function m(t,e,n){if(h(t))return t;var r={value:n,configurable:!0,enumerable:!1,writable:!0};return i.defineProperty(t,e,r),t}function g(t){throw t}var b=function(){var t=[Array.prototype,Object.prototype,Function.prototype],e=function(e){for(var n=0;n<t.length;++n)if(t[n]===e)return!0;return!1};if(i.isES5){var n=Object.getOwnPropertyNames;return function(t){for(var r=[],o=Object.create(null);null!=t&&!e(t);){var a;try{a=n(t)}catch(t){return r}for(var s=0;s<a.length;++s){var c=a[s];if(!o[c]){o[c]=!0;var u=Object.getOwnPropertyDescriptor(t,c);null!=u&&null==u.get&&null==u.set&&r.push(c)}}t=i.getPrototypeOf(t)}return r}}var r={}.hasOwnProperty;return function(n){if(e(n))return[];var o=[];t:for(var i in n)if(r.call(n,i))o.push(i);else{for(var a=0;a<t.length;++a)if(r.call(t[a],i))continue t;o.push(i)}return o}}(),w=/this\s*\.\s*\S+\s*=/;function x(t){try{if("function"==typeof t){var e=i.names(t.prototype),n=i.isES5&&e.length>1,r=e.length>0&&!(1===e.length&&"constructor"===e[0]),o=w.test(t+"")&&i.names(t).length>0;if(n||r||o)return!0}return!1}catch(t){return!1}}function j(t){function e(){}e.prototype=t;var n=new e;function r(){return typeof n.foo}return r(),r(),t}var k=/^[a-z$_][a-z$_0-9]*$/i;function O(t){return k.test(t)}function E(t,e,n){for(var r=new Array(t),o=0;o<t;++o)r[o]=e+o+n;return r}function C(t){try{return t+""}catch(t){return"[no string representation]"}}function T(t){return t instanceof Error||null!==t&&"object"==typeof t&&"string"==typeof t.message&&"string"==typeof t.name}function S(t){try{m(t,"isOperational",!0)}catch(t){}}function F(t){return null!=t&&(t instanceof Error.__BluebirdErrorTypes__.OperationalError||!0===t.isOperational)}function P(t){return T(t)&&i.propertyIsWritable(t,"stack")}var R="stack"in new Error?function(t){return P(t)?t:new Error(C(t))}:function(t){if(P(t))return t;try{throw new Error(C(t))}catch(t){return t}};function A(t){return{}.toString.call(t)}function D(t,e,n){for(var r=i.names(t),o=0;o<r.length;++o){var a=r[o];if(n(a))try{i.defineProperty(e,a,i.getDescriptor(t,a))}catch(t){}}}var L=function(t){return i.isArray(t)?t:null};if("undefined"!=typeof Symbol&&Symbol.iterator){var M="function"==typeof Array.from?function(t){return Array.from(t)}:function(t){for(var e,n=[],r=t[Symbol.iterator]();!(e=r.next()).done;)n.push(e.value);return n};L=function(t){return i.isArray(t)?t:null!=t&&"function"==typeof t[Symbol.iterator]?M(t):null}}var N=void 0!==e&&"[object process]"===A(e).toLowerCase(),B=void 0!==e&&!0;function I(t){return B?Object({NODE_ENV:"production"})[t]:void 0}function V(){if("function"==typeof Promise)try{var t=new Promise(function(){});if("[object Promise]"==={}.toString.call(t))return Promise}catch(t){}}function H(t,e){return t.bind(e)}var U={isClass:x,isIdentifier:O,inheritedDataKeys:b,getDataPropertyOrDefault:y,thrower:g,isArray:i.isArray,asArray:L,notEnumerableProp:m,isPrimitive:h,isObject:d,isError:T,canEvaluate:a,errorObj:s,tryCatch:f,inherits:p,withAppended:_,maybeWrapAsError:v,toFastProperties:j,filledRange:E,toString:C,canAttachTrace:P,ensureErrorObject:R,originatesFromRejection:F,markAsOriginatingFromRejection:S,classString:A,copyDescriptors:D,hasDevTools:"undefined"!=typeof chrome&&chrome&&"function"==typeof chrome.loadTimes,isNode:N,hasEnvVariables:B,env:I,global:u,getNativePromise:V,domainBind:H};U.isRecentNode=U.isNode&&function(){var t=e.versions.node.split(".").map(Number);return 0===t[0]&&t[1]>10||t[0]>0}(),U.isNode&&U.toFastProperties(e);try{throw new Error}catch(t){U.lastLineError=t}r.exports=U},{"./es5":13}]},{},[4])(4)}(),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)}).call(this,n(64),n(16),n(213).setImmediate)},90:function(t,e,n){var r=n(115);t.exports=function(t){return Object(r(t))}},98:function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},99:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}}}); +//# sourceMappingURL=indexeddb-worker.js.map \ No newline at end of file diff --git a/riot/bundles/c2932262ed6106cd4535/indexeddb-worker.js.map b/riot/bundles/c2932262ed6106cd4535/indexeddb-worker.js.map new file mode 100644 index 0000000..fb1640b --- /dev/null +++ b/riot/bundles/c2932262ed6106cd4535/indexeddb-worker.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack/bootstrap","node_modules/core-js/library/modules/_uid.js","node_modules/core-js/library/modules/_to-integer.js","node_modules/core-js/library/modules/_defined.js","node_modules/core-js/library/modules/web.dom.iterable.js","node_modules/babel-runtime/helpers/slicedToArray.js","node_modules/core-js/library/modules/_to-primitive.js","node_modules/core-js/library/modules/_object-create.js","node_modules/core-js/library/modules/_to-length.js","node_modules/core-js/library/modules/_shared-key.js","node_modules/core-js/library/modules/_shared.js","node_modules/core-js/library/modules/_enum-bug-keys.js","node_modules/core-js/library/modules/_set-to-string-tag.js","node_modules/core-js/library/modules/_object-pie.js","node_modules/core-js/library/modules/_dom-create.js","node_modules/core-js/library/modules/_meta.js","node_modules/babel-runtime/core-js/object/keys.js","(webpack)/buildin/global.js","node_modules/core-js/library/modules/_ie8-dom-define.js","node_modules/core-js/library/modules/_object-keys-internal.js","node_modules/core-js/library/modules/_iobject.js","node_modules/core-js/library/modules/_classof.js","node_modules/core-js/library/modules/_wks-ext.js","node_modules/core-js/library/modules/_wks-define.js","node_modules/babel-runtime/regenerator/index.js","node_modules/core-js/library/modules/_core.js","node_modules/core-js/library/modules/_iter-define.js","node_modules/core-js/library/modules/core.get-iterator-method.js","node_modules/core-js/library/modules/_object-gops.js","src/vector/indexeddb-worker.js","node_modules/matrix-js-sdk/lib/indexeddb-worker.js","node_modules/matrix-js-sdk/lib/store/indexeddb-store-worker.js","node_modules/babel-runtime/core-js/get-iterator.js","node_modules/babel-runtime/core-js/array/from.js","node_modules/core-js/library/modules/_redefine.js","node_modules/core-js/library/modules/_array-includes.js","node_modules/core-js/library/modules/_to-absolute-index.js","node_modules/core-js/library/modules/_object-gpo.js","node_modules/babel-runtime/node_modules/regenerator-runtime/runtime-module.js","node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js","node_modules/timers-browserify/main.js","node_modules/setimmediate/setImmediate.js","node_modules/core-js/library/fn/object/keys.js","node_modules/core-js/library/modules/es6.object.keys.js","node_modules/babel-runtime/core-js/object/define-property.js","node_modules/core-js/library/modules/_object-gopd.js","node_modules/core-js/library/modules/_object-gopn.js","node_modules/core-js/library/modules/_export.js","node_modules/core-js/library/modules/_object-dps.js","node_modules/core-js/library/modules/_html.js","node_modules/core-js/library/modules/_iter-call.js","node_modules/core-js/library/modules/_is-array-iter.js","node_modules/core-js/library/modules/_iter-detect.js","node_modules/core-js/library/modules/_object-gopn-ext.js","node_modules/core-js/library/modules/_iter-step.js","node_modules/core-js/library/modules/_is-array.js","node_modules/matrix-js-sdk/lib/sync-accumulator.js","node_modules/matrix-js-sdk/lib/utils.js","node_modules/babel-runtime/core-js/json/stringify.js","node_modules/core-js/library/modules/_global.js","node_modules/core-js/library/modules/_is-object.js","node_modules/core-js/library/fn/array/from.js","node_modules/core-js/library/modules/_string-at.js","node_modules/core-js/library/modules/_iter-create.js","node_modules/core-js/library/modules/es6.array.from.js","node_modules/core-js/library/modules/_create-property.js","node_modules/core-js/library/fn/object/define-property.js","node_modules/core-js/library/modules/es6.object.define-property.js","node_modules/core-js/library/fn/object/create.js","node_modules/core-js/library/modules/es6.object.create.js","node_modules/babel-runtime/core-js/symbol/iterator.js","node_modules/core-js/library/fn/symbol/iterator.js","node_modules/core-js/library/modules/es6.array.iterator.js","node_modules/core-js/library/modules/_add-to-unscopables.js","node_modules/babel-runtime/core-js/symbol.js","node_modules/core-js/library/fn/symbol/index.js","node_modules/core-js/library/modules/es6.symbol.js","node_modules/core-js/library/modules/_enum-keys.js","node_modules/core-js/library/modules/es7.symbol.async-iterator.js","node_modules/core-js/library/modules/es7.symbol.observable.js","node_modules/core-js/library/modules/_wks.js","node_modules/core-js/library/fn/json/stringify.js","node_modules/unhomoglyph/index.js","node_modules/core-js/library/fn/get-iterator.js","node_modules/core-js/library/modules/core.get-iterator.js","node_modules/babel-runtime/core-js/is-iterable.js","node_modules/babel-runtime/helpers/classCallCheck.js","node_modules/core-js/library/fn/is-iterable.js","node_modules/core-js/library/modules/core.is-iterable.js","node_modules/matrix-js-sdk/lib/store/indexeddb-local-backend.js","node_modules/core-js/library/modules/_descriptors.js","node_modules/core-js/library/modules/_object-dp.js","node_modules/babel-runtime/helpers/createClass.js","node_modules/babel-runtime/helpers/toConsumableArray.js","node_modules/core-js/library/modules/_an-object.js","node_modules/core-js/library/modules/_fails.js","node_modules/core-js/library/modules/_has.js","node_modules/core-js/library/modules/_to-iobject.js","node_modules/core-js/library/modules/_hide.js","node_modules/process/browser.js","node_modules/babel-runtime/helpers/typeof.js","node_modules/core-js/library/modules/_ctx.js","node_modules/core-js/library/modules/_object-sap.js","node_modules/core-js/library/modules/_property-desc.js","node_modules/core-js/library/modules/_iterators.js","node_modules/core-js/library/modules/_object-keys.js","node_modules/babel-runtime/core-js/object/create.js","node_modules/core-js/library/modules/es6.string.iterator.js","node_modules/core-js/library/modules/_library.js","node_modules/bluebird/js/browser/bluebird.js","node_modules/core-js/library/modules/_to-object.js","node_modules/core-js/library/modules/_a-function.js","node_modules/core-js/library/modules/_cof.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","id","px","Math","random","concat","undefined","toString","ceil","floor","it","isNaN","TypeError","global","hide","Iterators","TO_STRING_TAG","DOMIterables","split","length","NAME","Collection","proto","Array","_isIterable3","_interopRequireDefault","_getIterator3","obj","default","arr","isArray","_arr","_n","_d","_e","_s","_i","next","done","push","err","sliceIterator","isObject","S","fn","val","valueOf","anObject","dPs","enumBugKeys","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","appendChild","src","contentWindow","document","open","write","lt","close","F","O","Properties","result","toInteger","min","shared","uid","core","store","version","copyright","def","f","has","TAG","tag","stat","configurable","propertyIsEnumerable","is","createElement","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","meta","KEY","NEED","fastKey","getWeak","onFreeze","g","this","Function","eval","e","window","a","toIObject","arrayIndexOf","names","cof","ARG","arguments","T","B","tryGet","callee","LIBRARY","wksExt","$Symbol","charAt","__e","$export","redefine","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","keys","returnThis","Base","Constructor","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","values","P","classof","getIteratorMethod","getOwnPropertySymbols","remoteWorker","IndexedDBStoreWorker","postMessage","onmessage","onMessage","_toConsumableArray3","_classCallCheck3","_createClass3","_bluebird2","_indexeddbLocalBackend2","backend","ev","_backend","_backend2","_this","msg","data","prom","command","indexedDB","args","resolve","connect","isNewlyCreated","clearDatabase","then","getSavedSync","setSyncData","apply","syncToDatabase","getUserPresenceEvents","getNextBatchToken","getOutOfBandMembers","clearOutOfBandMembers","setOutOfBandMembers","getClientOptions","storeClientOptions","ret","seq","console","error","message","toLength","toAbsoluteIndex","IS_INCLUDES","$this","el","fromIndex","index","max","toObject","ObjectProto","constructor","hadRuntime","regeneratorRuntime","getOwnPropertyNames","indexOf","oldRuntime","Op","hasOwn","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","inModule","runtime","wrap","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","getProto","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","arg","__await","defineIteratorMethods","AsyncIterator","async","innerFn","outerFn","self","tryLocsList","iter","reverse","pop","Context","reset","skipTempReset","prev","sent","_sent","delegate","method","tryEntries","forEach","resetTryEntry","slice","stop","rootRecord","completion","type","rval","dispatchException","exception","context","handle","loc","caught","record","entry","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","Error","abrupt","finallyEntry","complete","afterLoc","finish","catch","thrown","delegateYield","iterable","resultName","nextLoc","protoGenerator","generator","_invoke","state","doneResult","delegateResult","maybeInvokeDelegate","tryCatch","makeInvokeMethod","previousPromise","callInvokeWithMethodAndArg","Promise","reject","invoke","unwrapped","return","info","pushTryEntry","locs","iteratorMethod","scope","Timeout","clearFn","_id","_clearFn","setTimeout","clearTimeout","setInterval","clearInterval","timeout","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","setImmediate","clearImmediate","process","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","nextTick","runIfPresent","importScripts","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","messagePrefix","onGlobalMessage","event","source","addEventListener","attachEvent","installPostMessageImplementation","MessageChannel","channel","port1","port2","installMessageChannelImplementation","html","documentElement","script","onreadystatechange","removeChild","installReadyStateChangeImplementation","callback","task","run","$keys","pIE","createDesc","toPrimitive","IE8_DOM_DEFINE","gOPD","getOwnPropertyDescriptor","hiddenKeys","ctx","own","out","IS_FORCED","IS_GLOBAL","G","IS_STATIC","IS_PROTO","IS_BIND","IS_WRAP","W","expProto","target","C","b","virtual","R","U","dP","getKeys","defineProperties","ArrayProto","SAFE_CLOSING","riter","from","exec","skipClosing","safe","gOPN","windowNames","getWindowNames","_create2","_keys2","_utils2","SyncAccumulator","opts","maxTimelineEntries","accountData","inviteRooms","joinRooms","nextBatch","groups","invite","join","leave","syncResponse","_accumulateRooms","_accumulateGroups","_accumulateAccountData","next_batch","account_data","events","_this2","rooms","roomId","_accumulateRoom","category","_accumulateInviteState","_accumulateJoinState","invite_state","currentData","hasAdded","current","state_key","_currentState","_timeline","_accountData","_unreadNotifications","_summary","_readReceipts","unread_notifications","summary","acc","sum","ephemeral","content","eventId","userId","timeline","limited","setState","token","prev_batch","_this3","groupId","_accumulateGroup","cat","_this4","roomData","roomJson","evType","receiptEvent","room_id","receiptData","m.read","msgData","rollBackState","timelineEvent","prevStateEvent","deepCopy","unsigned","prev_content","prev_sender","sender","stateKey","accData","roomsData","groupsData","eventMap","_typeof3","_stringify2","unhomoglyph","encodeParams","params","qs","encodeURIComponent","substring","encodeUri","pathTemplate","variables","replace","map","array","results","filter","findElement","removeElement","removed","splice","isFunction","Boolean","checkObjectHasKeys","checkObjectHasNoAdditionalKeys","allowedKeys","JSON","parse","deepCompare","x","y","RegExp","Date","extend","propName","runPolyfills","fun","len","res","thisArg","k","A","kValue","mappedValue","inherits","superCtor","Temp","prop","super_","writable","isNumber","isFinite","removeHiddenChars","str","normalize","removeHiddenCharsRegex","escapeRegExp","string","globToRegexp","glob","extended","pat","match","p1","p2","offset","__g","defined","TO_STRING","that","pos","String","charCodeAt","descriptor","isArrayIter","createProperty","getIterFn","arrayLike","step","aLen","mapfn","mapping","iterFn","$defineProperty","$Object","desc","D","addToUnscopables","iterated","_t","_k","Arguments","DESCRIPTORS","$fails","wks","wksDefine","enumKeys","_create","gOPNExt","$GOPD","$DP","$JSON","_stringify","stringify","HIDDEN","TO_PRIMITIVE","isEnum","SymbolRegistry","AllSymbols","OPSymbols","USE_NATIVE","QObject","setter","findChild","setSymbolDesc","protoDesc","sym","isSymbol","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","set","es6Symbols","j","wellKnownSymbols","for","keyFor","useSetter","useSimple","replacer","$replacer","gOPS","getSymbols","symbols","USE_SYMBOL","REPLACE_RE","replace_fn","getIterator","instance","isIterable","_regenerator2","_bluebird","_slicedToArray3","_syncAccumulator2","selectQuery","keyRange","resultMapper","query","openCursor","onerror","errorCode","onsuccess","cursor","continue","txnAsPromise","txn","oncomplete","reqAsEventPromise","req","reqAsPromise","reqAsCursorPromise","LocalIndexedDBStoreBackend","indexedDBInterface","dbName","_dbName","db","_disconnected","_syncAccumulator","_isNewlyCreated","log","onupgradeneeded","oldVersion","createObjectStore","keyPath","createDatabase","createIndex","upgradeSchemaV2","upgradeSchemaV3","onblocked","onversionchange","_init","all","_loadAccountData","_loadSyncData","_ref","_ref2","syncData","accumulate","roomIndex","transaction","objectStore","range","IDBKeyRange","only","request","membershipEvents","oobWritten","oob_written","_ref3","coroutine","_callee","tx","markerObject","_context","put","_x","_x2","_ref4","_callee2","readTx","roomRange","minStateKeyProm","maxStateKeyProm","_ref5","_ref6","minStateKey","maxStateKey","writeTx","writeStore","membersKeyRange","_context2","openKeyCursor","primaryKey","bound","delete","_x3","deleteDatabase","warn","copy","getJSON","_this5","userTuples","_persistUserPresenceEvents","_persistAccountData","_persistSyncData","_this6","try","clobber","_this7","tuples","_this8","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","tuple","_this9","_this10","_this11","_this12","options","_ref7","_callee3","_context3","_x4","Attributes","_defineProperty2","props","protoProps","staticProps","_from2","arr2","IObject","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","noop","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","_iterator2","_symbol2","_typeof","aFunction","fails","exp","bitmap","$at","point","define","u","_dereq_","code","1","SomePromiseArray","_SomePromiseArray","any","promises","promise","setHowMany","setUnwrap","init","2","firstLineError","schedule","Queue","util","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","_trampolineEnabled","drainQueues","_drainQueues","_schedule","AsyncInvokeLater","receiver","_queueTick","AsyncInvoke","AsyncSettlePromises","_pushOne","_drainQueue","_drainQueueStep","shift","_settlePromises","setScheduler","hasCustomScheduler","enableTrampoline","disableTrampolineIfNecessary","hasDevTools","haveItemsQueued","fatalError","isNode","stderr","stack","exit","throwLater","invokeLater","settlePromises","_reset","./queue","./schedule","./util","3","INTERNAL","tryConvertToPromise","debug","calledBind","rejectThis","_","_reject","targetRejected","promiseRejectionQueued","bindingPromise","_then","bindingResolved","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","4","old","bluebird","noConflict","./promise","5","cr","callerCache","getterCache","canEvaluate","caller","methodName","classString","ensureMethod","namedGetter","indexedGetter","isIdentifier","propertyName","isIndex","maybeGetter","getGetter","6","PromiseArray","apiRejection","errorObj","_async","cancel","cancellation","_warn","child","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","parent","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","7","NEXT_FILTER","instances","cb","boundTo","predicateLoop","matchesPredicate","./es5","8","longStackTraces","contextStack","_trace","CapturedTrace","peekContext","lastIndex","_promiseCreated","_pushContext","_popContext","_peekContext","trace","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","9","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","getDomain","_getDomain","Warning","es5","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","warnings","wForgottenReturn","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejection","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","reason","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","onPossiblyUnhandledRejection","domain","domainBind","onUnhandledRejectionHandled","disableLongStackTraces","config","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","Promise_dereferenceTrace","_dereferenceTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","longStackTracesDereferenceTrace","hasLongStackTraces","fireDomEvent","CustomEvent","dispatchEvent","eventData","detail","cancelable","domEvent","toLowerCase","Event","createEvent","initCustomEvent","fireGlobalEvent","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","warning","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","flags","branchesRemainingToCancel","warningsOption","_clearCancellationData","_execute","monitoring","_fireEvent","handler","isFulfilled","ignoreSelf","_parent","attachExtraTrace","__stackCleaned__","parsed","parseStackAndMessage","notEnumerableProp","formatAndLogError","cleanStack","line","isTraceLine","test","isInternalFrame","shouldIgnore","stackFramesAsArray","isSoft","localHandler","localEventFired","formatNonError","newStr","substr","maxChars","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","matches","fileName","parseInt","_promisesCreated","uncycle","nodes","stackToIndex","node","currentStack","cycleEdgeNode","currentChildLength","stacks","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","isTTY","color","checkForgottenReturns","returnValue","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","deprecated","replacement","./errors","10","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","catchReturn","_value","11","PromiseReduce","reduce","PromiseAll","promiseAllThis","each","mapSeries","12","_TypeError","_RangeError","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","CancellationError","TimeoutError","AggregateError","RangeError","level","OperationalError","cause","indent","lines","errorTypes","RejectionError","13","isES5","getDescriptor","propertyIsWritable","ObjectKeys","14","PromiseMap","15","catchFilter","PassThroughHandlerContext","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","fail","reasonOrValue","isFinallyHandler","isRejected","_passThrough","success","lastly","tap","tapCatch","handlerOrPredicate","catchInstances","./catch_filter","16","Proxyable","errors","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","implementsReturn","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","spawn","addYieldHandler","17","last","spread","18","MappingPromiseArray","limit","_filter","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","_init$","_values","preservedValues","totalResolved","_totalResolved","_resolve","booleans","19","_resolveFromSyncValue","attempt","20","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","21","spreadAdapter","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","22","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","APPLY","createContext","nodebackForPromise","check","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","v","deferReject","fillTypes","reflect","didFulfill","didReject","_setIsFinal","toJSON","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","base","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","_settlePromise","isPromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","defer","pending","toFastProperties","./any.js","./async","./bind","./call_get.js","./cancel","./context","./debuggability","./direct_resolve","./each.js","./filter.js","./finally","./generators.js","./join","./map.js","./method","./nodeback","./nodeify.js","./promise_array","./promisify.js","./props.js","./race.js","./reduce.js","./settle.js","./some.js","./synchronous_inspection","./thenables","./timers.js","./using.js","23","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","Map","toResolutionValue","getActualLength","shouldCopyValues","isResolved","24","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","defaultFilter","propsFilter","isPromisified","hasPromisified","suffix","getDataPropertyOrDefault","promisifiableMethods","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","escapeIdentRegex","makeNodePromisified","makeNodePromisifiedEval","__","defaultThis","promisified","promisifyAll","promisifier","promisifiedKey","promisify","copyDescriptors","isClass","25","Es6Map","mapToEntries","size","extractEntry","PropertiesPromiseArray","isMap","_isMap","castValue","entriesToMap","keyOffset","26","capacity","_capacity","_front","_willBeOverCapacity","_checkCapacity","wrapMask","front","_resizeTo","oldCapacity","moveItemsCount","srcIndex","dst","dstIndex","arrayMove","27","raceLater","race","28","ReductionPromiseArray","initialValue","_each","_fn","_initialValue","_currentCancellable","_eachValues","completed","valueOrReason","gotAccum","accum","_gotAccum","gotValue","_eachComplete","_resultCancelled$","29","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","ProcessNextTick","isRecentNode","nativePromise","navigator","standalone","cordova","div","attributes","toggleScheduled","div2","o2","classList","toggle","observe","disconnect","30","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","31","CANCELLATION","_howMany","_unwrap","_initialized","some","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","count","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","32","__isCancelled","33","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","34","HandleWrapper","afterValue","delay","ms","successClear","failureClear","handleWrapper","afterTimeout","35","NULL","dispose","resources","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","_data","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","resource","doDispose","_unsetDisposable","using","input","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","36","tryCatchTarget","globalObject","tryCatcher","Child","Parent","isPrimitive","maybeError","safeToString","appendee","defaultValue","excludedPrototypes","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","ic","foo","rident","filledRange","prefix","isError","ignore","to","ArrayFrom","itResult","hasEnvVariables","NODE_ENV","chrome","loadTimes","Number"],"mappings":"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","file":"bundles/c2932262ed6106cd4535/indexeddb-worker.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1891);\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","exports.f = {}.propertyIsEnumerable;\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","exports.f = require('./_wks');\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","module.exports = require(\"regenerator-runtime\");\n","var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","exports.f = Object.getOwnPropertySymbols;\n","/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {IndexedDBStoreWorker} from 'matrix-js-sdk/lib/indexeddb-worker.js';\n\nconst remoteWorker = new IndexedDBStoreWorker(postMessage);\n\nglobal.onmessage = remoteWorker.onMessage;\n","\"use strict\";\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Separate exports file for the indexeddb web worker, which is designed\n * to be used separately\n */\n\n/** The {@link module:indexeddb-store-worker~IndexedDBStoreWorker} class. */\nmodule.exports.IndexedDBStoreWorker = require(\"./store/indexeddb-store-worker.js\");\n//# sourceMappingURL=indexeddb-worker.js.map","'use strict';\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _indexeddbLocalBackend = require('./indexeddb-local-backend.js');\n\nvar _indexeddbLocalBackend2 = _interopRequireDefault(_indexeddbLocalBackend);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * This class lives in the webworker and drives a LocalIndexedDBStoreBackend\n * controlled by messages from the main process.\n *\n * It should be instantiated by a web worker script provided by the application\n * in a script, for example:\n *\n * import {IndexedDBStoreWorker} from 'matrix-js-sdk/lib/indexeddb-worker.js';\n * const remoteWorker = new IndexedDBStoreWorker(postMessage);\n * onmessage = remoteWorker.onMessage;\n *\n * Note that it is advisable to import this class by referencing the file directly to\n * avoid a dependency on the whole js-sdk.\n *\n */\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar IndexedDBStoreWorker = function () {\n /**\n * @param {function} postMessage The web worker postMessage function that\n * should be used to communicate back to the main script.\n */\n function IndexedDBStoreWorker(postMessage) {\n (0, _classCallCheck3.default)(this, IndexedDBStoreWorker);\n\n this.backend = null;\n this.postMessage = postMessage;\n\n this.onMessage = this.onMessage.bind(this);\n }\n\n /**\n * Passes a message event from the main script into the class. This method\n * can be directly assigned to the web worker `onmessage` variable.\n *\n * @param {Object} ev The message event\n */\n\n\n (0, _createClass3.default)(IndexedDBStoreWorker, [{\n key: 'onMessage',\n value: function onMessage(ev) {\n var _backend,\n _backend2,\n _this = this;\n\n var msg = ev.data;\n var prom = void 0;\n\n switch (msg.command) {\n case '_setupWorker':\n this.backend = new _indexeddbLocalBackend2.default(\n // this is the 'indexedDB' global (where global != window\n // because it's a web worker and there is no window).\n indexedDB, msg.args[0]);\n prom = _bluebird2.default.resolve();\n break;\n case 'connect':\n prom = this.backend.connect();\n break;\n case 'isNewlyCreated':\n prom = this.backend.isNewlyCreated();\n break;\n case 'clearDatabase':\n prom = this.backend.clearDatabase().then(function (result) {\n // This returns special classes which can't be cloned\n // across to the main script, so don't try.\n return {};\n });\n break;\n case 'getSavedSync':\n prom = this.backend.getSavedSync(false);\n break;\n case 'setSyncData':\n prom = (_backend = this.backend).setSyncData.apply(_backend, (0, _toConsumableArray3.default)(msg.args));\n break;\n case 'syncToDatabase':\n prom = (_backend2 = this.backend).syncToDatabase.apply(_backend2, (0, _toConsumableArray3.default)(msg.args)).then(function () {\n // This also returns IndexedDB events which are not cloneable\n return {};\n });\n break;\n case 'getUserPresenceEvents':\n prom = this.backend.getUserPresenceEvents();\n break;\n case 'getNextBatchToken':\n prom = this.backend.getNextBatchToken();\n break;\n case 'getOutOfBandMembers':\n prom = this.backend.getOutOfBandMembers(msg.args[0]);\n break;\n case 'clearOutOfBandMembers':\n prom = this.backend.clearOutOfBandMembers(msg.args[0]);\n break;\n case 'setOutOfBandMembers':\n prom = this.backend.setOutOfBandMembers(msg.args[0], msg.args[1]);\n break;\n case 'getClientOptions':\n prom = this.backend.getClientOptions();\n break;\n case 'storeClientOptions':\n prom = this.backend.storeClientOptions(msg.args[0]);\n break;\n }\n\n if (prom === undefined) {\n this.postMessage({\n command: 'cmd_fail',\n seq: msg.seq,\n // Can't be an Error because they're not structured cloneable\n error: \"Unrecognised command\"\n });\n return;\n }\n\n prom.done(function (ret) {\n _this.postMessage.call(null, {\n command: 'cmd_success',\n seq: msg.seq,\n result: ret\n });\n }, function (err) {\n console.error(\"Error running command: \" + msg.command);\n console.error(err);\n _this.postMessage.call(null, {\n command: 'cmd_fail',\n seq: msg.seq,\n // Just send a string because Error objects aren't cloneable\n error: {\n message: err.message,\n name: err.name\n }\n });\n });\n }\n }]);\n return IndexedDBStoreWorker;\n}();\n\nmodule.exports = IndexedDBStoreWorker;\n//# sourceMappingURL=indexeddb-store-worker.js.map","module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };","module.exports = require('./_hide');\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() { return this })() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","\"use strict\";\n\nvar _create = require(\"babel-runtime/core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _utils = require(\"./utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The purpose of this class is to accumulate /sync responses such that a\n * complete \"initial\" JSON response can be returned which accurately represents\n * the sum total of the /sync responses accumulated to date. It only handles\n * room data: that is, everything under the \"rooms\" top-level key.\n *\n * This class is used when persisting room data so a complete /sync response can\n * be loaded from disk and incremental syncs can be performed on the server,\n * rather than asking the server to do an initial sync on startup.\n */\nvar SyncAccumulator = function () {\n /**\n * @param {Object} opts\n * @param {Number=} opts.maxTimelineEntries The ideal maximum number of\n * timeline entries to keep in the sync response. This is best-effort, as\n * clients do not always have a back-pagination token for each event, so\n * it's possible there may be slightly *less* than this value. There will\n * never be more. This cannot be 0 or else it makes it impossible to scroll\n * back in a room. Default: 50.\n */\n function SyncAccumulator(opts) {\n (0, _classCallCheck3.default)(this, SyncAccumulator);\n\n opts = opts || {};\n opts.maxTimelineEntries = opts.maxTimelineEntries || 50;\n this.opts = opts;\n this.accountData = {\n //$event_type: Object\n };\n this.inviteRooms = {\n //$roomId: { ... sync 'invite' json data ... }\n };\n this.joinRooms = {\n //$roomId: {\n // _currentState: { $event_type: { $state_key: json } },\n // _timeline: [\n // { event: $event, token: null|token },\n // { event: $event, token: null|token },\n // { event: $event, token: null|token },\n // ...\n // ],\n // _summary: {\n // m.heroes: [ $user_id ],\n // m.joined_member_count: $count,\n // m.invited_member_count: $count\n // },\n // _accountData: { $event_type: json },\n // _unreadNotifications: { ... unread_notifications JSON ... },\n // _readReceipts: { $user_id: { data: $json, eventId: $event_id }}\n //}\n };\n // the /sync token which corresponds to the last time rooms were\n // accumulated. We remember this so that any caller can obtain a\n // coherent /sync response and know at what point they should be\n // streaming from without losing events.\n this.nextBatch = null;\n\n // { ('invite'|'join'|'leave'): $groupId: { ... sync 'group' data } }\n this.groups = {\n invite: {},\n join: {},\n leave: {}\n };\n }\n\n (0, _createClass3.default)(SyncAccumulator, [{\n key: \"accumulate\",\n value: function accumulate(syncResponse) {\n this._accumulateRooms(syncResponse);\n this._accumulateGroups(syncResponse);\n this._accumulateAccountData(syncResponse);\n this.nextBatch = syncResponse.next_batch;\n }\n }, {\n key: \"_accumulateAccountData\",\n value: function _accumulateAccountData(syncResponse) {\n var _this = this;\n\n if (!syncResponse.account_data || !syncResponse.account_data.events) {\n return;\n }\n // Clobbers based on event type.\n syncResponse.account_data.events.forEach(function (e) {\n _this.accountData[e.type] = e;\n });\n }\n\n /**\n * Accumulate incremental /sync room data.\n * @param {Object} syncResponse the complete /sync JSON\n */\n\n }, {\n key: \"_accumulateRooms\",\n value: function _accumulateRooms(syncResponse) {\n var _this2 = this;\n\n if (!syncResponse.rooms) {\n return;\n }\n if (syncResponse.rooms.invite) {\n (0, _keys2.default)(syncResponse.rooms.invite).forEach(function (roomId) {\n _this2._accumulateRoom(roomId, \"invite\", syncResponse.rooms.invite[roomId]);\n });\n }\n if (syncResponse.rooms.join) {\n (0, _keys2.default)(syncResponse.rooms.join).forEach(function (roomId) {\n _this2._accumulateRoom(roomId, \"join\", syncResponse.rooms.join[roomId]);\n });\n }\n if (syncResponse.rooms.leave) {\n (0, _keys2.default)(syncResponse.rooms.leave).forEach(function (roomId) {\n _this2._accumulateRoom(roomId, \"leave\", syncResponse.rooms.leave[roomId]);\n });\n }\n }\n }, {\n key: \"_accumulateRoom\",\n value: function _accumulateRoom(roomId, category, data) {\n // Valid /sync state transitions\n // +--------+ <======+ 1: Accept an invite\n // +== | INVITE | | (5) 2: Leave a room\n // | +--------+ =====+ | 3: Join a public room previously\n // |(1) (4) | | left (handle as if new room)\n // V (2) V | 4: Reject an invite\n // +------+ ========> +--------+ 5: Invite to a room previously\n // | JOIN | (3) | LEAVE* | left (handle as if new room)\n // +------+ <======== +--------+\n //\n // * equivalent to \"no state\"\n switch (category) {\n case \"invite\":\n // (5)\n this._accumulateInviteState(roomId, data);\n break;\n case \"join\":\n if (this.inviteRooms[roomId]) {\n // (1)\n // was previously invite, now join. We expect /sync to give\n // the entire state and timeline on 'join', so delete previous\n // invite state\n delete this.inviteRooms[roomId];\n }\n // (3)\n this._accumulateJoinState(roomId, data);\n break;\n case \"leave\":\n if (this.inviteRooms[roomId]) {\n // (4)\n delete this.inviteRooms[roomId];\n } else {\n // (2)\n delete this.joinRooms[roomId];\n }\n break;\n default:\n console.error(\"Unknown cateogory: \", category);\n }\n }\n }, {\n key: \"_accumulateInviteState\",\n value: function _accumulateInviteState(roomId, data) {\n if (!data.invite_state || !data.invite_state.events) {\n // no new data\n return;\n }\n if (!this.inviteRooms[roomId]) {\n this.inviteRooms[roomId] = {\n invite_state: data.invite_state\n };\n return;\n }\n // accumulate extra keys for invite->invite transitions\n // clobber based on event type / state key\n // We expect invite_state to be small, so just loop over the events\n var currentData = this.inviteRooms[roomId];\n data.invite_state.events.forEach(function (e) {\n var hasAdded = false;\n for (var i = 0; i < currentData.invite_state.events.length; i++) {\n var current = currentData.invite_state.events[i];\n if (current.type === e.type && current.state_key == e.state_key) {\n currentData.invite_state.events[i] = e; // update\n hasAdded = true;\n }\n }\n if (!hasAdded) {\n currentData.invite_state.events.push(e);\n }\n });\n }\n\n // Accumulate timeline and state events in a room.\n\n }, {\n key: \"_accumulateJoinState\",\n value: function _accumulateJoinState(roomId, data) {\n // We expect this function to be called a lot (every /sync) so we want\n // this to be fast. /sync stores events in an array but we often want\n // to clobber based on type/state_key. Rather than convert arrays to\n // maps all the time, just keep private maps which contain\n // the actual current accumulated sync state, and array-ify it when\n // getJSON() is called.\n\n // State resolution:\n // The 'state' key is the delta from the previous sync (or start of time\n // if no token was supplied), to the START of the timeline. To obtain\n // the current state, we need to \"roll forward\" state by reading the\n // timeline. We want to store the current state so we can drop events\n // out the end of the timeline based on opts.maxTimelineEntries.\n //\n // 'state' 'timeline' current state\n // |-------x<======================>x\n // T I M E\n //\n // When getJSON() is called, we 'roll back' the current state by the\n // number of entries in the timeline to work out what 'state' should be.\n\n // Back-pagination:\n // On an initial /sync, the server provides a back-pagination token for\n // the start of the timeline. When /sync deltas come down, they also\n // include back-pagination tokens for the start of the timeline. This\n // means not all events in the timeline have back-pagination tokens, as\n // it is only the ones at the START of the timeline which have them.\n // In order for us to have a valid timeline (and back-pagination token\n // to match), we need to make sure that when we remove old timeline\n // events, that we roll forward to an event which has a back-pagination\n // token. This means we can't keep a strict sliding-window based on\n // opts.maxTimelineEntries, and we may have a few less. We should never\n // have more though, provided that the /sync limit is less than or equal\n // to opts.maxTimelineEntries.\n\n if (!this.joinRooms[roomId]) {\n // Create truly empty objects so event types of 'hasOwnProperty' and co\n // don't cause this code to break.\n this.joinRooms[roomId] = {\n _currentState: (0, _create2.default)(null),\n _timeline: [],\n _accountData: (0, _create2.default)(null),\n _unreadNotifications: {},\n _summary: {},\n _readReceipts: {}\n };\n }\n var currentData = this.joinRooms[roomId];\n\n if (data.account_data && data.account_data.events) {\n // clobber based on type\n data.account_data.events.forEach(function (e) {\n currentData._accountData[e.type] = e;\n });\n }\n\n // these probably clobber, spec is unclear.\n if (data.unread_notifications) {\n currentData._unreadNotifications = data.unread_notifications;\n }\n if (data.summary) {\n var HEROES_KEY = \"m.heroes\";\n var INVITED_COUNT_KEY = \"m.invited_member_count\";\n var JOINED_COUNT_KEY = \"m.joined_member_count\";\n\n var acc = currentData._summary;\n var sum = data.summary;\n acc[HEROES_KEY] = sum[HEROES_KEY] || acc[HEROES_KEY];\n acc[JOINED_COUNT_KEY] = sum[JOINED_COUNT_KEY] || acc[JOINED_COUNT_KEY];\n acc[INVITED_COUNT_KEY] = sum[INVITED_COUNT_KEY] || acc[INVITED_COUNT_KEY];\n }\n\n if (data.ephemeral && data.ephemeral.events) {\n data.ephemeral.events.forEach(function (e) {\n // We purposefully do not persist m.typing events.\n // Technically you could refresh a browser before the timer on a\n // typing event is up, so it'll look like you aren't typing when\n // you really still are. However, the alternative is worse. If\n // we do persist typing events, it will look like people are\n // typing forever until someone really does start typing (which\n // will prompt Synapse to send down an actual m.typing event to\n // clobber the one we persisted).\n if (e.type !== \"m.receipt\" || !e.content) {\n // This means we'll drop unknown ephemeral events but that\n // seems okay.\n return;\n }\n // Handle m.receipt events. They clobber based on:\n // (user_id, receipt_type)\n // but they are keyed in the event as:\n // content:{ $event_id: { $receipt_type: { $user_id: {json} }}}\n // so store them in the former so we can accumulate receipt deltas\n // quickly and efficiently (we expect a lot of them). Fold the\n // receipt type into the key name since we only have 1 at the\n // moment (m.read) and nested JSON objects are slower and more\n // of a hassle to work with. We'll inflate this back out when\n // getJSON() is called.\n (0, _keys2.default)(e.content).forEach(function (eventId) {\n if (!e.content[eventId][\"m.read\"]) {\n return;\n }\n (0, _keys2.default)(e.content[eventId][\"m.read\"]).forEach(function (userId) {\n // clobber on user ID\n currentData._readReceipts[userId] = {\n data: e.content[eventId][\"m.read\"][userId],\n eventId: eventId\n };\n });\n });\n });\n }\n\n // if we got a limited sync, we need to remove all timeline entries or else\n // we will have gaps in the timeline.\n if (data.timeline && data.timeline.limited) {\n currentData._timeline = [];\n }\n\n // Work out the current state. The deltas need to be applied in the order:\n // - existing state which didn't come down /sync.\n // - State events under the 'state' key.\n // - State events in the 'timeline'.\n if (data.state && data.state.events) {\n data.state.events.forEach(function (e) {\n setState(currentData._currentState, e);\n });\n }\n if (data.timeline && data.timeline.events) {\n data.timeline.events.forEach(function (e, index) {\n // this nops if 'e' isn't a state event\n setState(currentData._currentState, e);\n // append the event to the timeline. The back-pagination token\n // corresponds to the first event in the timeline\n currentData._timeline.push({\n event: e,\n token: index === 0 ? data.timeline.prev_batch : null\n });\n });\n }\n\n // attempt to prune the timeline by jumping between events which have\n // pagination tokens.\n if (currentData._timeline.length > this.opts.maxTimelineEntries) {\n var startIndex = currentData._timeline.length - this.opts.maxTimelineEntries;\n for (var i = startIndex; i < currentData._timeline.length; i++) {\n if (currentData._timeline[i].token) {\n // keep all events after this, including this one\n currentData._timeline = currentData._timeline.slice(i, currentData._timeline.length);\n break;\n }\n }\n }\n }\n\n /**\n * Accumulate incremental /sync group data.\n * @param {Object} syncResponse the complete /sync JSON\n */\n\n }, {\n key: \"_accumulateGroups\",\n value: function _accumulateGroups(syncResponse) {\n var _this3 = this;\n\n if (!syncResponse.groups) {\n return;\n }\n if (syncResponse.groups.invite) {\n (0, _keys2.default)(syncResponse.groups.invite).forEach(function (groupId) {\n _this3._accumulateGroup(groupId, \"invite\", syncResponse.groups.invite[groupId]);\n });\n }\n if (syncResponse.groups.join) {\n (0, _keys2.default)(syncResponse.groups.join).forEach(function (groupId) {\n _this3._accumulateGroup(groupId, \"join\", syncResponse.groups.join[groupId]);\n });\n }\n if (syncResponse.groups.leave) {\n (0, _keys2.default)(syncResponse.groups.leave).forEach(function (groupId) {\n _this3._accumulateGroup(groupId, \"leave\", syncResponse.groups.leave[groupId]);\n });\n }\n }\n }, {\n key: \"_accumulateGroup\",\n value: function _accumulateGroup(groupId, category, data) {\n var _arr = ['invite', 'join', 'leave'];\n\n for (var _i = 0; _i < _arr.length; _i++) {\n var cat = _arr[_i];\n delete this.groups[cat][groupId];\n }\n this.groups[category][groupId] = data;\n }\n\n /**\n * Return everything under the 'rooms' key from a /sync response which\n * represents all room data that should be stored. This should be paired\n * with the sync token which represents the most recent /sync response\n * provided to accumulate().\n * @return {Object} An object with a \"nextBatch\", \"roomsData\" and \"accountData\"\n * keys.\n * The \"nextBatch\" key is a string which represents at what point in the\n * /sync stream the accumulator reached. This token should be used when\n * restarting a /sync stream at startup. Failure to do so can lead to missing\n * events. The \"roomsData\" key is an Object which represents the entire\n * /sync response from the 'rooms' key onwards. The \"accountData\" key is\n * a list of raw events which represent global account data.\n */\n\n }, {\n key: \"getJSON\",\n value: function getJSON() {\n var _this4 = this;\n\n var data = {\n join: {},\n invite: {},\n // always empty. This is set by /sync when a room was previously\n // in 'invite' or 'join'. On fresh startup, the client won't know\n // about any previous room being in 'invite' or 'join' so we can\n // just omit mentioning it at all, even if it has previously come\n // down /sync.\n // The notable exception is when a client is kicked or banned:\n // we may want to hold onto that room so the client can clearly see\n // why their room has disappeared. We don't persist it though because\n // it is unclear *when* we can safely remove the room from the DB.\n // Instead, we assume that if you're loading from the DB, you've\n // refreshed the page, which means you've seen the kick/ban already.\n leave: {}\n };\n (0, _keys2.default)(this.inviteRooms).forEach(function (roomId) {\n data.invite[roomId] = _this4.inviteRooms[roomId];\n });\n (0, _keys2.default)(this.joinRooms).forEach(function (roomId) {\n var roomData = _this4.joinRooms[roomId];\n var roomJson = {\n ephemeral: { events: [] },\n account_data: { events: [] },\n state: { events: [] },\n timeline: {\n events: [],\n prev_batch: null\n },\n unread_notifications: roomData._unreadNotifications,\n summary: roomData._summary\n };\n // Add account data\n (0, _keys2.default)(roomData._accountData).forEach(function (evType) {\n roomJson.account_data.events.push(roomData._accountData[evType]);\n });\n\n // Add receipt data\n var receiptEvent = {\n type: \"m.receipt\",\n room_id: roomId,\n content: {\n // $event_id: { \"m.read\": { $user_id: $json } }\n }\n };\n (0, _keys2.default)(roomData._readReceipts).forEach(function (userId) {\n var receiptData = roomData._readReceipts[userId];\n if (!receiptEvent.content[receiptData.eventId]) {\n receiptEvent.content[receiptData.eventId] = {\n \"m.read\": {}\n };\n }\n receiptEvent.content[receiptData.eventId][\"m.read\"][userId] = receiptData.data;\n });\n // add only if we have some receipt data\n if ((0, _keys2.default)(receiptEvent.content).length > 0) {\n roomJson.ephemeral.events.push(receiptEvent);\n }\n\n // Add timeline data\n roomData._timeline.forEach(function (msgData) {\n if (!roomJson.timeline.prev_batch) {\n // the first event we add to the timeline MUST match up to\n // the prev_batch token.\n if (!msgData.token) {\n return; // this shouldn't happen as we prune constantly.\n }\n roomJson.timeline.prev_batch = msgData.token;\n }\n roomJson.timeline.events.push(msgData.event);\n });\n\n // Add state data: roll back current state to the start of timeline,\n // by \"reverse clobbering\" from the end of the timeline to the start.\n // Convert maps back into arrays.\n var rollBackState = (0, _create2.default)(null);\n for (var i = roomJson.timeline.events.length - 1; i >= 0; i--) {\n var timelineEvent = roomJson.timeline.events[i];\n if (timelineEvent.state_key === null || timelineEvent.state_key === undefined) {\n continue; // not a state event\n }\n // since we're going back in time, we need to use the previous\n // state value else we'll break causality. We don't have the\n // complete previous state event, so we need to create one.\n var prevStateEvent = _utils2.default.deepCopy(timelineEvent);\n if (prevStateEvent.unsigned) {\n if (prevStateEvent.unsigned.prev_content) {\n prevStateEvent.content = prevStateEvent.unsigned.prev_content;\n }\n if (prevStateEvent.unsigned.prev_sender) {\n prevStateEvent.sender = prevStateEvent.unsigned.prev_sender;\n }\n }\n setState(rollBackState, prevStateEvent);\n }\n (0, _keys2.default)(roomData._currentState).forEach(function (evType) {\n (0, _keys2.default)(roomData._currentState[evType]).forEach(function (stateKey) {\n var ev = roomData._currentState[evType][stateKey];\n if (rollBackState[evType] && rollBackState[evType][stateKey]) {\n // use the reverse clobbered event instead.\n ev = rollBackState[evType][stateKey];\n }\n roomJson.state.events.push(ev);\n });\n });\n data.join[roomId] = roomJson;\n });\n\n // Add account data\n var accData = [];\n (0, _keys2.default)(this.accountData).forEach(function (evType) {\n accData.push(_this4.accountData[evType]);\n });\n\n return {\n nextBatch: this.nextBatch,\n roomsData: data,\n groupsData: this.groups,\n accountData: accData\n };\n }\n }, {\n key: \"getNextBatchToken\",\n value: function getNextBatchToken() {\n return this.nextBatch;\n }\n }]);\n return SyncAccumulator;\n}(); /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/**\n * This is an internal module. See {@link SyncAccumulator} for the public class.\n * @module sync-accumulator\n */\n\nfunction setState(eventMap, event) {\n if (event.state_key === null || event.state_key === undefined || !event.type) {\n return;\n }\n if (!eventMap[event.type]) {\n eventMap[event.type] = (0, _create2.default)(null);\n }\n eventMap[event.type][event.state_key] = event;\n}\n\nmodule.exports = SyncAccumulator;\n//# sourceMappingURL=sync-accumulator.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * This is an internal module.\n * @module utils\n */\n\nvar _create = require(\"babel-runtime/core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar unhomoglyph = require('unhomoglyph');\n\n/**\n * Encode a dictionary of query parameters.\n * @param {Object} params A dict of key/values to encode e.g.\n * {\"foo\": \"bar\", \"baz\": \"taz\"}\n * @return {string} The encoded string e.g. foo=bar&baz=taz\n */\nmodule.exports.encodeParams = function (params) {\n var qs = \"\";\n for (var key in params) {\n if (!params.hasOwnProperty(key)) {\n continue;\n }\n qs += \"&\" + encodeURIComponent(key) + \"=\" + encodeURIComponent(params[key]);\n }\n return qs.substring(1);\n};\n\n/**\n * Encodes a URI according to a set of template variables. Variables will be\n * passed through encodeURIComponent.\n * @param {string} pathTemplate The path with template variables e.g. '/foo/$bar'.\n * @param {Object} variables The key/value pairs to replace the template\n * variables with. E.g. { \"$bar\": \"baz\" }.\n * @return {string} The result of replacing all template variables e.g. '/foo/baz'.\n */\nmodule.exports.encodeUri = function (pathTemplate, variables) {\n for (var key in variables) {\n if (!variables.hasOwnProperty(key)) {\n continue;\n }\n pathTemplate = pathTemplate.replace(key, encodeURIComponent(variables[key]));\n }\n return pathTemplate;\n};\n\n/**\n * Applies a map function to the given array.\n * @param {Array} array The array to apply the function to.\n * @param {Function} fn The function that will be invoked for each element in\n * the array with the signature <code>fn(element){...}</code>\n * @return {Array} A new array with the results of the function.\n */\nmodule.exports.map = function (array, fn) {\n var results = new Array(array.length);\n for (var i = 0; i < array.length; i++) {\n results[i] = fn(array[i]);\n }\n return results;\n};\n\n/**\n * Applies a filter function to the given array.\n * @param {Array} array The array to apply the function to.\n * @param {Function} fn The function that will be invoked for each element in\n * the array. It should return true to keep the element. The function signature\n * looks like <code>fn(element, index, array){...}</code>.\n * @return {Array} A new array with the results of the function.\n */\nmodule.exports.filter = function (array, fn) {\n var results = [];\n for (var i = 0; i < array.length; i++) {\n if (fn(array[i], i, array)) {\n results.push(array[i]);\n }\n }\n return results;\n};\n\n/**\n * Get the keys for an object. Same as <code>Object.keys()</code>.\n * @param {Object} obj The object to get the keys for.\n * @return {string[]} The keys of the object.\n */\nmodule.exports.keys = function (obj) {\n var keys = [];\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n keys.push(key);\n }\n return keys;\n};\n\n/**\n * Get the values for an object.\n * @param {Object} obj The object to get the values for.\n * @return {Array<*>} The values of the object.\n */\nmodule.exports.values = function (obj) {\n var values = [];\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n values.push(obj[key]);\n }\n return values;\n};\n\n/**\n * Invoke a function for each item in the array.\n * @param {Array} array The array.\n * @param {Function} fn The function to invoke for each element. Has the\n * function signature <code>fn(element, index)</code>.\n */\nmodule.exports.forEach = function (array, fn) {\n for (var i = 0; i < array.length; i++) {\n fn(array[i], i);\n }\n};\n\n/**\n * The findElement() method returns a value in the array, if an element in the array\n * satisfies (returns true) the provided testing function. Otherwise undefined\n * is returned.\n * @param {Array} array The array.\n * @param {Function} fn Function to execute on each value in the array, with the\n * function signature <code>fn(element, index, array)</code>\n * @param {boolean} reverse True to search in reverse order.\n * @return {*} The first value in the array which returns <code>true</code> for\n * the given function.\n */\nmodule.exports.findElement = function (array, fn, reverse) {\n var i = void 0;\n if (reverse) {\n for (i = array.length - 1; i >= 0; i--) {\n if (fn(array[i], i, array)) {\n return array[i];\n }\n }\n } else {\n for (i = 0; i < array.length; i++) {\n if (fn(array[i], i, array)) {\n return array[i];\n }\n }\n }\n};\n\n/**\n * The removeElement() method removes the first element in the array that\n * satisfies (returns true) the provided testing function.\n * @param {Array} array The array.\n * @param {Function} fn Function to execute on each value in the array, with the\n * function signature <code>fn(element, index, array)</code>. Return true to\n * remove this element and break.\n * @param {boolean} reverse True to search in reverse order.\n * @return {boolean} True if an element was removed.\n */\nmodule.exports.removeElement = function (array, fn, reverse) {\n var i = void 0;\n var removed = void 0;\n if (reverse) {\n for (i = array.length - 1; i >= 0; i--) {\n if (fn(array[i], i, array)) {\n removed = array[i];\n array.splice(i, 1);\n return removed;\n }\n }\n } else {\n for (i = 0; i < array.length; i++) {\n if (fn(array[i], i, array)) {\n removed = array[i];\n array.splice(i, 1);\n return removed;\n }\n }\n }\n return false;\n};\n\n/**\n * Checks if the given thing is a function.\n * @param {*} value The thing to check.\n * @return {boolean} True if it is a function.\n */\nmodule.exports.isFunction = function (value) {\n return Object.prototype.toString.call(value) == \"[object Function]\";\n};\n\n/**\n * Checks if the given thing is an array.\n * @param {*} value The thing to check.\n * @return {boolean} True if it is an array.\n */\nmodule.exports.isArray = function (value) {\n return Array.isArray ? Array.isArray(value) : Boolean(value && value.constructor === Array);\n};\n\n/**\n * Checks that the given object has the specified keys.\n * @param {Object} obj The object to check.\n * @param {string[]} keys The list of keys that 'obj' must have.\n * @throws If the object is missing keys.\n */\nmodule.exports.checkObjectHasKeys = function (obj, keys) {\n for (var i = 0; i < keys.length; i++) {\n if (!obj.hasOwnProperty(keys[i])) {\n throw new Error(\"Missing required key: \" + keys[i]);\n }\n }\n};\n\n/**\n * Checks that the given object has no extra keys other than the specified ones.\n * @param {Object} obj The object to check.\n * @param {string[]} allowedKeys The list of allowed key names.\n * @throws If there are extra keys.\n */\nmodule.exports.checkObjectHasNoAdditionalKeys = function (obj, allowedKeys) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n if (allowedKeys.indexOf(key) === -1) {\n throw new Error(\"Unknown key: \" + key);\n }\n }\n};\n\n/**\n * Deep copy the given object. The object MUST NOT have circular references and\n * MUST NOT have functions.\n * @param {Object} obj The object to deep copy.\n * @return {Object} A copy of the object without any references to the original.\n */\nmodule.exports.deepCopy = function (obj) {\n return JSON.parse((0, _stringify2.default)(obj));\n};\n\n/**\n * Compare two objects for equality. The objects MUST NOT have circular references.\n *\n * @param {Object} x The first object to compare.\n * @param {Object} y The second object to compare.\n *\n * @return {boolean} true if the two objects are equal\n */\nvar deepCompare = module.exports.deepCompare = function (x, y) {\n // Inspired by\n // http://stackoverflow.com/questions/1068834/object-comparison-in-javascript#1144249\n\n // Compare primitives and functions.\n // Also check if both arguments link to the same object.\n if (x === y) {\n return true;\n }\n\n if ((typeof x === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(x)) !== (typeof y === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(y))) {\n return false;\n }\n\n // special-case NaN (since NaN !== NaN)\n if (typeof x === 'number' && isNaN(x) && isNaN(y)) {\n return true;\n }\n\n // special-case null (since typeof null == 'object', but null.constructor\n // throws)\n if (x === null || y === null) {\n return x === y;\n }\n\n // everything else is either an unequal primitive, or an object\n if (!(x instanceof Object)) {\n return false;\n }\n\n // check they are the same type of object\n if (x.constructor !== y.constructor || x.prototype !== y.prototype) {\n return false;\n }\n\n // special-casing for some special types of object\n if (x instanceof RegExp || x instanceof Date) {\n return x.toString() === y.toString();\n }\n\n // the object algorithm works for Array, but it's sub-optimal.\n if (x instanceof Array) {\n if (x.length !== y.length) {\n return false;\n }\n\n for (var i = 0; i < x.length; i++) {\n if (!deepCompare(x[i], y[i])) {\n return false;\n }\n }\n } else {\n // disable jshint \"The body of a for in should be wrapped in an if\n // statement\"\n /* jshint -W089 */\n\n // check that all of y's direct keys are in x\n var p = void 0;\n for (p in y) {\n if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {\n return false;\n }\n }\n\n // finally, compare each of x's keys with y\n for (p in y) {\n // eslint-disable-line guard-for-in\n if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {\n return false;\n }\n if (!deepCompare(x[p], y[p])) {\n return false;\n }\n }\n }\n /* jshint +W089 */\n return true;\n};\n\n/**\n * Copy properties from one object to another.\n *\n * All enumerable properties, included inherited ones, are copied.\n *\n * This is approximately equivalent to ES6's Object.assign, except\n * that the latter doesn't copy inherited properties.\n *\n * @param {Object} target The object that will receive new properties\n * @param {...Object} source Objects from which to copy properties\n *\n * @return {Object} target\n */\nmodule.exports.extend = function () {\n var target = arguments[0] || {};\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var propName in source) {\n // eslint-disable-line guard-for-in\n target[propName] = source[propName];\n }\n }\n return target;\n};\n\n/**\n * Run polyfills to add Array.map and Array.filter if they are missing.\n */\nmodule.exports.runPolyfills = function () {\n // Array.prototype.filter\n // ========================================================\n // SOURCE:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter\n if (!Array.prototype.filter) {\n Array.prototype.filter = function (fun /*, thisArg*/) {\n if (this === void 0 || this === null) {\n throw new TypeError();\n }\n\n var t = Object(this);\n var len = t.length >>> 0;\n if (typeof fun !== 'function') {\n throw new TypeError();\n }\n\n var res = [];\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n for (var i = 0; i < len; i++) {\n if (i in t) {\n var val = t[i];\n\n // NOTE: Technically this should Object.defineProperty at\n // the next index, as push can be affected by\n // properties on Object.prototype and Array.prototype.\n // But that method's new, and collisions should be\n // rare, so use the more-compatible alternative.\n if (fun.call(thisArg, val, i, t)) {\n res.push(val);\n }\n }\n }\n\n return res;\n };\n }\n\n // Array.prototype.map\n // ========================================================\n // SOURCE:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map\n // Production steps of ECMA-262, Edition 5, 15.4.4.19\n // Reference: http://es5.github.io/#x15.4.4.19\n if (!Array.prototype.map) {\n Array.prototype.map = function (callback, thisArg) {\n var T = void 0,\n k = void 0;\n\n if (this === null || this === undefined) {\n throw new TypeError(' this is null or not defined');\n }\n\n // 1. Let O be the result of calling ToObject passing the |this|\n // value as the argument.\n var O = Object(this);\n\n // 2. Let lenValue be the result of calling the Get internal\n // method of O with the argument \"length\".\n // 3. Let len be ToUint32(lenValue).\n var len = O.length >>> 0;\n\n // 4. If IsCallable(callback) is false, throw a TypeError exception.\n // See: http://es5.github.com/#x9.11\n if (typeof callback !== 'function') {\n throw new TypeError(callback + ' is not a function');\n }\n\n // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.\n if (arguments.length > 1) {\n T = thisArg;\n }\n\n // 6. Let A be a new array created as if by the expression new Array(len)\n // where Array is the standard built-in constructor with that name and\n // len is the value of len.\n var A = new Array(len);\n\n // 7. Let k be 0\n k = 0;\n\n // 8. Repeat, while k < len\n while (k < len) {\n var kValue, mappedValue;\n\n // a. Let Pk be ToString(k).\n // This is implicit for LHS operands of the in operator\n // b. Let kPresent be the result of calling the HasProperty internal\n // method of O with argument Pk.\n // This step can be combined with c\n // c. If kPresent is true, then\n if (k in O) {\n // i. Let kValue be the result of calling the Get internal\n // method of O with argument Pk.\n kValue = O[k];\n\n // ii. Let mappedValue be the result of calling the Call internal\n // method of callback with T as the this value and argument\n // list containing kValue, k, and O.\n mappedValue = callback.call(T, kValue, k, O);\n\n // iii. Call the DefineOwnProperty internal method of A with arguments\n // Pk, Property Descriptor\n // { Value: mappedValue,\n // Writable: true,\n // Enumerable: true,\n // Configurable: true },\n // and false.\n\n // In browsers that support Object.defineProperty, use the following:\n // Object.defineProperty(A, k, {\n // value: mappedValue,\n // writable: true,\n // enumerable: true,\n // configurable: true\n // });\n\n // For best browser support, use the following:\n A[k] = mappedValue;\n }\n // d. Increase k by 1.\n k++;\n }\n\n // 9. return A\n return A;\n };\n }\n\n // Array.prototype.forEach\n // ========================================================\n // SOURCE:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach\n // Production steps of ECMA-262, Edition 5, 15.4.4.18\n // Reference: http://es5.github.io/#x15.4.4.18\n if (!Array.prototype.forEach) {\n Array.prototype.forEach = function (callback, thisArg) {\n var T = void 0,\n k = void 0;\n\n if (this === null || this === undefined) {\n throw new TypeError(' this is null or not defined');\n }\n\n // 1. Let O be the result of calling ToObject passing the |this| value as the\n // argument.\n var O = Object(this);\n\n // 2. Let lenValue be the result of calling the Get internal method of O with the\n // argument \"length\".\n // 3. Let len be ToUint32(lenValue).\n var len = O.length >>> 0;\n\n // 4. If IsCallable(callback) is false, throw a TypeError exception.\n // See: http://es5.github.com/#x9.11\n if (typeof callback !== \"function\") {\n throw new TypeError(callback + ' is not a function');\n }\n\n // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.\n if (arguments.length > 1) {\n T = thisArg;\n }\n\n // 6. Let k be 0\n k = 0;\n\n // 7. Repeat, while k < len\n while (k < len) {\n var kValue;\n\n // a. Let Pk be ToString(k).\n // This is implicit for LHS operands of the in operator\n // b. Let kPresent be the result of calling the HasProperty internal\n // method of O with\n // argument Pk.\n // This step can be combined with c\n // c. If kPresent is true, then\n if (k in O) {\n // i. Let kValue be the result of calling the Get internal method of O with\n // argument Pk\n kValue = O[k];\n\n // ii. Call the Call internal method of callback with T as the this value and\n // argument list containing kValue, k, and O.\n callback.call(T, kValue, k, O);\n }\n // d. Increase k by 1.\n k++;\n }\n // 8. return undefined\n };\n }\n};\n\n/**\n * Inherit the prototype methods from one constructor into another. This is a\n * port of the Node.js implementation with an Object.create polyfill.\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nmodule.exports.inherits = function (ctor, superCtor) {\n // Add Object.create polyfill for IE8\n // Source:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript\n // /Reference/Global_Objects/Object/create#Polyfill\n if (typeof _create2.default != 'function') {\n // Production steps of ECMA-262, Edition 5, 15.2.3.5\n // Reference: http://es5.github.io/#x15.2.3.5\n Object.create = function () {\n // To save on memory, use a shared constructor\n function Temp() {}\n\n // make a safe reference to Object.prototype.hasOwnProperty\n var hasOwn = Object.prototype.hasOwnProperty;\n\n return function (O) {\n // 1. If Type(O) is not Object or Null throw a TypeError exception.\n if ((typeof O === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(O)) != 'object') {\n throw new TypeError('Object prototype may only be an Object or null');\n }\n\n // 2. Let obj be the result of creating a new object as if by the\n // expression new Object() where Object is the standard built-in\n // constructor with that name\n // 3. Set the [[Prototype]] internal property of obj to O.\n Temp.prototype = O;\n var obj = new Temp();\n Temp.prototype = null; // Let's not keep a stray reference to O...\n\n // 4. If the argument Properties is present and not undefined, add\n // own properties to obj as if by calling the standard built-in\n // function Object.defineProperties with arguments obj and\n // Properties.\n if (arguments.length > 1) {\n // Object.defineProperties does ToObject on its first argument.\n var Properties = Object(arguments[1]);\n for (var prop in Properties) {\n if (hasOwn.call(Properties, prop)) {\n obj[prop] = Properties[prop];\n }\n }\n }\n\n // 5. Return obj\n return obj;\n };\n }();\n }\n // END polyfill\n\n // Add util.inherits from Node.js\n // Source:\n // https://github.com/joyent/node/blob/master/lib/util.js\n // Copyright Joyent, Inc. and other Node contributors.\n //\n // Permission is hereby granted, free of charge, to any person obtaining a\n // copy of this software and associated documentation files (the\n // \"Software\"), to deal in the Software without restriction, including\n // without limitation the rights to use, copy, modify, merge, publish,\n // distribute, sublicense, and/or sell copies of the Software, and to permit\n // persons to whom the Software is furnished to do so, subject to the\n // following conditions:\n //\n // The above copyright notice and this permission notice shall be included\n // in all copies or substantial portions of the Software.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n // USE OR OTHER DEALINGS IN THE SOFTWARE.\n ctor.super_ = superCtor;\n ctor.prototype = (0, _create2.default)(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\n\n/**\n * Returns whether the given value is a finite number without type-coercion\n *\n * @param {*} value the value to test\n * @return {boolean} whether or not value is a finite number without type-coercion\n */\nmodule.exports.isNumber = function (value) {\n return typeof value === 'number' && isFinite(value);\n};\n\n/**\n * Removes zero width chars, diacritics and whitespace from the string\n * Also applies an unhomoglyph on the string, to prevent similar looking chars\n * @param {string} str the string to remove hidden characters from\n * @return {string} a string with the hidden characters removed\n */\nmodule.exports.removeHiddenChars = function (str) {\n return unhomoglyph(str.normalize('NFD').replace(removeHiddenCharsRegex, ''));\n};\nvar removeHiddenCharsRegex = /[\\u200B-\\u200D\\u0300-\\u036f\\uFEFF\\s]/g;\n\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nmodule.exports.escapeRegExp = escapeRegExp;\n\nmodule.exports.globToRegexp = function (glob, extended) {\n extended = typeof extended === 'boolean' ? extended : true;\n // From\n // https://github.com/matrix-org/synapse/blob/abbee6b29be80a77e05730707602f3bbfc3f38cb/synapse/push/__init__.py#L132\n // Because micromatch is about 130KB with dependencies,\n // and minimatch is not much better.\n var pat = escapeRegExp(glob);\n pat = pat.replace(/\\\\\\*/g, '.*');\n pat = pat.replace(/\\?/g, '.');\n if (extended) {\n pat = pat.replace(/\\\\\\[(!|)(.*)\\\\]/g, function (match, p1, p2, offset, string) {\n var first = p1 && '^' || '';\n var second = p2.replace(/\\\\-/, '-');\n return '[' + first + second + ']';\n });\n }\n return pat;\n};\n//# sourceMappingURL=utils.js.map","module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = function () { /* empty */ };\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n","'use strict';\n\n\nvar data = require('./data.json');\n\nfunction escapeRegexp(str) {\n return str.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n}\n\nvar REPLACE_RE = RegExp(Object.keys(data).map(escapeRegexp).join('|'), 'g');\n\nfunction replace_fn(match) {\n return data[match];\n}\n\nfunction unhomoglyph(str) {\n return str.replace(REPLACE_RE, replace_fn);\n}\n\nmodule.exports = unhomoglyph;\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _syncAccumulator = require(\"../sync-accumulator\");\n\nvar _syncAccumulator2 = _interopRequireDefault(_syncAccumulator);\n\nvar _utils = require(\"../utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar VERSION = 3; /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction createDatabase(db) {\n // Make user store, clobber based on user ID. (userId property of User objects)\n db.createObjectStore(\"users\", { keyPath: [\"userId\"] });\n\n // Make account data store, clobber based on event type.\n // (event.type property of MatrixEvent objects)\n db.createObjectStore(\"accountData\", { keyPath: [\"type\"] });\n\n // Make /sync store (sync tokens, room data, etc), always clobber (const key).\n db.createObjectStore(\"sync\", { keyPath: [\"clobber\"] });\n}\n\nfunction upgradeSchemaV2(db) {\n var oobMembersStore = db.createObjectStore(\"oob_membership_events\", {\n keyPath: [\"room_id\", \"state_key\"]\n });\n oobMembersStore.createIndex(\"room\", \"room_id\");\n}\n\nfunction upgradeSchemaV3(db) {\n db.createObjectStore(\"client_options\", { keyPath: [\"clobber\"] });\n}\n\n/**\n * Helper method to collect results from a Cursor and promiseify it.\n * @param {ObjectStore|Index} store The store to perform openCursor on.\n * @param {IDBKeyRange=} keyRange Optional key range to apply on the cursor.\n * @param {Function} resultMapper A function which is repeatedly called with a\n * Cursor.\n * Return the data you want to keep.\n * @return {Promise<T[]>} Resolves to an array of whatever you returned from\n * resultMapper.\n */\nfunction selectQuery(store, keyRange, resultMapper) {\n var query = store.openCursor(keyRange);\n return new _bluebird2.default(function (resolve, reject) {\n var results = [];\n query.onerror = function (event) {\n reject(new Error(\"Query failed: \" + event.target.errorCode));\n };\n // collect results\n query.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n resolve(results);\n return; // end of results\n }\n results.push(resultMapper(cursor));\n cursor.continue();\n };\n });\n}\n\nfunction txnAsPromise(txn) {\n return new _bluebird2.default(function (resolve, reject) {\n txn.oncomplete = function (event) {\n resolve(event);\n };\n txn.onerror = function (event) {\n reject(event.target.error);\n };\n });\n}\n\nfunction reqAsEventPromise(req) {\n return new _bluebird2.default(function (resolve, reject) {\n req.onsuccess = function (event) {\n resolve(event);\n };\n req.onerror = function (event) {\n reject(event.target.error);\n };\n });\n}\n\nfunction reqAsPromise(req) {\n return new _bluebird2.default(function (resolve, reject) {\n req.onsuccess = function () {\n return resolve(req);\n };\n req.onerror = function (err) {\n return reject(err);\n };\n });\n}\n\nfunction reqAsCursorPromise(req) {\n return reqAsEventPromise(req).then(function (event) {\n return event.target.result;\n });\n}\n\n/**\n * Does the actual reading from and writing to the indexeddb\n *\n * Construct a new Indexed Database store backend. This requires a call to\n * <code>connect()</code> before this store can be used.\n * @constructor\n * @param {Object} indexedDBInterface The Indexed DB interface e.g\n * <code>window.indexedDB</code>\n * @param {string=} dbName Optional database name. The same name must be used\n * to open the same database.\n */\nvar LocalIndexedDBStoreBackend = function LocalIndexedDBStoreBackend(indexedDBInterface, dbName) {\n this.indexedDB = indexedDBInterface;\n this._dbName = \"matrix-js-sdk:\" + (dbName || \"default\");\n this.db = null;\n this._disconnected = true;\n this._syncAccumulator = new _syncAccumulator2.default();\n this._isNewlyCreated = false;\n};\n\nLocalIndexedDBStoreBackend.prototype = {\n /**\n * Attempt to connect to the database. This can fail if the user does not\n * grant permission.\n * @return {Promise} Resolves if successfully connected.\n */\n connect: function connect() {\n var _this = this;\n\n if (!this._disconnected) {\n console.log(\"LocalIndexedDBStoreBackend.connect: already connected or connecting\");\n return _bluebird2.default.resolve();\n }\n\n this._disconnected = false;\n\n console.log(\"LocalIndexedDBStoreBackend.connect: connecting...\");\n var req = this.indexedDB.open(this._dbName, VERSION);\n req.onupgradeneeded = function (ev) {\n var db = ev.target.result;\n var oldVersion = ev.oldVersion;\n console.log(\"LocalIndexedDBStoreBackend.connect: upgrading from \" + oldVersion);\n if (oldVersion < 1) {\n // The database did not previously exist.\n _this._isNewlyCreated = true;\n createDatabase(db);\n }\n if (oldVersion < 2) {\n upgradeSchemaV2(db);\n }\n if (oldVersion < 3) {\n upgradeSchemaV3(db);\n }\n // Expand as needed.\n };\n\n req.onblocked = function () {\n console.log(\"can't yet open LocalIndexedDBStoreBackend because it is open elsewhere\");\n };\n\n console.log(\"LocalIndexedDBStoreBackend.connect: awaiting connection...\");\n return reqAsEventPromise(req).then(function (ev) {\n console.log(\"LocalIndexedDBStoreBackend.connect: connected\");\n _this.db = ev.target.result;\n\n // add a poorly-named listener for when deleteDatabase is called\n // so we can close our db connections.\n _this.db.onversionchange = function () {\n _this.db.close();\n };\n\n return _this._init();\n });\n },\n /** @return {bool} whether or not the database was newly created in this session. */\n isNewlyCreated: function isNewlyCreated() {\n return _bluebird2.default.resolve(this._isNewlyCreated);\n },\n\n /**\n * Having connected, load initial data from the database and prepare for use\n * @return {Promise} Resolves on success\n */\n _init: function _init() {\n var _this2 = this;\n\n return _bluebird2.default.all([this._loadAccountData(), this._loadSyncData()]).then(function (_ref) {\n var _ref2 = (0, _slicedToArray3.default)(_ref, 2),\n accountData = _ref2[0],\n syncData = _ref2[1];\n\n console.log(\"LocalIndexedDBStoreBackend: loaded initial data\");\n _this2._syncAccumulator.accumulate({\n next_batch: syncData.nextBatch,\n rooms: syncData.roomsData,\n groups: syncData.groupsData,\n account_data: {\n events: accountData\n }\n });\n });\n },\n\n /**\n * Returns the out-of-band membership events for this room that\n * were previously loaded.\n * @param {string} roomId\n * @returns {Promise<event[]>} the events, potentially an empty array if OOB loading didn't yield any new members\n * @returns {null} in case the members for this room haven't been stored yet\n */\n getOutOfBandMembers: function getOutOfBandMembers(roomId) {\n var _this3 = this;\n\n return new _bluebird2.default(function (resolve, reject) {\n var tx = _this3.db.transaction([\"oob_membership_events\"], \"readonly\");\n var store = tx.objectStore(\"oob_membership_events\");\n var roomIndex = store.index(\"room\");\n var range = IDBKeyRange.only(roomId);\n var request = roomIndex.openCursor(range);\n\n var membershipEvents = [];\n // did we encounter the oob_written marker object\n // amongst the results? That means OOB member\n // loading already happened for this room\n // but there were no members to persist as they\n // were all known already\n var oobWritten = false;\n\n request.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n // Unknown room\n if (!membershipEvents.length && !oobWritten) {\n return resolve(null);\n }\n return resolve(membershipEvents);\n }\n var record = cursor.value;\n if (record.oob_written) {\n oobWritten = true;\n } else {\n membershipEvents.push(record);\n }\n cursor.continue();\n };\n request.onerror = function (err) {\n reject(err);\n };\n }).then(function (events) {\n console.log(\"LL: got \" + (events && events.length) + (\" membershipEvents from storage for room \" + roomId + \" ...\"));\n return events;\n });\n },\n\n /**\n * Stores the out-of-band membership events for this room. Note that\n * it still makes sense to store an empty array as the OOB status for the room is\n * marked as fetched, and getOutOfBandMembers will return an empty array instead of null\n * @param {string} roomId\n * @param {event[]} membershipEvents the membership events to store\n */\n setOutOfBandMembers: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(roomId, membershipEvents) {\n var tx, store, markerObject;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n console.log(\"LL: backend about to store \" + membershipEvents.length + (\" members for \" + roomId));\n tx = this.db.transaction([\"oob_membership_events\"], \"readwrite\");\n store = tx.objectStore(\"oob_membership_events\");\n\n membershipEvents.forEach(function (e) {\n store.put(e);\n });\n // aside from all the events, we also write a marker object to the store\n // to mark the fact that OOB members have been written for this room.\n // It's possible that 0 members need to be written as all where previously know\n // but we still need to know whether to return null or [] from getOutOfBandMembers\n // where null means out of band members haven't been stored yet for this room\n markerObject = {\n room_id: roomId,\n oob_written: true,\n state_key: 0\n };\n\n store.put(markerObject);\n _context.next = 8;\n return (0, _bluebird.resolve)(txnAsPromise(tx));\n\n case 8:\n console.log(\"LL: backend done storing for \" + roomId + \"!\");\n\n case 9:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function setOutOfBandMembers(_x, _x2) {\n return _ref3.apply(this, arguments);\n }\n\n return setOutOfBandMembers;\n }(),\n\n clearOutOfBandMembers: function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(roomId) {\n var readTx, store, roomIndex, roomRange, minStateKeyProm, maxStateKeyProm, _ref5, _ref6, minStateKey, maxStateKey, writeTx, writeStore, membersKeyRange;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // the approach to delete all members for a room\n // is to get the min and max state key from the index\n // for that room, and then delete between those\n // keys in the store.\n // this should be way faster than deleting every member\n // individually for a large room.\n readTx = this.db.transaction([\"oob_membership_events\"], \"readonly\");\n store = readTx.objectStore(\"oob_membership_events\");\n roomIndex = store.index(\"room\");\n roomRange = IDBKeyRange.only(roomId);\n minStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, \"next\")).then(function (cursor) {\n return cursor && cursor.primaryKey[1];\n });\n maxStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, \"prev\")).then(function (cursor) {\n return cursor && cursor.primaryKey[1];\n });\n _context2.next = 8;\n return (0, _bluebird.resolve)(_bluebird2.default.all([minStateKeyProm, maxStateKeyProm]));\n\n case 8:\n _ref5 = _context2.sent;\n _ref6 = (0, _slicedToArray3.default)(_ref5, 2);\n minStateKey = _ref6[0];\n maxStateKey = _ref6[1];\n writeTx = this.db.transaction([\"oob_membership_events\"], \"readwrite\");\n writeStore = writeTx.objectStore(\"oob_membership_events\");\n membersKeyRange = IDBKeyRange.bound([roomId, minStateKey], [roomId, maxStateKey]);\n\n\n console.log(\"LL: Deleting all users + marker in storage for \" + (\"room \" + roomId + \", with key range:\"), [roomId, minStateKey], [roomId, maxStateKey]);\n _context2.next = 18;\n return (0, _bluebird.resolve)(reqAsPromise(writeStore.delete(membersKeyRange)));\n\n case 18:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function clearOutOfBandMembers(_x3) {\n return _ref4.apply(this, arguments);\n }\n\n return clearOutOfBandMembers;\n }(),\n\n /**\n * Clear the entire database. This should be used when logging out of a client\n * to prevent mixing data between accounts.\n * @return {Promise} Resolved when the database is cleared.\n */\n clearDatabase: function clearDatabase() {\n var _this4 = this;\n\n return new _bluebird2.default(function (resolve, reject) {\n console.log(\"Removing indexeddb instance: \" + _this4._dbName);\n var req = _this4.indexedDB.deleteDatabase(_this4._dbName);\n\n req.onblocked = function () {\n console.log(\"can't yet delete indexeddb \" + _this4._dbName + \" because it is open elsewhere\");\n };\n\n req.onerror = function (ev) {\n // in firefox, with indexedDB disabled, this fails with a\n // DOMError. We treat this as non-fatal, so that we can still\n // use the app.\n console.warn(\"unable to delete js-sdk store indexeddb: \" + ev.target.error);\n resolve();\n };\n\n req.onsuccess = function () {\n console.log(\"Removed indexeddb instance: \" + _this4._dbName);\n resolve();\n };\n });\n },\n\n /**\n * @param {boolean=} copy If false, the data returned is from internal\n * buffers and must not be mutated. Otherwise, a copy is made before\n * returning such that the data can be safely mutated. Default: true.\n *\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\n getSavedSync: function getSavedSync(copy) {\n if (copy === undefined) copy = true;\n\n var data = this._syncAccumulator.getJSON();\n if (!data.nextBatch) return _bluebird2.default.resolve(null);\n if (copy) {\n // We must deep copy the stored data so that the /sync processing code doesn't\n // corrupt the internal state of the sync accumulator (it adds non-clonable keys)\n return _bluebird2.default.resolve(_utils2.default.deepCopy(data));\n } else {\n return _bluebird2.default.resolve(data);\n }\n },\n\n getNextBatchToken: function getNextBatchToken() {\n return _bluebird2.default.resolve(this._syncAccumulator.getNextBatchToken());\n },\n\n setSyncData: function setSyncData(syncData) {\n var _this5 = this;\n\n return _bluebird2.default.resolve().then(function () {\n _this5._syncAccumulator.accumulate(syncData);\n });\n },\n\n syncToDatabase: function syncToDatabase(userTuples) {\n var syncData = this._syncAccumulator.getJSON();\n\n return _bluebird2.default.all([this._persistUserPresenceEvents(userTuples), this._persistAccountData(syncData.accountData), this._persistSyncData(syncData.nextBatch, syncData.roomsData, syncData.groupsData)]);\n },\n\n /**\n * Persist rooms /sync data along with the next batch token.\n * @param {string} nextBatch The next_batch /sync value.\n * @param {Object} roomsData The 'rooms' /sync data from a SyncAccumulator\n * @param {Object} groupsData The 'groups' /sync data from a SyncAccumulator\n * @return {Promise} Resolves if the data was persisted.\n */\n _persistSyncData: function _persistSyncData(nextBatch, roomsData, groupsData) {\n var _this6 = this;\n\n console.log(\"Persisting sync data up to \", nextBatch);\n return _bluebird2.default.try(function () {\n var txn = _this6.db.transaction([\"sync\"], \"readwrite\");\n var store = txn.objectStore(\"sync\");\n store.put({\n clobber: \"-\", // constant key so will always clobber\n nextBatch: nextBatch,\n roomsData: roomsData,\n groupsData: groupsData\n }); // put == UPSERT\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Persist a list of account data events. Events with the same 'type' will\n * be replaced.\n * @param {Object[]} accountData An array of raw user-scoped account data events\n * @return {Promise} Resolves if the events were persisted.\n */\n _persistAccountData: function _persistAccountData(accountData) {\n var _this7 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this7.db.transaction([\"accountData\"], \"readwrite\");\n var store = txn.objectStore(\"accountData\");\n for (var i = 0; i < accountData.length; i++) {\n store.put(accountData[i]); // put == UPSERT\n }\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Persist a list of [user id, presence event] they are for.\n * Users with the same 'userId' will be replaced.\n * Presence events should be the event in its raw form (not the Event\n * object)\n * @param {Object[]} tuples An array of [userid, event] tuples\n * @return {Promise} Resolves if the users were persisted.\n */\n _persistUserPresenceEvents: function _persistUserPresenceEvents(tuples) {\n var _this8 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this8.db.transaction([\"users\"], \"readwrite\");\n var store = txn.objectStore(\"users\");\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(tuples), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var tuple = _step.value;\n\n store.put({\n userId: tuple[0],\n event: tuple[1]\n }); // put == UPSERT\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Load all user presence events from the database. This is not cached.\n * FIXME: It would probably be more sensible to store the events in the\n * sync.\n * @return {Promise<Object[]>} A list of presence events in their raw form.\n */\n getUserPresenceEvents: function getUserPresenceEvents() {\n var _this9 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this9.db.transaction([\"users\"], \"readonly\");\n var store = txn.objectStore(\"users\");\n return selectQuery(store, undefined, function (cursor) {\n return [cursor.value.userId, cursor.value.event];\n });\n });\n },\n\n /**\n * Load all the account data events from the database. This is not cached.\n * @return {Promise<Object[]>} A list of raw global account events.\n */\n _loadAccountData: function _loadAccountData() {\n var _this10 = this;\n\n console.log(\"LocalIndexedDBStoreBackend: loading account data...\");\n return _bluebird2.default.try(function () {\n var txn = _this10.db.transaction([\"accountData\"], \"readonly\");\n var store = txn.objectStore(\"accountData\");\n return selectQuery(store, undefined, function (cursor) {\n return cursor.value;\n }).then(function (result) {\n console.log(\"LocalIndexedDBStoreBackend: loaded account data\");\n return result;\n });\n });\n },\n\n /**\n * Load the sync data from the database.\n * @return {Promise<Object>} An object with \"roomsData\" and \"nextBatch\" keys.\n */\n _loadSyncData: function _loadSyncData() {\n var _this11 = this;\n\n console.log(\"LocalIndexedDBStoreBackend: loading sync data...\");\n return _bluebird2.default.try(function () {\n var txn = _this11.db.transaction([\"sync\"], \"readonly\");\n var store = txn.objectStore(\"sync\");\n return selectQuery(store, undefined, function (cursor) {\n return cursor.value;\n }).then(function (results) {\n console.log(\"LocalIndexedDBStoreBackend: loaded sync data\");\n if (results.length > 1) {\n console.warn(\"loadSyncData: More than 1 sync row found.\");\n }\n return results.length > 0 ? results[0] : {};\n });\n });\n },\n\n getClientOptions: function getClientOptions() {\n var _this12 = this;\n\n return _bluebird2.default.resolve().then(function () {\n var txn = _this12.db.transaction([\"client_options\"], \"readonly\");\n var store = txn.objectStore(\"client_options\");\n return selectQuery(store, undefined, function (cursor) {\n if (cursor.value && cursor.value && cursor.value.options) {\n return cursor.value.options;\n }\n }).then(function (results) {\n return results[0];\n });\n });\n },\n\n storeClientOptions: function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(options) {\n var txn, store;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n txn = this.db.transaction([\"client_options\"], \"readwrite\");\n store = txn.objectStore(\"client_options\");\n\n store.put({\n clobber: \"-\", // constant key so will always clobber\n options: options\n }); // put == UPSERT\n _context3.next = 5;\n return (0, _bluebird.resolve)(txnAsPromise(txn));\n\n case 5:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function storeClientOptions(_x4) {\n return _ref7.apply(this, arguments);\n }\n\n return storeClientOptions;\n }()\n};\n\nexports.default = LocalIndexedDBStoreBackend;\n//# sourceMappingURL=indexeddb-local-backend.js.map","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();","\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","module.exports = {};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","module.exports = true;\n","/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2018 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.5.2\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar SomePromiseArray = Promise._SomePromiseArray;\nfunction any(promises) {\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(1);\n ret.setUnwrap();\n ret.init();\n return promise;\n}\n\nPromise.any = function (promises) {\n return any(promises);\n};\n\nPromise.prototype.any = function () {\n return any(this);\n};\n\n};\n\n},{}],2:[function(_dereq_,module,exports){\n\"use strict\";\nvar firstLineError;\ntry {throw new Error(); } catch (e) {firstLineError = e;}\nvar schedule = _dereq_(\"./schedule\");\nvar Queue = _dereq_(\"./queue\");\nvar util = _dereq_(\"./util\");\n\nfunction Async() {\n this._customScheduler = false;\n this._isTickUsed = false;\n this._lateQueue = new Queue(16);\n this._normalQueue = new Queue(16);\n this._haveDrainedQueues = false;\n this._trampolineEnabled = true;\n var self = this;\n this.drainQueues = function () {\n self._drainQueues();\n };\n this._schedule = schedule;\n}\n\nAsync.prototype.setScheduler = function(fn) {\n var prev = this._schedule;\n this._schedule = fn;\n this._customScheduler = true;\n return prev;\n};\n\nAsync.prototype.hasCustomScheduler = function() {\n return this._customScheduler;\n};\n\nAsync.prototype.enableTrampoline = function() {\n this._trampolineEnabled = true;\n};\n\nAsync.prototype.disableTrampolineIfNecessary = function() {\n if (util.hasDevTools) {\n this._trampolineEnabled = false;\n }\n};\n\nAsync.prototype.haveItemsQueued = function () {\n return this._isTickUsed || this._haveDrainedQueues;\n};\n\n\nAsync.prototype.fatalError = function(e, isNode) {\n if (isNode) {\n process.stderr.write(\"Fatal \" + (e instanceof Error ? e.stack : e) +\n \"\\n\");\n process.exit(2);\n } else {\n this.throwLater(e);\n }\n};\n\nAsync.prototype.throwLater = function(fn, arg) {\n if (arguments.length === 1) {\n arg = fn;\n fn = function () { throw arg; };\n }\n if (typeof setTimeout !== \"undefined\") {\n setTimeout(function() {\n fn(arg);\n }, 0);\n } else try {\n this._schedule(function() {\n fn(arg);\n });\n } catch (e) {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n};\n\nfunction AsyncInvokeLater(fn, receiver, arg) {\n this._lateQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncInvoke(fn, receiver, arg) {\n this._normalQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncSettlePromises(promise) {\n this._normalQueue._pushOne(promise);\n this._queueTick();\n}\n\nif (!util.hasDevTools) {\n Async.prototype.invokeLater = AsyncInvokeLater;\n Async.prototype.invoke = AsyncInvoke;\n Async.prototype.settlePromises = AsyncSettlePromises;\n} else {\n Async.prototype.invokeLater = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvokeLater.call(this, fn, receiver, arg);\n } else {\n this._schedule(function() {\n setTimeout(function() {\n fn.call(receiver, arg);\n }, 100);\n });\n }\n };\n\n Async.prototype.invoke = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvoke.call(this, fn, receiver, arg);\n } else {\n this._schedule(function() {\n fn.call(receiver, arg);\n });\n }\n };\n\n Async.prototype.settlePromises = function(promise) {\n if (this._trampolineEnabled) {\n AsyncSettlePromises.call(this, promise);\n } else {\n this._schedule(function() {\n promise._settlePromises();\n });\n }\n };\n}\n\nfunction _drainQueue(queue) {\n while (queue.length() > 0) {\n _drainQueueStep(queue);\n }\n}\n\nfunction _drainQueueStep(queue) {\n var fn = queue.shift();\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n } else {\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n}\n\nAsync.prototype._drainQueues = function () {\n _drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n _drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29,\"./util\":36}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & (~2097152);\n }\n};\n\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (!true) {\nvar makeMethodCaller = function (methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n var ret = cache[name];\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n cache[\" size\"] = keys.length - 256;\n }\n }\n return ret;\n};\n\ngetMethodCaller = function(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n return fn;\n}\n\nfunction caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);;\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n if (maybeCaller !== null) {\n return this._then(\n maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n return obj[this];\n}\nfunction indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n var isIndex = (typeof propertyName === \"number\");\n var getter;\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (item != null && item.prototype instanceof Error)) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n Context.deactivateLongStackTraces = function() {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context) {\nvar getDomain = Promise._getDomain;\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar es5 = _dereq_(\"./es5\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (true ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n var self = this;\n setTimeout(function() {\n self._notifyUnhandledRejection();\n }, 1);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var domain = getDomain();\n possiblyUnhandledRejection =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var domain = getDomain();\n unhandledRejectionHandled =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace;\n config.longStackTraces = true;\n disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;\n Context.deactivateLongStackTraces();\n async.enableTrampoline();\n config.longStackTraces = false;\n };\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n Context.activateLongStackTraces();\n async.disableTrampolineIfNecessary();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\nvar fireDomEvent = (function() {\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var eventData = {\n detail: event,\n cancelable: true\n };\n es5.defineProperty(\n eventData, \"promise\", {value: event.promise});\n es5.defineProperty(eventData, \"reason\", {value: event.reason});\n var domEvent = new CustomEvent(name.toLowerCase(), eventData);\n return !util.global.dispatchEvent(domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = new Event(name.toLowerCase(), {\n cancelable: true\n });\n domEvent.detail = event;\n es5.defineProperty(domEvent, \"promise\", {value: event.promise});\n es5.defineProperty(domEvent, \"reason\", {value: event.reason});\n return !util.global.dispatchEvent(domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name.toLowerCase(), false, true,\n event);\n return !util.global.dispatchEvent(domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar fireGlobalEvent = (function() {\n if (util.isNode) {\n return function() {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function() {\n return false;\n };\n }\n return function(name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._dereferenceTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n}\n\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction longStackTracesDereferenceTrace() {\n this._trace = undefined;\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n}\n\nfunction reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n}\n\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = firstLineError.stack.split(\"\\n\");\n var lastStackLines = lastLineError.stack.split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\n return boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n}\n\nmodule.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n};\n\n},{\"./es5\":13,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n} else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\n catch(e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function() {\n return true;\n }\n };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"expecting an object but got \" + util.classString(item)\n ));\n }\n }\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n apiRejection,\n INTERNAL,\n tryConvertToPromise,\n Proxyable,\n debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n var result = tryCatch(yieldHandlers[i])(value);\n traceParent._popContext();\n if (result === errorObj) {\n traceParent._pushContext();\n var ret = Promise.reject(errorObj.e);\n traceParent._popContext();\n return ret;\n }\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n this._promise = internal.lastly(function() {\n return _finallyPromise;\n });\n internal._captureStackTrace();\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n }\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\"\n ? [yieldHandler].concat(yieldHandlers)\n : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n this._promise = this._generator = null;\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n this._finallyPromise = null;\n }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n var result;\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\n \"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n reason);\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n result = tryCatch(this._generator[\"return\"]).call(this._generator,\n undefined);\n this._promise._popContext();\n }\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n this._yieldedPromise = null;\n this._promise._pushContext();\n var result = tryCatch(this._generator.next).call(this._generator, value);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n this._yieldedPromise = null;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n var result = tryCatch(this._generator[\"throw\"])\n .call(this._generator, reason);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n};\n\nPromiseSpawn.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver =\n this._generatorFunction = undefined;\n this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n if (result === errorObj) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n if (result.done === true) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n if (!(maybePromise instanceof Promise)) {\n maybePromise =\n promiseFromYieldHandler(maybePromise,\n this._yieldHandlers,\n this._promise);\n if (maybePromise === null) {\n this._promiseRejected(\n new TypeError(\n \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n \"From coroutine:\\u000a\" +\n this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n )\n );\n return;\n }\n }\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n this._yieldedPromise = maybePromise;\n maybePromise._proxy(this, null);\n } else if (((bitField & 33554432) !== 0)) {\n Promise._async.invoke(\n this._promiseFulfilled, this, maybePromise._value()\n );\n } else if (((bitField & 16777216) !== 0)) {\n Promise._async.invoke(\n this._promiseRejected, this, maybePromise._reason()\n );\n } else {\n this._promiseCancelled();\n }\n }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n spawn._promiseFulfilled(undefined);\n return ret;\n };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n spawn._run(Promise.spawn);\n return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async,\n getDomain) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!true) {\nif (canEvaluate) {\n var thenCallback = function(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\n }\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n\n\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n maybePromise._value(), holder);\n } else if (((bitField & 16777216) !== 0)) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var domain = getDomain();\n if (domain !== null) {\n holder.fn = util.domainBind(domain, holder.fn);\n }\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var args = [].slice.call(arguments);;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n this._promise._captureStackTrace();\n var domain = getDomain();\n this._callback = domain === null ? fn : util.domainBind(domain, fn);\n this._preservedValues = _filter === INTERNAL\n ? new Array(this.length())\n : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = (index * -1) - 1;\n values[index] = value;\n if (limit >= 1) {\n this._inFlight--;\n this._drainQueue();\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n this._queue.push(index);\n return false;\n }\n if (preservedValues !== null) preservedValues[index] = value;\n\n var promise = this._promise;\n var callback = this._callback;\n var receiver = promise._boundValue();\n promise._pushContext();\n var ret = tryCatch(callback).call(receiver, value, index, length);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n promise\n );\n if (ret === errorObj) {\n this._reject(ret.e);\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n maybePromise._proxy(this, (index + 1) * -1);\n return false;\n } else if (((bitField & 33554432) !== 0)) {\n ret = maybePromise._value();\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(maybePromise._reason());\n return true;\n } else {\n this._cancel();\n return true;\n }\n }\n values[index] = ret;\n }\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n return true;\n }\n return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n this._promiseFulfilled(values[index], index);\n }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n ret.length = j;\n this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n if (options !== undefined) {\n if (typeof options === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(\n new TypeError(\"'concurrency' must be a number but it is \" +\n util.classString(options.concurrency)));\n }\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\n \"options argument must be an object but it is \" +\n util.classString(options)));\n }\n }\n limit = typeof limit === \"number\" &&\n isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n};\n};\n\n},{\"./util\":36}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);;\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret =\n tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nfunction successAdapter(val, nodeback) {\n var promise = this;\n var receiver = promise._boundValue();\n var ret = val === undefined\n ? tryCatch(nodeback).call(receiver, null)\n : tryCatch(nodeback).call(receiver, null, val);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\nfunction errorAdapter(reason, nodeback) {\n var promise = this;\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n this._then(\n adapter,\n errorAdapter,\n undefined,\n this,\n nodeback\n );\n }\n return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\n\nvar getDomain;\nif (util.isNode) {\n getDomain = function() {\n var ret = process.domain;\n if (ret === undefined) ret = null;\n return ret;\n };\n} else {\n getDomain = function() {\n return null;\n };\n}\nutil.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n _dereq_(\"./promise_array\")(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\nvar debug = _dereq_(\"./debuggability\")(Promise, Context);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((this._bitField & 2097152) !== 0)) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var domain = getDomain();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\n if (((bitField & 33554432) !== 0)) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if (((bitField & 16777216) !== 0)) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: domain === null ? handler\n : (typeof handler === \"function\" &&\n util.domainBind(domain, handler)),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise, receiver, domain);\n }\n\n return promise;\n};\n\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n this._bitField = this._bitField | 134217728;\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n domain\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n if (typeof fulfill === \"function\") {\n this[base + 0] =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\n this._setFollowee(promise);\n } else if (((bitField & 33554432) !== 0)) {\n this._fulfill(promise._value());\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n var promiseCreated = promise._popContext();\n bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = ((bitField & 134217728) !== 0);\n if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if (((bitField & 33554432) !== 0)) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if (((bitField & 134217728) !== 0)) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n this._dereferenceTrace();\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = (bitField & 65535);\n\n if (len > 0) {\n if (((bitField & 16842752) !== 0)) {\n var reason = this._fulfillmentHandler0;\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n};\n\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\nPromise.Promise = Promise;\nPromise.version = \"3.5.2\";\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./call_get.js')(Promise);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./filter.js')(Promise, INTERNAL);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./any.js')(Promise);\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \n function fillTypes(value) { \n var p = new Promise(INTERNAL); \n p._fulfillmentHandler0 = value; \n p._rejectionHandler0 = value; \n p._promise0 = value; \n p._receiver0 = value; \n } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \n fillTypes(1); \n fillTypes(function(){}); \n fillTypes(undefined); \n fillTypes(false); \n fillTypes(new Promise(INTERNAL)); \n debug.setBounds(Async.firstLineError, util.lastLineError); \n return Promise; \n\n};\n\n},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36}],23:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if (((bitField & 50397184) === 0)) {\n this._promise._setAsyncGuaranteed();\n return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\n } else if (((bitField & 33554432) !== 0)) {\n values = values._value();\n } else if (((bitField & 16777216) !== 0)) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if (((bitField & 50397184) === 0)) {\n maybePromise._proxy(this, i);\n this._values[i] = maybePromise;\n } else if (((bitField & 33554432) !== 0)) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if (((bitField & 16777216) !== 0)) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n \"arity\", \"length\",\n \"name\",\n \"arguments\",\n \"caller\",\n \"callee\",\n \"prototype\",\n \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n return util.isIdentifier(name) &&\n name.charAt(0) !== \"_\" &&\n name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n }\n catch (e) {\n return false;\n }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix,\n defaultPromisified);\n return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\"\n .replace(\"%s\", suffix));\n }\n }\n }\n }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter\n ? true : defaultFilter(key, value, obj);\n if (typeof value === \"function\" &&\n !isPromisified(value) &&\n !hasPromisified(obj, key, suffix) &&\n filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (!true) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n for(var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n return util.filledRange(\n Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined\n ? \"ret = callback({{args}}, nodeback); break;\\n\"\n : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] +\":\" +\n generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", (shouldProxyThis\n ? \"ret = callback.apply(this, args);\\n\"\n : \"ret = callback.apply(receiver, args);\\n\"));\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\"\n ? (\"this != null ? this['\"+callback+\"'] : fn\")\n : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n .replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\",\n \"fn\",\n \"receiver\",\n \"withAppended\",\n \"maybeWrapAsError\",\n \"nodebackForPromise\",\n \"tryCatch\",\n \"errorObj\",\n \"notEnumerableProp\",\n \"INTERNAL\",\n body)(\n Promise,\n fn,\n receiver,\n withAppended,\n maybeWrapAsError,\n nodebackForPromise,\n util.tryCatch,\n util.errorObj,\n util.notEnumerableProp,\n INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = (function() {return this;})();\n var method = callback;\n if (typeof method === \"string\") {\n callback = fn;\n }\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n var cb = typeof method === \"string\" && this !== defaultThis\n ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch(e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n ? makeNodePromisifiedEval\n : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods =\n promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i+= 2) {\n var key = methods[i];\n var fn = methods[i+1];\n var promisifiedKey = key + suffix;\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] =\n makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function() {\n return makeNodePromisified(key, THIS, key,\n fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n util.toFastProperties(obj);\n return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined,\n callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n if (isPromisified(fn)) {\n return fn;\n }\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && typeof target !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n\n var keys = util.inheritedDataKeys(target);\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n if (keys[i] !== \"constructor\" &&\n util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier,\n multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n})();\n\nvar entriesToMap = function(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n this.constructor$(entries);\n this._isMap = isMap;\n this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n var val;\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n this._resolve(val);\n return true;\n }\n return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n};\n\nfunction props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(\n Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n return ret;\n}\n\nPromise.prototype.props = function () {\n return props(this);\n};\n\nPromise.props = function (promises) {\n return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\n var wrapMask = this._capacity - 1;\n this[(j + 0) & wrapMask] = fn;\n this[(j + 1) & wrapMask] = receiver;\n this[(j + 2) & wrapMask] = arg;\n this._length = length;\n};\n\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n return promise.then(function(array) {\n return race(array, promise);\n });\n};\n\nfunction race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null)\n return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n return ret;\n}\n\nPromise.race = function (promises) {\n return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var domain = getDomain();\n this._fn = domain === null ? fn : util.domainBind(domain, fn);\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n initialValue._attachCancellationCallback(this);\n }\n this._initialValue = initialValue;\n this._currentCancellable = null;\n if(_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n this._promise._captureStackTrace();\n this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n if (this._eachValues !== undefined && \n this._eachValues !== null && \n accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n this._resolve(this._eachValues !== undefined ? this._eachValues\n : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n this._promise._resolveCallback(value);\n this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n this._resultCancelled$();\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value\n ._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n}\n\nfunction gotAccum(accum) {\n this.accum = accum;\n this.array._gotAccum(accum);\n var value = tryConvertToPromise(this.value, this.array._promise);\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n}\n\nfunction gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n promise._pushContext();\n var ret;\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(),\n this.accum, value, this.index, this.length);\n }\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n promise\n );\n return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova))) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function() {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function() {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n })();\n} else if (typeof setImmediate !== \"undefined\") {\n schedule = function (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n if (this._howMany === 0) {\n this._resolve([]);\n return;\n }\n this._init$(undefined, -5);\n var isArrayResolved = isArray(this._values);\n if (!this._isResolved() &&\n isArrayResolved &&\n this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n};\n\nSomePromiseArray.prototype.init = function () {\n this._initialized = true;\n this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n return true;\n }\n return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n this._addRejected(CANCELLATION);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n return true;\n }\n return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" +\n this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n}\n\nPromise.some = function (promises, howMany) {\n return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle) {\n this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n if (value !== undefined) {\n ret = Promise.resolve(value)\n ._then(afterValue, null, null, ms, undefined);\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function() { ret._fulfill(); }, +ms);\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n ret._captureStackTrace();\n }\n ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n var err;\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n util.markAsOriginatingFromRejection(err);\n promise._attachExtraTrace(err);\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n};\n\nfunction successClear(value) {\n clearTimeout(this.handle);\n return value;\n}\n\nfunction failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n }\n\n return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n var TypeError = _dereq_(\"./errors\").TypeError;\n var inherits = _dereq_(\"./util\").inherits;\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function(){throw e;}, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n if (maybePromise !== thenable &&\n typeof thenable._isDisposable === \"function\" &&\n typeof thenable._getDisposer === \"function\" &&\n thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n return maybePromise;\n }\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n if (maybePromise instanceof Promise &&\n maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(\n maybePromise._getDisposer().tryDispose(inspection),\n resources.promise);\n } catch (e) {\n return thrower(e);\n }\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower,\n null, null, null);\n }\n }\n iterator();\n }\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function(inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL\n ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n this._promise._unsetDisposable();\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return (d != null &&\n typeof d.resource === \"function\" &&\n typeof d.tryDispose === \"function\");\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n return value.promise();\n }\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length-1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function() {\n var len = this.length;\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\n \"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var input;\n var spreadArgs = true;\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n var resources = new ResourceList(len);\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n if (maybePromise instanceof Promise) {\n resource =\n maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources)\n .then(function(inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n inspections[i] = inspection.value();\n }\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs\n ? fn.apply(undefined, inspections) : fn(inspections);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n\n var promise = resultPromise.lastly(function() {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n promise._setOnCancel(resources);\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & (~131072);\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n throw new TypeError();\n };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n}\n\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function(obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var receiver = new FakeConstructor();\n function ic() {\n return typeof receiver.foo;\n }\n ic();\n ic();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj instanceof Error ||\n (obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\");\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n return Array.from(v);\n } : function(v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if ({}.toString.call(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nfunction domainBind(self, cb) {\n return self.bind(cb);\n}\n\nvar ret = {\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n hasDevTools: typeof chrome !== \"undefined\" && chrome &&\n typeof chrome.loadTimes === \"function\",\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n domainBind: domainBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version = process.versions.node.split(\".\").map(Number);\n return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13}]},{},[4])(4)\n}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/c2932262ed6106cd4535/mobileguide.js b/riot/bundles/c2932262ed6106cd4535/mobileguide.js new file mode 100644 index 0000000..414723c --- /dev/null +++ b/riot/bundles/c2932262ed6106cd4535/mobileguide.js @@ -0,0 +1,2 @@ +!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1894)}({100:function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},104:function(t,e,n){var r,i,o;i=[],void 0===(o="function"==typeof(r=function(){var t=XMLHttpRequest;if(!t)throw new Error("missing XMLHttpRequest");function e(o,a){if("function"!=typeof a)throw new Error("Bad callback given: "+a);if(!o)throw new Error("No options given");var s=o.onResponse;if((o="string"==typeof o?{uri:o}:JSON.parse(JSON.stringify(o))).onResponse=s,o.verbose&&(e.log=function(){var t,e,n={},o=["trace","debug","info","warn","error"];for(e=0;e<o.length;e++)n[t=o[e]]=r,"undefined"!=typeof console&&console&&console[t]&&(n[t]=i(console,t));return n}()),o.url&&(o.uri=o.url,delete o.url),!o.uri&&""!==o.uri)throw new Error("options.uri is a required argument");if("string"!=typeof o.uri)throw new Error("options.uri must be a string");for(var c=["proxy","_redirectsFollowed","maxRedirects","followRedirect"],u=0;u<c.length;u++)if(o[c[u]])throw new Error("options."+c[u]+" is not supported");if(o.callback=a,o.method=o.method||"GET",o.headers=o.headers||{},o.body=o.body||null,o.timeout=o.timeout||e.DEFAULT_TIMEOUT,o.headers.host)throw new Error("Options.headers.host is not supported");o.json&&(o.headers.accept=o.headers.accept||"application/json","GET"!==o.method&&(o.headers["content-type"]="application/json"),"boolean"!=typeof o.json?o.body=JSON.stringify(o.json):"string"!=typeof o.body&&(o.body=JSON.stringify(o.body)));var l=function(t){var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push(encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e.join("&")};if(o.qs){var f="string"==typeof o.qs?o.qs:l(o.qs);-1!==o.uri.indexOf("?")?o.uri=o.uri+"&"+f:o.uri=o.uri+"?"+f}if(o.form){if("string"==typeof o.form)throw"form name unsupported";if("POST"===o.method){var p=(o.encoding||"application/x-www-form-urlencoded").toLowerCase();switch(o.headers["content-type"]=p,p){case"application/x-www-form-urlencoded":o.body=l(o.form).replace(/%20/g,"+");break;case"multipart/form-data":var h=function(t){var e={};e.boundry="-------------------------------"+Math.floor(1e9*Math.random());var n=[];for(var r in t)t.hasOwnProperty(r)&&n.push("--"+e.boundry+'\nContent-Disposition: form-data; name="'+r+'"\n\n'+t[r]+"\n");return n.push("--"+e.boundry+"--"),e.body=n.join(""),e.length=e.body.length,e.type="multipart/form-data; boundary="+e.boundry,e}(o.form);o.body=h.body,o.headers["content-type"]=h.type;break;default:throw new Error("unsupported encoding:"+p)}}}return o.onResponse=o.onResponse||r,!0===o.onResponse&&(o.onResponse=a,o.callback=r),!o.headers.authorization&&o.auth&&(o.headers.authorization="Basic "+function(t){var e,n,r,i,o,a,s,c,u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",l=0,f=0,p="",h=[];if(!t)return t;do{e=t.charCodeAt(l++),n=t.charCodeAt(l++),r=t.charCodeAt(l++),i=(c=e<<16|n<<8|r)>>18&63,o=c>>12&63,a=c>>6&63,s=63&c,h[f++]=u.charAt(i)+u.charAt(o)+u.charAt(a)+u.charAt(s)}while(l<t.length);switch(p=h.join(""),t.length%3){case 1:p=p.slice(0,-2)+"==";break;case 2:p=p.slice(0,-1)+"="}return p}(o.auth.username+":"+o.auth.password)),function(r){var i=new t,o=!1,a=function(t){var e,n=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/;try{e=location.href}catch(t){(e=document.createElement("a")).href="",e=e.href}var r=n.exec(e.toLowerCase())||[],i=n.exec(t.toLowerCase());return!(!i||i[1]==r[1]&&i[2]==r[2]&&(i[3]||("http:"===i[1]?80:443))==(r[3]||("http:"===r[1]?80:443)))}(r.uri),s="withCredentials"in i;if(n+=1,i.seq_id=n,i.id=n+": "+r.method+" "+r.uri,i._id=i.id,a&&!s){var c=new Error("Browser does not support cross-origin request: "+r.uri);return c.cors="unsupported",r.callback(c,i)}i.timeoutTimer=setTimeout(function(){o=!0;var t=new Error("ETIMEDOUT");return t.code="ETIMEDOUT",t.duration=r.timeout,e.log.error("Timeout",{id:i._id,milliseconds:r.timeout}),r.callback(t,i)},r.timeout);var u={response:!1,loading:!1,end:!1};return i.onreadystatechange=function(n){if(o)return e.log.debug("Ignoring timed out state change",{state:i.readyState,id:i.id});if(e.log.debug("State change",{state:i.readyState,id:i.id,timed_out:o}),i.readyState===t.OPENED)for(var a in e.log.debug("Request started",{id:i.id}),r.headers)i.setRequestHeader(a,r.headers[a]);else i.readyState===t.HEADERS_RECEIVED?l():i.readyState===t.LOADING?(l(),f()):i.readyState===t.DONE&&(l(),f(),function(){if(!u.end){if(u.end=!0,e.log.debug("Request done",{id:i.id}),i.body=i.responseText,r.json)try{i.body=JSON.parse(i.responseText)}catch(t){return r.callback(t,i)}r.callback(null,i,i.body)}}())},i.open(r.method,r.uri,!0),a&&(i.withCredentials=!!r.withCredentials),i.send(r.body),i;function l(){if(!u.response){if(u.response=!0,e.log.debug("Got response",{id:i.id,status:i.status}),clearTimeout(i.timeoutTimer),i.statusCode=i.status,a&&0==i.statusCode){var t=new Error("CORS request rejected: "+r.uri);return t.cors="rejected",u.loading=!0,u.end=!0,r.callback(t,i)}r.onResponse(null,i)}}function f(){u.loading||(u.loading=!0,e.log.debug("Response body loading",{id:i.id}))}}(o)}e.log={trace:r,debug:r,info:r,warn:r,error:r};var n=0;function r(){}function i(t,e){return function(n,r){return"object"==typeof r&&(n+=" "+JSON.stringify(r)),t[e].call(t,n)}}return e.withCredentials=!1,e.DEFAULT_TIMEOUT=18e4,e.defaults=function(t,n){var r=function(e){return function(n,r){for(var i in n="string"==typeof n?{uri:n}:JSON.parse(JSON.stringify(n)),t)void 0===n[i]&&(n[i]=t[i]);return e(n,r)}},i=r(e);return i.get=r(e.get),i.post=r(e.post),i.put=r(e.put),i.head=r(e.head),i},["get","put","post","head"].forEach(function(t){var n=t.toUpperCase();e[t.toLowerCase()]=function(t){"string"==typeof t?t={method:n,uri:t}:(t=JSON.parse(JSON.stringify(t))).method=n;var r=[t].concat(Array.prototype.slice.apply(arguments,[1]));return e.apply(this,r)}}),e.couch=function(t,n){return"string"==typeof t&&(t={uri:t}),t.json=!0,t.body&&(t.json=t.body),delete t.body,n=n||r,e(t,function(t,e,r){if(t)return n(t,e,r);if((e.statusCode<200||e.statusCode>299)&&r.error){for(var i in t=new Error("CouchDB error: "+(r.error.reason||r.error.error)),r)t[i]=r[i];return n(t,e,r)}return n(t,e,r)})},e})?r.apply(e,i):r)||(t.exports=o)},114:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},115:function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},121:function(t,e,n){var r=n(34);t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},123:function(t,e,n){var r=n(114),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},124:function(t,e,n){var r=n(125)("keys"),i=n(100);t.exports=function(t){return r[t]||(r[t]=i(t))}},125:function(t,e,n){var r=n(18),i=n(33),o=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n(89)?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},126:function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},138:function(t,e,n){var r=n(34),i=n(33).document,o=r(i)&&r(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},14:function(t,e,n){t.exports={default:n(215),__esModule:!0}},16:function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},162:function(t,e,n){t.exports=!n(44)&&!n(56)(function(){return 7!=Object.defineProperty(n(138)("div"),"a",{get:function(){return 7}}).a})},163:function(t,e,n){var r=n(57),i=n(58),o=n(208)(!1),a=n(124)("IE_PROTO");t.exports=function(t,e){var n,s=i(t),c=0,u=[];for(n in s)n!=a&&r(s,n)&&u.push(n);for(;e.length>c;)r(s,n=e[c++])&&(~o(u,n)||u.push(n));return u}},164:function(t,e,n){var r=n(99);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},17:function(t,e,n){t.exports=n(211)},18:function(t,e){var n=t.exports={version:"2.5.7"};"number"==typeof __e&&(__e=n)},1894:function(t,e,n){"use strict";var r=function(t){return t&&t.__esModule?t:{default:t}}(n(17)),i=n(9),o=function(){var t=(0,i.coroutine)(r.default.mark(function t(){var e,n;return r.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return document.getElementById("back_to_riot_button").onclick=s,t.next=3,(0,i.resolve)((0,a.getVectorConfig)(".."));case 3:e=t.sent,n=void 0,e&&e.default_hs_url&&(n=e.default_hs_url),n&&!n.endsWith("/")&&(n+="/"),n&&"https://matrix.org/"!==n&&(document.getElementById("step2_container").style.display="block",document.getElementById("hs_url").innerHTML=n,document.getElementById("step_login_header").innerHTML="Step 3: Register or Log in");case 8:case"end":return t.stop()}},t,this)}));return function(){return t.apply(this,arguments)}}(),a=n(417);function s(){document.cookie="mobile_redirect_to_guide=false;path=/",window.location.href="../"}o()},208:function(t,e,n){var r=n(58),i=n(123),o=n(209);t.exports=function(t){return function(e,n,a){var s,c=r(e),u=i(c.length),l=o(a,u);if(t&&n!=n){for(;u>l;)if((s=c[l++])!=s)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}}},209:function(t,e,n){var r=n(114),i=Math.max,o=Math.min;t.exports=function(t,e){return(t=r(t))<0?i(t+e,0):o(t,e)}},211:function(t,e,n){var r=function(){return this}()||Function("return this")(),i=r.regeneratorRuntime&&Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime")>=0,o=i&&r.regeneratorRuntime;if(r.regeneratorRuntime=void 0,t.exports=n(212),i)r.regeneratorRuntime=o;else try{delete r.regeneratorRuntime}catch(t){r.regeneratorRuntime=void 0}},212:function(t,e){!function(e){"use strict";var n,r=Object.prototype,i=r.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag",u="object"==typeof t,l=e.regeneratorRuntime;if(l)u&&(t.exports=l);else{(l=e.regeneratorRuntime=u?t.exports:{}).wrap=b;var f="suspendedStart",p="suspendedYield",h="executing",d="completed",_={},v={};v[a]=function(){return this};var y=Object.getPrototypeOf,m=y&&y(y(S([])));m&&m!==r&&i.call(m,a)&&(v=m);var g=j.prototype=C.prototype=Object.create(v);E.prototype=g.constructor=j,j.constructor=E,j[c]=E.displayName="GeneratorFunction",l.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===E||"GeneratorFunction"===(e.displayName||e.name))},l.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,j):(t.__proto__=j,c in t||(t[c]="GeneratorFunction")),t.prototype=Object.create(g),t},l.awrap=function(t){return{__await:t}},k(x.prototype),x.prototype[s]=function(){return this},l.AsyncIterator=x,l.async=function(t,e,n,r){var i=new x(b(t,e,n,r));return l.isGeneratorFunction(e)?i:i.next().then(function(t){return t.done?t.value:i.next()})},k(g),g[c]="Generator",g[a]=function(){return this},g.toString=function(){return"[object Generator]"},l.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var r=e.pop();if(r in t)return n.value=r,n.done=!1,n}return n.done=!0,n}},l.values=S,P.prototype={constructor:P,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(O),!t)for(var e in this)"t"===e.charAt(0)&&i.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(r,i){return s.type="throw",s.arg=t,e.next=r,i&&(e.method="next",e.arg=n),!!i}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=i.call(a,"catchLoc"),u=i.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var o=r;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=t,a.arg=e,o?(this.method="next",this.next=o.finallyLoc,_):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),_},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),O(n),_}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;O(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:S(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=n),_}}}function b(t,e,n,r){var i=e&&e.prototype instanceof C?e:C,o=Object.create(i.prototype),a=new P(r||[]);return o._invoke=function(t,e,n){var r=f;return function(i,o){if(r===h)throw new Error("Generator is already running");if(r===d){if("throw"===i)throw o;return R()}for(n.method=i,n.arg=o;;){var a=n.delegate;if(a){var s=T(a,n);if(s){if(s===_)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===f)throw r=d,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=h;var c=w(t,e,n);if("normal"===c.type){if(r=n.done?d:p,c.arg===_)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r=d,n.method="throw",n.arg=c.arg)}}}(t,n,a),o}function w(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}function C(){}function E(){}function j(){}function k(t){["next","throw","return"].forEach(function(e){t[e]=function(t){return this._invoke(e,t)}})}function x(t){var e;this._invoke=function(n,r){function o(){return new Promise(function(e,o){!function e(n,r,o,a){var s=w(t[n],t,r);if("throw"!==s.type){var c=s.arg,u=c.value;return u&&"object"==typeof u&&i.call(u,"__await")?Promise.resolve(u.__await).then(function(t){e("next",t,o,a)},function(t){e("throw",t,o,a)}):Promise.resolve(u).then(function(t){c.value=t,o(c)},a)}a(s.arg)}(n,r,e,o)})}return e=e?e.then(o,o):o()}}function T(t,e){var r=t.iterator[e.method];if(r===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=n,T(t,e),"throw"===e.method))return _;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return _}var i=w(r,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,_;var o=i.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,_):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,_)}function F(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function O(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function P(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(F,this),this.reset(!0)}function S(t){if(t){var e=t[a];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function e(){for(;++r<t.length;)if(i.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=n,e.done=!0,e};return o.next=o}}return{next:R}}function R(){return{value:n,done:!0}}}(function(){return this}()||Function("return this")())},213:function(t,e,n){(function(t){var r=void 0!==t&&t||"undefined"!=typeof self&&self||window,i=Function.prototype.apply;function o(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new o(i.call(setTimeout,r,arguments),clearTimeout)},e.setInterval=function(){return new o(i.call(setInterval,r,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(r,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(214),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(16))},214:function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var r,i=1,o={},a=!1,s=t.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(t);c=c&&c.setTimeout?c:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick(function(){l(t)})}:function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?function(){var e="setImmediate$"+Math.random()+"$",n=function(n){n.source===t&&"string"==typeof n.data&&0===n.data.indexOf(e)&&l(+n.data.slice(e.length))};t.addEventListener?t.addEventListener("message",n,!1):t.attachEvent("onmessage",n),r=function(n){t.postMessage(e+n,"*")}}():t.MessageChannel?function(){var t=new MessageChannel;t.port1.onmessage=function(t){l(t.data)},r=function(e){t.port2.postMessage(e)}}():s&&"onreadystatechange"in s.createElement("script")?function(){var t=s.documentElement;r=function(e){var n=s.createElement("script");n.onreadystatechange=function(){l(e),n.onreadystatechange=null,t.removeChild(n),n=null},t.appendChild(n)}}():r=function(t){setTimeout(l,0,t)},c.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var a={callback:t,args:e};return o[i]=a,r(i),i++},c.clearImmediate=u}function u(t){delete o[t]}function l(t){if(a)setTimeout(l,0,t);else{var e=o[t];if(e){a=!0;try{!function(t){var e=t.callback,r=t.args;switch(r.length){case 0:e();break;case 1:e(r[0]);break;case 2:e(r[0],r[1]);break;case 3:e(r[0],r[1],r[2]);break;default:e.apply(n,r)}}(e)}finally{u(t),a=!1}}}}}("undefined"==typeof self?void 0===t?this:t:self)}).call(this,n(16),n(64))},215:function(t,e,n){n(216),t.exports=n(18).Object.keys},216:function(t,e,n){var r=n(90),i=n(76);n(68)("keys",function(){return function(t){return i(r(t))}})},27:function(t,e,n){var r=n(33),i=n(18),o=n(67),a=n(59),s=n(57),c=function(t,e,n){var u,l,f,p=t&c.F,h=t&c.G,d=t&c.S,_=t&c.P,v=t&c.B,y=t&c.W,m=h?i:i[e]||(i[e]={}),g=m.prototype,b=h?r:d?r[e]:(r[e]||{}).prototype;for(u in h&&(n=e),n)(l=!p&&b&&void 0!==b[u])&&s(m,u)||(f=l?b[u]:n[u],m[u]=h&&"function"!=typeof b[u]?n[u]:v&&l?o(f,r):y&&b[u]==f?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(f):_&&"function"==typeof f?o(Function.call,f):f,_&&((m.virtual||(m.virtual={}))[u]=f,t&c.R&&g&&!g[u]&&a(g,u,f)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},33:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},34:function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},417:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getVectorConfig=void 0;var r=c(n(17)),i=c(n(14)),o=n(9),a=c(o),s=(e.getVectorConfig=function(){var t=(0,o.coroutine)(r.default.mark(function t(e){var n;return r.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return void 0===e&&(e=""),""===e||e.endsWith("/")||(e+="/"),t.prev=2,t.next=5,(0,o.resolve)(u(e+"config."+document.domain+".json"));case 5:if(n=t.sent,0!==(0,i.default)(n).length){t.next=8;break}throw new Error;case 8:return t.abrupt("return",n);case 11:return t.prev=11,t.t0=t.catch(2),t.next=15,(0,o.resolve)(u(e+"config.json"));case 15:return t.abrupt("return",t.sent);case 16:case"end":return t.stop()}},t,this,[[2,11]])}));return function(e){return t.apply(this,arguments)}}(),c(n(104)));function c(t){return t&&t.__esModule?t:{default:t}}function u(t){return new a.default(function(e,n){(0,s.default)({method:"GET",url:t},function(t,r,i){if(t||r.status<200||r.status>=300)return r&&(404==r.status||0==r.status&&""==i)&&e({}),void n({err:t,response:r});e(JSON.parse(i))})})}},44:function(t,e,n){t.exports=!n(56)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},47:function(t,e,n){var r=n(52),i=n(162),o=n(121),a=Object.defineProperty;e.f=n(44)?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},52:function(t,e,n){var r=n(34);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},56:function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},57:function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},58:function(t,e,n){var r=n(164),i=n(115);t.exports=function(t){return r(i(t))}},59:function(t,e,n){var r=n(47),i=n(74);t.exports=n(44)?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},64:function(t,e){var n,r,i=t.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(t){n=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(t){r=a}}();var c,u=[],l=!1,f=-1;function p(){l&&c&&(l=!1,c.length?u=c.concat(u):f=-1,u.length&&h())}function h(){if(!l){var t=s(p);l=!0;for(var e=u.length;e;){for(c=u,u=[];++f<e;)c&&c[f].run();f=-1,e=u.length}c=null,l=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function d(t,e){this.fun=t,this.array=e}function _(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];u.push(new d(t,e)),1!==u.length||l||s(h)},d.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=_,i.addListener=_,i.once=_,i.off=_,i.removeListener=_,i.removeAllListeners=_,i.emit=_,i.prependListener=_,i.prependOnceListener=_,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},67:function(t,e,n){var r=n(98);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},68:function(t,e,n){var r=n(27),i=n(18),o=n(56);t.exports=function(t,e){var n=(i.Object||{})[t]||Object[t],a={};a[t]=e(n),r(r.S+r.F*o(function(){n(1)}),"Object",a)}},74:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},76:function(t,e,n){var r=n(163),i=n(126);t.exports=Object.keys||function(t){return r(t,i)}},89:function(t,e){t.exports=!0},9:function(t,e,n){(function(e,n,r){t.exports=function(){var t,i,o;return function t(e,n,r){function i(a,s){if(!n[a]){if(!e[a]){var c="function"==typeof _dereq_&&_dereq_;if(!s&&c)return c(a,!0);if(o)return o(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var l=n[a]={exports:{}};e[a][0].call(l.exports,function(t){var n=e[a][1][t];return i(n||t)},l,l.exports,t,e,n,r)}return n[a].exports}for(var o="function"==typeof _dereq_&&_dereq_,a=0;a<r.length;a++)i(r[a]);return i}({1:[function(t,e,n){"use strict";e.exports=function(t){var e=t._SomePromiseArray;function n(t){var n=new e(t),r=n.promise();return n.setHowMany(1),n.setUnwrap(),n.init(),r}t.any=function(t){return n(t)},t.prototype.any=function(){return n(this)}}},{}],2:[function(t,n,r){"use strict";var i;try{throw new Error}catch(t){i=t}var o=t("./schedule"),a=t("./queue"),s=t("./util");function c(){this._customScheduler=!1,this._isTickUsed=!1,this._lateQueue=new a(16),this._normalQueue=new a(16),this._haveDrainedQueues=!1,this._trampolineEnabled=!0;var t=this;this.drainQueues=function(){t._drainQueues()},this._schedule=o}function u(t,e,n){this._lateQueue.push(t,e,n),this._queueTick()}function l(t,e,n){this._normalQueue.push(t,e,n),this._queueTick()}function f(t){this._normalQueue._pushOne(t),this._queueTick()}function p(t){for(;t.length()>0;)h(t)}function h(t){var e=t.shift();if("function"!=typeof e)e._settlePromises();else{var n=t.shift(),r=t.shift();e.call(n,r)}}c.prototype.setScheduler=function(t){var e=this._schedule;return this._schedule=t,this._customScheduler=!0,e},c.prototype.hasCustomScheduler=function(){return this._customScheduler},c.prototype.enableTrampoline=function(){this._trampolineEnabled=!0},c.prototype.disableTrampolineIfNecessary=function(){s.hasDevTools&&(this._trampolineEnabled=!1)},c.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues},c.prototype.fatalError=function(t,n){n?(e.stderr.write("Fatal "+(t instanceof Error?t.stack:t)+"\n"),e.exit(2)):this.throwLater(t)},c.prototype.throwLater=function(t,e){if(1===arguments.length&&(e=t,t=function(){throw e}),"undefined"!=typeof setTimeout)setTimeout(function(){t(e)},0);else try{this._schedule(function(){t(e)})}catch(t){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}},s.hasDevTools?(c.prototype.invokeLater=function(t,e,n){this._trampolineEnabled?u.call(this,t,e,n):this._schedule(function(){setTimeout(function(){t.call(e,n)},100)})},c.prototype.invoke=function(t,e,n){this._trampolineEnabled?l.call(this,t,e,n):this._schedule(function(){t.call(e,n)})},c.prototype.settlePromises=function(t){this._trampolineEnabled?f.call(this,t):this._schedule(function(){t._settlePromises()})}):(c.prototype.invokeLater=u,c.prototype.invoke=l,c.prototype.settlePromises=f),c.prototype._drainQueues=function(){p(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,p(this._lateQueue)},c.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},c.prototype._reset=function(){this._isTickUsed=!1},n.exports=c,n.exports.firstLineError=i},{"./queue":26,"./schedule":29,"./util":36}],3:[function(t,e,n){"use strict";e.exports=function(t,e,n,r){var i=!1,o=function(t,e){this._reject(e)},a=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(o,o,null,this,t)},s=function(t,e){0==(50397184&this._bitField)&&this._resolveCallback(e.target)},c=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(o){i||(i=!0,t.prototype._propagateFrom=r.propagateFromFunction(),t.prototype._boundValue=r.boundValueFunction());var u=n(o),l=new t(e);l._propagateFrom(this,1);var f=this._target();if(l._setBoundTo(u),u instanceof t){var p={promiseRejectionQueued:!1,promise:l,target:f,bindingPromise:u};f._then(e,a,void 0,l,p),u._then(s,c,void 0,l,p),l._setOnCancel(u)}else l._resolveCallback(f);return l},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=2097152|this._bitField,this._boundTo=t):this._bitField=-2097153&this._bitField},t.prototype._isBound=function(){return 2097152==(2097152&this._bitField)},t.bind=function(e,n){return t.resolve(n).bind(e)}}},{}],4:[function(t,e,n){"use strict";var r;"undefined"!=typeof Promise&&(r=Promise);var i=t("./promise")();i.noConflict=function(){try{Promise===i&&(Promise=r)}catch(t){}return i},e.exports=i},{"./promise":22}],5:[function(t,e,n){"use strict";var r=Object.create;if(r){var i=r(null),o=r(null);i[" size"]=o[" size"]=0}e.exports=function(e){var n=t("./util"),r=n.canEvaluate;function i(t){var r=this.pop(),i=function(t,r){var i;if(null!=t&&(i=t[r]),"function"!=typeof i){var o="Object "+n.classString(t)+" has no method '"+n.toString(r)+"'";throw new e.TypeError(o)}return i}(t,r);return i.apply(t,this)}function o(t){return t[this]}function a(t){var e=+this;return e<0&&(e=Math.max(0,e+t.length)),t[e]}n.isIdentifier,e.prototype.call=function(t){var e=[].slice.call(arguments,1);return e.push(t),this._then(i,void 0,void 0,e,void 0)},e.prototype.get=function(t){var e,n="number"==typeof t;if(n)e=a;else if(r){var i=(void 0)(t);e=null!==i?i:o}else e=o;return this._then(e,void 0,void 0,t,void 0)}}},{"./util":36}],6:[function(t,e,n){"use strict";e.exports=function(e,n,r,i){var o=t("./util"),a=o.tryCatch,s=o.errorObj,c=e._async;e.prototype.break=e.prototype.cancel=function(){if(!i.cancellation())return this._warn("cancellation is disabled");for(var t=this,e=t;t._isCancellable();){if(!t._cancelBy(e)){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}var n=t._cancellationParent;if(null==n||!n._isCancellable()){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}t._isFollowing()&&t._followee().cancel(),t._setWillBeCancelled(),e=t,t=n}},e.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},e.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},e.prototype._cancelBy=function(t){return t===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},e.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},e.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),c.invoke(this._cancelPromises,this,void 0))},e.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},e.prototype._unsetOnCancel=function(){this._onCancelField=void 0},e.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},e.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},e.prototype._doInvokeOnCancel=function(t,e){if(o.isArray(t))for(var n=0;n<t.length;++n)this._doInvokeOnCancel(t[n],e);else if(void 0!==t)if("function"==typeof t){if(!e){var r=a(t).call(this._boundValue());r===s&&(this._attachExtraTrace(r.e),c.throwLater(r.e))}}else t._resultCancelled(this)},e.prototype._invokeOnCancel=function(){var t=this._onCancel();this._unsetOnCancel(),c.invoke(this._doInvokeOnCancel,this,t)},e.prototype._invokeInternalOnCancel=function(){this._isCancellable()&&(this._doInvokeOnCancel(this._onCancel(),!0),this._unsetOnCancel())},e.prototype._resultCancelled=function(){this.cancel()}}},{"./util":36}],7:[function(t,e,n){"use strict";e.exports=function(e){var n=t("./util"),r=t("./es5").keys,i=n.tryCatch,o=n.errorObj;return function(t,a,s){return function(c){var u=s._boundValue();t:for(var l=0;l<t.length;++l){var f=t[l];if(f===Error||null!=f&&f.prototype instanceof Error){if(c instanceof f)return i(a).call(u,c)}else if("function"==typeof f){var p=i(f).call(u,c);if(p===o)return p;if(p)return i(a).call(u,c)}else if(n.isObject(c)){for(var h=r(f),d=0;d<h.length;++d){var _=h[d];if(f[_]!=c[_])continue t}return i(a).call(u,c)}}return e}}}},{"./es5":13,"./util":36}],8:[function(t,e,n){"use strict";e.exports=function(t){var e=!1,n=[];function r(){this._trace=new r.CapturedTrace(i())}function i(){var t=n.length-1;if(t>=0)return n[t]}return t.prototype._promiseCreated=function(){},t.prototype._pushContext=function(){},t.prototype._popContext=function(){return null},t._peekContext=t.prototype._peekContext=function(){},r.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,n.push(this._trace))},r.prototype._popContext=function(){if(void 0!==this._trace){var t=n.pop(),e=t._promiseCreated;return t._promiseCreated=null,e}return null},r.CapturedTrace=null,r.create=function(){if(e)return new r},r.deactivateLongStackTraces=function(){},r.activateLongStackTraces=function(){var n=t.prototype._pushContext,o=t.prototype._popContext,a=t._peekContext,s=t.prototype._peekContext,c=t.prototype._promiseCreated;r.deactivateLongStackTraces=function(){t.prototype._pushContext=n,t.prototype._popContext=o,t._peekContext=a,t.prototype._peekContext=s,t.prototype._promiseCreated=c,e=!1},e=!0,t.prototype._pushContext=r.prototype._pushContext,t.prototype._popContext=r.prototype._popContext,t._peekContext=t.prototype._peekContext=i,t.prototype._promiseCreated=function(){var t=this._peekContext();t&&null==t._promiseCreated&&(t._promiseCreated=this)}},r}},{}],9:[function(t,n,r){"use strict";n.exports=function(n,r){var i,o,a,s=n._getDomain,c=n._async,u=t("./errors").Warning,l=t("./util"),f=t("./es5"),p=l.canAttachTrace,h=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,d=/\((?:timers\.js):\d+:\d+\)/,_=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,v=null,y=null,m=!1,g=!(0==l.env("BLUEBIRD_DEBUG")),b=!(0==l.env("BLUEBIRD_WARNINGS")||!g&&!l.env("BLUEBIRD_WARNINGS")),w=!(0==l.env("BLUEBIRD_LONG_STACK_TRACES")||!g&&!l.env("BLUEBIRD_LONG_STACK_TRACES")),C=0!=l.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(b||!!l.env("BLUEBIRD_W_FORGOTTEN_RETURN"));n.prototype.suppressUnhandledRejections=function(){var t=this._target();t._bitField=-1048577&t._bitField|524288},n.prototype._ensurePossibleRejectionHandled=function(){if(0==(524288&this._bitField)){this._setRejectionIsUnhandled();var t=this;setTimeout(function(){t._notifyUnhandledRejection()},1)}},n.prototype._notifyUnhandledRejectionIsHandled=function(){$("rejectionHandled",i,void 0,this)},n.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},n.prototype._returnedNonUndefined=function(){return 0!=(268435456&this._bitField)},n.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var t=this._settledValue();this._setUnhandledRejectionIsNotified(),$("unhandledRejection",o,t,this)}},n.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},n.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},n.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},n.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},n.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},n.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},n.prototype._warn=function(t,e,n){return U(t,e,n||this)},n.onPossiblyUnhandledRejection=function(t){var e=s();o="function"==typeof t?null===e?t:l.domainBind(e,t):void 0},n.onUnhandledRejectionHandled=function(t){var e=s();i="function"==typeof t?null===e?t:l.domainBind(e,t):void 0};var E=function(){};n.longStackTraces=function(){if(c.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!Z.longStackTraces&&z()){var t=n.prototype._captureStackTrace,e=n.prototype._attachExtraTrace,i=n.prototype._dereferenceTrace;Z.longStackTraces=!0,E=function(){if(c.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");n.prototype._captureStackTrace=t,n.prototype._attachExtraTrace=e,n.prototype._dereferenceTrace=i,r.deactivateLongStackTraces(),c.enableTrampoline(),Z.longStackTraces=!1},n.prototype._captureStackTrace=M,n.prototype._attachExtraTrace=V,n.prototype._dereferenceTrace=H,r.activateLongStackTraces(),c.disableTrampolineIfNecessary()}},n.hasLongStackTraces=function(){return Z.longStackTraces&&z()};var j=function(){try{if("function"==typeof CustomEvent){var t=new CustomEvent("CustomEvent");return l.global.dispatchEvent(t),function(t,e){var n={detail:e,cancelable:!0};f.defineProperty(n,"promise",{value:e.promise}),f.defineProperty(n,"reason",{value:e.reason});var r=new CustomEvent(t.toLowerCase(),n);return!l.global.dispatchEvent(r)}}if("function"==typeof Event){var t=new Event("CustomEvent");return l.global.dispatchEvent(t),function(t,e){var n=new Event(t.toLowerCase(),{cancelable:!0});return n.detail=e,f.defineProperty(n,"promise",{value:e.promise}),f.defineProperty(n,"reason",{value:e.reason}),!l.global.dispatchEvent(n)}}var t=document.createEvent("CustomEvent");return t.initCustomEvent("testingtheevent",!1,!0,{}),l.global.dispatchEvent(t),function(t,e){var n=document.createEvent("CustomEvent");return n.initCustomEvent(t.toLowerCase(),!1,!0,e),!l.global.dispatchEvent(n)}}catch(t){}return function(){return!1}}(),k=l.isNode?function(){return e.emit.apply(e,arguments)}:l.global?function(t){var e="on"+t.toLowerCase(),n=l.global[e];return!!n&&(n.apply(l.global,[].slice.call(arguments,1)),!0)}:function(){return!1};function x(t,e){return{promise:e}}var T={promiseCreated:x,promiseFulfilled:x,promiseRejected:x,promiseResolved:x,promiseCancelled:x,promiseChained:function(t,e,n){return{promise:e,child:n}},warning:function(t,e){return{warning:e}},unhandledRejection:function(t,e,n){return{reason:e,promise:n}},rejectionHandled:x},F=function(t){var e=!1;try{e=k.apply(null,arguments)}catch(t){c.throwLater(t),e=!0}var n=!1;try{n=j(t,T[t].apply(null,arguments))}catch(t){c.throwLater(t),n=!0}return n||e};function O(){return!1}function P(t,e,n){var r=this;try{t(e,n,function(t){if("function"!=typeof t)throw new TypeError("onCancel must be a function, got: "+l.toString(t));r._attachCancellationCallback(t)})}catch(t){return t}}function S(t){if(!this._isCancellable())return this;var e=this._onCancel();void 0!==e?l.isArray(e)?e.push(t):this._setOnCancel([e,t]):this._setOnCancel(t)}function R(){return this._onCancelField}function A(t){this._onCancelField=t}function L(){this._cancellationParent=void 0,this._onCancelField=void 0}function I(t,e){if(0!=(1&e)){this._cancellationParent=t;var n=t._branchesRemainingToCancel;void 0===n&&(n=0),t._branchesRemainingToCancel=n+1}0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}n.config=function(t){if("longStackTraces"in(t=Object(t))&&(t.longStackTraces?n.longStackTraces():!t.longStackTraces&&n.hasLongStackTraces()&&E()),"warnings"in t){var e=t.warnings;Z.warnings=!!e,C=Z.warnings,l.isObject(e)&&"wForgottenReturn"in e&&(C=!!e.wForgottenReturn)}if("cancellation"in t&&t.cancellation&&!Z.cancellation){if(c.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");n.prototype._clearCancellationData=L,n.prototype._propagateFrom=I,n.prototype._onCancel=R,n.prototype._setOnCancel=A,n.prototype._attachCancellationCallback=S,n.prototype._execute=P,N=I,Z.cancellation=!0}return"monitoring"in t&&(t.monitoring&&!Z.monitoring?(Z.monitoring=!0,n.prototype._fireEvent=F):!t.monitoring&&Z.monitoring&&(Z.monitoring=!1,n.prototype._fireEvent=O)),n},n.prototype._fireEvent=O,n.prototype._execute=function(t,e,n){try{t(e,n)}catch(t){return t}},n.prototype._onCancel=function(){},n.prototype._setOnCancel=function(t){},n.prototype._attachCancellationCallback=function(t){},n.prototype._captureStackTrace=function(){},n.prototype._attachExtraTrace=function(){},n.prototype._dereferenceTrace=function(){},n.prototype._clearCancellationData=function(){},n.prototype._propagateFrom=function(t,e){};var N=function(t,e){0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)};function D(){var t=this._boundTo;return void 0!==t&&t instanceof n?t.isFulfilled()?t.value():void 0:t}function M(){this._trace=new K(this._peekContext())}function V(t,e){if(p(t)){var n=this._trace;if(void 0!==n&&e&&(n=n._parent),void 0!==n)n.attachExtraTrace(t);else if(!t.__stackCleaned__){var r=q(t);l.notEnumerableProp(t,"stack",r.message+"\n"+r.stack.join("\n")),l.notEnumerableProp(t,"__stackCleaned__",!0)}}}function H(){this._trace=void 0}function U(t,e,r){if(Z.warnings){var i,o=new u(t);if(e)r._attachExtraTrace(o);else if(Z.longStackTraces&&(i=n._peekContext()))i.attachExtraTrace(o);else{var a=q(o);o.stack=a.message+"\n"+a.stack.join("\n")}F("warning",o)||G(o,"",!0)}}function B(t){for(var e=[],n=0;n<t.length;++n){var r=t[n],i=" (No stack trace)"===r||v.test(r),o=i&&W(r);i&&!o&&(m&&" "!==r.charAt(0)&&(r=" "+r),e.push(r))}return e}function q(t){var e=t.stack,n=t.toString();return e="string"==typeof e&&e.length>0?function(t){for(var e=t.stack.replace(/\s+$/g,"").split("\n"),n=0;n<e.length;++n){var r=e[n];if(" (No stack trace)"===r||v.test(r))break}return n>0&&"SyntaxError"!=t.name&&(e=e.slice(n)),e}(t):[" (No stack trace)"],{message:n,stack:"SyntaxError"==t.name?e:B(e)}}function G(t,e,n){if("undefined"!=typeof console){var r;if(l.isObject(t)){var i=t.stack;r=e+y(i,t)}else r=e+String(t);"function"==typeof a?a(r,n):"function"!=typeof console.log&&"object"!=typeof console.log||console.log(r)}}function $(t,e,n,r){var i=!1;try{"function"==typeof e&&(i=!0,"rejectionHandled"===t?e(r):e(n,r))}catch(t){c.throwLater(t)}"unhandledRejection"===t?F(t,n,r)||i||G(n,"Unhandled rejection "):F(t,r)}function Q(t){var e;if("function"==typeof t)e="[function "+(t.name||"anonymous")+"]";else{if(e=t&&"function"==typeof t.toString?t.toString():l.toString(t),/\[object [a-zA-Z0-9$_]+\]/.test(e))try{var n=JSON.stringify(t);e=n}catch(t){}0===e.length&&(e="(empty array)")}return"(<"+function(t){return t.length<41?t:t.substr(0,38)+"..."}(e)+">, no stack trace)"}function z(){return"function"==typeof Y}var W=function(){return!1},X=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function J(t){var e=t.match(X);if(e)return{fileName:e[1],line:parseInt(e[2],10)}}function K(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);Y(this,K),e>32&&this.uncycle()}l.inherits(K,Error),r.CapturedTrace=K,K.prototype.uncycle=function(){var t=this._length;if(!(t<2)){for(var e=[],n={},r=0,i=this;void 0!==i;++r)e.push(i),i=i._parent;for(var r=(t=this._length=r)-1;r>=0;--r){var o=e[r].stack;void 0===n[o]&&(n[o]=r)}for(var r=0;r<t;++r){var a=e[r].stack,s=n[a];if(void 0!==s&&s!==r){s>0&&(e[s-1]._parent=void 0,e[s-1]._length=1),e[r]._parent=void 0,e[r]._length=1;var c=r>0?e[r-1]:this;s<t-1?(c._parent=e[s+1],c._parent.uncycle(),c._length=c._parent._length+1):(c._parent=void 0,c._length=1);for(var u=c._length+1,l=r-2;l>=0;--l)e[l]._length=u,u++;return}}}},K.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var e=q(t),n=e.message,r=[e.stack],i=this;void 0!==i;)r.push(B(i.stack.split("\n"))),i=i._parent;!function(t){for(var e=t[0],n=1;n<t.length;++n){for(var r=t[n],i=e.length-1,o=e[i],a=-1,s=r.length-1;s>=0;--s)if(r[s]===o){a=s;break}for(var s=a;s>=0;--s){var c=r[s];if(e[i]!==c)break;e.pop(),i--}e=r}}(r),function(t){for(var e=0;e<t.length;++e)(0===t[e].length||e+1<t.length&&t[e][0]===t[e+1][0])&&(t.splice(e,1),e--)}(r),l.notEnumerableProp(t,"stack",function(t,e){for(var n=0;n<e.length-1;++n)e[n].push("From previous event:"),e[n]=e[n].join("\n");return n<e.length&&(e[n]=e[n].join("\n")),t+"\n"+e.join("\n")}(n,r)),l.notEnumerableProp(t,"__stackCleaned__",!0)}};var Y=function(){var t=/^\s*at\s*/,e=function(t,e){return"string"==typeof t?t:void 0!==e.name&&void 0!==e.message?e.toString():Q(e)};if("number"==typeof Error.stackTraceLimit&&"function"==typeof Error.captureStackTrace){Error.stackTraceLimit+=6,v=t,y=e;var n=Error.captureStackTrace;return W=function(t){return h.test(t)},function(t,e){Error.stackTraceLimit+=6,n(t,e),Error.stackTraceLimit-=6}}var r,i=new Error;if("string"==typeof i.stack&&i.stack.split("\n")[0].indexOf("stackDetection@")>=0)return v=/@/,y=e,m=!0,function(t){t.stack=(new Error).stack};try{throw new Error}catch(t){r="stack"in t}return"stack"in i||!r||"number"!=typeof Error.stackTraceLimit?(y=function(t,e){return"string"==typeof t?t:"object"!=typeof e&&"function"!=typeof e||void 0===e.name||void 0===e.message?Q(e):e.toString()},null):(v=t,y=e,function(t){Error.stackTraceLimit+=6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit-=6})}();"undefined"!=typeof console&&void 0!==console.warn&&(a=function(t){console.warn(t)},l.isNode&&e.stderr.isTTY?a=function(t,e){var n=e?"":"";console.warn(n+t+"\n")}:l.isNode||"string"!=typeof(new Error).stack||(a=function(t,e){console.warn("%c"+t,e?"color: darkorange":"color: red")}));var Z={warnings:b,longStackTraces:!1,cancellation:!1,monitoring:!1};return w&&n.longStackTraces(),{longStackTraces:function(){return Z.longStackTraces},warnings:function(){return Z.warnings},cancellation:function(){return Z.cancellation},monitoring:function(){return Z.monitoring},propagateFromFunction:function(){return N},boundValueFunction:function(){return D},checkForgottenReturns:function(t,e,n,r,i){if(void 0===t&&null!==e&&C){if(void 0!==i&&i._returnedNonUndefined())return;if(0==(65535&r._bitField))return;n&&(n+=" ");var o="",a="";if(e._trace){for(var s=e._trace.stack.split("\n"),c=B(s),u=c.length-1;u>=0;--u){var l=c[u];if(!d.test(l)){var f=l.match(_);f&&(o="at "+f[1]+":"+f[2]+":"+f[3]+" ");break}}if(c.length>0)for(var p=c[0],u=0;u<s.length;++u)if(s[u]===p){u>0&&(a="\n"+s[u-1]);break}}var h="a promise was created in a "+n+"handler "+o+"but was not returned from it, see http://goo.gl/rRqMUw"+a;r._warn(h,!0,e)}},setBounds:function(t,e){if(z()){for(var n,r,i=t.stack.split("\n"),o=e.stack.split("\n"),a=-1,s=-1,c=0;c<i.length;++c){var u=J(i[c]);if(u){n=u.fileName,a=u.line;break}}for(var c=0;c<o.length;++c){var u=J(o[c]);if(u){r=u.fileName,s=u.line;break}}a<0||s<0||!n||!r||n!==r||a>=s||(W=function(t){if(h.test(t))return!0;var e=J(t);return!!(e&&e.fileName===n&&a<=e.line&&e.line<=s)})}},warn:U,deprecated:function(t,e){var n=t+" is deprecated and will be removed in a future version.";return e&&(n+=" Use "+e+" instead."),U(n)},CapturedTrace:K,fireDomEvent:j,fireGlobalEvent:k}}},{"./errors":12,"./es5":13,"./util":36}],10:[function(t,e,n){"use strict";e.exports=function(t){function e(){return this.value}function n(){throw this.reason}t.prototype.return=t.prototype.thenReturn=function(n){return n instanceof t&&n.suppressUnhandledRejections(),this._then(e,void 0,void 0,{value:n},void 0)},t.prototype.throw=t.prototype.thenThrow=function(t){return this._then(n,void 0,void 0,{reason:t},void 0)},t.prototype.catchThrow=function(t){if(arguments.length<=1)return this._then(void 0,n,void 0,{reason:t},void 0);var e=arguments[1];return this.caught(t,function(){throw e})},t.prototype.catchReturn=function(n){if(arguments.length<=1)return n instanceof t&&n.suppressUnhandledRejections(),this._then(void 0,e,void 0,{value:n},void 0);var r=arguments[1];return r instanceof t&&r.suppressUnhandledRejections(),this.caught(n,function(){return r})}}},{}],11:[function(t,e,n){"use strict";e.exports=function(t,e){var n=t.reduce,r=t.all;function i(){return r(this)}t.prototype.each=function(t){return n(this,t,e,0)._then(i,void 0,void 0,this,void 0)},t.prototype.mapSeries=function(t){return n(this,t,e,e)},t.each=function(t,r){return n(t,r,e,0)._then(i,void 0,void 0,t,void 0)},t.mapSeries=function(t,r){return n(t,r,e,e)}}},{}],12:[function(t,e,n){"use strict";var r,i,o=t("./es5"),a=o.freeze,s=t("./util"),c=s.inherits,u=s.notEnumerableProp;function l(t,e){function n(r){if(!(this instanceof n))return new n(r);u(this,"message","string"==typeof r?r:e),u(this,"name",t),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return c(n,Error),n}var f=l("Warning","warning"),p=l("CancellationError","cancellation error"),h=l("TimeoutError","timeout error"),d=l("AggregateError","aggregate error");try{r=TypeError,i=RangeError}catch(t){r=l("TypeError","type error"),i=l("RangeError","range error")}for(var _="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),v=0;v<_.length;++v)"function"==typeof Array.prototype[_[v]]&&(d.prototype[_[v]]=Array.prototype[_[v]]);o.defineProperty(d.prototype,"length",{value:0,configurable:!1,writable:!0,enumerable:!0}),d.prototype.isOperational=!0;var y=0;function m(t){if(!(this instanceof m))return new m(t);u(this,"name","OperationalError"),u(this,"message",t),this.cause=t,this.isOperational=!0,t instanceof Error?(u(this,"message",t.message),u(this,"stack",t.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}d.prototype.toString=function(){var t=Array(4*y+1).join(" "),e="\n"+t+"AggregateError of:\n";y++,t=Array(4*y+1).join(" ");for(var n=0;n<this.length;++n){for(var r=this[n]===this?"[Circular AggregateError]":this[n]+"",i=r.split("\n"),o=0;o<i.length;++o)i[o]=t+i[o];r=i.join("\n"),e+=r+"\n"}return y--,e},c(m,Error);var g=Error.__BluebirdErrorTypes__;g||(g=a({CancellationError:p,TimeoutError:h,OperationalError:m,RejectionError:m,AggregateError:d}),o.defineProperty(Error,"__BluebirdErrorTypes__",{value:g,writable:!1,enumerable:!1,configurable:!1})),e.exports={Error:Error,TypeError:r,RangeError:i,CancellationError:g.CancellationError,OperationalError:g.OperationalError,TimeoutError:g.TimeoutError,AggregateError:g.AggregateError,Warning:f}},{"./es5":13,"./util":36}],13:[function(t,e,n){var r=function(){"use strict";return void 0===this}();if(r)e.exports={freeze:Object.freeze,defineProperty:Object.defineProperty,getDescriptor:Object.getOwnPropertyDescriptor,keys:Object.keys,names:Object.getOwnPropertyNames,getPrototypeOf:Object.getPrototypeOf,isArray:Array.isArray,isES5:r,propertyIsWritable:function(t,e){var n=Object.getOwnPropertyDescriptor(t,e);return!(n&&!n.writable&&!n.set)}};else{var i={}.hasOwnProperty,o={}.toString,a={}.constructor.prototype,s=function(t){var e=[];for(var n in t)i.call(t,n)&&e.push(n);return e};e.exports={isArray:function(t){try{return"[object Array]"===o.call(t)}catch(t){return!1}},keys:s,names:s,defineProperty:function(t,e,n){return t[e]=n.value,t},getDescriptor:function(t,e){return{value:t[e]}},freeze:function(t){return t},getPrototypeOf:function(t){try{return Object(t).constructor.prototype}catch(t){return a}},isES5:r,propertyIsWritable:function(){return!0}}}},{}],14:[function(t,e,n){"use strict";e.exports=function(t,e){var n=t.map;t.prototype.filter=function(t,r){return n(this,t,r,e)},t.filter=function(t,r,i){return n(t,r,i,e)}}},{}],15:[function(t,e,n){"use strict";e.exports=function(e,n,r){var i=t("./util"),o=e.CancellationError,a=i.errorObj,s=t("./catch_filter")(r);function c(t,e,n){this.promise=t,this.type=e,this.handler=n,this.called=!1,this.cancelPromise=null}function u(t){this.finallyHandler=t}function l(t,e){return null!=t.cancelPromise&&(arguments.length>1?t.cancelPromise._reject(e):t.cancelPromise._cancel(),t.cancelPromise=null,!0)}function f(){return h.call(this,this.promise._target()._settledValue())}function p(t){if(!l(this,t))return a.e=t,a}function h(t){var i=this.promise,s=this.handler;if(!this.called){this.called=!0;var c=this.isFinallyHandler()?s.call(i._boundValue()):s.call(i._boundValue(),t);if(c===r)return c;if(void 0!==c){i._setReturnedNonUndefined();var h=n(c,i);if(h instanceof e){if(null!=this.cancelPromise){if(h._isCancelled()){var d=new o("late cancellation observer");return i._attachExtraTrace(d),a.e=d,a}h.isPending()&&h._attachCancellationCallback(new u(this))}return h._then(f,p,void 0,this,void 0)}}}return i.isRejected()?(l(this),a.e=t,a):(l(this),t)}return c.prototype.isFinallyHandler=function(){return 0===this.type},u.prototype._resultCancelled=function(){l(this.finallyHandler)},e.prototype._passThrough=function(t,e,n,r){return"function"!=typeof t?this.then():this._then(n,r,void 0,new c(this,e,t),void 0)},e.prototype.lastly=e.prototype.finally=function(t){return this._passThrough(t,0,h,h)},e.prototype.tap=function(t){return this._passThrough(t,1,h)},e.prototype.tapCatch=function(t){var n=arguments.length;if(1===n)return this._passThrough(t,1,void 0,h);var r,o=new Array(n-1),a=0;for(r=0;r<n-1;++r){var c=arguments[r];if(!i.isObject(c))return e.reject(new TypeError("tapCatch statement predicate: expecting an object but got "+i.classString(c)));o[a++]=c}o.length=a;var u=arguments[r];return this._passThrough(s(o,u,this),1,void 0,h)},c}},{"./catch_filter":7,"./util":36}],16:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,a){var s=t("./errors"),c=s.TypeError,u=t("./util"),l=u.errorObj,f=u.tryCatch,p=[];function h(t,n,i,o){if(a.cancellation()){var s=new e(r),c=this._finallyPromise=new e(r);this._promise=s.lastly(function(){return c}),s._captureStackTrace(),s._setOnCancel(this)}else{var u=this._promise=new e(r);u._captureStackTrace()}this._stack=o,this._generatorFunction=t,this._receiver=n,this._generator=void 0,this._yieldHandlers="function"==typeof i?[i].concat(p):p,this._yieldedPromise=null,this._cancellationPhase=!1}u.inherits(h,o),h.prototype._isResolved=function(){return null===this._promise},h.prototype._cleanup=function(){this._promise=this._generator=null,a.cancellation()&&null!==this._finallyPromise&&(this._finallyPromise._fulfill(),this._finallyPromise=null)},h.prototype._promiseCancelled=function(){if(!this._isResolved()){var t,n=void 0!==this._generator.return;if(n)this._promise._pushContext(),t=f(this._generator.return).call(this._generator,void 0),this._promise._popContext();else{var r=new e.CancellationError("generator .return() sentinel");e.coroutine.returnSentinel=r,this._promise._attachExtraTrace(r),this._promise._pushContext(),t=f(this._generator.throw).call(this._generator,r),this._promise._popContext()}this._cancellationPhase=!0,this._yieldedPromise=null,this._continue(t)}},h.prototype._promiseFulfilled=function(t){this._yieldedPromise=null,this._promise._pushContext();var e=f(this._generator.next).call(this._generator,t);this._promise._popContext(),this._continue(e)},h.prototype._promiseRejected=function(t){this._yieldedPromise=null,this._promise._attachExtraTrace(t),this._promise._pushContext();var e=f(this._generator.throw).call(this._generator,t);this._promise._popContext(),this._continue(e)},h.prototype._resultCancelled=function(){if(this._yieldedPromise instanceof e){var t=this._yieldedPromise;this._yieldedPromise=null,t.cancel()}},h.prototype.promise=function(){return this._promise},h.prototype._run=function(){this._generator=this._generatorFunction.call(this._receiver),this._receiver=this._generatorFunction=void 0,this._promiseFulfilled(void 0)},h.prototype._continue=function(t){var n=this._promise;if(t===l)return this._cleanup(),this._cancellationPhase?n.cancel():n._rejectCallback(t.e,!1);var r=t.value;if(!0===t.done)return this._cleanup(),this._cancellationPhase?n.cancel():n._resolveCallback(r);var o=i(r,this._promise);if(o instanceof e||null!==(o=function(t,n,r){for(var o=0;o<n.length;++o){r._pushContext();var a=f(n[o])(t);if(r._popContext(),a===l){r._pushContext();var s=e.reject(l.e);return r._popContext(),s}var c=i(a,r);if(c instanceof e)return c}return null}(o,this._yieldHandlers,this._promise))){var a=(o=o._target())._bitField;0==(50397184&a)?(this._yieldedPromise=o,o._proxy(this,null)):0!=(33554432&a)?e._async.invoke(this._promiseFulfilled,this,o._value()):0!=(16777216&a)?e._async.invoke(this._promiseRejected,this,o._reason()):this._promiseCancelled()}else this._promiseRejected(new c("A value %s was yielded that could not be treated as a promise\n\n See http://goo.gl/MqrFmX\n\n".replace("%s",String(r))+"From coroutine:\n"+this._stack.split("\n").slice(1,-7).join("\n")))},e.coroutine=function(t,e){if("function"!=typeof t)throw new c("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");var n=Object(e).yieldHandler,r=h,i=(new Error).stack;return function(){var e=t.apply(this,arguments),o=new r(void 0,void 0,n,i),a=o.promise();return o._generator=e,o._promiseFulfilled(void 0),a}},e.coroutine.addYieldHandler=function(t){if("function"!=typeof t)throw new c("expecting a function but got "+u.classString(t));p.push(t)},e.spawn=function(t){if(a.deprecated("Promise.spawn()","Promise.coroutine()"),"function"!=typeof t)return n("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");var r=new h(t,this),i=r.promise();return r._run(e.spawn),i}}},{"./errors":12,"./util":36}],17:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,a){var s=t("./util");s.canEvaluate,s.tryCatch,s.errorObj,e.join=function(){var t,e=arguments.length-1;e>0&&"function"==typeof arguments[e]&&(t=arguments[e]);var r=[].slice.call(arguments);t&&r.pop();var i=new n(r).promise();return void 0!==t?i.spread(t):i}}},{"./util":36}],18:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,a){var s=e._getDomain,c=t("./util"),u=c.tryCatch,l=c.errorObj,f=e._async;function p(t,e,n,r){this.constructor$(t),this._promise._captureStackTrace();var i=s();this._callback=null===i?e:c.domainBind(i,e),this._preservedValues=r===o?new Array(this.length()):null,this._limit=n,this._inFlight=0,this._queue=[],f.invoke(this._asyncInit,this,void 0)}function h(t,n,i,o){if("function"!=typeof n)return r("expecting a function but got "+c.classString(n));var a=0;if(void 0!==i){if("object"!=typeof i||null===i)return e.reject(new TypeError("options argument must be an object but it is "+c.classString(i)));if("number"!=typeof i.concurrency)return e.reject(new TypeError("'concurrency' must be a number but it is "+c.classString(i.concurrency)));a=i.concurrency}return a="number"==typeof a&&isFinite(a)&&a>=1?a:0,new p(t,n,a,o).promise()}c.inherits(p,n),p.prototype._asyncInit=function(){this._init$(void 0,-2)},p.prototype._init=function(){},p.prototype._promiseFulfilled=function(t,n){var r=this._values,o=this.length(),s=this._preservedValues,c=this._limit;if(n<0){if(r[n=-1*n-1]=t,c>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(c>=1&&this._inFlight>=c)return r[n]=t,this._queue.push(n),!1;null!==s&&(s[n]=t);var f=this._promise,p=this._callback,h=f._boundValue();f._pushContext();var d=u(p).call(h,t,n,o),_=f._popContext();if(a.checkForgottenReturns(d,_,null!==s?"Promise.filter":"Promise.map",f),d===l)return this._reject(d.e),!0;var v=i(d,this._promise);if(v instanceof e){var y=(v=v._target())._bitField;if(0==(50397184&y))return c>=1&&this._inFlight++,r[n]=v,v._proxy(this,-1*(n+1)),!1;if(0==(33554432&y))return 0!=(16777216&y)?(this._reject(v._reason()),!0):(this._cancel(),!0);d=v._value()}r[n]=d}var m=++this._totalResolved;return m>=o&&(null!==s?this._filter(r,s):this._resolve(r),!0)},p.prototype._drainQueue=function(){for(var t=this._queue,e=this._limit,n=this._values;t.length>0&&this._inFlight<e;){if(this._isResolved())return;var r=t.pop();this._promiseFulfilled(n[r],r)}},p.prototype._filter=function(t,e){for(var n=e.length,r=new Array(n),i=0,o=0;o<n;++o)t[o]&&(r[i++]=e[o]);r.length=i,this._resolve(r)},p.prototype.preservedValues=function(){return this._preservedValues},e.prototype.map=function(t,e){return h(this,t,e,null)},e.map=function(t,e,n,r){return h(t,e,n,r)}}},{"./util":36}],19:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o){var a=t("./util"),s=a.tryCatch;e.method=function(t){if("function"!=typeof t)throw new e.TypeError("expecting a function but got "+a.classString(t));return function(){var r=new e(n);r._captureStackTrace(),r._pushContext();var i=s(t).apply(this,arguments),a=r._popContext();return o.checkForgottenReturns(i,a,"Promise.method",r),r._resolveFromSyncValue(i),r}},e.attempt=e.try=function(t){if("function"!=typeof t)return i("expecting a function but got "+a.classString(t));var r,c=new e(n);if(c._captureStackTrace(),c._pushContext(),arguments.length>1){o.deprecated("calling Promise.try with more than 1 argument");var u=arguments[1],l=arguments[2];r=a.isArray(u)?s(t).apply(l,u):s(t).call(l,u)}else r=s(t)();var f=c._popContext();return o.checkForgottenReturns(r,f,"Promise.try",c),c._resolveFromSyncValue(r),c},e.prototype._resolveFromSyncValue=function(t){t===a.errorObj?this._rejectCallback(t.e,!1):this._resolveCallback(t,!0)}}},{"./util":36}],20:[function(t,e,n){"use strict";var r=t("./util"),i=r.maybeWrapAsError,o=t("./errors"),a=o.OperationalError,s=t("./es5"),c=/^(?:name|message|stack|cause)$/;function u(t){var e;if(function(t){return t instanceof Error&&s.getPrototypeOf(t)===Error.prototype}(t)){(e=new a(t)).name=t.name,e.message=t.message,e.stack=t.stack;for(var n=s.keys(t),i=0;i<n.length;++i){var o=n[i];c.test(o)||(e[o]=t[o])}return e}return r.markAsOriginatingFromRejection(t),t}e.exports=function(t,e){return function(n,r){if(null!==t){if(n){var o=u(i(n));t._attachExtraTrace(o),t._reject(o)}else if(e){var a=[].slice.call(arguments,1);t._fulfill(a)}else t._fulfill(r);t=null}}}},{"./errors":12,"./es5":13,"./util":36}],21:[function(t,e,n){"use strict";e.exports=function(e){var n=t("./util"),r=e._async,i=n.tryCatch,o=n.errorObj;function a(t,e){if(!n.isArray(t))return s.call(this,t,e);var a=i(e).apply(this._boundValue(),[null].concat(t));a===o&&r.throwLater(a.e)}function s(t,e){var n=this._boundValue(),a=void 0===t?i(e).call(n,null):i(e).call(n,null,t);a===o&&r.throwLater(a.e)}function c(t,e){if(!t){var n=new Error(t+"");n.cause=t,t=n}var a=i(e).call(this._boundValue(),t);a===o&&r.throwLater(a.e)}e.prototype.asCallback=e.prototype.nodeify=function(t,e){if("function"==typeof t){var n=s;void 0!==e&&Object(e).spread&&(n=a),this._then(n,c,void 0,this,t)}return this}}},{"./util":36}],22:[function(t,n,r){"use strict";n.exports=function(){var r=function(){return new d("circular promise resolution chain\n\n See http://goo.gl/MqrFmX\n")},i=function(){return new O.PromiseInspection(this._target())},o=function(t){return O.reject(new d(t))};function a(){}var s,c={},u=t("./util");s=u.isNode?function(){var t=e.domain;return void 0===t&&(t=null),t}:function(){return null},u.notEnumerableProp(O,"_getDomain",s);var l=t("./es5"),f=t("./async"),p=new f;l.defineProperty(O,"_async",{value:p});var h=t("./errors"),d=O.TypeError=h.TypeError;O.RangeError=h.RangeError;var _=O.CancellationError=h.CancellationError;O.TimeoutError=h.TimeoutError,O.OperationalError=h.OperationalError,O.RejectionError=h.OperationalError,O.AggregateError=h.AggregateError;var v=function(){},y={},m={},g=t("./thenables")(O,v),b=t("./promise_array")(O,v,g,o,a),w=t("./context")(O),C=w.create,E=t("./debuggability")(O,w),j=(E.CapturedTrace,t("./finally")(O,g,m)),k=t("./catch_filter")(m),x=t("./nodeback"),T=u.errorObj,F=u.tryCatch;function O(t){t!==v&&function(t,e){if(null==t||t.constructor!==O)throw new d("the promise constructor cannot be invoked directly\n\n See http://goo.gl/MqrFmX\n");if("function"!=typeof e)throw new d("expecting a function but got "+u.classString(e))}(this,t),this._bitField=0,this._fulfillmentHandler0=void 0,this._rejectionHandler0=void 0,this._promise0=void 0,this._receiver0=void 0,this._resolveFromExecutor(t),this._promiseCreated(),this._fireEvent("promiseCreated",this)}function P(t){this.promise._resolveCallback(t)}function S(t){this.promise._rejectCallback(t,!1)}function R(t){var e=new O(v);e._fulfillmentHandler0=t,e._rejectionHandler0=t,e._promise0=t,e._receiver0=t}return O.prototype.toString=function(){return"[object Promise]"},O.prototype.caught=O.prototype.catch=function(t){var e=arguments.length;if(e>1){var n,r=new Array(e-1),i=0;for(n=0;n<e-1;++n){var a=arguments[n];if(!u.isObject(a))return o("Catch statement predicate: expecting an object but got "+u.classString(a));r[i++]=a}return r.length=i,t=arguments[n],this.then(void 0,k(r,t,this))}return this.then(void 0,t)},O.prototype.reflect=function(){return this._then(i,i,void 0,this,void 0)},O.prototype.then=function(t,e){if(E.warnings()&&arguments.length>0&&"function"!=typeof t&&"function"!=typeof e){var n=".then() only accepts functions but was passed: "+u.classString(t);arguments.length>1&&(n+=", "+u.classString(e)),this._warn(n)}return this._then(t,e,void 0,void 0,void 0)},O.prototype.done=function(t,e){var n=this._then(t,e,void 0,void 0,void 0);n._setIsFinal()},O.prototype.spread=function(t){return"function"!=typeof t?o("expecting a function but got "+u.classString(t)):this.all()._then(t,void 0,void 0,y,void 0)},O.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},O.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new b(this).promise()},O.prototype.error=function(t){return this.caught(u.originatesFromRejection,t)},O.getNewLibraryCopy=n.exports,O.is=function(t){return t instanceof O},O.fromNode=O.fromCallback=function(t){var e=new O(v);e._captureStackTrace();var n=arguments.length>1&&!!Object(arguments[1]).multiArgs,r=F(t)(x(e,n));return r===T&&e._rejectCallback(r.e,!0),e._isFateSealed()||e._setAsyncGuaranteed(),e},O.all=function(t){return new b(t).promise()},O.cast=function(t){var e=g(t);return e instanceof O||((e=new O(v))._captureStackTrace(),e._setFulfilled(),e._rejectionHandler0=t),e},O.resolve=O.fulfilled=O.cast,O.reject=O.rejected=function(t){var e=new O(v);return e._captureStackTrace(),e._rejectCallback(t,!0),e},O.setScheduler=function(t){if("function"!=typeof t)throw new d("expecting a function but got "+u.classString(t));return p.setScheduler(t)},O.prototype._then=function(t,e,n,r,i){var o=void 0!==i,a=o?i:new O(v),c=this._target(),l=c._bitField;o||(a._propagateFrom(this,3),a._captureStackTrace(),void 0===r&&0!=(2097152&this._bitField)&&(r=0!=(50397184&l)?this._boundValue():c===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,a));var f=s();if(0!=(50397184&l)){var h,d,y=c._settlePromiseCtx;0!=(33554432&l)?(d=c._rejectionHandler0,h=t):0!=(16777216&l)?(d=c._fulfillmentHandler0,h=e,c._unsetRejectionIsUnhandled()):(y=c._settlePromiseLateCancellationObserver,d=new _("late cancellation observer"),c._attachExtraTrace(d),h=e),p.invoke(y,c,{handler:null===f?h:"function"==typeof h&&u.domainBind(f,h),promise:a,receiver:r,value:d})}else c._addCallbacks(t,e,a,r,f);return a},O.prototype._length=function(){return 65535&this._bitField},O.prototype._isFateSealed=function(){return 0!=(117506048&this._bitField)},O.prototype._isFollowing=function(){return 67108864==(67108864&this._bitField)},O.prototype._setLength=function(t){this._bitField=-65536&this._bitField|65535&t},O.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},O.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},O.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},O.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},O.prototype._isFinal=function(){return(4194304&this._bitField)>0},O.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},O.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},O.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},O.prototype._setAsyncGuaranteed=function(){p.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},O.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[4*t-4+3];if(e!==c)return void 0===e&&this._isBound()?this._boundValue():e},O.prototype._promiseAt=function(t){return this[4*t-4+2]},O.prototype._fulfillmentHandlerAt=function(t){return this[4*t-4+0]},O.prototype._rejectionHandlerAt=function(t){return this[4*t-4+1]},O.prototype._boundValue=function(){},O.prototype._migrateCallback0=function(t){t._bitField;var e=t._fulfillmentHandler0,n=t._rejectionHandler0,r=t._promise0,i=t._receiverAt(0);void 0===i&&(i=c),this._addCallbacks(e,n,r,i,null)},O.prototype._migrateCallbackAt=function(t,e){var n=t._fulfillmentHandlerAt(e),r=t._rejectionHandlerAt(e),i=t._promiseAt(e),o=t._receiverAt(e);void 0===o&&(o=c),this._addCallbacks(n,r,i,o,null)},O.prototype._addCallbacks=function(t,e,n,r,i){var o=this._length();if(o>=65531&&(o=0,this._setLength(0)),0===o)this._promise0=n,this._receiver0=r,"function"==typeof t&&(this._fulfillmentHandler0=null===i?t:u.domainBind(i,t)),"function"==typeof e&&(this._rejectionHandler0=null===i?e:u.domainBind(i,e));else{var a=4*o-4;this[a+2]=n,this[a+3]=r,"function"==typeof t&&(this[a+0]=null===i?t:u.domainBind(i,t)),"function"==typeof e&&(this[a+1]=null===i?e:u.domainBind(i,e))}return this._setLength(o+1),o},O.prototype._proxy=function(t,e){this._addCallbacks(void 0,void 0,e,t,null)},O.prototype._resolveCallback=function(t,e){if(0==(117506048&this._bitField)){if(t===this)return this._rejectCallback(r(),!1);var n=g(t,this);if(!(n instanceof O))return this._fulfill(t);e&&this._propagateFrom(n,2);var i=n._target();if(i!==this){var o=i._bitField;if(0==(50397184&o)){var a=this._length();a>0&&i._migrateCallback0(this);for(var s=1;s<a;++s)i._migrateCallbackAt(this,s);this._setFollowing(),this._setLength(0),this._setFollowee(i)}else if(0!=(33554432&o))this._fulfill(i._value());else if(0!=(16777216&o))this._reject(i._reason());else{var c=new _("late cancellation observer");i._attachExtraTrace(c),this._reject(c)}}else this._reject(r())}},O.prototype._rejectCallback=function(t,e,n){var r=u.ensureErrorObject(t),i=r===t;if(!i&&!n&&E.warnings()){var o="a promise was rejected with a non-error: "+u.classString(t);this._warn(o,!0)}this._attachExtraTrace(r,!!e&&i),this._reject(t)},O.prototype._resolveFromExecutor=function(t){if(t!==v){var e=this;this._captureStackTrace(),this._pushContext();var n=!0,r=this._execute(t,function(t){e._resolveCallback(t)},function(t){e._rejectCallback(t,n)});n=!1,this._popContext(),void 0!==r&&e._rejectCallback(r,!0)}},O.prototype._settlePromiseFromHandler=function(t,e,n,r){var i=r._bitField;if(0==(65536&i)){var o;r._pushContext(),e===y?n&&"number"==typeof n.length?o=F(t).apply(this._boundValue(),n):(o=T).e=new d("cannot .spread() a non-array: "+u.classString(n)):o=F(t).call(e,n);var a=r._popContext();0==(65536&(i=r._bitField))&&(o===m?r._reject(n):o===T?r._rejectCallback(o.e,!1):(E.checkForgottenReturns(o,a,"",r,this),r._resolveCallback(o)))}},O.prototype._target=function(){for(var t=this;t._isFollowing();)t=t._followee();return t},O.prototype._followee=function(){return this._rejectionHandler0},O.prototype._setFollowee=function(t){this._rejectionHandler0=t},O.prototype._settlePromise=function(t,e,n,r){var o=t instanceof O,s=this._bitField,c=0!=(134217728&s);0!=(65536&s)?(o&&t._invokeInternalOnCancel(),n instanceof j&&n.isFinallyHandler()?(n.cancelPromise=t,F(e).call(n,r)===T&&t._reject(T.e)):e===i?t._fulfill(i.call(n)):n instanceof a?n._promiseCancelled(t):o||t instanceof b?t._cancel():n.cancel()):"function"==typeof e?o?(c&&t._setAsyncGuaranteed(),this._settlePromiseFromHandler(e,n,r,t)):e.call(n,r,t):n instanceof a?n._isResolved()||(0!=(33554432&s)?n._promiseFulfilled(r,t):n._promiseRejected(r,t)):o&&(c&&t._setAsyncGuaranteed(),0!=(33554432&s)?t._fulfill(r):t._reject(r))},O.prototype._settlePromiseLateCancellationObserver=function(t){var e=t.handler,n=t.promise,r=t.receiver,i=t.value;"function"==typeof e?n instanceof O?this._settlePromiseFromHandler(e,r,i,n):e.call(r,i,n):n instanceof O&&n._reject(i)},O.prototype._settlePromiseCtx=function(t){this._settlePromise(t.promise,t.handler,t.receiver,t.value)},O.prototype._settlePromise0=function(t,e,n){var r=this._promise0,i=this._receiverAt(0);this._promise0=void 0,this._receiver0=void 0,this._settlePromise(r,t,i,e)},O.prototype._clearCallbackDataAtIndex=function(t){var e=4*t-4;this[e+2]=this[e+3]=this[e+0]=this[e+1]=void 0},O.prototype._fulfill=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(t===this){var n=r();return this._attachExtraTrace(n),this._reject(n)}this._setFulfilled(),this._rejectionHandler0=t,(65535&e)>0&&(0!=(134217728&e)?this._settlePromises():p.settlePromises(this),this._dereferenceTrace())}},O.prototype._reject=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=t,this._isFinal())return p.fatalError(t,u.isNode);(65535&e)>0?p.settlePromises(this):this._ensurePossibleRejectionHandled()}},O.prototype._fulfillPromises=function(t,e){for(var n=1;n<t;n++){var r=this._fulfillmentHandlerAt(n),i=this._promiseAt(n),o=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(i,r,o,e)}},O.prototype._rejectPromises=function(t,e){for(var n=1;n<t;n++){var r=this._rejectionHandlerAt(n),i=this._promiseAt(n),o=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(i,r,o,e)}},O.prototype._settlePromises=function(){var t=this._bitField,e=65535&t;if(e>0){if(0!=(16842752&t)){var n=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,n,t),this._rejectPromises(e,n)}else{var r=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,r,t),this._fulfillPromises(e,r)}this._setLength(0)}this._clearCancellationData()},O.prototype._settledValue=function(){var t=this._bitField;return 0!=(33554432&t)?this._rejectionHandler0:0!=(16777216&t)?this._fulfillmentHandler0:void 0},O.defer=O.pending=function(){E.deprecated("Promise.defer","new Promise");var t=new O(v);return{promise:t,resolve:P,reject:S}},u.notEnumerableProp(O,"_makeSelfResolutionError",r),t("./method")(O,v,g,o,E),t("./bind")(O,v,g,E),t("./cancel")(O,b,o,E),t("./direct_resolve")(O),t("./synchronous_inspection")(O),t("./join")(O,b,g,v,p,s),O.Promise=O,O.version="3.5.2",t("./map.js")(O,b,o,g,v,E),t("./call_get.js")(O),t("./using.js")(O,o,g,C,v,E),t("./timers.js")(O,v,E),t("./generators.js")(O,o,v,g,a,E),t("./nodeify.js")(O),t("./promisify.js")(O,v),t("./props.js")(O,b,g,o),t("./race.js")(O,v,g,o),t("./reduce.js")(O,b,o,g,v,E),t("./settle.js")(O,b,E),t("./some.js")(O,b,o),t("./filter.js")(O,v),t("./each.js")(O,v),t("./any.js")(O),u.toFastProperties(O),u.toFastProperties(O.prototype),R({a:1}),R({b:2}),R({c:3}),R(1),R(function(){}),R(void 0),R(!1),R(new O(v)),E.setBounds(f.firstLineError,u.lastLineError),O}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o){var a=t("./util");function s(t){var r=this._promise=new e(n);t instanceof e&&r._propagateFrom(t,3),r._setOnCancel(this),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}return a.isArray,a.inherits(s,o),s.prototype.length=function(){return this._length},s.prototype.promise=function(){return this._promise},s.prototype._init=function t(n,o){var s=r(this._values,this._promise);if(s instanceof e){var c=(s=s._target())._bitField;if(this._values=s,0==(50397184&c))return this._promise._setAsyncGuaranteed(),s._then(t,this._reject,void 0,this,o);if(0==(33554432&c))return 0!=(16777216&c)?this._reject(s._reason()):this._cancel();s=s._value()}if(null!==(s=a.asArray(s)))0!==s.length?this._iterate(s):-5===o?this._resolveEmptyArray():this._resolve(function(t){switch(t){case-2:return[];case-3:return{};case-6:return new Map}}(o));else{var u=i("expecting an array or an iterable object but got "+a.classString(s)).reason();this._promise._rejectCallback(u,!1)}},s.prototype._iterate=function(t){var n=this.getActualLength(t.length);this._length=n,this._values=this.shouldCopyValues()?new Array(n):this._values;for(var i=this._promise,o=!1,a=null,s=0;s<n;++s){var c=r(t[s],i);c instanceof e?(c=c._target(),a=c._bitField):a=null,o?null!==a&&c.suppressUnhandledRejections():null!==a?0==(50397184&a)?(c._proxy(this,s),this._values[s]=c):o=0!=(33554432&a)?this._promiseFulfilled(c._value(),s):0!=(16777216&a)?this._promiseRejected(c._reason(),s):this._promiseCancelled(s):o=this._promiseFulfilled(c,s)}o||i._setAsyncGuaranteed()},s.prototype._isResolved=function(){return null===this._values},s.prototype._resolve=function(t){this._values=null,this._promise._fulfill(t)},s.prototype._cancel=function(){!this._isResolved()&&this._promise._isCancellable()&&(this._values=null,this._promise._cancel())},s.prototype._reject=function(t){this._values=null,this._promise._rejectCallback(t,!1)},s.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;return n>=this._length&&(this._resolve(this._values),!0)},s.prototype._promiseCancelled=function(){return this._cancel(),!0},s.prototype._promiseRejected=function(t){return this._totalResolved++,this._reject(t),!0},s.prototype._resultCancelled=function(){if(!this._isResolved()){var t=this._values;if(this._cancel(),t instanceof e)t.cancel();else for(var n=0;n<t.length;++n)t[n]instanceof e&&t[n].cancel()}},s.prototype.shouldCopyValues=function(){return!0},s.prototype.getActualLength=function(t){return t},s}},{"./util":36}],24:[function(t,e,n){"use strict";e.exports=function(e,n){var r={},i=t("./util"),o=t("./nodeback"),a=i.withAppended,s=i.maybeWrapAsError,c=i.canEvaluate,u=t("./errors").TypeError,l={__isPromisified__:!0},f=new RegExp("^(?:"+["arity","length","name","arguments","caller","callee","prototype","__isPromisified__"].join("|")+")$"),p=function(t){return i.isIdentifier(t)&&"_"!==t.charAt(0)&&"constructor"!==t};function h(t){return!f.test(t)}function d(t){try{return!0===t.__isPromisified__}catch(t){return!1}}function _(t,e,n){var r=i.getDataPropertyOrDefault(t,e+n,l);return!!r&&d(r)}function v(t,e,n,r){for(var o=i.inheritedDataKeys(t),a=[],s=0;s<o.length;++s){var c=o[s],l=t[c],f=r===p||p(c,l,t);"function"!=typeof l||d(l)||_(t,c,e)||!r(c,l,t,f)||a.push(c,l)}return function(t,e,n){for(var r=0;r<t.length;r+=2){var i=t[r];if(n.test(i))for(var o=i.replace(n,""),a=0;a<t.length;a+=2)if(t[a]===o)throw new u("Cannot promisify an API that has normal methods with '%s'-suffix\n\n See http://goo.gl/MqrFmX\n".replace("%s",e))}}(a,e,n),a}var y=function(t){return t.replace(/([$])/,"\\$")},m=c?void 0:function(t,c,u,l,f,p){var h=function(){return this}(),d=t;function _(){var i=c;c===r&&(i=this);var u=new e(n);u._captureStackTrace();var l="string"==typeof d&&this!==h?this[d]:t,f=o(u,p);try{l.apply(i,a(arguments,f))}catch(t){u._rejectCallback(s(t),!0,!0)}return u._isFateSealed()||u._setAsyncGuaranteed(),u}return"string"==typeof d&&(t=l),i.notEnumerableProp(_,"__isPromisified__",!0),_};function g(t,e,n,o,a){for(var s=new RegExp(y(e)+"$"),c=v(t,e,s,n),u=0,l=c.length;u<l;u+=2){var f=c[u],p=c[u+1],h=f+e;if(o===m)t[h]=m(f,r,f,p,e,a);else{var d=o(p,function(){return m(f,r,f,p,e,a)});i.notEnumerableProp(d,"__isPromisified__",!0),t[h]=d}}return i.toFastProperties(t),t}e.promisify=function(t,e){if("function"!=typeof t)throw new u("expecting a function but got "+i.classString(t));if(d(t))return t;var n=void 0===(e=Object(e)).context?r:e.context,o=!!e.multiArgs,a=function(t,e,n){return m(t,e,void 0,t,null,n)}(t,n,o);return i.copyDescriptors(t,a,h),a},e.promisifyAll=function(t,e){if("function"!=typeof t&&"object"!=typeof t)throw new u("the target of promisifyAll must be an object or a function\n\n See http://goo.gl/MqrFmX\n");var n=!!(e=Object(e)).multiArgs,r=e.suffix;"string"!=typeof r&&(r="Async");var o=e.filter;"function"!=typeof o&&(o=p);var a=e.promisifier;if("function"!=typeof a&&(a=m),!i.isIdentifier(r))throw new RangeError("suffix must be a valid identifier\n\n See http://goo.gl/MqrFmX\n");for(var s=i.inheritedDataKeys(t),c=0;c<s.length;++c){var l=t[s[c]];"constructor"!==s[c]&&i.isClass(l)&&(g(l.prototype,r,o,a,n),g(l,r,o,a,n))}return g(t,r,o,a,n)}}},{"./errors":12,"./nodeback":20,"./util":36}],25:[function(t,e,n){"use strict";e.exports=function(e,n,r,i){var o,a=t("./util"),s=a.isObject,c=t("./es5");"function"==typeof Map&&(o=Map);var u=function(){var t=0,e=0;function n(n,r){this[t]=n,this[t+e]=r,t++}return function(r){e=r.size,t=0;var i=new Array(2*r.size);return r.forEach(n,i),i}}();function l(t){var e,n=!1;if(void 0!==o&&t instanceof o)e=u(t),n=!0;else{var r=c.keys(t),i=r.length;e=new Array(2*i);for(var a=0;a<i;++a){var s=r[a];e[a]=t[s],e[a+i]=s}}this.constructor$(e),this._isMap=n,this._init$(void 0,n?-6:-3)}function f(t){var n,o=r(t);return s(o)?(n=o instanceof e?o._then(e.props,void 0,void 0,void 0,void 0):new l(o).promise(),o instanceof e&&n._propagateFrom(o,2),n):i("cannot await properties of a non-object\n\n See http://goo.gl/MqrFmX\n")}a.inherits(l,n),l.prototype._init=function(){},l.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;if(n>=this._length){var r;if(this._isMap)r=function(t){for(var e=new o,n=t.length/2|0,r=0;r<n;++r){var i=t[n+r],a=t[r];e.set(i,a)}return e}(this._values);else{r={};for(var i=this.length(),a=0,s=this.length();a<s;++a)r[this._values[a+i]]=this._values[a]}return this._resolve(r),!0}return!1},l.prototype.shouldCopyValues=function(){return!1},l.prototype.getActualLength=function(t){return t>>1},e.prototype.props=function(){return f(this)},e.props=function(t){return f(t)}}},{"./es5":13,"./util":36}],26:[function(t,e,n){"use strict";function r(t){this._capacity=t,this._length=0,this._front=0}r.prototype._willBeOverCapacity=function(t){return this._capacity<t},r.prototype._pushOne=function(t){var e=this.length();this._checkCapacity(e+1);var n=this._front+e&this._capacity-1;this[n]=t,this._length=e+1},r.prototype.push=function(t,e,n){var r=this.length()+3;if(this._willBeOverCapacity(r))return this._pushOne(t),this._pushOne(e),void this._pushOne(n);var i=this._front+r-3;this._checkCapacity(r);var o=this._capacity-1;this[i+0&o]=t,this[i+1&o]=e,this[i+2&o]=n,this._length=r},r.prototype.shift=function(){var t=this._front,e=this[t];return this[t]=void 0,this._front=t+1&this._capacity-1,this._length--,e},r.prototype.length=function(){return this._length},r.prototype._checkCapacity=function(t){this._capacity<t&&this._resizeTo(this._capacity<<1)},r.prototype._resizeTo=function(t){var e=this._capacity;this._capacity=t;var n=this._front,r=this._length,i=n+r&e-1;!function(t,e,n,r,i){for(var o=0;o<i;++o)n[o+r]=t[o+e],t[o+e]=void 0}(this,0,this,e,i)},e.exports=r},{}],27:[function(t,e,n){"use strict";e.exports=function(e,n,r,i){var o=t("./util"),a=function(t){return t.then(function(e){return s(e,t)})};function s(t,s){var c=r(t);if(c instanceof e)return a(c);if(null===(t=o.asArray(t)))return i("expecting an array or an iterable object but got "+o.classString(t));var u=new e(n);void 0!==s&&u._propagateFrom(s,3);for(var l=u._fulfill,f=u._reject,p=0,h=t.length;p<h;++p){var d=t[p];(void 0!==d||p in t)&&e.cast(d)._then(l,f,void 0,u,null)}return u}e.race=function(t){return s(t,void 0)},e.prototype.race=function(){return s(this,void 0)}}},{"./util":36}],28:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,a){var s=e._getDomain,c=t("./util"),u=c.tryCatch;function l(t,n,r,i){this.constructor$(t);var a=s();this._fn=null===a?n:c.domainBind(a,n),void 0!==r&&(r=e.resolve(r))._attachCancellationCallback(this),this._initialValue=r,this._currentCancellable=null,this._eachValues=i===o?Array(this._length):0===i?null:void 0,this._promise._captureStackTrace(),this._init$(void 0,-5)}function f(t,e){this.isFulfilled()?e._resolve(t):e._reject(t)}function p(t,e,n,i){if("function"!=typeof e)return r("expecting a function but got "+c.classString(e));var o=new l(t,e,n,i);return o.promise()}function h(t){this.accum=t,this.array._gotAccum(t);var n=i(this.value,this.array._promise);return n instanceof e?(this.array._currentCancellable=n,n._then(d,void 0,void 0,this,void 0)):d.call(this,n)}function d(t){var n,r=this.array,i=r._promise,o=u(r._fn);i._pushContext(),(n=void 0!==r._eachValues?o.call(i._boundValue(),t,this.index,this.length):o.call(i._boundValue(),this.accum,t,this.index,this.length))instanceof e&&(r._currentCancellable=n);var s=i._popContext();return a.checkForgottenReturns(n,s,void 0!==r._eachValues?"Promise.each":"Promise.reduce",i),n}c.inherits(l,n),l.prototype._gotAccum=function(t){void 0!==this._eachValues&&null!==this._eachValues&&t!==o&&this._eachValues.push(t)},l.prototype._eachComplete=function(t){return null!==this._eachValues&&this._eachValues.push(t),this._eachValues},l.prototype._init=function(){},l.prototype._resolveEmptyArray=function(){this._resolve(void 0!==this._eachValues?this._eachValues:this._initialValue)},l.prototype.shouldCopyValues=function(){return!1},l.prototype._resolve=function(t){this._promise._resolveCallback(t),this._values=null},l.prototype._resultCancelled=function(t){if(t===this._initialValue)return this._cancel();this._isResolved()||(this._resultCancelled$(),this._currentCancellable instanceof e&&this._currentCancellable.cancel(),this._initialValue instanceof e&&this._initialValue.cancel())},l.prototype._iterate=function(t){var n,r;this._values=t;var i=t.length;if(void 0!==this._initialValue?(n=this._initialValue,r=0):(n=e.resolve(t[0]),r=1),this._currentCancellable=n,!n.isRejected())for(;r<i;++r){var o={accum:null,value:t[r],index:r,length:i,array:this};n=n._then(h,void 0,void 0,o,void 0)}void 0!==this._eachValues&&(n=n._then(this._eachComplete,void 0,void 0,this,void 0)),n._then(f,f,void 0,n,this)},e.prototype.reduce=function(t,e){return p(this,t,e,null)},e.reduce=function(t,e,n,r){return p(t,e,n,r)}}},{"./util":36}],29:[function(t,i,o){"use strict";var a,s=t("./util"),c=s.getNativePromise();if(s.isNode&&"undefined"==typeof MutationObserver){var u=n.setImmediate,l=e.nextTick;a=s.isRecentNode?function(t){u.call(n,t)}:function(t){l.call(e,t)}}else if("function"==typeof c&&"function"==typeof c.resolve){var f=c.resolve();a=function(t){f.then(t)}}else a="undefined"==typeof MutationObserver||"undefined"!=typeof window&&window.navigator&&(window.navigator.standalone||window.cordova)?void 0!==r?function(t){r(t)}:"undefined"!=typeof setTimeout?function(t){setTimeout(t,0)}:function(){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}:function(){var t=document.createElement("div"),e={attributes:!0},n=!1,r=document.createElement("div"),i=new MutationObserver(function(){t.classList.toggle("foo"),n=!1});return i.observe(r,e),function(i){var o=new MutationObserver(function(){o.disconnect(),i()});o.observe(t,e),n||(n=!0,r.classList.toggle("foo"))}}();i.exports=a},{"./util":36}],30:[function(t,e,n){"use strict";e.exports=function(e,n,r){var i=e.PromiseInspection,o=t("./util");function a(t){this.constructor$(t)}o.inherits(a,n),a.prototype._promiseResolved=function(t,e){this._values[t]=e;var n=++this._totalResolved;return n>=this._length&&(this._resolve(this._values),!0)},a.prototype._promiseFulfilled=function(t,e){var n=new i;return n._bitField=33554432,n._settledValueField=t,this._promiseResolved(e,n)},a.prototype._promiseRejected=function(t,e){var n=new i;return n._bitField=16777216,n._settledValueField=t,this._promiseResolved(e,n)},e.settle=function(t){return r.deprecated(".settle()",".reflect()"),new a(t).promise()},e.prototype.settle=function(){return e.settle(this)}}},{"./util":36}],31:[function(t,e,n){"use strict";e.exports=function(e,n,r){var i=t("./util"),o=t("./errors").RangeError,a=t("./errors").AggregateError,s=i.isArray,c={};function u(t){this.constructor$(t),this._howMany=0,this._unwrap=!1,this._initialized=!1}function l(t,e){if((0|e)!==e||e<0)return r("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var n=new u(t),i=n.promise();return n.setHowMany(e),n.init(),i}i.inherits(u,n),u.prototype._init=function(){if(this._initialized)if(0!==this._howMany){this._init$(void 0,-5);var t=s(this._values);!this._isResolved()&&t&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}else this._resolve([])},u.prototype.init=function(){this._initialized=!0,this._init()},u.prototype.setUnwrap=function(){this._unwrap=!0},u.prototype.howMany=function(){return this._howMany},u.prototype.setHowMany=function(t){this._howMany=t},u.prototype._promiseFulfilled=function(t){return this._addFulfilled(t),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},u.prototype._promiseRejected=function(t){return this._addRejected(t),this._checkOutcome()},u.prototype._promiseCancelled=function(){return this._values instanceof e||null==this._values?this._cancel():(this._addRejected(c),this._checkOutcome())},u.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var t=new a,e=this.length();e<this._values.length;++e)this._values[e]!==c&&t.push(this._values[e]);return t.length>0?this._reject(t):this._cancel(),!0}return!1},u.prototype._fulfilled=function(){return this._totalResolved},u.prototype._rejected=function(){return this._values.length-this.length()},u.prototype._addRejected=function(t){this._values.push(t)},u.prototype._addFulfilled=function(t){this._values[this._totalResolved++]=t},u.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},u.prototype._getRangeError=function(t){var e="Input array must contain at least "+this._howMany+" items but contains only "+t+" items";return new o(e)},u.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},e.some=function(t,e){return l(t,e)},e.prototype.some=function(t){return l(this,t)},e._SomePromiseArray=u}},{"./errors":12,"./util":36}],32:[function(t,e,n){"use strict";e.exports=function(t){function e(t){void 0!==t?(t=t._target(),this._bitField=t._bitField,this._settledValueField=t._isFateSealed()?t._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}e.prototype._settledValue=function(){return this._settledValueField};var n=e.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},r=e.prototype.error=e.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},i=e.prototype.isFulfilled=function(){return 0!=(33554432&this._bitField)},o=e.prototype.isRejected=function(){return 0!=(16777216&this._bitField)},a=e.prototype.isPending=function(){return 0==(50397184&this._bitField)},s=e.prototype.isResolved=function(){return 0!=(50331648&this._bitField)};e.prototype.isCancelled=function(){return 0!=(8454144&this._bitField)},t.prototype.__isCancelled=function(){return 65536==(65536&this._bitField)},t.prototype._isCancelled=function(){return this._target().__isCancelled()},t.prototype.isCancelled=function(){return 0!=(8454144&this._target()._bitField)},t.prototype.isPending=function(){return a.call(this._target())},t.prototype.isRejected=function(){return o.call(this._target())},t.prototype.isFulfilled=function(){return i.call(this._target())},t.prototype.isResolved=function(){return s.call(this._target())},t.prototype.value=function(){return n.call(this._target())},t.prototype.reason=function(){var t=this._target();return t._unsetRejectionIsUnhandled(),r.call(t)},t.prototype._value=function(){return this._settledValue()},t.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},t.PromiseInspection=e}},{}],33:[function(t,e,n){"use strict";e.exports=function(e,n){var r=t("./util"),i=r.errorObj,o=r.isObject,a={}.hasOwnProperty;return function(t,s){if(o(t)){if(t instanceof e)return t;var c=function(t){try{return function(t){return t.then}(t)}catch(t){return i.e=t,i}}(t);if(c===i){s&&s._pushContext();var u=e.reject(c.e);return s&&s._popContext(),u}if("function"==typeof c){if(function(t){try{return a.call(t,"_promise0")}catch(t){return!1}}(t)){var u=new e(n);return t._then(u._fulfill,u._reject,void 0,u,null),u}return function(t,o,a){var s=new e(n),c=s;a&&a._pushContext(),s._captureStackTrace(),a&&a._popContext();var u=!0,l=r.tryCatch(o).call(t,function(t){s&&(s._resolveCallback(t),s=null)},function(t){s&&(s._rejectCallback(t,u,!0),s=null)});return u=!1,s&&l===i&&(s._rejectCallback(l.e,!0,!0),s=null),c}(t,c,s)}}return t}}},{"./util":36}],34:[function(t,e,n){"use strict";e.exports=function(e,n,r){var i=t("./util"),o=e.TimeoutError;function a(t){this.handle=t}a.prototype._resultCancelled=function(){clearTimeout(this.handle)};var s=function(t){return c(+this).thenReturn(t)},c=e.delay=function(t,i){var o,c;return void 0!==i?(o=e.resolve(i)._then(s,null,null,t,void 0),r.cancellation()&&i instanceof e&&o._setOnCancel(i)):(o=new e(n),c=setTimeout(function(){o._fulfill()},+t),r.cancellation()&&o._setOnCancel(new a(c)),o._captureStackTrace()),o._setAsyncGuaranteed(),o};function u(t){return clearTimeout(this.handle),t}function l(t){throw clearTimeout(this.handle),t}e.prototype.delay=function(t){return c(t,this)},e.prototype.timeout=function(t,e){var n,s;t=+t;var c=new a(setTimeout(function(){n.isPending()&&function(t,e,n){var r;r="string"!=typeof e?e instanceof Error?e:new o("operation timed out"):new o(e),i.markAsOriginatingFromRejection(r),t._attachExtraTrace(r),t._reject(r),null!=n&&n.cancel()}(n,e,s)},t));return r.cancellation()?(s=this.then(),(n=s._then(u,l,void 0,c,void 0))._setOnCancel(c)):n=this._then(u,l,void 0,c,void 0),n}}},{"./util":36}],35:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,a){var s=t("./util"),c=t("./errors").TypeError,u=t("./util").inherits,l=s.errorObj,f=s.tryCatch,p={};function h(t){setTimeout(function(){throw t},0)}function d(t,n){var i=0,a=t.length,s=new e(o);return function o(){if(i>=a)return s._fulfill();var c=function(t){var e=r(t);return e!==t&&"function"==typeof t._isDisposable&&"function"==typeof t._getDisposer&&t._isDisposable()&&e._setDisposable(t._getDisposer()),e}(t[i++]);if(c instanceof e&&c._isDisposable()){try{c=r(c._getDisposer().tryDispose(n),t.promise)}catch(t){return h(t)}if(c instanceof e)return c._then(o,h,null,null,null)}o()}(),s}function _(t,e,n){this._data=t,this._promise=e,this._context=n}function v(t,e,n){this.constructor$(t,e,n)}function y(t){return _.isDisposer(t)?(this.resources[this.index]._setDisposable(t),t.promise()):t}function m(t){this.length=t,this.promise=null,this[t-1]=null}_.prototype.data=function(){return this._data},_.prototype.promise=function(){return this._promise},_.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():p},_.prototype.tryDispose=function(t){var e=this.resource(),n=this._context;void 0!==n&&n._pushContext();var r=e!==p?this.doDispose(e,t):null;return void 0!==n&&n._popContext(),this._promise._unsetDisposable(),this._data=null,r},_.isDisposer=function(t){return null!=t&&"function"==typeof t.resource&&"function"==typeof t.tryDispose},u(v,_),v.prototype.doDispose=function(t,e){var n=this.data();return n.call(t,t,e)},m.prototype._resultCancelled=function(){for(var t=this.length,n=0;n<t;++n){var r=this[n];r instanceof e&&r.cancel()}},e.using=function(){var t=arguments.length;if(t<2)return n("you must pass at least 2 arguments to Promise.using");var i,o=arguments[t-1];if("function"!=typeof o)return n("expecting a function but got "+s.classString(o));var c=!0;2===t&&Array.isArray(arguments[0])?(i=arguments[0],t=i.length,c=!1):(i=arguments,t--);for(var u=new m(t),p=0;p<t;++p){var h=i[p];if(_.isDisposer(h)){var v=h;(h=h.promise())._setDisposable(v)}else{var g=r(h);g instanceof e&&(h=g._then(y,null,null,{resources:u,index:p},void 0))}u[p]=h}for(var b=new Array(u.length),p=0;p<b.length;++p)b[p]=e.resolve(u[p]).reflect();var w=e.all(b).then(function(t){for(var e=0;e<t.length;++e){var n=t[e];if(n.isRejected())return l.e=n.error(),l;if(!n.isFulfilled())return void w.cancel();t[e]=n.value()}C._pushContext(),o=f(o);var r=c?o.apply(void 0,t):o(t),i=C._popContext();return a.checkForgottenReturns(r,i,"Promise.using",C),r}),C=w.lastly(function(){var t=new e.PromiseInspection(w);return d(u,t)});return u.promise=C,C._setOnCancel(u),C},e.prototype._setDisposable=function(t){this._bitField=131072|this._bitField,this._disposer=t},e.prototype._isDisposable=function(){return(131072&this._bitField)>0},e.prototype._getDisposer=function(){return this._disposer},e.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},e.prototype.disposer=function(t){if("function"==typeof t)return new v(t,this,i());throw new c}}},{"./errors":12,"./util":36}],36:[function(t,r,i){"use strict";var o=t("./es5"),a="undefined"==typeof navigator,s={e:{}},c,u="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n?n:void 0!==this?this:null;function l(){try{var t=c;return c=null,t.apply(this,arguments)}catch(t){return s.e=t,s}}function f(t){return c=t,l}var p=function(t,e){var n={}.hasOwnProperty;function r(){for(var r in this.constructor=t,this.constructor$=e,e.prototype)n.call(e.prototype,r)&&"$"!==r.charAt(r.length-1)&&(this[r+"$"]=e.prototype[r])}return r.prototype=e.prototype,t.prototype=new r,t.prototype};function h(t){return null==t||!0===t||!1===t||"string"==typeof t||"number"==typeof t}function d(t){return"function"==typeof t||"object"==typeof t&&null!==t}function _(t){return h(t)?new Error(T(t)):t}function v(t,e){var n,r=t.length,i=new Array(r+1);for(n=0;n<r;++n)i[n]=t[n];return i[n]=e,i}function y(t,e,n){if(!o.isES5)return{}.hasOwnProperty.call(t,e)?t[e]:void 0;var r=Object.getOwnPropertyDescriptor(t,e);return null!=r?null==r.get&&null==r.set?r.value:n:void 0}function m(t,e,n){if(h(t))return t;var r={value:n,configurable:!0,enumerable:!1,writable:!0};return o.defineProperty(t,e,r),t}function g(t){throw t}var b=function(){var t=[Array.prototype,Object.prototype,Function.prototype],e=function(e){for(var n=0;n<t.length;++n)if(t[n]===e)return!0;return!1};if(o.isES5){var n=Object.getOwnPropertyNames;return function(t){for(var r=[],i=Object.create(null);null!=t&&!e(t);){var a;try{a=n(t)}catch(t){return r}for(var s=0;s<a.length;++s){var c=a[s];if(!i[c]){i[c]=!0;var u=Object.getOwnPropertyDescriptor(t,c);null!=u&&null==u.get&&null==u.set&&r.push(c)}}t=o.getPrototypeOf(t)}return r}}var r={}.hasOwnProperty;return function(n){if(e(n))return[];var i=[];t:for(var o in n)if(r.call(n,o))i.push(o);else{for(var a=0;a<t.length;++a)if(r.call(t[a],o))continue t;i.push(o)}return i}}(),w=/this\s*\.\s*\S+\s*=/;function C(t){try{if("function"==typeof t){var e=o.names(t.prototype),n=o.isES5&&e.length>1,r=e.length>0&&!(1===e.length&&"constructor"===e[0]),i=w.test(t+"")&&o.names(t).length>0;if(n||r||i)return!0}return!1}catch(t){return!1}}function E(t){function e(){}e.prototype=t;var n=new e;function r(){return typeof n.foo}return r(),r(),t}var j=/^[a-z$_][a-z$_0-9]*$/i;function k(t){return j.test(t)}function x(t,e,n){for(var r=new Array(t),i=0;i<t;++i)r[i]=e+i+n;return r}function T(t){try{return t+""}catch(t){return"[no string representation]"}}function F(t){return t instanceof Error||null!==t&&"object"==typeof t&&"string"==typeof t.message&&"string"==typeof t.name}function O(t){try{m(t,"isOperational",!0)}catch(t){}}function P(t){return null!=t&&(t instanceof Error.__BluebirdErrorTypes__.OperationalError||!0===t.isOperational)}function S(t){return F(t)&&o.propertyIsWritable(t,"stack")}var R="stack"in new Error?function(t){return S(t)?t:new Error(T(t))}:function(t){if(S(t))return t;try{throw new Error(T(t))}catch(t){return t}};function A(t){return{}.toString.call(t)}function L(t,e,n){for(var r=o.names(t),i=0;i<r.length;++i){var a=r[i];if(n(a))try{o.defineProperty(e,a,o.getDescriptor(t,a))}catch(t){}}}var I=function(t){return o.isArray(t)?t:null};if("undefined"!=typeof Symbol&&Symbol.iterator){var N="function"==typeof Array.from?function(t){return Array.from(t)}:function(t){for(var e,n=[],r=t[Symbol.iterator]();!(e=r.next()).done;)n.push(e.value);return n};I=function(t){return o.isArray(t)?t:null!=t&&"function"==typeof t[Symbol.iterator]?N(t):null}}var D=void 0!==e&&"[object process]"===A(e).toLowerCase(),M=void 0!==e&&!0;function V(t){return M?Object({NODE_ENV:"production"})[t]:void 0}function H(){if("function"==typeof Promise)try{var t=new Promise(function(){});if("[object Promise]"==={}.toString.call(t))return Promise}catch(t){}}function U(t,e){return t.bind(e)}var B={isClass:C,isIdentifier:k,inheritedDataKeys:b,getDataPropertyOrDefault:y,thrower:g,isArray:o.isArray,asArray:I,notEnumerableProp:m,isPrimitive:h,isObject:d,isError:F,canEvaluate:a,errorObj:s,tryCatch:f,inherits:p,withAppended:v,maybeWrapAsError:_,toFastProperties:E,filledRange:x,toString:T,canAttachTrace:S,ensureErrorObject:R,originatesFromRejection:P,markAsOriginatingFromRejection:O,classString:A,copyDescriptors:L,hasDevTools:"undefined"!=typeof chrome&&chrome&&"function"==typeof chrome.loadTimes,isNode:D,hasEnvVariables:M,env:V,global:u,getNativePromise:H,domainBind:U};B.isRecentNode=B.isNode&&function(){var t=e.versions.node.split(".").map(Number);return 0===t[0]&&t[1]>10||t[0]>0}(),B.isNode&&B.toFastProperties(e);try{throw new Error}catch(t){B.lastLineError=t}r.exports=B},{"./es5":13}]},{},[4])(4)}(),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)}).call(this,n(64),n(16),n(213).setImmediate)},90:function(t,e,n){var r=n(115);t.exports=function(t){return Object(r(t))}},98:function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},99:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}}}); +//# sourceMappingURL=mobileguide.js.map \ No newline at end of file diff --git a/riot/bundles/c2932262ed6106cd4535/mobileguide.js.map b/riot/bundles/c2932262ed6106cd4535/mobileguide.js.map new file mode 100644 index 0000000..bfb3905 --- /dev/null +++ b/riot/bundles/c2932262ed6106cd4535/mobileguide.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack/bootstrap","node_modules/core-js/library/modules/_uid.js","node_modules/browser-request/index.js","node_modules/core-js/library/modules/_to-integer.js","node_modules/core-js/library/modules/_defined.js","node_modules/core-js/library/modules/_to-primitive.js","node_modules/core-js/library/modules/_to-length.js","node_modules/core-js/library/modules/_shared-key.js","node_modules/core-js/library/modules/_shared.js","node_modules/core-js/library/modules/_enum-bug-keys.js","node_modules/core-js/library/modules/_dom-create.js","node_modules/babel-runtime/core-js/object/keys.js","(webpack)/buildin/global.js","node_modules/core-js/library/modules/_ie8-dom-define.js","node_modules/core-js/library/modules/_object-keys-internal.js","node_modules/core-js/library/modules/_iobject.js","node_modules/babel-runtime/regenerator/index.js","node_modules/core-js/library/modules/_core.js","src/vector/mobile_guide/index.js","node_modules/core-js/library/modules/_array-includes.js","node_modules/core-js/library/modules/_to-absolute-index.js","node_modules/babel-runtime/node_modules/regenerator-runtime/runtime-module.js","node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js","node_modules/timers-browserify/main.js","node_modules/setimmediate/setImmediate.js","node_modules/core-js/library/fn/object/keys.js","node_modules/core-js/library/modules/es6.object.keys.js","node_modules/core-js/library/modules/_export.js","node_modules/core-js/library/modules/_global.js","node_modules/core-js/library/modules/_is-object.js","src/vector/getconfig.js","node_modules/core-js/library/modules/_descriptors.js","node_modules/core-js/library/modules/_object-dp.js","node_modules/core-js/library/modules/_an-object.js","node_modules/core-js/library/modules/_fails.js","node_modules/core-js/library/modules/_has.js","node_modules/core-js/library/modules/_to-iobject.js","node_modules/core-js/library/modules/_hide.js","node_modules/process/browser.js","node_modules/core-js/library/modules/_ctx.js","node_modules/core-js/library/modules/_object-sap.js","node_modules/core-js/library/modules/_property-desc.js","node_modules/core-js/library/modules/_object-keys.js","node_modules/core-js/library/modules/_library.js","node_modules/bluebird/js/browser/bluebird.js","node_modules/core-js/library/modules/_to-object.js","node_modules/core-js/library/modules/_a-function.js","node_modules/core-js/library/modules/_cof.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","id","px","Math","random","concat","undefined","toString","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","XHR","XMLHttpRequest","Error","request","options","callback","options_onResponse","onResponse","uri","JSON","parse","stringify","verbose","log","level","logger","levels","length","noop","console","formatted","getLogger","url","unsupported_options","method","headers","body","timeout","DEFAULT_TIMEOUT","host","json","accept","serialize","obj","str","push","encodeURIComponent","join","qs","indexOf","form","encoding","toLowerCase","replace","multi","result","boundry","floor","lines","type","multipart","authorization","auth","data","o1","o2","o3","h1","h2","h3","h4","bits","b64","ac","enc","tmp_arr","charCodeAt","charAt","slice","b64_enc","username","password","xhr","timed_out","is_cors","ajaxLocation","rurl","location","href","e","document","createElement","ajaxLocParts","exec","parts","is_crossDomain","supports_cors","req_seq","seq_id","_id","cors_err","cors","timeoutTimer","setTimeout","er","code","duration","error","milliseconds","did","response","loading","end","onreadystatechange","event","debug","state","readyState","OPENED","setRequestHeader","HEADERS_RECEIVED","on_response","LOADING","on_loading","DONE","responseText","on_end","open","withCredentials","send","status","clearTimeout","statusCode","run_xhr","trace","info","warn","context","defaults","requester","def","params","de","post","put","head","forEach","shortcut","toUpperCase","opts","args","Array","apply","arguments","this","couch","resp","reason","ceil","it","isNaN","TypeError","isObject","S","fn","val","valueOf","toInteger","min","shared","uid","core","global","store","version","copyright","split","is","default","g","Function","eval","window","a","has","toIObject","arrayIndexOf","IE_PROTO","names","O","cof","propertyIsEnumerable","__e","_callee","config","hsUrl","_regenerator2","wrap","_context","prev","next","getElementById","onclick","onBackToRiotClick","_bluebird","resolve","_getconfig","getVectorConfig","sent","endsWith","style","display","innerHTML","stop","cookie","initPage","toLength","toAbsoluteIndex","IS_INCLUDES","$this","el","fromIndex","index","max","hadRuntime","regeneratorRuntime","getOwnPropertyNames","oldRuntime","Op","hasOwn","$Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","inModule","runtime","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","constructor","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","arg","__await","defineIteratorMethods","AsyncIterator","async","innerFn","outerFn","self","tryLocsList","iter","then","done","keys","reverse","pop","Context","reset","skipTempReset","_sent","delegate","tryEntries","resetTryEntry","rootRecord","completion","rval","dispatchException","exception","handle","loc","caught","record","entry","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","abrupt","finallyEntry","complete","afterLoc","finish","catch","thrown","delegateYield","iterable","resultName","nextLoc","protoGenerator","generator","_invoke","doneResult","delegateResult","maybeInvokeDelegate","tryCatch","makeInvokeMethod","err","previousPromise","callInvokeWithMethodAndArg","Promise","reject","invoke","unwrapped","return","pushTryEntry","locs","iteratorMethod","scope","Timeout","clearFn","_clearFn","setInterval","clearInterval","close","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","setImmediate","clearImmediate","process","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","nextTick","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","messagePrefix","onGlobalMessage","source","addEventListener","attachEvent","installPostMessageImplementation","MessageChannel","channel","port1","port2","installMessageChannelImplementation","html","documentElement","script","removeChild","appendChild","installReadyStateChangeImplementation","task","run","toObject","$keys","ctx","hide","$export","own","out","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","expProto","target","C","b","virtual","R","U","__g","relativeLocation","configJson","getConfig","domain","_keys2","t0","configJsonFilename","_browserRequest2","anObject","IE8_DOM_DEFINE","toPrimitive","dP","f","Attributes","IObject","defined","createDesc","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","len","marker","runClearTimeout","Item","array","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","aFunction","that","fails","KEY","exp","bitmap","configurable","writable","enumBugKeys","define","u","_dereq_","1","SomePromiseArray","_SomePromiseArray","any","promises","ret","promise","setHowMany","setUnwrap","init","2","firstLineError","schedule","Queue","util","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","_trampolineEnabled","drainQueues","_drainQueues","_schedule","AsyncInvokeLater","receiver","_queueTick","AsyncInvoke","AsyncSettlePromises","_pushOne","_drainQueue","_drainQueueStep","shift","_settlePromises","setScheduler","hasCustomScheduler","enableTrampoline","disableTrampolineIfNecessary","hasDevTools","haveItemsQueued","fatalError","isNode","stderr","write","stack","exit","throwLater","invokeLater","settlePromises","_reset","./queue","./schedule","./util","3","INTERNAL","tryConvertToPromise","calledBind","rejectThis","_","_reject","targetRejected","promiseRejectionQueued","bindingPromise","_then","bindingResolved","thisArg","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","4","old","bluebird","noConflict","./promise","5","cr","callerCache","getterCache","canEvaluate","caller","methodName","message","classString","ensureMethod","namedGetter","indexedGetter","isIdentifier","propertyName","isIndex","maybeGetter","getGetter","6","PromiseArray","apiRejection","errorObj","_async","cancel","cancellation","_warn","child","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","parent","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","isArray","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","7","NEXT_FILTER","getKeys","instances","cb","boundTo","predicateLoop","matchesPredicate","j","./es5","8","longStackTraces","contextStack","_trace","CapturedTrace","peekContext","lastIndex","_promiseCreated","_pushContext","_popContext","_peekContext","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","9","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","getDomain","_getDomain","Warning","es5","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","warnings","wForgottenReturn","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejection","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","onPossiblyUnhandledRejection","domainBind","onUnhandledRejectionHandled","disableLongStackTraces","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","Promise_dereferenceTrace","_dereferenceTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","longStackTracesDereferenceTrace","hasLongStackTraces","fireDomEvent","CustomEvent","dispatchEvent","eventData","detail","cancelable","domEvent","Event","createEvent","initCustomEvent","fireGlobalEvent","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","warning","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","flags","branchesRemainingToCancel","warningsOption","_clearCancellationData","_execute","monitoring","_fireEvent","handler","isFulfilled","ignoreSelf","_parent","attachExtraTrace","__stackCleaned__","parsed","parseStackAndMessage","notEnumerableProp","formatAndLogError","cleanStack","line","isTraceLine","test","isInternalFrame","shouldIgnore","stackFramesAsArray","isSoft","String","localHandler","localEventFired","formatNonError","newStr","substr","maxChars","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","matches","match","fileName","parseInt","_promisesCreated","uncycle","inherits","nodes","stackToIndex","node","currentStack","cycleEdgeNode","currentChildLength","stacks","current","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","splice","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","isTTY","color","checkForgottenReturns","returnValue","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","msg","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","deprecated","replacement","./errors","10","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","catchReturn","_value","11","PromiseReduce","reduce","PromiseAll","all","promiseAllThis","each","mapSeries","12","_TypeError","_RangeError","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","CancellationError","TimeoutError","AggregateError","RangeError","methods","OperationalError","cause","indent","errorTypes","RejectionError","13","isES5","getDescriptor","getOwnPropertyDescriptor","propertyIsWritable","prop","descriptor","set","proto","ObjectKeys","desc","14","PromiseMap","map","filter","15","catchFilter","PassThroughHandlerContext","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","fail","reasonOrValue","isFinallyHandler","isRejected","_passThrough","success","lastly","tap","tapCatch","handlerOrPredicate","catchInstances","./catch_filter","16","Proxyable","errors","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","implementsReturn","coroutine","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","spawn","addYieldHandler","17","last","spread","18","MappingPromiseArray","limit","_filter","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","isFinite","_init$","_init","_values","preservedValues","totalResolved","_totalResolved","_resolve","booleans","19","_resolveFromSyncValue","attempt","20","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","21","spreadAdapter","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","22","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","APPLY","createContext","nodebackForPromise","check","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","v","deferReject","fillTypes","reflect","didFulfill","didReject","_setIsFinal","toJSON","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","base","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","x","_settlePromise","isPromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","defer","pending","toFastProperties","./any.js","./async","./bind","./call_get.js","./cancel","./context","./debuggability","./direct_resolve","./each.js","./filter.js","./finally","./generators.js","./join","./map.js","./method","./nodeback","./nodeify.js","./promise_array","./promisify.js","./props.js","./race.js","./reduce.js","./settle.js","./some.js","./synchronous_inspection","./thenables","./timers.js","./using.js","23","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","Map","toResolutionValue","getActualLength","shouldCopyValues","isResolved","24","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","RegExp","defaultFilter","propsFilter","isPromisified","hasPromisified","suffix","getDataPropertyOrDefault","promisifiableMethods","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","escapeIdentRegex","makeNodePromisified","makeNodePromisifiedEval","__","defaultThis","promisified","promisifyAll","promisifier","promisifiedKey","promisify","copyDescriptors","isClass","25","Es6Map","mapToEntries","size","extractEntry","PropertiesPromiseArray","entries","isMap","_isMap","props","castValue","entriesToMap","keyOffset","26","capacity","_capacity","_front","_willBeOverCapacity","_checkCapacity","wrapMask","front","_resizeTo","oldCapacity","moveItemsCount","src","srcIndex","dst","dstIndex","arrayMove","27","raceLater","race","28","ReductionPromiseArray","initialValue","_each","_fn","_initialValue","_currentCancellable","_eachValues","completed","valueOrReason","gotAccum","accum","_gotAccum","gotValue","_eachComplete","sender","_resultCancelled$","29","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","ProcessNextTick","isRecentNode","nativePromise","navigator","standalone","cordova","div","attributes","toggleScheduled","div2","classList","toggle","observe","disconnect","30","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","31","CANCELLATION","_howMany","_unwrap","_initialized","some","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","count","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","32","__isCancelled","33","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","34","HandleWrapper","afterValue","delay","ms","successClear","failureClear","handleWrapper","afterTimeout","35","NULL","dispose","resources","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","_data","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","resource","doDispose","_unsetDisposable","using","input","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","36","tryCatchTarget","globalObject","tryCatcher","Child","Parent","T","isPrimitive","maybeError","safeToString","appendee","defaultValue","excludedPrototypes","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","ic","foo","rident","filledRange","prefix","isError","ignore","from","to","ArrayFrom","itResult","hasEnvVariables","NODE_ENV","chrome","loadTimes","Number"],"mappings":"aACA,IAAAA,KAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,IACAG,EAAAH,EACAI,GAAA,EACAH,YAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,GAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,aAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA,0BClFA,IAAAC,EAAA,EACAC,EAAAC,KAAAC,SACApC,EAAAD,QAAA,SAAAyB,GACA,gBAAAa,YAAAC,IAAAd,EAAA,GAAAA,EAAA,QAAAS,EAAAC,GAAAK,SAAA,2BCHA,IAAAC,EAAAC,EAAAC,EAkBQD,UAAkBH,KAAAI,EAAA,mBAATF,EAUhB,WAGD,IAAAG,EAAAC,eACA,IAAAD,EAAA,UAAAE,MAAA,0BAWA,SAAAC,EAAAC,EAAAC,GAEA,sBAAAA,EACA,UAAAH,MAAA,uBAAAG,GAEA,IAAAD,EACA,UAAAF,MAAA,oBAEA,IAAAI,EAAAF,EAAAG,WAgBA,IAbAH,EADA,iBAAAA,GACeI,IAAAJ,GAEfK,KAAAC,MAAAD,KAAAE,UAAAP,KAEAG,WAAAD,EAEAF,EAAAQ,UAAAT,EAAAU,IA2UA,WACA,IAEAC,EAAAxD,EAFAyD,KACAC,GAAA,uCAGA,IAAA1D,EAAA,EAAYA,EAAA0D,EAAAC,OAAmB3D,IAG/ByD,EAFAD,EAAAE,EAAA1D,IAEA4D,EACA,oBAAAC,0BAAAL,KACAC,EAAAD,GAAAM,EAAAD,QAAAL,IAGA,OAAAC,EAxVAM,IAEAjB,EAAAkB,MACAlB,EAAAI,IAAAJ,EAAAkB,WACAlB,EAAAkB,MAGAlB,EAAAI,KAAA,KAAAJ,EAAAI,IACA,UAAAN,MAAA,sCAEA,oBAAAE,EAAAI,IACA,UAAAN,MAAA,gCAGA,IADA,IAAAqB,GAAA,8DACAjE,EAAA,EAAiBA,EAAAiE,EAAAN,OAAgC3D,IACjD,GAAA8C,EAAAmB,EAAAjE,IACA,UAAA4C,MAAA,WAAAqB,EAAAjE,GAAA,qBAQA,GANA8C,EAAAC,WACAD,EAAAoB,OAAApB,EAAAoB,QAAA,MACApB,EAAAqB,QAAArB,EAAAqB,YACArB,EAAAsB,KAAAtB,EAAAsB,MAAA,KACAtB,EAAAuB,QAAAvB,EAAAuB,SAAAxB,EAAAyB,gBAEAxB,EAAAqB,QAAAI,KACA,UAAA3B,MAAA,yCAEAE,EAAA0B,OACA1B,EAAAqB,QAAAM,OAAA3B,EAAAqB,QAAAM,QAAA,mBACA,QAAA3B,EAAAoB,SACApB,EAAAqB,QAAA,oCAEA,kBAAArB,EAAA0B,KACA1B,EAAAsB,KAAAjB,KAAAE,UAAAP,EAAA0B,MACA,iBAAA1B,EAAAsB,OACAtB,EAAAsB,KAAAjB,KAAAE,UAAAP,EAAAsB,QAIA,IAAAM,EAAA,SAAAC,GACA,IAAAC,KACA,QAAA9C,KAAA6C,EACAA,EAAA9C,eAAAC,IACA8C,EAAAC,KAAAC,mBAAAhD,GAAA,IAAAgD,mBAAAH,EAAA7C,KAEA,OAAA8C,EAAAG,KAAA,MAGA,GAAAjC,EAAAkC,GAAA,CACA,IAAAA,EAAA,iBAAAlC,EAAAkC,GAAAlC,EAAAkC,GAAAN,EAAA5B,EAAAkC,KACA,IAAAlC,EAAAI,IAAA+B,QAAA,KACAnC,EAAAI,IAAAJ,EAAAI,IAAA,IAAA8B,EAEAlC,EAAAI,IAAAJ,EAAAI,IAAA,IAAA8B,EA4BA,GAAAlC,EAAAoC,KAAA,CACA,oBAAApC,EAAAoC,KAAA,6BACA,YAAApC,EAAAoB,OAAA,CACA,IAAAiB,GAAArC,EAAAqC,UAAA,qCAAAC,cAEA,OADAtC,EAAAqB,QAAA,gBAAAgB,EACAA,GACA,wCACArC,EAAAsB,KAAAM,EAAA5B,EAAAoC,MAAAG,QAAA,YACA,MACA,0BACA,IAAAC,EAhCA,SAAAX,GAEA,IAAAY,KACAA,EAAAC,QAAA,kCAAAtD,KAAAuD,MAAA,IAAAvD,KAAAC,UACA,IAAAuD,KACA,QAAA5D,KAAA6C,EACAA,EAAA9C,eAAAC,IACA4D,EAAAb,KACA,KAAAU,EAAAC,QAAA,2CACgD1D,EAAA,QAEhD6C,EAAA7C,GAAA,MAQA,OAJA4D,EAAAb,KAAA,KAAAU,EAAAC,QAAA,MACAD,EAAAnB,KAAAsB,EAAAX,KAAA,IACAQ,EAAA5B,OAAA4B,EAAAnB,KAAAT,OACA4B,EAAAI,KAAA,iCAAuCJ,EAAAC,QACvCD,EAaAK,CAAA9C,EAAAoC,MAEApC,EAAAsB,KAAAkB,EAAAlB,KACAtB,EAAAqB,QAAA,gBAAAmB,EAAAK,KACA,MACA,kBAAA/C,MAAA,wBAAAuC,KAsBA,OAdArC,EAAAG,WAAAH,EAAAG,YAAAW,GACA,IAAAd,EAAAG,aACAH,EAAAG,WAAAF,EACAD,EAAAC,SAAAa,IAQAd,EAAAqB,QAAA0B,eAAA/C,EAAAgD,OACAhD,EAAAqB,QAAA0B,cAAA,SAiRA,SAAAE,GAEA,IACAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EADAC,EAAA,oEACAxG,EAAA,EAAAyG,EAAA,EAAAC,EAAA,GAAAC,KAEA,IAAAZ,EACA,OAAAA,EAMA,GACAC,EAAAD,EAAAa,WAAA5G,KACAiG,EAAAF,EAAAa,WAAA5G,KACAkG,EAAAH,EAAAa,WAAA5G,KAIAmG,GAFAI,EAAAP,GAAA,GAAAC,GAAA,EAAAC,IAEA,MACAE,EAAAG,GAAA,MACAF,EAAAE,GAAA,KACAD,EAAA,GAAAC,EAGAI,EAAAF,KAAAD,EAAAK,OAAAV,GAAAK,EAAAK,OAAAT,GAAAI,EAAAK,OAAAR,GAAAG,EAAAK,OAAAP,SACKtG,EAAA+F,EAAApC,QAIL,OAFA+C,EAAAC,EAAA5B,KAAA,IAEAgB,EAAApC,OAAA,GACA,OACA+C,IAAAI,MAAA,WACA,MACA,OACAJ,IAAAI,MAAA,UAIA,OAAAJ,EAxTAK,CAAAjE,EAAAgD,KAAAkB,SAAA,IAAAlE,EAAAgD,KAAAmB,WAMA,SAAAnE,GACA,IAAAoE,EAAA,IAAAxE,EACAyE,GAAA,EACAC,EA0OA,SAAApD,GACA,IAIAqD,EAJAC,EAAA,iDAKA,IAAOD,EAAAE,SAAAC,KACP,MAAAC,IAEAJ,EAAAK,SAAAC,cAAA,MACAH,KAAA,GACAH,IAAAG,KAGA,IAAAI,EAAAN,EAAAO,KAAAR,EAAAjC,mBACA0C,EAAAR,EAAAO,KAAA7D,EAAAoB,eAWA,SARA0C,GACAA,EAAA,IAAAF,EAAA,IACAE,EAAA,IAAAF,EAAA,KACAE,EAAA,eAAAA,EAAA,cAAAF,EAAA,eAAAA,EAAA,aA/PAG,CAAAjF,EAAAI,KACA8E,EAAA,oBAAAd,EAOA,GALAe,GAAA,EACAf,EAAAgB,OAAAD,EACAf,EAAAlF,GAAAiG,EAAA,KAAAnF,EAAAoB,OAAA,IAAApB,EAAAI,IACAgE,EAAAiB,IAAAjB,EAAAlF,GAEAoF,IAAAY,EAAA,CACA,IAAAI,EAAA,IAAAxF,MAAA,kDAAAE,EAAAI,KAEA,OADAkF,EAAAC,KAAA,cACAvF,EAAAC,SAAAqF,EAAAlB,GAGAA,EAAAoB,aAAAC,WACA,WACApB,GAAA,EACA,IAAAqB,EAAA,IAAA5F,MAAA,aAKA,OAJA4F,EAAAC,KAAA,YACAD,EAAAE,SAAA5F,EAAAuB,QAEAxB,EAAAU,IAAAoF,MAAA,WAAkC3G,GAAAkF,EAAAiB,IAAAS,aAAA9F,EAAAuB,UAClCvB,EAAAC,SAAAyF,EAAAtB,IARApE,EAAAuB,SAYA,IAAAwE,GAAaC,UAAA,EAAAC,SAAA,EAAAC,KAAA,GAOb,OALA9B,EAAA+B,mBAOA,SAAAC,GACA,GAAA/B,EACA,OAAAtE,EAAAU,IAAA4F,MAAA,mCAAmEC,MAAAlC,EAAAmC,WAAArH,GAAAkF,EAAAlF,KAInE,GAFAa,EAAAU,IAAA4F,MAAA,gBAAuCC,MAAAlC,EAAAmC,WAAArH,GAAAkF,EAAAlF,GAAAmF,cAEvCD,EAAAmC,aAAA3G,EAAA4G,OAEA,QAAA/H,KADAsB,EAAAU,IAAA4F,MAAA,mBAA4CnH,GAAAkF,EAAAlF,KAC5Cc,EAAAqB,QACA+C,EAAAqC,iBAAAhI,EAAAuB,EAAAqB,QAAA5C,SAGA2F,EAAAmC,aAAA3G,EAAA8G,iBACAC,IAEAvC,EAAAmC,aAAA3G,EAAAgH,SACAD,IACAE,KAGAzC,EAAAmC,aAAA3G,EAAAkH,OACAH,IACAE,IAsCA,WACA,IAAAd,EAAAG,IAAA,CAOA,GAJAH,EAAAG,KAAA,EACAnG,EAAAU,IAAA4F,MAAA,gBAAuCnH,GAAAkF,EAAAlF,KAEvCkF,EAAA9C,KAAA8C,EAAA2C,aACA/G,EAAA0B,KACA,IAAkB0C,EAAA9C,KAAAjB,KAAAC,MAAA8D,EAAA2C,cAClB,MAAArB,GAAkB,OAAA1F,EAAAC,SAAAyF,EAAAtB,GAGlBpE,EAAAC,SAAA,KAAAmE,IAAA9C,OAlDA0F,KA7BA5C,EAAA6C,KAAAjH,EAAAoB,OAAApB,EAAAI,KAAA,GACAkE,IACAF,EAAA8C,kBAAAlH,EAAAkH,iBACA9C,EAAA+C,KAAAnH,EAAAsB,MACA8C,EA6BA,SAAAuC,IACA,IAAAZ,EAAAC,SAAA,CASA,GANAD,EAAAC,UAAA,EACAjG,EAAAU,IAAA4F,MAAA,gBAAuCnH,GAAAkF,EAAAlF,GAAAkI,OAAAhD,EAAAgD,SACvCC,aAAAjD,EAAAoB,cACApB,EAAAkD,WAAAlD,EAAAgD,OAGA9C,GAAA,GAAAF,EAAAkD,WAAA,CACA,IAAAhC,EAAA,IAAAxF,MAAA,0BAAAE,EAAAI,KAOA,OANAkF,EAAAC,KAAA,WAGAQ,EAAAE,SAAA,EACAF,EAAAG,KAAA,EAEAlG,EAAAC,SAAAqF,EAAAlB,GAGApE,EAAAG,WAAA,KAAAiE,IAGA,SAAAyC,IACAd,EAAAE,UAGAF,EAAAE,SAAA,EACAlG,EAAAU,IAAA4F,MAAA,yBAAgDnH,GAAAkF,EAAAlF,OAlGhDqI,CAAAvH,GAjJAD,EAAAU,KACA+G,MAAA1G,EAAAuF,MAAAvF,EAAA2G,KAAA3G,EAAA4G,KAAA5G,EAAA+E,MAAA/E,GAmJA,IAAAqE,EAAA,EAgNA,SAAArE,KAkBA,SAAAE,EAAAa,EAAAT,GACA,OAEA,SAAAU,EAAA6F,GAIA,MAHA,iBAAAA,IACA7F,GAAA,IAAAzB,KAAAE,UAAAoH,IAEA9F,EAAAT,GAAA/D,KAAAwE,EAAAC,IA4EA,OAhMA/B,EAAAmH,iBAAA,EACAnH,EAAAyB,gBAtQA,KA4QAzB,EAAA6H,SAAA,SAAA5H,EAAA6H,GACA,IAAAC,EAAA,SAAA1G,GAYA,OAXA,SAAA2G,EAAA9H,GAMA,QAAA/C,KAJA6K,EADA,iBAAAA,GACkB3H,IAAA2H,GAElB1H,KAAAC,MAAAD,KAAAE,UAAAwH,IAEA/H,OACAT,IAAAwI,EAAA7K,KAAA6K,EAAA7K,GAAA8C,EAAA9C,IAEA,OAAAkE,EAAA2G,EAAA9H,KAIA+H,EAAAF,EAAA/H,GAKA,OAJAiI,EAAAjK,IAAA+J,EAAA/H,EAAAhC,KACAiK,EAAAC,KAAAH,EAAA/H,EAAAkI,MACAD,EAAAE,IAAAJ,EAAA/H,EAAAmI,KACAF,EAAAG,KAAAL,EAAA/H,EAAAoI,MACAH,IAOA,2BACAI,QAAA,SAAAC,GACA,IAAAjH,EAAAiH,EAAAC,cAGAvI,EAFAsI,EAAA/F,eAEA,SAAAiG,GACA,iBAAAA,EACAA,GAAcnH,SAAAhB,IAAAmI,IAEdA,EAAAlI,KAAAC,MAAAD,KAAAE,UAAAgI,KACAnH,SAGA,IAAAoH,GAAAD,GAAAjJ,OAAAmJ,MAAA3J,UAAAkF,MAAA0E,MAAAC,WAAA,KACA,OAAA5I,EAAA2I,MAAAE,KAAAJ,MAQAzI,EAAA8I,MAAA,SAAA7I,EAAAC,GAaA,MAZA,iBAAAD,IACAA,GAAeI,IAAAJ,IAGfA,EAAA0B,MAAA,EACA1B,EAAAsB,OACAtB,EAAA0B,KAAA1B,EAAAsB,aACAtB,EAAAsB,KAEArB,KAAAa,EAEAf,EAAAC,EAGA,SAAA0F,EAAAoD,EAAAxH,GACA,GAAAoE,EACA,OAAAzF,EAAAyF,EAAAoD,EAAAxH,GAEA,IAAAwH,EAAAxB,WAAA,KAAAwB,EAAAxB,WAAA,MAAAhG,EAAAuE,MAAA,CAGA,QAAApH,KADAiH,EAAA,IAAA5F,MAAA,mBAAAwB,EAAAuE,MAAAkD,QAAAzH,EAAAuE,cACAvE,EACAoE,EAAAjH,GAAA6C,EAAA7C,GACA,OAAAwB,EAAAyF,EAAAoD,EAAAxH,GAGA,OAAArB,EAAAyF,EAAAoD,EAAAxH,MA6GAvB,IAxd0BN,EAAAiJ,MAAA1L,EAAA0C,GAAAD,KAAAxC,EAAAD,QAAA2C,sBCjB1B,IAAAqJ,EAAA5J,KAAA4J,KACArG,EAAAvD,KAAAuD,MACA1F,EAAAD,QAAA,SAAAiM,GACA,OAAAC,MAAAD,MAAA,GAAAA,EAAA,EAAAtG,EAAAqG,GAAAC,uBCHAhM,EAAAD,QAAA,SAAAiM,GACA,QAAA1J,GAAA0J,EAAA,MAAAE,UAAA,yBAAAF,GACA,OAAAA,wBCFA,IAAAG,EAAetM,EAAQ,IAGvBG,EAAAD,QAAA,SAAAiM,EAAAI,GACA,IAAAD,EAAAH,GAAA,OAAAA,EACA,IAAAK,EAAAC,EACA,GAAAF,GAAA,mBAAAC,EAAAL,EAAAzJ,YAAA4J,EAAAG,EAAAD,EAAAjM,KAAA4L,IAAA,OAAAM,EACA,sBAAAD,EAAAL,EAAAO,WAAAJ,EAAAG,EAAAD,EAAAjM,KAAA4L,IAAA,OAAAM,EACA,IAAAF,GAAA,mBAAAC,EAAAL,EAAAzJ,YAAA4J,EAAAG,EAAAD,EAAAjM,KAAA4L,IAAA,OAAAM,EACA,MAAAJ,UAAA,iECTA,IAAAM,EAAgB3M,EAAQ,KACxB4M,EAAAtK,KAAAsK,IACAzM,EAAAD,QAAA,SAAAiM,GACA,OAAAA,EAAA,EAAAS,EAAAD,EAAAR,GAAA,0CCJA,IAAAU,EAAa7M,EAAQ,IAARA,CAAmB,QAChC8M,EAAU9M,EAAQ,KAClBG,EAAAD,QAAA,SAAAyB,GACA,OAAAkL,EAAAlL,KAAAkL,EAAAlL,GAAAmL,EAAAnL,0BCHA,IAAAoL,EAAW/M,EAAQ,IACnBgN,EAAahN,EAAQ,IAErBiN,EAAAD,EADA,wBACAA,EADA,2BAGA7M,EAAAD,QAAA,SAAAyB,EAAAN,GACA,OAAA4L,EAAAtL,KAAAsL,EAAAtL,QAAAc,IAAApB,UACC,eAAA4D,MACDiI,QAAAH,EAAAG,QACA3L,KAAQvB,EAAQ,IAAY,gBAC5BmN,UAAA,4DCTAhN,EAAAD,QAAA,gGAEAkN,MAAA,0BCHA,IAAAd,EAAetM,EAAQ,IACvB8H,EAAe9H,EAAQ,IAAW8H,SAElCuF,EAAAf,EAAAxE,IAAAwE,EAAAxE,EAAAC,eACA5H,EAAAD,QAAA,SAAAiM,GACA,OAAAkB,EAAAvF,EAAAC,cAAAoE,2BCLAhM,EAAAD,SAAkBoN,QAAYtN,EAAQ,KAAgCwB,YAAA,qBCAtE,IAAA+L,EAGAA,EAAA,WACA,OAAAzB,KADA,GAIA,IAEAyB,KAAAC,SAAA,cAAAA,KAAA,EAAAC,MAAA,QACC,MAAA5F,GAED,iBAAA6F,SAAAH,EAAAG,QAOAvN,EAAAD,QAAAqN,uBCnBApN,EAAAD,SAAkBF,EAAQ,MAAsBA,EAAQ,GAARA,CAAkB,WAClE,OAAuG,GAAvGc,OAAAC,eAA+Bf,EAAQ,IAARA,CAAuB,YAAgBiB,IAAA,WAAmB,YAAc0M,yBCDvG,IAAAC,EAAU5N,EAAQ,IAClB6N,EAAgB7N,EAAQ,IACxB8N,EAAmB9N,EAAQ,IAARA,EAA2B,GAC9C+N,EAAe/N,EAAQ,IAARA,CAAuB,YAEtCG,EAAAD,QAAA,SAAA4B,EAAAkM,GACA,IAGArM,EAHAsM,EAAAJ,EAAA/L,GACA1B,EAAA,EACAuF,KAEA,IAAAhE,KAAAsM,EAAAtM,GAAAoM,GAAAH,EAAAK,EAAAtM,IAAAgE,EAAAV,KAAAtD,GAEA,KAAAqM,EAAAjK,OAAA3D,GAAAwN,EAAAK,EAAAtM,EAAAqM,EAAA5N,SACA0N,EAAAnI,EAAAhE,IAAAgE,EAAAV,KAAAtD,IAEA,OAAAgE,wBCdA,IAAAuI,EAAUlO,EAAQ,IAElBG,EAAAD,QAAAY,OAAA,KAAAqN,qBAAA,GAAArN,OAAA,SAAAqL,GACA,gBAAA+B,EAAA/B,KAAAiB,MAAA,IAAAtM,OAAAqL,wBCJAhM,EAAAD,QAAiBF,EAAQ,uBCAzB,IAAA+M,EAAA5M,EAAAD,SAA6BgN,QAAA,SAC7B,iBAAAkB,UAAArB,8JCMA,SAAAsB,IAAA,IAAAC,EAAAC,EAAA,OAAAC,EAAAlB,QAAAmB,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cACI9G,SAAS+G,eAAe,uBAAuBC,QAAUC,EAD7DL,EAAAE,KAAA,KAAAI,EAAAC,UAGyB,EAAAC,EAAAC,iBAAgB,OAHzC,OAGUb,EAHVI,EAAAU,KAIQb,OAJR,EAKQD,GAAUA,EAAA,iBACVC,EAAQD,EAAA,gBAERC,IAAUA,EAAMc,SAAS,OAAMd,GAAS,KACxCA,GAAmB,wBAAVA,IACTzG,SAAS+G,eAAe,mBAAmBS,MAAMC,QAAU,QAC3DzH,SAAS+G,eAAe,UAAUW,UAAYjB,EAC9CzG,SAAS+G,eAAe,qBAAqBW,UAAW,8BAZhE,wBAAAd,EAAAe,SAAApB,EAAAvC,8DAPAoD,EAAAlP,EAAA,KAEA,SAAS+O,IACLjH,SAAS4H,OAAS,wCAClBhC,OAAO/F,SAASC,KAAO,MAmB3B+H,yBCrBA,IAAA9B,EAAgB7N,EAAQ,IACxB4P,EAAe5P,EAAQ,KACvB6P,EAAsB7P,EAAQ,KAC9BG,EAAAD,QAAA,SAAA4P,GACA,gBAAAC,EAAAC,EAAAC,GACA,IAGA5O,EAHA4M,EAAAJ,EAAAkC,GACAhM,EAAA6L,EAAA3B,EAAAlK,QACAmM,EAAAL,EAAAI,EAAAlM,GAIA,GAAA+L,GAAAE,MAAA,KAAAjM,EAAAmM,GAGA,IAFA7O,EAAA4M,EAAAiC,OAEA7O,EAAA,cAEK,KAAY0C,EAAAmM,EAAeA,IAAA,IAAAJ,GAAAI,KAAAjC,IAChCA,EAAAiC,KAAAF,EAAA,OAAAF,GAAAI,GAAA,EACK,OAAAJ,IAAA,yBCpBL,IAAAnD,EAAgB3M,EAAQ,KACxBmQ,EAAA7N,KAAA6N,IACAvD,EAAAtK,KAAAsK,IACAzM,EAAAD,QAAA,SAAAgQ,EAAAnM,GAEA,OADAmM,EAAAvD,EAAAuD,IACA,EAAAC,EAAAD,EAAAnM,EAAA,GAAA6I,EAAAsD,EAAAnM,yBCIA,IAAAwJ,EAAA,WAAqB,OAAAzB,KAArB,IAAmC0B,SAAA,cAAAA,GAInC4C,EAAA7C,EAAA8C,oBACAvP,OAAAwP,oBAAA/C,GAAAlI,QAAA,yBAGAkL,EAAAH,GAAA7C,EAAA8C,mBAOA,GAJA9C,EAAA8C,wBAAA5N,EAEAtC,EAAAD,QAAiBF,EAAQ,KAEzBoQ,EAEA7C,EAAA8C,mBAAAE,OAGA,WACAhD,EAAA8C,mBACG,MAAAxI,GACH0F,EAAA8C,wBAAA5N,uBCzBA,SAAAuK,GACA,aAEA,IAEAvK,EAFA+N,EAAA1P,OAAAkB,UACAyO,EAAAD,EAAAvO,eAEAyO,EAAA,mBAAAvP,iBACAwP,EAAAD,EAAAE,UAAA,aACAC,EAAAH,EAAAI,eAAA,kBACAC,EAAAL,EAAAtP,aAAA,gBAEA4P,EAAA,iBAAA7Q,EACA8Q,EAAAjE,EAAAqD,mBACA,GAAAY,EACAD,IAGA7Q,EAAAD,QAAA+Q,OAJA,EAaAA,EAAAjE,EAAAqD,mBAAAW,EAAA7Q,EAAAD,YAcAuO,OAoBA,IAAAyC,EAAA,iBACAC,EAAA,iBACAC,EAAA,YACAC,EAAA,YAIAC,KAYAC,KACAA,EAAAZ,GAAA,WACA,OAAA7E,MAGA,IAAA0F,EAAA1Q,OAAA2Q,eACAC,EAAAF,OAAAG,QACAD,GACAA,IAAAlB,GACAC,EAAAlQ,KAAAmR,EAAAf,KAGAY,EAAAG,GAGA,IAAAE,EAAAC,EAAA7P,UACA8P,EAAA9P,UAAAlB,OAAAY,OAAA6P,GACAQ,EAAA/P,UAAA4P,EAAAI,YAAAH,EACAA,EAAAG,YAAAD,EACAF,EAAAd,GACAgB,EAAAE,YAAA,oBAYAhB,EAAAiB,oBAAA,SAAAC,GACA,IAAAC,EAAA,mBAAAD,KAAAH,YACA,QAAAI,IACAA,IAAAL,GAGA,uBAAAK,EAAAH,aAAAG,EAAAzR,QAIAsQ,EAAAoB,KAAA,SAAAF,GAUA,OATArR,OAAAwR,eACAxR,OAAAwR,eAAAH,EAAAN,IAEAM,EAAAI,UAAAV,EACAd,KAAAoB,IACAA,EAAApB,GAAA,sBAGAoB,EAAAnQ,UAAAlB,OAAAY,OAAAkQ,GACAO,GAOAlB,EAAAuB,MAAA,SAAAC,GACA,OAAYC,QAAAD,IA8EZE,EAAAC,EAAA5Q,WACA4Q,EAAA5Q,UAAA6O,GAAA,WACA,OAAA/E,MAEAmF,EAAA2B,gBAKA3B,EAAA4B,MAAA,SAAAC,EAAAC,EAAAC,EAAAC,GACA,IAAAC,EAAA,IAAAN,EACAnE,EAAAqE,EAAAC,EAAAC,EAAAC,IAGA,OAAAhC,EAAAiB,oBAAAa,GACAG,EACAA,EAAAtE,OAAAuE,KAAA,SAAAxN,GACA,OAAAA,EAAAyN,KAAAzN,EAAAtE,MAAA6R,EAAAtE,UAsKA+D,EAAAf,GAEAA,EAAAb,GAAA,YAOAa,EAAAjB,GAAA,WACA,OAAA7E,MAGA8F,EAAAlP,SAAA,WACA,4BAkCAuO,EAAAoC,KAAA,SAAAvR,GACA,IAAAuR,KACA,QAAA1R,KAAAG,EACAuR,EAAApO,KAAAtD,GAMA,OAJA0R,EAAAC,UAIA,SAAA1E,IACA,KAAAyE,EAAAtP,QAAA,CACA,IAAApC,EAAA0R,EAAAE,MACA,GAAA5R,KAAAG,EAGA,OAFA8M,EAAAvN,MAAAM,EACAiN,EAAAwE,MAAA,EACAxE,EAQA,OADAA,EAAAwE,MAAA,EACAxE,IAsCAqC,EAAAU,SAMA6B,EAAAxR,WACAgQ,YAAAwB,EAEAC,MAAA,SAAAC,GAcA,GAbA5H,KAAA6C,KAAA,EACA7C,KAAA8C,KAAA,EAGA9C,KAAAsD,KAAAtD,KAAA6H,MAAAlR,EACAqJ,KAAAsH,MAAA,EACAtH,KAAA8H,SAAA,KAEA9H,KAAAxH,OAAA,OACAwH,KAAA2G,IAAAhQ,EAEAqJ,KAAA+H,WAAAvI,QAAAwI,IAEAJ,EACA,QAAA/S,KAAAmL,KAEA,MAAAnL,EAAAsG,OAAA,IACAwJ,EAAAlQ,KAAAuL,KAAAnL,KACAyL,OAAAzL,EAAAuG,MAAA,MACA4E,KAAAnL,GAAA8B,IAMAgN,KAAA,WACA3D,KAAAsH,MAAA,EAEA,IACAW,EADAjI,KAAA+H,WAAA,GACAG,WACA,aAAAD,EAAAhO,KACA,MAAAgO,EAAAtB,IAGA,OAAA3G,KAAAmI,MAGAC,kBAAA,SAAAC,GACA,GAAArI,KAAAsH,KACA,MAAAe,EAGA,IAAAtJ,EAAAiB,KACA,SAAAsI,EAAAC,EAAAC,GAYA,OAXAC,EAAAxO,KAAA,QACAwO,EAAA9B,IAAA0B,EACAtJ,EAAA+D,KAAAyF,EAEAC,IAGAzJ,EAAAvG,OAAA,OACAuG,EAAA4H,IAAAhQ,KAGA6R,EAGA,QAAAlU,EAAA0L,KAAA+H,WAAA9P,OAAA,EAA8C3D,GAAA,IAAQA,EAAA,CACtD,IAAAoU,EAAA1I,KAAA+H,WAAAzT,GACAmU,EAAAC,EAAAR,WAEA,YAAAQ,EAAAC,OAIA,OAAAL,EAAA,OAGA,GAAAI,EAAAC,QAAA3I,KAAA6C,KAAA,CACA,IAAA+F,EAAAjE,EAAAlQ,KAAAiU,EAAA,YACAG,EAAAlE,EAAAlQ,KAAAiU,EAAA,cAEA,GAAAE,GAAAC,EAAA,CACA,GAAA7I,KAAA6C,KAAA6F,EAAAI,SACA,OAAAR,EAAAI,EAAAI,UAAA,GACa,GAAA9I,KAAA6C,KAAA6F,EAAAK,WACb,OAAAT,EAAAI,EAAAK,iBAGW,GAAAH,GACX,GAAA5I,KAAA6C,KAAA6F,EAAAI,SACA,OAAAR,EAAAI,EAAAI,UAAA,OAGW,KAAAD,EAMX,UAAA3R,MAAA,0CALA,GAAA8I,KAAA6C,KAAA6F,EAAAK,WACA,OAAAT,EAAAI,EAAAK,gBAUAC,OAAA,SAAA/O,EAAA0M,GACA,QAAArS,EAAA0L,KAAA+H,WAAA9P,OAAA,EAA8C3D,GAAA,IAAQA,EAAA,CACtD,IAAAoU,EAAA1I,KAAA+H,WAAAzT,GACA,GAAAoU,EAAAC,QAAA3I,KAAA6C,MACA8B,EAAAlQ,KAAAiU,EAAA,eACA1I,KAAA6C,KAAA6F,EAAAK,WAAA,CACA,IAAAE,EAAAP,EACA,OAIAO,IACA,UAAAhP,GACA,aAAAA,IACAgP,EAAAN,QAAAhC,GACAA,GAAAsC,EAAAF,aAGAE,EAAA,MAGA,IAAAR,EAAAQ,IAAAf,cAIA,OAHAO,EAAAxO,OACAwO,EAAA9B,MAEAsC,GACAjJ,KAAAxH,OAAA,OACAwH,KAAA8C,KAAAmG,EAAAF,WACAvD,GAGAxF,KAAAkJ,SAAAT,IAGAS,SAAA,SAAAT,EAAAU,GACA,aAAAV,EAAAxO,KACA,MAAAwO,EAAA9B,IAcA,MAXA,UAAA8B,EAAAxO,MACA,aAAAwO,EAAAxO,KACA+F,KAAA8C,KAAA2F,EAAA9B,IACO,WAAA8B,EAAAxO,MACP+F,KAAAmI,KAAAnI,KAAA2G,IAAA8B,EAAA9B,IACA3G,KAAAxH,OAAA,SACAwH,KAAA8C,KAAA,OACO,WAAA2F,EAAAxO,MAAAkP,IACPnJ,KAAA8C,KAAAqG,GAGA3D,GAGA4D,OAAA,SAAAL,GACA,QAAAzU,EAAA0L,KAAA+H,WAAA9P,OAAA,EAA8C3D,GAAA,IAAQA,EAAA,CACtD,IAAAoU,EAAA1I,KAAA+H,WAAAzT,GACA,GAAAoU,EAAAK,eAGA,OAFA/I,KAAAkJ,SAAAR,EAAAR,WAAAQ,EAAAS,UACAnB,EAAAU,GACAlD,IAKA6D,MAAA,SAAAV,GACA,QAAArU,EAAA0L,KAAA+H,WAAA9P,OAAA,EAA8C3D,GAAA,IAAQA,EAAA,CACtD,IAAAoU,EAAA1I,KAAA+H,WAAAzT,GACA,GAAAoU,EAAAC,WAAA,CACA,IAAAF,EAAAC,EAAAR,WACA,aAAAO,EAAAxO,KAAA,CACA,IAAAqP,EAAAb,EAAA9B,IACAqB,EAAAU,GAEA,OAAAY,GAMA,UAAApS,MAAA,0BAGAqS,cAAA,SAAAC,EAAAC,EAAAC,GAaA,OAZA1J,KAAA8H,UACAhD,SAAAe,EAAA2D,GACAC,aACAC,WAGA,SAAA1J,KAAAxH,SAGAwH,KAAA2G,IAAAhQ,GAGA6O,IA3qBA,SAAA7C,EAAAqE,EAAAC,EAAAC,EAAAC,GAEA,IAAAwC,EAAA1C,KAAA/Q,qBAAA8P,EAAAiB,EAAAjB,EACA4D,EAAA5U,OAAAY,OAAA+T,EAAAzT,WACA6I,EAAA,IAAA2I,EAAAP,OAMA,OAFAyC,EAAAC,QA0MA,SAAA7C,EAAAE,EAAAnI,GACA,IAAArB,EAAA0H,EAEA,gBAAA5M,EAAAmO,GACA,GAAAjJ,IAAA4H,EACA,UAAApO,MAAA,gCAGA,GAAAwG,IAAA6H,EAAA,CACA,aAAA/M,EACA,MAAAmO,EAKA,OAAAmD,IAMA,IAHA/K,EAAAvG,SACAuG,EAAA4H,QAEA,CACA,IAAAmB,EAAA/I,EAAA+I,SACA,GAAAA,EAAA,CACA,IAAAiC,EAAAC,EAAAlC,EAAA/I,GACA,GAAAgL,EAAA,CACA,GAAAA,IAAAvE,EAAA,SACA,OAAAuE,GAIA,YAAAhL,EAAAvG,OAGAuG,EAAAuE,KAAAvE,EAAA8I,MAAA9I,EAAA4H,SAES,aAAA5H,EAAAvG,OAAA,CACT,GAAAkF,IAAA0H,EAEA,MADA1H,EAAA6H,EACAxG,EAAA4H,IAGA5H,EAAAqJ,kBAAArJ,EAAA4H,SAES,WAAA5H,EAAAvG,QACTuG,EAAAiK,OAAA,SAAAjK,EAAA4H,KAGAjJ,EAAA4H,EAEA,IAAAmD,EAAAwB,EAAAjD,EAAAE,EAAAnI,GACA,cAAA0J,EAAAxO,KAAA,CAOA,GAJAyD,EAAAqB,EAAAuI,KACA/B,EACAF,EAEAoD,EAAA9B,MAAAnB,EACA,SAGA,OACAjQ,MAAAkT,EAAA9B,IACAW,KAAAvI,EAAAuI,MAGS,UAAAmB,EAAAxO,OACTyD,EAAA6H,EAGAxG,EAAAvG,OAAA,QACAuG,EAAA4H,IAAA8B,EAAA9B,OAlRAuD,CAAAlD,EAAAE,EAAAnI,GAEA6K,EAcA,SAAAK,EAAAvJ,EAAAzH,EAAA0N,GACA,IACA,OAAc1M,KAAA,SAAA0M,IAAAjG,EAAAjM,KAAAwE,EAAA0N,IACT,MAAAwD,GACL,OAAclQ,KAAA,QAAA0M,IAAAwD,IAiBd,SAAAnE,KACA,SAAAC,KACA,SAAAF,KA4BA,SAAAc,EAAA3Q,IACA,yBAAAsJ,QAAA,SAAAhH,GACAtC,EAAAsC,GAAA,SAAAmO,GACA,OAAA3G,KAAA6J,QAAArR,EAAAmO,MAoCA,SAAAG,EAAA8C,GAwCA,IAAAQ,EAgCApK,KAAA6J,QA9BA,SAAArR,EAAAmO,GACA,SAAA0D,IACA,WAAAC,QAAA,SAAAnH,EAAAoH,IA3CA,SAAAC,EAAAhS,EAAAmO,EAAAxD,EAAAoH,GACA,IAAA9B,EAAAwB,EAAAL,EAAApR,GAAAoR,EAAAjD,GACA,aAAA8B,EAAAxO,KAEO,CACP,IAAAJ,EAAA4O,EAAA9B,IACApR,EAAAsE,EAAAtE,MACA,OAAAA,GACA,iBAAAA,GACAoP,EAAAlQ,KAAAc,EAAA,WACA+U,QAAAnH,QAAA5N,EAAAqR,SAAAS,KAAA,SAAA9R,GACAiV,EAAA,OAAAjV,EAAA4N,EAAAoH,IACW,SAAAJ,GACXK,EAAA,QAAAL,EAAAhH,EAAAoH,KAIAD,QAAAnH,QAAA5N,GAAA8R,KAAA,SAAAoD,GAgBA5Q,EAAAtE,MAAAkV,EACAtH,EAAAtJ,IACS0Q,GAhCTA,EAAA9B,EAAA9B,KAyCA6D,CAAAhS,EAAAmO,EAAAxD,EAAAoH,KAIA,OAAAH,EAaAA,IAAA/C,KACAgD,EAGAA,GACAA,KA+GA,SAAAL,EAAAlC,EAAA/I,GACA,IAAAvG,EAAAsP,EAAAhD,SAAA/F,EAAAvG,QACA,GAAAA,IAAA7B,EAAA,CAKA,GAFAoI,EAAA+I,SAAA,KAEA,UAAA/I,EAAAvG,OAAA,CACA,GAAAsP,EAAAhD,SAAA4F,SAGA3L,EAAAvG,OAAA,SACAuG,EAAA4H,IAAAhQ,EACAqT,EAAAlC,EAAA/I,GAEA,UAAAA,EAAAvG,QAGA,OAAAgN,EAIAzG,EAAAvG,OAAA,QACAuG,EAAA4H,IAAA,IAAApG,UACA,kDAGA,OAAAiF,EAGA,IAAAiD,EAAAwB,EAAAzR,EAAAsP,EAAAhD,SAAA/F,EAAA4H,KAEA,aAAA8B,EAAAxO,KAIA,OAHA8E,EAAAvG,OAAA,QACAuG,EAAA4H,IAAA8B,EAAA9B,IACA5H,EAAA+I,SAAA,KACAtC,EAGA,IAAA3G,EAAA4J,EAAA9B,IAEA,OAAA9H,EAOAA,EAAAyI,MAGAvI,EAAA+I,EAAA2B,YAAA5K,EAAAtJ,MAGAwJ,EAAA+D,KAAAgF,EAAA4B,QAQA,WAAA3K,EAAAvG,SACAuG,EAAAvG,OAAA,OACAuG,EAAA4H,IAAAhQ,GAUAoI,EAAA+I,SAAA,KACAtC,GANA3G,GA3BAE,EAAAvG,OAAA,QACAuG,EAAA4H,IAAA,IAAApG,UAAA,oCACAxB,EAAA+I,SAAA,KACAtC,GAoDA,SAAAmF,EAAAC,GACA,IAAAlC,GAAiBC,OAAAiC,EAAA,IAEjB,KAAAA,IACAlC,EAAAI,SAAA8B,EAAA,IAGA,KAAAA,IACAlC,EAAAK,WAAA6B,EAAA,GACAlC,EAAAS,SAAAyB,EAAA,IAGA5K,KAAA+H,WAAA5O,KAAAuP,GAGA,SAAAV,EAAAU,GACA,IAAAD,EAAAC,EAAAR,eACAO,EAAAxO,KAAA,gBACAwO,EAAA9B,IACA+B,EAAAR,WAAAO,EAGA,SAAAf,EAAAP,GAIAnH,KAAA+H,aAAwBY,OAAA,SACxBxB,EAAA3H,QAAAmL,EAAA3K,MACAA,KAAA2H,OAAA,GA8BA,SAAA9B,EAAA2D,GACA,GAAAA,EAAA,CACA,IAAAqB,EAAArB,EAAA3E,GACA,GAAAgG,EACA,OAAAA,EAAApW,KAAA+U,GAGA,sBAAAA,EAAA1G,KACA,OAAA0G,EAGA,IAAAlJ,MAAAkJ,EAAAvR,QAAA,CACA,IAAA3D,GAAA,EAAAwO,EAAA,SAAAA,IACA,OAAAxO,EAAAkV,EAAAvR,QACA,GAAA0M,EAAAlQ,KAAA+U,EAAAlV,GAGA,OAFAwO,EAAAvN,MAAAiU,EAAAlV,GACAwO,EAAAwE,MAAA,EACAxE,EAOA,OAHAA,EAAAvN,MAAAoB,EACAmM,EAAAwE,MAAA,EAEAxE,GAGA,OAAAA,UAKA,OAAYA,KAAAgH,GAIZ,SAAAA,IACA,OAAYvU,MAAAoB,EAAA2Q,MAAA,IAhgBZ,CA8sBA,WAAe,OAAAtH,KAAf,IAA6B0B,SAAA,cAAAA,0BCrtB7B,SAAAR,GAAA,IAAA4J,OAAA,IAAA5J,MACA,oBAAAgG,YACAtF,OACA9B,EAAA4B,SAAAxL,UAAA4J,MAiBA,SAAAiL,EAAAzU,EAAA0U,GACAhL,KAAAvD,IAAAnG,EACA0J,KAAAiL,SAAAD,EAfA5W,EAAAyI,WAAA,WACA,WAAAkO,EAAAjL,EAAArL,KAAAoI,WAAAiO,EAAA/K,WAAAtB,eAEArK,EAAA8W,YAAA,WACA,WAAAH,EAAAjL,EAAArL,KAAAyW,YAAAJ,EAAA/K,WAAAoL,gBAEA/W,EAAAqK,aACArK,EAAA+W,cAAA,SAAAxS,GACAA,GACAA,EAAAyS,SAQAL,EAAA7U,UAAAmV,MAAAN,EAAA7U,UAAAoV,IAAA,aACAP,EAAA7U,UAAAkV,MAAA,WACApL,KAAAiL,SAAAxW,KAAAqW,EAAA9K,KAAAvD,MAIArI,EAAAmX,OAAA,SAAAC,EAAAC,GACAhN,aAAA+M,EAAAE,gBACAF,EAAAG,aAAAF,GAGArX,EAAAwX,SAAA,SAAAJ,GACA/M,aAAA+M,EAAAE,gBACAF,EAAAG,cAAA,GAGAvX,EAAAyX,aAAAzX,EAAA0X,OAAA,SAAAN,GACA/M,aAAA+M,EAAAE,gBAEA,IAAAD,EAAAD,EAAAG,aACAF,GAAA,IACAD,EAAAE,eAAA7O,WAAA,WACA2O,EAAAO,YACAP,EAAAO,cACKN,KAKLvX,EAAQ,KAIRE,EAAA4X,aAAA,oBAAA9E,WAAA8E,mBACA,IAAA9K,KAAA8K,cACAhM,WAAAgM,aACA5X,EAAA6X,eAAA,oBAAA/E,WAAA+E,qBACA,IAAA/K,KAAA+K,gBACAjM,WAAAiM,wDC9DA,SAAA/K,EAAAgL,IAAA,SAAAhL,EAAAvK,GACA,aAEA,IAAAuK,EAAA8K,aAAA,CAIA,IAIAG,EAJAC,EAAA,EACAC,KACAC,GAAA,EACAC,EAAArL,EAAAlF,SAoJAwQ,EAAAxX,OAAA2Q,gBAAA3Q,OAAA2Q,eAAAzE,GACAsL,OAAA3P,WAAA2P,EAAAtL,EAGU,wBAAAtK,SAAAnC,KAAAyM,EAAAgL,SApFVC,EAAA,SAAA7D,GACA4D,EAAAO,SAAA,WAA0CC,EAAApE,MAI1C,WAGA,GAAApH,EAAAyL,cAAAzL,EAAA0L,cAAA,CACA,IAAAC,GAAA,EACAC,EAAA5L,EAAA6L,UAMA,OALA7L,EAAA6L,UAAA,WACAF,GAAA,GAEA3L,EAAAyL,YAAA,QACAzL,EAAA6L,UAAAD,EACAD,GAwEKG,GApEL,WAKA,IAAAC,EAAA,gBAAAzW,KAAAC,SAAA,IACAyW,EAAA,SAAA1P,GACAA,EAAA2P,SAAAjM,GACA,iBAAA1D,EAAAnD,MACA,IAAAmD,EAAAnD,KAAAd,QAAA0T,IACAP,GAAAlP,EAAAnD,KAAAe,MAAA6R,EAAAhV,UAIAiJ,EAAAkM,iBACAlM,EAAAkM,iBAAA,UAAAF,GAAA,GAEAhM,EAAAmM,YAAA,YAAAH,GAGAf,EAAA,SAAA7D,GACApH,EAAAyL,YAAAM,EAAA3E,EAAA,MAiDAgF,GAEKpM,EAAAqM,eA/CL,WACA,IAAAC,EAAA,IAAAD,eACAC,EAAAC,MAAAV,UAAA,SAAAvP,GAEAkP,EADAlP,EAAAnD,OAIA8R,EAAA,SAAA7D,GACAkF,EAAAE,MAAAf,YAAArE,IAyCAqF,GAEKpB,GAAA,uBAAAA,EAAAtQ,cAAA,UAvCL,WACA,IAAA2R,EAAArB,EAAAsB,gBACA1B,EAAA,SAAA7D,GAGA,IAAAwF,EAAAvB,EAAAtQ,cAAA,UACA6R,EAAAvQ,mBAAA,WACAmP,EAAApE,GACAwF,EAAAvQ,mBAAA,KACAqQ,EAAAG,YAAAD,GACAA,EAAA,MAEAF,EAAAI,YAAAF,IA6BAG,GAxBA9B,EAAA,SAAA7D,GACAzL,WAAA6P,EAAA,EAAApE,IA8BAkE,EAAAR,aA1KA,SAAA3U,GAEA,mBAAAA,IACAA,EAAA,IAAAqK,SAAA,GAAArK,IAIA,IADA,IAAAuI,EAAA,IAAAC,MAAAE,UAAA9H,OAAA,GACA3D,EAAA,EAAqBA,EAAAsL,EAAA3H,OAAiB3D,IACtCsL,EAAAtL,GAAAyL,UAAAzL,EAAA,GAGA,IAAA4Z,GAAkB7W,WAAAuI,QAGlB,OAFAyM,EAAAD,GAAA8B,EACA/B,EAAAC,GACAA,KA6JAI,EAAAP,iBA1JA,SAAAA,EAAA3D,UACA+D,EAAA/D,GAyBA,SAAAoE,EAAApE,GAGA,GAAAgE,EAGAzP,WAAA6P,EAAA,EAAApE,OACS,CACT,IAAA4F,EAAA7B,EAAA/D,GACA,GAAA4F,EAAA,CACA5B,GAAA,EACA,KAjCA,SAAA4B,GACA,IAAA7W,EAAA6W,EAAA7W,SACAuI,EAAAsO,EAAAtO,KACA,OAAAA,EAAA3H,QACA,OACAZ,IACA,MACA,OACAA,EAAAuI,EAAA,IACA,MACA,OACAvI,EAAAuI,EAAA,GAAAA,EAAA,IACA,MACA,OACAvI,EAAAuI,EAAA,GAAAA,EAAA,GAAAA,EAAA,IACA,MACA,QACAvI,EAAAyI,MAAAnJ,EAAAiJ,IAiBAuO,CAAAD,GACiB,QACjBjC,EAAA3D,GACAgE,GAAA,MAvEA,CAyLC,oBAAApF,UAAA,IAAAhG,EAAAlB,KAAAkB,EAAAgG,oDCzLDhT,EAAQ,KACRG,EAAAD,QAAiBF,EAAQ,IAAqBc,OAAAuS,0BCA9C,IAAA6G,EAAela,EAAQ,IACvBma,EAAYna,EAAQ,IAEpBA,EAAQ,GAARA,CAAuB,kBACvB,gBAAAmM,GACA,OAAAgO,EAAAD,EAAA/N,2BCNA,IAAAa,EAAahN,EAAQ,IACrB+M,EAAW/M,EAAQ,IACnBoa,EAAUpa,EAAQ,IAClBqa,EAAWra,EAAQ,IACnB4N,EAAU5N,EAAQ,IAGlBsa,EAAA,SAAAvU,EAAApF,EAAAsY,GACA,IASAtX,EAAA4Y,EAAAC,EATAC,EAAA1U,EAAAuU,EAAAI,EACAC,EAAA5U,EAAAuU,EAAAM,EACAC,EAAA9U,EAAAuU,EAAA/N,EACAuO,EAAA/U,EAAAuU,EAAAS,EACAC,EAAAjV,EAAAuU,EAAAW,EACAC,EAAAnV,EAAAuU,EAAAa,EACAjb,EAAAya,EAAA5N,IAAApM,KAAAoM,EAAApM,OACAya,EAAAlb,EAAA,UACAmb,EAAAV,EAAA3N,EAAA6N,EAAA7N,EAAArM,IAAAqM,EAAArM,QAAkF,UAGlF,IAAAgB,KADAgZ,IAAA1B,EAAAtY,GACAsY,GAEAsB,GAAAE,GAAAY,QAAA5Y,IAAA4Y,EAAA1Z,KACAiM,EAAA1N,EAAAyB,KAEA6Y,EAAAD,EAAAc,EAAA1Z,GAAAsX,EAAAtX,GAEAzB,EAAAyB,GAAAgZ,GAAA,mBAAAU,EAAA1Z,GAAAsX,EAAAtX,GAEAqZ,GAAAT,EAAAH,EAAAI,EAAAxN,GAEAkO,GAAAG,EAAA1Z,IAAA6Y,EAAA,SAAAc,GACA,IAAAZ,EAAA,SAAA/M,EAAA4N,EAAA9a,GACA,GAAAqL,gBAAAwP,EAAA,CACA,OAAAzP,UAAA9H,QACA,kBAAAuX,EACA,kBAAAA,EAAA3N,GACA,kBAAA2N,EAAA3N,EAAA4N,GACW,WAAAD,EAAA3N,EAAA4N,EAAA9a,GACF,OAAA6a,EAAA1P,MAAAE,KAAAD,YAGT,OADA6O,EAAA,UAAAY,EAAA,UACAZ,EAXA,CAaKF,GAAAM,GAAA,mBAAAN,EAAAJ,EAAA5M,SAAAjN,KAAAia,KAELM,KACA5a,EAAAsb,UAAAtb,EAAAsb,aAA+C7Z,GAAA6Y,EAE/CzU,EAAAuU,EAAAmB,GAAAL,MAAAzZ,IAAA0Y,EAAAe,EAAAzZ,EAAA6Y,MAKAF,EAAAI,EAAA,EACAJ,EAAAM,EAAA,EACAN,EAAA/N,EAAA,EACA+N,EAAAS,EAAA,EACAT,EAAAW,EAAA,GACAX,EAAAa,EAAA,GACAb,EAAAoB,EAAA,GACApB,EAAAmB,EAAA,IACAtb,EAAAD,QAAAoa,oBC5DA,IAAAtN,EAAA7M,EAAAD,QAAA,oBAAAwN,eAAApL,WACAoL,OAAA,oBAAAsF,WAAA1Q,WAAA0Q,KAEAxF,SAAA,cAAAA,GACA,iBAAAmO,UAAA3O,qBCLA7M,EAAAD,QAAA,SAAAiM,GACA,uBAAAA,EAAA,OAAAA,EAAA,mBAAAA,4NCkBO,SAAAkC,EAA+BuN,GAA/B,IAAAC,EAAA,OAAArN,EAAAlB,QAAAmB,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,mBACsBnM,IAArBmZ,IAAgCA,EAAmB,IAC9B,KAArBA,GAA4BA,EAAiBvM,SAAS,OAAMuM,GAAoB,KAFjFlN,EAAAC,KAAA,EAAAD,EAAAE,KAAA,KAAAI,EAAAC,SAI0B6M,EAAaF,EAAb,UAAuC9T,SAASiU,OAAhD,UAJ1B,UAIOF,EAJPnN,EAAAU,KAMwC,KAAnC,EAAA4M,EAAA1O,SAAYuO,GAAY9X,OAN7B,CAAA2K,EAAAE,KAAA,cAOW,IAAI5L,MAPf,cAAA0L,EAAAoG,OAAA,SASQ+G,GATR,eAAAnN,EAAAC,KAAA,GAAAD,EAAAuN,GAAAvN,EAAA,SAAAA,EAAAE,KAAA,MAAAI,EAAAC,SAWc6M,EAAUF,EAAmB,gBAX3C,eAAAlN,EAAAoG,OAAA,SAAApG,EAAAU,MAAA,yBAAAV,EAAAe,SAAApB,EAAAvC,OAAA,mEAFP9L,EAAA,0DAiBA,SAAS8b,EAAUI,GACf,OAAO,IAAI9F,UAAQ,SAASnH,EAASoH,IACjC,EAAA8F,EAAA7O,UACMhJ,OAAQ,MAAOF,IAAK8X,GACtB,SAACjG,EAAK/M,EAAU1E,GACZ,GAAIyR,GAAO/M,EAASoB,OAAS,KAAOpB,EAASoB,QAAU,IAcnD,OANIpB,IACuB,KAAnBA,EAASoB,QAAqC,GAAnBpB,EAASoB,QAAuB,IAAR9F,IACnDyK,WAGRoH,GAAQJ,IAAKA,EAAK/M,SAAUA,IAQhC+F,EAAQ1L,KAAKC,MAAMgB,6BC3DnCrE,EAAAD,SAAkBF,EAAQ,GAARA,CAAkB,WACpC,OAA0E,GAA1Ec,OAAAC,kBAAiC,KAAQE,IAAA,WAAmB,YAAc0M,wBCF1E,IAAAyO,EAAepc,EAAQ,IACvBqc,EAAqBrc,EAAQ,KAC7Bsc,EAAkBtc,EAAQ,KAC1Buc,EAAAzb,OAAAC,eAEAb,EAAAsc,EAAYxc,EAAQ,IAAgBc,OAAAC,eAAA,SAAAkN,EAAA8M,EAAA0B,GAIpC,GAHAL,EAAAnO,GACA8M,EAAAuB,EAAAvB,GAAA,GACAqB,EAAAK,GACAJ,EAAA,IACA,OAAAE,EAAAtO,EAAA8M,EAAA0B,GACG,MAAA5U,IACH,WAAA4U,GAAA,QAAAA,EAAA,MAAApQ,UAAA,4BAEA,MADA,UAAAoQ,IAAAxO,EAAA8M,GAAA0B,EAAApb,OACA4M,uBCdA,IAAA3B,EAAetM,EAAQ,IACvBG,EAAAD,QAAA,SAAAiM,GACA,IAAAG,EAAAH,GAAA,MAAAE,UAAAF,EAAA,sBACA,OAAAA,qBCHAhM,EAAAD,QAAA,SAAA+H,GACA,IACA,QAAAA,IACG,MAAAJ,GACH,6BCJA,IAAA5F,KAAuBA,eACvB9B,EAAAD,QAAA,SAAAiM,EAAAxK,GACA,OAAAM,EAAA1B,KAAA4L,EAAAxK,wBCDA,IAAA+a,EAAc1c,EAAQ,KACtB2c,EAAc3c,EAAQ,KACtBG,EAAAD,QAAA,SAAAiM,GACA,OAAAuQ,EAAAC,EAAAxQ,yBCJA,IAAAoQ,EAASvc,EAAQ,IACjB4c,EAAiB5c,EAAQ,IACzBG,EAAAD,QAAiBF,EAAQ,IAAgB,SAAA8B,EAAAH,EAAAN,GACzC,OAAAkb,EAAAC,EAAA1a,EAAAH,EAAAib,EAAA,EAAAvb,KACC,SAAAS,EAAAH,EAAAN,GAED,OADAS,EAAAH,GAAAN,EACAS,qBCLA,IAOA+a,EACAC,EARA9E,EAAA7X,EAAAD,WAUA,SAAA6c,IACA,UAAA/Z,MAAA,mCAEA,SAAAga,IACA,UAAAha,MAAA,qCAsBA,SAAAia,EAAAC,GACA,GAAAL,IAAAlU,WAEA,OAAAA,WAAAuU,EAAA,GAGA,IAAAL,IAAAE,IAAAF,IAAAlU,WAEA,OADAkU,EAAAlU,WACAA,WAAAuU,EAAA,GAEA,IAEA,OAAAL,EAAAK,EAAA,GACK,MAAArV,GACL,IAEA,OAAAgV,EAAAtc,KAAA,KAAA2c,EAAA,GACS,MAAArV,GAET,OAAAgV,EAAAtc,KAAAuL,KAAAoR,EAAA,MAvCA,WACA,IAEAL,EADA,mBAAAlU,WACAA,WAEAoU,EAEK,MAAAlV,GACLgV,EAAAE,EAEA,IAEAD,EADA,mBAAAvS,aACAA,aAEAyS,EAEK,MAAAnV,GACLiV,EAAAE,GAjBA,GAwEA,IAEAG,EAFAC,KACAC,GAAA,EAEAC,GAAA,EAEA,SAAAC,IACAF,GAAAF,IAGAE,GAAA,EACAF,EAAApZ,OACAqZ,EAAAD,EAAA3a,OAAA4a,GAEAE,GAAA,EAEAF,EAAArZ,QACAyZ,KAIA,SAAAA,IACA,IAAAH,EAAA,CAGA,IAAA5Y,EAAAwY,EAAAM,GACAF,GAAA,EAGA,IADA,IAAAI,EAAAL,EAAArZ,OACA0Z,GAAA,CAGA,IAFAN,EAAAC,EACAA,OACAE,EAAAG,GACAN,GACAA,EAAAG,GAAArD,MAGAqD,GAAA,EACAG,EAAAL,EAAArZ,OAEAoZ,EAAA,KACAE,GAAA,EAnEA,SAAAK,GACA,GAAAZ,IAAAvS,aAEA,OAAAA,aAAAmT,GAGA,IAAAZ,IAAAE,IAAAF,IAAAvS,aAEA,OADAuS,EAAAvS,aACAA,aAAAmT,GAEA,IAEAZ,EAAAY,GACK,MAAA7V,GACL,IAEA,OAAAiV,EAAAvc,KAAA,KAAAmd,GACS,MAAA7V,GAGT,OAAAiV,EAAAvc,KAAAuL,KAAA4R,KAgDAC,CAAAlZ,IAiBA,SAAAmZ,EAAAV,EAAAW,GACA/R,KAAAoR,MACApR,KAAA+R,QAYA,SAAA7Z,KA5BAgU,EAAAO,SAAA,SAAA2E,GACA,IAAAxR,EAAA,IAAAC,MAAAE,UAAA9H,OAAA,GACA,GAAA8H,UAAA9H,OAAA,EACA,QAAA3D,EAAA,EAAuBA,EAAAyL,UAAA9H,OAAsB3D,IAC7CsL,EAAAtL,EAAA,GAAAyL,UAAAzL,GAGAgd,EAAAnY,KAAA,IAAA2Y,EAAAV,EAAAxR,IACA,IAAA0R,EAAArZ,QAAAsZ,GACAJ,EAAAO,IASAI,EAAA5b,UAAAiY,IAAA,WACAnO,KAAAoR,IAAAtR,MAAA,KAAAE,KAAA+R,QAEA7F,EAAA8F,MAAA,UACA9F,EAAA+F,SAAA,EACA/F,EAAAgG,OACAhG,EAAAiG,QACAjG,EAAA9K,QAAA,GACA8K,EAAAkG,YAIAlG,EAAAmG,GAAAna,EACAgU,EAAAoG,YAAApa,EACAgU,EAAAqG,KAAAra,EACAgU,EAAAsG,IAAAta,EACAgU,EAAAuG,eAAAva,EACAgU,EAAAwG,mBAAAxa,EACAgU,EAAAyG,KAAAza,EACAgU,EAAA0G,gBAAA1a,EACAgU,EAAA2G,oBAAA3a,EAEAgU,EAAA4G,UAAA,SAAAje,GAAqC,UAErCqX,EAAA6G,QAAA,SAAAle,GACA,UAAAqC,MAAA,qCAGAgV,EAAA8G,IAAA,WAA2B,WAC3B9G,EAAA+G,MAAA,SAAAC,GACA,UAAAhc,MAAA,mCAEAgV,EAAAiH,MAAA,WAA4B,8BCtL5B,IAAAC,EAAgBlf,EAAQ,IACxBG,EAAAD,QAAA,SAAAsM,EAAA2S,EAAApb,GAEA,GADAmb,EAAA1S,QACA/J,IAAA0c,EAAA,OAAA3S,EACA,OAAAzI,GACA,uBAAA4J,GACA,OAAAnB,EAAAjM,KAAA4e,EAAAxR,IAEA,uBAAAA,EAAA4N,GACA,OAAA/O,EAAAjM,KAAA4e,EAAAxR,EAAA4N,IAEA,uBAAA5N,EAAA4N,EAAA9a,GACA,OAAA+L,EAAAjM,KAAA4e,EAAAxR,EAAA4N,EAAA9a,IAGA,kBACA,OAAA+L,EAAAZ,MAAAuT,EAAAtT,iCChBA,IAAAyO,EAActa,EAAQ,IACtB+M,EAAW/M,EAAQ,IACnBof,EAAYpf,EAAQ,IACpBG,EAAAD,QAAA,SAAAmf,EAAApX,GACA,IAAAuE,GAAAO,EAAAjM,YAA6Bue,IAAAve,OAAAue,GAC7BC,KACAA,EAAAD,GAAApX,EAAAuE,GACA8N,IAAA/N,EAAA+N,EAAAI,EAAA0E,EAAA,WAAqD5S,EAAA,KAAS,SAAA8S,sBCR9Dnf,EAAAD,QAAA,SAAAqf,EAAAle,GACA,OACAL,aAAA,EAAAue,GACAC,eAAA,EAAAD,GACAE,WAAA,EAAAF,GACAle,8BCJA,IAAA8Y,EAAYna,EAAQ,KACpB0f,EAAkB1f,EAAQ,KAE1BG,EAAAD,QAAAY,OAAAuS,MAAA,SAAApF,GACA,OAAAkM,EAAAlM,EAAAyR,sBCLAvf,EAAAD,SAAA,sBCAA,SAAA8X,EAAAhL,EAAA8K,GA4BoE3X,EAAAD,QAAoN,WAAY,IAAAyf,EAAAxf,EAAAD,EAA0B,gBAAA2H,EAAAvG,EAAAO,EAAAX,GAA0B,SAAAiB,EAAAtB,EAAA+e,GAAgB,IAAA/d,EAAAhB,GAAA,CAAU,IAAAS,EAAAT,GAAA,CAAU,IAAA8M,EAAA,mBAAAkS,iBAA0C,IAAAD,GAAAjS,EAAA,OAAAA,EAAA9M,GAAA,GAAwB,GAAAT,EAAA,OAAAA,EAAAS,GAAA,GAAoB,IAAA2b,EAAA,IAAAxZ,MAAA,uBAAAnC,EAAA,KAA8C,MAAA2b,EAAA3T,KAAA,mBAAA2T,EAAkC,IAAAnc,EAAAwB,EAAAhB,IAAYX,YAAYoB,EAAAT,GAAA,GAAAN,KAAAF,EAAAH,QAAA,SAAA2H,GAAmC,IAAAhG,EAAAP,EAAAT,GAAA,GAAAgH,GAAiB,OAAA1F,EAAAN,GAAAgG,IAAgBxH,IAAAH,QAAA2H,EAAAvG,EAAAO,EAAAX,GAAsB,OAAAW,EAAAhB,GAAAX,QAA8D,IAA1C,IAAAE,EAAA,mBAAAyf,iBAA0Chf,EAAA,EAAYA,EAAAK,EAAA6C,OAAWlD,IAAAsB,EAAAjB,EAAAL,IAAY,OAAAsB,EAAvb,EAAmc2d,GAAA,SAAAD,EAAA1f,EAAAD,GACjwB,aACAC,EAAAD,QAAA,SAAAkW,GACA,IAAA2J,EAAA3J,EAAA4J,kBACA,SAAAC,EAAAC,GACA,IAAAC,EAAA,IAAAJ,EAAAG,GACAE,EAAAD,EAAAC,UAIA,OAHAD,EAAAE,WAAA,GACAF,EAAAG,YACAH,EAAAI,OACAH,EAGAhK,EAAA6J,IAAA,SAAAC,GACA,OAAAD,EAAAC,IAGA9J,EAAApU,UAAAie,IAAA,WACA,OAAAA,EAAAnU,aAKI0U,GAAA,SAAAX,EAAA1f,EAAAD,GACJ,aACA,IAAAugB,EACA,IAAK,UAAAzd,MAAoB,MAAA6E,GAAY4Y,EAAA5Y,EACrC,IAAA6Y,EAAAb,EAAA,cACAc,EAAAd,EAAA,WACAe,EAAAf,EAAA,UAEA,SAAAgB,IACA/U,KAAAgV,kBAAA,EACAhV,KAAAiV,aAAA,EACAjV,KAAAkV,WAAA,IAAAL,EAAA,IACA7U,KAAAmV,aAAA,IAAAN,EAAA,IACA7U,KAAAoV,oBAAA,EACApV,KAAAqV,oBAAA,EACA,IAAAnO,EAAAlH,KACAA,KAAAsV,YAAA,WACApO,EAAAqO,gBAEAvV,KAAAwV,UAAAZ,EAyDA,SAAAa,EAAA/U,EAAAgV,EAAA/O,GACA3G,KAAAkV,WAAA/b,KAAAuH,EAAAgV,EAAA/O,GACA3G,KAAA2V,aAGA,SAAAC,EAAAlV,EAAAgV,EAAA/O,GACA3G,KAAAmV,aAAAhc,KAAAuH,EAAAgV,EAAA/O,GACA3G,KAAA2V,aAGA,SAAAE,EAAAvB,GACAtU,KAAAmV,aAAAW,SAAAxB,GACAtU,KAAA2V,aAyCA,SAAAI,EAAAzE,GACA,KAAAA,EAAArZ,SAAA,GACA+d,EAAA1E,GAIA,SAAA0E,EAAA1E,GACA,IAAA5Q,EAAA4Q,EAAA2E,QACA,sBAAAvV,EACAA,EAAAwV,sBACK,CACL,IAAAR,EAAApE,EAAA2E,QACAtP,EAAA2K,EAAA2E,QACAvV,EAAAjM,KAAAihB,EAAA/O,IAxHAoO,EAAA7e,UAAAigB,aAAA,SAAAzV,GACA,IAAAmC,EAAA7C,KAAAwV,UAGA,OAFAxV,KAAAwV,UAAA9U,EACAV,KAAAgV,kBAAA,EACAnS,GAGAkS,EAAA7e,UAAAkgB,mBAAA,WACA,OAAApW,KAAAgV,kBAGAD,EAAA7e,UAAAmgB,iBAAA,WACArW,KAAAqV,oBAAA,GAGAN,EAAA7e,UAAAogB,6BAAA,WACAxB,EAAAyB,cACAvW,KAAAqV,oBAAA,IAIAN,EAAA7e,UAAAsgB,gBAAA,WACA,OAAAxW,KAAAiV,aAAAjV,KAAAoV,oBAIAL,EAAA7e,UAAAugB,WAAA,SAAA1a,EAAA2a,GACAA,GACAxK,EAAAyK,OAAAC,MAAA,UAAA7a,aAAA7E,MAAA6E,EAAA8a,MAAA9a,GACA,MACAmQ,EAAA4K,KAAA,IAEA9W,KAAA+W,WAAAhb,IAIAgZ,EAAA7e,UAAA6gB,WAAA,SAAArW,EAAAiG,GAKA,GAJA,IAAA5G,UAAA9H,SACA0O,EAAAjG,EACAA,EAAA,WAA0B,MAAAiG,IAE1B,oBAAA9J,WACAA,WAAA,WACA6D,EAAAiG,IACS,QACJ,IACL3G,KAAAwV,UAAA,WACA9U,EAAAiG,KAEK,MAAA5K,GACL,UAAA7E,MAAA,oEAmBA4d,EAAAyB,aAKAxB,EAAA7e,UAAA8gB,YAAA,SAAAtW,EAAAgV,EAAA/O,GACA3G,KAAAqV,mBACAI,EAAAhhB,KAAAuL,KAAAU,EAAAgV,EAAA/O,GAEA3G,KAAAwV,UAAA,WACA3Y,WAAA,WACA6D,EAAAjM,KAAAihB,EAAA/O,IACiB,QAKjBoO,EAAA7e,UAAAsU,OAAA,SAAA9J,EAAAgV,EAAA/O,GACA3G,KAAAqV,mBACAO,EAAAnhB,KAAAuL,KAAAU,EAAAgV,EAAA/O,GAEA3G,KAAAwV,UAAA,WACA9U,EAAAjM,KAAAihB,EAAA/O,MAKAoO,EAAA7e,UAAA+gB,eAAA,SAAA3C,GACAtU,KAAAqV,mBACAQ,EAAAphB,KAAAuL,KAAAsU,GAEAtU,KAAAwV,UAAA,WACAlB,EAAA4B,uBA/BAnB,EAAA7e,UAAA8gB,YAAAvB,EACAV,EAAA7e,UAAAsU,OAAAoL,EACAb,EAAA7e,UAAA+gB,eAAApB,GAoDAd,EAAA7e,UAAAqf,aAAA,WACAQ,EAAA/V,KAAAmV,cACAnV,KAAAkX,SACAlX,KAAAoV,oBAAA,EACAW,EAAA/V,KAAAkV,aAGAH,EAAA7e,UAAAyf,WAAA,WACA3V,KAAAiV,cACAjV,KAAAiV,aAAA,EACAjV,KAAAwV,UAAAxV,KAAAsV,eAIAP,EAAA7e,UAAAghB,OAAA,WACAlX,KAAAiV,aAAA,GAGA5gB,EAAAD,QAAA2gB,EACA1gB,EAAAD,QAAAugB,mBAEGwC,UAAA,GAAAC,aAAA,GAAAC,SAAA,KAAyCC,GAAA,SAAAvD,EAAA1f,EAAAD,GAC5C,aACAC,EAAAD,QAAA,SAAAkW,EAAAiN,EAAAC,EAAA/Z,GACA,IAAAga,GAAA,EACAC,EAAA,SAAAC,EAAA5b,GACAiE,KAAA4X,QAAA7b,IAGA8b,EAAA,SAAA9b,EAAAgD,GACAA,EAAA+Y,wBAAA,EACA/Y,EAAAgZ,eAAAC,MAAAN,IAAA,KAAA1X,KAAAjE,IAGAkc,EAAA,SAAAC,EAAAnZ,GACA,aAAAiB,KAAAmY,YACAnY,KAAAoY,iBAAArZ,EAAAwQ,SAIA8I,EAAA,SAAAtc,EAAAgD,GACAA,EAAA+Y,wBAAA9X,KAAA4X,QAAA7b,IAGAuO,EAAApU,UAAAJ,KAAA,SAAAoiB,GACAT,IACAA,GAAA,EACAnN,EAAApU,UAAAoiB,eAAA7a,EAAA8a,wBACAjO,EAAApU,UAAAsiB,YAAA/a,EAAAgb,sBAEA,IAAAC,EAAAlB,EAAAU,GACA7D,EAAA,IAAA/J,EAAAiN,GACAlD,EAAAiE,eAAAtY,KAAA,GACA,IAAAuP,EAAAvP,KAAA2Y,UAEA,GADAtE,EAAAuE,YAAAF,GACAA,aAAApO,EAAA,CACA,IAAAvL,GACA+Y,wBAAA,EACAxD,QAAAD,EACA9E,SACAwI,eAAAW,GAEAnJ,EAAAyI,MAAAT,EAAAM,OAAAlhB,EAAA0d,EAAAtV,GACA2Z,EAAAV,MACAC,EAAAI,OAAA1hB,EAAA0d,EAAAtV,GACAsV,EAAAwE,aAAAH,QAEArE,EAAA+D,iBAAA7I,GAEA,OAAA8E,GAGA/J,EAAApU,UAAA0iB,YAAA,SAAA3f,QACAtC,IAAAsC,GACA+G,KAAAmY,UAAA,QAAAnY,KAAAmY,UACAnY,KAAA8Y,SAAA7f,GAEA+G,KAAAmY,WAAA,QAAAnY,KAAAmY,WAIA7N,EAAApU,UAAA6iB,SAAA,WACA,yBAAA/Y,KAAAmY,YAGA7N,EAAAxU,KAAA,SAAAoiB,EAAA3iB,GACA,OAAA+U,EAAAnH,QAAA5N,GAAAO,KAAAoiB,UAIIc,GAAA,SAAAjF,EAAA1f,EAAAD,GACJ,aACA,IAAA6kB,EACA,oBAAA3O,UAAA2O,EAAA3O,SAMA,IAAA4O,EAAAnF,EAAA,YAAAA,GACAmF,EAAAC,WANA,WACA,IAAS7O,UAAA4O,IAAA5O,QAAA2O,GACT,MAAAld,IACA,OAAAmd,GAIA7kB,EAAAD,QAAA8kB,IAEGE,YAAA,KAAeC,GAAA,SAAAtF,EAAA1f,EAAAD,GAClB,aACA,IAAAklB,EAAAtkB,OAAAY,OACA,GAAA0jB,EAAA,CACA,IAAAC,EAAAD,EAAA,MACAE,EAAAF,EAAA,MACAC,EAAA,SAAAC,EAAA,WAGAnlB,EAAAD,QAAA,SAAAkW,GACA,IAAAwK,EAAAf,EAAA,UACA0F,EAAA3E,EAAA2E,YAqEA,SAAAC,EAAAzgB,GACA,IAAA0gB,EAAA3Z,KAAAyH,MACA/G,EAbA,SAAAzH,EAAA0gB,GACA,IAAAjZ,EAEA,GADA,MAAAzH,IAAAyH,EAAAzH,EAAA0gB,IACA,mBAAAjZ,EAAA,CACA,IAAAkZ,EAAA,UAAA9E,EAAA+E,YAAA5gB,GAAA,mBACA6b,EAAAle,SAAA+iB,GAAA,IACA,UAAArP,EAAA/J,UAAAqZ,GAEA,OAAAlZ,EAKAoZ,CAAA7gB,EAAA0gB,GACA,OAAAjZ,EAAAZ,MAAA7G,EAAA+G,MAiBA,SAAA+Z,EAAA9gB,GACA,OAAAA,EAAA+G,MAEA,SAAAga,EAAA/gB,GACA,IAAAmL,GAAApE,KAEA,OADAoE,EAAA,IAAAA,EAAA5N,KAAA6N,IAAA,EAAAD,EAAAnL,EAAAhB,SACAgB,EAAAmL,GA9FA0Q,EAAAmF,aAyEA3P,EAAApU,UAAAzB,KAAA,SAAAklB,GACA,IAAA/Z,KAAAxE,MAAA3G,KAAAsL,UAAA,GAWA,OADAH,EAAAzG,KAAAwgB,GACA3Z,KAAAgY,MAAA0B,OAAA/iB,SAAAiJ,OAAAjJ,IAWA2T,EAAApU,UAAAf,IAAA,SAAA+kB,GACA,IACAplB,EADAqlB,EAAA,iBAAAD,EAEA,GAAAC,EAQArlB,EAAAklB,OAPA,GAAAP,EAAA,CACA,IAAAW,QAlGAC,GAkGAH,GACAplB,EAAA,OAAAslB,IAAAL,OAEAjlB,EAAAilB,EAKA,OAAA/Z,KAAAgY,MAAAljB,OAAA6B,SAAAujB,OAAAvjB,OAIG0gB,SAAA,KAAYiD,GAAA,SAAAvG,EAAA1f,EAAAD,GACf,aACAC,EAAAD,QAAA,SAAAkW,EAAAiQ,EAAAC,EAAA/c,GACA,IAAAqX,EAAAf,EAAA,UACA9J,EAAA6K,EAAA7K,SACAwQ,EAAA3F,EAAA2F,SACA1T,EAAAuD,EAAAoQ,OAEApQ,EAAApU,UAAA,MAAAoU,EAAApU,UAAAykB,OAAA,WACA,IAAAld,EAAAmd,eAAA,OAAA5a,KAAA6a,MAAA,4BAIA,IAFA,IAAAvG,EAAAtU,KACA8a,EAAAxG,EACAA,EAAAyG,kBAAA,CACA,IAAAzG,EAAA0G,UAAAF,GAAA,CACAA,EAAAG,eACAH,EAAAI,YAAAP,SAEAG,EAAAK,kBAEA,MAGA,IAAAC,EAAA9G,EAAA+G,oBACA,SAAAD,MAAAL,iBAAA,CACAzG,EAAA2G,eACA3G,EAAA4G,YAAAP,SAEArG,EAAA6G,kBAEA,MAEA7G,EAAA2G,gBAAA3G,EAAA4G,YAAAP,SACArG,EAAAgH,sBACAR,EAAAxG,EACAA,EAAA8G,IAKA9Q,EAAApU,UAAAqlB,oBAAA,WACAvb,KAAAwb,8BAGAlR,EAAApU,UAAAulB,6BAAA,WACA,YAAA9kB,IAAAqJ,KAAAwb,4BACAxb,KAAAwb,4BAAA,GAGAlR,EAAApU,UAAA8kB,UAAA,SAAAU,GACA,OAAAA,IAAA1b,MACAA,KAAAwb,2BAAA,EACAxb,KAAA2b,mBACA,IAEA3b,KAAAub,wBACAvb,KAAAyb,iCACAzb,KAAA2b,mBACA,KAMArR,EAAApU,UAAAilB,gBAAA,WACAnb,KAAAyb,gCACAzb,KAAA4b,WAIAtR,EAAApU,UAAA0lB,QAAA,WACA5b,KAAA+a,mBACA/a,KAAA6b,gBACA9U,EAAAyD,OAAAxK,KAAA8b,gBAAA9b,UAAArJ,KAGA2T,EAAApU,UAAA4lB,gBAAA,WACA9b,KAAA+b,UAAA,GAAA/b,KAAAkW,mBAGA5L,EAAApU,UAAA8lB,eAAA,WACAhc,KAAAic,oBAAAtlB,GAGA2T,EAAApU,UAAA6kB,eAAA,WACA,OAAA/a,KAAAkc,cAAAlc,KAAAmc,gBAGA7R,EAAApU,UAAAkmB,cAAA,WACA,OAAApc,KAAAkc,cAAAlc,KAAAqc,eAGA/R,EAAApU,UAAAomB,kBAAA,SAAAC,EAAAC,GACA,GAAA1H,EAAA2H,QAAAF,GACA,QAAAjoB,EAAA,EAAuBA,EAAAioB,EAAAtkB,SAA6B3D,EACpD0L,KAAAsc,kBAAAC,EAAAjoB,GAAAkoB,QAEK,QAAA7lB,IAAA4lB,EACL,sBAAAA,GACA,IAAAC,EAAA,CACA,IAAAzgB,EAAAkO,EAAAsS,GAAA9nB,KAAAuL,KAAAwY,eACAzc,IAAA0e,IACAza,KAAA0c,kBAAA3gB,KACAgL,EAAAgQ,WAAAhb,YAIAwgB,EAAAI,iBAAA3c,OAKAsK,EAAApU,UAAAylB,gBAAA,WACA,IAAAY,EAAAvc,KAAA4c,YACA5c,KAAAgc,iBACAjV,EAAAyD,OAAAxK,KAAAsc,kBAAAtc,KAAAuc,IAGAjS,EAAApU,UAAA2mB,wBAAA,WACA7c,KAAA+a,mBACA/a,KAAAsc,kBAAAtc,KAAA4c,aAAA,GACA5c,KAAAgc,mBAIA1R,EAAApU,UAAAymB,iBAAA,WACA3c,KAAA2a,aAKGtD,SAAA,KAAYyF,GAAA,SAAA/I,EAAA1f,EAAAD,GACf,aACAC,EAAAD,QAAA,SAAA2oB,GACA,IAAAjI,EAAAf,EAAA,UACAiJ,EAAAjJ,EAAA,SAAAxM,KACA0C,EAAA6K,EAAA7K,SACAwQ,EAAA3F,EAAA2F,SAmCA,OAjCA,SAAAwC,EAAAC,EAAA5I,GACA,gBAAAvY,GACA,IAAAohB,EAAA7I,EAAAkE,cACA4E,EAAA,QAAA9oB,EAAA,EAAsCA,EAAA2oB,EAAAhlB,SAAsB3D,EAAA,CAC5D,IAAAkX,EAAAyR,EAAA3oB,GAEA,GAAAkX,IAAAtU,OACA,MAAAsU,KAAAtV,qBAAAgB,OACA,GAAA6E,aAAAyP,EACA,OAAAvB,EAAAiT,GAAAzoB,KAAA0oB,EAAAphB,QAEa,sBAAAyP,EAAA,CACb,IAAA6R,EAAApT,EAAAuB,GAAA/W,KAAA0oB,EAAAphB,GACA,GAAAshB,IAAA5C,EACA,OAAA4C,EACiB,GAAAA,EACjB,OAAApT,EAAAiT,GAAAzoB,KAAA0oB,EAAAphB,QAEa,GAAA+Y,EAAAtU,SAAAzE,GAAA,CAEb,IADA,IAAAwL,EAAAyV,EAAAxR,GACA8R,EAAA,EAA+BA,EAAA/V,EAAAtP,SAAiBqlB,EAAA,CAChD,IAAAznB,EAAA0R,EAAA+V,GACA,GAAA9R,EAAA3V,IAAAkG,EAAAlG,GACA,SAAAunB,EAGA,OAAAnT,EAAAiT,GAAAzoB,KAAA0oB,EAAAphB,IAGA,OAAAghB,OAOGQ,QAAA,GAAAlG,SAAA,KAAuBmG,GAAA,SAAAzJ,EAAA1f,EAAAD,GAC1B,aACAC,EAAAD,QAAA,SAAAkW,GACA,IAAAmT,GAAA,EACAC,KAOA,SAAAhW,IACA1H,KAAA2d,OAAA,IAAAjW,EAAAkW,cAAAC,KAuBA,SAAAA,IACA,IAAAC,EAAAJ,EAAAzlB,OAAA,EACA,GAAA6lB,GAAA,EACA,OAAAJ,EAAAI,GA8BA,OA9DAxT,EAAApU,UAAA6nB,gBAAA,aACAzT,EAAApU,UAAA8nB,aAAA,aACA1T,EAAApU,UAAA+nB,YAAA,WAA4C,aAC5C3T,EAAA4T,aAAA5T,EAAApU,UAAAgoB,aAAA,aAKAxW,EAAAxR,UAAA8nB,aAAA,gBACArnB,IAAAqJ,KAAA2d,SACA3d,KAAA2d,OAAAI,gBAAA,KACAL,EAAAvkB,KAAA6G,KAAA2d,UAIAjW,EAAAxR,UAAA+nB,YAAA,WACA,QAAAtnB,IAAAqJ,KAAA2d,OAAA,CACA,IAAA/e,EAAA8e,EAAAjW,MACA4M,EAAAzV,EAAAmf,gBAEA,OADAnf,EAAAmf,gBAAA,KACA1J,EAEA,aAcA3M,EAAAkW,cAAA,KACAlW,EAAA9R,OAZA,WACA,GAAA6nB,EAAA,WAAA/V,GAYAA,EAAAyW,0BAAA,aACAzW,EAAA0W,wBAAA,WACA,IAAAC,EAAA/T,EAAApU,UAAA8nB,aACAM,EAAAhU,EAAApU,UAAA+nB,YACAM,EAAAjU,EAAA4T,aACAM,EAAAlU,EAAApU,UAAAgoB,aACAO,EAAAnU,EAAApU,UAAA6nB,gBACArW,EAAAyW,0BAAA,WACA7T,EAAApU,UAAA8nB,aAAAK,EACA/T,EAAApU,UAAA+nB,YAAAK,EACAhU,EAAA4T,aAAAK,EACAjU,EAAApU,UAAAgoB,aAAAM,EACAlU,EAAApU,UAAA6nB,gBAAAU,EACAhB,GAAA,GAEAA,GAAA,EACAnT,EAAApU,UAAA8nB,aAAAtW,EAAAxR,UAAA8nB,aACA1T,EAAApU,UAAA+nB,YAAAvW,EAAAxR,UAAA+nB,YACA3T,EAAA4T,aAAA5T,EAAApU,UAAAgoB,aAAAL,EACAvT,EAAApU,UAAA6nB,gBAAA,WACA,IAAAzP,EAAAtO,KAAAke,eACA5P,GAAA,MAAAA,EAAAyP,kBAAAzP,EAAAyP,gBAAA/d,QAGA0H,QAGIgX,GAAA,SAAA3K,EAAA1f,EAAAD,GACJ,aACAC,EAAAD,QAAA,SAAAkW,EAAA5C,GACA,IAMAiX,EACAC,EAQAC,EAfAC,EAAAxU,EAAAyU,WACAhY,EAAAuD,EAAAoQ,OACAsE,EAAAjL,EAAA,YAAAiL,QACAlK,EAAAf,EAAA,UACAkL,EAAAlL,EAAA,SACAmL,EAAApK,EAAAoK,eAGAC,EACA,2DACAC,EAAA,6BACAC,EAAA,kCACAC,EAAA,KACAC,EAAA,KACAC,GAAA,EAEAC,IAAA,GAAA3K,EAAA5C,IAAA,mBAKAwN,IAAA,GAAA5K,EAAA5C,IAAA,uBACAuN,IAAA3K,EAAA5C,IAAA,sBAEAuL,IAAA,GAAA3I,EAAA5C,IAAA,gCACAuN,IAAA3K,EAAA5C,IAAA,+BAEAyN,EAAA,GAAA7K,EAAA5C,IAAA,iCACAwN,KAAA5K,EAAA5C,IAAA,gCAEA5H,EAAApU,UAAA0pB,4BAAA,WACA,IAAArQ,EAAAvP,KAAA2Y,UACApJ,EAAA4I,WAAA,QAAA5I,EAAA4I,UACA,QAGA7N,EAAApU,UAAA2pB,gCAAA,WACA,cAAA7f,KAAAmY,WAAA,CACAnY,KAAA8f,2BACA,IAAA5Y,EAAAlH,KACAnD,WAAA,WACAqK,EAAA6Y,6BACK,KAGLzV,EAAApU,UAAA8pB,mCAAA,WACAC,EAAA,mBACAtB,OAAAhoB,EAAAqJ,OAGAsK,EAAApU,UAAAgqB,yBAAA,WACAlgB,KAAAmY,UAAA,UAAAnY,KAAAmY,WAGA7N,EAAApU,UAAAiqB,sBAAA,WACA,qBAAAngB,KAAAmY,YAGA7N,EAAApU,UAAA6pB,0BAAA,WACA,GAAA/f,KAAAogB,wBAAA,CACA,IAAAjgB,EAAAH,KAAAqgB,gBACArgB,KAAAsgB,mCACAL,EAAA,qBACArB,EAAAze,EAAAH,QAIAsK,EAAApU,UAAAoqB,iCAAA,WACAtgB,KAAAmY,UAAA,OAAAnY,KAAAmY,WAGA7N,EAAApU,UAAAqqB,mCAAA,WACAvgB,KAAAmY,WAAA,OAAAnY,KAAAmY,WAGA7N,EAAApU,UAAAsqB,8BAAA,WACA,cAAAxgB,KAAAmY,WAAA,GAGA7N,EAAApU,UAAA4pB,yBAAA,WACA9f,KAAAmY,UAAA,QAAAnY,KAAAmY,WAGA7N,EAAApU,UAAAuqB,2BAAA,WACAzgB,KAAAmY,WAAA,QAAAnY,KAAAmY,UACAnY,KAAAwgB,kCACAxgB,KAAAugB,qCACAvgB,KAAAggB,uCAIA1V,EAAApU,UAAAkqB,sBAAA,WACA,eAAApgB,KAAAmY,WAAA,GAGA7N,EAAApU,UAAA2kB,MAAA,SAAAjB,EAAA8G,EAAApM,GACA,OAAAxV,EAAA8a,EAAA8G,EAAApM,GAAAtU,OAGAsK,EAAAqW,6BAAA,SAAAjgB,GACA,IAAAuP,EAAA6O,IACAF,EACA,mBAAAle,EAAA,OAAAuP,EACAvP,EAAAoU,EAAA8L,WAAA3Q,EAAAvP,QACA/J,GAGA2T,EAAAuW,4BAAA,SAAAngB,GACA,IAAAuP,EAAA6O,IACAH,EACA,mBAAAje,EAAA,OAAAuP,EACAvP,EAAAoU,EAAA8L,WAAA3Q,EAAAvP,QACA/J,GAGA,IAAAmqB,EAAA,aACAxW,EAAAmT,gBAAA,WACA,GAAA1W,EAAAyP,oBAAAhU,EAAAib,gBACA,UAAAvmB,MAAA,sGAEA,IAAAsL,EAAAib,iBAAAsD,IAAA,CACA,IAAAC,EAAA1W,EAAApU,UAAA+qB,mBACAC,EAAA5W,EAAApU,UAAAwmB,kBACAyE,EAAA7W,EAAApU,UAAAkrB,kBACA5e,EAAAib,iBAAA,EACAqD,EAAA,WACA,GAAA/Z,EAAAyP,oBAAAhU,EAAAib,gBACA,UAAAvmB,MAAA,sGAEAoT,EAAApU,UAAA+qB,mBAAAD,EACA1W,EAAApU,UAAAwmB,kBAAAwE,EACA5W,EAAApU,UAAAkrB,kBAAAD,EACAzZ,EAAAyW,4BACApX,EAAAsP,mBACA7T,EAAAib,iBAAA,GAEAnT,EAAApU,UAAA+qB,mBAAAI,EACA/W,EAAApU,UAAAwmB,kBAAA4E,EACAhX,EAAApU,UAAAkrB,kBAAAG,EACA7Z,EAAA0W,0BACArX,EAAAuP,iCAIAhM,EAAAkX,mBAAA,WACA,OAAAhf,EAAAib,iBAAAsD,KAGA,IAAAU,EAAA,WACA,IACA,sBAAAC,YAAA,CACA,IAAAlkB,EAAA,IAAAkkB,YAAA,eAEA,OADA5M,EAAA5T,OAAAygB,cAAAnkB,GACA,SAAA3I,EAAA2I,GACA,IAAAokB,GACAC,OAAArkB,EACAskB,YAAA,GAEA7C,EAAAhqB,eACA2sB,EAAA,WAA2CrsB,MAAAiI,EAAA8W,UAC3C2K,EAAAhqB,eAAA2sB,EAAA,UAAyDrsB,MAAAiI,EAAA2C,SACzD,IAAA4hB,EAAA,IAAAL,YAAA7sB,EAAA6E,cAAAkoB,GACA,OAAA9M,EAAA5T,OAAAygB,cAAAI,IAES,sBAAAC,MAAA,CACT,IAAAxkB,EAAA,IAAAwkB,MAAA,eAEA,OADAlN,EAAA5T,OAAAygB,cAAAnkB,GACA,SAAA3I,EAAA2I,GACA,IAAAukB,EAAA,IAAAC,MAAAntB,EAAA6E,eACAooB,YAAA,IAKA,OAHAC,EAAAF,OAAArkB,EACAyhB,EAAAhqB,eAAA8sB,EAAA,WAAyDxsB,MAAAiI,EAAA8W,UACzD2K,EAAAhqB,eAAA8sB,EAAA,UAAwDxsB,MAAAiI,EAAA2C,UACxD2U,EAAA5T,OAAAygB,cAAAI,IAGA,IAAAvkB,EAAAxB,SAAAimB,YAAA,eAGA,OAFAzkB,EAAA0kB,gBAAA,4BACApN,EAAA5T,OAAAygB,cAAAnkB,GACA,SAAA3I,EAAA2I,GACA,IAAAukB,EAAA/lB,SAAAimB,YAAA,eAGA,OAFAF,EAAAG,gBAAArtB,EAAA6E,eAAA,KACA8D,IACAsX,EAAA5T,OAAAygB,cAAAI,IAGK,MAAAhmB,IACL,kBACA,UAzCA,GA6CAomB,EACArN,EAAA4B,OACA,WACA,OAAAxK,EAAAyG,KAAA7S,MAAAoM,EAAAnM,YAGA+U,EAAA5T,OAKA,SAAArM,GACA,IAAA8kB,EAAA,KAAA9kB,EAAA6E,cACAlB,EAAAsc,EAAA5T,OAAAyY,GACA,QAAAnhB,IACAA,EAAAsH,MAAAgV,EAAA5T,UAAA9F,MAAA3G,KAAAsL,UAAA,KACA,IATA,WACA,UAaA,SAAAqiB,EAAAvtB,EAAAyf,GACA,OAAYA,WAGZ,IAAA+N,GACAC,eAAAF,EACAG,iBAAAH,EACAI,gBAAAJ,EACAK,gBAAAL,EACAM,iBAAAN,EACAO,eAAA,SAAA9tB,EAAAyf,EAAAwG,GACA,OAAgBxG,UAAAwG,UAEhB8H,QAAA,SAAA/tB,EAAA+tB,GACA,OAAgBA,YAEhBC,mBAAA,SAAAhuB,EAAAsL,EAAAmU,GACA,OAAgBnU,SAAAmU,YAEhBwO,iBAAAV,GAGAW,EAAA,SAAAluB,GACA,IAAAmuB,GAAA,EACA,IACAA,EAAAb,EAAAriB,MAAA,KAAAC,WACK,MAAAhE,GACLgL,EAAAgQ,WAAAhb,GACAinB,GAAA,EAGA,IAAAC,GAAA,EACA,IACAA,EAAAxB,EAAA5sB,EACAwtB,EAAAxtB,GAAAiL,MAAA,KAAAC,YACK,MAAAhE,GACLgL,EAAAgQ,WAAAhb,GACAknB,GAAA,EAGA,OAAAA,GAAAD,GAmDA,SAAAE,IAA6B,SAwB7B,SAAAC,EAAAC,EAAAjgB,EAAAoH,GACA,IAAA+J,EAAAtU,KACA,IACAojB,EAAAjgB,EAAAoH,EAAA,SAAA8Y,GACA,sBAAAA,EACA,UAAA9iB,UAAA,qCACAuU,EAAAle,SAAAysB,IAEA/O,EAAAgP,4BAAAD,KAEK,MAAAtnB,GACL,OAAAA,GAIA,SAAAwnB,EAAAF,GACA,IAAArjB,KAAA+a,iBAAA,OAAA/a,KAEA,IAAAwjB,EAAAxjB,KAAA4c,iBACAjmB,IAAA6sB,EACA1O,EAAA2H,QAAA+G,GACAA,EAAArqB,KAAAkqB,GAEArjB,KAAA6Y,cAAA2K,EAAAH,IAGArjB,KAAA6Y,aAAAwK,GAIA,SAAAI,IACA,OAAAzjB,KAAAic,eAGA,SAAAyH,EAAAL,GACArjB,KAAAic,eAAAoH,EAGA,SAAAM,IACA3jB,KAAAqb,yBAAA1kB,EACAqJ,KAAAic,oBAAAtlB,EAGA,SAAAitB,EAAAxI,EAAAyI,GACA,SAAAA,GAAA,CACA7jB,KAAAqb,oBAAAD,EACA,IAAA0I,EAAA1I,EAAAI,gCACA7kB,IAAAmtB,IACAA,EAAA,GAEA1I,EAAAI,2BAAAsI,EAAA,EAEA,MAAAD,IAAAzI,EAAArC,YACA/Y,KAAA4Y,YAAAwC,EAAAtC,UA7HAxO,EAAA9H,OAAA,SAAA7C,GASA,GAPA,oBADAA,EAAA3K,OAAA2K,MAEAA,EAAA8d,gBACAnT,EAAAmT,mBACS9d,EAAA8d,iBAAAnT,EAAAkX,sBACTV,KAGA,aAAAnhB,EAAA,CACA,IAAAokB,EAAApkB,EAAA+f,SACAld,EAAAkd,WAAAqE,EACApE,EAAAnd,EAAAkd,SAEA5K,EAAAtU,SAAAujB,IACA,qBAAAA,IACApE,IAAAoE,EAAApE,kBAIA,oBAAAhgB,KAAAib,eAAApY,EAAAoY,aAAA,CACA,GAAA7T,EAAAyP,kBACA,UAAAtf,MACA,wDAEAoT,EAAApU,UAAA8tB,uBACAL,EACArZ,EAAApU,UAAAoiB,eAAAsL,EACAtZ,EAAApU,UAAA0mB,UAAA6G,EACAnZ,EAAApU,UAAA2iB,aAAA6K,EACApZ,EAAApU,UAAAotB,4BACAC,EACAjZ,EAAApU,UAAA+tB,SAAAd,EACA5K,EAAAqL,EACAphB,EAAAoY,cAAA,EAWA,MATA,eAAAjb,IACAA,EAAAukB,aAAA1hB,EAAA0hB,YACA1hB,EAAA0hB,YAAA,EACA5Z,EAAApU,UAAAiuB,WAAApB,IACSpjB,EAAAukB,YAAA1hB,EAAA0hB,aACT1hB,EAAA0hB,YAAA,EACA5Z,EAAApU,UAAAiuB,WAAAjB,IAGA5Y,GAKAA,EAAApU,UAAAiuB,WAAAjB,EACA5Y,EAAApU,UAAA+tB,SAAA,SAAAb,EAAAjgB,EAAAoH,GACA,IACA6Y,EAAAjgB,EAAAoH,GACK,MAAAxO,GACL,OAAAA,IAGAuO,EAAApU,UAAA0mB,UAAA,aACAtS,EAAApU,UAAA2iB,aAAA,SAAAuL,KACA9Z,EAAApU,UAAAotB,4BAAA,SAAAD,KAGA/Y,EAAApU,UAAA+qB,mBAAA,aACA3W,EAAApU,UAAAwmB,kBAAA,aACApS,EAAApU,UAAAkrB,kBAAA,aACA9W,EAAApU,UAAA8tB,uBAAA,aACA1Z,EAAApU,UAAAoiB,eAAA,SAAA8C,EAAAyI,KAmEA,IAAAtL,EALA,SAAA6C,EAAAyI,GACA,MAAAA,IAAAzI,EAAArC,YACA/Y,KAAA4Y,YAAAwC,EAAAtC,WAKA,SAAAL,IACA,IAAApE,EAAArU,KAAA8Y,SACA,YAAAniB,IAAA0d,GACAA,aAAA/J,EACA+J,EAAAgQ,cACAhQ,EAAA9e,aAEA,EAIA8e,EAGA,SAAAgN,IACArhB,KAAA2d,OAAA,IAAAC,EAAA5d,KAAAke,gBAGA,SAAAoD,EAAArkB,EAAAqnB,GACA,GAAApF,EAAAjiB,GAAA,CACA,IAAA2B,EAAAoB,KAAA2d,OAIA,QAHAhnB,IAAAiI,GACA0lB,IAAA1lB,IAAA2lB,cAEA5tB,IAAAiI,EACAA,EAAA4lB,iBAAAvnB,QACS,IAAAA,EAAAwnB,iBAAA,CACT,IAAAC,EAAAC,EAAA1nB,GACA6X,EAAA8P,kBAAA3nB,EAAA,QACAynB,EAAA9K,QAAA,KAAA8K,EAAA7N,MAAAxd,KAAA,OACAyb,EAAA8P,kBAAA3nB,EAAA,yBAKA,SAAAskB,IACAvhB,KAAA2d,YAAAhnB,EAyDA,SAAAmI,EAAA8a,EAAA8G,EAAApM,GACA,GAAA9R,EAAAkd,SAAA,CACA,IACApR,EADAsU,EAAA,IAAA5D,EAAApF,GAEA,GAAA8G,EACApM,EAAAoI,kBAAAkG,QACK,GAAApgB,EAAAib,kBAAAnP,EAAAhE,EAAA4T,gBACL5P,EAAAkW,iBAAA5B,OACK,CACL,IAAA8B,EAAAC,EAAA/B,GACAA,EAAA/L,MAAA6N,EAAA9K,QAAA,KAAA8K,EAAA7N,MAAAxd,KAAA,MAGA0pB,EAAA,UAAAH,IACAiC,EAAAjC,EAAA,QAqDA,SAAAkC,EAAAjO,GAEA,IADA,IAAAxC,KACA/f,EAAA,EAAmBA,EAAAuiB,EAAA5e,SAAkB3D,EAAA,CACrC,IAAAywB,EAAAlO,EAAAviB,GACA0wB,EAAA,yBAAAD,GACAzF,EAAA2F,KAAAF,GACAG,EAAAF,GAAAG,EAAAJ,GACAC,IAAAE,IACA1F,GAAA,MAAAuF,EAAA5pB,OAAA,KACA4pB,EAAA,OAAAA,GAEA1Q,EAAAlb,KAAA4rB,IAGA,OAAA1Q,EAiBA,SAAAsQ,EAAA1nB,GACA,IAAA4Z,EAAA5Z,EAAA4Z,MACA+C,EAAA3c,EAAArG,WAGA,OAFAigB,EAAA,iBAAAA,KAAA5e,OAAA,EAjBA,SAAAgF,GAEA,IADA,IAAA4Z,EAAA5Z,EAAA4Z,MAAAld,QAAA,YAAA2H,MAAA,MACAhN,EAAA,EAAmBA,EAAAuiB,EAAA5e,SAAkB3D,EAAA,CACrC,IAAAywB,EAAAlO,EAAAviB,GACA,4BAAAywB,GAAAzF,EAAA2F,KAAAF,GACA,MAMA,OAHAzwB,EAAA,kBAAA2I,EAAApI,OACAgiB,IAAAzb,MAAA9G,IAEAuiB,EAOAuO,CAAAnoB,IAAA,yBAEA2c,UACA/C,MAAA,eAAA5Z,EAAApI,KAAAgiB,EAAAiO,EAAAjO,IAIA,SAAAgO,EAAA5nB,EAAA+U,EAAAqT,GACA,uBAAAltB,QAAA,CACA,IAAAyhB,EACA,GAAA9E,EAAAtU,SAAAvD,GAAA,CACA,IAAA4Z,EAAA5Z,EAAA4Z,MACA+C,EAAA5H,EAAAuN,EAAA1I,EAAA5Z,QAEA2c,EAAA5H,EAAAsT,OAAAroB,GAEA,mBAAA4hB,EACAA,EAAAjF,EAAAyL,GACS,mBAAAltB,QAAAN,KACT,iBAAAM,QAAAN,KACAM,QAAAN,IAAA+hB,IAKA,SAAAqG,EAAAprB,EAAA0wB,EAAAplB,EAAAmU,GACA,IAAAkR,GAAA,EACA,IACA,mBAAAD,IACAC,GAAA,EACA,qBAAA3wB,EACA0wB,EAAAjR,GAEAiR,EAAAplB,EAAAmU,IAGK,MAAAvY,GACLgL,EAAAgQ,WAAAhb,GAGA,uBAAAlH,EACAkuB,EAAAluB,EAAAsL,EAAAmU,IAAAkR,GACAX,EAAA1kB,EAAA,wBAGA4iB,EAAAluB,EAAAyf,GAIA,SAAAmR,EAAAxsB,GACA,IAAAC,EACA,sBAAAD,EACAC,EAAA,cACAD,EAAApE,MAAA,aACA,QACK,CAIL,GAHAqE,EAAAD,GAAA,mBAAAA,EAAArC,SACAqC,EAAArC,WAAAke,EAAAle,SAAAqC,GACA,4BACAgsB,KAAA/rB,GACA,IACA,IAAAwsB,EAAAjuB,KAAAE,UAAAsB,GACAC,EAAAwsB,EAEA,MAAA3pB,IAIA,IAAA7C,EAAAjB,SACAiB,EAAA,iBAGA,WAGA,SAAAA,GAEA,OAAAA,EAAAjB,OADA,GAEAiB,EAEAA,EAAAysB,OAAA,EAAAC,IAAA,MARAC,CAAA3sB,GAAA,qBAWA,SAAA6nB,IACA,yBAAA+E,EAGA,IAAAX,EAAA,WAA+B,UAC/BY,EAAA,wCACA,SAAAC,EAAAjB,GACA,IAAAkB,EAAAlB,EAAAmB,MAAAH,GACA,GAAAE,EACA,OACAE,SAAAF,EAAA,GACAlB,KAAAqB,SAAAH,EAAA,QA+CA,SAAArI,EAAAxC,GACApb,KAAAukB,QAAAnJ,EACApb,KAAAqmB,iBAAA,EACA,IAAApuB,EAAA+H,KAAA+b,QAAA,QAAAplB,IAAAykB,EAAA,EAAAA,EAAAW,SACA+J,EAAA9lB,KAAA4d,GACA3lB,EAAA,IAAA+H,KAAAsmB,UAEAxR,EAAAyR,SAAA3I,EAAA1mB,OACAwQ,EAAAkW,gBAEAA,EAAA1nB,UAAAowB,QAAA,WACA,IAAAruB,EAAA+H,KAAA+b,QACA,KAAA9jB,EAAA,IAIA,IAHA,IAAAuuB,KACAC,KAEAnyB,EAAA,EAAAoyB,EAAA1mB,UAAgCrJ,IAAA+vB,IAAoBpyB,EACpDkyB,EAAArtB,KAAAutB,GACAA,IAAAnC,QAGA,QAAAjwB,GADA2D,EAAA+H,KAAA+b,QAAAznB,GACA,EAA4BA,GAAA,IAAQA,EAAA,CACpC,IAAAuiB,EAAA2P,EAAAlyB,GAAAuiB,WACAlgB,IAAA8vB,EAAA5P,KACA4P,EAAA5P,GAAAviB,GAGA,QAAAA,EAAA,EAAmBA,EAAA2D,IAAY3D,EAAA,CAC/B,IAAAqyB,EAAAH,EAAAlyB,GAAAuiB,MACAzS,EAAAqiB,EAAAE,GACA,QAAAhwB,IAAAyN,OAAA9P,EAAA,CACA8P,EAAA,IACAoiB,EAAApiB,EAAA,GAAAmgB,aAAA5tB,EACA6vB,EAAApiB,EAAA,GAAA2X,QAAA,GAEAyK,EAAAlyB,GAAAiwB,aAAA5tB,EACA6vB,EAAAlyB,GAAAynB,QAAA,EACA,IAAA6K,EAAAtyB,EAAA,EAAAkyB,EAAAlyB,EAAA,GAAA0L,KAEAoE,EAAAnM,EAAA,GACA2uB,EAAArC,QAAAiC,EAAApiB,EAAA,GACAwiB,EAAArC,QAAA+B,UACAM,EAAA7K,QACA6K,EAAArC,QAAAxI,QAAA,IAEA6K,EAAArC,aAAA5tB,EACAiwB,EAAA7K,QAAA,GAGA,IADA,IAAA8K,EAAAD,EAAA7K,QAAA,EACAuB,EAAAhpB,EAAA,EAA+BgpB,GAAA,IAAQA,EACvCkJ,EAAAlJ,GAAAvB,QAAA8K,EACAA,IAEA,WAKAjJ,EAAA1nB,UAAAsuB,iBAAA,SAAAvnB,GACA,IAAAA,EAAAwnB,iBAAA,CACAzkB,KAAAsmB,UAMA,IALA,IAAA5B,EAAAC,EAAA1nB,GACA2c,EAAA8K,EAAA9K,QACAkN,GAAApC,EAAA7N,OAEAjY,EAAAoB,UACArJ,IAAAiI,GACAkoB,EAAA3tB,KAAA2rB,EAAAlmB,EAAAiY,MAAAvV,MAAA,QACA1C,IAAA2lB,SAhRA,SAAAuC,GAEA,IADA,IAAAC,EAAAD,EAAA,GACAxyB,EAAA,EAAmBA,EAAAwyB,EAAA7uB,SAAmB3D,EAAA,CAMtC,IALA,IAAAuO,EAAAikB,EAAAxyB,GACA0yB,EAAAD,EAAA9uB,OAAA,EACAgvB,EAAAF,EAAAC,GACAE,GAAA,EAEA5J,EAAAza,EAAA5K,OAAA,EAAqCqlB,GAAA,IAAQA,EAC7C,GAAAza,EAAAya,KAAA2J,EAAA,CACAC,EAAA5J,EACA,MAIA,QAAAA,EAAA4J,EAAyC5J,GAAA,IAAQA,EAAA,CACjD,IAAAyH,EAAAliB,EAAAya,GACA,GAAAyJ,EAAAC,KAAAjC,EAIA,MAHAgC,EAAAtf,MACAuf,IAKAD,EAAAlkB,GA0PAskB,CAAAL,GA5RA,SAAAA,GACA,QAAAxyB,EAAA,EAAmBA,EAAAwyB,EAAA7uB,SAAmB3D,GACtC,IAAAwyB,EAAAxyB,GAAA2D,QACA3D,EAAA,EAAAwyB,EAAA7uB,QAAA6uB,EAAAxyB,GAAA,KAAAwyB,EAAAxyB,EAAA,SACAwyB,EAAAM,OAAA9yB,EAAA,GACAA,KAwRA+yB,CAAAP,GACAhS,EAAA8P,kBAAA3nB,EAAA,QAzSA,SAAA2c,EAAAkN,GACA,QAAAxyB,EAAA,EAAmBA,EAAAwyB,EAAA7uB,OAAA,IAAuB3D,EAC1CwyB,EAAAxyB,GAAA6E,KAAA,wBACA2tB,EAAAxyB,GAAAwyB,EAAAxyB,GAAA+E,KAAA,MAKA,OAHA/E,EAAAwyB,EAAA7uB,SACA6uB,EAAAxyB,GAAAwyB,EAAAxyB,GAAA+E,KAAA,OAEAugB,EAAA,KAAAkN,EAAAztB,KAAA,MAiSAiuB,CAAA1N,EAAAkN,IACAhS,EAAA8P,kBAAA3nB,EAAA,yBAGA,IAAA6oB,EAAA,WACA,IAAAyB,EAAA,YACAC,EAAA,SAAA3Q,EAAA5Z,GACA,uBAAA4Z,SAEAlgB,IAAAsG,EAAApI,WACA8B,IAAAsG,EAAA2c,QACA3c,EAAArG,WAEA6uB,EAAAxoB,IAGA,oBAAA/F,MAAAuwB,iBACA,mBAAAvwB,MAAA4uB,kBAAA,CACA5uB,MAAAuwB,iBAAA,EACAnI,EAAAiI,EACAhI,EAAAiI,EACA,IAAA1B,EAAA5uB,MAAA4uB,kBAKA,OAHAX,EAAA,SAAAJ,GACA,OAAA5F,EAAA8F,KAAAF,IAEA,SAAArP,EAAAgS,GACAxwB,MAAAuwB,iBAAA,EACA3B,EAAApQ,EAAAgS,GACAxwB,MAAAuwB,iBAAA,GAGA,IAYAE,EAZAxd,EAAA,IAAAjT,MAEA,oBAAAiT,EAAA0M,OACA1M,EAAA0M,MAAAvV,MAAA,SAAA/H,QAAA,sBAIA,OAHA+lB,EAAA,IACAC,EAAAiI,EACAhI,GAAA,EACA,SAAAzqB,GACAA,EAAA8hB,OAAA,IAAA3f,OAAA2f,OAKA,IAAS,UAAA3f,MACT,MAAA6E,GACA4rB,EAAA,UAAA5rB,EAEA,gBAAAoO,IAAAwd,GACA,iBAAAzwB,MAAAuwB,iBAWAlI,EAAA,SAAA1I,EAAA5Z,GACA,uBAAA4Z,IAEA,iBAAA5Z,GACA,mBAAAA,QACAtG,IAAAsG,EAAApI,WACA8B,IAAAsG,EAAA2c,QAGA6L,EAAAxoB,GAFAA,EAAArG,YAKA,OAtBA0oB,EAAAiI,EACAhI,EAAAiI,EACA,SAAAzyB,GACAmC,MAAAuwB,iBAAA,EACA,IAAiB,UAAAvwB,MACjB,MAAA6E,GAAsBhH,EAAA8hB,MAAA9a,EAAA8a,MACtB3f,MAAAuwB,iBAAA,IArDA,GAyEA,oBAAAtvB,cAAA,IAAAA,QAAA2G,OACA+f,EAAA,SAAAjF,GACAzhB,QAAA2G,KAAA8a,IAEA9E,EAAA4B,QAAAxK,EAAAyK,OAAAiR,MACA/I,EAAA,SAAAjF,EAAAyL,GACA,IAAAwC,EAAAxC,EAAA,gBACAltB,QAAA2G,KAAA+oB,EAAAjO,EAAA,WAEK9E,EAAA4B,QAAA,qBAAAxf,OAAA,QACL2nB,EAAA,SAAAjF,EAAAyL,GACAltB,QAAA2G,KAAA,KAAA8a,EACAyL,EAAA,qCAKA,IAAA7iB,GACAkd,WACAjC,iBAAA,EACA7C,cAAA,EACAsJ,YAAA,GAKA,OAFAzG,GAAAnT,EAAAmT,mBAGAA,gBAAA,WACA,OAAAjb,EAAAib,iBAEAiC,SAAA,WACA,OAAAld,EAAAkd,UAEA9E,aAAA,WACA,OAAApY,EAAAoY,cAEAsJ,WAAA,WACA,OAAA1hB,EAAA0hB,YAEA3L,sBAAA,WACA,OAAAA,GAEAE,mBAAA,WACA,OAAAA,GAEAqP,sBA3eA,SAAAC,EAAAzF,EAAAztB,EAAAyf,EACA8G,GACA,QAAAzkB,IAAAoxB,GAAA,OAAAzF,GACA3C,EAAA,CACA,QAAAhpB,IAAAykB,KAAA+E,wBAAA,OACA,aAAA7L,EAAA6D,WAAA,OAEAtjB,OAAA,KACA,IAAAmzB,EAAA,GACAC,EAAA,GACA,GAAA3F,EAAA3E,OAAA,CAGA,IAFA,IAAAuK,EAAA5F,EAAA3E,OAAA9G,MAAAvV,MAAA,MACAuV,EAAAiO,EAAAoD,GACA5zB,EAAAuiB,EAAA5e,OAAA,EAA0C3D,GAAA,IAAQA,EAAA,CAClD,IAAAywB,EAAAlO,EAAAviB,GACA,IAAA8qB,EAAA6F,KAAAF,GAAA,CACA,IAAAoD,EAAApD,EAAAmB,MAAA7G,GACA8I,IACAH,EAAA,MAAAG,EAAA,GACA,IAAAA,EAAA,OAAAA,EAAA,QAEA,OAIA,GAAAtR,EAAA5e,OAAA,EAEA,IADA,IAAAmwB,EAAAvR,EAAA,GACAviB,EAAA,EAA+BA,EAAA4zB,EAAAjwB,SAAuB3D,EAEtD,GAAA4zB,EAAA5zB,KAAA8zB,EAAA,CACA9zB,EAAA,IACA2zB,EAAA,KAAAC,EAAA5zB,EAAA,IAEA,OAMA,IAAA+zB,EAAA,8BAAAxzB,EACA,WAAAmzB,EAAA,yDAEAC,EACA3T,EAAAuG,MAAAwN,GAAA,EAAA/F,KAicAgG,UA7OA,SAAA3T,EAAA4T,GACA,GAAAxH,IAAA,CAOA,IANA,IAIAyH,EACAC,EALAC,EAAA/T,EAAAkC,MAAAvV,MAAA,MACAqnB,EAAAJ,EAAA1R,MAAAvV,MAAA,MACAsnB,GAAA,EACA9K,GAAA,EAGAxpB,EAAA,EAAmBA,EAAAo0B,EAAAzwB,SAA4B3D,EAAA,CAC/C,IAAAuF,EAAAmsB,EAAA0C,EAAAp0B,IACA,GAAAuF,EAAA,CACA2uB,EAAA3uB,EAAAssB,SACAyC,EAAA/uB,EAAAkrB,KACA,OAGA,QAAAzwB,EAAA,EAAmBA,EAAAq0B,EAAA1wB,SAA2B3D,EAAA,CAC9C,IAAAuF,EAAAmsB,EAAA2C,EAAAr0B,IACA,GAAAuF,EAAA,CACA4uB,EAAA5uB,EAAAssB,SACArI,EAAAjkB,EAAAkrB,KACA,OAGA6D,EAAA,GAAA9K,EAAA,IAAA0K,IAAAC,GACAD,IAAAC,GAAAG,GAAA9K,IAIAqH,EAAA,SAAAJ,GACA,GAAA5F,EAAA8F,KAAAF,GAAA,SACA,IAAAlmB,EAAAmnB,EAAAjB,GACA,SAAAlmB,GACAA,EAAAsnB,WAAAqC,GACAI,GAAA/pB,EAAAkmB,MAAAlmB,EAAAkmB,MAAAjH,OA4MAhf,OACA+pB,WA/bA,SAAAh0B,EAAAi0B,GACA,IAAAlP,EAAA/kB,EACA,0DAEA,OADAi0B,IAAAlP,GAAA,QAAAkP,EAAA,aACAhqB,EAAA8a,IA4bAgE,gBACA6D,eACAU,sBAIG4G,WAAA,GAAAxL,QAAA,GAAAlG,SAAA,KAAqC2R,IAAA,SAAAjV,EAAA1f,EAAAD,GACxC,aACAC,EAAAD,QAAA,SAAAkW,GACA,SAAA2e,IACA,OAAAjpB,KAAAzK,MAEA,SAAA2zB,IACA,MAAAlpB,KAAAG,OAGAmK,EAAApU,UAAA,OACAoU,EAAApU,UAAAizB,WAAA,SAAA5zB,GAEA,OADAA,aAAA+U,GAAA/U,EAAAqqB,8BACA5f,KAAAgY,MACAiR,OAAAtyB,UAAyCpB,cAAaoB,IAGtD2T,EAAApU,UAAA,MACAoU,EAAApU,UAAAkzB,UAAA,SAAAjpB,GACA,OAAAH,KAAAgY,MACAkR,OAAAvyB,UAAwCwJ,eAAexJ,IAGvD2T,EAAApU,UAAAmzB,WAAA,SAAAlpB,GACA,GAAAJ,UAAA9H,QAAA,EACA,OAAA+H,KAAAgY,WACArhB,EAAAuyB,OAAAvyB,GAA4CwJ,eAAexJ,GAE3D,IAAA2yB,EAAAvpB,UAAA,GAEA,OAAAC,KAAAwI,OAAArI,EADA,WAAkC,MAAAmpB,KAKlChf,EAAApU,UAAAqzB,YAAA,SAAAh0B,GACA,GAAAwK,UAAA9H,QAAA,EAEA,OADA1C,aAAA+U,GAAA/U,EAAAqqB,8BACA5f,KAAAgY,WACArhB,EAAAsyB,OAAAtyB,GAA6CpB,cAAaoB,GAE1D,IAAA6yB,EAAAzpB,UAAA,GAGA,OAFAypB,aAAAlf,GAAAkf,EAAA5J,8BAEA5f,KAAAwI,OAAAjT,EADA,WAAkC,OAAAi0B,WAM9BC,IAAA,SAAA1V,EAAA1f,EAAAD,GACJ,aACAC,EAAAD,QAAA,SAAAkW,EAAAiN,GACA,IAAAmS,EAAApf,EAAAqf,OACAC,EAAAtf,EAAAuf,IAEA,SAAAC,IACA,OAAAF,EAAA5pB,MAOAsK,EAAApU,UAAA6zB,KAAA,SAAArpB,GACA,OAAAgpB,EAAA1pB,KAAAU,EAAA6W,EAAA,GACAS,MAAA8R,OAAAnzB,SAAAqJ,UAAArJ,IAGA2T,EAAApU,UAAA8zB,UAAA,SAAAtpB,GACA,OAAAgpB,EAAA1pB,KAAAU,EAAA6W,MAGAjN,EAAAyf,KAAA,SAAA3V,EAAA1T,GACA,OAAAgpB,EAAAtV,EAAA1T,EAAA6W,EAAA,GACAS,MAAA8R,OAAAnzB,SAAAyd,OAAAzd,IAGA2T,EAAA0f,UAlBA,SAAA5V,EAAA1T,GACA,OAAAgpB,EAAAtV,EAAA1T,EAAA6W,YAqBI0S,IAAA,SAAAlW,EAAA1f,EAAAD,GACJ,aACA,IAsBA81B,EAAAC,EAtBAlL,EAAAlL,EAAA,SACAqW,EAAAnL,EAAAoL,OACAvV,EAAAf,EAAA,UACAwS,EAAAzR,EAAAyR,SACA3B,EAAA9P,EAAA8P,kBAEA,SAAA0F,EAAAC,EAAAC,GACA,SAAAC,EAAA7Q,GACA,KAAA5Z,gBAAAyqB,GAAA,WAAAA,EAAA7Q,GACAgL,EAAA5kB,KAAA,UACA,iBAAA4Z,IAAA4Q,GACA5F,EAAA5kB,KAAA,OAAAuqB,GACArzB,MAAA4uB,kBACA5uB,MAAA4uB,kBAAA9lB,UAAAkG,aAEAhP,MAAAzC,KAAAuL,MAIA,OADAumB,EAAAkE,EAAAvzB,OACAuzB,EAIA,IAAAzL,EAAAsL,EAAA,qBACAI,EAAAJ,EAAA,0CACAK,EAAAL,EAAA,gCACAM,EAAAN,EAAA,oCACA,IACAJ,EAAA3pB,UACA4pB,EAAAU,WACC,MAAA9uB,GACDmuB,EAAAI,EAAA,0BACAH,EAAAG,EAAA,4BAMA,IAHA,IAAAQ,EAAA,sHACAxpB,MAAA,KAEAhN,EAAA,EAAeA,EAAAw2B,EAAA7yB,SAAoB3D,EACnC,mBAAAuL,MAAA3J,UAAA40B,EAAAx2B,MACAs2B,EAAA10B,UAAA40B,EAAAx2B,IAAAuL,MAAA3J,UAAA40B,EAAAx2B,KAIA2qB,EAAAhqB,eAAA21B,EAAA10B,UAAA,UACAX,MAAA,EACAme,cAAA,EACAC,UAAA,EACAze,YAAA,IAEA01B,EAAA10B,UAAA,iBACA,IAAA4B,EAAA,EAmBA,SAAAizB,EAAAnR,GACA,KAAA5Z,gBAAA+qB,GACA,WAAAA,EAAAnR,GACAgL,EAAA5kB,KAAA,2BACA4kB,EAAA5kB,KAAA,UAAA4Z,GACA5Z,KAAAgrB,MAAApR,EACA5Z,KAAA,iBAEA4Z,aAAA1iB,OACA0tB,EAAA5kB,KAAA,UAAA4Z,WACAgL,EAAA5kB,KAAA,QAAA4Z,EAAA/C,QACK3f,MAAA4uB,mBACL5uB,MAAA4uB,kBAAA9lB,UAAAkG,aA9BA0kB,EAAA10B,UAAAU,SAAA,WACA,IAAAq0B,EAAAprB,MAAA,EAAA/H,EAAA,GAAAuB,KAAA,KACAgb,EAAA,KAAA4W,EAAA,uBACAnzB,IACAmzB,EAAAprB,MAAA,EAAA/H,EAAA,GAAAuB,KAAA,KACA,QAAA/E,EAAA,EAAmBA,EAAA0L,KAAA/H,SAAiB3D,EAAA,CAGpC,IAFA,IAAA4E,EAAA8G,KAAA1L,KAAA0L,KAAA,4BAAAA,KAAA1L,GAAA,GACA0F,EAAAd,EAAAoI,MAAA,MACAgc,EAAA,EAAuBA,EAAAtjB,EAAA/B,SAAkBqlB,EACzCtjB,EAAAsjB,GAAA2N,EAAAjxB,EAAAsjB,GAEApkB,EAAAc,EAAAX,KAAA,MACAgb,GAAAnb,EAAA,KAGA,OADApB,IACAuc,GAmBAkS,EAAAwE,EAAA7zB,OAEA,IAAAg0B,EAAAh0B,MAAA,uBACAg0B,IACAA,EAAAd,GACAM,oBACAC,eACAI,mBACAI,eAAAJ,EACAH,mBAEA3L,EAAAhqB,eAAAiC,MAAA,0BACA3B,MAAA21B,EACAvX,UAAA,EACAze,YAAA,EACAwe,cAAA,KAIArf,EAAAD,SACA8C,YACAqJ,UAAA2pB,EACAW,WAAAV,EACAO,kBAAAQ,EAAAR,kBACAK,iBAAAG,EAAAH,iBACAJ,aAAAO,EAAAP,aACAC,eAAAM,EAAAN,eACA5L,aAGGzB,QAAA,GAAAlG,SAAA,KAAuB+T,IAAA,SAAArX,EAAA1f,EAAAD,GAC1B,IAAAi3B,EAAA,WACA,aACA,YAAA10B,IAAAqJ,KAFA,GAKA,GAAAqrB,EACAh3B,EAAAD,SACAi2B,OAAAr1B,OAAAq1B,OACAp1B,eAAAD,OAAAC,eACAq2B,cAAAt2B,OAAAu2B,yBACAhkB,KAAAvS,OAAAuS,KACArF,MAAAlN,OAAAwP,oBACAmB,eAAA3Q,OAAA2Q,eACA8W,QAAA5c,MAAA4c,QACA4O,QACAG,mBAAA,SAAAvyB,EAAAwyB,GACA,IAAAC,EAAA12B,OAAAu2B,yBAAAtyB,EAAAwyB,GACA,QAAAC,MAAA/X,WAAA+X,EAAAC,WAGC,CACD,IAAA7pB,KAAgB3L,eAChB+C,KAAgBtC,SAChBg1B,KAAkB1lB,YAAAhQ,UAElB21B,EAAA,SAAA92B,GACA,IAAAsf,KACA,QAAAxe,KAAAd,EACA+M,EAAArN,KAAAM,EAAAc,IACAwe,EAAAlb,KAAAtD,GAGA,OAAAwe,GAkCAhgB,EAAAD,SACAqoB,QAVA,SAAAxjB,GACA,IACA,yBAAAC,EAAAzE,KAAAwE,GAEA,MAAA8C,GACA,WAMAwL,KAAAskB,EACA3pB,MAAA2pB,EACA52B,eA/BA,SAAAF,EAAAc,EAAAi2B,GAEA,OADA/2B,EAAAc,GAAAi2B,EAAAv2B,MACAR,GA8BAu2B,cApCA,SAAAv2B,EAAAc,GACA,OAAgBN,MAAAR,EAAAc,KAoChBw0B,OA5BA,SAAApxB,GACA,OAAAA,GA4BA0M,eAzBA,SAAA1M,GACA,IACA,OAAAjE,OAAAiE,GAAAiN,YAAAhQ,UAEA,MAAA6F,GACA,OAAA6vB,IAqBAP,QACAG,mBAAA,WACA,iBAKIO,IAAA,SAAAhY,EAAA1f,EAAAD,GACJ,aACAC,EAAAD,QAAA,SAAAkW,EAAAiN,GACA,IAAAyU,EAAA1hB,EAAA2hB,IAEA3hB,EAAApU,UAAAg2B,OAAA,SAAAxrB,EAAAtJ,GACA,OAAA40B,EAAAhsB,KAAAU,EAAAtJ,EAAAmgB,IAGAjN,EAAA4hB,OAAA,SAAA9X,EAAA1T,EAAAtJ,GACA,OAAA40B,EAAA5X,EAAA1T,EAAAtJ,EAAAmgB,UAII4U,IAAA,SAAApY,EAAA1f,EAAAD,GACJ,aACAC,EAAAD,QAAA,SAAAkW,EAAAkN,EAAAuF,GACA,IAAAjI,EAAAf,EAAA,UACA2W,EAAApgB,EAAAogB,kBACAjQ,EAAA3F,EAAA2F,SACA2R,EAAArY,EAAA,iBAAAA,CAAAgJ,GAEA,SAAAsP,EAAA/X,EAAAra,EAAAmqB,GACApkB,KAAAsU,UACAtU,KAAA/F,OACA+F,KAAAokB,UACApkB,KAAAssB,QAAA,EACAtsB,KAAAusB,cAAA,KAOA,SAAAC,EAAAC,GACAzsB,KAAAysB,iBAOA,SAAAC,EAAApe,EAAAnO,GACA,aAAAmO,EAAAie,gBACAxsB,UAAA9H,OAAA,EACAqW,EAAAie,cAAA3U,QAAAzX,GAEAmO,EAAAie,cAAA3Q,UAEAtN,EAAAie,cAAA,MACA,GAKA,SAAAI,IACA,OAAAF,EAAAh4B,KAAAuL,UAAAsU,QAAAqE,UAAA0H,iBAEA,SAAAuM,EAAAzsB,GACA,IAAAusB,EAAA1sB,KAAAG,GAEA,OADAsa,EAAA1e,EAAAoE,EACAsa,EAEA,SAAAgS,EAAAI,GACA,IAAAvY,EAAAtU,KAAAsU,QACA8P,EAAApkB,KAAAokB,QAEA,IAAApkB,KAAAssB,OAAA,CACAtsB,KAAAssB,QAAA,EACA,IAAAjY,EAAArU,KAAA8sB,mBACA1I,EAAA3vB,KAAA6f,EAAAkE,eACA4L,EAAA3vB,KAAA6f,EAAAkE,cAAAqU,GACA,GAAAxY,IAAA0I,EACA,OAAA1I,EACS,QAAA1d,IAAA0d,EAAA,CACTC,EAAA4L,2BACA,IAAAxH,EAAAlB,EAAAnD,EAAAC,GACA,GAAAoE,aAAApO,EAAA,CACA,SAAAtK,KAAAusB,cAAA,CACA,GAAA7T,EAAAyD,eAAA,CACA,IAAAhc,EACA,IAAAuqB,EAAA,8BAGA,OAFApW,EAAAoI,kBAAAvc,GACAsa,EAAA1e,EAAAoE,EACAsa,EACqB/B,EAAAwD,aACrBxD,EAAA4K,4BACA,IAAAkJ,EAAAxsB,OAGA,OAAA0Y,EAAAV,MACA2U,EAAAC,OAAAj2B,EAAAqJ,UAAArJ,KAKA,OAAA2d,EAAAyY,cACAL,EAAA1sB,MACAya,EAAA1e,EAAA8wB,EACApS,IAEAiS,EAAA1sB,MACA6sB,GAyDA,OAjIAR,EAAAn2B,UAAA42B,iBAAA,WACA,WAAA9sB,KAAA/F,MAOAuyB,EAAAt2B,UAAAymB,iBAAA,WACA+P,EAAA1sB,KAAAysB,iBAmEAniB,EAAApU,UAAA82B,aAAA,SAAA5I,EAAAnqB,EAAAgzB,EAAAL,GACA,yBAAAxI,EAAApkB,KAAAqH,OACArH,KAAAgY,MAAAiV,EACAL,OACAj2B,EACA,IAAA01B,EAAArsB,KAAA/F,EAAAmqB,QACAztB,IAGA2T,EAAApU,UAAAg3B,OACA5iB,EAAApU,UAAA,iBAAAkuB,GACA,OAAApkB,KAAAgtB,aAAA5I,EACA,EACAqI,EACAA,IAIAniB,EAAApU,UAAAi3B,IAAA,SAAA/I,GACA,OAAApkB,KAAAgtB,aAAA5I,EAAA,EAAAqI,IAGAniB,EAAApU,UAAAk3B,SAAA,SAAAC,GACA,IAAA1b,EAAA5R,UAAA9H,OACA,OAAA0Z,EACA,OAAA3R,KAAAgtB,aAAAK,EACA,OACA12B,EACA81B,GAEA,IACAn4B,EADAg5B,EAAA,IAAAztB,MAAA8R,EAAA,GACA2L,EAAA,EACA,IAAAhpB,EAAA,EAAmBA,EAAAqd,EAAA,IAAard,EAAA,CAChC,IAAAkX,EAAAzL,UAAAzL,GACA,IAAAwgB,EAAAtU,SAAAgL,GAGA,OAAAlB,EAAAC,OAAA,IAAAhK,UACA,6DACAuU,EAAA+E,YAAArO,KAJA8hB,EAAAhQ,KAAA9R,EAQA8hB,EAAAr1B,OAAAqlB,EACA,IAAA8G,EAAArkB,UAAAzL,GACA,OAAA0L,KAAAgtB,aAAAZ,EAAAkB,EAAAlJ,EAAApkB,MACA,OACArJ,EACA81B,IAKAJ,KAGGkB,iBAAA,EAAAlW,SAAA,KAA+BmW,IAAA,SAAAzZ,EAAA1f,EAAAD,GAClC,aACAC,EAAAD,QAAA,SAAAkW,EACAkQ,EACAjD,EACAC,EACAiW,EACAhwB,GACA,IAAAiwB,EAAA3Z,EAAA,YACAxT,EAAAmtB,EAAAntB,UACAuU,EAAAf,EAAA,UACA0G,EAAA3F,EAAA2F,SACAxQ,EAAA6K,EAAA7K,SACA0jB,KAmBA,SAAAC,EAAAC,EAAAnY,EAAAoY,EAAAjX,GACA,GAAApZ,EAAAmd,eAAA,CACA,IAAAmT,EAAA,IAAAzjB,EAAAiN,GACAyW,EAAAhuB,KAAAguB,gBAAA,IAAA1jB,EAAAiN,GACAvX,KAAAiuB,SAAAF,EAAAb,OAAA,WACA,OAAAc,IAEAD,EAAA9M,qBACA8M,EAAAlV,aAAA7Y,UACK,CACL,IAAAsU,EAAAtU,KAAAiuB,SAAA,IAAA3jB,EAAAiN,GACAjD,EAAA2M,qBAEAjhB,KAAAkuB,OAAArX,EACA7W,KAAAmuB,mBAAAN,EACA7tB,KAAAouB,UAAA1Y,EACA1V,KAAAquB,gBAAA13B,EACAqJ,KAAAsuB,eAAA,mBAAAR,GACAA,GAAAp3B,OAAAi3B,GACAA,EACA3tB,KAAAuuB,gBAAA,KACAvuB,KAAAwuB,oBAAA,EAEA1Z,EAAAyR,SAAAqH,EAAAH,GAEAG,EAAA13B,UAAAu4B,YAAA,WACA,cAAAzuB,KAAAiuB,UAGAL,EAAA13B,UAAAw4B,SAAA,WACA1uB,KAAAiuB,SAAAjuB,KAAAquB,WAAA,KACA5wB,EAAAmd,gBAAA,OAAA5a,KAAAguB,kBACAhuB,KAAAguB,gBAAAW,WACA3uB,KAAAguB,gBAAA,OAIAJ,EAAA13B,UAAA04B,kBAAA,WACA,IAAA5uB,KAAAyuB,cAAA,CACA,IAEA50B,EAFAg1B,OAAA,IAAA7uB,KAAAquB,WAAA,OAGA,GAAAQ,EAUA7uB,KAAAiuB,SAAAjQ,eACAnkB,EAAAoQ,EAAAjK,KAAAquB,WAAA,QAAA55B,KAAAuL,KAAAquB,gBACA13B,GACAqJ,KAAAiuB,SAAAhQ,kBAbA,CACA,IAAA9d,EAAA,IAAAmK,EAAAogB,kBACA,gCACApgB,EAAAwkB,UAAAC,eAAA5uB,EACAH,KAAAiuB,SAAAvR,kBAAAvc,GACAH,KAAAiuB,SAAAjQ,eACAnkB,EAAAoQ,EAAAjK,KAAAquB,WAAA,OAAA55B,KAAAuL,KAAAquB,WACAluB,GACAH,KAAAiuB,SAAAhQ,cAOAje,KAAAwuB,oBAAA,EACAxuB,KAAAuuB,gBAAA,KACAvuB,KAAAgvB,UAAAn1B,KAGA+zB,EAAA13B,UAAA+4B,kBAAA,SAAA15B,GACAyK,KAAAuuB,gBAAA,KACAvuB,KAAAiuB,SAAAjQ,eACA,IAAAnkB,EAAAoQ,EAAAjK,KAAAquB,WAAAvrB,MAAArO,KAAAuL,KAAAquB,WAAA94B,GACAyK,KAAAiuB,SAAAhQ,cACAje,KAAAgvB,UAAAn1B,IAGA+zB,EAAA13B,UAAAg5B,iBAAA,SAAA/uB,GACAH,KAAAuuB,gBAAA,KACAvuB,KAAAiuB,SAAAvR,kBAAAvc,GACAH,KAAAiuB,SAAAjQ,eACA,IAAAnkB,EAAAoQ,EAAAjK,KAAAquB,WAAA,OACA55B,KAAAuL,KAAAquB,WAAAluB,GACAH,KAAAiuB,SAAAhQ,cACAje,KAAAgvB,UAAAn1B,IAGA+zB,EAAA13B,UAAAymB,iBAAA,WACA,GAAA3c,KAAAuuB,2BAAAjkB,EAAA,CACA,IAAAgK,EAAAtU,KAAAuuB,gBACAvuB,KAAAuuB,gBAAA,KACAja,EAAAqG,WAIAiT,EAAA13B,UAAAoe,QAAA,WACA,OAAAtU,KAAAiuB,UAGAL,EAAA13B,UAAAi5B,KAAA,WACAnvB,KAAAquB,WAAAruB,KAAAmuB,mBAAA15B,KAAAuL,KAAAouB,WACApuB,KAAAouB,UACApuB,KAAAmuB,wBAAAx3B,EACAqJ,KAAAivB,uBAAAt4B,IAGAi3B,EAAA13B,UAAA84B,UAAA,SAAAn1B,GACA,IAAAya,EAAAtU,KAAAiuB,SACA,GAAAp0B,IAAA4gB,EAEA,OADAza,KAAA0uB,WACA1uB,KAAAwuB,mBACAla,EAAAqG,SAEArG,EAAA8a,gBAAAv1B,EAAAkC,GAAA,GAIA,IAAAxG,EAAAsE,EAAAtE,MACA,QAAAsE,EAAAyN,KAEA,OADAtH,KAAA0uB,WACA1uB,KAAAwuB,mBACAla,EAAAqG,SAEArG,EAAA8D,iBAAA7iB,GAGA,IAAAmjB,EAAAlB,EAAAjiB,EAAAyK,KAAAiuB,UACA,GAAAvV,aAAApO,GAKA,QAJAoO,EA1IA,SAAAnjB,EAAAo4B,EAAA0B,GACA,QAAA/6B,EAAA,EAAmBA,EAAAq5B,EAAA11B,SAA0B3D,EAAA,CAC7C+6B,EAAArR,eACA,IAAAnkB,EAAAoQ,EAAA0jB,EAAAr5B,GAAA2V,CAAA1U,GAEA,GADA85B,EAAApR,cACApkB,IAAA4gB,EAAA,CACA4U,EAAArR,eACA,IAAA3J,EAAA/J,EAAAC,OAAAkQ,EAAA1e,GAEA,OADAszB,EAAApR,cACA5J,EAEA,IAAAqE,EAAAlB,EAAA3d,EAAAw1B,GACA,GAAA3W,aAAApO,EAAA,OAAAoO,EAEA,YA6HA4W,CAAA5W,EACA1Y,KAAAsuB,eACAtuB,KAAAiuB,WAJA,CAiBA,IAAAsB,GADA7W,IAAAC,WACAR,UAEA,aAAAoX,IACAvvB,KAAAuuB,gBAAA7V,EACAA,EAAA8W,OAAAxvB,KAAA,OACS,aAAAuvB,GACTjlB,EAAAoQ,OAAAlQ,OACAxK,KAAAivB,kBAAAjvB,KAAA0Y,EAAA8Q,UAES,aAAA+F,GACTjlB,EAAAoQ,OAAAlQ,OACAxK,KAAAkvB,iBAAAlvB,KAAA0Y,EAAA4Q,WAGAtpB,KAAA4uB,yBAzBA5uB,KAAAkvB,iBACA,IAAA3uB,EACA,oGAAA5G,QAAA,KAAA2rB,OAAA/vB,IACA,oBACAyK,KAAAkuB,OAAA5sB,MAAA,MAAAlG,MAAA,MAAA/B,KAAA,SA0BAiR,EAAAwkB,UAAA,SAAAjB,EAAAz2B,GACA,sBAAAy2B,EACA,UAAAttB,EAAA,0EAEA,IAAAutB,EAAA94B,OAAAoC,GAAA02B,aACA2B,EAAA7B,EACA/W,GAAA,IAAA3f,OAAA2f,MACA,kBACA,IAAAjN,EAAAikB,EAAA/tB,MAAAE,KAAAD,WACA2vB,EAAA,IAAAD,OAAA94B,SAAAm3B,EACAjX,GACAxC,EAAAqb,EAAApb,UAGA,OAFAob,EAAArB,WAAAzkB,EACA8lB,EAAAT,uBAAAt4B,GACA0d,IAIA/J,EAAAwkB,UAAAa,gBAAA,SAAAjvB,GACA,sBAAAA,EACA,UAAAH,EAAA,gCAAAuU,EAAA+E,YAAAnZ,IAEAitB,EAAAx0B,KAAAuH,IAGA4J,EAAAolB,MAAA,SAAA7B,GAEA,GADApwB,EAAAorB,WAAA,yCACA,mBAAAgF,EACA,OAAArT,EAAA,0EAEA,IAAAkV,EAAA,IAAA9B,EAAAC,EAAA7tB,MACAqU,EAAAqb,EAAApb,UAEA,OADAob,EAAAP,KAAA7kB,EAAAolB,OACArb,MAIG0U,WAAA,GAAA1R,SAAA,KAA0BuY,IAAA,SAAA7b,EAAA1f,EAAAD,GAC7B,aACAC,EAAAD,QACA,SAAAkW,EAAAiQ,EAAA/C,EAAAD,EAAAxQ,EACA+X,GACA,IAAAhK,EAAAf,EAAA,UACAe,EAAA2E,YACA3E,EAAA7K,SACA6K,EAAA2F,SAuGAnQ,EAAAjR,KAAA,WACA,IACAqH,EADAmvB,EAAA9vB,UAAA9H,OAAA,EAEA43B,EAAA,sBAAA9vB,UAAA8vB,KACAnvB,EAAAX,UAAA8vB,IA+CA,IAAAjwB,KAAAxE,MAAA3G,KAAAsL,WACAW,GAAAd,EAAA6H,MACA,IAAA4M,EAAA,IAAAkG,EAAA3a,GAAA0U,UACA,YAAA3d,IAAA+J,EAAA2T,EAAAyb,OAAApvB,GAAA2T,MAKGgD,SAAA,KAAY0Y,IAAA,SAAAhc,EAAA1f,EAAAD,GACf,aACAC,EAAAD,QAAA,SAAAkW,EACAiQ,EACAC,EACAhD,EACAD,EACA9Z,GACA,IAAAqhB,EAAAxU,EAAAyU,WACAjK,EAAAf,EAAA,UACA9J,EAAA6K,EAAA7K,SACAwQ,EAAA3F,EAAA2F,SACA1T,EAAAuD,EAAAoQ,OAEA,SAAAsV,EAAA5b,EAAA1T,EAAAuvB,EAAAC,GACAlwB,KAAAmwB,aAAA/b,GACApU,KAAAiuB,SAAAhN,qBACA,IAAAhR,EAAA6O,IACA9e,KAAAowB,UAAA,OAAAngB,EAAAvP,EAAAoU,EAAA8L,WAAA3Q,EAAAvP,GACAV,KAAAqwB,iBAAAH,IAAA3Y,EACA,IAAA1X,MAAAG,KAAA/H,UACA,KACA+H,KAAAswB,OAAAL,EACAjwB,KAAAuwB,UAAA,EACAvwB,KAAAwwB,UACAzpB,EAAAyD,OAAAxK,KAAAywB,WAAAzwB,UAAArJ,GA6GA,SAAAs1B,EAAA7X,EAAA1T,EAAAtJ,EAAA84B,GACA,sBAAAxvB,EACA,OAAA8Z,EAAA,gCAAA1F,EAAA+E,YAAAnZ,IAGA,IAAAuvB,EAAA,EACA,QAAAt5B,IAAAS,EAAA,CACA,oBAAAA,GAAA,OAAAA,EAQA,OAAAkT,EAAAC,OAAA,IAAAhK,UACA,gDACAuU,EAAA+E,YAAAziB,KATA,oBAAAA,EAAAs5B,YACA,OAAApmB,EAAAC,OACA,IAAAhK,UAAA,4CACAuU,EAAA+E,YAAAziB,EAAAs5B,eAEAT,EAAA74B,EAAAs5B,YASA,OAFAT,EAAA,iBAAAA,GACAU,SAAAV,OAAA,EAAAA,EAAA,EACA,IAAAD,EAAA5b,EAAA1T,EAAAuvB,EAAAC,GAAA5b,UAjIAQ,EAAAyR,SAAAyJ,EAAAzV,GAEAyV,EAAA95B,UAAAu6B,WAAA,WACAzwB,KAAA4wB,YAAAj6B,GAAA,IAGAq5B,EAAA95B,UAAA26B,MAAA,aAEAb,EAAA95B,UAAA+4B,kBAAA,SAAA15B,EAAA6O,GACA,IAAAyB,EAAA7F,KAAA8wB,QACA74B,EAAA+H,KAAA/H,SACA84B,EAAA/wB,KAAAqwB,iBACAJ,EAAAjwB,KAAAswB,OAEA,GAAAlsB,EAAA,GAGA,GADAyB,EADAzB,GAAA,EAAAA,EAAA,GACA7O,EACA06B,GAAA,IACAjwB,KAAAuwB,YACAvwB,KAAA+V,cACA/V,KAAAyuB,eAAA,aAEK,CACL,GAAAwB,GAAA,GAAAjwB,KAAAuwB,WAAAN,EAGA,OAFApqB,EAAAzB,GAAA7O,EACAyK,KAAAwwB,OAAAr3B,KAAAiL,IACA,EAEA,OAAA2sB,MAAA3sB,GAAA7O,GAEA,IAAA+e,EAAAtU,KAAAiuB,SACA52B,EAAA2I,KAAAowB,UACA1a,EAAApB,EAAAkE,cACAlE,EAAA0J,eACA,IAAA3J,EAAApK,EAAA5S,GAAA5C,KAAAihB,EAAAngB,EAAA6O,EAAAnM,GACAqqB,EAAAhO,EAAA2J,cAOA,GANAxgB,EAAAqqB,sBACAzT,EACAiO,EACA,OAAAyO,EAAA,+BACAzc,GAEAD,IAAAoG,EAEA,OADAza,KAAA4X,QAAAvD,EAAAtY,IACA,EAGA,IAAA2c,EAAAlB,EAAAnD,EAAArU,KAAAiuB,UACA,GAAAvV,aAAApO,EAAA,CAEA,IAAAilB,GADA7W,IAAAC,WACAR,UAEA,gBAAAoX,GAIA,OAHAU,GAAA,GAAAjwB,KAAAuwB,YACA1qB,EAAAzB,GAAAsU,EACAA,EAAA8W,OAAAxvB,MAAA,GAAAoE,EAAA,KACA,EACa,gBAAAmrB,GAEA,oBAAAA,IACbvvB,KAAA4X,QAAAc,EAAA4Q,YACA,IAEAtpB,KAAA4b,WACA,GANAvH,EAAAqE,EAAA8Q,SASA3jB,EAAAzB,GAAAiQ,EAEA,IAAA2c,IAAAhxB,KAAAixB,eACA,OAAAD,GAAA/4B,IACA,OAAA84B,EACA/wB,KAAAkwB,QAAArqB,EAAAkrB,GAEA/wB,KAAAkxB,SAAArrB,IAEA,IAKAmqB,EAAA95B,UAAA6f,YAAA,WAIA,IAHA,IAAAzE,EAAAtR,KAAAwwB,OACAP,EAAAjwB,KAAAswB,OACAzqB,EAAA7F,KAAA8wB,QACAxf,EAAArZ,OAAA,GAAA+H,KAAAuwB,UAAAN,GAAA,CACA,GAAAjwB,KAAAyuB,cAAA,OACA,IAAArqB,EAAAkN,EAAA7J,MACAzH,KAAAivB,kBAAAppB,EAAAzB,QAIA4rB,EAAA95B,UAAAg6B,QAAA,SAAAiB,EAAAtrB,GAIA,IAHA,IAAA8L,EAAA9L,EAAA5N,OACAoc,EAAA,IAAAxU,MAAA8R,GACA2L,EAAA,EACAhpB,EAAA,EAAmBA,EAAAqd,IAASrd,EAC5B68B,EAAA78B,KAAA+f,EAAAiJ,KAAAzX,EAAAvR,IAEA+f,EAAApc,OAAAqlB,EACAtd,KAAAkxB,SAAA7c,IAGA2b,EAAA95B,UAAA66B,gBAAA,WACA,OAAA/wB,KAAAqwB,kBA4BA/lB,EAAApU,UAAA+1B,IAAA,SAAAvrB,EAAAtJ,GACA,OAAA60B,EAAAjsB,KAAAU,EAAAtJ,EAAA,OAGAkT,EAAA2hB,IAAA,SAAA7X,EAAA1T,EAAAtJ,EAAA84B,GACA,OAAAjE,EAAA7X,EAAA1T,EAAAtJ,EAAA84B,OAMG7Y,SAAA,KAAY+Z,IAAA,SAAArd,EAAA1f,EAAAD,GACf,aACAC,EAAAD,QACA,SAAAkW,EAAAiN,EAAAC,EAAAgD,EAAA/c,GACA,IAAAqX,EAAAf,EAAA,UACA9J,EAAA6K,EAAA7K,SAEAK,EAAA9R,OAAA,SAAAkI,GACA,sBAAAA,EACA,UAAA4J,EAAA/J,UAAA,gCAAAuU,EAAA+E,YAAAnZ,IAEA,kBACA,IAAA2T,EAAA,IAAA/J,EAAAiN,GACAlD,EAAA4M,qBACA5M,EAAA2J,eACA,IAAAzoB,EAAA0U,EAAAvJ,GAAAZ,MAAAE,KAAAD,WACAuiB,EAAAjO,EAAA4J,cAIA,OAHAxgB,EAAAqqB,sBACAvyB,EAAA+sB,EAAA,iBAAAjO,GACAA,EAAAgd,sBAAA97B,GACA8e,IAIA/J,EAAAgnB,QAAAhnB,EAAA,aAAA5J,GACA,sBAAAA,EACA,OAAA8Z,EAAA,gCAAA1F,EAAA+E,YAAAnZ,IAEA,IAGAnL,EAHA8e,EAAA,IAAA/J,EAAAiN,GAIA,GAHAlD,EAAA4M,qBACA5M,EAAA2J,eAEAje,UAAA9H,OAAA,GACAwF,EAAAorB,WAAA,iDACA,IAAAliB,EAAA5G,UAAA,GACAuO,EAAAvO,UAAA,GACAxK,EAAAuf,EAAA2H,QAAA9V,GAAAsD,EAAAvJ,GAAAZ,MAAAwO,EAAA3H,GACAsD,EAAAvJ,GAAAjM,KAAA6Z,EAAA3H,QAEApR,EAAA0U,EAAAvJ,EAAAuJ,GAEA,IAAAqY,EAAAjO,EAAA4J,cAIA,OAHAxgB,EAAAqqB,sBACAvyB,EAAA+sB,EAAA,cAAAjO,GACAA,EAAAgd,sBAAA97B,GACA8e,GAGA/J,EAAApU,UAAAm7B,sBAAA,SAAA97B,GACAA,IAAAuf,EAAA2F,SACAza,KAAAovB,gBAAA75B,EAAAwG,GAAA,GAEAiE,KAAAoY,iBAAA7iB,GAAA,OAKG8hB,SAAA,KAAYka,IAAA,SAAAxd,EAAA1f,EAAAD,GACf,aACA,IAAA0gB,EAAAf,EAAA,UACAyd,EAAA1c,EAAA0c,iBACA9D,EAAA3Z,EAAA,YACAgX,EAAA2C,EAAA3C,iBACA9L,EAAAlL,EAAA,SAOA0d,EAAA,iCACA,SAAAC,EAAAz4B,GACA,IAAAob,EACA,GARA,SAAApb,GACA,OAAAA,aAAA/B,OACA+nB,EAAAtZ,eAAA1M,KAAA/B,MAAAhB,UAMAy7B,CAAA14B,GAAA,EACAob,EAAA,IAAA0W,EAAA9xB,IACApE,KAAAoE,EAAApE,KACAwf,EAAAuF,QAAA3gB,EAAA2gB,QACAvF,EAAAwC,MAAA5d,EAAA4d,MAEA,IADA,IAAAtP,EAAA0X,EAAA1X,KAAAtO,GACA3E,EAAA,EAAuBA,EAAAiT,EAAAtP,SAAiB3D,EAAA,CACxC,IAAAuB,EAAA0R,EAAAjT,GACAm9B,EAAAxM,KAAApvB,KACAwe,EAAAxe,GAAAoD,EAAApD,IAGA,OAAAwe,EAGA,OADAS,EAAA8c,+BAAA34B,GACAA,EAoBA5E,EAAAD,QAjBA,SAAAkgB,EAAAud,GACA,gBAAA1nB,EAAA5U,GACA,UAAA+e,EAAA,CACA,GAAAnK,EAAA,CACA,IAAA2nB,EAAAJ,EAAAF,EAAArnB,IACAmK,EAAAoI,kBAAAoV,GACAxd,EAAAsD,QAAAka,QACS,GAAAD,EAEA,CACT,IAAAjyB,KAAAxE,MAAA3G,KAAAsL,UAAA,GACAuU,EAAAqa,SAAA/uB,QAHA0U,EAAAqa,SAAAp5B,GAKA+e,EAAA,UAMGyU,WAAA,GAAAxL,QAAA,GAAAlG,SAAA,KAAqC0a,IAAA,SAAAhe,EAAA1f,EAAAD,GACxC,aACAC,EAAAD,QAAA,SAAAkW,GACA,IAAAwK,EAAAf,EAAA,UACAhN,EAAAuD,EAAAoQ,OACAzQ,EAAA6K,EAAA7K,SACAwQ,EAAA3F,EAAA2F,SAEA,SAAAuX,EAAArxB,EAAAsxB,GAEA,IAAAnd,EAAA2H,QAAA9b,GAAA,OAAAuxB,EAAAz9B,KADAuL,KACAW,EAAAsxB,GACA,IAAA5d,EACApK,EAAAgoB,GAAAnyB,MAHAE,KAGAwY,eAAA,MAAA9hB,OAAAiK,IACA0T,IAAAoG,GACA1T,EAAAgQ,WAAA1C,EAAAtY,GAIA,SAAAm2B,EAAAvxB,EAAAsxB,GACA,IACAvc,EADA1V,KACAwY,cACAnE,OAAA1d,IAAAgK,EACAsJ,EAAAgoB,GAAAx9B,KAAAihB,EAAA,MACAzL,EAAAgoB,GAAAx9B,KAAAihB,EAAA,KAAA/U,GACA0T,IAAAoG,GACA1T,EAAAgQ,WAAA1C,EAAAtY,GAGA,SAAAo2B,EAAAhyB,EAAA8xB,GAEA,IAAA9xB,EAAA,CACA,IAAAiyB,EAAA,IAAAl7B,MAAAiJ,EAAA,IACAiyB,EAAApH,MAAA7qB,EACAA,EAAAiyB,EAEA,IAAA/d,EAAApK,EAAAgoB,GAAAx9B,KANAuL,KAMAwY,cAAArY,GACAkU,IAAAoG,GACA1T,EAAAgQ,WAAA1C,EAAAtY,GAIAuO,EAAApU,UAAAm8B,WAAA/nB,EAAApU,UAAAo8B,QAAA,SAAAL,EACA76B,GACA,sBAAA66B,EAAA,CACA,IAAAM,EAAAL,OACAv7B,IAAAS,GAAApC,OAAAoC,GAAA04B,SACAyC,EAAAP,GAEAhyB,KAAAgY,MACAua,EACAJ,OACAx7B,EACAqJ,KACAiyB,GAGA,OAAAjyB,SAIGqX,SAAA,KAAYmb,IAAA,SAAAze,EAAA1f,EAAAD,GACf,aACAC,EAAAD,QAAA,WACA,IAAAq+B,EAAA,WACA,WAAAlyB,EAAA,wEAEAmyB,EAAA,WACA,WAAApoB,EAAAqoB,kBAAA3yB,KAAA2Y,YAEA6B,EAAA,SAAA6N,GACA,OAAA/d,EAAAC,OAAA,IAAAhK,EAAA8nB,KAEA,SAAAoF,KACA,IAGA3O,EAHA8T,KACA9d,EAAAf,EAAA,UAIA+K,EADAhK,EAAA4B,OACA,WACA,IAAArC,EAAAnI,EAAA+D,OAEA,YADAtZ,IAAA0d,MAAA,MACAA,GAGA,WACA,aAGAS,EAAA8P,kBAAAta,EAAA,aAAAwU,GAEA,IAAAG,EAAAlL,EAAA,SACAgB,EAAAhB,EAAA,WACAhN,EAAA,IAAAgO,EACAkK,EAAAhqB,eAAAqV,EAAA,UAAuC/U,MAAAwR,IACvC,IAAA2mB,EAAA3Z,EAAA,YACAxT,EAAA+J,EAAA/J,UAAAmtB,EAAAntB,UACA+J,EAAAugB,WAAA6C,EAAA7C,WACA,IAAAH,EAAApgB,EAAAogB,kBAAAgD,EAAAhD,kBACApgB,EAAAqgB,aAAA+C,EAAA/C,aACArgB,EAAAygB,iBAAA2C,EAAA3C,iBACAzgB,EAAA6gB,eAAAuC,EAAA3C,iBACAzgB,EAAAsgB,eAAA8C,EAAA9C,eACA,IAAArT,EAAA,aACAsb,KACA9V,KACAvF,EAAAzD,EAAA,cAAAA,CAAAzJ,EAAAiN,GACAgD,EACAxG,EAAA,kBAAAA,CAAAzJ,EAAAiN,EACAC,EAAAgD,EAAAiT,GACA/lB,EAAAqM,EAAA,YAAAA,CAAAzJ,GAEAwoB,EAAAprB,EAAA9R,OACA6H,EAAAsW,EAAA,kBAAAA,CAAAzJ,EAAA5C,GAEA2kB,GADA5uB,EAAAmgB,cAEA7J,EAAA,YAAAA,CAAAzJ,EAAAkN,EAAAuF,IACAqP,EAAArY,EAAA,iBAAAA,CAAAgJ,GACAgW,EAAAhf,EAAA,cACA0G,EAAA3F,EAAA2F,SACAxQ,EAAA6K,EAAA7K,SAWA,SAAAK,EAAA8Y,GACAA,IAAA7L,GAXA,SAAArQ,EAAAkc,GACA,SAAAlc,KAAAhB,cAAAoE,EACA,UAAA/J,EAAA,wFAEA,sBAAA6iB,EACA,UAAA7iB,EAAA,gCAAAuU,EAAA+E,YAAAuJ,IAOA4P,CAAAhzB,KAAAojB,GAEApjB,KAAAmY,UAAA,EACAnY,KAAAizB,0BAAAt8B,EACAqJ,KAAAkzB,wBAAAv8B,EACAqJ,KAAAmzB,eAAAx8B,EACAqJ,KAAAozB,gBAAAz8B,EACAqJ,KAAAqzB,qBAAAjQ,GACApjB,KAAA+d,kBACA/d,KAAAmkB,WAAA,iBAAAnkB,MAsnBA,SAAAszB,EAAAC,GAA0BvzB,KAAAsU,QAAA8D,iBAAAmb,GAC1B,SAAAC,EAAAD,GAAyBvzB,KAAAsU,QAAA8a,gBAAAmE,GAAA,GA4CzB,SAAAE,EAAAl+B,GACA,IAAAa,EAAA,IAAAkU,EAAAiN,GACAnhB,EAAA68B,qBAAA19B,EACAa,EAAA88B,mBAAA39B,EACAa,EAAA+8B,UAAA59B,EACAa,EAAAg9B,WAAA79B,EAaA,OAlrBA+U,EAAApU,UAAAU,SAAA,WACA,0BAGA0T,EAAApU,UAAAsS,OAAA8B,EAAApU,UAAA,eAAAwK,GACA,IAAAiR,EAAA5R,UAAA9H,OACA,GAAA0Z,EAAA,GACA,IACArd,EADAg5B,EAAA,IAAAztB,MAAA8R,EAAA,GACA2L,EAAA,EACA,IAAAhpB,EAAA,EAAmBA,EAAAqd,EAAA,IAAard,EAAA,CAChC,IAAAkX,EAAAzL,UAAAzL,GACA,IAAAwgB,EAAAtU,SAAAgL,GAGA,OAAAgP,EAAA,0DACA1F,EAAA+E,YAAArO,IAHA8hB,EAAAhQ,KAAA9R,EAQA,OAFA8hB,EAAAr1B,OAAAqlB,EACA5c,EAAAX,UAAAzL,GACA0L,KAAAqH,UAAA1Q,EAAAy1B,EAAAkB,EAAA5sB,EAAAV,OAEA,OAAAA,KAAAqH,UAAA1Q,EAAA+J,IAGA4J,EAAApU,UAAAw9B,QAAA,WACA,OAAA1zB,KAAAgY,MAAA0a,EACAA,OAAA/7B,EAAAqJ,UAAArJ,IAGA2T,EAAApU,UAAAmR,KAAA,SAAAssB,EAAAC,GACA,GAAAn2B,EAAAiiB,YAAA3f,UAAA9H,OAAA,GACA,mBAAA07B,GACA,mBAAAC,EAAA,CACA,IAAAvL,EAAA,kDACAvT,EAAA+E,YAAA8Z,GACA5zB,UAAA9H,OAAA,IACAowB,GAAA,KAAAvT,EAAA+E,YAAA+Z,IAEA5zB,KAAA6a,MAAAwN,GAEA,OAAAroB,KAAAgY,MAAA2b,EAAAC,OAAAj9B,kBAGA2T,EAAApU,UAAAoR,KAAA,SAAAqsB,EAAAC,GACA,IAAAtf,EACAtU,KAAAgY,MAAA2b,EAAAC,OAAAj9B,iBACA2d,EAAAuf,eAGAvpB,EAAApU,UAAA45B,OAAA,SAAApvB,GACA,yBAAAA,EACA8Z,EAAA,gCAAA1F,EAAA+E,YAAAnZ,IAEAV,KAAA6pB,MAAA7R,MAAAtX,OAAA/J,SAAAk8B,OAAAl8B,IAGA2T,EAAApU,UAAA49B,OAAA,WACA,IAAAzf,GACAgQ,aAAA,EACA0I,YAAA,EACAgH,sBAAAp9B,EACAq9B,qBAAAr9B,GASA,OAPAqJ,KAAAqkB,eACAhQ,EAAA0f,iBAAA/zB,KAAAzK,QACA8e,EAAAgQ,aAAA,GACKrkB,KAAA+sB,eACL1Y,EAAA2f,gBAAAh0B,KAAAG,SACAkU,EAAA0Y,YAAA,GAEA1Y,GAGA/J,EAAApU,UAAA2zB,IAAA,WAIA,OAHA9pB,UAAA9H,OAAA,GACA+H,KAAA6a,MAAA,wDAEA,IAAAN,EAAAva,MAAAsU,WAGAhK,EAAApU,UAAA+G,MAAA,SAAAyD,GACA,OAAAV,KAAAwI,OAAAsM,EAAAmf,wBAAAvzB,IAGA4J,EAAA4pB,kBAAA7/B,EAAAD,QAEAkW,EAAA/I,GAAA,SAAAZ,GACA,OAAAA,aAAA2J,GAGAA,EAAA6pB,SAAA7pB,EAAA8pB,aAAA,SAAA1zB,GACA,IAAA2T,EAAA,IAAA/J,EAAAiN,GACAlD,EAAA4M,qBACA,IAAA4Q,EAAA9xB,UAAA9H,OAAA,KAAAjD,OAAA+K,UAAA,IAAA8xB,UAEAh4B,EAAAoQ,EAAAvJ,EAAAuJ,CAAA8oB,EAAA1e,EAAAwd,IAKA,OAJAh4B,IAAA4gB,GACApG,EAAA+a,gBAAAv1B,EAAAkC,GAAA,GAEAsY,EAAAggB,iBAAAhgB,EAAAigB,sBACAjgB,GAGA/J,EAAAuf,IAAA,SAAAzV,GACA,WAAAmG,EAAAnG,GAAAE,WAGAhK,EAAAiqB,KAAA,SAAAt7B,GACA,IAAAob,EAAAmD,EAAAve,GAOA,OANAob,aAAA/J,KACA+J,EAAA,IAAA/J,EAAAiN,IACA0J,qBACA5M,EAAAmgB,gBACAngB,EAAA6e,mBAAAj6B,GAEAob,GAGA/J,EAAAnH,QAAAmH,EAAAmqB,UAAAnqB,EAAAiqB,KAEAjqB,EAAAC,OAAAD,EAAAoqB,SAAA,SAAAv0B,GACA,IAAAkU,EAAA,IAAA/J,EAAAiN,GAGA,OAFAlD,EAAA4M,qBACA5M,EAAA+a,gBAAAjvB,GAAA,GACAkU,GAGA/J,EAAA6L,aAAA,SAAAzV,GACA,sBAAAA,EACA,UAAAH,EAAA,gCAAAuU,EAAA+E,YAAAnZ,IAEA,OAAAqG,EAAAoP,aAAAzV,IAGA4J,EAAApU,UAAA8hB,MAAA,SACA2b,EACAC,EACAjc,EAAAjC,EACAif,GAEA,IAAAC,OAAAj+B,IAAAg+B,EACArgB,EAAAsgB,EAAAD,EAAA,IAAArqB,EAAAiN,GACAhI,EAAAvP,KAAA2Y,UACA4W,EAAAhgB,EAAA4I,UAEAyc,IACAtgB,EAAAgE,eAAAtY,KAAA,GACAsU,EAAA2M,0BACAtqB,IAAA+e,GACA,YAAA1V,KAAAmY,aAEAzC,EADA,aAAA6Z,GACAvvB,KAAAwY,cAEAjJ,IAAAvP,UAAArJ,EAAAqJ,KAAA8Y,UAGA9Y,KAAAmkB,WAAA,iBAAAnkB,KAAAsU,IAGA,IAAArE,EAAA6O,IACA,gBAAAyQ,GAAA,CACA,IAAAnL,EAAA7uB,EAAAs/B,EAAAtlB,EAAAulB,kBACA,aAAAvF,IACAh6B,EAAAga,EAAA2jB,mBACA9O,EAAAuP,GACS,aAAApE,IACTh6B,EAAAga,EAAA0jB,qBACA7O,EAAAwP,EACArkB,EAAAkR,+BAEAoU,EAAAtlB,EAAAwlB,uCACAx/B,EAAA,IAAAm1B,EAAA,8BACAnb,EAAAmN,kBAAAnnB,GACA6uB,EAAAwP,GAGA7sB,EAAAyD,OAAAqqB,EAAAtlB,GACA6U,QAAA,OAAAnU,EAAAmU,EACA,mBAAAA,GACAtP,EAAA8L,WAAA3Q,EAAAmU,GACA9P,UACAoB,WACAngB,eAGAga,EAAAylB,cAAArB,EAAAC,EAAAtf,EAAAoB,EAAAzF,GAGA,OAAAqE,GAGAhK,EAAApU,UAAA6lB,QAAA,WACA,aAAA/b,KAAAmY,WAGA7N,EAAApU,UAAAm+B,cAAA,WACA,qBAAAr0B,KAAAmY,YAGA7N,EAAApU,UAAA+kB,aAAA,WACA,2BAAAjb,KAAAmY,YAGA7N,EAAApU,UAAA++B,WAAA,SAAAtjB,GACA3R,KAAAmY,WAAA,MAAAnY,KAAAmY,UACA,MAAAxG,GAGArH,EAAApU,UAAAs+B,cAAA,WACAx0B,KAAAmY,UAAA,SAAAnY,KAAAmY,UACAnY,KAAAmkB,WAAA,mBAAAnkB,OAGAsK,EAAApU,UAAAg/B,aAAA,WACAl1B,KAAAmY,UAAA,SAAAnY,KAAAmY,UACAnY,KAAAmkB,WAAA,kBAAAnkB,OAGAsK,EAAApU,UAAAi/B,cAAA,WACAn1B,KAAAmY,UAAA,SAAAnY,KAAAmY,UACAnY,KAAAmkB,WAAA,kBAAAnkB,OAGAsK,EAAApU,UAAA29B,YAAA,WACA7zB,KAAAmY,UAAA,QAAAnY,KAAAmY,WAGA7N,EAAApU,UAAAk/B,SAAA,WACA,eAAAp1B,KAAAmY,WAAA,GAGA7N,EAAApU,UAAAm/B,gBAAA,WACAr1B,KAAAmY,WAAA,MAAAnY,KAAAmY,WAGA7N,EAAApU,UAAA2lB,cAAA,WACA7b,KAAAmY,UAAA,MAAAnY,KAAAmY,UACAnY,KAAAmkB,WAAA,mBAAAnkB,OAGAsK,EAAApU,UAAAolB,oBAAA,WACAtb,KAAAmY,UAAA,QAAAnY,KAAAmY,WAGA7N,EAAApU,UAAAo+B,oBAAA,WACAvtB,EAAAqP,uBACApW,KAAAmY,UAAA,UAAAnY,KAAAmY,YAGA7N,EAAApU,UAAAo/B,YAAA,SAAAlxB,GACA,IAAAiQ,EAAA,IAAAjQ,EAAApE,KAAAozB,WAAApzB,KACA,EAAAoE,EAAA,KACA,GAAAiQ,IAAAue,EAEK,YAAAj8B,IAAA0d,GAAArU,KAAA+Y,WACL/Y,KAAAwY,cAEAnE,GAGA/J,EAAApU,UAAAq/B,WAAA,SAAAnxB,GACA,OAAApE,KACA,EAAAoE,EAAA,MAGAkG,EAAApU,UAAAs/B,sBAAA,SAAApxB,GACA,OAAApE,KACA,EAAAoE,EAAA,MAGAkG,EAAApU,UAAAu/B,oBAAA,SAAArxB,GACA,OAAApE,KACA,EAAAoE,EAAA,MAGAkG,EAAApU,UAAAsiB,YAAA,aAEAlO,EAAApU,UAAAw/B,kBAAA,SAAAC,GACAA,EAAAxd,UAAA,IACAyd,EAAAD,EAAA1C,qBACA1oB,EAAAorB,EAAAzC,mBACA5e,EAAAqhB,EAAAxC,UACAzd,EAAAigB,EAAAL,YAAA,QACA3+B,IAAA+e,MAAAkd,GACA5yB,KAAAg1B,cAAAY,EAAArrB,EAAA+J,EAAAoB,EAAA,OAGApL,EAAApU,UAAA2/B,mBAAA,SAAAF,EAAAvxB,GACA,IAAAwxB,EAAAD,EAAAH,sBAAApxB,GACAmG,EAAAorB,EAAAF,oBAAArxB,GACAkQ,EAAAqhB,EAAAJ,WAAAnxB,GACAsR,EAAAigB,EAAAL,YAAAlxB,QACAzN,IAAA+e,MAAAkd,GACA5yB,KAAAg1B,cAAAY,EAAArrB,EAAA+J,EAAAoB,EAAA,OAGApL,EAAApU,UAAA8+B,cAAA,SACAY,EACArrB,EACA+J,EACAoB,EACAzF,GAEA,IAAA7L,EAAApE,KAAA+b,UAOA,GALA3X,GAAA,QACAA,EAAA,EACApE,KAAAi1B,WAAA,IAGA,IAAA7wB,EACApE,KAAAmzB,UAAA7e,EACAtU,KAAAozB,WAAA1d,EACA,mBAAAkgB,IACA51B,KAAAizB,qBACA,OAAAhjB,EAAA2lB,EAAA9gB,EAAA8L,WAAA3Q,EAAA2lB,IAEA,mBAAArrB,IACAvK,KAAAkzB,mBACA,OAAAjjB,EAAA1F,EAAAuK,EAAA8L,WAAA3Q,EAAA1F,QAEK,CACL,IAAAurB,EAAA,EAAA1xB,EAAA,EACApE,KAAA81B,EAAA,GAAAxhB,EACAtU,KAAA81B,EAAA,GAAApgB,EACA,mBAAAkgB,IACA51B,KAAA81B,EAAA,GACA,OAAA7lB,EAAA2lB,EAAA9gB,EAAA8L,WAAA3Q,EAAA2lB,IAEA,mBAAArrB,IACAvK,KAAA81B,EAAA,GACA,OAAA7lB,EAAA1F,EAAAuK,EAAA8L,WAAA3Q,EAAA1F,IAIA,OADAvK,KAAAi1B,WAAA7wB,EAAA,GACAA,GAGAkG,EAAApU,UAAAs5B,OAAA,SAAAuG,EAAApvB,GACA3G,KAAAg1B,mBAAAr+B,SAAAgQ,EAAAovB,EAAA,OAGAzrB,EAAApU,UAAAkiB,iBAAA,SAAA7iB,EAAAygC,GACA,iBAAAh2B,KAAAmY,WAAA,CACA,GAAA5iB,IAAAyK,KACA,OAAAA,KAAAovB,gBAAAqD,KAAA,GACA,IAAA/Z,EAAAlB,EAAAjiB,EAAAyK,MACA,KAAA0Y,aAAApO,GAAA,OAAAtK,KAAA2uB,SAAAp5B,GAEAygC,GAAAh2B,KAAAsY,eAAAI,EAAA,GAEA,IAAApE,EAAAoE,EAAAC,UAEA,GAAArE,IAAAtU,KAAA,CAKA,IAAAuvB,EAAAjb,EAAA6D,UACA,gBAAAoX,GAAA,CACA,IAAA5d,EAAA3R,KAAA+b,UACApK,EAAA,GAAA2C,EAAAohB,kBAAA11B,MACA,QAAA1L,EAAA,EAAuBA,EAAAqd,IAASrd,EAChCggB,EAAAuhB,mBAAA71B,KAAA1L,GAEA0L,KAAAm1B,gBACAn1B,KAAAi1B,WAAA,GACAj1B,KAAAi2B,aAAA3hB,QACK,gBAAAib,GACLvvB,KAAA2uB,SAAAra,EAAAkV,eACK,gBAAA+F,GACLvvB,KAAA4X,QAAAtD,EAAAgV,eACK,CACL,IAAAnpB,EAAA,IAAAuqB,EAAA,8BACApW,EAAAoI,kBAAAvc,GACAH,KAAA4X,QAAAzX,SArBAH,KAAA4X,QAAA6a,OAyBAnoB,EAAApU,UAAAk5B,gBACA,SAAAjvB,EAAA+1B,EAAAC,GACA,IAAAv3B,EAAAkW,EAAAshB,kBAAAj2B,GACAk2B,EAAAz3B,IAAAuB,EACA,IAAAk2B,IAAAF,GAAA14B,EAAAiiB,WAAA,CACA,IAAA9F,EAAA,4CACA9E,EAAA+E,YAAA1Z,GACAH,KAAA6a,MAAAjB,GAAA,GAEA5Z,KAAA0c,kBAAA9d,IAAAs3B,GAAAG,GACAr2B,KAAA4X,QAAAzX,IAGAmK,EAAApU,UAAAm9B,qBAAA,SAAAjQ,GACA,GAAAA,IAAA7L,EAAA,CACA,IAAAjD,EAAAtU,KACAA,KAAAihB,qBACAjhB,KAAAge,eACA,IAAAkY,GAAA,EACA9gC,EAAA4K,KAAAikB,SAAAb,EAAA,SAAA7tB,GACA+e,EAAA8D,iBAAA7iB,IACK,SAAA4K,GACLmU,EAAA8a,gBAAAjvB,EAAA+1B,KAEAA,GAAA,EACAl2B,KAAAie,mBAEAtnB,IAAAvB,GACAkf,EAAA8a,gBAAAh6B,GAAA,KAIAkV,EAAApU,UAAAogC,0BAAA,SACAlS,EAAA1O,EAAAngB,EAAA+e,GAEA,IAAAib,EAAAjb,EAAA6D,UACA,aAAAoX,GAAA,CAEA,IAAAgH,EADAjiB,EAAA0J,eAEAtI,IAAAmd,EACAt9B,GAAA,iBAAAA,EAAA0C,OAKAs+B,EAAAtsB,EAAAma,GAAAtkB,MAAAE,KAAAwY,cAAAjjB,IAJAghC,EAAA9b,GACA1e,EAAA,IAAAwE,EAAA,iCACAuU,EAAA+E,YAAAtkB,IAKAghC,EAAAtsB,EAAAma,GAAA3vB,KAAAihB,EAAAngB,GAEA,IAAA+sB,EAAAhO,EAAA2J,cAEA,WADAsR,EAAAjb,EAAA6D,cAGAoe,IAAAxZ,EACAzI,EAAAsD,QAAAriB,GACKghC,IAAA9b,EACLnG,EAAA8a,gBAAAmH,EAAAx6B,GAAA,IAEA0B,EAAAqqB,sBAAAyO,EAAAjU,EAAA,GAAAhO,EAAAtU,MACAsU,EAAA8D,iBAAAme,OAIAjsB,EAAApU,UAAAyiB,QAAA,WAEA,IADA,IAAAtE,EAAArU,KACAqU,EAAA4G,gBAAA5G,IAAA6G,YACA,OAAA7G,GAGA/J,EAAApU,UAAAglB,UAAA,WACA,OAAAlb,KAAAkzB,oBAGA5oB,EAAApU,UAAA+/B,aAAA,SAAA3hB,GACAtU,KAAAkzB,mBAAA5e,GAGAhK,EAAApU,UAAAsgC,eAAA,SAAAliB,EAAA8P,EAAA1O,EAAAngB,GACA,IAAAkhC,EAAAniB,aAAAhK,EACAilB,EAAAvvB,KAAAmY,UACAue,EAAA,cAAAnH,GACA,UAAAA,IACAkH,GAAAniB,EAAAuI,0BAEAnH,aAAA2W,GACA3W,EAAAoX,oBACApX,EAAA6W,cAAAjY,EACArK,EAAAma,GAAA3vB,KAAAihB,EAAAngB,KAAAklB,GACAnG,EAAAsD,QAAA6C,EAAA1e,IAESqoB,IAAAsO,EACTpe,EAAAqa,SAAA+D,EAAAj+B,KAAAihB,IACSA,aAAA+X,EACT/X,EAAAkZ,kBAAAta,GACSmiB,GAAAniB,aAAAiG,EACTjG,EAAAsH,UAEAlG,EAAAiF,UAEK,mBAAAyJ,EACLqS,GAGAC,GAAApiB,EAAAggB,sBACAt0B,KAAAs2B,0BAAAlS,EAAA1O,EAAAngB,EAAA+e,IAHA8P,EAAA3vB,KAAAihB,EAAAngB,EAAA+e,GAKKoB,aAAA+X,EACL/X,EAAA+Y,gBACA,aAAAc,GACA7Z,EAAAuZ,kBAAA15B,EAAA+e,GAEAoB,EAAAwZ,iBAAA35B,EAAA+e,IAGKmiB,IACLC,GAAApiB,EAAAggB,sBACA,aAAA/E,GACAjb,EAAAqa,SAAAp5B,GAEA+e,EAAAsD,QAAAriB,KAKA+U,EAAApU,UAAA6+B,uCAAA,SAAAzmB,GACA,IAAA8V,EAAA9V,EAAA8V,QACA9P,EAAAhG,EAAAgG,QACAoB,EAAApH,EAAAoH,SACAngB,EAAA+Y,EAAA/Y,MACA,mBAAA6uB,EACA9P,aAAAhK,EAGAtK,KAAAs2B,0BAAAlS,EAAA1O,EAAAngB,EAAA+e,GAFA8P,EAAA3vB,KAAAihB,EAAAngB,EAAA+e,GAIKA,aAAAhK,GACLgK,EAAAsD,QAAAriB,IAIA+U,EAAApU,UAAA4+B,kBAAA,SAAAxmB,GACAtO,KAAAw2B,eAAAloB,EAAAgG,QAAAhG,EAAA8V,QAAA9V,EAAAoH,SAAApH,EAAA/Y,QAGA+U,EAAApU,UAAAygC,gBAAA,SAAAvS,EAAA7uB,EAAAg6B,GACA,IAAAjb,EAAAtU,KAAAmzB,UACAzd,EAAA1V,KAAAs1B,YAAA,GACAt1B,KAAAmzB,eAAAx8B,EACAqJ,KAAAozB,gBAAAz8B,EACAqJ,KAAAw2B,eAAAliB,EAAA8P,EAAA1O,EAAAngB,IAGA+U,EAAApU,UAAA0gC,0BAAA,SAAAxyB,GACA,IAAA0xB,EAAA,EAAA1xB,EAAA,EACApE,KAAA81B,EAAA,GACA91B,KAAA81B,EAAA,GACA91B,KAAA81B,EAAA,GACA91B,KAAA81B,EAAA,QAAAn/B,GAGA2T,EAAApU,UAAAy4B,SAAA,SAAAp5B,GACA,IAAAg6B,EAAAvvB,KAAAmY,UACA,gBAAAoX,KAAA,KACA,GAAAh6B,IAAAyK,KAAA,CACA,IAAAmK,EAAAsoB,IAEA,OADAzyB,KAAA0c,kBAAAvS,GACAnK,KAAA4X,QAAAzN,GAEAnK,KAAAw0B,gBACAx0B,KAAAkzB,mBAAA39B,GAEA,MAAAg6B,GAAA,IACA,cAAAA,GACAvvB,KAAAkW,kBAEAnP,EAAAkQ,eAAAjX,MAEAA,KAAAohB,uBAIA9W,EAAApU,UAAA0hB,QAAA,SAAAzX,GACA,IAAAovB,EAAAvvB,KAAAmY,UACA,gBAAAoX,KAAA,KAIA,GAHAvvB,KAAAk1B,eACAl1B,KAAAizB,qBAAA9yB,EAEAH,KAAAo1B,WACA,OAAAruB,EAAA0P,WAAAtW,EAAA2U,EAAA4B,SAGA,MAAA6Y,GAAA,EACAxoB,EAAAkQ,eAAAjX,MAEAA,KAAA6f,oCAIAvV,EAAApU,UAAA2gC,iBAAA,SAAAllB,EAAApc,GACA,QAAAjB,EAAA,EAAmBA,EAAAqd,EAASrd,IAAA,CAC5B,IAAA8vB,EAAApkB,KAAAw1B,sBAAAlhC,GACAggB,EAAAtU,KAAAu1B,WAAAjhC,GACAohB,EAAA1V,KAAAs1B,YAAAhhC,GACA0L,KAAA42B,0BAAAtiC,GACA0L,KAAAw2B,eAAAliB,EAAA8P,EAAA1O,EAAAngB,KAIA+U,EAAApU,UAAA4gC,gBAAA,SAAAnlB,EAAAxR,GACA,QAAA7L,EAAA,EAAmBA,EAAAqd,EAASrd,IAAA,CAC5B,IAAA8vB,EAAApkB,KAAAy1B,oBAAAnhC,GACAggB,EAAAtU,KAAAu1B,WAAAjhC,GACAohB,EAAA1V,KAAAs1B,YAAAhhC,GACA0L,KAAA42B,0BAAAtiC,GACA0L,KAAAw2B,eAAAliB,EAAA8P,EAAA1O,EAAAvV,KAIAmK,EAAApU,UAAAggB,gBAAA,WACA,IAAAqZ,EAAAvvB,KAAAmY,UACAxG,EAAA,MAAA4d,EAEA,GAAA5d,EAAA,GACA,gBAAA4d,GAAA,CACA,IAAApvB,EAAAH,KAAAizB,qBACAjzB,KAAA22B,gBAAA32B,KAAAkzB,mBAAA/yB,EAAAovB,GACAvvB,KAAA82B,gBAAAnlB,EAAAxR,OACS,CACT,IAAA5K,EAAAyK,KAAAkzB,mBACAlzB,KAAA22B,gBAAA32B,KAAAizB,qBAAA19B,EAAAg6B,GACAvvB,KAAA62B,iBAAAllB,EAAApc,GAEAyK,KAAAi1B,WAAA,GAEAj1B,KAAAgkB,0BAGA1Z,EAAApU,UAAAmqB,cAAA,WACA,IAAAkP,EAAAvvB,KAAAmY,UACA,oBAAAoX,GACAvvB,KAAAkzB,mBACK,aAAA3D,GACLvvB,KAAAizB,0BADK,GAQL3oB,EAAAysB,MAAAzsB,EAAA0sB,QAAA,WACAv5B,EAAAorB,WAAA,+BACA,IAAAvU,EAAA,IAAAhK,EAAAiN,GACA,OACAjD,UACAnR,QAAAmwB,EACA/oB,OAAAipB,IAIA1e,EAAA8P,kBAAAta,EACA,2BACAmoB,GAEA1e,EAAA,WAAAA,CAAAzJ,EAAAiN,EAAAC,EAAAgD,EACA/c,GACAsW,EAAA,SAAAA,CAAAzJ,EAAAiN,EAAAC,EAAA/Z,GACAsW,EAAA,WAAAA,CAAAzJ,EAAAiQ,EAAAC,EAAA/c,GACAsW,EAAA,mBAAAA,CAAAzJ,GACAyJ,EAAA,2BAAAA,CAAAzJ,GACAyJ,EAAA,SAAAA,CACAzJ,EAAAiQ,EAAA/C,EAAAD,EAAAxQ,EAAA+X,GACAxU,YACAA,EAAAlJ,QAAA,QACA2S,EAAA,WAAAA,CAAAzJ,EAAAiQ,EAAAC,EAAAhD,EAAAD,EAAA9Z,GACAsW,EAAA,gBAAAA,CAAAzJ,GACAyJ,EAAA,aAAAA,CAAAzJ,EAAAkQ,EAAAhD,EAAAsb,EAAAvb,EAAA9Z,GACAsW,EAAA,cAAAA,CAAAzJ,EAAAiN,EAAA9Z,GACAsW,EAAA,kBAAAA,CAAAzJ,EAAAkQ,EAAAjD,EAAAC,EAAAiW,EAAAhwB,GACAsW,EAAA,eAAAA,CAAAzJ,GACAyJ,EAAA,iBAAAA,CAAAzJ,EAAAiN,GACAxD,EAAA,aAAAA,CAAAzJ,EAAAiQ,EAAA/C,EAAAgD,GACAzG,EAAA,YAAAA,CAAAzJ,EAAAiN,EAAAC,EAAAgD,GACAzG,EAAA,cAAAA,CAAAzJ,EAAAiQ,EAAAC,EAAAhD,EAAAD,EAAA9Z,GACAsW,EAAA,cAAAA,CAAAzJ,EAAAiQ,EAAA9c,GACAsW,EAAA,YAAAA,CAAAzJ,EAAAiQ,EAAAC,GACAzG,EAAA,cAAAA,CAAAzJ,EAAAiN,GACAxD,EAAA,YAAAA,CAAAzJ,EAAAiN,GACAxD,EAAA,WAAAA,CAAAzJ,GAEAwK,EAAAmiB,iBAAA3sB,GACAwK,EAAAmiB,iBAAA3sB,EAAApU,WAUAu9B,GAAe5xB,EAAA,IACf4xB,GAAehkB,EAAA,IACfgkB,GAAe9+B,EAAA,IACf8+B,EAAA,GACAA,EAAA,cACAA,OAAA98B,GACA88B,GAAA,GACAA,EAAA,IAAAnpB,EAAAiN,IACA9Z,EAAA6qB,UAAAvT,EAAAJ,eAAAG,EAAAyT,eACAje,KAIG4sB,WAAA,EAAAC,UAAA,EAAAC,SAAA,EAAAC,gBAAA,EAAAC,WAAA,EAAA/J,iBAAA,EAAAgK,YAAA,EAAAC,kBAAA,EAAAC,mBAAA,GAAAC,YAAA,GAAA3O,WAAA,GAAAxL,QAAA,GAAAoa,cAAA,GAAAC,YAAA,GAAAC,kBAAA,GAAAC,SAAA,GAAAC,WAAA,GAAAC,WAAA,GAAAC,aAAA,GAAAC,eAAA,GAAAC,kBAAA,GAAAC,iBAAA,GAAAC,aAAA,GAAAC,YAAA,GAAAC,cAAA,GAAAC,cAAA,GAAAC,YAAA,GAAAC,2BAAA,GAAAC,cAAA,GAAAC,cAAA,GAAAC,aAAA,GAAAxhB,SAAA,KAA0gByhB,IAAA,SAAA/kB,EAAA1f,EAAAD,GAC7gB,aACAC,EAAAD,QAAA,SAAAkW,EAAAiN,EAAAC,EACAgD,EAAAiT,GACA,IAAA3Y,EAAAf,EAAA,UAWA,SAAAwG,EAAA1U,GACA,IAAAyO,EAAAtU,KAAAiuB,SAAA,IAAA3jB,EAAAiN,GACA1R,aAAAyE,GACAgK,EAAAgE,eAAAzS,EAAA,GAEAyO,EAAAuE,aAAA7Y,MACAA,KAAA8wB,QAAAjrB,EACA7F,KAAA+b,QAAA,EACA/b,KAAAixB,eAAA,EACAjxB,KAAA6wB,WAAAl6B,GAAA,GAgKA,OAnLAme,EAAA2H,QAqBA3H,EAAAyR,SAAAhM,EAAAkT,GAEAlT,EAAArkB,UAAA+B,OAAA,WACA,OAAA+H,KAAA+b,SAGAxB,EAAArkB,UAAAoe,QAAA,WACA,OAAAtU,KAAAiuB,UAGA1T,EAAArkB,UAAA26B,MAAA,SAAApc,EAAAkD,EAAAohB,GACA,IAAAlzB,EAAA2R,EAAAxX,KAAA8wB,QAAA9wB,KAAAiuB,UACA,GAAApoB,aAAAyE,EAAA,CAEA,IAAAilB,GADA1pB,IAAA8S,WACAR,UAIA,GAFAnY,KAAA8wB,QAAAjrB,EAEA,aAAA0pB,GAEA,OADAvvB,KAAAiuB,SAAAqG,sBACAzuB,EAAAmS,MACAvD,EACAzU,KAAA4X,aACAjhB,EACAqJ,KACA+4B,GAES,gBAAAxJ,GAEA,oBAAAA,GACTvvB,KAAA4X,QAAA/R,EAAAyjB,WAEAtpB,KAAA4b,UAJA/V,IAAA2jB,SAQA,WADA3jB,EAAAiP,EAAAkkB,QAAAnzB,IAQA,IAAAA,EAAA5N,OASA+H,KAAAi5B,SAAApzB,IARA,IAAAkzB,EACA/4B,KAAAk5B,qBAGAl5B,KAAAkxB,SAnEA,SAAAvwB,GACA,OAAAA,GACA,gBACA,gBACA,kBAAAw4B,KA+DAC,CAAAL,QAZA,CACA,IAAA5uB,EAAAqQ,EACA,oDAAA1F,EAAA+E,YAAAhU,IAAA1F,SACAH,KAAAiuB,SAAAmB,gBAAAjlB,GAAA,KAgBAoQ,EAAArkB,UAAA+iC,SAAA,SAAApzB,GACA,IAAA8L,EAAA3R,KAAAq5B,gBAAAxzB,EAAA5N,QACA+H,KAAA+b,QAAApK,EACA3R,KAAA8wB,QAAA9wB,KAAAs5B,mBAAA,IAAAz5B,MAAA8R,GAAA3R,KAAA8wB,QAIA,IAHA,IAAAj3B,EAAAmG,KAAAiuB,SACAsL,GAAA,EACAhK,EAAA,KACAj7B,EAAA,EAAmBA,EAAAqd,IAASrd,EAAA,CAC5B,IAAAokB,EAAAlB,EAAA3R,EAAAvR,GAAAuF,GAEA6e,aAAApO,GACAoO,IAAAC,UACA4W,EAAA7W,EAAAP,WAEAoX,EAAA,KAGAgK,EACA,OAAAhK,GACA7W,EAAAkH,8BAES,OAAA2P,EACT,aAAAA,IACA7W,EAAA8W,OAAAxvB,KAAA1L,GACA0L,KAAA8wB,QAAAx8B,GAAAokB,GAEA6gB,EADa,aAAAhK,GACbvvB,KAAAivB,kBAAAvW,EAAA8Q,SAAAl1B,GACa,aAAAi7B,GACbvvB,KAAAkvB,iBAAAxW,EAAA4Q,UAAAh1B,GAEA0L,KAAA4uB,kBAAAt6B,GAGAilC,EAAAv5B,KAAAivB,kBAAAvW,EAAApkB,GAGAilC,GAAA1/B,EAAAy6B,uBAGA/Z,EAAArkB,UAAAu4B,YAAA,WACA,cAAAzuB,KAAA8wB,SAGAvW,EAAArkB,UAAAg7B,SAAA,SAAA37B,GACAyK,KAAA8wB,QAAA,KACA9wB,KAAAiuB,SAAAU,SAAAp5B,IAGAglB,EAAArkB,UAAA0lB,QAAA,YACA5b,KAAAyuB,eAAAzuB,KAAAiuB,SAAAlT,mBACA/a,KAAA8wB,QAAA,KACA9wB,KAAAiuB,SAAArS,YAGArB,EAAArkB,UAAA0hB,QAAA,SAAAzX,GACAH,KAAA8wB,QAAA,KACA9wB,KAAAiuB,SAAAmB,gBAAAjvB,GAAA,IAGAoa,EAAArkB,UAAA+4B,kBAAA,SAAA15B,EAAA6O,GACApE,KAAA8wB,QAAA1sB,GAAA7O,EACA,IAAAy7B,IAAAhxB,KAAAixB,eACA,OAAAD,GAAAhxB,KAAA+b,UACA/b,KAAAkxB,SAAAlxB,KAAA8wB,UACA,IAKAvW,EAAArkB,UAAA04B,kBAAA,WAEA,OADA5uB,KAAA4b,WACA,GAGArB,EAAArkB,UAAAg5B,iBAAA,SAAA/uB,GAGA,OAFAH,KAAAixB,iBACAjxB,KAAA4X,QAAAzX,IACA,GAGAoa,EAAArkB,UAAAymB,iBAAA,WACA,IAAA3c,KAAAyuB,cAAA,CACA,IAAA5oB,EAAA7F,KAAA8wB,QAEA,GADA9wB,KAAA4b,UACA/V,aAAAyE,EACAzE,EAAA8U,cAEA,QAAArmB,EAAA,EAAuBA,EAAAuR,EAAA5N,SAAmB3D,EAC1CuR,EAAAvR,aAAAgW,GACAzE,EAAAvR,GAAAqmB,WAMAJ,EAAArkB,UAAAojC,iBAAA,WACA,UAGA/e,EAAArkB,UAAAmjC,gBAAA,SAAA1nB,GACA,OAAAA,GAGA4I,KAGGlD,SAAA,KAAYmiB,IAAA,SAAAzlB,EAAA1f,EAAAD,GACf,aACAC,EAAAD,QAAA,SAAAkW,EAAAiN,GACA,IAAAkiB,KACA3kB,EAAAf,EAAA,UACAgf,EAAAhf,EAAA,cACA2lB,EAAA5kB,EAAA4kB,aACAlI,EAAA1c,EAAA0c,iBACA/X,EAAA3E,EAAA2E,YACAlZ,EAAAwT,EAAA,YAAAxT,UAEAo5B,GAA0BC,mBAAA,GAU1BC,EAAA,IAAAC,OAAA,QARA,iBACA,OACA,YACA,SACA,SACA,YACA,qBAEAzgC,KAAA,WAEA0gC,EAAA,SAAAllC,GACA,OAAAigB,EAAAmF,aAAAplB,IACA,MAAAA,EAAAsG,OAAA,IACA,gBAAAtG,GAGA,SAAAmlC,EAAAnkC,GACA,OAAAgkC,EAAA5U,KAAApvB,GAGA,SAAAokC,EAAAv5B,GACA,IACA,WAAAA,EAAAk5B,kBAEA,MAAA79B,GACA,UAIA,SAAAm+B,EAAAjhC,EAAApD,EAAAskC,GACA,IAAAx5B,EAAAmU,EAAAslB,yBAAAnhC,EAAApD,EAAAskC,EACAR,GACA,QAAAh5B,GAAAs5B,EAAAt5B,GAiBA,SAAA05B,EAAAphC,EAAAkhC,EAAAG,EAAApO,GAGA,IAFA,IAAA3kB,EAAAuN,EAAAylB,kBAAAthC,GACAob,KACA/f,EAAA,EAAmBA,EAAAiT,EAAAtP,SAAiB3D,EAAA,CACpC,IAAAuB,EAAA0R,EAAAjT,GACAiB,EAAA0D,EAAApD,GACA2kC,EAAAtO,IAAA6N,GACAA,EAAAlkC,EAAAN,EAAA0D,GACA,mBAAA1D,GACA0kC,EAAA1kC,IACA2kC,EAAAjhC,EAAApD,EAAAskC,KACAjO,EAAAr2B,EAAAN,EAAA0D,EAAAuhC,IACAnmB,EAAAlb,KAAAtD,EAAAN,GAIA,OA/BA,SAAA8e,EAAA8lB,EAAAG,GACA,QAAAhmC,EAAA,EAAmBA,EAAA+f,EAAApc,OAAgB3D,GAAA,GACnC,IAAAuB,EAAAwe,EAAA/f,GACA,GAAAgmC,EAAArV,KAAApvB,GAEA,IADA,IAAA4kC,EAAA5kC,EAAA8D,QAAA2gC,EAAA,IACAhd,EAAA,EAA2BA,EAAAjJ,EAAApc,OAAgBqlB,GAAA,EAC3C,GAAAjJ,EAAAiJ,KAAAmd,EACA,UAAAl6B,EAAA,qGACA5G,QAAA,KAAAwgC,KAsBAO,CAAArmB,EAAA8lB,EAAAG,GACAjmB,EAGA,IAAAsmB,EAAA,SAAAzhC,GACA,OAAAA,EAAAS,QAAA,gBAwJAihC,EAAAnhB,OArJAohB,EA2HA,SAAAxjC,EAAAqe,EAAAiC,EAAAjX,EAAAo6B,EAAAjJ,GACA,IAAAkJ,EAAA,WAAmC,OAAA/6B,KAAnC,GACAxH,EAAAnB,EAIA,SAAA2jC,IACA,IAAA5M,EAAA1Y,EACAA,IAAA+jB,IAAArL,EAAApuB,MACA,IAAAsU,EAAA,IAAAhK,EAAAiN,GACAjD,EAAA2M,qBACA,IAAA/D,EAAA,iBAAA1kB,GAAAwH,OAAA+6B,EACA/6B,KAAAxH,GAAAnB,EACAqJ,EAAAqyB,EAAAze,EAAAud,GACA,IACA3U,EAAApd,MAAAsuB,EAAAsL,EAAA35B,UAAAW,IACS,MAAA3E,GACTuY,EAAA8a,gBAAAoC,EAAAz1B,IAAA,MAGA,OADAuY,EAAA+f,iBAAA/f,EAAAggB,sBACAhgB,EAGA,MApBA,iBAAA9b,IACAnB,EAAAqJ,GAkBAoU,EAAA8P,kBAAAoW,EAAA,wBACAA,GAOA,SAAAC,EAAAhiC,EAAAkhC,EAAAjO,EAAAgP,EAAArJ,GAKA,IAJA,IAAAyI,EAAA,IAAAR,OAAAa,EAAAR,GAAA,KACArP,EACAuP,EAAAphC,EAAAkhC,EAAAG,EAAApO,GAEA53B,EAAA,EAAAqd,EAAAmZ,EAAA7yB,OAAyC3D,EAAAqd,EAASrd,GAAA,GAClD,IAAAuB,EAAAi1B,EAAAx2B,GACAoM,EAAAoqB,EAAAx2B,EAAA,GACA6mC,EAAAtlC,EAAAskC,EACA,GAAAe,IAAAN,EACA3hC,EAAAkiC,GACAP,EAAA/kC,EAAA4jC,EAAA5jC,EAAA6K,EAAAy5B,EAAAtI,OACS,CACT,IAAAmJ,EAAAE,EAAAx6B,EAAA,WACA,OAAAk6B,EAAA/kC,EAAA4jC,EAAA5jC,EACA6K,EAAAy5B,EAAAtI,KAEA/c,EAAA8P,kBAAAoW,EAAA,wBACA/hC,EAAAkiC,GAAAH,GAIA,OADAlmB,EAAAmiB,iBAAAh+B,GACAA,EAQAqR,EAAA8wB,UAAA,SAAA16B,EAAAtJ,GACA,sBAAAsJ,EACA,UAAAH,EAAA,gCAAAuU,EAAA+E,YAAAnZ,IAEA,GAAAu5B,EAAAv5B,GACA,OAAAA,EAGA,IAAAgV,OAAA/e,KADAS,EAAApC,OAAAoC,IACA2H,QAAA06B,EAAAriC,EAAA2H,QACA8yB,IAAAz6B,EAAAy6B,UACAxd,EAfA,SAAAhd,EAAAqe,EAAAmc,GACA,OAAA+I,EAAAvjC,EAAAqe,OAAA/e,EACAU,EAAA,KAAAw6B,GAaAuJ,CAAA16B,EAAAgV,EAAAmc,GAEA,OADA/c,EAAAumB,gBAAA36B,EAAA2T,EAAA2lB,GACA3lB,GAGA/J,EAAA2wB,aAAA,SAAA1rB,EAAAnY,GACA,sBAAAmY,GAAA,iBAAAA,EACA,UAAAhP,EAAA,gGAGA,IAAAsxB,KADAz6B,EAAApC,OAAAoC,IACAy6B,UACAsI,EAAA/iC,EAAA+iC,OACA,iBAAAA,MAxRA,SAyRA,IAAAjO,EAAA90B,EAAA80B,OACA,mBAAAA,MAAA6N,GACA,IAAAmB,EAAA9jC,EAAA8jC,YAGA,GAFA,mBAAAA,MAAAN,IAEA9lB,EAAAmF,aAAAkgB,GACA,UAAAtP,WAAA,uEAIA,IADA,IAAAtjB,EAAAuN,EAAAylB,kBAAAhrB,GACAjb,EAAA,EAAmBA,EAAAiT,EAAAtP,SAAiB3D,EAAA,CACpC,IAAAiB,EAAAga,EAAAhI,EAAAjT,IACA,gBAAAiT,EAAAjT,IACAwgB,EAAAwmB,QAAA/lC,KACA0lC,EAAA1lC,EAAAW,UAAAikC,EAAAjO,EAAAgP,EACArJ,GACAoJ,EAAA1lC,EAAA4kC,EAAAjO,EAAAgP,EAAArJ,IAIA,OAAAoJ,EAAA1rB,EAAA4qB,EAAAjO,EAAAgP,EAAArJ,OAKG9I,WAAA,GAAAkP,aAAA,GAAA5gB,SAAA,KAA0CkkB,IAAA,SAAAxnB,EAAA1f,EAAAD,GAC7C,aACAC,EAAAD,QAAA,SACAkW,EAAAiQ,EAAA/C,EAAAgD,GACA,IAGAghB,EAHA1mB,EAAAf,EAAA,UACAvT,EAAAsU,EAAAtU,SACAye,EAAAlL,EAAA,SAEA,mBAAAolB,MAAAqC,EAAArC,KAEA,IAAAsC,EAAA,WACA,IAAAr3B,EAAA,EACAs3B,EAAA,EAEA,SAAAC,EAAApmC,EAAAM,GACAmK,KAAAoE,GAAA7O,EACAyK,KAAAoE,EAAAs3B,GAAA7lC,EACAuO,IAGA,gBAAA6nB,GACAyP,EAAAzP,EAAAyP,KACAt3B,EAAA,EACA,IAAAiQ,EAAA,IAAAxU,MAAA,EAAAosB,EAAAyP,MAEA,OADAzP,EAAAzsB,QAAAm8B,EAAAtnB,GACAA,GAfA,GA8BA,SAAAunB,EAAA3iC,GACA,IACA4iC,EADAC,GAAA,EAEA,QAAAnlC,IAAA6kC,GAAAviC,aAAAuiC,EACAK,EAAAJ,EAAAxiC,GACA6iC,GAAA,MACK,CACL,IAAAv0B,EAAA0X,EAAA1X,KAAAtO,GACA0Y,EAAApK,EAAAtP,OACA4jC,EAAA,IAAAh8B,MAAA,EAAA8R,GACA,QAAArd,EAAA,EAAuBA,EAAAqd,IAASrd,EAAA,CAChC,IAAAuB,EAAA0R,EAAAjT,GACAunC,EAAAvnC,GAAA2E,EAAApD,GACAgmC,EAAAvnC,EAAAqd,GAAA9b,GAGAmK,KAAAmwB,aAAA0L,GACA77B,KAAA+7B,OAAAD,EACA97B,KAAA4wB,YAAAj6B,EAAAmlC,GAAA,MAkCA,SAAAE,EAAA5nB,GACA,IAAAC,EACA4nB,EAAAzkB,EAAApD,GAEA,OAAA5T,EAAAy7B,IAGA5nB,EADK4nB,aAAA3xB,EACL2xB,EAAAjkB,MACA1N,EAAA0xB,WAAArlC,wBAEA,IAAAilC,EAAAK,GAAA3nB,UAGA2nB,aAAA3xB,GACA+J,EAAAiE,eAAA2jB,EAAA,GAEA5nB,GAXAmG,EAAA,6EArCA1F,EAAAyR,SAAAqV,EAAArhB,GAEAqhB,EAAA1lC,UAAA26B,MAAA,aAEA+K,EAAA1lC,UAAA+4B,kBAAA,SAAA15B,EAAA6O,GACApE,KAAA8wB,QAAA1sB,GAAA7O,EACA,IAAAy7B,IAAAhxB,KAAAixB,eACA,GAAAD,GAAAhxB,KAAA+b,QAAA,CACA,IAAApb,EACA,GAAAX,KAAA+7B,OACAp7B,EAzCA,SAAAk7B,GAGA,IAFA,IAAAxnB,EAAA,IAAAmnB,EACAvjC,EAAA4jC,EAAA5jC,OAAA,IACA3D,EAAA,EAAmBA,EAAA2D,IAAY3D,EAAA,CAC/B,IAAAuB,EAAAgmC,EAAA5jC,EAAA3D,GACAiB,EAAAsmC,EAAAvnC,GACA+f,EAAAsX,IAAA91B,EAAAN,GAEA,OAAA8e,EAiCA6nB,CAAAl8B,KAAA8wB,aACS,CACTnwB,KAEA,IADA,IAAAw7B,EAAAn8B,KAAA/H,SACA3D,EAAA,EAAAqd,EAAA3R,KAAA/H,SAAgD3D,EAAAqd,IAASrd,EACzDqM,EAAAX,KAAA8wB,QAAAx8B,EAAA6nC,IAAAn8B,KAAA8wB,QAAAx8B,GAIA,OADA0L,KAAAkxB,SAAAvwB,IACA,EAEA,UAGAi7B,EAAA1lC,UAAAojC,iBAAA,WACA,UAGAsC,EAAA1lC,UAAAmjC,gBAAA,SAAA1nB,GACA,OAAAA,GAAA,GAsBArH,EAAApU,UAAA8lC,MAAA,WACA,OAAAA,EAAAh8B,OAGAsK,EAAA0xB,MAAA,SAAA5nB,GACA,OAAA4nB,EAAA5nB,OAIGmJ,QAAA,GAAAlG,SAAA,KAAuB+kB,IAAA,SAAAroB,EAAA1f,EAAAD,GAC1B,aAQA,SAAAygB,EAAAwnB,GACAr8B,KAAAs8B,UAAAD,EACAr8B,KAAA+b,QAAA,EACA/b,KAAAu8B,OAAA,EAGA1nB,EAAA3e,UAAAsmC,oBAAA,SAAAd,GACA,OAAA17B,KAAAs8B,UAAAZ,GAGA7mB,EAAA3e,UAAA4f,SAAA,SAAAnP,GACA,IAAA1O,EAAA+H,KAAA/H,SACA+H,KAAAy8B,eAAAxkC,EAAA,GACA,IAAA3D,EAAA0L,KAAAu8B,OAAAtkC,EAAA+H,KAAAs8B,UAAA,EACAt8B,KAAA1L,GAAAqS,EACA3G,KAAA+b,QAAA9jB,EAAA,GAGA4c,EAAA3e,UAAAiD,KAAA,SAAAuH,EAAAgV,EAAA/O,GACA,IAAA1O,EAAA+H,KAAA/H,SAAA,EACA,GAAA+H,KAAAw8B,oBAAAvkC,GAIA,OAHA+H,KAAA8V,SAAApV,GACAV,KAAA8V,SAAAJ,QACA1V,KAAA8V,SAAAnP,GAGA,IAAA2W,EAAAtd,KAAAu8B,OAAAtkC,EAAA,EACA+H,KAAAy8B,eAAAxkC,GACA,IAAAykC,EAAA18B,KAAAs8B,UAAA,EACAt8B,KAAAsd,EAAA,EAAAof,GAAAh8B,EACAV,KAAAsd,EAAA,EAAAof,GAAAhnB,EACA1V,KAAAsd,EAAA,EAAAof,GAAA/1B,EACA3G,KAAA+b,QAAA9jB,GAGA4c,EAAA3e,UAAA+f,MAAA,WACA,IAAA0mB,EAAA38B,KAAAu8B,OACAloB,EAAArU,KAAA28B,GAKA,OAHA38B,KAAA28B,QAAAhmC,EACAqJ,KAAAu8B,OAAAI,EAAA,EAAA38B,KAAAs8B,UAAA,EACAt8B,KAAA+b,UACA1H,GAGAQ,EAAA3e,UAAA+B,OAAA,WACA,OAAA+H,KAAA+b,SAGAlH,EAAA3e,UAAAumC,eAAA,SAAAf,GACA17B,KAAAs8B,UAAAZ,GACA17B,KAAA48B,UAAA58B,KAAAs8B,WAAA,IAIAznB,EAAA3e,UAAA0mC,UAAA,SAAAP,GACA,IAAAQ,EAAA78B,KAAAs8B,UACAt8B,KAAAs8B,UAAAD,EACA,IAAAM,EAAA38B,KAAAu8B,OACAtkC,EAAA+H,KAAA+b,QACA+gB,EAAAH,EAAA1kC,EAAA4kC,EAAA,GAnEA,SAAAE,EAAAC,EAAAC,EAAAC,EAAAvrB,GACA,QAAA2L,EAAA,EAAmBA,EAAA3L,IAAS2L,EAC5B2f,EAAA3f,EAAA4f,GAAAH,EAAAzf,EAAA0f,GACAD,EAAAzf,EAAA0f,QAAA,EAiEAG,CAAAn9B,KAAA,EAAAA,KAAA68B,EAAAC,IAGAzoC,EAAAD,QAAAygB,OAEIuoB,IAAA,SAAArpB,EAAA1f,EAAAD,GACJ,aACAC,EAAAD,QAAA,SACAkW,EAAAiN,EAAAC,EAAAgD,GACA,IAAA1F,EAAAf,EAAA,UAEAspB,EAAA,SAAA/oB,GACA,OAAAA,EAAAjN,KAAA,SAAA0K,GACA,OAAAurB,EAAAvrB,EAAAuC,MAIA,SAAAgpB,EAAAlpB,EAAAgH,GACA,IAAA1C,EAAAlB,EAAApD,GAEA,GAAAsE,aAAApO,EACA,OAAA+yB,EAAA3kB,GAGA,WADAtE,EAAAU,EAAAkkB,QAAA5kB,IAEA,OAAAoG,EAAA,oDAAA1F,EAAA+E,YAAAzF,IAGA,IAAAC,EAAA,IAAA/J,EAAAiN,QACA5gB,IAAAykB,GACA/G,EAAAiE,eAAA8C,EAAA,GAIA,IAFA,IAAAwa,EAAAvhB,EAAAsa,SACApkB,EAAA8J,EAAAuD,QACAtjB,EAAA,EAAAqd,EAAAyC,EAAAnc,OAA0C3D,EAAAqd,IAASrd,EAAA,CACnD,IAAAqM,EAAAyT,EAAA9f,SAEAqC,IAAAgK,GAAArM,KAAA8f,IAIA9J,EAAAiqB,KAAA5zB,GAAAqX,MAAA4d,EAAArrB,OAAA5T,EAAA0d,EAAA,MAEA,OAAAA,EAGA/J,EAAAgzB,KAAA,SAAAlpB,GACA,OAAAkpB,EAAAlpB,OAAAzd,IAGA2T,EAAApU,UAAAonC,KAAA,WACA,OAAAA,EAAAt9B,UAAArJ,OAKG0gB,SAAA,KAAYkmB,IAAA,SAAAxpB,EAAA1f,EAAAD,GACf,aACAC,EAAAD,QAAA,SAAAkW,EACAiQ,EACAC,EACAhD,EACAD,EACA9Z,GACA,IAAAqhB,EAAAxU,EAAAyU,WACAjK,EAAAf,EAAA,UACA9J,EAAA6K,EAAA7K,SAEA,SAAAuzB,EAAAppB,EAAA1T,EAAA+8B,EAAAC,GACA19B,KAAAmwB,aAAA/b,GACA,IAAAnE,EAAA6O,IACA9e,KAAA29B,IAAA,OAAA1tB,EAAAvP,EAAAoU,EAAA8L,WAAA3Q,EAAAvP,QACA/J,IAAA8mC,IACAA,EAAAnzB,EAAAnH,QAAAs6B,IACAna,4BAAAtjB,MAEAA,KAAA49B,cAAAH,EACAz9B,KAAA69B,oBAAA,KAEA79B,KAAA89B,YADAJ,IAAAnmB,EACA1X,MAAAG,KAAA+b,SACK,IAAA2hB,EACL,UAEA/mC,EAEAqJ,KAAAiuB,SAAAhN,qBACAjhB,KAAA4wB,YAAAj6B,GAAA,GA0FA,SAAAonC,EAAAC,EAAAjsB,GACA/R,KAAAqkB,cACAtS,EAAAmf,SAAA8M,GAEAjsB,EAAA6F,QAAAomB,GAIA,SAAArU,EAAAvV,EAAA1T,EAAA+8B,EAAAC,GACA,sBAAAh9B,EACA,OAAA8Z,EAAA,gCAAA1F,EAAA+E,YAAAnZ,IAEA,IAAAqR,EAAA,IAAAyrB,EAAAppB,EAAA1T,EAAA+8B,EAAAC,GACA,OAAA3rB,EAAAuC,UAGA,SAAA2pB,EAAAC,GACAl+B,KAAAk+B,QACAl+B,KAAA+R,MAAAosB,UAAAD,GACA,IAAA3oC,EAAAiiB,EAAAxX,KAAAzK,MAAAyK,KAAA+R,MAAAkc,UACA,OAAA14B,aAAA+U,GACAtK,KAAA+R,MAAA8rB,oBAAAtoC,EACAA,EAAAyiB,MAAAomB,OAAAznC,SAAAqJ,UAAArJ,IAEAynC,EAAA3pC,KAAAuL,KAAAzK,GAIA,SAAA6oC,EAAA7oC,GACA,IAIA8e,EAJAtC,EAAA/R,KAAA+R,MACAuC,EAAAvC,EAAAkc,SACAvtB,EAAAuJ,EAAA8H,EAAA4rB,KACArpB,EAAA0J,gBAGA3J,OADA1d,IAAAob,EAAA+rB,YACAp9B,EAAAjM,KAAA6f,EAAAkE,cAAAjjB,EAAAyK,KAAAoE,MAAApE,KAAA/H,QAEAyI,EAAAjM,KAAA6f,EAAAkE,cACAxY,KAAAk+B,MAAA3oC,EAAAyK,KAAAoE,MAAApE,KAAA/H,mBAEAqS,IACAyH,EAAA8rB,oBAAAxpB,GAEA,IAAAiO,EAAAhO,EAAA2J,cAOA,OANAxgB,EAAAqqB,sBACAzT,EACAiO,OACA3rB,IAAAob,EAAA+rB,YAAA,gCACAxpB,GAEAD,EA1IAS,EAAAyR,SAAAiX,EAAAjjB,GAEAijB,EAAAtnC,UAAAioC,UAAA,SAAAD,QACAvnC,IAAAqJ,KAAA89B,aACA,OAAA99B,KAAA89B,aACAI,IAAA3mB,GACAvX,KAAA89B,YAAA3kC,KAAA+kC,IAIAV,EAAAtnC,UAAAmoC,cAAA,SAAA9oC,GAIA,OAHA,OAAAyK,KAAA89B,aACA99B,KAAA89B,YAAA3kC,KAAA5D,GAEAyK,KAAA89B,aAGAN,EAAAtnC,UAAA26B,MAAA,aAEA2M,EAAAtnC,UAAAgjC,mBAAA,WACAl5B,KAAAkxB,cAAAv6B,IAAAqJ,KAAA89B,YAAA99B,KAAA89B,YACA99B,KAAA49B,gBAGAJ,EAAAtnC,UAAAojC,iBAAA,WACA,UAGAkE,EAAAtnC,UAAAg7B,SAAA,SAAA37B,GACAyK,KAAAiuB,SAAA7V,iBAAA7iB,GACAyK,KAAA8wB,QAAA,MAGA0M,EAAAtnC,UAAAymB,iBAAA,SAAA2hB,GACA,GAAAA,IAAAt+B,KAAA49B,cAAA,OAAA59B,KAAA4b,UACA5b,KAAAyuB,gBACAzuB,KAAAu+B,oBACAv+B,KAAA69B,+BAAAvzB,GACAtK,KAAA69B,oBAAAljB,SAEA3a,KAAA49B,yBAAAtzB,GACAtK,KAAA49B,cAAAjjB,WAIA6iB,EAAAtnC,UAAA+iC,SAAA,SAAApzB,GAEA,IAAAtQ,EACAjB,EAFA0L,KAAA8wB,QAAAjrB,EAGA,IAAA5N,EAAA4N,EAAA5N,OAWA,QAVAtB,IAAAqJ,KAAA49B,eACAroC,EAAAyK,KAAA49B,cACAtpC,EAAA,IAEAiB,EAAA+U,EAAAnH,QAAA0C,EAAA,IACAvR,EAAA,GAGA0L,KAAA69B,oBAAAtoC,GAEAA,EAAAw3B,aACA,KAAcz4B,EAAA2D,IAAY3D,EAAA,CAC1B,IAAAga,GACA4vB,MAAA,KACA3oC,MAAAsQ,EAAAvR,GACA8P,MAAA9P,EACA2D,SACA8Z,MAAA/R,MAEAzK,IAAAyiB,MAAAimB,OAAAtnC,SAAA2X,OAAA3X,QAIAA,IAAAqJ,KAAA89B,cACAvoC,IACAyiB,MAAAhY,KAAAq+B,mBAAA1nC,SAAAqJ,UAAArJ,IAEApB,EAAAyiB,MAAA+lB,SAAApnC,EAAApB,EAAAyK,OAGAsK,EAAApU,UAAAyzB,OAAA,SAAAjpB,EAAA+8B,GACA,OAAA9T,EAAA3pB,KAAAU,EAAA+8B,EAAA,OAGAnzB,EAAAqf,OAAA,SAAAvV,EAAA1T,EAAA+8B,EAAAC,GACA,OAAA/T,EAAAvV,EAAA1T,EAAA+8B,EAAAC,OAyDGrmB,SAAA,KAAYmnB,IAAA,SAAAzqB,EAAA1f,EAAAD,GACf,aACA,IACAwgB,EADAE,EAAAf,EAAA,UAKA0qB,EAAA3pB,EAAA4pB,mBACA,GAAA5pB,EAAA4B,QAAA,oBAAAioB,iBAAA,CACA,IAAAC,EAAA19B,EAAA8K,aACA6yB,EAAA3yB,EAAAO,SACAmI,EAAAE,EAAAgqB,aACA,SAAAp+B,GAAgCk+B,EAAAnqC,KAAAyM,EAAAR,IAChC,SAAAA,GAAgCm+B,EAAApqC,KAAAyX,EAAAxL,SAC/B,sBAAA+9B,GACD,mBAAAA,EAAAt7B,QAAA,CACA,IAAA47B,EAAAN,EAAAt7B,UACAyR,EAAA,SAAAlU,GACAq+B,EAAA13B,KAAA3G,SAiCAkU,EA/BC,oBAAA+pB,kBACD,oBAAA/8B,QACAA,OAAAo9B,YACAp9B,OAAAo9B,UAAAC,YAAAr9B,OAAAs9B,cA2BC,IAAAlzB,EACD,SAAAtL,GACAsL,EAAAtL,IAEC,oBAAA7D,WACD,SAAA6D,GACA7D,WAAA6D,EAAA,IApDA,WACA,UAAAxJ,MAAA,mEAmBA,WACA,IAAAioC,EAAAnjC,SAAAC,cAAA,OACA0D,GAAoBy/B,YAAA,GACpBC,GAAA,EACAC,EAAAtjC,SAAAC,cAAA,OACA1B,EAAA,IAAAokC,iBAAA,WACAQ,EAAAI,UAAAC,OAAA,OACAH,GAAA,IAUA,OARA9kC,EAAAklC,QAAAH,EAAA3/B,GAQA,SAAAe,GACA,IAAA3L,EAAA,IAAA4pC,iBAAA,WACA5pC,EAAA2qC,aACAh/B,MAEA3L,EAAA0qC,QAAAN,EAAAx/B,GAVA0/B,IACAA,GAAA,EACAC,EAAAC,UAAAC,OAAA,SAdA,GAqCAnrC,EAAAD,QAAAwgB,IAEGyC,SAAA,KAAYsoB,IAAA,SAAA5rB,EAAA1f,EAAAD,GACf,aACAC,EAAAD,QACA,SAAAkW,EAAAiQ,EAAA9c,GACA,IAAAk1B,EAAAroB,EAAAqoB,kBACA7d,EAAAf,EAAA,UAEA,SAAA6rB,EAAA/5B,GACA7F,KAAAmwB,aAAAtqB,GAEAiP,EAAAyR,SAAAqZ,EAAArlB,GAEAqlB,EAAA1pC,UAAA2pC,iBAAA,SAAAz7B,EAAA07B,GACA9/B,KAAA8wB,QAAA1sB,GAAA07B,EACA,IAAA9O,IAAAhxB,KAAAixB,eACA,OAAAD,GAAAhxB,KAAA+b,UACA/b,KAAAkxB,SAAAlxB,KAAA8wB,UACA,IAKA8O,EAAA1pC,UAAA+4B,kBAAA,SAAA15B,EAAA6O,GACA,IAAAiQ,EAAA,IAAAse,EAGA,OAFAte,EAAA8D,UAAA,SACA9D,EAAA0rB,mBAAAxqC,EACAyK,KAAA6/B,iBAAAz7B,EAAAiQ,IAEAurB,EAAA1pC,UAAAg5B,iBAAA,SAAA/uB,EAAAiE,GACA,IAAAiQ,EAAA,IAAAse,EAGA,OAFAte,EAAA8D,UAAA,SACA9D,EAAA0rB,mBAAA5/B,EACAH,KAAA6/B,iBAAAz7B,EAAAiQ,IAGA/J,EAAA01B,OAAA,SAAA5rB,GAEA,OADA3W,EAAAorB,WAAA,0BACA,IAAA+W,EAAAxrB,GAAAE,WAGAhK,EAAApU,UAAA8pC,OAAA,WACA,OAAA11B,EAAA01B,OAAAhgC,UAIGqX,SAAA,KAAY4oB,IAAA,SAAAlsB,EAAA1f,EAAAD,GACf,aACAC,EAAAD,QACA,SAAAkW,EAAAiQ,EAAAC,GACA,IAAA1F,EAAAf,EAAA,UACA8W,EAAA9W,EAAA,YAAA8W,WACAD,EAAA7W,EAAA,YAAA6W,eACAnO,EAAA3H,EAAA2H,QACAyjB,KAGA,SAAAjsB,EAAApO,GACA7F,KAAAmwB,aAAAtqB,GACA7F,KAAAmgC,SAAA,EACAngC,KAAAogC,SAAA,EACApgC,KAAAqgC,cAAA,EAiHA,SAAAC,EAAAlsB,EAAAmsB,GACA,MAAAA,UAAA,EACA,OAAA/lB,EAAA,kEAEA,IAAAnG,EAAA,IAAAJ,EAAAG,GACAE,EAAAD,EAAAC,UAGA,OAFAD,EAAAE,WAAAgsB,GACAlsB,EAAAI,OACAH,EAvHAQ,EAAAyR,SAAAtS,EAAAsG,GAEAtG,EAAA/d,UAAA26B,MAAA,WACA,GAAA7wB,KAAAqgC,aAGA,OAAArgC,KAAAmgC,SAAA,CAIAngC,KAAA4wB,YAAAj6B,GAAA,GACA,IAAA6pC,EAAA/jB,EAAAzc,KAAA8wB,UACA9wB,KAAAyuB,eACA+R,GACAxgC,KAAAmgC,SAAAngC,KAAAygC,uBACAzgC,KAAA4X,QAAA5X,KAAA0gC,eAAA1gC,KAAA/H,gBARA+H,KAAAkxB,cAYAjd,EAAA/d,UAAAue,KAAA,WACAzU,KAAAqgC,cAAA,EACArgC,KAAA6wB,SAGA5c,EAAA/d,UAAAse,UAAA,WACAxU,KAAAogC,SAAA,GAGAnsB,EAAA/d,UAAAqqC,QAAA,WACA,OAAAvgC,KAAAmgC,UAGAlsB,EAAA/d,UAAAqe,WAAA,SAAAosB,GACA3gC,KAAAmgC,SAAAQ,GAGA1sB,EAAA/d,UAAA+4B,kBAAA,SAAA15B,GAEA,OADAyK,KAAA4gC,cAAArrC,GACAyK,KAAA6gC,eAAA7gC,KAAAugC,YACAvgC,KAAA8wB,QAAA74B,OAAA+H,KAAAugC,UACA,IAAAvgC,KAAAugC,WAAAvgC,KAAAogC,QACApgC,KAAAkxB,SAAAlxB,KAAA8wB,QAAA,IAEA9wB,KAAAkxB,SAAAlxB,KAAA8wB,UAEA,IAKA7c,EAAA/d,UAAAg5B,iBAAA,SAAA/uB,GAEA,OADAH,KAAA8gC,aAAA3gC,GACAH,KAAA+gC,iBAGA9sB,EAAA/d,UAAA04B,kBAAA,WACA,OAAA5uB,KAAA8wB,mBAAAxmB,GAAA,MAAAtK,KAAA8wB,QACA9wB,KAAA4b,WAEA5b,KAAA8gC,aAAAZ,GACAlgC,KAAA+gC,kBAGA9sB,EAAA/d,UAAA6qC,cAAA,WACA,GAAA/gC,KAAAugC,UAAAvgC,KAAAygC,sBAAA,CAEA,IADA,IAAA1kC,EAAA,IAAA6uB,EACAt2B,EAAA0L,KAAA/H,SAAmC3D,EAAA0L,KAAA8wB,QAAA74B,SAAyB3D,EAC5D0L,KAAA8wB,QAAAx8B,KAAA4rC,GACAnkC,EAAA5C,KAAA6G,KAAA8wB,QAAAx8B,IAQA,OALAyH,EAAA9D,OAAA,EACA+H,KAAA4X,QAAA7b,GAEAiE,KAAA4b,WAEA,EAEA,UAGA3H,EAAA/d,UAAA2qC,WAAA,WACA,OAAA7gC,KAAAixB,gBAGAhd,EAAA/d,UAAA8qC,UAAA,WACA,OAAAhhC,KAAA8wB,QAAA74B,OAAA+H,KAAA/H,UAGAgc,EAAA/d,UAAA4qC,aAAA,SAAA3gC,GACAH,KAAA8wB,QAAA33B,KAAAgH,IAGA8T,EAAA/d,UAAA0qC,cAAA,SAAArrC,GACAyK,KAAA8wB,QAAA9wB,KAAAixB,kBAAA17B,GAGA0e,EAAA/d,UAAAuqC,oBAAA,WACA,OAAAzgC,KAAA/H,SAAA+H,KAAAghC,aAGA/sB,EAAA/d,UAAAwqC,eAAA,SAAAC,GACA,IAAA/mB,EAAA,qCACA5Z,KAAAmgC,SAAA,4BAAAQ,EAAA,SACA,WAAA9V,EAAAjR,IAGA3F,EAAA/d,UAAAgjC,mBAAA,WACAl5B,KAAA4X,QAAA5X,KAAA0gC,eAAA,KAcAp2B,EAAAg2B,KAAA,SAAAlsB,EAAAmsB,GACA,OAAAD,EAAAlsB,EAAAmsB,IAGAj2B,EAAApU,UAAAoqC,KAAA,SAAAC,GACA,OAAAD,EAAAtgC,KAAAugC,IAGAj2B,EAAA4J,kBAAAD,KAGG8U,WAAA,GAAA1R,SAAA,KAA0B4pB,IAAA,SAAAltB,EAAA1f,EAAAD,GAC7B,aACAC,EAAAD,QAAA,SAAAkW,GACA,SAAAqoB,EAAAre,QACA3d,IAAA2d,GACAA,IAAAqE,UACA3Y,KAAAmY,UAAA7D,EAAA6D,UACAnY,KAAA+/B,mBAAAzrB,EAAA+f,gBACA/f,EAAA+L,qBAAA1pB,IAGAqJ,KAAAmY,UAAA,EACAnY,KAAA+/B,wBAAAppC,GAIAg8B,EAAAz8B,UAAAmqB,cAAA,WACA,OAAArgB,KAAA+/B,oBAGA,IAAAxqC,EAAAo9B,EAAAz8B,UAAAX,MAAA,WACA,IAAAyK,KAAAqkB,cACA,UAAA9jB,UAAA,6FAEA,OAAAP,KAAAqgB,iBAGAlgB,EAAAwyB,EAAAz8B,UAAA+G,MACA01B,EAAAz8B,UAAAiK,OAAA,WACA,IAAAH,KAAA+sB,aACA,UAAAxsB,UAAA,2FAEA,OAAAP,KAAAqgB,iBAGAgE,EAAAsO,EAAAz8B,UAAAmuB,YAAA,WACA,oBAAArkB,KAAAmY,YAGA4U,EAAA4F,EAAAz8B,UAAA62B,WAAA,WACA,oBAAA/sB,KAAAmY,YAGA+D,EAAAyW,EAAAz8B,UAAAgmB,UAAA,WACA,oBAAAlc,KAAAmY,YAGAohB,EAAA5G,EAAAz8B,UAAAqjC,WAAA,WACA,oBAAAv5B,KAAAmY,YAGAwa,EAAAz8B,UAAAmmB,YAAA,WACA,mBAAArc,KAAAmY,YAGA7N,EAAApU,UAAAgrC,cAAA,WACA,qBAAAlhC,KAAAmY,YAGA7N,EAAApU,UAAAimB,aAAA,WACA,OAAAnc,KAAA2Y,UAAAuoB,iBAGA52B,EAAApU,UAAAmmB,YAAA,WACA,mBAAArc,KAAA2Y,UAAAR,YAGA7N,EAAApU,UAAAgmB,UAAA,WACA,OAAAA,EAAAznB,KAAAuL,KAAA2Y,YAGArO,EAAApU,UAAA62B,WAAA,WACA,OAAAA,EAAAt4B,KAAAuL,KAAA2Y,YAGArO,EAAApU,UAAAmuB,YAAA,WACA,OAAAA,EAAA5vB,KAAAuL,KAAA2Y,YAGArO,EAAApU,UAAAqjC,WAAA,WACA,OAAAA,EAAA9kC,KAAAuL,KAAA2Y,YAGArO,EAAApU,UAAAX,MAAA,WACA,OAAAA,EAAAd,KAAAuL,KAAA2Y,YAGArO,EAAApU,UAAAiK,OAAA,WACA,IAAAoP,EAAAvP,KAAA2Y,UAEA,OADApJ,EAAAkR,6BACAtgB,EAAA1L,KAAA8a,IAGAjF,EAAApU,UAAAszB,OAAA,WACA,OAAAxpB,KAAAqgB,iBAGA/V,EAAApU,UAAAozB,QAAA,WAEA,OADAtpB,KAAAygB,6BACAzgB,KAAAqgB,iBAGA/V,EAAAqoB,0BAGIwO,IAAA,SAAAptB,EAAA1f,EAAAD,GACJ,aACAC,EAAAD,QAAA,SAAAkW,EAAAiN,GACA,IAAAzC,EAAAf,EAAA,UACA0G,EAAA3F,EAAA2F,SACAja,EAAAsU,EAAAtU,SA0CA4gC,KAAgBjrC,eAsChB,OA9EA,SAAA8C,EAAA8F,GACA,GAAAyB,EAAAvH,GAAA,CACA,GAAAA,aAAAqR,EAAA,OAAArR,EACA,IAAAoO,EA4BA,SAAApO,GACA,IACA,OANA,SAAAA,GACA,OAAAA,EAAAoO,KAKAg6B,CAAApoC,GACK,MAAA8C,GAEL,OADA0e,EAAA1e,IACA0e,GAjCA6mB,CAAAroC,GACA,GAAAoO,IAAAoT,EAAA,CACA1b,KAAAif,eACA,IAAA3J,EAAA/J,EAAAC,OAAAlD,EAAAtL,GAEA,OADAgD,KAAAkf,cACA5J,EACS,sBAAAhN,EAAA,CACT,GA+BA,SAAApO,GACA,IACA,OAAAmoC,EAAA3sC,KAAAwE,EAAA,aACK,MAAA8C,GACL,UAnCAwlC,CAAAtoC,GAAA,CACA,IAAAob,EAAA,IAAA/J,EAAAiN,GAQA,OAPAte,EAAA+e,MACA3D,EAAAsa,SACAta,EAAAuD,aACAjhB,EACA0d,EACA,MAEAA,EAEA,OA4BA,SAAAkiB,EAAAlvB,EAAAtI,GACA,IAAAuV,EAAA,IAAAhK,EAAAiN,GACAlD,EAAAC,EACAvV,KAAAif,eACA1J,EAAA2M,qBACAliB,KAAAkf,cACA,IAAAiY,GAAA,EACAr8B,EAAAib,EAAA7K,SAAA5C,GAAA5S,KAAA8hC,EAQA,SAAAhhC,GACA+e,IACAA,EAAA8D,iBAAA7iB,GACA+e,EAAA,OAGA,SAAAnU,GACAmU,IACAA,EAAA8a,gBAAAjvB,EAAA+1B,GAAA,GACA5hB,EAAA,QAEA,OAlBA4hB,GAAA,EAEA5hB,GAAAza,IAAA4gB,IACAnG,EAAA8a,gBAAAv1B,EAAAkC,GAAA,MACAuY,EAAA,MAcAD,EAtDAmtB,CAAAvoC,EAAAoO,EAAAtI,IAGA,OAAA9F,MAyDGoe,SAAA,KAAYoqB,IAAA,SAAA1tB,EAAA1f,EAAAD,GACf,aACAC,EAAAD,QAAA,SAAAkW,EAAAiN,EAAA9Z,GACA,IAAAqX,EAAAf,EAAA,UACA4W,EAAArgB,EAAAqgB,aAEA,SAAA+W,EAAAp5B,GACAtI,KAAAsI,SAGAo5B,EAAAxrC,UAAAymB,iBAAA,WACAle,aAAAuB,KAAAsI,SAGA,IAAAq5B,EAAA,SAAApsC,GAAkC,OAAAqsC,GAAA5hC,MAAAmpB,WAAA5zB,IAClCqsC,EAAAt3B,EAAAs3B,MAAA,SAAAC,EAAAtsC,GACA,IAAA8e,EACA/L,EAgBA,YAfA3R,IAAApB,GACA8e,EAAA/J,EAAAnH,QAAA5N,GACAyiB,MAAA2pB,EAAA,UAAAE,OAAAlrC,GACA8G,EAAAmd,gBAAArlB,aAAA+U,GACA+J,EAAAwE,aAAAtjB,KAGA8e,EAAA,IAAA/J,EAAAiN,GACAjP,EAAAzL,WAAA,WAAwCwX,EAAAsa,aAAkBkT,GAC1DpkC,EAAAmd,gBACAvG,EAAAwE,aAAA,IAAA6oB,EAAAp5B,IAEA+L,EAAA4M,sBAEA5M,EAAAigB,sBACAjgB,GA2BA,SAAAytB,EAAAvsC,GAEA,OADAkJ,aAAAuB,KAAAsI,QACA/S,EAGA,SAAAwsC,EAAA5hC,GAEA,MADA1B,aAAAuB,KAAAsI,QACAnI,EA/BAmK,EAAApU,UAAA0rC,MAAA,SAAAC,GACA,OAAAD,EAAAC,EAAA7hC,OAiCAsK,EAAApU,UAAAyC,QAAA,SAAAkpC,EAAAjoB,GAEA,IAAAvF,EAAA+G,EADAymB,KAGA,IAAAG,EAAA,IAAAN,EAAA7kC,WAAA,WACAwX,EAAA6H,aAnCA,SAAA5H,EAAAsF,EAAAwB,GACA,IAAAjR,EAGAA,EAFA,iBAAAyP,EACAA,aAAA1iB,MACA0iB,EAEA,IAAA+Q,EAAA,uBAGA,IAAAA,EAAA/Q,GAEA9E,EAAA8c,+BAAAznB,GACAmK,EAAAoI,kBAAAvS,GACAmK,EAAAsD,QAAAzN,GAEA,MAAAiR,GACAA,EAAAT,SAoBAsnB,CAAA5tB,EAAAuF,EAAAwB,IAEKymB,IAYL,OAVApkC,EAAAmd,gBACAQ,EAAApb,KAAAqH,QACAgN,EAAA+G,EAAApD,MAAA8pB,EAAAC,OACAprC,EAAAqrC,OAAArrC,IACAkiB,aAAAmpB,IAEA3tB,EAAArU,KAAAgY,MAAA8pB,EAAAC,OACAprC,EAAAqrC,OAAArrC,GAGA0d,MAKGgD,SAAA,KAAY6qB,IAAA,SAAAnuB,EAAA1f,EAAAD,GACf,aACAC,EAAAD,QAAA,SAAAkW,EAAAkQ,EAAAhD,EACAsb,EAAAvb,EAAA9Z,GACA,IAAAqX,EAAAf,EAAA,UACAxT,EAAAwT,EAAA,YAAAxT,UACAgmB,EAAAxS,EAAA,UAAAwS,SACA9L,EAAA3F,EAAA2F,SACAxQ,EAAA6K,EAAA7K,SACAk4B,KAEA,SAAAjZ,EAAAntB,GACAc,WAAA,WAA8B,MAAAd,GAAS,GAavC,SAAAqmC,EAAAC,EAAAvC,GACA,IAAAxrC,EAAA,EACAqd,EAAA0wB,EAAApqC,OACAoc,EAAA,IAAA/J,EAAAiN,GAqBA,OApBA,SAAAzS,IACA,GAAAxQ,GAAAqd,EAAA,OAAA0C,EAAAsa,WACA,IAAAjW,EAhBA,SAAA4pB,GACA,IAAA5pB,EAAAlB,EAAA8qB,GAOA,OANA5pB,IAAA4pB,GACA,mBAAAA,EAAAC,eACA,mBAAAD,EAAAE,cACAF,EAAAC,iBACA7pB,EAAA+pB,eAAAH,EAAAE,gBAEA9pB,EAQAgqB,CAAAL,EAAA/tC,MACA,GAAAokB,aAAApO,GACAoO,EAAA6pB,gBAAA,CACA,IACA7pB,EAAAlB,EACAkB,EAAA8pB,eAAAG,WAAA7C,GACAuC,EAAA/tB,SACiB,MAAAvY,GACjB,OAAAmtB,EAAAntB,GAEA,GAAA2c,aAAApO,EACA,OAAAoO,EAAAV,MAAAlT,EAAAokB,EACA,gBAGApkB,IAEAA,GACAuP,EAGA,SAAAuuB,EAAAvoC,EAAAia,EAAAvV,GACAiB,KAAA6iC,MAAAxoC,EACA2F,KAAAiuB,SAAA3Z,EACAtU,KAAA4C,SAAA7D,EAoCA,SAAA+jC,EAAApiC,EAAA4T,EAAAvV,GACAiB,KAAAmwB,aAAAzvB,EAAA4T,EAAAvV,GASA,SAAAgkC,EAAAxtC,GACA,OAAAqtC,EAAAI,WAAAztC,IACAyK,KAAAqiC,UAAAriC,KAAAoE,OAAAq+B,eAAAltC,GACAA,EAAA+e,WAEA/e,EAGA,SAAA0tC,EAAAhrC,GACA+H,KAAA/H,SACA+H,KAAAsU,QAAA,KACAtU,KAAA/H,EAAA,QAtDA2qC,EAAA1sC,UAAAmE,KAAA,WACA,OAAA2F,KAAA6iC,OAGAD,EAAA1sC,UAAAoe,QAAA,WACA,OAAAtU,KAAAiuB,UAGA2U,EAAA1sC,UAAAgtC,SAAA,WACA,OAAAljC,KAAAsU,UAAA+P,cACArkB,KAAAsU,UAAA/e,QAEA4sC,GAGAS,EAAA1sC,UAAAysC,WAAA,SAAA7C,GACA,IAAAoD,EAAAljC,KAAAkjC,WACAnkC,EAAAiB,KAAA4C,cACAjM,IAAAoI,KAAAif,eACA,IAAA3J,EAAA6uB,IAAAf,EACAniC,KAAAmjC,UAAAD,EAAApD,GAAA,KAIA,YAHAnpC,IAAAoI,KAAAkf,cACAje,KAAAiuB,SAAAmV,mBACApjC,KAAA6iC,MAAA,KACAxuB,GAGAuuB,EAAAI,WAAA,SAAApuC,GACA,aAAAA,GACA,mBAAAA,EAAAsuC,UACA,mBAAAtuC,EAAA+tC,YAMApc,EAAAuc,EAAAF,GAEAE,EAAA5sC,UAAAitC,UAAA,SAAAD,EAAApD,GACA,IAAAp/B,EAAAV,KAAA3F,OACA,OAAAqG,EAAAjM,KAAAyuC,IAAApD,IAiBAmD,EAAA/sC,UAAAymB,iBAAA,WAEA,IADA,IAAAhL,EAAA3R,KAAA/H,OACA3D,EAAA,EAAuBA,EAAAqd,IAASrd,EAAA,CAChC,IAAAkX,EAAAxL,KAAA1L,GACAkX,aAAAlB,GACAkB,EAAAmP,WAKArQ,EAAA+4B,MAAA,WACA,IAAA1xB,EAAA5R,UAAA9H,OACA,GAAA0Z,EAAA,SAAA6I,EACA,uDACA,IAIA8oB,EAJA5iC,EAAAX,UAAA4R,EAAA,GACA,sBAAAjR,EACA,OAAA8Z,EAAA,gCAAA1F,EAAA+E,YAAAnZ,IAGA,IAAA6iC,GAAA,EACA,IAAA5xB,GAAA9R,MAAA4c,QAAA1c,UAAA,KACAujC,EAAAvjC,UAAA,GACA4R,EAAA2xB,EAAArrC,OACAsrC,GAAA,IAEAD,EAAAvjC,UACA4R,KAGA,IADA,IAAA0wB,EAAA,IAAAY,EAAAtxB,GACArd,EAAA,EAAuBA,EAAAqd,IAASrd,EAAA,CAChC,IAAA4uC,EAAAI,EAAAhvC,GACA,GAAAsuC,EAAAI,WAAAE,GAAA,CACA,IAAAM,EAAAN,GACAA,IAAA5uB,WACAmuB,eAAAe,OACa,CACb,IAAA9qB,EAAAlB,EAAA0rB,GACAxqB,aAAApO,IACA44B,EACAxqB,EAAAV,MAAA+qB,EAAA,WACAV,YACAj+B,MAAA9P,QACqBqC,IAGrB0rC,EAAA/tC,GAAA4uC,EAIA,IADA,IAAAO,EAAA,IAAA5jC,MAAAwiC,EAAApqC,QACA3D,EAAA,EAAuBA,EAAAmvC,EAAAxrC,SAA+B3D,EACtDmvC,EAAAnvC,GAAAgW,EAAAnH,QAAAk/B,EAAA/tC,IAAAo/B,UAGA,IAAAgQ,EAAAp5B,EAAAuf,IAAA4Z,GACAp8B,KAAA,SAAAs8B,GACA,QAAArvC,EAAA,EAA+BA,EAAAqvC,EAAA1rC,SAAwB3D,EAAA,CACvD,IAAAwrC,EAAA6D,EAAArvC,GACA,GAAAwrC,EAAA/S,aAEA,OADAtS,EAAA1e,EAAA+jC,EAAA7iC,QACAwd,EACqB,IAAAqlB,EAAAzb,cAErB,YADAqf,EAAA/oB,SAGAgpB,EAAArvC,GAAAwrC,EAAAvqC,QAEA+e,EAAA0J,eAEAtd,EAAAuJ,EAAAvJ,GACA,IAAA2T,EAAAkvB,EACA7iC,EAAAZ,WAAAnJ,EAAAgtC,GAAAjjC,EAAAijC,GACArhB,EAAAhO,EAAA2J,cAGA,OAFAxgB,EAAAqqB,sBACAzT,EAAAiO,EAAA,gBAAAhO,GACAD,IAGAC,EAAAovB,EAAAxW,OAAA,WACA,IAAA4S,EAAA,IAAAx1B,EAAAqoB,kBAAA+Q,GACA,OAAAtB,EAAAC,EAAAvC,KAIA,OAFAuC,EAAA/tB,UACAA,EAAAuE,aAAAwpB,GACA/tB,GAGAhK,EAAApU,UAAAusC,eAAA,SAAAe,GACAxjC,KAAAmY,UAAA,OAAAnY,KAAAmY,UACAnY,KAAA4jC,UAAAJ,GAGAl5B,EAAApU,UAAAqsC,cAAA,WACA,cAAAviC,KAAAmY,WAAA,GAGA7N,EAAApU,UAAAssC,aAAA,WACA,OAAAxiC,KAAA4jC,WAGAt5B,EAAApU,UAAAktC,iBAAA,WACApjC,KAAAmY,WAAA,OAAAnY,KAAAmY,UACAnY,KAAA4jC,eAAAjtC,GAGA2T,EAAApU,UAAAstC,SAAA,SAAA9iC,GACA,sBAAAA,EACA,WAAAoiC,EAAApiC,EAAAV,KAAA8yB,KAEA,UAAAvyB,MAKGwoB,WAAA,GAAA1R,SAAA,KAA0BwsB,IAAA,SAAA9vB,EAAA1f,EAAAD,GAC7B,aACA,IAAA6qB,EAAAlL,EAAA,SACA0F,EAAA,oBAAAulB,UAEAvkB,GAAgB1e,MAChB+nC,EACAC,EAAA,oBAAA78B,UACA,oBAAAtF,mBACA,IAAAV,SACAvK,IAAAqJ,UAAA,KAEA,SAAAgkC,IACA,IACA,IAAAz0B,EAAAu0B,EAEA,OADAA,EAAA,KACAv0B,EAAAzP,MAAAE,KAAAD,WACK,MAAAhE,GAEL,OADA0e,EAAA1e,IACA0e,GAGA,SAAAxQ,EAAAvJ,GAEA,OADAojC,EAAApjC,EACAsjC,EAGA,IAAAzd,EAAA,SAAA0d,EAAAC,GACA,IAAA9C,KAAoBjrC,eAEpB,SAAAguC,IAGA,QAAAjqB,KAFAla,KAAAkG,YAAA+9B,EACAjkC,KAAAmwB,aAAA+T,EACAA,EAAAhuC,UACAkrC,EAAA3sC,KAAAyvC,EAAAhuC,UAAAgkB,IACA,MAAAA,EAAA/e,OAAA+e,EAAAjiB,OAAA,KAEA+H,KAAAka,EAAA,KAAAgqB,EAAAhuC,UAAAgkB,IAMA,OAFAiqB,EAAAjuC,UAAAguC,EAAAhuC,UACA+tC,EAAA/tC,UAAA,IAAAiuC,EACAF,EAAA/tC,WAIA,SAAAkuC,EAAAzjC,GACA,aAAAA,IAAA,IAAAA,IAAA,IAAAA,GACA,iBAAAA,GAAA,iBAAAA,EAIA,SAAAH,EAAAjL,GACA,yBAAAA,GACA,iBAAAA,GAAA,OAAAA,EAGA,SAAAi8B,EAAA6S,GACA,OAAAD,EAAAC,GAEA,IAAAntC,MAAAotC,EAAAD,IAFAA,EAKA,SAAA3K,EAAAnqB,EAAAg1B,GACA,IAEAjwC,EAFAqd,EAAApC,EAAAtX,OACAoc,EAAA,IAAAxU,MAAA8R,EAAA,GAEA,IAAArd,EAAA,EAAeA,EAAAqd,IAASrd,EACxB+f,EAAA/f,GAAAib,EAAAjb,GAGA,OADA+f,EAAA/f,GAAAiwC,EACAlwB,EAGA,SAAA+lB,EAAAnhC,EAAApD,EAAA2uC,GACA,IAAAvlB,EAAAoM,MASA,SAAiBl1B,eAAA1B,KAAAwE,EAAApD,GAAAoD,EAAApD,QAAAc,EARjB,IAAAm1B,EAAA92B,OAAAu2B,yBAAAtyB,EAAApD,GAEA,aAAAi2B,EACA,MAAAA,EAAA32B,KAAA,MAAA22B,EAAAH,IACAG,EAAAv2B,MACAivC,OAHA,EAUA,SAAA5f,EAAA3rB,EAAApE,EAAAU,GACA,GAAA6uC,EAAAnrC,GAAA,OAAAA,EACA,IAAAyyB,GACAn2B,QACAme,cAAA,EACAxe,YAAA,EACAye,UAAA,GAGA,OADAsL,EAAAhqB,eAAAgE,EAAApE,EAAA62B,GACAzyB,EAGA,SAAAiwB,EAAA9zB,GACA,MAAAA,EAGA,IAAAmlC,EAAA,WACA,IAAAkK,GACA5kC,MAAA3J,UACAlB,OAAAkB,UACAwL,SAAAxL,WAGAwuC,EAAA,SAAA/jC,GACA,QAAArM,EAAA,EAAuBA,EAAAmwC,EAAAxsC,SAA+B3D,EACtD,GAAAmwC,EAAAnwC,KAAAqM,EACA,SAGA,UAGA,GAAAse,EAAAoM,MAAA,CACA,IAAArO,EAAAhoB,OAAAwP,oBACA,gBAAAvL,GAGA,IAFA,IAAAob,KACAswB,EAAA3vC,OAAAY,OAAA,MACA,MAAAqD,IAAAyrC,EAAAzrC,IAAA,CACA,IAAAsO,EACA,IACAA,EAAAyV,EAAA/jB,GACiB,MAAA8C,GACjB,OAAAsY,EAEA,QAAA/f,EAAA,EAA+BA,EAAAiT,EAAAtP,SAAiB3D,EAAA,CAChD,IAAAuB,EAAA0R,EAAAjT,GACA,IAAAqwC,EAAA9uC,GAAA,CACA8uC,EAAA9uC,IAAA,EACA,IAAAi2B,EAAA92B,OAAAu2B,yBAAAtyB,EAAApD,GACA,MAAAi2B,GAAA,MAAAA,EAAA32B,KAAA,MAAA22B,EAAAH,KACAtX,EAAAlb,KAAAtD,IAGAoD,EAAAgmB,EAAAtZ,eAAA1M,GAEA,OAAAob,GAGA,IAAA+sB,KAAwBjrC,eACxB,gBAAA8C,GACA,GAAAyrC,EAAAzrC,GAAA,SACA,IAAAob,KAGAuwB,EAAA,QAAA/uC,KAAAoD,EACA,GAAAmoC,EAAA3sC,KAAAwE,EAAApD,GACAwe,EAAAlb,KAAAtD,OACiB,CACjB,QAAAvB,EAAA,EAAmCA,EAAAmwC,EAAAxsC,SAA+B3D,EAClE,GAAA8sC,EAAA3sC,KAAAgwC,EAAAnwC,GAAAuB,GACA,SAAA+uC,EAGAvwB,EAAAlb,KAAAtD,GAGA,OAAAwe,GA5DA,GAkEAwwB,EAAA,sBACA,SAAAvJ,EAAA56B,GACA,IACA,sBAAAA,EAAA,CACA,IAAA6G,EAAA0X,EAAA/c,MAAAxB,EAAAxK,WAEA4uC,EAAA7lB,EAAAoM,OAAA9jB,EAAAtP,OAAA,EACA8sC,EAAAx9B,EAAAtP,OAAA,KACA,IAAAsP,EAAAtP,QAAA,gBAAAsP,EAAA,IACAy9B,EACAH,EAAA5f,KAAAvkB,EAAA,KAAAue,EAAA/c,MAAAxB,GAAAzI,OAAA,EAEA,GAAA6sC,GAAAC,GACAC,EACA,SAGA,SACK,MAAAjpC,GACL,UAIA,SAAAk7B,EAAAh+B,GAEA,SAAAgsC,KACAA,EAAA/uC,UAAA+C,EACA,IAAAyc,EAAA,IAAAuvB,EACA,SAAAC,IACA,cAAAxvB,EAAAyvB,IAIA,OAFAD,IACAA,IACAjsC,EAIA,IAAAmsC,EAAA,wBACA,SAAAnrB,EAAA/gB,GACA,OAAAksC,EAAAngB,KAAA/rB,GAGA,SAAAmsC,EAAA1E,EAAA2E,EAAAnL,GAEA,IADA,IAAA9lB,EAAA,IAAAxU,MAAA8gC,GACArsC,EAAA,EAAkBA,EAAAqsC,IAAWrsC,EAC7B+f,EAAA/f,GAAAgxC,EAAAhxC,EAAA6lC,EAEA,OAAA9lB,EAGA,SAAAiwB,EAAArrC,GACA,IACA,OAAAA,EAAA,GACK,MAAA8C,GACL,oCAIA,SAAAwpC,EAAAtsC,GACA,OAAAA,aAAA/B,OACA,OAAA+B,GACA,iBAAAA,GACA,iBAAAA,EAAA2gB,SACA,iBAAA3gB,EAAApE,KAGA,SAAA+8B,EAAA71B,GACA,IACA6oB,EAAA7oB,EAAA,oBAEA,MAAAypC,KAGA,SAAAvR,EAAAl4B,GACA,aAAAA,IACAA,aAAA7E,MAAA,uBAAA6zB,mBACA,IAAAhvB,EAAA,eAGA,SAAAmjB,EAAAjmB,GACA,OAAAssC,EAAAtsC,IAAAgmB,EAAAuM,mBAAAvyB,EAAA,SAGA,IAAAm9B,EACA,cAAAl/B,MAOA,SAAA3B,GACA,OAAA2pB,EAAA3pB,KACA,IAAA2B,MAAAotC,EAAA/uC,KARA,SAAAA,GACA,GAAA2pB,EAAA3pB,GAAA,OAAAA,EACA,IAAiB,UAAA2B,MAAAotC,EAAA/uC,IACjB,MAAA4U,GAAwB,OAAAA,IAUxB,SAAA0P,EAAA5gB,GACA,SAAarC,SAAAnC,KAAAwE,GAGb,SAAAoiC,EAAAoK,EAAAC,EAAAxZ,GAEA,IADA,IAAA3kB,EAAA0X,EAAA/c,MAAAujC,GACAnxC,EAAA,EAAmBA,EAAAiT,EAAAtP,SAAiB3D,EAAA,CACpC,IAAAuB,EAAA0R,EAAAjT,GACA,GAAA43B,EAAAr2B,GACA,IACAopB,EAAAhqB,eAAAywC,EAAA7vC,EAAAopB,EAAAqM,cAAAma,EAAA5vC,IACa,MAAA2vC,MAKb,IAAAxM,EAAA,SAAAzF,GACA,OAAAtU,EAAAxC,QAAA8W,GACAA,EAEA,MAGA,uBAAAl+B,eAAAyP,SAAA,CACA,IAAA6gC,EAAA,mBAAA9lC,MAAA4lC,KAAA,SAAAlS,GACA,OAAA1zB,MAAA4lC,KAAAlS,IACK,SAAAA,GAIL,IAHA,IAEAqS,EAFAvxB,KACAhU,EAAAkzB,EAAAl+B,OAAAyP,cAEA8gC,EAAAvlC,EAAAyC,QAAA,MACAuR,EAAAlb,KAAAysC,EAAArwC,OAEA,OAAA8e,GAGA2kB,EAAA,SAAAzF,GACA,OAAAtU,EAAAxC,QAAA8W,GACAA,EACS,MAAAA,GAAA,mBAAAA,EAAAl+B,OAAAyP,UACT6gC,EAAApS,GAEA,MAIA,IAAA7c,OAAA,IAAAxK,GACA,qBAAA2N,EAAA3N,GAAAxS,cAEAmsC,OAAA,IAAA35B,IACI,EAEJ,SAAAgG,EAAArc,GACA,OAAAgwC,EAA6B7wC,QAAA8wC,SAAA,eAAWjwC,QAAAc,EAGxC,SAAA+nC,IACA,sBAAAp0B,QACA,IACA,IAAAgK,EAAA,IAAAhK,QAAA,cACA,GAAkB,wBAAA1T,SAAAnC,KAAA6f,GAClB,OAAAhK,QAES,MAAAvO,KAIT,SAAA6kB,EAAA1Z,EAAAgW,GACA,OAAAhW,EAAApR,KAAAonB,GAGA,IAAA7I,GACAinB,UACArhB,eACAsgB,oBACAH,2BACAlR,UACAzM,QAAAwC,EAAAxC,QACAuc,UACApU,oBACAwf,cACA5jC,WACA+kC,UACA9rB,cACAgB,WACAxQ,WACAsc,WACAmT,eACAlI,mBACAyF,mBACAoO,cACAzuC,SAAA0tC,EACAplB,iBACAkX,oBACAnC,0BACArC,iCACA/X,cACAwhB,kBACA9kB,YAAA,oBAAAwvB,gBACA,mBAAAA,OAAAC,UACAtvB,SACAmvB,kBACA3zB,MACAhR,OAAA6iC,EACArF,mBACA9d,cAEAvM,EAAAyqB,aAAAzqB,EAAAqC,QAAA,WACA,IAAAtV,EAAA8K,EAAAkG,SAAAsU,KAAAplB,MAAA,KAAA2qB,IAAAga,QACA,WAAA7kC,EAAA,IAAAA,EAAA,OAAAA,EAAA,KAFA,GAKAiT,EAAAqC,QAAArC,EAAA4iB,iBAAA/qB,GAEA,IAAK,UAAAhV,MAAoB,MAAA6E,GAAYsY,EAAAkU,cAAAxsB,EACrC1H,EAAAD,QAAAigB,IAEGkJ,QAAA,UAAgB,GAj/K2S,CAi/K3S,GAj/KiDxhB,GAk/K5C,oBAAA6F,QAAA,OAAAA,OAAuDA,OAAAqN,EAAArN,OAAA0I,QAA+G,oBAAApD,MAAA,OAAAA,OAAyDA,KAAA+H,EAAA/H,KAAAoD,0EC7gLvP,IAAAuG,EAAc3c,EAAQ,KACtBG,EAAAD,QAAA,SAAAiM,GACA,OAAArL,OAAA6b,EAAAxQ,uBCHAhM,EAAAD,QAAA,SAAAiM,GACA,sBAAAA,EAAA,MAAAE,UAAAF,EAAA,uBACA,OAAAA,qBCFA,IAAAzJ,KAAiBA,SAEjBvC,EAAAD,QAAA,SAAAiM,GACA,OAAAzJ,EAAAnC,KAAA4L,GAAAjF,MAAA","file":"bundles/c2932262ed6106cd4535/mobileguide.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1894);\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","// Browser Request\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// UMD HEADER START \n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like enviroments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.returnExports = factory();\n }\n}(this, function () {\n// UMD HEADER END\n\nvar XHR = XMLHttpRequest\nif (!XHR) throw new Error('missing XMLHttpRequest')\nrequest.log = {\n 'trace': noop, 'debug': noop, 'info': noop, 'warn': noop, 'error': noop\n}\n\nvar DEFAULT_TIMEOUT = 3 * 60 * 1000 // 3 minutes\n\n//\n// request\n//\n\nfunction request(options, callback) {\n // The entry-point to the API: prep the options object and pass the real work to run_xhr.\n if(typeof callback !== 'function')\n throw new Error('Bad callback given: ' + callback)\n\n if(!options)\n throw new Error('No options given')\n\n var options_onResponse = options.onResponse; // Save this for later.\n\n if(typeof options === 'string')\n options = {'uri':options};\n else\n options = JSON.parse(JSON.stringify(options)); // Use a duplicate for mutating.\n\n options.onResponse = options_onResponse // And put it back.\n\n if (options.verbose) request.log = getLogger();\n\n if(options.url) {\n options.uri = options.url;\n delete options.url;\n }\n\n if(!options.uri && options.uri !== \"\")\n throw new Error(\"options.uri is a required argument\");\n\n if(typeof options.uri != \"string\")\n throw new Error(\"options.uri must be a string\");\n\n var unsupported_options = ['proxy', '_redirectsFollowed', 'maxRedirects', 'followRedirect']\n for (var i = 0; i < unsupported_options.length; i++)\n if(options[ unsupported_options[i] ])\n throw new Error(\"options.\" + unsupported_options[i] + \" is not supported\")\n\n options.callback = callback\n options.method = options.method || 'GET';\n options.headers = options.headers || {};\n options.body = options.body || null\n options.timeout = options.timeout || request.DEFAULT_TIMEOUT\n\n if(options.headers.host)\n throw new Error(\"Options.headers.host is not supported\");\n\n if(options.json) {\n options.headers.accept = options.headers.accept || 'application/json'\n if(options.method !== 'GET')\n options.headers['content-type'] = 'application/json'\n\n if(typeof options.json !== 'boolean')\n options.body = JSON.stringify(options.json)\n else if(typeof options.body !== 'string')\n options.body = JSON.stringify(options.body)\n }\n \n //BEGIN QS Hack\n var serialize = function(obj) {\n var str = [];\n for(var p in obj)\n if (obj.hasOwnProperty(p)) {\n str.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(obj[p]));\n }\n return str.join(\"&\");\n }\n \n if(options.qs){\n var qs = (typeof options.qs == 'string')? options.qs : serialize(options.qs);\n if(options.uri.indexOf('?') !== -1){ //no get params\n options.uri = options.uri+'&'+qs;\n }else{ //existing get params\n options.uri = options.uri+'?'+qs;\n }\n }\n //END QS Hack\n \n //BEGIN FORM Hack\n var multipart = function(obj) {\n //todo: support file type (useful?)\n var result = {};\n result.boundry = '-------------------------------'+Math.floor(Math.random()*1000000000);\n var lines = [];\n for(var p in obj){\n if (obj.hasOwnProperty(p)) {\n lines.push(\n '--'+result.boundry+\"\\n\"+\n 'Content-Disposition: form-data; name=\"'+p+'\"'+\"\\n\"+\n \"\\n\"+\n obj[p]+\"\\n\"\n );\n }\n }\n lines.push( '--'+result.boundry+'--' );\n result.body = lines.join('');\n result.length = result.body.length;\n result.type = 'multipart/form-data; boundary='+result.boundry;\n return result;\n }\n \n if(options.form){\n if(typeof options.form == 'string') throw('form name unsupported');\n if(options.method === 'POST'){\n var encoding = (options.encoding || 'application/x-www-form-urlencoded').toLowerCase();\n options.headers['content-type'] = encoding;\n switch(encoding){\n case 'application/x-www-form-urlencoded':\n options.body = serialize(options.form).replace(/%20/g, \"+\");\n break;\n case 'multipart/form-data':\n var multi = multipart(options.form);\n //options.headers['content-length'] = multi.length;\n options.body = multi.body;\n options.headers['content-type'] = multi.type;\n break;\n default : throw new Error('unsupported encoding:'+encoding);\n }\n }\n }\n //END FORM Hack\n\n // If onResponse is boolean true, call back immediately when the response is known,\n // not when the full request is complete.\n options.onResponse = options.onResponse || noop\n if(options.onResponse === true) {\n options.onResponse = callback\n options.callback = noop\n }\n\n // XXX Browsers do not like this.\n //if(options.body)\n // options.headers['content-length'] = options.body.length;\n\n // HTTP basic authentication\n if(!options.headers.authorization && options.auth)\n options.headers.authorization = 'Basic ' + b64_enc(options.auth.username + ':' + options.auth.password);\n\n return run_xhr(options)\n}\n\nvar req_seq = 0\nfunction run_xhr(options) {\n var xhr = new XHR\n , timed_out = false\n , is_cors = is_crossDomain(options.uri)\n , supports_cors = ('withCredentials' in xhr)\n\n req_seq += 1\n xhr.seq_id = req_seq\n xhr.id = req_seq + ': ' + options.method + ' ' + options.uri\n xhr._id = xhr.id // I know I will type \"_id\" from habit all the time.\n\n if(is_cors && !supports_cors) {\n var cors_err = new Error('Browser does not support cross-origin request: ' + options.uri)\n cors_err.cors = 'unsupported'\n return options.callback(cors_err, xhr)\n }\n\n xhr.timeoutTimer = setTimeout(too_late, options.timeout)\n function too_late() {\n timed_out = true\n var er = new Error('ETIMEDOUT')\n er.code = 'ETIMEDOUT'\n er.duration = options.timeout\n\n request.log.error('Timeout', { 'id':xhr._id, 'milliseconds':options.timeout })\n return options.callback(er, xhr)\n }\n\n // Some states can be skipped over, so remember what is still incomplete.\n var did = {'response':false, 'loading':false, 'end':false}\n\n xhr.onreadystatechange = on_state_change\n xhr.open(options.method, options.uri, true) // asynchronous\n if(is_cors)\n xhr.withCredentials = !! options.withCredentials\n xhr.send(options.body)\n return xhr\n\n function on_state_change(event) {\n if(timed_out)\n return request.log.debug('Ignoring timed out state change', {'state':xhr.readyState, 'id':xhr.id})\n\n request.log.debug('State change', {'state':xhr.readyState, 'id':xhr.id, 'timed_out':timed_out})\n\n if(xhr.readyState === XHR.OPENED) {\n request.log.debug('Request started', {'id':xhr.id})\n for (var key in options.headers)\n xhr.setRequestHeader(key, options.headers[key])\n }\n\n else if(xhr.readyState === XHR.HEADERS_RECEIVED)\n on_response()\n\n else if(xhr.readyState === XHR.LOADING) {\n on_response()\n on_loading()\n }\n\n else if(xhr.readyState === XHR.DONE) {\n on_response()\n on_loading()\n on_end()\n }\n }\n\n function on_response() {\n if(did.response)\n return\n\n did.response = true\n request.log.debug('Got response', {'id':xhr.id, 'status':xhr.status})\n clearTimeout(xhr.timeoutTimer)\n xhr.statusCode = xhr.status // Node request compatibility\n\n // Detect failed CORS requests.\n if(is_cors && xhr.statusCode == 0) {\n var cors_err = new Error('CORS request rejected: ' + options.uri)\n cors_err.cors = 'rejected'\n\n // Do not process this request further.\n did.loading = true\n did.end = true\n\n return options.callback(cors_err, xhr)\n }\n\n options.onResponse(null, xhr)\n }\n\n function on_loading() {\n if(did.loading)\n return\n\n did.loading = true\n request.log.debug('Response body loading', {'id':xhr.id})\n // TODO: Maybe simulate \"data\" events by watching xhr.responseText\n }\n\n function on_end() {\n if(did.end)\n return\n\n did.end = true\n request.log.debug('Request done', {'id':xhr.id})\n\n xhr.body = xhr.responseText\n if(options.json) {\n try { xhr.body = JSON.parse(xhr.responseText) }\n catch (er) { return options.callback(er, xhr) }\n }\n\n options.callback(null, xhr, xhr.body)\n }\n\n} // request\n\nrequest.withCredentials = false;\nrequest.DEFAULT_TIMEOUT = DEFAULT_TIMEOUT;\n\n//\n// defaults\n//\n\nrequest.defaults = function(options, requester) {\n var def = function (method) {\n var d = function (params, callback) {\n if(typeof params === 'string')\n params = {'uri': params};\n else {\n params = JSON.parse(JSON.stringify(params));\n }\n for (var i in options) {\n if (params[i] === undefined) params[i] = options[i]\n }\n return method(params, callback)\n }\n return d\n }\n var de = def(request)\n de.get = def(request.get)\n de.post = def(request.post)\n de.put = def(request.put)\n de.head = def(request.head)\n return de\n}\n\n//\n// HTTP method shortcuts\n//\n\nvar shortcuts = [ 'get', 'put', 'post', 'head' ];\nshortcuts.forEach(function(shortcut) {\n var method = shortcut.toUpperCase();\n var func = shortcut.toLowerCase();\n\n request[func] = function(opts) {\n if(typeof opts === 'string')\n opts = {'method':method, 'uri':opts};\n else {\n opts = JSON.parse(JSON.stringify(opts));\n opts.method = method;\n }\n\n var args = [opts].concat(Array.prototype.slice.apply(arguments, [1]));\n return request.apply(this, args);\n }\n})\n\n//\n// CouchDB shortcut\n//\n\nrequest.couch = function(options, callback) {\n if(typeof options === 'string')\n options = {'uri':options}\n\n // Just use the request API to do JSON.\n options.json = true\n if(options.body)\n options.json = options.body\n delete options.body\n\n callback = callback || noop\n\n var xhr = request(options, couch_handler)\n return xhr\n\n function couch_handler(er, resp, body) {\n if(er)\n return callback(er, resp, body)\n\n if((resp.statusCode < 200 || resp.statusCode > 299) && body.error) {\n // The body is a Couch JSON object indicating the error.\n er = new Error('CouchDB error: ' + (body.error.reason || body.error.error))\n for (var key in body)\n er[key] = body[key]\n return callback(er, resp, body);\n }\n\n return callback(er, resp, body);\n }\n}\n\n//\n// Utility\n//\n\nfunction noop() {}\n\nfunction getLogger() {\n var logger = {}\n , levels = ['trace', 'debug', 'info', 'warn', 'error']\n , level, i\n\n for(i = 0; i < levels.length; i++) {\n level = levels[i]\n\n logger[level] = noop\n if(typeof console !== 'undefined' && console && console[level])\n logger[level] = formatted(console, level)\n }\n\n return logger\n}\n\nfunction formatted(obj, method) {\n return formatted_logger\n\n function formatted_logger(str, context) {\n if(typeof context === 'object')\n str += ' ' + JSON.stringify(context)\n\n return obj[method].call(obj, str)\n }\n}\n\n// Return whether a URL is a cross-domain request.\nfunction is_crossDomain(url) {\n var rurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/\n\n // jQuery #8138, IE may throw an exception when accessing\n // a field from window.location if document.domain has been set\n var ajaxLocation\n try { ajaxLocation = location.href }\n catch (e) {\n // Use the href attribute of an A element since IE will modify it given document.location\n ajaxLocation = document.createElement( \"a\" );\n ajaxLocation.href = \"\";\n ajaxLocation = ajaxLocation.href;\n }\n\n var ajaxLocParts = rurl.exec(ajaxLocation.toLowerCase()) || []\n , parts = rurl.exec(url.toLowerCase() )\n\n var result = !!(\n parts &&\n ( parts[1] != ajaxLocParts[1]\n || parts[2] != ajaxLocParts[2]\n || (parts[3] || (parts[1] === \"http:\" ? 80 : 443)) != (ajaxLocParts[3] || (ajaxLocParts[1] === \"http:\" ? 80 : 443))\n )\n )\n\n //console.debug('is_crossDomain('+url+') -> ' + result)\n return result\n}\n\n// MIT License from http://phpjs.org/functions/base64_encode:358\nfunction b64_enc (data) {\n // Encodes string using MIME base64 algorithm\n var b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc=\"\", tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n // assume utf8 data\n // data = this.utf8_encode(data+'');\n\n do { // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n\n bits = o1<<16 | o2<<8 | o3;\n\n h1 = bits>>18 & 0x3f;\n h2 = bits>>12 & 0x3f;\n h3 = bits>>6 & 0x3f;\n h4 = bits & 0x3f;\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '==';\n break;\n case 2:\n enc = enc.slice(0, -1) + '=';\n break;\n }\n\n return enc;\n}\n return request;\n//UMD FOOTER START\n}));\n//UMD FOOTER END\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","module.exports = require(\"regenerator-runtime\");\n","var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","import {getVectorConfig} from '../getconfig';\n\nfunction onBackToRiotClick() {\n document.cookie = 'mobile_redirect_to_guide=false;path=/';\n window.location.href = '../';\n}\n\nasync function initPage() {\n document.getElementById('back_to_riot_button').onclick = onBackToRiotClick;\n\n const config = await getVectorConfig('..');\n let hsUrl;\n if (config && config['default_hs_url']) {\n hsUrl = config['default_hs_url'];\n }\n if (hsUrl && !hsUrl.endsWith('/')) hsUrl += '/';\n if (hsUrl && hsUrl !== 'https://matrix.org/') {\n document.getElementById('step2_container').style.display = 'block';\n document.getElementById('hs_url').innerHTML = hsUrl;\n document.getElementById('step_login_header').innerHTML= 'Step 3: Register or Log in';\n }\n}\n\ninitPage();\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() { return this })() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport Promise from 'bluebird';\nimport request from 'browser-request';\n\nexport async function getVectorConfig(relativeLocation) {\n if (relativeLocation === undefined) relativeLocation = '';\n if (relativeLocation !== '' && !relativeLocation.endsWith('/')) relativeLocation += '/';\n try {\n const configJson = await getConfig(`${relativeLocation}config.${document.domain}.json`);\n // 404s succeed with an empty json config, so check that there are keys\n if (Object.keys(configJson).length === 0) {\n throw new Error(); // throw to enter the catch\n }\n return configJson;\n } catch (e) {\n return await getConfig(relativeLocation + \"config.json\");\n }\n}\n\nfunction getConfig(configJsonFilename) {\n return new Promise(function(resolve, reject) {\n request(\n { method: \"GET\", url: configJsonFilename },\n (err, response, body) => {\n if (err || response.status < 200 || response.status >= 300) {\n // Lack of a config isn't an error, we should\n // just use the defaults.\n // Also treat a blank config as no config, assuming\n // the status code is 0, because we don't get 404s\n // from file: URIs so this is the only way we can\n // not fail if the file doesn't exist when loading\n // from a file:// URI.\n if (response) {\n if (response.status == 404 || (response.status == 0 && body == '')) {\n resolve({});\n }\n }\n reject({err: err, response: response});\n return;\n }\n\n // We parse the JSON ourselves rather than use the JSON\n // parameter, since this throws a parse error on empty\n // which breaks if there's no config.json and we're\n // loading from the filesystem (see above).\n resolve(JSON.parse(body));\n },\n );\n });\n}\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","module.exports = true;\n","/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2018 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.5.2\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar SomePromiseArray = Promise._SomePromiseArray;\nfunction any(promises) {\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(1);\n ret.setUnwrap();\n ret.init();\n return promise;\n}\n\nPromise.any = function (promises) {\n return any(promises);\n};\n\nPromise.prototype.any = function () {\n return any(this);\n};\n\n};\n\n},{}],2:[function(_dereq_,module,exports){\n\"use strict\";\nvar firstLineError;\ntry {throw new Error(); } catch (e) {firstLineError = e;}\nvar schedule = _dereq_(\"./schedule\");\nvar Queue = _dereq_(\"./queue\");\nvar util = _dereq_(\"./util\");\n\nfunction Async() {\n this._customScheduler = false;\n this._isTickUsed = false;\n this._lateQueue = new Queue(16);\n this._normalQueue = new Queue(16);\n this._haveDrainedQueues = false;\n this._trampolineEnabled = true;\n var self = this;\n this.drainQueues = function () {\n self._drainQueues();\n };\n this._schedule = schedule;\n}\n\nAsync.prototype.setScheduler = function(fn) {\n var prev = this._schedule;\n this._schedule = fn;\n this._customScheduler = true;\n return prev;\n};\n\nAsync.prototype.hasCustomScheduler = function() {\n return this._customScheduler;\n};\n\nAsync.prototype.enableTrampoline = function() {\n this._trampolineEnabled = true;\n};\n\nAsync.prototype.disableTrampolineIfNecessary = function() {\n if (util.hasDevTools) {\n this._trampolineEnabled = false;\n }\n};\n\nAsync.prototype.haveItemsQueued = function () {\n return this._isTickUsed || this._haveDrainedQueues;\n};\n\n\nAsync.prototype.fatalError = function(e, isNode) {\n if (isNode) {\n process.stderr.write(\"Fatal \" + (e instanceof Error ? e.stack : e) +\n \"\\n\");\n process.exit(2);\n } else {\n this.throwLater(e);\n }\n};\n\nAsync.prototype.throwLater = function(fn, arg) {\n if (arguments.length === 1) {\n arg = fn;\n fn = function () { throw arg; };\n }\n if (typeof setTimeout !== \"undefined\") {\n setTimeout(function() {\n fn(arg);\n }, 0);\n } else try {\n this._schedule(function() {\n fn(arg);\n });\n } catch (e) {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n};\n\nfunction AsyncInvokeLater(fn, receiver, arg) {\n this._lateQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncInvoke(fn, receiver, arg) {\n this._normalQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncSettlePromises(promise) {\n this._normalQueue._pushOne(promise);\n this._queueTick();\n}\n\nif (!util.hasDevTools) {\n Async.prototype.invokeLater = AsyncInvokeLater;\n Async.prototype.invoke = AsyncInvoke;\n Async.prototype.settlePromises = AsyncSettlePromises;\n} else {\n Async.prototype.invokeLater = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvokeLater.call(this, fn, receiver, arg);\n } else {\n this._schedule(function() {\n setTimeout(function() {\n fn.call(receiver, arg);\n }, 100);\n });\n }\n };\n\n Async.prototype.invoke = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvoke.call(this, fn, receiver, arg);\n } else {\n this._schedule(function() {\n fn.call(receiver, arg);\n });\n }\n };\n\n Async.prototype.settlePromises = function(promise) {\n if (this._trampolineEnabled) {\n AsyncSettlePromises.call(this, promise);\n } else {\n this._schedule(function() {\n promise._settlePromises();\n });\n }\n };\n}\n\nfunction _drainQueue(queue) {\n while (queue.length() > 0) {\n _drainQueueStep(queue);\n }\n}\n\nfunction _drainQueueStep(queue) {\n var fn = queue.shift();\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n } else {\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n}\n\nAsync.prototype._drainQueues = function () {\n _drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n _drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29,\"./util\":36}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & (~2097152);\n }\n};\n\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (!true) {\nvar makeMethodCaller = function (methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n var ret = cache[name];\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n cache[\" size\"] = keys.length - 256;\n }\n }\n return ret;\n};\n\ngetMethodCaller = function(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n return fn;\n}\n\nfunction caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);;\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n if (maybeCaller !== null) {\n return this._then(\n maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n return obj[this];\n}\nfunction indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n var isIndex = (typeof propertyName === \"number\");\n var getter;\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (item != null && item.prototype instanceof Error)) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n Context.deactivateLongStackTraces = function() {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context) {\nvar getDomain = Promise._getDomain;\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar es5 = _dereq_(\"./es5\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (true ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n var self = this;\n setTimeout(function() {\n self._notifyUnhandledRejection();\n }, 1);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var domain = getDomain();\n possiblyUnhandledRejection =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var domain = getDomain();\n unhandledRejectionHandled =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace;\n config.longStackTraces = true;\n disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;\n Context.deactivateLongStackTraces();\n async.enableTrampoline();\n config.longStackTraces = false;\n };\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n Context.activateLongStackTraces();\n async.disableTrampolineIfNecessary();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\nvar fireDomEvent = (function() {\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var eventData = {\n detail: event,\n cancelable: true\n };\n es5.defineProperty(\n eventData, \"promise\", {value: event.promise});\n es5.defineProperty(eventData, \"reason\", {value: event.reason});\n var domEvent = new CustomEvent(name.toLowerCase(), eventData);\n return !util.global.dispatchEvent(domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = new Event(name.toLowerCase(), {\n cancelable: true\n });\n domEvent.detail = event;\n es5.defineProperty(domEvent, \"promise\", {value: event.promise});\n es5.defineProperty(domEvent, \"reason\", {value: event.reason});\n return !util.global.dispatchEvent(domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name.toLowerCase(), false, true,\n event);\n return !util.global.dispatchEvent(domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar fireGlobalEvent = (function() {\n if (util.isNode) {\n return function() {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function() {\n return false;\n };\n }\n return function(name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._dereferenceTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n}\n\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction longStackTracesDereferenceTrace() {\n this._trace = undefined;\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n}\n\nfunction reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n}\n\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = firstLineError.stack.split(\"\\n\");\n var lastStackLines = lastLineError.stack.split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\n return boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n}\n\nmodule.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n};\n\n},{\"./es5\":13,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n} else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\n catch(e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function() {\n return true;\n }\n };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"expecting an object but got \" + util.classString(item)\n ));\n }\n }\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n apiRejection,\n INTERNAL,\n tryConvertToPromise,\n Proxyable,\n debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n var result = tryCatch(yieldHandlers[i])(value);\n traceParent._popContext();\n if (result === errorObj) {\n traceParent._pushContext();\n var ret = Promise.reject(errorObj.e);\n traceParent._popContext();\n return ret;\n }\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n this._promise = internal.lastly(function() {\n return _finallyPromise;\n });\n internal._captureStackTrace();\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n }\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\"\n ? [yieldHandler].concat(yieldHandlers)\n : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n this._promise = this._generator = null;\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n this._finallyPromise = null;\n }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n var result;\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\n \"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n reason);\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n result = tryCatch(this._generator[\"return\"]).call(this._generator,\n undefined);\n this._promise._popContext();\n }\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n this._yieldedPromise = null;\n this._promise._pushContext();\n var result = tryCatch(this._generator.next).call(this._generator, value);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n this._yieldedPromise = null;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n var result = tryCatch(this._generator[\"throw\"])\n .call(this._generator, reason);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n};\n\nPromiseSpawn.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver =\n this._generatorFunction = undefined;\n this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n if (result === errorObj) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n if (result.done === true) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n if (!(maybePromise instanceof Promise)) {\n maybePromise =\n promiseFromYieldHandler(maybePromise,\n this._yieldHandlers,\n this._promise);\n if (maybePromise === null) {\n this._promiseRejected(\n new TypeError(\n \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n \"From coroutine:\\u000a\" +\n this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n )\n );\n return;\n }\n }\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n this._yieldedPromise = maybePromise;\n maybePromise._proxy(this, null);\n } else if (((bitField & 33554432) !== 0)) {\n Promise._async.invoke(\n this._promiseFulfilled, this, maybePromise._value()\n );\n } else if (((bitField & 16777216) !== 0)) {\n Promise._async.invoke(\n this._promiseRejected, this, maybePromise._reason()\n );\n } else {\n this._promiseCancelled();\n }\n }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n spawn._promiseFulfilled(undefined);\n return ret;\n };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n spawn._run(Promise.spawn);\n return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async,\n getDomain) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!true) {\nif (canEvaluate) {\n var thenCallback = function(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\n }\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n\n\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n maybePromise._value(), holder);\n } else if (((bitField & 16777216) !== 0)) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var domain = getDomain();\n if (domain !== null) {\n holder.fn = util.domainBind(domain, holder.fn);\n }\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var args = [].slice.call(arguments);;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n this._promise._captureStackTrace();\n var domain = getDomain();\n this._callback = domain === null ? fn : util.domainBind(domain, fn);\n this._preservedValues = _filter === INTERNAL\n ? new Array(this.length())\n : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = (index * -1) - 1;\n values[index] = value;\n if (limit >= 1) {\n this._inFlight--;\n this._drainQueue();\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n this._queue.push(index);\n return false;\n }\n if (preservedValues !== null) preservedValues[index] = value;\n\n var promise = this._promise;\n var callback = this._callback;\n var receiver = promise._boundValue();\n promise._pushContext();\n var ret = tryCatch(callback).call(receiver, value, index, length);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n promise\n );\n if (ret === errorObj) {\n this._reject(ret.e);\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n maybePromise._proxy(this, (index + 1) * -1);\n return false;\n } else if (((bitField & 33554432) !== 0)) {\n ret = maybePromise._value();\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(maybePromise._reason());\n return true;\n } else {\n this._cancel();\n return true;\n }\n }\n values[index] = ret;\n }\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n return true;\n }\n return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n this._promiseFulfilled(values[index], index);\n }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n ret.length = j;\n this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n if (options !== undefined) {\n if (typeof options === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(\n new TypeError(\"'concurrency' must be a number but it is \" +\n util.classString(options.concurrency)));\n }\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\n \"options argument must be an object but it is \" +\n util.classString(options)));\n }\n }\n limit = typeof limit === \"number\" &&\n isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n};\n};\n\n},{\"./util\":36}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);;\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret =\n tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nfunction successAdapter(val, nodeback) {\n var promise = this;\n var receiver = promise._boundValue();\n var ret = val === undefined\n ? tryCatch(nodeback).call(receiver, null)\n : tryCatch(nodeback).call(receiver, null, val);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\nfunction errorAdapter(reason, nodeback) {\n var promise = this;\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n this._then(\n adapter,\n errorAdapter,\n undefined,\n this,\n nodeback\n );\n }\n return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\n\nvar getDomain;\nif (util.isNode) {\n getDomain = function() {\n var ret = process.domain;\n if (ret === undefined) ret = null;\n return ret;\n };\n} else {\n getDomain = function() {\n return null;\n };\n}\nutil.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n _dereq_(\"./promise_array\")(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\nvar debug = _dereq_(\"./debuggability\")(Promise, Context);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((this._bitField & 2097152) !== 0)) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var domain = getDomain();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\n if (((bitField & 33554432) !== 0)) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if (((bitField & 16777216) !== 0)) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: domain === null ? handler\n : (typeof handler === \"function\" &&\n util.domainBind(domain, handler)),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise, receiver, domain);\n }\n\n return promise;\n};\n\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n this._bitField = this._bitField | 134217728;\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n domain\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n if (typeof fulfill === \"function\") {\n this[base + 0] =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\n this._setFollowee(promise);\n } else if (((bitField & 33554432) !== 0)) {\n this._fulfill(promise._value());\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n var promiseCreated = promise._popContext();\n bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = ((bitField & 134217728) !== 0);\n if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if (((bitField & 33554432) !== 0)) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if (((bitField & 134217728) !== 0)) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n this._dereferenceTrace();\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = (bitField & 65535);\n\n if (len > 0) {\n if (((bitField & 16842752) !== 0)) {\n var reason = this._fulfillmentHandler0;\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n};\n\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\nPromise.Promise = Promise;\nPromise.version = \"3.5.2\";\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./call_get.js')(Promise);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./filter.js')(Promise, INTERNAL);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./any.js')(Promise);\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \n function fillTypes(value) { \n var p = new Promise(INTERNAL); \n p._fulfillmentHandler0 = value; \n p._rejectionHandler0 = value; \n p._promise0 = value; \n p._receiver0 = value; \n } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \n fillTypes(1); \n fillTypes(function(){}); \n fillTypes(undefined); \n fillTypes(false); \n fillTypes(new Promise(INTERNAL)); \n debug.setBounds(Async.firstLineError, util.lastLineError); \n return Promise; \n\n};\n\n},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36}],23:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if (((bitField & 50397184) === 0)) {\n this._promise._setAsyncGuaranteed();\n return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\n } else if (((bitField & 33554432) !== 0)) {\n values = values._value();\n } else if (((bitField & 16777216) !== 0)) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if (((bitField & 50397184) === 0)) {\n maybePromise._proxy(this, i);\n this._values[i] = maybePromise;\n } else if (((bitField & 33554432) !== 0)) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if (((bitField & 16777216) !== 0)) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n \"arity\", \"length\",\n \"name\",\n \"arguments\",\n \"caller\",\n \"callee\",\n \"prototype\",\n \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n return util.isIdentifier(name) &&\n name.charAt(0) !== \"_\" &&\n name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n }\n catch (e) {\n return false;\n }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix,\n defaultPromisified);\n return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\"\n .replace(\"%s\", suffix));\n }\n }\n }\n }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter\n ? true : defaultFilter(key, value, obj);\n if (typeof value === \"function\" &&\n !isPromisified(value) &&\n !hasPromisified(obj, key, suffix) &&\n filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (!true) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n for(var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n return util.filledRange(\n Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined\n ? \"ret = callback({{args}}, nodeback); break;\\n\"\n : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] +\":\" +\n generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", (shouldProxyThis\n ? \"ret = callback.apply(this, args);\\n\"\n : \"ret = callback.apply(receiver, args);\\n\"));\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\"\n ? (\"this != null ? this['\"+callback+\"'] : fn\")\n : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n .replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\",\n \"fn\",\n \"receiver\",\n \"withAppended\",\n \"maybeWrapAsError\",\n \"nodebackForPromise\",\n \"tryCatch\",\n \"errorObj\",\n \"notEnumerableProp\",\n \"INTERNAL\",\n body)(\n Promise,\n fn,\n receiver,\n withAppended,\n maybeWrapAsError,\n nodebackForPromise,\n util.tryCatch,\n util.errorObj,\n util.notEnumerableProp,\n INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = (function() {return this;})();\n var method = callback;\n if (typeof method === \"string\") {\n callback = fn;\n }\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n var cb = typeof method === \"string\" && this !== defaultThis\n ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch(e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n ? makeNodePromisifiedEval\n : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods =\n promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i+= 2) {\n var key = methods[i];\n var fn = methods[i+1];\n var promisifiedKey = key + suffix;\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] =\n makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function() {\n return makeNodePromisified(key, THIS, key,\n fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n util.toFastProperties(obj);\n return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined,\n callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n if (isPromisified(fn)) {\n return fn;\n }\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && typeof target !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n\n var keys = util.inheritedDataKeys(target);\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n if (keys[i] !== \"constructor\" &&\n util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier,\n multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n})();\n\nvar entriesToMap = function(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n this.constructor$(entries);\n this._isMap = isMap;\n this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n var val;\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n this._resolve(val);\n return true;\n }\n return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n};\n\nfunction props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(\n Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n return ret;\n}\n\nPromise.prototype.props = function () {\n return props(this);\n};\n\nPromise.props = function (promises) {\n return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\n var wrapMask = this._capacity - 1;\n this[(j + 0) & wrapMask] = fn;\n this[(j + 1) & wrapMask] = receiver;\n this[(j + 2) & wrapMask] = arg;\n this._length = length;\n};\n\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n return promise.then(function(array) {\n return race(array, promise);\n });\n};\n\nfunction race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null)\n return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n return ret;\n}\n\nPromise.race = function (promises) {\n return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var domain = getDomain();\n this._fn = domain === null ? fn : util.domainBind(domain, fn);\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n initialValue._attachCancellationCallback(this);\n }\n this._initialValue = initialValue;\n this._currentCancellable = null;\n if(_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n this._promise._captureStackTrace();\n this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n if (this._eachValues !== undefined && \n this._eachValues !== null && \n accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n this._resolve(this._eachValues !== undefined ? this._eachValues\n : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n this._promise._resolveCallback(value);\n this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n this._resultCancelled$();\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value\n ._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n}\n\nfunction gotAccum(accum) {\n this.accum = accum;\n this.array._gotAccum(accum);\n var value = tryConvertToPromise(this.value, this.array._promise);\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n}\n\nfunction gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n promise._pushContext();\n var ret;\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(),\n this.accum, value, this.index, this.length);\n }\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n promise\n );\n return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova))) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function() {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function() {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n })();\n} else if (typeof setImmediate !== \"undefined\") {\n schedule = function (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n if (this._howMany === 0) {\n this._resolve([]);\n return;\n }\n this._init$(undefined, -5);\n var isArrayResolved = isArray(this._values);\n if (!this._isResolved() &&\n isArrayResolved &&\n this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n};\n\nSomePromiseArray.prototype.init = function () {\n this._initialized = true;\n this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n return true;\n }\n return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n this._addRejected(CANCELLATION);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n return true;\n }\n return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" +\n this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n}\n\nPromise.some = function (promises, howMany) {\n return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle) {\n this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n if (value !== undefined) {\n ret = Promise.resolve(value)\n ._then(afterValue, null, null, ms, undefined);\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function() { ret._fulfill(); }, +ms);\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n ret._captureStackTrace();\n }\n ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n var err;\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n util.markAsOriginatingFromRejection(err);\n promise._attachExtraTrace(err);\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n};\n\nfunction successClear(value) {\n clearTimeout(this.handle);\n return value;\n}\n\nfunction failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n }\n\n return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n var TypeError = _dereq_(\"./errors\").TypeError;\n var inherits = _dereq_(\"./util\").inherits;\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function(){throw e;}, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n if (maybePromise !== thenable &&\n typeof thenable._isDisposable === \"function\" &&\n typeof thenable._getDisposer === \"function\" &&\n thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n return maybePromise;\n }\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n if (maybePromise instanceof Promise &&\n maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(\n maybePromise._getDisposer().tryDispose(inspection),\n resources.promise);\n } catch (e) {\n return thrower(e);\n }\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower,\n null, null, null);\n }\n }\n iterator();\n }\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function(inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL\n ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n this._promise._unsetDisposable();\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return (d != null &&\n typeof d.resource === \"function\" &&\n typeof d.tryDispose === \"function\");\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n return value.promise();\n }\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length-1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function() {\n var len = this.length;\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\n \"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var input;\n var spreadArgs = true;\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n var resources = new ResourceList(len);\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n if (maybePromise instanceof Promise) {\n resource =\n maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources)\n .then(function(inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n inspections[i] = inspection.value();\n }\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs\n ? fn.apply(undefined, inspections) : fn(inspections);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n\n var promise = resultPromise.lastly(function() {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n promise._setOnCancel(resources);\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & (~131072);\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n throw new TypeError();\n };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n}\n\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function(obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var receiver = new FakeConstructor();\n function ic() {\n return typeof receiver.foo;\n }\n ic();\n ic();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj instanceof Error ||\n (obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\");\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n return Array.from(v);\n } : function(v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if ({}.toString.call(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nfunction domainBind(self, cb) {\n return self.bind(cb);\n}\n\nvar ret = {\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n hasDevTools: typeof chrome !== \"undefined\" && chrome &&\n typeof chrome.loadTimes === \"function\",\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n domainBind: domainBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version = process.versions.node.split(\".\").map(Number);\n return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13}]},{},[4])(4)\n}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-dark.css b/riot/bundles/c2932262ed6106cd4535/theme-dark.css similarity index 88% rename from riot/bundles/f5c70ee9a294f6e4590e/theme-dark.css rename to riot/bundles/c2932262ed6106cd4535/theme-dark.css index 8f04733..043c066 100644 --- a/riot/bundles/f5c70ee9a294f6e4590e/theme-dark.css +++ b/riot/bundles/c2932262ed6106cd4535/theme-dark.css @@ -12,23 +12,19 @@ } /*** ImageView ***/ .mx_filterFlipColor { - -webkit-filter: invert(1); - filter: invert(1); + filter: invert(1); } .gm-scrollbar .thumb { - -webkit-filter: invert(1); - filter: invert(1); + filter: invert(1); } .mx_EventTile_content .markdown-body pre:hover { border-color: #808080 !important; } .mx_EventTile_content .markdown-body pre, .mx_EventTile_content .markdown-body code { - -webkit-filter: invert(1); - filter: invert(1); + filter: invert(1); } .mx_EventTile_content .markdown-body pre code { - -webkit-filter: none; - filter: none; + filter: none; } .mx_EventTile_content .markdown-body table tr { background-color: #000000; @@ -72,7 +68,7 @@ body { /* This should render the fonts the same accross browsers */ -webkit-font-smoothing: subpixel-antialiased; } -div.error, div.warning { +.error, .warning { color: #ff0064; } h2 { @@ -158,17 +154,13 @@ textarea { width: 100%; height: 100%; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; } /* Spinner Dialog overide */ .mx_Dialog_wrapper.mx_Dialog_spinner .mx_Dialog { @@ -189,8 +181,7 @@ textarea { font-weight: 300; font-size: 15px; position: relative; - padding-left: 58px; - padding-bottom: 36px; + padding: 0 58px 36px; width: 60%; max-width: 704px; box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.2); @@ -229,13 +220,12 @@ textarea { pointer-events: none; } .mx_Dialog_content { - margin: 24px 58px 68px 0; + margin: 24px 0 68px; font-size: 14px; color: #dddddd; word-wrap: break-word; } .mx_Dialog_buttons { - padding-right: 58px; text-align: right; } .mx_Dialog button, .mx_Dialog input[type="submit"] { @@ -264,8 +254,7 @@ textarea { .mx_Dialog button:hover, .mx_Dialog input[type="submit"]:hover { } .mx_Dialog button:focus, .mx_Dialog input[type="submit"]:focus { - -webkit-filter: brightness(200%); - filter: brightness(200%); + filter: brightness(200%); } .mx_Dialog button.mx_Dialog_primary, .mx_Dialog input[type="submit"].mx_Dialog_primary { color: #2d2d2d; @@ -281,6 +270,10 @@ textarea { border: solid 1px #747474; opacity: 0.7; } +.mx_linkButton { + cursor: pointer; + color: #76CFA6; +} .mx_Dialog_title { min-height: 16px; padding-top: 40px; @@ -355,8 +348,7 @@ textarea { cursor: help; transition-duration: 200ms; font-size: smaller; - -webkit-filter: opacity(0.5); - filter: opacity(0.5); + filter: opacity(0.5); } .mx_Beta:hover { color: white; @@ -365,16 +357,12 @@ textarea { } .mx_TintableSvgButton { position: relative; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-pack: center; + justify-content: center; -ms-flex-line-pack: center; align-content: center; } @@ -662,15 +650,12 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_FilePanel { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; - -webkit-box-flex: 1; + -ms-flex: 1 1 0px; - -ms-flex: 1 1 0px; - - flex: 1 1 0; + flex: 1 1 0; width: 100%; @@ -696,29 +681,25 @@ limitations under the License. margin-right: 0px; } .mx_FilePanel .mx_EventTile .mx_MFileBody_download { - display: -webkit-box; display: -ms-flexbox; display: flex; font-size: 14px; color: #acacac; } .mx_FilePanel .mx_EventTile .mx_MFileBody_downloadLink { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; color: #747474; } .mx_FilePanel .mx_EventTile .mx_MImageBody_size { - -webkit-box-flex: 1; - -ms-flex: 1 0 0px; - flex: 1 0 0; + -ms-flex: 1 0 0px; + flex: 1 0 0; font-size: 11px; text-align: right; white-space: nowrap; } /* Overides for the sender details line */ .mx_FilePanel .mx_EventTile_senderDetails { - display: -webkit-box; display: -ms-flexbox; display: flex; margin-top: -2px; @@ -727,9 +708,8 @@ limitations under the License. text-decoration: none; } .mx_FilePanel .mx_EventTile .mx_SenderProfile { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; line-height: initial; padding: 0px; font-size: 11px; @@ -737,9 +717,8 @@ limitations under the License. color: #acacac; } .mx_FilePanel .mx_EventTile .mx_MessageTimestamp { - -webkit-box-flex: 1; - -ms-flex: 1 0 0px; - flex: 1 0 0; + -ms-flex: 1 0 0px; + flex: 1 0 0; text-align: right; visibility: visible; position: initial; @@ -778,13 +757,10 @@ limitations under the License. width: 100%; margin-left: auto; margin-right: auto; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; overflow: hidden; } .mx_GroupView_error { @@ -793,10 +769,8 @@ limitations under the License. .mx_GroupView_header { max-width: 960px; min-height: 70px; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; + -ms-flex-align: center; + align-items: center; display: -ms-flexbox; display: flex; padding-bottom: 10px; @@ -843,19 +817,16 @@ limitations under the License. height: 48px ! important; } .mx_GroupView_header_leftCol { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; overflow: hidden; } .mx_GroupView_header_rightCol { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .mx_GroupView_textButton { display: inline-block; @@ -912,21 +883,16 @@ limitations under the License. line-height: 2em; } .mx_GroupView_body { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; } .mx_GroupView_rooms { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - display: -webkit-box; + -ms-flex-positive: 1; + flex-grow: 1; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; min-height: 200px; -webkit-user-select: none; -moz-user-select: none; @@ -966,34 +932,29 @@ limitations under the License. color: #76CFA6; } .mx_GroupView_rooms .mx_RoomDetailList { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; border-top: 1px solid #474747; padding-top: 10px; word-break: break-word; } .mx_GroupView .mx_RoomView_messageListWrapper { - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; } .mx_GroupView_membershipSection { color: #888; margin-top: 10px; } .mx_GroupView_membershipSubSection { - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - display: -webkit-box; + -ms-flex-pack: justify; + justify-content: space-between; display: -ms-flexbox; display: flex; } .mx_GroupView_membershipSubSection .mx_Spinner { - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; + -ms-flex-pack: end; + justify-content: flex-end; } .mx_GroupView_membershipSection_description { /* To match textButton */ @@ -1031,7 +992,6 @@ limitations under the License. margin-top: 10px; } .mx_GroupView_featuredThings_container { - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -1119,7 +1079,6 @@ limitations under the License. .mx_HomePage_body { } .mx_HomePage_guest_warning { - display: -webkit-box; display: -ms-flexbox; display: flex; background-color: #2d2d2d; @@ -1150,42 +1109,33 @@ limitations under the License. .mx_LeftPanel { position: relative; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .mx_LeftPanel_container { - display: -webkit-box; display: -ms-flexbox; display: flex; /* LeftPanel 235px */ - -webkit-box-flex: 0; - -ms-flex: 0 0 235px; - flex: 0 0 235px; + -ms-flex: 0 0 235px; + flex: 0 0 235px; } .mx_LeftPanel_container.mx_LeftPanel_container_hasTagPanel { /* TagPanel 60px + LeftPanel 235px */ - -webkit-box-flex: 0; - -ms-flex: 0 0 295px; - flex: 0 0 295px; + -ms-flex: 0 0 295px; + flex: 0 0 295px; } .mx_LeftPanel_container_collapsed { /* Collapsed LeftPanel 60px */ - -webkit-box-flex: 0; - -ms-flex: 0 0 60px; - flex: 0 0 60px; + -ms-flex: 0 0 60px; + flex: 0 0 60px; } .mx_LeftPanel_container_collapsed.mx_LeftPanel_container_hasTagPanel { /* TagPanel 60px + Collapsed LeftPanel 60px */ - -webkit-box-flex: 0; - -ms-flex: 0 0 120px; - flex: 0 0 120px; + -ms-flex: 0 0 120px; + flex: 0 0 120px; } .mx_LeftPanel_hideButton { position: absolute; @@ -1201,36 +1151,30 @@ limitations under the License. height: 132px; } .mx_LeftPanel .mx_RoomList_scrollbar { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; + -ms-flex-order: 1; + order: 1; - -webkit-box-flex: 1; + -ms-flex: 1 1 0px; - -ms-flex: 1 1 0px; - - flex: 1 1 0; + flex: 1 1 0; overflow-y: auto; z-index: 6; } .mx_LeftPanel.collapsed .mx_BottomLeftMenu { - -webkit-box-flex: 0; - -ms-flex: 0 0 160px; - flex: 0 0 160px; + -ms-flex: 0 0 160px; + flex: 0 0 160px; margin-bottom: 9px; } .mx_LeftPanel .mx_BottomLeftMenu { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; + -ms-flex-order: 3; + order: 3; border-top: 1px solid rgba(118, 207, 166, 0.2); margin-left: 16px; /* gutter */ margin-right: 16px; /* gutter */ - -webkit-box-flex: 0; - -ms-flex: 0 0 60px; - flex: 0 0 60px; + -ms-flex: 0 0 60px; + flex: 0 0 60px; z-index: 1; } .mx_LeftPanel .mx_BottomLeftMenu_options { @@ -1262,14 +1206,12 @@ limitations under the License. float: none; } .mx_MatrixChat_useCompactLayout .mx_LeftPanel .mx_BottomLeftMenu { - -webkit-box-flex: 0; - -ms-flex: 0 0 50px; - flex: 0 0 50px; + -ms-flex: 0 0 50px; + flex: 0 0 50px; } .mx_MatrixChat_useCompactLayout .mx_LeftPanel.collapsed .mx_BottomLeftMenu { - -webkit-box-flex: 0; - -ms-flex: 0 0 160px; - flex: 0 0 160px; + -ms-flex: 0 0 160px; + flex: 0 0 160px; } .mx_MatrixChat_useCompactLayout .mx_LeftPanel .mx_BottomLeftMenu_options { margin-top: 12px; @@ -1294,9 +1236,8 @@ limitations under the License. height: unset !important; padding-top: 13px !important; padding-bottom: 14px !important; - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4; + -ms-flex-order: 4; + order: 4; } .mx_LoginBox_loginButton_wrapper { text-align: center; @@ -1346,25 +1287,19 @@ limitations under the License. bottom: 30px; } .mx_MatrixChat_wrapper { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - - -webkit-box-direction: normal; - - -ms-flex-direction: column; + -ms-flex-direction: column; - flex-direction: column; + flex-direction: column; width: 100%; height: 100%; } .mx_MatrixToolbar { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; + -ms-flex-order: 1; + order: 1; height: 40px; } @@ -1375,23 +1310,17 @@ limitations under the License. width: 100%; height: 100%; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-ordinal-group: 3; - - -ms-flex-order: 2; - - order: 2; + -ms-flex-order: 2; - -webkit-box-flex: 1; + order: 2; - -ms-flex: 1; + -ms-flex: 1; - flex: 1; + flex: 1; } .mx_MatrixChat_syncError { color: #2d2d2d; @@ -1402,41 +1331,33 @@ limitations under the License. position: absolute; top: 100px; left: 50%; - -webkit-transform: translateX(-50%); - transform: translateX(-50%); + transform: translateX(-50%); } .mx_MatrixChat .mx_LeftPanel { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; + -ms-flex-order: 1; + order: 1; background-color: #2d2d2d; - -webkit-box-flex: 0; + -ms-flex: 0 0 235px; - -ms-flex: 0 0 235px; - - flex: 0 0 235px; + flex: 0 0 235px; } .mx_MatrixChat .mx_LeftPanel.collapsed { - -webkit-box-flex: 0; - -ms-flex: 0 0 60px; - flex: 0 0 60px; + -ms-flex: 0 0 60px; + flex: 0 0 60px; } .mx_MatrixChat .mx_MatrixChat_middlePanel { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; padding-left: 20px; padding-right: 22px; background-color: #2d2d2d; - -webkit-box-flex: 1; - - -ms-flex: 1; + -ms-flex: 1; - flex: 1; + flex: 1; /* Experimental fix for https://github.com/vector-im/vector-web/issues/947 and https://github.com/vector-im/vector-web/issues/946. @@ -1445,8 +1366,6 @@ limitations under the License. */ overflow-x: auto; - display: -webkit-box; - display: -ms-flexbox; display: flex; @@ -1458,20 +1377,16 @@ limitations under the License. height: 100%; } .mx_MatrixChat .mx_RightPanel { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; - - -webkit-box-flex: 0; + -ms-flex-order: 3; + order: 3; - -ms-flex: 0 0 235px; + -ms-flex: 0 0 235px; - flex: 0 0 235px; + flex: 0 0 235px; } .mx_MatrixChat .mx_RightPanel.collapsed { - -webkit-box-flex: 0; - -ms-flex: 0 0 122px; - flex: 0 0 122px; + -ms-flex: 0 0 122px; + flex: 0 0 122px; } /* Copyright 2017 Vector Creations Ltd @@ -1493,15 +1408,11 @@ limitations under the License. margin-left: auto; margin-right: auto; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .mx_MyGroups .mx_RoomHeader_simpleHeader { margin-left: 0px; @@ -1509,24 +1420,20 @@ limitations under the License. .mx_MyGroups_header { /* Keep mid-point of create button aligned with icon in page header */ margin-left: 2px; - display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; } .mx_MyGroups_headerCard { - -webkit-box-flex: 1; - -ms-flex: 1 0 50%; - flex: 1 0 50%; + -ms-flex: 1 0 50%; + flex: 1 0 50%; margin-bottom: 30px; min-width: 400px; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .mx_MyGroups_headerCard .mx_MyGroups_headerCard_button { margin-right: 13px; @@ -1557,21 +1464,15 @@ limitations under the License. .mx_MyGroups_content { margin-left: 2px; - -webkit-box-flex: 1; + -ms-flex: 1 0 0px; - -ms-flex: 1 0 0px; - - flex: 1 0 0; - - display: -webkit-box; + flex: 1 0 0; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .mx_MyGroups_placeholder { background-color: #454545; @@ -1584,15 +1485,11 @@ limitations under the License. border-top: 1px solid #474747; overflow-x: hidden; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; -ms-flex-flow: wrap; flex-flow: wrap; -ms-flex-line-pack: start; @@ -1601,35 +1498,27 @@ limitations under the License. .mx_MyGroups_joinedGroups .mx_GroupTile { min-width: 300px; max-width: 33%; - -webkit-box-flex: 1; - -ms-flex: 1 0 300px; - flex: 1 0 300px; + -ms-flex: 1 0 300px; + flex: 1 0 300px; height: 75px; margin: 10px 0px; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; cursor: pointer; } .mx_GroupTile_avatar { - cursor: -webkit-grab, -webkit-grab; cursor: grab, -webkit-grab; } .mx_GroupTile_profile { margin-left: 10px; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; } .mx_GroupTile_profile .mx_GroupTile_name, .mx_GroupTile_profile .mx_GroupTile_groupId, .mx_GroupTile_profile .mx_GroupTile_desc { padding-right: 10px; @@ -1644,7 +1533,6 @@ limitations under the License. .mx_GroupTile_profile .mx_GroupTile_desc { display: -webkit-box; -webkit-line-clamp: 2; - -webkit-box-orient: vertical; font-size: 13px; max-height: 36px; overflow: hidden; @@ -1668,15 +1556,12 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_NotificationPanel { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - - -webkit-box-flex: 1; + -ms-flex-order: 2; + order: 2; - -ms-flex: 1 1 0px; + -ms-flex: 1 1 0px; - flex: 1 1 0; + flex: 1 1 0; width: 100%; @@ -1758,34 +1643,26 @@ limitations under the License. .mx_RightPanel { position: relative; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .mx_RightPanel_header { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; + -ms-flex-order: 1; + order: 1; border-bottom: 1px solid #474747; margin-right: 20px; - -webkit-box-flex: 0; - - -ms-flex: 0 0 70px; + -ms-flex: 0 0 70px; - flex: 0 0 70px; + flex: 0 0 70px; } /** Fixme - factor this out with the main header **/ .mx_RightPanel_headerButtonGroup { margin-top: 6px; - display: -webkit-box; display: -ms-flexbox; display: flex; width: 100%; @@ -1794,9 +1671,8 @@ limitations under the License. } .mx_RightPanel_headerButton { cursor: pointer; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; vertical-align: top; padding-left: 4px; padding-right: 5px; @@ -1807,6 +1683,9 @@ limitations under the License. pointer-events: none; padding-bottom: 3px; } +.mx_RightPanel_headerButton_badgeHighlight .mx_RightPanel_headerButton_badge { + color: #ff0064; +} .mx_RightPanel_headerButton_highlight { width: 25px; height: 5px; @@ -1821,39 +1700,32 @@ limitations under the License. padding-bottom: 2px; } .mx_RightPanel_collapsebutton { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; text-align: right; margin-top: 20px; } .mx_RightPanel .mx_MemberList, .mx_RightPanel .mx_MemberInfo, .mx_RightPanel .mx_GroupRoomList, .mx_RightPanel_blank { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; + -ms-flex-order: 2; + order: 2; + -ms-flex: 1 1 0px; + flex: 1 1 0; } .mx_RightPanel .mx_RoomView_messagePanelSpinner { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; margin: auto; } .mx_RightPanel_footer { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; + -ms-flex-order: 3; + order: 3; border-top: 1px solid #474747; margin-right: 20px; - -webkit-box-flex: 0; - - -ms-flex: 0 0 60px; + -ms-flex: 0 0 60px; - flex: 0 0 60px; + flex: 0 0 60px; } .mx_RightPanel_footer .mx_RightPanel_invite { font-size: 14px; @@ -1861,12 +1733,10 @@ limitations under the License. padding-top: 13px; padding-left: 5px; cursor: pointer; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .collapsed .mx_RightPanel_footer .mx_RightPanel_invite { display: none; @@ -1879,9 +1749,8 @@ limitations under the License. line-height: 18px; } .mx_MatrixChat_useCompactLayout .mx_RightPanel_footer { - -webkit-box-flex: 0; - -ms-flex: 0 0 50px; - flex: 0 0 50px; + -ms-flex: 0 0 50px; + flex: 0 0 50px; } .mx_MatrixChat_useCompactLayout .mx_RightPanel_footer .mx_RightPanel_invite { line-height: 25px; @@ -1911,46 +1780,32 @@ limitations under the License. color: #dddddd; word-break: break-word; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - - -webkit-box-direction: normal; - - -ms-flex-direction: column; + -ms-flex-direction: column; - flex-direction: column; + flex-direction: column; } .mx_RoomDirectory .mx_RoomHeader_simpleHeader { margin-left: 0px; } .mx_RoomDirectory_list { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - - display: -webkit-box; + -ms-flex: 1; + flex: 1; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - - -webkit-box-direction: normal; + -ms-flex-direction: column; - -ms-flex-direction: column; - - flex-direction: column; + flex-direction: column; } .mx_RoomDirectory_list .mx_RoomView_messageListWrapper { - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; } .mx_RoomDirectory_listheader { display: table; @@ -1970,9 +1825,8 @@ limitations under the License. } .mx_RoomDirectory_tableWrapper { overflow-y: auto; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; + -ms-flex: 1 1 0px; + flex: 1 1 0; } .mx_RoomDirectory_table { font-size: 14px; @@ -2072,27 +1926,13 @@ limitations under the License. */ } .mx_RoomStatusBar_placeholderIndicator span:nth-child(1) { - -webkit-animation-delay: 0.3s; - animation-delay: 0.3s; + animation-delay: 0.3s; } .mx_RoomStatusBar_placeholderIndicator span:nth-child(2) { - -webkit-animation-delay: 0.6s; - animation-delay: 0.6s; + animation-delay: 0.6s; } .mx_RoomStatusBar_placeholderIndicator span:nth-child(3) { - -webkit-animation-delay: 0.9s; - animation-delay: 0.9s; -} -@-webkit-keyframes bounce { - from { - opacity: 0.5; - top: 0; - } - - to { - opacity: 0.2; - top: -3px; - } + animation-delay: 0.9s; } @keyframes bounce { from { @@ -2142,7 +1982,6 @@ limitations under the License. cursor: pointer; } .mx_RoomStatusBar_connectionLostBar { - display: -webkit-box; display: -ms-flexbox; display: flex; @@ -2285,8 +2124,7 @@ limitations under the License. background-color: #76CFA6; } .mx_RoomSubList_label .mx_RoomSubList_badge:hover { - -webkit-filter: brightness(200%); - filter: brightness(200%); + filter: brightness(200%); } /* .collapsed .mx_RoomSubList_badge { @@ -2438,31 +2276,22 @@ limitations under the License. word-wrap: break-word; position: relative; - display: -webkit-box; - display: -ms-flexbox; display: flex; width: 100%; - -webkit-box-orient: vertical; - - -webkit-box-direction: normal; + -ms-flex-direction: column; - -ms-flex-direction: column; - - flex-direction: column; + flex-direction: column; } .mx_RoomView .mx_RoomHeader { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - - -webkit-box-flex: 0; + -ms-flex-order: 1; + order: 1; - -ms-flex: 0 0 70px; + -ms-flex: 0 0 70px; - flex: 0 0 70px; + flex: 0 0 70px; } .mx_RoomView_fileDropTarget { min-width: 0px; @@ -2495,9 +2324,8 @@ limitations under the License. position: absolute; } .mx_RoomView_auxPanel { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; min-width: 0px; max-width: 960px; @@ -2507,55 +2335,43 @@ limitations under the License. overflow: auto; border-bottom: 1px solid #474747; - -webkit-box-flex: 0; + -ms-flex: 0 0 auto; - -ms-flex: 0 0 auto; - - flex: 0 0 auto; + flex: 0 0 auto; } .mx_RoomView_auxPanel_apps { max-width: 1920px ! important; } .mx_RoomView_body { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - display: -webkit-box; + -ms-flex-order: 3; + order: 3; + -ms-flex: 1 1 0px; + flex: 1 1 0; + -ms-flex-direction: column; + flex-direction: column; display: -ms-flexbox; display: flex; } .mx_RoomView_body .mx_RoomView_topUnreadMessagesBar { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; + -ms-flex-order: 1; + order: 1; } .mx_RoomView_body .mx_RoomView_messagePanel { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; } .mx_RoomView_body .mx_RoomView_messagePanelSpinner { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; margin: auto; } .mx_RoomView_body .mx_RoomView_statusArea { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; + -ms-flex-order: 3; + order: 3; } .mx_RoomView_body .mx_MessageComposer { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4; + -ms-flex-order: 4; + order: 4; } .mx_RoomView_messagePanel { width: 100%; @@ -2567,35 +2383,25 @@ limitations under the License. min-height: 100%; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - - -webkit-box-direction: normal; + -ms-flex-direction: column; - -ms-flex-direction: column; + flex-direction: column; - flex-direction: column; + -ms-flex-pack: end; - -webkit-box-pack: end; - - -ms-flex-pack: end; - - justify-content: flex-end; + justify-content: flex-end; } .mx_RoomView_searchResultsPanel .mx_RoomView_messageListWrapper { - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; } .mx_RoomView_empty { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; font-size: 13px; padding-left: 3em; padding-right: 3em; @@ -2627,9 +2433,8 @@ hr.mx_RoomView_myReadMarker { } .mx_RoomView_statusArea { width: 100%; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; max-height: 0px; background-color: #2d2d2d; @@ -2688,9 +2493,8 @@ hr.mx_RoomView_myReadMarker { } .mx_RoomView .mx_MessageComposer { width: 100%; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; margin-right: 2px; } .mx_RoomView_ongoingConfCallNotification { @@ -2735,8 +2539,6 @@ limitations under the License. border-bottom: 1px solid rgba(118, 207, 166, 0.2); - display: -webkit-box; - display: -ms-flexbox; display: flex; @@ -2751,9 +2553,8 @@ limitations under the License. margin-top: -5px; } .mx_SearchBox_search { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; width: 0px; font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; font-size: 12px; @@ -2792,26 +2593,19 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_TagPanel { - -webkit-box-flex: 0; - -ms-flex: 0 0 60px; - flex: 0 0 60px; + -ms-flex: 0 0 60px; + flex: 0 0 60px; background-color: #454545; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between; } .mx_TagPanel_items_selected { cursor: pointer; @@ -2821,23 +2615,17 @@ limitations under the License. height: 70px; width: 60px; - -webkit-box-flex: 0; - - -ms-flex: none; + -ms-flex: none; - flex: none; - - display: -webkit-box; + flex: none; display: -ms-flexbox; display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-align: start; + align-items: flex-start; } .mx_TagPanel .mx_TagPanel_clearButton object { /* Same as .mx_SearchBox padding-top */ @@ -2850,21 +2638,16 @@ limitations under the License. border-bottom: 1px solid rgba(118, 207, 166, 0.2); } .mx_TagPanel .mx_TagPanel_scroller { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; } .mx_TagPanel .mx_TagPanel_tagTileContainer { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: center; + align-items: center; height: 100%; } @@ -2891,8 +2674,7 @@ limitations under the License. width: 35px; } .mx_TagPanel .mx_TagTile.mx_AccessibleButton:focus { - -webkit-filter: none; - filter: none; + filter: none; } .mx_TagTile_tooltip { position: relative; @@ -2999,37 +2781,27 @@ limitations under the License. margin-left: auto; margin-right: auto; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .mx_UserSettings .mx_RoomHeader { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - - -webkit-box-flex: 0; + -ms-flex-order: 1; + order: 1; - -ms-flex: 0 0 70px; + -ms-flex: 0 0 70px; - flex: 0 0 70px; + flex: 0 0 70px; } .mx_UserSettings_body { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; - -webkit-box-flex: 1; + -ms-flex: 1 1 0px; - -ms-flex: 1 1 0px; - - flex: 1 1 0; + flex: 1 1 0; margin-top: -20px; overflow-y: auto; @@ -3265,17 +3037,13 @@ limitations under the License. width: 100%; height: 100%; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; overflow: auto; } @@ -3388,6 +3156,15 @@ limitations under the License. .mx_Login_forgot:link { color: #dddddd; } +.mx_Login_sso_link { + display: block; + text-align: center; + font-size: 15px; + margin-bottom: 20px; +} +.mx_Login_sso_link:link { + color: #dddddd; +} .mx_Login_loader { display: inline; position: relative; @@ -3412,15 +3189,13 @@ limitations under the License. margin-bottom: 12px; } .mx_Login_type_container { - display: -webkit-box; display: -ms-flexbox; display: flex; margin-bottom: 14px; } .mx_Login_type_label { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; line-height: 35px; } .mx_Login_type_dropdown { @@ -3428,12 +3203,10 @@ limitations under the License. min-width: 170px; -ms-flex-item-align: end; align-self: flex-end; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; } .mx_Login_field_group { - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -3460,9 +3233,8 @@ limitations under the License. border-radius: 0px 3px 3px 0px; text-align: center; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; } .mx_Login_username { height: 16px; @@ -3482,7 +3254,6 @@ limitations under the License. border-bottom-right-radius: 0px; } .mx_Login_phoneSection { - display:-webkit-box; display:-ms-flexbox; display:flex; } @@ -3517,7 +3288,6 @@ limitations under the License. min-width: 60%; } .mx_Login_language_div { - display: -webkit-box; display: -ms-flexbox; display: flex; margin-top: 12px; @@ -3556,6 +3326,25 @@ limitations under the License. background-color: #ffffff; } /* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MemberStatusMessageAvatar_hasStatus { + border: 2px solid #76CFA6; + border-radius: 40px; +} +/* Copyright 2015, 2016 OpenMarket Ltd Licensed under the Apache License, Version 2.0 (the "License"); @@ -3599,12 +3388,10 @@ limitations under the License. padding-bottom: 8px; cursor: pointer; white-space: nowrap; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; line-height: 16px; } .mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldSet { @@ -3657,12 +3444,10 @@ limitations under the License. padding-left: 8px; /* 20px */ cursor: pointer; white-space: nowrap; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .mx_RoomTileContextMenu_notif_field.mx_RoomTileContextMenu_notif_fieldSet { font-weight: bold; @@ -3686,6 +3471,53 @@ limitations under the License. /* Copyright 2018 New Vector Ltd +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_StatusMessageContextMenu_message { + display: inline-block; + border-radius: 3px 0 0 3px; + border: 1px solid #3a3a3a; + font-size: 13px; + padding: 7px 7px 7px 9px; + width: 135px; + background-color: #2d2d2d !important; +} +.mx_StatusMessageContextMenu_submit { + display: inline-block; +} +.mx_StatusMessageContextMenu_submitFaded { + opacity: 0.5; +} +.mx_StatusMessageContextMenu_submit img { + vertical-align: middle; + margin-left: 8px; +} +.mx_StatusMessageContextMenu hr { + border: 0.5px solid rgba(187, 187, 187, 0.5); +} +.mx_StatusMessageContextMenu_clearIcon { + margin: 5px 15px 5px 5px; + vertical-align: middle; +} +.mx_StatusMessageContextMenu_clear { + padding: 2px; +} +.mx_StatusMessageContextMenu_hasStatus .mx_StatusMessageContextMenu_clear { + color: #ff0064; +} +/* +Copyright 2018 New Vector Ltd + Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at @@ -3704,14 +3536,15 @@ limitations under the License. padding-bottom: 8px; cursor: pointer; white-space: nowrap; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; line-height: 16px; } +.mx_TagTileContextMenu_item object { + pointer-events: none; +} .mx_TagTileContextMenu_item_icon { padding-right: 8px; padding-left: 4px; @@ -3743,7 +3576,6 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_BugReportDialog_field_container { - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -3759,9 +3591,8 @@ limitations under the License. line-height: 18px; } .mx_BugReportDialog_field_input { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; /* taken from mx_ChatInviteDialog_inputContainer */ border-radius: 3px; @@ -3833,7 +3664,6 @@ limitations under the License. display: none; } .mx_ChatCreateOrReuseDialog_profile { - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -3984,7 +3814,6 @@ limitations under the License. border-radius: 0px; } .mx_CreateGroupDialog_input_group { - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -4074,9 +3903,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -.mx_DevTools_dialog { - padding-right: 58px; -} .mx_DevTools_content { margin: 10px 0; } @@ -4170,8 +3996,7 @@ limitations under the License. padding: 2px; transition: all .2s ease; font-family: sans-serif; - -webkit-perspective: 100px; - perspective: 100px; + perspective: 100px; } .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:after, .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:before { display: inline-block; @@ -4191,30 +4016,25 @@ limitations under the License. .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:after { content: attr(data-tg-on); background: #02C66F; - -webkit-transform: rotateY(-180deg); - transform: rotateY(-180deg); + transform: rotateY(-180deg); } .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:before { background: #FF3A19; content: attr(data-tg-off); } .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:active:before { - -webkit-transform: rotateY(-20deg); - transform: rotateY(-20deg); + transform: rotateY(-20deg); } .mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:before { - -webkit-transform: rotateY(180deg); - transform: rotateY(180deg); + transform: rotateY(180deg); } .mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:after { - -webkit-transform: rotateY(0); - transform: rotateY(0); + transform: rotateY(0); left: 0; background: #7FC6A6; } .mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:active:after { - -webkit-transform: rotateY(20deg); - transform: rotateY(20deg); + transform: rotateY(20deg); } /* Copyright 2016 OpenMarket Ltd @@ -4255,6 +4075,9 @@ limitations under the License. background-color: #2d2d2d; color: #76CFA6; } +.mx_EncryptedEventDialog button { + margin-top: 0px; +} /* Copyright 2017 New Vector Ltd @@ -4272,7 +4095,6 @@ limitations under the License. */ .mx_GroupAddressPicker_checkboxContainer{ margin-top: 10px; - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -4283,6 +4105,24 @@ limitations under the License. /* Copyright 2018 New Vector Ltd +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RestoreKeyBackupDialog_keyStatus { + height: 30px; +} +/* +Copyright 2018 New Vector Ltd + Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at @@ -4351,7 +4191,6 @@ limitations under the License. padding-right: 40px; } .mx_SetMxIdDialog_input_group { - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -4371,9 +4210,8 @@ limitations under the License. .mx_SetMxIdDialog_input_group .mx_Spinner { height: 37px; padding-left: 10px; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; } .mx_SetMxIdDialog .success { color: #76CFA6; @@ -4425,9 +4263,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -.mx_ShareDialog { - padding-right: 58px; -} .mx_ShareDialog hr { margin-top: 25px; margin-bottom: 25px; @@ -4437,12 +4272,10 @@ limitations under the License. margin: 10px 0; } .mx_ShareDialog_matrixto { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; border-radius: 5px; border: solid 1px #747474; margin-bottom: 10px; @@ -4472,7 +4305,6 @@ limitations under the License. height: 20px; } .mx_ShareDialog_split { - display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; @@ -4514,17 +4346,13 @@ limitations under the License. */ .mx_Dialog_unknownDevice .mx_Dialog { height: 100%; - padding-right: 58px; } .mx_UnknownDeviceDialog { height: 100%; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .mx_UnknownDeviceDialog .mx_Dialog_content { margin-bottom: 24px; @@ -4561,6 +4389,147 @@ limitations under the License. border-bottom: 1px solid #474747; } /* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_CreateKeyBackupDialog { + padding-right: 40px; +} +.mx_CreateKeyBackupDialog_primaryContainer { + /*FIXME: plinth colour in new theme(s). background-color: $accent-color;*/ + padding: 20px +} +.mx_CreateKeyBackupDialog_primaryContainer::after { + content: ""; + clear: both; + display: block; +} +.mx_CreateKeyBackupDialog_passPhraseContainer { + display: -ms-flexbox; + display: flex; + -ms-flex-align: start; + align-items: start; +} +.mx_CreateKeyBackupDialog_passPhraseHelp { + -ms-flex: 1; + flex: 1; + height: 85px; + margin-left: 20px; + font-size: 80%; +} +.mx_CreateKeyBackupDialog_passPhraseHelp progress { + width: 100%; +} +.mx_CreateKeyBackupDialog_passPhraseInput { + -ms-flex: none; + flex: none; + width: 250px; + border: 1px solid #76CFA6; + border-radius: 5px; + padding: 10px; + margin-bottom: 1em; +} +.mx_CreateKeyBackupDialog_passPhraseMatch { + margin-left: 20px; +} +.mx_CreateKeyBackupDialog_recoveryKeyHeader { + margin-bottom: 1em; +} +.mx_CreateKeyBackupDialog_recoveryKeyContainer { + display: -ms-flexbox; + display: flex; +} +.mx_CreateKeyBackupDialog_recoveryKey { + width: 262px; + padding: 20px; + color: #888; + background-color: #454545; + margin-right: 12px; +} +.mx_CreateKeyBackupDialog_recoveryKeyButtons { + -ms-flex: 1; + flex: 1; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; +} +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_NewRecoveryMethodDialog .mx_Dialog_title { + margin-bottom: 32px; +} +.mx_NewRecoveryMethodDialog_title { + position: relative; + padding-left: 45px; + padding-bottom: 10px; +} +.mx_NewRecoveryMethodDialog_title:before { + -webkit-mask: url("../../../img/e2e/lock-warning.svg"); + mask: url("../../../img/e2e/lock-warning.svg"); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background-color: #dddddd; + content: ""; + position: absolute; + top: -6px; + right: 0; + bottom: 0; + left: 0; + } +.mx_NewRecoveryMethodDialog .mx_Dialog_buttons { + margin-top: 36px; +} +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RestoreKeyBackupDialog_primaryContainer { + /*FIXME: plinth colour in new theme(s). background-color: $accent-color;*/ + padding: 20px +} +.mx_RestoreKeyBackupDialog_passPhraseInput, .mx_RestoreKeyBackupDialog_recoveryKeyInput { + width: 300px; + border: 1px solid #76CFA6; + border-radius: 5px; + padding: 10px; +} +/* Copyright 2015, 2016 OpenMarket Ltd Licensed under the Apache License, Version 2.0 (the "License"); @@ -4654,8 +4623,7 @@ limitations under the License. */ .mx_AccessibleButton:focus { outline: 0; - -webkit-filter: brightness(200%); - filter: brightness(200%); + filter: brightness(200%); } .mx_AccessibleButton { cursor: pointer; @@ -4842,16 +4810,14 @@ limitations under the License. border: 1px solid #656565; } .mx_DirectorySearchBox_container { - display: -webkit-box; display: -ms-flexbox; display: flex; padding-left: 9px; padding-right: 9px; } .mx_DirectorySearchBox_input { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; border: 0; padding: 0; font-weight: 300; @@ -4929,8 +4895,7 @@ limitations under the License. } /* Disable dropdown highlight on focus */ .mx_Dropdown_input.mx_AccessibleButton:focus { - -webkit-filter: none; - filter: none; + filter: none; } .mx_Dropdown_arrow { border-color: #dddddd transparent transparent; @@ -5025,7 +4990,6 @@ limitations under the License. margin-bottom: 0px; } .mx_EditableItem { - display: -webkit-box; display: -ms-flexbox; display: flex; margin-left: 56px; @@ -5078,43 +5042,34 @@ limitations under the License. But empirically it works on Chrome/FF/Safari */ .mx_ImageView { - display: -webkit-box; display: -ms-flexbox; display: flex; width: 100%; height: 100%; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .mx_ImageView_lhs { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - -webkit-box-flex: 1; - -ms-flex: 1 1 10%; - flex: 1 1 10%; + -ms-flex-order: 1; + order: 1; + -ms-flex: 1 1 10%; + flex: 1 1 10%; min-width: 60px; } .mx_ImageView_content { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; /* min-width hack needed for FF */ min-width: 0px; height: 90%; - -webkit-box-flex: 15; - -ms-flex: 15 15 0px; - flex: 15 15 0; - display: -webkit-box; + -ms-flex: 15 15 0px; + flex: 15 15 0; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; } .mx_ImageView_content img { max-width: 100%; @@ -5136,16 +5091,12 @@ limitations under the License. } .mx_ImageView_label { text-align: left; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-direction: column; + flex-direction: column; padding-left: 30px; padding-right: 30px; min-height: 100%; @@ -5195,12 +5146,10 @@ limitations under the License. height: 30px; } .mx_ImageView_rhs { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; - -webkit-box-flex: 1; - -ms-flex: 1 1 10%; - flex: 1 1 10%; + -ms-flex-order: 3; + order: 3; + -ms-flex: 1 1 10%; + flex: 1 1 10%; min-width: 300px; } /* @@ -5245,7 +5194,6 @@ limitations under the License. } .mx_TextualEvent.mx_MemberEventListSummary_summary { font-size: 14px; - display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; } @@ -5404,7 +5352,7 @@ blockquote.mx_ReplyThread { text-decoration: line-through; } /* -Copyright 2107 Vector Creations Ltd +Copyright 2017 Vector Creations Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -5449,20 +5397,16 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_Spinner { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; width: 100%; height: 100%; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; } .mx_MatrixChat_middlePanel .mx_Spinner { height: auto; @@ -5552,14 +5496,11 @@ limitations under the License. background-color: #76CFA6; color: #2d2d2d; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .mx_MatrixToolbar_warning { margin-left: 16px; @@ -5577,9 +5518,8 @@ limitations under the License. background-color: #DF2A8B; } .mx_MatrixToolbar_content { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; } .mx_MatrixToolbar_link { @@ -5620,21 +5560,17 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_GroupPublicity_toggle { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; margin: 8px; } .mx_GroupPublicity_toggle > label { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; } .mx_GroupPublicity_toggle > label, .mx_GroupPublicity_toggle .mx_GroupTile { width: 50%; @@ -5644,12 +5580,10 @@ limitations under the License. vertical-align: -4px; } .mx_GroupPublicity_toggle .mx_GroupTile { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; cursor: pointer; } /* @@ -5726,10 +5660,23 @@ limitations under the License. margin-top: 4px; margin-bottom: 5px; } +.mx_InteractiveAuthEntryComponents_termsSubmit { + margin-top: 20px; + margin-bottom: 5px; + display: block; + width: 100%; +} .mx_InteractiveAuthEntryComponents_msisdnSubmit:disabled { background-color: #747474; cursor: default; } +.mx_InteractiveAuthEntryComponents_termsSubmit:disabled { + background-color: #76CFA67F; + cursor: default; +} +.mx_InteractiveAuthEntryComponents_termsPolicy { + display: block; +} /* Copyright 2015, 2016 OpenMarket Ltd @@ -5918,8 +5865,17 @@ limitations under the License. top: 50%; } .mx_MImageBody_thumbnail_spinner > * { - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} +.mx_MImageBody_gifLabel { + position: absolute; + display: block; + top: 0px; + left: 14px; + padding: 5px; + border-radius: 5px; + background: rgba(1, 1, 1, 0.7); + border: 2px solid rgba(1, 1, 1, 0.2); } /* Copyright 2015, 2016 OpenMarket Ltd @@ -6092,24 +6048,18 @@ limitations under the License. display: none; } .mx_AppsContainer { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; } .mx_AddWidget_button { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; cursor: pointer; padding-right: 12px; padding: 0; @@ -6167,46 +6117,33 @@ limitations under the License. border-bottom: 1px solid #474747; font-size: 10px; background-color: #454545; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between; cursor: pointer; } .mx_AppTileMenuBarTitle { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-align: center; + align-items: center; pointer-events: none; } .mx_AppTileMenuBarWidgets { float: right; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-align: center; + align-items: center; } .mx_AppTileMenuBarWidget { cursor: pointer; @@ -6217,8 +6154,7 @@ limitations under the License. border: 1px solid transparent; } .mx_AppTileMenuBarWidgetDelete { - -webkit-filter: none; - filter: none; + filter: none; } .mx_AppTileMenuBarWidget:hover { border: 1px solid #dddddd; @@ -6297,15 +6233,12 @@ limitations under the License. background-color: white; border-radius: 3px 3px 0 0; height: 155px; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-align: center; + align-items: center; } form.mx_Custom_Widget_Form div { margin-top: 10px; @@ -6314,20 +6247,15 @@ form.mx_Custom_Widget_Form div { .mx_AppPermissionWarning { text-align: center; background-color: #2d2d2d; - display: -webkit-box; display: -ms-flexbox; display: flex; height: 100%; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-align: center; + align-items: center; } .mx_AppPermissionWarningImage { margin: 10px 0; @@ -6358,19 +6286,14 @@ form.mx_Custom_Widget_Form div { cursor: pointer; } .mx_AppLoading { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-align: center; + align-items: center; font-weight: bold; position: relative; height: 280px; @@ -6383,18 +6306,10 @@ form.mx_Custom_Widget_Form div { right: 0; } .mx_AppLoading_spinner_fadeIn { - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; - -webkit-animation-duration: 200ms; - animation-duration: 200ms; - -webkit-animation-delay: 500ms; - animation-delay: 500ms; - -webkit-animation-name: mx_AppLoading_spinner_fadeIn_animation; - animation-name: mx_AppLoading_spinner_fadeIn_animation; -} -@-webkit-keyframes mx_AppLoading_spinner_fadeIn_animation { - from { opacity: 0 } - to { opacity: 1 } + animation-fill-mode: backwards; + animation-duration: 200ms; + animation-delay: 500ms; + animation-name: mx_AppLoading_spinner_fadeIn_animation; } @keyframes mx_AppLoading_spinner_fadeIn_animation { from { opacity: 0 } @@ -6420,14 +6335,12 @@ form.mx_Custom_Widget_Form div { } .mx_Autocomplete_Completion_container_pill { margin: 12px; - display: -webkit-box; display: -ms-flexbox; display: flex; } /* a "block" completion takes up a whole line */ .mx_Autocomplete_Completion_block { height: 34px; - display: -webkit-box; display: -ms-flexbox; display: flex; padding: 0 12px; @@ -6436,9 +6349,8 @@ form.mx_Custom_Widget_Form div { -ms-user-select: none; user-select: none; cursor: pointer; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; color: #dddddd; } .mx_Autocomplete_Completion_block * { @@ -6448,7 +6360,6 @@ form.mx_Custom_Widget_Form div { border-radius: 17px; height: 34px; padding: 0px 5px; - display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-user-select: none; @@ -6456,9 +6367,8 @@ form.mx_Custom_Widget_Form div { -ms-user-select: none; user-select: none; cursor: pointer; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; color: #dddddd; } .mx_Autocomplete_Completion_pill > * { @@ -6474,7 +6384,6 @@ form.mx_Custom_Widget_Form div { /* container for pill-style completions */ .mx_Autocomplete_Completion_container_pill { margin: 12px; - display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-flow: wrap; @@ -6493,9 +6402,8 @@ form.mx_Custom_Widget_Form div { /* styling for common completion elements */ .mx_Autocomplete_Completion_subtitle { font-style: italic; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; } .mx_Autocomplete_Completion_description { color: gray; @@ -6588,6 +6496,13 @@ limitations under the License. { opacity: 0.25; } +.mx_EntityTile_subtext { + font-size: 11px; + opacity: 0.5; + overflow: hidden; + white-space: nowrap; + text-overflow: clip; +} /* Copyright 2015, 2016 OpenMarket Ltd @@ -7029,25 +6944,22 @@ limitations under the License. margin-top: 15px; margin-right: 15px; margin-bottom: 15px; - display: -webkit-box; display: -ms-flexbox; display: flex; border-left: 4px solid #373737; color: #888; } .mx_LinkPreviewWidget_image { - -webkit-box-flex: 0; - -ms-flex: 0 0 100px; - flex: 0 0 100px; + -ms-flex: 0 0 100px; + flex: 0 0 100px; margin-left: 15px; text-align: center; cursor: pointer; } .mx_LinkPreviewWidget_caption { margin-left: 15px; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; } .mx_LinkPreviewWidget_title { display: inline; @@ -7065,9 +6977,8 @@ limitations under the License. .mx_LinkPreviewWidget_cancel { visibility: hidden; cursor: pointer; - -webkit-box-flex: 0; - -ms-flex: 0 0 40px; - flex: 0 0 40px; + -ms-flex: 0 0 40px; + flex: 0 0 40px; } .mx_LinkPreviewWidget:hover .mx_LinkPreviewWidget_cancel { visibility: visible; @@ -7095,15 +7006,12 @@ limitations under the License. padding: 10px 0px; } .mx_MemberDeviceInfo.mx_DeviceVerifyButtons { - padding: 6px 0; - display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; } .mx_MemberDeviceInfo_textButton { /* align images in buttons (eg spinners) */ @@ -7124,9 +7032,8 @@ limitations under the License. font-size: 15px; padding: 0px 1.5em 0px 1.5em; margin: 2px; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; } .mx_MemberDeviceInfo_textButton:hover { } @@ -7250,6 +7157,13 @@ limitations under the License. margin-right: 5px; margin-left: 8px; } +.mx_MemberInfo_statusMessage { + font-size: 11px; + opacity: 0.5; + overflow: hidden; + white-space: nowrap; + text-overflow: clip; +} /* Copyright 2015, 2016 OpenMarket Ltd @@ -7271,30 +7185,21 @@ limitations under the License. margin-top: 12px; margin-right: 20px; - -webkit-box-flex: 1; - - -ms-flex: 1; + -ms-flex: 1; - flex: 1; - - display: -webkit-box; + flex: 1; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - - -webkit-box-direction: normal; + -ms-flex-direction: column; - -ms-flex-direction: column; - - flex-direction: column; + flex-direction: column; } .mx_MemberList .mx_Spinner { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } .mx_MemberList_chevron { position: absolute; @@ -7304,14 +7209,11 @@ limitations under the License. .mx_MemberList_border { overflow-y: auto; - -webkit-box-ordinal-group: 2; - - -ms-flex-order: 1; + -ms-flex-order: 1; - order: 1; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0px; + order: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0px; } .mx_MemberList_query, .mx_GroupMemberList_query, .mx_GroupRoomList_query { font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; @@ -7336,12 +7238,10 @@ limitations under the License. font-size: 14px; } .mx_MemberList_joined { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - -webkit-box-flex: 1; - -ms-flex: 1 0 0px; - flex: 1 0 0; + -ms-flex-order: 2; + order: 2; + -ms-flex: 1 0 0px; + flex: 1 0 0; overflow-y: auto; } @@ -7415,16 +7315,12 @@ limitations under the License. height: 0; } .mx_MessageComposer_row { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-align: center; + align-items: center; width: 100%; } .mx_MessageComposer_row > div:last-child{ @@ -7449,48 +7345,35 @@ limitations under the License. height: 60px; font-style: italic; color: #888; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; } .mx_MessageComposer_input_wrapper { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - display: -webkit-box; + -ms-flex: 1; + flex: 1; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; cursor: text; } .mx_MessageComposer_input { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; vertical-align: middle; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; min-height: 60px; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: start; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; + -ms-flex-pack: start; + justify-content: start; + -ms-flex-align: start; + align-items: flex-start; font-size: 14px; margin-right: 6px; } @@ -7507,19 +7390,13 @@ limitations under the License. .mx_MessageComposer_editor > :last-child { margin-bottom: 0 ! important; } -@-webkit-keyframes visualbell -{ - from { background-color: #faa } - to { background-color: #2d2d2d } -} @keyframes visualbell { from { background-color: #faa } to { background-color: #2d2d2d } } .mx_MessageComposer_input_error { - -webkit-animation: 0.2s visualbell; - animation: 0.2s visualbell; + animation: 0.2s visualbell; } .mx_MessageComposer_input blockquote { color: #777; @@ -7584,7 +7461,6 @@ limitations under the License. .mx_MessageComposer_formatbar { margin: auto; max-width: 960px; - display: -webkit-box; display: -ms-flexbox; display: flex; @@ -7593,16 +7469,11 @@ limitations under the License. box-sizing: border-box; padding-left: 62px; - -webkit-box-orient: horizontal; + -ms-flex-direction: row; - -webkit-box-direction: normal; - - -ms-flex-direction: row; - - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + flex-direction: row; + -ms-flex-align: center; + align-items: center; font-size: 10px; color: #888; } @@ -7858,36 +7729,30 @@ limitations under the License. */ /* add 20px to the height of the header when editing */ .mx_RoomHeader_editing { - -webkit-box-flex: 0 ! important; - -ms-flex: 0 0 93px ! important; - flex: 0 0 93px ! important; + -ms-flex: 0 0 93px ! important; + flex: 0 0 93px ! important; } .mx_RoomHeader_wrapper { max-width: 960px; margin: auto; height: 70px; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; + -ms-flex-align: center; + align-items: center; display: -ms-flexbox; display: flex; } .mx_RoomHeader_leftRow { margin-left: -2px; - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex-order: 1; + order: 1; + -ms-flex: 1; + flex: 1; overflow: hidden; } .mx_RoomHeader_spinner { height: 36px; - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; padding-left: 12px; padding-right: 12px; } @@ -7909,9 +7774,8 @@ limitations under the License. outline: none; margin-right: 8px; margin-top: -5px; - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; } .mx_RoomHeader_textButton:hover { } @@ -7919,9 +7783,8 @@ limitations under the License. background-color: #ff0064; } .mx_RoomHeader_cancelButton { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; cursor: pointer; padding-left: 12px; padding-right: 12px; @@ -7929,15 +7792,12 @@ limitations under the License. .mx_RoomHeader_rightRow { margin-top: 4px; background-color: #2d2d2d; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; + -ms-flex-align: center; + align-items: center; + -ms-flex-order: 3; + order: 3; } .mx_RoomHeader_info { display: table-cell; @@ -8026,8 +7886,7 @@ limitations under the License. overflow: hidden; text-overflow: ellipsis; border-bottom: 1px solid transparent; - -webkit-column-width: 960px; - column-width: 960px; + column-width: 960px; } .mx_RoomHeader_avatar { display: table-cell; @@ -8083,7 +7942,7 @@ limitations under the License. } /* Copyright 2015, 2016 OpenMarket Ltd -Copyright 2107 Vector Creations Ltd +Copyright 2017 Vector Creations Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -8159,17 +8018,12 @@ limitations under the License. text-align: center; height: 176px; background-color: #353535; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - display: -webkit-box; + -ms-flex-align: center; + align-items: center; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; display: -ms-flexbox; display: flex; background-color: #333; @@ -8192,12 +8046,10 @@ limitations under the License. cursor: pointer; } .mx_RoomPreviewBar_warning { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; padding: 8px; } .mx_RoomPreviewBar_warningIcon { @@ -8207,6 +8059,64 @@ limitations under the License. margin-top: 50px; } /* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomRecoveryReminder { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + text-align: center; + background-color: #2d2d2d; + padding: 20px; + border: 1px solid #474747; + border-bottom: unset; +} +.mx_RoomRecoveryReminder_header { + font-weight: bold; + margin-bottom: 1em; +} +.mx_RoomRecoveryReminder_body { + margin-bottom: 1em; +} +.mx_RoomRecoveryReminder_button { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #2d2d2d; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + margin: 0 10px; +} +.mx_RoomRecoveryReminder_button.mx_RoomRecoveryReminder_secondary { + font-weight: 600; + border: 1px solid #76CFA6 ! important; + color: #76CFA6; + background-color: #2d2d2d; + background-color: transparent; +} +/* Copyright 2015, 2016 OpenMarket Ltd Copyright 2017 Vector Creations Ltd @@ -8245,6 +8155,26 @@ limitations under the License. position: relative; margin-right: 8px; } +.mx_RoomSettings_devtoolsButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #2d2d2d; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + position: relative; + padding: 4px 1.5em; + margin-top: 8px; +} .mx_RoomSettings_upgradeButton, .mx_RoomSettings_leaveButton:hover, .mx_RoomSettings_unbanButton:hover { } .mx_RoomSettings_upgradeButton.danger { @@ -8459,7 +8389,18 @@ limitations under the License. .mx_RoomTile_nameContainer { display: inline-block; width: 180px; - height: 24px; + vertical-align: middle; +} +.mx_RoomTile_subtext { + display: inline-block; + font-size: 11px; + padding: 0 0 0 7px; + margin: 0; + overflow: hidden; + white-space: nowrap; + text-overflow: clip; + position: relative; + bottom: 4px; } .mx_RoomTile_avatar_container { position: relative; @@ -8471,9 +8412,12 @@ limitations under the License. padding-left: 16px; padding-right: 6px; width: 24px; - height: 24px; vertical-align: middle; } +.mx_RoomTile_hasSubtext .mx_RoomTile_avatar { + padding-top: 0; + vertical-align: super; +} .mx_RoomTile_dm { display: block; position: absolute; @@ -8562,19 +8506,14 @@ limitations under the License. background-color: #333; } .mx_DNDRoomTile { - -webkit-transform: none; - transform: none; - transition: -webkit-transform 0.2s; + transform: none; transition: transform 0.2s; - transition: transform 0.2s, -webkit-transform 0.2s; } .mx_DNDRoomTile_dragging { - -webkit-transform: scale(1.05, 1.05); - transform: scale(1.05, 1.05); + transform: scale(1.05, 1.05); } .mx_RoomTile:focus { - -webkit-filter: none ! important; - filter: none ! important; + filter: none ! important; background-color: rgba(255, 255, 255, 0.2); } .mx_RoomTile .mx_RoomTile_name.mx_RoomTile_badgeShown { @@ -8660,17 +8599,12 @@ limitations under the License. text-align: center; height: 176px; background-color: #353535; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - display: -webkit-box; + -ms-flex-align: center; + align-items: center; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; display: -ms-flexbox; display: flex; background-color: #333; @@ -8711,12 +8645,10 @@ limitations under the License. .mx_SearchBar { padding-top: 5px; padding-bottom: 5px; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .mx_SearchBar_input { display: inline block; @@ -8726,9 +8658,8 @@ limitations under the License. padding: 9px; padding-left: 11px; width: auto; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; + -ms-flex: 1 1 0px; + flex: 1 1 0; } .mx_SearchBar_searchButton { cursor: pointer; @@ -8738,21 +8669,14 @@ limitations under the License. border-radius: 0px 3px 3px 0px; background-color: #76CFA6; } -@-webkit-keyframes pulsate { - 0% { opacity: 1.0; } - 50% { opacity: 0.1; } - 100% { opacity: 1.0; } -} @keyframes pulsate { 0% { opacity: 1.0; } 50% { opacity: 0.1; } 100% { opacity: 1.0; } } .mx_SearchBar_searching img { - -webkit-animation: pulsate 0.5s ease-out; - animation: pulsate 0.5s ease-out; - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; + animation: pulsate 0.5s ease-out; + animation-iteration-count: infinite; } .mx_SearchBar_button { display: inline; @@ -8797,17 +8721,12 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_SearchableEntityList { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - - -webkit-box-direction: normal; - - -ms-flex-direction: column; + -ms-flex-direction: column; - flex-direction: column; + flex-direction: column; } .mx_SearchableEntityList_query { font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; @@ -8832,9 +8751,8 @@ limitations under the License. font-size: 12px; } .mx_SearchableEntityList_listWrapper { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; overflow-y: auto; } @@ -8848,9 +8766,8 @@ limitations under the License. } .mx_SearchableEntityList_hrWrapper { width: 100%; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } .mx_SearchableEntityList hr { height: 1px; @@ -8872,22 +8789,16 @@ limitations under the License. border: none; } .mx_Stickers_contentPlaceholder { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-positive: 1; + flex-grow: 1; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; text-align: center; } .mx_Stickers_contentPlaceholder p { @@ -9019,6 +8930,33 @@ limitations under the License. height: 100%; } /* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_KeyBackupPanel_sigValid, .mx_KeyBackupPanel_sigInvalid, .mx_KeyBackupPanel_deviceVerified, .mx_KeyBackupPanel_deviceNotVerified { + font-weight: bold; +} +.mx_KeyBackupPanel_sigValid, .mx_KeyBackupPanel_deviceVerified { + color: #76cfa5; +} +.mx_KeyBackupPanel_sigInvalid, .mx_KeyBackupPanel_deviceNotVerified { + color: #ba6363; +} +.mx_KeyBackupPanel_deviceName { + font-style: italic; +} +/* Copyright 2015, 2016 OpenMarket Ltd Licensed under the Apache License, Version 2.0 (the "License"); @@ -9140,16 +9078,14 @@ limitations under the License. font-weight: bold; } .mx_IncomingCallBox_buttons { - display: -webkit-box; display: -ms-flexbox; display: flex; } .mx_IncomingCallBox_buttons_cell { vertical-align: middle; padding: 6px; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; } .mx_IncomingCallBox_buttons_decline, .mx_IncomingCallBox_buttons_accept { vertical-align: middle; @@ -9207,8 +9143,7 @@ limitations under the License. height: 100%; } .mx_VideoView_localVideoFeed.mx_VideoView_localVideoFeed_flipped video { - -webkit-transform: scale(-1, 1); - transform: scale(-1, 1); + transform: scale(-1, 1); } diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-dark.css.map b/riot/bundles/c2932262ed6106cd4535/theme-dark.css.map similarity index 53% rename from riot/bundles/f5c70ee9a294f6e4590e/theme-dark.css.map rename to riot/bundles/c2932262ed6106cd4535/theme-dark.css.map index 71fb002..9757a7f 100644 --- a/riot/bundles/f5c70ee9a294f6e4590e/theme-dark.css.map +++ b/riot/bundles/c2932262ed6106cd4535/theme-dark.css.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"bundles/f5c70ee9a294f6e4590e/theme-dark.css","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"bundles/c2932262ed6106cd4535/theme-dark.css","sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-dark.js b/riot/bundles/c2932262ed6106cd4535/theme-dark.js similarity index 91% rename from riot/bundles/f5c70ee9a294f6e4590e/theme-dark.js rename to riot/bundles/c2932262ed6106cd4535/theme-dark.js index 9dce776..4433d84 100644 --- a/riot/bundles/f5c70ee9a294f6e4590e/theme-dark.js +++ b/riot/bundles/c2932262ed6106cd4535/theme-dark.js @@ -1,2 +1,2 @@ -!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1889)}({1889:function(e,t){}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1901)}({1901:function(e,t){}}); //# sourceMappingURL=theme-dark.js.map \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-dark.js.map b/riot/bundles/c2932262ed6106cd4535/theme-dark.js.map similarity index 96% rename from riot/bundles/f5c70ee9a294f6e4590e/theme-dark.js.map rename to riot/bundles/c2932262ed6106cd4535/theme-dark.js.map index 9b5f106..2784335 100644 --- a/riot/bundles/f5c70ee9a294f6e4590e/theme-dark.js.map +++ b/riot/bundles/c2932262ed6106cd4535/theme-dark.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack/bootstrap"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s"],"mappings":"aACA,IAAAA,KAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,IACAG,EAAAH,EACAI,GAAA,EACAH,YAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,GAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,aAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA","file":"bundles/f5c70ee9a294f6e4590e/theme-dark.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1889);\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack/bootstrap"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s"],"mappings":"aACA,IAAAA,KAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,IACAG,EAAAH,EACAI,GAAA,EACAH,YAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,GAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,aAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA","file":"bundles/c2932262ed6106cd4535/theme-dark.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1901);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-light.css b/riot/bundles/c2932262ed6106cd4535/theme-light.css similarity index 89% rename from riot/bundles/f5c70ee9a294f6e4590e/theme-light.css rename to riot/bundles/c2932262ed6106cd4535/theme-light.css index 66807a9..d03c53f 100644 --- a/riot/bundles/f5c70ee9a294f6e4590e/theme-light.css +++ b/riot/bundles/c2932262ed6106cd4535/theme-light.css @@ -37,7 +37,7 @@ body { /* This should render the fonts the same accross browsers */ -webkit-font-smoothing: subpixel-antialiased; } -div.error, div.warning { +.error, .warning { color: #ff0064; } h2 { @@ -123,17 +123,13 @@ textarea { width: 100%; height: 100%; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; } /* Spinner Dialog overide */ .mx_Dialog_wrapper.mx_Dialog_spinner .mx_Dialog { @@ -154,8 +150,7 @@ textarea { font-weight: 300; font-size: 15px; position: relative; - padding-left: 58px; - padding-bottom: 36px; + padding: 0 58px 36px; width: 60%; max-width: 704px; box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.2); @@ -194,13 +189,12 @@ textarea { pointer-events: none; } .mx_Dialog_content { - margin: 24px 58px 68px 0; + margin: 24px 0 68px; font-size: 14px; color: #454545; word-wrap: break-word; } .mx_Dialog_buttons { - padding-right: 58px; text-align: right; } .mx_Dialog button, .mx_Dialog input[type="submit"] { @@ -229,8 +223,7 @@ textarea { .mx_Dialog button:hover, .mx_Dialog input[type="submit"]:hover { } .mx_Dialog button:focus, .mx_Dialog input[type="submit"]:focus { - -webkit-filter: brightness(125%); - filter: brightness(125%); + filter: brightness(125%); } .mx_Dialog button.mx_Dialog_primary, .mx_Dialog input[type="submit"].mx_Dialog_primary { color: #ffffff; @@ -246,6 +239,10 @@ textarea { border: solid 1px #747474; opacity: 0.7; } +.mx_linkButton { + cursor: pointer; + color: #76CFA6; +} .mx_Dialog_title { min-height: 16px; padding-top: 40px; @@ -320,8 +317,7 @@ textarea { cursor: help; transition-duration: 200ms; font-size: smaller; - -webkit-filter: opacity(0.5); - filter: opacity(0.5); + filter: opacity(0.5); } .mx_Beta:hover { color: white; @@ -330,16 +326,12 @@ textarea { } .mx_TintableSvgButton { position: relative; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-pack: center; + justify-content: center; -ms-flex-line-pack: center; align-content: center; } @@ -627,15 +619,12 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_FilePanel { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; - -webkit-box-flex: 1; + -ms-flex: 1 1 0px; - -ms-flex: 1 1 0px; - - flex: 1 1 0; + flex: 1 1 0; width: 100%; @@ -661,29 +650,25 @@ limitations under the License. margin-right: 0px; } .mx_FilePanel .mx_EventTile .mx_MFileBody_download { - display: -webkit-box; display: -ms-flexbox; display: flex; font-size: 14px; color: #acacac; } .mx_FilePanel .mx_EventTile .mx_MFileBody_downloadLink { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; color: #747474; } .mx_FilePanel .mx_EventTile .mx_MImageBody_size { - -webkit-box-flex: 1; - -ms-flex: 1 0 0px; - flex: 1 0 0; + -ms-flex: 1 0 0px; + flex: 1 0 0; font-size: 11px; text-align: right; white-space: nowrap; } /* Overides for the sender details line */ .mx_FilePanel .mx_EventTile_senderDetails { - display: -webkit-box; display: -ms-flexbox; display: flex; margin-top: -2px; @@ -692,9 +677,8 @@ limitations under the License. text-decoration: none; } .mx_FilePanel .mx_EventTile .mx_SenderProfile { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; line-height: initial; padding: 0px; font-size: 11px; @@ -702,9 +686,8 @@ limitations under the License. color: #acacac; } .mx_FilePanel .mx_EventTile .mx_MessageTimestamp { - -webkit-box-flex: 1; - -ms-flex: 1 0 0px; - flex: 1 0 0; + -ms-flex: 1 0 0px; + flex: 1 0 0; text-align: right; visibility: visible; position: initial; @@ -743,13 +726,10 @@ limitations under the License. width: 100%; margin-left: auto; margin-right: auto; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; overflow: hidden; } .mx_GroupView_error { @@ -758,10 +738,8 @@ limitations under the License. .mx_GroupView_header { max-width: 960px; min-height: 70px; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; + -ms-flex-align: center; + align-items: center; display: -ms-flexbox; display: flex; padding-bottom: 10px; @@ -808,19 +786,16 @@ limitations under the License. height: 48px ! important; } .mx_GroupView_header_leftCol { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; overflow: hidden; } .mx_GroupView_header_rightCol { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .mx_GroupView_textButton { display: inline-block; @@ -877,21 +852,16 @@ limitations under the License. line-height: 2em; } .mx_GroupView_body { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; } .mx_GroupView_rooms { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - display: -webkit-box; + -ms-flex-positive: 1; + flex-grow: 1; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; min-height: 200px; -webkit-user-select: none; -moz-user-select: none; @@ -931,34 +901,29 @@ limitations under the License. color: #76CFA6; } .mx_GroupView_rooms .mx_RoomDetailList { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; border-top: 1px solid #e5e5e5; padding-top: 10px; word-break: break-word; } .mx_GroupView .mx_RoomView_messageListWrapper { - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; } .mx_GroupView_membershipSection { color: #888; margin-top: 10px; } .mx_GroupView_membershipSubSection { - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - display: -webkit-box; + -ms-flex-pack: justify; + justify-content: space-between; display: -ms-flexbox; display: flex; } .mx_GroupView_membershipSubSection .mx_Spinner { - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; + -ms-flex-pack: end; + justify-content: flex-end; } .mx_GroupView_membershipSection_description { /* To match textButton */ @@ -996,7 +961,6 @@ limitations under the License. margin-top: 10px; } .mx_GroupView_featuredThings_container { - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -1084,7 +1048,6 @@ limitations under the License. .mx_HomePage_body { } .mx_HomePage_guest_warning { - display: -webkit-box; display: -ms-flexbox; display: flex; background-color: #eaf5f0; @@ -1115,42 +1078,33 @@ limitations under the License. .mx_LeftPanel { position: relative; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .mx_LeftPanel_container { - display: -webkit-box; display: -ms-flexbox; display: flex; /* LeftPanel 235px */ - -webkit-box-flex: 0; - -ms-flex: 0 0 235px; - flex: 0 0 235px; + -ms-flex: 0 0 235px; + flex: 0 0 235px; } .mx_LeftPanel_container.mx_LeftPanel_container_hasTagPanel { /* TagPanel 60px + LeftPanel 235px */ - -webkit-box-flex: 0; - -ms-flex: 0 0 295px; - flex: 0 0 295px; + -ms-flex: 0 0 295px; + flex: 0 0 295px; } .mx_LeftPanel_container_collapsed { /* Collapsed LeftPanel 60px */ - -webkit-box-flex: 0; - -ms-flex: 0 0 60px; - flex: 0 0 60px; + -ms-flex: 0 0 60px; + flex: 0 0 60px; } .mx_LeftPanel_container_collapsed.mx_LeftPanel_container_hasTagPanel { /* TagPanel 60px + Collapsed LeftPanel 60px */ - -webkit-box-flex: 0; - -ms-flex: 0 0 120px; - flex: 0 0 120px; + -ms-flex: 0 0 120px; + flex: 0 0 120px; } .mx_LeftPanel_hideButton { position: absolute; @@ -1166,36 +1120,30 @@ limitations under the License. height: 132px; } .mx_LeftPanel .mx_RoomList_scrollbar { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; + -ms-flex-order: 1; + order: 1; - -webkit-box-flex: 1; + -ms-flex: 1 1 0px; - -ms-flex: 1 1 0px; - - flex: 1 1 0; + flex: 1 1 0; overflow-y: auto; z-index: 6; } .mx_LeftPanel.collapsed .mx_BottomLeftMenu { - -webkit-box-flex: 0; - -ms-flex: 0 0 160px; - flex: 0 0 160px; + -ms-flex: 0 0 160px; + flex: 0 0 160px; margin-bottom: 9px; } .mx_LeftPanel .mx_BottomLeftMenu { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; + -ms-flex-order: 3; + order: 3; border-top: 1px solid rgba(118, 207, 166, 0.2); margin-left: 16px; /* gutter */ margin-right: 16px; /* gutter */ - -webkit-box-flex: 0; - -ms-flex: 0 0 60px; - flex: 0 0 60px; + -ms-flex: 0 0 60px; + flex: 0 0 60px; z-index: 1; } .mx_LeftPanel .mx_BottomLeftMenu_options { @@ -1227,14 +1175,12 @@ limitations under the License. float: none; } .mx_MatrixChat_useCompactLayout .mx_LeftPanel .mx_BottomLeftMenu { - -webkit-box-flex: 0; - -ms-flex: 0 0 50px; - flex: 0 0 50px; + -ms-flex: 0 0 50px; + flex: 0 0 50px; } .mx_MatrixChat_useCompactLayout .mx_LeftPanel.collapsed .mx_BottomLeftMenu { - -webkit-box-flex: 0; - -ms-flex: 0 0 160px; - flex: 0 0 160px; + -ms-flex: 0 0 160px; + flex: 0 0 160px; } .mx_MatrixChat_useCompactLayout .mx_LeftPanel .mx_BottomLeftMenu_options { margin-top: 12px; @@ -1259,9 +1205,8 @@ limitations under the License. height: unset !important; padding-top: 13px !important; padding-bottom: 14px !important; - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4; + -ms-flex-order: 4; + order: 4; } .mx_LoginBox_loginButton_wrapper { text-align: center; @@ -1311,25 +1256,19 @@ limitations under the License. bottom: 30px; } .mx_MatrixChat_wrapper { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - - -webkit-box-direction: normal; - - -ms-flex-direction: column; + -ms-flex-direction: column; - flex-direction: column; + flex-direction: column; width: 100%; height: 100%; } .mx_MatrixToolbar { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; + -ms-flex-order: 1; + order: 1; height: 40px; } @@ -1340,23 +1279,17 @@ limitations under the License. width: 100%; height: 100%; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-ordinal-group: 3; - - -ms-flex-order: 2; - - order: 2; + -ms-flex-order: 2; - -webkit-box-flex: 1; + order: 2; - -ms-flex: 1; + -ms-flex: 1; - flex: 1; + flex: 1; } .mx_MatrixChat_syncError { color: #ffffff; @@ -1367,41 +1300,33 @@ limitations under the License. position: absolute; top: 100px; left: 50%; - -webkit-transform: translateX(-50%); - transform: translateX(-50%); + transform: translateX(-50%); } .mx_MatrixChat .mx_LeftPanel { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; + -ms-flex-order: 1; + order: 1; background-color: #eaf5f0; - -webkit-box-flex: 0; + -ms-flex: 0 0 235px; - -ms-flex: 0 0 235px; - - flex: 0 0 235px; + flex: 0 0 235px; } .mx_MatrixChat .mx_LeftPanel.collapsed { - -webkit-box-flex: 0; - -ms-flex: 0 0 60px; - flex: 0 0 60px; + -ms-flex: 0 0 60px; + flex: 0 0 60px; } .mx_MatrixChat .mx_MatrixChat_middlePanel { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; padding-left: 20px; padding-right: 22px; background-color: #ffffff; - -webkit-box-flex: 1; - - -ms-flex: 1; + -ms-flex: 1; - flex: 1; + flex: 1; /* Experimental fix for https://github.com/vector-im/vector-web/issues/947 and https://github.com/vector-im/vector-web/issues/946. @@ -1410,8 +1335,6 @@ limitations under the License. */ overflow-x: auto; - display: -webkit-box; - display: -ms-flexbox; display: flex; @@ -1423,20 +1346,16 @@ limitations under the License. height: 100%; } .mx_MatrixChat .mx_RightPanel { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; - - -webkit-box-flex: 0; + -ms-flex-order: 3; + order: 3; - -ms-flex: 0 0 235px; + -ms-flex: 0 0 235px; - flex: 0 0 235px; + flex: 0 0 235px; } .mx_MatrixChat .mx_RightPanel.collapsed { - -webkit-box-flex: 0; - -ms-flex: 0 0 122px; - flex: 0 0 122px; + -ms-flex: 0 0 122px; + flex: 0 0 122px; } /* Copyright 2017 Vector Creations Ltd @@ -1458,15 +1377,11 @@ limitations under the License. margin-left: auto; margin-right: auto; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .mx_MyGroups .mx_RoomHeader_simpleHeader { margin-left: 0px; @@ -1474,24 +1389,20 @@ limitations under the License. .mx_MyGroups_header { /* Keep mid-point of create button aligned with icon in page header */ margin-left: 2px; - display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; } .mx_MyGroups_headerCard { - -webkit-box-flex: 1; - -ms-flex: 1 0 50%; - flex: 1 0 50%; + -ms-flex: 1 0 50%; + flex: 1 0 50%; margin-bottom: 30px; min-width: 400px; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .mx_MyGroups_headerCard .mx_MyGroups_headerCard_button { margin-right: 13px; @@ -1522,21 +1433,15 @@ limitations under the License. .mx_MyGroups_content { margin-left: 2px; - -webkit-box-flex: 1; + -ms-flex: 1 0 0px; - -ms-flex: 1 0 0px; - - flex: 1 0 0; - - display: -webkit-box; + flex: 1 0 0; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .mx_MyGroups_placeholder { background-color: #f7f7f7; @@ -1549,15 +1454,11 @@ limitations under the License. border-top: 1px solid #e5e5e5; overflow-x: hidden; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; -ms-flex-flow: wrap; flex-flow: wrap; -ms-flex-line-pack: start; @@ -1566,35 +1467,27 @@ limitations under the License. .mx_MyGroups_joinedGroups .mx_GroupTile { min-width: 300px; max-width: 33%; - -webkit-box-flex: 1; - -ms-flex: 1 0 300px; - flex: 1 0 300px; + -ms-flex: 1 0 300px; + flex: 1 0 300px; height: 75px; margin: 10px 0px; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; cursor: pointer; } .mx_GroupTile_avatar { - cursor: -webkit-grab, -webkit-grab; cursor: grab, -webkit-grab; } .mx_GroupTile_profile { margin-left: 10px; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; } .mx_GroupTile_profile .mx_GroupTile_name, .mx_GroupTile_profile .mx_GroupTile_groupId, .mx_GroupTile_profile .mx_GroupTile_desc { padding-right: 10px; @@ -1609,7 +1502,6 @@ limitations under the License. .mx_GroupTile_profile .mx_GroupTile_desc { display: -webkit-box; -webkit-line-clamp: 2; - -webkit-box-orient: vertical; font-size: 13px; max-height: 36px; overflow: hidden; @@ -1633,15 +1525,12 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_NotificationPanel { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - - -webkit-box-flex: 1; + -ms-flex-order: 2; + order: 2; - -ms-flex: 1 1 0px; + -ms-flex: 1 1 0px; - flex: 1 1 0; + flex: 1 1 0; width: 100%; @@ -1723,34 +1612,26 @@ limitations under the License. .mx_RightPanel { position: relative; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .mx_RightPanel_header { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; + -ms-flex-order: 1; + order: 1; border-bottom: 1px solid #e5e5e5; margin-right: 20px; - -webkit-box-flex: 0; - - -ms-flex: 0 0 70px; + -ms-flex: 0 0 70px; - flex: 0 0 70px; + flex: 0 0 70px; } /** Fixme - factor this out with the main header **/ .mx_RightPanel_headerButtonGroup { margin-top: 6px; - display: -webkit-box; display: -ms-flexbox; display: flex; width: 100%; @@ -1759,9 +1640,8 @@ limitations under the License. } .mx_RightPanel_headerButton { cursor: pointer; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; vertical-align: top; padding-left: 4px; padding-right: 5px; @@ -1772,6 +1652,9 @@ limitations under the License. pointer-events: none; padding-bottom: 3px; } +.mx_RightPanel_headerButton_badgeHighlight .mx_RightPanel_headerButton_badge { + color: #ff0064; +} .mx_RightPanel_headerButton_highlight { width: 25px; height: 5px; @@ -1786,39 +1669,32 @@ limitations under the License. padding-bottom: 2px; } .mx_RightPanel_collapsebutton { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; text-align: right; margin-top: 20px; } .mx_RightPanel .mx_MemberList, .mx_RightPanel .mx_MemberInfo, .mx_RightPanel .mx_GroupRoomList, .mx_RightPanel_blank { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; + -ms-flex-order: 2; + order: 2; + -ms-flex: 1 1 0px; + flex: 1 1 0; } .mx_RightPanel .mx_RoomView_messagePanelSpinner { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; margin: auto; } .mx_RightPanel_footer { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; + -ms-flex-order: 3; + order: 3; border-top: 1px solid #e5e5e5; margin-right: 20px; - -webkit-box-flex: 0; - - -ms-flex: 0 0 60px; + -ms-flex: 0 0 60px; - flex: 0 0 60px; + flex: 0 0 60px; } .mx_RightPanel_footer .mx_RightPanel_invite { font-size: 14px; @@ -1826,12 +1702,10 @@ limitations under the License. padding-top: 13px; padding-left: 5px; cursor: pointer; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .collapsed .mx_RightPanel_footer .mx_RightPanel_invite { display: none; @@ -1844,9 +1718,8 @@ limitations under the License. line-height: 18px; } .mx_MatrixChat_useCompactLayout .mx_RightPanel_footer { - -webkit-box-flex: 0; - -ms-flex: 0 0 50px; - flex: 0 0 50px; + -ms-flex: 0 0 50px; + flex: 0 0 50px; } .mx_MatrixChat_useCompactLayout .mx_RightPanel_footer .mx_RightPanel_invite { line-height: 25px; @@ -1876,46 +1749,32 @@ limitations under the License. color: #454545; word-break: break-word; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - - -webkit-box-direction: normal; - - -ms-flex-direction: column; + -ms-flex-direction: column; - flex-direction: column; + flex-direction: column; } .mx_RoomDirectory .mx_RoomHeader_simpleHeader { margin-left: 0px; } .mx_RoomDirectory_list { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - - display: -webkit-box; + -ms-flex: 1; + flex: 1; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - - -webkit-box-direction: normal; + -ms-flex-direction: column; - -ms-flex-direction: column; - - flex-direction: column; + flex-direction: column; } .mx_RoomDirectory_list .mx_RoomView_messageListWrapper { - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; } .mx_RoomDirectory_listheader { display: table; @@ -1935,9 +1794,8 @@ limitations under the License. } .mx_RoomDirectory_tableWrapper { overflow-y: auto; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; + -ms-flex: 1 1 0px; + flex: 1 1 0; } .mx_RoomDirectory_table { font-size: 14px; @@ -2037,27 +1895,13 @@ limitations under the License. */ } .mx_RoomStatusBar_placeholderIndicator span:nth-child(1) { - -webkit-animation-delay: 0.3s; - animation-delay: 0.3s; + animation-delay: 0.3s; } .mx_RoomStatusBar_placeholderIndicator span:nth-child(2) { - -webkit-animation-delay: 0.6s; - animation-delay: 0.6s; + animation-delay: 0.6s; } .mx_RoomStatusBar_placeholderIndicator span:nth-child(3) { - -webkit-animation-delay: 0.9s; - animation-delay: 0.9s; -} -@-webkit-keyframes bounce { - from { - opacity: 0.5; - top: 0; - } - - to { - opacity: 0.2; - top: -3px; - } + animation-delay: 0.9s; } @keyframes bounce { from { @@ -2107,7 +1951,6 @@ limitations under the License. cursor: pointer; } .mx_RoomStatusBar_connectionLostBar { - display: -webkit-box; display: -ms-flexbox; display: flex; @@ -2250,8 +2093,7 @@ limitations under the License. background-color: #76CFA6; } .mx_RoomSubList_label .mx_RoomSubList_badge:hover { - -webkit-filter: brightness(125%); - filter: brightness(125%); + filter: brightness(125%); } /* .collapsed .mx_RoomSubList_badge { @@ -2403,31 +2245,22 @@ limitations under the License. word-wrap: break-word; position: relative; - display: -webkit-box; - display: -ms-flexbox; display: flex; width: 100%; - -webkit-box-orient: vertical; - - -webkit-box-direction: normal; + -ms-flex-direction: column; - -ms-flex-direction: column; - - flex-direction: column; + flex-direction: column; } .mx_RoomView .mx_RoomHeader { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - - -webkit-box-flex: 0; + -ms-flex-order: 1; + order: 1; - -ms-flex: 0 0 70px; + -ms-flex: 0 0 70px; - flex: 0 0 70px; + flex: 0 0 70px; } .mx_RoomView_fileDropTarget { min-width: 0px; @@ -2460,9 +2293,8 @@ limitations under the License. position: absolute; } .mx_RoomView_auxPanel { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; min-width: 0px; max-width: 960px; @@ -2472,55 +2304,43 @@ limitations under the License. overflow: auto; border-bottom: 1px solid #e5e5e5; - -webkit-box-flex: 0; + -ms-flex: 0 0 auto; - -ms-flex: 0 0 auto; - - flex: 0 0 auto; + flex: 0 0 auto; } .mx_RoomView_auxPanel_apps { max-width: 1920px ! important; } .mx_RoomView_body { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - display: -webkit-box; + -ms-flex-order: 3; + order: 3; + -ms-flex: 1 1 0px; + flex: 1 1 0; + -ms-flex-direction: column; + flex-direction: column; display: -ms-flexbox; display: flex; } .mx_RoomView_body .mx_RoomView_topUnreadMessagesBar { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; + -ms-flex-order: 1; + order: 1; } .mx_RoomView_body .mx_RoomView_messagePanel { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; } .mx_RoomView_body .mx_RoomView_messagePanelSpinner { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; margin: auto; } .mx_RoomView_body .mx_RoomView_statusArea { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; + -ms-flex-order: 3; + order: 3; } .mx_RoomView_body .mx_MessageComposer { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4; + -ms-flex-order: 4; + order: 4; } .mx_RoomView_messagePanel { width: 100%; @@ -2532,35 +2352,25 @@ limitations under the License. min-height: 100%; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - - -webkit-box-direction: normal; + -ms-flex-direction: column; - -ms-flex-direction: column; + flex-direction: column; - flex-direction: column; + -ms-flex-pack: end; - -webkit-box-pack: end; - - -ms-flex-pack: end; - - justify-content: flex-end; + justify-content: flex-end; } .mx_RoomView_searchResultsPanel .mx_RoomView_messageListWrapper { - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; } .mx_RoomView_empty { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; font-size: 13px; padding-left: 3em; padding-right: 3em; @@ -2592,9 +2402,8 @@ hr.mx_RoomView_myReadMarker { } .mx_RoomView_statusArea { width: 100%; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; max-height: 0px; background-color: #ffffff; @@ -2653,9 +2462,8 @@ hr.mx_RoomView_myReadMarker { } .mx_RoomView .mx_MessageComposer { width: 100%; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; margin-right: 2px; } .mx_RoomView_ongoingConfCallNotification { @@ -2700,8 +2508,6 @@ limitations under the License. border-bottom: 1px solid rgba(118, 207, 166, 0.2); - display: -webkit-box; - display: -ms-flexbox; display: flex; @@ -2716,9 +2522,8 @@ limitations under the License. margin-top: -5px; } .mx_SearchBox_search { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; width: 0px; font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; font-size: 12px; @@ -2757,26 +2562,19 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_TagPanel { - -webkit-box-flex: 0; - -ms-flex: 0 0 60px; - flex: 0 0 60px; + -ms-flex: 0 0 60px; + flex: 0 0 60px; background-color: #d3efe1; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between; } .mx_TagPanel_items_selected { cursor: pointer; @@ -2786,23 +2584,17 @@ limitations under the License. height: 70px; width: 60px; - -webkit-box-flex: 0; - - -ms-flex: none; + -ms-flex: none; - flex: none; - - display: -webkit-box; + flex: none; display: -ms-flexbox; display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-align: start; + align-items: flex-start; } .mx_TagPanel .mx_TagPanel_clearButton object { /* Same as .mx_SearchBox padding-top */ @@ -2815,21 +2607,16 @@ limitations under the License. border-bottom: 1px solid rgba(118, 207, 166, 0.2); } .mx_TagPanel .mx_TagPanel_scroller { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; } .mx_TagPanel .mx_TagPanel_tagTileContainer { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: center; + align-items: center; height: 100%; } @@ -2856,8 +2643,7 @@ limitations under the License. width: 35px; } .mx_TagPanel .mx_TagTile.mx_AccessibleButton:focus { - -webkit-filter: none; - filter: none; + filter: none; } .mx_TagTile_tooltip { position: relative; @@ -2964,37 +2750,27 @@ limitations under the License. margin-left: auto; margin-right: auto; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .mx_UserSettings .mx_RoomHeader { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - - -webkit-box-flex: 0; + -ms-flex-order: 1; + order: 1; - -ms-flex: 0 0 70px; + -ms-flex: 0 0 70px; - flex: 0 0 70px; + flex: 0 0 70px; } .mx_UserSettings_body { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; - -webkit-box-flex: 1; + -ms-flex: 1 1 0px; - -ms-flex: 1 1 0px; - - flex: 1 1 0; + flex: 1 1 0; margin-top: -20px; overflow-y: auto; @@ -3230,17 +3006,13 @@ limitations under the License. width: 100%; height: 100%; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; overflow: auto; } @@ -3353,6 +3125,15 @@ limitations under the License. .mx_Login_forgot:link { color: #454545; } +.mx_Login_sso_link { + display: block; + text-align: center; + font-size: 15px; + margin-bottom: 20px; +} +.mx_Login_sso_link:link { + color: #454545; +} .mx_Login_loader { display: inline; position: relative; @@ -3377,15 +3158,13 @@ limitations under the License. margin-bottom: 12px; } .mx_Login_type_container { - display: -webkit-box; display: -ms-flexbox; display: flex; margin-bottom: 14px; } .mx_Login_type_label { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; line-height: 35px; } .mx_Login_type_dropdown { @@ -3393,12 +3172,10 @@ limitations under the License. min-width: 170px; -ms-flex-item-align: end; align-self: flex-end; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; } .mx_Login_field_group { - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -3425,9 +3202,8 @@ limitations under the License. border-radius: 0px 3px 3px 0px; text-align: center; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; } .mx_Login_username { height: 16px; @@ -3447,7 +3223,6 @@ limitations under the License. border-bottom-right-radius: 0px; } .mx_Login_phoneSection { - display:-webkit-box; display:-ms-flexbox; display:flex; } @@ -3482,7 +3257,6 @@ limitations under the License. min-width: 60%; } .mx_Login_language_div { - display: -webkit-box; display: -ms-flexbox; display: flex; margin-top: 12px; @@ -3521,6 +3295,25 @@ limitations under the License. background-color: #ffffff; } /* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MemberStatusMessageAvatar_hasStatus { + border: 2px solid #76CFA6; + border-radius: 40px; +} +/* Copyright 2015, 2016 OpenMarket Ltd Licensed under the Apache License, Version 2.0 (the "License"); @@ -3564,12 +3357,10 @@ limitations under the License. padding-bottom: 8px; cursor: pointer; white-space: nowrap; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; line-height: 16px; } .mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldSet { @@ -3622,12 +3413,10 @@ limitations under the License. padding-left: 8px; /* 20px */ cursor: pointer; white-space: nowrap; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .mx_RoomTileContextMenu_notif_field.mx_RoomTileContextMenu_notif_fieldSet { font-weight: bold; @@ -3651,6 +3440,53 @@ limitations under the License. /* Copyright 2018 New Vector Ltd +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_StatusMessageContextMenu_message { + display: inline-block; + border-radius: 3px 0 0 3px; + border: 1px solid #f0f0f0; + font-size: 13px; + padding: 7px 7px 7px 9px; + width: 135px; + background-color: #ffffff !important; +} +.mx_StatusMessageContextMenu_submit { + display: inline-block; +} +.mx_StatusMessageContextMenu_submitFaded { + opacity: 0.5; +} +.mx_StatusMessageContextMenu_submit img { + vertical-align: middle; + margin-left: 8px; +} +.mx_StatusMessageContextMenu hr { + border: 0.5px solid rgba(187, 187, 187, 0.5); +} +.mx_StatusMessageContextMenu_clearIcon { + margin: 5px 15px 5px 5px; + vertical-align: middle; +} +.mx_StatusMessageContextMenu_clear { + padding: 2px; +} +.mx_StatusMessageContextMenu_hasStatus .mx_StatusMessageContextMenu_clear { + color: #ff0064; +} +/* +Copyright 2018 New Vector Ltd + Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at @@ -3669,14 +3505,15 @@ limitations under the License. padding-bottom: 8px; cursor: pointer; white-space: nowrap; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; line-height: 16px; } +.mx_TagTileContextMenu_item object { + pointer-events: none; +} .mx_TagTileContextMenu_item_icon { padding-right: 8px; padding-left: 4px; @@ -3708,7 +3545,6 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_BugReportDialog_field_container { - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -3724,9 +3560,8 @@ limitations under the License. line-height: 18px; } .mx_BugReportDialog_field_input { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; /* taken from mx_ChatInviteDialog_inputContainer */ border-radius: 3px; @@ -3798,7 +3633,6 @@ limitations under the License. display: none; } .mx_ChatCreateOrReuseDialog_profile { - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -3949,7 +3783,6 @@ limitations under the License. border-radius: 0px; } .mx_CreateGroupDialog_input_group { - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -4039,9 +3872,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -.mx_DevTools_dialog { - padding-right: 58px; -} .mx_DevTools_content { margin: 10px 0; } @@ -4135,8 +3965,7 @@ limitations under the License. padding: 2px; transition: all .2s ease; font-family: sans-serif; - -webkit-perspective: 100px; - perspective: 100px; + perspective: 100px; } .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:after, .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:before { display: inline-block; @@ -4156,30 +3985,25 @@ limitations under the License. .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:after { content: attr(data-tg-on); background: #02C66F; - -webkit-transform: rotateY(-180deg); - transform: rotateY(-180deg); + transform: rotateY(-180deg); } .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:before { background: #FF3A19; content: attr(data-tg-off); } .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:active:before { - -webkit-transform: rotateY(-20deg); - transform: rotateY(-20deg); + transform: rotateY(-20deg); } .mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:before { - -webkit-transform: rotateY(180deg); - transform: rotateY(180deg); + transform: rotateY(180deg); } .mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:after { - -webkit-transform: rotateY(0); - transform: rotateY(0); + transform: rotateY(0); left: 0; background: #7FC6A6; } .mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:active:after { - -webkit-transform: rotateY(20deg); - transform: rotateY(20deg); + transform: rotateY(20deg); } /* Copyright 2016 OpenMarket Ltd @@ -4220,6 +4044,9 @@ limitations under the License. background-color: #ffffff; color: #76CFA6; } +.mx_EncryptedEventDialog button { + margin-top: 0px; +} /* Copyright 2017 New Vector Ltd @@ -4237,7 +4064,6 @@ limitations under the License. */ .mx_GroupAddressPicker_checkboxContainer{ margin-top: 10px; - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -4248,6 +4074,24 @@ limitations under the License. /* Copyright 2018 New Vector Ltd +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RestoreKeyBackupDialog_keyStatus { + height: 30px; +} +/* +Copyright 2018 New Vector Ltd + Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at @@ -4316,7 +4160,6 @@ limitations under the License. padding-right: 40px; } .mx_SetMxIdDialog_input_group { - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -4336,9 +4179,8 @@ limitations under the License. .mx_SetMxIdDialog_input_group .mx_Spinner { height: 37px; padding-left: 10px; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; } .mx_SetMxIdDialog .success { color: #76CFA6; @@ -4390,9 +4232,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -.mx_ShareDialog { - padding-right: 58px; -} .mx_ShareDialog hr { margin-top: 25px; margin-bottom: 25px; @@ -4402,12 +4241,10 @@ limitations under the License. margin: 10px 0; } .mx_ShareDialog_matrixto { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; border-radius: 5px; border: solid 1px #747474; margin-bottom: 10px; @@ -4437,7 +4274,6 @@ limitations under the License. height: 20px; } .mx_ShareDialog_split { - display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; @@ -4479,17 +4315,13 @@ limitations under the License. */ .mx_Dialog_unknownDevice .mx_Dialog { height: 100%; - padding-right: 58px; } .mx_UnknownDeviceDialog { height: 100%; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .mx_UnknownDeviceDialog .mx_Dialog_content { margin-bottom: 24px; @@ -4526,6 +4358,147 @@ limitations under the License. border-bottom: 1px solid #e5e5e5; } /* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_CreateKeyBackupDialog { + padding-right: 40px; +} +.mx_CreateKeyBackupDialog_primaryContainer { + /*FIXME: plinth colour in new theme(s). background-color: $accent-color;*/ + padding: 20px +} +.mx_CreateKeyBackupDialog_primaryContainer::after { + content: ""; + clear: both; + display: block; +} +.mx_CreateKeyBackupDialog_passPhraseContainer { + display: -ms-flexbox; + display: flex; + -ms-flex-align: start; + align-items: start; +} +.mx_CreateKeyBackupDialog_passPhraseHelp { + -ms-flex: 1; + flex: 1; + height: 85px; + margin-left: 20px; + font-size: 80%; +} +.mx_CreateKeyBackupDialog_passPhraseHelp progress { + width: 100%; +} +.mx_CreateKeyBackupDialog_passPhraseInput { + -ms-flex: none; + flex: none; + width: 250px; + border: 1px solid #76CFA6; + border-radius: 5px; + padding: 10px; + margin-bottom: 1em; +} +.mx_CreateKeyBackupDialog_passPhraseMatch { + margin-left: 20px; +} +.mx_CreateKeyBackupDialog_recoveryKeyHeader { + margin-bottom: 1em; +} +.mx_CreateKeyBackupDialog_recoveryKeyContainer { + display: -ms-flexbox; + display: flex; +} +.mx_CreateKeyBackupDialog_recoveryKey { + width: 262px; + padding: 20px; + color: #888; + background-color: #f7f7f7; + margin-right: 12px; +} +.mx_CreateKeyBackupDialog_recoveryKeyButtons { + -ms-flex: 1; + flex: 1; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; +} +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_NewRecoveryMethodDialog .mx_Dialog_title { + margin-bottom: 32px; +} +.mx_NewRecoveryMethodDialog_title { + position: relative; + padding-left: 45px; + padding-bottom: 10px; +} +.mx_NewRecoveryMethodDialog_title:before { + -webkit-mask: url("../../../img/e2e/lock-warning.svg"); + mask: url("../../../img/e2e/lock-warning.svg"); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background-color: #454545; + content: ""; + position: absolute; + top: -6px; + right: 0; + bottom: 0; + left: 0; + } +.mx_NewRecoveryMethodDialog .mx_Dialog_buttons { + margin-top: 36px; +} +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RestoreKeyBackupDialog_primaryContainer { + /*FIXME: plinth colour in new theme(s). background-color: $accent-color;*/ + padding: 20px +} +.mx_RestoreKeyBackupDialog_passPhraseInput, .mx_RestoreKeyBackupDialog_recoveryKeyInput { + width: 300px; + border: 1px solid #76CFA6; + border-radius: 5px; + padding: 10px; +} +/* Copyright 2015, 2016 OpenMarket Ltd Licensed under the Apache License, Version 2.0 (the "License"); @@ -4619,8 +4592,7 @@ limitations under the License. */ .mx_AccessibleButton:focus { outline: 0; - -webkit-filter: brightness(125%); - filter: brightness(125%); + filter: brightness(125%); } .mx_AccessibleButton { cursor: pointer; @@ -4807,16 +4779,14 @@ limitations under the License. border: 1px solid #c7c7c7; } .mx_DirectorySearchBox_container { - display: -webkit-box; display: -ms-flexbox; display: flex; padding-left: 9px; padding-right: 9px; } .mx_DirectorySearchBox_input { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; border: 0; padding: 0; font-weight: 300; @@ -4894,8 +4864,7 @@ limitations under the License. } /* Disable dropdown highlight on focus */ .mx_Dropdown_input.mx_AccessibleButton:focus { - -webkit-filter: none; - filter: none; + filter: none; } .mx_Dropdown_arrow { border-color: #454545 transparent transparent; @@ -4990,7 +4959,6 @@ limitations under the License. margin-bottom: 0px; } .mx_EditableItem { - display: -webkit-box; display: -ms-flexbox; display: flex; margin-left: 56px; @@ -5043,43 +5011,34 @@ limitations under the License. But empirically it works on Chrome/FF/Safari */ .mx_ImageView { - display: -webkit-box; display: -ms-flexbox; display: flex; width: 100%; height: 100%; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .mx_ImageView_lhs { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - -webkit-box-flex: 1; - -ms-flex: 1 1 10%; - flex: 1 1 10%; + -ms-flex-order: 1; + order: 1; + -ms-flex: 1 1 10%; + flex: 1 1 10%; min-width: 60px; } .mx_ImageView_content { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; /* min-width hack needed for FF */ min-width: 0px; height: 90%; - -webkit-box-flex: 15; - -ms-flex: 15 15 0px; - flex: 15 15 0; - display: -webkit-box; + -ms-flex: 15 15 0px; + flex: 15 15 0; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; } .mx_ImageView_content img { max-width: 100%; @@ -5101,16 +5060,12 @@ limitations under the License. } .mx_ImageView_label { text-align: left; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-direction: column; + flex-direction: column; padding-left: 30px; padding-right: 30px; min-height: 100%; @@ -5160,12 +5115,10 @@ limitations under the License. height: 30px; } .mx_ImageView_rhs { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; - -webkit-box-flex: 1; - -ms-flex: 1 1 10%; - flex: 1 1 10%; + -ms-flex-order: 3; + order: 3; + -ms-flex: 1 1 10%; + flex: 1 1 10%; min-width: 300px; } /* @@ -5210,7 +5163,6 @@ limitations under the License. } .mx_TextualEvent.mx_MemberEventListSummary_summary { font-size: 14px; - display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; } @@ -5369,7 +5321,7 @@ blockquote.mx_ReplyThread { text-decoration: line-through; } /* -Copyright 2107 Vector Creations Ltd +Copyright 2017 Vector Creations Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -5414,20 +5366,16 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_Spinner { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; width: 100%; height: 100%; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; } .mx_MatrixChat_middlePanel .mx_Spinner { height: auto; @@ -5517,14 +5465,11 @@ limitations under the License. background-color: #76CFA6; color: #ffffff; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .mx_MatrixToolbar_warning { margin-left: 16px; @@ -5542,9 +5487,8 @@ limitations under the License. background-color: #DF2A8B; } .mx_MatrixToolbar_content { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; } .mx_MatrixToolbar_link { @@ -5585,21 +5529,17 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_GroupPublicity_toggle { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; margin: 8px; } .mx_GroupPublicity_toggle > label { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; } .mx_GroupPublicity_toggle > label, .mx_GroupPublicity_toggle .mx_GroupTile { width: 50%; @@ -5609,12 +5549,10 @@ limitations under the License. vertical-align: -4px; } .mx_GroupPublicity_toggle .mx_GroupTile { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; cursor: pointer; } /* @@ -5691,10 +5629,23 @@ limitations under the License. margin-top: 4px; margin-bottom: 5px; } +.mx_InteractiveAuthEntryComponents_termsSubmit { + margin-top: 20px; + margin-bottom: 5px; + display: block; + width: 100%; +} .mx_InteractiveAuthEntryComponents_msisdnSubmit:disabled { background-color: #747474; cursor: default; } +.mx_InteractiveAuthEntryComponents_termsSubmit:disabled { + background-color: #76CFA67F; + cursor: default; +} +.mx_InteractiveAuthEntryComponents_termsPolicy { + display: block; +} /* Copyright 2015, 2016 OpenMarket Ltd @@ -5883,8 +5834,17 @@ limitations under the License. top: 50%; } .mx_MImageBody_thumbnail_spinner > * { - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} +.mx_MImageBody_gifLabel { + position: absolute; + display: block; + top: 0px; + left: 14px; + padding: 5px; + border-radius: 5px; + background: rgba(0, 0, 0, 0.7); + border: 2px solid rgba(0, 0, 0, 0.2); } /* Copyright 2015, 2016 OpenMarket Ltd @@ -6057,24 +6017,18 @@ limitations under the License. display: none; } .mx_AppsContainer { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; } .mx_AddWidget_button { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; cursor: pointer; padding-right: 12px; padding: 0; @@ -6132,46 +6086,33 @@ limitations under the License. border-bottom: 1px solid #e5e5e5; font-size: 10px; background-color: #d3efe1; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between; cursor: pointer; } .mx_AppTileMenuBarTitle { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-align: center; + align-items: center; pointer-events: none; } .mx_AppTileMenuBarWidgets { float: right; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-align: center; + align-items: center; } .mx_AppTileMenuBarWidget { cursor: pointer; @@ -6182,8 +6123,7 @@ limitations under the License. border: 1px solid transparent; } .mx_AppTileMenuBarWidgetDelete { - -webkit-filter: none; - filter: none; + filter: none; } .mx_AppTileMenuBarWidget:hover { border: 1px solid #454545; @@ -6262,15 +6202,12 @@ limitations under the License. background-color: white; border-radius: 3px 3px 0 0; height: 155px; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-align: center; + align-items: center; } form.mx_Custom_Widget_Form div { margin-top: 10px; @@ -6279,20 +6216,15 @@ form.mx_Custom_Widget_Form div { .mx_AppPermissionWarning { text-align: center; background-color: #ffffff; - display: -webkit-box; display: -ms-flexbox; display: flex; height: 100%; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-align: center; + align-items: center; } .mx_AppPermissionWarningImage { margin: 10px 0; @@ -6323,19 +6255,14 @@ form.mx_Custom_Widget_Form div { cursor: pointer; } .mx_AppLoading { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-align: center; + align-items: center; font-weight: bold; position: relative; height: 280px; @@ -6348,18 +6275,10 @@ form.mx_Custom_Widget_Form div { right: 0; } .mx_AppLoading_spinner_fadeIn { - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; - -webkit-animation-duration: 200ms; - animation-duration: 200ms; - -webkit-animation-delay: 500ms; - animation-delay: 500ms; - -webkit-animation-name: mx_AppLoading_spinner_fadeIn_animation; - animation-name: mx_AppLoading_spinner_fadeIn_animation; -} -@-webkit-keyframes mx_AppLoading_spinner_fadeIn_animation { - from { opacity: 0 } - to { opacity: 1 } + animation-fill-mode: backwards; + animation-duration: 200ms; + animation-delay: 500ms; + animation-name: mx_AppLoading_spinner_fadeIn_animation; } @keyframes mx_AppLoading_spinner_fadeIn_animation { from { opacity: 0 } @@ -6385,14 +6304,12 @@ form.mx_Custom_Widget_Form div { } .mx_Autocomplete_Completion_container_pill { margin: 12px; - display: -webkit-box; display: -ms-flexbox; display: flex; } /* a "block" completion takes up a whole line */ .mx_Autocomplete_Completion_block { height: 34px; - display: -webkit-box; display: -ms-flexbox; display: flex; padding: 0 12px; @@ -6401,9 +6318,8 @@ form.mx_Custom_Widget_Form div { -ms-user-select: none; user-select: none; cursor: pointer; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; color: #454545; } .mx_Autocomplete_Completion_block * { @@ -6413,7 +6329,6 @@ form.mx_Custom_Widget_Form div { border-radius: 17px; height: 34px; padding: 0px 5px; - display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-user-select: none; @@ -6421,9 +6336,8 @@ form.mx_Custom_Widget_Form div { -ms-user-select: none; user-select: none; cursor: pointer; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; color: #454545; } .mx_Autocomplete_Completion_pill > * { @@ -6439,7 +6353,6 @@ form.mx_Custom_Widget_Form div { /* container for pill-style completions */ .mx_Autocomplete_Completion_container_pill { margin: 12px; - display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-flow: wrap; @@ -6458,9 +6371,8 @@ form.mx_Custom_Widget_Form div { /* styling for common completion elements */ .mx_Autocomplete_Completion_subtitle { font-style: italic; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; } .mx_Autocomplete_Completion_description { color: gray; @@ -6553,6 +6465,13 @@ limitations under the License. { opacity: 0.25; } +.mx_EntityTile_subtext { + font-size: 11px; + opacity: 0.5; + overflow: hidden; + white-space: nowrap; + text-overflow: clip; +} /* Copyright 2015, 2016 OpenMarket Ltd @@ -6994,25 +6913,22 @@ limitations under the License. margin-top: 15px; margin-right: 15px; margin-bottom: 15px; - display: -webkit-box; display: -ms-flexbox; display: flex; border-left: 4px solid #ddd; color: #888; } .mx_LinkPreviewWidget_image { - -webkit-box-flex: 0; - -ms-flex: 0 0 100px; - flex: 0 0 100px; + -ms-flex: 0 0 100px; + flex: 0 0 100px; margin-left: 15px; text-align: center; cursor: pointer; } .mx_LinkPreviewWidget_caption { margin-left: 15px; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; } .mx_LinkPreviewWidget_title { display: inline; @@ -7030,9 +6946,8 @@ limitations under the License. .mx_LinkPreviewWidget_cancel { visibility: hidden; cursor: pointer; - -webkit-box-flex: 0; - -ms-flex: 0 0 40px; - flex: 0 0 40px; + -ms-flex: 0 0 40px; + flex: 0 0 40px; } .mx_LinkPreviewWidget:hover .mx_LinkPreviewWidget_cancel { visibility: visible; @@ -7060,15 +6975,12 @@ limitations under the License. padding: 10px 0px; } .mx_MemberDeviceInfo.mx_DeviceVerifyButtons { - padding: 6px 0; - display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; } .mx_MemberDeviceInfo_textButton { /* align images in buttons (eg spinners) */ @@ -7089,9 +7001,8 @@ limitations under the License. font-size: 15px; padding: 0px 1.5em 0px 1.5em; margin: 2px; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; } .mx_MemberDeviceInfo_textButton:hover { } @@ -7215,6 +7126,13 @@ limitations under the License. margin-right: 5px; margin-left: 8px; } +.mx_MemberInfo_statusMessage { + font-size: 11px; + opacity: 0.5; + overflow: hidden; + white-space: nowrap; + text-overflow: clip; +} /* Copyright 2015, 2016 OpenMarket Ltd @@ -7236,30 +7154,21 @@ limitations under the License. margin-top: 12px; margin-right: 20px; - -webkit-box-flex: 1; + -ms-flex: 1; - -ms-flex: 1; - - flex: 1; - - display: -webkit-box; + flex: 1; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; + -ms-flex-direction: column; - -webkit-box-direction: normal; - - -ms-flex-direction: column; - - flex-direction: column; + flex-direction: column; } .mx_MemberList .mx_Spinner { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } .mx_MemberList_chevron { position: absolute; @@ -7269,14 +7178,11 @@ limitations under the License. .mx_MemberList_border { overflow-y: auto; - -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; - -ms-flex-order: 1; - - order: 1; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0px; + order: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0px; } .mx_MemberList_query, .mx_GroupMemberList_query, .mx_GroupRoomList_query { font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; @@ -7301,12 +7207,10 @@ limitations under the License. font-size: 14px; } .mx_MemberList_joined { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - -webkit-box-flex: 1; - -ms-flex: 1 0 0px; - flex: 1 0 0; + -ms-flex-order: 2; + order: 2; + -ms-flex: 1 0 0px; + flex: 1 0 0; overflow-y: auto; } @@ -7380,16 +7284,12 @@ limitations under the License. height: 0; } .mx_MessageComposer_row { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-align: center; + align-items: center; width: 100%; } .mx_MessageComposer_row > div:last-child{ @@ -7414,48 +7314,35 @@ limitations under the License. height: 60px; font-style: italic; color: #888; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; } .mx_MessageComposer_input_wrapper { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - display: -webkit-box; + -ms-flex: 1; + flex: 1; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; cursor: text; } .mx_MessageComposer_input { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; vertical-align: middle; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; min-height: 60px; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: start; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; + -ms-flex-pack: start; + justify-content: start; + -ms-flex-align: start; + align-items: flex-start; font-size: 14px; margin-right: 6px; } @@ -7472,19 +7359,13 @@ limitations under the License. .mx_MessageComposer_editor > :last-child { margin-bottom: 0 ! important; } -@-webkit-keyframes visualbell -{ - from { background-color: #faa } - to { background-color: #ffffff } -} @keyframes visualbell { from { background-color: #faa } to { background-color: #ffffff } } .mx_MessageComposer_input_error { - -webkit-animation: 0.2s visualbell; - animation: 0.2s visualbell; + animation: 0.2s visualbell; } .mx_MessageComposer_input blockquote { color: #777; @@ -7549,7 +7430,6 @@ limitations under the License. .mx_MessageComposer_formatbar { margin: auto; max-width: 960px; - display: -webkit-box; display: -ms-flexbox; display: flex; @@ -7558,16 +7438,11 @@ limitations under the License. box-sizing: border-box; padding-left: 62px; - -webkit-box-orient: horizontal; - - -webkit-box-direction: normal; - - -ms-flex-direction: row; + -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + flex-direction: row; + -ms-flex-align: center; + align-items: center; font-size: 10px; color: #888; } @@ -7823,36 +7698,30 @@ limitations under the License. */ /* add 20px to the height of the header when editing */ .mx_RoomHeader_editing { - -webkit-box-flex: 0 ! important; - -ms-flex: 0 0 93px ! important; - flex: 0 0 93px ! important; + -ms-flex: 0 0 93px ! important; + flex: 0 0 93px ! important; } .mx_RoomHeader_wrapper { max-width: 960px; margin: auto; height: 70px; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; + -ms-flex-align: center; + align-items: center; display: -ms-flexbox; display: flex; } .mx_RoomHeader_leftRow { margin-left: -2px; - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex-order: 1; + order: 1; + -ms-flex: 1; + flex: 1; overflow: hidden; } .mx_RoomHeader_spinner { height: 36px; - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; padding-left: 12px; padding-right: 12px; } @@ -7874,9 +7743,8 @@ limitations under the License. outline: none; margin-right: 8px; margin-top: -5px; - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; } .mx_RoomHeader_textButton:hover { } @@ -7884,9 +7752,8 @@ limitations under the License. background-color: #ff0064; } .mx_RoomHeader_cancelButton { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; cursor: pointer; padding-left: 12px; padding-right: 12px; @@ -7894,15 +7761,12 @@ limitations under the License. .mx_RoomHeader_rightRow { margin-top: 4px; background-color: #ffffff; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; + -ms-flex-align: center; + align-items: center; + -ms-flex-order: 3; + order: 3; } .mx_RoomHeader_info { display: table-cell; @@ -7991,8 +7855,7 @@ limitations under the License. overflow: hidden; text-overflow: ellipsis; border-bottom: 1px solid transparent; - -webkit-column-width: 960px; - column-width: 960px; + column-width: 960px; } .mx_RoomHeader_avatar { display: table-cell; @@ -8048,7 +7911,7 @@ limitations under the License. } /* Copyright 2015, 2016 OpenMarket Ltd -Copyright 2107 Vector Creations Ltd +Copyright 2017 Vector Creations Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -8124,17 +7987,12 @@ limitations under the License. text-align: center; height: 176px; background-color: #f7f7f7; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - display: -webkit-box; + -ms-flex-align: center; + align-items: center; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; display: -ms-flexbox; display: flex; background-color: #f7f7f7; @@ -8157,12 +8015,10 @@ limitations under the License. cursor: pointer; } .mx_RoomPreviewBar_warning { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; padding: 8px; } .mx_RoomPreviewBar_warningIcon { @@ -8172,6 +8028,64 @@ limitations under the License. margin-top: 50px; } /* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomRecoveryReminder { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + text-align: center; + background-color: #fff8e3; + padding: 20px; + border: 1px solid #e5e5e5; + border-bottom: unset; +} +.mx_RoomRecoveryReminder_header { + font-weight: bold; + margin-bottom: 1em; +} +.mx_RoomRecoveryReminder_body { + margin-bottom: 1em; +} +.mx_RoomRecoveryReminder_button { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #ffffff; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + margin: 0 10px; +} +.mx_RoomRecoveryReminder_button.mx_RoomRecoveryReminder_secondary { + font-weight: 600; + border: 1px solid #76CFA6 ! important; + color: #76CFA6; + background-color: #ffffff; + background-color: transparent; +} +/* Copyright 2015, 2016 OpenMarket Ltd Copyright 2017 Vector Creations Ltd @@ -8210,6 +8124,26 @@ limitations under the License. position: relative; margin-right: 8px; } +.mx_RoomSettings_devtoolsButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #ffffff; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + position: relative; + padding: 4px 1.5em; + margin-top: 8px; +} .mx_RoomSettings_upgradeButton, .mx_RoomSettings_leaveButton:hover, .mx_RoomSettings_unbanButton:hover { } .mx_RoomSettings_upgradeButton.danger { @@ -8424,7 +8358,18 @@ limitations under the License. .mx_RoomTile_nameContainer { display: inline-block; width: 180px; - height: 24px; + vertical-align: middle; +} +.mx_RoomTile_subtext { + display: inline-block; + font-size: 11px; + padding: 0 0 0 7px; + margin: 0; + overflow: hidden; + white-space: nowrap; + text-overflow: clip; + position: relative; + bottom: 4px; } .mx_RoomTile_avatar_container { position: relative; @@ -8436,9 +8381,12 @@ limitations under the License. padding-left: 16px; padding-right: 6px; width: 24px; - height: 24px; vertical-align: middle; } +.mx_RoomTile_hasSubtext .mx_RoomTile_avatar { + padding-top: 0; + vertical-align: super; +} .mx_RoomTile_dm { display: block; position: absolute; @@ -8527,19 +8475,14 @@ limitations under the License. background-color: rgba(255, 255, 255, 0.8); } .mx_DNDRoomTile { - -webkit-transform: none; - transform: none; - transition: -webkit-transform 0.2s; + transform: none; transition: transform 0.2s; - transition: transform 0.2s, -webkit-transform 0.2s; } .mx_DNDRoomTile_dragging { - -webkit-transform: scale(1.05, 1.05); - transform: scale(1.05, 1.05); + transform: scale(1.05, 1.05); } .mx_RoomTile:focus { - -webkit-filter: none ! important; - filter: none ! important; + filter: none ! important; background-color: rgba(255, 255, 255, 0.9); } .mx_RoomTile .mx_RoomTile_name.mx_RoomTile_badgeShown { @@ -8625,17 +8568,12 @@ limitations under the License. text-align: center; height: 176px; background-color: #f7f7f7; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - display: -webkit-box; + -ms-flex-align: center; + align-items: center; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; display: -ms-flexbox; display: flex; background-color: #f7f7f7; @@ -8676,12 +8614,10 @@ limitations under the License. .mx_SearchBar { padding-top: 5px; padding-bottom: 5px; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .mx_SearchBar_input { display: inline block; @@ -8691,9 +8627,8 @@ limitations under the License. padding: 9px; padding-left: 11px; width: auto; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; + -ms-flex: 1 1 0px; + flex: 1 1 0; } .mx_SearchBar_searchButton { cursor: pointer; @@ -8703,21 +8638,14 @@ limitations under the License. border-radius: 0px 3px 3px 0px; background-color: #76CFA6; } -@-webkit-keyframes pulsate { - 0% { opacity: 1.0; } - 50% { opacity: 0.1; } - 100% { opacity: 1.0; } -} @keyframes pulsate { 0% { opacity: 1.0; } 50% { opacity: 0.1; } 100% { opacity: 1.0; } } .mx_SearchBar_searching img { - -webkit-animation: pulsate 0.5s ease-out; - animation: pulsate 0.5s ease-out; - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; + animation: pulsate 0.5s ease-out; + animation-iteration-count: infinite; } .mx_SearchBar_button { display: inline; @@ -8762,17 +8690,12 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_SearchableEntityList { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - - -webkit-box-direction: normal; - - -ms-flex-direction: column; + -ms-flex-direction: column; - flex-direction: column; + flex-direction: column; } .mx_SearchableEntityList_query { font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; @@ -8797,9 +8720,8 @@ limitations under the License. font-size: 12px; } .mx_SearchableEntityList_listWrapper { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; overflow-y: auto; } @@ -8813,9 +8735,8 @@ limitations under the License. } .mx_SearchableEntityList_hrWrapper { width: 100%; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } .mx_SearchableEntityList hr { height: 1px; @@ -8837,22 +8758,16 @@ limitations under the License. border: none; } .mx_Stickers_contentPlaceholder { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-positive: 1; + flex-grow: 1; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; text-align: center; } .mx_Stickers_contentPlaceholder p { @@ -8984,6 +8899,33 @@ limitations under the License. height: 100%; } /* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_KeyBackupPanel_sigValid, .mx_KeyBackupPanel_sigInvalid, .mx_KeyBackupPanel_deviceVerified, .mx_KeyBackupPanel_deviceNotVerified { + font-weight: bold; +} +.mx_KeyBackupPanel_sigValid, .mx_KeyBackupPanel_deviceVerified { + color: #76cfa5; +} +.mx_KeyBackupPanel_sigInvalid, .mx_KeyBackupPanel_deviceNotVerified { + color: #ba6363; +} +.mx_KeyBackupPanel_deviceName { + font-style: italic; +} +/* Copyright 2015, 2016 OpenMarket Ltd Licensed under the Apache License, Version 2.0 (the "License"); @@ -9105,16 +9047,14 @@ limitations under the License. font-weight: bold; } .mx_IncomingCallBox_buttons { - display: -webkit-box; display: -ms-flexbox; display: flex; } .mx_IncomingCallBox_buttons_cell { vertical-align: middle; padding: 6px; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; } .mx_IncomingCallBox_buttons_decline, .mx_IncomingCallBox_buttons_accept { vertical-align: middle; @@ -9172,8 +9112,7 @@ limitations under the License. height: 100%; } .mx_VideoView_localVideoFeed.mx_VideoView_localVideoFeed_flipped video { - -webkit-transform: scale(-1, 1); - transform: scale(-1, 1); + transform: scale(-1, 1); } diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-light.css.map b/riot/bundles/c2932262ed6106cd4535/theme-light.css.map similarity index 52% rename from riot/bundles/f5c70ee9a294f6e4590e/theme-light.css.map rename to riot/bundles/c2932262ed6106cd4535/theme-light.css.map index b6829e8..2b3de5b 100644 --- a/riot/bundles/f5c70ee9a294f6e4590e/theme-light.css.map +++ b/riot/bundles/c2932262ed6106cd4535/theme-light.css.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"bundles/f5c70ee9a294f6e4590e/theme-light.css","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"bundles/c2932262ed6106cd4535/theme-light.css","sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-light.js b/riot/bundles/c2932262ed6106cd4535/theme-light.js similarity index 91% rename from riot/bundles/f5c70ee9a294f6e4590e/theme-light.js rename to riot/bundles/c2932262ed6106cd4535/theme-light.js index 283c609..68b6d18 100644 --- a/riot/bundles/f5c70ee9a294f6e4590e/theme-light.js +++ b/riot/bundles/c2932262ed6106cd4535/theme-light.js @@ -1,2 +1,2 @@ -!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1888)}({1888:function(e,t){}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1900)}({1900:function(e,t){}}); //# sourceMappingURL=theme-light.js.map \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-light.js.map b/riot/bundles/c2932262ed6106cd4535/theme-light.js.map similarity index 96% rename from riot/bundles/f5c70ee9a294f6e4590e/theme-light.js.map rename to riot/bundles/c2932262ed6106cd4535/theme-light.js.map index 06c9421..bb6c78e 100644 --- a/riot/bundles/f5c70ee9a294f6e4590e/theme-light.js.map +++ b/riot/bundles/c2932262ed6106cd4535/theme-light.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack/bootstrap"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s"],"mappings":"aACA,IAAAA,KAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,IACAG,EAAAH,EACAI,GAAA,EACAH,YAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,GAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,aAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA","file":"bundles/f5c70ee9a294f6e4590e/theme-light.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1888);\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack/bootstrap"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s"],"mappings":"aACA,IAAAA,KAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,IACAG,EAAAH,EACAI,GAAA,EACAH,YAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,GAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,aAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA","file":"bundles/c2932262ed6106cd4535/theme-light.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1900);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-status.css b/riot/bundles/c2932262ed6106cd4535/theme-status.css similarity index 89% rename from riot/bundles/f5c70ee9a294f6e4590e/theme-status.css rename to riot/bundles/c2932262ed6106cd4535/theme-status.css index 2ad99a7..f3af9a7 100644 --- a/riot/bundles/f5c70ee9a294f6e4590e/theme-status.css +++ b/riot/bundles/c2932262ed6106cd4535/theme-status.css @@ -110,7 +110,7 @@ body { /* This should render the fonts the same accross browsers */ -webkit-font-smoothing: subpixel-antialiased; } -div.error, div.warning { +.error, .warning { color: #F69E98; } h2 { @@ -196,17 +196,13 @@ textarea { width: 100%; height: 100%; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; } /* Spinner Dialog overide */ .mx_Dialog_wrapper.mx_Dialog_spinner .mx_Dialog { @@ -227,8 +223,7 @@ textarea { font-weight: 300; font-size: 15px; position: relative; - padding-left: 58px; - padding-bottom: 36px; + padding: 0 58px 36px; width: 60%; max-width: 704px; box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.2); @@ -267,13 +262,12 @@ textarea { pointer-events: none; } .mx_Dialog_content { - margin: 24px 58px 68px 0; + margin: 24px 0 68px; font-size: 14px; color: #70808D; word-wrap: break-word; } .mx_Dialog_buttons { - padding-right: 58px; text-align: right; } .mx_Dialog button, .mx_Dialog input[type="submit"] { @@ -306,8 +300,7 @@ textarea { background-color: #84cfff; } .mx_Dialog button:focus, .mx_Dialog input[type="submit"]:focus { - -webkit-filter: brightness(125%); - filter: brightness(125%); + filter: brightness(125%); } .mx_Dialog button.mx_Dialog_primary, .mx_Dialog input[type="submit"].mx_Dialog_primary { color: #ffffff; @@ -323,6 +316,10 @@ textarea { border: solid 1px #747474; opacity: 0.7; } +.mx_linkButton { + cursor: pointer; + color: #6CC1F6; +} .mx_Dialog_title { min-height: 16px; padding-top: 40px; @@ -404,8 +401,7 @@ textarea { cursor: help; transition-duration: 200ms; font-size: smaller; - -webkit-filter: opacity(0.5); - filter: opacity(0.5); + filter: opacity(0.5); } .mx_Beta:hover { color: white; @@ -414,16 +410,12 @@ textarea { } .mx_TintableSvgButton { position: relative; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-pack: center; + justify-content: center; -ms-flex-line-pack: center; align-content: center; } @@ -711,15 +703,12 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_FilePanel { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; - -webkit-box-flex: 1; + -ms-flex: 1 1 0px; - -ms-flex: 1 1 0px; - - flex: 1 1 0; + flex: 1 1 0; width: 100%; @@ -745,29 +734,25 @@ limitations under the License. margin-right: 0px; } .mx_FilePanel .mx_EventTile .mx_MFileBody_download { - display: -webkit-box; display: -ms-flexbox; display: flex; font-size: 14px; color: #acacac; } .mx_FilePanel .mx_EventTile .mx_MFileBody_downloadLink { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; color: #747474; } .mx_FilePanel .mx_EventTile .mx_MImageBody_size { - -webkit-box-flex: 1; - -ms-flex: 1 0 0px; - flex: 1 0 0; + -ms-flex: 1 0 0px; + flex: 1 0 0; font-size: 11px; text-align: right; white-space: nowrap; } /* Overides for the sender details line */ .mx_FilePanel .mx_EventTile_senderDetails { - display: -webkit-box; display: -ms-flexbox; display: flex; margin-top: -2px; @@ -776,9 +761,8 @@ limitations under the License. text-decoration: none; } .mx_FilePanel .mx_EventTile .mx_SenderProfile { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; line-height: initial; padding: 0px; font-size: 11px; @@ -786,9 +770,8 @@ limitations under the License. color: #acacac; } .mx_FilePanel .mx_EventTile .mx_MessageTimestamp { - -webkit-box-flex: 1; - -ms-flex: 1 0 0px; - flex: 1 0 0; + -ms-flex: 1 0 0px; + flex: 1 0 0; text-align: right; visibility: visible; position: initial; @@ -827,13 +810,10 @@ limitations under the License. width: 100%; margin-left: auto; margin-right: auto; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; overflow: hidden; } .mx_GroupView_error { @@ -842,10 +822,8 @@ limitations under the License. .mx_GroupView_header { max-width: 960px; min-height: 70px; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; + -ms-flex-align: center; + align-items: center; display: -ms-flexbox; display: flex; padding-bottom: 10px; @@ -892,19 +870,16 @@ limitations under the License. height: 48px ! important; } .mx_GroupView_header_leftCol { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; overflow: hidden; } .mx_GroupView_header_rightCol { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .mx_GroupView_textButton { display: inline-block; @@ -961,21 +936,16 @@ limitations under the License. line-height: 2em; } .mx_GroupView_body { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; } .mx_GroupView_rooms { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - display: -webkit-box; + -ms-flex-positive: 1; + flex-grow: 1; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; min-height: 200px; -webkit-user-select: none; -moz-user-select: none; @@ -1015,34 +985,29 @@ limitations under the License. color: #6CC1F6; } .mx_GroupView_rooms .mx_RoomDetailList { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; border-top: 1px solid #e5e5e5; padding-top: 10px; word-break: break-word; } .mx_GroupView .mx_RoomView_messageListWrapper { - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; } .mx_GroupView_membershipSection { color: #888; margin-top: 10px; } .mx_GroupView_membershipSubSection { - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - display: -webkit-box; + -ms-flex-pack: justify; + justify-content: space-between; display: -ms-flexbox; display: flex; } .mx_GroupView_membershipSubSection .mx_Spinner { - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; + -ms-flex-pack: end; + justify-content: flex-end; } .mx_GroupView_membershipSection_description { /* To match textButton */ @@ -1080,7 +1045,6 @@ limitations under the License. margin-top: 10px; } .mx_GroupView_featuredThings_container { - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -1168,7 +1132,6 @@ limitations under the License. .mx_HomePage_body { } .mx_HomePage_guest_warning { - display: -webkit-box; display: -ms-flexbox; display: flex; background-color: #586C7B; @@ -1199,42 +1162,33 @@ limitations under the License. .mx_LeftPanel { position: relative; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .mx_LeftPanel_container { - display: -webkit-box; display: -ms-flexbox; display: flex; /* LeftPanel 235px */ - -webkit-box-flex: 0; - -ms-flex: 0 0 235px; - flex: 0 0 235px; + -ms-flex: 0 0 235px; + flex: 0 0 235px; } .mx_LeftPanel_container.mx_LeftPanel_container_hasTagPanel { /* TagPanel 60px + LeftPanel 235px */ - -webkit-box-flex: 0; - -ms-flex: 0 0 295px; - flex: 0 0 295px; + -ms-flex: 0 0 295px; + flex: 0 0 295px; } .mx_LeftPanel_container_collapsed { /* Collapsed LeftPanel 60px */ - -webkit-box-flex: 0; - -ms-flex: 0 0 60px; - flex: 0 0 60px; + -ms-flex: 0 0 60px; + flex: 0 0 60px; } .mx_LeftPanel_container_collapsed.mx_LeftPanel_container_hasTagPanel { /* TagPanel 60px + Collapsed LeftPanel 60px */ - -webkit-box-flex: 0; - -ms-flex: 0 0 120px; - flex: 0 0 120px; + -ms-flex: 0 0 120px; + flex: 0 0 120px; } .mx_LeftPanel_hideButton { position: absolute; @@ -1250,36 +1204,30 @@ limitations under the License. height: 132px; } .mx_LeftPanel .mx_RoomList_scrollbar { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - - -webkit-box-flex: 1; + -ms-flex-order: 1; + order: 1; - -ms-flex: 1 1 0px; + -ms-flex: 1 1 0px; - flex: 1 1 0; + flex: 1 1 0; overflow-y: auto; z-index: 6; } .mx_LeftPanel.collapsed .mx_BottomLeftMenu { - -webkit-box-flex: 0; - -ms-flex: 0 0 160px; - flex: 0 0 160px; + -ms-flex: 0 0 160px; + flex: 0 0 160px; margin-bottom: 9px; } .mx_LeftPanel .mx_BottomLeftMenu { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; + -ms-flex-order: 3; + order: 3; border-top: 1px solid rgba(0, 0, 0, 0.2); margin-left: 16px; /* gutter */ margin-right: 16px; /* gutter */ - -webkit-box-flex: 0; - -ms-flex: 0 0 60px; - flex: 0 0 60px; + -ms-flex: 0 0 60px; + flex: 0 0 60px; z-index: 1; } .mx_LeftPanel .mx_BottomLeftMenu_options { @@ -1311,14 +1259,12 @@ limitations under the License. float: none; } .mx_MatrixChat_useCompactLayout .mx_LeftPanel .mx_BottomLeftMenu { - -webkit-box-flex: 0; - -ms-flex: 0 0 50px; - flex: 0 0 50px; + -ms-flex: 0 0 50px; + flex: 0 0 50px; } .mx_MatrixChat_useCompactLayout .mx_LeftPanel.collapsed .mx_BottomLeftMenu { - -webkit-box-flex: 0; - -ms-flex: 0 0 160px; - flex: 0 0 160px; + -ms-flex: 0 0 160px; + flex: 0 0 160px; } .mx_MatrixChat_useCompactLayout .mx_LeftPanel .mx_BottomLeftMenu_options { margin-top: 12px; @@ -1343,9 +1289,8 @@ limitations under the License. height: unset !important; padding-top: 13px !important; padding-bottom: 14px !important; - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4; + -ms-flex-order: 4; + order: 4; } .mx_LoginBox_loginButton_wrapper { text-align: center; @@ -1395,25 +1340,19 @@ limitations under the License. bottom: 30px; } .mx_MatrixChat_wrapper { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - - -webkit-box-direction: normal; + -ms-flex-direction: column; - -ms-flex-direction: column; - - flex-direction: column; + flex-direction: column; width: 100%; height: 100%; } .mx_MatrixToolbar { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; + -ms-flex-order: 1; + order: 1; height: 40px; } @@ -1424,23 +1363,17 @@ limitations under the License. width: 100%; height: 100%; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-ordinal-group: 3; - - -ms-flex-order: 2; + -ms-flex-order: 2; - order: 2; + order: 2; - -webkit-box-flex: 1; + -ms-flex: 1; - -ms-flex: 1; - - flex: 1; + flex: 1; } .mx_MatrixChat_syncError { color: #ffffff; @@ -1451,41 +1384,33 @@ limitations under the License. position: absolute; top: 100px; left: 50%; - -webkit-transform: translateX(-50%); - transform: translateX(-50%); + transform: translateX(-50%); } .mx_MatrixChat .mx_LeftPanel { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; + -ms-flex-order: 1; + order: 1; background-color: #586C7B; - -webkit-box-flex: 0; - - -ms-flex: 0 0 235px; + -ms-flex: 0 0 235px; - flex: 0 0 235px; + flex: 0 0 235px; } .mx_MatrixChat .mx_LeftPanel.collapsed { - -webkit-box-flex: 0; - -ms-flex: 0 0 60px; - flex: 0 0 60px; + -ms-flex: 0 0 60px; + flex: 0 0 60px; } .mx_MatrixChat .mx_MatrixChat_middlePanel { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; padding-left: 20px; padding-right: 22px; background-color: #EEF2F5; - -webkit-box-flex: 1; + -ms-flex: 1; - -ms-flex: 1; - - flex: 1; + flex: 1; /* Experimental fix for https://github.com/vector-im/vector-web/issues/947 and https://github.com/vector-im/vector-web/issues/946. @@ -1494,8 +1419,6 @@ limitations under the License. */ overflow-x: auto; - display: -webkit-box; - display: -ms-flexbox; display: flex; @@ -1507,20 +1430,16 @@ limitations under the License. height: 100%; } .mx_MatrixChat .mx_RightPanel { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; - - -webkit-box-flex: 0; + -ms-flex-order: 3; + order: 3; - -ms-flex: 0 0 235px; + -ms-flex: 0 0 235px; - flex: 0 0 235px; + flex: 0 0 235px; } .mx_MatrixChat .mx_RightPanel.collapsed { - -webkit-box-flex: 0; - -ms-flex: 0 0 122px; - flex: 0 0 122px; + -ms-flex: 0 0 122px; + flex: 0 0 122px; } /* Copyright 2017 Vector Creations Ltd @@ -1542,15 +1461,11 @@ limitations under the License. margin-left: auto; margin-right: auto; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .mx_MyGroups .mx_RoomHeader_simpleHeader { margin-left: 0px; @@ -1558,24 +1473,20 @@ limitations under the License. .mx_MyGroups_header { /* Keep mid-point of create button aligned with icon in page header */ margin-left: 2px; - display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; } .mx_MyGroups_headerCard { - -webkit-box-flex: 1; - -ms-flex: 1 0 50%; - flex: 1 0 50%; + -ms-flex: 1 0 50%; + flex: 1 0 50%; margin-bottom: 30px; min-width: 400px; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .mx_MyGroups_headerCard .mx_MyGroups_headerCard_button { margin-right: 13px; @@ -1606,21 +1517,15 @@ limitations under the License. .mx_MyGroups_content { margin-left: 2px; - -webkit-box-flex: 1; + -ms-flex: 1 0 0px; - -ms-flex: 1 0 0px; - - flex: 1 0 0; - - display: -webkit-box; + flex: 1 0 0; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .mx_MyGroups_placeholder { background-color: #f7f7f7; @@ -1633,15 +1538,11 @@ limitations under the License. border-top: 1px solid #e5e5e5; overflow-x: hidden; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; -ms-flex-flow: wrap; flex-flow: wrap; -ms-flex-line-pack: start; @@ -1650,35 +1551,27 @@ limitations under the License. .mx_MyGroups_joinedGroups .mx_GroupTile { min-width: 300px; max-width: 33%; - -webkit-box-flex: 1; - -ms-flex: 1 0 300px; - flex: 1 0 300px; + -ms-flex: 1 0 300px; + flex: 1 0 300px; height: 75px; margin: 10px 0px; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; cursor: pointer; } .mx_GroupTile_avatar { - cursor: -webkit-grab, -webkit-grab; cursor: grab, -webkit-grab; } .mx_GroupTile_profile { margin-left: 10px; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; } .mx_GroupTile_profile .mx_GroupTile_name, .mx_GroupTile_profile .mx_GroupTile_groupId, .mx_GroupTile_profile .mx_GroupTile_desc { padding-right: 10px; @@ -1693,7 +1586,6 @@ limitations under the License. .mx_GroupTile_profile .mx_GroupTile_desc { display: -webkit-box; -webkit-line-clamp: 2; - -webkit-box-orient: vertical; font-size: 13px; max-height: 36px; overflow: hidden; @@ -1717,15 +1609,12 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_NotificationPanel { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - - -webkit-box-flex: 1; + -ms-flex-order: 2; + order: 2; - -ms-flex: 1 1 0px; + -ms-flex: 1 1 0px; - flex: 1 1 0; + flex: 1 1 0; width: 100%; @@ -1807,34 +1696,26 @@ limitations under the License. .mx_RightPanel { position: relative; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .mx_RightPanel_header { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; + -ms-flex-order: 1; + order: 1; border-bottom: 1px solid #e5e5e5; margin-right: 20px; - -webkit-box-flex: 0; + -ms-flex: 0 0 70px; - -ms-flex: 0 0 70px; - - flex: 0 0 70px; + flex: 0 0 70px; } /** Fixme - factor this out with the main header **/ .mx_RightPanel_headerButtonGroup { margin-top: 6px; - display: -webkit-box; display: -ms-flexbox; display: flex; width: 100%; @@ -1843,9 +1724,8 @@ limitations under the License. } .mx_RightPanel_headerButton { cursor: pointer; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; vertical-align: top; padding-left: 4px; padding-right: 5px; @@ -1856,6 +1736,9 @@ limitations under the License. pointer-events: none; padding-bottom: 3px; } +.mx_RightPanel_headerButton_badgeHighlight .mx_RightPanel_headerButton_badge { + color: #F69E98; +} .mx_RightPanel_headerButton_highlight { width: 25px; height: 5px; @@ -1870,39 +1753,32 @@ limitations under the License. padding-bottom: 2px; } .mx_RightPanel_collapsebutton { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; text-align: right; margin-top: 20px; } .mx_RightPanel .mx_MemberList, .mx_RightPanel .mx_MemberInfo, .mx_RightPanel .mx_GroupRoomList, .mx_RightPanel_blank { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; + -ms-flex-order: 2; + order: 2; + -ms-flex: 1 1 0px; + flex: 1 1 0; } .mx_RightPanel .mx_RoomView_messagePanelSpinner { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; margin: auto; } .mx_RightPanel_footer { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; + -ms-flex-order: 3; + order: 3; border-top: 1px solid #e5e5e5; margin-right: 20px; - -webkit-box-flex: 0; + -ms-flex: 0 0 60px; - -ms-flex: 0 0 60px; - - flex: 0 0 60px; + flex: 0 0 60px; } .mx_RightPanel_footer .mx_RightPanel_invite { font-size: 14px; @@ -1910,12 +1786,10 @@ limitations under the License. padding-top: 13px; padding-left: 5px; cursor: pointer; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .collapsed .mx_RightPanel_footer .mx_RightPanel_invite { display: none; @@ -1928,9 +1802,8 @@ limitations under the License. line-height: 18px; } .mx_MatrixChat_useCompactLayout .mx_RightPanel_footer { - -webkit-box-flex: 0; - -ms-flex: 0 0 50px; - flex: 0 0 50px; + -ms-flex: 0 0 50px; + flex: 0 0 50px; } .mx_MatrixChat_useCompactLayout .mx_RightPanel_footer .mx_RightPanel_invite { line-height: 25px; @@ -1960,46 +1833,32 @@ limitations under the License. color: #70808D; word-break: break-word; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - - -webkit-box-direction: normal; - - -ms-flex-direction: column; + -ms-flex-direction: column; - flex-direction: column; + flex-direction: column; } .mx_RoomDirectory .mx_RoomHeader_simpleHeader { margin-left: 0px; } .mx_RoomDirectory_list { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - - display: -webkit-box; + -ms-flex: 1; + flex: 1; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - - -webkit-box-direction: normal; - - -ms-flex-direction: column; + -ms-flex-direction: column; - flex-direction: column; + flex-direction: column; } .mx_RoomDirectory_list .mx_RoomView_messageListWrapper { - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; } .mx_RoomDirectory_listheader { display: table; @@ -2019,9 +1878,8 @@ limitations under the License. } .mx_RoomDirectory_tableWrapper { overflow-y: auto; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; + -ms-flex: 1 1 0px; + flex: 1 1 0; } .mx_RoomDirectory_table { font-size: 14px; @@ -2121,27 +1979,13 @@ limitations under the License. */ } .mx_RoomStatusBar_placeholderIndicator span:nth-child(1) { - -webkit-animation-delay: 0.3s; - animation-delay: 0.3s; + animation-delay: 0.3s; } .mx_RoomStatusBar_placeholderIndicator span:nth-child(2) { - -webkit-animation-delay: 0.6s; - animation-delay: 0.6s; + animation-delay: 0.6s; } .mx_RoomStatusBar_placeholderIndicator span:nth-child(3) { - -webkit-animation-delay: 0.9s; - animation-delay: 0.9s; -} -@-webkit-keyframes bounce { - from { - opacity: 0.5; - top: 0; - } - - to { - opacity: 0.2; - top: -3px; - } + animation-delay: 0.9s; } @keyframes bounce { from { @@ -2191,7 +2035,6 @@ limitations under the License. cursor: pointer; } .mx_RoomStatusBar_connectionLostBar { - display: -webkit-box; display: -ms-flexbox; display: flex; @@ -2334,8 +2177,7 @@ limitations under the License. background-color: #6CC1F6; } .mx_RoomSubList_label .mx_RoomSubList_badge:hover { - -webkit-filter: brightness(125%); - filter: brightness(125%); + filter: brightness(125%); } /* .collapsed .mx_RoomSubList_badge { @@ -2487,31 +2329,22 @@ limitations under the License. word-wrap: break-word; position: relative; - display: -webkit-box; - display: -ms-flexbox; display: flex; width: 100%; - -webkit-box-orient: vertical; - - -webkit-box-direction: normal; + -ms-flex-direction: column; - -ms-flex-direction: column; - - flex-direction: column; + flex-direction: column; } .mx_RoomView .mx_RoomHeader { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - - -webkit-box-flex: 0; + -ms-flex-order: 1; + order: 1; - -ms-flex: 0 0 70px; + -ms-flex: 0 0 70px; - flex: 0 0 70px; + flex: 0 0 70px; } .mx_RoomView_fileDropTarget { min-width: 0px; @@ -2544,9 +2377,8 @@ limitations under the License. position: absolute; } .mx_RoomView_auxPanel { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; min-width: 0px; max-width: 960px; @@ -2556,55 +2388,43 @@ limitations under the License. overflow: auto; border-bottom: 1px solid #e5e5e5; - -webkit-box-flex: 0; + -ms-flex: 0 0 auto; - -ms-flex: 0 0 auto; - - flex: 0 0 auto; + flex: 0 0 auto; } .mx_RoomView_auxPanel_apps { max-width: 1920px ! important; } .mx_RoomView_body { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - display: -webkit-box; + -ms-flex-order: 3; + order: 3; + -ms-flex: 1 1 0px; + flex: 1 1 0; + -ms-flex-direction: column; + flex-direction: column; display: -ms-flexbox; display: flex; } .mx_RoomView_body .mx_RoomView_topUnreadMessagesBar { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; + -ms-flex-order: 1; + order: 1; } .mx_RoomView_body .mx_RoomView_messagePanel { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; } .mx_RoomView_body .mx_RoomView_messagePanelSpinner { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; margin: auto; } .mx_RoomView_body .mx_RoomView_statusArea { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; + -ms-flex-order: 3; + order: 3; } .mx_RoomView_body .mx_MessageComposer { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4; + -ms-flex-order: 4; + order: 4; } .mx_RoomView_messagePanel { width: 100%; @@ -2616,35 +2436,25 @@ limitations under the License. min-height: 100%; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; + -ms-flex-direction: column; - -webkit-box-direction: normal; + flex-direction: column; - -ms-flex-direction: column; + -ms-flex-pack: end; - flex-direction: column; - - -webkit-box-pack: end; - - -ms-flex-pack: end; - - justify-content: flex-end; + justify-content: flex-end; } .mx_RoomView_searchResultsPanel .mx_RoomView_messageListWrapper { - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; } .mx_RoomView_empty { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; font-size: 13px; padding-left: 3em; padding-right: 3em; @@ -2676,9 +2486,8 @@ hr.mx_RoomView_myReadMarker { } .mx_RoomView_statusArea { width: 100%; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; max-height: 0px; background-color: #EEF2F5; @@ -2737,9 +2546,8 @@ hr.mx_RoomView_myReadMarker { } .mx_RoomView .mx_MessageComposer { width: 100%; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; margin-right: 2px; } .mx_RoomView_ongoingConfCallNotification { @@ -2784,8 +2592,6 @@ limitations under the License. border-bottom: 1px solid rgba(0, 0, 0, 0.2); - display: -webkit-box; - display: -ms-flexbox; display: flex; @@ -2800,9 +2606,8 @@ limitations under the License. margin-top: -5px; } .mx_SearchBox_search { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; width: 0px; font-family: PostGrotesk-Book, Arial, Helvetica, Sans-Serif; font-size: 12px; @@ -2841,26 +2646,19 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_TagPanel { - -webkit-box-flex: 0; - -ms-flex: 0 0 60px; - flex: 0 0 60px; + -ms-flex: 0 0 60px; + flex: 0 0 60px; background-color: #DBEBF6; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between; } .mx_TagPanel_items_selected { cursor: pointer; @@ -2870,23 +2668,17 @@ limitations under the License. height: 70px; width: 60px; - -webkit-box-flex: 0; - - -ms-flex: none; + -ms-flex: none; - flex: none; - - display: -webkit-box; + flex: none; display: -ms-flexbox; display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-align: start; + align-items: flex-start; } .mx_TagPanel .mx_TagPanel_clearButton object { /* Same as .mx_SearchBox padding-top */ @@ -2899,21 +2691,16 @@ limitations under the License. border-bottom: 1px solid rgba(0, 0, 0, 0.2); } .mx_TagPanel .mx_TagPanel_scroller { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; } .mx_TagPanel .mx_TagPanel_tagTileContainer { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: center; + align-items: center; height: 100%; } @@ -2940,8 +2727,7 @@ limitations under the License. width: 35px; } .mx_TagPanel .mx_TagTile.mx_AccessibleButton:focus { - -webkit-filter: none; - filter: none; + filter: none; } .mx_TagTile_tooltip { position: relative; @@ -3048,37 +2834,27 @@ limitations under the License. margin-left: auto; margin-right: auto; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .mx_UserSettings .mx_RoomHeader { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - - -webkit-box-flex: 0; + -ms-flex-order: 1; + order: 1; - -ms-flex: 0 0 70px; + -ms-flex: 0 0 70px; - flex: 0 0 70px; + flex: 0 0 70px; } .mx_UserSettings_body { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; - -webkit-box-flex: 1; + -ms-flex: 1 1 0px; - -ms-flex: 1 1 0px; - - flex: 1 1 0; + flex: 1 1 0; margin-top: -20px; overflow-y: auto; @@ -3318,17 +3094,13 @@ limitations under the License. width: 100%; height: 100%; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; overflow: auto; } @@ -3445,6 +3217,15 @@ limitations under the License. .mx_Login_forgot:link { color: #70808D; } +.mx_Login_sso_link { + display: block; + text-align: center; + font-size: 15px; + margin-bottom: 20px; +} +.mx_Login_sso_link:link { + color: #70808D; +} .mx_Login_loader { display: inline; position: relative; @@ -3469,15 +3250,13 @@ limitations under the License. margin-bottom: 12px; } .mx_Login_type_container { - display: -webkit-box; display: -ms-flexbox; display: flex; margin-bottom: 14px; } .mx_Login_type_label { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; line-height: 35px; } .mx_Login_type_dropdown { @@ -3485,12 +3264,10 @@ limitations under the License. min-width: 170px; -ms-flex-item-align: end; align-self: flex-end; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; } .mx_Login_field_group { - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -3517,9 +3294,8 @@ limitations under the License. border-radius: 0px 3px 3px 0px; text-align: center; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; } .mx_Login_username { height: 16px; @@ -3539,7 +3315,6 @@ limitations under the License. border-bottom-right-radius: 0px; } .mx_Login_phoneSection { - display:-webkit-box; display:-ms-flexbox; display:flex; } @@ -3574,7 +3349,6 @@ limitations under the License. min-width: 60%; } .mx_Login_language_div { - display: -webkit-box; display: -ms-flexbox; display: flex; margin-top: 12px; @@ -3613,6 +3387,25 @@ limitations under the License. background-color: transparent; } /* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MemberStatusMessageAvatar_hasStatus { + border: 2px solid #6CC1F6; + border-radius: 40px; +} +/* Copyright 2015, 2016 OpenMarket Ltd Licensed under the Apache License, Version 2.0 (the "License"); @@ -3656,12 +3449,10 @@ limitations under the License. padding-bottom: 8px; cursor: pointer; white-space: nowrap; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; line-height: 16px; } .mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldSet { @@ -3714,12 +3505,10 @@ limitations under the License. padding-left: 8px; /* 20px */ cursor: pointer; white-space: nowrap; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .mx_RoomTileContextMenu_notif_field.mx_RoomTileContextMenu_notif_fieldSet { font-weight: bold; @@ -3743,6 +3532,53 @@ limitations under the License. /* Copyright 2018 New Vector Ltd +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_StatusMessageContextMenu_message { + display: inline-block; + border-radius: 3px 0 0 3px; + border: 1px solid #c9cfd4; + font-size: 13px; + padding: 7px 7px 7px 9px; + width: 135px; + background-color: #EEF2F5 !important; +} +.mx_StatusMessageContextMenu_submit { + display: inline-block; +} +.mx_StatusMessageContextMenu_submitFaded { + opacity: 0.5; +} +.mx_StatusMessageContextMenu_submit img { + vertical-align: middle; + margin-left: 8px; +} +.mx_StatusMessageContextMenu hr { + border: 0.5px solid rgba(187, 187, 187, 0.5); +} +.mx_StatusMessageContextMenu_clearIcon { + margin: 5px 15px 5px 5px; + vertical-align: middle; +} +.mx_StatusMessageContextMenu_clear { + padding: 2px; +} +.mx_StatusMessageContextMenu_hasStatus .mx_StatusMessageContextMenu_clear { + color: #F69E98; +} +/* +Copyright 2018 New Vector Ltd + Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at @@ -3761,14 +3597,15 @@ limitations under the License. padding-bottom: 8px; cursor: pointer; white-space: nowrap; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; line-height: 16px; } +.mx_TagTileContextMenu_item object { + pointer-events: none; +} .mx_TagTileContextMenu_item_icon { padding-right: 8px; padding-left: 4px; @@ -3800,7 +3637,6 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_BugReportDialog_field_container { - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -3816,9 +3652,8 @@ limitations under the License. line-height: 18px; } .mx_BugReportDialog_field_input { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; /* taken from mx_ChatInviteDialog_inputContainer */ border-radius: 3px; @@ -3890,7 +3725,6 @@ limitations under the License. display: none; } .mx_ChatCreateOrReuseDialog_profile { - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -4041,7 +3875,6 @@ limitations under the License. border-radius: 0px; } .mx_CreateGroupDialog_input_group { - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -4131,9 +3964,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -.mx_DevTools_dialog { - padding-right: 58px; -} .mx_DevTools_content { margin: 10px 0; } @@ -4227,8 +4057,7 @@ limitations under the License. padding: 2px; transition: all .2s ease; font-family: sans-serif; - -webkit-perspective: 100px; - perspective: 100px; + perspective: 100px; } .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:after, .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:before { display: inline-block; @@ -4248,30 +4077,25 @@ limitations under the License. .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:after { content: attr(data-tg-on); background: #02C66F; - -webkit-transform: rotateY(-180deg); - transform: rotateY(-180deg); + transform: rotateY(-180deg); } .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:before { background: #FF3A19; content: attr(data-tg-off); } .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:active:before { - -webkit-transform: rotateY(-20deg); - transform: rotateY(-20deg); + transform: rotateY(-20deg); } .mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:before { - -webkit-transform: rotateY(180deg); - transform: rotateY(180deg); + transform: rotateY(180deg); } .mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:after { - -webkit-transform: rotateY(0); - transform: rotateY(0); + transform: rotateY(0); left: 0; background: #7FC6A6; } .mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:active:after { - -webkit-transform: rotateY(20deg); - transform: rotateY(20deg); + transform: rotateY(20deg); } /* Copyright 2016 OpenMarket Ltd @@ -4315,6 +4139,9 @@ limitations under the License. background-color: #EEF2F5; color: #6CC1F6; } +.mx_EncryptedEventDialog button { + margin-top: 0px; +} /* Copyright 2017 New Vector Ltd @@ -4332,7 +4159,6 @@ limitations under the License. */ .mx_GroupAddressPicker_checkboxContainer{ margin-top: 10px; - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -4343,6 +4169,24 @@ limitations under the License. /* Copyright 2018 New Vector Ltd +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RestoreKeyBackupDialog_keyStatus { + height: 30px; +} +/* +Copyright 2018 New Vector Ltd + Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at @@ -4411,7 +4255,6 @@ limitations under the License. padding-right: 40px; } .mx_SetMxIdDialog_input_group { - display: -webkit-box; display: -ms-flexbox; display: flex; } @@ -4431,9 +4274,8 @@ limitations under the License. .mx_SetMxIdDialog_input_group .mx_Spinner { height: 37px; padding-left: 10px; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; } .mx_SetMxIdDialog .success { color: #6CC1F6; @@ -4485,9 +4327,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -.mx_ShareDialog { - padding-right: 58px; -} .mx_ShareDialog hr { margin-top: 25px; margin-bottom: 25px; @@ -4497,12 +4336,10 @@ limitations under the License. margin: 10px 0; } .mx_ShareDialog_matrixto { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; border-radius: 5px; border: solid 1px #747474; margin-bottom: 10px; @@ -4532,7 +4369,6 @@ limitations under the License. height: 20px; } .mx_ShareDialog_split { - display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; @@ -4574,17 +4410,13 @@ limitations under the License. */ .mx_Dialog_unknownDevice .mx_Dialog { height: 100%; - padding-right: 58px; } .mx_UnknownDeviceDialog { height: 100%; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .mx_UnknownDeviceDialog .mx_Dialog_content { margin-bottom: 24px; @@ -4627,7 +4459,7 @@ limitations under the License. border-bottom: 1px solid #e5e5e5; } /* -Copyright 2015, 2016 OpenMarket Ltd +Copyright 2018 New Vector Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -4641,39 +4473,180 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -.mx_NetworkDropdown { - position: relative; +.mx_CreateKeyBackupDialog { + padding-right: 40px; } -.mx_NetworkDropdown_input { - position: relative; - border-radius: 3px; - border: 1px solid #c7c7c7; - font-weight: 300; - font-size: 13px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; +.mx_CreateKeyBackupDialog_primaryContainer { + /*FIXME: plinth colour in new theme(s). background-color: $accent-color;*/ + padding: 20px } -.mx_NetworkDropdown_arrow { - border-color: #70808D transparent transparent; - border-style: solid; - border-width: 5px 5px 0; +.mx_CreateKeyBackupDialog_primaryContainer::after { + content: ""; + clear: both; display: block; - height: 0; - position: absolute; - right: 10px; - top: 14px; - width: 0 -} -.mx_NetworkDropdown_networkoption { - height: 35px; - line-height: 35px; - padding-left: 8px; - padding-right: 8px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; +} +.mx_CreateKeyBackupDialog_passPhraseContainer { + display: -ms-flexbox; + display: flex; + -ms-flex-align: start; + align-items: start; +} +.mx_CreateKeyBackupDialog_passPhraseHelp { + -ms-flex: 1; + flex: 1; + height: 85px; + margin-left: 20px; + font-size: 80%; +} +.mx_CreateKeyBackupDialog_passPhraseHelp progress { + width: 100%; +} +.mx_CreateKeyBackupDialog_passPhraseInput { + -ms-flex: none; + flex: none; + width: 250px; + border: 1px solid #6CC1F6; + border-radius: 5px; + padding: 10px; + margin-bottom: 1em; +} +.mx_CreateKeyBackupDialog_passPhraseMatch { + margin-left: 20px; +} +.mx_CreateKeyBackupDialog_recoveryKeyHeader { + margin-bottom: 1em; +} +.mx_CreateKeyBackupDialog_recoveryKeyContainer { + display: -ms-flexbox; + display: flex; +} +.mx_CreateKeyBackupDialog_recoveryKey { + width: 262px; + padding: 20px; + color: #888; + background-color: #f7f7f7; + margin-right: 12px; +} +.mx_CreateKeyBackupDialog_recoveryKeyButtons { + -ms-flex: 1; + flex: 1; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; +} +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_NewRecoveryMethodDialog .mx_Dialog_title { + margin-bottom: 32px; +} +.mx_NewRecoveryMethodDialog_title { + position: relative; + padding-left: 45px; + padding-bottom: 10px; +} +.mx_NewRecoveryMethodDialog_title:before { + -webkit-mask: url("../../../img/e2e/lock-warning.svg"); + mask: url("../../../img/e2e/lock-warning.svg"); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background-color: #70808D; + content: ""; + position: absolute; + top: -6px; + right: 0; + bottom: 0; + left: 0; + } +.mx_NewRecoveryMethodDialog .mx_Dialog_buttons { + margin-top: 36px; +} +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RestoreKeyBackupDialog_primaryContainer { + /*FIXME: plinth colour in new theme(s). background-color: $accent-color;*/ + padding: 20px +} +.mx_RestoreKeyBackupDialog_passPhraseInput, .mx_RestoreKeyBackupDialog_recoveryKeyInput { + width: 300px; + border: 1px solid #6CC1F6; + border-radius: 5px; + padding: 10px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_NetworkDropdown { + position: relative; +} +.mx_NetworkDropdown_input { + position: relative; + border-radius: 3px; + border: 1px solid #c7c7c7; + font-weight: 300; + font-size: 13px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_NetworkDropdown_arrow { + border-color: #70808D transparent transparent; + border-style: solid; + border-width: 5px 5px 0; + display: block; + height: 0; + position: absolute; + right: 10px; + top: 14px; + width: 0 +} +.mx_NetworkDropdown_networkoption { + height: 35px; + line-height: 35px; + padding-left: 8px; + padding-right: 8px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; } .mx_NetworkDropdown_networkoption img { margin: 5px; @@ -4720,8 +4693,7 @@ limitations under the License. */ .mx_AccessibleButton:focus { outline: 0; - -webkit-filter: brightness(125%); - filter: brightness(125%); + filter: brightness(125%); } .mx_AccessibleButton { cursor: pointer; @@ -4908,16 +4880,14 @@ limitations under the License. border: 1px solid #c7c7c7; } .mx_DirectorySearchBox_container { - display: -webkit-box; display: -ms-flexbox; display: flex; padding-left: 9px; padding-right: 9px; } .mx_DirectorySearchBox_input { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; border: 0; padding: 0; font-weight: 300; @@ -4995,8 +4965,7 @@ limitations under the License. } /* Disable dropdown highlight on focus */ .mx_Dropdown_input.mx_AccessibleButton:focus { - -webkit-filter: none; - filter: none; + filter: none; } .mx_Dropdown_arrow { border-color: #70808D transparent transparent; @@ -5091,7 +5060,6 @@ limitations under the License. margin-bottom: 0px; } .mx_EditableItem { - display: -webkit-box; display: -ms-flexbox; display: flex; margin-left: 56px; @@ -5144,43 +5112,34 @@ limitations under the License. But empirically it works on Chrome/FF/Safari */ .mx_ImageView { - display: -webkit-box; display: -ms-flexbox; display: flex; width: 100%; height: 100%; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .mx_ImageView_lhs { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - -webkit-box-flex: 1; - -ms-flex: 1 1 10%; - flex: 1 1 10%; + -ms-flex-order: 1; + order: 1; + -ms-flex: 1 1 10%; + flex: 1 1 10%; min-width: 60px; } .mx_ImageView_content { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; /* min-width hack needed for FF */ min-width: 0px; height: 90%; - -webkit-box-flex: 15; - -ms-flex: 15 15 0px; - flex: 15 15 0; - display: -webkit-box; + -ms-flex: 15 15 0px; + flex: 15 15 0; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; } .mx_ImageView_content img { max-width: 100%; @@ -5202,16 +5161,12 @@ limitations under the License. } .mx_ImageView_label { text-align: left; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-direction: column; + flex-direction: column; padding-left: 30px; padding-right: 30px; min-height: 100%; @@ -5261,12 +5216,10 @@ limitations under the License. height: 30px; } .mx_ImageView_rhs { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; - -webkit-box-flex: 1; - -ms-flex: 1 1 10%; - flex: 1 1 10%; + -ms-flex-order: 3; + order: 3; + -ms-flex: 1 1 10%; + flex: 1 1 10%; min-width: 300px; } /* @@ -5311,7 +5264,6 @@ limitations under the License. } .mx_TextualEvent.mx_MemberEventListSummary_summary { font-size: 14px; - display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; } @@ -5470,7 +5422,7 @@ blockquote.mx_ReplyThread { text-decoration: line-through; } /* -Copyright 2107 Vector Creations Ltd +Copyright 2017 Vector Creations Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -5515,20 +5467,16 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_Spinner { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; width: 100%; height: 100%; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; } .mx_MatrixChat_middlePanel .mx_Spinner { height: auto; @@ -5618,14 +5566,11 @@ limitations under the License. background-color: #6CC1F6; color: #ffffff; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .mx_MatrixToolbar_warning { margin-left: 16px; @@ -5643,9 +5588,8 @@ limitations under the License. background-color: #DF2A8B; } .mx_MatrixToolbar_content { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; } .mx_MatrixToolbar_link { @@ -5686,21 +5630,17 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_GroupPublicity_toggle { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; margin: 8px; } .mx_GroupPublicity_toggle > label { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; } .mx_GroupPublicity_toggle > label, .mx_GroupPublicity_toggle .mx_GroupTile { width: 50%; @@ -5710,12 +5650,10 @@ limitations under the License. vertical-align: -4px; } .mx_GroupPublicity_toggle .mx_GroupTile { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; cursor: pointer; } /* @@ -5792,10 +5730,23 @@ limitations under the License. margin-top: 4px; margin-bottom: 5px; } +.mx_InteractiveAuthEntryComponents_termsSubmit { + margin-top: 20px; + margin-bottom: 5px; + display: block; + width: 100%; +} .mx_InteractiveAuthEntryComponents_msisdnSubmit:disabled { background-color: #747474; cursor: default; } +.mx_InteractiveAuthEntryComponents_termsSubmit:disabled { + background-color: #6CC1F67F; + cursor: default; +} +.mx_InteractiveAuthEntryComponents_termsPolicy { + display: block; +} /* Copyright 2015, 2016 OpenMarket Ltd @@ -5984,8 +5935,17 @@ limitations under the License. top: 50%; } .mx_MImageBody_thumbnail_spinner > * { - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} +.mx_MImageBody_gifLabel { + position: absolute; + display: block; + top: 0px; + left: 14px; + padding: 5px; + border-radius: 5px; + background: rgba(0, 0, 0, 0.7); + border: 2px solid rgba(0, 0, 0, 0.2); } /* Copyright 2015, 2016 OpenMarket Ltd @@ -6158,24 +6118,18 @@ limitations under the License. display: none; } .mx_AppsContainer { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; } .mx_AddWidget_button { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; cursor: pointer; padding-right: 12px; padding: 0; @@ -6233,46 +6187,33 @@ limitations under the License. border-bottom: 1px solid #e5e5e5; font-size: 10px; background-color: #f7f7f7; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between; cursor: pointer; } .mx_AppTileMenuBarTitle { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-align: center; + align-items: center; pointer-events: none; } .mx_AppTileMenuBarWidgets { float: right; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-align: center; + align-items: center; } .mx_AppTileMenuBarWidget { cursor: pointer; @@ -6283,8 +6224,7 @@ limitations under the License. border: 1px solid transparent; } .mx_AppTileMenuBarWidgetDelete { - -webkit-filter: none; - filter: none; + filter: none; } .mx_AppTileMenuBarWidget:hover { border: 1px solid #70808D; @@ -6363,15 +6303,12 @@ limitations under the License. background-color: white; border-radius: 3px 3px 0 0; height: 155px; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-align: center; + align-items: center; } form.mx_Custom_Widget_Form div { margin-top: 10px; @@ -6380,20 +6317,15 @@ form.mx_Custom_Widget_Form div { .mx_AppPermissionWarning { text-align: center; background-color: #EEF2F5; - display: -webkit-box; display: -ms-flexbox; display: flex; height: 100%; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-align: center; + align-items: center; } .mx_AppPermissionWarningImage { margin: 10px 0; @@ -6424,19 +6356,14 @@ form.mx_Custom_Widget_Form div { cursor: pointer; } .mx_AppLoading { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-align: center; + align-items: center; font-weight: bold; position: relative; height: 280px; @@ -6449,18 +6376,10 @@ form.mx_Custom_Widget_Form div { right: 0; } .mx_AppLoading_spinner_fadeIn { - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; - -webkit-animation-duration: 200ms; - animation-duration: 200ms; - -webkit-animation-delay: 500ms; - animation-delay: 500ms; - -webkit-animation-name: mx_AppLoading_spinner_fadeIn_animation; - animation-name: mx_AppLoading_spinner_fadeIn_animation; -} -@-webkit-keyframes mx_AppLoading_spinner_fadeIn_animation { - from { opacity: 0 } - to { opacity: 1 } + animation-fill-mode: backwards; + animation-duration: 200ms; + animation-delay: 500ms; + animation-name: mx_AppLoading_spinner_fadeIn_animation; } @keyframes mx_AppLoading_spinner_fadeIn_animation { from { opacity: 0 } @@ -6486,14 +6405,12 @@ form.mx_Custom_Widget_Form div { } .mx_Autocomplete_Completion_container_pill { margin: 12px; - display: -webkit-box; display: -ms-flexbox; display: flex; } /* a "block" completion takes up a whole line */ .mx_Autocomplete_Completion_block { height: 34px; - display: -webkit-box; display: -ms-flexbox; display: flex; padding: 0 12px; @@ -6502,9 +6419,8 @@ form.mx_Custom_Widget_Form div { -ms-user-select: none; user-select: none; cursor: pointer; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; color: #70808D; } .mx_Autocomplete_Completion_block * { @@ -6514,7 +6430,6 @@ form.mx_Custom_Widget_Form div { border-radius: 17px; height: 34px; padding: 0px 5px; - display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-user-select: none; @@ -6522,9 +6437,8 @@ form.mx_Custom_Widget_Form div { -ms-user-select: none; user-select: none; cursor: pointer; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; color: #70808D; } .mx_Autocomplete_Completion_pill > * { @@ -6540,7 +6454,6 @@ form.mx_Custom_Widget_Form div { /* container for pill-style completions */ .mx_Autocomplete_Completion_container_pill { margin: 12px; - display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-flow: wrap; @@ -6559,9 +6472,8 @@ form.mx_Custom_Widget_Form div { /* styling for common completion elements */ .mx_Autocomplete_Completion_subtitle { font-style: italic; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; } .mx_Autocomplete_Completion_description { color: gray; @@ -6654,6 +6566,13 @@ limitations under the License. { opacity: 0.25; } +.mx_EntityTile_subtext { + font-size: 11px; + opacity: 0.5; + overflow: hidden; + white-space: nowrap; + text-overflow: clip; +} /* Copyright 2015, 2016 OpenMarket Ltd @@ -7095,25 +7014,22 @@ limitations under the License. margin-top: 15px; margin-right: 15px; margin-bottom: 15px; - display: -webkit-box; display: -ms-flexbox; display: flex; border-left: 4px solid #ddd; color: #888; } .mx_LinkPreviewWidget_image { - -webkit-box-flex: 0; - -ms-flex: 0 0 100px; - flex: 0 0 100px; + -ms-flex: 0 0 100px; + flex: 0 0 100px; margin-left: 15px; text-align: center; cursor: pointer; } .mx_LinkPreviewWidget_caption { margin-left: 15px; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; } .mx_LinkPreviewWidget_title { display: inline; @@ -7131,9 +7047,8 @@ limitations under the License. .mx_LinkPreviewWidget_cancel { visibility: hidden; cursor: pointer; - -webkit-box-flex: 0; - -ms-flex: 0 0 40px; - flex: 0 0 40px; + -ms-flex: 0 0 40px; + flex: 0 0 40px; } .mx_LinkPreviewWidget:hover .mx_LinkPreviewWidget_cancel { visibility: visible; @@ -7161,15 +7076,12 @@ limitations under the License. padding: 10px 0px; } .mx_MemberDeviceInfo.mx_DeviceVerifyButtons { - padding: 6px 0; - display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; } .mx_MemberDeviceInfo_textButton { /* align images in buttons (eg spinners) */ @@ -7196,9 +7108,8 @@ limitations under the License. padding-left: 1em; padding-right: 1em; margin: 2px; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; } .mx_MemberDeviceInfo_textButton:hover { background-color: #84cfff; @@ -7323,6 +7234,13 @@ limitations under the License. margin-right: 5px; margin-left: 8px; } +.mx_MemberInfo_statusMessage { + font-size: 11px; + opacity: 0.5; + overflow: hidden; + white-space: nowrap; + text-overflow: clip; +} /* Copyright 2015, 2016 OpenMarket Ltd @@ -7344,30 +7262,21 @@ limitations under the License. margin-top: 12px; margin-right: 20px; - -webkit-box-flex: 1; + -ms-flex: 1; - -ms-flex: 1; - - flex: 1; - - display: -webkit-box; + flex: 1; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; + -ms-flex-direction: column; - -webkit-box-direction: normal; - - -ms-flex-direction: column; - - flex-direction: column; + flex-direction: column; } .mx_MemberList .mx_Spinner { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } .mx_MemberList_chevron { position: absolute; @@ -7377,14 +7286,11 @@ limitations under the License. .mx_MemberList_border { overflow-y: auto; - -webkit-box-ordinal-group: 2; - - -ms-flex-order: 1; + -ms-flex-order: 1; - order: 1; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0px; + order: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0px; } .mx_MemberList_query, .mx_GroupMemberList_query, .mx_GroupRoomList_query { font-family: PostGrotesk-Book, Arial, Helvetica, Sans-Serif; @@ -7409,12 +7315,10 @@ limitations under the License. font-size: 14px; } .mx_MemberList_joined { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - -webkit-box-flex: 1; - -ms-flex: 1 0 0px; - flex: 1 0 0; + -ms-flex-order: 2; + order: 2; + -ms-flex: 1 0 0px; + flex: 1 0 0; overflow-y: auto; } @@ -7488,16 +7392,12 @@ limitations under the License. height: 0; } .mx_MessageComposer_row { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-align: center; + align-items: center; width: 100%; } .mx_MessageComposer_row > div:last-child{ @@ -7522,48 +7422,35 @@ limitations under the License. height: 60px; font-style: italic; color: #888; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; } .mx_MessageComposer_input_wrapper { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - display: -webkit-box; + -ms-flex: 1; + flex: 1; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; cursor: text; } .mx_MessageComposer_input { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; vertical-align: middle; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; min-height: 60px; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: start; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; + -ms-flex-pack: start; + justify-content: start; + -ms-flex-align: start; + align-items: flex-start; font-size: 14px; margin-right: 6px; } @@ -7580,19 +7467,13 @@ limitations under the License. .mx_MessageComposer_editor > :last-child { margin-bottom: 0 ! important; } -@-webkit-keyframes visualbell -{ - from { background-color: #faa } - to { background-color: #EEF2F5 } -} @keyframes visualbell { from { background-color: #faa } to { background-color: #EEF2F5 } } .mx_MessageComposer_input_error { - -webkit-animation: 0.2s visualbell; - animation: 0.2s visualbell; + animation: 0.2s visualbell; } .mx_MessageComposer_input blockquote { color: #777; @@ -7657,7 +7538,6 @@ limitations under the License. .mx_MessageComposer_formatbar { margin: auto; max-width: 960px; - display: -webkit-box; display: -ms-flexbox; display: flex; @@ -7666,16 +7546,11 @@ limitations under the License. box-sizing: border-box; padding-left: 62px; - -webkit-box-orient: horizontal; + -ms-flex-direction: row; - -webkit-box-direction: normal; - - -ms-flex-direction: row; - - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + flex-direction: row; + -ms-flex-align: center; + align-items: center; font-size: 10px; color: #888; } @@ -7931,36 +7806,30 @@ limitations under the License. */ /* add 20px to the height of the header when editing */ .mx_RoomHeader_editing { - -webkit-box-flex: 0 ! important; - -ms-flex: 0 0 93px ! important; - flex: 0 0 93px ! important; + -ms-flex: 0 0 93px ! important; + flex: 0 0 93px ! important; } .mx_RoomHeader_wrapper { max-width: 960px; margin: auto; height: 70px; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; + -ms-flex-align: center; + align-items: center; display: -ms-flexbox; display: flex; } .mx_RoomHeader_leftRow { margin-left: -2px; - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex-order: 1; + order: 1; + -ms-flex: 1; + flex: 1; overflow: hidden; } .mx_RoomHeader_spinner { height: 36px; - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; padding-left: 12px; padding-right: 12px; } @@ -7985,9 +7854,8 @@ limitations under the License. transition: background-color .2s ease; margin-right: 8px; margin-top: -5px; - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; } .mx_RoomHeader_textButton:hover { background-color: #84cfff; @@ -7996,9 +7864,8 @@ limitations under the License. background-color: #F69E98; } .mx_RoomHeader_cancelButton { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; cursor: pointer; padding-left: 12px; padding-right: 12px; @@ -8006,15 +7873,12 @@ limitations under the License. .mx_RoomHeader_rightRow { margin-top: 4px; background-color: #EEF2F5; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; + -ms-flex-align: center; + align-items: center; + -ms-flex-order: 3; + order: 3; } .mx_RoomHeader_info { display: table-cell; @@ -8103,8 +7967,7 @@ limitations under the License. overflow: hidden; text-overflow: ellipsis; border-bottom: 1px solid transparent; - -webkit-column-width: 960px; - column-width: 960px; + column-width: 960px; } .mx_RoomHeader_avatar { display: table-cell; @@ -8160,7 +8023,7 @@ limitations under the License. } /* Copyright 2015, 2016 OpenMarket Ltd -Copyright 2107 Vector Creations Ltd +Copyright 2017 Vector Creations Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -8236,17 +8099,12 @@ limitations under the License. text-align: center; height: 176px; background-color: #f7f7f7; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - display: -webkit-box; + -ms-flex-align: center; + align-items: center; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; display: -ms-flexbox; display: flex; background-color: #f7f7f7; @@ -8269,12 +8127,10 @@ limitations under the License. cursor: pointer; } .mx_RoomPreviewBar_warning { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; padding: 8px; } .mx_RoomPreviewBar_warningIcon { @@ -8284,6 +8140,67 @@ limitations under the License. margin-top: 50px; } /* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomRecoveryReminder { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + text-align: center; + background-color: #fff8e3; + padding: 20px; + border: 1px solid #e5e5e5; + border-bottom: unset; +} +.mx_RoomRecoveryReminder_header { + font-weight: bold; + margin-bottom: 1em; +} +.mx_RoomRecoveryReminder_body { + margin-bottom: 1em; +} +.mx_RoomRecoveryReminder_button { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border-radius: 8px; + border: 1px solid rgba(199, 206, 209, 0.12); + background-color: #6CC1F6; + font-size: 13px; + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + text-transform: uppercase; + letter-spacing: 1px; + color: #ffffff; + cursor: pointer; + outline: none; + padding: 14px; + box-sizing: border-box; + padding-left: 1.5em; + padding-right: 1.5em; + display: inline-block; + transition: background-color .2s ease; + margin: 0 10px; +} +.mx_RoomRecoveryReminder_button.mx_RoomRecoveryReminder_secondary { + font-weight: 600; + border: 1px solid #76CFA6 ! important; + color: #76CFA6; + background-color: #ffffff; + background-color: transparent; +} +/* Copyright 2015, 2016 OpenMarket Ltd Copyright 2017 Vector Creations Ltd @@ -8325,6 +8242,29 @@ limitations under the License. position: relative; margin-right: 8px; } +.mx_RoomSettings_devtoolsButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border-radius: 8px; + border: 1px solid rgba(199, 206, 209, 0.12); + background-color: #6CC1F6; + font-size: 13px; + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + text-transform: uppercase; + letter-spacing: 1px; + color: #ffffff; + cursor: pointer; + outline: none; + padding: 14px; + box-sizing: border-box; + padding-left: 1.5em; + padding-right: 1.5em; + display: inline-block; + transition: background-color .2s ease; + position: relative; + padding: 4px 1.5em; + margin-top: 8px; +} .mx_RoomSettings_upgradeButton, .mx_RoomSettings_leaveButton:hover, .mx_RoomSettings_unbanButton:hover { background-color: #84cfff; } @@ -8540,7 +8480,18 @@ limitations under the License. .mx_RoomTile_nameContainer { display: inline-block; width: 180px; - height: 24px; + vertical-align: middle; +} +.mx_RoomTile_subtext { + display: inline-block; + font-size: 11px; + padding: 0 0 0 7px; + margin: 0; + overflow: hidden; + white-space: nowrap; + text-overflow: clip; + position: relative; + bottom: 4px; } .mx_RoomTile_avatar_container { position: relative; @@ -8552,9 +8503,12 @@ limitations under the License. padding-left: 16px; padding-right: 6px; width: 24px; - height: 24px; vertical-align: middle; } +.mx_RoomTile_hasSubtext .mx_RoomTile_avatar { + padding-top: 0; + vertical-align: super; +} .mx_RoomTile_dm { display: block; position: absolute; @@ -8643,19 +8597,14 @@ limitations under the License. background-color: #465561; } .mx_DNDRoomTile { - -webkit-transform: none; - transform: none; - transition: -webkit-transform 0.2s; + transform: none; transition: transform 0.2s; - transition: transform 0.2s, -webkit-transform 0.2s; } .mx_DNDRoomTile_dragging { - -webkit-transform: scale(1.05, 1.05); - transform: scale(1.05, 1.05); + transform: scale(1.05, 1.05); } .mx_RoomTile:focus { - -webkit-filter: none ! important; - filter: none ! important; + filter: none ! important; background-color: #6d8597; } .mx_RoomTile .mx_RoomTile_name.mx_RoomTile_badgeShown { @@ -8741,17 +8690,12 @@ limitations under the License. text-align: center; height: 176px; background-color: #f7f7f7; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - display: -webkit-box; + -ms-flex-align: center; + align-items: center; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; display: -ms-flexbox; display: flex; background-color: #f7f7f7; @@ -8792,12 +8736,10 @@ limitations under the License. .mx_SearchBar { padding-top: 5px; padding-bottom: 5px; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .mx_SearchBar_input { display: inline block; @@ -8807,9 +8749,8 @@ limitations under the License. padding: 9px; padding-left: 11px; width: auto; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; + -ms-flex: 1 1 0px; + flex: 1 1 0; } .mx_SearchBar_searchButton { cursor: pointer; @@ -8819,21 +8760,14 @@ limitations under the License. border-radius: 0px 3px 3px 0px; background-color: #6CC1F6; } -@-webkit-keyframes pulsate { - 0% { opacity: 1.0; } - 50% { opacity: 0.1; } - 100% { opacity: 1.0; } -} @keyframes pulsate { 0% { opacity: 1.0; } 50% { opacity: 0.1; } 100% { opacity: 1.0; } } .mx_SearchBar_searching img { - -webkit-animation: pulsate 0.5s ease-out; - animation: pulsate 0.5s ease-out; - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; + animation: pulsate 0.5s ease-out; + animation-iteration-count: infinite; } .mx_SearchBar_button { display: inline; @@ -8878,17 +8812,12 @@ See the License for the specific language governing permissions and limitations under the License. */ .mx_SearchableEntityList { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - - -webkit-box-direction: normal; - - -ms-flex-direction: column; + -ms-flex-direction: column; - flex-direction: column; + flex-direction: column; } .mx_SearchableEntityList_query { font-family: PostGrotesk-Book, Arial, Helvetica, Sans-Serif; @@ -8913,9 +8842,8 @@ limitations under the License. font-size: 12px; } .mx_SearchableEntityList_listWrapper { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; overflow-y: auto; } @@ -8929,9 +8857,8 @@ limitations under the License. } .mx_SearchableEntityList_hrWrapper { width: 100%; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } .mx_SearchableEntityList hr { height: 1px; @@ -8953,22 +8880,16 @@ limitations under the License. border: none; } .mx_Stickers_contentPlaceholder { - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-positive: 1; + flex-grow: 1; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; text-align: center; } .mx_Stickers_contentPlaceholder p { @@ -9100,6 +9021,33 @@ limitations under the License. height: 100%; } /* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_KeyBackupPanel_sigValid, .mx_KeyBackupPanel_sigInvalid, .mx_KeyBackupPanel_deviceVerified, .mx_KeyBackupPanel_deviceNotVerified { + font-weight: bold; +} +.mx_KeyBackupPanel_sigValid, .mx_KeyBackupPanel_deviceVerified { + color: #76cfa5; +} +.mx_KeyBackupPanel_sigInvalid, .mx_KeyBackupPanel_deviceNotVerified { + color: #ba6363; +} +.mx_KeyBackupPanel_deviceName { + font-style: italic; +} +/* Copyright 2015, 2016 OpenMarket Ltd Licensed under the Apache License, Version 2.0 (the "License"); @@ -9221,16 +9169,14 @@ limitations under the License. font-weight: bold; } .mx_IncomingCallBox_buttons { - display: -webkit-box; display: -ms-flexbox; display: flex; } .mx_IncomingCallBox_buttons_cell { vertical-align: middle; padding: 6px; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; } .mx_IncomingCallBox_buttons_decline, .mx_IncomingCallBox_buttons_accept { vertical-align: middle; @@ -9288,8 +9234,7 @@ limitations under the License. height: 100%; } .mx_VideoView_localVideoFeed.mx_VideoView_localVideoFeed_flipped video { - -webkit-transform: scale(-1, 1); - transform: scale(-1, 1); + transform: scale(-1, 1); } /* Copyright 2017 New Vector Ltd @@ -9311,17 +9256,13 @@ limitations under the License. width: 100%; height: 100%; - display: -webkit-box; - display: -ms-flexbox; display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; overflow: auto; @@ -9480,15 +9421,12 @@ limitations under the License. font-size: 18px; width: 300px; height: 44px; - display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-align: center; + align-items: center; margin: auto; text-align: center; margin-top: 12px; diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-status.css.map b/riot/bundles/c2932262ed6106cd4535/theme-status.css.map similarity index 52% rename from riot/bundles/f5c70ee9a294f6e4590e/theme-status.css.map rename to riot/bundles/c2932262ed6106cd4535/theme-status.css.map index 00c3266..02df316 100644 --- a/riot/bundles/f5c70ee9a294f6e4590e/theme-status.css.map +++ b/riot/bundles/c2932262ed6106cd4535/theme-status.css.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"bundles/f5c70ee9a294f6e4590e/theme-status.css","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"bundles/c2932262ed6106cd4535/theme-status.css","sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-status.js b/riot/bundles/c2932262ed6106cd4535/theme-status.js similarity index 91% rename from riot/bundles/f5c70ee9a294f6e4590e/theme-status.js rename to riot/bundles/c2932262ed6106cd4535/theme-status.js index 6c3a756..e03ddda 100644 --- a/riot/bundles/f5c70ee9a294f6e4590e/theme-status.js +++ b/riot/bundles/c2932262ed6106cd4535/theme-status.js @@ -1,2 +1,2 @@ -!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1890)}({1890:function(e,t){}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1902)}({1902:function(e,t){}}); //# sourceMappingURL=theme-status.js.map \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-status.js.map b/riot/bundles/c2932262ed6106cd4535/theme-status.js.map similarity index 96% rename from riot/bundles/f5c70ee9a294f6e4590e/theme-status.js.map rename to riot/bundles/c2932262ed6106cd4535/theme-status.js.map index 04173e3..056193e 100644 --- a/riot/bundles/f5c70ee9a294f6e4590e/theme-status.js.map +++ b/riot/bundles/c2932262ed6106cd4535/theme-status.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack/bootstrap"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s"],"mappings":"aACA,IAAAA,KAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,IACAG,EAAAH,EACAI,GAAA,EACAH,YAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,GAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,aAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA","file":"bundles/f5c70ee9a294f6e4590e/theme-status.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1890);\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack/bootstrap"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s"],"mappings":"aACA,IAAAA,KAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,IACAG,EAAAH,EACAI,GAAA,EACAH,YAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,GAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,aAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA","file":"bundles/c2932262ed6106cd4535/theme-status.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1902);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/7.js b/riot/bundles/f5c70ee9a294f6e4590e/7.js deleted file mode 100644 index 626355d..0000000 --- a/riot/bundles/f5c70ee9a294f6e4590e/7.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{741:function(e,t,n){"use strict";var l=c(n(65)),r=c(n(1)),i=n(2);function c(e){return e&&e.__esModule?e:{default:e}}var a=n(0),o=n(3),d=n(8);e.exports=a.createClass({displayName:"EncryptedEventDialog",propTypes:{event:r.default.object.isRequired,onFinished:r.default.func.isRequired},getInitialState:function(){return{device:null}},componentWillMount:function(){var e=this;this._unmounted=!1;var t=d.get();this.refreshDevice().then(function(n){return n||t.downloadKeys([e.props.event.getSender()],!0).then(function(){return e.refreshDevice()})}).then(function(n){e._unmounted||(e.setState({device:n}),t.on("deviceVerificationChanged",e.onDeviceVerificationChanged))},function(e){console.log("Error downloading devices",e)})},componentWillUnmount:function(){this._unmounted=!0;var e=d.get();e&&e.removeListener("deviceVerificationChanged",this.onDeviceVerificationChanged)},refreshDevice:function(){return l.default.resolve(d.get().getEventSenderDeviceInfo(this.props.event))},onDeviceVerificationChanged:function(e,t){var n=this;e==this.props.event.getSender()&&this.refreshDevice().then(function(e){n.setState({device:e})})},onKeyDown:function(e){27===e.keyCode&&(e.stopPropagation(),e.preventDefault(),this.props.onFinished(!1))},_renderDeviceInfo:function(){var e=this.state.device;if(!e)return a.createElement("i",null,(0,i._t)("unknown device"));var t=a.createElement("b",null,(0,i._t)("NOT verified"));return e.isBlocked()?t=a.createElement("b",null,(0,i._t)("Blacklisted")):e.isVerified()&&(t=(0,i._t)("verified")),a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Name")),a.createElement("td",null,e.getDisplayName())),a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Device ID")),a.createElement("td",null,a.createElement("code",null,e.deviceId))),a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Verification")),a.createElement("td",null,t)),a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Ed25519 fingerprint")),a.createElement("td",null,a.createElement("code",null,e.getFingerprint())))))},_renderEventInfo:function(){var e=this.props.event;return a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("td",null,(0,i._t)("User ID")),a.createElement("td",null,e.getSender())),a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Curve25519 identity key")),a.createElement("td",null,a.createElement("code",null,e.getSenderKey()||a.createElement("i",null,(0,i._t)("none"))))),a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Claimed Ed25519 fingerprint key")),a.createElement("td",null,a.createElement("code",null,e.getKeysClaimed().ed25519||a.createElement("i",null,(0,i._t)("none"))))),a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Algorithm")),a.createElement("td",null,e.getWireContent().algorithm||a.createElement("i",null,(0,i._t)("unencrypted")))),"m.bad.encrypted"===e.getContent().msgtype?a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Decryption error")),a.createElement("td",null,e.getContent().body)):null,a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Session ID")),a.createElement("td",null,a.createElement("code",null,e.getWireContent().session_id||a.createElement("i",null,(0,i._t)("none")))))))},render:function(){var e=o.getComponent("elements.DeviceVerifyButtons"),t=null;return this.state.device&&(t=a.createElement(e,{device:this.state.device,userId:this.props.event.getSender()})),a.createElement("div",{className:"mx_EncryptedEventDialog",onKeyDown:this.onKeyDown},a.createElement("div",{className:"mx_Dialog_title"},(0,i._t)("End-to-end encryption information")),a.createElement("div",{className:"mx_Dialog_content"},a.createElement("h4",null,(0,i._t)("Event information")),this._renderEventInfo(),a.createElement("h4",null,(0,i._t)("Sender device information")),this._renderDeviceInfo()),a.createElement("div",{className:"mx_Dialog_buttons"},a.createElement("button",{className:"mx_Dialog_primary",onClick:this.props.onFinished,autoFocus:!0},(0,i._t)("OK")),t))}})}}]); -//# sourceMappingURL=7.js.map \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/7.js.map b/riot/bundles/f5c70ee9a294f6e4590e/7.js.map deleted file mode 100644 index 3447097..0000000 --- a/riot/bundles/f5c70ee9a294f6e4590e/7.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["node_modules/matrix-react-sdk/lib/async-components/views/dialogs/EncryptedEventDialog.js"],"names":["_promise2","_interopRequireDefault","__webpack_require__","_propTypes2","_languageHandler","obj","__esModule","default","React","sdk","MatrixClientPeg","module","exports","createClass","displayName","propTypes","event","object","isRequired","onFinished","func","getInitialState","device","componentWillMount","_this","this","_unmounted","client","get","refreshDevice","then","dev","downloadKeys","props","getSender","setState","on","onDeviceVerificationChanged","err","console","log","componentWillUnmount","removeListener","resolve","getEventSenderDeviceInfo","userId","_this2","onKeyDown","e","keyCode","stopPropagation","preventDefault","_renderDeviceInfo","state","createElement","_t","verificationStatus","isBlocked","isVerified","getDisplayName","deviceId","getFingerprint","_renderEventInfo","getSenderKey","getKeysClaimed","ed25519","getWireContent","algorithm","getContent","msgtype","body","session_id","render","DeviceVerifyButtons","getComponent","buttons","className","onClick","autoFocus"],"mappings":"0FAEA,IAEAA,EAAAC,EAFeC,EAAQ,KAMvBC,EAAAF,EAFiBC,EAAQ,IAIzBE,EAAuBF,EAAQ,GAE/B,SAAAD,EAAAI,GAAsC,OAAAA,KAAAC,WAAAD,GAAuCE,QAAAF,GAkB7E,IAAAG,EAAYN,EAAQ,GAEpBO,EAAUP,EAAQ,GAClBQ,EAAsBR,EAAQ,GAE9BS,EAAAC,QAAAJ,EAAAK,aACAC,YAAA,uBAEAC,WACAC,MAAAb,EAAAI,QAAAU,OAAAC,WACAC,WAAAhB,EAAAI,QAAAa,KAAAF,YAGAG,gBAAA,WACA,OAAgBC,OAAA,OAGhBC,mBAAA,WACA,IAAAC,EAAAC,KAEAA,KAAAC,YAAA,EACA,IAAAC,EAAAjB,EAAAkB,MAIAH,KAAAI,gBAAAC,KAAA,SAAAC,GACA,OAAAA,GAKAJ,EAAAK,cAAAR,EAAAS,MAAAjB,MAAAkB,cAAA,GAAAJ,KAAA,WACA,OAAAN,EAAAK,oBAESC,KAAA,SAAAC,GACTP,EAAAE,aAIAF,EAAAW,UAA4Bb,OAAAS,IAC5BJ,EAAAS,GAAA,4BAAAZ,EAAAa,+BACS,SAAAC,GACTC,QAAAC,IAAA,4BAAAF,MAIAG,qBAAA,WACAhB,KAAAC,YAAA,EACA,IAAAC,EAAAjB,EAAAkB,MACAD,GACAA,EAAAe,eAAA,4BAAAjB,KAAAY,8BAIAR,cAAA,WAGA,OAAA7B,EAAAO,QAAAoC,QAAAjC,EAAAkB,MAAAgB,yBAAAnB,KAAAQ,MAAAjB,SAGAqB,4BAAA,SAAAQ,EAAAvB,GACA,IAAAwB,EAAArB,KAEAoB,GAAApB,KAAAQ,MAAAjB,MAAAkB,aACAT,KAAAI,gBAAAC,KAAA,SAAAC,GACAe,EAAAX,UAAiCb,OAAAS,OAKjCgB,UAAA,SAAAC,GACA,KAAAA,EAAAC,UAEAD,EAAAE,kBACAF,EAAAG,iBACA1B,KAAAQ,MAAAd,YAAA,KAIAiC,kBAAA,WACA,IAAA9B,EAAAG,KAAA4B,MAAA/B,OACA,IAAAA,EACA,OAAAd,EAAA8C,cACA,IACA,MACA,EAAAlD,EAAAmD,IAAA,mBAIA,IAAAC,EAAAhD,EAAA8C,cACA,IACA,MACA,EAAAlD,EAAAmD,IAAA,iBAYA,OAVAjC,EAAAmC,YACAD,EAAAhD,EAAA8C,cACA,IACA,MACA,EAAAlD,EAAAmD,IAAA,gBAESjC,EAAAoC,eACTF,GAAA,EAAApD,EAAAmD,IAAA,aAGA/C,EAAA8C,cACA,QACA,KACA9C,EAAA8C,cACA,QACA,KACA9C,EAAA8C,cACA,KACA,KACA9C,EAAA8C,cACA,KACA,MACA,EAAAlD,EAAAmD,IAAA,SAEA/C,EAAA8C,cACA,KACA,KACAhC,EAAAqC,mBAGAnD,EAAA8C,cACA,KACA,KACA9C,EAAA8C,cACA,KACA,MACA,EAAAlD,EAAAmD,IAAA,cAEA/C,EAAA8C,cACA,KACA,KACA9C,EAAA8C,cACA,OACA,KACAhC,EAAAsC,YAIApD,EAAA8C,cACA,KACA,KACA9C,EAAA8C,cACA,KACA,MACA,EAAAlD,EAAAmD,IAAA,iBAEA/C,EAAA8C,cACA,KACA,KACAE,IAGAhD,EAAA8C,cACA,KACA,KACA9C,EAAA8C,cACA,KACA,MACA,EAAAlD,EAAAmD,IAAA,wBAEA/C,EAAA8C,cACA,KACA,KACA9C,EAAA8C,cACA,OACA,KACAhC,EAAAuC,uBAQAC,iBAAA,WACA,IAAA9C,EAAAS,KAAAQ,MAAAjB,MAEA,OAAAR,EAAA8C,cACA,QACA,KACA9C,EAAA8C,cACA,QACA,KACA9C,EAAA8C,cACA,KACA,KACA9C,EAAA8C,cACA,KACA,MACA,EAAAlD,EAAAmD,IAAA,YAEA/C,EAAA8C,cACA,KACA,KACAtC,EAAAkB,cAGA1B,EAAA8C,cACA,KACA,KACA9C,EAAA8C,cACA,KACA,MACA,EAAAlD,EAAAmD,IAAA,4BAEA/C,EAAA8C,cACA,KACA,KACA9C,EAAA8C,cACA,OACA,KACAtC,EAAA+C,gBAAAvD,EAAA8C,cACA,IACA,MACA,EAAAlD,EAAAmD,IAAA,YAKA/C,EAAA8C,cACA,KACA,KACA9C,EAAA8C,cACA,KACA,MACA,EAAAlD,EAAAmD,IAAA,oCAEA/C,EAAA8C,cACA,KACA,KACA9C,EAAA8C,cACA,OACA,KACAtC,EAAAgD,iBAAAC,SAAAzD,EAAA8C,cACA,IACA,MACA,EAAAlD,EAAAmD,IAAA,YAKA/C,EAAA8C,cACA,KACA,KACA9C,EAAA8C,cACA,KACA,MACA,EAAAlD,EAAAmD,IAAA,cAEA/C,EAAA8C,cACA,KACA,KACAtC,EAAAkD,iBAAAC,WAAA3D,EAAA8C,cACA,IACA,MACA,EAAAlD,EAAAmD,IAAA,kBAIA,oBAAAvC,EAAAoD,aAAAC,QAAA7D,EAAA8C,cACA,KACA,KACA9C,EAAA8C,cACA,KACA,MACA,EAAAlD,EAAAmD,IAAA,qBAEA/C,EAAA8C,cACA,KACA,KACAtC,EAAAoD,aAAAE,OAEA,KACA9D,EAAA8C,cACA,KACA,KACA9C,EAAA8C,cACA,KACA,MACA,EAAAlD,EAAAmD,IAAA,eAEA/C,EAAA8C,cACA,KACA,KACA9C,EAAA8C,cACA,OACA,KACAtC,EAAAkD,iBAAAK,YAAA/D,EAAA8C,cACA,IACA,MACA,EAAAlD,EAAAmD,IAAA,eASAiB,OAAA,WACA,IAAAC,EAAAhE,EAAAiE,aAAA,gCAEAC,EAAA,KAOA,OANAlD,KAAA4B,MAAA/B,SACAqD,EAAAnE,EAAA8C,cAAAmB,GAAgEnD,OAAAG,KAAA4B,MAAA/B,OAChEuB,OAAApB,KAAAQ,MAAAjB,MAAAkB,eAIA1B,EAAA8C,cACA,OACasB,UAAA,0BAAA7B,UAAAtB,KAAAsB,WACbvC,EAAA8C,cACA,OACiBsB,UAAA,oBACjB,EAAAxE,EAAAmD,IAAA,sCAEA/C,EAAA8C,cACA,OACiBsB,UAAA,qBACjBpE,EAAA8C,cACA,KACA,MACA,EAAAlD,EAAAmD,IAAA,sBAEA9B,KAAAqC,mBACAtD,EAAA8C,cACA,KACA,MACA,EAAAlD,EAAAmD,IAAA,8BAEA9B,KAAA2B,qBAEA5C,EAAA8C,cACA,OACiBsB,UAAA,qBACjBpE,EAAA8C,cACA,UACqBsB,UAAA,oBAAAC,QAAApD,KAAAQ,MAAAd,WAAA2D,WAAA,IACrB,EAAA1E,EAAAmD,IAAA,OAEAoB","file":"bundles/f5c70ee9a294f6e4590e/7.js","sourcesContent":["'use strict';\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require(\"react\");\n\nvar sdk = require('../../../index');\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\");\n\nmodule.exports = React.createClass({\n displayName: 'EncryptedEventDialog',\n\n propTypes: {\n event: _propTypes2.default.object.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return { device: null };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this._unmounted = false;\n var client = MatrixClientPeg.get();\n\n // first try to load the device from our store.\n //\n this.refreshDevice().then(function (dev) {\n if (dev) {\n return dev;\n }\n\n // tell the client to try to refresh the device list for this user\n return client.downloadKeys([_this.props.event.getSender()], true).then(function () {\n return _this.refreshDevice();\n });\n }).then(function (dev) {\n if (_this._unmounted) {\n return;\n }\n\n _this.setState({ device: dev });\n client.on(\"deviceVerificationChanged\", _this.onDeviceVerificationChanged);\n }, function (err) {\n console.log(\"Error downloading devices\", err);\n });\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n var client = MatrixClientPeg.get();\n if (client) {\n client.removeListener(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n }\n },\n\n refreshDevice: function refreshDevice() {\n // Promise.resolve to handle transition from static result to promise; can be removed\n // in future\n return _promise2.default.resolve(MatrixClientPeg.get().getEventSenderDeviceInfo(this.props.event));\n },\n\n onDeviceVerificationChanged: function onDeviceVerificationChanged(userId, device) {\n var _this2 = this;\n\n if (userId == this.props.event.getSender()) {\n this.refreshDevice().then(function (dev) {\n _this2.setState({ device: dev });\n });\n }\n },\n\n onKeyDown: function onKeyDown(e) {\n if (e.keyCode === 27) {\n // escape\n e.stopPropagation();\n e.preventDefault();\n this.props.onFinished(false);\n }\n },\n\n _renderDeviceInfo: function _renderDeviceInfo() {\n var device = this.state.device;\n if (!device) {\n return React.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('unknown device')\n );\n }\n\n var verificationStatus = React.createElement(\n 'b',\n null,\n (0, _languageHandler._t)('NOT verified')\n );\n if (device.isBlocked()) {\n verificationStatus = React.createElement(\n 'b',\n null,\n (0, _languageHandler._t)('Blacklisted')\n );\n } else if (device.isVerified()) {\n verificationStatus = (0, _languageHandler._t)('verified');\n }\n\n return React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Name')\n ),\n React.createElement(\n 'td',\n null,\n device.getDisplayName()\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Device ID')\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'code',\n null,\n device.deviceId\n )\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Verification')\n ),\n React.createElement(\n 'td',\n null,\n verificationStatus\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Ed25519 fingerprint')\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'code',\n null,\n device.getFingerprint()\n )\n )\n )\n )\n );\n },\n\n _renderEventInfo: function _renderEventInfo() {\n var event = this.props.event;\n\n return React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('User ID')\n ),\n React.createElement(\n 'td',\n null,\n event.getSender()\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Curve25519 identity key')\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'code',\n null,\n event.getSenderKey() || React.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('none')\n )\n )\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Claimed Ed25519 fingerprint key')\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'code',\n null,\n event.getKeysClaimed().ed25519 || React.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('none')\n )\n )\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Algorithm')\n ),\n React.createElement(\n 'td',\n null,\n event.getWireContent().algorithm || React.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('unencrypted')\n )\n )\n ),\n event.getContent().msgtype === 'm.bad.encrypted' ? React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Decryption error')\n ),\n React.createElement(\n 'td',\n null,\n event.getContent().body\n )\n ) : null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Session ID')\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'code',\n null,\n event.getWireContent().session_id || React.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('none')\n )\n )\n )\n )\n )\n );\n },\n\n render: function render() {\n var DeviceVerifyButtons = sdk.getComponent('elements.DeviceVerifyButtons');\n\n var buttons = null;\n if (this.state.device) {\n buttons = React.createElement(DeviceVerifyButtons, { device: this.state.device,\n userId: this.props.event.getSender()\n });\n }\n\n return React.createElement(\n 'div',\n { className: 'mx_EncryptedEventDialog', onKeyDown: this.onKeyDown },\n React.createElement(\n 'div',\n { className: 'mx_Dialog_title' },\n (0, _languageHandler._t)('End-to-end encryption information')\n ),\n React.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n React.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)('Event information')\n ),\n this._renderEventInfo(),\n React.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)('Sender device information')\n ),\n this._renderDeviceInfo()\n ),\n React.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n React.createElement(\n 'button',\n { className: 'mx_Dialog_primary', onClick: this.props.onFinished, autoFocus: true },\n (0, _languageHandler._t)('OK')\n ),\n buttons\n )\n );\n }\n});\n//# sourceMappingURL=EncryptedEventDialog.js.map"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/8.js b/riot/bundles/f5c70ee9a294f6e4590e/8.js deleted file mode 100644 index 1e19ecf..0000000 --- a/riot/bundles/f5c70ee9a294f6e4590e/8.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{132:function(t,e,n){"use strict";var a="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;function i(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var n=e.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(var a in n)i(n,a)&&(t[a]=n[a])}}return t},e.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var r={arraySet:function(t,e,n,a,i){if(e.subarray&&t.subarray)t.set(e.subarray(n,n+a),i);else for(var r=0;r<a;r++)t[i+r]=e[n+r]},flattenChunks:function(t){var e,n,a,i,r,s;for(a=0,e=0,n=t.length;e<n;e++)a+=t[e].length;for(s=new Uint8Array(a),i=0,e=0,n=t.length;e<n;e++)r=t[e],s.set(r,i),i+=r.length;return s}},s={arraySet:function(t,e,n,a,i){for(var r=0;r<a;r++)t[i+r]=e[n+r]},flattenChunks:function(t){return[].concat.apply([],t)}};e.setTyped=function(t){t?(e.Buf8=Uint8Array,e.Buf16=Uint16Array,e.Buf32=Int32Array,e.assign(e,r)):(e.Buf8=Array,e.Buf16=Array,e.Buf32=Array,e.assign(e,s))},e.setTyped(a)},324:function(t,e,n){"use strict";t.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},485:function(t,e,n){"use strict";function a(t,e,n){return e<=t&&t<=n}function i(t){if(void 0===t)return{};if(t===Object(t))return t;throw TypeError("Could not convert argument to dictionary")}n.r(e),n.d(e,"TextEncoder",function(){return f}),n.d(e,"TextDecoder",function(){return d});var r=-1;function s(t){this.tokens=[].slice.call(t)}s.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.shift():r},prepend:function(t){if(Array.isArray(t))for(var e=t;e.length;)this.tokens.unshift(e.pop());else this.tokens.unshift(t)},push:function(t){if(Array.isArray(t))for(var e=t;e.length;)this.tokens.push(e.shift());else this.tokens.push(t)}};var o=-1;function h(t,e){if(t)throw TypeError("Decoder error");return e||65533}var l="utf-8";function d(t,e){if(!(this instanceof d))return new d(t,e);if((t=void 0!==t?String(t).toLowerCase():l)!==l)throw new Error("Encoding not supported. Only utf-8 is supported");e=i(e),this._streaming=!1,this._BOMseen=!1,this._decoder=null,this._fatal=Boolean(e.fatal),this._ignoreBOM=Boolean(e.ignoreBOM),Object.defineProperty(this,"encoding",{value:"utf-8"}),Object.defineProperty(this,"fatal",{value:this._fatal}),Object.defineProperty(this,"ignoreBOM",{value:this._ignoreBOM})}function f(t,e){if(!(this instanceof f))return new f(t,e);if((t=void 0!==t?String(t).toLowerCase():l)!==l)throw new Error("Encoding not supported. Only utf-8 is supported");e=i(e),this._streaming=!1,this._encoder=null,this._options={fatal:Boolean(e.fatal)},Object.defineProperty(this,"encoding",{value:"utf-8"})}d.prototype={decode:function(t,e){var n;n="object"==typeof t&&t instanceof ArrayBuffer?new Uint8Array(t):"object"==typeof t&&"buffer"in t&&t.buffer instanceof ArrayBuffer?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):new Uint8Array(0),e=i(e),this._streaming||(this._decoder=new function(t){var e=t.fatal,n=0,i=0,s=0,l=128,d=191;this.handler=function(t,f){if(f===r&&0!==s)return s=0,h(e);if(f===r)return o;if(0===s){if(a(f,0,127))return f;if(a(f,194,223))s=1,n=f-192;else if(a(f,224,239))224===f&&(l=160),237===f&&(d=159),s=2,n=f-224;else{if(!a(f,240,244))return h(e);240===f&&(l=144),244===f&&(d=143),s=3,n=f-240}return n<<=6*s,null}if(!a(f,l,d))return n=s=i=0,l=128,d=191,t.prepend(f),h(e);if(l=128,d=191,n+=f-128<<6*(s-(i+=1)),i!==s)return null;var u=n;return n=s=i=0,u}}({fatal:this._fatal}),this._BOMseen=!1),this._streaming=Boolean(e.stream);for(var l,d=new s(n),f=[];!d.endOfStream()&&(l=this._decoder.handler(d,d.read()))!==o;)null!==l&&(Array.isArray(l)?f.push.apply(f,l):f.push(l));if(!this._streaming){do{if((l=this._decoder.handler(d,d.read()))===o)break;null!==l&&(Array.isArray(l)?f.push.apply(f,l):f.push(l))}while(!d.endOfStream());this._decoder=null}return f.length&&(-1===["utf-8"].indexOf(this.encoding)||this._ignoreBOM||this._BOMseen||(65279===f[0]?(this._BOMseen=!0,f.shift()):this._BOMseen=!0)),function(t){for(var e="",n=0;n<t.length;++n){var a=t[n];a<=65535?e+=String.fromCharCode(a):(a-=65536,e+=String.fromCharCode(55296+(a>>10),56320+(1023&a)))}return e}(f)}},f.prototype={encode:function(t,e){t=t?String(t):"",e=i(e),this._streaming||(this._encoder=new function(t){t.fatal;this.handler=function(t,e){if(e===r)return o;if(a(e,0,127))return e;var n,i;a(e,128,2047)?(n=1,i=192):a(e,2048,65535)?(n=2,i=224):a(e,65536,1114111)&&(n=3,i=240);for(var s=[(e>>6*n)+i];n>0;){var h=e>>6*(n-1);s.push(128|63&h),n-=1}return s}}(this._options)),this._streaming=Boolean(e.stream);for(var n,h=[],l=new s(function(t){for(var e=String(t),n=e.length,a=0,i=[];a<n;){var r=e.charCodeAt(a);if(r<55296||r>57343)i.push(r);else if(56320<=r&&r<=57343)i.push(65533);else if(55296<=r&&r<=56319)if(a===n-1)i.push(65533);else{var s=t.charCodeAt(a+1);if(56320<=s&&s<=57343){var o=1023&r,h=1023&s;i.push(65536+(o<<10)+h),a+=1}else i.push(65533)}a+=1}return i}(t));!l.endOfStream()&&(n=this._encoder.handler(l,l.read()))!==o;)Array.isArray(n)?h.push.apply(h,n):h.push(n);if(!this._streaming){for(;(n=this._encoder.handler(l,l.read()))!==o;)Array.isArray(n)?h.push.apply(h,n):h.push(n);this._encoder=null}return new Uint8Array(h)}}},487:function(t,e,n){"use strict";t.exports=function(t,e,n,a){for(var i=65535&t|0,r=t>>>16&65535|0,s=0;0!==n;){n-=s=n>2e3?2e3:n;do{r=r+(i=i+e[a++]|0)|0}while(--s);i%=65521,r%=65521}return i|r<<16|0}},488:function(t,e,n){"use strict";var a=function(){for(var t,e=[],n=0;n<256;n++){t=n;for(var a=0;a<8;a++)t=1&t?3988292384^t>>>1:t>>>1;e[n]=t}return e}();t.exports=function(t,e,n,i){var r=a,s=i+n;t^=-1;for(var o=i;o<s;o++)t=t>>>8^r[255&(t^e[o])];return-1^t}},489:function(t,e,n){"use strict";var a=n(132),i=!0,r=!0;try{String.fromCharCode.apply(null,[0])}catch(t){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){r=!1}for(var s=new a.Buf8(256),o=0;o<256;o++)s[o]=o>=252?6:o>=248?5:o>=240?4:o>=224?3:o>=192?2:1;function h(t,e){if(e<65537&&(t.subarray&&r||!t.subarray&&i))return String.fromCharCode.apply(null,a.shrinkBuf(t,e));for(var n="",s=0;s<e;s++)n+=String.fromCharCode(t[s]);return n}s[254]=s[254]=1,e.string2buf=function(t){var e,n,i,r,s,o=t.length,h=0;for(r=0;r<o;r++)55296==(64512&(n=t.charCodeAt(r)))&&r+1<o&&56320==(64512&(i=t.charCodeAt(r+1)))&&(n=65536+(n-55296<<10)+(i-56320),r++),h+=n<128?1:n<2048?2:n<65536?3:4;for(e=new a.Buf8(h),s=0,r=0;s<h;r++)55296==(64512&(n=t.charCodeAt(r)))&&r+1<o&&56320==(64512&(i=t.charCodeAt(r+1)))&&(n=65536+(n-55296<<10)+(i-56320),r++),n<128?e[s++]=n:n<2048?(e[s++]=192|n>>>6,e[s++]=128|63&n):n<65536?(e[s++]=224|n>>>12,e[s++]=128|n>>>6&63,e[s++]=128|63&n):(e[s++]=240|n>>>18,e[s++]=128|n>>>12&63,e[s++]=128|n>>>6&63,e[s++]=128|63&n);return e},e.buf2binstring=function(t){return h(t,t.length)},e.binstring2buf=function(t){for(var e=new a.Buf8(t.length),n=0,i=e.length;n<i;n++)e[n]=t.charCodeAt(n);return e},e.buf2string=function(t,e){var n,a,i,r,o=e||t.length,l=new Array(2*o);for(a=0,n=0;n<o;)if((i=t[n++])<128)l[a++]=i;else if((r=s[i])>4)l[a++]=65533,n+=r-1;else{for(i&=2===r?31:3===r?15:7;r>1&&n<o;)i=i<<6|63&t[n++],r--;r>1?l[a++]=65533:i<65536?l[a++]=i:(i-=65536,l[a++]=55296|i>>10&1023,l[a++]=56320|1023&i)}return h(l,a)},e.utf8border=function(t,e){var n;for((e=e||t.length)>t.length&&(e=t.length),n=e-1;n>=0&&128==(192&t[n]);)n--;return n<0?e:0===n?e:n+s[t[n]]>e?n:e}},490:function(t,e,n){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},491:function(t,e,n){"use strict";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},731:function(t,e,n){"use strict";var a={};(0,n(132).assign)(a,n(732),n(735),n(491)),t.exports=a},732:function(t,e,n){"use strict";var a=n(733),i=n(132),r=n(489),s=n(324),o=n(490),h=Object.prototype.toString,l=0,d=-1,f=0,u=8;function _(t){if(!(this instanceof _))return new _(t);this.options=i.assign({level:d,method:u,chunkSize:16384,windowBits:15,memLevel:8,strategy:f,to:""},t||{});var e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new o,this.strm.avail_out=0;var n=a.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(n!==l)throw new Error(s[n]);if(e.header&&a.deflateSetHeader(this.strm,e.header),e.dictionary){var c;if(c="string"==typeof e.dictionary?r.string2buf(e.dictionary):"[object ArrayBuffer]"===h.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,(n=a.deflateSetDictionary(this.strm,c))!==l)throw new Error(s[n]);this._dict_set=!0}}function c(t,e){var n=new _(e);if(n.push(t,!0),n.err)throw n.msg||s[n.err];return n.result}_.prototype.push=function(t,e){var n,s,o=this.strm,d=this.options.chunkSize;if(this.ended)return!1;s=e===~~e?e:!0===e?4:0,"string"==typeof t?o.input=r.string2buf(t):"[object ArrayBuffer]"===h.call(t)?o.input=new Uint8Array(t):o.input=t,o.next_in=0,o.avail_in=o.input.length;do{if(0===o.avail_out&&(o.output=new i.Buf8(d),o.next_out=0,o.avail_out=d),1!==(n=a.deflate(o,s))&&n!==l)return this.onEnd(n),this.ended=!0,!1;0!==o.avail_out&&(0!==o.avail_in||4!==s&&2!==s)||("string"===this.options.to?this.onData(r.buf2binstring(i.shrinkBuf(o.output,o.next_out))):this.onData(i.shrinkBuf(o.output,o.next_out)))}while((o.avail_in>0||0===o.avail_out)&&1!==n);return 4===s?(n=a.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===l):2!==s||(this.onEnd(l),o.avail_out=0,!0)},_.prototype.onData=function(t){this.chunks.push(t)},_.prototype.onEnd=function(t){t===l&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},e.Deflate=_,e.deflate=c,e.deflateRaw=function(t,e){return(e=e||{}).raw=!0,c(t,e)},e.gzip=function(t,e){return(e=e||{}).gzip=!0,c(t,e)}},733:function(t,e,n){"use strict";var a,i=n(132),r=n(734),s=n(487),o=n(488),h=n(324),l=0,d=1,f=3,u=4,_=5,c=0,p=1,g=-2,w=-3,b=-5,m=-1,v=1,k=2,y=3,x=4,z=0,B=2,A=8,S=9,E=15,O=8,Z=286,C=30,N=19,R=2*Z+1,T=15,D=3,I=258,U=I+D+1,L=32,M=42,F=69,j=73,H=91,P=103,K=113,Y=666,X=1,G=2,W=3,q=4,J=3;function V(t,e){return t.msg=h[e],e}function Q(t){return(t<<1)-(t>4?9:0)}function $(t){for(var e=t.length;--e>=0;)t[e]=0}function tt(t){var e=t.state,n=e.pending;n>t.avail_out&&(n=t.avail_out),0!==n&&(i.arraySet(t.output,e.pending_buf,e.pending_out,n,t.next_out),t.next_out+=n,e.pending_out+=n,t.total_out+=n,t.avail_out-=n,e.pending-=n,0===e.pending&&(e.pending_out=0))}function et(t,e){r._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,tt(t.strm)}function nt(t,e){t.pending_buf[t.pending++]=e}function at(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function it(t,e,n,a){var r=t.avail_in;return r>a&&(r=a),0===r?0:(t.avail_in-=r,i.arraySet(e,t.input,t.next_in,r,n),1===t.state.wrap?t.adler=s(t.adler,e,r,n):2===t.state.wrap&&(t.adler=o(t.adler,e,r,n)),t.next_in+=r,t.total_in+=r,r)}function rt(t,e){var n,a,i=t.max_chain_length,r=t.strstart,s=t.prev_length,o=t.nice_match,h=t.strstart>t.w_size-U?t.strstart-(t.w_size-U):0,l=t.window,d=t.w_mask,f=t.prev,u=t.strstart+I,_=l[r+s-1],c=l[r+s];t.prev_length>=t.good_match&&(i>>=2),o>t.lookahead&&(o=t.lookahead);do{if(l[(n=e)+s]===c&&l[n+s-1]===_&&l[n]===l[r]&&l[++n]===l[r+1]){r+=2,n++;do{}while(l[++r]===l[++n]&&l[++r]===l[++n]&&l[++r]===l[++n]&&l[++r]===l[++n]&&l[++r]===l[++n]&&l[++r]===l[++n]&&l[++r]===l[++n]&&l[++r]===l[++n]&&r<u);if(a=I-(u-r),r=u-I,a>s){if(t.match_start=e,s=a,a>=o)break;_=l[r+s-1],c=l[r+s]}}}while((e=f[e&d])>h&&0!=--i);return s<=t.lookahead?s:t.lookahead}function st(t){var e,n,a,r,s,o=t.w_size;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=o+(o-U)){i.arraySet(t.window,t.window,o,o,0),t.match_start-=o,t.strstart-=o,t.block_start-=o,e=n=t.hash_size;do{a=t.head[--e],t.head[e]=a>=o?a-o:0}while(--n);e=n=o;do{a=t.prev[--e],t.prev[e]=a>=o?a-o:0}while(--n);r+=o}if(0===t.strm.avail_in)break;if(n=it(t.strm,t.window,t.strstart+t.lookahead,r),t.lookahead+=n,t.lookahead+t.insert>=D)for(s=t.strstart-t.insert,t.ins_h=t.window[s],t.ins_h=(t.ins_h<<t.hash_shift^t.window[s+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[s+D-1])&t.hash_mask,t.prev[s&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=s,s++,t.insert--,!(t.lookahead+t.insert<D)););}while(t.lookahead<U&&0!==t.strm.avail_in)}function ot(t,e){for(var n,a;;){if(t.lookahead<U){if(st(t),t.lookahead<U&&e===l)return X;if(0===t.lookahead)break}if(n=0,t.lookahead>=D&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+D-1])&t.hash_mask,n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==n&&t.strstart-n<=t.w_size-U&&(t.match_length=rt(t,n)),t.match_length>=D)if(a=r._tr_tally(t,t.strstart-t.match_start,t.match_length-D),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=D){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+D-1])&t.hash_mask,n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else a=r._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(a&&(et(t,!1),0===t.strm.avail_out))return X}return t.insert=t.strstart<D-1?t.strstart:D-1,e===u?(et(t,!0),0===t.strm.avail_out?W:q):t.last_lit&&(et(t,!1),0===t.strm.avail_out)?X:G}function ht(t,e){for(var n,a,i;;){if(t.lookahead<U){if(st(t),t.lookahead<U&&e===l)return X;if(0===t.lookahead)break}if(n=0,t.lookahead>=D&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+D-1])&t.hash_mask,n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=D-1,0!==n&&t.prev_length<t.max_lazy_match&&t.strstart-n<=t.w_size-U&&(t.match_length=rt(t,n),t.match_length<=5&&(t.strategy===v||t.match_length===D&&t.strstart-t.match_start>4096)&&(t.match_length=D-1)),t.prev_length>=D&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-D,a=r._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-D),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=i&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+D-1])&t.hash_mask,n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=D-1,t.strstart++,a&&(et(t,!1),0===t.strm.avail_out))return X}else if(t.match_available){if((a=r._tr_tally(t,0,t.window[t.strstart-1]))&&et(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return X}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(a=r._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<D-1?t.strstart:D-1,e===u?(et(t,!0),0===t.strm.avail_out?W:q):t.last_lit&&(et(t,!1),0===t.strm.avail_out)?X:G}function lt(t,e,n,a,i){this.good_length=t,this.max_lazy=e,this.nice_length=n,this.max_chain=a,this.func=i}function dt(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=B,(e=t.state).pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?M:K,t.adler=2===e.wrap?0:1,e.last_flush=l,r._tr_init(e),c):V(t,g)}function ft(t){var e=dt(t);return e===c&&function(t){t.window_size=2*t.w_size,$(t.head),t.max_lazy_match=a[t.level].max_lazy,t.good_match=a[t.level].good_length,t.nice_match=a[t.level].nice_length,t.max_chain_length=a[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=D-1,t.match_available=0,t.ins_h=0}(t.state),e}function ut(t,e,n,a,r,s){if(!t)return g;var o=1;if(e===m&&(e=6),a<0?(o=0,a=-a):a>15&&(o=2,a-=16),r<1||r>S||n!==A||a<8||a>15||e<0||e>9||s<0||s>x)return V(t,g);8===a&&(a=9);var h=new function(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=A,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new i.Buf16(2*R),this.dyn_dtree=new i.Buf16(2*(2*C+1)),this.bl_tree=new i.Buf16(2*(2*N+1)),$(this.dyn_ltree),$(this.dyn_dtree),$(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new i.Buf16(T+1),this.heap=new i.Buf16(2*Z+1),$(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new i.Buf16(2*Z+1),$(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0};return t.state=h,h.strm=t,h.wrap=o,h.gzhead=null,h.w_bits=a,h.w_size=1<<h.w_bits,h.w_mask=h.w_size-1,h.hash_bits=r+7,h.hash_size=1<<h.hash_bits,h.hash_mask=h.hash_size-1,h.hash_shift=~~((h.hash_bits+D-1)/D),h.window=new i.Buf8(2*h.w_size),h.head=new i.Buf16(h.hash_size),h.prev=new i.Buf16(h.w_size),h.lit_bufsize=1<<r+6,h.pending_buf_size=4*h.lit_bufsize,h.pending_buf=new i.Buf8(h.pending_buf_size),h.d_buf=1*h.lit_bufsize,h.l_buf=3*h.lit_bufsize,h.level=e,h.strategy=s,h.method=n,ft(t)}a=[new lt(0,0,0,0,function(t,e){var n=65535;for(n>t.pending_buf_size-5&&(n=t.pending_buf_size-5);;){if(t.lookahead<=1){if(st(t),0===t.lookahead&&e===l)return X;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var a=t.block_start+n;if((0===t.strstart||t.strstart>=a)&&(t.lookahead=t.strstart-a,t.strstart=a,et(t,!1),0===t.strm.avail_out))return X;if(t.strstart-t.block_start>=t.w_size-U&&(et(t,!1),0===t.strm.avail_out))return X}return t.insert=0,e===u?(et(t,!0),0===t.strm.avail_out?W:q):(t.strstart>t.block_start&&(et(t,!1),t.strm.avail_out),X)}),new lt(4,4,8,4,ot),new lt(4,5,16,8,ot),new lt(4,6,32,32,ot),new lt(4,4,16,16,ht),new lt(8,16,32,32,ht),new lt(8,16,128,128,ht),new lt(8,32,128,256,ht),new lt(32,128,258,1024,ht),new lt(32,258,258,4096,ht)],e.deflateInit=function(t,e){return ut(t,e,A,E,O,z)},e.deflateInit2=ut,e.deflateReset=ft,e.deflateResetKeep=dt,e.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?g:(t.state.gzhead=e,c):g},e.deflate=function(t,e){var n,i,s,h;if(!t||!t.state||e>_||e<0)return t?V(t,g):g;if(i=t.state,!t.output||!t.input&&0!==t.avail_in||i.status===Y&&e!==u)return V(t,0===t.avail_out?b:g);if(i.strm=t,n=i.last_flush,i.last_flush=e,i.status===M)if(2===i.wrap)t.adler=0,nt(i,31),nt(i,139),nt(i,8),i.gzhead?(nt(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),nt(i,255&i.gzhead.time),nt(i,i.gzhead.time>>8&255),nt(i,i.gzhead.time>>16&255),nt(i,i.gzhead.time>>24&255),nt(i,9===i.level?2:i.strategy>=k||i.level<2?4:0),nt(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(nt(i,255&i.gzhead.extra.length),nt(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=o(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=F):(nt(i,0),nt(i,0),nt(i,0),nt(i,0),nt(i,0),nt(i,9===i.level?2:i.strategy>=k||i.level<2?4:0),nt(i,J),i.status=K);else{var w=A+(i.w_bits-8<<4)<<8;w|=(i.strategy>=k||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(w|=L),w+=31-w%31,i.status=K,at(i,w),0!==i.strstart&&(at(i,t.adler>>>16),at(i,65535&t.adler)),t.adler=1}if(i.status===F)if(i.gzhead.extra){for(s=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>s&&(t.adler=o(t.adler,i.pending_buf,i.pending-s,s)),tt(t),s=i.pending,i.pending!==i.pending_buf_size));)nt(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>s&&(t.adler=o(t.adler,i.pending_buf,i.pending-s,s)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=j)}else i.status=j;if(i.status===j)if(i.gzhead.name){s=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>s&&(t.adler=o(t.adler,i.pending_buf,i.pending-s,s)),tt(t),s=i.pending,i.pending===i.pending_buf_size)){h=1;break}h=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,nt(i,h)}while(0!==h);i.gzhead.hcrc&&i.pending>s&&(t.adler=o(t.adler,i.pending_buf,i.pending-s,s)),0===h&&(i.gzindex=0,i.status=H)}else i.status=H;if(i.status===H)if(i.gzhead.comment){s=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>s&&(t.adler=o(t.adler,i.pending_buf,i.pending-s,s)),tt(t),s=i.pending,i.pending===i.pending_buf_size)){h=1;break}h=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,nt(i,h)}while(0!==h);i.gzhead.hcrc&&i.pending>s&&(t.adler=o(t.adler,i.pending_buf,i.pending-s,s)),0===h&&(i.status=P)}else i.status=P;if(i.status===P&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&tt(t),i.pending+2<=i.pending_buf_size&&(nt(i,255&t.adler),nt(i,t.adler>>8&255),t.adler=0,i.status=K)):i.status=K),0!==i.pending){if(tt(t),0===t.avail_out)return i.last_flush=-1,c}else if(0===t.avail_in&&Q(e)<=Q(n)&&e!==u)return V(t,b);if(i.status===Y&&0!==t.avail_in)return V(t,b);if(0!==t.avail_in||0!==i.lookahead||e!==l&&i.status!==Y){var m=i.strategy===k?function(t,e){for(var n;;){if(0===t.lookahead&&(st(t),0===t.lookahead)){if(e===l)return X;break}if(t.match_length=0,n=r._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,n&&(et(t,!1),0===t.strm.avail_out))return X}return t.insert=0,e===u?(et(t,!0),0===t.strm.avail_out?W:q):t.last_lit&&(et(t,!1),0===t.strm.avail_out)?X:G}(i,e):i.strategy===y?function(t,e){for(var n,a,i,s,o=t.window;;){if(t.lookahead<=I){if(st(t),t.lookahead<=I&&e===l)return X;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=D&&t.strstart>0&&(a=o[i=t.strstart-1])===o[++i]&&a===o[++i]&&a===o[++i]){s=t.strstart+I;do{}while(a===o[++i]&&a===o[++i]&&a===o[++i]&&a===o[++i]&&a===o[++i]&&a===o[++i]&&a===o[++i]&&a===o[++i]&&i<s);t.match_length=I-(s-i),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=D?(n=r._tr_tally(t,1,t.match_length-D),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(n=r._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),n&&(et(t,!1),0===t.strm.avail_out))return X}return t.insert=0,e===u?(et(t,!0),0===t.strm.avail_out?W:q):t.last_lit&&(et(t,!1),0===t.strm.avail_out)?X:G}(i,e):a[i.level].func(i,e);if(m!==W&&m!==q||(i.status=Y),m===X||m===W)return 0===t.avail_out&&(i.last_flush=-1),c;if(m===G&&(e===d?r._tr_align(i):e!==_&&(r._tr_stored_block(i,0,0,!1),e===f&&($(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),tt(t),0===t.avail_out))return i.last_flush=-1,c}return e!==u?c:i.wrap<=0?p:(2===i.wrap?(nt(i,255&t.adler),nt(i,t.adler>>8&255),nt(i,t.adler>>16&255),nt(i,t.adler>>24&255),nt(i,255&t.total_in),nt(i,t.total_in>>8&255),nt(i,t.total_in>>16&255),nt(i,t.total_in>>24&255)):(at(i,t.adler>>>16),at(i,65535&t.adler)),tt(t),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?c:p)},e.deflateEnd=function(t){var e;return t&&t.state?(e=t.state.status)!==M&&e!==F&&e!==j&&e!==H&&e!==P&&e!==K&&e!==Y?V(t,g):(t.state=null,e===K?V(t,w):c):g},e.deflateSetDictionary=function(t,e){var n,a,r,o,h,l,d,f,u=e.length;if(!t||!t.state)return g;if(2===(o=(n=t.state).wrap)||1===o&&n.status!==M||n.lookahead)return g;for(1===o&&(t.adler=s(t.adler,e,u,0)),n.wrap=0,u>=n.w_size&&(0===o&&($(n.head),n.strstart=0,n.block_start=0,n.insert=0),f=new i.Buf8(n.w_size),i.arraySet(f,e,u-n.w_size,n.w_size,0),e=f,u=n.w_size),h=t.avail_in,l=t.next_in,d=t.input,t.avail_in=u,t.next_in=0,t.input=e,st(n);n.lookahead>=D;){a=n.strstart,r=n.lookahead-(D-1);do{n.ins_h=(n.ins_h<<n.hash_shift^n.window[a+D-1])&n.hash_mask,n.prev[a&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=a,a++}while(--r);n.strstart=a,n.lookahead=D-1,st(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=D-1,n.match_available=0,t.next_in=l,t.input=d,t.avail_in=h,n.wrap=o,c},e.deflateInfo="pako deflate (from Nodeca project)"},734:function(t,e,n){"use strict";var a=n(132),i=4,r=0,s=1,o=2;function h(t){for(var e=t.length;--e>=0;)t[e]=0}var l=0,d=1,f=2,u=29,_=256,c=_+1+u,p=30,g=19,w=2*c+1,b=15,m=16,v=7,k=256,y=16,x=17,z=18,B=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],A=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],S=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],E=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],O=new Array(2*(c+2));h(O);var Z=new Array(2*p);h(Z);var C=new Array(512);h(C);var N=new Array(256);h(N);var R=new Array(u);h(R);var T,D,I,U=new Array(p);function L(t,e,n,a,i){this.static_tree=t,this.extra_bits=e,this.extra_base=n,this.elems=a,this.max_length=i,this.has_stree=t&&t.length}function M(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function F(t){return t<256?C[t]:C[256+(t>>>7)]}function j(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function H(t,e,n){t.bi_valid>m-n?(t.bi_buf|=e<<t.bi_valid&65535,j(t,t.bi_buf),t.bi_buf=e>>m-t.bi_valid,t.bi_valid+=n-m):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=n)}function P(t,e,n){H(t,n[2*e],n[2*e+1])}function K(t,e){var n=0;do{n|=1&t,t>>>=1,n<<=1}while(--e>0);return n>>>1}function Y(t,e,n){var a,i,r=new Array(b+1),s=0;for(a=1;a<=b;a++)r[a]=s=s+n[a-1]<<1;for(i=0;i<=e;i++){var o=t[2*i+1];0!==o&&(t[2*i]=K(r[o]++,o))}}function X(t){var e;for(e=0;e<c;e++)t.dyn_ltree[2*e]=0;for(e=0;e<p;e++)t.dyn_dtree[2*e]=0;for(e=0;e<g;e++)t.bl_tree[2*e]=0;t.dyn_ltree[2*k]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function G(t){t.bi_valid>8?j(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function W(t,e,n,a){var i=2*e,r=2*n;return t[i]<t[r]||t[i]===t[r]&&a[e]<=a[n]}function q(t,e,n){for(var a=t.heap[n],i=n<<1;i<=t.heap_len&&(i<t.heap_len&&W(e,t.heap[i+1],t.heap[i],t.depth)&&i++,!W(e,a,t.heap[i],t.depth));)t.heap[n]=t.heap[i],n=i,i<<=1;t.heap[n]=a}function J(t,e,n){var a,i,r,s,o=0;if(0!==t.last_lit)do{a=t.pending_buf[t.d_buf+2*o]<<8|t.pending_buf[t.d_buf+2*o+1],i=t.pending_buf[t.l_buf+o],o++,0===a?P(t,i,e):(P(t,(r=N[i])+_+1,e),0!==(s=B[r])&&H(t,i-=R[r],s),P(t,r=F(--a),n),0!==(s=A[r])&&H(t,a-=U[r],s))}while(o<t.last_lit);P(t,k,e)}function V(t,e){var n,a,i,r=e.dyn_tree,s=e.stat_desc.static_tree,o=e.stat_desc.has_stree,h=e.stat_desc.elems,l=-1;for(t.heap_len=0,t.heap_max=w,n=0;n<h;n++)0!==r[2*n]?(t.heap[++t.heap_len]=l=n,t.depth[n]=0):r[2*n+1]=0;for(;t.heap_len<2;)r[2*(i=t.heap[++t.heap_len]=l<2?++l:0)]=1,t.depth[i]=0,t.opt_len--,o&&(t.static_len-=s[2*i+1]);for(e.max_code=l,n=t.heap_len>>1;n>=1;n--)q(t,r,n);i=h;do{n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],q(t,r,1),a=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=a,r[2*i]=r[2*n]+r[2*a],t.depth[i]=(t.depth[n]>=t.depth[a]?t.depth[n]:t.depth[a])+1,r[2*n+1]=r[2*a+1]=i,t.heap[1]=i++,q(t,r,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(t,e){var n,a,i,r,s,o,h=e.dyn_tree,l=e.max_code,d=e.stat_desc.static_tree,f=e.stat_desc.has_stree,u=e.stat_desc.extra_bits,_=e.stat_desc.extra_base,c=e.stat_desc.max_length,p=0;for(r=0;r<=b;r++)t.bl_count[r]=0;for(h[2*t.heap[t.heap_max]+1]=0,n=t.heap_max+1;n<w;n++)(r=h[2*h[2*(a=t.heap[n])+1]+1]+1)>c&&(r=c,p++),h[2*a+1]=r,a>l||(t.bl_count[r]++,s=0,a>=_&&(s=u[a-_]),o=h[2*a],t.opt_len+=o*(r+s),f&&(t.static_len+=o*(d[2*a+1]+s)));if(0!==p){do{for(r=c-1;0===t.bl_count[r];)r--;t.bl_count[r]--,t.bl_count[r+1]+=2,t.bl_count[c]--,p-=2}while(p>0);for(r=c;0!==r;r--)for(a=t.bl_count[r];0!==a;)(i=t.heap[--n])>l||(h[2*i+1]!==r&&(t.opt_len+=(r-h[2*i+1])*h[2*i],h[2*i+1]=r),a--)}}(t,e),Y(r,l,t.bl_count)}function Q(t,e,n){var a,i,r=-1,s=e[1],o=0,h=7,l=4;for(0===s&&(h=138,l=3),e[2*(n+1)+1]=65535,a=0;a<=n;a++)i=s,s=e[2*(a+1)+1],++o<h&&i===s||(o<l?t.bl_tree[2*i]+=o:0!==i?(i!==r&&t.bl_tree[2*i]++,t.bl_tree[2*y]++):o<=10?t.bl_tree[2*x]++:t.bl_tree[2*z]++,o=0,r=i,0===s?(h=138,l=3):i===s?(h=6,l=3):(h=7,l=4))}function $(t,e,n){var a,i,r=-1,s=e[1],o=0,h=7,l=4;for(0===s&&(h=138,l=3),a=0;a<=n;a++)if(i=s,s=e[2*(a+1)+1],!(++o<h&&i===s)){if(o<l)do{P(t,i,t.bl_tree)}while(0!=--o);else 0!==i?(i!==r&&(P(t,i,t.bl_tree),o--),P(t,y,t.bl_tree),H(t,o-3,2)):o<=10?(P(t,x,t.bl_tree),H(t,o-3,3)):(P(t,z,t.bl_tree),H(t,o-11,7));o=0,r=i,0===s?(h=138,l=3):i===s?(h=6,l=3):(h=7,l=4)}}h(U);var tt=!1;function et(t,e,n,i){H(t,(l<<1)+(i?1:0),3),function(t,e,n,i){G(t),i&&(j(t,n),j(t,~n)),a.arraySet(t.pending_buf,t.window,e,n,t.pending),t.pending+=n}(t,e,n,!0)}e._tr_init=function(t){tt||(function(){var t,e,n,a,i,r=new Array(b+1);for(n=0,a=0;a<u-1;a++)for(R[a]=n,t=0;t<1<<B[a];t++)N[n++]=a;for(N[n-1]=a,i=0,a=0;a<16;a++)for(U[a]=i,t=0;t<1<<A[a];t++)C[i++]=a;for(i>>=7;a<p;a++)for(U[a]=i<<7,t=0;t<1<<A[a]-7;t++)C[256+i++]=a;for(e=0;e<=b;e++)r[e]=0;for(t=0;t<=143;)O[2*t+1]=8,t++,r[8]++;for(;t<=255;)O[2*t+1]=9,t++,r[9]++;for(;t<=279;)O[2*t+1]=7,t++,r[7]++;for(;t<=287;)O[2*t+1]=8,t++,r[8]++;for(Y(O,c+1,r),t=0;t<p;t++)Z[2*t+1]=5,Z[2*t]=K(t,5);T=new L(O,B,_+1,c,b),D=new L(Z,A,0,p,b),I=new L(new Array(0),S,0,g,v)}(),tt=!0),t.l_desc=new M(t.dyn_ltree,T),t.d_desc=new M(t.dyn_dtree,D),t.bl_desc=new M(t.bl_tree,I),t.bi_buf=0,t.bi_valid=0,X(t)},e._tr_stored_block=et,e._tr_flush_block=function(t,e,n,a){var h,l,u=0;t.level>0?(t.strm.data_type===o&&(t.strm.data_type=function(t){var e,n=4093624447;for(e=0;e<=31;e++,n>>>=1)if(1&n&&0!==t.dyn_ltree[2*e])return r;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return s;for(e=32;e<_;e++)if(0!==t.dyn_ltree[2*e])return s;return r}(t)),V(t,t.l_desc),V(t,t.d_desc),u=function(t){var e;for(Q(t,t.dyn_ltree,t.l_desc.max_code),Q(t,t.dyn_dtree,t.d_desc.max_code),V(t,t.bl_desc),e=g-1;e>=3&&0===t.bl_tree[2*E[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),h=t.opt_len+3+7>>>3,(l=t.static_len+3+7>>>3)<=h&&(h=l)):h=l=n+5,n+4<=h&&-1!==e?et(t,e,n,a):t.strategy===i||l===h?(H(t,(d<<1)+(a?1:0),3),J(t,O,Z)):(H(t,(f<<1)+(a?1:0),3),function(t,e,n,a){var i;for(H(t,e-257,5),H(t,n-1,5),H(t,a-4,4),i=0;i<a;i++)H(t,t.bl_tree[2*E[i]+1],3);$(t,t.dyn_ltree,e-1),$(t,t.dyn_dtree,n-1)}(t,t.l_desc.max_code+1,t.d_desc.max_code+1,u+1),J(t,t.dyn_ltree,t.dyn_dtree)),X(t),a&&G(t)},e._tr_tally=function(t,e,n){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&n,t.last_lit++,0===e?t.dyn_ltree[2*n]++:(t.matches++,e--,t.dyn_ltree[2*(N[n]+_+1)]++,t.dyn_dtree[2*F(e)]++),t.last_lit===t.lit_bufsize-1},e._tr_align=function(t){H(t,d<<1,3),P(t,k,O),function(t){16===t.bi_valid?(j(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}},735:function(t,e,n){"use strict";var a=n(736),i=n(132),r=n(489),s=n(491),o=n(324),h=n(490),l=n(739),d=Object.prototype.toString;function f(t){if(!(this instanceof f))return new f(t);this.options=i.assign({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new h,this.strm.avail_out=0;var n=a.inflateInit2(this.strm,e.windowBits);if(n!==s.Z_OK)throw new Error(o[n]);this.header=new l,a.inflateGetHeader(this.strm,this.header)}function u(t,e){var n=new f(e);if(n.push(t,!0),n.err)throw n.msg||o[n.err];return n.result}f.prototype.push=function(t,e){var n,o,h,l,f,u,_=this.strm,c=this.options.chunkSize,p=this.options.dictionary,g=!1;if(this.ended)return!1;o=e===~~e?e:!0===e?s.Z_FINISH:s.Z_NO_FLUSH,"string"==typeof t?_.input=r.binstring2buf(t):"[object ArrayBuffer]"===d.call(t)?_.input=new Uint8Array(t):_.input=t,_.next_in=0,_.avail_in=_.input.length;do{if(0===_.avail_out&&(_.output=new i.Buf8(c),_.next_out=0,_.avail_out=c),(n=a.inflate(_,s.Z_NO_FLUSH))===s.Z_NEED_DICT&&p&&(u="string"==typeof p?r.string2buf(p):"[object ArrayBuffer]"===d.call(p)?new Uint8Array(p):p,n=a.inflateSetDictionary(this.strm,u)),n===s.Z_BUF_ERROR&&!0===g&&(n=s.Z_OK,g=!1),n!==s.Z_STREAM_END&&n!==s.Z_OK)return this.onEnd(n),this.ended=!0,!1;_.next_out&&(0!==_.avail_out&&n!==s.Z_STREAM_END&&(0!==_.avail_in||o!==s.Z_FINISH&&o!==s.Z_SYNC_FLUSH)||("string"===this.options.to?(h=r.utf8border(_.output,_.next_out),l=_.next_out-h,f=r.buf2string(_.output,h),_.next_out=l,_.avail_out=c-l,l&&i.arraySet(_.output,_.output,h,l,0),this.onData(f)):this.onData(i.shrinkBuf(_.output,_.next_out)))),0===_.avail_in&&0===_.avail_out&&(g=!0)}while((_.avail_in>0||0===_.avail_out)&&n!==s.Z_STREAM_END);return n===s.Z_STREAM_END&&(o=s.Z_FINISH),o===s.Z_FINISH?(n=a.inflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===s.Z_OK):o!==s.Z_SYNC_FLUSH||(this.onEnd(s.Z_OK),_.avail_out=0,!0)},f.prototype.onData=function(t){this.chunks.push(t)},f.prototype.onEnd=function(t){t===s.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},e.Inflate=f,e.inflate=u,e.inflateRaw=function(t,e){return(e=e||{}).raw=!0,u(t,e)},e.ungzip=u},736:function(t,e,n){"use strict";var a=n(132),i=n(487),r=n(488),s=n(737),o=n(738),h=0,l=1,d=2,f=4,u=5,_=6,c=0,p=1,g=2,w=-2,b=-3,m=-4,v=-5,k=8,y=1,x=2,z=3,B=4,A=5,S=6,E=7,O=8,Z=9,C=10,N=11,R=12,T=13,D=14,I=15,U=16,L=17,M=18,F=19,j=20,H=21,P=22,K=23,Y=24,X=25,G=26,W=27,q=28,J=29,V=30,Q=31,$=32,tt=852,et=592,nt=15;function at(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function it(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=y,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new a.Buf32(tt),e.distcode=e.distdyn=new a.Buf32(et),e.sane=1,e.back=-1,c):w}function rt(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,it(t)):w}function st(t,e){var n,a;return t&&t.state?(a=t.state,e<0?(n=0,e=-e):(n=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?w:(null!==a.window&&a.wbits!==e&&(a.window=null),a.wrap=n,a.wbits=e,rt(t))):w}function ot(t,e){var n,i;return t?(i=new function(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new a.Buf16(320),this.work=new a.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0},t.state=i,i.window=null,(n=st(t,e))!==c&&(t.state=null),n):w}var ht,lt,dt=!0;function ft(t){if(dt){var e;for(ht=new a.Buf32(512),lt=new a.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(o(l,t.lens,0,288,ht,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;o(d,t.lens,0,32,lt,0,t.work,{bits:5}),dt=!1}t.lencode=ht,t.lenbits=9,t.distcode=lt,t.distbits=5}function ut(t,e,n,i){var r,s=t.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new a.Buf8(s.wsize)),i>=s.wsize?(a.arraySet(s.window,e,n-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):((r=s.wsize-s.wnext)>i&&(r=i),a.arraySet(s.window,e,n-i,r,s.wnext),(i-=r)?(a.arraySet(s.window,e,n-i,i,0),s.wnext=i,s.whave=s.wsize):(s.wnext+=r,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=r))),0}e.inflateReset=rt,e.inflateReset2=st,e.inflateResetKeep=it,e.inflateInit=function(t){return ot(t,nt)},e.inflateInit2=ot,e.inflate=function(t,e){var n,tt,et,nt,it,rt,st,ot,ht,lt,dt,_t,ct,pt,gt,wt,bt,mt,vt,kt,yt,xt,zt,Bt,At=0,St=new a.Buf8(4),Et=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return w;(n=t.state).mode===R&&(n.mode=T),it=t.next_out,et=t.output,st=t.avail_out,nt=t.next_in,tt=t.input,rt=t.avail_in,ot=n.hold,ht=n.bits,lt=rt,dt=st,xt=c;t:for(;;)switch(n.mode){case y:if(0===n.wrap){n.mode=T;break}for(;ht<16;){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}if(2&n.wrap&&35615===ot){n.check=0,St[0]=255&ot,St[1]=ot>>>8&255,n.check=r(n.check,St,2,0),ot=0,ht=0,n.mode=x;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&ot)<<8)+(ot>>8))%31){t.msg="incorrect header check",n.mode=V;break}if((15&ot)!==k){t.msg="unknown compression method",n.mode=V;break}if(ht-=4,yt=8+(15&(ot>>>=4)),0===n.wbits)n.wbits=yt;else if(yt>n.wbits){t.msg="invalid window size",n.mode=V;break}n.dmax=1<<yt,t.adler=n.check=1,n.mode=512&ot?C:R,ot=0,ht=0;break;case x:for(;ht<16;){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}if(n.flags=ot,(255&n.flags)!==k){t.msg="unknown compression method",n.mode=V;break}if(57344&n.flags){t.msg="unknown header flags set",n.mode=V;break}n.head&&(n.head.text=ot>>8&1),512&n.flags&&(St[0]=255&ot,St[1]=ot>>>8&255,n.check=r(n.check,St,2,0)),ot=0,ht=0,n.mode=z;case z:for(;ht<32;){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}n.head&&(n.head.time=ot),512&n.flags&&(St[0]=255&ot,St[1]=ot>>>8&255,St[2]=ot>>>16&255,St[3]=ot>>>24&255,n.check=r(n.check,St,4,0)),ot=0,ht=0,n.mode=B;case B:for(;ht<16;){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}n.head&&(n.head.xflags=255&ot,n.head.os=ot>>8),512&n.flags&&(St[0]=255&ot,St[1]=ot>>>8&255,n.check=r(n.check,St,2,0)),ot=0,ht=0,n.mode=A;case A:if(1024&n.flags){for(;ht<16;){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}n.length=ot,n.head&&(n.head.extra_len=ot),512&n.flags&&(St[0]=255&ot,St[1]=ot>>>8&255,n.check=r(n.check,St,2,0)),ot=0,ht=0}else n.head&&(n.head.extra=null);n.mode=S;case S:if(1024&n.flags&&((_t=n.length)>rt&&(_t=rt),_t&&(n.head&&(yt=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),a.arraySet(n.head.extra,tt,nt,_t,yt)),512&n.flags&&(n.check=r(n.check,tt,_t,nt)),rt-=_t,nt+=_t,n.length-=_t),n.length))break t;n.length=0,n.mode=E;case E:if(2048&n.flags){if(0===rt)break t;_t=0;do{yt=tt[nt+_t++],n.head&&yt&&n.length<65536&&(n.head.name+=String.fromCharCode(yt))}while(yt&&_t<rt);if(512&n.flags&&(n.check=r(n.check,tt,_t,nt)),rt-=_t,nt+=_t,yt)break t}else n.head&&(n.head.name=null);n.length=0,n.mode=O;case O:if(4096&n.flags){if(0===rt)break t;_t=0;do{yt=tt[nt+_t++],n.head&&yt&&n.length<65536&&(n.head.comment+=String.fromCharCode(yt))}while(yt&&_t<rt);if(512&n.flags&&(n.check=r(n.check,tt,_t,nt)),rt-=_t,nt+=_t,yt)break t}else n.head&&(n.head.comment=null);n.mode=Z;case Z:if(512&n.flags){for(;ht<16;){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}if(ot!==(65535&n.check)){t.msg="header crc mismatch",n.mode=V;break}ot=0,ht=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),t.adler=n.check=0,n.mode=R;break;case C:for(;ht<32;){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}t.adler=n.check=at(ot),ot=0,ht=0,n.mode=N;case N:if(0===n.havedict)return t.next_out=it,t.avail_out=st,t.next_in=nt,t.avail_in=rt,n.hold=ot,n.bits=ht,g;t.adler=n.check=1,n.mode=R;case R:if(e===u||e===_)break t;case T:if(n.last){ot>>>=7&ht,ht-=7&ht,n.mode=W;break}for(;ht<3;){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}switch(n.last=1&ot,ht-=1,3&(ot>>>=1)){case 0:n.mode=D;break;case 1:if(ft(n),n.mode=j,e===_){ot>>>=2,ht-=2;break t}break;case 2:n.mode=L;break;case 3:t.msg="invalid block type",n.mode=V}ot>>>=2,ht-=2;break;case D:for(ot>>>=7&ht,ht-=7&ht;ht<32;){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}if((65535&ot)!=(ot>>>16^65535)){t.msg="invalid stored block lengths",n.mode=V;break}if(n.length=65535&ot,ot=0,ht=0,n.mode=I,e===_)break t;case I:n.mode=U;case U:if(_t=n.length){if(_t>rt&&(_t=rt),_t>st&&(_t=st),0===_t)break t;a.arraySet(et,tt,nt,_t,it),rt-=_t,nt+=_t,st-=_t,it+=_t,n.length-=_t;break}n.mode=R;break;case L:for(;ht<14;){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}if(n.nlen=257+(31&ot),ot>>>=5,ht-=5,n.ndist=1+(31&ot),ot>>>=5,ht-=5,n.ncode=4+(15&ot),ot>>>=4,ht-=4,n.nlen>286||n.ndist>30){t.msg="too many length or distance symbols",n.mode=V;break}n.have=0,n.mode=M;case M:for(;n.have<n.ncode;){for(;ht<3;){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}n.lens[Et[n.have++]]=7&ot,ot>>>=3,ht-=3}for(;n.have<19;)n.lens[Et[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,zt={bits:n.lenbits},xt=o(h,n.lens,0,19,n.lencode,0,n.work,zt),n.lenbits=zt.bits,xt){t.msg="invalid code lengths set",n.mode=V;break}n.have=0,n.mode=F;case F:for(;n.have<n.nlen+n.ndist;){for(;wt=(At=n.lencode[ot&(1<<n.lenbits)-1])>>>16&255,bt=65535&At,!((gt=At>>>24)<=ht);){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}if(bt<16)ot>>>=gt,ht-=gt,n.lens[n.have++]=bt;else{if(16===bt){for(Bt=gt+2;ht<Bt;){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}if(ot>>>=gt,ht-=gt,0===n.have){t.msg="invalid bit length repeat",n.mode=V;break}yt=n.lens[n.have-1],_t=3+(3&ot),ot>>>=2,ht-=2}else if(17===bt){for(Bt=gt+3;ht<Bt;){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}ht-=gt,yt=0,_t=3+(7&(ot>>>=gt)),ot>>>=3,ht-=3}else{for(Bt=gt+7;ht<Bt;){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}ht-=gt,yt=0,_t=11+(127&(ot>>>=gt)),ot>>>=7,ht-=7}if(n.have+_t>n.nlen+n.ndist){t.msg="invalid bit length repeat",n.mode=V;break}for(;_t--;)n.lens[n.have++]=yt}}if(n.mode===V)break;if(0===n.lens[256]){t.msg="invalid code -- missing end-of-block",n.mode=V;break}if(n.lenbits=9,zt={bits:n.lenbits},xt=o(l,n.lens,0,n.nlen,n.lencode,0,n.work,zt),n.lenbits=zt.bits,xt){t.msg="invalid literal/lengths set",n.mode=V;break}if(n.distbits=6,n.distcode=n.distdyn,zt={bits:n.distbits},xt=o(d,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,zt),n.distbits=zt.bits,xt){t.msg="invalid distances set",n.mode=V;break}if(n.mode=j,e===_)break t;case j:n.mode=H;case H:if(rt>=6&&st>=258){t.next_out=it,t.avail_out=st,t.next_in=nt,t.avail_in=rt,n.hold=ot,n.bits=ht,s(t,dt),it=t.next_out,et=t.output,st=t.avail_out,nt=t.next_in,tt=t.input,rt=t.avail_in,ot=n.hold,ht=n.bits,n.mode===R&&(n.back=-1);break}for(n.back=0;wt=(At=n.lencode[ot&(1<<n.lenbits)-1])>>>16&255,bt=65535&At,!((gt=At>>>24)<=ht);){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}if(wt&&0==(240&wt)){for(mt=gt,vt=wt,kt=bt;wt=(At=n.lencode[kt+((ot&(1<<mt+vt)-1)>>mt)])>>>16&255,bt=65535&At,!(mt+(gt=At>>>24)<=ht);){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}ot>>>=mt,ht-=mt,n.back+=mt}if(ot>>>=gt,ht-=gt,n.back+=gt,n.length=bt,0===wt){n.mode=G;break}if(32&wt){n.back=-1,n.mode=R;break}if(64&wt){t.msg="invalid literal/length code",n.mode=V;break}n.extra=15&wt,n.mode=P;case P:if(n.extra){for(Bt=n.extra;ht<Bt;){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}n.length+=ot&(1<<n.extra)-1,ot>>>=n.extra,ht-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=K;case K:for(;wt=(At=n.distcode[ot&(1<<n.distbits)-1])>>>16&255,bt=65535&At,!((gt=At>>>24)<=ht);){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}if(0==(240&wt)){for(mt=gt,vt=wt,kt=bt;wt=(At=n.distcode[kt+((ot&(1<<mt+vt)-1)>>mt)])>>>16&255,bt=65535&At,!(mt+(gt=At>>>24)<=ht);){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}ot>>>=mt,ht-=mt,n.back+=mt}if(ot>>>=gt,ht-=gt,n.back+=gt,64&wt){t.msg="invalid distance code",n.mode=V;break}n.offset=bt,n.extra=15&wt,n.mode=Y;case Y:if(n.extra){for(Bt=n.extra;ht<Bt;){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}n.offset+=ot&(1<<n.extra)-1,ot>>>=n.extra,ht-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){t.msg="invalid distance too far back",n.mode=V;break}n.mode=X;case X:if(0===st)break t;if(_t=dt-st,n.offset>_t){if((_t=n.offset-_t)>n.whave&&n.sane){t.msg="invalid distance too far back",n.mode=V;break}_t>n.wnext?(_t-=n.wnext,ct=n.wsize-_t):ct=n.wnext-_t,_t>n.length&&(_t=n.length),pt=n.window}else pt=et,ct=it-n.offset,_t=n.length;_t>st&&(_t=st),st-=_t,n.length-=_t;do{et[it++]=pt[ct++]}while(--_t);0===n.length&&(n.mode=H);break;case G:if(0===st)break t;et[it++]=n.length,st--,n.mode=H;break;case W:if(n.wrap){for(;ht<32;){if(0===rt)break t;rt--,ot|=tt[nt++]<<ht,ht+=8}if(dt-=st,t.total_out+=dt,n.total+=dt,dt&&(t.adler=n.check=n.flags?r(n.check,et,dt,it-dt):i(n.check,et,dt,it-dt)),dt=st,(n.flags?ot:at(ot))!==n.check){t.msg="incorrect data check",n.mode=V;break}ot=0,ht=0}n.mode=q;case q:if(n.wrap&&n.flags){for(;ht<32;){if(0===rt)break t;rt--,ot+=tt[nt++]<<ht,ht+=8}if(ot!==(4294967295&n.total)){t.msg="incorrect length check",n.mode=V;break}ot=0,ht=0}n.mode=J;case J:xt=p;break t;case V:xt=b;break t;case Q:return m;case $:default:return w}return t.next_out=it,t.avail_out=st,t.next_in=nt,t.avail_in=rt,n.hold=ot,n.bits=ht,(n.wsize||dt!==t.avail_out&&n.mode<V&&(n.mode<W||e!==f))&&ut(t,t.output,t.next_out,dt-t.avail_out)?(n.mode=Q,m):(lt-=t.avail_in,dt-=t.avail_out,t.total_in+=lt,t.total_out+=dt,n.total+=dt,n.wrap&&dt&&(t.adler=n.check=n.flags?r(n.check,et,dt,t.next_out-dt):i(n.check,et,dt,t.next_out-dt)),t.data_type=n.bits+(n.last?64:0)+(n.mode===R?128:0)+(n.mode===j||n.mode===I?256:0),(0===lt&&0===dt||e===f)&&xt===c&&(xt=v),xt)},e.inflateEnd=function(t){if(!t||!t.state)return w;var e=t.state;return e.window&&(e.window=null),t.state=null,c},e.inflateGetHeader=function(t,e){var n;return t&&t.state?0==(2&(n=t.state).wrap)?w:(n.head=e,e.done=!1,c):w},e.inflateSetDictionary=function(t,e){var n,a=e.length;return t&&t.state?0!==(n=t.state).wrap&&n.mode!==N?w:n.mode===N&&i(1,e,a,0)!==n.check?b:ut(t,e,a,a)?(n.mode=Q,m):(n.havedict=1,c):w},e.inflateInfo="pako inflate (from Nodeca project)"},737:function(t,e,n){"use strict";t.exports=function(t,e){var n,a,i,r,s,o,h,l,d,f,u,_,c,p,g,w,b,m,v,k,y,x,z,B,A;n=t.state,a=t.next_in,B=t.input,i=a+(t.avail_in-5),r=t.next_out,A=t.output,s=r-(e-t.avail_out),o=r+(t.avail_out-257),h=n.dmax,l=n.wsize,d=n.whave,f=n.wnext,u=n.window,_=n.hold,c=n.bits,p=n.lencode,g=n.distcode,w=(1<<n.lenbits)-1,b=(1<<n.distbits)-1;t:do{c<15&&(_+=B[a++]<<c,c+=8,_+=B[a++]<<c,c+=8),m=p[_&w];e:for(;;){if(_>>>=v=m>>>24,c-=v,0===(v=m>>>16&255))A[r++]=65535&m;else{if(!(16&v)){if(0==(64&v)){m=p[(65535&m)+(_&(1<<v)-1)];continue e}if(32&v){n.mode=12;break t}t.msg="invalid literal/length code",n.mode=30;break t}k=65535&m,(v&=15)&&(c<v&&(_+=B[a++]<<c,c+=8),k+=_&(1<<v)-1,_>>>=v,c-=v),c<15&&(_+=B[a++]<<c,c+=8,_+=B[a++]<<c,c+=8),m=g[_&b];n:for(;;){if(_>>>=v=m>>>24,c-=v,!(16&(v=m>>>16&255))){if(0==(64&v)){m=g[(65535&m)+(_&(1<<v)-1)];continue n}t.msg="invalid distance code",n.mode=30;break t}if(y=65535&m,c<(v&=15)&&(_+=B[a++]<<c,(c+=8)<v&&(_+=B[a++]<<c,c+=8)),(y+=_&(1<<v)-1)>h){t.msg="invalid distance too far back",n.mode=30;break t}if(_>>>=v,c-=v,y>(v=r-s)){if((v=y-v)>d&&n.sane){t.msg="invalid distance too far back",n.mode=30;break t}if(x=0,z=u,0===f){if(x+=l-v,v<k){k-=v;do{A[r++]=u[x++]}while(--v);x=r-y,z=A}}else if(f<v){if(x+=l+f-v,(v-=f)<k){k-=v;do{A[r++]=u[x++]}while(--v);if(x=0,f<k){k-=v=f;do{A[r++]=u[x++]}while(--v);x=r-y,z=A}}}else if(x+=f-v,v<k){k-=v;do{A[r++]=u[x++]}while(--v);x=r-y,z=A}for(;k>2;)A[r++]=z[x++],A[r++]=z[x++],A[r++]=z[x++],k-=3;k&&(A[r++]=z[x++],k>1&&(A[r++]=z[x++]))}else{x=r-y;do{A[r++]=A[x++],A[r++]=A[x++],A[r++]=A[x++],k-=3}while(k>2);k&&(A[r++]=A[x++],k>1&&(A[r++]=A[x++]))}break}}break}}while(a<i&&r<o);a-=k=c>>3,_&=(1<<(c-=k<<3))-1,t.next_in=a,t.next_out=r,t.avail_in=a<i?i-a+5:5-(a-i),t.avail_out=r<o?o-r+257:257-(r-o),n.hold=_,n.bits=c}},738:function(t,e,n){"use strict";var a=n(132),i=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],r=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],s=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],o=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(t,e,n,h,l,d,f,u){var _,c,p,g,w,b,m,v,k,y=u.bits,x=0,z=0,B=0,A=0,S=0,E=0,O=0,Z=0,C=0,N=0,R=null,T=0,D=new a.Buf16(16),I=new a.Buf16(16),U=null,L=0;for(x=0;x<=15;x++)D[x]=0;for(z=0;z<h;z++)D[e[n+z]]++;for(S=y,A=15;A>=1&&0===D[A];A--);if(S>A&&(S=A),0===A)return l[d++]=20971520,l[d++]=20971520,u.bits=1,0;for(B=1;B<A&&0===D[B];B++);for(S<B&&(S=B),Z=1,x=1;x<=15;x++)if(Z<<=1,(Z-=D[x])<0)return-1;if(Z>0&&(0===t||1!==A))return-1;for(I[1]=0,x=1;x<15;x++)I[x+1]=I[x]+D[x];for(z=0;z<h;z++)0!==e[n+z]&&(f[I[e[n+z]]++]=z);if(0===t?(R=U=f,b=19):1===t?(R=i,T-=257,U=r,L-=257,b=256):(R=s,U=o,b=-1),N=0,z=0,x=B,w=d,E=S,O=0,p=-1,g=(C=1<<S)-1,1===t&&C>852||2===t&&C>592)return 1;for(;;){m=x-O,f[z]<b?(v=0,k=f[z]):f[z]>b?(v=U[L+f[z]],k=R[T+f[z]]):(v=96,k=0),_=1<<x-O,B=c=1<<E;do{l[w+(N>>O)+(c-=_)]=m<<24|v<<16|k|0}while(0!==c);for(_=1<<x-1;N&_;)_>>=1;if(0!==_?(N&=_-1,N+=_):N=0,z++,0==--D[x]){if(x===A)break;x=e[n+f[z]]}if(x>S&&(N&g)!==p){for(0===O&&(O=S),w+=B,Z=1<<(E=x-O);E+O<A&&!((Z-=D[E+O])<=0);)E++,Z<<=1;if(C+=1<<E,1===t&&C>852||2===t&&C>592)return 1;l[p=N&g]=S<<24|E<<16|w-d|0}}return 0!==N&&(l[w+N]=x-O<<24|64<<16|0),u.bits=S,0}},739:function(t,e,n){"use strict";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},740:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=_(n(19)),i=_(n(20)),r=n(9),s=_(r),o=_(n(731)),h=_(n(8)),l=_(n(71)),d=n(2),f=_(n(325)),u=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(485));function _(t){return t&&t.__esModule?t:{default:t}}var c=window.TextEncoder;function p(t,e,n){var a=s.default.defer(),i=new XMLHttpRequest;return i.open("POST",t),i.timeout=3e5,i.onreadystatechange=function(){i.readyState===XMLHttpRequest.LOADING?n((0,d._t)("Waiting for response from server")):i.readyState===XMLHttpRequest.DONE&&function(){if(i.status<200||i.status>=400)return void a.reject(new Error("HTTP "+i.status));a.resolve()}()},i.send(e),a.promise}c||(c=u.TextEncoder),e.default=function(){var t=(0,r.coroutine)(a.default.mark(function t(e,n){var s,u,_,g,w,b,m,v,k,y,x,z,B,A;return a.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(e){t.next=2;break}throw new Error("No bug report endpoint has been set.");case 2:return(s=(n=n||{}).progressCallback||function(){})((0,d._t)("Collecting app version information")),u="UNKNOWN",t.prev=6,t.next=9,(0,r.resolve)(l.default.get().getAppVersion());case 9:u=t.sent,t.next=14;break;case 12:t.prev=12,t.t0=t.catch(6);case 14:if(_="UNKNOWN",window.navigator&&window.navigator.userAgent&&(_=window.navigator.userAgent),g=h.default.get(),console.log("Sending bug report."),(w=new FormData).append("text",n.userText||"User did not supply any additional text."),w.append("app","riot-web"),w.append("version",u),w.append("user_agent",_),g&&(w.append("user_id",g.credentials.userId),w.append("device_id",g.deviceId)),!n.sendLogs){t.next=48;break}return s((0,d._t)("Collecting logs")),t.next=28,(0,r.resolve)(f.default.getLogsForReport());case 28:for(b=t.sent,m=!0,v=!1,k=void 0,t.prev=32,y=(0,i.default)(b);!(m=(x=y.next()).done);m=!0)z=x.value,B=(new c).encode(z.lines),A=o.default.gzip(B),w.append("compressed-log",new Blob([A]),z.id);t.next=40;break;case 36:t.prev=36,t.t1=t.catch(32),v=!0,k=t.t1;case 40:t.prev=40,t.prev=41,!m&&y.return&&y.return();case 43:if(t.prev=43,!v){t.next=46;break}throw k;case 46:return t.finish(43);case 47:return t.finish(40);case 48:return s((0,d._t)("Uploading report")),t.next=51,(0,r.resolve)(p(e,w,s));case 51:case"end":return t.stop()}},t,this,[[6,12],[32,36,40,48],[41,,43,47]])}));return function(e,n){return t.apply(this,arguments)}}(),t.exports=e.default}}]); -//# sourceMappingURL=8.js.map \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/8.js.map b/riot/bundles/f5c70ee9a294f6e4590e/8.js.map deleted file mode 100644 index 294b8ca..0000000 --- a/riot/bundles/f5c70ee9a294f6e4590e/8.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["node_modules/pako/lib/utils/common.js","node_modules/pako/lib/zlib/messages.js","node_modules/text-encoding-utf-8/lib/encoding.lib.mjs","node_modules/pako/lib/zlib/adler32.js","node_modules/pako/lib/zlib/crc32.js","node_modules/pako/lib/utils/strings.js","node_modules/pako/lib/zlib/zstream.js","node_modules/pako/lib/zlib/constants.js","node_modules/pako/index.js","node_modules/pako/lib/deflate.js","node_modules/pako/lib/zlib/deflate.js","node_modules/pako/lib/zlib/trees.js","node_modules/pako/lib/inflate.js","node_modules/pako/lib/zlib/inflate.js","node_modules/pako/lib/zlib/inffast.js","node_modules/pako/lib/zlib/inftrees.js","node_modules/pako/lib/zlib/gzheader.js","node_modules/matrix-react-sdk/lib/rageshake/submit-rageshake.js"],"names":["TYPED_OK","Uint8Array","Uint16Array","Int32Array","_has","obj","key","Object","prototype","hasOwnProperty","call","exports","assign","sources","Array","slice","arguments","length","source","shift","TypeError","p","shrinkBuf","buf","size","subarray","fnTyped","arraySet","dest","src","src_offs","len","dest_offs","set","i","flattenChunks","chunks","l","pos","chunk","result","fnUntyped","concat","apply","setTyped","on","Buf8","Buf16","Buf32","module","2","1","0","-1","-2","-3","-4","-5","-6","inRange","a","min","max","ToDictionary","o","undefined","__webpack_require__","r","__webpack_exports__","d","TextEncoder","TextDecoder","end_of_stream","Stream","tokens","this","endOfStream","read","prepend","token","isArray","unshift","pop","push","finished","decoderError","fatal","opt_code_point","DEFAULT_ENCODING","encoding","options","String","toLowerCase","Error","_streaming","_BOMseen","_decoder","_fatal","Boolean","_ignoreBOM","defineProperty","value","_encoder","_options","decode","input","bytes","ArrayBuffer","buffer","byteOffset","byteLength","utf8_code_point","utf8_bytes_seen","utf8_bytes_needed","utf8_lower_boundary","utf8_upper_boundary","handler","stream","bite","code_point","input_stream","code_points","indexOf","s","cp","fromCharCode","codePointsToString","encode","opt_string","count","offset","temp","string","n","u","c","charCodeAt","b","stringToCodePoints","adler","s1","s2","crcTable","table","k","makeTable","crc","t","end","utils","STR_APPLY_OK","STR_APPLY_UIA_OK","__","_utf8len","q","buf2binstring","string2buf","str","c2","m_pos","str_len","buf_len","binstring2buf","buf2string","out","c_len","utf16buf","utf8border","next_in","avail_in","total_in","output","next_out","avail_out","total_out","msg","state","data_type","Z_NO_FLUSH","Z_PARTIAL_FLUSH","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_FINISH","Z_BLOCK","Z_TREES","Z_OK","Z_STREAM_END","Z_NEED_DICT","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_BUF_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","pako","zlib_deflate","strings","ZStream","toString","Deflate","level","method","chunkSize","windowBits","memLevel","strategy","to","opt","raw","gzip","err","ended","strm","status","deflateInit2","header","deflateSetHeader","dictionary","dict","deflateSetDictionary","_dict_set","deflate","deflator","data","mode","_mode","onEnd","onData","deflateEnd","join","deflateRaw","configuration_table","trees","adler32","crc32","MAX_MEM_LEVEL","MAX_WBITS","DEF_MEM_LEVEL","L_CODES","LITERALS","D_CODES","BL_CODES","HEAP_SIZE","MAX_BITS","MIN_MATCH","MAX_MATCH","MIN_LOOKAHEAD","PRESET_DICT","INIT_STATE","EXTRA_STATE","NAME_STATE","COMMENT_STATE","HCRC_STATE","BUSY_STATE","FINISH_STATE","BS_NEED_MORE","BS_BLOCK_DONE","BS_FINISH_STARTED","BS_FINISH_DONE","OS_CODE","errorCode","rank","f","zero","flush_pending","pending","pending_buf","pending_out","flush_block_only","last","_tr_flush_block","block_start","strstart","put_byte","putShortMSB","read_buf","start","wrap","longest_match","cur_match","match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","limit","w_size","_win","window","wmask","w_mask","prev","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","m","more","_w_size","window_size","hash_size","head","insert","ins_h","hash_shift","hash_mask","deflate_fast","flush","hash_head","bflush","match_length","_tr_tally","max_lazy_match","last_lit","deflate_slow","max_insert","prev_match","match_available","Config","good_length","max_lazy","nice_length","max_chain","func","deflateResetKeep","last_flush","_tr_init","deflateReset","ret","lm_init","pending_buf_size","gzhead","gzindex","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","max_block_size","max_start","deflateInit","old_flush","beg","val","text","hcrc","extra","name","comment","time","os","bstate","deflate_huff","deflate_rle","_tr_align","_tr_stored_block","avail","next","tmpDict","dictLength","deflateInfo","STORED_BLOCK","STATIC_TREES","DYN_TREES","LENGTH_CODES","Buf_size","MAX_BL_BITS","END_BLOCK","REP_3_6","REPZ_3_10","REPZ_11_138","extra_lbits","extra_dbits","extra_blbits","bl_order","static_ltree","static_dtree","_dist_code","_length_code","base_length","static_l_desc","static_d_desc","static_bl_desc","base_dist","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","dist","put_short","w","send_bits","send_code","tree","bi_reverse","code","res","gen_codes","bits","next_code","init_block","bi_windup","smaller","_n2","_m2","pqdownheap","v","j","compress_block","ltree","dtree","lc","lx","build_tree","desc","node","stree","h","xbits","base","overflow","gen_bitlen","scan_tree","curlen","prevlen","nextlen","max_count","min_count","send_tree","static_init_done","stored_len","copy_block","tr_static_init","opt_lenb","static_lenb","max_blindex","black_mask","detect_data_type","build_bl_tree","lcodes","dcodes","blcodes","send_all_trees","bi_flush","zlib_inflate","GZheader","Inflate","inflateInit2","inflateGetHeader","inflate","inflator","next_out_utf8","tail","utf8str","allowBufError","inflateSetDictionary","inflateEnd","inflateRaw","ungzip","inflate_fast","inflate_table","CODES","LENS","DISTS","Z_MEM_ERROR","HEAD","FLAGS","TIME","OS","EXLEN","EXTRA","NAME","COMMENT","HCRC","DICTID","DICT","TYPE","TYPEDO","STORED","COPY_","COPY","TABLE","LENLENS","CODELENS","LEN_","LEN","LENEXT","DIST","DISTEXT","MATCH","LIT","CHECK","LENGTH","DONE","BAD","MEM","SYNC","ENOUGH_LENS","ENOUGH_DISTS","DEF_WBITS","zswap32","inflateResetKeep","total","havedict","dmax","hold","lencode","lendyn","distcode","distdyn","sane","back","inflateReset","wsize","whave","wnext","inflateReset2","wbits","flags","check","lenbits","distbits","ncode","nlen","ndist","have","lens","work","was","lenfix","distfix","virgin","fixedtables","sym","updatewindow","copy","inflateInit","put","left","_in","_out","from","from_source","here_bits","here_op","here_val","last_bits","last_op","last_val","opts","here","hbuf","order","inf_leave","done","xflags","extra_len","inflateInfo","s_window","lcode","dcode","lmask","dmask","op","top","dolen","dodist","lbase","lext","dbase","dext","type","lens_index","codes","table_index","incr","fill","low","mask","root","curr","drop","used","huff","base_index","MAXBITS","offs","extra_index","_regenerator2","_interopRequireDefault","_getIterator3","_bluebird","_bluebird2","_pako2","_MatrixClientPeg2","_PlatformPeg2","_languageHandler","_rageshake2","TextEncodingUtf8","__esModule","newObj","default","_interopRequireWildcard","_submitReport","endpoint","body","progressCallback","deferred","defer","req","XMLHttpRequest","open","timeout","onreadystatechange","readyState","LOADING","_t","reject","resolve","on_done","send","promise","_ref","coroutine","mark","_callee","bugReportEndpoint","version","userAgent","client","logs","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","_step","entry","compressed","_context","get","getAppVersion","sent","t0","navigator","console","log","FormData","append","userText","credentials","userId","deviceId","sendLogs","getLogsForReport","lines","Blob","id","t1","return","finish","stop","_x","_x2"],"mappings":"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","file":"bundles/f5c70ee9a294f6e4590e/8.js","sourcesContent":["'use strict';\n\n\nvar TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n};\n\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n};\n\nexports.setTyped(TYPED_OK);\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n","'use strict';\n\n// This is free and unencumbered software released into the public domain.\n// See LICENSE.md for more information.\n\n//\n// Utilities\n//\n\n/**\n * @param {number} a The number to test.\n * @param {number} min The minimum value in the range, inclusive.\n * @param {number} max The maximum value in the range, inclusive.\n * @return {boolean} True if a >= min and a <= max.\n */\nfunction inRange(a, min, max) {\n return min <= a && a <= max;\n}\n\n/**\n * @param {*} o\n * @return {Object}\n */\nfunction ToDictionary(o) {\n if (o === undefined) return {};\n if (o === Object(o)) return o;\n throw TypeError('Could not convert argument to dictionary');\n}\n\n/**\n * @param {string} string Input string of UTF-16 code units.\n * @return {!Array.<number>} Code points.\n */\nfunction stringToCodePoints(string) {\n // https://heycam.github.io/webidl/#dfn-obtain-unicode\n\n // 1. Let S be the DOMString value.\n var s = String(string);\n\n // 2. Let n be the length of S.\n var n = s.length;\n\n // 3. Initialize i to 0.\n var i = 0;\n\n // 4. Initialize U to be an empty sequence of Unicode characters.\n var u = [];\n\n // 5. While i < n:\n while (i < n) {\n\n // 1. Let c be the code unit in S at index i.\n var c = s.charCodeAt(i);\n\n // 2. Depending on the value of c:\n\n // c < 0xD800 or c > 0xDFFF\n if (c < 0xD800 || c > 0xDFFF) {\n // Append to U the Unicode character with code point c.\n u.push(c);\n }\n\n // 0xDC00 ≤ c ≤ 0xDFFF\n else if (0xDC00 <= c && c <= 0xDFFF) {\n // Append to U a U+FFFD REPLACEMENT CHARACTER.\n u.push(0xFFFD);\n }\n\n // 0xD800 ≤ c ≤ 0xDBFF\n else if (0xD800 <= c && c <= 0xDBFF) {\n // 1. If i = n−1, then append to U a U+FFFD REPLACEMENT\n // CHARACTER.\n if (i === n - 1) {\n u.push(0xFFFD);\n }\n // 2. Otherwise, i < n−1:\n else {\n // 1. Let d be the code unit in S at index i+1.\n var d = string.charCodeAt(i + 1);\n\n // 2. If 0xDC00 ≤ d ≤ 0xDFFF, then:\n if (0xDC00 <= d && d <= 0xDFFF) {\n // 1. Let a be c & 0x3FF.\n var a = c & 0x3FF;\n\n // 2. Let b be d & 0x3FF.\n var b = d & 0x3FF;\n\n // 3. Append to U the Unicode character with code point\n // 2^16+2^10*a+b.\n u.push(0x10000 + (a << 10) + b);\n\n // 4. Set i to i+1.\n i += 1;\n }\n\n // 3. Otherwise, d < 0xDC00 or d > 0xDFFF. Append to U a\n // U+FFFD REPLACEMENT CHARACTER.\n else {\n u.push(0xFFFD);\n }\n }\n }\n\n // 3. Set i to i+1.\n i += 1;\n }\n\n // 6. Return U.\n return u;\n}\n\n/**\n * @param {!Array.<number>} code_points Array of code points.\n * @return {string} string String of UTF-16 code units.\n */\nfunction codePointsToString(code_points) {\n var s = '';\n for (var i = 0; i < code_points.length; ++i) {\n var cp = code_points[i];\n if (cp <= 0xFFFF) {\n s += String.fromCharCode(cp);\n } else {\n cp -= 0x10000;\n s += String.fromCharCode((cp >> 10) + 0xD800,\n (cp & 0x3FF) + 0xDC00);\n }\n }\n return s;\n}\n\n\n//\n// Implementation of Encoding specification\n// https://encoding.spec.whatwg.org/\n//\n\n//\n// 3. Terminology\n//\n\n/**\n * End-of-stream is a special token that signifies no more tokens\n * are in the stream.\n * @const\n */ var end_of_stream = -1;\n\n/**\n * A stream represents an ordered sequence of tokens.\n *\n * @constructor\n * @param {!(Array.<number>|Uint8Array)} tokens Array of tokens that provide the\n * stream.\n */\nfunction Stream(tokens) {\n /** @type {!Array.<number>} */\n this.tokens = [].slice.call(tokens);\n}\n\nStream.prototype = {\n /**\n * @return {boolean} True if end-of-stream has been hit.\n */\n endOfStream: function() {\n return !this.tokens.length;\n },\n\n /**\n * When a token is read from a stream, the first token in the\n * stream must be returned and subsequently removed, and\n * end-of-stream must be returned otherwise.\n *\n * @return {number} Get the next token from the stream, or\n * end_of_stream.\n */\n read: function() {\n if (!this.tokens.length)\n return end_of_stream;\n return this.tokens.shift();\n },\n\n /**\n * When one or more tokens are prepended to a stream, those tokens\n * must be inserted, in given order, before the first token in the\n * stream.\n *\n * @param {(number|!Array.<number>)} token The token(s) to prepend to the stream.\n */\n prepend: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.<number>}*/(token);\n while (tokens.length)\n this.tokens.unshift(tokens.pop());\n } else {\n this.tokens.unshift(token);\n }\n },\n\n /**\n * When one or more tokens are pushed to a stream, those tokens\n * must be inserted, in given order, after the last token in the\n * stream.\n *\n * @param {(number|!Array.<number>)} token The tokens(s) to prepend to the stream.\n */\n push: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.<number>}*/(token);\n while (tokens.length)\n this.tokens.push(tokens.shift());\n } else {\n this.tokens.push(token);\n }\n }\n};\n\n//\n// 4. Encodings\n//\n\n// 4.1 Encoders and decoders\n\n/** @const */\nvar finished = -1;\n\n/**\n * @param {boolean} fatal If true, decoding errors raise an exception.\n * @param {number=} opt_code_point Override the standard fallback code point.\n * @return {number} The code point to insert on a decoding error.\n */\nfunction decoderError(fatal, opt_code_point) {\n if (fatal)\n throw TypeError('Decoder error');\n return opt_code_point || 0xFFFD;\n}\n\n/** @interface */\nfunction Decoder() {}\nDecoder.prototype = {\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.<number>)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point, or |finished|.\n */\n handler: function(stream, bite) {}\n};\n\n/** @interface */\nfunction Encoder() {}\nEncoder.prototype = {\n /**\n * @param {Stream} stream The stream of code points being encoded.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.<number>)} Byte(s) to emit, or |finished|.\n */\n handler: function(stream, code_point) {}\n};\n\n//\n// 7. API\n//\n\n/** @const */ var DEFAULT_ENCODING = 'utf-8';\n\n// 7.1 Interface TextDecoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextDecoder(encoding, options) {\n if (!(this instanceof TextDecoder)) {\n return new TextDecoder(encoding, options);\n }\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {boolean} */\n this._BOMseen = false;\n /** @private @type {?Decoder} */\n this._decoder = null;\n /** @private @type {boolean} */\n this._fatal = Boolean(options['fatal']);\n /** @private @type {boolean} */\n this._ignoreBOM = Boolean(options['ignoreBOM']);\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n Object.defineProperty(this, 'fatal', {value: this._fatal});\n Object.defineProperty(this, 'ignoreBOM', {value: this._ignoreBOM});\n}\n\nTextDecoder.prototype = {\n /**\n * @param {ArrayBufferView=} input The buffer of bytes to decode.\n * @param {Object=} options\n * @return {string} The decoded string.\n */\n decode: function decode(input, options) {\n var bytes;\n if (typeof input === 'object' && input instanceof ArrayBuffer) {\n bytes = new Uint8Array(input);\n } else if (typeof input === 'object' && 'buffer' in input &&\n input.buffer instanceof ArrayBuffer) {\n bytes = new Uint8Array(input.buffer,\n input.byteOffset,\n input.byteLength);\n } else {\n bytes = new Uint8Array(0);\n }\n\n options = ToDictionary(options);\n\n if (!this._streaming) {\n this._decoder = new UTF8Decoder({fatal: this._fatal});\n this._BOMseen = false;\n }\n this._streaming = Boolean(options['stream']);\n\n var input_stream = new Stream(bytes);\n\n var code_points = [];\n\n /** @type {?(number|!Array.<number>)} */\n var result;\n\n while (!input_stream.endOfStream()) {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.<number>}*/(result));\n else\n code_points.push(result);\n }\n if (!this._streaming) {\n do {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.<number>}*/(result));\n else\n code_points.push(result);\n } while (!input_stream.endOfStream());\n this._decoder = null;\n }\n\n if (code_points.length) {\n // If encoding is one of utf-8, utf-16be, and utf-16le, and\n // ignore BOM flag and BOM seen flag are unset, run these\n // subsubsteps:\n if (['utf-8'].indexOf(this.encoding) !== -1 &&\n !this._ignoreBOM && !this._BOMseen) {\n // If token is U+FEFF, set BOM seen flag.\n if (code_points[0] === 0xFEFF) {\n this._BOMseen = true;\n code_points.shift();\n } else {\n // Otherwise, if token is not end-of-stream, set BOM seen\n // flag and append token to output.\n this._BOMseen = true;\n }\n }\n }\n\n return codePointsToString(code_points);\n }\n};\n\n// 7.2 Interface TextEncoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextEncoder(encoding, options) {\n if (!(this instanceof TextEncoder))\n return new TextEncoder(encoding, options);\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {?Encoder} */\n this._encoder = null;\n /** @private @type {{fatal: boolean}} */\n this._options = {fatal: Boolean(options['fatal'])};\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n}\n\nTextEncoder.prototype = {\n /**\n * @param {string=} opt_string The string to encode.\n * @param {Object=} options\n * @return {Uint8Array} Encoded bytes, as a Uint8Array.\n */\n encode: function encode(opt_string, options) {\n opt_string = opt_string ? String(opt_string) : '';\n options = ToDictionary(options);\n\n // NOTE: This option is nonstandard. None of the encodings\n // permitted for encoding (i.e. UTF-8, UTF-16) are stateful,\n // so streaming is not necessary.\n if (!this._streaming)\n this._encoder = new UTF8Encoder(this._options);\n this._streaming = Boolean(options['stream']);\n\n var bytes = [];\n var input_stream = new Stream(stringToCodePoints(opt_string));\n /** @type {?(number|!Array.<number>)} */\n var result;\n while (!input_stream.endOfStream()) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.<number>}*/(result));\n else\n bytes.push(result);\n }\n if (!this._streaming) {\n while (true) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.<number>}*/(result));\n else\n bytes.push(result);\n }\n this._encoder = null;\n }\n return new Uint8Array(bytes);\n }\n};\n\n//\n// 8. The encoding\n//\n\n// 8.1 utf-8\n\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Decoder(options) {\n var fatal = options.fatal;\n\n // utf-8's decoder's has an associated utf-8 code point, utf-8\n // bytes seen, and utf-8 bytes needed (all initially 0), a utf-8\n // lower boundary (initially 0x80), and a utf-8 upper boundary\n // (initially 0xBF).\n var /** @type {number} */ utf8_code_point = 0,\n /** @type {number} */ utf8_bytes_seen = 0,\n /** @type {number} */ utf8_bytes_needed = 0,\n /** @type {number} */ utf8_lower_boundary = 0x80,\n /** @type {number} */ utf8_upper_boundary = 0xBF;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.<number>)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function(stream, bite) {\n // 1. If byte is end-of-stream and utf-8 bytes needed is not 0,\n // set utf-8 bytes needed to 0 and return error.\n if (bite === end_of_stream && utf8_bytes_needed !== 0) {\n utf8_bytes_needed = 0;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream, return finished.\n if (bite === end_of_stream)\n return finished;\n\n // 3. If utf-8 bytes needed is 0, based on byte:\n if (utf8_bytes_needed === 0) {\n\n // 0x00 to 0x7F\n if (inRange(bite, 0x00, 0x7F)) {\n // Return a code point whose value is byte.\n return bite;\n }\n\n // 0xC2 to 0xDF\n if (inRange(bite, 0xC2, 0xDF)) {\n // Set utf-8 bytes needed to 1 and utf-8 code point to byte\n // − 0xC0.\n utf8_bytes_needed = 1;\n utf8_code_point = bite - 0xC0;\n }\n\n // 0xE0 to 0xEF\n else if (inRange(bite, 0xE0, 0xEF)) {\n // 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.\n if (bite === 0xE0)\n utf8_lower_boundary = 0xA0;\n // 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.\n if (bite === 0xED)\n utf8_upper_boundary = 0x9F;\n // 3. Set utf-8 bytes needed to 2 and utf-8 code point to\n // byte − 0xE0.\n utf8_bytes_needed = 2;\n utf8_code_point = bite - 0xE0;\n }\n\n // 0xF0 to 0xF4\n else if (inRange(bite, 0xF0, 0xF4)) {\n // 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.\n if (bite === 0xF0)\n utf8_lower_boundary = 0x90;\n // 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.\n if (bite === 0xF4)\n utf8_upper_boundary = 0x8F;\n // 3. Set utf-8 bytes needed to 3 and utf-8 code point to\n // byte − 0xF0.\n utf8_bytes_needed = 3;\n utf8_code_point = bite - 0xF0;\n }\n\n // Otherwise\n else {\n // Return error.\n return decoderError(fatal);\n }\n\n // Then (byte is in the range 0xC2 to 0xF4) set utf-8 code\n // point to utf-8 code point << (6 × utf-8 bytes needed) and\n // return continue.\n utf8_code_point = utf8_code_point << (6 * utf8_bytes_needed);\n return null;\n }\n\n // 4. If byte is not in the range utf-8 lower boundary to utf-8\n // upper boundary, run these substeps:\n if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {\n\n // 1. Set utf-8 code point, utf-8 bytes needed, and utf-8\n // bytes seen to 0, set utf-8 lower boundary to 0x80, and set\n // utf-8 upper boundary to 0xBF.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 2. Prepend byte to stream.\n stream.prepend(bite);\n\n // 3. Return error.\n return decoderError(fatal);\n }\n\n // 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary\n // to 0xBF.\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 6. Increase utf-8 bytes seen by one and set utf-8 code point\n // to utf-8 code point + (byte − 0x80) << (6 × (utf-8 bytes\n // needed − utf-8 bytes seen)).\n utf8_bytes_seen += 1;\n utf8_code_point += (bite - 0x80) << (6 * (utf8_bytes_needed - utf8_bytes_seen));\n\n // 7. If utf-8 bytes seen is not equal to utf-8 bytes needed,\n // continue.\n if (utf8_bytes_seen !== utf8_bytes_needed)\n return null;\n\n // 8. Let code point be utf-8 code point.\n var code_point = utf8_code_point;\n\n // 9. Set utf-8 code point, utf-8 bytes needed, and utf-8 bytes\n // seen to 0.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n\n // 10. Return a code point whose value is code point.\n return code_point;\n };\n}\n\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Encoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.<number>)} Byte(s) to emit.\n */\n this.handler = function(stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream)\n return finished;\n\n // 2. If code point is in the range U+0000 to U+007F, return a\n // byte whose value is code point.\n if (inRange(code_point, 0x0000, 0x007f))\n return code_point;\n\n // 3. Set count and offset based on the range code point is in:\n var count, offset;\n // U+0080 to U+07FF: 1 and 0xC0\n if (inRange(code_point, 0x0080, 0x07FF)) {\n count = 1;\n offset = 0xC0;\n }\n // U+0800 to U+FFFF: 2 and 0xE0\n else if (inRange(code_point, 0x0800, 0xFFFF)) {\n count = 2;\n offset = 0xE0;\n }\n // U+10000 to U+10FFFF: 3 and 0xF0\n else if (inRange(code_point, 0x10000, 0x10FFFF)) {\n count = 3;\n offset = 0xF0;\n }\n\n // 4.Let bytes be a byte sequence whose first byte is (code\n // point >> (6 × count)) + offset.\n var bytes = [(code_point >> (6 * count)) + offset];\n\n // 5. Run these substeps while count is greater than 0:\n while (count > 0) {\n\n // 1. Set temp to code point >> (6 × (count − 1)).\n var temp = code_point >> (6 * (count - 1));\n\n // 2. Append to bytes 0x80 | (temp & 0x3F).\n bytes.push(0x80 | (temp & 0x3F));\n\n // 3. Decrease count by one.\n count -= 1;\n }\n\n // 6. Return bytes bytes, in order.\n return bytes;\n };\n}\n\nexport {TextEncoder, TextDecoder};\n","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n","// String encode/decode helpers\n'use strict';\n\n\nvar utils = require('./common');\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nvar STR_APPLY_OK = true;\nvar STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new utils.Buf8(256);\nfor (var q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new utils.Buf8(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n // use fallback for big arrays to avoid stack overflow\n if (len < 65537) {\n if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function (buf) {\n return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function (str) {\n var buf = new utils.Buf8(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nexports.utf8border = function (buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n","// Top level file is just a mixin of submodules & constants\n'use strict';\n\nvar assign = require('./lib/utils/common').assign;\n\nvar deflate = require('./lib/deflate');\nvar inflate = require('./lib/inflate');\nvar constants = require('./lib/zlib/constants');\n\nvar pako = {};\n\nassign(pako, deflate, inflate, constants);\n\nmodule.exports = pako;\n","'use strict';\n\n\nvar zlib_deflate = require('./zlib/deflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\n\nvar toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nvar Z_NO_FLUSH = 0;\nvar Z_FINISH = 4;\n\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_SYNC_FLUSH = 2;\n\nvar Z_DEFAULT_COMPRESSION = -1;\n\nvar Z_DEFAULT_STRATEGY = 0;\n\nvar Z_DEFLATED = 8;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n if (!(this instanceof Deflate)) return new Deflate(options);\n\n this.options = utils.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_deflate.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = zlib_deflate.deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar trees = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar msg = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES = 30;\n/* number of distance codes */\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = new utils.Buf8(s.w_size);\n utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,\n // \"inconsistent bit counts\");\n //Tracev((stderr,\"\\ngen_codes: max_code %d \", max_code));\n\n for (n = 0; n <= max_code; n++) {\n var len = tree[n * 2 + 1]/*.Len*/;\n if (len === 0) { continue; }\n /* Now reverse the bits */\n tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);\n\n //Tracecv(tree != static_ltree, (stderr,\"\\nn %3d %c l %2d c %4x (%x) \",\n // n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));\n }\n}\n\n\n/* ===========================================================================\n * Initialize the various 'constant' tables.\n */\nfunction tr_static_init() {\n var n; /* iterates over tree elements */\n var bits; /* bit counter */\n var length; /* length value */\n var code; /* code value */\n var dist; /* distance index */\n var bl_count = new Array(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n // do check in _tr_init()\n //if (static_init_done) return;\n\n /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n static_l_desc.static_tree = static_ltree;\n static_l_desc.extra_bits = extra_lbits;\n static_d_desc.static_tree = static_dtree;\n static_d_desc.extra_bits = extra_dbits;\n static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n /* Initialize the mapping length (0..255) -> length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\nexports._tr_init = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n","'use strict';\n\n\nvar zlib_inflate = require('./zlib/inflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar c = require('./zlib/constants');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\nvar GZheader = require('./zlib/gzheader');\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n if (!(this instanceof Inflate)) return new Inflate(options);\n\n this.options = utils.assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_inflate.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n zlib_inflate.inflateGetHeader(this.strm, this.header);\n}\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n var dict;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = strings.binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); /* no bad return value */\n\n if (status === c.Z_NEED_DICT && dictionary) {\n // Convert data if needed\n if (typeof dictionary === 'string') {\n dict = strings.string2buf(dictionary);\n } else if (toString.call(dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(dictionary);\n } else {\n dict = dictionary;\n }\n\n status = zlib_inflate.inflateSetDictionary(this.strm, dict);\n\n }\n\n if (status === c.Z_BUF_ERROR && allowBufError === true) {\n status = c.Z_OK;\n allowBufError = false;\n }\n\n if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n if (status === c.Z_STREAM_END) {\n _mode = c.Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === c.Z_FINISH) {\n status = zlib_inflate.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === c.Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === c.Z_SYNC_FLUSH) {\n this.onEnd(c.Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === c.Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 aligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nexports.Inflate = Inflate;\nexports.inflate = inflate;\nexports.inflateRaw = inflateRaw;\nexports.ungzip = inflate;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar inflate_fast = require('./inffast');\nvar inflate_table = require('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\nfunction inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nmodule.exports = GZheader;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _pako = require('pako');\n\nvar _pako2 = _interopRequireDefault(_pako);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _PlatformPeg = require('../PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _rageshake = require('./rageshake');\n\nvar _rageshake2 = _interopRequireDefault(_rageshake);\n\nvar _textEncodingUtf = require('text-encoding-utf-8');\n\nvar TextEncodingUtf8 = _interopRequireWildcard(_textEncodingUtf);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TextEncoder = window.TextEncoder;\n\n// polyfill textencoder if necessary\n/*\nCopyright 2017 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nif (!TextEncoder) {\n TextEncoder = TextEncodingUtf8.TextEncoder;\n}\n\n/**\n * Send a bug report.\n *\n * @param {string} bugReportEndpoint HTTP url to send the report to\n *\n * @param {object} opts optional dictionary of options\n *\n * @param {string} opts.userText Any additional user input.\n *\n * @param {boolean} opts.sendLogs True to send logs\n *\n * @param {function(string)} opts.progressCallback Callback to call with progress updates\n *\n * @return {Promise} Resolved when the bug report is sent.\n */\n\nexports.default = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(bugReportEndpoint, opts) {\n var progressCallback, version, userAgent, client, body, logs, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, entry, buf, compressed;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (bugReportEndpoint) {\n _context.next = 2;\n break;\n }\n\n throw new Error(\"No bug report endpoint has been set.\");\n\n case 2:\n\n opts = opts || {};\n\n progressCallback = opts.progressCallback || function () {};\n\n progressCallback((0, _languageHandler._t)(\"Collecting app version information\"));\n version = \"UNKNOWN\";\n _context.prev = 6;\n _context.next = 9;\n return (0, _bluebird.resolve)(_PlatformPeg2.default.get().getAppVersion());\n\n case 9:\n version = _context.sent;\n _context.next = 14;\n break;\n\n case 12:\n _context.prev = 12;\n _context.t0 = _context['catch'](6);\n\n case 14:\n // PlatformPeg already logs this.\n\n userAgent = \"UNKNOWN\";\n\n if (window.navigator && window.navigator.userAgent) {\n userAgent = window.navigator.userAgent;\n }\n\n client = _MatrixClientPeg2.default.get();\n\n\n console.log(\"Sending bug report.\");\n\n body = new FormData();\n\n body.append('text', opts.userText || \"User did not supply any additional text.\");\n body.append('app', 'riot-web');\n body.append('version', version);\n body.append('user_agent', userAgent);\n\n if (client) {\n body.append('user_id', client.credentials.userId);\n body.append('device_id', client.deviceId);\n }\n\n if (!opts.sendLogs) {\n _context.next = 48;\n break;\n }\n\n progressCallback((0, _languageHandler._t)(\"Collecting logs\"));\n _context.next = 28;\n return (0, _bluebird.resolve)(_rageshake2.default.getLogsForReport());\n\n case 28:\n logs = _context.sent;\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 32;\n\n for (_iterator = (0, _getIterator3.default)(logs); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n entry = _step.value;\n\n // encode as UTF-8\n buf = new TextEncoder().encode(entry.lines);\n\n // compress\n\n compressed = _pako2.default.gzip(buf);\n\n\n body.append('compressed-log', new Blob([compressed]), entry.id);\n }\n _context.next = 40;\n break;\n\n case 36:\n _context.prev = 36;\n _context.t1 = _context['catch'](32);\n _didIteratorError = true;\n _iteratorError = _context.t1;\n\n case 40:\n _context.prev = 40;\n _context.prev = 41;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 43:\n _context.prev = 43;\n\n if (!_didIteratorError) {\n _context.next = 46;\n break;\n }\n\n throw _iteratorError;\n\n case 46:\n return _context.finish(43);\n\n case 47:\n return _context.finish(40);\n\n case 48:\n\n progressCallback((0, _languageHandler._t)(\"Uploading report\"));\n _context.next = 51;\n return (0, _bluebird.resolve)(_submitReport(bugReportEndpoint, body, progressCallback));\n\n case 51:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[6, 12], [32, 36, 40, 48], [41,, 43, 47]]);\n }));\n\n function sendBugReport(_x, _x2) {\n return _ref.apply(this, arguments);\n }\n\n return sendBugReport;\n}();\n\nfunction _submitReport(endpoint, body, progressCallback) {\n var deferred = _bluebird2.default.defer();\n\n var req = new XMLHttpRequest();\n req.open(\"POST\", endpoint);\n req.timeout = 5 * 60 * 1000;\n req.onreadystatechange = function () {\n if (req.readyState === XMLHttpRequest.LOADING) {\n progressCallback((0, _languageHandler._t)(\"Waiting for response from server\"));\n } else if (req.readyState === XMLHttpRequest.DONE) {\n on_done();\n }\n };\n req.send(body);\n return deferred.promise;\n\n function on_done() {\n if (req.status < 200 || req.status >= 400) {\n deferred.reject(new Error('HTTP ' + req.status));\n return;\n }\n deferred.resolve();\n }\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=submit-rageshake.js.map"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/bundle.js b/riot/bundles/f5c70ee9a294f6e4590e/bundle.js deleted file mode 100644 index 79ea887..0000000 --- a/riot/bundles/f5c70ee9a294f6e4590e/bundle.js +++ /dev/null @@ -1,115 +0,0 @@ -!function(e){function t(t){for(var n,o,i=t[0],a=t[1],s=0,u=[];s<i.length;s++)o=i[s],r[o]&&u.push(r[o][0]),r[o]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(l&&l(t);u.length;)u.shift()()}var n={},r={0:0};function o(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,o),r.l=!0,r.exports}o.e=function(e){var t=[],n=r[e];if(0!==n)if(n)t.push(n[2]);else{var i=new Promise(function(t,o){n=r[e]=[t,o]});t.push(n[2]=i);var a,s=document.getElementsByTagName("head")[0],l=document.createElement("script");l.charset="utf-8",l.timeout=120,o.nc&&l.setAttribute("nonce",o.nc),l.src=function(e){return o.p+"bundles/f5c70ee9a294f6e4590e/"+({9:"vendors~e2e-export"}[e]||e)+".js"}(e),a=function(t){l.onerror=l.onload=null,clearTimeout(u);var n=r[e];if(0!==n){if(n){var o=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src,a=new Error("Loading chunk "+e+" failed.\n("+o+": "+i+")");a.type=o,a.request=i,n[1](a)}r[e]=void 0}};var u=setTimeout(function(){a({type:"timeout",target:l})},12e4);l.onerror=l.onload=a,s.appendChild(l)}return Promise.all(t)},o.m=e,o.c=n,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)o.d(n,r,function(t){return e[t]}.bind(null,r));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o.oe=function(e){throw console.error(e),e};var i=window.webpackJsonp=window.webpackJsonp||[],a=i.push.bind(i);i.push=t,i=i.slice();for(var s=0;s<i.length;s++)t(i[s]);var l=a;o(o.s=742)}([function(e,t,n){"use strict";e.exports=n(165)},function(e,t,n){e.exports=n(1148)()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=p(n(20)),o=p(n(40)),i=p(n(14)),a=p(n(64));t._td=function(e){return e},t._t=function(e,t,n){var r=(0,o.default)({interpolate:!1},t),s=_(function(e,t){var n=void 0;t&&"object"===(void 0===t?"undefined":(0,a.default)(t))&&(n=t.count,(0,i.default)(t).forEach(function(e){void 0===t[e]&&(console.warn("safeCounterpartTranslate called with undefined interpolation name: "+e),t[e]="undefined"),null===t[e]&&(console.warn("safeCounterpartTranslate called with null interpolation name: "+e),t[e]="null")}));var r=l.default.translate(e,t);void 0===r&&void 0!==n&&(r=l.default.translate(e,(0,o.default)({},t,{locale:"en"})));return r}(e,r),t,n);return h?"string"==typeof s?"@@"+e+"##"+s+"@@":c.default.createElement("span",{className:"translated-string","data-orig-string":e},s):s},t.substitute=_,t.replaceByRegexes=g,t.setMissingEntryGenerator=function(e){l.default.setMissingEntryGenerator(e)},t.setLanguage=function(e){Array.isArray(e)||(e=[e]);var t=void 0,n=void 0;return v().then(function(r){n=r;for(var o=0;o<e.length;++o)if(n.hasOwnProperty(e[o])){t=e[o];break}return t||(t="en",console.error("Unable to find an appropriate language")),y(m+n[t].fileName)}).then(function(e){if(l.default.registerTranslations(t,e),l.default.setLocale(t),d.default.setValue("language",null,f.SettingLevel.DEVICE,t),console.log("set language to "+t),"en"!=t)return y(m+n.en.fileName)}).then(function(e){e&&l.default.registerTranslations("en",e)})},t.getAllLanguagesFromJson=function(){return v().then(function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push({value:n,label:e[n].label});return t})},t.getLanguagesFromBrowser=function(){return navigator.languages&&navigator.languages.length?navigator.languages:navigator.language?[navigator.language]:[navigator.userLanguage||"en"]},t.getNormalizedLanguageKeys=function(e){var t=[],n=this.normalizeLanguageKey(e),r=n.split("-");2==r.length&&r[0]==r[1]?t.push(r[0]):(t.push(n),2==r.length&&t.push(r[0]));return t},t.normalizeLanguageKey=function(e){return e.toLowerCase().replace("_","-")},t.getCurrentLanguage=function(){return l.default.getLocale()};var s=p(n(99)),l=p(n(1136)),u=p(n(9)),c=p(n(0)),f=n(22),d=p(f);function p(e){return e&&e.__esModule?e:{default:e}}var m="i18n/",h=!1;function _(e,t,n){var r={};if(void 0!==t)for(var o in t)r["%\\("+o+"\\)s"]=t[o];if(void 0!==n)for(var i in n)r["(<"+i+">(.*?)<\\/"+i+">|<"+i+">|<"+i+"\\s*\\/>)"]=n[i];return g(e,r)}function g(e,t){var n=[e],r=!1;for(var o in t){var i=new RegExp(o),s=!1;for(var l in n){var u=n[l];if("string"==typeof u){var f=u.match(i);if(f){s=!0;var d=f.slice(2),p=u.substr(0,f.index),m=u.substr(f.index+f[0].length),h=void 0;"object"===(void 0===(h=t[o]instanceof Function?t[o].apply(null,d):t[o])?"undefined":(0,a.default)(h))&&(r=!0),n.splice(l,1),""!==m&&n.splice(l,0,m),"string"==typeof h&&""===h||n.splice(l,0,h),""!==p&&n.splice(l,0,p)}}}s||"%\\(count\\)s"!==o&&console.log("Could not find "+i+" in "+e)}return r?c.default.createElement.apply(c.default,["span",null].concat(n)):n.join("")}function v(){return new u.default(function(e,t){(0,s.default)({method:"GET",url:m+"languages.json"},function(n,r,o){n||r.status<200||r.status>=300?t({err:n,response:r}):e(JSON.parse(o))})})}function y(e){return new u.default(function(t,n){(0,s.default)({method:"GET",url:e},function(e,o,a){e||o.status<200||o.status>=300?n({err:e,response:o}):t(function(e){var t={},n=!0,o=!1,a=void 0;try{for(var s,l=(0,r.default)((0,i.default)(e));!(n=(s=l.next()).done);n=!0){var u=s.value,c=u.split("|",2);if(2===c.length){var f=t[c[0]];void 0===f&&(f={},t[c[0]]=f),f[c[1]]=e[u]}else t[u]=e[u]}}catch(e){o=!0,a=e}finally{try{!n&&l.return&&l.return()}finally{if(o)throw a}}return t}(JSON.parse(a)))})})}l.default.setSeparator("|"),l.default.setFallbackLocale("en")},function(e,t,n){"use strict";var r=i(n(1058)),o=i(n(389));function i(e){return e&&e.__esModule?e:{default:e}}e.exports.loadSkin=function(e){r.default.load(e)},e.exports.resetSkin=function(){r.default.reset()},e.exports.getComponent=function(e){return r.default.getComponent(e)},e.exports.setFetch=function(e){o.default.setFetch(e)}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(223));t.default=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),(0,r.default)(e,o.key,o)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}()},function(e,t,n){e.exports=function(){"use strict";var e=Array.prototype.slice;function t(e,t){t&&(e.prototype=Object.create(t.prototype)),e.prototype.constructor=e}function n(e){return a(e)?e:z(e)}function r(e){return s(e)?e:W(e)}function o(e){return l(e)?e:K(e)}function i(e){return a(e)&&!u(e)?e:$(e)}function a(e){return!(!e||!e[f])}function s(e){return!(!e||!e[d])}function l(e){return!(!e||!e[p])}function u(e){return s(e)||l(e)}function c(e){return!(!e||!e[m])}t(r,n),t(o,n),t(i,n),n.isIterable=a,n.isKeyed=s,n.isIndexed=l,n.isAssociative=u,n.isOrdered=c,n.Keyed=r,n.Indexed=o,n.Set=i;var f="@@__IMMUTABLE_ITERABLE__@@",d="@@__IMMUTABLE_KEYED__@@",p="@@__IMMUTABLE_INDEXED__@@",m="@@__IMMUTABLE_ORDERED__@@",h=5,_=1<<h,g=_-1,v={},y={value:!1},b={value:!1};function E(e){return e.value=!1,e}function C(e){e&&(e.value=!0)}function S(){}function D(e,t){t=t||0;for(var n=Math.max(0,e.length-t),r=new Array(n),o=0;o<n;o++)r[o]=e[o+t];return r}function w(e){return void 0===e.size&&(e.size=e.__iterate(x)),e.size}function T(e,t){if("number"!=typeof t){var n=t>>>0;if(""+n!==t||4294967295===n)return NaN;t=n}return t<0?w(e)+t:t}function x(){return!0}function R(e,t,n){return(0===e||void 0!==n&&e<=-n)&&(void 0===t||void 0!==n&&t>=n)}function k(e,t){return I(e,t,0)}function N(e,t){return I(e,t,t)}function I(e,t,n){return void 0===e?n:e<0?Math.max(0,t+e):void 0===t?e:Math.min(t,e)}var O=0,A=1,M=2,P="function"==typeof Symbol&&Symbol.iterator,L="@@iterator",F=P||L;function U(e){this.next=e}function j(e,t,n,r){var o=0===e?t:1===e?n:[t,n];return r?r.value=o:r={value:o,done:!1},r}function B(){return{value:void 0,done:!0}}function G(e){return!!H(e)}function q(e){return e&&"function"==typeof e.next}function V(e){var t=H(e);return t&&t.call(e)}function H(e){var t=e&&(P&&e[P]||e[L]);if("function"==typeof t)return t}function Y(e){return e&&"number"==typeof e.length}function z(e){return null===e||void 0===e?ie():a(e)?e.toSeq():function(e){var t=le(e)||"object"==typeof e&&new te(e);if(!t)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+e);return t}(e)}function W(e){return null===e||void 0===e?ie().toKeyedSeq():a(e)?s(e)?e.toSeq():e.fromEntrySeq():ae(e)}function K(e){return null===e||void 0===e?ie():a(e)?s(e)?e.entrySeq():e.toIndexedSeq():se(e)}function $(e){return(null===e||void 0===e?ie():a(e)?s(e)?e.entrySeq():e:se(e)).toSetSeq()}U.prototype.toString=function(){return"[Iterator]"},U.KEYS=O,U.VALUES=A,U.ENTRIES=M,U.prototype.inspect=U.prototype.toSource=function(){return this.toString()},U.prototype[F]=function(){return this},t(z,n),z.of=function(){return z(arguments)},z.prototype.toSeq=function(){return this},z.prototype.toString=function(){return this.__toString("Seq {","}")},z.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},z.prototype.__iterate=function(e,t){return ue(this,e,t,!0)},z.prototype.__iterator=function(e,t){return ce(this,e,t,!0)},t(W,z),W.prototype.toKeyedSeq=function(){return this},t(K,z),K.of=function(){return K(arguments)},K.prototype.toIndexedSeq=function(){return this},K.prototype.toString=function(){return this.__toString("Seq [","]")},K.prototype.__iterate=function(e,t){return ue(this,e,t,!1)},K.prototype.__iterator=function(e,t){return ce(this,e,t,!1)},t($,z),$.of=function(){return $(arguments)},$.prototype.toSetSeq=function(){return this},z.isSeq=oe,z.Keyed=W,z.Set=$,z.Indexed=K;var Q,X,J,Z="@@__IMMUTABLE_SEQ__@@";function ee(e){this._array=e,this.size=e.length}function te(e){var t=Object.keys(e);this._object=e,this._keys=t,this.size=t.length}function ne(e){this._iterable=e,this.size=e.length||e.size}function re(e){this._iterator=e,this._iteratorCache=[]}function oe(e){return!(!e||!e[Z])}function ie(){return Q||(Q=new ee([]))}function ae(e){var t=Array.isArray(e)?new ee(e).fromEntrySeq():q(e)?new re(e).fromEntrySeq():G(e)?new ne(e).fromEntrySeq():"object"==typeof e?new te(e):void 0;if(!t)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+e);return t}function se(e){var t=le(e);if(!t)throw new TypeError("Expected Array or iterable object of values: "+e);return t}function le(e){return Y(e)?new ee(e):q(e)?new re(e):G(e)?new ne(e):void 0}function ue(e,t,n,r){var o=e._cache;if(o){for(var i=o.length-1,a=0;a<=i;a++){var s=o[n?i-a:a];if(!1===t(s[1],r?s[0]:a,e))return a+1}return a}return e.__iterateUncached(t,n)}function ce(e,t,n,r){var o=e._cache;if(o){var i=o.length-1,a=0;return new U(function(){var e=o[n?i-a:a];return a++>i?{value:void 0,done:!0}:j(t,r?e[0]:a-1,e[1])})}return e.__iteratorUncached(t,n)}function fe(e,t){return t?function e(t,n,r,o){return Array.isArray(n)?t.call(o,r,K(n).map(function(r,o){return e(t,r,o,n)})):pe(n)?t.call(o,r,W(n).map(function(r,o){return e(t,r,o,n)})):n}(t,e,"",{"":e}):de(e)}function de(e){return Array.isArray(e)?K(e).map(de).toList():pe(e)?W(e).map(de).toMap():e}function pe(e){return e&&(e.constructor===Object||void 0===e.constructor)}function me(e,t){if(e===t||e!=e&&t!=t)return!0;if(!e||!t)return!1;if("function"==typeof e.valueOf&&"function"==typeof t.valueOf){if(e=e.valueOf(),t=t.valueOf(),e===t||e!=e&&t!=t)return!0;if(!e||!t)return!1}return!("function"!=typeof e.equals||"function"!=typeof t.equals||!e.equals(t))}function he(e,t){if(e===t)return!0;if(!a(t)||void 0!==e.size&&void 0!==t.size&&e.size!==t.size||void 0!==e.__hash&&void 0!==t.__hash&&e.__hash!==t.__hash||s(e)!==s(t)||l(e)!==l(t)||c(e)!==c(t))return!1;if(0===e.size&&0===t.size)return!0;var n=!u(e);if(c(e)){var r=e.entries();return t.every(function(e,t){var o=r.next().value;return o&&me(o[1],e)&&(n||me(o[0],t))})&&r.next().done}var o=!1;if(void 0===e.size)if(void 0===t.size)"function"==typeof e.cacheResult&&e.cacheResult();else{o=!0;var i=e;e=t,t=i}var f=!0,d=t.__iterate(function(t,r){if(n?!e.has(t):o?!me(t,e.get(r,v)):!me(e.get(r,v),t))return f=!1,!1});return f&&e.size===d}function _e(e,t){if(!(this instanceof _e))return new _e(e,t);if(this._value=e,this.size=void 0===t?1/0:Math.max(0,t),0===this.size){if(X)return X;X=this}}function ge(e,t){if(!e)throw new Error(t)}function ve(e,t,n){if(!(this instanceof ve))return new ve(e,t,n);if(ge(0!==n,"Cannot step a Range by 0"),e=e||0,void 0===t&&(t=1/0),n=void 0===n?1:Math.abs(n),t<e&&(n=-n),this._start=e,this._end=t,this._step=n,this.size=Math.max(0,Math.ceil((t-e)/n-1)+1),0===this.size){if(J)return J;J=this}}function ye(){throw TypeError("Abstract")}function be(){}function Ee(){}function Ce(){}z.prototype[Z]=!0,t(ee,K),ee.prototype.get=function(e,t){return this.has(e)?this._array[T(this,e)]:t},ee.prototype.__iterate=function(e,t){for(var n=this._array,r=n.length-1,o=0;o<=r;o++)if(!1===e(n[t?r-o:o],o,this))return o+1;return o},ee.prototype.__iterator=function(e,t){var n=this._array,r=n.length-1,o=0;return new U(function(){return o>r?{value:void 0,done:!0}:j(e,o,n[t?r-o++:o++])})},t(te,W),te.prototype.get=function(e,t){return void 0===t||this.has(e)?this._object[e]:t},te.prototype.has=function(e){return this._object.hasOwnProperty(e)},te.prototype.__iterate=function(e,t){for(var n=this._object,r=this._keys,o=r.length-1,i=0;i<=o;i++){var a=r[t?o-i:i];if(!1===e(n[a],a,this))return i+1}return i},te.prototype.__iterator=function(e,t){var n=this._object,r=this._keys,o=r.length-1,i=0;return new U(function(){var a=r[t?o-i:i];return i++>o?{value:void 0,done:!0}:j(e,a,n[a])})},te.prototype[m]=!0,t(ne,K),ne.prototype.__iterateUncached=function(e,t){if(t)return this.cacheResult().__iterate(e,t);var n=this._iterable,r=V(n),o=0;if(q(r))for(var i;!(i=r.next()).done&&!1!==e(i.value,o++,this););return o},ne.prototype.__iteratorUncached=function(e,t){if(t)return this.cacheResult().__iterator(e,t);var n=this._iterable,r=V(n);if(!q(r))return new U(B);var o=0;return new U(function(){var t=r.next();return t.done?t:j(e,o++,t.value)})},t(re,K),re.prototype.__iterateUncached=function(e,t){if(t)return this.cacheResult().__iterate(e,t);for(var n,r=this._iterator,o=this._iteratorCache,i=0;i<o.length;)if(!1===e(o[i],i++,this))return i;for(;!(n=r.next()).done;){var a=n.value;if(o[i]=a,!1===e(a,i++,this))break}return i},re.prototype.__iteratorUncached=function(e,t){if(t)return this.cacheResult().__iterator(e,t);var n=this._iterator,r=this._iteratorCache,o=0;return new U(function(){if(o>=r.length){var t=n.next();if(t.done)return t;r[o]=t.value}return j(e,o,r[o++])})},t(_e,K),_e.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},_e.prototype.get=function(e,t){return this.has(e)?this._value:t},_e.prototype.includes=function(e){return me(this._value,e)},_e.prototype.slice=function(e,t){var n=this.size;return R(e,t,n)?this:new _e(this._value,N(t,n)-k(e,n))},_e.prototype.reverse=function(){return this},_e.prototype.indexOf=function(e){return me(this._value,e)?0:-1},_e.prototype.lastIndexOf=function(e){return me(this._value,e)?this.size:-1},_e.prototype.__iterate=function(e,t){for(var n=0;n<this.size;n++)if(!1===e(this._value,n,this))return n+1;return n},_e.prototype.__iterator=function(e,t){var n=this,r=0;return new U(function(){return r<n.size?j(e,r++,n._value):{value:void 0,done:!0}})},_e.prototype.equals=function(e){return e instanceof _e?me(this._value,e._value):he(e)},t(ve,K),ve.prototype.toString=function(){return 0===this.size?"Range []":"Range [ "+this._start+"..."+this._end+(this._step>1?" by "+this._step:"")+" ]"},ve.prototype.get=function(e,t){return this.has(e)?this._start+T(this,e)*this._step:t},ve.prototype.includes=function(e){var t=(e-this._start)/this._step;return t>=0&&t<this.size&&t===Math.floor(t)},ve.prototype.slice=function(e,t){return R(e,t,this.size)?this:(e=k(e,this.size),(t=N(t,this.size))<=e?new ve(0,0):new ve(this.get(e,this._end),this.get(t,this._end),this._step))},ve.prototype.indexOf=function(e){var t=e-this._start;if(t%this._step==0){var n=t/this._step;if(n>=0&&n<this.size)return n}return-1},ve.prototype.lastIndexOf=function(e){return this.indexOf(e)},ve.prototype.__iterate=function(e,t){for(var n=this.size-1,r=this._step,o=t?this._start+n*r:this._start,i=0;i<=n;i++){if(!1===e(o,i,this))return i+1;o+=t?-r:r}return i},ve.prototype.__iterator=function(e,t){var n=this.size-1,r=this._step,o=t?this._start+n*r:this._start,i=0;return new U(function(){var a=o;return o+=t?-r:r,i>n?{value:void 0,done:!0}:j(e,i++,a)})},ve.prototype.equals=function(e){return e instanceof ve?this._start===e._start&&this._end===e._end&&this._step===e._step:he(this,e)},t(ye,n),t(be,ye),t(Ee,ye),t(Ce,ye),ye.Keyed=be,ye.Indexed=Ee,ye.Set=Ce;var Se="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function(e,t){var n=65535&(e|=0),r=65535&(t|=0);return n*r+((e>>>16)*r+n*(t>>>16)<<16>>>0)|0};function De(e){return e>>>1&1073741824|3221225471&e}function we(e){if(!1===e||null===e||void 0===e)return 0;if("function"==typeof e.valueOf&&(!1===(e=e.valueOf())||null===e||void 0===e))return 0;if(!0===e)return 1;var t=typeof e;if("number"===t){var n=0|e;for(n!==e&&(n^=4294967295*e);e>4294967295;)n^=e/=4294967295;return De(n)}if("string"===t)return e.length>Ae?function(e){var t=Le[e];return void 0===t&&(t=Te(e),Pe===Me&&(Pe=0,Le={}),Pe++,Le[e]=t),t}(e):Te(e);if("function"==typeof e.hashCode)return e.hashCode();if("object"===t)return function(e){var t;if(Ne&&void 0!==(t=xe.get(e)))return t;if(void 0!==(t=e[Oe]))return t;if(!ke){if(void 0!==(t=e.propertyIsEnumerable&&e.propertyIsEnumerable[Oe]))return t;if(void 0!==(t=function(e){if(e&&e.nodeType>0)switch(e.nodeType){case 1:return e.uniqueID;case 9:return e.documentElement&&e.documentElement.uniqueID}}(e)))return t}if(t=++Ie,1073741824&Ie&&(Ie=0),Ne)xe.set(e,t);else{if(void 0!==Re&&!1===Re(e))throw new Error("Non-extensible objects are not allowed as keys.");if(ke)Object.defineProperty(e,Oe,{enumerable:!1,configurable:!1,writable:!1,value:t});else if(void 0!==e.propertyIsEnumerable&&e.propertyIsEnumerable===e.constructor.prototype.propertyIsEnumerable)e.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},e.propertyIsEnumerable[Oe]=t;else{if(void 0===e.nodeType)throw new Error("Unable to set a non-enumerable property on object.");e[Oe]=t}}return t}(e);if("function"==typeof e.toString)return Te(e.toString());throw new Error("Value type "+t+" cannot be hashed.")}function Te(e){for(var t=0,n=0;n<e.length;n++)t=31*t+e.charCodeAt(n)|0;return De(t)}var xe,Re=Object.isExtensible,ke=function(){try{return Object.defineProperty({},"@",{}),!0}catch(e){return!1}}(),Ne="function"==typeof WeakMap;Ne&&(xe=new WeakMap);var Ie=0,Oe="__immutablehash__";"function"==typeof Symbol&&(Oe=Symbol(Oe));var Ae=16,Me=255,Pe=0,Le={};function Fe(e){ge(e!==1/0,"Cannot perform this action with an infinite size.")}function Ue(e){return null===e||void 0===e?Je():je(e)&&!c(e)?e:Je().withMutations(function(t){var n=r(e);Fe(n.size),n.forEach(function(e,n){return t.set(n,e)})})}function je(e){return!(!e||!e[Ge])}t(Ue,be),Ue.prototype.toString=function(){return this.__toString("Map {","}")},Ue.prototype.get=function(e,t){return this._root?this._root.get(0,void 0,e,t):t},Ue.prototype.set=function(e,t){return Ze(this,e,t)},Ue.prototype.setIn=function(e,t){return this.updateIn(e,v,function(){return t})},Ue.prototype.remove=function(e){return Ze(this,e,v)},Ue.prototype.deleteIn=function(e){return this.updateIn(e,function(){return v})},Ue.prototype.update=function(e,t,n){return 1===arguments.length?e(this):this.updateIn([e],t,n)},Ue.prototype.updateIn=function(e,t,n){n||(n=t,t=void 0);var r=function e(t,n,r,o){var i=t===v,a=n.next();if(a.done){var s=i?r:t,l=o(s);return l===s?t:l}ge(i||t&&t.set,"invalid keyPath");var u=a.value,c=i?v:t.get(u,v),f=e(c,n,r,o);return f===c?t:f===v?t.remove(u):(i?Je():t).set(u,f)}(this,nn(e),t,n);return r===v?void 0:r},Ue.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):Je()},Ue.prototype.merge=function(){return rt(this,void 0,arguments)},Ue.prototype.mergeWith=function(t){var n=e.call(arguments,1);return rt(this,t,n)},Ue.prototype.mergeIn=function(t){var n=e.call(arguments,1);return this.updateIn(t,Je(),function(e){return"function"==typeof e.merge?e.merge.apply(e,n):n[n.length-1]})},Ue.prototype.mergeDeep=function(){return rt(this,ot,arguments)},Ue.prototype.mergeDeepWith=function(t){var n=e.call(arguments,1);return rt(this,it(t),n)},Ue.prototype.mergeDeepIn=function(t){var n=e.call(arguments,1);return this.updateIn(t,Je(),function(e){return"function"==typeof e.mergeDeep?e.mergeDeep.apply(e,n):n[n.length-1]})},Ue.prototype.sort=function(e){return kt(Yt(this,e))},Ue.prototype.sortBy=function(e,t){return kt(Yt(this,t,e))},Ue.prototype.withMutations=function(e){var t=this.asMutable();return e(t),t.wasAltered()?t.__ensureOwner(this.__ownerID):this},Ue.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new S)},Ue.prototype.asImmutable=function(){return this.__ensureOwner()},Ue.prototype.wasAltered=function(){return this.__altered},Ue.prototype.__iterator=function(e,t){return new Ke(this,e,t)},Ue.prototype.__iterate=function(e,t){var n=this,r=0;return this._root&&this._root.iterate(function(t){return r++,e(t[1],t[0],n)},t),r},Ue.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?Xe(this.size,this._root,e,this.__hash):(this.__ownerID=e,this.__altered=!1,this)},Ue.isMap=je;var Be,Ge="@@__IMMUTABLE_MAP__@@",qe=Ue.prototype;function Ve(e,t){this.ownerID=e,this.entries=t}function He(e,t,n){this.ownerID=e,this.bitmap=t,this.nodes=n}function Ye(e,t,n){this.ownerID=e,this.count=t,this.nodes=n}function ze(e,t,n){this.ownerID=e,this.keyHash=t,this.entries=n}function We(e,t,n){this.ownerID=e,this.keyHash=t,this.entry=n}function Ke(e,t,n){this._type=t,this._reverse=n,this._stack=e._root&&Qe(e._root)}function $e(e,t){return j(e,t[0],t[1])}function Qe(e,t){return{node:e,index:0,__prev:t}}function Xe(e,t,n,r){var o=Object.create(qe);return o.size=e,o._root=t,o.__ownerID=n,o.__hash=r,o.__altered=!1,o}function Je(){return Be||(Be=Xe(0))}function Ze(e,t,n){var r,o;if(e._root){var i=E(y),a=E(b);if(r=et(e._root,e.__ownerID,0,void 0,t,n,i,a),!a.value)return e;o=e.size+(i.value?n===v?-1:1:0)}else{if(n===v)return e;o=1,r=new Ve(e.__ownerID,[[t,n]])}return e.__ownerID?(e.size=o,e._root=r,e.__hash=void 0,e.__altered=!0,e):r?Xe(o,r):Je()}function et(e,t,n,r,o,i,a,s){return e?e.update(t,n,r,o,i,a,s):i===v?e:(C(s),C(a),new We(t,r,[o,i]))}function tt(e){return e.constructor===We||e.constructor===ze}function nt(e,t,n,r,o){if(e.keyHash===r)return new ze(t,r,[e.entry,o]);var i,a=(0===n?e.keyHash:e.keyHash>>>n)&g,s=(0===n?r:r>>>n)&g,l=a===s?[nt(e,t,n+h,r,o)]:(i=new We(t,r,o),a<s?[e,i]:[i,e]);return new He(t,1<<a|1<<s,l)}function rt(e,t,n){for(var o=[],i=0;i<n.length;i++){var s=n[i],l=r(s);a(s)||(l=l.map(function(e){return fe(e)})),o.push(l)}return at(e,t,o)}function ot(e,t,n){return e&&e.mergeDeep&&a(t)?e.mergeDeep(t):me(e,t)?e:t}function it(e){return function(t,n,r){if(t&&t.mergeDeepWith&&a(n))return t.mergeDeepWith(e,n);var o=e(t,n,r);return me(t,o)?t:o}}function at(e,t,n){return 0===(n=n.filter(function(e){return 0!==e.size})).length?e:0!==e.size||e.__ownerID||1!==n.length?e.withMutations(function(e){for(var r=t?function(n,r){e.update(r,v,function(e){return e===v?n:t(e,n,r)})}:function(t,n){e.set(n,t)},o=0;o<n.length;o++)n[o].forEach(r)}):e.constructor(n[0])}function st(e){return e=(e=(858993459&(e-=e>>1&1431655765))+(e>>2&858993459))+(e>>4)&252645135,e+=e>>8,127&(e+=e>>16)}function lt(e,t,n,r){var o=r?e:D(e);return o[t]=n,o}qe[Ge]=!0,qe.delete=qe.remove,qe.removeIn=qe.deleteIn,Ve.prototype.get=function(e,t,n,r){for(var o=this.entries,i=0,a=o.length;i<a;i++)if(me(n,o[i][0]))return o[i][1];return r},Ve.prototype.update=function(e,t,n,r,o,i,a){for(var s=o===v,l=this.entries,u=0,c=l.length;u<c&&!me(r,l[u][0]);u++);var f=u<c;if(f?l[u][1]===o:s)return this;if(C(a),(s||!f)&&C(i),!s||1!==l.length){if(!f&&!s&&l.length>=ut)return function(e,t,n,r){e||(e=new S);for(var o=new We(e,we(n),[n,r]),i=0;i<t.length;i++){var a=t[i];o=o.update(e,0,void 0,a[0],a[1])}return o}(e,l,r,o);var d=e&&e===this.ownerID,p=d?l:D(l);return f?s?u===c-1?p.pop():p[u]=p.pop():p[u]=[r,o]:p.push([r,o]),d?(this.entries=p,this):new Ve(e,p)}},He.prototype.get=function(e,t,n,r){void 0===t&&(t=we(n));var o=1<<((0===e?t:t>>>e)&g),i=this.bitmap;return 0==(i&o)?r:this.nodes[st(i&o-1)].get(e+h,t,n,r)},He.prototype.update=function(e,t,n,r,o,i,a){void 0===n&&(n=we(r));var s=(0===t?n:n>>>t)&g,l=1<<s,u=this.bitmap,c=0!=(u&l);if(!c&&o===v)return this;var f=st(u&l-1),d=this.nodes,p=c?d[f]:void 0,m=et(p,e,t+h,n,r,o,i,a);if(m===p)return this;if(!c&&m&&d.length>=ct)return function(e,t,n,r,o){for(var i=0,a=new Array(_),s=0;0!==n;s++,n>>>=1)a[s]=1&n?t[i++]:void 0;return a[r]=o,new Ye(e,i+1,a)}(e,d,u,s,m);if(c&&!m&&2===d.length&&tt(d[1^f]))return d[1^f];if(c&&m&&1===d.length&&tt(m))return m;var y=e&&e===this.ownerID,b=c?m?u:u^l:u|l,E=c?m?lt(d,f,m,y):function(e,t,n){var r=e.length-1;if(n&&t===r)return e.pop(),e;for(var o=new Array(r),i=0,a=0;a<r;a++)a===t&&(i=1),o[a]=e[a+i];return o}(d,f,y):function(e,t,n,r){var o=e.length+1;if(r&&t+1===o)return e[t]=n,e;for(var i=new Array(o),a=0,s=0;s<o;s++)s===t?(i[s]=n,a=-1):i[s]=e[s+a];return i}(d,f,m,y);return y?(this.bitmap=b,this.nodes=E,this):new He(e,b,E)},Ye.prototype.get=function(e,t,n,r){void 0===t&&(t=we(n));var o=(0===e?t:t>>>e)&g,i=this.nodes[o];return i?i.get(e+h,t,n,r):r},Ye.prototype.update=function(e,t,n,r,o,i,a){void 0===n&&(n=we(r));var s=(0===t?n:n>>>t)&g,l=o===v,u=this.nodes,c=u[s];if(l&&!c)return this;var f=et(c,e,t+h,n,r,o,i,a);if(f===c)return this;var d=this.count;if(c){if(!f&&--d<ft)return function(e,t,n,r){for(var o=0,i=0,a=new Array(n),s=0,l=1,u=t.length;s<u;s++,l<<=1){var c=t[s];void 0!==c&&s!==r&&(o|=l,a[i++]=c)}return new He(e,o,a)}(e,u,d,s)}else d++;var p=e&&e===this.ownerID,m=lt(u,s,f,p);return p?(this.count=d,this.nodes=m,this):new Ye(e,d,m)},ze.prototype.get=function(e,t,n,r){for(var o=this.entries,i=0,a=o.length;i<a;i++)if(me(n,o[i][0]))return o[i][1];return r},ze.prototype.update=function(e,t,n,r,o,i,a){void 0===n&&(n=we(r));var s=o===v;if(n!==this.keyHash)return s?this:(C(a),C(i),nt(this,e,t,n,[r,o]));for(var l=this.entries,u=0,c=l.length;u<c&&!me(r,l[u][0]);u++);var f=u<c;if(f?l[u][1]===o:s)return this;if(C(a),(s||!f)&&C(i),s&&2===c)return new We(e,this.keyHash,l[1^u]);var d=e&&e===this.ownerID,p=d?l:D(l);return f?s?u===c-1?p.pop():p[u]=p.pop():p[u]=[r,o]:p.push([r,o]),d?(this.entries=p,this):new ze(e,this.keyHash,p)},We.prototype.get=function(e,t,n,r){return me(n,this.entry[0])?this.entry[1]:r},We.prototype.update=function(e,t,n,r,o,i,a){var s=o===v,l=me(r,this.entry[0]);return(l?o===this.entry[1]:s)?this:(C(a),s?void C(i):l?e&&e===this.ownerID?(this.entry[1]=o,this):new We(e,this.keyHash,[r,o]):(C(i),nt(this,e,t,we(r),[r,o])))},Ve.prototype.iterate=ze.prototype.iterate=function(e,t){for(var n=this.entries,r=0,o=n.length-1;r<=o;r++)if(!1===e(n[t?o-r:r]))return!1},He.prototype.iterate=Ye.prototype.iterate=function(e,t){for(var n=this.nodes,r=0,o=n.length-1;r<=o;r++){var i=n[t?o-r:r];if(i&&!1===i.iterate(e,t))return!1}},We.prototype.iterate=function(e,t){return e(this.entry)},t(Ke,U),Ke.prototype.next=function(){for(var e=this._type,t=this._stack;t;){var n,r=t.node,o=t.index++;if(r.entry){if(0===o)return $e(e,r.entry)}else if(r.entries){if(n=r.entries.length-1,o<=n)return $e(e,r.entries[this._reverse?n-o:o])}else if(n=r.nodes.length-1,o<=n){var i=r.nodes[this._reverse?n-o:o];if(i){if(i.entry)return $e(e,i.entry);t=this._stack=Qe(i,t)}continue}t=this._stack=this._stack.__prev}return{value:void 0,done:!0}};var ut=_/4,ct=_/2,ft=_/4;function dt(e){var t=Ct();if(null===e||void 0===e)return t;if(pt(e))return e;var n=o(e),r=n.size;return 0===r?t:(Fe(r),r>0&&r<_?Et(0,r,h,null,new _t(n.toArray())):t.withMutations(function(e){e.setSize(r),n.forEach(function(t,n){return e.set(n,t)})}))}function pt(e){return!(!e||!e[mt])}t(dt,Ee),dt.of=function(){return this(arguments)},dt.prototype.toString=function(){return this.__toString("List [","]")},dt.prototype.get=function(e,t){if((e=T(this,e))>=0&&e<this.size){var n=wt(this,e+=this._origin);return n&&n.array[e&g]}return t},dt.prototype.set=function(e,t){return function(e,t,n){if((t=T(e,t))!=t)return e;if(t>=e.size||t<0)return e.withMutations(function(e){t<0?Tt(e,t).set(0,n):Tt(e,0,t+1).set(t,n)});t+=e._origin;var r=e._tail,o=e._root,i=E(b);return t>=Rt(e._capacity)?r=St(r,e.__ownerID,0,t,n,i):o=St(o,e.__ownerID,e._level,t,n,i),i.value?e.__ownerID?(e._root=o,e._tail=r,e.__hash=void 0,e.__altered=!0,e):Et(e._origin,e._capacity,e._level,o,r):e}(this,e,t)},dt.prototype.remove=function(e){return this.has(e)?0===e?this.shift():e===this.size-1?this.pop():this.splice(e,1):this},dt.prototype.insert=function(e,t){return this.splice(e,0,t)},dt.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=h,this._root=this._tail=null,this.__hash=void 0,this.__altered=!0,this):Ct()},dt.prototype.push=function(){var e=arguments,t=this.size;return this.withMutations(function(n){Tt(n,0,t+e.length);for(var r=0;r<e.length;r++)n.set(t+r,e[r])})},dt.prototype.pop=function(){return Tt(this,0,-1)},dt.prototype.unshift=function(){var e=arguments;return this.withMutations(function(t){Tt(t,-e.length);for(var n=0;n<e.length;n++)t.set(n,e[n])})},dt.prototype.shift=function(){return Tt(this,1)},dt.prototype.merge=function(){return xt(this,void 0,arguments)},dt.prototype.mergeWith=function(t){var n=e.call(arguments,1);return xt(this,t,n)},dt.prototype.mergeDeep=function(){return xt(this,ot,arguments)},dt.prototype.mergeDeepWith=function(t){var n=e.call(arguments,1);return xt(this,it(t),n)},dt.prototype.setSize=function(e){return Tt(this,0,e)},dt.prototype.slice=function(e,t){var n=this.size;return R(e,t,n)?this:Tt(this,k(e,n),N(t,n))},dt.prototype.__iterator=function(e,t){var n=0,r=bt(this,t);return new U(function(){var t=r();return t===yt?{value:void 0,done:!0}:j(e,n++,t)})},dt.prototype.__iterate=function(e,t){for(var n,r=0,o=bt(this,t);(n=o())!==yt&&!1!==e(n,r++,this););return r},dt.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?Et(this._origin,this._capacity,this._level,this._root,this._tail,e,this.__hash):(this.__ownerID=e,this)},dt.isList=pt;var mt="@@__IMMUTABLE_LIST__@@",ht=dt.prototype;function _t(e,t){this.array=e,this.ownerID=t}ht[mt]=!0,ht.delete=ht.remove,ht.setIn=qe.setIn,ht.deleteIn=ht.removeIn=qe.removeIn,ht.update=qe.update,ht.updateIn=qe.updateIn,ht.mergeIn=qe.mergeIn,ht.mergeDeepIn=qe.mergeDeepIn,ht.withMutations=qe.withMutations,ht.asMutable=qe.asMutable,ht.asImmutable=qe.asImmutable,ht.wasAltered=qe.wasAltered,_t.prototype.removeBefore=function(e,t,n){if(n===t?1<<t:0===this.array.length)return this;var r=n>>>t&g;if(r>=this.array.length)return new _t([],e);var o,i=0===r;if(t>0){var a=this.array[r];if((o=a&&a.removeBefore(e,t-h,n))===a&&i)return this}if(i&&!o)return this;var s=Dt(this,e);if(!i)for(var l=0;l<r;l++)s.array[l]=void 0;return o&&(s.array[r]=o),s},_t.prototype.removeAfter=function(e,t,n){if(n===(t?1<<t:0)||0===this.array.length)return this;var r,o=n-1>>>t&g;if(o>=this.array.length)return this;if(t>0){var i=this.array[o];if((r=i&&i.removeAfter(e,t-h,n))===i&&o===this.array.length-1)return this}var a=Dt(this,e);return a.array.splice(o+1),r&&(a.array[o]=r),a};var gt,vt,yt={};function bt(e,t){var n=e._origin,r=e._capacity,o=Rt(r),i=e._tail;return a(e._root,e._level,0);function a(e,s,l){return 0===s?function(e,a){var s=a===o?i&&i.array:e&&e.array,l=a>n?0:n-a,u=r-a;return u>_&&(u=_),function(){if(l===u)return yt;var e=t?--u:l++;return s&&s[e]}}(e,l):function(e,o,i){var s,l=e&&e.array,u=i>n?0:n-i>>o,c=1+(r-i>>o);return c>_&&(c=_),function(){for(;;){if(s){var e=s();if(e!==yt)return e;s=null}if(u===c)return yt;var n=t?--c:u++;s=a(l&&l[n],o-h,i+(n<<o))}}}(e,s,l)}}function Et(e,t,n,r,o,i,a){var s=Object.create(ht);return s.size=t-e,s._origin=e,s._capacity=t,s._level=n,s._root=r,s._tail=o,s.__ownerID=i,s.__hash=a,s.__altered=!1,s}function Ct(){return gt||(gt=Et(0,0,h))}function St(e,t,n,r,o,i){var a,s=r>>>n&g,l=e&&s<e.array.length;if(!l&&void 0===o)return e;if(n>0){var u=e&&e.array[s],c=St(u,t,n-h,r,o,i);return c===u?e:((a=Dt(e,t)).array[s]=c,a)}return l&&e.array[s]===o?e:(C(i),a=Dt(e,t),void 0===o&&s===a.array.length-1?a.array.pop():a.array[s]=o,a)}function Dt(e,t){return t&&e&&t===e.ownerID?e:new _t(e?e.array.slice():[],t)}function wt(e,t){if(t>=Rt(e._capacity))return e._tail;if(t<1<<e._level+h){for(var n=e._root,r=e._level;n&&r>0;)n=n.array[t>>>r&g],r-=h;return n}}function Tt(e,t,n){void 0!==t&&(t|=0),void 0!==n&&(n|=0);var r=e.__ownerID||new S,o=e._origin,i=e._capacity,a=o+t,s=void 0===n?i:n<0?i+n:o+n;if(a===o&&s===i)return e;if(a>=s)return e.clear();for(var l=e._level,u=e._root,c=0;a+c<0;)u=new _t(u&&u.array.length?[void 0,u]:[],r),c+=1<<(l+=h);c&&(a+=c,o+=c,s+=c,i+=c);for(var f=Rt(i),d=Rt(s);d>=1<<l+h;)u=new _t(u&&u.array.length?[u]:[],r),l+=h;var p=e._tail,m=d<f?wt(e,s-1):d>f?new _t([],r):p;if(p&&d>f&&a<i&&p.array.length){for(var _=u=Dt(u,r),v=l;v>h;v-=h){var y=f>>>v&g;_=_.array[y]=Dt(_.array[y],r)}_.array[f>>>h&g]=p}if(s<i&&(m=m&&m.removeAfter(r,0,s)),a>=d)a-=d,s-=d,l=h,u=null,m=m&&m.removeBefore(r,0,a);else if(a>o||d<f){for(c=0;u;){var b=a>>>l&g;if(b!==d>>>l&g)break;b&&(c+=(1<<l)*b),l-=h,u=u.array[b]}u&&a>o&&(u=u.removeBefore(r,l,a-c)),u&&d<f&&(u=u.removeAfter(r,l,d-c)),c&&(a-=c,s-=c)}return e.__ownerID?(e.size=s-a,e._origin=a,e._capacity=s,e._level=l,e._root=u,e._tail=m,e.__hash=void 0,e.__altered=!0,e):Et(a,s,l,u,m)}function xt(e,t,n){for(var r=[],i=0,s=0;s<n.length;s++){var l=n[s],u=o(l);u.size>i&&(i=u.size),a(l)||(u=u.map(function(e){return fe(e)})),r.push(u)}return i>e.size&&(e=e.setSize(i)),at(e,t,r)}function Rt(e){return e<_?0:e-1>>>h<<h}function kt(e){return null===e||void 0===e?Ot():Nt(e)?e:Ot().withMutations(function(t){var n=r(e);Fe(n.size),n.forEach(function(e,n){return t.set(n,e)})})}function Nt(e){return je(e)&&c(e)}function It(e,t,n,r){var o=Object.create(kt.prototype);return o.size=e?e.size:0,o._map=e,o._list=t,o.__ownerID=n,o.__hash=r,o}function Ot(){return vt||(vt=It(Je(),Ct()))}function At(e,t,n){var r,o,i=e._map,a=e._list,s=i.get(t),l=void 0!==s;if(n===v){if(!l)return e;a.size>=_&&a.size>=2*i.size?(o=a.filter(function(e,t){return void 0!==e&&s!==t}),r=o.toKeyedSeq().map(function(e){return e[0]}).flip().toMap(),e.__ownerID&&(r.__ownerID=o.__ownerID=e.__ownerID)):(r=i.remove(t),o=s===a.size-1?a.pop():a.set(s,void 0))}else if(l){if(n===a.get(s)[1])return e;r=i,o=a.set(s,[t,n])}else r=i.set(t,a.size),o=a.set(a.size,[t,n]);return e.__ownerID?(e.size=r.size,e._map=r,e._list=o,e.__hash=void 0,e):It(r,o)}function Mt(e,t){this._iter=e,this._useKeys=t,this.size=e.size}function Pt(e){this._iter=e,this.size=e.size}function Lt(e){this._iter=e,this.size=e.size}function Ft(e){this._iter=e,this.size=e.size}function Ut(e){var t=Zt(e);return t._iter=e,t.size=e.size,t.flip=function(){return e},t.reverse=function(){var t=e.reverse.apply(this);return t.flip=function(){return e.reverse()},t},t.has=function(t){return e.includes(t)},t.includes=function(t){return e.has(t)},t.cacheResult=en,t.__iterateUncached=function(t,n){var r=this;return e.__iterate(function(e,n){return!1!==t(n,e,r)},n)},t.__iteratorUncached=function(t,n){if(t===M){var r=e.__iterator(t,n);return new U(function(){var e=r.next();if(!e.done){var t=e.value[0];e.value[0]=e.value[1],e.value[1]=t}return e})}return e.__iterator(t===A?O:A,n)},t}function jt(e,t,n){var r=Zt(e);return r.size=e.size,r.has=function(t){return e.has(t)},r.get=function(r,o){var i=e.get(r,v);return i===v?o:t.call(n,i,r,e)},r.__iterateUncached=function(r,o){var i=this;return e.__iterate(function(e,o,a){return!1!==r(t.call(n,e,o,a),o,i)},o)},r.__iteratorUncached=function(r,o){var i=e.__iterator(M,o);return new U(function(){var o=i.next();if(o.done)return o;var a=o.value,s=a[0];return j(r,s,t.call(n,a[1],s,e),o)})},r}function Bt(e,t){var n=Zt(e);return n._iter=e,n.size=e.size,n.reverse=function(){return e},e.flip&&(n.flip=function(){var t=Ut(e);return t.reverse=function(){return e.flip()},t}),n.get=function(n,r){return e.get(t?n:-1-n,r)},n.has=function(n){return e.has(t?n:-1-n)},n.includes=function(t){return e.includes(t)},n.cacheResult=en,n.__iterate=function(t,n){var r=this;return e.__iterate(function(e,n){return t(e,n,r)},!n)},n.__iterator=function(t,n){return e.__iterator(t,!n)},n}function Gt(e,t,n,r){var o=Zt(e);return r&&(o.has=function(r){var o=e.get(r,v);return o!==v&&!!t.call(n,o,r,e)},o.get=function(r,o){var i=e.get(r,v);return i!==v&&t.call(n,i,r,e)?i:o}),o.__iterateUncached=function(o,i){var a=this,s=0;return e.__iterate(function(e,i,l){if(t.call(n,e,i,l))return s++,o(e,r?i:s-1,a)},i),s},o.__iteratorUncached=function(o,i){var a=e.__iterator(M,i),s=0;return new U(function(){for(;;){var i=a.next();if(i.done)return i;var l=i.value,u=l[0],c=l[1];if(t.call(n,c,u,e))return j(o,r?u:s++,c,i)}})},o}function qt(e,t,n,r){var o=e.size;if(void 0!==t&&(t|=0),void 0!==n&&(n|=0),R(t,n,o))return e;var i=k(t,o),a=N(n,o);if(i!=i||a!=a)return qt(e.toSeq().cacheResult(),t,n,r);var s,l=a-i;l==l&&(s=l<0?0:l);var u=Zt(e);return u.size=0===s?s:e.size&&s||void 0,!r&&oe(e)&&s>=0&&(u.get=function(t,n){return(t=T(this,t))>=0&&t<s?e.get(t+i,n):n}),u.__iterateUncached=function(t,n){var o=this;if(0===s)return 0;if(n)return this.cacheResult().__iterate(t,n);var a=0,l=!0,u=0;return e.__iterate(function(e,n){if(!l||!(l=a++<i))return u++,!1!==t(e,r?n:u-1,o)&&u!==s}),u},u.__iteratorUncached=function(t,n){if(0!==s&&n)return this.cacheResult().__iterator(t,n);var o=0!==s&&e.__iterator(t,n),a=0,l=0;return new U(function(){for(;a++<i;)o.next();if(++l>s)return{value:void 0,done:!0};var e=o.next();return r||t===A?e:j(t,l-1,t===O?void 0:e.value[1],e)})},u}function Vt(e,t,n,r){var o=Zt(e);return o.__iterateUncached=function(o,i){var a=this;if(i)return this.cacheResult().__iterate(o,i);var s=!0,l=0;return e.__iterate(function(e,i,u){if(!s||!(s=t.call(n,e,i,u)))return l++,o(e,r?i:l-1,a)}),l},o.__iteratorUncached=function(o,i){var a=this;if(i)return this.cacheResult().__iterator(o,i);var s=e.__iterator(M,i),l=!0,u=0;return new U(function(){var e,i,c;do{if((e=s.next()).done)return r||o===A?e:j(o,u++,o===O?void 0:e.value[1],e);var f=e.value;i=f[0],c=f[1],l&&(l=t.call(n,c,i,a))}while(l);return o===M?e:j(o,i,c,e)})},o}function Ht(e,t,n){var r=Zt(e);return r.__iterateUncached=function(r,o){var i=0,s=!1;return function e(l,u){var c=this;l.__iterate(function(o,l){return(!t||u<t)&&a(o)?e(o,u+1):!1===r(o,n?l:i++,c)&&(s=!0),!s},o)}(e,0),i},r.__iteratorUncached=function(r,o){var i=e.__iterator(r,o),s=[],l=0;return new U(function(){for(;i;){var e=i.next();if(!1===e.done){var u=e.value;if(r===M&&(u=u[1]),t&&!(s.length<t)||!a(u))return n?e:j(r,l++,u,e);s.push(i),i=u.__iterator(r,o)}else i=s.pop()}return{value:void 0,done:!0}})},r}function Yt(e,t,n){t||(t=tn);var r=s(e),o=0,i=e.toSeq().map(function(t,r){return[r,t,o++,n?n(t,r,e):t]}).toArray();return i.sort(function(e,n){return t(e[3],n[3])||e[2]-n[2]}).forEach(r?function(e,t){i[t].length=2}:function(e,t){i[t]=e[1]}),r?W(i):l(e)?K(i):$(i)}function zt(e,t,n){if(t||(t=tn),n){var r=e.toSeq().map(function(t,r){return[t,n(t,r,e)]}).reduce(function(e,n){return Wt(t,e[1],n[1])?n:e});return r&&r[0]}return e.reduce(function(e,n){return Wt(t,e,n)?n:e})}function Wt(e,t,n){var r=e(n,t);return 0===r&&n!==t&&(void 0===n||null===n||n!=n)||r>0}function Kt(e,t,r){var o=Zt(e);return o.size=new ee(r).map(function(e){return e.size}).min(),o.__iterate=function(e,t){for(var n,r=this.__iterator(A,t),o=0;!(n=r.next()).done&&!1!==e(n.value,o++,this););return o},o.__iteratorUncached=function(e,o){var i=r.map(function(e){return e=n(e),V(o?e.reverse():e)}),a=0,s=!1;return new U(function(){var n;return s||(n=i.map(function(e){return e.next()}),s=n.some(function(e){return e.done})),s?{value:void 0,done:!0}:j(e,a++,t.apply(null,n.map(function(e){return e.value})))})},o}function $t(e,t){return oe(e)?t:e.constructor(t)}function Qt(e){if(e!==Object(e))throw new TypeError("Expected [K, V] tuple: "+e)}function Xt(e){return Fe(e.size),w(e)}function Jt(e){return s(e)?r:l(e)?o:i}function Zt(e){return Object.create((s(e)?W:l(e)?K:$).prototype)}function en(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):z.prototype.cacheResult.call(this)}function tn(e,t){return e>t?1:e<t?-1:0}function nn(e){var t=V(e);if(!t){if(!Y(e))throw new TypeError("Expected iterable or array-like: "+e);t=V(n(e))}return t}function rn(e,t){var n,r=function(i){if(i instanceof r)return i;if(!(this instanceof r))return new r(i);if(!n){n=!0;var a=Object.keys(e);!function(e,t){try{t.forEach(function(e,t){Object.defineProperty(e,t,{get:function(){return this.get(t)},set:function(e){ge(this.__ownerID,"Cannot set on an immutable record."),this.set(t,e)}})}.bind(void 0,e))}catch(e){}}(o,a),o.size=a.length,o._name=t,o._keys=a,o._defaultValues=e}this._map=Ue(i)},o=r.prototype=Object.create(on);return o.constructor=r,r}t(kt,Ue),kt.of=function(){return this(arguments)},kt.prototype.toString=function(){return this.__toString("OrderedMap {","}")},kt.prototype.get=function(e,t){var n=this._map.get(e);return void 0!==n?this._list.get(n)[1]:t},kt.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):Ot()},kt.prototype.set=function(e,t){return At(this,e,t)},kt.prototype.remove=function(e){return At(this,e,v)},kt.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},kt.prototype.__iterate=function(e,t){var n=this;return this._list.__iterate(function(t){return t&&e(t[1],t[0],n)},t)},kt.prototype.__iterator=function(e,t){return this._list.fromEntrySeq().__iterator(e,t)},kt.prototype.__ensureOwner=function(e){if(e===this.__ownerID)return this;var t=this._map.__ensureOwner(e),n=this._list.__ensureOwner(e);return e?It(t,n,e,this.__hash):(this.__ownerID=e,this._map=t,this._list=n,this)},kt.isOrderedMap=Nt,kt.prototype[m]=!0,kt.prototype.delete=kt.prototype.remove,t(Mt,W),Mt.prototype.get=function(e,t){return this._iter.get(e,t)},Mt.prototype.has=function(e){return this._iter.has(e)},Mt.prototype.valueSeq=function(){return this._iter.valueSeq()},Mt.prototype.reverse=function(){var e=this,t=Bt(this,!0);return this._useKeys||(t.valueSeq=function(){return e._iter.toSeq().reverse()}),t},Mt.prototype.map=function(e,t){var n=this,r=jt(this,e,t);return this._useKeys||(r.valueSeq=function(){return n._iter.toSeq().map(e,t)}),r},Mt.prototype.__iterate=function(e,t){var n,r=this;return this._iter.__iterate(this._useKeys?function(t,n){return e(t,n,r)}:(n=t?Xt(this):0,function(o){return e(o,t?--n:n++,r)}),t)},Mt.prototype.__iterator=function(e,t){if(this._useKeys)return this._iter.__iterator(e,t);var n=this._iter.__iterator(A,t),r=t?Xt(this):0;return new U(function(){var o=n.next();return o.done?o:j(e,t?--r:r++,o.value,o)})},Mt.prototype[m]=!0,t(Pt,K),Pt.prototype.includes=function(e){return this._iter.includes(e)},Pt.prototype.__iterate=function(e,t){var n=this,r=0;return this._iter.__iterate(function(t){return e(t,r++,n)},t)},Pt.prototype.__iterator=function(e,t){var n=this._iter.__iterator(A,t),r=0;return new U(function(){var t=n.next();return t.done?t:j(e,r++,t.value,t)})},t(Lt,$),Lt.prototype.has=function(e){return this._iter.includes(e)},Lt.prototype.__iterate=function(e,t){var n=this;return this._iter.__iterate(function(t){return e(t,t,n)},t)},Lt.prototype.__iterator=function(e,t){var n=this._iter.__iterator(A,t);return new U(function(){var t=n.next();return t.done?t:j(e,t.value,t.value,t)})},t(Ft,W),Ft.prototype.entrySeq=function(){return this._iter.toSeq()},Ft.prototype.__iterate=function(e,t){var n=this;return this._iter.__iterate(function(t){if(t){Qt(t);var r=a(t);return e(r?t.get(1):t[1],r?t.get(0):t[0],n)}},t)},Ft.prototype.__iterator=function(e,t){var n=this._iter.__iterator(A,t);return new U(function(){for(;;){var t=n.next();if(t.done)return t;var r=t.value;if(r){Qt(r);var o=a(r);return j(e,o?r.get(0):r[0],o?r.get(1):r[1],t)}}})},Pt.prototype.cacheResult=Mt.prototype.cacheResult=Lt.prototype.cacheResult=Ft.prototype.cacheResult=en,t(rn,be),rn.prototype.toString=function(){return this.__toString(sn(this)+" {","}")},rn.prototype.has=function(e){return this._defaultValues.hasOwnProperty(e)},rn.prototype.get=function(e,t){if(!this.has(e))return t;var n=this._defaultValues[e];return this._map?this._map.get(e,n):n},rn.prototype.clear=function(){if(this.__ownerID)return this._map&&this._map.clear(),this;var e=this.constructor;return e._empty||(e._empty=an(this,Je()))},rn.prototype.set=function(e,t){if(!this.has(e))throw new Error('Cannot set unknown key "'+e+'" on '+sn(this));var n=this._map&&this._map.set(e,t);return this.__ownerID||n===this._map?this:an(this,n)},rn.prototype.remove=function(e){if(!this.has(e))return this;var t=this._map&&this._map.remove(e);return this.__ownerID||t===this._map?this:an(this,t)},rn.prototype.wasAltered=function(){return this._map.wasAltered()},rn.prototype.__iterator=function(e,t){var n=this;return r(this._defaultValues).map(function(e,t){return n.get(t)}).__iterator(e,t)},rn.prototype.__iterate=function(e,t){var n=this;return r(this._defaultValues).map(function(e,t){return n.get(t)}).__iterate(e,t)},rn.prototype.__ensureOwner=function(e){if(e===this.__ownerID)return this;var t=this._map&&this._map.__ensureOwner(e);return e?an(this,t,e):(this.__ownerID=e,this._map=t,this)};var on=rn.prototype;function an(e,t,n){var r=Object.create(Object.getPrototypeOf(e));return r._map=t,r.__ownerID=n,r}function sn(e){return e._name||e.constructor.name||"Record"}function ln(e){return null===e||void 0===e?hn():un(e)&&!c(e)?e:hn().withMutations(function(t){var n=i(e);Fe(n.size),n.forEach(function(e){return t.add(e)})})}function un(e){return!(!e||!e[fn])}on.delete=on.remove,on.deleteIn=on.removeIn=qe.removeIn,on.merge=qe.merge,on.mergeWith=qe.mergeWith,on.mergeIn=qe.mergeIn,on.mergeDeep=qe.mergeDeep,on.mergeDeepWith=qe.mergeDeepWith,on.mergeDeepIn=qe.mergeDeepIn,on.setIn=qe.setIn,on.update=qe.update,on.updateIn=qe.updateIn,on.withMutations=qe.withMutations,on.asMutable=qe.asMutable,on.asImmutable=qe.asImmutable,t(ln,Ce),ln.of=function(){return this(arguments)},ln.fromKeys=function(e){return this(r(e).keySeq())},ln.prototype.toString=function(){return this.__toString("Set {","}")},ln.prototype.has=function(e){return this._map.has(e)},ln.prototype.add=function(e){return pn(this,this._map.set(e,!0))},ln.prototype.remove=function(e){return pn(this,this._map.remove(e))},ln.prototype.clear=function(){return pn(this,this._map.clear())},ln.prototype.union=function(){var t=e.call(arguments,0);return 0===(t=t.filter(function(e){return 0!==e.size})).length?this:0!==this.size||this.__ownerID||1!==t.length?this.withMutations(function(e){for(var n=0;n<t.length;n++)i(t[n]).forEach(function(t){return e.add(t)})}):this.constructor(t[0])},ln.prototype.intersect=function(){var t=e.call(arguments,0);if(0===t.length)return this;t=t.map(function(e){return i(e)});var n=this;return this.withMutations(function(e){n.forEach(function(n){t.every(function(e){return e.includes(n)})||e.remove(n)})})},ln.prototype.subtract=function(){var t=e.call(arguments,0);if(0===t.length)return this;t=t.map(function(e){return i(e)});var n=this;return this.withMutations(function(e){n.forEach(function(n){t.some(function(e){return e.includes(n)})&&e.remove(n)})})},ln.prototype.merge=function(){return this.union.apply(this,arguments)},ln.prototype.mergeWith=function(t){var n=e.call(arguments,1);return this.union.apply(this,n)},ln.prototype.sort=function(e){return _n(Yt(this,e))},ln.prototype.sortBy=function(e,t){return _n(Yt(this,t,e))},ln.prototype.wasAltered=function(){return this._map.wasAltered()},ln.prototype.__iterate=function(e,t){var n=this;return this._map.__iterate(function(t,r){return e(r,r,n)},t)},ln.prototype.__iterator=function(e,t){return this._map.map(function(e,t){return t}).__iterator(e,t)},ln.prototype.__ensureOwner=function(e){if(e===this.__ownerID)return this;var t=this._map.__ensureOwner(e);return e?this.__make(t,e):(this.__ownerID=e,this._map=t,this)},ln.isSet=un;var cn,fn="@@__IMMUTABLE_SET__@@",dn=ln.prototype;function pn(e,t){return e.__ownerID?(e.size=t.size,e._map=t,e):t===e._map?e:0===t.size?e.__empty():e.__make(t)}function mn(e,t){var n=Object.create(dn);return n.size=e?e.size:0,n._map=e,n.__ownerID=t,n}function hn(){return cn||(cn=mn(Je()))}function _n(e){return null===e||void 0===e?En():gn(e)?e:En().withMutations(function(t){var n=i(e);Fe(n.size),n.forEach(function(e){return t.add(e)})})}function gn(e){return un(e)&&c(e)}dn[fn]=!0,dn.delete=dn.remove,dn.mergeDeep=dn.merge,dn.mergeDeepWith=dn.mergeWith,dn.withMutations=qe.withMutations,dn.asMutable=qe.asMutable,dn.asImmutable=qe.asImmutable,dn.__empty=hn,dn.__make=mn,t(_n,ln),_n.of=function(){return this(arguments)},_n.fromKeys=function(e){return this(r(e).keySeq())},_n.prototype.toString=function(){return this.__toString("OrderedSet {","}")},_n.isOrderedSet=gn;var vn,yn=_n.prototype;function bn(e,t){var n=Object.create(yn);return n.size=e?e.size:0,n._map=e,n.__ownerID=t,n}function En(){return vn||(vn=bn(Ot()))}function Cn(e){return null===e||void 0===e?Rn():Sn(e)?e:Rn().unshiftAll(e)}function Sn(e){return!(!e||!e[wn])}yn[m]=!0,yn.__empty=En,yn.__make=bn,t(Cn,Ee),Cn.of=function(){return this(arguments)},Cn.prototype.toString=function(){return this.__toString("Stack [","]")},Cn.prototype.get=function(e,t){var n=this._head;for(e=T(this,e);n&&e--;)n=n.next;return n?n.value:t},Cn.prototype.peek=function(){return this._head&&this._head.value},Cn.prototype.push=function(){if(0===arguments.length)return this;for(var e=this.size+arguments.length,t=this._head,n=arguments.length-1;n>=0;n--)t={value:arguments[n],next:t};return this.__ownerID?(this.size=e,this._head=t,this.__hash=void 0,this.__altered=!0,this):xn(e,t)},Cn.prototype.pushAll=function(e){if(0===(e=o(e)).size)return this;Fe(e.size);var t=this.size,n=this._head;return e.reverse().forEach(function(e){t++,n={value:e,next:n}}),this.__ownerID?(this.size=t,this._head=n,this.__hash=void 0,this.__altered=!0,this):xn(t,n)},Cn.prototype.pop=function(){return this.slice(1)},Cn.prototype.unshift=function(){return this.push.apply(this,arguments)},Cn.prototype.unshiftAll=function(e){return this.pushAll(e)},Cn.prototype.shift=function(){return this.pop.apply(this,arguments)},Cn.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Rn()},Cn.prototype.slice=function(e,t){if(R(e,t,this.size))return this;var n=k(e,this.size),r=N(t,this.size);if(r!==this.size)return Ee.prototype.slice.call(this,e,t);for(var o=this.size-n,i=this._head;n--;)i=i.next;return this.__ownerID?(this.size=o,this._head=i,this.__hash=void 0,this.__altered=!0,this):xn(o,i)},Cn.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?xn(this.size,this._head,e,this.__hash):(this.__ownerID=e,this.__altered=!1,this)},Cn.prototype.__iterate=function(e,t){if(t)return this.reverse().__iterate(e);for(var n=0,r=this._head;r&&!1!==e(r.value,n++,this);)r=r.next;return n},Cn.prototype.__iterator=function(e,t){if(t)return this.reverse().__iterator(e);var n=0,r=this._head;return new U(function(){if(r){var t=r.value;return r=r.next,j(e,n++,t)}return{value:void 0,done:!0}})},Cn.isStack=Sn;var Dn,wn="@@__IMMUTABLE_STACK__@@",Tn=Cn.prototype;function xn(e,t,n,r){var o=Object.create(Tn);return o.size=e,o._head=t,o.__ownerID=n,o.__hash=r,o.__altered=!1,o}function Rn(){return Dn||(Dn=xn(0))}function kn(e,t){var n=function(n){e.prototype[n]=t[n]};return Object.keys(t).forEach(n),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(t).forEach(n),e}Tn[wn]=!0,Tn.withMutations=qe.withMutations,Tn.asMutable=qe.asMutable,Tn.asImmutable=qe.asImmutable,Tn.wasAltered=qe.wasAltered,n.Iterator=U,kn(n,{toArray:function(){Fe(this.size);var e=new Array(this.size||0);return this.valueSeq().__iterate(function(t,n){e[n]=t}),e},toIndexedSeq:function(){return new Pt(this)},toJS:function(){return this.toSeq().map(function(e){return e&&"function"==typeof e.toJS?e.toJS():e}).__toJS()},toJSON:function(){return this.toSeq().map(function(e){return e&&"function"==typeof e.toJSON?e.toJSON():e}).__toJS()},toKeyedSeq:function(){return new Mt(this,!0)},toMap:function(){return Ue(this.toKeyedSeq())},toObject:function(){Fe(this.size);var e={};return this.__iterate(function(t,n){e[n]=t}),e},toOrderedMap:function(){return kt(this.toKeyedSeq())},toOrderedSet:function(){return _n(s(this)?this.valueSeq():this)},toSet:function(){return ln(s(this)?this.valueSeq():this)},toSetSeq:function(){return new Lt(this)},toSeq:function(){return l(this)?this.toIndexedSeq():s(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return Cn(s(this)?this.valueSeq():this)},toList:function(){return dt(s(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(e,t){return 0===this.size?e+t:e+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+t},concat:function(){var t=e.call(arguments,0);return $t(this,function(e,t){var n=s(e),o=[e].concat(t).map(function(e){return a(e)?n&&(e=r(e)):e=n?ae(e):se(Array.isArray(e)?e:[e]),e}).filter(function(e){return 0!==e.size});if(0===o.length)return e;if(1===o.length){var i=o[0];if(i===e||n&&s(i)||l(e)&&l(i))return i}var u=new ee(o);return n?u=u.toKeyedSeq():l(e)||(u=u.toSetSeq()),(u=u.flatten(!0)).size=o.reduce(function(e,t){if(void 0!==e){var n=t.size;if(void 0!==n)return e+n}},0),u}(this,t))},includes:function(e){return this.some(function(t){return me(t,e)})},entries:function(){return this.__iterator(M)},every:function(e,t){Fe(this.size);var n=!0;return this.__iterate(function(r,o,i){if(!e.call(t,r,o,i))return n=!1,!1}),n},filter:function(e,t){return $t(this,Gt(this,e,t,!0))},find:function(e,t,n){var r=this.findEntry(e,t);return r?r[1]:n},findEntry:function(e,t){var n;return this.__iterate(function(r,o,i){if(e.call(t,r,o,i))return n=[o,r],!1}),n},findLastEntry:function(e,t){return this.toSeq().reverse().findEntry(e,t)},forEach:function(e,t){return Fe(this.size),this.__iterate(t?e.bind(t):e)},join:function(e){Fe(this.size),e=void 0!==e?""+e:",";var t="",n=!0;return this.__iterate(function(r){n?n=!1:t+=e,t+=null!==r&&void 0!==r?r.toString():""}),t},keys:function(){return this.__iterator(O)},map:function(e,t){return $t(this,jt(this,e,t))},reduce:function(e,t,n){var r,o;return Fe(this.size),arguments.length<2?o=!0:r=t,this.__iterate(function(t,i,a){o?(o=!1,r=t):r=e.call(n,r,t,i,a)}),r},reduceRight:function(e,t,n){var r=this.toKeyedSeq().reverse();return r.reduce.apply(r,arguments)},reverse:function(){return $t(this,Bt(this,!0))},slice:function(e,t){return $t(this,qt(this,e,t,!0))},some:function(e,t){return!this.every(Mn(e),t)},sort:function(e){return $t(this,Yt(this,e))},values:function(){return this.__iterator(A)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some(function(){return!0})},count:function(e,t){return w(e?this.toSeq().filter(e,t):this)},countBy:function(e,t){return function(e,t,n){var r=Ue().asMutable();return e.__iterate(function(o,i){r.update(t.call(n,o,i,e),0,function(e){return e+1})}),r.asImmutable()}(this,e,t)},equals:function(e){return he(this,e)},entrySeq:function(){var e=this;if(e._cache)return new ee(e._cache);var t=e.toSeq().map(An).toIndexedSeq();return t.fromEntrySeq=function(){return e.toSeq()},t},filterNot:function(e,t){return this.filter(Mn(e),t)},findLast:function(e,t,n){return this.toKeyedSeq().reverse().find(e,t,n)},first:function(){return this.find(x)},flatMap:function(e,t){return $t(this,function(e,t,n){var r=Jt(e);return e.toSeq().map(function(o,i){return r(t.call(n,o,i,e))}).flatten(!0)}(this,e,t))},flatten:function(e){return $t(this,Ht(this,e,!0))},fromEntrySeq:function(){return new Ft(this)},get:function(e,t){return this.find(function(t,n){return me(n,e)},void 0,t)},getIn:function(e,t){for(var n,r=this,o=nn(e);!(n=o.next()).done;){var i=n.value;if((r=r&&r.get?r.get(i,v):v)===v)return t}return r},groupBy:function(e,t){return function(e,t,n){var r=s(e),o=(c(e)?kt():Ue()).asMutable();e.__iterate(function(i,a){o.update(t.call(n,i,a,e),function(e){return(e=e||[]).push(r?[a,i]:i),e})});var i=Jt(e);return o.map(function(t){return $t(e,i(t))})}(this,e,t)},has:function(e){return this.get(e,v)!==v},hasIn:function(e){return this.getIn(e,v)!==v},isSubset:function(e){return e="function"==typeof e.includes?e:n(e),this.every(function(t){return e.includes(t)})},isSuperset:function(e){return(e="function"==typeof e.isSubset?e:n(e)).isSubset(this)},keySeq:function(){return this.toSeq().map(On).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},max:function(e){return zt(this,e)},maxBy:function(e,t){return zt(this,t,e)},min:function(e){return zt(this,e?Pn(e):Un)},minBy:function(e,t){return zt(this,t?Pn(t):Un,e)},rest:function(){return this.slice(1)},skip:function(e){return this.slice(Math.max(0,e))},skipLast:function(e){return $t(this,this.toSeq().reverse().skip(e).reverse())},skipWhile:function(e,t){return $t(this,Vt(this,e,t,!0))},skipUntil:function(e,t){return this.skipWhile(Mn(e),t)},sortBy:function(e,t){return $t(this,Yt(this,t,e))},take:function(e){return this.slice(0,Math.max(0,e))},takeLast:function(e){return $t(this,this.toSeq().reverse().take(e).reverse())},takeWhile:function(e,t){return $t(this,function(e,t,n){var r=Zt(e);return r.__iterateUncached=function(r,o){var i=this;if(o)return this.cacheResult().__iterate(r,o);var a=0;return e.__iterate(function(e,o,s){return t.call(n,e,o,s)&&++a&&r(e,o,i)}),a},r.__iteratorUncached=function(r,o){var i=this;if(o)return this.cacheResult().__iterator(r,o);var a=e.__iterator(M,o),s=!0;return new U(function(){if(!s)return{value:void 0,done:!0};var e=a.next();if(e.done)return e;var o=e.value,l=o[0],u=o[1];return t.call(n,u,l,i)?r===M?e:j(r,l,u,e):(s=!1,{value:void 0,done:!0})})},r}(this,e,t))},takeUntil:function(e,t){return this.takeWhile(Mn(e),t)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=function(e){if(e.size===1/0)return 0;var t=c(e),n=s(e),r=t?1:0;return function(e,t){return t=Se(t,3432918353),t=Se(t<<15|t>>>-15,461845907),t=Se(t<<13|t>>>-13,5),t=Se((t=(t+3864292196|0)^e)^t>>>16,2246822507),t=De((t=Se(t^t>>>13,3266489909))^t>>>16)}(e.__iterate(n?t?function(e,t){r=31*r+jn(we(e),we(t))|0}:function(e,t){r=r+jn(we(e),we(t))|0}:t?function(e){r=31*r+we(e)|0}:function(e){r=r+we(e)|0}),r)}(this))}});var Nn=n.prototype;Nn[f]=!0,Nn[F]=Nn.values,Nn.__toJS=Nn.toArray,Nn.__toStringMapper=Ln,Nn.inspect=Nn.toSource=function(){return this.toString()},Nn.chain=Nn.flatMap,Nn.contains=Nn.includes,function(){try{Object.defineProperty(Nn,"length",{get:function(){if(!n.noLengthWarning){var e;try{throw new Error}catch(t){e=t.stack}if(-1===e.indexOf("_wrapObject"))return console&&console.warn&&console.warn("iterable.length has been deprecated, use iterable.size or iterable.count(). This warning will become a silent error in a future version. "+e),this.size}}})}catch(e){}}(),kn(r,{flip:function(){return $t(this,Ut(this))},findKey:function(e,t){var n=this.findEntry(e,t);return n&&n[0]},findLastKey:function(e,t){return this.toSeq().reverse().findKey(e,t)},keyOf:function(e){return this.findKey(function(t){return me(t,e)})},lastKeyOf:function(e){return this.findLastKey(function(t){return me(t,e)})},mapEntries:function(e,t){var n=this,r=0;return $t(this,this.toSeq().map(function(o,i){return e.call(t,[i,o],r++,n)}).fromEntrySeq())},mapKeys:function(e,t){var n=this;return $t(this,this.toSeq().flip().map(function(r,o){return e.call(t,r,o,n)}).flip())}});var In=r.prototype;function On(e,t){return t}function An(e,t){return[t,e]}function Mn(e){return function(){return!e.apply(this,arguments)}}function Pn(e){return function(){return-e.apply(this,arguments)}}function Ln(e){return"string"==typeof e?JSON.stringify(e):e}function Fn(){return D(arguments)}function Un(e,t){return e<t?1:e>t?-1:0}function jn(e,t){return e^t+2654435769+(e<<6)+(e>>2)|0}return In[d]=!0,In[F]=Nn.entries,In.__toJS=Nn.toObject,In.__toStringMapper=function(e,t){return JSON.stringify(t)+": "+Ln(e)},kn(o,{toKeyedSeq:function(){return new Mt(this,!1)},filter:function(e,t){return $t(this,Gt(this,e,t,!1))},findIndex:function(e,t){var n=this.findEntry(e,t);return n?n[0]:-1},indexOf:function(e){var t=this.toKeyedSeq().keyOf(e);return void 0===t?-1:t},lastIndexOf:function(e){var t=this.toKeyedSeq().reverse().keyOf(e);return void 0===t?-1:t},reverse:function(){return $t(this,Bt(this,!1))},slice:function(e,t){return $t(this,qt(this,e,t,!1))},splice:function(e,t){var n=arguments.length;if(t=Math.max(0|t,0),0===n||2===n&&!t)return this;e=k(e,e<0?this.count():this.size);var r=this.slice(0,e);return $t(this,1===n?r:r.concat(D(arguments,2),this.slice(e+t)))},findLastIndex:function(e,t){var n=this.toKeyedSeq().findLastKey(e,t);return void 0===n?-1:n},first:function(){return this.get(0)},flatten:function(e){return $t(this,Ht(this,e,!1))},get:function(e,t){return(e=T(this,e))<0||this.size===1/0||void 0!==this.size&&e>this.size?t:this.find(function(t,n){return n===e},void 0,t)},has:function(e){return(e=T(this,e))>=0&&(void 0!==this.size?this.size===1/0||e<this.size:-1!==this.indexOf(e))},interpose:function(e){return $t(this,function(e,t){var n=Zt(e);return n.size=e.size&&2*e.size-1,n.__iterateUncached=function(n,r){var o=this,i=0;return e.__iterate(function(e,r){return(!i||!1!==n(t,i++,o))&&!1!==n(e,i++,o)},r),i},n.__iteratorUncached=function(n,r){var o,i=e.__iterator(A,r),a=0;return new U(function(){return(!o||a%2)&&(o=i.next()).done?o:a%2?j(n,a++,t):j(n,a++,o.value,o)})},n}(this,e))},interleave:function(){var e=[this].concat(D(arguments)),t=Kt(this.toSeq(),K.of,e),n=t.flatten(!0);return t.size&&(n.size=t.size*e.length),$t(this,n)},last:function(){return this.get(-1)},skipWhile:function(e,t){return $t(this,Vt(this,e,t,!1))},zip:function(){return $t(this,Kt(this,Fn,[this].concat(D(arguments))))},zipWith:function(e){var t=D(arguments);return t[0]=this,$t(this,Kt(this,e,t))}}),o.prototype[p]=!0,o.prototype[m]=!0,kn(i,{get:function(e,t){return this.has(e)?e:t},includes:function(e){return this.has(e)},keySeq:function(){return this.valueSeq()}}),i.prototype.has=Nn.includes,kn(W,r.prototype),kn(K,o.prototype),kn($,i.prototype),kn(be,r.prototype),kn(Ee,o.prototype),kn(Ce,i.prototype),{Iterable:n,Seq:z,Collection:ye,Map:Ue,OrderedMap:kt,List:dt,Stack:Cn,Set:ln,OrderedSet:_n,Record:rn,Range:ve,Repeat:_e,is:me,fromJS:fe}}()},function(e,t,n){var r=n(28),o=n(105),i=n(73),a=n(74),s=n(91),l=function(e,t,n){var u,c,f,d,p=e&l.F,m=e&l.G,h=e&l.S,_=e&l.P,g=e&l.B,v=m?r:h?r[t]||(r[t]={}):(r[t]||{}).prototype,y=m?o:o[t]||(o[t]={}),b=y.prototype||(y.prototype={});for(u in m&&(n=t),n)f=((c=!p&&v&&void 0!==v[u])?v:n)[u],d=g&&c?s(f,r):_&&"function"==typeof f?s(Function.call,f):f,v&&a(v,u,f,e&l.U),y[u]!=f&&i(y,u,d),_&&b[u]!=f&&(b[u]=f)};r.core=o,l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},function(e,t,n){"use strict";(function(r){Object.defineProperty(t,"__esModule",{value:!0});var o=_(n(19)),i=n(9),a=_(n(4)),s=_(n(5)),l=_(n(17)),u=_(n(29)),c=_(n(172)),f=_(n(406)),d=_(n(594)),p=_(n(22)),m=_(n(1153)),h=n(1154);function _(e){return e&&e.__esModule?e:{default:e}}var g=function(){function e(){(0,a.default)(this,e),this.matrixClient=null,this.opts={initialSyncLimit:20},this._currentClientCreds=null}return(0,s.default)(e,[{key:"setIndexedDbWorkerScript",value:function(e){d.default.indexedDbWorkerScript=e}},{key:"get",value:function(){return this.matrixClient}},{key:"unset",value:function(){this.matrixClient=null,m.default.stop()}},{key:"replaceUsingCreds",value:function(e){this._currentClientCreds=e,this._createClient(e)}},{key:"start",value:function(){var e=(0,i.coroutine)(o.default.mark(function e(){var t,n,a,s,c,f,d;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:t=["indexeddb","memory"],n=0;case 2:if(!(n<t.length)){e.next=24;break}return a=t[n],e.prev=4,s=this.matrixClient.store.startup(),console.log("MatrixClientPeg: waiting for MatrixClient store to initialise"),e.next=9,(0,i.resolve)(s);case 9:return e.abrupt("break",24);case 12:if(e.prev=12,e.t0=e.catch(4),"indexeddb"!==a){e.next=19;break}console.error("Error starting matrixclient store - falling back to memory store",e.t0),this.matrixClient.store=new l.default.MatrixInMemoryStore({localStorage:r.localStorage}),e.next=21;break;case 19:throw console.error("Failed to start memory store!",e.t0),e.t0;case 21:n++,e.next=2;break;case 24:if(e.prev=24,!this.matrixClient.initCrypto){e.next=28;break}return e.next=28,(0,i.resolve)(this.matrixClient.initCrypto());case 28:e.next=33;break;case 30:e.prev=30,e.t1=e.catch(24),console.warn("Unable to initialise e2e: "+e.t1);case 33:return(c=u.default.deepCopy(this.opts)).pendingEventOrdering="detached",f="feature_lazyloading",p.default.isFeatureEnabled(f)&&(d=this.matrixClient.credentials.userId,(0,h.phasedRollOutExpiredForUser)(d,f,Date.now())&&(c.lazyLoadMembers=!0)),m.default.start(this.matrixClient),console.log("MatrixClientPeg: really starting MatrixClient"),e.next=41,(0,i.resolve)(this.get().startClient(c));case 41:console.log("MatrixClientPeg: MatrixClient started");case 42:case"end":return e.stop()}},e,this,[[4,12],[24,30]])}));return function(){return e.apply(this,arguments)}}()},{key:"getCredentials",value:function(){return{homeserverUrl:this.matrixClient.baseUrl,identityServerUrl:this.matrixClient.idBaseUrl,userId:this.matrixClient.credentials.userId,deviceId:this.matrixClient.getDeviceId(),accessToken:this.matrixClient.getAccessToken(),guest:this.matrixClient.isGuest()}}},{key:"getHomeServerName",value:function(){var e=/^@.+:(.+)$/.exec(this.matrixClient.credentials.userId);if(null===e||e.length<1)throw new Error("Failed to derive home server name from user ID!");return e[1]}},{key:"_createClient",value:function(e,t){var n={baseUrl:e.homeserverUrl,idBaseUrl:e.identityServerUrl,accessToken:e.accessToken,userId:e.userId,deviceId:e.deviceId,timelineSupport:!0,forceTURN:p.default.getValue("webRtcForceTURN",!1)};this.matrixClient=(0,d.default)(n,t),this.matrixClient.setMaxListeners(500),this.matrixClient.setGuest(Boolean(e.guest));var r=new f.default(null,{timelineSupport:!0});r.getLiveTimeline().setPaginationToken("",c.default.BACKWARDS),this.matrixClient.setNotifTimelineSet(r)}}]),e}();r.mxMatrixClientPeg||(r.mxMatrixClientPeg=new g),t.default=r.mxMatrixClientPeg,e.exports=t.default}).call(this,n(15))},function(e,t,n){(function(t,n,r){e.exports=function(){var e,o,i;return function e(t,n,r){function o(a,s){if(!n[a]){if(!t[a]){var l="function"==typeof _dereq_&&_dereq_;if(!s&&l)return l(a,!0);if(i)return i(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var c=n[a]={exports:{}};t[a][0].call(c.exports,function(e){var n=t[a][1][e];return o(n||e)},c,c.exports,e,t,n,r)}return n[a].exports}for(var i="function"==typeof _dereq_&&_dereq_,a=0;a<r.length;a++)o(r[a]);return o}({1:[function(e,t,n){"use strict";t.exports=function(e){var t=e._SomePromiseArray;function n(e){var n=new t(e),r=n.promise();return n.setHowMany(1),n.setUnwrap(),n.init(),r}e.any=function(e){return n(e)},e.prototype.any=function(){return n(this)}}},{}],2:[function(e,n,r){"use strict";var o;try{throw new Error}catch(e){o=e}var i=e("./schedule"),a=e("./queue"),s=e("./util");function l(){this._customScheduler=!1,this._isTickUsed=!1,this._lateQueue=new a(16),this._normalQueue=new a(16),this._haveDrainedQueues=!1,this._trampolineEnabled=!0;var e=this;this.drainQueues=function(){e._drainQueues()},this._schedule=i}function u(e,t,n){this._lateQueue.push(e,t,n),this._queueTick()}function c(e,t,n){this._normalQueue.push(e,t,n),this._queueTick()}function f(e){this._normalQueue._pushOne(e),this._queueTick()}function d(e){for(;e.length()>0;)p(e)}function p(e){var t=e.shift();if("function"!=typeof t)t._settlePromises();else{var n=e.shift(),r=e.shift();t.call(n,r)}}l.prototype.setScheduler=function(e){var t=this._schedule;return this._schedule=e,this._customScheduler=!0,t},l.prototype.hasCustomScheduler=function(){return this._customScheduler},l.prototype.enableTrampoline=function(){this._trampolineEnabled=!0},l.prototype.disableTrampolineIfNecessary=function(){s.hasDevTools&&(this._trampolineEnabled=!1)},l.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues},l.prototype.fatalError=function(e,n){n?(t.stderr.write("Fatal "+(e instanceof Error?e.stack:e)+"\n"),t.exit(2)):this.throwLater(e)},l.prototype.throwLater=function(e,t){if(1===arguments.length&&(t=e,e=function(){throw t}),"undefined"!=typeof setTimeout)setTimeout(function(){e(t)},0);else try{this._schedule(function(){e(t)})}catch(e){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}},s.hasDevTools?(l.prototype.invokeLater=function(e,t,n){this._trampolineEnabled?u.call(this,e,t,n):this._schedule(function(){setTimeout(function(){e.call(t,n)},100)})},l.prototype.invoke=function(e,t,n){this._trampolineEnabled?c.call(this,e,t,n):this._schedule(function(){e.call(t,n)})},l.prototype.settlePromises=function(e){this._trampolineEnabled?f.call(this,e):this._schedule(function(){e._settlePromises()})}):(l.prototype.invokeLater=u,l.prototype.invoke=c,l.prototype.settlePromises=f),l.prototype._drainQueues=function(){d(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,d(this._lateQueue)},l.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},l.prototype._reset=function(){this._isTickUsed=!1},n.exports=l,n.exports.firstLineError=o},{"./queue":26,"./schedule":29,"./util":36}],3:[function(e,t,n){"use strict";t.exports=function(e,t,n,r){var o=!1,i=function(e,t){this._reject(t)},a=function(e,t){t.promiseRejectionQueued=!0,t.bindingPromise._then(i,i,null,this,e)},s=function(e,t){0==(50397184&this._bitField)&&this._resolveCallback(t.target)},l=function(e,t){t.promiseRejectionQueued||this._reject(e)};e.prototype.bind=function(i){o||(o=!0,e.prototype._propagateFrom=r.propagateFromFunction(),e.prototype._boundValue=r.boundValueFunction());var u=n(i),c=new e(t);c._propagateFrom(this,1);var f=this._target();if(c._setBoundTo(u),u instanceof e){var d={promiseRejectionQueued:!1,promise:c,target:f,bindingPromise:u};f._then(t,a,void 0,c,d),u._then(s,l,void 0,c,d),c._setOnCancel(u)}else c._resolveCallback(f);return c},e.prototype._setBoundTo=function(e){void 0!==e?(this._bitField=2097152|this._bitField,this._boundTo=e):this._bitField=-2097153&this._bitField},e.prototype._isBound=function(){return 2097152==(2097152&this._bitField)},e.bind=function(t,n){return e.resolve(n).bind(t)}}},{}],4:[function(e,t,n){"use strict";var r;"undefined"!=typeof Promise&&(r=Promise);var o=e("./promise")();o.noConflict=function(){try{Promise===o&&(Promise=r)}catch(e){}return o},t.exports=o},{"./promise":22}],5:[function(e,t,n){"use strict";var r=Object.create;if(r){var o=r(null),i=r(null);o[" size"]=i[" size"]=0}t.exports=function(t){var n=e("./util"),r=n.canEvaluate;function o(e){var r=this.pop(),o=function(e,r){var o;if(null!=e&&(o=e[r]),"function"!=typeof o){var i="Object "+n.classString(e)+" has no method '"+n.toString(r)+"'";throw new t.TypeError(i)}return o}(e,r);return o.apply(e,this)}function i(e){return e[this]}function a(e){var t=+this;return t<0&&(t=Math.max(0,t+e.length)),e[t]}n.isIdentifier,t.prototype.call=function(e){var t=[].slice.call(arguments,1);return t.push(e),this._then(o,void 0,void 0,t,void 0)},t.prototype.get=function(e){var t,n="number"==typeof e;if(n)t=a;else if(r){var o=(void 0)(e);t=null!==o?o:i}else t=i;return this._then(t,void 0,void 0,e,void 0)}}},{"./util":36}],6:[function(e,t,n){"use strict";t.exports=function(t,n,r,o){var i=e("./util"),a=i.tryCatch,s=i.errorObj,l=t._async;t.prototype.break=t.prototype.cancel=function(){if(!o.cancellation())return this._warn("cancellation is disabled");for(var e=this,t=e;e._isCancellable();){if(!e._cancelBy(t)){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}var n=e._cancellationParent;if(null==n||!n._isCancellable()){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}e._isFollowing()&&e._followee().cancel(),e._setWillBeCancelled(),t=e,e=n}},t.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},t.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},t.prototype._cancelBy=function(e){return e===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},t.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},t.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),l.invoke(this._cancelPromises,this,void 0))},t.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},t.prototype._unsetOnCancel=function(){this._onCancelField=void 0},t.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},t.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},t.prototype._doInvokeOnCancel=function(e,t){if(i.isArray(e))for(var n=0;n<e.length;++n)this._doInvokeOnCancel(e[n],t);else if(void 0!==e)if("function"==typeof e){if(!t){var r=a(e).call(this._boundValue());r===s&&(this._attachExtraTrace(r.e),l.throwLater(r.e))}}else e._resultCancelled(this)},t.prototype._invokeOnCancel=function(){var e=this._onCancel();this._unsetOnCancel(),l.invoke(this._doInvokeOnCancel,this,e)},t.prototype._invokeInternalOnCancel=function(){this._isCancellable()&&(this._doInvokeOnCancel(this._onCancel(),!0),this._unsetOnCancel())},t.prototype._resultCancelled=function(){this.cancel()}}},{"./util":36}],7:[function(e,t,n){"use strict";t.exports=function(t){var n=e("./util"),r=e("./es5").keys,o=n.tryCatch,i=n.errorObj;return function(e,a,s){return function(l){var u=s._boundValue();e:for(var c=0;c<e.length;++c){var f=e[c];if(f===Error||null!=f&&f.prototype instanceof Error){if(l instanceof f)return o(a).call(u,l)}else if("function"==typeof f){var d=o(f).call(u,l);if(d===i)return d;if(d)return o(a).call(u,l)}else if(n.isObject(l)){for(var p=r(f),m=0;m<p.length;++m){var h=p[m];if(f[h]!=l[h])continue e}return o(a).call(u,l)}}return t}}}},{"./es5":13,"./util":36}],8:[function(e,t,n){"use strict";t.exports=function(e){var t=!1,n=[];function r(){this._trace=new r.CapturedTrace(o())}function o(){var e=n.length-1;if(e>=0)return n[e]}return e.prototype._promiseCreated=function(){},e.prototype._pushContext=function(){},e.prototype._popContext=function(){return null},e._peekContext=e.prototype._peekContext=function(){},r.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,n.push(this._trace))},r.prototype._popContext=function(){if(void 0!==this._trace){var e=n.pop(),t=e._promiseCreated;return e._promiseCreated=null,t}return null},r.CapturedTrace=null,r.create=function(){if(t)return new r},r.deactivateLongStackTraces=function(){},r.activateLongStackTraces=function(){var n=e.prototype._pushContext,i=e.prototype._popContext,a=e._peekContext,s=e.prototype._peekContext,l=e.prototype._promiseCreated;r.deactivateLongStackTraces=function(){e.prototype._pushContext=n,e.prototype._popContext=i,e._peekContext=a,e.prototype._peekContext=s,e.prototype._promiseCreated=l,t=!1},t=!0,e.prototype._pushContext=r.prototype._pushContext,e.prototype._popContext=r.prototype._popContext,e._peekContext=e.prototype._peekContext=o,e.prototype._promiseCreated=function(){var e=this._peekContext();e&&null==e._promiseCreated&&(e._promiseCreated=this)}},r}},{}],9:[function(e,n,r){"use strict";n.exports=function(n,r){var o,i,a,s=n._getDomain,l=n._async,u=e("./errors").Warning,c=e("./util"),f=e("./es5"),d=c.canAttachTrace,p=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,m=/\((?:timers\.js):\d+:\d+\)/,h=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,_=null,g=null,v=!1,y=!(0==c.env("BLUEBIRD_DEBUG")),b=!(0==c.env("BLUEBIRD_WARNINGS")||!y&&!c.env("BLUEBIRD_WARNINGS")),E=!(0==c.env("BLUEBIRD_LONG_STACK_TRACES")||!y&&!c.env("BLUEBIRD_LONG_STACK_TRACES")),C=0!=c.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(b||!!c.env("BLUEBIRD_W_FORGOTTEN_RETURN"));n.prototype.suppressUnhandledRejections=function(){var e=this._target();e._bitField=-1048577&e._bitField|524288},n.prototype._ensurePossibleRejectionHandled=function(){if(0==(524288&this._bitField)){this._setRejectionIsUnhandled();var e=this;setTimeout(function(){e._notifyUnhandledRejection()},1)}},n.prototype._notifyUnhandledRejectionIsHandled=function(){Y("rejectionHandled",o,void 0,this)},n.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},n.prototype._returnedNonUndefined=function(){return 0!=(268435456&this._bitField)},n.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var e=this._settledValue();this._setUnhandledRejectionIsNotified(),Y("unhandledRejection",i,e,this)}},n.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},n.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},n.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},n.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},n.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},n.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},n.prototype._warn=function(e,t,n){return G(e,t,n||this)},n.onPossiblyUnhandledRejection=function(e){var t=s();i="function"==typeof e?null===t?e:c.domainBind(t,e):void 0},n.onUnhandledRejectionHandled=function(e){var t=s();o="function"==typeof e?null===t?e:c.domainBind(t,e):void 0};var S=function(){};n.longStackTraces=function(){if(l.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!Z.longStackTraces&&W()){var e=n.prototype._captureStackTrace,t=n.prototype._attachExtraTrace,o=n.prototype._dereferenceTrace;Z.longStackTraces=!0,S=function(){if(l.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");n.prototype._captureStackTrace=e,n.prototype._attachExtraTrace=t,n.prototype._dereferenceTrace=o,r.deactivateLongStackTraces(),l.enableTrampoline(),Z.longStackTraces=!1},n.prototype._captureStackTrace=U,n.prototype._attachExtraTrace=j,n.prototype._dereferenceTrace=B,r.activateLongStackTraces(),l.disableTrampolineIfNecessary()}},n.hasLongStackTraces=function(){return Z.longStackTraces&&W()};var D=function(){try{if("function"==typeof CustomEvent){var e=new CustomEvent("CustomEvent");return c.global.dispatchEvent(e),function(e,t){var n={detail:t,cancelable:!0};f.defineProperty(n,"promise",{value:t.promise}),f.defineProperty(n,"reason",{value:t.reason});var r=new CustomEvent(e.toLowerCase(),n);return!c.global.dispatchEvent(r)}}if("function"==typeof Event){var e=new Event("CustomEvent");return c.global.dispatchEvent(e),function(e,t){var n=new Event(e.toLowerCase(),{cancelable:!0});return n.detail=t,f.defineProperty(n,"promise",{value:t.promise}),f.defineProperty(n,"reason",{value:t.reason}),!c.global.dispatchEvent(n)}}var e=document.createEvent("CustomEvent");return e.initCustomEvent("testingtheevent",!1,!0,{}),c.global.dispatchEvent(e),function(e,t){var n=document.createEvent("CustomEvent");return n.initCustomEvent(e.toLowerCase(),!1,!0,t),!c.global.dispatchEvent(n)}}catch(e){}return function(){return!1}}(),w=c.isNode?function(){return t.emit.apply(t,arguments)}:c.global?function(e){var t="on"+e.toLowerCase(),n=c.global[t];return!!n&&(n.apply(c.global,[].slice.call(arguments,1)),!0)}:function(){return!1};function T(e,t){return{promise:t}}var x={promiseCreated:T,promiseFulfilled:T,promiseRejected:T,promiseResolved:T,promiseCancelled:T,promiseChained:function(e,t,n){return{promise:t,child:n}},warning:function(e,t){return{warning:t}},unhandledRejection:function(e,t,n){return{reason:t,promise:n}},rejectionHandled:T},R=function(e){var t=!1;try{t=w.apply(null,arguments)}catch(e){l.throwLater(e),t=!0}var n=!1;try{n=D(e,x[e].apply(null,arguments))}catch(e){l.throwLater(e),n=!0}return n||t};function k(){return!1}function N(e,t,n){var r=this;try{e(t,n,function(e){if("function"!=typeof e)throw new TypeError("onCancel must be a function, got: "+c.toString(e));r._attachCancellationCallback(e)})}catch(e){return e}}function I(e){if(!this._isCancellable())return this;var t=this._onCancel();void 0!==t?c.isArray(t)?t.push(e):this._setOnCancel([t,e]):this._setOnCancel(e)}function O(){return this._onCancelField}function A(e){this._onCancelField=e}function M(){this._cancellationParent=void 0,this._onCancelField=void 0}function P(e,t){if(0!=(1&t)){this._cancellationParent=e;var n=e._branchesRemainingToCancel;void 0===n&&(n=0),e._branchesRemainingToCancel=n+1}0!=(2&t)&&e._isBound()&&this._setBoundTo(e._boundTo)}n.config=function(e){if("longStackTraces"in(e=Object(e))&&(e.longStackTraces?n.longStackTraces():!e.longStackTraces&&n.hasLongStackTraces()&&S()),"warnings"in e){var t=e.warnings;Z.warnings=!!t,C=Z.warnings,c.isObject(t)&&"wForgottenReturn"in t&&(C=!!t.wForgottenReturn)}if("cancellation"in e&&e.cancellation&&!Z.cancellation){if(l.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");n.prototype._clearCancellationData=M,n.prototype._propagateFrom=P,n.prototype._onCancel=O,n.prototype._setOnCancel=A,n.prototype._attachCancellationCallback=I,n.prototype._execute=N,L=P,Z.cancellation=!0}return"monitoring"in e&&(e.monitoring&&!Z.monitoring?(Z.monitoring=!0,n.prototype._fireEvent=R):!e.monitoring&&Z.monitoring&&(Z.monitoring=!1,n.prototype._fireEvent=k)),n},n.prototype._fireEvent=k,n.prototype._execute=function(e,t,n){try{e(t,n)}catch(e){return e}},n.prototype._onCancel=function(){},n.prototype._setOnCancel=function(e){},n.prototype._attachCancellationCallback=function(e){},n.prototype._captureStackTrace=function(){},n.prototype._attachExtraTrace=function(){},n.prototype._dereferenceTrace=function(){},n.prototype._clearCancellationData=function(){},n.prototype._propagateFrom=function(e,t){};var L=function(e,t){0!=(2&t)&&e._isBound()&&this._setBoundTo(e._boundTo)};function F(){var e=this._boundTo;return void 0!==e&&e instanceof n?e.isFulfilled()?e.value():void 0:e}function U(){this._trace=new X(this._peekContext())}function j(e,t){if(d(e)){var n=this._trace;if(void 0!==n&&t&&(n=n._parent),void 0!==n)n.attachExtraTrace(e);else if(!e.__stackCleaned__){var r=V(e);c.notEnumerableProp(e,"stack",r.message+"\n"+r.stack.join("\n")),c.notEnumerableProp(e,"__stackCleaned__",!0)}}}function B(){this._trace=void 0}function G(e,t,r){if(Z.warnings){var o,i=new u(e);if(t)r._attachExtraTrace(i);else if(Z.longStackTraces&&(o=n._peekContext()))o.attachExtraTrace(i);else{var a=V(i);i.stack=a.message+"\n"+a.stack.join("\n")}R("warning",i)||H(i,"",!0)}}function q(e){for(var t=[],n=0;n<e.length;++n){var r=e[n],o=" (No stack trace)"===r||_.test(r),i=o&&K(r);o&&!i&&(v&&" "!==r.charAt(0)&&(r=" "+r),t.push(r))}return t}function V(e){var t=e.stack,n=e.toString();return t="string"==typeof t&&t.length>0?function(e){for(var t=e.stack.replace(/\s+$/g,"").split("\n"),n=0;n<t.length;++n){var r=t[n];if(" (No stack trace)"===r||_.test(r))break}return n>0&&"SyntaxError"!=e.name&&(t=t.slice(n)),t}(e):[" (No stack trace)"],{message:n,stack:"SyntaxError"==e.name?t:q(t)}}function H(e,t,n){if("undefined"!=typeof console){var r;if(c.isObject(e)){var o=e.stack;r=t+g(o,e)}else r=t+String(e);"function"==typeof a?a(r,n):"function"!=typeof console.log&&"object"!=typeof console.log||console.log(r)}}function Y(e,t,n,r){var o=!1;try{"function"==typeof t&&(o=!0,"rejectionHandled"===e?t(r):t(n,r))}catch(e){l.throwLater(e)}"unhandledRejection"===e?R(e,n,r)||o||H(n,"Unhandled rejection "):R(e,r)}function z(e){var t;if("function"==typeof e)t="[function "+(e.name||"anonymous")+"]";else{if(t=e&&"function"==typeof e.toString?e.toString():c.toString(e),/\[object [a-zA-Z0-9$_]+\]/.test(t))try{var n=JSON.stringify(e);t=n}catch(e){}0===t.length&&(t="(empty array)")}return"(<"+function(e){return e.length<41?e:e.substr(0,38)+"..."}(t)+">, no stack trace)"}function W(){return"function"==typeof J}var K=function(){return!1},$=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function Q(e){var t=e.match($);if(t)return{fileName:t[1],line:parseInt(t[2],10)}}function X(e){this._parent=e,this._promisesCreated=0;var t=this._length=1+(void 0===e?0:e._length);J(this,X),t>32&&this.uncycle()}c.inherits(X,Error),r.CapturedTrace=X,X.prototype.uncycle=function(){var e=this._length;if(!(e<2)){for(var t=[],n={},r=0,o=this;void 0!==o;++r)t.push(o),o=o._parent;for(var r=(e=this._length=r)-1;r>=0;--r){var i=t[r].stack;void 0===n[i]&&(n[i]=r)}for(var r=0;r<e;++r){var a=t[r].stack,s=n[a];if(void 0!==s&&s!==r){s>0&&(t[s-1]._parent=void 0,t[s-1]._length=1),t[r]._parent=void 0,t[r]._length=1;var l=r>0?t[r-1]:this;s<e-1?(l._parent=t[s+1],l._parent.uncycle(),l._length=l._parent._length+1):(l._parent=void 0,l._length=1);for(var u=l._length+1,c=r-2;c>=0;--c)t[c]._length=u,u++;return}}}},X.prototype.attachExtraTrace=function(e){if(!e.__stackCleaned__){this.uncycle();for(var t=V(e),n=t.message,r=[t.stack],o=this;void 0!==o;)r.push(q(o.stack.split("\n"))),o=o._parent;!function(e){for(var t=e[0],n=1;n<e.length;++n){for(var r=e[n],o=t.length-1,i=t[o],a=-1,s=r.length-1;s>=0;--s)if(r[s]===i){a=s;break}for(var s=a;s>=0;--s){var l=r[s];if(t[o]!==l)break;t.pop(),o--}t=r}}(r),function(e){for(var t=0;t<e.length;++t)(0===e[t].length||t+1<e.length&&e[t][0]===e[t+1][0])&&(e.splice(t,1),t--)}(r),c.notEnumerableProp(e,"stack",function(e,t){for(var n=0;n<t.length-1;++n)t[n].push("From previous event:"),t[n]=t[n].join("\n");return n<t.length&&(t[n]=t[n].join("\n")),e+"\n"+t.join("\n")}(n,r)),c.notEnumerableProp(e,"__stackCleaned__",!0)}};var J=function(){var e=/^\s*at\s*/,t=function(e,t){return"string"==typeof e?e:void 0!==t.name&&void 0!==t.message?t.toString():z(t)};if("number"==typeof Error.stackTraceLimit&&"function"==typeof Error.captureStackTrace){Error.stackTraceLimit+=6,_=e,g=t;var n=Error.captureStackTrace;return K=function(e){return p.test(e)},function(e,t){Error.stackTraceLimit+=6,n(e,t),Error.stackTraceLimit-=6}}var r,o=new Error;if("string"==typeof o.stack&&o.stack.split("\n")[0].indexOf("stackDetection@")>=0)return _=/@/,g=t,v=!0,function(e){e.stack=(new Error).stack};try{throw new Error}catch(e){r="stack"in e}return"stack"in o||!r||"number"!=typeof Error.stackTraceLimit?(g=function(e,t){return"string"==typeof e?e:"object"!=typeof t&&"function"!=typeof t||void 0===t.name||void 0===t.message?z(t):t.toString()},null):(_=e,g=t,function(e){Error.stackTraceLimit+=6;try{throw new Error}catch(t){e.stack=t.stack}Error.stackTraceLimit-=6})}();"undefined"!=typeof console&&void 0!==console.warn&&(a=function(e){console.warn(e)},c.isNode&&t.stderr.isTTY?a=function(e,t){var n=t?"":"";console.warn(n+e+"\n")}:c.isNode||"string"!=typeof(new Error).stack||(a=function(e,t){console.warn("%c"+e,t?"color: darkorange":"color: red")}));var Z={warnings:b,longStackTraces:!1,cancellation:!1,monitoring:!1};return E&&n.longStackTraces(),{longStackTraces:function(){return Z.longStackTraces},warnings:function(){return Z.warnings},cancellation:function(){return Z.cancellation},monitoring:function(){return Z.monitoring},propagateFromFunction:function(){return L},boundValueFunction:function(){return F},checkForgottenReturns:function(e,t,n,r,o){if(void 0===e&&null!==t&&C){if(void 0!==o&&o._returnedNonUndefined())return;if(0==(65535&r._bitField))return;n&&(n+=" ");var i="",a="";if(t._trace){for(var s=t._trace.stack.split("\n"),l=q(s),u=l.length-1;u>=0;--u){var c=l[u];if(!m.test(c)){var f=c.match(h);f&&(i="at "+f[1]+":"+f[2]+":"+f[3]+" ");break}}if(l.length>0)for(var d=l[0],u=0;u<s.length;++u)if(s[u]===d){u>0&&(a="\n"+s[u-1]);break}}var p="a promise was created in a "+n+"handler "+i+"but was not returned from it, see http://goo.gl/rRqMUw"+a;r._warn(p,!0,t)}},setBounds:function(e,t){if(W()){for(var n,r,o=e.stack.split("\n"),i=t.stack.split("\n"),a=-1,s=-1,l=0;l<o.length;++l){var u=Q(o[l]);if(u){n=u.fileName,a=u.line;break}}for(var l=0;l<i.length;++l){var u=Q(i[l]);if(u){r=u.fileName,s=u.line;break}}a<0||s<0||!n||!r||n!==r||a>=s||(K=function(e){if(p.test(e))return!0;var t=Q(e);return!!(t&&t.fileName===n&&a<=t.line&&t.line<=s)})}},warn:G,deprecated:function(e,t){var n=e+" is deprecated and will be removed in a future version.";return t&&(n+=" Use "+t+" instead."),G(n)},CapturedTrace:X,fireDomEvent:D,fireGlobalEvent:w}}},{"./errors":12,"./es5":13,"./util":36}],10:[function(e,t,n){"use strict";t.exports=function(e){function t(){return this.value}function n(){throw this.reason}e.prototype.return=e.prototype.thenReturn=function(n){return n instanceof e&&n.suppressUnhandledRejections(),this._then(t,void 0,void 0,{value:n},void 0)},e.prototype.throw=e.prototype.thenThrow=function(e){return this._then(n,void 0,void 0,{reason:e},void 0)},e.prototype.catchThrow=function(e){if(arguments.length<=1)return this._then(void 0,n,void 0,{reason:e},void 0);var t=arguments[1];return this.caught(e,function(){throw t})},e.prototype.catchReturn=function(n){if(arguments.length<=1)return n instanceof e&&n.suppressUnhandledRejections(),this._then(void 0,t,void 0,{value:n},void 0);var r=arguments[1];return r instanceof e&&r.suppressUnhandledRejections(),this.caught(n,function(){return r})}}},{}],11:[function(e,t,n){"use strict";t.exports=function(e,t){var n=e.reduce,r=e.all;function o(){return r(this)}e.prototype.each=function(e){return n(this,e,t,0)._then(o,void 0,void 0,this,void 0)},e.prototype.mapSeries=function(e){return n(this,e,t,t)},e.each=function(e,r){return n(e,r,t,0)._then(o,void 0,void 0,e,void 0)},e.mapSeries=function(e,r){return n(e,r,t,t)}}},{}],12:[function(e,t,n){"use strict";var r,o,i=e("./es5"),a=i.freeze,s=e("./util"),l=s.inherits,u=s.notEnumerableProp;function c(e,t){function n(r){if(!(this instanceof n))return new n(r);u(this,"message","string"==typeof r?r:t),u(this,"name",e),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return l(n,Error),n}var f=c("Warning","warning"),d=c("CancellationError","cancellation error"),p=c("TimeoutError","timeout error"),m=c("AggregateError","aggregate error");try{r=TypeError,o=RangeError}catch(e){r=c("TypeError","type error"),o=c("RangeError","range error")}for(var h="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),_=0;_<h.length;++_)"function"==typeof Array.prototype[h[_]]&&(m.prototype[h[_]]=Array.prototype[h[_]]);i.defineProperty(m.prototype,"length",{value:0,configurable:!1,writable:!0,enumerable:!0}),m.prototype.isOperational=!0;var g=0;function v(e){if(!(this instanceof v))return new v(e);u(this,"name","OperationalError"),u(this,"message",e),this.cause=e,this.isOperational=!0,e instanceof Error?(u(this,"message",e.message),u(this,"stack",e.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}m.prototype.toString=function(){var e=Array(4*g+1).join(" "),t="\n"+e+"AggregateError of:\n";g++,e=Array(4*g+1).join(" ");for(var n=0;n<this.length;++n){for(var r=this[n]===this?"[Circular AggregateError]":this[n]+"",o=r.split("\n"),i=0;i<o.length;++i)o[i]=e+o[i];r=o.join("\n"),t+=r+"\n"}return g--,t},l(v,Error);var y=Error.__BluebirdErrorTypes__;y||(y=a({CancellationError:d,TimeoutError:p,OperationalError:v,RejectionError:v,AggregateError:m}),i.defineProperty(Error,"__BluebirdErrorTypes__",{value:y,writable:!1,enumerable:!1,configurable:!1})),t.exports={Error:Error,TypeError:r,RangeError:o,CancellationError:y.CancellationError,OperationalError:y.OperationalError,TimeoutError:y.TimeoutError,AggregateError:y.AggregateError,Warning:f}},{"./es5":13,"./util":36}],13:[function(e,t,n){var r=function(){"use strict";return void 0===this}();if(r)t.exports={freeze:Object.freeze,defineProperty:Object.defineProperty,getDescriptor:Object.getOwnPropertyDescriptor,keys:Object.keys,names:Object.getOwnPropertyNames,getPrototypeOf:Object.getPrototypeOf,isArray:Array.isArray,isES5:r,propertyIsWritable:function(e,t){var n=Object.getOwnPropertyDescriptor(e,t);return!(n&&!n.writable&&!n.set)}};else{var o={}.hasOwnProperty,i={}.toString,a={}.constructor.prototype,s=function(e){var t=[];for(var n in e)o.call(e,n)&&t.push(n);return t};t.exports={isArray:function(e){try{return"[object Array]"===i.call(e)}catch(e){return!1}},keys:s,names:s,defineProperty:function(e,t,n){return e[t]=n.value,e},getDescriptor:function(e,t){return{value:e[t]}},freeze:function(e){return e},getPrototypeOf:function(e){try{return Object(e).constructor.prototype}catch(e){return a}},isES5:r,propertyIsWritable:function(){return!0}}}},{}],14:[function(e,t,n){"use strict";t.exports=function(e,t){var n=e.map;e.prototype.filter=function(e,r){return n(this,e,r,t)},e.filter=function(e,r,o){return n(e,r,o,t)}}},{}],15:[function(e,t,n){"use strict";t.exports=function(t,n,r){var o=e("./util"),i=t.CancellationError,a=o.errorObj,s=e("./catch_filter")(r);function l(e,t,n){this.promise=e,this.type=t,this.handler=n,this.called=!1,this.cancelPromise=null}function u(e){this.finallyHandler=e}function c(e,t){return null!=e.cancelPromise&&(arguments.length>1?e.cancelPromise._reject(t):e.cancelPromise._cancel(),e.cancelPromise=null,!0)}function f(){return p.call(this,this.promise._target()._settledValue())}function d(e){if(!c(this,e))return a.e=e,a}function p(e){var o=this.promise,s=this.handler;if(!this.called){this.called=!0;var l=this.isFinallyHandler()?s.call(o._boundValue()):s.call(o._boundValue(),e);if(l===r)return l;if(void 0!==l){o._setReturnedNonUndefined();var p=n(l,o);if(p instanceof t){if(null!=this.cancelPromise){if(p._isCancelled()){var m=new i("late cancellation observer");return o._attachExtraTrace(m),a.e=m,a}p.isPending()&&p._attachCancellationCallback(new u(this))}return p._then(f,d,void 0,this,void 0)}}}return o.isRejected()?(c(this),a.e=e,a):(c(this),e)}return l.prototype.isFinallyHandler=function(){return 0===this.type},u.prototype._resultCancelled=function(){c(this.finallyHandler)},t.prototype._passThrough=function(e,t,n,r){return"function"!=typeof e?this.then():this._then(n,r,void 0,new l(this,t,e),void 0)},t.prototype.lastly=t.prototype.finally=function(e){return this._passThrough(e,0,p,p)},t.prototype.tap=function(e){return this._passThrough(e,1,p)},t.prototype.tapCatch=function(e){var n=arguments.length;if(1===n)return this._passThrough(e,1,void 0,p);var r,i=new Array(n-1),a=0;for(r=0;r<n-1;++r){var l=arguments[r];if(!o.isObject(l))return t.reject(new TypeError("tapCatch statement predicate: expecting an object but got "+o.classString(l)));i[a++]=l}i.length=a;var u=arguments[r];return this._passThrough(s(i,u,this),1,void 0,p)},l}},{"./catch_filter":7,"./util":36}],16:[function(e,t,n){"use strict";t.exports=function(t,n,r,o,i,a){var s=e("./errors"),l=s.TypeError,u=e("./util"),c=u.errorObj,f=u.tryCatch,d=[];function p(e,n,o,i){if(a.cancellation()){var s=new t(r),l=this._finallyPromise=new t(r);this._promise=s.lastly(function(){return l}),s._captureStackTrace(),s._setOnCancel(this)}else{var u=this._promise=new t(r);u._captureStackTrace()}this._stack=i,this._generatorFunction=e,this._receiver=n,this._generator=void 0,this._yieldHandlers="function"==typeof o?[o].concat(d):d,this._yieldedPromise=null,this._cancellationPhase=!1}u.inherits(p,i),p.prototype._isResolved=function(){return null===this._promise},p.prototype._cleanup=function(){this._promise=this._generator=null,a.cancellation()&&null!==this._finallyPromise&&(this._finallyPromise._fulfill(),this._finallyPromise=null)},p.prototype._promiseCancelled=function(){if(!this._isResolved()){var e,n=void 0!==this._generator.return;if(n)this._promise._pushContext(),e=f(this._generator.return).call(this._generator,void 0),this._promise._popContext();else{var r=new t.CancellationError("generator .return() sentinel");t.coroutine.returnSentinel=r,this._promise._attachExtraTrace(r),this._promise._pushContext(),e=f(this._generator.throw).call(this._generator,r),this._promise._popContext()}this._cancellationPhase=!0,this._yieldedPromise=null,this._continue(e)}},p.prototype._promiseFulfilled=function(e){this._yieldedPromise=null,this._promise._pushContext();var t=f(this._generator.next).call(this._generator,e);this._promise._popContext(),this._continue(t)},p.prototype._promiseRejected=function(e){this._yieldedPromise=null,this._promise._attachExtraTrace(e),this._promise._pushContext();var t=f(this._generator.throw).call(this._generator,e);this._promise._popContext(),this._continue(t)},p.prototype._resultCancelled=function(){if(this._yieldedPromise instanceof t){var e=this._yieldedPromise;this._yieldedPromise=null,e.cancel()}},p.prototype.promise=function(){return this._promise},p.prototype._run=function(){this._generator=this._generatorFunction.call(this._receiver),this._receiver=this._generatorFunction=void 0,this._promiseFulfilled(void 0)},p.prototype._continue=function(e){var n=this._promise;if(e===c)return this._cleanup(),this._cancellationPhase?n.cancel():n._rejectCallback(e.e,!1);var r=e.value;if(!0===e.done)return this._cleanup(),this._cancellationPhase?n.cancel():n._resolveCallback(r);var i=o(r,this._promise);if(i instanceof t||null!==(i=function(e,n,r){for(var i=0;i<n.length;++i){r._pushContext();var a=f(n[i])(e);if(r._popContext(),a===c){r._pushContext();var s=t.reject(c.e);return r._popContext(),s}var l=o(a,r);if(l instanceof t)return l}return null}(i,this._yieldHandlers,this._promise))){var a=(i=i._target())._bitField;0==(50397184&a)?(this._yieldedPromise=i,i._proxy(this,null)):0!=(33554432&a)?t._async.invoke(this._promiseFulfilled,this,i._value()):0!=(16777216&a)?t._async.invoke(this._promiseRejected,this,i._reason()):this._promiseCancelled()}else this._promiseRejected(new l("A value %s was yielded that could not be treated as a promise\n\n See http://goo.gl/MqrFmX\n\n".replace("%s",String(r))+"From coroutine:\n"+this._stack.split("\n").slice(1,-7).join("\n")))},t.coroutine=function(e,t){if("function"!=typeof e)throw new l("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");var n=Object(t).yieldHandler,r=p,o=(new Error).stack;return function(){var t=e.apply(this,arguments),i=new r(void 0,void 0,n,o),a=i.promise();return i._generator=t,i._promiseFulfilled(void 0),a}},t.coroutine.addYieldHandler=function(e){if("function"!=typeof e)throw new l("expecting a function but got "+u.classString(e));d.push(e)},t.spawn=function(e){if(a.deprecated("Promise.spawn()","Promise.coroutine()"),"function"!=typeof e)return n("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");var r=new p(e,this),o=r.promise();return r._run(t.spawn),o}}},{"./errors":12,"./util":36}],17:[function(e,t,n){"use strict";t.exports=function(t,n,r,o,i,a){var s=e("./util");s.canEvaluate,s.tryCatch,s.errorObj,t.join=function(){var e,t=arguments.length-1;t>0&&"function"==typeof arguments[t]&&(e=arguments[t]);var r=[].slice.call(arguments);e&&r.pop();var o=new n(r).promise();return void 0!==e?o.spread(e):o}}},{"./util":36}],18:[function(e,t,n){"use strict";t.exports=function(t,n,r,o,i,a){var s=t._getDomain,l=e("./util"),u=l.tryCatch,c=l.errorObj,f=t._async;function d(e,t,n,r){this.constructor$(e),this._promise._captureStackTrace();var o=s();this._callback=null===o?t:l.domainBind(o,t),this._preservedValues=r===i?new Array(this.length()):null,this._limit=n,this._inFlight=0,this._queue=[],f.invoke(this._asyncInit,this,void 0)}function p(e,n,o,i){if("function"!=typeof n)return r("expecting a function but got "+l.classString(n));var a=0;if(void 0!==o){if("object"!=typeof o||null===o)return t.reject(new TypeError("options argument must be an object but it is "+l.classString(o)));if("number"!=typeof o.concurrency)return t.reject(new TypeError("'concurrency' must be a number but it is "+l.classString(o.concurrency)));a=o.concurrency}return a="number"==typeof a&&isFinite(a)&&a>=1?a:0,new d(e,n,a,i).promise()}l.inherits(d,n),d.prototype._asyncInit=function(){this._init$(void 0,-2)},d.prototype._init=function(){},d.prototype._promiseFulfilled=function(e,n){var r=this._values,i=this.length(),s=this._preservedValues,l=this._limit;if(n<0){if(r[n=-1*n-1]=e,l>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(l>=1&&this._inFlight>=l)return r[n]=e,this._queue.push(n),!1;null!==s&&(s[n]=e);var f=this._promise,d=this._callback,p=f._boundValue();f._pushContext();var m=u(d).call(p,e,n,i),h=f._popContext();if(a.checkForgottenReturns(m,h,null!==s?"Promise.filter":"Promise.map",f),m===c)return this._reject(m.e),!0;var _=o(m,this._promise);if(_ instanceof t){var g=(_=_._target())._bitField;if(0==(50397184&g))return l>=1&&this._inFlight++,r[n]=_,_._proxy(this,-1*(n+1)),!1;if(0==(33554432&g))return 0!=(16777216&g)?(this._reject(_._reason()),!0):(this._cancel(),!0);m=_._value()}r[n]=m}var v=++this._totalResolved;return v>=i&&(null!==s?this._filter(r,s):this._resolve(r),!0)},d.prototype._drainQueue=function(){for(var e=this._queue,t=this._limit,n=this._values;e.length>0&&this._inFlight<t;){if(this._isResolved())return;var r=e.pop();this._promiseFulfilled(n[r],r)}},d.prototype._filter=function(e,t){for(var n=t.length,r=new Array(n),o=0,i=0;i<n;++i)e[i]&&(r[o++]=t[i]);r.length=o,this._resolve(r)},d.prototype.preservedValues=function(){return this._preservedValues},t.prototype.map=function(e,t){return p(this,e,t,null)},t.map=function(e,t,n,r){return p(e,t,n,r)}}},{"./util":36}],19:[function(e,t,n){"use strict";t.exports=function(t,n,r,o,i){var a=e("./util"),s=a.tryCatch;t.method=function(e){if("function"!=typeof e)throw new t.TypeError("expecting a function but got "+a.classString(e));return function(){var r=new t(n);r._captureStackTrace(),r._pushContext();var o=s(e).apply(this,arguments),a=r._popContext();return i.checkForgottenReturns(o,a,"Promise.method",r),r._resolveFromSyncValue(o),r}},t.attempt=t.try=function(e){if("function"!=typeof e)return o("expecting a function but got "+a.classString(e));var r,l=new t(n);if(l._captureStackTrace(),l._pushContext(),arguments.length>1){i.deprecated("calling Promise.try with more than 1 argument");var u=arguments[1],c=arguments[2];r=a.isArray(u)?s(e).apply(c,u):s(e).call(c,u)}else r=s(e)();var f=l._popContext();return i.checkForgottenReturns(r,f,"Promise.try",l),l._resolveFromSyncValue(r),l},t.prototype._resolveFromSyncValue=function(e){e===a.errorObj?this._rejectCallback(e.e,!1):this._resolveCallback(e,!0)}}},{"./util":36}],20:[function(e,t,n){"use strict";var r=e("./util"),o=r.maybeWrapAsError,i=e("./errors"),a=i.OperationalError,s=e("./es5"),l=/^(?:name|message|stack|cause)$/;function u(e){var t;if(function(e){return e instanceof Error&&s.getPrototypeOf(e)===Error.prototype}(e)){(t=new a(e)).name=e.name,t.message=e.message,t.stack=e.stack;for(var n=s.keys(e),o=0;o<n.length;++o){var i=n[o];l.test(i)||(t[i]=e[i])}return t}return r.markAsOriginatingFromRejection(e),e}t.exports=function(e,t){return function(n,r){if(null!==e){if(n){var i=u(o(n));e._attachExtraTrace(i),e._reject(i)}else if(t){var a=[].slice.call(arguments,1);e._fulfill(a)}else e._fulfill(r);e=null}}}},{"./errors":12,"./es5":13,"./util":36}],21:[function(e,t,n){"use strict";t.exports=function(t){var n=e("./util"),r=t._async,o=n.tryCatch,i=n.errorObj;function a(e,t){if(!n.isArray(e))return s.call(this,e,t);var a=o(t).apply(this._boundValue(),[null].concat(e));a===i&&r.throwLater(a.e)}function s(e,t){var n=this._boundValue(),a=void 0===e?o(t).call(n,null):o(t).call(n,null,e);a===i&&r.throwLater(a.e)}function l(e,t){if(!e){var n=new Error(e+"");n.cause=e,e=n}var a=o(t).call(this._boundValue(),e);a===i&&r.throwLater(a.e)}t.prototype.asCallback=t.prototype.nodeify=function(e,t){if("function"==typeof e){var n=s;void 0!==t&&Object(t).spread&&(n=a),this._then(n,l,void 0,this,e)}return this}}},{"./util":36}],22:[function(e,n,r){"use strict";n.exports=function(){var r=function(){return new m("circular promise resolution chain\n\n See http://goo.gl/MqrFmX\n")},o=function(){return new k.PromiseInspection(this._target())},i=function(e){return k.reject(new m(e))};function a(){}var s,l={},u=e("./util");s=u.isNode?function(){var e=t.domain;return void 0===e&&(e=null),e}:function(){return null},u.notEnumerableProp(k,"_getDomain",s);var c=e("./es5"),f=e("./async"),d=new f;c.defineProperty(k,"_async",{value:d});var p=e("./errors"),m=k.TypeError=p.TypeError;k.RangeError=p.RangeError;var h=k.CancellationError=p.CancellationError;k.TimeoutError=p.TimeoutError,k.OperationalError=p.OperationalError,k.RejectionError=p.OperationalError,k.AggregateError=p.AggregateError;var _=function(){},g={},v={},y=e("./thenables")(k,_),b=e("./promise_array")(k,_,y,i,a),E=e("./context")(k),C=E.create,S=e("./debuggability")(k,E),D=(S.CapturedTrace,e("./finally")(k,y,v)),w=e("./catch_filter")(v),T=e("./nodeback"),x=u.errorObj,R=u.tryCatch;function k(e){e!==_&&function(e,t){if(null==e||e.constructor!==k)throw new m("the promise constructor cannot be invoked directly\n\n See http://goo.gl/MqrFmX\n");if("function"!=typeof t)throw new m("expecting a function but got "+u.classString(t))}(this,e),this._bitField=0,this._fulfillmentHandler0=void 0,this._rejectionHandler0=void 0,this._promise0=void 0,this._receiver0=void 0,this._resolveFromExecutor(e),this._promiseCreated(),this._fireEvent("promiseCreated",this)}function N(e){this.promise._resolveCallback(e)}function I(e){this.promise._rejectCallback(e,!1)}function O(e){var t=new k(_);t._fulfillmentHandler0=e,t._rejectionHandler0=e,t._promise0=e,t._receiver0=e}return k.prototype.toString=function(){return"[object Promise]"},k.prototype.caught=k.prototype.catch=function(e){var t=arguments.length;if(t>1){var n,r=new Array(t-1),o=0;for(n=0;n<t-1;++n){var a=arguments[n];if(!u.isObject(a))return i("Catch statement predicate: expecting an object but got "+u.classString(a));r[o++]=a}return r.length=o,e=arguments[n],this.then(void 0,w(r,e,this))}return this.then(void 0,e)},k.prototype.reflect=function(){return this._then(o,o,void 0,this,void 0)},k.prototype.then=function(e,t){if(S.warnings()&&arguments.length>0&&"function"!=typeof e&&"function"!=typeof t){var n=".then() only accepts functions but was passed: "+u.classString(e);arguments.length>1&&(n+=", "+u.classString(t)),this._warn(n)}return this._then(e,t,void 0,void 0,void 0)},k.prototype.done=function(e,t){var n=this._then(e,t,void 0,void 0,void 0);n._setIsFinal()},k.prototype.spread=function(e){return"function"!=typeof e?i("expecting a function but got "+u.classString(e)):this.all()._then(e,void 0,void 0,g,void 0)},k.prototype.toJSON=function(){var e={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(e.fulfillmentValue=this.value(),e.isFulfilled=!0):this.isRejected()&&(e.rejectionReason=this.reason(),e.isRejected=!0),e},k.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new b(this).promise()},k.prototype.error=function(e){return this.caught(u.originatesFromRejection,e)},k.getNewLibraryCopy=n.exports,k.is=function(e){return e instanceof k},k.fromNode=k.fromCallback=function(e){var t=new k(_);t._captureStackTrace();var n=arguments.length>1&&!!Object(arguments[1]).multiArgs,r=R(e)(T(t,n));return r===x&&t._rejectCallback(r.e,!0),t._isFateSealed()||t._setAsyncGuaranteed(),t},k.all=function(e){return new b(e).promise()},k.cast=function(e){var t=y(e);return t instanceof k||((t=new k(_))._captureStackTrace(),t._setFulfilled(),t._rejectionHandler0=e),t},k.resolve=k.fulfilled=k.cast,k.reject=k.rejected=function(e){var t=new k(_);return t._captureStackTrace(),t._rejectCallback(e,!0),t},k.setScheduler=function(e){if("function"!=typeof e)throw new m("expecting a function but got "+u.classString(e));return d.setScheduler(e)},k.prototype._then=function(e,t,n,r,o){var i=void 0!==o,a=i?o:new k(_),l=this._target(),c=l._bitField;i||(a._propagateFrom(this,3),a._captureStackTrace(),void 0===r&&0!=(2097152&this._bitField)&&(r=0!=(50397184&c)?this._boundValue():l===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,a));var f=s();if(0!=(50397184&c)){var p,m,g=l._settlePromiseCtx;0!=(33554432&c)?(m=l._rejectionHandler0,p=e):0!=(16777216&c)?(m=l._fulfillmentHandler0,p=t,l._unsetRejectionIsUnhandled()):(g=l._settlePromiseLateCancellationObserver,m=new h("late cancellation observer"),l._attachExtraTrace(m),p=t),d.invoke(g,l,{handler:null===f?p:"function"==typeof p&&u.domainBind(f,p),promise:a,receiver:r,value:m})}else l._addCallbacks(e,t,a,r,f);return a},k.prototype._length=function(){return 65535&this._bitField},k.prototype._isFateSealed=function(){return 0!=(117506048&this._bitField)},k.prototype._isFollowing=function(){return 67108864==(67108864&this._bitField)},k.prototype._setLength=function(e){this._bitField=-65536&this._bitField|65535&e},k.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},k.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},k.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},k.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},k.prototype._isFinal=function(){return(4194304&this._bitField)>0},k.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},k.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},k.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},k.prototype._setAsyncGuaranteed=function(){d.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},k.prototype._receiverAt=function(e){var t=0===e?this._receiver0:this[4*e-4+3];if(t!==l)return void 0===t&&this._isBound()?this._boundValue():t},k.prototype._promiseAt=function(e){return this[4*e-4+2]},k.prototype._fulfillmentHandlerAt=function(e){return this[4*e-4+0]},k.prototype._rejectionHandlerAt=function(e){return this[4*e-4+1]},k.prototype._boundValue=function(){},k.prototype._migrateCallback0=function(e){e._bitField;var t=e._fulfillmentHandler0,n=e._rejectionHandler0,r=e._promise0,o=e._receiverAt(0);void 0===o&&(o=l),this._addCallbacks(t,n,r,o,null)},k.prototype._migrateCallbackAt=function(e,t){var n=e._fulfillmentHandlerAt(t),r=e._rejectionHandlerAt(t),o=e._promiseAt(t),i=e._receiverAt(t);void 0===i&&(i=l),this._addCallbacks(n,r,o,i,null)},k.prototype._addCallbacks=function(e,t,n,r,o){var i=this._length();if(i>=65531&&(i=0,this._setLength(0)),0===i)this._promise0=n,this._receiver0=r,"function"==typeof e&&(this._fulfillmentHandler0=null===o?e:u.domainBind(o,e)),"function"==typeof t&&(this._rejectionHandler0=null===o?t:u.domainBind(o,t));else{var a=4*i-4;this[a+2]=n,this[a+3]=r,"function"==typeof e&&(this[a+0]=null===o?e:u.domainBind(o,e)),"function"==typeof t&&(this[a+1]=null===o?t:u.domainBind(o,t))}return this._setLength(i+1),i},k.prototype._proxy=function(e,t){this._addCallbacks(void 0,void 0,t,e,null)},k.prototype._resolveCallback=function(e,t){if(0==(117506048&this._bitField)){if(e===this)return this._rejectCallback(r(),!1);var n=y(e,this);if(!(n instanceof k))return this._fulfill(e);t&&this._propagateFrom(n,2);var o=n._target();if(o!==this){var i=o._bitField;if(0==(50397184&i)){var a=this._length();a>0&&o._migrateCallback0(this);for(var s=1;s<a;++s)o._migrateCallbackAt(this,s);this._setFollowing(),this._setLength(0),this._setFollowee(o)}else if(0!=(33554432&i))this._fulfill(o._value());else if(0!=(16777216&i))this._reject(o._reason());else{var l=new h("late cancellation observer");o._attachExtraTrace(l),this._reject(l)}}else this._reject(r())}},k.prototype._rejectCallback=function(e,t,n){var r=u.ensureErrorObject(e),o=r===e;if(!o&&!n&&S.warnings()){var i="a promise was rejected with a non-error: "+u.classString(e);this._warn(i,!0)}this._attachExtraTrace(r,!!t&&o),this._reject(e)},k.prototype._resolveFromExecutor=function(e){if(e!==_){var t=this;this._captureStackTrace(),this._pushContext();var n=!0,r=this._execute(e,function(e){t._resolveCallback(e)},function(e){t._rejectCallback(e,n)});n=!1,this._popContext(),void 0!==r&&t._rejectCallback(r,!0)}},k.prototype._settlePromiseFromHandler=function(e,t,n,r){var o=r._bitField;if(0==(65536&o)){var i;r._pushContext(),t===g?n&&"number"==typeof n.length?i=R(e).apply(this._boundValue(),n):(i=x).e=new m("cannot .spread() a non-array: "+u.classString(n)):i=R(e).call(t,n);var a=r._popContext();0==(65536&(o=r._bitField))&&(i===v?r._reject(n):i===x?r._rejectCallback(i.e,!1):(S.checkForgottenReturns(i,a,"",r,this),r._resolveCallback(i)))}},k.prototype._target=function(){for(var e=this;e._isFollowing();)e=e._followee();return e},k.prototype._followee=function(){return this._rejectionHandler0},k.prototype._setFollowee=function(e){this._rejectionHandler0=e},k.prototype._settlePromise=function(e,t,n,r){var i=e instanceof k,s=this._bitField,l=0!=(134217728&s);0!=(65536&s)?(i&&e._invokeInternalOnCancel(),n instanceof D&&n.isFinallyHandler()?(n.cancelPromise=e,R(t).call(n,r)===x&&e._reject(x.e)):t===o?e._fulfill(o.call(n)):n instanceof a?n._promiseCancelled(e):i||e instanceof b?e._cancel():n.cancel()):"function"==typeof t?i?(l&&e._setAsyncGuaranteed(),this._settlePromiseFromHandler(t,n,r,e)):t.call(n,r,e):n instanceof a?n._isResolved()||(0!=(33554432&s)?n._promiseFulfilled(r,e):n._promiseRejected(r,e)):i&&(l&&e._setAsyncGuaranteed(),0!=(33554432&s)?e._fulfill(r):e._reject(r))},k.prototype._settlePromiseLateCancellationObserver=function(e){var t=e.handler,n=e.promise,r=e.receiver,o=e.value;"function"==typeof t?n instanceof k?this._settlePromiseFromHandler(t,r,o,n):t.call(r,o,n):n instanceof k&&n._reject(o)},k.prototype._settlePromiseCtx=function(e){this._settlePromise(e.promise,e.handler,e.receiver,e.value)},k.prototype._settlePromise0=function(e,t,n){var r=this._promise0,o=this._receiverAt(0);this._promise0=void 0,this._receiver0=void 0,this._settlePromise(r,e,o,t)},k.prototype._clearCallbackDataAtIndex=function(e){var t=4*e-4;this[t+2]=this[t+3]=this[t+0]=this[t+1]=void 0},k.prototype._fulfill=function(e){var t=this._bitField;if(!((117506048&t)>>>16)){if(e===this){var n=r();return this._attachExtraTrace(n),this._reject(n)}this._setFulfilled(),this._rejectionHandler0=e,(65535&t)>0&&(0!=(134217728&t)?this._settlePromises():d.settlePromises(this),this._dereferenceTrace())}},k.prototype._reject=function(e){var t=this._bitField;if(!((117506048&t)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=e,this._isFinal())return d.fatalError(e,u.isNode);(65535&t)>0?d.settlePromises(this):this._ensurePossibleRejectionHandled()}},k.prototype._fulfillPromises=function(e,t){for(var n=1;n<e;n++){var r=this._fulfillmentHandlerAt(n),o=this._promiseAt(n),i=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(o,r,i,t)}},k.prototype._rejectPromises=function(e,t){for(var n=1;n<e;n++){var r=this._rejectionHandlerAt(n),o=this._promiseAt(n),i=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(o,r,i,t)}},k.prototype._settlePromises=function(){var e=this._bitField,t=65535&e;if(t>0){if(0!=(16842752&e)){var n=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,n,e),this._rejectPromises(t,n)}else{var r=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,r,e),this._fulfillPromises(t,r)}this._setLength(0)}this._clearCancellationData()},k.prototype._settledValue=function(){var e=this._bitField;return 0!=(33554432&e)?this._rejectionHandler0:0!=(16777216&e)?this._fulfillmentHandler0:void 0},k.defer=k.pending=function(){S.deprecated("Promise.defer","new Promise");var e=new k(_);return{promise:e,resolve:N,reject:I}},u.notEnumerableProp(k,"_makeSelfResolutionError",r),e("./method")(k,_,y,i,S),e("./bind")(k,_,y,S),e("./cancel")(k,b,i,S),e("./direct_resolve")(k),e("./synchronous_inspection")(k),e("./join")(k,b,y,_,d,s),k.Promise=k,k.version="3.5.2",e("./map.js")(k,b,i,y,_,S),e("./call_get.js")(k),e("./using.js")(k,i,y,C,_,S),e("./timers.js")(k,_,S),e("./generators.js")(k,i,_,y,a,S),e("./nodeify.js")(k),e("./promisify.js")(k,_),e("./props.js")(k,b,y,i),e("./race.js")(k,_,y,i),e("./reduce.js")(k,b,i,y,_,S),e("./settle.js")(k,b,S),e("./some.js")(k,b,i),e("./filter.js")(k,_),e("./each.js")(k,_),e("./any.js")(k),u.toFastProperties(k),u.toFastProperties(k.prototype),O({a:1}),O({b:2}),O({c:3}),O(1),O(function(){}),O(void 0),O(!1),O(new k(_)),S.setBounds(f.firstLineError,u.lastLineError),k}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(e,t,n){"use strict";t.exports=function(t,n,r,o,i){var a=e("./util");function s(e){var r=this._promise=new t(n);e instanceof t&&r._propagateFrom(e,3),r._setOnCancel(this),this._values=e,this._length=0,this._totalResolved=0,this._init(void 0,-2)}return a.isArray,a.inherits(s,i),s.prototype.length=function(){return this._length},s.prototype.promise=function(){return this._promise},s.prototype._init=function e(n,i){var s=r(this._values,this._promise);if(s instanceof t){var l=(s=s._target())._bitField;if(this._values=s,0==(50397184&l))return this._promise._setAsyncGuaranteed(),s._then(e,this._reject,void 0,this,i);if(0==(33554432&l))return 0!=(16777216&l)?this._reject(s._reason()):this._cancel();s=s._value()}if(null!==(s=a.asArray(s)))0!==s.length?this._iterate(s):-5===i?this._resolveEmptyArray():this._resolve(function(e){switch(e){case-2:return[];case-3:return{};case-6:return new Map}}(i));else{var u=o("expecting an array or an iterable object but got "+a.classString(s)).reason();this._promise._rejectCallback(u,!1)}},s.prototype._iterate=function(e){var n=this.getActualLength(e.length);this._length=n,this._values=this.shouldCopyValues()?new Array(n):this._values;for(var o=this._promise,i=!1,a=null,s=0;s<n;++s){var l=r(e[s],o);l instanceof t?(l=l._target(),a=l._bitField):a=null,i?null!==a&&l.suppressUnhandledRejections():null!==a?0==(50397184&a)?(l._proxy(this,s),this._values[s]=l):i=0!=(33554432&a)?this._promiseFulfilled(l._value(),s):0!=(16777216&a)?this._promiseRejected(l._reason(),s):this._promiseCancelled(s):i=this._promiseFulfilled(l,s)}i||o._setAsyncGuaranteed()},s.prototype._isResolved=function(){return null===this._values},s.prototype._resolve=function(e){this._values=null,this._promise._fulfill(e)},s.prototype._cancel=function(){!this._isResolved()&&this._promise._isCancellable()&&(this._values=null,this._promise._cancel())},s.prototype._reject=function(e){this._values=null,this._promise._rejectCallback(e,!1)},s.prototype._promiseFulfilled=function(e,t){this._values[t]=e;var n=++this._totalResolved;return n>=this._length&&(this._resolve(this._values),!0)},s.prototype._promiseCancelled=function(){return this._cancel(),!0},s.prototype._promiseRejected=function(e){return this._totalResolved++,this._reject(e),!0},s.prototype._resultCancelled=function(){if(!this._isResolved()){var e=this._values;if(this._cancel(),e instanceof t)e.cancel();else for(var n=0;n<e.length;++n)e[n]instanceof t&&e[n].cancel()}},s.prototype.shouldCopyValues=function(){return!0},s.prototype.getActualLength=function(e){return e},s}},{"./util":36}],24:[function(e,t,n){"use strict";t.exports=function(t,n){var r={},o=e("./util"),i=e("./nodeback"),a=o.withAppended,s=o.maybeWrapAsError,l=o.canEvaluate,u=e("./errors").TypeError,c={__isPromisified__:!0},f=new RegExp("^(?:"+["arity","length","name","arguments","caller","callee","prototype","__isPromisified__"].join("|")+")$"),d=function(e){return o.isIdentifier(e)&&"_"!==e.charAt(0)&&"constructor"!==e};function p(e){return!f.test(e)}function m(e){try{return!0===e.__isPromisified__}catch(e){return!1}}function h(e,t,n){var r=o.getDataPropertyOrDefault(e,t+n,c);return!!r&&m(r)}function _(e,t,n,r){for(var i=o.inheritedDataKeys(e),a=[],s=0;s<i.length;++s){var l=i[s],c=e[l],f=r===d||d(l,c,e);"function"!=typeof c||m(c)||h(e,l,t)||!r(l,c,e,f)||a.push(l,c)}return function(e,t,n){for(var r=0;r<e.length;r+=2){var o=e[r];if(n.test(o))for(var i=o.replace(n,""),a=0;a<e.length;a+=2)if(e[a]===i)throw new u("Cannot promisify an API that has normal methods with '%s'-suffix\n\n See http://goo.gl/MqrFmX\n".replace("%s",t))}}(a,t,n),a}var g=function(e){return e.replace(/([$])/,"\\$")},v=l?void 0:function(e,l,u,c,f,d){var p=function(){return this}(),m=e;function h(){var o=l;l===r&&(o=this);var u=new t(n);u._captureStackTrace();var c="string"==typeof m&&this!==p?this[m]:e,f=i(u,d);try{c.apply(o,a(arguments,f))}catch(e){u._rejectCallback(s(e),!0,!0)}return u._isFateSealed()||u._setAsyncGuaranteed(),u}return"string"==typeof m&&(e=c),o.notEnumerableProp(h,"__isPromisified__",!0),h};function y(e,t,n,i,a){for(var s=new RegExp(g(t)+"$"),l=_(e,t,s,n),u=0,c=l.length;u<c;u+=2){var f=l[u],d=l[u+1],p=f+t;if(i===v)e[p]=v(f,r,f,d,t,a);else{var m=i(d,function(){return v(f,r,f,d,t,a)});o.notEnumerableProp(m,"__isPromisified__",!0),e[p]=m}}return o.toFastProperties(e),e}t.promisify=function(e,t){if("function"!=typeof e)throw new u("expecting a function but got "+o.classString(e));if(m(e))return e;var n=void 0===(t=Object(t)).context?r:t.context,i=!!t.multiArgs,a=function(e,t,n){return v(e,t,void 0,e,null,n)}(e,n,i);return o.copyDescriptors(e,a,p),a},t.promisifyAll=function(e,t){if("function"!=typeof e&&"object"!=typeof e)throw new u("the target of promisifyAll must be an object or a function\n\n See http://goo.gl/MqrFmX\n");var n=!!(t=Object(t)).multiArgs,r=t.suffix;"string"!=typeof r&&(r="Async");var i=t.filter;"function"!=typeof i&&(i=d);var a=t.promisifier;if("function"!=typeof a&&(a=v),!o.isIdentifier(r))throw new RangeError("suffix must be a valid identifier\n\n See http://goo.gl/MqrFmX\n");for(var s=o.inheritedDataKeys(e),l=0;l<s.length;++l){var c=e[s[l]];"constructor"!==s[l]&&o.isClass(c)&&(y(c.prototype,r,i,a,n),y(c,r,i,a,n))}return y(e,r,i,a,n)}}},{"./errors":12,"./nodeback":20,"./util":36}],25:[function(e,t,n){"use strict";t.exports=function(t,n,r,o){var i,a=e("./util"),s=a.isObject,l=e("./es5");"function"==typeof Map&&(i=Map);var u=function(){var e=0,t=0;function n(n,r){this[e]=n,this[e+t]=r,e++}return function(r){t=r.size,e=0;var o=new Array(2*r.size);return r.forEach(n,o),o}}();function c(e){var t,n=!1;if(void 0!==i&&e instanceof i)t=u(e),n=!0;else{var r=l.keys(e),o=r.length;t=new Array(2*o);for(var a=0;a<o;++a){var s=r[a];t[a]=e[s],t[a+o]=s}}this.constructor$(t),this._isMap=n,this._init$(void 0,n?-6:-3)}function f(e){var n,i=r(e);return s(i)?(n=i instanceof t?i._then(t.props,void 0,void 0,void 0,void 0):new c(i).promise(),i instanceof t&&n._propagateFrom(i,2),n):o("cannot await properties of a non-object\n\n See http://goo.gl/MqrFmX\n")}a.inherits(c,n),c.prototype._init=function(){},c.prototype._promiseFulfilled=function(e,t){this._values[t]=e;var n=++this._totalResolved;if(n>=this._length){var r;if(this._isMap)r=function(e){for(var t=new i,n=e.length/2|0,r=0;r<n;++r){var o=e[n+r],a=e[r];t.set(o,a)}return t}(this._values);else{r={};for(var o=this.length(),a=0,s=this.length();a<s;++a)r[this._values[a+o]]=this._values[a]}return this._resolve(r),!0}return!1},c.prototype.shouldCopyValues=function(){return!1},c.prototype.getActualLength=function(e){return e>>1},t.prototype.props=function(){return f(this)},t.props=function(e){return f(e)}}},{"./es5":13,"./util":36}],26:[function(e,t,n){"use strict";function r(e){this._capacity=e,this._length=0,this._front=0}r.prototype._willBeOverCapacity=function(e){return this._capacity<e},r.prototype._pushOne=function(e){var t=this.length();this._checkCapacity(t+1);var n=this._front+t&this._capacity-1;this[n]=e,this._length=t+1},r.prototype.push=function(e,t,n){var r=this.length()+3;if(this._willBeOverCapacity(r))return this._pushOne(e),this._pushOne(t),void this._pushOne(n);var o=this._front+r-3;this._checkCapacity(r);var i=this._capacity-1;this[o+0&i]=e,this[o+1&i]=t,this[o+2&i]=n,this._length=r},r.prototype.shift=function(){var e=this._front,t=this[e];return this[e]=void 0,this._front=e+1&this._capacity-1,this._length--,t},r.prototype.length=function(){return this._length},r.prototype._checkCapacity=function(e){this._capacity<e&&this._resizeTo(this._capacity<<1)},r.prototype._resizeTo=function(e){var t=this._capacity;this._capacity=e;var n=this._front,r=this._length,o=n+r&t-1;!function(e,t,n,r,o){for(var i=0;i<o;++i)n[i+r]=e[i+t],e[i+t]=void 0}(this,0,this,t,o)},t.exports=r},{}],27:[function(e,t,n){"use strict";t.exports=function(t,n,r,o){var i=e("./util"),a=function(e){return e.then(function(t){return s(t,e)})};function s(e,s){var l=r(e);if(l instanceof t)return a(l);if(null===(e=i.asArray(e)))return o("expecting an array or an iterable object but got "+i.classString(e));var u=new t(n);void 0!==s&&u._propagateFrom(s,3);for(var c=u._fulfill,f=u._reject,d=0,p=e.length;d<p;++d){var m=e[d];(void 0!==m||d in e)&&t.cast(m)._then(c,f,void 0,u,null)}return u}t.race=function(e){return s(e,void 0)},t.prototype.race=function(){return s(this,void 0)}}},{"./util":36}],28:[function(e,t,n){"use strict";t.exports=function(t,n,r,o,i,a){var s=t._getDomain,l=e("./util"),u=l.tryCatch;function c(e,n,r,o){this.constructor$(e);var a=s();this._fn=null===a?n:l.domainBind(a,n),void 0!==r&&(r=t.resolve(r))._attachCancellationCallback(this),this._initialValue=r,this._currentCancellable=null,this._eachValues=o===i?Array(this._length):0===o?null:void 0,this._promise._captureStackTrace(),this._init$(void 0,-5)}function f(e,t){this.isFulfilled()?t._resolve(e):t._reject(e)}function d(e,t,n,o){if("function"!=typeof t)return r("expecting a function but got "+l.classString(t));var i=new c(e,t,n,o);return i.promise()}function p(e){this.accum=e,this.array._gotAccum(e);var n=o(this.value,this.array._promise);return n instanceof t?(this.array._currentCancellable=n,n._then(m,void 0,void 0,this,void 0)):m.call(this,n)}function m(e){var n,r=this.array,o=r._promise,i=u(r._fn);o._pushContext(),(n=void 0!==r._eachValues?i.call(o._boundValue(),e,this.index,this.length):i.call(o._boundValue(),this.accum,e,this.index,this.length))instanceof t&&(r._currentCancellable=n);var s=o._popContext();return a.checkForgottenReturns(n,s,void 0!==r._eachValues?"Promise.each":"Promise.reduce",o),n}l.inherits(c,n),c.prototype._gotAccum=function(e){void 0!==this._eachValues&&null!==this._eachValues&&e!==i&&this._eachValues.push(e)},c.prototype._eachComplete=function(e){return null!==this._eachValues&&this._eachValues.push(e),this._eachValues},c.prototype._init=function(){},c.prototype._resolveEmptyArray=function(){this._resolve(void 0!==this._eachValues?this._eachValues:this._initialValue)},c.prototype.shouldCopyValues=function(){return!1},c.prototype._resolve=function(e){this._promise._resolveCallback(e),this._values=null},c.prototype._resultCancelled=function(e){if(e===this._initialValue)return this._cancel();this._isResolved()||(this._resultCancelled$(),this._currentCancellable instanceof t&&this._currentCancellable.cancel(),this._initialValue instanceof t&&this._initialValue.cancel())},c.prototype._iterate=function(e){var n,r;this._values=e;var o=e.length;if(void 0!==this._initialValue?(n=this._initialValue,r=0):(n=t.resolve(e[0]),r=1),this._currentCancellable=n,!n.isRejected())for(;r<o;++r){var i={accum:null,value:e[r],index:r,length:o,array:this};n=n._then(p,void 0,void 0,i,void 0)}void 0!==this._eachValues&&(n=n._then(this._eachComplete,void 0,void 0,this,void 0)),n._then(f,f,void 0,n,this)},t.prototype.reduce=function(e,t){return d(this,e,t,null)},t.reduce=function(e,t,n,r){return d(e,t,n,r)}}},{"./util":36}],29:[function(e,o,i){"use strict";var a,s=e("./util"),l=s.getNativePromise();if(s.isNode&&"undefined"==typeof MutationObserver){var u=n.setImmediate,c=t.nextTick;a=s.isRecentNode?function(e){u.call(n,e)}:function(e){c.call(t,e)}}else if("function"==typeof l&&"function"==typeof l.resolve){var f=l.resolve();a=function(e){f.then(e)}}else a="undefined"==typeof MutationObserver||"undefined"!=typeof window&&window.navigator&&(window.navigator.standalone||window.cordova)?void 0!==r?function(e){r(e)}:"undefined"!=typeof setTimeout?function(e){setTimeout(e,0)}:function(){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}:function(){var e=document.createElement("div"),t={attributes:!0},n=!1,r=document.createElement("div"),o=new MutationObserver(function(){e.classList.toggle("foo"),n=!1});return o.observe(r,t),function(o){var i=new MutationObserver(function(){i.disconnect(),o()});i.observe(e,t),n||(n=!0,r.classList.toggle("foo"))}}();o.exports=a},{"./util":36}],30:[function(e,t,n){"use strict";t.exports=function(t,n,r){var o=t.PromiseInspection,i=e("./util");function a(e){this.constructor$(e)}i.inherits(a,n),a.prototype._promiseResolved=function(e,t){this._values[e]=t;var n=++this._totalResolved;return n>=this._length&&(this._resolve(this._values),!0)},a.prototype._promiseFulfilled=function(e,t){var n=new o;return n._bitField=33554432,n._settledValueField=e,this._promiseResolved(t,n)},a.prototype._promiseRejected=function(e,t){var n=new o;return n._bitField=16777216,n._settledValueField=e,this._promiseResolved(t,n)},t.settle=function(e){return r.deprecated(".settle()",".reflect()"),new a(e).promise()},t.prototype.settle=function(){return t.settle(this)}}},{"./util":36}],31:[function(e,t,n){"use strict";t.exports=function(t,n,r){var o=e("./util"),i=e("./errors").RangeError,a=e("./errors").AggregateError,s=o.isArray,l={};function u(e){this.constructor$(e),this._howMany=0,this._unwrap=!1,this._initialized=!1}function c(e,t){if((0|t)!==t||t<0)return r("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var n=new u(e),o=n.promise();return n.setHowMany(t),n.init(),o}o.inherits(u,n),u.prototype._init=function(){if(this._initialized)if(0!==this._howMany){this._init$(void 0,-5);var e=s(this._values);!this._isResolved()&&e&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}else this._resolve([])},u.prototype.init=function(){this._initialized=!0,this._init()},u.prototype.setUnwrap=function(){this._unwrap=!0},u.prototype.howMany=function(){return this._howMany},u.prototype.setHowMany=function(e){this._howMany=e},u.prototype._promiseFulfilled=function(e){return this._addFulfilled(e),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},u.prototype._promiseRejected=function(e){return this._addRejected(e),this._checkOutcome()},u.prototype._promiseCancelled=function(){return this._values instanceof t||null==this._values?this._cancel():(this._addRejected(l),this._checkOutcome())},u.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var e=new a,t=this.length();t<this._values.length;++t)this._values[t]!==l&&e.push(this._values[t]);return e.length>0?this._reject(e):this._cancel(),!0}return!1},u.prototype._fulfilled=function(){return this._totalResolved},u.prototype._rejected=function(){return this._values.length-this.length()},u.prototype._addRejected=function(e){this._values.push(e)},u.prototype._addFulfilled=function(e){this._values[this._totalResolved++]=e},u.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},u.prototype._getRangeError=function(e){var t="Input array must contain at least "+this._howMany+" items but contains only "+e+" items";return new i(t)},u.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},t.some=function(e,t){return c(e,t)},t.prototype.some=function(e){return c(this,e)},t._SomePromiseArray=u}},{"./errors":12,"./util":36}],32:[function(e,t,n){"use strict";t.exports=function(e){function t(e){void 0!==e?(e=e._target(),this._bitField=e._bitField,this._settledValueField=e._isFateSealed()?e._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}t.prototype._settledValue=function(){return this._settledValueField};var n=t.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},r=t.prototype.error=t.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},o=t.prototype.isFulfilled=function(){return 0!=(33554432&this._bitField)},i=t.prototype.isRejected=function(){return 0!=(16777216&this._bitField)},a=t.prototype.isPending=function(){return 0==(50397184&this._bitField)},s=t.prototype.isResolved=function(){return 0!=(50331648&this._bitField)};t.prototype.isCancelled=function(){return 0!=(8454144&this._bitField)},e.prototype.__isCancelled=function(){return 65536==(65536&this._bitField)},e.prototype._isCancelled=function(){return this._target().__isCancelled()},e.prototype.isCancelled=function(){return 0!=(8454144&this._target()._bitField)},e.prototype.isPending=function(){return a.call(this._target())},e.prototype.isRejected=function(){return i.call(this._target())},e.prototype.isFulfilled=function(){return o.call(this._target())},e.prototype.isResolved=function(){return s.call(this._target())},e.prototype.value=function(){return n.call(this._target())},e.prototype.reason=function(){var e=this._target();return e._unsetRejectionIsUnhandled(),r.call(e)},e.prototype._value=function(){return this._settledValue()},e.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},e.PromiseInspection=t}},{}],33:[function(e,t,n){"use strict";t.exports=function(t,n){var r=e("./util"),o=r.errorObj,i=r.isObject,a={}.hasOwnProperty;return function(e,s){if(i(e)){if(e instanceof t)return e;var l=function(e){try{return function(e){return e.then}(e)}catch(e){return o.e=e,o}}(e);if(l===o){s&&s._pushContext();var u=t.reject(l.e);return s&&s._popContext(),u}if("function"==typeof l){if(function(e){try{return a.call(e,"_promise0")}catch(e){return!1}}(e)){var u=new t(n);return e._then(u._fulfill,u._reject,void 0,u,null),u}return function(e,i,a){var s=new t(n),l=s;a&&a._pushContext(),s._captureStackTrace(),a&&a._popContext();var u=!0,c=r.tryCatch(i).call(e,function(e){s&&(s._resolveCallback(e),s=null)},function(e){s&&(s._rejectCallback(e,u,!0),s=null)});return u=!1,s&&c===o&&(s._rejectCallback(c.e,!0,!0),s=null),l}(e,l,s)}}return e}}},{"./util":36}],34:[function(e,t,n){"use strict";t.exports=function(t,n,r){var o=e("./util"),i=t.TimeoutError;function a(e){this.handle=e}a.prototype._resultCancelled=function(){clearTimeout(this.handle)};var s=function(e){return l(+this).thenReturn(e)},l=t.delay=function(e,o){var i,l;return void 0!==o?(i=t.resolve(o)._then(s,null,null,e,void 0),r.cancellation()&&o instanceof t&&i._setOnCancel(o)):(i=new t(n),l=setTimeout(function(){i._fulfill()},+e),r.cancellation()&&i._setOnCancel(new a(l)),i._captureStackTrace()),i._setAsyncGuaranteed(),i};function u(e){return clearTimeout(this.handle),e}function c(e){throw clearTimeout(this.handle),e}t.prototype.delay=function(e){return l(e,this)},t.prototype.timeout=function(e,t){var n,s;e=+e;var l=new a(setTimeout(function(){n.isPending()&&function(e,t,n){var r;r="string"!=typeof t?t instanceof Error?t:new i("operation timed out"):new i(t),o.markAsOriginatingFromRejection(r),e._attachExtraTrace(r),e._reject(r),null!=n&&n.cancel()}(n,t,s)},e));return r.cancellation()?(s=this.then(),(n=s._then(u,c,void 0,l,void 0))._setOnCancel(l)):n=this._then(u,c,void 0,l,void 0),n}}},{"./util":36}],35:[function(e,t,n){"use strict";t.exports=function(t,n,r,o,i,a){var s=e("./util"),l=e("./errors").TypeError,u=e("./util").inherits,c=s.errorObj,f=s.tryCatch,d={};function p(e){setTimeout(function(){throw e},0)}function m(e,n){var o=0,a=e.length,s=new t(i);return function i(){if(o>=a)return s._fulfill();var l=function(e){var t=r(e);return t!==e&&"function"==typeof e._isDisposable&&"function"==typeof e._getDisposer&&e._isDisposable()&&t._setDisposable(e._getDisposer()),t}(e[o++]);if(l instanceof t&&l._isDisposable()){try{l=r(l._getDisposer().tryDispose(n),e.promise)}catch(e){return p(e)}if(l instanceof t)return l._then(i,p,null,null,null)}i()}(),s}function h(e,t,n){this._data=e,this._promise=t,this._context=n}function _(e,t,n){this.constructor$(e,t,n)}function g(e){return h.isDisposer(e)?(this.resources[this.index]._setDisposable(e),e.promise()):e}function v(e){this.length=e,this.promise=null,this[e-1]=null}h.prototype.data=function(){return this._data},h.prototype.promise=function(){return this._promise},h.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():d},h.prototype.tryDispose=function(e){var t=this.resource(),n=this._context;void 0!==n&&n._pushContext();var r=t!==d?this.doDispose(t,e):null;return void 0!==n&&n._popContext(),this._promise._unsetDisposable(),this._data=null,r},h.isDisposer=function(e){return null!=e&&"function"==typeof e.resource&&"function"==typeof e.tryDispose},u(_,h),_.prototype.doDispose=function(e,t){var n=this.data();return n.call(e,e,t)},v.prototype._resultCancelled=function(){for(var e=this.length,n=0;n<e;++n){var r=this[n];r instanceof t&&r.cancel()}},t.using=function(){var e=arguments.length;if(e<2)return n("you must pass at least 2 arguments to Promise.using");var o,i=arguments[e-1];if("function"!=typeof i)return n("expecting a function but got "+s.classString(i));var l=!0;2===e&&Array.isArray(arguments[0])?(o=arguments[0],e=o.length,l=!1):(o=arguments,e--);for(var u=new v(e),d=0;d<e;++d){var p=o[d];if(h.isDisposer(p)){var _=p;(p=p.promise())._setDisposable(_)}else{var y=r(p);y instanceof t&&(p=y._then(g,null,null,{resources:u,index:d},void 0))}u[d]=p}for(var b=new Array(u.length),d=0;d<b.length;++d)b[d]=t.resolve(u[d]).reflect();var E=t.all(b).then(function(e){for(var t=0;t<e.length;++t){var n=e[t];if(n.isRejected())return c.e=n.error(),c;if(!n.isFulfilled())return void E.cancel();e[t]=n.value()}C._pushContext(),i=f(i);var r=l?i.apply(void 0,e):i(e),o=C._popContext();return a.checkForgottenReturns(r,o,"Promise.using",C),r}),C=E.lastly(function(){var e=new t.PromiseInspection(E);return m(u,e)});return u.promise=C,C._setOnCancel(u),C},t.prototype._setDisposable=function(e){this._bitField=131072|this._bitField,this._disposer=e},t.prototype._isDisposable=function(){return(131072&this._bitField)>0},t.prototype._getDisposer=function(){return this._disposer},t.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},t.prototype.disposer=function(e){if("function"==typeof e)return new _(e,this,o());throw new l}}},{"./errors":12,"./util":36}],36:[function(e,r,o){"use strict";var i=e("./es5"),a="undefined"==typeof navigator,s={e:{}},l,u="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n?n:void 0!==this?this:null;function c(){try{var e=l;return l=null,e.apply(this,arguments)}catch(e){return s.e=e,s}}function f(e){return l=e,c}var d=function(e,t){var n={}.hasOwnProperty;function r(){for(var r in this.constructor=e,this.constructor$=t,t.prototype)n.call(t.prototype,r)&&"$"!==r.charAt(r.length-1)&&(this[r+"$"]=t.prototype[r])}return r.prototype=t.prototype,e.prototype=new r,e.prototype};function p(e){return null==e||!0===e||!1===e||"string"==typeof e||"number"==typeof e}function m(e){return"function"==typeof e||"object"==typeof e&&null!==e}function h(e){return p(e)?new Error(x(e)):e}function _(e,t){var n,r=e.length,o=new Array(r+1);for(n=0;n<r;++n)o[n]=e[n];return o[n]=t,o}function g(e,t,n){if(!i.isES5)return{}.hasOwnProperty.call(e,t)?e[t]:void 0;var r=Object.getOwnPropertyDescriptor(e,t);return null!=r?null==r.get&&null==r.set?r.value:n:void 0}function v(e,t,n){if(p(e))return e;var r={value:n,configurable:!0,enumerable:!1,writable:!0};return i.defineProperty(e,t,r),e}function y(e){throw e}var b=function(){var e=[Array.prototype,Object.prototype,Function.prototype],t=function(t){for(var n=0;n<e.length;++n)if(e[n]===t)return!0;return!1};if(i.isES5){var n=Object.getOwnPropertyNames;return function(e){for(var r=[],o=Object.create(null);null!=e&&!t(e);){var a;try{a=n(e)}catch(e){return r}for(var s=0;s<a.length;++s){var l=a[s];if(!o[l]){o[l]=!0;var u=Object.getOwnPropertyDescriptor(e,l);null!=u&&null==u.get&&null==u.set&&r.push(l)}}e=i.getPrototypeOf(e)}return r}}var r={}.hasOwnProperty;return function(n){if(t(n))return[];var o=[];e:for(var i in n)if(r.call(n,i))o.push(i);else{for(var a=0;a<e.length;++a)if(r.call(e[a],i))continue e;o.push(i)}return o}}(),E=/this\s*\.\s*\S+\s*=/;function C(e){try{if("function"==typeof e){var t=i.names(e.prototype),n=i.isES5&&t.length>1,r=t.length>0&&!(1===t.length&&"constructor"===t[0]),o=E.test(e+"")&&i.names(e).length>0;if(n||r||o)return!0}return!1}catch(e){return!1}}function S(e){function t(){}t.prototype=e;var n=new t;function r(){return typeof n.foo}return r(),r(),e}var D=/^[a-z$_][a-z$_0-9]*$/i;function w(e){return D.test(e)}function T(e,t,n){for(var r=new Array(e),o=0;o<e;++o)r[o]=t+o+n;return r}function x(e){try{return e+""}catch(e){return"[no string representation]"}}function R(e){return e instanceof Error||null!==e&&"object"==typeof e&&"string"==typeof e.message&&"string"==typeof e.name}function k(e){try{v(e,"isOperational",!0)}catch(e){}}function N(e){return null!=e&&(e instanceof Error.__BluebirdErrorTypes__.OperationalError||!0===e.isOperational)}function I(e){return R(e)&&i.propertyIsWritable(e,"stack")}var O="stack"in new Error?function(e){return I(e)?e:new Error(x(e))}:function(e){if(I(e))return e;try{throw new Error(x(e))}catch(e){return e}};function A(e){return{}.toString.call(e)}function M(e,t,n){for(var r=i.names(e),o=0;o<r.length;++o){var a=r[o];if(n(a))try{i.defineProperty(t,a,i.getDescriptor(e,a))}catch(e){}}}var P=function(e){return i.isArray(e)?e:null};if("undefined"!=typeof Symbol&&Symbol.iterator){var L="function"==typeof Array.from?function(e){return Array.from(e)}:function(e){for(var t,n=[],r=e[Symbol.iterator]();!(t=r.next()).done;)n.push(t.value);return n};P=function(e){return i.isArray(e)?e:null!=e&&"function"==typeof e[Symbol.iterator]?L(e):null}}var F=void 0!==t&&"[object process]"===A(t).toLowerCase(),U=void 0!==t&&!0;function j(e){return U?Object({NODE_ENV:"production"})[e]:void 0}function B(){if("function"==typeof Promise)try{var e=new Promise(function(){});if("[object Promise]"==={}.toString.call(e))return Promise}catch(e){}}function G(e,t){return e.bind(t)}var q={isClass:C,isIdentifier:w,inheritedDataKeys:b,getDataPropertyOrDefault:g,thrower:y,isArray:i.isArray,asArray:P,notEnumerableProp:v,isPrimitive:p,isObject:m,isError:R,canEvaluate:a,errorObj:s,tryCatch:f,inherits:d,withAppended:_,maybeWrapAsError:h,toFastProperties:S,filledRange:T,toString:x,canAttachTrace:I,ensureErrorObject:O,originatesFromRejection:N,markAsOriginatingFromRejection:k,classString:A,copyDescriptors:M,hasDevTools:"undefined"!=typeof chrome&&chrome&&"function"==typeof chrome.loadTimes,isNode:F,hasEnvVariables:U,env:j,global:u,getNativePromise:B,domainBind:G};q.isRecentNode=q.isNode&&function(){var e=t.versions.node.split(".").map(Number);return 0===e[0]&&e[1]>10||e[0]>0}(),q.isNode&&q.toFastProperties(t);try{throw new Error}catch(e){q.lastLineError=e}r.exports=q},{"./es5":13}]},{},[4])(4)}(),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)}).call(this,n(54),n(15),n(187).setImmediate)},function(e,t,n){"use strict";(function(t){var r=u(n(11)),o=u(n(4)),i=u(n(5)),a=u(n(12)),s=u(n(233)),l=u(n(13));function u(e){return e&&e.__esModule?e:{default:e}}var c=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,l.default)(t,e),(0,i.default)(t,[{key:"dispatch",value:function(e,n){var o=this;"function"!=typeof e?n?(0,s.default)(t.prototype.__proto__||(0,r.default)(t.prototype),"dispatch",this).call(this,e):setTimeout((0,s.default)(t.prototype.__proto__||(0,r.default)(t.prototype),"dispatch",this).bind(this,e),0):e(function(e){o.dispatch(e,n)})}}]),t}(n(1149).Dispatcher);void 0===t.mxDispatcher&&(t.mxDispatcher=new c),e.exports=t.mxDispatcher}).call(this,n(15))},function(e,t,n){e.exports={default:n(986),__esModule:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(64));t.default=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":(0,r.default)(t))&&"function"!=typeof t?e:t}},function(e,t,n){"use strict";t.__esModule=!0;var r=a(n(1091)),o=a(n(67)),i=a(n(64));function a(e){return e&&e.__esModule?e:{default:e}}t.default=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":(0,i.default)(t)));e.prototype=(0,o.default)(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(r.default?(0,r.default)(e,t):e.__proto__=t)}},function(e,t,n){e.exports={default:n(219),__esModule:!0}},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";(function(r){Object.defineProperty(t,"__esModule",{value:!0});var o=d(n(37)),i=d(n(4)),a=d(n(5)),s=d(n(128)),l=d(n(1)),u=d(n(90)),c=d(n(3)),f=d(n(10));function d(e){return e&&e.__esModule?e:{default:e}}var p=n(0),m=n(41),h=p.createClass({displayName:"AsyncWrapper",propTypes:{loader:l.default.func.isRequired},getInitialState:function(){return{component:null}},componentWillMount:function(){var e=this;this._unmounted=!1,console.log("Starting load of AsyncWrapper for modal"),this.props.loader(function(t){console.log("AsyncWrapper load completed with "+t.displayName),e._unmounted||e.setState({component:t})})},componentWillUnmount:function(){this._unmounted=!0},render:function(){var e=this.props,t=(e.loader,(0,s.default)(e,["loader"]));if(this.state.component){var n=this.state.component;return p.createElement(n,t)}var r=c.default.getComponent("elements.Spinner");return p.createElement(r,null)}}),_=function(){function e(){(0,i.default)(this,e),this._counter=0,this._priorityModal=null,this._modals=[],this.closeAll=this.closeAll.bind(this)}return(0,a.default)(e,[{key:"getOrCreateContainer",value:function(){var e=document.getElementById("mx_Dialog_Container");return e||((e=document.createElement("div")).id="mx_Dialog_Container",document.body.appendChild(e)),e}},{key:"createTrackedDialog",value:function(e,t){u.default.trackEvent("Modal",e,t);for(var n=arguments.length,r=Array(n>2?n-2:0),o=2;o<n;o++)r[o-2]=arguments[o];return this.createDialog.apply(this,r)}},{key:"createDialog",value:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return this.createDialogAsync.apply(this,[function(t){t(e)}].concat(n))}},{key:"createTrackedDialogAsync",value:function(e,t){u.default.trackEvent("Modal",e,t);for(var n=arguments.length,r=Array(n>2?n-2:0),o=2;o<n;o++)r[o-2]=arguments[o];return this.createDialogAsync.apply(this,r)}},{key:"createDialogAsync",value:function(e,t,n,r){var i=this,a={},s=function(){t&&t.onFinished&&t.onFinished.apply(null,arguments);var e=i._modals.indexOf(a);e>=0&&i._modals.splice(e,1),i._priorityModal===a&&(i._priorityModal=null,i._modals=[]),i._reRender()},l=this._counter++;return a.elem=p.createElement(h,(0,o.default)({key:l,loader:e},t,{onFinished:s})),a.onFinished=t?t.onFinished:null,a.className=n,r?this._priorityModal=a:this._modals.unshift(a),this._reRender(),{close:s}}},{key:"closeAll",value:function(){var e=this._modals;this._modals=[];for(var t=0;t<e.length;t++){var n=e[t];n.onFinished&&n.onFinished(!1)}this._reRender()}},{key:"_reRender",value:function(){if(0==this._modals.length&&!this._priorityModal)return f.default.dispatch({action:"aria_unhide_main_app"}),void m.unmountComponentAtNode(this.getOrCreateContainer());f.default.dispatch({action:"aria_hide_main_app"});var e=this._priorityModal?this._priorityModal:this._modals[0],t=p.createElement("div",{className:"mx_Dialog_wrapper "+(e.className?e.className:"")},p.createElement("div",{className:"mx_Dialog"},e.elem),p.createElement("div",{className:"mx_Dialog_background",onClick:this.closeAll}));m.render(t,this.getOrCreateContainer())}}]),e}();r.singletonModalManager||(r.singletonModalManager=new _),t.default=r.singletonModalManager,e.exports=t.default}).call(this,n(15))},function(e,t,n){(function(t){var r,o=n(1061);o.request(n(99));try{r=t.indexedDB}catch(e){}r&&o.setCryptoStoreFactory(function(){return new o.IndexedDBCryptoStore(r,"matrix-js-sdk:crypto")}),e.exports=o,t.matrixcs=o}).call(this,n(15))},function(e,t){var n=e.exports={version:"2.5.1"};"number"==typeof __e&&(__e=n)},function(e,t,n){e.exports=n(216)},function(e,t,n){e.exports={default:n(391),__esModule:!0}},function(e,t,n){"use strict";n.r(t),n.d(t,"Block",function(){return Q}),n.d(t,"Change",function(){return vt}),n.d(t,"Changes",function(){return ut}),n.d(t,"Data",function(){return k}),n.d(t,"Decoration",function(){return Ie}),n.d(t,"Document",function(){return I}),n.d(t,"History",function(){return ze}),n.d(t,"Inline",function(){return A}),n.d(t,"KeyUtils",function(){return y}),n.d(t,"Leaf",function(){return F}),n.d(t,"Mark",function(){return P}),n.d(t,"Node",function(){return K}),n.d(t,"Operation",function(){return _t}),n.d(t,"Operations",function(){return kt}),n.d(t,"PathUtils",function(){return ye}),n.d(t,"Point",function(){return ke}),n.d(t,"Range",function(){return Pe}),n.d(t,"resetMemoization",function(){return H}),n.d(t,"Schema",function(){return Ze}),n.d(t,"Selection",function(){return Fe}),n.d(t,"Stack",function(){return Ke}),n.d(t,"Text",function(){return W}),n.d(t,"TextUtils",function(){return le}),n.d(t,"useMemoization",function(){return Y}),n.d(t,"Value",function(){return st});var r=n(43),o=n.n(r),i=n(6),a=n(62),s=n(481),l=n(482),u=n.n(l),c=n(206),f=n.n(c),d=n(207),p=n.n(d),m=n(725),h=n.n(m),_=void 0,g=void 0;function v(){_=0,g=function(){return""+_++}}v();var y={create:function(e){if(null==e)return g();if("string"==typeof e)return e;throw new Error("Keys must be strings, but you passed: "+e)},setGenerator:function(e){g=e},resetGenerator:v},b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},E=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},C=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),S=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},D=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)},w=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},T=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},x=function(){return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),R=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)},k=function(){function e(){E(this,e)}return C(e,null,[{key:"create",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(i.Map.isMap(t))return t;if(o()(t))return e.fromJSON(t);throw new Error("`Data.create` only accepts objects or maps, but you passed it: "+t)}},{key:"fromJSON",value:function(e){return new i.Map(e)}}]),e}();k.fromJS=k.fromJSON;var N={data:void 0,key:void 0,nodes:void 0},I=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={object:this.object,data:this.data.toJSON(),nodes:this.nodes.toArray().map(function(t){return t.toJSON(e)})};return e.preserveKeys&&(t.key=this.key),t}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isDocument(e))return e;if((i.List.isList(e)||Array.isArray(e))&&(e={nodes:e}),o()(e))return t.fromJSON(e);throw new Error("`Document.create` only accepts objects, arrays, lists or documents, but you passed it: "+e)}},{key:"fromJSON",value:function(e){if(t.isDocument(e))return e;var n=e.data,r=void 0===n?{}:n,o=e.key,a=void 0===o?y.create():o,s=e.nodes,l=void 0===s?[]:s;return new t({key:a,data:new i.Map(r),nodes:K.createList(l)})}}]),t}(Object(i.Record)(N)),O={data:void 0,key:void 0,nodes:void 0,type:void 0},A=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={object:this.object,type:this.type,data:this.data.toJSON(),nodes:this.nodes.toArray().map(function(t){return t.toJSON(e)})};return e.preserveKeys&&(t.key=this.key),t}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isInline(e))return e;if("string"==typeof e&&(e={type:e}),o()(e))return t.fromJSON(e);throw new Error("`Inline.create` only accepts objects, strings or inlines, but you passed it: "+e)}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Inline.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"fromJSON",value:function(e){if(t.isInline(e))return e;var n=e.data,r=void 0===n?{}:n,o=e.key,a=void 0===o?y.create():o,s=e.nodes,l=void 0===s?[]:s,u=e.type;if("string"!=typeof u)throw new Error("`Inline.fromJS` requires a `type` string.");return new t({key:a,type:u,data:new i.Map(r),nodes:K.createList(l)})}},{key:"isInlineList",value:function(e){return i.List.isList(e)&&e.every(function(e){return t.isInline(e)})}}]),t}(Object(i.Record)(O)),M={data:void 0,type:void 0},P=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"toJSON",value:function(){return{object:this.object,type:this.type,data:this.data.toJSON()}}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isMark(e))return e;if("string"==typeof e&&(e={type:e}),o()(e))return t.fromJSON(e);throw new Error("`Mark.create` only accepts objects, strings or marks, but you passed it: "+e)}},{key:"createSet",value:function(e){if(i.Set.isSet(e)||Array.isArray(e))return new i.Set(e.map(t.create));if(null==e)return Object(i.Set)();throw new Error("`Mark.createSet` only accepts sets, arrays or null, but you passed it: "+e)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isMark(e))return{data:e.data,type:e.type};if("string"==typeof e)return{type:e};if(o()(e)){var n={};return"type"in e&&(n.type=e.type),"data"in e&&(n.data=k.create(e.data)),n}throw new Error("`Mark.createProperties` only accepts objects, strings or marks, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.data,r=void 0===n?{}:n,o=e.type;if("string"!=typeof o)throw new Error("`Mark.fromJS` requires a `type` string.");return new t({type:o,data:new i.Map(r)})}},{key:"isMarkSet",value:function(e){return i.Set.isSet(e)&&e.every(function(e){return t.isMark(e)})}}]),t}(Object(i.Record)(M)),L={marks:void 0,text:void 0},F=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"updateMark",value:function(e,t){var n=this.marks;if(t.equals(e))return this;if(!n.has(e))return this;var r=n.withMutations(function(n){n.remove(e).add(t)});return this.set("marks",r)}},{key:"addMark",value:function(e){var t=this.marks;return this.set("marks",t.add(e))}},{key:"addMarks",value:function(e){var t=this.marks;return this.set("marks",t.union(e))}},{key:"removeMark",value:function(e){var t=this.marks;return this.set("marks",t.remove(e))}},{key:"toJSON",value:function(){return{object:this.object,text:this.text,marks:this.marks.toArray().map(function(e){return e.toJSON()})}}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isLeaf(e))return e;if("string"==typeof e&&(e={text:e}),o()(e))return t.fromJSON(e);throw new Error("`Leaf.create` only accepts objects, strings or leaves, but you passed it: "+e)}},{key:"createLeaves",value:function(e){if(e.size<=1)return e;var t=!1,n=Object(i.List)().withMutations(function(n){e.findLast(function(e,r){var o=n.first();if(o){if(o.marks.equals(e.marks))return t=!0,void n.set(0,o.set("text",""+e.text+o.text));if(""===o.text)return t=!0,void n.set(0,e);if(""===e.text)return void(t=!0)}n.unshift(e)})});return t?n:e}},{key:"splitLeaves",value:function(e,t){if(t<0)return[Object(i.List)(),e];if(0===e.size)return[Object(i.List)(),Object(i.List)()];var n=0,r=-1,o=void 0,a=void 0;return e.find(function(e){r++;var i=n,s=e.text;if((n+=s.length)<t)return!1;if(i>t)return!1;var l=t-i;return o=e.set("text",s.slice(0,l)),a=e.set("text",s.slice(l)),!0}),o?""===o.text?0===r?[i.List.of(o),e]:[e.take(r),e.skip(r)]:""===a.text?r===e.size-1?[e,i.List.of(a)]:[e.take(r+1),e.skip(r+1)]:[e.take(r).push(o),e.skip(r+1).unshift(a)]:[e,Object(i.List)()]}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Leaf.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.text,r=void 0===n?"":n,o=e.marks,a=void 0===o?[]:o;return new t({text:r,marks:Object(i.Set)(a.map(P.fromJSON))})}},{key:"isLeafList",value:function(e){return i.List.isList(e)&&e.every(function(e){return t.isLeaf(e)})}}]),t}(Object(i.Record)(L)),U=!0,j=0,B={},G={},q=void 0;function V(e,t){var n=function(t){var n=e[t];if(!n)throw new Error('Object does not have a property named "'+t+'".');e[t]=function(){for(var e=arguments.length,r=Array(e),o=0;o<e;o++)r[o]=arguments[o];if(!U)return n.apply(this,r);j!==this.__cache_key&&(this.__cache_key=j,this.__cache=new Map,this.__cache_no_args={}),this.__cache||(this.__cache=new Map),this.__cache_no_args||(this.__cache_no_args={});var i=0!==r.length,a=void 0,s=void 0;if(i?(s=[t].concat(r),a=function(e,t){var n=!0,r=!1,o=void 0;try{for(var i,a=t[Symbol.iterator]();!(n=(i=a.next()).done);n=!0){var s=i.value;if((e=e.get(s))===q)return q}}catch(e){r=!0,o=e}finally{try{!n&&a.return&&a.return()}finally{if(r)throw o}}return e.get(B)}(this.__cache,s)):a=this.__cache_no_args[t],a!==q)return a===G?void 0:a;var l=n.apply(this,r),u=void 0===l?G:l;return i?this.__cache=function(e,t,n){var r=e,o=void 0,i=!0,a=!1,s=void 0;try{for(var l,u=t[Symbol.iterator]();!(i=(l=u.next()).done);i=!0){var c=l.value;(o=r.get(c))===q&&(o=new Map,r.set(c,o)),r=o}}catch(e){a=!0,s=e}finally{try{!i&&u.return&&u.return()}finally{if(a)throw s}}return o.set(B,n),e}(this.__cache,s,u):this.__cache_no_args[t]=u,l}},r=!0,o=!1,i=void 0;try{for(var a,s=t[Symbol.iterator]();!(r=(a=s.next()).done);r=!0){n(a.value)}}catch(e){o=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}}function H(){++j>=Number.MAX_SAFE_INTEGER&&(j=0)}function Y(e){U=e}var z={leaves:void 0,key:void 0},W=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"searchLeafAtOffset",value:function(e){var t=0,n=0,r=-1;return{leaf:this.leaves.find(function(o){return r++,(t=(n=t)+o.text.length)>=e}),endOffset:t,index:r,startOffset:n}}},{key:"addMark",value:function(e,t,n){var r=i.Set.of(n);return this.addMarks(e,t,r)}},{key:"addMarks",value:function(e,t,n){if(""===this.text&&0===t&&0===e){var r=this.leaves.first();if(!r)return this.set("leaves",i.List.of(F.fromJSON({text:"",marks:n})));var o=r.addMarks(n);return o===r?this:this.set("leaves",i.List.of(o))}if(""===this.text)return this;if(0===t)return this;if(e>=this.text.length)return this;var a=F.splitLeaves(this.leaves,e),s=x(a,2),l=s[0],u=s[1],c=F.splitLeaves(u,t),f=x(c,2),d=f[0],p=f[1],m=l.concat(d.map(function(e){return e.addMarks(n)}),p);return this.setLeaves(m)}},{key:"getLeaves",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=this.leaves;if(0===n.size)return i.List.of(F.create({}));if(!t||0===t.length)return n;if(0===this.text.length)return n;var r=this.key;return t.forEach(function(t){var o=t.start,i=t.end,a=t.mark,s=o.key==r,l=i.key==r;if(s&&l){var u=s?o.offset:0,c=l?i.offset-u:e.text.length-u;if(c<1)return;if(u>=e.text.length)return;if(0!==u||c<e.text.length){var f=F.splitLeaves(n,u),d=x(f,2),p=d[0],m=d[1],h=F.splitLeaves(m,c),_=x(h,2),g=_[0],v=_[1];return void(n=p.concat(g.map(function(e){return e.addMark(a)}),v))}}n=n.map(function(e){return e.addMark(a)})}),n===this.leaves?n:F.createLeaves(n)}},{key:"getActiveMarksBetweenOffsets",value:function(e,t){if(e<=0&&t>=this.text.length)return this.getActiveMarks();if(e>=t)return Object(i.Set)();if(""===this.text)return this.getActiveMarks();var n=null,r=0;return this.leaves.forEach(function(o){var i=r;if(!((r=i+o.text.length)<=e)){if(i>=t)return!1;if(n)return(n=n.intersect(o.marks))&&n.size,!1;n=o.marks}}),n||Object(i.Set)()}},{key:"getActiveMarks",value:function(){var e=this;if(0===this.leaves.size)return Object(i.Set)();var t=this.leaves.first().marks;return 0===t.size?t:t.toOrderedSet().withMutations(function(t){e.leaves.forEach(function(e){if(t.intersect(e.marks),0===t.size)return!1})})}},{key:"getMarksBetweenOffsets",value:function(e,t){if(e<=0&&t>=this.text.length)return this.getMarks();if(e>=t)return Object(i.Set)();if(""===this.text)return this.getActiveMarks();var n=null,r=0;return this.leaves.forEach(function(o){var i=r;if(!((r=i+o.text.length)<=e))return!(i>=t)&&void(n=n?n.union(o.marks):o.marks)}),n||Object(i.Set)()}},{key:"getMarks",value:function(){var e=this.getMarksAsArray();return new i.OrderedSet(e)}},{key:"getMarksAsArray",value:function(){if(0===this.leaves.size)return[];var e=this.leaves.first().marks;if(1===this.leaves.size)return e.toArray();var t=[];return this.leaves.forEach(function(e){t.push(e.marks.toArray())}),Array.prototype.concat.apply(e.toArray(),t)}},{key:"getMarksAtIndex",value:function(e){var t=this.searchLeafAtOffset(e).leaf;return t?t.marks:Object(i.Set)()}},{key:"insertText",value:function(e,t,n){if(""===this.text)return this.set("leaves",i.List.of(F.create({text:t,marks:n})));if(0===t.length)return this;n||(n=Object(i.Set)());var r=this.searchLeafAtOffset(e),o=r.startOffset,a=r.leaf,s=r.index,l=e-o,u=a.text.slice(0,l),c=a.text.slice(l),f=this.leaves;if(a.marks.equals(n))return this.set("leaves",f.set(s,a.set("text",u+t+c)));var d=f.splice(s,1,a.set("text",u),F.create({text:t,marks:n}),a.set("text",c));return this.setLeaves(d)}},{key:"removeMark",value:function(e,t,n){if(""===this.text&&0===e&&0===t){var r=this.leaves.first();if(!r)return this;var o=r.removeMark(n);return o===r?this:this.set("leaves",i.List.of(o))}if(t<=0)return this;if(e>=this.text.length)return this;var a=F.splitLeaves(this.leaves,e),s=x(a,2),l=s[0],u=s[1],c=F.splitLeaves(u,t),f=x(c,2),d=f[0],p=f[1],m=l.concat(d.map(function(e){return e.removeMark(n)}),p);return this.setLeaves(m)}},{key:"removeText",value:function(e,t){if(t<=0)return this;if(e>=this.text.length)return this;if(1===t){var n=this.searchLeafAtOffset(e+1),r=n.leaf,o=n.index,a=e-n.startOffset;if(r){if(1===r.text.length){var s=this.leaves.remove(o);return this.setLeaves(s)}var l=r.text.slice(0,a)+r.text.slice(a+t);if(l.length>0)return this.set("leaves",this.leaves.set(o,r.set("text",l)))}}var u=F.splitLeaves(this.leaves,e),c=x(u,2),f=c[0],d=c[1],p=F.splitLeaves(d,t)[1],m=F.createLeaves(f.concat(p));if(1===m.size){var h=m.first();if(""===h.text)return this.set("leaves",i.List.of(h.set("marks",this.getActiveMarks())))}return this.set("leaves",m)}},{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={object:this.object,leaves:this.getLeaves().toArray().map(function(e){return e.toJSON()})};return e.preserveKeys&&(t.key=this.key),t}},{key:"updateMark",value:function(e,t,n,r){var o=n.merge(r);if(""===this.text&&0===t&&0===e){var a=this.leaves.first();if(!a)return this;var s=a.updateMark(n,o);return s===a?this:this.set("leaves",i.List.of(s))}if(t<=0)return this;if(e>=this.text.length)return this;var l=F.splitLeaves(this.leaves,e),u=x(l,2),c=u[0],f=u[1],d=F.splitLeaves(f,t),p=x(d,2),m=p[0],h=p[1],_=c.concat(m.map(function(e){return e.updateMark(n,o)}),h);return this.setLeaves(_)}},{key:"splitText",value:function(e){var t=F.splitLeaves(this.leaves,e);return[this.set("leaves",t[0]),this.set("leaves",t[1]).regenerateKey()]}},{key:"mergeText",value:function(e){var t=this.leaves.concat(e.leaves);return this.setLeaves(t)}},{key:"setLeaves",value:function(e){var t=F.createLeaves(e);if(1===t.size){var n=t.first();if((!n.marks||0===n.marks.size)&&""===n.text)return this.set("leaves",Object(i.List)())}return this.set("leaves",F.createLeaves(e))}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(t.isText(e))return e;if("string"==typeof e&&(e={leaves:[{text:e}]}),o()(e)){if(e.text){var n=e,r=n.text,i=n.marks;e={key:n.key,leaves:[{text:r,marks:i}]}}return t.fromJSON(e)}throw new Error("`Text.create` only accepts objects, arrays, strings or texts, but you passed it: "+e)}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Text.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"fromJSON",value:function(e){if(t.isText(e))return e;var n=e.key,r=void 0===n?y.create():n,o=e.leaves;if(o||(e.ranges?(Object(a.a)(!1,"As of slate@0.27.0, the `ranges` property of Slate objects has been renamed to `leaves`."),o=e.ranges):o=Object(i.List)()),Array.isArray(o))o=Object(i.List)(o.map(function(e){return F.create(e)}));else{if(!i.List.isList(o))throw new Error("leaves must be either Array or Immutable.List");o=o.map(function(e){return F.create(e)})}return new t({leaves:F.createLeaves(o),key:r})}},{key:"isTextList",value:function(e){return i.List.isList(e)&&e.every(function(e){return t.isText(e)})}}]),t}(Object(i.Record)(z));V(W.prototype,["getActiveMarks","getMarks","getMarksAsArray"]);var K=function(){function e(){E(this,e)}return C(e,null,[{key:"create",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e.isNode(t))return t;if(o()(t)){var n=t.object;switch(!n&&t.kind&&(Object(a.a)(!1,"As of slate@0.32.0, the `kind` property of Slate objects has been renamed to `object`."),n=t.kind),n){case"block":return Q.create(t);case"document":return I.create(t);case"inline":return A.create(t);case"text":return W.create(t);default:throw new Error("`Node.create` requires a `object` string.")}}throw new Error("`Node.create` only accepts objects or nodes but you passed it: "+t)}},{key:"createList",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(t)||Array.isArray(t))return Object(i.List)(t.map(e.create));throw new Error("`Node.createList` only accepts lists or arrays, but you passed it: "+t)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(Q.isBlock(e)||A.isInline(e))return{data:e.data,type:e.type};if("string"==typeof e)return{type:e};if(o()(e)){var t={};return"type"in e&&(t.type=e.type),"data"in e&&(t.data=k.create(e.data)),t}throw new Error("`Node.createProperties` only accepts objects, strings, blocks or inlines, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var t=e.object;switch(!t&&e.kind&&(Object(a.a)(!1,"As of slate@0.32.0, the `kind` property of Slate objects has been renamed to `object`."),t=e.kind),t){case"block":return Q.fromJSON(e);case"document":return I.fromJSON(e);case"inline":return A.fromJSON(e);case"text":return W.fromJSON(e);default:throw new Error("`Node.fromJSON` requires an `object` of either 'block', 'document', 'inline' or 'text', but you passed: "+e)}}},{key:"isNode",value:function(e){return Q.isBlock(e)||I.isDocument(e)||A.isInline(e)||W.isText(e)}},{key:"isNodeList",value:function(t){return i.List.isList(t)&&t.every(function(t){return e.isNode(t)})}}]),e}(),$={data:void 0,key:void 0,nodes:void 0,type:void 0},Q=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={object:this.object,type:this.type,data:this.data.toJSON(),nodes:this.nodes.toArray().map(function(t){return t.toJSON(e)})};return e.preserveKeys&&(t.key=this.key),t}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isBlock(e))return e;if("string"==typeof e&&(e={type:e}),o()(e))return t.fromJSON(e);throw new Error("`Block.create` only accepts objects, strings or blocks, but you passed it: "+e)}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Block.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"fromJSON",value:function(e){if(t.isBlock(e))return e;var n=e.data,r=void 0===n?{}:n,o=e.key,a=void 0===o?y.create():o,s=e.nodes,l=void 0===s?[]:s,u=e.type;if("string"!=typeof u)throw new Error("`Block.fromJSON` requires a `type` string.");return new t({key:a,type:u,data:Object(i.Map)(r),nodes:K.createList(l)})}},{key:"isBlockList",value:function(e){return i.List.isList(e)&&e.every(function(e){return t.isBlock(e)})}}]),t}(Object(i.Record)($)),X={};["deleteBackward","deleteCharBackward","deleteLineBackward","deleteWordBackward","deleteForward","deleteCharForward","deleteWordForward","deleteLineForward","setBlocks","setInlines","splitInline","unwrapBlock","unwrapInline","wrapBlock","wrapInline"].forEach(function(e){X[e]=function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];var i=t.value.selection;t[e+"AtRange"].apply(t,[i].concat(r)),e.match(/Backward$/)?t.moveToStart():e.match(/Forward$/)&&t.moveToEnd()}}),X.addMark=function(e,t){t=P.create(t);var n=e.value,r=n.document,o=n.selection;if(o.isExpanded)e.addMarkAtRange(o,t);else if(o.marks){var i=o.marks.add(t),a=o.set("marks",i);e.select(a)}else{var s=r.getActiveMarksAtRange(o).add(t),l=o.set("marks",s);e.select(l)}},X.addMarks=function(e,t){t.forEach(function(t){return e.addMark(t)})},X.delete=function(e){var t=e.value.selection;e.deleteAtRange(t),e.moveToStart()},X.insertBlock=function(e,t){t=Q.create(t);var n=e.value.selection;e.insertBlockAtRange(n,t);var r=e.value.document.getNode(t.key);r&&e.moveToEndOfNode(r)},X.insertFragment=function(e,t){if(t.nodes.size){var n=e.value,r=n,o=r.document,i=r.selection,a=i.start,s=i.end,l=n,u=l.startText,c=l.endText,f=l.startInline,d=t.getLastText(),p=t.getClosestInline(d.key),m=t.nodes.first(),h=t.nodes.last(),_=o.getTexts().map(function(e){return e.key}),g=!f||a.isAtStartOfNode(u)||s.isAtStartOfNode(u)||a.isAtEndOfNode(c)||s.isAtEndOfNode(c),v=m.hasBlockChildren()||h.hasBlockChildren();e.insertFragmentAtRange(i,t);var y=(o=(n=e.value).document).getTexts().filter(function(e){return!_.includes(e.key)}),b=g?y.last():y.takeLast(2).first();b&&(p||v)?e.select(i.moveToEndOfNode(b)):b?e.select(i.moveToStartOfNode(b).moveForward(d.text.length)):e.select(i.moveToStart().moveForward(d.text.length))}},X.insertInline=function(e,t){t=A.create(t);var n=e.value.selection;e.insertInlineAtRange(n,t);var r=e.value.document.getNode(t.key);r&&e.moveToEndOfNode(r)},X.insertText=function(e,t,n){var r=e.value,o=r.document,i=r.selection;n=n||i.marks||o.getInsertMarksAtRange(i),e.insertTextAtRange(i,t,n),i.marks&&o!=e.value.document&&e.select({marks:null})},X.removeMark=function(e,t){t=P.create(t);var n=e.value,r=n.document,o=n.selection;if(o.isExpanded)e.removeMarkAtRange(o,t);else if(o.marks){var i=o.marks.remove(t),a=o.set("marks",i);e.select(a)}else{var s=r.getActiveMarksAtRange(o).remove(t),l=o.set("marks",s);e.select(l)}},X.replaceMark=function(e,t,n){e.removeMark(t),e.addMark(n)},X.splitBlock=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=e.value,r=n.selection,o=n.document,i=r.marks||o.getInsertMarksAtRange(r);e.splitBlockAtRange(r,t).moveToEnd(),i&&0!==i.size&&e.select({marks:i})},X.toggleMark=function(e,t){t=P.create(t),e.value.activeMarks.has(t)?e.removeMark(t):e.addMark(t)},X.wrapText=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t,r=e.value.selection;e.wrapTextAtRange(r,t,n),r.isCollapsed&&e.moveStartBackward(t.length),e.moveEndBackward(n.length),r.isForward!=e.value.selection.isForward&&e.flip()};var J=55296,Z=57343,ee=/\s/,te=/['\u2018\u2019]/,ne=/[\u0021-\u0023\u0025-\u002A\u002C-\u002F\u003A\u003B\u003F\u0040\u005B-\u005D\u005F\u007B\u007D\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E3B\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/;function re(e){return J<=e&&e<=Z}function oe(e,t){if(ee.test(e))return!1;if(te.test(e)){var n=t.charAt(0),r=ie(n);if(oe(n=t.slice(0,r),t.slice(r)))return!0}return!ne.test(e)}function ie(e){return re(e.charCodeAt(0))?2:1}function ae(e){return ie(e.charAt(0))}function se(e){for(var t=0,n=0,r=!1,o=void 0;o=e.charAt(n);){var i=ie(o);if(oe(o=e.slice(n,n+i),e.slice(n+i)))r=!0,t+=i;else{if(r)break;t+=i}n+=i}return t}var le={getCharLength:ie,getCharOffset:ae,getCharOffsetBackward:function(e,t){return e=e.slice(0,t),ae(e=Object(s.reverse)(e))},getCharOffsetForward:function(e,t){return ae(e=e.slice(t))},getWordOffset:se,getWordOffsetBackward:function(e,t){return e=e.slice(0,t),se(e=Object(s.reverse)(e))},getWordOffsetForward:function(e,t){return se(e=e.slice(t))},isSurrogate:re,isWord:oe},ue={};function ce(e,t){if(e.size!==t.size)return null;for(var n=0;n<e.size;n++){var r=e.get(n),o=t.get(n);if(r<o)return-1;if(r>o)return 1}return 0}function fe(e){if(null==e)return null;if(i.List.isList(e))return e;if(Array.isArray(e))return Object(i.List)(e);throw new Error("Paths can only be created from arrays or lists, but you passed: "+e)}function de(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:ve(e,t);return[e.slice(0,n),t.slice(0,n)]}function pe(e){return me(e,0-(arguments.length>1&&void 0!==arguments[1]?arguments[1]:1),arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.size-1)}function me(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.size-1,r=e.get(n)+t;return e.set(n,r)}function he(e,t){var n=de(e,t),r=x(n,2),o=r[0],i=r[1];return e.size<t.size&&0===ce(o,i)}function _e(e,t){return e.equals(t)}function ge(e,t){var n=e.size-1,r=de(e,t,n),o=x(r,2),i=o[0],a=o[1],s=e.get(n),l=t.get(n);return _e(i,a)&&s<l}function ve(e,t){return Math.min(e.size,t.size)}ue.addMarkAtRange=function(e,t,n){if(!t.isCollapsed){var r=e.value.document,o=t.start,i=t.end,a=r.getTextsAtRange(t);e.withoutNormalizing(function(){a.forEach(function(t){var r=t.key,a=0,s=t.text.length;r==o.key&&(a=o.offset),r==i.key&&(s=i.offset),r==o.key&&r==i.key&&(s=i.offset-o.offset),e.addMarkByKey(r,a,s,n)})})}},ue.addMarksAtRange=function(e,t,n){n.forEach(function(n){return e.addMarkAtRange(t,n)})},ue.deleteAtRange=function(e,t){e.snapshotSelection();var n=e.value,r=t.start,o=t.end,i=r.key,a=r.offset,s=o.key,l=o.offset,u=n.document,c=n.schema,f=u.hasVoidParent(i,c),d=u.hasVoidParent(s,c),p=u.getClosestBlock(i,c),m=u.getClosestBlock(s,c),h=0==a&&0==l&&0==f&&i==p.getFirstText().key&&s==m.getFirstText().key;if(h&&d){var _=u.getPreviousText(s);s=_.key,l=_.text.length,d=u.hasVoidParent(s,c)}e.withoutNormalizing(function(){for(;f;){var t=u.getClosestVoid(i,c),n=u.getNextText(i);if(e.removeNodeByKey(t.key),i==s)return;if(!n)return;u=e.value.document,i=n.key,a=0,f=u.hasVoidParent(i,c)}for(;d;){var r=u.getClosestVoid(s,c),o=u.getPreviousText(s);e.removeNodeByKey(r.key),u=e.value.document,s=o.key,l=o.text.length,d=u.hasVoidParent(s,c)}if(i==s&&h)e.removeNodeByKey(p.key);else if(i!=s){p=u.getClosestBlock(i),m=u.getClosestBlock(s);var _=u.getNode(i),g=u.getNode(s),v=_.text.length-a,y=l,b=u.getCommonAncestor(i,s),E=b.getFurthestAncestor(i),C=b.getFurthestAncestor(s),S=u.getParent(p.key),D=S.nodes.indexOf(p),w=S.nodes.indexOf(m),T=void 0;for(T=_;T.key!=E.key;){var x=u.getParent(T.key),R=x.nodes.indexOf(T);x.nodes.slice(R+1).reverse().forEach(function(t){e.removeNodeByKey(t.key)}),T=x}var k=b.nodes.indexOf(E),N=b.nodes.indexOf(C);for(b.nodes.slice(k+1,N).reverse().forEach(function(t){e.removeNodeByKey(t.key)}),T=g;T.key!=C.key;){var I=u.getParent(T.key),O=I.nodes.indexOf(T);I.nodes.slice(0,O).reverse().forEach(function(t){e.removeNodeByKey(t.key)}),T=I}if(0!=v&&e.removeTextByKey(i,a,v),0!=y&&e.removeTextByKey(s,0,l),p.key!=m.key){var A=(u=e.value.document).getFurthestOnlyChildAncestor(m.key);w!=D+1&&e.moveNodeByKey(m.key,S.key,D+1),h?e.removeNodeByKey(p.key):e.mergeNodeByKey(m.key),A&&e.removeNodeByKey(A.key)}}else{var M=a,P=l-a;e.removeTextByKey(i,M,P)}})},ue.deleteCharBackwardAtRange=function(e,t){var n=e.value.document,r=t.start,o=n.getClosestBlock(r.key),i=o.getOffset(r.key)+r.offset,a=o.text,s=le.getCharOffsetBackward(a,i);e.deleteBackwardAtRange(t,s)},ue.deleteLineBackwardAtRange=function(e,t){var n=e.value.document,r=t.start,o=n.getClosestBlock(r.key).getOffset(r.key)+r.offset;e.deleteBackwardAtRange(t,o)},ue.deleteWordBackwardAtRange=function(e,t){var n=e.value.document,r=t.start,o=n.getClosestBlock(r.key),i=o.getOffset(r.key)+r.offset,a=o.text,s=0===i?1:le.getWordOffsetBackward(a,i);e.deleteBackwardAtRange(t,s)},ue.deleteBackwardAtRange=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(0!==n){var r=e.value,o=r.document,i=r.schema,a=t,s=a.start,l=a.focus;if(t.isExpanded)e.deleteAtRange(t);else{var u=o.getClosestVoid(s.key,i);if(u)e.removeNodeByKey(u.key);else{var c=o.getClosestBlock(s.key);if(!c||i.isVoid(c)||""!==c.text||1===o.nodes.size){if(!s.isAtStartOfNode(o)){var f=o.getDescendant(s.key);if(s.isAtStartOfNode(f)){var d=o.getPreviousText(f.key),p=o.getClosestBlock(d.key),m=o.getClosestVoid(d.key,i);if(m)return void e.removeNodeByKey(m.key);if(1==n&&p!=c)return t=t.moveAnchorTo(d.key,d.text.length),void e.deleteAtRange(t)}if(n<l.offset)return t=t.moveFocusBackward(n),void e.deleteAtRange(t);for(var h=f,_=0,g=l.offset;n>g;){var v=g+(h=o.getPreviousText(h.key)).text.length;if(n<=v){_=v-n;break}g=v}t=t.moveAnchorTo(h.key,_),e.deleteAtRange(t)}}else e.removeNodeByKey(c.key)}}}},ue.deleteCharForwardAtRange=function(e,t){var n=e.value.document,r=t.start,o=n.getClosestBlock(r.key),i=o.getOffset(r.key)+r.offset,a=o.text,s=le.getCharOffsetForward(a,i);e.deleteForwardAtRange(t,s)},ue.deleteLineForwardAtRange=function(e,t){var n=e.value.document,r=t.start,o=n.getClosestBlock(r.key),i=o.getOffset(r.key)+r.offset;e.deleteForwardAtRange(t,o.text.length-i)},ue.deleteWordForwardAtRange=function(e,t){var n=e.value.document,r=t.start,o=n.getClosestBlock(r.key),i=o.getOffset(r.key)+r.offset,a=o.text,s=le.getWordOffsetForward(a,i);e.deleteForwardAtRange(t,s)},ue.deleteForwardAtRange=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(0!==n){var r=e.value,o=r.document,i=r.schema,a=t,s=a.start,l=a.focus;if(t.isExpanded)e.deleteAtRange(t);else{var u=o.getClosestVoid(s.key,i);if(u)e.removeNodeByKey(u.key);else{var c=o.getClosestBlock(s.key);if(c&&!i.isVoid(c)&&""===c.text&&1!==o.nodes.size){var f=o.getNextBlock(c.key);return e.removeNodeByKey(c.key),void(f&&f.key&&e.moveToStartOfNode(f))}if(!s.isAtEndOfNode(o)){var d=o.getDescendant(s.key);if(s.isAtEndOfNode(d)){var p=o.getNextText(d.key),m=o.getClosestBlock(p.key),h=o.getClosestVoid(p.key,i);if(h)return void e.removeNodeByKey(h.key);if(1==n&&m!=c)return t=t.moveFocusTo(p.key,0),void e.deleteAtRange(t)}if(n<=d.text.length-l.offset)return t=t.moveFocusForward(n),void e.deleteAtRange(t);for(var _=d,g=l.offset,v=d.text.length-l.offset;n>v;){var y=v+(_=o.getNextText(_.key)).text.length;if(n<=y){g=n-v;break}v=y}t=t.moveFocusTo(_.key,g),e.deleteAtRange(t)}}}}},ue.insertBlockAtRange=function(e,t,n){n=Q.create(n),t.isExpanded&&(e.deleteAtRange(t),t=t.moveToStart());var r=e.value,o=r.document,i=r.schema,a=t.start,s=a.key,l=a.offset,u=o.getClosestBlock(s),c=o.getClosestInline(s),f=o.getParent(u.key),d=f.nodes.indexOf(u);if(i.isVoid(u)){var p=a.isAtEndOfNode(u)?1:0;e.insertNodeByKey(f.key,d+p,n)}else if(c||""!==u.text)if(a.isAtStartOfNode(u))e.insertNodeByKey(f.key,d,n);else if(a.isAtEndOfNode(u))e.insertNodeByKey(f.key,d+1,n);else{if(c&&i.isVoid(c)){var m=a.isAtEndOfNode(c),h=m?o.getNextText(s):o.getPreviousText(s),_=m?t.moveToStartOfNode(h):t.moveToEndOfNode(h);s=_.start.key,l=_.start.offset}e.withoutNormalizing(function(){e.splitDescendantsByKey(u.key,s,l),e.insertNodeByKey(f.key,d+1,n)})}else e.insertNodeByKey(f.key,d+1,n)},ue.insertFragmentAtRange=function(e,t,n){e.withoutNormalizing(function(){if(t.isExpanded&&(e.deleteAtRange(t),t=e.value.document.getDescendant(t.start.key)?t.moveToStart():t.moveTo(t.end.key,0).normalize(e.value.document)),n.nodes.size){n=n.mapDescendants(function(e){return e.regenerateKey()});var r=t.start,o=e.value,a=o.schema,s=o.document,l=s.getDescendant(r.key),u=s.getClosestBlock(l.key),c=u.getFurthestAncestor(l.key),f=r.isAtStartOfNode(u),d=s.getParent(u.key),p=d.nodes.indexOf(u),m=n.getBlocks(),h=n.nodes.first(),_=n.nodes.last(),g=m.first(),v=m.last();if(g===v&&a.isVoid(g))e.insertBlockAtRange(t,g);else if(h.hasBlockChildren()||_.hasBlockChildren())n.nodes.reverse().forEach(function(n){e.insertBlockAtRange(t,n)});else{if(g!=v){var y=n.getFurthest(g.key,function(e){return 1==e.nodes.size})||g,b=d.nodes.indexOf(u);(n=n.removeNode(y.key)).nodes.forEach(function(t,n){var r=b+n+1;e.insertNodeByKey(d.key,r,t)})}if(0!=r.offset&&e.splitDescendantsByKey(c.key,r.key,r.offset),l=(s=e.value.document).getDescendant(r.key),c=(u=s.getClosestBlock(r.key)).getFurthestAncestor(l.key),g!=v){var E=f?c:u.getNextSibling(c.key),C=E?u.nodes.skipUntil(function(e){return e.key==E.key}):Object(i.List)(),S=v.nodes.size;C.forEach(function(t,n){var r=S+n;e.moveNodeByKey(t.key,v.key,r)})}if(a.isVoid(u)||""!==u.text){var D=u.getFurthestAncestor(l.key),w=u.nodes.indexOf(D);g.nodes.forEach(function(t,n){var o=0==r.offset?0:1,i=w+n+o;e.insertNodeByKey(u.key,i,t)})}else e.removeNodeByKey(u.key),e.insertNodeByKey(d.key,p,g)}}})},ue.insertInlineAtRange=function(e,t,n){n=A.create(n),e.withoutNormalizing(function(){t.isExpanded&&(e.deleteAtRange(t),t=t.moveToStart());var r=e.value,o=r.document,i=r.schema,a=t.start,s=o.getParent(a.key),l=o.assertDescendant(a.key),u=s.nodes.indexOf(l);i.isVoid(s)||(e.splitNodeByKey(a.key,a.offset),e.insertNodeByKey(s.key,u+1,n))})},ue.insertTextAtRange=function(e,t,n,r){var o=e.value,i=o.document,a=o.schema,s=t.start,l=s.key,u=s.offset,c=i.getParent(s.key);a.isVoid(c)||e.withoutNormalizing(function(){t.isExpanded&&(e.deleteAtRange(t),e.value.selection.start.key!==l&&(l=e.value.selection.start.key,u=e.value.selection.start.offset)),e.insertTextByKey(l,u,n,r)})},ue.removeMarkAtRange=function(e,t,n){if(!t.isCollapsed){var r=e.value.document.getTextsAtRange(t),o=t.start,i=t.end;e.withoutNormalizing(function(){r.forEach(function(t){var r=t.key,a=0,s=t.text.length;r==o.key&&(a=o.offset),r==i.key&&(s=i.offset),r==o.key&&r==i.key&&(s=i.offset-o.offset),e.removeMarkByKey(r,a,s,n)})})}},ue.setBlocksAtRange=function(e,t,n){var r=e.value,o=r.document,i=r.schema,a=o.getBlocksAtRange(t),s=t.start,l=t.end,u=t.isCollapsed,c=o.hasVoidParent(s.key,i),f=o.getClosestBlock(s.key),d=o.getClosestBlock(l.key),p=0==u&&0==s.offset&&0==l.offset&&0==c&&s.key==f.getFirstText().key&&l.key==d.getFirstText().key?a.slice(0,-1):a;e.withoutNormalizing(function(){p.forEach(function(t){e.setNodeByKey(t.key,n)})})},ue.setInlinesAtRange=function(e,t,n){var r=e.value.document.getInlinesAtRange(t);e.withoutNormalizing(function(){r.forEach(function(t){e.setNodeByKey(t.key,n)})})},ue.splitBlockAtRange=function(e,t){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=t,o=r.start,i=r.end,a=e.value,s=a.document,l=s.assertDescendant(o.key),u=s.getClosestBlock(l.key),c=0;u&&"block"==u.object&&c<n;)l=u,u=s.getClosestBlock(u.key),c++;e.withoutNormalizing(function(){if(e.splitDescendantsByKey(l.key,o.key,o.offset),a=e.value,s=a.document,t.isExpanded){t.isBackward&&(t=t.flip());var n=s.getNextBlock(l.key);t=(t=t.moveAnchorToStartOfNode(n)).setFocus(t.focus.setPath(null)),o.key===i.key&&(t=t.moveFocusTo(t.anchor.key,i.offset-o.offset)),t=s.resolveRange(t),e.deleteAtRange(t)}})},ue.splitInlineAtRange=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1/0;t.isExpanded&&(e.deleteAtRange(t),t=t.moveToStart());for(var r=t.start,o=e.value.document,i=o.assertDescendant(r.key),a=o.getClosestInline(i.key),s=0;a&&"inline"==a.object&&s<n;)i=a,a=o.getClosestInline(a.key),s++;e.splitDescendantsByKey(i.key,r.key,r.offset)},ue.toggleMarkAtRange=function(e,t,n){t.isCollapsed||(n=P.create(n),e.value.document.getActiveMarksAtRange(t).some(function(e){return e.equals(n)})?e.removeMarkAtRange(t,n):e.addMarkAtRange(t,n))},ue.unwrapBlockAtRange=function(e,t,n){n=K.createProperties(n);var r=e.value.document,o=r.getBlocksAtRange(t),i=o.map(function(e){return r.getClosest(e.key,function(e){return"block"==e.object&&((null==n.type||e.type==n.type)&&!(null!=n.data&&!e.data.isSuperset(n.data)))})}).filter(function(e){return e}).toOrderedSet().toList();e.withoutNormalizing(function(){i.forEach(function(t){var n=t.nodes.first(),i=t.nodes.last(),a=r.getParent(t.key),s=a.nodes.indexOf(t),l=t.nodes.filter(function(e){return o.some(function(t){return e==t||e.hasDescendant(t.key)})}),u=l.first(),c=l.last();if(n==u&&i==c)t.nodes.forEach(function(t,n){e.moveNodeByKey(t.key,a.key,s+n)}),e.removeNodeByKey(t.key);else if(i==c)t.nodes.skipUntil(function(e){return e==u}).forEach(function(t,n){e.moveNodeByKey(t.key,a.key,s+1+n)});else if(n==u)t.nodes.takeUntil(function(e){return e==c}).push(c).forEach(function(t,n){e.moveNodeByKey(t.key,a.key,s+n)});else{var f=u.getFirstText();e.splitDescendantsByKey(t.key,f.key,0),r=e.value.document,l.forEach(function(t,n){if(0==n){var o=t;t=r.getNextBlock(t.key),e.removeNodeByKey(o.key)}e.moveNodeByKey(t.key,a.key,s+1+n)})}})})},ue.unwrapInlineAtRange=function(e,t,n){n=K.createProperties(n);var r=e.value.document,o=r.getTextsAtRange(t).map(function(e){return r.getClosest(e.key,function(e){return"inline"==e.object&&((null==n.type||e.type==n.type)&&!(null!=n.data&&!e.data.isSuperset(n.data)))})}).filter(function(e){return e}).toOrderedSet().toList();e.withoutNormalizing(function(){o.forEach(function(t){var n=e.value.document.getParent(t.key),r=n.nodes.indexOf(t);t.nodes.forEach(function(t,o){e.moveNodeByKey(t.key,n.key,r+o)}),e.removeNodeByKey(t.key)})})},ue.wrapBlockAtRange=function(e,t,n){n=(n=Q.create(n)).set("nodes",n.nodes.clear());var r=e.value.document,o=r.getBlocksAtRange(t),i=o.first(),a=o.last(),s=void 0,l=void 0,u=void 0;if(1===o.length?(s=r.getParent(i.key),l=o):s=r.getClosest(i.key,function(e){return!!r.getClosest(a.key,function(t){return e==t})}),null==s&&(s=r),null==l){var c=s.nodes.reduce(function(e,t,n){return(t==i||t.hasDescendant(i.key))&&(e[0]=n),(t==a||t.hasDescendant(a.key))&&(e[1]=n),e},[]);u=c[0],l=s.nodes.slice(c[0],c[1]+1)}null==u&&(u=s.nodes.indexOf(l.first())),e.withoutNormalizing(function(){e.insertNodeByKey(s.key,u,n),l.forEach(function(t,r){e.moveNodeByKey(t.key,n.key,r)})})},ue.wrapInlineAtRange=function(e,t,n){var r=e.value,o=r.document,a=r.schema,s=t.start,l=t.end;if(t.isCollapsed){var u=o.getClosestInline(s.key);if(!a.isVoid(u))return;return e.wrapInlineByKey(u.key,n)}n=(n=A.create(n)).set("nodes",n.nodes.clear());var c=o.getBlocksAtRange(t),f=o.getClosestBlock(s.key),d=o.getClosestBlock(l.key),p=o.getClosestInline(s.key),m=o.getClosestInline(l.key),h=f.getFurthestAncestor(s.key),_=d.getFurthestAncestor(l.key);e.withoutNormalizing(function(){p&&p==m||(e.splitDescendantsByKey(_.key,l.key,l.offset),e.splitDescendantsByKey(h.key,s.key,s.offset)),o=e.value.document,f=o.getDescendant(f.key),d=o.getDescendant(d.key),h=f.getFurthestAncestor(s.key),_=d.getFurthestAncestor(l.key);var r=f.nodes.indexOf(h),a=d.nodes.indexOf(_);if(p&&p==m){var u=f.getTextsAtRange(t).get(0).splitText(s.offset)[1].splitText(l.offset-s.offset)[0];n=n.set("nodes",Object(i.List)([u])),e.insertInlineAtRange(t,n);var g=n.getFirstText().key,v={anchor:{key:g,offset:0},focus:{key:g,offset:l.offset-s.offset},isFocused:!0};e.select(v)}else if(f==d){o=e.value.document,f=o.getClosestBlock(s.key),h=f.getFurthestAncestor(s.key);var y=o.getNextSibling(h.key),b=f.nodes.indexOf(y),E=s.key==l.key?y:f.getFurthestAncestor(l.key),C=f.nodes.skipUntil(function(e){return e==y}).takeUntil(function(e){return e==E}).push(E),S=n.regenerateKey();e.insertNodeByKey(f.key,b,S),C.forEach(function(t,n){e.moveNodeByKey(t.key,S.key,n)})}else{var D=f.nodes.slice(r+1),w=d.nodes.slice(0,a+1),T=n.regenerateKey(),x=n.regenerateKey();e.insertNodeByKey(f.key,r+1,T),e.insertNodeByKey(d.key,a,x),D.forEach(function(t,n){e.moveNodeByKey(t.key,T.key,n)}),w.forEach(function(t,n){e.moveNodeByKey(t.key,x.key,n)}),c.slice(1,-1).forEach(function(t){var r=n.regenerateKey();e.insertNodeByKey(t.key,0,r),t.nodes.forEach(function(t,n){e.moveNodeByKey(t.key,r.key,n)})})}})},ue.wrapTextAtRange=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:n,o=t.start,i=t.end,a=t.moveToStart(),s=t.moveToEnd();o.key==i.key&&(s=s.moveForward(n.length)),e.withoutNormalizing(function(){e.insertTextAtRange(a,n,[]),e.insertTextAtRange(s,r,[])})};var ye={compare:ce,create:fe,crop:de,decrement:pe,increment:me,isAbove:he,isAfter:function(e,t){var n=de(e,t),r=x(n,2);return 1===ce(r[0],r[1])},isBefore:function(e,t){var n=de(e,t),r=x(n,2);return-1===ce(r[0],r[1])},isEqual:_e,isOlder:function(e,t){var n=e.size-1,r=de(e,t,n),o=x(r,2),i=o[0],a=o[1],s=e.get(n),l=t.get(n);return _e(i,a)&&s>l},isSibling:function(e,t){if(e.size!==t.size)return!1;var n=e.butLast(),r=t.butLast();return n.equals(r)},isYounger:ge,lift:function(e){return e.slice(0,-1)},max:function(e,t){return Math.max(e.size,t.size)},min:ve,relate:function(e,t){for(var n=[],r=0;r<e.size&&r<t.size;r++){var o=e.get(r);if(o!==t.get(r))break;n.push(o)}return fe(n)},transform:function(e,t){var n=t.type,r=t.position,o=t.path;if("add_mark"===n||"insert_text"===n||"remove_mark"===n||"remove_text"===n||"set_mark"===n||"set_node"===n||"set_selection"===n||"set_value"===n||0===e.size)return Object(i.List)([e]);var a=o.size-1,s=_e(o,e),l=ge(o,e),u=he(o,e);if("insert_node"===n&&(s||l||u)&&(e=me(e,1,a)),"remove_node"===n&&(l?e=pe(e,1,a):(s||u)&&(e=[])),"merge_node"===n&&(s||l?e=pe(e,1,a):u&&(e=me(e=pe(e,1,a),r,a+1))),"split_node"===n&&(s?e=[e,me(e)]:l?e=me(e,1,a):u&&e.get(a+1)>=r&&(e=pe(e=me(e,1,a),r,a+1))),"move_node"===n){var c=t.newPath,f=c.size-1,d=_e(c,e),p=ge(c,e),m=he(c,e);u?e=c.concat(e.slice(o.size)):(s?e=c:l&&(e=pe(e,1,a)),(d||p||m)&&(e=me(e,1,f)))}var h=Array.isArray(e)?e:[e];return Object(i.List)(h)}},be={addMarkByPath:function(e,t,n,r,o){o=P.create(o);var i=e.value,a=[],s=n,l=n+r,u=0;i.document.assertNode(t).getLeaves().forEach(function(e){var n=u,r=n+e.text.length;if(u+=e.text.length,!(r<s||l<n||e.marks.has(o))){var c=Math.max(n,s),f=Math.min(r,l);a.push({type:"add_mark",value:i,path:t,offset:c,length:f-c,mark:o})}}),e.applyOperations(a)},insertFragmentByPath:function(e,t,n,r){r.nodes.forEach(function(r,o){e.insertNodeByPath(t,n+o,r)})},insertNodeByPath:function(e,t,n,r){var o=e.value;e.applyOperation({type:"insert_node",value:o,path:t.concat(n),node:r})},insertTextByPath:function(e,t,n,r,o){var i=e.value,a=i.document.assertNode(t);o=o||a.getMarksAtIndex(n),e.applyOperation({type:"insert_text",value:i,path:t,offset:n,text:r,marks:o})},mergeNodeByPath:function(e,t){var n=e.value,r=n.document,o=r.getDescendant(t),i=r.getPreviousSibling(t);if(!i)throw new Error('Unable to merge node with path "'+t+'", because it has no previous sibling.');var a="text"==i.object?i.text.length:i.nodes.size;e.applyOperation({type:"merge_node",value:n,path:t,position:a,properties:{type:o.type,data:o.data},target:null})},moveNodeByPath:function(e,t,n,r){var o=e.value;e.applyOperation({type:"move_node",value:o,path:t,newPath:n.concat(r)})},removeMarkByPath:function(e,t,n,r,o){o=P.create(o);var i=e.value,a=[],s=n,l=n+r,u=0;i.document.assertNode(t).getLeaves().forEach(function(e){var n=u,r=n+e.text.length;if(u+=e.text.length,!(r<s||l<n)&&e.marks.has(o)){var c=Math.max(n,s),f=Math.min(r,l);a.push({type:"remove_mark",value:i,path:t,offset:c,length:f-c,mark:o})}}),e.applyOperations(a)},removeAllMarksByPath:function(e,t){var n=e.state.document.assertNode(t);("text"===n.object?[n]:n.getTextsAsArray()).forEach(function(t){t.getMarksAsArray().forEach(function(n){e.removeMarkByKey(t.key,0,t.text.length,n)})})},removeNodeByPath:function(e,t){var n=e.value,r=n.document.assertNode(t);e.applyOperation({type:"remove_node",value:n,path:t,node:r})},removeTextByPath:function(e,t,n,r){var o=e.value,i=o.document.assertNode(t),a=i.getLeaves(),s=i.text,l=[],u=n,c=n+r,f=0;a.forEach(function(e){var n=f,r=n+e.text.length;if(f+=e.text.length,!(r<u||c<n)){var i=Math.max(n,u),a=Math.min(r,c),d=s.slice(i,a);l.push({type:"remove_text",value:o,path:t,offset:i,text:d,marks:e.marks})}}),e.applyOperations(l.reverse())},replaceNodeByPath:function(e,t,n){n=K.create(n);var r=t.last(),o=ye.lift(t);e.withoutNormalizing(function(){e.removeNodeByPath(t),e.insertNodeByPath(o,r,n)})},replaceTextByPath:function(e,t,n,r,o,i){var a=e.value.document,s=a.assertNode(t);r+n>s.text.length&&(r=s.text.length-n);var l=a.createRange({anchor:{path:t,offset:n},focus:{path:t,offset:n+r}}),u=a.getActiveMarksAtRange(l);e.withoutNormalizing(function(){e.removeTextByPath(t,n,r),i?u&&(u=u.filter(function(e){return!i.find(function(t){return e.type===t.type})}),i=u.merge(i)):i=u||[],e.insertTextByPath(t,n,o,i)})},setMarkByPath:function(e,t,n,r,o,i){o=P.create(o),i=P.createProperties(i);var a=e.value;e.applyOperation({type:"set_mark",value:a,path:t,offset:n,length:r,mark:o,properties:i})},setNodeByPath:function(e,t,n){n=K.createProperties(n);var r=e.value,o=r.document.assertNode(t);e.applyOperation({type:"set_node",value:r,path:t,node:o,properties:n})},setTextByPath:function(e,t,n,r){var o=e.value.document.assertNode(t).text.length;e.replaceTextByPath(t,0,o,n,r)},splitNodeByPath:function(e,t,n){var r=(arguments.length>3&&void 0!==arguments[3]?arguments[3]:{}).target,o=void 0===r?null:r,i=e.value,a=i.document.getDescendant(t);e.applyOperation({type:"split_node",value:i,path:t,position:n,target:o,properties:{type:a.type,data:a.data}})},splitDescendantsByPath:function(e,t,n,r){if(t.equals(n))e.splitNodeByPath(n,r);else{var o=e.value.document,i=o.assertNode(t),a=o.assertNode(n),s=o.getAncestors(n).skipUntil(function(e){return e.key==i.key}).reverse().unshift(a),l=void 0,u=void 0;e.withoutNormalizing(function(){s.forEach(function(t){var n=null==u?null:u;u=l?t.nodes.indexOf(l)+1:r,l=t,e.splitNodeByKey(t.key,u,{target:n})})})}},unwrapInlineByPath:function(e,t,n){var r=e.value,o=r.document,i=r.selection,a=o.assertNode(t),s=a.getFirstText(),l=a.getLastText(),u=i.moveToRangeOfNode(s,l);e.unwrapInlineAtRange(u,n)},unwrapBlockByPath:function(e,t,n){var r=e.value,o=r.document,i=r.selection,a=o.assertNode(t),s=a.getFirstText(),l=a.getLastText(),u=i.moveToRangeOfNode(s,l);e.unwrapBlockAtRange(u,n)},unwrapNodeByPath:function(e,t){var n=e.value.document;n.assertNode(t);var r=ye.lift(t),o=n.assertNode(r),i=t.last(),a=r.last(),s=ye.lift(r),l=0===i,u=i===o.nodes.size-1;e.withoutNormalizing(function(){if(1===o.nodes.size)e.moveNodeByPath(t,s,a+1),e.removeNodeByPath(r);else if(l)e.moveNodeByPath(t,s,a);else if(u)e.moveNodeByPath(t,s,a+1);else{var n=ye.increment(t,1,r.size-1);n=n.set(n.size-1,0),e.splitNodeByPath(r,i),e.moveNodeByPath(n,s,a+1)}})},wrapBlockByPath:function(e,t,n){n=(n=Q.create(n)).set("nodes",n.nodes.clear());var r=ye.lift(t),o=t.last(),i=ye.increment(t);e.withoutNormalizing(function(){e.insertNodeByPath(r,o,n),e.moveNodeByPath(i,t,0)})},wrapInlineByPath:function(e,t,n){n=(n=A.create(n)).set("nodes",n.nodes.clear());var r=ye.lift(t),o=t.last(),i=ye.increment(t);e.withoutNormalizing(function(){e.insertNodeByPath(r,o,n),e.moveNodeByPath(i,t,0)})},wrapNodeByPath:function(e,t,n){"block"===(n=K.create(n)).object?e.wrapBlockByPath(t,n):"inline"===n.object&&e.wrapInlineByPath(t,n)}},Ee=function(e){be[e+"ByKey"]=function(t,n){for(var r=arguments.length,o=Array(r>2?r-2:0),i=2;i<r;i++)o[i-2]=arguments[i];var a=t.value.document.assertPath(n);t[e+"ByPath"].apply(t,[a].concat(o))}},Ce=!0,Se=!1,De=void 0;try{for(var we,Te=["addMark","insertFragment","insertNode","insertText","mergeNode","removeMark","removeAllMarks","removeNode","setText","replaceText","removeText","replaceNode","setMark","setNode","splitNode","unwrapInline","unwrapBlock","unwrapNode","wrapBlock","wrapInline","wrapNode"][Symbol.iterator]();!(Ce=(we=Te.next()).done);Ce=!0){Ee(we.value)}}catch(e){Se=!0,De=e}finally{try{!Ce&&Te.return&&Te.return()}finally{if(Se)throw De}}be.moveNodeByKey=function(e,t,n){for(var r=arguments.length,o=Array(r>3?r-3:0),i=3;i<r;i++)o[i-3]=arguments[i];var a=e.value.document,s=a.assertPath(t),l=a.assertPath(n);e.moveNodeByPath.apply(e,[s,l].concat(o))},be.splitDescendantsByKey=function(e,t,n){for(var r=arguments.length,o=Array(r>3?r-3:0),i=3;i<r;i++)o[i-3]=arguments[i];var a=e.value.document,s=a.assertPath(t),l=a.assertPath(n);e.splitDescendantsByPath.apply(e,[s,l].concat(o))};var xe={redo:function(e){var t=e.value,n=t.history;if(n){var r=n,o=r.undos,i=r.redos,a=i.peek();a&&(i=i.pop(),o=o.push(a),a.forEach(function(t){var n=t,r=n.type,o=n.properties;"set_selection"==r&&(t=t.set("properties",u()(o,"isFocused"))),e.withoutSaving(function(){e.applyOperation(t)})}),t=e.value,n=n.set("undos",o).set("redos",i),t=t.set("history",n),e.value=t)}},undo:function(e){var t=e.value,n=t.history;if(n){var r=n,o=r.undos,i=r.redos,a=o.peek();a&&(o=o.pop(),i=i.push(a),a.slice().reverse().map(function(e){return e.invert()}).forEach(function(t){var n=t,r=n.type,o=n.properties;"set_selection"==r&&(t=t.set("properties",u()(o,"isFocused"))),e.withoutSaving(function(){e.applyOperation(t)})}),t=e.value,n=n.set("undos",o).set("redos",i),t=t.set("history",n),e.value=t)}}},Re={key:void 0,offset:void 0,path:void 0},ke=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"isAtEndOfNode",value:function(e){if(this.isUnset)return!1;var t=e.getLastText();return this.key===t.key&&this.offset===t.text.length}},{key:"isAtStartOfNode",value:function(e){if(this.isUnset)return!1;if(0!=this.offset)return!1;var t=e.getFirstText();return this.key===t.key}},{key:"isInNode",value:function(e){return!this.isUnset&&("text"===e.object&&e.key===this.key||!!e.hasNode(this.key))}},{key:"moveBackward",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return 0===e?this:e<0?this.moveForward(-e):this.setOffset(this.offset-e)}},{key:"moveForward",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return 0===e?this:e<0?this.moveBackward(-e):this.setOffset(this.offset+e)}},{key:"moveTo",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.key;return"number"==typeof e?(t=e,e=this.path):"string"==typeof e?e=(n=e)===this.key?this.path:null:n=e.equals(this.path)?this.key:null,this.merge({key:n,path:e,offset:t})}},{key:"moveToStartOfNode",value:function(e){var t=e.getFirstText();return this.moveTo(t.key,0)}},{key:"moveToEndOfNode",value:function(e){var t=e.getLastText();return this.moveTo(t.key,t.text.length)}},{key:"normalize",value:function(e){if(null==this.key&&null==this.path)return this.setOffset(null);var n=this.key,r=this.offset,o=this.path,i=e.getNode(n||o);if(!i){Object(a.a)(!1,"A point's `path` or `key` invalid and was reset!");var s=e.getFirstText();return s?this.merge({key:s.key,offset:0,path:e.getPath(s.key)}):t.create()}if("text"!==i.object){Object(a.a)(!1,"A point should not reference a non-text node!");var l=i.getTextAtOffset(r),u=i.getOffset(l.key);return this.merge({offset:r-u,key:l.key,path:e.getPath(l.key)})}return i&&o&&n&&n!==i.key&&Object(a.a)(!1,"A point's `key` did not match its `path`!"),this.merge({key:i.key,path:null==o?e.getPath(i.key):o,offset:null==r?0:Math.min(r,i.text.length)})}},{key:"setKey",value:function(e){return null!==e&&(e=y.create(e)),this.set("key",e)}},{key:"setOffset",value:function(e){return this.set("offset",e)}},{key:"setPath",value:function(e){return null!==e&&(e=ye.create(e)),this.set("path",e)}},{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={object:this.object,key:this.key,offset:this.offset,path:this.path&&this.path.toArray()};return e.preserveKeys||delete t.key,t}},{key:"unset",value:function(){return this.merge({key:null,offset:null,path:null})}},{key:"isSet",get:function(){return null!=this.key&&null!=this.offset&&null!=this.path}},{key:"isUnset",get:function(){return!this.isSet}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isPoint(e))return e;if(o()(e))return t.fromJSON(e);throw new Error("`Point.create` only accepts objects or points, but you passed it: "+e)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isPoint(e))return{key:e.key,offset:e.offset,path:e.path};if(o()(e)){var n={};return"key"in e&&(n.key=e.key),"offset"in e&&(n.offset=e.offset),"path"in e&&(n.path=ye.create(e.path)),"path"in e&&!("key"in e)&&(n.key=null),"key"in e&&!("path"in e)&&(n.path=null),n}throw new Error("`Point.createProperties` only accepts objects or points, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.key,r=void 0===n?null:n,o=e.offset,i=void 0===o?null:o,a=e.path,s=void 0===a?null:a;return new t({key:r,offset:i,path:ye.create(s)})}}]),t}(Object(i.Record)(Re)),Ne={anchor:void 0,focus:void 0,mark:void 0},Ie=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"setProperties",value:function(e){var n=e=t.createProperties(e),r=n.anchor,o=n.focus,i=n.mark,a={};return r&&(a.anchor=ke.create(r)),o&&(a.focus=ke.create(o)),i&&(a.mark=P.create(i)),this.merge(a)}},{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{object:this.object,anchor:this.anchor.toJSON(e),focus:this.focus.toJSON(e),mark:this.mark.toJSON(e)}}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isDecoration(e))return e;if(Pe.isRange(e))return t.fromJSON(Pe.createProperties(e));if(o()(e))return t.fromJSON(e);throw new Error("`Decoration.create` only accepts objects or decorations, but you passed it: "+e)}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Decoration.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isDecoration(e))return{anchor:ke.createProperties(e.anchor),focus:ke.createProperties(e.focus),mark:P.create(e.mark)};if(o()(e)){var n={};return"anchor"in e&&(n.anchor=ke.create(e.anchor)),"focus"in e&&(n.focus=ke.create(e.focus)),"mark"in e&&(n.mark=P.create(e.mark)),n}throw new Error("`Decoration.createProperties` only accepts objects or decorations, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.anchor,r=e.focus,o=e.mark;if(!o)throw new Error("Decorations must be created with a `mark`, but you passed: "+JSON.stringify(e));return new t({anchor:ke.fromJSON(n||{}),focus:ke.fromJSON(r||{}),mark:P.fromJSON(o)})}}]),t}(Object(i.Record)(Ne)),Oe={block:"@@__SLATE_BLOCK__@@",change:"@@__SLATE_CHANGE__@@",decoration:"@@__SLATE_DECORATION__@@",document:"@@__SLATE_DOCUMENT__@@",history:"@@__SLATE_HISTORY__@@",inline:"@@__SLATE_INLINE__@@",leaf:"@@__SLATE_LEAF__@@",mark:"@@__SLATE_MARK__@@",operation:"@@__SLATE_OPERATION__@@",point:"@@__SLATE_POINT__@@",range:"@@__SLATE_RANGE__@@",schema:"@@__SLATE_SCHEMA__@@",selection:"@@__SLATE_SELECTION__@@",stack:"@@__SLATE_STACK__@@",text:"@@__SLATE_TEXT__@@",value:"@@__SLATE_VALUE__@@"};function Ae(e,t){return!(!t||!t[Oe[e]])}var Me={anchor:void 0,focus:void 0},Pe=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{object:this.object,anchor:this.anchor.toJSON(e),focus:this.focus.toJSON(e)}}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isRange(e))return"range"===e.object?e:t.fromJSON(t.createProperties(e));if(o()(e))return t.fromJSON(e);throw new Error("`Range.create` only accepts objects or ranges, but you passed it: "+e)}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Range.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isRange(e))return{anchor:ke.createProperties(e.anchor),focus:ke.createProperties(e.focus)};if(o()(e)){var n={};return"anchor"in e&&(n.anchor=ke.create(e.anchor)),"focus"in e&&(n.focus=ke.create(e.focus)),n}throw new Error("`Range.createProperties` only accepts objects, decorations, ranges or selections, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.anchor,r=e.focus;return new t({anchor:ke.fromJSON(n||{}),focus:ke.fromJSON(r||{})})}},{key:"isRange",value:function(e){return Ae("range",e)||Ie.isDecoration(e)||Fe.isSelection(e)}}]),t}(Object(i.Record)(Me)),Le={anchor:void 0,focus:void 0,isFocused:void 0,marks:void 0},Fe=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"setIsFocused",value:function(e){return this.set("isFocused",e)}},{key:"setMarks",value:function(e){return this.set("marks",e)}},{key:"setProperties",value:function(e){var n=e=t.createProperties(e),r=n.anchor,o=n.focus,i=w(n,["anchor","focus"]);return r&&(i.anchor=ke.create(r)),o&&(i.focus=ke.create(o)),this.merge(i)}},{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{object:this.object,anchor:this.anchor.toJSON(e),focus:this.focus.toJSON(e),isFocused:this.isFocused,marks:null==this.marks?null:this.marks.toArray().map(function(e){return e.toJSON()})}}},{key:"isBlurred",get:function(){return!this.isFocused}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isSelection(e))return e;if(Pe.isRange(e))return t.fromJSON(Pe.createProperties(e));if(o()(e))return t.fromJSON(e);throw new Error("`Selection.create` only accepts objects, ranges or selections, but you passed it: "+e)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isSelection(e))return{anchor:ke.createProperties(e.anchor),focus:ke.createProperties(e.focus),isFocused:e.isFocused,marks:e.marks};if(Pe.isRange(e))return{anchor:ke.createProperties(e.anchor),focus:ke.createProperties(e.focus)};if(o()(e)){var n={};return"anchor"in e&&(n.anchor=ke.create(e.anchor)),"focus"in e&&(n.focus=ke.create(e.focus)),"isFocused"in e&&(n.isFocused=e.isFocused),"marks"in e&&(n.marks=null==e.marks?null:P.createSet(e.marks)),n}throw new Error("`Selection.createProperties` only accepts objects, ranges or selections, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.anchor,r=e.focus,o=e.isFocused,a=void 0!==o&&o,s=e.marks,l=void 0===s?null:s;return new t({anchor:ke.fromJSON(n||{}),focus:ke.fromJSON(r||{}),isFocused:a,marks:null==l?null:new i.Set(l.map(P.fromJSON))})}}]),t}(Object(i.Record)(Le)),Ue={};function je(e,t){for(var n,r=arguments.length,o=Array(r>2?r-2:0),i=2;i<r;i++)o[i-2]=arguments[i];var a=(n=e.value.selection)[t].apply(n,o);e.select(a)}function Be(e,t,n,r){var o=t.slice(0,1).toUpperCase()+t.slice(1),i=n.slice(0,1).toUpperCase()+n.slice(1),a=r.slice(0,1).toUpperCase()+r.slice(1),s="move"+o+"To"+i+"OfNode",l="text"==r?"getNode":"getClosest"+a,u=e.value,c=u.document,f=u.selection[t],d=c[l](f.key);d&&e[s](d)}function Ge(e,t,n,r,o){var i=t.slice(0,1).toUpperCase()+t.slice(1),a=n.slice(0,1).toUpperCase()+n.slice(1),s=r.slice(0,1).toUpperCase()+r.slice(1),l=o.slice(0,1).toUpperCase()+o.slice(1),u="move"+i+"To"+a+"OfNode",c="text"==o?"getNode":"getClosest"+l,f="get"+s+l,d=e.value,p=d.document,m=d.selection[t],h=p[c](m.key);if(h){var _=p[f](h.key);_&&e[u](_)}}function qe(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(0!==n){if(n<0)return Ve(e,t,-n);var r=t.slice(0,1).toUpperCase()+t.slice(1),o=e.value,i=o.document,a=o.selection,s=o.schema,l=a[t],u=i.hasVoidParent(l.path,s);if(!u&&l.offset-n>=0){var c=a["move"+r+"Backward"](n);e.select(c)}else{var f=i.getPreviousText(l.path);if(f){var d=i.getClosestBlock(l.path).hasNode(f.key),p=f&&i.hasVoidParent(f.key,s);if(e["move"+r+"ToEndOfNode"](f),!u&&!p&&d){var m=e.value.selection["move"+r+"Backward"](n);e.select(m)}}}}}function Ve(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(0!==n){if(n<0)return qe(e,t,-n);var r=t.slice(0,1).toUpperCase()+t.slice(1),o=e.value,i=o.document,a=o.selection,s=o.schema,l=a[t],u=i.getNode(l.path),c=i.hasVoidParent(l.path,s);if(!c&&l.offset+n<=u.text.length){var f=a["move"+r+"Forward"](n);e.select(f)}else{var d=i.getNextText(l.path);if(d){var p=i.getClosestBlock(l.path).hasNode(d.key),m=i.hasVoidParent(d.key,s);if(e["move"+r+"ToStartOfNode"](d),!c&&!m&&p){var h=e.value.selection["move"+r+"Forward"](n);e.select(h)}}}}}Ue.blur=function(e){e.select({isFocused:!1})},Ue.deselect=function(e){var t=Fe.create();e.select(t)},Ue.focus=function(e){e.select({isFocused:!0})},Ue.flip=function(e){e.call(je,"flip")},Ue.moveAnchorBackward=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[qe,"anchor"].concat(n))},Ue.moveAnchorForward=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[Ve,"anchor"].concat(n))},Ue.moveAnchorTo=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[je,"moveAnchorTo"].concat(n))},Ue.moveAnchorToEndOfBlock=function(e){e.call(Be,"anchor","end","block")},Ue.moveAnchorToEndOfInline=function(e){e.call(Be,"anchor","end","inline")},Ue.moveAnchorToEndOfDocument=function(e){e.moveAnchorToEndOfNode(e.value.document).moveToAnchor()},Ue.moveAnchorToEndOfNextBlock=function(e){e.call(Ge,"anchor","end","next","block")},Ue.moveAnchorToEndOfNextInline=function(e){e.call(Ge,"anchor","end","next","inline")},Ue.moveAnchorToEndOfNextText=function(e){e.call(Ge,"anchor","end","next","text")},Ue.moveAnchorToEndOfNode=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[je,"moveAnchorToEndOfNode"].concat(n))},Ue.moveAnchorToEndOfPreviousBlock=function(e){e.call(Ge,"anchor","end","previous","block")},Ue.moveAnchorToEndOfPreviousInline=function(e){e.call(Ge,"anchor","end","previous","inline")},Ue.moveAnchorToEndOfPreviousText=function(e){e.call(Ge,"anchor","end","previous","text")},Ue.moveAnchorToEndOfText=function(e){e.call(Be,"anchor","end","text")},Ue.moveAnchorToStartOfBlock=function(e){e.call(Be,"anchor","start","block")},Ue.moveAnchorToStartOfDocument=function(e){e.moveAnchorToStartOfNode(e.value.document).moveToAnchor()},Ue.moveAnchorToStartOfInline=function(e){e.call(Be,"anchor","start","inline")},Ue.moveAnchorToStartOfNextBlock=function(e){e.call(Ge,"anchor","start","next","block")},Ue.moveAnchorToStartOfNextInline=function(e){e.call(Ge,"anchor","start","next","inline")},Ue.moveAnchorToStartOfNextText=function(e){e.call(Ge,"anchor","start","next","text")},Ue.moveAnchorToStartOfNode=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[je,"moveAnchorToStartOfNode"].concat(n))},Ue.moveAnchorToStartOfPreviousBlock=function(e){e.call(Ge,"anchor","start","previous","block")},Ue.moveAnchorToStartOfPreviousInline=function(e){e.call(Ge,"anchor","start","previous","inline")},Ue.moveAnchorToStartOfPreviousText=function(e){e.call(Ge,"anchor","start","previous","text")},Ue.moveAnchorToStartOfText=function(e){e.call(Be,"anchor","start","text")},Ue.moveBackward=function(e){for(var t,n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];(t=e.moveAnchorBackward.apply(e,r)).moveFocusBackward.apply(t,r)},Ue.moveEndBackward=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[qe,"end"].concat(n))},Ue.moveEndForward=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[Ve,"end"].concat(n))},Ue.moveEndTo=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[je,"moveEndTo"].concat(n))},Ue.moveEndToEndOfBlock=function(e){e.call(Be,"end","end","block")},Ue.moveEndToEndOfDocument=function(e){e.moveEndToEndOfNode(e.value.document).moveToEnd()},Ue.moveEndToEndOfInline=function(e){e.call(Be,"end","end","inline")},Ue.moveEndToEndOfNextBlock=function(e){e.call(Ge,"end","end","next","block")},Ue.moveEndToEndOfNextInline=function(e){e.call(Ge,"end","end","next","inline")},Ue.moveEndToEndOfNextText=function(e){e.call(Ge,"end","end","next","text")},Ue.moveEndToEndOfNode=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[je,"moveEndToEndOfNode"].concat(n))},Ue.moveEndToEndOfPreviousBlock=function(e){e.call(Ge,"end","end","previous","block")},Ue.moveEndToEndOfPreviousInline=function(e){e.call(Ge,"end","end","previous","inline")},Ue.moveEndToEndOfPreviousText=function(e){e.call(Ge,"end","end","previous","text")},Ue.moveEndToEndOfText=function(e){e.call(Be,"end","end","text")},Ue.moveEndToStartOfBlock=function(e){e.call(Be,"end","start","block")},Ue.moveEndToStartOfDocument=function(e){e.moveEndToStartOfNode(e.value.document).moveToEnd()},Ue.moveEndToStartOfInline=function(e){e.call(Be,"end","start","inline")},Ue.moveEndToStartOfNextBlock=function(e){e.call(Ge,"end","start","next","block")},Ue.moveEndToStartOfNextInline=function(e){e.call(Ge,"end","start","next","inline")},Ue.moveEndToStartOfNextText=function(e){e.call(Ge,"end","start","next","text")},Ue.moveEndToStartOfNode=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[je,"moveEndToStartOfNode"].concat(n))},Ue.moveEndToStartOfPreviousBlock=function(e){e.call(Ge,"end","start","previous","block")},Ue.moveEndToStartOfPreviousInline=function(e){e.call(Ge,"end","start","previous","inline")},Ue.moveEndToStartOfPreviousText=function(e){e.call(Ge,"end","start","previous","text")},Ue.moveEndToStartOfText=function(e){e.call(Be,"end","start","text")},Ue.moveFocusBackward=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[qe,"focus"].concat(n))},Ue.moveFocusForward=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[Ve,"focus"].concat(n))},Ue.moveFocusTo=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[je,"moveFocusTo"].concat(n))},Ue.moveFocusToEndOfBlock=function(e){e.call(Be,"focus","end","block")},Ue.moveFocusToEndOfDocument=function(e){e.moveFocusToEndOfNode(e.value.document).moveToFocus()},Ue.moveFocusToEndOfInline=function(e){e.call(Be,"focus","end","inline")},Ue.moveFocusToEndOfNextBlock=function(e){e.call(Ge,"focus","end","next","block")},Ue.moveFocusToEndOfNextInline=function(e){e.call(Ge,"focus","end","next","inline")},Ue.moveFocusToEndOfNextText=function(e){e.call(Ge,"focus","end","next","text")},Ue.moveFocusToEndOfNode=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[je,"moveFocusToEndOfNode"].concat(n))},Ue.moveFocusToEndOfPreviousBlock=function(e){e.call(Ge,"focus","end","previous","block")},Ue.moveFocusToEndOfPreviousInline=function(e){e.call(Ge,"focus","end","previous","inline")},Ue.moveFocusToEndOfPreviousText=function(e){e.call(Ge,"focus","end","previous","text")},Ue.moveFocusToEndOfText=function(e){e.call(Be,"focus","end","text")},Ue.moveFocusToStartOfBlock=function(e){e.call(Be,"focus","start","block")},Ue.moveFocusToStartOfDocument=function(e){e.moveFocusToStartOfNode(e.value.document).moveToFocus()},Ue.moveFocusToStartOfInline=function(e){e.call(Be,"focus","start","inline")},Ue.moveFocusToStartOfNextBlock=function(e){e.call(Ge,"focus","start","next","block")},Ue.moveFocusToStartOfNextInline=function(e){e.call(Ge,"focus","start","next","inline")},Ue.moveFocusToStartOfNextText=function(e){e.call(Ge,"focus","start","next","text")},Ue.moveFocusToStartOfNode=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[je,"moveFocusToStartOfNode"].concat(n))},Ue.moveFocusToStartOfPreviousBlock=function(e){e.call(Ge,"focus","start","previous","block")},Ue.moveFocusToStartOfPreviousInline=function(e){e.call(Ge,"focus","start","previous","inline")},Ue.moveFocusToStartOfPreviousText=function(e){e.call(Ge,"focus","start","previous","text")},Ue.moveFocusToStartOfText=function(e){e.call(Be,"focus","start","text")},Ue.moveForward=function(e){for(var t,n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];(t=e.moveAnchorForward.apply(e,r)).moveFocusForward.apply(t,r)},Ue.moveStartBackward=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[qe,"start"].concat(n))},Ue.moveStartForward=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[Ve,"start"].concat(n))},Ue.moveStartTo=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[je,"moveStartTo"].concat(n))},Ue.moveStartToEndOfBlock=function(e){e.call(Be,"start","end","block")},Ue.moveStartToEndOfDocument=function(e){e.moveStartToEndOfNode(e.value.document).moveToStart()},Ue.moveStartToEndOfInline=function(e){e.call(Be,"start","end","inline")},Ue.moveStartToEndOfNextBlock=function(e){e.call(Ge,"start","end","next","block")},Ue.moveStartToEndOfNextInline=function(e){e.call(Ge,"start","end","next","inline")},Ue.moveStartToEndOfNextText=function(e){e.call(Ge,"start","end","next","text")},Ue.moveStartToEndOfNode=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[je,"moveStartToEndOfNode"].concat(n))},Ue.moveStartToEndOfPreviousBlock=function(e){e.call(Ge,"start","end","previous","block")},Ue.moveStartToEndOfPreviousInline=function(e){e.call(Ge,"start","end","previous","inline")},Ue.moveStartToEndOfPreviousText=function(e){e.call(Ge,"start","end","previous","text")},Ue.moveStartToEndOfText=function(e){e.call(Be,"start","end","text")},Ue.moveStartToStartOfBlock=function(e){e.call(Be,"start","start","block")},Ue.moveStartToStartOfDocument=function(e){e.moveStartToStartOfNode(e.value.document).moveToStart()},Ue.moveStartToStartOfInline=function(e){e.call(Be,"start","start","inline")},Ue.moveStartToStartOfNextBlock=function(e){e.call(Ge,"start","start","next","block")},Ue.moveStartToStartOfNextInline=function(e){e.call(Ge,"start","start","next","inline")},Ue.moveStartToStartOfNextText=function(e){e.call(Ge,"start","start","next","text")},Ue.moveStartToStartOfNode=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[je,"moveStartToStartOfNode"].concat(n))},Ue.moveStartToStartOfPreviousBlock=function(e){e.call(Ge,"start","start","previous","block")},Ue.moveStartToStartOfPreviousInline=function(e){e.call(Ge,"start","start","previous","inline")},Ue.moveStartToStartOfPreviousText=function(e){e.call(Ge,"start","start","previous","text")},Ue.moveStartToStartOfText=function(e){e.call(Be,"start","start","text")},Ue.moveTo=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[je,"moveTo"].concat(n))},Ue.moveToAnchor=function(e){e.call(je,"moveToAnchor")},Ue.moveToEnd=function(e){e.call(je,"moveToEnd")},Ue.moveToEndOfBlock=function(e){e.moveEndToEndOfBlock().moveToEnd()},Ue.moveToEndOfDocument=function(e){e.moveEndToEndOfNode(e.value.document).moveToEnd()},Ue.moveToEndOfInline=function(e){e.moveEndToEndOfInline().moveToEnd()},Ue.moveToEndOfNextBlock=function(e){e.moveEndToEndOfNextBlock().moveToEnd()},Ue.moveToEndOfNextInline=function(e){e.moveEndToEndOfNextInline().moveToEnd()},Ue.moveToEndOfNextText=function(e){e.moveEndToEndOfNextText().moveToEnd()},Ue.moveToEndOfNode=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[je,"moveToEndOfNode"].concat(n))},Ue.moveToEndOfPreviousBlock=function(e){e.moveStartToEndOfPreviousBlock().moveToStart()},Ue.moveToEndOfPreviousInline=function(e){e.moveStartToEndOfPreviousInline().moveToStart()},Ue.moveToEndOfPreviousText=function(e){e.moveStartToEndOfPreviousText().moveToStart()},Ue.moveToEndOfText=function(e){e.moveEndToEndOfText().moveToEnd()},Ue.moveToFocus=function(e){e.call(je,"moveToFocus")},Ue.moveToRangeOfDocument=function(e){e.moveToRangeOfNode(e.value.document)},Ue.moveToRangeOfNode=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[je,"moveToRangeOfNode"].concat(n))},Ue.moveToStart=function(e){e.call(je,"moveToStart")},Ue.moveToStartOfBlock=function(e){e.moveStartToStartOfBlock().moveToStart()},Ue.moveToStartOfDocument=function(e){e.moveStartToStartOfNode(e.value.document).moveToStart()},Ue.moveToStartOfInline=function(e){e.moveStartToStartOfInline().moveToStart()},Ue.moveToStartOfNextBlock=function(e){e.moveEndToStartOfNextBlock().moveToEnd()},Ue.moveToStartOfNextInline=function(e){e.moveEndToStartOfNextInline().moveToEnd()},Ue.moveToStartOfNextText=function(e){e.moveEndToStartOfNextText().moveToEnd()},Ue.moveToStartOfNode=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[je,"moveToStartOfNode"].concat(n))},Ue.moveToStartOfPreviousBlock=function(e){e.moveStartToStartOfPreviousBlock().moveToStart()},Ue.moveToStartOfPreviousInline=function(e){e.moveStartToStartOfPreviousInline().moveToStart()},Ue.moveToStartOfPreviousText=function(e){e.moveStartToStartOfPreviousText().moveToStart()},Ue.moveToStartOfText=function(e){e.moveStartToStartOfText().moveToStart()},Ue.select=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};t=Fe.createProperties(t);var r=n.snapshot,o=void 0!==r&&r,a=e.value,s=a.document,l=a.selection,u={},c=l.setProperties(t);for(var d in c=s.resolveSelection(c),t=f()(c,Object.keys(t)))!0!==o&&Object(i.is)(t[d],l[d])||(u[d]=t[d]);l.marks&&!u.marks&&(u.anchor||u.focus)&&(u.marks=null),0!==Object.keys(u).length&&e.applyOperation({type:"set_selection",value:a,properties:u,selection:l.toJSON()},o?{skip:!1,merge:!1}:{})},Ue.setAnchor=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[je,"setAnchor"].concat(n))},Ue.setEnd=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[je,"setEnd"].concat(n))},Ue.setFocus=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[je,"setFocus"].concat(n))},Ue.setStart=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];e.call.apply(e,[je,"setStart"].concat(n))},Ue.snapshotSelection=function(e){e.withoutMerging(function(t){return t.select(e.value.selection,{snapshot:!0})})};var He=p()("slate:history"),Ye={redos:void 0,undos:void 0},ze=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"save",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this,r=n,o=r.undos,a=r.redos,s=t.merge;if(t.skip)return n;var l=o.peek(),u=l&&l.last();if(null==s&&(s=function(e,t){return!!t&&("set_selection"==e.type&&"set_selection"==t.type||"insert_text"==e.type&&"insert_text"==t.type&&e.offset==t.offset+t.text.length&&e.path.equals(t.path)||"remove_text"==e.type&&"remove_text"==t.type&&e.offset+e.text.length==t.offset&&e.path.equals(t.path))}(e,u)),He("save",{operation:e,merge:s}),s&&l){var c=l.push(e);o=(o=o.pop()).push(c)}else{var f=new i.List([e]);o=o.push(f)}return o.size>100&&(o=o.take(100)),a=a.clear(),n=n.set("undos",o).set("redos",a)}},{key:"toJSON",value:function(){return{object:this.object,redos:this.redos.toJSON(),undos:this.undos.toJSON()}}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isHistory(e))return e;if(o()(e))return t.fromJSON(e);throw new Error("`History.create` only accepts objects or histories, but you passed it: "+e)}},{key:"createOperationsList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e))return e;if(Array.isArray(e))return new i.List(e);throw new Error("`History.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.redos,r=void 0===n?[]:n,o=e.undos,a=void 0===o?[]:o;return new t({redos:new i.Stack(r.map(this.createOperationsList)),undos:new i.Stack(a.map(this.createOperationsList))})}}]),t}(Object(i.Record)(Ye));var We={plugins:void 0},Ke=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"getPluginsWith",value:function(e){return this.plugins.filter(function(t){return null!=t[e]})}},{key:"find",value:function(e){for(var t=this.getPluginsWith(e),n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];var i=!0,a=!1,s=void 0;try{for(var l,u=t[Symbol.iterator]();!(i=(l=u.next()).done);i=!0){var c=l.value,f=c[e].apply(c,r);if(null!=f)return f}}catch(e){a=!0,s=e}finally{try{!i&&u.return&&u.return()}finally{if(a)throw s}}}},{key:"map",value:function(e){for(var t=this.getPluginsWith(e),n=[],r=arguments.length,o=Array(r>1?r-1:0),i=1;i<r;i++)o[i-1]=arguments[i];var a=!0,s=!1,l=void 0;try{for(var u,c=t[Symbol.iterator]();!(a=(u=c.next()).done);a=!0){var f=u.value,d=f[e].apply(f,o);null!=d&&n.push(d)}}catch(e){s=!0,l=e}finally{try{!a&&c.return&&c.return()}finally{if(s)throw l}}return n}},{key:"run",value:function(e){for(var t=this.getPluginsWith(e),n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];var i=!0,a=!1,s=void 0;try{for(var l,u=t[Symbol.iterator]();!(i=(l=u.next()).done);i=!0){var c=l.value;if(null!=c[e].apply(c,r))return}}catch(e){a=!0,s=e}finally{try{!i&&u.return&&u.return()}finally{if(a)throw s}}}},{key:"render",value:function(e,t){for(var n=arguments.length,r=Array(n>2?n-2:0),o=2;o<n;o++)r[o-2]=arguments[o];return this.getPluginsWith(e).reduceRight(function(n,o){if(!o[e])return n;var i=o[e].apply(o,[t].concat(r));return null==i?n:(t.children=i,i)},void 0===t.children?null:t.children)}}],[{key:"create",value:function(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).plugins;return new t({plugins:void 0===e?[]:e})}}]),t}(Object(i.Record)(We));V(Ke.prototype,["getPluginsWith"]);var $e=function(e){function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};E(this,t);var r=T(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));for(var o in r.code=e,n)r[o]=n[o];return Error.captureStackTrace?Error.captureStackTrace(r,r.constructor):r.stack=(new Error).stack,r}return D(t,e),t}(Error),Qe=p()("slate:schema"),Xe=[{match:{object:"document"},nodes:[{match:{object:"block"}}]},{match:{object:"block",first:{object:"block"}},nodes:[{match:{object:"block"}}]},{match:{object:"block",first:[{object:"inline"},{object:"text"}]},nodes:[{match:[{object:"inline"},{object:"text"}]}]},{match:{object:"inline"},nodes:[{match:[{object:"inline"},{object:"text"}]}]},{match:[{object:"block"},{object:"inline"}],nodes:[{min:1}],normalize:function(e,t){var n=t.code,r=t.node;"child_required"===n&&e.insertNodeByKey(r.key,0,W.create(),{normalize:!1})}},{match:{object:"block"},first:[{object:"block"},{object:"text"}],last:[{object:"block"},{object:"text"}],normalize:function(e,t){var n=t.code,r=t.node,o=W.create(),i=void 0;if("first_child_object_invalid"===n)i=0;else{if("last_child_object_invalid"!==n)return;i=r.nodes.size}e.insertNodeByKey(r.key,i,o,{normalize:!1})}},{match:{object:"inline"},first:[{object:"block"},{object:"text"}],last:[{object:"block"},{object:"text"}],previous:[{object:"block"},{object:"text"}],next:[{object:"block"},{object:"text"}],normalize:function(e,t){var n=t.code,r=t.node,o=t.index,i=W.create(),a=void 0;if("first_child_object_invalid"===n)a=0;else if("last_child_object_invalid"===n)a=r.nodes.size;else if("previous_sibling_object_invalid"===n)a=o;else{if("next_sibling_object_invalid"!==n)return;a=o+1}e.insertNodeByKey(r.key,a,i,{normalize:!1})}},{match:{object:"text"},next:[{object:"block"},{object:"inline"}],normalize:function(e,t){var n=t.code,r=t.next;"next_sibling_object_invalid"===n&&e.mergeNodeByKey(r.key,{normalize:!1})}}],Je={stack:void 0,rules:void 0},Ze=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"getNodeRules",value:function(e){return this.rules.filter(function(t){return et(e,t.match)})}},{key:"validateNode",value:function(e){var t=tt(e,this.getNodeRules(e),this.rules,{every:!0});if(t)return new $e(t.code,t)}},{key:"testNode",value:function(e){return!this.validateNode(e)}},{key:"assertNode",value:function(e){var t=this.validateNode(e);if(t)throw t}},{key:"normalizeNode",value:function(e){var t=this.stack.find("normalizeNode",e);if(t)return t;if("text"!=e.object){var n=this.validateNode(e);if(n)return function(e){Qe("normalizing",{error:n});var t=n.rule,r=e.operations.size;t.normalize&&t.normalize(e,n),e.operations.size===r&&function(e,t){var n=t.code,r=t.node,o=t.child,i=t.next,a=t.previous,s=t.key,l=t.mark;switch(n){case"child_object_invalid":case"child_type_invalid":case"child_unknown":case"first_child_object_invalid":case"first_child_type_invalid":case"last_child_object_invalid":case"last_child_type_invalid":return"text"===o.object&&"block"===r.object&&1===r.nodes.size?e.removeNodeByKey(r.key,{normalize:!1}):e.removeNodeByKey(o.key,{normalize:!1});case"previous_sibling_object_invalid":case"previous_sibling_type_invalid":return"text"===a.object&&"block"===r.object&&1===r.nodes.size?e.removeNodeByKey(r.key,{normalize:!1}):e.removeNodeByKey(a.key,{normalize:!1});case"next_sibling_object_invalid":case"next_sibling_type_invalid":return"text"===i.object&&"block"===r.object&&1===r.nodes.size?e.removeNodeByKey(r.key,{normalize:!1}):e.removeNodeByKey(i.key,{normalize:!1});case"child_required":case"node_text_invalid":case"parent_object_invalid":case"parent_type_invalid":return"document"===r.object?r.nodes.forEach(function(t){return e.removeNodeByKey(t.key,{normalize:!1})}):e.removeNodeByKey(r.key,{normalize:!1});case"node_data_invalid":return void 0===r.data.get(s)&&"document"!==r.object?e.removeNodeByKey(r.key,{normalize:!1}):e.setNodeByKey(r.key,{data:r.data.delete(s)},{normalize:!1});case"node_mark_invalid":return r.getTexts().forEach(function(t){return e.removeMarkByKey(t.key,0,t.text.length,l,{normalize:!1})});default:e.removeNodeByKey(r.key,{normalize:!1})}}(e,n)}}}},{key:"isAtomic",value:function(e){var t=this.rules.find(function(t){return"isAtomic"in t&&et(e,t.match)});return!!t&&t.isAtomic}},{key:"isVoid",value:function(e){var t=this.rules.find(function(t){return"isVoid"in t&&et(e,t.match)});return!!t&&t.isVoid}},{key:"toJSON",value:function(){return{object:this.object,rules:this.rules}}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isSchema(e))return e;if(o()(e))return t.fromJSON(e);throw new Error("`Schema.create` only accepts objects or schemas, but you passed it: "+e)}},{key:"fromJSON",value:function(e){if(t.isSchema(e))return e;var n=e.plugins?e.plugins:[{schema:e}],r=[].concat(Xe),o=!0,i=!1,a=void 0;try{for(var s,l=n[Symbol.iterator]();!(o=(s=l.next()).done);o=!0){var u=s.value.schema,c=void 0===u?{}:u,f=c.blocks,d=void 0===f?{}:f,p=c.inlines,m=void 0===p?{}:p,h=c.marks,_=void 0===h?{}:h;for(var g in c.rules&&(r=r.concat(c.rules)),c.document&&r.push(S({match:[{object:"document"}]},c.document)),d)r.push(S({match:[{object:"block",type:g}]},d[g]));for(var v in m)r.push(S({match:[{object:"inline",type:v}]},m[v]));for(var y in _)r.push(S({match:[{object:"mark",type:y}]},_[y]))}}catch(e){i=!0,a=e}finally{try{!o&&l.return&&l.return()}finally{if(i)throw a}}return new t({stack:Ke.create({plugins:n}),rules:r})}}]),t}(Object(i.Record)(Je));function et(e,t){return!tt(e,t)}function tt(e,t,n){var r=(arguments.length>3&&void 0!==arguments[3]?arguments[3]:{}).every,o=void 0!==r&&r;if(Array.isArray(t)){var i=t.length?t:[{}],a=void 0,s=!0,l=!1,u=void 0;try{for(var c,f=i[Symbol.iterator]();!(s=(c=f.next()).done);s=!0){var d=tt(e,c.value,n);if(a=a||d,o&&d)return d;if(!o&&!d)return}}catch(e){l=!0,u=e}finally{try{!s&&f.return&&f.return()}finally{if(l)throw u}}return a}return function(e,t){if(null==t.object)return;if(t.object===e.object)return;if("function"==typeof t.object&&t.object(e.object))return;return it("node_object_invalid",{rule:t,node:e})}(e,t)||function(e,t){if(null==t.type)return;if(t.type===e.type)return;if("function"==typeof t.type&&t.type(e.type))return;return it("node_type_invalid",{rule:t,node:e})}(e,t)||function(e,t){if(null==t.data)return;if(null==e.data)return;if("function"==typeof t.data){if(t.data(e.data))return;return it("node_data_invalid",{rule:t,node:e})}for(var n in t.data){var r=t.data[n],o=e.data&&e.data.get(n),i="function"==typeof r?r(o):r===o;if(!i)return it("node_data_invalid",{rule:t,node:e,key:n,value:o})}}(e,t)||function(e,t){if(null==t.marks)return;var n=e.getMarks().toArray(),r=function(n){var r=t.marks.some(function(e){return"function"==typeof e.type?e.type(n.type):e.type===n.type});return r?"continue":{v:it("node_mark_invalid",{rule:t,node:e,mark:n})}},o=!0,i=!1,a=void 0;try{for(var s,l=n[Symbol.iterator]();!(o=(s=l.next()).done);o=!0){var u=s.value,c=r(u);switch(c){case"continue":continue;default:if("object"===(void 0===c?"undefined":b(c)))return c.v}}}catch(e){i=!0,a=e}finally{try{!o&&l.return&&l.return()}finally{if(i)throw a}}}(e,t)||function(e,t){if(null==t.text)return;var n=e.text;if("function"==typeof t.text?t.text(n):t.text.test(n))return;return it("node_text_invalid",{rule:t,node:e,text:n})}(e,t)||function(e,t){if(null==t.first)return;var n=e.nodes.first();if(!n)return;var r=tt(n,t.first);if(!r)return;return r.rule=t,r.node=e,r.child=n,r.code=r.code.replace("node_","first_child_"),r}(e,t)||function(e,t){if(null==t.last)return;var n=e.nodes.last();if(!n)return;var r=tt(n,t.last);if(!r)return;return r.rule=t,r.node=e,r.child=n,r.code=r.code.replace("node_","last_child_"),r}(e,t)||function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(null==e.nodes)return;var r=e.nodes.toArray(),o=null!=t.nodes?t.nodes.slice():[],i=void 0,a=void 0,s=void 0,l=void 0,u=void 0,c=void 0,f=void 0,d=void 0;function p(){return i=null==i?null:0,l=o.shift(),a=l&&l.min,u=l&&l.max,!!l}function m(){return s=null==s?0:s+1,i=null==i?0:i+1,f=c,c=r[s],d=r[s+1],null!=u&&i==u&&p(),!!c}function h(){i-=1,s-=1}null!=t.nodes&&p();for(;m();){var _=nt(e,c,n)||rt(e,c,f,s,n)||ot(e,c,d,s,n);if(_)return _;if(null!=t.nodes){if(!l)return it("child_unknown",{rule:t,node:e,child:c,index:s});if(l.match){var g=tt(c,l.match);if(g&&i>=a&&p()){h();continue}if(g)return g.rule=t,g.node=e,g.child=c,g.index=s,g.code=g.code.replace("node_","child_"),g}}}if(null!=t.nodes)for(;null!=a;){if(i<a)return it("child_required",{rule:t,node:e,index:s});p()}}(e,t,n)}function nt(e,t,n){var r=!0,o=!1,i=void 0;try{for(var a,s=n[Symbol.iterator]();!(r=(a=s.next()).done);r=!0){var l=a.value;if(null!=l.parent&&et(t,l.match)){var u=tt(e,l.parent);if(u)return u.rule=l,u.parent=e,u.node=t,u.code=u.code.replace("node_","parent_"),u}}}catch(e){o=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}}function rt(e,t,n,r,o){if(n){var i=!0,a=!1,s=void 0;try{for(var l,u=o[Symbol.iterator]();!(i=(l=u.next()).done);i=!0){var c=l.value;if(null!=c.previous&&et(t,c.match)){var f=tt(n,c.previous);if(f)return f.rule=c,f.node=e,f.child=t,f.index=r,f.previous=n,f.code=f.code.replace("node_","previous_sibling_"),f}}}catch(e){a=!0,s=e}finally{try{!i&&u.return&&u.return()}finally{if(a)throw s}}}}function ot(e,t,n,r,o){if(n){var i=!0,a=!1,s=void 0;try{for(var l,u=o[Symbol.iterator]();!(i=(l=u.next()).done);i=!0){var c=l.value;if(null!=c.next&&et(t,c.match)){var f=tt(n,c.next);if(f)return f.rule=c,f.node=e,f.child=t,f.index=r,f.next=n,f.code=f.code.replace("node_","next_sibling_"),f}}}catch(e){a=!0,s=e}finally{try{!i&&u.return&&u.return()}finally{if(a)throw s}}}}function it(e,t){return S({code:e},t)}var at={data:void 0,decorations:void 0,document:void 0,history:void 0,schema:void 0,selection:void 0},st=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"change",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new vt(S({},e,{value:this}))}},{key:"addMark",value:function(e,t,n,r){var o=this,i=o.document;return i=i.addMark(e,t,n,r),o=this.set("document",i)}},{key:"insertNode",value:function(e,t){var n=this,r=n.document;return r=r.insertNode(e,t),n=(n=n.set("document",r)).mapRanges(function(e){return e.updatePoints(function(e){return e.setPath(null)})})}},{key:"insertText",value:function(e,t,n,r){var o=this,i=o,a=i.document,s=i.schema;a=a.insertText(e,t,n,r),o=o.set("document",a);var l=a.assertNode(e);return o=(o=o.mapRanges(function(e){var r=e,o=r.anchor,i=r.focus,a=r.isBackward,u=Ie.isDecoration(e)&&s.isAtomic(e.mark);return o.key!==l.key||!(o.offset>t)&&(o.offset!==t||u&&a)||(e=e.moveAnchorForward(n.length)),i.key===l.key&&(i.offset>t||i.offset==t&&(!u||a))&&(e=e.moveFocusForward(n.length)),e})).clearAtomicRanges(l.key,t)}},{key:"mergeNode",value:function(e){var t=this,n=t.document,r=n.mergeNode(e);e=n.resolvePath(e);var o=ye.decrement(e),i=n.getNode(o),a=n.getNode(e);return t=(t=t.set("document",r)).mapRanges(function(e){if("text"===a.object){var t=i.text.length;e.anchor.key===a.key&&(e=e.moveAnchorTo(i.key,t+e.anchor.offset)),e.focus.key===a.key&&(e=e.moveFocusTo(i.key,t+e.focus.offset))}return e=e.updatePoints(function(e){return e.setPath(null)})})}},{key:"moveNode",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=this,o=r.document;return o=o.moveNode(e,t,n),r=(r=r.set("document",o)).mapRanges(function(e){return e.updatePoints(function(e){return e.setPath(null)})})}},{key:"removeMark",value:function(e,t,n,r){var o=this,i=o.document;return i=i.removeMark(e,t,n,r),o=this.set("document",i)}},{key:"removeNode",value:function(e){var t=this,n=t.document,r=n.assertNode(e),o="text"==r.object?r:r.getFirstText()||r,i="text"==r.object?r:r.getLastText()||r,a=n.getPreviousText(o.key),s=n.getNextText(i.key);return n=n.removeNode(e),t=(t=t.set("document",n)).mapRanges(function(e){var t=e,n=t.start,o=t.end;return r.hasNode(n.key)&&(e=a?e.moveStartTo(a.key,a.text.length):s?e.moveStartTo(s.key,0):e.unset()),r.hasNode(o.key)&&(e=a?e.moveEndTo(a.key,a.text.length):s?e.moveEndTo(s.key,0):e.unset()),e=e.updatePoints(function(e){return e.setPath(null)})})}},{key:"removeText",value:function(e,t,n){var r=this,o=r.document;o=o.removeText(e,t,n),r=r.set("document",o);var i=o.assertNode(e),a=n.length,s=t+a;return r=(r=r.clearAtomicRanges(i.key,t,t+a)).mapRanges(function(e){var n=e,r=n.anchor,o=n.focus;return r.key===i.key&&(e=r.offset>=s?e.moveAnchorBackward(a):r.offset>t?e.moveAnchorTo(r.key,t):e),o.key===i.key&&(e=o.offset>=s?e.moveFocusBackward(a):o.offset>t?e.moveFocusTo(o.key,t):e),e})}},{key:"setNode",value:function(e,t){var n=this,r=n.document;return r=r.setNode(e,t),n=n.set("document",r)}},{key:"setMark",value:function(e,t,n,r,o){var i=this,a=i.document;return a=a.setMark(e,t,n,r,o),i=i.set("document",a)}},{key:"setProperties",value:function(e){var t=this,n=t.document,r=e.data,o=e.decorations,i=e.history,a=e.schema,s={};return r&&(s.data=r),i&&(s.history=i),a&&(s.schema=a),o&&(s.decorations=o.map(function(e){return e.isSet?e:n.resolveDecoration(e)})),t=t.merge(s)}},{key:"setSelection",value:function(e){var t=this,n=t,r=n.document,o=n.selection,i=o.setProperties(e);return o=r.resolveSelection(i),t=t.set("selection",o)}},{key:"splitNode",value:function(e,t,n){var r=this,o=r.document,i=o.splitNode(e,t,n),a=o.assertNode(e);return r=(r=r.set("document",i)).mapRanges(function(e){var n=i.getNextText(a.key),r=e,o=r.start,s=r.end;return a.key===o.key&&t<=o.offset&&(e=e.moveStartTo(n.key,o.offset-t)),a.key===s.key&&t<=s.offset&&(e=e.moveEndTo(n.key,s.offset-t)),e=e.updatePoints(function(e){return e.setPath(null)})})}},{key:"mapRanges",value:function(e){var t=this,n=t,r=n.document,o=n.selection,i=n.decorations,a=o.isSet?e(o):o;a||(a=o.unset()),a!==o&&(a=r.createSelection(a)),t=t.set("selection",a);var s=i.map(function(t){var n=t.isSet?e(t):t;return n&&n!==t&&(n=r.createDecoration(n)),n});return s=s.filter(function(e){return!!e}),t=t.set("decorations",s)}},{key:"clearAtomicRanges",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=this,o=r.schema;return r=this.mapRanges(function(r){if(!Ie.isDecoration(r))return r;var i=r.start,a=r.end,s=r.mark;return o.isAtomic(s)?i.key!==e?r:i.offset<t&&(a.key!==e||a.offset>t)?null:null!=n&&i.offset<n&&(a.key!==e||a.offset>n)?null:r:r})}},{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={object:this.object,document:this.document.toJSON(e)};return e.preserveData&&(t.data=this.data.toJSON(e)),e.preserveDecorations&&(t.decorations=this.decorations.toArray().map(function(t){return t.toJSON(e)})),e.preserveHistory&&(t.history=this.history.toJSON(e)),e.preserveSelection&&(t.selection=this.selection.toJSON(e)),e.preserveSchema&&(t.schema=this.schema.toJSON(e)),t}},{key:"startBlock",get:function(){return this.selection.start.key&&this.document.getClosestBlock(this.selection.start.key)}},{key:"endBlock",get:function(){return this.selection.end.key&&this.document.getClosestBlock(this.selection.end.key)}},{key:"anchorBlock",get:function(){return this.selection.anchor.key&&this.document.getClosestBlock(this.selection.anchor.key)}},{key:"focusBlock",get:function(){return this.selection.focus.key&&this.document.getClosestBlock(this.selection.focus.key)}},{key:"startInline",get:function(){return this.selection.start.key&&this.document.getClosestInline(this.selection.start.key)}},{key:"endInline",get:function(){return this.selection.end.key&&this.document.getClosestInline(this.selection.end.key)}},{key:"anchorInline",get:function(){return this.selection.anchor.key&&this.document.getClosestInline(this.selection.anchor.key)}},{key:"focusInline",get:function(){return this.selection.focus.key&&this.document.getClosestInline(this.selection.focus.key)}},{key:"startText",get:function(){return this.selection.start.key&&this.document.getDescendant(this.selection.start.key)}},{key:"endText",get:function(){return this.selection.end.key&&this.document.getDescendant(this.selection.end.key)}},{key:"anchorText",get:function(){return this.selection.anchor.key&&this.document.getDescendant(this.selection.anchor.key)}},{key:"focusText",get:function(){return this.selection.focus.key&&this.document.getDescendant(this.selection.focus.key)}},{key:"nextBlock",get:function(){return this.selection.end.key&&this.document.getNextBlock(this.selection.end.key)}},{key:"previousBlock",get:function(){return this.selection.start.key&&this.document.getPreviousBlock(this.selection.start.key)}},{key:"nextInline",get:function(){return this.selection.end.key&&this.document.getNextInline(this.selection.end.key)}},{key:"previousInline",get:function(){return this.selection.start.key&&this.document.getPreviousInline(this.selection.start.key)}},{key:"nextText",get:function(){return this.selection.end.key&&this.document.getNextText(this.selection.end.key)}},{key:"previousText",get:function(){return this.selection.start.key&&this.document.getPreviousText(this.selection.start.key)}},{key:"marks",get:function(){return this.selection.isUnset?new i.Set:this.selection.marks||this.document.getMarksAtRange(this.selection)}},{key:"activeMarks",get:function(){return this.selection.isUnset?new i.Set:this.selection.marks||this.document.getActiveMarksAtRange(this.selection)}},{key:"blocks",get:function(){return this.selection.isUnset?new i.List:this.document.getBlocksAtRange(this.selection)}},{key:"fragment",get:function(){return this.selection.isUnset?I.create():this.document.getFragmentAtRange(this.selection)}},{key:"inlines",get:function(){return this.selection.isUnset?new i.List:this.document.getInlinesAtRange(this.selection)}},{key:"texts",get:function(){return this.selection.isUnset?new i.List:this.document.getTextsAtRange(this.selection)}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.isValue(e))return e;if(o()(e))return t.fromJSON(e,n);throw new Error("`Value.create` only accepts objects or values, but you passed it: "+e)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isValue(e))return{data:e.data,decorations:e.decorations,schema:e.schema};if(o()(e)){var n={};return"data"in e&&(n.data=k.create(e.data)),"decorations"in e&&(n.decorations=Ie.createList(e.decorations)),"schema"in e&&(n.schema=Ze.create(e.schema)),n}throw new Error("`Value.createProperties` only accepts objects or values, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=e.data,o=void 0===r?{}:r,a=e.decorations,s=void 0===a?[]:a,l=e.document,u=void 0===l?{}:l,c=e.selection,f=void 0===c?{}:c,d=e.schema,p=void 0===d?{}:d,m=e.history,h=void 0===m?{}:m;if(o=k.fromJSON(o),p=Ze.fromJSON(p),h=ze.fromJSON(h),f=(u=I.fromJSON(u)).createSelection(f),s=Object(i.List)(s.map(function(e){return Ie.fromJSON(e)})),f.isUnset){var _=u.getFirstText();_&&(f=f.moveToStartOfNode(_)),f=u.createSelection(f)}var g=new t({data:o,decorations:s,document:u,selection:f,schema:p,history:h});if(!1!==n.normalize){var v=g.change();v.withoutSaving(function(){return v.normalize()}),g=v.value}return g}}]),t}(Object(i.Record)(at)),lt={setValue:function(e,t){t=st.createProperties(t);var n=e.value;e.applyOperation({type:"set_value",properties:t,value:n})}},ut=S({},X,ue,be,xe,Ue,lt),ct=p()("slate:operation:apply");function ft(e,t){var n=(t=_t.create(t)).type;switch(ct(n,t),n){case"add_mark":var r=t,o=r.path,i=r.offset,a=r.length,s=r.mark;return e.addMark(o,i,a,s);case"insert_node":var l=t,u=l.path,c=l.node;return e.insertNode(u,c);case"insert_text":var f=t,d=f.path,p=f.offset,m=f.text,h=f.marks;return e.insertText(d,p,m,h);case"merge_node":var _=t.path;return e.mergeNode(_);case"move_node":var g=t,v=g.path,y=g.newPath;return e.moveNode(v,y);case"remove_mark":var b=t,E=b.path,C=b.offset,S=b.length,D=b.mark;return e.removeMark(E,C,S,D);case"remove_node":var w=t.path;return e.removeNode(w);case"remove_text":var T=t,x=T.path,R=T.offset,k=T.text;return e.removeText(x,R,k);case"set_mark":var N=t,I=N.path,O=N.offset,A=N.length,M=N.mark,P=N.properties;return e.setMark(I,O,A,M,P);case"set_node":var L=t,F=L.path,U=L.properties;return e.setNode(F,U);case"set_selection":var j=t.properties;return e.setSelection(j);case"set_value":var B=t.properties;return e.setProperties(B);case"split_node":var G=t,q=G.path,V=G.position,H=G.properties;return e.splitNode(q,V,H);default:throw new Error('Unknown operation type: "'+n+'".')}}var dt=p()("slate:operation:invert");function pt(e){var t=(e=_t.create(e)).type;switch(dt(t,e),t){case"insert_node":return e.set("type","remove_node");case"remove_node":return e.set("type","insert_node");case"move_node":var n=e,r=n.newPath,o=n.path,i=r,a=o,s=o.size-1,l=r.size-1;return o.size<i.size&&o.slice(0,s).every(function(e,t){return e==i.get(t)})&&o.last()<i.get(s)&&(i=i.slice(0,s).concat(i.get(s)-1).concat(i.slice(s+1,i.size))),r.size<a.size&&r.slice(0,l).every(function(e,t){return e==a.get(t)})&&r.last()<=a.get(l)&&(a=a.slice(0,l).concat(a.get(l)+1).concat(a.slice(l+1,a.size))),e.set("path",i).set("newPath",a);case"merge_node":var u=e.path,c=ye.decrement(u);return e.set("type","split_node").set("path",c);case"split_node":var d=e.path,p=ye.increment(d);return e.set("type","merge_node").set("path",p);case"set_node":var m=e,h=m.properties,_=m.node,g=_.merge(h),v=f()(_,Object.keys(h));return e.set("node",g).set("properties",v);case"insert_text":return e.set("type","remove_text");case"remove_text":return e.set("type","insert_text");case"add_mark":return e.set("type","remove_mark");case"remove_mark":return e.set("type","add_mark");case"set_mark":var y=e,b=y.properties,E=y.mark,C=E.merge(b),S=f()(E,Object.keys(b));return e.set("mark",C).set("properties",S);case"set_selection":var D=e,w=D.properties,T=D.selection,x=T.merge(w),R=f()(T,Object.keys(w));return e.set("selection",x).set("properties",R);case"set_value":var k=e,N=k.properties,I=k.value,O=I.merge(N),A=f()(I,Object.keys(N));return e.set("value",O).set("properties",A);default:throw new Error('Unknown operation type: "'+t+'".')}}var mt={add_mark:["value","path","offset","length","mark"],insert_node:["value","path","node"],insert_text:["value","path","offset","text","marks"],merge_node:["value","path","position","properties","target"],move_node:["value","path","newPath"],remove_mark:["value","path","offset","length","mark"],remove_node:["value","path","node"],remove_text:["value","path","offset","text","marks"],set_mark:["value","path","offset","length","mark","properties"],set_node:["value","path","node","properties"],set_selection:["value","selection","properties"],set_value:["value","properties"],split_node:["value","path","position","properties","target"]},ht={length:void 0,mark:void 0,marks:void 0,newPath:void 0,node:void 0,offset:void 0,path:void 0,position:void 0,properties:void 0,selection:void 0,target:void 0,text:void 0,type:void 0,value:void 0},_t=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"apply",value:function(e){return ft(e,this)}},{key:"invert",value:function(){return pt(this)}},{key:"toJSON",value:function(){var e=this.object,t=this.type,n={object:e,type:t},r=mt[t],o=!0,i=!1,a=void 0;try{for(var s,l=r[Symbol.iterator]();!(o=(s=l.next()).done);o=!0){var u=s.value,c=this[u];if("document"!=u&&("selection"!=u&&"value"!=u&&("node"!=u||"insert_node"==t))){if("mark"!=u&&"marks"!=u&&"node"!=u&&"path"!=u&&"newPath"!=u||(c=c.toJSON()),"properties"==u&&"merge_node"==t){var f={};"data"in c&&(f.data=c.data.toJS()),"type"in c&&(f.type=c.type),c=f}if("properties"==u&&"set_mark"==t){var d={};"data"in c&&(d.data=c.data.toJS()),"type"in c&&(d.type=c.type),c=d}if("properties"==u&&"set_node"==t){var p={};"data"in c&&(p.data=c.data.toJS()),"type"in c&&(p.type=c.type),c=p}if("properties"==u&&"set_selection"==t){var m={};"anchor"in c&&(m.anchor=c.anchor.toJSON()),"focus"in c&&(m.focus=c.focus.toJSON()),"isFocused"in c&&(m.isFocused=c.isFocused),"marks"in c&&(m.marks=c.marks&&c.marks.toJSON()),c=m}if("properties"==u&&"set_value"==t){var h={};"data"in c&&(h.data=c.data.toJS()),"decorations"in c&&(h.decorations=c.decorations.toJS()),"schema"in c&&(h.schema=c.schema.toJS()),c=h}if("properties"==u&&"split_node"==t){var _={};"data"in c&&(_.data=c.data.toJS()),"type"in c&&(_.type=c.type),c=_}n[u]=c}}}catch(e){i=!0,a=e}finally{try{!o&&l.return&&l.return()}finally{if(i)throw a}}return n}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isOperation(e))return e;if(o()(e))return t.fromJSON(e);throw new Error("`Operation.create` only accepts objects or operations, but you passed it: "+e)}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Operation.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"fromJSON",value:function(e){if(t.isOperation(e))return e;var n=e.type,r=mt[n],o={type:n};if(!r)throw new Error('`Operation.fromJSON` was passed an unrecognized operation type: "'+n+'"');var i=!0,a=!1,s=void 0;try{for(var l,u=r[Symbol.iterator]();!(i=(l=u.next()).done);i=!0){var c=l.value,f=e[c];if(void 0===f){if("document"==c)continue;if("selection"==c)continue;if("value"==c)continue;if("node"==c&&"insert_node"!=n)continue;throw new Error('`Operation.fromJSON` was passed a "'+n+'" operation without the required "'+c+'" attribute.')}"path"!==c&&"newPath"!==c||(f=ye.create(f)),"mark"===c&&(f=P.create(f)),"marks"===c&&null!=f&&(f=P.createSet(f)),"node"===c&&(f=K.create(f)),"selection"===c&&(f=Fe.create(f)),"value"===c&&(f=st.create(f)),"properties"===c&&"merge_node"===n&&(f=K.createProperties(f)),"properties"===c&&"set_mark"===n&&(f=P.createProperties(f)),"properties"===c&&"set_node"===n&&(f=K.createProperties(f)),"properties"===c&&"set_selection"===n&&(f=Fe.createProperties(f)),"properties"===c&&"set_value"===n&&(f=st.createProperties(f)),"properties"===c&&"split_node"===n&&(f=K.createProperties(f)),o[c]=f}}catch(e){a=!0,s=e}finally{try{!i&&u.return&&u.return()}finally{if(a)throw s}}return new t(o)}},{key:"isOperationList",value:function(e){return i.List.isList(e)&&e.every(function(e){return t.isOperation(e)})}}]),t}(Object(i.Record)(ht)),gt=p()("slate:change"),vt=function(){function e(t){E(this,e);var n=t.value;this.value=n,this.operations=new i.List,this.tmp={dirty:[],merge:null,normalize:!0,save:!0}}return C(e,[{key:"applyOperation",value:function(e){var t=this.operations,n=this.value,r=n.history;o()(e)&&(e=S({},e,{value:n})),e=_t.create(e);var i=this.tmp,a=i.merge,s=i.save;null==a&&0!==t.size&&(a=!0),gt("apply",{operation:e,save:s,merge:a}),n=e.apply(n),r&&s&&(r=r.save(e,{merge:a}),n=n.set("history",r));var l=function(e){var t=e.type,n=e.node,r=e.path,o=e.newPath;switch(t){case"add_mark":case"insert_text":case"remove_mark":case"remove_text":case"set_mark":case"set_node":return[r];case"insert_node":var i=n.getKeysToPathsTable(),a=Object.values(i).map(function(e){return r.concat(e)}),s=ye.lift(r);return[s,r].concat(R(a));case"split_node":var l=ye.lift(r),u=ye.increment(r);return[l,r,u];case"merge_node":var c=ye.lift(r),f=ye.decrement(r);return[c,f];case"move_node":var d=ye.lift(r),p=ye.lift(o);return ye.isSibling(r,o)||(p.size&&ye.isYounger(r,o)&&(p=ye.decrement(p,1,r.size-1)),d.size&&ye.isYounger(o,r)&&(d=ye.increment(d,1,o.size-1))),[d,p];case"remove_node":var m=ye.lift(r);return[m];default:return[]}}(e),u=this.tmp.dirty.reduce(function(t,n){n=ye.create(n);var r=ye.transform(n,e);return t=t.concat(r.toArray())},l);return this.tmp.dirty=u,this.value=n,this.operations=t.push(e),this}},{key:"applyOperations",value:function(e,t){var n=this;return e.forEach(function(e){return n.applyOperation(e,t)}),this}},{key:"call",value:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return e.apply(void 0,[this].concat(n)),this.normalizeDirtyPaths(),this}},{key:"normalize",value:function(){var e=this.value.document.getKeysToPathsTable(),t=Object.values(e).map(ye.create);return this.tmp.dirty=this.tmp.dirty.concat(t),this.normalizeDirtyPaths(),this}},{key:"normalizeDirtyPaths",value:function(){if(!this.tmp.normalize)return this;for(;this.tmp.dirty.length;){var e=this.tmp.dirty.pop();this.normalizeNodeByPath(e)}return this}},{key:"normalizeNodeByPath",value:function(e){var t=this,n=this.value,r=n.document,o=n.schema,i=r.assertNode(e),a=0,s=o.stack.plugins.length+o.rules.length+("text"===i.object?1:i.nodes.size);return this.withoutNormalizing(function(){!function n(){var l=i.normalize(o);if(l){l(t),r=t.value.document;var u=i.key,c=r.getDescendant(e);if(c&&c.key===u)i=c;else{if(!(c=r.getDescendant(u)))return;i=c,e=r.getPath(u)}if(++a>s)throw new Error("A schema rule could not be normalized after sufficient iterations. This is usually due to a `rule.normalize` or `plugin.normalizeNode` function of a schema being incorrectly written, causing an infinite loop.");n()}}()}),this}},{key:"withoutNormalizing",value:function(e){var t=this.tmp.normalize;return this.tmp.normalize=!1,e(this),this.tmp.normalize=t,this.normalizeDirtyPaths(),this}},{key:"withoutMerging",value:function(e){var t=this.tmp.merge;return this.tmp.merge=!1,e(this),this.tmp.merge=t,this}},{key:"withoutSaving",value:function(e){var t=this.tmp.save;return this.tmp.save=!1,e(this),this.tmp.save=t,this}},{key:"setOperationFlag",value:function(e,t){return Object(a.a)(!1,"As of slate@0.41.0 the `change.setOperationFlag` method has been deprecated."),this.tmp[e]=t,this}},{key:"getFlag",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object(a.a)(!1,"As of slate@0.41.0 the `change.getFlag` method has been deprecated."),void 0!==t[e]?t[e]:this.tmp[e]}},{key:"unsetOperationFlag",value:function(e){return Object(a.a)(!1,"As of slate@0.41.0 the `change.unsetOperationFlag` method has been deprecated."),delete this.tmp[e],this}},{key:"withoutNormalization",value:function(e){return Object(a.a)(!1,"As of slate@0.41.0 the `change.withoutNormalization` helper has been renamed to `change.withoutNormalizing`."),this.withoutNormalizing(e)}}]),e}();function yt(e,t){var n=!0,r=!1,o=void 0;try{for(var i,a=t[Symbol.iterator]();!(n=(i=a.next()).done);n=!0){var s=i.value,l=!0,u=!1,c=void 0;try{for(var f,d=Object.getOwnPropertyNames(e)[Symbol.iterator]();!(l=(f=d.next()).done);l=!0){var p=f.value;if(!s.hasOwnProperty(p)){var m=Object.getOwnPropertyDescriptor(e,p);Object.defineProperty(s,p,m)}}}catch(e){u=!0,c=e}finally{try{!l&&d.return&&d.return()}finally{if(u)throw c}}var h=!0,_=!1,g=void 0;try{for(var v,y=Object.getOwnPropertyNames(e.prototype)[Symbol.iterator]();!(h=(v=y.next()).done);h=!0){var b=v.value;if(!s.prototype.hasOwnProperty(b)){m=Object.getOwnPropertyDescriptor(e.prototype,b);Object.defineProperty(s.prototype,b,m)}}}catch(e){_=!0,g=e}finally{try{!h&&y.return&&y.return()}finally{if(_)throw g}}}}catch(e){r=!0,o=e}finally{try{!n&&a.return&&a.return()}finally{if(r)throw o}}}function bt(e){var t=Oe[e],n="is"+(""+e.charAt(0).toUpperCase()+e.slice(1)),r=function(){function t(){E(this,t)}return C(t,[{key:"object",get:function(){return e}}]),t}();return r[n]=Ae.bind(null,e),r.prototype[t]=!0,r}Object.keys(ut).forEach(function(e){vt.prototype[e]=function(){for(var t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return gt(e,{args:n}),this.call.apply(this,[ut[e]].concat(n)),this}}),yt(bt("block"),[Q]),yt(bt("change"),[vt]),yt(bt("decoration"),[Ie]),yt(bt("document"),[I]),yt(bt("history"),[ze]),yt(bt("inline"),[A]),yt(bt("leaf"),[F]),yt(bt("mark"),[P]),yt(bt("node"),[K]),yt(bt("operation"),[_t]),yt(bt("point"),[ke]),yt(bt("range"),[Pe]),yt(bt("schema"),[Ze]),yt(bt("selection"),[Fe]),yt(bt("stack"),[Ke]),yt(bt("text"),[W]),yt(bt("value"),[st]),yt(function(){function e(){E(this,e)}return C(e,[{key:"toJS",value:function(){return this.toJSON.apply(this,arguments)}}],[{key:"fromJS",value:function(){return this.fromJSON.apply(this,arguments)}}]),e}(),[Q,vt,Ie,I,ze,A,F,P,K,_t,ke,Pe,Ze,Fe,Ke,W,st]);var Et=function(){function e(){E(this,e)}return C(e,[{key:"getFirstInvalidNode",value:function(e){if("text"===this.object)return this.validate(e)?this:null;var t=null;return this.nodes.find(function(n){return t=n.validate(e)?n:n.getFirstInvalidNode(e)}),t}},{key:"getFirstText",value:function(){if("text"===this.object)return this;var e=null,t=this.nodes.find(function(t){return"text"===t.object||!!(e=t.getFirstText())});return e||t}},{key:"getKeysToPathsTable",value:function(){var e=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}({},this.key,[]);return this.nodes&&this.nodes.forEach(function(t,n){var r=t.getKeysToPathsTable();for(var o in r){var i=r[o];Object(a.a)(!(o in e),'A node with a duplicate key of "'+o+'" was found! Duplicate keys are not allowed, you should use `node.regenerateKey` before inserting if you are reusing an existing node.'),e[o]=[n].concat(R(i))}}),e}},{key:"getLastText",value:function(){if("text"===this.object)return this;var e=null,t=this.nodes.findLast(function(t){return"text"==t.object||(e=t.getLastText())});return e||t}},{key:"getNode",value:function(e){return(e=this.resolvePath(e))?"text"===this.object&&e.size?null:e.size?this.getDescendant(e):this:null}},{key:"getPath",value:function(e){if(i.List.isList(e))return e;var t=this.getKeysToPathsTable()[e];return t?Object(i.List)(t):null}},{key:"getText",value:function(){return("text"===this.object?this.leaves:this.nodes).reduce(function(e,t){return e+t.text},"")}},{key:"hasNode",value:function(e){return!!this.getNode(e)}},{key:"normalize",value:function(e){return e.normalizeNode(this)}},{key:"regenerateKey",value:function(){var e=y.create();return this.set("key",e)}},{key:"resolvePath",value:function(e,t){return"string"==typeof e?(e=this.getPath(e),null!=t&&(e=e.concat(t))):e=ye.create(e),e}},{key:"validate",value:function(e){return e.validateNode(this)}},{key:"text",get:function(){return this.getText()}}]),e}();V(Et.prototype,["getFirstInvalidNode","getFirstText","getKeysToPathsTable","getLastText","getText","normalize","validate"]),yt(Et,[Q,I,A,W]);var Ct=function(){function e(){E(this,e)}return C(e,[{key:"addMark",value:function(e,t,n,r){var o=this.assertDescendant(e);return e=this.resolvePath(e),o=o.addMark(t,n,r),this.replaceNode(e,o)}},{key:"createDecoration",value:function(e){return e=Ie.createProperties(e),this.resolveDecoration(e)}},{key:"createPoint",value:function(e){return e=ke.createProperties(e),this.resolvePoint(e)}},{key:"createRange",value:function(e){return e=Pe.createProperties(e),this.resolveRange(e)}},{key:"createSelection",value:function(e){return e=Fe.createProperties(e),this.resolveSelection(e)}},{key:"filterDescendants",value:function(e){var t=[];return this.forEachDescendant(function(n,r,o){e(n,r,o)&&t.push(n)}),Object(i.List)(t)}},{key:"findDescendant",value:function(e){var t=null;return this.forEachDescendant(function(n,r,o){if(e(n,r,o))return t=n,!1}),t}},{key:"forEachDescendant",value:function(e){var t=void 0;return this.nodes.forEach(function(n,r,o){return!1===e(n,r,o)?(t=!1,!1):"text"!=n.object?t=n.forEachDescendant(e):void 0}),t}},{key:"getActiveMarksAtRange",value:function(e){if((e=this.resolveRange(e)).isUnset)return Object(i.Set)();if(e.isCollapsed){var t=e.start;return this.getMarksAtPosition(t.key,t.offset).toSet()}var n=e,r=n.start,o=n.end,a=r.key,s=r.offset,l=o.key,u=o.offset,c=this.getDescendant(a);if(a!==l){for(;a!==l&&0===u;){var f=this.getPreviousText(l);l=f.key,u=f.text.length}for(;a!==l&&s===c.text.length;)a=(c=this.getNextText(a)).key,s=0}if(a===l)return c.getActiveMarksBetweenOffsets(s,u);var d=c.getActiveMarksBetweenOffsets(s,c.text.length);if(0===d.size)return Object(i.Set)();var p=this.getDescendant(l).getActiveMarksBetweenOffsets(0,u),m=d.intersect(p);if(0===m.size)return m;for(var h=this.getNextText(a);h.key!==l;){if(0!==h.text.length&&0===(m=m.intersect(h.getActiveMarks())).size)return Object(i.Set)();h=this.getNextText(h.key)}return m}},{key:"getAncestors",value:function(e){var t=this;if(!(e=this.resolvePath(e)))return null;var n=[];return e.forEach(function(r,o){var i=e.slice(0,o),a=t.getNode(i);n.push(a)}),Object(i.List)(n)}},{key:"getBlocks",value:function(){var e=this.getBlocksAsArray();return Object(i.List)(e)}},{key:"getBlocksAsArray",value:function(){return this.nodes.reduce(function(e,t){return"block"!=t.object?e:t.isLeafBlock()?(e.push(t),e):e.concat(t.getBlocksAsArray())},[])}},{key:"getBlocksAtRange",value:function(e){var t=this.getBlocksAtRangeAsArray(e);return Object(i.List)(Object(i.OrderedSet)(t))}},{key:"getBlocksAtRangeAsArray",value:function(e){if((e=this.resolveRange(e)).isUnset)return[];var t=e,n=t.start,r=t.end,o=this.getClosestBlock(n.key);if(n.key===r.key)return[o];var i=this.getClosestBlock(r.key),a=this.getBlocksAsArray(),s=a.indexOf(o),l=a.indexOf(i);return a.slice(s,l+1)}},{key:"getBlocksByType",value:function(e){var t=this.getBlocksByTypeAsArray(e);return Object(i.List)(t)}},{key:"getBlocksByTypeAsArray",value:function(e){return this.nodes.reduce(function(t,n){return"block"!=n.object?t:n.isLeafBlock()&&n.type==e?(t.push(n),t):t.concat(n.getBlocksByTypeAsArray(e))},[])}},{key:"getChild",value:function(e){return(e=this.resolvePath(e))&&1===e.size?this.nodes.get(e.first()):null}},{key:"getClosest",value:function(e,t){var n=this,r=this.getAncestors(e);return r&&r.findLast(function(e){for(var r=arguments.length,o=Array(r>1?r-1:0),i=1;i<r;i++)o[i-1]=arguments[i];return e!==n&&t.apply(void 0,[e].concat(o))})||null}},{key:"getClosestBlock",value:function(e){return this.getClosest(e,function(e){return"block"===e.object})}},{key:"getClosestInline",value:function(e){return this.getClosest(e,function(e){return"inline"===e.object})}},{key:"getClosestVoid",value:function(e,t){var n=this.getAncestors(e);return n?n.findLast(function(e){return t.isVoid(e)}):null}},{key:"getCommonAncestor",value:function(e,t){if(e=this.resolvePath(e),t=this.resolvePath(t),!e||!t)return null;var n=ye.relate(e,t);return this.getNode(n)}},{key:"getDecorations",value:function(e){var t=e.map("decorateNode",this).map(function(e){return Ie.createList(e)});return Object(i.List)(t).flatten(!0)}},{key:"getDepth",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return(e=this.resolvePath(e))&&this.getNode(e)?e.size-1+t:null}},{key:"getDescendant",value:function(e){if(!(e=this.resolvePath(e)))return null;var t=e.flatMap(function(e){return["nodes",e]});return this.getIn(t)}},{key:"getFragmentAtRange",value:function(e){if((e=this.resolveRange(e)).isUnset)return I.create();for(var t=e,n=t.start,r=t.end,o=this,i=r.path,a=r.offset,s="end";i.size;){var l=i.last();o=o.splitNode(i,a),a=l+1,(i=ye.lift(i)).size||"end"!==s||(i=n.path,a=n.offset,s="start")}var u=n.path.first()+1,c=r.path.first()+2,f=o.nodes.slice(u,c);return I.create({nodes:f})}},{key:"getFurthest",value:function(e,t){var n=this,r=this.getAncestors(e);return r&&r.find(function(e){for(var r=arguments.length,o=Array(r>1?r-1:0),i=1;i<r;i++)o[i-1]=arguments[i];return e!==n&&t.apply(void 0,[e].concat(o))})||null}},{key:"getFurthestAncestor",value:function(e){return(e=this.resolvePath(e))&&e.size?this.nodes.get(e.first()):null}},{key:"getFurthestBlock",value:function(e){return this.getFurthest(e,function(e){return"block"===e.object})}},{key:"getFurthestInline",value:function(e){return this.getFurthest(e,function(e){return"inline"===e.object})}},{key:"getFurthestOnlyChildAncestor",value:function(e){var t=this.getAncestors(e);return t&&t.rest().reverse().takeUntil(function(e){return e.nodes.size>1}).last()||null}},{key:"getInlines",value:function(){var e=this.getInlinesAsArray();return Object(i.List)(e)}},{key:"getInlinesAsArray",value:function(){var e=[];return this.nodes.forEach(function(t){"text"!=t.object&&(t.isLeafInline()?e.push(t):e=e.concat(t.getInlinesAsArray()))}),e}},{key:"getInlinesAtRange",value:function(e){var t=this.getInlinesAtRangeAsArray(e);return Object(i.List)(Object(i.OrderedSet)(t))}},{key:"getInlinesAtRangeAsArray",value:function(e){var t=this;return(e=this.resolveRange(e)).isUnset?[]:this.getTextsAtRangeAsArray(e).map(function(e){return t.getClosestInline(e.key)}).filter(function(e){return e})}},{key:"getInlinesByType",value:function(e){var t=this.getInlinesByTypeAsArray(e);return Object(i.List)(t)}},{key:"getInlinesByTypeAsArray",value:function(e){return this.nodes.reduce(function(t,n){return"text"==n.object?t:n.isLeafInline()&&n.type==e?(t.push(n),t):t.concat(n.getInlinesByTypeAsArray(e))},[])}},{key:"getInsertMarksAtRange",value:function(e){var t=(e=this.resolveRange(e)).start;return e.isUnset?Object(i.Set)():e.isCollapsed?this.getMarksAtPosition(t.key,t.offset):this.getDescendant(t.key).getMarksAtIndex(t.offset+1)}},{key:"getMarks",value:function(){var e=this.getMarksAsArray();return Object(i.Set)(e)}},{key:"getMarksAsArray",value:function(){var e,t=[];return this.nodes.forEach(function(e){t.push(e.getMarksAsArray())}),(e=[]).concat.apply(e,t)}},{key:"getMarksAtPosition",value:function(e,t){var n=this.getDescendant(e).getMarksAtIndex(t);if(0!==t)return n;var r=this.getClosestBlock(e);if(""===r.text)return n;var o=this.getPreviousText(e);return o?r.hasDescendant(o.key)?o.getMarksAtIndex(o.text.length):n:Object(i.Set)()}},{key:"getMarksAtRange",value:function(e){return Object(i.Set)(this.getOrderedMarksAtRange(e))}},{key:"getMarksByType",value:function(e){var t=this.getMarksByTypeAsArray(e);return Object(i.Set)(t)}},{key:"getMarksByTypeAsArray",value:function(e){return this.nodes.reduce(function(t,n){return"text"==n.object?t.concat(n.getMarksAsArray().filter(function(t){return t.type==e})):t.concat(n.getMarksByTypeAsArray(e))},[])}},{key:"getNextBlock",value:function(e){var t=this.assertDescendant(e),n=void 0;"block"==t.object?n=t.getLastText():n=this.getClosestBlock(e).getLastText();var r=this.getNextText(n.key);return r?this.getClosestBlock(r.key):null}},{key:"getNextNode",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;for(var t=e.size;t>0;t--){var n=e.slice(0,t),r=ye.increment(n),o=this.getNode(r);if(o)return o}return null}},{key:"getNextSibling",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;var t=ye.increment(e);return this.getNode(t)}},{key:"getNextText",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;var t=this.getNextNode(e);return t?t.getFirstText():null}},{key:"getOffset",value:function(e){this.assertDescendant(e);var t=this.getFurthestAncestor(e),n=this.nodes.takeUntil(function(e){return e==t}).reduce(function(e,t){return e+t.text.length},0);return this.hasChild(e)?n:n+t.getOffset(e)}},{key:"getOffsetAtRange",value:function(e){if((e=this.resolveRange(e)).isUnset)throw new Error("The range cannot be unset to calculcate its offset.");if(e.isExpanded)throw new Error("The range must be collapsed to calculcate its offset.");var t=e.start;return this.getOffset(t.key)+t.offset}},{key:"getOrderedMarks",value:function(){var e=this.getMarksAsArray();return Object(i.OrderedSet)(e)}},{key:"getOrderedMarksAtRange",value:function(e){var t=e=this.resolveRange(e),n=t.start,r=t.end;return e.isUnset?Object(i.OrderedSet)():e.isCollapsed?this.getMarksAtPosition(n.key,n.offset):this.getOrderedMarksBetweenPositions(n.key,n.offset,r.key,r.offset)}},{key:"getOrderedMarksBetweenPositions",value:function(e,t,n,r){if(e===n)return this.getDescendant(e).getMarksBetweenOffsets(t,r);var o=this.getTextsBetweenPositionsAsArray(e,n);return Object(i.OrderedSet)().withMutations(function(i){o.forEach(function(o){o.key===e?i.union(o.getMarksBetweenOffsets(t,o.text.length)):o.key===n?i.union(o.getMarksBetweenOffsets(0,r)):i.union(o.getMarks())})})}},{key:"getOrderedMarksByType",value:function(e){var t=this.getMarksByTypeAsArray(e);return Object(i.OrderedSet)(t)}},{key:"getParent",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;var t=ye.lift(e);return this.getNode(t)}},{key:"getPreviousBlock",value:function(e){var t=this.assertDescendant(e),n=void 0;"block"==t.object?n=t.getFirstText():n=this.getClosestBlock(e).getFirstText();var r=this.getPreviousText(n.key);return r?this.getClosestBlock(r.key):null}},{key:"getPreviousNode",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;for(var t=e.size;t>0;t--){var n=e.slice(0,t);if(0!==n.last()){var r=ye.decrement(n),o=this.getNode(r);if(o)return o}}return null}},{key:"getPreviousSibling",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;if(0===e.last())return null;var t=ye.decrement(e);return this.getNode(t)}},{key:"getPreviousText",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;var t=this.getPreviousNode(e);return t?t.getLastText():null}},{key:"getSelectionIndexes",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=e.start,r=e.end;if(!t)return null;if(e.isUnset)return null;if(n.key==r.key){var o=this.getFurthestAncestor(n.key),i=o?this.nodes.indexOf(o):null;return{start:i,end:i+1}}var a=null,s=null;return this.nodes.forEach(function(e,t){return"text"==e.object?(null==a&&e.key==n.key&&(a=t),null==s&&e.key==r.key&&(s=t+1)):(null==a&&e.hasDescendant(n.key)&&(a=t),null==s&&e.hasDescendant(r.key)&&(s=t+1)),null==a||null==s}),t&&null==a&&(a=0),t&&null==s&&(s=this.nodes.size),null==a?null:{start:a,end:s}}},{key:"getTextAtOffset",value:function(e){if(0===e)return this.getFirstText();if(e===this.text.length)return this.getLastText();if(e<0||e>this.text.length)return null;var t=0;return this.getTexts().find(function(n,r,o){return(t+=n.text.length)>e})}},{key:"getTextDirection",value:function(){var e=h()(this.text);return"neutral"===e?null:e}},{key:"getTexts",value:function(){var e=this.getTextsAsArray();return Object(i.List)(e)}},{key:"getTextsAsArray",value:function(){var e=[];return this.nodes.forEach(function(t){"text"==t.object?e.push(t):e=e.concat(t.getTextsAsArray())}),e}},{key:"getTextsAtRange",value:function(e){if((e=this.resolveRange(e)).isUnset)return Object(i.List)();var t=e,n=t.start,r=t.end;return Object(i.List)(this.getTextsBetweenPositionsAsArray(n.key,r.key))}},{key:"getTextsAtRangeAsArray",value:function(e){if((e=this.resolveRange(e)).isUnset)return[];var t=e,n=t.start,r=t.end;return this.getTextsBetweenPositionsAsArray(n.key,r.key)}},{key:"getTextsBetweenPositionsAsArray",value:function(e,t){var n=this.getDescendant(e);if(e==t)return[n];var r=this.getDescendant(t),o=this.getTextsAsArray(),i=o.indexOf(n),a=o.indexOf(r,i);return o.slice(i,a+1)}},{key:"hasBlockChildren",value:function(){return!(!this.nodes||!this.nodes.find(function(e){return"block"===e.object}))}},{key:"hasChild",value:function(e){return!!this.getChild(e)}},{key:"hasInlineChildren",value:function(){return!(!this.nodes||!this.nodes.find(function(e){return"inline"===e.object||"text"===e.object}))}},{key:"hasDescendant",value:function(e){return!!this.getDescendant(e)}},{key:"hasVoidParent",value:function(e,t){return!!this.getClosestVoid(e,t)}},{key:"insertNode",value:function(e,t){var n=(e=this.resolvePath(e)).last(),r=ye.lift(e),o=this.assertNode(r),i=o.nodes.splice(n,0,t);return o=o.set("nodes",i),this.replaceNode(r,o)}},{key:"insertText",value:function(e,t,n,r){var o=this.assertDescendant(e);return e=this.resolvePath(e),o=o.insertText(t,n,r),this.replaceNode(e,o)}},{key:"isLeafBlock",value:function(){var e=this.object,t=this.nodes.first();return"block"===e&&"block"!==t.object}},{key:"isLeafInline",value:function(){var e=this.object,t=this.nodes.first();return"inline"===e&&"inline"!==t.object}},{key:"mapChildren",value:function(e){var t=this,n=this.nodes;return n.forEach(function(r,o){var i=e(r,o,t.nodes);i!==r&&(n=n.set(i.key,i))}),this.set("nodes",n)}},{key:"mapDescendants",value:function(e){var t=this,n=this.nodes;return n.forEach(function(r,o){var i=r;"text"!==i.object&&(i=i.mapDescendants(e)),(i=e(i,o,t.nodes))!==r&&(n=n.set(o,i))}),this.set("nodes",n)}},{key:"mergeNode",value:function(e){var t=this.assertNode(e);if(0===(e=this.resolvePath(e)).last())throw new Error("Unable to merge node because it has no previous sibling: "+t);var n=ye.decrement(e),r=this.assertNode(n);if(r.object!==t.object)throw new Error("Unable to merge two different kinds of nodes: "+r+" and "+t);var o="text"===r.object?r.mergeText(t):r.set("nodes",r.nodes.concat(t.nodes)),i=this;return i=(i=(i=i.removeNode(e)).removeNode(n)).insertNode(n,o)}},{key:"moveNode",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=this.assertNode(e);e=this.resolvePath(e),t=this.resolvePath(t,n);var o=ye.lift(t);this.assertNode(o);var i=ye.crop(e,t),a=x(i,2),s=a[0],l=a[1],u=ye.compare(s,l);e.size<t.size&&-1===u&&(t=ye.decrement(t,1,s.size-1));var c=this;return c=(c=c.removeNode(e)).insertNode(t,r)}},{key:"removeMark",value:function(e,t,n,r){var o=this.assertDescendant(e);return e=this.resolvePath(e),o=o.removeMark(t,n,r),this.replaceNode(e,o)}},{key:"removeNode",value:function(e){this.assertDescendant(e);var t=(e=this.resolvePath(e)).flatMap(function(e){return["nodes",e]});return this.deleteIn(t)}},{key:"removeText",value:function(e,t,n){var r=this.assertDescendant(e);return r=r.removeText(t,n.length),this.replaceNode(e,r)}},{key:"replaceNode",value:function(e,t){if(!(e=this.resolvePath(e)))throw new Error("Unable to replace a node because it could not be found in the first place: "+e);if(!e.size)return t;this.assertNode(e);var n=e.flatMap(function(e){return["nodes",e]});return this.setIn(n,t)}},{key:"resolveDecoration",value:function(e){return e=(e=Ie.create(e)).normalize(this)}},{key:"resolvePoint",value:function(e){return e=(e=ke.create(e)).normalize(this)}},{key:"resolveRange",value:function(e){return e=(e=Pe.create(e)).normalize(this)}},{key:"resolveSelection",value:function(e){return e=(e=Fe.create(e)).normalize(this)}},{key:"setNode",value:function(e,t){var n=this.assertNode(e);return n=n.merge(t),this.replaceNode(e,n)}},{key:"setMark",value:function(e,t,n,r,o){var i=this.assertNode(e);return i=i.updateMark(t,n,r,o),this.replaceNode(e,i)}},{key:"splitNode",value:function(e,t,n){var r=this.assertNode(e);e=this.resolvePath(e);var o=void 0,i=void 0;if("text"===r.object){var a=r.splitText(t),s=x(a,2);o=s[0],i=s[1]}else{var l=r.nodes.take(t),u=r.nodes.skip(t);o=r.set("nodes",l),i=r.set("nodes",u).regenerateKey()}n&&"text"!==r.object&&(i=i.merge(n));var c=this;return c=(c=(c=c.removeNode(e)).insertNode(e,i)).insertNode(e,o)}}]),e}(),St=function(e){Ct.prototype["assert"+e]=function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];var i=this["get"+e].apply(this,[t].concat(r));if(null==i)throw new Error("`Node.assert"+e+"` could not find node with path or key: "+t);return i}},Dt=!0,wt=!1,Tt=void 0;try{for(var xt,Rt=["Child","Depth","Descendant","Node","Parent","Path"][Symbol.iterator]();!(Dt=(xt=Rt.next()).done);Dt=!0){St(xt.value)}}catch(e){wt=!0,Tt=e}finally{try{!Dt&&Rt.return&&Rt.return()}finally{if(wt)throw Tt}}V(Ct.prototype,["getBlocksAsArray","getBlocksAtRangeAsArray","getBlocksByTypeAsArray","getDecorations","getFragmentAtRange","getInlinesAsArray","getInlinesAtRangeAsArray","getInlinesByTypeAsArray","getMarksAsArray","getMarksAtPosition","getOrderedMarksBetweenPositions","getInsertMarksAtRange","getMarksByTypeAsArray","getNextBlock","getOffset","getOffsetAtRange","getPreviousBlock","getTextAtOffset","getTextDirection","getTextsAsArray","getTextsBetweenPositionsAsArray"]),yt(Ct,[Q,I,A]),yt(function(){function e(){E(this,e)}return C(e,[{key:"flip",value:function(){return this.setPoints([this.focus,this.anchor])}},{key:"moveForward",value:function(e){return this.updatePoints(function(t){return t.moveForward(e)})}},{key:"moveBackward",value:function(e){return this.updatePoints(function(t){return t.moveBackward(e)})}},{key:"moveAnchorBackward",value:function(e){return this.setAnchor(this.anchor.moveBackward(e))}},{key:"moveAnchorForward",value:function(e){return this.setAnchor(this.anchor.moveForward(e))}},{key:"moveAnchorTo",value:function(e,t){return this.setAnchor(this.anchor.moveTo(e,t))}},{key:"moveAnchorToStartOfNode",value:function(e){return this.setAnchor(this.anchor.moveToStartOfNode(e))}},{key:"moveAnchorToEndOfNode",value:function(e){return this.setAnchor(this.anchor.moveToEndOfNode(e))}},{key:"moveEndBackward",value:function(e){return this.setEnd(this.end.moveBackward(e))}},{key:"moveEndForward",value:function(e){return this.setEnd(this.end.moveForward(e))}},{key:"moveEndTo",value:function(e,t){return this.setEnd(this.end.moveTo(e,t))}},{key:"moveEndToStartOfNode",value:function(e){return this.setEnd(this.end.moveToStartOfNode(e))}},{key:"moveEndToEndOfNode",value:function(e){return this.setEnd(this.end.moveToEndOfNode(e))}},{key:"moveFocusBackward",value:function(e){return this.setFocus(this.focus.moveBackward(e))}},{key:"moveFocusForward",value:function(e){return this.setFocus(this.focus.moveForward(e))}},{key:"moveFocusTo",value:function(e,t){return this.setFocus(this.focus.moveTo(e,t))}},{key:"moveFocusToStartOfNode",value:function(e){return this.setFocus(this.focus.moveToStartOfNode(e))}},{key:"moveFocusToEndOfNode",value:function(e){return this.setFocus(this.focus.moveToEndOfNode(e))}},{key:"moveStartBackward",value:function(e){return this.setStart(this.start.moveBackward(e))}},{key:"moveStartForward",value:function(e){return this.setStart(this.start.moveForward(e))}},{key:"moveStartTo",value:function(e,t){return this.setStart(this.start.moveTo(e,t))}},{key:"moveStartToStartOfNode",value:function(e){return this.setStart(this.start.moveToStartOfNode(e))}},{key:"moveStartToEndOfNode",value:function(e){return this.setStart(this.start.moveToEndOfNode(e))}},{key:"moveTo",value:function(e,t){return this.updatePoints(function(n){return n.moveTo(e,t)})}},{key:"moveToAnchor",value:function(){return this.setFocus(this.anchor)}},{key:"moveToEnd",value:function(){return this.setStart(this.end)}},{key:"moveToEndOfNode",value:function(e){return this.updatePoints(function(t){return t.moveToEndOfNode(e)})}},{key:"moveToFocus",value:function(){return this.setAnchor(this.focus)}},{key:"moveToRangeOfNode",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;return this.setPoints([this.anchor.moveToStartOfNode(e),this.focus.moveToEndOfNode(t)])}},{key:"moveToStart",value:function(){return this.setEnd(this.start)}},{key:"moveToStartOfNode",value:function(e){return this.updatePoints(function(t){return t.moveToStartOfNode(e)})}},{key:"normalize",value:function(e){return this.updatePoints(function(t){return t.normalize(e)})}},{key:"setAnchor",value:function(e){return this.set("anchor",e)}},{key:"setEnd",value:function(e){return this.isBackward?this.setAnchor(e):this.setFocus(e)}},{key:"setFocus",value:function(e){return this.set("focus",e)}},{key:"setPoints",value:function(e){var t=x(e,2),n=t[0],r=t[1];return this.set("anchor",n).set("focus",r)}},{key:"updatePoints",value:function(e){var t=this.anchor,n=this.focus;return t=e(t),n=e(n),this.merge({anchor:t,focus:n})}},{key:"setStart",value:function(e){return this.isBackward?this.setFocus(e):this.setAnchor(e)}},{key:"setProperties",value:function(e){var t=e=Pe.createProperties(e),n=t.anchor,r=t.focus,o=w(t,["anchor","focus"]);return n&&(o.anchor=ke.create(n)),r&&(o.focus=ke.create(r)),this.merge(o)}},{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{object:this.object,anchor:this.anchor.toJSON(e),focus:this.focus.toJSON(e)}}},{key:"toRange",value:function(){var e=Pe.createProperties(this);return Pe.create(e)}},{key:"unset",value:function(){return this.updatePoints(function(e){return e.unset()})}},{key:"isCollapsed",get:function(){return this.anchor===this.focus||this.anchor.key===this.focus.key&&this.anchor.offset===this.focus.offset}},{key:"isExpanded",get:function(){return!this.isCollapsed}},{key:"isBackward",get:function(){var e=this.isUnset,t=this.anchor,n=this.focus;return e?null:t.key===n.key?t.offset>n.offset:ye.isBefore(n.path,t.path)}},{key:"isForward",get:function(){var e=this.isBackward;return null==e?null:!e}},{key:"isUnset",get:function(){var e=this.anchor,t=this.focus;return e.isUnset||t.isUnset}},{key:"isSet",get:function(){return!this.isUnset}},{key:"start",get:function(){return this.isBackward?this.focus:this.anchor}},{key:"end",get:function(){return this.isBackward?this.anchor:this.focus}}]),e}(),[Ie,Pe,Fe]);var kt={apply:ft,invert:pt},Nt={Block:Q,Changes:ut,Data:k,Decoration:Ie,Document:I,History:ze,Inline:A,KeyUtils:y,Leaf:F,Mark:P,Node:K,Operation:_t,Operations:kt,PathUtils:ye,Point:ke,Range:Pe,resetMemoization:H,Schema:Ze,Selection:Fe,Stack:Ke,Text:W,TextUtils:le,useMemoization:Y,Value:st};t.default=Nt},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SettingLevel=void 0;var r=b(n(20)),o=b(n(19)),i=n(9),a=b(n(14)),s=b(n(4)),l=b(n(5)),u=b(n(1129)),c=b(n(1130)),f=b(n(1131)),d=b(n(1132)),p=b(n(1133)),m=b(n(1134)),h=b(n(1135)),_=n(2),g=b(n(39)),v=n(1146),y=b(n(1152));function b(e){return e&&e.__esModule?e:{default:e}}t.SettingLevel={DEVICE:"device",ROOM_DEVICE:"room-device",ROOM_ACCOUNT:"room-account",ACCOUNT:"account",ROOM:"room",CONFIG:"config",DEFAULT:"default"};var E={},C=[],S=!0,D=!1,w=void 0;try{for(var T,x=(0,r.default)((0,a.default)(v.SETTINGS));!(S=(T=x.next()).done);S=!0){var R=T.value;E[R]=v.SETTINGS[R].default,v.SETTINGS[R].isFeature&&C.push(R)}}catch(e){D=!0,w=e}finally{try{!S&&x.return&&x.return()}finally{if(D)throw w}}var k={device:new u.default(C),"room-device":new c.default,"room-account":new d.default,account:new p.default,room:new m.default,config:new h.default,default:new f.default(E)},N=!0,I=!1,O=void 0;try{for(var A,M=(0,r.default)((0,a.default)(k));!(N=(A=M.next()).done);N=!0){var P=A.value;k[P]=new y.default(k[P])}}catch(e){I=!0,O=e}finally{try{!N&&M.return&&M.return()}finally{if(I)throw O}}var L=["device","room-device","room-account","account","room","config","default"],F=function(){function e(){(0,s.default)(this,e)}return(0,l.default)(e,null,[{key:"getDisplayName",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"default";if(!v.SETTINGS[e]||!v.SETTINGS[e].displayName)return null;var n=v.SETTINGS[e].displayName;return n instanceof Object&&(n=n[t]?n[t]:n.default),(0,_._t)(n)}},{key:"getLabsFeatures",value:function(){var t=(0,a.default)(v.SETTINGS).filter(function(t){return e.isFeature(t)});return g.default.get().enableLabs?t:t.filter(function(t){return"labs"===e._getFeatureState(t)})}},{key:"isFeature",value:function(e){return!!v.SETTINGS[e]&&v.SETTINGS[e].isFeature}},{key:"isFeatureEnabled",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!e.isFeature(t))throw new Error("Setting "+t+" is not a feature");return e.getValue(t,n)}},{key:"setFeatureEnabled",value:function(t,n){if(!v.SETTINGS[t])throw new Error("Setting '"+t+"' does not appear to be a setting.");if(!e.isFeature(t))throw new Error("Setting "+t+" is not a feature");return e.setValue(t,null,"device",n)}},{key:"getValue",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!v.SETTINGS[t])throw new Error("Setting '"+t+"' does not appear to be a setting.");var o=v.SETTINGS[t],i=o.supportedLevelsAreOrdered?o.supportedLevels:L;return e.getValueAt(i[0],t,n,!1,r)}},{key:"getValueAt",value:function(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(!v.SETTINGS[n])throw new Error("Setting '"+n+"' does not appear to be a setting.");var a=v.SETTINGS[n],s=a.supportedLevelsAreOrdered?a.supportedLevels:L;s.includes("default")||s.push("default");var l=s.indexOf(t);if(-1===l)throw new Error("Level "+t+" is not prioritized");if(e.isFeature(n)){var u=e._getFeatureState(n);if("enable"===u)return!0;if("disable"===u)return!1}var c=e._getHandlers(n);if(o){var f=c[t];if(!f)return e._tryControllerOverride(n,t,r,null,null);var d=f.getValue(n,r);return e._tryControllerOverride(n,t,r,d,t)}for(var p=l;p<s.length;p++){var m=c[s[p]];if(m&&(!i||"default"!==s[p])){var h=m.getValue(n,r);if(null!==h&&void 0!==h)return e._tryControllerOverride(n,t,r,h,s[p])}}return e._tryControllerOverride(n,t,r,null,null)}},{key:"_tryControllerOverride",value:function(e,t,n,r,o){var i=v.SETTINGS[e].controller;if(!i)return r;var a=i.getValueOverride(t,n,r,o);return void 0!==a&&null!==a?a:r}},{key:"setValue",value:function(){var t=(0,i.coroutine)(o.default.mark(function t(n,r,a,s){var l,u;return o.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(v.SETTINGS[n]){t.next=2;break}throw new Error("Setting '"+n+"' does not appear to be a setting.");case 2:if(l=e._getHandler(n,a)){t.next=5;break}throw new Error("Setting "+n+" does not have a handler for "+a);case 5:if(l.canSetValue(n,r)){t.next=7;break}throw new Error("User cannot set "+n+" at "+a+" in "+r);case 7:return t.next=9,(0,i.resolve)(l.setValue(n,r,s));case 9:(u=v.SETTINGS[n].controller)&&u.onChange(a,r,s);case 11:case"end":return t.stop()}},t,this)}));return function(e,n,r,o){return t.apply(this,arguments)}}()},{key:"canSetValue",value:function(t,n,r){if(!v.SETTINGS[t])throw new Error("Setting '"+t+"' does not appear to be a setting.");var o=e._getHandler(t,r);return!!o&&o.canSetValue(t,n)}},{key:"isLevelSupported",value:function(e){return!!k[e]&&k[e].isSupported()}},{key:"_getHandler",value:function(t,n){var r=e._getHandlers(t);return r[n]?r[n]:null}},{key:"_getHandlers",value:function(e){if(!v.SETTINGS[e])return{};var t={},n=!0,o=!1,i=void 0;try{for(var a,s=(0,r.default)(v.SETTINGS[e].supportedLevels);!(n=(a=s.next()).done);n=!0){var l=a.value;if(!k[l])throw new Error("Unexpected level "+l);t[l]=k[l]}}catch(e){o=!0,i=e}finally{try{!n&&s.return&&s.return()}finally{if(o)throw i}}return t.default||(t.default=k.default),t}},{key:"_getFeatureState",value:function(e){var t=g.default.get().features,n=g.default.get().enableLabs?"labs":"disable";t&&void 0!==t[e]&&(n=t[e]);return["enable","disable","labs"].includes(n)||(console.warn("Feature state '"+n+"' is invalid for "+e),n="disable"),n}}]),e}();t.default=F},function(e,t,n){"use strict";var r=function(e){};e.exports=function(e,t,n,o,i,a,s,l){if(r(t),!e){var u;if(void 0===t)u=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,o,i,a,s,l],f=0;(u=new Error(t.replace(/%s/g,function(){return c[f++]}))).name="Invariant Violation"}throw u.framesToPop=1,u}}},function(e,t,n){var r; -/*! - Copyright (c) 2017 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames -*/ -/*! - Copyright (c) 2017 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames -*/ -!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var i=typeof r;if("string"===i||"number"===i)e.push(r);else if(Array.isArray(r)&&r.length){var a=o.apply(null,r);a&&e.push(a)}else if("object"===i)for(var s in r)n.call(r,s)&&r[s]&&e.push(s)}}return e.join(" ")}void 0!==e&&e.exports?(o.default=o,e.exports=o):void 0===(r=function(){return o}.apply(t,[]))||(e.exports=r)}()},function(e,t,n){var r=n(33);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,t,n){var r=n(34),o=n(18),i=n(66),a=n(60),s=function(e,t,n){var l,u,c,f=e&s.F,d=e&s.G,p=e&s.S,m=e&s.P,h=e&s.B,_=e&s.W,g=d?o:o[t]||(o[t]={}),v=g.prototype,y=d?r:p?r[t]:(r[t]||{}).prototype;for(l in d&&(n=t),n)(u=!f&&y&&void 0!==y[l])&&l in g||(c=u?y[l]:n[l],g[l]=d&&"function"!=typeof y[l]?n[l]:h&&u?i(c,r):_&&y[l]==c?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(c):m&&"function"==typeof c?i(Function.call,c):c,m&&((g.virtual||(g.virtual={}))[l]=c,e&s.R&&v&&!v[l]&&a(v,l,c)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,e.exports=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(128));t.default=l;var o=s(n(0)),i=s(n(1)),a=n(80);function s(e){return e&&e.__esModule?e:{default:e}}function l(e){var t=e.element,n=e.onClick,i=e.children,s=(0,r.default)(e,["element","onClick","children"]);return s.onClick=n,s.onKeyDown=function(e){if(e.keyCode===a.KeyCode.ENTER)return e.stopPropagation(),e.preventDefault(),n(e);e.keyCode===a.KeyCode.SPACE&&(e.stopPropagation(),e.preventDefault())},s.onKeyUp=function(e){if(e.keyCode===a.KeyCode.SPACE)return e.stopPropagation(),e.preventDefault(),n(e);e.keyCode===a.KeyCode.ENTER&&(e.stopPropagation(),e.preventDefault())},s.tabIndex=s.tabIndex||"0",s.role="button",s.className=(s.className?s.className+" ":"")+"mx_AccessibleButton",o.default.createElement(t,s,i)}l.propTypes={children:i.default.node,element:i.default.string,onClick:i.default.func.isRequired},l.defaultProps={element:"div"},l.displayName="AccessibleButton",e.exports=t.default},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t,n){"use strict";var r=a(n(67)),o=a(n(64)),i=a(n(31));function a(e){return e&&e.__esModule?e:{default:e}}e.exports.encodeParams=function(e){var t="";for(var n in e)e.hasOwnProperty(n)&&(t+="&"+encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t.substring(1)},e.exports.encodeUri=function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e=e.replace(n,encodeURIComponent(t[n])));return e},e.exports.map=function(e,t){for(var n=new Array(e.length),r=0;r<e.length;r++)n[r]=t(e[r]);return n},e.exports.filter=function(e,t){for(var n=[],r=0;r<e.length;r++)t(e[r],r,e)&&n.push(e[r]);return n},e.exports.keys=function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n);return t},e.exports.values=function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(e[n]);return t},e.exports.forEach=function(e,t){for(var n=0;n<e.length;n++)t(e[n],n)},e.exports.findElement=function(e,t,n){var r=void 0;if(n){for(r=e.length-1;r>=0;r--)if(t(e[r],r,e))return e[r]}else for(r=0;r<e.length;r++)if(t(e[r],r,e))return e[r]},e.exports.removeElement=function(e,t,n){var r=void 0,o=void 0;if(n){for(r=e.length-1;r>=0;r--)if(t(e[r],r,e))return o=e[r],e.splice(r,1),o}else for(r=0;r<e.length;r++)if(t(e[r],r,e))return o=e[r],e.splice(r,1),o;return!1},e.exports.isFunction=function(e){return"[object Function]"==Object.prototype.toString.call(e)},e.exports.isArray=function(e){return Array.isArray?Array.isArray(e):Boolean(e&&e.constructor===Array)},e.exports.checkObjectHasKeys=function(e,t){for(var n=0;n<t.length;n++)if(!e.hasOwnProperty(t[n]))throw new Error("Missing required key: "+t[n])},e.exports.checkObjectHasNoAdditionalKeys=function(e,t){for(var n in e)if(e.hasOwnProperty(n)&&-1===t.indexOf(n))throw new Error("Unknown key: "+n)},e.exports.deepCopy=function(e){return JSON.parse((0,i.default)(e))};var s=e.exports.deepCompare=function(e,t){if(e===t)return!0;if((void 0===e?"undefined":(0,o.default)(e))!==(void 0===t?"undefined":(0,o.default)(t)))return!1;if("number"==typeof e&&isNaN(e)&&isNaN(t))return!0;if(null===e||null===t)return e===t;if(!(e instanceof Object))return!1;if(e.constructor!==t.constructor||e.prototype!==t.prototype)return!1;if(e instanceof RegExp||e instanceof Date)return e.toString()===t.toString();if(e instanceof Array){if(e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(!s(e[n],t[n]))return!1}else{var r=void 0;for(r in t)if(t.hasOwnProperty(r)!==e.hasOwnProperty(r))return!1;for(r in t){if(t.hasOwnProperty(r)!==e.hasOwnProperty(r))return!1;if(!s(e[r],t[r]))return!1}}return!0};e.exports.extend=function(){for(var e=arguments[0]||{},t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)e[r]=n[r]}return e},e.exports.runPolyfills=function(){Array.prototype.filter||(Array.prototype.filter=function(e){if(void 0===this||null===this)throw new TypeError;var t=Object(this),n=t.length>>>0;if("function"!=typeof e)throw new TypeError;for(var r=[],o=arguments.length>=2?arguments[1]:void 0,i=0;i<n;i++)if(i in t){var a=t[i];e.call(o,a,i,t)&&r.push(a)}return r}),Array.prototype.map||(Array.prototype.map=function(e,t){var n=void 0,r=void 0;if(null===this||void 0===this)throw new TypeError(" this is null or not defined");var o=Object(this),i=o.length>>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");arguments.length>1&&(n=t);var a=new Array(i);for(r=0;r<i;){var s,l;r in o&&(s=o[r],l=e.call(n,s,r,o),a[r]=l),r++}return a}),Array.prototype.forEach||(Array.prototype.forEach=function(e,t){var n=void 0,r=void 0;if(null===this||void 0===this)throw new TypeError(" this is null or not defined");var o=Object(this),i=o.length>>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");for(arguments.length>1&&(n=t),r=0;r<i;){var a;r in o&&(a=o[r],e.call(n,a,r,o)),r++}})},e.exports.inherits=function(e,t){"function"!=typeof r.default&&(Object.create=function(){function e(){}var t=Object.prototype.hasOwnProperty;return function(n){if("object"!=(void 0===n?"undefined":(0,o.default)(n)))throw new TypeError("Object prototype may only be an Object or null");e.prototype=n;var r=new e;if(e.prototype=null,arguments.length>1){var i=Object(arguments[1]);for(var a in i)t.call(i,a)&&(r[a]=i[a])}return r}}()),e.super_=t,e.prototype=(0,r.default)(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},e.exports.isNumber=function(e){return"number"==typeof e&&isFinite(e)},e.exports.removeHiddenChars=function(e){return e.normalize("NFD").replace(l,"")};var l=/[\u200B-\u200D\u0300-\u036f\uFEFF\s]/g},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){e.exports={default:n(390),__esModule:!0}},function(e,t,n){"use strict";e.exports=function(e){for(var t=arguments.length-1,n="Minified React error #"+e+"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant="+e,r=0;r<t;r++)n+="&args[]="+encodeURIComponent(arguments[r+1]);n+=" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";var o=new Error(n);throw o.name="Invariant Violation",o.framesToPop=1,o}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){"use strict";var r=n(97);e.exports=r},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(40));t.default=r.default||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}},function(e,t,n){var r=n(120)("wks"),o=n(96),i=n(34).Symbol,a="function"==typeof i;(e.exports=function(e){return r[e]||(r[e]=a&&i[e]||(a?i:o)("Symbol."+e))}).store=r},function(e,t,n){"use strict";(function(t){var r=a(n(14)),o=a(n(4)),i=a(n(5));function a(e){return e&&e.__esModule?e:{default:e}}var s={integrations_ui_url:"https://scalar.vector.im/",integrations_rest_url:"https://scalar.vector.im/api",bug_report_endpoint_url:null},l=function(){function e(){(0,o.default)(this,e)}return(0,i.default)(e,null,[{key:"get",value:function(){return t.mxReactSdkConfig||{}}},{key:"put",value:function(e){for(var n=(0,r.default)(s),o=0;o<n.length;++o)void 0===e[n[o]]&&(e[n[o]]=s[n[o]]);t.mxReactSdkConfig=e}},{key:"unset",value:function(){t.mxReactSdkConfig=void 0}}]),e}();e.exports=l}).call(this,n(15))},function(e,t,n){e.exports={default:n(1062),__esModule:!0}},function(e,t,n){"use strict";e.exports=n(988)},function(e,t,n){var r=n(257)("wks"),o=n(151),i=n(28).Symbol,a="function"==typeof i;(e.exports=function(e){return r[e]||(r[e]=a&&i[e]||(a?i:o)("Symbol."+e))}).store=r},function(e,t,n){"use strict"; -/*! - * is-plain-object <https://github.com/jonschlinkert/is-plain-object> - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */var r=n(1778);function o(e){return!0===r(e)&&"[object Object]"===Object.prototype.toString.call(e)}e.exports=function(e){var t,n;return!1!==o(e)&&("function"==typeof(t=e.constructor)&&(!1!==o(n=t.prototype)&&!1!==n.hasOwnProperty("isPrototypeOf")))}},function(e,t,n){e.exports=!n(58)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t,n){"use strict"; -/* -object-assign -(c) Sindre Sorhus -@license MIT -*/var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,a,s=function(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),l=1;l<arguments.length;l++){for(var u in n=Object(arguments[l]))o.call(n,u)&&(s[u]=n[u]);if(r){a=r(n);for(var c=0;c<a.length;c++)i.call(n,a[c])&&(s[a[c]]=n[a[c]])}}return s}},function(e,t,n){var r=n(52),o=n(161),i=n(116),a=Object.defineProperty;t.f=n(44)?Object.defineProperty:function(e,t,n){if(r(e),t=i(t,!0),r(n),o)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(223));t.default=function(e,t,n){return t in e?(0,r.default)(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t,n){e.exports=!n(30)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t,n){var r=n(25),o=n(494),i=n(106),a=Object.defineProperty;t.f=n(48)?Object.defineProperty:function(e,t,n){if(r(e),t=i(t,!0),r(n),o)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){var r=n(108),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(211));t.default=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return(0,r.default)(e)}},function(e,t,n){var r=n(35);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,t,n){"use strict";var r=n(32),o=n(191),i=n(536),a=(n(23),o.ID_ATTRIBUTE_NAME),s=i,l="__reactInternalInstance$"+Math.random().toString(36).slice(2);function u(e,t){return 1===e.nodeType&&e.getAttribute(a)===String(t)||8===e.nodeType&&e.nodeValue===" react-text: "+t+" "||8===e.nodeType&&e.nodeValue===" react-empty: "+t+" "}function c(e){for(var t;t=e._renderedComponent;)e=t;return e}function f(e,t){var n=c(e);n._hostNode=t,t[l]=n}function d(e,t){if(!(e._flags&s.hasCachedChildNodes)){var n=e._renderedChildren,o=t.firstChild;e:for(var i in n)if(n.hasOwnProperty(i)){var a=n[i],l=c(a)._domID;if(0!==l){for(;null!==o;o=o.nextSibling)if(u(o,l)){f(a,o);continue e}r("32",l)}}e._flags|=s.hasCachedChildNodes}}function p(e){if(e[l])return e[l];for(var t,n,r=[];!e[l];){if(r.push(e),!e.parentNode)return null;e=e.parentNode}for(;e&&(n=e[l]);e=r.pop())t=n,r.length&&d(n,e);return t}var m={getClosestInstanceFromNode:p,getInstanceFromNode:function(e){var t=p(e);return null!=t&&t._hostNode===e?t:null},getNodeFromInstance:function(e){if(void 0===e._hostNode&&r("33"),e._hostNode)return e._hostNode;for(var t=[];!e._hostNode;)t.push(e),e._hostParent||r("34"),e=e._hostParent;for(;t.length;e=t.pop())d(e,e._hostNode);return e._hostNode},precacheChildNodes:d,precacheNode:f,uncacheNode:function(e){var t=e._hostNode;t&&(delete t[l],e._hostNode=null)}};e.exports=m},function(e,t){var n,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var l,u=[],c=!1,f=-1;function d(){c&&l&&(c=!1,l.length?u=l.concat(u):f=-1,u.length&&p())}function p(){if(!c){var e=s(d);c=!0;for(var t=u.length;t;){for(l=u,u=[];++f<t;)l&&l[f].run();f=-1,t=u.length}l=null,c=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function m(e,t){this.fun=e,this.array=t}function h(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new m(e,t)),1!==u.length||c||s(p)},m.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=h,o.addListener=h,o.once=h,o.off=h,o.removeListener=h,o.removeAllListeners=h,o.emit=h,o.prependListener=h,o.prependOnceListener=h,o.listeners=function(e){return[]},o.binding=function(e){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},function(e,t){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(e){return"function"==typeof e}function o(e){return"object"==typeof e&&null!==e}function i(e){return void 0===e}e.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(e){if(!function(e){return"number"==typeof e}(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},n.prototype.emit=function(e){var t,n,a,s,l,u;if(this._events||(this._events={}),"error"===e&&(!this._events.error||o(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var c=new Error('Uncaught, unspecified "error" event. ('+t+")");throw c.context=t,c}if(i(n=this._events[e]))return!1;if(r(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),n.apply(this,s)}else if(o(n))for(s=Array.prototype.slice.call(arguments,1),a=(u=n.slice()).length,l=0;l<a;l++)u[l].apply(this,s);return!0},n.prototype.addListener=function(e,t){var a;if(!r(t))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,r(t.listener)?t.listener:t),this._events[e]?o(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t,o(this._events[e])&&!this._events[e].warned&&(a=i(this._maxListeners)?n.defaultMaxListeners:this._maxListeners)&&a>0&&this._events[e].length>a&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(e,t){if(!r(t))throw TypeError("listener must be a function");var n=!1;function o(){this.removeListener(e,o),n||(n=!0,t.apply(this,arguments))}return o.listener=t,this.on(e,o),this},n.prototype.removeListener=function(e,t){var n,i,a,s;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(a=(n=this._events[e]).length,i=-1,n===t||r(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(n)){for(s=a;s-- >0;)if(n[s]===t||n[s].listener&&n[s].listener===t){i=s;break}if(i<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},n.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r(n=this._events[e]))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},n.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},n.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},n.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,n){var r=n(1812);e.exports=function(e){if(function(e){return e&&e.window===e}(e))return e;var t=r(e);if(o){t.parentWindow.execScript("document._parentWindow = window;","Javascript");var n=t._parentWindow;return t._parentWindow=null,n}return t.defaultView||t.parentWindow};var o=n(1813)},function(e,t,n){var r=n(107);e.exports=function(e){return Object(r(e))}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var r=n(163),o=n(112);e.exports=function(e){return r(o(e))}},function(e,t,n){var r=n(46),o=n(76);e.exports=n(44)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){"use strict";t.a=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!e){var n=console.warn||console.log;n("Warning: "+t)}}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){"use strict";t.__esModule=!0;var r=a(n(361)),o=a(n(365)),i="function"==typeof o.default&&"symbol"==typeof r.default?function(e){return typeof e}:function(e){return e&&"function"==typeof o.default&&e.constructor===o.default&&e!==o.default.prototype?"symbol":typeof e};function a(e){return e&&e.__esModule?e:{default:e}}t.default="function"==typeof o.default&&"symbol"===i(r.default)?function(e){return void 0===e?"undefined":i(e)}:function(e){return e&&"function"==typeof o.default&&e.constructor===o.default&&e!==o.default.prototype?"symbol":void 0===e?"undefined":i(e)}},function(e,t,n){e.exports={default:n(1111),__esModule:!0}},function(e,t,n){var r=n(94);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t,n){e.exports={default:n(357),__esModule:!0}},function(e,t,n){var r=n(26),o=n(18),i=n(58);e.exports=function(e,t){var n=(o.Object||{})[e]||Object[e],a={};a[e]=t(n),r(r.S+r.F*i(function(){n(1)}),"Object",a)}},function(e,t,n){"use strict";var r=!("undefined"==typeof window||!window.document||!window.document.createElement),o={canUseDOM:r,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:r&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:r&&!!window.screen,isInWorker:!r};e.exports=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.closest=t.distance=t.patch=t.absolute=t.negate=t.isEqual=t.subtract=t.add=void 0;var r=i(n(51)),o=i(n(47));function i(e){return e&&e.__esModule?e:{default:e}}t.add=function(e,t){return{x:e.x+t.x,y:e.y+t.y}},t.subtract=function(e,t){return{x:e.x-t.x,y:e.y-t.y}},t.isEqual=function(e,t){return e.x===t.x&&e.y===t.y},t.negate=function(e){return{x:0!==e.x?-e.x:0,y:0!==e.y?-e.y:0}},t.absolute=function(e){return{x:Math.abs(e.x),y:Math.abs(e.y)}},t.patch=function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return n={},(0,o.default)(n,e,t),(0,o.default)(n,"x"===e?"y":"x",r),n};var a=t.distance=function(e,t){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))};t.closest=function(e,t){return Math.min.apply(Math,(0,r.default)(t.map(function(t){return a(e,t)})))}},function(e,t,n){"use strict";(function(t){var r=i(n(4)),o=i(n(5));function i(e){return e&&e.__esModule?e:{default:e}}var a=function(){function e(){(0,r.default)(this,e),this.platform=null}return(0,o.default)(e,[{key:"get",value:function(){return this.platform}},{key:"set",value:function(e){this.platform=e}}]),e}();t.mxPlatformPeg||(t.mxPlatformPeg=new a),e.exports=t.mxPlatformPeg}).call(this,n(15))},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var r=n(49),o=n(150);e.exports=n(48)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var r=n(28),o=n(73),i=n(72),a=n(151)("src"),s=Function.toString,l=(""+s).split("toString");n(105).inspectSource=function(e){return s.call(e)},(e.exports=function(e,t,n,s){var u="function"==typeof n;u&&(i(n,"name")||o(n,"name",t)),e[t]!==n&&(u&&(i(n,a)||o(n,a,e[t]?""+e[t]:l.join(String(t)))),e===r?e[t]=n:s?e[t]?e[t]=n:o(e,t,n):(delete e[t],o(e,t,n)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[a]||s.call(this)})},function(e,t,n){var r=n(7),o=n(30),i=n(107),a=/"/g,s=function(e,t,n,r){var o=String(i(e)),s="<"+t;return""!==n&&(s+=" "+n+'="'+String(r).replace(a,""")+'"'),s+">"+o+"</"+t+">"};e.exports=function(e,t){var n={};n[e]=t(s),r(r.P+r.F*o(function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}),"String",n)}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){e.exports={}},function(e,t,n){var r=n(162),o=n(121);e.exports=Object.keys||function(e){return r(e,o)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.makeEventPermalink=function(e,t){return o+"/#/"+e+"/"+t},t.makeUserPermalink=function(e){return o+"/#/"+e},t.makeRoomPermalink=function(e){return o+"/#/"+e},t.makeGroupPermalink=function(e){return o+"/#/"+e};var r=t.host="matrix.to",o=t.baseUrl="https://"+r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isOnlyCtrlOrCmdKeyEvent=function(e){return navigator.platform.toUpperCase().indexOf("MAC")>=0?e.metaKey&&!e.altKey&&!e.ctrlKey&&!e.shiftKey:e.ctrlKey&&!e.altKey&&!e.metaKey&&!e.shiftKey},t.isOnlyCtrlOrCmdIgnoreShiftKeyEvent=function(e){return navigator.platform.toUpperCase().indexOf("MAC")>=0?e.metaKey&&!e.altKey&&!e.ctrlKey:e.ctrlKey&&!e.altKey&&!e.metaKey};t.KeyCode={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46,KEY_A:65,KEY_B:66,KEY_C:67,KEY_D:68,KEY_E:69,KEY_F:70,KEY_G:71,KEY_H:72,KEY_I:73,KEY_J:74,KEY_K:75,KEY_L:76,KEY_M:77,KEY_N:78,KEY_O:79,KEY_P:80,KEY_Q:81,KEY_R:82,KEY_S:83,KEY_T:84,KEY_U:85,KEY_V:86,KEY_W:87,KEY_X:88,KEY_Y:89,KEY_Z:90}},function(e,t,n){"use strict";var r=g(n(47)),o=g(n(11)),i=g(n(4)),a=g(n(5)),s=g(n(12)),l=g(n(13)),u=g(n(19)),c=g(n(65)),f=n(9),d=function(){var e=(0,f.coroutine)(u.default.mark(function e(t){return u.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!(b>=E)){e.next=3;break}return e.next=3,(0,f.resolve)(new c.default(function(e,t){C.push(e)}));case 3:return b++,e.prev=4,e.next=7,(0,f.resolve)(t());case 7:return e.abrupt("return",e.sent);case 10:throw e.prev=10,e.t0=e.catch(4),e.t0;case 13:return e.prev=13,b--,S(),e.finish(13);case 17:case"end":return e.stop()}},e,this,[[4,10,13,17]])}));return function(t){return e.apply(this,arguments)}}(),p=g(n(55)),m=n(243),h=g(n(145)),_=g(n(8));function g(e){return e&&e.__esModule?e:{default:e}}function v(e){return e.chunk.map(function(e){return(0,m.groupMemberFromApiObject)(e)})}function y(e){return e.chunk.map(function(e){return(0,m.groupRoomFromApiObject)(e)})}var b=0,E=3,C=[];function S(){var e=C.shift();"function"==typeof e&&e()}var D=function(e){function t(){var e,n;(0,i.default)(this,t);var a=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this));return a.STATE_KEY={GroupMembers:"GroupMembers",GroupInvitedMembers:"GroupInvitedMembers",Summary:"Summary",GroupRooms:"GroupRooms"},a._state={},a._state[a.STATE_KEY.Summary]={},a._state[a.STATE_KEY.GroupRooms]={},a._state[a.STATE_KEY.GroupMembers]={},a._state[a.STATE_KEY.GroupInvitedMembers]={},a._ready={},a._ready[a.STATE_KEY.Summary]={},a._ready[a.STATE_KEY.GroupRooms]={},a._ready[a.STATE_KEY.GroupMembers]={},a._ready[a.STATE_KEY.GroupInvitedMembers]={},a._fetchResourcePromise=(e={},(0,r.default)(e,a.STATE_KEY.Summary,{}),(0,r.default)(e,a.STATE_KEY.GroupRooms,{}),(0,r.default)(e,a.STATE_KEY.GroupMembers,{}),(0,r.default)(e,a.STATE_KEY.GroupInvitedMembers,{}),e),a._resourceFetcher=(n={},(0,r.default)(n,a.STATE_KEY.Summary,function(e){return d(function(){return _.default.get().getGroupSummary(e)})}),(0,r.default)(n,a.STATE_KEY.GroupRooms,function(e){return d(function(){return _.default.get().getGroupRooms(e).then(y)})}),(0,r.default)(n,a.STATE_KEY.GroupMembers,function(e){return d(function(){return _.default.get().getGroupUsers(e).then(v)})}),(0,r.default)(n,a.STATE_KEY.GroupInvitedMembers,function(e){return d(function(){return _.default.get().getGroupInvitedUsers(e).then(v)})}),n),a.on("error",function(e,t){console.error("GroupStore encountered error whilst fetching data for "+t,e)}),a}return(0,l.default)(t,e),(0,a.default)(t,[{key:"_fetchResource",value:function(e,t){var n=this;if(!this._fetchResourcePromise[e][t]){var r=this._resourceFetcher[e](t);return this._fetchResourcePromise[e][t]=r,r.then(function(r){n._state[e][t]=r,n._ready[e][t]=!0,n._notifyListeners()}).catch(function(r){e===n.STATE_KEY.GroupInvitedMembers&&403===r.httpStatus||(console.error("Failed to get resource "+e+" for "+t,r),n.emit("error",r,t))}).finally(function(){delete n._fetchResourcePromise[e][t]}),r}}},{key:"_notifyListeners",value:function(){this.emit("update")}},{key:"registerListener",value:function(e,t){var n=this;return this.on("update",t),this.emit("update"),e&&(this._fetchResource(this.STATE_KEY.Summary,e),this._fetchResource(this.STATE_KEY.GroupRooms,e),this._fetchResource(this.STATE_KEY.GroupMembers,e),this._fetchResource(this.STATE_KEY.GroupInvitedMembers,e)),{unregister:function(){n.unregisterListener(t)}}}},{key:"unregisterListener",value:function(e){this.removeListener("update",e)}},{key:"isStateReady",value:function(e,t){return this._ready[t][e]}},{key:"getSummary",value:function(e){return this._state[this.STATE_KEY.Summary][e]||{}}},{key:"getGroupRooms",value:function(e){return this._state[this.STATE_KEY.GroupRooms][e]||[]}},{key:"getGroupMembers",value:function(e){return this._state[this.STATE_KEY.GroupMembers][e]||[]}},{key:"getGroupInvitedMembers",value:function(e){return this._state[this.STATE_KEY.GroupInvitedMembers][e]||[]}},{key:"getGroupPublicity",value:function(e){return(this._state[this.STATE_KEY.Summary][e]||{}).user?(this._state[this.STATE_KEY.Summary][e]||{}).user.is_publicised:null}},{key:"isUserPrivileged",value:function(e){return(this._state[this.STATE_KEY.Summary][e]||{}).user?(this._state[this.STATE_KEY.Summary][e]||{}).user.is_privileged:null}},{key:"refreshGroupRooms",value:function(e){return this._fetchResource(this.STATE_KEY.GroupRooms,e)}},{key:"refreshGroupMembers",value:function(e){return this._fetchResource(this.STATE_KEY.GroupMembers,e)}},{key:"addRoomToGroup",value:function(e,t,n){return _.default.get().addRoomToGroup(e,t,n).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e))}},{key:"updateGroupRoomVisibility",value:function(e,t,n){return _.default.get().updateGroupRoomVisibility(e,t,n).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e))}},{key:"removeRoomFromGroup",value:function(e,t){return _.default.get().removeRoomFromGroup(e,t).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e))}},{key:"inviteUserToGroup",value:function(e,t){return _.default.get().inviteUserToGroup(e,t).then(this._fetchResource.bind(this,this.STATE_KEY.GroupInvitedMembers,e))}},{key:"acceptGroupInvite",value:function(e){return _.default.get().acceptGroupInvite(e).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupMembers,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupInvitedMembers,e))}},{key:"joinGroup",value:function(e){return _.default.get().joinGroup(e).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupMembers,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupInvitedMembers,e))}},{key:"leaveGroup",value:function(e){return _.default.get().leaveGroup(e).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupMembers,e))}},{key:"addRoomToGroupSummary",value:function(e,t,n){return _.default.get().addRoomToGroupSummary(e,t,n).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e))}},{key:"addUserToGroupSummary",value:function(e,t,n){return _.default.get().addUserToGroupSummary(e,t,n).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e))}},{key:"removeRoomFromGroupSummary",value:function(e,t){return _.default.get().removeRoomFromGroupSummary(e,t).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e))}},{key:"removeUserFromGroupSummary",value:function(e,t){return _.default.get().removeUserFromGroupSummary(e,t).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e))}},{key:"setGroupPublicity",value:function(e,t){return _.default.get().setGroupPublicity(e,t).then(function(){h.default.invalidatePublicisedGroups(_.default.get().credentials.userId)}).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e))}}]),t}(p.default),w=null;w||(w=new D),e.exports=w},function(e,t,n){"use strict";n.r(t);var r=function(e,t){return e===t};t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r,n=void 0,o=[],i=void 0,a=!1,s=function(e,n){return t(e,o[n])};return function(){for(var t=arguments.length,r=Array(t),l=0;l<t;l++)r[l]=arguments[l];return a&&n===this&&r.length===o.length&&r.every(s)?i:(a=!0,n=this,o=r,i=e.apply(this,r))}}},function(e,t,n){var r=n(208),o=n(107);e.exports=function(e){return r(o(e))}},function(e,t,n){var r=n(209),o=n(150),i=n(83),a=n(106),s=n(72),l=n(494),u=Object.getOwnPropertyDescriptor;t.f=n(48)?u:function(e,t){if(e=i(e),t=a(t,!0),l)try{return u(e,t)}catch(e){}if(s(e,t))return o(!r.f.call(e,t),e[t])}},function(e,t,n){var r=n(72),o=n(57),i=n(328)("IE_PROTO"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=o(e),r(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},function(e,t,n){"use strict";var r=n(353)(!0);n(185)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){var r=n(112);e.exports=function(e){return Object(r(e))}},function(e,t,n){"use strict";e.exports={debugTool:null}},function(e,t,n){"use strict";var r=n(1095),o=n(1096);function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=y,t.resolve=function(e,t){return y(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?y(e,!1,!0).resolveObject(t):t},t.format=function(e){o.isString(e)&&(e=y(e));return e instanceof i?e.format():i.prototype.format.call(e)},t.Url=i;var a=/^([a-z0-9.+-]+:)/i,s=/:[0-9]*$/,l=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,u=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(u),f=["%","/","?",";","#"].concat(c),d=["/","?","#"],p=/^[+a-z0-9A-Z_-]{0,63}$/,m=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,h={javascript:!0,"javascript:":!0},_={javascript:!0,"javascript:":!0},g={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},v=n(401);function y(e,t,n){if(e&&o.isObject(e)&&e instanceof i)return e;var r=new i;return r.parse(e,t,n),r}i.prototype.parse=function(e,t,n){if(!o.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var i=e.indexOf("?"),s=-1!==i&&i<e.indexOf("#")?"?":"#",u=e.split(s);u[0]=u[0].replace(/\\/g,"/");var y=e=u.join(s);if(y=y.trim(),!n&&1===e.split("#").length){var b=l.exec(y);if(b)return this.path=y,this.href=y,this.pathname=b[1],b[2]?(this.search=b[2],this.query=t?v.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var E=a.exec(y);if(E){var C=(E=E[0]).toLowerCase();this.protocol=C,y=y.substr(E.length)}if(n||E||y.match(/^\/\/[^@\/]+@[^@\/]+/)){var S="//"===y.substr(0,2);!S||E&&_[E]||(y=y.substr(2),this.slashes=!0)}if(!_[E]&&(S||E&&!g[E])){for(var D,w,T=-1,x=0;x<d.length;x++){-1!==(R=y.indexOf(d[x]))&&(-1===T||R<T)&&(T=R)}-1!==(w=-1===T?y.lastIndexOf("@"):y.lastIndexOf("@",T))&&(D=y.slice(0,w),y=y.slice(w+1),this.auth=decodeURIComponent(D)),T=-1;for(x=0;x<f.length;x++){var R;-1!==(R=y.indexOf(f[x]))&&(-1===T||R<T)&&(T=R)}-1===T&&(T=y.length),this.host=y.slice(0,T),y=y.slice(T),this.parseHost(),this.hostname=this.hostname||"";var k="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!k)for(var N=this.hostname.split(/\./),I=(x=0,N.length);x<I;x++){var O=N[x];if(O&&!O.match(p)){for(var A="",M=0,P=O.length;M<P;M++)O.charCodeAt(M)>127?A+="x":A+=O[M];if(!A.match(p)){var L=N.slice(0,x),F=N.slice(x+1),U=O.match(m);U&&(L.push(U[1]),F.unshift(U[2])),F.length&&(y="/"+F.join(".")+y),this.hostname=L.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),k||(this.hostname=r.toASCII(this.hostname));var j=this.port?":"+this.port:"",B=this.hostname||"";this.host=B+j,this.href+=this.host,k&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==y[0]&&(y="/"+y))}if(!h[C])for(x=0,I=c.length;x<I;x++){var G=c[x];if(-1!==y.indexOf(G)){var q=encodeURIComponent(G);q===G&&(q=escape(G)),y=y.split(G).join(q)}}var V=y.indexOf("#");-1!==V&&(this.hash=y.substr(V),y=y.slice(0,V));var H=y.indexOf("?");if(-1!==H?(this.search=y.substr(H),this.query=y.substr(H+1),t&&(this.query=v.parse(this.query)),y=y.slice(0,H)):t&&(this.search="",this.query={}),y&&(this.pathname=y),g[C]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){j=this.pathname||"";var Y=this.search||"";this.path=j+Y}return this.href=this.format(),this},i.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",n=this.pathname||"",r=this.hash||"",i=!1,a="";this.host?i=e+this.host:this.hostname&&(i=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(i+=":"+this.port)),this.query&&o.isObject(this.query)&&Object.keys(this.query).length&&(a=v.stringify(this.query));var s=this.search||a&&"?"+a||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||g[t])&&!1!==i?(i="//"+(i||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):i||(i=""),r&&"#"!==r.charAt(0)&&(r="#"+r),s&&"?"!==s.charAt(0)&&(s="?"+s),t+i+(n=n.replace(/[?#]/g,function(e){return encodeURIComponent(e)}))+(s=s.replace("#","%23"))+r},i.prototype.resolve=function(e){return this.resolveObject(y(e,!1,!0)).format()},i.prototype.resolveObject=function(e){if(o.isString(e)){var t=new i;t.parse(e,!1,!0),e=t}for(var n=new i,r=Object.keys(this),a=0;a<r.length;a++){var s=r[a];n[s]=this[s]}if(n.hash=e.hash,""===e.href)return n.href=n.format(),n;if(e.slashes&&!e.protocol){for(var l=Object.keys(e),u=0;u<l.length;u++){var c=l[u];"protocol"!==c&&(n[c]=e[c])}return g[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(e.protocol&&e.protocol!==n.protocol){if(!g[e.protocol]){for(var f=Object.keys(e),d=0;d<f.length;d++){var p=f[d];n[p]=e[p]}return n.href=n.format(),n}if(n.protocol=e.protocol,e.host||_[e.protocol])n.pathname=e.pathname;else{for(var m=(e.pathname||"").split("/");m.length&&!(e.host=m.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==m[0]&&m.unshift(""),m.length<2&&m.unshift(""),n.pathname=m.join("/")}if(n.search=e.search,n.query=e.query,n.host=e.host||"",n.auth=e.auth,n.hostname=e.hostname||e.host,n.port=e.port,n.pathname||n.search){var h=n.pathname||"",v=n.search||"";n.path=h+v}return n.slashes=n.slashes||e.slashes,n.href=n.format(),n}var y=n.pathname&&"/"===n.pathname.charAt(0),b=e.host||e.pathname&&"/"===e.pathname.charAt(0),E=b||y||n.host&&e.pathname,C=E,S=n.pathname&&n.pathname.split("/")||[],D=(m=e.pathname&&e.pathname.split("/")||[],n.protocol&&!g[n.protocol]);if(D&&(n.hostname="",n.port=null,n.host&&(""===S[0]?S[0]=n.host:S.unshift(n.host)),n.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===m[0]?m[0]=e.host:m.unshift(e.host)),e.host=null),E=E&&(""===m[0]||""===S[0])),b)n.host=e.host||""===e.host?e.host:n.host,n.hostname=e.hostname||""===e.hostname?e.hostname:n.hostname,n.search=e.search,n.query=e.query,S=m;else if(m.length)S||(S=[]),S.pop(),S=S.concat(m),n.search=e.search,n.query=e.query;else if(!o.isNullOrUndefined(e.search)){if(D)n.hostname=n.host=S.shift(),(k=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=k.shift(),n.host=n.hostname=k.shift());return n.search=e.search,n.query=e.query,o.isNull(n.pathname)&&o.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!S.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var w=S.slice(-1)[0],T=(n.host||e.host||S.length>1)&&("."===w||".."===w)||""===w,x=0,R=S.length;R>=0;R--)"."===(w=S[R])?S.splice(R,1):".."===w?(S.splice(R,1),x++):x&&(S.splice(R,1),x--);if(!E&&!C)for(;x--;x)S.unshift("..");!E||""===S[0]||S[0]&&"/"===S[0].charAt(0)||S.unshift(""),T&&"/"!==S.join("/").substr(-1)&&S.push("");var k,N=""===S[0]||S[0]&&"/"===S[0].charAt(0);D&&(n.hostname=n.host=N?"":S.length?S.shift():"",(k=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=k.shift(),n.host=n.hostname=k.shift()));return(E=E||n.host&&S.length)&&!N&&S.unshift(""),S.length?n.pathname=S.join("/"):(n.pathname=null,n.path=null),o.isNull(n.pathname)&&o.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},i.prototype.parseHost=function(){var e=this.host,t=s.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},function(e,t,n){"use strict";(function(t){var r=d(n(14)),o=d(n(126)),i=d(n(4)),a=d(n(5)),s=n(2),l=d(n(71)),u=d(n(39)),c=d(n(16)),f=d(n(3));function d(e){return e&&e.__esModule?e:{default:e}}var p=/#\/(groups?|room|user|settings|register|login|forgot_password|home|directory)/,m=/#\/(group|room|user)\/.*$/;function h(){var e=window.location,t=e.origin,n=e.hash,r=window.location.pathname;return t.startsWith("file://")&&(r="/<redacted>/"),t+r+function(e){return p.exec(e)?m.test(e)?e.replace(m,"#/$1/<redacted>"):e.replace(p,"#/$1"):(console.warn('Unexpected hash location "'+e+'"'),"#/<unexpected hash location>")}(n)}var _={"App Platform":{id:1,expl:(0,s._td)("The platform you're on"),example:"Electron Platform"},"App Version":{id:2,expl:(0,s._td)("The version of Riot.im"),example:"15.0.0"},"User Type":{id:3,expl:(0,s._td)("Whether or not you're logged in (we don't record your user name)"),example:"Logged In"},"Chosen Language":{id:4,expl:(0,s._td)("Your language of choice"),example:"en"},Instance:{id:5,expl:(0,s._td)("Which officially provided instance you are using, if any"),example:"app"},"RTE: Uses Richtext Mode":{id:6,expl:(0,s._td)("Whether or not you're using the Richtext mode of the Rich Text Editor"),example:"off"},"Homeserver URL":{id:7,expl:(0,s._td)("Your homeserver's URL"),example:"https://matrix.org"},"Identity Server URL":{id:8,expl:(0,s._td)("Your identity server's URL"),example:"https://vector.im"}};function g(e,t){return e.includes(t)?t:"<redacted>"}var v=function(){function e(){(0,i.default)(this,e),this._paq=null,this.disabled=!0,this.firstPage=!0}return(0,a.default)(e,[{key:"enable",value:function(){(this._paq||this._init())&&(this.disabled=!1)}},{key:"disable",value:function(){this.trackEvent("Analytics","opt-out"),this._paq.push(["disableHeartBeatTimer"]),this.disabled=!0}},{key:"_init",value:function(){var e=this,t=u.default.get();if(t&&t.piwik&&t.piwik.url&&t.piwik.siteId){var n=t.piwik.url,r=t.piwik.siteId,o=this;window._paq=this._paq=window._paq||[],this._paq.push(["setTrackerUrl",n+"piwik.php"]),this._paq.push(["setSiteId",r]),this._paq.push(["trackAllContentImpressions"]),this._paq.push(["discardHashTag",!1]),this._paq.push(["enableHeartBeatTimer"]);var i=l.default.get();return this._setVisitVariable("App Platform",i.getHumanReadableName()),i.getAppVersion().then(function(t){e._setVisitVariable("App Version",t)}).catch(function(){e._setVisitVariable("App Version","unknown")}),this._setVisitVariable("Chosen Language",(0,s.getCurrentLanguage)()),"riot.im"===window.location.hostname&&this._setVisitVariable("Instance",window.location.pathname),function(){var e=document.createElement("script"),t=document.getElementsByTagName("script")[0];e.type="text/javascript",e.async=!0,e.defer=!0,e.src=n+"piwik.js",e.onload=function(){console.log("Initialised anonymous analytics"),o._paq=window._paq},t.parentNode.insertBefore(e,t)}(),!0}}},{key:"trackPageChange",value:function(e){this.disabled||(this.firstPage?this.firstPage=!1:("number"==typeof e?this._paq.push(["setGenerationTimeMs",e]):console.warn("Analytics.trackPageChange: expected generationTimeMs to be a number"),this._paq.push(["setCustomUrl",h()]),this._paq.push(["trackPageView"])))}},{key:"trackEvent",value:function(e,t,n,r){this.disabled||this._paq.push(["trackEvent",e,t,n,r])}},{key:"logout",value:function(){this.disabled||this._paq.push(["deleteCookies"])}},{key:"_setVisitVariable",value:function(e,t){this.disabled||this._paq.push(["setCustomVariable",_[e].id,e,t,"visit"])}},{key:"setLoggedIn",value:function(e,t,n){if(!this.disabled){var r=u.default.get();if(r.piwik){var o=r.piwik.whitelistedHSUrls||[],i=r.piwik.whitelistedISUrls||[];this._setVisitVariable("User Type",e?"Guest":"Logged In"),this._setVisitVariable("Homeserver URL",g(o,t)),this._setVisitVariable("Identity Server URL",g(i,n))}}}},{key:"setRichtextMode",value:function(e){this.disabled||this._setVisitVariable("RTE: Uses Richtext Mode",e?"on":"off")}},{key:"showDetailsModal",value:function(){var e=[];if(window.Piwik){var t=window.Piwik.getAsyncTracker();e=(0,o.default)(_).map(function(e){return t.getCustomVariable(e.id)}).filter(Boolean)}else e=(0,r.default)(_).map(function(e){return[e,(0,s._t)("e.g. %(exampleValue)s",{exampleValue:_[e].example})]});var n=window.screen.width+"x"+window.screen.height,i=[{expl:(0,s._td)("Every page you use in the app"),value:(0,s._t)("e.g. <CurrentPageURL>",{},{CurrentPageURL:h()})},{expl:(0,s._td)("Your User Agent"),value:navigator.userAgent},{expl:(0,s._td)("Your device resolution"),value:n}],a=f.default.getComponent("dialogs.ErrorDialog");c.default.createTrackedDialog("Analytics Details","",a,{title:(0,s._t)("Analytics"),description:React.createElement("div",{className:"mx_UserSettings_analyticsModal"},React.createElement("div",null,(0,s._t)("The information being sent to us to help make Riot.im better includes:")),React.createElement("table",null,e.map(function(e){return React.createElement("tr",{key:e[0]},React.createElement("td",null,(0,s._t)(_[e[0]].expl)),void 0!==e[1]&&React.createElement("td",null,React.createElement("code",null,e[1])))}),i.map(function(e,t){return React.createElement("tr",{key:t},React.createElement("td",null,(0,s._t)(e.expl)),React.createElement("td",null,React.createElement("code",null,e.value)))})),React.createElement("div",null,(0,s._t)("Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.")))})}}]),e}();t.mxAnalytics||(t.mxAnalytics=new v),e.exports=t.mxAnalytics}).call(this,n(15))},function(e,t,n){var r=n(63);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){"use strict";var r=n(30);e.exports=function(e,t){return!!e&&r(function(){t?e.call(null,function(){},1):e.call(null)})}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t,n){"use strict";function r(e){return function(){return e}}var o=function(){};o.thatReturns=r,o.thatReturnsFalse=r(!1),o.thatReturnsTrue=r(!0),o.thatReturnsNull=r(null),o.thatReturnsThis=function(){return this},o.thatReturnsArgument=function(e){return e},e.exports=o},function(e,t,n){"use strict";var r=n(32),o=n(45),i=n(541),a=n(168),s=n(542),l=n(169),u=n(279),c=n(23),f=[],d=0,p=i.getPooled(),m=!1,h=null;function _(){C.ReactReconcileTransaction&&h||r("123")}var g=[{initialize:function(){this.dirtyComponentsLength=f.length},close:function(){this.dirtyComponentsLength!==f.length?(f.splice(0,this.dirtyComponentsLength),E()):f.length=0}},{initialize:function(){this.callbackQueue.reset()},close:function(){this.callbackQueue.notifyAll()}}];function v(){this.reinitializeTransaction(),this.dirtyComponentsLength=null,this.callbackQueue=i.getPooled(),this.reconcileTransaction=C.ReactReconcileTransaction.getPooled(!0)}function y(e,t){return e._mountOrder-t._mountOrder}function b(e){var t=e.dirtyComponentsLength;t!==f.length&&r("124",t,f.length),f.sort(y),d++;for(var n=0;n<t;n++){var o,i=f[n],a=i._pendingCallbacks;if(i._pendingCallbacks=null,s.logTopLevelRenders){var u=i;i._currentElement.type.isReactTopLevelWrapper&&(u=i._renderedComponent),o="React update: "+u.getName(),console.time(o)}if(l.performUpdateIfNecessary(i,e.reconcileTransaction,d),o&&console.timeEnd(o),a)for(var c=0;c<a.length;c++)e.callbackQueue.enqueue(a[c],i.getPublicInstance())}}o(v.prototype,u,{getTransactionWrappers:function(){return g},destructor:function(){this.dirtyComponentsLength=null,i.release(this.callbackQueue),this.callbackQueue=null,C.ReactReconcileTransaction.release(this.reconcileTransaction),this.reconcileTransaction=null},perform:function(e,t,n){return u.perform.call(this,this.reconcileTransaction.perform,this.reconcileTransaction,e,t,n)}}),a.addPoolingTo(v);var E=function(){for(;f.length||m;){if(f.length){var e=v.getPooled();e.perform(b,null,e),v.release(e)}if(m){m=!1;var t=p;p=i.getPooled(),t.notifyAll(),i.release(t)}}};var C={ReactReconcileTransaction:null,batchedUpdates:function(e,t,n,r,o,i){return _(),h.batchedUpdates(e,t,n,r,o,i)},enqueueUpdate:function e(t){_(),h.isBatchingUpdates?(f.push(t),null==t._updateBatchNumber&&(t._updateBatchNumber=d+1)):h.batchedUpdates(e,t)},flushBatchedUpdates:E,injection:{injectReconcileTransaction:function(e){e||r("126"),C.ReactReconcileTransaction=e},injectBatchingStrategy:function(e){e||r("127"),"function"!=typeof e.batchedUpdates&&r("128"),"boolean"!=typeof e.isBatchingUpdates&&r("129"),h=e}},asap:function(e,t){c(h.isBatchingUpdates,"ReactUpdates.asap: Can't enqueue an asap callback in a context whereupdates are not being batched."),p.enqueue(e,t),m=!0}};e.exports=C},function(e,t,n){var r,o,i;o=[],void 0===(i="function"==typeof(r=function(){var e=XMLHttpRequest;if(!e)throw new Error("missing XMLHttpRequest");function t(i,a){if("function"!=typeof a)throw new Error("Bad callback given: "+a);if(!i)throw new Error("No options given");var s=i.onResponse;if((i="string"==typeof i?{uri:i}:JSON.parse(JSON.stringify(i))).onResponse=s,i.verbose&&(t.log=function(){var e,t,n={},i=["trace","debug","info","warn","error"];for(t=0;t<i.length;t++)n[e=i[t]]=r,"undefined"!=typeof console&&console&&console[e]&&(n[e]=o(console,e));return n}()),i.url&&(i.uri=i.url,delete i.url),!i.uri&&""!==i.uri)throw new Error("options.uri is a required argument");if("string"!=typeof i.uri)throw new Error("options.uri must be a string");for(var l=["proxy","_redirectsFollowed","maxRedirects","followRedirect"],u=0;u<l.length;u++)if(i[l[u]])throw new Error("options."+l[u]+" is not supported");if(i.callback=a,i.method=i.method||"GET",i.headers=i.headers||{},i.body=i.body||null,i.timeout=i.timeout||t.DEFAULT_TIMEOUT,i.headers.host)throw new Error("Options.headers.host is not supported");i.json&&(i.headers.accept=i.headers.accept||"application/json","GET"!==i.method&&(i.headers["content-type"]="application/json"),"boolean"!=typeof i.json?i.body=JSON.stringify(i.json):"string"!=typeof i.body&&(i.body=JSON.stringify(i.body)));var c=function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t.join("&")};if(i.qs){var f="string"==typeof i.qs?i.qs:c(i.qs);-1!==i.uri.indexOf("?")?i.uri=i.uri+"&"+f:i.uri=i.uri+"?"+f}if(i.form){if("string"==typeof i.form)throw"form name unsupported";if("POST"===i.method){var d=(i.encoding||"application/x-www-form-urlencoded").toLowerCase();switch(i.headers["content-type"]=d,d){case"application/x-www-form-urlencoded":i.body=c(i.form).replace(/%20/g,"+");break;case"multipart/form-data":var p=function(e){var t={};t.boundry="-------------------------------"+Math.floor(1e9*Math.random());var n=[];for(var r in e)e.hasOwnProperty(r)&&n.push("--"+t.boundry+'\nContent-Disposition: form-data; name="'+r+'"\n\n'+e[r]+"\n");return n.push("--"+t.boundry+"--"),t.body=n.join(""),t.length=t.body.length,t.type="multipart/form-data; boundary="+t.boundry,t}(i.form);i.body=p.body,i.headers["content-type"]=p.type;break;default:throw new Error("unsupported encoding:"+d)}}}return i.onResponse=i.onResponse||r,!0===i.onResponse&&(i.onResponse=a,i.callback=r),!i.headers.authorization&&i.auth&&(i.headers.authorization="Basic "+function(e){var t,n,r,o,i,a,s,l,u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",c=0,f=0,d="",p=[];if(!e)return e;do{t=e.charCodeAt(c++),n=e.charCodeAt(c++),r=e.charCodeAt(c++),o=(l=t<<16|n<<8|r)>>18&63,i=l>>12&63,a=l>>6&63,s=63&l,p[f++]=u.charAt(o)+u.charAt(i)+u.charAt(a)+u.charAt(s)}while(c<e.length);switch(d=p.join(""),e.length%3){case 1:d=d.slice(0,-2)+"==";break;case 2:d=d.slice(0,-1)+"="}return d}(i.auth.username+":"+i.auth.password)),function(r){var o=new e,i=!1,a=function(e){var t,n=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/;try{t=location.href}catch(e){(t=document.createElement("a")).href="",t=t.href}var r=n.exec(t.toLowerCase())||[],o=n.exec(e.toLowerCase());return!(!o||o[1]==r[1]&&o[2]==r[2]&&(o[3]||("http:"===o[1]?80:443))==(r[3]||("http:"===r[1]?80:443)))}(r.uri),s="withCredentials"in o;if(n+=1,o.seq_id=n,o.id=n+": "+r.method+" "+r.uri,o._id=o.id,a&&!s){var l=new Error("Browser does not support cross-origin request: "+r.uri);return l.cors="unsupported",r.callback(l,o)}o.timeoutTimer=setTimeout(function(){i=!0;var e=new Error("ETIMEDOUT");return e.code="ETIMEDOUT",e.duration=r.timeout,t.log.error("Timeout",{id:o._id,milliseconds:r.timeout}),r.callback(e,o)},r.timeout);var u={response:!1,loading:!1,end:!1};return o.onreadystatechange=function(n){if(i)return t.log.debug("Ignoring timed out state change",{state:o.readyState,id:o.id});if(t.log.debug("State change",{state:o.readyState,id:o.id,timed_out:i}),o.readyState===e.OPENED)for(var a in t.log.debug("Request started",{id:o.id}),r.headers)o.setRequestHeader(a,r.headers[a]);else o.readyState===e.HEADERS_RECEIVED?c():o.readyState===e.LOADING?(c(),f()):o.readyState===e.DONE&&(c(),f(),function(){if(!u.end){if(u.end=!0,t.log.debug("Request done",{id:o.id}),o.body=o.responseText,r.json)try{o.body=JSON.parse(o.responseText)}catch(e){return r.callback(e,o)}r.callback(null,o,o.body)}}())},o.open(r.method,r.uri,!0),a&&(o.withCredentials=!!r.withCredentials),o.send(r.body),o;function c(){if(!u.response){if(u.response=!0,t.log.debug("Got response",{id:o.id,status:o.status}),clearTimeout(o.timeoutTimer),o.statusCode=o.status,a&&0==o.statusCode){var e=new Error("CORS request rejected: "+r.uri);return e.cors="rejected",u.loading=!0,u.end=!0,r.callback(e,o)}r.onResponse(null,o)}}function f(){u.loading||(u.loading=!0,t.log.debug("Response body loading",{id:o.id}))}}(i)}t.log={trace:r,debug:r,info:r,warn:r,error:r};var n=0;function r(){}function o(e,t){return function(n,r){return"object"==typeof r&&(n+=" "+JSON.stringify(r)),e[t].call(e,n)}}return t.withCredentials=!1,t.DEFAULT_TIMEOUT=18e4,t.defaults=function(e,n){var r=function(t){return function(n,r){for(var o in n="string"==typeof n?{uri:n}:JSON.parse(JSON.stringify(n)),e)void 0===n[o]&&(n[o]=e[o]);return t(n,r)}},o=r(t);return o.get=r(t.get),o.post=r(t.post),o.put=r(t.put),o.head=r(t.head),o},["get","put","post","head"].forEach(function(e){var n=e.toUpperCase();t[e.toLowerCase()]=function(e){"string"==typeof e?e={method:n,uri:e}:(e=JSON.parse(JSON.stringify(e))).method=n;var r=[e].concat(Array.prototype.slice.apply(arguments,[1]));return t.apply(this,r)}}),t.couch=function(e,n){return"string"==typeof e&&(e={uri:e}),e.json=!0,e.body&&(e.json=e.body),delete e.body,n=n||r,t(e,function(e,t,r){if(e)return n(e,t,r);if((t.statusCode<200||t.statusCode>299)&&r.error){for(var o in e=new Error("CouchDB error: "+(r.error.reason||r.error.error)),r)e[o]=r[o];return n(e,t,r)}return n(e,t,r)})},t})?r.apply(t,o):r)||(e.exports=i)},function(e,t){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},function(e,t,n){var r=n(628),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();e.exports=i},function(e,t){var n=Array.isArray;e.exports=n},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){"use strict";var r=_(n(31)),o=_(n(40)),i=_(n(11)),a=_(n(4)),s=_(n(5)),l=_(n(12)),u=_(n(13)),c=_(n(10)),f=n(246),d=_(n(8)),p=_(n(3)),m=_(n(16)),h=n(2);function _(e){return e&&e.__esModule?e:{default:e}}var g={joining:!1,joinError:null,roomId:null,initialEventId:null,isInitialEventHighlighted:!1,roomAlias:null,roomLoading:!1,roomLoadError:null,forwardingEvent:null,quotingEvent:null,isEditingSettings:!1},v=function(e){function t(){(0,a.default)(this,t);var e=(0,l.default)(this,(t.__proto__||(0,i.default)(t)).call(this,c.default));return e._state=g,e}return(0,u.default)(t,e),(0,s.default)(t,[{key:"_setState",value:function(e){this._state=(0,o.default)(this._state,e),this.__emitChange()}},{key:"__onDispatch",value:function(e){switch(e.action){case"view_room":this._viewRoom(e);break;case"view_my_groups":case"view_group":this._setState({roomId:null,roomAlias:null});break;case"view_room_error":this._viewRoomError(e);break;case"will_join":this._setState({joining:!0});break;case"cancel_join":this._setState({joining:!1});break;case"join_room":this._joinRoom(e);break;case"join_room_error":this._joinRoomError(e);break;case"on_logged_out":this.reset();break;case"forward_event":this._setState({forwardingEvent:e.event});break;case"reply_to_event":this._setState({replyingToEvent:e.event});break;case"open_room_settings":this._setState({isEditingSettings:!0});break;case"close_settings":this._setState({isEditingSettings:!1})}}},{key:"_viewRoom",value:function(e){if(e.room_id){var t={roomId:e.room_id,roomAlias:e.room_alias,initialEventId:e.event_id,isInitialEventHighlighted:e.highlighted,forwardingEvent:null,roomLoading:!1,roomLoadError:null,shouldPeek:void 0===e.should_peek||e.should_peek,joining:e.joining||!1,replyingToEvent:null,isEditingSettings:!1};this._state.forwardingEvent&&c.default.dispatch({action:"send_event",room_id:t.roomId,event:this._state.forwardingEvent}),this._setState(t),e.auto_join&&this._joinRoom(e)}else e.room_alias&&(this._setState({roomId:null,initialEventId:null,initialEventPixelOffset:null,isInitialEventHighlighted:null,roomAlias:e.room_alias,roomLoading:!0,roomLoadError:null}),d.default.get().getRoomIdForAlias(e.room_alias).done(function(t){c.default.dispatch({action:"view_room",room_id:t.room_id,event_id:e.event_id,highlighted:e.highlighted,room_alias:e.room_alias,auto_join:e.auto_join,oob_data:e.oob_data})},function(t){c.default.dispatch({action:"view_room_error",room_id:null,room_alias:e.room_alias,err:t})}))}},{key:"_viewRoomError",value:function(e){this._setState({roomId:e.room_id,roomAlias:e.room_alias,roomLoading:!1,roomLoadError:e.err})}},{key:"_joinRoom",value:function(e){this._setState({joining:!0}),d.default.get().joinRoom(this._state.roomAlias||this._state.roomId,e.opts).done(function(){},function(e){c.default.dispatch({action:"join_room_error",err:e});var t=e.message?e.message:(0,r.default)(e);"M_INCOMPATIBLE_ROOM_VERSION"===e.errcode&&(t=React.createElement("div",null,(0,h._t)("Sorry, your homeserver is too old to participate in this room."),React.createElement("br",null),(0,h._t)("Please contact your homeserver administrator.")));var n=p.default.getComponent("dialogs.ErrorDialog");m.default.createTrackedDialog("Failed to join room","",n,{title:(0,h._t)("Failed to join room"),description:t})})}},{key:"_joinRoomError",value:function(e){this._setState({joining:!1,joinError:e.err})}},{key:"reset",value:function(){this._state=(0,o.default)({},g)}},{key:"getRoomId",value:function(){return this._state.roomId}},{key:"getInitialEventId",value:function(){return this._state.initialEventId}},{key:"isInitialEventHighlighted",value:function(){return this._state.isInitialEventHighlighted}},{key:"getRoomAlias",value:function(){return this._state.roomAlias}},{key:"isRoomLoading",value:function(){return this._state.roomLoading}},{key:"getRoomLoadError",value:function(){return this._state.roomLoadError}},{key:"isJoining",value:function(){return this._state.joining}},{key:"getJoinError",value:function(){return this._state.joinError}},{key:"getForwardingEvent",value:function(){return this._state.forwardingEvent}},{key:"getQuotingEvent",value:function(){return this._state.replyingToEvent}},{key:"isEditingSettings",value:function(){return this._state.isEditingSettings}},{key:"shouldPeek",value:function(){return this._state.shouldPeek}}]),t}(f.Store),y=null;y||(y=new v),e.exports=y},function(e,t){var n=e.exports={version:"2.5.1"};"number"==typeof __e&&(__e=n)},function(e,t,n){var r=n(33);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r=n(7),o=n(105),i=n(30);e.exports=function(e,t){var n=(o.Object||{})[e]||Object[e],a={};a[e]=t(n),r(r.S+r.F*i(function(){n(1)}),"Object",a)}},function(e,t,n){var r=n(91),o=n(208),i=n(57),a=n(50),s=n(345);e.exports=function(e,t){var n=1==e,l=2==e,u=3==e,c=4==e,f=6==e,d=5==e||f,p=t||s;return function(t,s,m){for(var h,_,g=i(t),v=o(g),y=r(s,m,3),b=a(v.length),E=0,C=n?p(t,b):l?p(t,0):void 0;b>E;E++)if((d||E in v)&&(_=y(h=v[E],E,g),e))if(n)C[E]=_;else if(_)switch(e){case 3:return!0;case 5:return h;case 6:return E;case 2:C.push(h)}else if(c)return!1;return f?-1:u||c?c:C}}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){n(363);for(var r=n(34),o=n(60),i=n(77),a=n(38)("toStringTag"),s="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),l=0;l<s.length;l++){var u=s[l],c=r[u],f=c&&c.prototype;f&&!f[a]&&o(f,a,u),i[u]=i.Array}},function(e,t,n){"use strict";if(n(48)){var r=n(152),o=n(28),i=n(30),a=n(7),s=n(267),l=n(351),u=n(91),c=n(158),f=n(150),d=n(73),p=n(160),m=n(108),h=n(50),_=n(520),g=n(154),v=n(106),y=n(72),b=n(210),E=n(33),C=n(57),S=n(342),D=n(155),w=n(85),T=n(156).f,x=n(344),R=n(151),k=n(42),N=n(110),I=n(258),O=n(265),A=n(347),M=n(183),P=n(262),L=n(157),F=n(346),U=n(510),j=n(49),B=n(84),G=j.f,q=B.f,V=o.RangeError,H=o.TypeError,Y=o.Uint8Array,z=Array.prototype,W=l.ArrayBuffer,K=l.DataView,$=N(0),Q=N(2),X=N(3),J=N(4),Z=N(5),ee=N(6),te=I(!0),ne=I(!1),re=A.values,oe=A.keys,ie=A.entries,ae=z.lastIndexOf,se=z.reduce,le=z.reduceRight,ue=z.join,ce=z.sort,fe=z.slice,de=z.toString,pe=z.toLocaleString,me=k("iterator"),he=k("toStringTag"),_e=R("typed_constructor"),ge=R("def_constructor"),ve=s.CONSTR,ye=s.TYPED,be=s.VIEW,Ee=N(1,function(e,t){return Te(O(e,e[ge]),t)}),Ce=i(function(){return 1===new Y(new Uint16Array([1]).buffer)[0]}),Se=!!Y&&!!Y.prototype.set&&i(function(){new Y(1).set({})}),De=function(e,t){var n=m(e);if(n<0||n%t)throw V("Wrong offset!");return n},we=function(e){if(E(e)&&ye in e)return e;throw H(e+" is not a typed array!")},Te=function(e,t){if(!(E(e)&&_e in e))throw H("It is not a typed array constructor!");return new e(t)},xe=function(e,t){return Re(O(e,e[ge]),t)},Re=function(e,t){for(var n=0,r=t.length,o=Te(e,r);r>n;)o[n]=t[n++];return o},ke=function(e,t,n){G(e,t,{get:function(){return this._d[n]}})},Ne=function(e){var t,n,r,o,i,a,s=C(e),l=arguments.length,c=l>1?arguments[1]:void 0,f=void 0!==c,d=x(s);if(void 0!=d&&!S(d)){for(a=d.call(s),r=[],t=0;!(i=a.next()).done;t++)r.push(i.value);s=r}for(f&&l>2&&(c=u(c,arguments[2],2)),t=0,n=h(s.length),o=Te(this,n);n>t;t++)o[t]=f?c(s[t],t):s[t];return o},Ie=function(){for(var e=0,t=arguments.length,n=Te(this,t);t>e;)n[e]=arguments[e++];return n},Oe=!!Y&&i(function(){pe.call(new Y(1))}),Ae=function(){return pe.apply(Oe?fe.call(we(this)):we(this),arguments)},Me={copyWithin:function(e,t){return U.call(we(this),e,t,arguments.length>2?arguments[2]:void 0)},every:function(e){return J(we(this),e,arguments.length>1?arguments[1]:void 0)},fill:function(e){return F.apply(we(this),arguments)},filter:function(e){return xe(this,Q(we(this),e,arguments.length>1?arguments[1]:void 0))},find:function(e){return Z(we(this),e,arguments.length>1?arguments[1]:void 0)},findIndex:function(e){return ee(we(this),e,arguments.length>1?arguments[1]:void 0)},forEach:function(e){$(we(this),e,arguments.length>1?arguments[1]:void 0)},indexOf:function(e){return ne(we(this),e,arguments.length>1?arguments[1]:void 0)},includes:function(e){return te(we(this),e,arguments.length>1?arguments[1]:void 0)},join:function(e){return ue.apply(we(this),arguments)},lastIndexOf:function(e){return ae.apply(we(this),arguments)},map:function(e){return Ee(we(this),e,arguments.length>1?arguments[1]:void 0)},reduce:function(e){return se.apply(we(this),arguments)},reduceRight:function(e){return le.apply(we(this),arguments)},reverse:function(){for(var e,t=we(this).length,n=Math.floor(t/2),r=0;r<n;)e=this[r],this[r++]=this[--t],this[t]=e;return this},some:function(e){return X(we(this),e,arguments.length>1?arguments[1]:void 0)},sort:function(e){return ce.call(we(this),e)},subarray:function(e,t){var n=we(this),r=n.length,o=g(e,r);return new(O(n,n[ge]))(n.buffer,n.byteOffset+o*n.BYTES_PER_ELEMENT,h((void 0===t?r:g(t,r))-o))}},Pe=function(e,t){return xe(this,fe.call(we(this),e,t))},Le=function(e){we(this);var t=De(arguments[1],1),n=this.length,r=C(e),o=h(r.length),i=0;if(o+t>n)throw V("Wrong length!");for(;i<o;)this[t+i]=r[i++]},Fe={entries:function(){return ie.call(we(this))},keys:function(){return oe.call(we(this))},values:function(){return re.call(we(this))}},Ue=function(e,t){return E(e)&&e[ye]&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},je=function(e,t){return Ue(e,t=v(t,!0))?f(2,e[t]):q(e,t)},Be=function(e,t,n){return!(Ue(e,t=v(t,!0))&&E(n)&&y(n,"value"))||y(n,"get")||y(n,"set")||n.configurable||y(n,"writable")&&!n.writable||y(n,"enumerable")&&!n.enumerable?G(e,t,n):(e[t]=n.value,e)};ve||(B.f=je,j.f=Be),a(a.S+a.F*!ve,"Object",{getOwnPropertyDescriptor:je,defineProperty:Be}),i(function(){de.call({})})&&(de=pe=function(){return ue.call(this)});var Ge=p({},Me);p(Ge,Fe),d(Ge,me,Fe.values),p(Ge,{slice:Pe,set:Le,constructor:function(){},toString:de,toLocaleString:Ae}),ke(Ge,"buffer","b"),ke(Ge,"byteOffset","o"),ke(Ge,"byteLength","l"),ke(Ge,"length","e"),G(Ge,he,{get:function(){return this[ye]}}),e.exports=function(e,t,n,l){var u=e+((l=!!l)?"Clamped":"")+"Array",f="get"+e,p="set"+e,m=o[u],g=m||{},v=m&&w(m),y=!m||!s.ABV,C={},S=m&&m.prototype,x=function(e,n){G(e,n,{get:function(){return function(e,n){var r=e._d;return r.v[f](n*t+r.o,Ce)}(this,n)},set:function(e){return function(e,n,r){var o=e._d;l&&(r=(r=Math.round(r))<0?0:r>255?255:255&r),o.v[p](n*t+o.o,r,Ce)}(this,n,e)},enumerable:!0})};y?(m=n(function(e,n,r,o){c(e,m,u,"_d");var i,a,s,l,f=0,p=0;if(E(n)){if(!(n instanceof W||"ArrayBuffer"==(l=b(n))||"SharedArrayBuffer"==l))return ye in n?Re(m,n):Ne.call(m,n);i=n,p=De(r,t);var g=n.byteLength;if(void 0===o){if(g%t)throw V("Wrong length!");if((a=g-p)<0)throw V("Wrong length!")}else if((a=h(o)*t)+p>g)throw V("Wrong length!");s=a/t}else s=_(n),i=new W(a=s*t);for(d(e,"_d",{b:i,o:p,l:a,e:s,v:new K(i)});f<s;)x(e,f++)}),S=m.prototype=D(Ge),d(S,"constructor",m)):i(function(){m(1)})&&i(function(){new m(-1)})&&P(function(e){new m,new m(null),new m(1.5),new m(e)},!0)||(m=n(function(e,n,r,o){var i;return c(e,m,u),E(n)?n instanceof W||"ArrayBuffer"==(i=b(n))||"SharedArrayBuffer"==i?void 0!==o?new g(n,De(r,t),o):void 0!==r?new g(n,De(r,t)):new g(n):ye in n?Re(m,n):Ne.call(m,n):new g(_(n))}),$(v!==Function.prototype?T(g).concat(T(v)):T(g),function(e){e in m||d(m,e,g[e])}),m.prototype=S,r||(S.constructor=m));var R=S[me],k=!!R&&("values"==R.name||void 0==R.name),N=Fe.values;d(m,_e,!0),d(S,ye,u),d(S,be,!0),d(S,ge,m),(l?new m(1)[he]==u:he in S)||G(S,he,{get:function(){return u}}),C[u]=m,a(a.G+a.W+a.F*(m!=g),C),a(a.S,u,{BYTES_PER_ELEMENT:t}),a(a.S+a.F*i(function(){g.of.call(m,1)}),u,{from:Ne,of:Ie}),"BYTES_PER_ELEMENT"in S||d(S,"BYTES_PER_ELEMENT",t),a(a.P,u,Me),L(u),a(a.P+a.F*Se,u,{set:Le}),a(a.P+a.F*!k,u,Fe),r||S.toString==de||(S.toString=de),a(a.P+a.F*i(function(){new m(1).slice()}),u,{slice:Pe}),a(a.P+a.F*(i(function(){return[1,2].toLocaleString()!=new m([1,2]).toLocaleString()})||!i(function(){S.toLocaleString.call([1,2])})),u,{toLocaleString:Ae}),M[u]=k?R:N,r||k||d(S,me,N)}}else e.exports=function(){}},function(e,t,n){var r=n(515),o=n(7),i=n(257)("metadata"),a=i.store||(i.store=new(n(518))),s=function(e,t,n){var o=a.get(e);if(!o){if(!n)return;a.set(e,o=new r)}var i=o.get(t);if(!i){if(!n)return;o.set(t,i=new r)}return i};e.exports={store:a,map:s,has:function(e,t,n){var r=s(t,n,!1);return void 0!==r&&r.has(e)},get:function(e,t,n){var r=s(t,n,!1);return void 0===r?void 0:r.get(e)},set:function(e,t,n,r){s(n,r,!0).set(e,t)},keys:function(e,t){var n=s(e,t,!1),r=[];return n&&n.forEach(function(e,t){r.push(t)}),r},key:function(e){return void 0===e||"symbol"==typeof e?e:String(e)},exp:function(e){o(o.S,"Reflect",e)}}},function(e,t,n){var r=n(35);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){var r=n(52),o=n(271),i=n(121),a=n(119)("IE_PROTO"),s=function(){},l=function(){var e,t=n(136)("iframe"),r=i.length;for(t.style.display="none",n(272).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),l=e.F;r--;)delete l.prototype[i[r]];return l()};e.exports=Object.create||function(e,t){var n;return null!==e?(s.prototype=r(e),n=new s,s.prototype=null,n[a]=e):n=l(),void 0===t?n:o(n,t)}},function(e,t,n){var r=n(111),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t,n){var r=n(120)("keys"),o=n(96);e.exports=function(e){return r[e]||(r[e]=o(e))}},function(e,t,n){var r=n(34),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});e.exports=function(e){return o[e]||(o[e]={})}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){var r=n(46).f,o=n(61),i=n(38)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},function(e,t,n){"use strict";e.exports={current:null}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){"use strict";var r=n(45),o=n(168),i=n(97),a=(n(36),["dispatchConfig","_targetInst","nativeEvent","isDefaultPrevented","isPropagationStopped","_dispatchListeners","_dispatchInstances"]),s={type:null,target:null,currentTarget:i.thatReturnsNull,eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};function l(e,t,n,r){this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n;var o=this.constructor.Interface;for(var a in o)if(o.hasOwnProperty(a)){0;var s=o[a];s?this[a]=s(n):"target"===a?this.target=r:this[a]=n[a]}var l=null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue;return this.isDefaultPrevented=l?i.thatReturnsTrue:i.thatReturnsFalse,this.isPropagationStopped=i.thatReturnsFalse,this}r(l.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=i.thatReturnsTrue)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=i.thatReturnsTrue)},persist:function(){this.isPersistent=i.thatReturnsTrue},isPersistent:i.thatReturnsFalse,destructor:function(){var e=this.constructor.Interface;for(var t in e)this[t]=null;for(var n=0;n<a.length;n++)this[a[n]]=null}}),l.Interface=s,l.augmentClass=function(e,t){var n=function(){};n.prototype=this.prototype;var i=new n;r(i,e.prototype),e.prototype=i,e.prototype.constructor=e,e.Interface=r({},this.Interface,t),e.augmentClass=this.augmentClass,o.addPoolingTo(e,o.fourArgumentPooler)},o.addPoolingTo(l,o.fourArgumentPooler),e.exports=l},function(e,t,n){e.exports={default:n(1101),__esModule:!0}},function(e,t,n){"use strict";(function(t){var r=y(n(14)),o=y(n(19)),i=n(9),a=function(){var e=(0,i.coroutine)(o.default.mark(function e(t,n){var r,a,l,d,h,y,b,E,C,S,D,w,T;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=new v.default,a=!1,e.prev=2,e.next=5,(0,i.resolve)(r.connect());case 5:a=r.hasCredentials(),e.next=10;break;case 8:e.prev=8,e.t0=e.catch(2);case 10:if(a){e.next=14;break}return l=c.default.getComponent("dialogs.ErrorDialog"),u.default.createTrackedDialog("Could not connect to the integration server","",l,{title:(0,f._t)("Could not connect to the integration server"),description:(0,f._t)("A conference call could not be started because the intgrations server is not available")}),e.abrupt("return");case 14:if(p.default.dispatch({action:"appsDrawer",show:!0}),d=s.default.get().getRoom(t),h=_.default.getRoomWidgets(d),!g.default.roomHasPendingWidgetsOfType(t,h,"jitsi")){e.next=21;break}return y=c.default.getComponent("dialogs.ErrorDialog"),u.default.createTrackedDialog("Call already in progress","",y,{title:(0,f._t)("Call in Progress"),description:(0,f._t)("A call is currently being placed!")}),e.abrupt("return");case 21:if(!(h.filter(function(e){return"jitsi"===e.getContent().type}).length>0)){e.next=27;break}return console.warn("Refusing to start conference call widget in "+t+" a conference call widget is already present"),b=c.default.getComponent("dialogs.ErrorDialog"),u.default.createTrackedDialog("Already have Jitsi Widget","",b,{title:(0,f._t)("Call in Progress"),description:(0,f._t)("A call is already in progress!")}),e.abrupt("return");case 27:E=Math.random().toString(36).substring(2),C=d.roomId.replace(/[^A-Za-z0-9]/g,"")+E,S=["confId="+encodeURIComponent(C),"isAudioConf="+("voice"===n?"true":"false"),"displayName=$matrix_display_name","avatarUrl=$matrix_avatar_url","email=$matrix_user_id"].join("&"),D=void 0,D=m.default.get().integrations_jitsi_widget_url?m.default.get().integrations_jitsi_widget_url+"?"+S:m.default.get().integrations_rest_url+"/widgets/jitsi.html?"+S,w={widgetSessionId:E},T="jitsi_"+s.default.get().credentials.userId+"_"+Date.now(),_.default.setRoomWidget(t,T,"jitsi",D,"Jitsi",w).then(function(){console.log("Jitsi widget added")}).catch(function(e){if("M_FORBIDDEN"===e.errcode){var t=c.default.getComponent("dialogs.ErrorDialog");u.default.createTrackedDialog("Call Failed","",t,{title:(0,f._t)("Permission Required"),description:(0,f._t)("You do not have permission to start a conference call in this room")})}console.error(e)});case 35:case"end":return e.stop()}},e,this,[[2,8]])}));return function(t,n){return e.apply(this,arguments)}}(),s=y(n(8)),l=y(n(71)),u=y(n(16)),c=y(n(3)),f=n(2),d=y(n(17)),p=y(n(10)),m=y(n(39)),h=n(410),_=y(n(142)),g=y(n(292)),v=y(n(173));function y(e){return e&&e.__esModule?e:{default:e}}t.mxCalls={};var b=t.mxCalls,E=null,C={};function S(e){var t=document.getElementById(e);t&&(C[e]?C[e]=C[e].then(function(){return t.load(),t.play()}):C[e]=t.play())}function D(e){var t=document.getElementById(e);t&&(C[e]?C[e]=C[e].then(function(){return t.pause()}):C[e]=t.pause())}function w(e){e.on("error",function(t){if(console.error("Call error: %s",t),console.error(t.stack),"unknown_devices"===t.code){var n=c.default.getComponent("dialogs.QuestionDialog");u.default.createTrackedDialog("Call Failed","",n,{title:(0,f._t)("Call Failed"),description:(0,f._t)("There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call."),button:(0,f._t)("Review Devices"),onFinished:function(t){if(t){var n=s.default.get().getRoom(e.roomId);(0,h.showUnknownDeviceDialogForCalls)(s.default.get(),n,function(){!function(e){"outbound"===e.direction?p.default.dispatch({action:"place_call",room_id:e.roomId,type:e.type}):e.answer()}(e)},"outbound"===e.direction?(0,f._t)("Call Anyway"):(0,f._t)("Answer Anyway"),"outbound"===e.direction?(0,f._t)("Call"):(0,f._t)("Answer"))}}})}else{var r=c.default.getComponent("dialogs.ErrorDialog");u.default.createTrackedDialog("Call Failed","",r,{title:(0,f._t)("Call Failed"),description:t.message})}}),e.on("hangup",function(){T(void 0,e.roomId,"ended")}),e.on("state",function(t,n){if("ringing"===t)T(e,e.roomId,"ringing"),D("ringbackAudio");else if("invite_sent"===t)T(e,e.roomId,"ringback"),S("ringbackAudio");else if("ended"===t&&"connected"===n)T(void 0,e.roomId,"ended"),D("ringbackAudio"),S("callendAudio");else if("ended"===t&&"invite_sent"===n&&("remote"===e.hangupParty||"local"===e.hangupParty&&"invite_timeout"===e.hangupReason)){T(e,e.roomId,"busy"),D("ringbackAudio"),S("busyAudio");var r=c.default.getComponent("dialogs.ErrorDialog");u.default.createTrackedDialog("Call Handler","Call Timeout",r,{title:(0,f._t)("Call Timeout"),description:(0,f._t)("The remote side failed to pick up")+"."})}else"invite_sent"===n?(T(e,e.roomId,"stop_ringback"),D("ringbackAudio")):"ringing"===n?(T(e,e.roomId,"stop_ringing"),D("ringbackAudio")):"connected"===t&&(T(e,e.roomId,"connected"),D("ringbackAudio"))})}function T(e,t,n){console.log("Call state in %s changed to %s (%s)",t,n,e?e.call_state:"-"),b[t]=e,"ringing"===n?S("ringAudio"):e&&"ringing"===e.call_state&&D("ringAudio"),e&&(e.call_state=n),p.default.dispatch({action:"call_state",room_id:t,state:n})}t.mxCallHandler||p.default.register(function(t){switch(t.action){case"place_call":if(e.exports.getAnyActiveCall()){var n=c.default.getComponent("dialogs.ErrorDialog");return void u.default.createTrackedDialog("Call Handler","Existing Call",n,{title:(0,f._t)("Existing Call"),description:(0,f._t)("You are already in a call.")})}if(!s.default.get().supportsVoip()){var r=c.default.getComponent("dialogs.ErrorDialog");return void u.default.createTrackedDialog("Call Handler","VoIP is unsupported",r,{title:(0,f._t)("VoIP is unsupported"),description:(0,f._t)("You cannot place VoIP calls in this browser.")})}var o=s.default.get().getRoom(t.room_id);if(!o)return void console.error("Room %s does not exist.",t.room_id);var i=o.getJoinedMembers();if(i.length<=1){var m=c.default.getComponent("dialogs.ErrorDialog");return void u.default.createTrackedDialog("Call Handler","Cannot place call with self",m,{description:(0,f._t)("You cannot place a call with yourself.")})}2===i.length?(console.log("Place %s call in %s",t.type,t.room_id),function(e){if(w(e),"voice"===t.type)e.placeVoiceCall();else if("video"===t.type)e.placeVideoCall(t.remote_element,t.local_element);else if("screensharing"===t.type){var n=l.default.get().screenCaptureErrorString();if(n){T(void 0,e.roomId,"ended"),console.log("Can't capture screen: "+n);var r=c.default.getComponent("dialogs.ErrorDialog");return void u.default.createTrackedDialog("Call Handler","Unable to capture screen",r,{title:(0,f._t)("Unable to capture screen"),description:n})}e.placeScreenSharingCall(t.remote_element,t.local_element)}else console.error("Unknown conf call type: %s",t.type)}(d.default.createNewMatrixCall(s.default.get(),t.room_id))):p.default.dispatch({action:"place_conference_call",room_id:t.room_id,type:t.type,remote_element:t.remote_element,local_element:t.local_element});break;case"place_conference_call":console.log("Place conference call in %s",t.room_id),a(t.room_id,t.type);break;case"incoming_call":if(e.exports.getAnyActiveCall())return;if(!s.default.get().supportsVoip())return;var h=t.call;w(h),T(h,h.roomId,"ringing");break;case"hangup":if(!b[t.room_id])return;b[t.room_id].hangup(),T(null,t.room_id,"ended");break;case"answer":if(!b[t.room_id])return;b[t.room_id].answer(),T(b[t.room_id],t.room_id,"connected"),p.default.dispatch({action:"view_room",room_id:t.room_id})}});var x={getCallForRoom:function(t){var n=e.exports.getCall(t);return n||(E&&(n=E.getConferenceCallForRoom(t)),n||null)},getCall:function(e){return b[e]||null},getAnyActiveCall:function(){for(var e=(0,r.default)(b),t=0;t<e.length;t++)if(b[e[t]]&&"ended"!==b[e[t]].call_state)return b[e[t]];return null},setConferenceHandler:function(e){E=e},getConferenceHandler:function(){return E}};void 0===t.mxCallHandler&&(t.mxCallHandler=x),e.exports=t.mxCallHandler}).call(this,n(15))},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}},function(e,t,n){"use strict";var r=n(79);function o(e){var t=e.scanner.TOKENS,n=e.parser.TOKENS.Base,r=e.parser.start;if(void 0===t.UNDERSCORE)throw new Error("linkify-matrix requires linkifyjs 2.1.1: this version is too old.");var o=function(e){n.call(this,e),this.type="roomalias",this.isLink=!0};o.prototype=new n;var i=r.jump(t.POUND),a=new e.parser.State,s=new e.parser.State,l=new e.parser.State,u=new e.parser.State,c=new e.parser.State(o),f=new e.parser.State,d=new e.parser.State(o),p=[t.DOT,t.PLUS,t.NUM,t.DOMAIN,t.TLD,t.UNDERSCORE,t.POUND,t.LOCALHOST];i.on(p,a),a.on(p,a),a.on(t.DOMAIN,a),a.on(t.COLON,s),s.on(t.DOMAIN,l),s.on(t.LOCALHOST,c),s.on(t.TLD,c),l.on(t.DOT,u),u.on(t.DOMAIN,l),u.on(t.TLD,c),c.on(t.DOT,u),c.on(t.COLON,f),f.on(t.NUM,d);var m=function(e){n.call(this,e),this.type="userid",this.isLink=!0};m.prototype=new n;var h=r.jump(t.AT),_=new e.parser.State,g=new e.parser.State,v=new e.parser.State,y=new e.parser.State,b=new e.parser.State(m),E=new e.parser.State,C=new e.parser.State(m),S=[t.DOT,t.UNDERSCORE,t.PLUS,t.NUM,t.DOMAIN,t.TLD,t.LOCALHOST];h.on(S,_),_.on(S,_),_.on(t.DOMAIN,_),_.on(t.COLON,g),g.on(t.DOMAIN,v),g.on(t.LOCALHOST,b),g.on(t.TLD,b),v.on(t.DOT,y),y.on(t.DOMAIN,v),y.on(t.TLD,b),b.on(t.DOT,y),b.on(t.COLON,E),E.on(t.NUM,C);var D=function(e){n.call(this,e),this.type="groupid",this.isLink=!0};D.prototype=new n;var w=r.jump(t.PLUS),T=new e.parser.State,x=new e.parser.State,R=new e.parser.State,k=new e.parser.State,N=new e.parser.State(D),I=new e.parser.State,O=new e.parser.State(D),A=[t.DOT,t.UNDERSCORE,t.PLUS,t.NUM,t.DOMAIN,t.TLD,t.LOCALHOST];w.on(A,T),T.on(A,T),T.on(t.DOMAIN,T),T.on(t.COLON,x),x.on(t.DOMAIN,R),x.on(t.LOCALHOST,N),x.on(t.TLD,N),R.on(t.DOT,k),k.on(t.DOMAIN,R),k.on(t.TLD,N),N.on(t.DOT,k),N.on(t.COLON,I),I.on(t.NUM,O)}o.onUserClick=function(e,t){e.preventDefault()},o.onAliasClick=function(e,t){e.preventDefault()},o.onGroupClick=function(e,t){e.preventDefault()};o.VECTOR_URL_PATTERN="^(?:https?://)?(?:"+function(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(window.location.host+window.location.pathname)+"|(?:www\\.)?(?:riot|vector)\\.im/(?:app|beta|staging|develop)/)(#.*)",o.MATRIXTO_URL_PATTERN="^(?:https?://)?(?:www\\.)?matrix\\.to/#/(([#@!+]).*)",o.MATRIXTO_MD_LINK_PATTERN="\\[([^\\]]*)\\]\\((?:https?://)?(?:www\\.)?matrix\\.to/#/([#@!+][^\\)]*)\\)",o.MATRIXTO_BASE_URL=r.baseUrl;var i={"@":"#/user/","#":"#/room/","!":"#/room/","+":"#/group/"};o.options={events:function(e,t){switch(t){case"userid":return{click:function(t){o.onUserClick(t,e)}};case"roomalias":return{click:function(t){o.onAliasClick(t,e)}};case"groupid":return{click:function(t){o.onGroupClick(t,e)}}}},formatHref:function(e,t){switch(t){case"roomalias":case"userid":case"groupid":return o.MATRIXTO_BASE_URL+"/#/"+e;default:var n=e.match(o.VECTOR_URL_PATTERN);if(n)return n[1];if(n=e.match(o.MATRIXTO_URL_PATTERN)){var r=n[1];if(i[r[0]])return i[r[0]]+r}return e}},linkAttributes:{rel:"noopener"},target:function(e,t){return"url"===t?e.match(o.VECTOR_URL_PATTERN)||e.match(o.MATRIXTO_URL_PATTERN)?null:"_blank":null}},e.exports=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=u(n(14)),o=u(n(20)),i=u(n(4)),a=u(n(5)),s=u(n(8)),l=u(n(428));function u(e){return e&&e.__esModule?e:{default:e}}var c=function(){function e(t){(0,i.default)(this,e),this.matrixClient=t,this.roomToUser=null,this._hasSentOutPatchDirectAccountDataPatch=!1,this._onAccountData=this._onAccountData.bind(this);var n=t.getAccountData("m.direct");this.mDirectEvent=n?n.getContent():{},this.userToRooms=null}return(0,a.default)(e,[{key:"start",value:function(){this._populateRoomToUser(),this.matrixClient.on("accountData",this._onAccountData)}},{key:"stop",value:function(){this.matrixClient.removeListener("accountData",this._onAccountData)}},{key:"_onAccountData",value:function(e){"m.direct"==e.getType()&&(this.mDirectEvent=this.matrixClient.getAccountData("m.direct").getContent()||{},this.userToRooms=null,this.roomToUser=null)}},{key:"_patchUpSelfDMs",value:function(e){var t=this,n=this.matrixClient.getUserId(),r=e[n];if(r){var o=r.map(function(e){var r=t.matrixClient.getRoom(e);if(r){var o=r.guessDMUserId();if(o&&o!==n)return{userId:o,roomId:e}}}).filter(function(e){return!!e});return!!o.length&&(e[n]=r.filter(function(e){return!o.some(function(t){return t.roomId===e})}),o.forEach(function(t){var n=t.userId,r=t.roomId,o=e[n];o?(o.push(r),e[n]=(0,l.default)(o)):e[n]=[r]}),!0)}}},{key:"getDMRoomsForUserId",value:function(e){return this._getUserToRooms()[e]||[]}},{key:"getUserIdForRoomId",value:function(e){if(null==this.roomToUser&&this._populateRoomToUser(),void 0===this.roomToUser[e]){var t=this.matrixClient.getRoom(e);if(t)return t.getDMInviter()}return this.roomToUser[e]}},{key:"_getUserToRooms",value:function(){if(!this.userToRooms){var e=this.mDirectEvent,t=e[this.matrixClient.getUserId()];if(t&&t.length){var n=this._patchUpSelfDMs(e);console.warn("Invalid m.direct account data detected (self-chats that shouldn't be), patching it up."),n&&!this._hasSentOutPatchDirectAccountDataPatch&&(this._hasSentOutPatchDirectAccountDataPatch=!0,this.matrixClient.setAccountData("m.direct",e))}this.userToRooms=e}return this.userToRooms}},{key:"_populateRoomToUser",value:function(){this.roomToUser={};var e=!0,t=!1,n=void 0;try{for(var i,a=(0,o.default)((0,r.default)(this._getUserToRooms()));!(e=(i=a.next()).done);e=!0){var s=i.value,l=!0,u=!1,c=void 0;try{for(var f,d=(0,o.default)(this.userToRooms[s]);!(l=(f=d.next()).done);l=!0){var p=f.value;this.roomToUser[p]=s}}catch(e){u=!0,c=e}finally{try{!l&&d.return&&d.return()}finally{if(u)throw c}}}}catch(e){t=!0,n=e}finally{try{!e&&a.return&&a.return()}finally{if(t)throw n}}}}],[{key:"makeShared",value:function(){return e._sharedInstance=new e(s.default.get()),e._sharedInstance}},{key:"shared",value:function(){return e._sharedInstance}}]),e}();t.default=c,e.exports=t.default},function(e,t,n){"use strict";(function(r){function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.log=function(){var e;return"object"===("undefined"==typeof console?"undefined":o(console))&&console.log&&(e=console).log.apply(e,arguments)},t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;var n="color: "+this.color;t.splice(1,0,n,"color: inherit");var r=0,o=0;t[0].replace(/%[a-zA-Z%]/g,function(e){"%%"!==e&&"%c"===e&&(o=++r)}),t.splice(o,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){var e;try{e=t.storage.getItem("debug")}catch(e){}!e&&void 0!==r&&"env"in r&&(e=Object({NODE_ENV:"production"}).DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],e.exports=n(1776)(t),e.exports.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}).call(this,n(54))},,function(e,t,n){var r=n(151)("meta"),o=n(33),i=n(72),a=n(49).f,s=0,l=Object.isExtensible||function(){return!0},u=!n(30)(function(){return l(Object.preventExtensions({}))}),c=function(e){a(e,r,{value:{i:"O"+ ++s,w:{}}})},f=e.exports={KEY:r,NEED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,r)){if(!l(e))return"F";if(!t)return"E";c(e)}return e[r].i},getWeak:function(e,t){if(!i(e,r)){if(!l(e))return!0;if(!t)return!1;c(e)}return e[r].w},onFreeze:function(e){return u&&f.NEED&&l(e)&&!i(e,r)&&c(e),e}}},function(e,t,n){var r=n(42)("unscopables"),o=Array.prototype;void 0==o[r]&&n(73)(o,r,{}),e.exports=function(e){o[r][e]=!0}},function(e,t){e.exports=!0},function(e,t,n){var r=n(35),o=n(34).document,i=r(o)&&r(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},function(e,t,n){var r=n(96)("meta"),o=n(35),i=n(61),a=n(46).f,s=0,l=Object.isExtensible||function(){return!0},u=!n(58)(function(){return l(Object.preventExtensions({}))}),c=function(e){a(e,r,{value:{i:"O"+ ++s,w:{}}})},f=e.exports={KEY:r,NEED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,r)){if(!l(e))return"F";if(!t)return"E";c(e)}return e[r].i},getWeak:function(e,t){if(!i(e,r)){if(!l(e))return!0;if(!t)return!1;c(e)}return e[r].w},onFreeze:function(e){return u&&f.NEED&&l(e)&&!i(e,r)&&c(e),e}}},function(e,t,n){e.exports={default:n(1080),__esModule:!0}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(n(4)),o=a(n(5)),i=a(n(9));function a(e){return e&&e.__esModule?e:{default:e}}var s=function(){function e(){(0,r.default)(this,e)}return(0,o.default)(e,[{key:"getValue",value:function(e,t){return console.error("Invalid operation: getValue was not overridden"),null}},{key:"setValue",value:function(e,t,n){return console.error("Invalid operation: setValue was not overridden"),i.default.reject()}},{key:"canSetValue",value:function(e,t){return!1}},{key:"isSupported",value:function(){return!1}}]),e}();t.default=s,e.exports=t.default},function(e,t,n){"use strict";(function(t){var r=h(n(20)),o=h(n(8)),i=h(n(71)),a=h(n(409)),s=h(n(90)),l=h(n(290)),u=h(n(10)),c=h(n(3)),f=n(2),d=h(n(16)),p=n(22),m=h(p);function h(e){return e&&e.__esModule?e:{default:e}}var _={notifsByRoom:{},pendingEncryptedEventIds:[],notificationMessageForEvent:function(e){return a.default.textForEvent(e)},_displayPopupNotification:function(e,n){var r=i.default.get();if(r&&r.supportsNotifications()&&r.maySendNotifications()&&!t.document.hasFocus()){var o=this.notificationMessageForEvent(e);if(o){var a=void 0;e.sender&&n.name!==e.sender.name?"m.room.member"===e.getType()?a=n.name:e.sender&&(a=e.sender.name+" ("+n.name+")",e.getContent().body&&(o=e.getContent().body)):(a=n.name,e.getContent().body&&(o=e.getContent().body)),this.isBodyEnabled()||(o="");var s=e.sender?l.default.avatarUrlForMember(e.sender,40,40,"crop"):null,u=r.displayNotification(a,o,s,n);u&&(void 0===this.notifsByRoom[e.getRoomId()]&&(this.notifsByRoom[e.getRoomId()]=[]),this.notifsByRoom[e.getRoomId()].push(u))}}},_playAudioNotification:function(e,t){var n=document.getElementById("messageAudio");n&&n.play()},start:function(){this.boundOnEvent=this.onEvent.bind(this),this.boundOnSyncStateChange=this.onSyncStateChange.bind(this),this.boundOnRoomReceipt=this.onRoomReceipt.bind(this),this.boundOnEventDecrypted=this.onEventDecrypted.bind(this),o.default.get().on("event",this.boundOnEvent),o.default.get().on("Room.receipt",this.boundOnRoomReceipt),o.default.get().on("Event.decrypted",this.boundOnEventDecrypted),o.default.get().on("sync",this.boundOnSyncStateChange),this.toolbarHidden=!1,this.isSyncing=!1},stop:function(){o.default.get()&&this.boundOnRoomTimeline&&(o.default.get().removeListener("Event",this.boundOnEvent),o.default.get().removeListener("Room.receipt",this.boundOnRoomReceipt),o.default.get().removeListener("Event.decrypted",this.boundOnEventDecrypted),o.default.get().removeListener("sync",this.boundOnSyncStateChange)),this.isSyncing=!1},supportsDesktopNotifications:function(){var e=i.default.get();return e&&e.supportsNotifications()},setEnabled:function(e,t){var n=i.default.get();n&&(s.default.trackEvent("Notifier","Set Enabled",e),m.default.isLevelSupported(p.SettingLevel.DEVICE)&&m.default.setValue("audioNotificationsEnabled",null,p.SettingLevel.DEVICE,this.isEnabled()),e?n.requestNotificationPermission().done(function(e){if("granted"===e)t&&t(),u.default.dispatch({action:"notifier_enabled",value:!0});else{var n="denied"===e?(0,f._t)("Riot does not have permission to send you notifications - please check your browser settings"):(0,f._t)("Riot was not given permission to send notifications - please try again"),r=c.default.getComponent("dialogs.ErrorDialog");d.default.createTrackedDialog("Unable to enable Notifications",e,r,{title:(0,f._t)("Unable to enable Notifications"),description:n})}}):u.default.dispatch({action:"notifier_enabled",value:!1}),this.setToolbarHidden(!0))},isEnabled:function(){return this.isPossible()&&m.default.getValue("notificationsEnabled")},isPossible:function(){var e=i.default.get();return!!e&&(!!e.supportsNotifications()&&!!e.maySendNotifications())},isBodyEnabled:function(){return this.isEnabled()&&m.default.getValue("notificationBodyEnabled")},isAudioEnabled:function(){return this.isEnabled()&&m.default.getValue("audioNotificationsEnabled")},setToolbarHidden:function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.toolbarHidden=e,s.default.trackEvent("Notifier","Set Toolbar Hidden",e),u.default.dispatch({action:"notifier_enabled",value:this.isEnabled()}),n&&t.localStorage&&t.localStorage.setItem("notifications_hidden",e)},isToolbarHidden:function(){return t.localStorage?"true"===t.localStorage.getItem("notifications_hidden"):this.toolbarHidden},onSyncStateChange:function(e){"SYNCING"===e?this.isSyncing=!0:"STOPPED"!==e&&"ERROR"!==e||(this.isSyncing=!1)},onEvent:function(e){if(this.isSyncing&&(!e.sender||e.sender.userId!==o.default.get().credentials.userId))if(e.isBeingDecrypted()||e.isDecryptionFailure())for(this.pendingEncryptedEventIds.push(e.getId());this.pendingEncryptedEventIds.length>20;)this.pendingEncryptedEventIds.shift();else this._evaluateEvent(e)},onEventDecrypted:function(e){if(!e.isDecryptionFailure()){var t=this.pendingEncryptedEventIds.indexOf(e.getId());-1!==t&&(this.pendingEncryptedEventIds.splice(t,1),this._evaluateEvent(e))}},onRoomReceipt:function(e,t){if(0===t.getUnreadNotificationCount()){var n=i.default.get();if(!n)return;if(void 0===this.notifsByRoom[t.roomId])return;var o=!0,a=!1,s=void 0;try{for(var l,u=(0,r.default)(this.notifsByRoom[t.roomId]);!(o=(l=u.next()).done);o=!0){var c=l.value;n.clearNotification(c)}}catch(e){a=!0,s=e}finally{try{!o&&u.return&&u.return()}finally{if(a)throw s}}delete this.notifsByRoom[t.roomId]}},_evaluateEvent:function(e){var t=o.default.get().getRoom(e.getRoomId()),n=o.default.get().getPushActionsForEvent(e);n&&n.notify&&(this.isEnabled()&&this._displayPopupNotification(e,t),n.tweaks.sound&&this.isAudioEnabled()&&(i.default.get().loudNotification(e,t),this._playAudioNotification(e,t)))}};t.mxNotifier||(t.mxNotifier=_),e.exports=t.mxNotifier}).call(this,n(15))},function(e,t,n){"use strict";e.exports=function(e,t,n,r,o,i,a,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,o,i,a,s],c=0;l=new Error("Invariant Violation: "+t.replace(/%s/g,function(){return u[c++]}))}throw l.framesToPop=1,l}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=_(n(14)),o=_(n(149)),i=_(n(576)),a=_(n(126)),s=_(n(65)),l=_(n(4)),u=_(n(5)),c=_(n(8)),f=_(n(39)),d=_(n(10)),p=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(89)),m=_(n(292)),h=_(n(22));function _(e){return e&&e.__esModule?e:{default:e}}var g=function(){function e(){(0,l.default)(this,e)}return(0,u.default)(e,null,[{key:"canUserModifyWidgets",value:function(e){if(!e)return console.warn("No room ID specified"),!1;var t=c.default.get();if(!t)return console.warn("User must be be logged in"),!1;var n=t.getRoom(e);if(!n)return console.warn("Room ID "+e+" is not recognised"),!1;var r=t.credentials.userId;return r?"join"!==n.getMyMembership()?(console.warn("User "+r+" is not in room "+e),!1):n.currentState.maySendStateEvent("im.vector.modular.widgets",r):(console.warn("Failed to get user ID"),!1)}},{key:"isScalarUrl",value:function(e){if(!e)return console.error("Scalar URL check failed. No URL specified"),!1;var t=p.parse(e),n=f.default.get().integrations_widgets_urls;n&&0!==n.length||(n=[f.default.get().integrations_rest_url]);for(var r=0;r<n.length;r++){var o=p.parse(n[r]);if(t&&o&&t.protocol===o.protocol&&t.host===o.host&&t.pathname.startsWith(o.pathname))return!0}return!1}},{key:"waitForUserWidget",value:function(e,t){return new s.default(function(n,r){function o(n){return!(!n||!n.getContent())&&(t?void 0!==n.getContent()[e]:void 0===n.getContent()[e])}if(o(c.default.get().getAccountData("m.widgets")))n();else{var i=setTimeout(function(){c.default.get().removeListener("accountData",a),r(new Error("Timed out waiting for widget ID "+e+" to appear"))},2e4);c.default.get().on("accountData",a)}function a(e){o(c.default.get().getAccountData("m.widgets"))&&(c.default.get().removeListener("accountData",a),clearTimeout(i),n())}})}},{key:"waitForRoomWidget",value:function(e,t,n){return new s.default(function(r,o){function i(t){var r=t.some(function(t){return t.getContent()&&t.getContent().id===e});return n?r:!r}var a=c.default.get().getRoom(t);if(i(a.currentState.getStateEvents("im.vector.modular.widgets")))r();else{var s=setTimeout(function(){c.default.get().removeListener("RoomState.events",l),o(new Error("Timed out waiting for widget ID "+e+" to appear"))},2e4);c.default.get().on("RoomState.events",l)}function l(e){e.getRoomId()===t&&(i(a.currentState.getStateEvents("im.vector.modular.widgets"))&&(c.default.get().removeListener("RoomState.events",l),clearTimeout(s),r()))}})}},{key:"setUserWidget",value:function(t,n,r,o,i){var a={type:n,url:r,name:o,data:i},s=c.default.get(),l=e.getUserWidgets();try{delete l[t]}catch(e){console.error("$widgetId is non-configurable")}var u=Boolean(r);return u&&(l[t]={content:a,sender:s.getUserId(),state_key:t,type:"m.widget",id:t}),s.setAccountData("m.widgets",l).then(function(){return e.waitForUserWidget(t,u)}).then(function(){d.default.dispatch({action:"user_widget_updated"})})}},{key:"setRoomWidget",value:function(t,n,r,o,i,a){var s=void 0,l=Boolean(o);return s=l?{type:r,url:o,name:i,data:a}:{},m.default.setRoomWidgetEcho(t,n,s),c.default.get().sendStateEvent(t,"im.vector.modular.widgets",s,n).then(function(){return e.waitForRoomWidget(n,t,l)}).finally(function(){m.default.removeRoomWidgetEcho(t,n)})}},{key:"getRoomWidgets",value:function(e){var t=e.currentState.getStateEvents("im.vector.modular.widgets");return t?t.filter(function(e){return e.getContent().type&&e.getContent().url}):[]}},{key:"getUserWidgets",value:function(){var e=c.default.get();if(!e)throw new Error("User not logged in");var t=e.getAccountData("m.widgets");return t&&t.getContent()?t.getContent():{}}},{key:"getUserWidgetsArray",value:function(){return(0,a.default)(e.getUserWidgets())}},{key:"getStickerpickerWidgets",value:function(){return e.getUserWidgetsArray().filter(function(e){return e.content&&"m.stickerpicker"===e.content.type})}},{key:"removeStickerpickerWidgets",value:function(){var e=c.default.get();if(!e)throw new Error("User not logged in");var t=e.getAccountData("m.widgets").getContent()||{};return(0,i.default)(t).forEach(function(e){var n=(0,o.default)(e,2),r=n[0],i=n[1];i.content&&"m.stickerpicker"===i.content.type&&delete t[r]}),e.setAccountData("m.widgets",t)}},{key:"makeAppConfig",value:function(e,t,n,o){var i=c.default.get().credentials.userId,a=c.default.get().getUser(i),s={$matrix_user_id:i,$matrix_room_id:o,$matrix_display_name:a?a.displayName:i,$matrix_avatar_url:a?c.default.get().mxcUrlToHttp(a.avatarUrl):"",$theme:h.default.getValue("theme")};return t.id=e,t.name=t.name||t.type,t.data&&((0,r.default)(t.data).forEach(function(e){s["$"+e]=t.data[e]}),t.waitForIframeLoad="false"!==t.data.waitForIframeLoad),t.url=function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e=e.replace(n,encodeURIComponent(t[n])));return e}(t.url,s),t.creatorUserId=n&&n.userId?n.userId:null,t}},{key:"getCapWhitelistForAppTypeInRoomId",value:function(e,t){var n=h.default.getValue("enableWidgetScreenshots",t)?["m.capability.screenshot"]:[];return"jitsi"==e&&n.push("m.always_on_screen"),n}}]),e}();t.default=g,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.formatDate=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=new Date,a=o(),s=i();if(e.toDateString()===n.toDateString())return c(e,t);if(n.getTime()-e.getTime()<5184e5)return(0,r._t)("%(weekDayName)s %(time)s",{weekDayName:a[e.getDay()],time:c(e,t)});if(n.getFullYear()===e.getFullYear())return(0,r._t)("%(weekDayName)s, %(monthName)s %(day)s %(time)s",{weekDayName:a[e.getDay()],monthName:s[e.getMonth()],day:e.getDate(),time:c(e,t)});return l(e,t)},t.formatFullDateNoTime=function(e){var t=o(),n=i();return(0,r._t)("%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s",{weekDayName:t[e.getDay()],monthName:n[e.getMonth()],day:e.getDate(),fullYear:e.getFullYear()})},t.formatFullDate=l,t.formatFullTime=u,t.formatTime=c,t.wantsDateSeparator=function(e,t){if(!t||!e)return!1;if(Math.abs(e.getTime()-t.getTime())>f)return!0;return e.getDay()!==t.getDay()};var r=n(2);function o(){return[(0,r._t)("Sun"),(0,r._t)("Mon"),(0,r._t)("Tue"),(0,r._t)("Wed"),(0,r._t)("Thu"),(0,r._t)("Fri"),(0,r._t)("Sat")]}function i(){return[(0,r._t)("Jan"),(0,r._t)("Feb"),(0,r._t)("Mar"),(0,r._t)("Apr"),(0,r._t)("May"),(0,r._t)("Jun"),(0,r._t)("Jul"),(0,r._t)("Aug"),(0,r._t)("Sep"),(0,r._t)("Oct"),(0,r._t)("Nov"),(0,r._t)("Dec")]}function a(e){return(e<10?"0":"")+e}function s(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e.getHours()%12,o=a(e.getMinutes()),i=e.getHours()>=12?(0,r._t)("PM"):(0,r._t)("AM");return n=n||12,t?n+":"+o+":"+a(e.getSeconds())+i:n+":"+o+i}function l(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=o(),a=i();return(0,r._t)("%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s",{weekDayName:n[e.getDay()],monthName:a[e.getMonth()],day:e.getDate(),fullYear:e.getFullYear(),time:u(e,t)})}function u(e){return arguments.length>1&&void 0!==arguments[1]&&arguments[1]?s(e,!0):a(e.getHours())+":"+a(e.getMinutes())+":"+a(e.getSeconds())}function c(e){return arguments.length>1&&void 0!==arguments[1]&&arguments[1]?s(e):a(e.getHours())+":"+a(e.getMinutes())}var f=864e5},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){"use strict";(function(r){Object.defineProperty(t,"__esModule",{value:!0});var o=p(n(19)),i=p(n(14)),a=n(9),s=p(a),l=p(n(11)),u=p(n(4)),c=p(n(5)),f=p(n(12)),d=p(n(13));function p(e){return e&&e.__esModule?e:{default:e}}var m=!0,h=function(e){function t(e){(0,u.default)(this,t);var n=(0,f.default)(this,(t.__proto__||(0,l.default)(t)).call(this));return n._matrixClient=e,n._userGroups={},n._groupProfiles={},n._groupProfilesPromise={},n._usersPending={},n._usersInFlight={},n._debounceTimeoutID=null,n}return(0,d.default)(t,e),(0,c.default)(t,[{key:"groupSupport",value:function(){return m}},{key:"invalidatePublicisedGroups",value:function(e){delete this._userGroups[e]}},{key:"getPublicisedGroupsCached",value:function(e,t){var n=this;return this._userGroups[t]?s.default.resolve(this._userGroups[t]):this._usersPending[t]?this._usersPending[t].prom:this._usersInFlight[t]?this._usersInFlight[t].prom:(this._usersPending[t]={},this._usersPending[t].prom=new s.default(function(e,r){n._usersPending[t].resolve=e,n._usersPending[t].reject=r}).then(function(e){return n._userGroups[t]=e,setTimeout(function(){delete n._userGroups[t]},18e5),n._userGroups[t]}).catch(function(e){if("M_UNRECOGNIZED"===e.errcode)return console.warn("Cannot display flair, server does not support groups"),void(m=!1);throw console.error("Could not get groups for user",t,e),e}).finally(function(){delete n._usersInFlight[t]}),this._debounceTimeoutID&&clearTimeout(this._debounceTimeoutID),this._debounceTimeoutID=setTimeout(function(){n._batchedGetPublicGroups(e)},200),this._usersPending[t].prom)}},{key:"_batchedGetPublicGroups",value:function(){var e=(0,a.coroutine)(o.default.mark(function e(t){var n,r,s=this;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this._usersInFlight=this._usersPending,this._usersPending={},n={users:[]},e.prev=3,e.next=6,(0,a.resolve)(t.getPublicisedGroups((0,i.default)(this._usersInFlight)));case 6:n=e.sent,e.next=13;break;case 9:return e.prev=9,e.t0=e.catch(3),(0,i.default)(this._usersInFlight).forEach(function(t){s._usersInFlight[t]&&s._usersInFlight[t].reject(e.t0)}),e.abrupt("return");case 13:r=n.users,(0,i.default)(this._usersInFlight).forEach(function(e){s._usersInFlight[e]&&s._usersInFlight[e].resolve(r[e]||[])});case 15:case"end":return e.stop()}},e,this,[[3,9]])}));return function(t){return e.apply(this,arguments)}}()},{key:"getGroupProfileCached",value:function(){var e=(0,a.coroutine)(o.default.mark(function e(t,n){var r,i=this;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._groupProfiles[n]){e.next=2;break}return e.abrupt("return",this._groupProfiles[n]);case 2:if(!this._groupProfilesPromise[n]){e.next=12;break}return e.prev=3,e.next=6,(0,a.resolve)(this._groupProfilesPromise[n]);case 6:e.next=11;break;case 8:return e.prev=8,e.t0=e.catch(3),e.abrupt("return",null);case 11:return e.abrupt("return",this._groupProfiles[n]);case 12:return console.log("FlairStore: Request group profile of "+n),this._groupProfilesPromise[n]=t.getGroupProfile(n),r=void 0,e.prev=15,e.next=18,(0,a.resolve)(this._groupProfilesPromise[n]);case 18:r=e.sent,e.next=26;break;case 21:return e.prev=21,e.t1=e.catch(15),console.log("FlairStore: Failed to get group profile for "+n,e.t1),delete this._groupProfilesPromise[n],e.abrupt("return",null);case 26:return this._groupProfiles[n]={groupId:n,avatarUrl:r.avatar_url,name:r.name,shortDescription:r.short_description},delete this._groupProfilesPromise[n],console.log("FlairStore: Emit updateGroupProfile for "+n),this.emit("updateGroupProfile"),setTimeout(function(){i.refreshGroupProfile(t,n)},18e5),e.abrupt("return",this._groupProfiles[n]);case 32:case"end":return e.stop()}},e,this,[[3,8],[15,21]])}));return function(t,n){return e.apply(this,arguments)}}()},{key:"refreshGroupProfile",value:function(e,t){return delete this._groupProfiles[t],this.getGroupProfileCached(e,t)}}]),t}(p(n(55)).default);void 0===r.singletonFlairStore&&(r.singletonFlairStore=new h),t.default=r.singletonFlairStore,e.exports=t.default}).call(this,n(15))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(20)),o=s(n(14));t.getDisplayAliasForRoom=function(e){return e.getCanonicalAlias()||e.getAliases()[0]},t.getOnlyOtherMember=l,t.isConfCallRoom=function(e,t,n){if(void 0!==u[e.roomId])return u[e.roomId];var r=function(e,t,n){if(!n)return!1;if("join"!=e.getMyMembership())return!1;var r=l(e,t);if(!r)return!1;if(n.isConferenceUser(r.userId))return!0;return!1}(e,t,n);return u[e.roomId]=r,r},t.looksLikeDirectMessageRoom=function(e,t){var n=e.getMyMembership(),r=e.getMember(t);if("join"==n||"ban"===n||r&&r.isKicked()){var i=(0,o.default)(e.tags),a=e.currentState.getJoinedMemberCount()+e.currentState.getInvitedMemberCount();if(2===a&&!i.length)return!0}return!1},t.guessAndSetDMRoom=function(e,t){var n=void 0;if(t){var o=function(e,t){var n=void 0,o=void 0,i=!0,a=!1,s=void 0;try{for(var l,u=(0,r.default)(e.getJoinedMembers());!(i=(l=u.next()).done);i=!0){var c=l.value;c.userId!=t&&((void 0===n||c.events.member&&c.events.member.getTs()<n)&&(o=c,n=c.events.member.getTs()))}}catch(e){a=!0,s=e}finally{try{!i&&u.return&&u.return()}finally{if(a)throw s}}if(o)return o;var f=!0,d=!1,p=void 0;try{for(var m,h=(0,r.default)(e.currentState.getMembers());!(f=(m=h.next()).done);f=!0){var _=m.value;_.userId!=t&&((void 0===n||_.events.member&&_.events.member.getTs()<n)&&(o=_,n=_.events.member.getTs()))}}catch(e){d=!0,p=e}finally{try{!f&&h.return&&h.return()}finally{if(d)throw p}}return void 0===o?t:o}(e,i.default.get().getUserId());n=o}else n=null;return c(e.roomId,n)},t.setDMRoom=c;var i=s(n(8)),a=s(n(9));function s(e){return e&&e.__esModule?e:{default:e}}function l(e,t){return 2===e.currentState.getJoinedMemberCount()?e.getJoinedMembers().filter(function(e){return e.userId!==t})[0]:null}var u={};function c(e,t){if(i.default.get().isGuest())return a.default.resolve();var n=i.default.get().getAccountData("m.direct"),s={};void 0!==n&&(s=n.getContent());var l=!0,u=!1,c=void 0;try{for(var f,d=(0,r.default)((0,o.default)(s));!(l=(f=d.next()).done);l=!0){var p=f.value,m=s[p];if(p!=t){var h=m.indexOf(e);h>-1&&m.splice(h,1)}}}catch(e){u=!0,c=e}finally{try{!l&&d.return&&d.return()}finally{if(u)throw c}}if(t){var _=s[t]||[];-1==_.indexOf(e)&&_.push(e),s[t]=_}return i.default.get().setAccountData("m.direct",s)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(n(198));t.default=function(){var e=window.pageYOffset,t=window.pageXOffset,n=t+window.innerWidth,o=e+window.innerHeight;return(0,r.default)({top:e,left:t,right:n,bottom:o})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return"private-react-beautiful-dnd-key-do-not-use-"+e};t.storeKey=r("store"),t.droppableIdKey=r("droppable-id"),t.dimensionMarshalKey=r("dimension-marshal"),t.styleContextKey=r("style-context"),t.canLiftContextKey=r("can-lift")},function(e,t,n){"use strict";t.__esModule=!0;var r=i(n(393)),o=i(n(20));function i(e){return e&&e.__esModule?e:{default:e}}t.default=function(){return function(e,t){if(Array.isArray(e))return e;if((0,r.default)(Object(e)))return function(e,t){var n=[],r=!0,i=!1,a=void 0;try{for(var s,l=(0,o.default)(e);!(r=(s=l.next()).done)&&(n.push(s.value),!t||n.length!==t);r=!0);}catch(e){i=!0,a=e}finally{try{!r&&l.return&&l.return()}finally{if(i)throw a}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t){e.exports=!1},function(e,t,n){var r=n(496),o=n(329);e.exports=Object.keys||function(e){return r(e,o)}},function(e,t,n){var r=n(108),o=Math.max,i=Math.min;e.exports=function(e,t){return(e=r(e))<0?o(e+t,0):i(e,t)}},function(e,t,n){var r=n(25),o=n(497),i=n(329),a=n(328)("IE_PROTO"),s=function(){},l=function(){var e,t=n(326)("iframe"),r=i.length;for(t.style.display="none",n(330).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),l=e.F;r--;)delete l.prototype[i[r]];return l()};e.exports=Object.create||function(e,t){var n;return null!==e?(s.prototype=r(e),n=new s,s.prototype=null,n[a]=e):n=l(),void 0===t?n:o(n,t)}},function(e,t,n){var r=n(496),o=n(329).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,o)}},function(e,t,n){"use strict";var r=n(28),o=n(49),i=n(48),a=n(42)("species");e.exports=function(e){var t=r[e];i&&t&&!t[a]&&o.f(t,a,{configurable:!0,get:function(){return this}})}},function(e,t){e.exports=function(e,t,n,r){if(!(e instanceof t)||void 0!==r&&r in e)throw TypeError(n+": incorrect invocation!");return e}},function(e,t,n){var r=n(91),o=n(508),i=n(342),a=n(25),s=n(50),l=n(344),u={},c={};(t=e.exports=function(e,t,n,f,d){var p,m,h,_,g=d?function(){return e}:l(e),v=r(n,f,t?2:1),y=0;if("function"!=typeof g)throw TypeError(e+" is not iterable!");if(i(g)){for(p=s(e.length);p>y;y++)if((_=t?v(a(m=e[y])[0],m[1]):v(e[y]))===u||_===c)return _}else for(h=g.call(e);!(m=h.next()).done;)if((_=o(h,v,m.value,t))===u||_===c)return _}).BREAK=u,t.RETURN=c},function(e,t,n){var r=n(74);e.exports=function(e,t,n){for(var o in t)r(e,o,t[o],n);return e}},function(e,t,n){e.exports=!n(44)&&!n(58)(function(){return 7!=Object.defineProperty(n(136)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){var r=n(61),o=n(59),i=n(213)(!1),a=n(119)("IE_PROTO");e.exports=function(e,t){var n,s=o(e),l=0,u=[];for(n in s)n!=a&&r(s,n)&&u.push(n);for(;t.length>l;)r(s,n=t[l++])&&(~i(u,n)||u.push(n));return u}},function(e,t,n){var r=n(95);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,t,n){var r=n(95),o=n(38)("toStringTag"),i="Arguments"==r(function(){return arguments}());e.exports=function(e){var t,n,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:i?r(t):"Object"==(a=r(t))&&"function"==typeof t.callee?"Arguments":a}},function(e,t,n){"use strict";var r=n(45),o=n(528),i=n(947),a=n(952),s=n(188),l=n(953),u=n(956),c=n(957),f=n(959),d=s.createElement,p=s.createFactory,m=s.cloneElement,h=r,_={Children:{map:i.map,forEach:i.forEach,count:i.count,toArray:i.toArray,only:f},Component:o.Component,PureComponent:o.PureComponent,createElement:d,cloneElement:m,isValidElement:s.isValidElement,PropTypes:l,createClass:c,createFactory:p,createMixin:function(e){return e},DOM:a,version:u,__spread:h};e.exports=_},function(e,t,n){t.f=n(38)},function(e,t,n){var r=n(34),o=n(18),i=n(135),a=n(166),s=n(46).f;e.exports=function(e){var t=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==e.charAt(0)||e in t||s(t,e,{value:a.f(e)})}},function(e,t,n){"use strict";var r=n(32),o=(n(23),function(e){if(this.instancePool.length){var t=this.instancePool.pop();return this.call(t,e),t}return new this(e)}),i=function(e){e instanceof this||r("25"),e.destructor(),this.instancePool.length<this.poolSize&&this.instancePool.push(e)},a=o,s={addPoolingTo:function(e,t){var n=e;return n.instancePool=[],n.getPooled=t||a,n.poolSize||(n.poolSize=10),n.release=i,n},oneArgumentPooler:o,twoArgumentPooler:function(e,t){if(this.instancePool.length){var n=this.instancePool.pop();return this.call(n,e,t),n}return new this(e,t)},threeArgumentPooler:function(e,t,n){if(this.instancePool.length){var r=this.instancePool.pop();return this.call(r,e,t,n),r}return new this(e,t,n)},fourArgumentPooler:function(e,t,n,r){if(this.instancePool.length){var o=this.instancePool.pop();return this.call(o,e,t,n,r),o}return new this(e,t,n,r)}};e.exports=s},function(e,t,n){"use strict";var r=n(995);n(88),n(36);function o(){r.attachRefs(this,this._currentElement)}var i={mountComponent:function(e,t,n,r,i,a){var s=e.mountComponent(t,n,r,i,a);return e._currentElement&&null!=e._currentElement.ref&&t.getReactMountReady().enqueue(o,e),s},getHostNode:function(e){return e.getHostNode()},unmountComponent:function(e,t){r.detachRefs(e,e._currentElement),e.unmountComponent(t)},receiveComponent:function(e,t,n,i){var a=e._currentElement;if(t!==a||i!==e._context){0;var s=r.shouldUpdateRefs(a,t);s&&r.detachRefs(e,a),e.receiveComponent(t,n,i),s&&e._currentElement&&null!=e._currentElement.ref&&n.getReactMountReady().enqueue(o,e)}},performUpdateIfNecessary:function(e,t,n){e._updateBatchNumber===n&&e.performUpdateIfNecessary(t)}};e.exports=i},function(e,t,n){"use strict";var r=l(n(19)),o=n(9),i=l(o),a=n(55),s=l(n(29));function l(e){return e&&e.__esModule?e:{default:e}}e.exports.EventStatus={NOT_SENT:"not_sent",ENCRYPTING:"encrypting",SENDING:"sending",QUEUED:"queued",SENT:"sent",CANCELLED:"cancelled"};var u={};e.exports.MatrixEvent=function(e){["state_key","type","sender","room_id","membership"].forEach(function(t){e[t]&&(u[e[t]]||(u[e[t]]=e[t]),e[t]=u[e[t]])}),["membership","avatar_url","displayname"].forEach(function(t){e.content&&e.content[t]&&(u[e.content[t]]||(u[e.content[t]]=e.content[t]),e.content[t]=u[e.content[t]])}),this.event=e||{},this.sender=null,this.target=null,this.status=null,this.error=null,this.forwardLooking=!0,this._pushActions=null,this._clearEvent={},this._senderCurve25519Key=null,this._claimedEd25519Key=null,this._forwardingCurve25519KeyChain=[],this._decryptionPromise=null,this._retryDecryption=!1},s.default.inherits(e.exports.MatrixEvent,a.EventEmitter),s.default.extend(e.exports.MatrixEvent.prototype,{getId:function(){return this.event.event_id},getSender:function(){return this.event.sender||this.event.user_id},getType:function(){return this._clearEvent.type||this.event.type},getWireType:function(){return this.event.type},getRoomId:function(){return this.event.room_id},getTs:function(){return this.event.origin_server_ts},getDate:function(){return this.event.origin_server_ts?new Date(this.event.origin_server_ts):null},getContent:function(){return this._clearEvent.content||this.event.content||{}},getWireContent:function(){return this.event.content||{}},getPrevContent:function(){return this.getUnsigned().prev_content||this.event.prev_content||{}},getDirectionalContent:function(){return this.forwardLooking?this.getContent():this.getPrevContent()},getAge:function(){return this.getUnsigned().age||this.event.age},getStateKey:function(){return this.event.state_key},isState:function(){return void 0!==this.event.state_key},makeEncrypted:function(e,t,n,r){this._clearEvent={type:this.event.type,content:this.event.content},this.event.type=e,this.event.content=t,this._senderCurve25519Key=n,this._claimedEd25519Key=r},isBeingDecrypted:function(){return null!=this._decryptionPromise},isDecryptionFailure:function(){return this._clearEvent&&this._clearEvent.content&&"m.bad.encrypted"===this._clearEvent.content.msgtype},attemptDecryption:function(){var e=(0,o.method)(function(e){if(!this.isEncrypted())throw new Error("Attempt to decrypt event which isn't encrypted");if(this._clearEvent&&this._clearEvent.content&&"m.bad.encrypted"!==this._clearEvent.content.msgtype)throw new Error("Attempt to decrypt event which has already been encrypted");return this._decryptionPromise?(console.log("Event "+this.getId()+" already being decrypted; queueing a retry"),this._retryDecryption=!0,this._decryptionPromise):(this._decryptionPromise=this._decryptionLoop(e),this._decryptionPromise)});return function(t){return e.apply(this,arguments)}}(),cancelAndResendKeyRequest:function(e){var t=this.getWireContent();e.cancelRoomKeyRequest({algorithm:t.algorithm,room_id:this.getRoomId(),session_id:t.session_id,sender_key:t.sender_key},!0)},_decryptionLoop:function(){var e=(0,o.coroutine)(r.default.mark(function e(t){var n,a;return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,o.resolve)(i.default.resolve());case 2:if(this._retryDecryption=!1,n=void 0,a=void 0,e.prev=6,t){e.next=11;break}n=this._badEncryptedMessage("Encryption not enabled"),e.next=14;break;case 11:return e.next=13,(0,o.resolve)(t.decryptEvent(this));case 13:n=e.sent;case 14:e.next=29;break;case 16:if(e.prev=16,e.t0=e.catch(6),"DecryptionError"===e.t0.name){e.next=23;break}return console.error("Error decrypting event (id="+this.getId()+"): "+(e.t0.stack||e.t0)),this._decryptionPromise=null,this._retryDecryption=!1,e.abrupt("return");case 23:if(a=e.t0,!this._retryDecryption){e.next=27;break}return console.log("Got error decrypting event (id="+this.getId()+": "+e.t0+"), but retrying"),e.abrupt("continue",2);case 27:console.warn("Error decrypting event (id="+this.getId()+"): "+e.t0.detailedString),n=this._badEncryptedMessage(e.t0.message);case 29:return this._decryptionPromise=null,this._retryDecryption=!1,this._setClearData(n),this.emit("Event.decrypted",this,a),e.abrupt("return");case 36:case"end":return e.stop()}},e,this,[[6,16]])}));return function(t){return e.apply(this,arguments)}}(),_badEncryptedMessage:function(e){return{clearEvent:{type:"m.room.message",content:{msgtype:"m.bad.encrypted",body:"** Unable to decrypt: "+e+" **"}}}},_setClearData:function(e){this._clearEvent=e.clearEvent,this._senderCurve25519Key=e.senderCurve25519Key||null,this._claimedEd25519Key=e.claimedEd25519Key||null,this._forwardingCurve25519KeyChain=e.forwardingCurve25519KeyChain||[]},isEncrypted:function(){return"m.room.encrypted"===this.event.type},getSenderKey:function(){return this._senderCurve25519Key},getKeysClaimed:function(){return{ed25519:this._claimedEd25519Key}},getClaimedEd25519Key:function(){return this._claimedEd25519Key},getForwardingCurve25519KeyChain:function(){return this._forwardingCurve25519KeyChain},getUnsigned:function(){return this.event.unsigned||{}},makeRedacted:function(e){if(!e.event)throw new Error("invalid redaction_event in makeRedacted");this.event.unsigned||(this.event.unsigned={}),this.event.unsigned.redacted_because=e.event;var t=void 0;for(t in this.event)this.event.hasOwnProperty(t)&&(c[t]||delete this.event[t]);var n=f[this.getType()]||{},r=this.getContent();for(t in r)r.hasOwnProperty(t)&&(n[t]||delete r[t])},isRedacted:function(){return Boolean(this.getUnsigned().redacted_because)},getPushActions:function(){return this._pushActions},setPushActions:function(e){this._pushActions=e},handleRemoteEcho:function(e){this.event=e,this.status=null}});var c=["event_id","type","room_id","user_id","sender","state_key","prev_state","content","unsigned","origin_server_ts"].reduce(function(e,t){return e[t]=1,e},{}),f={"m.room.member":{membership:1},"m.room.create":{creator:1},"m.room.join_rules":{join_rule:1},"m.room.power_levels":{ban:1,events:1,events_default:1,kick:1,redact:1,state_default:1,users:1,users_default:1},"m.room.aliases":{aliases:1}}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,n){"use strict";var r=i(n(534)),o=i(n(20));function i(e){return e&&e.__esModule?e:{default:e}}var a=n(585);function s(e){this._eventTimelineSet=e,this._roomId=e.room?e.room.roomId:null,this._events=[],this._baseIndex=0,this._startState=new a(this._roomId),this._startState.paginationToken=null,this._endState=new a(this._roomId),this._endState.paginationToken=null,this._prevTimeline=null,this._nextTimeline=null,this._paginationRequests={b:null,f:null},this._name=this._roomId+":"+(new Date).toISOString()}s.BACKWARDS="b",s.FORWARDS="f",s.prototype.initialiseState=function(e){if(this._events.length>0)throw new Error("Cannot initialise state after events are added");var t=!0,n=!1,i=void 0;try{for(var a,s=(0,o.default)(e);!(t=(a=s.next()).done);t=!0){var l=a.value;(0,r.default)(l)}}catch(e){n=!0,i=e}finally{try{!t&&s.return&&s.return()}finally{if(n)throw i}}this._startState.setStateEvents(e),this._endState.setStateEvents(e)},s.prototype.forkLive=function(e){var t=this.getState(e),n=new s(this._eventTimelineSet);return n._startState=t.clone(),n._endState=t,this._endState=t.clone(),n},s.prototype.fork=function(e){var t=this.getState(e),n=new s(this._eventTimelineSet);return n._startState=t.clone(),n._endState=t.clone(),n},s.prototype.getRoomId=function(){return this._roomId},s.prototype.getFilter=function(){return this._eventTimelineSet.getFilter()},s.prototype.getTimelineSet=function(){return this._eventTimelineSet},s.prototype.getBaseIndex=function(){return this._baseIndex},s.prototype.getEvents=function(){return this._events},s.prototype.getState=function(e){if(e==s.BACKWARDS)return this._startState;if(e==s.FORWARDS)return this._endState;throw new Error("Invalid direction '"+e+"'")},s.prototype.getPaginationToken=function(e){return this.getState(e).paginationToken},s.prototype.setPaginationToken=function(e,t){this.getState(t).paginationToken=e},s.prototype.getNeighbouringTimeline=function(e){if(e==s.BACKWARDS)return this._prevTimeline;if(e==s.FORWARDS)return this._nextTimeline;throw new Error("Invalid direction '"+e+"'")},s.prototype.setNeighbouringTimeline=function(e,t){if(this.getNeighbouringTimeline(t))throw new Error("timeline already has a neighbouring timeline - cannot reset neighbour");if(t==s.BACKWARDS)this._prevTimeline=e;else{if(t!=s.FORWARDS)throw new Error("Invalid direction '"+t+"'");this._nextTimeline=e}this.setPaginationToken(null,t)},s.prototype.addEvent=function(e,t){var n=t?this._startState:this._endState,r=this.getTimelineSet();r.room&&r.room.getUnfilteredTimelineSet()===r&&(s.setEventMetadata(e,n,t),e.isState()&&(n.setStateEvents([e]),e.sender&&("m.room.member"!==e.getType()||t)||s.setEventMetadata(e,n,t)));var o=void 0;o=t?0:this._events.length,this._events.splice(o,0,e),t&&this._baseIndex++},s.setEventMetadata=function(e,t,n){e.sender=t.getSentinelMember(e.getSender()),"m.room.member"===e.getType()&&(e.target=t.getSentinelMember(e.getStateKey())),e.isState()&&n&&(e.forwardLooking=!1)},s.prototype.removeEvent=function(e){for(var t=this._events.length-1;t>=0;t--){var n=this._events[t];if(n.getId()==e)return this._events.splice(t,1),t<this._baseIndex&&this._baseIndex--,n}return null},s.prototype.toString=function(){return this._name},e.exports=s},function(e,t,n){"use strict";var r=s(n(4)),o=s(n(5)),i=s(n(9)),a=s(n(22));function s(e){return e&&e.__esModule?e:{default:e}}var l=n(99),u=n(39),c=n(8),f=function(){function e(){(0,r.default)(this,e),this.scalarToken=null}return(0,o.default)(e,[{key:"connect",value:function(){var e=this;return this.getScalarToken().then(function(t){e.scalarToken=t})}},{key:"hasCredentials",value:function(){return null!=this.scalarToken}},{key:"getScalarToken",value:function(){var e=this,t=window.localStorage.getItem("mx_scalar_token");return t?this.validateToken(t).then(function(e){var n=c.get().getUserId();if(e!==n)throw new Error("Scalar token is owned by someone else: "+n);return t}).catch(function(t){return console.error(t),console.warn("Registering for new scalar token"),e.registerForToken()}):this.registerForToken()}},{key:"validateToken",value:function(e){var t=u.get().integrations_rest_url+"/account";return new i.default(function(n,r){l({method:"GET",uri:t,qs:{scalar_token:e},json:!0},function(e,t,o){e?r(e):t.statusCode/100!=2?r({statusCode:t.statusCode}):o&&o.user_id?n(o.user_id):r(new Error("Missing user_id in response"))})})}},{key:"registerForToken",value:function(){var e=this;return c.get().getOpenIdToken().then(function(t){return e.exchangeForScalarToken(t)}).then(function(e){return window.localStorage.setItem("mx_scalar_token",e),e})}},{key:"exchangeForScalarToken",value:function(e){var t=u.get().integrations_rest_url;return new i.default(function(n,r){l({method:"POST",uri:t+"/register",body:e,json:!0},function(e,t,o){e?r(e):t.statusCode/100!=2?r({statusCode:t.statusCode}):o&&o.scalar_token?n(o.scalar_token):r(new Error("Missing scalar_token in response"))})})}},{key:"getScalarPageTitle",value:function(e){var t=u.get().integrations_rest_url+"/widgets/title_lookup";return t=this.getStarterLink(t),t+="&curl="+encodeURIComponent(e),new i.default(function(e,n){l({method:"GET",uri:t,json:!0},function(t,r,o){if(t)n(t);else if(r.statusCode/100!=2)n({statusCode:r.statusCode});else if(o){var i="";o.page_title_cache_item&&o.page_title_cache_item.cached_title&&(i=o.page_title_cache_item.cached_title),e(i)}else n(new Error("Missing page title in response"))})})}},{key:"disableWidgetAssets",value:function(e,t){var n=u.get().integrations_rest_url+"/widgets/set_assets_state";return n=this.getStarterLink(n),new i.default(function(r,o){l({method:"GET",uri:n,json:!0,qs:{widget_type:e,widget_id:t,state:"disable"}},function(e,t,n){e?o(e):t.statusCode/100!=2?o({statusCode:t.statusCode}):n?r():o(new Error("Failed to set widget assets state"))})})}},{key:"getScalarInterfaceUrlForRoom",value:function(e,t,n){var r=e.roomId,o=e.name,i=u.get().integrations_ui_url;return i+="?scalar_token="+encodeURIComponent(this.scalarToken),i+="&room_id="+encodeURIComponent(r),i+="&room_name="+encodeURIComponent(o),i+="&theme="+encodeURIComponent(a.default.getValue("theme")),n&&(i+="&integ_id="+encodeURIComponent(n)),t&&(i+="&screen="+encodeURIComponent(t)),i}},{key:"getStarterLink",value:function(e){return e+"?scalar_token="+encodeURIComponent(this.scalarToken)}}]),e}();e.exports=f},function(e,t,n){"use strict";(function(r){Object.defineProperty(t,"__esModule",{value:!0});var o=a(n(4)),i=a(n(5));function a(e){return e&&e.__esModule?e:{default:e}}function s(e){if(!e)return[0,0,0];if("#"===e[0]){3===(e=e.slice(1)).length&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]);var t=parseInt(e,16);return[t>>16&255,t>>8&255,255&t]}var n=e.match(/rgb\((.*?),(.*?),(.*?)\)/);return n?[parseInt(n[1]),parseInt(n[2]),parseInt(n[3])]:[0,0,0]}function l(e){return"#"+(16777216+(e[0]<<16|e[1]<<8|e[2])).toString(16).slice(1)}var u=function(){function e(){(0,o.default)(this,e),this.keyRgb=["rgb(118, 207, 166)","rgb(234, 245, 240)","rgb(211, 239, 225)"],this.keyHex=["#76CFA6","#EAF5F0","#D3EFE1","#FFFFFF","#000000"],this.colors=[this.keyHex[0],this.keyHex[1],this.keyHex[2],this.keyHex[3],this.keyHex[4]],this.currentTint=[void 0,void 0,void 0,void 0,void 0],this.cssFixups=[],this.cssAttrs=["color","backgroundColor","borderColor","borderTopColor","borderBottomColor","borderLeftColor"],this.svgAttrs=["fill","stroke"],this.tintables=[],this.theme=void 0,this.forceTint=!1}return(0,i.default)(e,[{key:"registerTintable",value:function(e){this.tintables.push(e)}},{key:"getKeyRgb",value:function(){return this.keyRgb}},{key:"tint",value:function(e,t,n){if(this.currentTint[0]=e,this.currentTint[1]=t,this.currentTint[2]=n,this.calcCssFixups(),e||(e=this.keyRgb[0],t=this.keyRgb[1],n=this.keyRgb[2]),!t){var r=.16,o=s(e);o[0]=r*o[0]+214.2,o[1]=r*o[1]+214.2,o[2]=r*o[2]+214.2,t=l(o)}if(!n){var i=s(e),a=s(t);i[0]=.19*i[0]+.81*a[0],i[1]=.19*i[1]+.81*a[1],i[2]=.19*i[2]+.81*a[2],n=l(i)}0==this.forceTint&&this.colors[0]===e&&this.colors[1]===t&&this.colors[2]===n||(this.forceTint=!1,this.colors[0]=e,this.colors[1]=t,this.colors[2]=n,this.applyCssFixups(),this.tintables.forEach(function(e){e()}))}},{key:"tintSvgWhite",value:function(e){this.currentTint[3]=e,e||(e=this.colors[3]),this.colors[3]!==e&&(this.colors[3]=e,this.tintables.forEach(function(e){e()}))}},{key:"tintSvgBlack",value:function(e){this.currentTint[4]=e,e||(e=this.colors[4]),this.colors[4]!==e&&(this.colors[4]=e,this.tintables.forEach(function(e){e()}))}},{key:"setTheme",value:function(e){this.theme=e,document.getElementById("mx_theme_accentColor")&&(this.keyRgb[0]=window.getComputedStyle(document.getElementById("mx_theme_accentColor")).color),document.getElementById("mx_theme_secondaryAccentColor")&&(this.keyRgb[1]=window.getComputedStyle(document.getElementById("mx_theme_secondaryAccentColor")).color),document.getElementById("mx_theme_tertiaryAccentColor")&&(this.keyRgb[2]=window.getComputedStyle(document.getElementById("mx_theme_tertiaryAccentColor")).color),this.calcCssFixups(),this.forceTint=!0,this.tint(this.currentTint[0],this.currentTint[1],this.currentTint[2]),"dark"===e?(this.tintSvgWhite("#2d2d2d"),this.tintSvgBlack("#dddddd")):(this.tintSvgWhite("#ffffff"),this.tintSvgBlack("#000000"))}},{key:"calcCssFixups",value:function(){if(!this.cssFixups[this.theme]){0,this.cssFixups[this.theme]=[];for(var e=0;e<document.styleSheets.length;e++){var t=document.styleSheets[e];try{if(!t)continue;if(!t.href||!t.href.match(new RegExp("/theme-"+this.theme+".css$")))continue;if(t.disabled)continue;if(!t.cssRules)continue;0;for(var n=0;n<t.cssRules.length;n++){var r=t.cssRules[n];if(r.style&&(!r.selectorText||!r.selectorText.match(/#mx_theme/)))for(var o=0;o<this.cssAttrs.length;o++)for(var i=this.cssAttrs[o],a=0;a<this.keyRgb.length;a++)r.style[i]===this.keyRgb[a]&&this.cssFixups[this.theme].push({style:r.style,attr:i,index:a})}}catch(e){console.log("Failed to calculate CSS fixups for a stylesheet: "+t.href,e)}}0}}},{key:"applyCssFixups",value:function(){for(var e=0;e<this.cssFixups[this.theme].length;e++){var t=this.cssFixups[this.theme][e];try{t.style[t.attr]=this.colors[t.index]}catch(e){console.error("Failed to apply cssFixup in Tinter! ",e.name)}}}},{key:"calcSvgFixups",value:function(e){for(var t=[],n=0;n<e.length;n++){var r=void 0;try{r=e[n].contentDocument}catch(t){var o="Failed to get svg.contentDocument of "+e[n].toString();t.message&&(o+=t.message),t.stack&&(o+=" | stack: "+t.stack),console.error(o)}if(r)for(var i=r.getElementsByTagName("*"),a=0;a<i.length;a++)for(var s=i[a],l=0;l<this.svgAttrs.length;l++)for(var u=this.svgAttrs[l],c=0;c<this.keyHex.length;c++)s.getAttribute(u)&&s.getAttribute(u).toUpperCase()===this.keyHex[c]&&t.push({node:s,attr:u,index:c})}return t}},{key:"applySvgFixups",value:function(e){for(var t=0;t<e.length;t++){var n=e[t];n.node.setAttribute(n.attr,this.colors[n.index])}}}]),e}();void 0===r.singletonTinter&&(r.singletonTinter=new u),t.default=r.singletonTinter,e.exports=t.default}).call(this,n(15))},function(e,t,n){"use strict";var r=n(294),o=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};e.exports=f;var i=n(237);i.inherits=n(100);var a=n(607),s=n(415);i.inherits(f,a);for(var l=o(s.prototype),u=0;u<l.length;u++){var c=l[u];f.prototype[c]||(f.prototype[c]=s.prototype[c])}function f(e){if(!(this instanceof f))return new f(e);a.call(this,e),s.call(this,e),e&&!1===e.readable&&(this.readable=!1),e&&!1===e.writable&&(this.writable=!1),this.allowHalfOpen=!0,e&&!1===e.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",d)}function d(){this.allowHalfOpen||this._writableState.ended||r(p,this)}function p(e){e.end()}Object.defineProperty(f.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}}),f.prototype._destroy=function(e,t){this.push(null),this.end(),r(t,e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=p(n(37)),o=p(n(625)),i=p(n(11)),a=p(n(4)),s=p(n(5)),l=p(n(12)),u=p(n(13));t.createMenu=function(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],o=function(){if(f.default.unmountComponentAtNode(h()),t&&t.onFinished){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];t.onFinished.apply(null,n)}},i=c.default.createElement(_,(0,r.default)({hasBackground:n},t,{elementClass:e,closeMenu:o,windowResize:o}));return f.default.render(i,h()),{close:o}};var c=p(n(0)),f=p(n(41)),d=(p(n(1)),p(n(24)));function p(e){return e&&e.__esModule?e:{default:e}}var m="mx_ContextualMenu_Container";function h(){var e=document.getElementById(m);return e||((e=document.createElement("div")).id=m,document.body.appendChild(e)),e}var _=function(e){function t(){(0,a.default)(this,t);var e=(0,l.default)(this,(t.__proto__||(0,i.default)(t)).call(this));return e.state={contextMenuRect:null},e.onContextMenu=e.onContextMenu.bind(e),e.collectContextMenuRect=e.collectContextMenuRect.bind(e),e}return(0,u.default)(t,e),(0,s.default)(t,[{key:"collectContextMenuRect",value:function(e){e&&this.setState({contextMenuRect:e.getBoundingClientRect()})}},{key:"onContextMenu",value:function(e){if(this.props.closeMenu){this.props.closeMenu(),e.preventDefault();var t=e.clientX,n=e.clientY;(0,o.default)(function(){var e=document.createEvent("MouseEvents");e.initMouseEvent("contextmenu",!0,!0,window,0,0,0,t,n,!1,!1,!1,!1,0,null),document.elementFromPoint(t,n).dispatchEvent(e)})}}},{key:"render",value:function(){var e={},t=null,n=this.props;n.top?e.top=n.top:e.bottom=n.bottom,n.left?(e.left=n.left,t="left"):(e.right=n.right,t="right");var o=this.state.contextMenuRect||null,i={};if(n.chevronFace&&(t=n.chevronFace),"top"===t||"bottom"===t)i.left=n.chevronOffset;else{var a=e.top,s=a;o&&(s=Math.min(e.top,document.body.clientHeight-o.height-10)),e.top=s,i.top=Math.max(n.chevronOffset,n.chevronOffset+a-s)}var l="";n.menuColour&&(l="\n .mx_ContextualMenu_chevron_left:after {\n border-right-color: "+n.menuColour+";\n }\n .mx_ContextualMenu_chevron_right:after {\n border-left-color: "+n.menuColour+";\n }\n .mx_ContextualMenu_chevron_top:after {\n border-left-color: "+n.menuColour+";\n }\n .mx_ContextualMenu_chevron_bottom:after {\n border-left-color: "+n.menuColour+";\n }\n ");var u=c.default.createElement("div",{style:i,className:"mx_ContextualMenu_chevron_"+t}),f=(0,d.default)({mx_ContextualMenu:!0,mx_ContextualMenu_left:"left"===t,mx_ContextualMenu_right:"right"===t,mx_ContextualMenu_top:"top"===t,mx_ContextualMenu_bottom:"bottom"===t}),p={};n.menuWidth&&(p.width=n.menuWidth),n.menuHeight&&(p.height=n.menuHeight),n.menuColour&&(p.backgroundColor=n.menuColour),isNaN(Number(n.menuPaddingTop))||(p.paddingTop=n.menuPaddingTop),isNaN(Number(n.menuPaddingLeft))||(p.paddingLeft=n.menuPaddingLeft),isNaN(Number(n.menuPaddingBottom))||(p.paddingBottom=n.menuPaddingBottom),isNaN(Number(n.menuPaddingRight))||(p.paddingRight=n.menuPaddingRight);var m=n.elementClass;return c.default.createElement("div",{className:"mx_ContextualMenu_wrapper",style:e},c.default.createElement("div",{className:f,style:p,ref:this.collectContextMenuRect},u,c.default.createElement(m,(0,r.default)({},n,{onFinished:n.closeMenu,onResize:n.windowResize}))),n.hasBackground&&c.default.createElement("div",{className:"mx_ContextualMenu_background",onClick:n.closeMenu,onContextMenu:this.onContextMenu}),c.default.createElement("style",null,l))}}]),t}(c.default.Component);t.default=_},function(e,t,n){var r=n(1423),o=n(1426);e.exports=function(e,t){var n=o(e,t);return r(n)?n:void 0}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9),o=a(n(4)),i=a(n(5));a(n(0));function a(e){return e&&e.__esModule?e:{default:e}}var s=function(){function e(t,n){if((0,o.default)(this,e),t){if(!t.global)throw new Error("commandRegex must have global flag set");this.commandRegex=t}if(n){if(!n.global)throw new Error("forcedCommandRegex must have global flag set");this.forcedCommandRegex=n}}return(0,i.default)(e,[{key:"destroy",value:function(){}},{key:"getCurrentCommand",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=this.commandRegex;if(n&&this.shouldForceComplete()&&(r=this.forcedCommandRegex||/\S+/g),null==r)return null;r.lastIndex=0;for(var o=void 0;null!=(o=r.exec(e));){var i=o.index,a=i+o[0].length;if(t.start<=a&&t.end>=i)return{command:o,range:{start:i,end:a}}}return{command:null,range:{start:-1,end:-1}}}},{key:"getCompletions",value:function(){var e=(0,r.method)(function(e,t){arguments.length>2&&void 0!==arguments[2]&&arguments[2];return[]});return function(t,n,r){return e.apply(this,arguments)}}()},{key:"getName",value:function(){return"Default Provider"}},{key:"renderCompletions",value:function(e){return console.error("stub; should be implemented in subclasses"),null}},{key:"shouldForceComplete",value:function(){return!1}}]),e}();t.default=s,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PillCompletion=t.TextualCompletion=void 0;var r=p(n(37)),o=p(n(128)),i=p(n(11)),a=p(n(4)),s=p(n(5)),l=p(n(12)),u=p(n(13)),c=p(n(0)),f=p(n(1)),d=p(n(24));function p(e){return e&&e.__esModule?e:{default:e}}(t.TextualCompletion=function(e){function t(){return(0,a.default)(this,t),(0,l.default)(this,(t.__proto__||(0,i.default)(t)).apply(this,arguments))}return(0,u.default)(t,e),(0,s.default)(t,[{key:"render",value:function(){var e=this.props,t=e.title,n=e.subtitle,i=e.description,a=e.className,s=(0,o.default)(e,["title","subtitle","description","className"]);return c.default.createElement("div",(0,r.default)({className:(0,d.default)("mx_Autocomplete_Completion_block",a)},s),c.default.createElement("span",{className:"mx_Autocomplete_Completion_title"},t),c.default.createElement("span",{className:"mx_Autocomplete_Completion_subtitle"},n),c.default.createElement("span",{className:"mx_Autocomplete_Completion_description"},i))}}]),t}(c.default.Component)).propTypes={title:f.default.string,subtitle:f.default.string,description:f.default.string,className:f.default.string},(t.PillCompletion=function(e){function t(){return(0,a.default)(this,t),(0,l.default)(this,(t.__proto__||(0,i.default)(t)).apply(this,arguments))}return(0,u.default)(t,e),(0,s.default)(t,[{key:"render",value:function(){var e=this.props,t=e.title,n=e.subtitle,i=e.description,a=e.initialComponent,s=e.className,l=(0,o.default)(e,["title","subtitle","description","initialComponent","className"]);return c.default.createElement("div",(0,r.default)({className:(0,d.default)("mx_Autocomplete_Completion_pill",s)},l),a,c.default.createElement("span",{className:"mx_Autocomplete_Completion_title"},t),c.default.createElement("span",{className:"mx_Autocomplete_Completion_subtitle"},n),c.default.createElement("span",{className:"mx_Autocomplete_Completion_description"},i))}}]),t}(c.default.Component)).propTypes={title:f.default.string,subtitle:f.default.string,description:f.default.string,initialComponent:f.default.element,className:f.default.string}},,function(e,t,n){var r=n(49).f,o=n(72),i=n(42)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},function(e,t,n){var r=n(7),o=n(107),i=n(30),a=n(332),s="["+a+"]",l=RegExp("^"+s+s+"*"),u=RegExp(s+s+"*$"),c=function(e,t,n){var o={},s=i(function(){return!!a[e]()||"​…"!="​…"[e]()}),l=o[e]=s?t(f):a[e];n&&(o[n]=l),r(r.P+r.F*s,"String",o)},f=c.trim=function(e,t){return e=String(o(e)),1&t&&(e=e.replace(l,"")),2&t&&(e=e.replace(u,"")),e};e.exports=c},function(e,t){e.exports={}},function(e,t,n){var r=n(33);e.exports=function(e,t){if(!r(e)||e._t!==t)throw TypeError("Incompatible receiver, "+t+" required!");return e}},function(e,t,n){"use strict";var r=n(135),o=n(26),i=n(212),a=n(60),s=n(61),l=n(77),u=n(354),c=n(122),f=n(215),d=n(38)("iterator"),p=!([].keys&&"next"in[].keys()),m=function(){return this};e.exports=function(e,t,n,h,_,g,v){u(n,t,h);var y,b,E,C=function(e){if(!p&&e in T)return T[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},S=t+" Iterator",D="values"==_,w=!1,T=e.prototype,x=T[d]||T["@@iterator"]||_&&T[_],R=x||C(_),k=_?D?C("entries"):R:void 0,N="Array"==t&&T.entries||x;if(N&&(E=f(N.call(new e)))!==Object.prototype&&E.next&&(c(E,S,!0),r||s(E,d)||a(E,d,m)),D&&x&&"values"!==x.name&&(w=!0,R=function(){return x.call(this)}),r&&!v||!p&&!w&&T[d]||a(T,d,R),l[t]=R,l[S]=m,_)if(y={values:D?R:C("values"),keys:g?R:C("keys"),entries:k},v)for(b in y)b in T||i(T,b,y[b]);else o(o.P+o.F*(p||w),t,y);return y}},function(e,t,n){var r=n(164),o=n(38)("iterator"),i=n(77);e.exports=n(18).getIteratorMethod=function(e){if(void 0!=e)return e[o]||e["@@iterator"]||i[r(e)]}},function(e,t,n){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},n(218),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(15))},function(e,t,n){"use strict";var r=n(45),o=n(123),i=(n(36),n(530),Object.prototype.hasOwnProperty),a=n(531),s={key:!0,ref:!0,__self:!0,__source:!0};function l(e){return void 0!==e.ref}function u(e){return void 0!==e.key}var c=function(e,t,n,r,o,i,s){return{$$typeof:a,type:e,key:t,ref:n,props:s,_owner:i}};c.createElement=function(e,t,n){var r,a={},f=null,d=null;if(null!=t)for(r in l(t)&&(d=t.ref),u(t)&&(f=""+t.key),void 0===t.__self?null:t.__self,void 0===t.__source?null:t.__source,t)i.call(t,r)&&!s.hasOwnProperty(r)&&(a[r]=t[r]);var p=arguments.length-2;if(1===p)a.children=n;else if(p>1){for(var m=Array(p),h=0;h<p;h++)m[h]=arguments[h+2];0,a.children=m}if(e&&e.defaultProps){var _=e.defaultProps;for(r in _)void 0===a[r]&&(a[r]=_[r])}return c(e,f,d,0,0,o.current,a)},c.createFactory=function(e){var t=c.createElement.bind(null,e);return t.type=e,t},c.cloneAndReplaceKey=function(e,t){return c(e.type,t,e.ref,e._self,e._source,e._owner,e.props)},c.cloneElement=function(e,t,n){var a,f,d=r({},e.props),p=e.key,m=e.ref,h=(e._self,e._source,e._owner);if(null!=t)for(a in l(t)&&(m=t.ref,h=o.current),u(t)&&(p=""+t.key),e.type&&e.type.defaultProps&&(f=e.type.defaultProps),t)i.call(t,a)&&!s.hasOwnProperty(a)&&(void 0===t[a]&&void 0!==f?d[a]=f[a]:d[a]=t[a]);var _=arguments.length-2;if(1===_)d.children=n;else if(_>1){for(var g=Array(_),v=0;v<_;v++)g[v]=arguments[v+2];d.children=g}return c(e.type,p,m,0,0,h,d)},c.isValidElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===a},e.exports=c},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t){},function(e,t,n){"use strict";var r=n(32);n(23);function o(e,t){return(e&t)===t}var i={MUST_USE_PROPERTY:1,HAS_BOOLEAN_VALUE:4,HAS_NUMERIC_VALUE:8,HAS_POSITIVE_NUMERIC_VALUE:24,HAS_OVERLOADED_BOOLEAN_VALUE:32,injectDOMPropertyConfig:function(e){var t=i,n=e.Properties||{},a=e.DOMAttributeNamespaces||{},l=e.DOMAttributeNames||{},u=e.DOMPropertyNames||{},c=e.DOMMutationMethods||{};for(var f in e.isCustomAttribute&&s._isCustomAttributeFunctions.push(e.isCustomAttribute),n){s.properties.hasOwnProperty(f)&&r("48",f);var d=f.toLowerCase(),p=n[f],m={attributeName:d,attributeNamespace:null,propertyName:f,mutationMethod:null,mustUseProperty:o(p,t.MUST_USE_PROPERTY),hasBooleanValue:o(p,t.HAS_BOOLEAN_VALUE),hasNumericValue:o(p,t.HAS_NUMERIC_VALUE),hasPositiveNumericValue:o(p,t.HAS_POSITIVE_NUMERIC_VALUE),hasOverloadedBooleanValue:o(p,t.HAS_OVERLOADED_BOOLEAN_VALUE)};if(m.hasBooleanValue+m.hasNumericValue+m.hasOverloadedBooleanValue<=1||r("50",f),l.hasOwnProperty(f)){var h=l[f];m.attributeName=h}a.hasOwnProperty(f)&&(m.attributeNamespace=a[f]),u.hasOwnProperty(f)&&(m.propertyName=u[f]),c.hasOwnProperty(f)&&(m.mutationMethod=c[f]),s.properties[f]=m}}},a=":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",s={ID_ATTRIBUTE_NAME:"data-reactid",ROOT_ATTRIBUTE_NAME:"data-reactroot",ATTRIBUTE_NAME_START_CHAR:a,ATTRIBUTE_NAME_CHAR:a+"\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040",properties:{},getPossibleStandardName:null,_isCustomAttributeFunctions:[],isCustomAttribute:function(e){for(var t=0;t<s._isCustomAttributeFunctions.length;t++){if((0,s._isCustomAttributeFunctions[t])(e))return!0}return!1},injection:i};e.exports=s},function(e,t,n){"use strict";var r=n(378),o=n(281),i=n(379),a=n(546),s="undefined"!=typeof document&&"number"==typeof document.documentMode||"undefined"!=typeof navigator&&"string"==typeof navigator.userAgent&&/\bEdge\/\d/.test(navigator.userAgent);function l(e){if(s){var t=e.node,n=e.children;if(n.length)for(var r=0;r<n.length;r++)u(t,n[r],null);else null!=e.html?o(t,e.html):null!=e.text&&a(t,e.text)}}var u=i(function(e,t,n){11===t.node.nodeType||1===t.node.nodeType&&"object"===t.node.nodeName.toLowerCase()&&(null==t.node.namespaceURI||t.node.namespaceURI===r.html)?(l(t),e.insertBefore(t.node,n)):(e.insertBefore(t.node,n),l(t))});function c(){return this.node.nodeName}function f(e){return{node:e,children:[],html:null,text:null,toString:c}}f.insertTreeBefore=u,f.replaceChildWithTree=function(e,t){e.parentNode.replaceChild(t.node,e),l(t)},f.queueChild=function(e,t){s?e.children.push(t):e.node.appendChild(t.node)},f.queueHTML=function(e,t){s?e.html=t:o(e.node,t)},f.queueText=function(e,t){s?e.text=t:a(e.node,t)},e.exports=f},function(e,t,n){"use strict";(function(e){ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org> - * @license MIT - */ -var r=n(1059),o=n(1060),i=n(568);function a(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(a()<t)throw new RangeError("Invalid typed array length");return l.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=l.prototype:(null===e&&(e=new l(t)),e.length=t),e}function l(e,t,n){if(!(l.TYPED_ARRAY_SUPPORT||this instanceof l))return new l(e,t,n);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return f(this,e)}return u(this,e,t,n)}function u(e,t,n,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,n,r){if(t.byteLength,n<0||t.byteLength<n)throw new RangeError("'offset' is out of bounds");if(t.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");t=void 0===n&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,n):new Uint8Array(t,n,r);l.TYPED_ARRAY_SUPPORT?(e=t).__proto__=l.prototype:e=d(e,t);return e}(e,t,n,r):"string"==typeof t?function(e,t,n){"string"==typeof n&&""!==n||(n="utf8");if(!l.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|m(t,n),o=(e=s(e,r)).write(t,n);o!==r&&(e=e.slice(0,o));return e}(e,t,n):function(e,t){if(l.isBuffer(t)){var n=0|p(t.length);return 0===(e=s(e,n)).length?e:(t.copy(e,0,0,n),e)}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||function(e){return e!=e}(t.length)?s(e,0):d(e,t);if("Buffer"===t.type&&i(t.data))return d(e,t.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function c(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function f(e,t){if(c(t),e=s(e,t<0?0:0|p(t)),!l.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function d(e,t){var n=t.length<0?0:0|p(t.length);e=s(e,n);for(var r=0;r<n;r+=1)e[r]=255&t[r];return e}function p(e){if(e>=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|e}function m(e,t){if(l.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return B(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return G(e).length;default:if(r)return B(e).length;t=(""+t).toLowerCase(),r=!0}}function h(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function _(e,t,n,r,o){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof t&&(t=l.from(t,r)),l.isBuffer(t))return 0===t.length?-1:g(e,t,n,r,o);if("number"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):g(e,[t],n,r,o);throw new TypeError("val must be string, number or Buffer")}function g(e,t,n,r,o){var i,a=1,s=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,s/=2,l/=2,n/=2}function u(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(o){var c=-1;for(i=n;i<s;i++)if(u(e,i)===u(t,-1===c?0:i-c)){if(-1===c&&(c=i),i-c+1===l)return c*a}else-1!==c&&(i-=i-c),c=-1}else for(n+l>s&&(n=s-l),i=n;i>=0;i--){for(var f=!0,d=0;d<l;d++)if(u(e,i+d)!==u(t,d)){f=!1;break}if(f)return i}return-1}function v(e,t,n,r){n=Number(n)||0;var o=e.length-n;r?(r=Number(r))>o&&(r=o):r=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var a=0;a<r;++a){var s=parseInt(t.substr(2*a,2),16);if(isNaN(s))return a;e[n+a]=s}return a}function y(e,t,n,r){return q(B(t,e.length-n),e,n,r)}function b(e,t,n,r){return q(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function E(e,t,n,r){return b(e,t,n,r)}function C(e,t,n,r){return q(G(t),e,n,r)}function S(e,t,n,r){return q(function(e,t){for(var n,r,o,i=[],a=0;a<e.length&&!((t-=2)<0);++a)n=e.charCodeAt(a),r=n>>8,o=n%256,i.push(o),i.push(r);return i}(t,e.length-n),e,n,r)}function D(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function w(e,t,n){n=Math.min(e.length,n);for(var r=[],o=t;o<n;){var i,a,s,l,u=e[o],c=null,f=u>239?4:u>223?3:u>191?2:1;if(o+f<=n)switch(f){case 1:u<128&&(c=u);break;case 2:128==(192&(i=e[o+1]))&&(l=(31&u)<<6|63&i)>127&&(c=l);break;case 3:i=e[o+1],a=e[o+2],128==(192&i)&&128==(192&a)&&(l=(15&u)<<12|(63&i)<<6|63&a)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:i=e[o+1],a=e[o+2],s=e[o+3],128==(192&i)&&128==(192&a)&&128==(192&s)&&(l=(15&u)<<18|(63&i)<<12|(63&a)<<6|63&s)>65535&&l<1114112&&(c=l)}null===c?(c=65533,f=1):c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|1023&c),r.push(c),o+=f}return function(e){var t=e.length;if(t<=T)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=T));return n}(r)}t.Buffer=l,t.SlowBuffer=function(e){+e!=e&&(e=0);return l.alloc(+e)},t.INSPECT_MAX_BYTES=50,l.TYPED_ARRAY_SUPPORT=void 0!==e.TYPED_ARRAY_SUPPORT?e.TYPED_ARRAY_SUPPORT:function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()&&"function"==typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(e){return!1}}(),t.kMaxLength=a(),l.poolSize=8192,l._augment=function(e){return e.__proto__=l.prototype,e},l.from=function(e,t,n){return u(null,e,t,n)},l.TYPED_ARRAY_SUPPORT&&(l.prototype.__proto__=Uint8Array.prototype,l.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&l[Symbol.species]===l&&Object.defineProperty(l,Symbol.species,{value:null,configurable:!0})),l.alloc=function(e,t,n){return function(e,t,n,r){return c(t),t<=0?s(e,t):void 0!==n?"string"==typeof r?s(e,t).fill(n,r):s(e,t).fill(n):s(e,t)}(null,e,t,n)},l.allocUnsafe=function(e){return f(null,e)},l.allocUnsafeSlow=function(e){return f(null,e)},l.isBuffer=function(e){return!(null==e||!e._isBuffer)},l.compare=function(e,t){if(!l.isBuffer(e)||!l.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,o=0,i=Math.min(n,r);o<i;++o)if(e[o]!==t[o]){n=e[o],r=t[o];break}return n<r?-1:r<n?1:0},l.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},l.concat=function(e,t){if(!i(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return l.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=l.allocUnsafe(t),o=0;for(n=0;n<e.length;++n){var a=e[n];if(!l.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(r,o),o+=a.length}return r},l.byteLength=m,l.prototype._isBuffer=!0,l.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)h(this,t,t+1);return this},l.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)h(this,t,t+3),h(this,t+1,t+2);return this},l.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)h(this,t,t+7),h(this,t+1,t+6),h(this,t+2,t+5),h(this,t+3,t+4);return this},l.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?w(this,0,e):function(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return k(this,t,n);case"utf8":case"utf-8":return w(this,t,n);case"ascii":return x(this,t,n);case"latin1":case"binary":return R(this,t,n);case"base64":return D(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}.apply(this,arguments)},l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e="",n=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),"<Buffer "+e+">"},l.prototype.compare=function(e,t,n,r,o){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||n>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=n)return 0;if(r>=o)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,r>>>=0,o>>>=0,this===e)return 0;for(var i=o-r,a=n-t,s=Math.min(i,a),u=this.slice(r,o),c=e.slice(t,n),f=0;f<s;++f)if(u[f]!==c[f]){i=u[f],a=c[f];break}return i<a?-1:a<i?1:0},l.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},l.prototype.indexOf=function(e,t,n){return _(this,e,t,n,!0)},l.prototype.lastIndexOf=function(e,t,n){return _(this,e,t,n,!1)},l.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var o=this.length-t;if((void 0===n||n>o)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return v(this,e,t,n);case"utf8":case"utf-8":return y(this,e,t,n);case"ascii":return b(this,e,t,n);case"latin1":case"binary":return E(this,e,t,n);case"base64":return C(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var T=4096;function x(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;o<n;++o)r+=String.fromCharCode(127&e[o]);return r}function R(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;o<n;++o)r+=String.fromCharCode(e[o]);return r}function k(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);for(var o="",i=t;i<n;++i)o+=j(e[i]);return o}function N(e,t,n){for(var r=e.slice(t,n),o="",i=0;i<r.length;i+=2)o+=String.fromCharCode(r[i]+256*r[i+1]);return o}function I(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function O(e,t,n,r,o,i){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||t<i)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function A(e,t,n,r){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-n,2);o<i;++o)e[n+o]=(t&255<<8*(r?o:1-o))>>>8*(r?o:1-o)}function M(e,t,n,r){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-n,4);o<i;++o)e[n+o]=t>>>8*(r?o:3-o)&255}function P(e,t,n,r,o,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function L(e,t,n,r,i){return i||P(e,0,n,4),o.write(e,t,n,r,23,4),n+4}function F(e,t,n,r,i){return i||P(e,0,n,8),o.write(e,t,n,r,52,8),n+8}l.prototype.slice=function(e,t){var n,r=this.length;if(e=~~e,t=void 0===t?r:~~t,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),t<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e),l.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=l.prototype;else{var o=t-e;n=new l(o,void 0);for(var i=0;i<o;++i)n[i]=this[i+e]}return n},l.prototype.readUIntLE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=this[e],o=1,i=0;++i<t&&(o*=256);)r+=this[e+i]*o;return r},l.prototype.readUIntBE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=this[e+--t],o=1;t>0&&(o*=256);)r+=this[e+--t]*o;return r},l.prototype.readUInt8=function(e,t){return t||I(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return t||I(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return t||I(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=this[e],o=1,i=0;++i<t&&(o*=256);)r+=this[e+i]*o;return r>=(o*=128)&&(r-=Math.pow(2,8*t)),r},l.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},l.prototype.readInt8=function(e,t){return t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){t||I(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(e,t){t||I(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(e,t){return t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return t||I(e,4,this.length),o.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return t||I(e,4,this.length),o.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return t||I(e,8,this.length),o.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return t||I(e,8,this.length),o.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||O(this,e,t,n,Math.pow(2,8*n)-1,0);var o=1,i=0;for(this[t]=255&e;++i<n&&(o*=256);)this[t+i]=e/o&255;return t+n},l.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||O(this,e,t,n,Math.pow(2,8*n)-1,0);var o=n-1,i=1;for(this[t+o]=255&e;--o>=0&&(i*=256);)this[t+o]=e/i&255;return t+n},l.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||O(this,e,t,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||O(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):A(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||O(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):A(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||O(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):M(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||O(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):M(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);O(this,e,t,n,o-1,-o)}var i=0,a=1,s=0;for(this[t]=255&e;++i<n&&(a*=256);)e<0&&0===s&&0!==this[t+i-1]&&(s=1),this[t+i]=(e/a>>0)-s&255;return t+n},l.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);O(this,e,t,n,o-1,-o)}var i=n-1,a=1,s=0;for(this[t+i]=255&e;--i>=0&&(a*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/a>>0)-s&255;return t+n},l.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||O(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||O(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):A(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||O(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):A(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||O(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):M(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||O(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):M(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,n){return L(this,e,t,!0,n)},l.prototype.writeFloatBE=function(e,t,n){return L(this,e,t,!1,n)},l.prototype.writeDoubleLE=function(e,t,n){return F(this,e,t,!0,n)},l.prototype.writeDoubleBE=function(e,t,n){return F(this,e,t,!1,n)},l.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var o,i=r-n;if(this===e&&n<t&&t<r)for(o=i-1;o>=0;--o)e[o+t]=this[o+n];else if(i<1e3||!l.TYPED_ARRAY_SUPPORT)for(o=0;o<i;++o)e[o+t]=this[o+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+i),t);return i},l.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===e.length){var o=e.charCodeAt(0);o<256&&(e=o)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!l.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;var i;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i<n;++i)this[i]=e;else{var a=l.isBuffer(e)?e:B(new l(e,r).toString()),s=a.length;for(i=0;i<n-t;++i)this[i+t]=a[i%s]}return this};var U=/[^+\/0-9A-Za-z-_]/g;function j(e){return e<16?"0"+e.toString(16):e.toString(16)}function B(e,t){var n;t=t||1/0;for(var r=e.length,o=null,i=[],a=0;a<r;++a){if((n=e.charCodeAt(a))>55295&&n<57344){if(!o){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function G(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(U,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function q(e,t,n,r){for(var o=0;o<r&&!(o+n>=t.length||o>=e.length);++o)t[o+n]=e[o];return o}}).call(this,n(15))},function(e,t,n){var r=n(101).Symbol;e.exports=r},function(e,t,n){var r=n(194),o=n(1231),i=n(1232),a="[object Null]",s="[object Undefined]",l=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?s:a:l&&l in Object(e)?o(e):i(e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UserAddressType=t.addressTypes=void 0,t.getAddressType=function(e){var t=o.test(e),n=i.test(e),r=a.test(e);return t?"email":n?"mx-user-id":r?"mx-room-id":null};var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1));var o=/^\S+@\S+\.\S+$/,i=/^@\S+:\S+$/,a=/^!\S+:\S+$/,s=t.addressTypes=["mx-user-id","mx-room-id","email"];t.UserAddressType=r.default.shape({addressType:r.default.oneOf(s).isRequired,address:r.default.string.isRequired,displayName:r.default.string,avatarMxc:r.default.string,isKnown:r.default.bool})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1454);Object.defineProperty(t,"DragDropContext",{enumerable:!0,get:function(){return a(r).default}});var o=n(1481);Object.defineProperty(t,"Droppable",{enumerable:!0,get:function(){return a(o).default}});var i=n(1490);function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"Draggable",{enumerable:!0,get:function(){return a(i).default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.top,n=e.right,r=e.bottom,o=e.left;return{top:t,right:n,bottom:r,left:o,width:n-o,height:r-t,center:{x:(n+o)/2,y:(r+t)/2}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(14)),o=i(n(82));function i(e){return e&&e.__esModule?e:{default:e}}t.default=(0,o.default)(function(e,t){return(0,r.default)(t).map(function(e){return t[e]}).filter(function(t){return e.descriptor.id===t.descriptor.droppableId}).sort(function(e,t){return e.descriptor.index-t.descriptor.index})})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(638)),o=i(n(433));function i(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=e.draggable,n=e.destination,i=e.previousImpact,a=e.viewport,s=t.descriptor.id,l=(0,r.default)(i.movement.displaced),u=(0,o.default)({target:t.page.withMargin,destination:n,viewport:a}),c=function(){if(!u)return!1;var e=l[s];return!e||e.shouldAnimate}();return{draggableId:s,isVisible:u,shouldAnimate:c}}},function(e,t,n){"use strict";e.exports=function(e,t){this.lastCall=0,this.scheduledCall=void 0;var n=this,r=function(){var r=this,o=Date.now();n.lastCall<o-t?(e.apply(this),n.lastCall=Date.now()):void 0===n.scheduledCall&&(n.scheduledCall=setTimeout(function(){n.scheduledCall=void 0,e.apply(r),n.lastCall=Date.now()},n.lastCall+t-o))};r.cancelPendingCall=function(){n.scheduledCall&&(clearTimeout(n.scheduledCall),n.scheduledCall=void 0)};var o=r.bind;return r.bind=function(){var e=o.apply(this,arguments);return e.cancelPendingCall=r.cancelPendingCall,e},r}},function(e,t,n){"use strict";var r=i(n(64)),o=i(n(14));function i(e){return e&&e.__esModule?e:{default:e}}e.exports.getKeyValueArrayDiffs=function(e,t){var n=[],r={};return(0,o.default)(e).forEach(function(e){r[e]=r[e]||0,r[e]--}),(0,o.default)(t).forEach(function(e){r[e]=r[e]||0,r[e]++}),(0,o.default)(r).forEach(function(i){switch(r[i]){case 1:t[i].forEach(function(e){n.push({place:"add",key:i,val:e})});break;case-1:e[i].forEach(function(e){n.push({place:"del",key:i,val:e})});break;case 0:var a={};e[i].forEach(function(e){a[e]=a[e]||0,a[e]--}),t[i].forEach(function(e){a[e]=a[e]||0,a[e]++}),(0,o.default)(a).forEach(function(e){1===a[e]?n.push({place:"add",key:i,val:e}):-1===a[e]&&n.push({place:"del",key:i,val:e})});break;default:console.error("Calculated key delta of "+r[i]+" - this should never happen!")}}),n},e.exports.shallowEqual=function(e,t){if(e===t)return!0;if("object"!==(void 0===e?"undefined":(0,r.default)(e))||null===e||"object"!==(void 0===t?"undefined":(0,r.default)(t))||null===t)return!1;var n=(0,o.default)(e),i=(0,o.default)(t);if(n.length!==i.length)return!1;for(var a=0;a<n.length;a++){var s=n[a];if(!t.hasOwnProperty(s)||e[s]!==t[s])return!1}return!0}},function(e,t,n){var r=n(102),o=n(470),i=n(1728),a=n(627);e.exports=function(e,t){return r(e)?e:o(e,t)?[e]:i(a(e))}},function(e,t,n){var r=n(242),o=1/0;e.exports=function(e){if("string"==typeof e||r(e))return e;var t=e+"";return"0"==t&&1/e==-o?"-0":t}},function(e,t,n){"use strict";var r=n(1827),o=n(1828),i=n(417).decodeHTML,a="&(?:#x[a-f0-9]{1,8}|#[0-9]{1,8}|[a-z][a-z0-9]{1,31});",s="<[A-Za-z][A-Za-z0-9-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*/?>",l="</[A-Za-z][A-Za-z0-9-]*\\s*[>]",u=new RegExp("^(?:<[A-Za-z][A-Za-z0-9-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*/?>|</[A-Za-z][A-Za-z0-9-]*\\s*[>]|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|[<][?].*?[?][>]|<![A-Z]+\\s+[^>]*>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>)","i"),c=/[\\&]/,f="[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^_`{|}~-]",d=new RegExp("\\\\"+f+"|"+a,"gi"),p=new RegExp('[&<>"]',"g"),m=new RegExp(a+'|[&<>"]',"gi"),h=function(e){return 92===e.charCodeAt(0)?e.charAt(1):i(e)},_=function(e){switch(e){case"&":return"&";case"<":return"<";case">":return">";case'"':return""";default:return e}};e.exports={unescapeString:function(e){return c.test(e)?e.replace(d,h):e},normalizeURI:function(e){try{return r(o(e))}catch(t){return e}},escapeXml:function(e,t){return p.test(e)?t?e.replace(m,_):e.replace(p,_):e},reHtmlTag:u,OPENTAG:s,CLOSETAG:l,ENTITY:a,ESCAPABLE:f}},function(e,t,n){var r=n(1807),o=n(471)(function(e,t){return null==e?{}:r(e,t)});e.exports=o},function(e,t,n){"use strict";(function(r){function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.log=function(){var e;return"object"===("undefined"==typeof console?"undefined":o(console))&&console.log&&(e=console).log.apply(e,arguments)},t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;var n="color: "+this.color;t.splice(1,0,n,"color: inherit");var r=0,o=0;t[0].replace(/%[a-zA-Z%]/g,function(e){"%%"!==e&&"%c"===e&&(o=++r)}),t.splice(o,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){var e;try{e=t.storage.getItem("debug")}catch(e){}!e&&void 0!==r&&"env"in r&&(e=Object({NODE_ENV:"production"}).DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],e.exports=n(1810)(t),e.exports.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}).call(this,n(54))},function(e,t,n){var r=n(92);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){var r=n(92),o=n(42)("toStringTag"),i="Arguments"==r(function(){return arguments}());e.exports=function(e){var t,n,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:i?r(t):"Object"==(a=r(t))&&"function"==typeof t.callee?"Arguments":a}},function(e,t,n){e.exports={default:n(352),__esModule:!0}},function(e,t,n){e.exports=n(60)},function(e,t,n){var r=n(59),o=n(118),i=n(214);e.exports=function(e){return function(t,n,a){var s,l=r(t),u=o(l.length),c=i(a,u);if(e&&n!=n){for(;u>c;)if((s=l[c++])!=s)return!0}else for(;u>c;c++)if((e||c in l)&&l[c]===n)return e||c||0;return!e&&-1}}},function(e,t,n){var r=n(111),o=Math.max,i=Math.min;e.exports=function(e,t){return(e=r(e))<0?o(e+t,0):i(e,t)}},function(e,t,n){var r=n(61),o=n(87),i=n(119)("IE_PROTO"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=o(e),r(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},function(e,t,n){var r=function(){return this}()||Function("return this")(),o=r.regeneratorRuntime&&Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime")>=0,i=o&&r.regeneratorRuntime;if(r.regeneratorRuntime=void 0,e.exports=n(217),o)r.regeneratorRuntime=i;else try{delete r.regeneratorRuntime}catch(e){r.regeneratorRuntime=void 0}},function(e,t){!function(t){"use strict";var n,r=Object.prototype,o=r.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag",u="object"==typeof e,c=t.regeneratorRuntime;if(c)u&&(e.exports=c);else{(c=t.regeneratorRuntime=u?e.exports:{}).wrap=b;var f="suspendedStart",d="suspendedYield",p="executing",m="completed",h={},_={};_[a]=function(){return this};var g=Object.getPrototypeOf,v=g&&g(g(I([])));v&&v!==r&&o.call(v,a)&&(_=v);var y=D.prototype=C.prototype=Object.create(_);S.prototype=y.constructor=D,D.constructor=S,D[l]=S.displayName="GeneratorFunction",c.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===S||"GeneratorFunction"===(t.displayName||t.name))},c.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,D):(e.__proto__=D,l in e||(e[l]="GeneratorFunction")),e.prototype=Object.create(y),e},c.awrap=function(e){return{__await:e}},w(T.prototype),T.prototype[s]=function(){return this},c.AsyncIterator=T,c.async=function(e,t,n,r){var o=new T(b(e,t,n,r));return c.isGeneratorFunction(t)?o:o.next().then(function(e){return e.done?e.value:o.next()})},w(y),y[l]="Generator",y[a]=function(){return this},y.toString=function(){return"[object Generator]"},c.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},c.values=I,N.prototype={constructor:N,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(k),!e)for(var t in this)"t"===t.charAt(0)&&o.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=n)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(r,o){return s.type="throw",s.arg=e,t.next=r,o&&(t.method="next",t.arg=n),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),u=o.call(a,"finallyLoc");if(l&&u){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(l){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var i=r;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=t,i?(this.method="next",this.next=i.finallyLoc,h):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),h},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),k(n),h}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;k(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:I(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=n),h}}}function b(e,t,n,r){var o=t&&t.prototype instanceof C?t:C,i=Object.create(o.prototype),a=new N(r||[]);return i._invoke=function(e,t,n){var r=f;return function(o,i){if(r===p)throw new Error("Generator is already running");if(r===m){if("throw"===o)throw i;return O()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var s=x(a,n);if(s){if(s===h)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===f)throw r=m,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=p;var l=E(e,t,n);if("normal"===l.type){if(r=n.done?m:d,l.arg===h)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r=m,n.method="throw",n.arg=l.arg)}}}(e,n,a),i}function E(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}function C(){}function S(){}function D(){}function w(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function T(e){var t;this._invoke=function(n,r){function i(){return new Promise(function(t,i){!function t(n,r,i,a){var s=E(e[n],e,r);if("throw"!==s.type){var l=s.arg,u=l.value;return u&&"object"==typeof u&&o.call(u,"__await")?Promise.resolve(u.__await).then(function(e){t("next",e,i,a)},function(e){t("throw",e,i,a)}):Promise.resolve(u).then(function(e){l.value=e,i(l)},a)}a(s.arg)}(n,r,t,i)})}return t=t?t.then(i,i):i()}}function x(e,t){var r=e.iterator[t.method];if(r===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=n,x(e,t),"throw"===t.method))return h;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return h}var o=E(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,h;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=n),t.delegate=null,h):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,h)}function R(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function k(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function N(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(R,this),this.reset(!0)}function I(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,i=function t(){for(;++r<e.length;)if(o.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=n,t.done=!0,t};return i.next=i}}return{next:O}}function O(){return{value:n,done:!0}}}(function(){return this}()||Function("return this")())},function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var r,o=1,i={},a=!1,s=e.document,l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick(function(){c(e)})}:function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?function(){var t="setImmediate$"+Math.random()+"$",n=function(n){n.source===e&&"string"==typeof n.data&&0===n.data.indexOf(t)&&c(+n.data.slice(t.length))};e.addEventListener?e.addEventListener("message",n,!1):e.attachEvent("onmessage",n),r=function(n){e.postMessage(t+n,"*")}}():e.MessageChannel?function(){var e=new MessageChannel;e.port1.onmessage=function(e){c(e.data)},r=function(t){e.port2.postMessage(t)}}():s&&"onreadystatechange"in s.createElement("script")?function(){var e=s.documentElement;r=function(t){var n=s.createElement("script");n.onreadystatechange=function(){c(t),n.onreadystatechange=null,e.removeChild(n),n=null},e.appendChild(n)}}():r=function(e){setTimeout(c,0,e)},l.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n<t.length;n++)t[n]=arguments[n+1];var a={callback:e,args:t};return i[o]=a,r(o),o++},l.clearImmediate=u}function u(e){delete i[e]}function c(e){if(a)setTimeout(c,0,e);else{var t=i[e];if(t){a=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r)}}(t)}finally{u(e),a=!1}}}}}("undefined"==typeof self?void 0===e?this:e:self)}).call(this,n(15),n(54))},function(e,t,n){n(220),e.exports=n(18).Object.keys},function(e,t,n){var r=n(87),o=n(78);n(68)("keys",function(){return function(e){return o(r(e))}})},function(e,t,n){"use strict";e.exports=function(e){for(var t=arguments.length-1,n="Minified React error #"+e+"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant="+e,r=0;r<t;r++)n+="&args[]="+encodeURIComponent(arguments[r+1]);n+=" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";var o=new Error(n);throw o.name="Invariant Violation",o.framesToPop=1,o}},function(e,t,n){"use strict";e.exports={}},function(e,t,n){e.exports={default:n(359),__esModule:!0}},function(e,t,n){var r=n(124),o=n(76),i=n(59),a=n(116),s=n(61),l=n(161),u=Object.getOwnPropertyDescriptor;t.f=n(44)?u:function(e,t){if(e=i(e),t=a(t,!0),l)try{return u(e,t)}catch(e){}if(s(e,t))return o(!r.f.call(e,t),e[t])}},function(e,t,n){var r=n(162),o=n(121).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,o)}},function(e,t,n){"use strict";var r=n(227),o=n(372),i=n(538),a=n(539),s=(n(36),r.getListener);function l(e,t,n){var r=function(e,t,n){var r=t.dispatchConfig.phasedRegistrationNames[n];return s(e,r)}(e,n,t);r&&(n._dispatchListeners=i(n._dispatchListeners,r),n._dispatchInstances=i(n._dispatchInstances,e))}function u(e){e&&e.dispatchConfig.phasedRegistrationNames&&o.traverseTwoPhase(e._targetInst,l,e)}function c(e){if(e&&e.dispatchConfig.phasedRegistrationNames){var t=e._targetInst,n=t?o.getParentInstance(t):null;o.traverseTwoPhase(n,l,e)}}function f(e,t,n){if(n&&n.dispatchConfig.registrationName){var r=n.dispatchConfig.registrationName,o=s(e,r);o&&(n._dispatchListeners=i(n._dispatchListeners,o),n._dispatchInstances=i(n._dispatchInstances,e))}}function d(e){e&&e.dispatchConfig.registrationName&&f(e._targetInst,0,e)}var p={accumulateTwoPhaseDispatches:function(e){a(e,u)},accumulateTwoPhaseDispatchesSkipTarget:function(e){a(e,c)},accumulateDirectDispatches:function(e){a(e,d)},accumulateEnterLeaveDispatches:function(e,t,n,r){o.traverseEnterLeave(n,r,f,e,t)}};e.exports=p},function(e,t,n){"use strict";var r=n(32),o=n(371),i=n(372),a=n(373),s=n(538),l=n(539),u=(n(23),{}),c=null,f=function(e,t){e&&(i.executeDispatchesInOrder(e,t),e.isPersistent()||e.constructor.release(e))},d=function(e){return f(e,!0)},p=function(e){return f(e,!1)},m=function(e){return"."+e._rootNodeID};var h={injection:{injectEventPluginOrder:o.injectEventPluginOrder,injectEventPluginsByName:o.injectEventPluginsByName},putListener:function(e,t,n){"function"!=typeof n&&r("94",t,typeof n);var i=m(e);(u[t]||(u[t]={}))[i]=n;var a=o.registrationNameModules[t];a&&a.didPutListener&&a.didPutListener(e,t,n)},getListener:function(e,t){var n=u[t];if(function(e,t,n){switch(e){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":return!(!n.disabled||!function(e){return"button"===e||"input"===e||"select"===e||"textarea"===e}(t));default:return!1}}(t,e._currentElement.type,e._currentElement.props))return null;var r=m(e);return n&&n[r]},deleteListener:function(e,t){var n=o.registrationNameModules[t];n&&n.willDeleteListener&&n.willDeleteListener(e,t);var r=u[t];r&&delete r[m(e)]},deleteAllListeners:function(e){var t=m(e);for(var n in u)if(u.hasOwnProperty(n)&&u[n][t]){var r=o.registrationNameModules[n];r&&r.willDeleteListener&&r.willDeleteListener(e,n),delete u[n][t]}},extractEvents:function(e,t,n,r){for(var i,a=o.plugins,l=0;l<a.length;l++){var u=a[l];if(u){var c=u.extractEvents(e,t,n,r);c&&(i=s(i,c))}}return i},enqueueEvents:function(e){e&&(c=s(c,e))},processEventQueue:function(e){var t=c;c=null,l(t,e?d:p),c&&r("95"),a.rethrowCaughtError()},__purge:function(){u={}},__getListenerBank:function(){return u}};e.exports=h},function(e,t,n){"use strict";var r=n(125),o=n(374),i={view:function(e){if(e.view)return e.view;var t=o(e);if(t.window===t)return t;var n=t.ownerDocument;return n?n.defaultView||n.parentWindow:window},detail:function(e){return e.detail||0}};function a(e,t,n,o){return r.call(this,e,t,n,o)}r.augmentClass(a,i),e.exports=a},function(e,t,n){"use strict";var r={remove:function(e){e._reactInternalInstance=void 0},get:function(e){return e._reactInternalInstance},has:function(e){return void 0!==e._reactInternalInstance},set:function(e,t){e._reactInternalInstance=t}};e.exports=r},function(e,t,n){var r=n(66),o=n(273),i=n(274),a=n(52),s=n(118),l=n(186),u={},c={};(t=e.exports=function(e,t,n,f,d){var p,m,h,_,g=d?function(){return e}:l(e),v=r(n,f,t?2:1),y=0;if("function"!=typeof g)throw TypeError(e+" is not iterable!");if(i(g)){for(p=s(e.length);p>y;y++)if((_=t?v(a(m=e[y])[0],m[1]):v(e[y]))===u||_===c)return _}else for(h=g.call(e);!(m=h.next()).done;)if((_=o(h,v,m.value,t))===u||_===c)return _}).BREAK=u,t.RETURN=c},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});var r=u(n(4)),o=u(n(5)),i=u(n(9)),a=u(n(1090)),s=u(n(400)),l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(1094));function u(e){return e&&e.__esModule?e:{default:e}}var c=function(){function t(e,n){(0,r.default)(this,t),this._indexedDB=e,this._dbName=n,this._backendPromise=null}return(0,o.default)(t,[{key:"_connect",value:function(){var n=this;return this._backendPromise?this._backendPromise:(this._backendPromise=new i.default(function(e,t){if(n._indexedDB){console.log("connecting to indexeddb "+n._dbName);var r=n._indexedDB.open(n._dbName,l.VERSION);r.onupgradeneeded=function(e){var t=e.target.result,n=e.oldVersion;l.upgradeDatabase(t,n)},r.onblocked=function(){console.log("can't yet open IndexedDBCryptoStore because it is open elsewhere")},r.onerror=function(e){t(e.target.error)},r.onsuccess=function(t){var r=t.target.result;console.log("connected to indexeddb "+n._dbName),e(new l.Backend(r))}}else t(new Error("no indexeddb support available"))}).then(function(e){return e.doTxn("readonly",[t.STORE_INBOUND_GROUP_SESSIONS],function(t){e.getEndToEndInboundGroupSession("","",t,function(){})}).then(function(){return e})}).catch(function(t){return console.warn("unable to connect to indexeddb "+n._dbName+": falling back to localStorage store: "+t),new a.default(e.localStorage)}).catch(function(e){return console.warn("unable to open localStorage: falling back to in-memory store: "+e),new s.default}),this._backendPromise)}},{key:"deleteAllData",value:function(){var e=this;return new i.default(function(t,n){if(e._indexedDB){console.log("Removing indexeddb instance: "+e._dbName);var r=e._indexedDB.deleteDatabase(e._dbName);r.onblocked=function(){console.log("can't yet delete IndexedDBCryptoStore because it is open elsewhere")},r.onerror=function(e){n(e.target.error)},r.onsuccess=function(){console.log("Removed indexeddb instance: "+e._dbName),t()}}else n(new Error("no indexeddb support available"))}).catch(function(e){console.warn("unable to delete IndexedDBCryptoStore: "+e)})}},{key:"getOrAddOutgoingRoomKeyRequest",value:function(e){return this._connect().then(function(t){return t.getOrAddOutgoingRoomKeyRequest(e)})}},{key:"getOutgoingRoomKeyRequest",value:function(e){return this._connect().then(function(t){return t.getOutgoingRoomKeyRequest(e)})}},{key:"getOutgoingRoomKeyRequestByState",value:function(e){return this._connect().then(function(t){return t.getOutgoingRoomKeyRequestByState(e)})}},{key:"updateOutgoingRoomKeyRequest",value:function(e,t,n){return this._connect().then(function(r){return r.updateOutgoingRoomKeyRequest(e,t,n)})}},{key:"deleteOutgoingRoomKeyRequest",value:function(e,t){return this._connect().then(function(n){return n.deleteOutgoingRoomKeyRequest(e,t)})}},{key:"getAccount",value:function(e,t){this._backendPromise.value().getAccount(e,t)}},{key:"storeAccount",value:function(e,t){this._backendPromise.value().storeAccount(e,t)}},{key:"countEndToEndSessions",value:function(e,t){this._backendPromise.value().countEndToEndSessions(e,t)}},{key:"getEndToEndSession",value:function(e,t,n,r){this._backendPromise.value().getEndToEndSession(e,t,n,r)}},{key:"getEndToEndSessions",value:function(e,t,n){this._backendPromise.value().getEndToEndSessions(e,t,n)}},{key:"storeEndToEndSession",value:function(e,t,n,r){this._backendPromise.value().storeEndToEndSession(e,t,n,r)}},{key:"getEndToEndInboundGroupSession",value:function(e,t,n,r){this._backendPromise.value().getEndToEndInboundGroupSession(e,t,n,r)}},{key:"getAllEndToEndInboundGroupSessions",value:function(e,t){this._backendPromise.value().getAllEndToEndInboundGroupSessions(e,t)}},{key:"addEndToEndInboundGroupSession",value:function(e,t,n,r){this._backendPromise.value().addEndToEndInboundGroupSession(e,t,n,r)}},{key:"storeEndToEndInboundGroupSession",value:function(e,t,n,r){this._backendPromise.value().storeEndToEndInboundGroupSession(e,t,n,r)}},{key:"storeEndToEndDeviceData",value:function(e,t){this._backendPromise.value().storeEndToEndDeviceData(e,t)}},{key:"getEndToEndDeviceData",value:function(e,t){this._backendPromise.value().getEndToEndDeviceData(e,t)}},{key:"storeEndToEndRoom",value:function(e,t,n){this._backendPromise.value().storeEndToEndRoom(e,t,n)}},{key:"getEndToEndRooms",value:function(e,t){this._backendPromise.value().getEndToEndRooms(e,t)}},{key:"doTxn",value:function(e,t,n){return this._connect().then(function(r){return r.doTxn(e,t,n)})}}]),t}();t.default=c,c.STORE_ACCOUNT="account",c.STORE_SESSIONS="sessions",c.STORE_INBOUND_GROUP_SESSIONS="inbound_group_sessions",c.STORE_DEVICE_DATA="device_data",c.STORE_ROOMS="rooms"}).call(this,n(15))},function(e,t,n){"use strict";(function(t){var r=a(n(19)),o=n(9),i=a(n(67));function a(e){return e&&e.__esModule?e:{default:e}}var s=n(29),l=n(55).EventEmitter;function u(e){this.roomId=e.roomId,this.client=e.client,this.webRtc=e.webRtc,this.forceTURN=e.forceTURN,this.URL=e.URL,this.turnServers=e.turnServers||[],0===this.turnServers.length&&this.turnServers.push({urls:[u.FALLBACK_STUN_SERVER]}),s.forEach(this.turnServers,function(e){s.checkObjectHasKeys(e,["urls"])}),this.callId="c"+(new Date).getTime()+Math.random(),this.state="fledgling",this.didConnect=!1,this.candidateSendQueue=[],this.candidateSendTries=0,this.mediaPromises=(0,i.default)(null),this.screenSharingStream=null,this._answerContent=null}u.CALL_TIMEOUT_MS=6e4,u.FALLBACK_STUN_SERVER="stun:stun.l.google.com:19302",u.ERR_LOCAL_OFFER_FAILED="local_offer_failed",u.ERR_NO_USER_MEDIA="no_user_media",u.ERR_UNKNOWN_DEVICES="unknown_devices",u.ERR_SEND_INVITE="send_invite",u.ERR_SEND_ANSWER="send_answer",s.inherits(u,l),u.prototype.placeVoiceCall=function(){E("placeVoiceCall"),y(this),S(this,T("voice")),this.type="voice"},u.prototype.placeVideoCall=function(e,t){E("placeVideoCall"),y(this),this.localVideoElement=t,this.remoteVideoElement=e,S(this,T("video")),this.type="video",g(this)},u.prototype.placeScreenSharingCall=function(e,t){E("placeScreenSharingCall"),y(this);var n=w(this);if(n){this.localVideoElement=t,this.remoteVideoElement=e;var r=this;this.webRtc.getUserMedia(n,function(e){r.screenSharingStream=e,E("Got screen stream, requesting audio stream...");var t=T("voice");S(r,t)},function(e){r.emit("error",b(u.ERR_NO_USER_MEDIA,"Failed to get screen-sharing stream: "+e))}),this.type="video",g(this)}},u.prototype.playElement=function(e,t){console.log("queuing play on "+t+" and element "+e),this.mediaPromises[t]?this.mediaPromises[t]=this.mediaPromises[t].then(function(){return console.log("previous promise completed for "+t),e.play()},function(){return console.log("previous promise failed for "+t),e.play()}):this.mediaPromises[t]=e.play()},u.prototype.pauseElement=function(e,t){console.log("queuing pause on "+t+" and element "+e),this.mediaPromises[t]?this.mediaPromises[t]=this.mediaPromises[t].then(function(){return console.log("previous promise completed for "+t),e.pause()},function(){return console.log("previous promise failed for "+t),e.pause()}):this.mediaPromises[t]=e.pause()},u.prototype.assignElement=function(e,t,n){console.log("queuing assign on "+n+" element "+e+" for "+t),this.mediaPromises[n]?this.mediaPromises[n]=this.mediaPromises[n].then(function(){console.log("previous promise completed for "+n),e.srcObject=t},function(){console.log("previous promise failed for "+n),e.srcObject=t}):e.srcObject=t},u.prototype.getLocalVideoElement=function(){return this.localVideoElement},u.prototype.getRemoteVideoElement=function(){return this.remoteVideoElement},u.prototype.getRemoteAudioElement=function(){return this.remoteAudioElement},u.prototype.setLocalVideoElement=function(e){if(this.localVideoElement=e,e&&this.localAVStream&&"video"===this.type){e.autoplay=!0,this.assignElement(e,this.localAVStream,"localVideo"),e.muted=!0;var t=this;setTimeout(function(){var e=t.getLocalVideoElement();e.play&&t.playElement(e,"localVideo")},0)}},u.prototype.setRemoteVideoElement=function(e){this.remoteVideoElement=e,g(this)},u.prototype.setRemoteAudioElement=function(e){this.remoteVideoElement.muted=!0,this.remoteAudioElement=e,this.remoteAudioElement.muted=!1,v(this)},u.prototype._initWithInvite=function(e){this.msg=e.getContent(),this.peerConn=D(this);var t=this;this.peerConn&&this.peerConn.setRemoteDescription(new this.webRtc.RtcSessionDescription(this.msg.offer),x(t,t._onSetRemoteDescriptionSuccess),x(t,t._onSetRemoteDescriptionError)),d(this,"ringing"),this.direction="inbound",this.msg.offer&&this.msg.offer.sdp&&this.msg.offer.sdp.indexOf("m=video")>-1?this.type="video":this.type="voice",e.getAge()&&setTimeout(function(){"ringing"==t.state&&(E("Call invite has expired. Hanging up."),t.hangupParty="remote",d(t,"ended"),_(t),"closed"!=t.peerConn.signalingState&&t.peerConn.close(),t.emit("hangup",t))},this.msg.lifetime-e.getAge())},u.prototype._initWithHangup=function(e){this.msg=e.getContent(),d(this,"ended")},u.prototype.answer=function(){E("Answering call %s of type %s",this.callId,this.type);this._answerContent?this._sendAnswer():this.localAVStream||this.waitForLocalAVStream?this.localAVStream?this._maybeGotUserMediaForAnswer(this.localAVStream):this.waitForLocalAVStream&&d(this,"wait_local_media"):(this.webRtc.getUserMedia(T(this.type),x(this,this._maybeGotUserMediaForAnswer),x(this,this._maybeGotUserMediaForAnswer)),d(this,"wait_local_media"))},u.prototype._replacedBy=function(e){E(this.callId+" being replaced by "+e.callId),"wait_local_media"==this.state?(E("Telling new call to wait for local media"),e.waitForLocalAVStream=!0):"create_offer"==this.state?(E("Handing local stream to new call"),e._maybeGotUserMediaForAnswer(this.localAVStream),delete this.localAVStream):"invite_sent"==this.state&&(E("Handing local stream to new call"),e._maybeGotUserMediaForAnswer(this.localAVStream),delete this.localAVStream),e.localVideoElement=this.localVideoElement,e.remoteVideoElement=this.remoteVideoElement,e.remoteAudioElement=this.remoteAudioElement,this.successor=e,this.emit("replaced",e),this.hangup(!0)},u.prototype.hangup=function(e,t){if("ended"!=this.state){E("Ending call "+this.callId),h(this,"local",e,!t);var n={version:0,call_id:this.callId,reason:e};p(this,"m.call.hangup",n)}},u.prototype.setLocalVideoMuted=function(e){this.localAVStream&&c(this.localAVStream.getVideoTracks(),!e)},u.prototype.isLocalVideoMuted=function(){return!!this.localAVStream&&!f(this.localAVStream.getVideoTracks())},u.prototype.setMicrophoneMuted=function(e){this.localAVStream&&c(this.localAVStream.getAudioTracks(),!e)},u.prototype.isMicrophoneMuted=function(){return!!this.localAVStream&&!f(this.localAVStream.getAudioTracks())},u.prototype._maybeGotUserMediaForInvite=function(e){if(this.successor)this.successor._maybeGotUserMediaForAnswer(e);else if("ended"!=this.state){E("_maybeGotUserMediaForInvite -> "+this.type);var t=this,n=e,r={mandatory:{OfferToReceiveAudio:!0,OfferToReceiveVideo:"video"===t.type}};if(e instanceof MediaStream){var o=this.getLocalVideoElement();o&&"video"==this.type&&(o.autoplay=!0,this.screenSharingStream?(E("Setting screen sharing stream to the local video element"),this.assignElement(o,this.screenSharingStream,"localVideo")):this.assignElement(o,e,"localVideo"),o.muted=!0,setTimeout(function(){var e=t.getLocalVideoElement();e.play&&t.playElement(e,"localVideo")},0)),this.screenSharingStream&&(this.screenSharingStream.addTrack(e.getAudioTracks()[0]),e=this.screenSharingStream),this.localAVStream=e,c(e.getAudioTracks(),!0),this.peerConn=D(this),this.peerConn.addStream(e)}else{if("PermissionDeniedError"!==n.name)return E("Failed to getUserMedia."),void this._getUserMediaFailed(n);E("User denied access to camera/microphone. Or possibly you are using an insecure domain. Receiving only."),this.peerConn=D(this)}this.peerConn.createOffer(x(t,t._gotLocalOffer),x(t,t._getLocalOfferFailed),r),d(t,"create_offer")}},u.prototype._sendAnswer=function(e){var t=this;p(this,"m.call.answer",this._answerContent).then(function(){d(t,"connecting"),C(t)}).catch(function(e){d(t,"ringing"),t.client.cancelPendingEvent(e.event);var n=u.ERR_SEND_ANSWER,r="Failed to send answer";throw"UnknownDeviceError"==e.name&&(n=u.ERR_UNKNOWN_DEVICES,r="Unknown devices present in the room"),t.emit("error",b(n,r)),e})},u.prototype._maybeGotUserMediaForAnswer=function(e){var t=this;if("ended"!=t.state){var n=e;if(e instanceof MediaStream){var r=t.getLocalVideoElement();r&&"video"==t.type&&(r.autoplay=!0,this.assignElement(r,e,"localVideo"),r.muted=!0,setTimeout(function(){var e=t.getLocalVideoElement();e.play&&t.playElement(e,"localVideo")},0)),t.localAVStream=e,c(e.getAudioTracks(),!0),t.peerConn.addStream(e)}else{if("PermissionDeniedError"!==n.name)return E("Failed to getUserMedia."),void this._getUserMediaFailed(n);E("User denied access to camera/microphone. Or possibly you are using an insecure domain. Receiving only.")}var o={mandatory:{OfferToReceiveAudio:!0,OfferToReceiveVideo:"video"===t.type}};t.peerConn.createAnswer(function(e){E("Created answer: "+e),t.peerConn.setLocalDescription(e,function(){t._answerContent={version:0,call_id:t.callId,answer:{sdp:t.peerConn.localDescription.sdp,type:t.peerConn.localDescription.type}},t._sendAnswer()},function(){E("Error setting local description!")},o)},function(e){E("Failed to create answer: "+e)}),d(t,"create_answer")}},u.prototype._gotLocalIceCandidate=function(e){if(e.candidate){if(E("Got local ICE "+e.candidate.sdpMid+" candidate: "+e.candidate.candidate),"ended"==this.state)return;var t={candidate:e.candidate.candidate,sdpMid:e.candidate.sdpMid,sdpMLineIndex:e.candidate.sdpMLineIndex};m(this,t)}},u.prototype._gotRemoteIceCandidate=function(e){"ended"!=this.state&&(E("Got remote ICE "+e.sdpMid+" candidate: "+e.candidate),this.peerConn.addIceCandidate(new this.webRtc.RtcIceCandidate(e),function(){},function(e){}))},u.prototype._receivedAnswer=function(e){if("ended"!=this.state){this.peerConn.setRemoteDescription(new this.webRtc.RtcSessionDescription(e.answer),x(this,this._onSetRemoteDescriptionSuccess),x(this,this._onSetRemoteDescriptionError)),d(this,"connecting")}},u.prototype._gotLocalOffer=function(e){var t=this;E("Created offer: "+e),"ended"!=t.state?t.peerConn.setLocalDescription(e,function(){var e={version:0,call_id:t.callId,offer:{sdp:t.peerConn.localDescription.sdp,type:t.peerConn.localDescription.type},lifetime:u.CALL_TIMEOUT_MS};p(t,"m.call.invite",e).then(function(){d(t,"invite_sent"),setTimeout(function(){"invite_sent"==t.state&&t.hangup("invite_timeout")},u.CALL_TIMEOUT_MS)}).catch(function(e){var n=u.ERR_SEND_INVITE,r="Failed to send invite";throw"UnknownDeviceError"==e.name&&(n=u.ERR_UNKNOWN_DEVICES,r="Unknown devices present in the room"),t.client.cancelPendingEvent(e.event),h(t,"local",n,!1),t.emit("error",b(n,r)),e})},function(){E("Error setting local description!")}):E("Ignoring newly created offer on call ID "+t.callId+" because the call has ended")},u.prototype._getLocalOfferFailed=function(e){this.emit("error",b(u.ERR_LOCAL_OFFER_FAILED,"Failed to start audio for call!"))},u.prototype._getUserMediaFailed=function(e){h(this,"local","user_media_failed",!1),this.emit("error",b(u.ERR_NO_USER_MEDIA,"Couldn't start capturing media! Is your microphone set up and does this app have permission?"))},u.prototype._onIceConnectionStateChanged=function(){"ended"!=this.state&&(E("Ice connection state changed to: "+this.peerConn.iceConnectionState),"completed"==this.peerConn.iceConnectionState||"connected"==this.peerConn.iceConnectionState?(d(this,"connected"),this.didConnect=!0):"failed"==this.peerConn.iceConnectionState&&this.hangup("ice_failed"))},u.prototype._onSignallingStateChanged=function(){E("call "+this.callId+": Signalling state changed to: "+this.peerConn.signalingState)},u.prototype._onSetRemoteDescriptionSuccess=function(){E("Set remote description")},u.prototype._onSetRemoteDescriptionError=function(e){E("Failed to set remote description"+e)},u.prototype._onAddStream=function(e){E("Stream id "+e.stream.id+" added");var t=e.stream;t.getVideoTracks().length>0?(this.type="video",this.remoteAVStream=t,this.remoteAStream=t):(this.type="voice",this.remoteAStream=t);var n=this;R(t,function(e){E("Track id "+e.id+" added"),e.onstarted=x(n,n._onRemoteStreamTrackStarted)}),void 0!==e.stream.oninactive?e.stream.oninactive=x(n,n._onRemoteStreamEnded):e.stream.onended=x(n,n._onRemoteStreamEnded),e.stream.onstarted=x(n,n._onRemoteStreamStarted),"video"===this.type?(g(this),v(this)):v(this)},u.prototype._onRemoteStreamStarted=function(e){d(this,"connected")},u.prototype._onRemoteStreamEnded=function(e){E("Remote stream ended"),this.hangupParty="remote",d(this,"ended"),_(this),"closed"!=this.peerConn.signalingState&&this.peerConn.close(),this.emit("hangup",this)},u.prototype._onRemoteStreamTrackStarted=function(e){d(this,"connected")},u.prototype._onHangupReceived=function(e){E("Hangup received"),h(this,"remote",e.reason,!0)},u.prototype._onAnsweredElsewhere=function(e){E("Answered elsewhere"),h(this,"remote","answered_elsewhere",!0)};var c=function(e,t){for(var n=0;n<e.length;n++)e[n].enabled=t},f=function(e){for(var t=0;t<e.length;t++)if(e[t].enabled)return!0;return!1},d=function(e,t){var n=e.state;e.state=t,e.emit("state",t,n)},p=function(e,t,n){return e.client.sendEvent(e.roomId,t,n)},m=function(e,t){e.candidateSendQueue.push(t),"ringing"!=e.state&&0===e.candidateSendTries&&setTimeout(function(){C(e)},100)},h=function(e,t,n,r){e.getRemoteVideoElement()&&(e.getRemoteVideoElement().pause&&e.pauseElement(e.getRemoteVideoElement(),"remoteVideo"),e.assignElement(e.getRemoteVideoElement(),null,"remoteVideo")),e.getRemoteAudioElement()&&(e.getRemoteAudioElement().pause&&e.pauseElement(e.getRemoteAudioElement(),"remoteAudio"),e.assignElement(e.getRemoteAudioElement(),null,"remoteAudio")),e.getLocalVideoElement()&&(e.getLocalVideoElement().pause&&e.pauseElement(e.getLocalVideoElement(),"localVideo"),e.assignElement(e.getLocalVideoElement(),null,"localVideo")),e.hangupParty=t,e.hangupReason=n,d(e,"ended"),_(e),e.peerConn&&"closed"!==e.peerConn.signalingState&&e.peerConn.close(),r&&e.emit("hangup",e)},_=function(e){E("stopAllMedia (stream=%s)",e.localAVStream),e.localAVStream&&(R(e.localAVStream,function(e){e.stop&&e.stop()}),e.localAVStream.stop&&e.localAVStream.stop()),e.screenSharingStream&&(R(e.screenSharingStream,function(e){e.stop&&e.stop()}),e.screenSharingStream.stop&&e.screenSharingStream.stop()),e.remoteAVStream&&R(e.remoteAVStream,function(e){e.stop&&e.stop()}),e.remoteAStream&&R(e.remoteAStream,function(e){e.stop&&e.stop()})},g=function(e){if(e.getRemoteVideoElement()&&e.remoteAVStream){var t=e.getRemoteVideoElement();t.autoplay=!0,e.assignElement(t,e.remoteAVStream,"remoteVideo"),setTimeout(function(){var t=e.getRemoteVideoElement();t.play&&e.playElement(t,"remoteVideo"),e.webRtc.isOpenWebRTC()&&d(e,"connected")},0)}},v=function(){var e=(0,o.coroutine)(r.default.mark(function e(t){var n;return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.getRemoteAudioElement()||!t.remoteAStream){e.next=8;break}if(n=t.getRemoteAudioElement(),!k){e.next=5;break}return e.next=5,(0,o.resolve)(n.setSinkId(k));case 5:n.autoplay=!0,t.assignElement(n,t.remoteAStream,"remoteAudio"),setTimeout(function(){var e=t.getRemoteAudioElement();e.play&&t.playElement(e,"remoteAudio"),t.webRtc.isOpenWebRTC()&&d(t,"connected")},0);case 8:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),y=function(e){if(0===e.listeners("error").length)throw new Error("You MUST attach an error listener using call.on('error', function() {})")},b=function(e,t){var n=new Error(t);return n.code=e,n},E=function(){var e;(e=console).log.apply(e,arguments)},C=function e(t){if(0!==t.candidateSendQueue.length){var n=t.candidateSendQueue;t.candidateSendQueue=[],++t.candidateSendTries;var r={version:0,call_id:t.callId,candidates:n};E("Attempting to send "+n.length+" candidates"),p(t,"m.call.candidates",r).then(function(){t.candidateSendTries=0,e(t)},function(r){for(var o=0;o<n.length;o++)t.candidateSendQueue.push(n[o]);if(t.candidateSendTries>5)return E("Failed to send candidates on attempt %s. Giving up for now.",t.candidateSendTries),void(t.candidateSendTries=0);var i=500*Math.pow(2,t.candidateSendTries);++t.candidateSendTries,E("Failed to send candidates. Retrying in "+i+"ms"),setTimeout(function(){e(t)},i)})}},S=function(e,t){e.client.callList[e.callId]=e,e.webRtc.getUserMedia(t,x(e,e._maybeGotUserMediaForInvite),x(e,e._maybeGotUserMediaForInvite)),d(e,"wait_local_media"),e.direction="outbound",e.config=t},D=function(e){var t=e.turnServers;if("mozilla"===e.webRtc.vendor){t=[];for(var n=0;n<e.turnServers.length;n++)for(var r=0;r<e.turnServers[n].urls.length;r++)t.push({url:e.turnServers[n].urls[r],username:e.turnServers[n].username,credential:e.turnServers[n].credential})}var o=new e.webRtc.RtcPeerConnection({iceTransportPolicy:e.forceTURN?"relay":void 0,iceServers:t});return o.oniceconnectionstatechange=x(e,e._onIceConnectionStateChanged),o.onsignalingstatechange=x(e,e._onSignallingStateChanged),o.onicecandidate=x(e,e._gotLocalIceCandidate),o.onaddstream=x(e,e._onAddStream),o},w=function(e){var n=t.screen;if(n)return{video:{mediaSource:"screen",mandatory:{chromeMediaSource:"screen",chromeMediaSourceId:""+Date.now(),maxWidth:n.width,maxHeight:n.height,minFrameRate:1,maxFrameRate:10}}};e.emit("error",b(u.ERR_NO_USER_MEDIA,"Couldn't determine screen sharing constaints."))},T=function(e){var n=!!t.window.navigator.webkitGetUserMedia;switch(e){case"voice":return{audio:{deviceId:N?{exact:N}:void 0},video:!1};case"video":return{audio:{deviceId:N?{exact:N}:void 0},video:{deviceId:I?{exact:I}:void 0,width:n?{exact:640}:{ideal:640},height:n?{exact:360}:{ideal:360}}}}},x=function(e,t){return function(){return t.apply(e,arguments)}},R=function(e,t){!function(e,t){for(var n=e.getVideoTracks(),r=0;r<n.length;r++)t(n[r])}(e,t),function(e,t){for(var n=e.getAudioTracks(),r=0;r<n.length;r++)t(n[r])}(e,t)};e.exports.MatrixCall=u;var k=void 0,N=void 0,I=void 0;e.exports.setAudioOutput=function(e){k=e},e.exports.setAudioInput=function(e){N=e},e.exports.setVideoInput=function(e){I=e},e.exports.createNewMatrixCall=function(e,n,r){var o=t.window,i=t.document;if(!o||!i)return null;var a={isOpenWebRTC:function(){var e=i.getElementById("script");if(!e||!e.length)return!1;for(var t=0;t<e.length;t++)if(e[t].src.indexOf("owr.js")>-1)return!0;return!1}},s=o.navigator.getUserMedia||o.navigator.webkitGetUserMedia||o.navigator.mozGetUserMedia;if(s&&(a.getUserMedia=function(){return s.apply(o.navigator,arguments)}),a.RtcPeerConnection=o.RTCPeerConnection||o.webkitRTCPeerConnection||o.mozRTCPeerConnection,a.RtcSessionDescription=o.RTCSessionDescription||o.webkitRTCSessionDescription||o.mozRTCSessionDescription,a.RtcIceCandidate=o.RTCIceCandidate||o.webkitRTCIceCandidate||o.mozRTCIceCandidate,a.vendor=null,o.mozRTCPeerConnection?a.vendor="mozilla":o.webkitRTCPeerConnection?a.vendor="webkit":o.RTCPeerConnection&&(a.vendor="generic"),!(a.RtcIceCandidate&&a.RtcSessionDescription&&a.RtcPeerConnection&&a.getUserMedia))return null;var l=!!r&&r.forceTURN;return new u({webRtc:a,client:e,URL:o.URL,roomId:n,turnServers:e.getTurnServers(),forceTURN:e._forceTURN||l})}}).call(this,n(15))},function(e,t,n){"use strict";t.__esModule=!0;var r=i(n(11)),o=i(n(535));function i(e){return e&&e.__esModule?e:{default:e}}t.default=function e(t,n,i){null===t&&(t=Function.prototype);var a=(0,o.default)(t,n);if(void 0===a){var s=(0,r.default)(t);return null===s?void 0:e(s,n,i)}if("value"in a)return a.value;var l=a.get;return void 0!==l?l.call(i):void 0}},function(e,t,n){"use strict";var r=n(235),o=n(1192),i=n(1193),a=n(1194),s=n(1195),l=n(1196),u=n(1197),c=n(1198),f=n(1201),d=n(89);function p(e,t){e&&Object.keys(e).forEach(function(n){t(e[n],n)})}function m(e,t){return{}.hasOwnProperty.call(e,t)}function h(e,t){var n=[];return p(e,function(e){t(e)&&n.push(e)}),n}e.exports=g;var _=/^[^\0\t\n\f\r /<=>]+$/;function g(e,t,n){var y="";t?(t=o(g.defaults,t)).parser?t.parser=o(v,t.parser):t.parser=v:(t=g.defaults).parser=v;var b,E,C=t.nonTextTags||["script","style","textarea"];t.allowedAttributes&&(b={},E={},p(t.allowedAttributes,function(e,t){b[t]=[];var n=[];e.forEach(function(e){l(e)&&e.indexOf("*")>=0?n.push(i(e).replace(/\\\*/g,".*")):b[t].push(e)}),E[t]=new RegExp("^("+n.join("|")+")$")}));var S={};p(t.allowedClasses,function(e,t){b&&(m(b,t)||(b[t]=[]),b[t].push("class")),S[t]=e});var D,w={};p(t.transformTags,function(e,t){var n;"function"==typeof e?n=e:"string"==typeof e&&(n=g.simpleTransform(e)),"*"===t?D=n:w[t]=n});var T=0,x=[],R={},k={},N=!1,I=0,O=new r.Parser({onopentag:function(e,n){if(N)I++;else{var r=new function(e,t){var n=this;this.tag=e,this.attribs=t||{},this.tagPosition=y.length,this.text="",this.updateParentNodeText=function(){x.length&&(x[x.length-1].text+=n.text)}}(e,n);x.push(r);var o,i=!1,l=!!r.text;m(w,e)&&(o=w[e](e,n),r.attribs=n=o.attribs,void 0!==o.text&&(r.innerText=o.text),e!==o.tagName&&(r.name=e=o.tagName,k[T]=o.tagName)),D&&(o=D(e,n),r.attribs=n=o.attribs,e!==o.tagName&&(r.name=e=o.tagName,k[T]=o.tagName)),t.allowedTags&&-1===t.allowedTags.indexOf(e)&&(i=!0,-1!==C.indexOf(e)&&(N=!0,I=1),R[T]=!0),T++,i||(y+="<"+e,(!b||m(b,e)||b["*"])&&p(n,function(n,o){if(_.test(o)){var i,l=!1;if(!b||m(b,e)&&-1!==b[e].indexOf(o)||b["*"]&&-1!==b["*"].indexOf(o)||m(E,e)&&E[e].test(o)||E["*"]&&E["*"].test(o))l=!0;else if(b&&b[e]){var g=!0,v=!1,C=void 0;try{for(var D,w=b[e][Symbol.iterator]();!(g=(D=w.next()).done);g=!0){var T=D.value;if(u(T)&&T.name&&T.name===o){l=!0;var x="";if(!0===T.multiple){var R=n.split(" "),k=!0,N=!1,I=void 0;try{for(var O,P=R[Symbol.iterator]();!(k=(O=P.next()).done);k=!0){var L=O.value;-1!==T.values.indexOf(L)&&(""===x?x=L:x+=" "+L)}}catch(e){N=!0,I=e}finally{try{!k&&P.return&&P.return()}finally{if(N)throw I}}}else T.values.indexOf(n)>=0&&(x=n);n=x}}}catch(e){v=!0,C=e}finally{try{!g&&w.return&&w.return()}finally{if(v)throw C}}}if(l){if(-1!==t.allowedSchemesAppliedToAttributes.indexOf(o)&&M(e,n))return void delete r.attribs[o];if("iframe"===e&&"src"===o){var F=!0;try{(i=d.parse(n,!1,!0))&&null===i.host&&null===i.protocol?F=m(t,"allowIframeRelativeUrls")?t.allowIframeRelativeUrls:!t.allowedIframeHostnames:t.allowedIframeHostnames&&(F=t.allowedIframeHostnames.find(function(e){return e===i.hostname}))}catch(e){F=!1}if(!F)return void delete r.attribs[o]}if("srcset"===o)try{if(p(i=c.parse(n),function(e){M("srcset",e.url)&&(e.evil=!0)}),!(i=h(i,function(e){return!e.evil})).length)return void delete r.attribs[o];n=c.stringify(h(i,function(e){return!e.evil})),r.attribs[o]=n}catch(e){return void delete r.attribs[o]}if("class"===o&&!(n=function(e,t){if(!t)return e;return(e=e.split(/\s+/)).filter(function(e){return-1!==t.indexOf(e)}).join(" ")}(n,S[e])).length)return void delete r.attribs[o];if("style"===o)try{if(0===(n=function(e){return e.nodes[0].nodes.reduce(function(e,t){return e.push(t.prop+":"+t.value+";"),e},[]).join("")}(function(e,t){if(!t)return e;var n,r=a(e),o=e.nodes[0];n=t[o.selector]&&t["*"]?s(a(t[o.selector]),t["*"],function(e,t){if(Array.isArray(e))return e.concat(t)}):t[o.selector]||t["*"];n&&(r.nodes[0].nodes=o.nodes.reduce(function(e){return function(t,n){if(e.hasOwnProperty(n.prop)){var r=e[n.prop].some(function(e){return e.test(n.value)});r&&t.push(n)}return t}}(n),[]));return r}(f.parse(e+" {"+n+"}"),t.allowedStyles))).length)return void delete r.attribs[o]}catch(e){return void delete r.attribs[o]}y+=" "+o,n.length&&(y+='="'+A(n,!0)+'"')}else delete r.attribs[o]}else delete r.attribs[o]}),-1!==t.selfClosing.indexOf(e)?y+=" />":(y+=">",!r.innerText||l||t.textFilter||(y+=r.innerText)))}},ontext:function(e){if(!N){var n,r=x[x.length-1];if(r&&(n=r.tag,e=void 0!==r.innerText?r.innerText:e),"script"===n||"style"===n)y+=e;else{var o=A(e,!1);t.textFilter?y+=t.textFilter(o):y+=o}if(x.length)x[x.length-1].text+=e}},onclosetag:function(e){if(N){if(--I)return;N=!1}var n=x.pop();if(n){if(N=!1,R[--T])return delete R[T],void n.updateParentNodeText();k[T]&&(e=k[T],delete k[T]),t.exclusiveFilter&&t.exclusiveFilter(n)?y=y.substr(0,n.tagPosition):(n.updateParentNodeText(),-1===t.selfClosing.indexOf(e)&&(y+="</"+e+">"))}}},t.parser);return O.write(e),O.end(),y;function A(e,n){return"string"!=typeof e&&(e+=""),t.parser.decodeEntities&&(e=e.replace(/&/g,"&").replace(/</g,"<").replace(/\>/g,">"),n&&(e=e.replace(/\"/g,"""))),e=e.replace(/&(?![a-zA-Z0-9#]{1,20};)/g,"&").replace(/</g,"<").replace(/\>/g,">"),n&&(e=e.replace(/\"/g,""")),e}function M(e,n){var r=(n=(n=n.replace(/[\x00-\x20]+/g,"")).replace(/<\!\-\-.*?\-\-\>/g,"")).match(/^([a-zA-Z]+)\:/);if(!r)return!!n.match(/^[\/\\]{2}/)&&!t.allowProtocolRelative;var o=r[1].toLowerCase();return m(t.allowedSchemesByTag,e)?-1===t.allowedSchemesByTag[e].indexOf(o):!t.allowedSchemes||-1===t.allowedSchemes.indexOf(o)}}var v={decodeEntities:!0};g.defaults={allowedTags:["h3","h4","h5","h6","blockquote","p","a","ul","ol","nl","li","b","i","strong","em","strike","code","hr","br","div","table","thead","caption","tbody","tr","th","td","pre","iframe"],allowedAttributes:{a:["href","name","target"],img:["src"]},selfClosing:["img","br","hr","area","base","basefont","input","link","meta"],allowedSchemes:["http","https","ftp","mailto"],allowedSchemesByTag:{},allowedSchemesAppliedToAttributes:["href","src","cite"],allowProtocolRelative:!0},g.simpleTransform=function(e,t,n){return n=void 0===n||n,t=t||{},function(r,o){var i;if(n)for(i in t)o[i]=t[i];else o=t;return{tagName:e,attribs:o}}}},function(e,t,n){var r=n(601),o=n(1165);function i(t,n){return delete e.exports[t],e.exports[t]=n,n}e.exports={Parser:r,Tokenizer:n(602),ElementType:n(236),DomHandler:o,get FeedHandler(){return i("FeedHandler",n(1167))},get Stream(){return i("Stream",n(1168))},get WritableStream(){return i("WritableStream",n(606))},get ProxyHandler(){return i("ProxyHandler",n(1179))},get DomUtils(){return i("DomUtils",n(1180))},get CollectingHandler(){return i("CollectingHandler",n(1191))},DefaultHandler:o,get RssHandler(){return i("RssHandler",this.FeedHandler)},parseDOM:function(e,t){var n=new o(t);return new r(n,t).end(e),n.dom},parseFeed:function(t,n){var o=new e.exports.FeedHandler(n);return new r(o,n).end(t),o.dom},createDomStream:function(e,t,n){var i=new o(e,t,n);return new r(i,t)},EVENTS:{attribute:2,cdatastart:0,cdataend:0,text:1,processinginstruction:2,comment:1,commentend:0,closetag:1,opentag:2,opentagname:1,error:1,end:0}}},function(e,t){e.exports={Text:"text",Directive:"directive",Comment:"comment",Script:"script",Style:"style",Tag:"tag",CDATA:"cdata",Doctype:"doctype",isTag:function(e){return"tag"===e.type||"script"===e.type||"style"===e.type}}},function(e,t,n){(function(e){function n(e){return Object.prototype.toString.call(e)}t.isArray=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===n(e)},t.isBoolean=function(e){return"boolean"==typeof e},t.isNull=function(e){return null===e},t.isNullOrUndefined=function(e){return null==e},t.isNumber=function(e){return"number"==typeof e},t.isString=function(e){return"string"==typeof e},t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=function(e){return void 0===e},t.isRegExp=function(e){return"[object RegExp]"===n(e)},t.isObject=function(e){return"object"==typeof e&&null!==e},t.isDate=function(e){return"[object Date]"===n(e)},t.isError=function(e){return"[object Error]"===n(e)||e instanceof Error},t.isFunction=function(e){return"function"==typeof e},t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=e.isBuffer}).call(this,n(193).Buffer)},function(e,t){t.getArg=function(e,t,n){if(t in e)return e[t];if(3===arguments.length)return n;throw new Error('"'+t+'" is a required argument.')};var n=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,r=/^data:.+\,.+$/;function o(e){var t=e.match(n);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}function i(e){var t="";return e.scheme&&(t+=e.scheme+":"),t+="//",e.auth&&(t+=e.auth+"@"),e.host&&(t+=e.host),e.port&&(t+=":"+e.port),e.path&&(t+=e.path),t}function a(e){var n=e,r=o(e);if(r){if(!r.path)return e;n=r.path}for(var a,s=t.isAbsolute(n),l=n.split(/\/+/),u=0,c=l.length-1;c>=0;c--)"."===(a=l[c])?l.splice(c,1):".."===a?u++:u>0&&(""===a?(l.splice(c+1,u),u=0):(l.splice(c,2),u--));return""===(n=l.join("/"))&&(n=s?"/":"."),r?(r.path=n,i(r)):n}function s(e,t){""===e&&(e="."),""===t&&(t=".");var n=o(t),s=o(e);if(s&&(e=s.path||"/"),n&&!n.scheme)return s&&(n.scheme=s.scheme),i(n);if(n||t.match(r))return t;if(s&&!s.host&&!s.path)return s.host=t,i(s);var l="/"===t.charAt(0)?t:a(e.replace(/\/+$/,"")+"/"+t);return s?(s.path=l,i(s)):l}t.urlParse=o,t.urlGenerate=i,t.normalize=a,t.join=s,t.isAbsolute=function(e){return"/"===e.charAt(0)||n.test(e)},t.relative=function(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var n=0;0!==t.indexOf(e+"/");){var r=e.lastIndexOf("/");if(r<0)return t;if((e=e.slice(0,r)).match(/^([^\/]+:\/)?\/*$/))return t;++n}return Array(n+1).join("../")+t.substr(e.length+1)};var l=!("__proto__"in Object.create(null));function u(e){return e}function c(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var n=t-10;n>=0;n--)if(36!==e.charCodeAt(n))return!1;return!0}function f(e,t){return e===t?0:null===e?1:null===t?-1:e>t?1:-1}t.toSetString=l?u:function(e){return c(e)?"$"+e:e},t.fromSetString=l?u:function(e){return c(e)?e.slice(1):e},t.compareByOriginalPositions=function(e,t,n){var r=f(e.source,t.source);return 0!==r?r:0!=(r=e.originalLine-t.originalLine)?r:0!=(r=e.originalColumn-t.originalColumn)||n?r:0!=(r=e.generatedColumn-t.generatedColumn)?r:0!=(r=e.generatedLine-t.generatedLine)?r:f(e.name,t.name)},t.compareByGeneratedPositionsDeflated=function(e,t,n){var r=e.generatedLine-t.generatedLine;return 0!==r?r:0!=(r=e.generatedColumn-t.generatedColumn)||n?r:0!==(r=f(e.source,t.source))?r:0!=(r=e.originalLine-t.originalLine)?r:0!=(r=e.originalColumn-t.originalColumn)?r:f(e.name,t.name)},t.compareByGeneratedPositionsInflated=function(e,t){var n=e.generatedLine-t.generatedLine;return 0!==n?n:0!=(n=e.generatedColumn-t.generatedColumn)?n:0!==(n=f(e.source,t.source))?n:0!=(n=e.originalLine-t.originalLine)?n:0!=(n=e.originalColumn-t.originalColumn)?n:f(e.name,t.name)},t.parseSourceMapInput=function(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))},t.computeSourceURL=function(e,t,n){if(t=t||"",e&&("/"!==e[e.length-1]&&"/"!==t[0]&&(e+="/"),t=e+t),n){var r=o(n);if(!r)throw new Error("sourceMapURL could not be parsed");if(r.path){var l=r.path.lastIndexOf("/");l>=0&&(r.path=r.path.substring(0,l+1))}t=s(i(r),t)}return a(t)}},function(e,t,n){var r,o;/*! VelocityJS.org (1.2.3). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */ -/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */!function(e){if(!e.jQuery){var t=function(e,n){return new t.fn.init(e,n)};t.isWindow=function(e){return null!=e&&e==e.window},t.type=function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?r[i.call(e)]||"object":typeof e},t.isArray=Array.isArray||function(e){return"array"===t.type(e)},t.isPlainObject=function(e){var n;if(!e||"object"!==t.type(e)||e.nodeType||t.isWindow(e))return!1;try{if(e.constructor&&!o.call(e,"constructor")&&!o.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(e){return!1}for(n in e);return void 0===n||o.call(e,n)},t.each=function(e,t,n){var r=0,o=e.length,i=l(e);if(n){if(i)for(;r<o&&!1!==t.apply(e[r],n);r++);else for(r in e)if(!1===t.apply(e[r],n))break}else if(i)for(;r<o&&!1!==t.call(e[r],r,e[r]);r++);else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},t.data=function(e,r,o){if(void 0===o){var i=(a=e[t.expando])&&n[a];if(void 0===r)return i;if(i&&r in i)return i[r]}else if(void 0!==r){var a=e[t.expando]||(e[t.expando]=++t.uuid);return n[a]=n[a]||{},n[a][r]=o,o}},t.removeData=function(e,r){var o=e[t.expando],i=o&&n[o];i&&(r?t.each(r,function(e,t){delete i[t]}):delete n[o])},t.extend=function(){var e,n,r,o,i,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[l]||{},l++),"object"!=typeof s&&"function"!==t.type(s)&&(s={}),l===u&&(s=this,l--);l<u;l++)if(null!=(i=arguments[l]))for(o in i)e=s[o],s!==(r=i[o])&&(c&&r&&(t.isPlainObject(r)||(n=t.isArray(r)))?(n?(n=!1,a=e&&t.isArray(e)?e:[]):a=e&&t.isPlainObject(e)?e:{},s[o]=t.extend(c,a,r)):void 0!==r&&(s[o]=r));return s},t.queue=function(e,n,r){if(e){n=(n||"fx")+"queue";var o=t.data(e,n);return r?(!o||t.isArray(r)?o=t.data(e,n,function(e,t){var n=t||[];return null!=e&&(l(Object(e))?function(e,t){for(var n=+t.length,r=0,o=e.length;r<n;)e[o++]=t[r++];if(n!=n)for(;void 0!==t[r];)e[o++]=t[r++];e.length=o}(n,"string"==typeof e?[e]:e):[].push.call(n,e)),n}(r)):o.push(r),o):o||[]}},t.dequeue=function(e,n){t.each(e.nodeType?[e]:e,function(e,r){n=n||"fx";var o=t.queue(r,n),i=o.shift();"inprogress"===i&&(i=o.shift()),i&&("fx"===n&&o.unshift("inprogress"),i.call(r,function(){t.dequeue(r,n)}))})},t.fn=t.prototype={init:function(e){if(e.nodeType)return this[0]=e,this;throw new Error("Not a DOM node.")},offset:function(){var t=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:t.top+(e.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:t.left+(e.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function e(){for(var e=this.offsetParent||document;e&&"html"===!e.nodeType.toLowerCase&&"static"===e.style.position;)e=e.offsetParent;return e||document}var n=this[0],e=e.apply(n),r=this.offset(),o=/^(?:body|html)$/i.test(e.nodeName)?{top:0,left:0}:t(e).offset();return r.top-=parseFloat(n.style.marginTop)||0,r.left-=parseFloat(n.style.marginLeft)||0,e.style&&(o.top+=parseFloat(e.style.borderTopWidth)||0,o.left+=parseFloat(e.style.borderLeftWidth)||0),{top:r.top-o.top,left:r.left-o.left}}};var n={};t.expando="velocity"+(new Date).getTime(),t.uuid=0;for(var r={},o=r.hasOwnProperty,i=r.toString,a="Boolean Number String Function Array Date RegExp Object Error".split(" "),s=0;s<a.length;s++)r["[object "+a[s]+"]"]=a[s].toLowerCase();t.fn.init.prototype=t.fn,e.Velocity={Utilities:t}}function l(e){var n=e.length,r=t.type(e);return"function"!==r&&!t.isWindow(e)&&(!(1!==e.nodeType||!n)||("array"===r||0===n||"number"==typeof n&&n>0&&n-1 in e))}}(window),function(i){"object"==typeof e&&"object"==typeof e.exports?e.exports=i():void 0===(o="function"==typeof(r=i)?r.call(t,n,t,e):r)||(e.exports=o)}(function(){return function(e,t,n,r){var o=function(){if(n.documentMode)return n.documentMode;for(var e=7;e>4;e--){var t=n.createElement("div");if(t.innerHTML="\x3c!--[if IE "+e+"]><span></span><![endif]--\x3e",t.getElementsByTagName("span").length)return t=null,e}return r}(),i=function(){var e=0;return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||function(t){var n,r=(new Date).getTime();return n=Math.max(0,16-(r-e)),e=r+n,setTimeout(function(){t(r+n)},n)}}();function a(e){return l.isWrapped(e)?e=[].slice.call(e):l.isNode(e)&&(e=[e]),e}var s,l={isString:function(e){return"string"==typeof e},isArray:Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},isFunction:function(e){return"[object Function]"===Object.prototype.toString.call(e)},isNode:function(e){return e&&e.nodeType},isNodeList:function(e){return"object"==typeof e&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(e))&&e.length!==r&&(0===e.length||"object"==typeof e[0]&&e[0].nodeType>0)},isWrapped:function(e){return e&&(e.jquery||t.Zepto&&t.Zepto.zepto.isZ(e))},isSVG:function(e){return t.SVGElement&&e instanceof t.SVGElement},isEmptyObject:function(e){for(var t in e)return!1;return!0}},u=!1;if(e.fn&&e.fn.jquery?(s=e,u=!0):s=t.Velocity.Utilities,o<=8&&!u)throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");if(!(o<=7)){var c=400,f="swing",d={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\.3\.[3-7]/i.test(navigator.userAgent),isChrome:t.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:n.createElement("div"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:s,Redirects:{},Easings:{},Promise:t.Promise,defaults:{queue:"",duration:c,easing:f,begin:r,complete:r,progress:r,display:r,visibility:r,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(e){s.data(e,"velocity",{isSVG:l.isSVG(e),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};t.pageYOffset!==r?(d.State.scrollAnchor=t,d.State.scrollPropertyLeft="pageXOffset",d.State.scrollPropertyTop="pageYOffset"):(d.State.scrollAnchor=n.documentElement||n.body.parentNode||n.body,d.State.scrollPropertyLeft="scrollLeft",d.State.scrollPropertyTop="scrollTop");var p=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,n,r){var o={x:t.x+r.dx*n,v:t.v+r.dv*n,tension:t.tension,friction:t.friction};return{dx:o.v,dv:e(o)}}function n(n,r){var o={dx:n.v,dv:e(n)},i=t(n,.5*r,o),a=t(n,.5*r,i),s=t(n,r,a),l=1/6*(o.dx+2*(i.dx+a.dx)+s.dx),u=1/6*(o.dv+2*(i.dv+a.dv)+s.dv);return n.x=n.x+l*r,n.v=n.v+u*r,n}return function e(t,r,o){var i,a,s,l={x:-1,v:0,tension:null,friction:null},u=[0],c=0;for(t=parseFloat(t)||500,r=parseFloat(r)||20,o=o||null,l.tension=t,l.friction=r,a=(i=null!==o)?(c=e(t,r))/o*.016:.016;s=n(s||l,a),u.push(1+s.x),c+=16,Math.abs(s.x)>1e-4&&Math.abs(s.v)>1e-4;);return i?function(e){return u[e*(u.length-1)|0]}:c}}();d.Easings={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},spring:function(e){return 1-Math.cos(4.5*e*Math.PI)*Math.exp(6*-e)}},s.each([["ease",[.25,.1,.25,1]],["ease-in",[.42,0,1,1]],["ease-out",[0,0,.58,1]],["ease-in-out",[.42,0,.58,1]],["easeInSine",[.47,0,.745,.715]],["easeOutSine",[.39,.575,.565,1]],["easeInOutSine",[.445,.05,.55,.95]],["easeInQuad",[.55,.085,.68,.53]],["easeOutQuad",[.25,.46,.45,.94]],["easeInOutQuad",[.455,.03,.515,.955]],["easeInCubic",[.55,.055,.675,.19]],["easeOutCubic",[.215,.61,.355,1]],["easeInOutCubic",[.645,.045,.355,1]],["easeInQuart",[.895,.03,.685,.22]],["easeOutQuart",[.165,.84,.44,1]],["easeInOutQuart",[.77,0,.175,1]],["easeInQuint",[.755,.05,.855,.06]],["easeOutQuint",[.23,1,.32,1]],["easeInOutQuint",[.86,0,.07,1]],["easeInExpo",[.95,.05,.795,.035]],["easeOutExpo",[.19,1,.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[.6,.04,.98,.335]],["easeOutCirc",[.075,.82,.165,1]],["easeInOutCirc",[.785,.135,.15,.86]]],function(e,t){d.Easings[t[0]]=v.apply(null,t[1])});var m=d.CSS={RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi},Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"]},Hooks:{templates:{textShadow:["Color X Y Blur","black 0px 0px 0px"],boxShadow:["Color X Y Blur Spread","black 0px 0px 0px 0px"],clip:["Top Right Bottom Left","0px 0px 0px 0px"],backgroundPosition:["X Y","0% 0%"],transformOrigin:["X Y Z","50% 50% 0px"],perspectiveOrigin:["X Y","50% 50%"]},registered:{},register:function(){for(var e=0;e<m.Lists.colors.length;e++){var t="color"===m.Lists.colors[e]?"0 0 0 1":"255 255 255 1";m.Hooks.templates[m.Lists.colors[e]]=["Red Green Blue Alpha",t]}var n,r,i;if(o)for(n in m.Hooks.templates){i=(r=m.Hooks.templates[n])[0].split(" ");var a=r[1].match(m.RegEx.valueSplit);"Color"===i[0]&&(i.push(i.shift()),a.push(a.shift()),m.Hooks.templates[n]=[i.join(" "),a.join(" ")])}for(n in m.Hooks.templates)for(var e in i=(r=m.Hooks.templates[n])[0].split(" ")){var s=n+i[e],l=e;m.Hooks.registered[s]=[n,l]}},getRoot:function(e){var t=m.Hooks.registered[e];return t?t[0]:e},cleanRootPropertyValue:function(e,t){return m.RegEx.valueUnwrap.test(t)&&(t=t.match(m.RegEx.valueUnwrap)[1]),m.Values.isCSSNullValue(t)&&(t=m.Hooks.templates[e][1]),t},extractValue:function(e,t){var n=m.Hooks.registered[e];if(n){var r=n[0],o=n[1];return(t=m.Hooks.cleanRootPropertyValue(r,t)).toString().match(m.RegEx.valueSplit)[o]}return t},injectValue:function(e,t,n){var r=m.Hooks.registered[e];if(r){var o,i=r[0],a=r[1];return(o=(n=m.Hooks.cleanRootPropertyValue(i,n)).toString().match(m.RegEx.valueSplit))[a]=t,o.join(" ")}return n}},Normalizations:{registered:{clip:function(e,t,n){switch(e){case"name":return"clip";case"extract":var r;return r=m.RegEx.wrappedValueAlreadyExtracted.test(n)?n:(r=n.toString().match(m.RegEx.valueUnwrap))?r[1].replace(/,(\s+)?/g," "):n;case"inject":return"rect("+n+")"}},blur:function(e,t,n){switch(e){case"name":return d.State.isFirefox?"filter":"-webkit-filter";case"extract":var r=parseFloat(n);if(!r&&0!==r){var o=n.toString().match(/blur\(([0-9]+[A-z]+)\)/i);r=o?o[1]:0}return r;case"inject":return parseFloat(n)?"blur("+n+")":"none"}},opacity:function(e,t,n){if(o<=8)switch(e){case"name":return"filter";case"extract":var r=n.toString().match(/alpha\(opacity=(.*)\)/i);return n=r?r[1]/100:1;case"inject":return t.style.zoom=1,parseFloat(n)>=1?"":"alpha(opacity="+parseInt(100*parseFloat(n),10)+")"}else switch(e){case"name":return"opacity";case"extract":case"inject":return n}}},register:function(){o<=9||d.State.isGingerbread||(m.Lists.transformsBase=m.Lists.transformsBase.concat(m.Lists.transforms3D));for(var e=0;e<m.Lists.transformsBase.length;e++)!function(){var t=m.Lists.transformsBase[e];m.Normalizations.registered[t]=function(e,n,o){switch(e){case"name":return"transform";case"extract":return g(n)===r||g(n).transformCache[t]===r?/^scale/i.test(t)?1:0:g(n).transformCache[t].replace(/[()]/g,"");case"inject":var i=!1;switch(t.substr(0,t.length-1)){case"translate":i=!/(%|px|em|rem|vw|vh|\d)$/i.test(o);break;case"scal":case"scale":d.State.isAndroid&&g(n).transformCache[t]===r&&o<1&&(o=1),i=!/(\d)$/i.test(o);break;case"skew":case"rotate":i=!/(deg|\d)$/i.test(o)}return i||(g(n).transformCache[t]="("+o+")"),g(n).transformCache[t]}}}();for(e=0;e<m.Lists.colors.length;e++)!function(){var t=m.Lists.colors[e];m.Normalizations.registered[t]=function(e,n,i){switch(e){case"name":return t;case"extract":var a;if(m.RegEx.wrappedValueAlreadyExtracted.test(i))a=i;else{var s,l={black:"rgb(0, 0, 0)",blue:"rgb(0, 0, 255)",gray:"rgb(128, 128, 128)",green:"rgb(0, 128, 0)",red:"rgb(255, 0, 0)",white:"rgb(255, 255, 255)"};/^[A-z]+$/i.test(i)?s=l[i]!==r?l[i]:l.black:m.RegEx.isHex.test(i)?s="rgb("+m.Values.hexToRgb(i).join(" ")+")":/^rgba?\(/i.test(i)||(s=l.black),a=(s||i).toString().match(m.RegEx.valueUnwrap)[1].replace(/,(\s+)?/g," ")}return o<=8||3!==a.split(" ").length||(a+=" 1"),a;case"inject":return o<=8?4===i.split(" ").length&&(i=i.split(/\s+/).slice(0,3).join(" ")):3===i.split(" ").length&&(i+=" 1"),(o<=8?"rgb":"rgba")+"("+i.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"")+")"}}}()}},Names:{camelCase:function(e){return e.replace(/-(\w)/g,function(e,t){return t.toUpperCase()})},SVGAttribute:function(e){var t="width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2";return(o||d.State.isAndroid&&!d.State.isChrome)&&(t+="|transform"),new RegExp("^("+t+")$","i").test(e)},prefixCheck:function(e){if(d.State.prefixMatches[e])return[d.State.prefixMatches[e],!0];for(var t=["","Webkit","Moz","ms","O"],n=0,r=t.length;n<r;n++){var o;if(o=0===n?e:t[n]+e.replace(/^\w/,function(e){return e.toUpperCase()}),l.isString(d.State.prefixElement.style[o]))return d.State.prefixMatches[e]=o,[o,!0]}return[e,!1]}},Values:{hexToRgb:function(e){var t;return e=e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(e,t,n,r){return t+t+n+n+r+r}),(t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e))?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:[0,0,0]},isCSSNullValue:function(e){return 0==e||/^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(e)},getUnitType:function(e){return/^(rotate|skew)/i.test(e)?"deg":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(e)?"":"px"},getDisplayType:function(e){var t=e&&e.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t)?"inline":/^(li)$/i.test(t)?"list-item":/^(tr)$/i.test(t)?"table-row":/^(table)$/i.test(t)?"table":/^(tbody)$/i.test(t)?"table-row-group":"block"},addClass:function(e,t){e.classList?e.classList.add(t):e.className+=(e.className.length?" ":"")+t},removeClass:function(e,t){e.classList?e.classList.remove(t):e.className=e.className.toString().replace(new RegExp("(^|\\s)"+t.split(" ").join("|")+"(\\s|$)","gi")," ")}},getPropertyValue:function(e,n,i,a){function l(e,n){var i=0;if(o<=8)i=s.css(e,n);else{var u,c=!1;function f(){c&&m.setPropertyValue(e,"display","none")}if(/^(width|height)$/.test(n)&&0===m.getPropertyValue(e,"display")&&(c=!0,m.setPropertyValue(e,"display",m.Values.getDisplayType(e))),!a){if("height"===n&&"border-box"!==m.getPropertyValue(e,"boxSizing").toString().toLowerCase()){var d=e.offsetHeight-(parseFloat(m.getPropertyValue(e,"borderTopWidth"))||0)-(parseFloat(m.getPropertyValue(e,"borderBottomWidth"))||0)-(parseFloat(m.getPropertyValue(e,"paddingTop"))||0)-(parseFloat(m.getPropertyValue(e,"paddingBottom"))||0);return f(),d}if("width"===n&&"border-box"!==m.getPropertyValue(e,"boxSizing").toString().toLowerCase()){var p=e.offsetWidth-(parseFloat(m.getPropertyValue(e,"borderLeftWidth"))||0)-(parseFloat(m.getPropertyValue(e,"borderRightWidth"))||0)-(parseFloat(m.getPropertyValue(e,"paddingLeft"))||0)-(parseFloat(m.getPropertyValue(e,"paddingRight"))||0);return f(),p}}u=g(e)===r?t.getComputedStyle(e,null):g(e).computedStyle?g(e).computedStyle:g(e).computedStyle=t.getComputedStyle(e,null),"borderColor"===n&&(n="borderTopColor"),""!==(i=9===o&&"filter"===n?u.getPropertyValue(n):u[n])&&null!==i||(i=e.style[n]),f()}if("auto"===i&&/^(top|right|bottom|left)$/i.test(n)){var h=l(e,"position");("fixed"===h||"absolute"===h&&/top|left/i.test(n))&&(i=s(e).position()[n]+"px")}return i}var u;if(m.Hooks.registered[n]){var c=n,f=m.Hooks.getRoot(c);i===r&&(i=m.getPropertyValue(e,m.Names.prefixCheck(f)[0])),m.Normalizations.registered[f]&&(i=m.Normalizations.registered[f]("extract",e,i)),u=m.Hooks.extractValue(c,i)}else if(m.Normalizations.registered[n]){var p,h;"transform"!==(p=m.Normalizations.registered[n]("name",e))&&(h=l(e,m.Names.prefixCheck(p)[0]),m.Values.isCSSNullValue(h)&&m.Hooks.templates[n]&&(h=m.Hooks.templates[n][1])),u=m.Normalizations.registered[n]("extract",e,h)}if(!/^[\d-]/.test(u))if(g(e)&&g(e).isSVG&&m.Names.SVGAttribute(n))if(/^(height|width)$/i.test(n))try{u=e.getBBox()[n]}catch(e){u=0}else u=e.getAttribute(n);else u=l(e,m.Names.prefixCheck(n)[0]);return m.Values.isCSSNullValue(u)&&(u=0),d.debug>=2&&console.log("Get "+n+": "+u),u},setPropertyValue:function(e,n,r,i,a){var s=n;if("scroll"===n)a.container?a.container["scroll"+a.direction]=r:"Left"===a.direction?t.scrollTo(r,a.alternateValue):t.scrollTo(a.alternateValue,r);else if(m.Normalizations.registered[n]&&"transform"===m.Normalizations.registered[n]("name",e))m.Normalizations.registered[n]("inject",e,r),s="transform",r=g(e).transformCache[n];else{if(m.Hooks.registered[n]){var l=n,u=m.Hooks.getRoot(n);i=i||m.getPropertyValue(e,u),r=m.Hooks.injectValue(l,r,i),n=u}if(m.Normalizations.registered[n]&&(r=m.Normalizations.registered[n]("inject",e,r),n=m.Normalizations.registered[n]("name",e)),s=m.Names.prefixCheck(n)[0],o<=8)try{e.style[s]=r}catch(e){d.debug&&console.log("Browser does not support ["+r+"] for ["+s+"]")}else g(e)&&g(e).isSVG&&m.Names.SVGAttribute(n)?e.setAttribute(n,r):e.style[s]=r;d.debug>=2&&console.log("Set "+n+" ("+s+"): "+r)}return[s,r]},flushTransformCache:function(e){var t="";if((o||d.State.isAndroid&&!d.State.isChrome)&&g(e).isSVG){function n(t){return parseFloat(m.getPropertyValue(e,t))}var r={translate:[n("translateX"),n("translateY")],skewX:[n("skewX")],skewY:[n("skewY")],scale:1!==n("scale")?[n("scale"),n("scale")]:[n("scaleX"),n("scaleY")],rotate:[n("rotateZ"),0,0]};s.each(g(e).transformCache,function(e){/^translate/i.test(e)?e="translate":/^scale/i.test(e)?e="scale":/^rotate/i.test(e)&&(e="rotate"),r[e]&&(t+=e+"("+r[e].join(" ")+") ",delete r[e])})}else{var i,a;s.each(g(e).transformCache,function(n){if(i=g(e).transformCache[n],"transformPerspective"===n)return a=i,!0;9===o&&"rotateZ"===n&&(n="rotate"),t+=n+i+" "}),a&&(t="perspective"+a+" "+t)}m.setPropertyValue(e,"transform",t)}};m.Hooks.register(),m.Normalizations.register(),d.hook=function(e,t,n){var o=r;return e=a(e),s.each(e,function(e,i){if(g(i)===r&&d.init(i),n===r)o===r&&(o=d.CSS.getPropertyValue(i,t));else{var a=d.CSS.setPropertyValue(i,t,n);"transform"===a[0]&&d.CSS.flushTransformCache(i),o=a}}),o};var h=function(){function e(){return o?T.promise||null:i}var o,i,u,f,p,_,v=arguments[0]&&(arguments[0].p||s.isPlainObject(arguments[0].properties)&&!arguments[0].properties.names||l.isString(arguments[0].properties));if(l.isWrapped(this)?(o=!1,u=0,f=this,i=this):(o=!0,u=1,f=v?arguments[0].elements||arguments[0].e:arguments[0]),f=a(f)){v?(p=arguments[0].properties||arguments[0].p,_=arguments[0].options||arguments[0].o):(p=arguments[u],_=arguments[u+1]);var C=f.length,S=0;if(!/^(stop|finish|finishAll)$/i.test(p)&&!s.isPlainObject(_)){_={};for(var D=u+1;D<arguments.length;D++)l.isArray(arguments[D])||!/^(fast|normal|slow)$/i.test(arguments[D])&&!/^\d/.test(arguments[D])?l.isString(arguments[D])||l.isArray(arguments[D])?_.easing=arguments[D]:l.isFunction(arguments[D])&&(_.complete=arguments[D]):_.duration=arguments[D]}var w,T={promise:null,resolver:null,rejecter:null};switch(o&&d.Promise&&(T.promise=new d.Promise(function(e,t){T.resolver=e,T.rejecter=t})),p){case"scroll":w="scroll";break;case"reverse":w="reverse";break;case"finish":case"finishAll":case"stop":s.each(f,function(e,t){g(t)&&g(t).delayTimer&&(clearTimeout(g(t).delayTimer.setTimeout),g(t).delayTimer.next&&g(t).delayTimer.next(),delete g(t).delayTimer),"finishAll"!==p||!0!==_&&!l.isString(_)||(s.each(s.queue(t,l.isString(_)?_:""),function(e,t){l.isFunction(t)&&t()}),s.queue(t,l.isString(_)?_:"",[]))});var x=[];return s.each(d.State.calls,function(e,t){t&&s.each(t[1],function(n,o){var i=_===r?"":_;if(!0!==i&&t[2].queue!==i&&(_!==r||!1!==t[2].queue))return!0;s.each(f,function(n,r){r===o&&((!0===_||l.isString(_))&&(s.each(s.queue(r,l.isString(_)?_:""),function(e,t){l.isFunction(t)&&t(null,!0)}),s.queue(r,l.isString(_)?_:"",[])),"stop"===p?(g(r)&&g(r).tweensContainer&&!1!==i&&s.each(g(r).tweensContainer,function(e,t){t.endValue=t.currentValue}),x.push(e)):"finish"!==p&&"finishAll"!==p||(t[2].duration=1))})})}),"stop"===p&&(s.each(x,function(e,t){E(t,!0)}),T.promise&&T.resolver(f)),e();default:if(!s.isPlainObject(p)||l.isEmptyObject(p)){if(l.isString(p)&&d.Redirects[p]){var R=(I=s.extend({},_)).duration,k=I.delay||0;return!0===I.backwards&&(f=s.extend(!0,[],f).reverse()),s.each(f,function(e,t){parseFloat(I.stagger)?I.delay=k+parseFloat(I.stagger)*e:l.isFunction(I.stagger)&&(I.delay=k+I.stagger.call(t,e,C)),I.drag&&(I.duration=parseFloat(R)||(/^(callout|transition)/.test(p)?1e3:c),I.duration=Math.max(I.duration*(I.backwards?1-e/C:(e+1)/C),.75*I.duration,200)),d.Redirects[p].call(t,t,I||{},e,C,f,T.promise?T:r)}),e()}var N="Velocity: First argument ("+p+") was not a property map, a known action, or a registered redirect. Aborting.";return T.promise?T.rejecter(new Error(N)):console.log(N),e()}w="start"}var I,O,A={lastParent:null,lastPosition:null,lastFontSize:null,lastPercentToPxWidth:null,lastPercentToPxHeight:null,lastEmToPx:null,remToPx:null,vwToPx:null,vhToPx:null},M=[];if(s.each(f,function(e,o){l.isNode(o)&&function(){var e,o=this,i=s.extend({},d.defaults,_),a={};switch(g(o)===r&&d.init(o),parseFloat(i.delay)&&!1!==i.queue&&s.queue(o,i.queue,function(e){d.velocityQueueEntryFlag=!0,g(o).delayTimer={setTimeout:setTimeout(e,parseFloat(i.delay)),next:e}}),i.duration.toString().toLowerCase()){case"fast":i.duration=200;break;case"normal":i.duration=c;break;case"slow":i.duration=600;break;default:i.duration=parseFloat(i.duration)||1}function u(u){if(i.begin&&0===S)try{i.begin.call(f,f)}catch(e){setTimeout(function(){throw e},1)}if("scroll"===w){var c,h,v,E=/^x$/i.test(i.axis)?"Left":"Top",D=parseFloat(i.offset)||0;i.container?l.isWrapped(i.container)||l.isNode(i.container)?(i.container=i.container[0]||i.container,v=(c=i.container["scroll"+E])+s(o).position()[E.toLowerCase()]+D):i.container=null:(c=d.State.scrollAnchor[d.State["scrollProperty"+E]],h=d.State.scrollAnchor[d.State["scrollProperty"+("Left"===E?"Top":"Left")]],v=s(o).offset()[E.toLowerCase()]+D),a={scroll:{rootPropertyValue:!1,startValue:c,currentValue:c,endValue:v,unitType:"",easing:i.easing,scrollData:{container:i.container,direction:E,alternateValue:h}},element:o},d.debug&&console.log("tweensContainer (scroll): ",a.scroll,o)}else if("reverse"===w){if(!g(o).tweensContainer)return void s.dequeue(o,i.queue);"none"===g(o).opts.display&&(g(o).opts.display="auto"),"hidden"===g(o).opts.visibility&&(g(o).opts.visibility="visible"),g(o).opts.loop=!1,g(o).opts.begin=null,g(o).opts.complete=null,_.easing||delete i.easing,_.duration||delete i.duration,i=s.extend({},g(o).opts,i);var x=s.extend(!0,{},g(o).tweensContainer);for(var R in x)if("element"!==R){var k=x[R].startValue;x[R].startValue=x[R].currentValue=x[R].endValue,x[R].endValue=k,l.isEmptyObject(_)||(x[R].easing=i.easing),d.debug&&console.log("reverse tweensContainer ("+R+"): "+JSON.stringify(x[R]),o)}a=x}else if("start"===w){function N(e,t){var n=r,a=r,s=r;return l.isArray(e)?(n=e[0],!l.isArray(e[1])&&/^[\d-]/.test(e[1])||l.isFunction(e[1])||m.RegEx.isHex.test(e[1])?s=e[1]:(l.isString(e[1])&&!m.RegEx.isHex.test(e[1])||l.isArray(e[1]))&&(a=t?e[1]:y(e[1],i.duration),e[2]!==r&&(s=e[2]))):n=e,t||(a=a||i.easing),l.isFunction(n)&&(n=n.call(o,S,C)),l.isFunction(s)&&(s=s.call(o,S,C)),[n||0,a,s]}for(var I in g(o).tweensContainer&&!0===g(o).isAnimating&&(x=g(o).tweensContainer),s.each(p,function(e,t){if(RegExp("^"+m.Lists.colors.join("$|^")+"$").test(e)){var n=N(t,!0),o=n[0],i=n[1],a=n[2];if(m.RegEx.isHex.test(o)){for(var s=["Red","Green","Blue"],l=m.Values.hexToRgb(o),u=a?m.Values.hexToRgb(a):r,c=0;c<s.length;c++){var f=[l[c]];i&&f.push(i),u!==r&&f.push(u[c]),p[e+s[c]]=f}delete p[e]}}}),p){var O=N(p[I]),P=O[0],L=O[1],F=O[2];I=m.Names.camelCase(I);var U=m.Hooks.getRoot(I),j=!1;if(g(o).isSVG||"tween"===U||!1!==m.Names.prefixCheck(U)[1]||m.Normalizations.registered[U]!==r){(i.display!==r&&null!==i.display&&"none"!==i.display||i.visibility!==r&&"hidden"!==i.visibility)&&/opacity|filter/.test(I)&&!F&&0!==P&&(F=0),i._cacheValues&&x&&x[I]?(F===r&&(F=x[I].endValue+x[I].unitType),j=g(o).rootPropertyValueCache[U]):m.Hooks.registered[I]?F===r?(j=m.getPropertyValue(o,U),F=m.getPropertyValue(o,I,j)):j=m.Hooks.templates[U][1]:F===r&&(F=m.getPropertyValue(o,I));var B,G,q,V=!1;if(F=(B=Y(I,F))[0],q=B[1],P=(B=Y(I,P))[0].replace(/^([+-\/*])=/,function(e,t){return V=t,""}),G=B[1],F=parseFloat(F)||0,P=parseFloat(P)||0,"%"===G&&(/^(fontSize|lineHeight)$/.test(I)?(P/=100,G="em"):/^scale/.test(I)?(P/=100,G=""):/(Red|Green|Blue)$/i.test(I)&&(P=P/100*255,G="")),/[\/*]/.test(V))G=q;else if(q!==G&&0!==F)if(0===P)G=q;else{e=e||z();var H=/margin|padding|left|right|width|text|word|letter/i.test(I)||/X$/.test(I)||"x"===I?"x":"y";switch(q){case"%":F*="x"===H?e.percentToPxWidth:e.percentToPxHeight;break;case"px":break;default:F*=e[q+"ToPx"]}switch(G){case"%":F*=1/("x"===H?e.percentToPxWidth:e.percentToPxHeight);break;case"px":break;default:F*=1/e[G+"ToPx"]}}switch(V){case"+":P=F+P;break;case"-":P=F-P;break;case"*":P*=F;break;case"/":P=F/P}a[I]={rootPropertyValue:j,startValue:F,currentValue:F,endValue:P,unitType:G,easing:L},d.debug&&console.log("tweensContainer ("+I+"): "+JSON.stringify(a[I]),o)}else d.debug&&console.log("Skipping ["+U+"] due to a lack of browser support.");function Y(e,t){var n,r;return r=(t||"0").toString().toLowerCase().replace(/[%A-z]+$/,function(e){return n=e,""}),n||(n=m.Values.getUnitType(e)),[r,n]}function z(){var e={myParent:o.parentNode||n.body,position:m.getPropertyValue(o,"position"),fontSize:m.getPropertyValue(o,"fontSize")},r=e.position===A.lastPosition&&e.myParent===A.lastParent,i=e.fontSize===A.lastFontSize;A.lastParent=e.myParent,A.lastPosition=e.position,A.lastFontSize=e.fontSize;var a={};if(i&&r)a.emToPx=A.lastEmToPx,a.percentToPxWidth=A.lastPercentToPxWidth,a.percentToPxHeight=A.lastPercentToPxHeight;else{var l=g(o).isSVG?n.createElementNS("http://www.w3.org/2000/svg","rect"):n.createElement("div");d.init(l),e.myParent.appendChild(l),s.each(["overflow","overflowX","overflowY"],function(e,t){d.CSS.setPropertyValue(l,t,"hidden")}),d.CSS.setPropertyValue(l,"position",e.position),d.CSS.setPropertyValue(l,"fontSize",e.fontSize),d.CSS.setPropertyValue(l,"boxSizing","content-box"),s.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(e,t){d.CSS.setPropertyValue(l,t,"100%")}),d.CSS.setPropertyValue(l,"paddingLeft","100em"),a.percentToPxWidth=A.lastPercentToPxWidth=(parseFloat(m.getPropertyValue(l,"width",null,!0))||1)/100,a.percentToPxHeight=A.lastPercentToPxHeight=(parseFloat(m.getPropertyValue(l,"height",null,!0))||1)/100,a.emToPx=A.lastEmToPx=(parseFloat(m.getPropertyValue(l,"paddingLeft"))||1)/100,e.myParent.removeChild(l)}return null===A.remToPx&&(A.remToPx=parseFloat(m.getPropertyValue(n.body,"fontSize"))||16),null===A.vwToPx&&(A.vwToPx=parseFloat(t.innerWidth)/100,A.vhToPx=parseFloat(t.innerHeight)/100),a.remToPx=A.remToPx,a.vwToPx=A.vwToPx,a.vhToPx=A.vhToPx,d.debug>=1&&console.log("Unit ratios: "+JSON.stringify(a),o),a}}a.element=o}a.element&&(m.Values.addClass(o,"velocity-animating"),M.push(a),""===i.queue&&(g(o).tweensContainer=a,g(o).opts=i),g(o).isAnimating=!0,S===C-1?(d.State.calls.push([M,f,i,null,T.resolver]),!1===d.State.isTicking&&(d.State.isTicking=!0,b())):S++)}!1!==d.mock&&(!0===d.mock?i.duration=i.delay=1:(i.duration*=parseFloat(d.mock)||1,i.delay*=parseFloat(d.mock)||1)),i.easing=y(i.easing,i.duration),i.begin&&!l.isFunction(i.begin)&&(i.begin=null),i.progress&&!l.isFunction(i.progress)&&(i.progress=null),i.complete&&!l.isFunction(i.complete)&&(i.complete=null),i.display!==r&&null!==i.display&&(i.display=i.display.toString().toLowerCase(),"auto"===i.display&&(i.display=d.CSS.Values.getDisplayType(o))),i.visibility!==r&&null!==i.visibility&&(i.visibility=i.visibility.toString().toLowerCase()),i.mobileHA=i.mobileHA&&d.State.isMobile&&!d.State.isGingerbread,!1===i.queue?i.delay?setTimeout(u,i.delay):u():s.queue(o,i.queue,function(e,t){if(!0===t)return T.promise&&T.resolver(f),!0;d.velocityQueueEntryFlag=!0,u()}),""!==i.queue&&"fx"!==i.queue||"inprogress"===s.queue(o)[0]||s.dequeue(o)}.call(o)}),(I=s.extend({},d.defaults,_)).loop=parseInt(I.loop),O=2*I.loop-1,I.loop)for(var P=0;P<O;P++){var L={delay:I.delay,progress:I.progress};P===O-1&&(L.display=I.display,L.visibility=I.visibility,L.complete=I.complete),h(f,"reverse",L)}return e()}};(d=s.extend(h,d)).animate=h;var _=t.requestAnimationFrame||i;return d.State.isMobile||n.hidden===r||n.addEventListener("visibilitychange",function(){n.hidden?(_=function(e){return setTimeout(function(){e(!0)},16)},b()):_=t.requestAnimationFrame||i}),e.Velocity=d,e!==t&&(e.fn.velocity=h,e.fn.velocity.defaults=d.defaults),s.each(["Down","Up"],function(e,t){d.Redirects["slide"+t]=function(e,n,o,i,a,l){var u=s.extend({},n),c=u.begin,f=u.complete,p={height:"",marginTop:"",marginBottom:"",paddingTop:"",paddingBottom:""},m={};u.display===r&&(u.display="Down"===t?"inline"===d.CSS.Values.getDisplayType(e)?"inline-block":"block":"none"),u.begin=function(){for(var n in c&&c.call(a,a),p){m[n]=e.style[n];var r=d.CSS.getPropertyValue(e,n);p[n]="Down"===t?[r,0]:[0,r]}m.overflow=e.style.overflow,e.style.overflow="hidden"},u.complete=function(){for(var t in m)e.style[t]=m[t];f&&f.call(a,a),l&&l.resolver(a)},d(e,p,u)}}),s.each(["In","Out"],function(e,t){d.Redirects["fade"+t]=function(e,n,o,i,a,l){var u=s.extend({},n),c={opacity:"In"===t?1:0},f=u.complete;u.complete=o!==i-1?u.begin=null:function(){f&&f.call(a,a),l&&l.resolver(a)},u.display===r&&(u.display="In"===t?"auto":"none"),d(this,c,u)}}),d}function g(e){var t=s.data(e,"velocity");return null===t?r:t}function v(e,n,r,o){var i=4,a=.001,s=1e-7,l=10,u=11,c=1/(u-1),f="Float32Array"in t;if(4!==arguments.length)return!1;for(var d=0;d<4;++d)if("number"!=typeof arguments[d]||isNaN(arguments[d])||!isFinite(arguments[d]))return!1;e=Math.min(e,1),r=Math.min(r,1),e=Math.max(e,0),r=Math.max(r,0);var p=f?new Float32Array(u):new Array(u);function m(e,t){return 1-3*t+3*e}function h(e,t){return 3*t-6*e}function _(e){return 3*e}function g(e,t,n){return((m(t,n)*e+h(t,n))*e+_(t))*e}function v(e,t,n){return 3*m(t,n)*e*e+2*h(t,n)*e+_(t)}function y(t){for(var n=0,o=1,f=u-1;o!=f&&p[o]<=t;++o)n+=c;var d=n+(t-p[--o])/(p[o+1]-p[o])*c,m=v(d,e,r);return m>=a?function(t,n){for(var o=0;o<i;++o){var a=v(n,e,r);if(0===a)return n;n-=(g(n,e,r)-t)/a}return n}(t,d):0==m?d:function(t,n,o){var i,a,u=0;do{(i=g(a=n+(o-n)/2,e,r)-t)>0?o=a:n=a}while(Math.abs(i)>s&&++u<l);return a}(t,n,n+c)}var b=!1;function E(){b=!0,e==n&&r==o||function(){for(var t=0;t<u;++t)p[t]=g(t*c,e,r)}()}var C=function(t){return b||E(),e===n&&r===o?t:0===t?0:1===t?1:g(y(t),n,o)};C.getControlPoints=function(){return[{x:e,y:n},{x:r,y:o}]};var S="generateBezier("+[e,n,r,o]+")";return C.toString=function(){return S},C}function y(e,t){var n=e;return l.isString(e)?d.Easings[e]||(n=!1):n=l.isArray(e)&&1===e.length?function(e){return function(t){return Math.round(t*e)*(1/e)}}.apply(null,e):l.isArray(e)&&2===e.length?p.apply(null,e.concat([t])):!(!l.isArray(e)||4!==e.length)&&v.apply(null,e),!1===n&&(n=d.Easings[d.defaults.easing]?d.defaults.easing:f),n}function b(e){if(e){var t=(new Date).getTime(),n=d.State.calls.length;n>1e4&&(d.State.calls=function(e){for(var t=-1,n=e?e.length:0,r=[];++t<n;){var o=e[t];o&&r.push(o)}return r}(d.State.calls));for(var o=0;o<n;o++)if(d.State.calls[o]){var i=d.State.calls[o],a=i[0],u=i[2],c=i[3],f=!!c,p=null;c||(c=d.State.calls[o][3]=t-16);for(var h=Math.min((t-c)/u.duration,1),v=0,y=a.length;v<y;v++){var C=a[v],S=C.element;if(g(S)){var D=!1;if(u.display!==r&&null!==u.display&&"none"!==u.display){if("flex"===u.display){s.each(["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"],function(e,t){m.setPropertyValue(S,"display",t)})}m.setPropertyValue(S,"display",u.display)}for(var w in u.visibility!==r&&"hidden"!==u.visibility&&m.setPropertyValue(S,"visibility",u.visibility),C)if("element"!==w){var T,x=C[w],R=l.isString(x.easing)?d.Easings[x.easing]:x.easing;if(1===h)T=x.endValue;else{var k=x.endValue-x.startValue;if(T=x.startValue+k*R(h,u,k),!f&&T===x.currentValue)continue}if(x.currentValue=T,"tween"===w)p=T;else{if(m.Hooks.registered[w]){var N=m.Hooks.getRoot(w),I=g(S).rootPropertyValueCache[N];I&&(x.rootPropertyValue=I)}var O=m.setPropertyValue(S,w,x.currentValue+(0===parseFloat(T)?"":x.unitType),x.rootPropertyValue,x.scrollData);m.Hooks.registered[w]&&(m.Normalizations.registered[N]?g(S).rootPropertyValueCache[N]=m.Normalizations.registered[N]("extract",null,O[1]):g(S).rootPropertyValueCache[N]=O[1]),"transform"===O[0]&&(D=!0)}}u.mobileHA&&g(S).transformCache.translate3d===r&&(g(S).transformCache.translate3d="(0px, 0px, 0px)",D=!0),D&&m.flushTransformCache(S)}}u.display!==r&&"none"!==u.display&&(d.State.calls[o][2].display=!1),u.visibility!==r&&"hidden"!==u.visibility&&(d.State.calls[o][2].visibility=!1),u.progress&&u.progress.call(i[1],i[1],h,Math.max(0,c+u.duration-t),c,p),1===h&&E(o)}}d.State.isTicking&&_(b)}function E(e,t){if(!d.State.calls[e])return!1;for(var n=d.State.calls[e][0],o=d.State.calls[e][1],i=d.State.calls[e][2],a=d.State.calls[e][4],l=!1,u=0,c=n.length;u<c;u++){var f=n[u].element;if(t||i.loop||("none"===i.display&&m.setPropertyValue(f,"display",i.display),"hidden"===i.visibility&&m.setPropertyValue(f,"visibility",i.visibility)),!0!==i.loop&&(s.queue(f)[1]===r||!/\.velocityQueueEntryFlag/i.test(s.queue(f)[1]))&&g(f)){g(f).isAnimating=!1,g(f).rootPropertyValueCache={};var p=!1;s.each(m.Lists.transforms3D,function(e,t){var n=/^scale/.test(t)?1:0,o=g(f).transformCache[t];g(f).transformCache[t]!==r&&new RegExp("^\\("+n+"[^.]").test(o)&&(p=!0,delete g(f).transformCache[t])}),i.mobileHA&&(p=!0,delete g(f).transformCache.translate3d),p&&m.flushTransformCache(f),m.Values.removeClass(f,"velocity-animating")}if(!t&&i.complete&&!i.loop&&u===c-1)try{i.complete.call(o,o)}catch(e){setTimeout(function(){throw e},1)}a&&!0!==i.loop&&a(o),g(f)&&!0===i.loop&&!t&&(s.each(g(f).tweensContainer,function(e,t){/^rotate/.test(e)&&360===parseFloat(t.endValue)&&(t.endValue=0,t.startValue=360),/^backgroundPosition/.test(e)&&100===parseFloat(t.endValue)&&"%"===t.unitType&&(t.endValue=0,t.startValue=100)}),d(f,"reverse",{loop:!0,delay:i.delay})),!1!==i.queue&&s.dequeue(f,i.queue)}d.State.calls[e]=!1;for(var h=0,_=d.State.calls.length;h<_;h++)if(!1!==d.State.calls[h]){l=!0;break}!1===l&&(d.State.isTicking=!1,delete d.State.calls,d.State.calls=[])}jQuery.fn.velocity=jQuery.fn.animate}(window.jQuery||window.Zepto||window,window,document)})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=_(n(11)),o=_(n(12)),i=_(n(13)),a=_(n(4)),s=_(n(5)),l=_(n(40)),u=_(n(14));t.containsEmoji=w,t.charactersToImageNode=function(e,t){for(var n=arguments.length,r=Array(n>2?n-2:0),o=2;o<n;o++)r[o-2]=arguments[o];var i=r.map(function(e){return e.toString(16)}).join("-"),a=t?d.default.imagePathSVG:d.default.imagePathPNG,s=t?"svg":"png";return g.createElement("img",{alt:e,src:""+a+i+"."+s+d.default.cacheBustParam})},t.processHtmlForSending=function(e){var t=document.createElement("div");if(t.innerHTML=e,0===t.children.length)return t.innerHTML;for(var n="",r=0;r<t.children.length;r++){var o=t.children[r];if("p"===o.tagName.toLowerCase())n+=o.innerHTML,r!==t.children.length-1&&(n+="<br />");else{var i=document.createElement("div");i.appendChild(o.cloneNode(!0)),n+=i.innerHTML}}return n},t.sanitizedHtmlNode=function(e){var t=v(e,R);return g.createElement("div",{dangerouslySetInnerHTML:{__html:t},dir:"auto"})},t.isUrlPermitted=function(e){try{var t=h.default.parse(e);return!!t.protocol&&D.includes(t.protocol.slice(0,-1))}catch(e){return!1}},t.bodyToHtml=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r="org.matrix.custom.html"===e.format&&e.formatted_body,o=void 0===n.emojiOne||n.emojiOne,i=!1,a=R;n.forComposerQuote&&(a=k);var s=void 0,l=void 0,u=void 0;try{if(t&&t.length>0){var d=new I("mx_EventTile_searchHighlight",n.highlightLink),m=t.map(function(e){return v(e,a)});a.textFilter=function(e){return d.applyHighlights(e,m).join("")}}var h=e.formatted_body;n.stripReplyFallback&&h&&(h=c.default.stripHTMLReply(h)),s=n.stripReplyFallback?c.default.stripPlainReply(e.body):e.body,o&&(i=w(r?h:e.body)),r?(u=!0,l=v(h,a)):i&&(u=!0,l=v((0,f.default)(s),a)),i&&(l=T(l))}finally{delete a.textFilter}if(n.returnString)return u?l:s;var _=!1;if(!n.disableBigEmoji&&i){C.lastIndex=0;var y=void 0!==s?s.trim():"",b=C.exec(y);_=b&&b[0]&&b[0].length===y.length}var E=(0,p.default)({mx_EventTile_body:!0,mx_EventTile_bigEmoji:_,"markdown-body":r});return u?g.createElement("span",{className:E,dangerouslySetInnerHTML:{__html:l},dir:"auto"}):g.createElement("span",{className:E,dir:"auto"},s)},t.emojifyText=function(e){return{__html:T((0,f.default)(e))}};var c=_(n(241)),f=_(n(626)),d=_(n(299)),p=_(n(24)),m=_(n(8)),h=_(n(89));function _(e){return e&&e.__esModule?e:{default:e}}var g=n(0),v=n(234),y=(n(426),n(129));d.default.imagePathSVG="emojione/svg/",d.default.imagePathPNG="emojione/png/",d.default.imageType="svg";var b=/([\ud800-\udbff])([\udc00-\udfff])/,E=/([\u2100-\u2bff])/,C=new RegExp(d.default.unicodeRegexp+"+","gi"),S=/^#[0-9a-fA-F]{6}$/,D=["http","https","ftp","mailto","magnet"];function w(e){return b.test(e)||E.test(e)}function T(e){var t=void 0,n=void 0,r=void 0,o=void 0,i=d.default.mapUnicodeToShort();return e=e.replace(d.default.regUnicode,function(e){if(void 0!==e&&""!==e&&e in d.default.jsEscapeMap){t=d.default.jsEscapeMap[e],r=i[t],o=d.default.emojioneList[r].fname,n=d.default.unicodeAlt?d.default.convert(t.toUpperCase()):i[t];var a=i[t];return'<img class="mx_emojione" title="'+a+'" alt="'+n+'" src="'+d.default.imagePathSVG+o+".svg"+d.default.cacheBustParam+'"/>'}return e})}var x={a:function(e,t){if(t.href){t.target="_blank";var n=void 0;if(n=t.href.match(y.VECTOR_URL_PATTERN))t.href=n[1],delete t.target;else if(n=t.href.match(y.MATRIXTO_URL_PATTERN)){var r=n[1];switch(r[0]){case"@":t.href="#/user/"+r;break;case"+":t.href="#/group/"+r;break;case"#":case"!":t.href="#/room/"+r}delete t.target}}return t.rel="noopener",{tagName:e,attribs:t}},img:function(e,t){return t.src&&t.src.startsWith("mxc://")?(t.src=m.default.get().mxcUrlToHttp(t.src,t.width||800,t.height||600),{tagName:e,attribs:t}):{tagName:e,attribs:{}}},code:function(e,t){if(void 0!==t.class){var n=t.class.split(/\s+/).filter(function(e){return e.startsWith("language-")});t.class=n.join(" ")}return{tagName:e,attribs:t}},"*":function(e,t){delete t.style;var n={"data-mx-color":"color","data-mx-bg-color":"background-color"},r="";return(0,u.default)(n).forEach(function(e){var o=n[e],i=t[e];i&&"string"==typeof i&&S.test(i)&&(r+=o+":"+i+";",delete t[e])}),r&&(t.style=r),{tagName:e,attribs:t}}},R={allowedTags:["font","del","h1","h2","h3","h4","h5","h6","blockquote","p","a","ul","ol","sup","sub","nl","li","b","i","u","strong","em","strike","code","hr","br","div","table","thead","caption","tbody","tr","th","td","pre","span","img"],allowedAttributes:{font:["color","data-mx-bg-color","data-mx-color","style"],span:["data-mx-bg-color","data-mx-color","style"],a:["href","name","target","rel"],img:["src","width","height","alt","title"],ol:["start"],code:["class"]},selfClosing:["img","br","hr","area","base","basefont","input","link","meta"],allowedSchemes:D,allowProtocolRelative:!1,transformTags:x},k=(0,l.default)({},R);k.transformTags={code:x.code,"*":x["*"]};var N=function(){function e(t,n){(0,a.default)(this,e),this.highlightClass=t,this.highlightLink=n}return(0,s.default)(e,[{key:"applyHighlights",value:function(e,t){for(var n=0,r=void 0,o=[],i=t[0];(r=e.toLowerCase().indexOf(i.toLowerCase(),n))>=0;){if(r>n){var a=e.substring(n,r);o=o.concat(this._applySubHighlights(a,t))}var s=r+i.length;o.push(this._processSnippet(e.substring(r,s),!0)),n=s}return n!==e.length&&(a=e.substring(n,void 0),o=o.concat(this._applySubHighlights(a,t))),o}},{key:"_applySubHighlights",value:function(e,t){return t[1]?this.applyHighlights(e,t.slice(1)):[this._processSnippet(e,!1)]}}]),e}(),I=function(e){function t(){return(0,a.default)(this,t),(0,o.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,i.default)(t,e),(0,s.default)(t,[{key:"_processSnippet",value:function(e,t){if(!t)return e;var n='<span class="'+this.highlightClass+'">'+e+"</span>";return this.highlightLink&&(n='<a href="'+encodeURI(this.highlightLink)+'">'+n+"</a>"),n}}]),t}(N);!function(e){function t(e,n){(0,a.default)(this,t);var i=(0,o.default)(this,(t.__proto__||(0,r.default)(t)).call(this,e,n));return i._key=0,i}(0,i.default)(t,e),(0,s.default)(t,[{key:"_processSnippet",value:function(e,t){var n=this._key++,r=g.createElement("span",{key:n,className:t?this.highlightClass:null},e);return t&&this.highlightLink&&(r=g.createElement("a",{key:n,href:this.highlightLink},r)),r}}])}(N)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=b(n(51)),o=b(n(19)),i=n(9),a=b(n(11)),s=b(n(4)),l=b(n(5)),u=b(n(12)),c=b(n(13)),f=b(n(0)),d=b(n(3)),p=n(2),m=b(n(1)),h=b(n(10)),_=n(143),g=n(17),v=n(79),y=b(n(22));function b(e){return e&&e.__esModule?e:{default:e}}var E=function(e){function t(e,n){(0,s.default)(this,t);var r=(0,u.default)(this,(t.__proto__||(0,a.default)(t)).call(this,e,n));return r.state={events:[],loadedEv:null,loading:!0,err:!1},r.onQuoteClick=r.onQuoteClick.bind(r),r.canCollapse=r.canCollapse.bind(r),r.collapse=r.collapse.bind(r),r}return(0,c.default)(t,e),(0,l.default)(t,[{key:"componentWillMount",value:function(){this.unmounted=!1,this.room=this.context.matrixClient.getRoom(this.props.parentEv.getRoomId()),this.initialize()}},{key:"componentDidUpdate",value:function(){this.props.onWidgetLoad()}},{key:"componentWillUnmount",value:function(){this.unmounted=!0}},{key:"initialize",value:function(){var e=(0,i.coroutine)(o.default.mark(function e(){var n,r;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=this.props.parentEv,e.next=3,(0,i.resolve)(this.getEvent(t.getParentEventId(n)));case 3:if(r=e.sent,!this.unmounted){e.next=6;break}return e.abrupt("return");case 6:r?this.setState({events:[r]},this.loadNextEvent):this.setState({err:!0});case 7:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"loadNextEvent",value:function(){var e=(0,i.coroutine)(o.default.mark(function e(){var n,r,a;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.unmounted){e.next=2;break}return e.abrupt("return");case 2:if(n=this.state.events[0],r=t.getParentEventId(n)){e.next=7;break}return this.setState({loading:!1}),e.abrupt("return");case 7:return e.next=9,(0,i.resolve)(this.getEvent(r));case 9:if(a=e.sent,!this.unmounted){e.next=12;break}return e.abrupt("return");case 12:a?this.setState({loadedEv:a}):this.setState({err:!0});case 13:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"getEvent",value:function(){var e=(0,i.coroutine)(o.default.mark(function e(t){var n;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=this.room.findEventById(t))){e.next=3;break}return e.abrupt("return",n);case 3:return e.prev=3,e.next=6,(0,i.resolve)(this.context.matrixClient.getEventTimeline(this.room.getUnfilteredTimelineSet(),t));case 6:e.next=11;break;case 8:return e.prev=8,e.t0=e.catch(3),e.abrupt("return",null);case 11:return e.abrupt("return",this.room.findEventById(t));case 12:case"end":return e.stop()}},e,this,[[3,8]])}));return function(t){return e.apply(this,arguments)}}()},{key:"canCollapse",value:function(){return this.state.events.length>1}},{key:"collapse",value:function(){this.initialize()}},{key:"onQuoteClick",value:function(){var e=[this.state.loadedEv].concat((0,r.default)(this.state.events));this.setState({loadedEv:null,events:e},this.loadNextEvent),h.default.dispatch({action:"focus_composer"})}},{key:"render",value:function(){var e=this,t=null;if(this.state.err)t=f.default.createElement("blockquote",{className:"mx_ReplyThread mx_ReplyThread_error"},(0,p._t)("Unable to load event that was replied to, it either does not exist or you do not have permission to view it."));else if(this.state.loadedEv){var n=this.state.loadedEv,r=d.default.getComponent("elements.Pill"),o=this.context.matrixClient.getRoom(n.getRoomId());t=f.default.createElement("blockquote",{className:"mx_ReplyThread"},(0,p._t)("<a>In reply to</a> <pill>",{},{a:function(t){return f.default.createElement("a",{onClick:e.onQuoteClick,className:"mx_ReplyThread_show"},t)},pill:f.default.createElement(r,{type:r.TYPE_USER_MENTION,room:o,url:(0,v.makeUserPermalink)(n.getSender()),shouldShowPillAvatar:!0})}))}else if(this.state.loading){var i=d.default.getComponent("elements.Spinner");t=f.default.createElement(i,{w:16,h:16})}var a=d.default.getComponent("views.rooms.EventTile"),s=d.default.getComponent("messages.DateSeparator"),l=this.state.events.map(function(t){var n=null;return(0,_.wantsDateSeparator)(e.props.parentEv.getDate(),t.getDate())&&(n=f.default.createElement("a",{href:e.props.url},f.default.createElement(s,{ts:t.getTs()}))),f.default.createElement("blockquote",{className:"mx_ReplyThread",key:t.getId()},n,f.default.createElement(a,{mxEvent:t,tileShape:"reply",onWidgetLoad:e.props.onWidgetLoad,isTwelveHour:y.default.getValue("showTwelveHourTimestamps")}))});return f.default.createElement("div",null,f.default.createElement("div",null,t),f.default.createElement("div",null,l))}}],[{key:"getParentEventId",value:function(e){if(e&&!e.isRedacted()){var t=e.getWireContent()["m.relates_to"];if(t&&t["m.in_reply_to"]){var n=t["m.in_reply_to"];if(n&&n.event_id)return n.event_id}}}},{key:"stripPlainReply",value:function(e){for(var t=e.split("\n");t.length&&t[0].startsWith("> ");)t.shift();return""===t[0]&&t.shift(),t.join("\n")}},{key:"stripHTMLReply",value:function(e){return e.replace(/^<mx-reply>[\s\S]+?<\/mx-reply>/,"")}},{key:"getNestedReplyText",value:function(e){if(!e)return null;var t=e.getContent(),n=t.body,r=t.formatted_body;this.getParentEventId(e)&&(n&&(n=this.stripPlainReply(n)),r&&(r=this.stripHTMLReply(r)));var o=(0,v.makeEventPermalink)(e.getRoomId(),e.getId()),i=(0,v.makeUserPermalink)(e.getSender()),a=e.getSender();switch(e.getContent().msgtype){case"m.text":case"m.notice":r='<mx-reply><blockquote><a href="'+o+'">In reply to</a> <a href="'+i+'">'+a+"</a><br>"+(r||n)+"</blockquote></mx-reply>";var s=n.trim().split("\n");s.length>0&&(s[0]="<"+a+"> "+s[0],n=s.map(function(e){return"> "+e}).join("\n")+"\n\n");break;case"m.image":r='<mx-reply><blockquote><a href="'+o+'">In reply to</a> <a href="'+i+'">'+a+"</a><br>sent an image.</blockquote></mx-reply>",n="> <"+a+"> sent an image.\n\n";break;case"m.video":r='<mx-reply><blockquote><a href="'+o+'">In reply to</a> <a href="'+i+'">'+a+"</a><br>sent a video.</blockquote></mx-reply>",n="> <"+a+"> sent a video.\n\n";break;case"m.audio":r='<mx-reply><blockquote><a href="'+o+'">In reply to</a> <a href="'+i+'">'+a+"</a><br>sent an audio file.</blockquote></mx-reply>",n="> <"+a+"> sent an audio file.\n\n";break;case"m.file":r='<mx-reply><blockquote><a href="'+o+'">In reply to</a> <a href="'+i+'">'+a+"</a><br>sent a file.</blockquote></mx-reply>",n="> <"+a+"> sent a file.\n\n";break;case"m.emote":r='<mx-reply><blockquote><a href="'+o+'">In reply to</a> * <a href="'+i+'">'+a+"</a><br>"+(r||n)+"</blockquote></mx-reply>";var l=n.trim().split("\n");l.length>0&&(l[0]="* <"+a+"> "+l[0],n=l.map(function(e){return"> "+e}).join("\n")+"\n\n");break;default:return null}return{body:n,html:r}}},{key:"makeReplyMixIn",value:function(e){return e?{"m.relates_to":{"m.in_reply_to":{event_id:e.getId()}}}:{}}},{key:"makeThread",value:function(e,n,r){return t.getParentEventId(e)?f.default.createElement(t,{parentEv:e,onWidgetLoad:n,ref:r}):f.default.createElement("div",null)}}]),t}(f.default.Component);E.propTypes={parentEv:m.default.instanceOf(g.MatrixEvent),onWidgetLoad:m.default.func.isRequired},E.contextTypes={matrixClient:m.default.instanceOf(g.MatrixClient).isRequired},t.default=E,e.exports=t.default},function(e,t,n){var r=n(195),o=n(144),i="[object Symbol]";e.exports=function(e){return"symbol"==typeof e||o(e)&&r(e)==i}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GroupRoomType=t.GroupMemberType=void 0,t.groupMemberFromApiObject=function(e){return{userId:e.user_id,displayname:e.displayname,avatarUrl:e.avatar_url,isPrivileged:e.is_privileged}},t.groupRoomFromApiObject=function(e){return{displayname:e.name||e.canonical_alias||(0,o._t)("Unnamed Room"),name:e.name,roomId:e.room_id,canonicalAlias:e.canonical_alias,avatarUrl:e.avatar_url,topic:e.topic,numJoinedMembers:e.num_joined_members,worldReadable:e.world_readable,guestCanJoin:e.guest_can_join,isPublic:!1!==e.is_public}};var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1)),o=n(2);t.GroupMemberType=r.default.shape({userId:r.default.string.isRequired,displayname:r.default.string,avatarUrl:r.default.string}),t.GroupRoomType=r.default.shape({displayname:r.default.string,name:r.default.string,roomId:r.default.string.isRequired,canonicalAlias:r.default.string,avatarUrl:r.default.string})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getCorners=t.offset=t.isEqual=t.addPosition=t.add=void 0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(37));t.add=function(e,t){return{top:e.top+t.top,left:e.left+t.left,right:e.right+t.right,bottom:e.bottom+t.bottom}},t.addPosition=function(e,t){return(0,r.default)({},e,{right:e.right+t.x,bottom:e.bottom+t.y})},t.isEqual=function(e,t){return e.top===t.top&&e.right===t.right&&e.bottom===t.bottom&&e.left===t.left},t.offset=function(e,t){return{top:e.top+t.y,right:e.right+t.x,bottom:e.bottom+t.y,left:e.left+t.x}},t.getCorners=function(e){return[{x:e.left,y:e.top},{x:e.right,y:e.top},{x:e.left,y:e.bottom},{x:e.right,y:e.bottom}]}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70);t.default=function(e){var t=e.source,n=e.sourceEdge,o=e.destination,i=e.destinationEdge,a=e.destinationAxis,s=function(e){return(0,r.patch)(a.line,e[a[i]],e[a.crossAxisStart])},l=s(o),u=(0,r.absolute)((0,r.subtract)(t.center,s(t))),c=(0,r.patch)(a.line,("end"===n?-1:1)*u[a.line],u[a.crossLine]);return(0,r.add)(l,c)}},function(e,t,n){e.exports.Container=n(1513),e.exports.MapStore=n(1515),e.exports.Mixin=n(1521),e.exports.ReduceStore=n(651),e.exports.Store=n(652)},function(e,t,n){"use strict";(function(r){Object.defineProperty(t,"__esModule",{value:!0});var o=f(n(11)),i=f(n(4)),a=f(n(5)),s=f(n(12)),l=f(n(13)),u=f(n(55)),c=f(n(8));function f(e){return e&&e.__esModule?e:{default:e}}var d=function(e){function t(){(0,i.default)(this,t);var e=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this));return e._persistentWidgetId=null,e._capsByWidgetId={},e._widgetMessagingByWidgetId={},e._roomIdByWidgetId={},e.onRoomStateEvents=e.onRoomStateEvents.bind(e),e.dispatcherRef=null,e}return(0,l.default)(t,e),(0,a.default)(t,[{key:"start",value:function(){c.default.get().on("RoomState.events",this.onRoomStateEvents)}},{key:"stop",value:function(){c.default.get()&&c.default.get().removeListener("RoomState.events",this.onRoomStateEvents),this._capsByWidgetId={},this._widgetMessagingByWidgetId={},this._roomIdByWidgetId={}}},{key:"onRoomStateEvents",value:function(e,t){"im.vector.modular.widgets"===e.getType()&&e.getStateKey()===this._persistentWidgetId&&this.destroyPersistentWidget()}},{key:"destroyPersistentWidget",value:function(){var e=this._persistentWidgetId;this.setWidgetPersistence(e,!1),this.delWidgetMessaging(e),this.delWidgetCapabilities(e),this.delRoomId(e)}},{key:"setWidgetPersistence",value:function(e,t){this._persistentWidgetId!==e||t?this._persistentWidgetId!==e&&t&&(this._persistentWidgetId=e):this._persistentWidgetId=null,this.emit("update")}},{key:"getWidgetPersistence",value:function(e){return this._persistentWidgetId===e}},{key:"getPersistentWidgetId",value:function(){return this._persistentWidgetId}},{key:"setWidgetCapabilities",value:function(e,t){this._capsByWidgetId[e]=t,this.emit("update")}},{key:"widgetHasCapability",value:function(e,t){return this._capsByWidgetId[e]&&this._capsByWidgetId[e].includes(t)}},{key:"delWidgetCapabilities",value:function(e){delete this._capsByWidgetId[e],this.emit("update")}},{key:"setWidgetMessaging",value:function(e,t){this._widgetMessagingByWidgetId[e]=t,this.emit("update")}},{key:"getWidgetMessaging",value:function(e){return this._widgetMessagingByWidgetId[e]}},{key:"delWidgetMessaging",value:function(e){if(this._widgetMessagingByWidgetId[e]){try{this._widgetMessagingByWidgetId[e].stop()}catch(e){console.error("Failed to stop listening for widgetMessaging events",e.message)}delete this._widgetMessagingByWidgetId[e],this.emit("update")}}},{key:"getRoomId",value:function(e){return this._roomIdByWidgetId[e]}},{key:"setRoomId",value:function(e,t){this._roomIdByWidgetId[e]=t,this.emit("update")}},{key:"delRoomId",value:function(e){delete this._roomIdByWidgetId[e],this.emit("update")}}]),t}(u.default);void 0===r.singletonActiveWidgetStore&&(r.singletonActiveWidgetStore=new d),t.default=r.singletonActiveWidgetStore,e.exports=t.default}).call(this,n(15))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(n(40));t.messageForResourceLimitError=i,t.messageForSyncError=function(e){if("M_RESOURCE_LIMIT_EXCEEDED"===e.errcode){var t=i(e.data.limit_type,e.data.admin_contact,{monthly_active_user:(0,o._td)("This homeserver has hit its Monthly Active User limit."),"":(0,o._td)("This homeserver has exceeded one of its resource limits.")}),n=i(e.data.limit_type,e.data.admin_contact,{"":(0,o._td)("Please <a>contact your service administrator</a> to continue using the service.")});return React.createElement("div",null,React.createElement("div",null,t),React.createElement("div",null,n))}return React.createElement("div",null,(0,o._t)("Unable to connect to Homeserver. Retrying..."))};var o=n(2);function i(e,t,n,i){var a=n[e];void 0===a&&(a=n[""]);return a.includes("<a>")?(0,o._t)(a,{},(0,r.default)({a:function(e){return t?React.createElement("a",{href:t,target:"_blank",rel:"noopener"},e):e}},i)):(0,o._t)(a,{},i)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(37));t.default=function(e){return i.default.createClass({displayName:"withMatrixClient<"+e.displayName+">",contextTypes:{matrixClient:a.default.instanceOf(o.MatrixClient).isRequired},render:function(){return i.default.createElement(e,(0,r.default)({},this.props,{matrixClient:this.context.matrixClient}))}})};var o=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(17)),i=s(n(0)),a=s(n(1));function s(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.formatCount=function(e){return e<1e3?e:e<1e4?(e/1e3).toFixed(1)+"K":e<1e5?(e/1e3).toFixed(0)+"K":e<1e7?(e/1e6).toFixed(1)+"M":e<1e8?(e/1e6).toFixed(0)+"M":(e/1e9).toFixed(1)+"B"},t.formatCryptoKey=function(e){return e.match(/.{1,4}/g).join(" ")}},function(e,t,n){e.exports=n(449)},function(e,t,n){var r=n(689),o=n(1716),i=n(253);e.exports=function(e){return i(e)?r(e):o(e)}},function(e,t,n){var r=n(633),o=n(466);e.exports=function(e){return null!=e&&o(e.length)&&!r(e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=f(n(20)),o=f(n(657)),i=f(n(4)),a=f(n(5)),s=f(n(1742)),l=f(n(694)),u=f(n(255)),c=f(n(428));function f(e){return e&&e.__esModule?e:{default:e}}function d(e){return e.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}var p=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,i.default)(this,e),this._options=n,this._keys=n.keys,this._funcs=n.funcs||[],this.setObjects(t),void 0===this._options.shouldMatchWordsOnly&&(this._options.shouldMatchWordsOnly=!0),void 0===this._options.shouldMatchPrefix&&(this._options.shouldMatchPrefix=!1)}return(0,a.default)(e,[{key:"setObjects",value:function(e){this._items=new o.default;var t=!0,n=!1,i=void 0;try{for(var a,l=(0,r.default)(e);!(t=(a=l.next()).done);t=!0){var u=a.value,c=(0,s.default)(u,this._keys),f=!0,p=!1,m=void 0;try{for(var h,_=(0,r.default)(this._funcs);!(f=(h=_.next()).done);f=!0){var g=h.value;c.push(g(u))}}catch(e){p=!0,m=e}finally{try{!f&&_.return&&_.return()}finally{if(p)throw m}}var v=!0,y=!1,b=void 0;try{for(var E,C=(0,r.default)(c);!(v=(E=C.next()).done);v=!0){var S=d(E.value).toLowerCase();this._items.has(S)||this._items.set(S,[]),this._items.get(S).push(u)}}catch(e){y=!0,b=e}finally{try{!v&&C.return&&C.return()}finally{if(y)throw b}}}}catch(e){n=!0,i=e}finally{try{!t&&l.return&&l.return()}finally{if(n)throw i}}}},{key:"match",value:function(e){var t=this;if(e=d(e).toLowerCase(),this._options.shouldMatchWordsOnly&&(e=e.replace(/[^\w]/g,"")),0===e.length)return[];var n=[],o=!0,i=!1,a=void 0;try{for(var s,f=(0,r.default)(this._items.keys());!(o=(s=f.next()).done);o=!0){var p=s.value,m=p;this._options.shouldMatchWordsOnly&&(m=m.replace(/[^\w]/g,""));var h=m.indexOf(e);-1===h||this._options.shouldMatchPrefix&&0!==h||n.push({key:p,index:h})}}catch(e){i=!0,a=e}finally{try{!o&&f.return&&f.return()}finally{if(i)throw a}}var _=(0,u.default)(n,function(e){return e.index});return(0,c.default)((0,l.default)(_,function(e){return t._items.get(e.key)}))}}]),e}();t.default=p,e.exports=t.default},function(e,t,n){var r=n(469),o=n(1749),i=n(1753),a=n(1754),s=i(function(e,t){if(null==e)return[];var n=t.length;return n>1&&a(e,t[0],t[1])?t=[]:n>2&&a(t[0],t[1],t[2])&&(t=[t[0]]),o(e,r(t,1),[])});e.exports=s},function(e,t,n){var r=n(472),o=n(709);e.exports=function(e,t,n,i){var a=!n;n||(n={});for(var s=-1,l=t.length;++s<l;){var u=t[s],c=i?i(n[u],e[u],u,n,e):void 0;void 0===c&&(c=e[u]),a?o(n,u,c):r(n,u,c)}return n}},function(e,t,n){var r=n(28),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});e.exports=function(e){return o[e]||(o[e]={})}},function(e,t,n){var r=n(83),o=n(50),i=n(154);e.exports=function(e){return function(t,n,a){var s,l=r(t),u=o(l.length),c=i(a,u);if(e&&n!=n){for(;u>c;)if((s=l[c++])!=s)return!0}else for(;u>c;c++)if((e||c in l)&&l[c]===n)return e||c||0;return!e&&-1}}},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){var r=n(92);e.exports=Array.isArray||function(e){return"Array"==r(e)}},function(e,t,n){var r=n(33),o=n(92),i=n(42)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[i])?!!t:"RegExp"==o(e))}},function(e,t,n){var r=n(42)("iterator"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!o)return!1;var n=!1;try{var i=[7],a=i[r]();a.next=function(){return{done:n=!0}},i[r]=function(){return a},e(i)}catch(e){}return n}},function(e,t,n){"use strict";var r=n(25);e.exports=function(){var e=r(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},function(e,t,n){"use strict";var r=n(73),o=n(74),i=n(30),a=n(107),s=n(42);e.exports=function(e,t,n){var l=s(e),u=n(a,l,""[e]),c=u[0],f=u[1];i(function(){var t={};return t[l]=function(){return 7},7!=""[e](t)})&&(o(String.prototype,e,c),r(RegExp.prototype,l,2==t?function(e,t){return f.call(e,this,t)}:function(e){return f.call(e,this)}))}},function(e,t,n){var r=n(25),o=n(63),i=n(42)("species");e.exports=function(e,t){var n,a=r(e).constructor;return void 0===a||void 0==(n=r(a)[i])?t:o(n)}},function(e,t,n){"use strict";var r=n(28),o=n(7),i=n(74),a=n(160),s=n(133),l=n(159),u=n(158),c=n(33),f=n(30),d=n(262),p=n(181),m=n(333);e.exports=function(e,t,n,h,_,g){var v=r[e],y=v,b=_?"set":"add",E=y&&y.prototype,C={},S=function(e){var t=E[e];i(E,e,"delete"==e?function(e){return!(g&&!c(e))&&t.call(this,0===e?0:e)}:"has"==e?function(e){return!(g&&!c(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return g&&!c(e)?void 0:t.call(this,0===e?0:e)}:"add"==e?function(e){return t.call(this,0===e?0:e),this}:function(e,n){return t.call(this,0===e?0:e,n),this})};if("function"==typeof y&&(g||E.forEach&&!f(function(){(new y).entries().next()}))){var D=new y,w=D[b](g?{}:-0,1)!=D,T=f(function(){D.has(1)}),x=d(function(e){new y(e)}),R=!g&&f(function(){for(var e=new y,t=5;t--;)e[b](t,t);return!e.has(-0)});x||((y=t(function(t,n){u(t,y,e);var r=m(new v,t,y);return void 0!=n&&l(n,_,r[b],r),r})).prototype=E,E.constructor=y),(T||R)&&(S("delete"),S("has"),_&&S("get")),(R||w)&&S(b),g&&E.clear&&delete E.clear}else y=h.getConstructor(t,e,_,b),a(y.prototype,n),s.NEED=!0;return p(y,e),C[e]=y,o(o.G+o.W+o.F*(y!=v),C),g||h.setStrong(y,e,_),y}},function(e,t,n){for(var r,o=n(28),i=n(73),a=n(151),s=a("typed_array"),l=a("view"),u=!(!o.ArrayBuffer||!o.DataView),c=u,f=0,d="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");f<9;)(r=o[d[f++]])?(i(r.prototype,s,!0),i(r.prototype,l,!0)):c=!1;e.exports={ABV:u,CONSTR:c,TYPED:s,VIEW:l}},function(e,t,n){"use strict";e.exports=n(152)||!n(30)(function(){var e=Math.random();__defineSetter__.call(null,e,function(){}),delete n(28)[e]})},function(e,t,n){"use strict";var r=n(7);e.exports=function(e){r(r.S,e,{of:function(){for(var e=arguments.length,t=Array(e);e--;)t[e]=arguments[e];return new this(t)}})}},function(e,t,n){"use strict";var r=n(7),o=n(63),i=n(91),a=n(159);e.exports=function(e){r(r.S,e,{from:function(e){var t,n,r,s,l=arguments[1];return o(this),(t=void 0!==l)&&o(l),void 0==e?new this:(n=[],t?(r=0,s=i(l,arguments[2],2),a(e,!1,function(e){n.push(s(e,r++))})):a(e,!1,n.push,n),new this(n))}})}},function(e,t,n){var r=n(46),o=n(52),i=n(78);e.exports=n(44)?Object.defineProperties:function(e,t){o(e);for(var n,a=i(t),s=a.length,l=0;s>l;)r.f(e,n=a[l++],t[n]);return e}},function(e,t,n){var r=n(34).document;e.exports=r&&r.documentElement},function(e,t,n){var r=n(52);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){var i=e.return;throw void 0!==i&&r(i.call(e)),t}}},function(e,t,n){var r=n(77),o=n(38)("iterator"),i=Array.prototype;e.exports=function(e){return void 0!==e&&(r.Array===e||i[o]===e)}},function(e,t,n){var r=n(38)("iterator"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!o)return!1;var n=!1;try{var i=[7],a=i[r]();a.next=function(){return{done:n=!0}},i[r]=function(){return a},e(i)}catch(e){}return n}},function(e,t,n){var r=n(59),o=n(225).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return a&&"[object Window]"==i.call(e)?function(e){try{return o(e)}catch(e){return a.slice()}}(e):o(r(e))}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){var r=n(95);e.exports=Array.isArray||function(e){return"Array"==r(e)}},function(e,t,n){"use strict";var r=n(32),o=(n(23),{}),i={reinitializeTransaction:function(){this.transactionWrappers=this.getTransactionWrappers(),this.wrapperInitData?this.wrapperInitData.length=0:this.wrapperInitData=[],this._isInTransaction=!1},_isInTransaction:!1,getTransactionWrappers:null,isInTransaction:function(){return!!this._isInTransaction},perform:function(e,t,n,o,i,a,s,l){var u,c;this.isInTransaction()&&r("27");try{this._isInTransaction=!0,u=!0,this.initializeAll(0),c=e.call(t,n,o,i,a,s,l),u=!1}finally{try{if(u)try{this.closeAll(0)}catch(e){}else this.closeAll(0)}finally{this._isInTransaction=!1}}return c},initializeAll:function(e){for(var t=this.transactionWrappers,n=e;n<t.length;n++){var r=t[n];try{this.wrapperInitData[n]=o,this.wrapperInitData[n]=r.initialize?r.initialize.call(this):null}finally{if(this.wrapperInitData[n]===o)try{this.initializeAll(n+1)}catch(e){}}}},closeAll:function(e){this.isInTransaction()||r("28");for(var t=this.transactionWrappers,n=e;n<t.length;n++){var i,a=t[n],s=this.wrapperInitData[n];try{i=!0,s!==o&&a.close&&a.close.call(this,s),i=!1}finally{if(i)try{this.closeAll(n+1)}catch(e){}}}this.wrapperInitData.length=0}};e.exports=i},function(e,t,n){"use strict";var r=n(228),o=n(545),i={screenX:null,screenY:null,clientX:null,clientY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:n(376),button:function(e){var t=e.button;return"which"in e?t:2===t?2:4===t?1:0},buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},pageX:function(e){return"pageX"in e?e.pageX:e.clientX+o.currentScrollLeft},pageY:function(e){return"pageY"in e?e.pageY:e.clientY+o.currentScrollTop}};function a(e,t,n,o){return r.call(this,e,t,n,o)}r.augmentClass(a,i),e.exports=a},function(e,t,n){"use strict";var r,o=n(69),i=n(378),a=/^[ \r\n\t\f]/,s=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,l=n(379)(function(e,t){if(e.namespaceURI!==i.svg||"innerHTML"in e)e.innerHTML=t;else{(r=r||document.createElement("div")).innerHTML="<svg>"+t+"</svg>";for(var n=r.firstChild;n.firstChild;)e.appendChild(n.firstChild)}});if(o.canUseDOM){var u=document.createElement("div");u.innerHTML=" ",""===u.innerHTML&&(l=function(e,t){if(e.parentNode&&e.parentNode.replaceChild(e,e),a.test(t)||"<"===t[0]&&s.test(t)){e.innerHTML=String.fromCharCode(65279)+t;var n=e.firstChild;1===n.data.length?e.removeChild(n):n.deleteData(0,1)}else e.innerHTML=t}),u=null}e.exports=l},function(e,t,n){"use strict";var r=/["'&<>]/;e.exports=function(e){return"boolean"==typeof e||"number"==typeof e?""+e:function(e){var t,n=""+e,o=r.exec(n);if(!o)return n;var i="",a=0,s=0;for(a=o.index;a<n.length;a++){switch(n.charCodeAt(a)){case 34:t=""";break;case 38:t="&";break;case 39:t="'";break;case 60:t="<";break;case 62:t=">";break;default:continue}s!==a&&(i+=n.substring(s,a)),s=a+1,i+=t}return s!==a?i+n.substring(s,a):i}(e)}},function(e,t,n){"use strict";var r,o=n(45),i=n(371),a=n(1016),s=n(545),l=n(1017),u=n(375),c={},f=!1,d=0,p={topAbort:"abort",topAnimationEnd:l("animationend")||"animationend",topAnimationIteration:l("animationiteration")||"animationiteration",topAnimationStart:l("animationstart")||"animationstart",topBlur:"blur",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topChange:"change",topClick:"click",topCompositionEnd:"compositionend",topCompositionStart:"compositionstart",topCompositionUpdate:"compositionupdate",topContextMenu:"contextmenu",topCopy:"copy",topCut:"cut",topDoubleClick:"dblclick",topDrag:"drag",topDragEnd:"dragend",topDragEnter:"dragenter",topDragExit:"dragexit",topDragLeave:"dragleave",topDragOver:"dragover",topDragStart:"dragstart",topDrop:"drop",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topFocus:"focus",topInput:"input",topKeyDown:"keydown",topKeyPress:"keypress",topKeyUp:"keyup",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topMouseDown:"mousedown",topMouseMove:"mousemove",topMouseOut:"mouseout",topMouseOver:"mouseover",topMouseUp:"mouseup",topPaste:"paste",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topScroll:"scroll",topSeeked:"seeked",topSeeking:"seeking",topSelectionChange:"selectionchange",topStalled:"stalled",topSuspend:"suspend",topTextInput:"textInput",topTimeUpdate:"timeupdate",topTouchCancel:"touchcancel",topTouchEnd:"touchend",topTouchMove:"touchmove",topTouchStart:"touchstart",topTransitionEnd:l("transitionend")||"transitionend",topVolumeChange:"volumechange",topWaiting:"waiting",topWheel:"wheel"},m="_reactListenersID"+String(Math.random()).slice(2);var h=o({},a,{ReactEventListener:null,injection:{injectReactEventListener:function(e){e.setHandleTopLevel(h.handleTopLevel),h.ReactEventListener=e}},setEnabled:function(e){h.ReactEventListener&&h.ReactEventListener.setEnabled(e)},isEnabled:function(){return!(!h.ReactEventListener||!h.ReactEventListener.isEnabled())},listenTo:function(e,t){for(var n=t,r=function(e){return Object.prototype.hasOwnProperty.call(e,m)||(e[m]=d++,c[e[m]]={}),c[e[m]]}(n),o=i.registrationNameDependencies[e],a=0;a<o.length;a++){var s=o[a];r.hasOwnProperty(s)&&r[s]||("topWheel"===s?u("wheel")?h.ReactEventListener.trapBubbledEvent("topWheel","wheel",n):u("mousewheel")?h.ReactEventListener.trapBubbledEvent("topWheel","mousewheel",n):h.ReactEventListener.trapBubbledEvent("topWheel","DOMMouseScroll",n):"topScroll"===s?u("scroll",!0)?h.ReactEventListener.trapCapturedEvent("topScroll","scroll",n):h.ReactEventListener.trapBubbledEvent("topScroll","scroll",h.ReactEventListener.WINDOW_HANDLE):"topFocus"===s||"topBlur"===s?(u("focus",!0)?(h.ReactEventListener.trapCapturedEvent("topFocus","focus",n),h.ReactEventListener.trapCapturedEvent("topBlur","blur",n)):u("focusin")&&(h.ReactEventListener.trapBubbledEvent("topFocus","focusin",n),h.ReactEventListener.trapBubbledEvent("topBlur","focusout",n)),r.topBlur=!0,r.topFocus=!0):p.hasOwnProperty(s)&&h.ReactEventListener.trapBubbledEvent(s,p[s],n),r[s]=!0)}},trapBubbledEvent:function(e,t,n){return h.ReactEventListener.trapBubbledEvent(e,t,n)},trapCapturedEvent:function(e,t,n){return h.ReactEventListener.trapCapturedEvent(e,t,n)},supportsEventPageXY:function(){if(!document.createEvent)return!1;var e=document.createEvent("MouseEvent");return null!=e&&"pageX"in e},ensureScrollValueMonitoring:function(){if(void 0===r&&(r=h.supportsEventPageXY()),!r&&!f){var e=s.refreshScrollValues;h.ReactEventListener.monitorScrollValue(e),f=!0}}});e.exports=h},function(e,t,n){"use strict";var r=n(55).EventEmitter;function o(e){this.userId=e,this.presence="offline",this.presenceStatusMsg=null,this.displayName=e,this.rawDisplayName=e,this.avatarUrl=null,this.lastActiveAgo=0,this.lastPresenceTs=0,this.currentlyActive=!1,this.events={presence:null,profile:null},this._updateModifiedTime()}n(29).inherits(o,r),o.prototype.setPresenceEvent=function(e){if("m.presence"===e.getType()){var t=null===this.events.presence;this.events.presence=e;var n=[];(e.getContent().presence!==this.presence||t)&&n.push("User.presence"),e.getContent().avatar_url&&e.getContent().avatar_url!==this.avatarUrl&&n.push("User.avatarUrl"),e.getContent().displayname&&e.getContent().displayname!==this.displayName&&n.push("User.displayName"),void 0!==e.getContent().currently_active&&e.getContent().currently_active!==this.currentlyActive&&n.push("User.currentlyActive"),this.presence=e.getContent().presence,n.push("User.lastPresenceTs"),e.getContent().status_msg&&(this.presenceStatusMsg=e.getContent().status_msg),e.getContent().displayname&&(this.displayName=e.getContent().displayname),e.getContent().avatar_url&&(this.avatarUrl=e.getContent().avatar_url),this.lastActiveAgo=e.getContent().last_active_ago,this.lastPresenceTs=Date.now(),this.currentlyActive=e.getContent().currently_active,this._updateModifiedTime();for(var r=0;r<n.length;r++)this.emit(n[r],e,this)}},o.prototype.setDisplayName=function(e){var t=this.displayName;this.displayName=e,e!==t&&this._updateModifiedTime()},o.prototype.setRawDisplayName=function(e){this.rawDisplayName=e},o.prototype.setAvatarUrl=function(e){var t=this.avatarUrl;this.avatarUrl=e,e!==t&&this._updateModifiedTime()},o.prototype._updateModifiedTime=function(){this._modified=Date.now()},o.prototype.getLastModifiedTime=function(){return this._modified},o.prototype.getLastActiveTs=function(){return this.lastPresenceTs-this.lastActiveAgo},e.exports=o},function(e,t,n){"use strict";var r=l(n(67)),o=l(n(14)),i=l(n(4)),a=l(n(5)),s=l(n(29));function l(e){return e&&e.__esModule?e:{default:e}}var u=function(){function e(t){(0,i.default)(this,e),(t=t||{}).maxTimelineEntries=t.maxTimelineEntries||50,this.opts=t,this.accountData={},this.inviteRooms={},this.joinRooms={},this.nextBatch=null,this.groups={invite:{},join:{},leave:{}}}return(0,a.default)(e,[{key:"accumulate",value:function(e){this._accumulateRooms(e),this._accumulateGroups(e),this._accumulateAccountData(e),this.nextBatch=e.next_batch}},{key:"_accumulateAccountData",value:function(e){var t=this;e.account_data&&e.account_data.events&&e.account_data.events.forEach(function(e){t.accountData[e.type]=e})}},{key:"_accumulateRooms",value:function(e){var t=this;e.rooms&&(e.rooms.invite&&(0,o.default)(e.rooms.invite).forEach(function(n){t._accumulateRoom(n,"invite",e.rooms.invite[n])}),e.rooms.join&&(0,o.default)(e.rooms.join).forEach(function(n){t._accumulateRoom(n,"join",e.rooms.join[n])}),e.rooms.leave&&(0,o.default)(e.rooms.leave).forEach(function(n){t._accumulateRoom(n,"leave",e.rooms.leave[n])}))}},{key:"_accumulateRoom",value:function(e,t,n){switch(t){case"invite":this._accumulateInviteState(e,n);break;case"join":this.inviteRooms[e]&&delete this.inviteRooms[e],this._accumulateJoinState(e,n);break;case"leave":this.inviteRooms[e]?delete this.inviteRooms[e]:delete this.joinRooms[e];break;default:console.error("Unknown cateogory: ",t)}}},{key:"_accumulateInviteState",value:function(e,t){if(t.invite_state&&t.invite_state.events)if(this.inviteRooms[e]){var n=this.inviteRooms[e];t.invite_state.events.forEach(function(e){for(var t=!1,r=0;r<n.invite_state.events.length;r++){var o=n.invite_state.events[r];o.type===e.type&&o.state_key==e.state_key&&(n.invite_state.events[r]=e,t=!0)}t||n.invite_state.events.push(e)})}else this.inviteRooms[e]={invite_state:t.invite_state}}},{key:"_accumulateJoinState",value:function(e,t){this.joinRooms[e]||(this.joinRooms[e]={_currentState:(0,r.default)(null),_timeline:[],_accountData:(0,r.default)(null),_unreadNotifications:{},_summary:{},_readReceipts:{}});var n=this.joinRooms[e];if(t.account_data&&t.account_data.events&&t.account_data.events.forEach(function(e){n._accountData[e.type]=e}),t.unread_notifications&&(n._unreadNotifications=t.unread_notifications),t.summary){var i=n._summary,a=t.summary;i["m.heroes"]=a["m.heroes"]||i["m.heroes"],i["m.joined_member_count"]=a["m.joined_member_count"]||i["m.joined_member_count"],i["m.invited_member_count"]=a["m.invited_member_count"]||i["m.invited_member_count"]}if(t.ephemeral&&t.ephemeral.events&&t.ephemeral.events.forEach(function(e){"m.receipt"===e.type&&e.content&&(0,o.default)(e.content).forEach(function(t){e.content[t]["m.read"]&&(0,o.default)(e.content[t]["m.read"]).forEach(function(r){n._readReceipts[r]={data:e.content[t]["m.read"][r],eventId:t}})})}),t.timeline&&t.timeline.limited&&(n._timeline=[]),t.state&&t.state.events&&t.state.events.forEach(function(e){c(n._currentState,e)}),t.timeline&&t.timeline.events&&t.timeline.events.forEach(function(e,r){c(n._currentState,e),n._timeline.push({event:e,token:0===r?t.timeline.prev_batch:null})}),n._timeline.length>this.opts.maxTimelineEntries)for(var s=n._timeline.length-this.opts.maxTimelineEntries;s<n._timeline.length;s++)if(n._timeline[s].token){n._timeline=n._timeline.slice(s,n._timeline.length);break}}},{key:"_accumulateGroups",value:function(e){var t=this;e.groups&&(e.groups.invite&&(0,o.default)(e.groups.invite).forEach(function(n){t._accumulateGroup(n,"invite",e.groups.invite[n])}),e.groups.join&&(0,o.default)(e.groups.join).forEach(function(n){t._accumulateGroup(n,"join",e.groups.join[n])}),e.groups.leave&&(0,o.default)(e.groups.leave).forEach(function(n){t._accumulateGroup(n,"leave",e.groups.leave[n])}))}},{key:"_accumulateGroup",value:function(e,t,n){for(var r=["invite","join","leave"],o=0;o<r.length;o++){var i=r[o];delete this.groups[i][e]}this.groups[t][e]=n}},{key:"getJSON",value:function(){var e=this,t={join:{},invite:{},leave:{}};(0,o.default)(this.inviteRooms).forEach(function(n){t.invite[n]=e.inviteRooms[n]}),(0,o.default)(this.joinRooms).forEach(function(n){var i=e.joinRooms[n],a={ephemeral:{events:[]},account_data:{events:[]},state:{events:[]},timeline:{events:[],prev_batch:null},unread_notifications:i._unreadNotifications,summary:i._summary};(0,o.default)(i._accountData).forEach(function(e){a.account_data.events.push(i._accountData[e])});var l={type:"m.receipt",room_id:n,content:{}};(0,o.default)(i._readReceipts).forEach(function(e){var t=i._readReceipts[e];l.content[t.eventId]||(l.content[t.eventId]={"m.read":{}}),l.content[t.eventId]["m.read"][e]=t.data}),(0,o.default)(l.content).length>0&&a.ephemeral.events.push(l),i._timeline.forEach(function(e){if(!a.timeline.prev_batch){if(!e.token)return;a.timeline.prev_batch=e.token}a.timeline.events.push(e.event)});for(var u=(0,r.default)(null),f=a.timeline.events.length-1;f>=0;f--){var d=a.timeline.events[f];if(null!==d.state_key&&void 0!==d.state_key){var p=s.default.deepCopy(d);p.unsigned&&(p.unsigned.prev_content&&(p.content=p.unsigned.prev_content),p.unsigned.prev_sender&&(p.sender=p.unsigned.prev_sender)),c(u,p)}}(0,o.default)(i._currentState).forEach(function(e){(0,o.default)(i._currentState[e]).forEach(function(t){var n=i._currentState[e][t];u[e]&&u[e][t]&&(n=u[e][t]),a.state.events.push(n)})}),t.join[n]=a});var n=[];return(0,o.default)(this.accountData).forEach(function(t){n.push(e.accountData[t])}),{nextBatch:this.nextBatch,roomsData:t,groupsData:this.groups,accountData:n}}},{key:"getNextBatchToken",value:function(){return this.nextBatch}}]),e}();function c(e,t){null!==t.state_key&&void 0!==t.state_key&&t.type&&(e[t.type]||(e[t.type]=(0,r.default)(null)),e[t.type][t.state_key]=t)}e.exports=u},function(e,t,n){"use strict";(function(t){var r=s(n(67)),o=s(n(31)),i=s(n(64)),a=s(n(9));function s(e){return e&&e.__esModule?e:{default:e}}var l=n(1066).parse,u=n(29),c=n(1067);e.exports.PREFIX_R0="/_matrix/client/r0",e.exports.PREFIX_UNSTABLE="/_matrix/client/unstable",e.exports.PREFIX_IDENTITY_V1="/_matrix/identity/api/v1",e.exports.PREFIX_MEDIA_R0="/_matrix/media/r0",e.exports.MatrixHttpApi=function(e,t){u.checkObjectHasKeys(t,["baseUrl","request","prefix"]),t.onlyData=t.onlyData||!1,this.event_emitter=e,this.opts=t,this.useAuthorizationHeader=Boolean(t.useAuthorizationHeader),this.uploads=[]},e.exports.MatrixHttpApi.prototype={getContentUri:function(){var e={access_token:this.opts.accessToken};return{base:this.opts.baseUrl,path:"/_matrix/media/v1/upload",params:e}},uploadContent:function(e,n){u.isFunction(n)?n={callback:n}:void 0===n&&(n={});var r=!1!==n.includeFilename,o=n.type||e.type||"application/octet-stream",i=n.name||e.name,s=e.stream?e.stream:e,l=n.rawResponse;void 0===l&&(t.XMLHttpRequest?l=!1:(console.warn("Returning the raw JSON from uploadContent(). Future versions of the js-sdk will change this default, to return the parsed object. Set opts.rawResponse=false to change this behaviour now."),l=!0));var d=n.onlyContentUri;l||void 0!==d||(t.XMLHttpRequest?(console.warn("Returning only the content-uri from uploadContent(). Future versions of the js-sdk will change this default, to return the whole response object. Set opts.onlyContentUri=false to change this behaviour now."),d=!0):d=!1);var p={loaded:0,total:0},m=void 0,h=null;if(l||(h=function(e){var t=JSON.parse(e);if(d&&void 0===(t=t.content_uri))throw Error("Bad response");return t}),t.XMLHttpRequest){var _=a.default.defer(),g=new t.XMLHttpRequest;p.xhr=g;var v=f(_,n.callback,this.opts.onlyData),y=function(){g.abort(),v(new Error("Timeout"))};g.timeout_timer=c.setTimeout(y,3e4),g.onreadystatechange=function(){switch(g.readyState){case t.XMLHttpRequest.DONE:var e;c.clearTimeout(g.timeout_timer);try{if(!g.responseText)throw new Error("No response body.");e=g.responseText,h&&(e=h(e))}catch(e){return e.http_status=g.status,void v(e)}v(void 0,g,e)}},g.upload.addEventListener("progress",function(e){c.clearTimeout(g.timeout_timer),p.loaded=e.loaded,p.total=e.total,g.timeout_timer=c.setTimeout(y,3e4),n.progressHandler&&n.progressHandler({loaded:e.loaded,total:e.total})});var b=this.opts.baseUrl+"/_matrix/media/v1/upload",E=[];r&&i&&E.push("filename="+encodeURIComponent(i)),this.useAuthorizationHeader||E.push("access_token="+encodeURIComponent(this.opts.accessToken)),E.length>0&&(b+="?"+E.join("&")),g.open("POST",b),this.useAuthorizationHeader&&g.setRequestHeader("Authorization","Bearer "+this.opts.accessToken),g.setRequestHeader("Content-Type",o),g.send(s),(m=_.promise).abort=g.abort.bind(g)}else{var C={};r&&i&&(C.filename=i),m=this.authedRequest(n.callback,"POST","/upload",C,s,{prefix:"/_matrix/media/v1",headers:{"Content-Type":o},json:!1,bodyParser:h})}var S=this,D=m.finally(function(){for(var e=0;e<S.uploads.length;++e)if(S.uploads[e]===p)return void S.uploads.splice(e,1)});return D.abort=m.abort,p.promise=D,this.uploads.push(p),D},cancelUpload:function(e){return!!e.abort&&(e.abort(),!0)},getCurrentUploads:function(){return this.uploads},idServerRequest:function(e,t,n,r,o){var s=this.opts.idBaseUrl+o+n;if(void 0!==e&&!u.isFunction(e))throw Error("Expected callback to be a function but got "+(void 0===e?"undefined":(0,i.default)(e)));var l={uri:s,method:t,withCredentials:!1,json:!1,_matrix_opts:this.opts};"GET"==t?l.qs=r:l.form=r;var c=a.default.defer();return this.opts.request(l,f(c,e,this.opts.onlyData)),c.promise.then(function(e){return JSON.parse(e)})},authedRequest:function(e,t,n,r,o,i){r||(r={}),this.useAuthorizationHeader?(isFinite(i)&&(i={localTimeoutMs:i}),i||(i={}),i.headers||(i.headers={}),i.headers.Authorization||(i.headers.Authorization="Bearer "+this.opts.accessToken),r.access_token&&delete r.access_token):r.access_token||(r.access_token=this.opts.accessToken);var a=this.request(e,t,n,r,o,i),s=this;return a.catch(function(e){"M_UNKNOWN_TOKEN"==e.errcode?s.event_emitter.emit("Session.logged_out"):"M_CONSENT_NOT_GIVEN"==e.errcode&&s.event_emitter.emit("no_consent",e.message,e.data.consent_uri)}),a},request:function(e,t,n,r,o,i){var a=void 0!==(i=i||{}).prefix?i.prefix:this.opts.prefix,s=this.opts.baseUrl+a+n;return this.requestOtherUrl(e,t,s,r,o,i)},authedRequestWithPrefix:function(e,t,n,r,o,i,a){return this.authedRequest(e,t,n,r,o,{localTimeoutMs:a,prefix:i})},requestWithPrefix:function(e,t,n,r,o,i,a){return this.request(e,t,n,r,o,{localTimeoutMs:a,prefix:i})},requestOtherUrl:function(e,t,n,r,o,i){return void 0===i||null===i?i={}:isFinite(i)&&(i={localTimeoutMs:i}),this._request(e,t,n,r,o,i)},getUrl:function(e,t,n){var r="";return t&&(r="?"+u.encodeParams(t)),this.opts.baseUrl+n+e+r},_request:function(t,n,r,s,l,d){if(void 0!==t&&!u.isFunction(t))throw Error("Expected callback to be a function but got "+(void 0===t?"undefined":(0,i.default)(t)));d=d||{};var p=this;if(this.opts.extraParams)for(var m in this.opts.extraParams)this.opts.extraParams.hasOwnProperty(m)&&(s[m]=this.opts.extraParams[m]);var h=u.extend({},d.headers||{}),_=void 0===d.json||d.json,g=d.bodyParser;_&&(l&&(l=(0,o.default)(l),h["content-type"]="application/json"),h.accept||(h.accept="application/json"),void 0===g&&(g=function(e){return JSON.parse(e)}));var v=a.default.defer(),y=void 0,b=!1,E=void 0,C=d.localTimeoutMs||this.opts.localTimeoutMs,S=function(){C&&(y&&c.clearTimeout(y),y=c.setTimeout(function(){b=!0,E&&E.abort&&E.abort(),v.reject(new e.exports.MatrixError({error:"Locally timed out waiting for a response",errcode:"ORG.MATRIX.JSSDK_TIMEOUT",timeout:C}))},C))};S();var D=v.promise;try{(E=this.opts.request({uri:r,method:n,withCredentials:!1,qs:s,body:l,json:!1,timeout:C,headers:h||{},_matrix_opts:this.opts},function(e,n,r){C&&(c.clearTimeout(y),b)||f(v,t,p.opts.onlyData,g)(e,n,r)}))&&("onprogress"in E&&(E.onprogress=function(e){S()}),E.abort&&(D.abort=E.abort.bind(E)))}catch(e){v.reject(e),t&&t(e)}return D}};var f=function(t,n,r,o){return n=n||function(){},function(i,a,s){if(!i)try{a.statusCode>=400?i=function(t,n){var r=t.statusCode,o=function(e){var t=void 0;e.getResponseHeader?t=e.getResponseHeader("Content-Type"):e.headers&&(t=e.headers["content-type"]||null);if(!t)return null;try{return l(t)}catch(e){throw new Error("Error parsing Content-Type '"+t+"': "+e)}}(t),i=void 0;o&&("application/json"===o.type?i=new e.exports.MatrixError(JSON.parse(n)):"text/plain"===o.type&&(i=new Error("Server returned "+r+" error: "+n)));i||(i=new Error("Server returned "+r+" error"));return i.httpStatus=r,i}(a,s):o&&(s=o(s))}catch(e){i=new Error("Error parsing server response: "+e)}if(i)t.reject(i),n(i);else{var u={code:a.statusCode,headers:a.headers,data:s};t.resolve(r?s:u),n(null,r?s:u)}}};e.exports.MatrixError=function(e){e=e||{},this.errcode=e.errcode,this.name=e.errcode||"Unknown error code",this.message=e.error||"Unknown message",this.data=e},e.exports.MatrixError.prototype=(0,r.default)(Error.prototype),e.exports.MatrixError.prototype.constructor=e.exports.MatrixError}).call(this,n(15))},function(e,t,n){"use strict";var r=a(n(64)),o=a(n(20)),i=a(n(14));function a(e){return e&&e.__esModule?e:{default:e}}var s=["override","content","room","sender","underride"];function l(e){var t=this,n=function(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")},r={},a=function(e,n,r){for(var o=0;o<s.length;++o)for(var i=s[o],a=n[i],l=0;l<a.length;++l){var c=a[l];if(c.enabled){var f=u(i,c,r);if(f&&t.ruleMatchesEvent(f,e))return c.kind=i,c}}return null},u=function(e,t,n){var r={rule_id:t.rule_id,actions:t.actions,conditions:[]};switch(e){case"underride":case"override":r.conditions=t.conditions;break;case"room":if(!t.rule_id)return null;r.conditions.push({kind:"event_match",key:"room_id",value:t.rule_id});break;case"sender":if(!t.rule_id)return null;r.conditions.push({kind:"event_match",key:"user_id",value:t.rule_id});break;case"content":if(!t.pattern)return null;r.conditions.push({kind:"event_match",key:"content.body",pattern:t.pattern})}return n&&r.conditions.push({kind:"device",profile_tag:n}),r},c=function(e,t){var n={event_match:h,device:m,contains_display_name:p,room_member_count:d,sender_notification_permission:f};return!!n[e.kind]&&n[e.kind](e,t)},f=function(t,n){var r=t.key;if(!r)return!1;var o=e.getRoom(n.getRoomId());return!(!o||!o.currentState)&&o.currentState.mayTriggerNotifOfType(r,n.getSender())},d=function(t,n){if(!t.is)return!1;var r=e.getRoom(n.getRoomId());if(!r||!r.currentState||!r.currentState.members)return!1;var o=r.currentState.getJoinedMemberCount(),i=t.is.match(/^([=<>]*)([0-9]*)$/);if(!i)return!1;var a=i[1],s=parseInt(i[2]);if(isNaN(s))return!1;switch(a){case"":case"==":return o==s;case"<":return o<s;case">":return o>s;case"<=":return o<=s;case">=":return o>=s;default:return!1}},p=function(t,r){var o=r.getContent();if(!o||!o.body||"string"!=typeof o.body)return!1;var i=e.getRoom(r.getRoomId());if(!(i&&i.currentState&&i.currentState.members&&i.currentState.getMember(e.credentials.userId)))return!1;var a=i.currentState.getMember(e.credentials.userId).name,s=new RegExp("(^|\\W)"+n(a)+"(\\W|$)","i");return o.body.search(s)>-1},m=function(e,t){return!1},h=function(e,t){if(!e.key)return!1;var n=v(e.key,t);if(!n||"string"!=typeof n)return!1;if(e.value)return e.value===n;var r=void 0;return r="content.body"==e.key?_("(^|\\W)",e.pattern,"(\\W|$)"):_("^",e.pattern,"$"),!!n.match(r)},_=function(e,t,n){return r[t]?r[t]:(r[t]=new RegExp(e+g(t)+n,"i"),r[t])},g=function(e){var t=n(e);return t=(t=(t=t.replace(/\\\*/g,".*")).replace(/\?/g,".")).replace(/\\\[(!|)(.*)\\]/g,function(e,t,n,r,o){return"["+(t?"^":"")+n.replace(/\\\-/,"-")+"]"})},v=function(e,t){var n=e.split("."),r=void 0,o=n[0];for("content"==o?(r=t.getContent(),n.shift()):"type"==o?(r=t.getType(),n.shift()):r=t.event;n.length>0;){var i=n.shift();if(!r[i])return null;r=r[i]}return r},y=function(t,n){var r=function(t,n){if(!n||!n.device)return null;if(t.getSender()==e.credentials.userId)return null;for(var r=(0,i.default)(n.device),o=0;o<r.length;++o){var s=r[o],l=n.device[s],u=a(l,s);if(u)return u}return a(t,n.global)}(t,n);if(!r)return{};var o=l.actionListToActionsObject(r.actions);return void 0===o.tweaks.highlight&&(o.tweaks.highlight="content"==r.kind),o};this.ruleMatchesEvent=function(e,t){for(var n=!0,r=0;r<e.conditions.length;++r){var o=e.conditions[r];n&=c(o,t)}return n},this.actionsForEvent=function(t){return y(t,e.pushRules)},this.getPushRuleById=function(t){for(var n=["device","global"],r=0;r<n.length;r++){var i=n[r];if(void 0!==e.pushRules[i]){var a=!0,l=!1,u=void 0;try{for(var c,f=(0,o.default)(s);!(a=(c=f.next()).done);a=!0){var d=c.value;if(void 0!==e.pushRules[i][d]){var p=!0,m=!1,h=void 0;try{for(var _,g=(0,o.default)(e.pushRules[i][d]);!(p=(_=g.next()).done);p=!0){var v=_.value;if(v.rule_id===t)return v}}catch(e){m=!0,h=e}finally{try{!p&&g.return&&g.return()}finally{if(m)throw h}}}}}catch(e){l=!0,u=e}finally{try{!a&&f.return&&f.return()}finally{if(l)throw u}}}}return null}}l.actionListToActionsObject=function(e){for(var t={notify:!1,tweaks:{}},n=0;n<e.length;++n){var o=e[n];"notify"===o?t.notify=!0:"object"===(void 0===o?"undefined":(0,r.default)(o))&&(void 0===o.value&&(o.value=!0),t.tweaks[o.set_tweak]=o.value)}return t},e.exports=l},function(e,t,n){"use strict";var r=n(29);e.exports={getHttpUriForMxc:function(e,t,n,o,i,a){if("string"!=typeof t||!t)return"";if(0!==t.indexOf("mxc://"))return a?t:"";var s=t.slice(6),l="/_matrix/media/v1/download/",u={};n&&(u.width=n),o&&(u.height=o),i&&(u.method=i),r.keys(u).length>0&&(l="/_matrix/media/v1/thumbnail/");var c=s.indexOf("#"),f="";return c>=0&&(f=s.substr(c),s=s.substr(0,c)),e+l+s+(0===r.keys(u).length?"":"?"+r.encodeParams(u))+f},getIdenticonUri:function(e,t,n,o){if(!t)return null;n||(n=96),o||(o=96);var i={width:n,height:o};return e+r.encodeUri("/_matrix/media/v1/identicon/$ident",{$ident:t})+(0===r.keys(i).length?"":"?"+r.encodeParams(i))}}},function(e,t,n){"use strict";var r=n(9),o=l(r),i=l(n(19)),a=l(n(31)),s=function(){var e=(0,r.coroutine)(i.default.mark(function e(t,n,o,a){var s,l;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s=a.deviceId,e.prev=1,e.next=4,(0,r.resolve)(f(t,n,o,s,a.getFingerprint()));case 4:e.next=10;break;case 6:return e.prev=6,e.t0=e.catch(1),console.error("Unable to verify signature on one-time key for device "+o+":"+s+":",e.t0),e.abrupt("return",null);case 10:return l=void 0,e.prev=11,e.next=14,(0,r.resolve)(t.createOutboundSession(a.getIdentityKey(),n.key));case 14:l=e.sent,e.next=21;break;case 17:return e.prev=17,e.t1=e.catch(11),console.error("Error starting session with device "+o+":"+s+": "+e.t1),e.abrupt("return",null);case 21:return console.log("Started new sessionid "+l+" for device "+o+":"+s),e.abrupt("return",l);case 23:case"end":return e.stop()}},e,this,[[1,6],[11,17]])}));return function(t,n,r,o){return e.apply(this,arguments)}}();function l(e){return e&&e.__esModule?e:{default:e}}var u=n(593),c=n(29);e.exports.OLM_ALGORITHM="m.olm.v1.curve25519-aes-sha2",e.exports.MEGOLM_ALGORITHM="m.megolm.v1.aes-sha2",e.exports.encryptMessageForDevice=function(){var e=(0,r.coroutine)(i.default.mark(function e(t,n,o,s,l,u,f){var d,p,m;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return d=u.getIdentityKey(),e.next=3,(0,r.resolve)(s.getSessionIdForDevice(d));case 3:if(null!==(p=e.sent)){e.next=6;break}return e.abrupt("return");case 6:return console.log("Using sessionid "+p+" for device "+l+":"+u.deviceId),m={sender:n,sender_device:o,keys:{ed25519:s.deviceEd25519Key},recipient:l,recipient_keys:{ed25519:u.getFingerprint()}},c.extend(m,f),e.next=11,(0,r.resolve)(s.encryptMessage(d,p,(0,a.default)(m)));case 11:t[d]=e.sent;case 12:case"end":return e.stop()}},e,this)}));return function(t,n,r,o,i,a,s){return e.apply(this,arguments)}}(),e.exports.ensureOlmSessionsForDevices=function(){var e=(0,r.coroutine)(i.default.mark(function e(t,n,a){var l,u,c,f,d,p,m,h,_,g,v,y,b,E,C;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:l=[],u={},e.t0=i.default.keys(a);case 3:if((e.t1=e.t0()).done){e.next=24;break}if(c=e.t1.value,a.hasOwnProperty(c)){e.next=7;break}return e.abrupt("continue",3);case 7:u[c]={},f=a[c],d=0;case 10:if(!(d<f.length)){e.next=22;break}return p=f[d],m=p.deviceId,h=p.getIdentityKey(),e.next=16,(0,r.resolve)(t.getSessionIdForDevice(h));case 16:null===(_=e.sent)&&l.push([c,m]),u[c][m]={device:p,sessionId:_};case 19:d++,e.next=10;break;case 22:e.next=3;break;case 24:if(0!==l.length){e.next=26;break}return e.abrupt("return",u);case 26:return g="signed_curve25519",e.next=29,(0,r.resolve)(n.claimOneTimeKeys(l,g));case 29:v=e.sent,y=v.one_time_keys||{},b=[],E=function(e){if(!a.hasOwnProperty(e))return"continue";for(var n=y[e]||{},r=a[e],o=function(o){var i=r[o],a=i.deviceId;if(u[e][a].sessionId)return"continue";var l=n[a]||{},c=null;for(var f in l)0===f.indexOf(g+":")&&(c=l[f]);if(!c)return console.warn("No one-time keys (alg="+g+") for device "+e+":"+a),"continue";b.push(s(t,c,e,i).then(function(t){u[e][a].sessionId=t}))},i=0;i<r.length;i++)o(i)},e.t2=i.default.keys(a);case 34:if((e.t3=e.t2()).done){e.next=41;break}if(C=e.t3.value,"continue"!==E(C)){e.next=39;break}return e.abrupt("continue",34);case 39:e.next=34;break;case 41:return e.next=43,(0,r.resolve)(o.default.all(b));case 43:return e.abrupt("return",u);case 44:case"end":return e.stop()}},e,this)}));return function(t,n,r){return e.apply(this,arguments)}}();var f=e.exports.verifySignature=function(){var e=(0,r.method)(function(e,t,n,r,o){var i="ed25519:"+r,a=((t.signatures||{})[n]||{})[i];if(!a)throw Error("No signature");delete t.unsigned,delete t.signatures;var s=u.stringify(t);e.verifySignature(o,s,a)});return function(t,n,r,o,i){return e.apply(this,arguments)}}()},function(e,t,n){"use strict";var r=n(17),o=function(e){return e&&e.__esModule?e:{default:e}}(n(8));e.exports={avatarUrlForMember:function(e,t,n,r){var i=e.getAvatarUrl(o.default.get().getHomeserverUrl(),Math.floor(t*window.devicePixelRatio),Math.floor(n*window.devicePixelRatio),r,!1,!1);return i||(i=this.defaultAvatarUrlForString(e?e.userId:"")),i},avatarUrlForUser:function(e,t,n,i){var a=r.ContentRepo.getHttpUriForMxc(o.default.get().getHomeserverUrl(),e.avatarUrl,Math.floor(t*window.devicePixelRatio),Math.floor(n*window.devicePixelRatio),i);return a&&0!==a.length?a:null},defaultAvatarUrlForString:function(e){for(var t=["76cfa6","50e2c2","f4c371"],n=0,r=0;r<e.length;++r)n+=e.charCodeAt(r);return"img/"+t[n%t.length]+".png"}}},function(e,t,n){"use strict";var r=a(n(8)),o=a(n(10)),i=n(17);function a(e){return e&&e.__esModule?e:{default:e}}e.exports={resendUnsentEvents:function(t){t.getPendingEvents().filter(function(e){return e.status===i.EventStatus.NOT_SENT}).forEach(function(t){e.exports.resend(t)})},cancelUnsentEvents:function(t){t.getPendingEvents().filter(function(e){return e.status===i.EventStatus.NOT_SENT}).forEach(function(t){e.exports.removeFromQueue(t)})},resend:function(e){var t=r.default.get().getRoom(e.getRoomId());r.default.get().resendEvent(e,t).done(function(t){o.default.dispatch({action:"message_sent",event:e})},function(t){console.log("Resend got send failure: "+t.name+"("+t+")"),o.default.dispatch({action:"message_send_failed",event:e})})},removeFromQueue:function(e){r.default.get().cancelPendingEvent(e)}}},function(e,t,n){"use strict";var r=d(n(126)),o=d(n(14)),i=d(n(20)),a=d(n(40)),s=d(n(11)),l=d(n(4)),u=d(n(5)),c=d(n(12)),f=d(n(13));function d(e){return e&&e.__esModule?e:{default:e}}var p=function(e){function t(){(0,l.default)(this,t);var e=(0,c.default)(this,(t.__proto__||(0,s.default)(t)).call(this));return e._roomWidgetEcho={},e}return(0,f.default)(t,e),(0,u.default)(t,[{key:"getEchoedRoomWidgets",value:function(e,t){var n=[],r=(0,a.default)({},this._roomWidgetEcho[e]),s=!0,l=!1,u=void 0;try{for(var c,f=(0,i.default)(t);!(s=(c=f.next()).done);s=!0){var d=c.value,p=d.getStateKey();r[p]&&0===(0,o.default)(r[p]).length||n.push(d),delete r[p]}}catch(e){l=!0,u=e}finally{try{!s&&f.return&&f.return()}finally{if(l)throw u}}return n}},{key:"roomHasPendingWidgetsOfType",value:function(e,t,n){var s=(0,a.default)({},this._roomWidgetEcho[e]),l=!0,u=!1,c=void 0;try{for(var f,d=(0,i.default)(t);!(l=(f=d.next()).done);l=!0){delete s[f.value.getStateKey()]}}catch(e){u=!0,c=e}finally{try{!l&&d.return&&d.return()}finally{if(u)throw c}}return void 0===n?(0,o.default)(s).length>0:(0,r.default)(s).some(function(e){return e.type===n})}},{key:"roomHasPendingWidgets",value:function(e,t){return this.roomHasPendingWidgetsOfType(e,t)}},{key:"setRoomWidgetEcho",value:function(e,t,n){void 0===this._roomWidgetEcho[e]&&(this._roomWidgetEcho[e]={}),this._roomWidgetEcho[e][t]=n,this.emit("update")}},{key:"removeRoomWidgetEcho",value:function(e,t){delete this._roomWidgetEcho[e][t],0===(0,o.default)(this._roomWidgetEcho[e]).length&&delete this._roomWidgetEcho[e],this.emit("update")}}]),t}(d(n(55)).default),m=null;m||(m=new p),e.exports=m},function(e,t){e.exports=require("electron")},function(e,t,n){"use strict";(function(t){!t.version||0===t.version.indexOf("v0.")||0===t.version.indexOf("v1.")&&0!==t.version.indexOf("v1.8.")?e.exports=function(e,n,r,o){if("function"!=typeof e)throw new TypeError('"callback" argument must be a function');var i,a,s=arguments.length;switch(s){case 0:case 1:return t.nextTick(e);case 2:return t.nextTick(function(){e.call(null,n)});case 3:return t.nextTick(function(){e.call(null,n,r)});case 4:return t.nextTick(function(){e.call(null,n,r,o)});default:for(i=new Array(s-1),a=0;a<i.length;)i[a++]=arguments[a];return t.nextTick(function(){e.apply(null,i)})}}:e.exports=t.nextTick}).call(this,n(54))},function(e,t,n){var r=n(193),o=r.Buffer;function i(e,t){for(var n in e)t[n]=e[n]}function a(e,t,n){return o(e,t,n)}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?e.exports=r:(i(r,t),t.Buffer=a),i(o,a),a.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return o(e,t,n)},a.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var r=o(e);return void 0!==t?"string"==typeof n?r.fill(t,n):r.fill(t):r.fill(0),r},a.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return o(e)},a.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){function t(n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,n));return r.type="atrule",r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.append=function(){var t;this.nodes||(this.nodes=[]);for(var n=arguments.length,r=Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.prototype.append).call.apply(t,[this].concat(r))},t.prototype.prepend=function(){var t;this.nodes||(this.nodes=[]);for(var n=arguments.length,r=Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.prototype.prepend).call.apply(t,[this].concat(r))},t}(function(e){return e&&e.__esModule?e:{default:e}}(n(424)).default);t.default=r,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=a(n(424)),i=a(n(623));function a(e){return e&&e.__esModule?e:{default:e}}var s=function(e){function t(n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,n));return r.type="rule",r.nodes||(r.nodes=[]),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"selectors",get:function(){return i.default.comma(this.selector)},set:function(e){var t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}}]),t}(o.default);t.default=s,e.exports=t.default},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,o=Array(r);++n<r;)o[n]=t(e[n],n,e);return o}},function(e,t,n){!function(e){e.emojioneList={":kiss_ww:":{unicode:["1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","1f469-2764-1f48b-1f469"],fname:"1f469-2764-1f48b-1f469",uc:"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469",isCanonical:!0},":couplekiss_ww:":{unicode:["1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","1f469-2764-1f48b-1f469"],fname:"1f469-2764-1f48b-1f469",uc:"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469",isCanonical:!1},":kiss_mm:":{unicode:["1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","1f468-2764-1f48b-1f468"],fname:"1f468-2764-1f48b-1f468",uc:"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468",isCanonical:!0},":couplekiss_mm:":{unicode:["1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","1f468-2764-1f48b-1f468"],fname:"1f468-2764-1f48b-1f468",uc:"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468",isCanonical:!1},":family_mmbb:":{unicode:["1f468-200d-1f468-200d-1f466-200d-1f466","1f468-1f468-1f466-1f466"],fname:"1f468-1f468-1f466-1f466",uc:"1f468-200d-1f468-200d-1f466-200d-1f466",isCanonical:!0},":family_mmgb:":{unicode:["1f468-200d-1f468-200d-1f467-200d-1f466","1f468-1f468-1f467-1f466"],fname:"1f468-1f468-1f467-1f466",uc:"1f468-200d-1f468-200d-1f467-200d-1f466",isCanonical:!0},":family_mmgg:":{unicode:["1f468-200d-1f468-200d-1f467-200d-1f467","1f468-1f468-1f467-1f467"],fname:"1f468-1f468-1f467-1f467",uc:"1f468-200d-1f468-200d-1f467-200d-1f467",isCanonical:!0},":family_mwbb:":{unicode:["1f468-200d-1f469-200d-1f466-200d-1f466","1f468-1f469-1f466-1f466"],fname:"1f468-1f469-1f466-1f466",uc:"1f468-200d-1f469-200d-1f466-200d-1f466",isCanonical:!0},":family_mwgb:":{unicode:["1f468-200d-1f469-200d-1f467-200d-1f466","1f468-1f469-1f467-1f466"],fname:"1f468-1f469-1f467-1f466",uc:"1f468-200d-1f469-200d-1f467-200d-1f466",isCanonical:!0},":family_mwgg:":{unicode:["1f468-200d-1f469-200d-1f467-200d-1f467","1f468-1f469-1f467-1f467"],fname:"1f468-1f469-1f467-1f467",uc:"1f468-200d-1f469-200d-1f467-200d-1f467",isCanonical:!0},":family_wwbb:":{unicode:["1f469-200d-1f469-200d-1f466-200d-1f466","1f469-1f469-1f466-1f466"],fname:"1f469-1f469-1f466-1f466",uc:"1f469-200d-1f469-200d-1f466-200d-1f466",isCanonical:!0},":family_wwgb:":{unicode:["1f469-200d-1f469-200d-1f467-200d-1f466","1f469-1f469-1f467-1f466"],fname:"1f469-1f469-1f467-1f466",uc:"1f469-200d-1f469-200d-1f467-200d-1f466",isCanonical:!0},":family_wwgg:":{unicode:["1f469-200d-1f469-200d-1f467-200d-1f467","1f469-1f469-1f467-1f467"],fname:"1f469-1f469-1f467-1f467",uc:"1f469-200d-1f469-200d-1f467-200d-1f467",isCanonical:!0},":couple_ww:":{unicode:["1f469-200d-2764-fe0f-200d-1f469","1f469-2764-1f469"],fname:"1f469-2764-1f469",uc:"1f469-200d-2764-fe0f-200d-1f469",isCanonical:!0},":couple_with_heart_ww:":{unicode:["1f469-200d-2764-fe0f-200d-1f469","1f469-2764-1f469"],fname:"1f469-2764-1f469",uc:"1f469-200d-2764-fe0f-200d-1f469",isCanonical:!1},":couple_mm:":{unicode:["1f468-200d-2764-fe0f-200d-1f468","1f468-2764-1f468"],fname:"1f468-2764-1f468",uc:"1f468-200d-2764-fe0f-200d-1f468",isCanonical:!0},":couple_with_heart_mm:":{unicode:["1f468-200d-2764-fe0f-200d-1f468","1f468-2764-1f468"],fname:"1f468-2764-1f468",uc:"1f468-200d-2764-fe0f-200d-1f468",isCanonical:!1},":family_mmb:":{unicode:["1f468-200d-1f468-200d-1f466","1f468-1f468-1f466"],fname:"1f468-1f468-1f466",uc:"1f468-200d-1f468-200d-1f466",isCanonical:!0},":family_mmg:":{unicode:["1f468-200d-1f468-200d-1f467","1f468-1f468-1f467"],fname:"1f468-1f468-1f467",uc:"1f468-200d-1f468-200d-1f467",isCanonical:!0},":family_mwg:":{unicode:["1f468-200d-1f469-200d-1f467","1f468-1f469-1f467"],fname:"1f468-1f469-1f467",uc:"1f468-200d-1f469-200d-1f467",isCanonical:!0},":family_wwb:":{unicode:["1f469-200d-1f469-200d-1f466","1f469-1f469-1f466"],fname:"1f469-1f469-1f466",uc:"1f469-200d-1f469-200d-1f466",isCanonical:!0},":family_wwg:":{unicode:["1f469-200d-1f469-200d-1f467","1f469-1f469-1f467"],fname:"1f469-1f469-1f467",uc:"1f469-200d-1f469-200d-1f467",isCanonical:!0},":rainbow_flag:":{unicode:["1f3f3-fe0f-200d-1f308","1f3f3-1f308"],fname:"1f3f3-1f308",uc:"1f3f3-fe0f-200d-1f308",isCanonical:!0},":gay_pride_flag:":{unicode:["1f3f3-fe0f-200d-1f308","1f3f3-1f308"],fname:"1f3f3-1f308",uc:"1f3f3-fe0f-200d-1f308",isCanonical:!1},":eye_in_speech_bubble:":{unicode:["1f441-200d-1f5e8","1f441-1f5e8"],fname:"1f441-1f5e8",uc:"1f441-200d-1f5e8",isCanonical:!0},":hash:":{unicode:["0023-fe0f-20e3","0023-20e3"],fname:"0023-20e3",uc:"0023-20e3",isCanonical:!0},":zero:":{unicode:["0030-fe0f-20e3","0030-20e3"],fname:"0030-20e3",uc:"0030-20e3",isCanonical:!0},":one:":{unicode:["0031-fe0f-20e3","0031-20e3"],fname:"0031-20e3",uc:"0031-20e3",isCanonical:!0},":two:":{unicode:["0032-fe0f-20e3","0032-20e3"],fname:"0032-20e3",uc:"0032-20e3",isCanonical:!0},":three:":{unicode:["0033-fe0f-20e3","0033-20e3"],fname:"0033-20e3",uc:"0033-20e3",isCanonical:!0},":four:":{unicode:["0034-fe0f-20e3","0034-20e3"],fname:"0034-20e3",uc:"0034-20e3",isCanonical:!0},":five:":{unicode:["0035-fe0f-20e3","0035-20e3"],fname:"0035-20e3",uc:"0035-20e3",isCanonical:!0},":six:":{unicode:["0036-fe0f-20e3","0036-20e3"],fname:"0036-20e3",uc:"0036-20e3",isCanonical:!0},":seven:":{unicode:["0037-fe0f-20e3","0037-20e3"],fname:"0037-20e3",uc:"0037-20e3",isCanonical:!0},":eight:":{unicode:["0038-fe0f-20e3","0038-20e3"],fname:"0038-20e3",uc:"0038-20e3",isCanonical:!0},":nine:":{unicode:["0039-fe0f-20e3","0039-20e3"],fname:"0039-20e3",uc:"0039-20e3",isCanonical:!0},":asterisk:":{unicode:["002a-fe0f-20e3","002a-20e3"],fname:"002a-20e3",uc:"002a-20e3",isCanonical:!0},":keycap_asterisk:":{unicode:["002a-fe0f-20e3","002a-20e3"],fname:"002a-20e3",uc:"002a-20e3",isCanonical:!1},":handball_tone5:":{unicode:["1f93e-1f3ff"],fname:"1f93e-1f3ff",uc:"1f93e-1f3ff",isCanonical:!0},":handball_tone4:":{unicode:["1f93e-1f3fe"],fname:"1f93e-1f3fe",uc:"1f93e-1f3fe",isCanonical:!0},":handball_tone3:":{unicode:["1f93e-1f3fd"],fname:"1f93e-1f3fd",uc:"1f93e-1f3fd",isCanonical:!0},":handball_tone2:":{unicode:["1f93e-1f3fc"],fname:"1f93e-1f3fc",uc:"1f93e-1f3fc",isCanonical:!0},":handball_tone1:":{unicode:["1f93e-1f3fb"],fname:"1f93e-1f3fb",uc:"1f93e-1f3fb",isCanonical:!0},":water_polo_tone5:":{unicode:["1f93d-1f3ff"],fname:"1f93d-1f3ff",uc:"1f93d-1f3ff",isCanonical:!0},":water_polo_tone4:":{unicode:["1f93d-1f3fe"],fname:"1f93d-1f3fe",uc:"1f93d-1f3fe",isCanonical:!0},":water_polo_tone3:":{unicode:["1f93d-1f3fd"],fname:"1f93d-1f3fd",uc:"1f93d-1f3fd",isCanonical:!0},":water_polo_tone2:":{unicode:["1f93d-1f3fc"],fname:"1f93d-1f3fc",uc:"1f93d-1f3fc",isCanonical:!0},":water_polo_tone1:":{unicode:["1f93d-1f3fb"],fname:"1f93d-1f3fb",uc:"1f93d-1f3fb",isCanonical:!0},":wrestlers_tone5:":{unicode:["1f93c-1f3ff"],fname:"1f93c-1f3ff",uc:"1f93c-1f3ff",isCanonical:!0},":wrestling_tone5:":{unicode:["1f93c-1f3ff"],fname:"1f93c-1f3ff",uc:"1f93c-1f3ff",isCanonical:!1},":wrestlers_tone4:":{unicode:["1f93c-1f3fe"],fname:"1f93c-1f3fe",uc:"1f93c-1f3fe",isCanonical:!0},":wrestling_tone4:":{unicode:["1f93c-1f3fe"],fname:"1f93c-1f3fe",uc:"1f93c-1f3fe",isCanonical:!1},":wrestlers_tone3:":{unicode:["1f93c-1f3fd"],fname:"1f93c-1f3fd",uc:"1f93c-1f3fd",isCanonical:!0},":wrestling_tone3:":{unicode:["1f93c-1f3fd"],fname:"1f93c-1f3fd",uc:"1f93c-1f3fd",isCanonical:!1},":wrestlers_tone2:":{unicode:["1f93c-1f3fc"],fname:"1f93c-1f3fc",uc:"1f93c-1f3fc",isCanonical:!0},":wrestling_tone2:":{unicode:["1f93c-1f3fc"],fname:"1f93c-1f3fc",uc:"1f93c-1f3fc",isCanonical:!1},":wrestlers_tone1:":{unicode:["1f93c-1f3fb"],fname:"1f93c-1f3fb",uc:"1f93c-1f3fb",isCanonical:!0},":wrestling_tone1:":{unicode:["1f93c-1f3fb"],fname:"1f93c-1f3fb",uc:"1f93c-1f3fb",isCanonical:!1},":juggling_tone5:":{unicode:["1f939-1f3ff"],fname:"1f939-1f3ff",uc:"1f939-1f3ff",isCanonical:!0},":juggler_tone5:":{unicode:["1f939-1f3ff"],fname:"1f939-1f3ff",uc:"1f939-1f3ff",isCanonical:!1},":juggling_tone4:":{unicode:["1f939-1f3fe"],fname:"1f939-1f3fe",uc:"1f939-1f3fe",isCanonical:!0},":juggler_tone4:":{unicode:["1f939-1f3fe"],fname:"1f939-1f3fe",uc:"1f939-1f3fe",isCanonical:!1},":juggling_tone3:":{unicode:["1f939-1f3fd"],fname:"1f939-1f3fd",uc:"1f939-1f3fd",isCanonical:!0},":juggler_tone3:":{unicode:["1f939-1f3fd"],fname:"1f939-1f3fd",uc:"1f939-1f3fd",isCanonical:!1},":juggling_tone2:":{unicode:["1f939-1f3fc"],fname:"1f939-1f3fc",uc:"1f939-1f3fc",isCanonical:!0},":juggler_tone2:":{unicode:["1f939-1f3fc"],fname:"1f939-1f3fc",uc:"1f939-1f3fc",isCanonical:!1},":juggling_tone1:":{unicode:["1f939-1f3fb"],fname:"1f939-1f3fb",uc:"1f939-1f3fb",isCanonical:!0},":juggler_tone1:":{unicode:["1f939-1f3fb"],fname:"1f939-1f3fb",uc:"1f939-1f3fb",isCanonical:!1},":cartwheel_tone5:":{unicode:["1f938-1f3ff"],fname:"1f938-1f3ff",uc:"1f938-1f3ff",isCanonical:!0},":person_doing_cartwheel_tone5:":{unicode:["1f938-1f3ff"],fname:"1f938-1f3ff",uc:"1f938-1f3ff",isCanonical:!1},":cartwheel_tone4:":{unicode:["1f938-1f3fe"],fname:"1f938-1f3fe",uc:"1f938-1f3fe",isCanonical:!0},":person_doing_cartwheel_tone4:":{unicode:["1f938-1f3fe"],fname:"1f938-1f3fe",uc:"1f938-1f3fe",isCanonical:!1},":cartwheel_tone3:":{unicode:["1f938-1f3fd"],fname:"1f938-1f3fd",uc:"1f938-1f3fd",isCanonical:!0},":person_doing_cartwheel_tone3:":{unicode:["1f938-1f3fd"],fname:"1f938-1f3fd",uc:"1f938-1f3fd",isCanonical:!1},":cartwheel_tone2:":{unicode:["1f938-1f3fc"],fname:"1f938-1f3fc",uc:"1f938-1f3fc",isCanonical:!0},":person_doing_cartwheel_tone2:":{unicode:["1f938-1f3fc"],fname:"1f938-1f3fc",uc:"1f938-1f3fc",isCanonical:!1},":cartwheel_tone1:":{unicode:["1f938-1f3fb"],fname:"1f938-1f3fb",uc:"1f938-1f3fb",isCanonical:!0},":person_doing_cartwheel_tone1:":{unicode:["1f938-1f3fb"],fname:"1f938-1f3fb",uc:"1f938-1f3fb",isCanonical:!1},":shrug_tone5:":{unicode:["1f937-1f3ff"],fname:"1f937-1f3ff",uc:"1f937-1f3ff",isCanonical:!0},":shrug_tone4:":{unicode:["1f937-1f3fe"],fname:"1f937-1f3fe",uc:"1f937-1f3fe",isCanonical:!0},":shrug_tone3:":{unicode:["1f937-1f3fd"],fname:"1f937-1f3fd",uc:"1f937-1f3fd",isCanonical:!0},":shrug_tone2:":{unicode:["1f937-1f3fc"],fname:"1f937-1f3fc",uc:"1f937-1f3fc",isCanonical:!0},":shrug_tone1:":{unicode:["1f937-1f3fb"],fname:"1f937-1f3fb",uc:"1f937-1f3fb",isCanonical:!0},":mrs_claus_tone5:":{unicode:["1f936-1f3ff"],fname:"1f936-1f3ff",uc:"1f936-1f3ff",isCanonical:!0},":mother_christmas_tone5:":{unicode:["1f936-1f3ff"],fname:"1f936-1f3ff",uc:"1f936-1f3ff",isCanonical:!1},":mrs_claus_tone4:":{unicode:["1f936-1f3fe"],fname:"1f936-1f3fe",uc:"1f936-1f3fe",isCanonical:!0},":mother_christmas_tone4:":{unicode:["1f936-1f3fe"],fname:"1f936-1f3fe",uc:"1f936-1f3fe",isCanonical:!1},":mrs_claus_tone3:":{unicode:["1f936-1f3fd"],fname:"1f936-1f3fd",uc:"1f936-1f3fd",isCanonical:!0},":mother_christmas_tone3:":{unicode:["1f936-1f3fd"],fname:"1f936-1f3fd",uc:"1f936-1f3fd",isCanonical:!1},":mrs_claus_tone2:":{unicode:["1f936-1f3fc"],fname:"1f936-1f3fc",uc:"1f936-1f3fc",isCanonical:!0},":mother_christmas_tone2:":{unicode:["1f936-1f3fc"],fname:"1f936-1f3fc",uc:"1f936-1f3fc",isCanonical:!1},":mrs_claus_tone1:":{unicode:["1f936-1f3fb"],fname:"1f936-1f3fb",uc:"1f936-1f3fb",isCanonical:!0},":mother_christmas_tone1:":{unicode:["1f936-1f3fb"],fname:"1f936-1f3fb",uc:"1f936-1f3fb",isCanonical:!1},":man_in_tuxedo_tone5:":{unicode:["1f935-1f3ff"],fname:"1f935-1f3ff",uc:"1f935-1f3ff",isCanonical:!0},":tuxedo_tone5:":{unicode:["1f935-1f3ff"],fname:"1f935-1f3ff",uc:"1f935-1f3ff",isCanonical:!1},":man_in_tuxedo_tone4:":{unicode:["1f935-1f3fe"],fname:"1f935-1f3fe",uc:"1f935-1f3fe",isCanonical:!0},":tuxedo_tone4:":{unicode:["1f935-1f3fe"],fname:"1f935-1f3fe",uc:"1f935-1f3fe",isCanonical:!1},":man_in_tuxedo_tone3:":{unicode:["1f935-1f3fd"],fname:"1f935-1f3fd",uc:"1f935-1f3fd",isCanonical:!0},":tuxedo_tone3:":{unicode:["1f935-1f3fd"],fname:"1f935-1f3fd",uc:"1f935-1f3fd",isCanonical:!1},":man_in_tuxedo_tone2:":{unicode:["1f935-1f3fc"],fname:"1f935-1f3fc",uc:"1f935-1f3fc",isCanonical:!0},":tuxedo_tone2:":{unicode:["1f935-1f3fc"],fname:"1f935-1f3fc",uc:"1f935-1f3fc",isCanonical:!1},":man_in_tuxedo_tone1:":{unicode:["1f935-1f3fb"],fname:"1f935-1f3fb",uc:"1f935-1f3fb",isCanonical:!0},":tuxedo_tone1:":{unicode:["1f935-1f3fb"],fname:"1f935-1f3fb",uc:"1f935-1f3fb",isCanonical:!1},":prince_tone5:":{unicode:["1f934-1f3ff"],fname:"1f934-1f3ff",uc:"1f934-1f3ff",isCanonical:!0},":prince_tone4:":{unicode:["1f934-1f3fe"],fname:"1f934-1f3fe",uc:"1f934-1f3fe",isCanonical:!0},":prince_tone3:":{unicode:["1f934-1f3fd"],fname:"1f934-1f3fd",uc:"1f934-1f3fd",isCanonical:!0},":prince_tone2:":{unicode:["1f934-1f3fc"],fname:"1f934-1f3fc",uc:"1f934-1f3fc",isCanonical:!0},":prince_tone1:":{unicode:["1f934-1f3fb"],fname:"1f934-1f3fb",uc:"1f934-1f3fb",isCanonical:!0},":selfie_tone5:":{unicode:["1f933-1f3ff"],fname:"1f933-1f3ff",uc:"1f933-1f3ff",isCanonical:!0},":selfie_tone4:":{unicode:["1f933-1f3fe"],fname:"1f933-1f3fe",uc:"1f933-1f3fe",isCanonical:!0},":selfie_tone3:":{unicode:["1f933-1f3fd"],fname:"1f933-1f3fd",uc:"1f933-1f3fd",isCanonical:!0},":selfie_tone2:":{unicode:["1f933-1f3fc"],fname:"1f933-1f3fc",uc:"1f933-1f3fc",isCanonical:!0},":selfie_tone1:":{unicode:["1f933-1f3fb"],fname:"1f933-1f3fb",uc:"1f933-1f3fb",isCanonical:!0},":pregnant_woman_tone5:":{unicode:["1f930-1f3ff"],fname:"1f930-1f3ff",uc:"1f930-1f3ff",isCanonical:!0},":expecting_woman_tone5:":{unicode:["1f930-1f3ff"],fname:"1f930-1f3ff",uc:"1f930-1f3ff",isCanonical:!1},":pregnant_woman_tone4:":{unicode:["1f930-1f3fe"],fname:"1f930-1f3fe",uc:"1f930-1f3fe",isCanonical:!0},":expecting_woman_tone4:":{unicode:["1f930-1f3fe"],fname:"1f930-1f3fe",uc:"1f930-1f3fe",isCanonical:!1},":pregnant_woman_tone3:":{unicode:["1f930-1f3fd"],fname:"1f930-1f3fd",uc:"1f930-1f3fd",isCanonical:!0},":expecting_woman_tone3:":{unicode:["1f930-1f3fd"],fname:"1f930-1f3fd",uc:"1f930-1f3fd",isCanonical:!1},":pregnant_woman_tone2:":{unicode:["1f930-1f3fc"],fname:"1f930-1f3fc",uc:"1f930-1f3fc",isCanonical:!0},":expecting_woman_tone2:":{unicode:["1f930-1f3fc"],fname:"1f930-1f3fc",uc:"1f930-1f3fc",isCanonical:!1},":pregnant_woman_tone1:":{unicode:["1f930-1f3fb"],fname:"1f930-1f3fb",uc:"1f930-1f3fb",isCanonical:!0},":expecting_woman_tone1:":{unicode:["1f930-1f3fb"],fname:"1f930-1f3fb",uc:"1f930-1f3fb",isCanonical:!1},":face_palm_tone5:":{unicode:["1f926-1f3ff"],fname:"1f926-1f3ff",uc:"1f926-1f3ff",isCanonical:!0},":facepalm_tone5:":{unicode:["1f926-1f3ff"],fname:"1f926-1f3ff",uc:"1f926-1f3ff",isCanonical:!1},":face_palm_tone4:":{unicode:["1f926-1f3fe"],fname:"1f926-1f3fe",uc:"1f926-1f3fe",isCanonical:!0},":facepalm_tone4:":{unicode:["1f926-1f3fe"],fname:"1f926-1f3fe",uc:"1f926-1f3fe",isCanonical:!1},":face_palm_tone3:":{unicode:["1f926-1f3fd"],fname:"1f926-1f3fd",uc:"1f926-1f3fd",isCanonical:!0},":facepalm_tone3:":{unicode:["1f926-1f3fd"],fname:"1f926-1f3fd",uc:"1f926-1f3fd",isCanonical:!1},":face_palm_tone2:":{unicode:["1f926-1f3fc"],fname:"1f926-1f3fc",uc:"1f926-1f3fc",isCanonical:!0},":facepalm_tone2:":{unicode:["1f926-1f3fc"],fname:"1f926-1f3fc",uc:"1f926-1f3fc",isCanonical:!1},":face_palm_tone1:":{unicode:["1f926-1f3fb"],fname:"1f926-1f3fb",uc:"1f926-1f3fb",isCanonical:!0},":facepalm_tone1:":{unicode:["1f926-1f3fb"],fname:"1f926-1f3fb",uc:"1f926-1f3fb",isCanonical:!1},":fingers_crossed_tone5:":{unicode:["1f91e-1f3ff"],fname:"1f91e-1f3ff",uc:"1f91e-1f3ff",isCanonical:!0},":hand_with_index_and_middle_fingers_crossed_tone5:":{unicode:["1f91e-1f3ff"],fname:"1f91e-1f3ff",uc:"1f91e-1f3ff",isCanonical:!1},":fingers_crossed_tone4:":{unicode:["1f91e-1f3fe"],fname:"1f91e-1f3fe",uc:"1f91e-1f3fe",isCanonical:!0},":hand_with_index_and_middle_fingers_crossed_tone4:":{unicode:["1f91e-1f3fe"],fname:"1f91e-1f3fe",uc:"1f91e-1f3fe",isCanonical:!1},":fingers_crossed_tone3:":{unicode:["1f91e-1f3fd"],fname:"1f91e-1f3fd",uc:"1f91e-1f3fd",isCanonical:!0},":hand_with_index_and_middle_fingers_crossed_tone3:":{unicode:["1f91e-1f3fd"],fname:"1f91e-1f3fd",uc:"1f91e-1f3fd",isCanonical:!1},":fingers_crossed_tone2:":{unicode:["1f91e-1f3fc"],fname:"1f91e-1f3fc",uc:"1f91e-1f3fc",isCanonical:!0},":hand_with_index_and_middle_fingers_crossed_tone2:":{unicode:["1f91e-1f3fc"],fname:"1f91e-1f3fc",uc:"1f91e-1f3fc",isCanonical:!1},":fingers_crossed_tone1:":{unicode:["1f91e-1f3fb"],fname:"1f91e-1f3fb",uc:"1f91e-1f3fb",isCanonical:!0},":hand_with_index_and_middle_fingers_crossed_tone1:":{unicode:["1f91e-1f3fb"],fname:"1f91e-1f3fb",uc:"1f91e-1f3fb",isCanonical:!1},":handshake_tone5:":{unicode:["1f91d-1f3ff"],fname:"1f91d-1f3ff",uc:"1f91d-1f3ff",isCanonical:!0},":shaking_hands_tone5:":{unicode:["1f91d-1f3ff"],fname:"1f91d-1f3ff",uc:"1f91d-1f3ff",isCanonical:!1},":handshake_tone4:":{unicode:["1f91d-1f3fe"],fname:"1f91d-1f3fe",uc:"1f91d-1f3fe",isCanonical:!0},":shaking_hands_tone4:":{unicode:["1f91d-1f3fe"],fname:"1f91d-1f3fe",uc:"1f91d-1f3fe",isCanonical:!1},":handshake_tone3:":{unicode:["1f91d-1f3fd"],fname:"1f91d-1f3fd",uc:"1f91d-1f3fd",isCanonical:!0},":shaking_hands_tone3:":{unicode:["1f91d-1f3fd"],fname:"1f91d-1f3fd",uc:"1f91d-1f3fd",isCanonical:!1},":handshake_tone2:":{unicode:["1f91d-1f3fc"],fname:"1f91d-1f3fc",uc:"1f91d-1f3fc",isCanonical:!0},":shaking_hands_tone2:":{unicode:["1f91d-1f3fc"],fname:"1f91d-1f3fc",uc:"1f91d-1f3fc",isCanonical:!1},":handshake_tone1:":{unicode:["1f91d-1f3fb"],fname:"1f91d-1f3fb",uc:"1f91d-1f3fb",isCanonical:!0},":shaking_hands_tone1:":{unicode:["1f91d-1f3fb"],fname:"1f91d-1f3fb",uc:"1f91d-1f3fb",isCanonical:!1},":right_facing_fist_tone5:":{unicode:["1f91c-1f3ff"],fname:"1f91c-1f3ff",uc:"1f91c-1f3ff",isCanonical:!0},":right_fist_tone5:":{unicode:["1f91c-1f3ff"],fname:"1f91c-1f3ff",uc:"1f91c-1f3ff",isCanonical:!1},":right_facing_fist_tone4:":{unicode:["1f91c-1f3fe"],fname:"1f91c-1f3fe",uc:"1f91c-1f3fe",isCanonical:!0},":right_fist_tone4:":{unicode:["1f91c-1f3fe"],fname:"1f91c-1f3fe",uc:"1f91c-1f3fe",isCanonical:!1},":right_facing_fist_tone3:":{unicode:["1f91c-1f3fd"],fname:"1f91c-1f3fd",uc:"1f91c-1f3fd",isCanonical:!0},":right_fist_tone3:":{unicode:["1f91c-1f3fd"],fname:"1f91c-1f3fd",uc:"1f91c-1f3fd",isCanonical:!1},":right_facing_fist_tone2:":{unicode:["1f91c-1f3fc"],fname:"1f91c-1f3fc",uc:"1f91c-1f3fc",isCanonical:!0},":right_fist_tone2:":{unicode:["1f91c-1f3fc"],fname:"1f91c-1f3fc",uc:"1f91c-1f3fc",isCanonical:!1},":right_facing_fist_tone1:":{unicode:["1f91c-1f3fb"],fname:"1f91c-1f3fb",uc:"1f91c-1f3fb",isCanonical:!0},":right_fist_tone1:":{unicode:["1f91c-1f3fb"],fname:"1f91c-1f3fb",uc:"1f91c-1f3fb",isCanonical:!1},":left_facing_fist_tone5:":{unicode:["1f91b-1f3ff"],fname:"1f91b-1f3ff",uc:"1f91b-1f3ff",isCanonical:!0},":left_fist_tone5:":{unicode:["1f91b-1f3ff"],fname:"1f91b-1f3ff",uc:"1f91b-1f3ff",isCanonical:!1},":left_facing_fist_tone4:":{unicode:["1f91b-1f3fe"],fname:"1f91b-1f3fe",uc:"1f91b-1f3fe",isCanonical:!0},":left_fist_tone4:":{unicode:["1f91b-1f3fe"],fname:"1f91b-1f3fe",uc:"1f91b-1f3fe",isCanonical:!1},":left_facing_fist_tone3:":{unicode:["1f91b-1f3fd"],fname:"1f91b-1f3fd",uc:"1f91b-1f3fd",isCanonical:!0},":left_fist_tone3:":{unicode:["1f91b-1f3fd"],fname:"1f91b-1f3fd",uc:"1f91b-1f3fd",isCanonical:!1},":left_facing_fist_tone2:":{unicode:["1f91b-1f3fc"],fname:"1f91b-1f3fc",uc:"1f91b-1f3fc",isCanonical:!0},":left_fist_tone2:":{unicode:["1f91b-1f3fc"],fname:"1f91b-1f3fc",uc:"1f91b-1f3fc",isCanonical:!1},":left_facing_fist_tone1:":{unicode:["1f91b-1f3fb"],fname:"1f91b-1f3fb",uc:"1f91b-1f3fb",isCanonical:!0},":left_fist_tone1:":{unicode:["1f91b-1f3fb"],fname:"1f91b-1f3fb",uc:"1f91b-1f3fb",isCanonical:!1},":raised_back_of_hand_tone5:":{unicode:["1f91a-1f3ff"],fname:"1f91a-1f3ff",uc:"1f91a-1f3ff",isCanonical:!0},":back_of_hand_tone5:":{unicode:["1f91a-1f3ff"],fname:"1f91a-1f3ff",uc:"1f91a-1f3ff",isCanonical:!1},":raised_back_of_hand_tone4:":{unicode:["1f91a-1f3fe"],fname:"1f91a-1f3fe",uc:"1f91a-1f3fe",isCanonical:!0},":back_of_hand_tone4:":{unicode:["1f91a-1f3fe"],fname:"1f91a-1f3fe",uc:"1f91a-1f3fe",isCanonical:!1},":raised_back_of_hand_tone3:":{unicode:["1f91a-1f3fd"],fname:"1f91a-1f3fd",uc:"1f91a-1f3fd",isCanonical:!0},":back_of_hand_tone3:":{unicode:["1f91a-1f3fd"],fname:"1f91a-1f3fd",uc:"1f91a-1f3fd",isCanonical:!1},":raised_back_of_hand_tone2:":{unicode:["1f91a-1f3fc"],fname:"1f91a-1f3fc",uc:"1f91a-1f3fc",isCanonical:!0},":back_of_hand_tone2:":{unicode:["1f91a-1f3fc"],fname:"1f91a-1f3fc",uc:"1f91a-1f3fc",isCanonical:!1},":raised_back_of_hand_tone1:":{unicode:["1f91a-1f3fb"],fname:"1f91a-1f3fb",uc:"1f91a-1f3fb",isCanonical:!0},":back_of_hand_tone1:":{unicode:["1f91a-1f3fb"],fname:"1f91a-1f3fb",uc:"1f91a-1f3fb",isCanonical:!1},":call_me_tone5:":{unicode:["1f919-1f3ff"],fname:"1f919-1f3ff",uc:"1f919-1f3ff",isCanonical:!0},":call_me_hand_tone5:":{unicode:["1f919-1f3ff"],fname:"1f919-1f3ff",uc:"1f919-1f3ff",isCanonical:!1},":call_me_tone4:":{unicode:["1f919-1f3fe"],fname:"1f919-1f3fe",uc:"1f919-1f3fe",isCanonical:!0},":call_me_hand_tone4:":{unicode:["1f919-1f3fe"],fname:"1f919-1f3fe",uc:"1f919-1f3fe",isCanonical:!1},":call_me_tone3:":{unicode:["1f919-1f3fd"],fname:"1f919-1f3fd",uc:"1f919-1f3fd",isCanonical:!0},":call_me_hand_tone3:":{unicode:["1f919-1f3fd"],fname:"1f919-1f3fd",uc:"1f919-1f3fd",isCanonical:!1},":call_me_tone2:":{unicode:["1f919-1f3fc"],fname:"1f919-1f3fc",uc:"1f919-1f3fc",isCanonical:!0},":call_me_hand_tone2:":{unicode:["1f919-1f3fc"],fname:"1f919-1f3fc",uc:"1f919-1f3fc",isCanonical:!1},":call_me_tone1:":{unicode:["1f919-1f3fb"],fname:"1f919-1f3fb",uc:"1f919-1f3fb",isCanonical:!0},":call_me_hand_tone1:":{unicode:["1f919-1f3fb"],fname:"1f919-1f3fb",uc:"1f919-1f3fb",isCanonical:!1},":metal_tone5:":{unicode:["1f918-1f3ff"],fname:"1f918-1f3ff",uc:"1f918-1f3ff",isCanonical:!0},":sign_of_the_horns_tone5:":{unicode:["1f918-1f3ff"],fname:"1f918-1f3ff",uc:"1f918-1f3ff",isCanonical:!1},":metal_tone4:":{unicode:["1f918-1f3fe"],fname:"1f918-1f3fe",uc:"1f918-1f3fe",isCanonical:!0},":sign_of_the_horns_tone4:":{unicode:["1f918-1f3fe"],fname:"1f918-1f3fe",uc:"1f918-1f3fe",isCanonical:!1},":metal_tone3:":{unicode:["1f918-1f3fd"],fname:"1f918-1f3fd",uc:"1f918-1f3fd",isCanonical:!0},":sign_of_the_horns_tone3:":{unicode:["1f918-1f3fd"],fname:"1f918-1f3fd",uc:"1f918-1f3fd",isCanonical:!1},":metal_tone2:":{unicode:["1f918-1f3fc"],fname:"1f918-1f3fc",uc:"1f918-1f3fc",isCanonical:!0},":sign_of_the_horns_tone2:":{unicode:["1f918-1f3fc"],fname:"1f918-1f3fc",uc:"1f918-1f3fc",isCanonical:!1},":metal_tone1:":{unicode:["1f918-1f3fb"],fname:"1f918-1f3fb",uc:"1f918-1f3fb",isCanonical:!0},":sign_of_the_horns_tone1:":{unicode:["1f918-1f3fb"],fname:"1f918-1f3fb",uc:"1f918-1f3fb",isCanonical:!1},":bath_tone5:":{unicode:["1f6c0-1f3ff"],fname:"1f6c0-1f3ff",uc:"1f6c0-1f3ff",isCanonical:!0},":bath_tone4:":{unicode:["1f6c0-1f3fe"],fname:"1f6c0-1f3fe",uc:"1f6c0-1f3fe",isCanonical:!0},":bath_tone3:":{unicode:["1f6c0-1f3fd"],fname:"1f6c0-1f3fd",uc:"1f6c0-1f3fd",isCanonical:!0},":bath_tone2:":{unicode:["1f6c0-1f3fc"],fname:"1f6c0-1f3fc",uc:"1f6c0-1f3fc",isCanonical:!0},":bath_tone1:":{unicode:["1f6c0-1f3fb"],fname:"1f6c0-1f3fb",uc:"1f6c0-1f3fb",isCanonical:!0},":walking_tone5:":{unicode:["1f6b6-1f3ff"],fname:"1f6b6-1f3ff",uc:"1f6b6-1f3ff",isCanonical:!0},":walking_tone4:":{unicode:["1f6b6-1f3fe"],fname:"1f6b6-1f3fe",uc:"1f6b6-1f3fe",isCanonical:!0},":walking_tone3:":{unicode:["1f6b6-1f3fd"],fname:"1f6b6-1f3fd",uc:"1f6b6-1f3fd",isCanonical:!0},":walking_tone2:":{unicode:["1f6b6-1f3fc"],fname:"1f6b6-1f3fc",uc:"1f6b6-1f3fc",isCanonical:!0},":walking_tone1:":{unicode:["1f6b6-1f3fb"],fname:"1f6b6-1f3fb",uc:"1f6b6-1f3fb",isCanonical:!0},":mountain_bicyclist_tone5:":{unicode:["1f6b5-1f3ff"],fname:"1f6b5-1f3ff",uc:"1f6b5-1f3ff",isCanonical:!0},":mountain_bicyclist_tone4:":{unicode:["1f6b5-1f3fe"],fname:"1f6b5-1f3fe",uc:"1f6b5-1f3fe",isCanonical:!0},":mountain_bicyclist_tone3:":{unicode:["1f6b5-1f3fd"],fname:"1f6b5-1f3fd",uc:"1f6b5-1f3fd",isCanonical:!0},":mountain_bicyclist_tone2:":{unicode:["1f6b5-1f3fc"],fname:"1f6b5-1f3fc",uc:"1f6b5-1f3fc",isCanonical:!0},":mountain_bicyclist_tone1:":{unicode:["1f6b5-1f3fb"],fname:"1f6b5-1f3fb",uc:"1f6b5-1f3fb",isCanonical:!0},":bicyclist_tone5:":{unicode:["1f6b4-1f3ff"],fname:"1f6b4-1f3ff",uc:"1f6b4-1f3ff",isCanonical:!0},":bicyclist_tone4:":{unicode:["1f6b4-1f3fe"],fname:"1f6b4-1f3fe",uc:"1f6b4-1f3fe",isCanonical:!0},":bicyclist_tone3:":{unicode:["1f6b4-1f3fd"],fname:"1f6b4-1f3fd",uc:"1f6b4-1f3fd",isCanonical:!0},":bicyclist_tone2:":{unicode:["1f6b4-1f3fc"],fname:"1f6b4-1f3fc",uc:"1f6b4-1f3fc",isCanonical:!0},":bicyclist_tone1:":{unicode:["1f6b4-1f3fb"],fname:"1f6b4-1f3fb",uc:"1f6b4-1f3fb",isCanonical:!0},":rowboat_tone5:":{unicode:["1f6a3-1f3ff"],fname:"1f6a3-1f3ff",uc:"1f6a3-1f3ff",isCanonical:!0},":rowboat_tone4:":{unicode:["1f6a3-1f3fe"],fname:"1f6a3-1f3fe",uc:"1f6a3-1f3fe",isCanonical:!0},":rowboat_tone3:":{unicode:["1f6a3-1f3fd"],fname:"1f6a3-1f3fd",uc:"1f6a3-1f3fd",isCanonical:!0},":rowboat_tone2:":{unicode:["1f6a3-1f3fc"],fname:"1f6a3-1f3fc",uc:"1f6a3-1f3fc",isCanonical:!0},":rowboat_tone1:":{unicode:["1f6a3-1f3fb"],fname:"1f6a3-1f3fb",uc:"1f6a3-1f3fb",isCanonical:!0},":pray_tone5:":{unicode:["1f64f-1f3ff"],fname:"1f64f-1f3ff",uc:"1f64f-1f3ff",isCanonical:!0},":pray_tone4:":{unicode:["1f64f-1f3fe"],fname:"1f64f-1f3fe",uc:"1f64f-1f3fe",isCanonical:!0},":pray_tone3:":{unicode:["1f64f-1f3fd"],fname:"1f64f-1f3fd",uc:"1f64f-1f3fd",isCanonical:!0},":pray_tone2:":{unicode:["1f64f-1f3fc"],fname:"1f64f-1f3fc",uc:"1f64f-1f3fc",isCanonical:!0},":pray_tone1:":{unicode:["1f64f-1f3fb"],fname:"1f64f-1f3fb",uc:"1f64f-1f3fb",isCanonical:!0},":person_with_pouting_face_tone5:":{unicode:["1f64e-1f3ff"],fname:"1f64e-1f3ff",uc:"1f64e-1f3ff",isCanonical:!0},":person_with_pouting_face_tone4:":{unicode:["1f64e-1f3fe"],fname:"1f64e-1f3fe",uc:"1f64e-1f3fe",isCanonical:!0},":person_with_pouting_face_tone3:":{unicode:["1f64e-1f3fd"],fname:"1f64e-1f3fd",uc:"1f64e-1f3fd",isCanonical:!0},":person_with_pouting_face_tone2:":{unicode:["1f64e-1f3fc"],fname:"1f64e-1f3fc",uc:"1f64e-1f3fc",isCanonical:!0},":person_with_pouting_face_tone1:":{unicode:["1f64e-1f3fb"],fname:"1f64e-1f3fb",uc:"1f64e-1f3fb",isCanonical:!0},":person_frowning_tone5:":{unicode:["1f64d-1f3ff"],fname:"1f64d-1f3ff",uc:"1f64d-1f3ff",isCanonical:!0},":person_frowning_tone4:":{unicode:["1f64d-1f3fe"],fname:"1f64d-1f3fe",uc:"1f64d-1f3fe",isCanonical:!0},":person_frowning_tone3:":{unicode:["1f64d-1f3fd"],fname:"1f64d-1f3fd",uc:"1f64d-1f3fd",isCanonical:!0},":person_frowning_tone2:":{unicode:["1f64d-1f3fc"],fname:"1f64d-1f3fc",uc:"1f64d-1f3fc",isCanonical:!0},":person_frowning_tone1:":{unicode:["1f64d-1f3fb"],fname:"1f64d-1f3fb",uc:"1f64d-1f3fb",isCanonical:!0},":raised_hands_tone5:":{unicode:["1f64c-1f3ff"],fname:"1f64c-1f3ff",uc:"1f64c-1f3ff",isCanonical:!0},":raised_hands_tone4:":{unicode:["1f64c-1f3fe"],fname:"1f64c-1f3fe",uc:"1f64c-1f3fe",isCanonical:!0},":raised_hands_tone3:":{unicode:["1f64c-1f3fd"],fname:"1f64c-1f3fd",uc:"1f64c-1f3fd",isCanonical:!0},":raised_hands_tone2:":{unicode:["1f64c-1f3fc"],fname:"1f64c-1f3fc",uc:"1f64c-1f3fc",isCanonical:!0},":raised_hands_tone1:":{unicode:["1f64c-1f3fb"],fname:"1f64c-1f3fb",uc:"1f64c-1f3fb",isCanonical:!0},":raising_hand_tone5:":{unicode:["1f64b-1f3ff"],fname:"1f64b-1f3ff",uc:"1f64b-1f3ff",isCanonical:!0},":raising_hand_tone4:":{unicode:["1f64b-1f3fe"],fname:"1f64b-1f3fe",uc:"1f64b-1f3fe",isCanonical:!0},":raising_hand_tone3:":{unicode:["1f64b-1f3fd"],fname:"1f64b-1f3fd",uc:"1f64b-1f3fd",isCanonical:!0},":raising_hand_tone2:":{unicode:["1f64b-1f3fc"],fname:"1f64b-1f3fc",uc:"1f64b-1f3fc",isCanonical:!0},":raising_hand_tone1:":{unicode:["1f64b-1f3fb"],fname:"1f64b-1f3fb",uc:"1f64b-1f3fb",isCanonical:!0},":bow_tone5:":{unicode:["1f647-1f3ff"],fname:"1f647-1f3ff",uc:"1f647-1f3ff",isCanonical:!0},":bow_tone4:":{unicode:["1f647-1f3fe"],fname:"1f647-1f3fe",uc:"1f647-1f3fe",isCanonical:!0},":bow_tone3:":{unicode:["1f647-1f3fd"],fname:"1f647-1f3fd",uc:"1f647-1f3fd",isCanonical:!0},":bow_tone2:":{unicode:["1f647-1f3fc"],fname:"1f647-1f3fc",uc:"1f647-1f3fc",isCanonical:!0},":bow_tone1:":{unicode:["1f647-1f3fb"],fname:"1f647-1f3fb",uc:"1f647-1f3fb",isCanonical:!0},":ok_woman_tone5:":{unicode:["1f646-1f3ff"],fname:"1f646-1f3ff",uc:"1f646-1f3ff",isCanonical:!0},":ok_woman_tone4:":{unicode:["1f646-1f3fe"],fname:"1f646-1f3fe",uc:"1f646-1f3fe",isCanonical:!0},":ok_woman_tone3:":{unicode:["1f646-1f3fd"],fname:"1f646-1f3fd",uc:"1f646-1f3fd",isCanonical:!0},":ok_woman_tone2:":{unicode:["1f646-1f3fc"],fname:"1f646-1f3fc",uc:"1f646-1f3fc",isCanonical:!0},":ok_woman_tone1:":{unicode:["1f646-1f3fb"],fname:"1f646-1f3fb",uc:"1f646-1f3fb",isCanonical:!0},":no_good_tone5:":{unicode:["1f645-1f3ff"],fname:"1f645-1f3ff",uc:"1f645-1f3ff",isCanonical:!0},":no_good_tone4:":{unicode:["1f645-1f3fe"],fname:"1f645-1f3fe",uc:"1f645-1f3fe",isCanonical:!0},":no_good_tone3:":{unicode:["1f645-1f3fd"],fname:"1f645-1f3fd",uc:"1f645-1f3fd",isCanonical:!0},":no_good_tone2:":{unicode:["1f645-1f3fc"],fname:"1f645-1f3fc",uc:"1f645-1f3fc",isCanonical:!0},":no_good_tone1:":{unicode:["1f645-1f3fb"],fname:"1f645-1f3fb",uc:"1f645-1f3fb",isCanonical:!0},":vulcan_tone5:":{unicode:["1f596-1f3ff"],fname:"1f596-1f3ff",uc:"1f596-1f3ff",isCanonical:!0},":raised_hand_with_part_between_middle_and_ring_fingers_tone5:":{unicode:["1f596-1f3ff"],fname:"1f596-1f3ff",uc:"1f596-1f3ff",isCanonical:!1},":vulcan_tone4:":{unicode:["1f596-1f3fe"],fname:"1f596-1f3fe",uc:"1f596-1f3fe",isCanonical:!0},":raised_hand_with_part_between_middle_and_ring_fingers_tone4:":{unicode:["1f596-1f3fe"],fname:"1f596-1f3fe",uc:"1f596-1f3fe",isCanonical:!1},":vulcan_tone3:":{unicode:["1f596-1f3fd"],fname:"1f596-1f3fd",uc:"1f596-1f3fd",isCanonical:!0},":raised_hand_with_part_between_middle_and_ring_fingers_tone3:":{unicode:["1f596-1f3fd"],fname:"1f596-1f3fd",uc:"1f596-1f3fd",isCanonical:!1},":vulcan_tone2:":{unicode:["1f596-1f3fc"],fname:"1f596-1f3fc",uc:"1f596-1f3fc",isCanonical:!0},":raised_hand_with_part_between_middle_and_ring_fingers_tone2:":{unicode:["1f596-1f3fc"],fname:"1f596-1f3fc",uc:"1f596-1f3fc",isCanonical:!1},":vulcan_tone1:":{unicode:["1f596-1f3fb"],fname:"1f596-1f3fb",uc:"1f596-1f3fb",isCanonical:!0},":raised_hand_with_part_between_middle_and_ring_fingers_tone1:":{unicode:["1f596-1f3fb"],fname:"1f596-1f3fb",uc:"1f596-1f3fb",isCanonical:!1},":middle_finger_tone5:":{unicode:["1f595-1f3ff"],fname:"1f595-1f3ff",uc:"1f595-1f3ff",isCanonical:!0},":reversed_hand_with_middle_finger_extended_tone5:":{unicode:["1f595-1f3ff"],fname:"1f595-1f3ff",uc:"1f595-1f3ff",isCanonical:!1},":middle_finger_tone4:":{unicode:["1f595-1f3fe"],fname:"1f595-1f3fe",uc:"1f595-1f3fe",isCanonical:!0},":reversed_hand_with_middle_finger_extended_tone4:":{unicode:["1f595-1f3fe"],fname:"1f595-1f3fe",uc:"1f595-1f3fe",isCanonical:!1},":middle_finger_tone3:":{unicode:["1f595-1f3fd"],fname:"1f595-1f3fd",uc:"1f595-1f3fd",isCanonical:!0},":reversed_hand_with_middle_finger_extended_tone3:":{unicode:["1f595-1f3fd"],fname:"1f595-1f3fd",uc:"1f595-1f3fd",isCanonical:!1},":middle_finger_tone2:":{unicode:["1f595-1f3fc"],fname:"1f595-1f3fc",uc:"1f595-1f3fc",isCanonical:!0},":reversed_hand_with_middle_finger_extended_tone2:":{unicode:["1f595-1f3fc"],fname:"1f595-1f3fc",uc:"1f595-1f3fc",isCanonical:!1},":middle_finger_tone1:":{unicode:["1f595-1f3fb"],fname:"1f595-1f3fb",uc:"1f595-1f3fb",isCanonical:!0},":reversed_hand_with_middle_finger_extended_tone1:":{unicode:["1f595-1f3fb"],fname:"1f595-1f3fb",uc:"1f595-1f3fb",isCanonical:!1},":hand_splayed_tone5:":{unicode:["1f590-1f3ff"],fname:"1f590-1f3ff",uc:"1f590-1f3ff",isCanonical:!0},":raised_hand_with_fingers_splayed_tone5:":{unicode:["1f590-1f3ff"],fname:"1f590-1f3ff",uc:"1f590-1f3ff",isCanonical:!1},":hand_splayed_tone4:":{unicode:["1f590-1f3fe"],fname:"1f590-1f3fe",uc:"1f590-1f3fe",isCanonical:!0},":raised_hand_with_fingers_splayed_tone4:":{unicode:["1f590-1f3fe"],fname:"1f590-1f3fe",uc:"1f590-1f3fe",isCanonical:!1},":hand_splayed_tone3:":{unicode:["1f590-1f3fd"],fname:"1f590-1f3fd",uc:"1f590-1f3fd",isCanonical:!0},":raised_hand_with_fingers_splayed_tone3:":{unicode:["1f590-1f3fd"],fname:"1f590-1f3fd",uc:"1f590-1f3fd",isCanonical:!1},":hand_splayed_tone2:":{unicode:["1f590-1f3fc"],fname:"1f590-1f3fc",uc:"1f590-1f3fc",isCanonical:!0},":raised_hand_with_fingers_splayed_tone2:":{unicode:["1f590-1f3fc"],fname:"1f590-1f3fc",uc:"1f590-1f3fc",isCanonical:!1},":hand_splayed_tone1:":{unicode:["1f590-1f3fb"],fname:"1f590-1f3fb",uc:"1f590-1f3fb",isCanonical:!0},":raised_hand_with_fingers_splayed_tone1:":{unicode:["1f590-1f3fb"],fname:"1f590-1f3fb",uc:"1f590-1f3fb",isCanonical:!1},":man_dancing_tone5:":{unicode:["1f57a-1f3ff"],fname:"1f57a-1f3ff",uc:"1f57a-1f3ff",isCanonical:!0},":male_dancer_tone5:":{unicode:["1f57a-1f3ff"],fname:"1f57a-1f3ff",uc:"1f57a-1f3ff",isCanonical:!1},":man_dancing_tone4:":{unicode:["1f57a-1f3fe"],fname:"1f57a-1f3fe",uc:"1f57a-1f3fe",isCanonical:!0},":male_dancer_tone4:":{unicode:["1f57a-1f3fe"],fname:"1f57a-1f3fe",uc:"1f57a-1f3fe",isCanonical:!1},":man_dancing_tone3:":{unicode:["1f57a-1f3fd"],fname:"1f57a-1f3fd",uc:"1f57a-1f3fd",isCanonical:!0},":male_dancer_tone3:":{unicode:["1f57a-1f3fd"],fname:"1f57a-1f3fd",uc:"1f57a-1f3fd",isCanonical:!1},":man_dancing_tone2:":{unicode:["1f57a-1f3fc"],fname:"1f57a-1f3fc",uc:"1f57a-1f3fc",isCanonical:!0},":male_dancer_tone2:":{unicode:["1f57a-1f3fc"],fname:"1f57a-1f3fc",uc:"1f57a-1f3fc",isCanonical:!1},":man_dancing_tone1:":{unicode:["1f57a-1f3fb"],fname:"1f57a-1f3fb",uc:"1f57a-1f3fb",isCanonical:!0},":male_dancer_tone1:":{unicode:["1f57a-1f3fb"],fname:"1f57a-1f3fb",uc:"1f57a-1f3fb",isCanonical:!1},":spy_tone5:":{unicode:["1f575-1f3ff"],fname:"1f575-1f3ff",uc:"1f575-1f3ff",isCanonical:!0},":sleuth_or_spy_tone5:":{unicode:["1f575-1f3ff"],fname:"1f575-1f3ff",uc:"1f575-1f3ff",isCanonical:!1},":spy_tone4:":{unicode:["1f575-1f3fe"],fname:"1f575-1f3fe",uc:"1f575-1f3fe",isCanonical:!0},":sleuth_or_spy_tone4:":{unicode:["1f575-1f3fe"],fname:"1f575-1f3fe",uc:"1f575-1f3fe",isCanonical:!1},":spy_tone3:":{unicode:["1f575-1f3fd"],fname:"1f575-1f3fd",uc:"1f575-1f3fd",isCanonical:!0},":sleuth_or_spy_tone3:":{unicode:["1f575-1f3fd"],fname:"1f575-1f3fd",uc:"1f575-1f3fd",isCanonical:!1},":spy_tone2:":{unicode:["1f575-1f3fc"],fname:"1f575-1f3fc",uc:"1f575-1f3fc",isCanonical:!0},":sleuth_or_spy_tone2:":{unicode:["1f575-1f3fc"],fname:"1f575-1f3fc",uc:"1f575-1f3fc",isCanonical:!1},":spy_tone1:":{unicode:["1f575-1f3fb"],fname:"1f575-1f3fb",uc:"1f575-1f3fb",isCanonical:!0},":sleuth_or_spy_tone1:":{unicode:["1f575-1f3fb"],fname:"1f575-1f3fb",uc:"1f575-1f3fb",isCanonical:!1},":muscle_tone5:":{unicode:["1f4aa-1f3ff"],fname:"1f4aa-1f3ff",uc:"1f4aa-1f3ff",isCanonical:!0},":muscle_tone4:":{unicode:["1f4aa-1f3fe"],fname:"1f4aa-1f3fe",uc:"1f4aa-1f3fe",isCanonical:!0},":muscle_tone3:":{unicode:["1f4aa-1f3fd"],fname:"1f4aa-1f3fd",uc:"1f4aa-1f3fd",isCanonical:!0},":muscle_tone2:":{unicode:["1f4aa-1f3fc"],fname:"1f4aa-1f3fc",uc:"1f4aa-1f3fc",isCanonical:!0},":muscle_tone1:":{unicode:["1f4aa-1f3fb"],fname:"1f4aa-1f3fb",uc:"1f4aa-1f3fb",isCanonical:!0},":haircut_tone5:":{unicode:["1f487-1f3ff"],fname:"1f487-1f3ff",uc:"1f487-1f3ff",isCanonical:!0},":haircut_tone4:":{unicode:["1f487-1f3fe"],fname:"1f487-1f3fe",uc:"1f487-1f3fe",isCanonical:!0},":haircut_tone3:":{unicode:["1f487-1f3fd"],fname:"1f487-1f3fd",uc:"1f487-1f3fd",isCanonical:!0},":haircut_tone2:":{unicode:["1f487-1f3fc"],fname:"1f487-1f3fc",uc:"1f487-1f3fc",isCanonical:!0},":haircut_tone1:":{unicode:["1f487-1f3fb"],fname:"1f487-1f3fb",uc:"1f487-1f3fb",isCanonical:!0},":massage_tone5:":{unicode:["1f486-1f3ff"],fname:"1f486-1f3ff",uc:"1f486-1f3ff",isCanonical:!0},":massage_tone4:":{unicode:["1f486-1f3fe"],fname:"1f486-1f3fe",uc:"1f486-1f3fe",isCanonical:!0},":massage_tone3:":{unicode:["1f486-1f3fd"],fname:"1f486-1f3fd",uc:"1f486-1f3fd",isCanonical:!0},":massage_tone2:":{unicode:["1f486-1f3fc"],fname:"1f486-1f3fc",uc:"1f486-1f3fc",isCanonical:!0},":massage_tone1:":{unicode:["1f486-1f3fb"],fname:"1f486-1f3fb",uc:"1f486-1f3fb",isCanonical:!0},":nail_care_tone5:":{unicode:["1f485-1f3ff"],fname:"1f485-1f3ff",uc:"1f485-1f3ff",isCanonical:!0},":nail_care_tone4:":{unicode:["1f485-1f3fe"],fname:"1f485-1f3fe",uc:"1f485-1f3fe",isCanonical:!0},":nail_care_tone3:":{unicode:["1f485-1f3fd"],fname:"1f485-1f3fd",uc:"1f485-1f3fd",isCanonical:!0},":nail_care_tone2:":{unicode:["1f485-1f3fc"],fname:"1f485-1f3fc",uc:"1f485-1f3fc",isCanonical:!0},":nail_care_tone1:":{unicode:["1f485-1f3fb"],fname:"1f485-1f3fb",uc:"1f485-1f3fb",isCanonical:!0},":dancer_tone5:":{unicode:["1f483-1f3ff"],fname:"1f483-1f3ff",uc:"1f483-1f3ff",isCanonical:!0},":dancer_tone4:":{unicode:["1f483-1f3fe"],fname:"1f483-1f3fe",uc:"1f483-1f3fe",isCanonical:!0},":dancer_tone3:":{unicode:["1f483-1f3fd"],fname:"1f483-1f3fd",uc:"1f483-1f3fd",isCanonical:!0},":dancer_tone2:":{unicode:["1f483-1f3fc"],fname:"1f483-1f3fc",uc:"1f483-1f3fc",isCanonical:!0},":dancer_tone1:":{unicode:["1f483-1f3fb"],fname:"1f483-1f3fb",uc:"1f483-1f3fb",isCanonical:!0},":guardsman_tone5:":{unicode:["1f482-1f3ff"],fname:"1f482-1f3ff",uc:"1f482-1f3ff",isCanonical:!0},":guardsman_tone4:":{unicode:["1f482-1f3fe"],fname:"1f482-1f3fe",uc:"1f482-1f3fe",isCanonical:!0},":guardsman_tone3:":{unicode:["1f482-1f3fd"],fname:"1f482-1f3fd",uc:"1f482-1f3fd",isCanonical:!0},":guardsman_tone2:":{unicode:["1f482-1f3fc"],fname:"1f482-1f3fc",uc:"1f482-1f3fc",isCanonical:!0},":guardsman_tone1:":{unicode:["1f482-1f3fb"],fname:"1f482-1f3fb",uc:"1f482-1f3fb",isCanonical:!0},":information_desk_person_tone5:":{unicode:["1f481-1f3ff"],fname:"1f481-1f3ff",uc:"1f481-1f3ff",isCanonical:!0},":information_desk_person_tone4:":{unicode:["1f481-1f3fe"],fname:"1f481-1f3fe",uc:"1f481-1f3fe",isCanonical:!0},":information_desk_person_tone3:":{unicode:["1f481-1f3fd"],fname:"1f481-1f3fd",uc:"1f481-1f3fd",isCanonical:!0},":information_desk_person_tone2:":{unicode:["1f481-1f3fc"],fname:"1f481-1f3fc",uc:"1f481-1f3fc",isCanonical:!0},":information_desk_person_tone1:":{unicode:["1f481-1f3fb"],fname:"1f481-1f3fb",uc:"1f481-1f3fb",isCanonical:!0},":angel_tone5:":{unicode:["1f47c-1f3ff"],fname:"1f47c-1f3ff",uc:"1f47c-1f3ff",isCanonical:!0},":angel_tone4:":{unicode:["1f47c-1f3fe"],fname:"1f47c-1f3fe",uc:"1f47c-1f3fe",isCanonical:!0},":angel_tone3:":{unicode:["1f47c-1f3fd"],fname:"1f47c-1f3fd",uc:"1f47c-1f3fd",isCanonical:!0},":angel_tone2:":{unicode:["1f47c-1f3fc"],fname:"1f47c-1f3fc",uc:"1f47c-1f3fc",isCanonical:!0},":angel_tone1:":{unicode:["1f47c-1f3fb"],fname:"1f47c-1f3fb",uc:"1f47c-1f3fb",isCanonical:!0},":princess_tone5:":{unicode:["1f478-1f3ff"],fname:"1f478-1f3ff",uc:"1f478-1f3ff",isCanonical:!0},":princess_tone4:":{unicode:["1f478-1f3fe"],fname:"1f478-1f3fe",uc:"1f478-1f3fe",isCanonical:!0},":princess_tone3:":{unicode:["1f478-1f3fd"],fname:"1f478-1f3fd",uc:"1f478-1f3fd",isCanonical:!0},":princess_tone2:":{unicode:["1f478-1f3fc"],fname:"1f478-1f3fc",uc:"1f478-1f3fc",isCanonical:!0},":princess_tone1:":{unicode:["1f478-1f3fb"],fname:"1f478-1f3fb",uc:"1f478-1f3fb",isCanonical:!0},":construction_worker_tone5:":{unicode:["1f477-1f3ff"],fname:"1f477-1f3ff",uc:"1f477-1f3ff",isCanonical:!0},":construction_worker_tone4:":{unicode:["1f477-1f3fe"],fname:"1f477-1f3fe",uc:"1f477-1f3fe",isCanonical:!0},":construction_worker_tone3:":{unicode:["1f477-1f3fd"],fname:"1f477-1f3fd",uc:"1f477-1f3fd",isCanonical:!0},":construction_worker_tone2:":{unicode:["1f477-1f3fc"],fname:"1f477-1f3fc",uc:"1f477-1f3fc",isCanonical:!0},":construction_worker_tone1:":{unicode:["1f477-1f3fb"],fname:"1f477-1f3fb",uc:"1f477-1f3fb",isCanonical:!0},":baby_tone5:":{unicode:["1f476-1f3ff"],fname:"1f476-1f3ff",uc:"1f476-1f3ff",isCanonical:!0},":baby_tone4:":{unicode:["1f476-1f3fe"],fname:"1f476-1f3fe",uc:"1f476-1f3fe",isCanonical:!0},":baby_tone3:":{unicode:["1f476-1f3fd"],fname:"1f476-1f3fd",uc:"1f476-1f3fd",isCanonical:!0},":baby_tone2:":{unicode:["1f476-1f3fc"],fname:"1f476-1f3fc",uc:"1f476-1f3fc",isCanonical:!0},":baby_tone1:":{unicode:["1f476-1f3fb"],fname:"1f476-1f3fb",uc:"1f476-1f3fb",isCanonical:!0},":older_woman_tone5:":{unicode:["1f475-1f3ff"],fname:"1f475-1f3ff",uc:"1f475-1f3ff",isCanonical:!0},":grandma_tone5:":{unicode:["1f475-1f3ff"],fname:"1f475-1f3ff",uc:"1f475-1f3ff",isCanonical:!1},":older_woman_tone4:":{unicode:["1f475-1f3fe"],fname:"1f475-1f3fe",uc:"1f475-1f3fe",isCanonical:!0},":grandma_tone4:":{unicode:["1f475-1f3fe"],fname:"1f475-1f3fe",uc:"1f475-1f3fe",isCanonical:!1},":older_woman_tone3:":{unicode:["1f475-1f3fd"],fname:"1f475-1f3fd",uc:"1f475-1f3fd",isCanonical:!0},":grandma_tone3:":{unicode:["1f475-1f3fd"],fname:"1f475-1f3fd",uc:"1f475-1f3fd",isCanonical:!1},":older_woman_tone2:":{unicode:["1f475-1f3fc"],fname:"1f475-1f3fc",uc:"1f475-1f3fc",isCanonical:!0},":grandma_tone2:":{unicode:["1f475-1f3fc"],fname:"1f475-1f3fc",uc:"1f475-1f3fc",isCanonical:!1},":older_woman_tone1:":{unicode:["1f475-1f3fb"],fname:"1f475-1f3fb",uc:"1f475-1f3fb",isCanonical:!0},":grandma_tone1:":{unicode:["1f475-1f3fb"],fname:"1f475-1f3fb",uc:"1f475-1f3fb",isCanonical:!1},":older_man_tone5:":{unicode:["1f474-1f3ff"],fname:"1f474-1f3ff",uc:"1f474-1f3ff",isCanonical:!0},":older_man_tone4:":{unicode:["1f474-1f3fe"],fname:"1f474-1f3fe",uc:"1f474-1f3fe",isCanonical:!0},":older_man_tone3:":{unicode:["1f474-1f3fd"],fname:"1f474-1f3fd",uc:"1f474-1f3fd",isCanonical:!0},":older_man_tone2:":{unicode:["1f474-1f3fc"],fname:"1f474-1f3fc",uc:"1f474-1f3fc",isCanonical:!0},":older_man_tone1:":{unicode:["1f474-1f3fb"],fname:"1f474-1f3fb",uc:"1f474-1f3fb",isCanonical:!0},":man_with_turban_tone5:":{unicode:["1f473-1f3ff"],fname:"1f473-1f3ff",uc:"1f473-1f3ff",isCanonical:!0},":man_with_turban_tone4:":{unicode:["1f473-1f3fe"],fname:"1f473-1f3fe",uc:"1f473-1f3fe",isCanonical:!0},":man_with_turban_tone3:":{unicode:["1f473-1f3fd"],fname:"1f473-1f3fd",uc:"1f473-1f3fd",isCanonical:!0},":man_with_turban_tone2:":{unicode:["1f473-1f3fc"],fname:"1f473-1f3fc",uc:"1f473-1f3fc",isCanonical:!0},":man_with_turban_tone1:":{unicode:["1f473-1f3fb"],fname:"1f473-1f3fb",uc:"1f473-1f3fb",isCanonical:!0},":man_with_gua_pi_mao_tone5:":{unicode:["1f472-1f3ff"],fname:"1f472-1f3ff",uc:"1f472-1f3ff",isCanonical:!0},":man_with_gua_pi_mao_tone4:":{unicode:["1f472-1f3fe"],fname:"1f472-1f3fe",uc:"1f472-1f3fe",isCanonical:!0},":man_with_gua_pi_mao_tone3:":{unicode:["1f472-1f3fd"],fname:"1f472-1f3fd",uc:"1f472-1f3fd",isCanonical:!0},":man_with_gua_pi_mao_tone2:":{unicode:["1f472-1f3fc"],fname:"1f472-1f3fc",uc:"1f472-1f3fc",isCanonical:!0},":man_with_gua_pi_mao_tone1:":{unicode:["1f472-1f3fb"],fname:"1f472-1f3fb",uc:"1f472-1f3fb",isCanonical:!0},":person_with_blond_hair_tone5:":{unicode:["1f471-1f3ff"],fname:"1f471-1f3ff",uc:"1f471-1f3ff",isCanonical:!0},":person_with_blond_hair_tone4:":{unicode:["1f471-1f3fe"],fname:"1f471-1f3fe",uc:"1f471-1f3fe",isCanonical:!0},":person_with_blond_hair_tone3:":{unicode:["1f471-1f3fd"],fname:"1f471-1f3fd",uc:"1f471-1f3fd",isCanonical:!0},":person_with_blond_hair_tone2:":{unicode:["1f471-1f3fc"],fname:"1f471-1f3fc",uc:"1f471-1f3fc",isCanonical:!0},":person_with_blond_hair_tone1:":{unicode:["1f471-1f3fb"],fname:"1f471-1f3fb",uc:"1f471-1f3fb",isCanonical:!0},":bride_with_veil_tone5:":{unicode:["1f470-1f3ff"],fname:"1f470-1f3ff",uc:"1f470-1f3ff",isCanonical:!0},":bride_with_veil_tone4:":{unicode:["1f470-1f3fe"],fname:"1f470-1f3fe",uc:"1f470-1f3fe",isCanonical:!0},":bride_with_veil_tone3:":{unicode:["1f470-1f3fd"],fname:"1f470-1f3fd",uc:"1f470-1f3fd",isCanonical:!0},":bride_with_veil_tone2:":{unicode:["1f470-1f3fc"],fname:"1f470-1f3fc",uc:"1f470-1f3fc",isCanonical:!0},":bride_with_veil_tone1:":{unicode:["1f470-1f3fb"],fname:"1f470-1f3fb",uc:"1f470-1f3fb",isCanonical:!0},":cop_tone5:":{unicode:["1f46e-1f3ff"],fname:"1f46e-1f3ff",uc:"1f46e-1f3ff",isCanonical:!0},":cop_tone4:":{unicode:["1f46e-1f3fe"],fname:"1f46e-1f3fe",uc:"1f46e-1f3fe",isCanonical:!0},":cop_tone3:":{unicode:["1f46e-1f3fd"],fname:"1f46e-1f3fd",uc:"1f46e-1f3fd",isCanonical:!0},":cop_tone2:":{unicode:["1f46e-1f3fc"],fname:"1f46e-1f3fc",uc:"1f46e-1f3fc",isCanonical:!0},":cop_tone1:":{unicode:["1f46e-1f3fb"],fname:"1f46e-1f3fb",uc:"1f46e-1f3fb",isCanonical:!0},":woman_tone5:":{unicode:["1f469-1f3ff"],fname:"1f469-1f3ff",uc:"1f469-1f3ff",isCanonical:!0},":woman_tone4:":{unicode:["1f469-1f3fe"],fname:"1f469-1f3fe",uc:"1f469-1f3fe",isCanonical:!0},":woman_tone3:":{unicode:["1f469-1f3fd"],fname:"1f469-1f3fd",uc:"1f469-1f3fd",isCanonical:!0},":woman_tone2:":{unicode:["1f469-1f3fc"],fname:"1f469-1f3fc",uc:"1f469-1f3fc",isCanonical:!0},":woman_tone1:":{unicode:["1f469-1f3fb"],fname:"1f469-1f3fb",uc:"1f469-1f3fb",isCanonical:!0},":man_tone5:":{unicode:["1f468-1f3ff"],fname:"1f468-1f3ff",uc:"1f468-1f3ff",isCanonical:!0},":man_tone4:":{unicode:["1f468-1f3fe"],fname:"1f468-1f3fe",uc:"1f468-1f3fe",isCanonical:!0},":man_tone3:":{unicode:["1f468-1f3fd"],fname:"1f468-1f3fd",uc:"1f468-1f3fd",isCanonical:!0},":man_tone2:":{unicode:["1f468-1f3fc"],fname:"1f468-1f3fc",uc:"1f468-1f3fc",isCanonical:!0},":man_tone1:":{unicode:["1f468-1f3fb"],fname:"1f468-1f3fb",uc:"1f468-1f3fb",isCanonical:!0},":girl_tone5:":{unicode:["1f467-1f3ff"],fname:"1f467-1f3ff",uc:"1f467-1f3ff",isCanonical:!0},":girl_tone4:":{unicode:["1f467-1f3fe"],fname:"1f467-1f3fe",uc:"1f467-1f3fe",isCanonical:!0},":girl_tone3:":{unicode:["1f467-1f3fd"],fname:"1f467-1f3fd",uc:"1f467-1f3fd",isCanonical:!0},":girl_tone2:":{unicode:["1f467-1f3fc"],fname:"1f467-1f3fc",uc:"1f467-1f3fc",isCanonical:!0},":girl_tone1:":{unicode:["1f467-1f3fb"],fname:"1f467-1f3fb",uc:"1f467-1f3fb",isCanonical:!0},":boy_tone5:":{unicode:["1f466-1f3ff"],fname:"1f466-1f3ff",uc:"1f466-1f3ff",isCanonical:!0},":boy_tone4:":{unicode:["1f466-1f3fe"],fname:"1f466-1f3fe",uc:"1f466-1f3fe",isCanonical:!0},":boy_tone3:":{unicode:["1f466-1f3fd"],fname:"1f466-1f3fd",uc:"1f466-1f3fd",isCanonical:!0},":boy_tone2:":{unicode:["1f466-1f3fc"],fname:"1f466-1f3fc",uc:"1f466-1f3fc",isCanonical:!0},":boy_tone1:":{unicode:["1f466-1f3fb"],fname:"1f466-1f3fb",uc:"1f466-1f3fb",isCanonical:!0},":open_hands_tone5:":{unicode:["1f450-1f3ff"],fname:"1f450-1f3ff",uc:"1f450-1f3ff",isCanonical:!0},":open_hands_tone4:":{unicode:["1f450-1f3fe"],fname:"1f450-1f3fe",uc:"1f450-1f3fe",isCanonical:!0},":open_hands_tone3:":{unicode:["1f450-1f3fd"],fname:"1f450-1f3fd",uc:"1f450-1f3fd",isCanonical:!0},":open_hands_tone2:":{unicode:["1f450-1f3fc"],fname:"1f450-1f3fc",uc:"1f450-1f3fc",isCanonical:!0},":open_hands_tone1:":{unicode:["1f450-1f3fb"],fname:"1f450-1f3fb",uc:"1f450-1f3fb",isCanonical:!0},":clap_tone5:":{unicode:["1f44f-1f3ff"],fname:"1f44f-1f3ff",uc:"1f44f-1f3ff",isCanonical:!0},":clap_tone4:":{unicode:["1f44f-1f3fe"],fname:"1f44f-1f3fe",uc:"1f44f-1f3fe",isCanonical:!0},":clap_tone3:":{unicode:["1f44f-1f3fd"],fname:"1f44f-1f3fd",uc:"1f44f-1f3fd",isCanonical:!0},":clap_tone2:":{unicode:["1f44f-1f3fc"],fname:"1f44f-1f3fc",uc:"1f44f-1f3fc",isCanonical:!0},":clap_tone1:":{unicode:["1f44f-1f3fb"],fname:"1f44f-1f3fb",uc:"1f44f-1f3fb",isCanonical:!0},":thumbsdown_tone5:":{unicode:["1f44e-1f3ff"],fname:"1f44e-1f3ff",uc:"1f44e-1f3ff",isCanonical:!0},":-1_tone5:":{unicode:["1f44e-1f3ff"],fname:"1f44e-1f3ff",uc:"1f44e-1f3ff",isCanonical:!1},":thumbdown_tone5:":{unicode:["1f44e-1f3ff"],fname:"1f44e-1f3ff",uc:"1f44e-1f3ff",isCanonical:!1},":thumbsdown_tone4:":{unicode:["1f44e-1f3fe"],fname:"1f44e-1f3fe",uc:"1f44e-1f3fe",isCanonical:!0},":-1_tone4:":{unicode:["1f44e-1f3fe"],fname:"1f44e-1f3fe",uc:"1f44e-1f3fe",isCanonical:!1},":thumbdown_tone4:":{unicode:["1f44e-1f3fe"],fname:"1f44e-1f3fe",uc:"1f44e-1f3fe",isCanonical:!1},":thumbsdown_tone3:":{unicode:["1f44e-1f3fd"],fname:"1f44e-1f3fd",uc:"1f44e-1f3fd",isCanonical:!0},":-1_tone3:":{unicode:["1f44e-1f3fd"],fname:"1f44e-1f3fd",uc:"1f44e-1f3fd",isCanonical:!1},":thumbdown_tone3:":{unicode:["1f44e-1f3fd"],fname:"1f44e-1f3fd",uc:"1f44e-1f3fd",isCanonical:!1},":thumbsdown_tone2:":{unicode:["1f44e-1f3fc"],fname:"1f44e-1f3fc",uc:"1f44e-1f3fc",isCanonical:!0},":-1_tone2:":{unicode:["1f44e-1f3fc"],fname:"1f44e-1f3fc",uc:"1f44e-1f3fc",isCanonical:!1},":thumbdown_tone2:":{unicode:["1f44e-1f3fc"],fname:"1f44e-1f3fc",uc:"1f44e-1f3fc",isCanonical:!1},":thumbsdown_tone1:":{unicode:["1f44e-1f3fb"],fname:"1f44e-1f3fb",uc:"1f44e-1f3fb",isCanonical:!0},":-1_tone1:":{unicode:["1f44e-1f3fb"],fname:"1f44e-1f3fb",uc:"1f44e-1f3fb",isCanonical:!1},":thumbdown_tone1:":{unicode:["1f44e-1f3fb"],fname:"1f44e-1f3fb",uc:"1f44e-1f3fb",isCanonical:!1},":thumbsup_tone5:":{unicode:["1f44d-1f3ff"],fname:"1f44d-1f3ff",uc:"1f44d-1f3ff",isCanonical:!0},":+1_tone5:":{unicode:["1f44d-1f3ff"],fname:"1f44d-1f3ff",uc:"1f44d-1f3ff",isCanonical:!1},":thumbup_tone5:":{unicode:["1f44d-1f3ff"],fname:"1f44d-1f3ff",uc:"1f44d-1f3ff",isCanonical:!1},":thumbsup_tone4:":{unicode:["1f44d-1f3fe"],fname:"1f44d-1f3fe",uc:"1f44d-1f3fe",isCanonical:!0},":+1_tone4:":{unicode:["1f44d-1f3fe"],fname:"1f44d-1f3fe",uc:"1f44d-1f3fe",isCanonical:!1},":thumbup_tone4:":{unicode:["1f44d-1f3fe"],fname:"1f44d-1f3fe",uc:"1f44d-1f3fe",isCanonical:!1},":thumbsup_tone3:":{unicode:["1f44d-1f3fd"],fname:"1f44d-1f3fd",uc:"1f44d-1f3fd",isCanonical:!0},":+1_tone3:":{unicode:["1f44d-1f3fd"],fname:"1f44d-1f3fd",uc:"1f44d-1f3fd",isCanonical:!1},":thumbup_tone3:":{unicode:["1f44d-1f3fd"],fname:"1f44d-1f3fd",uc:"1f44d-1f3fd",isCanonical:!1},":thumbsup_tone2:":{unicode:["1f44d-1f3fc"],fname:"1f44d-1f3fc",uc:"1f44d-1f3fc",isCanonical:!0},":+1_tone2:":{unicode:["1f44d-1f3fc"],fname:"1f44d-1f3fc",uc:"1f44d-1f3fc",isCanonical:!1},":thumbup_tone2:":{unicode:["1f44d-1f3fc"],fname:"1f44d-1f3fc",uc:"1f44d-1f3fc",isCanonical:!1},":thumbsup_tone1:":{unicode:["1f44d-1f3fb"],fname:"1f44d-1f3fb",uc:"1f44d-1f3fb",isCanonical:!0},":+1_tone1:":{unicode:["1f44d-1f3fb"],fname:"1f44d-1f3fb",uc:"1f44d-1f3fb",isCanonical:!1},":thumbup_tone1:":{unicode:["1f44d-1f3fb"],fname:"1f44d-1f3fb",uc:"1f44d-1f3fb",isCanonical:!1},":ok_hand_tone5:":{unicode:["1f44c-1f3ff"],fname:"1f44c-1f3ff",uc:"1f44c-1f3ff",isCanonical:!0},":ok_hand_tone4:":{unicode:["1f44c-1f3fe"],fname:"1f44c-1f3fe",uc:"1f44c-1f3fe",isCanonical:!0},":ok_hand_tone3:":{unicode:["1f44c-1f3fd"],fname:"1f44c-1f3fd",uc:"1f44c-1f3fd",isCanonical:!0},":ok_hand_tone2:":{unicode:["1f44c-1f3fc"],fname:"1f44c-1f3fc",uc:"1f44c-1f3fc",isCanonical:!0},":ok_hand_tone1:":{unicode:["1f44c-1f3fb"],fname:"1f44c-1f3fb",uc:"1f44c-1f3fb",isCanonical:!0},":wave_tone5:":{unicode:["1f44b-1f3ff"],fname:"1f44b-1f3ff",uc:"1f44b-1f3ff",isCanonical:!0},":wave_tone4:":{unicode:["1f44b-1f3fe"],fname:"1f44b-1f3fe",uc:"1f44b-1f3fe",isCanonical:!0},":wave_tone3:":{unicode:["1f44b-1f3fd"],fname:"1f44b-1f3fd",uc:"1f44b-1f3fd",isCanonical:!0},":wave_tone2:":{unicode:["1f44b-1f3fc"],fname:"1f44b-1f3fc",uc:"1f44b-1f3fc",isCanonical:!0},":wave_tone1:":{unicode:["1f44b-1f3fb"],fname:"1f44b-1f3fb",uc:"1f44b-1f3fb",isCanonical:!0},":punch_tone5:":{unicode:["1f44a-1f3ff"],fname:"1f44a-1f3ff",uc:"1f44a-1f3ff",isCanonical:!0},":punch_tone4:":{unicode:["1f44a-1f3fe"],fname:"1f44a-1f3fe",uc:"1f44a-1f3fe",isCanonical:!0},":punch_tone3:":{unicode:["1f44a-1f3fd"],fname:"1f44a-1f3fd",uc:"1f44a-1f3fd",isCanonical:!0},":punch_tone2:":{unicode:["1f44a-1f3fc"],fname:"1f44a-1f3fc",uc:"1f44a-1f3fc",isCanonical:!0},":punch_tone1:":{unicode:["1f44a-1f3fb"],fname:"1f44a-1f3fb",uc:"1f44a-1f3fb",isCanonical:!0},":point_right_tone5:":{unicode:["1f449-1f3ff"],fname:"1f449-1f3ff",uc:"1f449-1f3ff",isCanonical:!0},":point_right_tone4:":{unicode:["1f449-1f3fe"],fname:"1f449-1f3fe",uc:"1f449-1f3fe",isCanonical:!0},":point_right_tone3:":{unicode:["1f449-1f3fd"],fname:"1f449-1f3fd",uc:"1f449-1f3fd",isCanonical:!0},":point_right_tone2:":{unicode:["1f449-1f3fc"],fname:"1f449-1f3fc",uc:"1f449-1f3fc",isCanonical:!0},":point_right_tone1:":{unicode:["1f449-1f3fb"],fname:"1f449-1f3fb",uc:"1f449-1f3fb",isCanonical:!0},":point_left_tone5:":{unicode:["1f448-1f3ff"],fname:"1f448-1f3ff",uc:"1f448-1f3ff",isCanonical:!0},":point_left_tone4:":{unicode:["1f448-1f3fe"],fname:"1f448-1f3fe",uc:"1f448-1f3fe",isCanonical:!0},":point_left_tone3:":{unicode:["1f448-1f3fd"],fname:"1f448-1f3fd",uc:"1f448-1f3fd",isCanonical:!0},":point_left_tone2:":{unicode:["1f448-1f3fc"],fname:"1f448-1f3fc",uc:"1f448-1f3fc",isCanonical:!0},":point_left_tone1:":{unicode:["1f448-1f3fb"],fname:"1f448-1f3fb",uc:"1f448-1f3fb",isCanonical:!0},":point_down_tone5:":{unicode:["1f447-1f3ff"],fname:"1f447-1f3ff",uc:"1f447-1f3ff",isCanonical:!0},":point_down_tone4:":{unicode:["1f447-1f3fe"],fname:"1f447-1f3fe",uc:"1f447-1f3fe",isCanonical:!0},":point_down_tone3:":{unicode:["1f447-1f3fd"],fname:"1f447-1f3fd",uc:"1f447-1f3fd",isCanonical:!0},":point_down_tone2:":{unicode:["1f447-1f3fc"],fname:"1f447-1f3fc",uc:"1f447-1f3fc",isCanonical:!0},":point_down_tone1:":{unicode:["1f447-1f3fb"],fname:"1f447-1f3fb",uc:"1f447-1f3fb",isCanonical:!0},":point_up_2_tone5:":{unicode:["1f446-1f3ff"],fname:"1f446-1f3ff",uc:"1f446-1f3ff",isCanonical:!0},":point_up_2_tone4:":{unicode:["1f446-1f3fe"],fname:"1f446-1f3fe",uc:"1f446-1f3fe",isCanonical:!0},":point_up_2_tone3:":{unicode:["1f446-1f3fd"],fname:"1f446-1f3fd",uc:"1f446-1f3fd",isCanonical:!0},":point_up_2_tone2:":{unicode:["1f446-1f3fc"],fname:"1f446-1f3fc",uc:"1f446-1f3fc",isCanonical:!0},":point_up_2_tone1:":{unicode:["1f446-1f3fb"],fname:"1f446-1f3fb",uc:"1f446-1f3fb",isCanonical:!0},":nose_tone5:":{unicode:["1f443-1f3ff"],fname:"1f443-1f3ff",uc:"1f443-1f3ff",isCanonical:!0},":nose_tone4:":{unicode:["1f443-1f3fe"],fname:"1f443-1f3fe",uc:"1f443-1f3fe",isCanonical:!0},":nose_tone3:":{unicode:["1f443-1f3fd"],fname:"1f443-1f3fd",uc:"1f443-1f3fd",isCanonical:!0},":nose_tone2:":{unicode:["1f443-1f3fc"],fname:"1f443-1f3fc",uc:"1f443-1f3fc",isCanonical:!0},":nose_tone1:":{unicode:["1f443-1f3fb"],fname:"1f443-1f3fb",uc:"1f443-1f3fb",isCanonical:!0},":ear_tone5:":{unicode:["1f442-1f3ff"],fname:"1f442-1f3ff",uc:"1f442-1f3ff",isCanonical:!0},":ear_tone4:":{unicode:["1f442-1f3fe"],fname:"1f442-1f3fe",uc:"1f442-1f3fe",isCanonical:!0},":ear_tone3:":{unicode:["1f442-1f3fd"],fname:"1f442-1f3fd",uc:"1f442-1f3fd",isCanonical:!0},":ear_tone2:":{unicode:["1f442-1f3fc"],fname:"1f442-1f3fc",uc:"1f442-1f3fc",isCanonical:!0},":ear_tone1:":{unicode:["1f442-1f3fb"],fname:"1f442-1f3fb",uc:"1f442-1f3fb",isCanonical:!0},":lifter_tone5:":{unicode:["1f3cb-1f3ff"],fname:"1f3cb-1f3ff",uc:"1f3cb-1f3ff",isCanonical:!0},":weight_lifter_tone5:":{unicode:["1f3cb-1f3ff"],fname:"1f3cb-1f3ff",uc:"1f3cb-1f3ff",isCanonical:!1},":lifter_tone4:":{unicode:["1f3cb-1f3fe"],fname:"1f3cb-1f3fe",uc:"1f3cb-1f3fe",isCanonical:!0},":weight_lifter_tone4:":{unicode:["1f3cb-1f3fe"],fname:"1f3cb-1f3fe",uc:"1f3cb-1f3fe",isCanonical:!1},":lifter_tone3:":{unicode:["1f3cb-1f3fd"],fname:"1f3cb-1f3fd",uc:"1f3cb-1f3fd",isCanonical:!0},":weight_lifter_tone3:":{unicode:["1f3cb-1f3fd"],fname:"1f3cb-1f3fd",uc:"1f3cb-1f3fd",isCanonical:!1},":lifter_tone2:":{unicode:["1f3cb-1f3fc"],fname:"1f3cb-1f3fc",uc:"1f3cb-1f3fc",isCanonical:!0},":weight_lifter_tone2:":{unicode:["1f3cb-1f3fc"],fname:"1f3cb-1f3fc",uc:"1f3cb-1f3fc",isCanonical:!1},":lifter_tone1:":{unicode:["1f3cb-1f3fb"],fname:"1f3cb-1f3fb",uc:"1f3cb-1f3fb",isCanonical:!0},":weight_lifter_tone1:":{unicode:["1f3cb-1f3fb"],fname:"1f3cb-1f3fb",uc:"1f3cb-1f3fb",isCanonical:!1},":swimmer_tone5:":{unicode:["1f3ca-1f3ff"],fname:"1f3ca-1f3ff",uc:"1f3ca-1f3ff",isCanonical:!0},":swimmer_tone4:":{unicode:["1f3ca-1f3fe"],fname:"1f3ca-1f3fe",uc:"1f3ca-1f3fe",isCanonical:!0},":swimmer_tone3:":{unicode:["1f3ca-1f3fd"],fname:"1f3ca-1f3fd",uc:"1f3ca-1f3fd",isCanonical:!0},":swimmer_tone2:":{unicode:["1f3ca-1f3fc"],fname:"1f3ca-1f3fc",uc:"1f3ca-1f3fc",isCanonical:!0},":swimmer_tone1:":{unicode:["1f3ca-1f3fb"],fname:"1f3ca-1f3fb",uc:"1f3ca-1f3fb",isCanonical:!0},":horse_racing_tone5:":{unicode:["1f3c7-1f3ff"],fname:"1f3c7-1f3ff",uc:"1f3c7-1f3ff",isCanonical:!0},":horse_racing_tone4:":{unicode:["1f3c7-1f3fe"],fname:"1f3c7-1f3fe",uc:"1f3c7-1f3fe",isCanonical:!0},":horse_racing_tone3:":{unicode:["1f3c7-1f3fd"],fname:"1f3c7-1f3fd",uc:"1f3c7-1f3fd",isCanonical:!0},":horse_racing_tone2:":{unicode:["1f3c7-1f3fc"],fname:"1f3c7-1f3fc",uc:"1f3c7-1f3fc",isCanonical:!0},":horse_racing_tone1:":{unicode:["1f3c7-1f3fb"],fname:"1f3c7-1f3fb",uc:"1f3c7-1f3fb",isCanonical:!0},":surfer_tone5:":{unicode:["1f3c4-1f3ff"],fname:"1f3c4-1f3ff",uc:"1f3c4-1f3ff",isCanonical:!0},":surfer_tone4:":{unicode:["1f3c4-1f3fe"],fname:"1f3c4-1f3fe",uc:"1f3c4-1f3fe",isCanonical:!0},":surfer_tone3:":{unicode:["1f3c4-1f3fd"],fname:"1f3c4-1f3fd",uc:"1f3c4-1f3fd",isCanonical:!0},":surfer_tone2:":{unicode:["1f3c4-1f3fc"],fname:"1f3c4-1f3fc",uc:"1f3c4-1f3fc",isCanonical:!0},":surfer_tone1:":{unicode:["1f3c4-1f3fb"],fname:"1f3c4-1f3fb",uc:"1f3c4-1f3fb",isCanonical:!0},":runner_tone5:":{unicode:["1f3c3-1f3ff"],fname:"1f3c3-1f3ff",uc:"1f3c3-1f3ff",isCanonical:!0},":runner_tone4:":{unicode:["1f3c3-1f3fe"],fname:"1f3c3-1f3fe",uc:"1f3c3-1f3fe",isCanonical:!0},":runner_tone3:":{unicode:["1f3c3-1f3fd"],fname:"1f3c3-1f3fd",uc:"1f3c3-1f3fd",isCanonical:!0},":runner_tone2:":{unicode:["1f3c3-1f3fc"],fname:"1f3c3-1f3fc",uc:"1f3c3-1f3fc",isCanonical:!0},":runner_tone1:":{unicode:["1f3c3-1f3fb"],fname:"1f3c3-1f3fb",uc:"1f3c3-1f3fb",isCanonical:!0},":santa_tone5:":{unicode:["1f385-1f3ff"],fname:"1f385-1f3ff",uc:"1f385-1f3ff",isCanonical:!0},":santa_tone4:":{unicode:["1f385-1f3fe"],fname:"1f385-1f3fe",uc:"1f385-1f3fe",isCanonical:!0},":santa_tone3:":{unicode:["1f385-1f3fd"],fname:"1f385-1f3fd",uc:"1f385-1f3fd",isCanonical:!0},":santa_tone2:":{unicode:["1f385-1f3fc"],fname:"1f385-1f3fc",uc:"1f385-1f3fc",isCanonical:!0},":santa_tone1:":{unicode:["1f385-1f3fb"],fname:"1f385-1f3fb",uc:"1f385-1f3fb",isCanonical:!0},":flag_zw:":{unicode:["1f1ff-1f1fc"],fname:"1f1ff-1f1fc",uc:"1f1ff-1f1fc",isCanonical:!0},":zw:":{unicode:["1f1ff-1f1fc"],fname:"1f1ff-1f1fc",uc:"1f1ff-1f1fc",isCanonical:!1},":flag_zm:":{unicode:["1f1ff-1f1f2"],fname:"1f1ff-1f1f2",uc:"1f1ff-1f1f2",isCanonical:!0},":zm:":{unicode:["1f1ff-1f1f2"],fname:"1f1ff-1f1f2",uc:"1f1ff-1f1f2",isCanonical:!1},":flag_za:":{unicode:["1f1ff-1f1e6"],fname:"1f1ff-1f1e6",uc:"1f1ff-1f1e6",isCanonical:!0},":za:":{unicode:["1f1ff-1f1e6"],fname:"1f1ff-1f1e6",uc:"1f1ff-1f1e6",isCanonical:!1},":flag_yt:":{unicode:["1f1fe-1f1f9"],fname:"1f1fe-1f1f9",uc:"1f1fe-1f1f9",isCanonical:!0},":yt:":{unicode:["1f1fe-1f1f9"],fname:"1f1fe-1f1f9",uc:"1f1fe-1f1f9",isCanonical:!1},":flag_ye:":{unicode:["1f1fe-1f1ea"],fname:"1f1fe-1f1ea",uc:"1f1fe-1f1ea",isCanonical:!0},":ye:":{unicode:["1f1fe-1f1ea"],fname:"1f1fe-1f1ea",uc:"1f1fe-1f1ea",isCanonical:!1},":flag_xk:":{unicode:["1f1fd-1f1f0"],fname:"1f1fd-1f1f0",uc:"1f1fd-1f1f0",isCanonical:!0},":xk:":{unicode:["1f1fd-1f1f0"],fname:"1f1fd-1f1f0",uc:"1f1fd-1f1f0",isCanonical:!1},":flag_ws:":{unicode:["1f1fc-1f1f8"],fname:"1f1fc-1f1f8",uc:"1f1fc-1f1f8",isCanonical:!0},":ws:":{unicode:["1f1fc-1f1f8"],fname:"1f1fc-1f1f8",uc:"1f1fc-1f1f8",isCanonical:!1},":flag_wf:":{unicode:["1f1fc-1f1eb"],fname:"1f1fc-1f1eb",uc:"1f1fc-1f1eb",isCanonical:!0},":wf:":{unicode:["1f1fc-1f1eb"],fname:"1f1fc-1f1eb",uc:"1f1fc-1f1eb",isCanonical:!1},":flag_vu:":{unicode:["1f1fb-1f1fa"],fname:"1f1fb-1f1fa",uc:"1f1fb-1f1fa",isCanonical:!0},":vu:":{unicode:["1f1fb-1f1fa"],fname:"1f1fb-1f1fa",uc:"1f1fb-1f1fa",isCanonical:!1},":flag_vn:":{unicode:["1f1fb-1f1f3"],fname:"1f1fb-1f1f3",uc:"1f1fb-1f1f3",isCanonical:!0},":vn:":{unicode:["1f1fb-1f1f3"],fname:"1f1fb-1f1f3",uc:"1f1fb-1f1f3",isCanonical:!1},":flag_vi:":{unicode:["1f1fb-1f1ee"],fname:"1f1fb-1f1ee",uc:"1f1fb-1f1ee",isCanonical:!0},":vi:":{unicode:["1f1fb-1f1ee"],fname:"1f1fb-1f1ee",uc:"1f1fb-1f1ee",isCanonical:!1},":flag_vg:":{unicode:["1f1fb-1f1ec"],fname:"1f1fb-1f1ec",uc:"1f1fb-1f1ec",isCanonical:!0},":vg:":{unicode:["1f1fb-1f1ec"],fname:"1f1fb-1f1ec",uc:"1f1fb-1f1ec",isCanonical:!1},":flag_ve:":{unicode:["1f1fb-1f1ea"],fname:"1f1fb-1f1ea",uc:"1f1fb-1f1ea",isCanonical:!0},":ve:":{unicode:["1f1fb-1f1ea"],fname:"1f1fb-1f1ea",uc:"1f1fb-1f1ea",isCanonical:!1},":flag_vc:":{unicode:["1f1fb-1f1e8"],fname:"1f1fb-1f1e8",uc:"1f1fb-1f1e8",isCanonical:!0},":vc:":{unicode:["1f1fb-1f1e8"],fname:"1f1fb-1f1e8",uc:"1f1fb-1f1e8",isCanonical:!1},":flag_va:":{unicode:["1f1fb-1f1e6"],fname:"1f1fb-1f1e6",uc:"1f1fb-1f1e6",isCanonical:!0},":va:":{unicode:["1f1fb-1f1e6"],fname:"1f1fb-1f1e6",uc:"1f1fb-1f1e6",isCanonical:!1},":flag_uz:":{unicode:["1f1fa-1f1ff"],fname:"1f1fa-1f1ff",uc:"1f1fa-1f1ff",isCanonical:!0},":uz:":{unicode:["1f1fa-1f1ff"],fname:"1f1fa-1f1ff",uc:"1f1fa-1f1ff",isCanonical:!1},":flag_uy:":{unicode:["1f1fa-1f1fe"],fname:"1f1fa-1f1fe",uc:"1f1fa-1f1fe",isCanonical:!0},":uy:":{unicode:["1f1fa-1f1fe"],fname:"1f1fa-1f1fe",uc:"1f1fa-1f1fe",isCanonical:!1},":flag_us:":{unicode:["1f1fa-1f1f8"],fname:"1f1fa-1f1f8",uc:"1f1fa-1f1f8",isCanonical:!0},":us:":{unicode:["1f1fa-1f1f8"],fname:"1f1fa-1f1f8",uc:"1f1fa-1f1f8",isCanonical:!1},":flag_um:":{unicode:["1f1fa-1f1f2"],fname:"1f1fa-1f1f2",uc:"1f1fa-1f1f2",isCanonical:!0},":um:":{unicode:["1f1fa-1f1f2"],fname:"1f1fa-1f1f2",uc:"1f1fa-1f1f2",isCanonical:!1},":flag_ug:":{unicode:["1f1fa-1f1ec"],fname:"1f1fa-1f1ec",uc:"1f1fa-1f1ec",isCanonical:!0},":ug:":{unicode:["1f1fa-1f1ec"],fname:"1f1fa-1f1ec",uc:"1f1fa-1f1ec",isCanonical:!1},":flag_ua:":{unicode:["1f1fa-1f1e6"],fname:"1f1fa-1f1e6",uc:"1f1fa-1f1e6",isCanonical:!0},":ua:":{unicode:["1f1fa-1f1e6"],fname:"1f1fa-1f1e6",uc:"1f1fa-1f1e6",isCanonical:!1},":flag_tz:":{unicode:["1f1f9-1f1ff"],fname:"1f1f9-1f1ff",uc:"1f1f9-1f1ff",isCanonical:!0},":tz:":{unicode:["1f1f9-1f1ff"],fname:"1f1f9-1f1ff",uc:"1f1f9-1f1ff",isCanonical:!1},":flag_tw:":{unicode:["1f1f9-1f1fc"],fname:"1f1f9-1f1fc",uc:"1f1f9-1f1fc",isCanonical:!0},":tw:":{unicode:["1f1f9-1f1fc"],fname:"1f1f9-1f1fc",uc:"1f1f9-1f1fc",isCanonical:!1},":flag_tv:":{unicode:["1f1f9-1f1fb"],fname:"1f1f9-1f1fb",uc:"1f1f9-1f1fb",isCanonical:!0},":tuvalu:":{unicode:["1f1f9-1f1fb"],fname:"1f1f9-1f1fb",uc:"1f1f9-1f1fb",isCanonical:!1},":flag_tt:":{unicode:["1f1f9-1f1f9"],fname:"1f1f9-1f1f9",uc:"1f1f9-1f1f9",isCanonical:!0},":tt:":{unicode:["1f1f9-1f1f9"],fname:"1f1f9-1f1f9",uc:"1f1f9-1f1f9",isCanonical:!1},":flag_tr:":{unicode:["1f1f9-1f1f7"],fname:"1f1f9-1f1f7",uc:"1f1f9-1f1f7",isCanonical:!0},":tr:":{unicode:["1f1f9-1f1f7"],fname:"1f1f9-1f1f7",uc:"1f1f9-1f1f7",isCanonical:!1},":flag_to:":{unicode:["1f1f9-1f1f4"],fname:"1f1f9-1f1f4",uc:"1f1f9-1f1f4",isCanonical:!0},":to:":{unicode:["1f1f9-1f1f4"],fname:"1f1f9-1f1f4",uc:"1f1f9-1f1f4",isCanonical:!1},":flag_tn:":{unicode:["1f1f9-1f1f3"],fname:"1f1f9-1f1f3",uc:"1f1f9-1f1f3",isCanonical:!0},":tn:":{unicode:["1f1f9-1f1f3"],fname:"1f1f9-1f1f3",uc:"1f1f9-1f1f3",isCanonical:!1},":flag_tm:":{unicode:["1f1f9-1f1f2"],fname:"1f1f9-1f1f2",uc:"1f1f9-1f1f2",isCanonical:!0},":turkmenistan:":{unicode:["1f1f9-1f1f2"],fname:"1f1f9-1f1f2",uc:"1f1f9-1f1f2",isCanonical:!1},":flag_tl:":{unicode:["1f1f9-1f1f1"],fname:"1f1f9-1f1f1",uc:"1f1f9-1f1f1",isCanonical:!0},":tl:":{unicode:["1f1f9-1f1f1"],fname:"1f1f9-1f1f1",uc:"1f1f9-1f1f1",isCanonical:!1},":flag_tk:":{unicode:["1f1f9-1f1f0"],fname:"1f1f9-1f1f0",uc:"1f1f9-1f1f0",isCanonical:!0},":tk:":{unicode:["1f1f9-1f1f0"],fname:"1f1f9-1f1f0",uc:"1f1f9-1f1f0",isCanonical:!1},":flag_tj:":{unicode:["1f1f9-1f1ef"],fname:"1f1f9-1f1ef",uc:"1f1f9-1f1ef",isCanonical:!0},":tj:":{unicode:["1f1f9-1f1ef"],fname:"1f1f9-1f1ef",uc:"1f1f9-1f1ef",isCanonical:!1},":flag_th:":{unicode:["1f1f9-1f1ed"],fname:"1f1f9-1f1ed",uc:"1f1f9-1f1ed",isCanonical:!0},":th:":{unicode:["1f1f9-1f1ed"],fname:"1f1f9-1f1ed",uc:"1f1f9-1f1ed",isCanonical:!1},":flag_tg:":{unicode:["1f1f9-1f1ec"],fname:"1f1f9-1f1ec",uc:"1f1f9-1f1ec",isCanonical:!0},":tg:":{unicode:["1f1f9-1f1ec"],fname:"1f1f9-1f1ec",uc:"1f1f9-1f1ec",isCanonical:!1},":flag_tf:":{unicode:["1f1f9-1f1eb"],fname:"1f1f9-1f1eb",uc:"1f1f9-1f1eb",isCanonical:!0},":tf:":{unicode:["1f1f9-1f1eb"],fname:"1f1f9-1f1eb",uc:"1f1f9-1f1eb",isCanonical:!1},":flag_td:":{unicode:["1f1f9-1f1e9"],fname:"1f1f9-1f1e9",uc:"1f1f9-1f1e9",isCanonical:!0},":td:":{unicode:["1f1f9-1f1e9"],fname:"1f1f9-1f1e9",uc:"1f1f9-1f1e9",isCanonical:!1},":flag_tc:":{unicode:["1f1f9-1f1e8"],fname:"1f1f9-1f1e8",uc:"1f1f9-1f1e8",isCanonical:!0},":tc:":{unicode:["1f1f9-1f1e8"],fname:"1f1f9-1f1e8",uc:"1f1f9-1f1e8",isCanonical:!1},":flag_ta:":{unicode:["1f1f9-1f1e6"],fname:"1f1f9-1f1e6",uc:"1f1f9-1f1e6",isCanonical:!0},":ta:":{unicode:["1f1f9-1f1e6"],fname:"1f1f9-1f1e6",uc:"1f1f9-1f1e6",isCanonical:!1},":flag_sz:":{unicode:["1f1f8-1f1ff"],fname:"1f1f8-1f1ff",uc:"1f1f8-1f1ff",isCanonical:!0},":sz:":{unicode:["1f1f8-1f1ff"],fname:"1f1f8-1f1ff",uc:"1f1f8-1f1ff",isCanonical:!1},":flag_sy:":{unicode:["1f1f8-1f1fe"],fname:"1f1f8-1f1fe",uc:"1f1f8-1f1fe",isCanonical:!0},":sy:":{unicode:["1f1f8-1f1fe"],fname:"1f1f8-1f1fe",uc:"1f1f8-1f1fe",isCanonical:!1},":flag_sx:":{unicode:["1f1f8-1f1fd"],fname:"1f1f8-1f1fd",uc:"1f1f8-1f1fd",isCanonical:!0},":sx:":{unicode:["1f1f8-1f1fd"],fname:"1f1f8-1f1fd",uc:"1f1f8-1f1fd",isCanonical:!1},":flag_sv:":{unicode:["1f1f8-1f1fb"],fname:"1f1f8-1f1fb",uc:"1f1f8-1f1fb",isCanonical:!0},":sv:":{unicode:["1f1f8-1f1fb"],fname:"1f1f8-1f1fb",uc:"1f1f8-1f1fb",isCanonical:!1},":flag_st:":{unicode:["1f1f8-1f1f9"],fname:"1f1f8-1f1f9",uc:"1f1f8-1f1f9",isCanonical:!0},":st:":{unicode:["1f1f8-1f1f9"],fname:"1f1f8-1f1f9",uc:"1f1f8-1f1f9",isCanonical:!1},":flag_ss:":{unicode:["1f1f8-1f1f8"],fname:"1f1f8-1f1f8",uc:"1f1f8-1f1f8",isCanonical:!0},":ss:":{unicode:["1f1f8-1f1f8"],fname:"1f1f8-1f1f8",uc:"1f1f8-1f1f8",isCanonical:!1},":flag_sr:":{unicode:["1f1f8-1f1f7"],fname:"1f1f8-1f1f7",uc:"1f1f8-1f1f7",isCanonical:!0},":sr:":{unicode:["1f1f8-1f1f7"],fname:"1f1f8-1f1f7",uc:"1f1f8-1f1f7",isCanonical:!1},":flag_so:":{unicode:["1f1f8-1f1f4"],fname:"1f1f8-1f1f4",uc:"1f1f8-1f1f4",isCanonical:!0},":so:":{unicode:["1f1f8-1f1f4"],fname:"1f1f8-1f1f4",uc:"1f1f8-1f1f4",isCanonical:!1},":flag_sn:":{unicode:["1f1f8-1f1f3"],fname:"1f1f8-1f1f3",uc:"1f1f8-1f1f3",isCanonical:!0},":sn:":{unicode:["1f1f8-1f1f3"],fname:"1f1f8-1f1f3",uc:"1f1f8-1f1f3",isCanonical:!1},":flag_sm:":{unicode:["1f1f8-1f1f2"],fname:"1f1f8-1f1f2",uc:"1f1f8-1f1f2",isCanonical:!0},":sm:":{unicode:["1f1f8-1f1f2"],fname:"1f1f8-1f1f2",uc:"1f1f8-1f1f2",isCanonical:!1},":flag_sl:":{unicode:["1f1f8-1f1f1"],fname:"1f1f8-1f1f1",uc:"1f1f8-1f1f1",isCanonical:!0},":sl:":{unicode:["1f1f8-1f1f1"],fname:"1f1f8-1f1f1",uc:"1f1f8-1f1f1",isCanonical:!1},":flag_sk:":{unicode:["1f1f8-1f1f0"],fname:"1f1f8-1f1f0",uc:"1f1f8-1f1f0",isCanonical:!0},":sk:":{unicode:["1f1f8-1f1f0"],fname:"1f1f8-1f1f0",uc:"1f1f8-1f1f0",isCanonical:!1},":flag_sj:":{unicode:["1f1f8-1f1ef"],fname:"1f1f8-1f1ef",uc:"1f1f8-1f1ef",isCanonical:!0},":sj:":{unicode:["1f1f8-1f1ef"],fname:"1f1f8-1f1ef",uc:"1f1f8-1f1ef",isCanonical:!1},":flag_si:":{unicode:["1f1f8-1f1ee"],fname:"1f1f8-1f1ee",uc:"1f1f8-1f1ee",isCanonical:!0},":si:":{unicode:["1f1f8-1f1ee"],fname:"1f1f8-1f1ee",uc:"1f1f8-1f1ee",isCanonical:!1},":flag_sh:":{unicode:["1f1f8-1f1ed"],fname:"1f1f8-1f1ed",uc:"1f1f8-1f1ed",isCanonical:!0},":sh:":{unicode:["1f1f8-1f1ed"],fname:"1f1f8-1f1ed",uc:"1f1f8-1f1ed",isCanonical:!1},":flag_sg:":{unicode:["1f1f8-1f1ec"],fname:"1f1f8-1f1ec",uc:"1f1f8-1f1ec",isCanonical:!0},":sg:":{unicode:["1f1f8-1f1ec"],fname:"1f1f8-1f1ec",uc:"1f1f8-1f1ec",isCanonical:!1},":flag_se:":{unicode:["1f1f8-1f1ea"],fname:"1f1f8-1f1ea",uc:"1f1f8-1f1ea",isCanonical:!0},":se:":{unicode:["1f1f8-1f1ea"],fname:"1f1f8-1f1ea",uc:"1f1f8-1f1ea",isCanonical:!1},":flag_sd:":{unicode:["1f1f8-1f1e9"],fname:"1f1f8-1f1e9",uc:"1f1f8-1f1e9",isCanonical:!0},":sd:":{unicode:["1f1f8-1f1e9"],fname:"1f1f8-1f1e9",uc:"1f1f8-1f1e9",isCanonical:!1},":flag_sc:":{unicode:["1f1f8-1f1e8"],fname:"1f1f8-1f1e8",uc:"1f1f8-1f1e8",isCanonical:!0},":sc:":{unicode:["1f1f8-1f1e8"],fname:"1f1f8-1f1e8",uc:"1f1f8-1f1e8",isCanonical:!1},":flag_sb:":{unicode:["1f1f8-1f1e7"],fname:"1f1f8-1f1e7",uc:"1f1f8-1f1e7",isCanonical:!0},":sb:":{unicode:["1f1f8-1f1e7"],fname:"1f1f8-1f1e7",uc:"1f1f8-1f1e7",isCanonical:!1},":flag_sa:":{unicode:["1f1f8-1f1e6"],fname:"1f1f8-1f1e6",uc:"1f1f8-1f1e6",isCanonical:!0},":saudiarabia:":{unicode:["1f1f8-1f1e6"],fname:"1f1f8-1f1e6",uc:"1f1f8-1f1e6",isCanonical:!1},":saudi:":{unicode:["1f1f8-1f1e6"],fname:"1f1f8-1f1e6",uc:"1f1f8-1f1e6",isCanonical:!1},":flag_rw:":{unicode:["1f1f7-1f1fc"],fname:"1f1f7-1f1fc",uc:"1f1f7-1f1fc",isCanonical:!0},":rw:":{unicode:["1f1f7-1f1fc"],fname:"1f1f7-1f1fc",uc:"1f1f7-1f1fc",isCanonical:!1},":flag_ru:":{unicode:["1f1f7-1f1fa"],fname:"1f1f7-1f1fa",uc:"1f1f7-1f1fa",isCanonical:!0},":ru:":{unicode:["1f1f7-1f1fa"],fname:"1f1f7-1f1fa",uc:"1f1f7-1f1fa",isCanonical:!1},":flag_rs:":{unicode:["1f1f7-1f1f8"],fname:"1f1f7-1f1f8",uc:"1f1f7-1f1f8",isCanonical:!0},":rs:":{unicode:["1f1f7-1f1f8"],fname:"1f1f7-1f1f8",uc:"1f1f7-1f1f8",isCanonical:!1},":flag_ro:":{unicode:["1f1f7-1f1f4"],fname:"1f1f7-1f1f4",uc:"1f1f7-1f1f4",isCanonical:!0},":ro:":{unicode:["1f1f7-1f1f4"],fname:"1f1f7-1f1f4",uc:"1f1f7-1f1f4",isCanonical:!1},":flag_re:":{unicode:["1f1f7-1f1ea"],fname:"1f1f7-1f1ea",uc:"1f1f7-1f1ea",isCanonical:!0},":re:":{unicode:["1f1f7-1f1ea"],fname:"1f1f7-1f1ea",uc:"1f1f7-1f1ea",isCanonical:!1},":flag_qa:":{unicode:["1f1f6-1f1e6"],fname:"1f1f6-1f1e6",uc:"1f1f6-1f1e6",isCanonical:!0},":qa:":{unicode:["1f1f6-1f1e6"],fname:"1f1f6-1f1e6",uc:"1f1f6-1f1e6",isCanonical:!1},":flag_py:":{unicode:["1f1f5-1f1fe"],fname:"1f1f5-1f1fe",uc:"1f1f5-1f1fe",isCanonical:!0},":py:":{unicode:["1f1f5-1f1fe"],fname:"1f1f5-1f1fe",uc:"1f1f5-1f1fe",isCanonical:!1},":flag_pw:":{unicode:["1f1f5-1f1fc"],fname:"1f1f5-1f1fc",uc:"1f1f5-1f1fc",isCanonical:!0},":pw:":{unicode:["1f1f5-1f1fc"],fname:"1f1f5-1f1fc",uc:"1f1f5-1f1fc",isCanonical:!1},":flag_pt:":{unicode:["1f1f5-1f1f9"],fname:"1f1f5-1f1f9",uc:"1f1f5-1f1f9",isCanonical:!0},":pt:":{unicode:["1f1f5-1f1f9"],fname:"1f1f5-1f1f9",uc:"1f1f5-1f1f9",isCanonical:!1},":flag_ps:":{unicode:["1f1f5-1f1f8"],fname:"1f1f5-1f1f8",uc:"1f1f5-1f1f8",isCanonical:!0},":ps:":{unicode:["1f1f5-1f1f8"],fname:"1f1f5-1f1f8",uc:"1f1f5-1f1f8",isCanonical:!1},":flag_pr:":{unicode:["1f1f5-1f1f7"],fname:"1f1f5-1f1f7",uc:"1f1f5-1f1f7",isCanonical:!0},":pr:":{unicode:["1f1f5-1f1f7"],fname:"1f1f5-1f1f7",uc:"1f1f5-1f1f7",isCanonical:!1},":flag_pn:":{unicode:["1f1f5-1f1f3"],fname:"1f1f5-1f1f3",uc:"1f1f5-1f1f3",isCanonical:!0},":pn:":{unicode:["1f1f5-1f1f3"],fname:"1f1f5-1f1f3",uc:"1f1f5-1f1f3",isCanonical:!1},":flag_pm:":{unicode:["1f1f5-1f1f2"],fname:"1f1f5-1f1f2",uc:"1f1f5-1f1f2",isCanonical:!0},":pm:":{unicode:["1f1f5-1f1f2"],fname:"1f1f5-1f1f2",uc:"1f1f5-1f1f2",isCanonical:!1},":flag_pl:":{unicode:["1f1f5-1f1f1"],fname:"1f1f5-1f1f1",uc:"1f1f5-1f1f1",isCanonical:!0},":pl:":{unicode:["1f1f5-1f1f1"],fname:"1f1f5-1f1f1",uc:"1f1f5-1f1f1",isCanonical:!1},":flag_pk:":{unicode:["1f1f5-1f1f0"],fname:"1f1f5-1f1f0",uc:"1f1f5-1f1f0",isCanonical:!0},":pk:":{unicode:["1f1f5-1f1f0"],fname:"1f1f5-1f1f0",uc:"1f1f5-1f1f0",isCanonical:!1},":flag_ph:":{unicode:["1f1f5-1f1ed"],fname:"1f1f5-1f1ed",uc:"1f1f5-1f1ed",isCanonical:!0},":ph:":{unicode:["1f1f5-1f1ed"],fname:"1f1f5-1f1ed",uc:"1f1f5-1f1ed",isCanonical:!1},":flag_pg:":{unicode:["1f1f5-1f1ec"],fname:"1f1f5-1f1ec",uc:"1f1f5-1f1ec",isCanonical:!0},":pg:":{unicode:["1f1f5-1f1ec"],fname:"1f1f5-1f1ec",uc:"1f1f5-1f1ec",isCanonical:!1},":flag_pf:":{unicode:["1f1f5-1f1eb"],fname:"1f1f5-1f1eb",uc:"1f1f5-1f1eb",isCanonical:!0},":pf:":{unicode:["1f1f5-1f1eb"],fname:"1f1f5-1f1eb",uc:"1f1f5-1f1eb",isCanonical:!1},":flag_pe:":{unicode:["1f1f5-1f1ea"],fname:"1f1f5-1f1ea",uc:"1f1f5-1f1ea",isCanonical:!0},":pe:":{unicode:["1f1f5-1f1ea"],fname:"1f1f5-1f1ea",uc:"1f1f5-1f1ea",isCanonical:!1},":flag_pa:":{unicode:["1f1f5-1f1e6"],fname:"1f1f5-1f1e6",uc:"1f1f5-1f1e6",isCanonical:!0},":pa:":{unicode:["1f1f5-1f1e6"],fname:"1f1f5-1f1e6",uc:"1f1f5-1f1e6",isCanonical:!1},":flag_om:":{unicode:["1f1f4-1f1f2"],fname:"1f1f4-1f1f2",uc:"1f1f4-1f1f2",isCanonical:!0},":om:":{unicode:["1f1f4-1f1f2"],fname:"1f1f4-1f1f2",uc:"1f1f4-1f1f2",isCanonical:!1},":flag_nz:":{unicode:["1f1f3-1f1ff"],fname:"1f1f3-1f1ff",uc:"1f1f3-1f1ff",isCanonical:!0},":nz:":{unicode:["1f1f3-1f1ff"],fname:"1f1f3-1f1ff",uc:"1f1f3-1f1ff",isCanonical:!1},":flag_nu:":{unicode:["1f1f3-1f1fa"],fname:"1f1f3-1f1fa",uc:"1f1f3-1f1fa",isCanonical:!0},":nu:":{unicode:["1f1f3-1f1fa"],fname:"1f1f3-1f1fa",uc:"1f1f3-1f1fa",isCanonical:!1},":flag_nr:":{unicode:["1f1f3-1f1f7"],fname:"1f1f3-1f1f7",uc:"1f1f3-1f1f7",isCanonical:!0},":nr:":{unicode:["1f1f3-1f1f7"],fname:"1f1f3-1f1f7",uc:"1f1f3-1f1f7",isCanonical:!1},":flag_np:":{unicode:["1f1f3-1f1f5"],fname:"1f1f3-1f1f5",uc:"1f1f3-1f1f5",isCanonical:!0},":np:":{unicode:["1f1f3-1f1f5"],fname:"1f1f3-1f1f5",uc:"1f1f3-1f1f5",isCanonical:!1},":flag_no:":{unicode:["1f1f3-1f1f4"],fname:"1f1f3-1f1f4",uc:"1f1f3-1f1f4",isCanonical:!0},":no:":{unicode:["1f1f3-1f1f4"],fname:"1f1f3-1f1f4",uc:"1f1f3-1f1f4",isCanonical:!1},":flag_nl:":{unicode:["1f1f3-1f1f1"],fname:"1f1f3-1f1f1",uc:"1f1f3-1f1f1",isCanonical:!0},":nl:":{unicode:["1f1f3-1f1f1"],fname:"1f1f3-1f1f1",uc:"1f1f3-1f1f1",isCanonical:!1},":flag_ni:":{unicode:["1f1f3-1f1ee"],fname:"1f1f3-1f1ee",uc:"1f1f3-1f1ee",isCanonical:!0},":ni:":{unicode:["1f1f3-1f1ee"],fname:"1f1f3-1f1ee",uc:"1f1f3-1f1ee",isCanonical:!1},":flag_ng:":{unicode:["1f1f3-1f1ec"],fname:"1f1f3-1f1ec",uc:"1f1f3-1f1ec",isCanonical:!0},":nigeria:":{unicode:["1f1f3-1f1ec"],fname:"1f1f3-1f1ec",uc:"1f1f3-1f1ec",isCanonical:!1},":flag_nf:":{unicode:["1f1f3-1f1eb"],fname:"1f1f3-1f1eb",uc:"1f1f3-1f1eb",isCanonical:!0},":nf:":{unicode:["1f1f3-1f1eb"],fname:"1f1f3-1f1eb",uc:"1f1f3-1f1eb",isCanonical:!1},":flag_ne:":{unicode:["1f1f3-1f1ea"],fname:"1f1f3-1f1ea",uc:"1f1f3-1f1ea",isCanonical:!0},":ne:":{unicode:["1f1f3-1f1ea"],fname:"1f1f3-1f1ea",uc:"1f1f3-1f1ea",isCanonical:!1},":flag_nc:":{unicode:["1f1f3-1f1e8"],fname:"1f1f3-1f1e8",uc:"1f1f3-1f1e8",isCanonical:!0},":nc:":{unicode:["1f1f3-1f1e8"],fname:"1f1f3-1f1e8",uc:"1f1f3-1f1e8",isCanonical:!1},":flag_na:":{unicode:["1f1f3-1f1e6"],fname:"1f1f3-1f1e6",uc:"1f1f3-1f1e6",isCanonical:!0},":na:":{unicode:["1f1f3-1f1e6"],fname:"1f1f3-1f1e6",uc:"1f1f3-1f1e6",isCanonical:!1},":flag_mz:":{unicode:["1f1f2-1f1ff"],fname:"1f1f2-1f1ff",uc:"1f1f2-1f1ff",isCanonical:!0},":mz:":{unicode:["1f1f2-1f1ff"],fname:"1f1f2-1f1ff",uc:"1f1f2-1f1ff",isCanonical:!1},":flag_my:":{unicode:["1f1f2-1f1fe"],fname:"1f1f2-1f1fe",uc:"1f1f2-1f1fe",isCanonical:!0},":my:":{unicode:["1f1f2-1f1fe"],fname:"1f1f2-1f1fe",uc:"1f1f2-1f1fe",isCanonical:!1},":flag_mx:":{unicode:["1f1f2-1f1fd"],fname:"1f1f2-1f1fd",uc:"1f1f2-1f1fd",isCanonical:!0},":mx:":{unicode:["1f1f2-1f1fd"],fname:"1f1f2-1f1fd",uc:"1f1f2-1f1fd",isCanonical:!1},":flag_mw:":{unicode:["1f1f2-1f1fc"],fname:"1f1f2-1f1fc",uc:"1f1f2-1f1fc",isCanonical:!0},":mw:":{unicode:["1f1f2-1f1fc"],fname:"1f1f2-1f1fc",uc:"1f1f2-1f1fc",isCanonical:!1},":flag_mv:":{unicode:["1f1f2-1f1fb"],fname:"1f1f2-1f1fb",uc:"1f1f2-1f1fb",isCanonical:!0},":mv:":{unicode:["1f1f2-1f1fb"],fname:"1f1f2-1f1fb",uc:"1f1f2-1f1fb",isCanonical:!1},":flag_mu:":{unicode:["1f1f2-1f1fa"],fname:"1f1f2-1f1fa",uc:"1f1f2-1f1fa",isCanonical:!0},":mu:":{unicode:["1f1f2-1f1fa"],fname:"1f1f2-1f1fa",uc:"1f1f2-1f1fa",isCanonical:!1},":flag_mt:":{unicode:["1f1f2-1f1f9"],fname:"1f1f2-1f1f9",uc:"1f1f2-1f1f9",isCanonical:!0},":mt:":{unicode:["1f1f2-1f1f9"],fname:"1f1f2-1f1f9",uc:"1f1f2-1f1f9",isCanonical:!1},":flag_ms:":{unicode:["1f1f2-1f1f8"],fname:"1f1f2-1f1f8",uc:"1f1f2-1f1f8",isCanonical:!0},":ms:":{unicode:["1f1f2-1f1f8"],fname:"1f1f2-1f1f8",uc:"1f1f2-1f1f8",isCanonical:!1},":flag_mr:":{unicode:["1f1f2-1f1f7"],fname:"1f1f2-1f1f7",uc:"1f1f2-1f1f7",isCanonical:!0},":mr:":{unicode:["1f1f2-1f1f7"],fname:"1f1f2-1f1f7",uc:"1f1f2-1f1f7",isCanonical:!1},":flag_mq:":{unicode:["1f1f2-1f1f6"],fname:"1f1f2-1f1f6",uc:"1f1f2-1f1f6",isCanonical:!0},":mq:":{unicode:["1f1f2-1f1f6"],fname:"1f1f2-1f1f6",uc:"1f1f2-1f1f6",isCanonical:!1},":flag_mp:":{unicode:["1f1f2-1f1f5"],fname:"1f1f2-1f1f5",uc:"1f1f2-1f1f5",isCanonical:!0},":mp:":{unicode:["1f1f2-1f1f5"],fname:"1f1f2-1f1f5",uc:"1f1f2-1f1f5",isCanonical:!1},":flag_mo:":{unicode:["1f1f2-1f1f4"],fname:"1f1f2-1f1f4",uc:"1f1f2-1f1f4",isCanonical:!0},":mo:":{unicode:["1f1f2-1f1f4"],fname:"1f1f2-1f1f4",uc:"1f1f2-1f1f4",isCanonical:!1},":flag_mn:":{unicode:["1f1f2-1f1f3"],fname:"1f1f2-1f1f3",uc:"1f1f2-1f1f3",isCanonical:!0},":mn:":{unicode:["1f1f2-1f1f3"],fname:"1f1f2-1f1f3",uc:"1f1f2-1f1f3",isCanonical:!1},":flag_mm:":{unicode:["1f1f2-1f1f2"],fname:"1f1f2-1f1f2",uc:"1f1f2-1f1f2",isCanonical:!0},":mm:":{unicode:["1f1f2-1f1f2"],fname:"1f1f2-1f1f2",uc:"1f1f2-1f1f2",isCanonical:!1},":flag_ml:":{unicode:["1f1f2-1f1f1"],fname:"1f1f2-1f1f1",uc:"1f1f2-1f1f1",isCanonical:!0},":ml:":{unicode:["1f1f2-1f1f1"],fname:"1f1f2-1f1f1",uc:"1f1f2-1f1f1",isCanonical:!1},":flag_mk:":{unicode:["1f1f2-1f1f0"],fname:"1f1f2-1f1f0",uc:"1f1f2-1f1f0",isCanonical:!0},":mk:":{unicode:["1f1f2-1f1f0"],fname:"1f1f2-1f1f0",uc:"1f1f2-1f1f0",isCanonical:!1},":flag_mh:":{unicode:["1f1f2-1f1ed"],fname:"1f1f2-1f1ed",uc:"1f1f2-1f1ed",isCanonical:!0},":mh:":{unicode:["1f1f2-1f1ed"],fname:"1f1f2-1f1ed",uc:"1f1f2-1f1ed",isCanonical:!1},":flag_mg:":{unicode:["1f1f2-1f1ec"],fname:"1f1f2-1f1ec",uc:"1f1f2-1f1ec",isCanonical:!0},":mg:":{unicode:["1f1f2-1f1ec"],fname:"1f1f2-1f1ec",uc:"1f1f2-1f1ec",isCanonical:!1},":flag_mf:":{unicode:["1f1f2-1f1eb"],fname:"1f1f2-1f1eb",uc:"1f1f2-1f1eb",isCanonical:!0},":mf:":{unicode:["1f1f2-1f1eb"],fname:"1f1f2-1f1eb",uc:"1f1f2-1f1eb",isCanonical:!1},":flag_me:":{unicode:["1f1f2-1f1ea"],fname:"1f1f2-1f1ea",uc:"1f1f2-1f1ea",isCanonical:!0},":me:":{unicode:["1f1f2-1f1ea"],fname:"1f1f2-1f1ea",uc:"1f1f2-1f1ea",isCanonical:!1},":flag_md:":{unicode:["1f1f2-1f1e9"],fname:"1f1f2-1f1e9",uc:"1f1f2-1f1e9",isCanonical:!0},":md:":{unicode:["1f1f2-1f1e9"],fname:"1f1f2-1f1e9",uc:"1f1f2-1f1e9",isCanonical:!1},":flag_mc:":{unicode:["1f1f2-1f1e8"],fname:"1f1f2-1f1e8",uc:"1f1f2-1f1e8",isCanonical:!0},":mc:":{unicode:["1f1f2-1f1e8"],fname:"1f1f2-1f1e8",uc:"1f1f2-1f1e8",isCanonical:!1},":flag_ma:":{unicode:["1f1f2-1f1e6"],fname:"1f1f2-1f1e6",uc:"1f1f2-1f1e6",isCanonical:!0},":ma:":{unicode:["1f1f2-1f1e6"],fname:"1f1f2-1f1e6",uc:"1f1f2-1f1e6",isCanonical:!1},":flag_ly:":{unicode:["1f1f1-1f1fe"],fname:"1f1f1-1f1fe",uc:"1f1f1-1f1fe",isCanonical:!0},":ly:":{unicode:["1f1f1-1f1fe"],fname:"1f1f1-1f1fe",uc:"1f1f1-1f1fe",isCanonical:!1},":flag_lv:":{unicode:["1f1f1-1f1fb"],fname:"1f1f1-1f1fb",uc:"1f1f1-1f1fb",isCanonical:!0},":lv:":{unicode:["1f1f1-1f1fb"],fname:"1f1f1-1f1fb",uc:"1f1f1-1f1fb",isCanonical:!1},":flag_lu:":{unicode:["1f1f1-1f1fa"],fname:"1f1f1-1f1fa",uc:"1f1f1-1f1fa",isCanonical:!0},":lu:":{unicode:["1f1f1-1f1fa"],fname:"1f1f1-1f1fa",uc:"1f1f1-1f1fa",isCanonical:!1},":flag_lt:":{unicode:["1f1f1-1f1f9"],fname:"1f1f1-1f1f9",uc:"1f1f1-1f1f9",isCanonical:!0},":lt:":{unicode:["1f1f1-1f1f9"],fname:"1f1f1-1f1f9",uc:"1f1f1-1f1f9",isCanonical:!1},":flag_ls:":{unicode:["1f1f1-1f1f8"],fname:"1f1f1-1f1f8",uc:"1f1f1-1f1f8",isCanonical:!0},":ls:":{unicode:["1f1f1-1f1f8"],fname:"1f1f1-1f1f8",uc:"1f1f1-1f1f8",isCanonical:!1},":flag_lr:":{unicode:["1f1f1-1f1f7"],fname:"1f1f1-1f1f7",uc:"1f1f1-1f1f7",isCanonical:!0},":lr:":{unicode:["1f1f1-1f1f7"],fname:"1f1f1-1f1f7",uc:"1f1f1-1f1f7",isCanonical:!1},":flag_lk:":{unicode:["1f1f1-1f1f0"],fname:"1f1f1-1f1f0",uc:"1f1f1-1f1f0",isCanonical:!0},":lk:":{unicode:["1f1f1-1f1f0"],fname:"1f1f1-1f1f0",uc:"1f1f1-1f1f0",isCanonical:!1},":flag_li:":{unicode:["1f1f1-1f1ee"],fname:"1f1f1-1f1ee",uc:"1f1f1-1f1ee",isCanonical:!0},":li:":{unicode:["1f1f1-1f1ee"],fname:"1f1f1-1f1ee",uc:"1f1f1-1f1ee",isCanonical:!1},":flag_lc:":{unicode:["1f1f1-1f1e8"],fname:"1f1f1-1f1e8",uc:"1f1f1-1f1e8",isCanonical:!0},":lc:":{unicode:["1f1f1-1f1e8"],fname:"1f1f1-1f1e8",uc:"1f1f1-1f1e8",isCanonical:!1},":flag_lb:":{unicode:["1f1f1-1f1e7"],fname:"1f1f1-1f1e7",uc:"1f1f1-1f1e7",isCanonical:!0},":lb:":{unicode:["1f1f1-1f1e7"],fname:"1f1f1-1f1e7",uc:"1f1f1-1f1e7",isCanonical:!1},":flag_la:":{unicode:["1f1f1-1f1e6"],fname:"1f1f1-1f1e6",uc:"1f1f1-1f1e6",isCanonical:!0},":la:":{unicode:["1f1f1-1f1e6"],fname:"1f1f1-1f1e6",uc:"1f1f1-1f1e6",isCanonical:!1},":flag_kz:":{unicode:["1f1f0-1f1ff"],fname:"1f1f0-1f1ff",uc:"1f1f0-1f1ff",isCanonical:!0},":kz:":{unicode:["1f1f0-1f1ff"],fname:"1f1f0-1f1ff",uc:"1f1f0-1f1ff",isCanonical:!1},":flag_ky:":{unicode:["1f1f0-1f1fe"],fname:"1f1f0-1f1fe",uc:"1f1f0-1f1fe",isCanonical:!0},":ky:":{unicode:["1f1f0-1f1fe"],fname:"1f1f0-1f1fe",uc:"1f1f0-1f1fe",isCanonical:!1},":flag_kw:":{unicode:["1f1f0-1f1fc"],fname:"1f1f0-1f1fc",uc:"1f1f0-1f1fc",isCanonical:!0},":kw:":{unicode:["1f1f0-1f1fc"],fname:"1f1f0-1f1fc",uc:"1f1f0-1f1fc",isCanonical:!1},":flag_kr:":{unicode:["1f1f0-1f1f7"],fname:"1f1f0-1f1f7",uc:"1f1f0-1f1f7",isCanonical:!0},":kr:":{unicode:["1f1f0-1f1f7"],fname:"1f1f0-1f1f7",uc:"1f1f0-1f1f7",isCanonical:!1},":flag_kp:":{unicode:["1f1f0-1f1f5"],fname:"1f1f0-1f1f5",uc:"1f1f0-1f1f5",isCanonical:!0},":kp:":{unicode:["1f1f0-1f1f5"],fname:"1f1f0-1f1f5",uc:"1f1f0-1f1f5",isCanonical:!1},":flag_kn:":{unicode:["1f1f0-1f1f3"],fname:"1f1f0-1f1f3",uc:"1f1f0-1f1f3",isCanonical:!0},":kn:":{unicode:["1f1f0-1f1f3"],fname:"1f1f0-1f1f3",uc:"1f1f0-1f1f3",isCanonical:!1},":flag_km:":{unicode:["1f1f0-1f1f2"],fname:"1f1f0-1f1f2",uc:"1f1f0-1f1f2",isCanonical:!0},":km:":{unicode:["1f1f0-1f1f2"],fname:"1f1f0-1f1f2",uc:"1f1f0-1f1f2",isCanonical:!1},":flag_ki:":{unicode:["1f1f0-1f1ee"],fname:"1f1f0-1f1ee",uc:"1f1f0-1f1ee",isCanonical:!0},":ki:":{unicode:["1f1f0-1f1ee"],fname:"1f1f0-1f1ee",uc:"1f1f0-1f1ee",isCanonical:!1},":flag_kh:":{unicode:["1f1f0-1f1ed"],fname:"1f1f0-1f1ed",uc:"1f1f0-1f1ed",isCanonical:!0},":kh:":{unicode:["1f1f0-1f1ed"],fname:"1f1f0-1f1ed",uc:"1f1f0-1f1ed",isCanonical:!1},":flag_kg:":{unicode:["1f1f0-1f1ec"],fname:"1f1f0-1f1ec",uc:"1f1f0-1f1ec",isCanonical:!0},":kg:":{unicode:["1f1f0-1f1ec"],fname:"1f1f0-1f1ec",uc:"1f1f0-1f1ec",isCanonical:!1},":flag_ke:":{unicode:["1f1f0-1f1ea"],fname:"1f1f0-1f1ea",uc:"1f1f0-1f1ea",isCanonical:!0},":ke:":{unicode:["1f1f0-1f1ea"],fname:"1f1f0-1f1ea",uc:"1f1f0-1f1ea",isCanonical:!1},":flag_jp:":{unicode:["1f1ef-1f1f5"],fname:"1f1ef-1f1f5",uc:"1f1ef-1f1f5",isCanonical:!0},":jp:":{unicode:["1f1ef-1f1f5"],fname:"1f1ef-1f1f5",uc:"1f1ef-1f1f5",isCanonical:!1},":flag_jo:":{unicode:["1f1ef-1f1f4"],fname:"1f1ef-1f1f4",uc:"1f1ef-1f1f4",isCanonical:!0},":jo:":{unicode:["1f1ef-1f1f4"],fname:"1f1ef-1f1f4",uc:"1f1ef-1f1f4",isCanonical:!1},":flag_jm:":{unicode:["1f1ef-1f1f2"],fname:"1f1ef-1f1f2",uc:"1f1ef-1f1f2",isCanonical:!0},":jm:":{unicode:["1f1ef-1f1f2"],fname:"1f1ef-1f1f2",uc:"1f1ef-1f1f2",isCanonical:!1},":flag_je:":{unicode:["1f1ef-1f1ea"],fname:"1f1ef-1f1ea",uc:"1f1ef-1f1ea",isCanonical:!0},":je:":{unicode:["1f1ef-1f1ea"],fname:"1f1ef-1f1ea",uc:"1f1ef-1f1ea",isCanonical:!1},":flag_it:":{unicode:["1f1ee-1f1f9"],fname:"1f1ee-1f1f9",uc:"1f1ee-1f1f9",isCanonical:!0},":it:":{unicode:["1f1ee-1f1f9"],fname:"1f1ee-1f1f9",uc:"1f1ee-1f1f9",isCanonical:!1},":flag_is:":{unicode:["1f1ee-1f1f8"],fname:"1f1ee-1f1f8",uc:"1f1ee-1f1f8",isCanonical:!0},":is:":{unicode:["1f1ee-1f1f8"],fname:"1f1ee-1f1f8",uc:"1f1ee-1f1f8",isCanonical:!1},":flag_ir:":{unicode:["1f1ee-1f1f7"],fname:"1f1ee-1f1f7",uc:"1f1ee-1f1f7",isCanonical:!0},":ir:":{unicode:["1f1ee-1f1f7"],fname:"1f1ee-1f1f7",uc:"1f1ee-1f1f7",isCanonical:!1},":flag_iq:":{unicode:["1f1ee-1f1f6"],fname:"1f1ee-1f1f6",uc:"1f1ee-1f1f6",isCanonical:!0},":iq:":{unicode:["1f1ee-1f1f6"],fname:"1f1ee-1f1f6",uc:"1f1ee-1f1f6",isCanonical:!1},":flag_io:":{unicode:["1f1ee-1f1f4"],fname:"1f1ee-1f1f4",uc:"1f1ee-1f1f4",isCanonical:!0},":io:":{unicode:["1f1ee-1f1f4"],fname:"1f1ee-1f1f4",uc:"1f1ee-1f1f4",isCanonical:!1},":flag_in:":{unicode:["1f1ee-1f1f3"],fname:"1f1ee-1f1f3",uc:"1f1ee-1f1f3",isCanonical:!0},":in:":{unicode:["1f1ee-1f1f3"],fname:"1f1ee-1f1f3",uc:"1f1ee-1f1f3",isCanonical:!1},":flag_im:":{unicode:["1f1ee-1f1f2"],fname:"1f1ee-1f1f2",uc:"1f1ee-1f1f2",isCanonical:!0},":im:":{unicode:["1f1ee-1f1f2"],fname:"1f1ee-1f1f2",uc:"1f1ee-1f1f2",isCanonical:!1},":flag_il:":{unicode:["1f1ee-1f1f1"],fname:"1f1ee-1f1f1",uc:"1f1ee-1f1f1",isCanonical:!0},":il:":{unicode:["1f1ee-1f1f1"],fname:"1f1ee-1f1f1",uc:"1f1ee-1f1f1",isCanonical:!1},":flag_ie:":{unicode:["1f1ee-1f1ea"],fname:"1f1ee-1f1ea",uc:"1f1ee-1f1ea",isCanonical:!0},":ie:":{unicode:["1f1ee-1f1ea"],fname:"1f1ee-1f1ea",uc:"1f1ee-1f1ea",isCanonical:!1},":flag_id:":{unicode:["1f1ee-1f1e9"],fname:"1f1ee-1f1e9",uc:"1f1ee-1f1e9",isCanonical:!0},":indonesia:":{unicode:["1f1ee-1f1e9"],fname:"1f1ee-1f1e9",uc:"1f1ee-1f1e9",isCanonical:!1},":flag_ic:":{unicode:["1f1ee-1f1e8"],fname:"1f1ee-1f1e8",uc:"1f1ee-1f1e8",isCanonical:!0},":ic:":{unicode:["1f1ee-1f1e8"],fname:"1f1ee-1f1e8",uc:"1f1ee-1f1e8",isCanonical:!1},":flag_hu:":{unicode:["1f1ed-1f1fa"],fname:"1f1ed-1f1fa",uc:"1f1ed-1f1fa",isCanonical:!0},":hu:":{unicode:["1f1ed-1f1fa"],fname:"1f1ed-1f1fa",uc:"1f1ed-1f1fa",isCanonical:!1},":flag_ht:":{unicode:["1f1ed-1f1f9"],fname:"1f1ed-1f1f9",uc:"1f1ed-1f1f9",isCanonical:!0},":ht:":{unicode:["1f1ed-1f1f9"],fname:"1f1ed-1f1f9",uc:"1f1ed-1f1f9",isCanonical:!1},":flag_hr:":{unicode:["1f1ed-1f1f7"],fname:"1f1ed-1f1f7",uc:"1f1ed-1f1f7",isCanonical:!0},":hr:":{unicode:["1f1ed-1f1f7"],fname:"1f1ed-1f1f7",uc:"1f1ed-1f1f7",isCanonical:!1},":flag_hn:":{unicode:["1f1ed-1f1f3"],fname:"1f1ed-1f1f3",uc:"1f1ed-1f1f3",isCanonical:!0},":hn:":{unicode:["1f1ed-1f1f3"],fname:"1f1ed-1f1f3",uc:"1f1ed-1f1f3",isCanonical:!1},":flag_hm:":{unicode:["1f1ed-1f1f2"],fname:"1f1ed-1f1f2",uc:"1f1ed-1f1f2",isCanonical:!0},":hm:":{unicode:["1f1ed-1f1f2"],fname:"1f1ed-1f1f2",uc:"1f1ed-1f1f2",isCanonical:!1},":flag_hk:":{unicode:["1f1ed-1f1f0"],fname:"1f1ed-1f1f0",uc:"1f1ed-1f1f0",isCanonical:!0},":hk:":{unicode:["1f1ed-1f1f0"],fname:"1f1ed-1f1f0",uc:"1f1ed-1f1f0",isCanonical:!1},":flag_gy:":{unicode:["1f1ec-1f1fe"],fname:"1f1ec-1f1fe",uc:"1f1ec-1f1fe",isCanonical:!0},":gy:":{unicode:["1f1ec-1f1fe"],fname:"1f1ec-1f1fe",uc:"1f1ec-1f1fe",isCanonical:!1},":flag_gw:":{unicode:["1f1ec-1f1fc"],fname:"1f1ec-1f1fc",uc:"1f1ec-1f1fc",isCanonical:!0},":gw:":{unicode:["1f1ec-1f1fc"],fname:"1f1ec-1f1fc",uc:"1f1ec-1f1fc",isCanonical:!1},":flag_gu:":{unicode:["1f1ec-1f1fa"],fname:"1f1ec-1f1fa",uc:"1f1ec-1f1fa",isCanonical:!0},":gu:":{unicode:["1f1ec-1f1fa"],fname:"1f1ec-1f1fa",uc:"1f1ec-1f1fa",isCanonical:!1},":flag_gt:":{unicode:["1f1ec-1f1f9"],fname:"1f1ec-1f1f9",uc:"1f1ec-1f1f9",isCanonical:!0},":gt:":{unicode:["1f1ec-1f1f9"],fname:"1f1ec-1f1f9",uc:"1f1ec-1f1f9",isCanonical:!1},":flag_gs:":{unicode:["1f1ec-1f1f8"],fname:"1f1ec-1f1f8",uc:"1f1ec-1f1f8",isCanonical:!0},":gs:":{unicode:["1f1ec-1f1f8"],fname:"1f1ec-1f1f8",uc:"1f1ec-1f1f8",isCanonical:!1},":flag_gr:":{unicode:["1f1ec-1f1f7"],fname:"1f1ec-1f1f7",uc:"1f1ec-1f1f7",isCanonical:!0},":gr:":{unicode:["1f1ec-1f1f7"],fname:"1f1ec-1f1f7",uc:"1f1ec-1f1f7",isCanonical:!1},":flag_gq:":{unicode:["1f1ec-1f1f6"],fname:"1f1ec-1f1f6",uc:"1f1ec-1f1f6",isCanonical:!0},":gq:":{unicode:["1f1ec-1f1f6"],fname:"1f1ec-1f1f6",uc:"1f1ec-1f1f6",isCanonical:!1},":flag_gp:":{unicode:["1f1ec-1f1f5"],fname:"1f1ec-1f1f5",uc:"1f1ec-1f1f5",isCanonical:!0},":gp:":{unicode:["1f1ec-1f1f5"],fname:"1f1ec-1f1f5",uc:"1f1ec-1f1f5",isCanonical:!1},":flag_gn:":{unicode:["1f1ec-1f1f3"],fname:"1f1ec-1f1f3",uc:"1f1ec-1f1f3",isCanonical:!0},":gn:":{unicode:["1f1ec-1f1f3"],fname:"1f1ec-1f1f3",uc:"1f1ec-1f1f3",isCanonical:!1},":flag_gm:":{unicode:["1f1ec-1f1f2"],fname:"1f1ec-1f1f2",uc:"1f1ec-1f1f2",isCanonical:!0},":gm:":{unicode:["1f1ec-1f1f2"],fname:"1f1ec-1f1f2",uc:"1f1ec-1f1f2",isCanonical:!1},":flag_gl:":{unicode:["1f1ec-1f1f1"],fname:"1f1ec-1f1f1",uc:"1f1ec-1f1f1",isCanonical:!0},":gl:":{unicode:["1f1ec-1f1f1"],fname:"1f1ec-1f1f1",uc:"1f1ec-1f1f1",isCanonical:!1},":flag_gi:":{unicode:["1f1ec-1f1ee"],fname:"1f1ec-1f1ee",uc:"1f1ec-1f1ee",isCanonical:!0},":gi:":{unicode:["1f1ec-1f1ee"],fname:"1f1ec-1f1ee",uc:"1f1ec-1f1ee",isCanonical:!1},":flag_gh:":{unicode:["1f1ec-1f1ed"],fname:"1f1ec-1f1ed",uc:"1f1ec-1f1ed",isCanonical:!0},":gh:":{unicode:["1f1ec-1f1ed"],fname:"1f1ec-1f1ed",uc:"1f1ec-1f1ed",isCanonical:!1},":flag_gg:":{unicode:["1f1ec-1f1ec"],fname:"1f1ec-1f1ec",uc:"1f1ec-1f1ec",isCanonical:!0},":gg:":{unicode:["1f1ec-1f1ec"],fname:"1f1ec-1f1ec",uc:"1f1ec-1f1ec",isCanonical:!1},":flag_gf:":{unicode:["1f1ec-1f1eb"],fname:"1f1ec-1f1eb",uc:"1f1ec-1f1eb",isCanonical:!0},":gf:":{unicode:["1f1ec-1f1eb"],fname:"1f1ec-1f1eb",uc:"1f1ec-1f1eb",isCanonical:!1},":flag_ge:":{unicode:["1f1ec-1f1ea"],fname:"1f1ec-1f1ea",uc:"1f1ec-1f1ea",isCanonical:!0},":ge:":{unicode:["1f1ec-1f1ea"],fname:"1f1ec-1f1ea",uc:"1f1ec-1f1ea",isCanonical:!1},":flag_gd:":{unicode:["1f1ec-1f1e9"],fname:"1f1ec-1f1e9",uc:"1f1ec-1f1e9",isCanonical:!0},":gd:":{unicode:["1f1ec-1f1e9"],fname:"1f1ec-1f1e9",uc:"1f1ec-1f1e9",isCanonical:!1},":flag_gb:":{unicode:["1f1ec-1f1e7"],fname:"1f1ec-1f1e7",uc:"1f1ec-1f1e7",isCanonical:!0},":gb:":{unicode:["1f1ec-1f1e7"],fname:"1f1ec-1f1e7",uc:"1f1ec-1f1e7",isCanonical:!1},":flag_ga:":{unicode:["1f1ec-1f1e6"],fname:"1f1ec-1f1e6",uc:"1f1ec-1f1e6",isCanonical:!0},":ga:":{unicode:["1f1ec-1f1e6"],fname:"1f1ec-1f1e6",uc:"1f1ec-1f1e6",isCanonical:!1},":flag_fr:":{unicode:["1f1eb-1f1f7"],fname:"1f1eb-1f1f7",uc:"1f1eb-1f1f7",isCanonical:!0},":fr:":{unicode:["1f1eb-1f1f7"],fname:"1f1eb-1f1f7",uc:"1f1eb-1f1f7",isCanonical:!1},":flag_fo:":{unicode:["1f1eb-1f1f4"],fname:"1f1eb-1f1f4",uc:"1f1eb-1f1f4",isCanonical:!0},":fo:":{unicode:["1f1eb-1f1f4"],fname:"1f1eb-1f1f4",uc:"1f1eb-1f1f4",isCanonical:!1},":flag_fm:":{unicode:["1f1eb-1f1f2"],fname:"1f1eb-1f1f2",uc:"1f1eb-1f1f2",isCanonical:!0},":fm:":{unicode:["1f1eb-1f1f2"],fname:"1f1eb-1f1f2",uc:"1f1eb-1f1f2",isCanonical:!1},":flag_fk:":{unicode:["1f1eb-1f1f0"],fname:"1f1eb-1f1f0",uc:"1f1eb-1f1f0",isCanonical:!0},":fk:":{unicode:["1f1eb-1f1f0"],fname:"1f1eb-1f1f0",uc:"1f1eb-1f1f0",isCanonical:!1},":flag_fj:":{unicode:["1f1eb-1f1ef"],fname:"1f1eb-1f1ef",uc:"1f1eb-1f1ef",isCanonical:!0},":fj:":{unicode:["1f1eb-1f1ef"],fname:"1f1eb-1f1ef",uc:"1f1eb-1f1ef",isCanonical:!1},":flag_fi:":{unicode:["1f1eb-1f1ee"],fname:"1f1eb-1f1ee",uc:"1f1eb-1f1ee",isCanonical:!0},":fi:":{unicode:["1f1eb-1f1ee"],fname:"1f1eb-1f1ee",uc:"1f1eb-1f1ee",isCanonical:!1},":flag_eu:":{unicode:["1f1ea-1f1fa"],fname:"1f1ea-1f1fa",uc:"1f1ea-1f1fa",isCanonical:!0},":eu:":{unicode:["1f1ea-1f1fa"],fname:"1f1ea-1f1fa",uc:"1f1ea-1f1fa",isCanonical:!1},":flag_et:":{unicode:["1f1ea-1f1f9"],fname:"1f1ea-1f1f9",uc:"1f1ea-1f1f9",isCanonical:!0},":et:":{unicode:["1f1ea-1f1f9"],fname:"1f1ea-1f1f9",uc:"1f1ea-1f1f9",isCanonical:!1},":flag_es:":{unicode:["1f1ea-1f1f8"],fname:"1f1ea-1f1f8",uc:"1f1ea-1f1f8",isCanonical:!0},":es:":{unicode:["1f1ea-1f1f8"],fname:"1f1ea-1f1f8",uc:"1f1ea-1f1f8",isCanonical:!1},":flag_er:":{unicode:["1f1ea-1f1f7"],fname:"1f1ea-1f1f7",uc:"1f1ea-1f1f7",isCanonical:!0},":er:":{unicode:["1f1ea-1f1f7"],fname:"1f1ea-1f1f7",uc:"1f1ea-1f1f7",isCanonical:!1},":flag_eh:":{unicode:["1f1ea-1f1ed"],fname:"1f1ea-1f1ed",uc:"1f1ea-1f1ed",isCanonical:!0},":eh:":{unicode:["1f1ea-1f1ed"],fname:"1f1ea-1f1ed",uc:"1f1ea-1f1ed",isCanonical:!1},":flag_eg:":{unicode:["1f1ea-1f1ec"],fname:"1f1ea-1f1ec",uc:"1f1ea-1f1ec",isCanonical:!0},":eg:":{unicode:["1f1ea-1f1ec"],fname:"1f1ea-1f1ec",uc:"1f1ea-1f1ec",isCanonical:!1},":flag_ee:":{unicode:["1f1ea-1f1ea"],fname:"1f1ea-1f1ea",uc:"1f1ea-1f1ea",isCanonical:!0},":ee:":{unicode:["1f1ea-1f1ea"],fname:"1f1ea-1f1ea",uc:"1f1ea-1f1ea",isCanonical:!1},":flag_ec:":{unicode:["1f1ea-1f1e8"],fname:"1f1ea-1f1e8",uc:"1f1ea-1f1e8",isCanonical:!0},":ec:":{unicode:["1f1ea-1f1e8"],fname:"1f1ea-1f1e8",uc:"1f1ea-1f1e8",isCanonical:!1},":flag_ea:":{unicode:["1f1ea-1f1e6"],fname:"1f1ea-1f1e6",uc:"1f1ea-1f1e6",isCanonical:!0},":ea:":{unicode:["1f1ea-1f1e6"],fname:"1f1ea-1f1e6",uc:"1f1ea-1f1e6",isCanonical:!1},":flag_dz:":{unicode:["1f1e9-1f1ff"],fname:"1f1e9-1f1ff",uc:"1f1e9-1f1ff",isCanonical:!0},":dz:":{unicode:["1f1e9-1f1ff"],fname:"1f1e9-1f1ff",uc:"1f1e9-1f1ff",isCanonical:!1},":flag_do:":{unicode:["1f1e9-1f1f4"],fname:"1f1e9-1f1f4",uc:"1f1e9-1f1f4",isCanonical:!0},":do:":{unicode:["1f1e9-1f1f4"],fname:"1f1e9-1f1f4",uc:"1f1e9-1f1f4",isCanonical:!1},":flag_dm:":{unicode:["1f1e9-1f1f2"],fname:"1f1e9-1f1f2",uc:"1f1e9-1f1f2",isCanonical:!0},":dm:":{unicode:["1f1e9-1f1f2"],fname:"1f1e9-1f1f2",uc:"1f1e9-1f1f2",isCanonical:!1},":flag_dk:":{unicode:["1f1e9-1f1f0"],fname:"1f1e9-1f1f0",uc:"1f1e9-1f1f0",isCanonical:!0},":dk:":{unicode:["1f1e9-1f1f0"],fname:"1f1e9-1f1f0",uc:"1f1e9-1f1f0",isCanonical:!1},":flag_dj:":{unicode:["1f1e9-1f1ef"],fname:"1f1e9-1f1ef",uc:"1f1e9-1f1ef",isCanonical:!0},":dj:":{unicode:["1f1e9-1f1ef"],fname:"1f1e9-1f1ef",uc:"1f1e9-1f1ef",isCanonical:!1},":flag_dg:":{unicode:["1f1e9-1f1ec"],fname:"1f1e9-1f1ec",uc:"1f1e9-1f1ec",isCanonical:!0},":dg:":{unicode:["1f1e9-1f1ec"],fname:"1f1e9-1f1ec",uc:"1f1e9-1f1ec",isCanonical:!1},":flag_de:":{unicode:["1f1e9-1f1ea"],fname:"1f1e9-1f1ea",uc:"1f1e9-1f1ea",isCanonical:!0},":de:":{unicode:["1f1e9-1f1ea"],fname:"1f1e9-1f1ea",uc:"1f1e9-1f1ea",isCanonical:!1},":flag_cz:":{unicode:["1f1e8-1f1ff"],fname:"1f1e8-1f1ff",uc:"1f1e8-1f1ff",isCanonical:!0},":cz:":{unicode:["1f1e8-1f1ff"],fname:"1f1e8-1f1ff",uc:"1f1e8-1f1ff",isCanonical:!1},":flag_cy:":{unicode:["1f1e8-1f1fe"],fname:"1f1e8-1f1fe",uc:"1f1e8-1f1fe",isCanonical:!0},":cy:":{unicode:["1f1e8-1f1fe"],fname:"1f1e8-1f1fe",uc:"1f1e8-1f1fe",isCanonical:!1},":flag_cx:":{unicode:["1f1e8-1f1fd"],fname:"1f1e8-1f1fd",uc:"1f1e8-1f1fd",isCanonical:!0},":cx:":{unicode:["1f1e8-1f1fd"],fname:"1f1e8-1f1fd",uc:"1f1e8-1f1fd",isCanonical:!1},":flag_cw:":{unicode:["1f1e8-1f1fc"],fname:"1f1e8-1f1fc",uc:"1f1e8-1f1fc",isCanonical:!0},":cw:":{unicode:["1f1e8-1f1fc"],fname:"1f1e8-1f1fc",uc:"1f1e8-1f1fc",isCanonical:!1},":flag_cv:":{unicode:["1f1e8-1f1fb"],fname:"1f1e8-1f1fb",uc:"1f1e8-1f1fb",isCanonical:!0},":cv:":{unicode:["1f1e8-1f1fb"],fname:"1f1e8-1f1fb",uc:"1f1e8-1f1fb",isCanonical:!1},":flag_cu:":{unicode:["1f1e8-1f1fa"],fname:"1f1e8-1f1fa",uc:"1f1e8-1f1fa",isCanonical:!0},":cu:":{unicode:["1f1e8-1f1fa"],fname:"1f1e8-1f1fa",uc:"1f1e8-1f1fa",isCanonical:!1},":flag_cr:":{unicode:["1f1e8-1f1f7"],fname:"1f1e8-1f1f7",uc:"1f1e8-1f1f7",isCanonical:!0},":cr:":{unicode:["1f1e8-1f1f7"],fname:"1f1e8-1f1f7",uc:"1f1e8-1f1f7",isCanonical:!1},":flag_cp:":{unicode:["1f1e8-1f1f5"],fname:"1f1e8-1f1f5",uc:"1f1e8-1f1f5",isCanonical:!0},":cp:":{unicode:["1f1e8-1f1f5"],fname:"1f1e8-1f1f5",uc:"1f1e8-1f1f5",isCanonical:!1},":flag_co:":{unicode:["1f1e8-1f1f4"],fname:"1f1e8-1f1f4",uc:"1f1e8-1f1f4",isCanonical:!0},":co:":{unicode:["1f1e8-1f1f4"],fname:"1f1e8-1f1f4",uc:"1f1e8-1f1f4",isCanonical:!1},":flag_cn:":{unicode:["1f1e8-1f1f3"],fname:"1f1e8-1f1f3",uc:"1f1e8-1f1f3",isCanonical:!0},":cn:":{unicode:["1f1e8-1f1f3"],fname:"1f1e8-1f1f3",uc:"1f1e8-1f1f3",isCanonical:!1},":flag_cm:":{unicode:["1f1e8-1f1f2"],fname:"1f1e8-1f1f2",uc:"1f1e8-1f1f2",isCanonical:!0},":cm:":{unicode:["1f1e8-1f1f2"],fname:"1f1e8-1f1f2",uc:"1f1e8-1f1f2",isCanonical:!1},":flag_cl:":{unicode:["1f1e8-1f1f1"],fname:"1f1e8-1f1f1",uc:"1f1e8-1f1f1",isCanonical:!0},":chile:":{unicode:["1f1e8-1f1f1"],fname:"1f1e8-1f1f1",uc:"1f1e8-1f1f1",isCanonical:!1},":flag_ck:":{unicode:["1f1e8-1f1f0"],fname:"1f1e8-1f1f0",uc:"1f1e8-1f1f0",isCanonical:!0},":ck:":{unicode:["1f1e8-1f1f0"],fname:"1f1e8-1f1f0",uc:"1f1e8-1f1f0",isCanonical:!1},":flag_ci:":{unicode:["1f1e8-1f1ee"],fname:"1f1e8-1f1ee",uc:"1f1e8-1f1ee",isCanonical:!0},":ci:":{unicode:["1f1e8-1f1ee"],fname:"1f1e8-1f1ee",uc:"1f1e8-1f1ee",isCanonical:!1},":flag_ch:":{unicode:["1f1e8-1f1ed"],fname:"1f1e8-1f1ed",uc:"1f1e8-1f1ed",isCanonical:!0},":ch:":{unicode:["1f1e8-1f1ed"],fname:"1f1e8-1f1ed",uc:"1f1e8-1f1ed",isCanonical:!1},":flag_cg:":{unicode:["1f1e8-1f1ec"],fname:"1f1e8-1f1ec",uc:"1f1e8-1f1ec",isCanonical:!0},":cg:":{unicode:["1f1e8-1f1ec"],fname:"1f1e8-1f1ec",uc:"1f1e8-1f1ec",isCanonical:!1},":flag_cf:":{unicode:["1f1e8-1f1eb"],fname:"1f1e8-1f1eb",uc:"1f1e8-1f1eb",isCanonical:!0},":cf:":{unicode:["1f1e8-1f1eb"],fname:"1f1e8-1f1eb",uc:"1f1e8-1f1eb",isCanonical:!1},":flag_cd:":{unicode:["1f1e8-1f1e9"],fname:"1f1e8-1f1e9",uc:"1f1e8-1f1e9",isCanonical:!0},":congo:":{unicode:["1f1e8-1f1e9"],fname:"1f1e8-1f1e9",uc:"1f1e8-1f1e9",isCanonical:!1},":flag_cc:":{unicode:["1f1e8-1f1e8"],fname:"1f1e8-1f1e8",uc:"1f1e8-1f1e8",isCanonical:!0},":cc:":{unicode:["1f1e8-1f1e8"],fname:"1f1e8-1f1e8",uc:"1f1e8-1f1e8",isCanonical:!1},":flag_ca:":{unicode:["1f1e8-1f1e6"],fname:"1f1e8-1f1e6",uc:"1f1e8-1f1e6",isCanonical:!0},":ca:":{unicode:["1f1e8-1f1e6"],fname:"1f1e8-1f1e6",uc:"1f1e8-1f1e6",isCanonical:!1},":flag_bz:":{unicode:["1f1e7-1f1ff"],fname:"1f1e7-1f1ff",uc:"1f1e7-1f1ff",isCanonical:!0},":bz:":{unicode:["1f1e7-1f1ff"],fname:"1f1e7-1f1ff",uc:"1f1e7-1f1ff",isCanonical:!1},":flag_by:":{unicode:["1f1e7-1f1fe"],fname:"1f1e7-1f1fe",uc:"1f1e7-1f1fe",isCanonical:!0},":by:":{unicode:["1f1e7-1f1fe"],fname:"1f1e7-1f1fe",uc:"1f1e7-1f1fe",isCanonical:!1},":flag_bw:":{unicode:["1f1e7-1f1fc"],fname:"1f1e7-1f1fc",uc:"1f1e7-1f1fc",isCanonical:!0},":bw:":{unicode:["1f1e7-1f1fc"],fname:"1f1e7-1f1fc",uc:"1f1e7-1f1fc",isCanonical:!1},":flag_bv:":{unicode:["1f1e7-1f1fb"],fname:"1f1e7-1f1fb",uc:"1f1e7-1f1fb",isCanonical:!0},":bv:":{unicode:["1f1e7-1f1fb"],fname:"1f1e7-1f1fb",uc:"1f1e7-1f1fb",isCanonical:!1},":flag_bt:":{unicode:["1f1e7-1f1f9"],fname:"1f1e7-1f1f9",uc:"1f1e7-1f1f9",isCanonical:!0},":bt:":{unicode:["1f1e7-1f1f9"],fname:"1f1e7-1f1f9",uc:"1f1e7-1f1f9",isCanonical:!1},":flag_bs:":{unicode:["1f1e7-1f1f8"],fname:"1f1e7-1f1f8",uc:"1f1e7-1f1f8",isCanonical:!0},":bs:":{unicode:["1f1e7-1f1f8"],fname:"1f1e7-1f1f8",uc:"1f1e7-1f1f8",isCanonical:!1},":flag_br:":{unicode:["1f1e7-1f1f7"],fname:"1f1e7-1f1f7",uc:"1f1e7-1f1f7",isCanonical:!0},":br:":{unicode:["1f1e7-1f1f7"],fname:"1f1e7-1f1f7",uc:"1f1e7-1f1f7",isCanonical:!1},":flag_bq:":{unicode:["1f1e7-1f1f6"],fname:"1f1e7-1f1f6",uc:"1f1e7-1f1f6",isCanonical:!0},":bq:":{unicode:["1f1e7-1f1f6"],fname:"1f1e7-1f1f6",uc:"1f1e7-1f1f6",isCanonical:!1},":flag_bo:":{unicode:["1f1e7-1f1f4"],fname:"1f1e7-1f1f4",uc:"1f1e7-1f1f4",isCanonical:!0},":bo:":{unicode:["1f1e7-1f1f4"],fname:"1f1e7-1f1f4",uc:"1f1e7-1f1f4",isCanonical:!1},":flag_bn:":{unicode:["1f1e7-1f1f3"],fname:"1f1e7-1f1f3",uc:"1f1e7-1f1f3",isCanonical:!0},":bn:":{unicode:["1f1e7-1f1f3"],fname:"1f1e7-1f1f3",uc:"1f1e7-1f1f3",isCanonical:!1},":flag_bm:":{unicode:["1f1e7-1f1f2"],fname:"1f1e7-1f1f2",uc:"1f1e7-1f1f2",isCanonical:!0},":bm:":{unicode:["1f1e7-1f1f2"],fname:"1f1e7-1f1f2",uc:"1f1e7-1f1f2",isCanonical:!1},":flag_bl:":{unicode:["1f1e7-1f1f1"],fname:"1f1e7-1f1f1",uc:"1f1e7-1f1f1",isCanonical:!0},":bl:":{unicode:["1f1e7-1f1f1"],fname:"1f1e7-1f1f1",uc:"1f1e7-1f1f1",isCanonical:!1},":flag_bj:":{unicode:["1f1e7-1f1ef"],fname:"1f1e7-1f1ef",uc:"1f1e7-1f1ef",isCanonical:!0},":bj:":{unicode:["1f1e7-1f1ef"],fname:"1f1e7-1f1ef",uc:"1f1e7-1f1ef",isCanonical:!1},":flag_bi:":{unicode:["1f1e7-1f1ee"],fname:"1f1e7-1f1ee",uc:"1f1e7-1f1ee",isCanonical:!0},":bi:":{unicode:["1f1e7-1f1ee"],fname:"1f1e7-1f1ee",uc:"1f1e7-1f1ee",isCanonical:!1},":flag_bh:":{unicode:["1f1e7-1f1ed"],fname:"1f1e7-1f1ed",uc:"1f1e7-1f1ed",isCanonical:!0},":bh:":{unicode:["1f1e7-1f1ed"],fname:"1f1e7-1f1ed",uc:"1f1e7-1f1ed",isCanonical:!1},":flag_bg:":{unicode:["1f1e7-1f1ec"],fname:"1f1e7-1f1ec",uc:"1f1e7-1f1ec",isCanonical:!0},":bg:":{unicode:["1f1e7-1f1ec"],fname:"1f1e7-1f1ec",uc:"1f1e7-1f1ec",isCanonical:!1},":flag_bf:":{unicode:["1f1e7-1f1eb"],fname:"1f1e7-1f1eb",uc:"1f1e7-1f1eb",isCanonical:!0},":bf:":{unicode:["1f1e7-1f1eb"],fname:"1f1e7-1f1eb",uc:"1f1e7-1f1eb",isCanonical:!1},":flag_be:":{unicode:["1f1e7-1f1ea"],fname:"1f1e7-1f1ea",uc:"1f1e7-1f1ea",isCanonical:!0},":be:":{unicode:["1f1e7-1f1ea"],fname:"1f1e7-1f1ea",uc:"1f1e7-1f1ea",isCanonical:!1},":flag_bd:":{unicode:["1f1e7-1f1e9"],fname:"1f1e7-1f1e9",uc:"1f1e7-1f1e9",isCanonical:!0},":bd:":{unicode:["1f1e7-1f1e9"],fname:"1f1e7-1f1e9",uc:"1f1e7-1f1e9",isCanonical:!1},":flag_bb:":{unicode:["1f1e7-1f1e7"],fname:"1f1e7-1f1e7",uc:"1f1e7-1f1e7",isCanonical:!0},":bb:":{unicode:["1f1e7-1f1e7"],fname:"1f1e7-1f1e7",uc:"1f1e7-1f1e7",isCanonical:!1},":flag_ba:":{unicode:["1f1e7-1f1e6"],fname:"1f1e7-1f1e6",uc:"1f1e7-1f1e6",isCanonical:!0},":ba:":{unicode:["1f1e7-1f1e6"],fname:"1f1e7-1f1e6",uc:"1f1e7-1f1e6",isCanonical:!1},":flag_az:":{unicode:["1f1e6-1f1ff"],fname:"1f1e6-1f1ff",uc:"1f1e6-1f1ff",isCanonical:!0},":az:":{unicode:["1f1e6-1f1ff"],fname:"1f1e6-1f1ff",uc:"1f1e6-1f1ff",isCanonical:!1},":flag_ax:":{unicode:["1f1e6-1f1fd"],fname:"1f1e6-1f1fd",uc:"1f1e6-1f1fd",isCanonical:!0},":ax:":{unicode:["1f1e6-1f1fd"],fname:"1f1e6-1f1fd",uc:"1f1e6-1f1fd",isCanonical:!1},":flag_aw:":{unicode:["1f1e6-1f1fc"],fname:"1f1e6-1f1fc",uc:"1f1e6-1f1fc",isCanonical:!0},":aw:":{unicode:["1f1e6-1f1fc"],fname:"1f1e6-1f1fc",uc:"1f1e6-1f1fc",isCanonical:!1},":flag_au:":{unicode:["1f1e6-1f1fa"],fname:"1f1e6-1f1fa",uc:"1f1e6-1f1fa",isCanonical:!0},":au:":{unicode:["1f1e6-1f1fa"],fname:"1f1e6-1f1fa",uc:"1f1e6-1f1fa",isCanonical:!1},":flag_at:":{unicode:["1f1e6-1f1f9"],fname:"1f1e6-1f1f9",uc:"1f1e6-1f1f9",isCanonical:!0},":at:":{unicode:["1f1e6-1f1f9"],fname:"1f1e6-1f1f9",uc:"1f1e6-1f1f9",isCanonical:!1},":flag_as:":{unicode:["1f1e6-1f1f8"],fname:"1f1e6-1f1f8",uc:"1f1e6-1f1f8",isCanonical:!0},":as:":{unicode:["1f1e6-1f1f8"],fname:"1f1e6-1f1f8",uc:"1f1e6-1f1f8",isCanonical:!1},":flag_ar:":{unicode:["1f1e6-1f1f7"],fname:"1f1e6-1f1f7",uc:"1f1e6-1f1f7",isCanonical:!0},":ar:":{unicode:["1f1e6-1f1f7"],fname:"1f1e6-1f1f7",uc:"1f1e6-1f1f7",isCanonical:!1},":flag_aq:":{unicode:["1f1e6-1f1f6"],fname:"1f1e6-1f1f6",uc:"1f1e6-1f1f6",isCanonical:!0},":aq:":{unicode:["1f1e6-1f1f6"],fname:"1f1e6-1f1f6",uc:"1f1e6-1f1f6",isCanonical:!1},":flag_ao:":{unicode:["1f1e6-1f1f4"],fname:"1f1e6-1f1f4",uc:"1f1e6-1f1f4",isCanonical:!0},":ao:":{unicode:["1f1e6-1f1f4"],fname:"1f1e6-1f1f4",uc:"1f1e6-1f1f4",isCanonical:!1},":flag_am:":{unicode:["1f1e6-1f1f2"],fname:"1f1e6-1f1f2",uc:"1f1e6-1f1f2",isCanonical:!0},":am:":{unicode:["1f1e6-1f1f2"],fname:"1f1e6-1f1f2",uc:"1f1e6-1f1f2",isCanonical:!1},":flag_al:":{unicode:["1f1e6-1f1f1"],fname:"1f1e6-1f1f1",uc:"1f1e6-1f1f1",isCanonical:!0},":al:":{unicode:["1f1e6-1f1f1"],fname:"1f1e6-1f1f1",uc:"1f1e6-1f1f1",isCanonical:!1},":flag_ai:":{unicode:["1f1e6-1f1ee"],fname:"1f1e6-1f1ee",uc:"1f1e6-1f1ee",isCanonical:!0},":ai:":{unicode:["1f1e6-1f1ee"],fname:"1f1e6-1f1ee",uc:"1f1e6-1f1ee",isCanonical:!1},":flag_ag:":{unicode:["1f1e6-1f1ec"],fname:"1f1e6-1f1ec",uc:"1f1e6-1f1ec",isCanonical:!0},":ag:":{unicode:["1f1e6-1f1ec"],fname:"1f1e6-1f1ec",uc:"1f1e6-1f1ec",isCanonical:!1},":flag_af:":{unicode:["1f1e6-1f1eb"],fname:"1f1e6-1f1eb",uc:"1f1e6-1f1eb",isCanonical:!0},":af:":{unicode:["1f1e6-1f1eb"],fname:"1f1e6-1f1eb",uc:"1f1e6-1f1eb",isCanonical:!1},":flag_ae:":{unicode:["1f1e6-1f1ea"],fname:"1f1e6-1f1ea",uc:"1f1e6-1f1ea",isCanonical:!0},":ae:":{unicode:["1f1e6-1f1ea"],fname:"1f1e6-1f1ea",uc:"1f1e6-1f1ea",isCanonical:!1},":flag_ad:":{unicode:["1f1e6-1f1e9"],fname:"1f1e6-1f1e9",uc:"1f1e6-1f1e9",isCanonical:!0},":ad:":{unicode:["1f1e6-1f1e9"],fname:"1f1e6-1f1e9",uc:"1f1e6-1f1e9",isCanonical:!1},":flag_ac:":{unicode:["1f1e6-1f1e8"],fname:"1f1e6-1f1e8",uc:"1f1e6-1f1e8",isCanonical:!0},":ac:":{unicode:["1f1e6-1f1e8"],fname:"1f1e6-1f1e8",uc:"1f1e6-1f1e8",isCanonical:!1},":mahjong:":{unicode:["1f004-fe0f","1f004"],fname:"1f004",uc:"1f004",isCanonical:!0},":parking:":{unicode:["1f17f-fe0f","1f17f"],fname:"1f17f",uc:"1f17f",isCanonical:!0},":sa:":{unicode:["1f202-fe0f","1f202"],fname:"1f202",uc:"1f202",isCanonical:!0},":u7121:":{unicode:["1f21a-fe0f","1f21a"],fname:"1f21a",uc:"1f21a",isCanonical:!0},":u6307:":{unicode:["1f22f-fe0f","1f22f"],fname:"1f22f",uc:"1f22f",isCanonical:!0},":u6708:":{unicode:["1f237-fe0f","1f237"],fname:"1f237",uc:"1f237",isCanonical:!0},":film_frames:":{unicode:["1f39e-fe0f","1f39e"],fname:"1f39e",uc:"1f39e",isCanonical:!0},":tickets:":{unicode:["1f39f-fe0f","1f39f"],fname:"1f39f",uc:"1f39f",isCanonical:!0},":admission_tickets:":{unicode:["1f39f-fe0f","1f39f"],fname:"1f39f",uc:"1f39f",isCanonical:!1},":lifter:":{unicode:["1f3cb-fe0f","1f3cb"],fname:"1f3cb",uc:"1f3cb",isCanonical:!0},":weight_lifter:":{unicode:["1f3cb-fe0f","1f3cb"],fname:"1f3cb",uc:"1f3cb",isCanonical:!1},":golfer:":{unicode:["1f3cc-fe0f","1f3cc"],fname:"1f3cc",uc:"1f3cc",isCanonical:!0},":motorcycle:":{unicode:["1f3cd-fe0f","1f3cd"],fname:"1f3cd",uc:"1f3cd",isCanonical:!0},":racing_motorcycle:":{unicode:["1f3cd-fe0f","1f3cd"],fname:"1f3cd",uc:"1f3cd",isCanonical:!1},":race_car:":{unicode:["1f3ce-fe0f","1f3ce"],fname:"1f3ce",uc:"1f3ce",isCanonical:!0},":racing_car:":{unicode:["1f3ce-fe0f","1f3ce"],fname:"1f3ce",uc:"1f3ce",isCanonical:!1},":military_medal:":{unicode:["1f396-fe0f","1f396"],fname:"1f396",uc:"1f396",isCanonical:!0},":reminder_ribbon:":{unicode:["1f397-fe0f","1f397"],fname:"1f397",uc:"1f397",isCanonical:!0},":hot_pepper:":{unicode:["1f336-fe0f","1f336"],fname:"1f336",uc:"1f336",isCanonical:!0},":cloud_rain:":{unicode:["1f327-fe0f","1f327"],fname:"1f327",uc:"1f327",isCanonical:!0},":cloud_with_rain:":{unicode:["1f327-fe0f","1f327"],fname:"1f327",uc:"1f327",isCanonical:!1},":cloud_snow:":{unicode:["1f328-fe0f","1f328"],fname:"1f328",uc:"1f328",isCanonical:!0},":cloud_with_snow:":{unicode:["1f328-fe0f","1f328"],fname:"1f328",uc:"1f328",isCanonical:!1},":cloud_lightning:":{unicode:["1f329-fe0f","1f329"],fname:"1f329",uc:"1f329",isCanonical:!0},":cloud_with_lightning:":{unicode:["1f329-fe0f","1f329"],fname:"1f329",uc:"1f329",isCanonical:!1},":cloud_tornado:":{unicode:["1f32a-fe0f","1f32a"],fname:"1f32a",uc:"1f32a",isCanonical:!0},":cloud_with_tornado:":{unicode:["1f32a-fe0f","1f32a"],fname:"1f32a",uc:"1f32a",isCanonical:!1},":fog:":{unicode:["1f32b-fe0f","1f32b"],fname:"1f32b",uc:"1f32b",isCanonical:!0},":wind_blowing_face:":{unicode:["1f32c-fe0f","1f32c"],fname:"1f32c",uc:"1f32c",isCanonical:!0},":chipmunk:":{unicode:["1f43f-fe0f","1f43f"],fname:"1f43f",uc:"1f43f",isCanonical:!0},":spider:":{unicode:["1f577-fe0f","1f577"],fname:"1f577",uc:"1f577",isCanonical:!0},":spider_web:":{unicode:["1f578-fe0f","1f578"],fname:"1f578",uc:"1f578",isCanonical:!0},":thermometer:":{unicode:["1f321-fe0f","1f321"],fname:"1f321",uc:"1f321",isCanonical:!0},":microphone2:":{unicode:["1f399-fe0f","1f399"],fname:"1f399",uc:"1f399",isCanonical:!0},":studio_microphone:":{unicode:["1f399-fe0f","1f399"],fname:"1f399",uc:"1f399",isCanonical:!1},":level_slider:":{unicode:["1f39a-fe0f","1f39a"],fname:"1f39a",uc:"1f39a",isCanonical:!0},":control_knobs:":{unicode:["1f39b-fe0f","1f39b"],fname:"1f39b",uc:"1f39b",isCanonical:!0},":flag_white:":{unicode:["1f3f3-fe0f","1f3f3"],fname:"1f3f3",uc:"1f3f3",isCanonical:!0},":waving_white_flag:":{unicode:["1f3f3-fe0f","1f3f3"],fname:"1f3f3",uc:"1f3f3",isCanonical:!1},":rosette:":{unicode:["1f3f5-fe0f","1f3f5"],fname:"1f3f5",uc:"1f3f5",isCanonical:!0},":label:":{unicode:["1f3f7-fe0f","1f3f7"],fname:"1f3f7",uc:"1f3f7",isCanonical:!0},":projector:":{unicode:["1f4fd-fe0f","1f4fd"],fname:"1f4fd",uc:"1f4fd",isCanonical:!0},":film_projector:":{unicode:["1f4fd-fe0f","1f4fd"],fname:"1f4fd",uc:"1f4fd",isCanonical:!1},":om_symbol:":{unicode:["1f549-fe0f","1f549"],fname:"1f549",uc:"1f549",isCanonical:!0},":dove:":{unicode:["1f54a-fe0f","1f54a"],fname:"1f54a",uc:"1f54a",isCanonical:!0},":dove_of_peace:":{unicode:["1f54a-fe0f","1f54a"],fname:"1f54a",uc:"1f54a",isCanonical:!1},":candle:":{unicode:["1f56f-fe0f","1f56f"],fname:"1f56f",uc:"1f56f",isCanonical:!0},":clock:":{unicode:["1f570-fe0f","1f570"],fname:"1f570",uc:"1f570",isCanonical:!0},":mantlepiece_clock:":{unicode:["1f570-fe0f","1f570"],fname:"1f570",uc:"1f570",isCanonical:!1},":hole:":{unicode:["1f573-fe0f","1f573"],fname:"1f573",uc:"1f573",isCanonical:!0},":dark_sunglasses:":{unicode:["1f576-fe0f","1f576"],fname:"1f576",uc:"1f576",isCanonical:!0},":joystick:":{unicode:["1f579-fe0f","1f579"],fname:"1f579",uc:"1f579",isCanonical:!0},":paperclips:":{unicode:["1f587-fe0f","1f587"],fname:"1f587",uc:"1f587",isCanonical:!0},":linked_paperclips:":{unicode:["1f587-fe0f","1f587"],fname:"1f587",uc:"1f587",isCanonical:!1},":pen_ballpoint:":{unicode:["1f58a-fe0f","1f58a"],fname:"1f58a",uc:"1f58a",isCanonical:!0},":lower_left_ballpoint_pen:":{unicode:["1f58a-fe0f","1f58a"],fname:"1f58a",uc:"1f58a",isCanonical:!1},":pen_fountain:":{unicode:["1f58b-fe0f","1f58b"],fname:"1f58b",uc:"1f58b",isCanonical:!0},":lower_left_fountain_pen:":{unicode:["1f58b-fe0f","1f58b"],fname:"1f58b",uc:"1f58b",isCanonical:!1},":paintbrush:":{unicode:["1f58c-fe0f","1f58c"],fname:"1f58c",uc:"1f58c",isCanonical:!0},":lower_left_paintbrush:":{unicode:["1f58c-fe0f","1f58c"],fname:"1f58c",uc:"1f58c",isCanonical:!1},":crayon:":{unicode:["1f58d-fe0f","1f58d"],fname:"1f58d",uc:"1f58d",isCanonical:!0},":lower_left_crayon:":{unicode:["1f58d-fe0f","1f58d"],fname:"1f58d",uc:"1f58d",isCanonical:!1},":desktop:":{unicode:["1f5a5-fe0f","1f5a5"],fname:"1f5a5",uc:"1f5a5",isCanonical:!0},":desktop_computer:":{unicode:["1f5a5-fe0f","1f5a5"],fname:"1f5a5",uc:"1f5a5",isCanonical:!1},":printer:":{unicode:["1f5a8-fe0f","1f5a8"],fname:"1f5a8",uc:"1f5a8",isCanonical:!0},":trackball:":{unicode:["1f5b2-fe0f","1f5b2"],fname:"1f5b2",uc:"1f5b2",isCanonical:!0},":frame_photo:":{unicode:["1f5bc-fe0f","1f5bc"],fname:"1f5bc",uc:"1f5bc",isCanonical:!0},":frame_with_picture:":{unicode:["1f5bc-fe0f","1f5bc"],fname:"1f5bc",uc:"1f5bc",isCanonical:!1},":dividers:":{unicode:["1f5c2-fe0f","1f5c2"],fname:"1f5c2",uc:"1f5c2",isCanonical:!0},":card_index_dividers:":{unicode:["1f5c2-fe0f","1f5c2"],fname:"1f5c2",uc:"1f5c2",isCanonical:!1},":card_box:":{unicode:["1f5c3-fe0f","1f5c3"],fname:"1f5c3",uc:"1f5c3",isCanonical:!0},":card_file_box:":{unicode:["1f5c3-fe0f","1f5c3"],fname:"1f5c3",uc:"1f5c3",isCanonical:!1},":file_cabinet:":{unicode:["1f5c4-fe0f","1f5c4"],fname:"1f5c4",uc:"1f5c4",isCanonical:!0},":wastebasket:":{unicode:["1f5d1-fe0f","1f5d1"],fname:"1f5d1",uc:"1f5d1",isCanonical:!0},":notepad_spiral:":{unicode:["1f5d2-fe0f","1f5d2"],fname:"1f5d2",uc:"1f5d2",isCanonical:!0},":spiral_note_pad:":{unicode:["1f5d2-fe0f","1f5d2"],fname:"1f5d2",uc:"1f5d2",isCanonical:!1},":calendar_spiral:":{unicode:["1f5d3-fe0f","1f5d3"],fname:"1f5d3",uc:"1f5d3",isCanonical:!0},":spiral_calendar_pad:":{unicode:["1f5d3-fe0f","1f5d3"],fname:"1f5d3",uc:"1f5d3",isCanonical:!1},":compression:":{unicode:["1f5dc-fe0f","1f5dc"],fname:"1f5dc",uc:"1f5dc",isCanonical:!0},":key2:":{unicode:["1f5dd-fe0f","1f5dd"],fname:"1f5dd",uc:"1f5dd",isCanonical:!0},":old_key:":{unicode:["1f5dd-fe0f","1f5dd"],fname:"1f5dd",uc:"1f5dd",isCanonical:!1},":newspaper2:":{unicode:["1f5de-fe0f","1f5de"],fname:"1f5de",uc:"1f5de",isCanonical:!0},":rolled_up_newspaper:":{unicode:["1f5de-fe0f","1f5de"],fname:"1f5de",uc:"1f5de",isCanonical:!1},":dagger:":{unicode:["1f5e1-fe0f","1f5e1"],fname:"1f5e1",uc:"1f5e1",isCanonical:!0},":dagger_knife:":{unicode:["1f5e1-fe0f","1f5e1"],fname:"1f5e1",uc:"1f5e1",isCanonical:!1},":speaking_head:":{unicode:["1f5e3-fe0f","1f5e3"],fname:"1f5e3",uc:"1f5e3",isCanonical:!0},":speaking_head_in_silhouette:":{unicode:["1f5e3-fe0f","1f5e3"],fname:"1f5e3",uc:"1f5e3",isCanonical:!1},":speech_left:":{unicode:["1f5e8-fe0f","1f5e8"],fname:"1f5e8",uc:"1f5e8",isCanonical:!0},":left_speech_bubble:":{unicode:["1f5e8-fe0f","1f5e8"],fname:"1f5e8",uc:"1f5e8",isCanonical:!1},":anger_right:":{unicode:["1f5ef-fe0f","1f5ef"],fname:"1f5ef",uc:"1f5ef",isCanonical:!0},":right_anger_bubble:":{unicode:["1f5ef-fe0f","1f5ef"],fname:"1f5ef",uc:"1f5ef",isCanonical:!1},":ballot_box:":{unicode:["1f5f3-fe0f","1f5f3"],fname:"1f5f3",uc:"1f5f3",isCanonical:!0},":ballot_box_with_ballot:":{unicode:["1f5f3-fe0f","1f5f3"],fname:"1f5f3",uc:"1f5f3",isCanonical:!1},":map:":{unicode:["1f5fa-fe0f","1f5fa"],fname:"1f5fa",uc:"1f5fa",isCanonical:!0},":world_map:":{unicode:["1f5fa-fe0f","1f5fa"],fname:"1f5fa",uc:"1f5fa",isCanonical:!1},":tools:":{unicode:["1f6e0-fe0f","1f6e0"],fname:"1f6e0",uc:"1f6e0",isCanonical:!0},":hammer_and_wrench:":{unicode:["1f6e0-fe0f","1f6e0"],fname:"1f6e0",uc:"1f6e0",isCanonical:!1},":shield:":{unicode:["1f6e1-fe0f","1f6e1"],fname:"1f6e1",uc:"1f6e1",isCanonical:!0},":oil:":{unicode:["1f6e2-fe0f","1f6e2"],fname:"1f6e2",uc:"1f6e2",isCanonical:!0},":oil_drum:":{unicode:["1f6e2-fe0f","1f6e2"],fname:"1f6e2",uc:"1f6e2",isCanonical:!1},":satellite_orbital:":{unicode:["1f6f0-fe0f","1f6f0"],fname:"1f6f0",uc:"1f6f0",isCanonical:!0},":fork_knife_plate:":{unicode:["1f37d-fe0f","1f37d"],fname:"1f37d",uc:"1f37d",isCanonical:!0},":fork_and_knife_with_plate:":{unicode:["1f37d-fe0f","1f37d"],fname:"1f37d",uc:"1f37d",isCanonical:!1},":eye:":{unicode:["1f441-fe0f","1f441"],fname:"1f441",uc:"1f441",isCanonical:!0},":levitate:":{unicode:["1f574-fe0f","1f574"],fname:"1f574",uc:"1f574",isCanonical:!0},":man_in_business_suit_levitating:":{unicode:["1f574-fe0f","1f574"],fname:"1f574",uc:"1f574",isCanonical:!1},":spy:":{unicode:["1f575-fe0f","1f575"],fname:"1f575",uc:"1f575",isCanonical:!0},":sleuth_or_spy:":{unicode:["1f575-fe0f","1f575"],fname:"1f575",uc:"1f575",isCanonical:!1},":hand_splayed:":{unicode:["1f590-fe0f","1f590"],fname:"1f590",uc:"1f590",isCanonical:!0},":raised_hand_with_fingers_splayed:":{unicode:["1f590-fe0f","1f590"],fname:"1f590",uc:"1f590",isCanonical:!1},":mountain_snow:":{unicode:["1f3d4-fe0f","1f3d4"],fname:"1f3d4",uc:"1f3d4",isCanonical:!0},":snow_capped_mountain:":{unicode:["1f3d4-fe0f","1f3d4"],fname:"1f3d4",uc:"1f3d4",isCanonical:!1},":camping:":{unicode:["1f3d5-fe0f","1f3d5"],fname:"1f3d5",uc:"1f3d5",isCanonical:!0},":beach:":{unicode:["1f3d6-fe0f","1f3d6"],fname:"1f3d6",uc:"1f3d6",isCanonical:!0},":beach_with_umbrella:":{unicode:["1f3d6-fe0f","1f3d6"],fname:"1f3d6",uc:"1f3d6",isCanonical:!1},":construction_site:":{unicode:["1f3d7-fe0f","1f3d7"],fname:"1f3d7",uc:"1f3d7",isCanonical:!0},":building_construction:":{unicode:["1f3d7-fe0f","1f3d7"],fname:"1f3d7",uc:"1f3d7",isCanonical:!1},":homes:":{unicode:["1f3d8-fe0f","1f3d8"],fname:"1f3d8",uc:"1f3d8",isCanonical:!0},":house_buildings:":{unicode:["1f3d8-fe0f","1f3d8"],fname:"1f3d8",uc:"1f3d8",isCanonical:!1},":cityscape:":{unicode:["1f3d9-fe0f","1f3d9"],fname:"1f3d9",uc:"1f3d9",isCanonical:!0},":house_abandoned:":{unicode:["1f3da-fe0f","1f3da"],fname:"1f3da",uc:"1f3da",isCanonical:!0},":derelict_house_building:":{unicode:["1f3da-fe0f","1f3da"],fname:"1f3da",uc:"1f3da",isCanonical:!1},":classical_building:":{unicode:["1f3db-fe0f","1f3db"],fname:"1f3db",uc:"1f3db",isCanonical:!0},":desert:":{unicode:["1f3dc-fe0f","1f3dc"],fname:"1f3dc",uc:"1f3dc",isCanonical:!0},":island:":{unicode:["1f3dd-fe0f","1f3dd"],fname:"1f3dd",uc:"1f3dd",isCanonical:!0},":desert_island:":{unicode:["1f3dd-fe0f","1f3dd"],fname:"1f3dd",uc:"1f3dd",isCanonical:!1},":park:":{unicode:["1f3de-fe0f","1f3de"],fname:"1f3de",uc:"1f3de",isCanonical:!0},":national_park:":{unicode:["1f3de-fe0f","1f3de"],fname:"1f3de",uc:"1f3de",isCanonical:!1},":stadium:":{unicode:["1f3df-fe0f","1f3df"],fname:"1f3df",uc:"1f3df",isCanonical:!0},":couch:":{unicode:["1f6cb-fe0f","1f6cb"],fname:"1f6cb",uc:"1f6cb",isCanonical:!0},":couch_and_lamp:":{unicode:["1f6cb-fe0f","1f6cb"],fname:"1f6cb",uc:"1f6cb",isCanonical:!1},":shopping_bags:":{unicode:["1f6cd-fe0f","1f6cd"],fname:"1f6cd",uc:"1f6cd",isCanonical:!0},":bellhop:":{unicode:["1f6ce-fe0f","1f6ce"],fname:"1f6ce",uc:"1f6ce",isCanonical:!0},":bellhop_bell:":{unicode:["1f6ce-fe0f","1f6ce"],fname:"1f6ce",uc:"1f6ce",isCanonical:!1},":bed:":{unicode:["1f6cf-fe0f","1f6cf"],fname:"1f6cf",uc:"1f6cf",isCanonical:!0},":motorway:":{unicode:["1f6e3-fe0f","1f6e3"],fname:"1f6e3",uc:"1f6e3",isCanonical:!0},":railway_track:":{unicode:["1f6e4-fe0f","1f6e4"],fname:"1f6e4",uc:"1f6e4",isCanonical:!0},":railroad_track:":{unicode:["1f6e4-fe0f","1f6e4"],fname:"1f6e4",uc:"1f6e4",isCanonical:!1},":motorboat:":{unicode:["1f6e5-fe0f","1f6e5"],fname:"1f6e5",uc:"1f6e5",isCanonical:!0},":airplane_small:":{unicode:["1f6e9-fe0f","1f6e9"],fname:"1f6e9",uc:"1f6e9",isCanonical:!0},":small_airplane:":{unicode:["1f6e9-fe0f","1f6e9"],fname:"1f6e9",uc:"1f6e9",isCanonical:!1},":cruise_ship:":{unicode:["1f6f3-fe0f","1f6f3"],fname:"1f6f3",uc:"1f6f3",isCanonical:!0},":passenger_ship:":{unicode:["1f6f3-fe0f","1f6f3"],fname:"1f6f3",uc:"1f6f3",isCanonical:!1},":white_sun_small_cloud:":{unicode:["1f324-fe0f","1f324"],fname:"1f324",uc:"1f324",isCanonical:!0},":white_sun_with_small_cloud:":{unicode:["1f324-fe0f","1f324"],fname:"1f324",uc:"1f324",isCanonical:!1},":white_sun_cloud:":{unicode:["1f325-fe0f","1f325"],fname:"1f325",uc:"1f325",isCanonical:!0},":white_sun_behind_cloud:":{unicode:["1f325-fe0f","1f325"],fname:"1f325",uc:"1f325",isCanonical:!1},":white_sun_rain_cloud:":{unicode:["1f326-fe0f","1f326"],fname:"1f326",uc:"1f326",isCanonical:!0},":white_sun_behind_cloud_with_rain:":{unicode:["1f326-fe0f","1f326"],fname:"1f326",uc:"1f326",isCanonical:!1},":mouse_three_button:":{unicode:["1f5b1-fe0f","1f5b1"],fname:"1f5b1",uc:"1f5b1",isCanonical:!0},":three_button_mouse:":{unicode:["1f5b1-fe0f","1f5b1"],fname:"1f5b1",uc:"1f5b1",isCanonical:!1},":point_up_tone1:":{unicode:["261d-1f3fb"],fname:"261d-1f3fb",uc:"261d-1f3fb",isCanonical:!0},":point_up_tone2:":{unicode:["261d-1f3fc"],fname:"261d-1f3fc",uc:"261d-1f3fc",isCanonical:!0},":point_up_tone3:":{unicode:["261d-1f3fd"],fname:"261d-1f3fd",uc:"261d-1f3fd",isCanonical:!0},":point_up_tone4:":{unicode:["261d-1f3fe"],fname:"261d-1f3fe",uc:"261d-1f3fe",isCanonical:!0},":point_up_tone5:":{unicode:["261d-1f3ff"],fname:"261d-1f3ff",uc:"261d-1f3ff",isCanonical:!0},":v_tone1:":{unicode:["270c-1f3fb"],fname:"270c-1f3fb",uc:"270c-1f3fb",isCanonical:!0},":v_tone2:":{unicode:["270c-1f3fc"],fname:"270c-1f3fc",uc:"270c-1f3fc",isCanonical:!0},":v_tone3:":{unicode:["270c-1f3fd"],fname:"270c-1f3fd",uc:"270c-1f3fd",isCanonical:!0},":v_tone4:":{unicode:["270c-1f3fe"],fname:"270c-1f3fe",uc:"270c-1f3fe",isCanonical:!0},":v_tone5:":{unicode:["270c-1f3ff"],fname:"270c-1f3ff",uc:"270c-1f3ff",isCanonical:!0},":fist_tone1:":{unicode:["270a-1f3fb"],fname:"270a-1f3fb",uc:"270a-1f3fb",isCanonical:!0},":fist_tone2:":{unicode:["270a-1f3fc"],fname:"270a-1f3fc",uc:"270a-1f3fc",isCanonical:!0},":fist_tone3:":{unicode:["270a-1f3fd"],fname:"270a-1f3fd",uc:"270a-1f3fd",isCanonical:!0},":fist_tone4:":{unicode:["270a-1f3fe"],fname:"270a-1f3fe",uc:"270a-1f3fe",isCanonical:!0},":fist_tone5:":{unicode:["270a-1f3ff"],fname:"270a-1f3ff",uc:"270a-1f3ff",isCanonical:!0},":raised_hand_tone1:":{unicode:["270b-1f3fb"],fname:"270b-1f3fb",uc:"270b-1f3fb",isCanonical:!0},":raised_hand_tone2:":{unicode:["270b-1f3fc"],fname:"270b-1f3fc",uc:"270b-1f3fc",isCanonical:!0},":raised_hand_tone3:":{unicode:["270b-1f3fd"],fname:"270b-1f3fd",uc:"270b-1f3fd",isCanonical:!0},":raised_hand_tone4:":{unicode:["270b-1f3fe"],fname:"270b-1f3fe",uc:"270b-1f3fe",isCanonical:!0},":raised_hand_tone5:":{unicode:["270b-1f3ff"],fname:"270b-1f3ff",uc:"270b-1f3ff",isCanonical:!0},":writing_hand_tone1:":{unicode:["270d-1f3fb"],fname:"270d-1f3fb",uc:"270d-1f3fb",isCanonical:!0},":writing_hand_tone2:":{unicode:["270d-1f3fc"],fname:"270d-1f3fc",uc:"270d-1f3fc",isCanonical:!0},":writing_hand_tone3:":{unicode:["270d-1f3fd"],fname:"270d-1f3fd",uc:"270d-1f3fd",isCanonical:!0},":writing_hand_tone4:":{unicode:["270d-1f3fe"],fname:"270d-1f3fe",uc:"270d-1f3fe",isCanonical:!0},":writing_hand_tone5:":{unicode:["270d-1f3ff"],fname:"270d-1f3ff",uc:"270d-1f3ff",isCanonical:!0},":basketball_player_tone1:":{unicode:["26f9-1f3fb"],fname:"26f9-1f3fb",uc:"26f9-1f3fb",isCanonical:!0},":person_with_ball_tone1:":{unicode:["26f9-1f3fb"],fname:"26f9-1f3fb",uc:"26f9-1f3fb",isCanonical:!1},":basketball_player_tone2:":{unicode:["26f9-1f3fc"],fname:"26f9-1f3fc",uc:"26f9-1f3fc",isCanonical:!0},":person_with_ball_tone2:":{unicode:["26f9-1f3fc"],fname:"26f9-1f3fc",uc:"26f9-1f3fc",isCanonical:!1},":basketball_player_tone3:":{unicode:["26f9-1f3fd"],fname:"26f9-1f3fd",uc:"26f9-1f3fd",isCanonical:!0},":person_with_ball_tone3:":{unicode:["26f9-1f3fd"],fname:"26f9-1f3fd",uc:"26f9-1f3fd",isCanonical:!1},":basketball_player_tone4:":{unicode:["26f9-1f3fe"],fname:"26f9-1f3fe",uc:"26f9-1f3fe",isCanonical:!0},":person_with_ball_tone4:":{unicode:["26f9-1f3fe"],fname:"26f9-1f3fe",uc:"26f9-1f3fe",isCanonical:!1},":basketball_player_tone5:":{unicode:["26f9-1f3ff"],fname:"26f9-1f3ff",uc:"26f9-1f3ff",isCanonical:!0},":person_with_ball_tone5:":{unicode:["26f9-1f3ff"],fname:"26f9-1f3ff",uc:"26f9-1f3ff",isCanonical:!1},":copyright:":{unicode:["00a9-fe0f","00a9"],fname:"00a9",uc:"00a9",isCanonical:!0},":registered:":{unicode:["00ae-fe0f","00ae"],fname:"00ae",uc:"00ae",isCanonical:!0},":bangbang:":{unicode:["203c-fe0f","203c"],fname:"203c",uc:"203c",isCanonical:!0},":interrobang:":{unicode:["2049-fe0f","2049"],fname:"2049",uc:"2049",isCanonical:!0},":tm:":{unicode:["2122-fe0f","2122"],fname:"2122",uc:"2122",isCanonical:!0},":information_source:":{unicode:["2139-fe0f","2139"],fname:"2139",uc:"2139",isCanonical:!0},":left_right_arrow:":{unicode:["2194-fe0f","2194"],fname:"2194",uc:"2194",isCanonical:!0},":arrow_up_down:":{unicode:["2195-fe0f","2195"],fname:"2195",uc:"2195",isCanonical:!0},":arrow_upper_left:":{unicode:["2196-fe0f","2196"],fname:"2196",uc:"2196",isCanonical:!0},":arrow_upper_right:":{unicode:["2197-fe0f","2197"],fname:"2197",uc:"2197",isCanonical:!0},":arrow_lower_right:":{unicode:["2198-fe0f","2198"],fname:"2198",uc:"2198",isCanonical:!0},":arrow_lower_left:":{unicode:["2199-fe0f","2199"],fname:"2199",uc:"2199",isCanonical:!0},":leftwards_arrow_with_hook:":{unicode:["21a9-fe0f","21a9"],fname:"21a9",uc:"21a9",isCanonical:!0},":arrow_right_hook:":{unicode:["21aa-fe0f","21aa"],fname:"21aa",uc:"21aa",isCanonical:!0},":watch:":{unicode:["231a-fe0f","231a"],fname:"231a",uc:"231a",isCanonical:!0},":hourglass:":{unicode:["231b-fe0f","231b"],fname:"231b",uc:"231b",isCanonical:!0},":m:":{unicode:["24c2-fe0f","24c2"],fname:"24c2",uc:"24c2",isCanonical:!0},":black_small_square:":{unicode:["25aa-fe0f","25aa"],fname:"25aa",uc:"25aa",isCanonical:!0},":white_small_square:":{unicode:["25ab-fe0f","25ab"],fname:"25ab",uc:"25ab",isCanonical:!0},":arrow_forward:":{unicode:["25b6-fe0f","25b6"],fname:"25b6",uc:"25b6",isCanonical:!0},":arrow_backward:":{unicode:["25c0-fe0f","25c0"],fname:"25c0",uc:"25c0",isCanonical:!0},":white_medium_square:":{unicode:["25fb-fe0f","25fb"],fname:"25fb",uc:"25fb",isCanonical:!0},":black_medium_square:":{unicode:["25fc-fe0f","25fc"],fname:"25fc",uc:"25fc",isCanonical:!0},":white_medium_small_square:":{unicode:["25fd-fe0f","25fd"],fname:"25fd",uc:"25fd",isCanonical:!0},":black_medium_small_square:":{unicode:["25fe-fe0f","25fe"],fname:"25fe",uc:"25fe",isCanonical:!0},":sunny:":{unicode:["2600-fe0f","2600"],fname:"2600",uc:"2600",isCanonical:!0},":cloud:":{unicode:["2601-fe0f","2601"],fname:"2601",uc:"2601",isCanonical:!0},":telephone:":{unicode:["260e-fe0f","260e"],fname:"260e",uc:"260e",isCanonical:!0},":ballot_box_with_check:":{unicode:["2611-fe0f","2611"],fname:"2611",uc:"2611",isCanonical:!0},":umbrella:":{unicode:["2614-fe0f","2614"],fname:"2614",uc:"2614",isCanonical:!0},":coffee:":{unicode:["2615-fe0f","2615"],fname:"2615",uc:"2615",isCanonical:!0},":point_up:":{unicode:["261d-fe0f","261d"],fname:"261d",uc:"261d",isCanonical:!0},":relaxed:":{unicode:["263a-fe0f","263a"],fname:"263a",uc:"263a",isCanonical:!0},":aries:":{unicode:["2648-fe0f","2648"],fname:"2648",uc:"2648",isCanonical:!0},":taurus:":{unicode:["2649-fe0f","2649"],fname:"2649",uc:"2649",isCanonical:!0},":gemini:":{unicode:["264a-fe0f","264a"],fname:"264a",uc:"264a",isCanonical:!0},":cancer:":{unicode:["264b-fe0f","264b"],fname:"264b",uc:"264b",isCanonical:!0},":leo:":{unicode:["264c-fe0f","264c"],fname:"264c",uc:"264c",isCanonical:!0},":virgo:":{unicode:["264d-fe0f","264d"],fname:"264d",uc:"264d",isCanonical:!0},":libra:":{unicode:["264e-fe0f","264e"],fname:"264e",uc:"264e",isCanonical:!0},":scorpius:":{unicode:["264f-fe0f","264f"],fname:"264f",uc:"264f",isCanonical:!0},":sagittarius:":{unicode:["2650-fe0f","2650"],fname:"2650",uc:"2650",isCanonical:!0},":capricorn:":{unicode:["2651-fe0f","2651"],fname:"2651",uc:"2651",isCanonical:!0},":aquarius:":{unicode:["2652-fe0f","2652"],fname:"2652",uc:"2652",isCanonical:!0},":pisces:":{unicode:["2653-fe0f","2653"],fname:"2653",uc:"2653",isCanonical:!0},":spades:":{unicode:["2660-fe0f","2660"],fname:"2660",uc:"2660",isCanonical:!0},":clubs:":{unicode:["2663-fe0f","2663"],fname:"2663",uc:"2663",isCanonical:!0},":hearts:":{unicode:["2665-fe0f","2665"],fname:"2665",uc:"2665",isCanonical:!0},":diamonds:":{unicode:["2666-fe0f","2666"],fname:"2666",uc:"2666",isCanonical:!0},":hotsprings:":{unicode:["2668-fe0f","2668"],fname:"2668",uc:"2668",isCanonical:!0},":recycle:":{unicode:["267b-fe0f","267b"],fname:"267b",uc:"267b",isCanonical:!0},":wheelchair:":{unicode:["267f-fe0f","267f"],fname:"267f",uc:"267f",isCanonical:!0},":anchor:":{unicode:["2693-fe0f","2693"],fname:"2693",uc:"2693",isCanonical:!0},":warning:":{unicode:["26a0-fe0f","26a0"],fname:"26a0",uc:"26a0",isCanonical:!0},":zap:":{unicode:["26a1-fe0f","26a1"],fname:"26a1",uc:"26a1",isCanonical:!0},":white_circle:":{unicode:["26aa-fe0f","26aa"],fname:"26aa",uc:"26aa",isCanonical:!0},":black_circle:":{unicode:["26ab-fe0f","26ab"],fname:"26ab",uc:"26ab",isCanonical:!0},":soccer:":{unicode:["26bd-fe0f","26bd"],fname:"26bd",uc:"26bd",isCanonical:!0},":baseball:":{unicode:["26be-fe0f","26be"],fname:"26be",uc:"26be",isCanonical:!0},":snowman:":{unicode:["26c4-fe0f","26c4"],fname:"26c4",uc:"26c4",isCanonical:!0},":partly_sunny:":{unicode:["26c5-fe0f","26c5"],fname:"26c5",uc:"26c5",isCanonical:!0},":no_entry:":{unicode:["26d4-fe0f","26d4"],fname:"26d4",uc:"26d4",isCanonical:!0},":church:":{unicode:["26ea-fe0f","26ea"],fname:"26ea",uc:"26ea",isCanonical:!0},":fountain:":{unicode:["26f2-fe0f","26f2"],fname:"26f2",uc:"26f2",isCanonical:!0},":golf:":{unicode:["26f3-fe0f","26f3"],fname:"26f3",uc:"26f3",isCanonical:!0},":sailboat:":{unicode:["26f5-fe0f","26f5"],fname:"26f5",uc:"26f5",isCanonical:!0},":tent:":{unicode:["26fa-fe0f","26fa"],fname:"26fa",uc:"26fa",isCanonical:!0},":fuelpump:":{unicode:["26fd-fe0f","26fd"],fname:"26fd",uc:"26fd",isCanonical:!0},":scissors:":{unicode:["2702-fe0f","2702"],fname:"2702",uc:"2702",isCanonical:!0},":airplane:":{unicode:["2708-fe0f","2708"],fname:"2708",uc:"2708",isCanonical:!0},":envelope:":{unicode:["2709-fe0f","2709"],fname:"2709",uc:"2709",isCanonical:!0},":v:":{unicode:["270c-fe0f","270c"],fname:"270c",uc:"270c",isCanonical:!0},":pencil2:":{unicode:["270f-fe0f","270f"],fname:"270f",uc:"270f",isCanonical:!0},":black_nib:":{unicode:["2712-fe0f","2712"],fname:"2712",uc:"2712",isCanonical:!0},":heavy_check_mark:":{unicode:["2714-fe0f","2714"],fname:"2714",uc:"2714",isCanonical:!0},":heavy_multiplication_x:":{unicode:["2716-fe0f","2716"],fname:"2716",uc:"2716",isCanonical:!0},":eight_spoked_asterisk:":{unicode:["2733-fe0f","2733"],fname:"2733",uc:"2733",isCanonical:!0},":eight_pointed_black_star:":{unicode:["2734-fe0f","2734"],fname:"2734",uc:"2734",isCanonical:!0},":snowflake:":{unicode:["2744-fe0f","2744"],fname:"2744",uc:"2744",isCanonical:!0},":sparkle:":{unicode:["2747-fe0f","2747"],fname:"2747",uc:"2747",isCanonical:!0},":exclamation:":{unicode:["2757-fe0f","2757"],fname:"2757",uc:"2757",isCanonical:!0},":heart:":{unicode:["2764-fe0f","2764"],fname:"2764",uc:"2764",isCanonical:!0},":arrow_right:":{unicode:["27a1-fe0f","27a1"],fname:"27a1",uc:"27a1",isCanonical:!0},":arrow_heading_up:":{unicode:["2934-fe0f","2934"],fname:"2934",uc:"2934",isCanonical:!0},":arrow_heading_down:":{unicode:["2935-fe0f","2935"],fname:"2935",uc:"2935",isCanonical:!0},":arrow_left:":{unicode:["2b05-fe0f","2b05"],fname:"2b05",uc:"2b05",isCanonical:!0},":arrow_up:":{unicode:["2b06-fe0f","2b06"],fname:"2b06",uc:"2b06",isCanonical:!0},":arrow_down:":{unicode:["2b07-fe0f","2b07"],fname:"2b07",uc:"2b07",isCanonical:!0},":black_large_square:":{unicode:["2b1b-fe0f","2b1b"],fname:"2b1b",uc:"2b1b",isCanonical:!0},":white_large_square:":{unicode:["2b1c-fe0f","2b1c"],fname:"2b1c",uc:"2b1c",isCanonical:!0},":star:":{unicode:["2b50-fe0f","2b50"],fname:"2b50",uc:"2b50",isCanonical:!0},":o:":{unicode:["2b55-fe0f","2b55"],fname:"2b55",uc:"2b55",isCanonical:!0},":wavy_dash:":{unicode:["3030-fe0f","3030"],fname:"3030",uc:"3030",isCanonical:!0},":part_alternation_mark:":{unicode:["303d-fe0f","303d"],fname:"303d",uc:"303d",isCanonical:!0},":congratulations:":{unicode:["3297-fe0f","3297"],fname:"3297",uc:"3297",isCanonical:!0},":secret:":{unicode:["3299-fe0f","3299"],fname:"3299",uc:"3299",isCanonical:!0},":cross:":{unicode:["271d-fe0f","271d"],fname:"271d",uc:"271d",isCanonical:!0},":latin_cross:":{unicode:["271d-fe0f","271d"],fname:"271d",uc:"271d",isCanonical:!1},":keyboard:":{unicode:["2328-fe0f","2328"],fname:"2328",uc:"2328",isCanonical:!0},":writing_hand:":{unicode:["270d-fe0f","270d"],fname:"270d",uc:"270d",isCanonical:!0},":eject:":{unicode:["23cf-fe0f","23cf"],fname:"23cf",uc:"23cf",isCanonical:!0},":eject_symbol:":{unicode:["23cf-fe0f","23cf"],fname:"23cf",uc:"23cf",isCanonical:!1},":track_next:":{unicode:["23ed-fe0f","23ed"],fname:"23ed",uc:"23ed",isCanonical:!0},":next_track:":{unicode:["23ed-fe0f","23ed"],fname:"23ed",uc:"23ed",isCanonical:!1},":track_previous:":{unicode:["23ee-fe0f","23ee"],fname:"23ee",uc:"23ee",isCanonical:!0},":previous_track:":{unicode:["23ee-fe0f","23ee"],fname:"23ee",uc:"23ee",isCanonical:!1},":play_pause:":{unicode:["23ef-fe0f","23ef"],fname:"23ef",uc:"23ef",isCanonical:!0},":stopwatch:":{unicode:["23f1-fe0f","23f1"],fname:"23f1",uc:"23f1",isCanonical:!0},":timer:":{unicode:["23f2-fe0f","23f2"],fname:"23f2",uc:"23f2",isCanonical:!0},":timer_clock:":{unicode:["23f2-fe0f","23f2"],fname:"23f2",uc:"23f2",isCanonical:!1},":pause_button:":{unicode:["23f8-fe0f","23f8"],fname:"23f8",uc:"23f8",isCanonical:!0},":double_vertical_bar:":{unicode:["23f8-fe0f","23f8"],fname:"23f8",uc:"23f8",isCanonical:!1},":stop_button:":{unicode:["23f9-fe0f","23f9"],fname:"23f9",uc:"23f9",isCanonical:!0},":record_button:":{unicode:["23fa-fe0f","23fa"],fname:"23fa",uc:"23fa",isCanonical:!0},":umbrella2:":{unicode:["2602-fe0f","2602"],fname:"2602",uc:"2602",isCanonical:!0},":snowman2:":{unicode:["2603-fe0f","2603"],fname:"2603",uc:"2603",isCanonical:!0},":comet:":{unicode:["2604-fe0f","2604"],fname:"2604",uc:"2604",isCanonical:!0},":shamrock:":{unicode:["2618-fe0f","2618"],fname:"2618",uc:"2618",isCanonical:!0},":skull_crossbones:":{unicode:["2620-fe0f","2620"],fname:"2620",uc:"2620",isCanonical:!0},":skull_and_crossbones:":{unicode:["2620-fe0f","2620"],fname:"2620",uc:"2620",isCanonical:!1},":radioactive:":{unicode:["2622-fe0f","2622"],fname:"2622",uc:"2622",isCanonical:!0},":radioactive_sign:":{unicode:["2622-fe0f","2622"],fname:"2622",uc:"2622",isCanonical:!1},":biohazard:":{unicode:["2623-fe0f","2623"],fname:"2623",uc:"2623",isCanonical:!0},":biohazard_sign:":{unicode:["2623-fe0f","2623"],fname:"2623",uc:"2623",isCanonical:!1},":orthodox_cross:":{unicode:["2626-fe0f","2626"],fname:"2626",uc:"2626",isCanonical:!0},":star_and_crescent:":{unicode:["262a-fe0f","262a"],fname:"262a",uc:"262a",isCanonical:!0},":peace:":{unicode:["262e-fe0f","262e"],fname:"262e",uc:"262e",isCanonical:!0},":peace_symbol:":{unicode:["262e-fe0f","262e"],fname:"262e",uc:"262e",isCanonical:!1},":yin_yang:":{unicode:["262f-fe0f","262f"],fname:"262f",uc:"262f",isCanonical:!0},":wheel_of_dharma:":{unicode:["2638-fe0f","2638"],fname:"2638",uc:"2638",isCanonical:!0},":frowning2:":{unicode:["2639-fe0f","2639"],fname:"2639",uc:"2639",isCanonical:!0},":white_frowning_face:":{unicode:["2639-fe0f","2639"],fname:"2639",uc:"2639",isCanonical:!1},":hammer_pick:":{unicode:["2692-fe0f","2692"],fname:"2692",uc:"2692",isCanonical:!0},":hammer_and_pick:":{unicode:["2692-fe0f","2692"],fname:"2692",uc:"2692",isCanonical:!1},":crossed_swords:":{unicode:["2694-fe0f","2694"],fname:"2694",uc:"2694",isCanonical:!0},":scales:":{unicode:["2696-fe0f","2696"],fname:"2696",uc:"2696",isCanonical:!0},":alembic:":{unicode:["2697-fe0f","2697"],fname:"2697",uc:"2697",isCanonical:!0},":gear:":{unicode:["2699-fe0f","2699"],fname:"2699",uc:"2699",isCanonical:!0},":atom:":{unicode:["269b-fe0f","269b"],fname:"269b",uc:"269b",isCanonical:!0},":atom_symbol:":{unicode:["269b-fe0f","269b"],fname:"269b",uc:"269b",isCanonical:!1},":fleur-de-lis:":{unicode:["269c-fe0f","269c"],fname:"269c",uc:"269c",isCanonical:!0},":coffin:":{unicode:["26b0-fe0f","26b0"],fname:"26b0",uc:"26b0",isCanonical:!0},":urn:":{unicode:["26b1-fe0f","26b1"],fname:"26b1",uc:"26b1",isCanonical:!0},":funeral_urn:":{unicode:["26b1-fe0f","26b1"],fname:"26b1",uc:"26b1",isCanonical:!1},":thunder_cloud_rain:":{unicode:["26c8-fe0f","26c8"],fname:"26c8",uc:"26c8",isCanonical:!0},":thunder_cloud_and_rain:":{unicode:["26c8-fe0f","26c8"],fname:"26c8",uc:"26c8",isCanonical:!1},":pick:":{unicode:["26cf-fe0f","26cf"],fname:"26cf",uc:"26cf",isCanonical:!0},":helmet_with_cross:":{unicode:["26d1-fe0f","26d1"],fname:"26d1",uc:"26d1",isCanonical:!0},":helmet_with_white_cross:":{unicode:["26d1-fe0f","26d1"],fname:"26d1",uc:"26d1",isCanonical:!1},":chains:":{unicode:["26d3-fe0f","26d3"],fname:"26d3",uc:"26d3",isCanonical:!0},":shinto_shrine:":{unicode:["26e9-fe0f","26e9"],fname:"26e9",uc:"26e9",isCanonical:!0},":mountain:":{unicode:["26f0-fe0f","26f0"],fname:"26f0",uc:"26f0",isCanonical:!0},":beach_umbrella:":{unicode:["26f1-fe0f","26f1"],fname:"26f1",uc:"26f1",isCanonical:!0},":umbrella_on_ground:":{unicode:["26f1-fe0f","26f1"],fname:"26f1",uc:"26f1",isCanonical:!1},":ferry:":{unicode:["26f4-fe0f","26f4"],fname:"26f4",uc:"26f4",isCanonical:!0},":skier:":{unicode:["26f7-fe0f","26f7"],fname:"26f7",uc:"26f7",isCanonical:!0},":ice_skate:":{unicode:["26f8-fe0f","26f8"],fname:"26f8",uc:"26f8",isCanonical:!0},":basketball_player:":{unicode:["26f9-fe0f","26f9"],fname:"26f9",uc:"26f9",isCanonical:!0},":person_with_ball:":{unicode:["26f9-fe0f","26f9"],fname:"26f9",uc:"26f9",isCanonical:!1},":star_of_david:":{unicode:["2721-fe0f","2721"],fname:"2721",uc:"2721",isCanonical:!0},":heart_exclamation:":{unicode:["2763-fe0f","2763"],fname:"2763",uc:"2763",isCanonical:!0},":heavy_heart_exclamation_mark_ornament:":{unicode:["2763-fe0f","2763"],fname:"2763",uc:"2763",isCanonical:!1},":third_place:":{unicode:["1f949"],fname:"1f949",uc:"1f949",isCanonical:!0},":third_place_medal:":{unicode:["1f949"],fname:"1f949",uc:"1f949",isCanonical:!1},":second_place:":{unicode:["1f948"],fname:"1f948",uc:"1f948",isCanonical:!0},":second_place_medal:":{unicode:["1f948"],fname:"1f948",uc:"1f948",isCanonical:!1},":first_place:":{unicode:["1f947"],fname:"1f947",uc:"1f947",isCanonical:!0},":first_place_medal:":{unicode:["1f947"],fname:"1f947",uc:"1f947",isCanonical:!1},":fencer:":{unicode:["1f93a"],fname:"1f93a",uc:"1f93a",isCanonical:!0},":fencing:":{unicode:["1f93a"],fname:"1f93a",uc:"1f93a",isCanonical:!1},":goal:":{unicode:["1f945"],fname:"1f945",uc:"1f945",isCanonical:!0},":goal_net:":{unicode:["1f945"],fname:"1f945",uc:"1f945",isCanonical:!1},":handball:":{unicode:["1f93e"],fname:"1f93e",uc:"1f93e",isCanonical:!0},":regional_indicator_z:":{unicode:["1f1ff"],fname:"1f1ff",uc:"1f1ff",isCanonical:!0},":water_polo:":{unicode:["1f93d"],fname:"1f93d",uc:"1f93d",isCanonical:!0},":martial_arts_uniform:":{unicode:["1f94b"],fname:"1f94b",uc:"1f94b",isCanonical:!0},":karate_uniform:":{unicode:["1f94b"],fname:"1f94b",uc:"1f94b",isCanonical:!1},":boxing_glove:":{unicode:["1f94a"],fname:"1f94a",uc:"1f94a",isCanonical:!0},":boxing_gloves:":{unicode:["1f94a"],fname:"1f94a",uc:"1f94a",isCanonical:!1},":wrestlers:":{unicode:["1f93c"],fname:"1f93c",uc:"1f93c",isCanonical:!0},":wrestling:":{unicode:["1f93c"],fname:"1f93c",uc:"1f93c",isCanonical:!1},":juggling:":{unicode:["1f939"],fname:"1f939",uc:"1f939",isCanonical:!0},":juggler:":{unicode:["1f939"],fname:"1f939",uc:"1f939",isCanonical:!1},":cartwheel:":{unicode:["1f938"],fname:"1f938",uc:"1f938",isCanonical:!0},":person_doing_cartwheel:":{unicode:["1f938"],fname:"1f938",uc:"1f938",isCanonical:!1},":canoe:":{unicode:["1f6f6"],fname:"1f6f6",uc:"1f6f6",isCanonical:!0},":kayak:":{unicode:["1f6f6"],fname:"1f6f6",uc:"1f6f6",isCanonical:!1},":motor_scooter:":{unicode:["1f6f5"],fname:"1f6f5",uc:"1f6f5",isCanonical:!0},":motorbike:":{unicode:["1f6f5"],fname:"1f6f5",uc:"1f6f5",isCanonical:!1},":scooter:":{unicode:["1f6f4"],fname:"1f6f4",uc:"1f6f4",isCanonical:!0},":shopping_cart:":{unicode:["1f6d2"],fname:"1f6d2",uc:"1f6d2",isCanonical:!0},":shopping_trolley:":{unicode:["1f6d2"],fname:"1f6d2",uc:"1f6d2",isCanonical:!1},":black_joker:":{unicode:["1f0cf"],fname:"1f0cf",uc:"1f0cf",isCanonical:!0},":a:":{unicode:["1f170"],fname:"1f170",uc:"1f170",isCanonical:!0},":b:":{unicode:["1f171"],fname:"1f171",uc:"1f171",isCanonical:!0},":o2:":{unicode:["1f17e"],fname:"1f17e",uc:"1f17e",isCanonical:!0},":octagonal_sign:":{unicode:["1f6d1"],fname:"1f6d1",uc:"1f6d1",isCanonical:!0},":stop_sign:":{unicode:["1f6d1"],fname:"1f6d1",uc:"1f6d1",isCanonical:!1},":ab:":{unicode:["1f18e"],fname:"1f18e",uc:"1f18e",isCanonical:!0},":cl:":{unicode:["1f191"],fname:"1f191",uc:"1f191",isCanonical:!0},":regional_indicator_y:":{unicode:["1f1fe"],fname:"1f1fe",uc:"1f1fe",isCanonical:!0},":cool:":{unicode:["1f192"],fname:"1f192",uc:"1f192",isCanonical:!0},":free:":{unicode:["1f193"],fname:"1f193",uc:"1f193",isCanonical:!0},":id:":{unicode:["1f194"],fname:"1f194",uc:"1f194",isCanonical:!0},":new:":{unicode:["1f195"],fname:"1f195",uc:"1f195",isCanonical:!0},":ng:":{unicode:["1f196"],fname:"1f196",uc:"1f196",isCanonical:!0},":ok:":{unicode:["1f197"],fname:"1f197",uc:"1f197",isCanonical:!0},":sos:":{unicode:["1f198"],fname:"1f198",uc:"1f198",isCanonical:!0},":spoon:":{unicode:["1f944"],fname:"1f944",uc:"1f944",isCanonical:!0},":up:":{unicode:["1f199"],fname:"1f199",uc:"1f199",isCanonical:!0},":vs:":{unicode:["1f19a"],fname:"1f19a",uc:"1f19a",isCanonical:!0},":champagne_glass:":{unicode:["1f942"],fname:"1f942",uc:"1f942",isCanonical:!0},":clinking_glass:":{unicode:["1f942"],fname:"1f942",uc:"1f942",isCanonical:!1},":tumbler_glass:":{unicode:["1f943"],fname:"1f943",uc:"1f943",isCanonical:!0},":whisky:":{unicode:["1f943"],fname:"1f943",uc:"1f943",isCanonical:!1},":koko:":{unicode:["1f201"],fname:"1f201",uc:"1f201",isCanonical:!0},":stuffed_flatbread:":{unicode:["1f959"],fname:"1f959",uc:"1f959",isCanonical:!0},":stuffed_pita:":{unicode:["1f959"],fname:"1f959",uc:"1f959",isCanonical:!1},":u7981:":{unicode:["1f232"],fname:"1f232",uc:"1f232",isCanonical:!0},":u7a7a:":{unicode:["1f233"],fname:"1f233",uc:"1f233",isCanonical:!0},":u5408:":{unicode:["1f234"],fname:"1f234",uc:"1f234",isCanonical:!0},":u6e80:":{unicode:["1f235"],fname:"1f235",uc:"1f235",isCanonical:!0},":u6709:":{unicode:["1f236"],fname:"1f236",uc:"1f236",isCanonical:!0},":shallow_pan_of_food:":{unicode:["1f958"],fname:"1f958",uc:"1f958",isCanonical:!0},":paella:":{unicode:["1f958"],fname:"1f958",uc:"1f958",isCanonical:!1},":u7533:":{unicode:["1f238"],fname:"1f238",uc:"1f238",isCanonical:!0},":u5272:":{unicode:["1f239"],fname:"1f239",uc:"1f239",isCanonical:!0},":salad:":{unicode:["1f957"],fname:"1f957",uc:"1f957",isCanonical:!0},":green_salad:":{unicode:["1f957"],fname:"1f957",uc:"1f957",isCanonical:!1},":u55b6:":{unicode:["1f23a"],fname:"1f23a",uc:"1f23a",isCanonical:!0},":ideograph_advantage:":{unicode:["1f250"],fname:"1f250",uc:"1f250",isCanonical:!0},":accept:":{unicode:["1f251"],fname:"1f251",uc:"1f251",isCanonical:!0},":cyclone:":{unicode:["1f300"],fname:"1f300",uc:"1f300",isCanonical:!0},":french_bread:":{unicode:["1f956"],fname:"1f956",uc:"1f956",isCanonical:!0},":baguette_bread:":{unicode:["1f956"],fname:"1f956",uc:"1f956",isCanonical:!1},":foggy:":{unicode:["1f301"],fname:"1f301",uc:"1f301",isCanonical:!0},":closed_umbrella:":{unicode:["1f302"],fname:"1f302",uc:"1f302",isCanonical:!0},":night_with_stars:":{unicode:["1f303"],fname:"1f303",uc:"1f303",isCanonical:!0},":sunrise_over_mountains:":{unicode:["1f304"],fname:"1f304",uc:"1f304",isCanonical:!0},":sunrise:":{unicode:["1f305"],fname:"1f305",uc:"1f305",isCanonical:!0},":city_dusk:":{unicode:["1f306"],fname:"1f306",uc:"1f306",isCanonical:!0},":carrot:":{unicode:["1f955"],fname:"1f955",uc:"1f955",isCanonical:!0},":city_sunset:":{unicode:["1f307"],fname:"1f307",uc:"1f307",isCanonical:!0},":city_sunrise:":{unicode:["1f307"],fname:"1f307",uc:"1f307",isCanonical:!1},":rainbow:":{unicode:["1f308"],fname:"1f308",uc:"1f308",isCanonical:!0},":potato:":{unicode:["1f954"],fname:"1f954",uc:"1f954",isCanonical:!0},":bridge_at_night:":{unicode:["1f309"],fname:"1f309",uc:"1f309",isCanonical:!0},":ocean:":{unicode:["1f30a"],fname:"1f30a",uc:"1f30a",isCanonical:!0},":volcano:":{unicode:["1f30b"],fname:"1f30b",uc:"1f30b",isCanonical:!0},":milky_way:":{unicode:["1f30c"],fname:"1f30c",uc:"1f30c",isCanonical:!0},":earth_asia:":{unicode:["1f30f"],fname:"1f30f",uc:"1f30f",isCanonical:!0},":new_moon:":{unicode:["1f311"],fname:"1f311",uc:"1f311",isCanonical:!0},":bacon:":{unicode:["1f953"],fname:"1f953",uc:"1f953",isCanonical:!0},":first_quarter_moon:":{unicode:["1f313"],fname:"1f313",uc:"1f313",isCanonical:!0},":waxing_gibbous_moon:":{unicode:["1f314"],fname:"1f314",uc:"1f314",isCanonical:!0},":full_moon:":{unicode:["1f315"],fname:"1f315",uc:"1f315",isCanonical:!0},":crescent_moon:":{unicode:["1f319"],fname:"1f319",uc:"1f319",isCanonical:!0},":first_quarter_moon_with_face:":{unicode:["1f31b"],fname:"1f31b",uc:"1f31b",isCanonical:!0},":star2:":{unicode:["1f31f"],fname:"1f31f",uc:"1f31f",isCanonical:!0},":cucumber:":{unicode:["1f952"],fname:"1f952",uc:"1f952",isCanonical:!0},":stars:":{unicode:["1f320"],fname:"1f320",uc:"1f320",isCanonical:!0},":chestnut:":{unicode:["1f330"],fname:"1f330",uc:"1f330",isCanonical:!0},":avocado:":{unicode:["1f951"],fname:"1f951",uc:"1f951",isCanonical:!0},":seedling:":{unicode:["1f331"],fname:"1f331",uc:"1f331",isCanonical:!0},":palm_tree:":{unicode:["1f334"],fname:"1f334",uc:"1f334",isCanonical:!0},":cactus:":{unicode:["1f335"],fname:"1f335",uc:"1f335",isCanonical:!0},":tulip:":{unicode:["1f337"],fname:"1f337",uc:"1f337",isCanonical:!0},":cherry_blossom:":{unicode:["1f338"],fname:"1f338",uc:"1f338",isCanonical:!0},":rose:":{unicode:["1f339"],fname:"1f339",uc:"1f339",isCanonical:!0},":hibiscus:":{unicode:["1f33a"],fname:"1f33a",uc:"1f33a",isCanonical:!0},":sunflower:":{unicode:["1f33b"],fname:"1f33b",uc:"1f33b",isCanonical:!0},":blossom:":{unicode:["1f33c"],fname:"1f33c",uc:"1f33c",isCanonical:!0},":corn:":{unicode:["1f33d"],fname:"1f33d",uc:"1f33d",isCanonical:!0},":croissant:":{unicode:["1f950"],fname:"1f950",uc:"1f950",isCanonical:!0},":ear_of_rice:":{unicode:["1f33e"],fname:"1f33e",uc:"1f33e",isCanonical:!0},":herb:":{unicode:["1f33f"],fname:"1f33f",uc:"1f33f",isCanonical:!0},":four_leaf_clover:":{unicode:["1f340"],fname:"1f340",uc:"1f340",isCanonical:!0},":maple_leaf:":{unicode:["1f341"],fname:"1f341",uc:"1f341",isCanonical:!0},":fallen_leaf:":{unicode:["1f342"],fname:"1f342",uc:"1f342",isCanonical:!0},":leaves:":{unicode:["1f343"],fname:"1f343",uc:"1f343",isCanonical:!0},":mushroom:":{unicode:["1f344"],fname:"1f344",uc:"1f344",isCanonical:!0},":tomato:":{unicode:["1f345"],fname:"1f345",uc:"1f345",isCanonical:!0},":eggplant:":{unicode:["1f346"],fname:"1f346",uc:"1f346",isCanonical:!0},":grapes:":{unicode:["1f347"],fname:"1f347",uc:"1f347",isCanonical:!0},":melon:":{unicode:["1f348"],fname:"1f348",uc:"1f348",isCanonical:!0},":watermelon:":{unicode:["1f349"],fname:"1f349",uc:"1f349",isCanonical:!0},":tangerine:":{unicode:["1f34a"],fname:"1f34a",uc:"1f34a",isCanonical:!0},":wilted_rose:":{unicode:["1f940"],fname:"1f940",uc:"1f940",isCanonical:!0},":wilted_flower:":{unicode:["1f940"],fname:"1f940",uc:"1f940",isCanonical:!1},":banana:":{unicode:["1f34c"],fname:"1f34c",uc:"1f34c",isCanonical:!0},":pineapple:":{unicode:["1f34d"],fname:"1f34d",uc:"1f34d",isCanonical:!0},":apple:":{unicode:["1f34e"],fname:"1f34e",uc:"1f34e",isCanonical:!0},":green_apple:":{unicode:["1f34f"],fname:"1f34f",uc:"1f34f",isCanonical:!0},":peach:":{unicode:["1f351"],fname:"1f351",uc:"1f351",isCanonical:!0},":cherries:":{unicode:["1f352"],fname:"1f352",uc:"1f352",isCanonical:!0},":strawberry:":{unicode:["1f353"],fname:"1f353",uc:"1f353",isCanonical:!0},":rhino:":{unicode:["1f98f"],fname:"1f98f",uc:"1f98f",isCanonical:!0},":rhinoceros:":{unicode:["1f98f"],fname:"1f98f",uc:"1f98f",isCanonical:!1},":hamburger:":{unicode:["1f354"],fname:"1f354",uc:"1f354",isCanonical:!0},":pizza:":{unicode:["1f355"],fname:"1f355",uc:"1f355",isCanonical:!0},":meat_on_bone:":{unicode:["1f356"],fname:"1f356",uc:"1f356",isCanonical:!0},":lizard:":{unicode:["1f98e"],fname:"1f98e",uc:"1f98e",isCanonical:!0},":poultry_leg:":{unicode:["1f357"],fname:"1f357",uc:"1f357",isCanonical:!0},":rice_cracker:":{unicode:["1f358"],fname:"1f358",uc:"1f358",isCanonical:!0},":rice_ball:":{unicode:["1f359"],fname:"1f359",uc:"1f359",isCanonical:!0},":gorilla:":{unicode:["1f98d"],fname:"1f98d",uc:"1f98d",isCanonical:!0},":rice:":{unicode:["1f35a"],fname:"1f35a",uc:"1f35a",isCanonical:!0},":curry:":{unicode:["1f35b"],fname:"1f35b",uc:"1f35b",isCanonical:!0},":deer:":{unicode:["1f98c"],fname:"1f98c",uc:"1f98c",isCanonical:!0},":ramen:":{unicode:["1f35c"],fname:"1f35c",uc:"1f35c",isCanonical:!0},":spaghetti:":{unicode:["1f35d"],fname:"1f35d",uc:"1f35d",isCanonical:!0},":bread:":{unicode:["1f35e"],fname:"1f35e",uc:"1f35e",isCanonical:!0},":fries:":{unicode:["1f35f"],fname:"1f35f",uc:"1f35f",isCanonical:!0},":butterfly:":{unicode:["1f98b"],fname:"1f98b",uc:"1f98b",isCanonical:!0},":sweet_potato:":{unicode:["1f360"],fname:"1f360",uc:"1f360",isCanonical:!0},":dango:":{unicode:["1f361"],fname:"1f361",uc:"1f361",isCanonical:!0},":fox:":{unicode:["1f98a"],fname:"1f98a",uc:"1f98a",isCanonical:!0},":fox_face:":{unicode:["1f98a"],fname:"1f98a",uc:"1f98a",isCanonical:!1},":oden:":{unicode:["1f362"],fname:"1f362",uc:"1f362",isCanonical:!0},":sushi:":{unicode:["1f363"],fname:"1f363",uc:"1f363",isCanonical:!0},":owl:":{unicode:["1f989"],fname:"1f989",uc:"1f989",isCanonical:!0},":fried_shrimp:":{unicode:["1f364"],fname:"1f364",uc:"1f364",isCanonical:!0},":fish_cake:":{unicode:["1f365"],fname:"1f365",uc:"1f365",isCanonical:!0},":shark:":{unicode:["1f988"],fname:"1f988",uc:"1f988",isCanonical:!0},":icecream:":{unicode:["1f366"],fname:"1f366",uc:"1f366",isCanonical:!0},":bat:":{unicode:["1f987"],fname:"1f987",uc:"1f987",isCanonical:!0},":shaved_ice:":{unicode:["1f367"],fname:"1f367",uc:"1f367",isCanonical:!0},":regional_indicator_x:":{unicode:["1f1fd"],fname:"1f1fd",uc:"1f1fd",isCanonical:!0},":ice_cream:":{unicode:["1f368"],fname:"1f368",uc:"1f368",isCanonical:!0},":duck:":{unicode:["1f986"],fname:"1f986",uc:"1f986",isCanonical:!0},":doughnut:":{unicode:["1f369"],fname:"1f369",uc:"1f369",isCanonical:!0},":eagle:":{unicode:["1f985"],fname:"1f985",uc:"1f985",isCanonical:!0},":cookie:":{unicode:["1f36a"],fname:"1f36a",uc:"1f36a",isCanonical:!0},":black_heart:":{unicode:["1f5a4"],fname:"1f5a4",uc:"1f5a4",isCanonical:!0},":chocolate_bar:":{unicode:["1f36b"],fname:"1f36b",uc:"1f36b",isCanonical:!0},":candy:":{unicode:["1f36c"],fname:"1f36c",uc:"1f36c",isCanonical:!0},":lollipop:":{unicode:["1f36d"],fname:"1f36d",uc:"1f36d",isCanonical:!0},":custard:":{unicode:["1f36e"],fname:"1f36e",uc:"1f36e",isCanonical:!0},":pudding:":{unicode:["1f36e"],fname:"1f36e",uc:"1f36e",isCanonical:!1},":flan:":{unicode:["1f36e"],fname:"1f36e",uc:"1f36e",isCanonical:!1},":honey_pot:":{unicode:["1f36f"],fname:"1f36f",uc:"1f36f",isCanonical:!0},":fingers_crossed:":{unicode:["1f91e"],fname:"1f91e",uc:"1f91e",isCanonical:!0},":hand_with_index_and_middle_finger_crossed:":{unicode:["1f91e"],fname:"1f91e",uc:"1f91e",isCanonical:!1},":cake:":{unicode:["1f370"],fname:"1f370",uc:"1f370",isCanonical:!0},":bento:":{unicode:["1f371"],fname:"1f371",uc:"1f371",isCanonical:!0},":stew:":{unicode:["1f372"],fname:"1f372",uc:"1f372",isCanonical:!0},":handshake:":{unicode:["1f91d"],fname:"1f91d",uc:"1f91d",isCanonical:!0},":shaking_hands:":{unicode:["1f91d"],fname:"1f91d",uc:"1f91d",isCanonical:!1},":cooking:":{unicode:["1f373"],fname:"1f373",uc:"1f373",isCanonical:!0},":fork_and_knife:":{unicode:["1f374"],fname:"1f374",uc:"1f374",isCanonical:!0},":tea:":{unicode:["1f375"],fname:"1f375",uc:"1f375",isCanonical:!0},":sake:":{unicode:["1f376"],fname:"1f376",uc:"1f376",isCanonical:!0},":wine_glass:":{unicode:["1f377"],fname:"1f377",uc:"1f377",isCanonical:!0},":cocktail:":{unicode:["1f378"],fname:"1f378",uc:"1f378",isCanonical:!0},":tropical_drink:":{unicode:["1f379"],fname:"1f379",uc:"1f379",isCanonical:!0},":beer:":{unicode:["1f37a"],fname:"1f37a",uc:"1f37a",isCanonical:!0},":beers:":{unicode:["1f37b"],fname:"1f37b",uc:"1f37b",isCanonical:!0},":ribbon:":{unicode:["1f380"],fname:"1f380",uc:"1f380",isCanonical:!0},":gift:":{unicode:["1f381"],fname:"1f381",uc:"1f381",isCanonical:!0},":birthday:":{unicode:["1f382"],fname:"1f382",uc:"1f382",isCanonical:!0},":jack_o_lantern:":{unicode:["1f383"],fname:"1f383",uc:"1f383",isCanonical:!0},":left_facing_fist:":{unicode:["1f91b"],fname:"1f91b",uc:"1f91b",isCanonical:!0},":left_fist:":{unicode:["1f91b"],fname:"1f91b",uc:"1f91b",isCanonical:!1},":right_facing_fist:":{unicode:["1f91c"],fname:"1f91c",uc:"1f91c",isCanonical:!0},":right_fist:":{unicode:["1f91c"],fname:"1f91c",uc:"1f91c",isCanonical:!1},":christmas_tree:":{unicode:["1f384"],fname:"1f384",uc:"1f384",isCanonical:!0},":santa:":{unicode:["1f385"],fname:"1f385",uc:"1f385",isCanonical:!0},":fireworks:":{unicode:["1f386"],fname:"1f386",uc:"1f386",isCanonical:!0},":raised_back_of_hand:":{unicode:["1f91a"],fname:"1f91a",uc:"1f91a",isCanonical:!0},":back_of_hand:":{unicode:["1f91a"],fname:"1f91a",uc:"1f91a",isCanonical:!1},":sparkler:":{unicode:["1f387"],fname:"1f387",uc:"1f387",isCanonical:!0},":balloon:":{unicode:["1f388"],fname:"1f388",uc:"1f388",isCanonical:!0},":tada:":{unicode:["1f389"],fname:"1f389",uc:"1f389",isCanonical:!0},":confetti_ball:":{unicode:["1f38a"],fname:"1f38a",uc:"1f38a",isCanonical:!0},":tanabata_tree:":{unicode:["1f38b"],fname:"1f38b",uc:"1f38b",isCanonical:!0},":crossed_flags:":{unicode:["1f38c"],fname:"1f38c",uc:"1f38c",isCanonical:!0},":call_me:":{unicode:["1f919"],fname:"1f919",uc:"1f919",isCanonical:!0},":call_me_hand:":{unicode:["1f919"],fname:"1f919",uc:"1f919",isCanonical:!1},":bamboo:":{unicode:["1f38d"],fname:"1f38d",uc:"1f38d",isCanonical:!0},":man_dancing:":{unicode:["1f57a"],fname:"1f57a",uc:"1f57a",isCanonical:!0},":male_dancer:":{unicode:["1f57a"],fname:"1f57a",uc:"1f57a",isCanonical:!1},":dolls:":{unicode:["1f38e"],fname:"1f38e",uc:"1f38e",isCanonical:!0},":selfie:":{unicode:["1f933"],fname:"1f933",uc:"1f933",isCanonical:!0},":flags:":{unicode:["1f38f"],fname:"1f38f",uc:"1f38f",isCanonical:!0},":pregnant_woman:":{unicode:["1f930"],fname:"1f930",uc:"1f930",isCanonical:!0},":expecting_woman:":{unicode:["1f930"],fname:"1f930",uc:"1f930",isCanonical:!1},":wind_chime:":{unicode:["1f390"],fname:"1f390",uc:"1f390",isCanonical:!0},":face_palm:":{unicode:["1f926"],fname:"1f926",uc:"1f926",isCanonical:!0},":facepalm:":{unicode:["1f926"],fname:"1f926",uc:"1f926",isCanonical:!1},":shrug:":{unicode:["1f937"],fname:"1f937",uc:"1f937",isCanonical:!0},":rice_scene:":{unicode:["1f391"],fname:"1f391",uc:"1f391",isCanonical:!0},":school_satchel:":{unicode:["1f392"],fname:"1f392",uc:"1f392",isCanonical:!0},":mortar_board:":{unicode:["1f393"],fname:"1f393",uc:"1f393",isCanonical:!0},":carousel_horse:":{unicode:["1f3a0"],fname:"1f3a0",uc:"1f3a0",isCanonical:!0},":ferris_wheel:":{unicode:["1f3a1"],fname:"1f3a1",uc:"1f3a1",isCanonical:!0},":roller_coaster:":{unicode:["1f3a2"],fname:"1f3a2",uc:"1f3a2",isCanonical:!0},":fishing_pole_and_fish:":{unicode:["1f3a3"],fname:"1f3a3",uc:"1f3a3",isCanonical:!0},":microphone:":{unicode:["1f3a4"],fname:"1f3a4",uc:"1f3a4",isCanonical:!0},":movie_camera:":{unicode:["1f3a5"],fname:"1f3a5",uc:"1f3a5",isCanonical:!0},":cinema:":{unicode:["1f3a6"],fname:"1f3a6",uc:"1f3a6",isCanonical:!0},":headphones:":{unicode:["1f3a7"],fname:"1f3a7",uc:"1f3a7",isCanonical:!0},":mrs_claus:":{unicode:["1f936"],fname:"1f936",uc:"1f936",isCanonical:!0},":mother_christmas:":{unicode:["1f936"],fname:"1f936",uc:"1f936",isCanonical:!1},":art:":{unicode:["1f3a8"],fname:"1f3a8",uc:"1f3a8",isCanonical:!0},":man_in_tuxedo:":{unicode:["1f935"],fname:"1f935",uc:"1f935",isCanonical:!0},":tophat:":{unicode:["1f3a9"],fname:"1f3a9",uc:"1f3a9",isCanonical:!0},":circus_tent:":{unicode:["1f3aa"],fname:"1f3aa",uc:"1f3aa",isCanonical:!0},":prince:":{unicode:["1f934"],fname:"1f934",uc:"1f934",isCanonical:!0},":ticket:":{unicode:["1f3ab"],fname:"1f3ab",uc:"1f3ab",isCanonical:!0},":clapper:":{unicode:["1f3ac"],fname:"1f3ac",uc:"1f3ac",isCanonical:!0},":performing_arts:":{unicode:["1f3ad"],fname:"1f3ad",uc:"1f3ad",isCanonical:!0},":sneezing_face:":{unicode:["1f927"],fname:"1f927",uc:"1f927",isCanonical:!0},":sneeze:":{unicode:["1f927"],fname:"1f927",uc:"1f927",isCanonical:!1},":video_game:":{unicode:["1f3ae"],fname:"1f3ae",uc:"1f3ae",isCanonical:!0},":dart:":{unicode:["1f3af"],fname:"1f3af",uc:"1f3af",isCanonical:!0},":slot_machine:":{unicode:["1f3b0"],fname:"1f3b0",uc:"1f3b0",isCanonical:!0},":8ball:":{unicode:["1f3b1"],fname:"1f3b1",uc:"1f3b1",isCanonical:!0},":game_die:":{unicode:["1f3b2"],fname:"1f3b2",uc:"1f3b2",isCanonical:!0},":bowling:":{unicode:["1f3b3"],fname:"1f3b3",uc:"1f3b3",isCanonical:!0},":flower_playing_cards:":{unicode:["1f3b4"],fname:"1f3b4",uc:"1f3b4",isCanonical:!0},":lying_face:":{unicode:["1f925"],fname:"1f925",uc:"1f925",isCanonical:!0},":liar:":{unicode:["1f925"],fname:"1f925",uc:"1f925",isCanonical:!1},":musical_note:":{unicode:["1f3b5"],fname:"1f3b5",uc:"1f3b5",isCanonical:!0},":notes:":{unicode:["1f3b6"],fname:"1f3b6",uc:"1f3b6",isCanonical:!0},":saxophone:":{unicode:["1f3b7"],fname:"1f3b7",uc:"1f3b7",isCanonical:!0},":drooling_face:":{unicode:["1f924"],fname:"1f924",uc:"1f924",isCanonical:!0},":drool:":{unicode:["1f924"],fname:"1f924",uc:"1f924",isCanonical:!1},":guitar:":{unicode:["1f3b8"],fname:"1f3b8",uc:"1f3b8",isCanonical:!0},":musical_keyboard:":{unicode:["1f3b9"],fname:"1f3b9",uc:"1f3b9",isCanonical:!0},":trumpet:":{unicode:["1f3ba"],fname:"1f3ba",uc:"1f3ba",isCanonical:!0},":rofl:":{unicode:["1f923"],fname:"1f923",uc:"1f923",isCanonical:!0},":rolling_on_the_floor_laughing:":{unicode:["1f923"],fname:"1f923",uc:"1f923",isCanonical:!1},":violin:":{unicode:["1f3bb"],fname:"1f3bb",uc:"1f3bb",isCanonical:!0},":musical_score:":{unicode:["1f3bc"],fname:"1f3bc",uc:"1f3bc",isCanonical:!0},":running_shirt_with_sash:":{unicode:["1f3bd"],fname:"1f3bd",uc:"1f3bd",isCanonical:!0},":nauseated_face:":{unicode:["1f922"],fname:"1f922",uc:"1f922",isCanonical:!0},":sick:":{unicode:["1f922"],fname:"1f922",uc:"1f922",isCanonical:!1},":tennis:":{unicode:["1f3be"],fname:"1f3be",uc:"1f3be",isCanonical:!0},":ski:":{unicode:["1f3bf"],fname:"1f3bf",uc:"1f3bf",isCanonical:!0},":basketball:":{unicode:["1f3c0"],fname:"1f3c0",uc:"1f3c0",isCanonical:!0},":checkered_flag:":{unicode:["1f3c1"],fname:"1f3c1",uc:"1f3c1",isCanonical:!0},":clown:":{unicode:["1f921"],fname:"1f921",uc:"1f921",isCanonical:!0},":clown_face:":{unicode:["1f921"],fname:"1f921",uc:"1f921",isCanonical:!1},":snowboarder:":{unicode:["1f3c2"],fname:"1f3c2",uc:"1f3c2",isCanonical:!0},":runner:":{unicode:["1f3c3"],fname:"1f3c3",uc:"1f3c3",isCanonical:!0},":surfer:":{unicode:["1f3c4"],fname:"1f3c4",uc:"1f3c4",isCanonical:!0},":trophy:":{unicode:["1f3c6"],fname:"1f3c6",uc:"1f3c6",isCanonical:!0},":football:":{unicode:["1f3c8"],fname:"1f3c8",uc:"1f3c8",isCanonical:!0},":swimmer:":{unicode:["1f3ca"],fname:"1f3ca",uc:"1f3ca",isCanonical:!0},":house:":{unicode:["1f3e0"],fname:"1f3e0",uc:"1f3e0",isCanonical:!0},":house_with_garden:":{unicode:["1f3e1"],fname:"1f3e1",uc:"1f3e1",isCanonical:!0},":office:":{unicode:["1f3e2"],fname:"1f3e2",uc:"1f3e2",isCanonical:!0},":post_office:":{unicode:["1f3e3"],fname:"1f3e3",uc:"1f3e3",isCanonical:!0},":hospital:":{unicode:["1f3e5"],fname:"1f3e5",uc:"1f3e5",isCanonical:!0},":bank:":{unicode:["1f3e6"],fname:"1f3e6",uc:"1f3e6",isCanonical:!0},":atm:":{unicode:["1f3e7"],fname:"1f3e7",uc:"1f3e7",isCanonical:!0},":hotel:":{unicode:["1f3e8"],fname:"1f3e8",uc:"1f3e8",isCanonical:!0},":love_hotel:":{unicode:["1f3e9"],fname:"1f3e9",uc:"1f3e9",isCanonical:!0},":convenience_store:":{unicode:["1f3ea"],fname:"1f3ea",uc:"1f3ea",isCanonical:!0},":school:":{unicode:["1f3eb"],fname:"1f3eb",uc:"1f3eb",isCanonical:!0},":department_store:":{unicode:["1f3ec"],fname:"1f3ec",uc:"1f3ec",isCanonical:!0},":cowboy:":{unicode:["1f920"],fname:"1f920",uc:"1f920",isCanonical:!0},":face_with_cowboy_hat:":{unicode:["1f920"],fname:"1f920",uc:"1f920",isCanonical:!1},":factory:":{unicode:["1f3ed"],fname:"1f3ed",uc:"1f3ed",isCanonical:!0},":izakaya_lantern:":{unicode:["1f3ee"],fname:"1f3ee",uc:"1f3ee",isCanonical:!0},":japanese_castle:":{unicode:["1f3ef"],fname:"1f3ef",uc:"1f3ef",isCanonical:!0},":european_castle:":{unicode:["1f3f0"],fname:"1f3f0",uc:"1f3f0",isCanonical:!0},":snail:":{unicode:["1f40c"],fname:"1f40c",uc:"1f40c",isCanonical:!0},":snake:":{unicode:["1f40d"],fname:"1f40d",uc:"1f40d",isCanonical:!0},":racehorse:":{unicode:["1f40e"],fname:"1f40e",uc:"1f40e",isCanonical:!0},":sheep:":{unicode:["1f411"],fname:"1f411",uc:"1f411",isCanonical:!0},":monkey:":{unicode:["1f412"],fname:"1f412",uc:"1f412",isCanonical:!0},":chicken:":{unicode:["1f414"],fname:"1f414",uc:"1f414",isCanonical:!0},":boar:":{unicode:["1f417"],fname:"1f417",uc:"1f417",isCanonical:!0},":elephant:":{unicode:["1f418"],fname:"1f418",uc:"1f418",isCanonical:!0},":octopus:":{unicode:["1f419"],fname:"1f419",uc:"1f419",isCanonical:!0},":shell:":{unicode:["1f41a"],fname:"1f41a",uc:"1f41a",isCanonical:!0},":bug:":{unicode:["1f41b"],fname:"1f41b",uc:"1f41b",isCanonical:!0},":ant:":{unicode:["1f41c"],fname:"1f41c",uc:"1f41c",isCanonical:!0},":bee:":{unicode:["1f41d"],fname:"1f41d",uc:"1f41d",isCanonical:!0},":beetle:":{unicode:["1f41e"],fname:"1f41e",uc:"1f41e",isCanonical:!0},":fish:":{unicode:["1f41f"],fname:"1f41f",uc:"1f41f",isCanonical:!0},":tropical_fish:":{unicode:["1f420"],fname:"1f420",uc:"1f420",isCanonical:!0},":blowfish:":{unicode:["1f421"],fname:"1f421",uc:"1f421",isCanonical:!0},":turtle:":{unicode:["1f422"],fname:"1f422",uc:"1f422",isCanonical:!0},":hatching_chick:":{unicode:["1f423"],fname:"1f423",uc:"1f423",isCanonical:!0},":baby_chick:":{unicode:["1f424"],fname:"1f424",uc:"1f424",isCanonical:!0},":hatched_chick:":{unicode:["1f425"],fname:"1f425",uc:"1f425",isCanonical:!0},":bird:":{unicode:["1f426"],fname:"1f426",uc:"1f426",isCanonical:!0},":penguin:":{unicode:["1f427"],fname:"1f427",uc:"1f427",isCanonical:!0},":koala:":{unicode:["1f428"],fname:"1f428",uc:"1f428",isCanonical:!0},":poodle:":{unicode:["1f429"],fname:"1f429",uc:"1f429",isCanonical:!0},":camel:":{unicode:["1f42b"],fname:"1f42b",uc:"1f42b",isCanonical:!0},":dolphin:":{unicode:["1f42c"],fname:"1f42c",uc:"1f42c",isCanonical:!0},":mouse:":{unicode:["1f42d"],fname:"1f42d",uc:"1f42d",isCanonical:!0},":cow:":{unicode:["1f42e"],fname:"1f42e",uc:"1f42e",isCanonical:!0},":tiger:":{unicode:["1f42f"],fname:"1f42f",uc:"1f42f",isCanonical:!0},":rabbit:":{unicode:["1f430"],fname:"1f430",uc:"1f430",isCanonical:!0},":cat:":{unicode:["1f431"],fname:"1f431",uc:"1f431",isCanonical:!0},":dragon_face:":{unicode:["1f432"],fname:"1f432",uc:"1f432",isCanonical:!0},":whale:":{unicode:["1f433"],fname:"1f433",uc:"1f433",isCanonical:!0},":horse:":{unicode:["1f434"],fname:"1f434",uc:"1f434",isCanonical:!0},":monkey_face:":{unicode:["1f435"],fname:"1f435",uc:"1f435",isCanonical:!0},":dog:":{unicode:["1f436"],fname:"1f436",uc:"1f436",isCanonical:!0},":pig:":{unicode:["1f437"],fname:"1f437",uc:"1f437",isCanonical:!0},":frog:":{unicode:["1f438"],fname:"1f438",uc:"1f438",isCanonical:!0},":hamster:":{unicode:["1f439"],fname:"1f439",uc:"1f439",isCanonical:!0},":wolf:":{unicode:["1f43a"],fname:"1f43a",uc:"1f43a",isCanonical:!0},":bear:":{unicode:["1f43b"],fname:"1f43b",uc:"1f43b",isCanonical:!0},":panda_face:":{unicode:["1f43c"],fname:"1f43c",uc:"1f43c",isCanonical:!0},":pig_nose:":{unicode:["1f43d"],fname:"1f43d",uc:"1f43d",isCanonical:!0},":feet:":{unicode:["1f43e"],fname:"1f43e",uc:"1f43e",isCanonical:!0},":paw_prints:":{unicode:["1f43e"],fname:"1f43e",uc:"1f43e",isCanonical:!1},":eyes:":{unicode:["1f440"],fname:"1f440",uc:"1f440",isCanonical:!0},":ear:":{unicode:["1f442"],fname:"1f442",uc:"1f442",isCanonical:!0},":nose:":{unicode:["1f443"],fname:"1f443",uc:"1f443",isCanonical:!0},":lips:":{unicode:["1f444"],fname:"1f444",uc:"1f444",isCanonical:!0},":tongue:":{unicode:["1f445"],fname:"1f445",uc:"1f445",isCanonical:!0},":point_up_2:":{unicode:["1f446"],fname:"1f446",uc:"1f446",isCanonical:!0},":point_down:":{unicode:["1f447"],fname:"1f447",uc:"1f447",isCanonical:!0},":point_left:":{unicode:["1f448"],fname:"1f448",uc:"1f448",isCanonical:!0},":point_right:":{unicode:["1f449"],fname:"1f449",uc:"1f449",isCanonical:!0},":punch:":{unicode:["1f44a"],fname:"1f44a",uc:"1f44a",isCanonical:!0},":wave:":{unicode:["1f44b"],fname:"1f44b",uc:"1f44b",isCanonical:!0},":ok_hand:":{unicode:["1f44c"],fname:"1f44c",uc:"1f44c",isCanonical:!0},":thumbsup:":{unicode:["1f44d"],fname:"1f44d",uc:"1f44d",isCanonical:!0},":+1:":{unicode:["1f44d"],fname:"1f44d",uc:"1f44d",isCanonical:!1},":thumbup:":{unicode:["1f44d"],fname:"1f44d",uc:"1f44d",isCanonical:!1},":thumbsdown:":{unicode:["1f44e"],fname:"1f44e",uc:"1f44e",isCanonical:!0},":-1:":{unicode:["1f44e"],fname:"1f44e",uc:"1f44e",isCanonical:!1},":thumbdown:":{unicode:["1f44e"],fname:"1f44e",uc:"1f44e",isCanonical:!1},":clap:":{unicode:["1f44f"],fname:"1f44f",uc:"1f44f",isCanonical:!0},":open_hands:":{unicode:["1f450"],fname:"1f450",uc:"1f450",isCanonical:!0},":crown:":{unicode:["1f451"],fname:"1f451",uc:"1f451",isCanonical:!0},":womans_hat:":{unicode:["1f452"],fname:"1f452",uc:"1f452",isCanonical:!0},":eyeglasses:":{unicode:["1f453"],fname:"1f453",uc:"1f453",isCanonical:!0},":necktie:":{unicode:["1f454"],fname:"1f454",uc:"1f454",isCanonical:!0},":shirt:":{unicode:["1f455"],fname:"1f455",uc:"1f455",isCanonical:!0},":jeans:":{unicode:["1f456"],fname:"1f456",uc:"1f456",isCanonical:!0},":dress:":{unicode:["1f457"],fname:"1f457",uc:"1f457",isCanonical:!0},":kimono:":{unicode:["1f458"],fname:"1f458",uc:"1f458",isCanonical:!0},":bikini:":{unicode:["1f459"],fname:"1f459",uc:"1f459",isCanonical:!0},":womans_clothes:":{unicode:["1f45a"],fname:"1f45a",uc:"1f45a",isCanonical:!0},":purse:":{unicode:["1f45b"],fname:"1f45b",uc:"1f45b",isCanonical:!0},":handbag:":{unicode:["1f45c"],fname:"1f45c",uc:"1f45c",isCanonical:!0},":pouch:":{unicode:["1f45d"],fname:"1f45d",uc:"1f45d",isCanonical:!0},":mans_shoe:":{unicode:["1f45e"],fname:"1f45e",uc:"1f45e",isCanonical:!0},":athletic_shoe:":{unicode:["1f45f"],fname:"1f45f",uc:"1f45f",isCanonical:!0},":high_heel:":{unicode:["1f460"],fname:"1f460",uc:"1f460",isCanonical:!0},":sandal:":{unicode:["1f461"],fname:"1f461",uc:"1f461",isCanonical:!0},":boot:":{unicode:["1f462"],fname:"1f462",uc:"1f462",isCanonical:!0},":footprints:":{unicode:["1f463"],fname:"1f463",uc:"1f463",isCanonical:!0},":bust_in_silhouette:":{unicode:["1f464"],fname:"1f464",uc:"1f464",isCanonical:!0},":boy:":{unicode:["1f466"],fname:"1f466",uc:"1f466",isCanonical:!0},":girl:":{unicode:["1f467"],fname:"1f467",uc:"1f467",isCanonical:!0},":man:":{unicode:["1f468"],fname:"1f468",uc:"1f468",isCanonical:!0},":woman:":{unicode:["1f469"],fname:"1f469",uc:"1f469",isCanonical:!0},":family:":{unicode:["1f46a"],fname:"1f46a",uc:"1f46a",isCanonical:!0},":couple:":{unicode:["1f46b"],fname:"1f46b",uc:"1f46b",isCanonical:!0},":cop:":{unicode:["1f46e"],fname:"1f46e",uc:"1f46e",isCanonical:!0},":dancers:":{unicode:["1f46f"],fname:"1f46f",uc:"1f46f",isCanonical:!0},":bride_with_veil:":{unicode:["1f470"],fname:"1f470",uc:"1f470",isCanonical:!0},":person_with_blond_hair:":{unicode:["1f471"],fname:"1f471",uc:"1f471",isCanonical:!0},":man_with_gua_pi_mao:":{unicode:["1f472"],fname:"1f472",uc:"1f472",isCanonical:!0},":man_with_turban:":{unicode:["1f473"],fname:"1f473",uc:"1f473",isCanonical:!0},":older_man:":{unicode:["1f474"],fname:"1f474",uc:"1f474",isCanonical:!0},":older_woman:":{unicode:["1f475"],fname:"1f475",uc:"1f475",isCanonical:!0},":grandma:":{unicode:["1f475"],fname:"1f475",uc:"1f475",isCanonical:!1},":baby:":{unicode:["1f476"],fname:"1f476",uc:"1f476",isCanonical:!0},":construction_worker:":{unicode:["1f477"],fname:"1f477",uc:"1f477",isCanonical:!0},":princess:":{unicode:["1f478"],fname:"1f478",uc:"1f478",isCanonical:!0},":japanese_ogre:":{unicode:["1f479"],fname:"1f479",uc:"1f479",isCanonical:!0},":japanese_goblin:":{unicode:["1f47a"],fname:"1f47a",uc:"1f47a",isCanonical:!0},":ghost:":{unicode:["1f47b"],fname:"1f47b",uc:"1f47b",isCanonical:!0},":angel:":{unicode:["1f47c"],fname:"1f47c",uc:"1f47c",isCanonical:!0},":alien:":{unicode:["1f47d"],fname:"1f47d",uc:"1f47d",isCanonical:!0},":space_invader:":{unicode:["1f47e"],fname:"1f47e",uc:"1f47e",isCanonical:!0},":imp:":{unicode:["1f47f"],fname:"1f47f",uc:"1f47f",isCanonical:!0},":skull:":{unicode:["1f480"],fname:"1f480",uc:"1f480",isCanonical:!0},":skeleton:":{unicode:["1f480"],fname:"1f480",uc:"1f480",isCanonical:!1},":card_index:":{unicode:["1f4c7"],fname:"1f4c7",uc:"1f4c7",isCanonical:!0},":information_desk_person:":{unicode:["1f481"],fname:"1f481",uc:"1f481",isCanonical:!0},":guardsman:":{unicode:["1f482"],fname:"1f482",uc:"1f482",isCanonical:!0},":dancer:":{unicode:["1f483"],fname:"1f483",uc:"1f483",isCanonical:!0},":lipstick:":{unicode:["1f484"],fname:"1f484",uc:"1f484",isCanonical:!0},":nail_care:":{unicode:["1f485"],fname:"1f485",uc:"1f485",isCanonical:!0},":ledger:":{unicode:["1f4d2"],fname:"1f4d2",uc:"1f4d2",isCanonical:!0},":massage:":{unicode:["1f486"],fname:"1f486",uc:"1f486",isCanonical:!0},":notebook:":{unicode:["1f4d3"],fname:"1f4d3",uc:"1f4d3",isCanonical:!0},":haircut:":{unicode:["1f487"],fname:"1f487",uc:"1f487",isCanonical:!0},":notebook_with_decorative_cover:":{unicode:["1f4d4"],fname:"1f4d4",uc:"1f4d4",isCanonical:!0},":barber:":{unicode:["1f488"],fname:"1f488",uc:"1f488",isCanonical:!0},":closed_book:":{unicode:["1f4d5"],fname:"1f4d5",uc:"1f4d5",isCanonical:!0},":syringe:":{unicode:["1f489"],fname:"1f489",uc:"1f489",isCanonical:!0},":book:":{unicode:["1f4d6"],fname:"1f4d6",uc:"1f4d6",isCanonical:!0},":pill:":{unicode:["1f48a"],fname:"1f48a",uc:"1f48a",isCanonical:!0},":green_book:":{unicode:["1f4d7"],fname:"1f4d7",uc:"1f4d7",isCanonical:!0},":kiss:":{unicode:["1f48b"],fname:"1f48b",uc:"1f48b",isCanonical:!0},":blue_book:":{unicode:["1f4d8"],fname:"1f4d8",uc:"1f4d8",isCanonical:!0},":love_letter:":{unicode:["1f48c"],fname:"1f48c",uc:"1f48c",isCanonical:!0},":orange_book:":{unicode:["1f4d9"],fname:"1f4d9",uc:"1f4d9",isCanonical:!0},":ring:":{unicode:["1f48d"],fname:"1f48d",uc:"1f48d",isCanonical:!0},":books:":{unicode:["1f4da"],fname:"1f4da",uc:"1f4da",isCanonical:!0},":gem:":{unicode:["1f48e"],fname:"1f48e",uc:"1f48e",isCanonical:!0},":name_badge:":{unicode:["1f4db"],fname:"1f4db",uc:"1f4db",isCanonical:!0},":couplekiss:":{unicode:["1f48f"],fname:"1f48f",uc:"1f48f",isCanonical:!0},":scroll:":{unicode:["1f4dc"],fname:"1f4dc",uc:"1f4dc",isCanonical:!0},":bouquet:":{unicode:["1f490"],fname:"1f490",uc:"1f490",isCanonical:!0},":pencil:":{unicode:["1f4dd"],fname:"1f4dd",uc:"1f4dd",isCanonical:!0},":couple_with_heart:":{unicode:["1f491"],fname:"1f491",uc:"1f491",isCanonical:!0},":telephone_receiver:":{unicode:["1f4de"],fname:"1f4de",uc:"1f4de",isCanonical:!0},":wedding:":{unicode:["1f492"],fname:"1f492",uc:"1f492",isCanonical:!0},":pager:":{unicode:["1f4df"],fname:"1f4df",uc:"1f4df",isCanonical:!0},":fax:":{unicode:["1f4e0"],fname:"1f4e0",uc:"1f4e0",isCanonical:!0},":heartbeat:":{unicode:["1f493"],fname:"1f493",uc:"1f493",isCanonical:!0},":satellite:":{unicode:["1f4e1"],fname:"1f4e1",uc:"1f4e1",isCanonical:!0},":loudspeaker:":{unicode:["1f4e2"],fname:"1f4e2",uc:"1f4e2",isCanonical:!0},":broken_heart:":{unicode:["1f494"],fname:"1f494",uc:"1f494",isCanonical:!0},":mega:":{unicode:["1f4e3"],fname:"1f4e3",uc:"1f4e3",isCanonical:!0},":outbox_tray:":{unicode:["1f4e4"],fname:"1f4e4",uc:"1f4e4",isCanonical:!0},":two_hearts:":{unicode:["1f495"],fname:"1f495",uc:"1f495",isCanonical:!0},":inbox_tray:":{unicode:["1f4e5"],fname:"1f4e5",uc:"1f4e5",isCanonical:!0},":package:":{unicode:["1f4e6"],fname:"1f4e6",uc:"1f4e6",isCanonical:!0},":sparkling_heart:":{unicode:["1f496"],fname:"1f496",uc:"1f496",isCanonical:!0},":e-mail:":{unicode:["1f4e7"],fname:"1f4e7",uc:"1f4e7",isCanonical:!0},":email:":{unicode:["1f4e7"],fname:"1f4e7",uc:"1f4e7",isCanonical:!1},":incoming_envelope:":{unicode:["1f4e8"],fname:"1f4e8",uc:"1f4e8",isCanonical:!0},":heartpulse:":{unicode:["1f497"],fname:"1f497",uc:"1f497",isCanonical:!0},":envelope_with_arrow:":{unicode:["1f4e9"],fname:"1f4e9",uc:"1f4e9",isCanonical:!0},":mailbox_closed:":{unicode:["1f4ea"],fname:"1f4ea",uc:"1f4ea",isCanonical:!0},":cupid:":{unicode:["1f498"],fname:"1f498",uc:"1f498",isCanonical:!0},":mailbox:":{unicode:["1f4eb"],fname:"1f4eb",uc:"1f4eb",isCanonical:!0},":postbox:":{unicode:["1f4ee"],fname:"1f4ee",uc:"1f4ee",isCanonical:!0},":blue_heart:":{unicode:["1f499"],fname:"1f499",uc:"1f499",isCanonical:!0},":newspaper:":{unicode:["1f4f0"],fname:"1f4f0",uc:"1f4f0",isCanonical:!0},":iphone:":{unicode:["1f4f1"],fname:"1f4f1",uc:"1f4f1",isCanonical:!0},":green_heart:":{unicode:["1f49a"],fname:"1f49a",uc:"1f49a",isCanonical:!0},":calling:":{unicode:["1f4f2"],fname:"1f4f2",uc:"1f4f2",isCanonical:!0},":vibration_mode:":{unicode:["1f4f3"],fname:"1f4f3",uc:"1f4f3",isCanonical:!0},":yellow_heart:":{unicode:["1f49b"],fname:"1f49b",uc:"1f49b",isCanonical:!0},":mobile_phone_off:":{unicode:["1f4f4"],fname:"1f4f4",uc:"1f4f4",isCanonical:!0},":signal_strength:":{unicode:["1f4f6"],fname:"1f4f6",uc:"1f4f6",isCanonical:!0},":purple_heart:":{unicode:["1f49c"],fname:"1f49c",uc:"1f49c",isCanonical:!0},":camera:":{unicode:["1f4f7"],fname:"1f4f7",uc:"1f4f7",isCanonical:!0},":video_camera:":{unicode:["1f4f9"],fname:"1f4f9",uc:"1f4f9",isCanonical:!0},":gift_heart:":{unicode:["1f49d"],fname:"1f49d",uc:"1f49d",isCanonical:!0},":tv:":{unicode:["1f4fa"],fname:"1f4fa",uc:"1f4fa",isCanonical:!0},":radio:":{unicode:["1f4fb"],fname:"1f4fb",uc:"1f4fb",isCanonical:!0},":revolving_hearts:":{unicode:["1f49e"],fname:"1f49e",uc:"1f49e",isCanonical:!0},":vhs:":{unicode:["1f4fc"],fname:"1f4fc",uc:"1f4fc",isCanonical:!0},":arrows_clockwise:":{unicode:["1f503"],fname:"1f503",uc:"1f503",isCanonical:!0},":heart_decoration:":{unicode:["1f49f"],fname:"1f49f",uc:"1f49f",isCanonical:!0},":loud_sound:":{unicode:["1f50a"],fname:"1f50a",uc:"1f50a",isCanonical:!0},":battery:":{unicode:["1f50b"],fname:"1f50b",uc:"1f50b",isCanonical:!0},":diamond_shape_with_a_dot_inside:":{unicode:["1f4a0"],fname:"1f4a0",uc:"1f4a0",isCanonical:!0},":electric_plug:":{unicode:["1f50c"],fname:"1f50c",uc:"1f50c",isCanonical:!0},":mag:":{unicode:["1f50d"],fname:"1f50d",uc:"1f50d",isCanonical:!0},":bulb:":{unicode:["1f4a1"],fname:"1f4a1",uc:"1f4a1",isCanonical:!0},":mag_right:":{unicode:["1f50e"],fname:"1f50e",uc:"1f50e",isCanonical:!0},":lock_with_ink_pen:":{unicode:["1f50f"],fname:"1f50f",uc:"1f50f",isCanonical:!0},":anger:":{unicode:["1f4a2"],fname:"1f4a2",uc:"1f4a2",isCanonical:!0},":closed_lock_with_key:":{unicode:["1f510"],fname:"1f510",uc:"1f510",isCanonical:!0},":key:":{unicode:["1f511"],fname:"1f511",uc:"1f511",isCanonical:!0},":bomb:":{unicode:["1f4a3"],fname:"1f4a3",uc:"1f4a3",isCanonical:!0},":lock:":{unicode:["1f512"],fname:"1f512",uc:"1f512",isCanonical:!0},":unlock:":{unicode:["1f513"],fname:"1f513",uc:"1f513",isCanonical:!0},":zzz:":{unicode:["1f4a4"],fname:"1f4a4",uc:"1f4a4",isCanonical:!0},":bell:":{unicode:["1f514"],fname:"1f514",uc:"1f514",isCanonical:!0},":bookmark:":{unicode:["1f516"],fname:"1f516",uc:"1f516",isCanonical:!0},":boom:":{unicode:["1f4a5"],fname:"1f4a5",uc:"1f4a5",isCanonical:!0},":link:":{unicode:["1f517"],fname:"1f517",uc:"1f517",isCanonical:!0},":radio_button:":{unicode:["1f518"],fname:"1f518",uc:"1f518",isCanonical:!0},":sweat_drops:":{unicode:["1f4a6"],fname:"1f4a6",uc:"1f4a6",isCanonical:!0},":back:":{unicode:["1f519"],fname:"1f519",uc:"1f519",isCanonical:!0},":end:":{unicode:["1f51a"],fname:"1f51a",uc:"1f51a",isCanonical:!0},":droplet:":{unicode:["1f4a7"],fname:"1f4a7",uc:"1f4a7",isCanonical:!0},":on:":{unicode:["1f51b"],fname:"1f51b",uc:"1f51b",isCanonical:!0},":soon:":{unicode:["1f51c"],fname:"1f51c",uc:"1f51c",isCanonical:!0},":dash:":{unicode:["1f4a8"],fname:"1f4a8",uc:"1f4a8",isCanonical:!0},":top:":{unicode:["1f51d"],fname:"1f51d",uc:"1f51d",isCanonical:!0},":underage:":{unicode:["1f51e"],fname:"1f51e",uc:"1f51e",isCanonical:!0},":poop:":{unicode:["1f4a9"],fname:"1f4a9",uc:"1f4a9",isCanonical:!0},":shit:":{unicode:["1f4a9"],fname:"1f4a9",uc:"1f4a9",isCanonical:!1},":hankey:":{unicode:["1f4a9"],fname:"1f4a9",uc:"1f4a9",isCanonical:!1},":poo:":{unicode:["1f4a9"],fname:"1f4a9",uc:"1f4a9",isCanonical:!1},":keycap_ten:":{unicode:["1f51f"],fname:"1f51f",uc:"1f51f",isCanonical:!0},":muscle:":{unicode:["1f4aa"],fname:"1f4aa",uc:"1f4aa",isCanonical:!0},":capital_abcd:":{unicode:["1f520"],fname:"1f520",uc:"1f520",isCanonical:!0},":abcd:":{unicode:["1f521"],fname:"1f521",uc:"1f521",isCanonical:!0},":dizzy:":{unicode:["1f4ab"],fname:"1f4ab",uc:"1f4ab",isCanonical:!0},":1234:":{unicode:["1f522"],fname:"1f522",uc:"1f522",isCanonical:!0},":symbols:":{unicode:["1f523"],fname:"1f523",uc:"1f523",isCanonical:!0},":speech_balloon:":{unicode:["1f4ac"],fname:"1f4ac",uc:"1f4ac",isCanonical:!0},":abc:":{unicode:["1f524"],fname:"1f524",uc:"1f524",isCanonical:!0},":fire:":{unicode:["1f525"],fname:"1f525",uc:"1f525",isCanonical:!0},":flame:":{unicode:["1f525"],fname:"1f525",uc:"1f525",isCanonical:!1},":white_flower:":{unicode:["1f4ae"],fname:"1f4ae",uc:"1f4ae",isCanonical:!0},":flashlight:":{unicode:["1f526"],fname:"1f526",uc:"1f526",isCanonical:!0},":wrench:":{unicode:["1f527"],fname:"1f527",uc:"1f527",isCanonical:!0},":100:":{unicode:["1f4af"],fname:"1f4af",uc:"1f4af",isCanonical:!0},":hammer:":{unicode:["1f528"],fname:"1f528",uc:"1f528",isCanonical:!0},":nut_and_bolt:":{unicode:["1f529"],fname:"1f529",uc:"1f529",isCanonical:!0},":moneybag:":{unicode:["1f4b0"],fname:"1f4b0",uc:"1f4b0",isCanonical:!0},":knife:":{unicode:["1f52a"],fname:"1f52a",uc:"1f52a",isCanonical:!0},":gun:":{unicode:["1f52b"],fname:"1f52b",uc:"1f52b",isCanonical:!0},":currency_exchange:":{unicode:["1f4b1"],fname:"1f4b1",uc:"1f4b1",isCanonical:!0},":crystal_ball:":{unicode:["1f52e"],fname:"1f52e",uc:"1f52e",isCanonical:!0},":heavy_dollar_sign:":{unicode:["1f4b2"],fname:"1f4b2",uc:"1f4b2",isCanonical:!0},":six_pointed_star:":{unicode:["1f52f"],fname:"1f52f",uc:"1f52f",isCanonical:!0},":credit_card:":{unicode:["1f4b3"],fname:"1f4b3",uc:"1f4b3",isCanonical:!0},":beginner:":{unicode:["1f530"],fname:"1f530",uc:"1f530",isCanonical:!0},":trident:":{unicode:["1f531"],fname:"1f531",uc:"1f531",isCanonical:!0},":yen:":{unicode:["1f4b4"],fname:"1f4b4",uc:"1f4b4",isCanonical:!0},":black_square_button:":{unicode:["1f532"],fname:"1f532",uc:"1f532",isCanonical:!0},":white_square_button:":{unicode:["1f533"],fname:"1f533",uc:"1f533",isCanonical:!0},":dollar:":{unicode:["1f4b5"],fname:"1f4b5",uc:"1f4b5",isCanonical:!0},":red_circle:":{unicode:["1f534"],fname:"1f534",uc:"1f534",isCanonical:!0},":blue_circle:":{unicode:["1f535"],fname:"1f535",uc:"1f535",isCanonical:!0},":money_with_wings:":{unicode:["1f4b8"],fname:"1f4b8",uc:"1f4b8",isCanonical:!0},":large_orange_diamond:":{unicode:["1f536"],fname:"1f536",uc:"1f536",isCanonical:!0},":large_blue_diamond:":{unicode:["1f537"],fname:"1f537",uc:"1f537",isCanonical:!0},":chart:":{unicode:["1f4b9"],fname:"1f4b9",uc:"1f4b9",isCanonical:!0},":small_orange_diamond:":{unicode:["1f538"],fname:"1f538",uc:"1f538",isCanonical:!0},":small_blue_diamond:":{unicode:["1f539"],fname:"1f539",uc:"1f539",isCanonical:!0},":seat:":{unicode:["1f4ba"],fname:"1f4ba",uc:"1f4ba",isCanonical:!0},":small_red_triangle:":{unicode:["1f53a"],fname:"1f53a",uc:"1f53a",isCanonical:!0},":small_red_triangle_down:":{unicode:["1f53b"],fname:"1f53b",uc:"1f53b",isCanonical:!0},":computer:":{unicode:["1f4bb"],fname:"1f4bb",uc:"1f4bb",isCanonical:!0},":arrow_up_small:":{unicode:["1f53c"],fname:"1f53c",uc:"1f53c",isCanonical:!0},":briefcase:":{unicode:["1f4bc"],fname:"1f4bc",uc:"1f4bc",isCanonical:!0},":arrow_down_small:":{unicode:["1f53d"],fname:"1f53d",uc:"1f53d",isCanonical:!0},":clock1:":{unicode:["1f550"],fname:"1f550",uc:"1f550",isCanonical:!0},":minidisc:":{unicode:["1f4bd"],fname:"1f4bd",uc:"1f4bd",isCanonical:!0},":clock2:":{unicode:["1f551"],fname:"1f551",uc:"1f551",isCanonical:!0},":floppy_disk:":{unicode:["1f4be"],fname:"1f4be",uc:"1f4be",isCanonical:!0},":clock3:":{unicode:["1f552"],fname:"1f552",uc:"1f552",isCanonical:!0},":cd:":{unicode:["1f4bf"],fname:"1f4bf",uc:"1f4bf",isCanonical:!0},":clock4:":{unicode:["1f553"],fname:"1f553",uc:"1f553",isCanonical:!0},":dvd:":{unicode:["1f4c0"],fname:"1f4c0",uc:"1f4c0",isCanonical:!0},":clock5:":{unicode:["1f554"],fname:"1f554",uc:"1f554",isCanonical:!0},":clock6:":{unicode:["1f555"],fname:"1f555",uc:"1f555",isCanonical:!0},":file_folder:":{unicode:["1f4c1"],fname:"1f4c1",uc:"1f4c1",isCanonical:!0},":clock7:":{unicode:["1f556"],fname:"1f556",uc:"1f556",isCanonical:!0},":clock8:":{unicode:["1f557"],fname:"1f557",uc:"1f557",isCanonical:!0},":open_file_folder:":{unicode:["1f4c2"],fname:"1f4c2",uc:"1f4c2",isCanonical:!0},":clock9:":{unicode:["1f558"],fname:"1f558",uc:"1f558",isCanonical:!0},":clock10:":{unicode:["1f559"],fname:"1f559",uc:"1f559",isCanonical:!0},":page_with_curl:":{unicode:["1f4c3"],fname:"1f4c3",uc:"1f4c3",isCanonical:!0},":clock11:":{unicode:["1f55a"],fname:"1f55a",uc:"1f55a",isCanonical:!0},":clock12:":{unicode:["1f55b"],fname:"1f55b",uc:"1f55b",isCanonical:!0},":page_facing_up:":{unicode:["1f4c4"],fname:"1f4c4",uc:"1f4c4",isCanonical:!0},":mount_fuji:":{unicode:["1f5fb"],fname:"1f5fb",uc:"1f5fb",isCanonical:!0},":tokyo_tower:":{unicode:["1f5fc"],fname:"1f5fc",uc:"1f5fc",isCanonical:!0},":date:":{unicode:["1f4c5"],fname:"1f4c5",uc:"1f4c5",isCanonical:!0},":statue_of_liberty:":{unicode:["1f5fd"],fname:"1f5fd",uc:"1f5fd",isCanonical:!0},":japan:":{unicode:["1f5fe"],fname:"1f5fe",uc:"1f5fe",isCanonical:!0},":calendar:":{unicode:["1f4c6"],fname:"1f4c6",uc:"1f4c6",isCanonical:!0},":moyai:":{unicode:["1f5ff"],fname:"1f5ff",uc:"1f5ff",isCanonical:!0},":grin:":{unicode:["1f601"],fname:"1f601",uc:"1f601",isCanonical:!0},":joy:":{unicode:["1f602"],fname:"1f602",uc:"1f602",isCanonical:!0},":smiley:":{unicode:["1f603"],fname:"1f603",uc:"1f603",isCanonical:!0},":chart_with_upwards_trend:":{unicode:["1f4c8"],fname:"1f4c8",uc:"1f4c8",isCanonical:!0},":smile:":{unicode:["1f604"],fname:"1f604",uc:"1f604",isCanonical:!0},":sweat_smile:":{unicode:["1f605"],fname:"1f605",uc:"1f605",isCanonical:!0},":chart_with_downwards_trend:":{unicode:["1f4c9"],fname:"1f4c9",uc:"1f4c9",isCanonical:!0},":laughing:":{unicode:["1f606"],fname:"1f606",uc:"1f606",isCanonical:!0},":satisfied:":{unicode:["1f606"],fname:"1f606",uc:"1f606",isCanonical:!1},":wink:":{unicode:["1f609"],fname:"1f609",uc:"1f609",isCanonical:!0},":bar_chart:":{unicode:["1f4ca"],fname:"1f4ca",uc:"1f4ca",isCanonical:!0},":blush:":{unicode:["1f60a"],fname:"1f60a",uc:"1f60a",isCanonical:!0},":yum:":{unicode:["1f60b"],fname:"1f60b",uc:"1f60b",isCanonical:!0},":clipboard:":{unicode:["1f4cb"],fname:"1f4cb",uc:"1f4cb",isCanonical:!0},":relieved:":{unicode:["1f60c"],fname:"1f60c",uc:"1f60c",isCanonical:!0},":heart_eyes:":{unicode:["1f60d"],fname:"1f60d",uc:"1f60d",isCanonical:!0},":pushpin:":{unicode:["1f4cc"],fname:"1f4cc",uc:"1f4cc",isCanonical:!0},":smirk:":{unicode:["1f60f"],fname:"1f60f",uc:"1f60f",isCanonical:!0},":unamused:":{unicode:["1f612"],fname:"1f612",uc:"1f612",isCanonical:!0},":round_pushpin:":{unicode:["1f4cd"],fname:"1f4cd",uc:"1f4cd",isCanonical:!0},":sweat:":{unicode:["1f613"],fname:"1f613",uc:"1f613",isCanonical:!0},":pensive:":{unicode:["1f614"],fname:"1f614",uc:"1f614",isCanonical:!0},":paperclip:":{unicode:["1f4ce"],fname:"1f4ce",uc:"1f4ce",isCanonical:!0},":confounded:":{unicode:["1f616"],fname:"1f616",uc:"1f616",isCanonical:!0},":kissing_heart:":{unicode:["1f618"],fname:"1f618",uc:"1f618",isCanonical:!0},":straight_ruler:":{unicode:["1f4cf"],fname:"1f4cf",uc:"1f4cf",isCanonical:!0},":kissing_closed_eyes:":{unicode:["1f61a"],fname:"1f61a",uc:"1f61a",isCanonical:!0},":stuck_out_tongue_winking_eye:":{unicode:["1f61c"],fname:"1f61c",uc:"1f61c",isCanonical:!0},":triangular_ruler:":{unicode:["1f4d0"],fname:"1f4d0",uc:"1f4d0",isCanonical:!0},":stuck_out_tongue_closed_eyes:":{unicode:["1f61d"],fname:"1f61d",uc:"1f61d",isCanonical:!0},":disappointed:":{unicode:["1f61e"],fname:"1f61e",uc:"1f61e",isCanonical:!0},":bookmark_tabs:":{unicode:["1f4d1"],fname:"1f4d1",uc:"1f4d1",isCanonical:!0},":angry:":{unicode:["1f620"],fname:"1f620",uc:"1f620",isCanonical:!0},":rage:":{unicode:["1f621"],fname:"1f621",uc:"1f621",isCanonical:!0},":cry:":{unicode:["1f622"],fname:"1f622",uc:"1f622",isCanonical:!0},":persevere:":{unicode:["1f623"],fname:"1f623",uc:"1f623",isCanonical:!0},":triumph:":{unicode:["1f624"],fname:"1f624",uc:"1f624",isCanonical:!0},":disappointed_relieved:":{unicode:["1f625"],fname:"1f625",uc:"1f625",isCanonical:!0},":fearful:":{unicode:["1f628"],fname:"1f628",uc:"1f628",isCanonical:!0},":weary:":{unicode:["1f629"],fname:"1f629",uc:"1f629",isCanonical:!0},":sleepy:":{unicode:["1f62a"],fname:"1f62a",uc:"1f62a",isCanonical:!0},":tired_face:":{unicode:["1f62b"],fname:"1f62b",uc:"1f62b",isCanonical:!0},":sob:":{unicode:["1f62d"],fname:"1f62d",uc:"1f62d",isCanonical:!0},":cold_sweat:":{unicode:["1f630"],fname:"1f630",uc:"1f630",isCanonical:!0},":scream:":{unicode:["1f631"],fname:"1f631",uc:"1f631",isCanonical:!0},":astonished:":{unicode:["1f632"],fname:"1f632",uc:"1f632",isCanonical:!0},":flushed:":{unicode:["1f633"],fname:"1f633",uc:"1f633",isCanonical:!0},":dizzy_face:":{unicode:["1f635"],fname:"1f635",uc:"1f635",isCanonical:!0},":mask:":{unicode:["1f637"],fname:"1f637",uc:"1f637",isCanonical:!0},":smile_cat:":{unicode:["1f638"],fname:"1f638",uc:"1f638",isCanonical:!0},":joy_cat:":{unicode:["1f639"],fname:"1f639",uc:"1f639",isCanonical:!0},":smiley_cat:":{unicode:["1f63a"],fname:"1f63a",uc:"1f63a",isCanonical:!0},":heart_eyes_cat:":{unicode:["1f63b"],fname:"1f63b",uc:"1f63b",isCanonical:!0},":smirk_cat:":{unicode:["1f63c"],fname:"1f63c",uc:"1f63c",isCanonical:!0},":kissing_cat:":{unicode:["1f63d"],fname:"1f63d",uc:"1f63d",isCanonical:!0},":pouting_cat:":{unicode:["1f63e"],fname:"1f63e",uc:"1f63e",isCanonical:!0},":crying_cat_face:":{unicode:["1f63f"],fname:"1f63f",uc:"1f63f",isCanonical:!0},":scream_cat:":{unicode:["1f640"],fname:"1f640",uc:"1f640",isCanonical:!0},":no_good:":{unicode:["1f645"],fname:"1f645",uc:"1f645",isCanonical:!0},":ok_woman:":{unicode:["1f646"],fname:"1f646",uc:"1f646",isCanonical:!0},":bow:":{unicode:["1f647"],fname:"1f647",uc:"1f647",isCanonical:!0},":see_no_evil:":{unicode:["1f648"],fname:"1f648",uc:"1f648",isCanonical:!0},":hear_no_evil:":{unicode:["1f649"],fname:"1f649",uc:"1f649",isCanonical:!0},":speak_no_evil:":{unicode:["1f64a"],fname:"1f64a",uc:"1f64a",isCanonical:!0},":raising_hand:":{unicode:["1f64b"],fname:"1f64b",uc:"1f64b",isCanonical:!0},":raised_hands:":{unicode:["1f64c"],fname:"1f64c",uc:"1f64c",isCanonical:!0},":person_frowning:":{unicode:["1f64d"],fname:"1f64d",uc:"1f64d",isCanonical:!0},":person_with_pouting_face:":{unicode:["1f64e"],fname:"1f64e",uc:"1f64e",isCanonical:!0},":pray:":{unicode:["1f64f"],fname:"1f64f",uc:"1f64f",isCanonical:!0},":rocket:":{unicode:["1f680"],fname:"1f680",uc:"1f680",isCanonical:!0},":railway_car:":{unicode:["1f683"],fname:"1f683",uc:"1f683",isCanonical:!0},":bullettrain_side:":{unicode:["1f684"],fname:"1f684",uc:"1f684",isCanonical:!0},":bullettrain_front:":{unicode:["1f685"],fname:"1f685",uc:"1f685",isCanonical:!0},":metro:":{unicode:["1f687"],fname:"1f687",uc:"1f687",isCanonical:!0},":station:":{unicode:["1f689"],fname:"1f689",uc:"1f689",isCanonical:!0},":bus:":{unicode:["1f68c"],fname:"1f68c",uc:"1f68c",isCanonical:!0},":busstop:":{unicode:["1f68f"],fname:"1f68f",uc:"1f68f",isCanonical:!0},":ambulance:":{unicode:["1f691"],fname:"1f691",uc:"1f691",isCanonical:!0},":fire_engine:":{unicode:["1f692"],fname:"1f692",uc:"1f692",isCanonical:!0},":police_car:":{unicode:["1f693"],fname:"1f693",uc:"1f693",isCanonical:!0},":taxi:":{unicode:["1f695"],fname:"1f695",uc:"1f695",isCanonical:!0},":red_car:":{unicode:["1f697"],fname:"1f697",uc:"1f697",isCanonical:!0},":blue_car:":{unicode:["1f699"],fname:"1f699",uc:"1f699",isCanonical:!0},":truck:":{unicode:["1f69a"],fname:"1f69a",uc:"1f69a",isCanonical:!0},":ship:":{unicode:["1f6a2"],fname:"1f6a2",uc:"1f6a2",isCanonical:!0},":speedboat:":{unicode:["1f6a4"],fname:"1f6a4",uc:"1f6a4",isCanonical:!0},":traffic_light:":{unicode:["1f6a5"],fname:"1f6a5",uc:"1f6a5",isCanonical:!0},":construction:":{unicode:["1f6a7"],fname:"1f6a7",uc:"1f6a7",isCanonical:!0},":rotating_light:":{unicode:["1f6a8"],fname:"1f6a8",uc:"1f6a8",isCanonical:!0},":triangular_flag_on_post:":{unicode:["1f6a9"],fname:"1f6a9",uc:"1f6a9",isCanonical:!0},":door:":{unicode:["1f6aa"],fname:"1f6aa",uc:"1f6aa",isCanonical:!0},":no_entry_sign:":{unicode:["1f6ab"],fname:"1f6ab",uc:"1f6ab",isCanonical:!0},":smoking:":{unicode:["1f6ac"],fname:"1f6ac",uc:"1f6ac",isCanonical:!0},":no_smoking:":{unicode:["1f6ad"],fname:"1f6ad",uc:"1f6ad",isCanonical:!0},":bike:":{unicode:["1f6b2"],fname:"1f6b2",uc:"1f6b2",isCanonical:!0},":walking:":{unicode:["1f6b6"],fname:"1f6b6",uc:"1f6b6",isCanonical:!0},":mens:":{unicode:["1f6b9"],fname:"1f6b9",uc:"1f6b9",isCanonical:!0},":womens:":{unicode:["1f6ba"],fname:"1f6ba",uc:"1f6ba",isCanonical:!0},":restroom:":{unicode:["1f6bb"],fname:"1f6bb",uc:"1f6bb",isCanonical:!0},":baby_symbol:":{unicode:["1f6bc"],fname:"1f6bc",uc:"1f6bc",isCanonical:!0},":toilet:":{unicode:["1f6bd"],fname:"1f6bd",uc:"1f6bd",isCanonical:!0},":wc:":{unicode:["1f6be"],fname:"1f6be",uc:"1f6be",isCanonical:!0},":bath:":{unicode:["1f6c0"],fname:"1f6c0",uc:"1f6c0",isCanonical:!0},":metal:":{unicode:["1f918"],fname:"1f918",uc:"1f918",isCanonical:!0},":sign_of_the_horns:":{unicode:["1f918"],fname:"1f918",uc:"1f918",isCanonical:!1},":grinning:":{unicode:["1f600"],fname:"1f600",uc:"1f600",isCanonical:!0},":innocent:":{unicode:["1f607"],fname:"1f607",uc:"1f607",isCanonical:!0},":smiling_imp:":{unicode:["1f608"],fname:"1f608",uc:"1f608",isCanonical:!0},":sunglasses:":{unicode:["1f60e"],fname:"1f60e",uc:"1f60e",isCanonical:!0},":neutral_face:":{unicode:["1f610"],fname:"1f610",uc:"1f610",isCanonical:!0},":expressionless:":{unicode:["1f611"],fname:"1f611",uc:"1f611",isCanonical:!0},":confused:":{unicode:["1f615"],fname:"1f615",uc:"1f615",isCanonical:!0},":kissing:":{unicode:["1f617"],fname:"1f617",uc:"1f617",isCanonical:!0},":kissing_smiling_eyes:":{unicode:["1f619"],fname:"1f619",uc:"1f619",isCanonical:!0},":stuck_out_tongue:":{unicode:["1f61b"],fname:"1f61b",uc:"1f61b",isCanonical:!0},":worried:":{unicode:["1f61f"],fname:"1f61f",uc:"1f61f",isCanonical:!0},":frowning:":{unicode:["1f626"],fname:"1f626",uc:"1f626",isCanonical:!0},":anguished:":{unicode:["1f627"],fname:"1f627",uc:"1f627",isCanonical:!0},":grimacing:":{unicode:["1f62c"],fname:"1f62c",uc:"1f62c",isCanonical:!0},":open_mouth:":{unicode:["1f62e"],fname:"1f62e",uc:"1f62e",isCanonical:!0},":hushed:":{unicode:["1f62f"],fname:"1f62f",uc:"1f62f",isCanonical:!0},":sleeping:":{unicode:["1f634"],fname:"1f634",uc:"1f634",isCanonical:!0},":no_mouth:":{unicode:["1f636"],fname:"1f636",uc:"1f636",isCanonical:!0},":helicopter:":{unicode:["1f681"],fname:"1f681",uc:"1f681",isCanonical:!0},":steam_locomotive:":{unicode:["1f682"],fname:"1f682",uc:"1f682",isCanonical:!0},":train2:":{unicode:["1f686"],fname:"1f686",uc:"1f686",isCanonical:!0},":light_rail:":{unicode:["1f688"],fname:"1f688",uc:"1f688",isCanonical:!0},":tram:":{unicode:["1f68a"],fname:"1f68a",uc:"1f68a",isCanonical:!0},":oncoming_bus:":{unicode:["1f68d"],fname:"1f68d",uc:"1f68d",isCanonical:!0},":trolleybus:":{unicode:["1f68e"],fname:"1f68e",uc:"1f68e",isCanonical:!0},":minibus:":{unicode:["1f690"],fname:"1f690",uc:"1f690",isCanonical:!0},":oncoming_police_car:":{unicode:["1f694"],fname:"1f694",uc:"1f694",isCanonical:!0},":oncoming_taxi:":{unicode:["1f696"],fname:"1f696",uc:"1f696",isCanonical:!0},":oncoming_automobile:":{unicode:["1f698"],fname:"1f698",uc:"1f698",isCanonical:!0},":articulated_lorry:":{unicode:["1f69b"],fname:"1f69b",uc:"1f69b",isCanonical:!0},":tractor:":{unicode:["1f69c"],fname:"1f69c",uc:"1f69c",isCanonical:!0},":monorail:":{unicode:["1f69d"],fname:"1f69d",uc:"1f69d",isCanonical:!0},":mountain_railway:":{unicode:["1f69e"],fname:"1f69e",uc:"1f69e",isCanonical:!0},":suspension_railway:":{unicode:["1f69f"],fname:"1f69f",uc:"1f69f",isCanonical:!0},":mountain_cableway:":{unicode:["1f6a0"],fname:"1f6a0",uc:"1f6a0",isCanonical:!0},":aerial_tramway:":{unicode:["1f6a1"],fname:"1f6a1",uc:"1f6a1",isCanonical:!0},":rowboat:":{unicode:["1f6a3"],fname:"1f6a3",uc:"1f6a3",isCanonical:!0},":vertical_traffic_light:":{unicode:["1f6a6"],fname:"1f6a6",uc:"1f6a6",isCanonical:!0},":put_litter_in_its_place:":{unicode:["1f6ae"],fname:"1f6ae",uc:"1f6ae",isCanonical:!0},":do_not_litter:":{unicode:["1f6af"],fname:"1f6af",uc:"1f6af",isCanonical:!0},":potable_water:":{unicode:["1f6b0"],fname:"1f6b0",uc:"1f6b0",isCanonical:!0},":non-potable_water:":{unicode:["1f6b1"],fname:"1f6b1",uc:"1f6b1",isCanonical:!0},":no_bicycles:":{unicode:["1f6b3"],fname:"1f6b3",uc:"1f6b3",isCanonical:!0},":bicyclist:":{unicode:["1f6b4"],fname:"1f6b4",uc:"1f6b4",isCanonical:!0},":mountain_bicyclist:":{unicode:["1f6b5"],fname:"1f6b5",uc:"1f6b5",isCanonical:!0},":no_pedestrians:":{unicode:["1f6b7"],fname:"1f6b7",uc:"1f6b7",isCanonical:!0},":children_crossing:":{unicode:["1f6b8"],fname:"1f6b8",uc:"1f6b8",isCanonical:!0},":shower:":{unicode:["1f6bf"],fname:"1f6bf",uc:"1f6bf",isCanonical:!0},":bathtub:":{unicode:["1f6c1"],fname:"1f6c1",uc:"1f6c1",isCanonical:!0},":passport_control:":{unicode:["1f6c2"],fname:"1f6c2",uc:"1f6c2",isCanonical:!0},":customs:":{unicode:["1f6c3"],fname:"1f6c3",uc:"1f6c3",isCanonical:!0},":baggage_claim:":{unicode:["1f6c4"],fname:"1f6c4",uc:"1f6c4",isCanonical:!0},":left_luggage:":{unicode:["1f6c5"],fname:"1f6c5",uc:"1f6c5",isCanonical:!0},":earth_africa:":{unicode:["1f30d"],fname:"1f30d",uc:"1f30d",isCanonical:!0},":earth_americas:":{unicode:["1f30e"],fname:"1f30e",uc:"1f30e",isCanonical:!0},":globe_with_meridians:":{unicode:["1f310"],fname:"1f310",uc:"1f310",isCanonical:!0},":waxing_crescent_moon:":{unicode:["1f312"],fname:"1f312",uc:"1f312",isCanonical:!0},":waning_gibbous_moon:":{unicode:["1f316"],fname:"1f316",uc:"1f316",isCanonical:!0},":last_quarter_moon:":{unicode:["1f317"],fname:"1f317",uc:"1f317",isCanonical:!0},":waning_crescent_moon:":{unicode:["1f318"],fname:"1f318",uc:"1f318",isCanonical:!0},":new_moon_with_face:":{unicode:["1f31a"],fname:"1f31a",uc:"1f31a",isCanonical:!0},":last_quarter_moon_with_face:":{unicode:["1f31c"],fname:"1f31c",uc:"1f31c",isCanonical:!0},":full_moon_with_face:":{unicode:["1f31d"],fname:"1f31d",uc:"1f31d",isCanonical:!0},":sun_with_face:":{unicode:["1f31e"],fname:"1f31e",uc:"1f31e",isCanonical:!0},":evergreen_tree:":{unicode:["1f332"],fname:"1f332",uc:"1f332",isCanonical:!0},":deciduous_tree:":{unicode:["1f333"],fname:"1f333",uc:"1f333",isCanonical:!0},":lemon:":{unicode:["1f34b"],fname:"1f34b",uc:"1f34b",isCanonical:!0},":pear:":{unicode:["1f350"],fname:"1f350",uc:"1f350",isCanonical:!0},":baby_bottle:":{unicode:["1f37c"],fname:"1f37c",uc:"1f37c",isCanonical:!0},":horse_racing:":{unicode:["1f3c7"],fname:"1f3c7",uc:"1f3c7",isCanonical:!0},":rugby_football:":{unicode:["1f3c9"],fname:"1f3c9",uc:"1f3c9",isCanonical:!0},":european_post_office:":{unicode:["1f3e4"],fname:"1f3e4",uc:"1f3e4",isCanonical:!0},":rat:":{unicode:["1f400"],fname:"1f400",uc:"1f400",isCanonical:!0},":mouse2:":{unicode:["1f401"],fname:"1f401",uc:"1f401",isCanonical:!0},":ox:":{unicode:["1f402"],fname:"1f402",uc:"1f402",isCanonical:!0},":water_buffalo:":{unicode:["1f403"],fname:"1f403",uc:"1f403",isCanonical:!0},":cow2:":{unicode:["1f404"],fname:"1f404",uc:"1f404",isCanonical:!0},":tiger2:":{unicode:["1f405"],fname:"1f405",uc:"1f405",isCanonical:!0},":leopard:":{unicode:["1f406"],fname:"1f406",uc:"1f406",isCanonical:!0},":rabbit2:":{unicode:["1f407"],fname:"1f407",uc:"1f407",isCanonical:!0},":cat2:":{unicode:["1f408"],fname:"1f408",uc:"1f408",isCanonical:!0},":dragon:":{unicode:["1f409"],fname:"1f409",uc:"1f409",isCanonical:!0},":crocodile:":{unicode:["1f40a"],fname:"1f40a",uc:"1f40a",isCanonical:!0},":whale2:":{unicode:["1f40b"],fname:"1f40b",uc:"1f40b",isCanonical:!0},":ram:":{unicode:["1f40f"],fname:"1f40f",uc:"1f40f",isCanonical:!0},":goat:":{unicode:["1f410"],fname:"1f410",uc:"1f410",isCanonical:!0},":rooster:":{unicode:["1f413"],fname:"1f413",uc:"1f413",isCanonical:!0},":dog2:":{unicode:["1f415"],fname:"1f415",uc:"1f415",isCanonical:!0},":pig2:":{unicode:["1f416"],fname:"1f416",uc:"1f416",isCanonical:!0},":dromedary_camel:":{unicode:["1f42a"],fname:"1f42a",uc:"1f42a",isCanonical:!0},":busts_in_silhouette:":{unicode:["1f465"],fname:"1f465",uc:"1f465",isCanonical:!0},":two_men_holding_hands:":{unicode:["1f46c"],fname:"1f46c",uc:"1f46c",isCanonical:!0},":two_women_holding_hands:":{unicode:["1f46d"],fname:"1f46d",uc:"1f46d",isCanonical:!0},":thought_balloon:":{unicode:["1f4ad"],fname:"1f4ad",uc:"1f4ad",isCanonical:!0},":euro:":{unicode:["1f4b6"],fname:"1f4b6",uc:"1f4b6",isCanonical:!0},":pound:":{unicode:["1f4b7"],fname:"1f4b7",uc:"1f4b7",isCanonical:!0},":mailbox_with_mail:":{unicode:["1f4ec"],fname:"1f4ec",uc:"1f4ec",isCanonical:!0},":mailbox_with_no_mail:":{unicode:["1f4ed"],fname:"1f4ed",uc:"1f4ed",isCanonical:!0},":postal_horn:":{unicode:["1f4ef"],fname:"1f4ef",uc:"1f4ef",isCanonical:!0},":no_mobile_phones:":{unicode:["1f4f5"],fname:"1f4f5",uc:"1f4f5",isCanonical:!0},":twisted_rightwards_arrows:":{unicode:["1f500"],fname:"1f500",uc:"1f500",isCanonical:!0},":repeat:":{unicode:["1f501"],fname:"1f501",uc:"1f501",isCanonical:!0},":repeat_one:":{unicode:["1f502"],fname:"1f502",uc:"1f502",isCanonical:!0},":arrows_counterclockwise:":{unicode:["1f504"],fname:"1f504",uc:"1f504",isCanonical:!0},":low_brightness:":{unicode:["1f505"],fname:"1f505",uc:"1f505",isCanonical:!0},":high_brightness:":{unicode:["1f506"],fname:"1f506",uc:"1f506",isCanonical:!0},":mute:":{unicode:["1f507"],fname:"1f507",uc:"1f507",isCanonical:!0},":sound:":{unicode:["1f509"],fname:"1f509",uc:"1f509",isCanonical:!0},":no_bell:":{unicode:["1f515"],fname:"1f515",uc:"1f515",isCanonical:!0},":microscope:":{unicode:["1f52c"],fname:"1f52c",uc:"1f52c",isCanonical:!0},":telescope:":{unicode:["1f52d"],fname:"1f52d",uc:"1f52d",isCanonical:!0},":clock130:":{unicode:["1f55c"],fname:"1f55c",uc:"1f55c",isCanonical:!0},":clock230:":{unicode:["1f55d"],fname:"1f55d",uc:"1f55d",isCanonical:!0},":clock330:":{unicode:["1f55e"],fname:"1f55e",uc:"1f55e",isCanonical:!0},":clock430:":{unicode:["1f55f"],fname:"1f55f",uc:"1f55f",isCanonical:!0},":clock530:":{unicode:["1f560"],fname:"1f560",uc:"1f560",isCanonical:!0},":clock630:":{unicode:["1f561"],fname:"1f561",uc:"1f561",isCanonical:!0},":clock730:":{unicode:["1f562"],fname:"1f562",uc:"1f562",isCanonical:!0},":clock830:":{unicode:["1f563"],fname:"1f563",uc:"1f563",isCanonical:!0},":clock930:":{unicode:["1f564"],fname:"1f564",uc:"1f564",isCanonical:!0},":clock1030:":{unicode:["1f565"],fname:"1f565",uc:"1f565",isCanonical:!0},":clock1130:":{unicode:["1f566"],fname:"1f566",uc:"1f566",isCanonical:!0},":clock1230:":{unicode:["1f567"],fname:"1f567",uc:"1f567",isCanonical:!0},":speaker:":{unicode:["1f508"],fname:"1f508",uc:"1f508",isCanonical:!0},":train:":{unicode:["1f68b"],fname:"1f68b",uc:"1f68b",isCanonical:!0},":medal:":{unicode:["1f3c5"],fname:"1f3c5",uc:"1f3c5",isCanonical:!0},":sports_medal:":{unicode:["1f3c5"],fname:"1f3c5",uc:"1f3c5",isCanonical:!1},":flag_black:":{unicode:["1f3f4"],fname:"1f3f4",uc:"1f3f4",isCanonical:!0},":waving_black_flag:":{unicode:["1f3f4"],fname:"1f3f4",uc:"1f3f4",isCanonical:!1},":camera_with_flash:":{unicode:["1f4f8"],fname:"1f4f8",uc:"1f4f8",isCanonical:!0},":sleeping_accommodation:":{unicode:["1f6cc"],fname:"1f6cc",uc:"1f6cc",isCanonical:!0},":middle_finger:":{unicode:["1f595"],fname:"1f595",uc:"1f595",isCanonical:!0},":reversed_hand_with_middle_finger_extended:":{unicode:["1f595"],fname:"1f595",uc:"1f595",isCanonical:!1},":vulcan:":{unicode:["1f596"],fname:"1f596",uc:"1f596",isCanonical:!0},":raised_hand_with_part_between_middle_and_ring_fingers:":{unicode:["1f596"],fname:"1f596",uc:"1f596",isCanonical:!1},":slight_frown:":{unicode:["1f641"],fname:"1f641",uc:"1f641",isCanonical:!0},":slightly_frowning_face:":{unicode:["1f641"],fname:"1f641",uc:"1f641",isCanonical:!1},":slight_smile:":{unicode:["1f642"],fname:"1f642",uc:"1f642",isCanonical:!0},":slightly_smiling_face:":{unicode:["1f642"],fname:"1f642",uc:"1f642",isCanonical:!1},":airplane_departure:":{unicode:["1f6eb"],fname:"1f6eb",uc:"1f6eb",isCanonical:!0},":airplane_arriving:":{unicode:["1f6ec"],fname:"1f6ec",uc:"1f6ec",isCanonical:!0},":tone1:":{unicode:["1f3fb"],fname:"1f3fb",uc:"1f3fb",isCanonical:!0},":tone2:":{unicode:["1f3fc"],fname:"1f3fc",uc:"1f3fc",isCanonical:!0},":tone3:":{unicode:["1f3fd"],fname:"1f3fd",uc:"1f3fd",isCanonical:!0},":tone4:":{unicode:["1f3fe"],fname:"1f3fe",uc:"1f3fe",isCanonical:!0},":tone5:":{unicode:["1f3ff"],fname:"1f3ff",uc:"1f3ff",isCanonical:!0},":upside_down:":{unicode:["1f643"],fname:"1f643",uc:"1f643",isCanonical:!0},":upside_down_face:":{unicode:["1f643"],fname:"1f643",uc:"1f643",isCanonical:!1},":money_mouth:":{unicode:["1f911"],fname:"1f911",uc:"1f911",isCanonical:!0},":money_mouth_face:":{unicode:["1f911"],fname:"1f911",uc:"1f911",isCanonical:!1},":nerd:":{unicode:["1f913"],fname:"1f913",uc:"1f913",isCanonical:!0},":nerd_face:":{unicode:["1f913"],fname:"1f913",uc:"1f913",isCanonical:!1},":hugging:":{unicode:["1f917"],fname:"1f917",uc:"1f917",isCanonical:!0},":hugging_face:":{unicode:["1f917"],fname:"1f917",uc:"1f917",isCanonical:!1},":rolling_eyes:":{unicode:["1f644"],fname:"1f644",uc:"1f644",isCanonical:!0},":face_with_rolling_eyes:":{unicode:["1f644"],fname:"1f644",uc:"1f644",isCanonical:!1},":thinking:":{unicode:["1f914"],fname:"1f914",uc:"1f914",isCanonical:!0},":thinking_face:":{unicode:["1f914"],fname:"1f914",uc:"1f914",isCanonical:!1},":zipper_mouth:":{unicode:["1f910"],fname:"1f910",uc:"1f910",isCanonical:!0},":zipper_mouth_face:":{unicode:["1f910"],fname:"1f910",uc:"1f910",isCanonical:!1},":thermometer_face:":{unicode:["1f912"],fname:"1f912",uc:"1f912",isCanonical:!0},":face_with_thermometer:":{unicode:["1f912"],fname:"1f912",uc:"1f912",isCanonical:!1},":head_bandage:":{unicode:["1f915"],fname:"1f915",uc:"1f915",isCanonical:!0},":face_with_head_bandage:":{unicode:["1f915"],fname:"1f915",uc:"1f915",isCanonical:!1},":robot:":{unicode:["1f916"],fname:"1f916",uc:"1f916",isCanonical:!0},":robot_face:":{unicode:["1f916"],fname:"1f916",uc:"1f916",isCanonical:!1},":lion_face:":{unicode:["1f981"],fname:"1f981",uc:"1f981",isCanonical:!0},":lion:":{unicode:["1f981"],fname:"1f981",uc:"1f981",isCanonical:!1},":unicorn:":{unicode:["1f984"],fname:"1f984",uc:"1f984",isCanonical:!0},":unicorn_face:":{unicode:["1f984"],fname:"1f984",uc:"1f984",isCanonical:!1},":scorpion:":{unicode:["1f982"],fname:"1f982",uc:"1f982",isCanonical:!0},":crab:":{unicode:["1f980"],fname:"1f980",uc:"1f980",isCanonical:!0},":turkey:":{unicode:["1f983"],fname:"1f983",uc:"1f983",isCanonical:!0},":cheese:":{unicode:["1f9c0"],fname:"1f9c0",uc:"1f9c0",isCanonical:!0},":cheese_wedge:":{unicode:["1f9c0"],fname:"1f9c0",uc:"1f9c0",isCanonical:!1},":hotdog:":{unicode:["1f32d"],fname:"1f32d",uc:"1f32d",isCanonical:!0},":hot_dog:":{unicode:["1f32d"],fname:"1f32d",uc:"1f32d",isCanonical:!1},":taco:":{unicode:["1f32e"],fname:"1f32e",uc:"1f32e",isCanonical:!0},":burrito:":{unicode:["1f32f"],fname:"1f32f",uc:"1f32f",isCanonical:!0},":popcorn:":{unicode:["1f37f"],fname:"1f37f",uc:"1f37f",isCanonical:!0},":champagne:":{unicode:["1f37e"],fname:"1f37e",uc:"1f37e",isCanonical:!0},":bottle_with_popping_cork:":{unicode:["1f37e"],fname:"1f37e",uc:"1f37e",isCanonical:!1},":bow_and_arrow:":{unicode:["1f3f9"],fname:"1f3f9",uc:"1f3f9",isCanonical:!0},":archery:":{unicode:["1f3f9"],fname:"1f3f9",uc:"1f3f9",isCanonical:!1},":amphora:":{unicode:["1f3fa"],fname:"1f3fa",uc:"1f3fa",isCanonical:!0},":place_of_worship:":{unicode:["1f6d0"],fname:"1f6d0",uc:"1f6d0",isCanonical:!0},":worship_symbol:":{unicode:["1f6d0"],fname:"1f6d0",uc:"1f6d0",isCanonical:!1},":kaaba:":{unicode:["1f54b"],fname:"1f54b",uc:"1f54b",isCanonical:!0},":mosque:":{unicode:["1f54c"],fname:"1f54c",uc:"1f54c",isCanonical:!0},":synagogue:":{unicode:["1f54d"],fname:"1f54d",uc:"1f54d",isCanonical:!0},":menorah:":{unicode:["1f54e"],fname:"1f54e",uc:"1f54e",isCanonical:!0},":prayer_beads:":{unicode:["1f4ff"],fname:"1f4ff",uc:"1f4ff",isCanonical:!0},":cricket:":{unicode:["1f3cf"],fname:"1f3cf",uc:"1f3cf",isCanonical:!0},":cricket_bat_ball:":{unicode:["1f3cf"],fname:"1f3cf",uc:"1f3cf",isCanonical:!1},":volleyball:":{unicode:["1f3d0"],fname:"1f3d0",uc:"1f3d0",isCanonical:!0},":field_hockey:":{unicode:["1f3d1"],fname:"1f3d1",uc:"1f3d1",isCanonical:!0},":hockey:":{unicode:["1f3d2"],fname:"1f3d2",uc:"1f3d2",isCanonical:!0},":ping_pong:":{unicode:["1f3d3"],fname:"1f3d3",uc:"1f3d3",isCanonical:!0},":table_tennis:":{unicode:["1f3d3"],fname:"1f3d3",uc:"1f3d3",isCanonical:!1},":badminton:":{unicode:["1f3f8"],fname:"1f3f8",uc:"1f3f8",isCanonical:!0},":drum:":{unicode:["1f941"],fname:"1f941",uc:"1f941",isCanonical:!0},":drum_with_drumsticks:":{unicode:["1f941"],fname:"1f941",uc:"1f941",isCanonical:!1},":shrimp:":{unicode:["1f990"],fname:"1f990",uc:"1f990",isCanonical:!0},":squid:":{unicode:["1f991"],fname:"1f991",uc:"1f991",isCanonical:!0},":egg:":{unicode:["1f95a"],fname:"1f95a",uc:"1f95a",isCanonical:!0},":milk:":{unicode:["1f95b"],fname:"1f95b",uc:"1f95b",isCanonical:!0},":glass_of_milk:":{unicode:["1f95b"],fname:"1f95b",uc:"1f95b",isCanonical:!1},":peanuts:":{unicode:["1f95c"],fname:"1f95c",uc:"1f95c",isCanonical:!0},":shelled_peanut:":{unicode:["1f95c"],fname:"1f95c",uc:"1f95c",isCanonical:!1},":kiwi:":{unicode:["1f95d"],fname:"1f95d",uc:"1f95d",isCanonical:!0},":kiwifruit:":{unicode:["1f95d"],fname:"1f95d",uc:"1f95d",isCanonical:!1},":pancakes:":{unicode:["1f95e"],fname:"1f95e",uc:"1f95e",isCanonical:!0},":regional_indicator_w:":{unicode:["1f1fc"],fname:"1f1fc",uc:"1f1fc",isCanonical:!0},":regional_indicator_v:":{unicode:["1f1fb"],fname:"1f1fb",uc:"1f1fb",isCanonical:!0},":regional_indicator_u:":{unicode:["1f1fa"],fname:"1f1fa",uc:"1f1fa",isCanonical:!0},":regional_indicator_t:":{unicode:["1f1f9"],fname:"1f1f9",uc:"1f1f9",isCanonical:!0},":regional_indicator_s:":{unicode:["1f1f8"],fname:"1f1f8",uc:"1f1f8",isCanonical:!0},":regional_indicator_r:":{unicode:["1f1f7"],fname:"1f1f7",uc:"1f1f7",isCanonical:!0},":regional_indicator_q:":{unicode:["1f1f6"],fname:"1f1f6",uc:"1f1f6",isCanonical:!0},":regional_indicator_p:":{unicode:["1f1f5"],fname:"1f1f5",uc:"1f1f5",isCanonical:!0},":regional_indicator_o:":{unicode:["1f1f4"],fname:"1f1f4",uc:"1f1f4",isCanonical:!0},":regional_indicator_n:":{unicode:["1f1f3"],fname:"1f1f3",uc:"1f1f3",isCanonical:!0},":regional_indicator_m:":{unicode:["1f1f2"],fname:"1f1f2",uc:"1f1f2",isCanonical:!0},":regional_indicator_l:":{unicode:["1f1f1"],fname:"1f1f1",uc:"1f1f1",isCanonical:!0},":regional_indicator_k:":{unicode:["1f1f0"],fname:"1f1f0",uc:"1f1f0",isCanonical:!0},":regional_indicator_j:":{unicode:["1f1ef"],fname:"1f1ef",uc:"1f1ef",isCanonical:!0},":regional_indicator_i:":{unicode:["1f1ee"],fname:"1f1ee",uc:"1f1ee",isCanonical:!0},":regional_indicator_h:":{unicode:["1f1ed"],fname:"1f1ed",uc:"1f1ed",isCanonical:!0},":regional_indicator_g:":{unicode:["1f1ec"],fname:"1f1ec",uc:"1f1ec",isCanonical:!0},":regional_indicator_f:":{unicode:["1f1eb"],fname:"1f1eb",uc:"1f1eb",isCanonical:!0},":regional_indicator_e:":{unicode:["1f1ea"],fname:"1f1ea",uc:"1f1ea",isCanonical:!0},":regional_indicator_d:":{unicode:["1f1e9"],fname:"1f1e9",uc:"1f1e9",isCanonical:!0},":regional_indicator_c:":{unicode:["1f1e8"],fname:"1f1e8",uc:"1f1e8",isCanonical:!0},":regional_indicator_b:":{unicode:["1f1e7"],fname:"1f1e7",uc:"1f1e7",isCanonical:!0},":regional_indicator_a:":{unicode:["1f1e6"],fname:"1f1e6",uc:"1f1e6",isCanonical:!0},":fast_forward:":{unicode:["23e9"],fname:"23e9",uc:"23e9",isCanonical:!0},":rewind:":{unicode:["23ea"],fname:"23ea",uc:"23ea",isCanonical:!0},":arrow_double_up:":{unicode:["23eb"],fname:"23eb",uc:"23eb",isCanonical:!0},":arrow_double_down:":{unicode:["23ec"],fname:"23ec",uc:"23ec",isCanonical:!0},":alarm_clock:":{unicode:["23f0"],fname:"23f0",uc:"23f0",isCanonical:!0},":hourglass_flowing_sand:":{unicode:["23f3"],fname:"23f3",uc:"23f3",isCanonical:!0},":ophiuchus:":{unicode:["26ce"],fname:"26ce",uc:"26ce",isCanonical:!0},":white_check_mark:":{unicode:["2705"],fname:"2705",uc:"2705",isCanonical:!0},":fist:":{unicode:["270a"],fname:"270a",uc:"270a",isCanonical:!0},":raised_hand:":{unicode:["270b"],fname:"270b",uc:"270b",isCanonical:!0},":sparkles:":{unicode:["2728"],fname:"2728",uc:"2728",isCanonical:!0},":x:":{unicode:["274c"],fname:"274c",uc:"274c",isCanonical:!0},":negative_squared_cross_mark:":{unicode:["274e"],fname:"274e",uc:"274e",isCanonical:!0},":question:":{unicode:["2753"],fname:"2753",uc:"2753",isCanonical:!0},":grey_question:":{unicode:["2754"],fname:"2754",uc:"2754",isCanonical:!0},":grey_exclamation:":{unicode:["2755"],fname:"2755",uc:"2755",isCanonical:!0},":heavy_plus_sign:":{unicode:["2795"],fname:"2795",uc:"2795",isCanonical:!0},":heavy_minus_sign:":{unicode:["2796"],fname:"2796",uc:"2796",isCanonical:!0},":heavy_division_sign:":{unicode:["2797"],fname:"2797",uc:"2797",isCanonical:!0},":curly_loop:":{unicode:["27b0"],fname:"27b0",uc:"27b0",isCanonical:!0},":loop:":{unicode:["27bf"],fname:"27bf",uc:"27bf",isCanonical:!0}};var t,n=[];for(t in e.emojioneList)e.emojioneList.hasOwnProperty(t)&&n.push(t.replace(/[+]/g,"\\$&"));e.shortnames=n.join("|"),e.asciiList={"<3":"2764","</3":"1f494",":')":"1f602",":'-)":"1f602",":D":"1f603",":-D":"1f603","=D":"1f603",":)":"1f642",":-)":"1f642","=]":"1f642","=)":"1f642",":]":"1f642","':)":"1f605","':-)":"1f605","'=)":"1f605","':D":"1f605","':-D":"1f605","'=D":"1f605",">:)":"1f606",">;)":"1f606",">:-)":"1f606",">=)":"1f606",";)":"1f609",";-)":"1f609","*-)":"1f609","*)":"1f609",";-]":"1f609",";]":"1f609",";D":"1f609",";^)":"1f609","':(":"1f613","':-(":"1f613","'=(":"1f613",":*":"1f618",":-*":"1f618","=*":"1f618",":^*":"1f618",">:P":"1f61c","X-P":"1f61c","x-p":"1f61c",">:[":"1f61e",":-(":"1f61e",":(":"1f61e",":-[":"1f61e",":[":"1f61e","=(":"1f61e",">:(":"1f620",">:-(":"1f620",":@":"1f620",":'(":"1f622",":'-(":"1f622",";(":"1f622",";-(":"1f622",">.<":"1f623","D:":"1f628",":$":"1f633","=$":"1f633","#-)":"1f635","#)":"1f635","%-)":"1f635","%)":"1f635","X)":"1f635","X-)":"1f635","*\\0/*":"1f646","\\0/":"1f646","*\\O/*":"1f646","\\O/":"1f646","O:-)":"1f607","0:-3":"1f607","0:3":"1f607","0:-)":"1f607","0:)":"1f607","0;^)":"1f607","O:)":"1f607","O;-)":"1f607","O=)":"1f607","0;-)":"1f607","O:-3":"1f607","O:3":"1f607","B-)":"1f60e","B)":"1f60e","8)":"1f60e","8-)":"1f60e","B-D":"1f60e","8-D":"1f60e","-_-":"1f611","-__-":"1f611","-___-":"1f611",">:\\":"1f615",">:/":"1f615",":-/":"1f615",":-.":"1f615",":/":"1f615",":\\":"1f615","=/":"1f615","=\\":"1f615",":L":"1f615","=L":"1f615",":P":"1f61b",":-P":"1f61b","=P":"1f61b",":-p":"1f61b",":p":"1f61b","=p":"1f61b",":-Þ":"1f61b",":Þ":"1f61b",":þ":"1f61b",":-þ":"1f61b",":-b":"1f61b",":b":"1f61b","d:":"1f61b",":-O":"1f62e",":O":"1f62e",":-o":"1f62e",":o":"1f62e",O_O:"1f62e",">:O":"1f62e",":-X":"1f636",":X":"1f636",":-#":"1f636",":#":"1f636","=X":"1f636","=x":"1f636",":x":"1f636",":-x":"1f636","=#":"1f636"},e.asciiRegexp="(\\<3|<3|\\<\\/3|<\\/3|\\:'\\)|\\:'\\-\\)|\\:D|\\:\\-D|\\=D|\\:\\)|\\:\\-\\)|\\=\\]|\\=\\)|\\:\\]|'\\:\\)|'\\:\\-\\)|'\\=\\)|'\\:D|'\\:\\-D|'\\=D|\\>\\:\\)|>\\:\\)|\\>;\\)|>;\\)|\\>\\:\\-\\)|>\\:\\-\\)|\\>\\=\\)|>\\=\\)|;\\)|;\\-\\)|\\*\\-\\)|\\*\\)|;\\-\\]|;\\]|;D|;\\^\\)|'\\:\\(|'\\:\\-\\(|'\\=\\(|\\:\\*|\\:\\-\\*|\\=\\*|\\:\\^\\*|\\>\\:P|>\\:P|X\\-P|x\\-p|\\>\\:\\[|>\\:\\[|\\:\\-\\(|\\:\\(|\\:\\-\\[|\\:\\[|\\=\\(|\\>\\:\\(|>\\:\\(|\\>\\:\\-\\(|>\\:\\-\\(|\\:@|\\:'\\(|\\:'\\-\\(|;\\(|;\\-\\(|\\>\\.\\<|>\\.<|D\\:|\\:\\$|\\=\\$|#\\-\\)|#\\)|%\\-\\)|%\\)|X\\)|X\\-\\)|\\*\\\\0\\/\\*|\\\\0\\/|\\*\\\\O\\/\\*|\\\\O\\/|O\\:\\-\\)|0\\:\\-3|0\\:3|0\\:\\-\\)|0\\:\\)|0;\\^\\)|O\\:\\-\\)|O\\:\\)|O;\\-\\)|O\\=\\)|0;\\-\\)|O\\:\\-3|O\\:3|B\\-\\)|B\\)|8\\)|8\\-\\)|B\\-D|8\\-D|\\-_\\-|\\-__\\-|\\-___\\-|\\>\\:\\\\|>\\:\\\\|\\>\\:\\/|>\\:\\/|\\:\\-\\/|\\:\\-\\.|\\:\\/|\\:\\\\|\\=\\/|\\=\\\\|\\:L|\\=L|\\:P|\\:\\-P|\\=P|\\:\\-p|\\:p|\\=p|\\:\\-Þ|\\:\\-Þ|\\:Þ|\\:Þ|\\:þ|\\:þ|\\:\\-þ|\\:\\-þ|\\:\\-b|\\:b|d\\:|\\:\\-O|\\:O|\\:\\-o|\\:o|O_O|\\>\\:O|>\\:O|\\:\\-X|\\:X|\\:\\-#|\\:#|\\=X|\\=x|\\:x|\\:\\-x|\\=#)",e.unicodeRegexp="(\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\u2764\\uFE0F\\u200D\\uD83D\\uDC8B\\u200D\\uD83D\\uDC69|\\uD83D\\uDC68\\u200D\\u2764\\uFE0F\\u200D\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68|\\uD83D\\uDC68\\u200D\\uD83D\\uDC68\\u200D\\uD83D\\uDC67\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D\\uD83D\\uDC67|\\uD83D\\uDC68\\u200D\\uD83D\\uDC68\\u200D\\uD83D\\uDC67\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D\\uD83D\\uDC66|\\uD83D\\uDC68\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC68\\u200D\\uD83D\\uDC68\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC68\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D\\uD83D\\uDC66|\\uD83D\\uDC68\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u200D\\u2764\\uFE0F\\u200D\\uD83D\\uDC69|\\uD83D\\uDC68\\uD83D\\uDC69\\uD83D\\uDC67\\uD83D\\uDC66|\\uD83D\\uDC68\\uD83D\\uDC69\\uD83D\\uDC66\\uD83D\\uDC66|\\uD83D\\uDC69\\uD83D\\uDC69\\uD83D\\uDC66\\uD83D\\uDC66|\\uD83D\\uDC68\\uD83D\\uDC68\\uD83D\\uDC67\\uD83D\\uDC67|\\uD83D\\uDC69\\uD83D\\uDC69\\uD83D\\uDC67\\uD83D\\uDC66|\\uD83D\\uDC68\\uD83D\\uDC68\\uD83D\\uDC67\\uD83D\\uDC66|\\uD83D\\uDC69\\uD83D\\uDC69\\uD83D\\uDC67\\uD83D\\uDC67|\\uD83D\\uDC68\\uD83D\\uDC69\\uD83D\\uDC67\\uD83D\\uDC67|\\uD83D\\uDC68\\uD83D\\uDC68\\uD83D\\uDC66\\uD83D\\uDC66|\\uD83D\\uDC68\\u200D\\u2764\\uFE0F\\u200D\\uD83D\\uDC68|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83D\\uDC68\\u200D\\uD83D\\uDC68\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC68\\u200D\\uD83D\\uDC68\\u200D\\uD83D\\uDC67|\\uD83D\\uDC68\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u2764\\uD83D\\uDC8B\\uD83D\\uDC69|\\uD83D\\uDC68\\u2764\\uD83D\\uDC8B\\uD83D\\uDC68|\\uD83D\\uDC68\\uD83D\\uDC68\\uD83D\\uDC67|\\uD83D\\uDC68\\uD83D\\uDC68\\uD83D\\uDC66|\\uD83D\\uDC69\\uD83D\\uDC69\\uD83D\\uDC66|\\uD83D\\uDC69\\uD83D\\uDC69\\uD83D\\uDC67|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC68\\uD83D\\uDC69\\uD83D\\uDC67|\\uD83D\\uDC68\\u2764\\uD83D\\uDC68|\\uD83D\\uDC41\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69\\u2764\\uD83D\\uDC69|\\uD83D\\uDC41\\uD83D\\uDDE8|\\uD83C\\uDDE6\\uD83C\\uDDE8|\\uD83C\\uDDE6\\uD83C\\uDDE9|\\uD83C\\uDDE6\\uD83C\\uDDEA|\\uD83C\\uDDE6\\uD83C\\uDDEB|\\uD83C\\uDDE6\\uD83C\\uDDEC|\\uD83C\\uDDE6\\uD83C\\uDDEE|\\uD83C\\uDDE6\\uD83C\\uDDF1|\\uD83C\\uDDE6\\uD83C\\uDDF2|\\uD83C\\uDDE6\\uD83C\\uDDF4|\\uD83C\\uDDE6\\uD83C\\uDDF6|\\uD83C\\uDDE6\\uD83C\\uDDF7|\\uD83C\\uDDE6\\uD83C\\uDDF8|\\uD83E\\uDD3E\\uD83C\\uDFFF|\\uD83E\\uDD3E\\uD83C\\uDFFE|\\uD83E\\uDD3E\\uD83C\\uDFFD|\\uD83E\\uDD3E\\uD83C\\uDFFC|\\uD83E\\uDD3E\\uD83C\\uDFFB|\\uD83E\\uDD3D\\uD83C\\uDFFF|\\uD83E\\uDD3D\\uD83C\\uDFFE|\\uD83E\\uDD3D\\uD83C\\uDFFD|\\uD83E\\uDD3D\\uD83C\\uDFFC|\\uD83E\\uDD3D\\uD83C\\uDFFB|\\uD83E\\uDD3C\\uD83C\\uDFFF|\\uD83E\\uDD3C\\uD83C\\uDFFE|\\uD83E\\uDD3C\\uD83C\\uDFFD|\\uD83E\\uDD3C\\uD83C\\uDFFC|\\uD83E\\uDD3C\\uD83C\\uDFFB|\\uD83E\\uDD39\\uD83C\\uDFFF|\\uD83E\\uDD39\\uD83C\\uDFFE|\\uD83E\\uDD39\\uD83C\\uDFFD|\\uD83E\\uDD39\\uD83C\\uDFFC|\\uD83E\\uDD39\\uD83C\\uDFFB|\\uD83E\\uDD38\\uD83C\\uDFFF|\\uD83E\\uDD38\\uD83C\\uDFFE|\\uD83E\\uDD38\\uD83C\\uDFFD|\\uD83E\\uDD38\\uD83C\\uDFFC|\\uD83E\\uDD38\\uD83C\\uDFFB|\\uD83E\\uDD37\\uD83C\\uDFFF|\\uD83E\\uDD37\\uD83C\\uDFFE|\\uD83E\\uDD37\\uD83C\\uDFFD|\\uD83E\\uDD37\\uD83C\\uDFFC|\\uD83E\\uDD37\\uD83C\\uDFFB|\\uD83E\\uDD36\\uD83C\\uDFFF|\\uD83E\\uDD36\\uD83C\\uDFFE|\\uD83E\\uDD36\\uD83C\\uDFFD|\\uD83E\\uDD36\\uD83C\\uDFFC|\\uD83E\\uDD36\\uD83C\\uDFFB|\\uD83E\\uDD35\\uD83C\\uDFFF|\\uD83E\\uDD35\\uD83C\\uDFFE|\\uD83E\\uDD35\\uD83C\\uDFFD|\\uD83E\\uDD35\\uD83C\\uDFFC|\\uD83E\\uDD35\\uD83C\\uDFFB|\\uD83E\\uDD34\\uD83C\\uDFFF|\\uD83E\\uDD34\\uD83C\\uDFFE|\\uD83E\\uDD34\\uD83C\\uDFFD|\\uD83E\\uDD34\\uD83C\\uDFFC|\\uD83E\\uDD34\\uD83C\\uDFFB|\\uD83E\\uDD33\\uD83C\\uDFFF|\\uD83E\\uDD33\\uD83C\\uDFFE|\\uD83E\\uDD33\\uD83C\\uDFFD|\\uD83E\\uDD33\\uD83C\\uDFFC|\\uD83E\\uDD33\\uD83C\\uDFFB|\\uD83E\\uDD30\\uD83C\\uDFFF|\\uD83E\\uDD30\\uD83C\\uDFFE|\\uD83E\\uDD30\\uD83C\\uDFFD|\\uD83E\\uDD30\\uD83C\\uDFFC|\\uD83E\\uDD30\\uD83C\\uDFFB|\\uD83E\\uDD26\\uD83C\\uDFFF|\\uD83E\\uDD26\\uD83C\\uDFFE|\\uD83E\\uDD26\\uD83C\\uDFFD|\\uD83E\\uDD26\\uD83C\\uDFFC|\\uD83E\\uDD26\\uD83C\\uDFFB|\\uD83E\\uDD1E\\uD83C\\uDFFF|\\uD83E\\uDD1E\\uD83C\\uDFFE|\\uD83E\\uDD1E\\uD83C\\uDFFD|\\uD83E\\uDD1E\\uD83C\\uDFFC|\\uD83E\\uDD1E\\uD83C\\uDFFB|\\uD83E\\uDD1D\\uD83C\\uDFFF|\\uD83E\\uDD1D\\uD83C\\uDFFE|\\uD83E\\uDD1D\\uD83C\\uDFFD|\\uD83E\\uDD1D\\uD83C\\uDFFC|\\uD83E\\uDD1D\\uD83C\\uDFFB|\\uD83E\\uDD1C\\uD83C\\uDFFF|\\uD83E\\uDD1C\\uD83C\\uDFFE|\\uD83E\\uDD1C\\uD83C\\uDFFD|\\uD83E\\uDD1C\\uD83C\\uDFFC|\\uD83E\\uDD1C\\uD83C\\uDFFB|\\uD83E\\uDD1B\\uD83C\\uDFFF|\\uD83E\\uDD1B\\uD83C\\uDFFE|\\uD83E\\uDD1B\\uD83C\\uDFFD|\\uD83E\\uDD1B\\uD83C\\uDFFC|\\uD83E\\uDD1B\\uD83C\\uDFFB|\\uD83E\\uDD1A\\uD83C\\uDFFF|\\uD83E\\uDD1A\\uD83C\\uDFFE|\\uD83E\\uDD1A\\uD83C\\uDFFD|\\uD83E\\uDD1A\\uD83C\\uDFFC|\\uD83E\\uDD1A\\uD83C\\uDFFB|\\uD83E\\uDD19\\uD83C\\uDFFF|\\uD83E\\uDD19\\uD83C\\uDFFE|\\uD83E\\uDD19\\uD83C\\uDFFD|\\uD83E\\uDD19\\uD83C\\uDFFC|\\uD83E\\uDD19\\uD83C\\uDFFB|\\uD83E\\uDD18\\uD83C\\uDFFF|\\uD83E\\uDD18\\uD83C\\uDFFE|\\uD83E\\uDD18\\uD83C\\uDFFD|\\uD83E\\uDD18\\uD83C\\uDFFC|\\uD83E\\uDD18\\uD83C\\uDFFB|\\uD83D\\uDEC0\\uD83C\\uDFFF|\\uD83D\\uDEC0\\uD83C\\uDFFE|\\uD83D\\uDEC0\\uD83C\\uDFFD|\\uD83D\\uDEC0\\uD83C\\uDFFC|\\uD83D\\uDEC0\\uD83C\\uDFFB|\\uD83D\\uDEB6\\uD83C\\uDFFF|\\uD83D\\uDEB6\\uD83C\\uDFFE|\\uD83D\\uDEB6\\uD83C\\uDFFD|\\uD83D\\uDEB6\\uD83C\\uDFFC|\\uD83D\\uDEB6\\uD83C\\uDFFB|\\uD83D\\uDEB5\\uD83C\\uDFFF|\\uD83D\\uDEB5\\uD83C\\uDFFE|\\uD83D\\uDEB5\\uD83C\\uDFFD|\\uD83D\\uDEB5\\uD83C\\uDFFC|\\uD83D\\uDEB5\\uD83C\\uDFFB|\\uD83D\\uDEB4\\uD83C\\uDFFF|\\uD83D\\uDEB4\\uD83C\\uDFFE|\\uD83D\\uDEB4\\uD83C\\uDFFD|\\uD83D\\uDEB4\\uD83C\\uDFFC|\\uD83D\\uDEB4\\uD83C\\uDFFB|\\uD83D\\uDEA3\\uD83C\\uDFFF|\\uD83D\\uDEA3\\uD83C\\uDFFE|\\uD83D\\uDEA3\\uD83C\\uDFFD|\\uD83D\\uDEA3\\uD83C\\uDFFC|\\uD83D\\uDEA3\\uD83C\\uDFFB|\\uD83D\\uDE4F\\uD83C\\uDFFF|\\uD83D\\uDE4F\\uD83C\\uDFFE|\\uD83D\\uDE4F\\uD83C\\uDFFD|\\uD83D\\uDE4F\\uD83C\\uDFFC|\\uD83D\\uDE4F\\uD83C\\uDFFB|\\uD83D\\uDE4E\\uD83C\\uDFFF|\\uD83D\\uDE4E\\uD83C\\uDFFE|\\uD83D\\uDE4E\\uD83C\\uDFFD|\\uD83D\\uDE4E\\uD83C\\uDFFC|\\uD83D\\uDE4E\\uD83C\\uDFFB|\\uD83D\\uDE4D\\uD83C\\uDFFF|\\uD83D\\uDE4D\\uD83C\\uDFFE|\\uD83D\\uDE4D\\uD83C\\uDFFD|\\uD83D\\uDE4D\\uD83C\\uDFFC|\\uD83D\\uDE4D\\uD83C\\uDFFB|\\uD83D\\uDE4C\\uD83C\\uDFFF|\\uD83D\\uDE4C\\uD83C\\uDFFE|\\uD83D\\uDE4C\\uD83C\\uDFFD|\\uD83D\\uDE4C\\uD83C\\uDFFC|\\uD83D\\uDE4C\\uD83C\\uDFFB|\\uD83D\\uDE4B\\uD83C\\uDFFF|\\uD83D\\uDE4B\\uD83C\\uDFFE|\\uD83D\\uDE4B\\uD83C\\uDFFD|\\uD83D\\uDE4B\\uD83C\\uDFFC|\\uD83D\\uDE4B\\uD83C\\uDFFB|\\uD83D\\uDE47\\uD83C\\uDFFF|\\uD83D\\uDE47\\uD83C\\uDFFE|\\uD83D\\uDE47\\uD83C\\uDFFD|\\uD83D\\uDE47\\uD83C\\uDFFC|\\uD83D\\uDE47\\uD83C\\uDFFB|\\uD83D\\uDE46\\uD83C\\uDFFF|\\uD83D\\uDE46\\uD83C\\uDFFE|\\uD83D\\uDE46\\uD83C\\uDFFD|\\uD83D\\uDE46\\uD83C\\uDFFC|\\uD83D\\uDE46\\uD83C\\uDFFB|\\uD83D\\uDE45\\uD83C\\uDFFF|\\uD83D\\uDE45\\uD83C\\uDFFE|\\uD83D\\uDE45\\uD83C\\uDFFD|\\uD83D\\uDE45\\uD83C\\uDFFC|\\uD83D\\uDE45\\uD83C\\uDFFB|\\uD83D\\uDD96\\uD83C\\uDFFF|\\uD83D\\uDD96\\uD83C\\uDFFE|\\uD83D\\uDD96\\uD83C\\uDFFD|\\uD83D\\uDD96\\uD83C\\uDFFC|\\uD83D\\uDD96\\uD83C\\uDFFB|\\uD83D\\uDD95\\uD83C\\uDFFF|\\uD83D\\uDD95\\uD83C\\uDFFE|\\uD83D\\uDD95\\uD83C\\uDFFD|\\uD83D\\uDD95\\uD83C\\uDFFC|\\uD83D\\uDD95\\uD83C\\uDFFB|\\uD83D\\uDD90\\uD83C\\uDFFF|\\uD83D\\uDD90\\uD83C\\uDFFE|\\uD83D\\uDD90\\uD83C\\uDFFD|\\uD83D\\uDD90\\uD83C\\uDFFC|\\uD83D\\uDD90\\uD83C\\uDFFB|\\uD83D\\uDD7A\\uD83C\\uDFFF|\\uD83D\\uDD7A\\uD83C\\uDFFE|\\uD83D\\uDD7A\\uD83C\\uDFFD|\\uD83D\\uDD7A\\uD83C\\uDFFC|\\uD83D\\uDD7A\\uD83C\\uDFFB|\\uD83D\\uDD75\\uD83C\\uDFFF|\\uD83D\\uDD75\\uD83C\\uDFFE|\\uD83D\\uDD75\\uD83C\\uDFFD|\\uD83D\\uDD75\\uD83C\\uDFFC|\\uD83D\\uDD75\\uD83C\\uDFFB|\\uD83D\\uDCAA\\uD83C\\uDFFF|\\uD83D\\uDCAA\\uD83C\\uDFFE|\\uD83D\\uDCAA\\uD83C\\uDFFD|\\uD83D\\uDCAA\\uD83C\\uDFFC|\\uD83D\\uDCAA\\uD83C\\uDFFB|\\uD83D\\uDC87\\uD83C\\uDFFF|\\uD83D\\uDC87\\uD83C\\uDFFE|\\uD83D\\uDC87\\uD83C\\uDFFD|\\uD83D\\uDC87\\uD83C\\uDFFC|\\uD83D\\uDC87\\uD83C\\uDFFB|\\uD83D\\uDC86\\uD83C\\uDFFF|\\uD83D\\uDC86\\uD83C\\uDFFE|\\uD83D\\uDC86\\uD83C\\uDFFD|\\uD83D\\uDC86\\uD83C\\uDFFC|\\uD83D\\uDC86\\uD83C\\uDFFB|\\uD83D\\uDC85\\uD83C\\uDFFF|\\uD83D\\uDC85\\uD83C\\uDFFE|\\uD83D\\uDC85\\uD83C\\uDFFD|\\uD83D\\uDC85\\uD83C\\uDFFC|\\uD83D\\uDC85\\uD83C\\uDFFB|\\uD83D\\uDC83\\uD83C\\uDFFF|\\uD83D\\uDC83\\uD83C\\uDFFE|\\uD83D\\uDC83\\uD83C\\uDFFD|\\uD83D\\uDC83\\uD83C\\uDFFC|\\uD83D\\uDC83\\uD83C\\uDFFB|\\uD83D\\uDC82\\uD83C\\uDFFF|\\uD83D\\uDC82\\uD83C\\uDFFE|\\uD83D\\uDC82\\uD83C\\uDFFD|\\uD83D\\uDC82\\uD83C\\uDFFC|\\uD83D\\uDC82\\uD83C\\uDFFB|\\uD83D\\uDC81\\uD83C\\uDFFF|\\uD83D\\uDC81\\uD83C\\uDFFE|\\uD83D\\uDC81\\uD83C\\uDFFD|\\uD83D\\uDC81\\uD83C\\uDFFC|\\uD83D\\uDC81\\uD83C\\uDFFB|\\uD83D\\uDC7C\\uD83C\\uDFFF|\\uD83D\\uDC7C\\uD83C\\uDFFE|\\uD83D\\uDC7C\\uD83C\\uDFFD|\\uD83D\\uDC7C\\uD83C\\uDFFC|\\uD83D\\uDC7C\\uD83C\\uDFFB|\\uD83D\\uDC78\\uD83C\\uDFFF|\\uD83D\\uDC78\\uD83C\\uDFFE|\\uD83D\\uDC78\\uD83C\\uDFFD|\\uD83D\\uDC78\\uD83C\\uDFFC|\\uD83D\\uDC78\\uD83C\\uDFFB|\\uD83D\\uDC77\\uD83C\\uDFFF|\\uD83D\\uDC77\\uD83C\\uDFFE|\\uD83D\\uDC77\\uD83C\\uDFFD|\\uD83D\\uDC77\\uD83C\\uDFFC|\\uD83D\\uDC77\\uD83C\\uDFFB|\\uD83D\\uDC76\\uD83C\\uDFFF|\\uD83D\\uDC76\\uD83C\\uDFFE|\\uD83D\\uDC76\\uD83C\\uDFFD|\\uD83D\\uDC76\\uD83C\\uDFFC|\\uD83D\\uDC76\\uD83C\\uDFFB|\\uD83D\\uDC75\\uD83C\\uDFFF|\\uD83D\\uDC75\\uD83C\\uDFFE|\\uD83D\\uDC75\\uD83C\\uDFFD|\\uD83D\\uDC75\\uD83C\\uDFFC|\\uD83D\\uDC75\\uD83C\\uDFFB|\\uD83D\\uDC74\\uD83C\\uDFFF|\\uD83D\\uDC74\\uD83C\\uDFFE|\\uD83D\\uDC74\\uD83C\\uDFFD|\\uD83D\\uDC74\\uD83C\\uDFFC|\\uD83D\\uDC74\\uD83C\\uDFFB|\\uD83D\\uDC73\\uD83C\\uDFFF|\\uD83D\\uDC73\\uD83C\\uDFFE|\\uD83D\\uDC73\\uD83C\\uDFFD|\\uD83D\\uDC73\\uD83C\\uDFFC|\\uD83D\\uDC73\\uD83C\\uDFFB|\\uD83D\\uDC72\\uD83C\\uDFFF|\\uD83D\\uDC72\\uD83C\\uDFFE|\\uD83D\\uDC72\\uD83C\\uDFFD|\\uD83D\\uDC72\\uD83C\\uDFFC|\\uD83D\\uDC72\\uD83C\\uDFFB|\\uD83D\\uDC71\\uD83C\\uDFFF|\\uD83D\\uDC71\\uD83C\\uDFFE|\\uD83D\\uDC71\\uD83C\\uDFFD|\\uD83D\\uDC71\\uD83C\\uDFFC|\\uD83D\\uDC71\\uD83C\\uDFFB|\\uD83D\\uDC70\\uD83C\\uDFFF|\\uD83D\\uDC70\\uD83C\\uDFFE|\\uD83D\\uDC70\\uD83C\\uDFFD|\\uD83D\\uDC70\\uD83C\\uDFFC|\\uD83D\\uDC70\\uD83C\\uDFFB|\\uD83D\\uDC6E\\uD83C\\uDFFF|\\uD83D\\uDC6E\\uD83C\\uDFFE|\\uD83D\\uDC6E\\uD83C\\uDFFD|\\uD83D\\uDC6E\\uD83C\\uDFFC|\\uD83D\\uDC6E\\uD83C\\uDFFB|\\uD83D\\uDC69\\uD83C\\uDFFF|\\uD83D\\uDC69\\uD83C\\uDFFE|\\uD83D\\uDC69\\uD83C\\uDFFD|\\uD83D\\uDC69\\uD83C\\uDFFC|\\uD83D\\uDC69\\uD83C\\uDFFB|\\uD83D\\uDC68\\uD83C\\uDFFF|\\uD83D\\uDC68\\uD83C\\uDFFE|\\uD83D\\uDC68\\uD83C\\uDFFD|\\uD83D\\uDC68\\uD83C\\uDFFC|\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83D\\uDC67\\uD83C\\uDFFF|\\uD83D\\uDC67\\uD83C\\uDFFE|\\uD83D\\uDC67\\uD83C\\uDFFD|\\uD83D\\uDC67\\uD83C\\uDFFC|\\uD83D\\uDC67\\uD83C\\uDFFB|\\uD83D\\uDC66\\uD83C\\uDFFF|\\uD83D\\uDC66\\uD83C\\uDFFE|\\uD83D\\uDC66\\uD83C\\uDFFD|\\uD83D\\uDC66\\uD83C\\uDFFC|\\uD83D\\uDC66\\uD83C\\uDFFB|\\uD83D\\uDC50\\uD83C\\uDFFF|\\uD83D\\uDC50\\uD83C\\uDFFE|\\uD83D\\uDC50\\uD83C\\uDFFD|\\uD83D\\uDC50\\uD83C\\uDFFC|\\uD83D\\uDC50\\uD83C\\uDFFB|\\uD83D\\uDC4F\\uD83C\\uDFFF|\\uD83D\\uDC4F\\uD83C\\uDFFE|\\uD83D\\uDC4F\\uD83C\\uDFFD|\\uD83D\\uDC4F\\uD83C\\uDFFC|\\uD83D\\uDC4F\\uD83C\\uDFFB|\\uD83D\\uDC4E\\uD83C\\uDFFF|\\uD83D\\uDC4E\\uD83C\\uDFFE|\\uD83D\\uDC4E\\uD83C\\uDFFD|\\uD83D\\uDC4E\\uD83C\\uDFFC|\\uD83D\\uDC4E\\uD83C\\uDFFB|\\uD83D\\uDC4D\\uD83C\\uDFFF|\\uD83D\\uDC4D\\uD83C\\uDFFE|\\uD83D\\uDC4D\\uD83C\\uDFFD|\\uD83D\\uDC4D\\uD83C\\uDFFC|\\uD83D\\uDC4D\\uD83C\\uDFFB|\\uD83D\\uDC4C\\uD83C\\uDFFF|\\uD83D\\uDC4C\\uD83C\\uDFFE|\\uD83D\\uDC4C\\uD83C\\uDFFD|\\uD83D\\uDC4C\\uD83C\\uDFFC|\\uD83D\\uDC4C\\uD83C\\uDFFB|\\uD83D\\uDC4B\\uD83C\\uDFFF|\\uD83D\\uDC4B\\uD83C\\uDFFE|\\uD83D\\uDC4B\\uD83C\\uDFFD|\\uD83D\\uDC4B\\uD83C\\uDFFC|\\uD83D\\uDC4B\\uD83C\\uDFFB|\\uD83D\\uDC4A\\uD83C\\uDFFF|\\uD83D\\uDC4A\\uD83C\\uDFFE|\\uD83D\\uDC4A\\uD83C\\uDFFD|\\uD83D\\uDC4A\\uD83C\\uDFFC|\\uD83D\\uDC4A\\uD83C\\uDFFB|\\uD83D\\uDC49\\uD83C\\uDFFF|\\uD83D\\uDC49\\uD83C\\uDFFE|\\uD83D\\uDC49\\uD83C\\uDFFD|\\uD83D\\uDC49\\uD83C\\uDFFC|\\uD83D\\uDC49\\uD83C\\uDFFB|\\uD83D\\uDC48\\uD83C\\uDFFF|\\uD83D\\uDC48\\uD83C\\uDFFE|\\uD83D\\uDC48\\uD83C\\uDFFD|\\uD83D\\uDC48\\uD83C\\uDFFC|\\uD83D\\uDC48\\uD83C\\uDFFB|\\uD83D\\uDC47\\uD83C\\uDFFF|\\uD83D\\uDC47\\uD83C\\uDFFE|\\uD83D\\uDC47\\uD83C\\uDFFD|\\uD83D\\uDC47\\uD83C\\uDFFC|\\uD83D\\uDC47\\uD83C\\uDFFB|\\uD83D\\uDC46\\uD83C\\uDFFF|\\uD83D\\uDC46\\uD83C\\uDFFE|\\uD83D\\uDC46\\uD83C\\uDFFD|\\uD83D\\uDC46\\uD83C\\uDFFC|\\uD83D\\uDC46\\uD83C\\uDFFB|\\uD83D\\uDC43\\uD83C\\uDFFF|\\uD83D\\uDC43\\uD83C\\uDFFE|\\uD83D\\uDC43\\uD83C\\uDFFD|\\uD83D\\uDC43\\uD83C\\uDFFC|\\uD83D\\uDC43\\uD83C\\uDFFB|\\uD83D\\uDC42\\uD83C\\uDFFF|\\uD83D\\uDC42\\uD83C\\uDFFE|\\uD83D\\uDC42\\uD83C\\uDFFD|\\uD83D\\uDC42\\uD83C\\uDFFC|\\uD83D\\uDC42\\uD83C\\uDFFB|\\uD83C\\uDFCB\\uD83C\\uDFFF|\\uD83C\\uDFCB\\uD83C\\uDFFE|\\uD83C\\uDFF3\\uD83C\\uDF08|\\uD83C\\uDFCB\\uD83C\\uDFFC|\\uD83C\\uDFCB\\uD83C\\uDFFB|\\uD83C\\uDFCA\\uD83C\\uDFFF|\\uD83C\\uDFCA\\uD83C\\uDFFE|\\uD83C\\uDFCA\\uD83C\\uDFFD|\\uD83C\\uDFCA\\uD83C\\uDFFC|\\uD83C\\uDFCA\\uD83C\\uDFFB|\\uD83C\\uDFC7\\uD83C\\uDFFF|\\uD83C\\uDFC7\\uD83C\\uDFFE|\\uD83C\\uDFC7\\uD83C\\uDFFD|\\uD83C\\uDFC7\\uD83C\\uDFFC|\\uD83C\\uDFC7\\uD83C\\uDFFB|\\uD83C\\uDFC4\\uD83C\\uDFFF|\\uD83C\\uDFCB\\uD83C\\uDFFD|\\uD83C\\uDFC4\\uD83C\\uDFFD|\\uD83C\\uDFC4\\uD83C\\uDFFC|\\uD83C\\uDFC4\\uD83C\\uDFFB|\\uD83C\\uDFC3\\uD83C\\uDFFF|\\uD83C\\uDFC3\\uD83C\\uDFFE|\\uD83C\\uDFC3\\uD83C\\uDFFD|\\uD83C\\uDFC3\\uD83C\\uDFFC|\\uD83C\\uDFC3\\uD83C\\uDFFB|\\uD83C\\uDF85\\uD83C\\uDFFF|\\uD83C\\uDF85\\uD83C\\uDFFE|\\uD83C\\uDF85\\uD83C\\uDFFD|\\uD83C\\uDF85\\uD83C\\uDFFC|\\uD83C\\uDF85\\uD83C\\uDFFB|\\uD83C\\uDDFF\\uD83C\\uDDFC|\\uD83C\\uDDFF\\uD83C\\uDDF2|\\uD83C\\uDDFF\\uD83C\\uDDE6|\\uD83C\\uDDFE\\uD83C\\uDDF9|\\uD83C\\uDDFE\\uD83C\\uDDEA|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDFC\\uD83C\\uDDF8|\\uD83C\\uDDFC\\uD83C\\uDDEB|\\uD83C\\uDDFB\\uD83C\\uDDFA|\\uD83C\\uDDFB\\uD83C\\uDDF3|\\uD83C\\uDDFB\\uD83C\\uDDEE|\\uD83C\\uDDFB\\uD83C\\uDDEC|\\uD83C\\uDDFB\\uD83C\\uDDEA|\\uD83C\\uDDFB\\uD83C\\uDDE8|\\uD83C\\uDDFB\\uD83C\\uDDE6|\\uD83C\\uDDFA\\uD83C\\uDDFF|\\uD83C\\uDDFA\\uD83C\\uDDFE|\\uD83C\\uDDFA\\uD83C\\uDDF8|\\uD83C\\uDDFA\\uD83C\\uDDF2|\\uD83C\\uDDFA\\uD83C\\uDDEC|\\uD83C\\uDDFA\\uD83C\\uDDE6|\\uD83C\\uDDF9\\uD83C\\uDDFF|\\uD83C\\uDDF9\\uD83C\\uDDFC|\\uD83C\\uDDF9\\uD83C\\uDDFB|\\uD83C\\uDDF9\\uD83C\\uDDF9|\\uD83C\\uDDF9\\uD83C\\uDDF7|\\uD83C\\uDDF9\\uD83C\\uDDF4|\\uD83C\\uDDF9\\uD83C\\uDDF3|\\uD83C\\uDDF9\\uD83C\\uDDF2|\\uD83C\\uDDF9\\uD83C\\uDDF1|\\uD83C\\uDDF9\\uD83C\\uDDF0|\\uD83C\\uDDF9\\uD83C\\uDDEF|\\uD83C\\uDDF9\\uD83C\\uDDED|\\uD83C\\uDDF9\\uD83C\\uDDEC|\\uD83C\\uDDF9\\uD83C\\uDDEB|\\uD83C\\uDDF9\\uD83C\\uDDE9|\\uD83C\\uDDF9\\uD83C\\uDDE8|\\uD83C\\uDDF9\\uD83C\\uDDE6|\\uD83C\\uDDF8\\uD83C\\uDDFF|\\uD83C\\uDDF8\\uD83C\\uDDFE|\\uD83C\\uDDF8\\uD83C\\uDDFD|\\uD83C\\uDDF8\\uD83C\\uDDFB|\\uD83C\\uDDF8\\uD83C\\uDDF9|\\uD83C\\uDDF8\\uD83C\\uDDF8|\\uD83C\\uDDF8\\uD83C\\uDDF7|\\uD83C\\uDDF8\\uD83C\\uDDF4|\\uD83C\\uDDF8\\uD83C\\uDDF3|\\uD83C\\uDDF8\\uD83C\\uDDF2|\\uD83C\\uDDF8\\uD83C\\uDDF1|\\uD83C\\uDDF8\\uD83C\\uDDF0|\\uD83C\\uDDF8\\uD83C\\uDDEF|\\uD83C\\uDDF8\\uD83C\\uDDEE|\\uD83C\\uDDF8\\uD83C\\uDDED|\\uD83C\\uDDF8\\uD83C\\uDDEC|\\uD83C\\uDDF8\\uD83C\\uDDEA|\\uD83C\\uDDF8\\uD83C\\uDDE9|\\uD83C\\uDDF8\\uD83C\\uDDE8|\\uD83C\\uDDF8\\uD83C\\uDDE7|\\uD83C\\uDDF8\\uD83C\\uDDE6|\\uD83C\\uDDF7\\uD83C\\uDDFC|\\uD83C\\uDDF7\\uD83C\\uDDFA|\\uD83C\\uDDF7\\uD83C\\uDDF8|\\uD83C\\uDDF7\\uD83C\\uDDF4|\\uD83C\\uDDF7\\uD83C\\uDDEA|\\uD83C\\uDDF6\\uD83C\\uDDE6|\\uD83C\\uDDF5\\uD83C\\uDDFE|\\uD83C\\uDDF5\\uD83C\\uDDFC|\\uD83C\\uDDF5\\uD83C\\uDDF9|\\uD83C\\uDDF5\\uD83C\\uDDF8|\\uD83C\\uDDF5\\uD83C\\uDDF7|\\uD83C\\uDDF5\\uD83C\\uDDF3|\\uD83C\\uDDF5\\uD83C\\uDDF2|\\uD83C\\uDDF5\\uD83C\\uDDF1|\\uD83C\\uDDF5\\uD83C\\uDDF0|\\uD83C\\uDDF5\\uD83C\\uDDED|\\uD83C\\uDDF5\\uD83C\\uDDEC|\\uD83C\\uDDF5\\uD83C\\uDDEB|\\uD83C\\uDDF5\\uD83C\\uDDEA|\\uD83C\\uDDF5\\uD83C\\uDDE6|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF3\\uD83C\\uDDFF|\\uD83C\\uDDF3\\uD83C\\uDDFA|\\uD83C\\uDDF3\\uD83C\\uDDF7|\\uD83C\\uDDF3\\uD83C\\uDDF5|\\uD83C\\uDDF3\\uD83C\\uDDF4|\\uD83C\\uDDF3\\uD83C\\uDDF1|\\uD83C\\uDDF3\\uD83C\\uDDEE|\\uD83C\\uDDF3\\uD83C\\uDDEC|\\uD83C\\uDDF3\\uD83C\\uDDEB|\\uD83C\\uDDF3\\uD83C\\uDDEA|\\uD83C\\uDDF3\\uD83C\\uDDE8|\\uD83C\\uDDF3\\uD83C\\uDDE6|\\uD83C\\uDDF2\\uD83C\\uDDFF|\\uD83C\\uDDF2\\uD83C\\uDDFE|\\uD83C\\uDDF2\\uD83C\\uDDFD|\\uD83C\\uDDF2\\uD83C\\uDDFC|\\uD83C\\uDDF2\\uD83C\\uDDFB|\\uD83C\\uDDF2\\uD83C\\uDDFA|\\uD83C\\uDDF2\\uD83C\\uDDF9|\\uD83C\\uDDF2\\uD83C\\uDDF8|\\uD83C\\uDDF2\\uD83C\\uDDF7|\\uD83C\\uDDF2\\uD83C\\uDDF6|\\uD83C\\uDDF2\\uD83C\\uDDF5|\\uD83C\\uDDF2\\uD83C\\uDDF4|\\uD83C\\uDDF2\\uD83C\\uDDF3|\\uD83C\\uDDF2\\uD83C\\uDDF2|\\uD83C\\uDDF2\\uD83C\\uDDF1|\\uD83C\\uDDF2\\uD83C\\uDDF0|\\uD83C\\uDDF2\\uD83C\\uDDED|\\uD83C\\uDDF2\\uD83C\\uDDEC|\\uD83C\\uDDF2\\uD83C\\uDDEB|\\uD83C\\uDDF2\\uD83C\\uDDEA|\\uD83C\\uDDF2\\uD83C\\uDDE9|\\uD83C\\uDDF2\\uD83C\\uDDE8|\\uD83C\\uDDF2\\uD83C\\uDDE6|\\uD83C\\uDDF1\\uD83C\\uDDFE|\\uD83C\\uDDF1\\uD83C\\uDDFB|\\uD83C\\uDDF1\\uD83C\\uDDFA|\\uD83C\\uDDF1\\uD83C\\uDDF9|\\uD83C\\uDDF1\\uD83C\\uDDF8|\\uD83C\\uDDF1\\uD83C\\uDDF7|\\uD83C\\uDDF1\\uD83C\\uDDF0|\\uD83C\\uDDF1\\uD83C\\uDDEE|\\uD83C\\uDDF1\\uD83C\\uDDE8|\\uD83C\\uDDF1\\uD83C\\uDDE7|\\uD83C\\uDDF1\\uD83C\\uDDE6|\\uD83C\\uDDF0\\uD83C\\uDDFF|\\uD83C\\uDDF0\\uD83C\\uDDFE|\\uD83C\\uDDF0\\uD83C\\uDDFC|\\uD83C\\uDDF0\\uD83C\\uDDF7|\\uD83C\\uDDF0\\uD83C\\uDDF5|\\uD83C\\uDDF0\\uD83C\\uDDF3|\\uD83C\\uDDF0\\uD83C\\uDDF2|\\uD83C\\uDDF0\\uD83C\\uDDEE|\\uD83C\\uDDF0\\uD83C\\uDDED|\\uD83C\\uDDF0\\uD83C\\uDDEC|\\uD83C\\uDDF0\\uD83C\\uDDEA|\\uD83C\\uDDEF\\uD83C\\uDDF5|\\uD83C\\uDDEF\\uD83C\\uDDF4|\\uD83C\\uDDEF\\uD83C\\uDDF2|\\uD83C\\uDDEF\\uD83C\\uDDEA|\\uD83C\\uDDEE\\uD83C\\uDDF9|\\uD83C\\uDDEE\\uD83C\\uDDF8|\\uD83C\\uDDEE\\uD83C\\uDDF7|\\uD83C\\uDDEE\\uD83C\\uDDF6|\\uD83C\\uDDEE\\uD83C\\uDDF4|\\uD83C\\uDDEE\\uD83C\\uDDF3|\\uD83C\\uDDEE\\uD83C\\uDDF2|\\uD83C\\uDDEE\\uD83C\\uDDF1|\\uD83C\\uDDEE\\uD83C\\uDDEA|\\uD83C\\uDDEE\\uD83C\\uDDE9|\\uD83C\\uDDEE\\uD83C\\uDDE8|\\uD83C\\uDDED\\uD83C\\uDDFA|\\uD83C\\uDDED\\uD83C\\uDDF9|\\uD83C\\uDDED\\uD83C\\uDDF7|\\uD83C\\uDDED\\uD83C\\uDDF3|\\uD83C\\uDDED\\uD83C\\uDDF2|\\uD83C\\uDDED\\uD83C\\uDDF0|\\uD83C\\uDDEC\\uD83C\\uDDFE|\\uD83C\\uDDEC\\uD83C\\uDDFC|\\uD83C\\uDDEC\\uD83C\\uDDFA|\\uD83C\\uDDEC\\uD83C\\uDDF9|\\uD83C\\uDDEC\\uD83C\\uDDF8|\\uD83C\\uDDEC\\uD83C\\uDDF7|\\uD83C\\uDDEC\\uD83C\\uDDF6|\\uD83C\\uDDEC\\uD83C\\uDDF5|\\uD83C\\uDDEC\\uD83C\\uDDF3|\\uD83C\\uDDEC\\uD83C\\uDDF2|\\uD83C\\uDDEC\\uD83C\\uDDF1|\\uD83C\\uDDEC\\uD83C\\uDDEE|\\uD83C\\uDDEC\\uD83C\\uDDED|\\uD83C\\uDDEC\\uD83C\\uDDEC|\\uD83C\\uDDEC\\uD83C\\uDDEB|\\uD83C\\uDDEC\\uD83C\\uDDEA|\\uD83C\\uDDEC\\uD83C\\uDDE9|\\uD83C\\uDDEC\\uD83C\\uDDE7|\\uD83C\\uDDEC\\uD83C\\uDDE6|\\uD83C\\uDDEB\\uD83C\\uDDF7|\\uD83C\\uDDEB\\uD83C\\uDDF4|\\uD83C\\uDDEB\\uD83C\\uDDF2|\\uD83C\\uDDEB\\uD83C\\uDDF0|\\uD83C\\uDDEB\\uD83C\\uDDEF|\\uD83C\\uDDEB\\uD83C\\uDDEE|\\uD83C\\uDDEA\\uD83C\\uDDFA|\\uD83C\\uDDEA\\uD83C\\uDDF9|\\uD83C\\uDDEA\\uD83C\\uDDF8|\\uD83C\\uDDEA\\uD83C\\uDDF7|\\uD83C\\uDDEA\\uD83C\\uDDED|\\uD83C\\uDDEA\\uD83C\\uDDEC|\\uD83C\\uDDEA\\uD83C\\uDDEA|\\uD83C\\uDDEA\\uD83C\\uDDE8|\\uD83C\\uDDEA\\uD83C\\uDDE6|\\uD83C\\uDDE9\\uD83C\\uDDFF|\\uD83C\\uDDE9\\uD83C\\uDDF4|\\uD83C\\uDDE9\\uD83C\\uDDF2|\\uD83C\\uDDE9\\uD83C\\uDDF0|\\uD83C\\uDDE9\\uD83C\\uDDEF|\\uD83C\\uDDE9\\uD83C\\uDDEC|\\uD83C\\uDDE9\\uD83C\\uDDEA|\\uD83C\\uDDE8\\uD83C\\uDDFF|\\uD83C\\uDDE8\\uD83C\\uDDFE|\\uD83C\\uDDE8\\uD83C\\uDDFD|\\uD83C\\uDDE8\\uD83C\\uDDFC|\\uD83C\\uDDE8\\uD83C\\uDDFB|\\uD83C\\uDDE8\\uD83C\\uDDFA|\\uD83C\\uDDE8\\uD83C\\uDDF7|\\uD83C\\uDDE8\\uD83C\\uDDF5|\\uD83C\\uDDE8\\uD83C\\uDDF4|\\uD83C\\uDDE8\\uD83C\\uDDF3|\\uD83C\\uDDE8\\uD83C\\uDDF2|\\uD83C\\uDDE8\\uD83C\\uDDF1|\\uD83C\\uDDE8\\uD83C\\uDDF0|\\uD83C\\uDDE8\\uD83C\\uDDEE|\\uD83C\\uDDE8\\uD83C\\uDDED|\\uD83C\\uDDE8\\uD83C\\uDDEC|\\uD83C\\uDDE8\\uD83C\\uDDEB|\\uD83C\\uDDE8\\uD83C\\uDDE9|\\uD83C\\uDDE8\\uD83C\\uDDE8|\\uD83C\\uDDE8\\uD83C\\uDDE6|\\uD83C\\uDDE7\\uD83C\\uDDFF|\\uD83C\\uDDE7\\uD83C\\uDDFE|\\uD83C\\uDDE7\\uD83C\\uDDFC|\\uD83C\\uDDE7\\uD83C\\uDDFB|\\uD83C\\uDDE7\\uD83C\\uDDF9|\\uD83C\\uDDE7\\uD83C\\uDDF8|\\uD83C\\uDDE7\\uD83C\\uDDF7|\\uD83C\\uDDE7\\uD83C\\uDDF6|\\uD83C\\uDDE7\\uD83C\\uDDF4|\\uD83C\\uDDE7\\uD83C\\uDDF3|\\uD83C\\uDDE7\\uD83C\\uDDF2|\\uD83C\\uDDE7\\uD83C\\uDDF1|\\uD83C\\uDDE7\\uD83C\\uDDEF|\\uD83C\\uDDE7\\uD83C\\uDDEE|\\uD83C\\uDDE7\\uD83C\\uDDED|\\uD83C\\uDDE7\\uD83C\\uDDEC|\\uD83C\\uDDE7\\uD83C\\uDDEB|\\uD83C\\uDDE7\\uD83C\\uDDEA|\\uD83C\\uDDE7\\uD83C\\uDDE9|\\uD83C\\uDDE7\\uD83C\\uDDE7|\\uD83C\\uDDE7\\uD83C\\uDDE6|\\uD83C\\uDDE6\\uD83C\\uDDFF|\\uD83C\\uDDE6\\uD83C\\uDDFD|\\uD83C\\uDDE6\\uD83C\\uDDFC|\\uD83C\\uDDE6\\uD83C\\uDDFA|\\uD83C\\uDDE6\\uD83C\\uDDF9|\\uD83C\\uDFC4\\uD83C\\uDFFE|\\uD83D\\uDDE3\\uFE0F|\\u26F9\\uD83C\\uDFFF|\\u26F9\\uD83C\\uDFFE|\\u26F9\\uD83C\\uDFFD|\\u26F9\\uD83C\\uDFFC|\\u26F9\\uD83C\\uDFFB|\\u270D\\uD83C\\uDFFF|\\u270D\\uD83C\\uDFFE|\\u270D\\uD83C\\uDFFD|\\u270D\\uD83C\\uDFFC|\\u270D\\uD83C\\uDFFB|\\uD83C\\uDC04\\uFE0F|\\uD83C\\uDD7F\\uFE0F|\\uD83C\\uDE02\\uFE0F|\\uD83C\\uDE1A\\uFE0F|\\uD83C\\uDE2F\\uFE0F|\\uD83C\\uDE37\\uFE0F|\\uD83C\\uDF9E\\uFE0F|\\uD83C\\uDF9F\\uFE0F|\\uD83C\\uDFCB\\uFE0F|\\uD83C\\uDFCC\\uFE0F|\\uD83C\\uDFCD\\uFE0F|\\uD83C\\uDFCE\\uFE0F|\\uD83C\\uDF96\\uFE0F|\\uD83C\\uDF97\\uFE0F|\\uD83C\\uDF36\\uFE0F|\\uD83C\\uDF27\\uFE0F|\\uD83C\\uDF28\\uFE0F|\\uD83C\\uDF29\\uFE0F|\\uD83C\\uDF2A\\uFE0F|\\uD83C\\uDF2B\\uFE0F|\\uD83C\\uDF2C\\uFE0F|\\uD83D\\uDC3F\\uFE0F|\\uD83D\\uDD77\\uFE0F|\\uD83D\\uDD78\\uFE0F|\\uD83C\\uDF21\\uFE0F|\\uD83C\\uDF99\\uFE0F|\\uD83C\\uDF9A\\uFE0F|\\uD83C\\uDF9B\\uFE0F|\\uD83C\\uDFF3\\uFE0F|\\uD83C\\uDFF5\\uFE0F|\\uD83C\\uDFF7\\uFE0F|\\uD83D\\uDCFD\\uFE0F|\\uD83D\\uDD49\\uFE0F|\\uD83D\\uDD4A\\uFE0F|\\uD83D\\uDD6F\\uFE0F|\\uD83D\\uDD70\\uFE0F|\\uD83D\\uDD73\\uFE0F|\\uD83D\\uDD76\\uFE0F|\\uD83D\\uDD79\\uFE0F|\\uD83D\\uDD87\\uFE0F|\\uD83D\\uDD8A\\uFE0F|\\uD83D\\uDD8B\\uFE0F|\\uD83D\\uDD8C\\uFE0F|\\uD83D\\uDD8D\\uFE0F|\\uD83D\\uDDA5\\uFE0F|\\uD83D\\uDDA8\\uFE0F|\\uD83D\\uDDB2\\uFE0F|\\uD83D\\uDDBC\\uFE0F|\\uD83D\\uDDC2\\uFE0F|\\uD83D\\uDDC3\\uFE0F|\\uD83D\\uDDC4\\uFE0F|\\uD83D\\uDDD1\\uFE0F|\\uD83D\\uDDD2\\uFE0F|\\uD83D\\uDDD3\\uFE0F|\\uD83D\\uDDDC\\uFE0F|\\uD83D\\uDDDD\\uFE0F|\\uD83D\\uDDDE\\uFE0F|\\uD83D\\uDDE1\\uFE0F|\\u270B\\uD83C\\uDFFF|\\uD83D\\uDDE8\\uFE0F|\\uD83D\\uDDEF\\uFE0F|\\uD83D\\uDDF3\\uFE0F|\\uD83D\\uDDFA\\uFE0F|\\uD83D\\uDEE0\\uFE0F|\\uD83D\\uDEE1\\uFE0F|\\uD83D\\uDEE2\\uFE0F|\\uD83D\\uDEF0\\uFE0F|\\uD83C\\uDF7D\\uFE0F|\\uD83D\\uDC41\\uFE0F|\\uD83D\\uDD74\\uFE0F|\\uD83D\\uDD75\\uFE0F|\\uD83D\\uDD90\\uFE0F|\\uD83C\\uDFD4\\uFE0F|\\uD83C\\uDFD5\\uFE0F|\\uD83C\\uDFD6\\uFE0F|\\uD83C\\uDFD7\\uFE0F|\\uD83C\\uDFD8\\uFE0F|\\uD83C\\uDFD9\\uFE0F|\\uD83C\\uDFDA\\uFE0F|\\uD83C\\uDFDB\\uFE0F|\\uD83C\\uDFDC\\uFE0F|\\uD83C\\uDFDD\\uFE0F|\\uD83C\\uDFDE\\uFE0F|\\uD83C\\uDFDF\\uFE0F|\\uD83D\\uDECB\\uFE0F|\\uD83D\\uDECD\\uFE0F|\\uD83D\\uDECE\\uFE0F|\\uD83D\\uDECF\\uFE0F|\\uD83D\\uDEE3\\uFE0F|\\uD83D\\uDEE4\\uFE0F|\\uD83D\\uDEE5\\uFE0F|\\uD83D\\uDEE9\\uFE0F|\\uD83D\\uDEF3\\uFE0F|\\uD83C\\uDF24\\uFE0F|\\uD83C\\uDF25\\uFE0F|\\uD83C\\uDF26\\uFE0F|\\uD83D\\uDDB1\\uFE0F|\\u261D\\uD83C\\uDFFB|\\u261D\\uD83C\\uDFFC|\\u261D\\uD83C\\uDFFD|\\u261D\\uD83C\\uDFFE|\\u261D\\uD83C\\uDFFF|\\u270C\\uD83C\\uDFFB|\\u270C\\uD83C\\uDFFC|\\u270C\\uD83C\\uDFFD|\\u270C\\uD83C\\uDFFE|\\u270C\\uD83C\\uDFFF|\\u270A\\uD83C\\uDFFB|\\u270A\\uD83C\\uDFFC|\\u270A\\uD83C\\uDFFD|\\u270A\\uD83C\\uDFFE|\\u270A\\uD83C\\uDFFF|\\u270B\\uD83C\\uDFFB|\\u270B\\uD83C\\uDFFC|\\u270B\\uD83C\\uDFFD|\\u270B\\uD83C\\uDFFE|\\4\\uFE0F\\u20E3|\\9\\uFE0F\\u20E3|\\0\\uFE0F\\u20E3|\\1\\uFE0F\\u20E3|\\2\\uFE0F\\u20E3|\\3\\uFE0F\\u20E3|\\#\\uFE0F\\u20E3|\\5\\uFE0F\\u20E3|\\6\\uFE0F\\u20E3|\\7\\uFE0F\\u20E3|\\8\\uFE0F\\u20E3|\\*\\uFE0F\\u20E3|\\uD83D\\uDDE1|\\uD83D\\uDD77|\\uD83D\\uDDE3|\\uD83D\\uDEE4|\\uD83D\\uDDE8|\\uD83D\\uDD78|\\uD83D\\uDDEF|\\uD83C\\uDE37|\\uD83D\\uDDF3|\\uD83C\\uDF21|\\uD83D\\uDDFA|\\uD83D\\uDDB1|\\uD83D\\uDEE0|\\uD83C\\uDF99|\\uD83D\\uDEE1|\\uD83C\\uDF9E|\\uD83D\\uDEE2|\\uD83C\\uDF9A|\\uD83D\\uDEF0|\\uD83D\\uDEE3|\\uD83C\\uDF7D|\\uD83C\\uDF9B|\\uD83D\\uDC41|\\uD83C\\uDF9F|\\uD83D\\uDD74|\\uD83C\\uDFF3|\\uD83D\\uDD75|\\uD83D\\uDEF3|\\uD83D\\uDD90|\\uD83C\\uDFF5|\\uD83C\\uDFD4|\\uD83C\\uDFCB|\\uD83C\\uDFD5|\\uD83C\\uDFF7|\\uD83C\\uDFD6|\\uD83D\\uDECF|\\uD83C\\uDFD7|\\uD83D\\uDCFD|\\uD83C\\uDFD8|\\uD83C\\uDFCC|\\uD83C\\uDFD9|\\uD83D\\uDD49|\\uD83C\\uDFDA|\\uD83C\\uDF25|\\uD83C\\uDFDB|\\uD83D\\uDD4A|\\uD83C\\uDFDC|\\uD83C\\uDFCD|\\uD83C\\uDFDD|\\uD83D\\uDD6F|\\uD83C\\uDFDE|\\uD83D\\uDECE|\\uD83C\\uDFDF|\\uD83D\\uDD70|\\uD83D\\uDECB|\\uD83C\\uDFCE|\\uD83D\\uDECD|\\uD83D\\uDD73|\\uD83D\\uDECE|\\uD83D\\uDEE9|\\uD83D\\uDECF|\\uD83D\\uDD76|\\uD83D\\uDEE3|\\uD83C\\uDF96|\\uD83D\\uDEE4|\\uD83D\\uDD79|\\uD83D\\uDEE5|\\uD83D\\uDECD|\\uD83D\\uDEE9|\\uD83D\\uDD87|\\uD83D\\uDEF3|\\uD83C\\uDF97|\\uD83C\\uDF24|\\uD83D\\uDD8A|\\uD83C\\uDF25|\\uD83C\\uDC04|\\uD83C\\uDF26|\\uD83D\\uDD8B|\\uD83D\\uDDB1|\\uD83C\\uDF36|\\uD83D\\uDD8C|\\uD83C\\uDF26|\\uD83D\\uDD8D|\\uD83C\\uDF27|\\uD83D\\uDDA5|\\uD83C\\uDD7F|\\uD83D\\uDDA8|\\uD83C\\uDF28|\\uD83D\\uDDB2|\\uD83D\\uDECB|\\uD83D\\uDDBC|\\uD83C\\uDF29|\\uD83D\\uDDC2|\\uD83C\\uDE02|\\uD83D\\uDDC3|\\uD83C\\uDF2A|\\uD83D\\uDDC4|\\uD83D\\uDEE5|\\uD83D\\uDDD1|\\uD83C\\uDF2B|\\uD83D\\uDDD2|\\uD83C\\uDE1A|\\uD83D\\uDDD3|\\uD83C\\uDF2C|\\uD83D\\uDDDC|\\uD83C\\uDF24|\\uD83D\\uDDDD|\\uD83D\\uDC3F|\\uD83D\\uDDDE|\\u00A9\\uFE0F|\\uD83C\\uDFDF|\\u00AE\\uFE0F|\\uD83C\\uDFDE|\\u203C\\uFE0F|\\uD83C\\uDFDD|\\u2049\\uFE0F|\\uD83C\\uDFDC|\\u2122\\uFE0F|\\uD83C\\uDFDB|\\u2139\\uFE0F|\\uD83C\\uDFDA|\\u2194\\uFE0F|\\uD83C\\uDFD9|\\u2195\\uFE0F|\\uD83C\\uDFD8|\\u2196\\uFE0F|\\uD83C\\uDFD7|\\u2197\\uFE0F|\\uD83C\\uDFD6|\\u2198\\uFE0F|\\uD83C\\uDFD5|\\u2199\\uFE0F|\\uD83C\\uDFD4|\\u21A9\\uFE0F|\\uD83D\\uDD90|\\u21AA\\uFE0F|\\uD83D\\uDD75|\\u231A\\uFE0F|\\uD83D\\uDD74|\\u231B\\uFE0F|\\uD83D\\uDC41|\\u24C2\\uFE0F|\\uD83C\\uDF7D|\\u25AA\\uFE0F|\\uD83D\\uDEF0|\\u25AB\\uFE0F|\\uD83D\\uDEE2|\\u25B6\\uFE0F|\\uD83D\\uDEE1|\\u25C0\\uFE0F|\\uD83D\\uDEE0|\\u25FB\\uFE0F|\\uD83D\\uDDFA|\\u25FC\\uFE0F|\\uD83D\\uDDF3|\\u25FD\\uFE0F|\\uD83D\\uDDEF|\\u25FE\\uFE0F|\\uD83D\\uDDE8|\\u2600\\uFE0F|\\uD83D\\uDDE3|\\u2601\\uFE0F|\\uD83D\\uDDE1|\\u260E\\uFE0F|\\uD83D\\uDDDE|\\u2611\\uFE0F|\\uD83D\\uDDDD|\\u2614\\uFE0F|\\uD83D\\uDDDC|\\u2615\\uFE0F|\\uD83D\\uDDD3|\\u261D\\uFE0F|\\uD83D\\uDDD2|\\u263A\\uFE0F|\\uD83D\\uDDD1|\\u2648\\uFE0F|\\uD83D\\uDDC4|\\u2649\\uFE0F|\\uD83D\\uDDC3|\\u264A\\uFE0F|\\uD83D\\uDDC2|\\u264B\\uFE0F|\\uD83D\\uDDBC|\\u264C\\uFE0F|\\uD83D\\uDDB2|\\u264D\\uFE0F|\\uD83D\\uDDA8|\\u264E\\uFE0F|\\uD83D\\uDDA5|\\u264F\\uFE0F|\\uD83D\\uDD8D|\\u2650\\uFE0F|\\uD83D\\uDD8C|\\u2651\\uFE0F|\\uD83D\\uDD8B|\\u2652\\uFE0F|\\uD83D\\uDD8A|\\u2653\\uFE0F|\\uD83D\\uDD87|\\u2660\\uFE0F|\\uD83D\\uDD79|\\u2663\\uFE0F|\\uD83D\\uDD76|\\u2665\\uFE0F|\\uD83D\\uDD73|\\u2666\\uFE0F|\\uD83D\\uDD70|\\u2668\\uFE0F|\\uD83D\\uDD6F|\\u267B\\uFE0F|\\uD83D\\uDD4A|\\u267F\\uFE0F|\\uD83D\\uDD49|\\u2693\\uFE0F|\\uD83D\\uDCFD|\\u26A0\\uFE0F|\\uD83C\\uDFF7|\\u26A1\\uFE0F|\\uD83C\\uDFF5|\\u26AA\\uFE0F|\\uD83C\\uDFF3|\\u26AB\\uFE0F|\\uD83C\\uDF9B|\\u26BD\\uFE0F|\\uD83C\\uDF9A|\\u26BE\\uFE0F|\\uD83C\\uDF99|\\u26C4\\uFE0F|\\uD83C\\uDF21|\\u26C5\\uFE0F|\\uD83D\\uDD78|\\u26D4\\uFE0F|\\uD83D\\uDD77|\\u26EA\\uFE0F|\\uD83D\\uDC3F|\\uD83C\\uDE2F|\\uD83C\\uDF2C|\\u26F3\\uFE0F|\\uD83C\\uDF2B|\\u26F5\\uFE0F|\\uD83C\\uDF2A|\\u26FA\\uFE0F|\\uD83C\\uDF29|\\u26FD\\uFE0F|\\uD83C\\uDF28|\\u2702\\uFE0F|\\uD83C\\uDF27|\\u2708\\uFE0F|\\uD83C\\uDF36|\\u2709\\uFE0F|\\uD83C\\uDF97|\\u270C\\uFE0F|\\uD83C\\uDF96|\\u270F\\uFE0F|\\uD83C\\uDFCE|\\u2712\\uFE0F|\\uD83C\\uDFCD|\\u2714\\uFE0F|\\uD83C\\uDFCC|\\u2716\\uFE0F|\\uD83C\\uDFCB|\\u2733\\uFE0F|\\uD83C\\uDF9F|\\u2734\\uFE0F|\\uD83C\\uDF9E|\\u2744\\uFE0F|\\uD83C\\uDE37|\\u2747\\uFE0F|\\uD83C\\uDE2F|\\u2757\\uFE0F|\\uD83C\\uDE1A|\\u2764\\uFE0F|\\uD83C\\uDE02|\\u27A1\\uFE0F|\\uD83C\\uDD7F|\\u2934\\uFE0F|\\uD83C\\uDC04|\\u2935\\uFE0F|\\uD83C\\uDDE6|\\u2B05\\uFE0F|\\uD83C\\uDDE7|\\u2B06\\uFE0F|\\uD83C\\uDDE8|\\u2B07\\uFE0F|\\uD83C\\uDDE9|\\u2B1B\\uFE0F|\\uD83C\\uDDEA|\\u2B1C\\uFE0F|\\uD83C\\uDDEB|\\u2B50\\uFE0F|\\uD83C\\uDDEC|\\u2B55\\uFE0F|\\uD83C\\uDDED|\\u3030\\uFE0F|\\uD83C\\uDDEE|\\u303D\\uFE0F|\\uD83C\\uDDEF|\\u3297\\uFE0F|\\uD83C\\uDDF0|\\u3299\\uFE0F|\\uD83C\\uDDF1|\\u271D\\uFE0F|\\uD83C\\uDDF2|\\u2328\\uFE0F|\\uD83C\\uDDF3|\\u270D\\uFE0F|\\uD83C\\uDDF4|\\u23CF\\uFE0F|\\uD83C\\uDDF5|\\u23ED\\uFE0F|\\uD83C\\uDDF6|\\u23EE\\uFE0F|\\uD83C\\uDDF7|\\u23EF\\uFE0F|\\uD83C\\uDDF8|\\u23F1\\uFE0F|\\uD83C\\uDDF9|\\u23F2\\uFE0F|\\uD83C\\uDDFA|\\u23F8\\uFE0F|\\uD83C\\uDDFB|\\u23F9\\uFE0F|\\uD83C\\uDDFC|\\u23FA\\uFE0F|\\uD83E\\uDD5E|\\u2602\\uFE0F|\\uD83E\\uDD5D|\\u2603\\uFE0F|\\uD83E\\uDD5C|\\u2604\\uFE0F|\\uD83E\\uDD5B|\\u2618\\uFE0F|\\uD83E\\uDD5A|\\u2620\\uFE0F|\\uD83E\\uDD91|\\u2622\\uFE0F|\\uD83E\\uDD90|\\u2623\\uFE0F|\\uD83E\\uDD41|\\u2626\\uFE0F|\\uD83C\\uDFF8|\\u262A\\uFE0F|\\uD83C\\uDFD3|\\u262E\\uFE0F|\\uD83C\\uDFD2|\\u262F\\uFE0F|\\uD83C\\uDFD1|\\u2638\\uFE0F|\\uD83C\\uDFD0|\\u2639\\uFE0F|\\uD83C\\uDFCF|\\u2692\\uFE0F|\\uD83D\\uDCFF|\\u2694\\uFE0F|\\uD83D\\uDD4E|\\u2696\\uFE0F|\\uD83D\\uDD4D|\\u2697\\uFE0F|\\uD83D\\uDD4C|\\u2699\\uFE0F|\\uD83D\\uDD4B|\\u269B\\uFE0F|\\uD83D\\uDED0|\\u269C\\uFE0F|\\uD83C\\uDFFA|\\u26B0\\uFE0F|\\uD83C\\uDFF9|\\u26B1\\uFE0F|\\uD83C\\uDF7E|\\u26C8\\uFE0F|\\uD83C\\uDF7F|\\u26CF\\uFE0F|\\uD83C\\uDF2F|\\u26D1\\uFE0F|\\uD83C\\uDF2E|\\u26D3\\uFE0F|\\uD83C\\uDF2D|\\u26E9\\uFE0F|\\uD83E\\uDDC0|\\u26F0\\uFE0F|\\uD83E\\uDD83|\\u26F1\\uFE0F|\\uD83E\\uDD80|\\u26F4\\uFE0F|\\uD83E\\uDD82|\\u26F7\\uFE0F|\\uD83E\\uDD84|\\u26F8\\uFE0F|\\uD83E\\uDD81|\\u26F9\\uFE0F|\\uD83E\\uDD16|\\u2721\\uFE0F|\\uD83E\\uDD15|\\u2763\\uFE0F|\\uD83E\\uDD12|\\uD83E\\uDD49|\\uD83E\\uDD48|\\uD83E\\uDD47|\\uD83E\\uDD3A|\\uD83E\\uDD45|\\uD83E\\uDD3E|\\uD83C\\uDDFF|\\uD83E\\uDD3D|\\uD83E\\uDD4B|\\uD83E\\uDD4A|\\uD83E\\uDD3C|\\uD83E\\uDD39|\\uD83E\\uDD38|\\uD83D\\uDEF6|\\uD83D\\uDEF5|\\uD83D\\uDEF4|\\uD83D\\uDED2|\\uD83C\\uDCCF|\\uD83C\\uDD70|\\uD83C\\uDD71|\\uD83C\\uDD7E|\\uD83D\\uDED1|\\uD83C\\uDD8E|\\uD83C\\uDD91|\\uD83C\\uDDFE|\\uD83C\\uDD92|\\uD83C\\uDD93|\\uD83C\\uDD94|\\uD83C\\uDD95|\\uD83C\\uDD96|\\uD83C\\uDD97|\\uD83C\\uDD98|\\uD83E\\uDD44|\\uD83C\\uDD99|\\uD83C\\uDD9A|\\uD83E\\uDD42|\\uD83E\\uDD43|\\uD83C\\uDE01|\\uD83E\\uDD59|\\uD83C\\uDE32|\\uD83C\\uDE33|\\uD83C\\uDE34|\\uD83C\\uDE35|\\uD83C\\uDE36|\\uD83E\\uDD58|\\uD83C\\uDE38|\\uD83C\\uDE39|\\uD83E\\uDD57|\\uD83C\\uDE3A|\\uD83C\\uDE50|\\uD83C\\uDE51|\\uD83C\\uDF00|\\uD83E\\uDD56|\\uD83C\\uDF01|\\uD83C\\uDF02|\\uD83C\\uDF03|\\uD83C\\uDF04|\\uD83C\\uDF05|\\uD83C\\uDF06|\\uD83E\\uDD55|\\uD83C\\uDF07|\\uD83C\\uDF08|\\uD83E\\uDD54|\\uD83C\\uDF09|\\uD83C\\uDF0A|\\uD83C\\uDF0B|\\uD83C\\uDF0C|\\uD83C\\uDF0F|\\uD83C\\uDF11|\\uD83E\\uDD53|\\uD83C\\uDF13|\\uD83C\\uDF14|\\uD83C\\uDF15|\\uD83C\\uDF19|\\uD83C\\uDF1B|\\uD83C\\uDF1F|\\uD83E\\uDD52|\\uD83C\\uDF20|\\uD83C\\uDF30|\\uD83E\\uDD51|\\uD83C\\uDF31|\\uD83C\\uDF34|\\uD83C\\uDF35|\\uD83C\\uDF37|\\uD83C\\uDF38|\\uD83C\\uDF39|\\uD83C\\uDF3A|\\uD83C\\uDF3B|\\uD83C\\uDF3C|\\uD83C\\uDF3D|\\uD83E\\uDD50|\\uD83C\\uDF3E|\\uD83C\\uDF3F|\\uD83C\\uDF40|\\uD83C\\uDF41|\\uD83C\\uDF42|\\uD83C\\uDF43|\\uD83C\\uDF44|\\uD83C\\uDF45|\\uD83C\\uDF46|\\uD83C\\uDF47|\\uD83C\\uDF48|\\uD83C\\uDF49|\\uD83C\\uDF4A|\\uD83E\\uDD40|\\uD83C\\uDF4C|\\uD83C\\uDF4D|\\uD83C\\uDF4E|\\uD83C\\uDF4F|\\uD83C\\uDF51|\\uD83C\\uDF52|\\uD83C\\uDF53|\\uD83E\\uDD8F|\\uD83C\\uDF54|\\uD83C\\uDF55|\\uD83C\\uDF56|\\uD83E\\uDD8E|\\uD83C\\uDF57|\\uD83C\\uDF58|\\uD83C\\uDF59|\\uD83E\\uDD8D|\\uD83C\\uDF5A|\\uD83C\\uDF5B|\\uD83E\\uDD8C|\\uD83C\\uDF5C|\\uD83C\\uDF5D|\\uD83C\\uDF5E|\\uD83C\\uDF5F|\\uD83E\\uDD8B|\\uD83C\\uDF60|\\uD83C\\uDF61|\\uD83E\\uDD8A|\\uD83C\\uDF62|\\uD83C\\uDF63|\\uD83E\\uDD89|\\uD83C\\uDF64|\\uD83C\\uDF65|\\uD83E\\uDD88|\\uD83C\\uDF66|\\uD83E\\uDD87|\\uD83C\\uDF67|\\uD83C\\uDDFD|\\uD83C\\uDF68|\\uD83E\\uDD86|\\uD83C\\uDF69|\\uD83E\\uDD85|\\uD83C\\uDF6A|\\uD83D\\uDDA4|\\uD83C\\uDF6B|\\uD83C\\uDF6C|\\uD83C\\uDF6D|\\uD83C\\uDF6E|\\uD83C\\uDF6F|\\uD83E\\uDD1E|\\uD83C\\uDF70|\\uD83C\\uDF71|\\uD83C\\uDF72|\\uD83E\\uDD1D|\\uD83C\\uDF73|\\uD83C\\uDF74|\\uD83C\\uDF75|\\uD83C\\uDF76|\\uD83C\\uDF77|\\uD83C\\uDF78|\\uD83C\\uDF79|\\uD83C\\uDF7A|\\uD83C\\uDF7B|\\uD83C\\uDF80|\\uD83C\\uDF81|\\uD83C\\uDF82|\\uD83C\\uDF83|\\uD83E\\uDD1B|\\uD83E\\uDD1C|\\uD83C\\uDF84|\\uD83C\\uDF85|\\uD83C\\uDF86|\\uD83E\\uDD1A|\\uD83C\\uDF87|\\uD83C\\uDF88|\\uD83C\\uDF89|\\uD83C\\uDF8A|\\uD83C\\uDF8B|\\uD83C\\uDF8C|\\uD83E\\uDD19|\\uD83C\\uDF8D|\\uD83D\\uDD7A|\\uD83C\\uDF8E|\\uD83E\\uDD33|\\uD83C\\uDF8F|\\uD83E\\uDD30|\\uD83C\\uDF90|\\uD83E\\uDD26|\\uD83E\\uDD37|\\uD83C\\uDF91|\\uD83C\\uDF92|\\uD83C\\uDF93|\\uD83C\\uDFA0|\\uD83C\\uDFA1|\\uD83C\\uDFA2|\\uD83C\\uDFA3|\\uD83C\\uDFA4|\\uD83C\\uDFA5|\\uD83C\\uDFA6|\\uD83C\\uDFA7|\\uD83E\\uDD36|\\uD83C\\uDFA8|\\uD83E\\uDD35|\\uD83C\\uDFA9|\\uD83C\\uDFAA|\\uD83E\\uDD34|\\uD83C\\uDFAB|\\uD83C\\uDFAC|\\uD83C\\uDFAD|\\uD83E\\uDD27|\\uD83C\\uDFAE|\\uD83C\\uDFAF|\\uD83C\\uDFB0|\\uD83C\\uDFB1|\\uD83C\\uDFB2|\\uD83C\\uDFB3|\\uD83C\\uDFB4|\\uD83E\\uDD25|\\uD83C\\uDFB5|\\uD83C\\uDFB6|\\uD83C\\uDFB7|\\uD83E\\uDD24|\\uD83C\\uDFB8|\\uD83C\\uDFB9|\\uD83C\\uDFBA|\\uD83E\\uDD23|\\uD83C\\uDFBB|\\uD83C\\uDFBC|\\uD83C\\uDFBD|\\uD83E\\uDD22|\\uD83C\\uDFBE|\\uD83C\\uDFBF|\\uD83C\\uDFC0|\\uD83C\\uDFC1|\\uD83E\\uDD21|\\uD83C\\uDFC2|\\uD83C\\uDFC3|\\uD83C\\uDFC4|\\uD83C\\uDFC6|\\uD83C\\uDFC8|\\uD83C\\uDFCA|\\uD83C\\uDFE0|\\uD83C\\uDFE1|\\uD83C\\uDFE2|\\uD83C\\uDFE3|\\uD83C\\uDFE5|\\uD83C\\uDFE6|\\uD83C\\uDFE7|\\uD83C\\uDFE8|\\uD83C\\uDFE9|\\uD83C\\uDFEA|\\uD83C\\uDFEB|\\uD83C\\uDFEC|\\uD83E\\uDD20|\\uD83C\\uDFED|\\uD83C\\uDFEE|\\uD83C\\uDFEF|\\uD83C\\uDFF0|\\uD83D\\uDC0C|\\uD83D\\uDC0D|\\uD83D\\uDC0E|\\uD83D\\uDC11|\\uD83D\\uDC12|\\uD83D\\uDC14|\\uD83D\\uDC17|\\uD83D\\uDC18|\\uD83D\\uDC19|\\uD83D\\uDC1A|\\uD83D\\uDC1B|\\uD83D\\uDC1C|\\uD83D\\uDC1D|\\uD83D\\uDC1E|\\uD83D\\uDC1F|\\uD83D\\uDC20|\\uD83D\\uDC21|\\uD83D\\uDC22|\\uD83D\\uDC23|\\uD83D\\uDC24|\\uD83D\\uDC25|\\uD83D\\uDC26|\\uD83D\\uDC27|\\uD83D\\uDC28|\\uD83D\\uDC29|\\uD83D\\uDC2B|\\uD83D\\uDC2C|\\uD83D\\uDC2D|\\uD83D\\uDC2E|\\uD83D\\uDC2F|\\uD83D\\uDC30|\\uD83D\\uDC31|\\uD83D\\uDC32|\\uD83D\\uDC33|\\uD83D\\uDC34|\\uD83D\\uDC35|\\uD83D\\uDC36|\\uD83D\\uDC37|\\uD83D\\uDC38|\\uD83D\\uDC39|\\uD83D\\uDC3A|\\uD83D\\uDC3B|\\uD83D\\uDC3C|\\uD83D\\uDC3D|\\uD83D\\uDC3E|\\uD83D\\uDC40|\\uD83D\\uDC42|\\uD83D\\uDC43|\\uD83D\\uDC44|\\uD83D\\uDC45|\\uD83D\\uDC46|\\uD83D\\uDC47|\\uD83D\\uDC48|\\uD83D\\uDC49|\\uD83D\\uDC4A|\\uD83D\\uDC4B|\\uD83D\\uDC4C|\\uD83D\\uDC4D|\\uD83D\\uDC4E|\\uD83D\\uDC4F|\\uD83D\\uDC50|\\uD83D\\uDC51|\\uD83D\\uDC52|\\uD83D\\uDC53|\\uD83D\\uDC54|\\uD83D\\uDC55|\\uD83D\\uDC56|\\uD83D\\uDC57|\\uD83D\\uDC58|\\uD83D\\uDC59|\\uD83D\\uDC5A|\\uD83D\\uDC5B|\\uD83D\\uDC5C|\\uD83D\\uDC5D|\\uD83D\\uDC5E|\\uD83D\\uDC5F|\\uD83D\\uDC60|\\uD83D\\uDC61|\\uD83D\\uDC62|\\uD83D\\uDC63|\\uD83D\\uDC64|\\uD83D\\uDC66|\\uD83D\\uDC67|\\uD83D\\uDC68|\\uD83D\\uDC69|\\uD83D\\uDC6A|\\uD83D\\uDC6B|\\uD83D\\uDC6E|\\uD83D\\uDC6F|\\uD83D\\uDC70|\\uD83D\\uDC71|\\uD83D\\uDC72|\\uD83D\\uDC73|\\uD83D\\uDC74|\\uD83D\\uDC75|\\uD83D\\uDC76|\\uD83D\\uDC77|\\uD83D\\uDC78|\\uD83D\\uDC79|\\uD83D\\uDC7A|\\uD83D\\uDC7B|\\uD83D\\uDC7C|\\uD83D\\uDC7D|\\uD83D\\uDC7E|\\uD83D\\uDC7F|\\uD83D\\uDC80|\\uD83D\\uDCC7|\\uD83D\\uDC81|\\uD83D\\uDC82|\\uD83D\\uDC83|\\uD83D\\uDC84|\\uD83D\\uDC85|\\uD83D\\uDCD2|\\uD83D\\uDC86|\\uD83D\\uDCD3|\\uD83D\\uDC87|\\uD83D\\uDCD4|\\uD83D\\uDC88|\\uD83D\\uDCD5|\\uD83D\\uDC89|\\uD83D\\uDCD6|\\uD83D\\uDC8A|\\uD83D\\uDCD7|\\uD83D\\uDC8B|\\uD83D\\uDCD8|\\uD83D\\uDC8C|\\uD83D\\uDCD9|\\uD83D\\uDC8D|\\uD83D\\uDCDA|\\uD83D\\uDC8E|\\uD83D\\uDCDB|\\uD83D\\uDC8F|\\uD83D\\uDCDC|\\uD83D\\uDC90|\\uD83D\\uDCDD|\\uD83D\\uDC91|\\uD83D\\uDCDE|\\uD83D\\uDC92|\\uD83D\\uDCDF|\\uD83D\\uDCE0|\\uD83D\\uDC93|\\uD83D\\uDCE1|\\uD83D\\uDCE2|\\uD83D\\uDC94|\\uD83D\\uDCE3|\\uD83D\\uDCE4|\\uD83D\\uDC95|\\uD83D\\uDCE5|\\uD83D\\uDCE6|\\uD83D\\uDC96|\\uD83D\\uDCE7|\\uD83D\\uDCE8|\\uD83D\\uDC97|\\uD83D\\uDCE9|\\uD83D\\uDCEA|\\uD83D\\uDC98|\\uD83D\\uDCEB|\\uD83D\\uDCEE|\\uD83D\\uDC99|\\uD83D\\uDCF0|\\uD83D\\uDCF1|\\uD83D\\uDC9A|\\uD83D\\uDCF2|\\uD83D\\uDCF3|\\uD83D\\uDC9B|\\uD83D\\uDCF4|\\uD83D\\uDCF6|\\uD83D\\uDC9C|\\uD83D\\uDCF7|\\uD83D\\uDCF9|\\uD83D\\uDC9D|\\uD83D\\uDCFA|\\uD83D\\uDCFB|\\uD83D\\uDC9E|\\uD83D\\uDCFC|\\uD83D\\uDD03|\\uD83D\\uDC9F|\\uD83D\\uDD0A|\\uD83D\\uDD0B|\\uD83D\\uDCA0|\\uD83D\\uDD0C|\\uD83D\\uDD0D|\\uD83D\\uDCA1|\\uD83D\\uDD0E|\\uD83D\\uDD0F|\\uD83D\\uDCA2|\\uD83D\\uDD10|\\uD83D\\uDD11|\\uD83D\\uDCA3|\\uD83D\\uDD12|\\uD83D\\uDD13|\\uD83D\\uDCA4|\\uD83D\\uDD14|\\uD83D\\uDD16|\\uD83D\\uDCA5|\\uD83D\\uDD17|\\uD83D\\uDD18|\\uD83D\\uDCA6|\\uD83D\\uDD19|\\uD83D\\uDD1A|\\uD83D\\uDCA7|\\uD83D\\uDD1B|\\uD83D\\uDD1C|\\uD83D\\uDCA8|\\uD83D\\uDD1D|\\uD83D\\uDD1E|\\uD83D\\uDCA9|\\uD83D\\uDD1F|\\uD83D\\uDCAA|\\uD83D\\uDD20|\\uD83D\\uDD21|\\uD83D\\uDCAB|\\uD83D\\uDD22|\\uD83D\\uDD23|\\uD83D\\uDCAC|\\uD83D\\uDD24|\\uD83D\\uDD25|\\uD83D\\uDCAE|\\uD83D\\uDD26|\\uD83D\\uDD27|\\uD83D\\uDCAF|\\uD83D\\uDD28|\\uD83D\\uDD29|\\uD83D\\uDCB0|\\uD83D\\uDD2A|\\uD83D\\uDD2B|\\uD83D\\uDCB1|\\uD83D\\uDD2E|\\uD83D\\uDCB2|\\uD83D\\uDD2F|\\uD83D\\uDCB3|\\uD83D\\uDD30|\\uD83D\\uDD31|\\uD83D\\uDCB4|\\uD83D\\uDD32|\\uD83D\\uDD33|\\uD83D\\uDCB5|\\uD83D\\uDD34|\\uD83D\\uDD35|\\uD83D\\uDCB8|\\uD83D\\uDD36|\\uD83D\\uDD37|\\uD83D\\uDCB9|\\uD83D\\uDD38|\\uD83D\\uDD39|\\uD83D\\uDCBA|\\uD83D\\uDD3A|\\uD83D\\uDD3B|\\uD83D\\uDCBB|\\uD83D\\uDD3C|\\uD83D\\uDCBC|\\uD83D\\uDD3D|\\uD83D\\uDD50|\\uD83D\\uDCBD|\\uD83D\\uDD51|\\uD83D\\uDCBE|\\uD83D\\uDD52|\\uD83D\\uDCBF|\\uD83D\\uDD53|\\uD83D\\uDCC0|\\uD83D\\uDD54|\\uD83D\\uDD55|\\uD83D\\uDCC1|\\uD83D\\uDD56|\\uD83D\\uDD57|\\uD83D\\uDCC2|\\uD83D\\uDD58|\\uD83D\\uDD59|\\uD83D\\uDCC3|\\uD83D\\uDD5A|\\uD83D\\uDD5B|\\uD83D\\uDCC4|\\uD83D\\uDDFB|\\uD83D\\uDDFC|\\uD83D\\uDCC5|\\uD83D\\uDDFD|\\uD83D\\uDDFE|\\uD83D\\uDCC6|\\uD83D\\uDDFF|\\uD83D\\uDE01|\\uD83D\\uDE02|\\uD83D\\uDE03|\\uD83D\\uDCC8|\\uD83D\\uDE04|\\uD83D\\uDE05|\\uD83D\\uDCC9|\\uD83D\\uDE06|\\uD83D\\uDE09|\\uD83D\\uDCCA|\\uD83D\\uDE0A|\\uD83D\\uDE0B|\\uD83D\\uDCCB|\\uD83D\\uDE0C|\\uD83D\\uDE0D|\\uD83D\\uDCCC|\\uD83D\\uDE0F|\\uD83D\\uDE12|\\uD83D\\uDCCD|\\uD83D\\uDE13|\\uD83D\\uDE14|\\uD83D\\uDCCE|\\uD83D\\uDE16|\\uD83D\\uDE18|\\uD83D\\uDCCF|\\uD83D\\uDE1A|\\uD83D\\uDE1C|\\uD83D\\uDCD0|\\uD83D\\uDE1D|\\uD83D\\uDE1E|\\uD83D\\uDCD1|\\uD83D\\uDE20|\\uD83D\\uDE21|\\uD83D\\uDE22|\\uD83D\\uDE23|\\uD83D\\uDE24|\\uD83D\\uDE25|\\uD83D\\uDE28|\\uD83D\\uDE29|\\uD83D\\uDE2A|\\uD83D\\uDE2B|\\uD83D\\uDE2D|\\uD83D\\uDE30|\\uD83D\\uDE31|\\uD83D\\uDE32|\\uD83D\\uDE33|\\uD83D\\uDE35|\\uD83D\\uDE37|\\uD83D\\uDE38|\\uD83D\\uDE39|\\uD83D\\uDE3A|\\uD83D\\uDE3B|\\uD83D\\uDE3C|\\uD83D\\uDE3D|\\uD83D\\uDE3E|\\uD83D\\uDE3F|\\uD83D\\uDE40|\\uD83D\\uDE45|\\uD83D\\uDE46|\\uD83D\\uDE47|\\uD83D\\uDE48|\\uD83D\\uDE49|\\uD83D\\uDE4A|\\uD83D\\uDE4B|\\uD83D\\uDE4C|\\uD83D\\uDE4D|\\uD83D\\uDE4E|\\uD83D\\uDE4F|\\uD83D\\uDE80|\\uD83D\\uDE83|\\uD83D\\uDE84|\\uD83D\\uDE85|\\uD83D\\uDE87|\\uD83D\\uDE89|\\uD83D\\uDE8C|\\uD83D\\uDE8F|\\uD83D\\uDE91|\\uD83D\\uDE92|\\uD83D\\uDE93|\\uD83D\\uDE95|\\uD83D\\uDE97|\\uD83D\\uDE99|\\uD83D\\uDE9A|\\uD83D\\uDEA2|\\uD83D\\uDEA4|\\uD83D\\uDEA5|\\uD83D\\uDEA7|\\uD83D\\uDEA8|\\uD83D\\uDEA9|\\uD83D\\uDEAA|\\uD83D\\uDEAB|\\uD83D\\uDEAC|\\uD83D\\uDEAD|\\uD83D\\uDEB2|\\uD83D\\uDEB6|\\uD83D\\uDEB9|\\uD83D\\uDEBA|\\uD83D\\uDEBB|\\uD83D\\uDEBC|\\uD83D\\uDEBD|\\uD83D\\uDEBE|\\uD83D\\uDEC0|\\uD83E\\uDD18|\\uD83D\\uDE00|\\uD83D\\uDE07|\\uD83D\\uDE08|\\uD83D\\uDE0E|\\uD83D\\uDE10|\\uD83D\\uDE11|\\uD83D\\uDE15|\\uD83D\\uDE17|\\uD83D\\uDE19|\\uD83D\\uDE1B|\\uD83D\\uDE1F|\\uD83D\\uDE26|\\uD83D\\uDE27|\\uD83D\\uDE2C|\\uD83D\\uDE2E|\\uD83D\\uDE2F|\\uD83D\\uDE34|\\uD83D\\uDE36|\\uD83D\\uDE81|\\uD83D\\uDE82|\\uD83D\\uDE86|\\uD83D\\uDE88|\\uD83D\\uDE8A|\\uD83D\\uDE8D|\\uD83D\\uDE8E|\\uD83D\\uDE90|\\uD83D\\uDE94|\\uD83D\\uDE96|\\uD83D\\uDE98|\\uD83D\\uDE9B|\\uD83D\\uDE9C|\\uD83D\\uDE9D|\\uD83D\\uDE9E|\\uD83D\\uDE9F|\\uD83D\\uDEA0|\\uD83D\\uDEA1|\\uD83D\\uDEA3|\\uD83D\\uDEA6|\\uD83D\\uDEAE|\\uD83D\\uDEAF|\\uD83D\\uDEB0|\\uD83D\\uDEB1|\\uD83D\\uDEB3|\\uD83D\\uDEB4|\\uD83D\\uDEB5|\\uD83D\\uDEB7|\\uD83D\\uDEB8|\\uD83D\\uDEBF|\\uD83D\\uDEC1|\\uD83D\\uDEC2|\\uD83D\\uDEC3|\\uD83D\\uDEC4|\\uD83D\\uDEC5|\\uD83C\\uDF0D|\\uD83C\\uDF0E|\\uD83C\\uDF10|\\uD83C\\uDF12|\\uD83C\\uDF16|\\uD83C\\uDF17|\\uD83C\\uDF18|\\uD83C\\uDF1A|\\uD83C\\uDF1C|\\uD83C\\uDF1D|\\uD83C\\uDF1E|\\uD83C\\uDF32|\\uD83C\\uDF33|\\uD83C\\uDF4B|\\uD83C\\uDF50|\\uD83C\\uDF7C|\\uD83C\\uDFC7|\\uD83C\\uDFC9|\\uD83C\\uDFE4|\\uD83D\\uDC00|\\uD83D\\uDC01|\\uD83D\\uDC02|\\uD83D\\uDC03|\\uD83D\\uDC04|\\uD83D\\uDC05|\\uD83D\\uDC06|\\uD83D\\uDC07|\\uD83D\\uDC08|\\uD83D\\uDC09|\\uD83D\\uDC0A|\\uD83D\\uDC0B|\\uD83D\\uDC0F|\\uD83D\\uDC10|\\uD83D\\uDC13|\\uD83D\\uDC15|\\uD83D\\uDC16|\\uD83D\\uDC2A|\\uD83D\\uDC65|\\uD83D\\uDC6C|\\uD83D\\uDC6D|\\uD83D\\uDCAD|\\uD83D\\uDCB6|\\uD83D\\uDCB7|\\uD83D\\uDCEC|\\uD83D\\uDCED|\\uD83D\\uDCEF|\\uD83D\\uDCF5|\\uD83D\\uDD00|\\uD83D\\uDD01|\\uD83D\\uDD02|\\uD83D\\uDD04|\\uD83D\\uDD05|\\uD83D\\uDD06|\\uD83D\\uDD07|\\uD83D\\uDD09|\\uD83D\\uDD15|\\uD83D\\uDD2C|\\uD83D\\uDD2D|\\uD83D\\uDD5C|\\uD83D\\uDD5D|\\uD83D\\uDD5E|\\uD83D\\uDD5F|\\uD83D\\uDD60|\\uD83D\\uDD61|\\uD83D\\uDD62|\\uD83D\\uDD63|\\uD83D\\uDD64|\\uD83D\\uDD65|\\uD83D\\uDD66|\\uD83D\\uDD67|\\uD83D\\uDD08|\\uD83D\\uDE8B|\\uD83C\\uDFC5|\\uD83C\\uDFF4|\\uD83D\\uDCF8|\\uD83D\\uDECC|\\uD83D\\uDD95|\\uD83D\\uDD96|\\uD83D\\uDE41|\\uD83D\\uDE42|\\uD83D\\uDEEB|\\uD83D\\uDEEC|\\uD83C\\uDFFB|\\uD83C\\uDFFC|\\uD83C\\uDFFD|\\uD83C\\uDFFE|\\uD83C\\uDFFF|\\uD83D\\uDE43|\\uD83E\\uDD11|\\uD83E\\uDD13|\\uD83E\\uDD17|\\uD83D\\uDE44|\\uD83E\\uDD14|\\uD83E\\uDD10|\\u26F2\\uFE0F|\\#\\u20E3|\\9\\u20E3|\\8\\u20E3|\\7\\u20E3|\\6\\u20E3|\\*\\u20E3|\\4\\u20E3|\\3\\u20E3|\\2\\u20E3|\\1\\u20E3|\\0\\u20E3|\\5\\u20E3|\\u26B1|\\u26B0|\\u269C|\\u269B|\\u2699|\\u2697|\\u2696|\\u2694|\\u2692|\\u2639|\\u2638|\\u262F|\\u262E|\\u262A|\\u2626|\\u2623|\\u2622|\\u2620|\\u2618|\\u2604|\\u2603|\\u2602|\\u23FA|\\u23F9|\\u23F8|\\u23F2|\\u23F1|\\u23EF|\\u23EE|\\u23ED|\\u23CF|\\u270D|\\u2328|\\u271D|\\u3299|\\u3297|\\u303D|\\u3030|\\u2B55|\\u2B50|\\u2B1C|\\u2B1B|\\u2B07|\\u2B06|\\u2B05|\\u2935|\\u23E9|\\u23EA|\\u23EB|\\u23EC|\\u23F0|\\u23F3|\\u26CE|\\u2705|\\u270A|\\u270B|\\u2728|\\u274C|\\u274E|\\u2753|\\u2754|\\u2755|\\u2795|\\u2796|\\u2797|\\u27B0|\\u27BF|\\u00A9|\\u00AE|\\u203C|\\u2049|\\u2122|\\u2139|\\u2194|\\u2195|\\u2196|\\u2197|\\u2198|\\u2199|\\u21A9|\\u21AA|\\u231A|\\u231B|\\u24C2|\\u25AA|\\u25AB|\\u25B6|\\u25C0|\\u25FB|\\u25FC|\\u25FD|\\u25FE|\\u2600|\\u2601|\\u260E|\\u2611|\\u2614|\\u2615|\\u261D|\\u263A|\\u2648|\\u2649|\\u264A|\\u264B|\\u264C|\\u264D|\\u264E|\\u264F|\\u2650|\\u2651|\\u2652|\\u2653|\\u2660|\\u2663|\\u2665|\\u2666|\\u2668|\\u267B|\\u267F|\\u2693|\\u26A0|\\u26A1|\\u26AA|\\u26AB|\\u26BD|\\u26BE|\\u26C4|\\u26C5|\\u26D4|\\u26EA|\\u26F2|\\u26F3|\\u26F5|\\u26FA|\\u26FD|\\u2702|\\u2708|\\u2709|\\u270C|\\u270F|\\u2712|\\u2714|\\u2716|\\u2733|\\u2734|\\u2744|\\u2747|\\u2721|\\u2764|\\u27A1|\\u2934|\\u2935|\\u2B05|\\u2B06|\\u2B07|\\u2B1B|\\u2B1C|\\u2B50|\\u2B55|\\u3030|\\u303D|\\u3297|\\u3299|\\u2934|\\u27A1|\\u2764|\\u2757|\\u2747|\\u2744|\\u2734|\\u2733|\\u2716|\\u2714|\\u2712|\\u270F|\\u270C|\\u2709|\\u2708|\\u2702|\\u26FD|\\u26FA|\\u26F5|\\u26F3|\\u26F2|\\u26EA|\\u26D4|\\u26C5|\\u26C4|\\u26BE|\\u26BD|\\u26AB|\\u26AA|\\u26A1|\\u26A0|\\u2693|\\u271D|\\u267F|\\u267B|\\u2668|\\u2666|\\u2665|\\u2663|\\u2660|\\u2653|\\u2652|\\u2651|\\u2650|\\u264F|\\u264E|\\u264D|\\u2328|\\u264C|\\u264B|\\u264A|\\u2649|\\u2648|\\u263A|\\u261D|\\u2615|\\u2614|\\u2611|\\u260E|\\u2601|\\u2600|\\u25FE|\\u25FD|\\u25FC|\\u25FB|\\u25C0|\\u25B6|\\u25AB|\\u25AA|\\u24C2|\\u231B|\\u231A|\\u21AA|\\u270D|\\u21A9|\\u2199|\\u2198|\\u2197|\\u2196|\\u2195|\\u2194|\\u2139|\\u2122|\\u2049|\\u203C|\\u00AE|\\u00A9|\\u2763|\\u26F9|\\u26F8|\\u26F7|\\u26F4|\\u26F1|\\u26F0|\\u26E9|\\u26D3|\\u23CF|\\u23ED|\\u23EE|\\u23EF|\\u23F1|\\u23F2|\\u23F8|\\u23F9|\\u23FA|\\u2602|\\u2603|\\u2604|\\u2618|\\u2620|\\u2622|\\u2623|\\u2626|\\u262A|\\u262E|\\u262F|\\u2638|\\u2639|\\u2692|\\u2694|\\u2696|\\u2697|\\u2699|\\u269B|\\u269C|\\u26B0|\\u26B1|\\u26C8|\\u26CF|\\u26D1|\\u26D3|\\u26E9|\\u26F0|\\u26F1|\\u26F4|\\u26F7|\\u26F8|\\u26F9|\\u2721|\\u2763|\\u26D1|\\u26CF|\\u26C8|\\u2757)",e.jsEscapeMap={"👩‍❤️‍💋‍👩":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","👩❤💋👩":"1f469-2764-1f48b-1f469","👨‍❤️‍💋‍👨":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","👨❤💋👨":"1f468-2764-1f48b-1f468","👨‍👨‍👦‍👦":"1f468-200d-1f468-200d-1f466-200d-1f466","👨👨👦👦":"1f468-1f468-1f466-1f466","👨‍👨‍👧‍👦":"1f468-200d-1f468-200d-1f467-200d-1f466","👨👨👧👦":"1f468-1f468-1f467-1f466","👨‍👨‍👧‍👧":"1f468-200d-1f468-200d-1f467-200d-1f467","👨👨👧👧":"1f468-1f468-1f467-1f467","👨‍👩‍👦‍👦":"1f468-200d-1f469-200d-1f466-200d-1f466","👨👩👦👦":"1f468-1f469-1f466-1f466","👨‍👩‍👧‍👦":"1f468-200d-1f469-200d-1f467-200d-1f466","👨👩👧👦":"1f468-1f469-1f467-1f466","👨‍👩‍👧‍👧":"1f468-200d-1f469-200d-1f467-200d-1f467","👨👩👧👧":"1f468-1f469-1f467-1f467","👩‍👩‍👦‍👦":"1f469-200d-1f469-200d-1f466-200d-1f466","👩👩👦👦":"1f469-1f469-1f466-1f466","👩‍👩‍👧‍👦":"1f469-200d-1f469-200d-1f467-200d-1f466","👩👩👧👦":"1f469-1f469-1f467-1f466","👩‍👩‍👧‍👧":"1f469-200d-1f469-200d-1f467-200d-1f467","👩👩👧👧":"1f469-1f469-1f467-1f467","👩‍❤️‍👩":"1f469-200d-2764-fe0f-200d-1f469","👩❤👩":"1f469-2764-1f469","👨‍❤️‍👨":"1f468-200d-2764-fe0f-200d-1f468","👨❤👨":"1f468-2764-1f468","👨‍👨‍👦":"1f468-200d-1f468-200d-1f466","👨👨👦":"1f468-1f468-1f466","👨‍👨‍👧":"1f468-200d-1f468-200d-1f467","👨👨👧":"1f468-1f468-1f467","👨‍👩‍👧":"1f468-200d-1f469-200d-1f467","👨👩👧":"1f468-1f469-1f467","👩‍👩‍👦":"1f469-200d-1f469-200d-1f466","👩👩👦":"1f469-1f469-1f466","👩‍👩‍👧":"1f469-200d-1f469-200d-1f467","👩👩👧":"1f469-1f469-1f467","🏳️‍🌈":"1f3f3-fe0f-200d-1f308","🏳🌈":"1f3f3-1f308","👁‍🗨":"1f441-200d-1f5e8","👁🗨":"1f441-1f5e8","#️⃣":"0023-fe0f-20e3","#⃣":"0023-20e3","0️⃣":"0030-fe0f-20e3","0⃣":"0030-20e3","1️⃣":"0031-fe0f-20e3","1⃣":"0031-20e3","2️⃣":"0032-fe0f-20e3","2⃣":"0032-20e3","3️⃣":"0033-fe0f-20e3","3⃣":"0033-20e3","4️⃣":"0034-fe0f-20e3","4⃣":"0034-20e3","5️⃣":"0035-fe0f-20e3","5⃣":"0035-20e3","6️⃣":"0036-fe0f-20e3","6⃣":"0036-20e3","7️⃣":"0037-fe0f-20e3","7⃣":"0037-20e3","8️⃣":"0038-fe0f-20e3","8⃣":"0038-20e3","9️⃣":"0039-fe0f-20e3","9⃣":"0039-20e3","*️⃣":"002a-fe0f-20e3","*⃣":"002a-20e3","🤾🏿":"1f93e-1f3ff","🤾🏾":"1f93e-1f3fe","🤾🏽":"1f93e-1f3fd","🤾🏼":"1f93e-1f3fc","🤾🏻":"1f93e-1f3fb","🤽🏿":"1f93d-1f3ff","🤽🏾":"1f93d-1f3fe","🤽🏽":"1f93d-1f3fd","🤽🏼":"1f93d-1f3fc","🤽🏻":"1f93d-1f3fb","🤼🏿":"1f93c-1f3ff","🤼🏾":"1f93c-1f3fe","🤼🏽":"1f93c-1f3fd","🤼🏼":"1f93c-1f3fc","🤼🏻":"1f93c-1f3fb","🤹🏿":"1f939-1f3ff","🤹🏾":"1f939-1f3fe","🤹🏽":"1f939-1f3fd","🤹🏼":"1f939-1f3fc","🤹🏻":"1f939-1f3fb","🤸🏿":"1f938-1f3ff","🤸🏾":"1f938-1f3fe","🤸🏽":"1f938-1f3fd","🤸🏼":"1f938-1f3fc","🤸🏻":"1f938-1f3fb","🤷🏿":"1f937-1f3ff","🤷🏾":"1f937-1f3fe","🤷🏽":"1f937-1f3fd","🤷🏼":"1f937-1f3fc","🤷🏻":"1f937-1f3fb","🤶🏿":"1f936-1f3ff","🤶🏾":"1f936-1f3fe","🤶🏽":"1f936-1f3fd","🤶🏼":"1f936-1f3fc","🤶🏻":"1f936-1f3fb","🤵🏿":"1f935-1f3ff","🤵🏾":"1f935-1f3fe","🤵🏽":"1f935-1f3fd","🤵🏼":"1f935-1f3fc","🤵🏻":"1f935-1f3fb","🤴🏿":"1f934-1f3ff","🤴🏾":"1f934-1f3fe","🤴🏽":"1f934-1f3fd","🤴🏼":"1f934-1f3fc","🤴🏻":"1f934-1f3fb","🤳🏿":"1f933-1f3ff","🤳🏾":"1f933-1f3fe","🤳🏽":"1f933-1f3fd","🤳🏼":"1f933-1f3fc","🤳🏻":"1f933-1f3fb","🤰🏿":"1f930-1f3ff","🤰🏾":"1f930-1f3fe","🤰🏽":"1f930-1f3fd","🤰🏼":"1f930-1f3fc","🤰🏻":"1f930-1f3fb","🤦🏿":"1f926-1f3ff","🤦🏾":"1f926-1f3fe","🤦🏽":"1f926-1f3fd","🤦🏼":"1f926-1f3fc","🤦🏻":"1f926-1f3fb","🤞🏿":"1f91e-1f3ff","🤞🏾":"1f91e-1f3fe","🤞🏽":"1f91e-1f3fd","🤞🏼":"1f91e-1f3fc","🤞🏻":"1f91e-1f3fb","🤝🏿":"1f91d-1f3ff","🤝🏾":"1f91d-1f3fe","🤝🏽":"1f91d-1f3fd","🤝🏼":"1f91d-1f3fc","🤝🏻":"1f91d-1f3fb","🤜🏿":"1f91c-1f3ff","🤜🏾":"1f91c-1f3fe","🤜🏽":"1f91c-1f3fd","🤜🏼":"1f91c-1f3fc","🤜🏻":"1f91c-1f3fb","🤛🏿":"1f91b-1f3ff","🤛🏾":"1f91b-1f3fe","🤛🏽":"1f91b-1f3fd","🤛🏼":"1f91b-1f3fc","🤛🏻":"1f91b-1f3fb","🤚🏿":"1f91a-1f3ff","🤚🏾":"1f91a-1f3fe","🤚🏽":"1f91a-1f3fd","🤚🏼":"1f91a-1f3fc","🤚🏻":"1f91a-1f3fb","🤙🏿":"1f919-1f3ff","🤙🏾":"1f919-1f3fe","🤙🏽":"1f919-1f3fd","🤙🏼":"1f919-1f3fc","🤙🏻":"1f919-1f3fb","🤘🏿":"1f918-1f3ff","🤘🏾":"1f918-1f3fe","🤘🏽":"1f918-1f3fd","🤘🏼":"1f918-1f3fc","🤘🏻":"1f918-1f3fb","🛀🏿":"1f6c0-1f3ff","🛀🏾":"1f6c0-1f3fe","🛀🏽":"1f6c0-1f3fd","🛀🏼":"1f6c0-1f3fc","🛀🏻":"1f6c0-1f3fb","🚶🏿":"1f6b6-1f3ff","🚶🏾":"1f6b6-1f3fe","🚶🏽":"1f6b6-1f3fd","🚶🏼":"1f6b6-1f3fc","🚶🏻":"1f6b6-1f3fb","🚵🏿":"1f6b5-1f3ff","🚵🏾":"1f6b5-1f3fe","🚵🏽":"1f6b5-1f3fd","🚵🏼":"1f6b5-1f3fc","🚵🏻":"1f6b5-1f3fb","🚴🏿":"1f6b4-1f3ff","🚴🏾":"1f6b4-1f3fe","🚴🏽":"1f6b4-1f3fd","🚴🏼":"1f6b4-1f3fc","🚴🏻":"1f6b4-1f3fb","🚣🏿":"1f6a3-1f3ff","🚣🏾":"1f6a3-1f3fe","🚣🏽":"1f6a3-1f3fd","🚣🏼":"1f6a3-1f3fc","🚣🏻":"1f6a3-1f3fb","🙏🏿":"1f64f-1f3ff","🙏🏾":"1f64f-1f3fe","🙏🏽":"1f64f-1f3fd","🙏🏼":"1f64f-1f3fc","🙏🏻":"1f64f-1f3fb","🙎🏿":"1f64e-1f3ff","🙎🏾":"1f64e-1f3fe","🙎🏽":"1f64e-1f3fd","🙎🏼":"1f64e-1f3fc","🙎🏻":"1f64e-1f3fb","🙍🏿":"1f64d-1f3ff","🙍🏾":"1f64d-1f3fe","🙍🏽":"1f64d-1f3fd","🙍🏼":"1f64d-1f3fc","🙍🏻":"1f64d-1f3fb","🙌🏿":"1f64c-1f3ff","🙌🏾":"1f64c-1f3fe","🙌🏽":"1f64c-1f3fd","🙌🏼":"1f64c-1f3fc","🙌🏻":"1f64c-1f3fb","🙋🏿":"1f64b-1f3ff","🙋🏾":"1f64b-1f3fe","🙋🏽":"1f64b-1f3fd","🙋🏼":"1f64b-1f3fc","🙋🏻":"1f64b-1f3fb","🙇🏿":"1f647-1f3ff","🙇🏾":"1f647-1f3fe","🙇🏽":"1f647-1f3fd","🙇🏼":"1f647-1f3fc","🙇🏻":"1f647-1f3fb","🙆🏿":"1f646-1f3ff","🙆🏾":"1f646-1f3fe","🙆🏽":"1f646-1f3fd","🙆🏼":"1f646-1f3fc","🙆🏻":"1f646-1f3fb","🙅🏿":"1f645-1f3ff","🙅🏾":"1f645-1f3fe","🙅🏽":"1f645-1f3fd","🙅🏼":"1f645-1f3fc","🙅🏻":"1f645-1f3fb","🖖🏿":"1f596-1f3ff","🖖🏾":"1f596-1f3fe","🖖🏽":"1f596-1f3fd","🖖🏼":"1f596-1f3fc","🖖🏻":"1f596-1f3fb","🖕🏿":"1f595-1f3ff","🖕🏾":"1f595-1f3fe","🖕🏽":"1f595-1f3fd","🖕🏼":"1f595-1f3fc","🖕🏻":"1f595-1f3fb","🖐🏿":"1f590-1f3ff","🖐🏾":"1f590-1f3fe","🖐🏽":"1f590-1f3fd","🖐🏼":"1f590-1f3fc","🖐🏻":"1f590-1f3fb","🕺🏿":"1f57a-1f3ff","🕺🏾":"1f57a-1f3fe","🕺🏽":"1f57a-1f3fd","🕺🏼":"1f57a-1f3fc","🕺🏻":"1f57a-1f3fb","🕵🏿":"1f575-1f3ff","🕵🏾":"1f575-1f3fe","🕵🏽":"1f575-1f3fd","🕵🏼":"1f575-1f3fc","🕵🏻":"1f575-1f3fb","💪🏿":"1f4aa-1f3ff","💪🏾":"1f4aa-1f3fe","💪🏽":"1f4aa-1f3fd","💪🏼":"1f4aa-1f3fc","💪🏻":"1f4aa-1f3fb","💇🏿":"1f487-1f3ff","💇🏾":"1f487-1f3fe","💇🏽":"1f487-1f3fd","💇🏼":"1f487-1f3fc","💇🏻":"1f487-1f3fb","💆🏿":"1f486-1f3ff","💆🏾":"1f486-1f3fe","💆🏽":"1f486-1f3fd","💆🏼":"1f486-1f3fc","💆🏻":"1f486-1f3fb","💅🏿":"1f485-1f3ff","💅🏾":"1f485-1f3fe","💅🏽":"1f485-1f3fd","💅🏼":"1f485-1f3fc","💅🏻":"1f485-1f3fb","💃🏿":"1f483-1f3ff","💃🏾":"1f483-1f3fe","💃🏽":"1f483-1f3fd","💃🏼":"1f483-1f3fc","💃🏻":"1f483-1f3fb","💂🏿":"1f482-1f3ff","💂🏾":"1f482-1f3fe","💂🏽":"1f482-1f3fd","💂🏼":"1f482-1f3fc","💂🏻":"1f482-1f3fb","💁🏿":"1f481-1f3ff","💁🏾":"1f481-1f3fe","💁🏽":"1f481-1f3fd","💁🏼":"1f481-1f3fc","💁🏻":"1f481-1f3fb","👼🏿":"1f47c-1f3ff","👼🏾":"1f47c-1f3fe","👼🏽":"1f47c-1f3fd","👼🏼":"1f47c-1f3fc","👼🏻":"1f47c-1f3fb","👸🏿":"1f478-1f3ff","👸🏾":"1f478-1f3fe","👸🏽":"1f478-1f3fd","👸🏼":"1f478-1f3fc","👸🏻":"1f478-1f3fb","👷🏿":"1f477-1f3ff","👷🏾":"1f477-1f3fe","👷🏽":"1f477-1f3fd","👷🏼":"1f477-1f3fc","👷🏻":"1f477-1f3fb","👶🏿":"1f476-1f3ff","👶🏾":"1f476-1f3fe","👶🏽":"1f476-1f3fd","👶🏼":"1f476-1f3fc","👶🏻":"1f476-1f3fb","👵🏿":"1f475-1f3ff","👵🏾":"1f475-1f3fe","👵🏽":"1f475-1f3fd","👵🏼":"1f475-1f3fc","👵🏻":"1f475-1f3fb","👴🏿":"1f474-1f3ff","👴🏾":"1f474-1f3fe","👴🏽":"1f474-1f3fd","👴🏼":"1f474-1f3fc","👴🏻":"1f474-1f3fb","👳🏿":"1f473-1f3ff","👳🏾":"1f473-1f3fe","👳🏽":"1f473-1f3fd","👳🏼":"1f473-1f3fc","👳🏻":"1f473-1f3fb","👲🏿":"1f472-1f3ff","👲🏾":"1f472-1f3fe","👲🏽":"1f472-1f3fd","👲🏼":"1f472-1f3fc","👲🏻":"1f472-1f3fb","👱🏿":"1f471-1f3ff","👱🏾":"1f471-1f3fe","👱🏽":"1f471-1f3fd","👱🏼":"1f471-1f3fc","👱🏻":"1f471-1f3fb","👰🏿":"1f470-1f3ff","👰🏾":"1f470-1f3fe","👰🏽":"1f470-1f3fd","👰🏼":"1f470-1f3fc","👰🏻":"1f470-1f3fb","👮🏿":"1f46e-1f3ff","👮🏾":"1f46e-1f3fe","👮🏽":"1f46e-1f3fd","👮🏼":"1f46e-1f3fc","👮🏻":"1f46e-1f3fb","👩🏿":"1f469-1f3ff","👩🏾":"1f469-1f3fe","👩🏽":"1f469-1f3fd","👩🏼":"1f469-1f3fc","👩🏻":"1f469-1f3fb","👨🏿":"1f468-1f3ff","👨🏾":"1f468-1f3fe","👨🏽":"1f468-1f3fd","👨🏼":"1f468-1f3fc","👨🏻":"1f468-1f3fb","👧🏿":"1f467-1f3ff","👧🏾":"1f467-1f3fe","👧🏽":"1f467-1f3fd","👧🏼":"1f467-1f3fc","👧🏻":"1f467-1f3fb","👦🏿":"1f466-1f3ff","👦🏾":"1f466-1f3fe","👦🏽":"1f466-1f3fd","👦🏼":"1f466-1f3fc","👦🏻":"1f466-1f3fb","👐🏿":"1f450-1f3ff","👐🏾":"1f450-1f3fe","👐🏽":"1f450-1f3fd","👐🏼":"1f450-1f3fc","👐🏻":"1f450-1f3fb","👏🏿":"1f44f-1f3ff","👏🏾":"1f44f-1f3fe","👏🏽":"1f44f-1f3fd","👏🏼":"1f44f-1f3fc","👏🏻":"1f44f-1f3fb","👎🏿":"1f44e-1f3ff","👎🏾":"1f44e-1f3fe","👎🏽":"1f44e-1f3fd","👎🏼":"1f44e-1f3fc","👎🏻":"1f44e-1f3fb","👍🏿":"1f44d-1f3ff","👍🏾":"1f44d-1f3fe","👍🏽":"1f44d-1f3fd","👍🏼":"1f44d-1f3fc","👍🏻":"1f44d-1f3fb","👌🏿":"1f44c-1f3ff","👌🏾":"1f44c-1f3fe","👌🏽":"1f44c-1f3fd","👌🏼":"1f44c-1f3fc","👌🏻":"1f44c-1f3fb","👋🏿":"1f44b-1f3ff","👋🏾":"1f44b-1f3fe","👋🏽":"1f44b-1f3fd","👋🏼":"1f44b-1f3fc","👋🏻":"1f44b-1f3fb","👊🏿":"1f44a-1f3ff","👊🏾":"1f44a-1f3fe","👊🏽":"1f44a-1f3fd","👊🏼":"1f44a-1f3fc","👊🏻":"1f44a-1f3fb","👉🏿":"1f449-1f3ff","👉🏾":"1f449-1f3fe","👉🏽":"1f449-1f3fd","👉🏼":"1f449-1f3fc","👉🏻":"1f449-1f3fb","👈🏿":"1f448-1f3ff","👈🏾":"1f448-1f3fe","👈🏽":"1f448-1f3fd","👈🏼":"1f448-1f3fc","👈🏻":"1f448-1f3fb","👇🏿":"1f447-1f3ff","👇🏾":"1f447-1f3fe","👇🏽":"1f447-1f3fd","👇🏼":"1f447-1f3fc","👇🏻":"1f447-1f3fb","👆🏿":"1f446-1f3ff","👆🏾":"1f446-1f3fe","👆🏽":"1f446-1f3fd","👆🏼":"1f446-1f3fc","👆🏻":"1f446-1f3fb","👃🏿":"1f443-1f3ff","👃🏾":"1f443-1f3fe","👃🏽":"1f443-1f3fd","👃🏼":"1f443-1f3fc","👃🏻":"1f443-1f3fb","👂🏿":"1f442-1f3ff","👂🏾":"1f442-1f3fe","👂🏽":"1f442-1f3fd","👂🏼":"1f442-1f3fc","👂🏻":"1f442-1f3fb","🏋🏿":"1f3cb-1f3ff","🏋🏾":"1f3cb-1f3fe","🏋🏽":"1f3cb-1f3fd","🏋🏼":"1f3cb-1f3fc","🏋🏻":"1f3cb-1f3fb","🏊🏿":"1f3ca-1f3ff","🏊🏾":"1f3ca-1f3fe","🏊🏽":"1f3ca-1f3fd","🏊🏼":"1f3ca-1f3fc","🏊🏻":"1f3ca-1f3fb","🏇🏿":"1f3c7-1f3ff","🏇🏾":"1f3c7-1f3fe","🏇🏽":"1f3c7-1f3fd","🏇🏼":"1f3c7-1f3fc","🏇🏻":"1f3c7-1f3fb","🏄🏿":"1f3c4-1f3ff","🏄🏾":"1f3c4-1f3fe","🏄🏽":"1f3c4-1f3fd","🏄🏼":"1f3c4-1f3fc","🏄🏻":"1f3c4-1f3fb","🏃🏿":"1f3c3-1f3ff","🏃🏾":"1f3c3-1f3fe","🏃🏽":"1f3c3-1f3fd","🏃🏼":"1f3c3-1f3fc","🏃🏻":"1f3c3-1f3fb","🎅🏿":"1f385-1f3ff","🎅🏾":"1f385-1f3fe","🎅🏽":"1f385-1f3fd","🎅🏼":"1f385-1f3fc","🎅🏻":"1f385-1f3fb","🇿🇼":"1f1ff-1f1fc","🇿🇲":"1f1ff-1f1f2","🇿🇦":"1f1ff-1f1e6","🇾🇹":"1f1fe-1f1f9","🇾🇪":"1f1fe-1f1ea","🇽🇰":"1f1fd-1f1f0","🇼🇸":"1f1fc-1f1f8","🇼🇫":"1f1fc-1f1eb","🇻🇺":"1f1fb-1f1fa","🇻🇳":"1f1fb-1f1f3","🇻🇮":"1f1fb-1f1ee","🇻🇬":"1f1fb-1f1ec","🇻🇪":"1f1fb-1f1ea","🇻🇨":"1f1fb-1f1e8","🇻🇦":"1f1fb-1f1e6","🇺🇿":"1f1fa-1f1ff","🇺🇾":"1f1fa-1f1fe","🇺🇸":"1f1fa-1f1f8","🇺🇲":"1f1fa-1f1f2","🇺🇬":"1f1fa-1f1ec","🇺🇦":"1f1fa-1f1e6","🇹🇿":"1f1f9-1f1ff","🇹🇼":"1f1f9-1f1fc","🇹🇻":"1f1f9-1f1fb","🇹🇹":"1f1f9-1f1f9","🇹🇷":"1f1f9-1f1f7","🇹🇴":"1f1f9-1f1f4","🇹🇳":"1f1f9-1f1f3","🇹🇲":"1f1f9-1f1f2","🇹🇱":"1f1f9-1f1f1","🇹🇰":"1f1f9-1f1f0","🇹🇯":"1f1f9-1f1ef","🇹🇭":"1f1f9-1f1ed","🇹🇬":"1f1f9-1f1ec","🇹🇫":"1f1f9-1f1eb","🇹🇩":"1f1f9-1f1e9","🇹🇨":"1f1f9-1f1e8","🇹🇦":"1f1f9-1f1e6","🇸🇿":"1f1f8-1f1ff","🇸🇾":"1f1f8-1f1fe","🇸🇽":"1f1f8-1f1fd","🇸🇻":"1f1f8-1f1fb","🇸🇹":"1f1f8-1f1f9","🇸🇸":"1f1f8-1f1f8","🇸🇷":"1f1f8-1f1f7","🇸🇴":"1f1f8-1f1f4","🇸🇳":"1f1f8-1f1f3","🇸🇲":"1f1f8-1f1f2","🇸🇱":"1f1f8-1f1f1","🇸🇰":"1f1f8-1f1f0","🇸🇯":"1f1f8-1f1ef","🇸🇮":"1f1f8-1f1ee","🇸🇭":"1f1f8-1f1ed","🇸🇬":"1f1f8-1f1ec","🇸🇪":"1f1f8-1f1ea","🇸🇩":"1f1f8-1f1e9","🇸🇨":"1f1f8-1f1e8","🇸🇧":"1f1f8-1f1e7","🇸🇦":"1f1f8-1f1e6","🇷🇼":"1f1f7-1f1fc","🇷🇺":"1f1f7-1f1fa","🇷🇸":"1f1f7-1f1f8","🇷🇴":"1f1f7-1f1f4","🇷🇪":"1f1f7-1f1ea","🇶🇦":"1f1f6-1f1e6","🇵🇾":"1f1f5-1f1fe","🇵🇼":"1f1f5-1f1fc","🇵🇹":"1f1f5-1f1f9","🇵🇸":"1f1f5-1f1f8","🇵🇷":"1f1f5-1f1f7","🇵🇳":"1f1f5-1f1f3","🇵🇲":"1f1f5-1f1f2","🇵🇱":"1f1f5-1f1f1","🇵🇰":"1f1f5-1f1f0","🇵🇭":"1f1f5-1f1ed","🇵🇬":"1f1f5-1f1ec","🇵🇫":"1f1f5-1f1eb","🇵🇪":"1f1f5-1f1ea","🇵🇦":"1f1f5-1f1e6","🇴🇲":"1f1f4-1f1f2","🇳🇿":"1f1f3-1f1ff","🇳🇺":"1f1f3-1f1fa","🇳🇷":"1f1f3-1f1f7","🇳🇵":"1f1f3-1f1f5","🇳🇴":"1f1f3-1f1f4","🇳🇱":"1f1f3-1f1f1","🇳🇮":"1f1f3-1f1ee","🇳🇬":"1f1f3-1f1ec","🇳🇫":"1f1f3-1f1eb","🇳🇪":"1f1f3-1f1ea","🇳🇨":"1f1f3-1f1e8","🇳🇦":"1f1f3-1f1e6","🇲🇿":"1f1f2-1f1ff","🇲🇾":"1f1f2-1f1fe","🇲🇽":"1f1f2-1f1fd","🇲🇼":"1f1f2-1f1fc","🇲🇻":"1f1f2-1f1fb","🇲🇺":"1f1f2-1f1fa","🇲🇹":"1f1f2-1f1f9","🇲🇸":"1f1f2-1f1f8","🇲🇷":"1f1f2-1f1f7","🇲🇶":"1f1f2-1f1f6","🇲🇵":"1f1f2-1f1f5","🇲🇴":"1f1f2-1f1f4","🇲🇳":"1f1f2-1f1f3","🇲🇲":"1f1f2-1f1f2","🇲🇱":"1f1f2-1f1f1","🇲🇰":"1f1f2-1f1f0","🇲🇭":"1f1f2-1f1ed","🇲🇬":"1f1f2-1f1ec","🇲🇫":"1f1f2-1f1eb","🇲🇪":"1f1f2-1f1ea","🇲🇩":"1f1f2-1f1e9","🇲🇨":"1f1f2-1f1e8","🇲🇦":"1f1f2-1f1e6","🇱🇾":"1f1f1-1f1fe","🇱🇻":"1f1f1-1f1fb","🇱🇺":"1f1f1-1f1fa","🇱🇹":"1f1f1-1f1f9","🇱🇸":"1f1f1-1f1f8","🇱🇷":"1f1f1-1f1f7","🇱🇰":"1f1f1-1f1f0","🇱🇮":"1f1f1-1f1ee","🇱🇨":"1f1f1-1f1e8","🇱🇧":"1f1f1-1f1e7","🇱🇦":"1f1f1-1f1e6","🇰🇿":"1f1f0-1f1ff","🇰🇾":"1f1f0-1f1fe","🇰🇼":"1f1f0-1f1fc","🇰🇷":"1f1f0-1f1f7","🇰🇵":"1f1f0-1f1f5","🇰🇳":"1f1f0-1f1f3","🇰🇲":"1f1f0-1f1f2","🇰🇮":"1f1f0-1f1ee","🇰🇭":"1f1f0-1f1ed","🇰🇬":"1f1f0-1f1ec","🇰🇪":"1f1f0-1f1ea","🇯🇵":"1f1ef-1f1f5","🇯🇴":"1f1ef-1f1f4","🇯🇲":"1f1ef-1f1f2","🇯🇪":"1f1ef-1f1ea","🇮🇹":"1f1ee-1f1f9","🇮🇸":"1f1ee-1f1f8","🇮🇷":"1f1ee-1f1f7","🇮🇶":"1f1ee-1f1f6","🇮🇴":"1f1ee-1f1f4","🇮🇳":"1f1ee-1f1f3","🇮🇲":"1f1ee-1f1f2","🇮🇱":"1f1ee-1f1f1","🇮🇪":"1f1ee-1f1ea","🇮🇩":"1f1ee-1f1e9","🇮🇨":"1f1ee-1f1e8","🇭🇺":"1f1ed-1f1fa","🇭🇹":"1f1ed-1f1f9","🇭🇷":"1f1ed-1f1f7","🇭🇳":"1f1ed-1f1f3","🇭🇲":"1f1ed-1f1f2","🇭🇰":"1f1ed-1f1f0","🇬🇾":"1f1ec-1f1fe","🇬🇼":"1f1ec-1f1fc","🇬🇺":"1f1ec-1f1fa","🇬🇹":"1f1ec-1f1f9","🇬🇸":"1f1ec-1f1f8","🇬🇷":"1f1ec-1f1f7","🇬🇶":"1f1ec-1f1f6","🇬🇵":"1f1ec-1f1f5","🇬🇳":"1f1ec-1f1f3","🇬🇲":"1f1ec-1f1f2","🇬🇱":"1f1ec-1f1f1","🇬🇮":"1f1ec-1f1ee","🇬🇭":"1f1ec-1f1ed","🇬🇬":"1f1ec-1f1ec","🇬🇫":"1f1ec-1f1eb","🇬🇪":"1f1ec-1f1ea","🇬🇩":"1f1ec-1f1e9","🇬🇧":"1f1ec-1f1e7","🇬🇦":"1f1ec-1f1e6","🇫🇷":"1f1eb-1f1f7","🇫🇴":"1f1eb-1f1f4","🇫🇲":"1f1eb-1f1f2","🇫🇰":"1f1eb-1f1f0","🇫🇯":"1f1eb-1f1ef","🇫🇮":"1f1eb-1f1ee","🇪🇺":"1f1ea-1f1fa","🇪🇹":"1f1ea-1f1f9","🇪🇸":"1f1ea-1f1f8","🇪🇷":"1f1ea-1f1f7","🇪🇭":"1f1ea-1f1ed","🇪🇬":"1f1ea-1f1ec","🇪🇪":"1f1ea-1f1ea","🇪🇨":"1f1ea-1f1e8","🇪🇦":"1f1ea-1f1e6","🇩🇿":"1f1e9-1f1ff","🇩🇴":"1f1e9-1f1f4","🇩🇲":"1f1e9-1f1f2","🇩🇰":"1f1e9-1f1f0","🇩🇯":"1f1e9-1f1ef","🇩🇬":"1f1e9-1f1ec","🇩🇪":"1f1e9-1f1ea","🇨🇿":"1f1e8-1f1ff","🇨🇾":"1f1e8-1f1fe","🇨🇽":"1f1e8-1f1fd","🇨🇼":"1f1e8-1f1fc","🇨🇻":"1f1e8-1f1fb","🇨🇺":"1f1e8-1f1fa","🇨🇷":"1f1e8-1f1f7","🇨🇵":"1f1e8-1f1f5","🇨🇴":"1f1e8-1f1f4","🇨🇳":"1f1e8-1f1f3","🇨🇲":"1f1e8-1f1f2","🇨🇱":"1f1e8-1f1f1","🇨🇰":"1f1e8-1f1f0","🇨🇮":"1f1e8-1f1ee","🇨🇭":"1f1e8-1f1ed","🇨🇬":"1f1e8-1f1ec","🇨🇫":"1f1e8-1f1eb","🇨🇩":"1f1e8-1f1e9","🇨🇨":"1f1e8-1f1e8","🇨🇦":"1f1e8-1f1e6","🇧🇿":"1f1e7-1f1ff","🇧🇾":"1f1e7-1f1fe","🇧🇼":"1f1e7-1f1fc","🇧🇻":"1f1e7-1f1fb","🇧🇹":"1f1e7-1f1f9","🇧🇸":"1f1e7-1f1f8","🇧🇷":"1f1e7-1f1f7","🇧🇶":"1f1e7-1f1f6","🇧🇴":"1f1e7-1f1f4","🇧🇳":"1f1e7-1f1f3","🇧🇲":"1f1e7-1f1f2","🇧🇱":"1f1e7-1f1f1","🇧🇯":"1f1e7-1f1ef","🇧🇮":"1f1e7-1f1ee","🇧🇭":"1f1e7-1f1ed","🇧🇬":"1f1e7-1f1ec","🇧🇫":"1f1e7-1f1eb","🇧🇪":"1f1e7-1f1ea","🇧🇩":"1f1e7-1f1e9","🇧🇧":"1f1e7-1f1e7","🇧🇦":"1f1e7-1f1e6","🇦🇿":"1f1e6-1f1ff","🇦🇽":"1f1e6-1f1fd","🇦🇼":"1f1e6-1f1fc","🇦🇺":"1f1e6-1f1fa","🇦🇹":"1f1e6-1f1f9","🇦🇸":"1f1e6-1f1f8","🇦🇷":"1f1e6-1f1f7","🇦🇶":"1f1e6-1f1f6","🇦🇴":"1f1e6-1f1f4","🇦🇲":"1f1e6-1f1f2","🇦🇱":"1f1e6-1f1f1","🇦🇮":"1f1e6-1f1ee","🇦🇬":"1f1e6-1f1ec","🇦🇫":"1f1e6-1f1eb","🇦🇪":"1f1e6-1f1ea","🇦🇩":"1f1e6-1f1e9","🇦🇨":"1f1e6-1f1e8","🀄️":"1f004-fe0f","🀄":"1f004","🅿️":"1f17f-fe0f","🅿":"1f17f","🈂️":"1f202-fe0f","🈂":"1f202","🈚️":"1f21a-fe0f","🈚":"1f21a","🈯️":"1f22f-fe0f","🈯":"1f22f","🈷️":"1f237-fe0f","🈷":"1f237","🎞️":"1f39e-fe0f","🎞":"1f39e","🎟️":"1f39f-fe0f","🎟":"1f39f","🏋️":"1f3cb-fe0f","🏋":"1f3cb","🏌️":"1f3cc-fe0f","🏌":"1f3cc","🏍️":"1f3cd-fe0f","🏍":"1f3cd","🏎️":"1f3ce-fe0f","🏎":"1f3ce","🎖️":"1f396-fe0f","🎖":"1f396","🎗️":"1f397-fe0f","🎗":"1f397","🌶️":"1f336-fe0f","🌶":"1f336","🌧️":"1f327-fe0f","🌧":"1f327","🌨️":"1f328-fe0f","🌨":"1f328","🌩️":"1f329-fe0f","🌩":"1f329","🌪️":"1f32a-fe0f","🌪":"1f32a","🌫️":"1f32b-fe0f","🌫":"1f32b","🌬️":"1f32c-fe0f","🌬":"1f32c","🐿️":"1f43f-fe0f","🐿":"1f43f","🕷️":"1f577-fe0f","🕷":"1f577","🕸️":"1f578-fe0f","🕸":"1f578","🌡️":"1f321-fe0f","🌡":"1f321","🎙️":"1f399-fe0f","🎙":"1f399","🎚️":"1f39a-fe0f","🎚":"1f39a","🎛️":"1f39b-fe0f","🎛":"1f39b","🏳️":"1f3f3-fe0f","🏳":"1f3f3","🏵️":"1f3f5-fe0f","🏵":"1f3f5","🏷️":"1f3f7-fe0f","🏷":"1f3f7","📽️":"1f4fd-fe0f","📽":"1f4fd","🕉️":"1f549-fe0f","🕉":"1f549","🕊️":"1f54a-fe0f","🕊":"1f54a","🕯️":"1f56f-fe0f","🕯":"1f56f","🕰️":"1f570-fe0f","🕰":"1f570","🕳️":"1f573-fe0f","🕳":"1f573","🕶️":"1f576-fe0f","🕶":"1f576","🕹️":"1f579-fe0f","🕹":"1f579","🖇️":"1f587-fe0f","🖇":"1f587","🖊️":"1f58a-fe0f","🖊":"1f58a","🖋️":"1f58b-fe0f","🖋":"1f58b","🖌️":"1f58c-fe0f","🖌":"1f58c","🖍️":"1f58d-fe0f","🖍":"1f58d","🖥️":"1f5a5-fe0f","🖥":"1f5a5","🖨️":"1f5a8-fe0f","🖨":"1f5a8","🖲️":"1f5b2-fe0f","🖲":"1f5b2","🖼️":"1f5bc-fe0f","🖼":"1f5bc","🗂️":"1f5c2-fe0f","🗂":"1f5c2","🗃️":"1f5c3-fe0f","🗃":"1f5c3","🗄️":"1f5c4-fe0f","🗄":"1f5c4","🗑️":"1f5d1-fe0f","🗑":"1f5d1","🗒️":"1f5d2-fe0f","🗒":"1f5d2","🗓️":"1f5d3-fe0f","🗓":"1f5d3","🗜️":"1f5dc-fe0f","🗜":"1f5dc","🗝️":"1f5dd-fe0f","🗝":"1f5dd","🗞️":"1f5de-fe0f","🗞":"1f5de","🗡️":"1f5e1-fe0f","🗡":"1f5e1","🗣️":"1f5e3-fe0f","🗣":"1f5e3","🗨️":"1f5e8-fe0f","🗨":"1f5e8","🗯️":"1f5ef-fe0f","🗯":"1f5ef","🗳️":"1f5f3-fe0f","🗳":"1f5f3","🗺️":"1f5fa-fe0f","🗺":"1f5fa","🛠️":"1f6e0-fe0f","🛠":"1f6e0","🛡️":"1f6e1-fe0f","🛡":"1f6e1","🛢️":"1f6e2-fe0f","🛢":"1f6e2","🛰️":"1f6f0-fe0f","🛰":"1f6f0","🍽️":"1f37d-fe0f","🍽":"1f37d","👁️":"1f441-fe0f","👁":"1f441","🕴️":"1f574-fe0f","🕴":"1f574","🕵️":"1f575-fe0f","🕵":"1f575","🖐️":"1f590-fe0f","🖐":"1f590","🏔️":"1f3d4-fe0f","🏔":"1f3d4","🏕️":"1f3d5-fe0f","🏕":"1f3d5","🏖️":"1f3d6-fe0f","🏖":"1f3d6","🏗️":"1f3d7-fe0f","🏗":"1f3d7","🏘️":"1f3d8-fe0f","🏘":"1f3d8","🏙️":"1f3d9-fe0f","🏙":"1f3d9","🏚️":"1f3da-fe0f","🏚":"1f3da","🏛️":"1f3db-fe0f","🏛":"1f3db","🏜️":"1f3dc-fe0f","🏜":"1f3dc","🏝️":"1f3dd-fe0f","🏝":"1f3dd","🏞️":"1f3de-fe0f","🏞":"1f3de","🏟️":"1f3df-fe0f","🏟":"1f3df","🛋️":"1f6cb-fe0f","🛋":"1f6cb","🛍️":"1f6cd-fe0f","🛍":"1f6cd","🛎️":"1f6ce-fe0f","🛎":"1f6ce","🛏️":"1f6cf-fe0f","🛏":"1f6cf","🛣️":"1f6e3-fe0f","🛣":"1f6e3","🛤️":"1f6e4-fe0f","🛤":"1f6e4","🛥️":"1f6e5-fe0f","🛥":"1f6e5","🛩️":"1f6e9-fe0f","🛩":"1f6e9","🛳️":"1f6f3-fe0f","🛳":"1f6f3","🌤️":"1f324-fe0f","🌤":"1f324","🌥️":"1f325-fe0f","🌥":"1f325","🌦️":"1f326-fe0f","🌦":"1f326","🖱️":"1f5b1-fe0f","🖱":"1f5b1","☝🏻":"261d-1f3fb","☝🏼":"261d-1f3fc","☝🏽":"261d-1f3fd","☝🏾":"261d-1f3fe","☝🏿":"261d-1f3ff","✌🏻":"270c-1f3fb","✌🏼":"270c-1f3fc","✌🏽":"270c-1f3fd","✌🏾":"270c-1f3fe","✌🏿":"270c-1f3ff","✊🏻":"270a-1f3fb","✊🏼":"270a-1f3fc","✊🏽":"270a-1f3fd","✊🏾":"270a-1f3fe","✊🏿":"270a-1f3ff","✋🏻":"270b-1f3fb","✋🏼":"270b-1f3fc","✋🏽":"270b-1f3fd","✋🏾":"270b-1f3fe","✋🏿":"270b-1f3ff","✍🏻":"270d-1f3fb","✍🏼":"270d-1f3fc","✍🏽":"270d-1f3fd","✍🏾":"270d-1f3fe","✍🏿":"270d-1f3ff","⛹🏻":"26f9-1f3fb","⛹🏼":"26f9-1f3fc","⛹🏽":"26f9-1f3fd","⛹🏾":"26f9-1f3fe","⛹🏿":"26f9-1f3ff","©️":"00a9-fe0f","©":"00a9","®️":"00ae-fe0f","®":"00ae","‼️":"203c-fe0f","‼":"203c","⁉️":"2049-fe0f","⁉":"2049","™️":"2122-fe0f","™":"2122","ℹ️":"2139-fe0f","ℹ":"2139","↔️":"2194-fe0f","↔":"2194","↕️":"2195-fe0f","↕":"2195","↖️":"2196-fe0f","↖":"2196","↗️":"2197-fe0f","↗":"2197","↘️":"2198-fe0f","↘":"2198","↙️":"2199-fe0f","↙":"2199","↩️":"21a9-fe0f","↩":"21a9","↪️":"21aa-fe0f","↪":"21aa","⌚️":"231a-fe0f","⌚":"231a","⌛️":"231b-fe0f","⌛":"231b","Ⓜ️":"24c2-fe0f","Ⓜ":"24c2","▪️":"25aa-fe0f","▪":"25aa","▫️":"25ab-fe0f","▫":"25ab","▶️":"25b6-fe0f","▶":"25b6","◀️":"25c0-fe0f","◀":"25c0","◻️":"25fb-fe0f","◻":"25fb","◼️":"25fc-fe0f","◼":"25fc","◽️":"25fd-fe0f","◽":"25fd","◾️":"25fe-fe0f","◾":"25fe","☀️":"2600-fe0f","☀":"2600","☁️":"2601-fe0f","☁":"2601","☎️":"260e-fe0f","☎":"260e","☑️":"2611-fe0f","☑":"2611","☔️":"2614-fe0f","☔":"2614","☕️":"2615-fe0f","☕":"2615","☝️":"261d-fe0f","☝":"261d","☺️":"263a-fe0f","☺":"263a","♈️":"2648-fe0f","♈":"2648","♉️":"2649-fe0f","♉":"2649","♊️":"264a-fe0f","♊":"264a","♋️":"264b-fe0f","♋":"264b","♌️":"264c-fe0f","♌":"264c","♍️":"264d-fe0f","♍":"264d","♎️":"264e-fe0f","♎":"264e","♏️":"264f-fe0f","♏":"264f","♐️":"2650-fe0f","♐":"2650","♑️":"2651-fe0f","♑":"2651","♒️":"2652-fe0f","♒":"2652","♓️":"2653-fe0f","♓":"2653","♠️":"2660-fe0f","♠":"2660","♣️":"2663-fe0f","♣":"2663","♥️":"2665-fe0f","♥":"2665","♦️":"2666-fe0f","♦":"2666","♨️":"2668-fe0f","♨":"2668","♻️":"267b-fe0f","♻":"267b","♿️":"267f-fe0f","♿":"267f","⚓️":"2693-fe0f","⚓":"2693","⚠️":"26a0-fe0f","⚠":"26a0","⚡️":"26a1-fe0f","⚡":"26a1","⚪️":"26aa-fe0f","⚪":"26aa","⚫️":"26ab-fe0f","⚫":"26ab","⚽️":"26bd-fe0f","⚽":"26bd","⚾️":"26be-fe0f","⚾":"26be","⛄️":"26c4-fe0f","⛄":"26c4","⛅️":"26c5-fe0f","⛅":"26c5","⛔️":"26d4-fe0f","⛔":"26d4","⛪️":"26ea-fe0f","⛪":"26ea","⛲️":"26f2-fe0f","⛲":"26f2","⛳️":"26f3-fe0f","⛳":"26f3","⛵️":"26f5-fe0f","⛵":"26f5","⛺️":"26fa-fe0f","⛺":"26fa","⛽️":"26fd-fe0f","⛽":"26fd","✂️":"2702-fe0f","✂":"2702","✈️":"2708-fe0f","✈":"2708","✉️":"2709-fe0f","✉":"2709","✌️":"270c-fe0f","✌":"270c","✏️":"270f-fe0f","✏":"270f","✒️":"2712-fe0f","✒":"2712","✔️":"2714-fe0f","✔":"2714","✖️":"2716-fe0f","✖":"2716","✳️":"2733-fe0f","✳":"2733","✴️":"2734-fe0f","✴":"2734","❄️":"2744-fe0f","❄":"2744","❇️":"2747-fe0f","❇":"2747","❗️":"2757-fe0f","❗":"2757","❤️":"2764-fe0f","❤":"2764","➡️":"27a1-fe0f","➡":"27a1","⤴️":"2934-fe0f","⤴":"2934","⤵️":"2935-fe0f","⤵":"2935","⬅️":"2b05-fe0f","⬅":"2b05","⬆️":"2b06-fe0f","⬆":"2b06","⬇️":"2b07-fe0f","⬇":"2b07","⬛️":"2b1b-fe0f","⬛":"2b1b","⬜️":"2b1c-fe0f","⬜":"2b1c","⭐️":"2b50-fe0f","⭐":"2b50","⭕️":"2b55-fe0f","⭕":"2b55","〰️":"3030-fe0f","〰":"3030","〽️":"303d-fe0f","〽":"303d","㊗️":"3297-fe0f","㊗":"3297","㊙️":"3299-fe0f","㊙":"3299","✝️":"271d-fe0f","✝":"271d","⌨️":"2328-fe0f","⌨":"2328","✍️":"270d-fe0f","✍":"270d","⏏️":"23cf-fe0f","⏏":"23cf","⏭️":"23ed-fe0f","⏭":"23ed","⏮️":"23ee-fe0f","⏮":"23ee","⏯️":"23ef-fe0f","⏯":"23ef","⏱️":"23f1-fe0f","⏱":"23f1","⏲️":"23f2-fe0f","⏲":"23f2","⏸️":"23f8-fe0f","⏸":"23f8","⏹️":"23f9-fe0f","⏹":"23f9","⏺️":"23fa-fe0f","⏺":"23fa","☂️":"2602-fe0f","☂":"2602","☃️":"2603-fe0f","☃":"2603","☄️":"2604-fe0f","☄":"2604","☘️":"2618-fe0f","☘":"2618","☠️":"2620-fe0f","☠":"2620","☢️":"2622-fe0f","☢":"2622","☣️":"2623-fe0f","☣":"2623","☦️":"2626-fe0f","☦":"2626","☪️":"262a-fe0f","☪":"262a","☮️":"262e-fe0f","☮":"262e","☯️":"262f-fe0f","☯":"262f","☸️":"2638-fe0f","☸":"2638","☹️":"2639-fe0f","☹":"2639","⚒️":"2692-fe0f","⚒":"2692","⚔️":"2694-fe0f","⚔":"2694","⚖️":"2696-fe0f","⚖":"2696","⚗️":"2697-fe0f","⚗":"2697","⚙️":"2699-fe0f","⚙":"2699","⚛️":"269b-fe0f","⚛":"269b","⚜️":"269c-fe0f","⚜":"269c","⚰️":"26b0-fe0f","⚰":"26b0","⚱️":"26b1-fe0f","⚱":"26b1","⛈️":"26c8-fe0f","⛈":"26c8","⛏️":"26cf-fe0f","⛏":"26cf","⛑️":"26d1-fe0f","⛑":"26d1","⛓️":"26d3-fe0f","⛓":"26d3","⛩️":"26e9-fe0f","⛩":"26e9","⛰️":"26f0-fe0f","⛰":"26f0","⛱️":"26f1-fe0f","⛱":"26f1","⛴️":"26f4-fe0f","⛴":"26f4","⛷️":"26f7-fe0f","⛷":"26f7","⛸️":"26f8-fe0f","⛸":"26f8","⛹️":"26f9-fe0f","⛹":"26f9","✡️":"2721-fe0f","✡":"2721","❣️":"2763-fe0f","❣":"2763","🥉":"1f949","🥈":"1f948","🥇":"1f947","🤺":"1f93a","🥅":"1f945","🤾":"1f93e","🇿":"1f1ff","🤽":"1f93d","🥋":"1f94b","🥊":"1f94a","🤼":"1f93c","🤹":"1f939","🤸":"1f938","🛶":"1f6f6","🛵":"1f6f5","🛴":"1f6f4","🛒":"1f6d2","🃏":"1f0cf","🅰":"1f170","🅱":"1f171","🅾":"1f17e","🛑":"1f6d1","🆎":"1f18e","🆑":"1f191","🇾":"1f1fe","🆒":"1f192","🆓":"1f193","🆔":"1f194","🆕":"1f195","🆖":"1f196","🆗":"1f197","🆘":"1f198","🥄":"1f944","🆙":"1f199","🆚":"1f19a","🥂":"1f942","🥃":"1f943","🈁":"1f201","🥙":"1f959","🈲":"1f232","🈳":"1f233","🈴":"1f234","🈵":"1f235","🈶":"1f236","🥘":"1f958","🈸":"1f238","🈹":"1f239","🥗":"1f957","🈺":"1f23a","🉐":"1f250","🉑":"1f251","🌀":"1f300","🥖":"1f956","🌁":"1f301","🌂":"1f302","🌃":"1f303","🌄":"1f304","🌅":"1f305","🌆":"1f306","🥕":"1f955","🌇":"1f307","🌈":"1f308","🥔":"1f954","🌉":"1f309","🌊":"1f30a","🌋":"1f30b","🌌":"1f30c","🌏":"1f30f","🌑":"1f311","🥓":"1f953","🌓":"1f313","🌔":"1f314","🌕":"1f315","🌙":"1f319","🌛":"1f31b","🌟":"1f31f","🥒":"1f952","🌠":"1f320","🌰":"1f330","🥑":"1f951","🌱":"1f331","🌴":"1f334","🌵":"1f335","🌷":"1f337","🌸":"1f338","🌹":"1f339","🌺":"1f33a","🌻":"1f33b","🌼":"1f33c","🌽":"1f33d","🥐":"1f950","🌾":"1f33e","🌿":"1f33f","🍀":"1f340","🍁":"1f341","🍂":"1f342","🍃":"1f343","🍄":"1f344","🍅":"1f345","🍆":"1f346","🍇":"1f347","🍈":"1f348","🍉":"1f349","🍊":"1f34a","🥀":"1f940","🍌":"1f34c","🍍":"1f34d","🍎":"1f34e","🍏":"1f34f","🍑":"1f351","🍒":"1f352","🍓":"1f353","🦏":"1f98f","🍔":"1f354","🍕":"1f355","🍖":"1f356","🦎":"1f98e","🍗":"1f357","🍘":"1f358","🍙":"1f359","🦍":"1f98d","🍚":"1f35a","🍛":"1f35b","🦌":"1f98c","🍜":"1f35c","🍝":"1f35d","🍞":"1f35e","🍟":"1f35f","🦋":"1f98b","🍠":"1f360","🍡":"1f361","🦊":"1f98a","🍢":"1f362","🍣":"1f363","🦉":"1f989","🍤":"1f364","🍥":"1f365","🦈":"1f988","🍦":"1f366","🦇":"1f987","🍧":"1f367","🇽":"1f1fd","🍨":"1f368","🦆":"1f986","🍩":"1f369","🦅":"1f985","🍪":"1f36a","🖤":"1f5a4","🍫":"1f36b","🍬":"1f36c","🍭":"1f36d","🍮":"1f36e","🍯":"1f36f","🤞":"1f91e","🍰":"1f370","🍱":"1f371","🍲":"1f372","🤝":"1f91d","🍳":"1f373","🍴":"1f374","🍵":"1f375","🍶":"1f376","🍷":"1f377","🍸":"1f378","🍹":"1f379","🍺":"1f37a","🍻":"1f37b","🎀":"1f380","🎁":"1f381","🎂":"1f382","🎃":"1f383","🤛":"1f91b","🤜":"1f91c","🎄":"1f384","🎅":"1f385","🎆":"1f386","🤚":"1f91a","🎇":"1f387","🎈":"1f388","🎉":"1f389","🎊":"1f38a","🎋":"1f38b","🎌":"1f38c","🤙":"1f919","🎍":"1f38d","🕺":"1f57a","🎎":"1f38e","🤳":"1f933","🎏":"1f38f","🤰":"1f930","🎐":"1f390","🤦":"1f926","🤷":"1f937","🎑":"1f391","🎒":"1f392","🎓":"1f393","🎠":"1f3a0","🎡":"1f3a1","🎢":"1f3a2","🎣":"1f3a3","🎤":"1f3a4","🎥":"1f3a5","🎦":"1f3a6","🎧":"1f3a7","🤶":"1f936","🎨":"1f3a8","🤵":"1f935","🎩":"1f3a9","🎪":"1f3aa","🤴":"1f934","🎫":"1f3ab","🎬":"1f3ac","🎭":"1f3ad","🤧":"1f927","🎮":"1f3ae","🎯":"1f3af","🎰":"1f3b0","🎱":"1f3b1","🎲":"1f3b2","🎳":"1f3b3","🎴":"1f3b4","🤥":"1f925","🎵":"1f3b5","🎶":"1f3b6","🎷":"1f3b7","🤤":"1f924","🎸":"1f3b8","🎹":"1f3b9","🎺":"1f3ba","🤣":"1f923","🎻":"1f3bb","🎼":"1f3bc","🎽":"1f3bd","🤢":"1f922","🎾":"1f3be","🎿":"1f3bf","🏀":"1f3c0","🏁":"1f3c1","🤡":"1f921","🏂":"1f3c2","🏃":"1f3c3","🏄":"1f3c4","🏆":"1f3c6","🏈":"1f3c8","🏊":"1f3ca","🏠":"1f3e0","🏡":"1f3e1","🏢":"1f3e2","🏣":"1f3e3","🏥":"1f3e5","🏦":"1f3e6","🏧":"1f3e7","🏨":"1f3e8","🏩":"1f3e9","🏪":"1f3ea","🏫":"1f3eb","🏬":"1f3ec","🤠":"1f920","🏭":"1f3ed","🏮":"1f3ee","🏯":"1f3ef","🏰":"1f3f0","🐌":"1f40c","🐍":"1f40d","🐎":"1f40e","🐑":"1f411","🐒":"1f412","🐔":"1f414","🐗":"1f417","🐘":"1f418","🐙":"1f419","🐚":"1f41a","🐛":"1f41b","🐜":"1f41c","🐝":"1f41d","🐞":"1f41e","🐟":"1f41f","🐠":"1f420","🐡":"1f421","🐢":"1f422","🐣":"1f423","🐤":"1f424","🐥":"1f425","🐦":"1f426","🐧":"1f427","🐨":"1f428","🐩":"1f429","🐫":"1f42b","🐬":"1f42c","🐭":"1f42d","🐮":"1f42e","🐯":"1f42f","🐰":"1f430","🐱":"1f431","🐲":"1f432","🐳":"1f433","🐴":"1f434","🐵":"1f435","🐶":"1f436","🐷":"1f437","🐸":"1f438","🐹":"1f439","🐺":"1f43a","🐻":"1f43b","🐼":"1f43c","🐽":"1f43d","🐾":"1f43e","👀":"1f440","👂":"1f442","👃":"1f443","👄":"1f444","👅":"1f445","👆":"1f446","👇":"1f447","👈":"1f448","👉":"1f449","👊":"1f44a","👋":"1f44b","👌":"1f44c","👍":"1f44d","👎":"1f44e","👏":"1f44f","👐":"1f450","👑":"1f451","👒":"1f452","👓":"1f453","👔":"1f454","👕":"1f455","👖":"1f456","👗":"1f457","👘":"1f458","👙":"1f459","👚":"1f45a","👛":"1f45b","👜":"1f45c","👝":"1f45d","👞":"1f45e","👟":"1f45f","👠":"1f460","👡":"1f461","👢":"1f462","👣":"1f463","👤":"1f464","👦":"1f466","👧":"1f467","👨":"1f468","👩":"1f469","👪":"1f46a","👫":"1f46b","👮":"1f46e","👯":"1f46f","👰":"1f470","👱":"1f471","👲":"1f472","👳":"1f473","👴":"1f474","👵":"1f475","👶":"1f476","👷":"1f477","👸":"1f478","👹":"1f479","👺":"1f47a","👻":"1f47b","👼":"1f47c","👽":"1f47d","👾":"1f47e","👿":"1f47f","💀":"1f480","📇":"1f4c7","💁":"1f481","💂":"1f482","💃":"1f483","💄":"1f484","💅":"1f485","📒":"1f4d2","💆":"1f486","📓":"1f4d3","💇":"1f487","📔":"1f4d4","💈":"1f488","📕":"1f4d5","💉":"1f489","📖":"1f4d6","💊":"1f48a","📗":"1f4d7","💋":"1f48b","📘":"1f4d8","💌":"1f48c","📙":"1f4d9","💍":"1f48d","📚":"1f4da","💎":"1f48e","📛":"1f4db","💏":"1f48f","📜":"1f4dc","💐":"1f490","📝":"1f4dd","💑":"1f491","📞":"1f4de","💒":"1f492","📟":"1f4df","📠":"1f4e0","💓":"1f493","📡":"1f4e1","📢":"1f4e2","💔":"1f494","📣":"1f4e3","📤":"1f4e4","💕":"1f495","📥":"1f4e5","📦":"1f4e6","💖":"1f496","📧":"1f4e7","📨":"1f4e8","💗":"1f497","📩":"1f4e9","📪":"1f4ea","💘":"1f498","📫":"1f4eb","📮":"1f4ee","💙":"1f499","📰":"1f4f0","📱":"1f4f1","💚":"1f49a","📲":"1f4f2","📳":"1f4f3","💛":"1f49b","📴":"1f4f4","📶":"1f4f6","💜":"1f49c","📷":"1f4f7","📹":"1f4f9","💝":"1f49d","📺":"1f4fa","📻":"1f4fb","💞":"1f49e","📼":"1f4fc","🔃":"1f503","💟":"1f49f","🔊":"1f50a","🔋":"1f50b","💠":"1f4a0","🔌":"1f50c","🔍":"1f50d","💡":"1f4a1","🔎":"1f50e","🔏":"1f50f","💢":"1f4a2","🔐":"1f510","🔑":"1f511","💣":"1f4a3","🔒":"1f512","🔓":"1f513","💤":"1f4a4","🔔":"1f514","🔖":"1f516","💥":"1f4a5","🔗":"1f517","🔘":"1f518","💦":"1f4a6","🔙":"1f519","🔚":"1f51a","💧":"1f4a7","🔛":"1f51b","🔜":"1f51c","💨":"1f4a8","🔝":"1f51d","🔞":"1f51e","💩":"1f4a9","🔟":"1f51f","💪":"1f4aa","🔠":"1f520","🔡":"1f521","💫":"1f4ab","🔢":"1f522","🔣":"1f523","💬":"1f4ac","🔤":"1f524","🔥":"1f525","💮":"1f4ae","🔦":"1f526","🔧":"1f527","💯":"1f4af","🔨":"1f528","🔩":"1f529","💰":"1f4b0","🔪":"1f52a","🔫":"1f52b","💱":"1f4b1","🔮":"1f52e","💲":"1f4b2","🔯":"1f52f","💳":"1f4b3","🔰":"1f530","🔱":"1f531","💴":"1f4b4","🔲":"1f532","🔳":"1f533","💵":"1f4b5","🔴":"1f534","🔵":"1f535","💸":"1f4b8","🔶":"1f536","🔷":"1f537","💹":"1f4b9","🔸":"1f538","🔹":"1f539","💺":"1f4ba","🔺":"1f53a","🔻":"1f53b","💻":"1f4bb","🔼":"1f53c","💼":"1f4bc","🔽":"1f53d","🕐":"1f550","💽":"1f4bd","🕑":"1f551","💾":"1f4be","🕒":"1f552","💿":"1f4bf","🕓":"1f553","📀":"1f4c0","🕔":"1f554","🕕":"1f555","📁":"1f4c1","🕖":"1f556","🕗":"1f557","📂":"1f4c2","🕘":"1f558","🕙":"1f559","📃":"1f4c3","🕚":"1f55a","🕛":"1f55b","📄":"1f4c4","🗻":"1f5fb","🗼":"1f5fc","📅":"1f4c5","🗽":"1f5fd","🗾":"1f5fe","📆":"1f4c6","🗿":"1f5ff","😁":"1f601","😂":"1f602","😃":"1f603","📈":"1f4c8","😄":"1f604","😅":"1f605","📉":"1f4c9","😆":"1f606","😉":"1f609","📊":"1f4ca","😊":"1f60a","😋":"1f60b","📋":"1f4cb","😌":"1f60c","😍":"1f60d","📌":"1f4cc","😏":"1f60f","😒":"1f612","📍":"1f4cd","😓":"1f613","😔":"1f614","📎":"1f4ce","😖":"1f616","😘":"1f618","📏":"1f4cf","😚":"1f61a","😜":"1f61c","📐":"1f4d0","😝":"1f61d","😞":"1f61e","📑":"1f4d1","😠":"1f620","😡":"1f621","😢":"1f622","😣":"1f623","😤":"1f624","😥":"1f625","😨":"1f628","😩":"1f629","😪":"1f62a","😫":"1f62b","😭":"1f62d","😰":"1f630","😱":"1f631","😲":"1f632","😳":"1f633","😵":"1f635","😷":"1f637","😸":"1f638","😹":"1f639","😺":"1f63a","😻":"1f63b","😼":"1f63c","😽":"1f63d","😾":"1f63e","😿":"1f63f","🙀":"1f640","🙅":"1f645","🙆":"1f646","🙇":"1f647","🙈":"1f648","🙉":"1f649","🙊":"1f64a","🙋":"1f64b","🙌":"1f64c","🙍":"1f64d","🙎":"1f64e","🙏":"1f64f","🚀":"1f680","🚃":"1f683","🚄":"1f684","🚅":"1f685","🚇":"1f687","🚉":"1f689","🚌":"1f68c","🚏":"1f68f","🚑":"1f691","🚒":"1f692","🚓":"1f693","🚕":"1f695","🚗":"1f697","🚙":"1f699","🚚":"1f69a","🚢":"1f6a2","🚤":"1f6a4","🚥":"1f6a5","🚧":"1f6a7","🚨":"1f6a8","🚩":"1f6a9","🚪":"1f6aa","🚫":"1f6ab","🚬":"1f6ac","🚭":"1f6ad","🚲":"1f6b2","🚶":"1f6b6","🚹":"1f6b9","🚺":"1f6ba","🚻":"1f6bb","🚼":"1f6bc","🚽":"1f6bd","🚾":"1f6be","🛀":"1f6c0","🤘":"1f918","😀":"1f600","😇":"1f607","😈":"1f608","😎":"1f60e","😐":"1f610","😑":"1f611","😕":"1f615","😗":"1f617","😙":"1f619","😛":"1f61b","😟":"1f61f","😦":"1f626","😧":"1f627","😬":"1f62c","😮":"1f62e","😯":"1f62f","😴":"1f634","😶":"1f636","🚁":"1f681","🚂":"1f682","🚆":"1f686","🚈":"1f688","🚊":"1f68a","🚍":"1f68d","🚎":"1f68e","🚐":"1f690","🚔":"1f694","🚖":"1f696","🚘":"1f698","🚛":"1f69b","🚜":"1f69c","🚝":"1f69d","🚞":"1f69e","🚟":"1f69f","🚠":"1f6a0","🚡":"1f6a1","🚣":"1f6a3","🚦":"1f6a6","🚮":"1f6ae","🚯":"1f6af","🚰":"1f6b0","🚱":"1f6b1","🚳":"1f6b3","🚴":"1f6b4","🚵":"1f6b5","🚷":"1f6b7","🚸":"1f6b8","🚿":"1f6bf","🛁":"1f6c1","🛂":"1f6c2","🛃":"1f6c3","🛄":"1f6c4","🛅":"1f6c5","🌍":"1f30d","🌎":"1f30e","🌐":"1f310","🌒":"1f312","🌖":"1f316","🌗":"1f317","🌘":"1f318","🌚":"1f31a","🌜":"1f31c","🌝":"1f31d","🌞":"1f31e","🌲":"1f332","🌳":"1f333","🍋":"1f34b","🍐":"1f350","🍼":"1f37c","🏇":"1f3c7","🏉":"1f3c9","🏤":"1f3e4","🐀":"1f400","🐁":"1f401","🐂":"1f402","🐃":"1f403","🐄":"1f404","🐅":"1f405","🐆":"1f406","🐇":"1f407","🐈":"1f408","🐉":"1f409","🐊":"1f40a","🐋":"1f40b","🐏":"1f40f","🐐":"1f410","🐓":"1f413","🐕":"1f415","🐖":"1f416","🐪":"1f42a","👥":"1f465","👬":"1f46c","👭":"1f46d","💭":"1f4ad","💶":"1f4b6","💷":"1f4b7","📬":"1f4ec","📭":"1f4ed","📯":"1f4ef","📵":"1f4f5","🔀":"1f500","🔁":"1f501","🔂":"1f502","🔄":"1f504","🔅":"1f505","🔆":"1f506","🔇":"1f507","🔉":"1f509","🔕":"1f515","🔬":"1f52c","🔭":"1f52d","🕜":"1f55c","🕝":"1f55d","🕞":"1f55e","🕟":"1f55f","🕠":"1f560","🕡":"1f561","🕢":"1f562","🕣":"1f563","🕤":"1f564","🕥":"1f565","🕦":"1f566","🕧":"1f567","🔈":"1f508","🚋":"1f68b","🏅":"1f3c5","🏴":"1f3f4","📸":"1f4f8","🛌":"1f6cc","🖕":"1f595","🖖":"1f596","🙁":"1f641","🙂":"1f642","🛫":"1f6eb","🛬":"1f6ec","🏻":"1f3fb","🏼":"1f3fc","🏽":"1f3fd","🏾":"1f3fe","🏿":"1f3ff","🙃":"1f643","🤑":"1f911","🤓":"1f913","🤗":"1f917","🙄":"1f644","🤔":"1f914","🤐":"1f910","🤒":"1f912","🤕":"1f915","🤖":"1f916","🦁":"1f981","🦄":"1f984","🦂":"1f982","🦀":"1f980","🦃":"1f983","🧀":"1f9c0","🌭":"1f32d","🌮":"1f32e","🌯":"1f32f","🍿":"1f37f","🍾":"1f37e","🏹":"1f3f9","🏺":"1f3fa","🛐":"1f6d0","🕋":"1f54b","🕌":"1f54c","🕍":"1f54d","🕎":"1f54e","📿":"1f4ff","🏏":"1f3cf","🏐":"1f3d0","🏑":"1f3d1","🏒":"1f3d2","🏓":"1f3d3","🏸":"1f3f8","🥁":"1f941","🦐":"1f990","🦑":"1f991","🥚":"1f95a","🥛":"1f95b","🥜":"1f95c","🥝":"1f95d","🥞":"1f95e","🇼":"1f1fc","🇻":"1f1fb","🇺":"1f1fa","🇹":"1f1f9","🇸":"1f1f8","🇷":"1f1f7","🇶":"1f1f6","🇵":"1f1f5","🇴":"1f1f4","🇳":"1f1f3","🇲":"1f1f2","🇱":"1f1f1","🇰":"1f1f0","🇯":"1f1ef","🇮":"1f1ee","🇭":"1f1ed","🇬":"1f1ec","🇫":"1f1eb","🇪":"1f1ea","🇩":"1f1e9","🇨":"1f1e8","🇧":"1f1e7","🇦":"1f1e6","⏩":"23e9","⏪":"23ea","⏫":"23eb","⏬":"23ec","⏰":"23f0","⏳":"23f3","⛎":"26ce","✅":"2705","✊":"270a","✋":"270b","✨":"2728","❌":"274c","❎":"274e","❓":"2753","❔":"2754","❕":"2755","➕":"2795","➖":"2796","➗":"2797","➰":"27b0","➿":"27bf","©":"00a9","®":"00ae","‼":"203c","⁉":"2049","™":"2122","ℹ":"2139","↔":"2194","↕":"2195","↖":"2196","↗":"2197","↘":"2198","↙":"2199","↩":"21a9","↪":"21aa","⌚":"231a","⌛":"231b","Ⓜ":"24c2","▪":"25aa","▫":"25ab","▶":"25b6","◀":"25c0","◻":"25fb","◼":"25fc","◽":"25fd","◾":"25fe","☀":"2600","☁":"2601","☎":"260e","☑":"2611","☔":"2614","☕":"2615","☝":"261d","☺":"263a","♈":"2648","♉":"2649","♊":"264a","♋":"264b","♌":"264c","♍":"264d","♎":"264e","♏":"264f","♐":"2650","♑":"2651","♒":"2652","♓":"2653","♠":"2660","♣":"2663","♥":"2665","♦":"2666","♨":"2668","♻":"267b","♿":"267f","⚓":"2693","⚠":"26a0","⚡":"26a1","⚪":"26aa","⚫":"26ab","⚽":"26bd","⚾":"26be","⛄":"26c4","⛅":"26c5","⛔":"26d4","⛪":"26ea","⛲":"26f2","⛳":"26f3","⛵":"26f5","⛺":"26fa","⛽":"26fd","✂":"2702","✈":"2708","✉":"2709","✌":"270c","✏":"270f","✒":"2712","✔":"2714","✖":"2716","✳":"2733","✴":"2734","❄":"2744","❇":"2747","❗":"2757","❤":"2764","➡":"27a1","⤴":"2934","⤵":"2935","⬅":"2b05","⬆":"2b06","⬇":"2b07","⬛":"2b1b","⬜":"2b1c","⭐":"2b50","⭕":"2b55","〰":"3030","〽":"303d","㊗":"3297","㊙":"3299","🀄":"1f004","🅿":"1f17f","🈂":"1f202","🈚":"1f21a","🈯":"1f22f","🈷":"1f237","🎞":"1f39e","🎟":"1f39f","🏋":"1f3cb","🏌":"1f3cc","🏍":"1f3cd","🏎":"1f3ce","🎖":"1f396","🎗":"1f397","🌶":"1f336","🌧":"1f327","🌨":"1f328","🌩":"1f329","🌪":"1f32a","🌫":"1f32b","🌬":"1f32c","🐿":"1f43f","🕷":"1f577","🕸":"1f578","🌡":"1f321","🎙":"1f399","🎚":"1f39a","🎛":"1f39b","🏳":"1f3f3","🏵":"1f3f5","🏷":"1f3f7","📽":"1f4fd","✝":"271d","🕉":"1f549","🕊":"1f54a","🕯":"1f56f","🕰":"1f570","🕳":"1f573","🕶":"1f576","🕹":"1f579","🖇":"1f587","🖊":"1f58a","🖋":"1f58b","🖌":"1f58c","🖍":"1f58d","🖥":"1f5a5","🖨":"1f5a8","⌨":"2328","🖲":"1f5b2","🖼":"1f5bc","🗂":"1f5c2","🗃":"1f5c3","🗄":"1f5c4","🗑":"1f5d1","🗒":"1f5d2","🗓":"1f5d3","🗜":"1f5dc","🗝":"1f5dd","🗞":"1f5de","🗡":"1f5e1","🗣":"1f5e3","🗨":"1f5e8","🗯":"1f5ef","🗳":"1f5f3","🗺":"1f5fa","🛠":"1f6e0","🛡":"1f6e1","🛢":"1f6e2","🛰":"1f6f0","🍽":"1f37d","👁":"1f441","🕴":"1f574","🕵":"1f575","✍":"270d","🖐":"1f590","🏔":"1f3d4","🏕":"1f3d5","🏖":"1f3d6","🏗":"1f3d7","🏘":"1f3d8","🏙":"1f3d9","🏚":"1f3da","🏛":"1f3db","🏜":"1f3dc","🏝":"1f3dd","🏞":"1f3de","🏟":"1f3df","🛋":"1f6cb","🛍":"1f6cd","🛎":"1f6ce","🛏":"1f6cf","🛣":"1f6e3","🛤":"1f6e4","🛥":"1f6e5","🛩":"1f6e9","🛳":"1f6f3","⏏":"23cf","⏭":"23ed","⏮":"23ee","⏯":"23ef","⏱":"23f1","⏲":"23f2","⏸":"23f8","⏹":"23f9","⏺":"23fa","☂":"2602","☃":"2603","☄":"2604","☘":"2618","☠":"2620","☢":"2622","☣":"2623","☦":"2626","☪":"262a","☮":"262e","☯":"262f","☸":"2638","☹":"2639","⚒":"2692","⚔":"2694","⚖":"2696","⚗":"2697","⚙":"2699","⚛":"269b","⚜":"269c","⚰":"26b0","⚱":"26b1","⛈":"26c8","⛏":"26cf","⛑":"26d1","⛓":"26d3","⛩":"26e9","⛰":"26f0","⛱":"26f1","⛴":"26f4","⛷":"26f7","⛸":"26f8","⛹":"26f9","✡":"2721","❣":"2763","🌤":"1f324","🌥":"1f325","🌦":"1f326","🖱":"1f5b1"},e.imagePathPNG="https://cdn.jsdelivr.net/emojione/assets/png/",e.imagePathSVG="https://cdn.jsdelivr.net/emojione/assets/svg/",e.imagePathSVGSprites="./../assets/sprites/emojione.sprites.svg",e.imageType="png",e.imageTitleTag=!0,e.sprites=!1,e.unicodeAlt=!0,e.ascii=!1,e.cacheBustParam="?v=2.2.7",e.regShortNames=new RegExp("<object[^>]*>.*?</object>|<span[^>]*>.*?</span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|("+e.shortnames+")","gi"),e.regAscii=new RegExp("<object[^>]*>.*?</object>|<span[^>]*>.*?</span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|((\\s|^)"+e.asciiRegexp+"(?=\\s|$|[!,.?]))","g"),e.regUnicode=new RegExp("<object[^>]*>.*?</object>|<span[^>]*>.*?</span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|("+e.unicodeRegexp+")","gi"),e.toImage=function(t){return t=e.unicodeToImage(t),t=e.shortnameToImage(t)},e.unifyUnicode=function(t){return t=e.toShort(t),t=e.shortnameToUnicode(t)},e.shortnameToAscii=function(t){var n,r=e.objectFlip(e.asciiList);return t=t.replace(e.regShortNames,function(t){return void 0!==t&&""!==t&&t in e.emojioneList?(n=e.emojioneList[t].unicode[e.emojioneList[t].unicode.length-1],void 0!==r[n]?r[n]:t):t})},e.shortnameToUnicode=function(t){var n,r;return t=t.replace(e.regShortNames,function(t){return void 0!==t&&""!==t&&t in e.emojioneList?(n=e.emojioneList[t].unicode[0].toUpperCase(),e.emojioneList[t].fname,r=e.emojioneList[t].uc,e.convert(r)):t}),e.ascii&&(t=t.replace(e.regAscii,function(t,r,o,i){return void 0!==i&&""!==i&&e.unescapeHTML(i)in e.asciiList?(i=e.unescapeHTML(i),n=e.asciiList[i].toUpperCase(),o+e.convert(n)):t})),t},e.shortnameToImage=function(t){var n,r,o;return t=t.replace(e.regShortNames,function(t){return void 0!==t&&""!==t&&t in e.emojioneList?(n=e.emojioneList[t].unicode[e.emojioneList[t].unicode.length-1],o=e.imageTitleTag?'title="'+t+'"':"",r=e.unicodeAlt?e.convert(n.toUpperCase()):t,"png"===e.imageType?e.sprites?'<span class="emojione emojione-'+n+'" '+o+">"+r+"</span>":'<img class="emojione" alt="'+r+'" '+o+' src="'+e.imagePathPNG+n+".png"+e.cacheBustParam+'"/>':e.sprites?'<svg class="emojione"><description>'+r+'</description><use xlink:href="'+e.imagePathSVGSprites+"#emoji-"+n+'"></use></svg>':'<object class="emojione" data="'+e.imagePathSVG+n+".svg"+e.cacheBustParam+'" type="image/svg+xml" standby="'+r+'">'+r+"</object>"):t}),e.ascii&&(t=t.replace(e.regAscii,function(t,i,a,s){return void 0!==s&&""!==s&&e.unescapeHTML(s)in e.asciiList?(s=e.unescapeHTML(s),n=e.asciiList[s],o=e.imageTitleTag?'title="'+e.escapeHTML(s)+'"':"",r=e.unicodeAlt?e.convert(n.toUpperCase()):e.escapeHTML(s),"png"===e.imageType?e.sprites?a+'<span class="emojione emojione-'+n+'" '+o+">"+r+"</span>":a+'<img class="emojione" alt="'+r+'" '+o+' src="'+e.imagePathPNG+n+".png"+e.cacheBustParam+'"/>':e.sprites?'<svg class="emojione"><description>'+r+'</description><use xlink:href="'+e.imagePathSVGSprites+"#emoji-"+n+'"></use></svg>':a+'<object class="emojione" data="'+e.imagePathSVG+n+".svg"+e.cacheBustParam+'" type="image/svg+xml" standby="'+r+'">'+r+"</object>"):t})),t},e.unicodeToImage=function(t){var n,r,o,i,a,s=e.mapUnicodeToShort();return t=t.replace(e.regUnicode,function(t){return void 0!==t&&""!==t&&t in e.jsEscapeMap?(n=e.jsEscapeMap[t],r=s[n],o=e.emojioneList[r].fname,i=e.unicodeAlt?e.convert(n.toUpperCase()):r,a=e.imageTitleTag?'title="'+r+'"':"","png"===e.imageType?e.sprites?'<span class="emojione emojione-'+n+'" '+a+">"+i+"</span>":'<img class="emojione" alt="'+i+'" '+a+' src="'+e.imagePathPNG+o+".png"+e.cacheBustParam+'"/>':e.sprites?'<svg class="emojione"><description>'+i+'</description><use xlink:href="'+e.imagePathSVGSprites+"#emoji-"+n+'"></use></svg>':'<img class="emojione" alt="'+i+'" '+a+' src="'+e.imagePathSVG+o+".svg"+e.cacheBustParam+'"/>'):t})},e.toShort=function(t){var n=e.getUnicodeReplacementRegEx(),r=e.mapUnicodeCharactersToShort();return e.replaceAll(t,n,r)},e.convert=function(e){if(e.indexOf("-")>-1){for(var t=[],n=e.split("-"),r=0;r<n.length;r++){var o=parseInt(n[r],16);if(o>=65536&&o<=1114111){var i=Math.floor((o-65536)/1024)+55296,a=(o-65536)%1024+56320;o=String.fromCharCode(i)+String.fromCharCode(a)}else o=String.fromCharCode(o);t.push(o)}return t.join("")}if((n=parseInt(e,16))>=65536&&n<=1114111){i=Math.floor((n-65536)/1024)+55296,a=(n-65536)%1024+56320;return String.fromCharCode(i)+String.fromCharCode(a)}return String.fromCharCode(n)},e.escapeHTML=function(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'"};return e.replace(/[&<>"']/g,function(e){return t[e]})},e.unescapeHTML=function(e){var t={"&":"&","&":"&","&":"&","<":"<","<":"<","<":"<",">":">",">":">",">":">",""":'"',""":'"',""":'"',"'":"'","'":"'","'":"'"};return e.replace(/&(?:amp|#38|#x26|lt|#60|#x3C|gt|#62|#x3E|apos|#39|#x27|quot|#34|#x22);/gi,function(e){return t[e]})},e.mapEmojioneList=function(t){for(var n in e.emojioneList)if(e.emojioneList.hasOwnProperty(n))for(var r=0,o=e.emojioneList[n].unicode.length;r<o;r++){t(e.emojioneList[n].unicode[r],n)}},e.mapUnicodeToShort=function(){return e.memMapShortToUnicode||(e.memMapShortToUnicode={},e.mapEmojioneList(function(t,n){e.memMapShortToUnicode[t]=n})),e.memMapShortToUnicode},e.memoizeReplacement=function(){if(!e.unicodeReplacementRegEx||!e.memMapShortToUnicodeCharacters){var t=[];e.memMapShortToUnicodeCharacters={},e.mapEmojioneList(function(n,r){var o=e.convert(n);e.emojioneList[r].isCanonical&&(e.memMapShortToUnicodeCharacters[o]=r),t.push(o)}),e.unicodeReplacementRegEx=t.join("|")}},e.mapUnicodeCharactersToShort=function(){return e.memoizeReplacement(),e.memMapShortToUnicodeCharacters},e.getUnicodeReplacementRegEx=function(){return e.memoizeReplacement(),e.unicodeReplacementRegEx},e.objectFlip=function(e){var t,n={};for(t in e)e.hasOwnProperty(t)&&(n[e[t]]=t);return n},e.escapeRegExp=function(e){return e.replace(/[-[\]{}()*+?.,;:&\\^$#\s]/g,"\\$&")},e.replaceAll=function(t,n,r){var o=e.escapeRegExp(n),i=new RegExp("<object[^>]*>.*?</object>|<span[^>]*>.*?</span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|("+o+")","gi");return t.replace(i,function(e,t){return void 0===t||""===t?e:r[t]})}}(this.emojione=this.emojione||{}),e.exports=this.emojione},function(e,t,n){var r=n(177)(Object,"create");e.exports=r},function(e,t,n){var r=n(1431),o=n(1432),i=n(1433),a=n(1434),s=n(1435);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=o,l.prototype.get=i,l.prototype.has=a,l.prototype.set=s,e.exports=l},function(e,t,n){var r=n(303);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},function(e,t){e.exports=function(e,t){return e===t||e!=e&&t!=t}},function(e,t,n){var r=n(1437);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={movement:t.noMovement={displaced:[],amount:{x:0,y:0},isBeyondStartPosition:!1},direction:null,destination:null};t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getDroppableDimension=t.scrollDroppable=t.clip=t.getDraggableDimension=t.noSpacing=void 0;var r=l(n(37)),o=n(1463),i=l(n(198)),a=n(244),s=n(70);function l(e){return e&&e.__esModule?e:{default:e}}var u={x:0,y:0},c=t.noSpacing={top:0,right:0,bottom:0,left:0},f=function(e,t){var n=e.top,r=e.right,o=e.bottom,a=e.left;return(0,i.default)({top:n+t.y,left:a+t.x,bottom:o+t.y,right:r+t.x})},d=function(e,t){var n=e.top,r=e.right,o=e.bottom,a=e.left;return(0,i.default)({top:n-t.top,left:a-t.left,bottom:o+t.bottom,right:r+t.right})},p=(t.getDraggableDimension=function(e){var t=e.descriptor,n=e.client,r=e.margin,o=void 0===r?c:r,a=e.windowScroll,s=f(n,void 0===a?u:a);return{descriptor:t,placeholder:{margin:o,withoutMargin:{width:n.width,height:n.height}},client:{withoutMargin:(0,i.default)(n),withMargin:(0,i.default)(d(n,o))},page:{withoutMargin:(0,i.default)(s),withMargin:(0,i.default)(d(s,o))}}},t.clip=function(e,t){var n=(0,i.default)({top:Math.max(t.top,e.top),right:Math.min(t.right,e.right),bottom:Math.min(t.bottom,e.bottom),left:Math.max(t.left,e.left)});return n.width<=0||n.height<=0?null:n});t.scrollDroppable=function(e,t){var n=e.viewport,o=(0,s.subtract)(t,n.frameScroll.initial),i=(0,s.negate)(o),l=(0,a.offset)(n.subject,i),u={frame:n.frame,subject:n.subject,frameScroll:{initial:n.frameScroll.initial,current:t,diff:{value:o,displacement:i}},clipped:p(n.frame,l)};return(0,r.default)({},e,{viewport:u})},t.getDroppableDimension=function(e){var t=e.descriptor,n=e.client,r=e.frameClient,s=e.frameScroll,l=void 0===s?u:s,m=e.direction,h=void 0===m?"vertical":m,_=e.margin,g=void 0===_?c:_,v=e.padding,y=void 0===v?c:v,b=e.windowScroll,E=void 0===b?u:b,C=e.isEnabled,S=void 0===C||C,D=d(n,g),w=f(n,E),T=d(w,g),x=r?f(r,E):T,R={frame:x,frameScroll:{initial:l,current:l,diff:{value:u,displacement:u}},subject:T,clipped:p(x,T)};return{descriptor:t,isEnabled:S,axis:"vertical"===h?o.vertical:o.horizontal,client:{withoutMargin:(0,i.default)(n),withMargin:(0,i.default)(D),withMarginAndPadding:(0,i.default)(d(D,y))},page:{withoutMargin:(0,i.default)(w),withMargin:T,withMarginAndPadding:(0,i.default)(d(w,(0,a.add)(g,y)))},viewport:R}}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]="number"==typeof e[n]?e[n]:e[n].val);return t},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e.preventDefault(),e.stopPropagation()}},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(446));var o=n(8),i=n(3);e.exports={eventTriggersUnreadCount:function(e){return(!e.sender||e.sender.userId!=o.get().credentials.userId)&&("m.room.member"!=e.getType()&&("m.room.third_party_invite"!=e.getType()&&("m.call.answer"!=e.getType()&&"m.call.hangup"!=e.getType()&&(("m.room.message"!=e.getType||"m.notify"!=e.getContent().msgtype)&&i.getComponent("rooms.EventTile").haveTileForEvent(e)))))},doesRoomHaveUnreadMessages:function(e){var t=o.get().credentials.userId,n=e.getEventReadUpTo(t);if(e.timeline.length&&e.timeline[e.timeline.length-1].sender&&e.timeline[e.timeline.length-1].sender.userId===t)return!1;for(var i=e.timeline.length-1;i>=0;--i){var a=e.timeline[i];if(a.getId()==n)return!1;if(!(0,r.default)(a)&&this.eventTriggersUnreadCount(a))return!0}return!0}}},function(e,t,n){"use strict";t.__esModule=!0,t.inherits=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=Object.create(e.prototype);for(var o in n)r[o]=n[o];return r.constructor=t,t.prototype=r,t}},function(e,t,n){"use strict";var r=a(n(37)),o=a(n(128)),i=a(n(1));function a(e){return e&&e.__esModule?e:{default:e}}var s=n(0),l=n(290),u=n(3),c=n(10);e.exports=s.createClass({displayName:"MemberAvatar",propTypes:{member:i.default.object,fallbackUserId:i.default.string,width:i.default.number,height:i.default.number,resizeMethod:i.default.string,onClick:i.default.func,viewUserOnClick:i.default.bool,title:i.default.string},getDefaultProps:function(){return{width:40,height:40,resizeMethod:"crop",viewUserOnClick:!1}},getInitialState:function(){return this._getState(this.props)},componentWillReceiveProps:function(e){this.setState(this._getState(e))},_getState:function(e){return e.member?{name:e.member.name,title:e.title||e.member.userId,imageUrl:l.avatarUrlForMember(e.member,e.width,e.height,e.resizeMethod)}:e.fallbackUserId?{name:e.fallbackUserId,title:e.fallbackUserId}:void console.error("MemberAvatar called somehow with null member or fallbackUserId")},render:function(){var e=this,t=u.getComponent("avatars.BaseAvatar"),n=this.props,i=n.member,a=n.fallbackUserId,l=n.onClick,f=n.viewUserOnClick,d=(0,o.default)(n,["member","fallbackUserId","onClick","viewUserOnClick"]),p=i?i.userId:a;return f&&(l=function(){c.dispatch({action:"view_user",member:e.props.member})}),s.createElement(t,(0,r.default)({},d,{name:this.state.name,title:this.state.title,idName:p,url:this.state.imageUrl,onClick:l}))}})},function(e,t,n){"use strict";var r=m(n(14)),o=m(n(0)),i=m(n(1)),a=m(n(452)),s=m(n(8)),l=m(n(3)),u=n(2),c=n(313),f=m(n(174)),d=m(n(99)),p=m(n(16));function m(e){return e&&e.__esModule?e:{default:e}}var h=void 0,_=0,g={};f.default.registerTintable(function(){(0,d.default)({uri:"img/download.svg"},function(e,t,n){if(!e){var o=(new DOMParser).parseFromString(n,"image/svg+xml"),i=f.default.calcSvgFixups([{contentDocument:o}]);f.default.applySvgFixups(i);var a=(new XMLSerializer).serializeToString(o);h="data:image/svg+xml;base64,"+window.btoa(a),(0,r.default)(g).forEach(function(e){g[e].tint()})}})});function v(e){if(!e)return"";var t=window.getComputedStyle(e,null),n=t.cssText;if(""==n)for(var r=0;r<t.length;r++)n+=t[r]+":",n+=t.getPropertyValue(t[r])+";";return n}e.exports=o.default.createClass({displayName:"MFileBody",getInitialState:function(){return{decryptedBlob:this.props.decryptedBlob?this.props.decryptedBlob:null}},contextTypes:{appConfig:i.default.object},presentableTextForFile:function(e){var t=(0,u._t)("Attachment");return e.body&&e.body.length>0&&(t=e.body),e.info&&e.info.size&&(t+=" ("+(0,a.default)(e.info.size)+")"),t},_getContentUrl:function(){var e=this.props.mxEvent.getContent();return s.default.get().mxcUrlToHttp(e.url)},componentDidMount:function(){this.id=_++,g[this.id]=this,this.tint()},componentWillUnmount:function(){delete g[this.id]},tint:function(){this.refs.downloadImage&&(this.refs.downloadImage.src=h),this.refs.iframe&&this.refs.iframe.contentWindow.postMessage({code:function(e){var t=e.data,n=document.getElementById("img");n.src=t.imgSrc,n.style=t.imgStyle,document.getElementById("a").style=t.style}.toString(),imgSrc:h,style:v(this.refs.dummyLink)},"*")},render:function(){var e=this,t=this.props.mxEvent.getContent(),n=this.presentableTextForFile(t),r=void 0!==t.file,i=t.body&&t.body.length>0?t.body:(0,u._t)("Attachment"),s=this._getContentUrl(),f=l.default.getComponent("dialogs.ErrorDialog");if(r){if(null===this.state.decryptedBlob){var d=!1;return o.default.createElement("span",{className:"mx_MFileBody",ref:"body"},o.default.createElement("div",{className:"mx_MFileBody_download"},o.default.createElement("a",{href:"javascript:void(0)",onClick:function(){if(d)return!1;d=!0,(0,c.decryptFile)(t.file).then(function(t){e.setState({decryptedBlob:t})}).catch(function(e){console.warn("Unable to decrypt attachment: ",e),p.default.createTrackedDialog("Error decrypting attachment","",f,{title:(0,u._t)("Error"),description:(0,u._t)("Error decrypting attachment")})}).finally(function(){d=!1})}},(0,u._t)("Decrypt %(text)s",{text:n}))))}var m="https://usercontent.riot.im/v1.html";return this.context.appConfig&&this.context.appConfig.cross_origin_renderer_url&&(m=this.context.appConfig.cross_origin_renderer_url),m+="?origin="+encodeURIComponent(window.location.origin),o.default.createElement("span",{className:"mx_MFileBody"},o.default.createElement("div",{className:"mx_MFileBody_download"},o.default.createElement("div",{style:{display:"none"}},o.default.createElement("a",{ref:"dummyLink"})),o.default.createElement("iframe",{src:m,onLoad:function(t){t.target.contentWindow.postMessage({code:function(e){var t=e.data,n=document.createElement("img");n.id="img",n.src=t.imgSrc;var r=document.createElement("a");r.id="a",r.rel=t.rel,r.target=t.target,r.download=t.download,r.style=t.style,r.href=window.URL.createObjectURL(t.blob),r.appendChild(n),r.appendChild(document.createTextNode(t.textContent));var o=document.body;o.style="margin: 0px; overflow: hidden",o.appendChild(r)}.toString(),imgSrc:h,style:v(e.refs.dummyLink),blob:e.state.decryptedBlob,download:i,rel:"noopener",target:"_blank",textContent:(0,u._t)("Download %(text)s",{text:n})},"*")},ref:"iframe"})))}if(s)return"file_grid"===this.props.tileShape?o.default.createElement("span",{className:"mx_MFileBody"},o.default.createElement("div",{className:"mx_MFileBody_download"},o.default.createElement("a",{className:"mx_MFileBody_downloadLink",href:s,download:i,target:"_blank"},i),o.default.createElement("div",{className:"mx_MImageBody_size"},t.info&&t.info.size?(0,a.default)(t.info.size):""))):o.default.createElement("span",{className:"mx_MFileBody"},o.default.createElement("div",{className:"mx_MFileBody_download"},o.default.createElement("a",{href:s,download:i,target:"_blank",rel:"noopener"},o.default.createElement("img",{src:h,width:"12",height:"14",ref:"downloadImage"}),(0,u._t)("Download %(text)s",{text:n}))));var _=n?": "+n:"";return o.default.createElement("span",{className:"mx_MFileBody"},(0,u._t)("Invalid file%(extra)s",{extra:_}))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decryptFile=function(e){var t=o.default.get().mxcUrlToHttp(e.url);return i.default.resolve(fetch(t)).then(function(e){return e.arrayBuffer()}).then(function(t){return r.default.decryptAttachment(t,e)}).then(function(t){var n=e.mimetype?e.mimetype.split(";")[0].trim():"";s[n]||(n="application/octet-stream");var r=new Blob([t],{type:n});return r})};var r=a(n(664));n(1686);var o=a(n(8)),i=a(n(9));function a(e){return e&&e.__esModule?e:{default:e}}var s={"image/jpeg":!0,"image/gif":!0,"image/png":!0,"video/mp4":!0,"video/webm":!0,"video/ogg":!0,"audio/mp4":!0,"audio/webm":!0,"audio/aac":!0,"audio/mpeg":!0,"audio/ogg":!0,"audio/wave":!0,"audio/wav":!0,"audio/x-wav":!0,"audio/x-pn-wav":!0,"audio/flac":!0,"audio/x-flac":!0}},function(e,t,n){e.exports=n(1695).default},function(e,t){var n=9007199254740991,r=/^(?:0|[1-9]\d*)$/;e.exports=function(e,t){var o=typeof e;return!!(t=null==t?n:t)&&("number"==o||"symbol"!=o&&r.test(e))&&e>-1&&e%1==0&&e<t}},function(e,t){e.exports=function(e){return function(t){return e(t)}}},function(e,t,n){var r=n(1718),o=n(430),i=n(1719),a=n(636),s=n(1720),l=n(195),u=n(634),c=u(r),f=u(o),d=u(i),p=u(a),m=u(s),h=l;(r&&"[object DataView]"!=h(new r(new ArrayBuffer(1)))||o&&"[object Map]"!=h(new o)||i&&"[object Promise]"!=h(i.resolve())||a&&"[object Set]"!=h(new a)||s&&"[object WeakMap]"!=h(new s))&&(h=function(e){var t=l(e),n="[object Object]"==t?e.constructor:void 0,r=n?u(n):"";if(r)switch(r){case c:return"[object DataView]";case f:return"[object Map]";case d:return"[object Promise]";case p:return"[object Set]";case m:return"[object WeakMap]"}return t}),e.exports=h},function(e,t,n){var r=n(203),o=n(204);e.exports=function(e,t){for(var n=0,i=(t=r(t,e)).length;null!=e&&n<i;)e=e[o(t[n++])];return n&&n==i?e:void 0}},function(e,t){e.exports=function(e){return e}},function(e,t,n){"use strict";n.r(t);var r=n(21),o=n(6),i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function a(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).delimiter,n=void 0===t?"\n":t;return"document"==e.object||"block"==e.object&&r.Block.isBlockList(e.nodes)?e.nodes.map(a).join(n):e.text}var s={deserialize:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.defaultBlock,a=void 0===n?"line":n,s=t.defaultMarks,l=void 0===s?[]:s,u=t.delimiter,c=void 0===u?"\n":u,f=t.toJSON,d=void 0!==f&&f;o.Set.isSet(l)&&(l=l.toArray()),a=r.Node.createProperties(a),l=l.map(r.Mark.createProperties);var p={object:"value",document:{object:"document",data:{},nodes:e.split(c).map(function(e){return i({},a,{object:"block",data:{},nodes:[{object:"text",leaves:[{object:"leaf",text:e,marks:l}]}]})})}};return d?p:r.Value.fromJSON(p)},serialize:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return a(e.document,t)}};t.default=s},function(e,t,n){"use strict";e.exports=function(e,t,n,r,o,i,a,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,o,i,a,s],c=0;(l=new Error(t.replace(/%s/g,function(){return u[c++]}))).name="Invariant Violation"}throw l.framesToPop=1,l}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});for(var r={alt:"altKey",control:"ctrlKey",meta:"metaKey",shift:"shiftKey"},o={add:"+",break:"pause",cmd:"meta",command:"meta",ctl:"control",ctrl:"control",del:"delete",down:"arrowdown",esc:"escape",ins:"insert",left:"arrowleft",mod:"undefined"!=typeof window&&/Mac|iPod|iPhone|iPad/.test(window.navigator.platform)?"meta":"control",opt:"alt",option:"alt",return:"enter",right:"arrowright",space:" ",spacebar:" ",up:"arrowup",win:"meta",windows:"meta"},i={backspace:8,tab:9,enter:13,shift:16,control:17,alt:18,pause:19,capslock:20,escape:27," ":32,pageup:33,pagedown:34,end:35,home:36,arrowleft:37,arrowup:38,arrowright:39,arrowdown:40,insert:45,delete:46,meta:91,numlock:144,scrolllock:145,";":186,"=":187,",":188,"-":189,".":190,"/":191,"`":192,"[":219,"\\":220,"]":221,"'":222},a=1;a<20;a++)i["f"+a]=111+a;function s(e,t,n){!t||"byKey"in t||(n=t,t=null),Array.isArray(e)||(e=[e]);var r=e.map(function(e){return l(e,t)}),o=function(e){return r.some(function(t){return u(t,e)})};return null==n?o:o(n)}function l(e,t){var n=t&&t.byKey,o={},i=(e=e.replace("++","+add")).split("+"),a=i.length;for(var s in r)o[r[s]]=!1;var l=!0,u=!1,d=void 0;try{for(var p,m=i[Symbol.iterator]();!(l=(p=m.next()).done);l=!0){var h=p.value,_=h.endsWith("?");_&&(h=h.slice(0,-1));var g=f(h),v=r[g];1!==a&&v||(n?o.key=g:o.which=c(h)),v&&(o[v]=!_||null)}}catch(e){u=!0,d=e}finally{try{!l&&m.return&&m.return()}finally{if(u)throw d}}return o}function u(e,t){for(var n in e){var r=e[n],o=void 0;if(null!=r&&((null!=(o="key"===n?t.key.toLowerCase():"which"===n?91===r&&93===t.which?91:t.which:t[n])||!1!==r)&&o!==r))return!1}return!0}function c(e){return e=f(e),i[e]||e.toUpperCase().charCodeAt(0)}function f(e){return e=e.toLowerCase(),e=o[e]||e}t.default=s,t.isHotkey=s,t.isCodeHotkey=function(e,t){return s(e,t)},t.isKeyHotkey=function(e,t){return s(e,{byKey:!0},t)},t.parseHotkey=l,t.compareHotkey=u,t.toKeyCode=c,t.toKeyName=f},function(e,t){var n=Object.prototype.toString;e.exports=function(e){switch(n.call(e)){case"[object Function]":return"function";case"[object Date]":return"date";case"[object RegExp]":return"regexp";case"[object Arguments]":return"arguments";case"[object Array]":return"array";case"[object String]":return"string"}if("object"==typeof e&&e&&"number"==typeof e.length)try{if("function"==typeof e.callee)return"arguments"}catch(e){if(e instanceof TypeError)return"arguments"}return null===e?"null":void 0===e?"undefined":e&&1===e.nodeType?"element":e===Object(e)?"object":typeof e}},,function(e,t,n){"use strict";(function(t){var r=u(n(19)),o=n(9),i=u(o),a=u(n(14)),s=u(n(4)),l=u(n(5));function u(e){return e&&e.__esModule?e:{default:e}}var c=function(){function e(){(0,s.default)(this,e),this.logs=""}return(0,l.default)(e,[{key:"monkeyPatch",value:function(e){var t=this,n={log:"I",info:"I",warn:"W",error:"E"};(0,a.default)(n).forEach(function(r){var o=n[r],i=e[r].bind(e);e[r]=function(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];t.log.apply(t,[o].concat(n)),i.apply(void 0,n)}})}},{key:"log",value:function(e){for(var t=(new Date).toISOString(),n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];var i=t+" "+e+" "+r.join(" ")+"\n";this.logs+=i}},{key:"flush",value:function(e){if(e)return this.logs;var t=this.logs;return this.logs="",t}}]),e}(),f=function(){function e(t,n){(0,s.default)(this,e),this.indexedDB=t,this.logger=n,this.id="instance-"+Math.random()+Date.now(),this.index=0,this.db=null,this.flushPromise=null,this.flushAgainPromise=null}return(0,l.default)(e,[{key:"connect",value:function(){var e=this,t=this.indexedDB.open("logs");return new i.default(function(n,r){t.onsuccess=function(t){e.db=t.target.result,setInterval(e.flush.bind(e),3e4),n()},t.onerror=function(e){var t="Failed to open log database: "+e.target.error.name;console.error(t),r(new Error(t))},t.onupgradeneeded=function(t){var n=t.target.result,r=n.createObjectStore("logs",{keyPath:["id","index"]});r.createIndex("id","id",{unique:!1}),r.add(e._generateLogEntry(new Date+" ::: Log database was created.")),n.createObjectStore("logslastmod",{keyPath:"id"}).add(e._generateLastModifiedTime())}})}},{key:"flush",value:function(){var e=this;return this.flushPromise&&this.flushPromise.isPending()?this.flushAgainPromise&&this.flushAgainPromise.isPending()?this.flushAgainPromise:(this.flushAgainPromise=this.flushPromise.then(function(){return e.flush()}),this.flushAgainPromise):(this.flushPromise=new i.default(function(t,n){if(e.db){var r=e.logger.flush();if(0!==r.length){var o=e.db.transaction(["logs","logslastmod"],"readwrite"),i=o.objectStore("logs");o.oncomplete=function(e){t()},o.onerror=function(e){console.error("Failed to flush logs : ",e),n(new Error("Failed to write logs: "+e.target.errorCode))},i.add(e._generateLogEntry(r)),o.objectStore("logslastmod").put(e._generateLastModifiedTime())}else t()}else n(new Error("No connected database"))}),this.flushPromise)}},{key:"consume",value:function(){var e=(0,o.coroutine)(r.default.mark(function e(){var t,n,a,s,l,u,c,f,p,m;return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s=function(e){return new i.default(function(n,r){var o=t.transaction(["logs","logslastmod"],"readwrite"),i=o.objectStore("logs");i.index("id").openKeyCursor(IDBKeyRange.only(e)).onsuccess=function(e){var t=e.target.result;t&&(i.delete(t.primaryKey),t.continue())},o.oncomplete=function(){n()},o.onerror=function(t){r(new Error("Failed to delete logs for '"+e+"' : "+t.target.errorCode))},o.objectStore("logslastmod").delete(e)})},a=function(){return d(t.transaction("logslastmod","readonly").objectStore("logslastmod"),void 0,function(e){return{id:e.value.id,ts:e.value.ts}}).then(function(e){return e.sort(function(e,t){return t.ts-e.ts}).map(function(e){return e.id})})},n=function(e){var n=t.transaction("logs","readonly").objectStore("logs");return new i.default(function(t,r){var o=n.index("id").openCursor(IDBKeyRange.only(e),"next"),i="";o.onerror=function(e){r(new Error("Query failed: "+e.target.errorCode))},o.onsuccess=function(e){var n=e.target.result;n?(i+=n.value.lines).length>=1048576?t(i):n.continue():t(i)}})},t=this.db,e.next=6,(0,o.resolve)(a());case 6:l=e.sent,u=[],c=[],f=0,p=0;case 11:if(!(p<l.length)){e.next=23;break}return e.next=14,(0,o.resolve)(n(l[p]));case 14:if(m=e.sent,!(p>0&&f+m.length>1048576)){e.next=18;break}return u=l.slice(p+1),e.abrupt("break",23);case 18:c.push({lines:m,id:l[p]}),f+=m.length;case 20:p++,e.next=11;break;case 23:return u.length>0&&(console.log("Removing logs: ",u),i.default.all(u.map(function(e){return s(e)})).then(function(){console.log("Removed "+u.length+" old logs.")},function(e){console.error(e)})),e.abrupt("return",c);case 25:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"_generateLogEntry",value:function(e){return{id:this.id,lines:e,index:this.index++}}},{key:"_generateLastModifiedTime",value:function(){return{id:this.id,ts:Date.now()}}}]),e}();function d(e,t,n){var r=e.openCursor(t);return new i.default(function(e,t){var o=[];r.onerror=function(e){t(new Error("Query failed: "+e.target.errorCode))},r.onsuccess=function(t){var r=t.target.result;r?(o.push(n(r)),r.continue()):e(o)}})}e.exports={init:function(){if(t.mx_rage_initPromise)return t.mx_rage_initPromise;t.mx_rage_logger=new c,t.mx_rage_logger.monkeyPatch(window.console);var e=void 0;try{e=window.indexedDB}catch(e){}return e?(t.mx_rage_store=new f(e,t.mx_rage_logger),t.mx_rage_initPromise=t.mx_rage_store.connect(),t.mx_rage_initPromise):(t.mx_rage_initPromise=i.default.resolve(),t.mx_rage_initPromise)},flush:function(){t.mx_rage_store&&t.mx_rage_store.flush()},cleanup:function(){var e=(0,o.coroutine)(r.default.mark(function e(){return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.mx_rage_store){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,(0,o.resolve)(t.mx_rage_store.consume());case 4:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),getLogsForReport:function(){var e=(0,o.coroutine)(r.default.mark(function e(){return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.mx_rage_logger){e.next=2;break}throw new Error("No console logger, did you forget to call init()?");case 2:if(!t.mx_rage_store){e.next=10;break}return e.next=5,(0,o.resolve)(t.mx_rage_store.flush());case 5:return e.next=7,(0,o.resolve)(t.mx_rage_store.consume());case 7:return e.abrupt("return",e.sent);case 10:return e.abrupt("return",[{lines:t.mx_rage_logger.flush(!0),id:"-"}]);case 11:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()}}).call(this,n(15))},function(e,t,n){var r=n(33),o=n(28).document,i=r(o)&&r(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},function(e,t,n){var r=n(28),o=n(105),i=n(152),a=n(495),s=n(49).f;e.exports=function(e){var t=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==e.charAt(0)||e in t||s(t,e,{value:a.f(e)})}},function(e,t,n){var r=n(257)("keys"),o=n(151);e.exports=function(e){return r[e]||(r[e]=o(e))}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){var r=n(28).document;e.exports=r&&r.documentElement},function(e,t,n){var r=n(33),o=n(25),i=function(e,t){if(o(e),!r(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,r){try{(r=n(91)(Function.call,n(84).f(Object.prototype,"__proto__").set,2))(e,[]),t=!(e instanceof Array)}catch(e){t=!0}return function(e,n){return i(e,n),t?e.__proto__=n:r(e,n),e}}({},!1):void 0),check:i}},function(e,t){e.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},function(e,t,n){var r=n(33),o=n(331).set;e.exports=function(e,t,n){var i,a=t.constructor;return a!==n&&"function"==typeof a&&(i=a.prototype)!==n.prototype&&r(i)&&o&&o(e,i),e}},function(e,t,n){"use strict";var r=n(108),o=n(107);e.exports=function(e){var t=String(o(this)),n="",i=r(e);if(i<0||i==1/0)throw RangeError("Count can't be negative");for(;i>0;(i>>>=1)&&(t+=t))1&i&&(n+=t);return n}},function(e,t){e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},function(e,t){var n=Math.expm1;e.exports=!n||n(10)>22025.465794806718||n(10)<22025.465794806718||-2e-17!=n(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:Math.exp(e)-1}:n},function(e,t,n){var r=n(108),o=n(107);e.exports=function(e){return function(t,n){var i,a,s=String(o(t)),l=r(n),u=s.length;return l<0||l>=u?e?"":void 0:(i=s.charCodeAt(l))<55296||i>56319||l+1===u||(a=s.charCodeAt(l+1))<56320||a>57343?e?s.charAt(l):i:e?s.slice(l,l+2):a-56320+(i-55296<<10)+65536}}},function(e,t,n){"use strict";var r=n(152),o=n(7),i=n(74),a=n(73),s=n(72),l=n(183),u=n(339),c=n(181),f=n(85),d=n(42)("iterator"),p=!([].keys&&"next"in[].keys()),m=function(){return this};e.exports=function(e,t,n,h,_,g,v){u(n,t,h);var y,b,E,C=function(e){if(!p&&e in T)return T[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},S=t+" Iterator",D="values"==_,w=!1,T=e.prototype,x=T[d]||T["@@iterator"]||_&&T[_],R=x||C(_),k=_?D?C("entries"):R:void 0,N="Array"==t&&T.entries||x;if(N&&(E=f(N.call(new e)))!==Object.prototype&&E.next&&(c(E,S,!0),r||s(E,d)||a(E,d,m)),D&&x&&"values"!==x.name&&(w=!0,R=function(){return x.call(this)}),r&&!v||!p&&!w&&T[d]||a(T,d,R),l[t]=R,l[S]=m,_)if(y={values:D?R:C("values"),keys:g?R:C("keys"),entries:k},v)for(b in y)b in T||i(T,b,y[b]);else o(o.P+o.F*(p||w),t,y);return y}},function(e,t,n){"use strict";var r=n(155),o=n(150),i=n(181),a={};n(73)(a,n(42)("iterator"),function(){return this}),e.exports=function(e,t,n){e.prototype=r(a,{next:o(1,n)}),i(e,t+" Iterator")}},function(e,t,n){var r=n(261),o=n(107);e.exports=function(e,t,n){if(r(t))throw TypeError("String#"+n+" doesn't accept regex!");return String(o(e))}},function(e,t,n){var r=n(42)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[r]=!1,!"/./"[e](t)}catch(e){}}return!0}},function(e,t,n){var r=n(183),o=n(42)("iterator"),i=Array.prototype;e.exports=function(e){return void 0!==e&&(r.Array===e||i[o]===e)}},function(e,t,n){"use strict";var r=n(49),o=n(150);e.exports=function(e,t,n){t in e?r.f(e,t,o(0,n)):e[t]=n}},function(e,t,n){var r=n(210),o=n(42)("iterator"),i=n(183);e.exports=n(105).getIteratorMethod=function(e){if(void 0!=e)return e[o]||e["@@iterator"]||i[r(e)]}},function(e,t,n){var r=n(835);e.exports=function(e,t){return new(r(e))(t)}},function(e,t,n){"use strict";var r=n(57),o=n(154),i=n(50);e.exports=function(e){for(var t=r(this),n=i(t.length),a=arguments.length,s=o(a>1?arguments[1]:void 0,n),l=a>2?arguments[2]:void 0,u=void 0===l?n:o(l,n);u>s;)t[s++]=e;return t}},function(e,t,n){"use strict";var r=n(134),o=n(511),i=n(183),a=n(83);e.exports=n(338)(Array,"Array",function(e,t){this._t=a(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,o(1)):o(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},function(e,t,n){var r,o,i,a=n(91),s=n(501),l=n(330),u=n(326),c=n(28),f=c.process,d=c.setImmediate,p=c.clearImmediate,m=c.MessageChannel,h=c.Dispatch,_=0,g={},v=function(){var e=+this;if(g.hasOwnProperty(e)){var t=g[e];delete g[e],t()}},y=function(e){v.call(e.data)};d&&p||(d=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return g[++_]=function(){s("function"==typeof e?e:Function(e),t)},r(_),_},p=function(e){delete g[e]},"process"==n(92)(f)?r=function(e){f.nextTick(a(v,e,1))}:h&&h.now?r=function(e){h.now(a(v,e,1))}:m?(i=(o=new m).port2,o.port1.onmessage=y,r=a(i.postMessage,i,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts?(r=function(e){c.postMessage(e+"","*")},c.addEventListener("message",y,!1)):r="onreadystatechange"in u("script")?function(e){l.appendChild(u("script")).onreadystatechange=function(){l.removeChild(this),v.call(e)}}:function(e){setTimeout(a(v,e,1),0)}),e.exports={set:d,clear:p}},function(e,t,n){var r=n(28),o=n(348).set,i=r.MutationObserver||r.WebKitMutationObserver,a=r.process,s=r.Promise,l="process"==n(92)(a);e.exports=function(){var e,t,n,u=function(){var r,o;for(l&&(r=a.domain)&&r.exit();e;){o=e.fn,e=e.next;try{o()}catch(r){throw e?n():t=void 0,r}}t=void 0,r&&r.enter()};if(l)n=function(){a.nextTick(u)};else if(i){var c=!0,f=document.createTextNode("");new i(u).observe(f,{characterData:!0}),n=function(){f.data=c=!c}}else if(s&&s.resolve){var d=s.resolve();n=function(){d.then(u)}}else n=function(){o.call(r,u)};return function(r){var o={fn:r,next:void 0};t&&(t.next=o),e||(e=o,n()),t=o}}},function(e,t,n){"use strict";var r=n(63);e.exports.f=function(e){return new function(e){var t,n;this.promise=new e(function(e,r){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=r}),this.resolve=r(t),this.reject=r(n)}(e)}},function(e,t,n){"use strict";var r=n(28),o=n(48),i=n(152),a=n(267),s=n(73),l=n(160),u=n(30),c=n(158),f=n(108),d=n(50),p=n(520),m=n(156).f,h=n(49).f,_=n(346),g=n(181),v="prototype",y="Wrong index!",b=r.ArrayBuffer,E=r.DataView,C=r.Math,S=r.RangeError,D=r.Infinity,w=b,T=C.abs,x=C.pow,R=C.floor,k=C.log,N=C.LN2,I=o?"_b":"buffer",O=o?"_l":"byteLength",A=o?"_o":"byteOffset";function M(e,t,n){var r,o,i,a=Array(n),s=8*n-t-1,l=(1<<s)-1,u=l>>1,c=23===t?x(2,-24)-x(2,-77):0,f=0,d=e<0||0===e&&1/e<0?1:0;for((e=T(e))!=e||e===D?(o=e!=e?1:0,r=l):(r=R(k(e)/N),e*(i=x(2,-r))<1&&(r--,i*=2),(e+=r+u>=1?c/i:c*x(2,1-u))*i>=2&&(r++,i/=2),r+u>=l?(o=0,r=l):r+u>=1?(o=(e*i-1)*x(2,t),r+=u):(o=e*x(2,u-1)*x(2,t),r=0));t>=8;a[f++]=255&o,o/=256,t-=8);for(r=r<<t|o,s+=t;s>0;a[f++]=255&r,r/=256,s-=8);return a[--f]|=128*d,a}function P(e,t,n){var r,o=8*n-t-1,i=(1<<o)-1,a=i>>1,s=o-7,l=n-1,u=e[l--],c=127&u;for(u>>=7;s>0;c=256*c+e[l],l--,s-=8);for(r=c&(1<<-s)-1,c>>=-s,s+=t;s>0;r=256*r+e[l],l--,s-=8);if(0===c)c=1-a;else{if(c===i)return r?NaN:u?-D:D;r+=x(2,t),c-=a}return(u?-1:1)*r*x(2,c-t)}function L(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]}function F(e){return[255&e]}function U(e){return[255&e,e>>8&255]}function j(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]}function B(e){return M(e,52,8)}function G(e){return M(e,23,4)}function q(e,t,n){h(e[v],t,{get:function(){return this[n]}})}function V(e,t,n,r){var o=p(+n);if(o+t>e[O])throw S(y);var i=e[I]._b,a=o+e[A],s=i.slice(a,a+t);return r?s:s.reverse()}function H(e,t,n,r,o,i){var a=p(+n);if(a+t>e[O])throw S(y);for(var s=e[I]._b,l=a+e[A],u=r(+o),c=0;c<t;c++)s[l+c]=u[i?c:t-c-1]}if(a.ABV){if(!u(function(){b(1)})||!u(function(){new b(-1)})||u(function(){return new b,new b(1.5),new b(NaN),"ArrayBuffer"!=b.name})){for(var Y,z=(b=function(e){return c(this,b),new w(p(e))})[v]=w[v],W=m(w),K=0;W.length>K;)(Y=W[K++])in b||s(b,Y,w[Y]);i||(z.constructor=b)}var $=new E(new b(2)),Q=E[v].setInt8;$.setInt8(0,2147483648),$.setInt8(1,2147483649),!$.getInt8(0)&&$.getInt8(1)||l(E[v],{setInt8:function(e,t){Q.call(this,e,t<<24>>24)},setUint8:function(e,t){Q.call(this,e,t<<24>>24)}},!0)}else b=function(e){c(this,b,"ArrayBuffer");var t=p(e);this._b=_.call(Array(t),0),this[O]=t},E=function(e,t,n){c(this,E,"DataView"),c(e,b,"DataView");var r=e[O],o=f(t);if(o<0||o>r)throw S("Wrong offset!");if(o+(n=void 0===n?r-o:d(n))>r)throw S("Wrong length!");this[I]=e,this[A]=o,this[O]=n},o&&(q(b,"byteLength","_l"),q(E,"buffer","_b"),q(E,"byteLength","_l"),q(E,"byteOffset","_o")),l(E[v],{getInt8:function(e){return V(this,1,e)[0]<<24>>24},getUint8:function(e){return V(this,1,e)[0]},getInt16:function(e){var t=V(this,2,e,arguments[1]);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=V(this,2,e,arguments[1]);return t[1]<<8|t[0]},getInt32:function(e){return L(V(this,4,e,arguments[1]))},getUint32:function(e){return L(V(this,4,e,arguments[1]))>>>0},getFloat32:function(e){return P(V(this,4,e,arguments[1]),23,4)},getFloat64:function(e){return P(V(this,8,e,arguments[1]),52,8)},setInt8:function(e,t){H(this,1,e,F,t)},setUint8:function(e,t){H(this,1,e,F,t)},setInt16:function(e,t){H(this,2,e,U,t,arguments[2])},setUint16:function(e,t){H(this,2,e,U,t,arguments[2])},setInt32:function(e,t){H(this,4,e,j,t,arguments[2])},setUint32:function(e,t){H(this,4,e,j,t,arguments[2])},setFloat32:function(e,t){H(this,4,e,G,t,arguments[2])},setFloat64:function(e,t){H(this,8,e,B,t,arguments[2])}});g(b,"ArrayBuffer"),g(E,"DataView"),s(E[v],a.VIEW,!0),t.ArrayBuffer=b,t.DataView=E},function(e,t,n){n(86),n(355),e.exports=n(18).Array.from},function(e,t,n){var r=n(111),o=n(112);e.exports=function(e){return function(t,n){var i,a,s=String(o(t)),l=r(n),u=s.length;return l<0||l>=u?e?"":void 0:(i=s.charCodeAt(l))<55296||i>56319||l+1===u||(a=s.charCodeAt(l+1))<56320||a>57343?e?s.charAt(l):i:e?s.slice(l,l+2):a-56320+(i-55296<<10)+65536}}},function(e,t,n){"use strict";var r=n(117),o=n(76),i=n(122),a={};n(60)(a,n(38)("iterator"),function(){return this}),e.exports=function(e,t,n){e.prototype=r(a,{next:o(1,n)}),i(e,t+" Iterator")}},function(e,t,n){"use strict";var r=n(66),o=n(26),i=n(87),a=n(273),s=n(274),l=n(118),u=n(356),c=n(186);o(o.S+o.F*!n(275)(function(e){Array.from(e)}),"Array",{from:function(e){var t,n,o,f,d=i(e),p="function"==typeof this?this:Array,m=arguments.length,h=m>1?arguments[1]:void 0,_=void 0!==h,g=0,v=c(d);if(_&&(h=r(h,m>2?arguments[2]:void 0,2)),void 0==v||p==Array&&s(v))for(n=new p(t=l(d.length));t>g;g++)u(n,g,_?h(d[g],g):d[g]);else for(f=v.call(d),n=new p;!(o=f.next()).done;g++)u(n,g,_?a(f,h,[o.value,g],!0):o.value);return n.length=g,n}})},function(e,t,n){"use strict";var r=n(46),o=n(76);e.exports=function(e,t,n){t in e?r.f(e,t,o(0,n)):e[t]=n}},function(e,t,n){n(358);var r=n(18).Object;e.exports=function(e,t){return r.create(e,t)}},function(e,t,n){var r=n(26);r(r.S,"Object",{create:n(117)})},function(e,t,n){n(360);var r=n(18).Object;e.exports=function(e,t,n){return r.defineProperty(e,t,n)}},function(e,t,n){var r=n(26);r(r.S+r.F*!n(44),"Object",{defineProperty:n(46).f})},function(e,t,n){e.exports={default:n(362),__esModule:!0}},function(e,t,n){n(86),n(113),e.exports=n(166).f("iterator")},function(e,t,n){"use strict";var r=n(364),o=n(277),i=n(77),a=n(59);e.exports=n(185)(Array,"Array",function(e,t){this._t=a(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,o(1)):o(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},function(e,t){e.exports=function(){}},function(e,t,n){e.exports={default:n(366),__esModule:!0}},function(e,t,n){n(367),n(190),n(369),n(370),e.exports=n(18).Symbol},function(e,t,n){"use strict";var r=n(34),o=n(61),i=n(44),a=n(26),s=n(212),l=n(137).KEY,u=n(58),c=n(120),f=n(122),d=n(96),p=n(38),m=n(166),h=n(167),_=n(368),g=n(278),v=n(52),y=n(59),b=n(116),E=n(76),C=n(117),S=n(276),D=n(224),w=n(46),T=n(78),x=D.f,R=w.f,k=S.f,N=r.Symbol,I=r.JSON,O=I&&I.stringify,A=p("_hidden"),M=p("toPrimitive"),P={}.propertyIsEnumerable,L=c("symbol-registry"),F=c("symbols"),U=c("op-symbols"),j=Object.prototype,B="function"==typeof N,G=r.QObject,q=!G||!G.prototype||!G.prototype.findChild,V=i&&u(function(){return 7!=C(R({},"a",{get:function(){return R(this,"a",{value:7}).a}})).a})?function(e,t,n){var r=x(j,t);r&&delete j[t],R(e,t,n),r&&e!==j&&R(j,t,r)}:R,H=function(e){var t=F[e]=C(N.prototype);return t._k=e,t},Y=B&&"symbol"==typeof N.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof N},z=function(e,t,n){return e===j&&z(U,t,n),v(e),t=b(t,!0),v(n),o(F,t)?(n.enumerable?(o(e,A)&&e[A][t]&&(e[A][t]=!1),n=C(n,{enumerable:E(0,!1)})):(o(e,A)||R(e,A,E(1,{})),e[A][t]=!0),V(e,t,n)):R(e,t,n)},W=function(e,t){v(e);for(var n,r=_(t=y(t)),o=0,i=r.length;i>o;)z(e,n=r[o++],t[n]);return e},K=function(e){var t=P.call(this,e=b(e,!0));return!(this===j&&o(F,e)&&!o(U,e))&&(!(t||!o(this,e)||!o(F,e)||o(this,A)&&this[A][e])||t)},$=function(e,t){if(e=y(e),t=b(t,!0),e!==j||!o(F,t)||o(U,t)){var n=x(e,t);return!n||!o(F,t)||o(e,A)&&e[A][t]||(n.enumerable=!0),n}},Q=function(e){for(var t,n=k(y(e)),r=[],i=0;n.length>i;)o(F,t=n[i++])||t==A||t==l||r.push(t);return r},X=function(e){for(var t,n=e===j,r=k(n?U:y(e)),i=[],a=0;r.length>a;)!o(F,t=r[a++])||n&&!o(j,t)||i.push(F[t]);return i};B||(s((N=function(){if(this instanceof N)throw TypeError("Symbol is not a constructor!");var e=d(arguments.length>0?arguments[0]:void 0),t=function(n){this===j&&t.call(U,n),o(this,A)&&o(this[A],e)&&(this[A][e]=!1),V(this,e,E(1,n))};return i&&q&&V(j,e,{configurable:!0,set:t}),H(e)}).prototype,"toString",function(){return this._k}),D.f=$,w.f=z,n(225).f=S.f=Q,n(124).f=K,n(189).f=X,i&&!n(135)&&s(j,"propertyIsEnumerable",K,!0),m.f=function(e){return H(p(e))}),a(a.G+a.W+a.F*!B,{Symbol:N});for(var J="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),Z=0;J.length>Z;)p(J[Z++]);for(var ee=T(p.store),te=0;ee.length>te;)h(ee[te++]);a(a.S+a.F*!B,"Symbol",{for:function(e){return o(L,e+="")?L[e]:L[e]=N(e)},keyFor:function(e){if(!Y(e))throw TypeError(e+" is not a symbol!");for(var t in L)if(L[t]===e)return t},useSetter:function(){q=!0},useSimple:function(){q=!1}}),a(a.S+a.F*!B,"Object",{create:function(e,t){return void 0===t?C(e):W(C(e),t)},defineProperty:z,defineProperties:W,getOwnPropertyDescriptor:$,getOwnPropertyNames:Q,getOwnPropertySymbols:X}),I&&a(a.S+a.F*(!B||u(function(){var e=N();return"[null]"!=O([e])||"{}"!=O({a:e})||"{}"!=O(Object(e))})),"JSON",{stringify:function(e){if(void 0!==e&&!Y(e)){for(var t,n,r=[e],o=1;arguments.length>o;)r.push(arguments[o++]);return"function"==typeof(t=r[1])&&(n=t),!n&&g(t)||(t=function(e,t){if(n&&(t=n.call(this,e,t)),!Y(t))return t}),r[1]=t,O.apply(I,r)}}}),N.prototype[M]||n(60)(N.prototype,M,N.prototype.valueOf),f(N,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},function(e,t,n){var r=n(78),o=n(189),i=n(124);e.exports=function(e){var t=r(e),n=o.f;if(n)for(var a,s=n(e),l=i.f,u=0;s.length>u;)l.call(e,a=s[u++])&&t.push(a);return t}},function(e,t,n){n(167)("asyncIterator")},function(e,t,n){n(167)("observable")},function(e,t,n){"use strict";var r=n(32),o=(n(23),null),i={};function a(){if(o)for(var e in i){var t=i[e],n=o.indexOf(e);if(n>-1||r("96",e),!u.plugins[n]){t.extractEvents||r("97",e),u.plugins[n]=t;var a=t.eventTypes;for(var l in a)s(a[l],t,l)||r("98",l,e)}}}function s(e,t,n){u.eventNameDispatchConfigs.hasOwnProperty(n)&&r("99",n),u.eventNameDispatchConfigs[n]=e;var o=e.phasedRegistrationNames;if(o){for(var i in o){if(o.hasOwnProperty(i))l(o[i],t,n)}return!0}return!!e.registrationName&&(l(e.registrationName,t,n),!0)}function l(e,t,n){u.registrationNameModules[e]&&r("100",e),u.registrationNameModules[e]=t,u.registrationNameDependencies[e]=t.eventTypes[n].dependencies}var u={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:null,injectEventPluginOrder:function(e){o&&r("101"),o=Array.prototype.slice.call(e),a()},injectEventPluginsByName:function(e){var t=!1;for(var n in e)if(e.hasOwnProperty(n)){var o=e[n];i.hasOwnProperty(n)&&i[n]===o||(i[n]&&r("102",n),i[n]=o,t=!0)}t&&a()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return u.registrationNameModules[t.registrationName]||null;if(void 0!==t.phasedRegistrationNames){var n=t.phasedRegistrationNames;for(var r in n)if(n.hasOwnProperty(r)){var o=u.registrationNameModules[n[r]];if(o)return o}}return null},_resetEventPlugins:function(){for(var e in o=null,i)i.hasOwnProperty(e)&&delete i[e];u.plugins.length=0;var t=u.eventNameDispatchConfigs;for(var n in t)t.hasOwnProperty(n)&&delete t[n];var r=u.registrationNameModules;for(var a in r)r.hasOwnProperty(a)&&delete r[a]}};e.exports=u},function(e,t,n){"use strict";var r,o,i=n(32),a=n(373);n(23),n(36);function s(e,t,n,r){var o=e.type||"unknown-event";e.currentTarget=l.getNodeFromInstance(r),t?a.invokeGuardedCallbackWithCatch(o,n,e):a.invokeGuardedCallback(o,n,e),e.currentTarget=null}var l={isEndish:function(e){return"topMouseUp"===e||"topTouchEnd"===e||"topTouchCancel"===e},isMoveish:function(e){return"topMouseMove"===e||"topTouchMove"===e},isStartish:function(e){return"topMouseDown"===e||"topTouchStart"===e},executeDirectDispatch:function(e){var t=e._dispatchListeners,n=e._dispatchInstances;Array.isArray(t)&&i("103"),e.currentTarget=t?l.getNodeFromInstance(n):null;var r=t?t(e):null;return e.currentTarget=null,e._dispatchListeners=null,e._dispatchInstances=null,r},executeDispatchesInOrder:function(e,t){var n=e._dispatchListeners,r=e._dispatchInstances;if(Array.isArray(n))for(var o=0;o<n.length&&!e.isPropagationStopped();o++)s(e,t,n[o],r[o]);else n&&s(e,t,n,r);e._dispatchListeners=null,e._dispatchInstances=null},executeDispatchesInOrderStopAtTrue:function(e){var t=function(e){var t=e._dispatchListeners,n=e._dispatchInstances;if(Array.isArray(t)){for(var r=0;r<t.length&&!e.isPropagationStopped();r++)if(t[r](e,n[r]))return n[r]}else if(t&&t(e,n))return n;return null}(e);return e._dispatchInstances=null,e._dispatchListeners=null,t},hasDispatches:function(e){return!!e._dispatchListeners},getInstanceFromNode:function(e){return r.getInstanceFromNode(e)},getNodeFromInstance:function(e){return r.getNodeFromInstance(e)},isAncestor:function(e,t){return o.isAncestor(e,t)},getLowestCommonAncestor:function(e,t){return o.getLowestCommonAncestor(e,t)},getParentInstance:function(e){return o.getParentInstance(e)},traverseTwoPhase:function(e,t,n){return o.traverseTwoPhase(e,t,n)},traverseEnterLeave:function(e,t,n,r,i){return o.traverseEnterLeave(e,t,n,r,i)},injection:{injectComponentTree:function(e){r=e},injectTreeTraversal:function(e){o=e}}};e.exports=l},function(e,t,n){"use strict";var r=null;function o(e,t,n){try{t(n)}catch(e){null===r&&(r=e)}}var i={invokeGuardedCallback:o,invokeGuardedCallbackWithCatch:o,rethrowCaughtError:function(){if(r){var e=r;throw r=null,e}}};e.exports=i},function(e,t,n){"use strict";e.exports=function(e){var t=e.target||e.srcElement||window;return t.correspondingUseElement&&(t=t.correspondingUseElement),3===t.nodeType?t.parentNode:t}},function(e,t,n){"use strict";var r,o=n(69);o.canUseDOM&&(r=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature("","")) -/** - * Checks if an event is supported in the current execution environment. - * - * NOTE: This will not work correctly for non-generic events such as `change`, - * `reset`, `load`, `error`, and `select`. - * - * Borrows from Modernizr. - * - * @param {string} eventNameSuffix Event name, e.g. "click". - * @param {?boolean} capture Check if the capture phase is supported. - * @return {boolean} True if the event is supported. - * @internal - * @license Modernizr 3.0.0pre (Custom Build) | MIT - */,e.exports=function(e,t){if(!o.canUseDOM||t&&!("addEventListener"in document))return!1;var n="on"+e,i=n in document;if(!i){var a=document.createElement("div");a.setAttribute(n,"return;"),i="function"==typeof a[n]}return!i&&r&&"wheel"===e&&(i=document.implementation.hasFeature("Events.wheel","3.0")),i}},function(e,t,n){"use strict";var r={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function o(e){var t=this.nativeEvent;if(t.getModifierState)return t.getModifierState(e);var n=r[e];return!!n&&!!t[n]}e.exports=function(e){return o}},function(e,t,n){"use strict";var r=n(192),o=n(1001),i=(n(53),n(88),n(379)),a=n(281),s=n(546);function l(e,t){return Array.isArray(t)&&(t=t[1]),t?t.nextSibling:e.firstChild}var u=i(function(e,t,n){e.insertBefore(t,n)});function c(e,t,n){r.insertTreeBefore(e,t,n)}function f(e,t,n){Array.isArray(t)?function(e,t,n,r){var o=t;for(;;){var i=o.nextSibling;if(u(e,o,r),o===n)break;o=i}}(e,t[0],t[1],n):u(e,t,n)}function d(e,t){if(Array.isArray(t)){var n=t[1];p(e,t=t[0],n),e.removeChild(n)}e.removeChild(t)}function p(e,t,n){for(;;){var r=t.nextSibling;if(r===n)break;e.removeChild(r)}}var m={dangerouslyReplaceNodeWithMarkup:o.dangerouslyReplaceNodeWithMarkup,replaceDelimitedText:function(e,t,n){var r=e.parentNode,o=e.nextSibling;o===t?n&&u(r,document.createTextNode(n),o):n?(s(o,n),p(r,o,t)):p(r,e,t)},processUpdates:function(e,t){for(var n=0;n<t.length;n++){var r=t[n];switch(r.type){case"INSERT_MARKUP":c(e,r.content,l(e,r.afterNode));break;case"MOVE_EXISTING":f(e,r.fromNode,l(e,r.afterNode));break;case"SET_MARKUP":a(e,r.content);break;case"TEXT_CONTENT":s(e,r.content);break;case"REMOVE_NODE":d(e,r.fromNode)}}}};e.exports=m},function(e,t,n){"use strict";e.exports={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"}},function(e,t,n){"use strict";e.exports=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,r,o){MSApp.execUnsafeLocalFunction(function(){return e(t,n,r,o)})}:e}},function(e,t,n){"use strict";var r=n(32),o=n(1019),i=n(532)(n(165).isValidElement),a=(n(23),n(36),{button:!0,checkbox:!0,image:!0,hidden:!0,radio:!0,reset:!0,submit:!0});function s(e){null!=e.checkedLink&&null!=e.valueLink&&r("87")}function l(e){s(e),(null!=e.value||null!=e.onChange)&&r("88")}function u(e){s(e),(null!=e.checked||null!=e.onChange)&&r("89")}var c={value:function(e,t,n){return!e[t]||a[e.type]||e.onChange||e.readOnly||e.disabled?null:new Error("You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.")},checked:function(e,t,n){return!e[t]||e.onChange||e.readOnly||e.disabled?null:new Error("You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.")},onChange:i.func},f={};function d(e){if(e){var t=e.getName();if(t)return" Check the render method of `"+t+"`."}return""}var p={checkPropTypes:function(e,t,n){for(var r in c){if(c.hasOwnProperty(r))var i=c[r](t,r,e,"prop",null,o);if(i instanceof Error&&!(i.message in f)){f[i.message]=!0;d(n)}}},getValue:function(e){return e.valueLink?(l(e),e.valueLink.value):e.value},getChecked:function(e){return e.checkedLink?(u(e),e.checkedLink.value):e.checked},executeOnChange:function(e,t){return e.valueLink?(l(e),e.valueLink.requestChange(t.target.value)):e.checkedLink?(u(e),e.checkedLink.requestChange(t.target.checked)):e.onChange?e.onChange.call(void 0,t):void 0}};e.exports=p},function(e,t,n){"use strict";var r=n(32),o=(n(23),!1),i={replaceNodeWithMarkup:null,processChildrenUpdates:null,injection:{injectEnvironment:function(e){o&&r("104"),i.replaceNodeWithMarkup=e.replaceNodeWithMarkup,i.processChildrenUpdates=e.processChildrenUpdates,o=!0}}};e.exports=i},function(e,t,n){"use strict";var r=n(32),o=n(45),i=n(1024),a=n(552),s=n(553),l=(n(1025),n(23),n(36),function(e){this.construct(e)});function u(e,t){var n;if(null===e||!1===e)n=a.create(u);else if("object"==typeof e){var o=e,i=o.type;if("function"!=typeof i&&"string"!=typeof i){var c="";0,c+=function(e){if(e){var t=e.getName();if(t)return" Check the render method of `"+t+"`."}return""}(o._owner),r("130",null==i?i:typeof i,c)}"string"==typeof o.type?n=s.createInternalComponent(o):!function(e){return"function"==typeof e&&void 0!==e.prototype&&"function"==typeof e.prototype.mountComponent&&"function"==typeof e.prototype.receiveComponent}(o.type)?n=new l(o):(n=new o.type(o)).getHostNode||(n.getHostNode=n.getNativeNode)}else"string"==typeof e||"number"==typeof e?n=s.createInstanceForText(e):r("131",typeof e);return n._mountIndex=0,n._mountImage=null,n}o(l.prototype,i,{_instantiateReactComponent:u}),e.exports=u},function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty;function o(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}e.exports=function(e,t){if(o(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(var a=0;a<n.length;a++)if(!r.call(t,n[a])||!o(e[n[a]],t[n[a]]))return!1;return!0}},function(e,t,n){"use strict";e.exports=function(e,t){var n=null===e||!1===e,r=null===t||!1===t;if(n||r)return n===r;var o=typeof e,i=typeof t;return"string"===o||"number"===o?"string"===i||"number"===i:"object"===i&&e.type===t.type&&e.key===t.key}},function(e,t,n){"use strict";var r={escape:function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,function(e){return t[e]})},unescape:function(e){var t={"=0":"=","=2":":"};return(""+("."===e[0]&&"$"===e[1]?e.substring(2):e.substring(1))).replace(/(=0|=2)/g,function(e){return t[e]})}};e.exports=r},function(e,t,n){"use strict";var r=n(32),o=(n(123),n(229)),i=(n(88),n(98));n(23),n(36);function a(e){i.enqueueUpdate(e)}function s(e,t){var n=o.get(e);return n||null}var l={isMounted:function(e){var t=o.get(e);return!!t&&!!t._renderedComponent},enqueueCallback:function(e,t,n){l.validateCallback(t,n);var r=s(e);if(!r)return null;r._pendingCallbacks?r._pendingCallbacks.push(t):r._pendingCallbacks=[t],a(r)},enqueueCallbackInternal:function(e,t){e._pendingCallbacks?e._pendingCallbacks.push(t):e._pendingCallbacks=[t],a(e)},enqueueForceUpdate:function(e){var t=s(e);t&&(t._pendingForceUpdate=!0,a(t))},enqueueReplaceState:function(e,t,n){var r=s(e);r&&(r._pendingStateQueue=[t],r._pendingReplaceState=!0,void 0!==n&&null!==n&&(l.validateCallback(n,"replaceState"),r._pendingCallbacks?r._pendingCallbacks.push(n):r._pendingCallbacks=[n]),a(r))},enqueueSetState:function(e,t){var n=s(e);n&&((n._pendingStateQueue||(n._pendingStateQueue=[])).push(t),a(n))},enqueueElementInternal:function(e,t,n){e._pendingElement=t,e._context=n,a(e)},validateCallback:function(e,t){e&&"function"!=typeof e&&r("122",t,function(e){var t=typeof e;if("object"!==t)return t;var n=e.constructor&&e.constructor.name||t,r=Object.keys(e);return r.length>0&&r.length<20?n+" (keys: "+r.join(", ")+")":n}(e))}};e.exports=l},function(e,t,n){"use strict";n(45);var r=n(97),o=(n(36),r);e.exports=o},function(e,t,n){"use strict";e.exports=function(e){var t,n=e.keyCode;return"charCode"in e?0===(t=e.charCode)&&13===n&&(t=13):t=n,t>=32||13===t?t:0}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(4)),o=s(n(5)),i=s(n(31)),a=s(n(14));function s(e){return e&&e.__esModule?e:{default:e}}n(566);var l=fetch;function u(e){return e.ok?e:e.text().then(function(e){throw new Error(e)})}function c(e){return e.json()}var f=function(e,t){return t&&t.qs&&(e+=function(e){return"?"+(0,a.default)(e).map(function(t){return t+"="+encodeURIComponent(e[t])}).join("&")}(t.qs),delete t.qs),t&&t.body&&(t.headers||(t.headers={}),t.body=(0,i.default)(t.body),t.headers["Content-Type"]="application/json"),l(e,t).then(u).then(c)},d=function(){function e(t){(0,r.default)(this,e),this._url=t}return(0,o.default)(e,[{key:"getTeamsConfig",value:function(){return f(this._url+"/teams")}},{key:"trackReferral",value:function(e,t,n){return f(this._url+"/register",{body:{referrer:e,session_id:t,client_secret:n},method:"POST"})}},{key:"getTeam",value:function(e){return f(this._url+"/teamConfiguration",{qs:{team_token:e}})}},{key:"login",value:function(e){return f(this._url+"/login",{qs:{user_id:e}})}}],[{key:"setFetch",value:function(e){l=e}}]),e}();t.default=d,e.exports=t.default},function(e,t,n){var r=n(18),o=r.JSON||(r.JSON={stringify:JSON.stringify});e.exports=function(e){return o.stringify.apply(o,arguments)}},function(e,t,n){n(113),n(86),e.exports=n(392)},function(e,t,n){var r=n(52),o=n(186);e.exports=n(18).getIterator=function(e){var t=o(e);if("function"!=typeof t)throw TypeError(e+" is not iterable!");return r(t.call(e))}},function(e,t,n){e.exports={default:n(394),__esModule:!0}},function(e,t,n){n(113),n(86),e.exports=n(395)},function(e,t,n){var r=n(164),o=n(38)("iterator"),i=n(77);e.exports=n(18).isIterable=function(e){var t=Object(e);return void 0!==t[o]||"@@iterator"in t||i.hasOwnProperty(r(t))}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(20)),o=c(n(19)),i=n(9),a=c(i),s=c(n(149)),l=c(n(285)),u=c(n(29));function c(e){return e&&e.__esModule?e:{default:e}}function f(e,t,n){var r=e.openCursor(t);return new a.default(function(e,t){var o=[];r.onerror=function(e){t(new Error("Query failed: "+e.target.errorCode))},r.onsuccess=function(t){var r=t.target.result;r?(o.push(n(r)),r.continue()):e(o)}})}function d(e){return new a.default(function(t,n){e.oncomplete=function(e){t(e)},e.onerror=function(e){n(e.target.error)}})}function p(e){return new a.default(function(t,n){e.onsuccess=function(e){t(e)},e.onerror=function(e){n(e.target.error)}})}function m(e){return new a.default(function(t,n){e.onsuccess=function(){return t(e)},e.onerror=function(e){return n(e)}})}function h(e){return p(e).then(function(e){return e.target.result})}var _=function(e,t){this.indexedDB=e,this._dbName="matrix-js-sdk:"+(t||"default"),this.db=null,this._disconnected=!0,this._syncAccumulator=new l.default,this._isNewlyCreated=!1};_.prototype={connect:function(){var e=this;if(!this._disconnected)return console.log("LocalIndexedDBStoreBackend.connect: already connected or connecting"),a.default.resolve();this._disconnected=!1,console.log("LocalIndexedDBStoreBackend.connect: connecting...");var t=this.indexedDB.open(this._dbName,3);return t.onupgradeneeded=function(t){var n=t.target.result,r=t.oldVersion;console.log("LocalIndexedDBStoreBackend.connect: upgrading from "+r),r<1&&(e._isNewlyCreated=!0,function(e){e.createObjectStore("users",{keyPath:["userId"]}),e.createObjectStore("accountData",{keyPath:["type"]}),e.createObjectStore("sync",{keyPath:["clobber"]})}(n)),r<2&&function(e){e.createObjectStore("oob_membership_events",{keyPath:["room_id","state_key"]}).createIndex("room","room_id")}(n),r<3&&function(e){e.createObjectStore("client_options",{keyPath:["clobber"]})}(n)},t.onblocked=function(){console.log("can't yet open LocalIndexedDBStoreBackend because it is open elsewhere")},console.log("LocalIndexedDBStoreBackend.connect: awaiting connection..."),p(t).then(function(t){return console.log("LocalIndexedDBStoreBackend.connect: connected"),e.db=t.target.result,e.db.onversionchange=function(){e.db.close()},e._init()})},isNewlyCreated:function(){return a.default.resolve(this._isNewlyCreated)},_init:function(){var e=this;return a.default.all([this._loadAccountData(),this._loadSyncData()]).then(function(t){var n=(0,s.default)(t,2),r=n[0],o=n[1];console.log("LocalIndexedDBStoreBackend: loaded initial data"),e._syncAccumulator.accumulate({next_batch:o.nextBatch,rooms:o.roomsData,groups:o.groupsData,account_data:{events:r}})})},getOutOfBandMembers:function(e){var t=this;return new a.default(function(n,r){var o=t.db.transaction(["oob_membership_events"],"readonly").objectStore("oob_membership_events").index("room"),i=IDBKeyRange.only(e),a=o.openCursor(i),s=[],l=!1;a.onsuccess=function(e){var t=e.target.result;if(!t)return s.length||l?n(s):n(null);var r=t.value;r.oob_written?l=!0:s.push(r),t.continue()},a.onerror=function(e){r(e)}}).then(function(t){return console.log("LL: got "+(t&&t.length)+" membershipEvents from storage for room "+e+" ..."),t})},setOutOfBandMembers:function(){var e=(0,i.coroutine)(o.default.mark(function e(t,n){var r,a,s;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("LL: backend about to store "+n.length+" members for "+t),r=this.db.transaction(["oob_membership_events"],"readwrite"),a=r.objectStore("oob_membership_events"),n.forEach(function(e){a.put(e)}),s={room_id:t,oob_written:!0,state_key:0},a.put(s),e.next=8,(0,i.resolve)(d(r));case 8:console.log("LL: backend done storing for "+t+"!");case 9:case"end":return e.stop()}},e,this)}));return function(t,n){return e.apply(this,arguments)}}(),clearOutOfBandMembers:function(){var e=(0,i.coroutine)(o.default.mark(function e(t){var n,r,l,u,c,f,d,p,_,g,v,y,b;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=this.db.transaction(["oob_membership_events"],"readonly"),r=n.objectStore("oob_membership_events"),l=r.index("room"),u=IDBKeyRange.only(t),c=h(l.openKeyCursor(u,"next")).then(function(e){return e&&e.primaryKey[1]}),f=h(l.openKeyCursor(u,"prev")).then(function(e){return e&&e.primaryKey[1]}),e.next=8,(0,i.resolve)(a.default.all([c,f]));case 8:return d=e.sent,p=(0,s.default)(d,2),_=p[0],g=p[1],v=this.db.transaction(["oob_membership_events"],"readwrite"),y=v.objectStore("oob_membership_events"),b=IDBKeyRange.bound([t,_],[t,g]),console.log("LL: Deleting all users + marker in storage for room "+t+", with key range:",[t,_],[t,g]),e.next=18,(0,i.resolve)(m(y.delete(b)));case 18:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),clearDatabase:function(){var e=this;return new a.default(function(t,n){console.log("Removing indexeddb instance: "+e._dbName);var r=e.indexedDB.deleteDatabase(e._dbName);r.onblocked=function(){console.log("can't yet delete indexeddb "+e._dbName+" because it is open elsewhere")},r.onerror=function(e){console.warn("unable to delete js-sdk store indexeddb: "+e.target.error),t()},r.onsuccess=function(){console.log("Removed indexeddb instance: "+e._dbName),t()}})},getSavedSync:function(e){void 0===e&&(e=!0);var t=this._syncAccumulator.getJSON();return t.nextBatch?e?a.default.resolve(u.default.deepCopy(t)):a.default.resolve(t):a.default.resolve(null)},getNextBatchToken:function(){return a.default.resolve(this._syncAccumulator.getNextBatchToken())},setSyncData:function(e){var t=this;return a.default.resolve().then(function(){t._syncAccumulator.accumulate(e)})},syncToDatabase:function(e){var t=this._syncAccumulator.getJSON();return a.default.all([this._persistUserPresenceEvents(e),this._persistAccountData(t.accountData),this._persistSyncData(t.nextBatch,t.roomsData,t.groupsData)])},_persistSyncData:function(e,t,n){var r=this;return console.log("Persisting sync data up to ",e),a.default.try(function(){var o=r.db.transaction(["sync"],"readwrite");return o.objectStore("sync").put({clobber:"-",nextBatch:e,roomsData:t,groupsData:n}),d(o)})},_persistAccountData:function(e){var t=this;return a.default.try(function(){for(var n=t.db.transaction(["accountData"],"readwrite"),r=n.objectStore("accountData"),o=0;o<e.length;o++)r.put(e[o]);return d(n)})},_persistUserPresenceEvents:function(e){var t=this;return a.default.try(function(){var n=t.db.transaction(["users"],"readwrite"),o=n.objectStore("users"),i=!0,a=!1,s=void 0;try{for(var l,u=(0,r.default)(e);!(i=(l=u.next()).done);i=!0){var c=l.value;o.put({userId:c[0],event:c[1]})}}catch(e){a=!0,s=e}finally{try{!i&&u.return&&u.return()}finally{if(a)throw s}}return d(n)})},getUserPresenceEvents:function(){var e=this;return a.default.try(function(){return f(e.db.transaction(["users"],"readonly").objectStore("users"),void 0,function(e){return[e.value.userId,e.value.event]})})},_loadAccountData:function(){var e=this;return console.log("LocalIndexedDBStoreBackend: loading account data..."),a.default.try(function(){return f(e.db.transaction(["accountData"],"readonly").objectStore("accountData"),void 0,function(e){return e.value}).then(function(e){return console.log("LocalIndexedDBStoreBackend: loaded account data"),e})})},_loadSyncData:function(){var e=this;return console.log("LocalIndexedDBStoreBackend: loading sync data..."),a.default.try(function(){return f(e.db.transaction(["sync"],"readonly").objectStore("sync"),void 0,function(e){return e.value}).then(function(e){return console.log("LocalIndexedDBStoreBackend: loaded sync data"),e.length>1&&console.warn("loadSyncData: More than 1 sync row found."),e.length>0?e[0]:{}})})},getClientOptions:function(){var e=this;return a.default.resolve().then(function(){return f(e.db.transaction(["client_options"],"readonly").objectStore("client_options"),void 0,function(e){if(e.value&&e.value&&e.value.options)return e.value.options}).then(function(e){return e[0]})})},storeClientOptions:function(){var e=(0,i.coroutine)(o.default.mark(function e(t){var n;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=this.db.transaction(["client_options"],"readwrite"),n.objectStore("client_options").put({clobber:"-",options:t}),e.next=5,(0,i.resolve)(d(n));case 5:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},t.default=_},function(e,t,n){var r=n(60);e.exports=function(e,t,n){for(var o in t)n&&e[o]?e[o]=t[o]:r(e,o,t[o]);return e}},function(e,t){e.exports=function(e,t,n,r){if(!(e instanceof t)||void 0!==r&&r in e)throw TypeError(n+": incorrect invocation!");return e}},function(e,t,n){var r=n(35);e.exports=function(e,t){if(!r(e)||e._t!==t)throw TypeError("Incompatible receiver, "+t+" required!");return e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(14)),o=c(n(40)),i=c(n(20)),a=c(n(4)),s=c(n(5)),l=c(n(9)),u=c(n(29));function c(e){return e&&e.__esModule?e:{default:e}}var f=function(){function e(){(0,a.default)(this,e),this._outgoingRoomKeyRequests=[],this._account=null,this._sessions={},this._inboundGroupSessions={},this._deviceData=null,this._rooms={}}return(0,s.default)(e,[{key:"deleteAllData",value:function(){return l.default.resolve()}},{key:"getOrAddOutgoingRoomKeyRequest",value:function(e){var t=this,n=e.requestBody;return l.default.try(function(){var r=t._getOutgoingRoomKeyRequest(n);return r?(console.log("already have key request outstanding for "+n.room_id+" / "+n.session_id+": not sending another"),r):(console.log("enqueueing key request for "+n.room_id+" / "+n.session_id),t._outgoingRoomKeyRequests.push(e),e)})}},{key:"getOutgoingRoomKeyRequest",value:function(e){return l.default.resolve(this._getOutgoingRoomKeyRequest(e))}},{key:"_getOutgoingRoomKeyRequest",value:function(e){var t=!0,n=!1,r=void 0;try{for(var o,a=(0,i.default)(this._outgoingRoomKeyRequests);!(t=(o=a.next()).done);t=!0){var s=o.value;if(u.default.deepCompare(s.requestBody,e))return s}}catch(e){n=!0,r=e}finally{try{!t&&a.return&&a.return()}finally{if(n)throw r}}return null}},{key:"getOutgoingRoomKeyRequestByState",value:function(e){var t=!0,n=!1,r=void 0;try{for(var o,a=(0,i.default)(this._outgoingRoomKeyRequests);!(t=(o=a.next()).done);t=!0){var s=o.value,u=!0,c=!1,f=void 0;try{for(var d,p=(0,i.default)(e);!(u=(d=p.next()).done);u=!0){var m=d.value;if(s.state===m)return l.default.resolve(s)}}catch(e){c=!0,f=e}finally{try{!u&&p.return&&p.return()}finally{if(c)throw f}}}}catch(e){n=!0,r=e}finally{try{!t&&a.return&&a.return()}finally{if(n)throw r}}return l.default.resolve(null)}},{key:"updateOutgoingRoomKeyRequest",value:function(e,t,n){var r=!0,a=!1,s=void 0;try{for(var u,c=(0,i.default)(this._outgoingRoomKeyRequests);!(r=(u=c.next()).done);r=!0){var f=u.value;if(f.requestId===e)return f.state!=t?(console.warn("Cannot update room key request from "+t+" as it was already updated to "+f.state),l.default.resolve(null)):((0,o.default)(f,n),l.default.resolve(f))}}catch(e){a=!0,s=e}finally{try{!r&&c.return&&c.return()}finally{if(a)throw s}}return l.default.resolve(null)}},{key:"deleteOutgoingRoomKeyRequest",value:function(e,t){for(var n=0;n<this._outgoingRoomKeyRequests.length;n++){var r=this._outgoingRoomKeyRequests[n];if(r.requestId===e)return r.state!=t?(console.warn("Cannot delete room key request in state "+r.state+" (expected "+t+")"),l.default.resolve(null)):(this._outgoingRoomKeyRequests.splice(n,1),l.default.resolve(r))}return l.default.resolve(null)}},{key:"getAccount",value:function(e,t){t(this._account)}},{key:"storeAccount",value:function(e,t){this._account=t}},{key:"countEndToEndSessions",value:function(e,t){return(0,r.default)(this._sessions).length}},{key:"getEndToEndSession",value:function(e,t,n,r){r((this._sessions[e]||{})[t]||null)}},{key:"getEndToEndSessions",value:function(e,t,n){n(this._sessions[e]||{})}},{key:"storeEndToEndSession",value:function(e,t,n,r){var o=this._sessions[e];void 0===o&&(o={},this._sessions[e]=o),o[t]=n}},{key:"getEndToEndInboundGroupSession",value:function(e,t,n,r){r(this._inboundGroupSessions[e+"/"+t]||null)}},{key:"getAllEndToEndInboundGroupSessions",value:function(e,t){var n=!0,o=!1,a=void 0;try{for(var s,l=(0,i.default)((0,r.default)(this._inboundGroupSessions));!(n=(s=l.next()).done);n=!0){var u=s.value;t({senderKey:u.substr(0,43),sessionId:u.substr(44),sessionData:this._inboundGroupSessions[u]})}}catch(e){o=!0,a=e}finally{try{!n&&l.return&&l.return()}finally{if(o)throw a}}t(null)}},{key:"addEndToEndInboundGroupSession",value:function(e,t,n,r){var o=e+"/"+t;void 0===this._inboundGroupSessions[o]&&(this._inboundGroupSessions[o]=n)}},{key:"storeEndToEndInboundGroupSession",value:function(e,t,n,r){this._inboundGroupSessions[e+"/"+t]=n}},{key:"getEndToEndDeviceData",value:function(e,t){t(this._deviceData)}},{key:"storeEndToEndDeviceData",value:function(e,t){this._deviceData=e}},{key:"storeEndToEndRoom",value:function(e,t,n){this._rooms[e]=t}},{key:"getEndToEndRooms",value:function(e,t){t(this._rooms)}},{key:"doTxn",value:function(e,t,n){return l.default.resolve(n(null))}}]),e}();t.default=f},function(e,t,n){"use strict";t.decode=t.parse=n(1097),t.encode=t.stringify=n(1098)},function(e,t,n){"use strict";var r=n(55).EventEmitter,o=n(288),i=n(29);function a(e,t){this.roomId=e,this.userId=t,this.typing=!1,this.name=t,this.rawDisplayName=t,this.powerLevel=0,this.powerLevelNorm=0,this.user=null,this.membership=null,this.events={member:null},this._isOutOfBand=!1,this._updateModifiedTime()}i.inherits(a,r),a.prototype.markOutOfBand=function(){this._isOutOfBand=!0},a.prototype.isOutOfBand=function(){return this._isOutOfBand},a.prototype.setMembershipEvent=function(e,t){if("m.room.member"===e.getType()){this._isOutOfBand=!1,this.events.member=e;var n=this.membership;this.membership=e.getDirectionalContent().membership;var r=this.name;this.name=function(e,t,n){if(!t||t===e)return e;if(!n)return t;var r=i.removeHiddenChars(t);if(!r)return e;var o=/@.+:.+/.test(t);if(!o){var a=n.getUserIdsWithDisplayName(r);o=a.some(function(t){return t!==e})}if(o)return t+" ("+e+")";return t}(this.userId,e.getDirectionalContent().displayname,t),this.rawDisplayName=e.getDirectionalContent().displayname||this.userId,n!==this.membership&&(this._updateModifiedTime(),this.emit("RoomMember.membership",e,this,n)),r!==this.name&&(this._updateModifiedTime(),this.emit("RoomMember.name",e,this,r))}},a.prototype.setPowerLevelEvent=function(e){if("m.room.power_levels"===e.getType()){var t=e.getDirectionalContent(),n=t.users_default||0;i.forEach(i.values(t.users),function(e){n=Math.max(n,e)});var r=this.powerLevel,o=this.powerLevelNorm;t.users&&void 0!==t.users[this.userId]?this.powerLevel=t.users[this.userId]:void 0!==t.users_default?this.powerLevel=t.users_default:this.powerLevel=0,this.powerLevelNorm=0,n>0&&(this.powerLevelNorm=100*this.powerLevel/n),r===this.powerLevel&&o===this.powerLevelNorm||(this._updateModifiedTime(),this.emit("RoomMember.powerLevel",e,this))}},a.prototype.setTypingEvent=function(e){if("m.typing"===e.getType()){var t=this.typing;this.typing=!1;var n=e.getContent().user_ids;i.isArray(n)&&(-1!==n.indexOf(this.userId)&&(this.typing=!0),t!==this.typing&&(this._updateModifiedTime(),this.emit("RoomMember.typing",e,this)))}},a.prototype._updateModifiedTime=function(){this._modified=Date.now()},a.prototype.getLastModifiedTime=function(){return this._modified},a.prototype.isKicked=function(){return"leave"===this.membership&&this.events.member.getSender()!==this.events.member.getStateKey()},a.prototype.getDMInviter=function(){if(this.events.member){var e=this.events.member,t=e.getContent(),n=e.getSender();if("join"===t.membership&&(t=e.getPrevContent(),n=e.getUnsigned().prev_sender),"invite"===t.membership&&t.is_direct)return n}},a.prototype.getAvatarUrl=function(e,t,n,r,i,a){void 0===i&&(i=!0);var s=this.getMxcAvatarUrl();if(!s&&!i)return null;var l=o.getHttpUriForMxc(e,s,t,n,r,a);return l||(i?o.getIdenticonUri(e,this.userId,t,n):null)},a.prototype.getMxcAvatarUrl=function(){return this.events.member?this.events.member.getDirectionalContent().avatar_url:this.user?this.user.avatarUrl:null},e.exports=a},function(e,t,n){"use strict";var r=n(1106);function o(e,t,n){for(var r=t.split("."),o=e,i=0;i<r.length-1;i++)o[r[i]]||(o[r[i]]={}),o=o[r[i]];o[r[r.length-1]]=n}function i(e,t){this.userId=e,this.filterId=t,this.definition={}}i.LAZY_LOADING_MESSAGES_FILTER={lazy_load_members:!0},i.LAZY_LOADING_SYNC_FILTER={room:{state:i.LAZY_LOADING_MESSAGES_FILTER}},i.prototype.getFilterId=function(){return this.filterId},i.prototype.getDefinition=function(){return this.definition},i.prototype.setDefinition=function(e){this.definition=e;var t=e.room,n={};t&&(t.rooms&&(n.rooms=t.rooms),t.rooms&&(n.not_rooms=t.not_rooms),this._include_leave=t.include_leave||!1),this._room_filter=new r(n),this._room_timeline_filter=new r(t&&t.timeline||{})},i.prototype.getRoomTimelineFilterComponent=function(){return this._room_timeline_filter},i.prototype.filterRoomTimeline=function(e){return this._room_timeline_filter.filter(this._room_filter.filter(e))},i.prototype.setTimelineLimit=function(e){o(this.definition,"room.timeline.limit",e)},i.prototype.setIncludeLeaveRooms=function(e){o(this.definition,"room.include_leave",e)},i.fromJson=function(e,t,n){var r=new i(e,t);return r.setDefinition(n),r},e.exports=i},function(e,t,n){var r,o,i,a=n(66),s=n(574),l=n(272),u=n(136),c=n(34),f=c.process,d=c.setImmediate,p=c.clearImmediate,m=c.MessageChannel,h=c.Dispatch,_=0,g={},v=function(){var e=+this;if(g.hasOwnProperty(e)){var t=g[e];delete g[e],t()}},y=function(e){v.call(e.data)};d&&p||(d=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return g[++_]=function(){s("function"==typeof e?e:Function(e),t)},r(_),_},p=function(e){delete g[e]},"process"==n(95)(f)?r=function(e){f.nextTick(a(v,e,1))}:h&&h.now?r=function(e){h.now(a(v,e,1))}:m?(i=(o=new m).port2,o.port1.onmessage=y,r=a(i.postMessage,i,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts?(r=function(e){c.postMessage(e+"","*")},c.addEventListener("message",y,!1)):r="onreadystatechange"in u("script")?function(e){l.appendChild(u("script")).onreadystatechange=function(){l.removeChild(this),v.call(e)}}:function(e){setTimeout(a(v,e,1),0)}),e.exports={set:d,clear:p}},function(e,t,n){"use strict";var r=n(94);e.exports.f=function(e){return new function(e){var t,n;this.promise=new e(function(e,r){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=r}),this.resolve=r(t),this.reject=r(n)}(e)}},function(e,t,n){"use strict";var r=n(55).EventEmitter,o=n(29),i=n(172),a=void 0;function s(e,t){this.room=e,this._timelineSupport=Boolean(t.timelineSupport),this._liveTimeline=new i(this),this._timelines=[this._liveTimeline],this._eventIdToTimeline={},this._filter=t.filter||null}a=console.log.bind(console),o.inherits(s,r),s.prototype.getFilter=function(){return this._filter},s.prototype.setFilter=function(e){this._filter=e},s.prototype.getPendingEvents=function(){return this.room?this._filter?this._filter.filterRoomTimeline(this.room.getPendingEvents()):this.room.getPendingEvents():[]},s.prototype.getLiveTimeline=function(){return this._liveTimeline},s.prototype.eventIdToTimeline=function(e){return this._eventIdToTimeline[e]},s.prototype.replaceEventId=function(e,t){var n=this._eventIdToTimeline[e];n&&(delete this._eventIdToTimeline[e],this._eventIdToTimeline[t]=n)},s.prototype.resetLiveTimeline=function(e,t){var n=!this._timelineSupport||!t,r=this._liveTimeline,o=n?r.forkLive(i.FORWARDS):r.fork(i.FORWARDS);n?(this._timelines=[o],this._eventIdToTimeline={}):this._timelines.push(o),t&&r.setPaginationToken(t,i.FORWARDS),o.setPaginationToken(e,i.BACKWARDS),this._liveTimeline=o,this.emit("Room.timelineReset",this.room,this,n)},s.prototype.getTimelineForEvent=function(e){var t=this._eventIdToTimeline[e];return void 0===t?null:t},s.prototype.findEventById=function(e){var t=this.getTimelineForEvent(e);if(t)return o.findElement(t.getEvents(),function(t){return t.getId()==e})},s.prototype.addTimeline=function(){if(!this._timelineSupport)throw new Error("timeline support is disabled. Set the 'timelineSupport' parameter to true when creating MatrixClient to enable it.");var e=new i(this);return this._timelines.push(e),e},s.prototype.addEventsToTimeline=function(e,t,n,r){if(!n)throw new Error("'timeline' not specified for EventTimelineSet.addEventsToTimeline");if(!t&&n==this._liveTimeline)throw new Error("EventTimelineSet.addEventsToTimeline cannot be used for adding events to the live timeline - use Room.addLiveEvents instead");if(!this._filter||(e=this._filter.filterRoomTimeline(e)).length){for(var o=t?i.BACKWARDS:i.FORWARDS,s=t?i.FORWARDS:i.BACKWARDS,l=!1,u=!1,c=0;c<e.length;c++){var f=e[c],d=f.getId(),p=this._eventIdToTimeline[d];if(p)if(u=!1,p!=n){var m=n.getNeighbouringTimeline(o);m?(a(p==m?"Event "+d+" in neighbouring timeline - switching to "+p:"Event "+d+" already in a different timeline "+p),n=p):(console.info("Already have timeline for "+d+" - joining timeline "+n+" to "+p),n.setNeighbouringTimeline(p,o),p.setNeighbouringTimeline(n,s),n=p,l=!0)}else a("Event "+d+" already in timeline "+n);else this.addEventToTimeline(f,n,t),u=!0,l=!0}!u&&l||n.setPaginationToken(r,o)}},s.prototype.addLiveEvent=function(e,t){if(this._filter&&!this._filter.filterRoomTimeline([e]).length)return;var n=this._eventIdToTimeline[e.getId()];if(n)if("replace"===t){a("EventTimelineSet.addLiveEvent: replacing duplicate event "+e.getId());for(var r=n.getEvents(),o=0;o<r.length;o++)if(r[o].getId()===e.getId()){i.setEventMetadata(e,n.getState(i.FORWARDS),!1),r[o].encryptedType||(r[o]=e);break}}else a("EventTimelineSet.addLiveEvent: ignoring duplicate event "+e.getId());else this.addEventToTimeline(e,this._liveTimeline,!1)},s.prototype.addEventToTimeline=function(e,t,n){var r=e.getId();t.addEvent(e,n),this._eventIdToTimeline[r]=t;var o={timeline:t,liveEvent:!n&&t==this._liveTimeline};this.emit("Room.timeline",e,this.room,Boolean(n),!1,o)},s.prototype.handleRemoteEcho=function(e,t,n){var r=this._eventIdToTimeline[t];r?(delete this._eventIdToTimeline[t],this._eventIdToTimeline[n]=r):this._filter?this._filter.filterRoomTimeline([e]).length&&this.addEventToTimeline(e,this._liveTimeline,!1):this.addEventToTimeline(e,this._liveTimeline,!1)},s.prototype.removeEvent=function(e){var t=this._eventIdToTimeline[e];if(!t)return null;var n=t.removeEvent(e);if(n){delete this._eventIdToTimeline[e];var r={timeline:t};this.emit("Room.timeline",n,this.room,void 0,!0,r)}return n},s.prototype.compareEventOrdering=function(e,t){if(e==t)return 0;var n=this._eventIdToTimeline[e],r=this._eventIdToTimeline[t];if(void 0===n)return null;if(void 0===r)return null;if(n===r){for(var o=void 0,a=void 0,s=n.getEvents(),l=0;l<s.length&&(void 0===o||void 0===a);l++){var u=s[l].getId();u==e&&(o=l),u==t&&(a=l)}return o-a}for(var c=n;c;){if(c===r)return-1;c=c.getNeighbouringTimeline(i.FORWARDS)}for(c=n;c;){if(c===r)return 1;c=c.getNeighbouringTimeline(i.BACKWARDS)}return null},e.exports=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UnknownDeviceError=t.DecryptionError=t.DecryptionAlgorithm=t.EncryptionAlgorithm=t.DECRYPTION_CLASSES=t.ENCRYPTION_CLASSES=void 0;var r=c(n(14)),o=c(n(11)),i=c(n(12)),a=c(n(13)),s=c(n(4)),l=c(n(5));t.registerAlgorithm=function(e,t,n){f[e]=t,d[e]=n};var u=c(n(9));function c(e){return e&&e.__esModule?e:{default:e}}var f=t.ENCRYPTION_CLASSES={},d=t.DECRYPTION_CLASSES={},p=function(){function e(t){(0,s.default)(this,e),this._userId=t.userId,this._deviceId=t.deviceId,this._crypto=t.crypto,this._olmDevice=t.olmDevice,this._baseApis=t.baseApis,this._roomId=t.roomId}return(0,l.default)(e,[{key:"onRoomMembership",value:function(e,t,n){}}]),e}();t.EncryptionAlgorithm=p;var m=function(){function e(t){(0,s.default)(this,e),this._userId=t.userId,this._crypto=t.crypto,this._olmDevice=t.olmDevice,this._baseApis=t.baseApis,this._roomId=t.roomId}return(0,l.default)(e,[{key:"onRoomKeyEvent",value:function(e){}},{key:"importRoomKey",value:function(e){}},{key:"hasKeysForKeyRequest",value:function(e){return u.default.resolve(!1)}},{key:"shareKeysWithDevice",value:function(e){throw new Error("shareKeysWithDevice not supported for this DecryptionAlgorithm")}}]),e}();t.DecryptionAlgorithm=m;var h=function(e){function t(e,n,a){(0,s.default)(this,t);var l=(0,i.default)(this,(t.__proto__||(0,o.default)(t)).call(this,n));return l.code=e,l.name="DecryptionError",l.detailedString=function(e,t){var n=e.name+"[msg: "+e.message;t&&(n+=", "+(0,r.default)(t).map(function(e){return e+": "+t[e]}).join(", "));return n+="]"}(l,a),l}return(0,a.default)(t,e),t}(Error);t.DecryptionError=h;t.UnknownDeviceError=function(e){function t(e,n){(0,s.default)(this,t);var r=(0,i.default)(this,(t.__proto__||(0,o.default)(t)).call(this,e));return r.name="UnknownDeviceError",r.devices=n,r}return(0,a.default)(t,e),t}(Error)},function(e,t,n){"use strict";function r(e){Object.defineProperty(this,"deviceId",{enumerable:!0,value:e}),this.algorithms=[],this.keys={},this.verified=o.UNVERIFIED,this.known=!1,this.unsigned={}}r.fromStorage=function(e,t){var n=new r(t);for(var o in e)e.hasOwnProperty(o)&&(n[o]=e[o]);return n},r.prototype.toStorage=function(){return{algorithms:this.algorithms,keys:this.keys,verified:this.verified,known:this.known,unsigned:this.unsigned}},r.prototype.getFingerprint=function(){return this.keys["ed25519:"+this.deviceId]},r.prototype.getIdentityKey=function(){return this.keys["curve25519:"+this.deviceId]},r.prototype.getDisplayName=function(){return this.unsigned.device_display_name||null},r.prototype.isBlocked=function(){return this.verified==o.BLOCKED},r.prototype.isVerified=function(){return this.verified==o.VERIFIED},r.prototype.isUnverified=function(){return this.verified==o.UNVERIFIED},r.prototype.isKnown=function(){return 1==this.known},r.DeviceVerification={VERIFIED:1,UNVERIFIED:0,BLOCKED:-1};var o=r.DeviceVerification;e.exports=r},function(e,t,n){"use strict";var r=l(n(14)),o=l(n(8)),i=l(n(127)),a=n(2),s=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(598));function l(e){return e&&e.__esModule?e:{default:e}}var u={"m.room.message":function(e){var t=e.sender&&e.sender.name?e.sender.name:e.getSender(),n=t+": "+e.getContent().body;return"m.emote"===e.getContent().msgtype?n="* "+t+" "+n:"m.image"===e.getContent().msgtype&&(n=(0,a._t)("%(senderDisplayName)s sent an image.",{senderDisplayName:t})),n},"m.call.invite":function(e){var t=e.sender?e.sender.name:(0,a._t)("Someone"),n="voice";e.getContent().offer&&e.getContent().offer.sdp&&-1!==e.getContent().offer.sdp.indexOf("m=video")&&(n="video");var r=o.default.get().supportsVoip()?"":(0,a._t)("(not supported by this browser)");return(0,a._t)("%(senderName)s placed a %(callType)s call.",{senderName:t,callType:n})+" "+r},"m.call.answer":function(e){var t=e.sender?e.sender.name:(0,a._t)("Someone"),n=o.default.get().supportsVoip()?"":(0,a._t)("(not supported by this browser)");return(0,a._t)("%(senderName)s answered the call.",{senderName:t})+" "+n},"m.call.hangup":function(e){var t=e.sender?e.sender.name:(0,a._t)("Someone"),n=e.getContent(),r="";return o.default.get().supportsVoip()?n.reason&&(r="ice_failed"===n.reason?(0,a._t)("(could not connect media)"):"invite_timeout"===n.reason?(0,a._t)("(no answer)"):"user hangup"===n.reason?"":(0,a._t)("(unknown failure: %(reason)s)",{reason:n.reason})):r=(0,a._t)("(not supported by this browser)"),(0,a._t)("%(senderName)s ended the call.",{senderName:t})+" "+r}},c={"m.room.aliases":function(e){var t=e.sender&&e.sender.name?e.sender.name:e.getSender(),n=e.getPrevContent().aliases||[],r=e.getContent().aliases||[],o=r.filter(function(e){return!n.includes(e)}),i=n.filter(function(e){return!r.includes(e)});return o.length||i.length?o.length&&!i.length?(0,a._t)("%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.",{senderName:t,count:o.length,addedAddresses:o.join(", ")}):!o.length&&i.length?(0,a._t)("%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.",{senderName:t,count:i.length,removedAddresses:i.join(", ")}):(0,a._t)("%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.",{senderName:t,addedAddresses:o.join(", "),removedAddresses:i.join(", ")}):""},"m.room.canonical_alias":function(e){var t=e.sender&&e.sender.name?e.sender.name:e.getSender(),n=e.getPrevContent().alias;return e.getContent().alias?(0,a._t)("%(senderName)s set the main address for this room to %(address)s.",{senderName:t,address:e.getContent().alias}):n?(0,a._t)("%(senderName)s removed the main address for this room.",{senderName:t}):void 0},"m.room.name":function(e){var t=e.sender&&e.sender.name?e.sender.name:e.getSender();return e.getContent().name&&0!==e.getContent().name.trim().length?(0,a._t)("%(senderDisplayName)s changed the room name to %(roomName)s.",{senderDisplayName:t,roomName:e.getContent().name}):(0,a._t)("%(senderDisplayName)s removed the room name.",{senderDisplayName:t})},"m.room.topic":function(e){var t=e.sender&&e.sender.name?e.sender.name:e.getSender();return(0,a._t)('%(senderDisplayName)s changed the topic to "%(topic)s".',{senderDisplayName:t,topic:e.getContent().topic})},"m.room.member":function(e){var t=e.sender?e.sender.name:e.getSender(),n=e.target?e.target.name:e.getStateKey(),r=e.getPrevContent(),o=e.getContent(),s=i.default.getConferenceHandler(),l=o.reason?(0,a._t)("Reason")+": "+o.reason:"";switch(o.membership){case"invite":var u=o.third_party_invite;return u?u.display_name?(0,a._t)("%(targetName)s accepted the invitation for %(displayName)s.",{targetName:n,displayName:u.display_name}):(0,a._t)("%(targetName)s accepted an invitation.",{targetName:n}):s&&s.isConferenceUser(e.getStateKey())?(0,a._t)("%(senderName)s requested a VoIP conference.",{senderName:t}):(0,a._t)("%(senderName)s invited %(targetName)s.",{senderName:t,targetName:n});case"ban":return(0,a._t)("%(senderName)s banned %(targetName)s.",{senderName:t,targetName:n})+" "+l;case"join":return r&&"join"===r.membership?r.displayname&&o.displayname&&r.displayname!==o.displayname?(0,a._t)("%(oldDisplayName)s changed their display name to %(displayName)s.",{oldDisplayName:r.displayname,displayName:o.displayname}):!r.displayname&&o.displayname?(0,a._t)("%(senderName)s set their display name to %(displayName)s.",{senderName:e.getSender(),displayName:o.displayname}):r.displayname&&!o.displayname?(0,a._t)("%(senderName)s removed their display name (%(oldDisplayName)s).",{senderName:t,oldDisplayName:r.displayname}):r.avatar_url&&!o.avatar_url?(0,a._t)("%(senderName)s removed their profile picture.",{senderName:t}):r.avatar_url&&o.avatar_url&&r.avatar_url!==o.avatar_url?(0,a._t)("%(senderName)s changed their profile picture.",{senderName:t}):!r.avatar_url&&o.avatar_url?(0,a._t)("%(senderName)s set a profile picture.",{senderName:t}):"":(e.target||console.warn("Join message has no target! -- "+e.getContent().state_key),s&&s.isConferenceUser(e.getStateKey())?(0,a._t)("VoIP conference started."):(0,a._t)("%(targetName)s joined the room.",{targetName:n}));case"leave":return e.getSender()===e.getStateKey()?s&&s.isConferenceUser(e.getStateKey())?(0,a._t)("VoIP conference finished."):"invite"===r.membership?(0,a._t)("%(targetName)s rejected the invitation.",{targetName:n}):(0,a._t)("%(targetName)s left the room.",{targetName:n}):"ban"===r.membership?(0,a._t)("%(senderName)s unbanned %(targetName)s.",{senderName:t,targetName:n}):"join"===r.membership?(0,a._t)("%(senderName)s kicked %(targetName)s.",{senderName:t,targetName:n})+" "+l:"invite"===r.membership?(0,a._t)("%(senderName)s withdrew %(targetName)s's invitation.",{senderName:t,targetName:n})+" "+l:(0,a._t)("%(targetName)s left the room.",{targetName:n})}},"m.room.third_party_invite":function(e){var t=e.sender?e.sender.name:e.getSender();return(0,a._t)("%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.",{senderName:t,targetDisplayName:e.getContent().display_name})},"m.room.history_visibility":function(e){var t=e.sender?e.sender.name:e.getSender();switch(e.getContent().history_visibility){case"invited":return(0,a._t)("%(senderName)s made future room history visible to all room members, from the point they are invited.",{senderName:t});case"joined":return(0,a._t)("%(senderName)s made future room history visible to all room members, from the point they joined.",{senderName:t});case"shared":return(0,a._t)("%(senderName)s made future room history visible to all room members.",{senderName:t});case"world_readable":return(0,a._t)("%(senderName)s made future room history visible to anyone.",{senderName:t});default:return(0,a._t)("%(senderName)s made future room history visible to unknown (%(visibility)s).",{senderName:t,visibility:e.getContent().history_visibility})}},"m.room.encryption":function(e){var t=e.sender?e.sender.name:e.getSender();return(0,a._t)("%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).",{senderName:t,algorithm:e.getContent().algorithm})},"m.room.power_levels":function(e){var t=e.sender?e.sender.name:e.getSender();if(!e.getPrevContent()||!e.getPrevContent().users)return"";var n=e.getContent().users_default||0,o=[];(0,r.default)(e.getContent().users).forEach(function(e){-1===o.indexOf(e)&&o.push(e)}),(0,r.default)(e.getPrevContent().users).forEach(function(e){-1===o.indexOf(e)&&o.push(e)});var i=[];return o.forEach(function(t){var r=e.getPrevContent().users[t],o=e.getContent().users[t];o!==r&&i.push((0,a._t)("%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s",{userId:t,fromPowerLevel:s.textualPowerLevel(r,n),toPowerLevel:s.textualPowerLevel(o,n)}))}),i.length?(0,a._t)("%(senderName)s changed the power level of %(powerLevelDiffText)s.",{senderName:t,powerLevelDiffText:i.join(", ")}):""},"m.room.pinned_events":function(e){var t=e.getSender();return(0,a._t)("%(senderName)s changed the pinned messages for the room.",{senderName:t})},"m.room.server_acl":function(e){var t=e.sender&&e.sender.name?e.sender.name:e.getSender(),n=e.getPrevContent(),r=[],o=e.getContent(),i={deny:Array.isArray(n.deny)?n.deny:[],allow:Array.isArray(n.allow)?n.allow:[],allow_ip_literals:!(!1===n.allow_ip_literals)},a="";if(a=0===i.deny.length&&0===i.allow.length?t+" set server ACLs for this room: ":t+" changed the server ACLs for this room: ",Array.isArray(o.allow)||(o.allow=[]),0===o.allow.length)return a+"🎉 All servers are banned from participating! This room can no longer be used.";Array.isArray(o.deny)||(o.deny=[]);var s=o.deny.filter(function(e){return"string"==typeof e&&!i.deny.includes(e)}),l=i.deny.filter(function(e){return"string"==typeof e&&!o.deny.includes(e)}),u=o.allow.filter(function(e){return"string"==typeof e&&!i.allow.includes(e)}),c=i.allow.filter(function(e){return"string"==typeof e&&!o.allow.includes(e)});if(s.length>0&&r.push("Servers matching "+s.join(", ")+" are now banned."),l.length>0&&r.push("Servers matching "+l.join(", ")+" were removed from the ban list."),u.length>0&&r.push("Servers matching "+u.join(", ")+" are now allowed."),c.length>0&&r.push("Servers matching "+c.join(", ")+" were removed from the allowed list."),i.allow_ip_literals!==o.allow_ip_literals){var f=o.allow_ip_literals?"allowed":"banned";r.push("Participating from a server using an IP literal hostname is now "+f+".")}return a+r.join(" ")},"im.vector.modular.widgets":function(e){var t=e.getSender(),n=e.getPrevContent(),r=n.name,o=n.type,i=n.url,s=e.getContent()||{},l=s.name,u=s.type,c=s.url,f=l||r||u||o||"";return f&&f.length>0&&(f=f[0].toUpperCase()+f.slice(1)+" "),c?i?(0,a._t)("%(widgetName)s widget modified by %(senderName)s",{widgetName:f,senderName:t}):(0,a._t)("%(widgetName)s widget added by %(senderName)s",{widgetName:f,senderName:t}):(0,a._t)("%(widgetName)s widget removed by %(senderName)s",{widgetName:f,senderName:t})}};e.exports={textForEvent:function(e){var t=(e.isState()?c:u)[e.getType()];return t?t(e):""}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getUnknownDevicesForRoom=void 0;var r=d(n(19)),o=n(9),i=d(n(14)),a=t.getUnknownDevicesForRoom=function(){var e=(0,o.coroutine)(r.default.mark(function e(t,n){var a,s,l;return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,o.resolve)(n.getEncryptionTargetMembers().map(function(e){return e.userId}));case 2:return a=e.sent,e.next=5,(0,o.resolve)(t.downloadKeys(a,!1));case 5:return s=e.sent,l={},(0,i.default)(s).forEach(function(e){(0,i.default)(s[e]).map(function(t){var n=s[e][t];n.isUnverified()&&!n.isKnown()&&(void 0===l[e]&&(l[e]={}),l[e][t]=n)})}),e.abrupt("return",l);case 9:case"end":return e.stop()}},e,this)}));return function(t,n){return e.apply(this,arguments)}}();t.markAllDevicesKnown=function(e,t){(0,i.default)(t).forEach(function(n){(0,i.default)(t[n]).map(function(t){e.setDeviceKnown(n,t,!0)})})},t.showUnknownDeviceDialogForMessages=function(e,t){a(e,t).then(function(e){var n=l.default.getComponent("dialogs.UnknownDeviceDialog");c.default.createTrackedDialog("Unknown Device Dialog","",n,{room:t,devices:e,sendAnywayLabel:(0,f._t)("Send anyway"),sendLabel:(0,f._t)("Send"),onSend:function(){s.default.resendUnsentEvents(t)},onFinished:p},"mx_Dialog_unknownDevice")})},t.showUnknownDeviceDialogForCalls=function(e,t,n,r,o){a(e,t).then(function(e){var i=l.default.getComponent("dialogs.UnknownDeviceDialog");c.default.createTrackedDialog("Unknown Device Dialog","",i,{room:t,devices:e,sendAnywayLabel:r,sendLabel:o,onSend:n},"mx_Dialog_unknownDevice")})};var s=d(n(291)),l=d(n(3)),u=d(n(10)),c=d(n(16)),f=n(2);function d(e){return e&&e.__esModule?e:{default:e}}function p(){u.default.dispatch({action:"focus_composer"})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getVectorConfig=void 0;var r=l(n(19)),o=l(n(14)),i=n(9),a=l(i),s=(t.getVectorConfig=function(){var e=(0,i.coroutine)(r.default.mark(function e(t){var n;return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return void 0===t&&(t=""),""===t||t.endsWith("/")||(t+="/"),e.prev=2,e.next=5,(0,i.resolve)(u(t+"config."+document.domain+".json"));case 5:if(n=e.sent,0!==(0,o.default)(n).length){e.next=8;break}throw new Error;case 8:return e.abrupt("return",n);case 11:return e.prev=11,e.t0=e.catch(2),e.next=15,(0,i.resolve)(u(t+"config.json"));case 15:return e.abrupt("return",e.sent);case 16:case"end":return e.stop()}},e,this,[[2,11]])}));return function(t){return e.apply(this,arguments)}}(),l(n(99)));function l(e){return e&&e.__esModule?e:{default:e}}function u(e){return new a.default(function(t,n){(0,s.default)({method:"GET",url:e},function(e,r,o){if(e||r.status<200||r.status>=300)return r&&(404==r.status||0==r.status&&""==o)&&t({}),void n({err:e,response:r});t(JSON.parse(o))})})}},function(e){e.exports={Aacute:"Á",aacute:"á",Abreve:"Ă",abreve:"ă",ac:"∾",acd:"∿",acE:"∾̳",Acirc:"Â",acirc:"â",acute:"´",Acy:"А",acy:"а",AElig:"Æ",aelig:"æ",af:"⁡",Afr:"𝔄",afr:"𝔞",Agrave:"À",agrave:"à",alefsym:"ℵ",aleph:"ℵ",Alpha:"Α",alpha:"α",Amacr:"Ā",amacr:"ā",amalg:"⨿",amp:"&",AMP:"&",andand:"⩕",And:"⩓",and:"∧",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angmsd:"∡",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",Aogon:"Ą",aogon:"ą",Aopf:"𝔸",aopf:"𝕒",apacir:"⩯",ap:"≈",apE:"⩰",ape:"≊",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",Aring:"Å",aring:"å",Ascr:"𝒜",ascr:"𝒶",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",barwed:"⌅",Barwed:"⌆",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",Bcy:"Б",bcy:"б",bdquo:"„",becaus:"∵",because:"∵",Because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",Beta:"Β",beta:"β",beth:"ℶ",between:"≬",Bfr:"𝔅",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bNot:"⫭",bnot:"⌐",Bopf:"𝔹",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxdl:"┐",boxdL:"╕",boxDl:"╖",boxDL:"╗",boxdr:"┌",boxdR:"╒",boxDr:"╓",boxDR:"╔",boxh:"─",boxH:"═",boxhd:"┬",boxHd:"╤",boxhD:"╥",boxHD:"╦",boxhu:"┴",boxHu:"╧",boxhU:"╨",boxHU:"╩",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxul:"┘",boxuL:"╛",boxUl:"╜",boxUL:"╝",boxur:"└",boxuR:"╘",boxUr:"╙",boxUR:"╚",boxv:"│",boxV:"║",boxvh:"┼",boxvH:"╪",boxVh:"╫",boxVH:"╬",boxvl:"┤",boxvL:"╡",boxVl:"╢",boxVL:"╣",boxvr:"├",boxvR:"╞",boxVr:"╟",boxVR:"╠",bprime:"‵",breve:"˘",Breve:"˘",brvbar:"¦",bscr:"𝒷",Bscr:"ℬ",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsolb:"⧅",bsol:"\\",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",Bumpeq:"≎",bumpeq:"≏",Cacute:"Ć",cacute:"ć",capand:"⩄",capbrcup:"⩉",capcap:"⩋",cap:"∩",Cap:"⋒",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",Ccaron:"Č",ccaron:"č",Ccedil:"Ç",ccedil:"ç",Ccirc:"Ĉ",ccirc:"ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",Cdot:"Ċ",cdot:"ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",centerdot:"·",CenterDot:"·",cfr:"𝔠",Cfr:"ℭ",CHcy:"Ч",chcy:"ч",check:"✓",checkmark:"✓",Chi:"Χ",chi:"χ",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cir:"○",cirE:"⧃",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",colon:":",Colon:"∷",Colone:"⩴",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",conint:"∮",Conint:"∯",ContourIntegral:"∮",copf:"𝕔",Copf:"ℂ",coprod:"∐",Coproduct:"∐",copy:"©",COPY:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",cross:"✗",Cross:"⨯",Cscr:"𝒞",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cupbrcap:"⩈",cupcap:"⩆",CupCap:"≍",cup:"∪",Cup:"⋓",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dagger:"†",Dagger:"‡",daleth:"ℸ",darr:"↓",Darr:"↡",dArr:"⇓",dash:"‐",Dashv:"⫤",dashv:"⊣",dbkarow:"⤏",dblac:"˝",Dcaron:"Ď",dcaron:"ď",Dcy:"Д",dcy:"д",ddagger:"‡",ddarr:"⇊",DD:"ⅅ",dd:"ⅆ",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",Delta:"Δ",delta:"δ",demptyv:"⦱",dfisht:"⥿",Dfr:"𝔇",dfr:"𝔡",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",diamond:"⋄",Diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",DJcy:"Ђ",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",Dopf:"𝔻",dopf:"𝕕",Dot:"¨",dot:"˙",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrowBar:"⤓",downarrow:"↓",DownArrow:"↓",Downarrow:"⇓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVectorBar:"⥖",DownLeftVector:"↽",DownRightTeeVector:"⥟",DownRightVectorBar:"⥗",DownRightVector:"⇁",DownTeeArrow:"↧",DownTee:"⊤",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",Dscr:"𝒟",dscr:"𝒹",DScy:"Ѕ",dscy:"ѕ",dsol:"⧶",Dstrok:"Đ",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",DZcy:"Џ",dzcy:"џ",dzigrarr:"⟿",Eacute:"É",eacute:"é",easter:"⩮",Ecaron:"Ě",ecaron:"ě",Ecirc:"Ê",ecirc:"ê",ecir:"≖",ecolon:"≕",Ecy:"Э",ecy:"э",eDDot:"⩷",Edot:"Ė",edot:"ė",eDot:"≑",ee:"ⅇ",efDot:"≒",Efr:"𝔈",efr:"𝔢",eg:"⪚",Egrave:"È",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",Emacr:"Ē",emacr:"ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp13:" ",emsp14:" ",emsp:" ",ENG:"Ŋ",eng:"ŋ",ensp:" ",Eogon:"Ę",eogon:"ę",Eopf:"𝔼",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",Epsilon:"Ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",escr:"ℯ",Escr:"ℰ",esdot:"≐",Esim:"⩳",esim:"≂",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",exponentiale:"ⅇ",ExponentialE:"ⅇ",fallingdotseq:"≒",Fcy:"Ф",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",Ffr:"𝔉",ffr:"𝔣",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",Fopf:"𝔽",fopf:"𝕗",forall:"∀",ForAll:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",Fscr:"ℱ",gacute:"ǵ",Gamma:"Γ",gamma:"γ",Gammad:"Ϝ",gammad:"ϝ",gap:"⪆",Gbreve:"Ğ",gbreve:"ğ",Gcedil:"Ģ",Gcirc:"Ĝ",gcirc:"ĝ",Gcy:"Г",gcy:"г",Gdot:"Ġ",gdot:"ġ",ge:"≥",gE:"≧",gEl:"⪌",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",gescc:"⪩",ges:"⩾",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",Gfr:"𝔊",gfr:"𝔤",gg:"≫",Gg:"⋙",ggg:"⋙",gimel:"ℷ",GJcy:"Ѓ",gjcy:"ѓ",gla:"⪥",gl:"≷",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gnE:"≩",gneq:"⪈",gneqq:"≩",gnsim:"⋧",Gopf:"𝔾",gopf:"𝕘",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",gtcc:"⪧",gtcir:"⩺",gt:">",GT:">",Gt:"≫",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",HARDcy:"Ъ",hardcy:"ъ",harrcir:"⥈",harr:"↔",hArr:"⇔",harrw:"↭",Hat:"^",hbar:"ℏ",Hcirc:"Ĥ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",Hstrok:"Ħ",hstrok:"ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",Iacute:"Í",iacute:"í",ic:"⁣",Icirc:"Î",icirc:"î",Icy:"И",icy:"и",Idot:"İ",IEcy:"Е",iecy:"е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",Igrave:"Ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",IJlig:"IJ",ijlig:"ij",Imacr:"Ī",imacr:"ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",Im:"ℑ",imof:"⊷",imped:"Ƶ",Implies:"⇒",incare:"℅",in:"∈",infin:"∞",infintie:"⧝",inodot:"ı",intcal:"⊺",int:"∫",Int:"∬",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",IOcy:"Ё",iocy:"ё",Iogon:"Į",iogon:"į",Iopf:"𝕀",iopf:"𝕚",Iota:"Ι",iota:"ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",Itilde:"Ĩ",itilde:"ĩ",Iukcy:"І",iukcy:"і",Iuml:"Ï",iuml:"ï",Jcirc:"Ĵ",jcirc:"ĵ",Jcy:"Й",jcy:"й",Jfr:"𝔍",jfr:"𝔧",jmath:"ȷ",Jopf:"𝕁",jopf:"𝕛",Jscr:"𝒥",jscr:"𝒿",Jsercy:"Ј",jsercy:"ј",Jukcy:"Є",jukcy:"є",Kappa:"Κ",kappa:"κ",kappav:"ϰ",Kcedil:"Ķ",kcedil:"ķ",Kcy:"К",kcy:"к",Kfr:"𝔎",kfr:"𝔨",kgreen:"ĸ",KHcy:"Х",khcy:"х",KJcy:"Ќ",kjcy:"ќ",Kopf:"𝕂",kopf:"𝕜",Kscr:"𝒦",kscr:"𝓀",lAarr:"⇚",Lacute:"Ĺ",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",Lambda:"Λ",lambda:"λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larrb:"⇤",larrbfs:"⤟",larr:"←",Larr:"↞",lArr:"⇐",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",latail:"⤙",lAtail:"⤛",lat:"⪫",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",Lcaron:"Ľ",lcaron:"ľ",Lcedil:"Ļ",lcedil:"ļ",lceil:"⌈",lcub:"{",Lcy:"Л",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",LeftArrowBar:"⇤",leftarrow:"←",LeftArrow:"←",Leftarrow:"⇐",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVectorBar:"⥙",LeftDownVector:"⇃",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",LeftRightArrow:"↔",Leftrightarrow:"⇔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTeeArrow:"↤",LeftTee:"⊣",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangleBar:"⧏",LeftTriangle:"⊲",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVectorBar:"⥘",LeftUpVector:"↿",LeftVectorBar:"⥒",LeftVector:"↼",lEg:"⪋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",lescc:"⪨",les:"⩽",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",Lfr:"𝔏",lfr:"𝔩",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",LJcy:"Љ",ljcy:"љ",llarr:"⇇",ll:"≪",Ll:"⋘",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",Lmidot:"Ŀ",lmidot:"ŀ",lmoustache:"⎰",lmoust:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",LongLeftArrow:"⟵",Longleftarrow:"⟸",longleftrightarrow:"⟷",LongLeftRightArrow:"⟷",Longleftrightarrow:"⟺",longmapsto:"⟼",longrightarrow:"⟶",LongRightArrow:"⟶",Longrightarrow:"⟹",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",Lopf:"𝕃",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",Lstrok:"Ł",lstrok:"ł",ltcc:"⪦",ltcir:"⩹",lt:"<",LT:"<",Lt:"≪",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",Map:"⤅",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",Mcy:"М",mcy:"м",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",mfr:"𝔪",mho:"℧",micro:"µ",midast:"*",midcir:"⫰",mid:"∣",middot:"·",minusb:"⊟",minus:"−",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",Mopf:"𝕄",mopf:"𝕞",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",Mu:"Μ",mu:"μ",multimap:"⊸",mumap:"⊸",nabla:"∇",Nacute:"Ń",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natural:"♮",naturals:"ℕ",natur:"♮",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",Ncaron:"Ň",ncaron:"ň",Ncedil:"Ņ",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",Ncy:"Н",ncy:"н",ndash:"–",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",ne:"≠",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",Nfr:"𝔑",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",nGt:"≫⃒",ngt:"≯",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",NJcy:"Њ",njcy:"њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nlE:"≦̸",nle:"≰",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nLt:"≪⃒",nlt:"≮",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",Not:"⫬",not:"¬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangleBar:"⧏̸",NotLeftTriangle:"⋪",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangleBar:"⧐̸",NotRightTriangle:"⋫",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",nparallel:"∦",npar:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",nprec:"⊀",npreceq:"⪯̸",npre:"⪯̸",nrarrc:"⤳̸",nrarr:"↛",nrArr:"⇏",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",Nscr:"𝒩",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",Ntilde:"Ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",Nu:"Ν",nu:"ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",Oacute:"Ó",oacute:"ó",oast:"⊛",Ocirc:"Ô",ocirc:"ô",ocir:"⊚",Ocy:"О",ocy:"о",odash:"⊝",Odblac:"Ő",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",OElig:"Œ",oelig:"œ",ofcir:"⦿",Ofr:"𝔒",ofr:"𝔬",ogon:"˛",Ograve:"Ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",Omacr:"Ō",omacr:"ō",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",omid:"⦶",ominus:"⊖",Oopf:"𝕆",oopf:"𝕠",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",orarr:"↻",Or:"⩔",or:"∨",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",Oscr:"𝒪",oscr:"ℴ",Oslash:"Ø",oslash:"ø",osol:"⊘",Otilde:"Õ",otilde:"õ",otimesas:"⨶",Otimes:"⨷",otimes:"⊗",Ouml:"Ö",ouml:"ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",para:"¶",parallel:"∥",par:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",Pcy:"П",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",Pfr:"𝔓",pfr:"𝔭",Phi:"Φ",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",Pi:"Π",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plus:"+",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",prap:"⪷",Pr:"⪻",pr:"≺",prcue:"≼",precapprox:"⪷",prec:"≺",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",pre:"⪯",prE:"⪳",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportional:"∝",Proportion:"∷",propto:"∝",prsim:"≾",prurel:"⊰",Pscr:"𝒫",pscr:"𝓅",Psi:"Ψ",psi:"ψ",puncsp:" ",Qfr:"𝔔",qfr:"𝔮",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",Qscr:"𝒬",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",Racute:"Ŕ",racute:"ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarr:"→",Rarr:"↠",rArr:"⇒",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",Rarrtl:"⤖",rarrtl:"↣",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",Rcaron:"Ř",rcaron:"ř",Rcedil:"Ŗ",rcedil:"ŗ",rceil:"⌉",rcub:"}",Rcy:"Р",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",Re:"ℜ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",Rho:"Ρ",rho:"ρ",rhov:"ϱ",RightAngleBracket:"⟩",RightArrowBar:"⇥",rightarrow:"→",RightArrow:"→",Rightarrow:"⇒",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVectorBar:"⥕",RightDownVector:"⇂",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTeeArrow:"↦",RightTee:"⊢",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangleBar:"⧐",RightTriangle:"⊳",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVectorBar:"⥔",RightUpVector:"↾",RightVectorBar:"⥓",RightVector:"⇀",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoustache:"⎱",rmoust:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",Sacute:"Ś",sacute:"ś",sbquo:"‚",scap:"⪸",Scaron:"Š",scaron:"š",Sc:"⪼",sc:"≻",sccue:"≽",sce:"⪰",scE:"⪴",Scedil:"Ş",scedil:"ş",Scirc:"Ŝ",scirc:"ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",Scy:"С",scy:"с",sdotb:"⊡",sdot:"⋅",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",Sfr:"𝔖",sfr:"𝔰",sfrown:"⌢",sharp:"♯",SHCHcy:"Щ",shchcy:"щ",SHcy:"Ш",shcy:"ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",SOFTcy:"Ь",softcy:"ь",solbar:"⌿",solb:"⧄",sol:"/",Sopf:"𝕊",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squ:"□",squf:"▪",srarr:"→",Sscr:"𝒮",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",Star:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",subE:"⫅",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succapprox:"⪸",succ:"≻",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup1:"¹",sup2:"²",sup3:"³",sup:"⊃",Sup:"⋑",supdot:"⪾",supdsub:"⫘",supE:"⫆",supe:"⊇",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",Tau:"Τ",tau:"τ",tbrk:"⎴",Tcaron:"Ť",tcaron:"ť",Tcedil:"Ţ",tcedil:"ţ",Tcy:"Т",tcy:"т",tdot:"⃛",telrec:"⌕",Tfr:"𝔗",tfr:"𝔱",there4:"∴",therefore:"∴",Therefore:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",ThinSpace:" ",thinsp:" ",thkap:"≈",thksim:"∼",THORN:"Þ",thorn:"þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",timesbar:"⨱",timesb:"⊠",times:"×",timesd:"⨰",tint:"∭",toea:"⤨",topbot:"⌶",topcir:"⫱",top:"⊤",Topf:"𝕋",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",Tscr:"𝒯",tscr:"𝓉",TScy:"Ц",tscy:"ц",TSHcy:"Ћ",tshcy:"ћ",Tstrok:"Ŧ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",Uacute:"Ú",uacute:"ú",uarr:"↑",Uarr:"↟",uArr:"⇑",Uarrocir:"⥉",Ubrcy:"Ў",ubrcy:"ў",Ubreve:"Ŭ",ubreve:"ŭ",Ucirc:"Û",ucirc:"û",Ucy:"У",ucy:"у",udarr:"⇅",Udblac:"Ű",udblac:"ű",udhar:"⥮",ufisht:"⥾",Ufr:"𝔘",ufr:"𝔲",Ugrave:"Ù",ugrave:"ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",Umacr:"Ū",umacr:"ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",uogon:"ų",Uopf:"𝕌",uopf:"𝕦",UpArrowBar:"⤒",uparrow:"↑",UpArrow:"↑",Uparrow:"⇑",UpArrowDownArrow:"⇅",updownarrow:"↕",UpDownArrow:"↕",Updownarrow:"⇕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",UpTeeArrow:"↥",UpTee:"⊥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",Uring:"Ů",uring:"ů",urtri:"◹",Uscr:"𝒰",uscr:"𝓊",utdot:"⋰",Utilde:"Ũ",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",Uuml:"Ü",uuml:"ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",Vcy:"В",vcy:"в",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",veebar:"⊻",vee:"∨",Vee:"⋁",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",Vopf:"𝕍",vopf:"𝕧",vprop:"∝",vrtri:"⊳",Vscr:"𝒱",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",Vvdash:"⊪",vzigzag:"⦚",Wcirc:"Ŵ",wcirc:"ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",Wfr:"𝔚",wfr:"𝔴",Wopf:"𝕎",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",Wscr:"𝒲",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",Xfr:"𝔛",xfr:"𝔵",xharr:"⟷",xhArr:"⟺",Xi:"Ξ",xi:"ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",Xopf:"𝕏",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",Xscr:"𝒳",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",Yacute:"Ý",yacute:"ý",YAcy:"Я",yacy:"я",Ycirc:"Ŷ",ycirc:"ŷ",Ycy:"Ы",ycy:"ы",yen:"¥",Yfr:"𝔜",yfr:"𝔶",YIcy:"Ї",yicy:"ї",Yopf:"𝕐",yopf:"𝕪",Yscr:"𝒴",yscr:"𝓎",YUcy:"Ю",yucy:"ю",yuml:"ÿ",Yuml:"Ÿ",Zacute:"Ź",zacute:"ź",Zcaron:"Ž",zcaron:"ž",Zcy:"З",zcy:"з",Zdot:"Ż",zdot:"ż",zeetrf:"ℨ",ZeroWidthSpace:"​",Zeta:"Ζ",zeta:"ζ",zfr:"𝔷",Zfr:"ℨ",ZHcy:"Ж",zhcy:"ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",Zscr:"𝒵",zscr:"𝓏",zwj:"‍",zwnj:"‌"}},function(e){e.exports={amp:"&",apos:"'",gt:">",lt:"<",quot:'"'}},function(e,t,n){(t=e.exports=n(607)).Stream=t,t.Readable=t,t.Writable=n(415),t.Duplex=n(175),t.Transform=n(610),t.PassThrough=n(1173)},function(e,t,n){"use strict";(function(t,r,o){var i=n(294);function a(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,n){var r=e.entry;e.entry=null;for(;r;){var o=r.callback;t.pendingcb--,o(n),r=r.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}e.exports=v;var s,l=!t.browser&&["v0.10","v0.9."].indexOf(t.version.slice(0,5))>-1?r:i;v.WritableState=g;var u=n(237);u.inherits=n(100);var c={deprecate:n(1172)},f=n(608),d=n(295).Buffer,p=o.Uint8Array||function(){};var m,h=n(609);function _(){}function g(e,t){s=s||n(175),e=e||{},this.objectMode=!!e.objectMode,t instanceof s&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var r=e.highWaterMark,o=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:o,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var u=!1===e.decodeStrings;this.decodeStrings=!u,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,r=n.sync,o=n.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(n),t)!function(e,t,n,r,o){--t.pendingcb,n?(i(o,r),i(D,e,t),e._writableState.errorEmitted=!0,e.emit("error",r)):(o(r),e._writableState.errorEmitted=!0,e.emit("error",r),D(e,t))}(e,n,r,t,o);else{var a=C(n);a||n.corked||n.bufferProcessing||!n.bufferedRequest||E(e,n),r?l(b,e,n,a,o):b(e,n,a,o)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new a(this)}function v(e){if(s=s||n(175),!(m.call(v,this)||this instanceof s))return new v(e);this._writableState=new g(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),f.call(this)}function y(e,t,n,r,o,i,a){t.writelen=r,t.writecb=a,t.writing=!0,t.sync=!0,n?e._writev(o,t.onwrite):e._write(o,i,t.onwrite),t.sync=!1}function b(e,t,n,r){n||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),D(e,t)}function E(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var r=t.bufferedRequestCount,o=new Array(r),i=t.corkedRequestsFree;i.entry=n;for(var s=0,l=!0;n;)o[s]=n,n.isBuf||(l=!1),n=n.next,s+=1;o.allBuffers=l,y(e,t,!0,t.length,o,"",i.finish),t.pendingcb++,t.lastBufferedRequest=null,i.next?(t.corkedRequestsFree=i.next,i.next=null):t.corkedRequestsFree=new a(t)}else{for(;n;){var u=n.chunk,c=n.encoding,f=n.callback;if(y(e,t,!1,t.objectMode?1:u.length,u,c,f),n=n.next,t.writing)break}null===n&&(t.lastBufferedRequest=null)}t.bufferedRequestCount=0,t.bufferedRequest=n,t.bufferProcessing=!1}function C(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function S(e,t){e._final(function(n){t.pendingcb--,n&&e.emit("error",n),t.prefinished=!0,e.emit("prefinish"),D(e,t)})}function D(e,t){var n=C(t);return n&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,i(S,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),n}u.inherits(v,f),g.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(g.prototype,"buffer",{get:c.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(m=Function.prototype[Symbol.hasInstance],Object.defineProperty(v,Symbol.hasInstance,{value:function(e){return!!m.call(this,e)||e&&e._writableState instanceof g}})):m=function(e){return e instanceof this},v.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},v.prototype.write=function(e,t,n){var r=this._writableState,o=!1,a=function(e){return d.isBuffer(e)||e instanceof p}(e)&&!r.objectMode;return a&&!d.isBuffer(e)&&(e=function(e){return d.from(e)}(e)),"function"==typeof t&&(n=t,t=null),a?t="buffer":t||(t=r.defaultEncoding),"function"!=typeof n&&(n=_),r.ended?function(e,t){var n=new Error("write after end");e.emit("error",n),i(t,n)}(this,n):(a||function(e,t,n,r){var o=!0,a=!1;return null===n?a=new TypeError("May not write null values to stream"):"string"==typeof n||void 0===n||t.objectMode||(a=new TypeError("Invalid non-string/buffer chunk")),a&&(e.emit("error",a),i(r,a),o=!1),o}(this,r,e,n))&&(r.pendingcb++,o=function(e,t,n,r,o,i){if(!n){var a=function(e,t,n){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=d.from(t,n));return t}(t,r,o);r!==a&&(n=!0,o="buffer",r=a)}var s=t.objectMode?1:r.length;t.length+=s;var l=t.length<t.highWaterMark;l||(t.needDrain=!0);if(t.writing||t.corked){var u=t.lastBufferedRequest;t.lastBufferedRequest={chunk:r,encoding:o,isBuf:n,callback:i,next:null},u?u.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1}else y(e,t,!1,s,r,o,i);return l}(this,r,a,e,t,n)),o},v.prototype.cork=function(){this._writableState.corked++},v.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.finished||e.bufferProcessing||!e.bufferedRequest||E(this,e))},v.prototype.setDefaultEncoding=function(e){if("string"==typeof e&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},v.prototype._write=function(e,t,n){n(new Error("_write() is not implemented"))},v.prototype._writev=null,v.prototype.end=function(e,t,n){var r=this._writableState;"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!==e&&void 0!==e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||function(e,t,n){t.ending=!0,D(e,t),n&&(t.finished?i(n):e.once("finish",n));t.ended=!0,e.writable=!1}(this,r,n)},Object.defineProperty(v.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),v.prototype.destroy=h.destroy,v.prototype._undestroy=h.undestroy,v.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,n(54),n(187).setImmediate,n(15))},function(e,t,n){"use strict";var r=n(295).Buffer,o=r.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function i(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(r.isEncoding===o||!o(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=l,this.end=u,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=c,this.end=f,t=3;break;default:return this.write=d,void(this.end=p)}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(t)}function a(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:-1}function s(e){var t=this.lastTotal-this.lastNeed,n=function(e,t,n){if(128!=(192&t[0]))return e.lastNeed=0,"�".repeat(n);if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�".repeat(n+1);if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�".repeat(n+2)}}(this,e,t);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function l(e,t){if((e.length-t)%2==0){var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function u(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function c(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function f(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function d(e){return e.toString(this.encoding)}function p(e){return e&&e.length?this.write(e):""}t.StringDecoder=i,i.prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n<e.length?t?t+this.text(e,n):this.text(e,n):t||""},i.prototype.end=function(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"�".repeat(this.lastTotal-this.lastNeed):t},i.prototype.text=function(e,t){var n=function(e,t,n){var r=t.length-1;if(r<n)return 0;var o=a(t[r]);if(o>=0)return o>0&&(e.lastNeed=o-1),o;if(--r<n)return 0;if((o=a(t[r]))>=0)return o>0&&(e.lastNeed=o-2),o;if(--r<n)return 0;if((o=a(t[r]))>=0)return o>0&&(2===o?o=0:e.lastNeed=o-3),o;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var r=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},i.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,n){var r=n(1184),o=n(1185);t.decode=function(e,t){return(!t||t<=0?o.XML:o.HTML)(e)},t.decodeStrict=function(e,t){return(!t||t<=0?o.XML:o.HTMLStrict)(e)},t.encode=function(e,t){return(!t||t<=0?r.XML:r.HTML)(e)},t.encodeXML=r.XML,t.encodeHTML4=t.encodeHTML5=t.encodeHTML=r.HTML,t.decodeXML=t.decodeXMLStrict=o.XML,t.decodeHTML4=t.decodeHTML5=t.decodeHTML=o.HTML,t.decodeHTML4Strict=t.decodeHTML5Strict=t.decodeHTMLStrict=o.HTMLStrict,t.escape=r.escape},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){function t(n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,n));return r.type="decl",r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t}(function(e){return e&&e.__esModule?e:{default:e}}(n(419)).default);t.default=r,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=l(n(611)),i=l(n(619)),a=l(n(421)),s=l(n(620));function l(e){return e&&e.__esModule?e:{default:e}}var u=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.raws={},"object"!==(void 0===t?"undefined":r(t))&&void 0!==t)throw new Error("PostCSS nodes constructor accepts object, not "+JSON.stringify(t));for(var n in t)this[n]=t[n]}return e.prototype.error=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.source){var n=this.positionBy(t);return this.source.input.error(e,n.line,n.column,t)}return new o.default(e)},e.prototype.warn=function(e,t,n){var r={node:this};for(var o in n)r[o]=n[o];return e.warn(t,r)},e.prototype.remove=function(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this},e.prototype.toString=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.default;e.stringify&&(e=e.stringify);var t="";return e(this,function(e){t+=e}),t},e.prototype.clone=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=function e(t,n){var o=new t.constructor;for(var i in t)if(t.hasOwnProperty(i)){var a=t[i],s=void 0===a?"undefined":r(a);"parent"===i&&"object"===s?n&&(o[i]=n):"source"===i?o[i]=a:a instanceof Array?o[i]=a.map(function(t){return e(t,o)}):("object"===s&&null!==a&&(a=e(a)),o[i]=a)}return o}(this);for(var n in e)t[n]=e[n];return t},e.prototype.cloneBefore=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.clone(e);return this.parent.insertBefore(this,t),t},e.prototype.cloneAfter=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.clone(e);return this.parent.insertAfter(this,t),t},e.prototype.replaceWith=function(){if(this.parent){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t,o=Array.isArray(r),i=0;for(r=o?r:r[Symbol.iterator]();;){var a;if(o){if(i>=r.length)break;a=r[i++]}else{if((i=r.next()).done)break;a=i.value}var s=a;this.parent.insertBefore(this,s)}this.remove()}return this},e.prototype.moveTo=function(e){return(0,s.default)("Node#moveTo was deprecated. Use Container#append."),this.cleanRaws(this.root()===e.root()),this.remove(),e.append(this),this},e.prototype.moveBefore=function(e){return(0,s.default)("Node#moveBefore was deprecated. Use Node#before."),this.cleanRaws(this.root()===e.root()),this.remove(),e.parent.insertBefore(e,this),this},e.prototype.moveAfter=function(e){return(0,s.default)("Node#moveAfter was deprecated. Use Node#after."),this.cleanRaws(this.root()===e.root()),this.remove(),e.parent.insertAfter(e,this),this},e.prototype.next=function(){if(this.parent){var e=this.parent.index(this);return this.parent.nodes[e+1]}},e.prototype.prev=function(){if(this.parent){var e=this.parent.index(this);return this.parent.nodes[e-1]}},e.prototype.before=function(e){return this.parent.insertBefore(this,e),this},e.prototype.after=function(e){return this.parent.insertAfter(this,e),this},e.prototype.toJSON=function(){var e={};for(var t in this)if(this.hasOwnProperty(t)&&"parent"!==t){var n=this[t];n instanceof Array?e[t]=n.map(function(e){return"object"===(void 0===e?"undefined":r(e))&&e.toJSON?e.toJSON():e}):"object"===(void 0===n?"undefined":r(n))&&n.toJSON?e[t]=n.toJSON():e[t]=n}return e},e.prototype.raw=function(e,t){return(new i.default).raw(this,e,t)},e.prototype.root=function(){for(var e=this;e.parent;)e=e.parent;return e},e.prototype.cleanRaws=function(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between},e.prototype.positionInside=function(e){for(var t=this.toString(),n=this.source.start.column,r=this.source.start.line,o=0;o<e;o++)"\n"===t[o]?(n=1,r+=1):n+=1;return{line:r,column:n}},e.prototype.positionBy=function(e){var t=this.source.start;if(e.index)t=this.positionInside(e.index);else if(e.word){var n=this.toString().indexOf(e.word);-1!==n&&(t=this.positionInside(n))}return t},e}();t.default=u,e.exports=t.default},function(e,t,n){(function(e){function n(e,t){for(var n=0,r=e.length-1;r>=0;r--){var o=e[r];"."===o?e.splice(r,1):".."===o?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}var r=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,o=function(e){return r.exec(e).slice(1)};function i(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r<e.length;r++)t(e[r],r,e)&&n.push(e[r]);return n}t.resolve=function(){for(var t="",r=!1,o=arguments.length-1;o>=-1&&!r;o--){var a=o>=0?arguments[o]:e.cwd();if("string"!=typeof a)throw new TypeError("Arguments to path.resolve must be strings");a&&(t=a+"/"+t,r="/"===a.charAt(0))}return t=n(i(t.split("/"),function(e){return!!e}),!r).join("/"),(r?"/":"")+t||"."},t.normalize=function(e){var r=t.isAbsolute(e),o="/"===a(e,-1);return(e=n(i(e.split("/"),function(e){return!!e}),!r).join("/"))||r||(e="."),e&&o&&(e+="/"),(r?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(i(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},t.relative=function(e,n){function r(e){for(var t=0;t<e.length&&""===e[t];t++);for(var n=e.length-1;n>=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=t.resolve(e).substr(1),n=t.resolve(n).substr(1);for(var o=r(e.split("/")),i=r(n.split("/")),a=Math.min(o.length,i.length),s=a,l=0;l<a;l++)if(o[l]!==i[l]){s=l;break}var u=[];for(l=s;l<o.length;l++)u.push("..");return(u=u.concat(i.slice(s))).join("/")},t.sep="/",t.delimiter=":",t.dirname=function(e){var t=o(e),n=t[0],r=t[1];return n||r?(r&&(r=r.substr(0,r.length-1)),n+r):"."},t.basename=function(e,t){var n=o(e)[2];return t&&n.substr(-1*t.length)===t&&(n=n.substr(0,n.length-t.length)),n},t.extname=function(e){return o(e)[3]};var a="b"==="ab".substr(-1)?function(e,t,n){return e.substr(t,n)}:function(e,t,n){return t<0&&(t=e.length+t),e.substr(t,n)}}).call(this,n(54))},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){new r.default(t).stringify(e)};var r=function(e){return e&&e.__esModule?e:{default:e}}(n(619));e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(t&&t.safe)throw new Error('Option safe was removed. Use parser: require("postcss-safe-parser")');var n=new o.default(e,t),i=new r.default(n);try{i.parse()}catch(e){throw"CssSyntaxError"===e.name&&t&&t.from&&(/\.scss$/i.test(t.from)?e.message+="\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser":/\.sass/i.test(t.from)?e.message+="\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser":/\.less$/i.test(t.from)&&(e.message+="\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser")),e}return i.root};var r=i(n(1215)),o=i(n(614));function i(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){function t(n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,n));return r.type="comment",r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t}(function(e){return e&&e.__esModule?e:{default:e}}(n(419)).default);t.default=r,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=a(n(418)),i=a(n(423));function a(e){return e&&e.__esModule?e:{default:e}}var s=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.push=function(e){return e.parent=this,this.nodes.push(e),this},t.prototype.each=function(e){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;var t=this.lastEach;if(this.indexes[t]=0,this.nodes){for(var n=void 0,r=void 0;this.indexes[t]<this.nodes.length&&(n=this.indexes[t],!1!==(r=e(this.nodes[n],n)));)this.indexes[t]+=1;return delete this.indexes[t],r}},t.prototype.walk=function(e){return this.each(function(t,n){var r=e(t,n);return!1!==r&&t.walk&&(r=t.walk(e)),r})},t.prototype.walkDecls=function(e,t){return t?e instanceof RegExp?this.walk(function(n,r){if("decl"===n.type&&e.test(n.prop))return t(n,r)}):this.walk(function(n,r){if("decl"===n.type&&n.prop===e)return t(n,r)}):(t=e,this.walk(function(e,n){if("decl"===e.type)return t(e,n)}))},t.prototype.walkRules=function(e,t){return t?e instanceof RegExp?this.walk(function(n,r){if("rule"===n.type&&e.test(n.selector))return t(n,r)}):this.walk(function(n,r){if("rule"===n.type&&n.selector===e)return t(n,r)}):(t=e,this.walk(function(e,n){if("rule"===e.type)return t(e,n)}))},t.prototype.walkAtRules=function(e,t){return t?e instanceof RegExp?this.walk(function(n,r){if("atrule"===n.type&&e.test(n.name))return t(n,r)}):this.walk(function(n,r){if("atrule"===n.type&&n.name===e)return t(n,r)}):(t=e,this.walk(function(e,n){if("atrule"===e.type)return t(e,n)}))},t.prototype.walkComments=function(e){return this.walk(function(t,n){if("comment"===t.type)return e(t,n)})},t.prototype.append=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t,o=Array.isArray(r),i=0;for(r=o?r:r[Symbol.iterator]();;){var a;if(o){if(i>=r.length)break;a=r[i++]}else{if((i=r.next()).done)break;a=i.value}var s=a,l=this.normalize(s,this.last),u=Array.isArray(l),c=0;for(l=u?l:l[Symbol.iterator]();;){var f;if(u){if(c>=l.length)break;f=l[c++]}else{if((c=l.next()).done)break;f=c.value}var d=f;this.nodes.push(d)}}return this},t.prototype.prepend=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t=t.reverse(),o=Array.isArray(r),i=0;for(r=o?r:r[Symbol.iterator]();;){var a;if(o){if(i>=r.length)break;a=r[i++]}else{if((i=r.next()).done)break;a=i.value}var s=a,l=this.normalize(s,this.first,"prepend").reverse(),u=l,c=Array.isArray(u),f=0;for(u=c?u:u[Symbol.iterator]();;){var d;if(c){if(f>=u.length)break;d=u[f++]}else{if((f=u.next()).done)break;d=f.value}var p=d;this.nodes.unshift(p)}for(var m in this.indexes)this.indexes[m]=this.indexes[m]+l.length}return this},t.prototype.cleanRaws=function(t){if(e.prototype.cleanRaws.call(this,t),this.nodes){var n=this.nodes,r=Array.isArray(n),o=0;for(n=r?n:n[Symbol.iterator]();;){var i;if(r){if(o>=n.length)break;i=n[o++]}else{if((o=n.next()).done)break;i=o.value}i.cleanRaws(t)}}},t.prototype.insertBefore=function(e,t){var n=0===(e=this.index(e))&&"prepend",r=this.normalize(t,this.nodes[e],n).reverse(),o=r,i=Array.isArray(o),a=0;for(o=i?o:o[Symbol.iterator]();;){var s;if(i){if(a>=o.length)break;s=o[a++]}else{if((a=o.next()).done)break;s=a.value}var l=s;this.nodes.splice(e,0,l)}var u=void 0;for(var c in this.indexes)e<=(u=this.indexes[c])&&(this.indexes[c]=u+r.length);return this},t.prototype.insertAfter=function(e,t){e=this.index(e);var n=this.normalize(t,this.nodes[e]).reverse(),r=n,o=Array.isArray(r),i=0;for(r=o?r:r[Symbol.iterator]();;){var a;if(o){if(i>=r.length)break;a=r[i++]}else{if((i=r.next()).done)break;a=i.value}var s=a;this.nodes.splice(e+1,0,s)}var l=void 0;for(var u in this.indexes)e<(l=this.indexes[u])&&(this.indexes[u]=l+n.length);return this},t.prototype.removeChild=function(e){e=this.index(e),this.nodes[e].parent=void 0,this.nodes.splice(e,1);var t=void 0;for(var n in this.indexes)(t=this.indexes[n])>=e&&(this.indexes[n]=t-1);return this},t.prototype.removeAll=function(){var e=this.nodes,t=Array.isArray(e),n=0;for(e=t?e:e[Symbol.iterator]();;){var r;if(t){if(n>=e.length)break;r=e[n++]}else{if((n=e.next()).done)break;r=n.value}r.parent=void 0}return this.nodes=[],this},t.prototype.replaceValues=function(e,t,n){return n||(n=t,t={}),this.walkDecls(function(r){t.props&&-1===t.props.indexOf(r.prop)||t.fast&&-1===r.value.indexOf(t.fast)||(r.value=r.value.replace(e,n))}),this},t.prototype.every=function(e){return this.nodes.every(e)},t.prototype.some=function(e){return this.nodes.some(e)},t.prototype.index=function(e){return"number"==typeof e?e:this.nodes.indexOf(e)},t.prototype.normalize=function(e,t){var r=this;if("string"==typeof e)e=function e(t){return t.map(function(t){return t.nodes&&(t.nodes=e(t.nodes)),delete t.source,t})}(n(422)(e).nodes);else if(Array.isArray(e)){var a=e=e.slice(0),s=Array.isArray(a),l=0;for(a=s?a:a[Symbol.iterator]();;){var u;if(s){if(l>=a.length)break;u=a[l++]}else{if((l=a.next()).done)break;u=l.value}var c=u;c.parent&&c.parent.removeChild(c,"ignore")}}else if("root"===e.type){var f=e=e.nodes.slice(0),d=Array.isArray(f),p=0;for(f=d?f:f[Symbol.iterator]();;){var m;if(d){if(p>=f.length)break;m=f[p++]}else{if((p=f.next()).done)break;m=p.value}var h=m;h.parent&&h.parent.removeChild(h,"ignore")}}else if(e.type)e=[e];else if(e.prop){if(void 0===e.value)throw new Error("Value field is missed in node creation");"string"!=typeof e.value&&(e.value=String(e.value)),e=[new o.default(e)]}else if(e.selector){e=[new(n(297))(e)]}else if(e.name){e=[new(n(296))(e)]}else{if(!e.text)throw new Error("Unknown node type in node creation");e=[new i.default(e)]}return e.map(function(e){return"function"!=typeof e.before&&(e=r.rebuild(e)),e.parent&&e.parent.removeChild(e),void 0===e.raws.before&&t&&void 0!==t.raws.before&&(e.raws.before=t.raws.before.replace(/[^\s]/g,"")),e.parent=r,e})},t.prototype.rebuild=function(e,t){var r=this,a=void 0;if("root"===e.type){var s=n(425);a=new s}else if("atrule"===e.type){var l=n(296);a=new l}else if("rule"===e.type){var u=n(297);a=new u}else"decl"===e.type?a=new o.default:"comment"===e.type&&(a=new i.default);for(var c in e)"nodes"===c?a.nodes=e.nodes.map(function(e){return r.rebuild(e,a)}):"parent"===c&&t?a.parent=t:e.hasOwnProperty(c)&&(a[c]=e[c]);return a},r(t,[{key:"first",get:function(){if(this.nodes)return this.nodes[0]}},{key:"last",get:function(){if(this.nodes)return this.nodes[this.nodes.length-1]}}]),t}(a(n(419)).default);t.default=s,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){function t(n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,n));return r.type="root",r.nodes||(r.nodes=[]),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.removeChild=function(t,n){var r=this.index(t);return!n&&0===r&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[r].raws.before),e.prototype.removeChild.call(this,t)},t.prototype.normalize=function(t,n,r){var o=e.prototype.normalize.call(this,t);if(n)if("prepend"===r)this.nodes.length>1?n.raws.before=this.nodes[1].raws.before:delete n.raws.before;else if(this.first!==n){var i=o,a=Array.isArray(i),s=0;for(i=a?i:i[Symbol.iterator]();;){var l;if(a){if(s>=i.length)break;l=i[s++]}else{if((s=i.next()).done)break;l=s.value}l.raws.before=n.raws.before}}return o},t.prototype.toResult=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new(n(622))(new(n(621)),this,e).stringify()},t}(function(e){return e&&e.__esModule?e:{default:e}}(n(424)).default);t.default=r,e.exports=t.default},function(e,t,n){var r=n(1233);r.registerLanguage("1c",n(1234)),r.registerLanguage("abnf",n(1235)),r.registerLanguage("accesslog",n(1236)),r.registerLanguage("actionscript",n(1237)),r.registerLanguage("ada",n(1238)),r.registerLanguage("angelscript",n(1239)),r.registerLanguage("apache",n(1240)),r.registerLanguage("applescript",n(1241)),r.registerLanguage("arcade",n(1242)),r.registerLanguage("cpp",n(1243)),r.registerLanguage("arduino",n(1244)),r.registerLanguage("armasm",n(1245)),r.registerLanguage("xml",n(1246)),r.registerLanguage("asciidoc",n(1247)),r.registerLanguage("aspectj",n(1248)),r.registerLanguage("autohotkey",n(1249)),r.registerLanguage("autoit",n(1250)),r.registerLanguage("avrasm",n(1251)),r.registerLanguage("awk",n(1252)),r.registerLanguage("axapta",n(1253)),r.registerLanguage("bash",n(1254)),r.registerLanguage("basic",n(1255)),r.registerLanguage("bnf",n(1256)),r.registerLanguage("brainfuck",n(1257)),r.registerLanguage("cal",n(1258)),r.registerLanguage("capnproto",n(1259)),r.registerLanguage("ceylon",n(1260)),r.registerLanguage("clean",n(1261)),r.registerLanguage("clojure",n(1262)),r.registerLanguage("clojure-repl",n(1263)),r.registerLanguage("cmake",n(1264)),r.registerLanguage("coffeescript",n(1265)),r.registerLanguage("coq",n(1266)),r.registerLanguage("cos",n(1267)),r.registerLanguage("crmsh",n(1268)),r.registerLanguage("crystal",n(1269)),r.registerLanguage("cs",n(1270)),r.registerLanguage("csp",n(1271)),r.registerLanguage("css",n(1272)),r.registerLanguage("d",n(1273)),r.registerLanguage("markdown",n(1274)),r.registerLanguage("dart",n(1275)),r.registerLanguage("delphi",n(1276)),r.registerLanguage("diff",n(1277)),r.registerLanguage("django",n(1278)),r.registerLanguage("dns",n(1279)),r.registerLanguage("dockerfile",n(1280)),r.registerLanguage("dos",n(1281)),r.registerLanguage("dsconfig",n(1282)),r.registerLanguage("dts",n(1283)),r.registerLanguage("dust",n(1284)),r.registerLanguage("ebnf",n(1285)),r.registerLanguage("elixir",n(1286)),r.registerLanguage("elm",n(1287)),r.registerLanguage("ruby",n(1288)),r.registerLanguage("erb",n(1289)),r.registerLanguage("erlang-repl",n(1290)),r.registerLanguage("erlang",n(1291)),r.registerLanguage("excel",n(1292)),r.registerLanguage("fix",n(1293)),r.registerLanguage("flix",n(1294)),r.registerLanguage("fortran",n(1295)),r.registerLanguage("fsharp",n(1296)),r.registerLanguage("gams",n(1297)),r.registerLanguage("gauss",n(1298)),r.registerLanguage("gcode",n(1299)),r.registerLanguage("gherkin",n(1300)),r.registerLanguage("glsl",n(1301)),r.registerLanguage("gml",n(1302)),r.registerLanguage("go",n(1303)),r.registerLanguage("golo",n(1304)),r.registerLanguage("gradle",n(1305)),r.registerLanguage("groovy",n(1306)),r.registerLanguage("haml",n(1307)),r.registerLanguage("handlebars",n(1308)),r.registerLanguage("haskell",n(1309)),r.registerLanguage("haxe",n(1310)),r.registerLanguage("hsp",n(1311)),r.registerLanguage("htmlbars",n(1312)),r.registerLanguage("http",n(1313)),r.registerLanguage("hy",n(1314)),r.registerLanguage("inform7",n(1315)),r.registerLanguage("ini",n(1316)),r.registerLanguage("irpf90",n(1317)),r.registerLanguage("isbl",n(1318)),r.registerLanguage("java",n(1319)),r.registerLanguage("javascript",n(1320)),r.registerLanguage("jboss-cli",n(1321)),r.registerLanguage("json",n(1322)),r.registerLanguage("julia",n(1323)),r.registerLanguage("julia-repl",n(1324)),r.registerLanguage("kotlin",n(1325)),r.registerLanguage("lasso",n(1326)),r.registerLanguage("ldif",n(1327)),r.registerLanguage("leaf",n(1328)),r.registerLanguage("less",n(1329)),r.registerLanguage("lisp",n(1330)),r.registerLanguage("livecodeserver",n(1331)),r.registerLanguage("livescript",n(1332)),r.registerLanguage("llvm",n(1333)),r.registerLanguage("lsl",n(1334)),r.registerLanguage("lua",n(1335)),r.registerLanguage("makefile",n(1336)),r.registerLanguage("mathematica",n(1337)),r.registerLanguage("matlab",n(1338)),r.registerLanguage("maxima",n(1339)),r.registerLanguage("mel",n(1340)),r.registerLanguage("mercury",n(1341)),r.registerLanguage("mipsasm",n(1342)),r.registerLanguage("mizar",n(1343)),r.registerLanguage("perl",n(1344)),r.registerLanguage("mojolicious",n(1345)),r.registerLanguage("monkey",n(1346)),r.registerLanguage("moonscript",n(1347)),r.registerLanguage("n1ql",n(1348)),r.registerLanguage("nginx",n(1349)),r.registerLanguage("nimrod",n(1350)),r.registerLanguage("nix",n(1351)),r.registerLanguage("nsis",n(1352)),r.registerLanguage("objectivec",n(1353)),r.registerLanguage("ocaml",n(1354)),r.registerLanguage("openscad",n(1355)),r.registerLanguage("oxygene",n(1356)),r.registerLanguage("parser3",n(1357)),r.registerLanguage("pf",n(1358)),r.registerLanguage("pgsql",n(1359)),r.registerLanguage("php",n(1360)),r.registerLanguage("plaintext",n(1361)),r.registerLanguage("pony",n(1362)),r.registerLanguage("powershell",n(1363)),r.registerLanguage("processing",n(1364)),r.registerLanguage("profile",n(1365)),r.registerLanguage("prolog",n(1366)),r.registerLanguage("properties",n(1367)),r.registerLanguage("protobuf",n(1368)),r.registerLanguage("puppet",n(1369)),r.registerLanguage("purebasic",n(1370)),r.registerLanguage("python",n(1371)),r.registerLanguage("q",n(1372)),r.registerLanguage("qml",n(1373)),r.registerLanguage("r",n(1374)),r.registerLanguage("reasonml",n(1375)),r.registerLanguage("rib",n(1376)),r.registerLanguage("roboconf",n(1377)),r.registerLanguage("routeros",n(1378)),r.registerLanguage("rsl",n(1379)),r.registerLanguage("ruleslanguage",n(1380)),r.registerLanguage("rust",n(1381)),r.registerLanguage("sas",n(1382)),r.registerLanguage("scala",n(1383)),r.registerLanguage("scheme",n(1384)),r.registerLanguage("scilab",n(1385)),r.registerLanguage("scss",n(1386)),r.registerLanguage("shell",n(1387)),r.registerLanguage("smali",n(1388)),r.registerLanguage("smalltalk",n(1389)),r.registerLanguage("sml",n(1390)),r.registerLanguage("sqf",n(1391)),r.registerLanguage("sql",n(1392)),r.registerLanguage("stan",n(1393)),r.registerLanguage("stata",n(1394)),r.registerLanguage("step21",n(1395)),r.registerLanguage("stylus",n(1396)),r.registerLanguage("subunit",n(1397)),r.registerLanguage("swift",n(1398)),r.registerLanguage("taggerscript",n(1399)),r.registerLanguage("yaml",n(1400)),r.registerLanguage("tap",n(1401)),r.registerLanguage("tcl",n(1402)),r.registerLanguage("tex",n(1403)),r.registerLanguage("thrift",n(1404)),r.registerLanguage("tp",n(1405)),r.registerLanguage("twig",n(1406)),r.registerLanguage("typescript",n(1407)),r.registerLanguage("vala",n(1408)),r.registerLanguage("vbnet",n(1409)),r.registerLanguage("vbscript",n(1410)),r.registerLanguage("vbscript-html",n(1411)),r.registerLanguage("verilog",n(1412)),r.registerLanguage("vhdl",n(1413)),r.registerLanguage("vim",n(1414)),r.registerLanguage("x86asm",n(1415)),r.registerLanguage("xl",n(1416)),r.registerLanguage("xquery",n(1417)),r.registerLanguage("zephir",n(1418)),e.exports=r},function(e,t,n){"use strict";var r=f(n(8)),o=f(n(16)),i=f(n(3)),a=n(2),s=f(n(10)),l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(146)),u=f(n(9)),c=n(196);function f(e){return e&&e.__esModule?e:{default:e}}e.exports=function(e){e=e||{};var t=i.default.getComponent("dialogs.ErrorDialog"),n=i.default.getComponent("elements.Spinner"),f=r.default.get();if(f.isGuest())return s.default.dispatch({action:"require_registration"}),u.default.resolve(null);var d=e.dmUserId?"trusted_private_chat":"private_chat",p=e.createOpts||{};if(p.preset=p.preset||d,p.visibility=p.visibility||"private",e.dmUserId&&void 0===p.invite)switch((0,c.getAddressType)(e.dmUserId)){case"mx-user-id":p.invite=[e.dmUserId];break;case"email":p.invite_3pid=[{id_server:r.default.get().getIdentityServerUrl(!0),medium:"email",address:e.dmUserId}]}e.dmUserId&&void 0===p.is_direct&&(p.is_direct=!0),void 0===e.andView&&(e.andView=!0),p.initial_state=p.initial_state||[{content:{guest_access:"can_join"},type:"m.room.guest_access",state_key:""}];var m=o.default.createDialog(n,null,"mx_Dialog_spinner"),h=void 0;return f.createRoom(p).finally(function(){m.close()}).then(function(t){return h=t.room_id,e.dmUserId?l.setDMRoom(h,e.dmUserId):u.default.resolve()}).then(function(){return e.andView&&s.default.dispatch({action:"view_room",room_id:h,should_peek:!1,joining:!0}),h},function(e){return s.default.dispatch({action:"join_room_error"}),console.error("Failed to create room "+h+" "+e),o.default.createTrackedDialog("Failure to create room","",t,{title:(0,a._t)("Failure to create room"),description:(0,a._t)("Server may be unavailable, overloaded, or you hit a bug.")}),null})}},function(e,t,n){var r=n(1419);e.exports=function(e){return e&&e.length?r(e):[]}},function(e,t,n){var r=n(1420),o=n(1436),i=n(1438),a=n(1439),s=n(1440);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=o,l.prototype.get=i,l.prototype.has=a,l.prototype.set=s,e.exports=l},function(e,t,n){var r=n(177)(n(101),"Map");e.exports=r},function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return function(n){return n<=t&&n>=e}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(n(639)),o=n(244);t.default=function(e){var t=e.target,n=e.destination,i=e.viewport,a=n.viewport.frameScroll.diff.displacement,s=(0,o.offset)(t,a);if(!n.viewport.clipped)return!1;var l=(0,r.default)(n.viewport.clipped)(s),u=(0,r.default)(i)(s);return l&&u}},function(e,t,n){"use strict";function r(e,t){return e===t}function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r,n=null,o=null;return function(){return function(e,t,n){if(null===t||null===n||t.length!==n.length)return!1;for(var r=t.length,o=0;o<r;o++)if(!e(t[o],n[o]))return!1;return!0}(t,n,arguments)||(o=e.apply(null,arguments)),n=arguments,o}}function i(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return function(){for(var t=arguments.length,r=Array(t),i=0;i<t;i++)r[i]=arguments[i];var a=0,s=r.pop(),l=function(e){var t=Array.isArray(e[0])?e[0]:e;if(!t.every(function(e){return"function"==typeof e})){var n=t.map(function(e){return typeof e}).join(", ");throw new Error("Selector creators expect all input-selectors to be functions, instead received the following types: ["+n+"]")}return t}(r),u=e.apply(void 0,[function(){return a++,s.apply(null,arguments)}].concat(n)),c=o(function(){for(var e=[],t=l.length,n=0;n<t;n++)e.push(l[n].apply(null,arguments));return u.apply(null,e)});return c.resultFunc=s,c.recomputations=function(){return a},c.resetRecomputations=function(){return a=0},c}}t.__esModule=!0,t.defaultMemoize=o,t.createSelectorCreator=i,t.createStructuredSelector=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:a;if("object"!=typeof e)throw new Error("createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);var n=Object.keys(e);return t(n.map(function(t){return e[t]}),function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.reduce(function(e,t,r){return e[n[r]]=t,e},{})})};var a=t.createSelector=i(o)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){return{x:window.pageXOffset,y:window.pageYOffset}}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=0);return t},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t,n,o,i,a,s){var l=n+(-i*(t-o)+-a*n)*e,u=t+l*e;if(Math.abs(l)<s&&Math.abs(u-o)<s)return r[0]=o,r[1]=0,r;return r[0]=u,r[1]=l,r};var r=[0,0];e.exports=t.default},function(e,t,n){(function(t){(function(){var n,r,o;"undefined"!=typeof performance&&null!==performance&&performance.now?e.exports=function(){return performance.now()}:void 0!==t&&null!==t&&t.hrtime?(e.exports=function(){return(n()-o)/1e6},r=t.hrtime,o=(n=function(){var e;return 1e9*(e=r())[0]+e[1]})()):Date.now?(e.exports=function(){return Date.now()-o},o=Date.now()):(e.exports=function(){return(new Date).getTime()-o},o=(new Date).getTime())}).call(this)}).call(this,n(54))},function(e,t,n){(function(t){for(var r=n(1500),o="undefined"==typeof window?t:window,i=["moz","webkit"],a="AnimationFrame",s=o["request"+a],l=o["cancel"+a]||o["cancelRequest"+a],u=0;!s&&u<i.length;u++)s=o[i[u]+"Request"+a],l=o[i[u]+"Cancel"+a]||o[i[u]+"CancelRequest"+a];if(!s||!l){var c=0,f=0,d=[];s=function(e){if(0===d.length){var t=r(),n=Math.max(0,1e3/60-(t-c));c=n+t,setTimeout(function(){var e=d.slice(0);d.length=0;for(var t=0;t<e.length;t++)if(!e[t].cancelled)try{e[t].callback(c)}catch(e){setTimeout(function(){throw e},0)}},Math.round(n))}return d.push({handle:++f,callback:e,cancelled:!1}),f},l=function(e){for(var t=0;t<d.length;t++)d[t].handle===e&&(d[t].cancelled=!0)}}e.exports=function(e){return s.call(o,e)},e.exports.cancel=function(){l.apply(o,arguments)},e.exports.polyfill=function(e){e||(e=o),e.requestAnimationFrame=s,e.cancelAnimationFrame=l}}).call(this,n(15))},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t,n){for(var r in t)if(Object.prototype.hasOwnProperty.call(t,r)){if(0!==n[r])return!1;var o="number"==typeof t[r]?t[r]:t[r].val;if(e[r]!==o)return!1}return!0},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(82)),o=i(n(643));function i(e){return e&&e.__esModule?e:{default:e}}t.default=function(e,t){var n=function(e){t()&&e()},i=(0,r.default)(function(t,n){var r={x:t,y:n};e.onMove(r)});return{move:(0,o.default)(function(e){n(function(){return i(e.x,e.y)})}),moveForward:(0,o.default)(function(){n(e.onMoveForward)}),moveBackward:(0,o.default)(function(){n(e.onMoveBackward)}),crossAxisMoveForward:(0,o.default)(function(){n(e.onCrossAxisMoveForward)}),crossAxisMoveBackward:(0,o.default)(function(){n(e.onCrossAxisMoveBackward)}),windowScrollMove:(0,o.default)(function(){n(e.onWindowScroll)})}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return e?e.ownerDocument.defaultView:window}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.tab=9,t.enter=13,t.escape=27,t.space=32,t.arrowLeft=37,t.arrowUp=38,t.arrowRight=39,t.arrowDown=40},function(e,t,n){"use strict";var r=f(n(40)),o=f(n(11)),i=f(n(4)),a=f(n(5)),s=f(n(12)),l=f(n(13)),u=f(n(10)),c=n(246);function f(e){return e&&e.__esModule?e:{default:e}}var d={cachedPassword:localStorage.getItem("mx_pass")},p=function(e){function t(){(0,i.default)(this,t);var e=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this,u.default));return e._state=d,e}return(0,l.default)(t,e),(0,a.default)(t,[{key:"_update",value:function(){this._state.cachedPassword?localStorage.setItem("mx_pass",this._state.cachedPassword):localStorage.removeItem("mx_pass",this._state.cachedPassword),this.__emitChange()}},{key:"_setState",value:function(e){this._state=(0,r.default)(this._state,e),this._update()}},{key:"__onDispatch",value:function(e){switch(e.action){case"cached_password":this._setState({cachedPassword:e.cachedPassword});break;case"password_changed":case"on_logged_out":this._setState({cachedPassword:null})}}},{key:"getCachedPassword",value:function(){return this._state.cachedPassword}}]),t}(c.Store),m=null;m||(m=new p),e.exports=m},function(e,t,n){"use strict";(function(r){Object.defineProperty(t,"__esModule",{value:!0});var o=_(n(654)),i=_(n(14)),a=_(n(40)),s=_(n(11)),l=_(n(4)),u=_(n(5)),c=_(n(12)),f=_(n(13)),d=n(246),p=_(n(10)),m=_(n(130)),h=_(n(309));function _(e){return e&&e.__esModule?e:{default:e}}var g=function(e){function t(){(0,l.default)(this,t);var e=(0,c.default)(this,(t.__proto__||(0,s.default)(t)).call(this,p.default));return e._init(),e._getManualComparator=e._getManualComparator.bind(e),e._recentsComparator=e._recentsComparator.bind(e),e}return(0,f.default)(t,e),(0,u.default)(t,[{key:"_init",value:function(){this._state={lists:{"m.server_notice":[],"im.vector.fake.invite":[],"m.favourite":[],"im.vector.fake.recent":[],"im.vector.fake.direct":[],"m.lowpriority":[],"im.vector.fake.archived":[]},ready:!1}}},{key:"_setState",value:function(e){this._state=(0,a.default)(this._state,e),this.__emitChange()}},{key:"__onDispatch",value:function(e){switch(e.action){case"MatrixActions.sync":if("PREPARED"===e.prevState||"PREPARED"!==e.state)break;this._matrixClient=e.matrixClient,this._generateRoomLists();break;case"MatrixActions.Room.tags":if(!this._state.ready)break;this._generateRoomLists();break;case"MatrixActions.Room.timeline":if(!(this._state.ready&&e.isLiveEvent&&e.isLiveUnfilteredRoomTimelineEvent&&this._eventTriggersRecentReorder(e.event)))break;this._generateRoomLists();break;case"MatrixActions.Event.decrypted":if(!this._matrixClient||!this._state.ready)break;var t=e.event.getRoomId();if(!t)break;var n=this._matrixClient.getRoom(t);if(!n)break;if(n.getLiveTimeline()!==n.getTimelineForEvent(e.event.getId())||!this._eventTriggersRecentReorder(e.event))break;this._generateRoomLists();break;case"MatrixActions.accountData":if("m.direct"!==e.event_type)break;this._generateRoomLists();break;case"MatrixActions.Room.myMembership":this._generateRoomLists();break;case"MatrixActions.Room":if(!this._state.ready||!this._matrixClient.credentials.userId)break;this._generateRoomLists();break;case"RoomListActions.tagRoom.pending":this._generateRoomLists(e.request);break;case"RoomListActions.tagRoom.failure":this._generateRoomLists();break;case"on_logged_out":this._init(),this._matrixClient=null}}},{key:"_generateRoomLists",value:function(e){var n=this,r={"m.server_notice":[],"im.vector.fake.invite":[],"m.favourite":[],"im.vector.fake.recent":[],"im.vector.fake.direct":[],"m.lowpriority":[],"im.vector.fake.archived":[]},o=m.default.shared();this._matrixClient&&(this._matrixClient.getRooms().forEach(function(t,a){var s=n._matrixClient.getUserId(),l=t.getMyMembership(),u=t.getMember(s);if("invite"==l)r["im.vector.fake.invite"].push(t);else if("join"==l||"ban"===l||u&&u.isKicked()){var c=(0,i.default)(t.tags);if(e&&e.room===t&&(c=c.filter(function(t){return t!==e.oldTag}),e.newTag&&!c.includes(e.newTag)&&c.push(e.newTag)),(c=c.filter(function(e){return!e.startsWith("m.")||void 0!==r[e]})).length)for(var f=0;f<c.length;f++){var d=c[f];r[d]=r[d]||[],r[d].push(t)}else o.getUserIdForRoomId(t.roomId)?r["im.vector.fake.direct"].push(t):r["im.vector.fake.recent"].push(t)}else"leave"===l&&r["im.vector.fake.archived"].push(t)}),(0,i.default)(r).forEach(function(o){var i=void 0;switch(t._listOrders[o]){case"recent":i=n._recentsComparator;break;case"manual":default:i=n._getManualComparator(o,e)}r[o].sort(i)}),this._setState({lists:r,ready:!0}))}},{key:"_eventTriggersRecentReorder",value:function(e){return e.getTs()&&(h.default.eventTriggersUnreadCount(e)||e.getSender()===this._matrixClient.credentials.userId)}},{key:"_tsOfNewestEvent",value:function(e){for(var t=e.timeline.length-1;t>=0;--t){var n=e.timeline[t];if(this._eventTriggersRecentReorder(n))return n.getTs()}return e.timeline.length&&e.timeline[0].getTs()?e.timeline[0].getTs():o.default}},{key:"_recentsComparator",value:function(e,t){return this._tsOfNewestEvent(t)-this._tsOfNewestEvent(e)}},{key:"_lexicographicalComparator",value:function(e,t){return e.name>t.name?1:-1}},{key:"_getManualComparator",value:function(e,t){var n=this;return function(r,o){var i=r.tags[e],a=o.tags[e];t&&r===t.room&&(i=t.metaData),t&&o===t.room&&(a=t.metaData);var s=i?i.order:void 0,l=a?a.order:void 0;return void 0===s&&void 0!==l?1:void 0!==s&&void 0===l?-1:s==l?n._lexicographicalComparator(r,o):s>l?1:-1}}},{key:"getRoomLists",value:function(){return this._state.lists}}]),t}(d.Store);g._listOrders={"m.favourite":"manual","im.vector.fake.invite":"recent","im.vector.fake.recent":"recent","im.vector.fake.direct":"recent","m.lowpriority":"recent","im.vector.fake.archived":"recent"},void 0===r.singletonRoomListStore&&(r.singletonRoomListStore=new g),t.default=r.singletonRoomListStore,e.exports=t.default}).call(this,n(15))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=function(t){return r.default.getValue(t,e.getRoomId())};if(t("hideRedactions")&&e.isRedacted())return!0;var n=function(e){var t={isMemberEvent:"m.room.member"===e.getType()};if(!t.isMemberEvent)return t;var n=e.getContent(),r=e.getPrevContent(),o=n.membership!==r.membership;t.isJoin=o&&"join"===n.membership,t.isPart=o&&"leave"===n.membership&&e.getStateKey()===e.getSender();var i=!o&&"join"===n.membership;return t.isDisplaynameChange=i&&n.displayname!==r.displayname,t.isAvatarChange=i&&n.avatar_url!==r.avatar_url,t}(e);if(n.isMemberEvent){if(t("hideJoinLeaves")&&(n.isJoin||n.isPart))return!0;if(t("hideAvatarChanges")&&n.isAvatarChange)return!0;if(t("hideDisplaynameChanges")&&n.isDisplaynameChange)return!0}return!1};var r=function(e){return e&&e.__esModule?e:{default:e}}(n(22));e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.asyncAction=function(e,t,n){return function(r){r({action:e+".pending",request:"function"==typeof n?n():void 0}),t().then(function(t){r({action:e+".success",result:t})}).catch(function(t){r({action:e+".failure",err:t})})}}},function(e,t,n){"use strict";(function(r){Object.defineProperty(t,"__esModule",{value:!0});var o=h(n(138)),i=h(n(51)),a=h(n(40)),s=h(n(11)),l=h(n(4)),u=h(n(5)),c=h(n(12)),f=h(n(13)),d=n(246),p=h(n(10)),m=h(n(90));function h(e){return e&&e.__esModule?e:{default:e}}var _={orderedTags:null,orderedTagsAccountData:null,hasSynced:!1,joinedGroupIds:null,selectedTags:[],anchorTag:null},g=function(e){function t(){(0,l.default)(this,t);var e=(0,c.default)(this,(t.__proto__||(0,s.default)(t)).call(this,p.default));return e._state=(0,a.default)({},_),e}return(0,f.default)(t,e),(0,u.default)(t,[{key:"_setState",value:function(e){this._state=(0,a.default)(this._state,e),this.__emitChange()}},{key:"__onDispatch",value:function(e){switch(e.action){case"MatrixActions.sync":if("PREPARED"===e.prevState||"PREPARED"!==e.state)break;var t=e.matrixClient.getAccountData("im.vector.web.tag_ordering"),n=t?t.getContent():{};this._setState({orderedTagsAccountData:n.tags||null,removedTagsAccountData:n.removedTags||null,hasSynced:!0}),this._updateOrderedTags();break;case"MatrixActions.accountData":if("im.vector.web.tag_ordering"!==e.event_type)break;if(e.event_content._storeId===this.getStoreId())break;this._setState({orderedTagsAccountData:e.event_content?e.event_content.tags:null,removedTagsAccountData:e.event_content?e.event_content.removedTags:null}),this._updateOrderedTags();break;case"GroupActions.fetchJoinedGroups.success":this._setState({joinedGroupIds:e.result.groups.sort(),hasFetchedJoinedGroups:!0}),this._updateOrderedTags();break;case"TagOrderActions.moveTag.pending":this._setState({orderedTags:e.request.tags,removedTagsAccountData:e.request.removedTags});break;case"TagOrderActions.removeTag.pending":this._setState({removedTagsAccountData:e.request.removedTags}),this._updateOrderedTags();break;case"select_tag":var r=[];if(e.shiftKey){var s=this._state.orderedTags.indexOf(this._state.anchorTag),l=this._state.orderedTags.indexOf(e.tag);if(-1===s&&(s=l),s>l){var u=s;s=l,l=u}r=e.ctrlOrCmdKey?this._state.selectedTags:[],r=[].concat((0,i.default)(new o.default(this._state.orderedTags.slice(s,l+1).concat(r))))}else r=e.ctrlOrCmdKey?this._state.selectedTags.includes(e.tag)?this._state.selectedTags.filter(function(t){return t!==e.tag}):[].concat((0,i.default)(this._state.selectedTags),[e.tag]):[e.tag],this._state.selectedTags.includes(e.tag)||this._setState({anchorTag:e.tag});this._setState({selectedTags:r}),m.default.trackEvent("FilterStore","select_tag");break;case"deselect_tags":this._setState({selectedTags:[]}),m.default.trackEvent("FilterStore","deselect_tags");break;case"on_logged_out":this._state=(0,a.default)({},_)}}},{key:"_updateOrderedTags",value:function(){this._setState({orderedTags:this._state.hasSynced&&this._state.hasFetchedJoinedGroups?this._mergeGroupsAndTags():null})}},{key:"_mergeGroupsAndTags",value:function(){var e=this._state.joinedGroupIds||[],t=this._state.orderedTagsAccountData||[],n=new o.default(this._state.removedTagsAccountData||[]),r=t.filter(function(t){return("+"!==t[0]||e.includes(t))&&!n.has(t)}),i=e.filter(function(e){return!t.includes(e)&&!n.has(e)});return r.concat(i)}},{key:"getOrderedTags",value:function(){return this._state.orderedTags}},{key:"getRemovedTagsAccountData",value:function(){return this._state.removedTagsAccountData}},{key:"getStoreId",value:function(){return this._id||(this._id=Math.random().toString(16).slice(2,10)),this._id}},{key:"getSelectedTags",value:function(){return this._state.selectedTags}}]),t}(d.Store);void 0===r.singletonTagOrderStore&&(r.singletonTagOrderStore=new g),t.default=r.singletonTagOrderStore,e.exports=t.default}).call(this,n(15))},function(e,t,n){"use strict";t.__esModule=!0,t.tokenize=t.test=t.scanner=t.parser=t.options=t.inherits=t.find=void 0;var r=n(310),o=s(n(1542)),i=s(n(1543)),a=s(n(1544));function s(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)});var l=function(e){return a.run(i.run(e))};t.find=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=l(e),r=[],o=0;o<n.length;o++){var i=n[o];!i.isLink||t&&i.type!==t||r.push(i.toObject())}return r},t.inherits=r.inherits,t.options=o,t.parser=a,t.scanner=i,t.test=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=l(e);return 1===n.length&&n[0].isLink&&(!t||n[0].type===t)},t.tokenize=l},function(e,t,n){"use strict";t.__esModule=!0,t.AMPERSAND=t.CLOSEPAREN=t.CLOSEANGLEBRACKET=t.CLOSEBRACKET=t.CLOSEBRACE=t.OPENPAREN=t.OPENANGLEBRACKET=t.OPENBRACKET=t.OPENBRACE=t.WS=t.TLD=t.SYM=t.UNDERSCORE=t.SLASH=t.MAILTO=t.PROTOCOL=t.QUERY=t.POUND=t.PLUS=t.NUM=t.NL=t.LOCALHOST=t.PUNCTUATION=t.DOT=t.COLON=t.AT=t.DOMAIN=t.Base=void 0;var r=n(662),o=n(310),i=(0,r.createTokenClass)();function a(e){var t=e?{v:e}:{};return(0,o.inherits)(i,(0,r.createTokenClass)(),t)}i.prototype={toString:function(){return this.v+""}};var s=a(),l=a("@"),u=a(":"),c=a("."),f=a(),d=a(),p=a("\n"),m=a(),h=a("+"),_=a("#"),g=a(),v=a("mailto:"),y=a("?"),b=a("/"),E=a("_"),C=a(),S=a(),D=a(),w=a("{"),T=a("["),x=a("<"),R=a("("),k=a("}"),N=a("]"),I=a(">"),O=a(")"),A=a("&");t.Base=i,t.DOMAIN=s,t.AT=l,t.COLON=u,t.DOT=c,t.PUNCTUATION=f,t.LOCALHOST=d,t.NL=p,t.NUM=m,t.PLUS=h,t.POUND=_,t.QUERY=y,t.PROTOCOL=g,t.MAILTO=v,t.SLASH=b,t.UNDERSCORE=E,t.SYM=C,t.TLD=S,t.WS=D,t.OPENBRACE=w,t.OPENBRACKET=T,t.OPENANGLEBRACKET=x,t.OPENPAREN=R,t.CLOSEBRACE=k,t.CLOSEBRACKET=N,t.CLOSEANGLEBRACKET=I,t.CLOSEPAREN=O,t.AMPERSAND=A},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MUTE=t.MENTIONS_ONLY=t.ALL_MESSAGES=t.ALL_MESSAGES_LOUD=void 0;var r=s(n(20));t.getRoomNotifsState=function(e){if(o.default.get().isGuest())return u;if(d(e))return f;var t=null;try{t=o.default.get().getRoomPushRule("global",e)}catch(e){return null}return t&&t.enabled?m(t)?c:i.default.actionListToActionsObject(t.actions).tweaks.sound?l:null:u},t.setRoomNotifsState=function(e,t){return t===f?function(e){var t=o.default.get(),n=[],r=t.getRoomPushRule("global",e);r&&n.push(t.deletePushRule("global","room",r.rule_id));return n.push(t.addPushRule("global","override",e,{conditions:[{kind:"event_match",key:"room_id",pattern:e}],actions:["dont_notify"]})),a.default.all(n)}(e):function(e,t){var n=o.default.get(),r=[],i=d(e);i&&r.push(n.deletePushRule("global","override",i.rule_id));if("all_messages"===t){var s=n.getRoomPushRule("global",e);s&&r.push(n.deletePushRule("global","room",s.rule_id))}else"mentions_only"===t?(r.push(n.addPushRule("global","room",e,{actions:["dont_notify"]})),r.push(n.setPushRuleEnabled("global","room",e,!0))):(r.push(n.addPushRule("global","room",e,{actions:["notify",{set_tweak:"sound",value:"default"}]})),r.push(n.setPushRuleEnabled("global","room",e,!0)));return a.default.all(r)}(e,t)};var o=s(n(8)),i=s(n(287)),a=s(n(9));function s(e){return e&&e.__esModule?e:{default:e}}var l=t.ALL_MESSAGES_LOUD="all_messages_loud",u=t.ALL_MESSAGES="all_messages",c=t.MENTIONS_ONLY="mentions_only",f=t.MUTE="mute";function d(e){if(!o.default.get().pushRules||!o.default.get().pushRules.global||!o.default.get().pushRules.global.override)return null;var t=!0,n=!1,i=void 0;try{for(var a,s=(0,r.default)(o.default.get().pushRules.global.override);!(t=(a=s.next()).done);t=!0){var l=a.value;if(p(e,l)&&m(l)&&l.enabled)return l}}catch(e){n=!0,i=e}finally{try{!t&&s.return&&s.return()}finally{if(n)throw i}}return null}function p(e,t){if(1!==t.conditions.length)return!1;var n=t.conditions[0];return"event_match"===n.kind&&"room_id"===n.key&&n.pattern===e}function m(e){return 1===e.actions.length&&"dont_notify"===e.actions[0]}},function(e,t,n){"use strict";(function(t){ -/** - * filesize - * - * @copyright 2017 Jason Mulligan <jason.mulligan@avoidwork.com> - * @license BSD-3-Clause - * @version 3.5.6 - */ -!function(t){var n=/^(b|B)$/,r={iec:{bits:["b","Kib","Mib","Gib","Tib","Pib","Eib","Zib","Yib"],bytes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},jedec:{bits:["b","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"],bytes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}},o={iec:["","kibi","mebi","gibi","tebi","pebi","exbi","zebi","yobi"],jedec:["","kilo","mega","giga","tera","peta","exa","zetta","yotta"]};function i(e){var t,i,a,s,l,u,c,f,d,p,m,h,_=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},g=[],v=0,y=void 0,b=void 0;if(isNaN(e))throw new Error("Invalid arguments");return i=!0===_.bits,d=!0===_.unix,t=_.base||2,f=void 0!==_.round?_.round:d?1:2,p=void 0!==_.spacer?_.spacer:d?"":" ",h=_.symbols||_.suffixes||{},m=2===t&&_.standard||"jedec",c=_.output||"string",s=!0===_.fullform,l=_.fullforms instanceof Array?_.fullforms:[],y=void 0!==_.exponent?_.exponent:-1,u=(b=Number(e))<0,a=t>2?1e3:1024,u&&(b=-b),(-1===y||isNaN(y))&&(y=Math.floor(Math.log(b)/Math.log(a)))<0&&(y=0),y>8&&(y=8),0===b?(g[0]=0,g[1]=d?"":r[m][i?"bits":"bytes"][y]):(v=b/(2===t?Math.pow(2,10*y):Math.pow(1e3,y)),i&&(v*=8)>=a&&y<8&&(v/=a,y++),g[0]=Number(v.toFixed(y>0?f:0)),g[1]=10===t&&1===y?i?"kb":"kB":r[m][i?"bits":"bytes"][y],d&&(g[1]="jedec"===m?g[1].charAt(0):y>0?g[1].replace(/B$/,""):g[1],n.test(g[1])&&(g[0]=Math.floor(g[0]),g[1]=""))),u&&(g[0]=-g[0]),g[1]=h[g[1]]||g[1],"array"===c?g:"exponent"===c?y:"object"===c?{value:g[0],suffix:g[1],symbol:g[1]}:(s&&(g[1]=l[y]?l[y]:o[m][y]+(i?"bit":"byte")+(1===g[0]?"":"s")),g.join(p))}i.partial=function(e){return function(t){return i(t,e)}},e.exports=i}("undefined"!=typeof window&&window)}).call(this,n(15))},function(e,t,n){"use strict";var r=/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i;e.exports={looksValid:function(e){return r.test(e)}}},function(e,t,n){"use strict";var r=s(n(4)),o=s(n(5)),i=s(n(8)),a=n(2);function s(e){return e&&e.__esModule?e:{default:e}}var l=function(){function e(){(0,r.default)(this,e),this.clientSecret=i.default.get().generateClientSecret()}return(0,o.default)(e,[{key:"addEmailAddress",value:function(e,t){var n=this;return this.bind=t,i.default.get().requestAdd3pidEmailToken(e,this.clientSecret,1).then(function(e){return n.sessionId=e.sid,e},function(e){throw"M_THREEPID_IN_USE"===e.errcode?e.message=(0,a._t)("This email address is already in use"):e.httpStatus&&(e.message=e.message+" (Status "+e.httpStatus+")"),e})}},{key:"addMsisdn",value:function(e,t,n){var r=this;return this.bind=n,i.default.get().requestAdd3pidMsisdnToken(e,t,this.clientSecret,1).then(function(e){return r.sessionId=e.sid,e},function(e){throw"M_THREEPID_IN_USE"===e.errcode?e.message=(0,a._t)("This phone number is already in use"):e.httpStatus&&(e.message=e.message+" (Status "+e.httpStatus+")"),e})}},{key:"checkEmailLinkClicked",value:function(){var e=i.default.get().idBaseUrl.split("://")[1];return i.default.get().addThreePid({sid:this.sessionId,client_secret:this.clientSecret,id_server:e},this.bind).catch(function(e){throw 401===e.httpStatus?e.message=(0,a._t)("Failed to verify email address: make sure you clicked the link in the email"):e.httpStatus&&(e.message+=" (Status "+e.httpStatus+")"),e})}},{key:"haveMsisdnToken",value:function(e){var t=this;return i.default.get().submitMsisdnToken(this.sessionId,this.clientSecret,e).then(function(e){if(e.errcode)throw e;var n=i.default.get().idBaseUrl.split("://")[1];return i.default.get().addThreePid({sid:t.sessionId,client_secret:t.clientSecret,id_server:n},t.bind)})}}]),e}();e.exports=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=f(n(11)),o=f(n(4)),i=f(n(5)),a=f(n(12)),s=f(n(13)),l=f(n(0)),u=f(n(1)),c=n(426);function f(e){return e&&e.__esModule?e:{default:e}}var d=function(e){function t(e,n){(0,o.default)(this,t);var i=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this,e,n));return i._ref=i._ref.bind(i),i}return(0,s.default)(t,e),(0,i.default)(t,[{key:"componentDidUpdate",value:function(){this._el&&(0,c.highlightBlock)(this._el)}},{key:"_ref",value:function(e){this._el=e,this.componentDidUpdate()}},{key:"render",value:function(){var e=this.props,t=e.className,n=e.children;return l.default.createElement("pre",{className:t+" mx_SyntaxHighlight",ref:this._ref},l.default.createElement("code",null,n))}}]),t}(l.default.Component);d.propTypes={className:u.default.string,children:u.default.node},t.default=d,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(0)),o=s(n(1)),i=s(n(3)),a=n(2);function s(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"QuestionDialog",propTypes:{title:o.default.string,description:o.default.node,extraButtons:o.default.node,button:o.default.string,danger:o.default.bool,focus:o.default.bool,onFinished:o.default.func.isRequired},getDefaultProps:function(){return{title:"",description:"",extraButtons:null,focus:!0,hasCancelButton:!0,danger:!1}},onOk:function(){this.props.onFinished(!0)},onCancel:function(){this.props.onFinished(!1)},render:function(){var e=i.default.getComponent("views.dialogs.BaseDialog"),t=i.default.getComponent("views.elements.DialogButtons"),n="";return this.props.danger&&(n="danger"),r.default.createElement(e,{className:"mx_QuestionDialog",onFinished:this.props.onFinished,title:this.props.title,contentId:"mx_Dialog_content",hasCancel:this.props.hasCancelButton},r.default.createElement("div",{className:"mx_Dialog_content",id:"mx_Dialog_content"},this.props.description),r.default.createElement(t,{primaryButton:this.props.button||(0,a._t)("OK"),primaryButtonClass:n,cancelButton:this.props.cancelButton,hasCancel:this.props.hasCancelButton,onPrimaryButtonClick:this.onOk,focus:this.props.focus,onCancel:this.onCancel},this.props.extraButtons))}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=x(n(40)),o=x(n(11)),i=x(n(4)),a=x(n(5)),s=x(n(12)),l=x(n(13)),u=x(n(89)),c=x(n(401)),f=x(n(0)),d=x(n(1)),p=x(n(8)),m=x(n(71)),h=x(n(173)),_=x(n(1623)),g=x(n(675)),v=x(n(16)),y=n(2),b=x(n(3)),E=x(n(674)),C=x(n(676)),S=x(n(677)),D=x(n(142)),w=x(n(10)),T=x(n(247));function x(e){return e&&e.__esModule?e:{default:e}}var R=["https:","http:"],k=function(e){function t(e){(0,i.default)(this,t);var n=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this,e));return n._persistKey="widget_"+n.props.id,n.state=n._getNewState(e),n._onAction=n._onAction.bind(n),n._onMessage=n._onMessage.bind(n),n._onLoaded=n._onLoaded.bind(n),n._onEditClick=n._onEditClick.bind(n),n._onDeleteClick=n._onDeleteClick.bind(n),n._onSnapshotClick=n._onSnapshotClick.bind(n),n.onClickMenuBar=n.onClickMenuBar.bind(n),n._onMinimiseClick=n._onMinimiseClick.bind(n),n._grantWidgetPermission=n._grantWidgetPermission.bind(n),n._revokeWidgetPermission=n._revokeWidgetPermission.bind(n),n._onPopoutWidgetClick=n._onPopoutWidgetClick.bind(n),n._onReloadWidgetClick=n._onReloadWidgetClick.bind(n),n}return(0,l.default)(t,e),(0,a.default)(t,[{key:"_getNewState",value:function(e){var t=[e.room.roomId,encodeURIComponent(e.url)].join("_"),n=localStorage.getItem(t),r=b.default.getComponent("elements.PersistedElement");return{initialising:!0,loading:this.props.waitForIframeLoad&&!r.isMounted(this._persistKey),widgetUrl:this._addWurlParams(e.url),widgetPermissionId:t,hasPermissionToLoad:"true"===n||e.userId===e.creatorUserId,error:null,deleting:!1,widgetPageTitle:e.widgetPageTitle}}},{key:"_hasCapability",value:function(e){return T.default.widgetHasCapability(this.props.id,e)}},{key:"_addWurlParams",value:function(e){var t=u.default.parse(e);if(!t)return console.error("_addWurlParams","Invalid URL",e),u.default;var n=c.default.parse(t.query);return n.widgetId=this.props.id,n.parentUrl=window.location.href.split("#",2)[0],t.search=void 0,t.query=n,t.format()}},{key:"isMixedContent",value:function(){var e=window.location.protocol,t=u.default.parse(this.props.url).protocol;return"https:"===e&&"https:"!==t&&(console.warn("Refusing to load mixed-content app:",e,t,window.location,this.props.url),!0)}},{key:"componentWillMount",value:function(){this.setScalarToken()}},{key:"componentDidMount",value:function(){window.addEventListener("message",this._onMessage,!1),this.dispatcherRef=w.default.register(this._onAction)}},{key:"componentWillUnmount",value:function(){(w.default.unregister(this.dispatcherRef),window.removeEventListener("message",this._onMessage),T.default.getWidgetPersistence(this.props.id))||(T.default.destroyPersistentWidget(),b.default.getComponent("elements.PersistedElement").destroyElement(this._persistKey))}},{key:"setScalarToken",value:function(){var e=this;if(this.setState({initialising:!0}),!D.default.isScalarUrl(this.props.url))return console.warn("Non-scalar widget, not setting scalar token!",u.default),void this.setState({error:null,widgetUrl:this._addWurlParams(this.props.url),initialising:!1});this._scalarClient||(this._scalarClient=new h.default),this._scalarClient.getScalarToken().done(function(t){e._scalarClient.scalarToken=t;var n=u.default.parse(e._addWurlParams(e.props.url)),r=c.default.parse(n.query);r.scalar_token||(r.scalar_token=encodeURIComponent(t),n.search=void 0,n.query=r),e.setState({error:null,widgetUrl:n.format(),initialising:!1}),!e.state.widgetPageTitle&&r.url&&e._fetchWidgetTitle(r.url)},function(t){console.error("Failed to get scalar_token",t),e.setState({error:t.message,initialising:!1})})}},{key:"componentWillReceiveProps",value:function(e){e.url!==this.props.url?(this._getNewState(e),this.setScalarToken()):e.show&&!this.props.show&&this.props.waitForIframeLoad?this.setState({loading:!0}):e.widgetPageTitle!==this.props.widgetPageTitle&&this.setState({widgetPageTitle:e.widgetPageTitle})}},{key:"_onMessage",value:function(e){if("jitsi"===this.props.type){e.origin||(e.origin=e.originalEvent.origin);var t=u.default.parse(this.state.widgetUrl),n=u.default.parse(e.origin);if(n.protocol===t.protocol&&n.host===t.host&&"jitsi_iframe_loaded"===e.data.widgetAction){var r=this.refs.appFrame.contentWindow.document.querySelector('iframe[id^="jitsiConferenceFrame"]');m.default.get().setupScreenSharingForIframe(r)}}}},{key:"_canUserModify",value:function(){return!(!this.props.userWidget||p.default.get().credentials.userId!==this.props.creatorUserId)||D.default.canUserModifyWidgets(this.props.room.roomId)}},{key:"_onEditClick",value:function(e){if(console.log("Edit widget ID ",this.props.id),this.props.onEditClick)this.props.onEditClick();else{var t=b.default.getComponent("views.settings.IntegrationsManager"),n=this._scalarClient.getScalarInterfaceUrlForRoom(this.props.room,"type_"+this.props.type,this.props.id);v.default.createTrackedDialog("Integrations Manager","",t,{src:n},"mx_IntegrationsManager")}}},{key:"_onSnapshotClick",value:function(e){console.warn("Requesting widget snapshot"),T.default.getWidgetMessaging(this.props.id).getScreenshot().catch(function(e){console.error("Failed to get screenshot",e)}).then(function(e){w.default.dispatch({action:"picture_snapshot",file:e},!0)})}},{key:"_onDeleteClick",value:function(){var e=this;if(this.props.onDeleteClick)this.props.onDeleteClick();else if(this._canUserModify()){var t=b.default.getComponent("dialogs.QuestionDialog");v.default.createTrackedDialog("Delete Widget","",t,{title:(0,y._t)("Delete Widget"),description:(0,y._t)("Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?"),button:(0,y._t)("Delete widget"),onFinished:function(t){t&&(e.setState({deleting:!0}),D.default.setRoomWidget(e.props.room.roomId,e.props.id).catch(function(e){console.error("Failed to delete widget",e);var t=b.default.getComponent("dialogs.ErrorDialog");v.default.createTrackedDialog("Failed to remove widget","",t,{title:(0,y._t)("Failed to remove widget"),description:(0,y._t)("An error ocurred whilst trying to remove the widget from the room")})}).finally(function(){e.setState({deleting:!1})}))}})}else console.log("Revoke widget permissions - %s",this.props.id),this._revokeWidgetPermission()}},{key:"_onLoaded",value:function(){T.default.getWidgetMessaging(this.props.id)||this._setupWidgetMessaging(),T.default.setRoomId(this.props.id,this.props.room.roomId),this.setState({loading:!1})}},{key:"_setupWidgetMessaging",value:function(){var e=this,t=new _.default(this.props.id,this.props.url,this.refs.appFrame.contentWindow);T.default.setWidgetMessaging(this.props.id,t),t.getCapabilities().then(function(t){console.log("Widget "+e.props.id+" requested capabilities: "+t),t=t||[];var n=[];e.props.whitelistCapabilities&&e.props.whitelistCapabilities.length>0&&(n=t.filter(function(e){return this.indexOf(e)>=0},e.props.whitelistCapabilities)).length>0&&console.warn("Widget "+e.props.id+" allowing requested, whitelisted properties: "+n),T.default.setWidgetCapabilities(e.props.id,n),e.props.onCapabilityRequest&&e.props.onCapabilityRequest(t)}).catch(function(t){console.log("Failed to get capabilities for widget type "+e.props.type,e.props.id,t)})}},{key:"_onAction",value:function(e){if(e.widgetId===this.props.id)switch(e.action){case"m.sticker":this._hasCapability("m.sticker")?w.default.dispatch({action:"post_sticker_message",data:e.data}):console.warn("Ignoring sticker message. Invalid capability")}}},{key:"_fetchWidgetTitle",value:function(e){var t=this;this._scalarClient.getScalarPageTitle(e).then(function(e){e&&t.setState({widgetPageTitle:e})},function(e){console.error("Failed to get page title",e)})}},{key:"_deleteWidgetLabel",value:function(){return this._canUserModify()?(0,y._td)("Delete widget"):(0,y._td)("Revoke widget access")}},{key:"_grantWidgetPermission",value:function(){console.warn("Granting permission to load widget - ",this.state.widgetUrl),localStorage.setItem(this.state.widgetPermissionId,!0),this.setState({hasPermissionToLoad:!0})}},{key:"_revokeWidgetPermission",value:function(){console.warn("Revoking permission to load widget - ",this.state.widgetUrl),localStorage.removeItem(this.state.widgetPermissionId),this.setState({hasPermissionToLoad:!1}),T.default.destroyPersistentWidget(),b.default.getComponent("elements.PersistedElement").destroyElement(this._persistKey)}},{key:"formatAppTileName",value:function(){var e="No name";return this.props.name&&this.props.name.trim()&&(e=this.props.name.trim()),e}},{key:"onClickMenuBar",value:function(e){e.preventDefault(),e.target===this.refs.menu_bar&&w.default.dispatch({action:"appsDrawer",show:!this.props.show})}},{key:"_getSafeUrl",value:function(){var e=u.default.parse(this.state.widgetUrl,!0);var t="";return-1!==R.indexOf(e.protocol)&&(t=u.default.format(e)),t}},{key:"_getTileTitle",value:function(){var e=this.formatAppTileName(),t=f.default.createElement("span",null," - "),n="";return this.state.widgetPageTitle&&this.state.widgetPageTitle!=this.formatAppTileName()&&(n=this.state.widgetPageTitle),f.default.createElement("span",null,f.default.createElement("b",null,e),f.default.createElement("span",null,n?t:"",n))}},{key:"_onMinimiseClick",value:function(e){this.props.onMinimiseClick&&this.props.onMinimiseClick()}},{key:"_onPopoutWidgetClick",value:function(e){(0,r.default)(document.createElement("a"),{target:"_blank",href:this._getSafeUrl(),rel:"noopener noreferrer"}).click()}},{key:"_onReloadWidgetClick",value:function(e){this.refs.appFrame.src=this.refs.appFrame.src}},{key:"render",value:function(){var e=void 0;if(this.state.deleting)return f.default.createElement("div",null);var t="mx_AppTileBody"+(this.props.miniMode?"_mini ":" ");if(this.props.show){var n=f.default.createElement("div",{className:"mx_AppLoading_spinner_fadeIn"},f.default.createElement(S.default,{msg:"Loading..."}));if(this.state.initialising)e=f.default.createElement("div",{className:t+(this.state.loading?"mx_AppLoading":"")},n);else if(1==this.state.hasPermissionToLoad){if(this.isMixedContent())e=f.default.createElement("div",{className:t},f.default.createElement(C.default,{errorMsg:"Error - Mixed content"}));else if(e=f.default.createElement("div",{className:t+(this.state.loading?"mx_AppLoading":"")},this.state.loading&&n,f.default.createElement("iframe",{is:!0,allow:"microphone; camera; encrypted-media;",ref:"appFrame",src:this._getSafeUrl(),allowFullScreen:"true",sandbox:"allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-presentation",onLoad:this._onLoaded})),this.props.whitelistCapabilities.includes("m.always_on_screen")){var r=b.default.getComponent("elements.PersistedElement");e=f.default.createElement("div",{className:"mx_AppTile_persistedWrapper"},f.default.createElement(r,{persistKey:this._persistKey},e))}}else{var o=p.default.get().isRoomEncrypted(this.props.room.roomId);e=f.default.createElement("div",{className:t},f.default.createElement(E.default,{isRoomEncrypted:o,url:this.state.widgetUrl,onPermissionGranted:this._grantWidgetPermission}))}}var i=Boolean(this._scalarClient&&this._canUserModify()),a=this._deleteWidgetLabel(),s="img/cancel_green.svg",l="mx_AppTileMenuBarWidget";this._canUserModify()&&(s="img/icon-delete-pink.svg",l+=" mx_AppTileMenuBarWidgetDelete");var u=this._hasCapability("m.capability.screenshot")&&this.props.show,c=this.props.show?"img/minimize.svg":"img/maximize.svg",d=void 0;return d=this.props.miniMode?"mx_AppTile_mini":this.props.fullWidth?"mx_AppTileFullWidth":"mx_AppTile",f.default.createElement("div",{className:d,id:this.props.id},this.props.showMenubar&&f.default.createElement("div",{ref:"menu_bar",className:"mx_AppTileMenuBar",onClick:this.onClickMenuBar},f.default.createElement("span",{className:"mx_AppTileMenuBarTitle",style:{pointerEvents:!!this.props.handleMinimisePointerEvents&&"all"}},this.props.showMinimise&&f.default.createElement(g.default,{src:c,className:"mx_AppTileMenuBarWidget mx_AppTileMenuBarWidgetPadding",title:(0,y._t)("Minimize apps"),width:"10",height:"10",onClick:this._onMinimiseClick}),this.props.showTitle&&this._getTileTitle()),f.default.createElement("span",{className:"mx_AppTileMenuBarWidgets"},this.props.showReload&&f.default.createElement(g.default,{src:"img/button-refresh.svg",className:"mx_AppTileMenuBarWidget mx_AppTileMenuBarWidgetPadding",title:(0,y._t)("Reload widget"),onClick:this._onReloadWidgetClick,width:"10",height:"10"}),this.props.showPopout&&f.default.createElement(g.default,{src:"img/button-new-window.svg",className:"mx_AppTileMenuBarWidget mx_AppTileMenuBarWidgetPadding",title:(0,y._t)("Popout widget"),onClick:this._onPopoutWidgetClick,width:"10",height:"10"}),u&&f.default.createElement(g.default,{src:"img/camera_green.svg",className:"mx_AppTileMenuBarWidget mx_AppTileMenuBarWidgetPadding",title:(0,y._t)("Picture"),onClick:this._onSnapshotClick,width:"10",height:"10"}),i&&f.default.createElement(g.default,{src:"img/edit_green.svg",className:"mx_AppTileMenuBarWidget "+(this.props.showDelete?"mx_AppTileMenuBarWidgetPadding":""),title:(0,y._t)("Edit"),onClick:this._onEditClick,width:"10",height:"10"}),this.props.showDelete&&f.default.createElement(g.default,{src:s,className:l,title:(0,y._t)(a),onClick:this._onDeleteClick,width:"10",height:"10"}))),e)}}]),t}(f.default.Component);t.default=k,k.displayName="AppTile",k.propTypes={id:d.default.string.isRequired,url:d.default.string.isRequired,name:d.default.string.isRequired,room:d.default.object.isRequired,type:d.default.string.isRequired,fullWidth:d.default.bool,miniMode:d.default.bool,userId:d.default.string.isRequired,creatorUserId:d.default.string,waitForIframeLoad:d.default.bool,showMenubar:d.default.bool,show:d.default.bool,onEditClick:d.default.func,onDeleteClick:d.default.func,onMinimiseClick:d.default.func,showTitle:d.default.bool,showMinimise:d.default.bool,handleMinimisePointerEvents:d.default.bool,showDelete:d.default.bool,showPopout:d.default.bool,showReload:d.default.bool,whitelistCapabilities:d.default.array,onCapabilityRequest:d.default.func,userWidget:d.default.bool},k.defaultProps={url:"",waitForIframeLoad:!0,showMenubar:!0,showTitle:!0,showMinimise:!0,showDelete:!0,showPopout:!0,showReload:!1,handleMinimisePointerEvents:!1,whitelistCapabilities:[],userWidget:!1,miniMode:!1},e.exports=t.default},function(e,t,n){"use strict";var r=d(n(588)),o=d(n(31)),i=d(n(39)),a=d(n(8)),s=n(17),l=d(n(10)),u=d(n(142)),c=d(n(104)),f=n(2);function d(e){return e&&e.__esModule?e:{default:e}}function p(e,t){var n=JSON.parse((0,o.default)(e.data));n.response=t,e.source.postMessage(n,e.origin)}function m(e,t,n){console.error("Action:"+e.data.action+" failed with message: "+t);var r=JSON.parse((0,o.default)(e.data));r.response={error:{message:t}},n&&(r.response.error._error=n),e.source.postMessage(r,e.origin)}function h(e,t){var n=e.data.widget_id,r=e.data.type,o=e.data.url,i=e.data.name,a=e.data.data,s=e.data.userWidget;if(n&&void 0!==o){if(null!==o){if(void 0!==i&&"string"!=typeof i)return void m(e,(0,f._t)("Unable to create widget."),new Error("Optional field 'name' must be a string."));if(void 0!==a&&!(a instanceof Object))return void m(e,(0,f._t)("Unable to create widget."),new Error("Optional field 'data' must be an Object."));if("string"!=typeof r)return void m(e,(0,f._t)("Unable to create widget."),new Error("Field 'type' must be a string."));if("string"!=typeof o)return void m(e,(0,f._t)("Unable to create widget."),new Error("Field 'url' must be a string or null."))}s?u.default.setUserWidget(n,r,o,i,a).then(function(){p(e,{success:!0}),l.default.dispatch({action:"user_widget_updated"})}).catch(function(t){m(e,(0,f._t)("Unable to create widget."),t)}):(t||m(e,(0,f._t)("Missing roomId."),null),u.default.setRoomWidget(t,n,r,o,i,a).then(function(){p(e,{success:!0})},function(t){m(e,(0,f._t)("Failed to send request."),t)}))}else m(e,(0,f._t)("Unable to create widget."),new Error("Missing required widget fields."))}function _(e,t){var n=a.default.get();if(n){var r=[];if(t){var o=n.getRoom(t);if(!o)return void m(e,(0,f._t)("This room is not recognised."));r=u.default.getRoomWidgets(o).map(function(e){return e.event})}var i=u.default.getUserWidgetsArray();p(e,r=r.concat(i))}else m(e,(0,f._t)("You need to be logged in."))}function g(e,t,n,r){var o=a.default.get();if(o){var i=o.getRoom(t);if(i){var s=i.currentState.getStateEvents(n,r);p(e,s?s.getContent():null)}else m(e,(0,f._t)("This room is not recognised."))}else m(e,(0,f._t)("You need to be logged in."))}var v=function(e){e.origin||(e.origin=e.originalEvent.origin);var t=i.default.get().integrations_ui_url;if(0!==e.origin.length&&t.startsWith(e.origin+"/")&&e.data.action&&!e.data.api){if("close_scalar"===e.data.action)return l.default.dispatch({action:"close_scalar"}),void p(e,null);var n=e.data.room_id,o=e.data.user_id;if(!n)return"get_widgets"===e.data.action?void _(e,null):"set_widget"===e.data.action?void h(e,null):void m(e,(0,f._t)("Missing room_id in request"));if(n===c.default.getRoomId())if("get_widgets"!==e.data.action)if("set_widget"!==e.data.action)if("join_rules_state"!==e.data.action)if("set_plumbing_state"!==e.data.action)if("get_membership_count"!==e.data.action)if("get_room_enc_state"!==e.data.action)if("can_send_event"!==e.data.action)if(o)switch(e.data.action){case"membership_state":!function(e,t,n){console.log("membership_state of "+n+" in room "+t+" requested."),g(e,t,"m.room.member",n)}(e,n,o);break;case"invite":!function(e,t,n){console.log("Received request to invite "+n+" into room "+t);var r=a.default.get();if(r){var o=r.getRoom(t);if(o){var i=o.getMember(n);if(i&&"invite"===i.membership)return void p(e,{success:!0})}r.invite(t,n).done(function(){p(e,{success:!0})},function(t){m(e,(0,f._t)("You need to be able to invite users to do that."),t)})}else m(e,(0,f._t)("You need to be logged in."))}(e,n,o);break;case"bot_options":!function(e,t,n){console.log("bot_options of "+n+" in room "+t+" requested."),g(e,t,"m.room.bot.options","_"+n)}(e,n,o);break;case"set_bot_options":!function(e,t,n){console.log("Received request to set options for bot "+n+" in room "+t);var r=a.default.get();r?r.sendStateEvent(t,"m.room.bot.options",e.data.content,"_"+n).done(function(){p(e,{success:!0})},function(t){m(e,t.message?t.message:(0,f._t)("Failed to send request."),t)}):m(e,(0,f._t)("You need to be logged in."))}(e,n,o);break;case"set_bot_power":!function(e,t,n,o){if((0,r.default)(o)&&o>=0){console.log("Received request to set power level to "+o+" for bot "+n+" in room "+t+".");var i=a.default.get();i?i.getStateEvent(t,"m.room.power_levels","").then(function(r){var a=new s.MatrixEvent({type:"m.room.power_levels",content:r});i.setPowerLevel(t,n,o,a).done(function(){p(e,{success:!0})},function(t){m(e,t.message?t.message:(0,f._t)("Failed to send request."),t)})}):m(e,(0,f._t)("You need to be logged in."))}else m(e,(0,f._t)("Power level must be positive integer."))}(e,n,o,e.data.level);break;default:console.warn("Unhandled postMessage event with action '"+e.data.action+"'")}else m(e,(0,f._t)("Missing user_id in request"));else!function(e,t){var n=""+e.data.event_type,r=Boolean(e.data.is_state),o=a.default.get();if(o){var i=o.getRoom(t);if(i)if("join"===i.getMyMembership()){var s=o.credentials.userId;(r?i.currentState.maySendStateEvent(n,s):i.currentState.maySendEvent(n,s))?p(e,!0):m(e,(0,f._t)("You do not have permission to do that in this room."))}else m(e,(0,f._t)("You are not in this room."));else m(e,(0,f._t)("This room is not recognised."))}else m(e,(0,f._t)("You need to be logged in."))}(e,n);else!function(e,t){var n=a.default.get();n?n.getRoom(t)?p(e,a.default.get().isRoomEncrypted(t)):m(e,(0,f._t)("This room is not recognised.")):m(e,(0,f._t)("You need to be logged in."))}(e,n);else!function(e,t){var n=a.default.get();if(n){var r=n.getRoom(t);r?p(e,r.getJoinedMemberCount()):m(e,(0,f._t)("This room is not recognised."))}else m(e,(0,f._t)("You need to be logged in."))}(e,n);else!function(e,t,n){if("string"!=typeof n)throw new Error("Plumbing state status should be a string");console.log('Received request to set plumbing state to status "'+n+'" in room '+t);var r=a.default.get();r?r.sendStateEvent(t,"m.room.plumbing",{status:n}).done(function(){p(e,{success:!0})},function(t){m(e,t.message?t.message:(0,f._t)("Failed to send request."),t)}):m(e,(0,f._t)("You need to be logged in."))}(e,n,e.data.status);else!function(e,t){console.log("join_rules of "+t+" requested."),g(e,t,"m.room.join_rules","")}(e,n);else h(e,n);else _(e,n);else m(e,(0,f._t)("Room %(roomId)s not visible",{roomId:n}))}},y=0;e.exports={startListening:function(){0===y&&window.addEventListener("message",v,!1),y+=1},stopListening:function(){if(0===(y-=1)&&window.removeEventListener("message",v),y<0){var e=new Error("ScalarMessaging: mismatched startListening / stopListening detected. Negative count");console.error(e)}}}},function(e,t,n){"use strict";var r=i(n(14)),o=i(n(1));function i(e){return e&&e.__esModule?e:{default:e}}var a=n(0),s=(n(41),n(174)),l=a.createClass({displayName:"TintableSvg",propTypes:{src:o.default.string.isRequired,width:o.default.string.isRequired,height:o.default.string.isRequired,className:o.default.string},statics:{mounts:{},idSequence:0},componentWillMount:function(){this.fixups=[]},componentDidMount:function(){this.id=l.idSequence++,l.mounts[this.id]=this},componentWillUnmount:function(){delete l.mounts[this.id]},tint:function(){s.applySvgFixups(this.fixups)},onLoad:function(e){this.fixups=s.calcSvgFixups([e.target]),s.applySvgFixups(this.fixups)},render:function(){return a.createElement("object",{className:"mx_TintableSvg "+(this.props.className?this.props.className:""),type:"image/svg+xml",data:this.props.src,width:this.props.width,height:this.props.height,onLoad:this.onLoad,tabIndex:"-1"})}});s.registerTintable(function(){l.mounts&&(0,r.default)(l.mounts).forEach(function(e){l.mounts[e].tint()})}),e.exports=l},function(e,t,n){var r=n(1701),o=n(144);e.exports=function e(t,n,i,a,s){return t===n||(null==t||null==n||!o(t)&&!o(n)?t!=t&&n!=n:r(t,n,i,a,e,s))}},function(e,t,n){var r=n(301),o=n(1702),i=n(1703),a=n(1704),s=n(1705),l=n(1706);function u(e){var t=this.__data__=new r(e);this.size=t.size}u.prototype.clear=o,u.prototype.delete=i,u.prototype.get=a,u.prototype.has=s,u.prototype.set=l,e.exports=u},function(e,t){e.exports=function(e,t){for(var n=-1,r=t.length,o=e.length;++n<r;)e[o+n]=t[n];return e}},function(e,t,n){var r=n(1711),o=n(688),i=Object.prototype.propertyIsEnumerable,a=Object.getOwnPropertySymbols,s=a?function(e){return null==e?[]:(e=Object(e),r(a(e),function(t){return i.call(e,t)}))}:o;e.exports=s},function(e,t,n){var r=n(1713),o=n(144),i=Object.prototype,a=i.hasOwnProperty,s=i.propertyIsEnumerable,l=r(function(){return arguments}())?r:function(e){return o(e)&&a.call(e,"callee")&&!s.call(e,"callee")};e.exports=l},function(e,t,n){(function(e){var r=n(101),o=n(1714),i="object"==typeof t&&t&&!t.nodeType&&t,a=i&&"object"==typeof e&&e&&!e.nodeType&&e,s=a&&a.exports===i?r.Buffer:void 0,l=(s?s.isBuffer:void 0)||o;e.exports=l}).call(this,n(171)(e))},function(e,t){var n=9007199254740991;e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=n}},function(e,t,n){(function(e){var r=n(628),o="object"==typeof t&&t&&!t.nodeType&&t,i=o&&"object"==typeof e&&e&&!e.nodeType&&e,a=i&&i.exports===o&&r.process,s=function(){try{var e=i&&i.require&&i.require("util").types;return e||a&&a.binding&&a.binding("util")}catch(e){}}();e.exports=s}).call(this,n(171)(e))},function(e,t){var n=Object.prototype;e.exports=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||n)}},function(e,t,n){var r=n(462),o=n(1722);e.exports=function e(t,n,i,a,s){var l=-1,u=t.length;for(i||(i=o),s||(s=[]);++l<u;){var c=t[l];n>0&&i(c)?n>1?e(c,n-1,i,a,s):r(s,c):a||(s[s.length]=c)}return s}},function(e,t,n){var r=n(102),o=n(242),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!o(e))||a.test(e)||!i.test(e)||null!=t&&e in Object(t)}},function(e,t,n){var r=n(1744),o=n(702),i=n(703);e.exports=function(e){return i(o(e,void 0,r),e+"")}},function(e,t,n){var r=n(709),o=n(303),i=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var a=e[t];i.call(e,t)&&o(a,n)&&(void 0!==n||t in e)||r(e,t,n)}},function(e,t,n){var r=n(691)(Object.getPrototypeOf,Object);e.exports=r},function(e,t,n){var r=n(685);e.exports=function(e){var t=new e.constructor(e.byteLength);return new r(t).set(new r(e)),t}},function(e,t,n){"use strict";function r(e){switch(e._type){case"document":case"block_quote":case"list":case"item":case"paragraph":case"heading":case"emph":case"strong":case"link":case"image":case"custom_inline":case"custom_block":return!0;default:return!1}}var o=function(e,t){this.current=e,this.entering=!0===t},i=function(){var e=this.current,t=this.entering;if(null===e)return null;var n=r(e);return t&&n?e._firstChild?(this.current=e._firstChild,this.entering=!0):this.entering=!1:e===this.root?this.current=null:null===e._next?(this.current=e._parent,this.entering=!1):(this.current=e._next,this.entering=!0),{entering:t,node:e}},a=function(e,t){this._type=e,this._parent=null,this._firstChild=null,this._lastChild=null,this._prev=null,this._next=null,this._sourcepos=t,this._lastLineBlank=!1,this._open=!0,this._string_content=null,this._literal=null,this._listData={},this._info=null,this._destination=null,this._title=null,this._isFenced=!1,this._fenceChar=null,this._fenceLength=0,this._fenceOffset=null,this._level=null,this._onEnter=null,this._onExit=null},s=a.prototype;Object.defineProperty(s,"isContainer",{get:function(){return r(this)}}),Object.defineProperty(s,"type",{get:function(){return this._type}}),Object.defineProperty(s,"firstChild",{get:function(){return this._firstChild}}),Object.defineProperty(s,"lastChild",{get:function(){return this._lastChild}}),Object.defineProperty(s,"next",{get:function(){return this._next}}),Object.defineProperty(s,"prev",{get:function(){return this._prev}}),Object.defineProperty(s,"parent",{get:function(){return this._parent}}),Object.defineProperty(s,"sourcepos",{get:function(){return this._sourcepos}}),Object.defineProperty(s,"literal",{get:function(){return this._literal},set:function(e){this._literal=e}}),Object.defineProperty(s,"destination",{get:function(){return this._destination},set:function(e){this._destination=e}}),Object.defineProperty(s,"title",{get:function(){return this._title},set:function(e){this._title=e}}),Object.defineProperty(s,"info",{get:function(){return this._info},set:function(e){this._info=e}}),Object.defineProperty(s,"level",{get:function(){return this._level},set:function(e){this._level=e}}),Object.defineProperty(s,"listType",{get:function(){return this._listData.type},set:function(e){this._listData.type=e}}),Object.defineProperty(s,"listTight",{get:function(){return this._listData.tight},set:function(e){this._listData.tight=e}}),Object.defineProperty(s,"listStart",{get:function(){return this._listData.start},set:function(e){this._listData.start=e}}),Object.defineProperty(s,"listDelimiter",{get:function(){return this._listData.delimiter},set:function(e){this._listData.delimiter=e}}),Object.defineProperty(s,"onEnter",{get:function(){return this._onEnter},set:function(e){this._onEnter=e}}),Object.defineProperty(s,"onExit",{get:function(){return this._onExit},set:function(e){this._onExit=e}}),a.prototype.appendChild=function(e){e.unlink(),e._parent=this,this._lastChild?(this._lastChild._next=e,e._prev=this._lastChild,this._lastChild=e):(this._firstChild=e,this._lastChild=e)},a.prototype.prependChild=function(e){e.unlink(),e._parent=this,this._firstChild?(this._firstChild._prev=e,e._next=this._firstChild,this._firstChild=e):(this._firstChild=e,this._lastChild=e)},a.prototype.unlink=function(){this._prev?this._prev._next=this._next:this._parent&&(this._parent._firstChild=this._next),this._next?this._next._prev=this._prev:this._parent&&(this._parent._lastChild=this._prev),this._parent=null,this._next=null,this._prev=null},a.prototype.insertAfter=function(e){e.unlink(),e._next=this._next,e._next&&(e._next._prev=e),e._prev=this,this._next=e,e._parent=this._parent,e._next||(e._parent._lastChild=e)},a.prototype.insertBefore=function(e){e.unlink(),e._prev=this._prev,e._prev&&(e._prev._next=e),e._next=this,this._prev=e,e._parent=this._parent,e._prev||(e._parent._firstChild=e)},a.prototype.walker=function(){return new function(e){return{current:e,root:e,entering:!0,next:i,resumeAt:o}}(this)},e.exports=a},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(64));e.exports={encodeActions:function(e){var t=e.notify,n=e.sound,r=e.highlight;if(t){var o=["notify"];return n&&o.push({set_tweak:"sound",value:n}),r?o.push({set_tweak:"highlight"}):o.push({set_tweak:"highlight",value:!1}),o}return["dont_notify"]},decodeActions:function(e){for(var t=!1,n=null,o=!1,i=0;i<e.length;++i){var a=e[i];if("notify"===a)t=!0;else if("dont_notify"===a)t=!1;else{if("object"!==(void 0===a?"undefined":(0,r.default)(a)))return null;if("sound"===a.set_tweak)n=a.value;else{if("highlight"!==a.set_tweak)return null;o=a.value}}}void 0===o&&(o=!0);var s={notify:t,highlight:o};return null!==n&&(s.sound=n),s}}},function(e,t,n){"use strict";var r=n(720),o=n(476),i={OFF:"off",ON:"on",LOUD:"loud"};for(var a in e.exports={states:i,actionsFor:function(e){return e===this.ON?r.ACTION_NOTIFY:e===this.LOUD?r.ACTION_HIGHLIGHT_DEFAULT_SOUND:void 0},contentRuleVectorStateKind:function(e){var t=o.decodeActions(e.actions);if(!t)return null;var n=0;t.sound&&n++,t.highlight&&n++;var r=null;switch(n){case 0:r=this.ON;break;case 2:r=this.LOUD}return r}},i)e.exports[a]=i[a]},function(e,t,n){"use strict";e.exports=n(1483)},function(e,t,n){"use strict";n.r(t);var r=n(723),o="object"==typeof self&&self&&self.Object===Object&&self,i=(r.a||o||Function("return this")()).Symbol,a=Object.prototype,s=a.hasOwnProperty,l=a.toString,u=i?i.toStringTag:void 0;var c=function(e){var t=s.call(e,u),n=e[u];try{e[u]=void 0;var r=!0}catch(e){}var o=l.call(e);return r&&(t?e[u]=n:delete e[u]),o},f=Object.prototype.toString;var d=function(e){return f.call(e)},p="[object Null]",m="[object Undefined]",h=i?i.toStringTag:void 0;var _=function(e){return null==e?void 0===e?m:p:h&&h in Object(e)?c(e):d(e)};var g=function(e,t){return function(n){return e(t(n))}}(Object.getPrototypeOf,Object);var v=function(e){return null!=e&&"object"==typeof e},y="[object Object]",b=Function.prototype,E=Object.prototype,C=b.toString,S=E.hasOwnProperty,D=C.call(Object);var w=function(e){if(!v(e)||_(e)!=y)return!1;var t=g(e);if(null===t)return!0;var n=S.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&C.call(n)==D},T=n(480),x={INIT:"@@redux/INIT"};function R(e,t,n){var r;if("function"==typeof t&&void 0===n&&(n=t,t=void 0),void 0!==n){if("function"!=typeof n)throw new Error("Expected the enhancer to be a function.");return n(R)(e,t)}if("function"!=typeof e)throw new Error("Expected the reducer to be a function.");var o=e,i=t,a=[],s=a,l=!1;function u(){s===a&&(s=a.slice())}function c(){return i}function f(e){if("function"!=typeof e)throw new Error("Expected listener to be a function.");var t=!0;return u(),s.push(e),function(){if(t){t=!1,u();var n=s.indexOf(e);s.splice(n,1)}}}function d(e){if(!w(e))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if(void 0===e.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(l)throw new Error("Reducers may not dispatch actions.");try{l=!0,i=o(i,e)}finally{l=!1}for(var t=a=s,n=0;n<t.length;n++){(0,t[n])()}return e}return d({type:x.INIT}),(r={dispatch:d,subscribe:f,getState:c,replaceReducer:function(e){if("function"!=typeof e)throw new Error("Expected the nextReducer to be a function.");o=e,d({type:x.INIT})}})[T.a]=function(){var e,t=f;return(e={subscribe:function(e){if("object"!=typeof e)throw new TypeError("Expected the observer to be an object.");function n(){e.next&&e.next(c())}return n(),{unsubscribe:t(n)}}})[T.a]=function(){return this},e},r}function k(e,t){var n=t&&t.type;return"Given action "+(n&&'"'+n.toString()+'"'||"an action")+', reducer "'+e+'" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.'}function N(e){for(var t=Object.keys(e),n={},r=0;r<t.length;r++){var o=t[r];0,"function"==typeof e[o]&&(n[o]=e[o])}var i=Object.keys(n);var a=void 0;try{!function(e){Object.keys(e).forEach(function(t){var n=e[t];if(void 0===n(void 0,{type:x.INIT}))throw new Error('Reducer "'+t+"\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.");if(void 0===n(void 0,{type:"@@redux/PROBE_UNKNOWN_ACTION_"+Math.random().toString(36).substring(7).split("").join(".")}))throw new Error('Reducer "'+t+"\" returned undefined when probed with a random type. Don't try to handle "+x.INIT+' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.')})}(n)}catch(e){a=e}return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];if(a)throw a;for(var r=!1,o={},s=0;s<i.length;s++){var l=i[s],u=n[l],c=e[l],f=u(c,t);if(void 0===f){var d=k(l,t);throw new Error(d)}o[l]=f,r=r||f!==c}return r?o:e}}function I(e,t){return function(){return t(e.apply(void 0,arguments))}}function O(e,t){if("function"==typeof e)return I(e,t);if("object"!=typeof e||null===e)throw new Error("bindActionCreators expected an object or a function, instead received "+(null===e?"null":typeof e)+'. Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?');for(var n=Object.keys(e),r={},o=0;o<n.length;o++){var i=n[o],a=e[i];"function"==typeof a&&(r[i]=I(a,t))}return r}function A(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return 0===t.length?function(e){return e}:1===t.length?t[0]:t.reduce(function(e,t){return function(){return e(t.apply(void 0,arguments))}})}var M=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function P(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){return function(n,r,o){var i,a=e(n,r,o),s=a.dispatch,l={getState:a.getState,dispatch:function(e){return s(e)}};return i=t.map(function(e){return e(l)}),s=A.apply(void 0,i)(a.dispatch),M({},a,{dispatch:s})}}}n.d(t,"createStore",function(){return R}),n.d(t,"combineReducers",function(){return N}),n.d(t,"bindActionCreators",function(){return O}),n.d(t,"applyMiddleware",function(){return P}),n.d(t,"compose",function(){return A})},function(e,t,n){"use strict";(function(e,r){var o,i=n(722);o="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==e?e:r;var a=Object(i.a)(o);t.a=a}).call(this,n(15),n(1457)(e))},function(e,t,n){(function(e,r){var o;/*! https://mths.be/esrever v0.2.0 by @mathias */!function(i){var a="object"==typeof t&&t,s=("object"==typeof e&&e&&e.exports,"object"==typeof r&&r);s.global!==s&&s.window;var l=/([\0-\u02FF\u0370-\u1AAF\u1B00-\u1DBF\u1E00-\u20CF\u2100-\uD7FF\uE000-\uFE1F\uFE30-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])([\u0300-\u036F\u1AB0-\u1AFF\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]+)/g,u=/([\uD800-\uDBFF])([\uDC00-\uDFFF])/g,c=function(e){for(var t="",n=(e=e.replace(l,function(e,t,n){return c(n)+t}).replace(u,"$2$1")).length;n--;)t+=e.charAt(n);return t},f={version:"0.2.0",reverse:c};void 0===(o=function(){return f}.call(t,n,t,e))||(e.exports=o)}()}).call(this,n(171)(e),n(15))},function(e,t,n){var r=n(298),o=n(1779),i=n(1801),a=n(203),s=n(256),l=n(1805),u=n(471),c=n(712),f=u(function(e,t){var n={};if(null==e)return n;var u=!1;t=r(t,function(t){return t=a(t,e),u||(u=t.length>1),t}),s(e,c(e),n),u&&(n=o(n,7,l));for(var f=t.length;f--;)i(n,t[f]);return n});e.exports=f},function(e,t,n){"use strict";var r=n(6),o="<<anonymous>>",i={listOf:function(e){return u(e,"List",r.List.isList)},mapOf:function(e,t){return c(e,t,"Map",r.Map.isMap)},orderedMapOf:function(e,t){return c(e,t,"OrderedMap",r.OrderedMap.isOrderedMap)},setOf:function(e){return u(e,"Set",r.Set.isSet)},orderedSetOf:function(e){return u(e,"OrderedSet",r.OrderedSet.isOrderedSet)},stackOf:function(e){return u(e,"Stack",r.Stack.isStack)},iterableOf:function(e){return u(e,"Iterable",r.Iterable.isIterable)},recordOf:function(e){return s(function(t,n,o,i,s){for(var l=arguments.length,u=Array(l>5?l-5:0),c=5;c<l;c++)u[c-5]=arguments[c];var f=t[n];if(!(f instanceof r.Record)){var d=a(f),p=i;return new Error("Invalid "+p+" `"+s+"` of type `"+d+"` supplied to `"+o+"`, expected an Immutable.js Record.")}for(var m in e){var h=e[m];if(h){var _=f.toObject(),g=h.apply(void 0,[_,m,o,i,s+"."+m].concat(u));if(g)return g}}})},shape:d,contains:d,mapContains:function(e){return f(e,"Map",r.Map.isMap)},list:l("List",r.List.isList),map:l("Map",r.Map.isMap),orderedMap:l("OrderedMap",r.OrderedMap.isOrderedMap),set:l("Set",r.Set.isSet),orderedSet:l("OrderedSet",r.OrderedSet.isOrderedSet),stack:l("Stack",r.Stack.isStack),seq:l("Seq",r.Seq.isSeq),record:l("Record",function(e){return e instanceof r.Record}),iterable:l("Iterable",r.Iterable.isIterable)};function a(e){var t=typeof e;return Array.isArray(e)?"array":e instanceof RegExp?"object":e instanceof r.Iterable?"Immutable."+e.toSource().split(" ")[0]:t}function s(e){function t(t,n,r,i,a,s){for(var l=arguments.length,u=Array(l>6?l-6:0),c=6;c<l;c++)u[c-6]=arguments[c];return s=s||r,i=i||o,null!=n[r]?e.apply(void 0,[n,r,i,a,s].concat(u)):t?new Error("Required "+a+" `"+s+"` was not specified in `"+i+"`."):void 0}var n=t.bind(null,!1);return n.isRequired=t.bind(null,!0),n}function l(e,t){return s(function(n,r,o,i,s){var l=n[r];if(!t(l)){var u=a(l);return new Error("Invalid "+i+" `"+s+"` of type `"+u+"` supplied to `"+o+"`, expected `"+e+"`.")}return null})}function u(e,t,n){return s(function(r,o,i,s,l){for(var u=arguments.length,c=Array(u>5?u-5:0),f=5;f<u;f++)c[f-5]=arguments[f];var d=r[o];if(!n(d)){var p=s,m=a(d);return new Error("Invalid "+p+" `"+l+"` of type `"+m+"` supplied to `"+i+"`, expected an Immutable.js "+t+".")}if("function"!=typeof e)return new Error("Invalid typeChecker supplied to `"+i+"` for propType `"+l+"`, expected a function.");for(var h=d.toArray(),_=0,g=h.length;_<g;_++){var v=e.apply(void 0,[h,_,i,s,l+"["+_+"]"].concat(c));if(v instanceof Error)return v}})}function c(e,t,n,r){return s(function(){for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return u(e,n,r).apply(void 0,i)||t&&function(e){return s(function(t,n,r,o,i){for(var a=arguments.length,s=Array(a>5?a-5:0),l=5;l<a;l++)s[l-5]=arguments[l];var u=t[n];if("function"!=typeof e)return new Error("Invalid keysTypeChecker (optional second argument) supplied to `"+r+"` for propType `"+i+"`, expected a function.");for(var c=u.keySeq().toArray(),f=0,d=c.length;f<d;f++){var p=e.apply(void 0,[c,f,r,o,i+" -> key("+c[f]+")"].concat(s));if(p instanceof Error)return p}})}(t).apply(void 0,i)})}function f(e){var t=void 0===arguments[1]?"Iterable":arguments[1],n=void 0===arguments[2]?r.Iterable.isIterable:arguments[2];return s(function(r,o,i,s,l){for(var u=arguments.length,c=Array(u>5?u-5:0),f=5;f<u;f++)c[f-5]=arguments[f];var d=r[o];if(!n(d)){var p=a(d);return new Error("Invalid "+s+" `"+l+"` of type `"+p+"` supplied to `"+i+"`, expected an Immutable.js "+t+".")}var m=d.toObject();for(var h in e){var _=e[h];if(_){var g=_.apply(void 0,[m,h,i,s,l+"."+h].concat(c));if(g)return g}}})}function d(e){return f(e)}e.exports=i},function(e,t,n){"use strict";t.atob=self.atob.bind(self),t.btoa=self.btoa.bind(self)},,,,,,,,function(e,t){(function(t){e.exports=t}).call(this,{})},,function(e,t,n){e.exports=!n(48)&&!n(30)(function(){return 7!=Object.defineProperty(n(326)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){t.f=n(42)},function(e,t,n){var r=n(72),o=n(83),i=n(258)(!1),a=n(328)("IE_PROTO");e.exports=function(e,t){var n,s=o(e),l=0,u=[];for(n in s)n!=a&&r(s,n)&&u.push(n);for(;t.length>l;)r(s,n=t[l++])&&(~i(u,n)||u.push(n));return u}},function(e,t,n){var r=n(49),o=n(25),i=n(153);e.exports=n(48)?Object.defineProperties:function(e,t){o(e);for(var n,a=i(t),s=a.length,l=0;s>l;)r.f(e,n=a[l++],t[n]);return e}},function(e,t,n){var r=n(83),o=n(156).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return a&&"[object Window]"==i.call(e)?function(e){try{return o(e)}catch(e){return a.slice()}}(e):o(r(e))}},function(e,t,n){"use strict";var r=n(153),o=n(259),i=n(209),a=n(57),s=n(208),l=Object.assign;e.exports=!l||n(30)(function(){var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach(function(e){t[e]=e}),7!=l({},e)[n]||Object.keys(l({},t)).join("")!=r})?function(e,t){for(var n=a(e),l=arguments.length,u=1,c=o.f,f=i.f;l>u;)for(var d,p=s(arguments[u++]),m=c?r(p).concat(c(p)):r(p),h=m.length,_=0;h>_;)f.call(p,d=m[_++])&&(n[d]=p[d]);return n}:l},function(e,t,n){"use strict";var r=n(63),o=n(33),i=n(501),a=[].slice,s={};e.exports=Function.bind||function(e){var t=r(this),n=a.call(arguments,1),l=function(){var r=n.concat(a.call(arguments));return this instanceof l?function(e,t,n){if(!(t in s)){for(var r=[],o=0;o<t;o++)r[o]="a["+o+"]";s[t]=Function("F,a","return new F("+r.join(",")+")")}return s[t](e,n)}(t,r.length,r):i(t,r,e)};return o(t.prototype)&&(l.prototype=t.prototype),l}},function(e,t){e.exports=function(e,t,n){var r=void 0===n;switch(t.length){case 0:return r?e():e.call(n);case 1:return r?e(t[0]):e.call(n,t[0]);case 2:return r?e(t[0],t[1]):e.call(n,t[0],t[1]);case 3:return r?e(t[0],t[1],t[2]):e.call(n,t[0],t[1],t[2]);case 4:return r?e(t[0],t[1],t[2],t[3]):e.call(n,t[0],t[1],t[2],t[3])}return e.apply(n,t)}},function(e,t,n){var r=n(28).parseInt,o=n(182).trim,i=n(332),a=/^[-+]?0[xX]/;e.exports=8!==r(i+"08")||22!==r(i+"0x16")?function(e,t){var n=o(String(e),3);return r(n,t>>>0||(a.test(n)?16:10))}:r},function(e,t,n){var r=n(28).parseFloat,o=n(182).trim;e.exports=1/r(n(332)+"-0")!=-1/0?function(e){var t=o(String(e),3),n=r(t);return 0===n&&"-"==t.charAt(0)?-0:n}:r},function(e,t,n){var r=n(92);e.exports=function(e,t){if("number"!=typeof e&&"Number"!=r(e))throw TypeError(t);return+e}},function(e,t,n){var r=n(33),o=Math.floor;e.exports=function(e){return!r(e)&&isFinite(e)&&o(e)===e}},function(e,t){e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:Math.log(1+e)}},function(e,t,n){var r=n(335),o=Math.pow,i=o(2,-52),a=o(2,-23),s=o(2,127)*(2-a),l=o(2,-126);e.exports=Math.fround||function(e){var t,n,o=Math.abs(e),u=r(e);return o<l?u*function(e){return e+1/i-1/i}(o/l/a)*l*a:(n=(t=(1+a/i)*o)-(t-o))>s||n!=n?u*(1/0):u*n}},function(e,t,n){var r=n(25);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){var i=e.return;throw void 0!==i&&r(i.call(e)),t}}},function(e,t,n){var r=n(63),o=n(57),i=n(208),a=n(50);e.exports=function(e,t,n,s,l){r(t);var u=o(e),c=i(u),f=a(u.length),d=l?f-1:0,p=l?-1:1;if(n<2)for(;;){if(d in c){s=c[d],d+=p;break}if(d+=p,l?d<0:f<=d)throw TypeError("Reduce of empty array with no initial value")}for(;l?d>=0:f>d;d+=p)d in c&&(s=t(s,c[d],d,u));return s}},function(e,t,n){"use strict";var r=n(57),o=n(154),i=n(50);e.exports=[].copyWithin||function(e,t){var n=r(this),a=i(n.length),s=o(e,a),l=o(t,a),u=arguments.length>2?arguments[2]:void 0,c=Math.min((void 0===u?a:o(u,a))-l,a-s),f=1;for(l<s&&s<l+c&&(f=-1,l+=c-1,s+=c-1);c-- >0;)l in n?n[s]=n[l]:delete n[s],s+=f,l+=f;return n}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){n(48)&&"g"!=/./g.flags&&n(49).f(RegExp.prototype,"flags",{configurable:!0,get:n(263)})},function(e,t){e.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},function(e,t,n){var r=n(25),o=n(33),i=n(350);e.exports=function(e,t){if(r(e),o(t)&&t.constructor===e)return t;var n=i.f(e);return(0,n.resolve)(t),n.promise}},function(e,t,n){"use strict";var r=n(516),o=n(184);e.exports=n(266)("Map",function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{get:function(e){var t=r.getEntry(o(this,"Map"),e);return t&&t.v},set:function(e,t){return r.def(o(this,"Map"),0===e?0:e,t)}},r,!0)},function(e,t,n){"use strict";var r=n(49).f,o=n(155),i=n(160),a=n(91),s=n(158),l=n(159),u=n(338),c=n(511),f=n(157),d=n(48),p=n(133).fastKey,m=n(184),h=d?"_s":"size",_=function(e,t){var n,r=p(t);if("F"!==r)return e._i[r];for(n=e._f;n;n=n.n)if(n.k==t)return n};e.exports={getConstructor:function(e,t,n,u){var c=e(function(e,r){s(e,c,t,"_i"),e._t=t,e._i=o(null),e._f=void 0,e._l=void 0,e[h]=0,void 0!=r&&l(r,n,e[u],e)});return i(c.prototype,{clear:function(){for(var e=m(this,t),n=e._i,r=e._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete n[r.i];e._f=e._l=void 0,e[h]=0},delete:function(e){var n=m(this,t),r=_(n,e);if(r){var o=r.n,i=r.p;delete n._i[r.i],r.r=!0,i&&(i.n=o),o&&(o.p=i),n._f==r&&(n._f=o),n._l==r&&(n._l=i),n[h]--}return!!r},forEach:function(e){m(this,t);for(var n,r=a(e,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(r(n.v,n.k,this);n&&n.r;)n=n.p},has:function(e){return!!_(m(this,t),e)}}),d&&r(c.prototype,"size",{get:function(){return m(this,t)[h]}}),c},def:function(e,t,n){var r,o,i=_(e,t);return i?i.v=n:(e._l=i={i:o=p(t,!0),k:t,v:n,p:r=e._l,n:void 0,r:!1},e._f||(e._f=i),r&&(r.n=i),e[h]++,"F"!==o&&(e._i[o]=i)),e},getEntry:_,setStrong:function(e,t,n){u(e,t,function(e,n){this._t=m(e,t),this._k=n,this._l=void 0},function(){for(var e=this._k,t=this._l;t&&t.r;)t=t.p;return this._t&&(this._l=t=t?t.n:this._t._f)?c(0,"keys"==e?t.k:"values"==e?t.v:[t.k,t.v]):(this._t=void 0,c(1))},n?"entries":"values",!n,!0),f(t)}}},function(e,t,n){"use strict";var r=n(516),o=n(184);e.exports=n(266)("Set",function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{add:function(e){return r.def(o(this,"Set"),e=0===e?0:e,e)}},r)},function(e,t,n){"use strict";var r,o=n(110)(0),i=n(74),a=n(133),s=n(499),l=n(519),u=n(33),c=n(30),f=n(184),d=a.getWeak,p=Object.isExtensible,m=l.ufstore,h={},_=function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},g={get:function(e){if(u(e)){var t=d(e);return!0===t?m(f(this,"WeakMap")).get(e):t?t[this._i]:void 0}},set:function(e,t){return l.def(f(this,"WeakMap"),e,t)}},v=e.exports=n(266)("WeakMap",_,g,l,!0,!0);c(function(){return 7!=(new v).set((Object.freeze||Object)(h),7).get(h)})&&(s((r=l.getConstructor(_,"WeakMap")).prototype,g),a.NEED=!0,o(["delete","has","get","set"],function(e){var t=v.prototype,n=t[e];i(t,e,function(t,o){if(u(t)&&!p(t)){this._f||(this._f=new r);var i=this._f[e](t,o);return"set"==e?this:i}return n.call(this,t,o)})}))},function(e,t,n){"use strict";var r=n(160),o=n(133).getWeak,i=n(25),a=n(33),s=n(158),l=n(159),u=n(110),c=n(72),f=n(184),d=u(5),p=u(6),m=0,h=function(e){return e._l||(e._l=new _)},_=function(){this.a=[]},g=function(e,t){return d(e.a,function(e){return e[0]===t})};_.prototype={get:function(e){var t=g(this,e);if(t)return t[1]},has:function(e){return!!g(this,e)},set:function(e,t){var n=g(this,e);n?n[1]=t:this.a.push([e,t])},delete:function(e){var t=p(this.a,function(t){return t[0]===e});return~t&&this.a.splice(t,1),!!~t}},e.exports={getConstructor:function(e,t,n,i){var u=e(function(e,r){s(e,u,t,"_i"),e._t=t,e._i=m++,e._l=void 0,void 0!=r&&l(r,n,e[i],e)});return r(u.prototype,{delete:function(e){if(!a(e))return!1;var n=o(e);return!0===n?h(f(this,t)).delete(e):n&&c(n,this._i)&&delete n[this._i]},has:function(e){if(!a(e))return!1;var n=o(e);return!0===n?h(f(this,t)).has(e):n&&c(n,this._i)}}),u},def:function(e,t,n){var r=o(i(t),!0);return!0===r?h(e).set(t,n):r[e._i]=n,e},ufstore:h}},function(e,t,n){var r=n(108),o=n(50);e.exports=function(e){if(void 0===e)return 0;var t=r(e),n=o(t);if(t!==n)throw RangeError("Wrong length!");return n}},function(e,t,n){var r=n(156),o=n(259),i=n(25),a=n(28).Reflect;e.exports=a&&a.ownKeys||function(e){var t=r.f(i(e)),n=o.f;return n?t.concat(n(e)):t}},function(e,t,n){"use strict";var r=n(260),o=n(33),i=n(50),a=n(91),s=n(42)("isConcatSpreadable");e.exports=function e(t,n,l,u,c,f,d,p){for(var m,h,_=c,g=0,v=!!d&&a(d,p,3);g<u;){if(g in l){if(m=v?v(l[g],g,n):l[g],h=!1,o(m)&&(h=void 0!==(h=m[s])?!!h:r(m)),h&&f>0)_=e(t,n,m,i(m.length),_,f-1)-1;else{if(_>=9007199254740991)throw TypeError();t[_]=m}_++}g++}return _}},function(e,t,n){var r=n(50),o=n(334),i=n(107);e.exports=function(e,t,n,a){var s=String(i(e)),l=s.length,u=void 0===n?" ":String(n),c=r(t);if(c<=l||""==u)return s;var f=c-l,d=o.call(u,Math.ceil(f/u.length));return d.length>f&&(d=d.slice(0,f)),a?d+s:s+d}},function(e,t,n){var r=n(153),o=n(83),i=n(209).f;e.exports=function(e){return function(t){for(var n,a=o(t),s=r(a),l=s.length,u=0,c=[];l>u;)i.call(a,n=s[u++])&&c.push(e?[n,a[n]]:a[n]);return c}}},function(e,t,n){var r=n(210),o=n(526);e.exports=function(e){return function(){if(r(this)!=e)throw TypeError(e+"#toJSON isn't generic");return o(this)}}},function(e,t,n){var r=n(159);e.exports=function(e,t){var n=[];return r(e,!1,n.push,n,t),n}},function(e,t){e.exports=Math.scale||function(e,t,n,r,o){return 0===arguments.length||e!=e||t!=t||n!=n||r!=r||o!=o?NaN:e===1/0||e===-1/0?e:(e-t)*(o-r)/(n-t)+r}},function(e,t,n){"use strict";var r=n(221),o=n(45),i=n(529),a=(n(530),n(222));n(23),n(946);function s(e,t,n){this.props=e,this.context=t,this.refs=a,this.updater=n||i}function l(e,t,n){this.props=e,this.context=t,this.refs=a,this.updater=n||i}function u(){}s.prototype.isReactComponent={},s.prototype.setState=function(e,t){"object"!=typeof e&&"function"!=typeof e&&null!=e&&r("85"),this.updater.enqueueSetState(this,e),t&&this.updater.enqueueCallback(this,t,"setState")},s.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this),e&&this.updater.enqueueCallback(this,e,"forceUpdate")},u.prototype=s.prototype,l.prototype=new u,l.prototype.constructor=l,o(l.prototype,s.prototype),l.prototype.isPureReactComponent=!0,e.exports={Component:s,PureComponent:l}},function(e,t,n){"use strict";n(36);var r={isMounted:function(e){return!1},enqueueCallback:function(e,t){},enqueueForceUpdate:function(e){},enqueueReplaceState:function(e,t){},enqueueSetState:function(e,t){}};e.exports=r},function(e,t,n){"use strict";e.exports=!1},function(e,t,n){"use strict";var r="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;e.exports=r},function(e,t,n){"use strict";var r=n(954);e.exports=function(e){return r(e,!1)}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){e.exports={default:n(964),__esModule:!0}},function(e,t,n){e.exports={default:n(972),__esModule:!0}},function(e,t,n){"use strict";e.exports={hasCachedChildNodes:1}},function(e,t,n){"use strict";var r=n(989),o=n(990),i=n(994),a=n(997),s=n(998),l=n(999),u=n(1e3),c=n(1006),f=n(53),d=n(1030),p=n(1031),m=n(1032),h=n(557),_=n(1033),g=n(1035),v=n(1036),y=n(1042),b=n(1043),E=n(1044),C=!1;e.exports={inject:function(){C||(C=!0,g.EventEmitter.injectReactEventListener(_),g.EventPluginHub.injectEventPluginOrder(a),g.EventPluginUtils.injectComponentTree(f),g.EventPluginUtils.injectTreeTraversal(p),g.EventPluginHub.injectEventPluginsByName({SimpleEventPlugin:E,EnterLeaveEventPlugin:s,ChangeEventPlugin:i,SelectEventPlugin:b,BeforeInputEventPlugin:o}),g.HostComponent.injectGenericComponentClass(c),g.HostComponent.injectTextComponentClass(m),g.DOMProperty.injectDOMPropertyConfig(r),g.DOMProperty.injectDOMPropertyConfig(l),g.DOMProperty.injectDOMPropertyConfig(y),g.EmptyComponent.injectEmptyComponentFactory(function(e){return new d(e)}),g.Updates.injectReconcileTransaction(v),g.Updates.injectBatchingStrategy(h),g.Component.injectEnvironment(u))}}},function(e,t,n){"use strict";var r=n(32);n(23);e.exports=function(e,t){return null==t&&r("30"),null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}},function(e,t,n){"use strict";e.exports=function(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}},function(e,t,n){"use strict";var r=n(69),o=null;e.exports=function(){return!o&&r.canUseDOM&&(o="textContent"in document.documentElement?"textContent":"innerText"),o}},function(e,t,n){"use strict";var r=n(32);var o=n(168),i=(n(23),function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._callbacks=null,this._contexts=null,this._arg=t}return e.prototype.enqueue=function(e,t){this._callbacks=this._callbacks||[],this._callbacks.push(e),this._contexts=this._contexts||[],this._contexts.push(t)},e.prototype.notifyAll=function(){var e=this._callbacks,t=this._contexts,n=this._arg;if(e&&t){e.length!==t.length&&r("24"),this._callbacks=null,this._contexts=null;for(var o=0;o<e.length;o++)e[o].call(t[o],n);e.length=0,t.length=0}},e.prototype.checkpoint=function(){return this._callbacks?this._callbacks.length:0},e.prototype.rollback=function(e){this._callbacks&&this._contexts&&(this._callbacks.length=e,this._contexts.length=e)},e.prototype.reset=function(){this._callbacks=null,this._contexts=null},e.prototype.destructor=function(){this.reset()},e}());e.exports=o.addPoolingTo(i)},function(e,t,n){"use strict";e.exports={logTopLevelRenders:!1}},function(e,t,n){"use strict";var r=n(53);function o(e){var t=e.type,n=e.nodeName;return n&&"input"===n.toLowerCase()&&("checkbox"===t||"radio"===t)}function i(e){return e._wrapperState.valueTracker}var a={_getTrackerFromNode:function(e){return i(r.getInstanceFromNode(e))},track:function(e){if(!i(e)){var t=r.getNodeFromInstance(e),n=o(t)?"checked":"value",a=Object.getOwnPropertyDescriptor(t.constructor.prototype,n),s=""+t[n];t.hasOwnProperty(n)||"function"!=typeof a.get||"function"!=typeof a.set||(Object.defineProperty(t,n,{enumerable:a.enumerable,configurable:!0,get:function(){return a.get.call(this)},set:function(e){s=""+e,a.set.call(this,e)}}),function(e,t){e._wrapperState.valueTracker=t}(e,{getValue:function(){return s},setValue:function(e){s=""+e},stopTracking:function(){!function(e){e._wrapperState.valueTracker=null}(e),delete t[n]}}))}},updateValueIfChanged:function(e){if(!e)return!1;var t=i(e);if(!t)return a.track(e),!0;var n=t.getValue(),s=function(e){var t;return e&&(t=o(e)?""+e.checked:e.value),t}(r.getNodeFromInstance(e));return s!==n&&(t.setValue(s),!0)},stopTracking:function(e){var t=i(e);t&&t.stopTracking()}};e.exports=a},function(e,t,n){"use strict";var r={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};e.exports=function(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!r[e.type]:"textarea"===t}},function(e,t,n){"use strict";var r={currentScrollLeft:0,currentScrollTop:0,refreshScrollValues:function(e){r.currentScrollLeft=e.x,r.currentScrollTop=e.y}};e.exports=r},function(e,t,n){"use strict";var r=n(69),o=n(282),i=n(281),a=function(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t};r.canUseDOM&&("textContent"in document.documentElement||(a=function(e,t){3!==e.nodeType?i(e,o(t)):e.nodeValue=t})),e.exports=a},function(e,t,n){"use strict";e.exports=function(e){try{e.focus()}catch(e){}}},function(e,t,n){"use strict";var r={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0};var o=["Webkit","ms","Moz","O"];Object.keys(r).forEach(function(e){o.forEach(function(t){r[function(e,t){return e+t.charAt(0).toUpperCase()+t.substring(1)}(t,e)]=r[e]})});var i={isUnitlessNumber:r,shorthandPropertyExpansions:{background:{backgroundAttachment:!0,backgroundColor:!0,backgroundImage:!0,backgroundPositionX:!0,backgroundPositionY:!0,backgroundRepeat:!0},backgroundPosition:{backgroundPositionX:!0,backgroundPositionY:!0},border:{borderWidth:!0,borderStyle:!0,borderColor:!0},borderBottom:{borderBottomWidth:!0,borderBottomStyle:!0,borderBottomColor:!0},borderLeft:{borderLeftWidth:!0,borderLeftStyle:!0,borderLeftColor:!0},borderRight:{borderRightWidth:!0,borderRightStyle:!0,borderRightColor:!0},borderTop:{borderTopWidth:!0,borderTopStyle:!0,borderTopColor:!0},font:{fontStyle:!0,fontVariant:!0,fontWeight:!0,fontSize:!0,lineHeight:!0,fontFamily:!0},outline:{outlineWidth:!0,outlineStyle:!0,outlineColor:!0}}};e.exports=i},function(e,t,n){"use strict";var r=n(191),o=(n(53),n(88),n(1015)),i=(n(36),new RegExp("^["+r.ATTRIBUTE_NAME_START_CHAR+"]["+r.ATTRIBUTE_NAME_CHAR+"]*$")),a={},s={};function l(e){return!!s.hasOwnProperty(e)||!a.hasOwnProperty(e)&&(i.test(e)?(s[e]=!0,!0):(a[e]=!0,!1))}function u(e,t){return null==t||e.hasBooleanValue&&!t||e.hasNumericValue&&isNaN(t)||e.hasPositiveNumericValue&&t<1||e.hasOverloadedBooleanValue&&!1===t}var c={createMarkupForID:function(e){return r.ID_ATTRIBUTE_NAME+"="+o(e)},setAttributeForID:function(e,t){e.setAttribute(r.ID_ATTRIBUTE_NAME,t)},createMarkupForRoot:function(){return r.ROOT_ATTRIBUTE_NAME+'=""'},setAttributeForRoot:function(e){e.setAttribute(r.ROOT_ATTRIBUTE_NAME,"")},createMarkupForProperty:function(e,t){var n=r.properties.hasOwnProperty(e)?r.properties[e]:null;if(n){if(u(n,t))return"";var i=n.attributeName;return n.hasBooleanValue||n.hasOverloadedBooleanValue&&!0===t?i+'=""':i+"="+o(t)}return r.isCustomAttribute(e)?null==t?"":e+"="+o(t):null},createMarkupForCustomAttribute:function(e,t){return l(e)&&null!=t?e+"="+o(t):""},setValueForProperty:function(e,t,n){var o=r.properties.hasOwnProperty(t)?r.properties[t]:null;if(o){var i=o.mutationMethod;if(i)i(e,n);else{if(u(o,n))return void this.deleteValueForProperty(e,t);if(o.mustUseProperty)e[o.propertyName]=n;else{var a=o.attributeName,s=o.attributeNamespace;s?e.setAttributeNS(s,a,""+n):o.hasBooleanValue||o.hasOverloadedBooleanValue&&!0===n?e.setAttribute(a,""):e.setAttribute(a,""+n)}}}else if(r.isCustomAttribute(t))return void c.setValueForAttribute(e,t,n)},setValueForAttribute:function(e,t,n){l(t)&&(null==n?e.removeAttribute(t):e.setAttribute(t,""+n))},deleteValueForAttribute:function(e,t){e.removeAttribute(t)},deleteValueForProperty:function(e,t){var n=r.properties.hasOwnProperty(t)?r.properties[t]:null;if(n){var o=n.mutationMethod;if(o)o(e,void 0);else if(n.mustUseProperty){var i=n.propertyName;n.hasBooleanValue?e[i]=!1:e[i]=""}else e.removeAttribute(n.attributeName)}else r.isCustomAttribute(t)&&e.removeAttribute(t)}};e.exports=c},function(e,t,n){"use strict";var r=n(45),o=n(380),i=n(53),a=n(98),s=(n(36),!1);function l(){if(this._rootNodeID&&this._wrapperState.pendingUpdate){this._wrapperState.pendingUpdate=!1;var e=this._currentElement.props,t=o.getValue(e);null!=t&&u(this,Boolean(e.multiple),t)}}function u(e,t,n){var r,o,a=i.getNodeFromInstance(e).options;if(t){for(r={},o=0;o<n.length;o++)r[""+n[o]]=!0;for(o=0;o<a.length;o++){var s=r.hasOwnProperty(a[o].value);a[o].selected!==s&&(a[o].selected=s)}}else{for(r=""+n,o=0;o<a.length;o++)if(a[o].value===r)return void(a[o].selected=!0);a.length&&(a[0].selected=!0)}}var c={getHostProps:function(e,t){return r({},t,{onChange:e._wrapperState.onChange,value:void 0})},mountWrapper:function(e,t){var n=o.getValue(t);e._wrapperState={pendingUpdate:!1,initialValue:null!=n?n:t.defaultValue,listeners:null,onChange:function(e){var t=this._currentElement.props,n=o.executeOnChange(t,e);this._rootNodeID&&(this._wrapperState.pendingUpdate=!0);return a.asap(l,this),n}.bind(e),wasMultiple:Boolean(t.multiple)},void 0===t.value||void 0===t.defaultValue||s||(s=!0)},getSelectValueContext:function(e){return e._wrapperState.initialValue},postUpdateWrapper:function(e){var t=e._currentElement.props;e._wrapperState.initialValue=void 0;var n=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=Boolean(t.multiple);var r=o.getValue(t);null!=r?(e._wrapperState.pendingUpdate=!1,u(e,Boolean(t.multiple),r)):n!==Boolean(t.multiple)&&(null!=t.defaultValue?u(e,Boolean(t.multiple),t.defaultValue):u(e,Boolean(t.multiple),t.multiple?[]:""))}};e.exports=c},function(e,t,n){"use strict";var r=n(32),o=n(165),i=(n(23),{HOST:0,COMPOSITE:1,EMPTY:2,getType:function(e){return null===e||!1===e?i.EMPTY:o.isValidElement(e)?"function"==typeof e.type?i.COMPOSITE:i.HOST:void r("26",e)}});e.exports=i},function(e,t,n){"use strict";var r,o={injectEmptyComponentFactory:function(e){r=e}},i={create:function(e){return r(e)}};i.injection=o,e.exports=i},function(e,t,n){"use strict";var r=n(32),o=(n(23),null),i=null;var a={createInternalComponent:function(e){return o||r("111",e.type),new o(e)},createInstanceForText:function(e){return new i(e)},isTextComponent:function(e){return e instanceof i},injection:{injectGenericComponentClass:function(e){o=e},injectTextComponentClass:function(e){i=e}}};e.exports=a},function(e,t,n){"use strict";var r=n(32),o=(n(123),n(1026)),i=n(1027),a=(n(23),n(385)),s=(n(36),"."),l=":";function u(e,t){return e&&"object"==typeof e&&null!=e.key?a.escape(e.key):t.toString(36)}e.exports=function(e,t,n){return null==e?0:function e(t,n,c,f){var d,p=typeof t;if("undefined"!==p&&"boolean"!==p||(t=null),null===t||"string"===p||"number"===p||"object"===p&&t.$$typeof===o)return c(f,t,""===n?s+u(t,0):n),1;var m=0,h=""===n?s:n+l;if(Array.isArray(t))for(var _=0;_<t.length;_++)m+=e(d=t[_],h+u(d,_),c,f);else{var g=i(t);if(g){var v,y=g.call(t);if(g!==t.entries)for(var b=0;!(v=y.next()).done;)m+=e(d=v.value,h+u(d,b++),c,f);else for(;!(v=y.next()).done;){var E=v.value;E&&(m+=e(d=E[1],h+a.escape(E[0])+l+u(d,0),c,f))}}else if("object"===p){var C=String(t);r("31","[object Object]"===C?"object with keys {"+Object.keys(t).join(", ")+"}":C,"")}}return m}(e,"",t,n)}},function(e,t,n){"use strict";var r,o,i,a,s,l,u,c=n(221),f=n(123);n(23),n(36);function d(e){var t=Function.prototype.toString,n=Object.prototype.hasOwnProperty,r=RegExp("^"+t.call(n).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");try{var o=t.call(e);return r.test(o)}catch(e){return!1}}if("function"==typeof Array.from&&"function"==typeof Map&&d(Map)&&null!=Map.prototype&&"function"==typeof Map.prototype.keys&&d(Map.prototype.keys)&&"function"==typeof Set&&d(Set)&&null!=Set.prototype&&"function"==typeof Set.prototype.keys&&d(Set.prototype.keys)){var p=new Map,m=new Set;r=function(e,t){p.set(e,t)},o=function(e){return p.get(e)},i=function(e){p.delete(e)},a=function(){return Array.from(p.keys())},s=function(e){m.add(e)},l=function(e){m.delete(e)},u=function(){return Array.from(m.keys())}}else{var h={},_={},g=function(e){return"."+e},v=function(e){return parseInt(e.substr(1),10)};r=function(e,t){var n=g(e);h[n]=t},o=function(e){var t=g(e);return h[t]},i=function(e){var t=g(e);delete h[t]},a=function(){return Object.keys(h).map(v)},s=function(e){var t=g(e);_[t]=!0},l=function(e){var t=g(e);delete _[t]},u=function(){return Object.keys(_).map(v)}}var y=[];function b(e){var t=o(e);if(t){var n=t.childIDs;i(e),n.forEach(b)}}function E(e,t,n){return"\n in "+(e||"Unknown")+(t?" (at "+t.fileName.replace(/^.*[\\\/]/,"")+":"+t.lineNumber+")":n?" (created by "+n+")":"")}function C(e){return null==e?"#empty":"string"==typeof e||"number"==typeof e?"#text":"string"==typeof e.type?e.type:e.type.displayName||e.type.name||"Unknown"}function S(e){var t,n=D.getDisplayName(e),r=D.getElement(e),o=D.getOwnerID(e);return o&&(t=D.getDisplayName(o)),E(n,r&&r._source,t)}var D={onSetChildren:function(e,t){var n=o(e);n||c("144"),n.childIDs=t;for(var r=0;r<t.length;r++){var i=t[r],a=o(i);a||c("140"),null==a.childIDs&&"object"==typeof a.element&&null!=a.element&&c("141"),a.isMounted||c("71"),null==a.parentID&&(a.parentID=e),a.parentID!==e&&c("142",i,a.parentID,e)}},onBeforeMountComponent:function(e,t,n){r(e,{element:t,parentID:n,text:null,childIDs:[],isMounted:!1,updateCount:0})},onBeforeUpdateComponent:function(e,t){var n=o(e);n&&n.isMounted&&(n.element=t)},onMountComponent:function(e){var t=o(e);t||c("144"),t.isMounted=!0,0===t.parentID&&s(e)},onUpdateComponent:function(e){var t=o(e);t&&t.isMounted&&t.updateCount++},onUnmountComponent:function(e){var t=o(e);t&&(t.isMounted=!1,0===t.parentID&&l(e));y.push(e)},purgeUnmountedComponents:function(){if(!D._preventPurging){for(var e=0;e<y.length;e++){b(y[e])}y.length=0}},isMounted:function(e){var t=o(e);return!!t&&t.isMounted},getCurrentStackAddendum:function(e){var t="";if(e){var n=C(e),r=e._owner;t+=E(n,e._source,r&&r.getName())}var o=f.current,i=o&&o._debugID;return t+=D.getStackAddendumByID(i)},getStackAddendumByID:function(e){for(var t="";e;)t+=S(e),e=D.getParentID(e);return t},getChildIDs:function(e){var t=o(e);return t?t.childIDs:[]},getDisplayName:function(e){var t=D.getElement(e);return t?C(t):null},getElement:function(e){var t=o(e);return t?t.element:null},getOwnerID:function(e){var t=D.getElement(e);return t&&t._owner?t._owner._debugID:null},getParentID:function(e){var t=o(e);return t?t.parentID:null},getSource:function(e){var t=o(e),n=t?t.element:null;return null!=n?n._source:null},getText:function(e){var t=D.getElement(e);return"string"==typeof t?t:"number"==typeof t?""+t:null},getUpdateCount:function(e){var t=o(e);return t?t.updateCount:0},getRootIDs:u,getRegisteredIDs:a,pushNonStandardWarningStack:function(e,t){if("function"==typeof console.reactStack){var n=[],r=f.current,o=r&&r._debugID;try{for(e&&n.push({name:o?D.getDisplayName(o):null,fileName:t?t.fileName:null,lineNumber:t?t.lineNumber:null});o;){var i=D.getElement(o),a=D.getParentID(o),s=D.getOwnerID(o),l=s?D.getDisplayName(s):null,u=i&&i._source;n.push({name:l,fileName:u?u.fileName:null,lineNumber:u?u.lineNumber:null}),o=a}}catch(e){}console.reactStack(n)}},popNonStandardWarningStack:function(){"function"==typeof console.reactStackEnd&&console.reactStackEnd()}};e.exports=D},function(e,t,n){"use strict";var r=n(45),o=n(168),i=n(279),a=(n(88),n(1029)),s=[];var l={enqueue:function(){}};function u(e){this.reinitializeTransaction(),this.renderToStaticMarkup=e,this.useCreateElement=!1,this.updateQueue=new a(this)}var c={getTransactionWrappers:function(){return s},getReactMountReady:function(){return l},getUpdateQueue:function(){return this.updateQueue},destructor:function(){},checkpoint:function(){},rollback:function(){}};r(u.prototype,i,c),o.addPoolingTo(u),e.exports=u},function(e,t,n){"use strict";var r=n(45),o=n(98),i=n(279),a=n(97),s={initialize:a,close:function(){f.isBatchingUpdates=!1}},l=[{initialize:a,close:o.flushBatchedUpdates.bind(o)},s];function u(){this.reinitializeTransaction()}r(u.prototype,i,{getTransactionWrappers:function(){return l}});var c=new u,f={isBatchingUpdates:!1,batchedUpdates:function(e,t,n,r,o,i){var a=f.isBatchingUpdates;return f.isBatchingUpdates=!0,a?e(t,n,r,o,i):c.perform(e,null,t,n,r,o,i)}};e.exports=f},function(e,t,n){"use strict";var r=n(97),o={listen:function(e,t,n){return e.addEventListener?(e.addEventListener(t,n,!1),{remove:function(){e.removeEventListener(t,n,!1)}}):e.attachEvent?(e.attachEvent("on"+t,n),{remove:function(){e.detachEvent("on"+t,n)}}):void 0},capture:function(e,t,n){return e.addEventListener?(e.addEventListener(t,n,!0),{remove:function(){e.removeEventListener(t,n,!0)}}):{remove:r}},registerDefault:function(){}};e.exports=o},function(e,t,n){"use strict";var r=n(1037),o=n(1039),i=n(547),a=n(560);var s={hasSelectionCapabilities:function(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&"text"===e.type||"textarea"===t||"true"===e.contentEditable)},getSelectionInformation:function(){var e=a();return{focusedElem:e,selectionRange:s.hasSelectionCapabilities(e)?s.getSelection(e):null}},restoreSelection:function(e){var t=a(),n=e.focusedElem,r=e.selectionRange;t!==n&&function(e){return o(document.documentElement,e)}(n)&&(s.hasSelectionCapabilities(n)&&s.setSelection(n,r),i(n))},getSelection:function(e){var t;if("selectionStart"in e)t={start:e.selectionStart,end:e.selectionEnd};else if(document.selection&&e.nodeName&&"input"===e.nodeName.toLowerCase()){var n=document.selection.createRange();n.parentElement()===e&&(t={start:-n.moveStart("character",-e.value.length),end:-n.moveEnd("character",-e.value.length)})}else t=r.getOffsets(e);return t||{start:0,end:0}},setSelection:function(e,t){var n=t.start,o=t.end;if(void 0===o&&(o=n),"selectionStart"in e)e.selectionStart=n,e.selectionEnd=Math.min(o,e.value.length);else if(document.selection&&e.nodeName&&"input"===e.nodeName.toLowerCase()){var i=e.createTextRange();i.collapse(!0),i.moveStart("character",n),i.moveEnd("character",o-n),i.select()}else r.setOffsets(e,t)}};e.exports=s},function(e,t,n){"use strict";e.exports=function(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}},function(e,t,n){"use strict";var r=n(32),o=n(192),i=n(191),a=n(165),s=n(283),l=(n(123),n(53)),u=n(562),c=n(1054),f=n(542),d=n(229),p=(n(88),n(563)),m=n(169),h=n(386),_=n(98),g=n(222),v=n(382),y=(n(23),n(281)),b=n(384),E=(n(36),i.ID_ATTRIBUTE_NAME),C=i.ROOT_ATTRIBUTE_NAME,S=1,D=9,w=11,T={};function x(e){return e?e.nodeType===D?e.documentElement:e.firstChild:null}function R(e,t,n,r,o){var i;if(f.logTopLevelRenders){var a=e._currentElement.props.child.type;i="React mount: "+("string"==typeof a?a:a.displayName||a.name),console.time(i)}var s=m.mountComponent(e,n,null,u(e,t),o,0);i&&console.timeEnd(i),e._renderedComponent._topLevelWrapper=e,L._mountImageIntoNode(s,t,e,r,n)}function k(e,t,n,r){var o=_.ReactReconcileTransaction.getPooled(!n&&c.useCreateElement);o.perform(R,null,e,t,o,n,r),_.ReactReconcileTransaction.release(o)}function N(e,t,n){for(0,m.unmountComponent(e,n),t.nodeType===D&&(t=t.documentElement);t.lastChild;)t.removeChild(t.lastChild)}function I(e){var t=x(e);if(t){var n=l.getInstanceFromNode(t);return!(!n||!n._hostParent)}}function O(e){return!(!e||e.nodeType!==S&&e.nodeType!==D&&e.nodeType!==w)}function A(e){var t=function(e){var t=x(e),n=t&&l.getInstanceFromNode(t);return n&&!n._hostParent?n:null}(e);return t?t._hostContainerInfo._topLevelWrapper:null}var M=1,P=function(){this.rootID=M++};P.prototype.isReactComponent={},P.prototype.render=function(){return this.props.child},P.isReactTopLevelWrapper=!0;var L={TopLevelWrapper:P,_instancesByReactRootID:T,scrollMonitor:function(e,t){t()},_updateRootComponent:function(e,t,n,r,o){return L.scrollMonitor(r,function(){h.enqueueElementInternal(e,t,n),o&&h.enqueueCallbackInternal(e,o)}),e},_renderNewRootComponent:function(e,t,n,o){O(t)||r("37"),s.ensureScrollValueMonitoring();var i=v(e,!1);_.batchedUpdates(k,i,t,n,o);var a=i._instance.rootID;return T[a]=i,i},renderSubtreeIntoContainer:function(e,t,n,o){return null!=e&&d.has(e)||r("38"),L._renderSubtreeIntoContainer(e,t,n,o)},_renderSubtreeIntoContainer:function(e,t,n,o){h.validateCallback(o,"ReactDOM.render"),a.isValidElement(t)||r("39","string"==typeof t?" Instead of passing a string like 'div', pass React.createElement('div') or <div />.":"function"==typeof t?" Instead of passing a class like Foo, pass React.createElement(Foo) or <Foo />.":null!=t&&void 0!==t.props?" This may be caused by unintentionally loading two independent copies of React.":"");var i,s=a.createElement(P,{child:t});if(e){var l=d.get(e);i=l._processChildContext(l._context)}else i=g;var u=A(n);if(u){var c=u._currentElement.props.child;if(b(c,t)){var f=u._renderedComponent.getPublicInstance(),p=o&&function(){o.call(f)};return L._updateRootComponent(u,s,i,n,p),f}L.unmountComponentAtNode(n)}var m=x(n),_=m&&!!function(e){return e.getAttribute&&e.getAttribute(E)||""}(m),v=I(n),y=_&&!u&&!v,C=L._renderNewRootComponent(s,n,y,i)._renderedComponent.getPublicInstance();return o&&o.call(C),C},render:function(e,t,n){return L._renderSubtreeIntoContainer(null,e,t,n)},unmountComponentAtNode:function(e){O(e)||r("40");var t=A(e);if(!t){I(e),1===e.nodeType&&e.hasAttribute(C);return!1}return delete T[t._instance.rootID],_.batchedUpdates(N,t,e,!1),!0},_mountImageIntoNode:function(e,t,n,i,a){if(O(t)||r("41"),i){var s=x(t);if(p.canReuseMarkup(e,s))return void l.precacheNode(n,s);var u=s.getAttribute(p.CHECKSUM_ATTR_NAME);s.removeAttribute(p.CHECKSUM_ATTR_NAME);var c=s.outerHTML;s.setAttribute(p.CHECKSUM_ATTR_NAME,u);var f=e,d=function(e,t){for(var n=Math.min(e.length,t.length),r=0;r<n;r++)if(e.charAt(r)!==t.charAt(r))return r;return e.length===t.length?-1:n}(f,c),m=" (client) "+f.substring(d-20,d+20)+"\n (server) "+c.substring(d-20,d+20);t.nodeType===D&&r("42",m)}if(t.nodeType===D&&r("43"),a.useCreateElement){for(;t.lastChild;)t.removeChild(t.lastChild);o.insertTreeBefore(t,e,null)}else y(t,e),l.precacheNode(n,t.firstChild)}};e.exports=L},function(e,t,n){"use strict";n(387);var r=9;e.exports=function(e,t){return{_topLevelWrapper:e,_idCounter:1,_ownerDocument:t?t.nodeType===r?t:t.ownerDocument:null,_node:t,_tag:t?t.nodeName.toLowerCase():null,_namespaceURI:t?t.namespaceURI:null}}},function(e,t,n){"use strict";var r=n(1055),o=/\/?>/,i=/^<\!\-\-/,a={CHECKSUM_ATTR_NAME:"data-react-checksum",addChecksumToMarkup:function(e){var t=r(e);return i.test(e)?e:e.replace(o," "+a.CHECKSUM_ATTR_NAME+'="'+t+'"$&')},canReuseMarkup:function(e,t){var n=t.getAttribute(a.CHECKSUM_ATTR_NAME);return n=n&&parseInt(n,10),r(e)===n}};e.exports=a},function(e,t,n){"use strict";e.exports="15.6.2"},function(e,t,n){"use strict";var r=n(551);e.exports=function(e){for(var t;(t=e._renderedNodeType)===r.COMPOSITE;)e=e._renderedComponent;return t===r.HOST?e._renderedComponent:t===r.EMPTY?null:void 0}},function(e,t){!function(e){"use strict";if(!e.fetch){var t={searchParams:"URLSearchParams"in e,iterable:"Symbol"in e&&"iterator"in Symbol,blob:"FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),formData:"FormData"in e,arrayBuffer:"ArrayBuffer"in e};if(t.arrayBuffer)var n=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],r=function(e){return e&&DataView.prototype.isPrototypeOf(e)},o=ArrayBuffer.isView||function(e){return e&&n.indexOf(Object.prototype.toString.call(e))>-1};c.prototype.append=function(e,t){e=s(e),t=l(t);var n=this.map[e];n||(n=[],this.map[e]=n),n.push(t)},c.prototype.delete=function(e){delete this.map[s(e)]},c.prototype.get=function(e){var t=this.map[s(e)];return t?t[0]:null},c.prototype.getAll=function(e){return this.map[s(e)]||[]},c.prototype.has=function(e){return this.map.hasOwnProperty(s(e))},c.prototype.set=function(e,t){this.map[s(e)]=[l(t)]},c.prototype.forEach=function(e,t){Object.getOwnPropertyNames(this.map).forEach(function(n){this.map[n].forEach(function(r){e.call(t,r,n,this)},this)},this)},c.prototype.keys=function(){var e=[];return this.forEach(function(t,n){e.push(n)}),u(e)},c.prototype.values=function(){var e=[];return this.forEach(function(t){e.push(t)}),u(e)},c.prototype.entries=function(){var e=[];return this.forEach(function(t,n){e.push([n,t])}),u(e)},t.iterable&&(c.prototype[Symbol.iterator]=c.prototype.entries);var i=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];_.prototype.clone=function(){return new _(this,{body:this._bodyInit})},h.call(_.prototype),h.call(v.prototype),v.prototype.clone=function(){return new v(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new c(this.headers),url:this.url})},v.error=function(){var e=new v(null,{status:0,statusText:""});return e.type="error",e};var a=[301,302,303,307,308];v.redirect=function(e,t){if(-1===a.indexOf(t))throw new RangeError("Invalid status code");return new v(null,{status:t,headers:{location:e}})},e.Headers=c,e.Request=_,e.Response=v,e.fetch=function(e,n){return new Promise(function(r,o){var i=new _(e,n),a=new XMLHttpRequest;a.onload=function(){var e={status:a.status,statusText:a.statusText,headers:function(e){var t=new c;return e.split("\r\n").forEach(function(e){var n=e.split(":"),r=n.shift().trim();if(r){var o=n.join(":").trim();t.append(r,o)}}),t}(a.getAllResponseHeaders()||"")};e.url="responseURL"in a?a.responseURL:e.headers.get("X-Request-URL");var t="response"in a?a.response:a.responseText;r(new v(t,e))},a.onerror=function(){o(new TypeError("Network request failed"))},a.ontimeout=function(){o(new TypeError("Network request failed"))},a.open(i.method,i.url,!0),"include"===i.credentials&&(a.withCredentials=!0),"responseType"in a&&t.blob&&(a.responseType="blob"),i.headers.forEach(function(e,t){a.setRequestHeader(t,e)}),a.send(void 0===i._bodyInit?null:i._bodyInit)})},e.fetch.polyfill=!0}function s(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function l(e){return"string"!=typeof e&&(e=String(e)),e}function u(e){var n={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return t.iterable&&(n[Symbol.iterator]=function(){return n}),n}function c(e){this.map={},e instanceof c?e.forEach(function(e,t){this.append(t,e)},this):e&&Object.getOwnPropertyNames(e).forEach(function(t){this.append(t,e[t])},this)}function f(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function d(e){return new Promise(function(t,n){e.onload=function(){t(e.result)},e.onerror=function(){n(e.error)}})}function p(e){var t=new FileReader,n=d(t);return t.readAsArrayBuffer(e),n}function m(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function h(){return this.bodyUsed=!1,this._initBody=function(e){if(this._bodyInit=e,e)if("string"==typeof e)this._bodyText=e;else if(t.blob&&Blob.prototype.isPrototypeOf(e))this._bodyBlob=e;else if(t.formData&&FormData.prototype.isPrototypeOf(e))this._bodyFormData=e;else if(t.searchParams&&URLSearchParams.prototype.isPrototypeOf(e))this._bodyText=e.toString();else if(t.arrayBuffer&&t.blob&&r(e))this._bodyArrayBuffer=m(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer]);else{if(!t.arrayBuffer||!ArrayBuffer.prototype.isPrototypeOf(e)&&!o(e))throw new Error("unsupported BodyInit type");this._bodyArrayBuffer=m(e)}else this._bodyText="";this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):t.searchParams&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},t.blob&&(this.blob=function(){var e=f(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?f(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(p)}),this.text=function(){var e=f(this);if(e)return e;if(this._bodyBlob)return function(e){var t=new FileReader,n=d(t);return t.readAsText(e),n}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),n=new Array(t.length),r=0;r<t.length;r++)n[r]=String.fromCharCode(t[r]);return n.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},t.formData&&(this.formData=function(){return this.text().then(g)}),this.json=function(){return this.text().then(JSON.parse)},this}function _(e,t){var n=(t=t||{}).body;if("string"==typeof e)this.url=e;else{if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new c(e.headers)),this.method=e.method,this.mode=e.mode,n||null==e._bodyInit||(n=e._bodyInit,e.bodyUsed=!0)}if(this.credentials=t.credentials||this.credentials||"omit",!t.headers&&this.headers||(this.headers=new c(t.headers)),this.method=function(e){var t=e.toUpperCase();return i.indexOf(t)>-1?t:e}(t.method||this.method||"GET"),this.mode=t.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(n)}function g(e){var t=new FormData;return e.trim().split("&").forEach(function(e){if(e){var n=e.split("="),r=n.shift().replace(/\+/g," "),o=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(r),decodeURIComponent(o))}}),t}function v(e,t){t||(t={}),this.type="default",this.status="status"in t?t.status:200,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new c(t.headers),this.url=t.url||"",this._initBody(e)}}("undefined"!=typeof self?self:this)},function(e,t,n){"use strict";(function(t){var r=function(e){return e&&e.__esModule?e:{default:e}}(n(9));var o=n(17),i=o.Room,a=n(127);function s(t,n){this.client=t,this.groupRoomId=n,this.confUserId=e.exports.getConferenceUserIdForRoom(this.groupRoomId)}s.prototype.setup=function(){var e=this;return this._joinConferenceUser().then(function(){return e._getConferenceUserRoom()}).then(function(t){var n=o.createNewMatrixCall(e.client,t.roomId);return n.confUserId=e.confUserId,n.groupRoomId=e.groupRoomId,n})},s.prototype._joinConferenceUser=function(){var e=this.client.getRoom(this.groupRoomId);if(!e)return r.default.reject("Bad group room ID");var t=e.getMember(this.confUserId);return t&&"join"===t.membership?r.default.resolve():this.client.invite(this.groupRoomId,this.confUserId)},s.prototype._getConferenceUserRoom=function(){for(var e=this.client.getRooms(),t=null,n=0;n<e.length;n++){var o=e[n].getMember(this.confUserId);if(o&&"join"===o.membership&&2===e[n].getJoinedMemberCount()){t=e[n];break}}return t?r.default.resolve(t):this.client.createRoom({preset:"private_chat",invite:[this.confUserId]}).then(function(e){return new i(e.room_id,null,client.getUserId())})},e.exports.isConferenceUser=function(e){if(0!==e.indexOf("@fs_"))return!1;var n=e.split(":")[0].substring(1+"fs_".length);if(n){var r=new t(n,"base64").toString();return/^!.+:.+/.test(r)}return!1},e.exports.getConferenceUserIdForRoom=function(e){return"@fs_"+new t(e).toString("base64").replace(/=/g,"")+":matrix.org"},e.exports.createNewMatrixCall=function(e,t){return new s(e,t).setup()},e.exports.getConferenceCallForRoom=function(t){var n=a.getAnyActiveCall();if(n&&n.confUserId&&e.exports.getConferenceUserIdForRoom(t)===n.confUserId)return n;return null},e.exports.ConferenceCall=s,e.exports.slot="conference"}).call(this,n(193).Buffer)},function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},function(e,t,n){"use strict";e.exports={makeHtmlMessage:function(e,t){return{msgtype:"m.text",format:"org.matrix.custom.html",body:e,formatted_body:t}},makeHtmlNotice:function(e,t){return{msgtype:"m.notice",format:"org.matrix.custom.html",body:e,formatted_body:t}},makeHtmlEmote:function(e,t){return{msgtype:"m.emote",format:"org.matrix.custom.html",body:e,formatted_body:t}},makeTextMessage:function(e){return{msgtype:"m.text",body:e}},makeNotice:function(e){return{msgtype:"m.notice",body:e}},makeEmoteMessage:function(e){return{msgtype:"m.emote",body:e}}}},function(e,t,n){"use strict";var r=i(n(40)),o=i(n(9));function i(e){return e&&e.__esModule?e:{default:e}}var a=n(29),s=n(284);e.exports.MatrixInMemoryStore=function(e){e=e||{},this.rooms={},this.groups={},this.users={},this.syncToken=null,this.filters={},this.accountData={},this.localStorage=e.localStorage,this._oobMembers={},this._clientOptions={}},e.exports.MatrixInMemoryStore.prototype={getSyncToken:function(){return this.syncToken},isNewlyCreated:function(){return o.default.resolve(!0)},setSyncToken:function(e){this.syncToken=e},storeGroup:function(e){this.groups[e.groupId]=e},getGroup:function(e){return this.groups[e]||null},getGroups:function(){return a.values(this.groups)},storeRoom:function(e){this.rooms[e.roomId]=e,e.currentState.on("RoomState.members",this._onRoomMember.bind(this));var t=this;e.currentState.getMembers().forEach(function(n){t._onRoomMember(null,e.currentState,n)})},_onRoomMember:function(e,t,n){if("invite"!==n.membership){var r=this.users[n.userId]||new s(n.userId);n.name&&(r.setDisplayName(n.name),n.events.member&&r.setRawDisplayName(n.events.member.getDirectionalContent().displayname)),n.events.member&&n.events.member.getContent().avatar_url&&r.setAvatarUrl(n.events.member.getContent().avatar_url),this.users[r.userId]=r}},getRoom:function(e){return this.rooms[e]||null},getRooms:function(){return a.values(this.rooms)},removeRoom:function(e){this.rooms[e]&&this.rooms[e].removeListener("RoomState.members",this._onRoomMember),delete this.rooms[e]},getRoomSummaries:function(){return a.map(a.values(this.rooms),function(e){return e.summary})},storeUser:function(e){this.users[e.userId]=e},getUser:function(e){return this.users[e]||null},getUsers:function(){return a.values(this.users)},scrollback:function(e,t){return[]},storeEvents:function(e,t,n,r){},storeFilter:function(e){e&&(this.filters[e.userId]||(this.filters[e.userId]={}),this.filters[e.userId][e.filterId]=e)},getFilter:function(e,t){return this.filters[e]&&this.filters[e][t]?this.filters[e][t]:null},getFilterIdByName:function(e){if(!this.localStorage)return null;try{return this.localStorage.getItem("mxjssdk_memory_filter_"+e)}catch(e){}return null},setFilterIdByName:function(e,t){if(this.localStorage)try{this.localStorage.setItem("mxjssdk_memory_filter_"+e,t)}catch(e){}},storeAccountDataEvents:function(e){var t=this;e.forEach(function(e){t.accountData[e.getType()]=e})},getAccountData:function(e){return this.accountData[e]},setSyncData:function(e){return o.default.resolve()},wantsSave:function(){return!1},save:function(){},startup:function(){return o.default.resolve()},getSavedSync:function(){return o.default.resolve(null)},getSavedSyncToken:function(){return o.default.resolve(null)},deleteAllData:function(){return this.rooms={},this.users={},this.syncToken=null,this.filters={},this.accountData={},o.default.resolve()},getOutOfBandMembers:function(e){return o.default.resolve(this._oobMembers[e]||null)},setOutOfBandMembers:function(e,t){return this._oobMembers[e]=t,o.default.resolve()},getClientOptions:function(){return o.default.resolve(this._clientOptions)},storeClientOptions:function(e){return this._clientOptions=(0,r.default)({},e),o.default.resolve()}}},function(e,t,n){"use strict";(function(t){var r=d(n(20)),o=d(n(149)),i=d(n(9)),a=n(570),s=d(n(29)),l=d(n(396)),u=d(n(1065)),c=d(n(284)),f=n(170);function d(e){return e&&e.__esModule?e:{default:e}}var p=function(e){if(a.MatrixInMemoryStore.call(this,e),!e.indexedDB)throw new Error("Missing required option: indexedDB");if(e.workerScript){var n=e.workerApi;n||(n=t.Worker),this.backend=new u.default(e.workerScript,e.dbName,n)}else this.backend=new l.default(e.indexedDB,e.dbName);this.startedUp=!1,this._syncTs=0,this._userModifiedMap={}};s.default.inherits(p,a.MatrixInMemoryStore),p.prototype.startup=function(){var e=this;return this.startedUp?(console.log("IndexedDBStore.startup: already started"),i.default.resolve()):(console.log("IndexedDBStore.startup: connecting to backend"),this.backend.connect().then(function(){return console.log("IndexedDBStore.startup: loading presence events"),e.backend.getUserPresenceEvents()}).then(function(t){console.log("IndexedDBStore.startup: processing presence events"),t.forEach(function(t){var n=(0,o.default)(t,2),r=n[0],i=n[1],a=new c.default(r);i&&a.setPresenceEvent(new f.MatrixEvent(i)),e._userModifiedMap[a.userId]=a.getLastModifiedTime(),e.storeUser(a)})}))},p.prototype.getSavedSync=function(){return this.backend.getSavedSync()},p.prototype.isNewlyCreated=function(){return this.backend.isNewlyCreated()},p.prototype.getSavedSyncToken=function(){return this.backend.getNextBatchToken()},p.prototype.deleteAllData=function(){return a.MatrixInMemoryStore.prototype.deleteAllData.call(this),this.backend.clearDatabase().then(function(){console.log("Deleted indexeddb data.")},function(e){throw console.error("Failed to delete indexeddb data: "+e),e})},p.prototype.wantsSave=function(){return Date.now()-this._syncTs>3e5},p.prototype.save=function(){return this.wantsSave()?this._reallySave():i.default.resolve()},p.prototype._reallySave=function(){this._syncTs=Date.now();var e=[],t=!0,n=!1,o=void 0;try{for(var i,a=(0,r.default)(this.getUsers());!(t=(i=a.next()).done);t=!0){var s=i.value;this._userModifiedMap[s.userId]!==s.getLastModifiedTime()&&(s.events.presence&&(e.push([s.userId,s.events.presence.event]),this._userModifiedMap[s.userId]=s.getLastModifiedTime()))}}catch(e){n=!0,o=e}finally{try{!t&&a.return&&a.return()}finally{if(n)throw o}}return this.backend.syncToDatabase(e).catch(function(e){console.error("sync fail:",e)})},p.prototype.setSyncData=function(e){return this.backend.setSyncData(e)},p.prototype.getOutOfBandMembers=function(e){return this.backend.getOutOfBandMembers(e)},p.prototype.setOutOfBandMembers=function(e,t){return this.backend.setOutOfBandMembers(e,t)},p.prototype.clearOutOfBandMembers=function(e){return this.backend.clearOutOfBandMembers(e)},p.prototype.getClientOptions=function(){return this.backend.getClientOptions()},p.prototype.storeClientOptions=function(e){return this.backend.storeClientOptions(e)},e.exports.IndexedDBStore=p}).call(this,n(15))},function(e,t,n){"use strict";var r=s(n(67)),o=s(n(1068)),i=s(n(1071)),a=s(n(1074));function s(e){return e&&e.__esModule?e:{default:e}}function l(e,t){var n="Store is invalid because "+e+", please stop the client, delete all data and start the client again",r=(0,a.default)(Error,[n]);return(0,i.default)(r,(0,o.default)(this)),r.reason=e,r.value=t,r}l.TOGGLED_LAZY_LOADING="TOGGLED_LAZY_LOADING",l.prototype=(0,r.default)(Error.prototype,{constructor:{value:Error,enumerable:!1,writable:!0,configurable:!0}}),(0,i.default)(l,Error),e.exports.InvalidStoreError=l},function(e,t,n){var r=n(35),o=n(52),i=function(e,t){if(o(e),!r(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,r){try{(r=n(66)(Function.call,n(224).f(Object.prototype,"__proto__").set,2))(e,[]),t=!(e instanceof Array)}catch(e){t=!0}return function(e,n){return i(e,n),t?e.__proto__=n:r(e,n),e}}({},!1):void 0),check:i}},function(e,t){e.exports=function(e,t,n){var r=void 0===n;switch(t.length){case 0:return r?e():e.call(n);case 1:return r?e(t[0]):e.call(n,t[0]);case 2:return r?e(t[0],t[1]):e.call(n,t[0],t[1]);case 3:return r?e(t[0],t[1],t[2]):e.call(n,t[0],t[1],t[2]);case 4:return r?e(t[0],t[1],t[2],t[3]):e.call(n,t[0],t[1],t[2],t[3])}return e.apply(n,t)}},function(e,t,n){"use strict";(function(t){var r=g(n(64)),o=g(n(149)),i=g(n(576)),a=g(n(40)),s=g(n(31)),l=g(n(14)),u=g(n(20)),c=g(n(138)),f=n(9),d=g(f),p=g(n(19)),m=function(){var e=(0,f.coroutine)(p.default.mark(function e(t,n,r,o,i,a){var s;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t._crypto){e.next=2;break}throw new Error("End-to-End encryption disabled");case 2:return e.next=4,(0,f.resolve)(t._crypto.setDeviceVerification(n,r,o,i,a));case 4:s=e.sent,t.emit("deviceVerificationChanged",n,r,s);case 6:case"end":return e.stop()}},e,this)}));return function(t,n,r,o,i,a){return e.apply(this,arguments)}}(),h=g(n(584)),_=g(n(1089));function g(e){return e&&e.__esModule?e:{default:e}}var v=n(287),y=n(55).EventEmitter,b=n(89),E=n(286),C=n(170).MatrixEvent,S=n(170).EventStatus,D=n(172),w=n(1103),T=n(1105),x=n(232),R=n(29),k=n(288),N=n(403),I=n(1107),O=n(1117),A=E.MatrixError,M=n(569);d.default.config({warnings:!1});var P=!1;try{var L=n(1118);P=!0}catch(e){console.warn("Unable to load crypto module: crypto will be disabled: "+e)}function F(e){e.baseUrl&&e.baseUrl.endsWith("/")&&(e.baseUrl=e.baseUrl.substr(0,e.baseUrl.length-1)),e.idBaseUrl&&e.idBaseUrl.endsWith("/")&&(e.idBaseUrl=e.idBaseUrl.substr(0,e.idBaseUrl.length-1)),O.call(this,e),this.reEmitter=new h.default(this),this.store=e.store||new T,this.deviceId=e.deviceId||null;var t=e.userId||null;if(this.credentials={userId:t},this.scheduler=e.scheduler,this.scheduler){var n=this;this.scheduler.setProcessFunction(function(e){var t=n.getRoom(e.getRoomId());return e.status!==S.SENDING&&j(t,e,S.SENDING),B(n,e)})}this.clientRunning=!1,this.callList={};var r=x.createNewMatrixCall(this);this._supportsVoip=!1,r&&(!function(e){var t={},n=[],r=!1;function o(n){var r=n.getContent(),o=r.call_id?e.callList[r.call_id]:void 0,i=void 0;if("m.call.invite"===n.getType()){if(n.getSender()===e.credentials.userId)return;if(n.getAge()>r.lifetime)return;if(o&&"ended"===o.state)return;if(o&&console.log("WARN: Already have a MatrixCall with id %s but got an invite. Clobbering.",r.call_id),!(o=x.createNewMatrixCall(e,n.getRoomId(),{forceTURN:e._forceTURN})))return void console.log("Incoming call ID "+r.call_id+" but this client doesn't support WebRTC");if(o.callId=r.call_id,o._initWithInvite(n),e.callList[o.callId]=o,t[o.callId])for(i=0;i<t[o.callId].length;i++)o._gotRemoteIceCandidate(t[o.callId][i]);var a=void 0,s=R.values(e.callList);for(i=0;i<s.length;++i){var l=s[i];if(o.roomId===l.roomId&&"outbound"===l.direction&&-1!==["wait_local_media","create_offer","invite_sent"].indexOf(l.state)){a=l;break}}a?"wait_local_media"===a.state||"create_offer"===a.state||a.callId>o.callId?(console.log("Glare detected: answering incoming call "+o.callId+" and canceling outgoing call "+a.callId),a._replacedBy(o),o.answer()):(console.log("Glare detected: rejecting incoming call "+o.callId+" and keeping outgoing call "+a.callId),o.hangup()):e.emit("Call.incoming",o)}else if("m.call.answer"===n.getType()){if(!o)return;n.getSender()===e.credentials.userId?"ringing"===o.state&&o._onAnsweredElsewhere(r):o._receivedAnswer(r)}else if("m.call.candidates"===n.getType()){if(n.getSender()===e.credentials.userId)return;if(o)for(i=0;i<r.candidates.length;i++)o._gotRemoteIceCandidate(r.candidates[i]);else t[r.call_id]||(t[r.call_id]=[]),t[r.call_id]=t[r.call_id].concat(r.candidates)}else"m.call.hangup"===n.getType()&&(o?"ended"!==o.state&&(o._onHangupReceived(r),delete e.callList[r.call_id]):(o=x.createNewMatrixCall(e,n.getRoomId()))&&(o.callId=r.call_id,o._initWithHangup(n),e.callList[r.call_id]=o))}e.on("sync",function(e){if("PREPARED"===e){r=!0;for(var t={},i=n.length-1;i>=0;i--){var a=n[i];"m.call.answer"!==a.getType()&&"m.call.hangup"!==a.getType()||(t[a.getContent().call_id]="yep")}n.forEach(function(e){t[e.getContent().call_id]||o(e)}),n=[]}}),e.on("event",function e(t){if(0!==t.getType().indexOf("m.call."))return void((t.isBeingDecrypted()||t.isDecryptionFailure())&&t.once("Event.decrypted",e));if(!r)return void n.push(t);o(t)})}(this),this._supportsVoip=!0),this._syncingRetry=null,this._syncApi=null,this._peekSync=null,this._isGuest=!1,this._ongoingScrollbacks={},this.timelineSupport=Boolean(e.timelineSupport),this.urlPreviewCache={},this._notifTimelineSet=null,this._crypto=null,this._cryptoStore=e.cryptoStore,this._sessionStore=e.sessionStore,this._forceTURN=e.forceTURN||!1,P&&(this.olmVersion=L.getOlmVersion()),this._roomList=new _.default(this._cryptoStore,this._sessionStore),this._pushProcessor=new v(this),this._serverSupportsLazyLoading=null}function U(e,t,n,r){return d.default.resolve().then(function(){var r=function(e,t,n){if(t.isEncrypted())return null;if(!e.isRoomEncrypted(t.getRoomId()))return null;if(!e._crypto)throw new Error("This room is configured to use encryption, but your client does not support encryption.");return e._crypto.encryptEvent(t,n)}(e,n,t);return r?(j(t,n,S.ENCRYPTING),r.then(function(){j(t,n,S.SENDING)})):null}).then(function(){var r=void 0;return e.scheduler&&(r=e.scheduler.queueEvent(n))&&e.scheduler.getQueueForEvent(n).length>1&&j(t,n,S.QUEUED),r||(r=B(e,n)),r}).then(function(e){return t&&t.updatePendingEvent(n,S.SENT,e.event_id),r&&r(null,e),e},function(e){console.error("Error sending event",e.stack||e);try{n.error=e,j(t,n,S.NOT_SENT),e.event=n,r&&r(e)}catch(t){console.error("Exception in error handler!",t.stack||e)}throw e})}function j(e,t,n){e?e.updatePendingEvent(t,n):t.status=n}function B(e,t){var n=t._txnId?t._txnId:e.makeTxnId(),r={$roomId:t.getRoomId(),$eventType:t.getWireType(),$stateKey:t.getStateKey(),$txnId:n},o=void 0;if(t.isState()){var i="/rooms/$roomId/state/$eventType";t.getStateKey()&&t.getStateKey().length>0&&(i="/rooms/$roomId/state/$eventType/$stateKey"),o=R.encodeUri(i,r)}else o=R.encodeUri("/rooms/$roomId/send/$eventType/$txnId",r);return e._http.authedRequest(void 0,"PUT",o,void 0,t.getWireContent()).then(function(e){return console.log("Event sent to "+t.getRoomId()+" with event id "+e.event_id),e})}function G(e,t,n,r,o,i){R.isFunction(o)&&(i=o,o=void 0);var a=R.encodeUri("/rooms/$room_id/$membership",{$room_id:t,$membership:r});return e._http.authedRequest(i,"POST",a,void 0,{user_id:n,reason:o})}function q(e,t,n,r){var o=R.encodeUri("/presence/list/$userId",{$userId:t.credentials.userId});return t._http.authedRequest(e,r,o,void 0,n)}function V(e,t,n){e&&e(n),t.reject(n)}function H(e,t,n){e&&e(null,n),t.resolve(n)}function Y(e){return function(t){var n=new C(t);return n.isEncrypted()&&(e.reEmitter.reEmit(n,["Event.decrypted"]),n.attemptDecryption(e._crypto)),n}}R.inherits(F,y),R.extend(F.prototype,O.prototype),F.prototype.clearStores=function(){if(this._clientRunning)throw new Error("Cannot clear stores while client is running");var e=[];return e.push(this.store.deleteAllData()),this._cryptoStore&&e.push(this._cryptoStore.deleteAllData()),d.default.all(e)},F.prototype.getUserId=function(){return this.credentials&&this.credentials.userId?this.credentials.userId:null},F.prototype.getDomain=function(){return this.credentials&&this.credentials.userId?this.credentials.userId.replace(/^.*?:/,""):null},F.prototype.getUserIdLocalpart=function(){return this.credentials&&this.credentials.userId?this.credentials.userId.split(":")[0].substring(1):null},F.prototype.getDeviceId=function(){return this.deviceId},F.prototype.supportsVoip=function(){return this._supportsVoip},F.prototype.setForceTURN=function(e){this._forceTURN=e},F.prototype.getSyncState=function(){return this._syncApi?this._syncApi.getSyncState():null},F.prototype.getSyncStateData=function(){return this._syncApi?this._syncApi.getSyncStateData():null},F.prototype.isGuest=function(){return this._isGuest},F.prototype.getScheduler=function(){return this.scheduler},F.prototype.setGuest=function(e){this._isGuest=e},F.prototype.retryImmediately=function(){return this._syncApi.retryImmediately()},F.prototype.getNotifTimelineSet=function(){return this._notifTimelineSet},F.prototype.setNotifTimelineSet=function(e){this._notifTimelineSet=e},F.prototype.initCrypto=(0,f.coroutine)(p.default.mark(function e(){var t,n;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._crypto){e.next=3;break}return console.warn("Attempt to re-initialise e2e encryption on MatrixClient"),e.abrupt("return");case 3:if(this._sessionStore){e.next=5;break}throw new Error("Cannot enable encryption: no sessionStore provided");case 5:if(this._cryptoStore){e.next=7;break}throw new Error("Cannot enable encryption: no cryptoStore provided");case 7:return e.next=9,(0,f.resolve)(this._roomList.init());case 9:if(P){e.next=11;break}throw new Error("End-to-end encryption not supported in this js-sdk build: did you remember to load the olm library?");case 11:if(null!==(t=this.getUserId())){e.next=14;break}throw new Error("Cannot enable encryption on MatrixClient with unknown userId: ensure userId is passed in createClient().");case 14:if(null!==this.deviceId){e.next=16;break}throw new Error("Cannot enable encryption on MatrixClient with unknown deviceId: ensure deviceId is passed in createClient().");case 16:return n=new L(this,this._sessionStore,t,this.deviceId,this.store,this._cryptoStore,this._roomList),this.reEmitter.reEmit(n,["crypto.roomKeyRequest","crypto.roomKeyRequestCancellation","crypto.warning"]),e.next=20,(0,f.resolve)(n.init());case 20:n.registerEventHandlers(this),this._crypto=n;case 22:case"end":return e.stop()}},e,this)})),F.prototype.isCryptoEnabled=function(){return null!==this._crypto},F.prototype.getDeviceEd25519Key=function(){return this._crypto?this._crypto.getDeviceEd25519Key():null},F.prototype.uploadKeys=function(){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.uploadDeviceKeys()},F.prototype.downloadKeys=function(e,t){return null===this._crypto?d.default.reject(new Error("End-to-end encryption disabled")):this._crypto.downloadKeys(e,t)},F.prototype.getStoredDevicesForUser=function(){var e=(0,f.method)(function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.getStoredDevicesForUser(e)||[]});return function(t){return e.apply(this,arguments)}}(),F.prototype.getStoredDevice=function(){var e=(0,f.method)(function(e,t){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.getStoredDevice(e,t)||null});return function(t,n){return e.apply(this,arguments)}}(),F.prototype.setDeviceVerified=function(e,t,n){return void 0===n&&(n=!0),m(this,e,t,n,null)},F.prototype.setDeviceBlocked=function(e,t,n){return void 0===n&&(n=!0),m(this,e,t,null,n)},F.prototype.setDeviceKnown=function(e,t,n){return void 0===n&&(n=!0),m(this,e,t,null,null,n)},F.prototype.setGlobalBlacklistUnverifiedDevices=function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");this._crypto.setGlobalBlacklistUnverifiedDevices(e)},F.prototype.getGlobalBlacklistUnverifiedDevices=function(){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.getGlobalBlacklistUnverifiedDevices()},F.prototype.getEventSenderDeviceInfo=function(){var e=(0,f.method)(function(e){return this._crypto?this._crypto.getEventSenderDeviceInfo(e):null});return function(t){return e.apply(this,arguments)}}(),F.prototype.isEventSenderVerified=function(){var e=(0,f.coroutine)(p.default.mark(function e(t){var n;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,f.resolve)(this.getEventSenderDeviceInfo(t));case 2:if(n=e.sent){e.next=5;break}return e.abrupt("return",!1);case 5:return e.abrupt("return",n.isVerified());case 6:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),F.prototype.cancelAndResendEventRoomKeyRequest=function(e){e.cancelAndResendKeyRequest(this._crypto)},F.prototype.setRoomEncryption=function(e,t){if(!this._crypto)throw new Error("End-to-End encryption disabled");return this._crypto.setRoomEncryption(e,t)},F.prototype.isRoomEncrypted=function(e){var t=this.getRoom(e);return!!t&&(!!t.currentState.getStateEvents("m.room.encryption","")||this._roomList.isRoomEncrypted(e))},F.prototype.forceDiscardSession=function(e){if(!this._crypto)throw new Error("End-to-End encryption disabled");this._crypto.forceDiscardSession(e)},F.prototype.exportRoomKeys=function(){return this._crypto?this._crypto.exportRoomKeys():d.default.reject(new Error("End-to-end encryption disabled"))},F.prototype.importRoomKeys=function(e){if(!this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.importRoomKeys(e)},F.prototype.getGroup=function(e){return this.store.getGroup(e)},F.prototype.getGroups=function(){return this.store.getGroups()},F.prototype.getMediaConfig=function(e){return this._http.requestWithPrefix(e,"GET","/config",void 0,void 0,E.PREFIX_MEDIA_R0)},F.prototype.getRoom=function(e){return this.store.getRoom(e)},F.prototype.getRooms=function(){return this.store.getRooms()},F.prototype.getVisibleRooms=function(){var e=this.store.getRooms(),t=new c.default,n=!0,r=!1,o=void 0;try{for(var i,a=(0,u.default)(e);!(n=(i=a.next()).done);n=!0){var s=i.value.currentState.getStateEvents("m.room.create","");if(s){var l=s.getContent().predecessor;l&&l.room_id&&t.add(l.room_id)}}}catch(e){r=!0,o=e}finally{try{!n&&a.return&&a.return()}finally{if(r)throw o}}return e.filter(function(e){return!e.currentState.getStateEvents("m.room.tombstone","")||!t.has(e.roomId)})},F.prototype.getUser=function(e){return this.store.getUser(e)},F.prototype.getUsers=function(){return this.store.getUsers()},F.prototype.setAccountData=function(e,t,n){var r=R.encodeUri("/user/$userId/account_data/$type",{$userId:this.credentials.userId,$type:e});return this._http.authedRequest(n,"PUT",r,void 0,t)},F.prototype.getAccountData=function(e){return this.store.getAccountData(e)},F.prototype.getIgnoredUsers=function(){var e=this.getAccountData("m.ignored_user_list");return e&&e.getContent()&&e.getContent().ignored_users?(0,l.default)(e.getContent().ignored_users):[]},F.prototype.setIgnoredUsers=function(e,t){var n={ignored_users:{}};return e.map(function(e){return n.ignored_users[e]={}}),this.setAccountData("m.ignored_user_list",n,t)},F.prototype.isUserIgnored=function(e){return-1!==this.getIgnoredUsers().indexOf(e)},F.prototype.joinRoom=function(e,t,n){if(R.isFunction(t))throw new Error("Expected 'opts' object, got function.");void 0===(t=t||{}).syncRoom&&(t.syncRoom=!0);var r=this.getRoom(e);if(r&&r.hasMembershipState(this.credentials.userId,"join"))return d.default.resolve(r);var o=d.default.resolve();t.inviteSignUrl&&(o=this._http.requestOtherUrl(void 0,"POST",t.inviteSignUrl,{mxid:this.credentials.userId}));var i=d.default.defer(),a=this;return o.then(function(t){var n={};t&&(n.third_party_signed=t);var r=R.encodeUri("/join/$roomid",{$roomid:e});return a._http.authedRequest(void 0,"POST",r,void 0,n)}).then(function(e){var n=e.room_id,r=new I(a,a._clientOpts).createRoom(n);return t.syncRoom,d.default.resolve(r)}).done(function(e){H(n,i,e)},function(e){V(n,i,e)}),i.promise},F.prototype.resendEvent=function(e,t){return j(t,e,S.SENDING),U(this,t,e)},F.prototype.cancelPendingEvent=function(e){if([S.QUEUED,S.NOT_SENT].indexOf(e.status)<0)throw new Error("cannot cancel an event with status "+e.status);this.scheduler&&this.scheduler.removeEventFromQueue(e),j(this.getRoom(e.getRoomId()),e,S.CANCELLED)},F.prototype.setRoomName=function(e,t,n){return this.sendStateEvent(e,"m.room.name",{name:t},void 0,n)},F.prototype.setRoomTopic=function(e,t,n){return this.sendStateEvent(e,"m.room.topic",{topic:t},void 0,n)},F.prototype.getRoomTags=function(e,t){var n=R.encodeUri("/user/$userId/rooms/$roomId/tags/",{$userId:this.credentials.userId,$roomId:e});return this._http.authedRequest(t,"GET",n,void 0)},F.prototype.setRoomTag=function(e,t,n,r){var o=R.encodeUri("/user/$userId/rooms/$roomId/tags/$tag",{$userId:this.credentials.userId,$roomId:e,$tag:t});return this._http.authedRequest(r,"PUT",o,void 0,n)},F.prototype.deleteRoomTag=function(e,t,n){var r=R.encodeUri("/user/$userId/rooms/$roomId/tags/$tag",{$userId:this.credentials.userId,$roomId:e,$tag:t});return this._http.authedRequest(n,"DELETE",r,void 0,void 0)},F.prototype.setRoomAccountData=function(e,t,n,r){var o=R.encodeUri("/user/$userId/rooms/$roomId/account_data/$type",{$userId:this.credentials.userId,$roomId:e,$type:t});return this._http.authedRequest(r,"PUT",o,void 0,n)},F.prototype.setPowerLevel=function(e,t,n,r,o){var i={users:{}};r&&"m.room.power_levels"===r.getType()&&(i=R.deepCopy(r.getContent())),i.users[t]=n;var a=R.encodeUri("/rooms/$roomId/state/m.room.power_levels",{$roomId:e});return this._http.authedRequest(o,"PUT",a,void 0,i)},F.prototype.sendEvent=function(e,t,n,r,o){R.isFunction(r)&&(o=r,r=void 0),r||(r=this.makeTxnId()),console.log("sendEvent of type "+t+" in "+e+" with txnId "+r);var i=this.getRoom(e),a=new C({event_id:"~"+e+":"+r,user_id:this.credentials.userId,room_id:e,type:t,origin_server_ts:(new Date).getTime(),content:n});return a._txnId=r,a.status=S.SENDING,i&&i.addPendingEvent(a,r),U(this,i,a,o)},F.prototype.sendMessage=function(e,t,n,r){return R.isFunction(n)&&(r=n,n=void 0),this.sendEvent(e,"m.room.message",t,n,r)},F.prototype.sendTextMessage=function(e,t,n,r){var o=M.makeTextMessage(t);return this.sendMessage(e,o,n,r)},F.prototype.sendNotice=function(e,t,n,r){var o=M.makeNotice(t);return this.sendMessage(e,o,n,r)},F.prototype.sendEmoteMessage=function(e,t,n,r){var o=M.makeEmoteMessage(t);return this.sendMessage(e,o,n,r)},F.prototype.sendImageMessage=function(e,t,n,r,o){R.isFunction(r)&&(o=r,r=void 0),r||(r="Image");var i={msgtype:"m.image",url:t,info:n,body:r};return this.sendMessage(e,i,o)},F.prototype.sendStickerMessage=function(e,t,n,r,o){R.isFunction(r)&&(o=r,r=void 0),r||(r="Sticker");var i={url:t,info:n,body:r};return this.sendEvent(e,"m.sticker",i,o,void 0)},F.prototype.sendHtmlMessage=function(e,t,n,r){var o=M.makeHtmlMessage(t,n);return this.sendMessage(e,o,r)},F.prototype.sendHtmlNotice=function(e,t,n,r){var o=M.makeHtmlNotice(t,n);return this.sendMessage(e,o,r)},F.prototype.sendHtmlEmote=function(e,t,n,r){var o=M.makeHtmlEmote(t,n);return this.sendMessage(e,o,r)},F.prototype.sendReceipt=function(e,t,n){if(this.isGuest())return d.default.resolve({});var r=R.encodeUri("/rooms/$roomId/receipt/$receiptType/$eventId",{$roomId:e.getRoomId(),$receiptType:t,$eventId:e.getId()}),o=this._http.authedRequest(n,"POST",r,void 0,{}),i=this.getRoom(e.getRoomId());return i&&i._addLocalEchoReceipt(this.credentials.userId,e,t),o},F.prototype.sendReadReceipt=function(e,t){return this.sendReceipt(e,"m.read",t)},F.prototype.setRoomReadMarkers=function(e,t,n){var r=t,o=void 0;if(n){o=n.getId();var i=this.getRoom(e);i&&i._addLocalEchoReceipt(this.credentials.userId,n,"m.read")}return this.setRoomReadMarkersHttpRequest(e,r,o)},F.prototype.getUrlPreview=function(e,t,n){var r=t+"_"+e,o=this.urlPreviewCache[r];if(o)return d.default.resolve(o);var i=this;return this._http.authedRequestWithPrefix(n,"GET","/preview_url",{url:e,ts:t},void 0,E.PREFIX_MEDIA_R0).then(function(e){return i.urlPreviewCache[r]=e,e})},F.prototype.sendTyping=function(e,t,n,r){if(this.isGuest())return d.default.resolve({});var o=R.encodeUri("/rooms/$roomId/typing/$userId",{$roomId:e,$userId:this.credentials.userId}),i={typing:t};return t&&(i.timeout=n||2e4),this._http.authedRequest(r,"PUT",o,void 0,i)},F.prototype.invite=function(e,t,n){return G(this,e,t,"invite",void 0,n)},F.prototype.inviteByEmail=function(e,t,n){return this.inviteByThreePid(e,"email",t,n)},F.prototype.inviteByThreePid=function(e,t,n,r){var o=R.encodeUri("/rooms/$roomId/invite",{$roomId:e}),i=this.getIdentityServerUrl(!0);return i?this._http.authedRequest(r,"POST",o,void 0,{id_server:i,medium:t,address:n}):d.default.reject(new A({error:"No supplied identity server URL",errcode:"ORG.MATRIX.JSSDK_MISSING_PARAM"}))},F.prototype.leave=function(e,t){return G(this,e,void 0,"leave",void 0,t)},F.prototype.ban=function(e,t,n,r){return G(this,e,t,"ban",n,r)},F.prototype.forget=function(e,t,n){void 0===t&&(t=!0);var r=G(this,e,void 0,"forget",void 0,n);if(!t)return r;var o=this;return r.then(function(t){return o.store.removeRoom(e),o.emit("deleteRoom",e),t})},F.prototype.unban=function(e,t,n){var r=R.encodeUri("/rooms/$roomId/unban",{$roomId:e}),o={user_id:t};return this._http.authedRequest(n,"POST",r,void 0,o)},F.prototype.kick=function(e,t,n,r){return function(e,t,n,r,o,i){R.isFunction(o)&&(i=o,o=void 0);var a=R.encodeUri("/rooms/$roomId/state/m.room.member/$userId",{$roomId:t,$userId:n});return e._http.authedRequest(i,"PUT",a,void 0,{membership:r,reason:o})}(this,e,t,"leave",n,r)},F.prototype.getPushActionsForEvent=function(e){return e.getPushActions()||e.setPushActions(this._pushProcessor.actionsForEvent(e)),e.getPushActions()},F.prototype.setProfileInfo=function(e,t,n){var r=R.encodeUri("/profile/$userId/$info",{$userId:this.credentials.userId,$info:e});return this._http.authedRequest(n,"PUT",r,void 0,t)},F.prototype.setDisplayName=function(e,t){return this.setProfileInfo("displayname",{displayname:e},t)},F.prototype.setAvatarUrl=function(e,t){return this.setProfileInfo("avatar_url",{avatar_url:e},t)},F.prototype.mxcUrlToHttp=function(e,t,n,r,o){return k.getHttpUriForMxc(this.baseUrl,e,t,n,r,o)},F.prototype.setPresence=function(e,t){var n=R.encodeUri("/presence/$userId/status",{$userId:this.credentials.userId});"string"==typeof e&&(e={presence:e});if(-1==["offline","online","unavailable"].indexOf(e.presence))throw new Error("Bad presence value: "+e.presence);return this._http.authedRequest(t,"PUT",n,void 0,e)},F.prototype.getPresenceList=function(e){return q(e,this,void 0,"GET")},F.prototype.inviteToPresenceList=function(e,t){return q(e,this,{invite:t},"POST")},F.prototype.dropFromPresenceList=function(e,t){return q(e,this,{drop:t},"POST")},F.prototype.scrollback=function(e,t,n){R.isFunction(t)&&(n=t,t=void 0),t=t||30;var r=0,o=this._ongoingScrollbacks[e.roomId]||{};if(o.promise)return o.promise;if(o.errorTs){var i=Date.now()-o.errorTs;r=Math.max(3e3-i,0)}if(null===e.oldState.paginationToken)return d.default.resolve(e);var a=this.store.scrollback(e,t).length;if(a===t)return d.default.resolve(e);t-=a;var s=d.default.defer();o={promise:s.promise,errorTs:null};var l=this;return d.default.delay(r).then(function(){return l._createMessagesRequest(e.roomId,e.oldState.paginationToken,t,"b")}).done(function(t){var r=R.map(t.chunk,Y(l));if(t.state){var o=R.map(t.state,Y(l));e.currentState.setUnknownStateEvents(o)}e.addEventsToTimeline(r,!0,e.getLiveTimeline()),e.oldState.paginationToken=t.end,0===t.chunk.length&&(e.oldState.paginationToken=null),l.store.storeEvents(e,r,t.end,!0),l._ongoingScrollbacks[e.roomId]=null,H(n,s,e)},function(t){l._ongoingScrollbacks[e.roomId]={errorTs:Date.now()},V(n,s,t)}),this._ongoingScrollbacks[e.roomId]=o,s.promise},F.prototype.getEventTimeline=function(e,t){if(!this.timelineSupport)throw new Error("timeline support is disabled. Set the 'timelineSupport' parameter to true when creating MatrixClient to enable it.");if(e.getTimelineForEvent(t))return d.default.resolve(e.getTimelineForEvent(t));var n=R.encodeUri("/rooms/$roomId/context/$eventId",{$roomId:e.room.roomId,$eventId:t}),r=void 0;this._clientOpts.lazyLoadMembers&&(r={filter:(0,s.default)(N.LAZY_LOADING_MESSAGES_FILTER)});var o=this;return o._http.authedRequest(void 0,"GET",n,r).then(function(n){if(!n.event)throw new Error("'event' not in '/context' result - homeserver too old?");if(e.getTimelineForEvent(t))return e.getTimelineForEvent(t);n.events_after.reverse();var r=n.events_after.concat([n.event]).concat(n.events_before),i=R.map(r,o.getEventMapper()),a=e.getTimelineForEvent(i[0].getId());if(a){var s=R.map(n.state,o.getEventMapper());a.getState(D.BACKWARDS).setUnknownStateEvents(s)}else(a=e.addTimeline()).initialiseState(R.map(n.state,o.getEventMapper())),a.getState(D.FORWARDS).paginationToken=n.end;return e.addEventsToTimeline(i,!0,a,n.start),e.getTimelineForEvent(t)||a})},F.prototype._createMessagesRequest=function(e,t,n,r){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0,i=R.encodeUri("/rooms/$roomId/messages",{$roomId:e});void 0===n&&(n=30);var l={from:t,limit:n,dir:r},u=null;return this._clientOpts.lazyLoadMembers&&(u=(0,a.default)({},N.LAZY_LOADING_MESSAGES_FILTER)),o&&(u=u||{},(0,a.default)(u,o.getRoomTimelineFilterComponent())),u&&(l.filter=(0,s.default)(u)),this._http.authedRequest(void 0,"GET",i,l)},F.prototype.paginateEventTimeline=function(e,t){var n=e.getTimelineSet()===this._notifTimelineSet,r=(t=t||{}).backwards||!1;if(n&&!r)throw new Error("paginateNotifTimeline can only paginate backwards");var o=r?D.BACKWARDS:D.FORWARDS,i=e.getPaginationToken(o);if(!i)return d.default.resolve(!1);var a=e._paginationRequests[o];if(a)return a;var s=void 0,l=void 0,u=void 0,c=this;if(n)s="/notifications",l={limit:"limit"in t?t.limit:30,only:"highlight"},i&&"end"!==i&&(l.from=i),u=this._http.authedRequestWithPrefix(void 0,"GET",s,l,void 0,E.PREFIX_UNSTABLE).then(function(t){for(var n=t.next_token,i=[],a=0;a<t.notifications.length;a++){var s=t.notifications[a],l=c.getEventMapper()(s.event);l.setPushActions(v.actionListToActionsObject(s.actions)),l.event.room_id=s.room_id,i[a]=l}return e.getTimelineSet().addEventsToTimeline(i,r,e,n),r&&!t.next_token&&e.setPaginationToken(null,o),!!t.next_token}).finally(function(){e._paginationRequests[o]=null}),e._paginationRequests[o]=u;else{if(!this.getRoom(e.getRoomId()))throw new Error("Unknown room "+e.getRoomId());(u=this._createMessagesRequest(e.getRoomId(),i,t.limit,o,e.getFilter())).then(function(t){if(t.state){var n=e.getState(o),i=R.map(t.state,c.getEventMapper());n.setUnknownStateEvents(i)}var a=t.end,s=R.map(t.chunk,c.getEventMapper());return e.getTimelineSet().addEventsToTimeline(s,r,e,a),r&&t.end==t.start&&e.setPaginationToken(null,o),t.end!=t.start}).finally(function(){e._paginationRequests[o]=null}),e._paginationRequests[o]=u}return u},F.prototype.resetNotifTimelineSet=function(){this._notifTimelineSet&&this._notifTimelineSet.resetLiveTimeline("end",null)},F.prototype.peekInRoom=function(e){return this._peekSync&&this._peekSync.stopPeeking(),this._peekSync=new I(this,this._clientOpts),this._peekSync.peek(e)},F.prototype.stopPeeking=function(){this._peekSync&&(this._peekSync.stopPeeking(),this._peekSync=null)},F.prototype.setGuestAccess=function(e,t){var n=this.sendStateEvent(e,"m.room.guest_access",{guest_access:t.allowJoin?"can_join":"forbidden"}),r=d.default.resolve();return t.allowRead&&(r=this.sendStateEvent(e,"m.room.history_visibility",{history_visibility:"world_readable"})),d.default.all([r,n])},F.prototype.requestRegisterEmailToken=function(e,t,n,r){return this._requestTokenFromEndpoint("/register/email/requestToken",{email:e,client_secret:t,send_attempt:n,next_link:r})},F.prototype.requestRegisterMsisdnToken=function(e,t,n,r,o){return this._requestTokenFromEndpoint("/register/msisdn/requestToken",{country:e,phone_number:t,client_secret:n,send_attempt:r,next_link:o})},F.prototype.requestAdd3pidEmailToken=function(e,t,n,r){return this._requestTokenFromEndpoint("/account/3pid/email/requestToken",{email:e,client_secret:t,send_attempt:n,next_link:r})},F.prototype.requestAdd3pidMsisdnToken=function(e,t,n,r,o){return this._requestTokenFromEndpoint("/account/3pid/msisdn/requestToken",{country:e,phone_number:t,client_secret:n,send_attempt:r,next_link:o})},F.prototype.requestPasswordEmailToken=function(e,t,n,r){return this._requestTokenFromEndpoint("/account/password/email/requestToken",{email:e,client_secret:t,send_attempt:n,next_link:r})},F.prototype.requestPasswordMsisdnToken=function(e,t,n,r,o){return this._requestTokenFromEndpoint("/account/password/msisdn/requestToken",{country:e,phone_number:t,client_secret:n,send_attempt:r,next_link:o})},F.prototype._requestTokenFromEndpoint=function(e,t){var n=b.parse(this.idBaseUrl);if(null===n.host)throw new Error("Invalid ID server URL: "+this.idBaseUrl);var r=(0,a.default)({},t,{id_server:n.host});return this._http.request(void 0,"POST",e,void 0,r)},F.prototype.getRoomPushRule=function(e,t){if(!this.pushRules)throw new Error("SyncApi.sync() must be done before accessing to push rules.");for(var n=0;n<this.pushRules[e].room.length;n++){var r=this.pushRules[e].room[n];if(r.rule_id===t)return r}},F.prototype.setRoomMutePushRule=function(e,t,n){var r=this,o=void 0,i=void 0,a=this.getRoomPushRule(e,t);if(a&&0<=a.actions.indexOf("dont_notify")&&(i=!0),n?a?i||(o=d.default.defer(),this.deletePushRule(e,"room",a.rule_id).done(function(){r.addPushRule(e,"room",t,{actions:["dont_notify"]}).done(function(){o.resolve()},function(e){o.reject(e)})},function(e){o.reject(e)}),o=o.promise):o=this.addPushRule(e,"room",t,{actions:["dont_notify"]}):i&&(o=this.deletePushRule(e,"room",a.rule_id)),o){var s=d.default.defer();return o.done(function(){r.getPushRules().done(function(e){r.pushRules=e,s.resolve()},function(e){s.reject(e)})},function(e){r.getPushRules().done(function(t){r.pushRules=t,s.reject(e)},function(t){s.reject(e)})}),s.promise}},F.prototype.searchMessageText=function(e,t){var n={search_term:e.query};return"keys"in e&&(n.keys=e.keys),this.search({body:{search_categories:{room_events:n}}},t)},F.prototype.searchRoomEvents=function(e){var t={search_categories:{room_events:{search_term:e.term,filter:e.filter,order_by:"recent",event_context:{before_limit:1,after_limit:1,include_profile:!0}}}},n={_query:t,results:[],highlights:[]};return this.search({body:t}).then(this._processRoomEventsSearch.bind(this,n))},F.prototype.backPaginateRoomEventsSearch=function(e){if(!e.next_batch)return d.default.reject(new Error("Cannot backpaginate event search any further"));if(e.pendingRequest)return e.pendingRequest;var t={body:e._query,next_batch:e.next_batch},n=this.search(t).then(this._processRoomEventsSearch.bind(this,e)).finally(function(){e.pendingRequest=null});return e.pendingRequest=n,n},F.prototype._processRoomEventsSearch=function(e,t){var n=t.search_categories.room_events;e.count=n.count,e.next_batch=n.next_batch;var r={};n.highlights.forEach(function(e){r[e]=1}),e.highlights.forEach(function(e){r[e]=1}),e.highlights=(0,l.default)(r);for(var o=0;o<n.results.length;o++){var i=w.fromJson(n.results[o],this.getEventMapper());e.results.push(i)}return e},F.prototype.syncLeftRooms=function(){if(this._syncedLeftRooms)return d.default.resolve([]);if(this._syncLeftRoomsPromise)return this._syncLeftRoomsPromise;var e=this,t=new I(this,this._clientOpts);return this._syncLeftRoomsPromise=t.syncLeftRooms(),this._syncLeftRoomsPromise.then(function(t){console.log("Marking success of sync left room request"),e._syncedLeftRooms=!0}).finally(function(){e._syncLeftRoomsPromise=null}),this._syncLeftRoomsPromise},F.prototype.createFilter=function(e){var t=this,n=R.encodeUri("/user/$userId/filter",{$userId:this.credentials.userId});return this._http.authedRequest(void 0,"POST",n,void 0,e).then(function(n){var r=N.fromJson(t.credentials.userId,n.filter_id,e);return t.store.storeFilter(r),r})},F.prototype.getFilter=function(e,t,n){if(n){var r=this.store.getFilter(e,t);if(r)return d.default.resolve(r)}var o=this,i=R.encodeUri("/user/$userId/filter/$filterId",{$userId:e,$filterId:t});return this._http.authedRequest(void 0,"GET",i,void 0,void 0).then(function(n){var r=N.fromJson(e,t,n);return o.store.storeFilter(r),r})},F.prototype.getOrCreateFilter=function(e,t){var n=this.store.getFilterIdByName(e),r=d.default.resolve(),o=this;return n&&(r=o.getFilter(o.credentials.userId,n,!0).then(function(r){var i=r.getDefinition(),a=t.getDefinition();if(R.deepCompare(i,a))return d.default.resolve(n);o.store.setFilterIdByName(e,void 0)},function(t){if(404!==t.httpStatus||"M_UNKNOWN"!==t.errcode&&"M_NOT_FOUND"!==t.errcode)throw t;o.store.setFilterIdByName(e,void 0)})),r.then(function(n){return n||o.createFilter(t.getDefinition()).then(function(t){return o.store.setFilterIdByName(e,t.filterId),t.filterId})})},F.prototype.getOpenIdToken=function(){var e=R.encodeUri("/user/$userId/openid/request_token",{$userId:this.credentials.userId});return this._http.authedRequest(void 0,"POST",e,void 0,{})},F.prototype.turnServer=function(e){return this._http.authedRequest(e,"GET","/voip/turnServer")},F.prototype.getTurnServers=function(){return this._turnServers||[]},F.prototype.startClient=function(){var e=(0,f.method)(function(e){var t=this;this.clientRunning||(this.clientRunning=!0,"number"==typeof e&&(e={initialSyncLimit:e}),this._crypto&&(this._crypto.uploadDeviceKeys().done(),this._crypto.start()),function e(t){if(!t._supportsVoip)return;if(t.isGuest())return;t.turnServer().done(function(n){if(n.uris){console.log("Got TURN URIs: "+n.uris+" refresh in "+n.ttl+" secs");var r={urls:n.uris,username:n.username,credential:n.password};t._turnServers=[r],t._checkTurnServersTimeoutID=setTimeout(function(){e(t)},1e3*(n.ttl||3600)*.9)}},function(n){console.error("Failed to get TURN URIs"),t._checkTurnServersTimeoutID=setTimeout(function(){e(t)},6e4)})}(this),this._syncApi&&(console.error("Still have sync object whilst not running: stopping old one"),this._syncApi.stop()),(e=(0,a.default)({},e)).crypto=this._crypto,e.canResetEntireTimeline=function(e){return!!t._canResetTimelineCallback&&t._canResetTimelineCallback(e)},this._clientOpts=e,this._syncApi=new I(this,e),this._syncApi.sync())});return function(t){return e.apply(this,arguments)}}(),F.prototype._storeClientOptions=function(){var e=["boolean","string","number"],t=(0,i.default)(this._clientOpts).filter(function(t){var n=(0,o.default)(t,2),i=(n[0],n[1]);return e.includes(void 0===i?"undefined":(0,r.default)(i))}).reduce(function(e,t){var n=(0,o.default)(t,2),r=n[0],i=n[1];return e[r]=i,e},{});return this.store.storeClientOptions(t)},F.prototype.stopClient=function(){console.log("stopping MatrixClient"),this.clientRunning=!1,this._syncApi&&(this._syncApi.stop(),this._syncApi=null),this._crypto&&this._crypto.stop(),this._peekSync&&this._peekSync.stopPeeking(),t.clearTimeout(this._checkTurnServersTimeoutID)},F.prototype.doesServerSupportLazyLoading=(0,f.coroutine)(p.default.mark(function e(){var t,n;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(null!==this._serverSupportsLazyLoading){e.next=6;break}return e.next=3,(0,f.resolve)(this._http.request(void 0,"GET","/_matrix/client/versions",void 0,void 0,{prefix:""}));case 3:t=e.sent,n=t.unstable_features,this._serverSupportsLazyLoading=n&&n["m.lazy_load_members"];case 6:return e.abrupt("return",this._serverSupportsLazyLoading);case 7:case"end":return e.stop()}},e,this)})),F.prototype.hasLazyLoadMembersEnabled=function(){return!!this._clientOpts.lazyLoadMembers},F.prototype.setCanResetTimelineCallback=function(e){this._canResetTimelineCallback=e},F.prototype.getCanResetTimelineCallback=function(){return this._canResetTimelineCallback},F.prototype.getEventMapper=function(){return Y(this)},F.prototype.generateClientSecret=function(){for(var e="",t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=0;n<32;n++)e+=t.charAt(Math.floor(Math.random()*t.length));return e},e.exports.MatrixClient=F,e.exports.CRYPTO_ENABLED=P}).call(this,n(15))},function(e,t,n){e.exports={default:n(1078),__esModule:!0}},function(e,t,n){var r=n(78),o=n(59),i=n(124).f;e.exports=function(e){return function(t){for(var n,a=o(t),s=r(a),l=s.length,u=0,c=[];l>u;)i.call(a,n=s[u++])&&c.push(e?[n,a[n]]:a[n]);return c}}},function(e,t,n){"use strict";var r=n(46).f,o=n(117),i=n(397),a=n(66),s=n(398),l=n(230),u=n(185),c=n(277),f=n(579),d=n(44),p=n(137).fastKey,m=n(399),h=d?"_s":"size",_=function(e,t){var n,r=p(t);if("F"!==r)return e._i[r];for(n=e._f;n;n=n.n)if(n.k==t)return n};e.exports={getConstructor:function(e,t,n,u){var c=e(function(e,r){s(e,c,t,"_i"),e._t=t,e._i=o(null),e._f=void 0,e._l=void 0,e[h]=0,void 0!=r&&l(r,n,e[u],e)});return i(c.prototype,{clear:function(){for(var e=m(this,t),n=e._i,r=e._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete n[r.i];e._f=e._l=void 0,e[h]=0},delete:function(e){var n=m(this,t),r=_(n,e);if(r){var o=r.n,i=r.p;delete n._i[r.i],r.r=!0,i&&(i.n=o),o&&(o.p=i),n._f==r&&(n._f=o),n._l==r&&(n._l=i),n[h]--}return!!r},forEach:function(e){m(this,t);for(var n,r=a(e,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(r(n.v,n.k,this);n&&n.r;)n=n.p},has:function(e){return!!_(m(this,t),e)}}),d&&r(c.prototype,"size",{get:function(){return m(this,t)[h]}}),c},def:function(e,t,n){var r,o,i=_(e,t);return i?i.v=n:(e._l=i={i:o=p(t,!0),k:t,v:n,p:r=e._l,n:void 0,r:!1},e._f||(e._f=i),r&&(r.n=i),e[h]++,"F"!==o&&(e._i[o]=i)),e},getEntry:_,setStrong:function(e,t,n){u(e,t,function(e,n){this._t=m(e,t),this._k=n,this._l=void 0},function(){for(var e=this._k,t=this._l;t&&t.r;)t=t.p;return this._t&&(this._l=t=t?t.n:this._t._f)?c(0,"keys"==e?t.k:"values"==e?t.v:[t.k,t.v]):(this._t=void 0,c(1))},n?"entries":"values",!n,!0),f(t)}}},function(e,t,n){"use strict";var r=n(34),o=n(18),i=n(46),a=n(44),s=n(38)("species");e.exports=function(e){var t="function"==typeof o[e]?o[e]:r[e];a&&t&&!t[s]&&i.f(t,s,{configurable:!0,get:function(){return this}})}},function(e,t,n){"use strict";var r=n(34),o=n(26),i=n(137),a=n(58),s=n(60),l=n(397),u=n(230),c=n(398),f=n(35),d=n(122),p=n(46).f,m=n(1082)(0),h=n(44);e.exports=function(e,t,n,_,g,v){var y=r[e],b=y,E=g?"set":"add",C=b&&b.prototype,S={};return h&&"function"==typeof b&&(v||C.forEach&&!a(function(){(new b).entries().next()}))?(b=t(function(t,n){c(t,b,e,"_c"),t._c=new y,void 0!=n&&u(n,g,t[E],t)}),m("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),function(e){var t="add"==e||"set"==e;e in C&&(!v||"clear"!=e)&&s(b.prototype,e,function(n,r){if(c(this,b,e),!t&&v&&!f(n))return"get"==e&&void 0;var o=this._c[e](0===n?0:n,r);return t?this:o})}),v||p(b.prototype,"size",{get:function(){return this._c.size}})):(b=_.getConstructor(t,e,g,E),l(b.prototype,n),i.NEED=!0),d(b,e),S[e]=b,o(o.G+o.W+o.F,S),v||_.setStrong(b,e,g),b}},function(e,t,n){var r=n(164),o=n(1086);e.exports=function(e){return function(){if(r(this)!=e)throw TypeError(e+"#toJSON isn't generic");return o(this)}}},function(e,t,n){"use strict";var r=n(26);e.exports=function(e){r(r.S,e,{of:function(){for(var e=arguments.length,t=Array(e);e--;)t[e]=arguments[e];return new this(t)}})}},function(e,t,n){"use strict";var r=n(26),o=n(94),i=n(66),a=n(230);e.exports=function(e){r(r.S,e,{from:function(e){var t,n,r,s,l=arguments[1];return o(this),(t=void 0!==l)&&o(l),void 0==e?new this:(n=[],t?(r=0,s=i(l,arguments[2],2),a(e,!1,function(e){n.push(s(e,r++))})):a(e,!1,n.push,n),new this(n))}})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(n(20)),o=a(n(4)),i=a(n(5));function a(e){return e&&e.__esModule?e:{default:e}}var s=function(){function e(t){(0,o.default)(this,e),this.target=t,this.boundHandlers={}}return(0,i.default)(e,[{key:"_handleEvent",value:function(e){for(var t,n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];(t=this.target).emit.apply(t,[e].concat(r))}},{key:"reEmit",value:function(e,t){var n=!0,o=!1,i=void 0;try{for(var a,s=(0,r.default)(t);!(n=(a=s.next()).done);n=!0){var l=a.value;void 0===this.boundHandlers[l]&&(this.boundHandlers[l]=this._handleEvent.bind(this,l));var u=this.boundHandlers[l];e.on(l,u)}}catch(e){o=!0,i=e}finally{try{!n&&s.return&&s.return()}finally{if(o)throw i}}}}]),e}();t.default=s},function(e,t,n){"use strict";var r=a(n(586)),o=a(n(14)),i=a(n(126));function a(e){return e&&e.__esModule?e:{default:e}}var s=n(55).EventEmitter,l=n(29),u=n(402),c=1;function f(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;this.roomId=e,this.members={},this.events={},this.paginationToken=null,this._sentinels={},this._updateModifiedTime(),this._displayNameToUserIds={},this._userIdsToDisplayNames={},this._tokenToInvite={},this._joinedMemberCount=null,this._summaryJoinedMemberCount=null,this._invitedMemberCount=null,this._summaryInvitedMemberCount=null,t||(t={status:c}),this._oobMemberFlags=t}function d(e,t,n){var r=e._userIdsToDisplayNames[t];if(delete e._userIdsToDisplayNames[t],r){var o=l.removeHiddenChars(r),i=e._displayNameToUserIds[o];if(i){var a=i.filter(function(e){return e!==t});e._displayNameToUserIds[o]=a}}e._userIdsToDisplayNames[t]=n;var s=n&&l.removeHiddenChars(n);s&&(e._displayNameToUserIds[s]||(e._displayNameToUserIds[s]=[]),e._displayNameToUserIds[s].push(t))}l.inherits(f,s),f.prototype.getJoinedMemberCount=function(){return null!==this._summaryJoinedMemberCount?this._summaryJoinedMemberCount:(null===this._joinedMemberCount&&(this._joinedMemberCount=this.getMembers().reduce(function(e,t){return"join"===t.membership?e+1:e},0)),this._joinedMemberCount)},f.prototype.setJoinedMemberCount=function(e){this._summaryJoinedMemberCount=e},f.prototype.getInvitedMemberCount=function(){return null!==this._summaryInvitedMemberCount?this._summaryInvitedMemberCount:(null===this._invitedMemberCount&&(this._invitedMemberCount=this.getMembers().reduce(function(e,t){return"invite"===t.membership?e+1:e},0)),this._invitedMemberCount)},f.prototype.setInvitedMemberCount=function(e){this._summaryInvitedMemberCount=e},f.prototype.getMembers=function(){return l.values(this.members)},f.prototype.getMember=function(e){return this.members[e]||null},f.prototype.getSentinelMember=function(e){if(!e)return null;var t=this._sentinels[e];if(void 0===t){t=new u(this.roomId,e);var n=this.members[e];n&&t.setMembershipEvent(n.events.member,this),this._sentinels[e]=t}return t},f.prototype.getStateEvents=function(e,t){if(!this.events[e])return void 0===t?[]:null;if(void 0===t)return l.values(this.events[e]);var n=this.events[e][t];return n||null},f.prototype.clone=function(){var e=new f(this.roomId,this._oobMemberFlags),t=this._oobMemberFlags.status;return this._oobMemberFlags.status=c,(0,i.default)(this.events).forEach(function(t){var n=(0,i.default)(t);e.setStateEvents(n)}),this._oobMemberFlags.status=t,null!==this._summaryInvitedMemberCount&&e.setInvitedMemberCount(this.getInvitedMemberCount()),null!==this._summaryJoinedMemberCount&&e.setJoinedMemberCount(this.getJoinedMemberCount()),3==this._oobMemberFlags.status&&this.getMembers().forEach(function(t){t.isOutOfBand()&&e.getMember(t.userId).markOutOfBand()}),e},f.prototype.setUnknownStateEvents=function(e){var t=this,n=e.filter(function(e){return void 0===t.events[e.getType()]||void 0===t.events[e.getType()][e.getStateKey()]});this.setStateEvents(n)},f.prototype.setStateEvents=function(e){var t=this;this._updateModifiedTime(),l.forEach(e,function(e){e.getRoomId()===t.roomId&&e.isState()&&(t._setStateEvent(e),"m.room.member"===e.getType()&&(d(t,e.getStateKey(),e.getContent().displayname),function(e,t){if(!t.getContent().third_party_invite)return;var n=(t.getContent().third_party_invite.signed||{}).token;if(!n)return;if(!e.getStateEvents("m.room.third_party_invite",n))return;e._tokenToInvite[n]=t}(t,e)),t.emit("RoomState.events",e,t))}),l.forEach(e,function(e){if(e.getRoomId()===t.roomId&&e.isState())if("m.room.member"===e.getType()){var n=e.getStateKey();"leave"!==e.getContent().membership&&"ban"!==e.getContent().membership||(e.getContent().avatar_url=e.getContent().avatar_url||e.getPrevContent().avatar_url,e.getContent().displayname=e.getContent().displayname||e.getPrevContent().displayname);var r=t._getOrCreateMember(n,e);r.setMembershipEvent(e,t),t._updateMember(r),t.emit("RoomState.members",e,t,r)}else if("m.room.power_levels"===e.getType()){var o=l.values(t.members);l.forEach(o,function(n){n.setPowerLevelEvent(e),t.emit("RoomState.members",e,t,n)}),t._sentinels={}}})},f.prototype._getOrCreateMember=function(e,t){var n=this.members[e];return n||(n=new u(this.roomId,e),this.members[e]=n,this.emit("RoomState.newMember",t,this,n)),n},f.prototype._setStateEvent=function(e){void 0===this.events[e.getType()]&&(this.events[e.getType()]={}),this.events[e.getType()][e.getStateKey()]=e},f.prototype._updateMember=function(e){var t=this.getStateEvents("m.room.power_levels","");t&&e.setPowerLevelEvent(t),delete this._sentinels[e.userId],this.members[e.userId]=e,this._joinedMemberCount=null,this._invitedMemberCount=null},f.prototype.needsOutOfBandMembers=function(){return this._oobMemberFlags.status===c},f.prototype.markOutOfBandMembersStarted=function(){this._oobMemberFlags.status===c&&(this._oobMemberFlags.status=2)},f.prototype.markOutOfBandMembersFailed=function(){2===this._oobMemberFlags.status&&(this._oobMemberFlags.status=c)},f.prototype.clearOutOfBandMembers=function(){var e=this,t=0;(0,o.default)(this.members).forEach(function(n){e.members[n].isOutOfBand()&&(++t,delete e.members[n])}),console.log("LL: RoomState removed "+t+" members..."),this._oobMemberFlags.status=c},f.prototype.setOutOfBandMembers=function(e){var t=this;console.log("LL: RoomState about to set "+e.length+" OOB members ..."),2===this._oobMemberFlags.status&&(console.log("LL: RoomState put in OOB_STATUS_FINISHED state ..."),this._oobMemberFlags.status=3,e.forEach(function(e){return t._setOutOfBandMember(e)}))},f.prototype._setOutOfBandMember=function(e){if("m.room.member"===e.getType()){var t=e.getStateKey(),n=this.getMember(t);if(!n||n.isOutOfBand()){var r=this._getOrCreateMember(t,e);r.setMembershipEvent(e,this),r.markOutOfBand(),d(this,r.userId,r.name),this._setStateEvent(e),this._updateMember(r),this.emit("RoomState.members",e,this,r)}}},f.prototype.setTypingEvent=function(e){l.forEach(l.values(this.members),function(t){t.setTypingEvent(e)})},f.prototype.getInviteForThreePidToken=function(e){return this._tokenToInvite[e]||null},f.prototype._updateModifiedTime=function(){this._modified=Date.now()},f.prototype.getLastModifiedTime=function(){return this._modified},f.prototype.getUserIdsWithDisplayName=function(e){return this._displayNameToUserIds[e]||[]},f.prototype.maySendRedactionForEvent=function(e,t){var n=this.getMember(t);if(!n||"leave"===n.membership)return!1;if(e.status||e.isRedacted())return!1;var r=this.maySendEvent("m.room.redaction",t);return e.getSender()===t?r:this._hasSufficientPowerLevelFor("redact",n.powerLevel)},f.prototype._hasSufficientPowerLevelFor=function(e,t){var n=this.getStateEvents("m.room.power_levels",""),r={};n&&(r=n.getContent());var o=50;return l.isNumber(r[e])&&(o=r[e]),t>=o},f.prototype.maySendMessage=function(e){return this._maySendEventOfType("m.room.message",e,!1)},f.prototype.maySendEvent=function(e,t){return this._maySendEventOfType(e,t,!1)},f.prototype.mayClientSendStateEvent=function(e,t){return!t.isGuest()&&this.maySendStateEvent(e,t.credentials.userId)},f.prototype.maySendStateEvent=function(e,t){return this._maySendEventOfType(e,t,!0)},f.prototype._maySendEventOfType=function(e,t,n){var o=this.getStateEvents("m.room.power_levels",""),i=void 0,a={},s=0,l=0,u=0;if(o){a=(i=o.getContent()).events||{},s=(0,r.default)(i.state_default)?i.state_default:50;var c=i.users&&i.users[t];(0,r.default)(c)?u=c:(0,r.default)(i.users_default)&&(u=i.users_default),(0,r.default)(i.events_default)&&(l=i.events_default)}var f=n?s:l;return(0,r.default)(a[e])&&(f=a[e]),u>=f},f.prototype.mayTriggerNotifOfType=function(e,t){var n=this.getMember(t);if(!n)return!1;var r=this.getStateEvents("m.room.power_levels",""),o=50;return r&&r.getContent()&&r.getContent().notifications&&l.isNumber(r.getContent().notifications[e])&&(o=r.getContent().notifications[e]),n.powerLevel>=o},e.exports=f},function(e,t,n){e.exports={default:n(1099),__esModule:!0}},function(e,t,n){"use strict";var r=u(n(40)),o=u(n(588)),i=u(n(19)),a=n(9),s=u(n(65)),l=u(n(584));function u(e){return e&&e.__esModule?e:{default:e}}var c=n(55).EventEmitter,f=n(170).EventStatus,d=n(1116),p=n(402),m=n(170).MatrixEvent,h=n(29),_=n(288),g=n(172),v=n(406);function y(e,t,n){var r={content:{},type:"m.receipt",room_id:t.getRoomId()};return r.content[t.getId()]={},r.content[t.getId()][n]={},r.content[t.getId()][n][e]={ts:t.getTs()},new m(r)}function b(e,t,n,r){if((r=r||{}).pendingEventOrdering=r.pendingEventOrdering||"chronological",this.reEmitter=new l.default(this),-1===["chronological","detached"].indexOf(r.pendingEventOrdering))throw new Error("opts.pendingEventOrdering MUST be either 'chronological' or 'detached'. Got: '"+r.pendingEventOrdering+"'");this.myUserId=n,this.roomId=e,this.name=e,this.tags={},this.accountData={},this.summary=null,this.storageToken=r.storageToken,this._opts=r,this._txnToEvent={},this._receipts={},this._receiptCacheByEventId={},this._realReceipts={},this._notificationCounts={},this._timelineSets=[new v(this,r)],this.reEmitter.reEmit(this.getUnfilteredTimelineSet(),["Room.timeline","Room.timelineReset"]),this._fixUpLegacyTimelineFields(),this._filteredTimelineSets={},"detached"==this._opts.pendingEventOrdering&&(this._pendingEventList=[]),this._blacklistUnverifiedDevices=null,this._selfMembership=null,this._summaryHeroes=null,this._client=t,this._opts.lazyLoadMembers?this._membersPromise=null:this._membersPromise=s.default.resolve()}h.inherits(b,c),b.prototype.getVersion=function(){var e=this.currentState.getStateEvents("m.room.create","");if(!e)return console.warn("Room "+this.room_id+" does not have an m.room.create event"),"1";var t=e.getContent().room_version;return void 0===t?"1":t},b.prototype.shouldUpgradeToVersion=function(){return"1"===this.getVersion()?null:"1"},b.prototype.userMayUpgradeRoom=function(e){return this.currentState.maySendStateEvent("m.room.tombstone",e)},b.prototype.getPendingEvents=function(){if("detached"!==this._opts.pendingEventOrdering)throw new Error("Cannot call getPendingEventList with pendingEventOrdering == "+this._opts.pendingEventOrdering);return this._pendingEventList},b.prototype.getLiveTimeline=function(){return this.getUnfilteredTimelineSet().getLiveTimeline()},b.prototype.getMyMembership=function(){return this._selfMembership},b.prototype.getDMInviter=function(){if(this.myUserId){var e=this.getMember(this.myUserId);if(e)return e.getDMInviter()}if("invite"===this._selfMembership&&(2==this.getInvitedAndJoinedMemberCount()&&this._summaryHeroes.length))return this._summaryHeroes[0]},b.prototype.guessDMUserId=function(){var e=this,t=this.getMember(this.myUserId);if(t){var n=t.getDMInviter();if(n)return n}if(Array.isArray(this._summaryHeroes)&&this._summaryHeroes.length)return this._summaryHeroes[0];var r=this.currentState.getMembers().find(function(t){return t.userId!==e.myUserId});return r?r.userId:this.myUserId},b.prototype.getAvatarFallbackMember=function(){var e=this;if(!(this.getInvitedAndJoinedMemberCount()>2)){var t=Array.isArray(this._summaryHeroes)&&this._summaryHeroes.length;if(t){var n=this._summaryHeroes.map(function(t){return e.getMember(t)}).find(function(e){return!!e});if(n)return n}var r=this.currentState.getMembers();if(r.length<=2){var o=r.find(function(t){return t.userId!==e.myUserId});if(o)return o}if(t){var i=this._summaryHeroes.map(function(t){return e._client.getUser(t)}).find(function(e){return!!e});if(i){var a=new p(this.roomId,i.userId);return a.user=i,a}}}},b.prototype.updateMyMembership=function(e){var t=this._selfMembership;this._selfMembership=e,t!==e&&("leave"===e&&this._cleanupAfterLeaving(),this.emit("Room.myMembership",this,e,t))},b.prototype._loadMembersFromServer=(0,a.coroutine)(i.default.mark(function e(){var t,n,r,o,s;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._client.store.getSyncToken(),n=h.encodeParams({not_membership:"leave",at:t}),r=h.encodeUri("/rooms/$roomId/members?"+n,{$roomId:this.roomId}),o=this._client._http,e.next=6,(0,a.resolve)(o.authedRequest(void 0,"GET",r));case 6:return s=e.sent,e.abrupt("return",s.chunk);case 8:case"end":return e.stop()}},e,this)})),b.prototype._loadMembers=(0,a.coroutine)(i.default.mark(function e(){var t,n,r;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=!1,e.next=3,(0,a.resolve)(this._client.store.getOutOfBandMembers(this.roomId));case 3:if(null!==(n=e.sent)){e.next=10;break}return t=!0,e.next=8,(0,a.resolve)(this._loadMembersFromServer());case 8:n=e.sent,console.log("LL: got "+n.length+" members from server for room "+this.roomId);case 10:return r=n.map(this._client.getEventMapper()),e.abrupt("return",{memberEvents:r,fromServer:t});case 12:case"end":return e.stop()}},e,this)})),b.prototype.loadMembersIfNeeded=function(){var e=this;if(this._membersPromise)return this._membersPromise;this.currentState.markOutOfBandMembersStarted();var t=this._loadMembers().then(function(t){return e.currentState.setOutOfBandMembers(t.memberEvents),e._client.isRoomEncrypted(e.roomId)&&e._client._crypto.trackRoomDevices(e.roomId),t.fromServer}).catch(function(t){throw e._membersPromise=null,e.currentState.markOutOfBandMembersFailed(),t});return t.then(function(t){if(t){var n=e.currentState.getMembers().filter(function(e){return e.isOutOfBand()}).map(function(e){return e.events.member.event});return console.log("LL: telling store to write "+n.length+" members for room "+e.roomId),e._client.store.setOutOfBandMembers(e.roomId,n).catch(function(e){console.log("LL: storing OOB room members failed, oh well",e)})}}).catch(function(e){console.error(e)}),this._membersPromise=t,this._membersPromise},b.prototype.clearLoadedMembersIfNeeded=(0,a.coroutine)(i.default.mark(function e(){return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._opts.lazyLoadMembers||!this._membersPromise){e.next=7;break}return e.next=3,(0,a.resolve)(this.loadMembersIfNeeded());case 3:return e.next=5,(0,a.resolve)(this._client.store.clearOutOfBandMembers(this.roomId));case 5:this.currentState.clearOutOfBandMembers(),this._membersPromise=null;case 7:case"end":return e.stop()}},e,this)})),b.prototype._cleanupAfterLeaving=function(){var e=this;this.clearLoadedMembersIfNeeded().catch(function(t){console.error("error after clearing loaded members from room "+e.roomId+" after leaving"),console.dir(t)})},b.prototype.resetLiveTimeline=function(e,t){for(var n=0;n<this._timelineSets.length;n++)this._timelineSets[n].resetLiveTimeline(e,t);this._fixUpLegacyTimelineFields()},b.prototype._fixUpLegacyTimelineFields=function(){this.timeline=this.getLiveTimeline().getEvents(),this.oldState=this.getLiveTimeline().getState(g.BACKWARDS),this.currentState=this.getLiveTimeline().getState(g.FORWARDS)},b.prototype.getTimelineSets=function(){return this._timelineSets},b.prototype.getUnfilteredTimelineSet=function(){return this._timelineSets[0]},b.prototype.getTimelineForEvent=function(e){return this.getUnfilteredTimelineSet().getTimelineForEvent(e)},b.prototype.addTimeline=function(){return this.getUnfilteredTimelineSet().addTimeline()},b.prototype.findEventById=function(e){return this.getUnfilteredTimelineSet().findEventById(e)},b.prototype.getUnreadNotificationCount=function(e){return e=e||"total",this._notificationCounts[e]},b.prototype.setUnreadNotificationCount=function(e,t){this._notificationCounts[e]=t},b.prototype.setSummary=function(e){var t=this,n=e["m.heroes"],r=e["m.joined_member_count"],i=e["m.invited_member_count"];(0,o.default)(r)&&this.currentState.setJoinedMemberCount(r),(0,o.default)(i)&&this.currentState.setInvitedMemberCount(i),Array.isArray(n)&&(this._summaryHeroes=n.filter(function(e){return e!==t.myUserId}))},b.prototype.setBlacklistUnverifiedDevices=function(e){this._blacklistUnverifiedDevices=e},b.prototype.getBlacklistUnverifiedDevices=function(){return this._blacklistUnverifiedDevices},b.prototype.getAvatarUrl=function(e,t,n,r,o){var i=this.currentState.getStateEvents("m.room.avatar","");if(void 0===o&&(o=!0),!i&&!o)return null;var a=i?i.getContent().url:null;return a?_.getHttpUriForMxc(e,a,t,n,r):o?_.getIdenticonUri(e,this.roomId,t,n):null},b.prototype.getAliases=function(){var e=[],t=this.currentState.getStateEvents("m.room.aliases");if(t)for(var n=0;n<t.length;++n){var r=t[n];h.isArray(r.getContent().aliases)&&Array.prototype.push.apply(e,r.getContent().aliases)}return e},b.prototype.getCanonicalAlias=function(){var e=this.currentState.getStateEvents("m.room.canonical_alias","");return e?e.getContent().alias:null},b.prototype.addEventsToTimeline=function(e,t,n,r){n.getTimelineSet().addEventsToTimeline(e,t,n,r)},b.prototype.getMember=function(e){return this.currentState.getMember(e)},b.prototype.getJoinedMembers=function(){return this.getMembersWithMembership("join")},b.prototype.getJoinedMemberCount=function(){return this.currentState.getJoinedMemberCount()},b.prototype.getInvitedMemberCount=function(){return this.currentState.getInvitedMemberCount()},b.prototype.getInvitedAndJoinedMemberCount=function(){return this.getInvitedMemberCount()+this.getJoinedMemberCount()},b.prototype.getMembersWithMembership=function(e){return h.filter(this.currentState.getMembers(),function(t){return t.membership===e})},b.prototype.getEncryptionTargetMembers=(0,a.coroutine)(i.default.mark(function e(){var t;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,a.resolve)(this.loadMembersIfNeeded());case 2:return t=this.getMembersWithMembership("join"),this.shouldEncryptForInvitedMembers()&&(t=t.concat(this.getMembersWithMembership("invite"))),e.abrupt("return",t);case 5:case"end":return e.stop()}},e,this)})),b.prototype.shouldEncryptForInvitedMembers=function(){var e=this.currentState.getStateEvents("m.room.history_visibility","");return e&&e.getContent()&&"joined"!==e.getContent().history_visibility},b.prototype.getDefaultRoomName=function(e){return C(this,e,!0)},b.prototype.hasMembershipState=function(e,t){var n=this.getMember(e);return!!n&&n.membership===t},b.prototype.getOrCreateFilteredTimelineSet=function(e){if(this._filteredTimelineSets[e.filterId])return this._filteredTimelineSets[e.filterId];var t=(0,r.default)({filter:e},this._opts),n=new v(this,t);this.reEmitter.reEmit(n,["Room.timeline","Room.timelineReset"]),this._filteredTimelineSets[e.filterId]=n,this._timelineSets.push(n);var o=this.getLiveTimeline();o.getEvents().forEach(function(e){n.addLiveEvent(e)});for(var i=o;i.getNeighbouringTimeline(g.BACKWARDS);)i=i.getNeighbouringTimeline(g.BACKWARDS);return n.getLiveTimeline().setPaginationToken(i.getPaginationToken(g.BACKWARDS),g.BACKWARDS),n},b.prototype.removeFilteredTimelineSet=function(e){var t=this._filteredTimelineSets[e.filterId];delete this._filteredTimelineSets[e.filterId];var n=this._timelineSets.indexOf(t);n>-1&&this._timelineSets.splice(n,1)},b.prototype._addLiveEvent=function(e,t){var n=void 0;if("m.room.redaction"===e.getType()){var r=e.event.redacts,o=this.getUnfilteredTimelineSet().findEventById(r);o&&(o.makeRedacted(e),this.emit("Room.redaction",e,this))}if(e.getUnsigned().transaction_id){var i=this._txnToEvent[e.getUnsigned().transaction_id];if(i)return void this._handleRemoteEcho(e,i)}for(n=0;n<this._timelineSets.length;n++)this._timelineSets[n].addLiveEvent(e,t);e.sender&&"m.room.redaction"!==e.getType()&&this.addReceipt(y(e.sender.userId,e,"m.read"),!0)},b.prototype.addPendingEvent=function(e,t){if(e.status!==f.SENDING)throw new Error("addPendingEvent called on an event with status "+e.status);if(this._txnToEvent[t])throw new Error("addPendingEvent called on an event with known txnId "+t);if(g.setEventMetadata(e,this.getLiveTimeline().getState(g.FORWARDS),!1),this._txnToEvent[t]=e,"detached"==this._opts.pendingEventOrdering)this._pendingEventList.push(e);else for(var n=0;n<this._timelineSets.length;n++){var r=this._timelineSets[n];r.getFilter()?this._filter.filterRoomTimeline([e]).length&&r.addEventToTimeline(e,r.getLiveTimeline(),!1):r.addEventToTimeline(e,r.getLiveTimeline(),!1)}this.emit("Room.localEchoUpdated",e,this,null,null)},b.prototype._handleRemoteEcho=function(e,t){var n=t.getId(),r=e.getId(),o=t.status;delete this._txnToEvent[e.transaction_id],this._pendingEventList&&h.removeElement(this._pendingEventList,function(e){return e.getId()==n},!1),t.handleRemoteEcho(e.event);for(var i=0;i<this._timelineSets.length;i++){this._timelineSets[i].handleRemoteEcho(t,n,r)}this.emit("Room.localEchoUpdated",t,this,n,o)};var E={};function C(e,t,n){if(!n){var r=e.currentState.getStateEvents("m.room.name","");if(r&&r.getContent()&&r.getContent().name)return r.getContent().name}var o=e.getCanonicalAlias();if(!o){var i=e.getAliases();i.length&&(o=i[0])}if(o)return o;var a=e.currentState.getJoinedMemberCount()+e.currentState.getInvitedMemberCount()-1,s=null;if(e._summaryHeroes)s=e._summaryHeroes.map(function(t){var n=e.getMember(t);return n?n.name:t});else{var l=e.currentState.getMembers().filter(function(e){return e.userId!==t&&("invite"===e.membership||"join"===e.membership)});l.sort(function(e,t){return e.userId.localeCompare(t.userId)}),s=(l=l.slice(0,5)).map(function(e){return e.name})}if(a)return S(s,a);if("join"==e.getMyMembership()){var u=e.currentState.getStateEvents("m.room.third_party_invite");if(u&&u.length)return"Inviting "+S(u.map(function(e){return e.getContent().display_name}))}var c=s;return c.length||(c=e.currentState.getMembers().filter(function(e){return e.userId!==t&&"invite"!==e.membership&&"join"!==e.membership}).map(function(e){return e.name})),c.length?"Empty room (was "+S(c)+")":"Empty room"}function S(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.length+1,n=t-1;return e.length?1===e.length&&n<=1?e[0]:2===e.length&&n<=2?e[0]+" and "+e[1]:n>1?e[0]+" and "+n+" others":e[0]+" and 1 other":t<=1?"Empty room":null}E[f.ENCRYPTING]=[f.SENDING,f.NOT_SENT],E[f.SENDING]=[f.ENCRYPTING,f.QUEUED,f.NOT_SENT,f.SENT],E[f.QUEUED]=[f.SENDING,f.CANCELLED],E[f.SENT]=[],E[f.NOT_SENT]=[f.SENDING,f.QUEUED,f.CANCELLED],E[f.CANCELLED]=[],b.prototype.updatePendingEvent=function(e,t,n){if(console.log("setting pendingEvent status to "+t+" in "+e.getRoomId()),t==f.SENT&&!n)throw new Error("updatePendingEvent called with status=SENT, but no new event id");if(t==f.SENT&&this.getUnfilteredTimelineSet().eventIdToTimeline(n))return;var r=e.status,o=e.getId();if(!r)throw new Error("updatePendingEventStatus called on an event which is not a local echo.");var i=E[r];if(!i||i.indexOf(t)<0)throw new Error("Invalid EventStatus transition "+r+"->"+t);if(e.status=t,t==f.SENT){e.event.event_id=n;for(var a=0;a<this._timelineSets.length;a++)this._timelineSets[a].replaceEventId(o,n)}else t==f.CANCELLED&&(this._pendingEventList&&h.removeElement(this._pendingEventList,function(e){return e.getId()==o},!1),this.removeEvent(o));this.emit("Room.localEchoUpdated",e,this,e.getId(),r)},b.prototype.addLiveEvents=function(e,t){var n=void 0;if(t&&-1===["replace","ignore"].indexOf(t))throw new Error("duplicateStrategy MUST be either 'replace' or 'ignore'");for(n=0;n<this._timelineSets.length;n++){var r=this._timelineSets[n].getLiveTimeline();if(r.getPaginationToken(g.FORWARDS))throw new Error("live timeline "+n+" is no longer live - it has a pagination token ("+r.getPaginationToken(g.FORWARDS)+")");if(r.getNeighbouringTimeline(g.FORWARDS))throw new Error("live timeline "+n+" is no longer live - it has a neighbouring timeline")}for(n=0;n<e.length;n++)"m.typing"===e[n].getType()?this.currentState.setTypingEvent(e[n]):"m.receipt"===e[n].getType()?this.addReceipt(e[n]):this._addLiveEvent(e[n],t)},b.prototype.removeEvents=function(e){for(var t=0;t<e.length;++t)this.removeEvent(e[t])},b.prototype.removeEvent=function(e){for(var t=!1,n=0;n<this._timelineSets.length;n++){this._timelineSets[n].removeEvent(e)&&(t=!0)}return t},b.prototype.recalculate=function(){var e=this,t=this.currentState.getStateEvents("m.room.member",this.myUserId);if(t&&"invite"===t.getContent().membership){var n=t.event.invite_room_state||[];h.forEach(n,function(t){e.currentState.getStateEvents(t.type,t.state_key)||e.currentState.setStateEvents([new m({type:t.type,state_key:t.state_key,content:t.content,event_id:"$fake"+Date.now(),room_id:e.roomId,user_id:e.myUserId})])})}var r=this.name;this.name=C(this,this.myUserId),this.summary=new d(this.roomId,{title:this.name}),r!==this.name&&this.emit("Room.name",this)},b.prototype.getUsersReadUpTo=function(e){return this.getReceiptsForEvent(e).filter(function(e){return"m.read"===e.type}).map(function(e){return e.userId})},b.prototype.getEventReadUpTo=function(e,t){var n=this._receipts;return t&&(n=this._realReceipts),void 0===n["m.read"]||void 0===n["m.read"][e]?null:n["m.read"][e].eventId},b.prototype.getReceiptsForEvent=function(e){return this._receiptCacheByEventId[e.getId()]||[]},b.prototype.addReceipt=function(e,t){void 0===t&&(t=!1),t||this._addReceiptsToStructure(e,this._realReceipts),this._addReceiptsToStructure(e,this._receipts),this._receiptCacheByEventId=this._buildReceiptCache(this._receipts),this.emit("Room.receipt",e,this)},b.prototype._addReceiptsToStructure=function(e,t){var n=this;h.keys(e.getContent()).forEach(function(r){h.keys(e.getContent()[r]).forEach(function(o){h.keys(e.getContent()[r][o]).forEach(function(i){var a=e.getContent()[r][o][i];t[o]||(t[o]={});var s=t[o][i];if(s){var l=n.getUnfilteredTimelineSet().compareEventOrdering(s.eventId,r);if(null!==l&&l>=0)return}else t[o][i]={};t[o][i]={eventId:r,data:a}})})})},b.prototype._buildReceiptCache=function(e){var t={};return h.keys(e).forEach(function(n){h.keys(e[n]).forEach(function(r){var o=e[n][r];t[o.eventId]||(t[o.eventId]=[]),t[o.eventId].push({userId:r,type:n,data:o.data})})}),t},b.prototype._addLocalEchoReceipt=function(e,t,n){this.addReceipt(y(e,t,n),!0)},b.prototype.addTags=function(e){this.tags=e.getContent().tags||{},this.emit("Room.tags",e,this)},b.prototype.addAccountData=function(e){for(var t=0;t<e.length;t++){var n=e[t];"m.tag"===n.getType()&&this.addTags(n),this.accountData[n.getType()]=n,this.emit("Room.accountData",n,this)}},b.prototype.getAccountData=function(e){return this.accountData[e]},b.prototype.maySendMessage=function(){return"join"===this.getMyMembership()&&this.currentState.maySendEvent("m.room.message",this.myUserId)},e.exports=b},function(e,t,n){e.exports={default:n(1108),__esModule:!0}},function(e,t,n){var r=n(52),o=n(94),i=n(38)("species");e.exports=function(e,t){var n,a=r(e).constructor;return void 0===a||void 0==(n=r(a)[i])?t:o(n)}},function(e,t){e.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},function(e,t,n){var r=n(52),o=n(35),i=n(405);e.exports=function(e,t){if(r(e),o(t)&&t.constructor===e)return t;var n=i.f(e);return(0,n.resolve)(t),n.promise}},function(e,t,n){"use strict";var r=n(55).EventEmitter;function o(e){this.groupId=e,this.name=null,this.avatarUrl=null,this.myMembership=null,this.inviter=null}n(29).inherits(o,r),o.prototype.setProfile=function(e,t){this.name===e&&this.avatarUrl===t||(this.name=e||this.groupId,this.avatarUrl=t,this.emit("Group.profile",this))},o.prototype.setMyMembership=function(e){this.myMembership!==e&&(this.myMembership=e,this.emit("Group.myMembership",this))},o.prototype.setInviter=function(e){this.inviter=e},e.exports=o},function(e,t,n){"use strict";for(var r=/[\\\"\x00-\x1F]/g,o={},i=0;i<32;++i)o[String.fromCharCode(i)]="\\U"+("0000"+i.toString(16)).slice(-4).toUpperCase();function a(e){return r.lastIndex=0,e.replace(r,function(e){return o[e]})}function s(e){switch(typeof e){case"string":return'"'+a(e)+'"';case"number":return isFinite(e)?e:"null";case"boolean":return e;case"object":return null===e?"null":Array.isArray(e)?function(e){for(var t="[",n="",r=0;r<e.length;++r)n+=t,t=",",n+=s(e[r]);return","!=t?"[]":n+"]"}(e):function(e){var t="{",n="",r=Object.keys(e);r.sort();for(var o=0;o<r.length;++o){var i=r[o];n+=t+'"'+a(i)+'":',t=",",n+=s(e[i])}return","!=t?"{}":n+"}"}(e);default:throw new Error("Cannot stringify: "+typeof e)}}o["\b"]="\\b",o["\t"]="\\t",o["\n"]="\\n",o["\f"]="\\f",o["\r"]="\\r",o['"']='\\"',o["\\"]="\\\\",e.exports={stringify:s}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(40));t.default=l;var o=i(n(17));function i(e){return e&&e.__esModule?e:{default:e}}var a=window.localStorage,s=void 0;try{s=window.indexedDB}catch(e){}function l(e,t){void 0===t&&(t=!0);var n={useAuthorizationHeader:!0};return a&&(n.sessionStore=new o.default.WebStorageSessionStore(a)),s&&a&&t&&(n.store=new o.default.IndexedDBStore({indexedDB:s,dbName:"riot-web-sync",localStorage:a,workerScript:l.indexedDbWorkerScript})),e=(0,r.default)(n,e),o.default.createClient(e)}l.indexedDbWorkerScript=null,e.exports=t.default},function(e,t,n){(function(e,r){var o=/%[sdj%]/g;t.format=function(e){if(!g(e)){for(var t=[],n=0;n<arguments.length;n++)t.push(s(arguments[n]));return t.join(" ")}n=1;for(var r=arguments,i=r.length,a=String(e).replace(o,function(e){if("%%"===e)return"%";if(n>=i)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return e}}),l=r[n];n<i;l=r[++n])h(l)||!b(l)?a+=" "+l:a+=" "+s(l);return a},t.deprecate=function(n,o){if(v(e.process))return function(){return t.deprecate(n,o).apply(this,arguments)};if(!0===r.noDeprecation)return n;var i=!1;return function(){if(!i){if(r.throwDeprecation)throw new Error(o);r.traceDeprecation?console.trace(o):console.error(o),i=!0}return n.apply(this,arguments)}};var i,a={};function s(e,n){var r={seen:[],stylize:u};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),m(n)?r.showHidden=n:n&&t._extend(r,n),v(r.showHidden)&&(r.showHidden=!1),v(r.depth)&&(r.depth=2),v(r.colors)&&(r.colors=!1),v(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=l),c(r,e,r.depth)}function l(e,t){var n=s.styles[t];return n?"["+s.colors[n][0]+"m"+e+"["+s.colors[n][1]+"m":e}function u(e,t){return e}function c(e,n,r){if(e.customInspect&&n&&S(n.inspect)&&n.inspect!==t.inspect&&(!n.constructor||n.constructor.prototype!==n)){var o=n.inspect(r,e);return g(o)||(o=c(e,o,r)),o}var i=function(e,t){if(v(t))return e.stylize("undefined","undefined");if(g(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if(_(t))return e.stylize(""+t,"number");if(m(t))return e.stylize(""+t,"boolean");if(h(t))return e.stylize("null","null")}(e,n);if(i)return i;var a=Object.keys(n),s=function(e){var t={};return e.forEach(function(e,n){t[e]=!0}),t}(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(n)),C(n)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return f(n);if(0===a.length){if(S(n)){var l=n.name?": "+n.name:"";return e.stylize("[Function"+l+"]","special")}if(y(n))return e.stylize(RegExp.prototype.toString.call(n),"regexp");if(E(n))return e.stylize(Date.prototype.toString.call(n),"date");if(C(n))return f(n)}var u,b="",D=!1,w=["{","}"];(p(n)&&(D=!0,w=["[","]"]),S(n))&&(b=" [Function"+(n.name?": "+n.name:"")+"]");return y(n)&&(b=" "+RegExp.prototype.toString.call(n)),E(n)&&(b=" "+Date.prototype.toUTCString.call(n)),C(n)&&(b=" "+f(n)),0!==a.length||D&&0!=n.length?r<0?y(n)?e.stylize(RegExp.prototype.toString.call(n),"regexp"):e.stylize("[Object]","special"):(e.seen.push(n),u=D?function(e,t,n,r,o){for(var i=[],a=0,s=t.length;a<s;++a)x(t,String(a))?i.push(d(e,t,n,r,String(a),!0)):i.push("");return o.forEach(function(o){o.match(/^\d+$/)||i.push(d(e,t,n,r,o,!0))}),i}(e,n,r,s,a):a.map(function(t){return d(e,n,r,s,t,D)}),e.seen.pop(),function(e,t,n){if(e.reduce(function(e,t){return 0,t.indexOf("\n")>=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60)return n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1];return n[0]+t+" "+e.join(", ")+" "+n[1]}(u,b,w)):w[0]+b+w[1]}function f(e){return"["+Error.prototype.toString.call(e)+"]"}function d(e,t,n,r,o,i){var a,s,l;if((l=Object.getOwnPropertyDescriptor(t,o)||{value:t[o]}).get?s=l.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):l.set&&(s=e.stylize("[Setter]","special")),x(r,o)||(a="["+o+"]"),s||(e.seen.indexOf(l.value)<0?(s=h(n)?c(e,l.value,null):c(e,l.value,n-1)).indexOf("\n")>-1&&(s=i?s.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+s.split("\n").map(function(e){return" "+e}).join("\n")):s=e.stylize("[Circular]","special")),v(a)){if(i&&o.match(/^\d+$/))return s;(a=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+s}function p(e){return Array.isArray(e)}function m(e){return"boolean"==typeof e}function h(e){return null===e}function _(e){return"number"==typeof e}function g(e){return"string"==typeof e}function v(e){return void 0===e}function y(e){return b(e)&&"[object RegExp]"===D(e)}function b(e){return"object"==typeof e&&null!==e}function E(e){return b(e)&&"[object Date]"===D(e)}function C(e){return b(e)&&("[object Error]"===D(e)||e instanceof Error)}function S(e){return"function"==typeof e}function D(e){return Object.prototype.toString.call(e)}function w(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(v(i)&&(i=Object({NODE_ENV:"production"}).NODE_DEBUG||""),e=e.toUpperCase(),!a[e])if(new RegExp("\\b"+e+"\\b","i").test(i)){var n=r.pid;a[e]=function(){var r=t.format.apply(t,arguments);console.error("%s %d: %s",e,n,r)}}else a[e]=function(){};return a[e]},t.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=p,t.isBoolean=m,t.isNull=h,t.isNullOrUndefined=function(e){return null==e},t.isNumber=_,t.isString=g,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=v,t.isRegExp=y,t.isObject=b,t.isDate=E,t.isError=C,t.isFunction=S,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=n(1138);var T=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function x(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",function(){var e=new Date,t=[w(e.getHours()),w(e.getMinutes()),w(e.getSeconds())].join(":");return[e.getDate(),T[e.getMonth()],t].join(" ")}(),t.format.apply(t,arguments))},t.inherits=n(100),t._extend=function(e,t){if(!t||!b(t))return e;for(var n=Object.keys(t),r=n.length;r--;)e[n[r]]=t[n[r]];return e}}).call(this,n(15),n(54))},function(e,t,n){"use strict";e.exports={__locale:"en",days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviated_days:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviated_months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],am:"AM",pm:"PM"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(4)),o=i(n(5));function i(e){return e&&e.__esModule?e:{default:e}}var a=function(){function e(){(0,r.default)(this,e)}return(0,o.default)(e,[{key:"getValueOverride",value:function(e,t,n,r){return null}},{key:"onChange",value:function(e,t,n){}}]),e}();t.default=a,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(n(47));t.levelRoleMap=function(e){var t;return t={undefined:(0,o._t)("Default"),0:(0,o._t)("Restricted")},(0,r.default)(t,e,(0,o._t)("Default")),(0,r.default)(t,50,(0,o._t)("Moderator")),(0,r.default)(t,100,(0,o._t)("Admin")),t},t.textualPowerLevel=function(e,t){var n=this.levelRoleMap(t);return n[e]?n[e]+(void 0!==e?" ("+e+")":" ("+t+")"):e};var o=n(2)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.updateCheckStatusEnum=void 0;var r=p(n(11)),o=p(n(4)),i=p(n(5)),a=p(n(12)),s=p(n(233)),l=p(n(13)),u=p(n(1158)),c=n(2),f=p(n(10)),d=p(n(1159));function p(e){return e&&e.__esModule?e:{default:e}}var m=t.updateCheckStatusEnum={CHECKING:"CHECKING",ERROR:"ERROR",NOTAVAILABLE:"NOTAVAILABLE",DOWNLOADING:"DOWNLOADING",READY:"READY"},h=function(e){function t(){(0,o.default)(this,t);var e=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this));return e.favicon=new d.default({animation:"none"}),e.showUpdateCheck=!1,e._updateFavicon(),e.updatable=!0,e.startUpdateCheck=e.startUpdateCheck.bind(e),e.stopUpdateCheck=e.stopUpdateCheck.bind(e),e}return(0,l.default)(t,e),(0,i.default)(t,[{key:"getHumanReadableName",value:function(){return"Vector Base Platform"}},{key:"_updateFavicon",value:function(){try{var e="#d00",t=this.notificationCount;this.errorDidOccur&&(t=t||"×",e="#f00"),this.favicon.badge(t,{bgColor:e})}catch(e){console.warn("Failed to set badge count: "+e.message)}}},{key:"setNotificationCount",value:function(e){this.notificationCount!==e&&((0,s.default)(t.prototype.__proto__||(0,r.default)(t.prototype),"setNotificationCount",this).call(this,e),this._updateFavicon())}},{key:"setErrorStatus",value:function(e){this.errorDidOccur!==e&&((0,s.default)(t.prototype.__proto__||(0,r.default)(t.prototype),"setErrorStatus",this).call(this,e),this._updateFavicon())}},{key:"startUpdater",value:function(){}},{key:"canSelfUpdate",value:function(){return this.updatable}},{key:"startUpdateCheck",value:function(){this.showUpdateCheck=!0,f.default.dispatch({action:"check_updates",value:{status:m.CHECKING}})}},{key:"stopUpdateCheck",value:function(){this.showUpdateCheck=!1,f.default.dispatch({action:"check_updates",value:!1})}},{key:"getUpdateCheckStatusEnum",value:function(){return m}},{key:"installUpdate",value:function(){}},{key:"getDefaultDeviceDisplayName",value:function(){return(0,c._t)("Unknown device")}}]),t}(u.default);t.default=h},function(e,t,n){"use strict";var r=_(n(11)),o=_(n(4)),i=_(n(5)),a=_(n(12)),s=_(n(13)),l=_(n(0)),u=_(n(1)),c=_(n(99)),f=n(2),d=_(n(234)),p=_(n(3)),m=n(17),h=_(n(10));function _(e){return e&&e.__esModule?e:{default:e}}var g=function(e){function t(){var e,n,i,s;(0,o.default)(this,t);for(var l=arguments.length,u=Array(l),c=0;c<l;c++)u[c]=arguments[c];return n=i=(0,a.default)(this,(e=t.__proto__||(0,r.default)(t)).call.apply(e,[this].concat(u))),i.state={iframeSrc:"",page:""},s=n,(0,a.default)(i,s)}return(0,s.default)(t,e),(0,i.default)(t,[{key:"translate",value:function(e){return(0,d.default)((0,f._t)(e))}},{key:"componentWillMount",value:function(){var e=this;if(this._unmounted=!1,this.props.teamToken&&this.props.teamServerUrl)this.setState({iframeSrc:this.props.teamServerUrl+"/static/"+this.props.teamToken+"/home.html"});else{var t=this.props.homePageUrl||"home.html";(0,c.default)({method:"GET",url:t},function(t,n,r){if(!e._unmounted){if(t||n.status<200||n.status>=300)return console.warn("Error loading home page: "+t),void e.setState({page:(0,f._t)("Couldn't load home page")});r=r.replace(/_t\(['"]([\s\S]*?)['"]\)/gm,function(t,n){return e.translate(n)}),e.setState({page:r})}})}}},{key:"componentWillUnmount",value:function(){this._unmounted=!0}},{key:"onLoginClick",value:function(){h.default.dispatch({action:"start_login"})}},{key:"onRegisterClick",value:function(){h.default.dispatch({action:"start_registration"})}},{key:"render",value:function(){var e=this,t="";if(this.context.matrixClient.isGuest()&&(t=l.default.createElement("div",{className:"mx_HomePage_guest_warning"},l.default.createElement("img",{src:"img/warning.svg",width:"24",height:"23"}),l.default.createElement("div",null,l.default.createElement("div",null,(0,f._t)("You are currently using Riot anonymously as a guest.")),l.default.createElement("div",null,(0,f._t)("If you would like to create a Matrix account you can <a>register</a> now.",{},{a:function(t){return l.default.createElement("a",{href:"#",onClick:e.onRegisterClick},t)}})),l.default.createElement("div",null,(0,f._t)("If you already have a Matrix account you can <a>log in</a> instead.",{},{a:function(t){return l.default.createElement("a",{href:"#",onClick:e.onLoginClick},t)}}))))),this.state.iframeSrc)return l.default.createElement("div",{className:"mx_HomePage"},t,l.default.createElement("iframe",{src:this.state.iframeSrc}));var n=p.default.getComponent("elements.GeminiScrollbarWrapper");return l.default.createElement(n,{autoshow:!0,className:"mx_HomePage"},t,l.default.createElement("div",{className:"mx_HomePage_body",dangerouslySetInnerHTML:{__html:this.state.page}}))}}]),t}(l.default.Component);g.displayName="HomePage",g.propTypes={teamServerUrl:u.default.string,teamToken:u.default.string,homePageUrl:u.default.string},g.contextTypes={matrixClient:u.default.instanceOf(m.MatrixClient)},e.exports=g},function(e,t,n){var r=n(602),o={input:!0,option:!0,optgroup:!0,select:!0,button:!0,datalist:!0,textarea:!0},i={tr:{tr:!0,th:!0,td:!0},th:{th:!0},td:{thead:!0,th:!0,td:!0},body:{head:!0,link:!0,script:!0},li:{li:!0},p:{p:!0},h1:{p:!0},h2:{p:!0},h3:{p:!0},h4:{p:!0},h5:{p:!0},h6:{p:!0},select:o,input:o,output:o,button:o,datalist:o,textarea:o,option:{option:!0},optgroup:{optgroup:!0}},a={__proto__:null,area:!0,base:!0,basefont:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,isindex:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,path:!0,circle:!0,ellipse:!0,line:!0,rect:!0,use:!0,stop:!0,polyline:!0,polygon:!0},s=/\s|\//;function l(e,t){this._options=t||{},this._cbs=e||{},this._tagname="",this._attribname="",this._attribvalue="",this._attribs=null,this._stack=[],this.startIndex=0,this.endIndex=null,this._lowerCaseTagNames="lowerCaseTags"in this._options?!!this._options.lowerCaseTags:!this._options.xmlMode,this._lowerCaseAttributeNames="lowerCaseAttributeNames"in this._options?!!this._options.lowerCaseAttributeNames:!this._options.xmlMode,this._options.Tokenizer&&(r=this._options.Tokenizer),this._tokenizer=new r(this._options,this),this._cbs.onparserinit&&this._cbs.onparserinit(this)}n(100)(l,n(55).EventEmitter),l.prototype._updatePosition=function(e){null===this.endIndex?this._tokenizer._sectionStart<=e?this.startIndex=0:this.startIndex=this._tokenizer._sectionStart-e:this.startIndex=this.endIndex+1,this.endIndex=this._tokenizer.getAbsoluteIndex()},l.prototype.ontext=function(e){this._updatePosition(1),this.endIndex--,this._cbs.ontext&&this._cbs.ontext(e)},l.prototype.onopentagname=function(e){if(this._lowerCaseTagNames&&(e=e.toLowerCase()),this._tagname=e,!this._options.xmlMode&&e in i)for(var t;(t=this._stack[this._stack.length-1])in i[e];this.onclosetag(t));!this._options.xmlMode&&e in a||this._stack.push(e),this._cbs.onopentagname&&this._cbs.onopentagname(e),this._cbs.onopentag&&(this._attribs={})},l.prototype.onopentagend=function(){this._updatePosition(1),this._attribs&&(this._cbs.onopentag&&this._cbs.onopentag(this._tagname,this._attribs),this._attribs=null),!this._options.xmlMode&&this._cbs.onclosetag&&this._tagname in a&&this._cbs.onclosetag(this._tagname),this._tagname=""},l.prototype.onclosetag=function(e){if(this._updatePosition(1),this._lowerCaseTagNames&&(e=e.toLowerCase()),!this._stack.length||e in a&&!this._options.xmlMode)this._options.xmlMode||"br"!==e&&"p"!==e||(this.onopentagname(e),this._closeCurrentTag());else{var t=this._stack.lastIndexOf(e);if(-1!==t)if(this._cbs.onclosetag)for(t=this._stack.length-t;t--;)this._cbs.onclosetag(this._stack.pop());else this._stack.length=t;else"p"!==e||this._options.xmlMode||(this.onopentagname(e),this._closeCurrentTag())}},l.prototype.onselfclosingtag=function(){this._options.xmlMode||this._options.recognizeSelfClosing?this._closeCurrentTag():this.onopentagend()},l.prototype._closeCurrentTag=function(){var e=this._tagname;this.onopentagend(),this._stack[this._stack.length-1]===e&&(this._cbs.onclosetag&&this._cbs.onclosetag(e),this._stack.pop())},l.prototype.onattribname=function(e){this._lowerCaseAttributeNames&&(e=e.toLowerCase()),this._attribname=e},l.prototype.onattribdata=function(e){this._attribvalue+=e},l.prototype.onattribend=function(){this._cbs.onattribute&&this._cbs.onattribute(this._attribname,this._attribvalue),this._attribs&&!Object.prototype.hasOwnProperty.call(this._attribs,this._attribname)&&(this._attribs[this._attribname]=this._attribvalue),this._attribname="",this._attribvalue=""},l.prototype._getInstructionName=function(e){var t=e.search(s),n=t<0?e:e.substr(0,t);return this._lowerCaseTagNames&&(n=n.toLowerCase()),n},l.prototype.ondeclaration=function(e){if(this._cbs.onprocessinginstruction){var t=this._getInstructionName(e);this._cbs.onprocessinginstruction("!"+t,"!"+e)}},l.prototype.onprocessinginstruction=function(e){if(this._cbs.onprocessinginstruction){var t=this._getInstructionName(e);this._cbs.onprocessinginstruction("?"+t,"?"+e)}},l.prototype.oncomment=function(e){this._updatePosition(4),this._cbs.oncomment&&this._cbs.oncomment(e),this._cbs.oncommentend&&this._cbs.oncommentend()},l.prototype.oncdata=function(e){this._updatePosition(1),this._options.xmlMode||this._options.recognizeCDATA?(this._cbs.oncdatastart&&this._cbs.oncdatastart(),this._cbs.ontext&&this._cbs.ontext(e),this._cbs.oncdataend&&this._cbs.oncdataend()):this.oncomment("[CDATA["+e+"]]")},l.prototype.onerror=function(e){this._cbs.onerror&&this._cbs.onerror(e)},l.prototype.onend=function(){if(this._cbs.onclosetag)for(var e=this._stack.length;e>0;this._cbs.onclosetag(this._stack[--e]));this._cbs.onend&&this._cbs.onend()},l.prototype.reset=function(){this._cbs.onreset&&this._cbs.onreset(),this._tokenizer.reset(),this._tagname="",this._attribname="",this._attribs=null,this._stack=[],this._cbs.onparserinit&&this._cbs.onparserinit(this)},l.prototype.parseComplete=function(e){this.reset(),this.end(e)},l.prototype.write=function(e){this._tokenizer.write(e)},l.prototype.end=function(e){this._tokenizer.end(e)},l.prototype.pause=function(){this._tokenizer.pause()},l.prototype.resume=function(){this._tokenizer.resume()},l.prototype.parseChunk=l.prototype.write,l.prototype.done=l.prototype.end,e.exports=l},function(e,t,n){e.exports=_e;var r=n(603),o=n(412),i=n(604),a=n(413),s=0,l=s++,u=s++,c=s++,f=s++,d=s++,p=s++,m=s++,h=s++,_=s++,g=s++,v=s++,y=s++,b=s++,E=s++,C=s++,S=s++,D=s++,w=s++,T=s++,x=s++,R=s++,k=s++,N=s++,I=s++,O=s++,A=s++,M=s++,P=s++,L=s++,F=s++,U=s++,j=s++,B=s++,G=s++,q=s++,V=s++,H=s++,Y=s++,z=s++,W=s++,K=s++,$=s++,Q=s++,X=s++,J=s++,Z=s++,ee=s++,te=s++,ne=s++,re=s++,oe=s++,ie=s++,ae=s++,se=s++,le=s++,ue=0,ce=ue++,fe=ue++,de=ue++;function pe(e){return" "===e||"\n"===e||"\t"===e||"\f"===e||"\r"===e}function me(e,t,n){var r=e.toLowerCase();return e===r?function(e){e===r?this._state=t:(this._state=n,this._index--)}:function(o){o===r||o===e?this._state=t:(this._state=n,this._index--)}}function he(e,t){var n=e.toLowerCase();return function(r){r===n||r===e?this._state=t:(this._state=c,this._index--)}}function _e(e,t){this._state=l,this._buffer="",this._sectionStart=0,this._index=0,this._bufferOffset=0,this._baseState=l,this._special=ce,this._cbs=t,this._running=!0,this._ended=!1,this._xmlMode=!(!e||!e.xmlMode),this._decodeEntities=!(!e||!e.decodeEntities)}_e.prototype._stateText=function(e){"<"===e?(this._index>this._sectionStart&&this._cbs.ontext(this._getSection()),this._state=u,this._sectionStart=this._index):this._decodeEntities&&this._special===ce&&"&"===e&&(this._index>this._sectionStart&&this._cbs.ontext(this._getSection()),this._baseState=l,this._state=oe,this._sectionStart=this._index)},_e.prototype._stateBeforeTagName=function(e){"/"===e?this._state=d:"<"===e?(this._cbs.ontext(this._getSection()),this._sectionStart=this._index):">"===e||this._special!==ce||pe(e)?this._state=l:"!"===e?(this._state=C,this._sectionStart=this._index+1):"?"===e?(this._state=D,this._sectionStart=this._index+1):(this._state=this._xmlMode||"s"!==e&&"S"!==e?c:U,this._sectionStart=this._index)},_e.prototype._stateInTagName=function(e){("/"===e||">"===e||pe(e))&&(this._emitToken("onopentagname"),this._state=h,this._index--)},_e.prototype._stateBeforeCloseingTagName=function(e){pe(e)||(">"===e?this._state=l:this._special!==ce?"s"===e||"S"===e?this._state=j:(this._state=l,this._index--):(this._state=p,this._sectionStart=this._index))},_e.prototype._stateInCloseingTagName=function(e){(">"===e||pe(e))&&(this._emitToken("onclosetag"),this._state=m,this._index--)},_e.prototype._stateAfterCloseingTagName=function(e){">"===e&&(this._state=l,this._sectionStart=this._index+1)},_e.prototype._stateBeforeAttributeName=function(e){">"===e?(this._cbs.onopentagend(),this._state=l,this._sectionStart=this._index+1):"/"===e?this._state=f:pe(e)||(this._state=_,this._sectionStart=this._index)},_e.prototype._stateInSelfClosingTag=function(e){">"===e?(this._cbs.onselfclosingtag(),this._state=l,this._sectionStart=this._index+1):pe(e)||(this._state=h,this._index--)},_e.prototype._stateInAttributeName=function(e){("="===e||"/"===e||">"===e||pe(e))&&(this._cbs.onattribname(this._getSection()),this._sectionStart=-1,this._state=g,this._index--)},_e.prototype._stateAfterAttributeName=function(e){"="===e?this._state=v:"/"===e||">"===e?(this._cbs.onattribend(),this._state=h,this._index--):pe(e)||(this._cbs.onattribend(),this._state=_,this._sectionStart=this._index)},_e.prototype._stateBeforeAttributeValue=function(e){'"'===e?(this._state=y,this._sectionStart=this._index+1):"'"===e?(this._state=b,this._sectionStart=this._index+1):pe(e)||(this._state=E,this._sectionStart=this._index,this._index--)},_e.prototype._stateInAttributeValueDoubleQuotes=function(e){'"'===e?(this._emitToken("onattribdata"),this._cbs.onattribend(),this._state=h):this._decodeEntities&&"&"===e&&(this._emitToken("onattribdata"),this._baseState=this._state,this._state=oe,this._sectionStart=this._index)},_e.prototype._stateInAttributeValueSingleQuotes=function(e){"'"===e?(this._emitToken("onattribdata"),this._cbs.onattribend(),this._state=h):this._decodeEntities&&"&"===e&&(this._emitToken("onattribdata"),this._baseState=this._state,this._state=oe,this._sectionStart=this._index)},_e.prototype._stateInAttributeValueNoQuotes=function(e){pe(e)||">"===e?(this._emitToken("onattribdata"),this._cbs.onattribend(),this._state=h,this._index--):this._decodeEntities&&"&"===e&&(this._emitToken("onattribdata"),this._baseState=this._state,this._state=oe,this._sectionStart=this._index)},_e.prototype._stateBeforeDeclaration=function(e){this._state="["===e?k:"-"===e?w:S},_e.prototype._stateInDeclaration=function(e){">"===e&&(this._cbs.ondeclaration(this._getSection()),this._state=l,this._sectionStart=this._index+1)},_e.prototype._stateInProcessingInstruction=function(e){">"===e&&(this._cbs.onprocessinginstruction(this._getSection()),this._state=l,this._sectionStart=this._index+1)},_e.prototype._stateBeforeComment=function(e){"-"===e?(this._state=T,this._sectionStart=this._index+1):this._state=S},_e.prototype._stateInComment=function(e){"-"===e&&(this._state=x)},_e.prototype._stateAfterComment1=function(e){this._state="-"===e?R:T},_e.prototype._stateAfterComment2=function(e){">"===e?(this._cbs.oncomment(this._buffer.substring(this._sectionStart,this._index-2)),this._state=l,this._sectionStart=this._index+1):"-"!==e&&(this._state=T)},_e.prototype._stateBeforeCdata1=me("C",N,S),_e.prototype._stateBeforeCdata2=me("D",I,S),_e.prototype._stateBeforeCdata3=me("A",O,S),_e.prototype._stateBeforeCdata4=me("T",A,S),_e.prototype._stateBeforeCdata5=me("A",M,S),_e.prototype._stateBeforeCdata6=function(e){"["===e?(this._state=P,this._sectionStart=this._index+1):(this._state=S,this._index--)},_e.prototype._stateInCdata=function(e){"]"===e&&(this._state=L)},_e.prototype._stateAfterCdata1=function(e,t){return function(n){n===e&&(this._state=t)}}("]",F),_e.prototype._stateAfterCdata2=function(e){">"===e?(this._cbs.oncdata(this._buffer.substring(this._sectionStart,this._index-2)),this._state=l,this._sectionStart=this._index+1):"]"!==e&&(this._state=P)},_e.prototype._stateBeforeSpecial=function(e){"c"===e||"C"===e?this._state=B:"t"===e||"T"===e?this._state=Q:(this._state=c,this._index--)},_e.prototype._stateBeforeSpecialEnd=function(e){this._special!==fe||"c"!==e&&"C"!==e?this._special!==de||"t"!==e&&"T"!==e?this._state=l:this._state=ee:this._state=Y},_e.prototype._stateBeforeScript1=he("R",G),_e.prototype._stateBeforeScript2=he("I",q),_e.prototype._stateBeforeScript3=he("P",V),_e.prototype._stateBeforeScript4=he("T",H),_e.prototype._stateBeforeScript5=function(e){("/"===e||">"===e||pe(e))&&(this._special=fe),this._state=c,this._index--},_e.prototype._stateAfterScript1=me("R",z,l),_e.prototype._stateAfterScript2=me("I",W,l),_e.prototype._stateAfterScript3=me("P",K,l),_e.prototype._stateAfterScript4=me("T",$,l),_e.prototype._stateAfterScript5=function(e){">"===e||pe(e)?(this._special=ce,this._state=p,this._sectionStart=this._index-6,this._index--):this._state=l},_e.prototype._stateBeforeStyle1=he("Y",X),_e.prototype._stateBeforeStyle2=he("L",J),_e.prototype._stateBeforeStyle3=he("E",Z),_e.prototype._stateBeforeStyle4=function(e){("/"===e||">"===e||pe(e))&&(this._special=de),this._state=c,this._index--},_e.prototype._stateAfterStyle1=me("Y",te,l),_e.prototype._stateAfterStyle2=me("L",ne,l),_e.prototype._stateAfterStyle3=me("E",re,l),_e.prototype._stateAfterStyle4=function(e){">"===e||pe(e)?(this._special=ce,this._state=p,this._sectionStart=this._index-5,this._index--):this._state=l},_e.prototype._stateBeforeEntity=me("#",ie,ae),_e.prototype._stateBeforeNumericEntity=me("X",le,se),_e.prototype._parseNamedEntityStrict=function(){if(this._sectionStart+1<this._index){var e=this._buffer.substring(this._sectionStart+1,this._index),t=this._xmlMode?a:o;t.hasOwnProperty(e)&&(this._emitPartial(t[e]),this._sectionStart=this._index+1)}},_e.prototype._parseLegacyEntity=function(){var e=this._sectionStart+1,t=this._index-e;for(t>6&&(t=6);t>=2;){var n=this._buffer.substr(e,t);if(i.hasOwnProperty(n))return this._emitPartial(i[n]),void(this._sectionStart+=t+1);t--}},_e.prototype._stateInNamedEntity=function(e){";"===e?(this._parseNamedEntityStrict(),this._sectionStart+1<this._index&&!this._xmlMode&&this._parseLegacyEntity(),this._state=this._baseState):(e<"a"||e>"z")&&(e<"A"||e>"Z")&&(e<"0"||e>"9")&&(this._xmlMode||this._sectionStart+1===this._index||(this._baseState!==l?"="!==e&&this._parseNamedEntityStrict():this._parseLegacyEntity()),this._state=this._baseState,this._index--)},_e.prototype._decodeNumericEntity=function(e,t){var n=this._sectionStart+e;if(n!==this._index){var o=this._buffer.substring(n,this._index),i=parseInt(o,t);this._emitPartial(r(i)),this._sectionStart=this._index}else this._sectionStart--;this._state=this._baseState},_e.prototype._stateInNumericEntity=function(e){";"===e?(this._decodeNumericEntity(2,10),this._sectionStart++):(e<"0"||e>"9")&&(this._xmlMode?this._state=this._baseState:this._decodeNumericEntity(2,10),this._index--)},_e.prototype._stateInHexEntity=function(e){";"===e?(this._decodeNumericEntity(3,16),this._sectionStart++):(e<"a"||e>"f")&&(e<"A"||e>"F")&&(e<"0"||e>"9")&&(this._xmlMode?this._state=this._baseState:this._decodeNumericEntity(3,16),this._index--)},_e.prototype._cleanup=function(){this._sectionStart<0?(this._buffer="",this._bufferOffset+=this._index,this._index=0):this._running&&(this._state===l?(this._sectionStart!==this._index&&this._cbs.ontext(this._buffer.substr(this._sectionStart)),this._buffer="",this._bufferOffset+=this._index,this._index=0):this._sectionStart===this._index?(this._buffer="",this._bufferOffset+=this._index,this._index=0):(this._buffer=this._buffer.substr(this._sectionStart),this._index-=this._sectionStart,this._bufferOffset+=this._sectionStart),this._sectionStart=0)},_e.prototype.write=function(e){this._ended&&this._cbs.onerror(Error(".write() after done!")),this._buffer+=e,this._parse()},_e.prototype._parse=function(){for(;this._index<this._buffer.length&&this._running;){var e=this._buffer.charAt(this._index);this._state===l?this._stateText(e):this._state===u?this._stateBeforeTagName(e):this._state===c?this._stateInTagName(e):this._state===d?this._stateBeforeCloseingTagName(e):this._state===p?this._stateInCloseingTagName(e):this._state===m?this._stateAfterCloseingTagName(e):this._state===f?this._stateInSelfClosingTag(e):this._state===h?this._stateBeforeAttributeName(e):this._state===_?this._stateInAttributeName(e):this._state===g?this._stateAfterAttributeName(e):this._state===v?this._stateBeforeAttributeValue(e):this._state===y?this._stateInAttributeValueDoubleQuotes(e):this._state===b?this._stateInAttributeValueSingleQuotes(e):this._state===E?this._stateInAttributeValueNoQuotes(e):this._state===C?this._stateBeforeDeclaration(e):this._state===S?this._stateInDeclaration(e):this._state===D?this._stateInProcessingInstruction(e):this._state===w?this._stateBeforeComment(e):this._state===T?this._stateInComment(e):this._state===x?this._stateAfterComment1(e):this._state===R?this._stateAfterComment2(e):this._state===k?this._stateBeforeCdata1(e):this._state===N?this._stateBeforeCdata2(e):this._state===I?this._stateBeforeCdata3(e):this._state===O?this._stateBeforeCdata4(e):this._state===A?this._stateBeforeCdata5(e):this._state===M?this._stateBeforeCdata6(e):this._state===P?this._stateInCdata(e):this._state===L?this._stateAfterCdata1(e):this._state===F?this._stateAfterCdata2(e):this._state===U?this._stateBeforeSpecial(e):this._state===j?this._stateBeforeSpecialEnd(e):this._state===B?this._stateBeforeScript1(e):this._state===G?this._stateBeforeScript2(e):this._state===q?this._stateBeforeScript3(e):this._state===V?this._stateBeforeScript4(e):this._state===H?this._stateBeforeScript5(e):this._state===Y?this._stateAfterScript1(e):this._state===z?this._stateAfterScript2(e):this._state===W?this._stateAfterScript3(e):this._state===K?this._stateAfterScript4(e):this._state===$?this._stateAfterScript5(e):this._state===Q?this._stateBeforeStyle1(e):this._state===X?this._stateBeforeStyle2(e):this._state===J?this._stateBeforeStyle3(e):this._state===Z?this._stateBeforeStyle4(e):this._state===ee?this._stateAfterStyle1(e):this._state===te?this._stateAfterStyle2(e):this._state===ne?this._stateAfterStyle3(e):this._state===re?this._stateAfterStyle4(e):this._state===oe?this._stateBeforeEntity(e):this._state===ie?this._stateBeforeNumericEntity(e):this._state===ae?this._stateInNamedEntity(e):this._state===se?this._stateInNumericEntity(e):this._state===le?this._stateInHexEntity(e):this._cbs.onerror(Error("unknown _state"),this._state),this._index++}this._cleanup()},_e.prototype.pause=function(){this._running=!1},_e.prototype.resume=function(){this._running=!0,this._index<this._buffer.length&&this._parse(),this._ended&&this._finish()},_e.prototype.end=function(e){this._ended&&this._cbs.onerror(Error(".end() after done!")),e&&this.write(e),this._ended=!0,this._running&&this._finish()},_e.prototype._finish=function(){this._sectionStart<this._index&&this._handleTrailingData(),this._cbs.onend()},_e.prototype._handleTrailingData=function(){var e=this._buffer.substr(this._sectionStart);this._state===P||this._state===L||this._state===F?this._cbs.oncdata(e):this._state===T||this._state===x||this._state===R?this._cbs.oncomment(e):this._state!==ae||this._xmlMode?this._state!==se||this._xmlMode?this._state!==le||this._xmlMode?this._state!==c&&this._state!==h&&this._state!==v&&this._state!==g&&this._state!==_&&this._state!==b&&this._state!==y&&this._state!==E&&this._state!==p&&this._cbs.ontext(e):(this._decodeNumericEntity(3,16),this._sectionStart<this._index&&(this._state=this._baseState,this._handleTrailingData())):(this._decodeNumericEntity(2,10),this._sectionStart<this._index&&(this._state=this._baseState,this._handleTrailingData())):(this._parseLegacyEntity(),this._sectionStart<this._index&&(this._state=this._baseState,this._handleTrailingData()))},_e.prototype.reset=function(){_e.call(this,{xmlMode:this._xmlMode,decodeEntities:this._decodeEntities},this._cbs)},_e.prototype.getAbsoluteIndex=function(){return this._bufferOffset+this._index},_e.prototype._getSection=function(){return this._buffer.substring(this._sectionStart,this._index)},_e.prototype._emitToken=function(e){this._cbs[e](this._getSection()),this._sectionStart=-1},_e.prototype._emitPartial=function(e){this._baseState!==l?this._cbs.onattribdata(e):this._cbs.ontext(e)}},function(e,t,n){var r=n(1164);e.exports=function(e){if(e>=55296&&e<=57343||e>1114111)return"�";e in r&&(e=r[e]);var t="";e>65535&&(e-=65536,t+=String.fromCharCode(e>>>10&1023|55296),e=56320|1023&e);return t+=String.fromCharCode(e)}},function(e){e.exports={Aacute:"Á",aacute:"á",Acirc:"Â",acirc:"â",acute:"´",AElig:"Æ",aelig:"æ",Agrave:"À",agrave:"à",amp:"&",AMP:"&",Aring:"Å",aring:"å",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",brvbar:"¦",Ccedil:"Ç",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",COPY:"©",curren:"¤",deg:"°",divide:"÷",Eacute:"É",eacute:"é",Ecirc:"Ê",ecirc:"ê",Egrave:"È",egrave:"è",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",GT:">",Iacute:"Í",iacute:"í",Icirc:"Î",icirc:"î",iexcl:"¡",Igrave:"Ì",igrave:"ì",iquest:"¿",Iuml:"Ï",iuml:"ï",laquo:"«",lt:"<",LT:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",Ntilde:"Ñ",ntilde:"ñ",Oacute:"Ó",oacute:"ó",Ocirc:"Ô",ocirc:"ô",Ograve:"Ò",ograve:"ò",ordf:"ª",ordm:"º",Oslash:"Ø",oslash:"ø",Otilde:"Õ",otilde:"õ",Ouml:"Ö",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',QUOT:'"',raquo:"»",reg:"®",REG:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",THORN:"Þ",thorn:"þ",times:"×",Uacute:"Ú",uacute:"ú",Ucirc:"Û",ucirc:"û",Ugrave:"Ù",ugrave:"ù",uml:"¨",Uuml:"Ü",uuml:"ü",Yacute:"Ý",yacute:"ý",yen:"¥",yuml:"ÿ"}},function(e,t){var n=e.exports={get firstChild(){var e=this.children;return e&&e[0]||null},get lastChild(){var e=this.children;return e&&e[e.length-1]||null},get nodeType(){return o[this.type]||o.element}},r={tagName:"name",childNodes:"children",parentNode:"parent",previousSibling:"prev",nextSibling:"next",nodeValue:"data"},o={element:1,text:3,cdata:4,comment:8};Object.keys(r).forEach(function(e){var t=r[e];Object.defineProperty(n,e,{get:function(){return this[t]||null},set:function(e){return this[t]=e,e}})})},function(e,t,n){e.exports=s;var r=n(601),o=n(1169).Writable||n(1178).Writable,i=n(416).StringDecoder,a=n(193).Buffer;function s(e,t){var n=this._parser=new r(e,t),a=this._decoder=new i;o.call(this,{decodeStrings:!1}),this.once("finish",function(){n.end(a.end())})}n(100)(s,o),o.prototype._write=function(e,t,n){e instanceof a&&(e=this._decoder.write(e)),this._parser.write(e),n()}},function(e,t,n){"use strict";(function(t,r){var o=n(294);e.exports=y;var i,a=n(568);y.ReadableState=v;n(55).EventEmitter;var s=function(e,t){return e.listeners(t).length},l=n(608),u=n(295).Buffer,c=t.Uint8Array||function(){};var f=n(237);f.inherits=n(100);var d=n(1170),p=void 0;p=d&&d.debuglog?d.debuglog("stream"):function(){};var m,h=n(1171),_=n(609);f.inherits(y,l);var g=["error","close","destroy","pause","resume"];function v(e,t){i=i||n(175),e=e||{},this.objectMode=!!e.objectMode,t instanceof i&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var r=e.highWaterMark,o=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:o,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new h,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(m||(m=n(416).StringDecoder),this.decoder=new m(e.encoding),this.encoding=e.encoding)}function y(e){if(i=i||n(175),!(this instanceof y))return new y(e);this._readableState=new v(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),l.call(this)}function b(e,t,n,r,o){var i,a=e._readableState;null===t?(a.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,D(e)}(e,a)):(o||(i=function(e,t){var n;(function(e){return u.isBuffer(e)||e instanceof c})(t)||"string"==typeof t||void 0===t||e.objectMode||(n=new TypeError("Invalid non-string/buffer chunk"));return n}(a,t)),i?e.emit("error",i):a.objectMode||t&&t.length>0?("string"==typeof t||a.objectMode||Object.getPrototypeOf(t)===u.prototype||(t=function(e){return u.from(e)}(t)),r?a.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):E(e,a,t,!0):a.ended?e.emit("error",new Error("stream.push() after EOF")):(a.reading=!1,a.decoder&&!n?(t=a.decoder.write(t),a.objectMode||0!==t.length?E(e,a,t,!1):T(e,a)):E(e,a,t,!1))):r||(a.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.length<e.highWaterMark||0===e.length)}(a)}function E(e,t,n,r){t.flowing&&0===t.length&&!t.sync?(e.emit("data",n),e.read(0)):(t.length+=t.objectMode?1:n.length,r?t.buffer.unshift(n):t.buffer.push(n),t.needReadable&&D(e)),T(e,t)}Object.defineProperty(y.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}}),y.prototype.destroy=_.destroy,y.prototype._undestroy=_.undestroy,y.prototype._destroy=function(e,t){this.push(null),t(e)},y.prototype.push=function(e,t){var n,r=this._readableState;return r.objectMode?n=!0:"string"==typeof e&&((t=t||r.defaultEncoding)!==r.encoding&&(e=u.from(e,t),t=""),n=!0),b(this,e,t,!1,n)},y.prototype.unshift=function(e){return b(this,e,null,!0,!1)},y.prototype.isPaused=function(){return!1===this._readableState.flowing},y.prototype.setEncoding=function(e){return m||(m=n(416).StringDecoder),this._readableState.decoder=new m(e),this._readableState.encoding=e,this};var C=8388608;function S(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!=e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=function(e){return e>=C?e=C:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function D(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(p("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?o(w,e):w(e))}function w(e){p("emit readable"),e.emit("readable"),N(e)}function T(e,t){t.readingMore||(t.readingMore=!0,o(x,e,t))}function x(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length<t.highWaterMark&&(p("maybeReadMore read 0"),e.read(0),n!==t.length);)n=t.length;t.readingMore=!1}function R(e){p("readable nexttick read 0"),e.read(0)}function k(e,t){t.reading||(p("resume read 0"),e.read(0)),t.resumeScheduled=!1,t.awaitDrain=0,e.emit("resume"),N(e),t.flowing&&!t.reading&&e.read(0)}function N(e){var t=e._readableState;for(p("flow",t.flowing);t.flowing&&null!==e.read(););}function I(e,t){return 0===t.length?null:(t.objectMode?n=t.buffer.shift():!e||e>=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):n=function(e,t,n){var r;e<t.head.data.length?(r=t.head.data.slice(0,e),t.head.data=t.head.data.slice(e)):r=e===t.head.data.length?t.shift():n?function(e,t){var n=t.head,r=1,o=n.data;e-=o.length;for(;n=n.next;){var i=n.data,a=e>i.length?i.length:e;if(a===i.length?o+=i:o+=i.slice(0,e),0===(e-=a)){a===i.length?(++r,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=i.slice(a));break}++r}return t.length-=r,o}(e,t):function(e,t){var n=u.allocUnsafe(e),r=t.head,o=1;r.data.copy(n),e-=r.data.length;for(;r=r.next;){var i=r.data,a=e>i.length?i.length:e;if(i.copy(n,n.length-e,0,a),0===(e-=a)){a===i.length?(++o,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=i.slice(a));break}++o}return t.length-=o,n}(e,t);return r}(e,t.buffer,t.decoder),n);var n}function O(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,o(A,t,e))}function A(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function M(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1}y.prototype.read=function(e){p("read",e),e=parseInt(e,10);var t=this._readableState,n=e;if(0!==e&&(t.emittedReadable=!1),0===e&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return p("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?O(this):D(this),null;if(0===(e=S(e,t))&&t.ended)return 0===t.length&&O(this),null;var r,o=t.needReadable;return p("need readable",o),(0===t.length||t.length-e<t.highWaterMark)&&p("length less than watermark",o=!0),t.ended||t.reading?p("reading or ended",o=!1):o&&(p("do read"),t.reading=!0,t.sync=!0,0===t.length&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1,t.reading||(e=S(n,t))),null===(r=e>0?I(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&O(this)),null!==r&&this.emit("data",r),r},y.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},y.prototype.pipe=function(e,t){var n=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=e;break;case 1:i.pipes=[i.pipes,e];break;default:i.pipes.push(e)}i.pipesCount+=1,p("pipe count=%d opts=%j",i.pipesCount,t);var l=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr?c:y;function u(t,r){p("onunpipe"),t===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,p("cleanup"),e.removeListener("close",g),e.removeListener("finish",v),e.removeListener("drain",f),e.removeListener("error",_),e.removeListener("unpipe",u),n.removeListener("end",c),n.removeListener("end",y),n.removeListener("data",h),d=!0,!i.awaitDrain||e._writableState&&!e._writableState.needDrain||f())}function c(){p("onend"),e.end()}i.endEmitted?o(l):n.once("end",l),e.on("unpipe",u);var f=function(e){return function(){var t=e._readableState;p("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,"data")&&(t.flowing=!0,N(e))}}(n);e.on("drain",f);var d=!1;var m=!1;function h(t){p("ondata"),m=!1,!1!==e.write(t)||m||((1===i.pipesCount&&i.pipes===e||i.pipesCount>1&&-1!==M(i.pipes,e))&&!d&&(p("false write response, pause",n._readableState.awaitDrain),n._readableState.awaitDrain++,m=!0),n.pause())}function _(t){p("onerror",t),y(),e.removeListener("error",_),0===s(e,"error")&&e.emit("error",t)}function g(){e.removeListener("finish",v),y()}function v(){p("onfinish"),e.removeListener("close",g),y()}function y(){p("unpipe"),n.unpipe(e)}return n.on("data",h),function(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?a(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(e,"error",_),e.once("close",g),e.once("finish",v),e.emit("pipe",n),i.flowing||(p("pipe resume"),n.resume()),e},y.prototype.unpipe=function(e){var t=this._readableState,n={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,n),this);if(!e){var r=t.pipes,o=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i<o;i++)r[i].emit("unpipe",this,n);return this}var a=M(t.pipes,e);return-1===a?this:(t.pipes.splice(a,1),t.pipesCount-=1,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit("unpipe",this,n),this)},y.prototype.on=function(e,t){var n=l.prototype.on.call(this,e,t);if("data"===e)!1!==this._readableState.flowing&&this.resume();else if("readable"===e){var r=this._readableState;r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.emittedReadable=!1,r.reading?r.length&&D(this):o(R,this))}return n},y.prototype.addListener=y.prototype.on,y.prototype.resume=function(){var e=this._readableState;return e.flowing||(p("resume"),e.flowing=!0,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,o(k,e,t))}(this,e)),this},y.prototype.pause=function(){return p("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(p("pause"),this._readableState.flowing=!1,this.emit("pause")),this},y.prototype.wrap=function(e){var t=this._readableState,n=!1,r=this;for(var o in e.on("end",function(){if(p("wrapped end"),t.decoder&&!t.ended){var e=t.decoder.end();e&&e.length&&r.push(e)}r.push(null)}),e.on("data",function(o){(p("wrapped data"),t.decoder&&(o=t.decoder.write(o)),!t.objectMode||null!==o&&void 0!==o)&&((t.objectMode||o&&o.length)&&(r.push(o)||(n=!0,e.pause())))}),e)void 0===this[o]&&"function"==typeof e[o]&&(this[o]=function(t){return function(){return e[t].apply(e,arguments)}}(o));for(var i=0;i<g.length;i++)e.on(g[i],r.emit.bind(r,g[i]));return r._read=function(t){p("wrapped _read",t),n&&(n=!1,e.resume())},r},y._fromList=I}).call(this,n(15),n(54))},function(e,t,n){e.exports=n(55).EventEmitter},function(e,t,n){"use strict";var r=n(294);function o(e,t){e.emit("error",t)}e.exports={destroy:function(e,t){var n=this,i=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;i||a?t?t(e):!e||this._writableState&&this._writableState.errorEmitted||r(o,this,e):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(e){!t&&e?(r(o,n,e),n._writableState&&(n._writableState.errorEmitted=!0)):t&&t(e)}))},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(e,t,n){"use strict";e.exports=a;var r=n(175),o=n(237);function i(e){this.afterTransform=function(t,n){return function(e,t,n){var r=e._transformState;r.transforming=!1;var o=r.writecb;if(!o)return e.emit("error",new Error("write callback called multiple times"));r.writechunk=null,r.writecb=null,null!==n&&void 0!==n&&e.push(n);o(t);var i=e._readableState;i.reading=!1,(i.needReadable||i.length<i.highWaterMark)&&e._read(i.highWaterMark)}(e,t,n)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null,this.writeencoding=null}function a(e){if(!(this instanceof a))return new a(e);r.call(this,e),this._transformState=new i(this);var t=this;this._readableState.needReadable=!0,this._readableState.sync=!1,e&&("function"==typeof e.transform&&(this._transform=e.transform),"function"==typeof e.flush&&(this._flush=e.flush)),this.once("prefinish",function(){"function"==typeof this._flush?this._flush(function(e,n){s(t,e,n)}):s(t)})}function s(e,t,n){if(t)return e.emit("error",t);null!==n&&void 0!==n&&e.push(n);var r=e._writableState,o=e._transformState;if(r.length)throw new Error("Calling transform done when ws.length != 0");if(o.transforming)throw new Error("Calling transform done when still transforming");return e.push(null)}o.inherits=n(100),o.inherits(a,r),a.prototype.push=function(e,t){return this._transformState.needTransform=!1,r.prototype.push.call(this,e,t)},a.prototype._transform=function(e,t,n){throw new Error("_transform() is not implemented")},a.prototype._write=function(e,t,n){var r=this._transformState;if(r.writecb=n,r.writechunk=e,r.writeencoding=t,!r.transforming){var o=this._readableState;(r.needTransform||o.needReadable||o.length<o.highWaterMark)&&this._read(o.highWaterMark)}},a.prototype._read=function(e){var t=this._transformState;null!==t.writechunk&&t.writecb&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0},a.prototype._destroy=function(e,t){var n=this;r.prototype._destroy.call(this,e,function(e){t(e),n.emit("close")})}},function(e,t,n){"use strict";t.__esModule=!0;var r=a(n(1202)),o=a(n(612)),i=a(n(1203));function a(e){return e&&e.__esModule?e:{default:e}}var s=function(){function e(t,n,r,o,i,a){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),o&&(this.source=o),a&&(this.plugin=a),void 0!==n&&void 0!==r&&(this.line=n,this.column=r),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}return e.prototype.setMessage=function(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"<css input>",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason},e.prototype.showSourceCode=function(e){var t=this;if(!this.source)return"";var n=this.source;void 0===e&&(e=r.default.stdout),e&&(n=(0,i.default)(n));var a=n.split(/\r?\n/),s=Math.max(this.line-3,0),l=Math.min(this.line+2,a.length),u=String(l).length;function c(t){return e&&o.default.red?o.default.red.bold(t):t}function f(t){return e&&o.default.gray?o.default.gray(t):t}return a.slice(s,l).map(function(e,n){var r=s+1+n,o=" "+(" "+r).slice(-u)+" | ";if(r===t.line){var i=f(o.replace(/\d/g," "))+e.slice(0,t.column-1).replace(/[^\t]/g," ");return c(">")+f(o)+e+"\n "+i+c("^")}return" "+f(o)+e}).join("\n")},e.prototype.toString=function(){var e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e},e}();t.default=s,e.exports=t.default},function(e,t){},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.css.valueOf(),T=t.ignoreErrors,x=void 0,R=void 0,k=void 0,N=void 0,I=void 0,O=void 0,A=void 0,M=void 0,P=void 0,L=void 0,F=void 0,U=void 0,j=void 0,B=void 0,G=n.length,q=-1,V=1,H=0,Y=[],z=[];function W(t){throw e.error("Unclosed "+t,V,H-q)}return{back:function(e){z.push(e)},nextToken:function(){if(z.length)return z.pop();if(H>=G)return;((x=n.charCodeAt(H))===s||x===u||x===f&&n.charCodeAt(H+1)!==s)&&(q=H,V+=1);switch(x){case s:case l:case c:case f:case u:R=H;do{R+=1,(x=n.charCodeAt(R))===s&&(q=R,V+=1)}while(x===l||x===s||x===c||x===f||x===u);B=["space",n.slice(H,R)],H=R-1;break;case d:B=["[","[",V,H-q];break;case p:B=["]","]",V,H-q];break;case _:B=["{","{",V,H-q];break;case g:B=["}","}",V,H-q];break;case b:B=[":",":",V,H-q];break;case v:B=[";",";",V,H-q];break;case m:if(U=Y.length?Y.pop()[1]:"",j=n.charCodeAt(H+1),"url"===U&&j!==r&&j!==o&&j!==l&&j!==s&&j!==c&&j!==u&&j!==f){R=H;do{if(L=!1,-1===(R=n.indexOf(")",R+1))){if(T){R=H;break}W("bracket")}for(F=R;n.charCodeAt(F-1)===i;)F-=1,L=!L}while(L);B=["brackets",n.slice(H,R+1),V,H-q,V,R-q],H=R}else R=n.indexOf(")",H+1),O=n.slice(H,R+1),-1===R||D.test(O)?B=["(","(",V,H-q]:(B=["brackets",O,V,H-q,V,R-q],H=R);break;case h:B=[")",")",V,H-q];break;case r:case o:k=x===r?"'":'"',R=H;do{if(L=!1,-1===(R=n.indexOf(k,R+1))){if(T){R=H+1;break}W("string")}for(F=R;n.charCodeAt(F-1)===i;)F-=1,L=!L}while(L);O=n.slice(H,R+1),N=O.split("\n"),(I=N.length-1)>0?(M=V+I,P=R-N[I].length):(M=V,P=q),B=["string",n.slice(H,R+1),V,H-q,M,R-P],q=P,V=M,H=R;break;case E:C.lastIndex=H+1,C.test(n),R=0===C.lastIndex?n.length-1:C.lastIndex-2,B=["at-word",n.slice(H,R+1),V,H-q,V,R-q],H=R;break;case i:for(R=H,A=!0;n.charCodeAt(R+1)===i;)R+=1,A=!A;if(x=n.charCodeAt(R+1),A&&x!==a&&x!==l&&x!==s&&x!==c&&x!==f&&x!==u&&(R+=1,w.test(n.charAt(R)))){for(;w.test(n.charAt(R+1));)R+=1;n.charCodeAt(R+1)===l&&(R+=1)}B=["word",n.slice(H,R+1),V,H-q,V,R-q],H=R;break;default:x===a&&n.charCodeAt(H+1)===y?(0===(R=n.indexOf("*/",H+2)+1)&&(T?R=n.length:W("comment")),O=n.slice(H,R+1),N=O.split("\n"),(I=N.length-1)>0?(M=V+I,P=R-N[I].length):(M=V,P=q),B=["comment",O,V,H-q,M,R-P],q=P,V=M,H=R):(S.lastIndex=H+1,S.test(n),R=0===S.lastIndex?n.length-1:S.lastIndex-2,B=["word",n.slice(H,R+1),V,H-q,V,R-q],Y.push(B),H=R)}return H++,B},endOfFile:function(){return 0===z.length&&H>=G}}};var r=39,o=34,i=92,a=47,s=10,l=32,u=12,c=9,f=13,d=91,p=93,m=40,h=41,_=123,g=125,v=59,y=42,b=58,E=64,C=/[ \n\t\r\f\{\}\(\)'"\\;/\[\]#]/g,S=/[ \n\t\r\f\(\)\{\}:;@!'"\\\]\[#]|\/(?=\*)/g,D=/.[\\\/\("'\n]/,w=/[a-f0-9]/i;e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=l(n(611)),a=l(n(1204)),s=l(n(420));function l(e){return e&&e.__esModule?e:{default:e}}var u=0,c=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),null===t||"object"===(void 0===t?"undefined":r(t))&&!t.toString)throw new Error("PostCSS received "+t+" instead of CSS string");this.css=t.toString(),"\ufeff"!==this.css[0]&&"￾"!==this.css[0]||(this.css=this.css.slice(1)),n.from&&(/^\w+:\/\//.test(n.from)?this.file=n.from:this.file=s.default.resolve(n.from));var o=new a.default(this.css,n);if(o.text){this.map=o;var i=o.consumer().file;!this.file&&i&&(this.file=this.mapResolve(i))}this.file||(u+=1,this.id="<input css "+u+">"),this.map&&(this.map.file=this.from)}return e.prototype.error=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=void 0,a=this.origin(t,n);return(o=a?new i.default(e,a.line,a.column,a.source,a.file,r.plugin):new i.default(e,t,n,this.css,this.file,r.plugin)).input={line:t,column:n,source:this.css},this.file&&(o.input.file=this.file),o},e.prototype.origin=function(e,t){if(!this.map)return!1;var n=this.map.consumer(),r=n.originalPositionFor({line:e,column:t});if(!r.source)return!1;var o={file:this.mapResolve(r.source),line:r.line,column:r.column},i=n.sourceContentFor(r.source);return i&&(o.source=i),o},e.prototype.mapResolve=function(e){return/^\w+:\/\//.test(e)?e:s.default.resolve(this.map.consumer().sourceRoot||".",e)},o(e,[{key:"from",get:function(){return this.file||this.id}}]),e}();t.default=c,e.exports=t.default},function(e,t,n){t.SourceMapGenerator=n(616).SourceMapGenerator,t.SourceMapConsumer=n(1207).SourceMapConsumer,t.SourceNode=n(1210).SourceNode},function(e,t,n){var r=n(617),o=n(238),i=n(618).ArraySet,a=n(1206).MappingList;function s(e){e||(e={}),this._file=o.getArg(e,"file",null),this._sourceRoot=o.getArg(e,"sourceRoot",null),this._skipValidation=o.getArg(e,"skipValidation",!1),this._sources=new i,this._names=new i,this._mappings=new a,this._sourcesContents=null}s.prototype._version=3,s.fromSourceMap=function(e){var t=e.sourceRoot,n=new s({file:e.file,sourceRoot:t});return e.eachMapping(function(e){var r={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(r.source=e.source,null!=t&&(r.source=o.relative(t,r.source)),r.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(r.name=e.name)),n.addMapping(r)}),e.sources.forEach(function(r){var i=r;null!==t&&(i=o.relative(t,r)),n._sources.has(i)||n._sources.add(i);var a=e.sourceContentFor(r);null!=a&&n.setSourceContent(r,a)}),n},s.prototype.addMapping=function(e){var t=o.getArg(e,"generated"),n=o.getArg(e,"original",null),r=o.getArg(e,"source",null),i=o.getArg(e,"name",null);this._skipValidation||this._validateMapping(t,n,r,i),null!=r&&(r=String(r),this._sources.has(r)||this._sources.add(r)),null!=i&&(i=String(i),this._names.has(i)||this._names.add(i)),this._mappings.add({generatedLine:t.line,generatedColumn:t.column,originalLine:null!=n&&n.line,originalColumn:null!=n&&n.column,source:r,name:i})},s.prototype.setSourceContent=function(e,t){var n=e;null!=this._sourceRoot&&(n=o.relative(this._sourceRoot,n)),null!=t?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[o.toSetString(n)]=t):this._sourcesContents&&(delete this._sourcesContents[o.toSetString(n)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},s.prototype.applySourceMap=function(e,t,n){var r=t;if(null==t){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');r=e.file}var a=this._sourceRoot;null!=a&&(r=o.relative(a,r));var s=new i,l=new i;this._mappings.unsortedForEach(function(t){if(t.source===r&&null!=t.originalLine){var i=e.originalPositionFor({line:t.originalLine,column:t.originalColumn});null!=i.source&&(t.source=i.source,null!=n&&(t.source=o.join(n,t.source)),null!=a&&(t.source=o.relative(a,t.source)),t.originalLine=i.line,t.originalColumn=i.column,null!=i.name&&(t.name=i.name))}var u=t.source;null==u||s.has(u)||s.add(u);var c=t.name;null==c||l.has(c)||l.add(c)},this),this._sources=s,this._names=l,e.sources.forEach(function(t){var r=e.sourceContentFor(t);null!=r&&(null!=n&&(t=o.join(n,t)),null!=a&&(t=o.relative(a,t)),this.setSourceContent(t,r))},this)},s.prototype._validateMapping=function(e,t,n,r){if(t&&"number"!=typeof t.line&&"number"!=typeof t.column)throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||t||n||r)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&n))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:n,original:t,name:r}))},s.prototype._serializeMappings=function(){for(var e,t,n,i,a=0,s=1,l=0,u=0,c=0,f=0,d="",p=this._mappings.toArray(),m=0,h=p.length;m<h;m++){if(e="",(t=p[m]).generatedLine!==s)for(a=0;t.generatedLine!==s;)e+=";",s++;else if(m>0){if(!o.compareByGeneratedPositionsInflated(t,p[m-1]))continue;e+=","}e+=r.encode(t.generatedColumn-a),a=t.generatedColumn,null!=t.source&&(i=this._sources.indexOf(t.source),e+=r.encode(i-f),f=i,e+=r.encode(t.originalLine-1-u),u=t.originalLine-1,e+=r.encode(t.originalColumn-l),l=t.originalColumn,null!=t.name&&(n=this._names.indexOf(t.name),e+=r.encode(n-c),c=n)),d+=e}return d},s.prototype._generateSourcesContent=function(e,t){return e.map(function(e){if(!this._sourcesContents)return null;null!=t&&(e=o.relative(t,e));var n=o.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,n)?this._sourcesContents[n]:null},this)},s.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},s.prototype.toString=function(){return JSON.stringify(this.toJSON())},t.SourceMapGenerator=s},function(e,t,n){var r=n(1205);t.encode=function(e){var t,n="",o=function(e){return e<0?1+(-e<<1):0+(e<<1)}(e);do{t=31&o,(o>>>=5)>0&&(t|=32),n+=r.encode(t)}while(o>0);return n},t.decode=function(e,t,n){var o,i,a=e.length,s=0,l=0;do{if(t>=a)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(i=r.decode(e.charCodeAt(t++))))throw new Error("Invalid base64 digit: "+e.charAt(t-1));o=!!(32&i),s+=(i&=31)<<l,l+=5}while(o);n.value=function(e){var t=e>>1;return 1==(1&e)?-t:t}(s),n.rest=t}},function(e,t,n){var r=n(238),o=Object.prototype.hasOwnProperty,i="undefined"!=typeof Map;function a(){this._array=[],this._set=i?new Map:Object.create(null)}a.fromArray=function(e,t){for(var n=new a,r=0,o=e.length;r<o;r++)n.add(e[r],t);return n},a.prototype.size=function(){return i?this._set.size:Object.getOwnPropertyNames(this._set).length},a.prototype.add=function(e,t){var n=i?e:r.toSetString(e),a=i?this.has(e):o.call(this._set,n),s=this._array.length;a&&!t||this._array.push(e),a||(i?this._set.set(e,s):this._set[n]=s)},a.prototype.has=function(e){if(i)return this._set.has(e);var t=r.toSetString(e);return o.call(this._set,t)},a.prototype.indexOf=function(e){if(i){var t=this._set.get(e);if(t>=0)return t}else{var n=r.toSetString(e);if(o.call(this._set,n))return this._set[n]}throw new Error('"'+e+'" is not in the set.')},a.prototype.at=function(e){if(e>=0&&e<this._array.length)return this._array[e];throw new Error("No element indexed by "+e)},a.prototype.toArray=function(){return this._array.slice()},t.ArraySet=a},function(e,t,n){"use strict";t.__esModule=!0;var r={colon:": ",indent:" ",beforeDecl:"\n",beforeRule:"\n",beforeOpen:" ",beforeClose:"\n",beforeComment:"\n",after:"\n",emptyBody:"",commentLeft:" ",commentRight:" "};var o=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.builder=t}return e.prototype.stringify=function(e,t){this[e.type](e,t)},e.prototype.root=function(e){this.body(e),e.raws.after&&this.builder(e.raws.after)},e.prototype.comment=function(e){var t=this.raw(e,"left","commentLeft"),n=this.raw(e,"right","commentRight");this.builder("/*"+t+e.text+n+"*/",e)},e.prototype.decl=function(e,t){var n=this.raw(e,"between","colon"),r=e.prop+n+this.rawValue(e,"value");e.important&&(r+=e.raws.important||" !important"),t&&(r+=";"),this.builder(r,e)},e.prototype.rule=function(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")},e.prototype.atrule=function(e,t){var n="@"+e.name,r=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:r&&(n+=" "),e.nodes)this.block(e,n+r);else{var o=(e.raws.between||"")+(t?";":"");this.builder(n+r+o,e)}},e.prototype.body=function(e){for(var t=e.nodes.length-1;t>0&&"comment"===e.nodes[t].type;)t-=1;for(var n=this.raw(e,"semicolon"),r=0;r<e.nodes.length;r++){var o=e.nodes[r],i=this.raw(o,"before");i&&this.builder(i),this.stringify(o,t!==r||n)}},e.prototype.block=function(e,t){var n=this.raw(e,"between","beforeOpen");this.builder(t+n+"{",e,"start");var r=void 0;e.nodes&&e.nodes.length?(this.body(e),r=this.raw(e,"after")):r=this.raw(e,"after","emptyBody"),r&&this.builder(r),this.builder("}",e,"end")},e.prototype.raw=function(e,t,n){var o=void 0;if(n||(n=t),t&&void 0!==(o=e.raws[t]))return o;var i=e.parent;if("before"===n&&(!i||"root"===i.type&&i.first===e))return"";if(!i)return r[n];var a=e.root();if(a.rawCache||(a.rawCache={}),void 0!==a.rawCache[n])return a.rawCache[n];if("before"===n||"after"===n)return this.beforeAfter(e,n);var s="raw"+function(e){return e[0].toUpperCase()+e.slice(1)}(n);return this[s]?o=this[s](a,e):a.walk(function(e){if(void 0!==(o=e.raws[t]))return!1}),void 0===o&&(o=r[n]),a.rawCache[n]=o,o},e.prototype.rawSemicolon=function(e){var t=void 0;return e.walk(function(e){if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&void 0!==(t=e.raws.semicolon))return!1}),t},e.prototype.rawEmptyBody=function(e){var t=void 0;return e.walk(function(e){if(e.nodes&&0===e.nodes.length&&void 0!==(t=e.raws.after))return!1}),t},e.prototype.rawIndent=function(e){if(e.raws.indent)return e.raws.indent;var t=void 0;return e.walk(function(n){var r=n.parent;if(r&&r!==e&&r.parent&&r.parent===e&&void 0!==n.raws.before){var o=n.raws.before.split("\n");return t=(t=o[o.length-1]).replace(/[^\s]/g,""),!1}}),t},e.prototype.rawBeforeComment=function(e,t){var n=void 0;return e.walkComments(function(e){if(void 0!==e.raws.before)return-1!==(n=e.raws.before).indexOf("\n")&&(n=n.replace(/[^\n]+$/,"")),!1}),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/[^\s]/g,"")),n},e.prototype.rawBeforeDecl=function(e,t){var n=void 0;return e.walkDecls(function(e){if(void 0!==e.raws.before)return-1!==(n=e.raws.before).indexOf("\n")&&(n=n.replace(/[^\n]+$/,"")),!1}),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/[^\s]/g,"")),n},e.prototype.rawBeforeRule=function(e){var t=void 0;return e.walk(function(n){if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return-1!==(t=n.raws.before).indexOf("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/[^\s]/g,"")),t},e.prototype.rawBeforeClose=function(e){var t=void 0;return e.walk(function(e){if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return-1!==(t=e.raws.after).indexOf("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/[^\s]/g,"")),t},e.prototype.rawBeforeOpen=function(e){var t=void 0;return e.walk(function(e){if("decl"!==e.type&&void 0!==(t=e.raws.between))return!1}),t},e.prototype.rawColon=function(e){var t=void 0;return e.walkDecls(function(e){if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1}),t},e.prototype.beforeAfter=function(e,t){var n=void 0;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");for(var r=e.parent,o=0;r&&"root"!==r.type;)o+=1,r=r.parent;if(-1!==n.indexOf("\n")){var i=this.raw(e,null,"indent");if(i.length)for(var a=0;a<o;a++)n+=i}return n},e.prototype.rawValue=function(e,t){var n=e[t],r=e.raws[t];return r&&r.value===n?r.raw:n},e}();t.default=o,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){if(r[e])return;r[e]=!0,"undefined"!=typeof console&&console.warn&&console.warn(e)};var r={};e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(e){return e&&e.__esModule?e:{default:e}}(n(622));var i=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.version="6.0.23",this.plugins=this.normalize(t)}return e.prototype.use=function(e){return this.plugins=this.plugins.concat(this.normalize([e])),this},e.prototype.process=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new o.default(this,e,t)},e.prototype.normalize=function(e){var t=[],n=e,o=Array.isArray(n),i=0;for(n=o?n:n[Symbol.iterator]();;){var a;if(o){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var s=a;if(s.postcss&&(s=s.postcss),"object"===(void 0===s?"undefined":r(s))&&Array.isArray(s.plugins))t=t.concat(s.plugins);else{if("function"!=typeof s)throw"object"===(void 0===s?"undefined":r(s))&&(s.parse||s.stringify)?new Error("PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation."):new Error(s+" is not a PostCSS plugin");t.push(s)}}return t},e}();t.default=i,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=c(n(1212)),a=c(n(421)),s=c(n(620)),l=c(n(1213)),u=c(n(422));function c(e){return e&&e.__esModule?e:{default:e}}function f(e){return"object"===(void 0===e?"undefined":o(e))&&"function"==typeof e.then}var d=function(){function e(t,n,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.stringified=!1,this.processed=!1;var i=void 0;if("object"===(void 0===n?"undefined":o(n))&&null!==n&&"root"===n.type)i=n;else if(n instanceof e||n instanceof l.default)i=n.root,n.map&&(void 0===r.map&&(r.map={}),r.map.inline||(r.map.inline=!1),r.map.prev=n.map);else{var a=u.default;r.syntax&&(a=r.syntax.parse),r.parser&&(a=r.parser),a.parse&&(a=a.parse);try{i=a(n,r)}catch(e){this.error=e}}this.result=new l.default(t,i,r)}return e.prototype.warnings=function(){return this.sync().warnings()},e.prototype.toString=function(){return this.css},e.prototype.then=function(e,t){return"from"in this.opts||(0,s.default)("Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning."),this.async().then(e,t)},e.prototype.catch=function(e){return this.async().catch(e)},e.prototype.handleError=function(e,t){try{if(this.error=e,"CssSyntaxError"!==e.name||e.plugin){if(t.postcssVersion){var n=t.postcssPlugin,r=t.postcssVersion,o=this.result.processor.version,i=r.split("."),a=o.split(".");(i[0]!==a[0]||parseInt(i[1])>parseInt(a[1]))&&console.error("Unknown error from PostCSS plugin. Your current PostCSS version is "+o+", but "+n+" uses "+r+". Perhaps this is the source of the error below.")}}else e.plugin=t.postcssPlugin,e.setMessage()}catch(e){console&&console.error&&console.error(e)}},e.prototype.asyncTick=function(e,t){var n=this;if(this.plugin>=this.processor.plugins.length)return this.processed=!0,e();try{var r=this.processor.plugins[this.plugin],o=this.run(r);this.plugin+=1,f(o)?o.then(function(){n.asyncTick(e,t)}).catch(function(e){n.handleError(e,r),n.processed=!0,t(e)}):this.asyncTick(e,t)}catch(e){this.processed=!0,t(e)}},e.prototype.async=function(){var e=this;return this.processed?new Promise(function(t,n){e.error?n(e.error):t(e.stringify())}):this.processing?this.processing:(this.processing=new Promise(function(t,n){if(e.error)return n(e.error);e.plugin=0,e.asyncTick(t,n)}).then(function(){return e.processed=!0,e.stringify()}),this.processing)},e.prototype.sync=function(){if(this.processed)return this.result;if(this.processed=!0,this.processing)throw new Error("Use process(css).then(cb) to work with async plugins");if(this.error)throw this.error;var e=this.result.processor.plugins,t=Array.isArray(e),n=0;for(e=t?e:e[Symbol.iterator]();;){var r;if(t){if(n>=e.length)break;r=e[n++]}else{if((n=e.next()).done)break;r=n.value}var o=r;if(f(this.run(o)))throw new Error("Use process(css).then(cb) to work with async plugins")}return this.result},e.prototype.run=function(e){this.result.lastPlugin=e;try{return e(this.result.root,this.result)}catch(t){throw this.handleError(t,e),t}},e.prototype.stringify=function(){if(this.stringified)return this.result;this.stringified=!0,this.sync();var e=this.result.opts,t=a.default;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);var n=new i.default(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result},r(e,[{key:"processor",get:function(){return this.result.processor}},{key:"opts",get:function(){return this.result.opts}},{key:"css",get:function(){return this.stringify().css}},{key:"content",get:function(){return this.stringify().content}},{key:"map",get:function(){return this.stringify().map}},{key:"root",get:function(){return this.sync().root}},{key:"messages",get:function(){return this.sync().messages}}]),e}();t.default=d,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var r={split:function(e,t,n){for(var r=[],o="",i=!1,a=0,s=!1,l=!1,u=0;u<e.length;u++){var c=e[u];s?l?l=!1:"\\"===c?l=!0:c===s&&(s=!1):'"'===c||"'"===c?s=c:"("===c?a+=1:")"===c?a>0&&(a-=1):0===a&&-1!==t.indexOf(c)&&(i=!0),i?(""!==o&&r.push(o.trim()),o="",i=!1):o+=c}return(n||""!==o)&&r.push(o.trim()),r},space:function(e){return r.split(e,[" ","\n","\t"])},comma:function(e){return r.split(e,[","],!0)}};t.default=r,e.exports=t.default},function(e,t,n){e.exports=function(e,t,n,r){if(e.Velocity&&e.Velocity.Utilities){var o=e.Velocity,i=o.Utilities,a=o.version;if(function(e,t){var n=[];return!(!e||!t)&&(i.each([e,t],function(e,t){var r=[];i.each(t,function(e,t){for(;t.toString().length<5;)t="0"+t;r.push(t)}),n.push(r.join(""))}),parseFloat(n[0])>parseFloat(n[1]))}({major:1,minor:1,patch:0},a)){var s="Velocity UI Pack: You need to update Velocity (jquery.velocity.js) to a newer version. Visit http://github.com/julianshapiro/velocity.";throw alert(s),new Error(s)}for(var l in o.RegisterEffect=o.RegisterUI=function(e,t){function n(e,t,n,r){var a,s=0;i.each(e.nodeType?[e]:e,function(e,t){r&&(n+=e*r),a=t.parentNode,i.each(["height","paddingTop","paddingBottom","marginTop","marginBottom"],function(e,n){s+=parseFloat(o.CSS.getPropertyValue(t,n))})}),o.animate(a,{height:("In"===t?"+":"-")+"="+s},{queue:!1,easing:"ease-in-out",duration:n*("In"===t?.6:1)})}return o.Redirects[e]=function(a,s,l,u,c,f){var d=l===u-1;"function"==typeof t.defaultDuration?t.defaultDuration=t.defaultDuration.call(c,c):t.defaultDuration=parseFloat(t.defaultDuration);for(var p=0;p<t.calls.length;p++){var m=t.calls[p],h=m[0],_=s.duration||t.defaultDuration||1e3,g=m[1],v=m[2]||{},y={};if(y.duration=_*(g||1),y.queue=s.queue||"",y.easing=v.easing||"ease",y.delay=parseFloat(v.delay)||0,y._cacheValues=v._cacheValues||!0,0===p){if(y.delay+=parseFloat(s.delay)||0,0===l&&(y.begin=function(){s.begin&&s.begin.call(c,c);var t=e.match(/(In|Out)$/);t&&"In"===t[0]&&h.opacity!==r&&i.each(c.nodeType?[c]:c,function(e,t){o.CSS.setPropertyValue(t,"opacity",0)}),s.animateParentHeight&&t&&n(c,t[0],_+y.delay,s.stagger)}),null!==s.display)if(s.display!==r&&"none"!==s.display)y.display=s.display;else if(/In$/.test(e)){var b=o.CSS.Values.getDisplayType(a);y.display="inline"===b?"inline-block":b}s.visibility&&"hidden"!==s.visibility&&(y.visibility=s.visibility)}if(p===t.calls.length-1){function E(){s.display!==r&&"none"!==s.display||!/Out$/.test(e)||i.each(c.nodeType?[c]:c,function(e,t){o.CSS.setPropertyValue(t,"display","none")}),s.complete&&s.complete.call(c,c),f&&f.resolver(c||a)}y.complete=function(){if(t.reset){for(var e in t.reset){var n=t.reset[e];o.CSS.Hooks.registered[e]!==r||"string"!=typeof n&&"number"!=typeof n||(t.reset[e]=[t.reset[e],t.reset[e]])}var i={duration:0,queue:!1};d&&(i.complete=E),o.animate(a,t.reset,i)}else d&&E()},"hidden"===s.visibility&&(y.visibility=s.visibility)}o.animate(a,h,y)}},o},o.RegisterEffect.packagedEffects={"callout.bounce":{defaultDuration:550,calls:[[{translateY:-30},.25],[{translateY:0},.125],[{translateY:-15},.125],[{translateY:0},.25]]},"callout.shake":{defaultDuration:800,calls:[[{translateX:-11},.125],[{translateX:11},.125],[{translateX:-11},.125],[{translateX:11},.125],[{translateX:-11},.125],[{translateX:11},.125],[{translateX:-11},.125],[{translateX:0},.125]]},"callout.flash":{defaultDuration:1100,calls:[[{opacity:[0,"easeInOutQuad",1]},.25],[{opacity:[1,"easeInOutQuad"]},.25],[{opacity:[0,"easeInOutQuad"]},.25],[{opacity:[1,"easeInOutQuad"]},.25]]},"callout.pulse":{defaultDuration:825,calls:[[{scaleX:1.1,scaleY:1.1},.5,{easing:"easeInExpo"}],[{scaleX:1,scaleY:1},.5]]},"callout.swing":{defaultDuration:950,calls:[[{rotateZ:15},.2],[{rotateZ:-10},.2],[{rotateZ:5},.2],[{rotateZ:-5},.2],[{rotateZ:0},.2]]},"callout.tada":{defaultDuration:1e3,calls:[[{scaleX:.9,scaleY:.9,rotateZ:-3},.1],[{scaleX:1.1,scaleY:1.1,rotateZ:3},.1],[{scaleX:1.1,scaleY:1.1,rotateZ:-3},.1],["reverse",.125],["reverse",.125],["reverse",.125],["reverse",.125],["reverse",.125],[{scaleX:1,scaleY:1,rotateZ:0},.2]]},"transition.fadeIn":{defaultDuration:500,calls:[[{opacity:[1,0]}]]},"transition.fadeOut":{defaultDuration:500,calls:[[{opacity:[0,1]}]]},"transition.flipXIn":{defaultDuration:700,calls:[[{opacity:[1,0],transformPerspective:[800,800],rotateY:[0,-55]}]],reset:{transformPerspective:0}},"transition.flipXOut":{defaultDuration:700,calls:[[{opacity:[0,1],transformPerspective:[800,800],rotateY:55}]],reset:{transformPerspective:0,rotateY:0}},"transition.flipYIn":{defaultDuration:800,calls:[[{opacity:[1,0],transformPerspective:[800,800],rotateX:[0,-45]}]],reset:{transformPerspective:0}},"transition.flipYOut":{defaultDuration:800,calls:[[{opacity:[0,1],transformPerspective:[800,800],rotateX:25}]],reset:{transformPerspective:0,rotateX:0}},"transition.flipBounceXIn":{defaultDuration:900,calls:[[{opacity:[.725,0],transformPerspective:[400,400],rotateY:[-10,90]},.5],[{opacity:.8,rotateY:10},.25],[{opacity:1,rotateY:0},.25]],reset:{transformPerspective:0}},"transition.flipBounceXOut":{defaultDuration:800,calls:[[{opacity:[.9,1],transformPerspective:[400,400],rotateY:-10},.5],[{opacity:0,rotateY:90},.5]],reset:{transformPerspective:0,rotateY:0}},"transition.flipBounceYIn":{defaultDuration:850,calls:[[{opacity:[.725,0],transformPerspective:[400,400],rotateX:[-10,90]},.5],[{opacity:.8,rotateX:10},.25],[{opacity:1,rotateX:0},.25]],reset:{transformPerspective:0}},"transition.flipBounceYOut":{defaultDuration:800,calls:[[{opacity:[.9,1],transformPerspective:[400,400],rotateX:-15},.5],[{opacity:0,rotateX:90},.5]],reset:{transformPerspective:0,rotateX:0}},"transition.swoopIn":{defaultDuration:850,calls:[[{opacity:[1,0],transformOriginX:["100%","50%"],transformOriginY:["100%","100%"],scaleX:[1,0],scaleY:[1,0],translateX:[0,-700],translateZ:0}]],reset:{transformOriginX:"50%",transformOriginY:"50%"}},"transition.swoopOut":{defaultDuration:850,calls:[[{opacity:[0,1],transformOriginX:["50%","100%"],transformOriginY:["100%","100%"],scaleX:0,scaleY:0,translateX:-700,translateZ:0}]],reset:{transformOriginX:"50%",transformOriginY:"50%",scaleX:1,scaleY:1,translateX:0}},"transition.whirlIn":{defaultDuration:850,calls:[[{opacity:[1,0],transformOriginX:["50%","50%"],transformOriginY:["50%","50%"],scaleX:[1,0],scaleY:[1,0],rotateY:[0,160]},1,{easing:"easeInOutSine"}]]},"transition.whirlOut":{defaultDuration:750,calls:[[{opacity:[0,"easeInOutQuint",1],transformOriginX:["50%","50%"],transformOriginY:["50%","50%"],scaleX:0,scaleY:0,rotateY:160},1,{easing:"swing"}]],reset:{scaleX:1,scaleY:1,rotateY:0}},"transition.shrinkIn":{defaultDuration:750,calls:[[{opacity:[1,0],transformOriginX:["50%","50%"],transformOriginY:["50%","50%"],scaleX:[1,1.5],scaleY:[1,1.5],translateZ:0}]]},"transition.shrinkOut":{defaultDuration:600,calls:[[{opacity:[0,1],transformOriginX:["50%","50%"],transformOriginY:["50%","50%"],scaleX:1.3,scaleY:1.3,translateZ:0}]],reset:{scaleX:1,scaleY:1}},"transition.expandIn":{defaultDuration:700,calls:[[{opacity:[1,0],transformOriginX:["50%","50%"],transformOriginY:["50%","50%"],scaleX:[1,.625],scaleY:[1,.625],translateZ:0}]]},"transition.expandOut":{defaultDuration:700,calls:[[{opacity:[0,1],transformOriginX:["50%","50%"],transformOriginY:["50%","50%"],scaleX:.5,scaleY:.5,translateZ:0}]],reset:{scaleX:1,scaleY:1}},"transition.bounceIn":{defaultDuration:800,calls:[[{opacity:[1,0],scaleX:[1.05,.3],scaleY:[1.05,.3]},.4],[{scaleX:.9,scaleY:.9,translateZ:0},.2],[{scaleX:1,scaleY:1},.5]]},"transition.bounceOut":{defaultDuration:800,calls:[[{scaleX:.95,scaleY:.95},.35],[{scaleX:1.1,scaleY:1.1,translateZ:0},.35],[{opacity:[0,1],scaleX:.3,scaleY:.3},.3]],reset:{scaleX:1,scaleY:1}},"transition.bounceUpIn":{defaultDuration:800,calls:[[{opacity:[1,0],translateY:[-30,1e3]},.6,{easing:"easeOutCirc"}],[{translateY:10},.2],[{translateY:0},.2]]},"transition.bounceUpOut":{defaultDuration:1e3,calls:[[{translateY:20},.2],[{opacity:[0,"easeInCirc",1],translateY:-1e3},.8]],reset:{translateY:0}},"transition.bounceDownIn":{defaultDuration:800,calls:[[{opacity:[1,0],translateY:[30,-1e3]},.6,{easing:"easeOutCirc"}],[{translateY:-10},.2],[{translateY:0},.2]]},"transition.bounceDownOut":{defaultDuration:1e3,calls:[[{translateY:-20},.2],[{opacity:[0,"easeInCirc",1],translateY:1e3},.8]],reset:{translateY:0}},"transition.bounceLeftIn":{defaultDuration:750,calls:[[{opacity:[1,0],translateX:[30,-1250]},.6,{easing:"easeOutCirc"}],[{translateX:-10},.2],[{translateX:0},.2]]},"transition.bounceLeftOut":{defaultDuration:750,calls:[[{translateX:30},.2],[{opacity:[0,"easeInCirc",1],translateX:-1250},.8]],reset:{translateX:0}},"transition.bounceRightIn":{defaultDuration:750,calls:[[{opacity:[1,0],translateX:[-30,1250]},.6,{easing:"easeOutCirc"}],[{translateX:10},.2],[{translateX:0},.2]]},"transition.bounceRightOut":{defaultDuration:750,calls:[[{translateX:-30},.2],[{opacity:[0,"easeInCirc",1],translateX:1250},.8]],reset:{translateX:0}},"transition.slideUpIn":{defaultDuration:900,calls:[[{opacity:[1,0],translateY:[0,20],translateZ:0}]]},"transition.slideUpOut":{defaultDuration:900,calls:[[{opacity:[0,1],translateY:-20,translateZ:0}]],reset:{translateY:0}},"transition.slideDownIn":{defaultDuration:900,calls:[[{opacity:[1,0],translateY:[0,-20],translateZ:0}]]},"transition.slideDownOut":{defaultDuration:900,calls:[[{opacity:[0,1],translateY:20,translateZ:0}]],reset:{translateY:0}},"transition.slideLeftIn":{defaultDuration:1e3,calls:[[{opacity:[1,0],translateX:[0,-20],translateZ:0}]]},"transition.slideLeftOut":{defaultDuration:1050,calls:[[{opacity:[0,1],translateX:-20,translateZ:0}]],reset:{translateX:0}},"transition.slideRightIn":{defaultDuration:1e3,calls:[[{opacity:[1,0],translateX:[0,20],translateZ:0}]]},"transition.slideRightOut":{defaultDuration:1050,calls:[[{opacity:[0,1],translateX:20,translateZ:0}]],reset:{translateX:0}},"transition.slideUpBigIn":{defaultDuration:850,calls:[[{opacity:[1,0],translateY:[0,75],translateZ:0}]]},"transition.slideUpBigOut":{defaultDuration:800,calls:[[{opacity:[0,1],translateY:-75,translateZ:0}]],reset:{translateY:0}},"transition.slideDownBigIn":{defaultDuration:850,calls:[[{opacity:[1,0],translateY:[0,-75],translateZ:0}]]},"transition.slideDownBigOut":{defaultDuration:800,calls:[[{opacity:[0,1],translateY:75,translateZ:0}]],reset:{translateY:0}},"transition.slideLeftBigIn":{defaultDuration:800,calls:[[{opacity:[1,0],translateX:[0,-75],translateZ:0}]]},"transition.slideLeftBigOut":{defaultDuration:750,calls:[[{opacity:[0,1],translateX:-75,translateZ:0}]],reset:{translateX:0}},"transition.slideRightBigIn":{defaultDuration:800,calls:[[{opacity:[1,0],translateX:[0,75],translateZ:0}]]},"transition.slideRightBigOut":{defaultDuration:750,calls:[[{opacity:[0,1],translateX:75,translateZ:0}]],reset:{translateX:0}},"transition.perspectiveUpIn":{defaultDuration:800,calls:[[{opacity:[1,0],transformPerspective:[800,800],transformOriginX:[0,0],transformOriginY:["100%","100%"],rotateX:[0,-180]}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%"}},"transition.perspectiveUpOut":{defaultDuration:850,calls:[[{opacity:[0,1],transformPerspective:[800,800],transformOriginX:[0,0],transformOriginY:["100%","100%"],rotateX:-180}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%",rotateX:0}},"transition.perspectiveDownIn":{defaultDuration:800,calls:[[{opacity:[1,0],transformPerspective:[800,800],transformOriginX:[0,0],transformOriginY:[0,0],rotateX:[0,180]}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%"}},"transition.perspectiveDownOut":{defaultDuration:850,calls:[[{opacity:[0,1],transformPerspective:[800,800],transformOriginX:[0,0],transformOriginY:[0,0],rotateX:180}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%",rotateX:0}},"transition.perspectiveLeftIn":{defaultDuration:950,calls:[[{opacity:[1,0],transformPerspective:[2e3,2e3],transformOriginX:[0,0],transformOriginY:[0,0],rotateY:[0,-180]}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%"}},"transition.perspectiveLeftOut":{defaultDuration:950,calls:[[{opacity:[0,1],transformPerspective:[2e3,2e3],transformOriginX:[0,0],transformOriginY:[0,0],rotateY:-180}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%",rotateY:0}},"transition.perspectiveRightIn":{defaultDuration:950,calls:[[{opacity:[1,0],transformPerspective:[2e3,2e3],transformOriginX:["100%","100%"],transformOriginY:[0,0],rotateY:[0,180]}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%"}},"transition.perspectiveRightOut":{defaultDuration:950,calls:[[{opacity:[0,1],transformPerspective:[2e3,2e3],transformOriginX:["100%","100%"],transformOriginY:[0,0],rotateY:180}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%",rotateY:0}}},o.RegisterEffect.packagedEffects)o.RegisterEffect(l,o.RegisterEffect.packagedEffects[l]);o.RunSequence=function(e){var t=i.extend(!0,[],e);t.length>1&&(i.each(t.reverse(),function(e,n){var r=t[e+1];if(r){var a=n.o||n.options,s=r.o||r.options,l=a&&!1===a.sequenceQueue?"begin":"complete",u=s&&s[l],c={};c[l]=function(){var e=r.e||r.elements,t=e.nodeType?[e]:e;u&&u.call(t,t),o(n)},r.o?r.o=i.extend({},s,c):r.options=i.extend({},s,c)}}),t.reverse()),o(t[0])}}else t.console&&console.log("Velocity UI Pack: Velocity must be loaded first. Aborting.")}(window.jQuery||window.Zepto||window,window,document)},function(e,t,n){e.exports={default:n(1223),__esModule:!0}},function(e,t,n){var r=n(1228),o=n(627),i=/[&<>"']/g,a=RegExp(i.source);e.exports=function(e){return(e=o(e))&&a.test(e)?e.replace(i,r):e}},function(e,t,n){var r=n(1230);e.exports=function(e){return null==e?"":r(e)}},function(e,t,n){(function(t){var n="object"==typeof t&&t&&t.Object===Object&&t;e.exports=n}).call(this,n(15))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=p(n(14)),o=p(n(20)),i=p(n(65));t.showGroupInviteDialog=function(e){return new i.default(function(t,n){var i=a.default.createElement("div",null,a.default.createElement("div",null,(0,c._t)("Who would you like to add to this community?")),a.default.createElement("div",{className:"warning"},(0,c._t)("Warning: any person you add to a community will be publicly visible to anyone who knows the community ID"))),f=l.default.getComponent("dialogs.AddressPickerDialog");s.default.createTrackedDialog("Group Invite","",f,{title:(0,c._t)("Invite new community members"),description:i,placeholder:(0,c._t)("Name or matrix ID"),button:(0,c._t)("Invite to Community"),validAddressTypes:["mx-user-id"],onFinished:function(i,a){i&&function(e,t){var n=new u.default(e),i=t.map(function(e){return e.address});return n.invite(i).then(function(n){var i=[],a=!0,u=!1,f=void 0;try{for(var d,p=(0,o.default)((0,r.default)(n));!(a=(d=p.next()).done);a=!0){var m=d.value;"error"===t[m]&&i.push(m)}}catch(e){u=!0,f=e}finally{try{!a&&p.return&&p.return()}finally{if(u)throw f}}if(i.length>0){var h=l.default.getComponent("dialogs.ErrorDialog");s.default.createTrackedDialog("Failed to invite the following users to the group","",h,{title:(0,c._t)("Failed to invite the following users to %(groupId)s:",{groupId:e}),description:i.join(", ")})}}).catch(function(t){var n=l.default.getComponent("dialogs.ErrorDialog");s.default.createTrackedDialog("Failed to invite users to group","",n,{title:(0,c._t)("Failed to invite users to community"),description:(0,c._t)("Failed to invite users to %(groupId)s",{groupId:e})})})}(e,a).then(t,n)}})})},t.showGroupAddRoomDialog=function(e){return new i.default(function(t,n){var r=!1,o=a.default.createElement("div",null,a.default.createElement("div",null,(0,c._t)("Which rooms would you like to add to this community?"))),u=a.default.createElement("label",{className:"mx_GroupAddressPicker_checkboxContainer"},a.default.createElement("input",{type:"checkbox",onClick:function(e){r=e.target.checked}}),a.default.createElement("div",null,(0,c._t)("Show these rooms to non-members on the community page and room list?"))),p=l.default.getComponent("dialogs.AddressPickerDialog");s.default.createTrackedDialog("Add Rooms to Group","",p,{title:(0,c._t)("Add rooms to the community"),description:o,extraNode:u,placeholder:(0,c._t)("Room name or alias"),button:(0,c._t)("Add to community"),pickerType:"room",validAddressTypes:["mx-room-id"],onFinished:function(o,a){o&&function(e,t,n){var r=f.default.get(),o=[];return i.default.all(t.map(function(t){return d.default.addRoomToGroup(e,t.address,n).catch(function(){o.push(t.address)}).then(function(){var n=t.address,o=r.getRoom(n);if(o&&o.currentState.mayClientSendStateEvent("m.room.related_groups",r)){var i=o.currentState.getStateEvents("m.room.related_groups",""),a=i&&i.getContent().groups||[];return a.includes(e)?void 0:(a.push(e),f.default.get().sendStateEvent(n,"m.room.related_groups",{groups:a},""))}}).reflect()})).then(function(){if(0!==o.length){var t=l.default.getComponent("dialogs.ErrorDialog");s.default.createTrackedDialog("Failed to add the following room to the group","",t,{title:(0,c._t)("Failed to add the following rooms to %(groupId)s:",{groupId:e}),description:o.join(", ")})}})}(e,a,r).then(t,n)}})})};var a=p(n(0)),s=p(n(16)),l=p(n(3)),u=p(n(630)),c=n(2),f=p(n(8)),d=p(n(81));function p(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=f(n(20)),o=f(n(51)),i=f(n(4)),a=f(n(5)),s=(f(n(8)),n(196)),l=n(631),u=f(n(81)),c=f(n(9));function f(e){return e&&e.__esModule?e:{default:e}}var d=function(){function e(t){(0,i.default)(this,e),"+"===t[0]?(this.roomId=null,this.groupId=t):(this.roomId=t,this.groupId=null),this.canceled=!1,this.addrs=[],this.busy=!1,this.completionStates={},this.errorTexts={},this.deferred=null}return(0,a.default)(e,[{key:"invite",value:function(e){var t;if(this.addrs.length>0)throw new Error("Already inviting/invited");(t=this.addrs).push.apply(t,(0,o.default)(e));var n=!0,i=!1,a=void 0;try{for(var l,u=(0,r.default)(this.addrs);!(n=(l=u.next()).done);n=!0){var f=l.value;null===(0,s.getAddressType)(f)&&(this.completionStates[f]="error",this.errorTexts[f]="Unrecognised address")}}catch(e){i=!0,a=e}finally{try{!n&&u.return&&u.return()}finally{if(i)throw a}}return this.deferred=c.default.defer(),this._inviteMore(0),this.deferred.promise}},{key:"cancel",value:function(){this.busy&&(this._canceled=!0,this.deferred.reject(new Error("canceled")))}},{key:"getCompletionState",value:function(e){return this.completionStates[e]}},{key:"getErrorText",value:function(e){return this.errorTexts[e]}},{key:"_inviteMore",value:function(e){var t=this;if(!this._canceled){if(e==this.addrs.length)return this.busy=!1,void this.deferred.resolve(this.completionStates);var n=this.addrs[e];if(null!==(0,s.getAddressType)(n))if("invited"!=this.completionStates[n]){(null!==this.groupId?u.default.inviteUserToGroup(this.groupId,n):(0,l.inviteToRoom)(this.roomId,n)).then(function(){t._canceled||(t.completionStates[n]="invited",t._inviteMore(e+1))},function(r){if(!t._canceled){var o=void 0,i=!1;if("M_FORBIDDEN"==r.errcode)i=!0,o="You do not have permission to invite people to this room.";else{if("M_LIMIT_EXCEEDED"==r.errcode)return void setTimeout(function(){t._inviteMore(e)},5e3);o="Unknown server error"}t.completionStates[n]="error",t.errorTexts[n]=o,t.busy=!i,i||t._inviteMore(e+1)}})}else this._inviteMore(e+1);else this._inviteMore(e+1)}}}]),e}();t.default=d,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=m(n(14)),o=m(n(20));t.inviteToRoom=function(e,t){var n=(0,l.getAddressType)(t);if("email"==n)return i.default.get().inviteByEmail(e,t);if("mx-user-id"==n)return i.default.get().invite(e,t);throw new Error("Unsupported address")},t.inviteMultipleToRoom=h,t.showStartChatInviteDialog=function(){var e=c.default.getComponent("dialogs.AddressPickerDialog");s.default.createTrackedDialog("Start a chat","",e,{title:(0,p._t)("Start a chat"),description:(0,p._t)("Who would you like to communicate with?"),placeholder:(0,p._t)("Email, name or matrix ID"),validAddressTypes:["mx-user-id","email"],button:(0,p._t)("Start Chat"),onFinished:_})},t.showRoomInviteDialog=function(e){var t=c.default.getComponent("dialogs.AddressPickerDialog");s.default.createTrackedDialog("Chat Invite","",t,{title:(0,p._t)("Invite new room members"),description:(0,p._t)("Who would you like to add to this room?"),button:(0,p._t)("Send Invites"),placeholder:(0,p._t)("Email, name or matrix ID"),onFinished:function(t,n){!function(e,t,n){if(!t)return;var r=n.map(function(e){return e.address});h(e,r).then(function(t){var n=i.default.get().getRoom(e);return g(t,n)}).catch(function(e){console.error(e.stack);var t=c.default.getComponent("dialogs.ErrorDialog");s.default.createTrackedDialog("Failed to invite","",t,{title:(0,p._t)("Failed to invite"),description:e&&e.message?e.message:(0,p._t)("Operation failed")})})}(e,t,n)}})};var i=m(n(8)),a=m(n(630)),s=m(n(16)),l=n(196),u=m(n(427)),c=m(n(3)),f=m(n(10)),d=m(n(130)),p=n(2);function m(e){return e&&e.__esModule?e:{default:e}}function h(e,t){return new a.default(e).invite(t)}function _(e,t){if(e){var n=t.map(function(e){return e.address});if(function(e){return 1===e.length&&"mx-user-id"===(0,l.getAddressType)(e[0])}(n))if(function(e){return new d.default(i.default.get()).getDMRoomsForUserId(e).filter(function(e){var t=i.default.get().getRoom(e);if(t)return"join"===t.getMyMembership()})}(n[0]).length>0)var r=c.default.getComponent("views.dialogs.ChatCreateOrReuseDialog"),o=s.default.createTrackedDialog("Create or Reuse","",r,{userId:n[0],onNewDMClick:function(){f.default.dispatch({action:"start_chat",user_id:n[0]}),o(!0)},onExistingRoomSelected:function(e){f.default.dispatch({action:"view_room",room_id:e}),o(!0)}}).close;else(0,u.default)({dmUserId:n[0]}).catch(function(e){var t=c.default.getComponent("dialogs.ErrorDialog");s.default.createTrackedDialog("Failed to invite user","",t,{title:(0,p._t)("Failed to invite user"),description:e&&e.message?e.message:(0,p._t)("Operation failed")})});else if(1===n.length)(0,u.default)({dmUserId:n[0]}).catch(function(e){var t=c.default.getComponent("dialogs.ErrorDialog");s.default.createTrackedDialog("Failed to invite user","",t,{title:(0,p._t)("Failed to invite user"),description:e&&e.message?e.message:(0,p._t)("Operation failed")})});else{var a=void 0;(0,u.default)().then(function(e){return a=i.default.get().getRoom(e),h(e,n)}).then(function(e){return g(e,a)}).catch(function(e){console.error(e.stack);var t=c.default.getComponent("dialogs.ErrorDialog");s.default.createTrackedDialog("Failed to invite","",t,{title:(0,p._t)("Failed to invite"),description:e&&e.message?e.message:(0,p._t)("Operation failed")})})}}}function g(e,t){var n=[],i=!0,a=!1,l=void 0;try{for(var u,f=(0,o.default)((0,r.default)(e));!(i=(u=f.next()).done);i=!0){var d=u.value;"error"===e[d]&&n.push(d)}}catch(e){a=!0,l=e}finally{try{!i&&f.return&&f.return()}finally{if(a)throw l}}if(n.length>0){var m=c.default.getComponent("dialogs.ErrorDialog");s.default.createTrackedDialog("Failed to invite the following users to the room","",m,{title:(0,p._t)("Failed to invite the following users to the %(roomName)s room:",{roomName:t.name}),description:n.join(", ")})}return e}},function(e,t,n){var r=n(429),o=n(1441),i=n(1442);function a(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t<n;)this.add(e[t])}a.prototype.add=a.prototype.push=o,a.prototype.has=i,e.exports=a},function(e,t,n){var r=n(195),o=n(103),i="[object AsyncFunction]",a="[object Function]",s="[object GeneratorFunction]",l="[object Proxy]";e.exports=function(e){if(!o(e))return!1;var t=r(e);return t==a||t==s||t==i||t==l}},function(e,t){var n=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return n.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},function(e,t){e.exports=function(e,t){return e.has(t)}},function(e,t,n){var r=n(177)(n(101),"Set");e.exports=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FallbackAuthEntry=t.MsisdnAuthEntry=t.EmailIdentityAuthEntry=t.TermsAuthEntry=t.RecaptchaAuthEntry=t.PasswordAuthEntry=void 0;var r=p(n(47)),o=p(n(14)),i=p(n(20));t.getEntryComponentForLoginType=function(e){var t=!0,n=!1,r=void 0;try{for(var o,a=(0,i.default)(b);!(t=(o=a.next()).done);t=!0){var s=o.value;if(s.LOGIN_TYPE==e)return s}}catch(e){n=!0,r=e}finally{try{!t&&a.return&&a.return()}finally{if(n)throw r}}return y};var a=p(n(0)),s=p(n(1)),l=p(n(89)),u=p(n(24)),c=p(n(3)),f=n(2),d=p(n(22));function p(e){return e&&e.__esModule?e:{default:e}}var m=t.PasswordAuthEntry=a.default.createClass({displayName:"PasswordAuthEntry",statics:{LOGIN_TYPE:"m.login.password"},propTypes:{matrixClient:s.default.object.isRequired,submitAuthDict:s.default.func.isRequired,errorText:s.default.string,busy:s.default.bool},getInitialState:function(){return{passwordValid:!1}},focus:function(){this.refs.passwordField&&this.refs.passwordField.focus()},_onSubmit:function(e){e.preventDefault(),this.props.busy||this.props.submitAuthDict({type:m.LOGIN_TYPE,user:this.props.matrixClient.credentials.userId,password:this.refs.passwordField.value})},_onPasswordFieldChange:function(e){this.setState({passwordValid:Boolean(this.refs.passwordField.value)})},render:function(){var e=null;this.props.errorText&&(e="error");var t=void 0;if(this.props.busy){var n=c.default.getComponent("elements.Spinner");t=a.default.createElement(n,null)}else t=a.default.createElement("input",{type:"submit",className:"mx_Dialog_primary",disabled:!this.state.passwordValid});var r=void 0;return this.props.errorText&&(r=a.default.createElement("div",{className:"error",role:"alert"},this.props.errorText)),a.default.createElement("div",null,a.default.createElement("p",null,(0,f._t)("To continue, please enter your password.")),a.default.createElement("form",{onSubmit:this._onSubmit},a.default.createElement("label",{htmlFor:"passwordField"},(0,f._t)("Password:")),a.default.createElement("input",{name:"passwordField",ref:"passwordField",className:e,onChange:this._onPasswordFieldChange,type:"password"}),a.default.createElement("div",{className:"mx_button_row"},t)),r)}}),h=t.RecaptchaAuthEntry=a.default.createClass({displayName:"RecaptchaAuthEntry",statics:{LOGIN_TYPE:"m.login.recaptcha"},propTypes:{submitAuthDict:s.default.func.isRequired,stageParams:s.default.object.isRequired,errorText:s.default.string,busy:s.default.bool},_onCaptchaResponse:function(e){this.props.submitAuthDict({type:h.LOGIN_TYPE,response:e})},render:function(){if(this.props.busy){var e=c.default.getComponent("elements.Spinner");return a.default.createElement(e,null)}var t=c.default.getComponent("views.login.CaptchaForm"),n=this.props.stageParams.public_key,r=void 0;return this.props.errorText&&(r=a.default.createElement("div",{className:"error",role:"alert"},this.props.errorText)),a.default.createElement("div",null,a.default.createElement(t,{sitePublicKey:n,onCaptchaResponse:this._onCaptchaResponse}),r)}}),_=t.TermsAuthEntry=a.default.createClass({displayName:"TermsAuthEntry",statics:{LOGIN_TYPE:"m.login.terms"},propTypes:{submitAuthDict:s.default.func.isRequired,stageParams:s.default.object.isRequired,errorText:s.default.string,busy:s.default.bool},componentWillMount:function(){var e=this.props.stageParams.policies||{},t=d.default.getValue("language"),n={},r=[],a=!0,s=!1,l=void 0;try{for(var u,c=(0,i.default)((0,o.default)(e));!(a=(u=c.next()).done);a=!0){var f=u.value,p=e[f],m=p[t];if(m||(m=p.en),!m)m=p[(0,o.default)(p).find(function(e){return"version"!==e})];if(!m)throw new Error("Failed to find a policy to show the user");n[f]=!1,m.id=f,r.push(m)}}catch(e){s=!0,l=e}finally{try{!a&&c.return&&c.return()}finally{if(s)throw l}}this.setState({toggledPolicies:n,policies:r})},_trySubmit:function(e){var t={},n=!0,r=!0,o=!1,a=void 0;try{for(var s,l=(0,i.default)(this.state.policies);!(r=(s=l.next()).done);r=!0){var u=s.value,c=this.state.toggledPolicies[u.id];u.id===e&&(c=!c),t[u.id]=c,n=n&&c}}catch(e){o=!0,a=e}finally{try{!r&&l.return&&l.return()}finally{if(o)throw a}}this.setState({toggledPolicies:t}),n&&this.props.submitAuthDict({type:_.LOGIN_TYPE})},render:function(){var e=this;if(this.props.busy){var t=c.default.getComponent("elements.Spinner");return a.default.createElement(t,null)}var n=[],r=!0,o=!0,s=!1,l=void 0;try{for(var u,d=function(){var t=u.value,o=e.state.toggledPolicies[t.id];r=r&&o,n.push(a.default.createElement("label",{key:"policy_checkbox_"+t.id},a.default.createElement("input",{type:"checkbox",onClick:function(){return e._trySubmit(t.id)},checked:o}),a.default.createElement("a",{href:t.url,target:"_blank",rel:"noopener"},t.name)))},p=(0,i.default)(this.state.policies);!(o=(u=p.next()).done);o=!0)d()}catch(e){s=!0,l=e}finally{try{!o&&p.return&&p.return()}finally{if(s)throw l}}var m=void 0;return this.props.errorText&&(m=a.default.createElement("div",{className:"error",role:"alert"},this.props.errorText)),a.default.createElement("div",null,a.default.createElement("p",null,(0,f._t)("Please review and accept the policies of this homeserver:")),n,m)}}),g=t.EmailIdentityAuthEntry=a.default.createClass({displayName:"EmailIdentityAuthEntry",statics:{LOGIN_TYPE:"m.login.email.identity"},propTypes:{matrixClient:s.default.object.isRequired,submitAuthDict:s.default.func.isRequired,authSessionId:s.default.string.isRequired,clientSecret:s.default.string.isRequired,inputs:s.default.object.isRequired,stageState:s.default.object.isRequired,fail:s.default.func.isRequired,setEmailSid:s.default.func.isRequired,makeRegistrationUrl:s.default.func.isRequired},getInitialState:function(){return{requestingToken:!1}},componentWillMount:function(){var e=this;null===this.props.stageState.emailSid&&(this.setState({requestingToken:!0}),this._requestEmailToken().catch(function(t){e.props.fail(t)}).finally(function(){e.setState({requestingToken:!1})}).done())},_requestEmailToken:function(){var e=this,t=this.props.makeRegistrationUrl({client_secret:this.props.clientSecret,hs_url:this.props.matrixClient.getHomeserverUrl(),is_url:this.props.matrixClient.getIdentityServerUrl(),session_id:this.props.authSessionId});return this.props.matrixClient.requestRegisterEmailToken(this.props.inputs.emailAddress,this.props.clientSecret,1,t).then(function(t){e.props.setEmailSid(t.sid)})},render:function(){var e=this;if(this.state.requestingToken){var t=c.default.getComponent("elements.Spinner");return a.default.createElement(t,null)}return a.default.createElement("div",null,a.default.createElement("p",null,(0,f._t)("An email has been sent to %(emailAddress)s",{emailAddress:function(t){return a.default.createElement("i",null,e.props.inputs.emailAddress)}})),a.default.createElement("p",null,(0,f._t)("Please check your email to continue registration.")))}}),v=t.MsisdnAuthEntry=a.default.createClass({displayName:"MsisdnAuthEntry",statics:{LOGIN_TYPE:"m.login.msisdn"},propTypes:(0,r.default)({inputs:s.default.shape({phoneCountry:s.default.string,phoneNumber:s.default.string}),fail:s.default.func,clientSecret:s.default.func,submitAuthDict:s.default.func.isRequired,matrixClient:s.default.object},"submitAuthDict",s.default.func),getInitialState:function(){return{token:"",requestingToken:!1}},componentWillMount:function(){var e=this;this._sid=null,this._msisdn=null,this._tokenBox=null,this.setState({requestingToken:!0}),this._requestMsisdnToken().catch(function(t){e.props.fail(t)}).finally(function(){e.setState({requestingToken:!1})}).done()},_requestMsisdnToken:function(){var e=this;return this.props.matrixClient.requestRegisterMsisdnToken(this.props.inputs.phoneCountry,this.props.inputs.phoneNumber,this.props.clientSecret,1).then(function(t){e._sid=t.sid,e._msisdn=t.msisdn})},_onTokenChange:function(e){this.setState({token:e.target.value})},_onFormSubmit:function(e){var t=this;e.preventDefault(),""!=this.state.token&&(this.setState({errorText:null}),this.props.matrixClient.submitMsisdnToken(this._sid,this.props.clientSecret,this.state.token).then(function(e){if(e.success){var n=l.default.parse(t.props.matrixClient.getIdentityServerUrl());t.props.submitAuthDict({type:v.LOGIN_TYPE,threepid_creds:{sid:t._sid,client_secret:t.props.clientSecret,id_server:n.host}})}else t.setState({errorText:(0,f._t)("Token incorrect")})}).catch(function(e){t.props.fail(e),console.log("Failed to submit msisdn token")}).done())},render:function(){if(this.state.requestingToken){var e=c.default.getComponent("elements.Spinner");return a.default.createElement(e,null)}var t=Boolean(this.state.token),n=(0,u.default)({mx_InteractiveAuthEntryComponents_msisdnSubmit:!0,mx_UserSettings_button:!0}),r=void 0;return this.state.errorText&&(r=a.default.createElement("div",{className:"error",role:"alert"},this.state.errorText)),a.default.createElement("div",null,a.default.createElement("p",null,(0,f._t)("A text message has been sent to %(msisdn)s",{msisdn:a.default.createElement("i",null,this._msisdn)})),a.default.createElement("p",null,(0,f._t)("Please enter the code it contains:")),a.default.createElement("div",{className:"mx_InteractiveAuthEntryComponents_msisdnWrapper"},a.default.createElement("form",{onSubmit:this._onFormSubmit},a.default.createElement("input",{type:"text",className:"mx_InteractiveAuthEntryComponents_msisdnEntry",value:this.state.token,onChange:this._onTokenChange,"aria-label":(0,f._t)("Code")}),a.default.createElement("br",null),a.default.createElement("input",{type:"submit",value:(0,f._t)("Submit"),className:n,disabled:!t})),r))}}),y=t.FallbackAuthEntry=a.default.createClass({displayName:"FallbackAuthEntry",propTypes:{matrixClient:s.default.object.isRequired,authSessionId:s.default.string.isRequired,loginType:s.default.string.isRequired,submitAuthDict:s.default.func.isRequired,errorText:s.default.string},componentWillMount:function(){this._popupWindow=null,window.addEventListener("message",this._onReceiveMessage)},componentWillUnmount:function(){window.removeEventListener("message",this._onReceiveMessage),this._popupWindow&&this._popupWindow.close()},focus:function(){this.refs.fallbackButton&&this.refs.fallbackButton.focus()},_onShowFallbackClick:function(){var e=this.props.matrixClient.getFallbackAuthUrl(this.props.loginType,this.props.authSessionId);this._popupWindow=window.open(e)},_onReceiveMessage:function(e){"authDone"===e.data&&e.origin===this.props.matrixClient.getHomeserverUrl()&&this.props.submitAuthDict({})},render:function(){var e=void 0;return this.props.errorText&&(e=a.default.createElement("div",{className:"error",role:"alert"},this.props.errorText)),a.default.createElement("div",null,a.default.createElement("a",{ref:"fallbackButton",onClick:this._onShowFallbackClick},(0,f._t)("Start authentication")),e)}}),b=[m,h,g,v,_]},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(n(82));t.default=(0,r.default)(function(e){return e.reduce(function(e,t){return e[t.draggableId]=t,e},{})})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(n(432));t.default=function(e){var t=(0,r.default)(e.top,e.bottom),n=(0,r.default)(e.left,e.right);return function(r){if(t(r.top)&&t(r.bottom)&&n(r.left)&&n(r.right))return!0;var o=t(r.top)||t(r.bottom),i=n(r.left)||n(r.right);if(o&&i)return!0;var a=r.top<e.top&&r.bottom>e.bottom,s=r.left<e.left&&r.right>e.right;return!(!a||!s)||(a&&i||s&&o)}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70),o=n(244),i=function(e){return e&&e.__esModule?e:{default:e}}(n(433));t.default=function(e){var t=e.draggable,n=e.destination,a=e.newCenter,s=e.viewport,l=(0,r.subtract)(a,t.page.withMargin.center),u=(0,o.offset)(t.page.withMargin,l);return(0,i.default)({target:u,destination:n,viewport:s})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.css=t.physics=void 0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(37));t.physics=function(){var e={stiffness:1e3,damping:60,precision:.99};return{standard:(0,r.default)({},e),fast:(0,r.default)({},e,{stiffness:2*e.stiffness})}}(),t.css={outOfTheWay:"transform 0.2s cubic-bezier(0.2, 0, 0, 1)"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.lift=t.dropAnimationFinished=t.cancel=t.drop=t.completeDrop=t.prepare=t.clean=t.crossAxisMoveBackward=t.crossAxisMoveForward=t.moveForward=t.moveBackward=t.moveByWindowScroll=t.move=t.updateDroppableDimensionIsEnabled=t.updateDroppableDimensionScroll=t.publishDroppableDimensions=t.publishDraggableDimensions=t.completeLift=t.requestDimensions=void 0;var r=a(n(305)),o=a(n(1480)),i=n(70);function a(e){return e&&e.__esModule?e:{default:e}}var s={x:0,y:0},l=function(e){var t=e.initial,n=e.current,r=e.droppable,o=(0,i.subtract)(t.windowScroll,n.windowScroll),a=r?r.viewport.frameScroll.diff.displacement:s;return(0,i.add)(o,a)},u=t.requestDimensions=function(e){return{type:"REQUEST_DIMENSIONS",payload:e}},c=t.completeLift=function(e,t,n,r){return{type:"COMPLETE_LIFT",payload:{id:e,client:t,windowScroll:n,isScrollAllowed:r}}},f=(t.publishDraggableDimensions=function(e){return{type:"PUBLISH_DRAGGABLE_DIMENSIONS",payload:e}},t.publishDroppableDimensions=function(e){return{type:"PUBLISH_DROPPABLE_DIMENSIONS",payload:e}},t.updateDroppableDimensionScroll=function(e,t){return{type:"UPDATE_DROPPABLE_DIMENSION_SCROLL",payload:{id:e,offset:t}}},t.updateDroppableDimensionIsEnabled=function(e,t){return{type:"UPDATE_DROPPABLE_DIMENSION_IS_ENABLED",payload:{id:e,isEnabled:t}}},t.move=function(e,t,n){return{type:"MOVE",payload:{id:e,client:t,windowScroll:n}}},t.moveByWindowScroll=function(e,t){return{type:"MOVE_BY_WINDOW_SCROLL",payload:{id:e,windowScroll:t}}},t.moveBackward=function(e){return{type:"MOVE_BACKWARD",payload:e}},t.moveForward=function(e){return{type:"MOVE_FORWARD",payload:e}},t.crossAxisMoveForward=function(e){return{type:"CROSS_AXIS_MOVE_FORWARD",payload:e}},t.crossAxisMoveBackward=function(e){return{type:"CROSS_AXIS_MOVE_BACKWARD",payload:e}},t.clean=function(){return{type:"CLEAN",payload:null}}),d=t.prepare=function(){return{type:"PREPARE",payload:null}},p=function(e){return{type:"DROP_ANIMATE",payload:{trigger:e.trigger,newHomeOffset:e.newHomeOffset,impact:e.impact,result:e.result}}},m=t.completeDrop=function(e){return{type:"DROP_COMPLETE",payload:e}};t.drop=function(){return function(e,t){var n=t();if("PREPARING"!==n.phase&&"COLLECTING_INITIAL_DIMENSIONS"!==n.phase){if("DRAGGING"!==n.phase)return console.error("not able to drop in phase: '"+n.phase+"'"),void e(f());if(!n.drag)return console.error("not able to drop when there is invalid drag state",n),void e(f());var r=n.drag,a=r.impact,s=r.initial,u=r.current,c=s.descriptor,d=n.dimension.draggable[s.descriptor.id],h=n.dimension.droppable[d.descriptor.droppableId],_=a.destination?n.dimension.droppable[a.destination.droppableId]:null,g={droppableId:c.droppableId,index:c.index},v={draggableId:c.id,type:h.descriptor.type,source:g,destination:a.destination},y=(0,o.default)({movement:a.movement,draggable:d,draggables:n.dimension.draggable,destination:_}),b=(0,i.subtract)(y,d.client.withMargin.center),E=l({initial:s,current:u,droppable:_||h}),C=(0,i.add)(b,E);e(!(0,i.isEqual)(u.client.offset,C)?p({trigger:"DROP",newHomeOffset:C,impact:a,result:v}):m(v))}else e(f())}},t.cancel=function(){return function(e,t){var n=t();if("DRAGGING"===n.phase){if(!n.drag)return console.error("invalid drag state",n),void e(f());var o=n.drag,a=o.initial,u=o.current,c=a.descriptor,d=n.dimension.droppable[c.droppableId],h={index:c.index,droppableId:c.droppableId},_={draggableId:c.id,type:d.descriptor.type,source:h,destination:null};if(!(0,i.isEqual)(u.client.offset,s)){var g=l({initial:a,current:u,droppable:d});e(p({trigger:"CANCEL",newHomeOffset:g,impact:r.default,result:_}))}else e(m(_))}else e(f())}},t.dropAnimationFinished=function(){return function(e,t){var n=t();return"DROP_ANIMATING"!==n.phase?(console.error("cannot end drop that is no longer animating",n),void e(f())):n.drop&&n.drop.pending?void e(m(n.drop.pending.result)):(console.error("cannot end drop that has no pending state",n),void e(f()))}},t.lift=function(e,t,n,r){return function(o,i){var a=i();"DROP_ANIMATING"===a.phase&&(a.drop&&a.drop.pending?o(m(a.drop.pending.result)):(console.error("cannot flush drop animation if there is no pending"),o(f()))),o(d()),setTimeout(function(){"PREPARING"===i().phase&&(o(u(e)),setTimeout(function(){"COLLECTING_INITIAL_DIMENSIONS"===i().phase&&o(c(e,t,n,r))}))})}}},function(e,t,n){"use strict";n.r(t),t.default=function(e){var t=[],n=null,r=function(){for(var r=arguments.length,o=Array(r),i=0;i<r;i++)o[i]=arguments[i];return t=o,n||(n=requestAnimationFrame(function(){n=null,e.apply(void 0,t)}))};return r.cancel=function(){n&&(cancelAnimationFrame(n),n=null)},r}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1489);Object.defineProperty(t,"default",{enumerable:!0,get:function(){return function(e){return e&&e.__esModule?e:{default:e}}(r).default}})},function(e,t,n){"use strict";t.__esModule=!0,t.default={noWobble:{stiffness:170,damping:26},gentle:{stiffness:120,damping:14},wobbly:{stiffness:180,damping:12},stiff:{stiffness:210,damping:20}},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(443)),o=function(e){return e&&e.__esModule?e:{default:e}}(n(308));var i=[r.enter,r.tab];t.default=function(e){i.indexOf(e.keyCode)>=0&&(0,o.default)(e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(n(198));t.default=function(e){return(0,r.default)(e.getBoundingClientRect()).center}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={HomePage:"home_page",RoomView:"room_view",UserSettings:"user_settings",CreateRoom:"create_room",RoomDirectory:"room_directory",UserView:"user_view",GroupView:"group_view",MyGroups:"my_groups"},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(17)),o=n(22),i=function(e){return e&&e.__esModule?e:{default:e}}(o);t.default={getDevices:function(){return navigator.mediaDevices.enumerateDevices().then(function(e){var t=[],n=[],r=[];return!e.some(function(e){return!e.label})&&(e.forEach(function(e){switch(e.kind){case"audiooutput":t.push(e);break;case"audioinput":n.push(e);break;case"videoinput":r.push(e)}}),{audiooutput:t,audioinput:n,videoinput:r})},function(e){console.log("Unable to refresh WebRTC Devices: ",e)})},loadDevices:function(){var e=i.default.getValue("webrtc_audiooutput"),t=i.default.getValue("webrtc_audioinput"),n=i.default.getValue("webrtc_videoinput");r.setMatrixCallAudioOutput(e),r.setMatrixCallAudioInput(t),r.setMatrixCallVideoInput(n)},setAudioOutput:function(e){i.default.setValue("webrtc_audiooutput",null,o.SettingLevel.DEVICE,e),r.setMatrixCallAudioOutput(e)},setAudioInput:function(e){i.default.setValue("webrtc_audioinput",null,o.SettingLevel.DEVICE,e),r.setMatrixCallAudioInput(e)},setVideoInput:function(e){i.default.setValue("webrtc_videoinput",null,o.SettingLevel.DEVICE,e),r.setMatrixCallVideoInput(e)}},e.exports=t.default},function(e,t,n){"use strict";var r=n(141),o=function(){function e(t,n){var o=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._dispatcher=function(e){e&&e.length||r(!1);var t=e[0].getDispatcher();0;return t}(t);var i=t.map(function(e){return e.getDispatchToken()});this._dispatchToken=this._dispatcher.register(function(e){o._dispatcher.waitFor(i),n()})}return e.prototype.release=function(){this._dispatcher.unregister(this._dispatchToken)},e}();e.exports=o},function(e,t,n){"use strict";var r=n(652),o=n(1520),i=n(141),a=function(e){function t(n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),e.call(this,n),this._state=this.getInitialState()}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.getState=function(){return this._state},t.prototype.getInitialState=function(){return o("FluxReduceStore","getInitialState")},t.prototype.reduce=function(e,t){return o("FluxReduceStore","reduce")},t.prototype.areEqual=function(e,t){return e===t},t.prototype.__invokeOnDispatch=function(e){this.__changed=!1;var t=this._state,n=this.reduce(t,e);void 0===n&&i(!1),this.areEqual(t,n)||(this._state=n,this.__emitChange()),this.__changed&&this.__emitter.emit(this.__changeEvent)},t}(r);e.exports=a},function(e,t,n){"use strict";var r=n(1516).EventEmitter,o=n(141),i=function(){function e(t){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.__className=this.constructor.name,this.__changed=!1,this.__changeEvent="change",this.__dispatcher=t,this.__emitter=new r,this._dispatchToken=t.register(function(e){n.__invokeOnDispatch(e)})}return e.prototype.addListener=function(e){return this.__emitter.addListener(this.__changeEvent,e)},e.prototype.getDispatcher=function(){return this.__dispatcher},e.prototype.getDispatchToken=function(){return this._dispatchToken},e.prototype.hasChanged=function(){return this.__dispatcher.isDispatching()||o(!1),this.__changed},e.prototype.__emitChange=function(){this.__dispatcher.isDispatching()||o(!1),this.__changed=!0},e.prototype.__invokeOnDispatch=function(e){this.__changed=!1,this.__onDispatch(e),this.__changed&&this.__emitter.emit(this.__changeEvent)},e.prototype.__onDispatch=function(e){o(!1)},e}();e.exports=i},function(e,t,n){"use strict";var r=function(e){function t(n,r,o){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),e.call(this,n),this.listener=r,this.context=o}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t}(n(1518));e.exports=r},function(e,t,n){e.exports={default:n(1522),__esModule:!0}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(51)),o=s(n(90)),i=n(447),a=s(n(448));function s(e){return e&&e.__esModule?e:{default:e}}var l={moveTag:function(e,t,n){var s=a.default.getOrderedTags(),l=a.default.getRemovedTagsAccountData()||[];if(s){s=s.filter(function(e){return e!==t}),s=[].concat((0,r.default)(s.slice(0,n)),[t],(0,r.default)(s.slice(n))),l=l.filter(function(e){return e!==t});var u=a.default.getStoreId();return(0,i.asyncAction)("TagOrderActions.moveTag",function(){return o.default.trackEvent("TagOrderActions","commitTagOrdering"),e.setAccountData("im.vector.web.tag_ordering",{tags:s,removedTags:l,_storeId:u})},function(){return{tags:s,removedTags:l}})}},removeTag:function(e,t){var n=a.default.getOrderedTags(),r=a.default.getRemovedTagsAccountData()||[];if(r.includes(t))return function(){};r.push(t);var s=a.default.getStoreId();return(0,i.asyncAction)("TagOrderActions.removeTag",function(){return o.default.trackEvent("TagOrderActions","removeTag"),e.setAccountData("im.vector.web.tag_ordering",{tags:n,removedTags:r,_storeId:s})},function(){return{removedTags:r}})}};t.default=l,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=f(n(65)),o=f(n(51)),i=n(447),a=f(n(445)),s=f(n(16)),l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(146)),u=n(2),c=f(n(3));function f(e){return e&&e.__esModule?e:{default:e}}var d={tagRoom:function(e,t,n,f,d,p){var m=null;if(f&&!f.match(/^(m\.lowpriority|im\.vector\.fake\.(invite|recent|direct|archived))$/)){var h=a.default.getRoomLists(),_=[].concat((0,o.default)(h[f]));_.sort(function(e,t){return e.tags[f].order-t.tags[f].order});var g=f===n&&d<p?1:0,v=g+p-1,y=g+p,b=v<=0?0:_[v].tags[f].order,E=y>=_.length?1:_[y].tags[f].order;m={order:(b+E)/2}}return(0,i.asyncAction)("RoomListActions.tagRoom",function(){var o=[],i=t.roomId;if(void 0===n&&"im.vector.fake.direct"===f||"im.vector.fake.direct"===n&&void 0===f)return l.guessAndSetDMRoom(t,"im.vector.fake.direct"===f).catch(function(e){var t=c.default.getComponent("dialogs.ErrorDialog");console.error("Failed to set direct chat tag "+e),s.default.createTrackedDialog("Failed to set direct chat tag","",t,{title:(0,u._t)("Failed to set direct chat tag"),description:e&&e.message?e.message:(0,u._t)("Operation failed")})});var a=n!==f;if(n&&"im.vector.fake.direct"!==n&&a){var d=e.deleteRoomTag(i,n).catch(function(e){var t=c.default.getComponent("dialogs.ErrorDialog");console.error("Failed to remove tag "+n+" from room: "+e),s.default.createTrackedDialog("Failed to remove tag from room","",t,{title:(0,u._t)("Failed to remove tag %(tagName)s from room",{tagName:n}),description:e&&e.message?e.message:(0,u._t)("Operation failed")})});o.push(d)}if(f&&"im.vector.fake.direct"!==f&&(a||m)){m=m||{};var p=e.setRoomTag(i,f,m).catch(function(e){var t=c.default.getComponent("dialogs.ErrorDialog");throw console.error("Failed to add tag "+f+" to room: "+e),s.default.createTrackedDialog("Failed to add tag to room","",t,{title:(0,u._t)("Failed to add tag %(tagName)s to room",{tagName:f}),description:e&&e.message?e.message:(0,u._t)("Operation failed")}),e});o.push(p)}return r.default.all(o)},function(){return{room:t,oldTag:n,newTag:f,metaData:m}})}};t.default=d,e.exports=t.default},function(e,t,n){e.exports={default:n(1527),__esModule:!0}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.loadSession=void 0;var r=w(n(31)),o=w(n(19)),i=n(9),a=w(i),s=t.loadSession=function(){var e=(0,i.coroutine)(o.default.mark(function e(t){var n,r,a,s,c;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,n=t.enableGuest||!1,r=t.guestHsUrl,a=t.guestIsUrl,s=t.fragmentQueryParams||{},c=t.defaultDeviceDisplayName,r||(console.warn("Cannot enable guest access: can't determine HS URL to use"),n=!1),!(n&&s.guest_user_id&&s.guest_access_token)){e.next=10;break}return console.log("Using guest access credentials"),e.abrupt("return",u({userId:s.guest_user_id,accessToken:s.guest_access_token,homeserverUrl:r,identityServerUrl:a,guest:!0},!0).then(function(){return!0}));case 10:return e.next=12,(0,i.resolve)(l());case 12:if(!e.sent){e.next=15;break}return e.abrupt("return",!0);case 15:if(!n){e.next=17;break}return e.abrupt("return",T(r,a,c));case 17:return e.abrupt("return",!1);case 20:return e.prev=20,e.t0=e.catch(0),e.abrupt("return",x(e.t0));case 23:case"end":return e.stop()}},e,this,[[0,20]])}));return function(t){return e.apply(this,arguments)}}(),l=function(){var e=(0,i.coroutine)(o.default.mark(function e(){var t,n,r,a,s,l;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(localStorage){e.next=2;break}return e.abrupt("return",!1);case 2:if(t=localStorage.getItem("mx_hs_url"),n=localStorage.getItem("mx_is_url")||"https://matrix.org",r=localStorage.getItem("mx_access_token"),a=localStorage.getItem("mx_user_id"),s=localStorage.getItem("mx_device_id"),l=void 0,l=null!==localStorage.getItem("mx_is_guest")?"true"===localStorage.getItem("mx_is_guest"):"true"===localStorage.getItem("matrix-is-guest"),!(r&&a&&t)){e.next=16;break}return console.log("Restoring session for "+a),e.next=13,(0,i.resolve)(u({userId:a,deviceId:s,accessToken:r,homeserverUrl:t,identityServerUrl:n,guest:l},!1));case 13:return e.abrupt("return",!0);case 16:return console.log("No previous session found."),e.abrupt("return",!1);case 18:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),u=function(){var e=(0,i.coroutine)(o.default.mark(function e(t,n){var r;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.guest=Boolean(t.guest),console.log("setLoggedIn: mxid: "+t.userId+" deviceId: "+t.deviceId+" guest: "+t.guest+" hs: "+t.homeserverUrl),v.default.dispatch({action:"on_logging_in"},!0),!n){e.next=6;break}return e.next=6,(0,i.resolve)(O());case 6:if(m.default.setLoggedIn(t.guest,t.homeserverUrl,t.identityServerUrl),r=a.default.resolve(null),localStorage){try{k(t),t.password&&v.default.dispatch({action:"cached_password",cachedPassword:t.password})}catch(e){console.warn("Error using local storage: can't persist session!",e)}R&&!t.guest&&(r=R.login(t.userId).then(function(e){return e.team_token&&localStorage.setItem("mx_team_token",e.team_token),e.team_token},function(e){return console.warn("Failed to get team token on login: "+e),null}))}else console.warn("No local storage available: can't persist session!");return d.default.replaceUsingCreds(t),r.then(function(e){v.default.dispatch({action:"on_logged_in",teamToken:e})}),e.next=13,(0,i.resolve)(c());case 13:return e.abrupt("return",d.default.get());case 14:case"end":return e.stop()}},e,this)}));return function(t,n){return e.apply(this,arguments)}}(),c=function(){var e=(0,i.coroutine)(o.default.mark(function e(){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("Lifecycle: Starting MatrixClient"),v.default.dispatch({action:"will_start_client"},!0),h.default.start(),_.default.start(),g.default.start(),y.default.makeShared().start(),S.default.start(),e.next=9,(0,i.resolve)(d.default.start());case 9:v.default.dispatch({action:"client_started"});case 10:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}();t.attemptTokenLogin=function(e,t){if(!e.loginToken)return a.default.resolve(!1);if(!e.homeserver)return console.warn("Cannot log in with token: can't determine HS URL to use"),a.default.resolve(!1);return f.default.createClient({baseUrl:e.homeserver}).login("m.login.token",{token:e.loginToken,initial_device_display_name:t}).then(function(t){return console.log("Logged in with token"),O().then(function(){return k({userId:t.user_id,deviceId:t.device_id,accessToken:t.access_token,homeserverUrl:e.homeserver,identityServerUrl:e.identityServer,guest:!1}),!0})}).catch(function(e){return console.error("Failed to log in with login token: "+e+" "+e.data),!1})},t.handleInvalidStoreError=function(e){if(e.reason===f.default.InvalidStoreError.TOGGLED_LAZY_LOADING)return a.default.resolve().then(function(){var t=e.value;if(t){var n=C.default.getComponent("views.dialogs.LazyLoadingResyncDialog");return new a.default(function(e){E.default.createDialog(n,{onFinished:e})})}var r=C.default.getComponent("views.dialogs.LazyLoadingDisabledDialog");return new a.default(function(e){E.default.createDialog(r,{onFinished:e,host:window.location.host})})}).then(function(){return d.default.get().store.deleteAllData()}).then(function(){D.default.get().reload()})},t.initRtsClient=function(e){R=e?new b.default(e):null},t.setLoggedIn=function(e){return A(),u(e,!0)},t.logout=function(){if(!d.default.get())return;if(d.default.get().isGuest())return void setTimeout(function(){I()},0);N=!0,d.default.get().logout().then(I,function(e){console.log("Failed to call logout API: token will not be invalidated"),I()}).done()},t.isLoggingOut=function(){return N},t.onLoggedOut=I,t.stopMatrixClient=A;var f=w(n(17)),d=w(n(8)),p=w(n(594)),m=w(n(90)),h=w(n(140)),_=w(n(659)),g=w(n(1533)),v=w(n(10)),y=w(n(130)),b=w(n(389)),E=w(n(16)),C=w(n(3)),S=w(n(247)),D=w(n(71));function w(e){return e&&e.__esModule?e:{default:e}}function T(e,t,n){return console.log("Doing guest login on "+e),f.default.createClient({baseUrl:e}).registerGuest({body:{initial_device_display_name:n}}).then(function(n){return console.log("Registered as guest: "+n.user_id),u({userId:n.user_id,deviceId:n.device_id,accessToken:n.access_token,homeserverUrl:e,identityServerUrl:t,guest:!0},!0).then(function(){return!0})},function(e){return console.error("Failed to register as guest: "+e+" "+e.data),!1})}function x(e){console.log("Unable to load session",e);var t=a.default.defer(),n=C.default.getComponent("views.dialogs.SessionRestoreErrorDialog");return E.default.createTrackedDialog("Session Restore Error","",n,{error:e.message,onFinished:function(e){t.resolve(e)}}),t.promise.then(function(e){return e?(O(),!1):s()})}var R=null;function k(e){localStorage.setItem("mx_hs_url",e.homeserverUrl),localStorage.setItem("mx_is_url",e.identityServerUrl),localStorage.setItem("mx_user_id",e.userId),localStorage.setItem("mx_access_token",e.accessToken),localStorage.setItem("mx_is_guest",(0,r.default)(e.guest)),e.deviceId&&localStorage.setItem("mx_device_id",e.deviceId),console.log("Session persisted for "+e.userId)}var N=!1;function I(){N=!1,A(),O().done(),v.default.dispatch({action:"on_logged_out"})}function O(){if(m.default.logout(),window.localStorage){var e=window.localStorage.getItem("mx_hs_url"),t=window.localStorage.getItem("mx_is_url");window.localStorage.clear(),e&&window.localStorage.setItem("mx_hs_url",e),t&&window.localStorage.setItem("mx_is_url",t)}return(0,p.default)({baseUrl:""}).clearStores()}function A(){h.default.stop(),_.default.stop(),g.default.stop(),S.default.stop(),y.default.shared()&&y.default.shared().stop();var e=d.default.get();e&&(e.stopClient(),e.removeAllListeners(),d.default.unset())}},function(e,t,n){"use strict";var r=a(n(4)),o=a(n(5)),i=a(n(10));function a(e){return e&&e.__esModule?e:{default:e}}var s=function(){function e(){(0,r.default)(this,e)}return(0,o.default)(e,[{key:"start",value:function(){document.onmousedown=this._onUserActivity.bind(this),document.onmousemove=this._onUserActivity.bind(this),document.onkeydown=this._onUserActivity.bind(this),window.addEventListener("wheel",this._onUserActivity.bind(this),{passive:!0,capture:!0}),this.lastActivityAtTs=(new Date).getTime(),this.lastDispatchAtTs=0,this.activityEndTimer=void 0}},{key:"stop",value:function(){document.onmousedown=void 0,document.onmousemove=void 0,document.onkeydown=void 0,window.removeEventListener("wheel",this._onUserActivity.bind(this),{passive:!0,capture:!0})}},{key:"userCurrentlyActive",value:function(){return this.lastActivityAtTs>(new Date).getTime()-2e3}},{key:"_onUserActivity",value:function(e){if(e.screenX&&"mousemove"===e.type){if(e.screenX===this.lastScreenX&&e.screenY===this.lastScreenY)return;this.lastScreenX=e.screenX,this.lastScreenY=e.screenY}this.lastActivityAtTs=(new Date).getTime(),this.lastDispatchAtTs<this.lastActivityAtTs-500&&(this.lastDispatchAtTs=this.lastActivityAtTs,i.default.dispatch({action:"user_activity"}),this.activityEndTimer||(this.activityEndTimer=setTimeout(this._onActivityEndTimer.bind(this),500)))}},{key:"_onActivityEndTimer",value:function(){var e=(new Date).getTime(),t=this.lastActivityAtTs+500;e>=t?(i.default.dispatch({action:"user_activity_end"}),this.activityEndTimer=void 0):this.activityEndTimer=setTimeout(this._onActivityEndTimer.bind(this),t-e)}}]),e}();e.exports=new s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(14)),o=i(n(20));function i(e){return e&&e.__esModule?e:{default:e}}t.instanceForInstanceId=function(e,t){if(!t)return null;var n=!0,i=!1,a=void 0;try{for(var s,l=(0,o.default)((0,r.default)(e));!(n=(s=l.next()).done);n=!0){var u=s.value;if(e[u].instances||!(e[u].instances instanceof Array)){var c=!0,f=!1,d=void 0;try{for(var p,m=(0,o.default)(e[u].instances);!(c=(p=m.next()).done);c=!0){var h=p.value;if(h.instance_id==t)return h}}catch(e){f=!0,d=e}finally{try{!c&&m.return&&m.return()}finally{if(f)throw d}}}}}catch(e){i=!0,a=e}finally{try{!n&&l.return&&l.return()}finally{if(i)throw a}}},t.protocolNameForInstanceId=function(e,t){if(!t)return null;var n=!0,i=!1,a=void 0;try{for(var s,l=(0,o.default)((0,r.default)(e));!(n=(s=l.next()).done);n=!0){var u=s.value;if(e[u].instances||!(e[u].instances instanceof Array)){var c=!0,f=!1,d=void 0;try{for(var p,m=(0,o.default)(e[u].instances);!(c=(p=m.next()).done);c=!0){var h=p.value;if(h.instance_id==t)return u}}catch(e){f=!0,d=e}finally{try{!c&&m.return&&m.return()}finally{if(f)throw d}}}}}catch(e){i=!0,a=e}finally{try{!n&&l.return&&l.return()}finally{if(i)throw a}}}},function(e,t,n){"use strict";t.__esModule=!0,t.stateify=t.TokenState=t.CharacterState=void 0;var r=n(310);var o=function(e){this.j=[],this.T=e||null};o.prototype={defaultTransition:!1,on:function(e,t){if(e instanceof Array){for(var n=0;n<e.length;n++)this.j.push([e[n],t]);return this}return this.j.push([e,t]),this},next:function(e){for(var t=0;t<this.j.length;t++){var n=this.j[t],r=n[0],o=n[1];if(this.test(e,r))return o}return this.defaultTransition},accepts:function(){return!!this.T},test:function(e,t){return e===t},emit:function(){return this.T}};var i=(0,r.inherits)(o,function(e){this.j=[],this.T=e||null},{test:function(e,t){return e===t||t instanceof RegExp&&t.test(e)}}),a=(0,r.inherits)(o,function(e){this.j=[],this.T=e||null},{jump:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.next(new e(""));return n===this.defaultTransition?(n=new this.constructor(t),this.on(e,n)):t&&(n.T=t),n},test:function(e,t){return e instanceof t}});t.CharacterState=i,t.TokenState=a,t.stateify=function(e,t,n,r){for(var o=0,a=e.length,s=t,l=[],u=void 0;o<a&&(u=s.next(e[o]));)s=u,o++;if(o>=a)return[];for(;o<a-1;)u=new i(r),l.push(u),s.on(e[o],u),s=u,o++;return u=new i(n),l.push(u),s.on(e[a-1],u),l}},function(e,t,n){"use strict";t.__esModule=!0,t.createTokenClass=function(){return function(e){e&&(this.v=e)}}},function(e,t,n){"use strict";(function(t){var r=l(n(14)),o=l(n(4)),i=l(n(5)),a=l(n(9)),s=n(2);function l(e){return e&&e.__esModule?e:{default:e}}var u=n(1553),c=n(10),f=n(8),d=n(3),p=n(16),m=n(664);n(1554);var h=800,_=600;function g(e,t,n,r){var o=a.default.defer(),i=t,s=n;s>_&&(i=Math.floor(i*(_/s)),s=_),i>h&&(s=Math.floor(s*(h/i)),i=h);var l=document.createElement("canvas");return l.width=i,l.height=s,l.getContext("2d").drawImage(e,0,0,i,s),l.toBlob(function(e){o.resolve({info:{thumbnail_info:{w:i,h:s,mimetype:e.type,size:e.size},w:t,h:n},thumbnail:e})},r),o.promise}function v(e,t,n){var r="image/png";"image/jpeg"==n.type&&(r="image/jpeg");var o=void 0;return function(e){var t=a.default.defer(),n=document.createElement("img"),r=URL.createObjectURL(e);return n.src=r,n.onload=function(){URL.revokeObjectURL(r),t.resolve(n)},n.onerror=function(e){t.reject(e)},t.promise}(n).then(function(e){return g(e,e.width,e.height,r)}).then(function(n){return o=n.info,b(e,t,n.thumbnail)}).then(function(e){return o.thumbnail_url=e.url,o.thumbnail_file=e.file,o})}function y(e,t,n){var r=void 0;return function(e){var t=a.default.defer(),n=document.createElement("video"),r=new FileReader;return r.onload=function(e){n.src=e.target.result,n.onloadeddata=function(){t.resolve(n)},n.onerror=function(e){t.reject(e)}},r.onerror=function(e){t.reject(e)},r.readAsDataURL(e),t.promise}(n).then(function(e){return g(e,e.videoWidth,e.videoHeight,"image/jpeg")}).then(function(n){return r=n.info,b(e,t,n.thumbnail)}).then(function(e){return r.thumbnail_url=e.url,r.thumbnail_file=e.file,r})}function b(e,t,n,r){if(e.isRoomEncrypted(t))return function(e){var t=a.default.defer(),n=new FileReader;return n.onload=function(e){t.resolve(e.target.result)},n.onerror=function(e){t.reject(e)},n.readAsArrayBuffer(e),t.promise}(n).then(function(e){return m.encryptAttachment(e)}).then(function(t){var o=t.info,i=new Blob([t.data]);return e.uploadContent(i,{progressHandler:r,includeFilename:!1}).then(function(e){return o.url=e,n.type&&(o.mimetype=n.type),{file:o}})});var o=e.uploadContent(n,{progressHandler:r}),i=o.then(function(e){return{url:e}});return i.abort=o.abort,i}var E=function(){function e(){(0,o.default)(this,e),this.inprogress=[],this.nextId=0}return(0,i.default)(e,[{key:"sendStickerContentToRoom",value:function(e,t,n,r,o){return f.get().sendStickerMessage(t,e,n,r).catch(function(n){throw console.warn("Failed to send content with URL "+e+" to room "+t,n),n})}},{key:"sendContentToRoom",value:function(e,t,n){var o=this,i={body:e.name||"Attachment",info:{size:e.size}};e.type&&(i.info.mimetype=e.type);var l=a.default.defer();0==e.type.indexOf("image/")?(i.msgtype="m.image",v(n,t,e).then(function(e){u(i.info,e),l.resolve()},function(e){console.error(e),i.msgtype="m.file",l.resolve()})):0==e.type.indexOf("audio/")?(i.msgtype="m.audio",l.resolve()):0==e.type.indexOf("video/")?(i.msgtype="m.video",y(n,t,e).then(function(e){u(i.info,e),l.resolve()},function(e){i.msgtype="m.file",l.resolve()})):(i.msgtype="m.file",l.resolve());var f={fileName:e.name||"Attachment",roomId:t,total:0,loaded:0};this.inprogress.push(f),c.dispatch({action:"upload_started"});var m=void 0;function h(e){f.total=e.total,f.loaded=e.loaded,c.dispatch({action:"upload_progress",upload:f})}return l.promise.then(function(){return f.promise=b(n,t,e,h),f.promise.then(function(e){i.file=e.file,i.url=e.url})}).then(function(e){return n.sendMessage(t,i)},function(e){if(m=e,!f.canceled){var t=(0,s._t)("The file '%(fileName)s' failed to upload",{fileName:f.fileName})+".";413==e.http_status&&(t=(0,s._t)("The file '%(fileName)s' exceeds this home server's size limit for uploads",{fileName:f.fileName}));var n=d.getComponent("dialogs.ErrorDialog");p.createTrackedDialog("Upload failed","",n,{title:(0,s._t)("Upload Failed"),description:t})}}).finally(function(){for(var e=(0,r.default)(o.inprogress),t=0;t<o.inprogress.length;++t){var n=e[t];if(o.inprogress[n].promise===f.promise){o.inprogress.splice(n,1);break}}m?c.dispatch({action:"upload_failed",upload:f}):c.dispatch({action:"upload_finished",upload:f})})}},{key:"getCurrentUploads",value:function(){return this.inprogress}},{key:"cancelUpload",value:function(e){for(var t=(0,r.default)(this.inprogress),n=void 0,o=0;o<this.inprogress.length;++o){var i=t[o];if(this.inprogress[i].promise===e){n=this.inprogress[i];break}}n&&(n.canceled=!0,f.get().cancelUpload(n.promise))}}]),e}();void 0===t.mx_ContentMessage&&(t.mx_ContentMessage=new E),e.exports=t.mx_ContentMessage}).call(this,n(15))},function(e,t){function n(e){var t=String.fromCharCode.apply(null,e),n=window.btoa(t),r=e.length,o=4*Math.floor((r+2)/3)+(r+2)%3-2;return n.slice(0,o)}try{t.encryptAttachment=function(e){var t,r,o,i,a;return a=new Uint8Array(16),window.crypto.getRandomValues(a.subarray(0,8)),window.crypto.subtle.generateKey({name:"AES-CTR",length:256},!0,["encrypt","decrypt"]).then(function(e){return t=e,window.crypto.subtle.exportKey("jwk",t)}).then(function(n){return r=n,window.crypto.subtle.encrypt({name:"AES-CTR",counter:a,length:64},t,e)}).then(function(e){return o=e,window.crypto.subtle.digest("SHA-256",o)}).then(function(e){return i=e,{data:o,info:{v:"v2",key:r,iv:n(a),hashes:{sha256:n(new Uint8Array(i))}}}})},t.decryptAttachment=function(e,t){if(void 0===t||void 0===t.key||void 0===t.iv||void 0===t.hashes||void 0===t.hashes.sha256)throw new Error("Invalid info. Missing info.key, info.iv or info.hashes.sha256 key");var r,o=function(e){for(var t=e+"===".slice(0,(4-e.length%4)%4),n=window.atob(t),r=new Uint8Array(n.length),o=0;o<n.length;o++)r[o]=n.charCodeAt(o);return r}(t.iv),i=t.hashes.sha256;return window.crypto.subtle.importKey("jwk",t.key,{name:"AES-CTR"},!1,["encrypt","decrypt"]).then(function(t){return r=t,window.crypto.subtle.digest("SHA-256",e)}).then(function(a){if(n(new Uint8Array(a))!=i)throw new Error("Mismatched SHA-256 digest");var s;return s="v1"==t.v||"v2"==t.v?64:128,window.crypto.subtle.decrypt({name:"AES-CTR",counter:o,length:s},r,e)})}}catch(e){}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(9)),o=i(n(8));function i(e){return e&&e.__esModule?e:{default:e}}t.default={loadProfileInfo:function(){var e=o.default.get();return e.getProfileInfo(e.credentials.userId)},saveDisplayName:function(e){return o.default.get().setDisplayName(e)},loadThreePids:function(){return o.default.get().isGuest()?r.default.resolve({threepids:[]}):o.default.get().getThreePids()},saveThreePids:function(e){},changePassword:function(e,t){var n=o.default.get(),r={type:"m.login.password",user:n.credentials.userId,password:e};return n.setPassword(r,t)},getEmailPusher:function(e,t){if(void 0!==e)for(var n=0;n<e.length;++n)if("email"===e[n].kind&&e[n].pushkey===t)return e[n]},hasEmailPusher:function(e,t){return void 0!==this.getEmailPusher(e,t)},addEmailPusher:function(e,t){return o.default.get().setPusher({kind:"email",app_id:"m.email",pushkey:e,app_display_name:"Email Notifications",device_display_name:e,lang:navigator.language,data:t,append:!0})}},e.exports=t.default},function(e,t,n){"use strict";var r=p(n(14)),o=p(n(0)),i=p(n(1)),a=n(667),s=p(n(3)),l=p(n(453)),u=n(668),c=p(n(16)),f=n(2),d=p(n(39));p(n(22));function p(e){return e&&e.__esModule?e:{default:e}}e.exports=o.default.createClass({displayName:"RegistrationForm",propTypes:{defaultEmail:i.default.string,defaultPhoneCountry:i.default.string,defaultPhoneNumber:i.default.string,defaultUsername:i.default.string,defaultPassword:i.default.string,teamsConfig:i.default.shape({supportEmail:i.default.string,teams:i.default.arrayOf(i.default.shape({name:i.default.string,domain:i.default.string})).required}),minPasswordLength:i.default.number,onError:i.default.func,onRegisterClick:i.default.func.isRequired,flows:i.default.arrayOf(i.default.object).isRequired},getDefaultProps:function(){return{minPasswordLength:6,onError:function(e){console.error(e)}}},getInitialState:function(){return{fieldValid:{},selectedTeam:null,phoneCountry:this.props.defaultPhoneCountry}},onSubmit:function(e){e.preventDefault(),this.validateField("field_password_confirm"),this.validateField("field_password"),this.validateField("field_username"),this.validateField("field_phone_number"),this.validateField("field_email");var t=this;if(this.allFieldsValid())if(""==this.refs.email.value){var n=s.default.getComponent("dialogs.QuestionDialog");c.default.createTrackedDialog("If you don't specify an email address...","",n,{title:(0,f._t)("Warning!"),description:o.default.createElement("div",null,(0,f._t)("If you don't specify an email address, you won't be able to reset your password. Are you sure?")),button:(0,f._t)("Continue"),onFinished:function(n){n&&t._doSubmit(e)}})}else t._doSubmit(e)},_doSubmit:function(e){var t=this.refs.email.value.trim(),n=this.props.onRegisterClick({username:this.refs.username.value.trim(),password:this.refs.password.value.trim(),email:t,phoneCountry:this.state.phoneCountry,phoneNumber:this.refs.phoneNumber?this.refs.phoneNumber.value.trim():""});n&&(e.target.disabled=!0,n.finally(function(){e.target.disabled=!1}))},allFieldsValid:function(){for(var e=(0,r.default)(this.state.fieldValid),t=0;t<e.length;++t)if(0==this.state.fieldValid[e[t]])return!1;return!0},_isUniEmail:function(e){return e.endsWith(".ac.uk")||e.endsWith(".edu")||e.endsWith("matrix.org")},validateField:function(e){var t=this.refs.password.value.trim(),n=this.refs.passwordConfirm.value.trim();switch(e){case"field_email":var r=this.refs.email.value;if(this.props.teamsConfig&&this._isUniEmail(r)){var o=this.props.teamsConfig.teams.find(function(e){return r.split("@").pop()===e.domain})||null;this.setState({selectedTeam:o,showSupportEmail:!o}),this.props.onTeamSelected(o)}else this.props.onTeamSelected(null),this.setState({selectedTeam:null,showSupportEmail:!1});var i=""===r||l.default.looksValid(r);!this._authStepIsRequired("m.login.email.identity")||i&&""!==r?this.markFieldValid(e,i,"RegistrationForm.ERR_EMAIL_INVALID"):this.markFieldValid(e,!1,"RegistrationForm.ERR_MISSING_EMAIL");break;case"field_phone_number":var a=this.refs.phoneNumber?this.refs.phoneNumber.value:"",s=""===a||(0,u.looksValid)(a);!this._authStepIsRequired("m.login.msisdn")||s&&""!==a?this.markFieldValid(e,s,"RegistrationForm.ERR_PHONE_NUMBER_INVALID"):this.markFieldValid(e,!1,"RegistrationForm.ERR_MISSING_PHONE_NUMBER");break;case"field_username":var c=this.refs.username.value.trim();encodeURIComponent(c)!=c?this.markFieldValid(e,!1,"RegistrationForm.ERR_USERNAME_INVALID"):""==c?this.markFieldValid(e,!1,"RegistrationForm.ERR_USERNAME_BLANK"):this.markFieldValid(e,!0);break;case"field_password":""==t?this.markFieldValid(e,!1,"RegistrationForm.ERR_PASSWORD_MISSING"):t.length<this.props.minPasswordLength?this.markFieldValid(e,!1,"RegistrationForm.ERR_PASSWORD_LENGTH"):this.markFieldValid(e,!0);break;case"field_password_confirm":this.markFieldValid(e,t==n,"RegistrationForm.ERR_PASSWORD_MISMATCH")}},markFieldValid:function(e,t,n){var r=this.state.fieldValid;r[e]=t,this.setState({fieldValid:r}),t||((0,a.field_input_incorrect)(this.fieldElementById(e)),this.props.onError(n))},fieldElementById:function(e){switch(e){case"field_email":return this.refs.email;case"field_phone_number":return this.refs.phoneNumber;case"field_username":return this.refs.username;case"field_password":return this.refs.password;case"field_password_confirm":return this.refs.passwordConfirm}},_classForField:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var o=n.join(" ");return!1===this.state.fieldValid[e]&&(o&&(o+=" "),o+="error"),o},_onPhoneCountryChange:function(e){this.setState({phoneCountry:e.iso2,phonePrefix:e.prefix})},_authStepIsRequired:function(e){return!this.props.flows.some(function(t){return!t.stages.includes(e)})},render:function(){var e=this,t=this._authStepIsRequired("m.login.email.identity")?(0,f._t)("Email address"):(0,f._t)("Email address (optional)"),n=o.default.createElement("div",null,o.default.createElement("input",{type:"text",ref:"email",autoFocus:!0,placeholder:t,defaultValue:this.props.defaultEmail,className:this._classForField("field_email","mx_Login_field"),onBlur:function(){e.validateField("field_email")},value:e.state.email})),r=void 0;this.props.teamsConfig&&(this.props.teamsConfig.supportEmail&&this.state.showSupportEmail?r=o.default.createElement("p",{className:"mx_Login_support"},"Sorry, but your university is not registered with us just yet.  Email us on ",o.default.createElement("a",{href:"mailto:"+this.props.teamsConfig.supportEmail},this.props.teamsConfig.supportEmail),"  to get your university signed up. Or continue to register with Riot to enjoy our open source platform."):this.state.selectedTeam&&(r=o.default.createElement("p",{className:"mx_Login_support"},(0,f._t)("You are registering with %(SelectedTeamName)s",{SelectedTeamName:this.state.selectedTeam.name}))));var i=s.default.getComponent("views.login.CountryDropdown"),a=void 0;if(!d.default.get().disable_3pid_login){var l=this._authStepIsRequired("m.login.msisdn")?(0,f._t)("Mobile phone number"):(0,f._t)("Mobile phone number (optional)");a=o.default.createElement("div",{className:"mx_Login_phoneSection"},o.default.createElement(i,{ref:"phone_country",onOptionChange:this._onPhoneCountryChange,className:"mx_Login_phoneCountry mx_Login_field_prefix",value:this.state.phoneCountry,isSmall:!0,showPrefix:!0}),o.default.createElement("input",{type:"text",ref:"phoneNumber",placeholder:l,defaultValue:this.props.defaultPhoneNumber,className:this._classForField("field_phone_number","mx_Login_phoneNumberField","mx_Login_field","mx_Login_field_has_prefix"),onBlur:function(){e.validateField("field_phone_number")},value:e.state.phoneNumber}))}var u=o.default.createElement("input",{className:"mx_Login_submit",type:"submit",value:(0,f._t)("Register")}),c=(0,f._t)("User name");return o.default.createElement("div",null,o.default.createElement("form",{onSubmit:this.onSubmit},n,r,a,o.default.createElement("input",{type:"text",ref:"username",placeholder:c,defaultValue:this.props.defaultUsername,className:this._classForField("field_username","mx_Login_field"),onBlur:function(){e.validateField("field_username")}}),o.default.createElement("br",null),o.default.createElement("input",{type:"password",ref:"password",className:this._classForField("field_password","mx_Login_field"),onBlur:function(){e.validateField("field_password")},placeholder:(0,f._t)("Password"),defaultValue:this.props.defaultPassword}),o.default.createElement("br",null),o.default.createElement("input",{type:"password",ref:"passwordConfirm",placeholder:(0,f._t)("Confirm password"),className:this._classForField("field_password_confirm","mx_Login_field"),onBlur:function(){e.validateField("field_password_confirm")},defaultValue:this.props.defaultPassword}),o.default.createElement("br",null),u))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.field_input_incorrect=function(e){(0,r.default)(e,"callout.shake",300)};var r=function(e){return e&&e.__esModule?e:{default:e}}(n(239));n(624)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.looksValid=function(e){return r.test(e)};var r=/^[0-9 -\.]+$/;t.COUNTRIES=[{iso2:"GB",name:"United Kingdom",prefix:"44"},{iso2:"US",name:"United States",prefix:"1"},{iso2:"AF",name:"Afghanistan",prefix:"93"},{iso2:"AX",name:"Åland Islands",prefix:"358"},{iso2:"AL",name:"Albania",prefix:"355"},{iso2:"DZ",name:"Algeria",prefix:"213"},{iso2:"AS",name:"American Samoa",prefix:"1"},{iso2:"AD",name:"Andorra",prefix:"376"},{iso2:"AO",name:"Angola",prefix:"244"},{iso2:"AI",name:"Anguilla",prefix:"1"},{iso2:"AQ",name:"Antarctica",prefix:"672"},{iso2:"AG",name:"Antigua & Barbuda",prefix:"1"},{iso2:"AR",name:"Argentina",prefix:"54"},{iso2:"AM",name:"Armenia",prefix:"374"},{iso2:"AW",name:"Aruba",prefix:"297"},{iso2:"AU",name:"Australia",prefix:"61"},{iso2:"AT",name:"Austria",prefix:"43"},{iso2:"AZ",name:"Azerbaijan",prefix:"994"},{iso2:"BS",name:"Bahamas",prefix:"1"},{iso2:"BH",name:"Bahrain",prefix:"973"},{iso2:"BD",name:"Bangladesh",prefix:"880"},{iso2:"BB",name:"Barbados",prefix:"1"},{iso2:"BY",name:"Belarus",prefix:"375"},{iso2:"BE",name:"Belgium",prefix:"32"},{iso2:"BZ",name:"Belize",prefix:"501"},{iso2:"BJ",name:"Benin",prefix:"229"},{iso2:"BM",name:"Bermuda",prefix:"1"},{iso2:"BT",name:"Bhutan",prefix:"975"},{iso2:"BO",name:"Bolivia",prefix:"591"},{iso2:"BA",name:"Bosnia",prefix:"387"},{iso2:"BW",name:"Botswana",prefix:"267"},{iso2:"BV",name:"Bouvet Island",prefix:"47"},{iso2:"BR",name:"Brazil",prefix:"55"},{iso2:"IO",name:"British Indian Ocean Territory",prefix:"246"},{iso2:"VG",name:"British Virgin Islands",prefix:"1"},{iso2:"BN",name:"Brunei",prefix:"673"},{iso2:"BG",name:"Bulgaria",prefix:"359"},{iso2:"BF",name:"Burkina Faso",prefix:"226"},{iso2:"BI",name:"Burundi",prefix:"257"},{iso2:"KH",name:"Cambodia",prefix:"855"},{iso2:"CM",name:"Cameroon",prefix:"237"},{iso2:"CA",name:"Canada",prefix:"1"},{iso2:"CV",name:"Cape Verde",prefix:"238"},{iso2:"BQ",name:"Caribbean Netherlands",prefix:"599"},{iso2:"KY",name:"Cayman Islands",prefix:"1"},{iso2:"CF",name:"Central African Republic",prefix:"236"},{iso2:"TD",name:"Chad",prefix:"235"},{iso2:"CL",name:"Chile",prefix:"56"},{iso2:"CN",name:"China",prefix:"86"},{iso2:"CX",name:"Christmas Island",prefix:"61"},{iso2:"CC",name:"Cocos (Keeling) Islands",prefix:"61"},{iso2:"CO",name:"Colombia",prefix:"57"},{iso2:"KM",name:"Comoros",prefix:"269"},{iso2:"CG",name:"Congo - Brazzaville",prefix:"242"},{iso2:"CD",name:"Congo - Kinshasa",prefix:"243"},{iso2:"CK",name:"Cook Islands",prefix:"682"},{iso2:"CR",name:"Costa Rica",prefix:"506"},{iso2:"HR",name:"Croatia",prefix:"385"},{iso2:"CU",name:"Cuba",prefix:"53"},{iso2:"CW",name:"Curaçao",prefix:"599"},{iso2:"CY",name:"Cyprus",prefix:"357"},{iso2:"CZ",name:"Czech Republic",prefix:"420"},{iso2:"CI",name:"Côte d’Ivoire",prefix:"225"},{iso2:"DK",name:"Denmark",prefix:"45"},{iso2:"DJ",name:"Djibouti",prefix:"253"},{iso2:"DM",name:"Dominica",prefix:"1"},{iso2:"DO",name:"Dominican Republic",prefix:"1"},{iso2:"EC",name:"Ecuador",prefix:"593"},{iso2:"EG",name:"Egypt",prefix:"20"},{iso2:"SV",name:"El Salvador",prefix:"503"},{iso2:"GQ",name:"Equatorial Guinea",prefix:"240"},{iso2:"ER",name:"Eritrea",prefix:"291"},{iso2:"EE",name:"Estonia",prefix:"372"},{iso2:"ET",name:"Ethiopia",prefix:"251"},{iso2:"FK",name:"Falkland Islands",prefix:"500"},{iso2:"FO",name:"Faroe Islands",prefix:"298"},{iso2:"FJ",name:"Fiji",prefix:"679"},{iso2:"FI",name:"Finland",prefix:"358"},{iso2:"FR",name:"France",prefix:"33"},{iso2:"GF",name:"French Guiana",prefix:"594"},{iso2:"PF",name:"French Polynesia",prefix:"689"},{iso2:"TF",name:"French Southern Territories",prefix:"262"},{iso2:"GA",name:"Gabon",prefix:"241"},{iso2:"GM",name:"Gambia",prefix:"220"},{iso2:"GE",name:"Georgia",prefix:"995"},{iso2:"DE",name:"Germany",prefix:"49"},{iso2:"GH",name:"Ghana",prefix:"233"},{iso2:"GI",name:"Gibraltar",prefix:"350"},{iso2:"GR",name:"Greece",prefix:"30"},{iso2:"GL",name:"Greenland",prefix:"299"},{iso2:"GD",name:"Grenada",prefix:"1"},{iso2:"GP",name:"Guadeloupe",prefix:"590"},{iso2:"GU",name:"Guam",prefix:"1"},{iso2:"GT",name:"Guatemala",prefix:"502"},{iso2:"GG",name:"Guernsey",prefix:"44"},{iso2:"GN",name:"Guinea",prefix:"224"},{iso2:"GW",name:"Guinea-Bissau",prefix:"245"},{iso2:"GY",name:"Guyana",prefix:"592"},{iso2:"HT",name:"Haiti",prefix:"509"},{iso2:"HM",name:"Heard & McDonald Islands",prefix:"672"},{iso2:"HN",name:"Honduras",prefix:"504"},{iso2:"HK",name:"Hong Kong",prefix:"852"},{iso2:"HU",name:"Hungary",prefix:"36"},{iso2:"IS",name:"Iceland",prefix:"354"},{iso2:"IN",name:"India",prefix:"91"},{iso2:"ID",name:"Indonesia",prefix:"62"},{iso2:"IR",name:"Iran",prefix:"98"},{iso2:"IQ",name:"Iraq",prefix:"964"},{iso2:"IE",name:"Ireland",prefix:"353"},{iso2:"IM",name:"Isle of Man",prefix:"44"},{iso2:"IL",name:"Israel",prefix:"972"},{iso2:"IT",name:"Italy",prefix:"39"},{iso2:"JM",name:"Jamaica",prefix:"1"},{iso2:"JP",name:"Japan",prefix:"81"},{iso2:"JE",name:"Jersey",prefix:"44"},{iso2:"JO",name:"Jordan",prefix:"962"},{iso2:"KZ",name:"Kazakhstan",prefix:"7"},{iso2:"KE",name:"Kenya",prefix:"254"},{iso2:"KI",name:"Kiribati",prefix:"686"},{iso2:"KW",name:"Kuwait",prefix:"965"},{iso2:"KG",name:"Kyrgyzstan",prefix:"996"},{iso2:"LA",name:"Laos",prefix:"856"},{iso2:"LV",name:"Latvia",prefix:"371"},{iso2:"LB",name:"Lebanon",prefix:"961"},{iso2:"LS",name:"Lesotho",prefix:"266"},{iso2:"LR",name:"Liberia",prefix:"231"},{iso2:"LY",name:"Libya",prefix:"218"},{iso2:"LI",name:"Liechtenstein",prefix:"423"},{iso2:"LT",name:"Lithuania",prefix:"370"},{iso2:"LU",name:"Luxembourg",prefix:"352"},{iso2:"MO",name:"Macau",prefix:"853"},{iso2:"MK",name:"Macedonia",prefix:"389"},{iso2:"MG",name:"Madagascar",prefix:"261"},{iso2:"MW",name:"Malawi",prefix:"265"},{iso2:"MY",name:"Malaysia",prefix:"60"},{iso2:"MV",name:"Maldives",prefix:"960"},{iso2:"ML",name:"Mali",prefix:"223"},{iso2:"MT",name:"Malta",prefix:"356"},{iso2:"MH",name:"Marshall Islands",prefix:"692"},{iso2:"MQ",name:"Martinique",prefix:"596"},{iso2:"MR",name:"Mauritania",prefix:"222"},{iso2:"MU",name:"Mauritius",prefix:"230"},{iso2:"YT",name:"Mayotte",prefix:"262"},{iso2:"MX",name:"Mexico",prefix:"52"},{iso2:"FM",name:"Micronesia",prefix:"691"},{iso2:"MD",name:"Moldova",prefix:"373"},{iso2:"MC",name:"Monaco",prefix:"377"},{iso2:"MN",name:"Mongolia",prefix:"976"},{iso2:"ME",name:"Montenegro",prefix:"382"},{iso2:"MS",name:"Montserrat",prefix:"1"},{iso2:"MA",name:"Morocco",prefix:"212"},{iso2:"MZ",name:"Mozambique",prefix:"258"},{iso2:"MM",name:"Myanmar",prefix:"95"},{iso2:"NA",name:"Namibia",prefix:"264"},{iso2:"NR",name:"Nauru",prefix:"674"},{iso2:"NP",name:"Nepal",prefix:"977"},{iso2:"NL",name:"Netherlands",prefix:"31"},{iso2:"NC",name:"New Caledonia",prefix:"687"},{iso2:"NZ",name:"New Zealand",prefix:"64"},{iso2:"NI",name:"Nicaragua",prefix:"505"},{iso2:"NE",name:"Niger",prefix:"227"},{iso2:"NG",name:"Nigeria",prefix:"234"},{iso2:"NU",name:"Niue",prefix:"683"},{iso2:"NF",name:"Norfolk Island",prefix:"672"},{iso2:"KP",name:"North Korea",prefix:"850"},{iso2:"MP",name:"Northern Mariana Islands",prefix:"1"},{iso2:"NO",name:"Norway",prefix:"47"},{iso2:"OM",name:"Oman",prefix:"968"},{iso2:"PK",name:"Pakistan",prefix:"92"},{iso2:"PW",name:"Palau",prefix:"680"},{iso2:"PS",name:"Palestine",prefix:"970"},{iso2:"PA",name:"Panama",prefix:"507"},{iso2:"PG",name:"Papua New Guinea",prefix:"675"},{iso2:"PY",name:"Paraguay",prefix:"595"},{iso2:"PE",name:"Peru",prefix:"51"},{iso2:"PH",name:"Philippines",prefix:"63"},{iso2:"PN",name:"Pitcairn Islands",prefix:"870"},{iso2:"PL",name:"Poland",prefix:"48"},{iso2:"PT",name:"Portugal",prefix:"351"},{iso2:"PR",name:"Puerto Rico",prefix:"1"},{iso2:"QA",name:"Qatar",prefix:"974"},{iso2:"RO",name:"Romania",prefix:"40"},{iso2:"RU",name:"Russia",prefix:"7"},{iso2:"RW",name:"Rwanda",prefix:"250"},{iso2:"RE",name:"Réunion",prefix:"262"},{iso2:"WS",name:"Samoa",prefix:"685"},{iso2:"SM",name:"San Marino",prefix:"378"},{iso2:"SA",name:"Saudi Arabia",prefix:"966"},{iso2:"SN",name:"Senegal",prefix:"221"},{iso2:"RS",name:"Serbia",prefix:"381 p"},{iso2:"SC",name:"Seychelles",prefix:"248"},{iso2:"SL",name:"Sierra Leone",prefix:"232"},{iso2:"SG",name:"Singapore",prefix:"65"},{iso2:"SX",name:"Sint Maarten",prefix:"1"},{iso2:"SK",name:"Slovakia",prefix:"421"},{iso2:"SI",name:"Slovenia",prefix:"386"},{iso2:"SB",name:"Solomon Islands",prefix:"677"},{iso2:"SO",name:"Somalia",prefix:"252"},{iso2:"ZA",name:"South Africa",prefix:"27"},{iso2:"GS",name:"South Georgia & South Sandwich Islands",prefix:"500"},{iso2:"KR",name:"South Korea",prefix:"82"},{iso2:"SS",name:"South Sudan",prefix:"211"},{iso2:"ES",name:"Spain",prefix:"34"},{iso2:"LK",name:"Sri Lanka",prefix:"94"},{iso2:"BL",name:"St. Barthélemy",prefix:"590"},{iso2:"SH",name:"St. Helena",prefix:"290 n"},{iso2:"KN",name:"St. Kitts & Nevis",prefix:"1"},{iso2:"LC",name:"St. Lucia",prefix:"1"},{iso2:"MF",name:"St. Martin",prefix:"590"},{iso2:"PM",name:"St. Pierre & Miquelon",prefix:"508"},{iso2:"VC",name:"St. Vincent & Grenadines",prefix:"1"},{iso2:"SD",name:"Sudan",prefix:"249"},{iso2:"SR",name:"Suriname",prefix:"597"},{iso2:"SJ",name:"Svalbard & Jan Mayen",prefix:"47"},{iso2:"SZ",name:"Swaziland",prefix:"268"},{iso2:"SE",name:"Sweden",prefix:"46"},{iso2:"CH",name:"Switzerland",prefix:"41"},{iso2:"SY",name:"Syria",prefix:"963"},{iso2:"ST",name:"São Tomé & Príncipe",prefix:"239"},{iso2:"TW",name:"Taiwan",prefix:"886"},{iso2:"TJ",name:"Tajikistan",prefix:"992"},{iso2:"TZ",name:"Tanzania",prefix:"255"},{iso2:"TH",name:"Thailand",prefix:"66"},{iso2:"TL",name:"Timor-Leste",prefix:"670"},{iso2:"TG",name:"Togo",prefix:"228"},{iso2:"TK",name:"Tokelau",prefix:"690"},{iso2:"TO",name:"Tonga",prefix:"676"},{iso2:"TT",name:"Trinidad & Tobago",prefix:"1"},{iso2:"TN",name:"Tunisia",prefix:"216"},{iso2:"TR",name:"Turkey",prefix:"90"},{iso2:"TM",name:"Turkmenistan",prefix:"993"},{iso2:"TC",name:"Turks & Caicos Islands",prefix:"1"},{iso2:"TV",name:"Tuvalu",prefix:"688"},{iso2:"VI",name:"U.S. Virgin Islands",prefix:"1"},{iso2:"UG",name:"Uganda",prefix:"256"},{iso2:"UA",name:"Ukraine",prefix:"380"},{iso2:"AE",name:"United Arab Emirates",prefix:"971"},{iso2:"UY",name:"Uruguay",prefix:"598"},{iso2:"UZ",name:"Uzbekistan",prefix:"998"},{iso2:"VU",name:"Vanuatu",prefix:"678"},{iso2:"VA",name:"Vatican City",prefix:"39"},{iso2:"VE",name:"Venezuela",prefix:"58"},{iso2:"VN",name:"Vietnam",prefix:"84"},{iso2:"WF",name:"Wallis & Futuna",prefix:"681"},{iso2:"EH",name:"Western Sahara",prefix:"212"},{iso2:"YE",name:"Yemen",prefix:"967"},{iso2:"ZM",name:"Zambia",prefix:"260"},{iso2:"ZW",name:"Zimbabwe",prefix:"263"}]},function(e,t){e.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}},function(e,t){e.exports={L:1,M:0,Q:3,H:2}},function(e,t,n){var r=n(672);function o(e,t){if(void 0==e.length)throw new Error(e.length+"/"+t);for(var n=0;n<e.length&&0==e[n];)n++;this.num=new Array(e.length-n+t);for(var r=0;r<e.length-n;r++)this.num[r]=e[r+n]}o.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var t=new Array(this.getLength()+e.getLength()-1),n=0;n<this.getLength();n++)for(var i=0;i<e.getLength();i++)t[n+i]^=r.gexp(r.glog(this.get(n))+r.glog(e.get(i)));return new o(t,0)},mod:function(e){if(this.getLength()-e.getLength()<0)return this;for(var t=r.glog(this.get(0))-r.glog(e.get(0)),n=new Array(this.getLength()),i=0;i<this.getLength();i++)n[i]=this.get(i);for(i=0;i<e.getLength();i++)n[i]^=r.gexp(r.glog(e.get(i))+t);return new o(n,0).mod(e)}},e.exports=o},function(e,t){for(var n={glog:function(e){if(e<1)throw new Error("glog("+e+")");return n.LOG_TABLE[e]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return n.EXP_TABLE[e]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},r=0;r<8;r++)n.EXP_TABLE[r]=1<<r;for(r=8;r<256;r++)n.EXP_TABLE[r]=n.EXP_TABLE[r-4]^n.EXP_TABLE[r-5]^n.EXP_TABLE[r-6]^n.EXP_TABLE[r-8];for(r=0;r<255;r++)n.LOG_TABLE[n.EXP_TABLE[r]]=r;e.exports=n},function(e,t,n){"use strict";var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};var o=n(0),i=n(41),a=n(1618);e.exports=o.createClass({displayName:"GeminiScrollbar",propTypes:{autoshow:o.PropTypes.bool,forceGemini:o.PropTypes.bool,onResize:o.PropTypes.func},getDefaultProps:function(){return{autoshow:!1,forceGemini:!1}},scrollbar:null,componentDidMount:function(){this.scrollbar=new a({element:i.findDOMNode(this),autoshow:this.props.autoshow,forceGemini:this.props.forceGemini,createElements:!1,onResize:this.props.onResize}).create()},componentDidUpdate:function(){this.scrollbar.update()},componentWillUnmount:function(){this.scrollbar&&this.scrollbar.destroy(),this.scrollbar=null},render:function(){var e=this.props,t=e.className,n=e.children,i=(e.autoshow,e.forceGemini,e.onResize,function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["className","children","autoshow","forceGemini","onResize"])),a="";return t&&(a+=" "+t),o.createElement("div",r({},i,{className:a}),o.createElement("div",{className:"gm-scrollbar -vertical"},o.createElement("div",{className:"thumb"})),o.createElement("div",{className:"gm-scrollbar -horizontal"},o.createElement("div",{className:"thumb"})),o.createElement("div",{className:"gm-scroll-view",ref:"scroll-view"},n))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=p(n(11)),o=p(n(4)),i=p(n(5)),a=p(n(12)),s=p(n(13)),l=p(n(0)),u=p(n(1)),c=p(n(89)),f=n(2),d=p(n(142));function p(e){return e&&e.__esModule?e:{default:e}}var m=function(e){function t(e){(0,o.default)(this,t);var n=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this,e)),i=n.getCurlBase();return n.state={curlBase:i},n}return(0,s.default)(t,e),(0,i.default)(t,[{key:"getCurlBase",value:function(){var e=c.default.parse(this.props.url),t=void 0,n=void 0,r=new URLSearchParams(e.search);return d.default.isScalarUrl(e)&&r&&r.get("url")&&(t=c.default.parse(r.get("url")))&&(t.search=t.query="",n=t.format()),!t&&e&&(e.search=e.query="",n=e.format()),n}},{key:"render",value:function(){var e=void 0;this.props.isRoomEncrypted&&(e=l.default.createElement("span",{className:"mx_AppPermissionWarningTextLabel"},(0,f._t)("NOTE: Apps are not end-to-end encrypted")));var t=l.default.createElement("span",{className:"mx_AppPermissionWarningTextLabel"},(0,f._t)("Warning: This widget might use cookies."));return l.default.createElement("div",{className:"mx_AppPermissionWarning"},l.default.createElement("div",{className:"mx_AppPermissionWarningImage"},l.default.createElement("img",{src:"img/warning.svg",alt:(0,f._t)("Warning!")})),l.default.createElement("div",{className:"mx_AppPermissionWarningText"},l.default.createElement("span",{className:"mx_AppPermissionWarningTextLabel"},(0,f._t)("Do you want to load widget from URL:"))," ",l.default.createElement("span",{className:"mx_AppPermissionWarningTextURL"},this.state.curlBase),e,t),l.default.createElement("input",{className:"mx_AppPermissionButton",type:"button",value:(0,f._t)("Allow"),onClick:this.props.onPermissionGranted}))}}]),t}(l.default.Component);t.default=m,m.propTypes={isRoomEncrypted:u.default.bool,url:u.default.string.isRequired,onPermissionGranted:u.default.func.isRequired},m.defaultProps={isRoomEncrypted:!1,onPermissionGranted:function(){}},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=d(n(11)),o=d(n(4)),i=d(n(5)),a=d(n(12)),s=d(n(13)),l=d(n(0)),u=d(n(1)),c=d(n(459)),f=d(n(27));function d(e){return e&&e.__esModule?e:{default:e}}var p=function(e){function t(e){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this,e))}return(0,s.default)(t,e),(0,i.default)(t,[{key:"render",value:function(){var e="mx_TintableSvgButton";return this.props.className&&(e+=" "+this.props.className),l.default.createElement("span",{width:this.props.width,height:this.props.height,className:e},l.default.createElement(c.default,{src:this.props.src,width:this.props.width,height:this.props.height}),l.default.createElement(f.default,{onClick:this.props.onClick,element:"span",title:this.props.title}))}}]),t}(l.default.Component);t.default=p,p.propTypes={src:u.default.string,title:u.default.string,className:u.default.string,width:u.default.string.isRequired,height:u.default.string.isRequired,onClick:u.default.func},p.defaultProps={onClick:function(){}},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(0)),o=i(n(1));function i(e){return e&&e.__esModule?e:{default:e}}var a=function(e){return r.default.createElement("div",{className:"mx_AppPermissionWarning"},r.default.createElement("div",{className:"mx_AppPermissionWarningImage"},r.default.createElement("img",{src:"img/warning.svg",alt:""})),r.default.createElement("div",{className:"mx_AppPermissionWarningText"},r.default.createElement("span",{className:"mx_AppPermissionWarningTextLabel"},e.errorMsg)))};a.propTypes={errorMsg:o.default.string},a.defaultProps={errorMsg:"Error"},t.default=a,e.exports=t.default},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(0));e.exports=r.default.createClass({displayName:"MessageSpinner",render:function(){var e=this.props.w||32,t=this.props.h||32,n=this.props.imgClassName||"",o=this.props.msg||"Loading...";return r.default.createElement("div",{className:"mx_Spinner"},r.default.createElement("div",{className:"mx_Spinner_Msg"},o)," ",r.default.createElement("img",{src:"img/spinner.gif",width:e,height:t,className:n}))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=p(n(0)),o=p(n(1)),i=p(n(24)),a=n(17),s=p(n(3)),l=p(n(10)),u=n(80),c=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(176)),f=p(n(145)),d=p(n(81));function p(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"TagTile",propTypes:{tag:o.default.string},contextTypes:{matrixClient:o.default.instanceOf(a.MatrixClient).isRequired},getInitialState:function(){return{hover:!1,profile:null}},componentWillMount:function(){this.unmounted=!1,"+"===this.props.tag[0]&&(f.default.addListener("updateGroupProfile",this._onFlairStoreUpdated),this._onFlairStoreUpdated(),this._refreshGroup(this.props.tag))},componentWillUnmount:function(){this.unmounted=!0,"+"===this.props.tag[0]&&f.default.removeListener("updateGroupProfile",this._onFlairStoreUpdated)},_onFlairStoreUpdated:function(){var e=this;this.unmounted||f.default.getGroupProfileCached(this.context.matrixClient,this.props.tag).then(function(t){e.unmounted||e.setState({profile:t})}).catch(function(t){console.warn("Could not fetch group profile for "+e.props.tag,t)})},_refreshGroup:function(e){d.default.refreshGroupRooms(e),d.default.refreshGroupMembers(e)},onClick:function(e){e.preventDefault(),e.stopPropagation(),l.default.dispatch({action:"select_tag",tag:this.props.tag,ctrlOrCmdKey:(0,u.isOnlyCtrlOrCmdIgnoreShiftKeyEvent)(e),shiftKey:e.shiftKey}),"+"===this.props.tag[0]&&this._refreshGroup(this.props.tag)},_openContextMenu:function(e,t,n){var r=this;this.setState({hover:!1});var o=s.default.getComponent("context_menus.TagTileContextMenu");c.createMenu(o,{chevronOffset:n,left:e,top:t,tag:this.props.tag,onFinished:function(){r.setState({menuDisplayed:!1})}}),this.setState({menuDisplayed:!0})},onContextButtonClick:function(e){e.preventDefault(),e.stopPropagation();var t=e.target.getBoundingClientRect(),n=t.right+window.pageXOffset+3,r=t.top+t.height/2+window.pageYOffset;r-=20,this._openContextMenu(n,r,12)},onContextMenu:function(e){e.preventDefault();this._openContextMenu(e.clientX,e.clientY-20,12)},onMouseOver:function(){this.setState({hover:!0})},onMouseOut:function(){this.setState({hover:!1})},render:function(){var e=s.default.getComponent("avatars.BaseAvatar"),t=s.default.getComponent("elements.AccessibleButton"),n=s.default.getComponent("rooms.RoomTooltip"),o=this.state.profile||{},a=o.name||this.props.tag,l=o.avatarUrl?this.context.matrixClient.mxcUrlToHttp(o.avatarUrl,35,35,"crop"):null,u=(0,i.default)({mx_TagTile:!0,mx_TagTile_selected:this.props.selected}),c=this.state.hover?r.default.createElement(n,{className:"mx_TagTile_tooltip",label:a}):r.default.createElement("div",null),f=this.state.hover||this.state.menuDisplayed?r.default.createElement("div",{className:"mx_TagTile_context_button",onClick:this.onContextButtonClick},"···"):r.default.createElement("div",null);return r.default.createElement(t,{className:u,onClick:this.onClick,onContextMenu:this.onContextMenu},r.default.createElement("div",{className:"mx_TagTile_avatar",onMouseOver:this.onMouseOver,onMouseOut:this.onMouseOut},r.default.createElement(e,{name:a,idName:this.props.tag,url:l,width:35,height:35}),c,f))}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=_(n(19)),o=_(n(20)),i=n(9),a=_(n(11)),s=_(n(4)),l=_(n(5)),u=_(n(12)),c=_(n(13)),f=_(n(0)),d=_(n(1)),p=n(17),m=_(n(145)),h=_(n(10));function _(e){return e&&e.__esModule?e:{default:e}}var g=function(e){function t(){(0,s.default)(this,t);var e=(0,u.default)(this,(t.__proto__||(0,a.default)(t)).call(this));return e.onClick=e.onClick.bind(e),e}return(0,c.default)(t,e),(0,l.default)(t,[{key:"onClick",value:function(e){e.preventDefault(),e.stopPropagation(),h.default.dispatch({action:"view_group",group_id:this.props.groupProfile.groupId})}},{key:"render",value:function(){var e=this.context.matrixClient.mxcUrlToHttp(this.props.groupProfile.avatarUrl,16,16,"scale",!1),t=this.props.groupProfile.name?this.props.groupProfile.name+" ("+this.props.groupProfile.groupId+")":this.props.groupProfile.groupId;return f.default.createElement("img",{src:e,width:"16",height:"16",onClick:this.onClick,title:t})}}]),t}(f.default.Component);g.propTypes={groupProfile:d.default.shape({groupId:d.default.string.isRequired,name:d.default.string,avatarUrl:d.default.string.isRequired})},g.contextTypes={matrixClient:d.default.instanceOf(p.MatrixClient).isRequired};var v=function(e){function t(){(0,s.default)(this,t);var e=(0,u.default)(this,(t.__proto__||(0,a.default)(t)).call(this));return e.state={profiles:[]},e}return(0,c.default)(t,e),(0,l.default)(t,[{key:"componentWillUnmount",value:function(){this._unmounted=!0}},{key:"componentWillMount",value:function(){this._unmounted=!1,this._generateAvatars(this.props.groups)}},{key:"componentWillReceiveProps",value:function(e){this._generateAvatars(e.groups)}},{key:"_getGroupProfiles",value:function(){var e=(0,i.coroutine)(r.default.mark(function e(t){var n,a,s,l,u,c,f,d;return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=[],a=!0,s=!1,l=void 0,e.prev=4,u=(0,o.default)(t);case 6:if(a=(c=u.next()).done){e.next=22;break}return f=c.value,d=null,e.prev=9,e.next=12,(0,i.resolve)(m.default.getGroupProfileCached(this.context.matrixClient,f));case 12:d=e.sent,e.next=18;break;case 15:e.prev=15,e.t0=e.catch(9),console.error("Could not get profile for group",f,e.t0);case 18:n.push(d);case 19:a=!0,e.next=6;break;case 22:e.next=28;break;case 24:e.prev=24,e.t1=e.catch(4),s=!0,l=e.t1;case 28:e.prev=28,e.prev=29,!a&&u.return&&u.return();case 31:if(e.prev=31,!s){e.next=34;break}throw l;case 34:return e.finish(31);case 35:return e.finish(28);case 36:return e.abrupt("return",n.filter(function(e){return null!==e}));case 37:case"end":return e.stop()}},e,this,[[4,24,28,36],[9,15],[29,,31,35]])}));return function(t){return e.apply(this,arguments)}}()},{key:"_generateAvatars",value:function(){var e=(0,i.coroutine)(r.default.mark(function e(t){var n;return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t&&0!==t.length){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,(0,i.resolve)(this._getGroupProfiles(t));case 4:n=e.sent,this.unmounted||this.setState({profiles:n.filter(function(e){return!!e&&e.avatarUrl})});case 6:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"render",value:function(){if(0===this.state.profiles.length)return f.default.createElement("div",null);var e=this.state.profiles.map(function(e,t){return f.default.createElement(g,{key:t,groupProfile:e})});return f.default.createElement("span",{className:"mx_Flair"},e)}}]),t}(f.default.Component);t.default=v,v.propTypes={groups:d.default.arrayOf(d.default.string)},v.contextTypes={matrixClient:d.default.instanceOf(p.MatrixClient).isRequired},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=y(n(11)),o=y(n(4)),i=y(n(5)),a=y(n(12)),s=y(n(13)),l=y(n(0)),u=y(n(1)),c=y(n(3)),f=y(n(24)),d=y(n(39)),p=y(n(173)),m=y(n(458)),h=y(n(16)),_=n(2),g=y(n(27)),v=y(n(459));function y(e){return e&&e.__esModule?e:{default:e}}var b=function(e){function t(e){(0,o.default)(this,t);var n=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this,e));return n.state={scalarError:null},n.onManageIntegrations=n.onManageIntegrations.bind(n),n}return(0,s.default)(t,e),(0,i.default)(t,[{key:"componentWillMount",value:function(){var e=this;m.default.startListening(),this.scalarClient=null,d.default.get().integrations_ui_url&&d.default.get().integrations_rest_url&&(this.scalarClient=new p.default,this.scalarClient.connect().done(function(){e.forceUpdate()},function(t){e.setState({scalarError:t}),console.error("Error whilst initialising scalarClient for ManageIntegsButton",t)}))}},{key:"componentWillUnmount",value:function(){m.default.stopListening()}},{key:"onManageIntegrations",value:function(e){if(e.preventDefault(),!this.state.scalarError||this.scalarClient.hasCredentials()){var t=c.default.getComponent("views.settings.IntegrationsManager");h.default.createDialog(t,{src:null!==this.scalarClient&&this.scalarClient.hasCredentials()?this.scalarClient.getScalarInterfaceUrlForRoom(this.props.room):null},"mx_IntegrationsManager")}}},{key:"render",value:function(){var e=l.default.createElement("div",null),t=l.default.createElement("div",null),n=l.default.createElement("div",null);if(null!==this.scalarClient){var r=(0,f.default)({mx_RoomHeader_button:!0,mx_RoomSettings_integrationsButton_error:!!this.state.scalarError});this.state.scalarError&&!this.scalarClient.hasCredentials()&&(t=l.default.createElement("img",{src:"img/warning.svg",title:(0,_._t)("Integrations Error"),width:"17"}),n=l.default.createElement("span",{className:"mx_RoomSettings_integrationsButton_errorPopup"},(0,_._t)("Could not connect to the integration server"))),e=l.default.createElement(g.default,{className:r,onClick:this.onManageIntegrations,title:(0,_._t)("Manage Integrations")},l.default.createElement(v.default,{src:"img/icons-apps.svg",width:"35",height:"35"}),t,n)}return e}}]),t}(l.default.Component);t.default=b,b.propTypes={room:u.default.object.isRequired},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=y(n(37)),o=y(n(11)),i=y(n(4)),a=y(n(5)),s=y(n(12)),l=y(n(13)),u=y(n(0)),c=y(n(1)),f=n(17),d=y(n(312)),p=y(n(16)),m=y(n(3)),h=n(313),_=y(n(9)),g=n(2),v=y(n(22));function y(e){return e&&e.__esModule?e:{default:e}}var b=function(e){function t(e){(0,i.default)(this,t);var n=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this,e));return n.onImageError=n.onImageError.bind(n),n.onImageLoad=n.onImageLoad.bind(n),n.onImageEnter=n.onImageEnter.bind(n),n.onImageLeave=n.onImageLeave.bind(n),n.onClientSync=n.onClientSync.bind(n),n.onClick=n.onClick.bind(n),n._isGif=n._isGif.bind(n),n.state={decryptedUrl:null,decryptedThumbnailUrl:null,decryptedBlob:null,error:null,imgError:!1,imgLoaded:!1,loadedImageDimensions:null,hover:!1},n}return(0,l.default)(t,e),(0,a.default)(t,[{key:"componentWillMount",value:function(){this.unmounted=!1,this.context.matrixClient.on("sync",this.onClientSync)}},{key:"onClientSync",value:function(e,t){this.unmounted||"ERROR"!==e&&t!==e&&this.state.imgError&&this.setState({imgError:!1})}},{key:"onClick",value:function(e){if(0===e.button&&!e.metaKey){e.preventDefault();var t=this.props.mxEvent.getContent(),n=this._getContentUrl(),r=m.default.getComponent("elements.ImageView"),o={src:n,name:t.body&&t.body.length>0?t.body:(0,g._t)("Attachment"),mxEvent:this.props.mxEvent};t.info&&(o.width=t.info.w,o.height=t.info.h,o.fileSize=t.info.size),p.default.createDialog(r,o,"mx_Dialog_lightbox")}}},{key:"_isGif",value:function(){var e=this.props.mxEvent.getContent();return e&&e.info&&"image/gif"===e.info.mimetype}},{key:"onImageEnter",value:function(e){(this.setState({hover:!0}),this._isGif()&&!v.default.getValue("autoplayGifsAndVideos"))&&(e.target.src=this._getContentUrl())}},{key:"onImageLeave",value:function(e){(this.setState({hover:!1}),this._isGif()&&!v.default.getValue("autoplayGifsAndVideos"))&&(e.target.src=this._getThumbUrl())}},{key:"onImageError",value:function(){this.setState({imgError:!0})}},{key:"onImageLoad",value:function(){this.props.onWidgetLoad();var e=void 0;if(this.refs.image){var t=this.refs.image;e={naturalWidth:t.naturalWidth,naturalHeight:t.naturalHeight}}this.setState({imgLoaded:!0,loadedImageDimensions:e})}},{key:"_getContentUrl",value:function(){var e=this.props.mxEvent.getContent();return void 0!==e.file?this.state.decryptedUrl:this.context.matrixClient.mxcUrlToHttp(e.url)}},{key:"_getThumbUrl",value:function(){var e=this.props.mxEvent.getContent();return void 0!==e.file?this.state.decryptedThumbnailUrl?this.state.decryptedThumbnailUrl:this.state.decryptedUrl:e.info&&"image/svg+xml"===e.info.mimetype&&e.info.thumbnail_url?this.context.matrixClient.mxcUrlToHttp(e.info.thumbnail_url,800,600):this.context.matrixClient.mxcUrlToHttp(e.url,800,600)}},{key:"componentDidMount",value:function(){var e=this,t=this.props.mxEvent.getContent();if(void 0!==t.file&&null===this.state.decryptedUrl){var n=_.default.resolve(null);t.info&&t.info.thumbnail_file&&(n=(0,h.decryptFile)(t.info.thumbnail_file).then(function(e){return URL.createObjectURL(e)}));var r=void 0;n.then(function(n){return(0,h.decryptFile)(t.file).then(function(e){return r=e,URL.createObjectURL(e)}).then(function(t){e.setState({decryptedUrl:t,decryptedThumbnailUrl:n,decryptedBlob:r})})}).catch(function(t){console.warn("Unable to decrypt attachment: ",t),e.setState({error:t})}).done()}this._afterComponentDidMount()}},{key:"_afterComponentDidMount",value:function(){}},{key:"componentWillUnmount",value:function(){this.unmounted=!0,this.context.matrixClient.removeListener("sync",this.onClientSync),this._afterComponentWillUnmount(),this.state.decryptedUrl&&URL.revokeObjectURL(this.state.decryptedUrl),this.state.decryptedThumbnailUrl&&URL.revokeObjectURL(this.state.decryptedThumbnailUrl)}},{key:"_afterComponentWillUnmount",value:function(){}},{key:"_messageContent",value:function(e,t,n){var r=void 0,o=void 0;if(n&&n.info&&n.info.w&&n.info.h)r=n.info.w,o=n.info.h;else{if(!this.state.loadedImageDimensions)return this.wrapImage(e,u.default.createElement("img",{style:{display:"none"},src:t,ref:"image",alt:n.body,onError:this.onImageError,onLoad:this.onImageLoad}));r=this.state.loadedImageDimensions.naturalWidth,o=this.state.loadedImageDimensions.naturalHeight}var i=Math.min(this.props.maxImageHeight||600,o),a=r*i/o,s=null,l=null;void 0!==n.file&&null===this.state.decryptedUrl?l=u.default.createElement("img",{src:"img/spinner.gif",alt:n.body,width:"32",height:"32"}):this.state.imgLoaded||(l=this.getPlaceholder());var c=Boolean(l);t&&!this.state.imgError&&(s=u.default.createElement("img",{className:"mx_MImageBody_thumbnail",src:t,ref:"image",style:{maxWidth:a+"px"},alt:n.body,onError:this.onImageError,onLoad:this.onImageLoad,onMouseEnter:this.onImageEnter,onMouseLeave:this.onImageLeave}));var f=u.default.createElement("div",{className:"mx_MImageBody_thumbnail_container",style:{maxHeight:i+"px"}},u.default.createElement("div",{style:{paddingBottom:100*o/r+"%"}}),c&&u.default.createElement("div",{className:"mx_MImageBody_thumbnail",style:{maxWidth:r+"px"}},u.default.createElement("div",{className:"mx_MImageBody_thumbnail_spinner"},l)),u.default.createElement("div",{style:{display:c?"none":void 0}},s),this.state.hover&&this.getTooltip());return this.wrapImage(e,f)}},{key:"wrapImage",value:function(e,t){return u.default.createElement("a",{href:e,onClick:this.onClick},t)}},{key:"getPlaceholder",value:function(){return null}},{key:"getTooltip",value:function(){return null}},{key:"getFileBody",value:function(){return u.default.createElement(d.default,(0,r.default)({},this.props,{decryptedBlob:this.state.decryptedBlob}))}},{key:"render",value:function(){var e=this.props.mxEvent.getContent();if(null!==this.state.error)return u.default.createElement("span",{className:"mx_MImageBody",ref:"body"},u.default.createElement("img",{src:"img/warning.svg",width:"16",height:"16"}),(0,g._t)("Error decrypting image"));var t=this._getContentUrl(),n=void 0;n=this._isGif()&&v.default.getValue("autoplayGifsAndVideos")?t:this._getThumbUrl();var r=this._messageContent(t,n,e),o=this.getFileBody();return u.default.createElement("span",{className:"mx_MImageBody",ref:"body"},r,o)}}]),t}(u.default.Component);b.propTypes={mxEvent:c.default.object.isRequired,onWidgetLoad:c.default.func.isRequired,maxImageHeight:c.default.number},b.contextTypes={matrixClient:c.default.instanceOf(f.MatrixClient)},t.default=b,e.exports=t.default},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1));var o=n(0),i=n(3);e.exports=o.createClass({displayName:"MessageEvent",propTypes:{mxEvent:r.default.object.isRequired,highlights:r.default.array,highlightLink:r.default.string,showUrlPreview:r.default.bool,onWidgetLoad:r.default.func,tileShape:r.default.string,maxImageHeight:r.default.number},getEventTileOps:function(){return this.refs.body&&this.refs.body.getEventTileOps?this.refs.body.getEventTileOps():null},render:function(){var e=i.getComponent("messages.UnknownBody"),t={"m.text":i.getComponent("messages.TextualBody"),"m.notice":i.getComponent("messages.TextualBody"),"m.emote":i.getComponent("messages.TextualBody"),"m.image":i.getComponent("messages.MImageBody"),"m.file":i.getComponent("messages.MFileBody"),"m.audio":i.getComponent("messages.MAudioBody"),"m.video":i.getComponent("messages.MVideoBody")},n={"m.sticker":i.getComponent("messages.MStickerBody")},r=this.props.mxEvent.getContent(),a=this.props.mxEvent.getType(),s=r.msgtype,l=e;return this.props.mxEvent.isRedacted()||(a&&n[a]?l=n[a]:s&&t[s]?l=t[s]:r.url&&(l=t["m.file"])),o.createElement(l,{ref:"body",mxEvent:this.props.mxEvent,highlights:this.props.highlights,highlightLink:this.props.highlightLink,showUrlPreview:this.props.showUrlPreview,tileShape:this.props.tileShape,maxImageHeight:this.props.maxImageHeight,onWidgetLoad:this.props.onWidgetLoad})}})},function(e,t,n){var r=n(460);e.exports=function(e,t){return r(e,t)}},function(e,t,n){var r=n(632),o=n(1707),i=n(635),a=1,s=2;e.exports=function(e,t,n,l,u,c){var f=n&a,d=e.length,p=t.length;if(d!=p&&!(f&&p>d))return!1;var m=c.get(e);if(m&&c.get(t))return m==t;var h=-1,_=!0,g=n&s?new r:void 0;for(c.set(e,t),c.set(t,e);++h<d;){var v=e[h],y=t[h];if(l)var b=f?l(y,v,h,t,e,c):l(v,y,h,e,t,c);if(void 0!==b){if(b)continue;_=!1;break}if(g){if(!o(t,function(e,t){if(!i(g,t)&&(v===e||u(v,e,n,l,c)))return g.push(t)})){_=!1;break}}else if(v!==y&&!u(v,y,n,l,c)){_=!1;break}}return c.delete(e),c.delete(t),_}},function(e,t,n){var r=n(101).Uint8Array;e.exports=r},function(e,t,n){var r=n(687),o=n(463),i=n(252);e.exports=function(e){return r(e,i,o)}},function(e,t,n){var r=n(462),o=n(102);e.exports=function(e,t,n){var i=t(e);return o(e)?i:r(i,n(e))}},function(e,t){e.exports=function(){return[]}},function(e,t,n){var r=n(1712),o=n(464),i=n(102),a=n(465),s=n(315),l=n(690),u=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=i(e),c=!n&&o(e),f=!n&&!c&&a(e),d=!n&&!c&&!f&&l(e),p=n||c||f||d,m=p?r(e.length,String):[],h=m.length;for(var _ in e)!t&&!u.call(e,_)||p&&("length"==_||f&&("offset"==_||"parent"==_)||d&&("buffer"==_||"byteLength"==_||"byteOffset"==_)||s(_,h))||m.push(_);return m}},function(e,t,n){var r=n(1715),o=n(316),i=n(467),a=i&&i.isTypedArray,s=a?o(a):r;e.exports=s},function(e,t){e.exports=function(e,t){return function(n){return e(t(n))}}},function(e,t,n){"use strict";var r=g(n(0)),o=g(n(1)),i=g(n(8)),a=g(n(457)),s=g(n(16)),l=g(n(10)),u=g(n(3)),c=g(n(39)),f=g(n(173)),d=g(n(458)),p=n(2),m=g(n(142)),h=g(n(292)),_=g(n(27));function g(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"AppsDrawer",propTypes:{userId:o.default.string.isRequired,room:o.default.object.isRequired,showApps:o.default.bool,hide:o.default.bool},defaultProps:{showApps:!0,hide:!1},getInitialState:function(){return{apps:this._getApps()}},componentWillMount:function(){d.default.startListening(),i.default.get().on("RoomState.events",this.onRoomStateEvents),h.default.on("update",this._updateApps)},componentDidMount:function(){var e=this;this.scalarClient=null,c.default.get().integrations_ui_url&&c.default.get().integrations_rest_url&&(this.scalarClient=new f.default,this.scalarClient.connect().then(function(){e.forceUpdate()}).catch(function(e){console.log("Failed to connect to integrations server")})),this.dispatcherRef=l.default.register(this.onAction)},componentWillUnmount:function(){d.default.stopListening(),i.default.get()&&i.default.get().removeListener("RoomState.events",this.onRoomStateEvents),h.default.removeListener("update",this._updateApps),l.default.unregister(this.dispatcherRef)},componentWillReceiveProps:function(e){this._updateApps()},onAction:function(e){var t=this.props.room.roomId+"_hide_widget_drawer";switch(e.action){case"appsDrawer":e.show?localStorage.removeItem(t):localStorage.setItem(t,!0)}},onRoomStateEvents:function(e,t){e.getRoomId()===this.props.room.roomId&&"im.vector.modular.widgets"===e.getType()&&this._updateApps()},_getApps:function(){return h.default.getEchoedRoomWidgets(this.props.room.roomId,m.default.getRoomWidgets(this.props.room)).map(function(e){return m.default.makeAppConfig(e.getStateKey(),e.getContent(),e.sender)})},_updateApps:function(){var e=this._getApps();this.setState({apps:e})},_canUserModify:function(){try{return m.default.canUserModifyWidgets(this.props.room.roomId)}catch(e){return console.error(e),!1}},_launchManageIntegrations:function(){var e=u.default.getComponent("views.settings.IntegrationsManager"),t=null!==this.scalarClient&&this.scalarClient.hasCredentials()?this.scalarClient.getScalarInterfaceUrlForRoom(this.props.room,"add_integ"):null;s.default.createTrackedDialog("Integrations Manager","",e,{src:t},"mx_IntegrationsManager")},onClickAddWidget:function(e){e.preventDefault();var t=this._getApps();if(t&&t.length>=2){var n=u.default.getComponent("dialogs.ErrorDialog");return console.error("The maximum number of 2 widgets have already been added to this room."),void s.default.createDialog(n,{title:(0,p._t)("Cannot add any more widgets"),description:(0,p._t)("The maximum permitted number of widgets have already been added to this room.")})}this._launchManageIntegrations()},render:function(){var e=this,t=this.state.apps.map(function(t,n,o){var i=m.default.getCapWhitelistForAppTypeInRoomId(t.type,e.props.room.roomId);return r.default.createElement(a.default,{key:t.id,id:t.id,url:t.url,name:t.name,type:t.type,fullWidth:o.length<2,room:e.props.room,userId:e.props.userId,show:e.props.showApps,creatorUserId:t.creatorUserId,widgetPageTitle:t.data&&t.data.title?t.data.title:"",waitForIframeLoad:t.waitForIframeLoad,whitelistCapabilities:i})}),n=void 0;this.props.showApps&&this._canUserModify()&&(n=r.default.createElement(_.default,{onClick:this.onClickAddWidget,className:this.state.apps.length<2?"mx_AddWidget_button mx_AddWidget_button_full_width":"mx_AddWidget_button",title:(0,p._t)("Add a widget")},"[+] ",(0,p._t)("Add a widget")));var o=void 0;if(0===t.length&&h.default.roomHasPendingWidgets(this.props.room.roomId,m.default.getRoomWidgets(this.props.room))){var i=u.default.getComponent("elements.Spinner");o=r.default.createElement(i,null)}return r.default.createElement("div",{className:"mx_AppsDrawer"+(this.props.hide?" mx_AppsDrawer_hidden":"")},r.default.createElement("div",{id:"apps",className:"mx_AppsContainer"},t,o),this._canUserModify()&&n)}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=y(n(11)),o=y(n(4)),i=y(n(5)),a=y(n(12)),s=y(n(233)),l=y(n(13)),u=y(n(0)),c=y(n(41)),f=y(n(1)),d=y(n(24)),p=y(n(694)),m=(y(n(683)),y(n(3))),h=y(n(9)),_=n(17),g=y(n(701)),v=y(n(22));function y(e){return e&&e.__esModule?e:{default:e}}var b=0,E=function(e){function t(e){(0,o.default)(this,t);var n=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this,e));return n.autocompleter=new g.default(e.room),n.completionPromise=null,n.hide=n.hide.bind(n),n.onCompletionClicked=n.onCompletionClicked.bind(n),n.state={completions:[],completionList:[],selectionOffset:b,shouldShowCompletions:!0,hide:!1,forceComplete:!1},n}return(0,l.default)(t,e),(0,i.default)(t,[{key:"componentWillReceiveProps",value:function(e,t){this.props.room.roomId!==e.room.roomId&&(this.autocompleter.destroy(),this.autocompleter=new g.default(e.room)),e.query!==this.props.query&&this.complete(e.query,e.selection)}},{key:"componentWillUnmount",value:function(){this.autocompleter.destroy()}},{key:"complete",value:function(e,t){var n=this;if(this.queryRequested=e,this.debounceCompletionsRequest&&clearTimeout(this.debounceCompletionsRequest),""===e)return this.setState({completions:[],completionList:[],selectionOffset:b,hide:!0}),h.default.resolve(null);var r=v.default.getValue("autocompleteDelay");(this.state.completions.length>0||this.state.forceComplete)&&(r=0);var o=h.default.defer();return this.debounceCompletionsRequest=setTimeout(function(){n.processQuery(e,t).then(function(){o.resolve()})},r),o.promise}},{key:"processQuery",value:function(e,t){var n=this;return this.autocompleter.getCompletions(e,t,this.state.forceComplete).then(function(t){e===n.queryRequested&&n.processCompletions(t)})}},{key:"processCompletions",value:function(e){var t=(0,p.default)(e,function(e){return e.completions}),n=b;if(t.length>0){var r=0===this.state.selectionOffset?null:this.state.completionList[this.state.selectionOffset-1].completion;-1===(n=t.findIndex(function(e){return e.completion===r}))?n=b:n++}var o=this.state.hide;o=!e.some(function(e){return!!e.command.command}),this.setState({completions:e,completionList:t,selectionOffset:n,hide:o,forceComplete:!1})}},{key:"countCompletions",value:function(){return this.state.completionList.length}},{key:"onUpArrow",value:function(){var e=this.countCompletions(),t=(e+1+this.state.selectionOffset-1)%(e+1);if(!e)return null;this.setSelection(t)}},{key:"onDownArrow",value:function(){var e=this.countCompletions(),t=(this.state.selectionOffset+1)%(e+1);if(!e)return null;this.setSelection(t)}},{key:"onEscape",value:function(e){0!==this.countCompletions()&&(e.preventDefault(),this.hide())}},{key:"hide",value:function(){this.setState({hide:!0,selectionOffset:0,completions:[],completionList:[]})}},{key:"forceComplete",value:function(){var e=this,t=h.default.defer();return this.setState({forceComplete:!0,hide:!1},function(){e.complete(e.props.query,e.props.selection).then(function(){t.resolve(e.countCompletions())})}),t.promise}},{key:"onCompletionClicked",value:function(e){return 0!==this.countCompletions()&&e!==b&&(this.props.onConfirm(this.state.completionList[e-1]),this.hide(),!0)}},{key:"setSelection",value:function(e){this.setState({selectionOffset:e,hide:!1}),this.props.onSelectionChange&&this.props.onSelectionChange(this.state.completionList[e-1])}},{key:"componentDidUpdate",value:function(){var e=this.refs["completion"+this.state.selectionOffset];if(e&&this.container){var t=c.default.findDOMNode(e),n=t&&t.offsetTop;(n>this.container.scrollTop+this.container.offsetHeight||n<this.container.scrollTop)&&(this.container.scrollTop=n-this.container.offsetTop)}}},{key:"setState",value:function(e,n){(0,s.default)(t.prototype.__proto__||(0,r.default)(t.prototype),"setState",this).call(this,e,n)}},{key:"render",value:function(){var e=this,t=m.default.getComponent("views.elements.EmojiText"),n=1,r=this.state.completions.map(function(r,o){var i=r.completions.map(function(t,r){var o=(0,d.default)("mx_Autocomplete_Completion",{selected:n===e.state.selectionOffset}),i=n;n++;return u.default.cloneElement(t.component,{key:r,ref:"completion"+(n-1),className:o,onClick:function(){e.onCompletionClicked(i)}})});return i.length>0?u.default.createElement("div",{key:o,className:"mx_Autocomplete_ProviderSection"},u.default.createElement(t,{element:"div",className:"mx_Autocomplete_provider_name"},r.provider.getName()),r.provider.renderCompletions(i)):null}).filter(function(e){return!!e});return!this.state.hide&&r.length>0?u.default.createElement("div",{className:"mx_Autocomplete",ref:function(t){return e.container=t}},r):null}}]),t}(u.default.Component);t.default=E,E.propTypes={query:f.default.string.isRequired,onConfirm:f.default.func.isRequired,room:f.default.instanceOf(_.Room)},e.exports=t.default},function(e,t,n){var r=n(469),o=n(1723);e.exports=function(e,t){return r(o(e,t),1)}},function(e,t,n){var r=n(1724),o=n(1727),i=n(319),a=n(102),s=n(1733);e.exports=function(e){return"function"==typeof e?e:null==e?i:"object"==typeof e?a(e)?o(e[0],e[1]):r(e):s(e)}},function(e,t,n){var r=n(103);e.exports=function(e){return e==e&&!r(e)}},function(e,t){e.exports=function(e,t){return function(n){return null!=n&&n[e]===t&&(void 0!==t||e in Object(n))}}},function(e,t,n){var r=n(318);e.exports=function(e,t,n){var o=null==e?void 0:r(e,t);return void 0===o?n:o}},function(e,t,n){var r=n(1731),o=n(1732);e.exports=function(e,t){return null!=e&&o(e,t,r)}},function(e,t,n){var r=n(1736),o=n(253);e.exports=function(e,t){var n=-1,i=o(e)?Array(e.length):[];return r(e,function(e,r,o){i[++n]=t(e,r,o)}),i}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=h(n(19)),o=n(9),i=h(o),a=h(n(4)),s=h(n(5)),l=(n(17),h(n(1741))),u=h(n(1755)),c=h(n(1756)),f=h(n(1757)),d=h(n(1758)),p=h(n(1759)),m=h(n(1761));function h(e){return e&&e.__esModule?e:{default:e}}var _=[d.default,f.default,p.default,m.default,l.default,u.default,c.default],g=function(){function e(t){(0,a.default)(this,e),this.room=t,this.providers=_.map(function(e){return new e(t)})}return(0,s.default)(e,[{key:"destroy",value:function(){this.providers.forEach(function(e){e.destroy()})}},{key:"getCompletions",value:function(){var e=(0,o.coroutine)(r.default.mark(function e(t,n){var a,s=this,l=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,o.resolve)(i.default.all(this.providers.map(function(e){return e.getCompletions(t,n,l).timeout(3e3).reflect()})));case 2:return a=e.sent,e.abrupt("return",a.filter(function(e){return e.isFulfilled()}).map(function(e,r){return{completions:e.value(),provider:s.providers[r],command:s.providers[r].getCurrentCommand(t,n,l)}}));case 4:case"end":return e.stop()}},e,this)}));return function(t,n,r){return e.apply(this,arguments)}}()}]),e}();t.default=g,e.exports=t.default},function(e,t,n){var r=n(1745),o=Math.max;e.exports=function(e,t,n){return t=o(void 0===t?e.length-1:t,0),function(){for(var i=arguments,a=-1,s=o(i.length-t,0),l=Array(s);++a<s;)l[a]=i[t+a];a=-1;for(var u=Array(t+1);++a<t;)u[a]=i[a];return u[t]=n(l),r(e,this,u)}}},function(e,t,n){var r=n(1746),o=n(1748)(r);e.exports=o},function(e,t,n){var r=n(177),o=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();e.exports=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CommandMap=void 0;var r=h(n(65)),o=h(n(4)),i=h(n(5));t.processCommandInput=function(e,t){if("/"!==(t=t.replace(/\s+$/,""))[0])return null;var n=t.match(/^(\S+?)( +((.|\n)*))?$/),r=void 0,o=void 0;n?(r=n[1].substring(1).toLowerCase(),o=n[3]):r=t;b[r]&&(r=b[r]);return y[r]?y[r].runFn?y[r].run(e,o):null:g((0,f._t)("Unrecognised command:")+" "+t)};var a=h(n(0)),s=h(n(8)),l=h(n(10)),u=h(n(174)),c=h(n(3)),f=n(2),d=h(n(16)),p=n(22),m=h(p);function h(e){return e&&e.__esModule?e:{default:e}}var _=function(){function e(t){var n=t.name,r=t.args,i=void 0===r?"":r,a=t.description,s=t.runFn,l=t.hideCompletionAfterSpace,u=void 0!==l&&l;(0,o.default)(this,e),this.command="/"+n,this.args=i,this.description=a,this.runFn=s,this.hideCompletionAfterSpace=u}return(0,i.default)(e,[{key:"getCommand",value:function(){return this.command}},{key:"getCommandWithArgs",value:function(){return this.getCommand()+" "+this.args}},{key:"run",value:function(e,t){return this.runFn.bind(this)(e,t)}},{key:"getUsage",value:function(){return(0,f._t)("Usage")+": "+this.getCommandWithArgs()}}]),e}();function g(e){return{error:e}}function v(e){return{promise:e}}var y=t.CommandMap={ddg:new _({name:"ddg",args:"<query>",description:(0,f._td)("Searches DuckDuckGo for results"),runFn:function(e,t){var n=c.default.getComponent("dialogs.ErrorDialog");return d.default.createTrackedDialog("Slash Commands","/ddg is not a command",n,{title:(0,f._t)("/ddg is not a command"),description:(0,f._t)("To use it, just wait for autocomplete results to load and tab through them.")}),v()},hideCompletionAfterSpace:!0}),nick:new _({name:"nick",args:"<display_name>",description:(0,f._td)("Changes your display nickname"),runFn:function(e,t){return t?v(s.default.get().setDisplayName(t)):g(this.getUsage())}}),tint:new _({name:"tint",args:"<color1> [<color2>]",description:(0,f._td)("Changes colour scheme of current room"),runFn:function(e,t){if(t){var n=t.match(/^(#([\da-fA-F]{3}|[\da-fA-F]{6}))( +(#([\da-fA-F]{3}|[\da-fA-F]{6})))?$/);if(n){u.default.tint(n[1],n[4]);var r={};return r.primary_color=n[1],n[4]?r.secondary_color=n[4]:r.secondary_color=r.primary_color,v(m.default.setValue("roomColor",e,p.SettingLevel.ROOM_ACCOUNT,r))}}return g(this.getUsage())}}),topic:new _({name:"topic",args:"<topic>",description:(0,f._td)("Sets the room topic"),runFn:function(e,t){return t?v(s.default.get().setRoomTopic(e,t)):g(this.getUsage())}}),invite:new _({name:"invite",args:"<user-id>",description:(0,f._td)("Invites user with given id to current room"),runFn:function(e,t){if(t){var n=t.match(/^(\S+)$/);if(n)return v(s.default.get().invite(e,n[1]))}return g(this.getUsage())}}),join:new _({name:"join",args:"<room-alias>",description:(0,f._td)("Joins room with given alias"),runFn:function(e,t){if(t){var n=t.match(/^(\S+)$/);if(n){var r=n[1];return"#"!==r[0]?g(this.getUsage()):(r.includes(":")||(r+=":"+s.default.get().getDomain()),l.default.dispatch({action:"view_room",room_alias:r,auto_join:!0}),v())}}return g(this.getUsage())}}),part:new _({name:"part",args:"[<room-alias>]",description:(0,f._td)("Leave room"),runFn:function(e,t){var n=s.default.get(),r=void 0;if(t){var o=t.match(/^(\S+)$/);if(o){var i=o[1];if("#"!==i[0])return g(this.getUsage());i.includes(":")||(i+=":"+n.getDomain());for(var a=n.getRooms(),u=0;u<a.length;u++){for(var c=a[u].currentState.getStateEvents("m.room.aliases"),d=0;d<c.length;d++){for(var p=c[d].getContent().aliases||[],m=0;m<p.length;m++)if(p[m]===i){r=a[u].roomId;break}if(r)break}if(r)break}if(!r)return g((0,f._t)("Unrecognised room alias:")+" "+i)}}return r||(r=e),v(n.leave(r).then(function(){l.default.dispatch({action:"view_next_room"})}))}}),kick:new _({name:"kick",args:"<user-id> [reason]",description:(0,f._td)("Kicks user with given id"),runFn:function(e,t){if(t){var n=t.match(/^(\S+?)( +(.*))?$/);if(n)return v(s.default.get().kick(e,n[1],n[3]))}return g(this.getUsage())}}),ban:new _({name:"ban",args:"<user-id> [reason]",description:(0,f._td)("Bans user with given id"),runFn:function(e,t){if(t){var n=t.match(/^(\S+?)( +(.*))?$/);if(n)return v(s.default.get().ban(e,n[1],n[3]))}return g(this.getUsage())}}),unban:new _({name:"unban",args:"<user-id>",description:(0,f._td)("Unbans user with given id"),runFn:function(e,t){if(t){var n=t.match(/^(\S+)$/);if(n)return v(s.default.get().unban(e,n[1]))}return g(this.getUsage())}}),ignore:new _({name:"ignore",args:"<user-id>",description:(0,f._td)("Ignores a user, hiding their messages from you"),runFn:function(e,t){if(t){var n=s.default.get(),r=t.match(/^(\S+)$/);if(r){var o=r[1],i=n.getIgnoredUsers();return i.push(o),v(n.setIgnoredUsers(i).then(function(){var e=c.default.getComponent("dialogs.QuestionDialog");d.default.createTrackedDialog("Slash Commands","User ignored",e,{title:(0,f._t)("Ignored user"),description:a.default.createElement("div",null,a.default.createElement("p",null,(0,f._t)("You are now ignoring %(userId)s",{userId:o}))),hasCancelButton:!1})}))}}return g(this.getUsage())}}),unignore:new _({name:"unignore",args:"<user-id>",description:(0,f._td)("Stops ignoring a user, showing their messages going forward"),runFn:function(e,t){if(t){var n=s.default.get(),r=t.match(/^(\S+)$/);if(r){var o=r[1],i=n.getIgnoredUsers(),l=i.indexOf(o);return-1!==l&&i.splice(l,1),v(n.setIgnoredUsers(i).then(function(){var e=c.default.getComponent("dialogs.QuestionDialog");d.default.createTrackedDialog("Slash Commands","User unignored",e,{title:(0,f._t)("Unignored user"),description:a.default.createElement("div",null,a.default.createElement("p",null,(0,f._t)("You are no longer ignoring %(userId)s",{userId:o}))),hasCancelButton:!1})}))}}return g(this.getUsage())}}),op:new _({name:"op",args:"<user-id> [<power-level>]",description:(0,f._td)("Define the power level of a user"),runFn:function(e,t){if(t){var n=t.match(/^(\S+?)( +(-?\d+))?$/),r=50;if(n){var o=n[1];if(4===n.length&&void 0!==n[3]&&(r=parseInt(n[3])),!isNaN(r)){var i=s.default.get(),a=i.getRoom(e);if(!a)return g("Bad room ID: "+e);var l=a.currentState.getStateEvents("m.room.power_levels","");return v(i.setPowerLevel(e,o,r,l))}}}return g(this.getUsage())}}),deop:new _({name:"deop",args:"<user-id>",description:(0,f._td)("Deops user with given id"),runFn:function(e,t){if(t&&t.match(/^(\S+)$/)){var n=s.default.get(),r=n.getRoom(e);if(!r)return g("Bad room ID: "+e);var o=r.currentState.getStateEvents("m.room.power_levels","");return v(n.setPowerLevel(e,t,void 0,o))}return g(this.getUsage())}}),devtools:new _({name:"devtools",description:(0,f._td)("Opens the Developer Tools dialog"),runFn:function(e){var t=c.default.getComponent("dialogs.DevtoolsDialog");return d.default.createDialog(t,{roomId:e}),v()}}),verify:new _({name:"verify",args:"<user-id> <device-id> <device-signing-key>",description:(0,f._td)("Verifies a user, device, and pubkey tuple"),runFn:function(e,t){if(t){var n=t.match(/^(\S+) +(\S+) +(\S+)$/);if(n){var o=s.default.get(),i=n[1],l=n[2],u=n[3];return v(r.default.resolve(o.getStoredDevice(i,l)).then(function(e){if(!e)throw new Error((0,f._t)("Unknown (user, device) pair:")+" ("+i+", "+l+")");if(e.isVerified())throw e.getFingerprint()===u?new Error((0,f._t)("Device already verified!")):new Error((0,f._t)("WARNING: Device already verified, but keys do NOT MATCH!"));if(e.getFingerprint()!==u){var t=e.getFingerprint();throw new Error((0,f._t)('WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is "%(fprint)s" which does not match the provided key "%(fingerprint)s". This could mean your communications are being intercepted!',{fprint:t,userId:i,deviceId:l,fingerprint:u}))}return o.setDeviceVerified(i,l,!0)}).then(function(){var e=c.default.getComponent("dialogs.QuestionDialog");d.default.createTrackedDialog("Slash Commands","Verified key",e,{title:(0,f._t)("Verified key"),description:a.default.createElement("div",null,a.default.createElement("p",null,(0,f._t)("The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.",{userId:i,deviceId:l}))),hasCancelButton:!1})}))}}return g(this.getUsage())}}),me:new _({name:"me",args:"<message>",description:(0,f._td)("Displays action"),hideCompletionAfterSpace:!0}),discardsession:new _({name:"discardsession",description:(0,f._td)("Forces the current outbound group session in an encrypted room to be discarded"),runFn:function(e){try{s.default.get().forceDiscardSession(e)}catch(e){return g(e.message)}return v()}})},b={j:"join",newballsplease:"discardsession"}},function(e,t,n){"use strict";var r=v(n(14)),o=v(n(0)),i=v(n(1)),a=v(n(24)),s=v(n(10)),l=v(n(8)),u=v(n(130)),c=v(n(3)),f=n(176),d=g(n(451)),p=g(n(250)),m=v(n(27)),h=v(n(1764)),_=v(n(104));function g(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function v(e){return e&&e.__esModule?e:{default:e}}e.exports=o.default.createClass({displayName:"RoomTile",propTypes:{onClick:i.default.func,room:i.default.object.isRequired,collapsed:i.default.bool.isRequired,unread:i.default.bool.isRequired,highlight:i.default.bool.isRequired,transparent:i.default.bool,isInvite:i.default.bool.isRequired,incomingCall:i.default.object},getDefaultProps:function(){return{isDragging:!1}},getInitialState:function(){return{hover:!1,badgeHover:!1,menuDisplayed:!1,roomName:this.props.room.name,notifState:d.getRoomNotifsState(this.props.room.roomId),notificationCount:this.props.room.getUnreadNotificationCount(),selected:this.props.room.roomId===_.default.getRoomId()}},_shouldShowNotifBadge:function(){return[d.ALL_MESSAGES,d.ALL_MESSAGES_LOUD].indexOf(this.state.notifState)>-1},_shouldShowMentionBadge:function(){return this.state.notifState!==d.MUTE},_isDirectMessageRoom:function(e){var t=u.default.shared().getUserIdForRoomId(e);return Boolean(t)},onRoomTimeline:function(e,t){t===this.props.room&&this.setState({notificationCount:this.props.room.getUnreadNotificationCount()})},onRoomName:function(e){e===this.props.room&&this.setState({roomName:this.props.room.name})},onAccountData:function(e){"m.push_rules"===e.getType()&&this.setState({notifState:d.getRoomNotifsState(this.props.room.roomId)})},onAction:function(e){switch(e.action){case"on_room_read":if(e.roomId!==this.props.room.roomId)break;this.setState({notificationCount:this.props.room.getUnreadNotificationCount()})}},_onActiveRoomChange:function(){this.setState({selected:this.props.room.roomId===_.default.getRoomId()})},componentWillMount:function(){l.default.get().on("accountData",this.onAccountData),l.default.get().on("Room.timeline",this.onRoomTimeline),l.default.get().on("Room.name",this.onRoomName),h.default.addListener(this.props.room.roomId,this._onActiveRoomChange),this.dispatcherRef=s.default.register(this.onAction)},componentWillUnmount:function(){l.default.get()&&(l.default.get().removeListener("accountData",this.onAccountData),l.default.get().removeListener("Room.timeline",this.onRoomTimeline),l.default.get().removeListener("Room.name",this.onRoomName)),h.default.removeListener(this.props.room.roomId,this._onActiveRoomChange),s.default.unregister(this.dispatcherRef)},componentWillReceiveProps:function(e){this.setState({notificationCount:this.props.room.getUnreadNotificationCount()})},shouldComponentUpdate:function(e,t){var n=this;return!!(0,r.default)(e).some(function(t){return e[t]!==n.props[t]})||!!(0,r.default)(t).some(function(e){return t[e]!==n.state[e]})},onClick:function(e){this.props.onClick&&this.props.onClick(this.props.room.roomId,e)},onMouseEnter:function(){this.setState({hover:!0}),this.badgeOnMouseEnter()},onMouseLeave:function(){this.setState({hover:!1}),this.badgeOnMouseLeave()},_showContextMenu:function(e,t,n){var r=this,o=c.default.getComponent("context_menus.RoomTileContextMenu");(0,f.createMenu)(o,{chevronOffset:n,left:e,top:t,room:this.props.room,onFinished:function(){r.setState({menuDisplayed:!1}),r.props.refreshSubList()}}),this.setState({menuDisplayed:!0})},onContextMenu:function(e){if(e.preventDefault(),!l.default.get().isGuest()){this._showContextMenu(e.clientX,e.clientY-20,12)}},badgeOnMouseEnter:function(){l.default.get().isGuest()||this.state.badgeHover||this.setState({badgeHover:!0})},badgeOnMouseLeave:function(){this.setState({badgeHover:!1})},onBadgeClicked:function(e){if(e.stopPropagation(),!l.default.get().isGuest()){this.props.collapsed&&this.setState({hover:!1});var t=e.target.getBoundingClientRect(),n=t.right+window.pageXOffset+3,r=t.top+t.height/2+window.pageYOffset;r-=20,this._showContextMenu(n,r,12)}},render:function(){var e="invite"===this.props.room.getMyMembership(),t=this.state.notificationCount,n=t>0&&this._shouldShowNotifBadge(),r=this.props.highlight&&this._shouldShowMentionBadge(),i=n||r,s=(0,a.default)({mx_RoomTile:!0,mx_RoomTile_selected:this.state.selected,mx_RoomTile_unread:this.props.unread,mx_RoomTile_unreadNotify:n,mx_RoomTile_highlight:r,mx_RoomTile_invited:e,mx_RoomTile_menuDisplayed:this.state.menuDisplayed,mx_RoomTile_noBadges:!i,mx_RoomTile_transparent:this.props.transparent}),l=(0,a.default)({mx_RoomTile_avatar:!0}),u=(0,a.default)({mx_RoomTile_badge:!0,mx_RoomTile_badgeButton:this.state.badgeHover||this.state.menuDisplayed}),f=this.state.roomName;void 0!=f&&null!=f||(f=""),f=f.replace(":",":​");var d=void 0;if(this.state.badgeHover||this.state.menuDisplayed)d="···";else if(i){var h=p.formatCount(t);d=t?h:"!"}else d="​";var _=o.default.createElement("div",{className:u,onClick:this.onBadgeClicked},d),g=c.default.getComponent("elements.EmojiText"),v=void 0,y=void 0;if(this.props.collapsed){if(this.state.hover){var b=c.default.getComponent("rooms.RoomTooltip");y=o.default.createElement(b,{className:"mx_RoomTile_tooltip",label:this.props.room.name,dir:"auto"})}}else{var E=(0,a.default)({mx_RoomTile_name:!0,mx_RoomTile_invite:this.props.isInvite,mx_RoomTile_badgeShown:i||this.state.badgeHover||this.state.menuDisplayed});if(this.state.selected){var C=o.default.createElement(g,null,f);v=o.default.createElement("div",{title:f,className:E,dir:"auto"},C)}else v=o.default.createElement(g,{element:"div",title:f,className:E,dir:"auto"},f)}var S=c.default.getComponent("avatars.RoomAvatar"),D=void 0;return this._isDirectMessageRoom(this.props.room.roomId)&&(D=o.default.createElement("img",{src:"img/icon_person.svg",className:"mx_RoomTile_dm",width:"11",height:"13",alt:"dm"})),o.default.createElement(m.default,{tabIndex:"0",className:s,onClick:this.onClick,onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onContextMenu:this.onContextMenu},o.default.createElement("div",{className:l},o.default.createElement("div",{className:"mx_RoomTile_avatar_container"},o.default.createElement(S,{room:this.props.room,width:24,height:24}),D)),o.default.createElement("div",{className:"mx_RoomTile_nameContainer"},v,_),y)}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(n(14));t.findReadReceiptFromUserId=function(e,t){for(var n=(0,r.default)(e.getContent()),o=0;o<n.length;++o){var i=e.getContent()[n[o]];if(i["m.read"]&&i["m.read"][t])return i}return null}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=b(n(11)),o=b(n(4)),i=b(n(5)),a=b(n(12)),s=b(n(13)),l=b(n(0)),u=n(2),c=b(n(457)),f=b(n(8)),d=b(n(16)),p=b(n(3)),m=b(n(39)),h=b(n(173)),_=b(n(10)),g=b(n(27)),v=b(n(142)),y=b(n(247));function b(e){return e&&e.__esModule?e:{default:e}}var E=function(e){function t(e){(0,o.default)(this,t);var n=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this,e));return n._onShowStickersClick=n._onShowStickersClick.bind(n),n._onHideStickersClick=n._onHideStickersClick.bind(n),n._launchManageIntegrations=n._launchManageIntegrations.bind(n),n._removeStickerpickerWidgets=n._removeStickerpickerWidgets.bind(n),n._updateWidget=n._updateWidget.bind(n),n._onWidgetAction=n._onWidgetAction.bind(n),n._onResize=n._onResize.bind(n),n._onFinished=n._onFinished.bind(n),n.popoverWidth=300,n.popoverHeight=300,n.state={showStickers:!1,imError:null,stickerpickerX:null,stickerpickerY:null,stickerpickerWidget:null,widgetId:null},n}return(0,s.default)(t,e),(0,i.default)(t,[{key:"_removeStickerpickerWidgets",value:function(){var e=this;console.warn("Removing Stickerpicker widgets"),this.state.widgetId?this.scalarClient.disableWidgetAssets("m.stickerpicker",this.state.widgetId).then(function(){console.warn("Assets disabled")}).catch(function(e){console.error("Failed to disable assets")}):console.warn("No widget ID specified, not disabling assets"),this.setState({showStickers:!1}),v.default.removeStickerpickerWidgets().then(function(){e.forceUpdate()}).catch(function(e){console.error("Failed to remove sticker picker widget",e)})}},{key:"componentDidMount",value:function(){var e=this;window.addEventListener("resize",this._onResize),this.scalarClient=null,m.default.get().integrations_ui_url&&m.default.get().integrations_rest_url&&(this.scalarClient=new h.default,this.scalarClient.connect().then(function(){e.forceUpdate()}).catch(function(t){e._imError("Failed to connect to integrations server",t)})),this.state.imError||(this.dispatcherRef=_.default.register(this._onWidgetAction)),f.default.get().on("accountData",this._updateWidget),this._updateWidget()}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this._onResize),this.dispatcherRef&&_.default.unregister(this.dispatcherRef)}},{key:"componentDidUpdate",value:function(e,t){this._sendVisibilityToWidget(this.state.showStickers)}},{key:"_imError",value:function(e,t){console.error(e,t),this.setState({showStickers:!1,imError:e})}},{key:"_updateWidget",value:function(){var e=v.default.getStickerpickerWidgets()[0];this.setState({stickerpickerWidget:e,widgetId:e?e.id:null})}},{key:"_onWidgetAction",value:function(e){switch(e.action){case"user_widget_updated":this.forceUpdate();break;case"stickerpicker_close":this.setState({showStickers:!1});break;case"show_right_panel":case"hide_right_panel":case"show_left_panel":case"hide_left_panel":this.setState({showStickers:!1})}}},{key:"_defaultStickerpickerContent",value:function(){return l.default.createElement(g.default,{onClick:this._launchManageIntegrations,className:"mx_Stickers_contentPlaceholder"},l.default.createElement("p",null,(0,u._t)("You don't currently have any stickerpacks enabled")),l.default.createElement("p",{className:"mx_Stickers_addLink"},(0,u._t)("Add some now")),l.default.createElement("img",{src:"img/stickerpack-placeholder.png",alt:""}))}},{key:"_errorStickerpickerContent",value:function(){return l.default.createElement("div",{style:{"text-align":"center"},className:"error"},l.default.createElement("p",null," ",this.state.imError," "))}},{key:"_sendVisibilityToWidget",value:function(e){if(this.state.stickerpickerWidget){var t=y.default.getWidgetMessaging(this.state.stickerpickerWidget.id);t&&e!==this._prevSentVisibility&&(t.sendVisibility(e),this._prevSentVisibility=e)}}},{key:"_getStickerpickerContent",value:function(){if(this.state._imError)return this._errorStickerpickerContent();var e=this.state.stickerpickerWidget,t=void 0,n=p.default.getComponent("elements.PersistedElement");return e&&e.content&&e.content.url?(e.content.name=e.name||(0,u._t)("Stickerpack"),t=l.default.createElement("div",{className:"mx_Stickers_content_container"},l.default.createElement("div",{id:"stickersContent",className:"mx_Stickers_content",style:{border:"none",height:this.popoverHeight,width:this.popoverWidth}},l.default.createElement(n,{persistKey:"stickerPicker",style:{zIndex:5e3}},l.default.createElement(c.default,{id:e.id,url:e.content.url,name:e.content.name,room:this.props.room,type:e.content.type,fullWidth:!0,userId:f.default.get().credentials.userId,creatorUserId:e.sender||f.default.get().credentials.userId,waitForIframeLoad:!0,show:!0,showMenubar:!0,onEditClick:this._launchManageIntegrations,onDeleteClick:this._removeStickerpickerWidgets,showTitle:!1,showMinimise:!0,showDelete:!1,showPopout:!1,onMinimiseClick:this._onHideStickersClick,handleMinimisePointerEvents:!0,whitelistCapabilities:["m.sticker","visibility"],userWidget:!0}))))):t=this._defaultStickerpickerContent(),t}},{key:"_onShowStickersClick",value:function(e){var t=e.target.getBoundingClientRect(),n=t.right+window.pageXOffset-41;n=Math.min(n,document.body.clientWidth-312);var r=Math.max(10,8+window.pageXOffset+t.left-n),o=t.top+t.height/2+window.pageYOffset-19;this.setState({showStickers:!0,stickerPickerX:n,stickerPickerY:o,stickerPickerChevronOffset:r})}},{key:"_onHideStickersClick",value:function(e){this.setState({showStickers:!1})}},{key:"_onResize",value:function(){this.setState({showStickers:!1})}},{key:"_onFinished",value:function(){this.setState({showStickers:!1})}},{key:"_launchManageIntegrations",value:function(){var e=p.default.getComponent("views.settings.IntegrationsManager"),t=null!==this.scalarClient&&this.scalarClient.hasCredentials()?this.scalarClient.getScalarInterfaceUrlForRoom(this.props.room,"type_m.stickerpicker",this.state.widgetId):null;d.default.createTrackedDialog("Integrations Manager","",e,{src:t},"mx_IntegrationsManager"),this.setState({showStickers:!1})}},{key:"render",value:function(){var e=p.default.getComponent("elements.TintableSvg"),t=p.default.getComponent("structures.ContextualMenu"),n=p.default.getComponent("context_menus.GenericElementContextMenu"),r=void 0,o=l.default.createElement(t,{elementClass:n,chevronOffset:this.state.stickerPickerChevronOffset,chevronFace:"bottom",left:this.state.stickerPickerX,top:this.state.stickerPickerY,menuWidth:this.popoverWidth,menuHeight:this.popoverHeight,element:this._getStickerpickerContent(),onFinished:this._onFinished,menuPaddingTop:0,menuPaddingLeft:0,menuPaddingRight:0});return r=this.state.showStickers?l.default.createElement(g.default,{id:"stickersButton",key:"controls_hide_stickers",className:"mx_MessageComposer_stickers mx_Stickers_hideStickers",onClick:this._onHideStickersClick,ref:"target",title:(0,u._t)("Hide Stickers")},l.default.createElement(e,{src:"img/icons-hide-stickers.svg",width:"35",height:"35"})):l.default.createElement(g.default,{id:"stickersButton",key:"controls_show_stickers",className:"mx_MessageComposer_stickers",onClick:this._onShowStickersClick,title:(0,u._t)("Show Stickers")},l.default.createElement(e,{src:"img/icons-show-stickers.svg",width:"35",height:"35"})),l.default.createElement("div",null,r,this.state.showStickers&&o)}}]),t}(l.default.Component);t.default=E,e.exports=t.default},function(e,t,n){var r=n(704);e.exports=function(e,t,n){"__proto__"==t&&r?r(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},function(e,t,n){var r=n(689),o=n(1783),i=n(253);e.exports=function(e){return i(e)?r(e,!0):o(e)}},function(e,t,n){var r=n(462),o=n(473),i=n(463),a=n(688),s=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)r(t,i(e)),e=o(e);return t}:a;e.exports=s},function(e,t,n){var r=n(687),o=n(711),i=n(710);e.exports=function(e){return r(e,i,o)}},function(e,t,n){var r=n(103),o=n(242),i=NaN,a=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,l=/^0b[01]+$/i,u=/^0o[0-7]+$/i,c=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(o(e))return i;if(r(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=r(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(a,"");var n=l.test(e);return n||u.test(e)?c(e.slice(2),n?2:8):s.test(e)?i:+e}},function(e,t,n){"use strict";function r(e){return e.split(/(%(?:d0|d1)%.{2})/).map(function(e){try{return decodeURIComponent(e)}catch(t){return e.replace(/%(?!\d+)/g,"%25")}}).join("")}Object.defineProperty(t,"__esModule",{value:!0}),t.encode=function(e){return r(e).trim().replace(/ /g,"%20").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29")},t.decode=function(e){try{return decodeURI(e)}catch(t){return r(e)}}},function(e,t,n){"use strict";function r(){}r.prototype.render=function(e){var t,n,r=e.walker();for(this.buffer="",this.lastOut="\n";t=r.next();)this[n=t.node.type]&&this[n](t.node,t.entering);return this.buffer},r.prototype.out=function(e){this.lit(e)},r.prototype.lit=function(e){this.buffer+=e,this.lastOut=e},r.prototype.cr=function(){"\n"!==this.lastOut&&this.lit("\n")},r.prototype.esc=function(e){return e},e.exports=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=m(n(11)),o=m(n(4)),i=m(n(5)),a=m(n(12)),s=m(n(13)),l=m(n(0)),u=m(n(10)),c=m(n(3)),f=n(2),d=m(n(104)),p=m(n(22));function m(e){return e&&e.__esModule?e:{default:e}}function h(){u.default.dispatch({action:"reply_to_event",event:null})}var _=function(e){function t(e,n){(0,o.default)(this,t);var i=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this,e,n));return i.state={event:null},i._onRoomViewStoreUpdate=i._onRoomViewStoreUpdate.bind(i),i._roomStoreToken=d.default.addListener(i._onRoomViewStoreUpdate),i._onRoomViewStoreUpdate(),i}return(0,s.default)(t,e),(0,i.default)(t,[{key:"componentWillUnmount",value:function(){this._roomStoreToken&&this._roomStoreToken.remove()}},{key:"_onRoomViewStoreUpdate",value:function(){var e=d.default.getQuotingEvent();this.state.event!==e&&this.setState({event:e})}},{key:"render",value:function(){if(!this.state.event)return null;var e=c.default.getComponent("rooms.EventTile"),t=c.default.getComponent("views.elements.EmojiText");return l.default.createElement("div",{className:"mx_ReplyPreview"},l.default.createElement("div",{className:"mx_ReplyPreview_section"},l.default.createElement(t,{element:"div",className:"mx_ReplyPreview_header mx_ReplyPreview_title"},"💬 "+(0,f._t)("Replying")),l.default.createElement("div",{className:"mx_ReplyPreview_header mx_ReplyPreview_cancel"},l.default.createElement("img",{className:"mx_filterFlipColor",src:"img/cancel.svg",width:"18",height:"18",onClick:h})),l.default.createElement("div",{className:"mx_ReplyPreview_clear"}),l.default.createElement(e,{last:!0,tileShape:"reply_preview",mxEvent:this.state.event,isTwelveHour:p.default.getValue("showTwelveHourTimestamps")})))}}]),t}(l.default.Component);t.default=_,e.exports=t.default},function(e,t,n){"use strict";var r=d(n(0)),o=d(n(1)),i=d(n(8)),a=d(n(10)),s=d(n(27)),l=d(n(682)),u=d(n(311)),c=n(2),f=n(143);function d(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"PinnedEventTile",propTypes:{mxRoom:o.default.object.isRequired,mxEvent:o.default.object.isRequired,onUnpinned:o.default.func},onTileClicked:function(){a.default.dispatch({action:"view_room",event_id:this.props.mxEvent.getId(),highlighted:!0,room_id:this.props.mxEvent.getRoomId()})},onUnpinClicked:function(){var e=this,t=this.props.mxRoom.currentState.getStateEvents("m.room.pinned_events","");if(t&&t.getContent().pinned){var n=t.getContent().pinned,r=n.indexOf(this.props.mxEvent.getId());-1!==r?(n.splice(r,1),i.default.get().sendStateEvent(this.props.mxRoom.roomId,"m.room.pinned_events",{pinned:n},"").then(function(){e.props.onUnpinned&&e.props.onUnpinned()})):this.props.onUnpinned&&this.props.onUnpinned()}else this.props.onUnpinned&&this.props.onUnpinned()},_canUnpin:function(){return this.props.mxRoom.currentState.mayClientSendStateEvent("m.room.pinned_events",i.default.get())},render:function(){var e=this.props.mxRoom.getMember(this.props.mxEvent.getSender()),t=null;return this._canUnpin()&&(t=r.default.createElement(s.default,{onClick:this.onUnpinClicked,className:"mx_PinnedEventTile_unpinButton"},r.default.createElement("img",{src:"img/cancel-red.svg",width:"8",height:"8",alt:(0,c._t)("Unpin Message"),title:(0,c._t)("Unpin Message")}))),r.default.createElement("div",{className:"mx_PinnedEventTile"},r.default.createElement("div",{className:"mx_PinnedEventTile_actions"},r.default.createElement(s.default,{className:"mx_PinnedEventTile_gotoButton mx_textButton",onClick:this.onTileClicked},(0,c._t)("Jump to message")),t),r.default.createElement("span",{className:"mx_PinnedEventTile_senderAvatar"},r.default.createElement(u.default,{member:e,width:40,height:40})),r.default.createElement("span",{className:"mx_PinnedEventTile_sender"},e.name),r.default.createElement("span",{className:"mx_PinnedEventTile_timestamp"},(0,f.formatFullDate)(new Date(this.props.mxEvent.getTs()))),r.default.createElement("div",{className:"mx_PinnedEventTile_message"},r.default.createElement(l.default,{mxEvent:this.props.mxEvent,className:"mx_PinnedEventTile_body",maxImageHeight:150,onWidgetLoad:function(){}})))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.roomShape=void 0,t.getDisplayAliasForRoom=p;var r=d(n(3)),o=d(n(0)),i=n(2),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(251)),s=d(n(314)),l=d(n(129)),u=n(17),c=d(n(8)),f=d(n(1));function d(e){return e&&e.__esModule?e:{default:e}}function p(e){return e.canonicalAlias||(e.aliases?e.aliases[0]:"")}(0,l.default)(a);var m=t.roomShape=f.default.shape({name:f.default.string,topic:f.default.string,roomId:f.default.string,avatarUrl:f.default.string,numJoinedMembers:f.default.number,canonicalAlias:f.default.string,aliases:f.default.arrayOf(f.default.string),worldReadable:f.default.bool,guestCanJoin:f.default.bool});t.default=o.default.createClass({displayName:"RoomDetailRow",propTypes:{room:m,onClick:f.default.func,onMouseDown:f.default.func},_linkifyTopic:function(){this.refs.topic&&(0,s.default)(this.refs.topic,l.default.options)},componentDidMount:function(){this._linkifyTopic()},componentDidUpdate:function(){this._linkifyTopic()},onClick:function(e){e.preventDefault(),this.props.onClick&&this.props.onClick(e,this.props.room)},onTopicClick:function(e){e.stopPropagation()},render:function(){var e=r.default.getComponent("avatars.BaseAvatar"),t=this.props.room,n=t.name||p(t)||(0,i._t)("Unnamed room"),a=t.worldReadable?o.default.createElement("div",{className:"mx_RoomDirectory_perm"},(0,i._t)("World readable")):o.default.createElement("div",null),s=t.guestCanJoin?o.default.createElement("div",{className:"mx_RoomDirectory_perm"},(0,i._t)("Guests can join")):o.default.createElement("div",null),l=a||s?o.default.createElement("div",{className:"mx_RoomDirectory_perms"},a," ",s):o.default.createElement("div",null);return o.default.createElement("tr",{key:t.roomId,onClick:this.onClick,onMouseDown:this.props.onMouseDown},o.default.createElement("td",{className:"mx_RoomDirectory_roomAvatar"},o.default.createElement(e,{width:24,height:24,resizeMethod:"crop",name:n,idName:n,url:u.ContentRepo.getHttpUriForMxc(c.default.get().getHomeserverUrl(),t.avatarUrl,24,24,"crop")})),o.default.createElement("td",{className:"mx_RoomDirectory_roomDescription"},o.default.createElement("div",{className:"mx_RoomDirectory_name"},n)," ",l,o.default.createElement("div",{className:"mx_RoomDirectory_topic",ref:"topic",onClick:this.onTopicClick},t.topic),o.default.createElement("div",{className:"mx_RoomDirectory_alias"},p(t))),o.default.createElement("td",{className:"mx_RoomDirectory_roomMemberCount"},t.numJoinedMembers))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CancelButton=u;var r=l(n(0)),o=l(n(1)),i=l(n(27)),a=l(n(3)),s=n(2);function l(e){return e&&e.__esModule?e:{default:e}}function u(e){var t=e.onClick;return r.default.createElement(i.default,{className:"mx_RoomHeader_cancelButton",onClick:t},r.default.createElement("img",{src:"img/cancel.svg",className:"mx_filterFlipColor",width:"18",height:"18",alt:(0,s._t)("Cancel")}))}t.default=r.default.createClass({displayName:"SimpleRoomHeader",propTypes:{title:o.default.string,onCancelClick:o.default.func,icon:o.default.string},render:function(){var e=void 0,t=void 0;if(this.props.onCancelClick&&(e=r.default.createElement(u,{onClick:this.props.onCancelClick})),this.props.icon){var n=a.default.getComponent("elements.TintableSvg");t=r.default.createElement(n,{className:"mx_RoomHeader_icon",src:this.props.icon,width:"25",height:"25"})}return r.default.createElement("div",{className:"mx_RoomHeader"},r.default.createElement("div",{className:"mx_RoomHeader_wrapper"},r.default.createElement("div",{className:"mx_RoomHeader_simpleHeader"},t,this.props.title,e)))}})},function(e,t,n){"use strict";var r=n(476).encodeActions;e.exports={ACTION_NOTIFY:r({notify:!0}),ACTION_NOTIFY_DEFAULT_SOUND:r({notify:!0,sound:"default"}),ACTION_NOTIFY_RING_SOUND:r({notify:!0,sound:"ring"}),ACTION_HIGHLIGHT_DEFAULT_SOUND:r({notify:!0,sound:"default",highlight:!0}),ACTION_DONT_NOTIFY:r({notify:!1}),ACTION_DISABLED:null}},function(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}n.r(t);var o=n(0),i=n(1),a=n.n(i),s=a.a.shape({trySubscribe:a.a.func.isRequired,tryUnsubscribe:a.a.func.isRequired,notifyNestedSubs:a.a.func.isRequired,isSubscribed:a.a.func.isRequired}),l=a.a.shape({subscribe:a.a.func.isRequired,dispatch:a.a.func.isRequired,getState:a.a.func.isRequired});function u(e){var t;void 0===e&&(e="store");var n=e+"Subscription",i=function(t){r(a,t);var i=a.prototype;function a(n,r){var o;return(o=t.call(this,n,r)||this)[e]=n.store,o}return i.getChildContext=function(){var t;return(t={})[e]=this[e],t[n]=null,t},i.render=function(){return o.Children.only(this.props.children)},a}(o.Component);return i.propTypes={store:l.isRequired,children:a.a.element.isRequired},i.childContextTypes=((t={})[e]=l.isRequired,t[n]=s,t),i}var c=u();function f(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function d(){return(d=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function p(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}var m=n(724),h=n.n(m),_=n(321),g=n.n(_),v=n(478),y=null,b={notify:function(){}};var E=function(){function e(e,t,n){this.store=e,this.parentSub=t,this.onStateChange=n,this.unsubscribe=null,this.listeners=b}var t=e.prototype;return t.addNestedSub=function(e){return this.trySubscribe(),this.listeners.subscribe(e)},t.notifyNestedSubs=function(){this.listeners.notify()},t.isSubscribed=function(){return Boolean(this.unsubscribe)},t.trySubscribe=function(){this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.onStateChange):this.store.subscribe(this.onStateChange),this.listeners=function(){var e=[],t=[];return{clear:function(){t=y,e=y},notify:function(){for(var n=e=t,r=0;r<n.length;r++)n[r]()},get:function(){return t},subscribe:function(n){var r=!0;return t===e&&(t=e.slice()),t.push(n),function(){r&&e!==y&&(r=!1,t===e&&(t=e.slice()),t.splice(t.indexOf(n),1))}}}}())},t.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null,this.listeners.clear(),this.listeners=b)},e}(),C=0,S={};function D(){}function w(e,t){var n,i;void 0===t&&(t={});var a=t,u=a.getDisplayName,c=void 0===u?function(e){return"ConnectAdvanced("+e+")"}:u,m=a.methodName,_=void 0===m?"connectAdvanced":m,y=a.renderCountProp,b=void 0===y?void 0:y,w=a.shouldHandleStateChanges,T=void 0===w||w,x=a.storeKey,R=void 0===x?"store":x,k=a.withRef,N=void 0!==k&&k,I=p(a,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef"]),O=R+"Subscription",A=C++,M=((n={})[R]=l,n[O]=s,n),P=((i={})[O]=s,i);return function(t){g()(Object(v.isValidElementType)(t),"You must pass a component to the function returned by "+_+". Instead received "+JSON.stringify(t));var n=t.displayName||t.name||"Component",i=c(n),a=d({},I,{getDisplayName:c,methodName:_,renderCountProp:b,shouldHandleStateChanges:T,storeKey:R,withRef:N,displayName:i,wrappedComponentName:n,WrappedComponent:t}),s=function(n){function s(e,t){var r;return(r=n.call(this,e,t)||this).version=A,r.state={},r.renderCount=0,r.store=e[R]||t[R],r.propsMode=Boolean(e[R]),r.setWrappedInstance=r.setWrappedInstance.bind(f(f(r))),g()(r.store,'Could not find "'+R+'" in either the context or props of "'+i+'". Either wrap the root component in a <Provider>, or explicitly pass "'+R+'" as a prop to "'+i+'".'),r.initSelector(),r.initSubscription(),r}r(s,n);var l=s.prototype;return l.getChildContext=function(){var e,t=this.propsMode?null:this.subscription;return(e={})[O]=t||this.context[O],e},l.componentDidMount=function(){T&&(this.subscription.trySubscribe(),this.selector.run(this.props),this.selector.shouldComponentUpdate&&this.forceUpdate())},l.componentWillReceiveProps=function(e){this.selector.run(e)},l.shouldComponentUpdate=function(){return this.selector.shouldComponentUpdate},l.componentWillUnmount=function(){this.subscription&&this.subscription.tryUnsubscribe(),this.subscription=null,this.notifyNestedSubs=D,this.store=null,this.selector.run=D,this.selector.shouldComponentUpdate=!1},l.getWrappedInstance=function(){return g()(N,"To access the wrapped instance, you need to specify { withRef: true } in the options argument of the "+_+"() call."),this.wrappedInstance},l.setWrappedInstance=function(e){this.wrappedInstance=e},l.initSelector=function(){var t=e(this.store.dispatch,a);this.selector=function(e,t){var n={run:function(r){try{var o=e(t.getState(),r);(o!==n.props||n.error)&&(n.shouldComponentUpdate=!0,n.props=o,n.error=null)}catch(e){n.shouldComponentUpdate=!0,n.error=e}}};return n}(t,this.store),this.selector.run(this.props)},l.initSubscription=function(){if(T){var e=(this.propsMode?this.props:this.context)[O];this.subscription=new E(this.store,e,this.onStateChange.bind(this)),this.notifyNestedSubs=this.subscription.notifyNestedSubs.bind(this.subscription)}},l.onStateChange=function(){this.selector.run(this.props),this.selector.shouldComponentUpdate?(this.componentDidUpdate=this.notifyNestedSubsOnComponentDidUpdate,this.setState(S)):this.notifyNestedSubs()},l.notifyNestedSubsOnComponentDidUpdate=function(){this.componentDidUpdate=void 0,this.notifyNestedSubs()},l.isSubscribed=function(){return Boolean(this.subscription)&&this.subscription.isSubscribed()},l.addExtraProps=function(e){if(!(N||b||this.propsMode&&this.subscription))return e;var t=d({},e);return N&&(t.ref=this.setWrappedInstance),b&&(t[b]=this.renderCount++),this.propsMode&&this.subscription&&(t[O]=this.subscription),t},l.render=function(){var e=this.selector;if(e.shouldComponentUpdate=!1,e.error)throw e.error;return Object(o.createElement)(t,this.addExtraProps(e.props))},s}(o.Component);return s.WrappedComponent=t,s.displayName=i,s.childContextTypes=P,s.contextTypes=M,s.propTypes=M,h()(s,t)}}var T=Object.prototype.hasOwnProperty;function x(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function R(e,t){if(x(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=0;o<n.length;o++)if(!T.call(t,n[o])||!x(e[n[o]],t[n[o]]))return!1;return!0}var k=n(479);function N(e){return function(t,n){var r=e(t,n);function o(){return r}return o.dependsOnOwnProps=!1,o}}function I(e){return null!==e.dependsOnOwnProps&&void 0!==e.dependsOnOwnProps?Boolean(e.dependsOnOwnProps):1!==e.length}function O(e,t){return function(t,n){n.displayName;var r=function(e,t){return r.dependsOnOwnProps?r.mapToProps(e,t):r.mapToProps(e)};return r.dependsOnOwnProps=!0,r.mapToProps=function(t,n){r.mapToProps=e,r.dependsOnOwnProps=I(e);var o=r(t,n);return"function"==typeof o&&(r.mapToProps=o,r.dependsOnOwnProps=I(o),o=r(t,n)),o},r}}var A=[function(e){return"function"==typeof e?O(e):void 0},function(e){return e?void 0:N(function(e){return{dispatch:e}})},function(e){return e&&"object"==typeof e?N(function(t){return Object(k.bindActionCreators)(e,t)}):void 0}];var M=[function(e){return"function"==typeof e?O(e):void 0},function(e){return e?void 0:N(function(){return{}})}];function P(e,t,n){return d({},n,e,t)}var L=[function(e){return"function"==typeof e?function(e){return function(t,n){n.displayName;var r,o=n.pure,i=n.areMergedPropsEqual,a=!1;return function(t,n,s){var l=e(t,n,s);return a?o&&i(l,r)||(r=l):(a=!0,r=l),r}}}(e):void 0},function(e){return e?void 0:function(){return P}}];function F(e,t,n,r){return function(o,i){return n(e(o,i),t(r,i),i)}}function U(e,t,n,r,o){var i,a,s,l,u,c=o.areStatesEqual,f=o.areOwnPropsEqual,d=o.areStatePropsEqual,p=!1;function m(o,p){var m=!f(p,a),h=!c(o,i);return i=o,a=p,m&&h?(s=e(i,a),t.dependsOnOwnProps&&(l=t(r,a)),u=n(s,l,a)):m?(e.dependsOnOwnProps&&(s=e(i,a)),t.dependsOnOwnProps&&(l=t(r,a)),u=n(s,l,a)):h?function(){var t=e(i,a),r=!d(t,s);return s=t,r&&(u=n(s,l,a)),u}():u}return function(o,c){return p?m(o,c):function(o,c){return s=e(i=o,a=c),l=t(r,a),u=n(s,l,a),p=!0,u}(o,c)}}function j(e,t){var n=t.initMapStateToProps,r=t.initMapDispatchToProps,o=t.initMergeProps,i=p(t,["initMapStateToProps","initMapDispatchToProps","initMergeProps"]),a=n(e,i),s=r(e,i),l=o(e,i);return(i.pure?U:F)(a,s,l,e,i)}function B(e,t,n){for(var r=t.length-1;r>=0;r--){var o=t[r](e);if(o)return o}return function(t,r){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function G(e,t){return e===t}var q=function(e){var t=void 0===e?{}:e,n=t.connectHOC,r=void 0===n?w:n,o=t.mapStateToPropsFactories,i=void 0===o?M:o,a=t.mapDispatchToPropsFactories,s=void 0===a?A:a,l=t.mergePropsFactories,u=void 0===l?L:l,c=t.selectorFactory,f=void 0===c?j:c;return function(e,t,n,o){void 0===o&&(o={});var a=o,l=a.pure,c=void 0===l||l,m=a.areStatesEqual,h=void 0===m?G:m,_=a.areOwnPropsEqual,g=void 0===_?R:_,v=a.areStatePropsEqual,y=void 0===v?R:v,b=a.areMergedPropsEqual,E=void 0===b?R:b,C=p(a,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),S=B(e,i,"mapStateToProps"),D=B(t,s,"mapDispatchToProps"),w=B(n,u,"mergeProps");return r(f,d({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:S,initMapDispatchToProps:D,initMergeProps:w,pure:c,areStatesEqual:h,areOwnPropsEqual:g,areStatePropsEqual:y,areMergedPropsEqual:E},C))}}();n.d(t,"Provider",function(){return c}),n.d(t,"createProvider",function(){return u}),n.d(t,"connectAdvanced",function(){return w}),n.d(t,"connect",function(){return q})},function(e,t,n){"use strict";function r(e){var t,n=e.Symbol;return"function"==typeof n?n.observable?t=n.observable:(t=n("observable"),n.observable=t):t="@@observable",t}n.d(t,"a",function(){return r})},function(e,t,n){"use strict";(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.a=n}).call(this,n(15))},function(e,t,n){"use strict";var r=n(478),o=(n(0),{childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0}),i={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={};a[r.ForwardRef]={$$typeof:!0,render:!0};var s=Object.defineProperty,l=Object.getOwnPropertyNames,u=Object.getOwnPropertySymbols,c=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,d=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(d){var p=f(n);p&&p!==d&&e(t,p,r)}var m=l(n);u&&(m=m.concat(u(n)));for(var h=a[t.$$typeof]||o,_=a[n.$$typeof]||o,g=0;g<m.length;++g){var v=m[g];if(!(i[v]||r&&r[v]||_&&_[v]||h&&h[v])){var y=c(n,v);try{s(t,v,y)}catch(e){}}}return t}return t}},function(e,t,n){"use strict";var r,o;r=new RegExp("^[^֑-߿יִ-﷽ﹰ-ﻼ]*[A-Za-zÀ-ÖØ-öø-ʸ̀-֐ࠀ-῿‎Ⰰ-﬜︀-﹯﻽-￿]"),o=new RegExp("^[^A-Za-zÀ-ÖØ-öø-ʸ̀-֐ࠀ-῿‎Ⰰ-﬜︀-﹯﻽-￿]*[֑-߿יִ-﷽ﹰ-ﻼ]"),e.exports=function(e){return e=e.toString(),o.test(e)?"rtl":r.test(e)?"ltr":"neutral"}},function(e,t){e.exports=function(e){var t=e.anchorNode,n=e.anchorOffset,r=e.focusNode,o=e.focusOffset,i=t.compareDocumentPosition(r);return!(4===i||0===i&&n<o)}},function(e,t,n){var r=n(1814),o=n(103),i="Expected a function";e.exports=function(e,t,n){var a=!0,s=!0;if("function"!=typeof e)throw new TypeError(i);return o(n)&&(a="leading"in n?!!n.leading:a,s="trailing"in n?!!n.trailing:s),r(e,t,{leading:a,maxWait:t,trailing:s})}},function(e,t,n){"use strict";e.exports=n(1817)},,,,,,,,,,,,,,function(e,t,n){n(743),e.exports=n(945)},function(e,t,n){"use strict";(function(e){if(n(744),n(941),n(942),e._babelPolyfill)throw new Error("only one instance of babel-polyfill is allowed");e._babelPolyfill=!0;var t="defineProperty";function r(e,n,r){e[n]||Object[t](e,n,{writable:!0,configurable:!0,value:r})}r(String.prototype,"padLeft","".padStart),r(String.prototype,"padRight","".padEnd),"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill".split(",").forEach(function(e){[][e]&&r(Array,e,Function.call.bind([][e]))})}).call(this,n(15))},function(e,t,n){n(745),n(747),n(748),n(749),n(750),n(751),n(752),n(753),n(754),n(755),n(756),n(757),n(758),n(759),n(760),n(761),n(763),n(764),n(765),n(766),n(767),n(768),n(769),n(770),n(771),n(772),n(773),n(774),n(775),n(776),n(777),n(778),n(779),n(780),n(781),n(782),n(783),n(784),n(785),n(786),n(787),n(788),n(789),n(790),n(791),n(792),n(793),n(794),n(795),n(796),n(797),n(798),n(799),n(800),n(801),n(802),n(803),n(804),n(805),n(806),n(807),n(808),n(809),n(810),n(811),n(812),n(813),n(814),n(815),n(816),n(817),n(818),n(819),n(820),n(821),n(822),n(823),n(825),n(826),n(828),n(829),n(830),n(831),n(832),n(833),n(834),n(836),n(837),n(838),n(839),n(840),n(841),n(842),n(843),n(844),n(845),n(846),n(847),n(848),n(347),n(849),n(850),n(512),n(851),n(852),n(853),n(854),n(855),n(515),n(517),n(518),n(856),n(857),n(858),n(859),n(860),n(861),n(862),n(863),n(864),n(865),n(866),n(867),n(868),n(869),n(870),n(871),n(872),n(873),n(874),n(875),n(876),n(877),n(878),n(879),n(880),n(881),n(882),n(883),n(884),n(885),n(886),n(887),n(888),n(889),n(890),n(891),n(892),n(893),n(894),n(895),n(896),n(897),n(898),n(899),n(900),n(901),n(902),n(903),n(904),n(905),n(906),n(907),n(908),n(909),n(910),n(911),n(912),n(913),n(914),n(915),n(916),n(917),n(918),n(919),n(920),n(921),n(922),n(923),n(924),n(925),n(926),n(927),n(928),n(929),n(930),n(931),n(932),n(933),n(934),n(935),n(936),n(937),n(938),n(939),n(940),e.exports=n(105)},function(e,t,n){"use strict";var r=n(28),o=n(72),i=n(48),a=n(7),s=n(74),l=n(133).KEY,u=n(30),c=n(257),f=n(181),d=n(151),p=n(42),m=n(495),h=n(327),_=n(746),g=n(260),v=n(25),y=n(83),b=n(106),E=n(150),C=n(155),S=n(498),D=n(84),w=n(49),T=n(153),x=D.f,R=w.f,k=S.f,N=r.Symbol,I=r.JSON,O=I&&I.stringify,A=p("_hidden"),M=p("toPrimitive"),P={}.propertyIsEnumerable,L=c("symbol-registry"),F=c("symbols"),U=c("op-symbols"),j=Object.prototype,B="function"==typeof N,G=r.QObject,q=!G||!G.prototype||!G.prototype.findChild,V=i&&u(function(){return 7!=C(R({},"a",{get:function(){return R(this,"a",{value:7}).a}})).a})?function(e,t,n){var r=x(j,t);r&&delete j[t],R(e,t,n),r&&e!==j&&R(j,t,r)}:R,H=function(e){var t=F[e]=C(N.prototype);return t._k=e,t},Y=B&&"symbol"==typeof N.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof N},z=function(e,t,n){return e===j&&z(U,t,n),v(e),t=b(t,!0),v(n),o(F,t)?(n.enumerable?(o(e,A)&&e[A][t]&&(e[A][t]=!1),n=C(n,{enumerable:E(0,!1)})):(o(e,A)||R(e,A,E(1,{})),e[A][t]=!0),V(e,t,n)):R(e,t,n)},W=function(e,t){v(e);for(var n,r=_(t=y(t)),o=0,i=r.length;i>o;)z(e,n=r[o++],t[n]);return e},K=function(e){var t=P.call(this,e=b(e,!0));return!(this===j&&o(F,e)&&!o(U,e))&&(!(t||!o(this,e)||!o(F,e)||o(this,A)&&this[A][e])||t)},$=function(e,t){if(e=y(e),t=b(t,!0),e!==j||!o(F,t)||o(U,t)){var n=x(e,t);return!n||!o(F,t)||o(e,A)&&e[A][t]||(n.enumerable=!0),n}},Q=function(e){for(var t,n=k(y(e)),r=[],i=0;n.length>i;)o(F,t=n[i++])||t==A||t==l||r.push(t);return r},X=function(e){for(var t,n=e===j,r=k(n?U:y(e)),i=[],a=0;r.length>a;)!o(F,t=r[a++])||n&&!o(j,t)||i.push(F[t]);return i};B||(s((N=function(){if(this instanceof N)throw TypeError("Symbol is not a constructor!");var e=d(arguments.length>0?arguments[0]:void 0),t=function(n){this===j&&t.call(U,n),o(this,A)&&o(this[A],e)&&(this[A][e]=!1),V(this,e,E(1,n))};return i&&q&&V(j,e,{configurable:!0,set:t}),H(e)}).prototype,"toString",function(){return this._k}),D.f=$,w.f=z,n(156).f=S.f=Q,n(209).f=K,n(259).f=X,i&&!n(152)&&s(j,"propertyIsEnumerable",K,!0),m.f=function(e){return H(p(e))}),a(a.G+a.W+a.F*!B,{Symbol:N});for(var J="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),Z=0;J.length>Z;)p(J[Z++]);for(var ee=T(p.store),te=0;ee.length>te;)h(ee[te++]);a(a.S+a.F*!B,"Symbol",{for:function(e){return o(L,e+="")?L[e]:L[e]=N(e)},keyFor:function(e){if(!Y(e))throw TypeError(e+" is not a symbol!");for(var t in L)if(L[t]===e)return t},useSetter:function(){q=!0},useSimple:function(){q=!1}}),a(a.S+a.F*!B,"Object",{create:function(e,t){return void 0===t?C(e):W(C(e),t)},defineProperty:z,defineProperties:W,getOwnPropertyDescriptor:$,getOwnPropertyNames:Q,getOwnPropertySymbols:X}),I&&a(a.S+a.F*(!B||u(function(){var e=N();return"[null]"!=O([e])||"{}"!=O({a:e})||"{}"!=O(Object(e))})),"JSON",{stringify:function(e){if(void 0!==e&&!Y(e)){for(var t,n,r=[e],o=1;arguments.length>o;)r.push(arguments[o++]);return"function"==typeof(t=r[1])&&(n=t),!n&&g(t)||(t=function(e,t){if(n&&(t=n.call(this,e,t)),!Y(t))return t}),r[1]=t,O.apply(I,r)}}}),N.prototype[M]||n(73)(N.prototype,M,N.prototype.valueOf),f(N,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},function(e,t,n){var r=n(153),o=n(259),i=n(209);e.exports=function(e){var t=r(e),n=o.f;if(n)for(var a,s=n(e),l=i.f,u=0;s.length>u;)l.call(e,a=s[u++])&&t.push(a);return t}},function(e,t,n){var r=n(7);r(r.S,"Object",{create:n(155)})},function(e,t,n){var r=n(7);r(r.S+r.F*!n(48),"Object",{defineProperty:n(49).f})},function(e,t,n){var r=n(7);r(r.S+r.F*!n(48),"Object",{defineProperties:n(497)})},function(e,t,n){var r=n(83),o=n(84).f;n(109)("getOwnPropertyDescriptor",function(){return function(e,t){return o(r(e),t)}})},function(e,t,n){var r=n(57),o=n(85);n(109)("getPrototypeOf",function(){return function(e){return o(r(e))}})},function(e,t,n){var r=n(57),o=n(153);n(109)("keys",function(){return function(e){return o(r(e))}})},function(e,t,n){n(109)("getOwnPropertyNames",function(){return n(498).f})},function(e,t,n){var r=n(33),o=n(133).onFreeze;n(109)("freeze",function(e){return function(t){return e&&r(t)?e(o(t)):t}})},function(e,t,n){var r=n(33),o=n(133).onFreeze;n(109)("seal",function(e){return function(t){return e&&r(t)?e(o(t)):t}})},function(e,t,n){var r=n(33),o=n(133).onFreeze;n(109)("preventExtensions",function(e){return function(t){return e&&r(t)?e(o(t)):t}})},function(e,t,n){var r=n(33);n(109)("isFrozen",function(e){return function(t){return!r(t)||!!e&&e(t)}})},function(e,t,n){var r=n(33);n(109)("isSealed",function(e){return function(t){return!r(t)||!!e&&e(t)}})},function(e,t,n){var r=n(33);n(109)("isExtensible",function(e){return function(t){return!!r(t)&&(!e||e(t))}})},function(e,t,n){var r=n(7);r(r.S+r.F,"Object",{assign:n(499)})},function(e,t,n){var r=n(7);r(r.S,"Object",{is:n(762)})},function(e,t){e.exports=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}},function(e,t,n){var r=n(7);r(r.S,"Object",{setPrototypeOf:n(331).set})},function(e,t,n){"use strict";var r=n(210),o={};o[n(42)("toStringTag")]="z",o+""!="[object z]"&&n(74)(Object.prototype,"toString",function(){return"[object "+r(this)+"]"},!0)},function(e,t,n){var r=n(7);r(r.P,"Function",{bind:n(500)})},function(e,t,n){var r=n(49).f,o=Function.prototype,i=/^\s*function ([^ (]*)/;"name"in o||n(48)&&r(o,"name",{configurable:!0,get:function(){try{return(""+this).match(i)[1]}catch(e){return""}}})},function(e,t,n){"use strict";var r=n(33),o=n(85),i=n(42)("hasInstance"),a=Function.prototype;i in a||n(49).f(a,i,{value:function(e){if("function"!=typeof this||!r(e))return!1;if(!r(this.prototype))return e instanceof this;for(;e=o(e);)if(this.prototype===e)return!0;return!1}})},function(e,t,n){var r=n(7),o=n(502);r(r.G+r.F*(parseInt!=o),{parseInt:o})},function(e,t,n){var r=n(7),o=n(503);r(r.G+r.F*(parseFloat!=o),{parseFloat:o})},function(e,t,n){"use strict";var r=n(28),o=n(72),i=n(92),a=n(333),s=n(106),l=n(30),u=n(156).f,c=n(84).f,f=n(49).f,d=n(182).trim,p=r.Number,m=p,h=p.prototype,_="Number"==i(n(155)(h)),g="trim"in String.prototype,v=function(e){var t=s(e,!1);if("string"==typeof t&&t.length>2){var n,r,o,i=(t=g?t.trim():d(t,3)).charCodeAt(0);if(43===i||45===i){if(88===(n=t.charCodeAt(2))||120===n)return NaN}else if(48===i){switch(t.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+t}for(var a,l=t.slice(2),u=0,c=l.length;u<c;u++)if((a=l.charCodeAt(u))<48||a>o)return NaN;return parseInt(l,r)}}return+t};if(!p(" 0o1")||!p("0b1")||p("+0x1")){p=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof p&&(_?l(function(){h.valueOf.call(n)}):"Number"!=i(n))?a(new m(v(t)),n,p):v(t)};for(var y,b=n(48)?u(m):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),E=0;b.length>E;E++)o(m,y=b[E])&&!o(p,y)&&f(p,y,c(m,y));p.prototype=h,h.constructor=p,n(74)(r,"Number",p)}},function(e,t,n){"use strict";var r=n(7),o=n(108),i=n(504),a=n(334),s=1..toFixed,l=Math.floor,u=[0,0,0,0,0,0],c="Number.toFixed: incorrect invocation!",f=function(e,t){for(var n=-1,r=t;++n<6;)r+=e*u[n],u[n]=r%1e7,r=l(r/1e7)},d=function(e){for(var t=6,n=0;--t>=0;)n+=u[t],u[t]=l(n/e),n=n%e*1e7},p=function(){for(var e=6,t="";--e>=0;)if(""!==t||0===e||0!==u[e]){var n=String(u[e]);t=""===t?n:t+a.call("0",7-n.length)+n}return t},m=function(e,t,n){return 0===t?n:t%2==1?m(e,t-1,n*e):m(e*e,t/2,n)};r(r.P+r.F*(!!s&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!n(30)(function(){s.call({})})),"Number",{toFixed:function(e){var t,n,r,s,l=i(this,c),u=o(e),h="",_="0";if(u<0||u>20)throw RangeError(c);if(l!=l)return"NaN";if(l<=-1e21||l>=1e21)return String(l);if(l<0&&(h="-",l=-l),l>1e-21)if(n=(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(l*m(2,69,1))-69)<0?l*m(2,-t,1):l/m(2,t,1),n*=4503599627370496,(t=52-t)>0){for(f(0,n),r=u;r>=7;)f(1e7,0),r-=7;for(f(m(10,r,1),0),r=t-1;r>=23;)d(1<<23),r-=23;d(1<<r),f(1,1),d(2),_=p()}else f(0,n),f(1<<-t,0),_=p()+a.call("0",u);return _=u>0?h+((s=_.length)<=u?"0."+a.call("0",u-s)+_:_.slice(0,s-u)+"."+_.slice(s-u)):h+_}})},function(e,t,n){"use strict";var r=n(7),o=n(30),i=n(504),a=1..toPrecision;r(r.P+r.F*(o(function(){return"1"!==a.call(1,void 0)})||!o(function(){a.call({})})),"Number",{toPrecision:function(e){var t=i(this,"Number#toPrecision: incorrect invocation!");return void 0===e?a.call(t):a.call(t,e)}})},function(e,t,n){var r=n(7);r(r.S,"Number",{EPSILON:Math.pow(2,-52)})},function(e,t,n){var r=n(7),o=n(28).isFinite;r(r.S,"Number",{isFinite:function(e){return"number"==typeof e&&o(e)}})},function(e,t,n){var r=n(7);r(r.S,"Number",{isInteger:n(505)})},function(e,t,n){var r=n(7);r(r.S,"Number",{isNaN:function(e){return e!=e}})},function(e,t,n){var r=n(7),o=n(505),i=Math.abs;r(r.S,"Number",{isSafeInteger:function(e){return o(e)&&i(e)<=9007199254740991}})},function(e,t,n){var r=n(7);r(r.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(e,t,n){var r=n(7);r(r.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},function(e,t,n){var r=n(7),o=n(503);r(r.S+r.F*(Number.parseFloat!=o),"Number",{parseFloat:o})},function(e,t,n){var r=n(7),o=n(502);r(r.S+r.F*(Number.parseInt!=o),"Number",{parseInt:o})},function(e,t,n){var r=n(7),o=n(506),i=Math.sqrt,a=Math.acosh;r(r.S+r.F*!(a&&710==Math.floor(a(Number.MAX_VALUE))&&a(1/0)==1/0),"Math",{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?Math.log(e)+Math.LN2:o(e-1+i(e-1)*i(e+1))}})},function(e,t,n){var r=n(7),o=Math.asinh;r(r.S+r.F*!(o&&1/o(0)>0),"Math",{asinh:function e(t){return isFinite(t=+t)&&0!=t?t<0?-e(-t):Math.log(t+Math.sqrt(t*t+1)):t}})},function(e,t,n){var r=n(7),o=Math.atanh;r(r.S+r.F*!(o&&1/o(-0)<0),"Math",{atanh:function(e){return 0==(e=+e)?e:Math.log((1+e)/(1-e))/2}})},function(e,t,n){var r=n(7),o=n(335);r(r.S,"Math",{cbrt:function(e){return o(e=+e)*Math.pow(Math.abs(e),1/3)}})},function(e,t,n){var r=n(7);r(r.S,"Math",{clz32:function(e){return(e>>>=0)?31-Math.floor(Math.log(e+.5)*Math.LOG2E):32}})},function(e,t,n){var r=n(7),o=Math.exp;r(r.S,"Math",{cosh:function(e){return(o(e=+e)+o(-e))/2}})},function(e,t,n){var r=n(7),o=n(336);r(r.S+r.F*(o!=Math.expm1),"Math",{expm1:o})},function(e,t,n){var r=n(7);r(r.S,"Math",{fround:n(507)})},function(e,t,n){var r=n(7),o=Math.abs;r(r.S,"Math",{hypot:function(e,t){for(var n,r,i=0,a=0,s=arguments.length,l=0;a<s;)l<(n=o(arguments[a++]))?(i=i*(r=l/n)*r+1,l=n):i+=n>0?(r=n/l)*r:n;return l===1/0?1/0:l*Math.sqrt(i)}})},function(e,t,n){var r=n(7),o=Math.imul;r(r.S+r.F*n(30)(function(){return-5!=o(4294967295,5)||2!=o.length}),"Math",{imul:function(e,t){var n=+e,r=+t,o=65535&n,i=65535&r;return 0|o*i+((65535&n>>>16)*i+o*(65535&r>>>16)<<16>>>0)}})},function(e,t,n){var r=n(7);r(r.S,"Math",{log10:function(e){return Math.log(e)*Math.LOG10E}})},function(e,t,n){var r=n(7);r(r.S,"Math",{log1p:n(506)})},function(e,t,n){var r=n(7);r(r.S,"Math",{log2:function(e){return Math.log(e)/Math.LN2}})},function(e,t,n){var r=n(7);r(r.S,"Math",{sign:n(335)})},function(e,t,n){var r=n(7),o=n(336),i=Math.exp;r(r.S+r.F*n(30)(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function(e){return Math.abs(e=+e)<1?(o(e)-o(-e))/2:(i(e-1)-i(-e-1))*(Math.E/2)}})},function(e,t,n){var r=n(7),o=n(336),i=Math.exp;r(r.S,"Math",{tanh:function(e){var t=o(e=+e),n=o(-e);return t==1/0?1:n==1/0?-1:(t-n)/(i(e)+i(-e))}})},function(e,t,n){var r=n(7);r(r.S,"Math",{trunc:function(e){return(e>0?Math.floor:Math.ceil)(e)}})},function(e,t,n){var r=n(7),o=n(154),i=String.fromCharCode,a=String.fromCodePoint;r(r.S+r.F*(!!a&&1!=a.length),"String",{fromCodePoint:function(e){for(var t,n=[],r=arguments.length,a=0;r>a;){if(t=+arguments[a++],o(t,1114111)!==t)throw RangeError(t+" is not a valid code point");n.push(t<65536?i(t):i(55296+((t-=65536)>>10),t%1024+56320))}return n.join("")}})},function(e,t,n){var r=n(7),o=n(83),i=n(50);r(r.S,"String",{raw:function(e){for(var t=o(e.raw),n=i(t.length),r=arguments.length,a=[],s=0;n>s;)a.push(String(t[s++])),s<r&&a.push(String(arguments[s]));return a.join("")}})},function(e,t,n){"use strict";n(182)("trim",function(e){return function(){return e(this,3)}})},function(e,t,n){"use strict";var r=n(337)(!0);n(338)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){"use strict";var r=n(7),o=n(337)(!1);r(r.P,"String",{codePointAt:function(e){return o(this,e)}})},function(e,t,n){"use strict";var r=n(7),o=n(50),i=n(340),a="".endsWith;r(r.P+r.F*n(341)("endsWith"),"String",{endsWith:function(e){var t=i(this,e,"endsWith"),n=arguments.length>1?arguments[1]:void 0,r=o(t.length),s=void 0===n?r:Math.min(o(n),r),l=String(e);return a?a.call(t,l,s):t.slice(s-l.length,s)===l}})},function(e,t,n){"use strict";var r=n(7),o=n(340);r(r.P+r.F*n(341)("includes"),"String",{includes:function(e){return!!~o(this,e,"includes").indexOf(e,arguments.length>1?arguments[1]:void 0)}})},function(e,t,n){var r=n(7);r(r.P,"String",{repeat:n(334)})},function(e,t,n){"use strict";var r=n(7),o=n(50),i=n(340),a="".startsWith;r(r.P+r.F*n(341)("startsWith"),"String",{startsWith:function(e){var t=i(this,e,"startsWith"),n=o(Math.min(arguments.length>1?arguments[1]:void 0,t.length)),r=String(e);return a?a.call(t,r,n):t.slice(n,n+r.length)===r}})},function(e,t,n){"use strict";n(75)("anchor",function(e){return function(t){return e(this,"a","name",t)}})},function(e,t,n){"use strict";n(75)("big",function(e){return function(){return e(this,"big","","")}})},function(e,t,n){"use strict";n(75)("blink",function(e){return function(){return e(this,"blink","","")}})},function(e,t,n){"use strict";n(75)("bold",function(e){return function(){return e(this,"b","","")}})},function(e,t,n){"use strict";n(75)("fixed",function(e){return function(){return e(this,"tt","","")}})},function(e,t,n){"use strict";n(75)("fontcolor",function(e){return function(t){return e(this,"font","color",t)}})},function(e,t,n){"use strict";n(75)("fontsize",function(e){return function(t){return e(this,"font","size",t)}})},function(e,t,n){"use strict";n(75)("italics",function(e){return function(){return e(this,"i","","")}})},function(e,t,n){"use strict";n(75)("link",function(e){return function(t){return e(this,"a","href",t)}})},function(e,t,n){"use strict";n(75)("small",function(e){return function(){return e(this,"small","","")}})},function(e,t,n){"use strict";n(75)("strike",function(e){return function(){return e(this,"strike","","")}})},function(e,t,n){"use strict";n(75)("sub",function(e){return function(){return e(this,"sub","","")}})},function(e,t,n){"use strict";n(75)("sup",function(e){return function(){return e(this,"sup","","")}})},function(e,t,n){var r=n(7);r(r.S,"Date",{now:function(){return(new Date).getTime()}})},function(e,t,n){"use strict";var r=n(7),o=n(57),i=n(106);r(r.P+r.F*n(30)(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function(e){var t=o(this),n=i(t);return"number"!=typeof n||isFinite(n)?t.toISOString():null}})},function(e,t,n){var r=n(7),o=n(824);r(r.P+r.F*(Date.prototype.toISOString!==o),"Date",{toISOString:o})},function(e,t,n){"use strict";var r=n(30),o=Date.prototype.getTime,i=Date.prototype.toISOString,a=function(e){return e>9?e:"0"+e};e.exports=r(function(){return"0385-07-25T07:06:39.999Z"!=i.call(new Date(-5e13-1))})||!r(function(){i.call(new Date(NaN))})?function(){if(!isFinite(o.call(this)))throw RangeError("Invalid time value");var e=this,t=e.getUTCFullYear(),n=e.getUTCMilliseconds(),r=t<0?"-":t>9999?"+":"";return r+("00000"+Math.abs(t)).slice(r?-6:-4)+"-"+a(e.getUTCMonth()+1)+"-"+a(e.getUTCDate())+"T"+a(e.getUTCHours())+":"+a(e.getUTCMinutes())+":"+a(e.getUTCSeconds())+"."+(n>99?n:"0"+a(n))+"Z"}:i},function(e,t,n){var r=Date.prototype,o=r.toString,i=r.getTime;new Date(NaN)+""!="Invalid Date"&&n(74)(r,"toString",function(){var e=i.call(this);return e==e?o.call(this):"Invalid Date"})},function(e,t,n){var r=n(42)("toPrimitive"),o=Date.prototype;r in o||n(73)(o,r,n(827))},function(e,t,n){"use strict";var r=n(25),o=n(106);e.exports=function(e){if("string"!==e&&"number"!==e&&"default"!==e)throw TypeError("Incorrect hint");return o(r(this),"number"!=e)}},function(e,t,n){var r=n(7);r(r.S,"Array",{isArray:n(260)})},function(e,t,n){"use strict";var r=n(91),o=n(7),i=n(57),a=n(508),s=n(342),l=n(50),u=n(343),c=n(344);o(o.S+o.F*!n(262)(function(e){Array.from(e)}),"Array",{from:function(e){var t,n,o,f,d=i(e),p="function"==typeof this?this:Array,m=arguments.length,h=m>1?arguments[1]:void 0,_=void 0!==h,g=0,v=c(d);if(_&&(h=r(h,m>2?arguments[2]:void 0,2)),void 0==v||p==Array&&s(v))for(n=new p(t=l(d.length));t>g;g++)u(n,g,_?h(d[g],g):d[g]);else for(f=v.call(d),n=new p;!(o=f.next()).done;g++)u(n,g,_?a(f,h,[o.value,g],!0):o.value);return n.length=g,n}})},function(e,t,n){"use strict";var r=n(7),o=n(343);r(r.S+r.F*n(30)(function(){function e(){}return!(Array.of.call(e)instanceof e)}),"Array",{of:function(){for(var e=0,t=arguments.length,n=new("function"==typeof this?this:Array)(t);t>e;)o(n,e,arguments[e++]);return n.length=t,n}})},function(e,t,n){"use strict";var r=n(7),o=n(83),i=[].join;r(r.P+r.F*(n(208)!=Object||!n(93)(i)),"Array",{join:function(e){return i.call(o(this),void 0===e?",":e)}})},function(e,t,n){"use strict";var r=n(7),o=n(330),i=n(92),a=n(154),s=n(50),l=[].slice;r(r.P+r.F*n(30)(function(){o&&l.call(o)}),"Array",{slice:function(e,t){var n=s(this.length),r=i(this);if(t=void 0===t?n:t,"Array"==r)return l.call(this,e,t);for(var o=a(e,n),u=a(t,n),c=s(u-o),f=Array(c),d=0;d<c;d++)f[d]="String"==r?this.charAt(o+d):this[o+d];return f}})},function(e,t,n){"use strict";var r=n(7),o=n(63),i=n(57),a=n(30),s=[].sort,l=[1,2,3];r(r.P+r.F*(a(function(){l.sort(void 0)})||!a(function(){l.sort(null)})||!n(93)(s)),"Array",{sort:function(e){return void 0===e?s.call(i(this)):s.call(i(this),o(e))}})},function(e,t,n){"use strict";var r=n(7),o=n(110)(0),i=n(93)([].forEach,!0);r(r.P+r.F*!i,"Array",{forEach:function(e){return o(this,e,arguments[1])}})},function(e,t,n){var r=n(33),o=n(260),i=n(42)("species");e.exports=function(e){var t;return o(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!o(t.prototype)||(t=void 0),r(t)&&null===(t=t[i])&&(t=void 0)),void 0===t?Array:t}},function(e,t,n){"use strict";var r=n(7),o=n(110)(1);r(r.P+r.F*!n(93)([].map,!0),"Array",{map:function(e){return o(this,e,arguments[1])}})},function(e,t,n){"use strict";var r=n(7),o=n(110)(2);r(r.P+r.F*!n(93)([].filter,!0),"Array",{filter:function(e){return o(this,e,arguments[1])}})},function(e,t,n){"use strict";var r=n(7),o=n(110)(3);r(r.P+r.F*!n(93)([].some,!0),"Array",{some:function(e){return o(this,e,arguments[1])}})},function(e,t,n){"use strict";var r=n(7),o=n(110)(4);r(r.P+r.F*!n(93)([].every,!0),"Array",{every:function(e){return o(this,e,arguments[1])}})},function(e,t,n){"use strict";var r=n(7),o=n(509);r(r.P+r.F*!n(93)([].reduce,!0),"Array",{reduce:function(e){return o(this,e,arguments.length,arguments[1],!1)}})},function(e,t,n){"use strict";var r=n(7),o=n(509);r(r.P+r.F*!n(93)([].reduceRight,!0),"Array",{reduceRight:function(e){return o(this,e,arguments.length,arguments[1],!0)}})},function(e,t,n){"use strict";var r=n(7),o=n(258)(!1),i=[].indexOf,a=!!i&&1/[1].indexOf(1,-0)<0;r(r.P+r.F*(a||!n(93)(i)),"Array",{indexOf:function(e){return a?i.apply(this,arguments)||0:o(this,e,arguments[1])}})},function(e,t,n){"use strict";var r=n(7),o=n(83),i=n(108),a=n(50),s=[].lastIndexOf,l=!!s&&1/[1].lastIndexOf(1,-0)<0;r(r.P+r.F*(l||!n(93)(s)),"Array",{lastIndexOf:function(e){if(l)return s.apply(this,arguments)||0;var t=o(this),n=a(t.length),r=n-1;for(arguments.length>1&&(r=Math.min(r,i(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in t&&t[r]===e)return r||0;return-1}})},function(e,t,n){var r=n(7);r(r.P,"Array",{copyWithin:n(510)}),n(134)("copyWithin")},function(e,t,n){var r=n(7);r(r.P,"Array",{fill:n(346)}),n(134)("fill")},function(e,t,n){"use strict";var r=n(7),o=n(110)(5),i=!0;"find"in[]&&Array(1).find(function(){i=!1}),r(r.P+r.F*i,"Array",{find:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),n(134)("find")},function(e,t,n){"use strict";var r=n(7),o=n(110)(6),i="findIndex",a=!0;i in[]&&Array(1)[i](function(){a=!1}),r(r.P+r.F*a,"Array",{findIndex:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),n(134)(i)},function(e,t,n){n(157)("Array")},function(e,t,n){var r=n(28),o=n(333),i=n(49).f,a=n(156).f,s=n(261),l=n(263),u=r.RegExp,c=u,f=u.prototype,d=/a/g,p=/a/g,m=new u(d)!==d;if(n(48)&&(!m||n(30)(function(){return p[n(42)("match")]=!1,u(d)!=d||u(p)==p||"/a/i"!=u(d,"i")}))){u=function(e,t){var n=this instanceof u,r=s(e),i=void 0===t;return!n&&r&&e.constructor===u&&i?e:o(m?new c(r&&!i?e.source:e,t):c((r=e instanceof u)?e.source:e,r&&i?l.call(e):t),n?this:f,u)};for(var h=function(e){e in u||i(u,e,{configurable:!0,get:function(){return c[e]},set:function(t){c[e]=t}})},_=a(c),g=0;_.length>g;)h(_[g++]);f.constructor=u,u.prototype=f,n(74)(r,"RegExp",u)}n(157)("RegExp")},function(e,t,n){"use strict";n(512);var r=n(25),o=n(263),i=n(48),a=/./.toString,s=function(e){n(74)(RegExp.prototype,"toString",e,!0)};n(30)(function(){return"/a/b"!=a.call({source:"a",flags:"b"})})?s(function(){var e=r(this);return"/".concat(e.source,"/","flags"in e?e.flags:!i&&e instanceof RegExp?o.call(e):void 0)}):"toString"!=a.name&&s(function(){return a.call(this)})},function(e,t,n){n(264)("match",1,function(e,t,n){return[function(n){"use strict";var r=e(this),o=void 0==n?void 0:n[t];return void 0!==o?o.call(n,r):new RegExp(n)[t](String(r))},n]})},function(e,t,n){n(264)("replace",2,function(e,t,n){return[function(r,o){"use strict";var i=e(this),a=void 0==r?void 0:r[t];return void 0!==a?a.call(r,i,o):n.call(String(i),r,o)},n]})},function(e,t,n){n(264)("search",1,function(e,t,n){return[function(n){"use strict";var r=e(this),o=void 0==n?void 0:n[t];return void 0!==o?o.call(n,r):new RegExp(n)[t](String(r))},n]})},function(e,t,n){n(264)("split",2,function(e,t,r){"use strict";var o=n(261),i=r,a=[].push;if("c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length){var s=void 0===/()??/.exec("")[1];r=function(e,t){var n=String(this);if(void 0===e&&0===t)return[];if(!o(e))return i.call(n,e,t);var r,l,u,c,f,d=[],p=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),m=0,h=void 0===t?4294967295:t>>>0,_=new RegExp(e.source,p+"g");for(s||(r=new RegExp("^"+_.source+"$(?!\\s)",p));(l=_.exec(n))&&!((u=l.index+l[0].length)>m&&(d.push(n.slice(m,l.index)),!s&&l.length>1&&l[0].replace(r,function(){for(f=1;f<arguments.length-2;f++)void 0===arguments[f]&&(l[f]=void 0)}),l.length>1&&l.index<n.length&&a.apply(d,l.slice(1)),c=l[0].length,m=u,d.length>=h));)_.lastIndex===l.index&&_.lastIndex++;return m===n.length?!c&&_.test("")||d.push(""):d.push(n.slice(m)),d.length>h?d.slice(0,h):d}}else"0".split(void 0,0).length&&(r=function(e,t){return void 0===e&&0===t?[]:i.call(this,e,t)});return[function(n,o){var i=e(this),a=void 0==n?void 0:n[t];return void 0!==a?a.call(n,i,o):r.call(String(i),n,o)},r]})},function(e,t,n){"use strict";var r,o,i,a,s=n(152),l=n(28),u=n(91),c=n(210),f=n(7),d=n(33),p=n(63),m=n(158),h=n(159),_=n(265),g=n(348).set,v=n(349)(),y=n(350),b=n(513),E=n(514),C=l.TypeError,S=l.process,D=l.Promise,w="process"==c(S),T=function(){},x=o=y.f,R=!!function(){try{var e=D.resolve(1),t=(e.constructor={})[n(42)("species")]=function(e){e(T,T)};return(w||"function"==typeof PromiseRejectionEvent)&&e.then(T)instanceof t}catch(e){}}(),k=function(e){var t;return!(!d(e)||"function"!=typeof(t=e.then))&&t},N=function(e,t){if(!e._n){e._n=!0;var n=e._c;v(function(){for(var r=e._v,o=1==e._s,i=0,a=function(t){var n,i,a=o?t.ok:t.fail,s=t.resolve,l=t.reject,u=t.domain;try{a?(o||(2==e._h&&A(e),e._h=1),!0===a?n=r:(u&&u.enter(),n=a(r),u&&u.exit()),n===t.promise?l(C("Promise-chain cycle")):(i=k(n))?i.call(n,s,l):s(n)):l(r)}catch(e){l(e)}};n.length>i;)a(n[i++]);e._c=[],e._n=!1,t&&!e._h&&I(e)})}},I=function(e){g.call(l,function(){var t,n,r,o=e._v,i=O(e);if(i&&(t=b(function(){w?S.emit("unhandledRejection",o,e):(n=l.onunhandledrejection)?n({promise:e,reason:o}):(r=l.console)&&r.error&&r.error("Unhandled promise rejection",o)}),e._h=w||O(e)?2:1),e._a=void 0,i&&t.e)throw t.v})},O=function(e){if(1==e._h)return!1;for(var t,n=e._a||e._c,r=0;n.length>r;)if((t=n[r++]).fail||!O(t.promise))return!1;return!0},A=function(e){g.call(l,function(){var t;w?S.emit("rejectionHandled",e):(t=l.onrejectionhandled)&&t({promise:e,reason:e._v})})},M=function(e){var t=this;t._d||(t._d=!0,(t=t._w||t)._v=e,t._s=2,t._a||(t._a=t._c.slice()),N(t,!0))},P=function(e){var t,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===e)throw C("Promise can't be resolved itself");(t=k(e))?v(function(){var r={_w:n,_d:!1};try{t.call(e,u(P,r,1),u(M,r,1))}catch(e){M.call(r,e)}}):(n._v=e,n._s=1,N(n,!1))}catch(e){M.call({_w:n,_d:!1},e)}}};R||(D=function(e){m(this,D,"Promise","_h"),p(e),r.call(this);try{e(u(P,this,1),u(M,this,1))}catch(e){M.call(this,e)}},(r=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n(160)(D.prototype,{then:function(e,t){var n=x(_(this,D));return n.ok="function"!=typeof e||e,n.fail="function"==typeof t&&t,n.domain=w?S.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&N(this,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),i=function(){var e=new r;this.promise=e,this.resolve=u(P,e,1),this.reject=u(M,e,1)},y.f=x=function(e){return e===D||e===a?new i(e):o(e)}),f(f.G+f.W+f.F*!R,{Promise:D}),n(181)(D,"Promise"),n(157)("Promise"),a=n(105).Promise,f(f.S+f.F*!R,"Promise",{reject:function(e){var t=x(this);return(0,t.reject)(e),t.promise}}),f(f.S+f.F*(s||!R),"Promise",{resolve:function(e){return E(s&&this===a?D:this,e)}}),f(f.S+f.F*!(R&&n(262)(function(e){D.all(e).catch(T)})),"Promise",{all:function(e){var t=this,n=x(t),r=n.resolve,o=n.reject,i=b(function(){var n=[],i=0,a=1;h(e,!1,function(e){var s=i++,l=!1;n.push(void 0),a++,t.resolve(e).then(function(e){l||(l=!0,n[s]=e,--a||r(n))},o)}),--a||r(n)});return i.e&&o(i.v),n.promise},race:function(e){var t=this,n=x(t),r=n.reject,o=b(function(){h(e,!1,function(e){t.resolve(e).then(n.resolve,r)})});return o.e&&r(o.v),n.promise}})},function(e,t,n){"use strict";var r=n(519),o=n(184);n(266)("WeakSet",function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{add:function(e){return r.def(o(this,"WeakSet"),e,!0)}},r,!1,!0)},function(e,t,n){"use strict";var r=n(7),o=n(267),i=n(351),a=n(25),s=n(154),l=n(50),u=n(33),c=n(28).ArrayBuffer,f=n(265),d=i.ArrayBuffer,p=i.DataView,m=o.ABV&&c.isView,h=d.prototype.slice,_=o.VIEW;r(r.G+r.W+r.F*(c!==d),{ArrayBuffer:d}),r(r.S+r.F*!o.CONSTR,"ArrayBuffer",{isView:function(e){return m&&m(e)||u(e)&&_ in e}}),r(r.P+r.U+r.F*n(30)(function(){return!new d(2).slice(1,void 0).byteLength}),"ArrayBuffer",{slice:function(e,t){if(void 0!==h&&void 0===t)return h.call(a(this),e);for(var n=a(this).byteLength,r=s(e,n),o=s(void 0===t?n:t,n),i=new(f(this,d))(l(o-r)),u=new p(this),c=new p(i),m=0;r<o;)c.setUint8(m++,u.getUint8(r++));return i}}),n(157)("ArrayBuffer")},function(e,t,n){var r=n(7);r(r.G+r.W+r.F*!n(267).ABV,{DataView:n(351).DataView})},function(e,t,n){n(114)("Int8",1,function(e){return function(t,n,r){return e(this,t,n,r)}})},function(e,t,n){n(114)("Uint8",1,function(e){return function(t,n,r){return e(this,t,n,r)}})},function(e,t,n){n(114)("Uint8",1,function(e){return function(t,n,r){return e(this,t,n,r)}},!0)},function(e,t,n){n(114)("Int16",2,function(e){return function(t,n,r){return e(this,t,n,r)}})},function(e,t,n){n(114)("Uint16",2,function(e){return function(t,n,r){return e(this,t,n,r)}})},function(e,t,n){n(114)("Int32",4,function(e){return function(t,n,r){return e(this,t,n,r)}})},function(e,t,n){n(114)("Uint32",4,function(e){return function(t,n,r){return e(this,t,n,r)}})},function(e,t,n){n(114)("Float32",4,function(e){return function(t,n,r){return e(this,t,n,r)}})},function(e,t,n){n(114)("Float64",8,function(e){return function(t,n,r){return e(this,t,n,r)}})},function(e,t,n){var r=n(7),o=n(63),i=n(25),a=(n(28).Reflect||{}).apply,s=Function.apply;r(r.S+r.F*!n(30)(function(){a(function(){})}),"Reflect",{apply:function(e,t,n){var r=o(e),l=i(n);return a?a(r,t,l):s.call(r,t,l)}})},function(e,t,n){var r=n(7),o=n(155),i=n(63),a=n(25),s=n(33),l=n(30),u=n(500),c=(n(28).Reflect||{}).construct,f=l(function(){function e(){}return!(c(function(){},[],e)instanceof e)}),d=!l(function(){c(function(){})});r(r.S+r.F*(f||d),"Reflect",{construct:function(e,t){i(e),a(t);var n=arguments.length<3?e:i(arguments[2]);if(d&&!f)return c(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var r=[null];return r.push.apply(r,t),new(u.apply(e,r))}var l=n.prototype,p=o(s(l)?l:Object.prototype),m=Function.apply.call(e,p,t);return s(m)?m:p}})},function(e,t,n){var r=n(49),o=n(7),i=n(25),a=n(106);o(o.S+o.F*n(30)(function(){Reflect.defineProperty(r.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(e,t,n){i(e),t=a(t,!0),i(n);try{return r.f(e,t,n),!0}catch(e){return!1}}})},function(e,t,n){var r=n(7),o=n(84).f,i=n(25);r(r.S,"Reflect",{deleteProperty:function(e,t){var n=o(i(e),t);return!(n&&!n.configurable)&&delete e[t]}})},function(e,t,n){"use strict";var r=n(7),o=n(25),i=function(e){this._t=o(e),this._i=0;var t,n=this._k=[];for(t in e)n.push(t)};n(339)(i,"Object",function(){var e,t=this._k;do{if(this._i>=t.length)return{value:void 0,done:!0}}while(!((e=t[this._i++])in this._t));return{value:e,done:!1}}),r(r.S,"Reflect",{enumerate:function(e){return new i(e)}})},function(e,t,n){var r=n(84),o=n(85),i=n(72),a=n(7),s=n(33),l=n(25);a(a.S,"Reflect",{get:function e(t,n){var a,u,c=arguments.length<3?t:arguments[2];return l(t)===c?t[n]:(a=r.f(t,n))?i(a,"value")?a.value:void 0!==a.get?a.get.call(c):void 0:s(u=o(t))?e(u,n,c):void 0}})},function(e,t,n){var r=n(84),o=n(7),i=n(25);o(o.S,"Reflect",{getOwnPropertyDescriptor:function(e,t){return r.f(i(e),t)}})},function(e,t,n){var r=n(7),o=n(85),i=n(25);r(r.S,"Reflect",{getPrototypeOf:function(e){return o(i(e))}})},function(e,t,n){var r=n(7);r(r.S,"Reflect",{has:function(e,t){return t in e}})},function(e,t,n){var r=n(7),o=n(25),i=Object.isExtensible;r(r.S,"Reflect",{isExtensible:function(e){return o(e),!i||i(e)}})},function(e,t,n){var r=n(7);r(r.S,"Reflect",{ownKeys:n(521)})},function(e,t,n){var r=n(7),o=n(25),i=Object.preventExtensions;r(r.S,"Reflect",{preventExtensions:function(e){o(e);try{return i&&i(e),!0}catch(e){return!1}}})},function(e,t,n){var r=n(49),o=n(84),i=n(85),a=n(72),s=n(7),l=n(150),u=n(25),c=n(33);s(s.S,"Reflect",{set:function e(t,n,s){var f,d,p=arguments.length<4?t:arguments[3],m=o.f(u(t),n);if(!m){if(c(d=i(t)))return e(d,n,s,p);m=l(0)}return a(m,"value")?!(!1===m.writable||!c(p)||((f=o.f(p,n)||l(0)).value=s,r.f(p,n,f),0)):void 0!==m.set&&(m.set.call(p,s),!0)}})},function(e,t,n){var r=n(7),o=n(331);o&&r(r.S,"Reflect",{setPrototypeOf:function(e,t){o.check(e,t);try{return o.set(e,t),!0}catch(e){return!1}}})},function(e,t,n){"use strict";var r=n(7),o=n(258)(!0);r(r.P,"Array",{includes:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),n(134)("includes")},function(e,t,n){"use strict";var r=n(7),o=n(522),i=n(57),a=n(50),s=n(63),l=n(345);r(r.P,"Array",{flatMap:function(e){var t,n,r=i(this);return s(e),t=a(r.length),n=l(r,0),o(n,r,r,t,0,1,e,arguments[1]),n}}),n(134)("flatMap")},function(e,t,n){"use strict";var r=n(7),o=n(522),i=n(57),a=n(50),s=n(108),l=n(345);r(r.P,"Array",{flatten:function(){var e=arguments[0],t=i(this),n=a(t.length),r=l(t,0);return o(r,t,t,n,0,void 0===e?1:s(e)),r}}),n(134)("flatten")},function(e,t,n){"use strict";var r=n(7),o=n(337)(!0);r(r.P,"String",{at:function(e){return o(this,e)}})},function(e,t,n){"use strict";var r=n(7),o=n(523);r(r.P,"String",{padStart:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0,!0)}})},function(e,t,n){"use strict";var r=n(7),o=n(523);r(r.P,"String",{padEnd:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0,!1)}})},function(e,t,n){"use strict";n(182)("trimLeft",function(e){return function(){return e(this,1)}},"trimStart")},function(e,t,n){"use strict";n(182)("trimRight",function(e){return function(){return e(this,2)}},"trimEnd")},function(e,t,n){"use strict";var r=n(7),o=n(107),i=n(50),a=n(261),s=n(263),l=RegExp.prototype,u=function(e,t){this._r=e,this._s=t};n(339)(u,"RegExp String",function(){var e=this._r.exec(this._s);return{value:e,done:null===e}}),r(r.P,"String",{matchAll:function(e){if(o(this),!a(e))throw TypeError(e+" is not a regexp!");var t=String(this),n="flags"in l?String(e.flags):s.call(e),r=new RegExp(e.source,~n.indexOf("g")?n:"g"+n);return r.lastIndex=i(e.lastIndex),new u(r,t)}})},function(e,t,n){n(327)("asyncIterator")},function(e,t,n){n(327)("observable")},function(e,t,n){var r=n(7),o=n(521),i=n(83),a=n(84),s=n(343);r(r.S,"Object",{getOwnPropertyDescriptors:function(e){for(var t,n,r=i(e),l=a.f,u=o(r),c={},f=0;u.length>f;)void 0!==(n=l(r,t=u[f++]))&&s(c,t,n);return c}})},function(e,t,n){var r=n(7),o=n(524)(!1);r(r.S,"Object",{values:function(e){return o(e)}})},function(e,t,n){var r=n(7),o=n(524)(!0);r(r.S,"Object",{entries:function(e){return o(e)}})},function(e,t,n){"use strict";var r=n(7),o=n(57),i=n(63),a=n(49);n(48)&&r(r.P+n(268),"Object",{__defineGetter__:function(e,t){a.f(o(this),e,{get:i(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var r=n(7),o=n(57),i=n(63),a=n(49);n(48)&&r(r.P+n(268),"Object",{__defineSetter__:function(e,t){a.f(o(this),e,{set:i(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var r=n(7),o=n(57),i=n(106),a=n(85),s=n(84).f;n(48)&&r(r.P+n(268),"Object",{__lookupGetter__:function(e){var t,n=o(this),r=i(e,!0);do{if(t=s(n,r))return t.get}while(n=a(n))}})},function(e,t,n){"use strict";var r=n(7),o=n(57),i=n(106),a=n(85),s=n(84).f;n(48)&&r(r.P+n(268),"Object",{__lookupSetter__:function(e){var t,n=o(this),r=i(e,!0);do{if(t=s(n,r))return t.set}while(n=a(n))}})},function(e,t,n){var r=n(7);r(r.P+r.R,"Map",{toJSON:n(525)("Map")})},function(e,t,n){var r=n(7);r(r.P+r.R,"Set",{toJSON:n(525)("Set")})},function(e,t,n){n(269)("Map")},function(e,t,n){n(269)("Set")},function(e,t,n){n(269)("WeakMap")},function(e,t,n){n(269)("WeakSet")},function(e,t,n){n(270)("Map")},function(e,t,n){n(270)("Set")},function(e,t,n){n(270)("WeakMap")},function(e,t,n){n(270)("WeakSet")},function(e,t,n){var r=n(7);r(r.G,{global:n(28)})},function(e,t,n){var r=n(7);r(r.S,"System",{global:n(28)})},function(e,t,n){var r=n(7),o=n(92);r(r.S,"Error",{isError:function(e){return"Error"===o(e)}})},function(e,t,n){var r=n(7);r(r.S,"Math",{clamp:function(e,t,n){return Math.min(n,Math.max(t,e))}})},function(e,t,n){var r=n(7);r(r.S,"Math",{DEG_PER_RAD:Math.PI/180})},function(e,t,n){var r=n(7),o=180/Math.PI;r(r.S,"Math",{degrees:function(e){return e*o}})},function(e,t,n){var r=n(7),o=n(527),i=n(507);r(r.S,"Math",{fscale:function(e,t,n,r,a){return i(o(e,t,n,r,a))}})},function(e,t,n){var r=n(7);r(r.S,"Math",{iaddh:function(e,t,n,r){var o=e>>>0,i=n>>>0;return(t>>>0)+(r>>>0)+((o&i|(o|i)&~(o+i>>>0))>>>31)|0}})},function(e,t,n){var r=n(7);r(r.S,"Math",{isubh:function(e,t,n,r){var o=e>>>0,i=n>>>0;return(t>>>0)-(r>>>0)-((~o&i|~(o^i)&o-i>>>0)>>>31)|0}})},function(e,t,n){var r=n(7);r(r.S,"Math",{imulh:function(e,t){var n=+e,r=+t,o=65535&n,i=65535&r,a=n>>16,s=r>>16,l=(a*i>>>0)+(o*i>>>16);return a*s+(l>>16)+((o*s>>>0)+(65535&l)>>16)}})},function(e,t,n){var r=n(7);r(r.S,"Math",{RAD_PER_DEG:180/Math.PI})},function(e,t,n){var r=n(7),o=Math.PI/180;r(r.S,"Math",{radians:function(e){return e*o}})},function(e,t,n){var r=n(7);r(r.S,"Math",{scale:n(527)})},function(e,t,n){var r=n(7);r(r.S,"Math",{umulh:function(e,t){var n=+e,r=+t,o=65535&n,i=65535&r,a=n>>>16,s=r>>>16,l=(a*i>>>0)+(o*i>>>16);return a*s+(l>>>16)+((o*s>>>0)+(65535&l)>>>16)}})},function(e,t,n){var r=n(7);r(r.S,"Math",{signbit:function(e){return(e=+e)!=e?e:0==e?1/e==1/0:e>0}})},function(e,t,n){"use strict";var r=n(7),o=n(105),i=n(28),a=n(265),s=n(514);r(r.P+r.R,"Promise",{finally:function(e){var t=a(this,o.Promise||i.Promise),n="function"==typeof e;return this.then(n?function(n){return s(t,e()).then(function(){return n})}:e,n?function(n){return s(t,e()).then(function(){throw n})}:e)}})},function(e,t,n){"use strict";var r=n(7),o=n(350),i=n(513);r(r.S,"Promise",{try:function(e){var t=o.f(this),n=i(e);return(n.e?t.reject:t.resolve)(n.v),t.promise}})},function(e,t,n){var r=n(115),o=n(25),i=r.key,a=r.set;r.exp({defineMetadata:function(e,t,n,r){a(e,t,o(n),i(r))}})},function(e,t,n){var r=n(115),o=n(25),i=r.key,a=r.map,s=r.store;r.exp({deleteMetadata:function(e,t){var n=arguments.length<3?void 0:i(arguments[2]),r=a(o(t),n,!1);if(void 0===r||!r.delete(e))return!1;if(r.size)return!0;var l=s.get(t);return l.delete(n),!!l.size||s.delete(t)}})},function(e,t,n){var r=n(115),o=n(25),i=n(85),a=r.has,s=r.get,l=r.key,u=function(e,t,n){if(a(e,t,n))return s(e,t,n);var r=i(t);return null!==r?u(e,r,n):void 0};r.exp({getMetadata:function(e,t){return u(e,o(t),arguments.length<3?void 0:l(arguments[2]))}})},function(e,t,n){var r=n(517),o=n(526),i=n(115),a=n(25),s=n(85),l=i.keys,u=i.key,c=function(e,t){var n=l(e,t),i=s(e);if(null===i)return n;var a=c(i,t);return a.length?n.length?o(new r(n.concat(a))):a:n};i.exp({getMetadataKeys:function(e){return c(a(e),arguments.length<2?void 0:u(arguments[1]))}})},function(e,t,n){var r=n(115),o=n(25),i=r.get,a=r.key;r.exp({getOwnMetadata:function(e,t){return i(e,o(t),arguments.length<3?void 0:a(arguments[2]))}})},function(e,t,n){var r=n(115),o=n(25),i=r.keys,a=r.key;r.exp({getOwnMetadataKeys:function(e){return i(o(e),arguments.length<2?void 0:a(arguments[1]))}})},function(e,t,n){var r=n(115),o=n(25),i=n(85),a=r.has,s=r.key,l=function(e,t,n){if(a(e,t,n))return!0;var r=i(t);return null!==r&&l(e,r,n)};r.exp({hasMetadata:function(e,t){return l(e,o(t),arguments.length<3?void 0:s(arguments[2]))}})},function(e,t,n){var r=n(115),o=n(25),i=r.has,a=r.key;r.exp({hasOwnMetadata:function(e,t){return i(e,o(t),arguments.length<3?void 0:a(arguments[2]))}})},function(e,t,n){var r=n(115),o=n(25),i=n(63),a=r.key,s=r.set;r.exp({metadata:function(e,t){return function(n,r){s(e,t,(void 0!==r?o:i)(n),a(r))}}})},function(e,t,n){var r=n(7),o=n(349)(),i=n(28).process,a="process"==n(92)(i);r(r.G,{asap:function(e){var t=a&&i.domain;o(t?t.bind(e):e)}})},function(e,t,n){"use strict";var r=n(7),o=n(28),i=n(105),a=n(349)(),s=n(42)("observable"),l=n(63),u=n(25),c=n(158),f=n(160),d=n(73),p=n(159),m=p.RETURN,h=function(e){return null==e?void 0:l(e)},_=function(e){var t=e._c;t&&(e._c=void 0,t())},g=function(e){return void 0===e._o},v=function(e){g(e)||(e._o=void 0,_(e))},y=function(e,t){u(e),this._c=void 0,this._o=e,e=new b(this);try{var n=t(e),r=n;null!=n&&("function"==typeof n.unsubscribe?n=function(){r.unsubscribe()}:l(n),this._c=n)}catch(t){return void e.error(t)}g(this)&&_(this)};y.prototype=f({},{unsubscribe:function(){v(this)}});var b=function(e){this._s=e};b.prototype=f({},{next:function(e){var t=this._s;if(!g(t)){var n=t._o;try{var r=h(n.next);if(r)return r.call(n,e)}catch(e){try{v(t)}finally{throw e}}}},error:function(e){var t=this._s;if(g(t))throw e;var n=t._o;t._o=void 0;try{var r=h(n.error);if(!r)throw e;e=r.call(n,e)}catch(e){try{_(t)}finally{throw e}}return _(t),e},complete:function(e){var t=this._s;if(!g(t)){var n=t._o;t._o=void 0;try{var r=h(n.complete);e=r?r.call(n,e):void 0}catch(e){try{_(t)}finally{throw e}}return _(t),e}}});var E=function(e){c(this,E,"Observable","_f")._f=l(e)};f(E.prototype,{subscribe:function(e){return new y(e,this._f)},forEach:function(e){var t=this;return new(i.Promise||o.Promise)(function(n,r){l(e);var o=t.subscribe({next:function(t){try{return e(t)}catch(e){r(e),o.unsubscribe()}},error:r,complete:n})})}}),f(E,{from:function(e){var t="function"==typeof this?this:E,n=h(u(e)[s]);if(n){var r=u(n.call(e));return r.constructor===t?r:new t(function(e){return r.subscribe(e)})}return new t(function(t){var n=!1;return a(function(){if(!n){try{if(p(e,!1,function(e){if(t.next(e),n)return m})===m)return}catch(e){if(n)throw e;return void t.error(e)}t.complete()}}),function(){n=!0}})},of:function(){for(var e=0,t=arguments.length,n=Array(t);e<t;)n[e]=arguments[e++];return new("function"==typeof this?this:E)(function(e){var t=!1;return a(function(){if(!t){for(var r=0;r<n.length;++r)if(e.next(n[r]),t)return;e.complete()}}),function(){t=!0}})}}),d(E.prototype,s,function(){return this}),r(r.G,{Observable:E}),n(157)("Observable")},function(e,t,n){var r=n(28),o=n(7),i=r.navigator,a=[].slice,s=!!i&&/MSIE .\./.test(i.userAgent),l=function(e){return function(t,n){var r=arguments.length>2,o=!!r&&a.call(arguments,2);return e(r?function(){("function"==typeof t?t:Function(t)).apply(this,o)}:t,n)}};o(o.G+o.B+o.F*s,{setTimeout:l(r.setTimeout),setInterval:l(r.setInterval)})},function(e,t,n){var r=n(7),o=n(348);r(r.G+r.B,{setImmediate:o.set,clearImmediate:o.clear})},function(e,t,n){for(var r=n(347),o=n(153),i=n(74),a=n(28),s=n(73),l=n(183),u=n(42),c=u("iterator"),f=u("toStringTag"),d=l.Array,p={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},m=o(p),h=0;h<m.length;h++){var _,g=m[h],v=p[g],y=a[g],b=y&&y.prototype;if(b&&(b[c]||s(b,c,d),b[f]||s(b,f,g),l[g]=d,v))for(_ in r)b[_]||i(b,_,r[_],!0)}},function(e,t,n){(function(t){!function(t){"use strict";var n,r=Object.prototype,o=r.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag",u="object"==typeof e,c=t.regeneratorRuntime;if(c)u&&(e.exports=c);else{(c=t.regeneratorRuntime=u?e.exports:{}).wrap=b;var f="suspendedStart",d="suspendedYield",p="executing",m="completed",h={},_={};_[a]=function(){return this};var g=Object.getPrototypeOf,v=g&&g(g(I([])));v&&v!==r&&o.call(v,a)&&(_=v);var y=D.prototype=C.prototype=Object.create(_);S.prototype=y.constructor=D,D.constructor=S,D[l]=S.displayName="GeneratorFunction",c.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===S||"GeneratorFunction"===(t.displayName||t.name))},c.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,D):(e.__proto__=D,l in e||(e[l]="GeneratorFunction")),e.prototype=Object.create(y),e},c.awrap=function(e){return{__await:e}},w(T.prototype),T.prototype[s]=function(){return this},c.AsyncIterator=T,c.async=function(e,t,n,r){var o=new T(b(e,t,n,r));return c.isGeneratorFunction(t)?o:o.next().then(function(e){return e.done?e.value:o.next()})},w(y),y[l]="Generator",y[a]=function(){return this},y.toString=function(){return"[object Generator]"},c.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},c.values=I,N.prototype={constructor:N,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(k),!e)for(var t in this)"t"===t.charAt(0)&&o.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=n)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(r,o){return s.type="throw",s.arg=e,t.next=r,o&&(t.method="next",t.arg=n),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),u=o.call(a,"finallyLoc");if(l&&u){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(l){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var i=r;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=t,i?(this.method="next",this.next=i.finallyLoc,h):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),h},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),k(n),h}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;k(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:I(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=n),h}}}function b(e,t,n,r){var o=t&&t.prototype instanceof C?t:C,i=Object.create(o.prototype),a=new N(r||[]);return i._invoke=function(e,t,n){var r=f;return function(o,i){if(r===p)throw new Error("Generator is already running");if(r===m){if("throw"===o)throw i;return O()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var s=x(a,n);if(s){if(s===h)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===f)throw r=m,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=p;var l=E(e,t,n);if("normal"===l.type){if(r=n.done?m:d,l.arg===h)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r=m,n.method="throw",n.arg=l.arg)}}}(e,n,a),i}function E(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}function C(){}function S(){}function D(){}function w(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function T(e){function n(t,r,i,a){var s=E(e[t],e,r);if("throw"!==s.type){var l=s.arg,u=l.value;return u&&"object"==typeof u&&o.call(u,"__await")?Promise.resolve(u.__await).then(function(e){n("next",e,i,a)},function(e){n("throw",e,i,a)}):Promise.resolve(u).then(function(e){l.value=e,i(l)},a)}a(s.arg)}var r;"object"==typeof t.process&&t.process.domain&&(n=t.process.domain.bind(n)),this._invoke=function(e,t){function o(){return new Promise(function(r,o){n(e,t,r,o)})}return r=r?r.then(o,o):o()}}function x(e,t){var r=e.iterator[t.method];if(r===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=n,x(e,t),"throw"===t.method))return h;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return h}var o=E(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,h;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=n),t.delegate=null,h):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,h)}function R(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function k(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function N(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(R,this),this.reset(!0)}function I(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,i=function t(){for(;++r<e.length;)if(o.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=n,t.done=!0,t};return i.next=i}}return{next:O}}function O(){return{value:n,done:!0}}}("object"==typeof t?t:"object"==typeof window?window:"object"==typeof self?self:this)}).call(this,n(15))},function(e,t,n){n(943),e.exports=n(105).RegExp.escape},function(e,t,n){var r=n(7),o=n(944)(/[\\^$*+?.()|[\]{}]/g,"\\$&");r(r.S,"RegExp",{escape:function(e){return o(e)}})},function(e,t){e.exports=function(e,t){var n=t===Object(t)?function(e){return t[e]}:t;return function(t){return String(t).replace(e,n)}}},function(e,t,n){"use strict";(function(e){var t=T(n(51)),r=T(n(19)),o=T(n(67)),i=n(9),a=T(i),s=T(n(14)),l=function(){var e=(0,i.coroutine)(r.default.mark(function e(){var t,n,a,s,h,_,T,x,M,P,L,F,U,j,B,G;return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return S.default.init().then(function(){console.log("Initialised rageshake: See https://bugs.chromium.org/p/chromium/issues/detail?id=583193 to fix line numbers on Chrome."),window.addEventListener("beforeunload",function(e){console.log("riot-web closing"),S.default.flush()}),S.default.cleanup()},function(e){console.error("Failed to initialise rageshake: "+e)}),y.default.setIndexedDbWorkerScript(window.vector_indexeddb_worker_script),D.default.setConferenceHandler(m.default),window.addEventListener("hashchange",N),e.next=6,(0,i.resolve)(u());case 6:return t=(0,g.parseQsFromFragment)(window.location),n=(0,g.parseQs)(window.location),p.default.set(new v.default),a=void 0,s=void 0,e.prev=11,e.next=14,(0,i.resolve)((0,w.getVectorConfig)());case 14:a=e.sent,e.next=20;break;case 17:e.prev=17,e.t0=e.catch(11),s=e.t0;case 20:if(C.default.put(a),t.params.client_secret||t.location.length>0){e.next=29;break}if(h=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,_=/Android/.test(navigator.userAgent),!h&&!_){e.next=29;break}if(document.cookie.split(";").some(function(e){return e.startsWith("mobile_redirect_to_guide")})){e.next=29;break}return window.location="mobile_guide/",e.abrupt("return");case 29:(0,o.default)(null),T=void 0,x=b.default.getValue("theme"),M=0;case 33:if(!(T=document.getElementsByTagName("link")[M])){e.next=42;break}if(P=T.getAttribute("href")){e.next=37;break}return e.abrupt("continue",39);case 37:(L=P.match(/^bundles\/.*\/theme-(.*)\.css$/))&&(L[1]===x?(T.disabled=!1,"undefined"!=typeof InstallTrigger?E.default.setTheme(x):T.onload=function(){E.default.setTheme(x)}):T.disabled=!0);case 39:M++,e.next=33;break;case 42:F=R(["displaytable","flexbox","es5object","es5function","localstorage","objectfit","indexeddb","webworkers"]),U=window.localStorage&&window.localStorage.getItem("mx_accepts_unsupported_browser"),console.log("Vector starting at "+window.location),s?window.matrixChat=f.default.render(c.default.createElement("div",{className:"error"},"Unable to load config file: please refresh the page to try again."),document.getElementById("matrixchat")):F||U?((j=p.default.get()).startUpdater(),B=d.default.getComponent("structures.MatrixChat"),window.matrixChat=f.default.render(c.default.createElement(B,{onNewScreen:I,makeRegistrationUrl:O,ConferenceHandler:m.default,config:a,realQueryParams:n,startingFragmentQueryParams:t.params,enableGuest:!a.disable_guests,onTokenLoginCompleted:A,initialScreenAfterLogin:k(window.location),defaultDeviceDisplayName:j.getDefaultDeviceDisplayName()}),document.getElementById("matrixchat"))):(console.error("Browser is missing required features."),G=d.default.getComponent("structures.CompatibilityPage"),window.matrixChat=f.default.render(c.default.createElement(G,{onAccept:function(){window.localStorage&&window.localStorage.setItem("mx_accepts_unsupported_browser",!0),console.log("User accepts the compatibility risks."),l()}}),document.getElementById("matrixchat")));case 46:case"end":return e.stop()}},e,this,[[11,17]])}));return function(){return e.apply(this,arguments)}}(),u=function(){var e=(0,i.coroutine)(r.default.mark(function e(){var n,o;return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=b.default.getValue("language",null,!0),o=[],n?o=[n]:h.getLanguagesFromBrowser().forEach(function(e){var n;(n=o).push.apply(n,(0,t.default)(h.getNormalizedLanguageKeys(e)))}),e.prev=3,e.next=6,(0,i.resolve)(h.setLanguage(o));case 6:document.documentElement.setAttribute("lang",h.getCurrentLanguage()),e.next=12;break;case 9:e.prev=9,e.t0=e.catch(3),console.error("Unable to set language",e.t0);case 12:case"end":return e.stop()}},e,this,[[3,9]])}));return function(){return e.apply(this,arguments)}}(),c=T(n(0)),f=(T(n(960)),T(n(41))),d=T(n(3)),p=T(n(71)),m=T(n(567)),h=(T(n(99)),function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(2))),_=T(n(89)),g=n(1155),v=T(n(1156)),y=T(n(8)),b=T(n(22)),E=T(n(174)),C=T(n(39)),S=T(n(325)),D=T(n(127)),w=n(411);function T(e){return e&&e.__esModule?e:{default:e}}n(1884),n(1885),n(1886),n(1887),e.React=c.default,d.default.loadSkin(n(1162));var x=null;function R(e){if(!window.Modernizr)return console.error("Cannot check features - Modernizr global is missing."),!1;for(var t=!0,n=0;n<e.length;n++){if(void 0===window.Modernizr[e[n]])return console.error("Looked for feature '%s' but Modernizr has no results for this. Has it been configured correctly?",e[n]),!1;!1===window.Modernizr[e[n]]&&(console.error("Browser missing feature: '%s'",e[n]),t=!1)}return t}function k(e){var t=(0,g.parseQsFromFragment)(e);return{screen:t.location.substring(1),params:t.params}}function N(e){decodeURIComponent(window.location.hash)!=x&&function(e){if(window.matrixChat){console.log("Routing URL ",e.href);var t=k(e);window.matrixChat.showScreen(t.screen,t.params)}}(window.location)}function I(e){console.log("newscreen "+e);var t="#/"+e;x=t,window.location.hash=t}function O(e){var t=void 0;t="file:"===window.location.protocol?"https://riot.im/app/#/register":window.location.protocol+"//"+window.location.host+window.location.pathname+"#/register";for(var n=(0,s.default)(e),r=0;r<n.length;++r){t+=0==r?"?":"&";var o=n[r];t+=o+"="+encodeURIComponent(e[o])}return t}function A(){var e=_.default.parse(window.location.href);e.search="";var t=_.default.format(e);console.log("Redirecting to "+t+" to drop loginToken from queryparams"),window.location.href=t}a.default.config({warnings:!1}),l()}).call(this,n(15))},function(e,t,n){"use strict";e.exports=function(){}},function(e,t,n){"use strict";var r=n(948),o=n(188),i=n(97),a=n(949),s=r.twoArgumentPooler,l=r.fourArgumentPooler,u=/\/+/g;function c(e){return(""+e).replace(u,"$&/")}function f(e,t){this.func=e,this.context=t,this.count=0}function d(e,t,n){var r=e.func,o=e.context;r.call(o,t,e.count++)}function p(e,t,n,r){this.result=e,this.keyPrefix=t,this.func=n,this.context=r,this.count=0}function m(e,t,n){var r=e.result,a=e.keyPrefix,s=e.func,l=e.context,u=s.call(l,t,e.count++);Array.isArray(u)?h(u,r,n,i.thatReturnsArgument):null!=u&&(o.isValidElement(u)&&(u=o.cloneAndReplaceKey(u,a+(!u.key||t&&t.key===u.key?"":c(u.key)+"/")+n)),r.push(u))}function h(e,t,n,r,o){var i="";null!=n&&(i=c(n)+"/");var s=p.getPooled(t,i,r,o);a(e,m,s),p.release(s)}function _(e,t,n){return null}f.prototype.destructor=function(){this.func=null,this.context=null,this.count=0},r.addPoolingTo(f,s),p.prototype.destructor=function(){this.result=null,this.keyPrefix=null,this.func=null,this.context=null,this.count=0},r.addPoolingTo(p,l);var g={forEach:function(e,t,n){if(null==e)return e;var r=f.getPooled(t,n);a(e,d,r),f.release(r)},map:function(e,t,n){if(null==e)return e;var r=[];return h(e,r,null,t,n),r},mapIntoWithKeyPrefixInternal:h,count:function(e,t){return a(e,_,null)},toArray:function(e){var t=[];return h(e,t,null,i.thatReturnsArgument),t}};e.exports=g},function(e,t,n){"use strict";var r=n(221),o=(n(23),function(e){if(this.instancePool.length){var t=this.instancePool.pop();return this.call(t,e),t}return new this(e)}),i=function(e){e instanceof this||r("25"),e.destructor(),this.instancePool.length<this.poolSize&&this.instancePool.push(e)},a=o,s={addPoolingTo:function(e,t){var n=e;return n.instancePool=[],n.getPooled=t||a,n.poolSize||(n.poolSize=10),n.release=i,n},oneArgumentPooler:o,twoArgumentPooler:function(e,t){if(this.instancePool.length){var n=this.instancePool.pop();return this.call(n,e,t),n}return new this(e,t)},threeArgumentPooler:function(e,t,n){if(this.instancePool.length){var r=this.instancePool.pop();return this.call(r,e,t,n),r}return new this(e,t,n)},fourArgumentPooler:function(e,t,n,r){if(this.instancePool.length){var o=this.instancePool.pop();return this.call(o,e,t,n,r),o}return new this(e,t,n,r)}};e.exports=s},function(e,t,n){"use strict";var r=n(221),o=(n(123),n(531)),i=n(950),a=(n(23),n(951)),s=(n(36),"."),l=":";function u(e,t){return e&&"object"==typeof e&&null!=e.key?a.escape(e.key):t.toString(36)}e.exports=function(e,t,n){return null==e?0:function e(t,n,c,f){var d,p=typeof t;if("undefined"!==p&&"boolean"!==p||(t=null),null===t||"string"===p||"number"===p||"object"===p&&t.$$typeof===o)return c(f,t,""===n?s+u(t,0):n),1;var m=0,h=""===n?s:n+l;if(Array.isArray(t))for(var _=0;_<t.length;_++)m+=e(d=t[_],h+u(d,_),c,f);else{var g=i(t);if(g){var v,y=g.call(t);if(g!==t.entries)for(var b=0;!(v=y.next()).done;)m+=e(d=v.value,h+u(d,b++),c,f);else for(;!(v=y.next()).done;){var E=v.value;E&&(m+=e(d=E[1],h+a.escape(E[0])+l+u(d,0),c,f))}}else if("object"===p){var C=String(t);r("31","[object Object]"===C?"object with keys {"+Object.keys(t).join(", ")+"}":C,"")}}return m}(e,"",t,n)}},function(e,t,n){"use strict";var r="function"==typeof Symbol&&Symbol.iterator,o="@@iterator";e.exports=function(e){var t=e&&(r&&e[r]||e[o]);if("function"==typeof t)return t}},function(e,t,n){"use strict";var r={escape:function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,function(e){return t[e]})},unescape:function(e){var t={"=0":"=","=2":":"};return(""+("."===e[0]&&"$"===e[1]?e.substring(2):e.substring(1))).replace(/(=0|=2)/g,function(e){return t[e]})}};e.exports=r},function(e,t,n){"use strict";var r=n(188).createFactory,o={a:r("a"),abbr:r("abbr"),address:r("address"),area:r("area"),article:r("article"),aside:r("aside"),audio:r("audio"),b:r("b"),base:r("base"),bdi:r("bdi"),bdo:r("bdo"),big:r("big"),blockquote:r("blockquote"),body:r("body"),br:r("br"),button:r("button"),canvas:r("canvas"),caption:r("caption"),cite:r("cite"),code:r("code"),col:r("col"),colgroup:r("colgroup"),data:r("data"),datalist:r("datalist"),dd:r("dd"),del:r("del"),details:r("details"),dfn:r("dfn"),dialog:r("dialog"),div:r("div"),dl:r("dl"),dt:r("dt"),em:r("em"),embed:r("embed"),fieldset:r("fieldset"),figcaption:r("figcaption"),figure:r("figure"),footer:r("footer"),form:r("form"),h1:r("h1"),h2:r("h2"),h3:r("h3"),h4:r("h4"),h5:r("h5"),h6:r("h6"),head:r("head"),header:r("header"),hgroup:r("hgroup"),hr:r("hr"),html:r("html"),i:r("i"),iframe:r("iframe"),img:r("img"),input:r("input"),ins:r("ins"),kbd:r("kbd"),keygen:r("keygen"),label:r("label"),legend:r("legend"),li:r("li"),link:r("link"),main:r("main"),map:r("map"),mark:r("mark"),menu:r("menu"),menuitem:r("menuitem"),meta:r("meta"),meter:r("meter"),nav:r("nav"),noscript:r("noscript"),object:r("object"),ol:r("ol"),optgroup:r("optgroup"),option:r("option"),output:r("output"),p:r("p"),param:r("param"),picture:r("picture"),pre:r("pre"),progress:r("progress"),q:r("q"),rp:r("rp"),rt:r("rt"),ruby:r("ruby"),s:r("s"),samp:r("samp"),script:r("script"),section:r("section"),select:r("select"),small:r("small"),source:r("source"),span:r("span"),strong:r("strong"),style:r("style"),sub:r("sub"),summary:r("summary"),sup:r("sup"),table:r("table"),tbody:r("tbody"),td:r("td"),textarea:r("textarea"),tfoot:r("tfoot"),th:r("th"),thead:r("thead"),time:r("time"),title:r("title"),tr:r("tr"),track:r("track"),u:r("u"),ul:r("ul"),var:r("var"),video:r("video"),wbr:r("wbr"),circle:r("circle"),clipPath:r("clipPath"),defs:r("defs"),ellipse:r("ellipse"),g:r("g"),image:r("image"),line:r("line"),linearGradient:r("linearGradient"),mask:r("mask"),path:r("path"),pattern:r("pattern"),polygon:r("polygon"),polyline:r("polyline"),radialGradient:r("radialGradient"),rect:r("rect"),stop:r("stop"),svg:r("svg"),text:r("text"),tspan:r("tspan")};e.exports=o},function(e,t,n){"use strict";var r=n(188).isValidElement,o=n(532);e.exports=o(r)},function(e,t,n){"use strict";var r=n(45),o=n(533),i=n(955),a=function(){};function s(){return null}e.exports=function(e,t){var n="function"==typeof Symbol&&Symbol.iterator,l="@@iterator";var u="<<anonymous>>",c={array:m("array"),bool:m("boolean"),func:m("function"),number:m("number"),object:m("object"),string:m("string"),symbol:m("symbol"),any:p(s),arrayOf:function(e){return p(function(t,n,r,i,a){if("function"!=typeof e)return new d("Property `"+a+"` of component `"+r+"` has invalid PropType notation inside arrayOf.");var s=t[n];if(!Array.isArray(s)){var l=_(s);return new d("Invalid "+i+" `"+a+"` of type `"+l+"` supplied to `"+r+"`, expected an array.")}for(var u=0;u<s.length;u++){var c=e(s,u,r,i,a+"["+u+"]",o);if(c instanceof Error)return c}return null})},element:function(){return p(function(t,n,r,o,i){var a=t[n];if(!e(a)){var s=_(a);return new d("Invalid "+o+" `"+i+"` of type `"+s+"` supplied to `"+r+"`, expected a single ReactElement.")}return null})}(),instanceOf:function(e){return p(function(t,n,r,o,i){if(!(t[n]instanceof e)){var a=e.name||u,s=function(e){if(!e.constructor||!e.constructor.name)return u;return e.constructor.name}(t[n]);return new d("Invalid "+o+" `"+i+"` of type `"+s+"` supplied to `"+r+"`, expected instance of `"+a+"`.")}return null})},node:function(){return p(function(e,t,n,r,o){if(!h(e[t]))return new d("Invalid "+r+" `"+o+"` supplied to `"+n+"`, expected a ReactNode.");return null})}(),objectOf:function(e){return p(function(t,n,r,i,a){if("function"!=typeof e)return new d("Property `"+a+"` of component `"+r+"` has invalid PropType notation inside objectOf.");var s=t[n],l=_(s);if("object"!==l)return new d("Invalid "+i+" `"+a+"` of type `"+l+"` supplied to `"+r+"`, expected an object.");for(var u in s)if(s.hasOwnProperty(u)){var c=e(s,u,r,i,a+"."+u,o);if(c instanceof Error)return c}return null})},oneOf:function(e){if(!Array.isArray(e))return s;return p(function(t,n,r,o,i){for(var a=t[n],s=0;s<e.length;s++)if(f(a,e[s]))return null;var l=JSON.stringify(e);return new d("Invalid "+o+" `"+i+"` of value `"+a+"` supplied to `"+r+"`, expected one of "+l+".")})},oneOfType:function(e){if(!Array.isArray(e))return s;for(var t=0;t<e.length;t++){var n=e[t];if("function"!=typeof n)return a("Invalid argument supplied to oneOfType. Expected an array of check functions, but received "+v(n)+" at index "+t+"."),s}return p(function(t,n,r,i,a){for(var s=0;s<e.length;s++){var l=e[s];if(null==l(t,n,r,i,a,o))return null}return new d("Invalid "+i+" `"+a+"` supplied to `"+r+"`.")})},shape:function(e){return p(function(t,n,r,i,a){var s=t[n],l=_(s);if("object"!==l)return new d("Invalid "+i+" `"+a+"` of type `"+l+"` supplied to `"+r+"`, expected `object`.");for(var u in e){var c=e[u];if(c){var f=c(s,u,r,i,a+"."+u,o);if(f)return f}}return null})},exact:function(e){return p(function(t,n,i,a,s){var l=t[n],u=_(l);if("object"!==u)return new d("Invalid "+a+" `"+s+"` of type `"+u+"` supplied to `"+i+"`, expected `object`.");var c=r({},t[n],e);for(var f in c){var p=e[f];if(!p)return new d("Invalid "+a+" `"+s+"` key `"+f+"` supplied to `"+i+"`.\nBad object: "+JSON.stringify(t[n],null," ")+"\nValid keys: "+JSON.stringify(Object.keys(e),null," "));var m=p(l,f,i,a,s+"."+f,o);if(m)return m}return null})}};function f(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}function d(e){this.message=e,this.stack=""}function p(e){function n(n,r,i,a,s,l,c){if((a=a||u,l=l||i,c!==o)&&t){var f=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw f.name="Invariant Violation",f}return null==r[i]?n?null===r[i]?new d("The "+s+" `"+l+"` is marked as required in `"+a+"`, but its value is `null`."):new d("The "+s+" `"+l+"` is marked as required in `"+a+"`, but its value is `undefined`."):null:e(r,i,a,s,l)}var r=n.bind(null,!1);return r.isRequired=n.bind(null,!0),r}function m(e){return p(function(t,n,r,o,i,a){var s=t[n];return _(s)!==e?new d("Invalid "+o+" `"+i+"` of type `"+g(s)+"` supplied to `"+r+"`, expected `"+e+"`."):null})}function h(t){switch(typeof t){case"number":case"string":case"undefined":return!0;case"boolean":return!t;case"object":if(Array.isArray(t))return t.every(h);if(null===t||e(t))return!0;var r=function(e){var t=e&&(n&&e[n]||e[l]);if("function"==typeof t)return t}(t);if(!r)return!1;var o,i=r.call(t);if(r!==t.entries){for(;!(o=i.next()).done;)if(!h(o.value))return!1}else for(;!(o=i.next()).done;){var a=o.value;if(a&&!h(a[1]))return!1}return!0;default:return!1}}function _(e){var t=typeof e;return Array.isArray(e)?"array":e instanceof RegExp?"object":function(e,t){return"symbol"===e||"Symbol"===t["@@toStringTag"]||"function"==typeof Symbol&&t instanceof Symbol}(t,e)?"symbol":t}function g(e){if(void 0===e||null===e)return""+e;var t=_(e);if("object"===t){if(e instanceof Date)return"date";if(e instanceof RegExp)return"regexp"}return t}function v(e){var t=g(e);switch(t){case"array":case"object":return"an "+t;case"boolean":case"date":case"regexp":return"a "+t;default:return t}}return d.prototype=Error.prototype,c.checkPropTypes=i,c.PropTypes=c,c}},function(e,t,n){"use strict";e.exports=function(e,t,n,r,o){}},function(e,t,n){"use strict";e.exports="15.6.2"},function(e,t,n){"use strict";var r=n(528).Component,o=n(188).isValidElement,i=n(529),a=n(958);e.exports=a(r,o,i)},function(e,t,n){"use strict";var r=n(45),o=n(222),i=n(23),a="mixins";e.exports=function(e,t,n){var s=[],l={mixins:"DEFINE_MANY",statics:"DEFINE_MANY",propTypes:"DEFINE_MANY",contextTypes:"DEFINE_MANY",childContextTypes:"DEFINE_MANY",getDefaultProps:"DEFINE_MANY_MERGED",getInitialState:"DEFINE_MANY_MERGED",getChildContext:"DEFINE_MANY_MERGED",render:"DEFINE_ONCE",componentWillMount:"DEFINE_MANY",componentDidMount:"DEFINE_MANY",componentWillReceiveProps:"DEFINE_MANY",shouldComponentUpdate:"DEFINE_ONCE",componentWillUpdate:"DEFINE_MANY",componentDidUpdate:"DEFINE_MANY",componentWillUnmount:"DEFINE_MANY",updateComponent:"OVERRIDE_BASE"},u={displayName:function(e,t){e.displayName=t},mixins:function(e,t){if(t)for(var n=0;n<t.length;n++)f(e,t[n])},childContextTypes:function(e,t){e.childContextTypes=r({},e.childContextTypes,t)},contextTypes:function(e,t){e.contextTypes=r({},e.contextTypes,t)},getDefaultProps:function(e,t){e.getDefaultProps?e.getDefaultProps=p(e.getDefaultProps,t):e.getDefaultProps=t},propTypes:function(e,t){e.propTypes=r({},e.propTypes,t)},statics:function(e,t){!function(e,t){if(t)for(var n in t){var r=t[n];if(t.hasOwnProperty(n)){var o=n in u;i(!o,'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.',n);var a=n in e;i(!a,"ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",n),e[n]=r}}}(e,t)},autobind:function(){}};function c(e,t){var n=l.hasOwnProperty(t)?l[t]:null;v.hasOwnProperty(t)&&i("OVERRIDE_BASE"===n,"ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.",t),e&&i("DEFINE_MANY"===n||"DEFINE_MANY_MERGED"===n,"ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",t)}function f(e,n){if(n){i("function"!=typeof n,"ReactClass: You're attempting to use a component class or function as a mixin. Instead, just use a regular object."),i(!t(n),"ReactClass: You're attempting to use a component as a mixin. Instead, just use a regular object.");var r=e.prototype,o=r.__reactAutoBindPairs;for(var s in n.hasOwnProperty(a)&&u.mixins(e,n.mixins),n)if(n.hasOwnProperty(s)&&s!==a){var f=n[s],d=r.hasOwnProperty(s);if(c(d,s),u.hasOwnProperty(s))u[s](e,f);else{var h=l.hasOwnProperty(s);if("function"!=typeof f||h||d||!1===n.autobind)if(d){var _=l[s];i(h&&("DEFINE_MANY_MERGED"===_||"DEFINE_MANY"===_),"ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.",_,s),"DEFINE_MANY_MERGED"===_?r[s]=p(r[s],f):"DEFINE_MANY"===_&&(r[s]=m(r[s],f))}else r[s]=f;else o.push(s,f),r[s]=f}}}}function d(e,t){for(var n in i(e&&t&&"object"==typeof e&&"object"==typeof t,"mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects."),t)t.hasOwnProperty(n)&&(i(void 0===e[n],"mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.",n),e[n]=t[n]);return e}function p(e,t){return function(){var n=e.apply(this,arguments),r=t.apply(this,arguments);if(null==n)return r;if(null==r)return n;var o={};return d(o,n),d(o,r),o}}function m(e,t){return function(){e.apply(this,arguments),t.apply(this,arguments)}}function h(e,t){return t.bind(e)}var _={componentDidMount:function(){this.__isMounted=!0}},g={componentWillUnmount:function(){this.__isMounted=!1}},v={replaceState:function(e,t){this.updater.enqueueReplaceState(this,e,t)},isMounted:function(){return!!this.__isMounted}},y=function(){};return r(y.prototype,e.prototype,v),function(e){var t=function(e){return e}(function(e,r,a){this.__reactAutoBindPairs.length&&function(e){for(var t=e.__reactAutoBindPairs,n=0;n<t.length;n+=2){var r=t[n],o=t[n+1];e[r]=h(e,o)}}(this),this.props=e,this.context=r,this.refs=o,this.updater=a||n,this.state=null;var s=this.getInitialState?this.getInitialState():null;i("object"==typeof s&&!Array.isArray(s),"%s.getInitialState(): must return an object or null",t.displayName||"ReactCompositeComponent"),this.state=s});for(var r in t.prototype=new y,t.prototype.constructor=t,t.prototype.__reactAutoBindPairs=[],s.forEach(f.bind(null,t)),f(t,_),f(t,e),f(t,g),t.getDefaultProps&&(t.defaultProps=t.getDefaultProps()),i(t.prototype.render,"createClass(...): Class specification must implement a `render` method."),l)t.prototype[r]||(t.prototype[r]=null);return t}}},function(e,t,n){"use strict";var r=n(221),o=n(188);n(23);e.exports=function(e){return o.isValidElement(e)||r("143"),e}},function(module,exports,__webpack_require__){"use strict";var _preventExtensions=__webpack_require__(961),_preventExtensions2=_interopRequireDefault(_preventExtensions),_freeze=__webpack_require__(534),_freeze2=_interopRequireDefault(_freeze),_seal=__webpack_require__(966),_seal2=_interopRequireDefault(_seal),_defineProperties=__webpack_require__(969),_defineProperties2=_interopRequireDefault(_defineProperties),_defineProperty=__webpack_require__(223),_defineProperty2=_interopRequireDefault(_defineProperty),_getOwnPropertyDescriptor=__webpack_require__(535),_getOwnPropertyDescriptor2=_interopRequireDefault(_getOwnPropertyDescriptor),_isExtensible=__webpack_require__(974),_isExtensible2=_interopRequireDefault(_isExtensible),_isFrozen=__webpack_require__(977),_isFrozen2=_interopRequireDefault(_isFrozen),_isSealed=__webpack_require__(980),_isSealed2=_interopRequireDefault(_isSealed),_getOwnPropertyNames=__webpack_require__(983),_getOwnPropertyNames2=_interopRequireDefault(_getOwnPropertyNames),_getPrototypeOf=__webpack_require__(11),_getPrototypeOf2=_interopRequireDefault(_getPrototypeOf),_create=__webpack_require__(67),_create2=_interopRequireDefault(_create),_keys=__webpack_require__(14),_keys2=_interopRequireDefault(_keys),_typeof2=__webpack_require__(64),_typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}} -/*! modernizr 3.3.1 (Custom Build) | MIT * - * http://modernizr.com/download/?-displaytable-es5-flexbox-indexeddb-localstorage-objectfit-webworkers-setclasses-cssclassprefix:modernizr_ !*/!function(window,document,undefined){function is(e,t){return(void 0===e?"undefined":(0,_typeof3.default)(e))===t}function testRunner(){var e,t,n,r,o,i;for(var a in tests)if(tests.hasOwnProperty(a)){if(e=[],(t=tests[a]).name&&(e.push(t.name.toLowerCase()),t.options&&t.options.aliases&&t.options.aliases.length))for(n=0;n<t.options.aliases.length;n++)e.push(t.options.aliases[n].toLowerCase());for(r=is(t.fn,"function")?t.fn():t.fn,o=0;o<e.length;o++)1===(i=e[o].split(".")).length?Modernizr[i[0]]=r:(!Modernizr[i[0]]||Modernizr[i[0]]instanceof Boolean||(Modernizr[i[0]]=new Boolean(Modernizr[i[0]])),Modernizr[i[0]][i[1]]=r),classes.push((r?"":"no-")+i.join("-"))}}function setClasses(e){var t=docElement.className,n=Modernizr._config.classPrefix||"";if(isSVG&&(t=t.baseVal),Modernizr._config.enableJSClass){var r=new RegExp("(^|\\s)"+n+"no-js(\\s|$)");t=t.replace(r,"$1"+n+"js$2")}Modernizr._config.enableClasses&&(t+=" "+n+e.join(" "+n),isSVG?docElement.className.baseVal=t:docElement.className=t)}function createElement(){return"function"!=typeof document.createElement?document.createElement(arguments[0]):isSVG?document.createElementNS.call(document,"http://www.w3.org/2000/svg",arguments[0]):document.createElement.apply(document,arguments)}function getBody(){var e=document.body;return e||((e=createElement(isSVG?"svg":"body")).fake=!0),e}function injectElementWithStyles(e,t,n,r){var o,i,a,s,l="modernizr",u=createElement("div"),c=getBody();if(parseInt(n,10))for(;n--;)(a=createElement("div")).id=r?r[n]:l+(n+1),u.appendChild(a);return(o=createElement("style")).type="text/css",o.id="s"+l,(c.fake?c:u).appendChild(o),c.appendChild(u),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e)),u.id=l,c.fake&&(c.style.background="",c.style.overflow="hidden",s=docElement.style.overflow,docElement.style.overflow="hidden",docElement.appendChild(c)),i=t(u,e),c.fake?(c.parentNode.removeChild(c),docElement.style.overflow=s,docElement.offsetHeight):u.parentNode.removeChild(u),!!i}function contains(e,t){return!!~(""+e).indexOf(t)}function domToCSS(e){return e.replace(/([A-Z])/g,function(e,t){return"-"+t.toLowerCase()}).replace(/^ms-/,"-ms-")}function nativeTestProps(e,t){var n=e.length;if("CSS"in window&&"supports"in window.CSS){for(;n--;)if(window.CSS.supports(domToCSS(e[n]),t))return!0;return!1}if("CSSSupportsRule"in window){for(var r=[];n--;)r.push("("+domToCSS(e[n])+":"+t+")");return injectElementWithStyles("@supports ("+(r=r.join(" or "))+") { #modernizr { position: absolute; } }",function(e){return"absolute"==getComputedStyle(e,null).position})}return undefined}function cssToDOM(e){return e.replace(/([a-z])-([a-z])/g,function(e,t,n){return t+n.toUpperCase()}).replace(/^-/,"")}function testProps(e,t,n,r){function o(){a&&(delete mStyle.style,delete mStyle.modElem)}if(r=!is(r,"undefined")&&r,!is(n,"undefined")){var i=nativeTestProps(e,n);if(!is(i,"undefined"))return i}for(var a,s,l,u,c,f=["modernizr","tspan"];!mStyle.style;)a=!0,mStyle.modElem=createElement(f.shift()),mStyle.style=mStyle.modElem.style;for(l=e.length,s=0;l>s;s++)if(u=e[s],c=mStyle.style[u],contains(u,"-")&&(u=cssToDOM(u)),mStyle.style[u]!==undefined){if(r||is(n,"undefined"))return o(),"pfx"!=t||u;try{mStyle.style[u]=n}catch(e){}if(mStyle.style[u]!=c)return o(),"pfx"!=t||u}return o(),!1}function fnBind(e,t){return function(){return e.apply(t,arguments)}}function testDOMProps(e,t,n){var r;for(var o in e)if(e[o]in t)return!1===n?e[o]:is(r=t[e[o]],"function")?fnBind(r,n||t):r;return!1}function testPropsAll(e,t,n,r,o){var i=e.charAt(0).toUpperCase()+e.slice(1),a=(e+" "+cssomPrefixes.join(i+" ")+i).split(" ");return is(t,"string")||is(t,"undefined")?testProps(a,t,r,o):testDOMProps(a=(e+" "+domPrefixes.join(i+" ")+i).split(" "),t,n)}function testAllProps(e,t,n){return testPropsAll(e,undefined,undefined,t,n)}var tests=[],ModernizrProto={_version:"3.3.1",_config:{classPrefix:"modernizr_",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var n=this;setTimeout(function(){t(n[e])},0)},addTest:function(e,t,n){tests.push({name:e,fn:t,options:n})},addAsyncTest:function(e){tests.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=ModernizrProto,Modernizr=new Modernizr;var classes=[],docElement=document.documentElement,isSVG="svg"===docElement.nodeName.toLowerCase(),testStyles=ModernizrProto.testStyles=injectElementWithStyles;testStyles("#modernizr{display: table; direction: ltr}#modernizr div{display: table-cell; padding: 10px}",function(e){var t,n=e.childNodes;t=n[0].offsetLeft<n[1].offsetLeft,Modernizr.addTest("displaytable",t,{aliases:["display-table"]})},2);var omPrefixes="Moz O ms Webkit",cssomPrefixes=ModernizrProto._config.usePrefixes?omPrefixes.split(" "):[];ModernizrProto._cssomPrefixes=cssomPrefixes;var modElem={elem:createElement("modernizr")};Modernizr._q.push(function(){delete modElem.elem});var mStyle={style:modElem.elem.style};Modernizr._q.unshift(function(){delete mStyle.style});var domPrefixes=ModernizrProto._config.usePrefixes?omPrefixes.toLowerCase().split(" "):[];ModernizrProto._domPrefixes=domPrefixes,ModernizrProto.testAllProps=testPropsAll,ModernizrProto.testAllProps=testAllProps,Modernizr.addTest("flexbox",testAllProps("flexBasis","1px",!0)),Modernizr.addTest("es5array",function(){return!!(Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray)}),Modernizr.addTest("es5date",function(){var e=!1;try{e=!!Date.parse("2013-04-12T06:06:37.307Z")}catch(e){}return!!(Date.now&&Date.prototype&&Date.prototype.toISOString&&Date.prototype.toJSON&&e)}),Modernizr.addTest("es5function",function(){return!(!Function.prototype||!Function.prototype.bind)}),Modernizr.addTest("es5object",function(){return!!(_keys2.default&&_create2.default&&_getPrototypeOf2.default&&_getOwnPropertyNames2.default&&_isSealed2.default&&_isFrozen2.default&&_isExtensible2.default&&_getOwnPropertyDescriptor2.default&&_defineProperty2.default&&_defineProperties2.default&&_seal2.default&&_freeze2.default&&_preventExtensions2.default)}),Modernizr.addTest("strictmode",function(){return!this}()),Modernizr.addTest("es5string",function(){return!(!String.prototype||!String.prototype.trim)}),Modernizr.addTest("json","JSON"in window&&"parse"in JSON&&"stringify"in JSON),Modernizr.addTest("es5syntax",function(){var value,obj,stringAccess,getter,setter,reservedWords,zeroWidthChars;try{return stringAccess=eval('"foobar"[3] === "b"'),getter=eval("({ get x(){ return 1 } }).x === 1"),eval("({ set x(v){ value = v; } }).x = 1"),setter=1===value,eval("obj = ({ if: 1 })"),reservedWords=1===obj.if,zeroWidthChars=eval("_‌‍ = true"),stringAccess&&getter&&setter&&reservedWords&&zeroWidthChars}catch(e){return!1}}),Modernizr.addTest("es5undefined",function(){var e,t;try{t=window.undefined,window.undefined=12345,e=void 0===window.undefined,window.undefined=t}catch(e){return!1}return e}),Modernizr.addTest("es5",function(){return!!(Modernizr.es5array&&Modernizr.es5date&&Modernizr.es5function&&Modernizr.es5object&&Modernizr.strictmode&&Modernizr.es5string&&Modernizr.json&&Modernizr.es5syntax&&Modernizr.es5undefined)});var atRule=function(e){var t,n=prefixes.length,r=window.CSSRule;if(void 0===r)return undefined;if(!e)return!1;if((t=(e=e.replace(/^@/,"")).replace(/-/g,"_").toUpperCase()+"_RULE")in r)return"@"+e;for(var o=0;n>o;o++){var i=prefixes[o];if(i.toUpperCase()+"_"+t in r)return"@-"+i.toLowerCase()+"-"+e}return!1};ModernizrProto.atRule=atRule;var prefixed=ModernizrProto.prefixed=function(e,t,n){return 0===e.indexOf("@")?atRule(e):(-1!=e.indexOf("-")&&(e=cssToDOM(e)),t?testPropsAll(e,t,n):testPropsAll(e,"pfx"))},indexeddb;Modernizr.addTest("objectfit",!!prefixed("objectFit"),{aliases:["object-fit"]}),Modernizr.addTest("localstorage",function(){var e="modernizr";try{return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch(e){return!1}}),Modernizr.addTest("webworkers","Worker"in window);try{indexeddb=prefixed("indexedDB",window)}catch(e){}Modernizr.addTest("indexeddb",!!indexeddb),indexeddb&&Modernizr.addTest("indexeddb.deletedatabase","deleteDatabase"in indexeddb),testRunner(),setClasses(classes),delete ModernizrProto.addTest,delete ModernizrProto.addAsyncTest;for(var i=0;i<Modernizr._q.length;i++)Modernizr._q[i]();window.Modernizr=Modernizr}(window,document)},function(e,t,n){e.exports={default:n(962),__esModule:!0}},function(e,t,n){n(963),e.exports=n(18).Object.preventExtensions},function(e,t,n){var r=n(35),o=n(137).onFreeze;n(68)("preventExtensions",function(e){return function(t){return e&&r(t)?e(o(t)):t}})},function(e,t,n){n(965),e.exports=n(18).Object.freeze},function(e,t,n){var r=n(35),o=n(137).onFreeze;n(68)("freeze",function(e){return function(t){return e&&r(t)?e(o(t)):t}})},function(e,t,n){e.exports={default:n(967),__esModule:!0}},function(e,t,n){n(968),e.exports=n(18).Object.seal},function(e,t,n){var r=n(35),o=n(137).onFreeze;n(68)("seal",function(e){return function(t){return e&&r(t)?e(o(t)):t}})},function(e,t,n){e.exports={default:n(970),__esModule:!0}},function(e,t,n){n(971);var r=n(18).Object;e.exports=function(e,t){return r.defineProperties(e,t)}},function(e,t,n){var r=n(26);r(r.S+r.F*!n(44),"Object",{defineProperties:n(271)})},function(e,t,n){n(973);var r=n(18).Object;e.exports=function(e,t){return r.getOwnPropertyDescriptor(e,t)}},function(e,t,n){var r=n(59),o=n(224).f;n(68)("getOwnPropertyDescriptor",function(){return function(e,t){return o(r(e),t)}})},function(e,t,n){e.exports={default:n(975),__esModule:!0}},function(e,t,n){n(976),e.exports=n(18).Object.isExtensible},function(e,t,n){var r=n(35);n(68)("isExtensible",function(e){return function(t){return!!r(t)&&(!e||e(t))}})},function(e,t,n){e.exports={default:n(978),__esModule:!0}},function(e,t,n){n(979),e.exports=n(18).Object.isFrozen},function(e,t,n){var r=n(35);n(68)("isFrozen",function(e){return function(t){return!r(t)||!!e&&e(t)}})},function(e,t,n){e.exports={default:n(981),__esModule:!0}},function(e,t,n){n(982),e.exports=n(18).Object.isSealed},function(e,t,n){var r=n(35);n(68)("isSealed",function(e){return function(t){return!r(t)||!!e&&e(t)}})},function(e,t,n){e.exports={default:n(984),__esModule:!0}},function(e,t,n){n(985);var r=n(18).Object;e.exports=function(e){return r.getOwnPropertyNames(e)}},function(e,t,n){n(68)("getOwnPropertyNames",function(){return n(276).f})},function(e,t,n){n(987),e.exports=n(18).Object.getPrototypeOf},function(e,t,n){var r=n(87),o=n(215);n(68)("getPrototypeOf",function(){return function(e){return o(r(e))}})},function(e,t,n){"use strict";var r=n(53),o=n(537),i=n(561),a=n(169),s=n(98),l=n(564),u=n(1056),c=n(565),f=n(1057);n(36);o.inject();var d={findDOMNode:u,render:i.render,unmountComponentAtNode:i.unmountComponentAtNode,version:l,unstable_batchedUpdates:s.batchedUpdates,unstable_renderSubtreeIntoContainer:f};"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject&&__REACT_DEVTOOLS_GLOBAL_HOOK__.inject({ComponentTree:{getClosestInstanceFromNode:r.getClosestInstanceFromNode,getNodeFromInstance:function(e){return e._renderedComponent&&(e=c(e)),e?r.getNodeFromInstance(e):null}},Mount:i,Reconciler:a}),e.exports=d},function(e,t,n){"use strict";e.exports={Properties:{"aria-current":0,"aria-details":0,"aria-disabled":0,"aria-hidden":0,"aria-invalid":0,"aria-keyshortcuts":0,"aria-label":0,"aria-roledescription":0,"aria-autocomplete":0,"aria-checked":0,"aria-expanded":0,"aria-haspopup":0,"aria-level":0,"aria-modal":0,"aria-multiline":0,"aria-multiselectable":0,"aria-orientation":0,"aria-placeholder":0,"aria-pressed":0,"aria-readonly":0,"aria-required":0,"aria-selected":0,"aria-sort":0,"aria-valuemax":0,"aria-valuemin":0,"aria-valuenow":0,"aria-valuetext":0,"aria-atomic":0,"aria-busy":0,"aria-live":0,"aria-relevant":0,"aria-dropeffect":0,"aria-grabbed":0,"aria-activedescendant":0,"aria-colcount":0,"aria-colindex":0,"aria-colspan":0,"aria-controls":0,"aria-describedby":0,"aria-errormessage":0,"aria-flowto":0,"aria-labelledby":0,"aria-owns":0,"aria-posinset":0,"aria-rowcount":0,"aria-rowindex":0,"aria-rowspan":0,"aria-setsize":0},DOMAttributeNames:{},DOMPropertyNames:{}}},function(e,t,n){"use strict";var r=n(226),o=n(69),i=n(991),a=n(992),s=n(993),l=[9,13,27,32],u=229,c=o.canUseDOM&&"CompositionEvent"in window,f=null;o.canUseDOM&&"documentMode"in document&&(f=document.documentMode);var d=o.canUseDOM&&"TextEvent"in window&&!f&&!function(){var e=window.opera;return"object"==typeof e&&"function"==typeof e.version&&parseInt(e.version(),10)<=12}(),p=o.canUseDOM&&(!c||f&&f>8&&f<=11);var m=32,h=String.fromCharCode(m),_={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["topCompositionEnd","topKeyPress","topTextInput","topPaste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:["topBlur","topCompositionEnd","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:["topBlur","topCompositionStart","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:["topBlur","topCompositionUpdate","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]}},g=!1;function v(e,t){switch(e){case"topKeyUp":return-1!==l.indexOf(t.keyCode);case"topKeyDown":return t.keyCode!==u;case"topKeyPress":case"topMouseDown":case"topBlur":return!0;default:return!1}}function y(e){var t=e.detail;return"object"==typeof t&&"data"in t?t.data:null}var b=null;function E(e,t,n,o){var s,l;if(c?s=function(e){switch(e){case"topCompositionStart":return _.compositionStart;case"topCompositionEnd":return _.compositionEnd;case"topCompositionUpdate":return _.compositionUpdate}}(e):b?v(e,n)&&(s=_.compositionEnd):function(e,t){return"topKeyDown"===e&&t.keyCode===u}(e,n)&&(s=_.compositionStart),!s)return null;p&&(b||s!==_.compositionStart?s===_.compositionEnd&&b&&(l=b.getData()):b=i.getPooled(o));var f=a.getPooled(s,t,n,o);if(l)f.data=l;else{var d=y(n);null!==d&&(f.data=d)}return r.accumulateTwoPhaseDispatches(f),f}function C(e,t,n,o){var a;if(!(a=d?function(e,t){switch(e){case"topCompositionEnd":return y(t);case"topKeyPress":return t.which!==m?null:(g=!0,h);case"topTextInput":var n=t.data;return n===h&&g?null:n;default:return null}}(e,n):function(e,t){if(b){if("topCompositionEnd"===e||!c&&v(e,t)){var n=b.getData();return i.release(b),b=null,n}return null}switch(e){case"topPaste":return null;case"topKeyPress":return t.which&&!function(e){return(e.ctrlKey||e.altKey||e.metaKey)&&!(e.ctrlKey&&e.altKey)}(t)?String.fromCharCode(t.which):null;case"topCompositionEnd":return p?null:t.data;default:return null}}(e,n)))return null;var l=s.getPooled(_.beforeInput,t,n,o);return l.data=a,r.accumulateTwoPhaseDispatches(l),l}var S={eventTypes:_,extractEvents:function(e,t,n,r){return[E(e,t,n,r),C(e,t,n,r)]}};e.exports=S},function(e,t,n){"use strict";var r=n(45),o=n(168),i=n(540);function a(e){this._root=e,this._startText=this.getText(),this._fallbackText=null}r(a.prototype,{destructor:function(){this._root=null,this._startText=null,this._fallbackText=null},getText:function(){return"value"in this._root?this._root.value:this._root[i()]},getData:function(){if(this._fallbackText)return this._fallbackText;var e,t,n=this._startText,r=n.length,o=this.getText(),i=o.length;for(e=0;e<r&&n[e]===o[e];e++);var a=r-e;for(t=1;t<=a&&n[r-t]===o[i-t];t++);var s=t>1?1-t:void 0;return this._fallbackText=o.slice(e,s),this._fallbackText}}),o.addPoolingTo(a),e.exports=a},function(e,t,n){"use strict";var r=n(125);function o(e,t,n,o){return r.call(this,e,t,n,o)}r.augmentClass(o,{data:null}),e.exports=o},function(e,t,n){"use strict";var r=n(125);function o(e,t,n,o){return r.call(this,e,t,n,o)}r.augmentClass(o,{data:null}),e.exports=o},function(e,t,n){"use strict";var r=n(227),o=n(226),i=n(69),a=n(53),s=n(98),l=n(125),u=n(543),c=n(374),f=n(375),d=n(544),p={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:["topBlur","topChange","topClick","topFocus","topInput","topKeyDown","topKeyUp","topSelectionChange"]}};function m(e,t,n){var r=l.getPooled(p.change,e,t,n);return r.type="change",o.accumulateTwoPhaseDispatches(r),r}var h=null,_=null;var g=!1;function v(e){var t=m(_,e,c(e));s.batchedUpdates(y,t)}function y(e){r.enqueueEvents(e),r.processEventQueue(!1)}function b(){h&&(h.detachEvent("onchange",v),h=null,_=null)}function E(e,t){var n=u.updateValueIfChanged(e),r=!0===t.simulated&&I._allowSimulatedPassThrough;if(n||r)return e}function C(e,t){if("topChange"===e)return t}function S(e,t,n){"topFocus"===e?(b(),function(e,t){_=t,(h=e).attachEvent("onchange",v)}(t,n)):"topBlur"===e&&b()}i.canUseDOM&&(g=f("change")&&(!document.documentMode||document.documentMode>8));var D=!1;function w(){h&&(h.detachEvent("onpropertychange",T),h=null,_=null)}function T(e){"value"===e.propertyName&&E(_,e)&&v(e)}function x(e,t,n){"topFocus"===e?(w(),function(e,t){_=t,(h=e).attachEvent("onpropertychange",T)}(t,n)):"topBlur"===e&&w()}function R(e,t,n){if("topSelectionChange"===e||"topKeyUp"===e||"topKeyDown"===e)return E(_,n)}function k(e,t,n){if("topClick"===e)return E(t,n)}function N(e,t,n){if("topInput"===e||"topChange"===e)return E(t,n)}i.canUseDOM&&(D=f("input")&&(!document.documentMode||document.documentMode>9));var I={eventTypes:p,_allowSimulatedPassThrough:!0,_isInputEventSupported:D,extractEvents:function(e,t,n,r){var o,i,s=t?a.getNodeFromInstance(t):window;if(!function(e){var t=e.nodeName&&e.nodeName.toLowerCase();return"select"===t||"input"===t&&"file"===e.type}(s)?d(s)?D?o=N:(o=R,i=x):function(e){var t=e.nodeName;return t&&"input"===t.toLowerCase()&&("checkbox"===e.type||"radio"===e.type)}(s)&&(o=k):g?o=C:i=S,o){var l=o(e,t,n);if(l)return m(l,n,r)}i&&i(e,s,t),"topBlur"===e&&function(e,t){if(null!=e){var n=e._wrapperState||t._wrapperState;if(n&&n.controlled&&"number"===t.type){var r=""+t.value;t.getAttribute("value")!==r&&t.setAttribute("value",r)}}}(t,s)}};e.exports=I},function(e,t,n){"use strict";var r=n(996),o={};o.attachRefs=function(e,t){if(null!==t&&"object"==typeof t){var n=t.ref;null!=n&&function(e,t,n){"function"==typeof e?e(t.getPublicInstance()):r.addComponentAsRefTo(t,e,n)}(n,e,t._owner)}},o.shouldUpdateRefs=function(e,t){var n=null,r=null;null!==e&&"object"==typeof e&&(n=e.ref,r=e._owner);var o=null,i=null;return null!==t&&"object"==typeof t&&(o=t.ref,i=t._owner),n!==o||"string"==typeof o&&i!==r},o.detachRefs=function(e,t){if(null!==t&&"object"==typeof t){var n=t.ref;null!=n&&function(e,t,n){"function"==typeof e?e(null):r.removeComponentAsRefFrom(t,e,n)}(n,e,t._owner)}},e.exports=o},function(e,t,n){"use strict";var r=n(32);n(23);function o(e){return!(!e||"function"!=typeof e.attachRef||"function"!=typeof e.detachRef)}var i={addComponentAsRefTo:function(e,t,n){o(n)||r("119"),n.attachRef(t,e)},removeComponentAsRefFrom:function(e,t,n){o(n)||r("120");var i=n.getPublicInstance();i&&i.refs[t]===e.getPublicInstance()&&n.detachRef(t)}};e.exports=i},function(e,t,n){"use strict";e.exports=["ResponderEventPlugin","SimpleEventPlugin","TapEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin"]},function(e,t,n){"use strict";var r=n(226),o=n(53),i=n(280),a={mouseEnter:{registrationName:"onMouseEnter",dependencies:["topMouseOut","topMouseOver"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["topMouseOut","topMouseOver"]}},s={eventTypes:a,extractEvents:function(e,t,n,s){if("topMouseOver"===e&&(n.relatedTarget||n.fromElement))return null;if("topMouseOut"!==e&&"topMouseOver"!==e)return null;var l,u,c;if(s.window===s)l=s;else{var f=s.ownerDocument;l=f?f.defaultView||f.parentWindow:window}if("topMouseOut"===e){u=t;var d=n.relatedTarget||n.toElement;c=d?o.getClosestInstanceFromNode(d):null}else u=null,c=t;if(u===c)return null;var p=null==u?l:o.getNodeFromInstance(u),m=null==c?l:o.getNodeFromInstance(c),h=i.getPooled(a.mouseLeave,u,n,s);h.type="mouseleave",h.target=p,h.relatedTarget=m;var _=i.getPooled(a.mouseEnter,c,n,s);return _.type="mouseenter",_.target=m,_.relatedTarget=p,r.accumulateEnterLeaveDispatches(h,_,u,c),[h,_]}};e.exports=s},function(e,t,n){"use strict";var r=n(191),o=r.injection.MUST_USE_PROPERTY,i=r.injection.HAS_BOOLEAN_VALUE,a=r.injection.HAS_NUMERIC_VALUE,s=r.injection.HAS_POSITIVE_NUMERIC_VALUE,l=r.injection.HAS_OVERLOADED_BOOLEAN_VALUE,u={isCustomAttribute:RegExp.prototype.test.bind(new RegExp("^(data|aria)-["+r.ATTRIBUTE_NAME_CHAR+"]*$")),Properties:{accept:0,acceptCharset:0,accessKey:0,action:0,allowFullScreen:i,allowTransparency:0,alt:0,as:0,async:i,autoComplete:0,autoPlay:i,capture:i,cellPadding:0,cellSpacing:0,charSet:0,challenge:0,checked:o|i,cite:0,classID:0,className:0,cols:s,colSpan:0,content:0,contentEditable:0,contextMenu:0,controls:i,controlsList:0,coords:0,crossOrigin:0,data:0,dateTime:0,default:i,defer:i,dir:0,disabled:i,download:l,draggable:0,encType:0,form:0,formAction:0,formEncType:0,formMethod:0,formNoValidate:i,formTarget:0,frameBorder:0,headers:0,height:0,hidden:i,high:0,href:0,hrefLang:0,htmlFor:0,httpEquiv:0,icon:0,id:0,inputMode:0,integrity:0,is:0,keyParams:0,keyType:0,kind:0,label:0,lang:0,list:0,loop:i,low:0,manifest:0,marginHeight:0,marginWidth:0,max:0,maxLength:0,media:0,mediaGroup:0,method:0,min:0,minLength:0,multiple:o|i,muted:o|i,name:0,nonce:0,noValidate:i,open:i,optimum:0,pattern:0,placeholder:0,playsInline:i,poster:0,preload:0,profile:0,radioGroup:0,readOnly:i,referrerPolicy:0,rel:0,required:i,reversed:i,role:0,rows:s,rowSpan:a,sandbox:0,scope:0,scoped:i,scrolling:0,seamless:i,selected:o|i,shape:0,size:s,sizes:0,span:s,spellCheck:0,src:0,srcDoc:0,srcLang:0,srcSet:0,start:a,step:0,style:0,summary:0,tabIndex:0,target:0,title:0,type:0,useMap:0,value:0,width:0,wmode:0,wrap:0,about:0,datatype:0,inlist:0,prefix:0,property:0,resource:0,typeof:0,vocab:0,autoCapitalize:0,autoCorrect:0,autoSave:0,color:0,itemProp:0,itemScope:i,itemType:0,itemID:0,itemRef:0,results:0,security:0,unselectable:0},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{},DOMMutationMethods:{value:function(e,t){if(null==t)return e.removeAttribute("value");"number"!==e.type||!1===e.hasAttribute("value")?e.setAttribute("value",""+t):e.validity&&!e.validity.badInput&&e.ownerDocument.activeElement!==e&&e.setAttribute("value",""+t)}}};e.exports=u},function(e,t,n){"use strict";var r=n(377),o={processChildrenUpdates:n(1005).dangerouslyProcessChildrenUpdates,replaceNodeWithMarkup:r.dangerouslyReplaceNodeWithMarkup};e.exports=o},function(e,t,n){"use strict";var r=n(32),o=n(192),i=n(69),a=n(1002),s=n(97),l=(n(23),{dangerouslyReplaceNodeWithMarkup:function(e,t){if(i.canUseDOM||r("56"),t||r("57"),"HTML"===e.nodeName&&r("58"),"string"==typeof t){var n=a(t,s)[0];e.parentNode.replaceChild(n,e)}else o.replaceChildWithTree(e,t)}});e.exports=l},function(e,t,n){"use strict";var r=n(69),o=n(1003),i=n(1004),a=n(23),s=r.canUseDOM?document.createElement("div"):null,l=/^\s*<(\w+)/;e.exports=function(e,t){var n=s;s||a(!1);var r=function(e){var t=e.match(l);return t&&t[1].toLowerCase()}(e),u=r&&i(r);if(u){n.innerHTML=u[1]+e+u[2];for(var c=u[0];c--;)n=n.lastChild}else n.innerHTML=e;var f=n.getElementsByTagName("script");f.length&&(t||a(!1),o(f).forEach(t));for(var d=Array.from(n.childNodes);n.lastChild;)n.removeChild(n.lastChild);return d}},function(e,t,n){"use strict";var r=n(23);e.exports=function(e){return function(e){return!!e&&("object"==typeof e||"function"==typeof e)&&"length"in e&&!("setInterval"in e)&&"number"!=typeof e.nodeType&&(Array.isArray(e)||"callee"in e||"item"in e)}(e)?Array.isArray(e)?e.slice():function(e){var t=e.length;if((Array.isArray(e)||"object"!=typeof e&&"function"!=typeof e)&&r(!1),"number"!=typeof t&&r(!1),0===t||t-1 in e||r(!1),"function"==typeof e.callee&&r(!1),e.hasOwnProperty)try{return Array.prototype.slice.call(e)}catch(e){}for(var n=Array(t),o=0;o<t;o++)n[o]=e[o];return n}(e):[e]}},function(e,t,n){"use strict";var r=n(69),o=n(23),i=r.canUseDOM?document.createElement("div"):null,a={},s=[1,'<select multiple="true">',"</select>"],l=[1,"<table>","</table>"],u=[3,"<table><tbody><tr>","</tr></tbody></table>"],c=[1,'<svg xmlns="http://www.w3.org/2000/svg">',"</svg>"],f={"*":[1,"?<div>","</div>"],area:[1,"<map>","</map>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],legend:[1,"<fieldset>","</fieldset>"],param:[1,"<object>","</object>"],tr:[2,"<table><tbody>","</tbody></table>"],optgroup:s,option:s,caption:l,colgroup:l,tbody:l,tfoot:l,thead:l,td:u,th:u};["circle","clipPath","defs","ellipse","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","text","tspan"].forEach(function(e){f[e]=c,a[e]=!0}),e.exports=function(e){return i||o(!1),f.hasOwnProperty(e)||(e="*"),a.hasOwnProperty(e)||(i.innerHTML="*"===e?"<link />":"<"+e+"></"+e+">",a[e]=!i.firstChild),a[e]?f[e]:null}},function(e,t,n){"use strict";var r=n(377),o=n(53),i={dangerouslyProcessChildrenUpdates:function(e,t){var n=o.getNodeFromInstance(e);r.processUpdates(n,t)}};e.exports=i},function(e,t,n){"use strict";var r=n(32),o=n(45),i=n(1007),a=n(1008),s=n(192),l=n(378),u=n(191),c=n(549),f=n(227),d=n(371),p=n(283),m=n(536),h=n(53),_=n(1018),g=n(1020),v=n(550),y=n(1021),b=(n(88),n(1022)),E=n(556),C=(n(97),n(282)),S=(n(23),n(375),n(383),n(543)),D=(n(387),n(36),m),w=f.deleteListener,T=h.getNodeFromInstance,x=p.listenTo,R=d.registrationNameModules,k={string:!0,number:!0},N="__html",I={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null},O=11;function A(e,t){t&&(Y[e._tag]&&(null!=t.children||null!=t.dangerouslySetInnerHTML)&&r("137",e._tag,e._currentElement._owner?" Check the render method of "+e._currentElement._owner.getName()+".":""),null!=t.dangerouslySetInnerHTML&&(null!=t.children&&r("60"),"object"==typeof t.dangerouslySetInnerHTML&&N in t.dangerouslySetInnerHTML||r("61")),null!=t.style&&"object"!=typeof t.style&&r("62",function(e){if(e){var t=e._currentElement._owner||null;if(t){var n=t.getName();if(n)return" This DOM node was rendered by `"+n+"`."}}return""}(e)))}function M(e,t,n,r){if(!(r instanceof E)){0;var o=e._hostContainerInfo,i=o._node&&o._node.nodeType===O?o._node:o._ownerDocument;x(t,i),r.getReactMountReady().enqueue(P,{inst:e,registrationName:t,listener:n})}}function P(){f.putListener(this.inst,this.registrationName,this.listener)}function L(){_.postMountWrapper(this)}function F(){y.postMountWrapper(this)}function U(){g.postMountWrapper(this)}var j={topAbort:"abort",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topSeeked:"seeked",topSeeking:"seeking",topStalled:"stalled",topSuspend:"suspend",topTimeUpdate:"timeupdate",topVolumeChange:"volumechange",topWaiting:"waiting"};function B(){S.track(this)}function G(){this._rootNodeID||r("63");var e=T(this);switch(e||r("64"),this._tag){case"iframe":case"object":this._wrapperState.listeners=[p.trapBubbledEvent("topLoad","load",e)];break;case"video":case"audio":for(var t in this._wrapperState.listeners=[],j)j.hasOwnProperty(t)&&this._wrapperState.listeners.push(p.trapBubbledEvent(t,j[t],e));break;case"source":this._wrapperState.listeners=[p.trapBubbledEvent("topError","error",e)];break;case"img":this._wrapperState.listeners=[p.trapBubbledEvent("topError","error",e),p.trapBubbledEvent("topLoad","load",e)];break;case"form":this._wrapperState.listeners=[p.trapBubbledEvent("topReset","reset",e),p.trapBubbledEvent("topSubmit","submit",e)];break;case"input":case"select":case"textarea":this._wrapperState.listeners=[p.trapBubbledEvent("topInvalid","invalid",e)]}}function q(){v.postUpdateWrapper(this)}var V={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},H={listing:!0,pre:!0,textarea:!0},Y=o({menuitem:!0},V),z=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,W={},K={}.hasOwnProperty;function $(e,t){return e.indexOf("-")>=0||null!=t.is}var Q=1;function X(e){var t=e.type;!function(e){K.call(W,e)||(z.test(e)||r("65",e),W[e]=!0)}(t),this._currentElement=e,this._tag=t.toLowerCase(),this._namespaceURI=null,this._renderedChildren=null,this._previousStyle=null,this._previousStyleCopy=null,this._hostNode=null,this._hostParent=null,this._rootNodeID=0,this._domID=0,this._hostContainerInfo=null,this._wrapperState=null,this._topLevelWrapper=null,this._flags=0}X.displayName="ReactDOMComponent",X.Mixin={mountComponent:function(e,t,n,r){this._rootNodeID=Q++,this._domID=n._idCounter++,this._hostParent=t,this._hostContainerInfo=n;var o,a,u,f=this._currentElement.props;switch(this._tag){case"audio":case"form":case"iframe":case"img":case"link":case"object":case"source":case"video":this._wrapperState={listeners:null},e.getReactMountReady().enqueue(G,this);break;case"input":_.mountWrapper(this,f,t),f=_.getHostProps(this,f),e.getReactMountReady().enqueue(B,this),e.getReactMountReady().enqueue(G,this);break;case"option":g.mountWrapper(this,f,t),f=g.getHostProps(this,f);break;case"select":v.mountWrapper(this,f,t),f=v.getHostProps(this,f),e.getReactMountReady().enqueue(G,this);break;case"textarea":y.mountWrapper(this,f,t),f=y.getHostProps(this,f),e.getReactMountReady().enqueue(B,this),e.getReactMountReady().enqueue(G,this)}if(A(this,f),null!=t?(o=t._namespaceURI,a=t._tag):n._tag&&(o=n._namespaceURI,a=n._tag),(null==o||o===l.svg&&"foreignobject"===a)&&(o=l.html),o===l.html&&("svg"===this._tag?o=l.svg:"math"===this._tag&&(o=l.mathml)),this._namespaceURI=o,e.useCreateElement){var d,p=n._ownerDocument;if(o===l.html)if("script"===this._tag){var m=p.createElement("div"),b=this._currentElement.type;m.innerHTML="<"+b+"></"+b+">",d=m.removeChild(m.firstChild)}else d=f.is?p.createElement(this._currentElement.type,f.is):p.createElement(this._currentElement.type);else d=p.createElementNS(o,this._currentElement.type);h.precacheNode(this,d),this._flags|=D.hasCachedChildNodes,this._hostParent||c.setAttributeForRoot(d),this._updateDOMProperties(null,f,e);var E=s(d);this._createInitialChildren(e,f,r,E),u=E}else{var C=this._createOpenTagMarkupAndPutListeners(e,f),S=this._createContentMarkup(e,f,r);u=!S&&V[this._tag]?C+"/>":C+">"+S+"</"+this._currentElement.type+">"}switch(this._tag){case"input":e.getReactMountReady().enqueue(L,this),f.autoFocus&&e.getReactMountReady().enqueue(i.focusDOMComponent,this);break;case"textarea":e.getReactMountReady().enqueue(F,this),f.autoFocus&&e.getReactMountReady().enqueue(i.focusDOMComponent,this);break;case"select":case"button":f.autoFocus&&e.getReactMountReady().enqueue(i.focusDOMComponent,this);break;case"option":e.getReactMountReady().enqueue(U,this)}return u},_createOpenTagMarkupAndPutListeners:function(e,t){var n="<"+this._currentElement.type;for(var r in t)if(t.hasOwnProperty(r)){var i=t[r];if(null!=i)if(R.hasOwnProperty(r))i&&M(this,r,i,e);else{"style"===r&&(i&&(i=this._previousStyleCopy=o({},t.style)),i=a.createMarkupForStyles(i,this));var s=null;null!=this._tag&&$(this._tag,t)?I.hasOwnProperty(r)||(s=c.createMarkupForCustomAttribute(r,i)):s=c.createMarkupForProperty(r,i),s&&(n+=" "+s)}}return e.renderToStaticMarkup?n:(this._hostParent||(n+=" "+c.createMarkupForRoot()),n+=" "+c.createMarkupForID(this._domID))},_createContentMarkup:function(e,t,n){var r="",o=t.dangerouslySetInnerHTML;if(null!=o)null!=o.__html&&(r=o.__html);else{var i=k[typeof t.children]?t.children:null,a=null!=i?null:t.children;if(null!=i)r=C(i);else if(null!=a){r=this.mountChildren(a,e,n).join("")}}return H[this._tag]&&"\n"===r.charAt(0)?"\n"+r:r},_createInitialChildren:function(e,t,n,r){var o=t.dangerouslySetInnerHTML;if(null!=o)null!=o.__html&&s.queueHTML(r,o.__html);else{var i=k[typeof t.children]?t.children:null,a=null!=i?null:t.children;if(null!=i)""!==i&&s.queueText(r,i);else if(null!=a)for(var l=this.mountChildren(a,e,n),u=0;u<l.length;u++)s.queueChild(r,l[u])}},receiveComponent:function(e,t,n){var r=this._currentElement;this._currentElement=e,this.updateComponent(t,r,e,n)},updateComponent:function(e,t,n,r){var o=t.props,i=this._currentElement.props;switch(this._tag){case"input":o=_.getHostProps(this,o),i=_.getHostProps(this,i);break;case"option":o=g.getHostProps(this,o),i=g.getHostProps(this,i);break;case"select":o=v.getHostProps(this,o),i=v.getHostProps(this,i);break;case"textarea":o=y.getHostProps(this,o),i=y.getHostProps(this,i)}switch(A(this,i),this._updateDOMProperties(o,i,e),this._updateDOMChildren(o,i,e,r),this._tag){case"input":_.updateWrapper(this),S.updateValueIfChanged(this);break;case"textarea":y.updateWrapper(this);break;case"select":e.getReactMountReady().enqueue(q,this)}},_updateDOMProperties:function(e,t,n){var r,i,s;for(r in e)if(!t.hasOwnProperty(r)&&e.hasOwnProperty(r)&&null!=e[r])if("style"===r){var l=this._previousStyleCopy;for(i in l)l.hasOwnProperty(i)&&((s=s||{})[i]="");this._previousStyleCopy=null}else R.hasOwnProperty(r)?e[r]&&w(this,r):$(this._tag,e)?I.hasOwnProperty(r)||c.deleteValueForAttribute(T(this),r):(u.properties[r]||u.isCustomAttribute(r))&&c.deleteValueForProperty(T(this),r);for(r in t){var f=t[r],d="style"===r?this._previousStyleCopy:null!=e?e[r]:void 0;if(t.hasOwnProperty(r)&&f!==d&&(null!=f||null!=d))if("style"===r)if(f?f=this._previousStyleCopy=o({},f):this._previousStyleCopy=null,d){for(i in d)!d.hasOwnProperty(i)||f&&f.hasOwnProperty(i)||((s=s||{})[i]="");for(i in f)f.hasOwnProperty(i)&&d[i]!==f[i]&&((s=s||{})[i]=f[i])}else s=f;else if(R.hasOwnProperty(r))f?M(this,r,f,n):d&&w(this,r);else if($(this._tag,t))I.hasOwnProperty(r)||c.setValueForAttribute(T(this),r,f);else if(u.properties[r]||u.isCustomAttribute(r)){var p=T(this);null!=f?c.setValueForProperty(p,r,f):c.deleteValueForProperty(p,r)}}s&&a.setValueForStyles(T(this),s,this)},_updateDOMChildren:function(e,t,n,r){var o=k[typeof e.children]?e.children:null,i=k[typeof t.children]?t.children:null,a=e.dangerouslySetInnerHTML&&e.dangerouslySetInnerHTML.__html,s=t.dangerouslySetInnerHTML&&t.dangerouslySetInnerHTML.__html,l=null!=o?null:e.children,u=null!=i?null:t.children,c=null!=o||null!=a,f=null!=i||null!=s;null!=l&&null==u?this.updateChildren(null,n,r):c&&!f&&this.updateTextContent(""),null!=i?o!==i&&this.updateTextContent(""+i):null!=s?a!==s&&this.updateMarkup(""+s):null!=u&&this.updateChildren(u,n,r)},getHostNode:function(){return T(this)},unmountComponent:function(e){switch(this._tag){case"audio":case"form":case"iframe":case"img":case"link":case"object":case"source":case"video":var t=this._wrapperState.listeners;if(t)for(var n=0;n<t.length;n++)t[n].remove();break;case"input":case"textarea":S.stopTracking(this);break;case"html":case"head":case"body":r("66",this._tag)}this.unmountChildren(e),h.uncacheNode(this),f.deleteAllListeners(this),this._rootNodeID=0,this._domID=0,this._wrapperState=null},getPublicInstance:function(){return T(this)}},o(X.prototype,X.Mixin,b.Mixin),e.exports=X},function(e,t,n){"use strict";var r=n(53),o=n(547),i={focusDOMComponent:function(){o(r.getNodeFromInstance(this))}};e.exports=i},function(e,t,n){"use strict";var r=n(548),o=n(69),i=(n(88),n(1009),n(1011)),a=n(1012),s=n(1014),l=(n(36),s(function(e){return a(e)})),u=!1,c="cssFloat";if(o.canUseDOM){var f=document.createElement("div").style;try{f.font=""}catch(e){u=!0}void 0===document.documentElement.style.cssFloat&&(c="styleFloat")}var d={createMarkupForStyles:function(e,t){var n="";for(var r in e)if(e.hasOwnProperty(r)){var o=0===r.indexOf("--"),a=e[r];0,null!=a&&(n+=l(r)+":",n+=i(r,a,t,o)+";")}return n||null},setValueForStyles:function(e,t,n){var o=e.style;for(var a in t)if(t.hasOwnProperty(a)){var s=0===a.indexOf("--");0;var l=i(a,t[a],n,s);if("float"!==a&&"cssFloat"!==a||(a=c),s)o.setProperty(a,l);else if(l)o[a]=l;else{var f=u&&r.shorthandPropertyExpansions[a];if(f)for(var d in f)o[d]="";else o[a]=""}}}};e.exports=d},function(e,t,n){"use strict";var r=n(1010),o=/^-ms-/;e.exports=function(e){return r(e.replace(o,"ms-"))}},function(e,t,n){"use strict";var r=/-(.)/g;e.exports=function(e){return e.replace(r,function(e,t){return t.toUpperCase()})}},function(e,t,n){"use strict";var r=n(548),o=(n(36),r.isUnitlessNumber);e.exports=function(e,t,n,r){if(null==t||"boolean"==typeof t||""===t)return"";var i=isNaN(t);return r||i||0===t||o.hasOwnProperty(e)&&o[e]?""+t:("string"==typeof t&&(t=t.trim()),t+"px")}},function(e,t,n){"use strict";var r=n(1013),o=/^ms-/;e.exports=function(e){return r(e).replace(o,"-ms-")}},function(e,t,n){"use strict";var r=/([A-Z])/g;e.exports=function(e){return e.replace(r,"-$1").toLowerCase()}},function(e,t,n){"use strict";e.exports=function(e){var t={};return function(n){return t.hasOwnProperty(n)||(t[n]=e.call(this,n)),t[n]}}},function(e,t,n){"use strict";var r=n(282);e.exports=function(e){return'"'+r(e)+'"'}},function(e,t,n){"use strict";var r=n(227);var o={handleTopLevel:function(e,t,n,o){!function(e){r.enqueueEvents(e),r.processEventQueue(!1)}(r.extractEvents(e,t,n,o))}};e.exports=o},function(e,t,n){"use strict";var r=n(69);function o(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n["ms"+e]="MS"+t,n["O"+e]="o"+t.toLowerCase(),n}var i={animationend:o("Animation","AnimationEnd"),animationiteration:o("Animation","AnimationIteration"),animationstart:o("Animation","AnimationStart"),transitionend:o("Transition","TransitionEnd")},a={},s={};r.canUseDOM&&(s=document.createElement("div").style,"AnimationEvent"in window||(delete i.animationend.animation,delete i.animationiteration.animation,delete i.animationstart.animation),"TransitionEvent"in window||delete i.transitionend.transition),e.exports=function(e){if(a[e])return a[e];if(!i[e])return e;var t=i[e];for(var n in t)if(t.hasOwnProperty(n)&&n in s)return a[e]=t[n];return""}},function(e,t,n){"use strict";var r=n(32),o=n(45),i=n(549),a=n(380),s=n(53),l=n(98);n(23),n(36);function u(){this._rootNodeID&&c.updateWrapper(this)}var c={getHostProps:function(e,t){var n=a.getValue(t),r=a.getChecked(t);return o({type:void 0,step:void 0,min:void 0,max:void 0},t,{defaultChecked:void 0,defaultValue:void 0,value:null!=n?n:e._wrapperState.initialValue,checked:null!=r?r:e._wrapperState.initialChecked,onChange:e._wrapperState.onChange})},mountWrapper:function(e,t){var n=t.defaultValue;e._wrapperState={initialChecked:null!=t.checked?t.checked:t.defaultChecked,initialValue:null!=t.value?t.value:n,listeners:null,onChange:function(e){var t=this._currentElement.props,n=a.executeOnChange(t,e);l.asap(u,this);var o=t.name;if("radio"===t.type&&null!=o){for(var i=s.getNodeFromInstance(this),c=i;c.parentNode;)c=c.parentNode;for(var f=c.querySelectorAll("input[name="+JSON.stringify(""+o)+'][type="radio"]'),d=0;d<f.length;d++){var p=f[d];if(p!==i&&p.form===i.form){var m=s.getInstanceFromNode(p);m||r("90"),l.asap(u,m)}}}return n}.bind(e),controlled:function(e){return"checkbox"===e.type||"radio"===e.type?null!=e.checked:null!=e.value}(t)}},updateWrapper:function(e){var t=e._currentElement.props,n=t.checked;null!=n&&i.setValueForProperty(s.getNodeFromInstance(e),"checked",n||!1);var r=s.getNodeFromInstance(e),o=a.getValue(t);if(null!=o)if(0===o&&""===r.value)r.value="0";else if("number"===t.type){var l=parseFloat(r.value,10)||0;(o!=l||o==l&&r.value!=o)&&(r.value=""+o)}else r.value!==""+o&&(r.value=""+o);else null==t.value&&null!=t.defaultValue&&r.defaultValue!==""+t.defaultValue&&(r.defaultValue=""+t.defaultValue),null==t.checked&&null!=t.defaultChecked&&(r.defaultChecked=!!t.defaultChecked)},postMountWrapper:function(e){var t=e._currentElement.props,n=s.getNodeFromInstance(e);switch(t.type){case"submit":case"reset":break;case"color":case"date":case"datetime":case"datetime-local":case"month":case"time":case"week":n.value="",n.value=n.defaultValue;break;default:n.value=n.value}var r=n.name;""!==r&&(n.name=""),n.defaultChecked=!n.defaultChecked,n.defaultChecked=!n.defaultChecked,""!==r&&(n.name=r)}};e.exports=c},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";var r=n(45),o=n(165),i=n(53),a=n(550),s=(n(36),!1);function l(e){var t="";return o.Children.forEach(e,function(e){null!=e&&("string"==typeof e||"number"==typeof e?t+=e:s||(s=!0))}),t}var u={mountWrapper:function(e,t,n){var r=null;if(null!=n){var o=n;"optgroup"===o._tag&&(o=o._hostParent),null!=o&&"select"===o._tag&&(r=a.getSelectValueContext(o))}var i,s=null;if(null!=r)if(i=null!=t.value?t.value+"":l(t.children),s=!1,Array.isArray(r)){for(var u=0;u<r.length;u++)if(""+r[u]===i){s=!0;break}}else s=""+r===i;e._wrapperState={selected:s}},postMountWrapper:function(e){var t=e._currentElement.props;null!=t.value&&i.getNodeFromInstance(e).setAttribute("value",t.value)},getHostProps:function(e,t){var n=r({selected:void 0,children:void 0},t);null!=e._wrapperState.selected&&(n.selected=e._wrapperState.selected);var o=l(t.children);return o&&(n.children=o),n}};e.exports=u},function(e,t,n){"use strict";var r=n(32),o=n(45),i=n(380),a=n(53),s=n(98);n(23),n(36);function l(){this._rootNodeID&&u.updateWrapper(this)}var u={getHostProps:function(e,t){return null!=t.dangerouslySetInnerHTML&&r("91"),o({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue,onChange:e._wrapperState.onChange})},mountWrapper:function(e,t){var n=i.getValue(t),o=n;if(null==n){var a=t.defaultValue,u=t.children;null!=u&&(null!=a&&r("92"),Array.isArray(u)&&(u.length<=1||r("93"),u=u[0]),a=""+u),null==a&&(a=""),o=a}e._wrapperState={initialValue:""+o,listeners:null,onChange:function(e){var t=this._currentElement.props,n=i.executeOnChange(t,e);return s.asap(l,this),n}.bind(e)}},updateWrapper:function(e){var t=e._currentElement.props,n=a.getNodeFromInstance(e),r=i.getValue(t);if(null!=r){var o=""+r;o!==n.value&&(n.value=o),null==t.defaultValue&&(n.defaultValue=o)}null!=t.defaultValue&&(n.defaultValue=t.defaultValue)},postMountWrapper:function(e){var t=a.getNodeFromInstance(e),n=t.textContent;n===e._wrapperState.initialValue&&(t.value=n)}};e.exports=u},function(e,t,n){"use strict";var r=n(32),o=n(381),i=(n(229),n(88),n(123),n(169)),a=n(1023),s=(n(97),n(1028));n(23);function l(e,t){return t&&(e=e||[]).push(t),e}function u(e,t){o.processChildrenUpdates(e,t)}var c={Mixin:{_reconcilerInstantiateChildren:function(e,t,n){return a.instantiateChildren(e,t,n)},_reconcilerUpdateChildren:function(e,t,n,r,o,i){var l;return l=s(t,0),a.updateChildren(e,l,n,r,o,this,this._hostContainerInfo,i,0),l},mountChildren:function(e,t,n){var r=this._reconcilerInstantiateChildren(e,t,n);this._renderedChildren=r;var o=[],a=0;for(var s in r)if(r.hasOwnProperty(s)){var l=r[s];0;var u=i.mountComponent(l,t,this,this._hostContainerInfo,n,0);l._mountIndex=a++,o.push(u)}return o},updateTextContent:function(e){var t=this._renderedChildren;for(var n in a.unmountChildren(t,!1),t)t.hasOwnProperty(n)&&r("118");u(this,[function(e){return{type:"TEXT_CONTENT",content:e,fromIndex:null,fromNode:null,toIndex:null,afterNode:null}}(e)])},updateMarkup:function(e){var t=this._renderedChildren;for(var n in a.unmountChildren(t,!1),t)t.hasOwnProperty(n)&&r("118");u(this,[function(e){return{type:"SET_MARKUP",content:e,fromIndex:null,fromNode:null,toIndex:null,afterNode:null}}(e)])},updateChildren:function(e,t,n){this._updateChildren(e,t,n)},_updateChildren:function(e,t,n){var r=this._renderedChildren,o={},a=[],s=this._reconcilerUpdateChildren(r,e,a,o,t,n);if(s||r){var c,f=null,d=0,p=0,m=0,h=null;for(c in s)if(s.hasOwnProperty(c)){var _=r&&r[c],g=s[c];_===g?(f=l(f,this.moveChild(_,h,d,p)),p=Math.max(_._mountIndex,p),_._mountIndex=d):(_&&(p=Math.max(_._mountIndex,p)),f=l(f,this._mountChildAtIndex(g,a[m],h,d,t,n)),m++),d++,h=i.getHostNode(g)}for(c in o)o.hasOwnProperty(c)&&(f=l(f,this._unmountChild(r[c],o[c])));f&&u(this,f),this._renderedChildren=s}},unmountChildren:function(e){var t=this._renderedChildren;a.unmountChildren(t,e),this._renderedChildren=null},moveChild:function(e,t,n,r){if(e._mountIndex<r)return function(e,t,n){return{type:"MOVE_EXISTING",content:null,fromIndex:e._mountIndex,fromNode:i.getHostNode(e),toIndex:n,afterNode:t}}(e,t,n)},createChild:function(e,t,n){return function(e,t,n){return{type:"INSERT_MARKUP",content:e,fromIndex:null,fromNode:null,toIndex:n,afterNode:t}}(n,t,e._mountIndex)},removeChild:function(e,t){return function(e,t){return{type:"REMOVE_NODE",content:null,fromIndex:e._mountIndex,fromNode:t,toIndex:null,afterNode:null}}(e,t)},_mountChildAtIndex:function(e,t,n,r,o,i){return e._mountIndex=r,this.createChild(e,n,t)},_unmountChild:function(e,t){var n=this.removeChild(e,t);return e._mountIndex=null,n}}};e.exports=c},function(e,t,n){"use strict";(function(t){var r=n(169),o=n(382),i=(n(385),n(384)),a=n(554);n(36);function s(e,t,n,r){var i=void 0===e[n];null!=t&&i&&(e[n]=o(t,!0))}void 0!==t&&Object({NODE_ENV:"production"});var l={instantiateChildren:function(e,t,n,r){if(null==e)return null;var o={};return a(e,s,o),o},updateChildren:function(e,t,n,a,s,l,u,c,f){if(t||e){var d,p;for(d in t)if(t.hasOwnProperty(d)){var m=(p=e&&e[d])&&p._currentElement,h=t[d];if(null!=p&&i(m,h))r.receiveComponent(p,h,s,c),t[d]=p;else{p&&(a[d]=r.getHostNode(p),r.unmountComponent(p,!1));var _=o(h,!0);t[d]=_;var g=r.mountComponent(_,s,l,u,c,f);n.push(g)}}for(d in e)!e.hasOwnProperty(d)||t&&t.hasOwnProperty(d)||(p=e[d],a[d]=r.getHostNode(p),r.unmountComponent(p,!1))}},unmountChildren:function(e,t){for(var n in e)if(e.hasOwnProperty(n)){var o=e[n];r.unmountComponent(o,t)}}};e.exports=l}).call(this,n(54))},function(e,t,n){"use strict";var r=n(32),o=n(45),i=n(165),a=n(381),s=n(123),l=n(373),u=n(229),c=(n(88),n(551)),f=n(169),d=n(222),p=(n(23),n(383)),m=n(384),h=(n(36),0),_=1,g=2;function v(e){}function y(e,t){0}v.prototype.render=function(){var e=u.get(this)._currentElement.type,t=e(this.props,this.context,this.updater);return y(e,t),t};var b=1,E={construct:function(e){this._currentElement=e,this._rootNodeID=0,this._compositeType=null,this._instance=null,this._hostParent=null,this._hostContainerInfo=null,this._updateBatchNumber=null,this._pendingElement=null,this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._renderedNodeType=null,this._renderedComponent=null,this._context=null,this._mountOrder=0,this._topLevelWrapper=null,this._pendingCallbacks=null,this._calledComponentWillUnmount=!1},mountComponent:function(e,t,n,o){this._context=o,this._mountOrder=b++,this._hostParent=t,this._hostContainerInfo=n;var a,s=this._currentElement.props,l=this._processContext(o),c=this._currentElement.type,f=e.getUpdateQueue(),p=function(e){return!(!e.prototype||!e.prototype.isReactComponent)}(c),m=this._constructComponent(p,s,l,f);p||null!=m&&null!=m.render?!function(e){return!(!e.prototype||!e.prototype.isPureReactComponent)}(c)?this._compositeType=h:this._compositeType=_:(a=m,y(),null===m||!1===m||i.isValidElement(m)||r("105",c.displayName||c.name||"Component"),m=new v(c),this._compositeType=g),m.props=s,m.context=l,m.refs=d,m.updater=f,this._instance=m,u.set(m,this);var E,C=m.state;return void 0===C&&(m.state=C=null),("object"!=typeof C||Array.isArray(C))&&r("106",this.getName()||"ReactCompositeComponent"),this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,E=m.unstable_handleError?this.performInitialMountWithErrorHandling(a,t,n,e,o):this.performInitialMount(a,t,n,e,o),m.componentDidMount&&e.getReactMountReady().enqueue(m.componentDidMount,m),E},_constructComponent:function(e,t,n,r){return this._constructComponentWithoutOwner(e,t,n,r)},_constructComponentWithoutOwner:function(e,t,n,r){var o=this._currentElement.type;return e?new o(t,n,r):o(t,n,r)},performInitialMountWithErrorHandling:function(e,t,n,r,o){var i,a=r.checkpoint();try{i=this.performInitialMount(e,t,n,r,o)}catch(s){r.rollback(a),this._instance.unstable_handleError(s),this._pendingStateQueue&&(this._instance.state=this._processPendingState(this._instance.props,this._instance.context)),a=r.checkpoint(),this._renderedComponent.unmountComponent(!0),r.rollback(a),i=this.performInitialMount(e,t,n,r,o)}return i},performInitialMount:function(e,t,n,r,o){var i=this._instance;i.componentWillMount&&(i.componentWillMount(),this._pendingStateQueue&&(i.state=this._processPendingState(i.props,i.context))),void 0===e&&(e=this._renderValidatedComponent());var a=c.getType(e);this._renderedNodeType=a;var s=this._instantiateReactComponent(e,a!==c.EMPTY);return this._renderedComponent=s,f.mountComponent(s,r,t,n,this._processChildContext(o),0)},getHostNode:function(){return f.getHostNode(this._renderedComponent)},unmountComponent:function(e){if(this._renderedComponent){var t=this._instance;if(t.componentWillUnmount&&!t._calledComponentWillUnmount)if(t._calledComponentWillUnmount=!0,e){var n=this.getName()+".componentWillUnmount()";l.invokeGuardedCallback(n,t.componentWillUnmount.bind(t))}else t.componentWillUnmount();this._renderedComponent&&(f.unmountComponent(this._renderedComponent,e),this._renderedNodeType=null,this._renderedComponent=null,this._instance=null),this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._pendingCallbacks=null,this._pendingElement=null,this._context=null,this._rootNodeID=0,this._topLevelWrapper=null,u.remove(t)}},_maskContext:function(e){var t=this._currentElement.type.contextTypes;if(!t)return d;var n={};for(var r in t)n[r]=e[r];return n},_processContext:function(e){return this._maskContext(e)},_processChildContext:function(e){var t,n=this._currentElement.type,i=this._instance;if(i.getChildContext&&(t=i.getChildContext()),t){for(var a in"object"!=typeof n.childContextTypes&&r("107",this.getName()||"ReactCompositeComponent"),t)a in n.childContextTypes||r("108",this.getName()||"ReactCompositeComponent",a);return o({},e,t)}return e},_checkContextTypes:function(e,t,n){0},receiveComponent:function(e,t,n){var r=this._currentElement,o=this._context;this._pendingElement=null,this.updateComponent(t,r,e,o,n)},performUpdateIfNecessary:function(e){null!=this._pendingElement?f.receiveComponent(this,this._pendingElement,e,this._context):null!==this._pendingStateQueue||this._pendingForceUpdate?this.updateComponent(e,this._currentElement,this._currentElement,this._context,this._context):this._updateBatchNumber=null},updateComponent:function(e,t,n,o,i){var a=this._instance;null==a&&r("136",this.getName()||"ReactCompositeComponent");var s,l=!1;this._context===i?s=a.context:(s=this._processContext(i),l=!0);var u=t.props,c=n.props;t!==n&&(l=!0),l&&a.componentWillReceiveProps&&a.componentWillReceiveProps(c,s);var f=this._processPendingState(c,s),d=!0;this._pendingForceUpdate||(a.shouldComponentUpdate?d=a.shouldComponentUpdate(c,f,s):this._compositeType===_&&(d=!p(u,c)||!p(a.state,f))),this._updateBatchNumber=null,d?(this._pendingForceUpdate=!1,this._performComponentUpdate(n,c,f,s,e,i)):(this._currentElement=n,this._context=i,a.props=c,a.state=f,a.context=s)},_processPendingState:function(e,t){var n=this._instance,r=this._pendingStateQueue,i=this._pendingReplaceState;if(this._pendingReplaceState=!1,this._pendingStateQueue=null,!r)return n.state;if(i&&1===r.length)return r[0];for(var a=o({},i?r[0]:n.state),s=i?1:0;s<r.length;s++){var l=r[s];o(a,"function"==typeof l?l.call(n,a,e,t):l)}return a},_performComponentUpdate:function(e,t,n,r,o,i){var a,s,l,u=this._instance,c=Boolean(u.componentDidUpdate);c&&(a=u.props,s=u.state,l=u.context),u.componentWillUpdate&&u.componentWillUpdate(t,n,r),this._currentElement=e,this._context=i,u.props=t,u.state=n,u.context=r,this._updateRenderedComponent(o,i),c&&o.getReactMountReady().enqueue(u.componentDidUpdate.bind(u,a,s,l),u)},_updateRenderedComponent:function(e,t){var n=this._renderedComponent,r=n._currentElement,o=this._renderValidatedComponent();if(m(r,o))f.receiveComponent(n,o,e,this._processChildContext(t));else{var i=f.getHostNode(n);f.unmountComponent(n,!1);var a=c.getType(o);this._renderedNodeType=a;var s=this._instantiateReactComponent(o,a!==c.EMPTY);this._renderedComponent=s;var l=f.mountComponent(s,e,this._hostParent,this._hostContainerInfo,this._processChildContext(t),0);this._replaceNodeWithMarkup(i,l,n)}},_replaceNodeWithMarkup:function(e,t,n){a.replaceNodeWithMarkup(e,t,n)},_renderValidatedComponentWithoutOwnerOrContext:function(){return this._instance.render()},_renderValidatedComponent:function(){var e;if(this._compositeType!==g){s.current=this;try{e=this._renderValidatedComponentWithoutOwnerOrContext()}finally{s.current=null}}else e=this._renderValidatedComponentWithoutOwnerOrContext();return null===e||!1===e||i.isValidElement(e)||r("109",this.getName()||"ReactCompositeComponent"),e},attachRef:function(e,t){var n=this.getPublicInstance();null==n&&r("110");var o=t.getPublicInstance();(n.refs===d?n.refs={}:n.refs)[e]=o},detachRef:function(e){delete this.getPublicInstance().refs[e]},getName:function(){var e=this._currentElement.type,t=this._instance&&this._instance.constructor;return e.displayName||t&&t.displayName||e.name||t&&t.name||null},getPublicInstance:function(){var e=this._instance;return this._compositeType===g?null:e},_instantiateReactComponent:null};e.exports=E},function(e,t,n){"use strict";var r=1;e.exports=function(){return r++}},function(e,t,n){"use strict";var r="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;e.exports=r},function(e,t,n){"use strict";var r="function"==typeof Symbol&&Symbol.iterator,o="@@iterator";e.exports=function(e){var t=e&&(r&&e[r]||e[o]);if("function"==typeof t)return t}},function(e,t,n){"use strict";(function(t){n(385);var r=n(554);n(36);function o(e,t,n,r){if(e&&"object"==typeof e){var o=e;0,void 0===o[n]&&null!=t&&(o[n]=t)}}void 0!==t&&Object({NODE_ENV:"production"}),e.exports=function(e,t){if(null==e)return e;var n={};return r(e,o,n),n}}).call(this,n(54))},function(e,t,n){"use strict";var r=n(386);n(36);var o=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.transaction=t}return e.prototype.isMounted=function(e){return!1},e.prototype.enqueueCallback=function(e,t,n){this.transaction.isInTransaction()&&r.enqueueCallback(e,t,n)},e.prototype.enqueueForceUpdate=function(e){this.transaction.isInTransaction()&&r.enqueueForceUpdate(e)},e.prototype.enqueueReplaceState=function(e,t){this.transaction.isInTransaction()&&r.enqueueReplaceState(e,t)},e.prototype.enqueueSetState=function(e,t){this.transaction.isInTransaction()&&r.enqueueSetState(e,t)},e}();e.exports=o},function(e,t,n){"use strict";var r=n(45),o=n(192),i=n(53),a=function(e){this._currentElement=null,this._hostNode=null,this._hostParent=null,this._hostContainerInfo=null,this._domID=0};r(a.prototype,{mountComponent:function(e,t,n,r){var a=n._idCounter++;this._domID=a,this._hostParent=t,this._hostContainerInfo=n;var s=" react-empty: "+this._domID+" ";if(e.useCreateElement){var l=n._ownerDocument.createComment(s);return i.precacheNode(this,l),o(l)}return e.renderToStaticMarkup?"":"\x3c!--"+s+"--\x3e"},receiveComponent:function(){},getHostNode:function(){return i.getNodeFromInstance(this)},unmountComponent:function(){i.uncacheNode(this)}}),e.exports=a},function(e,t,n){"use strict";var r=n(32);n(23);function o(e,t){"_hostNode"in e||r("33"),"_hostNode"in t||r("33");for(var n=0,o=e;o;o=o._hostParent)n++;for(var i=0,a=t;a;a=a._hostParent)i++;for(;n-i>0;)e=e._hostParent,n--;for(;i-n>0;)t=t._hostParent,i--;for(var s=n;s--;){if(e===t)return e;e=e._hostParent,t=t._hostParent}return null}e.exports={isAncestor:function(e,t){"_hostNode"in e||r("35"),"_hostNode"in t||r("35");for(;t;){if(t===e)return!0;t=t._hostParent}return!1},getLowestCommonAncestor:o,getParentInstance:function(e){return"_hostNode"in e||r("36"),e._hostParent},traverseTwoPhase:function(e,t,n){for(var r,o=[];e;)o.push(e),e=e._hostParent;for(r=o.length;r-- >0;)t(o[r],"captured",n);for(r=0;r<o.length;r++)t(o[r],"bubbled",n)},traverseEnterLeave:function(e,t,n,r,i){for(var a=e&&t?o(e,t):null,s=[];e&&e!==a;)s.push(e),e=e._hostParent;for(var l,u=[];t&&t!==a;)u.push(t),t=t._hostParent;for(l=0;l<s.length;l++)n(s[l],"bubbled",r);for(l=u.length;l-- >0;)n(u[l],"captured",i)}}},function(e,t,n){"use strict";var r=n(32),o=n(45),i=n(377),a=n(192),s=n(53),l=n(282),u=(n(23),n(387),function(e){this._currentElement=e,this._stringText=""+e,this._hostNode=null,this._hostParent=null,this._domID=0,this._mountIndex=0,this._closingComment=null,this._commentNodes=null});o(u.prototype,{mountComponent:function(e,t,n,r){var o=n._idCounter++,i=" react-text: "+o+" ";if(this._domID=o,this._hostParent=t,e.useCreateElement){var u=n._ownerDocument,c=u.createComment(i),f=u.createComment(" /react-text "),d=a(u.createDocumentFragment());return a.queueChild(d,a(c)),this._stringText&&a.queueChild(d,a(u.createTextNode(this._stringText))),a.queueChild(d,a(f)),s.precacheNode(this,c),this._closingComment=f,d}var p=l(this._stringText);return e.renderToStaticMarkup?p:"\x3c!--"+i+"--\x3e"+p+"\x3c!-- /react-text --\x3e"},receiveComponent:function(e,t){if(e!==this._currentElement){this._currentElement=e;var n=""+e;if(n!==this._stringText){this._stringText=n;var r=this.getHostNode();i.replaceDelimitedText(r[0],r[1],n)}}},getHostNode:function(){var e=this._commentNodes;if(e)return e;if(!this._closingComment)for(var t=s.getNodeFromInstance(this).nextSibling;;){if(null==t&&r("67",this._domID),8===t.nodeType&&" /react-text "===t.nodeValue){this._closingComment=t;break}t=t.nextSibling}return e=[this._hostNode,this._closingComment],this._commentNodes=e,e},unmountComponent:function(){this._closingComment=null,this._commentNodes=null,s.uncacheNode(this)}}),e.exports=u},function(e,t,n){"use strict";var r=n(45),o=n(558),i=n(69),a=n(168),s=n(53),l=n(98),u=n(374),c=n(1034);function f(e){for(;e._hostParent;)e=e._hostParent;var t=s.getNodeFromInstance(e).parentNode;return s.getClosestInstanceFromNode(t)}function d(e,t){this.topLevelType=e,this.nativeEvent=t,this.ancestors=[]}function p(e){var t=u(e.nativeEvent),n=s.getClosestInstanceFromNode(t),r=n;do{e.ancestors.push(r),r=r&&f(r)}while(r);for(var o=0;o<e.ancestors.length;o++)n=e.ancestors[o],m._handleTopLevel(e.topLevelType,n,e.nativeEvent,u(e.nativeEvent))}r(d.prototype,{destructor:function(){this.topLevelType=null,this.nativeEvent=null,this.ancestors.length=0}}),a.addPoolingTo(d,a.twoArgumentPooler);var m={_enabled:!0,_handleTopLevel:null,WINDOW_HANDLE:i.canUseDOM?window:null,setHandleTopLevel:function(e){m._handleTopLevel=e},setEnabled:function(e){m._enabled=!!e},isEnabled:function(){return m._enabled},trapBubbledEvent:function(e,t,n){return n?o.listen(n,t,m.dispatchEvent.bind(null,e)):null},trapCapturedEvent:function(e,t,n){return n?o.capture(n,t,m.dispatchEvent.bind(null,e)):null},monitorScrollValue:function(e){var t=function(e){e(c(window))}.bind(null,e);o.listen(window,"scroll",t)},dispatchEvent:function(e,t){if(m._enabled){var n=d.getPooled(e,t);try{l.batchedUpdates(p,n)}finally{d.release(n)}}}};e.exports=m},function(e,t,n){"use strict";e.exports=function(e){return e.Window&&e instanceof e.Window?{x:e.pageXOffset||e.document.documentElement.scrollLeft,y:e.pageYOffset||e.document.documentElement.scrollTop}:{x:e.scrollLeft,y:e.scrollTop}}},function(e,t,n){"use strict";var r=n(191),o=n(227),i=n(372),a=n(381),s=n(552),l=n(283),u=n(553),c=n(98),f={Component:a.injection,DOMProperty:r.injection,EmptyComponent:s.injection,EventPluginHub:o.injection,EventPluginUtils:i.injection,EventEmitter:l.injection,HostComponent:u.injection,Updates:c.injection};e.exports=f},function(e,t,n){"use strict";var r=n(45),o=n(541),i=n(168),a=n(283),s=n(559),l=(n(88),n(279)),u=n(386),c=[{initialize:s.getSelectionInformation,close:s.restoreSelection},{initialize:function(){var e=a.isEnabled();return a.setEnabled(!1),e},close:function(e){a.setEnabled(e)}},{initialize:function(){this.reactMountReady.reset()},close:function(){this.reactMountReady.notifyAll()}}];function f(e){this.reinitializeTransaction(),this.renderToStaticMarkup=!1,this.reactMountReady=o.getPooled(null),this.useCreateElement=e}var d={getTransactionWrappers:function(){return c},getReactMountReady:function(){return this.reactMountReady},getUpdateQueue:function(){return u},checkpoint:function(){return this.reactMountReady.checkpoint()},rollback:function(e){this.reactMountReady.rollback(e)},destructor:function(){o.release(this.reactMountReady),this.reactMountReady=null}};r(f.prototype,l,d),i.addPoolingTo(f),e.exports=f},function(e,t,n){"use strict";var r=n(69),o=n(1038),i=n(540);function a(e,t,n,r){return e===n&&t===r}var s=r.canUseDOM&&"selection"in document&&!("getSelection"in window),l={getOffsets:s?function(e){var t=document.selection.createRange(),n=t.text.length,r=t.duplicate();r.moveToElementText(e),r.setEndPoint("EndToStart",t);var o=r.text.length;return{start:o,end:o+n}}:function(e){var t=window.getSelection&&window.getSelection();if(!t||0===t.rangeCount)return null;var n=t.anchorNode,r=t.anchorOffset,o=t.focusNode,i=t.focusOffset,s=t.getRangeAt(0);try{s.startContainer.nodeType,s.endContainer.nodeType}catch(e){return null}var l=a(t.anchorNode,t.anchorOffset,t.focusNode,t.focusOffset)?0:s.toString().length,u=s.cloneRange();u.selectNodeContents(e),u.setEnd(s.startContainer,s.startOffset);var c=a(u.startContainer,u.startOffset,u.endContainer,u.endOffset)?0:u.toString().length,f=c+l,d=document.createRange();d.setStart(n,r),d.setEnd(o,i);var p=d.collapsed;return{start:p?f:c,end:p?c:f}},setOffsets:s?function(e,t){var n,r,o=document.selection.createRange().duplicate();void 0===t.end?r=n=t.start:t.start>t.end?(n=t.end,r=t.start):(n=t.start,r=t.end),o.moveToElementText(e),o.moveStart("character",n),o.setEndPoint("EndToStart",o),o.moveEnd("character",r-n),o.select()}:function(e,t){if(window.getSelection){var n=window.getSelection(),r=e[i()].length,a=Math.min(t.start,r),s=void 0===t.end?a:Math.min(t.end,r);if(!n.extend&&a>s){var l=s;s=a,a=l}var u=o(e,a),c=o(e,s);if(u&&c){var f=document.createRange();f.setStart(u.node,u.offset),n.removeAllRanges(),a>s?(n.addRange(f),n.extend(c.node,c.offset)):(f.setEnd(c.node,c.offset),n.addRange(f))}}}};e.exports=l},function(e,t,n){"use strict";function r(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function o(e){for(;e;){if(e.nextSibling)return e.nextSibling;e=e.parentNode}}e.exports=function(e,t){for(var n=r(e),i=0,a=0;n;){if(3===n.nodeType){if(a=i+n.textContent.length,i<=t&&a>=t)return{node:n,offset:t-i};i=a}n=r(o(n))}}},function(e,t,n){"use strict";var r=n(1040);e.exports=function e(t,n){return!(!t||!n)&&(t===n||!r(t)&&(r(n)?e(t,n.parentNode):"contains"in t?t.contains(n):!!t.compareDocumentPosition&&!!(16&t.compareDocumentPosition(n))))}},function(e,t,n){"use strict";var r=n(1041);e.exports=function(e){return r(e)&&3==e.nodeType}},function(e,t,n){"use strict";e.exports=function(e){var t=(e?e.ownerDocument||e:document).defaultView||window;return!(!e||!("function"==typeof t.Node?e instanceof t.Node:"object"==typeof e&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName))}},function(e,t,n){"use strict";var r="http://www.w3.org/1999/xlink",o="http://www.w3.org/XML/1998/namespace",i={accentHeight:"accent-height",accumulate:0,additive:0,alignmentBaseline:"alignment-baseline",allowReorder:"allowReorder",alphabetic:0,amplitude:0,arabicForm:"arabic-form",ascent:0,attributeName:"attributeName",attributeType:"attributeType",autoReverse:"autoReverse",azimuth:0,baseFrequency:"baseFrequency",baseProfile:"baseProfile",baselineShift:"baseline-shift",bbox:0,begin:0,bias:0,by:0,calcMode:"calcMode",capHeight:"cap-height",clip:0,clipPath:"clip-path",clipRule:"clip-rule",clipPathUnits:"clipPathUnits",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",contentScriptType:"contentScriptType",contentStyleType:"contentStyleType",cursor:0,cx:0,cy:0,d:0,decelerate:0,descent:0,diffuseConstant:"diffuseConstant",direction:0,display:0,divisor:0,dominantBaseline:"dominant-baseline",dur:0,dx:0,dy:0,edgeMode:"edgeMode",elevation:0,enableBackground:"enable-background",end:0,exponent:0,externalResourcesRequired:"externalResourcesRequired",fill:0,fillOpacity:"fill-opacity",fillRule:"fill-rule",filter:0,filterRes:"filterRes",filterUnits:"filterUnits",floodColor:"flood-color",floodOpacity:"flood-opacity",focusable:0,fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",format:0,from:0,fx:0,fy:0,g1:0,g2:0,glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",glyphRef:"glyphRef",gradientTransform:"gradientTransform",gradientUnits:"gradientUnits",hanging:0,horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",ideographic:0,imageRendering:"image-rendering",in:0,in2:0,intercept:0,k:0,k1:0,k2:0,k3:0,k4:0,kernelMatrix:"kernelMatrix",kernelUnitLength:"kernelUnitLength",kerning:0,keyPoints:"keyPoints",keySplines:"keySplines",keyTimes:"keyTimes",lengthAdjust:"lengthAdjust",letterSpacing:"letter-spacing",lightingColor:"lighting-color",limitingConeAngle:"limitingConeAngle",local:0,markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",markerHeight:"markerHeight",markerUnits:"markerUnits",markerWidth:"markerWidth",mask:0,maskContentUnits:"maskContentUnits",maskUnits:"maskUnits",mathematical:0,mode:0,numOctaves:"numOctaves",offset:0,opacity:0,operator:0,order:0,orient:0,orientation:0,origin:0,overflow:0,overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pathLength:"pathLength",patternContentUnits:"patternContentUnits",patternTransform:"patternTransform",patternUnits:"patternUnits",pointerEvents:"pointer-events",points:0,pointsAtX:"pointsAtX",pointsAtY:"pointsAtY",pointsAtZ:"pointsAtZ",preserveAlpha:"preserveAlpha",preserveAspectRatio:"preserveAspectRatio",primitiveUnits:"primitiveUnits",r:0,radius:0,refX:"refX",refY:"refY",renderingIntent:"rendering-intent",repeatCount:"repeatCount",repeatDur:"repeatDur",requiredExtensions:"requiredExtensions",requiredFeatures:"requiredFeatures",restart:0,result:0,rotate:0,rx:0,ry:0,scale:0,seed:0,shapeRendering:"shape-rendering",slope:0,spacing:0,specularConstant:"specularConstant",specularExponent:"specularExponent",speed:0,spreadMethod:"spreadMethod",startOffset:"startOffset",stdDeviation:"stdDeviation",stemh:0,stemv:0,stitchTiles:"stitchTiles",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",string:0,stroke:0,strokeDasharray:"stroke-dasharray",strokeDashoffset:"stroke-dashoffset",strokeLinecap:"stroke-linecap",strokeLinejoin:"stroke-linejoin",strokeMiterlimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",surfaceScale:"surfaceScale",systemLanguage:"systemLanguage",tableValues:"tableValues",targetX:"targetX",targetY:"targetY",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",textLength:"textLength",to:0,transform:0,u1:0,u2:0,underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicode:0,unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",values:0,vectorEffect:"vector-effect",version:0,vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",viewBox:"viewBox",viewTarget:"viewTarget",visibility:0,widths:0,wordSpacing:"word-spacing",writingMode:"writing-mode",x:0,xHeight:"x-height",x1:0,x2:0,xChannelSelector:"xChannelSelector",xlinkActuate:"xlink:actuate",xlinkArcrole:"xlink:arcrole",xlinkHref:"xlink:href",xlinkRole:"xlink:role",xlinkShow:"xlink:show",xlinkTitle:"xlink:title",xlinkType:"xlink:type",xmlBase:"xml:base",xmlns:0,xmlnsXlink:"xmlns:xlink",xmlLang:"xml:lang",xmlSpace:"xml:space",y:0,y1:0,y2:0,yChannelSelector:"yChannelSelector",z:0,zoomAndPan:"zoomAndPan"},a={Properties:{},DOMAttributeNamespaces:{xlinkActuate:r,xlinkArcrole:r,xlinkHref:r,xlinkRole:r,xlinkShow:r,xlinkTitle:r,xlinkType:r,xmlBase:o,xmlLang:o,xmlSpace:o},DOMAttributeNames:{}};Object.keys(i).forEach(function(e){a.Properties[e]=0,i[e]&&(a.DOMAttributeNames[e]=i[e])}),e.exports=a},function(e,t,n){"use strict";var r=n(226),o=n(69),i=n(53),a=n(559),s=n(125),l=n(560),u=n(544),c=n(383),f=o.canUseDOM&&"documentMode"in document&&document.documentMode<=11,d={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:["topBlur","topContextMenu","topFocus","topKeyDown","topKeyUp","topMouseDown","topMouseUp","topSelectionChange"]}},p=null,m=null,h=null,_=!1,g=!1;function v(e,t){if(_||null==p||p!==l())return null;var n=function(e){if("selectionStart"in e&&a.hasSelectionCapabilities(e))return{start:e.selectionStart,end:e.selectionEnd};if(window.getSelection){var t=window.getSelection();return{anchorNode:t.anchorNode,anchorOffset:t.anchorOffset,focusNode:t.focusNode,focusOffset:t.focusOffset}}if(document.selection){var n=document.selection.createRange();return{parentElement:n.parentElement(),text:n.text,top:n.boundingTop,left:n.boundingLeft}}}(p);if(!h||!c(h,n)){h=n;var o=s.getPooled(d.select,m,e,t);return o.type="select",o.target=p,r.accumulateTwoPhaseDispatches(o),o}return null}var y={eventTypes:d,extractEvents:function(e,t,n,r){if(!g)return null;var o=t?i.getNodeFromInstance(t):window;switch(e){case"topFocus":(u(o)||"true"===o.contentEditable)&&(p=o,m=t,h=null);break;case"topBlur":p=null,m=null,h=null;break;case"topMouseDown":_=!0;break;case"topContextMenu":case"topMouseUp":return _=!1,v(n,r);case"topSelectionChange":if(f)break;case"topKeyDown":case"topKeyUp":return v(n,r)}return null},didPutListener:function(e,t,n){"onSelect"===t&&(g=!0)}};e.exports=y},function(e,t,n){"use strict";var r=n(32),o=n(558),i=n(226),a=n(53),s=n(1045),l=n(1046),u=n(125),c=n(1047),f=n(1048),d=n(280),p=n(1050),m=n(1051),h=n(1052),_=n(228),g=n(1053),v=n(97),y=n(388),b=(n(23),{}),E={};["abort","animationEnd","animationIteration","animationStart","blur","canPlay","canPlayThrough","click","contextMenu","copy","cut","doubleClick","drag","dragEnd","dragEnter","dragExit","dragLeave","dragOver","dragStart","drop","durationChange","emptied","encrypted","ended","error","focus","input","invalid","keyDown","keyPress","keyUp","load","loadedData","loadedMetadata","loadStart","mouseDown","mouseMove","mouseOut","mouseOver","mouseUp","paste","pause","play","playing","progress","rateChange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeUpdate","touchCancel","touchEnd","touchMove","touchStart","transitionEnd","volumeChange","waiting","wheel"].forEach(function(e){var t=e[0].toUpperCase()+e.slice(1),n="on"+t,r="top"+t,o={phasedRegistrationNames:{bubbled:n,captured:n+"Capture"},dependencies:[r]};b[e]=o,E[r]=o});var C={};function S(e){return"."+e._rootNodeID}function D(e){return"button"===e||"input"===e||"select"===e||"textarea"===e}var w={eventTypes:b,extractEvents:function(e,t,n,o){var a,v=E[e];if(!v)return null;switch(e){case"topAbort":case"topCanPlay":case"topCanPlayThrough":case"topDurationChange":case"topEmptied":case"topEncrypted":case"topEnded":case"topError":case"topInput":case"topInvalid":case"topLoad":case"topLoadedData":case"topLoadedMetadata":case"topLoadStart":case"topPause":case"topPlay":case"topPlaying":case"topProgress":case"topRateChange":case"topReset":case"topSeeked":case"topSeeking":case"topStalled":case"topSubmit":case"topSuspend":case"topTimeUpdate":case"topVolumeChange":case"topWaiting":a=u;break;case"topKeyPress":if(0===y(n))return null;case"topKeyDown":case"topKeyUp":a=f;break;case"topBlur":case"topFocus":a=c;break;case"topClick":if(2===n.button)return null;case"topDoubleClick":case"topMouseDown":case"topMouseMove":case"topMouseUp":case"topMouseOut":case"topMouseOver":case"topContextMenu":a=d;break;case"topDrag":case"topDragEnd":case"topDragEnter":case"topDragExit":case"topDragLeave":case"topDragOver":case"topDragStart":case"topDrop":a=p;break;case"topTouchCancel":case"topTouchEnd":case"topTouchMove":case"topTouchStart":a=m;break;case"topAnimationEnd":case"topAnimationIteration":case"topAnimationStart":a=s;break;case"topTransitionEnd":a=h;break;case"topScroll":a=_;break;case"topWheel":a=g;break;case"topCopy":case"topCut":case"topPaste":a=l}a||r("86",e);var b=a.getPooled(v,t,n,o);return i.accumulateTwoPhaseDispatches(b),b},didPutListener:function(e,t,n){if("onClick"===t&&!D(e._tag)){var r=S(e),i=a.getNodeFromInstance(e);C[r]||(C[r]=o.listen(i,"click",v))}},willDeleteListener:function(e,t){if("onClick"===t&&!D(e._tag)){var n=S(e);C[n].remove(),delete C[n]}}};e.exports=w},function(e,t,n){"use strict";var r=n(125);function o(e,t,n,o){return r.call(this,e,t,n,o)}r.augmentClass(o,{animationName:null,elapsedTime:null,pseudoElement:null}),e.exports=o},function(e,t,n){"use strict";var r=n(125),o={clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}};function i(e,t,n,o){return r.call(this,e,t,n,o)}r.augmentClass(i,o),e.exports=i},function(e,t,n){"use strict";var r=n(228);function o(e,t,n,o){return r.call(this,e,t,n,o)}r.augmentClass(o,{relatedTarget:null}),e.exports=o},function(e,t,n){"use strict";var r=n(228),o=n(388),i={key:n(1049),location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:n(376),charCode:function(e){return"keypress"===e.type?o(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?o(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}};function a(e,t,n,o){return r.call(this,e,t,n,o)}r.augmentClass(a,i),e.exports=a},function(e,t,n){"use strict";var r=n(388),o={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},i={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"};e.exports=function(e){if(e.key){var t=o[e.key]||e.key;if("Unidentified"!==t)return t}if("keypress"===e.type){var n=r(e);return 13===n?"Enter":String.fromCharCode(n)}return"keydown"===e.type||"keyup"===e.type?i[e.keyCode]||"Unidentified":""}},function(e,t,n){"use strict";var r=n(280);function o(e,t,n,o){return r.call(this,e,t,n,o)}r.augmentClass(o,{dataTransfer:null}),e.exports=o},function(e,t,n){"use strict";var r=n(228),o={touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:n(376)};function i(e,t,n,o){return r.call(this,e,t,n,o)}r.augmentClass(i,o),e.exports=i},function(e,t,n){"use strict";var r=n(125);function o(e,t,n,o){return r.call(this,e,t,n,o)}r.augmentClass(o,{propertyName:null,elapsedTime:null,pseudoElement:null}),e.exports=o},function(e,t,n){"use strict";var r=n(280);function o(e,t,n,o){return r.call(this,e,t,n,o)}r.augmentClass(o,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:null,deltaMode:null}),e.exports=o},function(e,t,n){"use strict";e.exports={useCreateElement:!0,useFiber:!1}},function(e,t,n){"use strict";var r=65521;e.exports=function(e){for(var t=1,n=0,o=0,i=e.length,a=-4&i;o<a;){for(var s=Math.min(o+4096,a);o<s;o+=4)n+=(t+=e.charCodeAt(o))+(t+=e.charCodeAt(o+1))+(t+=e.charCodeAt(o+2))+(t+=e.charCodeAt(o+3));t%=r,n%=r}for(;o<i;o++)n+=t+=e.charCodeAt(o);return(t%=r)|(n%=r)<<16}},function(e,t,n){"use strict";var r=n(32),o=(n(123),n(53)),i=n(229),a=n(565);n(23),n(36);e.exports=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=i.get(e);if(t)return(t=a(t))?o.getNodeFromInstance(t):null;"function"==typeof e.render?r("44"):r("45",Object.keys(e))}},function(e,t,n){"use strict";var r=n(561);e.exports=r.renderSubtreeIntoContainer},function(e,t,n){"use strict";(function(t){var r=a(n(14)),o=a(n(4)),i=a(n(5));function a(e){return e&&e.__esModule?e:{default:e}}var s=function(){function e(){(0,o.default)(this,e),this.components=null}return(0,i.default)(e,[{key:"getComponent",value:function(e){if(null===this.components)throw new Error("Attempted to get a component before a skin has been loaded. This is probably because either: a) Your app has not called sdk.loadSkin(), or b) A component has called getComponent at the root level");var t=this.components[e];if(t||(t=this.components["views."+e]),!t)throw new Error("No such component: "+e);if(!("function"==typeof t))throw new Error("Not a valid component: "+e+".");return t}},{key:"load",value:function(e){if(null!==this.components)throw new Error("Attempted to load a skin while a skin is already loadedIf you want to change the active skin, call resetSkin first");this.components={};for(var t=(0,r.default)(e.components),n=0;n<t.length;++n){var o=e.components[t[n]];this.addComponent(t[n],o)}}},{key:"addComponent",value:function(e,t){var n=e;void 0!==t.replaces&&(n=t.replaces.indexOf(".")>-1?t.replaces:e.substr(0,e.lastIndexOf(".")+1)+t.replaces.split(".").pop()),this.components[n]=t}},{key:"reset",value:function(){this.components=null}}]),e}();void 0===t.mxSkinner&&(t.mxSkinner=new s),e.exports=t.mxSkinner}).call(this,n(15))},function(e,t,n){"use strict";t.byteLength=function(e){return 3*e.length/4-u(e)},t.toByteArray=function(e){var t,n,r,a,s,l,c=e.length;s=u(e),l=new i(3*c/4-s),r=s>0?c-4:c;var f=0;for(t=0,n=0;t<r;t+=4,n+=3)a=o[e.charCodeAt(t)]<<18|o[e.charCodeAt(t+1)]<<12|o[e.charCodeAt(t+2)]<<6|o[e.charCodeAt(t+3)],l[f++]=a>>16&255,l[f++]=a>>8&255,l[f++]=255&a;2===s?(a=o[e.charCodeAt(t)]<<2|o[e.charCodeAt(t+1)]>>4,l[f++]=255&a):1===s&&(a=o[e.charCodeAt(t)]<<10|o[e.charCodeAt(t+1)]<<4|o[e.charCodeAt(t+2)]>>2,l[f++]=a>>8&255,l[f++]=255&a);return l},t.fromByteArray=function(e){for(var t,n=e.length,o=n%3,i="",a=[],s=0,l=n-o;s<l;s+=16383)a.push(f(e,s,s+16383>l?l:s+16383));1===o?(t=e[n-1],i+=r[t>>2],i+=r[t<<4&63],i+="=="):2===o&&(t=(e[n-2]<<8)+e[n-1],i+=r[t>>10],i+=r[t>>4&63],i+=r[t<<2&63],i+="=");return a.push(i),a.join("")};for(var r=[],o=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,l=a.length;s<l;++s)r[s]=a[s],o[a.charCodeAt(s)]=s;function u(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[t-2]?2:"="===e[t-1]?1:0}function c(e){return r[e>>18&63]+r[e>>12&63]+r[e>>6&63]+r[63&e]}function f(e,t,n){for(var r,o=[],i=t;i<n;i+=3)r=(e[i]<<16)+(e[i+1]<<8)+e[i+2],o.push(c(r));return o.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,n,r,o){var i,a,s=8*o-r-1,l=(1<<s)-1,u=l>>1,c=-7,f=n?o-1:0,d=n?-1:1,p=e[t+f];for(f+=d,i=p&(1<<-c)-1,p>>=-c,c+=s;c>0;i=256*i+e[t+f],f+=d,c-=8);for(a=i&(1<<-c)-1,i>>=-c,c+=r;c>0;a=256*a+e[t+f],f+=d,c-=8);if(0===i)i=1-u;else{if(i===l)return a?NaN:1/0*(p?-1:1);a+=Math.pow(2,r),i-=u}return(p?-1:1)*a*Math.pow(2,i-r)},t.write=function(e,t,n,r,o,i){var a,s,l,u=8*i-o-1,c=(1<<u)-1,f=c>>1,d=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:i-1,m=r?1:-1,h=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=c):(a=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-a))<1&&(a--,l*=2),(t+=a+f>=1?d/l:d*Math.pow(2,1-f))*l>=2&&(a++,l/=2),a+f>=c?(s=0,a=c):a+f>=1?(s=(t*l-1)*Math.pow(2,o),a+=f):(s=t*Math.pow(2,f-1)*Math.pow(2,o),a=0));o>=8;e[n+p]=255&s,p+=m,s/=256,o-=8);for(a=a<<o|s,u+=o;u>0;e[n+p]=255&a,p+=m,a/=256,u-=8);e[n+p-m]|=128*h}},function(e,t,n){"use strict";(function(t){e.exports.ContentHelpers=n(569),e.exports.MatrixEvent=n(170).MatrixEvent,e.exports.EventStatus=n(170).EventStatus,e.exports.MatrixInMemoryStore=n(570).MatrixInMemoryStore,e.exports.IndexedDBStore=n(571).IndexedDBStore,e.exports.IndexedDBStoreBackend=n(571).IndexedDBStoreBackend,e.exports.SyncAccumulator=n(285),e.exports.MatrixHttpApi=n(286).MatrixHttpApi,e.exports.MatrixError=n(286).MatrixError,e.exports.InvalidStoreError=n(572).InvalidStoreError,e.exports.MatrixClient=n(575).MatrixClient,e.exports.Room=n(587),e.exports.Group=n(592),e.exports.EventTimeline=n(172),e.exports.EventTimelineSet=n(406),e.exports.RoomMember=n(402),e.exports.RoomState=n(585),e.exports.User=n(284),e.exports.MatrixScheduler=n(1125),e.exports.WebStorageSessionStore=n(1126),e.exports.CRYPTO_ENABLED=n(575).CRYPTO_ENABLED,e.exports.ContentRepo=n(288),e.exports.Filter=n(403),e.exports.TimelineWindow=n(1127).TimelineWindow,e.exports.InteractiveAuth=n(1128),e.exports.MemoryCryptoStore=n(400).default,e.exports.IndexedDBCryptoStore=n(231).default,e.exports.createNewMatrixCall=n(232).createNewMatrixCall,e.exports.setMatrixCallAudioOutput=n(232).setAudioOutput,e.exports.setMatrixCallAudioInput=n(232).setAudioInput,e.exports.setMatrixCallVideoInput=n(232).setVideoInput;var r=void 0;e.exports.request=function(e){r=e},e.exports.getRequest=function(){return r},e.exports.wrapRequest=function(e){var t=r;r=function(n,r){return e(t,n,r)}};var o=function(){return new e.exports.MemoryCryptoStore};e.exports.setCryptoStoreFactory=function(e){o=e},e.exports.createClient=function(n){return"string"==typeof n&&(n={baseUrl:n}),n.request=n.request||r,n.store=n.store||new e.exports.MatrixInMemoryStore({localStorage:t.localStorage}),n.scheduler=n.scheduler||new e.exports.MatrixScheduler,n.cryptoStore=n.cryptoStore||o(),new e.exports.MatrixClient(n)}}).call(this,n(15))},function(e,t,n){n(1063),e.exports=n(18).Object.assign},function(e,t,n){var r=n(26);r(r.S+r.F,"Object",{assign:n(1064)})},function(e,t,n){"use strict";var r=n(78),o=n(189),i=n(124),a=n(87),s=n(163),l=Object.assign;e.exports=!l||n(58)(function(){var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach(function(e){t[e]=e}),7!=l({},e)[n]||Object.keys(l({},t)).join("")!=r})?function(e,t){for(var n=a(e),l=arguments.length,u=1,c=o.f,f=i.f;l>u;)for(var d,p=s(arguments[u++]),m=c?r(p).concat(c(p)):r(p),h=m.length,_=0;h>_;)f.call(p,d=m[_++])&&(n[d]=p[d]);return n}:l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(n(9));var o=function(e,t,n){this._workerScript=e,this._dbName=t,this._workerApi=n,this._worker=null,this._nextSeq=0,this._inFlight={},this._startPromise=null};o.prototype={connect:function(){var e=this;return this._ensureStarted().then(function(){return e._doCmd("connect")})},clearDatabase:function(){var e=this;return this._ensureStarted().then(function(){return e._doCmd("clearDatabase")})},isNewlyCreated:function(){return this._doCmd("isNewlyCreated")},getSavedSync:function(){return this._doCmd("getSavedSync")},getNextBatchToken:function(){return this._doCmd("getNextBatchToken")},setSyncData:function(e){return this._doCmd("setSyncData",[e])},syncToDatabase:function(e){return this._doCmd("syncToDatabase",[e])},getOutOfBandMembers:function(e){return this._doCmd("getOutOfBandMembers",[e])},setOutOfBandMembers:function(e,t){return this._doCmd("setOutOfBandMembers",[e,t])},clearOutOfBandMembers:function(e){return this._doCmd("clearOutOfBandMembers",[e])},getClientOptions:function(){return this._doCmd("getClientOptions")},storeClientOptions:function(e){return this._doCmd("storeClientOptions",[e])},getUserPresenceEvents:function(){return this._doCmd("getUserPresenceEvents")},_ensureStarted:function(){return null===this._startPromise&&(this._worker=new this._workerApi(this._workerScript),this._worker.onmessage=this._onWorkerMessage.bind(this),this._startPromise=this._doCmd("_setupWorker",[this._dbName]).then(function(){console.log("IndexedDB worker is ready")})),this._startPromise},_doCmd:function(e,t){var n=this;return r.default.resolve().then(function(){var o=n._nextSeq++,i=r.default.defer();return n._inFlight[o]=i,n._worker.postMessage({command:e,seq:o,args:t}),i.promise})},_onWorkerMessage:function(e){var t=e.data;if("cmd_success"==t.command||"cmd_fail"==t.command){if(void 0===t.seq)return void console.error("Got reply from worker with no seq");var n=this._inFlight[t.seq];if(void 0===n)return void console.error("Got reply for unknown seq "+t.seq);if(delete this._inFlight[t.seq],"cmd_success"==t.command)n.resolve(t.result);else{var r=new Error(t.error.message);r.name=t.error.name,n.reject(r)}}else console.warn("Unrecognised message from worker: "+t)}},t.default=o},function(e,t,n){"use strict"; -/*! - * content-type - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */var r=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,o=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,i=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,a=/\\([\u000b\u0020-\u00ff])/g,s=/([\\"])/g,l=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;function u(e){var t=String(e);if(i.test(t))return t;if(t.length>0&&!o.test(t))throw new TypeError("invalid parameter value");return'"'+t.replace(s,"\\$1")+'"'}t.format=function(e){if(!e||"object"!=typeof e)throw new TypeError("argument obj is required");var t=e.parameters,n=e.type;if(!n||!l.test(n))throw new TypeError("invalid type");var r=n;if(t&&"object"==typeof t)for(var o,a=Object.keys(t).sort(),s=0;s<a.length;s++){if(o=a[s],!i.test(o))throw new TypeError("invalid parameter name");r+="; "+o+"="+u(t[o])}return r},t.parse=function(e){if(!e)throw new TypeError("argument string is required");var t="object"==typeof e?function(e){var t;"function"==typeof e.getHeader?t=e.getHeader("content-type"):"object"==typeof e.headers&&(t=e.headers&&e.headers["content-type"]);if("string"!=typeof t)throw new TypeError("content-type header is missing from object");return t}(e):e;if("string"!=typeof t)throw new TypeError("argument string is required to be a string");var n=t.indexOf(";"),o=-1!==n?t.substr(0,n).trim():t.trim();if(!l.test(o))throw new TypeError("invalid media type");var i=new function(e){this.parameters=Object.create(null),this.type=e}(o.toLowerCase());if(-1!==n){var s,u,c;for(r.lastIndex=n;u=r.exec(t);){if(u.index!==n)throw new TypeError("invalid parameter format");n+=u[0].length,s=u[1].toLowerCase(),'"'===(c=u[2])[0]&&(c=c.substr(1,c.length-2).replace(a,"$1")),i.parameters[s]=c}if(n!==t.length)throw new TypeError("invalid parameter format")}return i}},function(e,t,n){"use strict";(function(t){var n=1e3,r=0,o=void 0,i=[],a=function(){};e.exports.setNow=function(e){s=e||Date.now};var s=Date.now;function l(){o&&t.clearTimeout(o);var e=i[0];if(e){var r=s(),l=Math.min(e.runAt-r,n);a("_scheduleRealCallback: now:",r,"delay:",l),o=t.setTimeout(u,l)}else a("_scheduleRealCallback: no more callbacks, not rescheduling")}function u(){var e=void 0,n=s();a("_runCallbacks: now:",n);for(var r=[];;){var o=i[0];if(!o||o.runAt>n)break;e=i.shift(),a("_runCallbacks: popping",e.key),r.push(e)}l();for(var u=0;u<r.length;u++){e=r[u];try{e.func.apply(t,e.params)}catch(e){console.error("Uncaught exception in callback function",e.stack||e)}}}e.exports.setTimeout=function(e,t){(t=t||0)<0&&(t=0);var n=Array.prototype.slice.call(arguments,2),o=s()+t,u=r++;a("setTimeout: scheduling cb",u,"at",o,"(delay",t,")");var c={runAt:o,func:e,params:n,key:u},f=function(e,t){var n=0,r=e.length;for(;n<r;){var o=n+r>>1,i=t(e[o]);i>0?r=o:n=o+1}return n}(i,function(e){return e.runAt-o});return i.splice(f,0,c),l(),u},e.exports.clearTimeout=function(e){if(0!==i.length){var t=void 0;for(t=0;t<i.length;t++){if(i[t].key==e){i.splice(t,1);break}}0===t&&l()}}}).call(this,n(15))},function(e,t,n){e.exports={default:n(1069),__esModule:!0}},function(e,t,n){n(1070),e.exports=n(18).Reflect.getPrototypeOf},function(e,t,n){var r=n(26),o=n(215),i=n(52);r(r.S,"Reflect",{getPrototypeOf:function(e){return o(i(e))}})},function(e,t,n){e.exports={default:n(1072),__esModule:!0}},function(e,t,n){n(1073),e.exports=n(18).Reflect.setPrototypeOf},function(e,t,n){var r=n(26),o=n(573);o&&r(r.S,"Reflect",{setPrototypeOf:function(e,t){o.check(e,t);try{return o.set(e,t),!0}catch(e){return!1}}})},function(e,t,n){e.exports={default:n(1075),__esModule:!0}},function(e,t,n){n(1076),e.exports=n(18).Reflect.construct},function(e,t,n){var r=n(26),o=n(117),i=n(94),a=n(52),s=n(35),l=n(58),u=n(1077),c=(n(34).Reflect||{}).construct,f=l(function(){function e(){}return!(c(function(){},[],e)instanceof e)}),d=!l(function(){c(function(){})});r(r.S+r.F*(f||d),"Reflect",{construct:function(e,t){i(e),a(t);var n=arguments.length<3?e:i(arguments[2]);if(d&&!f)return c(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var r=[null];return r.push.apply(r,t),new(u.apply(e,r))}var l=n.prototype,p=o(s(l)?l:Object.prototype),m=Function.apply.call(e,p,t);return s(m)?m:p}})},function(e,t,n){"use strict";var r=n(94),o=n(35),i=n(574),a=[].slice,s={};e.exports=Function.bind||function(e){var t=r(this),n=a.call(arguments,1),l=function(){var r=n.concat(a.call(arguments));return this instanceof l?function(e,t,n){if(!(t in s)){for(var r=[],o=0;o<t;o++)r[o]="a["+o+"]";s[t]=Function("F,a","return new F("+r.join(",")+")")}return s[t](e,n)}(t,r.length,r):i(t,r,e)};return o(t.prototype)&&(l.prototype=t.prototype),l}},function(e,t,n){n(1079),e.exports=n(18).Object.entries},function(e,t,n){var r=n(26),o=n(577)(!0);r(r.S,"Object",{entries:function(e){return o(e)}})},function(e,t,n){n(190),n(86),n(113),n(1081),n(1085),n(1087),n(1088),e.exports=n(18).Set},function(e,t,n){"use strict";var r=n(578),o=n(399);e.exports=n(580)("Set",function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{add:function(e){return r.def(o(this,"Set"),e=0===e?0:e,e)}},r)},function(e,t,n){var r=n(66),o=n(163),i=n(87),a=n(118),s=n(1083);e.exports=function(e,t){var n=1==e,l=2==e,u=3==e,c=4==e,f=6==e,d=5==e||f,p=t||s;return function(t,s,m){for(var h,_,g=i(t),v=o(g),y=r(s,m,3),b=a(v.length),E=0,C=n?p(t,b):l?p(t,0):void 0;b>E;E++)if((d||E in v)&&(_=y(h=v[E],E,g),e))if(n)C[E]=_;else if(_)switch(e){case 3:return!0;case 5:return h;case 6:return E;case 2:C.push(h)}else if(c)return!1;return f?-1:u||c?c:C}}},function(e,t,n){var r=n(1084);e.exports=function(e,t){return new(r(e))(t)}},function(e,t,n){var r=n(35),o=n(278),i=n(38)("species");e.exports=function(e){var t;return o(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!o(t.prototype)||(t=void 0),r(t)&&null===(t=t[i])&&(t=void 0)),void 0===t?Array:t}},function(e,t,n){var r=n(26);r(r.P+r.R,"Set",{toJSON:n(581)("Set")})},function(e,t,n){var r=n(230);e.exports=function(e,t){var n=[];return r(e,!1,n.push,n,t),n}},function(e,t,n){n(582)("Set")},function(e,t,n){n(583)("Set")},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(19)),o=c(n(20)),i=c(n(14)),a=n(9),s=c(n(4)),l=c(n(5)),u=c(n(231));function c(e){return e&&e.__esModule?e:{default:e}}var f=function(){function e(t,n){(0,s.default)(this,e),this._cryptoStore=t,this._sessionStore=n,this._roomEncryption={}}return(0,l.default)(e,[{key:"init",value:function(){var e=(0,a.coroutine)(r.default.mark(function e(){var t,n=this;return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=!1,e.next=3,(0,a.resolve)(this._cryptoStore.doTxn("readwrite",[u.default.STORE_ROOMS],function(e){n._cryptoStore.getEndToEndRooms(e,function(r){if(null===r||0===(0,i.default)(r).length){var a=n._sessionStore.getAllEndToEndRooms();if(null!==a){var s=!0,l=!1,u=void 0;try{for(var c,f=(0,o.default)((0,i.default)(a));!(s=(c=f.next()).done);s=!0){var d=c.value;n._cryptoStore.storeEndToEndRoom(d,a[d],e)}}catch(e){l=!0,u=e}finally{try{!s&&f.return&&f.return()}finally{if(l)throw u}}}n._roomEncryption=a,t=!0}else n._roomEncryption=r})}));case 3:t&&this._sessionStore.removeAllEndToEndRooms();case 4:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"getRoomEncryption",value:function(e){return this._roomEncryption[e]||null}},{key:"isRoomEncrypted",value:function(e){return Boolean(this.getRoomEncryption(e))}},{key:"setRoomEncryption",value:function(){var e=(0,a.coroutine)(r.default.mark(function e(t,n){var o=this;return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this._roomEncryption[t]=n,e.next=3,(0,a.resolve)(this._cryptoStore.doTxn("readwrite",[u.default.STORE_ROOMS],function(e){o._cryptoStore.storeEndToEndRoom(t,n,e)}));case 3:case"end":return e.stop()}},e,this)}));return function(t,n){return e.apply(this,arguments)}}()}]),e}();t.default=f},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=f(n(31)),o=f(n(11)),i=f(n(4)),a=f(n(5)),s=f(n(12)),l=f(n(13)),u=f(n(9)),c=f(n(400));function f(e){return e&&e.__esModule?e:{default:e}}var d="crypto.",p=d+"account",m=d+"device_data",h=d+"inboundgroupsessions/",_=d+"rooms/";function g(e){return d+"sessions/"+e}function v(e,t){return h+e+"/"+t}function y(e){return _+e}var b=function(e){function t(e){(0,i.default)(this,t);var n=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this));return n.store=e,n}return(0,l.default)(t,e),(0,a.default)(t,[{key:"countEndToEndSessions",value:function(e,t){for(var n=0,r=0;r<this.store.length;++r)this.store.key(r).startsWith(g(""))&&++n;t(n)}},{key:"_getEndToEndSessions",value:function(e,t,n){return E(this.store,g(e))}},{key:"getEndToEndSession",value:function(e,t,n,r){r(this._getEndToEndSessions(e)[t]||{})}},{key:"getEndToEndSessions",value:function(e,t,n){n(this._getEndToEndSessions(e)||{})}},{key:"storeEndToEndSession",value:function(e,t,n,r){var o=this._getEndToEndSessions(e)||{};o[t]=n,C(this.store,g(e),o)}},{key:"getEndToEndInboundGroupSession",value:function(e,t,n,r){r(E(this.store,v(e,t)))}},{key:"getAllEndToEndInboundGroupSessions",value:function(e,t){for(var n=0;n<this.store.length;++n){var r=this.store.key(n);r.startsWith(h)&&t({senderKey:r.substr(h.length,43),sessionId:r.substr(h.length+44),sessionData:E(this.store,r)})}t(null)}},{key:"addEndToEndInboundGroupSession",value:function(e,t,n,r){E(this.store,v(e,t))||this.storeEndToEndInboundGroupSession(e,t,n,r)}},{key:"storeEndToEndInboundGroupSession",value:function(e,t,n,r){C(this.store,v(e,t),n)}},{key:"getEndToEndDeviceData",value:function(e,t){t(E(this.store,m))}},{key:"storeEndToEndDeviceData",value:function(e,t){C(this.store,m,e)}},{key:"storeEndToEndRoom",value:function(e,t,n){C(this.store,y(e),t)}},{key:"getEndToEndRooms",value:function(e,t){for(var n={},r=y(""),o=0;o<this.store.length;++o){var i=this.store.key(o);if(i.startsWith(r))n[i.substr(r.length)]=E(this.store,i)}t(n)}},{key:"deleteAllData",value:function(){return this.store.removeItem(p),u.default.resolve()}},{key:"getAccount",value:function(e,t){t(E(this.store,p))}},{key:"storeAccount",value:function(e,t){C(this.store,p,t)}},{key:"doTxn",value:function(e,t,n){return u.default.resolve(n(null))}}]),t}(c.default);function E(e,t){try{return JSON.parse(e.getItem(t))}catch(e){console.log("Error: Failed to get key %s: %s",t,e.stack||e),console.log(e.stack)}return null}function C(e,t,n){e.setItem(t,(0,r.default)(n))}t.default=b},function(e,t,n){e.exports={default:n(1092),__esModule:!0}},function(e,t,n){n(1093),e.exports=n(18).Object.setPrototypeOf},function(e,t,n){var r=n(26);r(r.S,"Object",{setPrototypeOf:n(573).set})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Backend=t.VERSION=void 0;var r=l(n(40)),o=l(n(4)),i=l(n(5));t.upgradeDatabase=function(e,t){console.log("Upgrading IndexedDBCryptoStore from version "+t+" to "+u),t<1&&function(e){var t=e.createObjectStore("outgoingRoomKeyRequests",{keyPath:"requestId"});t.createIndex("session",["requestBody.room_id","requestBody.session_id"]),t.createIndex("state","state")}(e);t<2&&e.createObjectStore("account");if(t<3){var n=e.createObjectStore("sessions",{keyPath:["deviceKey","sessionId"]});n.createIndex("deviceKey","deviceKey")}t<4&&e.createObjectStore("inbound_group_sessions",{keyPath:["senderCurve25519Key","sessionId"]});t<5&&e.createObjectStore("device_data");t<6&&e.createObjectStore("rooms")};var a=l(n(9)),s=l(n(29));function l(e){return e&&e.__esModule?e:{default:e}}var u=t.VERSION=6;t.Backend=function(){function e(t){var n=this;(0,o.default)(this,e),this._db=t,t.onversionchange=function(e){console.log("versionchange for indexeddb "+n._dbName+": closing"),t.close()}}return(0,i.default)(e,[{key:"getOrAddOutgoingRoomKeyRequest",value:function(e){var t=e.requestBody,n=a.default.defer(),r=this._db.transaction("outgoingRoomKeyRequests","readwrite");return r.onerror=n.reject,this._getOutgoingRoomKeyRequest(r,t,function(o){if(o)return console.log("already have key request outstanding for "+t.room_id+" / "+t.session_id+": not sending another"),void n.resolve(o);console.log("enqueueing key request for "+t.room_id+" / "+t.session_id),r.oncomplete=function(){n.resolve(e)},r.objectStore("outgoingRoomKeyRequests").add(e)}),n.promise}},{key:"getOutgoingRoomKeyRequest",value:function(e){var t=a.default.defer(),n=this._db.transaction("outgoingRoomKeyRequests","readonly");return n.onerror=t.reject,this._getOutgoingRoomKeyRequest(n,e,function(e){t.resolve(e)}),t.promise}},{key:"_getOutgoingRoomKeyRequest",value:function(e,t,n){e.objectStore("outgoingRoomKeyRequests").index("session").openCursor([t.room_id,t.session_id]).onsuccess=function(e){var r=e.target.result;if(r){var o=r.value;s.default.deepCompare(o.requestBody,t)?n(o):r.continue()}else n(null)}}},{key:"getOutgoingRoomKeyRequestByState",value:function(e){if(0===e.length)return a.default.resolve(null);var t=0,n=void 0;var r=this._db.transaction("outgoingRoomKeyRequests","readonly"),o=r.objectStore("outgoingRoomKeyRequests"),i=e[t];return o.index("state").openCursor(i).onsuccess=function r(o){var i=o.target.result;if(i)n=i.value;else if(!(++t>=e.length)){var a=e[t];o.target.source.openCursor(a).onsuccess=r}},f(r).then(function(){return n})}},{key:"updateOutgoingRoomKeyRequest",value:function(e,t,n){var o=null;var i=this._db.transaction("outgoingRoomKeyRequests","readwrite");return i.objectStore("outgoingRoomKeyRequests").openCursor(e).onsuccess=function(e){var i=e.target.result;if(i){var a=i.value;a.state==t?((0,r.default)(a,n),i.update(a),o=a):console.warn("Cannot update room key request from "+t+" as it was already updated to "+a.state)}},f(i).then(function(){return o})}},{key:"deleteOutgoingRoomKeyRequest",value:function(e,t){var n=this._db.transaction("outgoingRoomKeyRequests","readwrite");return n.objectStore("outgoingRoomKeyRequests").openCursor(e).onsuccess=function(e){var n=e.target.result;if(n){var r=n.value;r.state==t?n.delete():console.warn("Cannot delete room key request in state "+r.state+" (expected "+t+")")}},f(n)}},{key:"getAccount",value:function(e,t){var n=e.objectStore("account").get("-");n.onsuccess=function(){try{t(n.result||null)}catch(t){c(e,t)}}}},{key:"storeAccount",value:function(e,t){e.objectStore("account").put(t,"-")}},{key:"countEndToEndSessions",value:function(e,t){var n=e.objectStore("sessions").count();n.onsuccess=function(){t(n.result)}}},{key:"getEndToEndSessions",value:function(e,t,n){var r=t.objectStore("sessions").index("deviceKey").openCursor(e),o={};r.onsuccess=function(){var e=r.result;if(e)o[e.value.sessionId]=e.value.session,e.continue();else try{n(o)}catch(e){c(t,e)}}}},{key:"getEndToEndSession",value:function(e,t,n,r){var o=n.objectStore("sessions").get([e,t]);o.onsuccess=function(){try{o.result?r(o.result.session):r(null)}catch(e){c(n,e)}}}},{key:"storeEndToEndSession",value:function(e,t,n,r){r.objectStore("sessions").put({deviceKey:e,sessionId:t,session:n})}},{key:"getEndToEndInboundGroupSession",value:function(e,t,n,r){var o=n.objectStore("inbound_group_sessions").get([e,t]);o.onsuccess=function(){try{o.result?r(o.result.session):r(null)}catch(e){c(n,e)}}}},{key:"getAllEndToEndInboundGroupSessions",value:function(e,t){var n=e.objectStore("inbound_group_sessions").openCursor();n.onsuccess=function(){var r=n.result;if(r){try{t({senderKey:r.value.senderCurve25519Key,sessionId:r.value.sessionId,sessionData:r.value.session})}catch(t){c(e,t)}r.continue()}else try{t(null)}catch(t){c(e,t)}}}},{key:"addEndToEndInboundGroupSession",value:function(e,t,n,r){var o=r.objectStore("inbound_group_sessions").add({senderCurve25519Key:e,sessionId:t,session:n});o.onerror=function(n){"ConstraintError"===o.error.name?(n.stopPropagation(),n.preventDefault(),console.log("Ignoring duplicate inbound group session: "+e+" / "+t)):c(r,new Error("Failed to add inbound group session: "+o.error))}}},{key:"storeEndToEndInboundGroupSession",value:function(e,t,n,r){r.objectStore("inbound_group_sessions").put({senderCurve25519Key:e,sessionId:t,session:n})}},{key:"getEndToEndDeviceData",value:function(e,t){var n=e.objectStore("device_data").get("-");n.onsuccess=function(){try{t(n.result||null)}catch(t){c(e,t)}}}},{key:"storeEndToEndDeviceData",value:function(e,t){t.objectStore("device_data").put(e,"-")}},{key:"storeEndToEndRoom",value:function(e,t,n){n.objectStore("rooms").put(t,e)}},{key:"getEndToEndRooms",value:function(e,t){var n={},r=e.objectStore("rooms").openCursor();r.onsuccess=function(){var o=r.result;if(o)n[o.key]=o.value,o.continue();else try{t(n)}catch(t){c(e,t)}}}},{key:"doTxn",value:function(e,t,n){var r=this._db.transaction(t,e),o=f(r),i=n(r);return o.then(function(){return i})}}]),e}();function c(e,t){e._mx_abortexception=t;try{e.abort()}catch(t){}}function f(e){return new a.default(function(t,n){e.oncomplete=function(){void 0!==e._mx_abortexception&&n(e._mx_abortexception),t()},e.onerror=function(){void 0!==e._mx_abortexception&&n(e._mx_abortexception),n()},e.onabort=function(){return n(e._mx_abortexception)}})}},function(e,t,n){(function(e,r){var o;/*! https://mths.be/punycode v1.4.1 by @mathias */!function(i){"object"==typeof t&&t&&t.nodeType,"object"==typeof e&&e&&e.nodeType;var a="object"==typeof r&&r;a.global!==a&&a.window!==a&&a.self;var s,l=2147483647,u=36,c=1,f=26,d=38,p=700,m=72,h=128,_="-",g=/^xn--/,v=/[^\x20-\x7E]/,y=/[\x2E\u3002\uFF0E\uFF61]/g,b={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},E=u-c,C=Math.floor,S=String.fromCharCode;function D(e){throw new RangeError(b[e])}function w(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}function T(e,t){var n=e.split("@"),r="";return n.length>1&&(r=n[0]+"@",e=n[1]),r+w((e=e.replace(y,".")).split("."),t).join(".")}function x(e){for(var t,n,r=[],o=0,i=e.length;o<i;)(t=e.charCodeAt(o++))>=55296&&t<=56319&&o<i?56320==(64512&(n=e.charCodeAt(o++)))?r.push(((1023&t)<<10)+(1023&n)+65536):(r.push(t),o--):r.push(t);return r}function R(e){return w(e,function(e){var t="";return e>65535&&(t+=S((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=S(e)}).join("")}function k(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:u}function N(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function I(e,t,n){var r=0;for(e=n?C(e/p):e>>1,e+=C(e/t);e>E*f>>1;r+=u)e=C(e/E);return C(r+(E+1)*e/(e+d))}function O(e){var t,n,r,o,i,a,s,d,p,g,v=[],y=e.length,b=0,E=h,S=m;for((n=e.lastIndexOf(_))<0&&(n=0),r=0;r<n;++r)e.charCodeAt(r)>=128&&D("not-basic"),v.push(e.charCodeAt(r));for(o=n>0?n+1:0;o<y;){for(i=b,a=1,s=u;o>=y&&D("invalid-input"),((d=k(e.charCodeAt(o++)))>=u||d>C((l-b)/a))&&D("overflow"),b+=d*a,!(d<(p=s<=S?c:s>=S+f?f:s-S));s+=u)a>C(l/(g=u-p))&&D("overflow"),a*=g;S=I(b-i,t=v.length+1,0==i),C(b/t)>l-E&&D("overflow"),E+=C(b/t),b%=t,v.splice(b++,0,E)}return R(v)}function A(e){var t,n,r,o,i,a,s,d,p,g,v,y,b,E,w,T=[];for(y=(e=x(e)).length,t=h,n=0,i=m,a=0;a<y;++a)(v=e[a])<128&&T.push(S(v));for(r=o=T.length,o&&T.push(_);r<y;){for(s=l,a=0;a<y;++a)(v=e[a])>=t&&v<s&&(s=v);for(s-t>C((l-n)/(b=r+1))&&D("overflow"),n+=(s-t)*b,t=s,a=0;a<y;++a)if((v=e[a])<t&&++n>l&&D("overflow"),v==t){for(d=n,p=u;!(d<(g=p<=i?c:p>=i+f?f:p-i));p+=u)w=d-g,E=u-g,T.push(S(N(g+w%E,0))),d=C(w/E);T.push(S(N(d,0))),i=I(n,b,r==o),n=0,++r}++n,++t}return T.join("")}s={version:"1.4.1",ucs2:{decode:x,encode:R},decode:O,encode:A,toASCII:function(e){return T(e,function(e){return v.test(e)?"xn--"+A(e):e})},toUnicode:function(e){return T(e,function(e){return g.test(e)?O(e.slice(4).toLowerCase()):e})}},void 0===(o=function(){return s}.call(t,n,t,e))||(e.exports=o)}()}).call(this,n(171)(e),n(15))},function(e,t,n){"use strict";e.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},function(e,t,n){"use strict";function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,n,i){t=t||"&",n=n||"=";var a={};if("string"!=typeof e||0===e.length)return a;var s=/\+/g;e=e.split(t);var l=1e3;i&&"number"==typeof i.maxKeys&&(l=i.maxKeys);var u=e.length;l>0&&u>l&&(u=l);for(var c=0;c<u;++c){var f,d,p,m,h=e[c].replace(s,"%20"),_=h.indexOf(n);_>=0?(f=h.substr(0,_),d=h.substr(_+1)):(f=h,d=""),p=decodeURIComponent(f),m=decodeURIComponent(d),r(a,p)?o(a[p])?a[p].push(m):a[p]=[a[p],m]:a[p]=m}return a};var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,n){"use strict";var r=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,n,s){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?i(a(e),function(a){var s=encodeURIComponent(r(a))+n;return o(e[a])?i(e[a],function(e){return s+encodeURIComponent(r(e))}).join(t):s+encodeURIComponent(r(e[a]))}).join(t):s?encodeURIComponent(r(s))+n+encodeURIComponent(r(e)):""};var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function i(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++)n.push(t(e[r],r));return n}var a=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t}},function(e,t,n){n(1100),e.exports=n(18).Number.isFinite},function(e,t,n){var r=n(26),o=n(34).isFinite;r(r.S,"Number",{isFinite:function(e){return"number"==typeof e&&o(e)}})},function(e,t,n){n(1102),e.exports=n(18).Object.values},function(e,t,n){var r=n(26),o=n(577)(!1);r(r.S,"Object",{values:function(e){return o(e)}})},function(e,t,n){"use strict";var r=n(1104),o=n(29);function i(e,t){this.rank=e,this.context=t}i.fromJson=function(e,t){var n=e.context||{},a=n.events_before||[],s=n.events_after||[],l=new r(t(e.result));return l.setPaginateToken(n.start,!0),l.addEvents(o.map(a,t),!0),l.addEvents(o.map(s,t),!1),l.setPaginateToken(n.end,!1),new i(e.rank,l)},e.exports=i},function(e,t,n){"use strict";function r(e){this._timeline=[e],this._ourEventIndex=0,this._paginateTokens={b:null,f:null},this._paginateRequests={b:null,f:null}}r.prototype.getEvent=function(){return this._timeline[this._ourEventIndex]},r.prototype.getTimeline=function(){return this._timeline},r.prototype.getOurEventIndex=function(){return this._ourEventIndex},r.prototype.getPaginateToken=function(e){return this._paginateTokens[e?"b":"f"]},r.prototype.setPaginateToken=function(e,t){this._paginateTokens[t?"b":"f"]=e},r.prototype.addEvents=function(e,t){t?(this._timeline=e.concat(this._timeline),this._ourEventIndex+=e.length):this._timeline=this._timeline.concat(e)},e.exports=r},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(9));function o(){this.fromToken=null}o.prototype={isNewlyCreated:function(){return r.default.resolve(!0)},getSyncToken:function(){return this.fromToken},setSyncToken:function(e){this.fromToken=e},storeGroup:function(e){},getGroup:function(e){return null},getGroups:function(){return[]},storeRoom:function(e){},getRoom:function(e){return null},getRooms:function(){return[]},removeRoom:function(e){},getRoomSummaries:function(){return[]},storeUser:function(e){},getUser:function(e){return null},getUsers:function(){return[]},scrollback:function(e,t){return[]},storeEvents:function(e,t,n,r){},storeFilter:function(e){},getFilter:function(e,t){return null},getFilterIdByName:function(e){return null},setFilterIdByName:function(e,t){},storeAccountDataEvents:function(e){},getAccountData:function(e){},setSyncData:function(e){return r.default.resolve()},wantsSave:function(){return!1},save:function(){},startup:function(){return r.default.resolve()},getSavedSync:function(){return r.default.resolve(null)},getSavedSyncToken:function(){return r.default.resolve(null)},deleteAllData:function(){return r.default.resolve()},getOutOfBandMembers:function(){return r.default.resolve(null)},setOutOfBandMembers:function(){return r.default.resolve()},clearOutOfBandMembers:function(){return r.default.resolve()},getClientOptions:function(){return r.default.resolve()},storeClientOptions:function(){return r.default.resolve()}},e.exports=o},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(14));function o(e){this.filter_json=e,this.types=e.types||null,this.not_types=e.not_types||[],this.rooms=e.rooms||null,this.not_rooms=e.not_rooms||[],this.senders=e.senders||null,this.not_senders=e.not_senders||[],this.contains_url=e.contains_url||null}o.prototype.check=function(e){return this._checkFields(e.getRoomId(),e.getSender(),e.getType(),!!e.getContent()&&void 0!==e.getContent().url)},o.prototype._checkFields=function(e,t,n,o){for(var i={rooms:function(t){return e===t},senders:function(e){return t===e},types:function(e){return function(e,t){if(t.endsWith("*")){var n=t.slice(0,-1);return e.substr(0,n.length)===n}return e===t}(n,e)}},a=0;a<(0,r.default)(i).length;a++){var s=(0,r.default)(i)[a],l=i[s];if(this["not_"+s].filter(l).length>0)return!1;var u=this[s];if(u&&!u.map(l))return!1}var c=this.filter_json.contains_url;return void 0===c||c===o},o.prototype.filter=function(e){return e.filter(this.check,this)},o.prototype.limit=function(){return void 0!==this.filter_json.limit?this.filter_json.limit:10},e.exports=o},function(e,t,n){"use strict";(function(t){var r=c(n(31)),o=c(n(14)),i=c(n(20)),a=c(n(19)),s=n(9),l=c(s),u=n(572);function c(e){return e&&e.__esModule?e:{default:e}}var f=n(284),d=n(587),p=n(592),m=n(29),h=n(403),_=n(172),g=!0;function v(e,t){return"FILTER_SYNC_"+e+(t?"_"+t:"")}function y(){var e;g&&(e=console).log.apply(e,arguments)}function b(e,t){this.client=e,(t=t||{}).initialSyncLimit=void 0===t.initialSyncLimit?8:t.initialSyncLimit,t.resolveInvitesToProfiles=t.resolveInvitesToProfiles||!1,t.pollTimeout=t.pollTimeout||3e4,t.pendingEventOrdering=t.pendingEventOrdering||"chronological",t.canResetEntireTimeline||(t.canResetEntireTimeline=function(e){return!1}),this.opts=t,this._peekRoomId=null,this._currentSyncRequest=null,this._syncState=null,this._syncStateData=null,this._catchingUp=!1,this._running=!1,this._keepAliveTimer=null,this._connectionReturnedDefer=null,this._notifEvents=[],this._failedSyncCount=0,this._storeIsInvalid=!1,e.getNotifTimelineSet()&&e.reEmitter.reEmit(e.getNotifTimelineSet(),["Room.timeline","Room.timelineReset"])}function E(e,t){var n=new f(t);return e.reEmitter.reEmit(n,["User.avatarUrl","User.displayName","User.presence","User.currentlyActive","User.lastPresenceTs"]),n}b.prototype.createRoom=function(e){var t=this.client,n=new d(e,t,t.getUserId(),{lazyLoadMembers:this.opts.lazyLoadMembers,pendingEventOrdering:this.opts.pendingEventOrdering,timelineSupport:t.timelineSupport});return t.reEmitter.reEmit(n,["Room.name","Room.timeline","Room.redaction","Room.receipt","Room.tags","Room.timelineReset","Room.localEchoUpdated","Room.accountData","Room.myMembership"]),this._registerStateListeners(n),n},b.prototype.createGroup=function(e){var t=this.client,n=new p(e);return t.reEmitter.reEmit(n,["Group.profile","Group.myMembership"]),t.store.storeGroup(n),n},b.prototype._registerStateListeners=function(e){var t=this.client;t.reEmitter.reEmit(e.currentState,["RoomState.events","RoomState.members","RoomState.newMember"]),e.currentState.on("RoomState.newMember",function(e,n,r){r.user=t.getUser(r.userId),t.reEmitter.reEmit(r,["RoomMember.name","RoomMember.typing","RoomMember.powerLevel","RoomMember.membership"])})},b.prototype._deregisterStateListeners=function(e){e.currentState.removeAllListeners("RoomState.events"),e.currentState.removeAllListeners("RoomState.members"),e.currentState.removeAllListeners("RoomState.newMember")},b.prototype.syncLeftRooms=function(){var e=this.client,t=this,n=new h(this.client.credentials.userId);n.setTimelineLimit(1),n.setIncludeLeaveRooms(!0);var r=this.opts.pollTimeout+8e4,o={timeout:0};return e.getOrCreateFilter(v(e.credentials.userId,"LEFT_ROOMS"),n).then(function(t){return o.filter=t,e._http.authedRequest(void 0,"GET","/sync",o,void 0,r)}).then(function(n){var r=[];n.rooms&&n.rooms.leave&&(r=t._mapSyncResponseToRoomArray(n.rooms.leave));var o=[];return r.forEach(function(n){var r=n.room;if(o.push(r),n.isBrandNewRoom){n.timeline=n.timeline||{};var i=t._mapSyncEventsFormat(n.timeline,r),a=t._mapSyncEventsFormat(n.state,r);r.getLiveTimeline().setPaginationToken(n.timeline.prev_batch,_.BACKWARDS),t._processRoomEvents(r,a,i),r.recalculate(),e.store.storeRoom(r),e.emit("Room",r),t._processEventsForNotifs(r,i)}}),o})},b.prototype.peek=function(e){var t=this,n=this.client;return this._peekRoomId=e,this.client.roomInitialSync(e,20).then(function(r){r.messages=r.messages||{},r.messages.chunk=r.messages.chunk||[],r.state=r.state||[];var o=t.createRoom(e),i=m.map(m.deepCopy(r.state),n.getEventMapper()),a=m.map(r.state,n.getEventMapper()),s=m.map(r.messages.chunk,n.getEventMapper());return r.presence&&m.isArray(r.presence)&&r.presence.map(n.getEventMapper()).forEach(function(e){var t=n.store.getUser(e.getContent().user_id);t?t.setPresenceEvent(e):((t=E(n,e.getContent().user_id)).setPresenceEvent(e),n.store.storeUser(t)),n.emit("event",e)}),r.messages.start&&(o.oldState.paginationToken=r.messages.start),o.oldState.setStateEvents(i),o.currentState.setStateEvents(a),t._resolveInvites(o),o.recalculate(),o.addEventsToTimeline(s.reverse(),!0,o.getLiveTimeline(),r.messages.start),n.store.storeRoom(o),n.emit("Room",o),t._peekPoll(o),o})},b.prototype.stopPeeking=function(){this._peekRoomId=null},b.prototype._peekPoll=function(e,t){if(this._peekRoomId===e.roomId){var n=this;this.client._http.authedRequest(void 0,"GET","/events",{room_id:e.roomId,timeout:3e4,from:t},void 0,5e4).done(function(t){if(n._peekRoomId===e.roomId){t.chunk.filter(function(e){return"m.presence"===e.type}).map(n.client.getEventMapper()).forEach(function(e){var t=n.client.store.getUser(e.getContent().user_id);t?t.setPresenceEvent(e):((t=E(n.client,e.getContent().user_id)).setPresenceEvent(e),n.client.store.storeUser(t)),n.client.emit("event",e)});var r=t.chunk.filter(function(t){return t.room_id===e.roomId}).map(n.client.getEventMapper());e.addLiveEvents(r),n._peekPoll(e,t.end)}else y("Stopped peeking in room %s",e.roomId)},function(r){console.error("[%s] Peek poll failed: %s",e.roomId,r),setTimeout(function(){n._peekPoll(e,t)},3e4)})}else y("Stopped peeking in room %s",e.roomId)},b.prototype.getSyncState=function(){return this._syncState},b.prototype.getSyncStateData=function(){return this._syncStateData},b.prototype.recoverFromSyncStartupError=function(){var e=(0,s.coroutine)(a.default.mark(function e(t,n){var r;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,s.resolve)(t);case 2:return r=this._startKeepAlives(),this._updateSyncState("ERROR",{error:n}),e.next=6,(0,s.resolve)(r);case 6:case"end":return e.stop()}},e,this)}));return function(t,n){return e.apply(this,arguments)}}(),b.prototype._wasLazyLoadingToggled=function(){var e=(0,s.coroutine)(a.default.mark(function e(t){var n,r;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=!!t,n=!1,e.next=4,(0,s.resolve)(this.client.store.isNewlyCreated());case 4:if(e.sent){e.next=11;break}return e.next=8,(0,s.resolve)(this.client.store.getClientOptions());case 8:return(r=e.sent)&&(n=!!r.lazyLoadMembers),e.abrupt("return",n!==t);case 11:return e.abrupt("return",!1);case 12:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),b.prototype.sync=function(){var e=this,n=function(){var e=(0,s.coroutine)(a.default.mark(function e(){var t;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,(0,s.resolve)(o.getPushRules());case 3:t=e.sent,y("Got push rules"),o.pushRules=t,e.next=14;break;case 8:return e.prev=8,e.t0=e.catch(0),e.next=12,(0,s.resolve)(i.recoverFromSyncStartupError(c,e.t0));case 12:return n(),e.abrupt("return");case 14:d();case 15:case"end":return e.stop()}},e,this,[[0,8]])}));return function(){return e.apply(this,arguments)}}(),r=function(){var e=(0,s.coroutine)(a.default.mark(function e(){var t,n;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=void 0,i.opts.filter?t=i.opts.filter:(t=new h(o.credentials.userId)).setTimelineLimit(i.opts.initialSyncLimit),n=void 0,e.prev=3,e.next=6,(0,s.resolve)(o.getOrCreateFilter(v(o.credentials.userId),t));case 6:n=e.sent,e.next=15;break;case 9:return e.prev=9,e.t0=e.catch(3),e.next=13,(0,s.resolve)(i.recoverFromSyncStartupError(c,e.t0));case 13:return r(),e.abrupt("return");case 15:return o.resetNotifTimelineSet(),null===i._currentSyncRequest&&(console.log("Sending first sync request..."),i._currentSyncRequest=i._doSyncRequest({filterId:n},f)),e.next=19,(0,s.resolve)(c);case 19:i._sync({filterId:n});case 20:case"end":return e.stop()}},e,this,[[3,9]])}));return function(){return e.apply(this,arguments)}}(),o=this.client,i=this;this._running=!0,t.document&&(this._onOnlineBound=this._onOnline.bind(this),t.document.addEventListener("online",this._onOnlineBound,!1));var c=l.default.resolve(),f=null,d=function(){var t=(0,s.coroutine)(a.default.mark(function t(){var n,i;return a.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(e.opts.lazyLoadMembers&&o.isGuest()&&(e.opts.lazyLoadMembers=!1),!e.opts.lazyLoadMembers){t.next=13;break}return t.next=4,(0,s.resolve)(o.doesServerSupportLazyLoading());case 4:if(!t.sent){t.next=11;break}return t.next=8,(0,s.resolve)(o.createFilter(h.LAZY_LOADING_SYNC_FILTER));case 8:e.opts.filter=t.sent,t.next=13;break;case 11:console.log("LL: lazy loading requested but not supported by server, so disabling"),e.opts.lazyLoadMembers=!1;case 13:return t.next=15,(0,s.resolve)(e._wasLazyLoadingToggled(e.opts.lazyLoadMembers));case 15:if(!t.sent){t.next=23;break}return e._storeIsInvalid=!0,n=u.InvalidStoreError.TOGGLED_LAZY_LOADING,i=new u.InvalidStoreError(n,!!e.opts.lazyLoadMembers),e._updateSyncState("ERROR",{error:i}),console.warn("InvalidStoreError: store is not usable: stopping sync."),t.abrupt("return");case 23:return e.opts.lazyLoadMembers&&e._crypto&&e.opts.crypto.enableLazyLoading(),t.next=26,(0,s.resolve)(e.client._storeClientOptions());case 26:r();case 27:case"end":return t.stop()}},t,e)}));return function(){return t.apply(this,arguments)}}();o.isGuest()?i._sync({}):(c=o.store.getSavedSyncToken().then(function(e){return f=e,o.store.getSavedSync()}).then(function(e){if(e)return i._syncFromCache(e)}),n())},b.prototype.stop=function(){y("SyncApi.stop"),t.document&&(t.document.removeEventListener("online",this._onOnlineBound,!1),this._onOnlineBound=void 0),this._running=!1,this._currentSyncRequest&&this._currentSyncRequest.abort(),this._keepAliveTimer&&(clearTimeout(this._keepAliveTimer),this._keepAliveTimer=null)},b.prototype.retryImmediately=function(){return!!this._connectionReturnedDefer&&(this._startKeepAlives(0),!0)},b.prototype._syncFromCache=function(){var e=(0,s.coroutine)(a.default.mark(function e(t){var n,r,o;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return y("sync(): not doing HTTP hit, instead returning stored /sync data"),n=t.nextBatch,this.client.store.setSyncToken(n),r={oldSyncToken:null,nextSyncToken:n,catchingUp:!1},o={next_batch:n,rooms:t.roomsData,groups:t.groupsData,account_data:{events:t.accountData}},e.prev=5,e.next=8,(0,s.resolve)(this._processSyncResponse(r,o));case 8:e.next=13;break;case 10:e.prev=10,e.t0=e.catch(5),console.error("Error processing cached sync",e.t0.stack||e.t0);case 13:this._storeIsInvalid||this._updateSyncState("PREPARED",r);case 14:case"end":return e.stop()}},e,this,[[5,10]])}));return function(t){return e.apply(this,arguments)}}(),b.prototype._sync=function(){var e=(0,s.coroutine)(a.default.mark(function e(t){var n,r,o,i;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.client,this._running){e.next=6;break}return y("Sync no longer running: exiting."),this._connectionReturnedDefer&&(this._connectionReturnedDefer.reject(),this._connectionReturnedDefer=null),this._updateSyncState("STOPPED"),e.abrupt("return");case 6:return r=n.store.getSyncToken(),o=void 0,e.prev=8,null===this._currentSyncRequest&&(this._currentSyncRequest=this._doSyncRequest(t,r)),e.next=12,(0,s.resolve)(this._currentSyncRequest);case 12:o=e.sent,e.next=19;break;case 15:return e.prev=15,e.t0=e.catch(8),this._onSyncError(e.t0,t),e.abrupt("return");case 19:return e.prev=19,this._currentSyncRequest=null,e.finish(19);case 22:return n.store.setSyncToken(o.next_batch),this._failedSyncCount=0,e.next=26,(0,s.resolve)(n.store.setSyncData(o));case 26:if(i={oldSyncToken:r,nextSyncToken:o.next_batch,catchingUp:this._catchingUp},!this.opts.crypto){e.next=30;break}return e.next=30,(0,s.resolve)(this.opts.crypto.onSyncWillProcess(i));case 30:return e.prev=30,e.next=33,(0,s.resolve)(this._processSyncResponse(i,o));case 33:e.next=38;break;case 35:e.prev=35,e.t1=e.catch(30),console.error("Caught /sync error",e.t1.stack||e.t1);case 38:if(i.catchingUp=this._catchingUp,t.hasSyncedBefore||(this._updateSyncState("PREPARED",i),t.hasSyncedBefore=!0),!this.opts.crypto){e.next=43;break}return e.next=43,(0,s.resolve)(this.opts.crypto.onSyncCompleted(i));case 43:if(this._updateSyncState("SYNCING",i),!n.store.wantsSave()){e.next=49;break}if(!this.opts.crypto){e.next=48;break}return e.next=48,(0,s.resolve)(this.opts.crypto.saveDeviceList(0));case 48:n.store.save();case 49:this._sync(t);case 50:case"end":return e.stop()}},e,this,[[8,15,19,22],[30,35]])}));return function(t){return e.apply(this,arguments)}}(),b.prototype._doSyncRequest=function(e,t){var n=this._getSyncParams(e,t);return this.client._http.authedRequest(void 0,"GET","/sync",n,void 0,n.timeout+8e4)},b.prototype._getSyncParams=function(e,t){var n=this.opts.pollTimeout;("SYNCING"!==this.getSyncState()||this._catchingUp)&&(this._catchingUp=!0,n=0);var r=e.filterId;this.client.isGuest()&&!r&&(r=this._getGuestFilter());var o={filter:r,timeout:n};return this.opts.disablePresence&&(o.set_presence="offline"),t?o.since=t:o._cacheBuster=Date.now(),"ERROR"!=this.getSyncState()&&"RECONNECTING"!=this.getSyncState()||(o.timeout=0),o},b.prototype._onSyncError=function(e,t){var n=this;if(!this._running)return y("Sync no longer running: exiting"),this._connectionReturnedDefer&&(this._connectionReturnedDefer.reject(),this._connectionReturnedDefer=null),void this._updateSyncState("STOPPED");console.error("/sync error %s",e),console.error(e),this._failedSyncCount++,console.log("Number of consecutive failed sync requests:",this._failedSyncCount),y("Starting keep-alive"),this._startKeepAlives().then(function(e){e&&"ERROR"===n.getSyncState()&&n._updateSyncState("CATCHUP",{oldSyncToken:null,nextSyncToken:null,catchingUp:!0}),n._sync(t)}),this._currentSyncRequest=null,this._updateSyncState(this._failedSyncCount>=3?"ERROR":"RECONNECTING",{error:e})},b.prototype._processSyncResponse=function(){var e=(0,s.coroutine)(a.default.mark(function e(t,n){var r,o,i,u,c,f,d;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=this.client,o=this,n.presence&&m.isArray(n.presence.events)&&n.presence.events.map(r.getEventMapper()).forEach(function(e){var t=r.store.getUser(e.getSender());t?t.setPresenceEvent(e):((t=E(r,e.getSender())).setPresenceEvent(e),r.store.storeUser(t)),r.emit("event",e)}),n.account_data&&m.isArray(n.account_data.events)&&(i=n.account_data.events.map(r.getEventMapper()),r.store.storeAccountDataEvents(i),i.forEach(function(e){return"m.push_rules"==e.getType()&&(r.pushRules=e.getContent()),r.emit("accountData",e),e})),n.to_device&&m.isArray(n.to_device.events)&&n.to_device.events.length>0?n.to_device.events.map(r.getEventMapper()).forEach(function(e){var t=e.getContent();"m.room.message"!=e.getType()||"m.bad.encrypted"!=t.msgtype?r.emit("toDeviceEvent",e):console.log("Ignoring undecryptable to-device event from "+e.getSender())}):this._catchingUp=!1,n.groups&&(n.groups.invite&&this._processGroupSyncEntry(n.groups.invite,"invite"),n.groups.join&&this._processGroupSyncEntry(n.groups.join,"join"),n.groups.leave&&this._processGroupSyncEntry(n.groups.leave,"leave")),u=[],c=[],f=[],n.rooms&&(n.rooms.invite&&(u=this._mapSyncResponseToRoomArray(n.rooms.invite)),n.rooms.join&&(c=this._mapSyncResponseToRoomArray(n.rooms.join)),n.rooms.leave&&(f=this._mapSyncResponseToRoomArray(n.rooms.leave))),this._notifEvents=[],u.forEach(function(e){var t=e.room,n=o._mapSyncEventsFormat(e.invite_state,t);t.updateMyMembership("invite"),o._processRoomEvents(t,n),e.isBrandNewRoom&&(t.recalculate(),r.store.storeRoom(t),r.emit("Room",t)),n.forEach(function(e){r.emit("event",e)})}),e.next=14,(0,s.resolve)(l.default.mapSeries(c,function(){var e=(0,s.coroutine)(a.default.mark(function e(n){var i,u,c,f,d,p,m,h,g=function(){var e=(0,s.coroutine)(a.default.mark(function e(t){return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r.emit("event",t),!t.isState()||"m.room.encryption"!=t.getType()||!o.opts.crypto){e.next=4;break}return e.next=4,(0,s.resolve)(o.opts.crypto.onCryptoEvent(t));case 4:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}();return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(i=n.room,u=o._mapSyncEventsFormat(n.state,i),c=o._mapSyncEventsFormat(n.timeline,i),f=o._mapSyncEventsFormat(n.ephemeral),d=o._mapSyncEventsFormat(n.account_data),n.unread_notifications&&(i.setUnreadNotificationCount("total",n.unread_notifications.notification_count),i.setUnreadNotificationCount("highlight",n.unread_notifications.highlight_count)),i.updateMyMembership("join"),n.timeline=n.timeline||{},!n.isBrandNewRoom){e.next=12;break}i.getLiveTimeline().setPaginationToken(n.timeline.prev_batch,_.BACKWARDS),e.next=26;break;case 12:if(!n.timeline.limited){e.next=26;break}p=!0,m=c.length-1;case 15:if(!(m>=0)){e.next=25;break}if(h=c[m].getId(),!i.getTimelineForEvent(h)){e.next=22;break}return y("Already have event "+h+" in limited sync - not resetting"),p=!1,c.splice(0,m),e.abrupt("break",25);case 22:m--,e.next=15;break;case 25:p&&(o._deregisterStateListeners(i),i.resetLiveTimeline(n.timeline.prev_batch,o.opts.canResetEntireTimeline(i.roomId)?null:t.oldSyncToken),r.resetNotifTimelineSet(),o._registerStateListeners(i));case 26:return o._processRoomEvents(i,u,c),n.summary&&i.setSummary(n.summary),i.addLiveEvents(f),i.addAccountData(d),i.recalculate(),n.isBrandNewRoom&&(r.store.storeRoom(i),r.emit("Room",i)),o._processEventsForNotifs(i,c),e.next=35,(0,s.resolve)(l.default.mapSeries(u,g));case 35:return e.next=37,(0,s.resolve)(l.default.mapSeries(c,g));case 37:f.forEach(function(e){r.emit("event",e)}),d.forEach(function(e){r.emit("event",e)});case 39:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()));case 14:if(f.forEach(function(e){var t=e.room,n=o._mapSyncEventsFormat(e.state,t),i=o._mapSyncEventsFormat(e.timeline,t),a=o._mapSyncEventsFormat(e.account_data);t.updateMyMembership("leave"),o._processRoomEvents(t,n,i),t.addAccountData(a),t.recalculate(),e.isBrandNewRoom&&(r.store.storeRoom(t),r.emit("Room",t)),o._processEventsForNotifs(t,i),n.forEach(function(e){r.emit("event",e)}),i.forEach(function(e){r.emit("event",e)}),a.forEach(function(e){r.emit("event",e)})}),t.oldSyncToken&&this._notifEvents.length&&(this._notifEvents.sort(function(e,t){return e.getTs()-t.getTs()}),this._notifEvents.forEach(function(e){r.getNotifTimelineSet().addLiveEvent(e)})),!n.device_lists){e.next=22;break}if(!this.opts.crypto){e.next=22;break}return e.next=20,(0,s.resolve)(this.opts.crypto.handleDeviceListChanges(t,n.device_lists));case 20:e.next=22;break;case 22:this.opts.crypto&&n.device_one_time_keys_count&&(d=n.device_one_time_keys_count.signed_curve25519||0,this.opts.crypto.updateOneTimeKeyCount(d));case 23:case"end":return e.stop()}},e,this)}));return function(t,n){return e.apply(this,arguments)}}(),b.prototype._startKeepAlives=function(e){void 0===e&&(e=2e3+Math.floor(5e3*Math.random())),null!==this._keepAliveTimer&&clearTimeout(this._keepAliveTimer);return e>0?this._keepAliveTimer=setTimeout(this._pokeKeepAlive.bind(this),e):this._pokeKeepAlive(),this._connectionReturnedDefer||(this._connectionReturnedDefer=l.default.defer()),this._connectionReturnedDefer.promise},b.prototype._pokeKeepAlive=function(e){void 0===e&&(e=!1);var t=this;function n(){clearTimeout(t._keepAliveTimer),t._connectionReturnedDefer&&(t._connectionReturnedDefer.resolve(e),t._connectionReturnedDefer=null)}this.client._http.request(void 0,"GET","/_matrix/client/versions",void 0,void 0,{prefix:"",localTimeoutMs:15e3}).done(function(){n()},function(r){400==r.httpStatus||404==r.httpStatus?t._keepAliveTimer=setTimeout(n,2e3):(e=!0,t._keepAliveTimer=setTimeout(t._pokeKeepAlive.bind(t,e),5e3+Math.floor(5e3*Math.random())),t._updateSyncState("ERROR",{error:r}))})},b.prototype._processGroupSyncEntry=function(e,t){var n=!0,r=!1,a=void 0;try{for(var s,l=(0,i.default)((0,o.default)(e));!(n=(s=l.next()).done);n=!0){var u=s.value,c=e[u],f=this.client.store.getGroup(u),d=null===f;null===f&&(f=this.createGroup(u)),c.profile&&f.setProfile(c.profile.name,c.profile.avatar_url),c.inviter&&f.setInviter({userId:c.inviter}),f.setMyMembership(t),d&&this.client.emit("Group",f)}}catch(e){r=!0,a=e}finally{try{!n&&l.return&&l.return()}finally{if(r)throw a}}},b.prototype._mapSyncResponseToRoomArray=function(e){var t=this.client,n=this;return m.keys(e).map(function(r){var o=e[r],i=t.store.getRoom(r),a=!1;return i||(i=n.createRoom(r),a=!0),o.room=i,o.isBrandNewRoom=a,o})},b.prototype._mapSyncEventsFormat=function(e,t){if(!e||!m.isArray(e.events))return[];var n=this.client.getEventMapper();return e.events.map(function(e){return t&&(e.room_id=t.roomId),n(e)})},b.prototype._resolveInvites=function(e){if(e&&this.opts.resolveInvitesToProfiles){var t=this.client;e.getMembersWithMembership("invite").forEach(function(n){if(!n._requestedProfileInfo){n._requestedProfileInfo=!0;var r=t.getUser(n.userId);(r?l.default.resolve({avatar_url:r.avatarUrl,displayname:r.displayName}):t.getProfileInfo(n.userId)).done(function(t){var r=n.events.member;"invite"===r.getContent().membership&&(r.getContent().avatar_url=t.avatar_url,r.getContent().displayname=t.displayname,n.setMembershipEvent(r,e.currentState))},function(e){})}})}},b.prototype._processRoomEvents=function(e,t,n){var r=e.getLiveTimeline(),o=0==r.getEvents().length;if(o){var a=!0,s=!1,l=void 0;try{for(var u,c=(0,i.default)(t);!(a=(u=c.next()).done);a=!0){var f=u.value;this.client.getPushActionsForEvent(f)}}catch(e){s=!0,l=e}finally{try{!a&&c.return&&c.return()}finally{if(s)throw l}}r.initialiseState(t)}this._resolveInvites(e),e.recalculate(),o||(e.oldState.setStateEvents(t||[]),e.currentState.setStateEvents(t||[])),e.addLiveEvents(n||[])},b.prototype._processEventsForNotifs=function(e,t){if(this.client.getNotifTimelineSet())for(var n=0;n<t.length;n++){var r=this.client.getPushActionsForEvent(t[n]);r&&r.notify&&r.tweaks&&r.tweaks.highlight&&this._notifEvents.push(t[n])}},b.prototype._getGuestFilter=function(){return this.client._guestRooms?(0,r.default)({room:{timeline:{limit:20}}}):"{}"},b.prototype._updateSyncState=function(e,t){var n=this._syncState;this._syncState=e,this._syncStateData=t,this.client.emit("sync",this._syncState,n,t)},b.prototype._onOnline=function(){y("Browser thinks we are back online"),this._startKeepAlives(0)},e.exports=b}).call(this,n(15))},function(e,t,n){n(1109),e.exports=n(18).Number.isInteger},function(e,t,n){var r=n(26);r(r.S,"Number",{isInteger:n(1110)})},function(e,t,n){var r=n(35),o=Math.floor;e.exports=function(e){return!r(e)&&isFinite(e)&&o(e)===e}},function(e,t,n){n(190),n(86),n(113),n(1112),n(1114),n(1115),e.exports=n(18).Promise},function(e,t,n){"use strict";var r,o,i,a,s=n(135),l=n(34),u=n(66),c=n(164),f=n(26),d=n(35),p=n(94),m=n(398),h=n(230),_=n(589),g=n(404).set,v=n(1113)(),y=n(405),b=n(590),E=n(591),C=l.TypeError,S=l.process,D=l.Promise,w="process"==c(S),T=function(){},x=o=y.f,R=!!function(){try{var e=D.resolve(1),t=(e.constructor={})[n(38)("species")]=function(e){e(T,T)};return(w||"function"==typeof PromiseRejectionEvent)&&e.then(T)instanceof t}catch(e){}}(),k=function(e){var t;return!(!d(e)||"function"!=typeof(t=e.then))&&t},N=function(e,t){if(!e._n){e._n=!0;var n=e._c;v(function(){for(var r=e._v,o=1==e._s,i=0,a=function(t){var n,i,a=o?t.ok:t.fail,s=t.resolve,l=t.reject,u=t.domain;try{a?(o||(2==e._h&&A(e),e._h=1),!0===a?n=r:(u&&u.enter(),n=a(r),u&&u.exit()),n===t.promise?l(C("Promise-chain cycle")):(i=k(n))?i.call(n,s,l):s(n)):l(r)}catch(e){l(e)}};n.length>i;)a(n[i++]);e._c=[],e._n=!1,t&&!e._h&&I(e)})}},I=function(e){g.call(l,function(){var t,n,r,o=e._v,i=O(e);if(i&&(t=b(function(){w?S.emit("unhandledRejection",o,e):(n=l.onunhandledrejection)?n({promise:e,reason:o}):(r=l.console)&&r.error&&r.error("Unhandled promise rejection",o)}),e._h=w||O(e)?2:1),e._a=void 0,i&&t.e)throw t.v})},O=function(e){if(1==e._h)return!1;for(var t,n=e._a||e._c,r=0;n.length>r;)if((t=n[r++]).fail||!O(t.promise))return!1;return!0},A=function(e){g.call(l,function(){var t;w?S.emit("rejectionHandled",e):(t=l.onrejectionhandled)&&t({promise:e,reason:e._v})})},M=function(e){var t=this;t._d||(t._d=!0,(t=t._w||t)._v=e,t._s=2,t._a||(t._a=t._c.slice()),N(t,!0))},P=function(e){var t,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===e)throw C("Promise can't be resolved itself");(t=k(e))?v(function(){var r={_w:n,_d:!1};try{t.call(e,u(P,r,1),u(M,r,1))}catch(e){M.call(r,e)}}):(n._v=e,n._s=1,N(n,!1))}catch(e){M.call({_w:n,_d:!1},e)}}};R||(D=function(e){m(this,D,"Promise","_h"),p(e),r.call(this);try{e(u(P,this,1),u(M,this,1))}catch(e){M.call(this,e)}},(r=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n(397)(D.prototype,{then:function(e,t){var n=x(_(this,D));return n.ok="function"!=typeof e||e,n.fail="function"==typeof t&&t,n.domain=w?S.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&N(this,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),i=function(){var e=new r;this.promise=e,this.resolve=u(P,e,1),this.reject=u(M,e,1)},y.f=x=function(e){return e===D||e===a?new i(e):o(e)}),f(f.G+f.W+f.F*!R,{Promise:D}),n(122)(D,"Promise"),n(579)("Promise"),a=n(18).Promise,f(f.S+f.F*!R,"Promise",{reject:function(e){var t=x(this);return(0,t.reject)(e),t.promise}}),f(f.S+f.F*(s||!R),"Promise",{resolve:function(e){return E(s&&this===a?D:this,e)}}),f(f.S+f.F*!(R&&n(275)(function(e){D.all(e).catch(T)})),"Promise",{all:function(e){var t=this,n=x(t),r=n.resolve,o=n.reject,i=b(function(){var n=[],i=0,a=1;h(e,!1,function(e){var s=i++,l=!1;n.push(void 0),a++,t.resolve(e).then(function(e){l||(l=!0,n[s]=e,--a||r(n))},o)}),--a||r(n)});return i.e&&o(i.v),n.promise},race:function(e){var t=this,n=x(t),r=n.reject,o=b(function(){h(e,!1,function(e){t.resolve(e).then(n.resolve,r)})});return o.e&&r(o.v),n.promise}})},function(e,t,n){var r=n(34),o=n(404).set,i=r.MutationObserver||r.WebKitMutationObserver,a=r.process,s=r.Promise,l="process"==n(95)(a);e.exports=function(){var e,t,n,u=function(){var r,o;for(l&&(r=a.domain)&&r.exit();e;){o=e.fn,e=e.next;try{o()}catch(r){throw e?n():t=void 0,r}}t=void 0,r&&r.enter()};if(l)n=function(){a.nextTick(u)};else if(i){var c=!0,f=document.createTextNode("");new i(u).observe(f,{characterData:!0}),n=function(){f.data=c=!c}}else if(s&&s.resolve){var d=s.resolve();n=function(){d.then(u)}}else n=function(){o.call(r,u)};return function(r){var o={fn:r,next:void 0};t&&(t.next=o),e||(e=o,n()),t=o}}},function(e,t,n){"use strict";var r=n(26),o=n(18),i=n(34),a=n(589),s=n(591);r(r.P+r.R,"Promise",{finally:function(e){var t=a(this,o.Promise||i.Promise),n="function"==typeof e;return this.then(n?function(n){return s(t,e()).then(function(){return n})}:e,n?function(n){return s(t,e()).then(function(){throw n})}:e)}})},function(e,t,n){"use strict";var r=n(26),o=n(405),i=n(590);r(r.S,"Promise",{try:function(e){var t=o.f(this),n=i(e);return(n.e?t.reject:t.resolve)(n.v),t.promise}})},function(e,t,n){"use strict";e.exports=function(e,t){this.roomId=e,this.info=t}},function(e,t,n){"use strict";var r=i(n(64)),o=i(n(14));function i(e){return e&&e.__esModule?e:{default:e}}var a=n(286),s=n(29);function l(e){s.checkObjectHasKeys(e,["baseUrl","request"]),this.baseUrl=e.baseUrl,this.idBaseUrl=e.idBaseUrl;var t={baseUrl:e.baseUrl,idBaseUrl:e.idBaseUrl,accessToken:e.accessToken,request:e.request,prefix:a.PREFIX_R0,onlyData:!0,extraParams:e.queryParams,localTimeoutMs:e.localTimeoutMs,useAuthorizationHeader:e.useAuthorizationHeader};this._http=new a.MatrixHttpApi(this,t),this._txnCtr=0}l.prototype.getHomeserverUrl=function(){return this.baseUrl},l.prototype.getIdentityServerUrl=function(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&(this.idBaseUrl.startsWith("http://")||this.idBaseUrl.startsWith("https://"))?this.idBaseUrl.split("://")[1]:this.idBaseUrl},l.prototype.getAccessToken=function(){return this._http.opts.accessToken||null},l.prototype.isLoggedIn=function(){return void 0!==this._http.opts.accessToken},l.prototype.makeTxnId=function(){return"m"+(new Date).getTime()+"."+this._txnCtr++},l.prototype.isUsernameAvailable=function(e){return this._http.authedRequest(void 0,"GET","/register/available",{username:e}).then(function(e){return e.available})},l.prototype.register=function(e,t,n,r,o,i,a){!0===o?o={email:!0}:null!==o&&void 0!==o||(o={}),void 0!==r&&null!==r||(r={}),n&&(r.session=n);var s={auth:r};return void 0!==e&&null!==e&&(s.username=e),void 0!==t&&null!==t&&(s.password=t),o.email&&(s.bind_email=!0),o.msisdn&&(s.bind_msisdn=!0),void 0!==i&&null!==i&&(s.guest_access_token=i),void 0!==t&&null!==t&&(s.x_show_msisdn=!0),this.registerRequest(s,void 0,a)},l.prototype.registerGuest=function(e,t){return(e=e||{}).body=e.body||{},this.registerRequest(e.body,"guest",t)},l.prototype.registerRequest=function(e,t,n){var r={};return t&&(r.kind=t),this._http.request(n,"POST","/register",r,e)},l.prototype.loginFlows=function(e){return this._http.request(e,"GET","/login")},l.prototype.login=function(e,t,n){var r={type:e};return s.extend(r,t),this._http.authedRequest(n,"POST","/login",void 0,r)},l.prototype.loginWithPassword=function(e,t,n){return this.login("m.login.password",{user:e,password:t},n)},l.prototype.loginWithSAML2=function(e,t){return this.login("m.login.saml2",{relay_state:e},t)},l.prototype.getCasLoginUrl=function(e){return this._http.getUrl("/login/cas/redirect",{redirectUrl:e},a.PREFIX_UNSTABLE)},l.prototype.loginWithToken=function(e,t){return this.login("m.login.token",{token:e},t)},l.prototype.logout=function(e){return this._http.authedRequest(e,"POST","/logout")},l.prototype.deactivateAccount=function(e,t){if("function"==typeof t)throw new Error("deactivateAccount no longer accepts a callback parameter");var n={};return e&&(n.auth=e),void 0!==t&&(n.erase=t),this._http.authedRequestWithPrefix(void 0,"POST","/account/deactivate",void 0,n,a.PREFIX_R0)},l.prototype.getFallbackAuthUrl=function(e,t){var n=s.encodeUri("/auth/$loginType/fallback/web",{$loginType:e});return this._http.getUrl(n,{session:t},a.PREFIX_R0)},l.prototype.createRoom=function(e,t){return this._http.authedRequest(t,"POST","/createRoom",void 0,e)},l.prototype.roomState=function(e,t){var n=s.encodeUri("/rooms/$roomId/state",{$roomId:e});return this._http.authedRequest(t,"GET",n)},l.prototype.fetchRoomEvent=function(e,t,n){var r=s.encodeUri("/rooms/$roomId/event/$eventId",{$roomId:e,$eventId:t});return this._http.authedRequest(n,"GET",r)},l.prototype.members=function(e,t,n,r,o){var i={};t&&(i.membership=t),n&&(i.not_membership=n),r&&(i.at=r);var a=s.encodeParams(i),l=s.encodeUri("/rooms/$roomId/members?"+a,{$roomId:e});return this._http.authedRequest(o,"GET",l)},l.prototype.upgradeRoom=function(e,t){var n=s.encodeUri("/rooms/$roomId/upgrade",{$roomId:e});return this._http.authedRequest(void 0,"POST",n,void 0,{new_version:t})},l.prototype.getGroupSummary=function(e){var t=s.encodeUri("/groups/$groupId/summary",{$groupId:e});return this._http.authedRequest(void 0,"GET",t)},l.prototype.getGroupProfile=function(e){var t=s.encodeUri("/groups/$groupId/profile",{$groupId:e});return this._http.authedRequest(void 0,"GET",t)},l.prototype.setGroupProfile=function(e,t){var n=s.encodeUri("/groups/$groupId/profile",{$groupId:e});return this._http.authedRequest(void 0,"POST",n,void 0,t)},l.prototype.setGroupJoinPolicy=function(e,t){var n=s.encodeUri("/groups/$groupId/settings/m.join_policy",{$groupId:e});return this._http.authedRequest(void 0,"PUT",n,void 0,{"m.join_policy":t})},l.prototype.getGroupUsers=function(e){var t=s.encodeUri("/groups/$groupId/users",{$groupId:e});return this._http.authedRequest(void 0,"GET",t)},l.prototype.getGroupInvitedUsers=function(e){var t=s.encodeUri("/groups/$groupId/invited_users",{$groupId:e});return this._http.authedRequest(void 0,"GET",t)},l.prototype.getGroupRooms=function(e){var t=s.encodeUri("/groups/$groupId/rooms",{$groupId:e});return this._http.authedRequest(void 0,"GET",t)},l.prototype.inviteUserToGroup=function(e,t){var n=s.encodeUri("/groups/$groupId/admin/users/invite/$userId",{$groupId:e,$userId:t});return this._http.authedRequest(void 0,"PUT",n,void 0,{})},l.prototype.removeUserFromGroup=function(e,t){var n=s.encodeUri("/groups/$groupId/admin/users/remove/$userId",{$groupId:e,$userId:t});return this._http.authedRequest(void 0,"PUT",n,void 0,{})},l.prototype.addUserToGroupSummary=function(e,t,n){var r=s.encodeUri(n?"/groups/$groupId/summary/$roleId/users/$userId":"/groups/$groupId/summary/users/$userId",{$groupId:e,$roleId:n,$userId:t});return this._http.authedRequest(void 0,"PUT",r,void 0,{})},l.prototype.removeUserFromGroupSummary=function(e,t){var n=s.encodeUri("/groups/$groupId/summary/users/$userId",{$groupId:e,$userId:t});return this._http.authedRequest(void 0,"DELETE",n,void 0,{})},l.prototype.addRoomToGroupSummary=function(e,t,n){var r=s.encodeUri(n?"/groups/$groupId/summary/$categoryId/rooms/$roomId":"/groups/$groupId/summary/rooms/$roomId",{$groupId:e,$categoryId:n,$roomId:t});return this._http.authedRequest(void 0,"PUT",r,void 0,{})},l.prototype.removeRoomFromGroupSummary=function(e,t){var n=s.encodeUri("/groups/$groupId/summary/rooms/$roomId",{$groupId:e,$roomId:t});return this._http.authedRequest(void 0,"DELETE",n,void 0,{})},l.prototype.addRoomToGroup=function(e,t,n){void 0===n&&(n=!0);var r=s.encodeUri("/groups/$groupId/admin/rooms/$roomId",{$groupId:e,$roomId:t});return this._http.authedRequest(void 0,"PUT",r,void 0,{"m.visibility":{type:n?"public":"private"}})},l.prototype.updateGroupRoomVisibility=function(e,t,n){var r=s.encodeUri("/groups/$groupId/admin/rooms/$roomId/config/m.visibility",{$groupId:e,$roomId:t});return this._http.authedRequest(void 0,"PUT",r,void 0,{type:n?"public":"private"})},l.prototype.removeRoomFromGroup=function(e,t){var n=s.encodeUri("/groups/$groupId/admin/rooms/$roomId",{$groupId:e,$roomId:t});return this._http.authedRequest(void 0,"DELETE",n,void 0,{})},l.prototype.acceptGroupInvite=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=s.encodeUri("/groups/$groupId/self/accept_invite",{$groupId:e});return this._http.authedRequest(void 0,"PUT",n,void 0,t||{})},l.prototype.joinGroup=function(e){var t=s.encodeUri("/groups/$groupId/self/join",{$groupId:e});return this._http.authedRequest(void 0,"PUT",t,void 0,{})},l.prototype.leaveGroup=function(e){var t=s.encodeUri("/groups/$groupId/self/leave",{$groupId:e});return this._http.authedRequest(void 0,"PUT",t,void 0,{})},l.prototype.getJoinedGroups=function(){var e=s.encodeUri("/joined_groups");return this._http.authedRequest(void 0,"GET",e)},l.prototype.createGroup=function(e){var t=s.encodeUri("/create_group");return this._http.authedRequest(void 0,"POST",t,void 0,e)},l.prototype.getPublicisedGroups=function(e){var t=s.encodeUri("/publicised_groups");return this._http.authedRequest(void 0,"POST",t,void 0,{user_ids:e})},l.prototype.setGroupPublicity=function(e,t){var n=s.encodeUri("/groups/$groupId/self/update_publicity",{$groupId:e});return this._http.authedRequest(void 0,"PUT",n,void 0,{publicise:t})},l.prototype.getStateEvent=function(e,t,n,r){var o={$roomId:e,$eventType:t,$stateKey:n},i=s.encodeUri("/rooms/$roomId/state/$eventType",o);return void 0!==n&&(i=s.encodeUri(i+"/$stateKey",o)),this._http.authedRequest(r,"GET",i)},l.prototype.sendStateEvent=function(e,t,n,r,o){var i={$roomId:e,$eventType:t,$stateKey:r},a=s.encodeUri("/rooms/$roomId/state/$eventType",i);return void 0!==r&&(a=s.encodeUri(a+"/$stateKey",i)),this._http.authedRequest(o,"PUT",a,void 0,n)},l.prototype.redactEvent=function(e,t,n){var r=s.encodeUri("/rooms/$roomId/redact/$eventId",{$roomId:e,$eventId:t});return this._http.authedRequest(n,"POST",r,void 0,{})},l.prototype.roomInitialSync=function(e,t,n){s.isFunction(t)&&(n=t,t=void 0);var r=s.encodeUri("/rooms/$roomId/initialSync",{$roomId:e});return t||(t=30),this._http.authedRequest(n,"GET",r,{limit:t})},l.prototype.setRoomReadMarkersHttpRequest=function(e,t,n){var r=s.encodeUri("/rooms/$roomId/read_markers",{$roomId:e}),o={"m.fully_read":t,"m.read":n};return this._http.authedRequest(void 0,"POST",r,void 0,o)},l.prototype.publicRooms=function(e,t){"function"==typeof e&&(t=e,e={}),void 0===e&&(e={});var n={};return e.server&&(n.server=e.server,delete e.server),0===(0,o.default)(e).length&&0===(0,o.default)(n).length?this._http.authedRequest(t,"GET","/publicRooms"):this._http.authedRequest(t,"POST","/publicRooms",n,e)},l.prototype.createAlias=function(e,t,n){var r=s.encodeUri("/directory/room/$alias",{$alias:e}),o={room_id:t};return this._http.authedRequest(n,"PUT",r,void 0,o)},l.prototype.deleteAlias=function(e,t){var n=s.encodeUri("/directory/room/$alias",{$alias:e});return this._http.authedRequest(t,"DELETE",n,void 0,void 0)},l.prototype.getRoomIdForAlias=function(e,t){var n=s.encodeUri("/directory/room/$alias",{$alias:e});return this._http.authedRequest(t,"GET",n)},l.prototype.resolveRoomAlias=function(e,t){var n=s.encodeUri("/directory/room/$alias",{$alias:e});return this._http.request(t,"GET",n)},l.prototype.getRoomDirectoryVisibility=function(e,t){var n=s.encodeUri("/directory/list/room/$roomId",{$roomId:e});return this._http.authedRequest(t,"GET",n)},l.prototype.setRoomDirectoryVisibility=function(e,t,n){var r=s.encodeUri("/directory/list/room/$roomId",{$roomId:e});return this._http.authedRequest(n,"PUT",r,void 0,{visibility:t})},l.prototype.setRoomDirectoryVisibilityAppService=function(e,t,n,r){var o=s.encodeUri("/directory/list/appservice/$networkId/$roomId",{$networkId:e,$roomId:t});return this._http.authedRequest(r,"PUT",o,void 0,{visibility:n})},l.prototype.searchUserDirectory=function(e){var t={search_term:e.term};return void 0!==e.limit&&(t.limit=e.limit),this._http.authedRequest(void 0,"POST","/user_directory/search",void 0,t)},l.prototype.uploadContent=function(e,t){return this._http.uploadContent(e,t)},l.prototype.cancelUpload=function(e){return this._http.cancelUpload(e)},l.prototype.getCurrentUploads=function(){return this._http.getCurrentUploads()},l.prototype.getProfileInfo=function(e,t,n){s.isFunction(t)&&(n=t,t=void 0);var r=t?s.encodeUri("/profile/$userId/$info",{$userId:e,$info:t}):s.encodeUri("/profile/$userId",{$userId:e});return this._http.authedRequest(n,"GET",r)},l.prototype.getThreePids=function(e){return this._http.authedRequest(e,"GET","/account/3pid",void 0,void 0)},l.prototype.addThreePid=function(e,t,n){var r={threePidCreds:e,bind:t};return this._http.authedRequest(n,"POST","/account/3pid",null,r)},l.prototype.deleteThreePid=function(e,t){var n={medium:e,address:t};return this._http.authedRequestWithPrefix(void 0,"POST","/account/3pid/delete",null,n,a.PREFIX_UNSTABLE)},l.prototype.setPassword=function(e,t,n){var r={auth:e,new_password:t};return this._http.authedRequest(n,"POST","/account/password",null,r)},l.prototype.getDevices=function(){return this._http.authedRequestWithPrefix(void 0,"GET","/devices",void 0,void 0,a.PREFIX_UNSTABLE)},l.prototype.setDeviceDetails=function(e,t){var n=s.encodeUri("/devices/$device_id",{$device_id:e});return this._http.authedRequestWithPrefix(void 0,"PUT",n,void 0,t,a.PREFIX_UNSTABLE)},l.prototype.deleteDevice=function(e,t){var n=s.encodeUri("/devices/$device_id",{$device_id:e}),r={};return t&&(r.auth=t),this._http.authedRequestWithPrefix(void 0,"DELETE",n,void 0,r,a.PREFIX_UNSTABLE)},l.prototype.deleteMultipleDevices=function(e,t){var n={devices:e};return t&&(n.auth=t),this._http.authedRequestWithPrefix(void 0,"POST","/delete_devices",void 0,n,a.PREFIX_UNSTABLE)},l.prototype.getPushers=function(e){return this._http.authedRequest(e,"GET","/pushers",void 0,void 0)},l.prototype.setPusher=function(e,t){return this._http.authedRequest(t,"POST","/pushers/set",null,e)},l.prototype.getPushRules=function(e){return this._http.authedRequest(e,"GET","/pushrules/")},l.prototype.addPushRule=function(e,t,n,r,o){var i=s.encodeUri("/pushrules/"+e+"/$kind/$ruleId",{$kind:t,$ruleId:n});return this._http.authedRequest(o,"PUT",i,void 0,r)},l.prototype.deletePushRule=function(e,t,n,r){var o=s.encodeUri("/pushrules/"+e+"/$kind/$ruleId",{$kind:t,$ruleId:n});return this._http.authedRequest(r,"DELETE",o)},l.prototype.setPushRuleEnabled=function(e,t,n,r,o){var i=s.encodeUri("/pushrules/"+e+"/$kind/$ruleId/enabled",{$kind:t,$ruleId:n});return this._http.authedRequest(o,"PUT",i,void 0,{enabled:r})},l.prototype.setPushRuleActions=function(e,t,n,r,o){var i=s.encodeUri("/pushrules/"+e+"/$kind/$ruleId/actions",{$kind:t,$ruleId:n});return this._http.authedRequest(o,"PUT",i,void 0,{actions:r})},l.prototype.search=function(e,t){var n={};return e.next_batch&&(n.next_batch=e.next_batch),this._http.authedRequest(t,"POST","/search",n,e.body)},l.prototype.uploadKeysRequest=function(e,t,n){var r=(t=t||{}).device_id,o=void 0;return o=r?s.encodeUri("/keys/upload/$deviceId",{$deviceId:r}):"/keys/upload",this._http.authedRequestWithPrefix(n,"POST",o,void 0,e,a.PREFIX_UNSTABLE)},l.prototype.downloadKeysForUsers=function(e,t){if(s.isFunction(t))throw new Error("downloadKeysForUsers no longer accepts a callback parameter");var n={device_keys:{}};return"token"in(t=t||{})&&(n.token=t.token),e.forEach(function(e){n.device_keys[e]={}}),this._http.authedRequestWithPrefix(void 0,"POST","/keys/query",void 0,n,a.PREFIX_UNSTABLE)},l.prototype.claimOneTimeKeys=function(e,t){var n={};void 0===t&&(t="signed_curve25519");for(var r=0;r<e.length;++r){var o=e[r][0],i=e[r][1],s=n[o]||{};n[o]=s,s[i]=t}var l={one_time_keys:n};return this._http.authedRequestWithPrefix(void 0,"POST","/keys/claim",void 0,l,a.PREFIX_UNSTABLE)},l.prototype.getKeyChanges=function(e,t){var n={from:e,to:t};return this._http.authedRequestWithPrefix(void 0,"GET","/keys/changes",n,void 0,a.PREFIX_UNSTABLE)},l.prototype.requestEmailToken=function(e,t,n,r,o){var i={client_secret:t,email:e,send_attempt:n,next_link:r};return this._http.idServerRequest(o,"POST","/validate/email/requestToken",i,a.PREFIX_IDENTITY_V1)},l.prototype.submitMsisdnToken=function(e,t,n){var r={sid:e,client_secret:t,token:n};return this._http.idServerRequest(void 0,"POST","/validate/msisdn/submitToken",r,a.PREFIX_IDENTITY_V1)},l.prototype.lookupThreePid=function(e,t,n){var r={medium:e,address:t};return this._http.idServerRequest(n,"GET","/lookup",r,a.PREFIX_IDENTITY_V1)},l.prototype.sendToDevice=function(e,t,n){var r=s.encodeUri("/sendToDevice/$eventType/$txnId",{$eventType:e,$txnId:n||this.makeTxnId()}),o={messages:t};return this._http.authedRequestWithPrefix(void 0,"PUT",r,void 0,o,a.PREFIX_UNSTABLE)},l.prototype.getThirdpartyProtocols=function(){return this._http.authedRequestWithPrefix(void 0,"GET","/thirdparty/protocols",void 0,void 0,a.PREFIX_UNSTABLE).then(function(e){if(!e||"object"!==(void 0===e?"undefined":(0,r.default)(e)))throw new Error("/thirdparty/protocols did not return an object: "+e);return e})},l.prototype.getThirdpartyLocation=function(e,t){var n=s.encodeUri("/thirdparty/location/$protocol",{$protocol:e});return this._http.authedRequestWithPrefix(void 0,"GET",n,t,void 0,a.PREFIX_UNSTABLE)},e.exports=l},function(e,t,n){"use strict";var r=h(n(4)),o=h(n(20)),i=h(n(138)),a=h(n(40)),s=h(n(31)),l=n(9),u=h(l),c=h(n(19)),f=function(){var e=(0,l.coroutine)(c.default.mark(function e(t){var n,r,o,i,a,s;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,l.resolve)(t._olmDevice.getOneTimeKeys());case 2:for(i in n=e.sent,r={},o=[],n.curve25519)n.curve25519.hasOwnProperty(i)&&(a={key:n.curve25519[i]},r["signed_curve25519:"+i]=a,o.push(t._signObject(a)));return e.next=8,(0,l.resolve)(u.default.all(o));case 8:return e.next=10,(0,l.resolve)(t._baseApis.uploadKeysRequest({one_time_keys:r},{device_id:t._deviceId}));case 10:return s=e.sent,e.next=13,(0,l.resolve)(t._olmDevice.markKeysAsPublished());case 13:return e.abrupt("return",s);case 14:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),d=n(55),p=h(n(1119)),m=h(n(231));function h(e){return e&&e.__esModule?e:{default:e}}var _=n(593),g=n(29),v=n(1120),y=n(289),b=n(1121),E=n(408),C=E.DeviceVerification,S=n(1124).default;function D(e,t,n,r,o,i,a){this._baseApis=e,this._sessionStore=t,this._userId=n,this._deviceId=r,this._clientStore=o,this._cryptoStore=i,this._roomList=a,this._olmDevice=new v(t,i),this._deviceList=new S(e,i,t,this._olmDevice),this._lastOneTimeKeyCheck=null,this._oneTimeKeyCheckInProgress=!1,this._roomEncryptors={},this._roomDecryptors={},this._supportedAlgorithms=g.keys(b.DECRYPTION_CLASSES),this._deviceKeys={},this._globalBlacklistUnverifiedDevices=!1,this._outgoingRoomKeyRequestManager=new p.default(e,this._deviceId,this._cryptoStore),this._receivedRoomKeyRequests=[],this._receivedRoomKeyRequestCancellations=[],this._processingRoomKeyRequests=!1,this._lazyLoadMembers=!1,this._roomDeviceTrackingState={}}function w(e){var t=5;if(!e._oneTimeKeyCheckInProgress){var n=Date.now();if(!(null!==e._lastOneTimeKeyCheck&&n-e._lastOneTimeKeyCheck<6e4)){e._lastOneTimeKeyCheck=n;var r=e._olmDevice.maxNumberOfOneTimeKeys(),o=Math.floor(r/2);e._oneTimeKeyCheckInProgress=!0,u.default.resolve().then(function(){return void 0!==e._oneTimeKeyCount?u.default.resolve(e._oneTimeKeyCount):e._baseApis.uploadKeysRequest({},{device_id:e._deviceId}).then(function(e){return e.one_time_key_counts.signed_curve25519||0})}).then(function(n){return function n(r){if(o<=r)return u.default.resolve();var i=Math.min(o-r,t);return e._olmDevice.generateOneTimeKeys(i).then(function(){return f(e)}).then(function(e){if(e.one_time_key_counts&&e.one_time_key_counts.signed_curve25519)return n(e.one_time_key_counts.signed_curve25519);throw new Error("response for uploading keys does not contain one_time_key_counts.signed_curve25519")})}(n)}).catch(function(e){console.error("Error uploading one-time keys",e.stack||e)}).finally(function(){e._oneTimeKeyCount=void 0,e._oneTimeKeyCheckInProgress=!1}).done()}}}g.inherits(D,d.EventEmitter),D.prototype.init=(0,l.coroutine)(c.default.mark(function e(){var t,n,r,o,i=this;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=Boolean(this._sessionStore.getEndToEndAccount()),n=void 0,e.next=4,(0,l.resolve)(this._cryptoStore.doTxn("readonly",[m.default.STORE_ACCOUNT],function(e){i._cryptoStore.getAccount(e,function(e){n=Boolean(e)})}));case 4:return t&&!n?this.emit("crypto.warning","CRYPTO_WARNING_ACCOUNT_MIGRATED"):t&&n&&this.emit("crypto.warning","CRYPTO_WARNING_OLD_VERSION_DETECTED"),e.next=7,(0,l.resolve)(this._olmDevice.init());case 7:return e.next=9,(0,l.resolve)(this._deviceList.load());case 9:this._deviceKeys["ed25519:"+this._deviceId]=this._olmDevice.deviceEd25519Key,this._deviceKeys["curve25519:"+this._deviceId]=this._olmDevice.deviceCurve25519Key,(r=this._deviceList.getRawStoredDevicesForUser(this._userId))||(r={}),r[this._deviceId]||(o={keys:this._deviceKeys,algorithms:this._supportedAlgorithms,verified:C.VERIFIED,known:!0},r[this._deviceId]=o,this._deviceList.storeDevicesForUser(this._userId,r),this._deviceList.saveIfDirty());case 14:case"end":return e.stop()}},e,this)})),D.prototype.enableLazyLoading=function(){this._lazyLoadMembers=!0},D.prototype.registerEventHandlers=function(e){var t=this;e.on("RoomMember.membership",function(e,n,r){try{t._onRoomMembership(e,n,r)}catch(e){console.error("Error handling membership change:",e)}}),e.on("toDeviceEvent",function(e){t._onToDeviceEvent(e)})},D.prototype.start=function(){this._outgoingRoomKeyRequestManager.start()},D.prototype.stop=function(){this._outgoingRoomKeyRequestManager.stop()},D.getOlmVersion=function(){return v.getOlmVersion()},D.prototype.getDeviceEd25519Key=function(){return this._olmDevice.deviceEd25519Key},D.prototype.setGlobalBlacklistUnverifiedDevices=function(e){this._globalBlacklistUnverifiedDevices=e},D.prototype.getGlobalBlacklistUnverifiedDevices=function(){return this._globalBlacklistUnverifiedDevices},D.prototype.uploadDeviceKeys=function(){var e=this,t=e._userId,n=e._deviceId,r={algorithms:e._supportedAlgorithms,device_id:n,keys:e._deviceKeys,user_id:t};return e._signObject(r).then(function(){e._baseApis.uploadKeysRequest({device_keys:r},{device_id:n})})},D.prototype.updateOneTimeKeyCount=function(e){if(!isFinite(e))throw new TypeError("Parameter for updateOneTimeKeyCount has to be a number");this._oneTimeKeyCount=e},D.prototype.downloadKeys=function(e,t){return this._deviceList.downloadKeys(e,t)},D.prototype.getStoredDevicesForUser=function(e){return this._deviceList.getStoredDevicesForUser(e)},D.prototype.getStoredDevice=function(e,t){return this._deviceList.getStoredDevice(e,t)},D.prototype.saveDeviceList=function(e){return this._deviceList.saveIfDirty(e)},D.prototype.setDeviceVerification=function(){var e=(0,l.method)(function(e,t,n,r,o){var i=this._deviceList.getRawStoredDevicesForUser(e);if(!i||!i[t])throw new Error("Unknown device "+e+":"+t);var a=i[t],s=a.verified;n?s=C.VERIFIED:null!==n&&s==C.VERIFIED&&(s=C.UNVERIFIED),r?s=C.BLOCKED:null!==r&&s==C.BLOCKED&&(s=C.UNVERIFIED);var l=a.known;return null!==o&&void 0!==o&&(l=o),a.verified===s&&a.known===l||(a.verified=s,a.known=l,this._deviceList.storeDevicesForUser(e,i),this._deviceList.saveIfDirty()),E.fromStorage(a,t)});return function(t,n,r,o,i){return e.apply(this,arguments)}}(),D.prototype.getOlmSessionsForUser=function(){var e=(0,l.coroutine)(c.default.mark(function e(t){var n,r,o,i,a,s;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=this.getStoredDevicesForUser(t)||[],r={},o=0;case 3:if(!(o<n.length)){e.next=13;break}return i=n[o],a=i.getIdentityKey(),e.next=8,(0,l.resolve)(this._olmDevice.getSessionInfoForDevice(a));case 8:s=e.sent,r[i.deviceId]={deviceIdKey:a,sessions:s};case 10:++o,e.next=3;break;case 13:return e.abrupt("return",r);case 14:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),D.prototype.getEventSenderDeviceInfo=function(e){var t=e.getSenderKey(),n=e.getWireContent().algorithm;if(!t||!n)return null;if(e.getForwardingCurve25519KeyChain().length>0)return null;var r=this._deviceList.getDeviceByIdentityKey(e.getSender(),n,t);if(null===r)return null;var o=e.getClaimedEd25519Key();return o?o!==r.getFingerprint()?(console.warn("Event "+e.getId()+" claims ed25519 key "+o+"but sender device has key "+r.getFingerprint()),null):r:(console.warn("Event "+e.getId()+" claims no ed25519 key: cannot verify sending device"),null)},D.prototype.forceDiscardSession=function(e){var t=this._roomEncryptors[e];if(void 0===t)throw new Error("Room not encrypted");if(void 0===t.forceDiscardSession)throw new Error("Room encryption algorithm doesn't support session discarding");t.forceDiscardSession()},D.prototype.setRoomEncryption=function(){var e=(0,l.coroutine)(c.default.mark(function e(t,n,r){var o,i,a,u;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!(o=this._roomList.getRoomEncryption(t))){e.next=5;break}if((0,s.default)(o)==(0,s.default)(n)){e.next=5;break}return console.error("Ignoring m.room.encryption event which requests a change of config in "+t),e.abrupt("return");case 5:if(!this._roomEncryptors[t]){e.next=8;break}return e.abrupt("return");case 8:if(i=null,o||(i=this._roomList.setRoomEncryption(t,n)),a=b.ENCRYPTION_CLASSES[n.algorithm]){e.next=13;break}throw new Error("Unable to encrypt with "+n.algorithm);case 13:if(u=new a({userId:this._userId,deviceId:this._deviceId,crypto:this,olmDevice:this._olmDevice,baseApis:this._baseApis,roomId:t,config:n}),this._roomEncryptors[t]=u,!i){e.next=18;break}return e.next=18,(0,l.resolve)(i);case 18:if(this._lazyLoadMembers){e.next=25;break}return console.log("Enabling encryption in "+t+"; starting to track device lists for all users therein"),e.next=22,(0,l.resolve)(this.trackRoomDevices(t));case 22:this.inhibitDeviceQuery||this._deviceList.refreshOutdatedDeviceLists(),e.next=26;break;case 25:console.log("Enabling encryption in "+t);case 26:case"end":return e.stop()}},e,this)}));return function(t,n,r){return e.apply(this,arguments)}}(),D.prototype.trackRoomDevices=function(e){var t=this,n=function(){var n=(0,l.coroutine)(c.default.mark(function n(){var r;return c.default.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:if(t._roomEncryptors[e]){n.next=2;break}return n.abrupt("return");case 2:if(r=t._clientStore.getRoom(e)){n.next=5;break}throw new Error("Unable to start tracking devices in unknown room "+e);case 5:return console.log("Starting to track devices for room "+e+" ..."),n.next=8,(0,l.resolve)(r.getEncryptionTargetMembers());case 8:n.sent.forEach(function(e){t._deviceList.startTrackingDeviceList(e.userId)});case 10:case"end":return n.stop()}},n,t)}));return function(){return n.apply(this,arguments)}}(),r=this._roomDeviceTrackingState[e];return r||(r=n(),this._roomDeviceTrackingState[e]=r),r},D.prototype.ensureOlmSessionsForUsers=function(e){for(var t={},n=0;n<e.length;++n){var r=e[n];t[r]=[];for(var o=this.getStoredDevicesForUser(r)||[],i=0;i<o.length;++i){var a=o[i];a.getIdentityKey()!=this._olmDevice.deviceCurve25519Key&&(a.verified!=C.BLOCKED&&t[r].push(a))}}return y.ensureOlmSessionsForDevices(this._olmDevice,this._baseApis,t)},D.prototype.exportRoomKeys=(0,l.coroutine)(c.default.mark(function e(){var t,n=this;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=[],e.next=3,(0,l.resolve)(this._cryptoStore.doTxn("readonly",[m.default.STORE_INBOUND_GROUP_SESSIONS],function(e){n._cryptoStore.getAllEndToEndInboundGroupSessions(e,function(e){if(null!==e){var r=n._olmDevice.exportInboundGroupSession(e.senderKey,e.sessionId,e.sessionData);r.algorithm=y.MEGOLM_ALGORITHM,t.push(r)}})}));case 3:return e.abrupt("return",t);case 4:case"end":return e.stop()}},e,this)})),D.prototype.importRoomKeys=function(e){var t=this;return u.default.map(e,function(e){return e.room_id&&e.algorithm?t._getRoomDecryptor(e.room_id,e.algorithm).importRoomKey(e):(console.warn("ignoring room key entry with missing fields",e),null)})},D.prototype.encryptEvent=function(){var e=(0,l.coroutine)(c.default.mark(function e(t,n){var r,o,i,s,u;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n){e.next=2;break}throw new Error("Cannot send encrypted messages in unknown rooms");case 2:if(r=t.getRoomId(),o=this._roomEncryptors[r]){e.next=6;break}throw new Error("Room was previously configured to use encryption, but is no longer. Perhaps the homeserver is hiding the configuration event.");case 6:return this._roomDeviceTrackingState[r]||this.trackRoomDevices(r),e.next=9,(0,l.resolve)(this._roomDeviceTrackingState[r]);case 9:return i=t.getContent(),(s=i["m.relates_to"])&&delete(i=(0,a.default)({},i))["m.relates_to"],e.next=14,(0,l.resolve)(o.encryptMessage(n,t.getType(),i));case 14:u=e.sent,s&&(u["m.relates_to"]=s),t.makeEncrypted("m.room.encrypted",u,this._olmDevice.deviceCurve25519Key,this._olmDevice.deviceEd25519Key);case 17:case"end":return e.stop()}},e,this)}));return function(t,n){return e.apply(this,arguments)}}(),D.prototype.decryptEvent=function(e){if(e.isRedacted())return u.default.resolve({clearEvent:{room_id:e.getRoomId(),type:"m.room.message",content:{}}});var t=e.getWireContent();return this._getRoomDecryptor(e.getRoomId(),t.algorithm).decryptEvent(e)},D.prototype.handleDeviceListChanges=function(){var e=(0,l.coroutine)(c.default.mark(function e(t,n){return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.oldSyncToken){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,(0,l.resolve)(this._evalDeviceListChanges(n));case 4:case"end":return e.stop()}},e,this)}));return function(t,n){return e.apply(this,arguments)}}(),D.prototype.requestRoomKey=function(e,t){this._outgoingRoomKeyRequestManager.sendRoomKeyRequest(e,t).catch(function(e){console.error("Error requesting key for event",e)}).done()},D.prototype.cancelRoomKeyRequest=function(e,t){this._outgoingRoomKeyRequestManager.cancelRoomKeyRequest(e,t).catch(function(e){console.warn("Error clearing pending room key requests",e)}).done()},D.prototype.onCryptoEvent=function(){var e=(0,l.coroutine)(c.default.mark(function e(t){var n,r;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.getRoomId(),r=t.getContent(),e.prev=2,e.next=5,(0,l.resolve)(this.setRoomEncryption(n,r,!0));case 5:e.next=10;break;case 7:e.prev=7,e.t0=e.catch(2),console.error("Error configuring encryption in room "+n+":",e.t0);case 10:case"end":return e.stop()}},e,this,[[2,7]])}));return function(t){return e.apply(this,arguments)}}(),D.prototype.onSyncWillProcess=function(){var e=(0,l.method)(function(e){e.oldSyncToken||(console.log("Initial sync performed - resetting device tracking state"),this._deviceList.stopTrackingAllDeviceLists(),this._roomDeviceTrackingState={})});return function(t){return e.apply(this,arguments)}}(),D.prototype.onSyncCompleted=function(){var e=(0,l.method)(function(e){var t=e.nextSyncToken;this._deviceList.setSyncToken(e.nextSyncToken),this._deviceList.saveIfDirty(),this._deviceList.lastKnownSyncToken=t,this._deviceList.refreshOutdatedDeviceLists(),e.catchingUp||(w(this),this._processReceivedRoomKeyRequests())});return function(t){return e.apply(this,arguments)}}(),D.prototype._evalDeviceListChanges=function(){var e=(0,l.coroutine)(c.default.mark(function e(t){var n,r=this;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.changed&&Array.isArray(t.changed)&&t.changed.forEach(function(e){r._deviceList.invalidateUserDeviceList(e)}),!(t.left&&Array.isArray(t.left)&&t.left.length)){e.next=8;break}return e.t0=i.default,e.next=5,(0,l.resolve)(this._getTrackedE2eUsers());case 5:e.t1=e.sent,n=new e.t0(e.t1),t.left.forEach(function(e){n.has(e)||r._deviceList.stopTrackingDeviceList(e)});case 8:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),D.prototype._getTrackedE2eUsers=(0,l.coroutine)(c.default.mark(function e(){var t,n,r,i,a,s,u,f,d,p,m,h,_,g;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:t=[],n=!0,r=!1,i=void 0,e.prev=4,a=(0,o.default)(this._getTrackedE2eRooms());case 6:if(n=(s=a.next()).done){e.next=33;break}return u=s.value,e.next=10,(0,l.resolve)(u.getEncryptionTargetMembers());case 10:for(f=e.sent,d=!0,p=!1,m=void 0,e.prev=14,h=(0,o.default)(f);!(d=(_=h.next()).done);d=!0)g=_.value,t.push(g.userId);e.next=22;break;case 18:e.prev=18,e.t0=e.catch(14),p=!0,m=e.t0;case 22:e.prev=22,e.prev=23,!d&&h.return&&h.return();case 25:if(e.prev=25,!p){e.next=28;break}throw m;case 28:return e.finish(25);case 29:return e.finish(22);case 30:n=!0,e.next=6;break;case 33:e.next=39;break;case 35:e.prev=35,e.t1=e.catch(4),r=!0,i=e.t1;case 39:e.prev=39,e.prev=40,!n&&a.return&&a.return();case 42:if(e.prev=42,!r){e.next=45;break}throw i;case 45:return e.finish(42);case 46:return e.finish(39);case 47:return e.abrupt("return",t);case 48:case"end":return e.stop()}},e,this,[[4,35,39,47],[14,18,22,30],[23,,25,29],[40,,42,46]])})),D.prototype._getTrackedE2eRooms=function(){var e=this;return this._clientStore.getRooms().filter(function(t){if(!e._roomEncryptors[t.roomId])return!1;if(!e._roomDeviceTrackingState[t.roomId])return!1;var n=t.getMyMembership();return"join"===n||"invite"===n})},D.prototype._onToDeviceEvent=function(e){var t=this;try{"m.room_key"==e.getType()||"m.forwarded_room_key"==e.getType()?this._onRoomKeyEvent(e):"m.room_key_request"==e.getType()?this._onRoomKeyRequestEvent(e):e.isBeingDecrypted()&&e.once("Event.decrypted",function(e){t._onToDeviceEvent(e)})}catch(e){console.error("Error handling toDeviceEvent:",e)}},D.prototype._onRoomKeyEvent=function(e){var t=e.getContent();t.room_id&&t.algorithm?this._getRoomDecryptor(t.room_id,t.algorithm).onRoomKeyEvent(e):console.error("key event is missing fields")},D.prototype._onRoomMembership=function(e,t,n){var r=t.roomId,o=this._roomEncryptors[r];o&&(this._roomDeviceTrackingState[r]&&("join"==t.membership?(console.log("Join event for "+t.userId+" in "+r),this._deviceList.startTrackingDeviceList(t.userId)):"invite"==t.membership&&this._clientStore.getRoom(r).shouldEncryptForInvitedMembers()&&(console.log("Invite event for "+t.userId+" in "+r),this._deviceList.startTrackingDeviceList(t.userId))),o.onRoomMembership(e,t,n))},D.prototype._onRoomKeyRequestEvent=function(e){var t=e.getContent();if("request"===t.action){var n=new T(e);this._receivedRoomKeyRequests.push(n)}else if("request_cancellation"===t.action){var r=new x(e);this._receivedRoomKeyRequestCancellations.push(r)}},D.prototype._processReceivedRoomKeyRequests=(0,l.coroutine)(c.default.mark(function e(){var t,n,r=this;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._processingRoomKeyRequests){e.next=2;break}return e.abrupt("return");case 2:return this._processingRoomKeyRequests=!0,e.prev=3,t=this._receivedRoomKeyRequests,this._receivedRoomKeyRequests=[],n=this._receivedRoomKeyRequestCancellations,this._receivedRoomKeyRequestCancellations=[],e.next=10,(0,l.resolve)(u.default.map(t,function(e){return r._processReceivedRoomKeyRequest(e)}));case 10:return e.next=12,(0,l.resolve)(u.default.map(n,function(e){return r._processReceivedRoomKeyRequestCancellation(e)}));case 12:e.next=17;break;case 14:e.prev=14,e.t0=e.catch(3),console.error("Error processing room key requsts: "+e.t0);case 17:return e.prev=17,this._processingRoomKeyRequests=!1,e.finish(17);case 20:case"end":return e.stop()}},e,this,[[3,14,17,20]])})),D.prototype._processReceivedRoomKeyRequest=function(){var e=(0,l.coroutine)(c.default.mark(function e(t){var n,r,o,i,a,s,u;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.userId,r=t.deviceId,o=t.requestBody,i=o.room_id,a=o.algorithm,console.log("m.room_key_request from "+n+":"+r+" for "+i+" / "+o.session_id+" (id "+t.requestId+")"),n===this._userId){e.next=9;break}return console.log("Ignoring room key request from other user for now"),e.abrupt("return");case 9:if(this._roomDecryptors[i]){e.next=12;break}return console.log("room key request for unencrypted room "+i),e.abrupt("return");case 12:if(s=this._roomDecryptors[i][a]){e.next=16;break}return console.log("room key request for unknown alg "+a+" in room "+i),e.abrupt("return");case 16:return e.next=18,(0,l.resolve)(s.hasKeysForKeyRequest(t));case 18:if(e.sent){e.next=21;break}return console.log("room key request for unknown session "+i+" / "+o.session_id),e.abrupt("return");case 21:if(t.share=function(){s.shareKeysWithDevice(t)},!(u=this._deviceList.getStoredDevice(n,r))||!u.isVerified()){e.next=27;break}return console.log("device is already verified: sharing keys"),t.share(),e.abrupt("return");case 27:this.emit("crypto.roomKeyRequest",t);case 28:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),D.prototype._processReceivedRoomKeyRequestCancellation=function(){var e=(0,l.method)(function(e){console.log("m.room_key_request cancellation for "+e.userId+":"+e.deviceId+" (id "+e.requestId+")"),this.emit("crypto.roomKeyRequestCancellation",e)});return function(t){return e.apply(this,arguments)}}(),D.prototype._getRoomDecryptor=function(e,t){var n=void 0,r=void 0;if((e=e||null)&&((n=this._roomDecryptors[e])||(this._roomDecryptors[e]=n={}),r=n[t]))return r;var o=b.DECRYPTION_CLASSES[t];if(!o)throw new b.DecryptionError("UNKNOWN_ENCRYPTION_ALGORITHM",'Unknown encryption algorithm "'+t+'".');return r=new o({userId:this._userId,crypto:this,olmDevice:this._olmDevice,baseApis:this._baseApis,roomId:e}),n&&(n[t]=r),r},D.prototype._signObject=function(){var e=(0,l.coroutine)(c.default.mark(function e(t){var n;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(n={})[this._userId]={},e.next=4,(0,l.resolve)(this._olmDevice.sign(_.stringify(t)));case 4:n[this._userId]["ed25519:"+this._deviceId]=e.sent,t.signatures=n;case 6:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}();var T=function e(t){(0,r.default)(this,e);var n=t.getContent();this.userId=t.getSender(),this.deviceId=n.requesting_device_id,this.requestId=n.request_id,this.requestBody=n.body||{},this.share=function(){throw new Error("don't know how to share keys for this request yet")}},x=function e(t){(0,r.default)(this,e);var n=t.getContent();this.userId=t.getSender(),this.deviceId=n.requesting_device_id,this.requestId=n.request_id};e.exports=D},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});var r=l(n(20)),o=l(n(4)),i=l(n(5)),a=l(n(9)),s=l(n(29));function l(e){return e&&e.__esModule?e:{default:e}}var u=0,c=1,f=2,d=3,p=function(){function t(e,n,r){(0,o.default)(this,t),this._baseApis=e,this._deviceId=n,this._cryptoStore=r,this._sendOutgoingRoomKeyRequestsTimer=null,this._sendOutgoingRoomKeyRequestsRunning=!1,this._clientRunning=!1}return(0,i.default)(t,[{key:"start",value:function(){this._clientRunning=!0,this._startTimer()}},{key:"stop",value:function(){console.log("stopping OutgoingRoomKeyRequestManager"),this._clientRunning=!1}},{key:"sendRoomKeyRequest",value:function(e,t){var n=this;return this._cryptoStore.getOrAddOutgoingRoomKeyRequest({requestBody:e,recipients:t,requestId:this._baseApis.makeTxnId(),state:u}).then(function(e){e.state===u&&n._startTimer()})}},{key:"cancelRoomKeyRequest",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this._cryptoStore.getOutgoingRoomKeyRequest(e).then(function(r){if(r)switch(r.state){case f:case d:return;case u:return console.log("deleting unnecessary room key request for "+m(e)),t._cryptoStore.deleteOutgoingRoomKeyRequest(r.requestId,u);case c:var o=n?d:f;return t._cryptoStore.updateOutgoingRoomKeyRequest(r.requestId,c,{state:o,cancellationTxnId:t._baseApis.makeTxnId()}).then(function(r){r?t._sendOutgoingRoomKeyRequestCancellation(r,n).catch(function(e){console.error("Error sending room key request cancellation; will retry later.",e),t._startTimer()}).then(function(){n&&t._startTimer()}):console.log("Tried to cancel room key request for "+m(e)+" but it was already cancelled in another tab")});default:throw new Error("unhandled state: "+r.state)}})}},{key:"_startTimer",value:function(){var t=this;if(!this._sendOutgoingRoomKeyRequestsTimer){this._sendOutgoingRoomKeyRequestsTimer=e.setTimeout(function(){if(t._sendOutgoingRoomKeyRequestsRunning)throw new Error("RoomKeyRequestSend already in progress!");t._sendOutgoingRoomKeyRequestsRunning=!0,t._sendOutgoingRoomKeyRequests().finally(function(){t._sendOutgoingRoomKeyRequestsRunning=!1}).catch(function(e){console.warn("error in OutgoingRoomKeyRequestManager: "+e)}).done()},500)}}},{key:"_sendOutgoingRoomKeyRequests",value:function(){var e=this;return this._clientRunning?(console.log("Looking for queued outgoing room key requests"),this._cryptoStore.getOutgoingRoomKeyRequestByState([f,d,u]).then(function(t){if(!t)return console.log("No more outgoing room key requests"),void(e._sendOutgoingRoomKeyRequestsTimer=null);var n=void 0;switch(t.state){case u:n=e._sendOutgoingRoomKeyRequest(t);break;case f:n=e._sendOutgoingRoomKeyRequestCancellation(t);break;case d:n=e._sendOutgoingRoomKeyRequestCancellation(t,!0)}return n.then(function(){return e._sendOutgoingRoomKeyRequests()}).catch(function(t){console.error("Error sending room key request; will retry later.",t),e._sendOutgoingRoomKeyRequestsTimer=null,e._startTimer()}).done()})):(this._sendOutgoingRoomKeyRequestsTimer=null,a.default.resolve())}},{key:"_sendOutgoingRoomKeyRequest",value:function(e){var t=this;console.log("Requesting keys for "+m(e.requestBody)+" from "+h(e.recipients)+"(id "+e.requestId+")");var n={action:"request",requesting_device_id:this._deviceId,request_id:e.requestId,body:e.requestBody};return this._sendMessageToDevices(n,e.recipients,e.requestId).then(function(){return t._cryptoStore.updateOutgoingRoomKeyRequest(e.requestId,u,{state:c})})}},{key:"_sendOutgoingRoomKeyRequestCancellation",value:function(e,t){var n=this;console.log("Sending cancellation for key request for "+m(e.requestBody)+" to "+h(e.recipients)+" (cancellation id "+e.cancellationTxnId+")");var r={action:"request_cancellation",requesting_device_id:this._deviceId,request_id:e.requestId};return this._sendMessageToDevices(r,e.recipients,e.cancellationTxnId).then(function(){return t?n._cryptoStore.updateOutgoingRoomKeyRequest(e.requestId,d,{state:u}):n._cryptoStore.deleteOutgoingRoomKeyRequest(e.requestId,f)})}},{key:"_sendMessageToDevices",value:function(e,t,n){var o={},i=!0,a=!1,s=void 0;try{for(var l,u=(0,r.default)(t);!(i=(l=u.next()).done);i=!0){var c=l.value;o[c.userId]||(o[c.userId]={}),o[c.userId][c.deviceId]=e}}catch(e){a=!0,s=e}finally{try{!i&&u.return&&u.return()}finally{if(a)throw s}}return this._baseApis.sendToDevice("m.room_key_request",o,n)}}]),t}();function m(e){return e.room_id+" / "+e.session_id}function h(e){return"["+s.default.map(e,function(e){return e.userId+":"+e.deviceId}).join(",")+"]"}t.default=p}).call(this,n(15))},function(e,t,n){"use strict";(function(t){var r=u(n(20)),o=u(n(14)),i=u(n(19)),a=n(9),s=function(){var e=(0,a.coroutine)(i.default.mark(function e(t,n,r,o){return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,a.resolve)(n.doTxn("readwrite",[l.default.STORE_ACCOUNT],function(e){n.getAccount(e,function(t){null!==t?o.unpickle(r,t):(o.create(),t=o.pickle(r),n.storeAccount(e,t))})}));case 2:case"end":return e.stop()}},e,this)}));return function(t,n,r,o){return e.apply(this,arguments)}}(),l=u(n(231));function u(e){return e&&e.__esModule?e:{default:e}}var c=t.Olm;if(!c)throw new Error("global.Olm is not defined");var f=49152;function d(e){if(void 0===e)throw new Error("payloadString undefined");if(e.length>f)throw new Error("Message too long ("+e.length+" bytes). The maximum for an encrypted message is "+f+" bytes.")}function p(e,t){this._sessionStore=e,this._cryptoStore=t,this._pickleKey="DEFAULT_KEY",this.deviceCurve25519Key=null,this.deviceEd25519Key=null,this._maxOneTimeKeys=null,this._outboundGroupSessionStore={},this._inboundGroupSessionMessageIndexes={}}p.prototype.init=(0,a.coroutine)(i.default.mark(function e(){var t,n;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,a.resolve)(this._migrateFromSessionStore());case 2:return t=void 0,n=new c.Account,e.prev=4,e.next=7,(0,a.resolve)(s(this._sessionStore,this._cryptoStore,this._pickleKey,n));case 7:t=JSON.parse(n.identity_keys()),this._maxOneTimeKeys=n.max_number_of_one_time_keys();case 9:return e.prev=9,n.free(),e.finish(9);case 12:this.deviceCurve25519Key=t.curve25519,this.deviceEd25519Key=t.ed25519;case 14:case"end":return e.stop()}},e,this,[[4,,9,12]])})),p.getOlmVersion=function(){return c.get_library_version()},p.prototype._migrateFromSessionStore=(0,a.coroutine)(i.default.mark(function e(){var t,n,s,u=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,a.resolve)(this._cryptoStore.doTxn("readwrite",[l.default.STORE_ACCOUNT],function(e){u._cryptoStore.getAccount(e,function(t){null===t&&null!==(t=u._sessionStore.getEndToEndAccount())&&(console.log("Migrating account from session store"),u._cryptoStore.storeAccount(e,t))})}));case 2:if(this._sessionStore.removeEndToEndAccount(),t=this._sessionStore.getAllEndToEndSessions(),!((0,o.default)(t).length>0)){e.next=8;break}return e.next=7,(0,a.resolve)(this._cryptoStore.doTxn("readwrite",[l.default.STORE_SESSIONS],function(e){u._cryptoStore.countEndToEndSessions(e,function(n){if(n)console.log("Crypto store already has sessions: not migrating");else{var i=0,a=!0,s=!1,l=void 0;try{for(var c,f=(0,r.default)((0,o.default)(t));!(a=(c=f.next()).done);a=!0){var d=c.value,p=!0,m=!1,h=void 0;try{for(var _,g=(0,r.default)((0,o.default)(t[d]));!(p=(_=g.next()).done);p=!0){var v=_.value;i++,u._cryptoStore.storeEndToEndSession(d,v,t[d][v],e)}}catch(e){m=!0,h=e}finally{try{!p&&g.return&&g.return()}finally{if(m)throw h}}}}catch(e){s=!0,l=e}finally{try{!a&&f.return&&f.return()}finally{if(s)throw l}}console.log("Migrating "+i+" sessions from session store")}})}));case 7:this._sessionStore.removeAllEndToEndSessions();case 8:if(n=this._sessionStore.getAllEndToEndInboundGroupSessionKeys(),!((0,o.default)(n).length>0)){e.next=14;break}return s=0,e.next=13,(0,a.resolve)(this._cryptoStore.doTxn("readwrite",[l.default.STORE_INBOUND_GROUP_SESSIONS],function(e){var t=!0,o=!1,i=void 0;try{for(var a,l=(0,r.default)(n);!(t=(a=l.next()).done);t=!0){var c=a.value;try{u._cryptoStore.addEndToEndInboundGroupSession(c.senderKey,c.sessionId,JSON.parse(u._sessionStore.getEndToEndInboundGroupSession(c.senderKey,c.sessionId)),e)}catch(e){console.warn("Failed to migrate session "+c.senderKey+"/"+c.sessionId+": "+e.stack||e)}++s}}catch(e){o=!0,i=e}finally{try{!t&&l.return&&l.return()}finally{if(o)throw i}}console.log("Migrated "+s+" inbound group sessions from session store")}));case 13:this._sessionStore.removeAllEndToEndInboundGroupSessions();case 14:case"end":return e.stop()}},e,this)})),p.prototype._getAccount=function(e,t){var n=this;this._cryptoStore.getAccount(e,function(e){var r=new c.Account;try{r.unpickle(n._pickleKey,e),t(r)}finally{r.free()}})},p.prototype._storeAccount=function(e,t){this._cryptoStore.storeAccount(e,t.pickle(this._pickleKey))},p.prototype._getSession=function(e,t,n,r){var o=this;this._cryptoStore.getEndToEndSession(e,t,n,function(e){o._unpickleSession(e,r)})},p.prototype._unpickleSession=function(e,t){var n=new c.Session;try{n.unpickle(this._pickleKey,e),t(n)}finally{n.free()}},p.prototype._saveSession=function(e,t,n){var r=t.pickle(this._pickleKey);this._cryptoStore.storeEndToEndSession(e,t.session_id(),r,n)},p.prototype._getUtility=function(e){var t=new c.Utility;try{return e(t)}finally{t.free()}},p.prototype.sign=function(){var e=(0,a.coroutine)(i.default.mark(function e(t){var n,r=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=void 0,e.next=3,(0,a.resolve)(this._cryptoStore.doTxn("readonly",[l.default.STORE_ACCOUNT],function(e){r._getAccount(e,function(e){n=e.sign(t)})}));case 3:return e.abrupt("return",n);case 4:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),p.prototype.getOneTimeKeys=(0,a.coroutine)(i.default.mark(function e(){var t,n=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=void 0,e.next=3,(0,a.resolve)(this._cryptoStore.doTxn("readonly",[l.default.STORE_ACCOUNT],function(e){n._getAccount(e,function(e){t=JSON.parse(e.one_time_keys())})}));case 3:return e.abrupt("return",t);case 4:case"end":return e.stop()}},e,this)})),p.prototype.maxNumberOfOneTimeKeys=function(){return this._maxOneTimeKeys},p.prototype.markKeysAsPublished=(0,a.coroutine)(i.default.mark(function e(){var t=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,a.resolve)(this._cryptoStore.doTxn("readwrite",[l.default.STORE_ACCOUNT],function(e){t._getAccount(e,function(n){n.mark_keys_as_published(),t._storeAccount(e,n)})}));case 2:case"end":return e.stop()}},e,this)})),p.prototype.generateOneTimeKeys=function(e){var t=this;return this._cryptoStore.doTxn("readwrite",[l.default.STORE_ACCOUNT],function(n){t._getAccount(n,function(r){r.generate_one_time_keys(e),t._storeAccount(n,r)})})},p.prototype.createOutboundSession=function(){var e=(0,a.coroutine)(i.default.mark(function e(t,n){var r,o=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=void 0,e.next=3,(0,a.resolve)(this._cryptoStore.doTxn("readwrite",[l.default.STORE_ACCOUNT,l.default.STORE_SESSIONS],function(e){o._getAccount(e,function(i){var a=new c.Session;try{a.create_outbound(i,t,n),r=a.session_id(),o._storeAccount(e,i),o._saveSession(t,a,e)}finally{a.free()}})}));case 3:return e.abrupt("return",r);case 4:case"end":return e.stop()}},e,this)}));return function(t,n){return e.apply(this,arguments)}}(),p.prototype.createInboundSession=function(){var e=(0,a.coroutine)(i.default.mark(function e(t,n,r){var o,s=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(0===n){e.next=2;break}throw new Error("Need messageType == 0 to create inbound session");case 2:return o=void 0,e.next=5,(0,a.resolve)(this._cryptoStore.doTxn("readwrite",[l.default.STORE_ACCOUNT,l.default.STORE_SESSIONS],function(e){s._getAccount(e,function(i){var a=new c.Session;try{a.create_inbound_from(i,t,r),i.remove_one_time_keys(a),s._storeAccount(e,i);var l=a.decrypt(n,r);s._saveSession(t,a,e),o={payload:l,session_id:a.session_id()}}finally{a.free()}})}));case 5:return e.abrupt("return",o);case 6:case"end":return e.stop()}},e,this)}));return function(t,n,r){return e.apply(this,arguments)}}(),p.prototype.getSessionIdsForDevice=function(){var e=(0,a.coroutine)(i.default.mark(function e(t){var n,r=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=void 0,e.next=3,(0,a.resolve)(this._cryptoStore.doTxn("readonly",[l.default.STORE_SESSIONS],function(e){r._cryptoStore.getEndToEndSessions(t,e,function(e){n=(0,o.default)(e)})}));case 3:return e.abrupt("return",n);case 4:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),p.prototype.getSessionIdForDevice=function(){var e=(0,a.coroutine)(i.default.mark(function e(t){var n;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,a.resolve)(this.getSessionIdsForDevice(t));case 2:if(0!==(n=e.sent).length){e.next=5;break}return e.abrupt("return",null);case 5:return n.sort(),e.abrupt("return",n[0]);case 7:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),p.prototype.getSessionInfoForDevice=function(){var e=(0,a.coroutine)(i.default.mark(function e(t){var n,s=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=[],e.next=3,(0,a.resolve)(this._cryptoStore.doTxn("readonly",[l.default.STORE_SESSIONS],function(e){s._cryptoStore.getEndToEndSessions(t,e,function(e){var t=(0,o.default)(e).sort(),i=!0,a=!1,l=void 0;try{for(var u,c=function(){var t=u.value;s._unpickleSession(e[t],function(e){n.push({hasReceivedMessage:e.has_received_message(),sessionId:t})})},f=(0,r.default)(t);!(i=(u=f.next()).done);i=!0)c()}catch(e){a=!0,l=e}finally{try{!i&&f.return&&f.return()}finally{if(a)throw l}}})}));case 3:return e.abrupt("return",n);case 4:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),p.prototype.encryptMessage=function(){var e=(0,a.coroutine)(i.default.mark(function e(t,n,r){var o,s=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return d(r),o=void 0,e.next=4,(0,a.resolve)(this._cryptoStore.doTxn("readwrite",[l.default.STORE_SESSIONS],function(e){s._getSession(t,n,e,function(n){o=n.encrypt(r),s._saveSession(t,n,e)})}));case 4:return e.abrupt("return",o);case 5:case"end":return e.stop()}},e,this)}));return function(t,n,r){return e.apply(this,arguments)}}(),p.prototype.decryptMessage=function(){var e=(0,a.coroutine)(i.default.mark(function e(t,n,r,o){var s,u=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s=void 0,e.next=3,(0,a.resolve)(this._cryptoStore.doTxn("readwrite",[l.default.STORE_SESSIONS],function(e){u._getSession(t,n,e,function(n){s=n.decrypt(r,o),u._saveSession(t,n,e)})}));case 3:return e.abrupt("return",s);case 4:case"end":return e.stop()}},e,this)}));return function(t,n,r,o){return e.apply(this,arguments)}}(),p.prototype.matchesSession=function(){var e=(0,a.coroutine)(i.default.mark(function e(t,n,r,o){var s,u=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(0===r){e.next=2;break}return e.abrupt("return",!1);case 2:return s=void 0,e.next=5,(0,a.resolve)(this._cryptoStore.doTxn("readonly",[l.default.STORE_SESSIONS],function(e){u._getSession(t,n,e,function(e){s=e.matches_inbound(o)})}));case 5:return e.abrupt("return",s);case 6:case"end":return e.stop()}},e,this)}));return function(t,n,r,o){return e.apply(this,arguments)}}(),p.prototype._saveOutboundGroupSession=function(e){var t=e.pickle(this._pickleKey);this._outboundGroupSessionStore[e.session_id()]=t},p.prototype._getOutboundGroupSession=function(e,t){var n=this._outboundGroupSessionStore[e];if(null===n)throw new Error("Unknown outbound group session "+e);var r=new c.OutboundGroupSession;try{return r.unpickle(this._pickleKey,n),t(r)}finally{r.free()}},p.prototype.createOutboundGroupSession=function(){var e=new c.OutboundGroupSession;try{return e.create(),this._saveOutboundGroupSession(e),e.session_id()}finally{e.free()}},p.prototype.encryptGroupMessage=function(e,t){var n=this;return d(t),this._getOutboundGroupSession(e,function(e){var r=e.encrypt(t);return n._saveOutboundGroupSession(e),r})},p.prototype.getOutboundGroupSessionKey=function(e){return this._getOutboundGroupSession(e,function(e){return{chain_index:e.message_index(),key:e.session_key()}})},p.prototype._unpickleInboundGroupSession=function(e,t){var n=new c.InboundGroupSession;try{return n.unpickle(this._pickleKey,e.session),t(n)}finally{n.free()}},p.prototype._getInboundGroupSession=function(e,t,n,r,o){var i=this;this._cryptoStore.getEndToEndInboundGroupSession(t,n,r,function(t){if(null!==t){if(null!==e&&e!==t.room_id)throw new Error("Mismatched room_id for inbound group session (expected "+t.room_id+", was "+e+")");i._unpickleInboundGroupSession(t,function(e){o(e,t)})}else o(null)})},p.prototype.addInboundGroupSession=function(){var e=(0,a.coroutine)(i.default.mark(function e(t,n,r,o,s,u,f){var d=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,a.resolve)(this._cryptoStore.doTxn("readwrite",[l.default.STORE_INBOUND_GROUP_SESSIONS],function(e){d._getInboundGroupSession(t,n,o,e,function(i,a){if(i)console.log("Update for megolm session "+n+"/"+o);else{var l=new c.InboundGroupSession;try{if(f?l.import_session(s):l.create(s),o!=l.session_id())throw new Error("Mismatched group session ID from senderKey: "+n);var p={room_id:t,session:l.pickle(d._pickleKey),keysClaimed:u,forwardingCurve25519KeyChain:r};d._cryptoStore.addEndToEndInboundGroupSession(n,o,p,e)}finally{l.free()}}})}));case 2:case"end":return e.stop()}},e,this)}));return function(t,n,r,o,i,a,s){return e.apply(this,arguments)}}(),p.prototype.decryptGroupMessage=function(){var e=(0,a.coroutine)(i.default.mark(function e(t,n,r,o,s,u){var c,f=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return c=void 0,e.next=3,(0,a.resolve)(this._cryptoStore.doTxn("readwrite",[l.default.STORE_INBOUND_GROUP_SESSIONS],function(e){f._getInboundGroupSession(t,n,r,e,function(t,i){if(null!==t){var a=t.decrypt(o),l=a.plaintext;if(void 0===l)l=a;else{var d=n+"|"+r+"|"+a.message_index;if(d in f._inboundGroupSessionMessageIndexes){var p=f._inboundGroupSessionMessageIndexes[d];if(p.id!==s||p.timestamp!==u)throw new Error("Duplicate message index, possible replay attack: "+d)}f._inboundGroupSessionMessageIndexes[d]={id:s,timestamp:u}}i.session=t.pickle(f._pickleKey),f._cryptoStore.storeEndToEndInboundGroupSession(n,r,i,e),c={result:l,keysClaimed:i.keysClaimed||{},senderKey:n,forwardingCurve25519KeyChain:i.forwardingCurve25519KeyChain||[]}}else c=null})}));case 3:return e.abrupt("return",c);case 4:case"end":return e.stop()}},e,this)}));return function(t,n,r,o,i,a){return e.apply(this,arguments)}}(),p.prototype.hasInboundSessionKeys=function(){var e=(0,a.coroutine)(i.default.mark(function e(t,n,r){var o,s=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o=void 0,e.next=3,(0,a.resolve)(this._cryptoStore.doTxn("readonly",[l.default.STORE_INBOUND_GROUP_SESSIONS],function(e){s._cryptoStore.getEndToEndInboundGroupSession(n,r,e,function(e){null!==e?t!==e.room_id?(console.warn("requested keys for inbound group session "+n+"|"+r+", with incorrect room_id (expected "+e.room_id+", was "+t+")"),o=!1):o=!0:o=!1})}));case 3:return e.abrupt("return",o);case 4:case"end":return e.stop()}},e,this)}));return function(t,n,r){return e.apply(this,arguments)}}(),p.prototype.getInboundGroupSessionKey=function(){var e=(0,a.coroutine)(i.default.mark(function e(t,n,r){var o,s=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o=void 0,e.next=3,(0,a.resolve)(this._cryptoStore.doTxn("readonly",[l.default.STORE_INBOUND_GROUP_SESSIONS],function(e){s._getInboundGroupSession(t,n,r,e,function(e,t){if(null!==e){var n=e.first_known_index(),r=(t.keysClaimed||{}).ed25519||null;o={chain_index:n,key:e.export_session(n),forwarding_curve25519_key_chain:t.forwardingCurve25519KeyChain||[],sender_claimed_ed25519_key:r}}else o=null})}));case 3:return e.abrupt("return",o);case 4:case"end":return e.stop()}},e,this)}));return function(t,n,r){return e.apply(this,arguments)}}(),p.prototype.exportInboundGroupSession=function(e,t,n){return this._unpickleInboundGroupSession(n,function(r){var o=r.first_known_index();return{sender_key:e,sender_claimed_keys:n.keysClaimed,room_id:n.room_id,session_id:t,session_key:r.export_session(o),forwarding_curve25519_key_chain:r.forwardingCurve25519KeyChain||[]}})},p.prototype.verifySignature=function(e,t,n){this._getUtility(function(r){r.ed25519_verify(e,t,n)})},e.exports=p}).call(this,n(15))},function(e,t,n){"use strict";var r=n(407);n(1122),n(1123),e.exports.ENCRYPTION_CLASSES=r.ENCRYPTION_CLASSES,e.exports.DECRYPTION_CLASSES=r.DECRYPTION_CLASSES,e.exports.DecryptionError=r.DecryptionError},function(e,t,n){"use strict";var r=s(n(31)),o=s(n(19)),i=n(9),a=s(i);function s(e){return e&&e.__esModule?e:{default:e}}var l=n(29),u=n(289),c=n(408).DeviceVerification,f=n(407);function d(e){f.EncryptionAlgorithm.call(this,e),this._sessionPrepared=!1,this._prepPromise=null}function p(e){f.DecryptionAlgorithm.call(this,e)}l.inherits(d,f.EncryptionAlgorithm),d.prototype._ensureSession=function(e){if(this._prepPromise)return this._prepPromise;if(this._sessionPrepared)return a.default.resolve();var t=this;return this._prepPromise=t._crypto.downloadKeys(e).then(function(n){return t._crypto.ensureOlmSessionsForUsers(e)}).then(function(){t._sessionPrepared=!0}).finally(function(){t._prepPromise=null}),this._prepPromise},d.prototype.encryptMessage=function(){var e=(0,i.coroutine)(o.default.mark(function e(t,n,r){var s,f,d,p,m,h,_,g,v,y,b;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,i.resolve)(t.getEncryptionTargetMembers());case 2:return s=e.sent,f=l.map(s,function(e){return e.userId}),d=this,e.next=7,(0,i.resolve)(this._ensureSession(f));case 7:p={room_id:t.roomId,type:n,content:r},m={algorithm:u.OLM_ALGORITHM,sender_key:d._olmDevice.deviceCurve25519Key,ciphertext:{}},h=[],_=0;case 11:if(!(_<f.length)){e.next=29;break}g=f[_],v=d._crypto.getStoredDevicesForUser(g),y=0;case 15:if(!(y<v.length)){e.next=26;break}if(b=v[y],b.getIdentityKey()!=d._olmDevice.deviceCurve25519Key){e.next=20;break}return e.abrupt("continue",23);case 20:if(b.verified!=c.BLOCKED){e.next=22;break}return e.abrupt("continue",23);case 22:h.push(u.encryptMessageForDevice(m.ciphertext,d._userId,d._deviceId,d._olmDevice,g,b,p));case 23:++y,e.next=15;break;case 26:++_,e.next=11;break;case 29:return e.next=31,(0,i.resolve)(a.default.all(h).return(m));case 31:return e.abrupt("return",e.sent);case 32:case"end":return e.stop()}},e,this)}));return function(t,n,r){return e.apply(this,arguments)}}(),l.inherits(p,f.DecryptionAlgorithm),p.prototype.decryptEvent=function(){var e=(0,i.coroutine)(o.default.mark(function e(t){var n,r,a,s,l,u,c;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.getWireContent(),r=n.sender_key,a=n.ciphertext){e.next=5;break}throw new f.DecryptionError("OLM_MISSING_CIPHERTEXT","Missing ciphertext");case 5:if(this._olmDevice.deviceCurve25519Key in a){e.next=7;break}throw new f.DecryptionError("OLM_NOT_INCLUDED_IN_RECIPIENTS","Not included in recipients");case 7:return s=a[this._olmDevice.deviceCurve25519Key],l=void 0,e.prev=9,e.next=12,(0,i.resolve)(this._decryptMessage(r,s));case 12:l=e.sent,e.next=18;break;case 15:throw e.prev=15,e.t0=e.catch(9),new f.DecryptionError("OLM_BAD_ENCRYPTED_MESSAGE","Bad Encrypted Message",{sender:r,err:e.t0});case 18:if((u=JSON.parse(l)).recipient==this._userId){e.next=21;break}throw new f.DecryptionError("OLM_BAD_RECIPIENT","Message was intented for "+u.recipient);case 21:if(u.recipient_keys.ed25519==this._olmDevice.deviceEd25519Key){e.next=23;break}throw new f.DecryptionError("OLM_BAD_RECIPIENT_KEY","Message not intended for this device",{intended:u.recipient_keys.ed25519,our_key:this._olmDevice.deviceEd25519Key});case 23:if(u.sender==t.getSender()){e.next=25;break}throw new f.DecryptionError("OLM_FORWARDED_MESSAGE","Message forwarded from "+u.sender,{reported_sender:t.getSender()});case 25:if(u.room_id===t.getRoomId()){e.next=27;break}throw new f.DecryptionError("OLM_BAD_ROOM","Message intended for room "+u.room_id,{reported_room:t.room_id});case 27:return c=u.keys||{},e.abrupt("return",{clearEvent:u,senderCurve25519Key:r,claimedEd25519Key:c.ed25519||null});case 29:case"end":return e.stop()}},e,this,[[9,15]])}));return function(t){return e.apply(this,arguments)}}(),p.prototype._decryptMessage=function(){var e=(0,i.coroutine)(o.default.mark(function e(t,n){var a,s,l,u,c,f;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,i.resolve)(this._olmDevice.getSessionIdsForDevice(t));case 2:a=e.sent,s={},l=0;case 5:if(!(l<a.length)){e.next=26;break}return u=a[l],e.prev=7,e.next=10,(0,i.resolve)(this._olmDevice.decryptMessage(t,u,n.type,n.body));case 10:return c=e.sent,console.log("Decrypted Olm message from "+t+" with session "+u),e.abrupt("return",c);case 15:return e.prev=15,e.t0=e.catch(7),e.next=19,(0,i.resolve)(this._olmDevice.matchesSession(t,u,n.type,n.body));case 19:if(!e.sent){e.next=22;break}throw new Error("Error decrypting prekey message with existing session id "+u+": "+e.t0.message);case 22:s[u]=e.t0.message;case 23:l++,e.next=5;break;case 26:if(0===n.type){e.next=30;break}if(0!==a.length){e.next=29;break}throw new Error("No existing sessions");case 29:throw new Error("Error decrypting non-prekey message with existing sessions: "+(0,r.default)(s));case 30:return f=void 0,e.prev=31,e.next=34,(0,i.resolve)(this._olmDevice.createInboundSession(t,n.type,n.body));case 34:f=e.sent,e.next=41;break;case 37:throw e.prev=37,e.t1=e.catch(31),s["(new)"]=e.t1.message,new Error("Error decrypting prekey message: "+(0,r.default)(s));case 41:return console.log("created new inbound Olm session ID "+f.session_id+" with "+t),e.abrupt("return",f.payload);case 43:case"end":return e.stop()}},e,this,[[7,15],[31,37]])}));return function(t,n){return e.apply(this,arguments)}}(),f.registerAlgorithm(u.OLM_ALGORITHM,d,p)},function(e,t,n){"use strict";var r=f(n(47)),o=f(n(138)),i=f(n(31)),a=f(n(14)),s=f(n(20)),l=f(n(19)),u=n(9),c=f(u);function f(e){return e&&e.__esModule?e:{default:e}}var d=n(29),p=n(289),m=n(407);function h(e){this.sessionId=e,this.useCount=0,this.creationTime=(new Date).getTime(),this.sharedWithDevices={}}function _(e){m.EncryptionAlgorithm.call(this,e),this._setupPromise=c.default.resolve(),this._sessionRotationPeriodMsgs=100,this._sessionRotationPeriodMs=6048e5,void 0!==e.config.rotation_period_ms&&(this._sessionRotationPeriodMs=e.config.rotation_period_ms),void 0!==e.config.rotation_period_msgs&&(this._sessionRotationPeriodMsgs=e.config.rotation_period_msgs)}function g(e){m.DecryptionAlgorithm.call(this,e),this._pendingEvents={},this.olmlib=p}h.prototype.needsRotation=function(e,t){var n=(new Date).getTime()-this.creationTime;return(this.useCount>=e||n>=t)&&(console.log("Rotating megolm session after "+this.useCount+" messages, "+n+"ms"),!0)},h.prototype.markSharedWithDevice=function(e,t,n){this.sharedWithDevices[e]||(this.sharedWithDevices[e]={}),this.sharedWithDevices[e][t]=n},h.prototype.sharedWithTooManyDevices=function(e){for(var t in this.sharedWithDevices)if(this.sharedWithDevices.hasOwnProperty(t)){if(!e.hasOwnProperty(t))return console.log("Starting new session because we shared with "+t),!0;for(var n in this.sharedWithDevices[t])if(this.sharedWithDevices[t].hasOwnProperty(n)&&!e[t].hasOwnProperty(n))return console.log("Starting new session because we shared with "+t+":"+n),!0}},d.inherits(_,m.EncryptionAlgorithm),_.prototype._ensureOutboundSession=function(e){var t=function(){var t=(0,u.coroutine)(l.default.mark(function t(o){var i,a,s,c,f;return l.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if((r=o)&&r.needsRotation(n._sessionRotationPeriodMsgs,n._sessionRotationPeriodMs)&&(console.log("Starting new megolm session because we need to rotate."),r=null),r&&r.sharedWithTooManyDevices(e)&&(r=null),r){t.next=8;break}return console.log("Starting new megolm session for room "+n._roomId),t.next=7,(0,u.resolve)(n._prepareNewSession());case 7:r=t.sent;case 8:i={},t.t0=l.default.keys(e);case 10:if((t.t1=t.t0()).done){t.next=29;break}if(a=t.t1.value,e.hasOwnProperty(a)){t.next=14;break}return t.abrupt("continue",10);case 14:s=e[a],t.t2=l.default.keys(s);case 16:if((t.t3=t.t2()).done){t.next=27;break}if(c=t.t3.value,s.hasOwnProperty(c)){t.next=20;break}return t.abrupt("continue",16);case 20:if(f=s[c],f.getIdentityKey()!=n._olmDevice.deviceCurve25519Key){t.next=24;break}return t.abrupt("continue",16);case 24:r.sharedWithDevices[a]&&void 0!==r.sharedWithDevices[a][c]||(i[a]=i[a]||[],i[a].push(f)),t.next=16;break;case 27:t.next=10;break;case 29:return t.abrupt("return",n._shareKeyWithDevices(r,i));case 30:case"end":return t.stop()}},t,this)}));return function(e){return t.apply(this,arguments)}}(),n=this,r=void 0;function o(){return r}var i=this._setupPromise.then(t);return this._setupPromise=i.then(o,o),i.then(o)},_.prototype._prepareNewSession=(0,u.coroutine)(l.default.mark(function e(){var t,n;return l.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._olmDevice.createOutboundGroupSession(),n=this._olmDevice.getOutboundGroupSessionKey(t),e.next=4,(0,u.resolve)(this._olmDevice.addInboundGroupSession(this._roomId,this._olmDevice.deviceCurve25519Key,[],t,n.key,{ed25519:this._olmDevice.deviceEd25519Key}));case 4:return e.abrupt("return",new h(t));case 5:case"end":return e.stop()}},e,this)})),_.prototype._splitUserDeviceMap=function(e,t,n,r){var o=[],i=0,l=0,u=!0,c=!1,f=void 0;try{for(var d,p=(0,s.default)((0,a.default)(r));!(u=(d=p.next()).done);u=!0)for(var m=d.value,h=r[m],_=n[m],g=0;g<h.length;g++){var v=h[g],y=v.deviceId;_[y].sessionId?(console.log("share keys with device "+m+":"+y),l>20&&(l=0,i++),o[i]||(o[i]=[]),o[i].push({userId:m,deviceInfo:v}),l++):e.markSharedWithDevice(m,y,t)}}catch(e){c=!0,f=e}finally{try{!u&&p.return&&p.return()}finally{if(c)throw f}}return o},_.prototype._encryptAndSendKeysToDevices=function(e,t,n,r){for(var o=this,i={algorithm:p.OLM_ALGORITHM,sender_key:this._olmDevice.deviceCurve25519Key,ciphertext:{}},l={},u=[],f=0;f<n.length;f++){var d=n[f],m=d.userId,h=d.deviceInfo,_=h.deviceId;l[m]||(l[m]={}),l[m][_]=i,u.push(p.encryptMessageForDevice(i.ciphertext,this._userId,this._deviceId,this._olmDevice,m,h,r))}return c.default.all(u).then(function(){return o._baseApis.sendToDevice("m.room.encrypted",l).then(function(){var n=!0,r=!1,o=void 0;try{for(var i,u=(0,s.default)((0,a.default)(l));!(n=(i=u.next()).done);n=!0){var c=i.value,f=!0,d=!1,p=void 0;try{for(var m,h=(0,s.default)((0,a.default)(l[c]));!(f=(m=h.next()).done);f=!0){var _=m.value;e.markSharedWithDevice(c,_,t)}}catch(e){d=!0,p=e}finally{try{!f&&h.return&&h.return()}finally{if(d)throw p}}}}catch(e){r=!0,o=e}finally{try{!n&&u.return&&u.return()}finally{if(r)throw o}}})})},_.prototype._shareKeyWithDevices=function(){var e=(0,u.coroutine)(l.default.mark(function e(t,n){var r,o,i,a,s;return l.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=this._olmDevice.getOutboundGroupSessionKey(t.sessionId),o={type:"m.room_key",content:{algorithm:p.MEGOLM_ALGORITHM,room_id:this._roomId,session_id:t.sessionId,session_key:r.key,chain_index:r.chain_index}},e.next=4,(0,u.resolve)(p.ensureOlmSessionsForDevices(this._olmDevice,this._baseApis,n));case 4:i=e.sent,a=this._splitUserDeviceMap(t,r.chain_index,i,n),s=0;case 7:if(!(s<a.length)){e.next=21;break}return e.prev=8,e.next=11,(0,u.resolve)(this._encryptAndSendKeysToDevices(t,r.chain_index,a[s],o));case 11:console.log("Completed megolm keyshare in "+this._roomId+" (slice "+(s+1)+"/"+a.length+")"),e.next=18;break;case 14:throw e.prev=14,e.t0=e.catch(8),console.log("megolm keyshare in "+this._roomId+" (slice "+(s+1)+"/"+a.length+") failed"),e.t0;case 18:s++,e.next=7;break;case 21:case"end":return e.stop()}},e,this,[[8,14]])}));return function(t,n){return e.apply(this,arguments)}}(),_.prototype.encryptMessage=function(e,t,n){var r=this;return console.log("Starting to encrypt event for "+this._roomId),this._getDevicesInRoom(e).then(function(e){return r._checkForUnknownDevices(e),r._ensureOutboundSession(e)}).then(function(e){var o={room_id:r._roomId,type:t,content:n},a=r._olmDevice.encryptGroupMessage(e.sessionId,(0,i.default)(o)),s={algorithm:p.MEGOLM_ALGORITHM,sender_key:r._olmDevice.deviceCurve25519Key,ciphertext:a,session_id:e.sessionId,device_id:r._deviceId};return e.useCount++,s})},_.prototype.forceDiscardSession=function(){this._setupPromise=this._setupPromise.then(function(){return null})},_.prototype._checkForUnknownDevices=function(e){var t={};if((0,a.default)(e).forEach(function(n){(0,a.default)(e[n]).forEach(function(r){var o=e[n][r];o.isUnverified()&&!o.isKnown()&&(t[n]||(t[n]={}),t[n][r]=o)})}),(0,a.default)(t).length)throw new m.UnknownDeviceError("This room contains unknown devices which have not been verified. We strongly recommend you verify them before continuing.",t)},_.prototype._getDevicesInRoom=function(){var e=(0,u.coroutine)(l.default.mark(function e(t){var n,r,o,i,a,s,c;return l.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,u.resolve)(t.getEncryptionTargetMembers());case 2:return n=e.sent,r=d.map(n,function(e){return e.userId}),o=this._crypto.getGlobalBlacklistUnverifiedDevices(),"boolean"==typeof t.getBlacklistUnverifiedDevices()&&(o=t.getBlacklistUnverifiedDevices()),e.next=8,(0,u.resolve)(this._crypto.downloadKeys(r,!1));case 8:i=e.sent,e.t0=l.default.keys(i);case 10:if((e.t1=e.t0()).done){e.next=25;break}if(a=e.t1.value,i.hasOwnProperty(a)){e.next=14;break}return e.abrupt("continue",10);case 14:s=i[a],e.t2=l.default.keys(s);case 16:if((e.t3=e.t2()).done){e.next=23;break}if(c=e.t3.value,s.hasOwnProperty(c)){e.next=20;break}return e.abrupt("continue",16);case 20:(s[c].isBlocked()||s[c].isUnverified()&&o)&&delete s[c],e.next=16;break;case 23:e.next=10;break;case 25:return e.abrupt("return",i);case 26:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),d.inherits(g,m.DecryptionAlgorithm),g.prototype.decryptEvent=function(){var e=(0,u.coroutine)(l.default.mark(function e(t){var n,r,o,i;return l.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if((n=t.getWireContent()).sender_key&&n.session_id&&n.ciphertext){e.next=3;break}throw new m.DecryptionError("MEGOLM_MISSING_FIELDS","Missing fields in input");case 3:return this._addEventToPendingList(t),r=void 0,e.prev=5,e.next=8,(0,u.resolve)(this._olmDevice.decryptGroupMessage(t.getRoomId(),n.sender_key,n.session_id,n.ciphertext,t.getId(),t.getTs()));case 8:r=e.sent,e.next=16;break;case 11:throw e.prev=11,e.t0=e.catch(5),o="OLM_DECRYPT_GROUP_MESSAGE_ERROR","OLM.UNKNOWN_MESSAGE_INDEX"===e.t0.message&&(this._requestKeysForEvent(t),o="OLM_UNKNOWN_MESSAGE_INDEX"),new m.DecryptionError(o,e.t0.toString(),{session:n.sender_key+"|"+n.session_id});case 16:if(null!==r){e.next=19;break}throw this._requestKeysForEvent(t),new m.DecryptionError("MEGOLM_UNKNOWN_INBOUND_SESSION_ID","The sender's device has not sent us the keys for this message.",{session:n.sender_key+"|"+n.session_id});case 19:if(this._removeEventFromPendingList(t),(i=JSON.parse(r.result)).room_id===t.getRoomId()){e.next=23;break}throw new m.DecryptionError("MEGOLM_BAD_ROOM","Message intended for room "+i.room_id);case 23:return e.abrupt("return",{clearEvent:i,senderCurve25519Key:r.senderKey,claimedEd25519Key:r.keysClaimed.ed25519,forwardingCurve25519KeyChain:r.forwardingCurve25519KeyChain});case 24:case"end":return e.stop()}},e,this,[[5,11]])}));return function(t){return e.apply(this,arguments)}}(),g.prototype._requestKeysForEvent=function(e){var t=e.getSender(),n=e.getWireContent(),r=[{userId:this._userId,deviceId:"*"}];t!=this._userId&&r.push({userId:t,deviceId:n.device_id}),this._crypto.requestRoomKey({room_id:e.getRoomId(),algorithm:n.algorithm,sender_key:n.sender_key,session_id:n.session_id},r)},g.prototype._addEventToPendingList=function(e){var t=e.getWireContent(),n=t.sender_key+"|"+t.session_id;this._pendingEvents[n]||(this._pendingEvents[n]=new o.default),this._pendingEvents[n].add(e)},g.prototype._removeEventFromPendingList=function(e){var t=e.getWireContent(),n=t.sender_key+"|"+t.session_id;this._pendingEvents[n]&&(this._pendingEvents[n].delete(e),0===this._pendingEvents[n].size&&delete this._pendingEvents[n])},g.prototype.onRoomKeyEvent=function(e){var t=this,n=e.getContent(),r=n.session_id,o=e.getSenderKey(),i=[],a=!1,s=void 0;if(n.room_id&&r&&n.session_key)if(o){if("m.forwarded_room_key"==e.getType()){if(a=!0,i=n.forwarding_curve25519_key_chain,d.isArray(i)||(i=[]),(i=i.slice()).push(o),!(o=n.sender_key))return void console.error("forwarded_room_key event is missing sender_key field");var l=n.sender_claimed_ed25519_key;if(!l)return void console.error("forwarded_room_key_event is missing sender_claimed_ed25519_key field");s={ed25519:l}}else s=e.getKeysClaimed();console.log("Adding key for megolm session "+o+"|"+r),this._olmDevice.addInboundGroupSession(n.room_id,o,i,r,n.session_key,s,a).then(function(){t._crypto.cancelRoomKeyRequest({algorithm:n.algorithm,room_id:n.room_id,session_id:n.session_id,sender_key:o}),t._retryDecryption(o,r)}).catch(function(e){console.error("Error handling m.room_key_event: "+e)})}else console.error("key event has no sender key (not encrypted?)");else console.error("key event is missing fields")},g.prototype.hasKeysForKeyRequest=function(e){var t=e.requestBody;return this._olmDevice.hasInboundSessionKeys(t.room_id,t.sender_key,t.session_id)},g.prototype.shareKeysWithDevice=function(e){var t=this,n=e.userId,o=e.deviceId,i=this._crypto.getStoredDevice(n,o),a=e.requestBody;this.olmlib.ensureOlmSessionsForDevices(this._olmDevice,this._baseApis,(0,r.default)({},n,[i])).then(function(e){return e[n][o].sessionId?(console.log("sharing keys for session "+a.sender_key+"|"+a.session_id+" with device "+n+":"+o),t._buildKeyForwardingMessage(a.room_id,a.sender_key,a.session_id)):null}).then(function(e){var a={algorithm:p.OLM_ALGORITHM,sender_key:t._olmDevice.deviceCurve25519Key,ciphertext:{}};return t.olmlib.encryptMessageForDevice(a.ciphertext,t._userId,t._deviceId,t._olmDevice,n,i,e).then(function(){var e=(0,r.default)({},n,(0,r.default)({},o,a));return t._baseApis.sendToDevice("m.room.encrypted",e)})}).done()},g.prototype._buildKeyForwardingMessage=function(){var e=(0,u.coroutine)(l.default.mark(function e(t,n,r){var o;return l.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,u.resolve)(this._olmDevice.getInboundGroupSessionKey(t,n,r));case 2:return o=e.sent,e.abrupt("return",{type:"m.forwarded_room_key",content:{algorithm:p.MEGOLM_ALGORITHM,room_id:t,sender_key:n,sender_claimed_ed25519_key:o.sender_claimed_ed25519_key,session_id:r,session_key:o.key,chain_index:o.chain_index,forwarding_curve25519_key_chain:o.forwarding_curve25519_key_chain}});case 4:case"end":return e.stop()}},e,this)}));return function(t,n,r){return e.apply(this,arguments)}}(),g.prototype.importRoomKey=function(e){var t=this;return this._olmDevice.addInboundGroupSession(e.room_id,e.sender_key,e.forwarding_curve25519_key_chain,e.session_id,e.session_key,e.sender_claimed_keys,!0).then(function(){t._retryDecryption(e.sender_key,e.session_id)})},g.prototype._retryDecryption=function(e,t){var n=e+"|"+t,r=this._pendingEvents[n];if(r){delete this._pendingEvents[n];var o=!0,i=!1,a=void 0;try{for(var l,u=(0,s.default)(r);!(o=(l=u.next()).done);o=!0){l.value.attemptDecryption(this._crypto)}}catch(e){i=!0,a=e}finally{try{!o&&u.return&&u.return()}finally{if(i)throw a}}}},m.registerAlgorithm(p.MEGOLM_ALGORITHM,_,g)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9),o=h(r),i=h(n(19)),a=h(n(14)),s=h(n(20)),l=h(n(4)),u=h(n(5)),c=function(){var e=(0,r.coroutine)(i.default.mark(function e(t,n,o,a){var s,l,u,c;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:s=!1,e.t0=i.default.keys(o);case 2:if((e.t1=e.t0()).done){e.next=9;break}if(l=e.t1.value,o.hasOwnProperty(l)){e.next=6;break}return e.abrupt("continue",2);case 6:l in a||(console.log("Device "+n+":"+l+" has been removed"),delete o[l],s=!0),e.next=2;break;case 9:e.t2=i.default.keys(a);case 10:if((e.t3=e.t2()).done){e.next=27;break}if(u=e.t3.value,a.hasOwnProperty(u)){e.next=14;break}return e.abrupt("continue",10);case 14:if((c=a[u]).user_id===n){e.next=18;break}return console.warn("Mismatched user_id "+c.user_id+" in keys from "+n+":"+u),e.abrupt("continue",10);case 18:if(c.device_id===u){e.next=21;break}return console.warn("Mismatched device_id "+c.device_id+" in keys from "+n+":"+u),e.abrupt("continue",10);case 21:return e.next=23,(0,r.resolve)(f(t,o,c));case 23:if(!e.sent){e.next=25;break}s=!0;case 25:e.next=10;break;case 27:return e.abrupt("return",s);case 28:case"end":return e.stop()}},e,this)}));return function(t,n,r,o){return e.apply(this,arguments)}}(),f=function(){var e=(0,r.coroutine)(i.default.mark(function e(t,n,o){var a,s,l,u,c,f;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(o.keys){e.next=2;break}return e.abrupt("return",!1);case 2:if(a=o.device_id,s=o.user_id,l="ed25519:"+a,u=o.keys[l]){e.next=9;break}return console.warn("Device "+s+":"+a+" has no ed25519 key"),e.abrupt("return",!1);case 9:return c=o.unsigned||{},e.prev=10,e.next=13,(0,r.resolve)(p.default.verifySignature(t,o,s,a,u));case 13:e.next=19;break;case 15:return e.prev=15,e.t0=e.catch(10),console.warn("Unable to verify signature on device "+s+":"+a+":"+e.t0),e.abrupt("return",!1);case 19:if(f=void 0,!(a in n)){e.next=27;break}if((f=n[a]).getFingerprint()==u){e.next=25;break}return console.warn("Ed25519 key for device "+s+":"+a+" has changed"),e.abrupt("return",!1);case 25:e.next=28;break;case 27:n[a]=f=new d.default(a);case 28:return f.keys=o.keys||{},f.algorithms=o.algorithms||[],f.unsigned=c,e.abrupt("return",!0);case 32:case"end":return e.stop()}},e,this,[[10,15]])}));return function(t,n,r){return e.apply(this,arguments)}}(),d=h(n(408)),p=h(n(289)),m=h(n(231));function h(e){return e&&e.__esModule?e:{default:e}}var _=function(){function e(t,n,r,o){(0,l.default)(this,e),this._cryptoStore=n,this._sessionStore=r,this._devices={},this._deviceTrackingStatus={},this._syncToken=null,this._serialiser=new g(t,o,this),this._keyDownloadsInProgressByUser={},this._dirty=!1,this._savePromise=null,this._resolveSavePromise=null,this._savePromiseTime=null,this._saveTimer=null}return(0,u.default)(e,[{key:"load",value:function(){var e=(0,r.coroutine)(i.default.mark(function e(){var t,n,o,l,u,c,f,d=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=!1,e.next=3,(0,r.resolve)(this._cryptoStore.doTxn("readwrite",[m.default.STORE_DEVICE_DATA],function(e){d._cryptoStore.getEndToEndDeviceData(e,function(n){null===n?(console.log("Migrating e2e device data..."),d._devices=d._sessionStore.getAllEndToEndDevices()||{},d._deviceTrackingStatus=d._sessionStore.getEndToEndDeviceTrackingStatus()||{},d._syncToken=d._sessionStore.getEndToEndDeviceSyncToken(),d._cryptoStore.storeEndToEndDeviceData({devices:d._devices,trackingStatus:d._deviceTrackingStatus,syncToken:d._syncToken},e),t=!0):(d._devices=n?n.devices:{},d._deviceTrackingStatus=n?n.trackingStatus:{},d._syncToken=n?n.syncToken:null)})}));case 3:for(t&&this._sessionStore.removeEndToEndDeviceData(),n=!0,o=!1,l=void 0,e.prev=7,u=(0,s.default)((0,a.default)(this._deviceTrackingStatus));!(n=(c=u.next()).done);n=!0)f=c.value,2==this._deviceTrackingStatus[f]&&(this._deviceTrackingStatus[f]=1);e.next=15;break;case 11:e.prev=11,e.t0=e.catch(7),o=!0,l=e.t0;case 15:e.prev=15,e.prev=16,!n&&u.return&&u.return();case 18:if(e.prev=18,!o){e.next=21;break}throw l;case 21:return e.finish(18);case 22:return e.finish(15);case 23:case"end":return e.stop()}},e,this,[[7,11,15,23],[16,,18,22]])}));return function(){return e.apply(this,arguments)}}()},{key:"saveIfDirty",value:function(){var e=(0,r.method)(function(e){var t=this;if(!this._dirty)return o.default.resolve(!1);void 0===e&&(e=500);var n=Date.now+e;this._savePromiseTime&&n<this._savePromiseTime&&(clearTimeout(this._saveTimer),this._saveTimer=null,this._savePromiseTime=null);var r=this._savePromise;if(null===r&&(r=new o.default(function(e,n){t._resolveSavePromise=e}),this._savePromise=r),null===this._saveTimer){var i=this._resolveSavePromise;this._savePromiseTime=n,this._saveTimer=setTimeout(function(){console.log("Saving device tracking data at token "+t._syncToken),t._savePromiseTime=null,t._saveTimer=null,t._savePromise=null,t._resolveSavePromise=null,t._dirty=!1,t._cryptoStore.doTxn("readwrite",[m.default.STORE_DEVICE_DATA],function(e){t._cryptoStore.storeEndToEndDeviceData({devices:t._devices,trackingStatus:t._deviceTrackingStatus,syncToken:t._syncToken},e)}).then(function(){i()})},e)}return r});return function(t){return e.apply(this,arguments)}}()},{key:"getSyncToken",value:function(){return this._syncToken}},{key:"setSyncToken",value:function(e){this._syncToken=e}},{key:"downloadKeys",value:function(e,t){var n=this,r=[],i=[];if(e.forEach(function(e){var o=n._deviceTrackingStatus[e];n._keyDownloadsInProgressByUser[e]?(console.log("downloadKeys: already have a download in progress for "+e+": awaiting its result"),i.push(n._keyDownloadsInProgressByUser[e])):(t||3!=o)&&r.push(e)}),0!=r.length){console.log("downloadKeys: downloading for",r);var a=this._doKeyDownload(r);i.push(a)}return 0===i.length&&console.log("downloadKeys: already have all necessary keys"),o.default.all(i).then(function(){return n._getDevicesFromStore(e)})}},{key:"_getDevicesFromStore",value:function(e){var t={},n=this;return e.map(function(e){t[e]={},(n.getStoredDevicesForUser(e)||[]).map(function(n){t[e][n.deviceId]=n})}),t}},{key:"getStoredDevicesForUser",value:function(e){var t=this._devices[e];if(!t)return null;var n=[];for(var r in t)t.hasOwnProperty(r)&&n.push(d.default.fromStorage(t[r],r));return n}},{key:"getRawStoredDevicesForUser",value:function(e){return this._devices[e]}},{key:"getStoredDevice",value:function(e,t){var n=this._devices[e];if(n&&n[t])return d.default.fromStorage(n[t],t)}},{key:"getDeviceByIdentityKey",value:function(e,t,n){if(t!==p.default.OLM_ALGORITHM&&t!==p.default.MEGOLM_ALGORITHM)return null;var r=this._devices[e];if(!r)return null;for(var o in r)if(r.hasOwnProperty(o)){var i=r[o];for(var a in i.keys){if(i.keys.hasOwnProperty(a))if(0===a.indexOf("curve25519:"))if(i.keys[a]==n)return d.default.fromStorage(i,o)}}return null}},{key:"storeDevicesForUser",value:function(e,t){this._devices[e]=t,this._dirty=!0}},{key:"startTrackingDeviceList",value:function(e){if("string"!=typeof e)throw new Error("userId must be a string; was "+e);this._deviceTrackingStatus[e]||(console.log("Now tracking device list for "+e),this._deviceTrackingStatus[e]=1),this._dirty=!0}},{key:"stopTrackingDeviceList",value:function(e){this._deviceTrackingStatus[e]&&(console.log("No longer tracking device list for "+e),this._deviceTrackingStatus[e]=0,this._dirty=!0)}},{key:"stopTrackingAllDeviceLists",value:function(){var e=!0,t=!1,n=void 0;try{for(var r,o=(0,s.default)((0,a.default)(this._deviceTrackingStatus));!(e=(r=o.next()).done);e=!0){var i=r.value;this._deviceTrackingStatus[i]=0}}catch(e){t=!0,n=e}finally{try{!e&&o.return&&o.return()}finally{if(t)throw n}}this._dirty=!0}},{key:"invalidateUserDeviceList",value:function(e){this._deviceTrackingStatus[e]&&(console.log("Marking device list outdated for",e),this._deviceTrackingStatus[e]=1,this._dirty=!0)}},{key:"refreshOutdatedDeviceLists",value:function(){this.saveIfDirty();var e=[],t=!0,n=!1,r=void 0;try{for(var o,i=(0,s.default)((0,a.default)(this._deviceTrackingStatus));!(t=(o=i.next()).done);t=!0){var l=o.value;1==this._deviceTrackingStatus[l]&&e.push(l)}}catch(e){n=!0,r=e}finally{try{!t&&i.return&&i.return()}finally{if(n)throw r}}return this._doKeyDownload(e)}},{key:"_setRawStoredDevicesForUser",value:function(e,t){this._devices[e]=t}},{key:"_doKeyDownload",value:function(e){var t=this;if(0===e.length)return o.default.resolve();var n=this._serialiser.updateDevicesForUsers(e,this._syncToken).then(function(){r(!0)},function(t){throw console.error("Error downloading keys for "+e+":",t),r(!1),t});e.forEach(function(e){t._keyDownloadsInProgressByUser[e]=n,1==t._deviceTrackingStatus[e]&&(t._deviceTrackingStatus[e]=2)});var r=function(r){e.forEach(function(e){(t._dirty=!0,t._keyDownloadsInProgressByUser[e]===n)?(delete t._keyDownloadsInProgressByUser[e],2==t._deviceTrackingStatus[e]&&(r?(t._deviceTrackingStatus[e]=3,console.log("Device list for",e,"now up to date")):t._deviceTrackingStatus[e]=1)):console.log("Another update in the queue for",e,"- not marking up-to-date")}),t.saveIfDirty()};return n}}]),e}();t.default=_;var g=function(){function e(t,n,r){(0,l.default)(this,e),this._baseApis=t,this._olmDevice=n,this._deviceList=r,this._downloadInProgress=!1,this._keyDownloadsQueuedByUser={},this._queuedQueryDeferred=null,this._syncToken=null}return(0,u.default)(e,[{key:"updateDevicesForUsers",value:function(e,t){var n=this;return e.forEach(function(e){n._keyDownloadsQueuedByUser[e]=!0}),this._queuedQueryDeferred||(this._queuedQueryDeferred=o.default.defer()),this._syncToken=t,this._downloadInProgress?(console.log("Queued key download for",e),this._queuedQueryDeferred.promise):this._doQueuedQueries()}},{key:"_doQueuedQueries",value:function(){var e=this;if(this._downloadInProgress)throw new Error("DeviceListUpdateSerialiser._doQueuedQueries called with request active");var t=(0,a.default)(this._keyDownloadsQueuedByUser);this._keyDownloadsQueuedByUser={};var n=this._queuedQueryDeferred;this._queuedQueryDeferred=null,console.log("Starting key download for",t),this._downloadInProgress=!0;var r={};return this._syncToken&&(r.token=this._syncToken),this._baseApis.downloadKeysForUsers(t,r).then(function(n){var r=n.device_keys||{},i=o.default.resolve(),a=!0,l=!1,u=void 0;try{for(var c,f=function(){var t=c.value;i=i.delay(5).then(function(){return e._processQueryResponseForUser(t,r[t])})},d=(0,s.default)(t);!(a=(c=d.next()).done);a=!0)f()}catch(e){l=!0,u=e}finally{try{!a&&d.return&&d.return()}finally{if(l)throw u}}return i}).done(function(){console.log("Completed key download for "+t),e._downloadInProgress=!1,n.resolve(),e._queuedQueryDeferred&&e._doQueuedQueries()},function(r){console.warn("Error downloading keys for "+t+":",r),e._downloadInProgress=!1,n.reject(r)}),n.promise}},{key:"_processQueryResponseForUser",value:function(){var e=(0,r.coroutine)(i.default.mark(function e(t,n){var o,s,l;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("got keys for "+t+":",n),o={},(s=this._deviceList.getRawStoredDevicesForUser(t))&&(0,a.default)(s).forEach(function(e){var t=d.default.fromStorage(s[e],e);o[e]=t}),e.next=6,(0,r.resolve)(c(this._olmDevice,t,o,n||{}));case 6:l={},(0,a.default)(o).forEach(function(e){l[e]=o[e].toStorage()}),this._deviceList._setRawStoredDevicesForUser(t,l);case 9:case"end":return e.stop()}},e,this)}));return function(t,n){return e.apply(this,arguments)}}()}]),e}()},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(9));var o=n(29),i=!1;function a(e,t){this.retryAlgorithm=e||a.RETRY_BACKOFF_RATELIMIT,this.queueAlgorithm=t||a.QUEUE_MESSAGES,this._queues={},this._activeQueues=[],this._procFn=null}function s(e){e._procFn&&o.forEach(o.filter(o.keys(e._queues),function(t){return-1===e._activeQueues.indexOf(t)&&e._queues[t].length>0}),function(t){e._activeQueues.push(t),u("Spinning up queue: '%s'",t),function e(t,n){var r=function(e,t){var n=e._queues[t];if(!o.isArray(n))return null;return n[0]}(t,n);if(!r){var i=t._activeQueues.indexOf(n);return i>=0&&t._activeQueues.splice(i,1),void u("Stopping queue '%s' as it is now empty",n)}u("Queue '%s' has %s pending events",n,t._queues[n].length);t._procFn(r.event).done(function(o){l(t,n),u("Queue '%s' sent event %s",n,r.event.getId()),r.defer.resolve(o),e(t,n)},function(o){r.attempts+=1;var i=t.retryAlgorithm(r.event,r.attempts,o);u("retry(%s) err=%s event_id=%s waitTime=%s",r.attempts,o,r.event.getId(),i),-1===i?(u("Queue '%s' giving up on event %s",n,r.event.getId()),l(t,n),r.defer.reject(o),e(t,n)):setTimeout(function(){e(t,n)},i)})}(e,t)})}function l(e,t){var n=e._queues[t];return o.isArray(n)?n.shift():null}function u(){var e;i&&(e=console).log.apply(e,arguments)}a.prototype.getQueueForEvent=function(e){var t=this.queueAlgorithm(e);return t&&this._queues[t]?o.map(this._queues[t],function(e){return e.event}):null},a.prototype.removeEventFromQueue=function(e){var t=this.queueAlgorithm(e);if(!t||!this._queues[t])return!1;var n=!1;return o.removeElement(this._queues[t],function(t){if(t.event.getId()===e.getId())return n=!0,!0}),n},a.prototype.setProcessFunction=function(e){this._procFn=e,s(this)},a.prototype.queueEvent=function(e){var t=this.queueAlgorithm(e);if(!t)return null;this._queues[t]||(this._queues[t]=[]);var n=r.default.defer();return this._queues[t].push({event:e,defer:n,attempts:0}),u("Queue algorithm dumped event %s into queue '%s'",e.getId(),t),s(this),n.promise},a.RETRY_BACKOFF_RATELIMIT=function(e,t,n){if(400===n.httpStatus||403===n.httpStatus||401===n.httpStatus)return-1;if("rejected"===n.cors)return-1;if("M_LIMIT_EXCEEDED"===n.name){var r=n.data.retry_after_ms;if(r)return r}return t>4?-1:1e3*Math.pow(2,t)},a.QUEUE_MESSAGES=function(e){return"m.room.message"===e.getType()?"message":null},e.exports=a},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(20));var o=n(29),i=!1,a="session.e2e.";function s(e){if(this.store=e,!(o.isFunction(e.getItem)&&o.isFunction(e.setItem)&&o.isFunction(e.removeItem)&&o.isFunction(e.key)&&"number"==typeof e.length))throw new Error("Supplied webStore does not meet the WebStorage API interface")}s.prototype={removeEndToEndAccount:function(){this.store.removeItem(l)},getEndToEndAccount:function(){return this.store.getItem(l)},getAllEndToEndDevices:function(){for(var e=f(""),t={},n=0;n<this.store.length;++n){var r=this.store.key(n),o=r.substr(e.length);r.startsWith(e)&&(t[o]=m(this.store,r))}return t},getEndToEndDeviceTrackingStatus:function(){return m(this.store,c)},getEndToEndDeviceSyncToken:function(){return m(this.store,u)},removeEndToEndDeviceData:function(){_(this.store,f("")),_(this.store,c),_(this.store,u)},getEndToEndSessions:function(e){return m(this.store,d(e))},getAllEndToEndSessions:function(){var e=h(this.store,d("")),t={},n=!0,o=!1,i=void 0;try{for(var a,s=(0,r.default)(e);!(n=(a=s.next()).done);n=!0){var l=a.value;t[l.substr(d("").length)]=m(this.store,l)}}catch(e){o=!0,i=e}finally{try{!n&&s.return&&s.return()}finally{if(o)throw i}}return t},removeAllEndToEndSessions:function(){_(this.store,d(""))},getAllEndToEndInboundGroupSessionKeys:function(){for(var e=a+"inboundgroupsessions/",t=[],n=0;n<this.store.length;n++){var r=this.store.key(n);r.startsWith(e)&&t.push({senderKey:r.substr(e.length,43),sessionId:r.substr(e.length+44)})}return t},getEndToEndInboundGroupSession:function(e,t){var n=function(e,t){return a+"inboundgroupsessions/"+e+"/"+t}(e,t);return this.store.getItem(n)},removeAllEndToEndInboundGroupSessions:function(){_(this.store,a+"inboundgroupsessions/")},getAllEndToEndRooms:function(){var e=h(this.store,p("")),t={},n=!0,o=!1,i=void 0;try{for(var a,s=(0,r.default)(e);!(n=(a=s.next()).done);n=!0){var l=a.value;t[l.substr(p("").length)]=m(this.store,l)}}catch(e){o=!0,i=e}finally{try{!n&&s.return&&s.return()}finally{if(o)throw i}}return t},removeAllEndToEndRooms:function(){_(this.store,p(""))}};var l=a+"account",u=a+"device_sync_token",c=a+"device_tracking";function f(e){return a+"devices/"+e}function d(e){return a+"sessions/"+e}function p(e){return a+"rooms/"+e}function m(e,t){try{return JSON.parse(e.getItem(t))}catch(e){g("Failed to get key %s: %s",t,e),g(e.stack)}return null}function h(e,t){for(var n=[],r=0;r<e.length;++r){var o=e.key(r);o.startsWith(t)&&n.push(o)}return n}function _(e,t){for(var n=[],o=0;o<e.length;++o){var i=e.key(o);i.startsWith(t)&&n.push(i)}var a=!0,s=!1,l=void 0;try{for(var u,c=(0,r.default)(n);!(a=(u=c.next()).done);a=!0){var f=u.value;e.removeItem(f)}}catch(e){s=!0,l=e}finally{try{!a&&c.return&&c.return()}finally{if(s)throw l}}}function g(){var e;i&&(e=console).log.apply(e,arguments)}e.exports=s},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(9));var o=n(172),i=function(){};function a(e,t,n){n=n||{},this._client=e,this._timelineSet=t,this._start=null,this._end=null,this._eventCount=0,this._windowLimit=n.windowLimit||1e3}function s(e,t){this.timeline=e,this.index=t}a.prototype.load=function(e,t){var n=this;t=t||20;var o=function(r){var o=void 0,i=r.getEvents();if(e){for(var a=0;a<i.length;a++)if(i[a].getId()==e){o=a;break}if(void 0===o)throw new Error("getEventTimeline result didn't include requested event")}else o=i.length;var l=Math.min(i.length,o+Math.ceil(t/2)),u=Math.max(0,l-t);n._start=new s(r,u-r.getBaseIndex()),n._end=new s(r,l-r.getBaseIndex()),n._eventCount=l-u};if(e){var i=this._client.getEventTimeline(this._timelineSet,e);return i.isFulfilled()?(o(i.value()),r.default.resolve()):i.then(o)}return o(this._timelineSet.getLiveTimeline()),r.default.resolve()},a.prototype.canPaginate=function(e){var t=void 0;if(e==o.BACKWARDS)t=this._start;else{if(e!=o.FORWARDS)throw new Error("Invalid direction '"+e+"'");t=this._end}if(!t)return i("TimelineWindow: no timeline yet"),!1;if(e==o.BACKWARDS){if(t.index>t.minIndex())return!0}else if(t.index<t.maxIndex())return!0;return Boolean(t.timeline.getNeighbouringTimeline(e)||t.timeline.getPaginationToken(e))},a.prototype.paginate=function(e,t,n,a){void 0===n&&(n=!0),void 0===a&&(a=5);var s=void 0;if(e==o.BACKWARDS)s=this._start;else{if(e!=o.FORWARDS)throw new Error("Invalid direction '"+e+"'");s=this._end}if(!s)return i("TimelineWindow: no timeline yet"),r.default.resolve(!1);if(s.pendingPaginate)return s.pendingPaginate;var l=e==o.BACKWARDS?s.retreat(t):s.advance(t);if(l){this._eventCount+=l,i("TimelineWindow: increased cap by "+l+" (now "+this._eventCount+")");var u=this._eventCount-this._windowLimit;return u>0&&this.unpaginate(u,e!=o.BACKWARDS),r.default.resolve(!0)}if(!n||0===a)return r.default.resolve(!1);if(!s.timeline.getPaginationToken(e))return i("TimelineWindow: no token"),r.default.resolve(!1);i("TimelineWindow: starting request");var c=this,f=this._client.paginateEventTimeline(s.timeline,{backwards:e==o.BACKWARDS,limit:t}).finally(function(){s.pendingPaginate=null}).then(function(n){return i("TimelineWindow: request completed with result "+n),!!n&&c.paginate(e,t,!0,a-1)});return s.pendingPaginate=f,f},a.prototype.unpaginate=function(e,t){var n=t?this._start:this._end;if(e>this._eventCount||e<0)throw new Error("Attemting to unpaginate "+e+" events, but only have "+this._eventCount+" in the timeline");for(;e>0;){var r=t?n.advance(e):n.retreat(e);if(r<=0)throw new Error("Unable to unpaginate any further, but still have "+this._eventCount+" events");e-=r,this._eventCount-=r,i("TimelineWindow.unpaginate: dropped "+r+" (now "+this._eventCount+")")}},a.prototype.getEvents=function(){if(!this._start)return[];for(var e=[],t=this._start.timeline;;){var n=t.getEvents(),r=0,i=n.length;t===this._start.timeline&&(r=this._start.index+t.getBaseIndex()),t===this._end.timeline&&(i=this._end.index+t.getBaseIndex());for(var a=r;a<i;a++)e.push(n[a]);if(t===this._end.timeline)break;t=t.getNeighbouringTimeline(o.FORWARDS)}return e},s.prototype.minIndex=function(){return-1*this.timeline.getBaseIndex()},s.prototype.maxIndex=function(){return this.timeline.getEvents().length-this.timeline.getBaseIndex()},s.prototype.advance=function(e){if(!e)return 0;var t=void 0;if(e<0){if((t=Math.max(e,this.minIndex()-this.index))<0)return this.index+=t,t}else if((t=Math.min(e,this.maxIndex()-this.index))>0)return this.index+=t,t;var n=this.timeline.getNeighbouringTimeline(e<0?o.BACKWARDS:o.FORWARDS);return n?(this.timeline=n,this.index=e<0?this.maxIndex():this.minIndex(),i("paginate: switched to new neighbour"),this.advance(e)):0},s.prototype.retreat=function(e){return-1*this.advance(-1*e)},e.exports.TimelineWindow=a,e.exports.TimelineIndex=s},function(e,t,n){"use strict";var r=a(n(20)),o=a(n(31)),i=a(n(9));function a(e){return e&&e.__esModule?e:{default:e}}var s=n(89),l=n(29);function u(e){this._matrixClient=e.matrixClient,this._data=e.authData||{},this._requestCallback=e.doRequest,this._stateUpdatedCallback=e.stateUpdated||e.startAuthStage,this._completionDeferred=null,this._inputs=e.inputs||{},e.sessionId&&(this._data.session=e.sessionId),this._clientSecret=e.clientSecret||this._matrixClient.generateClientSecret(),this._emailSid=e.emailSid,void 0===this._emailSid&&(this._emailSid=null),this._currentStage=null}u.prototype={attemptAuth:function(){var e=this;return this._completionDeferred=i.default.defer(),i.default.resolve().then(function(){return e._data.flows?e._startNextAuthStage():e._doRequest(e._data),e._completionDeferred.promise})},poll:function(){if(this._data.session){var e={};if("m.login.email.identity"==this._currentStage&&this._emailSid){var t=s.parse(this._matrixClient.getIdentityServerUrl());e={type:"m.login.email.identity",threepid_creds:{sid:this._emailSid,client_secret:this._clientSecret,id_server:t.host}}}this.submitAuthDict(e,!0)}},getSessionId:function(){return this._data?this._data.session:void 0},getClientSecret:function(){return this._clientSecret},getStageParams:function(e){var t={};return this._data&&this._data.params&&(t=this._data.params),t[e]},submitAuthDict:function(e,t){if(!this._completionDeferred)throw new Error("submitAuthDict() called before attemptAuth()");var n={session:this._data.session};l.extend(n,e),this._doRequest(n,t)},getEmailSid:function(){return this._emailSid},setEmailSid:function(e){this._emailSid=e},_doRequest:function(e,t){var n=this,r=this,o=void 0;try{o=this._requestCallback(e,t)}catch(e){o=i.default.reject(e)}o=o.then(function(e){console.log("result from request: ",e),r._completionDeferred.resolve(e)},function(e){var t=e.data?e.data.flows:null,n=Boolean(r._data.flows)||Boolean(t);if(401!==e.httpStatus||!e.data||!n)throw e;e.data.flows||e.data.completed||e.data.session||(e.data.flows=r._data.flows,e.data.completed=r._data.completed,e.data.session=r._data.session),r._data=e.data,r._startNextAuthStage()}),(o=t?o.catch(function(e){console.log("Ignoring error from UI auth: "+e)}):o.catch(function(e){n._completionDeferred.reject(e)})).done()},_startNextAuthStage:function(){var e=this._chooseStage();if(!e)throw new Error("No incomplete flows from the server");if(this._currentStage=e,"m.login.dummy"!=e)if(this._data.errcode||this._data.error)this._stateUpdatedCallback(e,{errcode:this._data.errcode||"",error:this._data.error||""});else{var t={};"m.login.email.identity"==e&&(t.emailSid=this._emailSid),this._stateUpdatedCallback(e,t)}else this.submitAuthDict({type:"m.login.dummy"})},_chooseStage:function(){var e=this._chooseFlow();console.log("Active flow => %s",(0,o.default)(e));var t=this._firstUncompletedStage(e);return console.log("Next stage: %s",t),t},_chooseFlow:function(){var e=this._data.flows||[],t=Boolean(this._inputs.emailAddress)||Boolean(this._emailSid),n=Boolean(this._inputs.phoneCountry)&&Boolean(this._inputs.phoneNumber),o=!0,i=!1,a=void 0;try{for(var s,l=(0,r.default)(e);!(o=(s=l.next()).done);o=!0){var u=s.value,c=!1,f=!1,d=!0,p=!1,m=void 0;try{for(var h,_=(0,r.default)(u.stages);!(d=(h=_.next()).done);d=!0){var g=h.value;"m.login.email.identity"===g?c=!0:"m.login.msisdn"==g&&(f=!0)}}catch(v){p=!0,m=v}finally{try{!d&&_.return&&_.return()}finally{if(p)throw m}}if(c==t&&f==n)return u}}catch(v){i=!0,a=v}finally{try{!o&&l.return&&l.return()}finally{if(i)throw a}}var v=new Error("No appropriate authentication flow found");throw v.name="NoAuthFlowFoundError",v.required_stages=[],t&&v.required_stages.push("m.login.email.identity"),n&&v.required_stages.push("m.login.msisdn"),v.available_flows=e,v},_firstUncompletedStage:function(e){for(var t=(this._data||{}).completed||[],n=0;n<e.stages.length;++n){var r=e.stages[n];if(-1===t.indexOf(r))return r}}},e.exports=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=d(n(31)),o=d(n(11)),i=d(n(4)),a=d(n(5)),s=d(n(12)),l=d(n(13)),u=d(n(9)),c=d(n(139)),f=d(n(8));function d(e){return e&&e.__esModule?e:{default:e}}var p=function(e){function t(e){(0,i.default)(this,t);var n=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this));return n._featureNames=e,n}return(0,l.default)(t,e),(0,a.default)(t,[{key:"getValue",value:function(e,t){if(this._featureNames.includes(e))return this._readFeature(e);if("notificationsEnabled"===e){var n=localStorage.getItem("notifications_enabled");return"string"==typeof n?"true"===n:null}if("notificationBodyEnabled"===e){var r=localStorage.getItem("notifications_body_enabled");return"string"==typeof r?"true"===r:null}if("audioNotificationsEnabled"===e){var o=localStorage.getItem("audio_notifications_enabled");return"string"==typeof o?"true"===o:null}return(this._getSettings()||{})[e]}},{key:"setValue",value:function(e,t,n){if(this._featureNames.includes(e))return this._writeFeature(e,n),u.default.resolve();if("notificationsEnabled"===e)return localStorage.setItem("notifications_enabled",n),u.default.resolve();if("notificationBodyEnabled"===e)return localStorage.setItem("notifications_body_enabled",n),u.default.resolve();if("audioNotificationsEnabled"===e)return localStorage.setItem("audio_notifications_enabled",n),u.default.resolve();var o=this._getSettings()||{};return o[e]=n,localStorage.setItem("mx_local_settings",(0,r.default)(o)),u.default.resolve()}},{key:"canSetValue",value:function(e,t){return!0}},{key:"isSupported",value:function(){return void 0!==localStorage&&null!==localStorage}},{key:"_getSettings",value:function(){var e=localStorage.getItem("mx_local_settings");return e?JSON.parse(e):null}},{key:"_readFeature",value:function(e){return(!f.default.get()||!f.default.get().isGuest())&&"true"===localStorage.getItem("mx_labs_feature_"+e)}},{key:"_writeFeature",value:function(e,t){localStorage.setItem("mx_labs_feature_"+e,t)}}]),t}(c.default);t.default=p,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(31)),o=c(n(11)),i=c(n(4)),a=c(n(5)),s=c(n(12)),l=c(n(13)),u=c(n(9));function c(e){return e&&e.__esModule?e:{default:e}}var f=function(e){function t(){return(0,i.default)(this,t),(0,s.default)(this,(t.__proto__||(0,o.default)(t)).apply(this,arguments))}return(0,l.default)(t,e),(0,a.default)(t,[{key:"getValue",value:function(e,t){if("blacklistUnverifiedDevices"===e){var n=this._read("mx_local_settings");if(n&&n.blacklistUnverifiedDevicesPerRoom)return n.blacklistUnverifiedDevicesPerRoom[t]}var r=this._read(this._getKey(e,t));return r?r.value:null}},{key:"setValue",value:function(e,t,n){if("blacklistUnverifiedDevices"===e){var o=this._read("mx_local_settings");return o||(o={}),o.blacklistUnverifiedDevicesPerRoom||(o.blacklistUnverifiedDevicesPerRoom={}),o.blacklistUnverifiedDevicesPerRoom[t]=n,localStorage.setItem("mx_local_settings",(0,r.default)(o)),u.default.resolve()}return null===n?localStorage.removeItem(this._getKey(e,t)):(n=(0,r.default)({value:n}),localStorage.setItem(this._getKey(e,t),n)),u.default.resolve()}},{key:"canSetValue",value:function(e,t){return!0}},{key:"isSupported",value:function(){return void 0!==localStorage&&null!==localStorage}},{key:"_read",value:function(e){var t=localStorage.getItem(e);return t?JSON.parse(t):null}},{key:"_getKey",value:function(e,t){return"mx_setting_"+e+"_"+t}}]),t}(c(n(139)).default);t.default=f,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=l(n(11)),o=l(n(4)),i=l(n(5)),a=l(n(12)),s=l(n(13));function l(e){return e&&e.__esModule?e:{default:e}}var u=function(e){function t(e){(0,o.default)(this,t);var n=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this));return n._defaults=e,n}return(0,s.default)(t,e),(0,i.default)(t,[{key:"getValue",value:function(e,t){return this._defaults[e]}},{key:"setValue",value:function(e,t,n){throw new Error("Cannot set values on the default level handler")}},{key:"canSetValue",value:function(e,t){return!1}},{key:"isSupported",value:function(){return!0}}]),t}(l(n(139)).default);t.default=u,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(11)),o=c(n(4)),i=c(n(5)),a=c(n(12)),s=c(n(13)),l=c(n(139)),u=c(n(8));function c(e){return e&&e.__esModule?e:{default:e}}var f=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,i.default)(t,[{key:"getValue",value:function(e,t){if("urlPreviewsEnabled"===e){var n=this._getSettings(t,"org.matrix.room.preview_urls")||{};return"boolean"!=typeof n.disable?null:!n.disable}return"roomColor"===e?this._getSettings(t,"org.matrix.room.color_scheme"):(this._getSettings(t)||{})[e]}},{key:"setValue",value:function(e,t,n){if("urlPreviewsEnabled"===e){var r=this._getSettings(t,"org.matrix.room.preview_urls")||{};return r.disable=!n,u.default.get().setRoomAccountData(t,"org.matrix.room.preview_urls",r)}if("roomColor"===e)return u.default.get().setRoomAccountData(t,"org.matrix.room.color_scheme",n);var o=this._getSettings(t)||{};return o[e]=n,u.default.get().setRoomAccountData(t,"im.vector.web.settings",o)}},{key:"canSetValue",value:function(e,t){var n=u.default.get().getRoom(t);return void 0!==n&&null!==n}},{key:"isSupported",value:function(){var e=u.default.get();return void 0!==e&&null!==e}},{key:"_getSettings",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"im.vector.web.settings",n=u.default.get().getRoom(e);if(!n)return null;var r=n.getAccountData(t);return r&&r.getContent()?r.getContent():null}}]),t}(l.default);t.default=f,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(11)),o=c(n(4)),i=c(n(5)),a=c(n(12)),s=c(n(13)),l=c(n(139)),u=c(n(8));function c(e){return e&&e.__esModule?e:{default:e}}var f=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,i.default)(t,[{key:"getValue",value:function(e,t){if("urlPreviewsEnabled"===e){var n=this._getSettings("org.matrix.preview_urls")||{};return"boolean"!=typeof n.disable?null:!n.disable}var r=this._getSettings()||{},o=r[e];return null!==o&&void 0!==o||"hideAvatarChanges"!==e&&"hideDisplaynameChanges"!==e||(o=r.hideAvatarDisplaynameChanges),o}},{key:"setValue",value:function(e,t,n){if("urlPreviewsEnabled"===e){var r=this._getSettings("org.matrix.preview_urls")||{};return r.disable=!n,u.default.get().setAccountData("org.matrix.preview_urls",r)}var o=this._getSettings()||{};return o[e]=n,u.default.get().setAccountData("im.vector.web.settings",o)}},{key:"canSetValue",value:function(e,t){return!0}},{key:"isSupported",value:function(){var e=u.default.get();return void 0!==e&&null!==e}},{key:"_getSettings",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"im.vector.web.settings",t=u.default.get();if(!t)return null;var n=t.getAccountData(e);return n&&n.getContent()?n.getContent():null}}]),t}(l.default);t.default=f,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(11)),o=c(n(4)),i=c(n(5)),a=c(n(12)),s=c(n(13)),l=c(n(139)),u=c(n(8));function c(e){return e&&e.__esModule?e:{default:e}}var f=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,i.default)(t,[{key:"getValue",value:function(e,t){if("urlPreviewsEnabled"===e){var n=this._getSettings(t,"org.matrix.room.preview_urls")||{};return"boolean"!=typeof n.disable?null:!n.disable}return(this._getSettings(t)||{})[e]}},{key:"setValue",value:function(e,t,n){if("urlPreviewsEnabled"===e){var r=this._getSettings(t,"org.matrix.room.preview_urls")||{};return r.disable=!n,u.default.get().sendStateEvent(t,"org.matrix.room.preview_urls",r)}var o=this._getSettings(t)||{};return o[e]=n,u.default.get().sendStateEvent(t,"im.vector.web.settings",o,"")}},{key:"canSetValue",value:function(e,t){var n=u.default.get(),r=n.getRoom(t),o="im.vector.web.settings";return"urlPreviewsEnabled"===e&&(o="org.matrix.room.preview_urls"),!!r&&r.currentState.maySendStateEvent(o,n.getUserId())}},{key:"isSupported",value:function(){var e=u.default.get();return void 0!==e&&null!==e}},{key:"_getSettings",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"im.vector.web.settings",n=u.default.get().getRoom(e);if(!n)return null;var r=n.currentState.getStateEvents(t,"");return r&&r.getContent()?r.getContent():null}}]),t}(l.default);t.default=f,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(11)),o=c(n(4)),i=c(n(5)),a=c(n(12)),s=c(n(13)),l=c(n(139)),u=c(n(39));function c(e){return e&&e.__esModule?e:{default:e}}var f=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,i.default)(t,[{key:"getValue",value:function(e,t){var n=u.default.get()||{};if("theme"===e)return n.default_theme;var r=n.settingDefaults;return r&&r[e]?r[e]:null}},{key:"setValue",value:function(e,t,n){throw new Error("Cannot change settings at the config level")}},{key:"canSetValue",value:function(e,t){return!1}},{key:"isSupported",value:function(){return!0}}]),t}(l.default);t.default=f,e.exports=t.default},function(e,t,n){"use strict";var r=n(1137),o=n(595).isArray,i=n(595).isDate,a=n(1139).sprintf,s=n(55),l=n(1140),u=n(1142);function c(e){return"string"==typeof e||"[object String]"===Object.prototype.toString.call(e)}function f(e){return c(e)&&":"===e[0]}function d(e,t){return t.reduce(function(e,t){return function(e){return null!==e&&"[object Object]"===Object.prototype.toString.call(e)}(e)&&function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}(e,t)?e[t]:null},e)}function p(){s.EventEmitter.apply(this),this._registry={locale:"en",interpolate:!0,fallbackLocales:[],scope:null,translations:{},interpolations:{},normalizedKeys:{},separator:".",keepTrailingDot:!1,keyTransformer:function(e){return e},generateMissingEntry:function(e){return"missing translation: "+e}},this.registerTranslations("en",n(1144)),this.setMaxListeners(0)}p.prototype=s.EventEmitter.prototype,p.prototype.constructor=s.EventEmitter,p.prototype.getLocale=function(){return this._registry.locale},p.prototype.setLocale=function(e){var t=this._registry.locale;return t!=e&&(this._registry.locale=e,this.emit("localechange",e,t)),t},p.prototype.getFallbackLocale=function(){return this._registry.fallbackLocales},p.prototype.setFallbackLocale=function(e){var t=this._registry.fallbackLocales;return this._registry.fallbackLocales=[].concat(e||[]),t},p.prototype.getAvailableLocales=function(){return this._registry.availableLocales||Object.keys(this._registry.translations)},p.prototype.setAvailableLocales=function(e){var t=this.getAvailableLocales();return this._registry.availableLocales=e,t},p.prototype.getSeparator=function(){return this._registry.separator},p.prototype.setSeparator=function(e){var t=this._registry.separator;return this._registry.separator=e,t},p.prototype.setInterpolate=function(e){var t=this._registry.interpolate;return this._registry.interpolate=e,t},p.prototype.getInterpolate=function(){return this._registry.interpolate},p.prototype.setKeyTransformer=function(e){var t=this._registry.keyTransformer;return this._registry.keyTransformer=e,t},p.prototype.getKeyTransformer=function(){return this._registry.keyTransformer},p.prototype.setMissingEntryGenerator=function(e){var t=this._registry.generateMissingEntry;return this._registry.generateMissingEntry=e,t},p.prototype.getMissingEntryGenerator=function(){return this._registry.generateMissingEntry},p.prototype.registerTranslations=function(e,t){var n={};return n[e]=t,r(!0,this._registry.translations,n),n},p.prototype.registerInterpolations=function(e){return r(!0,this._registry.interpolations,e)},p.prototype.onLocaleChange=p.prototype.addLocaleChangeListener=function(e){this.addListener("localechange",e)},p.prototype.offLocaleChange=p.prototype.removeLocaleChangeListener=function(e){this.removeListener("localechange",e)},p.prototype.onTranslationNotFound=p.prototype.addTranslationNotFoundListener=function(e){this.addListener("translationnotfound",e)},p.prototype.offTranslationNotFound=p.prototype.removeTranslationNotFoundListener=function(e){this.removeListener("translationnotfound",e)},p.prototype.onError=p.prototype.addErrorListener=function(e){this.addListener("error",e)},p.prototype.offError=p.prototype.removeErrorListener=function(e){this.removeListener("error",e)},p.prototype.translate=function(e,t){if(!o(e)&&!c(e)||!e.length)throw new Error("invalid argument: key");f(e)&&(e=e.substr(1)),e=this._registry.keyTransformer(e,t);var n=(t=r(!0,{},t)).locale||this._registry.locale;delete t.locale;var i=t.scope||this._registry.scope;delete t.scope;var a=t.separator||this._registry.separator;delete t.separator;var s=[].concat(t.fallbackLocale||this._registry.fallbackLocales);delete t.fallbackLocale;var l=this._normalizeKeys(n,i,e,a),u=d(this._registry.translations,l);if(null===u&&(this.emit("translationnotfound",n,e,t.fallback,i),t.fallback&&(u=this._fallback(n,i,e,t.fallback,t))),null===u&&s.length>0&&-1===s.indexOf(n))for(var p=0,m=s.length;p<m;p++){var h=s[p],_=this._normalizeKeys(h,i,e,a);if(u=d(this._registry.translations,_)){n=h;break}}return null===u&&(u=this._registry.generateMissingEntry(l.join(a))),u=this._pluralize(n,u,t.count),!1!==this._registry.interpolate&&!1!==t.interpolate&&(u=this._interpolate(u,t)),u},p.prototype.localize=function(e,t){if(!i(e))throw new Error("invalid argument: object must be a date");var n=(t=r(!0,{},t)).locale||this._registry.locale,o=t.scope||"counterpart",a=t.type||"datetime",s=t.format||"default";return t={locale:n,scope:o,interpolate:!1},s=this.translate(["formats",a,s],r(!0,{},t)),u(e,s,this.translate("names",t))},p.prototype._pluralize=function(e,t,n){if("object"!=typeof t||null===t||"number"!=typeof n)return t;var r=this.translate("pluralize",{locale:e,scope:"counterpart"});return"[object Function]"!==Object.prototype.toString.call(r)?r:r(t,n)},p.prototype.withLocale=function(e,t,n){var r=this._registry.locale;this._registry.locale=e;var o=t.call(n);return this._registry.locale=r,o},p.prototype.withScope=function(e,t,n){var r=this._registry.scope;this._registry.scope=e;var o=t.call(n);return this._registry.scope=r,o},p.prototype.withSeparator=function(e,t,n){var r=this.setSeparator(e),o=t.call(n);return this.setSeparator(r),o},p.prototype._normalizeKeys=function(e,t,n,r){var o=[];return o=(o=(o=o.concat(this._normalizeKey(e,r))).concat(this._normalizeKey(t,r))).concat(this._normalizeKey(n,r))},p.prototype._normalizeKey=function(e,t){return this._registry.normalizedKeys[t]=this._registry.normalizedKeys[t]||{},this._registry.normalizedKeys[t][e]=this._registry.normalizedKeys[t][e]||function(e){if(o(e)){var n=e.map(function(e){return this._normalizeKey(e,t)}.bind(this));return[].concat.apply([],n)}if(void 0===e||null===e)return[];for(var r=e.split(t),i=r.length-1;i>=0;i--)""===r[i]&&(r.splice(i,1),!0===this._registry.keepTrailingDot&&i==r.length&&(r[r.length-1]+=""+t));return r}.bind(this)(e),this._registry.normalizedKeys[t][e]},p.prototype._interpolate=function(e,t){if("string"!=typeof e)return e;try{return a(e,r({},this._registry.interpolations,t))}catch(n){if(!(this.listenerCount("error")>0))throw n;return this.emit("error",n,e,t),null}},p.prototype._resolve=function(e,t,n,o,i){if(!1===(i=i||{}).resolve)return o;var a;if(f(o))a=this.translate(o,r({},i,{locale:e,scope:t}));else if(function(e){return"function"==typeof e||"[object Function]"===Object.prototype.toString.call(e)}(o)){var s;i.object?(s=i.object,delete i.object):s=n,a=this._resolve(e,t,n,o(s,i))}else a=o;return/^missing translation:/.test(a)?null:a},p.prototype._fallback=function(e,t,n,r,i){if(i=l(i,"fallback"),o(r)){for(var a=0,s=r.length;a<s;a++){var u=this._resolve(e,t,n,r[a],i);if(u)return u}return null}return this._resolve(e,t,n,r,i)};var m=new p;function h(){return m.translate.apply(m,arguments)}r(h,m,{Instance:p,Translator:p}),e.exports=h},function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty,o=Object.prototype.toString,i=function(e){return"function"==typeof Array.isArray?Array.isArray(e):"[object Array]"===o.call(e)},a=function(e){if(!e||"[object Object]"!==o.call(e))return!1;var t,n=r.call(e,"constructor"),i=e.constructor&&e.constructor.prototype&&r.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!n&&!i)return!1;for(t in e);return void 0===t||r.call(e,t)};e.exports=function e(){var t,n,r,o,s,l,u=arguments[0],c=1,f=arguments.length,d=!1;for("boolean"==typeof u&&(d=u,u=arguments[1]||{},c=2),(null==u||"object"!=typeof u&&"function"!=typeof u)&&(u={});c<f;++c)if(null!=(t=arguments[c]))for(n in t)r=u[n],u!==(o=t[n])&&(d&&o&&(a(o)||(s=i(o)))?(s?(s=!1,l=r&&i(r)?r:[]):l=r&&a(r)?r:{},u[n]=e(d,l,o)):void 0!==o&&(u[n]=o));return u}},function(e,t){e.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},function(e,t,n){var r;!function(){"use strict";var o={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[\+\-]/};function i(e){return function(e,t){var n,r,a,s,l,u,c,f,d,p=1,m=e.length,h="";for(r=0;r<m;r++)if("string"==typeof e[r])h+=e[r];else if(Array.isArray(e[r])){if((s=e[r])[2])for(n=t[p],a=0;a<s[2].length;a++){if(!n.hasOwnProperty(s[2][a]))throw new Error(i('[sprintf] property "%s" does not exist',s[2][a]));n=n[s[2][a]]}else n=s[1]?t[s[1]]:t[p++];if(o.not_type.test(s[8])&&o.not_primitive.test(s[8])&&n instanceof Function&&(n=n()),o.numeric_arg.test(s[8])&&"number"!=typeof n&&isNaN(n))throw new TypeError(i("[sprintf] expecting number but found %T",n));switch(o.number.test(s[8])&&(f=n>=0),s[8]){case"b":n=parseInt(n,10).toString(2);break;case"c":n=String.fromCharCode(parseInt(n,10));break;case"d":case"i":n=parseInt(n,10);break;case"j":n=JSON.stringify(n,null,s[6]?parseInt(s[6]):0);break;case"e":n=s[7]?parseFloat(n).toExponential(s[7]):parseFloat(n).toExponential();break;case"f":n=s[7]?parseFloat(n).toFixed(s[7]):parseFloat(n);break;case"g":n=s[7]?String(Number(n.toPrecision(s[7]))):parseFloat(n);break;case"o":n=(parseInt(n,10)>>>0).toString(8);break;case"s":n=String(n),n=s[7]?n.substring(0,s[7]):n;break;case"t":n=String(!!n),n=s[7]?n.substring(0,s[7]):n;break;case"T":n=Object.prototype.toString.call(n).slice(8,-1).toLowerCase(),n=s[7]?n.substring(0,s[7]):n;break;case"u":n=parseInt(n,10)>>>0;break;case"v":n=n.valueOf(),n=s[7]?n.substring(0,s[7]):n;break;case"x":n=(parseInt(n,10)>>>0).toString(16);break;case"X":n=(parseInt(n,10)>>>0).toString(16).toUpperCase()}o.json.test(s[8])?h+=n:(!o.number.test(s[8])||f&&!s[3]?d="":(d=f?"+":"-",n=n.toString().replace(o.sign,"")),u=s[4]?"0"===s[4]?"0":s[4].charAt(1):" ",c=s[6]-(d+n).length,l=s[6]&&c>0?u.repeat(c):"",h+=s[5]?d+n+l:"0"===u?d+l+n:l+d+n)}return h}(function(e){if(s[e])return s[e];var t,n=e,r=[],i=0;for(;n;){if(null!==(t=o.text.exec(n)))r.push(t[0]);else if(null!==(t=o.modulo.exec(n)))r.push("%");else{if(null===(t=o.placeholder.exec(n)))throw new SyntaxError("[sprintf] unexpected placeholder");if(t[2]){i|=1;var a=[],l=t[2],u=[];if(null===(u=o.key.exec(l)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(a.push(u[1]);""!==(l=l.substring(u[0].length));)if(null!==(u=o.key_access.exec(l)))a.push(u[1]);else{if(null===(u=o.index_access.exec(l)))throw new SyntaxError("[sprintf] failed to parse named argument key");a.push(u[1])}t[2]=a}else i|=2;if(3===i)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");r.push(t)}n=n.substring(t[0].length)}return s[e]=r}(e),arguments)}function a(e,t){return i.apply(null,[e].concat(t||[]))}var s=Object.create(null);t.sprintf=i,t.vsprintf=a,"undefined"!=typeof window&&(window.sprintf=i,window.vsprintf=a,void 0===(r=function(){return{sprintf:i,vsprintf:a}}.call(t,n,t,e))||(e.exports=r))}()},function(e,t,n){"use strict";var r=Array.prototype,o=r.concat,i=r.slice,a=n(1141);e.exports=function(e){var t={},n=o.apply(r,i.call(arguments,1));for(var s in e)-1===a(n,s)&&(t[s]=e[s]);return t}},function(e,t){var n=[].indexOf;e.exports=function(e,t){if(n)return e.indexOf(t);for(var r=0;r<e.length;++r)if(e[r]===t)return r;return-1}},function(e,t,n){"use strict";var r=n(1143);function o(e,t,n){"number"==typeof t&&(n=t,t="0"),null===t&&(t="0"),n=n||2;var r=String(e);if(t)for(;r.length<n;)r=t+r;return r}function i(e){var t=e.getHours();return 0===t?t=12:t>12&&(t-=12),t}function a(e,t){t=t||"sunday";var n=e.getDay();"monday"==t&&(0===n?n=6:n--);var r=((e-new Date(e.getFullYear(),0,1))/864e5+7-n)/7;return Math.floor(r)}e.exports=function e(t,n,s){var l=t.getTime();return s=s||r,n.replace(/%([-_0]?.)/g,function(n,r){var u=null;if(2==r.length){switch(r[0]){case"-":u="";break;case"_":u=" ";break;case"0":u="0";break;default:return n}r=r[1]}switch(r){case"A":return s.days[t.getDay()];case"a":return s.abbreviated_days[t.getDay()];case"B":return s.months[t.getMonth()];case"b":return s.abbreviated_months[t.getMonth()];case"C":return o(Math.floor(t.getFullYear()/100),u);case"D":return e(t,"%m/%d/%y");case"d":return o(t.getDate(),u);case"e":return t.getDate();case"F":return e(t,"%Y-%m-%d");case"H":return o(t.getHours(),u);case"h":return s.abbreviated_months[t.getMonth()];case"I":return o(i(t),u);case"j":return o(Math.ceil((t.getTime()-new Date(t.getFullYear(),0,1).getTime())/864e5),3);case"k":return o(t.getHours(),null===u?" ":u);case"L":return o(Math.floor(l%1e3),3);case"l":return o(i(t),null===u?" ":u);case"M":return o(t.getMinutes(),u);case"m":return o(t.getMonth()+1,u);case"n":return"\n";case"o":return String(t.getDate())+function(e){var t=e%10,n=e%100;if(n>=11&&n<=13||0===t||t>=4)return"th";switch(t){case 1:return"st";case 2:return"nd";case 3:return"rd"}}(t.getDate());case"P":return t.getHours()<12?s.am.toLowerCase():s.pm.toLowerCase();case"p":return t.getHours()<12?s.am.toUpperCase():s.pm.toUpperCase();case"R":return e(t,"%H:%M");case"r":return e(t,"%I:%M:%S %p");case"S":return o(t.getSeconds(),u);case"s":return Math.floor(l/1e3);case"T":return e(t,"%H:%M:%S");case"t":return"\t";case"U":return o(a(t,"sunday"),u);case"u":return 0===t.getDay()?7:t.getDay();case"v":return e(t,"%e-%b-%Y");case"W":return o(a(t,"monday"),u);case"w":return t.getDay();case"Y":return t.getFullYear();case"y":var c=String(t.getFullYear());return c.slice(c.length-2);case"Z":var f=t.toString().match(/\((\w+)\)/);return f&&f[1]||"";case"z":var d=t.getTimezoneOffset();return(d>0?"-":"+")+o(Math.round(Math.abs(d/60)),2)+":"+o(d%60,2);default:return r}})}},function(e,t,n){"use strict";e.exports=n(596)},function(e,t,n){"use strict";e.exports={counterpart:{names:n(596),pluralize:n(1145),formats:{date:{default:"%a, %e %b %Y",long:"%A, %B %o, %Y",short:"%b %e"},time:{default:"%H:%M",long:"%H:%M:%S %z",short:"%H:%M"},datetime:{default:"%a, %e %b %Y %H:%M",long:"%A, %B %o, %Y %H:%M:%S %z",short:"%e %b %H:%M"}}}}},function(e,t,n){"use strict";e.exports=function(e,t){var n;return 0===t&&"zero"in e&&(n="zero"),e[n=n||(1===t?"one":"other")]}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SETTINGS=void 0;var r=n(2),o=n(1147),i=function(e){return e&&e.__esModule?e:{default:e}}(n(1151));var a=["device","room-device","room-account","account","config","room"],s=["device","account","config"],l=["device","config"],u=["device"],c=["device","config"];t.SETTINGS={feature_pinning:{isFeature:!0,displayName:(0,r._td)("Message Pinning"),supportedLevels:l,default:!1},feature_lazyloading:{isFeature:!0,displayName:(0,r._td)("Increase performance by only loading room members on first view"),supportedLevels:l,controller:new i.default,default:!0},"MessageComposerInput.dontSuggestEmoji":{supportedLevels:s,displayName:(0,r._td)("Disable Emoji suggestions while typing"),default:!1},useCompactLayout:{supportedLevels:s,displayName:(0,r._td)("Use compact timeline layout"),default:!1},hideRedactions:{supportedLevels:a,displayName:(0,r._td)("Hide removed messages"),default:!1},hideJoinLeaves:{supportedLevels:a,displayName:(0,r._td)("Hide join/leave messages (invites/kicks/bans unaffected)"),default:!1},hideAvatarChanges:{supportedLevels:a,displayName:(0,r._td)("Hide avatar changes"),default:!1},hideDisplaynameChanges:{supportedLevels:a,displayName:(0,r._td)("Hide display name changes"),default:!1},hideReadReceipts:{supportedLevels:["device","room-device","room-account","account","config"],displayName:(0,r._td)("Hide read receipts"),default:!1},showTwelveHourTimestamps:{supportedLevels:s,displayName:(0,r._td)("Show timestamps in 12 hour format (e.g. 2:30pm)"),default:!1},alwaysShowTimestamps:{supportedLevels:s,displayName:(0,r._td)("Always show message timestamps"),default:!1},autoplayGifsAndVideos:{supportedLevels:s,displayName:(0,r._td)("Autoplay GIFs and videos"),default:!1},alwaysShowEncryptionIcons:{supportedLevels:s,displayName:(0,r._td)("Always show encryption icons"),default:!0},enableSyntaxHighlightLanguageDetection:{supportedLevels:s,displayName:(0,r._td)("Enable automatic language detection for syntax highlighting"),default:!1},"Pill.shouldHidePillAvatar":{supportedLevels:s,displayName:(0,r._td)("Hide avatars in user and room mentions"),default:!1},"TextualBody.disableBigEmoji":{supportedLevels:s,displayName:(0,r._td)("Disable big emoji in chat"),default:!1},"MessageComposerInput.isRichTextEnabled":{supportedLevels:s,default:!1},"MessageComposer.showFormatting":{supportedLevels:s,default:!1},dontSendTypingNotifications:{supportedLevels:s,displayName:(0,r._td)("Don't send typing notifications"),default:!1},"MessageComposerInput.autoReplaceEmoji":{supportedLevels:s,displayName:(0,r._td)("Automatically replace plain text Emoji"),default:!1},"VideoView.flipVideoHorizontally":{supportedLevels:s,displayName:(0,r._td)("Mirror local video feed"),default:!1},"TagPanel.disableTagPanel":{supportedLevels:s,displayName:(0,r._td)("Disable Community Filter Panel"),default:!1},theme:{supportedLevels:s,default:"light"},webRtcForceTURN:{supportedLevels:c,displayName:(0,r._td)("Disable Peer-to-Peer for 1:1 calls"),default:!1},webrtc_audiooutput:{supportedLevels:u,default:null},webrtc_audioinput:{supportedLevels:u,default:null},webrtc_videoinput:{supportedLevels:u,default:null},language:{supportedLevels:c,default:"en"},analyticsOptIn:{supportedLevels:c,displayName:(0,r._td)("Send analytics data"),default:!1},showCookieBar:{supportedLevels:c,default:!0},autocompleteDelay:{supportedLevels:c,default:200},blacklistUnverifiedDevices:{supportedLevels:["room-device","device"],supportedLevelsAreOrdered:!0,displayName:{default:(0,r._td)("Never send encrypted messages to unverified devices from this device"),"room-device":(0,r._td)("Never send encrypted messages to unverified devices in this room from this device")},default:!1},urlPreviewsEnabled:{supportedLevels:a,displayName:{default:(0,r._td)("Enable inline URL previews by default"),"room-account":(0,r._td)("Enable URL previews for this room (only affects you)"),room:(0,r._td)("Enable URL previews by default for participants in this room")},default:!0},urlPreviewsEnabled_e2ee:{supportedLevels:["room-device","room-account"],displayName:{"room-account":(0,r._td)("Enable URL previews for this room (only affects you)")},default:!1},roomColor:{supportedLevels:a,displayName:(0,r._td)("Room Colour"),default:{primary_color:null,secondary_color:null}},notificationsEnabled:{supportedLevels:u,default:!1,controller:new o.NotificationsEnabledController},notificationBodyEnabled:{supportedLevels:u,default:!0,controller:new o.NotificationBodyEnabledController},audioNotificationsEnabled:{supportedLevels:u,default:!0,controller:new o.AudioNotificationsEnabledController},enableWidgetScreenshots:{supportedLevels:s,displayName:(0,r._td)("Enable widget screenshots on supported widgets"),default:!1},"PinnedEvents.isOpen":{supportedLevels:["room-device"],default:!1},"RoomSubList.showEmpty":{supportedLevels:s,displayName:(0,r._td)("Show empty room list headings"),default:!0}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AudioNotificationsEnabledController=t.NotificationBodyEnabledController=t.NotificationsEnabledController=void 0;var r=f(n(11)),o=f(n(4)),i=f(n(5)),a=f(n(12)),s=f(n(13)),l=f(n(597)),u=f(n(8)),c=f(n(287));function f(e){return e&&e.__esModule?e:{default:e}}function d(){var e=new c.default(u.default.get()).getPushRuleById(".m.rule.master");return e?!e.enabled:(console.warn("No master push rule! Notifications are disabled for this user."),!1)}t.NotificationsEnabledController=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,i.default)(t,[{key:"getValueOverride",value:function(e,t,r,o){return!!n(140).isPossible()&&(null===r||"default"===o?d():r)}},{key:"onChange",value:function(e,t,r){var o=n(140);o.supportsDesktopNotifications()&&o.setEnabled(r)}}]),t}(l.default),t.NotificationBodyEnabledController=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,i.default)(t,[{key:"getValueOverride",value:function(e,t,r){return!!n(140).isPossible()&&(null===r?d():r)}}]),t}(l.default),t.AudioNotificationsEnabledController=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,i.default)(t,[{key:"getValueOverride",value:function(e,t,r){return!!n(140).isPossible()&&r}}]),t}(l.default)},function(e,t,n){"use strict";var r=n(533);function o(){}e.exports=function(){function e(e,t,n,o,i,a){if(a!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t};return n.checkPropTypes=o,n.PropTypes=n,n}},function(e,t,n){e.exports.Dispatcher=n(1150)},function(e,t,n){"use strict";t.__esModule=!0;var r=n(141),o=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._callbacks={},this._isDispatching=!1,this._isHandled={},this._isPending={},this._lastID=1}return e.prototype.register=function(e){var t="ID_"+this._lastID++;return this._callbacks[t]=e,t},e.prototype.unregister=function(e){this._callbacks[e]||r(!1),delete this._callbacks[e]},e.prototype.waitFor=function(e){this._isDispatching||r(!1);for(var t=0;t<e.length;t++){var n=e[t];this._isPending[n]?this._isHandled[n]||r(!1):(this._callbacks[n]||r(!1),this._invokeCallback(n))}},e.prototype.dispatch=function(e){this._isDispatching&&r(!1),this._startDispatching(e);try{for(var t in this._callbacks)this._isPending[t]||this._invokeCallback(t)}finally{this._stopDispatching()}},e.prototype.isDispatching=function(){return this._isDispatching},e.prototype._invokeCallback=function(e){this._isPending[e]=!0,this._callbacks[e](this._pendingPayload),this._isHandled[e]=!0},e.prototype._startDispatching=function(e){for(var t in this._callbacks)this._isPending[t]=!1,this._isHandled[t]=!1;this._pendingPayload=e,this._isDispatching=!0},e.prototype._stopDispatching=function(){delete this._pendingPayload,this._isDispatching=!1},e}();e.exports=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=p(n(19)),o=n(9),i=p(n(11)),a=p(n(4)),s=p(n(5)),l=p(n(12)),u=p(n(13)),c=p(n(597)),f=p(n(8)),d=p(n(71));function p(e){return e&&e.__esModule?e:{default:e}}var m=function(e){function t(){return(0,a.default)(this,t),(0,l.default)(this,(t.__proto__||(0,i.default)(t)).apply(this,arguments))}return(0,u.default)(t,e),(0,s.default)(t,[{key:"onChange",value:function(){var e=(0,o.coroutine)(r.default.mark(function e(t,n,i){return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(d.default.get()){e.next=2;break}return e.abrupt("return");case 2:return f.default.get().stopClient(),e.next=5,(0,o.resolve)(f.default.get().store.deleteAllData());case 5:d.default.get().reload();case 6:case"end":return e.stop()}},e,this)}));return function(t,n,r){return e.apply(this,arguments)}}()}]),t}(c.default);t.default=m,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=u(n(11)),o=u(n(4)),i=u(n(5)),a=u(n(12)),s=u(n(13)),l=u(n(9));function u(e){return e&&e.__esModule?e:{default:e}}var c=function(e){function t(e){(0,o.default)(this,t);var n=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this));return n._handler=e,n._cache={},n}return(0,s.default)(t,e),(0,i.default)(t,[{key:"getValue",value:function(e,t){var n=t||"UNDEFINED",r=this._cache[e];return r&&r.hasOwnProperty(n)?r[t]:this._handler.getValue(e,t)}},{key:"setValue",value:function(e,t,n){this._cache[e]||(this._cache[e]={});var r=this._cache[e],o=t||"UNDEFINED";r[o]=n;var i=this._handler.setValue(e,t,n);return l.default.resolve(i).finally(function(){delete r[o]})}},{key:"canSetValue",value:function(e,t){return this._handler.canSetValue(e,t)}},{key:"isSupported",value:function(){return this._handler.isSupported()}}]),t}(u(n(139)).default);t.default=c,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(n(10));function o(e,t,n){return{action:"MatrixActions.sync",state:t,prevState:n,matrixClient:e}}function i(e,t){return{action:"MatrixActions.accountData",event:t,event_type:t.getType(),event_content:t.getContent()}}function a(e,t){return{action:"MatrixActions.Room",room:t}}function s(e,t,n){return{action:"MatrixActions.Room.tags",room:n}}function l(e,t,n,r,o,i){return{action:"MatrixActions.Room.timeline",event:t,isLiveEvent:i.liveEvent,isLiveUnfilteredRoomTimelineEvent:n&&i.timeline.getTimelineSet()===n.getUnfilteredTimelineSet()}}function u(e,t,n,r){return{action:"MatrixActions.Room.myMembership",room:t,membership:n,oldMembership:r}}function c(e,t){return{action:"MatrixActions.Event.decrypted",event:t}}t.default={_matrixClientListenersStop:[],start:function(e){this._addMatrixClientListener(e,"sync",o),this._addMatrixClientListener(e,"accountData",i),this._addMatrixClientListener(e,"Room",a),this._addMatrixClientListener(e,"Room.tags",s),this._addMatrixClientListener(e,"Room.timeline",l),this._addMatrixClientListener(e,"Room.myMembership",u),this._addMatrixClientListener(e,"Event.decrypted",c)},_addMatrixClientListener:function(e,t,n){var o=function(){for(var t=arguments.length,o=Array(t),i=0;i<t;i++)o[i]=arguments[i];var a=n.apply(void 0,[e].concat(o));a&&r.default.dispatch(a,!0)};e.on(t,o),this._matrixClientListenersStop.push(function(){e.removeListener(t,o)})},stop:function(){this._matrixClientListenersStop.forEach(function(e){return e()})}},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(586));t.phasedRollOutExpiredForUser=function(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:o.default.get().phasedRollOut;if(!i)return console.log("no phased rollout configuration, so enabling "+t),!0;var a=i[t];if(!a)return console.log(t+" doesn't have phased rollout configured, so enabling"),!0;if(!(0,r.default)(a.offset)||!(0,r.default)(a.period))return console.error("phased rollout of "+t+" is misconfigured, offset and/or period are not numbers, so disabling",a),!1;var s=function(e){var t=0,n=void 0,r=void 0;if(0===e.length)return t;for(n=0;n<e.length;n++)r=e.charCodeAt(n),t=(t<<5)-t+r,t|=0;return Math.abs(t)}(e),l=a.period/6e4,u=s%l,c=6e4*u,f=a.offset+c,d=n>=f,p="(bucket "+u+"/"+l+")";d?console.log(t+" enabled for "+e+" "+p):console.log(t+" will be enabled for "+e+" in "+Math.ceil((f-n)/1e3)+"s "+p);return d};var o=i(n(39));function i(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parseQsFromFragment=function(e){var t=e.hash.substring(1).split("?"),n={location:decodeURIComponent(t[0]),params:{}};t.length>1&&(n.params=r.default.parse(t[1]));return n},t.parseQs=function(e){return r.default.parse(e.search.substring(1))};var r=function(e){return e&&e.__esModule?e:{default:e}}(n(401))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=null;r=window&&window.process&&window.process&&"renderer"===window.process.type?n(1157):n(1160),t.default=r,e.exports=t.default},function(e,t,n){"use strict";(function(r){Object.defineProperty(t,"__esModule",{value:!0});var o=g(n(11)),i=g(n(4)),a=g(n(5)),s=g(n(12)),l=g(n(233)),u=g(n(13)),c=n(599),f=g(c),d=g(n(10)),p=n(2),m=g(n(9)),h=n(293),_=g(n(325));function g(e){return e&&e.__esModule?e:{default:e}}function v(e){["call_state"].includes(e.action)&&h.ipcRenderer.send("app_onAction",e)}h.remote.autoUpdater.on("update-downloaded",function(e,t,n,r,o){d.default.dispatch({action:"new_version",currentVersion:h.remote.app.getVersion(),newVersion:n,releaseNotes:t})}),h.ipcRenderer.on("before-quit",function(){console.log("riot-desktop closing"),_.default.flush()});var y=function(e){function t(){(0,i.default)(this,t);var e=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this));return d.default.register(v),e.updatable=Boolean(h.remote.autoUpdater.getFeedURL()),h.ipcRenderer.on("check_updates",function(t,n){e.showUpdateCheck&&(d.default.dispatch({action:"check_updates",value:function(e){return!0===e?{status:c.updateCheckStatusEnum.DOWNLOADING}:!1===e?{status:c.updateCheckStatusEnum.NOTAVAILABLE}:{status:c.updateCheckStatusEnum.ERROR,detail:e}}(n)}),e.showUpdateCheck=!1)}),e.startUpdateCheck=e.startUpdateCheck.bind(e),e.stopUpdateCheck=e.stopUpdateCheck.bind(e),e}return(0,u.default)(t,e),(0,a.default)(t,[{key:"getHumanReadableName",value:function(){return"Electron Platform"}},{key:"setNotificationCount",value:function(e){this.notificationCount!==e&&((0,l.default)(t.prototype.__proto__||(0,o.default)(t.prototype),"setNotificationCount",this).call(this,e),h.ipcRenderer.send("setBadgeCount",e))}},{key:"supportsNotifications",value:function(){return!0}},{key:"maySendNotifications",value:function(){return!0}},{key:"displayNotification",value:function(e,t,n,o){"linux"===window.process.platform&&(t=t.replace(/</g,"<").replace(/>/g,">"));var i=new r.Notification(e,{body:t,icon:n,silent:!0});return i.onclick=function(){d.default.dispatch({action:"view_room",room_id:o.roomId}),r.focus();var e=h.remote.getCurrentWindow();e.isMinimized()?e.restore():e.isVisible()?e.focus():e.show()},i}},{key:"loudNotification",value:function(e,t){h.ipcRenderer.send("loudNotification")}},{key:"clearNotification",value:function(e){e.close()}},{key:"getAppVersion",value:function(){return m.default.resolve(h.remote.app.getVersion())}},{key:"startUpdateCheck",value:function(){this.showUpdateCheck||((0,l.default)(t.prototype.__proto__||(0,o.default)(t.prototype),"startUpdateCheck",this).call(this),h.ipcRenderer.send("check_updates"))}},{key:"installUpdate",value:function(){h.ipcRenderer.send("install_update")}},{key:"getDefaultDeviceDisplayName",value:function(){return(0,p._t)("Riot Desktop on %(platformName)s",{platformName:function(){switch(console.log(window.process),window.process.platform){case"darwin":return"macOS";case"freebsd":return"FreeBSD";case"openbsd":return"OpenBSD";case"sunos":return"SunOS";case"win32":return"Windows";default:return window.process.platform[0].toUpperCase()+window.process.platform.slice(1)}}()})}},{key:"screenCaptureErrorString",value:function(){return null}},{key:"isElectron",value:function(){return!0}},{key:"requestNotificationPermission",value:function(){return m.default.resolve("granted")}},{key:"reload",value:function(){h.remote.getCurrentWebContents().reload()}},{key:"setupScreenSharingForIframe",value:function(e){e.contentWindow.JitsiMeetElectron={obtainDesktopStreams:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};h.desktopCapturer.getSources(n,function(n,r){n?t(n):e(r)})}}}}]),t}(f.default);t.default=y,e.exports=t.default}).call(this,n(15))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(n(4)),o=a(n(5)),i=a(n(10));function a(e){return e&&e.__esModule?e:{default:e}}var s=function(){function e(){(0,r.default)(this,e),this.notificationCount=0,this.errorDidOccur=!1,i.default.register(this._onAction.bind(this))}return(0,o.default)(e,[{key:"_onAction",value:function(e){switch(e.action){case"on_logged_out":this.setNotificationCount(0)}}},{key:"getHumanReadableName",value:function(){return"Base Platform"}},{key:"setNotificationCount",value:function(e){this.notificationCount=e}},{key:"setErrorStatus",value:function(e){this.errorDidOccur=e}},{key:"supportsNotifications",value:function(){return!1}},{key:"maySendNotifications",value:function(){return!1}},{key:"requestNotificationPermission",value:function(){}},{key:"displayNotification",value:function(e,t,n,r){}},{key:"loudNotification",value:function(e,t){}},{key:"getAppVersion",value:function(){throw new Error("getAppVersion not implemented!")}},{key:"screenCaptureErrorString",value:function(){return"Not implemented"}},{key:"isElectron",value:function(){return!1}},{key:"setupScreenSharingForIframe",value:function(){}},{key:"reload",value:function(){throw new Error("reload not implemented!")}}]),e}();t.default=s,e.exports=t.default},function(e,t,n){var r; -/** - * @license MIT - * @fileOverview Favico animations - * @author Miroslav Magda, http://blog.ejci.net - * @version 0.3.10 - */ -/** - * @license MIT - * @fileOverview Favico animations - * @author Miroslav Magda, http://blog.ejci.net - * @version 0.3.10 - */ -!function(){var n=function(e){"use strict";e=e||{};var t,n,r,o,i,a,s,l,u,c,f,d,p,m,h,_,g={bgColor:"#d00",textColor:"#fff",fontFamily:"sans-serif",fontStyle:"bold",type:"circle",position:"down",animation:"slide",elementId:!1,dataUrl:!1,win:window};(p={}).ff="undefined"!=typeof InstallTrigger,p.chrome=!!window.chrome,p.opera=!!window.opera||navigator.userAgent.indexOf("Opera")>=0,p.ie=/*@cc_on!@*/!1,p.safari=Object.prototype.toString.call(window.HTMLElement).indexOf("Constructor")>0,p.supported=p.chrome||p.ff||p.opera;var v=[];f=function(){},l=d=!1;var y={ready:function(){l=!0,y.reset(),f()},reset:function(){l&&(v=[],u=!1,c=!1,a.clearRect(0,0,o,r),a.drawImage(s,0,0,o,r),S.setIcon(i),window.clearTimeout(m),window.clearTimeout(h))}};y.start=function(){if(l&&!c){if(v.length>0){c=!0;var e=function(){["type","animation","bgColor","textColor","fontFamily","fontStyle"].forEach(function(e){e in v[0].options&&(t[e]=v[0].options[e])}),T.run(v[0].options,function(){u=v[0],c=!1,v.length>0&&(v.shift(),y.start())},!1)};u?T.run(u.options,function(){e()},!0):e()}}};var b={},E=function(e){return e.n="number"==typeof e.n?Math.abs(0|e.n):e.n,e.x=o*e.x,e.y=r*e.y,e.w=o*e.w,e.h=r*e.h,e.len=(""+e.n).length,e};b.circle=function(e){var n=!1;2===(e=E(e)).len?(e.x=e.x-.4*e.w,e.w=1.4*e.w,n=!0):e.len>=3&&(e.x=e.x-.65*e.w,e.w=1.65*e.w,n=!0),a.clearRect(0,0,o,r),a.drawImage(s,0,0,o,r),a.beginPath(),a.font=t.fontStyle+" "+Math.floor(e.h*(e.n>99?.85:1))+"px "+t.fontFamily,a.textAlign="center",n?(a.moveTo(e.x+e.w/2,e.y),a.lineTo(e.x+e.w-e.h/2,e.y),a.quadraticCurveTo(e.x+e.w,e.y,e.x+e.w,e.y+e.h/2),a.lineTo(e.x+e.w,e.y+e.h-e.h/2),a.quadraticCurveTo(e.x+e.w,e.y+e.h,e.x+e.w-e.h/2,e.y+e.h),a.lineTo(e.x+e.h/2,e.y+e.h),a.quadraticCurveTo(e.x,e.y+e.h,e.x,e.y+e.h-e.h/2),a.lineTo(e.x,e.y+e.h/2),a.quadraticCurveTo(e.x,e.y,e.x+e.h/2,e.y)):a.arc(e.x+e.w/2,e.y+e.h/2,e.h/2,0,2*Math.PI),a.fillStyle="rgba("+t.bgColor.r+","+t.bgColor.g+","+t.bgColor.b+","+e.o+")",a.fill(),a.closePath(),a.beginPath(),a.stroke(),a.fillStyle="rgba("+t.textColor.r+","+t.textColor.g+","+t.textColor.b+","+e.o+")","number"==typeof e.n&&e.n>999?a.fillText((e.n>9999?9:Math.floor(e.n/1e3))+"k+",Math.floor(e.x+e.w/2),Math.floor(e.y+e.h-.2*e.h)):a.fillText(e.n,Math.floor(e.x+e.w/2),Math.floor(e.y+e.h-.15*e.h)),a.closePath()},b.rectangle=function(e){2===(e=E(e)).len?(e.x=e.x-.4*e.w,e.w=1.4*e.w):e.len>=3&&(e.x=e.x-.65*e.w,e.w=1.65*e.w),a.clearRect(0,0,o,r),a.drawImage(s,0,0,o,r),a.beginPath(),a.font=t.fontStyle+" "+Math.floor(e.h*(e.n>99?.9:1))+"px "+t.fontFamily,a.textAlign="center",a.fillStyle="rgba("+t.bgColor.r+","+t.bgColor.g+","+t.bgColor.b+","+e.o+")",a.fillRect(e.x,e.y,e.w,e.h),a.fillStyle="rgba("+t.textColor.r+","+t.textColor.g+","+t.textColor.b+","+e.o+")","number"==typeof e.n&&e.n>999?a.fillText((e.n>9999?9:Math.floor(e.n/1e3))+"k+",Math.floor(e.x+e.w/2),Math.floor(e.y+e.h-.2*e.h)):a.fillText(e.n,Math.floor(e.x+e.w/2),Math.floor(e.y+e.h-.15*e.h)),a.closePath()};function C(e){if(e.paused||e.ended||d)return!1;try{a.clearRect(0,0,o,r),a.drawImage(e,0,0,o,r)}catch(e){}h=setTimeout(function(){C(e)},T.duration),S.setIcon(i)}var S={};function D(e){e=e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(e,t,n,r){return t+t+n+n+r+r});var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return!!t&&{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}}function w(e,t){var n,r={};for(n in e)r[n]=e[n];for(n in t)r[n]=t[n];return r}S.getIcon=function(){var e=!1;return t.element?e=t.element:t.elementId?(e=_.getElementById(t.elementId)).setAttribute("href",e.getAttribute("src")):!1===(e=function(){for(var e=_.getElementsByTagName("head")[0].getElementsByTagName("link"),t=e.length-1;t>=0;t--)if(/(^|\s)icon(\s|$)/i.test(e[t].getAttribute("rel")))return e[t];return!1}())&&((e=_.createElement("link")).setAttribute("rel","icon"),_.getElementsByTagName("head")[0].appendChild(e)),e.setAttribute("type","image/png"),e},S.setIcon=function(e){var r=e.toDataURL("image/png");if(t.dataUrl&&t.dataUrl(r),t.element)t.element.setAttribute("href",r),t.element.setAttribute("src",r);else if(t.elementId){var o=_.getElementById(t.elementId);o.setAttribute("href",r),o.setAttribute("src",r)}else if(p.ff||p.opera){var i=n;n=_.createElement("link"),p.opera&&n.setAttribute("rel","icon"),n.setAttribute("rel","icon"),n.setAttribute("type","image/png"),_.getElementsByTagName("head")[0].appendChild(n),n.setAttribute("href",r),i.parentNode&&i.parentNode.removeChild(i)}else n.setAttribute("href",r)};var T={duration:40,types:{}};return T.types.fade=[{x:.4,y:.4,w:.6,h:.6,o:0},{x:.4,y:.4,w:.6,h:.6,o:.1},{x:.4,y:.4,w:.6,h:.6,o:.2},{x:.4,y:.4,w:.6,h:.6,o:.3},{x:.4,y:.4,w:.6,h:.6,o:.4},{x:.4,y:.4,w:.6,h:.6,o:.5},{x:.4,y:.4,w:.6,h:.6,o:.6},{x:.4,y:.4,w:.6,h:.6,o:.7},{x:.4,y:.4,w:.6,h:.6,o:.8},{x:.4,y:.4,w:.6,h:.6,o:.9},{x:.4,y:.4,w:.6,h:.6,o:1}],T.types.none=[{x:.4,y:.4,w:.6,h:.6,o:1}],T.types.pop=[{x:1,y:1,w:0,h:0,o:1},{x:.9,y:.9,w:.1,h:.1,o:1},{x:.8,y:.8,w:.2,h:.2,o:1},{x:.7,y:.7,w:.3,h:.3,o:1},{x:.6,y:.6,w:.4,h:.4,o:1},{x:.5,y:.5,w:.5,h:.5,o:1},{x:.4,y:.4,w:.6,h:.6,o:1}],T.types.popFade=[{x:.75,y:.75,w:0,h:0,o:0},{x:.65,y:.65,w:.1,h:.1,o:.2},{x:.6,y:.6,w:.2,h:.2,o:.4},{x:.55,y:.55,w:.3,h:.3,o:.6},{x:.5,y:.5,w:.4,h:.4,o:.8},{x:.45,y:.45,w:.5,h:.5,o:.9},{x:.4,y:.4,w:.6,h:.6,o:1}],T.types.slide=[{x:.4,y:1,w:.6,h:.6,o:1},{x:.4,y:.9,w:.6,h:.6,o:1},{x:.4,y:.9,w:.6,h:.6,o:1},{x:.4,y:.8,w:.6,h:.6,o:1},{x:.4,y:.7,w:.6,h:.6,o:1},{x:.4,y:.6,w:.6,h:.6,o:1},{x:.4,y:.5,w:.6,h:.6,o:1},{x:.4,y:.4,w:.6,h:.6,o:1}],T.run=function(e,n,r,o){var a=T.types[_.hidden||_.msHidden||_.webkitHidden||_.mozHidden?"none":t.animation];o=!0===r?void 0!==o?o:a.length-1:void 0!==o?o:0,n=n||function(){},o<a.length&&o>=0?(b[t.type](w(e,a[o])),m=setTimeout(function(){r?o-=1:o+=1,T.run(e,n,r,o)},T.duration),S.setIcon(i)):n()},function(){(t=w(g,e)).bgColor=D(t.bgColor),t.textColor=D(t.textColor),t.position=t.position.toLowerCase(),t.animation=T.types[""+t.animation]?t.animation:g.animation,_=t.win.document;var l=t.position.indexOf("up")>-1,u=t.position.indexOf("left")>-1;if(l||u)for(var c=0;c<T.types[""+t.animation].length;c++){var f=T.types[""+t.animation][c];l&&(f.y<.6?f.y=f.y-.4:f.y=f.y-2*f.y+(1-f.w)),u&&(f.x<.6?f.x=f.x-.4:f.x=f.x-2*f.x+(1-f.h)),T.types[""+t.animation][c]=f}t.type=b[""+t.type]?t.type:g.type,n=S.getIcon(),i=document.createElement("canvas"),s=document.createElement("img"),n.hasAttribute("href")?(s.setAttribute("crossOrigin","anonymous"),s.onload=function(){r=s.height>0?s.height:32,o=s.width>0?s.width:32,i.height=r,i.width=o,a=i.getContext("2d"),y.ready()},s.setAttribute("src",n.getAttribute("href"))):(s.onload=function(){r=32,o=32,s.height=r,s.width=o,i.height=r,i.width=o,a=i.getContext("2d"),y.ready()},s.setAttribute("src",""))}(),{badge:function(e,t){t=("string"==typeof t?{animation:t}:t)||{},f=function(){try{if("number"==typeof e?e>0:""!==e){var n={type:"badge",options:{n:e}};if("animation"in t&&T.types[""+t.animation]&&(n.options.animation=""+t.animation),"type"in t&&b[""+t.type]&&(n.options.type=""+t.type),["bgColor","textColor"].forEach(function(e){e in t&&(n.options[e]=D(t[e]))}),["fontStyle","fontFamily"].forEach(function(e){e in t&&(n.options[e]=t[e])}),v.push(n),v.length>100)throw new Error("Too many badges requests in queue.");y.start()}else y.reset()}catch(e){throw new Error("Error setting badge. Message: "+e.message)}},l&&f()},video:function(e){f=function(){try{if("stop"===e)return d=!0,y.reset(),void(d=!1);e.addEventListener("play",function(){C(this)},!1)}catch(e){throw new Error("Error setting video. Message: "+e.message)}},l&&f()},image:function(e){f=function(){try{var t=e.width,n=e.height,s=document.createElement("img"),l=t/o<n/r?t/o:n/r;s.setAttribute("crossOrigin","anonymous"),s.onload=function(){a.clearRect(0,0,o,r),a.drawImage(s,0,0,o,r),S.setIcon(i)},s.setAttribute("src",e.getAttribute("src")),s.height=n/l,s.width=t/l}catch(e){throw new Error("Error setting image. Message: "+e.message)}},l&&f()},webcam:function(e){if(window.URL&&window.URL.createObjectURL||(window.URL=window.URL||{},window.URL.createObjectURL=function(e){return e}),p.supported){var t=!1;navigator.getUserMedia=navigator.getUserMedia||navigator.oGetUserMedia||navigator.msGetUserMedia||navigator.mozGetUserMedia||navigator.webkitGetUserMedia,f=function(){try{if("stop"===e)return d=!0,y.reset(),void(d=!1);(t=document.createElement("video")).width=o,t.height=r,navigator.getUserMedia({video:!0,audio:!1},function(e){t.src=URL.createObjectURL(e),t.play(),C(t)},function(){})}catch(e){throw new Error("Error setting webcam. Message: "+e.message)}},l&&f()}},reset:y.reset,browser:{supported:p.supported}}};void 0===(r=function(){return n}.apply(t,[]))||(e.exports=r)}()},function(e,t,n){"use strict";(function(r){Object.defineProperty(t,"__esModule",{value:!0});var o=v(n(11)),i=v(n(4)),a=v(n(5)),s=v(n(12)),l=v(n(233)),u=v(n(13)),c=n(599),f=v(c),d=v(n(99)),p=v(n(10)),m=n(2),h=v(n(9)),_=v(n(89)),g=v(n(1161));function v(e){return e&&e.__esModule?e:{default:e}}var y=function(e){function t(){(0,i.default)(this,t);var e=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this));return e.runningVersion=null,e.startUpdateCheck=e.startUpdateCheck.bind(e),e.stopUpdateCheck=e.stopUpdateCheck.bind(e),e}return(0,u.default)(t,e),(0,a.default)(t,[{key:"getHumanReadableName",value:function(){return"Web Platform"}},{key:"supportsNotifications",value:function(){return Boolean(r.Notification)}},{key:"maySendNotifications",value:function(){return"granted"===r.Notification.permission}},{key:"requestNotificationPermission",value:function(){return new h.default(function(e,t){r.Notification.requestPermission(function(t){e(t)})})}},{key:"displayNotification",value:function(e,t,n,o){var i=new r.Notification(e,{body:t,icon:n,tag:"vector",silent:!0});i.onclick=function(){p.default.dispatch({action:"view_room",room_id:o.roomId}),r.focus(),i.close()},r.setTimeout(function(){i.close()},5e3)}},{key:"_getVersion",value:function(){return new h.default(function(e,t){(0,d.default)({method:"GET",url:"version",qs:{cachebuster:Date.now()}},function(n,r,o){if(n||r.status<200||r.status>=300)return null===n&&(n={status:r.status}),void t(n);var i=o.trim();e(i)})})}},{key:"getAppVersion",value:function(){return null!==this.runningVersion?h.default.resolve(this.runningVersion):this._getVersion()}},{key:"startUpdater",value:function(){this.pollForUpdate(),setInterval(this.pollForUpdate.bind(this),6e5)}},{key:"pollForUpdate",value:function(){var e=this;return this._getVersion().then(function(t){if(null===e.runningVersion)e.runningVersion=t;else if(e.runningVersion!==t)return void p.default.dispatch({action:"new_version",currentVersion:e.runningVersion,newVersion:t});return{status:c.updateCheckStatusEnum.NOTAVAILABLE}},function(e){return console.error("Failed to poll for update",e),{status:c.updateCheckStatusEnum.ERROR,detail:e.message||e.status?e.status.toString():"Unknown Error"}})}},{key:"startUpdateCheck",value:function(){var e=this;this.showUpdateCheck||((0,l.default)(t.prototype.__proto__||(0,o.default)(t.prototype),"startUpdateCheck",this).call(this),this.pollForUpdate().then(function(t){e.showUpdateCheck&&t&&p.default.dispatch({action:"check_updates",value:t})}))}},{key:"installUpdate",value:function(){window.location.reload(!0)}},{key:"getDefaultDeviceDisplayName",value:function(){var e=_.default.parse(window.location.href);e.search="",e.hash="";var t=e.format(),n=new g.default,r=n.getBrowser().name||"unknown browser",o=n.getOS().name||"unknown os";return(0,m._t)("%(appName)s via %(browserName)s on %(osName)s",{appName:t,browserName:r,osName:o})}},{key:"screenCaptureErrorString",value:function(){return r.window&&"https:"===r.window.location.protocol?null:(0,m._t)("You need to be using HTTPS to place a screen-sharing call.")}},{key:"reload",value:function(){window.location.reload(!1)}}]),t}(f.default);t.default=y,e.exports=t.default}).call(this,n(15))},function(e,t,n){var r; -/*! - * UAParser.js v0.7.18 - * Lightweight JavaScript-based User-Agent string parser - * https://github.com/faisalman/ua-parser-js - * - * Copyright © 2012-2016 Faisal Salman <fyzlman@gmail.com> - * Dual licensed under GPLv2 or MIT - */ -/*! - * UAParser.js v0.7.18 - * Lightweight JavaScript-based User-Agent string parser - * https://github.com/faisalman/ua-parser-js - * - * Copyright © 2012-2016 Faisal Salman <fyzlman@gmail.com> - * Dual licensed under GPLv2 or MIT - */ -!function(o,i){"use strict";var a="model",s="name",l="type",u="vendor",c="version",f="mobile",d="tablet",p={extend:function(e,t){var n={};for(var r in e)t[r]&&t[r].length%2==0?n[r]=t[r].concat(e[r]):n[r]=e[r];return n},has:function(e,t){return"string"==typeof e&&-1!==t.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()},major:function(e){return"string"==typeof e?e.replace(/[^\d\.]/g,"").split(".")[0]:void 0},trim:function(e){return e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}},m={rgx:function(e,t){for(var n,r,o,i,a,s,l=0;l<t.length&&!a;){var u=t[l],c=t[l+1];for(n=r=0;n<u.length&&!a;)if(a=u[n++].exec(e))for(o=0;o<c.length;o++)s=a[++r],"object"==typeof(i=c[o])&&i.length>0?2==i.length?"function"==typeof i[1]?this[i[0]]=i[1].call(this,s):this[i[0]]=i[1]:3==i.length?"function"!=typeof i[1]||i[1].exec&&i[1].test?this[i[0]]=s?s.replace(i[1],i[2]):void 0:this[i[0]]=s?i[1].call(this,s,i[2]):void 0:4==i.length&&(this[i[0]]=s?i[3].call(this,s.replace(i[1],i[2])):void 0):this[i]=s||void 0;l+=2}},str:function(e,t){for(var n in t)if("object"==typeof t[n]&&t[n].length>0){for(var r=0;r<t[n].length;r++)if(p.has(t[n][r],e))return"?"===n?void 0:n}else if(p.has(t[n],e))return"?"===n?void 0:n;return e}},h={browser:{oldsafari:{version:{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}}},device:{amazon:{model:{"Fire Phone":["SD","KF"]}},sprint:{model:{"Evo Shift 4G":"7373KT"},vendor:{HTC:"APA",Sprint:"Sprint"}}},os:{windows:{version:{ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2000:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"}}}},_={browser:[[/(opera\smini)\/([\w\.-]+)/i,/(opera\s[mobiletab]+).+version\/([\w\.-]+)/i,/(opera).+version\/([\w\.]+)/i,/(opera)[\/\s]+([\w\.]+)/i],[s,c],[/(opios)[\/\s]+([\w\.]+)/i],[[s,"Opera Mini"],c],[/\s(opr)\/([\w\.]+)/i],[[s,"Opera"],c],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]*)/i,/(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i,/(?:ms|\()(ie)\s([\w\.]+)/i,/(rekonq)\/([\w\.]*)/i,/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark)\/([\w\.-]+)/i],[s,c],[/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i],[[s,"IE"],c],[/(edge|edgios|edgea)\/((\d+)?[\w\.]+)/i],[[s,"Edge"],c],[/(yabrowser)\/([\w\.]+)/i],[[s,"Yandex"],c],[/(puffin)\/([\w\.]+)/i],[[s,"Puffin"],c],[/((?:[\s\/])uc?\s?browser|(?:juc.+)ucweb)[\/\s]?([\w\.]+)/i],[[s,"UCBrowser"],c],[/(comodo_dragon)\/([\w\.]+)/i],[[s,/_/g," "],c],[/(micromessenger)\/([\w\.]+)/i],[[s,"WeChat"],c],[/(qqbrowserlite)\/([\w\.]+)/i],[s,c],[/(QQ)\/([\d\.]+)/i],[s,c],[/m?(qqbrowser)[\/\s]?([\w\.]+)/i],[s,c],[/(BIDUBrowser)[\/\s]?([\w\.]+)/i],[s,c],[/(2345Explorer)[\/\s]?([\w\.]+)/i],[s,c],[/(MetaSr)[\/\s]?([\w\.]+)/i],[s],[/(LBBROWSER)/i],[s],[/xiaomi\/miuibrowser\/([\w\.]+)/i],[c,[s,"MIUI Browser"]],[/;fbav\/([\w\.]+);/i],[c,[s,"Facebook"]],[/headlesschrome(?:\/([\w\.]+)|\s)/i],[c,[s,"Chrome Headless"]],[/\swv\).+(chrome)\/([\w\.]+)/i],[[s,/(.+)/,"$1 WebView"],c],[/((?:oculus|samsung)browser)\/([\w\.]+)/i],[[s,/(.+(?:g|us))(.+)/,"$1 $2"],c],[/android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)*/i],[c,[s,"Android Browser"]],[/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i],[s,c],[/(dolfin)\/([\w\.]+)/i],[[s,"Dolphin"],c],[/((?:android.+)crmo|crios)\/([\w\.]+)/i],[[s,"Chrome"],c],[/(coast)\/([\w\.]+)/i],[[s,"Opera Coast"],c],[/fxios\/([\w\.-]+)/i],[c,[s,"Firefox"]],[/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i],[c,[s,"Mobile Safari"]],[/version\/([\w\.]+).+?(mobile\s?safari|safari)/i],[c,s],[/webkit.+?(gsa)\/([\w\.]+).+?(mobile\s?safari|safari)(\/[\w\.]+)/i],[[s,"GSA"],c],[/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i],[s,[c,m.str,h.browser.oldsafari.version]],[/(konqueror)\/([\w\.]+)/i,/(webkit|khtml)\/([\w\.]+)/i],[s,c],[/(navigator|netscape)\/([\w\.-]+)/i],[[s,"Netscape"],c],[/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([\w\.-]+)$/i,/(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\/\s]?([\w\.]+)/i,/(links)\s\(([\w\.]+)/i,/(gobrowser)\/?([\w\.]*)/i,/(ice\s?browser)\/v?([\w\._]+)/i,/(mosaic)[\/\s]([\w\.]+)/i],[s,c]],cpu:[[/(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\)]/i],[["architecture","amd64"]],[/(ia32(?=;))/i],[["architecture",p.lowerize]],[/((?:i[346]|x)86)[;\)]/i],[["architecture","ia32"]],[/windows\s(ce|mobile);\sppc;/i],[["architecture","arm"]],[/((?:ppc|powerpc)(?:64)?)(?:\smac|;|\))/i],[["architecture",/ower/,"",p.lowerize]],[/(sun4\w)[;\)]/i],[["architecture","sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|arm(?:64|(?=v\d+;))|(?=atmel\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i],[["architecture",p.lowerize]]],device:[[/\((ipad|playbook);[\w\s\);-]+(rim|apple)/i],[a,u,[l,d]],[/applecoremedia\/[\w\.]+ \((ipad)/],[a,[u,"Apple"],[l,d]],[/(apple\s{0,1}tv)/i],[[a,"Apple TV"],[u,"Apple"]],[/(archos)\s(gamepad2?)/i,/(hp).+(touchpad)/i,/(hp).+(tablet)/i,/(kindle)\/([\w\.]+)/i,/\s(nook)[\w\s]+build\/(\w+)/i,/(dell)\s(strea[kpr\s\d]*[\dko])/i],[u,a,[l,d]],[/(kf[A-z]+)\sbuild\/.+silk\//i],[a,[u,"Amazon"],[l,d]],[/(sd|kf)[0349hijorstuw]+\sbuild\/.+silk\//i],[[a,m.str,h.device.amazon.model],[u,"Amazon"],[l,f]],[/\((ip[honed|\s\w*]+);.+(apple)/i],[a,u,[l,f]],[/\((ip[honed|\s\w*]+);/i],[a,[u,"Apple"],[l,f]],[/(blackberry)[\s-]?(\w+)/i,/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\s_-]?([\w-]*)/i,/(hp)\s([\w\s]+\w)/i,/(asus)-?(\w+)/i],[u,a,[l,f]],[/\(bb10;\s(\w+)/i],[a,[u,"BlackBerry"],[l,f]],[/android.+(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7|padfone)/i],[a,[u,"Asus"],[l,d]],[/(sony)\s(tablet\s[ps])\sbuild\//i,/(sony)?(?:sgp.+)\sbuild\//i],[[u,"Sony"],[a,"Xperia Tablet"],[l,d]],[/android.+\s([c-g]\d{4}|so[-l]\w+)\sbuild\//i],[a,[u,"Sony"],[l,f]],[/\s(ouya)\s/i,/(nintendo)\s([wids3u]+)/i],[u,a,[l,"console"]],[/android.+;\s(shield)\sbuild/i],[a,[u,"Nvidia"],[l,"console"]],[/(playstation\s[34portablevi]+)/i],[a,[u,"Sony"],[l,"console"]],[/(sprint\s(\w+))/i],[[u,m.str,h.device.sprint.vendor],[a,m.str,h.device.sprint.model],[l,f]],[/(lenovo)\s?(S(?:5000|6000)+(?:[-][\w+]))/i],[u,a,[l,d]],[/(htc)[;_\s-]+([\w\s]+(?=\))|\w+)*/i,/(zte)-(\w*)/i,/(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]*)/i],[u,[a,/_/g," "],[l,f]],[/(nexus\s9)/i],[a,[u,"HTC"],[l,d]],[/d\/huawei([\w\s-]+)[;\)]/i,/(nexus\s6p)/i],[a,[u,"Huawei"],[l,f]],[/(microsoft);\s(lumia[\s\w]+)/i],[u,a,[l,f]],[/[\s\(;](xbox(?:\sone)?)[\s\);]/i],[a,[u,"Microsoft"],[l,"console"]],[/(kin\.[onetw]{3})/i],[[a,/\./g," "],[u,"Microsoft"],[l,f]],[/\s(milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?:?(\s4g)?)[\w\s]+build\//i,/mot[\s-]?(\w*)/i,/(XT\d{3,4}) build\//i,/(nexus\s6)/i],[a,[u,"Motorola"],[l,f]],[/android.+\s(mz60\d|xoom[\s2]{0,2})\sbuild\//i],[a,[u,"Motorola"],[l,d]],[/hbbtv\/\d+\.\d+\.\d+\s+\([\w\s]*;\s*(\w[^;]*);([^;]*)/i],[[u,p.trim],[a,p.trim],[l,"smarttv"]],[/hbbtv.+maple;(\d+)/i],[[a,/^/,"SmartTV"],[u,"Samsung"],[l,"smarttv"]],[/\(dtv[\);].+(aquos)/i],[a,[u,"Sharp"],[l,"smarttv"]],[/android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n\d+|sgh-t8[56]9|nexus 10))/i,/((SM-T\w+))/i],[[u,"Samsung"],a,[l,d]],[/smart-tv.+(samsung)/i],[u,[l,"smarttv"],a],[/((s[cgp]h-\w+|gt-\w+|galaxy\snexus|sm-\w[\w\d]+))/i,/(sam[sung]*)[\s-]*(\w+-?[\w-]*)/i,/sec-((sgh\w+))/i],[[u,"Samsung"],a,[l,f]],[/sie-(\w*)/i],[a,[u,"Siemens"],[l,f]],[/(maemo|nokia).*(n900|lumia\s\d+)/i,/(nokia)[\s_-]?([\w-]*)/i],[[u,"Nokia"],a,[l,f]],[/android\s3\.[\s\w;-]{10}(a\d{3})/i],[a,[u,"Acer"],[l,d]],[/android.+([vl]k\-?\d{3})\s+build/i],[a,[u,"LG"],[l,d]],[/android\s3\.[\s\w;-]{10}(lg?)-([06cv9]{3,4})/i],[[u,"LG"],a,[l,d]],[/(lg) netcast\.tv/i],[u,a,[l,"smarttv"]],[/(nexus\s[45])/i,/lg[e;\s\/-]+(\w*)/i,/android.+lg(\-?[\d\w]+)\s+build/i],[a,[u,"LG"],[l,f]],[/android.+(ideatab[a-z0-9\-\s]+)/i],[a,[u,"Lenovo"],[l,d]],[/linux;.+((jolla));/i],[u,a,[l,f]],[/((pebble))app\/[\d\.]+\s/i],[u,a,[l,"wearable"]],[/android.+;\s(oppo)\s?([\w\s]+)\sbuild/i],[u,a,[l,f]],[/crkey/i],[[a,"Chromecast"],[u,"Google"]],[/android.+;\s(glass)\s\d/i],[a,[u,"Google"],[l,"wearable"]],[/android.+;\s(pixel c)\s/i],[a,[u,"Google"],[l,d]],[/android.+;\s(pixel xl|pixel)\s/i],[a,[u,"Google"],[l,f]],[/android.+;\s(\w+)\s+build\/hm\1/i,/android.+(hm[\s\-_]*note?[\s_]*(?:\d\w)?)\s+build/i,/android.+(mi[\s\-_]*(?:one|one[\s_]plus|note lte)?[\s_]*(?:\d?\w?)[\s_]*(?:plus)?)\s+build/i,/android.+(redmi[\s\-_]*(?:note)?(?:[\s_]*[\w\s]+))\s+build/i],[[a,/_/g," "],[u,"Xiaomi"],[l,f]],[/android.+(mi[\s\-_]*(?:pad)(?:[\s_]*[\w\s]+))\s+build/i],[[a,/_/g," "],[u,"Xiaomi"],[l,d]],[/android.+;\s(m[1-5]\snote)\sbuild/i],[a,[u,"Meizu"],[l,d]],[/android.+a000(1)\s+build/i,/android.+oneplus\s(a\d{4})\s+build/i],[a,[u,"OnePlus"],[l,f]],[/android.+[;\/]\s*(RCT[\d\w]+)\s+build/i],[a,[u,"RCA"],[l,d]],[/android.+[;\/\s]+(Venue[\d\s]{2,7})\s+build/i],[a,[u,"Dell"],[l,d]],[/android.+[;\/]\s*(Q[T|M][\d\w]+)\s+build/i],[a,[u,"Verizon"],[l,d]],[/android.+[;\/]\s+(Barnes[&\s]+Noble\s+|BN[RT])(V?.*)\s+build/i],[[u,"Barnes & Noble"],a,[l,d]],[/android.+[;\/]\s+(TM\d{3}.*\b)\s+build/i],[a,[u,"NuVision"],[l,d]],[/android.+;\s(k88)\sbuild/i],[a,[u,"ZTE"],[l,d]],[/android.+[;\/]\s*(gen\d{3})\s+build.*49h/i],[a,[u,"Swiss"],[l,f]],[/android.+[;\/]\s*(zur\d{3})\s+build/i],[a,[u,"Swiss"],[l,d]],[/android.+[;\/]\s*((Zeki)?TB.*\b)\s+build/i],[a,[u,"Zeki"],[l,d]],[/(android).+[;\/]\s+([YR]\d{2})\s+build/i,/android.+[;\/]\s+(Dragon[\-\s]+Touch\s+|DT)(\w{5})\sbuild/i],[[u,"Dragon Touch"],a,[l,d]],[/android.+[;\/]\s*(NS-?\w{0,9})\sbuild/i],[a,[u,"Insignia"],[l,d]],[/android.+[;\/]\s*((NX|Next)-?\w{0,9})\s+build/i],[a,[u,"NextBook"],[l,d]],[/android.+[;\/]\s*(Xtreme\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\s+build/i],[[u,"Voice"],a,[l,f]],[/android.+[;\/]\s*(LVTEL\-)?(V1[12])\s+build/i],[[u,"LvTel"],a,[l,f]],[/android.+[;\/]\s*(V(100MD|700NA|7011|917G).*\b)\s+build/i],[a,[u,"Envizen"],[l,d]],[/android.+[;\/]\s*(Le[\s\-]+Pan)[\s\-]+(\w{1,9})\s+build/i],[u,a,[l,d]],[/android.+[;\/]\s*(Trio[\s\-]*.*)\s+build/i],[a,[u,"MachSpeed"],[l,d]],[/android.+[;\/]\s*(Trinity)[\-\s]*(T\d{3})\s+build/i],[u,a,[l,d]],[/android.+[;\/]\s*TU_(1491)\s+build/i],[a,[u,"Rotor"],[l,d]],[/android.+(KS(.+))\s+build/i],[a,[u,"Amazon"],[l,d]],[/android.+(Gigaset)[\s\-]+(Q\w{1,9})\s+build/i],[u,a,[l,d]],[/\s(tablet|tab)[;\/]/i,/\s(mobile)(?:[;\/]|\ssafari)/i],[[l,p.lowerize],u,a],[/(android[\w\.\s\-]{0,9});.+build/i],[a,[u,"Generic"]]],engine:[[/windows.+\sedge\/([\w\.]+)/i],[c,[s,"EdgeHTML"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i,/(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i,/(icab)[\/\s]([23]\.[\d\.]+)/i],[s,c],[/rv\:([\w\.]{1,9}).+(gecko)/i],[c,s]],os:[[/microsoft\s(windows)\s(vista|xp)/i],[s,c],[/(windows)\snt\s6\.2;\s(arm)/i,/(windows\sphone(?:\sos)*)[\s\/]?([\d\.\s\w]*)/i,/(windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i],[s,[c,m.str,h.os.windows.version]],[/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],[[s,"Windows"],[c,m.str,h.os.windows.version]],[/\((bb)(10);/i],[[s,"BlackBerry"],c],[/(blackberry)\w*\/?([\w\.]*)/i,/(tizen)[\/\s]([\w\.]+)/i,/(android|webos|palm\sos|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]*)/i,/linux;.+(sailfish);/i],[s,c],[/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]*)/i],[[s,"Symbian"],c],[/\((series40);/i],[s],[/mozilla.+\(mobile;.+gecko.+firefox/i],[[s,"Firefox OS"],c],[/(nintendo|playstation)\s([wids34portablevu]+)/i,/(mint)[\/\s\(]?(\w*)/i,/(mageia|vectorlinux)[;\s]/i,/(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?(?!chrom)([\w\.-]*)/i,/(hurd|linux)\s?([\w\.]*)/i,/(gnu)\s?([\w\.]*)/i],[s,c],[/(cros)\s[\w]+\s([\w\.]+\w)/i],[[s,"Chromium OS"],c],[/(sunos)\s?([\w\.\d]*)/i],[[s,"Solaris"],c],[/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]*)/i],[s,c],[/(haiku)\s(\w+)/i],[s,c],[/cfnetwork\/.+darwin/i,/ip[honead]{2,4}(?:.*os\s([\w]+)\slike\smac|;\sopera)/i],[[c,/_/g,"."],[s,"iOS"]],[/(mac\sos\sx)\s?([\w\s\.]*)/i,/(macintosh|mac(?=_powerpc)\s)/i],[[s,"Mac OS"],[c,/_/g,"."]],[/((?:open)?solaris)[\/\s-]?([\w\.]*)/i,/(aix)\s((\d)(?=\.|\)|\s)[\w\.])*/i,/(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i,/(unix)\s?([\w\.]*)/i],[s,c]]},g=function(e,t){if("object"==typeof e&&(t=e,e=void 0),!(this instanceof g))return new g(e,t).getResult();var n=e||(o&&o.navigator&&o.navigator.userAgent?o.navigator.userAgent:""),r=t?p.extend(_,t):_;return this.getBrowser=function(){var e={name:void 0,version:void 0};return m.rgx.call(e,n,r.browser),e.major=p.major(e.version),e},this.getCPU=function(){var e={architecture:void 0};return m.rgx.call(e,n,r.cpu),e},this.getDevice=function(){var e={vendor:void 0,model:void 0,type:void 0};return m.rgx.call(e,n,r.device),e},this.getEngine=function(){var e={name:void 0,version:void 0};return m.rgx.call(e,n,r.engine),e},this.getOS=function(){var e={name:void 0,version:void 0};return m.rgx.call(e,n,r.os),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return n},this.setUA=function(e){return n=e,this},this};g.VERSION="0.7.18",g.BROWSER={NAME:s,MAJOR:"major",VERSION:c},g.CPU={ARCHITECTURE:"architecture"},g.DEVICE={MODEL:a,VENDOR:u,TYPE:l,CONSOLE:"console",MOBILE:f,SMARTTV:"smarttv",TABLET:d,WEARABLE:"wearable",EMBEDDED:"embedded"},g.ENGINE={NAME:s,VERSION:c},g.OS={NAME:s,VERSION:c},void 0!==t?(void 0!==e&&e.exports&&(t=e.exports=g),t.UAParser=g):n(492)?void 0===(r=function(){return g}.call(t,n,t,e))||(e.exports=r):o&&(o.UAParser=g);var v=o&&(o.jQuery||o.Zepto);if(void 0!==v){var y=new g;v.ua=y.getResult(),v.ua.get=function(){return y.getUA()},v.ua.set=function(e){y.setUA(e);var t=y.getResult();for(var n in t)v.ua[n]=t[n]}}}("object"==typeof window?window:this)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.components=void 0;var r=s(n(1163)),o=s(n(1217)),i=s(n(1218)),a=s(n(1219));function s(e){return e&&e.__esModule?e:{default:e}}var l=n(1220).components;if(!l)throw new Error("'matrix-react-sdk/lib/component-index' didn't export components");r.default&&(l["structures.VectorHomePage"]=r.default),o.default&&(l["views.login.VectorCustomServerDialog"]=o.default),i.default&&(l["views.login.VectorLoginFooter"]=i.default),a.default&&(l["views.login.VectorLoginHeader"]=a.default),t.components=l},function(e,t,n){"use strict";var r=f(n(11)),o=f(n(4)),i=f(n(5)),a=f(n(12)),s=f(n(13)),l=(f(n(0)),f(n(600))),u=f(n(234)),c=n(2);function f(e){return e&&e.__esModule?e:{default:e}}var d=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,i.default)(t,[{key:"translate",value:function(e){return e=(e=(e=(0,u.default)((0,c._t)(e))).replace(/Riot\.im/,'<a href="https://riot.im" target="_blank" rel="noopener">Riot.im</a>')).replace(/\[matrix\]/,'<a href="https://matrix.org" target="_blank" rel="noopener"><img width="79" height="34" alt="[matrix]" style="padding-left: 1px;vertical-align: middle" src="home/images/matrix.svg"/></a>')}}]),t}(l.default);d.displayName="VectorHomePage",d.replaces="HomePage",e.exports=d},function(e){e.exports={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376}},function(e,t,n){var r=n(236),o=/\s+/g,i=n(605),a=n(1166);function s(e,t,n){"object"==typeof e?(n=t,t=e,e=null):"function"==typeof t&&(n=t,t=l),this._callback=e,this._options=t||l,this._elementCB=n,this.dom=[],this._done=!1,this._tagStack=[],this._parser=this._parser||null}var l={normalizeWhitespace:!1,withStartIndices:!1,withEndIndices:!1};s.prototype.onparserinit=function(e){this._parser=e},s.prototype.onreset=function(){s.call(this,this._callback,this._options,this._elementCB)},s.prototype.onend=function(){this._done||(this._done=!0,this._parser=null,this._handleCallback(null))},s.prototype._handleCallback=s.prototype.onerror=function(e){if("function"==typeof this._callback)this._callback(e,this.dom);else if(e)throw e},s.prototype.onclosetag=function(){var e=this._tagStack.pop();this._options.withEndIndices&&e&&(e.endIndex=this._parser.endIndex),this._elementCB&&this._elementCB(e)},s.prototype._createDomElement=function(e){if(!this._options.withDomLvl1)return e;var t;for(var n in t="tag"===e.type?Object.create(a):Object.create(i),e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t},s.prototype._addDomElement=function(e){var t=this._tagStack[this._tagStack.length-1],n=t?t.children:this.dom,r=n[n.length-1];e.next=null,this._options.withStartIndices&&(e.startIndex=this._parser.startIndex),this._options.withEndIndices&&(e.endIndex=this._parser.endIndex),r?(e.prev=r,r.next=e):e.prev=null,n.push(e),e.parent=t||null},s.prototype.onopentag=function(e,t){var n={type:"script"===e?r.Script:"style"===e?r.Style:r.Tag,name:e,attribs:t,children:[]},o=this._createDomElement(n);this._addDomElement(o),this._tagStack.push(o)},s.prototype.ontext=function(e){var t,n=this._options.normalizeWhitespace||this._options.ignoreWhitespace;if(!this._tagStack.length&&this.dom.length&&(t=this.dom[this.dom.length-1]).type===r.Text)n?t.data=(t.data+e).replace(o," "):t.data+=e;else if(this._tagStack.length&&(t=this._tagStack[this._tagStack.length-1])&&(t=t.children[t.children.length-1])&&t.type===r.Text)n?t.data=(t.data+e).replace(o," "):t.data+=e;else{n&&(e=e.replace(o," "));var i=this._createDomElement({data:e,type:r.Text});this._addDomElement(i)}},s.prototype.oncomment=function(e){var t=this._tagStack[this._tagStack.length-1];if(t&&t.type===r.Comment)t.data+=e;else{var n={data:e,type:r.Comment},o=this._createDomElement(n);this._addDomElement(o),this._tagStack.push(o)}},s.prototype.oncdatastart=function(){var e={children:[{data:"",type:r.Text}],type:r.CDATA},t=this._createDomElement(e);this._addDomElement(t),this._tagStack.push(t)},s.prototype.oncommentend=s.prototype.oncdataend=function(){this._tagStack.pop()},s.prototype.onprocessinginstruction=function(e,t){var n=this._createDomElement({name:e,data:t,type:r.Directive});this._addDomElement(n)},e.exports=s},function(e,t,n){var r=n(605),o=e.exports=Object.create(r),i={tagName:"name"};Object.keys(i).forEach(function(e){var t=i[e];Object.defineProperty(o,e,{get:function(){return this[t]||null},set:function(e){return this[t]=e,e}})})},function(e,t,n){var r=n(235),o=r.DomHandler,i=r.DomUtils;function a(e,t){this.init(e,t)}function s(e,t){return i.getElementsByTagName(e,t,!0)}function l(e,t){return i.getElementsByTagName(e,t,!0,1)[0]}function u(e,t,n){return i.getText(i.getElementsByTagName(e,t,n,1)).trim()}function c(e,t,n,r,o){var i=u(n,r,o);i&&(e[t]=i)}n(100)(a,o),a.prototype.init=o;var f=function(e){return"rss"===e||"feed"===e||"rdf:RDF"===e};a.prototype.onend=function(){var e,t,n={},r=l(f,this.dom);r&&("feed"===r.name?(t=r.children,n.type="atom",c(n,"id","id",t),c(n,"title","title",t),(e=l("link",t))&&(e=e.attribs)&&(e=e.href)&&(n.link=e),c(n,"description","subtitle",t),(e=u("updated",t))&&(n.updated=new Date(e)),c(n,"author","email",t,!0),n.items=s("entry",t).map(function(e){var t,n={};return c(n,"id","id",e=e.children),c(n,"title","title",e),(t=l("link",e))&&(t=t.attribs)&&(t=t.href)&&(n.link=t),(t=u("summary",e)||u("content",e))&&(n.description=t),(t=u("updated",e))&&(n.pubDate=new Date(t)),n})):(t=l("channel",r.children).children,n.type=r.name.substr(0,3),n.id="",c(n,"title","title",t),c(n,"link","link",t),c(n,"description","description",t),(e=u("lastBuildDate",t))&&(n.updated=new Date(e)),c(n,"author","managingEditor",t,!0),n.items=s("item",r.children).map(function(e){var t,n={};return c(n,"id","guid",e=e.children),c(n,"title","title",e),c(n,"link","link",e),c(n,"description","description",e),(t=u("pubDate",e))&&(n.pubDate=new Date(t)),n}))),this.dom=n,o.prototype._handleCallback.call(this,r?null:Error("couldn't find root of feed"))},e.exports=a},function(e,t,n){e.exports=o;var r=n(606);function o(e){r.call(this,new i(this),e)}function i(e){this.scope=e}n(100)(o,r),o.prototype.readable=!0;var a=n(235).EVENTS;Object.keys(a).forEach(function(e){if(0===a[e])i.prototype["on"+e]=function(){this.scope.emit(e)};else if(1===a[e])i.prototype["on"+e]=function(t){this.scope.emit(e,t)};else{if(2!==a[e])throw Error("wrong number of arguments!");i.prototype["on"+e]=function(t,n){this.scope.emit(e,t,n)}}})},function(e,t,n){e.exports=o;var r=n(55).EventEmitter;function o(){r.call(this)}n(100)(o,r),o.Readable=n(414),o.Writable=n(1174),o.Duplex=n(1175),o.Transform=n(1176),o.PassThrough=n(1177),o.Stream=o,o.prototype.pipe=function(e,t){var n=this;function o(t){e.writable&&!1===e.write(t)&&n.pause&&n.pause()}function i(){n.readable&&n.resume&&n.resume()}n.on("data",o),e.on("drain",i),e._isStdio||t&&!1===t.end||(n.on("end",s),n.on("close",l));var a=!1;function s(){a||(a=!0,e.end())}function l(){a||(a=!0,"function"==typeof e.destroy&&e.destroy())}function u(e){if(c(),0===r.listenerCount(this,"error"))throw e}function c(){n.removeListener("data",o),e.removeListener("drain",i),n.removeListener("end",s),n.removeListener("close",l),n.removeListener("error",u),e.removeListener("error",u),n.removeListener("end",c),n.removeListener("close",c),e.removeListener("close",c)}return n.on("error",u),e.on("error",u),n.on("end",c),n.on("close",c),e.on("close",c),e.emit("pipe",n),e}},function(e,t){},function(e,t,n){"use strict";var r=n(295).Buffer;function o(e,t,n){e.copy(t,n)}e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n},e.prototype.concat=function(e){if(0===this.length)return r.alloc(0);if(1===this.length)return this.head.data;for(var t=r.allocUnsafe(e>>>0),n=this.head,i=0;n;)o(n.data,t,i),i+=n.data.length,n=n.next;return t},e}()},function(e,t,n){(function(t){function n(e){try{if(!t.localStorage)return!1}catch(e){return!1}var n=t.localStorage[e];return null!=n&&"true"===String(n).toLowerCase()}e.exports=function(e,t){if(n("noDeprecation"))return e;var r=!1;return function(){if(!r){if(n("throwDeprecation"))throw new Error(t);n("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}}}).call(this,n(15))},function(e,t,n){"use strict";e.exports=i;var r=n(610),o=n(237);function i(e){if(!(this instanceof i))return new i(e);r.call(this,e)}o.inherits=n(100),o.inherits(i,r),i.prototype._transform=function(e,t,n){n(null,e)}},function(e,t,n){e.exports=n(415)},function(e,t,n){e.exports=n(175)},function(e,t,n){e.exports=n(414).Transform},function(e,t,n){e.exports=n(414).PassThrough},function(e,t){},function(e,t,n){function r(e){this._cbs=e||{}}e.exports=r;var o=n(235).EVENTS;Object.keys(o).forEach(function(e){if(0===o[e])e="on"+e,r.prototype[e]=function(){this._cbs[e]&&this._cbs[e]()};else if(1===o[e])e="on"+e,r.prototype[e]=function(t){this._cbs[e]&&this._cbs[e](t)};else{if(2!==o[e])throw Error("wrong number of arguments");e="on"+e,r.prototype[e]=function(t,n){this._cbs[e]&&this._cbs[e](t,n)}}})},function(e,t,n){var r=e.exports;[n(1181),n(1186),n(1187),n(1188),n(1189),n(1190)].forEach(function(e){Object.keys(e).forEach(function(t){r[t]=e[t].bind(r)})})},function(e,t,n){var r=n(236),o=n(1182),i=r.isTag;e.exports={getInnerHTML:function(e,t){return e.children?e.children.map(function(e){return o(e,t)}).join(""):""},getOuterHTML:o,getText:function e(t){if(Array.isArray(t))return t.map(e).join("");if(i(t))return"br"===t.name?"\n":e(t.children);if(t.type===r.CDATA)return e(t.children);if(t.type===r.Text)return t.data;return""}}},function(e,t,n){var r=n(1183),o=n(417),i={__proto__:null,allowfullscreen:!0,async:!0,autofocus:!0,autoplay:!0,checked:!0,controls:!0,default:!0,defer:!0,disabled:!0,hidden:!0,ismap:!0,loop:!0,multiple:!0,muted:!0,open:!0,readonly:!0,required:!0,reversed:!0,scoped:!0,seamless:!0,selected:!0,typemustmatch:!0},a={__proto__:null,style:!0,script:!0,xmp:!0,iframe:!0,noembed:!0,noframes:!0,plaintext:!0,noscript:!0};var s={__proto__:null,area:!0,base:!0,basefont:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,isindex:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},l=e.exports=function(e,t){Array.isArray(e)||e.cheerio||(e=[e]),t=t||{};for(var n="",o=0;o<e.length;o++){var i=e[o];"root"===i.type?n+=l(i.children,t):r.isTag(i)?n+=u(i,t):i.type===r.Directive?n+=c(i):i.type===r.Comment?n+=p(i):i.type===r.CDATA?n+=d(i):n+=f(i,t)}return n};function u(e,t){"svg"===e.name&&(t={decodeEntities:t.decodeEntities,xmlMode:!0});var n="<"+e.name,r=function(e,t){if(e){var n,r="";for(var a in e)n=e[a],r&&(r+=" "),!n&&i[a]?r+=a:r+=a+'="'+(t.decodeEntities?o.encodeXML(n):n)+'"';return r}}(e.attribs,t);return r&&(n+=" "+r),!t.xmlMode||e.children&&0!==e.children.length?(n+=">",e.children&&(n+=l(e.children,t)),s[e.name]&&!t.xmlMode||(n+="</"+e.name+">")):n+="/>",n}function c(e){return"<"+e.data+">"}function f(e,t){var n=e.data||"";return!t.decodeEntities||e.parent&&e.parent.name in a||(n=o.encodeXML(n)),n}function d(e){return"<![CDATA["+e.children[0].data+"]]>"}function p(e){return"\x3c!--"+e.data+"--\x3e"}},function(e,t){e.exports={Text:"text",Directive:"directive",Comment:"comment",Script:"script",Style:"style",Tag:"tag",CDATA:"cdata",isTag:function(e){return"tag"===e.type||"script"===e.type||"style"===e.type}}},function(e,t,n){var r=s(n(413)),o=l(r);t.XML=p(r,o);var i=s(n(412)),a=l(i);function s(e){return Object.keys(e).sort().reduce(function(t,n){return t[e[n]]="&"+n+";",t},{})}function l(e){var t=[],n=[];return Object.keys(e).forEach(function(e){1===e.length?t.push("\\"+e):n.push(e)}),n.unshift("["+t.join("")+"]"),new RegExp(n.join("|"),"g")}t.HTML=p(i,a);var u=/[^\0-\x7F]/g,c=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;function f(e){return"&#x"+e.charCodeAt(0).toString(16).toUpperCase()+";"}function d(e){return"&#x"+(1024*(e.charCodeAt(0)-55296)+e.charCodeAt(1)-56320+65536).toString(16).toUpperCase()+";"}function p(e,t){function n(t){return e[t]}return function(e){return e.replace(t,n).replace(c,d).replace(u,f)}}var m=l(r);t.escape=function(e){return e.replace(m,f).replace(c,d).replace(u,f)}},function(e,t,n){var r=n(412),o=n(604),i=n(413),a=n(603),s=u(i),l=u(r);function u(e){var t=Object.keys(e).join("|"),n=d(e),r=new RegExp("&(?:"+(t+="|#[xX][\\da-fA-F]+|#\\d+")+");","g");return function(e){return String(e).replace(r,n)}}var c=function(){for(var e=Object.keys(o).sort(f),t=Object.keys(r).sort(f),n=0,i=0;n<t.length;n++)e[i]===t[n]?(t[n]+=";?",i++):t[n]+=";";var a=new RegExp("&(?:"+t.join("|")+"|#[xX][\\da-fA-F]+;?|#\\d+;?)","g"),s=d(r);function l(e){return";"!==e.substr(-1)&&(e+=";"),s(e)}return function(e){return String(e).replace(a,l)}}();function f(e,t){return e<t?1:-1}function d(e){return function(t){return"#"===t.charAt(1)?"X"===t.charAt(2)||"x"===t.charAt(2)?a(parseInt(t.substr(3),16)):a(parseInt(t.substr(2),10)):e[t.slice(1,-1)]}}e.exports={XML:s,HTML:c,HTMLStrict:l}},function(e,t){var n=t.getChildren=function(e){return e.children},r=t.getParent=function(e){return e.parent};t.getSiblings=function(e){var t=r(e);return t?n(t):[e]},t.getAttributeValue=function(e,t){return e.attribs&&e.attribs[t]},t.hasAttrib=function(e,t){return!!e.attribs&&hasOwnProperty.call(e.attribs,t)},t.getName=function(e){return e.name}},function(e,t){t.removeElement=function(e){if(e.prev&&(e.prev.next=e.next),e.next&&(e.next.prev=e.prev),e.parent){var t=e.parent.children;t.splice(t.lastIndexOf(e),1)}},t.replaceElement=function(e,t){var n=t.prev=e.prev;n&&(n.next=t);var r=t.next=e.next;r&&(r.prev=t);var o=t.parent=e.parent;if(o){var i=o.children;i[i.lastIndexOf(e)]=t}},t.appendChild=function(e,t){if(t.parent=e,1!==e.children.push(t)){var n=e.children[e.children.length-2];n.next=t,t.prev=n,t.next=null}},t.append=function(e,t){var n=e.parent,r=e.next;if(t.next=r,t.prev=e,e.next=t,t.parent=n,r){if(r.prev=t,n){var o=n.children;o.splice(o.lastIndexOf(r),0,t)}}else n&&n.children.push(t)},t.prepend=function(e,t){var n=e.parent;if(n){var r=n.children;r.splice(r.lastIndexOf(e),0,t)}e.prev&&(e.prev.next=t),t.parent=n,t.prev=e.prev,t.next=e,e.prev=t}},function(e,t,n){var r=n(236).isTag;function o(e,t,n,r){for(var i,a=[],s=0,l=t.length;s<l&&!(e(t[s])&&(a.push(t[s]),--r<=0))&&(i=t[s].children,!(n&&i&&i.length>0&&(i=o(e,i,n,r),a=a.concat(i),(r-=i.length)<=0)));s++);return a}e.exports={filter:function(e,t,n,r){Array.isArray(t)||(t=[t]);"number"==typeof r&&isFinite(r)||(r=1/0);return o(e,t,!1!==n,r)},find:o,findOneChild:function(e,t){for(var n=0,r=t.length;n<r;n++)if(e(t[n]))return t[n];return null},findOne:function e(t,n){var o=null;for(var i=0,a=n.length;i<a&&!o;i++)r(n[i])&&(t(n[i])?o=n[i]:n[i].children.length>0&&(o=e(t,n[i].children)));return o},existsOne:function e(t,n){for(var o=0,i=n.length;o<i;o++)if(r(n[o])&&(t(n[o])||n[o].children.length>0&&e(t,n[o].children)))return!0;return!1},findAll:function(e,t){var n=[],o=t.slice();for(;o.length;){var i=o.shift();r(i)&&(i.children&&i.children.length>0&&o.unshift.apply(o,i.children),e(i)&&n.push(i))}return n}}},function(e,t,n){var r=n(236),o=t.isTag=r.isTag;t.testElement=function(e,t){for(var n in e)if(e.hasOwnProperty(n)){if("tag_name"===n){if(!o(t)||!e.tag_name(t.name))return!1}else if("tag_type"===n){if(!e.tag_type(t.type))return!1}else if("tag_contains"===n){if(o(t)||!e.tag_contains(t.data))return!1}else if(!t.attribs||!e[n](t.attribs[n]))return!1}else;return!0};var i={tag_name:function(e){return"function"==typeof e?function(t){return o(t)&&e(t.name)}:"*"===e?o:function(t){return o(t)&&t.name===e}},tag_type:function(e){return"function"==typeof e?function(t){return e(t.type)}:function(t){return t.type===e}},tag_contains:function(e){return"function"==typeof e?function(t){return!o(t)&&e(t.data)}:function(t){return!o(t)&&t.data===e}}};function a(e,t){return"function"==typeof t?function(n){return n.attribs&&t(n.attribs[e])}:function(n){return n.attribs&&n.attribs[e]===t}}function s(e,t){return function(n){return e(n)||t(n)}}t.getElements=function(e,t,n,r){var o=Object.keys(e).map(function(t){var n=e[t];return t in i?i[t](n):a(t,n)});return 0===o.length?[]:this.filter(o.reduce(s),t,n,r)},t.getElementById=function(e,t,n){return Array.isArray(t)||(t=[t]),this.findOne(a("id",e),t,!1!==n)},t.getElementsByTagName=function(e,t,n,r){return this.filter(i.tag_name(e),t,n,r)},t.getElementsByTagType=function(e,t,n,r){return this.filter(i.tag_type(e),t,n,r)}},function(e,t){t.removeSubsets=function(e){for(var t,n,r,o=e.length;--o>-1;){for(t=n=e[o],e[o]=null,r=!0;n;){if(e.indexOf(n)>-1){r=!1,e.splice(o,1);break}n=n.parent}r&&(e[o]=t)}return e};var n=1,r=2,o=4,i=8,a=16,s=t.compareDocumentPosition=function(e,t){var s,l,u,c,f,d,p=[],m=[];if(e===t)return 0;for(s=e;s;)p.unshift(s),s=s.parent;for(s=t;s;)m.unshift(s),s=s.parent;for(d=0;p[d]===m[d];)d++;return 0===d?n:(u=(l=p[d-1]).children,c=p[d],f=m[d],u.indexOf(c)>u.indexOf(f)?l===t?o|a:o:l===e?r|i:r)};t.uniqueSort=function(e){var t,n,i=e.length;for(e=e.slice();--i>-1;)t=e[i],(n=e.indexOf(t))>-1&&n<i&&e.splice(i,1);return e.sort(function(e,t){var n=s(e,t);return n&r?-1:n&o?1:0}),e}},function(e,t,n){function r(e){this._cbs=e||{},this.events=[]}e.exports=r;var o=n(235).EVENTS;Object.keys(o).forEach(function(e){if(0===o[e])e="on"+e,r.prototype[e]=function(){this.events.push([e]),this._cbs[e]&&this._cbs[e]()};else if(1===o[e])e="on"+e,r.prototype[e]=function(t){this.events.push([e,t]),this._cbs[e]&&this._cbs[e](t)};else{if(2!==o[e])throw Error("wrong number of arguments");e="on"+e,r.prototype[e]=function(t,n){this.events.push([e,t,n]),this._cbs[e]&&this._cbs[e](t,n)}}}),r.prototype.onreset=function(){this.events=[],this._cbs.onreset&&this._cbs.onreset()},r.prototype.restart=function(){this._cbs.onreset&&this._cbs.onreset();for(var e=0,t=this.events.length;e<t;e++)if(this._cbs[this.events[e][0]]){var n=this.events[e].length;1===n?this._cbs[this.events[e][0]]():2===n?this._cbs[this.events[e][0]](this.events[e][1]):this._cbs[this.events[e][0]](this.events[e][1],this.events[e][2])}}},function(e,t){e.exports=function(){for(var e={},t=0;t<arguments.length;t++){var r=arguments[t];for(var o in r)n.call(r,o)&&(e[o]=r[o])}return e};var n=Object.prototype.hasOwnProperty},function(e,t,n){(function(t){var n=1/0,r="[object Symbol]",o=/[\\^$.*+?()[\]{}|]/g,i=RegExp(o.source),a="object"==typeof t&&t&&t.Object===Object&&t,s="object"==typeof self&&self&&self.Object===Object&&self,l=a||s||Function("return this")(),u=Object.prototype.toString,c=l.Symbol,f=c?c.prototype:void 0,d=f?f.toString:void 0;function p(e){if("string"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&u.call(e)==r}(e))return d?d.call(e):"";var t=e+"";return"0"==t&&1/e==-n?"-0":t}e.exports=function(e){return(e=function(e){return null==e?"":p(e)}(e))&&i.test(e)?e.replace(o,"\\$&"):e}}).call(this,n(15))},function(e,t,n){(function(e,n){var r=200,o="__lodash_hash_undefined__",i=9007199254740991,a="[object Arguments]",s="[object Boolean]",l="[object Date]",u="[object Function]",c="[object GeneratorFunction]",f="[object Map]",d="[object Number]",p="[object Object]",m="[object RegExp]",h="[object Set]",_="[object String]",g="[object Symbol]",v="[object ArrayBuffer]",y="[object DataView]",b="[object Float32Array]",E="[object Float64Array]",C="[object Int8Array]",S="[object Int16Array]",D="[object Int32Array]",w="[object Uint8Array]",T="[object Uint8ClampedArray]",x="[object Uint16Array]",R="[object Uint32Array]",k=/\w*$/,N=/^\[object .+?Constructor\]$/,I=/^(?:0|[1-9]\d*)$/,O={};O[a]=O["[object Array]"]=O[v]=O[y]=O[s]=O[l]=O[b]=O[E]=O[C]=O[S]=O[D]=O[f]=O[d]=O[p]=O[m]=O[h]=O[_]=O[g]=O[w]=O[T]=O[x]=O[R]=!0,O["[object Error]"]=O[u]=O["[object WeakMap]"]=!1;var A="object"==typeof e&&e&&e.Object===Object&&e,M="object"==typeof self&&self&&self.Object===Object&&self,P=A||M||Function("return this")(),L="object"==typeof t&&t&&!t.nodeType&&t,F=L&&"object"==typeof n&&n&&!n.nodeType&&n,U=F&&F.exports===L;function j(e,t){return e.set(t[0],t[1]),e}function B(e,t){return e.add(t),e}function G(e,t,n,r){var o=-1,i=e?e.length:0;for(r&&i&&(n=e[++o]);++o<i;)n=t(n,e[o],o,e);return n}function q(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}function V(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}function H(e,t){return function(n){return e(t(n))}}function Y(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}var z=Array.prototype,W=Function.prototype,K=Object.prototype,$=P["__core-js_shared__"],Q=function(){var e=/[^.]+$/.exec($&&$.keys&&$.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),X=W.toString,J=K.hasOwnProperty,Z=K.toString,ee=RegExp("^"+X.call(J).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),te=U?P.Buffer:void 0,ne=P.Symbol,re=P.Uint8Array,oe=H(Object.getPrototypeOf,Object),ie=Object.create,ae=K.propertyIsEnumerable,se=z.splice,le=Object.getOwnPropertySymbols,ue=te?te.isBuffer:void 0,ce=H(Object.keys,Object),fe=Le(P,"DataView"),de=Le(P,"Map"),pe=Le(P,"Promise"),me=Le(P,"Set"),he=Le(P,"WeakMap"),_e=Le(Object,"create"),ge=Ge(fe),ve=Ge(de),ye=Ge(pe),be=Ge(me),Ee=Ge(he),Ce=ne?ne.prototype:void 0,Se=Ce?Ce.valueOf:void 0;function De(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function we(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Te(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function xe(e){this.__data__=new we(e)}function Re(e,t){var n=Ve(e)||function(e){return function(e){return function(e){return!!e&&"object"==typeof e}(e)&&He(e)}(e)&&J.call(e,"callee")&&(!ae.call(e,"callee")||Z.call(e)==a)}(e)?function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}(e.length,String):[],r=n.length,o=!!r;for(var i in e)!t&&!J.call(e,i)||o&&("length"==i||je(i,r))||n.push(i);return n}function ke(e,t,n){var r=e[t];J.call(e,t)&&qe(r,n)&&(void 0!==n||t in e)||(e[t]=n)}function Ne(e,t){for(var n=e.length;n--;)if(qe(e[n][0],t))return n;return-1}function Ie(e,t,n,r,o,i,N){var I;if(r&&(I=i?r(e,o,i,N):r(e)),void 0!==I)return I;if(!We(e))return e;var A=Ve(e);if(A){if(I=function(e){var t=e.length,n=e.constructor(t);t&&"string"==typeof e[0]&&J.call(e,"index")&&(n.index=e.index,n.input=e.input);return n}(e),!t)return function(e,t){var n=-1,r=e.length;t||(t=Array(r));for(;++n<r;)t[n]=e[n];return t}(e,I)}else{var M=Ue(e),P=M==u||M==c;if(Ye(e))return function(e,t){if(t)return e.slice();var n=new e.constructor(e.length);return e.copy(n),n}(e,t);if(M==p||M==a||P&&!i){if(q(e))return i?e:{};if(I=function(e){return"function"!=typeof e.constructor||Be(e)?{}:function(e){return We(e)?ie(e):{}}(oe(e))}(P?{}:e),!t)return function(e,t){return Me(e,Fe(e),t)}(e,function(e,t){return e&&Me(t,Ke(t),e)}(I,e))}else{if(!O[M])return i?e:{};I=function(e,t,n,r){var o=e.constructor;switch(t){case v:return Ae(e);case s:case l:return new o(+e);case y:return function(e,t){var n=t?Ae(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,r);case b:case E:case C:case S:case D:case w:case T:case x:case R:return function(e,t){var n=t?Ae(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}(e,r);case f:return function(e,t,n){return G(t?n(V(e),!0):V(e),j,new e.constructor)}(e,r,n);case d:case _:return new o(e);case m:return function(e){var t=new e.constructor(e.source,k.exec(e));return t.lastIndex=e.lastIndex,t}(e);case h:return function(e,t,n){return G(t?n(Y(e),!0):Y(e),B,new e.constructor)}(e,r,n);case g:return function(e){return Se?Object(Se.call(e)):{}}(e)}}(e,M,Ie,t)}}N||(N=new xe);var L=N.get(e);if(L)return L;if(N.set(e,I),!A)var F=n?function(e){return function(e,t,n){var r=t(e);return Ve(e)?r:function(e,t){for(var n=-1,r=t.length,o=e.length;++n<r;)e[o+n]=t[n];return e}(r,n(e))}(e,Ke,Fe)}(e):Ke(e);return function(e,t){for(var n=-1,r=e?e.length:0;++n<r&&!1!==t(e[n],n,e););}(F||e,function(o,i){F&&(o=e[i=o]),ke(I,i,Ie(o,t,n,r,i,e,N))}),I}function Oe(e){return!(!We(e)||function(e){return!!Q&&Q in e}(e))&&(ze(e)||q(e)?ee:N).test(Ge(e))}function Ae(e){var t=new e.constructor(e.byteLength);return new re(t).set(new re(e)),t}function Me(e,t,n,r){n||(n={});for(var o=-1,i=t.length;++o<i;){var a=t[o],s=r?r(n[a],e[a],a,n,e):void 0;ke(n,a,void 0===s?e[a]:s)}return n}function Pe(e,t){var n=e.__data__;return function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}(t)?n["string"==typeof t?"string":"hash"]:n.map}function Le(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return Oe(n)?n:void 0}De.prototype.clear=function(){this.__data__=_e?_e(null):{}},De.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},De.prototype.get=function(e){var t=this.__data__;if(_e){var n=t[e];return n===o?void 0:n}return J.call(t,e)?t[e]:void 0},De.prototype.has=function(e){var t=this.__data__;return _e?void 0!==t[e]:J.call(t,e)},De.prototype.set=function(e,t){return this.__data__[e]=_e&&void 0===t?o:t,this},we.prototype.clear=function(){this.__data__=[]},we.prototype.delete=function(e){var t=this.__data__,n=Ne(t,e);return!(n<0||(n==t.length-1?t.pop():se.call(t,n,1),0))},we.prototype.get=function(e){var t=this.__data__,n=Ne(t,e);return n<0?void 0:t[n][1]},we.prototype.has=function(e){return Ne(this.__data__,e)>-1},we.prototype.set=function(e,t){var n=this.__data__,r=Ne(n,e);return r<0?n.push([e,t]):n[r][1]=t,this},Te.prototype.clear=function(){this.__data__={hash:new De,map:new(de||we),string:new De}},Te.prototype.delete=function(e){return Pe(this,e).delete(e)},Te.prototype.get=function(e){return Pe(this,e).get(e)},Te.prototype.has=function(e){return Pe(this,e).has(e)},Te.prototype.set=function(e,t){return Pe(this,e).set(e,t),this},xe.prototype.clear=function(){this.__data__=new we},xe.prototype.delete=function(e){return this.__data__.delete(e)},xe.prototype.get=function(e){return this.__data__.get(e)},xe.prototype.has=function(e){return this.__data__.has(e)},xe.prototype.set=function(e,t){var n=this.__data__;if(n instanceof we){var o=n.__data__;if(!de||o.length<r-1)return o.push([e,t]),this;n=this.__data__=new Te(o)}return n.set(e,t),this};var Fe=le?H(le,Object):function(){return[]},Ue=function(e){return Z.call(e)};function je(e,t){return!!(t=null==t?i:t)&&("number"==typeof e||I.test(e))&&e>-1&&e%1==0&&e<t}function Be(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||K)}function Ge(e){if(null!=e){try{return X.call(e)}catch(e){}try{return e+""}catch(e){}}return""}function qe(e,t){return e===t||e!=e&&t!=t}(fe&&Ue(new fe(new ArrayBuffer(1)))!=y||de&&Ue(new de)!=f||pe&&"[object Promise]"!=Ue(pe.resolve())||me&&Ue(new me)!=h||he&&"[object WeakMap]"!=Ue(new he))&&(Ue=function(e){var t=Z.call(e),n=t==p?e.constructor:void 0,r=n?Ge(n):void 0;if(r)switch(r){case ge:return y;case ve:return f;case ye:return"[object Promise]";case be:return h;case Ee:return"[object WeakMap]"}return t});var Ve=Array.isArray;function He(e){return null!=e&&function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=i}(e.length)&&!ze(e)}var Ye=ue||function(){return!1};function ze(e){var t=We(e)?Z.call(e):"";return t==u||t==c}function We(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function Ke(e){return He(e)?Re(e):function(e){if(!Be(e))return ce(e);var t=[];for(var n in Object(e))J.call(e,n)&&"constructor"!=n&&t.push(n);return t}(e)}n.exports=function(e){return Ie(e,!0,!0)}}).call(this,n(15),n(171)(e))},function(e,t,n){(function(e,n){var r=200,o="__lodash_hash_undefined__",i=800,a=16,s=9007199254740991,l="[object Arguments]",u="[object AsyncFunction]",c="[object Function]",f="[object GeneratorFunction]",d="[object Null]",p="[object Object]",m="[object Proxy]",h="[object Undefined]",_=/^\[object .+?Constructor\]$/,g=/^(?:0|[1-9]\d*)$/,v={};v["[object Float32Array]"]=v["[object Float64Array]"]=v["[object Int8Array]"]=v["[object Int16Array]"]=v["[object Int32Array]"]=v["[object Uint8Array]"]=v["[object Uint8ClampedArray]"]=v["[object Uint16Array]"]=v["[object Uint32Array]"]=!0,v[l]=v["[object Array]"]=v["[object ArrayBuffer]"]=v["[object Boolean]"]=v["[object DataView]"]=v["[object Date]"]=v["[object Error]"]=v[c]=v["[object Map]"]=v["[object Number]"]=v[p]=v["[object RegExp]"]=v["[object Set]"]=v["[object String]"]=v["[object WeakMap]"]=!1;var y="object"==typeof e&&e&&e.Object===Object&&e,b="object"==typeof self&&self&&self.Object===Object&&self,E=y||b||Function("return this")(),C="object"==typeof t&&t&&!t.nodeType&&t,S=C&&"object"==typeof n&&n&&!n.nodeType&&n,D=S&&S.exports===C,w=D&&y.process,T=function(){try{return w&&w.binding&&w.binding("util")}catch(e){}}(),x=T&&T.isTypedArray;function R(e,t){return"__proto__"==t?void 0:e[t]}var k=Array.prototype,N=Function.prototype,I=Object.prototype,O=E["__core-js_shared__"],A=N.toString,M=I.hasOwnProperty,P=function(){var e=/[^.]+$/.exec(O&&O.keys&&O.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),L=I.toString,F=A.call(Object),U=RegExp("^"+A.call(M).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),j=D?E.Buffer:void 0,B=E.Symbol,G=E.Uint8Array,q=j?j.allocUnsafe:void 0,V=function(e,t){return function(n){return e(t(n))}}(Object.getPrototypeOf,Object),H=Object.create,Y=I.propertyIsEnumerable,z=k.splice,W=B?B.toStringTag:void 0,K=function(){try{var e=ve(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),$=j?j.isBuffer:void 0,Q=Math.max,X=Date.now,J=ve(E,"Map"),Z=ve(Object,"create"),ee=function(){function e(){}return function(t){if(!ke(t))return{};if(H)return H(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function te(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function ne(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function re(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function oe(e){var t=this.__data__=new ne(e);this.size=t.size}function ie(e,t){var n=De(e),r=!n&&Se(e),o=!n&&!r&&Te(e),i=!n&&!r&&!o&&Ie(e),a=n||r||o||i,s=a?function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}(e.length,String):[],l=s.length;for(var u in e)!t&&!M.call(e,u)||a&&("length"==u||o&&("offset"==u||"parent"==u)||i&&("buffer"==u||"byteLength"==u||"byteOffset"==u)||ye(u,l))||s.push(u);return s}function ae(e,t,n){(void 0===n||Ce(e[t],n))&&(void 0!==n||t in e)||ue(e,t,n)}function se(e,t,n){var r=e[t];M.call(e,t)&&Ce(r,n)&&(void 0!==n||t in e)||ue(e,t,n)}function le(e,t){for(var n=e.length;n--;)if(Ce(e[n][0],t))return n;return-1}function ue(e,t,n){"__proto__"==t&&K?K(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}te.prototype.clear=function(){this.__data__=Z?Z(null):{},this.size=0},te.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},te.prototype.get=function(e){var t=this.__data__;if(Z){var n=t[e];return n===o?void 0:n}return M.call(t,e)?t[e]:void 0},te.prototype.has=function(e){var t=this.__data__;return Z?void 0!==t[e]:M.call(t,e)},te.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=Z&&void 0===t?o:t,this},ne.prototype.clear=function(){this.__data__=[],this.size=0},ne.prototype.delete=function(e){var t=this.__data__,n=le(t,e);return!(n<0||(n==t.length-1?t.pop():z.call(t,n,1),--this.size,0))},ne.prototype.get=function(e){var t=this.__data__,n=le(t,e);return n<0?void 0:t[n][1]},ne.prototype.has=function(e){return le(this.__data__,e)>-1},ne.prototype.set=function(e,t){var n=this.__data__,r=le(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},re.prototype.clear=function(){this.size=0,this.__data__={hash:new te,map:new(J||ne),string:new te}},re.prototype.delete=function(e){var t=ge(this,e).delete(e);return this.size-=t?1:0,t},re.prototype.get=function(e){return ge(this,e).get(e)},re.prototype.has=function(e){return ge(this,e).has(e)},re.prototype.set=function(e,t){var n=ge(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},oe.prototype.clear=function(){this.__data__=new ne,this.size=0},oe.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},oe.prototype.get=function(e){return this.__data__.get(e)},oe.prototype.has=function(e){return this.__data__.has(e)},oe.prototype.set=function(e,t){var n=this.__data__;if(n instanceof ne){var o=n.__data__;if(!J||o.length<r-1)return o.push([e,t]),this.size=++n.size,this;n=this.__data__=new re(o)}return n.set(e,t),this.size=n.size,this};var ce=function(e){return function(t,n,r){for(var o=-1,i=Object(t),a=r(t),s=a.length;s--;){var l=a[e?s:++o];if(!1===n(i[l],l,i))break}return t}}();function fe(e){return null==e?void 0===e?h:d:W&&W in Object(e)?function(e){var t=M.call(e,W),n=e[W];try{e[W]=void 0;var r=!0}catch(e){}var o=L.call(e);r&&(t?e[W]=n:delete e[W]);return o}(e):function(e){return L.call(e)}(e)}function de(e){return Ne(e)&&fe(e)==l}function pe(e){return!(!ke(e)||function(e){return!!P&&P in e}(e))&&(xe(e)?U:_).test(function(e){if(null!=e){try{return A.call(e)}catch(e){}try{return e+""}catch(e){}}return""}(e))}function me(e){if(!ke(e))return function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}(e);var t=be(e),n=[];for(var r in e)("constructor"!=r||!t&&M.call(e,r))&&n.push(r);return n}function he(e,t,n,r,o){e!==t&&ce(t,function(i,a){if(ke(i))o||(o=new oe),function(e,t,n,r,o,i,a){var s=R(e,n),l=R(t,n),u=a.get(l);if(u)return void ae(e,n,u);var c=i?i(s,l,n+"",e,t,a):void 0,f=void 0===c;if(f){var d=De(l),m=!d&&Te(l),h=!d&&!m&&Ie(l);c=l,d||m||h?De(s)?c=s:!function(e){return Ne(e)&&we(e)}(s)?m?(f=!1,c=function(e,t){if(t)return e.slice();var n=e.length,r=q?q(n):new e.constructor(n);return e.copy(r),r}(l,!0)):h?(f=!1,c=function(e,t){var n=t?function(e){var t=new e.constructor(e.byteLength);return new G(t).set(new G(e)),t}(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}(l,!0)):c=[]:c=function(e,t){var n=-1,r=e.length;t||(t=Array(r));for(;++n<r;)t[n]=e[n];return t}(s):function(e){if(!Ne(e)||fe(e)!=p)return!1;var t=V(e);if(null===t)return!0;var n=M.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&A.call(n)==F}(l)||Se(l)?(c=s,Se(s)?c=function(e){return function(e,t,n,r){var o=!n;n||(n={});var i=-1,a=t.length;for(;++i<a;){var s=t[i],l=r?r(n[s],e[s],s,n,e):void 0;void 0===l&&(l=e[s]),o?ue(n,s,l):se(n,s,l)}return n}(e,Oe(e))}(s):(!ke(s)||r&&xe(s))&&(c=function(e){return"function"!=typeof e.constructor||be(e)?{}:ee(V(e))}(l))):f=!1}f&&(a.set(l,c),o(c,l,r,i,a),a.delete(l));ae(e,n,c)}(e,t,a,n,he,r,o);else{var s=r?r(R(e,a),i,a+"",e,t,o):void 0;void 0===s&&(s=i),ae(e,a,s)}},Oe)}function _e(e,t){return Ee(function(e,t,n){return t=Q(void 0===t?e.length-1:t,0),function(){for(var r=arguments,o=-1,i=Q(r.length-t,0),a=Array(i);++o<i;)a[o]=r[t+o];o=-1;for(var s=Array(t+1);++o<t;)s[o]=r[o];return s[t]=n(a),function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}(e,this,s)}}(e,t,Me),e+"")}function ge(e,t){var n=e.__data__;return function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}(t)?n["string"==typeof t?"string":"hash"]:n.map}function ve(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return pe(n)?n:void 0}function ye(e,t){var n=typeof e;return!!(t=null==t?s:t)&&("number"==n||"symbol"!=n&&g.test(e))&&e>-1&&e%1==0&&e<t}function be(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||I)}var Ee=function(e){var t=0,n=0;return function(){var r=X(),o=a-(r-n);if(n=r,o>0){if(++t>=i)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(K?function(e,t){return K(e,"toString",{configurable:!0,enumerable:!1,value:function(e){return function(){return e}}(t),writable:!0})}:Me);function Ce(e,t){return e===t||e!=e&&t!=t}var Se=de(function(){return arguments}())?de:function(e){return Ne(e)&&M.call(e,"callee")&&!Y.call(e,"callee")},De=Array.isArray;function we(e){return null!=e&&Re(e.length)&&!xe(e)}var Te=$||function(){return!1};function xe(e){if(!ke(e))return!1;var t=fe(e);return t==c||t==f||t==u||t==m}function Re(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=s}function ke(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Ne(e){return null!=e&&"object"==typeof e}var Ie=x?function(e){return function(t){return e(t)}}(x):function(e){return Ne(e)&&Re(e.length)&&!!v[fe(e)]};function Oe(e){return we(e)?ie(e,!0):me(e)}var Ae=function(e){return _e(function(t,n){var r=-1,o=n.length,i=o>1?n[o-1]:void 0,a=o>2?n[2]:void 0;for(i=e.length>3&&"function"==typeof i?(o--,i):void 0,a&&function(e,t,n){if(!ke(n))return!1;var r=typeof t;return!!("number"==r?we(n)&&ye(t,n.length):"string"==r&&t in n)&&Ce(n[t],e)}(n[0],n[1],a)&&(i=o<3?void 0:i,o=1),t=Object(t);++r<o;){var s=n[r];s&&e(t,s,r,i)}return t})}(function(e,t,n,r){he(e,t,n,r)});function Me(e){return e}n.exports=Ae}).call(this,n(15),n(171)(e))},function(e,t){var n="[object String]",r=Object.prototype.toString,o=Array.isArray;e.exports=function(e){return"string"==typeof e||!o(e)&&function(e){return!!e&&"object"==typeof e}(e)&&r.call(e)==n}},function(e,t){var n="[object Object]";var r=Function.prototype,o=Object.prototype,i=r.toString,a=o.hasOwnProperty,s=i.call(Object),l=o.toString,u=function(e,t){return function(n){return e(t(n))}}(Object.getPrototypeOf,Object);e.exports=function(e){if(!function(e){return!!e&&"object"==typeof e}(e)||l.call(e)!=n||function(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}(e))return!1;var t=u(e);if(null===t)return!0;var r=a.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&i.call(r)==s}},function(e,t,n){"use strict";var r=n(1199),o=n(1200),i=/^\d+$/;t.parse=function(e){return function(e){return e.sort().filter(function(t,n){return JSON.stringify(t)!==JSON.stringify(e[n-1])})}(e.split(",").map(function(e){var t={};return e.trim().split(/\s+/).forEach(function(e,n){if(0===n)return t.url=e;var o=e.substring(0,e.length-1),a=e[e.length-1],s=parseInt(o,10),l=parseFloat(o);if("w"===a&&i.test(o))t.width=s;else if("h"===a&&i.test(o))t.height=s;else{if("x"!==a||r(l))throw new Error("Invalid srcset descriptor: "+e+".");t.density=l}}),t}))},t.stringify=function(e){return o(e.map(function(e){if(!e.url)throw new Error("URL is required.");var t=[e.url];return e.width&&t.push(e.width+"w"),e.height&&t.push(e.height+"h"),e.density&&t.push(e.density+"x"),t.join(" ")})).join(", ")}},function(e,t,n){"use strict";e.exports=Number.isNaN||function(e){return e!=e}},function(e,t,n){"use strict";(function(t){"Set"in t?"function"==typeof Set.prototype.forEach&&function(){var e=!1;return new Set([!0]).forEach(function(t){e=t}),!0===e}()?e.exports=function(e){var t=[];return new Set(e).forEach(function(e){t.push(e)}),t}:e.exports=function(e){var t=new Set;return e.filter(function(e){return!t.has(e)&&(t.add(e),!0)})}:e.exports=function(e){for(var t=[],n=0;n<e.length;n++)-1===t.indexOf(e[n])&&t.push(e[n]);return t}}).call(this,n(15))},function(e,t,n){"use strict";t.__esModule=!0;var r=p(n(418)),o=p(n(621)),i=p(n(421)),a=p(n(423)),s=p(n(296)),l=p(n(1216)),u=p(n(422)),c=p(n(623)),f=p(n(297)),d=p(n(425));function p(e){return e&&e.__esModule?e:{default:e}}function m(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return 1===t.length&&Array.isArray(t[0])&&(t=t[0]),new o.default(t)}m.plugin=function(e,t){var n=function(){var n=t.apply(void 0,arguments);return n.postcssPlugin=e,n.postcssVersion=(new o.default).version,n},r=void 0;return Object.defineProperty(n,"postcss",{get:function(){return r||(r=n()),r}}),n.process=function(e,t,r){return m([n(r)]).process(e,t)},n},m.stringify=i.default,m.parse=u.default,m.vendor=l.default,m.list=c.default,m.comment=function(e){return new a.default(e)},m.atRule=function(e){return new s.default(e)},m.decl=function(e){return new r.default(e)},m.rule=function(e){return new f.default(e)},m.root=function(e){return new d.default(e)},t.default=m,e.exports=t.default},function(e,t){},function(e,t,n){"use strict";t.__esModule=!0;var r=a(n(612)),o=a(n(613)),i=a(n(614));function a(e){return e&&e.__esModule?e:{default:e}}var s={brackets:r.default.cyan,"at-word":r.default.cyan,call:r.default.cyan,comment:r.default.gray,string:r.default.green,class:r.default.yellow,hash:r.default.magenta,"(":r.default.cyan,")":r.default.cyan,"{":r.default.yellow,"}":r.default.yellow,"[":r.default.yellow,"]":r.default.yellow,":":r.default.yellow,";":r.default.yellow};t.default=function(e){for(var t=(0,o.default)(new i.default(e),{ignoreErrors:!0}),n="",r=function(){var e=t.nextToken(),r=s[function(e,t){var n=e[0],r=e[1];if("word"===n){if("."===r[0])return"class";if("#"===r[0])return"hash"}if(!t.endOfFile()){var o=t.nextToken();if(t.back(o),"brackets"===o[0]||"("===o[0])return"call"}return n}(e,t)];n+=r?e[1].split(/\r?\n/).map(function(e){return r(e)}).join("\n"):e[1]};!t.endOfFile();)r();return n},e.exports=t.default},function(e,t,n){"use strict";(function(r){t.__esModule=!0;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=l(n(615)),a=l(n(420)),s=l(n(1211));function l(e){return e&&e.__esModule?e:{default:e}}var u=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.loadAnnotation(t),this.inline=this.startWith(this.annotation,"data:");var r=n.map?n.map.prev:void 0,o=this.loadMap(n.from,r);o&&(this.text=o)}return e.prototype.consumer=function(){return this.consumerCache||(this.consumerCache=new i.default.SourceMapConsumer(this.text)),this.consumerCache},e.prototype.withContent=function(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)},e.prototype.startWith=function(e,t){return!!e&&e.substr(0,t.length)===t},e.prototype.loadAnnotation=function(e){var t=e.match(/\/\*\s*# sourceMappingURL=(.*)\s*\*\//);t&&(this.annotation=t[1].trim())},e.prototype.decodeInline=function(e){var t="data:application/json,";if(this.startWith(e,t))return decodeURIComponent(e.substr(t.length));if(/^data:application\/json;(?:charset=utf-?8;)?base64,/.test(e))return function(e){return r?r.from&&r.from!==Uint8Array.from?r.from(e,"base64").toString():new r(e,"base64").toString():window.atob(e)}(e.substr(RegExp.lastMatch.length));var n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)},e.prototype.loadMap=function(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"==typeof t){var n=t(e);if(n&&s.default.existsSync&&s.default.existsSync(n))return s.default.readFileSync(n,"utf-8").toString().trim();throw new Error("Unable to load previous source map: "+n.toString())}if(t instanceof i.default.SourceMapConsumer)return i.default.SourceMapGenerator.fromSourceMap(t).toString();if(t instanceof i.default.SourceMapGenerator)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var r=this.annotation;return e&&(r=a.default.join(a.default.dirname(e),r)),this.root=a.default.dirname(r),!(!s.default.existsSync||!s.default.existsSync(r))&&s.default.readFileSync(r,"utf-8").toString().trim()}},e.prototype.isMap=function(e){return"object"===(void 0===e?"undefined":o(e))&&("string"==typeof e.mappings||"string"==typeof e._mappings)},e}();t.default=u,e.exports=t.default}).call(this,n(193).Buffer)},function(e,t){var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");t.encode=function(e){if(0<=e&&e<n.length)return n[e];throw new TypeError("Must be between 0 and 63: "+e)},t.decode=function(e){return 65<=e&&e<=90?e-65:97<=e&&e<=122?e-97+26:48<=e&&e<=57?e-48+52:43==e?62:47==e?63:-1}},function(e,t,n){var r=n(238);function o(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}o.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},o.prototype.add=function(e){!function(e,t){var n=e.generatedLine,o=t.generatedLine,i=e.generatedColumn,a=t.generatedColumn;return o>n||o==n&&a>=i||r.compareByGeneratedPositionsInflated(e,t)<=0}(this._last,e)?(this._sorted=!1,this._array.push(e)):(this._last=e,this._array.push(e))},o.prototype.toArray=function(){return this._sorted||(this._array.sort(r.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},t.MappingList=o},function(e,t,n){var r=n(238),o=n(1208),i=n(618).ArraySet,a=n(617),s=n(1209).quickSort;function l(e,t){var n=e;return"string"==typeof e&&(n=r.parseSourceMapInput(e)),null!=n.sections?new f(n,t):new u(n,t)}function u(e,t){var n=e;"string"==typeof e&&(n=r.parseSourceMapInput(e));var o=r.getArg(n,"version"),a=r.getArg(n,"sources"),s=r.getArg(n,"names",[]),l=r.getArg(n,"sourceRoot",null),u=r.getArg(n,"sourcesContent",null),c=r.getArg(n,"mappings"),f=r.getArg(n,"file",null);if(o!=this._version)throw new Error("Unsupported version: "+o);l&&(l=r.normalize(l)),a=a.map(String).map(r.normalize).map(function(e){return l&&r.isAbsolute(l)&&r.isAbsolute(e)?r.relative(l,e):e}),this._names=i.fromArray(s.map(String),!0),this._sources=i.fromArray(a,!0),this._absoluteSources=this._sources.toArray().map(function(e){return r.computeSourceURL(l,e,t)}),this.sourceRoot=l,this.sourcesContent=u,this._mappings=c,this._sourceMapURL=t,this.file=f}function c(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}function f(e,t){var n=e;"string"==typeof e&&(n=r.parseSourceMapInput(e));var o=r.getArg(n,"version"),a=r.getArg(n,"sections");if(o!=this._version)throw new Error("Unsupported version: "+o);this._sources=new i,this._names=new i;var s={line:-1,column:0};this._sections=a.map(function(e){if(e.url)throw new Error("Support for url field in sections not implemented.");var n=r.getArg(e,"offset"),o=r.getArg(n,"line"),i=r.getArg(n,"column");if(o<s.line||o===s.line&&i<s.column)throw new Error("Section offsets must be ordered and non-overlapping.");return s=n,{generatedOffset:{generatedLine:o+1,generatedColumn:i+1},consumer:new l(r.getArg(e,"map"),t)}})}l.fromSourceMap=function(e,t){return u.fromSourceMap(e,t)},l.prototype._version=3,l.prototype.__generatedMappings=null,Object.defineProperty(l.prototype,"_generatedMappings",{configurable:!0,enumerable:!0,get:function(){return this.__generatedMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappings}}),l.prototype.__originalMappings=null,Object.defineProperty(l.prototype,"_originalMappings",{configurable:!0,enumerable:!0,get:function(){return this.__originalMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__originalMappings}}),l.prototype._charIsMappingSeparator=function(e,t){var n=e.charAt(t);return";"===n||","===n},l.prototype._parseMappings=function(e,t){throw new Error("Subclasses must implement _parseMappings")},l.GENERATED_ORDER=1,l.ORIGINAL_ORDER=2,l.GREATEST_LOWER_BOUND=1,l.LEAST_UPPER_BOUND=2,l.prototype.eachMapping=function(e,t,n){var o,i=t||null;switch(n||l.GENERATED_ORDER){case l.GENERATED_ORDER:o=this._generatedMappings;break;case l.ORIGINAL_ORDER:o=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var a=this.sourceRoot;o.map(function(e){var t=null===e.source?null:this._sources.at(e.source);return{source:t=r.computeSourceURL(a,t,this._sourceMapURL),generatedLine:e.generatedLine,generatedColumn:e.generatedColumn,originalLine:e.originalLine,originalColumn:e.originalColumn,name:null===e.name?null:this._names.at(e.name)}},this).forEach(e,i)},l.prototype.allGeneratedPositionsFor=function(e){var t=r.getArg(e,"line"),n={source:r.getArg(e,"source"),originalLine:t,originalColumn:r.getArg(e,"column",0)};if(n.source=this._findSourceIndex(n.source),n.source<0)return[];var i=[],a=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",r.compareByOriginalPositions,o.LEAST_UPPER_BOUND);if(a>=0){var s=this._originalMappings[a];if(void 0===e.column)for(var l=s.originalLine;s&&s.originalLine===l;)i.push({line:r.getArg(s,"generatedLine",null),column:r.getArg(s,"generatedColumn",null),lastColumn:r.getArg(s,"lastGeneratedColumn",null)}),s=this._originalMappings[++a];else for(var u=s.originalColumn;s&&s.originalLine===t&&s.originalColumn==u;)i.push({line:r.getArg(s,"generatedLine",null),column:r.getArg(s,"generatedColumn",null),lastColumn:r.getArg(s,"lastGeneratedColumn",null)}),s=this._originalMappings[++a]}return i},t.SourceMapConsumer=l,u.prototype=Object.create(l.prototype),u.prototype.consumer=l,u.prototype._findSourceIndex=function(e){var t,n=e;if(null!=this.sourceRoot&&(n=r.relative(this.sourceRoot,n)),this._sources.has(n))return this._sources.indexOf(n);for(t=0;t<this._absoluteSources.length;++t)if(this._absoluteSources[t]==e)return t;return-1},u.fromSourceMap=function(e,t){var n=Object.create(u.prototype),o=n._names=i.fromArray(e._names.toArray(),!0),a=n._sources=i.fromArray(e._sources.toArray(),!0);n.sourceRoot=e._sourceRoot,n.sourcesContent=e._generateSourcesContent(n._sources.toArray(),n.sourceRoot),n.file=e._file,n._sourceMapURL=t,n._absoluteSources=n._sources.toArray().map(function(e){return r.computeSourceURL(n.sourceRoot,e,t)});for(var l=e._mappings.toArray().slice(),f=n.__generatedMappings=[],d=n.__originalMappings=[],p=0,m=l.length;p<m;p++){var h=l[p],_=new c;_.generatedLine=h.generatedLine,_.generatedColumn=h.generatedColumn,h.source&&(_.source=a.indexOf(h.source),_.originalLine=h.originalLine,_.originalColumn=h.originalColumn,h.name&&(_.name=o.indexOf(h.name)),d.push(_)),f.push(_)}return s(n.__originalMappings,r.compareByOriginalPositions),n},u.prototype._version=3,Object.defineProperty(u.prototype,"sources",{get:function(){return this._absoluteSources.slice()}}),u.prototype._parseMappings=function(e,t){for(var n,o,i,l,u,f=1,d=0,p=0,m=0,h=0,_=0,g=e.length,v=0,y={},b={},E=[],C=[];v<g;)if(";"===e.charAt(v))f++,v++,d=0;else if(","===e.charAt(v))v++;else{for((n=new c).generatedLine=f,l=v;l<g&&!this._charIsMappingSeparator(e,l);l++);if(i=y[o=e.slice(v,l)])v+=o.length;else{for(i=[];v<l;)a.decode(e,v,b),u=b.value,v=b.rest,i.push(u);if(2===i.length)throw new Error("Found a source, but no line and column");if(3===i.length)throw new Error("Found a source and line, but no column");y[o]=i}n.generatedColumn=d+i[0],d=n.generatedColumn,i.length>1&&(n.source=h+i[1],h+=i[1],n.originalLine=p+i[2],p=n.originalLine,n.originalLine+=1,n.originalColumn=m+i[3],m=n.originalColumn,i.length>4&&(n.name=_+i[4],_+=i[4])),C.push(n),"number"==typeof n.originalLine&&E.push(n)}s(C,r.compareByGeneratedPositionsDeflated),this.__generatedMappings=C,s(E,r.compareByOriginalPositions),this.__originalMappings=E},u.prototype._findMapping=function(e,t,n,r,i,a){if(e[n]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[n]);if(e[r]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[r]);return o.search(e,t,i,a)},u.prototype.computeColumnSpans=function(){for(var e=0;e<this._generatedMappings.length;++e){var t=this._generatedMappings[e];if(e+1<this._generatedMappings.length){var n=this._generatedMappings[e+1];if(t.generatedLine===n.generatedLine){t.lastGeneratedColumn=n.generatedColumn-1;continue}}t.lastGeneratedColumn=1/0}},u.prototype.originalPositionFor=function(e){var t={generatedLine:r.getArg(e,"line"),generatedColumn:r.getArg(e,"column")},n=this._findMapping(t,this._generatedMappings,"generatedLine","generatedColumn",r.compareByGeneratedPositionsDeflated,r.getArg(e,"bias",l.GREATEST_LOWER_BOUND));if(n>=0){var o=this._generatedMappings[n];if(o.generatedLine===t.generatedLine){var i=r.getArg(o,"source",null);null!==i&&(i=this._sources.at(i),i=r.computeSourceURL(this.sourceRoot,i,this._sourceMapURL));var a=r.getArg(o,"name",null);return null!==a&&(a=this._names.at(a)),{source:i,line:r.getArg(o,"originalLine",null),column:r.getArg(o,"originalColumn",null),name:a}}}return{source:null,line:null,column:null,name:null}},u.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},u.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;var n=this._findSourceIndex(e);if(n>=0)return this.sourcesContent[n];var o,i=e;if(null!=this.sourceRoot&&(i=r.relative(this.sourceRoot,i)),null!=this.sourceRoot&&(o=r.urlParse(this.sourceRoot))){var a=i.replace(/^file:\/\//,"");if("file"==o.scheme&&this._sources.has(a))return this.sourcesContent[this._sources.indexOf(a)];if((!o.path||"/"==o.path)&&this._sources.has("/"+i))return this.sourcesContent[this._sources.indexOf("/"+i)]}if(t)return null;throw new Error('"'+i+'" is not in the SourceMap.')},u.prototype.generatedPositionFor=function(e){var t=r.getArg(e,"source");if((t=this._findSourceIndex(t))<0)return{line:null,column:null,lastColumn:null};var n={source:t,originalLine:r.getArg(e,"line"),originalColumn:r.getArg(e,"column")},o=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",r.compareByOriginalPositions,r.getArg(e,"bias",l.GREATEST_LOWER_BOUND));if(o>=0){var i=this._originalMappings[o];if(i.source===n.source)return{line:r.getArg(i,"generatedLine",null),column:r.getArg(i,"generatedColumn",null),lastColumn:r.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},t.BasicSourceMapConsumer=u,f.prototype=Object.create(l.prototype),f.prototype.constructor=l,f.prototype._version=3,Object.defineProperty(f.prototype,"sources",{get:function(){for(var e=[],t=0;t<this._sections.length;t++)for(var n=0;n<this._sections[t].consumer.sources.length;n++)e.push(this._sections[t].consumer.sources[n]);return e}}),f.prototype.originalPositionFor=function(e){var t={generatedLine:r.getArg(e,"line"),generatedColumn:r.getArg(e,"column")},n=o.search(t,this._sections,function(e,t){var n=e.generatedLine-t.generatedOffset.generatedLine;return n||e.generatedColumn-t.generatedOffset.generatedColumn}),i=this._sections[n];return i?i.consumer.originalPositionFor({line:t.generatedLine-(i.generatedOffset.generatedLine-1),column:t.generatedColumn-(i.generatedOffset.generatedLine===t.generatedLine?i.generatedOffset.generatedColumn-1:0),bias:e.bias}):{source:null,line:null,column:null,name:null}},f.prototype.hasContentsOfAllSources=function(){return this._sections.every(function(e){return e.consumer.hasContentsOfAllSources()})},f.prototype.sourceContentFor=function(e,t){for(var n=0;n<this._sections.length;n++){var r=this._sections[n].consumer.sourceContentFor(e,!0);if(r)return r}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},f.prototype.generatedPositionFor=function(e){for(var t=0;t<this._sections.length;t++){var n=this._sections[t];if(-1!==n.consumer._findSourceIndex(r.getArg(e,"source"))){var o=n.consumer.generatedPositionFor(e);if(o)return{line:o.line+(n.generatedOffset.generatedLine-1),column:o.column+(n.generatedOffset.generatedLine===o.line?n.generatedOffset.generatedColumn-1:0)}}}return{line:null,column:null}},f.prototype._parseMappings=function(e,t){this.__generatedMappings=[],this.__originalMappings=[];for(var n=0;n<this._sections.length;n++)for(var o=this._sections[n],i=o.consumer._generatedMappings,a=0;a<i.length;a++){var l=i[a],u=o.consumer._sources.at(l.source);u=r.computeSourceURL(o.consumer.sourceRoot,u,this._sourceMapURL),this._sources.add(u),u=this._sources.indexOf(u);var c=null;l.name&&(c=o.consumer._names.at(l.name),this._names.add(c),c=this._names.indexOf(c));var f={source:u,generatedLine:l.generatedLine+(o.generatedOffset.generatedLine-1),generatedColumn:l.generatedColumn+(o.generatedOffset.generatedLine===l.generatedLine?o.generatedOffset.generatedColumn-1:0),originalLine:l.originalLine,originalColumn:l.originalColumn,name:c};this.__generatedMappings.push(f),"number"==typeof f.originalLine&&this.__originalMappings.push(f)}s(this.__generatedMappings,r.compareByGeneratedPositionsDeflated),s(this.__originalMappings,r.compareByOriginalPositions)},t.IndexedSourceMapConsumer=f},function(e,t){t.GREATEST_LOWER_BOUND=1,t.LEAST_UPPER_BOUND=2,t.search=function(e,n,r,o){if(0===n.length)return-1;var i=function e(n,r,o,i,a,s){var l=Math.floor((r-n)/2)+n,u=a(o,i[l],!0);return 0===u?l:u>0?r-l>1?e(l,r,o,i,a,s):s==t.LEAST_UPPER_BOUND?r<i.length?r:-1:l:l-n>1?e(n,l,o,i,a,s):s==t.LEAST_UPPER_BOUND?l:n<0?-1:n}(-1,n.length,e,n,r,o||t.GREATEST_LOWER_BOUND);if(i<0)return-1;for(;i-1>=0&&0===r(n[i],n[i-1],!0);)--i;return i}},function(e,t){function n(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function r(e,t,o,i){if(o<i){var a=o-1;n(e,function(e,t){return Math.round(e+Math.random()*(t-e))}(o,i),i);for(var s=e[i],l=o;l<i;l++)t(e[l],s)<=0&&n(e,a+=1,l);n(e,a+1,l);var u=a+1;r(e,t,o,u-1),r(e,t,u+1,i)}}t.quickSort=function(e,t){r(e,t,0,e.length-1)}},function(e,t,n){var r=n(616).SourceMapGenerator,o=n(238),i=/(\r?\n)/,a="$$$isSourceNode$$$";function s(e,t,n,r,o){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==n?null:n,this.name=null==o?null:o,this[a]=!0,null!=r&&this.add(r)}s.fromStringWithSourceMap=function(e,t,n){var r=new s,a=e.split(i),l=0,u=function(){return e()+(e()||"");function e(){return l<a.length?a[l++]:void 0}},c=1,f=0,d=null;return t.eachMapping(function(e){if(null!==d){if(!(c<e.generatedLine)){var t=(n=a[l]||"").substr(0,e.generatedColumn-f);return a[l]=n.substr(e.generatedColumn-f),f=e.generatedColumn,p(d,t),void(d=e)}p(d,u()),c++,f=0}for(;c<e.generatedLine;)r.add(u()),c++;if(f<e.generatedColumn){var n=a[l]||"";r.add(n.substr(0,e.generatedColumn)),a[l]=n.substr(e.generatedColumn),f=e.generatedColumn}d=e},this),l<a.length&&(d&&p(d,u()),r.add(a.splice(l).join(""))),t.sources.forEach(function(e){var i=t.sourceContentFor(e);null!=i&&(null!=n&&(e=o.join(n,e)),r.setSourceContent(e,i))}),r;function p(e,t){if(null===e||void 0===e.source)r.add(t);else{var i=n?o.join(n,e.source):e.source;r.add(new s(e.originalLine,e.originalColumn,i,t,e.name))}}},s.prototype.add=function(e){if(Array.isArray(e))e.forEach(function(e){this.add(e)},this);else{if(!e[a]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);e&&this.children.push(e)}return this},s.prototype.prepend=function(e){if(Array.isArray(e))for(var t=e.length-1;t>=0;t--)this.prepend(e[t]);else{if(!e[a]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},s.prototype.walk=function(e){for(var t,n=0,r=this.children.length;n<r;n++)(t=this.children[n])[a]?t.walk(e):""!==t&&e(t,{source:this.source,line:this.line,column:this.column,name:this.name})},s.prototype.join=function(e){var t,n,r=this.children.length;if(r>0){for(t=[],n=0;n<r-1;n++)t.push(this.children[n]),t.push(e);t.push(this.children[n]),this.children=t}return this},s.prototype.replaceRight=function(e,t){var n=this.children[this.children.length-1];return n[a]?n.replaceRight(e,t):"string"==typeof n?this.children[this.children.length-1]=n.replace(e,t):this.children.push("".replace(e,t)),this},s.prototype.setSourceContent=function(e,t){this.sourceContents[o.toSetString(e)]=t},s.prototype.walkSourceContents=function(e){for(var t=0,n=this.children.length;t<n;t++)this.children[t][a]&&this.children[t].walkSourceContents(e);var r=Object.keys(this.sourceContents);for(t=0,n=r.length;t<n;t++)e(o.fromSetString(r[t]),this.sourceContents[r[t]])},s.prototype.toString=function(){var e="";return this.walk(function(t){e+=t}),e},s.prototype.toStringWithSourceMap=function(e){var t={code:"",line:1,column:0},n=new r(e),o=!1,i=null,a=null,s=null,l=null;return this.walk(function(e,r){t.code+=e,null!==r.source&&null!==r.line&&null!==r.column?(i===r.source&&a===r.line&&s===r.column&&l===r.name||n.addMapping({source:r.source,original:{line:r.line,column:r.column},generated:{line:t.line,column:t.column},name:r.name}),i=r.source,a=r.line,s=r.column,l=r.name,o=!0):o&&(n.addMapping({generated:{line:t.line,column:t.column}}),i=null,o=!1);for(var u=0,c=e.length;u<c;u++)10===e.charCodeAt(u)?(t.line++,t.column=0,u+1===c?(i=null,o=!1):o&&n.addMapping({source:r.source,original:{line:r.line,column:r.column},generated:{line:t.line,column:t.column},name:r.name})):t.column++}),this.walkSourceContents(function(e,t){n.setSourceContent(e,t)}),{code:t.code,map:n}},t.SourceNode=s},function(e,t){},function(e,t,n){"use strict";(function(r){t.__esModule=!0;var o=a(n(615)),i=a(n(420));function a(e){return e&&e.__esModule?e:{default:e}}var s=function(){function e(t,n,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.stringify=t,this.mapOpts=r.map||{},this.root=n,this.opts=r}return e.prototype.isMap=function(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0},e.prototype.previous=function(){var e=this;return this.previousMaps||(this.previousMaps=[],this.root.walk(function(t){if(t.source&&t.source.input.map){var n=t.source.input.map;-1===e.previousMaps.indexOf(n)&&e.previousMaps.push(n)}})),this.previousMaps},e.prototype.isInline=function(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;var e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some(function(e){return e.inline}))},e.prototype.isSourcesContent=function(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some(function(e){return e.withContent()})},e.prototype.clearAnnotation=function(){if(!1!==this.mapOpts.annotation)for(var e=void 0,t=this.root.nodes.length-1;t>=0;t--)"comment"===(e=this.root.nodes[t]).type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)},e.prototype.setSourcesContent=function(){var e=this,t={};this.root.walk(function(n){if(n.source){var r=n.source.input.from;if(r&&!t[r]){t[r]=!0;var o=e.relative(r);e.map.setSourceContent(o,n.source.input.css)}}})},e.prototype.applyPrevMaps=function(){var e=this.previous(),t=Array.isArray(e),n=0;for(e=t?e:e[Symbol.iterator]();;){var r;if(t){if(n>=e.length)break;r=e[n++]}else{if((n=e.next()).done)break;r=n.value}var a=r,s=this.relative(a.file),l=a.root||i.default.dirname(a.file),u=void 0;!1===this.mapOpts.sourcesContent?(u=new o.default.SourceMapConsumer(a.text)).sourcesContent&&(u.sourcesContent=u.sourcesContent.map(function(){return null})):u=a.consumer(),this.map.applySourceMap(u,s,this.relative(l))}},e.prototype.isAnnotation=function(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some(function(e){return e.annotation}))},e.prototype.toBase64=function(e){return r?r.from&&r.from!==Uint8Array.from?r.from(e).toString("base64"):new r(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))},e.prototype.addAnnotation=function(){var e=void 0;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:this.outputFile()+".map";var t="\n";-1!==this.css.indexOf("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"},e.prototype.outputFile=function(){return this.opts.to?this.relative(this.opts.to):this.opts.from?this.relative(this.opts.from):"to.css"},e.prototype.generateMap=function(){return this.generateString(),this.isSourcesContent()&&this.setSourcesContent(),this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]},e.prototype.relative=function(e){if(0===e.indexOf("<"))return e;if(/^\w+:\/\//.test(e))return e;var t=this.opts.to?i.default.dirname(this.opts.to):".";return"string"==typeof this.mapOpts.annotation&&(t=i.default.dirname(i.default.resolve(t,this.mapOpts.annotation))),e=i.default.relative(t,e),"\\"===i.default.sep?e.replace(/\\/g,"/"):e},e.prototype.sourcePath=function(e){return this.mapOpts.from?this.mapOpts.from:this.relative(e.source.input.from)},e.prototype.generateString=function(){var e=this;this.css="",this.map=new o.default.SourceMapGenerator({file:this.outputFile()});var t=1,n=1,r=void 0,i=void 0;this.stringify(this.root,function(o,a,s){e.css+=o,a&&"end"!==s&&(a.source&&a.source.start?e.map.addMapping({source:e.sourcePath(a),generated:{line:t,column:n-1},original:{line:a.source.start.line,column:a.source.start.column-1}}):e.map.addMapping({source:"<no source>",original:{line:1,column:0},generated:{line:t,column:n-1}})),(r=o.match(/\n/g))?(t+=r.length,i=o.lastIndexOf("\n"),n=o.length-i):n+=o.length,a&&"start"!==s&&(a.source&&a.source.end?e.map.addMapping({source:e.sourcePath(a),generated:{line:t,column:n-1},original:{line:a.source.end.line,column:a.source.end.column}}):e.map.addMapping({source:"<no source>",original:{line:1,column:0},generated:{line:t,column:n-1}}))})},e.prototype.generate=function(){if(this.clearAnnotation(),this.isMap())return this.generateMap();var e="";return this.stringify(this.root,function(t){e+=t}),[e]},e}();t.default=s,e.exports=t.default}).call(this,n(193).Buffer)},function(e,t,n){"use strict";t.__esModule=!0;var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=function(e){return e&&e.__esModule?e:{default:e}}(n(1214));var i=function(){function e(t,n,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.processor=t,this.messages=[],this.root=n,this.opts=r,this.css=void 0,this.map=void 0}return e.prototype.toString=function(){return this.css},e.prototype.warn=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);var n=new o.default(e,t);return this.messages.push(n),n},e.prototype.warnings=function(){return this.messages.filter(function(e){return"warning"===e.type})},r(e,[{key:"content",get:function(){return this.css}}]),e}();t.default=i,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var r=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.type="warning",this.text=t,n.node&&n.node.source){var r=n.node.positionBy(n);this.line=r.line,this.column=r.column}for(var o in n)this[o]=n[o]}return e.prototype.toString=function(){return this.node?this.node.error(this.text,{plugin:this.plugin,index:this.index,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text},e}();t.default=r,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var r=u(n(418)),o=u(n(613)),i=u(n(423)),a=u(n(296)),s=u(n(425)),l=u(n(297));function u(e){return e&&e.__esModule?e:{default:e}}var c=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.input=t,this.root=new s.default,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:t,start:{line:1,column:1}}}return e.prototype.createTokenizer=function(){this.tokenizer=(0,o.default)(this.input)},e.prototype.parse=function(){for(var e=void 0;!this.tokenizer.endOfFile();)switch((e=this.tokenizer.nextToken())[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()},e.prototype.comment=function(e){var t=new i.default;this.init(t,e[2],e[3]),t.source.end={line:e[4],column:e[5]};var n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{var r=n.match(/^(\s*)([^]*[^\s])(\s*)$/);t.text=r[2],t.raws.left=r[1],t.raws.right=r[3]}},e.prototype.emptyRule=function(e){var t=new l.default;this.init(t,e[2],e[3]),t.selector="",t.raws.between="",this.current=t},e.prototype.other=function(e){for(var t=!1,n=null,r=!1,o=null,i=[],a=[],s=e;s;){if(n=s[0],a.push(s),"("===n||"["===n)o||(o=s),i.push("("===n?")":"]");else if(0===i.length){if(";"===n){if(r)return void this.decl(a);break}if("{"===n)return void this.rule(a);if("}"===n){this.tokenizer.back(a.pop()),t=!0;break}":"===n&&(r=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(o=null));s=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(o),t&&r){for(;a.length&&("space"===(s=a[a.length-1][0])||"comment"===s);)this.tokenizer.back(a.pop());this.decl(a)}else this.unknownWord(a)},e.prototype.rule=function(e){e.pop();var t=new l.default;this.init(t,e[0][2],e[0][3]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t},e.prototype.decl=function(e){var t=new r.default;this.init(t);var n=e[e.length-1];for(";"===n[0]&&(this.semicolon=!0,e.pop()),n[4]?t.source.end={line:n[4],column:n[5]}:t.source.end={line:n[2],column:n[3]};"word"!==e[0][0];)1===e.length&&this.unknownWord(e),t.raws.before+=e.shift()[1];for(t.source.start={line:e[0][2],column:e[0][3]},t.prop="";e.length;){var o=e[0][0];if(":"===o||"space"===o||"comment"===o)break;t.prop+=e.shift()[1]}t.raws.between="";for(var i=void 0;e.length;){if(":"===(i=e.shift())[0]){t.raws.between+=i[1];break}t.raws.between+=i[1]}"_"!==t.prop[0]&&"*"!==t.prop[0]||(t.raws.before+=t.prop[0],t.prop=t.prop.slice(1)),t.raws.between+=this.spacesAndCommentsFromStart(e),this.precheckMissedSemicolon(e);for(var a=e.length-1;a>0;a--){if("!important"===(i=e[a])[1].toLowerCase()){t.important=!0;var s=this.stringFrom(e,a);" !important"!==(s=this.spacesFromEnd(e)+s)&&(t.raws.important=s);break}if("important"===i[1].toLowerCase()){for(var l=e.slice(0),u="",c=a;c>0;c--){var f=l[c][0];if(0===u.trim().indexOf("!")&&"space"!==f)break;u=l.pop()[1]+u}0===u.trim().indexOf("!")&&(t.important=!0,t.raws.important=u,e=l)}if("space"!==i[0]&&"comment"!==i[0])break}this.raw(t,"value",e),-1!==t.value.indexOf(":")&&this.checkMissedSemicolon(e)},e.prototype.atrule=function(e){var t=new a.default;t.name=e[1].slice(1),""===t.name&&this.unnamedAtrule(t,e),this.init(t,e[2],e[3]);for(var n=void 0,r=void 0,o=!1,i=!1,s=[];!this.tokenizer.endOfFile();){if(";"===(e=this.tokenizer.nextToken())[0]){t.source.end={line:e[2],column:e[3]},this.semicolon=!0;break}if("{"===e[0]){i=!0;break}if("}"===e[0]){if(s.length>0){for(n=s[r=s.length-1];n&&"space"===n[0];)n=s[--r];n&&(t.source.end={line:n[4],column:n[5]})}this.end(e);break}if(s.push(e),this.tokenizer.endOfFile()){o=!0;break}}t.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(t.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(t,"params",s),o&&(e=s[s.length-1],t.source.end={line:e[4],column:e[5]},this.spaces=t.raws.between,t.raws.between="")):(t.raws.afterName="",t.params=""),i&&(t.nodes=[],this.current=t)},e.prototype.end=function(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end={line:e[2],column:e[3]},this.current=this.current.parent):this.unexpectedClose(e)},e.prototype.endFile=function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces},e.prototype.freeSemicolon=function(e){if(this.spaces+=e[1],this.current.nodes){var t=this.current.nodes[this.current.nodes.length-1];t&&"rule"===t.type&&!t.raws.ownSemicolon&&(t.raws.ownSemicolon=this.spaces,this.spaces="")}},e.prototype.init=function(e,t,n){this.current.push(e),e.source={start:{line:t,column:n},input:this.input},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)},e.prototype.raw=function(e,t,n){for(var r=void 0,o=void 0,i=n.length,a="",s=!0,l=void 0,u=void 0,c=/^([.|#])?([\w])+/i,f=0;f<i;f+=1)"comment"!==(o=(r=n[f])[0])||"rule"!==e.type?"comment"===o||"space"===o&&f===i-1?s=!1:a+=r[1]:(u=n[f-1],l=n[f+1],"space"!==u[0]&&"space"!==l[0]&&c.test(u[1])&&c.test(l[1])?a+=r[1]:s=!1);if(!s){var d=n.reduce(function(e,t){return e+t[1]},"");e.raws[t]={value:a,raw:d}}e[t]=a},e.prototype.spacesAndCommentsFromEnd=function(e){for(var t=void 0,n="";e.length&&("space"===(t=e[e.length-1][0])||"comment"===t);)n=e.pop()[1]+n;return n},e.prototype.spacesAndCommentsFromStart=function(e){for(var t=void 0,n="";e.length&&("space"===(t=e[0][0])||"comment"===t);)n+=e.shift()[1];return n},e.prototype.spacesFromEnd=function(e){for(var t="";e.length&&"space"===e[e.length-1][0];)t=e.pop()[1]+t;return t},e.prototype.stringFrom=function(e,t){for(var n="",r=t;r<e.length;r++)n+=e[r][1];return e.splice(t,e.length-t),n},e.prototype.colon=function(e){for(var t=0,n=void 0,r=void 0,o=void 0,i=0;i<e.length;i++){if("("===(r=(n=e[i])[0]))t+=1;else if(")"===r)t-=1;else if(0===t&&":"===r){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(n)}o=n}return!1},e.prototype.unclosedBracket=function(e){throw this.input.error("Unclosed bracket",e[2],e[3])},e.prototype.unknownWord=function(e){throw this.input.error("Unknown word",e[0][2],e[0][3])},e.prototype.unexpectedClose=function(e){throw this.input.error("Unexpected }",e[2],e[3])},e.prototype.unclosedBlock=function(){var e=this.current.source.start;throw this.input.error("Unclosed block",e.line,e.column)},e.prototype.doubleColon=function(e){throw this.input.error("Double colon",e[2],e[3])},e.prototype.unnamedAtrule=function(e,t){throw this.input.error("At-rule without name",t[2],t[3])},e.prototype.precheckMissedSemicolon=function(e){},e.prototype.checkMissedSemicolon=function(e){var t=this.colon(e);if(!1!==t){for(var n=0,r=void 0,o=t-1;o>=0&&("space"===(r=e[o])[0]||2!==(n+=1));o--);throw this.input.error("Missed semicolon",r[2],r[3])}},e}();t.default=c,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;t.default={prefix:function(e){var t=e.match(/^(-\w+-)/);return t?t[0]:""},unprefixed:function(e){return e.replace(/^-\w+-/,"")}},e.exports=t.default},function(e,t,n){"use strict";var r=n(2),o=n(0),i=n(234);e.exports=o.createClass({displayName:"VectorCustomServerDialog",statics:{replaces:"CustomServerDialog"},render:function(){return o.createElement("div",{className:"mx_ErrorDialog"},o.createElement("div",{className:"mx_Dialog_title"},(0,r._t)("Custom Server Options")),o.createElement("div",{className:"mx_Dialog_content"},o.createElement("span",{dangerouslySetInnerHTML:{__html:i((0,r._t)("You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself."))}})),o.createElement("div",{className:"mx_Dialog_buttons"},o.createElement("button",{onClick:this.props.onFinished,autoFocus:!0},(0,r._t)("Dismiss"))))}})},function(e,t,n){"use strict";var r=n(2),o=function(e){return e&&e.__esModule?e:{default:e}}(n(22));var i=n(0);e.exports=i.createClass({displayName:"VectorLoginFooter",statics:{replaces:"LoginFooter"},render:function(){return"status"===o.default.getValue("theme")?i.createElement("div",null):i.createElement("div",{className:"mx_Login_links"},i.createElement("a",{href:"https://medium.com/@RiotChat"},"blog"),"  ·  ",i.createElement("a",{href:"https://twitter.com/@RiotChat"},"twitter"),"  ·  ",i.createElement("a",{href:"https://github.com/vector-im/riot-web"},"github"),"  ·  ",i.createElement("a",{href:"https://matrix.org"},(0,r._t)("powered by Matrix")))}})},function(e,t,n){"use strict";var r=i(n(0)),o=i(n(1));function i(e){return e&&e.__esModule?e:{default:e}}var a="themes/riot/img/logos/riot-im-logo-"+[1,2,3,4,5][Math.floor(5*Math.random())]+".svg";e.exports=r.default.createClass({displayName:"VectorLoginHeader",statics:{replaces:"LoginHeader"},propTypes:{icon:o.default.string},render:function(){return r.default.createElement("div",{className:"mx_Login_header"},r.default.createElement("div",{className:"mx_Login_logo"},r.default.createElement("img",{src:this.props.icon||a,alt:"Riot"})))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.components=void 0;var r=nr(n(1221)),o=nr(n(1222)),i=nr(n(176)),a=nr(n(1225)),s=nr(n(1226)),l=nr(n(1227)),u=nr(n(600)),c=nr(n(1451)),f=nr(n(1452)),d=nr(n(1453)),p=nr(n(1524)),m=nr(n(1525)),h=nr(n(1537)),_=nr(n(1538)),g=nr(n(1539)),v=nr(n(1540)),y=nr(n(1541)),b=nr(n(1548)),E=nr(n(1550)),C=nr(n(1551)),S=nr(n(1555)),D=nr(n(1556)),w=nr(n(1557)),T=nr(n(1559)),x=nr(n(1560)),R=nr(n(1561)),k=nr(n(1563)),N=nr(n(1564)),I=nr(n(1566)),O=nr(n(1567)),A=nr(n(1569)),M=nr(n(1570)),P=nr(n(1571)),L=nr(n(1572)),F=nr(n(311)),U=nr(n(1573)),j=nr(n(1574)),B=nr(n(1575)),G=nr(n(1576)),q=nr(n(1577)),V=nr(n(1578)),H=nr(n(1579)),Y=nr(n(1580)),z=nr(n(1581)),W=nr(n(1582)),K=nr(n(1583)),$=nr(n(1584)),Q=nr(n(1588)),X=nr(n(1589)),J=nr(n(1590)),Z=nr(n(1591)),ee=nr(n(1592)),te=nr(n(1593)),ne=nr(n(1594)),re=nr(n(1595)),oe=nr(n(1596)),ie=nr(n(1597)),ae=nr(n(1598)),se=nr(n(1599)),le=nr(n(1600)),ue=nr(n(1601)),ce=nr(n(1602)),fe=nr(n(456)),de=nr(n(1603)),pe=nr(n(1604)),me=nr(n(1605)),he=nr(n(1606)),_e=nr(n(1607)),ge=nr(n(1608)),ve=nr(n(1616)),ye=nr(n(1617)),be=nr(n(1619)),Ee=nr(n(27)),Ce=nr(n(1620)),Se=nr(n(1621)),De=nr(n(1622)),we=nr(n(674)),Te=nr(n(457)),xe=nr(n(676)),Re=nr(n(1628)),ke=nr(n(1629)),Ne=nr(n(1630)),Ie=nr(n(1631)),Oe=nr(n(1632)),Ae=nr(n(1633)),Me=nr(n(1634)),Pe=nr(n(1635)),Le=nr(n(1636)),Fe=nr(n(1637)),Ue=nr(n(679)),je=nr(n(1638)),Be=nr(n(1639)),Ge=nr(n(1640)),qe=nr(n(1641)),Ve=nr(n(1642)),He=nr(n(1643)),Ye=nr(n(680)),ze=nr(n(1644)),We=nr(n(677)),Ke=nr(n(1645)),$e=nr(n(1647)),Qe=nr(n(1648)),Xe=nr(n(1649)),Je=nr(n(1650)),Ze=nr(n(241)),et=nr(n(1651)),tt=nr(n(1652)),nt=nr(n(1653)),rt=nr(n(1654)),ot=nr(n(1655)),it=nr(n(455)),at=nr(n(678)),st=nr(n(459)),lt=nr(n(675)),ut=nr(n(1656)),ct=nr(n(1657)),ft=nr(n(1658)),dt=nr(n(1659)),pt=nr(n(1660)),mt=nr(n(1661)),ht=nr(n(1662)),_t=nr(n(1663)),gt=nr(n(1664)),vt=nr(n(1665)),yt=nr(n(1666)),bt=nr(n(1667)),Et=nr(n(1668)),Ct=nr(n(1669)),St=nr(n(1670)),Dt=nr(n(1671)),wt=nr(n(1672)),Tt=nr(n(1673)),xt=nr(n(1674)),Rt=nr(n(1675)),kt=nr(n(1676)),Nt=nr(n(1677)),It=nr(n(1678)),Ot=nr(n(637)),At=nr(n(1679)),Mt=nr(n(1680)),Pt=nr(n(1681)),Lt=nr(n(1682)),Ft=nr(n(666)),Ut=nr(n(1683)),jt=nr(n(1684)),Bt=nr(n(1685)),Gt=nr(n(312)),qt=nr(n(681)),Vt=nr(n(1688)),Ht=nr(n(1689)),Yt=nr(n(682)),zt=nr(n(1690)),Wt=nr(n(1691)),Kt=nr(n(1692)),$t=nr(n(1693)),Qt=nr(n(1694)),Xt=nr(n(1696)),Jt=nr(n(1697)),Zt=nr(n(1698)),en=nr(n(1699)),tn=nr(n(1700)),nn=nr(n(1721)),rn=nr(n(692)),on=nr(n(693)),an=nr(n(1762)),sn=nr(n(1763)),ln=nr(n(1765)),un=nr(n(1766)),cn=nr(n(1767)),fn=nr(n(1768)),dn=nr(n(1770)),pn=nr(n(1771)),mn=nr(n(1772)),hn=nr(n(1773)),_n=nr(n(1774)),gn=nr(n(1775)),vn=nr(n(717)),yn=nr(n(1839)),bn=nr(n(1841)),En=nr(n(1842)),Cn=nr(n(716)),Sn=nr(n(1845)),Dn=nr(n(718)),wn=nr(n(1846)),Tn=nr(n(1847)),xn=nr(n(1848)),Rn=nr(n(1849)),kn=nr(n(1850)),Nn=nr(n(1851)),In=nr(n(706)),On=nr(n(1852)),An=nr(n(1853)),Mn=nr(n(1854)),Pn=nr(n(1855)),Ln=nr(n(1856)),Fn=nr(n(1857)),Un=nr(n(719)),jn=nr(n(708)),Bn=nr(n(1858)),Gn=nr(n(1859)),qn=nr(n(1860)),Vn=nr(n(1861)),Hn=nr(n(1862)),Yn=nr(n(1863)),zn=nr(n(1864)),Wn=nr(n(1865)),Kn=nr(n(1866)),$n=nr(n(1867)),Qn=nr(n(1868)),Xn=nr(n(1872)),Jn=nr(n(1873)),Zn=nr(n(1874)),er=nr(n(1875)),tr=nr(n(1876));function nr(e){return e&&e.__esModule?e:{default:e}}var rr={};r.default&&(rr["structures.BottomLeftMenu"]=r.default),o.default&&(rr["structures.CompatibilityPage"]=o.default),i.default&&(rr["structures.ContextualMenu"]=i.default),a.default&&(rr["structures.CreateRoom"]=a.default),s.default&&(rr["structures.FilePanel"]=s.default),l.default&&(rr["structures.GroupView"]=l.default),u.default&&(rr["structures.HomePage"]=u.default),c.default&&(rr["structures.InteractiveAuth"]=c.default),f.default&&(rr["structures.LeftPanel"]=f.default),d.default&&(rr["structures.LoggedInView"]=d.default),p.default&&(rr["structures.LoginBox"]=p.default),m.default&&(rr["structures.MatrixChat"]=m.default),h.default&&(rr["structures.MessagePanel"]=h.default),_.default&&(rr["structures.MyGroups"]=_.default),g.default&&(rr["structures.NotificationPanel"]=g.default),v.default&&(rr["structures.RightPanel"]=v.default),y.default&&(rr["structures.RoomDirectory"]=y.default),b.default&&(rr["structures.RoomStatusBar"]=b.default),E.default&&(rr["structures.RoomSubList"]=E.default),C.default&&(rr["structures.RoomView"]=C.default),S.default&&(rr["structures.ScrollPanel"]=S.default),D.default&&(rr["structures.SearchBox"]=D.default),w.default&&(rr["structures.TagPanel"]=w.default),T.default&&(rr["structures.TimelinePanel"]=T.default),x.default&&(rr["structures.UploadBar"]=x.default),R.default&&(rr["structures.UserSettings"]=R.default),k.default&&(rr["structures.ViewSource"]=k.default),N.default&&(rr["structures.login.ForgotPassword"]=N.default),I.default&&(rr["structures.login.LanguageSelector"]=I.default),O.default&&(rr["structures.login.Login"]=O.default),A.default&&(rr["structures.login.PostRegistration"]=A.default),M.default&&(rr["structures.login.Registration"]=M.default),P.default&&(rr["views.avatars.BaseAvatar"]=P.default),L.default&&(rr["views.avatars.GroupAvatar"]=L.default),F.default&&(rr["views.avatars.MemberAvatar"]=F.default),U.default&&(rr["views.avatars.RoomAvatar"]=U.default),j.default&&(rr["views.context_menus.GenericElementContextMenu"]=j.default),B.default&&(rr["views.context_menus.GenericTextContextMenu"]=B.default),G.default&&(rr["views.context_menus.GroupInviteTileContextMenu"]=G.default),q.default&&(rr["views.context_menus.MessageContextMenu"]=q.default),V.default&&(rr["views.context_menus.RoomTileContextMenu"]=V.default),H.default&&(rr["views.context_menus.TagTileContextMenu"]=H.default),Y.default&&(rr["views.create_room.CreateRoomButton"]=Y.default),z.default&&(rr["views.create_room.Presets"]=z.default),W.default&&(rr["views.create_room.RoomAlias"]=W.default),K.default&&(rr["views.dialogs.AddressPickerDialog"]=K.default),$.default&&(rr["views.dialogs.BaseDialog"]=$.default),Q.default&&(rr["views.dialogs.BugReportDialog"]=Q.default),X.default&&(rr["views.dialogs.ChangelogDialog"]=X.default),J.default&&(rr["views.dialogs.ChatCreateOrReuseDialog"]=J.default),Z.default&&(rr["views.dialogs.ConfirmRedactDialog"]=Z.default),ee.default&&(rr["views.dialogs.ConfirmUserActionDialog"]=ee.default),te.default&&(rr["views.dialogs.CreateGroupDialog"]=te.default),ne.default&&(rr["views.dialogs.CreateRoomDialog"]=ne.default),re.default&&(rr["views.dialogs.DeactivateAccountDialog"]=re.default),oe.default&&(rr["views.dialogs.DeviceVerifyDialog"]=oe.default),ie.default&&(rr["views.dialogs.DevtoolsDialog"]=ie.default),ae.default&&(rr["views.dialogs.ErrorDialog"]=ae.default),se.default&&(rr["views.dialogs.InteractiveAuthDialog"]=se.default),le.default&&(rr["views.dialogs.KeyShareDialog"]=le.default),ue.default&&(rr["views.dialogs.LazyLoadingDisabledDialog"]=ue.default),ce.default&&(rr["views.dialogs.LazyLoadingResyncDialog"]=ce.default),fe.default&&(rr["views.dialogs.QuestionDialog"]=fe.default),de.default&&(rr["views.dialogs.RoomUpgradeDialog"]=de.default),pe.default&&(rr["views.dialogs.SessionRestoreErrorDialog"]=pe.default),me.default&&(rr["views.dialogs.SetEmailDialog"]=me.default),he.default&&(rr["views.dialogs.SetMxIdDialog"]=he.default),_e.default&&(rr["views.dialogs.SetPasswordDialog"]=_e.default),ge.default&&(rr["views.dialogs.ShareDialog"]=ge.default),ve.default&&(rr["views.dialogs.TextInputDialog"]=ve.default),ye.default&&(rr["views.dialogs.UnknownDeviceDialog"]=ye.default),be.default&&(rr["views.directory.NetworkDropdown"]=be.default),Ee.default&&(rr["views.elements.AccessibleButton"]=Ee.default),Ce.default&&(rr["views.elements.ActionButton"]=Ce.default),Se.default&&(rr["views.elements.AddressSelector"]=Se.default),De.default&&(rr["views.elements.AddressTile"]=De.default),we.default&&(rr["views.elements.AppPermission"]=we.default),Te.default&&(rr["views.elements.AppTile"]=Te.default),xe.default&&(rr["views.elements.AppWarning"]=xe.default),Re.default&&(rr["views.elements.CreateRoomButton"]=Re.default),ke.default&&(rr["views.elements.DNDTagTile"]=ke.default),Ne.default&&(rr["views.elements.DeviceVerifyButtons"]=Ne.default),Ie.default&&(rr["views.elements.DialogButtons"]=Ie.default),Oe.default&&(rr["views.elements.DirectorySearchBox"]=Oe.default),Ae.default&&(rr["views.elements.Dropdown"]=Ae.default),Me.default&&(rr["views.elements.EditableItemList"]=Me.default),Pe.default&&(rr["views.elements.EditableText"]=Pe.default),Le.default&&(rr["views.elements.EditableTextContainer"]=Le.default),Fe.default&&(rr["views.elements.EmojiText"]=Fe.default),Ue.default&&(rr["views.elements.Flair"]=Ue.default),je.default&&(rr["views.elements.GeminiScrollbarWrapper"]=je.default),Be.default&&(rr["views.elements.GroupsButton"]=Be.default),Ge.default&&(rr["views.elements.HomeButton"]=Ge.default),qe.default&&(rr["views.elements.ImageView"]=qe.default),Ve.default&&(rr["views.elements.InlineSpinner"]=Ve.default),He.default&&(rr["views.elements.LanguageDropdown"]=He.default),Ye.default&&(rr["views.elements.ManageIntegsButton"]=Ye.default),ze.default&&(rr["views.elements.MemberEventListSummary"]=ze.default),We.default&&(rr["views.elements.MessageSpinner"]=We.default),Ke.default&&(rr["views.elements.PersistedElement"]=Ke.default),$e.default&&(rr["views.elements.PersistentApp"]=$e.default),Qe.default&&(rr["views.elements.Pill"]=Qe.default),Xe.default&&(rr["views.elements.PowerSelector"]=Xe.default),Je.default&&(rr["views.elements.ProgressBar"]=Je.default),Ze.default&&(rr["views.elements.ReplyThread"]=Ze.default),et.default&&(rr["views.elements.RoomDirectoryButton"]=et.default),tt.default&&(rr["views.elements.SettingsButton"]=tt.default),nt.default&&(rr["views.elements.SettingsFlag"]=nt.default),rt.default&&(rr["views.elements.Spinner"]=rt.default),ot.default&&(rr["views.elements.StartChatButton"]=ot.default),it.default&&(rr["views.elements.SyntaxHighlight"]=it.default),at.default&&(rr["views.elements.TagTile"]=at.default),st.default&&(rr["views.elements.TintableSvg"]=st.default),lt.default&&(rr["views.elements.TintableSvgButton"]=lt.default),ut.default&&(rr["views.elements.ToolTipButton"]=ut.default),ct.default&&(rr["views.elements.TruncatedList"]=ct.default),ft.default&&(rr["views.elements.UserSelector"]=ft.default),dt.default&&(rr["views.globals.CookieBar"]=dt.default),pt.default&&(rr["views.globals.MatrixToolbar"]=pt.default),mt.default&&(rr["views.globals.NewVersionBar"]=mt.default),ht.default&&(rr["views.globals.PasswordNagBar"]=ht.default),_t.default&&(rr["views.globals.ServerLimitBar"]=_t.default),gt.default&&(rr["views.globals.UpdateCheckBar"]=gt.default),vt.default&&(rr["views.groups.GroupInviteTile"]=vt.default),yt.default&&(rr["views.groups.GroupMemberInfo"]=yt.default),bt.default&&(rr["views.groups.GroupMemberList"]=bt.default),Et.default&&(rr["views.groups.GroupMemberTile"]=Et.default),Ct.default&&(rr["views.groups.GroupPublicityToggle"]=Ct.default),St.default&&(rr["views.groups.GroupRoomInfo"]=St.default),Dt.default&&(rr["views.groups.GroupRoomList"]=Dt.default),wt.default&&(rr["views.groups.GroupRoomTile"]=wt.default),Tt.default&&(rr["views.groups.GroupTile"]=Tt.default),xt.default&&(rr["views.groups.GroupUserSettings"]=xt.default),Rt.default&&(rr["views.login.CaptchaForm"]=Rt.default),kt.default&&(rr["views.login.CasLogin"]=kt.default),Nt.default&&(rr["views.login.CountryDropdown"]=Nt.default),It.default&&(rr["views.login.CustomServerDialog"]=It.default),Ot.default&&(rr["views.login.InteractiveAuthEntryComponents"]=Ot.default),At.default&&(rr["views.login.LoginFooter"]=At.default),Mt.default&&(rr["views.login.LoginHeader"]=Mt.default),Pt.default&&(rr["views.login.LoginPage"]=Pt.default),Lt.default&&(rr["views.login.PasswordLogin"]=Lt.default),Ft.default&&(rr["views.login.RegistrationForm"]=Ft.default),Ut.default&&(rr["views.login.ServerConfig"]=Ut.default),jt.default&&(rr["views.messages.DateSeparator"]=jt.default),Bt.default&&(rr["views.messages.MAudioBody"]=Bt.default),Gt.default&&(rr["views.messages.MFileBody"]=Gt.default),qt.default&&(rr["views.messages.MImageBody"]=qt.default),Vt.default&&(rr["views.messages.MStickerBody"]=Vt.default),Ht.default&&(rr["views.messages.MVideoBody"]=Ht.default),Yt.default&&(rr["views.messages.MessageEvent"]=Yt.default),zt.default&&(rr["views.messages.MessageTimestamp"]=zt.default),Wt.default&&(rr["views.messages.RoomAvatarEvent"]=Wt.default),Kt.default&&(rr["views.messages.RoomCreate"]=Kt.default),$t.default&&(rr["views.messages.SenderProfile"]=$t.default),Qt.default&&(rr["views.messages.TextualBody"]=Qt.default),Xt.default&&(rr["views.messages.TextualEvent"]=Xt.default),Jt.default&&(rr["views.messages.UnknownBody"]=Jt.default),Zt.default&&(rr["views.room_settings.AliasSettings"]=Zt.default),en.default&&(rr["views.room_settings.ColorSettings"]=en.default),tn.default&&(rr["views.room_settings.RelatedGroupSettings"]=tn.default),nn.default&&(rr["views.room_settings.UrlPreviewSettings"]=nn.default),rn.default&&(rr["views.rooms.AppsDrawer"]=rn.default),on.default&&(rr["views.rooms.Autocomplete"]=on.default),an.default&&(rr["views.rooms.AuxPanel"]=an.default),sn.default&&(rr["views.rooms.DNDRoomTile"]=sn.default),ln.default&&(rr["views.rooms.EntityTile"]=ln.default),un.default&&(rr["views.rooms.EventTile"]=un.default),cn.default&&(rr["views.rooms.ForwardMessage"]=cn.default),fn.default&&(rr["views.rooms.LinkPreviewWidget"]=fn.default),dn.default&&(rr["views.rooms.MemberDeviceInfo"]=dn.default),pn.default&&(rr["views.rooms.MemberInfo"]=pn.default),mn.default&&(rr["views.rooms.MemberList"]=mn.default),hn.default&&(rr["views.rooms.MemberTile"]=hn.default),_n.default&&(rr["views.rooms.MessageComposer"]=_n.default),gn.default&&(rr["views.rooms.MessageComposerInput"]=gn.default),vn.default&&(rr["views.rooms.PinnedEventTile"]=vn.default),yn.default&&(rr["views.rooms.PinnedEventsPanel"]=yn.default),bn.default&&(rr["views.rooms.PresenceLabel"]=bn.default),En.default&&(rr["views.rooms.ReadReceiptMarker"]=En.default),Cn.default&&(rr["views.rooms.ReplyPreview"]=Cn.default),Sn.default&&(rr["views.rooms.RoomDetailList"]=Sn.default),Dn.default&&(rr["views.rooms.RoomDetailRow"]=Dn.default),wn.default&&(rr["views.rooms.RoomDropTarget"]=wn.default),Tn.default&&(rr["views.rooms.RoomHeader"]=Tn.default),xn.default&&(rr["views.rooms.RoomList"]=xn.default),Rn.default&&(rr["views.rooms.RoomNameEditor"]=Rn.default),kn.default&&(rr["views.rooms.RoomPreviewBar"]=kn.default),Nn.default&&(rr["views.rooms.RoomSettings"]=Nn.default),In.default&&(rr["views.rooms.RoomTile"]=In.default),On.default&&(rr["views.rooms.RoomTooltip"]=On.default),An.default&&(rr["views.rooms.RoomTopicEditor"]=An.default),Mn.default&&(rr["views.rooms.RoomUpgradeWarningBar"]=Mn.default),Pn.default&&(rr["views.rooms.SearchBar"]=Pn.default),Ln.default&&(rr["views.rooms.SearchResultTile"]=Ln.default),Fn.default&&(rr["views.rooms.SearchableEntityList"]=Fn.default),Un.default&&(rr["views.rooms.SimpleRoomHeader"]=Un.default),jn.default&&(rr["views.rooms.Stickerpicker"]=jn.default),Bn.default&&(rr["views.rooms.TopUnreadMessagesBar"]=Bn.default),Gn.default&&(rr["views.rooms.UserTile"]=Gn.default),qn.default&&(rr["views.settings.AddPhoneNumber"]=qn.default),Vn.default&&(rr["views.settings.ChangeAvatar"]=Vn.default),Hn.default&&(rr["views.settings.ChangeDisplayName"]=Hn.default),Yn.default&&(rr["views.settings.ChangePassword"]=Yn.default),zn.default&&(rr["views.settings.DevicesPanel"]=zn.default),Wn.default&&(rr["views.settings.DevicesPanelEntry"]=Wn.default),Kn.default&&(rr["views.settings.EnableNotificationsButton"]=Kn.default),$n.default&&(rr["views.settings.IntegrationsManager"]=$n.default),Qn.default&&(rr["views.settings.Notifications"]=Qn.default),Xn.default&&(rr["views.voip.CallPreview"]=Xn.default),Jn.default&&(rr["views.voip.CallView"]=Jn.default),Zn.default&&(rr["views.voip.IncomingCallBox"]=Zn.default),er.default&&(rr["views.voip.VideoFeed"]=er.default),tr.default&&(rr["views.voip.VideoView"]=tr.default),t.components=rr},function(e,t,n){"use strict";var r=u(n(0)),o=u(n(41)),i=u(n(3)),a=u(n(10)),s=u(n(239));n(624);var l=u(n(22));function u(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"BottomLeftMenu",propTypes:{collapsed:r.default.PropTypes.bool.isRequired},getInitialState:function(){return{directoryHover:!1,roomsHover:!1,homeHover:!1,peopleHover:!1,settingsHover:!1}},componentWillMount:function(){this._dispatcherRef=a.default.register(this.onAction),this._peopleButton=null,this._directoryButton=null,this._createRoomButton=null,this._lastCallouts={}},componentWillUnmount:function(){a.default.unregister(this._dispatcherRef)},onDirectoryClick:function(){a.default.dispatch({action:"view_room_directory"})},onDirectoryMouseEnter:function(){this.setState({directoryHover:!0})},onDirectoryMouseLeave:function(){this.setState({directoryHover:!1})},onRoomsClick:function(){a.default.dispatch({action:"view_create_room"})},onRoomsMouseEnter:function(){this.setState({roomsHover:!0})},onRoomsMouseLeave:function(){this.setState({roomsHover:!1})},onHomeClick:function(){a.default.dispatch({action:"view_home_page"})},onHomeMouseEnter:function(){this.setState({homeHover:!0})},onHomeMouseLeave:function(){this.setState({homeHover:!1})},onPeopleClick:function(){a.default.dispatch({action:"view_create_chat"})},onPeopleMouseEnter:function(){this.setState({peopleHover:!0})},onPeopleMouseLeave:function(){this.setState({peopleHover:!1})},onSettingsClick:function(){a.default.dispatch({action:"view_user_settings"})},onSettingsMouseEnter:function(){this.setState({settingsHover:!0})},onSettingsMouseLeave:function(){this.setState({settingsHover:!1})},onAction:function(e){var t=void 0;switch(e.action){case"callout_start_chat":t=this._peopleButton;break;case"callout_room_directory":t=this._directoryButton;break;case"callout_create_room":t=this._createRoomButton}if(t){var n=this._lastCallouts[e.action],r=Date.now();(void 0==n||n<r-1e3)&&(this._lastCallouts[e.action]=r,(0,s.default)(o.default.findDOMNode(t),"callout.bounce",1e3))}},getLabel:function(e,t){if(t){var n=i.default.getComponent("rooms.RoomTooltip");return r.default.createElement(n,{className:"mx_BottomLeftMenu_tooltip",label:e})}},_collectPeopleButton:function(e){this._peopleButton=e},_collectDirectoryButton:function(e){this._directoryButton=e},_collectCreateRoomButton:function(e){this._createRoomButton=e},render:function(){var e=i.default.getComponent("elements.HomeButton"),t=i.default.getComponent("elements.StartChatButton"),n=i.default.getComponent("elements.RoomDirectoryButton"),o=i.default.getComponent("elements.CreateRoomButton"),a=i.default.getComponent("elements.SettingsButton"),s=i.default.getComponent("elements.GroupsButton"),u=l.default.getValue("TagPanel.disableTagPanel")?r.default.createElement(s,{tooltip:!0}):null;return r.default.createElement("div",{className:"mx_BottomLeftMenu"},r.default.createElement("div",{className:"mx_BottomLeftMenu_options"},r.default.createElement(e,{tooltip:!0}),r.default.createElement("div",{ref:this._collectPeopleButton},r.default.createElement(t,{tooltip:!0})),r.default.createElement("div",{ref:this._collectDirectoryButton},r.default.createElement(n,{tooltip:!0})),r.default.createElement("div",{ref:this._collectCreateRoomButton},r.default.createElement(o,{tooltip:!0})),u,r.default.createElement("span",{className:"mx_BottomLeftMenu_settings"},r.default.createElement(a,{tooltip:!0}))))}})},function(e,t,n){"use strict";var r=n(2),o=n(0);e.exports=o.createClass({displayName:"CompatibilityPage",propTypes:{onAccept:o.PropTypes.func},getDefaultProps:function(){return{onAccept:function(){}}},onAccept:function(){this.props.onAccept()},render:function(){return o.createElement("div",{className:"mx_CompatibilityPage"},o.createElement("div",{className:"mx_CompatibilityPage_box"},o.createElement("p",null,(0,r._t)("Sorry, your browser is <b>not</b> able to run Riot.",{},{b:function(e){return o.createElement("b",null,e)}})," "),o.createElement("p",null,(0,r._t)("Riot uses many advanced browser features, some of which are not available or experimental in your current browser.")),o.createElement("p",null,(0,r._t)("Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.",{},{chromeLink:function(e){return o.createElement("a",{href:"https://www.google.com/chrome"},e)},firefoxLink:function(e){return o.createElement("a",{href:"https://getfirefox.com"},e)}}),(0,r._t)("<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.",{},{safariLink:function(e){return o.createElement("a",{href:"http://apple.com/safari"},e)},operaLink:function(e){return o.createElement("a",{href:"http://opera.com"},e)}})),o.createElement("p",null,(0,r._t)("With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!")),o.createElement("button",{onClick:this.onAccept},(0,r._t)("I understand the risks and wish to continue"))))}})},function(e,t,n){n(1224),e.exports=n(18).setImmediate},function(e,t,n){var r=n(26),o=n(404);r(r.G+r.B,{setImmediate:o.set,clearImmediate:o.clear})},function(e,t,n){"use strict";var r=l(n(0)),o=l(n(1)),i=n(2),a=l(n(3)),s=l(n(8));function l(e){return e&&e.__esModule?e:{default:e}}var u="private_chat",c="public_chat",f="custom";e.exports=r.default.createClass({displayName:"CreateRoom",propTypes:{onRoomCreated:o.default.func,collapsedRhs:o.default.bool},phases:{CONFIG:"CONFIG",CREATING:"CREATING",CREATED:"CREATED",ERROR:"ERROR"},getDefaultProps:function(){return{onRoomCreated:function(){}}},getInitialState:function(){return{phase:this.phases.CONFIG,error_string:"",is_private:!0,share_history:!1,default_preset:u,topic:"",room_name:"",invited_users:[]}},onCreateRoom:function(){var e={};this.state.room_name&&(e.name=this.state.room_name),this.state.topic&&(e.topic=this.state.topic),this.state.preset&&(this.state.preset!=f?e.preset=this.state.preset:e.initial_state=[{type:"m.room.join_rules",content:{join_rule:this.state.is_private?"invite":"public"}},{type:"m.room.history_visibility",content:{history_visibility:this.state.share_history?"shared":"invited"}}]),e.invite=this.state.invited_users;var t=this.getAliasLocalpart();t&&(e.room_alias_name=t);var n=s.default.get();if(n){var r=n.createRoom(e);this.state.encrypt,this.setState({phase:this.phases.CREATING});var o=this;r.then(function(e){o.setState({phase:o.phases.CREATED}),o.props.onRoomCreated(e.room_id)},function(e){o.setState({phase:o.phases.ERROR,error_string:e.toString()})})}else console.error("Cannot create room: No matrix client.")},getPreset:function(){return this.refs.presets.getPreset()},getName:function(){return this.refs.name_textbox.getName()},getTopic:function(){return this.refs.topic.getTopic()},getAliasLocalpart:function(){return this.refs.alias.getAliasLocalpart()},getInvitedUsers:function(){return this.refs.user_selector.getUserIds()},onPresetChanged:function(e){switch(e){case u:this.setState({preset:e,is_private:!0,share_history:!1});break;case c:this.setState({preset:e,is_private:!1,share_history:!0});break;case f:this.setState({preset:e})}},onPrivateChanged:function(e){this.setState({preset:f,is_private:e.target.checked})},onShareHistoryChanged:function(e){this.setState({preset:f,share_history:e.target.checked})},onTopicChange:function(e){this.setState({topic:e.target.value})},onNameChange:function(e){this.setState({room_name:e.target.value})},onInviteChanged:function(e){this.setState({invited_users:e})},onAliasChanged:function(e){this.setState({alias:e})},onEncryptChanged:function(e){this.setState({encrypt:e.target.checked})},render:function(){var e=this.state.phase;if(e==this.phases.CREATING){var t=a.default.getComponent("elements.Spinner");return r.default.createElement(t,null)}var n="";e==this.phases.ERROR&&(n=r.default.createElement("div",{className:"mx_Error"},(0,i._t)("An error occurred: %(error_string)s",{error_string:this.state.error_string})));var o=a.default.getComponent("create_room.CreateRoomButton"),l=a.default.getComponent("create_room.RoomAlias"),u=a.default.getComponent("create_room.Presets"),c=a.default.getComponent("elements.UserSelector"),f=a.default.getComponent("rooms.SimpleRoomHeader"),d=s.default.get().getDomain();return r.default.createElement("div",{className:"mx_CreateRoom"},r.default.createElement(f,{title:(0,i._t)("Create Room"),collapsedRhs:this.props.collapsedRhs}),r.default.createElement("div",{className:"mx_CreateRoom_body"},r.default.createElement("input",{type:"text",ref:"room_name",value:this.state.room_name,onChange:this.onNameChange,placeholder:(0,i._t)("Name")})," ",r.default.createElement("br",null),r.default.createElement("textarea",{className:"mx_CreateRoom_description",ref:"topic",value:this.state.topic,onChange:this.onTopicChange,placeholder:(0,i._t)("Topic")})," ",r.default.createElement("br",null),r.default.createElement(l,{ref:"alias",alias:this.state.alias,homeserver:d,onChange:this.onAliasChanged})," ",r.default.createElement("br",null),r.default.createElement(c,{ref:"user_selector",selected_users:this.state.invited_users,onChange:this.onInviteChanged})," ",r.default.createElement("br",null),r.default.createElement(u,{ref:"presets",onChange:this.onPresetChanged,preset:this.state.preset})," ",r.default.createElement("br",null),r.default.createElement("div",null,r.default.createElement("label",null,r.default.createElement("input",{type:"checkbox",ref:"is_private",checked:this.state.is_private,onChange:this.onPrivateChanged}),(0,i._t)("Make this room private"))),r.default.createElement("div",null,r.default.createElement("label",null,r.default.createElement("input",{type:"checkbox",ref:"share_history",checked:this.state.share_history,onChange:this.onShareHistoryChanged}),(0,i._t)("Share message history with new users"))),r.default.createElement("div",{className:"mx_CreateRoom_encrypt"},r.default.createElement("label",null,r.default.createElement("input",{type:"checkbox",ref:"encrypt",checked:this.state.encrypt,onChange:this.onEncryptChanged}),(0,i._t)("Encrypt room"))),r.default.createElement("div",null,r.default.createElement(o,{onCreateRoom:this.onCreateRoom})," ",r.default.createElement("br",null)),n))}})},function(e,t,n){"use strict";var r=u(n(0)),o=u(n(1)),i=u(n(17)),a=u(n(3)),s=u(n(8)),l=n(2);function u(e){return e&&e.__esModule?e:{default:e}}var c=r.default.createClass({displayName:"FilePanel",propTypes:{roomId:o.default.string.isRequired},getInitialState:function(){return{timelineSet:null}},componentWillMount:function(){this.updateTimelineSet(this.props.roomId)},componentWillReceiveProps:function(e){e.roomId!==this.props.roomId&&(this.setState({timelineSet:null}),this.updateTimelineSet(e.roomId))},updateTimelineSet:function(e){var t=this,n=s.default.get(),r=n.getRoom(e);if(this.noRoom=!r,r){var o=new i.default.Filter(n.credentials.userId);o.setDefinition({room:{timeline:{contains_url:!0,types:["m.room.message"]}}}),n.getOrCreateFilter("FILTER_FILES_"+n.credentials.userId,o).then(function(e){o.filterId=e;var n=r.getOrCreateFilteredTimelineSet(o);t.setState({timelineSet:n})},function(e){console.error("Failed to get or create file panel filter",e)})}else console.error("Failed to add filtered timelineSet for FilePanel as no room!")},render:function(){if(s.default.get().isGuest())return r.default.createElement("div",{className:"mx_FilePanel mx_RoomView_messageListWrapper"},r.default.createElement("div",{className:"mx_RoomView_empty"},(0,l._t)("You must <a>register</a> to use this functionality",{},{a:function(e){return r.default.createElement("a",{href:"#/register",key:"sub"},e)}})));if(this.noRoom)return r.default.createElement("div",{className:"mx_FilePanel mx_RoomView_messageListWrapper"},r.default.createElement("div",{className:"mx_RoomView_empty"},(0,l._t)("You must join the room to see its files")));var e=a.default.getComponent("structures.TimelinePanel"),t=a.default.getComponent("elements.Spinner");return this.state.timelineSet?r.default.createElement(e,{key:"filepanel_"+this.props.roomId,className:"mx_FilePanel",manageReadReceipts:!1,manageReadMarkers:!1,timelineSet:this.state.timelineSet,showUrlPreview:!1,tileShape:"file_grid",empty:(0,l._t)("There are no visible files in this room")}):r.default.createElement("div",{className:"mx_FilePanel"},r.default.createElement(t,null))}});e.exports=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=C(n(14)),o=C(n(19)),i=n(9),a=C(i),s=C(n(40)),l=C(n(0)),u=C(n(1)),c=C(n(8)),f=C(n(3)),d=C(n(10)),p=n(240),m=n(2),h=C(n(27)),_=C(n(16)),g=C(n(24)),v=C(n(81)),y=C(n(145)),b=n(629),E=n(79);function C(e){return e&&e.__esModule?e:{default:e}}var S=(0,m._td)("<h1>HTML for your community's page</h1>\n<p>\n Use the long description to introduce new members to the community, or distribute\n some important <a href=\"foo\">links</a>\n</p>\n<p>\n You can even use 'img' tags\n</p>\n"),D=u.default.shape({room_id:u.default.string.isRequired,profile:u.default.shape({name:u.default.string,avatar_url:u.default.string,canonical_alias:u.default.string}).isRequired}),w=u.default.shape({summaryInfo:u.default.shape({user_id:u.default.string.isRequired,role_id:u.default.string,avatar_url:u.default.string,displayname:u.default.string}).isRequired}),T=l.default.createClass({displayName:"CategoryRoomList",props:{rooms:u.default.arrayOf(D).isRequired,category:u.default.shape({profile:u.default.shape({name:u.default.string}).isRequired}),groupId:u.default.string.isRequired,editing:u.default.bool.isRequired},onAddRoomsToSummaryClicked:function(e){var t=this;e.preventDefault();var n=f.default.getComponent("dialogs.AddressPickerDialog");_.default.createTrackedDialog("Add Rooms to Group Summary","",n,{title:(0,m._t)("Add rooms to the community summary"),description:(0,m._t)("Which rooms would you like to add to this summary?"),placeholder:(0,m._t)("Room name or alias"),button:(0,m._t)("Add to summary"),pickerType:"room",validAddressTypes:["mx-room-id"],groupId:this.props.groupId,onFinished:function(e,n){if(e){var r=[];a.default.all(n.map(function(e){return v.default.addRoomToGroupSummary(t.props.groupId,e.address).catch(function(){r.push(e.address)}).reflect()})).then(function(){if(0!==r.length){var e=f.default.getComponent("dialogs.ErrorDialog");_.default.createTrackedDialog("Failed to add the following room to the group summary","",e,{title:(0,m._t)("Failed to add the following rooms to the summary of %(groupId)s:",{groupId:t.props.groupId}),description:r.join(", ")})}})}}})},render:function(){var e=this,t=f.default.getComponent("elements.TintableSvg"),n=this.props.editing?l.default.createElement(h.default,{className:"mx_GroupView_featuredThings_addButton",onClick:this.onAddRoomsToSummaryClicked},l.default.createElement(t,{src:"img/icons-create-room.svg",width:"64",height:"64"}),l.default.createElement("div",{className:"mx_GroupView_featuredThings_addButton_label"},(0,m._t)("Add a Room"))):l.default.createElement("div",null),r=this.props.rooms.map(function(t){return l.default.createElement(x,{key:t.room_id,groupId:e.props.groupId,editing:e.props.editing,summaryInfo:t})}),o=l.default.createElement("div",null);return this.props.category&&this.props.category.profile&&(o=l.default.createElement("div",{className:"mx_GroupView_featuredThings_category"},this.props.category.profile.name)),l.default.createElement("div",{className:"mx_GroupView_featuredThings_container"},o,r,n)}}),x=l.default.createClass({displayName:"FeaturedRoom",props:{summaryInfo:D.isRequired,editing:u.default.bool.isRequired,groupId:u.default.string.isRequired},onClick:function(e){e.preventDefault(),e.stopPropagation(),d.default.dispatch({action:"view_room",room_alias:this.props.summaryInfo.profile.canonical_alias,room_id:this.props.summaryInfo.room_id})},onDeleteClicked:function(e){var t=this;e.preventDefault(),e.stopPropagation(),v.default.removeRoomFromGroupSummary(this.props.groupId,this.props.summaryInfo.room_id).catch(function(e){console.error("Error whilst removing room from group summary",e);var n=t.props.summaryInfo.name||t.props.summaryInfo.canonical_alias||t.props.summaryInfo.room_id,r=f.default.getComponent("dialogs.ErrorDialog");_.default.createTrackedDialog("Failed to remove room from group summary","",r,{title:(0,m._t)("Failed to remove the room from the summary of %(groupId)s",{groupId:t.props.groupId}),description:(0,m._t)("The room '%(roomName)s' could not be removed from the summary.",{roomName:n})})})},render:function(){var e=f.default.getComponent("avatars.RoomAvatar"),t=this.props.summaryInfo.profile.name||this.props.summaryInfo.profile.canonical_alias||(0,m._t)("Unnamed Room"),n={roomId:this.props.summaryInfo.room_id,avatarUrl:this.props.summaryInfo.profile.avatar_url,name:t},r=null;this.props.summaryInfo.profile&&this.props.summaryInfo.profile.canonical_alias&&(r=(0,E.makeGroupPermalink)(this.props.summaryInfo.profile.canonical_alias));var o=null;o=r?l.default.createElement("a",{href:r,onClick:this.onClick},t):l.default.createElement("span",null,t);var i=this.props.editing?l.default.createElement("img",{className:"mx_GroupView_featuredThing_deleteButton",src:"img/cancel-small.svg",width:"14",height:"14",alt:"Delete",onClick:this.onDeleteClicked}):l.default.createElement("div",null);return l.default.createElement(h.default,{className:"mx_GroupView_featuredThing",onClick:this.onClick},l.default.createElement(e,{oobData:n,width:64,height:64}),l.default.createElement("div",{className:"mx_GroupView_featuredThing_name"},o),i)}}),R=l.default.createClass({displayName:"RoleUserList",props:{users:u.default.arrayOf(w).isRequired,role:u.default.shape({profile:u.default.shape({name:u.default.string}).isRequired}),groupId:u.default.string.isRequired,editing:u.default.bool.isRequired},onAddUsersClicked:function(e){var t=this;e.preventDefault();var n=f.default.getComponent("dialogs.AddressPickerDialog");_.default.createTrackedDialog("Add Users to Group Summary","",n,{title:(0,m._t)("Add users to the community summary"),description:(0,m._t)("Who would you like to add to this summary?"),placeholder:(0,m._t)("Name or matrix ID"),button:(0,m._t)("Add to summary"),validAddressTypes:["mx-user-id"],groupId:this.props.groupId,shouldOmitSelf:!1,onFinished:function(e,n){if(e){var r=[];a.default.all(n.map(function(e){return v.default.addUserToGroupSummary(e.address).catch(function(){r.push(e.address)}).reflect()})).then(function(){if(0!==r.length){var e=f.default.getComponent("dialogs.ErrorDialog");_.default.createTrackedDialog("Failed to add the following users to the community summary","",e,{title:(0,m._t)("Failed to add the following users to the summary of %(groupId)s:",{groupId:t.props.groupId}),description:r.join(", ")})}})}}})},render:function(){var e=this,t=f.default.getComponent("elements.TintableSvg"),n=this.props.editing?l.default.createElement(h.default,{className:"mx_GroupView_featuredThings_addButton",onClick:this.onAddUsersClicked},l.default.createElement(t,{src:"img/icons-create-room.svg",width:"64",height:"64"}),l.default.createElement("div",{className:"mx_GroupView_featuredThings_addButton_label"},(0,m._t)("Add a User"))):l.default.createElement("div",null),r=this.props.users.map(function(t){return l.default.createElement(k,{key:t.user_id,summaryInfo:t,editing:e.props.editing,groupId:e.props.groupId})}),o=l.default.createElement("div",null);return this.props.role&&this.props.role.profile&&(o=l.default.createElement("div",{className:"mx_GroupView_featuredThings_category"},this.props.role.profile.name)),l.default.createElement("div",{className:"mx_GroupView_featuredThings_container"},o,r,n)}}),k=l.default.createClass({displayName:"FeaturedUser",props:{summaryInfo:w.isRequired,editing:u.default.bool.isRequired,groupId:u.default.string.isRequired},onClick:function(e){e.preventDefault(),e.stopPropagation(),d.default.dispatch({action:"view_start_chat_or_reuse",user_id:this.props.summaryInfo.user_id,go_home_on_cancel:!1})},onDeleteClicked:function(e){var t=this;e.preventDefault(),e.stopPropagation(),v.default.removeUserFromGroupSummary(this.props.groupId,this.props.summaryInfo.user_id).catch(function(e){console.error("Error whilst removing user from group summary",e);var n=t.props.summaryInfo.displayname||t.props.summaryInfo.user_id,r=f.default.getComponent("dialogs.ErrorDialog");_.default.createTrackedDialog("Failed to remove user from community summary","",r,{title:(0,m._t)("Failed to remove a user from the summary of %(groupId)s",{groupId:t.props.groupId}),description:(0,m._t)("The user '%(displayName)s' could not be removed from the summary.",{displayName:n})})})},render:function(){var e=f.default.getComponent("avatars.BaseAvatar"),t=this.props.summaryInfo.displayname||this.props.summaryInfo.user_id,n=(0,E.makeUserPermalink)(this.props.summaryInfo.user_id),r=l.default.createElement("a",{href:n,onClick:this.onClick},t),o=c.default.get().mxcUrlToHttp(this.props.summaryInfo.avatar_url,64,64),i=this.props.editing?l.default.createElement("img",{className:"mx_GroupView_featuredThing_deleteButton",src:"img/cancel-small.svg",width:"14",height:"14",alt:"Delete",onClick:this.onDeleteClicked}):l.default.createElement("div",null);return l.default.createElement(h.default,{className:"mx_GroupView_featuredThing",onClick:this.onClick},l.default.createElement(e,{name:t,url:o,width:64,height:64}),l.default.createElement("div",{className:"mx_GroupView_featuredThing_name"},r),i)}});t.default=l.default.createClass({displayName:"GroupView",propTypes:{groupId:u.default.string.isRequired,groupIsNew:u.default.bool},childContextTypes:{groupStore:u.default.instanceOf(v.default)},getInitialState:function(){return{summary:null,isGroupPublicised:null,isUserPrivileged:null,groupRooms:null,groupRoomsLoading:null,error:null,editing:!1,saving:!1,uploadingAvatar:!1,avatarChanged:!1,membershipBusy:!1,publicityBusy:!1,inviterProfile:null}},componentWillMount:function(){this._unmounted=!1,this._matrixClient=c.default.get(),this._matrixClient.on("Group.myMembership",this._onGroupMyMembership),this._changeAvatarComponent=null,this._initGroupStore(this.props.groupId,!0),this._dispatcherRef=d.default.register(this._onAction)},componentWillUnmount:function(){this._unmounted=!0,this._matrixClient.removeListener("Group.myMembership",this._onGroupMyMembership),d.default.unregister(this._dispatcherRef)},componentWillReceiveProps:function(e){var t=this;this.props.groupId!=e.groupId&&this.setState({summary:null,error:null},function(){t._initGroupStore(e.groupId)})},_onGroupMyMembership:function(e){this._unmounted||e.groupId!==this.props.groupId||("leave"===e.myMembership&&this._closeSettings(),this.setState({membershipBusy:!1}))},_initGroupStore:function(e,t){var n=this,r=this._matrixClient.getGroup(e);r&&r.inviter&&r.inviter.userId&&this._fetchInviterProfile(r.inviter.userId),v.default.registerListener(e,this.onGroupStoreUpdated.bind(this,t));var o=!1;v.default.on("error",function(t,r){n._unmounted||e!==r||("M_GUEST_ACCESS_FORBIDDEN"!==t.errcode||o||(d.default.dispatch({action:"do_after_sync_prepared",deferred_action:{action:"view_group",group_id:e}}),d.default.dispatch({action:"require_registration"}),o=!0),n.setState({summary:null,error:t,editing:!1}))})},onGroupStoreUpdated:function(e){var t=this;if(!this._unmounted){var n=v.default.getSummary(this.props.groupId);n.profile&&["avatar_url","long_description","name","short_description"].forEach(function(e){n.profile[e]=n.profile[e]||""}),this.setState({summary:n,summaryLoading:!v.default.isStateReady(this.props.groupId,v.default.STATE_KEY.Summary),isGroupPublicised:v.default.getGroupPublicity(this.props.groupId),isUserPrivileged:v.default.isUserPrivileged(this.props.groupId),groupRooms:v.default.getGroupRooms(this.props.groupId),groupRoomsLoading:!v.default.isStateReady(this.props.groupId,v.default.STATE_KEY.GroupRooms),isUserMember:v.default.getGroupMembers(this.props.groupId).some(function(e){return e.userId===t._matrixClient.credentials.userId}),error:null}),this.props.groupIsNew&&e&&this._onEditClick()}},_fetchInviterProfile:function(e){var t=this;this.setState({inviterProfileBusy:!0}),this._matrixClient.getProfileInfo(e).then(function(e){t._unmounted||t.setState({inviterProfile:{avatarUrl:e.avatar_url,displayName:e.displayname}})}).catch(function(e){console.error("Error getting group inviter profile",e)}).finally(function(){t._unmounted||t.setState({inviterProfileBusy:!1})})},_onShowRhsClick:function(e){d.default.dispatch({action:"show_right_panel"})},_onEditClick:function(){this.setState({editing:!0,profileForm:(0,s.default)({},this.state.summary.profile),joinableForm:{policyType:this.state.summary.profile.is_openly_joinable?"open":"invite"}}),d.default.dispatch({action:"panel_disable",sideDisabled:!0})},_onShareClick:function(){var e=f.default.getComponent("dialogs.ShareDialog");_.default.createTrackedDialog("share community dialog","",e,{target:this._matrixClient.getGroup(this.props.groupId)})},_onCancelClick:function(){this._closeSettings()},_onAction:function(e){switch(e.action){case"close_settings":this.setState({editing:!1,profileForm:null})}},_closeSettings:function(){d.default.dispatch({action:"close_settings"})},_onNameChange:function(e){var t=(0,s.default)(this.state.profileForm,{name:e});this.setState({profileForm:t})},_onShortDescChange:function(e){var t=(0,s.default)(this.state.profileForm,{short_description:e});this.setState({profileForm:t})},_onLongDescChange:function(e){var t=(0,s.default)(this.state.profileForm,{long_description:e.target.value});this.setState({profileForm:t})},_onAvatarSelected:function(e){var t=this,n=e.target.files[0];n&&(this.setState({uploadingAvatar:!0}),this._matrixClient.uploadContent(n).then(function(e){var n=(0,s.default)(t.state.profileForm,{avatar_url:e});t.setState({uploadingAvatar:!1,profileForm:n,avatarChanged:!0})}).catch(function(e){t.setState({uploadingAvatar:!1});var n=f.default.getComponent("dialogs.ErrorDialog");console.error("Failed to upload avatar image",e),_.default.createTrackedDialog("Failed to upload image","",n,{title:(0,m._t)("Error"),description:(0,m._t)("Failed to upload image")})}).done())},_onJoinableChange:function(e){this.setState({joinableForm:{policyType:e.target.value}})},_onSaveClick:function(){var e=this;this.setState({saving:!0}),(this.state.isUserPrivileged?this._saveGroup():a.default.resolve()).then(function(t){e.setState({saving:!1,editing:!1,summary:null}),d.default.dispatch({action:"panel_disable"}),e._initGroupStore(e.props.groupId),e.state.avatarChanged&&y.default.refreshGroupProfile(e._matrixClient,e.props.groupId)}).catch(function(t){e.setState({saving:!1});var n=f.default.getComponent("dialogs.ErrorDialog");console.error("Failed to save community profile",t),_.default.createTrackedDialog("Failed to update group","",n,{title:(0,m._t)("Error"),description:(0,m._t)("Failed to update community")})}).finally(function(){e.setState({avatarChanged:!1})}).done()},_saveGroup:function(){var e=(0,i.coroutine)(o.default.mark(function e(){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,i.resolve)(this._matrixClient.setGroupProfile(this.props.groupId,this.state.profileForm));case 2:return e.next=4,(0,i.resolve)(this._matrixClient.setGroupJoinPolicy(this.props.groupId,{type:this.state.joinableForm.policyType}));case 4:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),_onAcceptInviteClick:function(){var e=(0,i.coroutine)(o.default.mark(function e(){var t=this;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this.setState({membershipBusy:!0}),e.next=3,(0,i.resolve)(a.default.delay(500));case 3:v.default.acceptGroupInvite(this.props.groupId).then(function(){}).catch(function(e){t.setState({membershipBusy:!1});var n=f.default.getComponent("dialogs.ErrorDialog");_.default.createTrackedDialog("Error accepting invite","",n,{title:(0,m._t)("Error"),description:(0,m._t)("Unable to accept invite")})});case 4:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),_onRejectInviteClick:function(){var e=(0,i.coroutine)(o.default.mark(function e(){var t=this;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this.setState({membershipBusy:!0}),e.next=3,(0,i.resolve)(a.default.delay(500));case 3:v.default.leaveGroup(this.props.groupId).then(function(){}).catch(function(e){t.setState({membershipBusy:!1});var n=f.default.getComponent("dialogs.ErrorDialog");_.default.createTrackedDialog("Error rejecting invite","",n,{title:(0,m._t)("Error"),description:(0,m._t)("Unable to reject invite")})});case 4:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),_onJoinClick:function(){var e=(0,i.coroutine)(o.default.mark(function e(){var t=this;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._matrixClient.isGuest()){e.next=3;break}return d.default.dispatch({action:"require_registration"}),e.abrupt("return");case 3:return this.setState({membershipBusy:!0}),e.next=6,(0,i.resolve)(a.default.delay(500));case 6:v.default.joinGroup(this.props.groupId).then(function(){}).catch(function(e){t.setState({membershipBusy:!1});var n=f.default.getComponent("dialogs.ErrorDialog");_.default.createTrackedDialog("Error joining room","",n,{title:(0,m._t)("Error"),description:(0,m._t)("Unable to join community")})});case 7:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),_onLeaveClick:function(){var e=this,t=f.default.getComponent("dialogs.QuestionDialog");_.default.createTrackedDialog("Leave Group","",t,{title:(0,m._t)("Leave Community"),description:(0,m._t)("Leave %(groupName)s?",{groupName:this.props.groupId}),button:(0,m._t)("Leave"),danger:!0,onFinished:function(){var t=(0,i.coroutine)(o.default.mark(function t(n){return o.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(n){t.next=2;break}return t.abrupt("return");case 2:return e.setState({membershipBusy:!0}),t.next=5,(0,i.resolve)(a.default.delay(500));case 5:v.default.leaveGroup(e.props.groupId).then(function(){}).catch(function(t){e.setState({membershipBusy:!1});var n=f.default.getComponent("dialogs.ErrorDialog");_.default.createTrackedDialog("Error leaving community","",n,{title:(0,m._t)("Error"),description:(0,m._t)("Unable to leave community")})});case 6:case"end":return t.stop()}},t,e)}));return function(e){return t.apply(this,arguments)}}()})},_onAddRoomsClick:function(){(0,b.showGroupAddRoomDialog)(this.props.groupId)},_getGroupSection:function(){var e=(0,g.default)({mx_GroupView_group:this.state.editing,mx_GroupView_group_disabled:this.state.editing&&!this.state.isUserPrivileged}),t=this.state.editing?l.default.createElement("h2",null," ",(0,m._t)("Community Settings")," "):l.default.createElement("div",null),n=this.state.editing&&this.state.isUserPrivileged?l.default.createElement("div",{className:"mx_GroupView_changeDelayWarning"},(0,m._t)("Changes made to your community <bold1>name</bold1> and <bold2>avatar</bold2> might not be seen by other users for up to 30 minutes.",{},{bold1:function(e){return l.default.createElement("b",null," ",e," ")},bold2:function(e){return l.default.createElement("b",null," ",e," ")}})):l.default.createElement("div",null);return l.default.createElement("div",{className:e},t,n,this._getJoinableNode(),this._getLongDescriptionNode(),this._getRoomsNode())},_getRoomsNode:function(){var e=f.default.getComponent("rooms.RoomDetailList"),t=f.default.getComponent("elements.AccessibleButton"),n=f.default.getComponent("elements.TintableSvg"),r=f.default.getComponent("elements.Spinner"),o=f.default.getComponent("elements.ToolTipButton"),i=this.state.editing?l.default.createElement(o,{helpText:(0,m._t)("These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.")}):l.default.createElement("div",null),a=this.state.editing?l.default.createElement(t,{className:"mx_GroupView_rooms_header_addRow",onClick:this._onAddRoomsClick},l.default.createElement("div",{className:"mx_GroupView_rooms_header_addRow_button"},l.default.createElement(n,{src:"img/icons-room-add.svg",width:"24",height:"24"})),l.default.createElement("div",{className:"mx_GroupView_rooms_header_addRow_label"},(0,m._t)("Add rooms to this community"))):l.default.createElement("div",null),s=(0,g.default)({mx_fadable:!0,mx_fadable_faded:this.state.editing});return l.default.createElement("div",{className:"mx_GroupView_rooms"},l.default.createElement("div",{className:"mx_GroupView_rooms_header"},l.default.createElement("h3",null,(0,m._t)("Rooms"),i),a),this.state.groupRoomsLoading?l.default.createElement(r,null):l.default.createElement(e,{rooms:this.state.groupRooms,className:s}))},_getFeaturedRoomsNode:function(){var e=this,t=this.state.summary,n=[],o={};t.rooms_section.rooms.forEach(function(e){if(null===e.category_id)n.push(e);else{var t=o[e.category_id];void 0===t&&(t=[],o[e.category_id]=t),t.push(e)}});var i=l.default.createElement(T,{rooms:n,groupId:this.props.groupId,editing:this.state.editing}),a=(0,r.default)(o).map(function(n){var r=t.rooms_section.categories[n];return l.default.createElement(T,{key:n,rooms:o[n],category:r,groupId:e.props.groupId,editing:e.state.editing})});return l.default.createElement("div",{className:"mx_GroupView_featuredThings"},l.default.createElement("div",{className:"mx_GroupView_featuredThings_header"},(0,m._t)("Featured Rooms:")),i,a)},_getFeaturedUsersNode:function(){var e=this,t=this.state.summary,n=[],o={};t.users_section.users.forEach(function(e){if(null===e.role_id)n.push(e);else{var t=o[e.role_id];void 0===t&&(t=[],o[e.role_id]=t),t.push(e)}});var i=l.default.createElement(R,{users:n,groupId:this.props.groupId,editing:this.state.editing}),a=(0,r.default)(o).map(function(n){var r=t.users_section.roles[n];return l.default.createElement(R,{key:n,users:o[n],role:r,groupId:e.props.groupId,editing:e.state.editing})});return l.default.createElement("div",{className:"mx_GroupView_featuredThings"},l.default.createElement("div",{className:"mx_GroupView_featuredThings_header"},(0,m._t)("Featured Users:")),i,a)},_getMembershipSection:function(){var e=f.default.getComponent("elements.Spinner"),t=f.default.getComponent("avatars.BaseAvatar"),n=this._matrixClient.getGroup(this.props.groupId);if(n&&"invite"===n.myMembership){if(this.state.membershipBusy||this.state.inviterProfileBusy)return l.default.createElement("div",{className:"mx_GroupView_membershipSection"},l.default.createElement(e,null));var r=this.state.inviterProfile?this._matrixClient.mxcUrlToHttp(this.state.inviterProfile.avatarUrl,36,36):null,o=n.inviter.userId;return this.state.inviterProfile&&(o=this.state.inviterProfile.displayName||n.inviter.userId),l.default.createElement("div",{className:"mx_GroupView_membershipSection mx_GroupView_membershipSection_invited"},l.default.createElement("div",{className:"mx_GroupView_membershipSubSection"},l.default.createElement("div",{className:"mx_GroupView_membershipSection_description"},l.default.createElement(t,{url:r,name:o,width:36,height:36}),(0,m._t)("%(inviter)s has invited you to join this community",{inviter:o})),l.default.createElement("div",{className:"mx_GroupView_membership_buttonContainer"},l.default.createElement(h.default,{className:"mx_GroupView_textButton mx_RoomHeader_textButton",onClick:this._onAcceptInviteClick},(0,m._t)("Accept")),l.default.createElement(h.default,{className:"mx_GroupView_textButton mx_RoomHeader_textButton",onClick:this._onRejectInviteClick},(0,m._t)("Decline")))))}var i=void 0,a=void 0,s=void 0,u=void 0,c=void 0;if((!n||"leave"===n.myMembership)&&this.state.summary&&this.state.summary.profile&&Boolean(this.state.summary.profile.is_openly_joinable))u=(0,m._t)("Join this community"),c=this._onJoinClick,a="mx_GroupView_joinButton",i="mx_GroupView_membershipSection_leave";else{if(!n||"join"!==n.myMembership||!this.state.editing)return null;u=(0,m._t)("Leave this community"),c=this._onLeaveClick,s=this.state.isUserPrivileged?(0,m._t)("You are an administrator of this community"):(0,m._t)("You are a member of this community"),a={mx_GroupView_leaveButton:!0,mx_RoomHeader_textButton_danger:this.state.isUserPrivileged},i="mx_GroupView_membershipSection_joined"}var d=(0,g.default)(["mx_RoomHeader_textButton","mx_GroupView_textButton"],a),p=(0,g.default)("mx_GroupView_membershipSection",i);return l.default.createElement("div",{className:p},l.default.createElement("div",{className:"mx_GroupView_membershipSubSection"},this.state.membershipBusy?l.default.createElement(e,null):l.default.createElement("div",null),l.default.createElement("div",{className:"mx_GroupView_membership_buttonContainer"},l.default.createElement(h.default,{className:d,onClick:c,title:s},u))))},_getJoinableNode:function(){return this.state.editing?l.default.createElement("div",null,l.default.createElement("h3",null,(0,m._t)("Who can join this community?"),this.state.groupJoinableLoading?l.default.createElement(InlineSpinner,null):l.default.createElement("div",null)),l.default.createElement("div",null,l.default.createElement("label",null,l.default.createElement("input",{type:"radio",value:"invite",checked:"invite"===this.state.joinableForm.policyType,onChange:this._onJoinableChange}),l.default.createElement("div",{className:"mx_GroupView_label_text"},(0,m._t)("Only people who have been invited")))),l.default.createElement("div",null,l.default.createElement("label",null,l.default.createElement("input",{type:"radio",value:"open",checked:"open"===this.state.joinableForm.policyType,onChange:this._onJoinableChange}),l.default.createElement("div",{className:"mx_GroupView_label_text"},(0,m._t)("Everyone"))))):null},_getLongDescriptionNode:function(){var e=this.state.summary,t=null;e.profile&&e.profile.long_description?t=(0,p.sanitizedHtmlNode)(e.profile.long_description):this.state.isUserPrivileged&&(t=l.default.createElement("div",{className:"mx_GroupView_groupDesc_placeholder",onClick:this._onEditClick},(0,m._t)("Your community hasn't got a Long Description, a HTML page to show to community members.<br />Click here to open settings and give it one!",{},{br:l.default.createElement("br",null)})));var n=(0,g.default)({mx_GroupView_groupDesc:!0,mx_GroupView_groupDesc_disabled:!this.state.isUserPrivileged});return this.state.editing?l.default.createElement("div",{className:n},l.default.createElement("h3",null," ",(0,m._t)("Long Description (HTML)")," "),l.default.createElement("textarea",{value:this.state.profileForm.long_description,placeholder:(0,m._t)(S),onChange:this._onLongDescChange,tabIndex:"4",key:"editLongDesc"})):l.default.createElement("div",{className:"mx_GroupView_groupDesc"},t)},render:function(){var e=f.default.getComponent("avatars.GroupAvatar"),t=f.default.getComponent("elements.Spinner"),n=f.default.getComponent("elements.TintableSvg"),r=f.default.getComponent("elements.GeminiScrollbarWrapper");if(this.state.summaryLoading&&null===this.state.error||this.state.saving)return l.default.createElement(t,null);if(this.state.summary){var o=this.state.summary,i=void 0,a=void 0,s=void 0,u=[];if(this.state.editing&&this.state.isUserPrivileged){var c=void 0;if(this.state.uploadingAvatar)c=l.default.createElement(t,null);else{var d=f.default.getComponent("avatars.GroupAvatar");c=l.default.createElement(d,{groupId:this.props.groupId,groupName:this.state.profileForm.name,groupAvatarUrl:this.state.profileForm.avatar_url,width:48,height:48,resizeMethod:"crop"})}i=l.default.createElement("div",{className:"mx_GroupView_avatarPicker"},l.default.createElement("label",{htmlFor:"avatarInput",className:"mx_GroupView_avatarPicker_label"},c),l.default.createElement("div",{className:"mx_GroupView_avatarPicker_edit"},l.default.createElement("label",{htmlFor:"avatarInput",className:"mx_GroupView_avatarPicker_label"},l.default.createElement("img",{src:"img/camera.svg",alt:(0,m._t)("Upload avatar"),title:(0,m._t)("Upload avatar"),width:"17",height:"15"})),l.default.createElement("input",{id:"avatarInput",className:"mx_GroupView_uploadInput",type:"file",onChange:this._onAvatarSelected})));var p=f.default.getComponent("elements.EditableText");a=l.default.createElement(p,{ref:"nameEditor",className:"mx_GroupView_editable",placeholderClassName:"mx_GroupView_placeholder",placeholder:(0,m._t)("Community Name"),blurToCancel:!1,initialValue:this.state.profileForm.name,onValueChanged:this._onNameChange,tabIndex:"1",dir:"auto"}),s=l.default.createElement(p,{ref:"descriptionEditor",className:"mx_GroupView_editable",placeholderClassName:"mx_GroupView_placeholder",placeholder:(0,m._t)("Description"),blurToCancel:!1,initialValue:this.state.profileForm.short_description,onValueChanged:this._onShortDescChange,tabIndex:"2",dir:"auto"})}else{var _=this.state.isUserMember?this._onEditClick:null,v=o.profile?o.profile.avatar_url:null,y=o.profile?o.profile.name:null;i=l.default.createElement(e,{groupId:this.props.groupId,groupAvatarUrl:v,groupName:y,onClick:_,width:48,height:48}),a=o.profile&&o.profile.name?l.default.createElement("div",{onClick:_},l.default.createElement("span",null,o.profile.name),l.default.createElement("span",{className:"mx_GroupView_header_groupid"},"(",this.props.groupId,")")):l.default.createElement("span",{onClick:_},this.props.groupId),o.profile&&o.profile.short_description&&(s=l.default.createElement("span",{onClick:_},o.profile.short_description))}this.state.editing?(u.push(l.default.createElement(h.default,{className:"mx_GroupView_textButton mx_RoomHeader_textButton",onClick:this._onSaveClick,key:"_saveButton"},(0,m._t)("Save"))),u.push(l.default.createElement(h.default,{className:"mx_RoomHeader_cancelButton",onClick:this._onCancelClick,key:"_cancelButton"},l.default.createElement("img",{src:"img/cancel.svg",className:"mx_filterFlipColor",width:"18",height:"18",alt:(0,m._t)("Cancel")})))):(o.user&&"join"===o.user.membership&&u.push(l.default.createElement(h.default,{className:"mx_GroupHeader_button",onClick:this._onEditClick,title:(0,m._t)("Community Settings"),key:"_editButton"},l.default.createElement(n,{src:"img/icons-settings-room.svg",width:"16",height:"16"}))),u.push(l.default.createElement(h.default,{className:"mx_GroupHeader_button",onClick:this._onShareClick,title:(0,m._t)("Share Community"),key:"_shareButton"},l.default.createElement(n,{src:"img/icons-share.svg",width:"16",height:"16"}))),this.props.collapsedRhs&&u.push(l.default.createElement(h.default,{className:"mx_GroupHeader_button",onClick:this._onShowRhsClick,title:(0,m._t)("Show panel"),key:"_maximiseButton"},l.default.createElement(n,{src:"img/maximise.svg",width:"10",height:"16"}))));var b={mx_GroupView_header:!0,mx_GroupView_header_view:!this.state.editing,mx_GroupView_header_isUserMember:this.state.isUserMember};return l.default.createElement("div",{className:"mx_GroupView"},l.default.createElement("div",{className:(0,g.default)(b)},l.default.createElement("div",{className:"mx_GroupView_header_leftCol"},l.default.createElement("div",{className:"mx_GroupView_header_avatar"},i),l.default.createElement("div",{className:"mx_GroupView_header_info"},l.default.createElement("div",{className:"mx_GroupView_header_name"},a),l.default.createElement("div",{className:"mx_GroupView_header_shortDesc"},s))),l.default.createElement("div",{className:"mx_GroupView_header_rightCol"},u)),l.default.createElement(r,{className:"mx_GroupView_body"},this._getMembershipSection(),this._getGroupSection()))}if(this.state.error){if(404===this.state.error.httpStatus)return l.default.createElement("div",{className:"mx_GroupView_error"},(0,m._t)("Community %(groupId)s not found",{groupId:this.props.groupId}));var E=void 0;return"M_UNRECOGNIZED"===this.state.error.errcode&&(E=l.default.createElement("div",null,(0,m._t)("This Home server does not support communities"))),l.default.createElement("div",{className:"mx_GroupView_error"},(0,m._t)("Failed to load %(groupId)s",{groupId:this.props.groupId}),E)}return console.error("Invalid state for GroupView"),l.default.createElement("div",null)}}),e.exports=t.default},function(e,t,n){var r=n(1229)({"&":"&","<":"<",">":">",'"':""","'":"'"});e.exports=r},function(e,t){e.exports=function(e){return function(t){return null==e?void 0:e[t]}}},function(e,t,n){var r=n(194),o=n(298),i=n(102),a=n(242),s=1/0,l=r?r.prototype:void 0,u=l?l.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(i(t))return o(t,e)+"";if(a(t))return u?u.call(t):"";var n=t+"";return"0"==n&&1/t==-s?"-0":n}},function(e,t,n){var r=n(194),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,s=r?r.toStringTag:void 0;e.exports=function(e){var t=i.call(e,s),n=e[s];try{e[s]=void 0;var r=!0}catch(e){}var o=a.call(e);return r&&(t?e[s]=n:delete e[s]),o}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t,n){!function(e){"object"==typeof window&&window||"object"==typeof self&&self;(function(e){var t=[],n=Object.keys,r={},o={},i=/^(no-?highlight|plain|text)$/i,a=/\blang(?:uage)?-([\w-]+)\b/i,s=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,l="</span>",u={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};function c(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function f(e){return e.nodeName.toLowerCase()}function d(e,t){var n=e&&e.exec(t);return n&&0===n.index}function p(e){return i.test(e)}function m(e){var t,n={},r=Array.prototype.slice.call(arguments,1);for(t in e)n[t]=e[t];return r.forEach(function(e){for(t in e)n[t]=e[t]}),n}function h(e){var t=[];return function e(n,r){for(var o=n.firstChild;o;o=o.nextSibling)3===o.nodeType?r+=o.nodeValue.length:1===o.nodeType&&(t.push({event:"start",offset:r,node:o}),r=e(o,r),f(o).match(/br|hr|img|input/)||t.push({event:"stop",offset:r,node:o}));return r}(e,0),t}function _(e){function t(e){return e&&e.source||e}function r(n,r){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(r?"g":""))}!function o(i,a){if(i.compiled)return;i.compiled=!0;i.keywords=i.keywords||i.beginKeywords;if(i.keywords){var s={},l=function(t,n){e.case_insensitive&&(n=n.toLowerCase()),n.split(" ").forEach(function(e){var n=e.split("|");s[n[0]]=[t,n[1]?Number(n[1]):1]})};"string"==typeof i.keywords?l("keyword",i.keywords):n(i.keywords).forEach(function(e){l(e,i.keywords[e])}),i.keywords=s}i.lexemesRe=r(i.lexemes||/\w+/,!0);a&&(i.beginKeywords&&(i.begin="\\b("+i.beginKeywords.split(" ").join("|")+")\\b"),i.begin||(i.begin=/\B|\b/),i.beginRe=r(i.begin),i.endSameAsBegin&&(i.end=i.begin),i.end||i.endsWithParent||(i.end=/\B|\b/),i.end&&(i.endRe=r(i.end)),i.terminator_end=t(i.end)||"",i.endsWithParent&&a.terminator_end&&(i.terminator_end+=(i.end?"|":"")+a.terminator_end));i.illegal&&(i.illegalRe=r(i.illegal));null==i.relevance&&(i.relevance=1);i.contains||(i.contains=[]);i.contains=Array.prototype.concat.apply([],i.contains.map(function(e){return function(e){e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(t){return m(e,{variants:null},t)}));return e.cached_variants||e.endsWithParent&&[m(e)]||[e]}("self"===e?i:e)}));i.contains.forEach(function(e){o(e,i)});i.starts&&o(i.starts,a);var u=i.contains.map(function(e){return e.beginKeywords?"\\.?("+e.begin+")\\.?":e.begin}).concat([i.terminator_end,i.illegal]).map(t).filter(Boolean);i.terminators=u.length?r(u.join("|"),!0):{exec:function(){return null}}}(e)}function g(e,t,n,o){function i(e){return new RegExp(e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}function a(e,t){var n=h.case_insensitive?t[0].toLowerCase():t[0];return e.keywords.hasOwnProperty(n)&&e.keywords[n]}function s(e,t,n,r){var o=r?"":u.classPrefix,i='<span class="'+o,a=n?"":l;return(i+=e+'">')+t+a}function f(){S+=null!=b.subLanguage?function(){var e="string"==typeof b.subLanguage;if(e&&!r[b.subLanguage])return c(D);var t=e?g(b.subLanguage,D,!0,E[b.subLanguage]):v(D,b.subLanguage.length?b.subLanguage:void 0);b.relevance>0&&(w+=t.relevance);e&&(E[b.subLanguage]=t.top);return s(t.language,t.value,!1,!0)}():function(){var e,t,n,r;if(!b.keywords)return c(D);r="",t=0,b.lexemesRe.lastIndex=0,n=b.lexemesRe.exec(D);for(;n;)r+=c(D.substring(t,n.index)),(e=a(b,n))?(w+=e[1],r+=s(e[0],c(n[0]))):r+=c(n[0]),t=b.lexemesRe.lastIndex,n=b.lexemesRe.exec(D);return r+c(D.substr(t))}(),D=""}function p(e){S+=e.className?s(e.className,"",!0):"",b=Object.create(e,{parent:{value:b}})}function m(e,t){if(D+=e,null==t)return f(),0;var r=function(e,t){var n,r;for(n=0,r=t.contains.length;n<r;n++)if(d(t.contains[n].beginRe,e))return t.contains[n].endSameAsBegin&&(t.contains[n].endRe=i(t.contains[n].beginRe.exec(e)[0])),t.contains[n]}(t,b);if(r)return r.skip?D+=t:(r.excludeBegin&&(D+=t),f(),r.returnBegin||r.excludeBegin||(D=t)),p(r),r.returnBegin?0:t.length;var o=function e(t,n){if(d(t.endRe,n)){for(;t.endsParent&&t.parent;)t=t.parent;return t}if(t.endsWithParent)return e(t.parent,n)}(b,t);if(o){var a=b;a.skip?D+=t:(a.returnEnd||a.excludeEnd||(D+=t),f(),a.excludeEnd&&(D=t));do{b.className&&(S+=l),b.skip||b.subLanguage||(w+=b.relevance),b=b.parent}while(b!==o.parent);return o.starts&&(o.endSameAsBegin&&(o.starts.endRe=o.endRe),p(o.starts)),a.returnEnd?0:t.length}if(function(e,t){return!n&&d(t.illegalRe,e)}(t,b))throw new Error('Illegal lexeme "'+t+'" for mode "'+(b.className||"<unnamed>")+'"');return D+=t,t.length||1}var h=C(e);if(!h)throw new Error('Unknown language: "'+e+'"');_(h);var y,b=o||h,E={},S="";for(y=b;y!==h;y=y.parent)y.className&&(S=s(y.className,"",!0)+S);var D="",w=0;try{for(var T,x,R=0;b.terminators.lastIndex=R,T=b.terminators.exec(t);)x=m(t.substring(R,T.index),T[0]),R=T.index+x;for(m(t.substr(R)),y=b;y.parent;y=y.parent)y.className&&(S+=l);return{relevance:w,value:S,language:e,top:b}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{relevance:0,value:c(t)};throw e}}function v(e,t){t=t||u.languages||n(r);var o={relevance:0,value:c(e)},i=o;return t.filter(C).filter(S).forEach(function(t){var n=g(t,e,!1);n.language=t,n.relevance>i.relevance&&(i=n),n.relevance>o.relevance&&(i=o,o=n)}),i.language&&(o.second_best=i),o}function y(e){return u.tabReplace||u.useBR?e.replace(s,function(e,t){return u.useBR&&"\n"===e?"<br>":u.tabReplace?t.replace(/\t/g,u.tabReplace):""}):e}function b(e){var n,r,i,s,l,d=function(e){var t,n,r,o,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",n=a.exec(i))return C(n[1])?n[1]:"no-highlight";for(i=i.split(/\s+/),t=0,r=i.length;t<r;t++)if(p(o=i[t])||C(o))return o}(e);p(d)||(u.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n"):n=e,l=n.textContent,i=d?g(d,l,!0):v(l),(r=h(n)).length&&((s=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=i.value,i.value=function(e,n,r){var o=0,i="",a=[];function s(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset<n[0].offset?e:n:"start"===n[0].event?e:n:e.length?e:n}function l(e){i+="<"+f(e)+t.map.call(e.attributes,function(e){return" "+e.nodeName+'="'+c(e.value).replace('"',""")+'"'}).join("")+">"}function u(e){i+="</"+f(e)+">"}function d(e){("start"===e.event?l:u)(e.node)}for(;e.length||n.length;){var p=s();if(i+=c(r.substring(o,p[0].offset)),o=p[0].offset,p===e){a.reverse().forEach(u);do{d(p.splice(0,1)[0]),p=s()}while(p===e&&p.length&&p[0].offset===o);a.reverse().forEach(l)}else"start"===p[0].event?a.push(p[0].node):a.pop(),d(p.splice(0,1)[0])}return i+c(r.substr(o))}(r,h(s),l)),i.value=y(i.value),e.innerHTML=i.value,e.className=function(e,t,n){var r=t?o[t]:n,i=[e.trim()];e.match(/\bhljs\b/)||i.push("hljs");-1===e.indexOf(r)&&i.push(r);return i.join(" ").trim()}(e.className,d,i.language),e.result={language:i.language,re:i.relevance},i.second_best&&(e.second_best={language:i.second_best.language,re:i.second_best.relevance}))}function E(){if(!E.called){E.called=!0;var e=document.querySelectorAll("pre code");t.forEach.call(e,b)}}function C(e){return e=(e||"").toLowerCase(),r[e]||r[o[e]]}function S(e){return e=(e||"").toLowerCase(),!r[e].disableAutodetect}e.highlight=g,e.highlightAuto=v,e.fixMarkup=y,e.highlightBlock=b,e.configure=function(e){u=m(u,e)},e.initHighlighting=E,e.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",E,!1),addEventListener("load",E,!1)},e.registerLanguage=function(t,n){var i=r[t]=n(e);i.aliases&&i.aliases.forEach(function(e){o[e]=t})},e.listLanguages=function(){return n(r)},e.getLanguage=C,e.autoDetection=S,e.inherit=m,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,r){var o=e.inherit({className:"comment",begin:t,end:n,contains:[]},r||{});return o.contains.push(e.PHRASAL_WORDS_MODE),o.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),o},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0}})(t)}()},function(e,t){e.exports=function(e){var t="[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]+",n="далее возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт ",r="null истина ложь неопределено",o=e.inherit(e.NUMBER_MODE),i={className:"string",begin:'"|\\|',end:'"|$',contains:[{begin:'""'}]},a={begin:"'",end:"'",excludeBegin:!0,excludeEnd:!0,contains:[{className:"number",begin:"\\d{4}([\\.\\\\/:-]?\\d{2}){0,5}"}]},s=e.inherit(e.C_LINE_COMMENT_MODE);return{case_insensitive:!0,lexemes:t,keywords:{keyword:n,built_in:"разделительстраниц разделительстрок символтабуляции ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек ",class:"webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоединенияточекдиаграммы типсоединительнойлинии типстороныэлементаграфическойсхемы типформыотчета типшкалырадарнойдиаграммы факторлиниитрендадиаграммы фигуракнопки фигурыграфическойсхемы фиксациявтаблице форматдняшкалывремени форматкартинки ширинаподчиненныхэлементовформы виддвижениябухгалтерии виддвижениянакопления видпериодарегистрарасчета видсчета видточкимаршрутабизнеспроцесса использованиеагрегатарегистранакопления использованиегруппиэлементов использованиережимапроведения использованиесреза периодичностьагрегатарегистранакопления режимавтовремя режимзаписидокумента режимпроведениядокумента авторегистрацияизменений допустимыйномерсообщения отправкаэлементаданных получениеэлементаданных использованиерасшифровкитабличногодокумента ориентациястраницы положениеитоговколоноксводнойтаблицы положениеитоговстроксводнойтаблицы положениетекстаотносительнокартинки расположениезаголовкагруппировкитабличногодокумента способчтениязначенийтабличногодокумента типдвустороннейпечати типзаполненияобластитабличногодокумента типкурсоровтабличногодокумента типлиниирисункатабличногодокумента типлинииячейкитабличногодокумента типнаправленияпереходатабличногодокумента типотображениявыделениятабличногодокумента типотображениялинийсводнойтаблицы типразмещениятекстатабличногодокумента типрисункатабличногодокумента типсмещениятабличногодокумента типузоратабличногодокумента типфайлатабличногодокумента точностьпечати чередованиерасположениястраниц отображениевремениэлементовпланировщика типфайлаформатированногодокумента обходрезультатазапроса типзаписизапроса видзаполнениярасшифровкипостроителяотчета типдобавленияпредставлений типизмеренияпостроителяотчета типразмещенияитогов доступкфайлу режимдиалогавыборафайла режимоткрытияфайла типизмеренияпостроителязапроса видданныханализа методкластеризации типединицыинтервалавременианализаданных типзаполнениятаблицырезультатаанализаданных типиспользованиячисловыхзначенийанализаданных типисточникаданныхпоискаассоциаций типколонкианализаданныхдереворешений типколонкианализаданныхкластеризация типколонкианализаданныхобщаястатистика типколонкианализаданныхпоискассоциаций типколонкианализаданныхпоискпоследовательностей типколонкимоделипрогноза типмерырасстоянияанализаданных типотсеченияправилассоциации типполяанализаданных типстандартизациианализаданных типупорядочиванияправилассоциациианализаданных типупорядочиванияшаблоновпоследовательностейанализаданных типупрощениядереварешений wsнаправлениепараметра вариантxpathxs вариантзаписидатыjson вариантпростоготипаxs видгруппымоделиxs видфасетаxdto действиепостроителяdom завершенностьпростоготипаxs завершенностьсоставноготипаxs завершенностьсхемыxs запрещенныеподстановкиxs исключениягруппподстановкиxs категорияиспользованияатрибутаxs категорияограниченияидентичностиxs категорияограниченияпространствименxs методнаследованияxs модельсодержимогоxs назначениетипаxml недопустимыеподстановкиxs обработкапробельныхсимволовxs обработкасодержимогоxs ограничениезначенияxs параметрыотбораузловdom переносстрокjson позициявдокументеdom пробельныесимволыxml типатрибутаxml типзначенияjson типканоническогоxml типкомпонентыxs типпроверкиxml типрезультатаdomxpath типузлаdom типузлаxml формаxml формапредставленияxs форматдатыjson экранированиесимволовjson видсравнениякомпоновкиданных действиеобработкирасшифровкикомпоновкиданных направлениесортировкикомпоновкиданных расположениевложенныхэлементоврезультатакомпоновкиданных расположениеитоговкомпоновкиданных расположениегруппировкикомпоновкиданных расположениеполейгруппировкикомпоновкиданных расположениеполякомпоновкиданных расположениереквизитовкомпоновкиданных расположениересурсовкомпоновкиданных типбухгалтерскогоостаткакомпоновкиданных типвыводатекстакомпоновкиданных типгруппировкикомпоновкиданных типгруппыэлементовотборакомпоновкиданных типдополненияпериодакомпоновкиданных типзаголовкаполейкомпоновкиданных типмакетагруппировкикомпоновкиданных типмакетаобластикомпоновкиданных типостаткакомпоновкиданных типпериодакомпоновкиданных типразмещениятекстакомпоновкиданных типсвязинаборовданныхкомпоновкиданных типэлементарезультатакомпоновкиданных расположениелегендыдиаграммыкомпоновкиданных типпримененияотборакомпоновкиданных режимотображенияэлементанастройкикомпоновкиданных режимотображениянастроеккомпоновкиданных состояниеэлементанастройкикомпоновкиданных способвосстановлениянастроеккомпоновкиданных режимкомпоновкирезультата использованиепараметракомпоновкиданных автопозицияресурсовкомпоновкиданных вариантиспользованиягруппировкикомпоновкиданных расположениересурсоввдиаграммекомпоновкиданных фиксациякомпоновкиданных использованиеусловногооформлениякомпоновкиданных важностьинтернетпочтовогосообщения обработкатекстаинтернетпочтовогосообщения способкодированияинтернетпочтовоговложения способкодированиянеasciiсимволовинтернетпочтовогосообщения типтекстапочтовогосообщения протоколинтернетпочты статусразборапочтовогосообщения режимтранзакциизаписижурналарегистрации статустранзакциизаписижурналарегистрации уровеньжурналарегистрации расположениехранилищасертификатовкриптографии режимвключениясертификатовкриптографии режимпроверкисертификатакриптографии типхранилищасертификатовкриптографии кодировкаименфайловвzipфайле методсжатияzip методшифрованияzip режимвосстановленияпутейфайловzip режимобработкиподкаталоговzip режимсохраненияпутейzip уровеньсжатияzip звуковоеоповещение направлениепереходакстроке позициявпотоке порядокбайтов режимблокировкиданных режимуправленияблокировкойданных сервисвстроенныхпокупок состояниефоновогозадания типподписчикадоставляемыхуведомлений уровеньиспользованиязащищенногосоединенияftp направлениепорядкасхемызапроса типдополненияпериодамисхемызапроса типконтрольнойточкисхемызапроса типобъединениясхемызапроса типпараметрадоступнойтаблицысхемызапроса типсоединениясхемызапроса httpметод автоиспользованиеобщегореквизита автопрефиксномеразадачи вариантвстроенногоязыка видиерархии видрегистранакопления видтаблицывнешнегоисточникаданных записьдвиженийприпроведении заполнениепоследовательностей индексирование использованиебазыпланавидоврасчета использованиебыстроговыбора использованиеобщегореквизита использованиеподчинения использованиеполнотекстовогопоиска использованиеразделяемыхданныхобщегореквизита использованиереквизита назначениеиспользованияприложения назначениерасширенияконфигурации направлениепередачи обновлениепредопределенныхданных оперативноепроведение основноепредставлениевидарасчета основноепредставлениевидахарактеристики основноепредставлениезадачи основноепредставлениепланаобмена основноепредставлениесправочника основноепредставлениесчета перемещениеграницыприпроведении периодичностьномерабизнеспроцесса периодичностьномерадокумента периодичностьрегистрарасчета периодичностьрегистрасведений повторноеиспользованиевозвращаемыхзначений полнотекстовыйпоискпривводепостроке принадлежностьобъекта проведение разделениеаутентификацииобщегореквизита разделениеданныхобщегореквизита разделениерасширенийконфигурацииобщегореквизита режимавтонумерацииобъектов режимзаписирегистра режимиспользованиямодальности режимиспользованиясинхронныхвызововрасширенийплатформыивнешнихкомпонент режимповторногоиспользованиясеансов режимполученияданныхвыборапривводепостроке режимсовместимости режимсовместимостиинтерфейса режимуправленияблокировкойданныхпоумолчанию сериикодовпланавидовхарактеристик сериикодовпланасчетов сериикодовсправочника созданиепривводе способвыбора способпоискастрокипривводепостроке способредактирования типданныхтаблицывнешнегоисточникаданных типкодапланавидоврасчета типкодасправочника типмакета типномерабизнеспроцесса типномерадокумента типномеразадачи типформы удалениедвижений важностьпроблемыприменениярасширенияконфигурации вариантинтерфейсаклиентскогоприложения вариантмасштабаформклиентскогоприложения вариантосновногошрифтаклиентскогоприложения вариантстандартногопериода вариантстандартнойдатыначала видграницы видкартинки видотображенияполнотекстовогопоиска видрамки видсравнения видцвета видчисловогозначения видшрифта допустимаядлина допустимыйзнак использованиеbyteordermark использованиеметаданныхполнотекстовогопоиска источникрасширенийконфигурации клавиша кодвозвратадиалога кодировкаxbase кодировкатекста направлениепоиска направлениесортировки обновлениепредопределенныхданных обновлениеприизмененииданных отображениепанелиразделов проверказаполнения режимдиалогавопрос режимзапускаклиентскогоприложения режимокругления режимоткрытияформприложения режимполнотекстовогопоиска скоростьклиентскогосоединения состояниевнешнегоисточникаданных состояниеобновленияконфигурациибазыданных способвыборасертификатаwindows способкодированиястроки статуссообщения типвнешнейкомпоненты типплатформы типповеденияклавишиenter типэлементаинформацииовыполненииобновленияконфигурациибазыданных уровеньизоляциитранзакций хешфункция частидаты",type:"comобъект ftpсоединение httpзапрос httpсервисответ httpсоединение wsопределения wsпрокси xbase анализданных аннотацияxs блокировкаданных буфердвоичныхданных включениеxs выражениекомпоновкиданных генераторслучайныхчисел географическаясхема географическиекоординаты графическаясхема группамоделиxs данныерасшифровкикомпоновкиданных двоичныеданные дендрограмма диаграмма диаграммаганта диалогвыборафайла диалогвыборацвета диалогвыборашрифта диалограсписаниярегламентногозадания диалогредактированиястандартногопериода диапазон документdom документhtml документацияxs доставляемоеуведомление записьdom записьfastinfoset записьhtml записьjson записьxml записьzipфайла записьданных записьтекста записьузловdom запрос защищенноесоединениеopenssl значенияполейрасшифровкикомпоновкиданных извлечениетекста импортxs интернетпочта интернетпочтовоесообщение интернетпочтовыйпрофиль интернетпрокси интернетсоединение информациядляприложенияxs использованиеатрибутаxs использованиесобытияжурналарегистрации источникдоступныхнастроеккомпоновкиданных итераторузловdom картинка квалификаторыдаты квалификаторыдвоичныхданных квалификаторыстроки квалификаторычисла компоновщикмакетакомпоновкиданных компоновщикнастроеккомпоновкиданных конструктормакетаоформлениякомпоновкиданных конструкторнастроеккомпоновкиданных конструкторформатнойстроки линия макеткомпоновкиданных макетобластикомпоновкиданных макетоформлениякомпоновкиданных маскаxs менеджеркриптографии наборсхемxml настройкикомпоновкиданных настройкисериализацииjson обработкакартинок обработкарасшифровкикомпоновкиданных обходдереваdom объявлениеатрибутаxs объявлениенотацииxs объявлениеэлементаxs описаниеиспользованиясобытиядоступжурналарегистрации описаниеиспользованиясобытияотказвдоступежурналарегистрации описаниеобработкирасшифровкикомпоновкиданных описаниепередаваемогофайла описаниетипов определениегруппыатрибутовxs определениегруппымоделиxs определениеограниченияидентичностиxs определениепростоготипаxs определениесоставноготипаxs определениетипадокументаdom определенияxpathxs отборкомпоновкиданных пакетотображаемыхдокументов параметрвыбора параметркомпоновкиданных параметрызаписиjson параметрызаписиxml параметрычтенияxml переопределениеxs планировщик полеанализаданных полекомпоновкиданных построительdom построительзапроса построительотчета построительотчетаанализаданных построительсхемxml поток потоквпамяти почта почтовоесообщение преобразованиеxsl преобразованиекканоническомуxml процессорвыводарезультатакомпоновкиданныхвколлекциюзначений процессорвыводарезультатакомпоновкиданныхвтабличныйдокумент процессоркомпоновкиданных разыменовательпространствименdom рамка расписаниерегламентногозадания расширенноеимяxml результатчтенияданных своднаядиаграмма связьпараметравыбора связьпотипу связьпотипукомпоновкиданных сериализаторxdto сертификатклиентаwindows сертификатклиентафайл сертификаткриптографии сертификатыудостоверяющихцентровwindows сертификатыудостоверяющихцентровфайл сжатиеданных системнаяинформация сообщениепользователю сочетаниеклавиш сравнениезначений стандартнаядатаначала стандартныйпериод схемаxml схемакомпоновкиданных табличныйдокумент текстовыйдокумент тестируемоеприложение типданныхxml уникальныйидентификатор фабрикаxdto файл файловыйпоток фасетдлиныxs фасетколичестваразрядовдробнойчастиxs фасетмаксимальноговключающегозначенияxs фасетмаксимальногоисключающегозначенияxs фасетмаксимальнойдлиныxs фасетминимальноговключающегозначенияxs фасетминимальногоисключающегозначенияxs фасетминимальнойдлиныxs фасетобразцаxs фасетобщегоколичестваразрядовxs фасетперечисленияxs фасетпробельныхсимволовxs фильтрузловdom форматированнаястрока форматированныйдокумент фрагментxs хешированиеданных хранилищезначения цвет чтениеfastinfoset чтениеhtml чтениеjson чтениеxml чтениеzipфайла чтениеданных чтениетекста чтениеузловdom шрифт элементрезультатакомпоновкиданных comsafearray деревозначений массив соответствие списокзначений структура таблицазначений фиксированнаяструктура фиксированноесоответствие фиксированныймассив ",literal:r},contains:[{className:"meta",lexemes:t,begin:"#|&",end:"$",keywords:{"meta-keyword":n+"загрузитьизфайла вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент "},contains:[s]},{className:"function",lexemes:t,variants:[{begin:"процедура|функция",end:"\\)",keywords:"процедура функция"},{begin:"конецпроцедуры|конецфункции",keywords:"конецпроцедуры конецфункции"}],contains:[{begin:"\\(",end:"\\)",endsParent:!0,contains:[{className:"params",lexemes:t,begin:t,end:",",excludeEnd:!0,endsWithParent:!0,keywords:{keyword:"знач",literal:r},contains:[o,i,a]},s]},e.inherit(e.TITLE_MODE,{begin:t})]},s,{className:"symbol",begin:"~",end:";|:",excludeEnd:!0},o,i,a]}}},function(e,t){e.exports=function(e){var t="^[a-zA-Z][a-zA-Z0-9-]*",n="[!@#$^&',?+~`|:]",r=e.COMMENT(";","$"),o={begin:t+"\\s*=",returnBegin:!0,end:/=/,relevance:0,contains:[{className:"attribute",begin:t}]};return{illegal:n,keywords:["ALPHA","BIT","CHAR","CR","CRLF","CTL","DIGIT","DQUOTE","HEXDIG","HTAB","LF","LWSP","OCTET","SP","VCHAR","WSP"].join(" "),contains:[o,r,{className:"symbol",begin:/%b[0-1]+(-[0-1]+|(\.[0-1]+)+){0,1}/},{className:"symbol",begin:/%d[0-9]+(-[0-9]+|(\.[0-9]+)+){0,1}/},{className:"symbol",begin:/%x[0-9A-F]+(-[0-9A-F]+|(\.[0-9A-F]+)+){0,1}/},{className:"symbol",begin:/%[si]/},e.QUOTE_STRING_MODE,e.NUMBER_MODE]}}},function(e,t){e.exports=function(e){return{contains:[{className:"number",begin:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{className:"number",begin:"\\b\\d+\\b",relevance:0},{className:"string",begin:'"(GET|POST|HEAD|PUT|DELETE|CONNECT|OPTIONS|PATCH|TRACE)',end:'"',keywords:"GET POST HEAD PUT DELETE CONNECT OPTIONS PATCH TRACE",illegal:"\\n",relevance:10},{className:"string",begin:/\[/,end:/\]/,illegal:"\\n"},{className:"string",begin:'"',end:'"',illegal:"\\n"}]}}},function(e,t){e.exports=function(e){var t={className:"rest_arg",begin:"[.]{3}",end:"[a-zA-Z_$][a-zA-Z0-9_$]*",relevance:10};return{aliases:["as"],keywords:{keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with",literal:"true false null undefined"},contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{className:"class",beginKeywords:"package",end:"{",contains:[e.TITLE_MODE]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.TITLE_MODE]},{className:"meta",beginKeywords:"import include",end:";",keywords:{"meta-keyword":"import include"}},{className:"function",beginKeywords:"function",end:"[{;]",excludeEnd:!0,illegal:"\\S",contains:[e.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,t]},{begin:":\\s*([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)"}]},e.METHOD_GUARD],illegal:/#/}}},function(e,t){e.exports=function(e){var t="[A-Za-z](_?[A-Za-z0-9.])*",n=e.COMMENT("--","$"),r={begin:"\\s+:\\s+",end:"\\s*(:=|;|\\)|=>|$)",illegal:"[]{}%#'\"",contains:[{beginKeywords:"loop for declare others",endsParent:!0},{className:"keyword",beginKeywords:"not null constant access function procedure in out aliased exception"},{className:"type",begin:t,endsParent:!0,relevance:0}]};return{case_insensitive:!0,keywords:{keyword:"abort else new return abs elsif not reverse abstract end accept entry select access exception of separate aliased exit or some all others subtype and for out synchronized array function overriding at tagged generic package task begin goto pragma terminate body private then if procedure type case in protected constant interface is raise use declare range delay limited record when delta loop rem while digits renames with do mod requeue xor",literal:"True False"},contains:[n,{className:"string",begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{className:"string",begin:/'.'/},{className:"number",begin:"\\b(\\d(_|\\d)*#\\w+(\\.\\w+)?#([eE][-+]?\\d(_|\\d)*)?|\\d(_|\\d)*(\\.\\d(_|\\d)*)?([eE][-+]?\\d(_|\\d)*)?)",relevance:0},{className:"symbol",begin:"'"+t},{className:"title",begin:"(\\bwith\\s+)?(\\bprivate\\s+)?\\bpackage\\s+(\\bbody\\s+)?",end:"(is|$)",keywords:"package body",excludeBegin:!0,excludeEnd:!0,illegal:"[]{}%#'\""},{begin:"(\\b(with|overriding)\\s+)?\\b(function|procedure)\\s+",end:"(\\bis|\\bwith|\\brenames|\\)\\s*;)",keywords:"overriding function procedure with is renames return",returnBegin:!0,contains:[n,{className:"title",begin:"(\\bwith\\s+)?\\b(function|procedure)\\s+",end:"(\\(|\\s+|$)",excludeBegin:!0,excludeEnd:!0,illegal:"[]{}%#'\""},r,{className:"type",begin:"\\breturn\\s+",end:"(\\s+|;|$)",keywords:"return",excludeBegin:!0,excludeEnd:!0,endsParent:!0,illegal:"[]{}%#'\""}]},{className:"type",begin:"\\b(sub)?type\\s+",end:"\\s+",keywords:"type",excludeBegin:!0,illegal:"[]{}%#'\""},r]}}},function(e,t){e.exports=function(e){var t={className:"built_in",begin:"\\b(void|bool|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|string|ref|array|double|float|auto|dictionary)"},n={className:"symbol",begin:"[a-zA-Z0-9_]+@"},r={className:"keyword",begin:"<",end:">",contains:[t,n]};return t.contains=[r],n.contains=[r],{aliases:["asc"],keywords:"for in|0 break continue while do|0 return if else case switch namespace is cast or and xor not get|0 in inout|10 out override set|0 private public const default|0 final shared external mixin|10 enum typedef funcdef this super import from interface",illegal:"(^using\\s+[A-Za-z0-9_\\.]+;$|\\bfunctions*[^\\(])",contains:[{className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"""',end:'"""'},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{beginKeywords:"interface namespace",end:"{",illegal:"[;.\\-]",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+"}]},{beginKeywords:"class",end:"{",illegal:"[;.\\-]",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+",contains:[{begin:"[:,]\\s*",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+"}]}]}]},t,n,{className:"literal",begin:"\\b(null|true|false)"},{className:"number",begin:"(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?f?|\\.\\d+f?)([eE][-+]?\\d+f?)?)"}]}}},function(e,t){e.exports=function(e){var t={className:"number",begin:"[\\$%]\\d+"};return{aliases:["apacheconf"],case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"section",begin:"</?",end:">"},{className:"attribute",begin:/\w+/,relevance:0,keywords:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{end:/$/,relevance:0,keywords:{literal:"on off all"},contains:[{className:"meta",begin:"\\s\\[",end:"\\]$"},{className:"variable",begin:"[\\$%]\\{",end:"\\}",contains:["self",t]},t,e.QUOTE_STRING_MODE]}}],illegal:/\S/}}},function(e,t){e.exports=function(e){var t=e.inherit(e.QUOTE_STRING_MODE,{illegal:""}),n={className:"params",begin:"\\(",end:"\\)",contains:["self",e.C_NUMBER_MODE,t]},r=e.COMMENT("--","$"),o=[r,e.COMMENT("\\(\\*","\\*\\)",{contains:["self",r]}),e.HASH_COMMENT_MODE];return{aliases:["osascript"],keywords:{keyword:"about above after against and around as at back before beginning behind below beneath beside between but by considering contain contains continue copy div does eighth else end equal equals error every exit fifth first for fourth from front get given global if ignoring in into is it its last local me middle mod my ninth not of on onto or over prop property put ref reference repeat returning script second set seventh since sixth some tell tenth that the|0 then third through thru timeout times to transaction try until where while whose with without",literal:"AppleScript false linefeed return pi quote result space tab true",built_in:"alias application boolean class constant date file integer list number real record string text activate beep count delay launch log offset read round run say summarize write character characters contents day frontmost id item length month name paragraph paragraphs rest reverse running time version weekday word words year"},contains:[t,e.C_NUMBER_MODE,{className:"built_in",begin:"\\b(clipboard info|the clipboard|info for|list (disks|folder)|mount volume|path to|(close|open for) access|(get|set) eof|current date|do shell script|get volume settings|random number|set volume|system attribute|system info|time to GMT|(load|run|store) script|scripting components|ASCII (character|number)|localized string|choose (application|color|file|file name|folder|from list|remote application|URL)|display (alert|dialog))\\b|^\\s*return\\b"},{className:"literal",begin:"\\b(text item delimiters|current application|missing value)\\b"},{className:"keyword",begin:"\\b(apart from|aside from|instead of|out of|greater than|isn't|(doesn't|does not) (equal|come before|come after|contain)|(greater|less) than( or equal)?|(starts?|ends|begins?) with|contained by|comes (before|after)|a (ref|reference)|POSIX file|POSIX path|(date|time) string|quoted form)\\b"},{beginKeywords:"on",illegal:"[${=;\\n]",contains:[e.UNDERSCORE_TITLE_MODE,n]}].concat(o),illegal:"//|->|=>|\\[\\["}}},function(e,t){e.exports=function(e){var t="[A-Za-z_][0-9A-Za-z_]*",n={keyword:"if for while var new function do return void else break",literal:"true false null undefined NaN Infinity PI BackSlash DoubleQuote ForwardSlash NewLine SingleQuote Tab",built_in:"Abs Acos Area AreaGeodetic Asin Atan Atan2 Average Boolean Buffer BufferGeodetic Ceil Centroid Clip Console Constrain Contains Cos Count Crosses Cut Date DateAdd DateDiff Day Decode DefaultValue Dictionary Difference Disjoint Distance Distinct DomainCode DomainName Equals Exp Extent Feature FeatureSet FeatureSetById FeatureSetByTitle FeatureSetByUrl Filter First Floor Geometry Guid HasKey Hour IIf IndexOf Intersection Intersects IsEmpty Length LengthGeodetic Log Max Mean Millisecond Min Minute Month MultiPartToSinglePart Multipoint NextSequenceValue Now Number OrderBy Overlaps Point Polygon Polyline Pow Random Relate Reverse Round Second SetGeometry Sin Sort Sqrt Stdev Sum SymmetricDifference Tan Text Timestamp Today ToLocal Top Touches ToUTC TypeOf Union Variance Weekday When Within Year "},r={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},o={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},i={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,o]};o.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,r,e.REGEXP_MODE];var a=o.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["arcade"],keywords:n,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"symbol",begin:"\\$[feature|layer|map|value|view]+"},r,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(return)\\b)\\s*",keywords:"return",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:a}]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:a}],illegal:/\[|%/},{begin:/\$[(.]/}],illegal:/#(?!!)/}}},function(e,t){e.exports=function(e){var t={className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},n={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:'(u8?|U|L)?R"\\(',end:'\\)"'},{begin:"'\\\\?.",end:"'",illegal:"."}]},r={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},o={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(n,{className:"meta-string"}),{className:"meta-string",begin:/<[^\n>]*>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},i=e.IDENT_RE+"\\s*\\(",a={keyword:"int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and or not",built_in:"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"},s=[t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,n];return{aliases:["c","cc","h","c++","h++","hpp"],keywords:a,illegal:"</",contains:s.concat([o,{begin:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",end:">",keywords:a,contains:["self",t]},{begin:e.IDENT_RE+"::",keywords:a},{variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:a,contains:s.concat([{begin:/\(/,end:/\)/,keywords:a,contains:s.concat(["self"]),relevance:0}]),relevance:0},{className:"function",begin:"("+e.IDENT_RE+"[\\*&\\s]+)+"+i,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:a,illegal:/[^\w\s\*&]/,contains:[{begin:i,returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,keywords:a,relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,r,t,{begin:/\(/,end:/\)/,keywords:a,relevance:0,contains:["self",e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,r,t]}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,o]},{className:"class",beginKeywords:"class struct",end:/[{;:]/,contains:[{begin:/</,end:/>/,contains:["self"]},e.TITLE_MODE]}]),exports:{preprocessor:o,strings:n,keywords:a}}}},function(e,t){e.exports=function(e){var t=e.getLanguage("cpp").exports;return{keywords:{keyword:"boolean byte word string String array "+t.keywords.keyword,built_in:"setup loop while catch for if do goto try switch case else default break continue return KeyboardController MouseController SoftwareSerial EthernetServer EthernetClient LiquidCrystal RobotControl GSMVoiceCall EthernetUDP EsploraTFT HttpClient RobotMotor WiFiClient GSMScanner FileSystem Scheduler GSMServer YunClient YunServer IPAddress GSMClient GSMModem Keyboard Ethernet Console GSMBand Esplora Stepper Process WiFiUDP GSM_SMS Mailbox USBHost Firmata PImage Client Server GSMPIN FileIO Bridge Serial EEPROM Stream Mouse Audio Servo File Task GPRS WiFi Wire TFT GSM SPI SD runShellCommandAsynchronously analogWriteResolution retrieveCallingNumber printFirmwareVersion analogReadResolution sendDigitalPortPair noListenOnLocalhost readJoystickButton setFirmwareVersion readJoystickSwitch scrollDisplayRight getVoiceCallStatus scrollDisplayLeft writeMicroseconds delayMicroseconds beginTransmission getSignalStrength runAsynchronously getAsynchronously listenOnLocalhost getCurrentCarrier readAccelerometer messageAvailable sendDigitalPorts lineFollowConfig countryNameWrite runShellCommand readStringUntil rewindDirectory readTemperature setClockDivider readLightSensor endTransmission analogReference detachInterrupt countryNameRead attachInterrupt encryptionType readBytesUntil robotNameWrite readMicrophone robotNameRead cityNameWrite userNameWrite readJoystickY readJoystickX mouseReleased openNextFile scanNetworks noInterrupts digitalWrite beginSpeaker mousePressed isActionDone mouseDragged displayLogos noAutoscroll addParameter remoteNumber getModifiers keyboardRead userNameRead waitContinue processInput parseCommand printVersion readNetworks writeMessage blinkVersion cityNameRead readMessage setDataMode parsePacket isListening setBitOrder beginPacket isDirectory motorsWrite drawCompass digitalRead clearScreen serialEvent rightToLeft setTextSize leftToRight requestFrom keyReleased compassRead analogWrite interrupts WiFiServer disconnect playMelody parseFloat autoscroll getPINUsed setPINUsed setTimeout sendAnalog readSlider analogRead beginWrite createChar motorsStop keyPressed tempoWrite readButton subnetMask debugPrint macAddress writeGreen randomSeed attachGPRS readString sendString remotePort releaseAll mouseMoved background getXChange getYChange answerCall getResult voiceCall endPacket constrain getSocket writeJSON getButton available connected findUntil readBytes exitValue readGreen writeBlue startLoop IPAddress isPressed sendSysex pauseMode gatewayIP setCursor getOemKey tuneWrite noDisplay loadImage switchPIN onRequest onReceive changePIN playFile noBuffer parseInt overflow checkPIN knobRead beginTFT bitClear updateIR bitWrite position writeRGB highByte writeRed setSpeed readBlue noStroke remoteIP transfer shutdown hangCall beginSMS endWrite attached maintain noCursor checkReg checkPUK shiftOut isValid shiftIn pulseIn connect println localIP pinMode getIMEI display noBlink process getBand running beginSD drawBMP lowByte setBand release bitRead prepare pointTo readRed setMode noFill remove listen stroke detach attach noTone exists buffer height bitSet circle config cursor random IRread setDNS endSMS getKey micros millis begin print write ready flush width isPIN blink clear press mkdir rmdir close point yield image BSSID click delay read text move peek beep rect line open seek fill size turn stop home find step tone sqrt RSSI SSID end bit tan cos sin pow map abs max min get run put",literal:"DIGITAL_MESSAGE FIRMATA_STRING ANALOG_MESSAGE REPORT_DIGITAL REPORT_ANALOG INPUT_PULLUP SET_PIN_MODE INTERNAL2V56 SYSTEM_RESET LED_BUILTIN INTERNAL1V1 SYSEX_START INTERNAL EXTERNAL DEFAULT OUTPUT INPUT HIGH LOW"},contains:[t.preprocessor,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}}},function(e,t){e.exports=function(e){return{case_insensitive:!0,aliases:["arm"],lexemes:"\\.?"+e.IDENT_RE,keywords:{meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 pc lr sp ip sl sb fp a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 {PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @"},contains:[{className:"keyword",begin:"\\b(adc|(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|wfe|wfi|yield)(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?[sptrx]?",end:"\\s"},e.COMMENT("[;@]","$",{relevance:0}),e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{begin:"[#$=]?0x[0-9a-f]+"},{begin:"[#$=]?0b[01]+"},{begin:"[#$=]\\d+"},{begin:"\\b\\d+"}],relevance:0},{className:"symbol",variants:[{begin:"^[a-z_\\.\\$][a-z0-9_\\.\\$]+"},{begin:"^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"[=#]\\w+"}],relevance:0}]}}},function(e,t){e.exports=function(e){var t={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:"[A-Za-z0-9\\._:-]+",relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/},{begin:/[^\s"'=<>`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],case_insensitive:!0,contains:[{className:"meta",begin:"<!DOCTYPE",end:">",relevance:10,contains:[{begin:"\\[",end:"\\]"}]},e.COMMENT("\x3c!--","--\x3e",{relevance:10}),{begin:"<\\!\\[CDATA\\[",end:"\\]\\]>",relevance:10},{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{begin:/<\?(php)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},e.inherit(e.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]},{className:"tag",begin:"<style(?=\\s|>|$)",end:">",keywords:{name:"style"},contains:[t],starts:{end:"</style>",returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:"<script(?=\\s|>|$)",end:">",keywords:{name:"script"},contains:[t],starts:{end:"<\/script>",returnEnd:!0,subLanguage:["actionscript","javascript","handlebars","xml"]}},{className:"tag",begin:"</?",end:"/?>",contains:[{className:"name",begin:/[^\/><\s]+/,relevance:0},t]}]}}},function(e,t){e.exports=function(e){return{aliases:["adoc"],contains:[e.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10}),e.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section",relevance:10,variants:[{begin:"^(={1,5}) .+?( \\1)?$"},{begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta",begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta",begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n",end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n",end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$",contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{className:"bullet",begin:"^(\\*+|\\-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol",begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{className:"strong",begin:"\\B\\*(?![\\*\\s])",end:"(\\n{2}|\\*)",contains:[{begin:"\\\\*\\w",relevance:0}]},{className:"emphasis",begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0}],relevance:0},{className:"emphasis",begin:"_(?![_\\s])",end:"(\\n{2}|_)",relevance:0},{className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{className:"code",begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]",end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+\\[.*?\\]",returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}]}}},function(e,t){e.exports=function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance";return{keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"aspect",end:/[{;=]/,excludeEnd:!0,illegal:/[:;"\[\]]/,contains:[{beginKeywords:"extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton"},e.UNDERSCORE_TITLE_MODE,{begin:/\([^\)]*/,end:/[)]+/,keywords:t+" get set args call",excludeEnd:!1}]},{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,relevance:0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"pointcut after before around throwing returning",end:/[)]/,excludeEnd:!1,illegal:/["\[\]]/,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.UNDERSCORE_TITLE_MODE]}]},{begin:/[:]/,returnBegin:!0,end:/[{;]/,relevance:0,excludeEnd:!1,keywords:t,illegal:/["\[\]]/,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",keywords:t+" get set args call",relevance:0},e.QUOTE_STRING_MODE]},{beginKeywords:"new throw",relevance:0},{className:"function",begin:/\w+ +\w+(\.)?\w+\s*\([^\)]*\)\s*((throws)[\w\s,]+)?[\{;]/,returnBegin:!0,end:/[{;=]/,keywords:t,excludeEnd:!0,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,relevance:0,keywords:t,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}}},function(e,t){e.exports=function(e){var t={begin:"`[\\s\\S]"};return{case_insensitive:!0,aliases:["ahk"],keywords:{keyword:"Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group",literal:"A|0 true false NOT AND OR",built_in:"ComSpec Clipboard ClipboardAll ErrorLevel"},contains:[{className:"built_in",begin:"A_[a-zA-Z0-9]+"},t,e.inherit(e.QUOTE_STRING_MODE,{contains:[t]}),e.COMMENT(";","$",{relevance:0}),e.C_BLOCK_COMMENT_MODE,{className:"number",begin:e.NUMBER_RE,relevance:0},{className:"subst",begin:"%(?=[a-zA-Z0-9#_$@])",end:"%",illegal:"[^a-zA-Z0-9#_$@]"},{className:"built_in",begin:"^\\s*\\w+\\s*,"},{className:"meta",begin:"^\\s*#w+",end:"$",relevance:0},{className:"symbol",contains:[t],variants:[{begin:'^[^\\n";]+::(?!=)'},{begin:'^[^\\n";]+:(?!=)',relevance:0}]},{begin:",\\s*,"}]}}},function(e,t){e.exports=function(e){var t={variants:[e.COMMENT(";","$",{relevance:0}),e.COMMENT("#cs","#ce"),e.COMMENT("#comments-start","#comments-end")]},n={begin:"\\$[A-z0-9_]+"},r={className:"string",variants:[{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]},o={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{case_insensitive:!0,illegal:/\/\*/,keywords:{keyword:"ByRef Case Const ContinueCase ContinueLoop Default Dim Do Else ElseIf EndFunc EndIf EndSelect EndSwitch EndWith Enum Exit ExitLoop For Func Global If In Local Next ReDim Return Select Static Step Switch Then To Until Volatile WEnd While With",built_in:"Abs ACos AdlibRegister AdlibUnRegister Asc AscW ASin Assign ATan AutoItSetOption AutoItWinGetTitle AutoItWinSetTitle Beep Binary BinaryLen BinaryMid BinaryToString BitAND BitNOT BitOR BitRotate BitShift BitXOR BlockInput Break Call CDTray Ceiling Chr ChrW ClipGet ClipPut ConsoleRead ConsoleWrite ConsoleWriteError ControlClick ControlCommand ControlDisable ControlEnable ControlFocus ControlGetFocus ControlGetHandle ControlGetPos ControlGetText ControlHide ControlListView ControlMove ControlSend ControlSetText ControlShow ControlTreeView Cos Dec DirCopy DirCreate DirGetSize DirMove DirRemove DllCall DllCallAddress DllCallbackFree DllCallbackGetPtr DllCallbackRegister DllClose DllOpen DllStructCreate DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData DriveGetDrive DriveGetFileSystem DriveGetLabel DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus EnvGet EnvSet EnvUpdate Eval Execute Exp FileChangeDir FileClose FileCopy FileCreateNTFSLink FileCreateShortcut FileDelete FileExists FileFindFirstFile FileFindNextFile FileFlush FileGetAttrib FileGetEncoding FileGetLongName FileGetPos FileGetShortcut FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall FileMove FileOpen FileOpenDialog FileRead FileReadLine FileReadToArray FileRecycle FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName GUICreate GUICtrlCreateAvi GUICtrlCreateButton GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem GUICtrlCreateTreeView GUICtrlCreateTreeViewItem GUICtrlCreateUpdown GUICtrlDelete GUICtrlGetHandle GUICtrlGetState GUICtrlRead GUICtrlRecvMsg GUICtrlRegisterListViewSort GUICtrlSendMsg GUICtrlSendToDummy GUICtrlSetBkColor GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetDefBkColor GUICtrlSetDefColor GUICtrlSetFont GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle GUICtrlSetTip GUIDelete GUIGetCursorInfo GUIGetMsg GUIGetStyle GUIRegisterMsg GUISetAccelerators GUISetBkColor GUISetCoord GUISetCursor GUISetFont GUISetHelp GUISetIcon GUISetOnEvent GUISetState GUISetStyle GUIStartGroup GUISwitch Hex HotKeySet HttpSetProxy HttpSetUserAgent HWnd InetClose InetGet InetGetInfo InetGetSize InetRead IniDelete IniRead IniReadSection IniReadSectionNames IniRenameSection IniWrite IniWriteSection InputBox Int IsAdmin IsArray IsBinary IsBool IsDeclared IsDllStruct IsFloat IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch ProcessClose ProcessExists ProcessGetStats ProcessList ProcessSetPriority ProcessWait ProcessWaitClose ProgressOff ProgressOn ProgressSet Ptr Random RegDelete RegEnumKey RegEnumVal RegRead RegWrite Round Run RunAs RunAsWait RunWait Send SendKeepActive SetError SetExtended ShellExecute ShellExecuteWait Shutdown Sin Sleep SoundPlay SoundSetWaveVolume SplashImageOn SplashOff SplashTextOn Sqrt SRandom StatusbarGetText StderrRead StdinWrite StdioClose StdoutRead String StringAddCR StringCompare StringFormat StringFromASCIIArray StringInStr StringIsAlNum StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft StringLen StringLower StringMid StringRegExp StringRegExpReplace StringReplace StringReverse StringRight StringSplit StringStripCR StringStripWS StringToASCIIArray StringToBinary StringTrimLeft StringTrimRight StringUpper Tan TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIP TCPRecv TCPSend TCPShutdown, UDPShutdown TCPStartup, UDPStartup TimerDiff TimerInit ToolTip TrayCreateItem TrayCreateMenu TrayGetMsg TrayItemDelete TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent TrayItemSetState TrayItemSetText TraySetClick TraySetIcon TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip UBound UDPBind UDPCloseSocket UDPOpen UDPRecv UDPSend VarGetType WinActivate WinActive WinClose WinExists WinFlash WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait",literal:"True False And Null Not Or"},contains:[t,n,r,o,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"comments include include-once NoTrayIcon OnAutoItStartRegister pragma compile RequireAdmin"},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",keywords:{"meta-keyword":"include"},end:"$",contains:[r,{className:"meta-string",variants:[{begin:"<",end:">"},{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]}]},r,t]},{className:"symbol",begin:"@[A-z0-9_]+"},{className:"function",beginKeywords:"Func",end:"$",illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:[n,r,o]}]}]}}},function(e,t){e.exports=function(e){return{case_insensitive:!0,lexemes:"\\.?"+e.IDENT_RE,keywords:{keyword:"adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub subi swap tst wdr",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf",meta:".byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list .listmac .macro .nolist .org .set"},contains:[e.C_BLOCK_COMMENT_MODE,e.COMMENT(";","$",{relevance:0}),e.C_NUMBER_MODE,e.BINARY_NUMBER_MODE,{className:"number",begin:"\\b(\\$[a-zA-Z0-9]+|0o[0-7]+)"},e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",illegal:"[^\\\\][^']"},{className:"symbol",begin:"^[A-Za-z0-9_.$]+:"},{className:"meta",begin:"#",end:"$"},{className:"subst",begin:"@[0-9]+"}]}}},function(e,t){e.exports=function(e){return{keywords:{keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10"},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]}}},function(e,t){e.exports=function(e){return{keywords:"false int abstract private char boolean static null if for true while long throw finally protected final return void enum else break new catch byte super case short default double public try this switch continue reverse firstfast firstonly forupdate nofetch sum avg minof maxof count order group by asc desc index hint like dispaly edit client server ttsbegin ttscommit str real date container anytype common div mod",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$"},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:":",contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]}]}}},function(e,t){e.exports=function(e){var t={className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t,{className:"variable",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]}]};return{aliases:["sh","zsh"],lexemes:/\b-?[a-z\._]+\b/,keywords:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},contains:[{className:"meta",begin:/^#![^\n]+sh\s*$/,relevance:10},{className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},e.HASH_COMMENT_MODE,n,{className:"string",begin:/'/,end:/'/},t]}}},function(e,t){e.exports=function(e){return{case_insensitive:!0,illegal:"^.",lexemes:"[a-zA-Z][a-zA-Z0-9_$%!#]*",keywords:{keyword:"ABS ASC AND ATN AUTO|0 BEEP BLOAD|10 BSAVE|10 CALL CALLS CDBL CHAIN CHDIR CHR$|10 CINT CIRCLE CLEAR CLOSE CLS COLOR COM COMMON CONT COS CSNG CSRLIN CVD CVI CVS DATA DATE$ DEFDBL DEFINT DEFSNG DEFSTR DEF|0 SEG USR DELETE DIM DRAW EDIT END ENVIRON ENVIRON$ EOF EQV ERASE ERDEV ERDEV$ ERL ERR ERROR EXP FIELD FILES FIX FOR|0 FRE GET GOSUB|10 GOTO HEX$ IF|0 THEN ELSE|0 INKEY$ INP INPUT INPUT# INPUT$ INSTR IMP INT IOCTL IOCTL$ KEY ON OFF LIST KILL LEFT$ LEN LET LINE LLIST LOAD LOC LOCATE LOF LOG LPRINT USING LSET MERGE MID$ MKDIR MKD$ MKI$ MKS$ MOD NAME NEW NEXT NOISE NOT OCT$ ON OR PEN PLAY STRIG OPEN OPTION BASE OUT PAINT PALETTE PCOPY PEEK PMAP POINT POKE POS PRINT PRINT] PSET PRESET PUT RANDOMIZE READ REM RENUM RESET|0 RESTORE RESUME RETURN|0 RIGHT$ RMDIR RND RSET RUN SAVE SCREEN SGN SHELL SIN SOUND SPACE$ SPC SQR STEP STICK STOP STR$ STRING$ SWAP SYSTEM TAB TAN TIME$ TIMER TROFF TRON TO USR VAL VARPTR VARPTR$ VIEW WAIT WHILE WEND WIDTH WINDOW WRITE XOR"},contains:[e.QUOTE_STRING_MODE,e.COMMENT("REM","$",{relevance:10}),e.COMMENT("'","$",{relevance:0}),{className:"symbol",begin:"^[0-9]+ ",relevance:10},{className:"number",begin:"\\b([0-9]+[0-9edED.]*[#!]?)",relevance:0},{className:"number",begin:"(&[hH][0-9a-fA-F]{1,4})"},{className:"number",begin:"(&[oO][0-7]{1,6})"}]}}},function(e,t){e.exports=function(e){return{contains:[{className:"attribute",begin:/</,end:/>/},{begin:/::=/,starts:{end:/$/,contains:[{begin:/</,end:/>/},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}}]}}},function(e,t){e.exports=function(e){var t={className:"literal",begin:"[\\+\\-]",relevance:0};return{aliases:["bf"],contains:[e.COMMENT("[^\\[\\]\\.,\\+\\-<> \r\n]","[\\[\\]\\.,\\+\\-<> \r\n]",{returnEnd:!0,relevance:0}),{className:"title",begin:"[\\[\\]]",relevance:0},{className:"string",begin:"[\\.,]",relevance:0},{begin:/\+\+|\-\-/,returnBegin:!0,contains:[t]},t]}}},function(e,t){e.exports=function(e){var t="div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to until while with var",n=[e.C_LINE_COMMENT_MODE,e.COMMENT(/\{/,/\}/,{relevance:0}),e.COMMENT(/\(\*/,/\*\)/,{relevance:10})],r={className:"string",begin:/'/,end:/'/,contains:[{begin:/''/}]},o={className:"string",begin:/(#\d+)+/},i={className:"function",beginKeywords:"procedure",end:/[:;]/,keywords:"procedure|10",contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:t,contains:[r,o]}].concat(n)},a={className:"class",begin:"OBJECT (Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query) (\\d+) ([^\\r\\n]+)",returnBegin:!0,contains:[e.TITLE_MODE,i]};return{case_insensitive:!0,keywords:{keyword:t,literal:"false true"},illegal:/\/\*/,contains:[r,o,{className:"number",begin:"\\b\\d+(\\.\\d+)?(DT|D|T)",relevance:0},{className:"string",begin:'"',end:'"'},e.NUMBER_MODE,a,i]}}},function(e,t){e.exports=function(e){return{aliases:["capnp"],keywords:{keyword:"struct enum interface union group import using const annotation extends in of on as with from fixed",built_in:"Void Bool Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 Float32 Float64 Text Data AnyPointer AnyStruct Capability List",literal:"true false"},contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.HASH_COMMENT_MODE,{className:"meta",begin:/@0x[\w\d]{16};/,illegal:/\n/},{className:"symbol",begin:/@\d+\b/},{className:"class",beginKeywords:"struct enum",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{className:"class",beginKeywords:"interface",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]}]}}},function(e,t){e.exports=function(e){var t="assembly module package import alias class interface object given value assign void function new of extends satisfies abstracts in out return break continue throw assert dynamic if else switch case for while try catch finally then let this outer super is exists nonempty",n={className:"subst",excludeBegin:!0,excludeEnd:!0,begin:/``/,end:/``/,keywords:t,relevance:10},r=[{className:"string",begin:'"""',end:'"""',relevance:10},{className:"string",begin:'"',end:'"',contains:[n]},{className:"string",begin:"'",end:"'"},{className:"number",begin:"#[0-9a-fA-F_]+|\\$[01_]+|[0-9_]+(?:\\.[0-9_](?:[eE][+-]?\\d+)?)?[kMGTPmunpf]?",relevance:0}];return n.contains=r,{keywords:{keyword:t+" shared abstract formal default actual variable late native deprecatedfinal sealed annotation suppressWarnings small",meta:"doc by license see throws tagged"},illegal:"\\$[^01]|#[^0-9a-fA-F]",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),{className:"meta",begin:'@[a-z]\\w*(?:\\:"[^"]*")?'}].concat(r)}}},function(e,t){e.exports=function(e){return{aliases:["clean","icl","dcl"],keywords:{keyword:"if let in with where case of class instance otherwise implementation definition system module from import qualified as special code inline foreign export ccall stdcall generic derive infix infixl infixr",literal:"True False"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{begin:"->|<-[|:]?|::|#!?|>>=|\\{\\||\\|\\}|:==|=:|\\.\\.|<>|`"}]}}},function(e,t){e.exports=function(e){var t="[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9/;:]*",n={begin:t,relevance:0},r={className:"number",begin:"[-+]?\\d+(\\.\\d+)?",relevance:0},o=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),i=e.COMMENT(";","$",{relevance:0}),a={className:"literal",begin:/\b(true|false|nil)\b/},s={begin:"[\\[\\{]",end:"[\\]\\}]"},l={className:"comment",begin:"\\^"+t},u=e.COMMENT("\\^\\{","\\}"),c={className:"symbol",begin:"[:]{1,2}"+t},f={begin:"\\(",end:"\\)"},d={endsWithParent:!0,relevance:0},p={keywords:{"builtin-name":"def defonce cond apply if-not if-let if not not= = < > <= >= == + / * - rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit defmacro defn defn- macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy defstruct first rest cons defprotocol cast coll deftype defrecord last butlast sigs reify second ffirst fnext nfirst nnext defmulti defmethod meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize"},lexemes:t,className:"name",begin:t,starts:d},m=[f,o,l,u,i,c,s,r,a,n];return f.contains=[e.COMMENT("comment",""),p,d],d.contains=m,s.contains=m,u.contains=[s],{aliases:["clj"],illegal:/\S/,contains:[f,o,l,u,i,c,s,r,a]}}},function(e,t){e.exports=function(e){return{contains:[{className:"meta",begin:/^([\w.-]+|\s*#_)=>/,starts:{end:/$/,subLanguage:"clojure"}}]}}},function(e,t){e.exports=function(e){return{aliases:["cmake.in"],case_insensitive:!0,keywords:{keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined"},contains:[{className:"variable",begin:"\\${",end:"}"},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]}}},function(e,t){e.exports=function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={className:"subst",begin:/#\{/,end:/}/,keywords:t},o=[e.BINARY_NUMBER_MODE,e.inherit(e.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}}),{className:"string",variants:[{begin:/'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,contains:[e.BACKSLASH_ESCAPE]},{begin:/"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,r]},{begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,r]}]},{className:"regexp",variants:[{begin:"///",end:"///",contains:[r,e.HASH_COMMENT_MODE]},{begin:"//[gim]*",relevance:0},{begin:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{begin:"@"+n},{subLanguage:"javascript",excludeBegin:!0,excludeEnd:!0,variants:[{begin:"```",end:"```"},{begin:"`",end:"`"}]}];r.contains=o;var i=e.inherit(e.TITLE_MODE,{begin:n}),a={className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(o)}]};return{aliases:["coffee","cson","iced"],keywords:t,illegal:/\/\*/,contains:o.concat([e.COMMENT("###","###"),e.HASH_COMMENT_MODE,{className:"function",begin:"^\\s*"+n+"\\s*=\\s*(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[i,a]},{begin:/[:\(,=]\s*/,relevance:0,contains:[{className:"function",begin:"(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[a]}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[i]},i]},{begin:n+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}}},function(e,t){e.exports=function(e){return{keywords:{keyword:"_ as at cofix else end exists exists2 fix for forall fun if IF in let match mod Prop return Set then Type using where with Abort About Add Admit Admitted All Arguments Assumptions Axiom Back BackTo Backtrack Bind Blacklist Canonical Cd Check Class Classes Close Coercion Coercions CoFixpoint CoInductive Collection Combined Compute Conjecture Conjectures Constant constr Constraint Constructors Context Corollary CreateHintDb Cut Declare Defined Definition Delimit Dependencies DependentDerive Drop eauto End Equality Eval Example Existential Existentials Existing Export exporting Extern Extract Extraction Fact Field Fields File Fixpoint Focus for From Function Functional Generalizable Global Goal Grab Grammar Graph Guarded Heap Hint HintDb Hints Hypotheses Hypothesis ident Identity If Immediate Implicit Import Include Inductive Infix Info Initial Inline Inspect Instance Instances Intro Intros Inversion Inversion_clear Language Left Lemma Let Libraries Library Load LoadPath Local Locate Ltac ML Mode Module Modules Monomorphic Morphism Next NoInline Notation Obligation Obligations Opaque Open Optimize Options Parameter Parameters Parametric Path Paths pattern Polymorphic Preterm Print Printing Program Projections Proof Proposition Pwd Qed Quit Rec Record Recursive Redirect Relation Remark Remove Require Reserved Reset Resolve Restart Rewrite Right Ring Rings Save Scheme Scope Scopes Script Search SearchAbout SearchHead SearchPattern SearchRewrite Section Separate Set Setoid Show Solve Sorted Step Strategies Strategy Structure SubClass Table Tables Tactic Term Test Theorem Time Timeout Transparent Type Typeclasses Types Undelimit Undo Unfocus Unfocused Unfold Universe Universes Unset Unshelve using Variable Variables Variant Verbose Visibility where with",built_in:"abstract absurd admit after apply as assert assumption at auto autorewrite autounfold before bottom btauto by case case_eq cbn cbv change classical_left classical_right clear clearbody cofix compare compute congruence constr_eq constructor contradict contradiction cut cutrewrite cycle decide decompose dependent destruct destruction dintuition discriminate discrR do double dtauto eapply eassumption eauto ecase econstructor edestruct ediscriminate eelim eexact eexists einduction einjection eleft elim elimtype enough equality erewrite eright esimplify_eq esplit evar exact exactly_once exfalso exists f_equal fail field field_simplify field_simplify_eq first firstorder fix fold fourier functional generalize generalizing gfail give_up has_evar hnf idtac in induction injection instantiate intro intro_pattern intros intuition inversion inversion_clear is_evar is_var lapply lazy left lia lra move native_compute nia nsatz omega once pattern pose progress proof psatz quote record red refine reflexivity remember rename repeat replace revert revgoals rewrite rewrite_strat right ring ring_simplify rtauto set setoid_reflexivity setoid_replace setoid_rewrite setoid_symmetry setoid_transitivity shelve shelve_unifiable simpl simple simplify_eq solve specialize split split_Rabs split_Rmult stepl stepr subst sum swap symmetry tactic tauto time timeout top transitivity trivial try tryif unfold unify until using vm_compute with"},contains:[e.QUOTE_STRING_MODE,e.COMMENT("\\(\\*","\\*\\)"),e.C_NUMBER_MODE,{className:"type",excludeBegin:!0,begin:"\\|\\s*",end:"\\w+"},{begin:/[-=]>/}]}}},function(e,t){e.exports=function(e){return{case_insensitive:!0,aliases:["cos","cls"],keywords:"property parameter class classmethod clientmethod extends as break catch close continue do d|0 else elseif for goto halt hang h|0 if job j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 tcommit throw trollback try tstart use view while write w|0 xecute x|0 zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit zsync ascii",contains:[{className:"number",begin:"\\b(\\d+(\\.\\d*)?|\\.\\d+)",relevance:0},{className:"string",variants:[{begin:'"',end:'"',contains:[{begin:'""',relevance:0}]}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"comment",begin:/;/,end:"$",relevance:0},{className:"built_in",begin:/(?:\$\$?|\.\.)\^?[a-zA-Z]+/},{className:"built_in",begin:/\$\$\$[a-zA-Z]+/},{className:"built_in",begin:/%[a-z]+(?:\.[a-z]+)*/},{className:"symbol",begin:/\^%?[a-zA-Z][\w]*/},{className:"keyword",begin:/##class|##super|#define|#dim/},{begin:/&sql\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,subLanguage:"sql"},{begin:/&(js|jscript|javascript)</,end:/>/,excludeBegin:!0,excludeEnd:!0,subLanguage:"javascript"},{begin:/&html<\s*</,end:/>\s*>/,subLanguage:"xml"}]}}},function(e,t){e.exports=function(e){var t="group clone ms master location colocation order fencing_topology rsc_ticket acl_target acl_group user role tag xml";return{aliases:["crm","pcmk"],case_insensitive:!0,keywords:{keyword:"params meta operations op rule attributes utilization read write deny defined not_defined in_range date spec in ref reference attribute type xpath version and or lt gt tag lte gte eq ne \\ number string",literal:"Master Started Slave Stopped start promote demote stop monitor true false"},contains:[e.HASH_COMMENT_MODE,{beginKeywords:"node",starts:{end:"\\s*([\\w_-]+:)?",starts:{className:"title",end:"\\s*[\\$\\w_][\\w_-]*"}}},{beginKeywords:"primitive rsc_template",starts:{className:"title",end:"\\s*[\\$\\w_][\\w_-]*",starts:{end:"\\s*@?[\\w_][\\w_\\.:-]*"}}},{begin:"\\b("+t.split(" ").join("|")+")\\s+",keywords:t,starts:{className:"title",end:"[\\$\\w_][\\w_-]*"}},{beginKeywords:"property rsc_defaults op_defaults",starts:{className:"title",end:"\\s*([\\w_-]+:)?"}},e.QUOTE_STRING_MODE,{className:"meta",begin:"(ocf|systemd|service|lsb):[\\w_:-]+",relevance:0},{className:"number",begin:"\\b\\d+(\\.\\d+)?(ms|s|h|m)?",relevance:0},{className:"literal",begin:"[-]?(infinity|inf)",relevance:0},{className:"attr",begin:/([A-Za-z\$_\#][\w_-]+)=/,relevance:0},{className:"tag",begin:"</?",end:"/?>",relevance:0}]}}},function(e,t){e.exports=function(e){var t="(_[uif](8|16|32|64))?",n="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\][=?]?",r={keyword:"abstract alias as as? asm begin break case class def do else elsif end ensure enum extend for fun if include instance_sizeof is_a? lib macro module next nil? of out pointerof private protected rescue responds_to? return require select self sizeof struct super then type typeof union uninitialized unless until when while with yield __DIR__ __END_LINE__ __FILE__ __LINE__",literal:"false nil true"},o={className:"subst",begin:"#{",end:"}",keywords:r},i={className:"template-variable",variants:[{begin:"\\{\\{",end:"\\}\\}"},{begin:"\\{%",end:"%\\}"}],keywords:r};function a(e,t){var n=[{begin:e,end:t}];return n[0].contains=n,n}var s={className:"string",contains:[e.BACKSLASH_ESCAPE,o],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%w?\\(",end:"\\)",contains:a("\\(","\\)")},{begin:"%w?\\[",end:"\\]",contains:a("\\[","\\]")},{begin:"%w?{",end:"}",contains:a("{","}")},{begin:"%w?<",end:">",contains:a("<",">")},{begin:"%w?/",end:"/"},{begin:"%w?%",end:"%"},{begin:"%w?-",end:"-"},{begin:"%w?\\|",end:"\\|"},{begin:/<<-\w+$/,end:/^\s*\w+$/}],relevance:0},l=[i,s,{className:"string",variants:[{begin:"%q\\(",end:"\\)",contains:a("\\(","\\)")},{begin:"%q\\[",end:"\\]",contains:a("\\[","\\]")},{begin:"%q{",end:"}",contains:a("{","}")},{begin:"%q<",end:">",contains:a("<",">")},{begin:"%q/",end:"/"},{begin:"%q%",end:"%"},{begin:"%q-",end:"-"},{begin:"%q\\|",end:"\\|"},{begin:/<<-'\w+'$/,end:/^\s*\w+$/}],relevance:0},{begin:"(!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~)\\s*",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,o],variants:[{begin:"//[a-z]*",relevance:0},{begin:"/",end:"/[a-z]*"},{begin:"%r\\(",end:"\\)",contains:a("\\(","\\)")},{begin:"%r\\[",end:"\\]",contains:a("\\[","\\]")},{begin:"%r{",end:"}",contains:a("{","}")},{begin:"%r<",end:">",contains:a("<",">")},{begin:"%r/",end:"/"},{begin:"%r%",end:"%"},{begin:"%r-",end:"-"},{begin:"%r\\|",end:"\\|"}]}],relevance:0},{className:"regexp",contains:[e.BACKSLASH_ESCAPE,o],variants:[{begin:"%r\\(",end:"\\)",contains:a("\\(","\\)")},{begin:"%r\\[",end:"\\]",contains:a("\\[","\\]")},{begin:"%r{",end:"}",contains:a("{","}")},{begin:"%r<",end:">",contains:a("<",">")},{begin:"%r/",end:"/"},{begin:"%r%",end:"%"},{begin:"%r-",end:"-"},{begin:"%r\\|",end:"\\|"}],relevance:0},{className:"meta",begin:"@\\[",end:"\\]",contains:[e.inherit(e.QUOTE_STRING_MODE,{className:"meta-string"})]},e.HASH_COMMENT_MODE,{className:"class",beginKeywords:"class module struct",end:"$|;",illegal:/=/,contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<"}]},{className:"class",beginKeywords:"lib enum union",end:"$|;",illegal:/=/,contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"})],relevance:10},{className:"function",beginKeywords:"def",end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:n,endsParent:!0})]},{className:"function",beginKeywords:"fun macro",end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:n,endsParent:!0})],relevance:5},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":",contains:[s,{begin:n}],relevance:0},{className:"number",variants:[{begin:"\\b0b([01_]*[01])"+t},{begin:"\\b0o([0-7_]*[0-7])"+t},{begin:"\\b0x([A-Fa-f0-9_]*[A-Fa-f0-9])"+t},{begin:"\\b(([0-9][0-9_]*[0-9]|[0-9])(\\.[0-9_]*[0-9])?([eE][+-]?[0-9_]*[0-9])?)"+t}],relevance:0}];return o.contains=l,i.contains=l.slice(1),{aliases:["cr"],lexemes:"[a-zA-Z_]\\w*[!?=]?",keywords:r,contains:l}}},function(e,t){e.exports=function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},n={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},r={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},o=e.inherit(r,{illegal:/\n/}),i={className:"subst",begin:"{",end:"}",keywords:t},a=e.inherit(i,{illegal:/\n/}),s={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,a]},l={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},i]},u=e.inherit(l,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},a]});i.contains=[l,s,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,n,e.C_BLOCK_COMMENT_MODE],a.contains=[u,s,o,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,n,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var c={variants:[l,s,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},f=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?";return{aliases:["csharp"],keywords:t,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:"</?",end:">"}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},c,n,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:,]/,contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+f+"\\s+)+"+e.IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,relevance:0,contains:[c,n,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}}},function(e,t){e.exports=function(e){return{case_insensitive:!1,lexemes:"[a-zA-Z][a-zA-Z0-9_-]*",keywords:{keyword:"base-uri child-src connect-src default-src font-src form-action frame-ancestors frame-src img-src media-src object-src plugin-types report-uri sandbox script-src style-src"},contains:[{className:"string",begin:"'",end:"'"},{className:"attribute",begin:"^Content",end:":",excludeEnd:!0}]}}},function(e,t){e.exports=function(e){var t={begin:/[A-Z\_\.\-]+\s*:/,returnBegin:!0,end:";",endsWithParent:!0,contains:[{className:"attribute",begin:/\S/,end:":",excludeEnd:!0,starts:{endsWithParent:!0,excludeEnd:!0,contains:[{begin:/[\w-]+\(/,returnBegin:!0,contains:[{className:"built_in",begin:/[\w-]+/},{begin:/\(/,end:/\)/,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}]},e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"#[0-9A-Fa-f]+"},{className:"meta",begin:"!important"}]}}]};return{case_insensitive:!0,illegal:/[=\/|'\$]/,contains:[e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/},{className:"selector-class",begin:/\.[A-Za-z0-9_-]+/},{className:"selector-attr",begin:/\[/,end:/\]/,illegal:"$"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"@(font-face|page)",lexemes:"[a-z-]+",keywords:"font-face page"},{begin:"@",end:"[{;]",illegal:/:/,contains:[{className:"keyword",begin:/\w+/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},{begin:"{",end:"}",illegal:/\S/,contains:[e.C_BLOCK_COMMENT_MODE,t]}]}}},function(e,t){e.exports=function(e){var t="((0|[1-9][\\d_]*)|0[bB][01_]+|0[xX]([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))",n="\\\\(['\"\\?\\\\abfnrtv]|u[\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\dA-Fa-f]{2}|U[\\dA-Fa-f]{8})|&[a-zA-Z\\d]{2,};",r={className:"number",begin:"\\b"+t+"(L|u|U|Lu|LU|uL|UL)?",relevance:0},o={className:"number",begin:"\\b(((0[xX](([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)\\.([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)|\\.?([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))[pP][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))|((0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(\\.\\d*|([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)))|\\d+\\.(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)|\\.(0|[1-9][\\d_]*)([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))?))([fF]|L|i|[fF]i|Li)?|"+t+"(i|[fF]i|Li))",relevance:0},i={className:"string",begin:"'("+n+"|.)",end:"'",illegal:"."},a={className:"string",begin:'"',contains:[{begin:n,relevance:0}],end:'"[cwd]?'},s=e.COMMENT("\\/\\+","\\+\\/",{contains:["self"],relevance:10});return{lexemes:e.UNDERSCORE_IDENT_RE,keywords:{keyword:"abstract alias align asm assert auto body break byte case cast catch class const continue debug default delete deprecated do else enum export extern final finally for foreach foreach_reverse|10 goto if immutable import in inout int interface invariant is lazy macro mixin module new nothrow out override package pragma private protected public pure ref return scope shared static struct super switch synchronized template this throw try typedef typeid typeof union unittest version void volatile while with __FILE__ __LINE__ __gshared|10 __thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__",built_in:"bool cdouble cent cfloat char creal dchar delegate double dstring float function idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar wstring",literal:"false null true"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,{className:"string",begin:'x"[\\da-fA-F\\s\\n\\r]*"[cwd]?',relevance:10},a,{className:"string",begin:'[rq]"',end:'"[cwd]?',relevance:5},{className:"string",begin:"`",end:"`[cwd]?"},{className:"string",begin:'q"\\{',end:'\\}"'},o,r,i,{className:"meta",begin:"^#!",end:"$",relevance:5},{className:"meta",begin:"#(line)",end:"$",relevance:5},{className:"keyword",begin:"@[a-zA-Z_][a-zA-Z_\\d]*"}]}}},function(e,t){e.exports=function(e){return{aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$"},{begin:"^.+?\\n[=-]{2,}$"}]},{begin:"<",end:">",subLanguage:"xml",relevance:0},{className:"bullet",begin:"^([*+-]|(\\d+\\.))\\s+"},{className:"strong",begin:"[*_]{2}.+?[*_]{2}"},{className:"emphasis",variants:[{begin:"\\*.+?\\*"},{begin:"_.+?_",relevance:0}]},{className:"quote",begin:"^>\\s+",end:"$"},{className:"code",variants:[{begin:"^```w*s*$",end:"^```s*$"},{begin:"`.+?`"},{begin:"^( {4}|\t)",end:"$",relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},{begin:"\\[.+?\\][\\(\\[].*?[\\)\\]]",returnBegin:!0,contains:[{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0,relevance:0},{className:"link",begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}],relevance:10},{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}},function(e,t){e.exports=function(e){var t={className:"subst",variants:[{begin:"\\${",end:"}"},{begin:"\\$[A-Za-z0-9_]+"}],keywords:"true false null this is new super"},n={className:"string",variants:[{begin:"r'''",end:"'''"},{begin:'r"""',end:'"""'},{begin:"r'",end:"'",illegal:"\\n"},{begin:'r"',end:'"',illegal:"\\n"},{begin:"'''",end:"'''",contains:[e.BACKSLASH_ESCAPE,t]},{begin:'"""',end:'"""',contains:[e.BACKSLASH_ESCAPE,t]},{begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t]},{begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t]}]};t.contains=[e.C_NUMBER_MODE,n];return{keywords:{keyword:"assert async await break case catch class const continue default do else enum extends false final finally for if in is new null rethrow return super switch sync this throw true try var void while with yield abstract as dynamic export external factory get implements import library operator part set static typedef",built_in:"print Comparable DateTime Duration Function Iterable Iterator List Map Match Null Object Pattern RegExp Set Stopwatch String StringBuffer StringSink Symbol Type Uri bool double int num document window querySelector querySelectorAll Element ElementList"},contains:[n,e.COMMENT("/\\*\\*","\\*/",{subLanguage:"markdown"}),e.COMMENT("///","$",{subLanguage:"markdown"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"},{begin:"=>"}]}}},function(e,t){e.exports=function(e){var t="exports register file shl array record property for mod while set ally label uses raise not stored class safecall var interface or private static exit index inherited to else stdcall override shr asm far resourcestring finalization packed virtual out and protected library do xorwrite goto near function end div overload object unit begin string on inline repeat until destructor write message program with read initialization except default nil if case cdecl in downto threadvar of try pascal const external constructor type public then implementation finally published procedure absolute reintroduce operator as is abstract alias assembler bitpacked break continue cppdecl cvar enumerator experimental platform deprecated unimplemented dynamic export far16 forward generic helper implements interrupt iochecks local name nodefault noreturn nostackframe oldfpccall otherwise saveregisters softfloat specialize strict unaligned varargs ",n=[e.C_LINE_COMMENT_MODE,e.COMMENT(/\{/,/\}/,{relevance:0}),e.COMMENT(/\(\*/,/\*\)/,{relevance:10})],r={className:"meta",variants:[{begin:/\{\$/,end:/\}/},{begin:/\(\*\$/,end:/\*\)/}]},o={className:"string",begin:/'/,end:/'/,contains:[{begin:/''/}]},i={className:"string",begin:/(#\d+)+/},a={begin:e.IDENT_RE+"\\s*=\\s*class\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE]},s={className:"function",beginKeywords:"function constructor destructor procedure",end:/[:;]/,keywords:"function constructor|10 destructor|10 procedure|10",contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:t,contains:[o,i,r].concat(n)},r].concat(n)};return{aliases:["dpr","dfm","pas","pascal","freepascal","lazarus","lpr","lfm"],case_insensitive:!0,keywords:t,illegal:/"|\$[G-Zg-z]|\/\*|<\/|\|/,contains:[o,i,e.NUMBER_MODE,a,s,r].concat(n)}}},function(e,t){e.exports=function(e){return{aliases:["patch"],contains:[{className:"meta",relevance:10,variants:[{begin:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{begin:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{begin:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{className:"comment",variants:[{begin:/Index: /,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^\-{3}/,end:/$/},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/\*{5}/,end:/\*{5}$/}]},{className:"addition",begin:"^\\+",end:"$"},{className:"deletion",begin:"^\\-",end:"$"},{className:"addition",begin:"^\\!",end:"$"}]}}},function(e,t){e.exports=function(e){var t={begin:/\|[A-Za-z]+:?/,keywords:{name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone"},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{aliases:["jinja"],case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT(/\{%\s*comment\s*%}/,/\{%\s*endcomment\s*%}/),e.COMMENT(/\{#/,/#}/),{className:"template-tag",begin:/\{%/,end:/%}/,contains:[{className:"name",begin:/\w+/,keywords:{name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim"},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{className:"template-variable",begin:/\{\{/,end:/}}/,contains:[t]}]}}},function(e,t){e.exports=function(e){return{aliases:["bind","zone"],keywords:{keyword:"IN A AAAA AFSDB APL CAA CDNSKEY CDS CERT CNAME DHCID DLV DNAME DNSKEY DS HIP IPSECKEY KEY KX LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM PTR RRSIG RP SIG SOA SRV SSHFP TA TKEY TLSA TSIG TXT"},contains:[e.COMMENT(";","$",{relevance:0}),{className:"meta",begin:/^\$(TTL|GENERATE|INCLUDE|ORIGIN)\b/},{className:"number",begin:"((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))\\b"},{className:"number",begin:"((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\b"},e.inherit(e.NUMBER_MODE,{begin:/\b\d+[dhwm]?/})]}}},function(e,t){e.exports=function(e){return{aliases:["docker"],case_insensitive:!0,keywords:"from maintainer expose env arg user onbuild stopsignal",contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell",starts:{end:/[^\\]\n/,subLanguage:"bash"}}],illegal:"</"}}},function(e,t){e.exports=function(e){var t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{aliases:["bat","cmd"],case_insensitive:!0,illegal:/\/\*/,keywords:{keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq",built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shiftsort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del"},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)",end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{className:"number",begin:"\\b\\d+",relevance:0},t]}}},function(e,t){e.exports=function(e){return{keywords:"dsconfig",contains:[{className:"keyword",begin:"^dsconfig",end:"\\s",excludeEnd:!0,relevance:10},{className:"built_in",begin:"(list|create|get|set|delete)-(\\w+)",end:"\\s",excludeEnd:!0,illegal:"!@#$%^&*()",relevance:10},{className:"built_in",begin:"--(\\w+)",end:"\\s",excludeEnd:!0},{className:"string",begin:/"/,end:/"/},{className:"string",begin:/'/,end:/'/},{className:"string",begin:"[\\w-?]+:\\w+",end:"\\W",relevance:0},{className:"string",begin:"\\w+-?\\w+",end:"\\W",relevance:0},e.HASH_COMMENT_MODE]}}},function(e,t){e.exports=function(e){var t={className:"string",variants:[e.inherit(e.QUOTE_STRING_MODE,{begin:'((u8?|U)|L)?"'}),{begin:'(u8?|U)?R"',end:'"',contains:[e.BACKSLASH_ESCAPE]},{begin:"'\\\\?.",end:"'",illegal:"."}]},n={className:"number",variants:[{begin:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},{begin:e.C_NUMBER_RE}],relevance:0},r={className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef ifdef ifndef"},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",end:"$",keywords:{"meta-keyword":"include"},contains:[e.inherit(t,{className:"meta-string"}),{className:"meta-string",begin:"<",end:">",illegal:"\\n"}]},t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},o={className:"variable",begin:"\\&[a-z\\d_]*\\b"},i={className:"meta-keyword",begin:"/[a-z][a-z\\d-]*/"},a={className:"symbol",begin:"^\\s*[a-zA-Z_][a-zA-Z\\d_]*:"},s={className:"params",begin:"<",end:">",contains:[n,o]},l={className:"class",begin:/[a-zA-Z_][a-zA-Z\d_@]*\s{/,end:/[{;=]/,returnBegin:!0,excludeEnd:!0};return{keywords:"",contains:[{className:"class",begin:"/\\s*{",end:"};",relevance:10,contains:[o,i,a,l,s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,t]},o,i,a,l,s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,t,r,{begin:e.IDENT_RE+"::",keywords:""}]}}},function(e,t){e.exports=function(e){return{aliases:["dst"],case_insensitive:!0,subLanguage:"xml",contains:[{className:"template-tag",begin:/\{[#\/]/,end:/\}/,illegal:/;/,contains:[{className:"name",begin:/[a-zA-Z\.-]+/,starts:{endsWithParent:!0,relevance:0,contains:[e.QUOTE_STRING_MODE]}}]},{className:"template-variable",begin:/\{/,end:/\}/,illegal:/;/,keywords:"if eq ne lt lte gt gte select default math sep"}]}}},function(e,t){e.exports=function(e){var t=e.COMMENT(/\(\*/,/\*\)/);return{illegal:/\S/,contains:[t,{className:"attribute",begin:/^[ ]*[a-zA-Z][a-zA-Z-]*([\s-]+[a-zA-Z][a-zA-Z]*)*/},{begin:/=/,end:/;/,contains:[t,{className:"meta",begin:/\?.*\?/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}]}}},function(e,t){e.exports=function(e){var t="[a-zA-Z_][a-zA-Z0-9_.]*(\\!|\\?)?",n="and false then defined module in return redo retry end for true self when next until do begin unless nil break not case cond alias while ensure or include use alias fn quote require import with|0",r={className:"subst",begin:"#\\{",end:"}",lexemes:t,keywords:n},o={className:"string",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/}]},i={className:"function",beginKeywords:"def defp defmacro",end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:t,endsParent:!0})]},a=e.inherit(i,{className:"class",beginKeywords:"defimpl defmodule defprotocol defrecord",end:/\bdo\b|$|;/}),s=[o,e.HASH_COMMENT_MODE,a,i,{begin:"::"},{className:"symbol",begin:":(?![\\s:])",contains:[o,{begin:"[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?"}],relevance:0},{className:"symbol",begin:t+":(?!:)",relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{className:"variable",begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{begin:"->"},{begin:"("+e.RE_STARTERS_RE+")\\s*",contains:[e.HASH_COMMENT_MODE,{className:"regexp",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}],relevance:0}];return r.contains=s,{lexemes:t,keywords:n,contains:s}}},function(e,t){e.exports=function(e){var t={variants:[e.COMMENT("--","$"),e.COMMENT("{-","-}",{contains:["self"]})]},n={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},r={begin:"\\(",end:"\\)",illegal:'"',contains:[{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},t]};return{keywords:"let in if then else case of where module import exposing type alias as infix infixl infixr port effect command subscription",contains:[{beginKeywords:"port effect module",end:"exposing",keywords:"port effect module where command subscription exposing",contains:[r,t],illegal:"\\W\\.|;"},{begin:"import",end:"$",keywords:"import as exposing",contains:[r,t],illegal:"\\W\\.|;"},{begin:"type",end:"$",keywords:"type alias",contains:[n,r,{begin:"{",end:"}",contains:r.contains},t]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,t]},{begin:"port",end:"$",keywords:"port",contains:[t]},{className:"string",begin:"'\\\\?.",end:"'",illegal:"."},e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,n,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),t,{begin:"->|<-"}],illegal:/;/}}},function(e,t){e.exports=function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",n={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},r={className:"doctag",begin:"@[A-Za-z]+"},o={begin:"#<",end:">"},i=[e.COMMENT("#","$",{contains:[r]}),e.COMMENT("^\\=begin","^\\=end",{contains:[r],relevance:10}),e.COMMENT("^__END__","\\n$")],a={className:"subst",begin:"#\\{",end:"}",keywords:n},s={className:"string",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<(-?)\w+$/,end:/^\s*\w+$/}]},l={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:n},u=[s,o,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(i)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t}),l].concat(i)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[s,{begin:t}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:n},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[o,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,a],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(i),relevance:0}].concat(i);a.contains=u,l.contains=u;var c=[{begin:/^\s*=>/,starts:{end:"$",contains:u}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:u}}];return{aliases:["rb","gemspec","podspec","thor","irb"],keywords:n,illegal:/\/\*/,contains:i.concat(c).concat(u)}}},function(e,t){e.exports=function(e){return{subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]}}},function(e,t){e.exports=function(e){return{keywords:{built_in:"spawn spawn_link self",keyword:"after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse|10 query receive rem try when xor"},contains:[{className:"meta",begin:"^[0-9]+> ",relevance:10},e.COMMENT("%","$"),{className:"number",begin:"\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\?(::)?([A-Z]\\w*(::)?)+"},{begin:"->"},{begin:"ok"},{begin:"!"},{begin:"(\\b[a-z'][a-zA-Z0-9_']*:[a-z'][a-zA-Z0-9_']*)|(\\b[a-z'][a-zA-Z0-9_']*)",relevance:0},{begin:"[A-Z][a-zA-Z0-9_']*",relevance:0}]}}},function(e,t){e.exports=function(e){var t="[a-z'][a-zA-Z0-9_']*",n="("+t+":"+t+"|"+t+")",r={keyword:"after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if let not of orelse|10 query receive rem try when xor",literal:"false true"},o=e.COMMENT("%","$"),i={className:"number",begin:"\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)",relevance:0},a={begin:"fun\\s+"+t+"/\\d+"},s={begin:n+"\\(",end:"\\)",returnBegin:!0,relevance:0,contains:[{begin:n,relevance:0},{begin:"\\(",end:"\\)",endsWithParent:!0,returnEnd:!0,relevance:0}]},l={begin:"{",end:"}",relevance:0},u={begin:"\\b_([A-Z][A-Za-z0-9_]*)?",relevance:0},c={begin:"[A-Z][a-zA-Z0-9_]*",relevance:0},f={begin:"#"+e.UNDERSCORE_IDENT_RE,relevance:0,returnBegin:!0,contains:[{begin:"#"+e.UNDERSCORE_IDENT_RE,relevance:0},{begin:"{",end:"}",relevance:0}]},d={beginKeywords:"fun receive if try case",end:"end",keywords:r};d.contains=[o,a,e.inherit(e.APOS_STRING_MODE,{className:""}),d,s,e.QUOTE_STRING_MODE,i,l,u,c,f];var p=[o,a,d,s,e.QUOTE_STRING_MODE,i,l,u,c,f];s.contains[1].contains=p,l.contains=p,f.contains[1].contains=p;var m={className:"params",begin:"\\(",end:"\\)",contains:p};return{aliases:["erl"],keywords:r,illegal:"(</|\\*=|\\+=|-=|/\\*|\\*/|\\(\\*|\\*\\))",contains:[{className:"function",begin:"^"+t+"\\s*\\(",end:"->",returnBegin:!0,illegal:"\\(|#|//|/\\*|\\\\|:|;",contains:[m,e.inherit(e.TITLE_MODE,{begin:t})],starts:{end:";|\\.",keywords:r,contains:p}},o,{begin:"^-",end:"\\.",relevance:0,excludeEnd:!0,returnBegin:!0,lexemes:"-"+e.IDENT_RE,keywords:"-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn -import -include -include_lib -compile -define -else -endif -file -behaviour -behavior -spec",contains:[m]},i,e.QUOTE_STRING_MODE,f,u,c,l,{begin:/\.$/}]}}},function(e,t){e.exports=function(e){return{aliases:["xlsx","xls"],case_insensitive:!0,lexemes:/[a-zA-Z][\w\.]*/,keywords:{built_in:"ABS ACCRINT ACCRINTM ACOS ACOSH ACOT ACOTH AGGREGATE ADDRESS AMORDEGRC AMORLINC AND ARABIC AREAS ASC ASIN ASINH ATAN ATAN2 ATANH AVEDEV AVERAGE AVERAGEA AVERAGEIF AVERAGEIFS BAHTTEXT BASE BESSELI BESSELJ BESSELK BESSELY BETADIST BETA.DIST BETAINV BETA.INV BIN2DEC BIN2HEX BIN2OCT BINOMDIST BINOM.DIST BINOM.DIST.RANGE BINOM.INV BITAND BITLSHIFT BITOR BITRSHIFT BITXOR CALL CEILING CEILING.MATH CEILING.PRECISE CELL CHAR CHIDIST CHIINV CHITEST CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT CHISQ.TEST CHOOSE CLEAN CODE COLUMN COLUMNS COMBIN COMBINA COMPLEX CONCAT CONCATENATE CONFIDENCE CONFIDENCE.NORM CONFIDENCE.T CONVERT CORREL COS COSH COT COTH COUNT COUNTA COUNTBLANK COUNTIF COUNTIFS COUPDAYBS COUPDAYS COUPDAYSNC COUPNCD COUPNUM COUPPCD COVAR COVARIANCE.P COVARIANCE.S CRITBINOM CSC CSCH CUBEKPIMEMBER CUBEMEMBER CUBEMEMBERPROPERTY CUBERANKEDMEMBER CUBESET CUBESETCOUNT CUBEVALUE CUMIPMT CUMPRINC DATE DATEDIF DATEVALUE DAVERAGE DAY DAYS DAYS360 DB DBCS DCOUNT DCOUNTA DDB DEC2BIN DEC2HEX DEC2OCT DECIMAL DEGREES DELTA DEVSQ DGET DISC DMAX DMIN DOLLAR DOLLARDE DOLLARFR DPRODUCT DSTDEV DSTDEVP DSUM DURATION DVAR DVARP EDATE EFFECT ENCODEURL EOMONTH ERF ERF.PRECISE ERFC ERFC.PRECISE ERROR.TYPE EUROCONVERT EVEN EXACT EXP EXPON.DIST EXPONDIST FACT FACTDOUBLE FALSE|0 F.DIST FDIST F.DIST.RT FILTERXML FIND FINDB F.INV F.INV.RT FINV FISHER FISHERINV FIXED FLOOR FLOOR.MATH FLOOR.PRECISE FORECAST FORECAST.ETS FORECAST.ETS.CONFINT FORECAST.ETS.SEASONALITY FORECAST.ETS.STAT FORECAST.LINEAR FORMULATEXT FREQUENCY F.TEST FTEST FV FVSCHEDULE GAMMA GAMMA.DIST GAMMADIST GAMMA.INV GAMMAINV GAMMALN GAMMALN.PRECISE GAUSS GCD GEOMEAN GESTEP GETPIVOTDATA GROWTH HARMEAN HEX2BIN HEX2DEC HEX2OCT HLOOKUP HOUR HYPERLINK HYPGEOM.DIST HYPGEOMDIST IF|0 IFERROR IFNA IFS IMABS IMAGINARY IMARGUMENT IMCONJUGATE IMCOS IMCOSH IMCOT IMCSC IMCSCH IMDIV IMEXP IMLN IMLOG10 IMLOG2 IMPOWER IMPRODUCT IMREAL IMSEC IMSECH IMSIN IMSINH IMSQRT IMSUB IMSUM IMTAN INDEX INDIRECT INFO INT INTERCEPT INTRATE IPMT IRR ISBLANK ISERR ISERROR ISEVEN ISFORMULA ISLOGICAL ISNA ISNONTEXT ISNUMBER ISODD ISREF ISTEXT ISO.CEILING ISOWEEKNUM ISPMT JIS KURT LARGE LCM LEFT LEFTB LEN LENB LINEST LN LOG LOG10 LOGEST LOGINV LOGNORM.DIST LOGNORMDIST LOGNORM.INV LOOKUP LOWER MATCH MAX MAXA MAXIFS MDETERM MDURATION MEDIAN MID MIDBs MIN MINIFS MINA MINUTE MINVERSE MIRR MMULT MOD MODE MODE.MULT MODE.SNGL MONTH MROUND MULTINOMIAL MUNIT N NA NEGBINOM.DIST NEGBINOMDIST NETWORKDAYS NETWORKDAYS.INTL NOMINAL NORM.DIST NORMDIST NORMINV NORM.INV NORM.S.DIST NORMSDIST NORM.S.INV NORMSINV NOT NOW NPER NPV NUMBERVALUE OCT2BIN OCT2DEC OCT2HEX ODD ODDFPRICE ODDFYIELD ODDLPRICE ODDLYIELD OFFSET OR PDURATION PEARSON PERCENTILE.EXC PERCENTILE.INC PERCENTILE PERCENTRANK.EXC PERCENTRANK.INC PERCENTRANK PERMUT PERMUTATIONA PHI PHONETIC PI PMT POISSON.DIST POISSON POWER PPMT PRICE PRICEDISC PRICEMAT PROB PRODUCT PROPER PV QUARTILE QUARTILE.EXC QUARTILE.INC QUOTIENT RADIANS RAND RANDBETWEEN RANK.AVG RANK.EQ RANK RATE RECEIVED REGISTER.ID REPLACE REPLACEB REPT RIGHT RIGHTB ROMAN ROUND ROUNDDOWN ROUNDUP ROW ROWS RRI RSQ RTD SEARCH SEARCHB SEC SECH SECOND SERIESSUM SHEET SHEETS SIGN SIN SINH SKEW SKEW.P SLN SLOPE SMALL SQL.REQUEST SQRT SQRTPI STANDARDIZE STDEV STDEV.P STDEV.S STDEVA STDEVP STDEVPA STEYX SUBSTITUTE SUBTOTAL SUM SUMIF SUMIFS SUMPRODUCT SUMSQ SUMX2MY2 SUMX2PY2 SUMXMY2 SWITCH SYD T TAN TANH TBILLEQ TBILLPRICE TBILLYIELD T.DIST T.DIST.2T T.DIST.RT TDIST TEXT TEXTJOIN TIME TIMEVALUE T.INV T.INV.2T TINV TODAY TRANSPOSE TREND TRIM TRIMMEAN TRUE|0 TRUNC T.TEST TTEST TYPE UNICHAR UNICODE UPPER VALUE VAR VAR.P VAR.S VARA VARP VARPA VDB VLOOKUP WEBSERVICE WEEKDAY WEEKNUM WEIBULL WEIBULL.DIST WORKDAY WORKDAY.INTL XIRR XNPV XOR YEAR YEARFRAC YIELD YIELDDISC YIELDMAT Z.TEST ZTEST"},contains:[{begin:/^=/,end:/[^=]/,returnEnd:!0,illegal:/=/,relevance:10},{className:"symbol",begin:/\b[A-Z]{1,2}\d+\b/,end:/[^\d]/,excludeEnd:!0,relevance:0},{className:"symbol",begin:/[A-Z]{0,2}\d*:[A-Z]{0,2}\d*/,relevance:0},e.BACKSLASH_ESCAPE,e.QUOTE_STRING_MODE,{className:"number",begin:e.NUMBER_RE+"(%)?",relevance:0},e.COMMENT(/\bN\(/,/\)/,{excludeBegin:!0,excludeEnd:!0,illegal:/\n/})]}}},function(e,t){e.exports=function(e){return{contains:[{begin:/[^\u2401\u0001]+/,end:/[\u2401\u0001]/,excludeEnd:!0,returnBegin:!0,returnEnd:!1,contains:[{begin:/([^\u2401\u0001=]+)/,end:/=([^\u2401\u0001=]+)/,returnEnd:!0,returnBegin:!1,className:"attr"},{begin:/=/,end:/([\u2401\u0001])/,excludeEnd:!0,excludeBegin:!0,className:"string"}]}],case_insensitive:!0}}},function(e,t){e.exports=function(e){var t={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[{className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/}]};return{keywords:{literal:"true false",keyword:"case class def else enum if impl import in lat rel index let match namespace switch type yield with"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},{className:"string",variants:[{begin:'"',end:'"'}]},t,e.C_NUMBER_MODE]}}},function(e,t){e.exports=function(e){return{case_insensitive:!0,aliases:["f90","f95"],keywords:{literal:".False. .True.",keyword:"kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data",built_in:"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_ofacosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image"},illegal:/\/\*/,contains:[e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{className:"string",relevance:0}),{className:"function",beginKeywords:"subroutine function program",illegal:"[${=\\n]",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},e.COMMENT("!","$",{relevance:0}),{className:"number",begin:"(?=\\b|\\+|\\-|\\.)(?=\\.\\d|\\d)(?:\\d+)?(?:\\.?\\d*)(?:[de][+-]?\\d+)?\\b\\.?",relevance:0}]}}},function(e,t){e.exports=function(e){var t={begin:"<",end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{aliases:["fs"],keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield",illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*","\\*\\)"),{className:"class",beginKeywords:"type",end:"\\(|=|$",excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,t]},{className:"meta",begin:"\\[<",end:">\\]",relevance:10},{className:"symbol",begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE]},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),e.C_NUMBER_MODE]}}},function(e,t){e.exports=function(e){var t={keyword:"abort acronym acronyms alias all and assign binary card diag display else eq file files for free ge gt if integer le loop lt maximizing minimizing model models ne negative no not option options or ord positive prod put putpage puttl repeat sameas semicont semiint smax smin solve sos1 sos2 sum system table then until using while xor yes",literal:"eps inf na","built-in":"abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power randBinomial randLinear randTriangle round rPower sigmoid sign signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion handleCollect handleDelete handleStatus handleSubmit heapFree heapLimit heapSize jobHandle jobKill jobStatus jobTerminate licenseLevel licenseStatus maxExecError sleep timeClose timeComp timeElapsed timeExec timeStart"},n={className:"symbol",variants:[{begin:/\=[lgenxc]=/},{begin:/\$/}]},r={className:"comment",variants:[{begin:"'",end:"'"},{begin:'"',end:'"'}],illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},o={begin:"/",end:"/",keywords:t,contains:[r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE]},i={begin:/[a-z][a-z0-9_]*(\([a-z0-9_, ]*\))?[ \t]+/,excludeBegin:!0,end:"$",endsWithParent:!0,contains:[r,o,{className:"comment",begin:/([ ]*[a-z0-9&#*=?@>\\<:\-,()$\[\]_.{}!+%^]+)+/,relevance:0}]};return{aliases:["gms"],case_insensitive:!0,keywords:t,contains:[e.COMMENT(/^\$ontext/,/^\$offtext/),{className:"meta",begin:"^\\$[a-z0-9]+",end:"$",returnBegin:!0,contains:[{className:"meta-keyword",begin:"^\\$[a-z0-9]+"}]},e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{beginKeywords:"set sets parameter parameters variable variables scalar scalars equation equations",end:";",contains:[e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,o,i]},{beginKeywords:"table",end:";",returnBegin:!0,contains:[{beginKeywords:"table",end:"$",contains:[i]},e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE]},{className:"function",begin:/^[a-z][a-z0-9_,\-+' ()$]+\.{2}/,returnBegin:!0,contains:[{className:"title",begin:/^[a-z0-9_]+/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0},n]},e.C_NUMBER_MODE,n]}}},function(e,t){e.exports=function(e){var t={keyword:"and bool break call callexe checkinterrupt clear clearg closeall cls comlog compile continue create debug declare delete disable dlibrary dllcall do dos ed edit else elseif enable end endfor endif endp endo errorlog errorlogat expr external fn for format goto gosub graph if keyword let lib library line load loadarray loadexe loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow matrix msym ndpclex new not open or output outwidth plot plotsym pop prcsn print printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen scroll setarray show sparse stop string struct system trace trap threadfor threadendfor threadbegin threadjoin threadstat threadend until use while winprint",built_in:"abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 indicesf indicesfn indnv indsav integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname threadBegin threadEnd threadEndFor threadFor threadJoin threadStat time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics cdfEmpirical dot h5create h5open h5read h5readAttribute h5write h5writeAttribute ldl plotAddErrorBar plotAddSurface plotCDFEmpirical plotSetColormap plotSetContourLabels plotSetLegendFont plotSetTextInterpreter plotSetXTicCount plotSetYTicCount plotSetZLevels powerm strjoin strtrim sylvester",literal:"DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES DB_TRANSACTIONS DB_UNICODE DB_VIEWS"},n={className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"define definecs|10 undef ifdef ifndef iflight ifdllcall ifmac ifos2win ifunix else endif lineson linesoff srcfile srcline"},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",end:"$",keywords:{"meta-keyword":"include"},contains:[{className:"meta-string",begin:'"',end:'"',illegal:"\\n"}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r=e.UNDERSCORE_IDENT_RE+"\\s*\\(?",o=[{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}];return{aliases:["gss"],case_insensitive:!0,keywords:t,illegal:"(\\{[%#]|[%#]\\})",contains:[e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT("@","@"),n,{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE]},{className:"function",beginKeywords:"proc keyword",end:";",excludeEnd:!0,keywords:t,contains:[{begin:r,returnBegin:!0,contains:[e.UNDERSCORE_TITLE_MODE],relevance:0},e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n].concat(o)},{className:"function",beginKeywords:"fn",end:";",excludeEnd:!0,keywords:t,contains:[{begin:r+e.IDENT_RE+"\\)?\\s*\\=\\s*",returnBegin:!0,contains:[e.UNDERSCORE_TITLE_MODE],relevance:0},e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE].concat(o)},{className:"function",begin:"\\bexternal (proc|keyword|fn)\\s+",end:";",excludeEnd:!0,keywords:t,contains:[{begin:r,returnBegin:!0,contains:[e.UNDERSCORE_TITLE_MODE],relevance:0},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function",begin:"\\bexternal (matrix|string|array|sparse matrix|struct "+e.IDENT_RE+")\\s+",end:";",excludeEnd:!0,keywords:t,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}}},function(e,t){e.exports=function(e){var t=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT(/\(/,/\)/),e.inherit(e.C_NUMBER_MODE,{begin:"([-+]?([0-9]*\\.?[0-9]+\\.?))|"+e.C_NUMBER_RE}),e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"name",begin:"([G])([0-9]+\\.?[0-9]?)"},{className:"name",begin:"([M])([0-9]+\\.?[0-9]?)"},{className:"attr",begin:"(VC|VS|#)",end:"(\\d+)"},{className:"attr",begin:"(VZOFX|VZOFY|VZOFZ)"},{className:"built_in",begin:"(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\[)",end:"([-+]?([0-9]*\\.?[0-9]+\\.?))(\\])"},{className:"symbol",variants:[{begin:"N",end:"\\d+",illegal:"\\W"}]}];return{aliases:["nc"],case_insensitive:!0,lexemes:"[A-Z_][A-Z0-9_.]*",keywords:"IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT EQ LT GT NE GE LE OR XOR",contains:[{className:"meta",begin:"\\%"},{className:"meta",begin:"([O])([0-9]+)"}].concat(t)}}},function(e,t){e.exports=function(e){return{aliases:["feature"],keywords:"Feature Background Ability Business Need Scenario Scenarios Scenario Outline Scenario Template Examples Given And Then But When",contains:[{className:"symbol",begin:"\\*",relevance:0},{className:"meta",begin:"@[^@\\s]+"},{begin:"\\|",end:"\\|\\w*$",contains:[{className:"string",begin:"[^|]+"}]},{className:"variable",begin:"<",end:">"},e.HASH_COMMENT_MODE,{className:"string",begin:'"""',end:'"""'},e.QUOTE_STRING_MODE]}}},function(e,t){e.exports=function(e){return{keywords:{keyword:"break continue discard do else for if return while switch case default attribute binding buffer ccw centroid centroid varying coherent column_major const cw depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip triangles triangles_adjacency uniform varying vertices volatile writeonly",type:"atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBufferiimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void",built_in:"gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms gl_MaxVertexOutputComponents gl_MaxVertexOutputVectors gl_MaxVertexTextureImageUnits gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffset gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial gl_FrontSecondaryColor gl_GlobalInvocationID gl_InstanceID gl_InvocationID gl_Layer gl_LightModel gl_LightSource gl_LocalInvocationID gl_LocalInvocationIndex gl_ModelViewMatrix gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_Normal gl_NormalMatrix gl_NormalScale gl_NumSamples gl_NumWorkGroups gl_ObjectPlaneQ gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_Point gl_PointCoord gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter gl_TexCoord gl_TextureEnvColor gl_TextureMatrix gl_TextureMatrixInverse gl_TextureMatrixInverseTranspose gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize gl_in gl_out EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer memoryBarrierImage memoryBarrierShared min mix mod modf noise1 noise2 noise3 noise4 normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow",literal:"true false"},illegal:'"',contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$"}]}}},function(e,t){e.exports=function(e){return{aliases:["gml","GML"],case_insensitive:!1,keywords:{keywords:"begin end if then else while do for break continue with until repeat exit and or xor not return mod div switch case default var globalvar enum #macro #region #endregion",built_in:"is_real is_string is_array is_undefined is_int32 is_int64 is_ptr is_vec3 is_vec4 is_matrix is_bool typeof variable_global_exists variable_global_get variable_global_set variable_instance_exists variable_instance_get variable_instance_set variable_instance_get_names array_length_1d array_length_2d array_height_2d array_equals array_create array_copy random random_range irandom irandom_range random_set_seed random_get_seed randomize randomise choose abs round floor ceil sign frac sqrt sqr exp ln log2 log10 sin cos tan arcsin arccos arctan arctan2 dsin dcos dtan darcsin darccos darctan darctan2 degtorad radtodeg power logn min max mean median clamp lerp dot_product dot_product_3d dot_product_normalised dot_product_3d_normalised dot_product_normalized dot_product_3d_normalized math_set_epsilon math_get_epsilon angle_difference point_distance_3d point_distance point_direction lengthdir_x lengthdir_y real string int64 ptr string_format chr ansi_char ord string_length string_byte_length string_pos string_copy string_char_at string_ord_at string_byte_at string_set_byte_at string_delete string_insert string_lower string_upper string_repeat string_letters string_digits string_lettersdigits string_replace string_replace_all string_count string_hash_to_newline clipboard_has_text clipboard_set_text clipboard_get_text date_current_datetime date_create_datetime date_valid_datetime date_inc_year date_inc_month date_inc_week date_inc_day date_inc_hour date_inc_minute date_inc_second date_get_year date_get_month date_get_week date_get_day date_get_hour date_get_minute date_get_second date_get_weekday date_get_day_of_year date_get_hour_of_year date_get_minute_of_year date_get_second_of_year date_year_span date_month_span date_week_span date_day_span date_hour_span date_minute_span date_second_span date_compare_datetime date_compare_date date_compare_time date_date_of date_time_of date_datetime_string date_date_string date_time_string date_days_in_month date_days_in_year date_leap_year date_is_today date_set_timezone date_get_timezone game_set_speed game_get_speed motion_set motion_add place_free place_empty place_meeting place_snapped move_random move_snap move_towards_point move_contact_solid move_contact_all move_outside_solid move_outside_all move_bounce_solid move_bounce_all move_wrap distance_to_point distance_to_object position_empty position_meeting path_start path_end mp_linear_step mp_potential_step mp_linear_step_object mp_potential_step_object mp_potential_settings mp_linear_path mp_potential_path mp_linear_path_object mp_potential_path_object mp_grid_create mp_grid_destroy mp_grid_clear_all mp_grid_clear_cell mp_grid_clear_rectangle mp_grid_add_cell mp_grid_get_cell mp_grid_add_rectangle mp_grid_add_instances mp_grid_path mp_grid_draw mp_grid_to_ds_grid collision_point collision_rectangle collision_circle collision_ellipse collision_line collision_point_list collision_rectangle_list collision_circle_list collision_ellipse_list collision_line_list instance_position_list instance_place_list point_in_rectangle point_in_triangle point_in_circle rectangle_in_rectangle rectangle_in_triangle rectangle_in_circle instance_find instance_exists instance_number instance_position instance_nearest instance_furthest instance_place instance_create_depth instance_create_layer instance_copy instance_change instance_destroy position_destroy position_change instance_id_get instance_deactivate_all instance_deactivate_object instance_deactivate_region instance_activate_all instance_activate_object instance_activate_region room_goto room_goto_previous room_goto_next room_previous room_next room_restart game_end game_restart game_load game_save game_save_buffer game_load_buffer event_perform event_user event_perform_object event_inherited show_debug_message show_debug_overlay debug_event debug_get_callstack alarm_get alarm_set font_texture_page_size keyboard_set_map keyboard_get_map keyboard_unset_map keyboard_check keyboard_check_pressed keyboard_check_released keyboard_check_direct keyboard_get_numlock keyboard_set_numlock keyboard_key_press keyboard_key_release keyboard_clear io_clear mouse_check_button mouse_check_button_pressed mouse_check_button_released mouse_wheel_up mouse_wheel_down mouse_clear draw_self draw_sprite draw_sprite_pos draw_sprite_ext draw_sprite_stretched draw_sprite_stretched_ext draw_sprite_tiled draw_sprite_tiled_ext draw_sprite_part draw_sprite_part_ext draw_sprite_general draw_clear draw_clear_alpha draw_point draw_line draw_line_width draw_rectangle draw_roundrect draw_roundrect_ext draw_triangle draw_circle draw_ellipse draw_set_circle_precision draw_arrow draw_button draw_path draw_healthbar draw_getpixel draw_getpixel_ext draw_set_colour draw_set_color draw_set_alpha draw_get_colour draw_get_color draw_get_alpha merge_colour make_colour_rgb make_colour_hsv colour_get_red colour_get_green colour_get_blue colour_get_hue colour_get_saturation colour_get_value merge_color make_color_rgb make_color_hsv color_get_red color_get_green color_get_blue color_get_hue color_get_saturation color_get_value merge_color screen_save screen_save_part draw_set_font draw_set_halign draw_set_valign draw_text draw_text_ext string_width string_height string_width_ext string_height_ext draw_text_transformed draw_text_ext_transformed draw_text_colour draw_text_ext_colour draw_text_transformed_colour draw_text_ext_transformed_colour draw_text_color draw_text_ext_color draw_text_transformed_color draw_text_ext_transformed_color draw_point_colour draw_line_colour draw_line_width_colour draw_rectangle_colour draw_roundrect_colour draw_roundrect_colour_ext draw_triangle_colour draw_circle_colour draw_ellipse_colour draw_point_color draw_line_color draw_line_width_color draw_rectangle_color draw_roundrect_color draw_roundrect_color_ext draw_triangle_color draw_circle_color draw_ellipse_color draw_primitive_begin draw_vertex draw_vertex_colour draw_vertex_color draw_primitive_end sprite_get_uvs font_get_uvs sprite_get_texture font_get_texture texture_get_width texture_get_height texture_get_uvs draw_primitive_begin_texture draw_vertex_texture draw_vertex_texture_colour draw_vertex_texture_color texture_global_scale surface_create surface_create_ext surface_resize surface_free surface_exists surface_get_width surface_get_height surface_get_texture surface_set_target surface_set_target_ext surface_reset_target surface_depth_disable surface_get_depth_disable draw_surface draw_surface_stretched draw_surface_tiled draw_surface_part draw_surface_ext draw_surface_stretched_ext draw_surface_tiled_ext draw_surface_part_ext draw_surface_general surface_getpixel surface_getpixel_ext surface_save surface_save_part surface_copy surface_copy_part application_surface_draw_enable application_get_position application_surface_enable application_surface_is_enabled display_get_width display_get_height display_get_orientation display_get_gui_width display_get_gui_height display_reset display_mouse_get_x display_mouse_get_y display_mouse_set display_set_ui_visibility window_set_fullscreen window_get_fullscreen window_set_caption window_set_min_width window_set_max_width window_set_min_height window_set_max_height window_get_visible_rects window_get_caption window_set_cursor window_get_cursor window_set_colour window_get_colour window_set_color window_get_color window_set_position window_set_size window_set_rectangle window_center window_get_x window_get_y window_get_width window_get_height window_mouse_get_x window_mouse_get_y window_mouse_set window_view_mouse_get_x window_view_mouse_get_y window_views_mouse_get_x window_views_mouse_get_y audio_listener_position audio_listener_velocity audio_listener_orientation audio_emitter_position audio_emitter_create audio_emitter_free audio_emitter_exists audio_emitter_pitch audio_emitter_velocity audio_emitter_falloff audio_emitter_gain audio_play_sound audio_play_sound_on audio_play_sound_at audio_stop_sound audio_resume_music audio_music_is_playing audio_resume_sound audio_pause_sound audio_pause_music audio_channel_num audio_sound_length audio_get_type audio_falloff_set_model audio_play_music audio_stop_music audio_master_gain audio_music_gain audio_sound_gain audio_sound_pitch audio_stop_all audio_resume_all audio_pause_all audio_is_playing audio_is_paused audio_exists audio_sound_set_track_position audio_sound_get_track_position audio_emitter_get_gain audio_emitter_get_pitch audio_emitter_get_x audio_emitter_get_y audio_emitter_get_z audio_emitter_get_vx audio_emitter_get_vy audio_emitter_get_vz audio_listener_set_position audio_listener_set_velocity audio_listener_set_orientation audio_listener_get_data audio_set_master_gain audio_get_master_gain audio_sound_get_gain audio_sound_get_pitch audio_get_name audio_sound_set_track_position audio_sound_get_track_position audio_create_stream audio_destroy_stream audio_create_sync_group audio_destroy_sync_group audio_play_in_sync_group audio_start_sync_group audio_stop_sync_group audio_pause_sync_group audio_resume_sync_group audio_sync_group_get_track_pos audio_sync_group_debug audio_sync_group_is_playing audio_debug audio_group_load audio_group_unload audio_group_is_loaded audio_group_load_progress audio_group_name audio_group_stop_all audio_group_set_gain audio_create_buffer_sound audio_free_buffer_sound audio_create_play_queue audio_free_play_queue audio_queue_sound audio_get_recorder_count audio_get_recorder_info audio_start_recording audio_stop_recording audio_sound_get_listener_mask audio_emitter_get_listener_mask audio_get_listener_mask audio_sound_set_listener_mask audio_emitter_set_listener_mask audio_set_listener_mask audio_get_listener_count audio_get_listener_info audio_system show_message show_message_async clickable_add clickable_add_ext clickable_change clickable_change_ext clickable_delete clickable_exists clickable_set_style show_question show_question_async get_integer get_string get_integer_async get_string_async get_login_async get_open_filename get_save_filename get_open_filename_ext get_save_filename_ext show_error highscore_clear highscore_add highscore_value highscore_name draw_highscore sprite_exists sprite_get_name sprite_get_number sprite_get_width sprite_get_height sprite_get_xoffset sprite_get_yoffset sprite_get_bbox_left sprite_get_bbox_right sprite_get_bbox_top sprite_get_bbox_bottom sprite_save sprite_save_strip sprite_set_cache_size sprite_set_cache_size_ext sprite_get_tpe sprite_prefetch sprite_prefetch_multi sprite_flush sprite_flush_multi sprite_set_speed sprite_get_speed_type sprite_get_speed font_exists font_get_name font_get_fontname font_get_bold font_get_italic font_get_first font_get_last font_get_size font_set_cache_size path_exists path_get_name path_get_length path_get_time path_get_kind path_get_closed path_get_precision path_get_number path_get_point_x path_get_point_y path_get_point_speed path_get_x path_get_y path_get_speed script_exists script_get_name timeline_add timeline_delete timeline_clear timeline_exists timeline_get_name timeline_moment_clear timeline_moment_add_script timeline_size timeline_max_moment object_exists object_get_name object_get_sprite object_get_solid object_get_visible object_get_persistent object_get_mask object_get_parent object_get_physics object_is_ancestor room_exists room_get_name sprite_set_offset sprite_duplicate sprite_assign sprite_merge sprite_add sprite_replace sprite_create_from_surface sprite_add_from_surface sprite_delete sprite_set_alpha_from_sprite sprite_collision_mask font_add_enable_aa font_add_get_enable_aa font_add font_add_sprite font_add_sprite_ext font_replace font_replace_sprite font_replace_sprite_ext font_delete path_set_kind path_set_closed path_set_precision path_add path_assign path_duplicate path_append path_delete path_add_point path_insert_point path_change_point path_delete_point path_clear_points path_reverse path_mirror path_flip path_rotate path_rescale path_shift script_execute object_set_sprite object_set_solid object_set_visible object_set_persistent object_set_mask room_set_width room_set_height room_set_persistent room_set_background_colour room_set_background_color room_set_view room_set_viewport room_get_viewport room_set_view_enabled room_add room_duplicate room_assign room_instance_add room_instance_clear room_get_camera room_set_camera asset_get_index asset_get_type file_text_open_from_string file_text_open_read file_text_open_write file_text_open_append file_text_close file_text_write_string file_text_write_real file_text_writeln file_text_read_string file_text_read_real file_text_readln file_text_eof file_text_eoln file_exists file_delete file_rename file_copy directory_exists directory_create directory_destroy file_find_first file_find_next file_find_close file_attributes filename_name filename_path filename_dir filename_drive filename_ext filename_change_ext file_bin_open file_bin_rewrite file_bin_close file_bin_position file_bin_size file_bin_seek file_bin_write_byte file_bin_read_byte parameter_count parameter_string environment_get_variable ini_open_from_string ini_open ini_close ini_read_string ini_read_real ini_write_string ini_write_real ini_key_exists ini_section_exists ini_key_delete ini_section_delete ds_set_precision ds_exists ds_stack_create ds_stack_destroy ds_stack_clear ds_stack_copy ds_stack_size ds_stack_empty ds_stack_push ds_stack_pop ds_stack_top ds_stack_write ds_stack_read ds_queue_create ds_queue_destroy ds_queue_clear ds_queue_copy ds_queue_size ds_queue_empty ds_queue_enqueue ds_queue_dequeue ds_queue_head ds_queue_tail ds_queue_write ds_queue_read ds_list_create ds_list_destroy ds_list_clear ds_list_copy ds_list_size ds_list_empty ds_list_add ds_list_insert ds_list_replace ds_list_delete ds_list_find_index ds_list_find_value ds_list_mark_as_list ds_list_mark_as_map ds_list_sort ds_list_shuffle ds_list_write ds_list_read ds_list_set ds_map_create ds_map_destroy ds_map_clear ds_map_copy ds_map_size ds_map_empty ds_map_add ds_map_add_list ds_map_add_map ds_map_replace ds_map_replace_map ds_map_replace_list ds_map_delete ds_map_exists ds_map_find_value ds_map_find_previous ds_map_find_next ds_map_find_first ds_map_find_last ds_map_write ds_map_read ds_map_secure_save ds_map_secure_load ds_map_secure_load_buffer ds_map_secure_save_buffer ds_map_set ds_priority_create ds_priority_destroy ds_priority_clear ds_priority_copy ds_priority_size ds_priority_empty ds_priority_add ds_priority_change_priority ds_priority_find_priority ds_priority_delete_value ds_priority_delete_min ds_priority_find_min ds_priority_delete_max ds_priority_find_max ds_priority_write ds_priority_read ds_grid_create ds_grid_destroy ds_grid_copy ds_grid_resize ds_grid_width ds_grid_height ds_grid_clear ds_grid_set ds_grid_add ds_grid_multiply ds_grid_set_region ds_grid_add_region ds_grid_multiply_region ds_grid_set_disk ds_grid_add_disk ds_grid_multiply_disk ds_grid_set_grid_region ds_grid_add_grid_region ds_grid_multiply_grid_region ds_grid_get ds_grid_get_sum ds_grid_get_max ds_grid_get_min ds_grid_get_mean ds_grid_get_disk_sum ds_grid_get_disk_min ds_grid_get_disk_max ds_grid_get_disk_mean ds_grid_value_exists ds_grid_value_x ds_grid_value_y ds_grid_value_disk_exists ds_grid_value_disk_x ds_grid_value_disk_y ds_grid_shuffle ds_grid_write ds_grid_read ds_grid_sort ds_grid_set ds_grid_get effect_create_below effect_create_above effect_clear part_type_create part_type_destroy part_type_exists part_type_clear part_type_shape part_type_sprite part_type_size part_type_scale part_type_orientation part_type_life part_type_step part_type_death part_type_speed part_type_direction part_type_gravity part_type_colour1 part_type_colour2 part_type_colour3 part_type_colour_mix part_type_colour_rgb part_type_colour_hsv part_type_color1 part_type_color2 part_type_color3 part_type_color_mix part_type_color_rgb part_type_color_hsv part_type_alpha1 part_type_alpha2 part_type_alpha3 part_type_blend part_system_create part_system_create_layer part_system_destroy part_system_exists part_system_clear part_system_draw_order part_system_depth part_system_position part_system_automatic_update part_system_automatic_draw part_system_update part_system_drawit part_system_get_layer part_system_layer part_particles_create part_particles_create_colour part_particles_create_color part_particles_clear part_particles_count part_emitter_create part_emitter_destroy part_emitter_destroy_all part_emitter_exists part_emitter_clear part_emitter_region part_emitter_burst part_emitter_stream external_call external_define external_free window_handle window_device matrix_get matrix_set matrix_build_identity matrix_build matrix_build_lookat matrix_build_projection_ortho matrix_build_projection_perspective matrix_build_projection_perspective_fov matrix_multiply matrix_transform_vertex matrix_stack_push matrix_stack_pop matrix_stack_multiply matrix_stack_set matrix_stack_clear matrix_stack_top matrix_stack_is_empty browser_input_capture os_get_config os_get_info os_get_language os_get_region os_lock_orientation display_get_dpi_x display_get_dpi_y display_set_gui_size display_set_gui_maximise display_set_gui_maximize device_mouse_dbclick_enable display_set_timing_method display_get_timing_method display_set_sleep_margin display_get_sleep_margin virtual_key_add virtual_key_hide virtual_key_delete virtual_key_show draw_enable_drawevent draw_enable_swf_aa draw_set_swf_aa_level draw_get_swf_aa_level draw_texture_flush draw_flush gpu_set_blendenable gpu_set_ztestenable gpu_set_zfunc gpu_set_zwriteenable gpu_set_lightingenable gpu_set_fog gpu_set_cullmode gpu_set_blendmode gpu_set_blendmode_ext gpu_set_blendmode_ext_sepalpha gpu_set_colorwriteenable gpu_set_colourwriteenable gpu_set_alphatestenable gpu_set_alphatestref gpu_set_alphatestfunc gpu_set_texfilter gpu_set_texfilter_ext gpu_set_texrepeat gpu_set_texrepeat_ext gpu_set_tex_filter gpu_set_tex_filter_ext gpu_set_tex_repeat gpu_set_tex_repeat_ext gpu_set_tex_mip_filter gpu_set_tex_mip_filter_ext gpu_set_tex_mip_bias gpu_set_tex_mip_bias_ext gpu_set_tex_min_mip gpu_set_tex_min_mip_ext gpu_set_tex_max_mip gpu_set_tex_max_mip_ext gpu_set_tex_max_aniso gpu_set_tex_max_aniso_ext gpu_set_tex_mip_enable gpu_set_tex_mip_enable_ext gpu_get_blendenable gpu_get_ztestenable gpu_get_zfunc gpu_get_zwriteenable gpu_get_lightingenable gpu_get_fog gpu_get_cullmode gpu_get_blendmode gpu_get_blendmode_ext gpu_get_blendmode_ext_sepalpha gpu_get_blendmode_src gpu_get_blendmode_dest gpu_get_blendmode_srcalpha gpu_get_blendmode_destalpha gpu_get_colorwriteenable gpu_get_colourwriteenable gpu_get_alphatestenable gpu_get_alphatestref gpu_get_alphatestfunc gpu_get_texfilter gpu_get_texfilter_ext gpu_get_texrepeat gpu_get_texrepeat_ext gpu_get_tex_filter gpu_get_tex_filter_ext gpu_get_tex_repeat gpu_get_tex_repeat_ext gpu_get_tex_mip_filter gpu_get_tex_mip_filter_ext gpu_get_tex_mip_bias gpu_get_tex_mip_bias_ext gpu_get_tex_min_mip gpu_get_tex_min_mip_ext gpu_get_tex_max_mip gpu_get_tex_max_mip_ext gpu_get_tex_max_aniso gpu_get_tex_max_aniso_ext gpu_get_tex_mip_enable gpu_get_tex_mip_enable_ext gpu_push_state gpu_pop_state gpu_get_state gpu_set_state draw_light_define_ambient draw_light_define_direction draw_light_define_point draw_light_enable draw_set_lighting draw_light_get_ambient draw_light_get draw_get_lighting shop_leave_rating url_get_domain url_open url_open_ext url_open_full get_timer achievement_login achievement_logout achievement_post achievement_increment achievement_post_score achievement_available achievement_show_achievements achievement_show_leaderboards achievement_load_friends achievement_load_leaderboard achievement_send_challenge achievement_load_progress achievement_reset achievement_login_status achievement_get_pic achievement_show_challenge_notifications achievement_get_challenges achievement_event achievement_show achievement_get_info cloud_file_save cloud_string_save cloud_synchronise ads_enable ads_disable ads_setup ads_engagement_launch ads_engagement_available ads_engagement_active ads_event ads_event_preload ads_set_reward_callback ads_get_display_height ads_get_display_width ads_move ads_interstitial_available ads_interstitial_display device_get_tilt_x device_get_tilt_y device_get_tilt_z device_is_keypad_open device_mouse_check_button device_mouse_check_button_pressed device_mouse_check_button_released device_mouse_x device_mouse_y device_mouse_raw_x device_mouse_raw_y device_mouse_x_to_gui device_mouse_y_to_gui iap_activate iap_status iap_enumerate_products iap_restore_all iap_acquire iap_consume iap_product_details iap_purchase_details facebook_init facebook_login facebook_status facebook_graph_request facebook_dialog facebook_logout facebook_launch_offerwall facebook_post_message facebook_send_invite facebook_user_id facebook_accesstoken facebook_check_permission facebook_request_read_permissions facebook_request_publish_permissions gamepad_is_supported gamepad_get_device_count gamepad_is_connected gamepad_get_description gamepad_get_button_threshold gamepad_set_button_threshold gamepad_get_axis_deadzone gamepad_set_axis_deadzone gamepad_button_count gamepad_button_check gamepad_button_check_pressed gamepad_button_check_released gamepad_button_value gamepad_axis_count gamepad_axis_value gamepad_set_vibration gamepad_set_colour gamepad_set_color os_is_paused window_has_focus code_is_compiled http_get http_get_file http_post_string http_request json_encode json_decode zip_unzip load_csv base64_encode base64_decode md5_string_unicode md5_string_utf8 md5_file os_is_network_connected sha1_string_unicode sha1_string_utf8 sha1_file os_powersave_enable analytics_event analytics_event_ext win8_livetile_tile_notification win8_livetile_tile_clear win8_livetile_badge_notification win8_livetile_badge_clear win8_livetile_queue_enable win8_secondarytile_pin win8_secondarytile_badge_notification win8_secondarytile_delete win8_livetile_notification_begin win8_livetile_notification_secondary_begin win8_livetile_notification_expiry win8_livetile_notification_tag win8_livetile_notification_text_add win8_livetile_notification_image_add win8_livetile_notification_end win8_appbar_enable win8_appbar_add_element win8_appbar_remove_element win8_settingscharm_add_entry win8_settingscharm_add_html_entry win8_settingscharm_add_xaml_entry win8_settingscharm_set_xaml_property win8_settingscharm_get_xaml_property win8_settingscharm_remove_entry win8_share_image win8_share_screenshot win8_share_file win8_share_url win8_share_text win8_search_enable win8_search_disable win8_search_add_suggestions win8_device_touchscreen_available win8_license_initialize_sandbox win8_license_trial_version winphone_license_trial_version winphone_tile_title winphone_tile_count winphone_tile_back_title winphone_tile_back_content winphone_tile_back_content_wide winphone_tile_front_image winphone_tile_front_image_small winphone_tile_front_image_wide winphone_tile_back_image winphone_tile_back_image_wide winphone_tile_background_colour winphone_tile_background_color winphone_tile_icon_image winphone_tile_small_icon_image winphone_tile_wide_content winphone_tile_cycle_images winphone_tile_small_background_image physics_world_create physics_world_gravity physics_world_update_speed physics_world_update_iterations physics_world_draw_debug physics_pause_enable physics_fixture_create physics_fixture_set_kinematic physics_fixture_set_density physics_fixture_set_awake physics_fixture_set_restitution physics_fixture_set_friction physics_fixture_set_collision_group physics_fixture_set_sensor physics_fixture_set_linear_damping physics_fixture_set_angular_damping physics_fixture_set_circle_shape physics_fixture_set_box_shape physics_fixture_set_edge_shape physics_fixture_set_polygon_shape physics_fixture_set_chain_shape physics_fixture_add_point physics_fixture_bind physics_fixture_bind_ext physics_fixture_delete physics_apply_force physics_apply_impulse physics_apply_angular_impulse physics_apply_local_force physics_apply_local_impulse physics_apply_torque physics_mass_properties physics_draw_debug physics_test_overlap physics_remove_fixture physics_set_friction physics_set_density physics_set_restitution physics_get_friction physics_get_density physics_get_restitution physics_joint_distance_create physics_joint_rope_create physics_joint_revolute_create physics_joint_prismatic_create physics_joint_pulley_create physics_joint_wheel_create physics_joint_weld_create physics_joint_friction_create physics_joint_gear_create physics_joint_enable_motor physics_joint_get_value physics_joint_set_value physics_joint_delete physics_particle_create physics_particle_delete physics_particle_delete_region_circle physics_particle_delete_region_box physics_particle_delete_region_poly physics_particle_set_flags physics_particle_set_category_flags physics_particle_draw physics_particle_draw_ext physics_particle_count physics_particle_get_data physics_particle_get_data_particle physics_particle_group_begin physics_particle_group_circle physics_particle_group_box physics_particle_group_polygon physics_particle_group_add_point physics_particle_group_end physics_particle_group_join physics_particle_group_delete physics_particle_group_count physics_particle_group_get_data physics_particle_group_get_mass physics_particle_group_get_inertia physics_particle_group_get_centre_x physics_particle_group_get_centre_y physics_particle_group_get_vel_x physics_particle_group_get_vel_y physics_particle_group_get_ang_vel physics_particle_group_get_x physics_particle_group_get_y physics_particle_group_get_angle physics_particle_set_group_flags physics_particle_get_group_flags physics_particle_get_max_count physics_particle_get_radius physics_particle_get_density physics_particle_get_damping physics_particle_get_gravity_scale physics_particle_set_max_count physics_particle_set_radius physics_particle_set_density physics_particle_set_damping physics_particle_set_gravity_scale network_create_socket network_create_socket_ext network_create_server network_create_server_raw network_connect network_connect_raw network_send_packet network_send_raw network_send_broadcast network_send_udp network_send_udp_raw network_set_timeout network_set_config network_resolve network_destroy buffer_create buffer_write buffer_read buffer_seek buffer_get_surface buffer_set_surface buffer_delete buffer_exists buffer_get_type buffer_get_alignment buffer_poke buffer_peek buffer_save buffer_save_ext buffer_load buffer_load_ext buffer_load_partial buffer_copy buffer_fill buffer_get_size buffer_tell buffer_resize buffer_md5 buffer_sha1 buffer_base64_encode buffer_base64_decode buffer_base64_decode_ext buffer_sizeof buffer_get_address buffer_create_from_vertex_buffer buffer_create_from_vertex_buffer_ext buffer_copy_from_vertex_buffer buffer_async_group_begin buffer_async_group_option buffer_async_group_end buffer_load_async buffer_save_async gml_release_mode gml_pragma steam_activate_overlay steam_is_overlay_enabled steam_is_overlay_activated steam_get_persona_name steam_initialised steam_is_cloud_enabled_for_app steam_is_cloud_enabled_for_account steam_file_persisted steam_get_quota_total steam_get_quota_free steam_file_write steam_file_write_file steam_file_read steam_file_delete steam_file_exists steam_file_size steam_file_share steam_is_screenshot_requested steam_send_screenshot steam_is_user_logged_on steam_get_user_steam_id steam_user_owns_dlc steam_user_installed_dlc steam_set_achievement steam_get_achievement steam_clear_achievement steam_set_stat_int steam_set_stat_float steam_set_stat_avg_rate steam_get_stat_int steam_get_stat_float steam_get_stat_avg_rate steam_reset_all_stats steam_reset_all_stats_achievements steam_stats_ready steam_create_leaderboard steam_upload_score steam_upload_score_ext steam_download_scores_around_user steam_download_scores steam_download_friends_scores steam_upload_score_buffer steam_upload_score_buffer_ext steam_current_game_language steam_available_languages steam_activate_overlay_browser steam_activate_overlay_user steam_activate_overlay_store steam_get_user_persona_name steam_get_app_id steam_get_user_account_id steam_ugc_download steam_ugc_create_item steam_ugc_start_item_update steam_ugc_set_item_title steam_ugc_set_item_description steam_ugc_set_item_visibility steam_ugc_set_item_tags steam_ugc_set_item_content steam_ugc_set_item_preview steam_ugc_submit_item_update steam_ugc_get_item_update_progress steam_ugc_subscribe_item steam_ugc_unsubscribe_item steam_ugc_num_subscribed_items steam_ugc_get_subscribed_items steam_ugc_get_item_install_info steam_ugc_get_item_update_info steam_ugc_request_item_details steam_ugc_create_query_user steam_ugc_create_query_user_ex steam_ugc_create_query_all steam_ugc_create_query_all_ex steam_ugc_query_set_cloud_filename_filter steam_ugc_query_set_match_any_tag steam_ugc_query_set_search_text steam_ugc_query_set_ranked_by_trend_days steam_ugc_query_add_required_tag steam_ugc_query_add_excluded_tag steam_ugc_query_set_return_long_description steam_ugc_query_set_return_total_only steam_ugc_query_set_allow_cached_response steam_ugc_send_query shader_set shader_get_name shader_reset shader_current shader_is_compiled shader_get_sampler_index shader_get_uniform shader_set_uniform_i shader_set_uniform_i_array shader_set_uniform_f shader_set_uniform_f_array shader_set_uniform_matrix shader_set_uniform_matrix_array shader_enable_corner_id texture_set_stage texture_get_texel_width texture_get_texel_height shaders_are_supported vertex_format_begin vertex_format_end vertex_format_delete vertex_format_add_position vertex_format_add_position_3d vertex_format_add_colour vertex_format_add_color vertex_format_add_normal vertex_format_add_texcoord vertex_format_add_textcoord vertex_format_add_custom vertex_create_buffer vertex_create_buffer_ext vertex_delete_buffer vertex_begin vertex_end vertex_position vertex_position_3d vertex_colour vertex_color vertex_argb vertex_texcoord vertex_normal vertex_float1 vertex_float2 vertex_float3 vertex_float4 vertex_ubyte4 vertex_submit vertex_freeze vertex_get_number vertex_get_buffer_size vertex_create_buffer_from_buffer vertex_create_buffer_from_buffer_ext push_local_notification push_get_first_local_notification push_get_next_local_notification push_cancel_local_notification skeleton_animation_set skeleton_animation_get skeleton_animation_mix skeleton_animation_set_ext skeleton_animation_get_ext skeleton_animation_get_duration skeleton_animation_get_frames skeleton_animation_clear skeleton_skin_set skeleton_skin_get skeleton_attachment_set skeleton_attachment_get skeleton_attachment_create skeleton_collision_draw_set skeleton_bone_data_get skeleton_bone_data_set skeleton_bone_state_get skeleton_bone_state_set skeleton_get_minmax skeleton_get_num_bounds skeleton_get_bounds skeleton_animation_get_frame skeleton_animation_set_frame draw_skeleton draw_skeleton_time draw_skeleton_instance draw_skeleton_collision skeleton_animation_list skeleton_skin_list skeleton_slot_data layer_get_id layer_get_id_at_depth layer_get_depth layer_create layer_destroy layer_destroy_instances layer_add_instance layer_has_instance layer_set_visible layer_get_visible layer_exists layer_x layer_y layer_get_x layer_get_y layer_hspeed layer_vspeed layer_get_hspeed layer_get_vspeed layer_script_begin layer_script_end layer_shader layer_get_script_begin layer_get_script_end layer_get_shader layer_set_target_room layer_get_target_room layer_reset_target_room layer_get_all layer_get_all_elements layer_get_name layer_depth layer_get_element_layer layer_get_element_type layer_element_move layer_force_draw_depth layer_is_draw_depth_forced layer_get_forced_depth layer_background_get_id layer_background_exists layer_background_create layer_background_destroy layer_background_visible layer_background_change layer_background_sprite layer_background_htiled layer_background_vtiled layer_background_stretch layer_background_yscale layer_background_xscale layer_background_blend layer_background_alpha layer_background_index layer_background_speed layer_background_get_visible layer_background_get_sprite layer_background_get_htiled layer_background_get_vtiled layer_background_get_stretch layer_background_get_yscale layer_background_get_xscale layer_background_get_blend layer_background_get_alpha layer_background_get_index layer_background_get_speed layer_sprite_get_id layer_sprite_exists layer_sprite_create layer_sprite_destroy layer_sprite_change layer_sprite_index layer_sprite_speed layer_sprite_xscale layer_sprite_yscale layer_sprite_angle layer_sprite_blend layer_sprite_alpha layer_sprite_x layer_sprite_y layer_sprite_get_sprite layer_sprite_get_index layer_sprite_get_speed layer_sprite_get_xscale layer_sprite_get_yscale layer_sprite_get_angle layer_sprite_get_blend layer_sprite_get_alpha layer_sprite_get_x layer_sprite_get_y layer_tilemap_get_id layer_tilemap_exists layer_tilemap_create layer_tilemap_destroy tilemap_tileset tilemap_x tilemap_y tilemap_set tilemap_set_at_pixel tilemap_get_tileset tilemap_get_tile_width tilemap_get_tile_height tilemap_get_width tilemap_get_height tilemap_get_x tilemap_get_y tilemap_get tilemap_get_at_pixel tilemap_get_cell_x_at_pixel tilemap_get_cell_y_at_pixel tilemap_clear draw_tilemap draw_tile tilemap_set_global_mask tilemap_get_global_mask tilemap_set_mask tilemap_get_mask tilemap_get_frame tile_set_empty tile_set_index tile_set_flip tile_set_mirror tile_set_rotate tile_get_empty tile_get_index tile_get_flip tile_get_mirror tile_get_rotate layer_tile_exists layer_tile_create layer_tile_destroy layer_tile_change layer_tile_xscale layer_tile_yscale layer_tile_blend layer_tile_alpha layer_tile_x layer_tile_y layer_tile_region layer_tile_visible layer_tile_get_sprite layer_tile_get_xscale layer_tile_get_yscale layer_tile_get_blend layer_tile_get_alpha layer_tile_get_x layer_tile_get_y layer_tile_get_region layer_tile_get_visible layer_instance_get_instance instance_activate_layer instance_deactivate_layer camera_create camera_create_view camera_destroy camera_apply camera_get_active camera_get_default camera_set_default camera_set_view_mat camera_set_proj_mat camera_set_update_script camera_set_begin_script camera_set_end_script camera_set_view_pos camera_set_view_size camera_set_view_speed camera_set_view_border camera_set_view_angle camera_set_view_target camera_get_view_mat camera_get_proj_mat camera_get_update_script camera_get_begin_script camera_get_end_script camera_get_view_x camera_get_view_y camera_get_view_width camera_get_view_height camera_get_view_speed_x camera_get_view_speed_y camera_get_view_border_x camera_get_view_border_y camera_get_view_angle camera_get_view_target view_get_camera view_get_visible view_get_xport view_get_yport view_get_wport view_get_hport view_get_surface_id view_set_camera view_set_visible view_set_xport view_set_yport view_set_wport view_set_hport view_set_surface_id gesture_drag_time gesture_drag_distance gesture_flick_speed gesture_double_tap_time gesture_double_tap_distance gesture_pinch_distance gesture_pinch_angle_towards gesture_pinch_angle_away gesture_rotate_time gesture_rotate_angle gesture_tap_count gesture_get_drag_time gesture_get_drag_distance gesture_get_flick_speed gesture_get_double_tap_time gesture_get_double_tap_distance gesture_get_pinch_distance gesture_get_pinch_angle_towards gesture_get_pinch_angle_away gesture_get_rotate_time gesture_get_rotate_angle gesture_get_tap_count keyboard_virtual_show keyboard_virtual_hide keyboard_virtual_status keyboard_virtual_height",literal:"self other all noone global local undefined pointer_invalid pointer_null path_action_stop path_action_restart path_action_continue path_action_reverse true false pi GM_build_date GM_version GM_runtime_version timezone_local timezone_utc gamespeed_fps gamespeed_microseconds ev_create ev_destroy ev_step ev_alarm ev_keyboard ev_mouse ev_collision ev_other ev_draw ev_draw_begin ev_draw_end ev_draw_pre ev_draw_post ev_keypress ev_keyrelease ev_trigger ev_left_button ev_right_button ev_middle_button ev_no_button ev_left_press ev_right_press ev_middle_press ev_left_release ev_right_release ev_middle_release ev_mouse_enter ev_mouse_leave ev_mouse_wheel_up ev_mouse_wheel_down ev_global_left_button ev_global_right_button ev_global_middle_button ev_global_left_press ev_global_right_press ev_global_middle_press ev_global_left_release ev_global_right_release ev_global_middle_release ev_joystick1_left ev_joystick1_right ev_joystick1_up ev_joystick1_down ev_joystick1_button1 ev_joystick1_button2 ev_joystick1_button3 ev_joystick1_button4 ev_joystick1_button5 ev_joystick1_button6 ev_joystick1_button7 ev_joystick1_button8 ev_joystick2_left ev_joystick2_right ev_joystick2_up ev_joystick2_down ev_joystick2_button1 ev_joystick2_button2 ev_joystick2_button3 ev_joystick2_button4 ev_joystick2_button5 ev_joystick2_button6 ev_joystick2_button7 ev_joystick2_button8 ev_outside ev_boundary ev_game_start ev_game_end ev_room_start ev_room_end ev_no_more_lives ev_animation_end ev_end_of_path ev_no_more_health ev_close_button ev_user0 ev_user1 ev_user2 ev_user3 ev_user4 ev_user5 ev_user6 ev_user7 ev_user8 ev_user9 ev_user10 ev_user11 ev_user12 ev_user13 ev_user14 ev_user15 ev_step_normal ev_step_begin ev_step_end ev_gui ev_gui_begin ev_gui_end ev_cleanup ev_gesture ev_gesture_tap ev_gesture_double_tap ev_gesture_drag_start ev_gesture_dragging ev_gesture_drag_end ev_gesture_flick ev_gesture_pinch_start ev_gesture_pinch_in ev_gesture_pinch_out ev_gesture_pinch_end ev_gesture_rotate_start ev_gesture_rotating ev_gesture_rotate_end ev_global_gesture_tap ev_global_gesture_double_tap ev_global_gesture_drag_start ev_global_gesture_dragging ev_global_gesture_drag_end ev_global_gesture_flick ev_global_gesture_pinch_start ev_global_gesture_pinch_in ev_global_gesture_pinch_out ev_global_gesture_pinch_end ev_global_gesture_rotate_start ev_global_gesture_rotating ev_global_gesture_rotate_end vk_nokey vk_anykey vk_enter vk_return vk_shift vk_control vk_alt vk_escape vk_space vk_backspace vk_tab vk_pause vk_printscreen vk_left vk_right vk_up vk_down vk_home vk_end vk_delete vk_insert vk_pageup vk_pagedown vk_f1 vk_f2 vk_f3 vk_f4 vk_f5 vk_f6 vk_f7 vk_f8 vk_f9 vk_f10 vk_f11 vk_f12 vk_numpad0 vk_numpad1 vk_numpad2 vk_numpad3 vk_numpad4 vk_numpad5 vk_numpad6 vk_numpad7 vk_numpad8 vk_numpad9 vk_divide vk_multiply vk_subtract vk_add vk_decimal vk_lshift vk_lcontrol vk_lalt vk_rshift vk_rcontrol vk_ralt mb_any mb_none mb_left mb_right mb_middle c_aqua c_black c_blue c_dkgray c_fuchsia c_gray c_green c_lime c_ltgray c_maroon c_navy c_olive c_purple c_red c_silver c_teal c_white c_yellow c_orange fa_left fa_center fa_right fa_top fa_middle fa_bottom pr_pointlist pr_linelist pr_linestrip pr_trianglelist pr_trianglestrip pr_trianglefan bm_complex bm_normal bm_add bm_max bm_subtract bm_zero bm_one bm_src_colour bm_inv_src_colour bm_src_color bm_inv_src_color bm_src_alpha bm_inv_src_alpha bm_dest_alpha bm_inv_dest_alpha bm_dest_colour bm_inv_dest_colour bm_dest_color bm_inv_dest_color bm_src_alpha_sat tf_point tf_linear tf_anisotropic mip_off mip_on mip_markedonly audio_falloff_none audio_falloff_inverse_distance audio_falloff_inverse_distance_clamped audio_falloff_linear_distance audio_falloff_linear_distance_clamped audio_falloff_exponent_distance audio_falloff_exponent_distance_clamped audio_old_system audio_new_system audio_mono audio_stereo audio_3d cr_default cr_none cr_arrow cr_cross cr_beam cr_size_nesw cr_size_ns cr_size_nwse cr_size_we cr_uparrow cr_hourglass cr_drag cr_appstart cr_handpoint cr_size_all spritespeed_framespersecond spritespeed_framespergameframe asset_object asset_unknown asset_sprite asset_sound asset_room asset_path asset_script asset_font asset_timeline asset_tiles asset_shader fa_readonly fa_hidden fa_sysfile fa_volumeid fa_directory fa_archive ds_type_map ds_type_list ds_type_stack ds_type_queue ds_type_grid ds_type_priority ef_explosion ef_ring ef_ellipse ef_firework ef_smoke ef_smokeup ef_star ef_spark ef_flare ef_cloud ef_rain ef_snow pt_shape_pixel pt_shape_disk pt_shape_square pt_shape_line pt_shape_star pt_shape_circle pt_shape_ring pt_shape_sphere pt_shape_flare pt_shape_spark pt_shape_explosion pt_shape_cloud pt_shape_smoke pt_shape_snow ps_distr_linear ps_distr_gaussian ps_distr_invgaussian ps_shape_rectangle ps_shape_ellipse ps_shape_diamond ps_shape_line ty_real ty_string dll_cdecl dll_stdcall matrix_view matrix_projection matrix_world os_win32 os_windows os_macosx os_ios os_android os_symbian os_linux os_unknown os_winphone os_tizen os_win8native os_wiiu os_3ds os_psvita os_bb10 os_ps4 os_xboxone os_ps3 os_xbox360 os_uwp os_tvos os_switch browser_not_a_browser browser_unknown browser_ie browser_firefox browser_chrome browser_safari browser_safari_mobile browser_opera browser_tizen browser_edge browser_windows_store browser_ie_mobile device_ios_unknown device_ios_iphone device_ios_iphone_retina device_ios_ipad device_ios_ipad_retina device_ios_iphone5 device_ios_iphone6 device_ios_iphone6plus device_emulator device_tablet display_landscape display_landscape_flipped display_portrait display_portrait_flipped tm_sleep tm_countvsyncs of_challenge_win of_challen ge_lose of_challenge_tie leaderboard_type_number leaderboard_type_time_mins_secs cmpfunc_never cmpfunc_less cmpfunc_equal cmpfunc_lessequal cmpfunc_greater cmpfunc_notequal cmpfunc_greaterequal cmpfunc_always cull_noculling cull_clockwise cull_counterclockwise lighttype_dir lighttype_point iap_ev_storeload iap_ev_product iap_ev_purchase iap_ev_consume iap_ev_restore iap_storeload_ok iap_storeload_failed iap_status_uninitialised iap_status_unavailable iap_status_loading iap_status_available iap_status_processing iap_status_restoring iap_failed iap_unavailable iap_available iap_purchased iap_canceled iap_refunded fb_login_default fb_login_fallback_to_webview fb_login_no_fallback_to_webview fb_login_forcing_webview fb_login_use_system_account fb_login_forcing_safari phy_joint_anchor_1_x phy_joint_anchor_1_y phy_joint_anchor_2_x phy_joint_anchor_2_y phy_joint_reaction_force_x phy_joint_reaction_force_y phy_joint_reaction_torque phy_joint_motor_speed phy_joint_angle phy_joint_motor_torque phy_joint_max_motor_torque phy_joint_translation phy_joint_speed phy_joint_motor_force phy_joint_max_motor_force phy_joint_length_1 phy_joint_length_2 phy_joint_damping_ratio phy_joint_frequency phy_joint_lower_angle_limit phy_joint_upper_angle_limit phy_joint_angle_limits phy_joint_max_length phy_joint_max_torque phy_joint_max_force phy_debug_render_aabb phy_debug_render_collision_pairs phy_debug_render_coms phy_debug_render_core_shapes phy_debug_render_joints phy_debug_render_obb phy_debug_render_shapes phy_particle_flag_water phy_particle_flag_zombie phy_particle_flag_wall phy_particle_flag_spring phy_particle_flag_elastic phy_particle_flag_viscous phy_particle_flag_powder phy_particle_flag_tensile phy_particle_flag_colourmixing phy_particle_flag_colormixing phy_particle_group_flag_solid phy_particle_group_flag_rigid phy_particle_data_flag_typeflags phy_particle_data_flag_position phy_particle_data_flag_velocity phy_particle_data_flag_colour phy_particle_data_flag_color phy_particle_data_flag_category achievement_our_info achievement_friends_info achievement_leaderboard_info achievement_achievement_info achievement_filter_all_players achievement_filter_friends_only achievement_filter_favorites_only achievement_type_achievement_challenge achievement_type_score_challenge achievement_pic_loaded achievement_show_ui achievement_show_profile achievement_show_leaderboard achievement_show_achievement achievement_show_bank achievement_show_friend_picker achievement_show_purchase_prompt network_socket_tcp network_socket_udp network_socket_bluetooth network_type_connect network_type_disconnect network_type_data network_type_non_blocking_connect network_config_connect_timeout network_config_use_non_blocking_socket network_config_enable_reliable_udp network_config_disable_reliable_udp buffer_fixed buffer_grow buffer_wrap buffer_fast buffer_vbuffer buffer_network buffer_u8 buffer_s8 buffer_u16 buffer_s16 buffer_u32 buffer_s32 buffer_u64 buffer_f16 buffer_f32 buffer_f64 buffer_bool buffer_text buffer_string buffer_surface_copy buffer_seek_start buffer_seek_relative buffer_seek_end buffer_generalerror buffer_outofspace buffer_outofbounds buffer_invalidtype text_type button_type input_type ANSI_CHARSET DEFAULT_CHARSET EASTEUROPE_CHARSET RUSSIAN_CHARSET SYMBOL_CHARSET SHIFTJIS_CHARSET HANGEUL_CHARSET GB2312_CHARSET CHINESEBIG5_CHARSET JOHAB_CHARSET HEBREW_CHARSET ARABIC_CHARSET GREEK_CHARSET TURKISH_CHARSET VIETNAMESE_CHARSET THAI_CHARSET MAC_CHARSET BALTIC_CHARSET OEM_CHARSET gp_face1 gp_face2 gp_face3 gp_face4 gp_shoulderl gp_shoulderr gp_shoulderlb gp_shoulderrb gp_select gp_start gp_stickl gp_stickr gp_padu gp_padd gp_padl gp_padr gp_axislh gp_axislv gp_axisrh gp_axisrv ov_friends ov_community ov_players ov_settings ov_gamegroup ov_achievements lb_sort_none lb_sort_ascending lb_sort_descending lb_disp_none lb_disp_numeric lb_disp_time_sec lb_disp_time_ms ugc_result_success ugc_filetype_community ugc_filetype_microtrans ugc_visibility_public ugc_visibility_friends_only ugc_visibility_private ugc_query_RankedByVote ugc_query_RankedByPublicationDate ugc_query_AcceptedForGameRankedByAcceptanceDate ugc_query_RankedByTrend ugc_query_FavoritedByFriendsRankedByPublicationDate ugc_query_CreatedByFriendsRankedByPublicationDate ugc_query_RankedByNumTimesReported ugc_query_CreatedByFollowedUsersRankedByPublicationDate ugc_query_NotYetRated ugc_query_RankedByTotalVotesAsc ugc_query_RankedByVotesUp ugc_query_RankedByTextSearch ugc_sortorder_CreationOrderDesc ugc_sortorder_CreationOrderAsc ugc_sortorder_TitleAsc ugc_sortorder_LastUpdatedDesc ugc_sortorder_SubscriptionDateDesc ugc_sortorder_VoteScoreDesc ugc_sortorder_ForModeration ugc_list_Published ugc_list_VotedOn ugc_list_VotedUp ugc_list_VotedDown ugc_list_WillVoteLater ugc_list_Favorited ugc_list_Subscribed ugc_list_UsedOrPlayed ugc_list_Followed ugc_match_Items ugc_match_Items_Mtx ugc_match_Items_ReadyToUse ugc_match_Collections ugc_match_Artwork ugc_match_Videos ugc_match_Screenshots ugc_match_AllGuides ugc_match_WebGuides ugc_match_IntegratedGuides ugc_match_UsableInGame ugc_match_ControllerBindings vertex_usage_position vertex_usage_colour vertex_usage_color vertex_usage_normal vertex_usage_texcoord vertex_usage_textcoord vertex_usage_blendweight vertex_usage_blendindices vertex_usage_psize vertex_usage_tangent vertex_usage_binormal vertex_usage_fog vertex_usage_depth vertex_usage_sample vertex_type_float1 vertex_type_float2 vertex_type_float3 vertex_type_float4 vertex_type_colour vertex_type_color vertex_type_ubyte4 layerelementtype_undefined layerelementtype_background layerelementtype_instance layerelementtype_oldtilemap layerelementtype_sprite layerelementtype_tilemap layerelementtype_particlesystem layerelementtype_tile tile_rotate tile_flip tile_mirror tile_index_mask kbv_type_default kbv_type_ascii kbv_type_url kbv_type_email kbv_type_numbers kbv_type_phone kbv_type_phone_name kbv_returnkey_default kbv_returnkey_go kbv_returnkey_google kbv_returnkey_join kbv_returnkey_next kbv_returnkey_route kbv_returnkey_search kbv_returnkey_send kbv_returnkey_yahoo kbv_returnkey_done kbv_returnkey_continue kbv_returnkey_emergency kbv_autocapitalize_none kbv_autocapitalize_words kbv_autocapitalize_sentences kbv_autocapitalize_characters",symbol:"argument_relative argument argument0 argument1 argument2 argument3 argument4 argument5 argument6 argument7 argument8 argument9 argument10 argument11 argument12 argument13 argument14 argument15 argument_count x y xprevious yprevious xstart ystart hspeed vspeed direction speed friction gravity gravity_direction path_index path_position path_positionprevious path_speed path_scale path_orientation path_endaction object_index id solid persistent mask_index instance_count instance_id room_speed fps fps_real current_time current_year current_month current_day current_weekday current_hour current_minute current_second alarm timeline_index timeline_position timeline_speed timeline_running timeline_loop room room_first room_last room_width room_height room_caption room_persistent score lives health show_score show_lives show_health caption_score caption_lives caption_health event_type event_number event_object event_action application_surface gamemaker_pro gamemaker_registered gamemaker_version error_occurred error_last debug_mode keyboard_key keyboard_lastkey keyboard_lastchar keyboard_string mouse_x mouse_y mouse_button mouse_lastbutton cursor_sprite visible sprite_index sprite_width sprite_height sprite_xoffset sprite_yoffset image_number image_index image_speed depth image_xscale image_yscale image_angle image_alpha image_blend bbox_left bbox_right bbox_top bbox_bottom layer background_colour background_showcolour background_color background_showcolor view_enabled view_current view_visible view_xview view_yview view_wview view_hview view_xport view_yport view_wport view_hport view_angle view_hborder view_vborder view_hspeed view_vspeed view_object view_surface_id view_camera game_id game_display_name game_project_name game_save_id working_directory temp_directory program_directory browser_width browser_height os_type os_device os_browser os_version display_aa async_load delta_time webgl_enabled event_data iap_data phy_rotation phy_position_x phy_position_y phy_angular_velocity phy_linear_velocity_x phy_linear_velocity_y phy_speed_x phy_speed_y phy_speed phy_angular_damping phy_linear_damping phy_bullet phy_fixed_rotation phy_active phy_mass phy_inertia phy_com_x phy_com_y phy_dynamic phy_kinematic phy_sleeping phy_collision_points phy_collision_x phy_collision_y phy_col_normal_x phy_col_normal_y phy_position_xprevious phy_position_yprevious"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}}},function(e,t){e.exports=function(e){var t={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{aliases:["golang"],keywords:t,illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",variants:[e.QUOTE_STRING_MODE,{begin:"'",end:"[^\\\\]'"},{begin:"`",end:"`"}]},{className:"number",variants:[{begin:e.C_NUMBER_RE+"[dflsi]",relevance:1},e.C_NUMBER_MODE]},{begin:/:=/},{className:"function",beginKeywords:"func",end:/\s*\{/,excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:t,illegal:/["']/}]}]}}},function(e,t){e.exports=function(e){return{keywords:{keyword:"println readln print import module function local return let var while for foreach times in case when match with break continue augment augmentation each find filter reduce if then else otherwise try catch finally raise throw orIfNull DynamicObject|10 DynamicVariable struct Observable map set vector list array",literal:"true false null"},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}}},function(e,t){e.exports=function(e){return{case_insensitive:!0,keywords:{keyword:"task project allprojects subprojects artifacts buildscript configurations dependencies repositories sourceSets description delete from into include exclude source classpath destinationDir includes options sourceCompatibility targetCompatibility group flatDir doLast doFirst flatten todir fromdir ant def abstract break case catch continue default do else extends final finally for if implements instanceof native new private protected public return static switch synchronized throw throws transient try volatile while strictfp package import false null super this true antlrtask checkstyle codenarc copy boolean byte char class double float int interface long short void compile runTime file fileTree abs any append asList asWritable call collect compareTo count div dump each eachByte eachFile eachLine every find findAll flatten getAt getErr getIn getOut getText grep immutable inject inspect intersect invokeMethods isCase join leftShift minus multiply newInputStream newOutputStream newPrintWriter newReader newWriter next plus pop power previous print println push putAt read readBytes readLines reverse reverseEach round size sort splitEachLine step subMap times toInteger toList tokenize upto waitForOrKill withPrintWriter withReader withStream withWriter withWriterAppend write writeLine"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.REGEXP_MODE]}}},function(e,t){e.exports=function(e){return{keywords:{literal:"true false null",keyword:"byte short char int long boolean float double void def as in assert trait super this abstract static volatile transient public private protected synchronized final class interface enum if else for while switch case break default continue throw throws try catch finally implements extends new import package return instanceof"},contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""',end:'"""'},{className:"string",begin:"'''",end:"'''"},{className:"string",begin:"\\$/",end:"/\\$",relevance:10},e.APOS_STRING_MODE,{className:"regexp",begin:/~?\/[^\/\n]+\//,contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},e.BINARY_NUMBER_MODE,{className:"class",beginKeywords:"class interface trait enum",end:"{",illegal:":",contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"},{className:"string",begin:/[^\?]{0}[A-Za-z0-9_$]+ *:/},{begin:/\?/,end:/\:/},{className:"symbol",begin:"^\\s*[A-Za-z0-9_$]+:",relevance:0}],illegal:/#|<\//}}},function(e,t){e.exports=function(e){return{case_insensitive:!0,contains:[{className:"meta",begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$",relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+"},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class",begin:"\\.[\\w-]+"},{begin:"{\\s*",end:"\\s*}",contains:[{begin:":\\w+\\s*=>",end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr",begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=",end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr",begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:"#{",starts:{end:"}",subLanguage:"ruby"}}]}}},function(e,t){e.exports=function(e){var t={"builtin-name":"each in with if else unless bindattr action collection debugger log outlet template unbound view yield"};return{aliases:["hbs","html.hbs","html.handlebars"],case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT("{{!(--)?","(--)?}}"),{className:"template-tag",begin:/\{\{[#\/]/,end:/\}\}/,contains:[{className:"name",begin:/[a-zA-Z\.-]+/,keywords:t,starts:{endsWithParent:!0,relevance:0,contains:[e.QUOTE_STRING_MODE]}}]},{className:"template-variable",begin:/\{\{/,end:/\}\}/,keywords:t}]}}},function(e,t){e.exports=function(e){var t={variants:[e.COMMENT("--","$"),e.COMMENT("{-","-}",{contains:["self"]})]},n={className:"meta",begin:"{-#",end:"#-}"},r={className:"meta",begin:"^#",end:"$"},o={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},i={begin:"\\(",end:"\\)",illegal:'"',contains:[n,r,{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e.inherit(e.TITLE_MODE,{begin:"[_a-z][\\w']*"}),t]};return{aliases:["hs"],keywords:"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec",contains:[{beginKeywords:"module",end:"where",keywords:"module where",contains:[i,t],illegal:"\\W\\.|;"},{begin:"\\bimport\\b",end:"$",keywords:"import qualified as hiding",contains:[i,t],illegal:"\\W\\.|;"},{className:"class",begin:"^(\\s*)?(class|instance)\\b",end:"where",keywords:"class family instance where",contains:[o,i,t]},{className:"class",begin:"\\b(data|(new)?type)\\b",end:"$",keywords:"data family type newtype deriving",contains:[n,o,i,{begin:"{",end:"}",contains:i.contains},t]},{beginKeywords:"default",end:"$",contains:[o,i,t]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,t]},{begin:"\\bforeign\\b",end:"$",keywords:"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe",contains:[o,e.QUOTE_STRING_MODE,t]},{className:"meta",begin:"#!\\/usr\\/bin\\/env runhaskell",end:"$"},n,r,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,o,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),t,{begin:"->|<-"}]}}},function(e,t){e.exports=function(e){return{aliases:["hx"],keywords:{keyword:"break case cast catch continue default do dynamic else enum extern for function here if import in inline never new override package private get set public return static super switch this throw trace try typedef untyped using var while Int Float String Bool Dynamic Void Array ",built_in:"trace this",literal:"true false null _"},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{className:"subst",begin:"\\$\\{",end:"\\}"},{className:"subst",begin:"\\$",end:"\\W}"}]},e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"@:",end:"$"},{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elseif end error"}},{className:"type",begin:":[ \t]*",end:"[^A-Za-z0-9_ \t\\->]",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:":[ \t]*",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"new *",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"class",beginKeywords:"enum",end:"\\{",contains:[e.TITLE_MODE]},{className:"class",beginKeywords:"abstract",end:"[\\{$]",contains:[{className:"type",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"from +",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"to +",end:"\\W",excludeBegin:!0,excludeEnd:!0},e.TITLE_MODE],keywords:{keyword:"abstract from to"}},{className:"class",begin:"\\b(class|interface) +",end:"[\\{$]",excludeEnd:!0,keywords:"class interface",contains:[{className:"keyword",begin:"\\b(extends|implements) +",keywords:"extends implements",contains:[{className:"type",begin:e.IDENT_RE,relevance:0}]},e.TITLE_MODE]},{className:"function",beginKeywords:"function",end:"\\(",excludeEnd:!0,illegal:"\\S",contains:[e.TITLE_MODE]}],illegal:/<\//}}},function(e,t){e.exports=function(e){return{case_insensitive:!0,lexemes:/[\w\._]+/,keywords:"goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"string",begin:'{"',end:'"}',contains:[e.BACKSLASH_ESCAPE]},e.COMMENT(";","$",{relevance:0}),{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib"},contains:[e.inherit(e.QUOTE_STRING_MODE,{className:"meta-string"}),e.NUMBER_MODE,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"symbol",begin:"^\\*(\\w+|@)"},e.NUMBER_MODE,e.C_NUMBER_MODE]}}},function(e,t){e.exports=function(e){var t="action collection component concat debugger each each-in else get hash if input link-to loc log mut outlet partial query-params render textarea unbound unless with yield view",n=(e.QUOTE_STRING_MODE,{endsWithParent:!0,relevance:0,keywords:{keyword:"as",built_in:t},contains:[e.QUOTE_STRING_MODE,{illegal:/\}\}/,begin:/[a-zA-Z0-9_]+=/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/[a-zA-Z0-9_]+/}]},e.NUMBER_MODE]});return{case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT("{{!(--)?","(--)?}}"),{className:"template-tag",begin:/\{\{[#\/]/,end:/\}\}/,contains:[{className:"name",begin:/[a-zA-Z\.\-]+/,keywords:{"builtin-name":t},starts:n}]},{className:"template-variable",begin:/\{\{[a-zA-Z][a-zA-Z\-]+/,end:/\}\}/,keywords:{keyword:"as",built_in:t},contains:[e.QUOTE_STRING_MODE]}]}}},function(e,t){e.exports=function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],illegal:"\\S",contains:[{begin:"^"+t,end:"$",contains:[{className:"number",begin:"\\b\\d{3}\\b"}]},{begin:"^[A-Z]+ (.*?) "+t+"$",returnBegin:!0,end:"$",contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{begin:t},{className:"keyword",begin:"[A-Z]+"}]},{className:"attribute",begin:"^\\w",end:": ",excludeEnd:!0,illegal:"\\n|\\s|=",starts:{end:"$",relevance:0}},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}]}}},function(e,t){e.exports=function(e){var t="[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9/;:]*",n={begin:t,relevance:0},r={className:"number",begin:"[-+]?\\d+(\\.\\d+)?",relevance:0},o=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),i=e.COMMENT(";","$",{relevance:0}),a={className:"literal",begin:/\b([Tt]rue|[Ff]alse|nil|None)\b/},s={begin:"[\\[\\{]",end:"[\\]\\}]"},l={className:"comment",begin:"\\^"+t},u=e.COMMENT("\\^\\{","\\}"),c={className:"symbol",begin:"[:]{1,2}"+t},f={begin:"\\(",end:"\\)"},d={endsWithParent:!0,relevance:0},p={keywords:{"builtin-name":"!= % %= & &= * ** **= *= *map + += , --build-class-- --import-- -= . / // //= /= < << <<= <= = > >= >> >>= @ @= ^ ^= abs accumulate all and any ap-compose ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast callable calling-module-name car case cdr chain chr coll? combinations compile compress cond cons cons? continue count curry cut cycle dec def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first flatten float? fn fnc fnr for for* format fraction genexpr gensym get getattr global globals group-by hasattr hash hex id identity if if* if-not if-python2 import in inc input instance? integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass iter iterable? iterate iterator? keyword keyword? lambda last len let lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all map max merge-with method-decorator min multi-decorator multicombinations name neg? next none? nonlocal not not-in not? nth numeric? oct odd? open or ord partition permutations pos? post-route postwalk pow prewalk print product profile/calls profile/cpu put-route quasiquote quote raise range read read-str recursive-replace reduce remove repeat repeatedly repr require rest round route route-with-methods rwm second seq set-comp setattr setv some sorted string string? sum switch symbol? take take-nth take-while tee try unless unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms xi xor yield yield-from zero? zip zip-longest | |= ~"},lexemes:t,className:"name",begin:t,starts:d},m=[f,o,l,u,i,c,s,r,a,n];return f.contains=[e.COMMENT("comment",""),p,d],d.contains=m,s.contains=m,{aliases:["hylang"],illegal:/\S/,contains:[{className:"meta",begin:"^#!",end:"$"},f,o,l,u,i,c,s,r,a]}}},function(e,t){e.exports=function(e){return{aliases:["i7"],case_insensitive:!0,keywords:{keyword:"thing room person man woman animal container supporter backdrop door scenery open closed locked inside gender is are say understand kind of rule"},contains:[{className:"string",begin:'"',end:'"',relevance:0,contains:[{className:"subst",begin:"\\[",end:"\\]"}]},{className:"section",begin:/^(Volume|Book|Part|Chapter|Section|Table)\b/,end:"$"},{begin:/^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\b/,end:":",contains:[{begin:"\\(This",end:"\\)"}]},{className:"comment",begin:"\\[",end:"\\]",contains:["self"]}]}}},function(e,t){e.exports=function(e){var t={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]};return{aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[e.COMMENT(";","$"),e.HASH_COMMENT_MODE,{className:"section",begin:/^\s*\[+/,end:/\]+/},{begin:/^[a-z0-9\[\]_-]+\s*=\s*/,end:"$",returnBegin:!0,contains:[{className:"attr",begin:/[a-z0-9\[\]_-]+/},{begin:/=/,endsWithParent:!0,relevance:0,contains:[{className:"literal",begin:/\bon|off|true|false|yes|no\b/},{className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)}/}]},t,{className:"number",begin:/([\+\-]+)?[\d]+_[\d_]+/},e.NUMBER_MODE]}]}]}}},function(e,t){e.exports=function(e){return{case_insensitive:!0,keywords:{literal:".False. .True.",keyword:"kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read",built_in:"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_ofacosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image IRP_ALIGN irp_here"},illegal:/\/\*/,contains:[e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{className:"string",relevance:0}),{className:"function",beginKeywords:"subroutine function program",illegal:"[${=\\n]",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},e.COMMENT("!","$",{relevance:0}),e.COMMENT("begin_doc","end_doc",{relevance:10}),{className:"number",begin:"(?=\\b|\\+|\\-|\\.)(?=\\.\\d|\\d)(?:\\d+)?(?:\\.?\\d*)(?:[de][+-]?\\d+)?\\b\\.?",relevance:0}]}}},function(e,t){e.exports=function(e){var t="[A-Za-zА-Яа-яёЁ_!][A-Za-zА-Яа-яёЁ_0-9]*",n={className:"number",begin:e.NUMBER_RE,relevance:0},r={className:"string",variants:[{begin:'"',end:'"'},{begin:"'",end:"'"}]},o={className:"doctag",begin:"\\b(?:TODO|DONE|BEGIN|END|STUB|CHG|FIXME|NOTE|BUG|XXX)\\b",relevance:0},i={variants:[{className:"comment",begin:"//",end:"$",relevance:0,contains:[e.PHRASAL_WORDS_MODE,o]},{className:"comment",begin:"/\\*",end:"\\*/",relevance:0,contains:[e.PHRASAL_WORDS_MODE,o]}]},a={keyword:"and и else иначе endexcept endfinally endforeach конецвсе endif конецесли endwhile конецпока except exitfor finally foreach все if если in в not не or или try while пока ",built_in:"SYSRES_CONST_ACCES_RIGHT_TYPE_EDIT SYSRES_CONST_ACCES_RIGHT_TYPE_FULL SYSRES_CONST_ACCES_RIGHT_TYPE_VIEW SYSRES_CONST_ACCESS_MODE_REQUISITE_CODE SYSRES_CONST_ACCESS_NO_ACCESS_VIEW SYSRES_CONST_ACCESS_NO_ACCESS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW SYSRES_CONST_ACCESS_RIGHTS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_TYPE_CHANGE SYSRES_CONST_ACCESS_TYPE_CHANGE_CODE SYSRES_CONST_ACCESS_TYPE_EXISTS SYSRES_CONST_ACCESS_TYPE_EXISTS_CODE SYSRES_CONST_ACCESS_TYPE_FULL SYSRES_CONST_ACCESS_TYPE_FULL_CODE SYSRES_CONST_ACCESS_TYPE_VIEW SYSRES_CONST_ACCESS_TYPE_VIEW_CODE SYSRES_CONST_ACTION_TYPE_ABORT SYSRES_CONST_ACTION_TYPE_ACCEPT SYSRES_CONST_ACTION_TYPE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ADD_ATTACHMENT SYSRES_CONST_ACTION_TYPE_CHANGE_CARD SYSRES_CONST_ACTION_TYPE_CHANGE_KIND SYSRES_CONST_ACTION_TYPE_CHANGE_STORAGE SYSRES_CONST_ACTION_TYPE_CONTINUE SYSRES_CONST_ACTION_TYPE_COPY SYSRES_CONST_ACTION_TYPE_CREATE SYSRES_CONST_ACTION_TYPE_CREATE_VERSION SYSRES_CONST_ACTION_TYPE_DELETE SYSRES_CONST_ACTION_TYPE_DELETE_ATTACHMENT SYSRES_CONST_ACTION_TYPE_DELETE_VERSION SYSRES_CONST_ACTION_TYPE_DISABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE_AND_PASSWORD SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_PASSWORD SYSRES_CONST_ACTION_TYPE_EXPORT_WITH_LOCK SYSRES_CONST_ACTION_TYPE_EXPORT_WITHOUT_LOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITH_UNLOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITHOUT_UNLOCK SYSRES_CONST_ACTION_TYPE_LIFE_CYCLE_STAGE SYSRES_CONST_ACTION_TYPE_LOCK SYSRES_CONST_ACTION_TYPE_LOCK_FOR_SERVER SYSRES_CONST_ACTION_TYPE_LOCK_MODIFY SYSRES_CONST_ACTION_TYPE_MARK_AS_READED SYSRES_CONST_ACTION_TYPE_MARK_AS_UNREADED SYSRES_CONST_ACTION_TYPE_MODIFY SYSRES_CONST_ACTION_TYPE_MODIFY_CARD SYSRES_CONST_ACTION_TYPE_MOVE_TO_ARCHIVE SYSRES_CONST_ACTION_TYPE_OFF_ENCRYPTION SYSRES_CONST_ACTION_TYPE_PASSWORD_CHANGE SYSRES_CONST_ACTION_TYPE_PERFORM SYSRES_CONST_ACTION_TYPE_RECOVER_FROM_LOCAL_COPY SYSRES_CONST_ACTION_TYPE_RESTART SYSRES_CONST_ACTION_TYPE_RESTORE_FROM_ARCHIVE SYSRES_CONST_ACTION_TYPE_REVISION SYSRES_CONST_ACTION_TYPE_SEND_BY_MAIL SYSRES_CONST_ACTION_TYPE_SIGN SYSRES_CONST_ACTION_TYPE_START SYSRES_CONST_ACTION_TYPE_UNLOCK SYSRES_CONST_ACTION_TYPE_UNLOCK_FROM_SERVER SYSRES_CONST_ACTION_TYPE_VERSION_STATE SYSRES_CONST_ACTION_TYPE_VERSION_VISIBILITY SYSRES_CONST_ACTION_TYPE_VIEW SYSRES_CONST_ACTION_TYPE_VIEW_SHADOW_COPY SYSRES_CONST_ACTION_TYPE_WORKFLOW_DESCRIPTION_MODIFY SYSRES_CONST_ACTION_TYPE_WRITE_HISTORY SYSRES_CONST_ACTIVE_VERSION_STATE_PICK_VALUE SYSRES_CONST_ADD_REFERENCE_MODE_NAME SYSRES_CONST_ADDITION_REQUISITE_CODE SYSRES_CONST_ADDITIONAL_PARAMS_REQUISITE_CODE SYSRES_CONST_ADITIONAL_JOB_END_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_READ_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_START_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_STATE_REQUISITE_NAME SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE_ACTION SYSRES_CONST_ALL_ACCEPT_CONDITION_RUS SYSRES_CONST_ALL_USERS_GROUP SYSRES_CONST_ALL_USERS_GROUP_NAME SYSRES_CONST_ALL_USERS_SERVER_GROUP_NAME SYSRES_CONST_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_APP_VIEWER_TYPE_REQUISITE_CODE SYSRES_CONST_APPROVING_SIGNATURE_NAME SYSRES_CONST_APPROVING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE_CODE SYSRES_CONST_ATTACH_TYPE_COMPONENT_TOKEN SYSRES_CONST_ATTACH_TYPE_DOC SYSRES_CONST_ATTACH_TYPE_EDOC SYSRES_CONST_ATTACH_TYPE_FOLDER SYSRES_CONST_ATTACH_TYPE_JOB SYSRES_CONST_ATTACH_TYPE_REFERENCE SYSRES_CONST_ATTACH_TYPE_TASK SYSRES_CONST_AUTH_ENCODED_PASSWORD SYSRES_CONST_AUTH_ENCODED_PASSWORD_CODE SYSRES_CONST_AUTH_NOVELL SYSRES_CONST_AUTH_PASSWORD SYSRES_CONST_AUTH_PASSWORD_CODE SYSRES_CONST_AUTH_WINDOWS SYSRES_CONST_AUTHENTICATING_SIGNATURE_NAME SYSRES_CONST_AUTHENTICATING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_AUTO_ENUM_METHOD_FLAG SYSRES_CONST_AUTO_NUMERATION_CODE SYSRES_CONST_AUTO_STRONG_ENUM_METHOD_FLAG SYSRES_CONST_AUTOTEXT_NAME_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_TEXT_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_USAGE_ALL SYSRES_CONST_AUTOTEXT_USAGE_ALL_CODE SYSRES_CONST_AUTOTEXT_USAGE_SIGN SYSRES_CONST_AUTOTEXT_USAGE_SIGN_CODE SYSRES_CONST_AUTOTEXT_USAGE_WORK SYSRES_CONST_AUTOTEXT_USAGE_WORK_CODE SYSRES_CONST_AUTOTEXT_USE_ANYWHERE_CODE SYSRES_CONST_AUTOTEXT_USE_ON_SIGNING_CODE SYSRES_CONST_AUTOTEXT_USE_ON_WORK_CODE SYSRES_CONST_BEGIN_DATE_REQUISITE_CODE SYSRES_CONST_BLACK_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BLUE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BTN_PART SYSRES_CONST_CALCULATED_ROLE_TYPE_CODE SYSRES_CONST_CALL_TYPE_VARIABLE_BUTTON_VALUE SYSRES_CONST_CALL_TYPE_VARIABLE_PROGRAM_VALUE SYSRES_CONST_CANCEL_MESSAGE_FUNCTION_RESULT SYSRES_CONST_CARD_PART SYSRES_CONST_CARD_REFERENCE_MODE_NAME SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_AND_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_VALUE SYSRES_CONST_CHECK_PARAM_VALUE_DATE_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_FLOAT_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_INTEGER_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_PICK_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_REEFRENCE_PARAM_TYPE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_CODE_COMPONENT_TYPE_ADMIN SYSRES_CONST_CODE_COMPONENT_TYPE_DEVELOPER SYSRES_CONST_CODE_COMPONENT_TYPE_DOCS SYSRES_CONST_CODE_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_CODE_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_CODE_COMPONENT_TYPE_OTHER SYSRES_CONST_CODE_COMPONENT_TYPE_REFERENCE SYSRES_CONST_CODE_COMPONENT_TYPE_REPORT SYSRES_CONST_CODE_COMPONENT_TYPE_SCRIPT SYSRES_CONST_CODE_COMPONENT_TYPE_URL SYSRES_CONST_CODE_REQUISITE_ACCESS SYSRES_CONST_CODE_REQUISITE_CODE SYSRES_CONST_CODE_REQUISITE_COMPONENT SYSRES_CONST_CODE_REQUISITE_DESCRIPTION SYSRES_CONST_CODE_REQUISITE_EXCLUDE_COMPONENT SYSRES_CONST_CODE_REQUISITE_RECORD SYSRES_CONST_COMMENT_REQ_CODE SYSRES_CONST_COMMON_SETTINGS_REQUISITE_CODE SYSRES_CONST_COMP_CODE_GRD SYSRES_CONST_COMPONENT_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_COMPONENT_TYPE_ADMIN_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DEVELOPER_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DOCS SYSRES_CONST_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_COMPONENT_TYPE_EDOCS SYSRES_CONST_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_COMPONENT_TYPE_OTHER SYSRES_CONST_COMPONENT_TYPE_REFERENCE_TYPES SYSRES_CONST_COMPONENT_TYPE_REFERENCES SYSRES_CONST_COMPONENT_TYPE_REPORTS SYSRES_CONST_COMPONENT_TYPE_SCRIPTS SYSRES_CONST_COMPONENT_TYPE_URL SYSRES_CONST_COMPONENTS_REMOTE_SERVERS_VIEW_CODE SYSRES_CONST_CONDITION_BLOCK_DESCRIPTION SYSRES_CONST_CONST_FIRM_STATUS_COMMON SYSRES_CONST_CONST_FIRM_STATUS_INDIVIDUAL SYSRES_CONST_CONST_NEGATIVE_VALUE SYSRES_CONST_CONST_POSITIVE_VALUE SYSRES_CONST_CONST_SERVER_STATUS_DONT_REPLICATE SYSRES_CONST_CONST_SERVER_STATUS_REPLICATE SYSRES_CONST_CONTENTS_REQUISITE_CODE SYSRES_CONST_DATA_TYPE_BOOLEAN SYSRES_CONST_DATA_TYPE_DATE SYSRES_CONST_DATA_TYPE_FLOAT SYSRES_CONST_DATA_TYPE_INTEGER SYSRES_CONST_DATA_TYPE_PICK SYSRES_CONST_DATA_TYPE_REFERENCE SYSRES_CONST_DATA_TYPE_STRING SYSRES_CONST_DATA_TYPE_TEXT SYSRES_CONST_DATA_TYPE_VARIANT SYSRES_CONST_DATE_CLOSE_REQ_CODE SYSRES_CONST_DATE_FORMAT_DATE_ONLY_CHAR SYSRES_CONST_DATE_OPEN_REQ_CODE SYSRES_CONST_DATE_REQUISITE SYSRES_CONST_DATE_REQUISITE_CODE SYSRES_CONST_DATE_REQUISITE_NAME SYSRES_CONST_DATE_REQUISITE_TYPE SYSRES_CONST_DATE_TYPE_CHAR SYSRES_CONST_DATETIME_FORMAT_VALUE SYSRES_CONST_DEA_ACCESS_RIGHTS_ACTION_CODE SYSRES_CONST_DESCRIPTION_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_DET1_PART SYSRES_CONST_DET2_PART SYSRES_CONST_DET3_PART SYSRES_CONST_DET4_PART SYSRES_CONST_DET5_PART SYSRES_CONST_DET6_PART SYSRES_CONST_DETAIL_DATASET_KEY_REQUISITE_CODE SYSRES_CONST_DETAIL_PICK_REQUISITE_CODE SYSRES_CONST_DETAIL_REQ_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_NAME SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_NAME SYSRES_CONST_DOCUMENT_STORAGES_CODE SYSRES_CONST_DOCUMENT_TEMPLATES_TYPE_NAME SYSRES_CONST_DOUBLE_REQUISITE_CODE SYSRES_CONST_EDITOR_CLOSE_FILE_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_CLOSE_PROCESS_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_TYPE_REQUISITE_CODE SYSRES_CONST_EDITORS_APPLICATION_NAME_REQUISITE_CODE SYSRES_CONST_EDITORS_CREATE_SEVERAL_PROCESSES_REQUISITE_CODE SYSRES_CONST_EDITORS_EXTENSION_REQUISITE_CODE SYSRES_CONST_EDITORS_OBSERVER_BY_PROCESS_TYPE SYSRES_CONST_EDITORS_REFERENCE_CODE SYSRES_CONST_EDITORS_REPLACE_SPEC_CHARS_REQUISITE_CODE SYSRES_CONST_EDITORS_USE_PLUGINS_REQUISITE_CODE SYSRES_CONST_EDITORS_VIEW_DOCUMENT_OPENED_TO_EDIT_CODE SYSRES_CONST_EDOC_CARD_TYPE_REQUISITE_CODE SYSRES_CONST_EDOC_CARD_TYPES_LINK_REQUISITE_CODE SYSRES_CONST_EDOC_CERTIFICATE_AND_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_CERTIFICATE_ENCODE_CODE SYSRES_CONST_EDOC_DATE_REQUISITE_CODE SYSRES_CONST_EDOC_KIND_REFERENCE_CODE SYSRES_CONST_EDOC_KINDS_BY_TEMPLATE_ACTION_CODE SYSRES_CONST_EDOC_MANAGE_ACCESS_CODE SYSRES_CONST_EDOC_NONE_ENCODE_CODE SYSRES_CONST_EDOC_NUMBER_REQUISITE_CODE SYSRES_CONST_EDOC_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_READONLY_ACCESS_CODE SYSRES_CONST_EDOC_SHELL_LIFE_TYPE_VIEW_VALUE SYSRES_CONST_EDOC_SIZE_RESTRICTION_PRIORITY_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_CHECK_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_COMPUTER_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_DATABASE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_EDIT_IN_STORAGE_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_LOCAL_PATH_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_SHARED_SOURCE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_EDOC_TYPES_REFERENCE_CODE SYSRES_CONST_EDOC_VERSION_ACTIVE_STAGE_CODE SYSRES_CONST_EDOC_VERSION_DESIGN_STAGE_CODE SYSRES_CONST_EDOC_VERSION_OBSOLETE_STAGE_CODE SYSRES_CONST_EDOC_WRITE_ACCES_CODE SYSRES_CONST_EDOCUMENT_CARD_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_END_DATE_REQUISITE_CODE SYSRES_CONST_ENUMERATION_TYPE_REQUISITE_CODE SYSRES_CONST_EXECUTE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_EXECUTIVE_FILE_STORAGE_TYPE SYSRES_CONST_EXIST_CONST SYSRES_CONST_EXIST_VALUE SYSRES_CONST_EXPORT_LOCK_TYPE_ASK SYSRES_CONST_EXPORT_LOCK_TYPE_WITH_LOCK SYSRES_CONST_EXPORT_LOCK_TYPE_WITHOUT_LOCK SYSRES_CONST_EXPORT_VERSION_TYPE_ASK SYSRES_CONST_EXPORT_VERSION_TYPE_LAST SYSRES_CONST_EXPORT_VERSION_TYPE_LAST_ACTIVE SYSRES_CONST_EXTENSION_REQUISITE_CODE SYSRES_CONST_FILTER_NAME_REQUISITE_CODE SYSRES_CONST_FILTER_REQUISITE_CODE SYSRES_CONST_FILTER_TYPE_COMMON_CODE SYSRES_CONST_FILTER_TYPE_COMMON_NAME SYSRES_CONST_FILTER_TYPE_USER_CODE SYSRES_CONST_FILTER_TYPE_USER_NAME SYSRES_CONST_FILTER_VALUE_REQUISITE_NAME SYSRES_CONST_FLOAT_NUMBER_FORMAT_CHAR SYSRES_CONST_FLOAT_REQUISITE_TYPE SYSRES_CONST_FOLDER_AUTHOR_VALUE SYSRES_CONST_FOLDER_KIND_ANY_OBJECTS SYSRES_CONST_FOLDER_KIND_COMPONENTS SYSRES_CONST_FOLDER_KIND_EDOCS SYSRES_CONST_FOLDER_KIND_JOBS SYSRES_CONST_FOLDER_KIND_TASKS SYSRES_CONST_FOLDER_TYPE_COMMON SYSRES_CONST_FOLDER_TYPE_COMPONENT SYSRES_CONST_FOLDER_TYPE_FAVORITES SYSRES_CONST_FOLDER_TYPE_INBOX SYSRES_CONST_FOLDER_TYPE_OUTBOX SYSRES_CONST_FOLDER_TYPE_QUICK_LAUNCH SYSRES_CONST_FOLDER_TYPE_SEARCH SYSRES_CONST_FOLDER_TYPE_SHORTCUTS SYSRES_CONST_FOLDER_TYPE_USER SYSRES_CONST_FROM_DICTIONARY_ENUM_METHOD_FLAG SYSRES_CONST_FULL_SUBSTITUTE_TYPE SYSRES_CONST_FULL_SUBSTITUTE_TYPE_CODE SYSRES_CONST_FUNCTION_CANCEL_RESULT SYSRES_CONST_FUNCTION_CATEGORY_SYSTEM SYSRES_CONST_FUNCTION_CATEGORY_USER SYSRES_CONST_FUNCTION_FAILURE_RESULT SYSRES_CONST_FUNCTION_SAVE_RESULT SYSRES_CONST_GENERATED_REQUISITE SYSRES_CONST_GREEN_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_GROUP_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_NAME SYSRES_CONST_GROUP_CATEGORY_SERVICE_CODE SYSRES_CONST_GROUP_CATEGORY_SERVICE_NAME SYSRES_CONST_GROUP_COMMON_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_FULL_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_CODES_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_SERVICE_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_USER_REQUISITE_CODE SYSRES_CONST_GROUPS_REFERENCE_CODE SYSRES_CONST_GROUPS_REQUISITE_CODE SYSRES_CONST_HIDDEN_MODE_NAME SYSRES_CONST_HIGH_LVL_REQUISITE_CODE SYSRES_CONST_HISTORY_ACTION_CREATE_CODE SYSRES_CONST_HISTORY_ACTION_DELETE_CODE SYSRES_CONST_HISTORY_ACTION_EDIT_CODE SYSRES_CONST_HOUR_CHAR SYSRES_CONST_ID_REQUISITE_CODE SYSRES_CONST_IDSPS_REQUISITE_CODE SYSRES_CONST_IMAGE_MODE_COLOR SYSRES_CONST_IMAGE_MODE_GREYSCALE SYSRES_CONST_IMAGE_MODE_MONOCHROME SYSRES_CONST_IMPORTANCE_HIGH SYSRES_CONST_IMPORTANCE_LOW SYSRES_CONST_IMPORTANCE_NORMAL SYSRES_CONST_IN_DESIGN_VERSION_STATE_PICK_VALUE SYSRES_CONST_INCOMING_WORK_RULE_TYPE_CODE SYSRES_CONST_INT_REQUISITE SYSRES_CONST_INT_REQUISITE_TYPE SYSRES_CONST_INTEGER_NUMBER_FORMAT_CHAR SYSRES_CONST_INTEGER_TYPE_CHAR SYSRES_CONST_IS_GENERATED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_PUBLIC_ROLE_REQUISITE_CODE SYSRES_CONST_IS_REMOTE_USER_NEGATIVE_VALUE SYSRES_CONST_IS_REMOTE_USER_POSITIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_STORED_VALUE SYSRES_CONST_ITALIC_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_JOB_BLOCK_DESCRIPTION SYSRES_CONST_JOB_KIND_CONTROL_JOB SYSRES_CONST_JOB_KIND_JOB SYSRES_CONST_JOB_KIND_NOTICE SYSRES_CONST_JOB_STATE_ABORTED SYSRES_CONST_JOB_STATE_COMPLETE SYSRES_CONST_JOB_STATE_WORKING SYSRES_CONST_KIND_REQUISITE_CODE SYSRES_CONST_KIND_REQUISITE_NAME SYSRES_CONST_KINDS_CREATE_SHADOW_COPIES_REQUISITE_CODE SYSRES_CONST_KINDS_DEFAULT_EDOC_LIFE_STAGE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALL_TEPLATES_ALLOWED_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_LIFE_CYCLE_STAGE_CHANGING_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_MULTIPLE_ACTIVE_VERSIONS_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_SHARE_ACCES_RIGHTS_BY_DEFAULT_CODE SYSRES_CONST_KINDS_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_TYPE_REQUISITE_CODE SYSRES_CONST_KINDS_SIGNERS_REQUISITES_CODE SYSRES_CONST_KOD_INPUT_TYPE SYSRES_CONST_LAST_UPDATE_DATE_REQUISITE_CODE SYSRES_CONST_LIFE_CYCLE_START_STAGE_REQUISITE_CODE SYSRES_CONST_LILAC_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_LINK_OBJECT_KIND_COMPONENT SYSRES_CONST_LINK_OBJECT_KIND_DOCUMENT SYSRES_CONST_LINK_OBJECT_KIND_EDOC SYSRES_CONST_LINK_OBJECT_KIND_FOLDER SYSRES_CONST_LINK_OBJECT_KIND_JOB SYSRES_CONST_LINK_OBJECT_KIND_REFERENCE SYSRES_CONST_LINK_OBJECT_KIND_TASK SYSRES_CONST_LINK_REF_TYPE_REQUISITE_CODE SYSRES_CONST_LIST_REFERENCE_MODE_NAME SYSRES_CONST_LOCALIZATION_DICTIONARY_MAIN_VIEW_CODE SYSRES_CONST_MAIN_VIEW_CODE SYSRES_CONST_MANUAL_ENUM_METHOD_FLAG SYSRES_CONST_MASTER_COMP_TYPE_REQUISITE_CODE SYSRES_CONST_MASTER_TABLE_REC_ID_REQUISITE_CODE SYSRES_CONST_MAXIMIZED_MODE_NAME SYSRES_CONST_ME_VALUE SYSRES_CONST_MESSAGE_ATTENTION_CAPTION SYSRES_CONST_MESSAGE_CONFIRMATION_CAPTION SYSRES_CONST_MESSAGE_ERROR_CAPTION SYSRES_CONST_MESSAGE_INFORMATION_CAPTION SYSRES_CONST_MINIMIZED_MODE_NAME SYSRES_CONST_MINUTE_CHAR SYSRES_CONST_MODULE_REQUISITE_CODE SYSRES_CONST_MONITORING_BLOCK_DESCRIPTION SYSRES_CONST_MONTH_FORMAT_VALUE SYSRES_CONST_NAME_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_NAME_REQUISITE_CODE SYSRES_CONST_NAME_SINGULAR_REQUISITE_CODE SYSRES_CONST_NAMEAN_INPUT_TYPE SYSRES_CONST_NEGATIVE_PICK_VALUE SYSRES_CONST_NEGATIVE_VALUE SYSRES_CONST_NO SYSRES_CONST_NO_PICK_VALUE SYSRES_CONST_NO_SIGNATURE_REQUISITE_CODE SYSRES_CONST_NO_VALUE SYSRES_CONST_NONE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_NORMAL_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NORMAL_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_NORMAL_MODE_NAME SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_NOTE_REQUISITE_CODE SYSRES_CONST_NOTICE_BLOCK_DESCRIPTION SYSRES_CONST_NUM_REQUISITE SYSRES_CONST_NUM_STR_REQUISITE_CODE SYSRES_CONST_NUMERATION_AUTO_NOT_STRONG SYSRES_CONST_NUMERATION_AUTO_STRONG SYSRES_CONST_NUMERATION_FROM_DICTONARY SYSRES_CONST_NUMERATION_MANUAL SYSRES_CONST_NUMERIC_TYPE_CHAR SYSRES_CONST_NUMREQ_REQUISITE_CODE SYSRES_CONST_OBSOLETE_VERSION_STATE_PICK_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_OPTIONAL_FORM_COMP_REQCODE_PREFIX SYSRES_CONST_ORANGE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_ORIGINALREF_REQUISITE_CODE SYSRES_CONST_OURFIRM_REF_CODE SYSRES_CONST_OURFIRM_REQUISITE_CODE SYSRES_CONST_OURFIRM_VAR SYSRES_CONST_OUTGOING_WORK_RULE_TYPE_CODE SYSRES_CONST_PICK_NEGATIVE_RESULT SYSRES_CONST_PICK_POSITIVE_RESULT SYSRES_CONST_PICK_REQUISITE SYSRES_CONST_PICK_REQUISITE_TYPE SYSRES_CONST_PICK_TYPE_CHAR SYSRES_CONST_PLAN_STATUS_REQUISITE_CODE SYSRES_CONST_PLATFORM_VERSION_COMMENT SYSRES_CONST_PLUGINS_SETTINGS_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_POSITIVE_PICK_VALUE SYSRES_CONST_POWER_TO_CREATE_ACTION_CODE SYSRES_CONST_POWER_TO_SIGN_ACTION_CODE SYSRES_CONST_PRIORITY_REQUISITE_CODE SYSRES_CONST_QUALIFIED_TASK_TYPE SYSRES_CONST_QUALIFIED_TASK_TYPE_CODE SYSRES_CONST_RECSTAT_REQUISITE_CODE SYSRES_CONST_RED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_REF_ID_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_REF_REQUISITE SYSRES_CONST_REF_REQUISITE_TYPE SYSRES_CONST_REF_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_REFERENCE_RECORD_HISTORY_CREATE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_DELETE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_MODIFY_ACTION_CODE SYSRES_CONST_REFERENCE_TYPE_CHAR SYSRES_CONST_REFERENCE_TYPE_REQUISITE_NAME SYSRES_CONST_REFERENCES_ADD_PARAMS_REQUISITE_CODE SYSRES_CONST_REFERENCES_DISPLAY_REQUISITE_REQUISITE_CODE SYSRES_CONST_REMOTE_SERVER_STATUS_WORKING SYSRES_CONST_REMOTE_SERVER_TYPE_MAIN SYSRES_CONST_REMOTE_SERVER_TYPE_SECONDARY SYSRES_CONST_REMOTE_USER_FLAG_VALUE_CODE SYSRES_CONST_REPORT_APP_EDITOR_INTERNAL SYSRES_CONST_REPORT_BASE_REPORT_ID_REQUISITE_CODE SYSRES_CONST_REPORT_BASE_REPORT_REQUISITE_CODE SYSRES_CONST_REPORT_SCRIPT_REQUISITE_CODE SYSRES_CONST_REPORT_TEMPLATE_REQUISITE_CODE SYSRES_CONST_REPORT_VIEWER_CODE_REQUISITE_CODE SYSRES_CONST_REQ_ALLOW_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_RECORD_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_SERVER_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_MODE_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_EDIT_CODE SYSRES_CONST_REQ_MODE_HIDDEN_CODE SYSRES_CONST_REQ_MODE_NOT_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_VIEW_CODE SYSRES_CONST_REQ_NUMBER_REQUISITE_CODE SYSRES_CONST_REQ_SECTION_VALUE SYSRES_CONST_REQ_TYPE_VALUE SYSRES_CONST_REQUISITE_FORMAT_BY_UNIT SYSRES_CONST_REQUISITE_FORMAT_DATE_FULL SYSRES_CONST_REQUISITE_FORMAT_DATE_TIME SYSRES_CONST_REQUISITE_FORMAT_LEFT SYSRES_CONST_REQUISITE_FORMAT_RIGHT SYSRES_CONST_REQUISITE_FORMAT_WITHOUT_UNIT SYSRES_CONST_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_REQUISITE_SECTION_ACTIONS SYSRES_CONST_REQUISITE_SECTION_BUTTON SYSRES_CONST_REQUISITE_SECTION_BUTTONS SYSRES_CONST_REQUISITE_SECTION_CARD SYSRES_CONST_REQUISITE_SECTION_TABLE SYSRES_CONST_REQUISITE_SECTION_TABLE10 SYSRES_CONST_REQUISITE_SECTION_TABLE11 SYSRES_CONST_REQUISITE_SECTION_TABLE12 SYSRES_CONST_REQUISITE_SECTION_TABLE13 SYSRES_CONST_REQUISITE_SECTION_TABLE14 SYSRES_CONST_REQUISITE_SECTION_TABLE15 SYSRES_CONST_REQUISITE_SECTION_TABLE16 SYSRES_CONST_REQUISITE_SECTION_TABLE17 SYSRES_CONST_REQUISITE_SECTION_TABLE18 SYSRES_CONST_REQUISITE_SECTION_TABLE19 SYSRES_CONST_REQUISITE_SECTION_TABLE2 SYSRES_CONST_REQUISITE_SECTION_TABLE20 SYSRES_CONST_REQUISITE_SECTION_TABLE21 SYSRES_CONST_REQUISITE_SECTION_TABLE22 SYSRES_CONST_REQUISITE_SECTION_TABLE23 SYSRES_CONST_REQUISITE_SECTION_TABLE24 SYSRES_CONST_REQUISITE_SECTION_TABLE3 SYSRES_CONST_REQUISITE_SECTION_TABLE4 SYSRES_CONST_REQUISITE_SECTION_TABLE5 SYSRES_CONST_REQUISITE_SECTION_TABLE6 SYSRES_CONST_REQUISITE_SECTION_TABLE7 SYSRES_CONST_REQUISITE_SECTION_TABLE8 SYSRES_CONST_REQUISITE_SECTION_TABLE9 SYSRES_CONST_REQUISITES_PSEUDOREFERENCE_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_RIGHT_ALIGNMENT_CODE SYSRES_CONST_ROLES_REFERENCE_CODE SYSRES_CONST_ROUTE_STEP_AFTER_RUS SYSRES_CONST_ROUTE_STEP_AND_CONDITION_RUS SYSRES_CONST_ROUTE_STEP_OR_CONDITION_RUS SYSRES_CONST_ROUTE_TYPE_COMPLEX SYSRES_CONST_ROUTE_TYPE_PARALLEL SYSRES_CONST_ROUTE_TYPE_SERIAL SYSRES_CONST_SBDATASETDESC_NEGATIVE_VALUE SYSRES_CONST_SBDATASETDESC_POSITIVE_VALUE SYSRES_CONST_SBVIEWSDESC_POSITIVE_VALUE SYSRES_CONST_SCRIPT_BLOCK_DESCRIPTION SYSRES_CONST_SEARCH_BY_TEXT_REQUISITE_CODE SYSRES_CONST_SEARCHES_COMPONENT_CONTENT SYSRES_CONST_SEARCHES_CRITERIA_ACTION_NAME SYSRES_CONST_SEARCHES_EDOC_CONTENT SYSRES_CONST_SEARCHES_FOLDER_CONTENT SYSRES_CONST_SEARCHES_JOB_CONTENT SYSRES_CONST_SEARCHES_REFERENCE_CODE SYSRES_CONST_SEARCHES_TASK_CONTENT SYSRES_CONST_SECOND_CHAR SYSRES_CONST_SECTION_REQUISITE_ACTIONS_VALUE SYSRES_CONST_SECTION_REQUISITE_CARD_VALUE SYSRES_CONST_SECTION_REQUISITE_CODE SYSRES_CONST_SECTION_REQUISITE_DETAIL_1_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_2_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_3_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_4_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_5_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_6_VALUE SYSRES_CONST_SELECT_REFERENCE_MODE_NAME SYSRES_CONST_SELECT_TYPE_SELECTABLE SYSRES_CONST_SELECT_TYPE_SELECTABLE_ONLY_CHILD SYSRES_CONST_SELECT_TYPE_SELECTABLE_WITH_CHILD SYSRES_CONST_SELECT_TYPE_UNSLECTABLE SYSRES_CONST_SERVER_TYPE_MAIN SYSRES_CONST_SERVICE_USER_CATEGORY_FIELD_VALUE SYSRES_CONST_SETTINGS_USER_REQUISITE_CODE SYSRES_CONST_SIGNATURE_AND_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SIGNATURE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SINGULAR_TITLE_REQUISITE_CODE SYSRES_CONST_SQL_SERVER_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_SQL_SERVER_ENCODE_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_STANDART_ROUTES_GROUPS_REFERENCE_CODE SYSRES_CONST_STATE_REQ_NAME SYSRES_CONST_STATE_REQUISITE_ACTIVE_VALUE SYSRES_CONST_STATE_REQUISITE_CLOSED_VALUE SYSRES_CONST_STATE_REQUISITE_CODE SYSRES_CONST_STATIC_ROLE_TYPE_CODE SYSRES_CONST_STATUS_PLAN_DEFAULT_VALUE SYSRES_CONST_STATUS_VALUE_AUTOCLEANING SYSRES_CONST_STATUS_VALUE_BLUE_SQUARE SYSRES_CONST_STATUS_VALUE_COMPLETE SYSRES_CONST_STATUS_VALUE_GREEN_SQUARE SYSRES_CONST_STATUS_VALUE_ORANGE_SQUARE SYSRES_CONST_STATUS_VALUE_PURPLE_SQUARE SYSRES_CONST_STATUS_VALUE_RED_SQUARE SYSRES_CONST_STATUS_VALUE_SUSPEND SYSRES_CONST_STATUS_VALUE_YELLOW_SQUARE SYSRES_CONST_STDROUTE_SHOW_TO_USERS_REQUISITE_CODE SYSRES_CONST_STORAGE_TYPE_FILE SYSRES_CONST_STORAGE_TYPE_SQL_SERVER SYSRES_CONST_STR_REQUISITE SYSRES_CONST_STRIKEOUT_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_STRING_FORMAT_LEFT_ALIGN_CHAR SYSRES_CONST_STRING_FORMAT_RIGHT_ALIGN_CHAR SYSRES_CONST_STRING_REQUISITE_CODE SYSRES_CONST_STRING_REQUISITE_TYPE SYSRES_CONST_STRING_TYPE_CHAR SYSRES_CONST_SUBSTITUTES_PSEUDOREFERENCE_CODE SYSRES_CONST_SUBTASK_BLOCK_DESCRIPTION SYSRES_CONST_SYSTEM_SETTING_CURRENT_USER_PARAM_VALUE SYSRES_CONST_SYSTEM_SETTING_EMPTY_VALUE_PARAM_VALUE SYSRES_CONST_SYSTEM_VERSION_COMMENT SYSRES_CONST_TASK_ACCESS_TYPE_ALL SYSRES_CONST_TASK_ACCESS_TYPE_ALL_MEMBERS SYSRES_CONST_TASK_ACCESS_TYPE_MANUAL SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION_AND_PASSWORD SYSRES_CONST_TASK_ENCODE_TYPE_NONE SYSRES_CONST_TASK_ENCODE_TYPE_PASSWORD SYSRES_CONST_TASK_ROUTE_ALL_CONDITION SYSRES_CONST_TASK_ROUTE_AND_CONDITION SYSRES_CONST_TASK_ROUTE_OR_CONDITION SYSRES_CONST_TASK_STATE_ABORTED SYSRES_CONST_TASK_STATE_COMPLETE SYSRES_CONST_TASK_STATE_CONTINUED SYSRES_CONST_TASK_STATE_CONTROL SYSRES_CONST_TASK_STATE_INIT SYSRES_CONST_TASK_STATE_WORKING SYSRES_CONST_TASK_TITLE SYSRES_CONST_TASK_TYPES_GROUPS_REFERENCE_CODE SYSRES_CONST_TASK_TYPES_REFERENCE_CODE SYSRES_CONST_TEMPLATES_REFERENCE_CODE SYSRES_CONST_TEST_DATE_REQUISITE_NAME SYSRES_CONST_TEST_DEV_DATABASE_NAME SYSRES_CONST_TEST_DEV_SYSTEM_CODE SYSRES_CONST_TEST_EDMS_DATABASE_NAME SYSRES_CONST_TEST_EDMS_MAIN_CODE SYSRES_CONST_TEST_EDMS_MAIN_DB_NAME SYSRES_CONST_TEST_EDMS_SECOND_CODE SYSRES_CONST_TEST_EDMS_SECOND_DB_NAME SYSRES_CONST_TEST_EDMS_SYSTEM_CODE SYSRES_CONST_TEST_NUMERIC_REQUISITE_NAME SYSRES_CONST_TEXT_REQUISITE SYSRES_CONST_TEXT_REQUISITE_CODE SYSRES_CONST_TEXT_REQUISITE_TYPE SYSRES_CONST_TEXT_TYPE_CHAR SYSRES_CONST_TYPE_CODE_REQUISITE_CODE SYSRES_CONST_TYPE_REQUISITE_CODE SYSRES_CONST_UNDEFINED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_UNITS_SECTION_ID_REQUISITE_CODE SYSRES_CONST_UNITS_SECTION_REQUISITE_CODE SYSRES_CONST_UNOPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_NAME SYSRES_CONST_USE_ACCESS_TYPE_CODE SYSRES_CONST_USE_ACCESS_TYPE_NAME SYSRES_CONST_USER_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_USER_ADDITIONAL_INFORMATION_REQUISITE_CODE SYSRES_CONST_USER_AND_GROUP_ID_FROM_PSEUDOREFERENCE_REQUISITE_CODE SYSRES_CONST_USER_CATEGORY_NORMAL SYSRES_CONST_USER_CERTIFICATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_STATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_SUBJECT_NAME_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_THUMBPRINT_REQUISITE_CODE SYSRES_CONST_USER_COMMON_CATEGORY SYSRES_CONST_USER_COMMON_CATEGORY_CODE SYSRES_CONST_USER_FULL_NAME_REQUISITE_CODE SYSRES_CONST_USER_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_USER_LOGIN_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_SYSTEM_REQUISITE_CODE SYSRES_CONST_USER_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_USER_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_USER_SERVICE_CATEGORY SYSRES_CONST_USER_SERVICE_CATEGORY_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_NAME SYSRES_CONST_USER_STATUS_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_DEVELOPER_NAME SYSRES_CONST_USER_STATUS_DISABLED_CODE SYSRES_CONST_USER_STATUS_DISABLED_NAME SYSRES_CONST_USER_STATUS_SYSTEM_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_USER_CODE SYSRES_CONST_USER_STATUS_USER_NAME SYSRES_CONST_USER_STATUS_USER_NAME_DEPRECATED SYSRES_CONST_USER_TYPE_FIELD_VALUE_USER SYSRES_CONST_USER_TYPE_REQUISITE_CODE SYSRES_CONST_USERS_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USERS_IS_MAIN_SERVER_REQUISITE_CODE SYSRES_CONST_USERS_REFERENCE_CODE SYSRES_CONST_USERS_REGISTRATION_CERTIFICATES_ACTION_NAME SYSRES_CONST_USERS_REQUISITE_CODE SYSRES_CONST_USERS_SYSTEM_REQUISITE_CODE SYSRES_CONST_USERS_USER_ACCESS_RIGHTS_TYPR_REQUISITE_CODE SYSRES_CONST_USERS_USER_AUTHENTICATION_REQUISITE_CODE SYSRES_CONST_USERS_USER_COMPONENT_REQUISITE_CODE SYSRES_CONST_USERS_USER_GROUP_REQUISITE_CODE SYSRES_CONST_USERS_VIEW_CERTIFICATES_ACTION_NAME SYSRES_CONST_VIEW_DEFAULT_CODE SYSRES_CONST_VIEW_DEFAULT_NAME SYSRES_CONST_VIEWER_REQUISITE_CODE SYSRES_CONST_WAITING_BLOCK_DESCRIPTION SYSRES_CONST_WIZARD_FORM_LABEL_TEST_STRING SYSRES_CONST_WIZARD_QUERY_PARAM_HEIGHT_ETALON_STRING SYSRES_CONST_WIZARD_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_WORK_RULES_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_WORK_TIME_CALENDAR_REFERENCE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORK_WORKFLOW_SOFT_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORKFLOW_ROUTE_TYPR_HARD SYSRES_CONST_WORKFLOW_ROUTE_TYPR_SOFT SYSRES_CONST_XML_ENCODING SYSRES_CONST_XREC_STAT_REQUISITE_CODE SYSRES_CONST_XRECID_FIELD_NAME SYSRES_CONST_YES SYSRES_CONST_YES_NO_2_REQUISITE_CODE SYSRES_CONST_YES_NO_REQUISITE_CODE SYSRES_CONST_YES_NO_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_YES_PICK_VALUE SYSRES_CONST_YES_VALUE CR FALSE nil NO_VALUE NULL TAB TRUE YES_VALUE ADMINISTRATORS_GROUP_NAME CUSTOMIZERS_GROUP_NAME DEVELOPERS_GROUP_NAME SERVICE_USERS_GROUP_NAME DECISION_BLOCK_FIRST_OPERAND_PROPERTY DECISION_BLOCK_NAME_PROPERTY DECISION_BLOCK_OPERATION_PROPERTY DECISION_BLOCK_RESULT_TYPE_PROPERTY DECISION_BLOCK_SECOND_OPERAND_PROPERTY ANY_FILE_EXTENTION COMPRESSED_DOCUMENT_EXTENSION EXTENDED_DOCUMENT_EXTENSION SHORT_COMPRESSED_DOCUMENT_EXTENSION SHORT_EXTENDED_DOCUMENT_EXTENSION JOB_BLOCK_ABORT_DEADLINE_PROPERTY JOB_BLOCK_AFTER_FINISH_EVENT JOB_BLOCK_AFTER_QUERY_PARAMETERS_EVENT JOB_BLOCK_ATTACHMENT_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY JOB_BLOCK_BEFORE_QUERY_PARAMETERS_EVENT JOB_BLOCK_BEFORE_START_EVENT JOB_BLOCK_CREATED_JOBS_PROPERTY JOB_BLOCK_DEADLINE_PROPERTY JOB_BLOCK_EXECUTION_RESULTS_PROPERTY JOB_BLOCK_IS_PARALLEL_PROPERTY JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY JOB_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY JOB_BLOCK_JOB_TEXT_PROPERTY JOB_BLOCK_NAME_PROPERTY JOB_BLOCK_NEED_SIGN_ON_PERFORM_PROPERTY JOB_BLOCK_PERFORMER_PROPERTY JOB_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY JOB_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY JOB_BLOCK_SUBJECT_PROPERTY ENGLISH_LANGUAGE_CODE RUSSIAN_LANGUAGE_CODE smHidden smMaximized smMinimized smNormal wmNo wmYes COMPONENT_TOKEN_LINK_KIND DOCUMENT_LINK_KIND EDOCUMENT_LINK_KIND FOLDER_LINK_KIND JOB_LINK_KIND REFERENCE_LINK_KIND TASK_LINK_KIND COMPONENT_TOKEN_LOCK_TYPE EDOCUMENT_VERSION_LOCK_TYPE MONITOR_BLOCK_AFTER_FINISH_EVENT MONITOR_BLOCK_BEFORE_START_EVENT MONITOR_BLOCK_DEADLINE_PROPERTY MONITOR_BLOCK_INTERVAL_PROPERTY MONITOR_BLOCK_INTERVAL_TYPE_PROPERTY MONITOR_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY MONITOR_BLOCK_NAME_PROPERTY MONITOR_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY MONITOR_BLOCK_SEARCH_SCRIPT_PROPERTY NOTICE_BLOCK_AFTER_FINISH_EVENT NOTICE_BLOCK_ATTACHMENT_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY NOTICE_BLOCK_BEFORE_START_EVENT NOTICE_BLOCK_CREATED_NOTICES_PROPERTY NOTICE_BLOCK_DEADLINE_PROPERTY NOTICE_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY NOTICE_BLOCK_NAME_PROPERTY NOTICE_BLOCK_NOTICE_TEXT_PROPERTY NOTICE_BLOCK_PERFORMER_PROPERTY NOTICE_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY NOTICE_BLOCK_SUBJECT_PROPERTY dseAfterCancel dseAfterClose dseAfterDelete dseAfterDeleteOutOfTransaction dseAfterInsert dseAfterOpen dseAfterScroll dseAfterUpdate dseAfterUpdateOutOfTransaction dseBeforeCancel dseBeforeClose dseBeforeDelete dseBeforeDetailUpdate dseBeforeInsert dseBeforeOpen dseBeforeUpdate dseOnAnyRequisiteChange dseOnCloseRecord dseOnDeleteError dseOnOpenRecord dseOnPrepareUpdate dseOnUpdateError dseOnUpdateRatifiedRecord dseOnValidDelete dseOnValidUpdate reOnChange reOnChangeValues SELECTION_BEGIN_ROUTE_EVENT SELECTION_END_ROUTE_EVENT CURRENT_PERIOD_IS_REQUIRED PREVIOUS_CARD_TYPE_NAME SHOW_RECORD_PROPERTIES_FORM ACCESS_RIGHTS_SETTING_DIALOG_CODE ADMINISTRATOR_USER_CODE ANALYTIC_REPORT_TYPE asrtHideLocal asrtHideRemote CALCULATED_ROLE_TYPE_CODE COMPONENTS_REFERENCE_DEVELOPER_VIEW_CODE DCTS_TEST_PROTOCOLS_FOLDER_PATH E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED_BY_USER E_EDOC_VERSION_ALREDY_SIGNED E_EDOC_VERSION_ALREDY_SIGNED_BY_USER EDOC_TYPES_CODE_REQUISITE_FIELD_NAME EDOCUMENTS_ALIAS_NAME FILES_FOLDER_PATH FILTER_OPERANDS_DELIMITER FILTER_OPERATIONS_DELIMITER FORMCARD_NAME FORMLIST_NAME GET_EXTENDED_DOCUMENT_EXTENSION_CREATION_MODE GET_EXTENDED_DOCUMENT_EXTENSION_IMPORT_MODE INTEGRATED_REPORT_TYPE IS_BUILDER_APPLICATION_ROLE IS_BUILDER_APPLICATION_ROLE2 IS_BUILDER_USERS ISBSYSDEV LOG_FOLDER_PATH mbCancel mbNo mbNoToAll mbOK mbYes mbYesToAll MEMORY_DATASET_DESRIPTIONS_FILENAME mrNo mrNoToAll mrYes mrYesToAll MULTIPLE_SELECT_DIALOG_CODE NONOPERATING_RECORD_FLAG_FEMININE NONOPERATING_RECORD_FLAG_MASCULINE OPERATING_RECORD_FLAG_FEMININE OPERATING_RECORD_FLAG_MASCULINE PROFILING_SETTINGS_COMMON_SETTINGS_CODE_VALUE PROGRAM_INITIATED_LOOKUP_ACTION ratDelete ratEdit ratInsert REPORT_TYPE REQUIRED_PICK_VALUES_VARIABLE rmCard rmList SBRTE_PROGID_DEV SBRTE_PROGID_RELEASE STATIC_ROLE_TYPE_CODE SUPPRESS_EMPTY_TEMPLATE_CREATION SYSTEM_USER_CODE UPDATE_DIALOG_DATASET USED_IN_OBJECT_HINT_PARAM USER_INITIATED_LOOKUP_ACTION USER_NAME_FORMAT USER_SELECTION_RESTRICTIONS WORKFLOW_TEST_PROTOCOLS_FOLDER_PATH ELS_SUBTYPE_CONTROL_NAME ELS_FOLDER_KIND_CONTROL_NAME REPEAT_PROCESS_CURRENT_OBJECT_EXCEPTION_NAME PRIVILEGE_COMPONENT_FULL_ACCESS PRIVILEGE_DEVELOPMENT_EXPORT PRIVILEGE_DEVELOPMENT_IMPORT PRIVILEGE_DOCUMENT_DELETE PRIVILEGE_ESD PRIVILEGE_FOLDER_DELETE PRIVILEGE_MANAGE_ACCESS_RIGHTS PRIVILEGE_MANAGE_REPLICATION PRIVILEGE_MANAGE_SESSION_SERVER PRIVILEGE_OBJECT_FULL_ACCESS PRIVILEGE_OBJECT_VIEW PRIVILEGE_RESERVE_LICENSE PRIVILEGE_SYSTEM_CUSTOMIZE PRIVILEGE_SYSTEM_DEVELOP PRIVILEGE_SYSTEM_INSTALL PRIVILEGE_TASK_DELETE PRIVILEGE_USER_PLUGIN_SETTINGS_CUSTOMIZE PRIVILEGES_PSEUDOREFERENCE_CODE ACCESS_TYPES_PSEUDOREFERENCE_CODE ALL_AVAILABLE_COMPONENTS_PSEUDOREFERENCE_CODE ALL_AVAILABLE_PRIVILEGES_PSEUDOREFERENCE_CODE ALL_REPLICATE_COMPONENTS_PSEUDOREFERENCE_CODE AVAILABLE_DEVELOPERS_COMPONENTS_PSEUDOREFERENCE_CODE COMPONENTS_PSEUDOREFERENCE_CODE FILTRATER_SETTINGS_CONFLICTS_PSEUDOREFERENCE_CODE GROUPS_PSEUDOREFERENCE_CODE RECEIVE_PROTOCOL_PSEUDOREFERENCE_CODE REFERENCE_REQUISITE_PSEUDOREFERENCE_CODE REFERENCE_REQUISITES_PSEUDOREFERENCE_CODE REFTYPES_PSEUDOREFERENCE_CODE REPLICATION_SEANCES_DIARY_PSEUDOREFERENCE_CODE SEND_PROTOCOL_PSEUDOREFERENCE_CODE SUBSTITUTES_PSEUDOREFERENCE_CODE SYSTEM_SETTINGS_PSEUDOREFERENCE_CODE UNITS_PSEUDOREFERENCE_CODE USERS_PSEUDOREFERENCE_CODE VIEWERS_PSEUDOREFERENCE_CODE CERTIFICATE_TYPE_ENCRYPT CERTIFICATE_TYPE_SIGN CERTIFICATE_TYPE_SIGN_AND_ENCRYPT STORAGE_TYPE_FILE STORAGE_TYPE_NAS_CIFS STORAGE_TYPE_SAPERION STORAGE_TYPE_SQL_SERVER COMPTYPE2_REQUISITE_DOCUMENTS_VALUE COMPTYPE2_REQUISITE_TASKS_VALUE COMPTYPE2_REQUISITE_FOLDERS_VALUE COMPTYPE2_REQUISITE_REFERENCES_VALUE SYSREQ_CODE SYSREQ_COMPTYPE2 SYSREQ_CONST_AVAILABLE_FOR_WEB SYSREQ_CONST_COMMON_CODE SYSREQ_CONST_COMMON_VALUE SYSREQ_CONST_FIRM_CODE SYSREQ_CONST_FIRM_STATUS SYSREQ_CONST_FIRM_VALUE SYSREQ_CONST_SERVER_STATUS SYSREQ_CONTENTS SYSREQ_DATE_OPEN SYSREQ_DATE_CLOSE SYSREQ_DESCRIPTION SYSREQ_DESCRIPTION_LOCALIZE_ID SYSREQ_DOUBLE SYSREQ_EDOC_ACCESS_TYPE SYSREQ_EDOC_AUTHOR SYSREQ_EDOC_CREATED SYSREQ_EDOC_DELEGATE_RIGHTS_REQUISITE_CODE SYSREQ_EDOC_EDITOR SYSREQ_EDOC_ENCODE_TYPE SYSREQ_EDOC_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_EXPORT_DATE SYSREQ_EDOC_EXPORTER SYSREQ_EDOC_KIND SYSREQ_EDOC_LIFE_STAGE_NAME SYSREQ_EDOC_LOCKED_FOR_SERVER_CODE SYSREQ_EDOC_MODIFIED SYSREQ_EDOC_NAME SYSREQ_EDOC_NOTE SYSREQ_EDOC_QUALIFIED_ID SYSREQ_EDOC_SESSION_KEY SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_SIGNATURE_TYPE SYSREQ_EDOC_SIGNED SYSREQ_EDOC_STORAGE SYSREQ_EDOC_STORAGES_ARCHIVE_STORAGE SYSREQ_EDOC_STORAGES_CHECK_RIGHTS SYSREQ_EDOC_STORAGES_COMPUTER_NAME SYSREQ_EDOC_STORAGES_EDIT_IN_STORAGE SYSREQ_EDOC_STORAGES_EXECUTIVE_STORAGE SYSREQ_EDOC_STORAGES_FUNCTION SYSREQ_EDOC_STORAGES_INITIALIZED SYSREQ_EDOC_STORAGES_LOCAL_PATH SYSREQ_EDOC_STORAGES_SAPERION_DATABASE_NAME SYSREQ_EDOC_STORAGES_SEARCH_BY_TEXT SYSREQ_EDOC_STORAGES_SERVER_NAME SYSREQ_EDOC_STORAGES_SHARED_SOURCE_NAME SYSREQ_EDOC_STORAGES_TYPE SYSREQ_EDOC_TEXT_MODIFIED SYSREQ_EDOC_TYPE_ACT_CODE SYSREQ_EDOC_TYPE_ACT_DESCRIPTION SYSREQ_EDOC_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_EDOC_TYPE_ACT_SECTION SYSREQ_EDOC_TYPE_ADD_PARAMS SYSREQ_EDOC_TYPE_COMMENT SYSREQ_EDOC_TYPE_EVENT_TEXT SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_EDOC_TYPE_NAME_LOCALIZE_ID SYSREQ_EDOC_TYPE_NUMERATION_METHOD SYSREQ_EDOC_TYPE_PSEUDO_REQUISITE_CODE SYSREQ_EDOC_TYPE_REQ_CODE SYSREQ_EDOC_TYPE_REQ_DESCRIPTION SYSREQ_EDOC_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_REQ_IS_LEADING SYSREQ_EDOC_TYPE_REQ_IS_REQUIRED SYSREQ_EDOC_TYPE_REQ_NUMBER SYSREQ_EDOC_TYPE_REQ_ON_CHANGE SYSREQ_EDOC_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_EDOC_TYPE_REQ_ON_SELECT SYSREQ_EDOC_TYPE_REQ_ON_SELECT_KIND SYSREQ_EDOC_TYPE_REQ_SECTION SYSREQ_EDOC_TYPE_VIEW_CARD SYSREQ_EDOC_TYPE_VIEW_CODE SYSREQ_EDOC_TYPE_VIEW_COMMENT SYSREQ_EDOC_TYPE_VIEW_IS_MAIN SYSREQ_EDOC_TYPE_VIEW_NAME SYSREQ_EDOC_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_EDOC_VERSION_AUTHOR SYSREQ_EDOC_VERSION_CRC SYSREQ_EDOC_VERSION_DATA SYSREQ_EDOC_VERSION_EDITOR SYSREQ_EDOC_VERSION_EXPORT_DATE SYSREQ_EDOC_VERSION_EXPORTER SYSREQ_EDOC_VERSION_HIDDEN SYSREQ_EDOC_VERSION_LIFE_STAGE SYSREQ_EDOC_VERSION_MODIFIED SYSREQ_EDOC_VERSION_NOTE SYSREQ_EDOC_VERSION_SIGNATURE_TYPE SYSREQ_EDOC_VERSION_SIGNED SYSREQ_EDOC_VERSION_SIZE SYSREQ_EDOC_VERSION_SOURCE SYSREQ_EDOC_VERSION_TEXT_MODIFIED SYSREQ_EDOCKIND_DEFAULT_VERSION_STATE_CODE SYSREQ_FOLDER_KIND SYSREQ_FUNC_CATEGORY SYSREQ_FUNC_COMMENT SYSREQ_FUNC_GROUP SYSREQ_FUNC_GROUP_COMMENT SYSREQ_FUNC_GROUP_NUMBER SYSREQ_FUNC_HELP SYSREQ_FUNC_PARAM_DEF_VALUE SYSREQ_FUNC_PARAM_IDENT SYSREQ_FUNC_PARAM_NUMBER SYSREQ_FUNC_PARAM_TYPE SYSREQ_FUNC_TEXT SYSREQ_GROUP_CATEGORY SYSREQ_ID SYSREQ_LAST_UPDATE SYSREQ_LEADER_REFERENCE SYSREQ_LINE_NUMBER SYSREQ_MAIN_RECORD_ID SYSREQ_NAME SYSREQ_NAME_LOCALIZE_ID SYSREQ_NOTE SYSREQ_ORIGINAL_RECORD SYSREQ_OUR_FIRM SYSREQ_PROFILING_SETTINGS_BATCH_LOGING SYSREQ_PROFILING_SETTINGS_BATCH_SIZE SYSREQ_PROFILING_SETTINGS_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_SQL_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_START_LOGGED SYSREQ_RECORD_STATUS SYSREQ_REF_REQ_FIELD_NAME SYSREQ_REF_REQ_FORMAT SYSREQ_REF_REQ_GENERATED SYSREQ_REF_REQ_LENGTH SYSREQ_REF_REQ_PRECISION SYSREQ_REF_REQ_REFERENCE SYSREQ_REF_REQ_SECTION SYSREQ_REF_REQ_STORED SYSREQ_REF_REQ_TOKENS SYSREQ_REF_REQ_TYPE SYSREQ_REF_REQ_VIEW SYSREQ_REF_TYPE_ACT_CODE SYSREQ_REF_TYPE_ACT_DESCRIPTION SYSREQ_REF_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_ACT_ON_EXECUTE SYSREQ_REF_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_REF_TYPE_ACT_SECTION SYSREQ_REF_TYPE_ADD_PARAMS SYSREQ_REF_TYPE_COMMENT SYSREQ_REF_TYPE_COMMON_SETTINGS SYSREQ_REF_TYPE_DISPLAY_REQUISITE_NAME SYSREQ_REF_TYPE_EVENT_TEXT SYSREQ_REF_TYPE_MAIN_LEADING_REF SYSREQ_REF_TYPE_NAME_IN_SINGULAR SYSREQ_REF_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_REF_TYPE_NAME_LOCALIZE_ID SYSREQ_REF_TYPE_NUMERATION_METHOD SYSREQ_REF_TYPE_REQ_CODE SYSREQ_REF_TYPE_REQ_DESCRIPTION SYSREQ_REF_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_REQ_IS_CONTROL SYSREQ_REF_TYPE_REQ_IS_FILTER SYSREQ_REF_TYPE_REQ_IS_LEADING SYSREQ_REF_TYPE_REQ_IS_REQUIRED SYSREQ_REF_TYPE_REQ_NUMBER SYSREQ_REF_TYPE_REQ_ON_CHANGE SYSREQ_REF_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_REF_TYPE_REQ_ON_SELECT SYSREQ_REF_TYPE_REQ_ON_SELECT_KIND SYSREQ_REF_TYPE_REQ_SECTION SYSREQ_REF_TYPE_VIEW_CARD SYSREQ_REF_TYPE_VIEW_CODE SYSREQ_REF_TYPE_VIEW_COMMENT SYSREQ_REF_TYPE_VIEW_IS_MAIN SYSREQ_REF_TYPE_VIEW_NAME SYSREQ_REF_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_REFERENCE_TYPE_ID SYSREQ_STATE SYSREQ_STATЕ SYSREQ_SYSTEM_SETTINGS_VALUE SYSREQ_TYPE SYSREQ_UNIT SYSREQ_UNIT_ID SYSREQ_USER_GROUPS_GROUP_FULL_NAME SYSREQ_USER_GROUPS_GROUP_NAME SYSREQ_USER_GROUPS_GROUP_SERVER_NAME SYSREQ_USERS_ACCESS_RIGHTS SYSREQ_USERS_AUTHENTICATION SYSREQ_USERS_CATEGORY SYSREQ_USERS_COMPONENT SYSREQ_USERS_COMPONENT_USER_IS_PUBLIC SYSREQ_USERS_DOMAIN SYSREQ_USERS_FULL_USER_NAME SYSREQ_USERS_GROUP SYSREQ_USERS_IS_MAIN_SERVER SYSREQ_USERS_LOGIN SYSREQ_USERS_REFERENCE_USER_IS_PUBLIC SYSREQ_USERS_STATUS SYSREQ_USERS_USER_CERTIFICATE SYSREQ_USERS_USER_CERTIFICATE_INFO SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_NAME SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_VERSION SYSREQ_USERS_USER_CERTIFICATE_STATE SYSREQ_USERS_USER_CERTIFICATE_SUBJECT_NAME SYSREQ_USERS_USER_CERTIFICATE_THUMBPRINT SYSREQ_USERS_USER_DEFAULT_CERTIFICATE SYSREQ_USERS_USER_DESCRIPTION SYSREQ_USERS_USER_GLOBAL_NAME SYSREQ_USERS_USER_LOGIN SYSREQ_USERS_USER_MAIN_SERVER SYSREQ_USERS_USER_TYPE SYSREQ_WORK_RULES_FOLDER_ID RESULT_VAR_NAME RESULT_VAR_NAME_ENG AUTO_NUMERATION_RULE_ID CANT_CHANGE_ID_REQUISITE_RULE_ID CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID CHECK_CODE_REQUISITE_RULE_ID CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID CHECK_FILTRATER_CHANGES_RULE_ID CHECK_RECORD_INTERVAL_RULE_ID CHECK_REFERENCE_INTERVAL_RULE_ID CHECK_REQUIRED_DATA_FULLNESS_RULE_ID CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID MAKE_RECORD_UNRATIFIED_RULE_ID RESTORE_AUTO_NUMERATION_RULE_ID SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID SET_IDSPS_VALUE_RULE_ID SET_NEXT_CODE_VALUE_RULE_ID SET_OURFIRM_BOUNDS_RULE_ID SET_OURFIRM_REQUISITE_RULE_ID SCRIPT_BLOCK_AFTER_FINISH_EVENT SCRIPT_BLOCK_BEFORE_START_EVENT SCRIPT_BLOCK_EXECUTION_RESULTS_PROPERTY SCRIPT_BLOCK_NAME_PROPERTY SCRIPT_BLOCK_SCRIPT_PROPERTY SUBTASK_BLOCK_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_AFTER_FINISH_EVENT SUBTASK_BLOCK_ASSIGN_PARAMS_EVENT SUBTASK_BLOCK_ATTACHMENTS_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY SUBTASK_BLOCK_BEFORE_START_EVENT SUBTASK_BLOCK_CREATED_TASK_PROPERTY SUBTASK_BLOCK_CREATION_EVENT SUBTASK_BLOCK_DEADLINE_PROPERTY SUBTASK_BLOCK_IMPORTANCE_PROPERTY SUBTASK_BLOCK_INITIATOR_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY SUBTASK_BLOCK_JOBS_TYPE_PROPERTY SUBTASK_BLOCK_NAME_PROPERTY SUBTASK_BLOCK_PARALLEL_ROUTE_PROPERTY SUBTASK_BLOCK_PERFORMERS_PROPERTY SUBTASK_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_REQUIRE_SIGN_PROPERTY SUBTASK_BLOCK_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_START_EVENT SUBTASK_BLOCK_STEP_CONTROL_PROPERTY SUBTASK_BLOCK_SUBJECT_PROPERTY SUBTASK_BLOCK_TASK_CONTROL_PROPERTY SUBTASK_BLOCK_TEXT_PROPERTY SUBTASK_BLOCK_UNLOCK_ATTACHMENTS_ON_STOP_PROPERTY SUBTASK_BLOCK_USE_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_WAIT_FOR_TASK_COMPLETE_PROPERTY SYSCOMP_CONTROL_JOBS SYSCOMP_FOLDERS SYSCOMP_JOBS SYSCOMP_NOTICES SYSCOMP_TASKS SYSDLG_CREATE_EDOCUMENT SYSDLG_CREATE_EDOCUMENT_VERSION SYSDLG_CURRENT_PERIOD SYSDLG_EDIT_FUNCTION_HELP SYSDLG_EDOCUMENT_KINDS_FOR_TEMPLATE SYSDLG_EXPORT_MULTIPLE_EDOCUMENTS SYSDLG_EXPORT_SINGLE_EDOCUMENT SYSDLG_IMPORT_EDOCUMENT SYSDLG_MULTIPLE_SELECT SYSDLG_SETUP_ACCESS_RIGHTS SYSDLG_SETUP_DEFAULT_RIGHTS SYSDLG_SETUP_FILTER_CONDITION SYSDLG_SETUP_SIGN_RIGHTS SYSDLG_SETUP_TASK_OBSERVERS SYSDLG_SETUP_TASK_ROUTE SYSDLG_SETUP_USERS_LIST SYSDLG_SIGN_EDOCUMENT SYSDLG_SIGN_MULTIPLE_EDOCUMENTS SYSREF_ACCESS_RIGHTS_TYPES SYSREF_ADMINISTRATION_HISTORY SYSREF_ALL_AVAILABLE_COMPONENTS SYSREF_ALL_AVAILABLE_PRIVILEGES SYSREF_ALL_REPLICATING_COMPONENTS SYSREF_AVAILABLE_DEVELOPERS_COMPONENTS SYSREF_CALENDAR_EVENTS SYSREF_COMPONENT_TOKEN_HISTORY SYSREF_COMPONENT_TOKENS SYSREF_COMPONENTS SYSREF_CONSTANTS SYSREF_DATA_RECEIVE_PROTOCOL SYSREF_DATA_SEND_PROTOCOL SYSREF_DIALOGS SYSREF_DIALOGS_REQUISITES SYSREF_EDITORS SYSREF_EDOC_CARDS SYSREF_EDOC_TYPES SYSREF_EDOCUMENT_CARD_REQUISITES SYSREF_EDOCUMENT_CARD_TYPES SYSREF_EDOCUMENT_CARD_TYPES_REFERENCE SYSREF_EDOCUMENT_CARDS SYSREF_EDOCUMENT_HISTORY SYSREF_EDOCUMENT_KINDS SYSREF_EDOCUMENT_REQUISITES SYSREF_EDOCUMENT_SIGNATURES SYSREF_EDOCUMENT_TEMPLATES SYSREF_EDOCUMENT_TEXT_STORAGES SYSREF_EDOCUMENT_VIEWS SYSREF_FILTERER_SETUP_CONFLICTS SYSREF_FILTRATER_SETTING_CONFLICTS SYSREF_FOLDER_HISTORY SYSREF_FOLDERS SYSREF_FUNCTION_GROUPS SYSREF_FUNCTION_PARAMS SYSREF_FUNCTIONS SYSREF_JOB_HISTORY SYSREF_LINKS SYSREF_LOCALIZATION_DICTIONARY SYSREF_LOCALIZATION_LANGUAGES SYSREF_MODULES SYSREF_PRIVILEGES SYSREF_RECORD_HISTORY SYSREF_REFERENCE_REQUISITES SYSREF_REFERENCE_TYPE_VIEWS SYSREF_REFERENCE_TYPES SYSREF_REFERENCES SYSREF_REFERENCES_REQUISITES SYSREF_REMOTE_SERVERS SYSREF_REPLICATION_SESSIONS_LOG SYSREF_REPLICATION_SESSIONS_PROTOCOL SYSREF_REPORTS SYSREF_ROLES SYSREF_ROUTE_BLOCK_GROUPS SYSREF_ROUTE_BLOCKS SYSREF_SCRIPTS SYSREF_SEARCHES SYSREF_SERVER_EVENTS SYSREF_SERVER_EVENTS_HISTORY SYSREF_STANDARD_ROUTE_GROUPS SYSREF_STANDARD_ROUTES SYSREF_STATUSES SYSREF_SYSTEM_SETTINGS SYSREF_TASK_HISTORY SYSREF_TASK_KIND_GROUPS SYSREF_TASK_KINDS SYSREF_TASK_RIGHTS SYSREF_TASK_SIGNATURES SYSREF_TASKS SYSREF_UNITS SYSREF_USER_GROUPS SYSREF_USER_GROUPS_REFERENCE SYSREF_USER_SUBSTITUTION SYSREF_USERS SYSREF_USERS_REFERENCE SYSREF_VIEWERS SYSREF_WORKING_TIME_CALENDARS ACCESS_RIGHTS_TABLE_NAME EDMS_ACCESS_TABLE_NAME EDOC_TYPES_TABLE_NAME TEST_DEV_DB_NAME TEST_DEV_SYSTEM_CODE TEST_EDMS_DB_NAME TEST_EDMS_MAIN_CODE TEST_EDMS_MAIN_DB_NAME TEST_EDMS_SECOND_CODE TEST_EDMS_SECOND_DB_NAME TEST_EDMS_SYSTEM_CODE TEST_ISB5_MAIN_CODE TEST_ISB5_SECOND_CODE TEST_SQL_SERVER_2005_NAME TEST_SQL_SERVER_NAME ATTENTION_CAPTION cbsCommandLinks cbsDefault CONFIRMATION_CAPTION ERROR_CAPTION INFORMATION_CAPTION mrCancel mrOk EDOC_VERSION_ACTIVE_STAGE_CODE EDOC_VERSION_DESIGN_STAGE_CODE EDOC_VERSION_OBSOLETE_STAGE_CODE cpDataEnciphermentEnabled cpDigitalSignatureEnabled cpID cpIssuer cpPluginVersion cpSerial cpSubjectName cpSubjSimpleName cpValidFromDate cpValidToDate ISBL_SYNTAX NO_SYNTAX XML_SYNTAX WAIT_BLOCK_AFTER_FINISH_EVENT WAIT_BLOCK_BEFORE_START_EVENT WAIT_BLOCK_DEADLINE_PROPERTY WAIT_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY WAIT_BLOCK_NAME_PROPERTY WAIT_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY SYSRES_COMMON SYSRES_CONST SYSRES_MBFUNC SYSRES_SBDATA SYSRES_SBGUI SYSRES_SBINTF SYSRES_SBREFDSC SYSRES_SQLERRORS SYSRES_SYSCOMP atUser atGroup atRole aemEnabledAlways aemDisabledAlways aemEnabledOnBrowse aemEnabledOnEdit aemDisabledOnBrowseEmpty apBegin apEnd alLeft alRight asmNever asmNoButCustomize asmAsLastTime asmYesButCustomize asmAlways cirCommon cirRevoked ctSignature ctEncode ctSignatureEncode clbUnchecked clbChecked clbGrayed ceISB ceAlways ceNever ctDocument ctReference ctScript ctUnknown ctReport ctDialog ctFunction ctFolder ctEDocument ctTask ctJob ctNotice ctControlJob cfInternal cfDisplay ciUnspecified ciWrite ciRead ckFolder ckEDocument ckTask ckJob ckComponentToken ckAny ckReference ckScript ckReport ckDialog ctISBLEditor ctBevel ctButton ctCheckListBox ctComboBox ctComboEdit ctGrid ctDBCheckBox ctDBComboBox ctDBEdit ctDBEllipsis ctDBMemo ctDBNavigator ctDBRadioGroup ctDBStatusLabel ctEdit ctGroupBox ctInplaceHint ctMemo ctPanel ctListBox ctRadioButton ctRichEdit ctTabSheet ctWebBrowser ctImage ctHyperLink ctLabel ctDBMultiEllipsis ctRibbon ctRichView ctInnerPanel ctPanelGroup ctBitButton cctDate cctInteger cctNumeric cctPick cctReference cctString cctText cltInternal cltPrimary cltGUI dseBeforeOpen dseAfterOpen dseBeforeClose dseAfterClose dseOnValidDelete dseBeforeDelete dseAfterDelete dseAfterDeleteOutOfTransaction dseOnDeleteError dseBeforeInsert dseAfterInsert dseOnValidUpdate dseBeforeUpdate dseOnUpdateRatifiedRecord dseAfterUpdate dseAfterUpdateOutOfTransaction dseOnUpdateError dseAfterScroll dseOnOpenRecord dseOnCloseRecord dseBeforeCancel dseAfterCancel dseOnUpdateDeadlockError dseBeforeDetailUpdate dseOnPrepareUpdate dseOnAnyRequisiteChange dssEdit dssInsert dssBrowse dssInActive dftDate dftShortDate dftDateTime dftTimeStamp dotDays dotHours dotMinutes dotSeconds dtkndLocal dtkndUTC arNone arView arEdit arFull ddaView ddaEdit emLock emEdit emSign emExportWithLock emImportWithUnlock emChangeVersionNote emOpenForModify emChangeLifeStage emDelete emCreateVersion emImport emUnlockExportedWithLock emStart emAbort emReInit emMarkAsReaded emMarkAsUnreaded emPerform emAccept emResume emChangeRights emEditRoute emEditObserver emRecoveryFromLocalCopy emChangeWorkAccessType emChangeEncodeTypeToCertificate emChangeEncodeTypeToPassword emChangeEncodeTypeToNone emChangeEncodeTypeToCertificatePassword emChangeStandardRoute emGetText emOpenForView emMoveToStorage emCreateObject emChangeVersionHidden emDeleteVersion emChangeLifeCycleStage emApprovingSign emExport emContinue emLockFromEdit emUnLockForEdit emLockForServer emUnlockFromServer emDelegateAccessRights emReEncode ecotFile ecotProcess eaGet eaCopy eaCreate eaCreateStandardRoute edltAll edltNothing edltQuery essmText essmCard esvtLast esvtLastActive esvtSpecified edsfExecutive edsfArchive edstSQLServer edstFile edvstNone edvstEDocumentVersionCopy edvstFile edvstTemplate edvstScannedFile vsDefault vsDesign vsActive vsObsolete etNone etCertificate etPassword etCertificatePassword ecException ecWarning ecInformation estAll estApprovingOnly evtLast evtLastActive evtQuery fdtString fdtNumeric fdtInteger fdtDate fdtText fdtUnknown fdtWideString fdtLargeInteger ftInbox ftOutbox ftFavorites ftCommonFolder ftUserFolder ftComponents ftQuickLaunch ftShortcuts ftSearch grhAuto grhX1 grhX2 grhX3 hltText hltRTF hltHTML iffBMP iffJPEG iffMultiPageTIFF iffSinglePageTIFF iffTIFF iffPNG im8bGrayscale im24bRGB im1bMonochrome itBMP itJPEG itWMF itPNG ikhInformation ikhWarning ikhError ikhNoIcon icUnknown icScript icFunction icIntegratedReport icAnalyticReport icDataSetEventHandler icActionHandler icFormEventHandler icLookUpEventHandler icRequisiteChangeEventHandler icBeforeSearchEventHandler icRoleCalculation icSelectRouteEventHandler icBlockPropertyCalculation icBlockQueryParamsEventHandler icChangeSearchResultEventHandler icBlockEventHandler icSubTaskInitEventHandler icEDocDataSetEventHandler icEDocLookUpEventHandler icEDocActionHandler icEDocFormEventHandler icEDocRequisiteChangeEventHandler icStructuredConversionRule icStructuredConversionEventBefore icStructuredConversionEventAfter icWizardEventHandler icWizardFinishEventHandler icWizardStepEventHandler icWizardStepFinishEventHandler icWizardActionEnableEventHandler icWizardActionExecuteEventHandler icCreateJobsHandler icCreateNoticesHandler icBeforeLookUpEventHandler icAfterLookUpEventHandler icTaskAbortEventHandler icWorkflowBlockActionHandler icDialogDataSetEventHandler icDialogActionHandler icDialogLookUpEventHandler icDialogRequisiteChangeEventHandler icDialogFormEventHandler icDialogValidCloseEventHandler icBlockFormEventHandler icTaskFormEventHandler icReferenceMethod icEDocMethod icDialogMethod icProcessMessageHandler isShow isHide isByUserSettings jkJob jkNotice jkControlJob jtInner jtLeft jtRight jtFull jtCross lbpAbove lbpBelow lbpLeft lbpRight eltPerConnection eltPerUser sfcUndefined sfcBlack sfcGreen sfcRed sfcBlue sfcOrange sfcLilac sfsItalic sfsStrikeout sfsNormal ldctStandardRoute ldctWizard ldctScript ldctFunction ldctRouteBlock ldctIntegratedReport ldctAnalyticReport ldctReferenceType ldctEDocumentType ldctDialog ldctServerEvents mrcrtNone mrcrtUser mrcrtMaximal mrcrtCustom vtEqual vtGreaterOrEqual vtLessOrEqual vtRange rdYesterday rdToday rdTomorrow rdThisWeek rdThisMonth rdThisYear rdNextMonth rdNextWeek rdLastWeek rdLastMonth rdWindow rdFile rdPrinter rdtString rdtNumeric rdtInteger rdtDate rdtReference rdtAccount rdtText rdtPick rdtUnknown rdtLargeInteger rdtDocument reOnChange reOnChangeValues ttGlobal ttLocal ttUser ttSystem ssmBrowse ssmSelect ssmMultiSelect ssmBrowseModal smSelect smLike smCard stNone stAuthenticating stApproving sctString sctStream sstAnsiSort sstNaturalSort svtEqual svtContain soatString soatNumeric soatInteger soatDatetime soatReferenceRecord soatText soatPick soatBoolean soatEDocument soatAccount soatIntegerCollection soatNumericCollection soatStringCollection soatPickCollection soatDatetimeCollection soatBooleanCollection soatReferenceRecordCollection soatEDocumentCollection soatAccountCollection soatContents soatUnknown tarAbortByUser tarAbortByWorkflowException tvtAllWords tvtExactPhrase tvtAnyWord usNone usCompleted usRedSquare usBlueSquare usYellowSquare usGreenSquare usOrangeSquare usPurpleSquare usFollowUp utUnknown utUser utDeveloper utAdministrator utSystemDeveloper utDisconnected btAnd btDetailAnd btOr btNotOr btOnly vmView vmSelect vmNavigation vsmSingle vsmMultiple vsmMultipleCheck vsmNoSelection wfatPrevious wfatNext wfatCancel wfatFinish wfepUndefined wfepText3 wfepText6 wfepText9 wfepSpinEdit wfepDropDown wfepRadioGroup wfepFlag wfepText12 wfepText15 wfepText18 wfepText21 wfepText24 wfepText27 wfepText30 wfepRadioGroupColumn1 wfepRadioGroupColumn2 wfepRadioGroupColumn3 wfetQueryParameter wfetText wfetDelimiter wfetLabel wptString wptInteger wptNumeric wptBoolean wptDateTime wptPick wptText wptUser wptUserList wptEDocumentInfo wptEDocumentInfoList wptReferenceRecordInfo wptReferenceRecordInfoList wptFolderInfo wptTaskInfo wptContents wptFileName wptDate wsrComplete wsrGoNext wsrGoPrevious wsrCustom wsrCancel wsrGoFinal wstForm wstEDocument wstTaskCard wstReferenceRecordCard wstFinal waAll waPerformers waManual wsbStart wsbFinish wsbNotice wsbStep wsbDecision wsbWait wsbMonitor wsbScript wsbConnector wsbSubTask wsbLifeCycleStage wsbPause wdtInteger wdtFloat wdtString wdtPick wdtDateTime wdtBoolean wdtTask wdtJob wdtFolder wdtEDocument wdtReferenceRecord wdtUser wdtGroup wdtRole wdtIntegerCollection wdtFloatCollection wdtStringCollection wdtPickCollection wdtDateTimeCollection wdtBooleanCollection wdtTaskCollection wdtJobCollection wdtFolderCollection wdtEDocumentCollection wdtReferenceRecordCollection wdtUserCollection wdtGroupCollection wdtRoleCollection wdtContents wdtUserList wdtSearchDescription wdtDeadLine wdtPickSet wdtAccountCollection wiLow wiNormal wiHigh wrtSoft wrtHard wsInit wsRunning wsDone wsControlled wsAborted wsContinued wtmFull wtmFromCurrent wtmOnlyCurrent ",class:"AltState Application CallType ComponentTokens CreatedJobs CreatedNotices ControlState DialogResult Dialogs EDocuments EDocumentVersionSource Folders GlobalIDs Job Jobs InputValue LookUpReference LookUpRequisiteNames LookUpSearch Object ParentComponent Processes References Requisite ReportName Reports Result Scripts Searches SelectedAttachments SelectedItems SelectMode Sender ServerEvents ServiceFactory ShiftState SubTask SystemDialogs Tasks Wizard Wizards Work ВызовСпособ ИмяОтчета РеквЗнач ",literal:"null true false nil "},s={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,keywords:a,relevance:0},l={className:"type",begin:":[ \\t]*("+"IApplication IAccessRights IAccountRepository IAccountSelectionRestrictions IAction IActionList IAdministrationHistoryDescription IAnchors IApplication IArchiveInfo IAttachment IAttachmentList ICheckListBox ICheckPointedList IColumn IComponent IComponentDescription IComponentToken IComponentTokenFactory IComponentTokenInfo ICompRecordInfo IConnection IContents IControl IControlJob IControlJobInfo IControlList ICrypto ICrypto2 ICustomJob ICustomJobInfo ICustomListBox ICustomObjectWizardStep ICustomWork ICustomWorkInfo IDataSet IDataSetAccessInfo IDataSigner IDateCriterion IDateRequisite IDateRequisiteDescription IDateValue IDeaAccessRights IDeaObjectInfo IDevelopmentComponentLock IDialog IDialogFactory IDialogPickRequisiteItems IDialogsFactory IDICSFactory IDocRequisite IDocumentInfo IDualListDialog IECertificate IECertificateInfo IECertificates IEditControl IEditorForm IEdmsExplorer IEdmsObject IEdmsObjectDescription IEdmsObjectFactory IEdmsObjectInfo IEDocument IEDocumentAccessRights IEDocumentDescription IEDocumentEditor IEDocumentFactory IEDocumentInfo IEDocumentStorage IEDocumentVersion IEDocumentVersionListDialog IEDocumentVersionSource IEDocumentWizardStep IEDocVerSignature IEDocVersionState IEnabledMode IEncodeProvider IEncrypter IEvent IEventList IException IExternalEvents IExternalHandler IFactory IField IFileDialog IFolder IFolderDescription IFolderDialog IFolderFactory IFolderInfo IForEach IForm IFormTitle IFormWizardStep IGlobalIDFactory IGlobalIDInfo IGrid IHasher IHistoryDescription IHyperLinkControl IImageButton IImageControl IInnerPanel IInplaceHint IIntegerCriterion IIntegerList IIntegerRequisite IIntegerValue IISBLEditorForm IJob IJobDescription IJobFactory IJobForm IJobInfo ILabelControl ILargeIntegerCriterion ILargeIntegerRequisite ILargeIntegerValue ILicenseInfo ILifeCycleStage IList IListBox ILocalIDInfo ILocalization ILock IMemoryDataSet IMessagingFactory IMetadataRepository INotice INoticeInfo INumericCriterion INumericRequisite INumericValue IObject IObjectDescription IObjectImporter IObjectInfo IObserver IPanelGroup IPickCriterion IPickProperty IPickRequisite IPickRequisiteDescription IPickRequisiteItem IPickRequisiteItems IPickValue IPrivilege IPrivilegeList IProcess IProcessFactory IProcessMessage IProgress IProperty IPropertyChangeEvent IQuery IReference IReferenceCriterion IReferenceEnabledMode IReferenceFactory IReferenceHistoryDescription IReferenceInfo IReferenceRecordCardWizardStep IReferenceRequisiteDescription IReferencesFactory IReferenceValue IRefRequisite IReport IReportFactory IRequisite IRequisiteDescription IRequisiteDescriptionList IRequisiteFactory IRichEdit IRouteStep IRule IRuleList ISchemeBlock IScript IScriptFactory ISearchCriteria ISearchCriterion ISearchDescription ISearchFactory ISearchFolderInfo ISearchForObjectDescription ISearchResultRestrictions ISecuredContext ISelectDialog IServerEvent IServerEventFactory IServiceDialog IServiceFactory ISignature ISignProvider ISignProvider2 ISignProvider3 ISimpleCriterion IStringCriterion IStringList IStringRequisite IStringRequisiteDescription IStringValue ISystemDialogsFactory ISystemInfo ITabSheet ITask ITaskAbortReasonInfo ITaskCardWizardStep ITaskDescription ITaskFactory ITaskInfo ITaskRoute ITextCriterion ITextRequisite ITextValue ITreeListSelectDialog IUser IUserList IValue IView IWebBrowserControl IWizard IWizardAction IWizardFactory IWizardFormElement IWizardParam IWizardPickParam IWizardReferenceParam IWizardStep IWorkAccessRights IWorkDescription IWorkflowAskableParam IWorkflowAskableParams IWorkflowBlock IWorkflowBlockResult IWorkflowEnabledMode IWorkflowParam IWorkflowPickParam IWorkflowReferenceParam IWorkState IWorkTreeCustomNode IWorkTreeJobNode IWorkTreeTaskNode IXMLEditorForm SBCrypto ".trim().replace(/\s/g,"|")+")",end:"[ \\t]*=",excludeEnd:!0},u={className:"variable",lexemes:t,keywords:a,begin:t,relevance:0,containts:[l,s]};return{aliases:["isbl"],case_insensitive:!0,lexemes:t,keywords:a,illegal:"\\$|\\?|%|,|;$|~|#|@|</",contains:[{className:"function",begin:"[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*\\(",end:"\\)$",returnBegin:!0,lexemes:t,keywords:a,illegal:"[\\[\\]\\|\\$\\?%,~#@]",contains:[{className:"title",lexemes:t,keywords:{built_in:"AddSubString AdjustLineBreaks AmountInWords Analysis ArrayDimCount ArrayHighBound ArrayLowBound ArrayOf ArrayReDim Assert Assigned BeginOfMonth BeginOfPeriod BuildProfilingOperationAnalysis CallProcedure CanReadFile CArrayElement CDataSetRequisite ChangeDate ChangeReferenceDataset Char CharPos CheckParam CheckParamValue CompareStrings ConstantExists ControlState ConvertDateStr Copy CopyFile CreateArray CreateCachedReference CreateConnection CreateDialog CreateDualListDialog CreateEditor CreateException CreateFile CreateFolderDialog CreateInputDialog CreateLinkFile CreateList CreateLock CreateMemoryDataSet CreateObject CreateOpenDialog CreateProgress CreateQuery CreateReference CreateReport CreateSaveDialog CreateScript CreateSQLPivotFunction CreateStringList CreateTreeListSelectDialog CSelectSQL CSQL CSubString CurrentUserID CurrentUserName CurrentVersion DataSetLocateEx DateDiff DateTimeDiff DateToStr DayOfWeek DeleteFile DirectoryExists DisableCheckAccessRights DisableCheckFullShowingRestriction DisableMassTaskSendingRestrictions DropTable DupeString EditText EnableCheckAccessRights EnableCheckFullShowingRestriction EnableMassTaskSendingRestrictions EndOfMonth EndOfPeriod ExceptionExists ExceptionsOff ExceptionsOn Execute ExecuteProcess Exit ExpandEnvironmentVariables ExtractFileDrive ExtractFileExt ExtractFileName ExtractFilePath ExtractParams FileExists FileSize FindFile FindSubString FirmContext ForceDirectories Format FormatDate FormatNumeric FormatSQLDate FormatString FreeException GetComponent GetComponentLaunchParam GetConstant GetLastException GetReferenceRecord GetRefTypeByRefID GetTableID GetTempFolder IfThen In IndexOf InputDialog InputDialogEx InteractiveMode IsFileLocked IsGraphicFile IsNumeric Length LoadString LoadStringFmt LocalTimeToUTC LowerCase Max MessageBox MessageBoxEx MimeDecodeBinary MimeDecodeString MimeEncodeBinary MimeEncodeString Min MoneyInWords MoveFile NewID Now OpenFile Ord Precision Raise ReadCertificateFromFile ReadFile ReferenceCodeByID ReferenceNumber ReferenceRequisiteMode ReferenceRequisiteValue RegionDateSettings RegionNumberSettings RegionTimeSettings RegRead RegWrite RenameFile Replace Round SelectServerCode SelectSQL ServerDateTime SetConstant SetManagedFolderFieldsState ShowConstantsInputDialog ShowMessage Sleep Split SQL SQL2XLSTAB SQLProfilingSendReport StrToDate SubString SubStringCount SystemSetting Time TimeDiff Today Transliterate Trim UpperCase UserStatus UTCToLocalTime ValidateXML VarIsClear VarIsEmpty VarIsNull WorkTimeDiff WriteFile WriteFileEx WriteObjectHistory Анализ БазаДанных БлокЕсть БлокЕстьРасш БлокИнфо БлокСнять БлокСнятьРасш БлокУстановить Ввод ВводМеню ВедС ВедСпр ВерхняяГраницаМассива ВнешПрогр Восст ВременнаяПапка Время ВыборSQL ВыбратьЗапись ВыделитьСтр Вызвать Выполнить ВыпПрогр ГрафическийФайл ГруппаДополнительно ДатаВремяСерв ДеньНедели ДиалогДаНет ДлинаСтр ДобПодстр ЕПусто ЕслиТо ЕЧисло ЗамПодстр ЗаписьСправочника ЗначПоляСпр ИДТипСпр ИзвлечьДиск ИзвлечьИмяФайла ИзвлечьПуть ИзвлечьРасширение ИзмДат ИзменитьРазмерМассива ИзмеренийМассива ИмяОрг ИмяПоляСпр Индекс ИндикаторЗакрыть ИндикаторОткрыть ИндикаторШаг ИнтерактивныйРежим ИтогТблСпр КодВидВедСпр КодВидСпрПоИД КодПоAnalit КодСимвола КодСпр КолПодстр КолПроп КонМес Конст КонстЕсть КонстЗнач КонТран КопироватьФайл КопияСтр КПериод КСтрТблСпр Макс МаксСтрТблСпр Массив Меню МенюРасш Мин НаборДанныхНайтиРасш НаимВидСпр НаимПоAnalit НаимСпр НастроитьПереводыСтрок НачМес НачТран НижняяГраницаМассива НомерСпр НПериод Окно Окр Окружение ОтлИнфДобавить ОтлИнфУдалить Отчет ОтчетАнал ОтчетИнт ПапкаСуществует Пауза ПВыборSQL ПереименоватьФайл Переменные ПереместитьФайл Подстр ПоискПодстр ПоискСтр ПолучитьИДТаблицы ПользовательДополнительно ПользовательИД ПользовательИмя ПользовательСтатус Прервать ПроверитьПараметр ПроверитьПараметрЗнач ПроверитьУсловие РазбСтр РазнВремя РазнДат РазнДатаВремя РазнРабВремя РегУстВрем РегУстДат РегУстЧсл РедТекст РеестрЗапись РеестрСписокИменПарам РеестрЧтение РеквСпр РеквСпрПр Сегодня Сейчас Сервер СерверПроцессИД СертификатФайлСчитать СжПроб Символ СистемаДиректумКод СистемаИнформация СистемаКод Содержит СоединениеЗакрыть СоединениеОткрыть СоздатьДиалог СоздатьДиалогВыбораИзДвухСписков СоздатьДиалогВыбораПапки СоздатьДиалогОткрытияФайла СоздатьДиалогСохраненияФайла СоздатьЗапрос СоздатьИндикатор СоздатьИсключение СоздатьКэшированныйСправочник СоздатьМассив СоздатьНаборДанных СоздатьОбъект СоздатьОтчет СоздатьПапку СоздатьРедактор СоздатьСоединение СоздатьСписок СоздатьСписокСтрок СоздатьСправочник СоздатьСценарий СоздСпр СостСпр Сохр СохрСпр СписокСистем Спр Справочник СпрБлокЕсть СпрБлокСнять СпрБлокСнятьРасш СпрБлокУстановить СпрИзмНабДан СпрКод СпрНомер СпрОбновить СпрОткрыть СпрОтменить СпрПарам СпрПолеЗнач СпрПолеИмя СпрРекв СпрРеквВведЗн СпрРеквНовые СпрРеквПр СпрРеквПредЗн СпрРеквРежим СпрРеквТипТекст СпрСоздать СпрСост СпрСохранить СпрТблИтог СпрТблСтр СпрТблСтрКол СпрТблСтрМакс СпрТблСтрМин СпрТблСтрПред СпрТблСтрСлед СпрТблСтрСозд СпрТблСтрУд СпрТекПредст СпрУдалить СравнитьСтр СтрВерхРегистр СтрНижнРегистр СтрТблСпр СумПроп Сценарий СценарийПарам ТекВерсия ТекОрг Точн Тран Транслитерация УдалитьТаблицу УдалитьФайл УдСпр УдСтрТблСпр Уст УстановкиКонстант ФайлАтрибутСчитать ФайлАтрибутУстановить ФайлВремя ФайлВремяУстановить ФайлВыбрать ФайлЗанят ФайлЗаписать ФайлИскать ФайлКопировать ФайлМожноЧитать ФайлОткрыть ФайлПереименовать ФайлПерекодировать ФайлПереместить ФайлПросмотреть ФайлРазмер ФайлСоздать ФайлСсылкаСоздать ФайлСуществует ФайлСчитать ФайлУдалить ФмтSQLДат ФмтДат ФмтСтр ФмтЧсл Формат ЦМассивЭлемент ЦНаборДанныхРеквизит ЦПодстр "},begin:"[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*\\(",end:"\\(",returnBegin:!0,excludeEnd:!0},s,u,r,n,i]},l,s,u,r,n,i]}}},function(e,t){e.exports=function(e){var t="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,{className:"meta",begin:"@[A-Za-z]+"}]}}},function(e,t){e.exports=function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},r={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},o={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},i={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,o]};o.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,r,e.REGEXP_MODE];var a=o.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:a}]}]},{begin:/</,end:/(\/\w+|\w+\/)>/,subLanguage:"xml",contains:[{begin:/<\w+\s*\/>/,skip:!0},{begin:/<\w+/,end:/(\/\w+|\w+\/)>/,skip:!0,contains:[{begin:/<\w+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:a}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}},function(e,t){e.exports=function(e){var t={className:"params",begin:/\(/,end:/\)/,contains:[{begin:/[\w-]+ *=/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/[\w-]+/}]}],relevance:0};return{aliases:["wildfly-cli"],lexemes:"[a-z-]+",keywords:{keyword:"alias batch cd clear command connect connection-factory connection-info data-source deploy deployment-info deployment-overlay echo echo-dmr help history if jdbc-driver-info jms-queue|20 jms-topic|20 ls patch pwd quit read-attribute read-operation reload rollout-plan run-batch set shutdown try unalias undeploy unset version xa-data-source",literal:"true false"},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"params",begin:/--[\w\-=\/]+/},{className:"function",begin:/:[\w\-.]+/,relevance:0},{className:"string",begin:/\B(([\/.])[\w\-.\/=]+)+/},t]}}},function(e,t){e.exports=function(e){var t={literal:"true false null"},n=[e.QUOTE_STRING_MODE,e.C_NUMBER_MODE],r={end:",",endsWithParent:!0,excludeEnd:!0,contains:n,keywords:t},o={begin:"{",end:"}",contains:[{className:"attr",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE],illegal:"\\n"},e.inherit(r,{begin:/:/})],illegal:"\\S"},i={begin:"\\[",end:"\\]",contains:[e.inherit(r)],illegal:"\\S"};return n.splice(n.length,0,o,i),{contains:n,keywords:t,illegal:"\\S"}}},function(e,t){e.exports=function(e){var t={keyword:"in isa where baremodule begin break catch ccall const continue do else elseif end export false finally for function global if import importall let local macro module quote return true try using while type immutable abstract bitstype typealias ",literal:"true false ARGS C_NULL DevNull ENDIAN_BOM ENV I Inf Inf16 Inf32 Inf64 InsertionSort JULIA_HOME LOAD_PATH MergeSort NaN NaN16 NaN32 NaN64 PROGRAM_FILE QuickSort RoundDown RoundFromZero RoundNearest RoundNearestTiesAway RoundNearestTiesUp RoundToZero RoundUp STDERR STDIN STDOUT VERSION catalan e|0 eu|0 eulergamma golden im nothing pi γ π φ ",built_in:"ANY AbstractArray AbstractChannel AbstractFloat AbstractMatrix AbstractRNG AbstractSerializer AbstractSet AbstractSparseArray AbstractSparseMatrix AbstractSparseVector AbstractString AbstractUnitRange AbstractVecOrMat AbstractVector Any ArgumentError Array AssertionError Associative Base64DecodePipe Base64EncodePipe Bidiagonal BigFloat BigInt BitArray BitMatrix BitVector Bool BoundsError BufferStream CachingPool CapturedException CartesianIndex CartesianRange Cchar Cdouble Cfloat Channel Char Cint Cintmax_t Clong Clonglong ClusterManager Cmd CodeInfo Colon Complex Complex128 Complex32 Complex64 CompositeException Condition ConjArray ConjMatrix ConjVector Cptrdiff_t Cshort Csize_t Cssize_t Cstring Cuchar Cuint Cuintmax_t Culong Culonglong Cushort Cwchar_t Cwstring DataType Date DateFormat DateTime DenseArray DenseMatrix DenseVecOrMat DenseVector Diagonal Dict DimensionMismatch Dims DirectIndexString Display DivideError DomainError EOFError EachLine Enum Enumerate ErrorException Exception ExponentialBackOff Expr Factorization FileMonitor Float16 Float32 Float64 Function Future GlobalRef GotoNode HTML Hermitian IO IOBuffer IOContext IOStream IPAddr IPv4 IPv6 IndexCartesian IndexLinear IndexStyle InexactError InitError Int Int128 Int16 Int32 Int64 Int8 IntSet Integer InterruptException InvalidStateException Irrational KeyError LabelNode LinSpace LineNumberNode LoadError LowerTriangular MIME Matrix MersenneTwister Method MethodError MethodTable Module NTuple NewvarNode NullException Nullable Number ObjectIdDict OrdinalRange OutOfMemoryError OverflowError Pair ParseError PartialQuickSort PermutedDimsArray Pipe PollingFileWatcher ProcessExitedException Ptr QuoteNode RandomDevice Range RangeIndex Rational RawFD ReadOnlyMemoryError Real ReentrantLock Ref Regex RegexMatch RemoteChannel RemoteException RevString RoundingMode RowVector SSAValue SegmentationFault SerializationState Set SharedArray SharedMatrix SharedVector Signed SimpleVector Slot SlotNumber SparseMatrixCSC SparseVector StackFrame StackOverflowError StackTrace StepRange StepRangeLen StridedArray StridedMatrix StridedVecOrMat StridedVector String SubArray SubString SymTridiagonal Symbol Symmetric SystemError TCPSocket Task Text TextDisplay Timer Tridiagonal Tuple Type TypeError TypeMapEntry TypeMapLevel TypeName TypeVar TypedSlot UDPSocket UInt UInt128 UInt16 UInt32 UInt64 UInt8 UndefRefError UndefVarError UnicodeError UniformScaling Union UnionAll UnitRange Unsigned UpperTriangular Val Vararg VecElement VecOrMat Vector VersionNumber Void WeakKeyDict WeakRef WorkerConfig WorkerPool "},n="[A-Za-z_\\u00A1-\\uFFFF][A-Za-z_0-9\\u00A1-\\uFFFF]*",r={lexemes:n,keywords:t,illegal:/<\//},o={className:"subst",begin:/\$\(/,end:/\)/,keywords:t},i={className:"variable",begin:"\\$"+n},a={className:"string",contains:[e.BACKSLASH_ESCAPE,o,i],variants:[{begin:/\w*"""/,end:/"""\w*/,relevance:10},{begin:/\w*"/,end:/"\w*/}]},s={className:"string",contains:[e.BACKSLASH_ESCAPE,o,i],begin:"`",end:"`"},l={className:"meta",begin:"@"+n};return r.contains=[{className:"number",begin:/(\b0x[\d_]*(\.[\d_]*)?|0x\.\d[\d_]*)p[-+]?\d+|\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\b\d[\d_]*(\.[\d_]*)?|\.\d[\d_]*)([eEfF][-+]?\d+)?/,relevance:0},{className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},a,s,l,{className:"comment",variants:[{begin:"#=",end:"=#",relevance:10},{begin:"#",end:"$"}]},e.HASH_COMMENT_MODE,{className:"keyword",begin:"\\b(((abstract|primitive)\\s+)type|(mutable\\s+)?struct)\\b"},{begin:/<:/}],o.contains=r.contains,r}},function(e,t){e.exports=function(e){return{contains:[{className:"meta",begin:/^julia>/,relevance:10,starts:{end:/^(?![ ]{6})/,subLanguage:"julia"},aliases:["jldoctest"]}]}}},function(e,t){e.exports=function(e){var t={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual trait volatile transient native default",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},n={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},r={className:"subst",begin:"\\${",end:"}",contains:[e.APOS_STRING_MODE,e.C_NUMBER_MODE]},o={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},i={className:"string",variants:[{begin:'"""',end:'"""',contains:[o,r]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,o,r]}]},a={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},s={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(i,{className:"meta-string"})]}]},l={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["kt"],keywords:t,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},n,a,s,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:t,illegal:/fun\s+(<.*>)?[^\s\(]+(\s+[^\s\(]+)\s*=/,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],relevance:0},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,s,i,e.C_NUMBER_MODE]},e.C_BLOCK_COMMENT_MODE]},{className:"class",beginKeywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,]|$/,excludeBegin:!0,returnEnd:!0},a,s]},i,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},l]}}},function(e,t){e.exports=function(e){var t="\\]|\\?>",n={literal:"true false none minimal full all void and or not bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft",built_in:"array date decimal duration integer map pair string tag xml null boolean bytes keyword list locale queue set stack staticarray local var variable global data self inherited currentcapture givenblock",keyword:"cache database_names database_schemanames database_tablenames define_tag define_type email_batch encode_set html_comment handle handle_error header if inline iterate ljax_target link link_currentaction link_currentgroup link_currentrecord link_detail link_firstgroup link_firstrecord link_lastgroup link_lastrecord link_nextgroup link_nextrecord link_prevgroup link_prevrecord log loop namespace_using output_none portal private protect records referer referrer repeating resultset rows search_args search_arguments select sort_args sort_arguments thread_atomic value_list while abort case else fail_if fail_ifnot fail if_empty if_false if_null if_true loop_abort loop_continue loop_count params params_up return return_value run_children soap_definetag soap_lastrequest soap_lastresponse tag_name ascending average by define descending do equals frozen group handle_failure import in into join let match max min on order parent protected provide public require returnhome skip split_thread sum take thread to trait type where with yield yieldhome"},r=e.COMMENT("\x3c!--","--\x3e",{relevance:0}),o={className:"meta",begin:"\\[noprocess\\]",starts:{end:"\\[/noprocess\\]",returnEnd:!0,contains:[r]}},i={className:"meta",begin:"\\[/noprocess|<\\?(lasso(script)?|=)"},a={className:"symbol",begin:"'[a-zA-Z_][\\w.]*'"},s=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.inherit(e.C_NUMBER_MODE,{begin:e.C_NUMBER_RE+"|(-?infinity|NaN)\\b"}),e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"string",begin:"`",end:"`"},{variants:[{begin:"[#$][a-zA-Z_][\\w.]*"},{begin:"#",end:"\\d+",illegal:"\\W"}]},{className:"type",begin:"::\\s*",end:"[a-zA-Z_][\\w.]*",illegal:"\\W"},{className:"params",variants:[{begin:"-(?!infinity)[a-zA-Z_][\\w.]*",relevance:0},{begin:"(\\.\\.\\.)"}]},{begin:/(->|\.)\s*/,relevance:0,contains:[a]},{className:"class",beginKeywords:"define",returnEnd:!0,end:"\\(|=>",contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z_][\\w.]*(=(?!>))?|[-+*/%](?!>)"})]}];return{aliases:["ls","lassoscript"],case_insensitive:!0,lexemes:"[a-zA-Z_][\\w.]*|&[lg]t;",keywords:n,contains:[{className:"meta",begin:t,relevance:0,starts:{end:"\\[|<\\?(lasso(script)?|=)",returnEnd:!0,relevance:0,contains:[r]}},o,i,{className:"meta",begin:"\\[no_square_brackets",starts:{end:"\\[/no_square_brackets\\]",lexemes:"[a-zA-Z_][\\w.]*|&[lg]t;",keywords:n,contains:[{className:"meta",begin:t,relevance:0,starts:{end:"\\[noprocess\\]|<\\?(lasso(script)?|=)",returnEnd:!0,contains:[r]}},o,i].concat(s)}},{className:"meta",begin:"\\[",relevance:0},{className:"meta",begin:"^#!",end:"lasso9$",relevance:10}].concat(s)}}},function(e,t){e.exports=function(e){return{contains:[{className:"attribute",begin:"^dn",end:": ",excludeEnd:!0,starts:{end:"$",relevance:0},relevance:10},{className:"attribute",begin:"^\\w",end:": ",excludeEnd:!0,starts:{end:"$",relevance:0}},{className:"literal",begin:"^-",end:"$"},e.HASH_COMMENT_MODE]}}},function(e,t){e.exports=function(e){return{contains:[{className:"function",begin:"#+[A-Za-z_0-9]*\\(",end:" {",returnBegin:!0,excludeEnd:!0,contains:[{className:"keyword",begin:"#+"},{className:"title",begin:"[A-Za-z_][A-Za-z_0-9]*"},{className:"params",begin:"\\(",end:"\\)",endsParent:!0,contains:[{className:"string",begin:'"',end:'"'},{className:"variable",begin:"[A-Za-z_][A-Za-z_0-9]*"}]}]}]}}},function(e,t){e.exports=function(e){var t="([\\w-]+|@{[\\w-]+})",n=[],r=[],o=function(e){return{className:"string",begin:"~?"+e+".*?"+e}},i=function(e,t,n){return{className:e,begin:t,relevance:n}},a={begin:"\\(",end:"\\)",contains:r,relevance:0};r.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,o("'"),o('"'),e.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},i("number","#[0-9A-Fa-f]+\\b"),a,i("variable","@@?[\\w-]+",10),i("variable","@{[\\w-]+}"),i("built_in","~?`[^`]*?`"),{className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0},{className:"meta",begin:"!important"});var s=r.concat({begin:"{",end:"}",contains:n}),l={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(r)},u={begin:t+"\\s*:",returnBegin:!0,end:"[;}]",relevance:0,contains:[{className:"attribute",begin:t,end:":",excludeEnd:!0,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:r}}]},c={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",returnEnd:!0,contains:r,relevance:0}},f={className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:s}},d={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:t,end:"{"}],returnBegin:!0,returnEnd:!0,illegal:"[<='$\"]",relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,l,i("keyword","all\\b"),i("variable","@{[\\w-]+}"),i("selector-tag",t+"%?",0),i("selector-id","#"+t),i("selector-class","\\."+t,0),i("selector-tag","&",0),{className:"selector-attr",begin:"\\[",end:"\\]"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"\\(",end:"\\)",contains:s},{begin:"!important"}]};return n.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,c,f,u,d),{case_insensitive:!0,illegal:"[=>'/<($\"]",contains:n}}},function(e,t){e.exports=function(e){var t="[a-zA-Z_\\-\\+\\*\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\/\\<\\=\\>\\&\\#!]*",n="(\\-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|\\-)?\\d+)?",r={className:"literal",begin:"\\b(t{1}|nil)\\b"},o={className:"number",variants:[{begin:n,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{begin:"#(c|C)\\("+n+" +"+n,end:"\\)"}]},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),a=e.COMMENT(";","$",{relevance:0}),s={begin:"\\*",end:"\\*"},l={className:"symbol",begin:"[:&]"+t},u={begin:t,relevance:0},c={begin:"\\|[^]*?\\|"},f={contains:[o,i,s,l,{begin:"\\(",end:"\\)",contains:["self",r,i,o,u]},u],variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{name:"quote"}},{begin:"'\\|[^]*?\\|"}]},d={variants:[{begin:"'"+t},{begin:"#'"+t+"(::"+t+")*"}]},p={begin:"\\(\\s*",end:"\\)"},m={endsWithParent:!0,relevance:0};return p.contains=[{className:"name",variants:[{begin:t},{begin:"\\|[^]*?\\|"}]},m],m.contains=[f,d,p,r,o,i,a,s,l,c,u],{illegal:/\S/,contains:[o,{className:"meta",begin:"^#!",end:"$"},r,i,a,f,d,p,u]}}},function(e,t){e.exports=function(e){var t={begin:"\\b[gtps][A-Z]+[A-Za-z0-9_\\-]*\\b|\\$_[A-Z]+",relevance:0},n=[e.C_BLOCK_COMMENT_MODE,e.HASH_COMMENT_MODE,e.COMMENT("--","$"),e.COMMENT("[^:]//","$")],r=e.inherit(e.TITLE_MODE,{variants:[{begin:"\\b_*rig[A-Z]+[A-Za-z0-9_\\-]*"},{begin:"\\b_[a-z0-9\\-]+"}]}),o=e.inherit(e.TITLE_MODE,{begin:"\\b([A-Za-z0-9_\\-]+)\\b"});return{case_insensitive:!1,keywords:{keyword:"$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph after byte bytes english the until http forever descending using line real8 with seventh for stdout finally element word words fourth before black ninth sixth characters chars stderr uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat end repeat URL in try into switch to words https token binfile each tenth as ticks tick system real4 by dateItems without char character ascending eighth whole dateTime numeric short first ftp integer abbreviated abbr abbrev private case while if div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within contains ends with begins the keys of keys",literal:"SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five quote empty one true return cr linefeed right backslash null seven tab three two RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK",built_in:"put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress constantNames cos date dateFormat decompress directories diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge millisec millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process combine constant convert create new alias folder directory decrypt delete variable word line folder directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime libURLSetStatusCallback load multiply socket prepare process post seek rel relative read from process rename replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop subtract union unload wait write"},contains:[t,{className:"keyword",begin:"\\bend\\sif\\b"},{className:"function",beginKeywords:"function",end:"$",contains:[t,o,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,r]},{className:"function",begin:"\\bend\\s+",end:"$",keywords:"end",contains:[o,r],relevance:0},{beginKeywords:"command on",end:"$",contains:[t,o,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,r]},{className:"meta",variants:[{begin:"<\\?(rev|lc|livecode)",relevance:10},{begin:"<\\?"},{begin:"\\?>"}]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,r].concat(n),illegal:";$|^\\[|^=|&|{"}}},function(e,t){e.exports=function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger case default function var with then unless until loop of by when and or is isnt not it that otherwise from to til fallthrough super case default function var void const let enum export import native __hasProp __extends __slice __bind __indexOf",literal:"true false null undefined yes no on off it that void",built_in:"npm require console print module global window document"},n="[A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*",r=e.inherit(e.TITLE_MODE,{begin:n}),o={className:"subst",begin:/#\{/,end:/}/,keywords:t},i={className:"subst",begin:/#[A-Za-z$_]/,end:/(?:\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/,keywords:t},a=[e.BINARY_NUMBER_MODE,{className:"number",begin:"(\\b0[xX][a-fA-F0-9_]+)|(\\b\\d(\\d|_\\d)*(\\.(\\d(\\d|_\\d)*)?)?(_*[eE]([-+]\\d(_\\d|\\d)*)?)?[_a-z]*)",relevance:0,starts:{end:"(\\s*/)?",relevance:0}},{className:"string",variants:[{begin:/'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,contains:[e.BACKSLASH_ESCAPE]},{begin:/"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,o,i]},{begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,o,i]},{begin:/\\/,end:/(\s|$)/,excludeEnd:!0}]},{className:"regexp",variants:[{begin:"//",end:"//[gim]*",contains:[o,e.HASH_COMMENT_MODE]},{begin:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{begin:"@"+n},{begin:"``",end:"``",excludeBegin:!0,excludeEnd:!0,subLanguage:"javascript"}];o.contains=a;var s={className:"params",begin:"\\(",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(a)}]};return{aliases:["ls"],keywords:t,illegal:/\/\*/,contains:a.concat([e.COMMENT("\\/\\*","\\*\\/"),e.HASH_COMMENT_MODE,{className:"function",contains:[r,s],returnBegin:!0,variants:[{begin:"("+n+"\\s*(?:=|:=)\\s*)?(\\(.*\\))?\\s*\\B\\->\\*?",end:"\\->\\*?"},{begin:"("+n+"\\s*(?:=|:=)\\s*)?!?(\\(.*\\))?\\s*\\B[-~]{1,2}>\\*?",end:"[-~]{1,2}>\\*?"},{begin:"("+n+"\\s*(?:=|:=)\\s*)?(\\(.*\\))?\\s*\\B!?[-~]{1,2}>\\*?",end:"!?[-~]{1,2}>\\*?"}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[r]},r]},{begin:n+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}}},function(e,t){e.exports=function(e){var t="([-a-zA-Z$._][\\w\\-$.]*)";return{keywords:"begin end true false declare define global constant private linker_private internal available_externally linkonce linkonce_odr weak weak_odr appending dllimport dllexport common default hidden protected extern_weak external thread_local zeroinitializer undef null to tail target triple datalayout volatile nuw nsw nnan ninf nsz arcp fast exact inbounds align addrspace section alias module asm sideeffect gc dbg linker_private_weak attributes blockaddress initialexec localdynamic localexec prefix unnamed_addr ccc fastcc coldcc x86_stdcallcc x86_fastcallcc arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel intel_ocl_bicc msp430_intrcc spir_func spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc cc c signext zeroext inreg sret nounwind noreturn noalias nocapture byval nest readnone readonly inlinehint noinline alwaysinline optsize ssp sspreq noredzone noimplicitfloat naked builtin cold nobuiltin noduplicate nonlazybind optnone returns_twice sanitize_address sanitize_memory sanitize_thread sspstrong uwtable returned type opaque eq ne slt sgt sle sge ult ugt ule uge oeq one olt ogt ole oge ord uno ueq une x acq_rel acquire alignstack atomic catch cleanup filter inteldialect max min monotonic nand personality release seq_cst singlethread umax umin unordered xchg add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr and or xor icmp fcmp phi call trunc zext sext fptrunc fpext uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast addrspacecast select va_arg ret br switch invoke unwind unreachable indirectbr landingpad resume malloc alloca free load store getelementptr extractelement insertelement shufflevector getresult extractvalue insertvalue atomicrmw cmpxchg fence argmemonly double",contains:[{className:"keyword",begin:"i\\d+"},e.COMMENT(";","\\n",{relevance:0}),e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:'"',end:'[^\\\\]"'}],relevance:0},{className:"title",variants:[{begin:"@"+t},{begin:"@\\d+"},{begin:"!"+t},{begin:"!\\d+"+t}]},{className:"symbol",variants:[{begin:"%"+t},{begin:"%\\d+"},{begin:"#\\d+"}]},{className:"number",variants:[{begin:"0[xX][a-fA-F0-9]+"},{begin:"-?\\d+(?:[.]\\d+)?(?:[eE][-+]?\\d+(?:[.]\\d+)?)?"}],relevance:0}]}}},function(e,t){e.exports=function(e){var t={className:"string",begin:'"',end:'"',contains:[{className:"subst",begin:/\\[tn"\\]/}]},n={className:"number",begin:e.C_NUMBER_RE};return{illegal:":",contains:[t,{className:"comment",variants:[e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/")]},n,{className:"section",variants:[{begin:"\\b(?:state|default)\\b"},{begin:"\\b(?:state_(?:entry|exit)|touch(?:_(?:start|end))?|(?:land_)?collision(?:_(?:start|end))?|timer|listen|(?:no_)?sensor|control|(?:not_)?at_(?:rot_)?target|money|email|experience_permissions(?:_denied)?|run_time_permissions|changed|attach|dataserver|moving_(?:start|end)|link_message|(?:on|object)_rez|remote_data|http_re(?:sponse|quest)|path_update|transaction_result)\\b"}]},{className:"built_in",begin:"\\b(?:ll(?:AgentInExperience|(?:Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(?:Details|ErrorMessage)|ReturnObjectsBy(?:ID|Owner)|Json(?:2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(?:Mag|Norm|Dist)|Rot(?:Between|2(?:Euler|Fwd|Left|Up))|(?:Euler|Axes)2Rot|Whisper|(?:Region|Owner)?Say|Shout|Listen(?:Control|Remove)?|Sensor(?:Repeat|Remove)?|Detected(?:Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|(?:[GS]et)(?:AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(?:Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(?:Scale|Offset|Rotate)Texture|(?:Rot)?Target(?:Remove)?|(?:Stop)?MoveToTarget|Apply(?:Rotational)?Impulse|Set(?:KeyframedMotion|ContentType|RegionPos|(?:Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(?:Queueing|Radius)|Vehicle(?:Type|(?:Float|Vector|Rotation)Param)|(?:Touch|Sit)?Text|Camera(?:Eye|At)Offset|PrimitiveParams|ClickAction|Link(?:Alpha|Color|PrimitiveParams(?:Fast)?|Texture(?:Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get(?:(?:Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(?:PrimitiveParams|Number(?:OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(?:Details|PermMask|PrimCount)|Parcel(?:MaxPrims|Details|Prim(?:Count|Owners))|Attached(?:List)?|(?:SPMax|Free|Used)Memory|Region(?:Name|TimeDilation|FPS|Corner|AgentCount)|Root(?:Position|Rotation)|UnixTime|(?:Parcel|Region)Flags|(?:Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(?:Prims|NotecardLines|Sides)|Animation(?:List)?|(?:Camera|Local)(?:Pos|Rot)|Vel|Accel|Omega|Time(?:stamp|OfDay)|(?:Object|CenterOf)?Mass|MassMKS|Energy|Owner|(?:Owner)?Key|SunDirection|Texture(?:Offset|Scale|Rot)|Inventory(?:Number|Name|Key|Type|Creator|PermMask)|Permissions(?:Key)?|StartParameter|List(?:Length|EntryType)|Date|Agent(?:Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(?:Name|State))|(?:Get|Reset|GetAndReset)Time|PlaySound(?:Slave)?|LoopSound(?:Master|Slave)?|(?:Trigger|Stop|Preload)Sound|(?:(?:Get|Delete)Sub|Insert)String|To(?:Upper|Lower)|Give(?:InventoryList|Money)|RezObject|(?:Stop)?LookAt|Sleep|CollisionFilter|(?:Take|Release)Controls|DetachFromAvatar|AttachToAvatar(?:Temp)?|InstantMessage|(?:GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(?:Length|Trim)|(?:Start|Stop)Animation|TargetOmega|Request(?:Experience)?Permissions|(?:Create|Break)Link|BreakAllLinks|(?:Give|Remove)Inventory|Water|PassTouches|Request(?:Agent|Inventory)Data|TeleportAgent(?:Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(?:Axis|Angle)|A(?:cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(?:CSV|Integer|Json|Float|String|Key|Vector|Rot|List(?:Strided)?)|DeleteSubList|List(?:Statistics|Sort|Randomize|(?:Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(?:CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(?:Slope|Normal|Contour)|GroundRepel|(?:Set|Remove)VehicleFlags|(?:AvatarOn)?(?:Link)?SitTarget|Script(?:Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(?:Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(?:Integer|String)ToBase64|XorBase64|Log(?:10)?|Base64To(?:String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(?:Load|Release|(?:E|Une)scape)URL|ParcelMedia(?:CommandList|Query)|ModPow|MapDestination|(?:RemoveFrom|AddTo|Reset)Land(?:Pass|Ban)List|(?:Set|Clear)CameraParams|HTTP(?:Request|Response)|TextBox|DetectedTouch(?:UV|Face|Pos|(?:N|Bin)ormal|ST)|(?:MD5|SHA1|DumpList2)String|Request(?:Secure)?URL|Clear(?:Prim|Link)Media|(?:Link)?ParticleSystem|(?:Get|Request)(?:Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(?:Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\b"},{className:"literal",variants:[{begin:"\\b(?:PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\b"},{begin:"\\b(?:XP_ERROR_(?:EXPERIENCES_DISABLED|EXPERIENCE_(?:DISABLED|SUSPENDED)|INVALID_(?:EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(?:FOUND|PERMITTED(?:_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(?:PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(?:_OBJECT)?|(?:DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(?:FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(?:_(?:BY_(?:LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(?:PARCEL(?:_OWNER)?|REGION)))?|CAMERA_(?:PITCH|DISTANCE|BEHINDNESS_(?:ANGLE|LAG)|(?:FOCUS|POSITION)(?:_(?:THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(?:ROOT|SET|ALL_(?:OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(?:IVE|_(?:ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(?:FWD|BACK|(?:ROT_)?(?:LEFT|RIGHT)|UP|DOWN|(?:ML_)?LBUTTON)|PERMISSION_(?:RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(?:CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(?:TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(?:INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(?:_START)?|TELEPORT|MEDIA)|OBJECT_(?:CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(?:PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_ON_REZ|NAME|DESC|POS|PRIM_(?:COUNT|EQUIVALENCE)|RETURN_(?:PARCEL(?:_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP|CREATOR|ATTACHED_POINT|RENDER_WEIGHT|(?:BODY_SHAPE|PATHFINDING)_TYPE|(?:RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(?:MEMORY|TIME))|TYPE_(?:INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(?:DEBUG|PUBLIC)_CHANNEL|ATTACH_(?:AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](?:SHOULDER|HAND|FOOT|EAR|EYE|[UL](?:ARM|LEG)|HIP)|(?:LEFT|RIGHT)_PEC|HUD_(?:CENTER_[12]|TOP_(?:RIGHT|CENTER|LEFT)|BOTTOM(?:_(?:RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(?:BASE|TIP)|[LR]WING|FACE_(?:JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(?:LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(?:ONLINE|NAME|BORN|SIM_(?:POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(?:ON_FILE|USED)|REMOTE_DATA_(?:CHANNEL|REQUEST|REPLY)|PSYS_(?:PART_(?:BF_(?:ZERO|ONE(?:_MINUS_(?:DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(?:START|END)_(?:COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(?:RIBBON|WIND|INTERP_(?:COLOR|SCALE)|BOUNCE|FOLLOW_(?:SRC|VELOCITY)|TARGET_(?:POS|LINEAR)|EMISSIVE)_MASK)|SRC_(?:MAX_AGE|PATTERN|ANGLE_(?:BEGIN|END)|BURST_(?:RATE|PART_COUNT|RADIUS|SPEED_(?:MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(?:DROP|EXPLODE|ANGLE(?:_CONE(?:_EMPTY)?)?)))|VEHICLE_(?:REFERENCE_FRAME|TYPE_(?:NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(?:LINEAR|ANGULAR)_(?:FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(?:HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(?:LINEAR|ANGULAR)_(?:DEFLECTION_(?:EFFICIENCY|TIMESCALE)|MOTOR_(?:DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(?:EFFICIENCY|TIMESCALE)|BANKING_(?:EFFICIENCY|MIX|TIMESCALE)|FLAG_(?:NO_DEFLECTION_UP|LIMIT_(?:ROLL_ONLY|MOTOR_UP)|HOVER_(?:(?:WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(?:STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(?:ALPHA_MODE(?:_(?:BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(?:_(?:BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(?:DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(?:_(?:STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(?:NONE|LOW|MEDIUM|HIGH)|BUMP_(?:NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(?:DEFAULT|PLANAR)|SCULPT_(?:TYPE_(?:SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(?:MIRROR|INVERT))|PHYSICS(?:_(?:SHAPE_(?:CONVEX|NONE|PRIM|TYPE)))?|(?:POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(?:ALT_IMAGE_ENABLE|CONTROLS|(?:CURRENT|HOME)_URL|AUTO_(?:LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(?:WIDTH|HEIGHT)_PIXELS|WHITELIST(?:_ENABLE)?|PERMS_(?:INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(?:STANDARD|MINI)|PERM_(?:NONE|OWNER|GROUP|ANYONE)|MAX_(?:URL_LENGTH|WHITELIST_(?:SIZE|COUNT)|(?:WIDTH|HEIGHT)_PIXELS)))|MASK_(?:BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(?:TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(?:MEDIA_COMMAND_(?:STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(?:ALLOW_(?:FLY|(?:GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(?:GROUP_)?OBJECTS)|USE_(?:ACCESS_(?:GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(?:GROUP|ALL)_OBJECT_ENTRY)|COUNT_(?:TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(?:NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(?:MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(?:_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(?:HIDE|DEFAULT)|REGION_FLAG_(?:ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(?:COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(?:METHOD|MIMETYPE|BODY_(?:MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|STRING_(?:TRIM(?:_(?:HEAD|TAIL))?)|CLICK_ACTION_(?:NONE|TOUCH|SIT|BUY|PAY|OPEN(?:_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(?:NONE|SCRIPT_MEMORY)|RC_(?:DATA_FLAGS|DETECT_PHANTOM|GET_(?:LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(?:TYPES|AGENTS|(?:NON)?PHYSICAL|LAND))|RCERR_(?:CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(?:ALLOWED_(?:AGENT|GROUP)_(?:ADD|REMOVE)|BANNED_AGENT_(?:ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(?:COMMAND|CMD_(?:PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(?:GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(?:CMD_(?:(?:SMOOTH_)?STOP|JUMP)|DESIRED_(?:TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(?:_(?:[ABCD]|NONE))?|MAX_(?:DECEL|TURN_RADIUS|(?:ACCEL|SPEED)))|PURSUIT_(?:OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(?:CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(?:EVADE_(?:HIDDEN|SPOTTED)|FAILURE_(?:DYNAMIC_PATHFINDING_DISABLED|INVALID_(?:GOAL|START)|NO_(?:NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(?:PARCEL_)?UNREACHABLE)|(?:GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(?:_(?:FAST|NONE|SLOW))?|CONTENT_TYPE_(?:ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(?:RADIUS|STATIC)|(?:PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(?:AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\b"},{begin:"\\b(?:FALSE|TRUE)\\b"},{begin:"\\b(?:ZERO_ROTATION)\\b"},{begin:"\\b(?:EOF|JSON_(?:ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(?:BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(?:GRANTED|DENIED))\\b"},{begin:"\\b(?:ZERO_VECTOR|TOUCH_INVALID_(?:TEXCOORD|VECTOR))\\b"}]},{className:"type",begin:"\\b(?:integer|float|string|key|vector|quaternion|rotation|list)\\b"}]}}},function(e,t){e.exports=function(e){var t={begin:"\\[=*\\[",end:"\\]=*\\]",contains:["self"]},n=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[","\\]=*\\]",{contains:[t],relevance:10})];return{lexemes:e.UNDERSCORE_IDENT_RE,keywords:{literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstringmodule next pairs pcall print rawequal rawget rawset require select setfenvsetmetatable tonumber tostring type unpack xpcall arg selfcoroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:n.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:n}].concat(n)},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"\\[=*\\[",end:"\\]=*\\]",contains:[t],relevance:5}])}}},function(e,t){e.exports=function(e){var t={className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t]},r={className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[t]},o={begin:"^"+e.UNDERSCORE_IDENT_RE+"\\s*[:+?]?=",illegal:"\\n",returnBegin:!0,contains:[{begin:"^"+e.UNDERSCORE_IDENT_RE,end:"[:+?]?=",excludeEnd:!0}]},i={className:"section",begin:/^[^\s]+:/,end:/$/,contains:[t]};return{aliases:["mk","mak"],keywords:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath",lexemes:/[\w-]+/,contains:[e.HASH_COMMENT_MODE,t,n,r,o,{className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{"meta-keyword":".PHONY"},lexemes:/[\.\w]+/},i]}}},function(e,t){e.exports=function(e){return{aliases:["mma"],lexemes:"(\\$|\\b)"+e.IDENT_RE+"\\b",keywords:"AbelianGroup Abort AbortKernels AbortProtect Above Abs Absolute AbsoluteCorrelation AbsoluteCorrelationFunction AbsoluteCurrentValue AbsoluteDashing AbsoluteFileName AbsoluteOptions AbsolutePointSize AbsoluteThickness AbsoluteTime AbsoluteTiming AccountingForm Accumulate Accuracy AccuracyGoal ActionDelay ActionMenu ActionMenuBox ActionMenuBoxOptions Active ActiveItem ActiveStyle AcyclicGraphQ AddOnHelpPath AddTo AdjacencyGraph AdjacencyList AdjacencyMatrix AdjustmentBox AdjustmentBoxOptions AdjustTimeSeriesForecast AffineTransform After AiryAi AiryAiPrime AiryAiZero AiryBi AiryBiPrime AiryBiZero AlgebraicIntegerQ AlgebraicNumber AlgebraicNumberDenominator AlgebraicNumberNorm AlgebraicNumberPolynomial AlgebraicNumberTrace AlgebraicRules AlgebraicRulesData Algebraics AlgebraicUnitQ Alignment AlignmentMarker AlignmentPoint All AllowedDimensions AllowGroupClose AllowInlineCells AllowKernelInitialization AllowReverseGroupClose AllowScriptLevelChange AlphaChannel AlternatingGroup AlternativeHypothesis Alternatives AmbientLight Analytic AnchoredSearch And AndersonDarlingTest AngerJ AngleBracket AngularGauge Animate AnimationCycleOffset AnimationCycleRepetitions AnimationDirection AnimationDisplayTime AnimationRate AnimationRepetitions AnimationRunning Animator AnimatorBox AnimatorBoxOptions AnimatorElements Annotation Annuity AnnuityDue Antialiasing Antisymmetric Apart ApartSquareFree Appearance AppearanceElements AppellF1 Append AppendTo Apply ArcCos ArcCosh ArcCot ArcCoth ArcCsc ArcCsch ArcSec ArcSech ArcSin ArcSinDistribution ArcSinh ArcTan ArcTanh Arg ArgMax ArgMin ArgumentCountQ ARIMAProcess ArithmeticGeometricMean ARMAProcess ARProcess Array ArrayComponents ArrayDepth ArrayFlatten ArrayPad ArrayPlot ArrayQ ArrayReshape ArrayRules Arrays Arrow Arrow3DBox ArrowBox Arrowheads AspectRatio AspectRatioFixed Assert Assuming Assumptions AstronomicalData Asynchronous AsynchronousTaskObject AsynchronousTasks AtomQ Attributes AugmentedSymmetricPolynomial AutoAction AutoDelete AutoEvaluateEvents AutoGeneratedPackage AutoIndent AutoIndentSpacings AutoItalicWords AutoloadPath AutoMatch Automatic AutomaticImageSize AutoMultiplicationSymbol AutoNumberFormatting AutoOpenNotebooks AutoOpenPalettes AutorunSequencing AutoScaling AutoScroll AutoSpacing AutoStyleOptions AutoStyleWords Axes AxesEdge AxesLabel AxesOrigin AxesStyle Axis BabyMonsterGroupB Back Background BackgroundTasksSettings Backslash Backsubstitution Backward Band BandpassFilter BandstopFilter BarabasiAlbertGraphDistribution BarChart BarChart3D BarLegend BarlowProschanImportance BarnesG BarOrigin BarSpacing BartlettHannWindow BartlettWindow BaseForm Baseline BaselinePosition BaseStyle BatesDistribution BattleLemarieWavelet Because BeckmannDistribution Beep Before Begin BeginDialogPacket BeginFrontEndInteractionPacket BeginPackage BellB BellY Below BenfordDistribution BeniniDistribution BenktanderGibratDistribution BenktanderWeibullDistribution BernoulliB BernoulliDistribution BernoulliGraphDistribution BernoulliProcess BernsteinBasis BesselFilterModel BesselI BesselJ BesselJZero BesselK BesselY BesselYZero Beta BetaBinomialDistribution BetaDistribution BetaNegativeBinomialDistribution BetaPrimeDistribution BetaRegularized BetweennessCentrality BezierCurve BezierCurve3DBox BezierCurve3DBoxOptions BezierCurveBox BezierCurveBoxOptions BezierFunction BilateralFilter Binarize BinaryFormat BinaryImageQ BinaryRead BinaryReadList BinaryWrite BinCounts BinLists Binomial BinomialDistribution BinomialProcess BinormalDistribution BiorthogonalSplineWavelet BipartiteGraphQ BirnbaumImportance BirnbaumSaundersDistribution BitAnd BitClear BitGet BitLength BitNot BitOr BitSet BitShiftLeft BitShiftRight BitXor Black BlackmanHarrisWindow BlackmanNuttallWindow BlackmanWindow Blank BlankForm BlankNullSequence BlankSequence Blend Block BlockRandom BlomqvistBeta BlomqvistBetaTest Blue Blur BodePlot BohmanWindow Bold Bookmarks Boole BooleanConsecutiveFunction BooleanConvert BooleanCountingFunction BooleanFunction BooleanGraph BooleanMaxterms BooleanMinimize BooleanMinterms Booleans BooleanTable BooleanVariables BorderDimensions BorelTannerDistribution Bottom BottomHatTransform BoundaryStyle Bounds Box BoxBaselineShift BoxData BoxDimensions Boxed Boxes BoxForm BoxFormFormatTypes BoxFrame BoxID BoxMargins BoxMatrix BoxRatios BoxRotation BoxRotationPoint BoxStyle BoxWhiskerChart Bra BracketingBar BraKet BrayCurtisDistance BreadthFirstScan Break Brown BrownForsytheTest BrownianBridgeProcess BrowserCategory BSplineBasis BSplineCurve BSplineCurve3DBox BSplineCurveBox BSplineCurveBoxOptions BSplineFunction BSplineSurface BSplineSurface3DBox BubbleChart BubbleChart3D BubbleScale BubbleSizes BulletGauge BusinessDayQ ButterflyGraph ButterworthFilterModel Button ButtonBar ButtonBox ButtonBoxOptions ButtonCell ButtonContents ButtonData ButtonEvaluator ButtonExpandable ButtonFrame ButtonFunction ButtonMargins ButtonMinHeight ButtonNote ButtonNotebook ButtonSource ButtonStyle ButtonStyleMenuListing Byte ByteCount ByteOrdering C CachedValue CacheGraphics CalendarData CalendarType CallPacket CanberraDistance Cancel CancelButton CandlestickChart Cap CapForm CapitalDifferentialD CardinalBSplineBasis CarmichaelLambda Cases Cashflow Casoratian Catalan CatalanNumber Catch CauchyDistribution CauchyWindow CayleyGraph CDF CDFDeploy CDFInformation CDFWavelet Ceiling Cell CellAutoOverwrite CellBaseline CellBoundingBox CellBracketOptions CellChangeTimes CellContents CellContext CellDingbat CellDynamicExpression CellEditDuplicate CellElementsBoundingBox CellElementSpacings CellEpilog CellEvaluationDuplicate CellEvaluationFunction CellEventActions CellFrame CellFrameColor CellFrameLabelMargins CellFrameLabels CellFrameMargins CellGroup CellGroupData CellGrouping CellGroupingRules CellHorizontalScrolling CellID CellLabel CellLabelAutoDelete CellLabelMargins CellLabelPositioning CellMargins CellObject CellOpen CellPrint CellProlog Cells CellSize CellStyle CellTags CellularAutomaton CensoredDistribution Censoring Center CenterDot CentralMoment CentralMomentGeneratingFunction CForm ChampernowneNumber ChanVeseBinarize Character CharacterEncoding CharacterEncodingsPath CharacteristicFunction CharacteristicPolynomial CharacterRange Characters ChartBaseStyle ChartElementData ChartElementDataFunction ChartElementFunction ChartElements ChartLabels ChartLayout ChartLegends ChartStyle Chebyshev1FilterModel Chebyshev2FilterModel ChebyshevDistance ChebyshevT ChebyshevU Check CheckAbort CheckAll Checkbox CheckboxBar CheckboxBox CheckboxBoxOptions ChemicalData ChessboardDistance ChiDistribution ChineseRemainder ChiSquareDistribution ChoiceButtons ChoiceDialog CholeskyDecomposition Chop Circle CircleBox CircleDot CircleMinus CirclePlus CircleTimes CirculantGraph CityData Clear ClearAll ClearAttributes ClearSystemCache ClebschGordan ClickPane Clip ClipboardNotebook ClipFill ClippingStyle ClipPlanes ClipRange Clock ClockGauge ClockwiseContourIntegral Close Closed CloseKernels ClosenessCentrality Closing ClosingAutoSave ClosingEvent ClusteringComponents CMYKColor Coarse Coefficient CoefficientArrays CoefficientDomain CoefficientList CoefficientRules CoifletWavelet Collect Colon ColonForm ColorCombine ColorConvert ColorData ColorDataFunction ColorFunction ColorFunctionScaling Colorize ColorNegate ColorOutput ColorProfileData ColorQuantize ColorReplace ColorRules ColorSelectorSettings ColorSeparate ColorSetter ColorSetterBox ColorSetterBoxOptions ColorSlider ColorSpace Column ColumnAlignments ColumnBackgrounds ColumnForm ColumnLines ColumnsEqual ColumnSpacings ColumnWidths CommonDefaultFormatTypes Commonest CommonestFilter CommonUnits CommunityBoundaryStyle CommunityGraphPlot CommunityLabels CommunityRegionStyle CompatibleUnitQ CompilationOptions CompilationTarget Compile Compiled CompiledFunction Complement CompleteGraph CompleteGraphQ CompleteKaryTree CompletionsListPacket Complex Complexes ComplexExpand ComplexInfinity ComplexityFunction ComponentMeasurements ComponentwiseContextMenu Compose ComposeList ComposeSeries Composition CompoundExpression CompoundPoissonDistribution CompoundPoissonProcess CompoundRenewalProcess Compress CompressedData Condition ConditionalExpression Conditioned Cone ConeBox ConfidenceLevel ConfidenceRange ConfidenceTransform ConfigurationPath Congruent Conjugate ConjugateTranspose Conjunction Connect ConnectedComponents ConnectedGraphQ ConnesWindow ConoverTest ConsoleMessage ConsoleMessagePacket ConsolePrint Constant ConstantArray Constants ConstrainedMax ConstrainedMin ContentPadding ContentsBoundingBox ContentSelectable ContentSize Context ContextMenu Contexts ContextToFilename ContextToFileName Continuation Continue ContinuedFraction ContinuedFractionK ContinuousAction ContinuousMarkovProcess ContinuousTimeModelQ ContinuousWaveletData ContinuousWaveletTransform ContourDetect ContourGraphics ContourIntegral ContourLabels ContourLines ContourPlot ContourPlot3D Contours ContourShading ContourSmoothing ContourStyle ContraharmonicMean Control ControlActive ControlAlignment ControllabilityGramian ControllabilityMatrix ControllableDecomposition ControllableModelQ ControllerDuration ControllerInformation ControllerInformationData ControllerLinking ControllerManipulate ControllerMethod ControllerPath ControllerState ControlPlacement ControlsRendering ControlType Convergents ConversionOptions ConversionRules ConvertToBitmapPacket ConvertToPostScript ConvertToPostScriptPacket Convolve ConwayGroupCo1 ConwayGroupCo2 ConwayGroupCo3 CoordinateChartData CoordinatesToolOptions CoordinateTransform CoordinateTransformData CoprimeQ Coproduct CopulaDistribution Copyable CopyDirectory CopyFile CopyTag CopyToClipboard CornerFilter CornerNeighbors Correlation CorrelationDistance CorrelationFunction CorrelationTest Cos Cosh CoshIntegral CosineDistance CosineWindow CosIntegral Cot Coth Count CounterAssignments CounterBox CounterBoxOptions CounterClockwiseContourIntegral CounterEvaluator CounterFunction CounterIncrements CounterStyle CounterStyleMenuListing CountRoots CountryData Covariance CovarianceEstimatorFunction CovarianceFunction CoxianDistribution CoxIngersollRossProcess CoxModel CoxModelFit CramerVonMisesTest CreateArchive CreateDialog CreateDirectory CreateDocument CreateIntermediateDirectories CreatePalette CreatePalettePacket CreateScheduledTask CreateTemporary CreateWindow CriticalityFailureImportance CriticalitySuccessImportance CriticalSection Cross CrossingDetect CrossMatrix Csc Csch CubeRoot Cubics Cuboid CuboidBox Cumulant CumulantGeneratingFunction Cup CupCap Curl CurlyDoubleQuote CurlyQuote CurrentImage CurrentlySpeakingPacket CurrentValue CurvatureFlowFilter CurveClosed Cyan CycleGraph CycleIndexPolynomial Cycles CyclicGroup Cyclotomic Cylinder CylinderBox CylindricalDecomposition D DagumDistribution DamerauLevenshteinDistance DampingFactor Darker Dashed Dashing DataCompression DataDistribution DataRange DataReversed Date DateDelimiters DateDifference DateFunction DateList DateListLogPlot DateListPlot DatePattern DatePlus DateRange DateString DateTicksFormat DaubechiesWavelet DavisDistribution DawsonF DayCount DayCountConvention DayMatchQ DayName DayPlus DayRange DayRound DeBruijnGraph Debug DebugTag Decimal DeclareKnownSymbols DeclarePackage Decompose Decrement DedekindEta Default DefaultAxesStyle DefaultBaseStyle DefaultBoxStyle DefaultButton DefaultColor DefaultControlPlacement DefaultDuplicateCellStyle DefaultDuration DefaultElement DefaultFaceGridsStyle DefaultFieldHintStyle DefaultFont DefaultFontProperties DefaultFormatType DefaultFormatTypeForStyle DefaultFrameStyle DefaultFrameTicksStyle DefaultGridLinesStyle DefaultInlineFormatType DefaultInputFormatType DefaultLabelStyle DefaultMenuStyle DefaultNaturalLanguage DefaultNewCellStyle DefaultNewInlineCellStyle DefaultNotebook DefaultOptions DefaultOutputFormatType DefaultStyle DefaultStyleDefinitions DefaultTextFormatType DefaultTextInlineFormatType DefaultTicksStyle DefaultTooltipStyle DefaultValues Defer DefineExternal DefineInputStreamMethod DefineOutputStreamMethod Definition Degree DegreeCentrality DegreeGraphDistribution DegreeLexicographic DegreeReverseLexicographic Deinitialization Del Deletable Delete DeleteBorderComponents DeleteCases DeleteContents DeleteDirectory DeleteDuplicates DeleteFile DeleteSmallComponents DeleteWithContents DeletionWarning Delimiter DelimiterFlashTime DelimiterMatching Delimiters Denominator DensityGraphics DensityHistogram DensityPlot DependentVariables Deploy Deployed Depth DepthFirstScan Derivative DerivativeFilter DescriptorStateSpace DesignMatrix Det DGaussianWavelet DiacriticalPositioning Diagonal DiagonalMatrix Dialog DialogIndent DialogInput DialogLevel DialogNotebook DialogProlog DialogReturn DialogSymbols Diamond DiamondMatrix DiceDissimilarity DictionaryLookup DifferenceDelta DifferenceOrder DifferenceRoot DifferenceRootReduce Differences DifferentialD DifferentialRoot DifferentialRootReduce DifferentiatorFilter DigitBlock DigitBlockMinimum DigitCharacter DigitCount DigitQ DihedralGroup Dilation Dimensions DiracComb DiracDelta DirectedEdge DirectedEdges DirectedGraph DirectedGraphQ DirectedInfinity Direction Directive Directory DirectoryName DirectoryQ DirectoryStack DirichletCharacter DirichletConvolve DirichletDistribution DirichletL DirichletTransform DirichletWindow DisableConsolePrintPacket DiscreteChirpZTransform DiscreteConvolve DiscreteDelta DiscreteHadamardTransform DiscreteIndicator DiscreteLQEstimatorGains DiscreteLQRegulatorGains DiscreteLyapunovSolve DiscreteMarkovProcess DiscretePlot DiscretePlot3D DiscreteRatio DiscreteRiccatiSolve DiscreteShift DiscreteTimeModelQ DiscreteUniformDistribution DiscreteVariables DiscreteWaveletData DiscreteWaveletPacketTransform DiscreteWaveletTransform Discriminant Disjunction Disk DiskBox DiskMatrix Dispatch DispersionEstimatorFunction Display DisplayAllSteps DisplayEndPacket DisplayFlushImagePacket DisplayForm DisplayFunction DisplayPacket DisplayRules DisplaySetSizePacket DisplayString DisplayTemporary DisplayWith DisplayWithRef DisplayWithVariable DistanceFunction DistanceTransform Distribute Distributed DistributedContexts DistributeDefinitions DistributionChart DistributionDomain DistributionFitTest DistributionParameterAssumptions DistributionParameterQ Dithering Div Divergence Divide DivideBy Dividers Divisible Divisors DivisorSigma DivisorSum DMSList DMSString Do DockedCells DocumentNotebook DominantColors DOSTextFormat Dot DotDashed DotEqual Dotted DoubleBracketingBar DoubleContourIntegral DoubleDownArrow DoubleLeftArrow DoubleLeftRightArrow DoubleLeftTee DoubleLongLeftArrow DoubleLongLeftRightArrow DoubleLongRightArrow DoubleRightArrow DoubleRightTee DoubleUpArrow DoubleUpDownArrow DoubleVerticalBar DoublyInfinite Down DownArrow DownArrowBar DownArrowUpArrow DownLeftRightVector DownLeftTeeVector DownLeftVector DownLeftVectorBar DownRightTeeVector DownRightVector DownRightVectorBar Downsample DownTee DownTeeArrow DownValues DragAndDrop DrawEdges DrawFrontFaces DrawHighlighted Drop DSolve Dt DualLinearProgramming DualSystemsModel DumpGet DumpSave DuplicateFreeQ Dynamic DynamicBox DynamicBoxOptions DynamicEvaluationTimeout DynamicLocation DynamicModule DynamicModuleBox DynamicModuleBoxOptions DynamicModuleParent DynamicModuleValues DynamicName DynamicNamespace DynamicReference DynamicSetting DynamicUpdating DynamicWrapper DynamicWrapperBox DynamicWrapperBoxOptions E EccentricityCentrality EdgeAdd EdgeBetweennessCentrality EdgeCapacity EdgeCapForm EdgeColor EdgeConnectivity EdgeCost EdgeCount EdgeCoverQ EdgeDashing EdgeDelete EdgeDetect EdgeForm EdgeIndex EdgeJoinForm EdgeLabeling EdgeLabels EdgeLabelStyle EdgeList EdgeOpacity EdgeQ EdgeRenderingFunction EdgeRules EdgeShapeFunction EdgeStyle EdgeThickness EdgeWeight Editable EditButtonSettings EditCellTagsSettings EditDistance EffectiveInterest Eigensystem Eigenvalues EigenvectorCentrality Eigenvectors Element ElementData Eliminate EliminationOrder EllipticE EllipticExp EllipticExpPrime EllipticF EllipticFilterModel EllipticK EllipticLog EllipticNomeQ EllipticPi EllipticReducedHalfPeriods EllipticTheta EllipticThetaPrime EmitSound EmphasizeSyntaxErrors EmpiricalDistribution Empty EmptyGraphQ EnableConsolePrintPacket Enabled Encode End EndAdd EndDialogPacket EndFrontEndInteractionPacket EndOfFile EndOfLine EndOfString EndPackage EngineeringForm Enter EnterExpressionPacket EnterTextPacket Entropy EntropyFilter Environment Epilog Equal EqualColumns EqualRows EqualTilde EquatedTo Equilibrium EquirippleFilterKernel Equivalent Erf Erfc Erfi ErlangB ErlangC ErlangDistribution Erosion ErrorBox ErrorBoxOptions ErrorNorm ErrorPacket ErrorsDialogSettings EstimatedDistribution EstimatedProcess EstimatorGains EstimatorRegulator EuclideanDistance EulerE EulerGamma EulerianGraphQ EulerPhi Evaluatable Evaluate Evaluated EvaluatePacket EvaluationCell EvaluationCompletionAction EvaluationElements EvaluationMode EvaluationMonitor EvaluationNotebook EvaluationObject EvaluationOrder Evaluator EvaluatorNames EvenQ EventData EventEvaluator EventHandler EventHandlerTag EventLabels ExactBlackmanWindow ExactNumberQ ExactRootIsolation ExampleData Except ExcludedForms ExcludePods Exclusions ExclusionsStyle Exists Exit ExitDialog Exp Expand ExpandAll ExpandDenominator ExpandFileName ExpandNumerator Expectation ExpectationE ExpectedValue ExpGammaDistribution ExpIntegralE ExpIntegralEi Exponent ExponentFunction ExponentialDistribution ExponentialFamily ExponentialGeneratingFunction ExponentialMovingAverage ExponentialPowerDistribution ExponentPosition ExponentStep Export ExportAutoReplacements ExportPacket ExportString Expression ExpressionCell ExpressionPacket ExpToTrig ExtendedGCD Extension ExtentElementFunction ExtentMarkers ExtentSize ExternalCall ExternalDataCharacterEncoding Extract ExtractArchive ExtremeValueDistribution FaceForm FaceGrids FaceGridsStyle Factor FactorComplete Factorial Factorial2 FactorialMoment FactorialMomentGeneratingFunction FactorialPower FactorInteger FactorList FactorSquareFree FactorSquareFreeList FactorTerms FactorTermsList Fail FailureDistribution False FARIMAProcess FEDisableConsolePrintPacket FeedbackSector FeedbackSectorStyle FeedbackType FEEnableConsolePrintPacket Fibonacci FieldHint FieldHintStyle FieldMasked FieldSize File FileBaseName FileByteCount FileDate FileExistsQ FileExtension FileFormat FileHash FileInformation FileName FileNameDepth FileNameDialogSettings FileNameDrop FileNameJoin FileNames FileNameSetter FileNameSplit FileNameTake FilePrint FileType FilledCurve FilledCurveBox Filling FillingStyle FillingTransform FilterRules FinancialBond FinancialData FinancialDerivative FinancialIndicator Find FindArgMax FindArgMin FindClique FindClusters FindCurvePath FindDistributionParameters FindDivisions FindEdgeCover FindEdgeCut FindEulerianCycle FindFaces FindFile FindFit FindGeneratingFunction FindGeoLocation FindGeometricTransform FindGraphCommunities FindGraphIsomorphism FindGraphPartition FindHamiltonianCycle FindIndependentEdgeSet FindIndependentVertexSet FindInstance FindIntegerNullVector FindKClan FindKClique FindKClub FindKPlex FindLibrary FindLinearRecurrence FindList FindMaximum FindMaximumFlow FindMaxValue FindMinimum FindMinimumCostFlow FindMinimumCut FindMinValue FindPermutation FindPostmanTour FindProcessParameters FindRoot FindSequenceFunction FindSettings FindShortestPath FindShortestTour FindThreshold FindVertexCover FindVertexCut Fine FinishDynamic FiniteAbelianGroupCount FiniteGroupCount FiniteGroupData First FirstPassageTimeDistribution FischerGroupFi22 FischerGroupFi23 FischerGroupFi24Prime FisherHypergeometricDistribution FisherRatioTest FisherZDistribution Fit FitAll FittedModel FixedPoint FixedPointList FlashSelection Flat Flatten FlattenAt FlatTopWindow FlipView Floor FlushPrintOutputPacket Fold FoldList Font FontColor FontFamily FontForm FontName FontOpacity FontPostScriptName FontProperties FontReencoding FontSize FontSlant FontSubstitutions FontTracking FontVariations FontWeight For ForAll Format FormatRules FormatType FormatTypeAutoConvert FormatValues FormBox FormBoxOptions FortranForm Forward ForwardBackward Fourier FourierCoefficient FourierCosCoefficient FourierCosSeries FourierCosTransform FourierDCT FourierDCTFilter FourierDCTMatrix FourierDST FourierDSTMatrix FourierMatrix FourierParameters FourierSequenceTransform FourierSeries FourierSinCoefficient FourierSinSeries FourierSinTransform FourierTransform FourierTrigSeries FractionalBrownianMotionProcess FractionalPart FractionBox FractionBoxOptions FractionLine Frame FrameBox FrameBoxOptions Framed FrameInset FrameLabel Frameless FrameMargins FrameStyle FrameTicks FrameTicksStyle FRatioDistribution FrechetDistribution FreeQ FrequencySamplingFilterKernel FresnelC FresnelS Friday FrobeniusNumber FrobeniusSolve FromCharacterCode FromCoefficientRules FromContinuedFraction FromDate FromDigits FromDMS Front FrontEndDynamicExpression FrontEndEventActions FrontEndExecute FrontEndObject FrontEndResource FrontEndResourceString FrontEndStackSize FrontEndToken FrontEndTokenExecute FrontEndValueCache FrontEndVersion FrontFaceColor FrontFaceOpacity Full FullAxes FullDefinition FullForm FullGraphics FullOptions FullSimplify Function FunctionExpand FunctionInterpolation FunctionSpace FussellVeselyImportance GaborFilter GaborMatrix GaborWavelet GainMargins GainPhaseMargins Gamma GammaDistribution GammaRegularized GapPenalty Gather GatherBy GaugeFaceElementFunction GaugeFaceStyle GaugeFrameElementFunction GaugeFrameSize GaugeFrameStyle GaugeLabels GaugeMarkers GaugeStyle GaussianFilter GaussianIntegers GaussianMatrix GaussianWindow GCD GegenbauerC General GeneralizedLinearModelFit GenerateConditions GeneratedCell GeneratedParameters GeneratingFunction Generic GenericCylindricalDecomposition GenomeData GenomeLookup GeodesicClosing GeodesicDilation GeodesicErosion GeodesicOpening GeoDestination GeodesyData GeoDirection GeoDistance GeoGridPosition GeometricBrownianMotionProcess GeometricDistribution GeometricMean GeometricMeanFilter GeometricTransformation GeometricTransformation3DBox GeometricTransformation3DBoxOptions GeometricTransformationBox GeometricTransformationBoxOptions GeoPosition GeoPositionENU GeoPositionXYZ GeoProjectionData GestureHandler GestureHandlerTag Get GetBoundingBoxSizePacket GetContext GetEnvironment GetFileName GetFrontEndOptionsDataPacket GetLinebreakInformationPacket GetMenusPacket GetPageBreakInformationPacket Glaisher GlobalClusteringCoefficient GlobalPreferences GlobalSession Glow GoldenRatio GompertzMakehamDistribution GoodmanKruskalGamma GoodmanKruskalGammaTest Goto Grad Gradient GradientFilter GradientOrientationFilter Graph GraphAssortativity GraphCenter GraphComplement GraphData GraphDensity GraphDiameter GraphDifference GraphDisjointUnion GraphDistance GraphDistanceMatrix GraphElementData GraphEmbedding GraphHighlight GraphHighlightStyle GraphHub Graphics Graphics3D Graphics3DBox Graphics3DBoxOptions GraphicsArray GraphicsBaseline GraphicsBox GraphicsBoxOptions GraphicsColor GraphicsColumn GraphicsComplex GraphicsComplex3DBox GraphicsComplex3DBoxOptions GraphicsComplexBox GraphicsComplexBoxOptions GraphicsContents GraphicsData GraphicsGrid GraphicsGridBox GraphicsGroup GraphicsGroup3DBox GraphicsGroup3DBoxOptions GraphicsGroupBox GraphicsGroupBoxOptions GraphicsGrouping GraphicsHighlightColor GraphicsRow GraphicsSpacing GraphicsStyle GraphIntersection GraphLayout GraphLinkEfficiency GraphPeriphery GraphPlot GraphPlot3D GraphPower GraphPropertyDistribution GraphQ GraphRadius GraphReciprocity GraphRoot GraphStyle GraphUnion Gray GrayLevel GreatCircleDistance Greater GreaterEqual GreaterEqualLess GreaterFullEqual GreaterGreater GreaterLess GreaterSlantEqual GreaterTilde Green Grid GridBaseline GridBox GridBoxAlignment GridBoxBackground GridBoxDividers GridBoxFrame GridBoxItemSize GridBoxItemStyle GridBoxOptions GridBoxSpacings GridCreationSettings GridDefaultElement GridElementStyleOptions GridFrame GridFrameMargins GridGraph GridLines GridLinesStyle GroebnerBasis GroupActionBase GroupCentralizer GroupElementFromWord GroupElementPosition GroupElementQ GroupElements GroupElementToWord GroupGenerators GroupMultiplicationTable GroupOrbits GroupOrder GroupPageBreakWithin GroupSetwiseStabilizer GroupStabilizer GroupStabilizerChain Gudermannian GumbelDistribution HaarWavelet HadamardMatrix HalfNormalDistribution HamiltonianGraphQ HammingDistance HammingWindow HankelH1 HankelH2 HankelMatrix HannPoissonWindow HannWindow HaradaNortonGroupHN HararyGraph HarmonicMean HarmonicMeanFilter HarmonicNumber Hash HashTable Haversine HazardFunction Head HeadCompose Heads HeavisideLambda HeavisidePi HeavisideTheta HeldGroupHe HeldPart HelpBrowserLookup HelpBrowserNotebook HelpBrowserSettings HermiteDecomposition HermiteH HermitianMatrixQ HessenbergDecomposition Hessian HexadecimalCharacter Hexahedron HexahedronBox HexahedronBoxOptions HiddenSurface HighlightGraph HighlightImage HighpassFilter HigmanSimsGroupHS HilbertFilter HilbertMatrix Histogram Histogram3D HistogramDistribution HistogramList HistogramTransform HistogramTransformInterpolation HitMissTransform HITSCentrality HodgeDual HoeffdingD HoeffdingDTest Hold HoldAll HoldAllComplete HoldComplete HoldFirst HoldForm HoldPattern HoldRest HolidayCalendar HomeDirectory HomePage Horizontal HorizontalForm HorizontalGauge HorizontalScrollPosition HornerForm HotellingTSquareDistribution HoytDistribution HTMLSave Hue HumpDownHump HumpEqual HurwitzLerchPhi HurwitzZeta HyperbolicDistribution HypercubeGraph HyperexponentialDistribution Hyperfactorial Hypergeometric0F1 Hypergeometric0F1Regularized Hypergeometric1F1 Hypergeometric1F1Regularized Hypergeometric2F1 Hypergeometric2F1Regularized HypergeometricDistribution HypergeometricPFQ HypergeometricPFQRegularized HypergeometricU Hyperlink HyperlinkCreationSettings Hyphenation HyphenationOptions HypoexponentialDistribution HypothesisTestData I Identity IdentityMatrix If IgnoreCase Im Image Image3D Image3DSlices ImageAccumulate ImageAdd ImageAdjust ImageAlign ImageApply ImageAspectRatio ImageAssemble ImageCache ImageCacheValid ImageCapture ImageChannels ImageClip ImageColorSpace ImageCompose ImageConvolve ImageCooccurrence ImageCorners ImageCorrelate ImageCorrespondingPoints ImageCrop ImageData ImageDataPacket ImageDeconvolve ImageDemosaic ImageDifference ImageDimensions ImageDistance ImageEffect ImageFeatureTrack ImageFileApply ImageFileFilter ImageFileScan ImageFilter ImageForestingComponents ImageForwardTransformation ImageHistogram ImageKeypoints ImageLevels ImageLines ImageMargins ImageMarkers ImageMeasurements ImageMultiply ImageOffset ImagePad ImagePadding ImagePartition ImagePeriodogram ImagePerspectiveTransformation ImageQ ImageRangeCache ImageReflect ImageRegion ImageResize ImageResolution ImageRotate ImageRotated ImageScaled ImageScan ImageSize ImageSizeAction ImageSizeCache ImageSizeMultipliers ImageSizeRaw ImageSubtract ImageTake ImageTransformation ImageTrim ImageType ImageValue ImageValuePositions Implies Import ImportAutoReplacements ImportString ImprovementImportance In IncidenceGraph IncidenceList IncidenceMatrix IncludeConstantBasis IncludeFileExtension IncludePods IncludeSingularTerm Increment Indent IndentingNewlineSpacings IndentMaxFraction IndependenceTest IndependentEdgeSetQ IndependentUnit IndependentVertexSetQ Indeterminate IndexCreationOptions Indexed IndexGraph IndexTag Inequality InexactNumberQ InexactNumbers Infinity Infix Information Inherited InheritScope Initialization InitializationCell InitializationCellEvaluation InitializationCellWarning InlineCounterAssignments InlineCounterIncrements InlineRules Inner Inpaint Input InputAliases InputAssumptions InputAutoReplacements InputField InputFieldBox InputFieldBoxOptions InputForm InputGrouping InputNamePacket InputNotebook InputPacket InputSettings InputStream InputString InputStringPacket InputToBoxFormPacket Insert InsertionPointObject InsertResults Inset Inset3DBox Inset3DBoxOptions InsetBox InsetBoxOptions Install InstallService InString Integer IntegerDigits IntegerExponent IntegerLength IntegerPart IntegerPartitions IntegerQ Integers IntegerString Integral Integrate Interactive InteractiveTradingChart Interlaced Interleaving InternallyBalancedDecomposition InterpolatingFunction InterpolatingPolynomial Interpolation InterpolationOrder InterpolationPoints InterpolationPrecision Interpretation InterpretationBox InterpretationBoxOptions InterpretationFunction InterpretTemplate InterquartileRange Interrupt InterruptSettings Intersection Interval IntervalIntersection IntervalMemberQ IntervalUnion Inverse InverseBetaRegularized InverseCDF InverseChiSquareDistribution InverseContinuousWaveletTransform InverseDistanceTransform InverseEllipticNomeQ InverseErf InverseErfc InverseFourier InverseFourierCosTransform InverseFourierSequenceTransform InverseFourierSinTransform InverseFourierTransform InverseFunction InverseFunctions InverseGammaDistribution InverseGammaRegularized InverseGaussianDistribution InverseGudermannian InverseHaversine InverseJacobiCD InverseJacobiCN InverseJacobiCS InverseJacobiDC InverseJacobiDN InverseJacobiDS InverseJacobiNC InverseJacobiND InverseJacobiNS InverseJacobiSC InverseJacobiSD InverseJacobiSN InverseLaplaceTransform InversePermutation InverseRadon InverseSeries InverseSurvivalFunction InverseWaveletTransform InverseWeierstrassP InverseZTransform Invisible InvisibleApplication InvisibleTimes IrreduciblePolynomialQ IsolatingInterval IsomorphicGraphQ IsotopeData Italic Item ItemBox ItemBoxOptions ItemSize ItemStyle ItoProcess JaccardDissimilarity JacobiAmplitude Jacobian JacobiCD JacobiCN JacobiCS JacobiDC JacobiDN JacobiDS JacobiNC JacobiND JacobiNS JacobiP JacobiSC JacobiSD JacobiSN JacobiSymbol JacobiZeta JankoGroupJ1 JankoGroupJ2 JankoGroupJ3 JankoGroupJ4 JarqueBeraALMTest JohnsonDistribution Join Joined JoinedCurve JoinedCurveBox JoinForm JordanDecomposition JordanModelDecomposition K KagiChart KaiserBesselWindow KaiserWindow KalmanEstimator KalmanFilter KarhunenLoeveDecomposition KaryTree KatzCentrality KCoreComponents KDistribution KelvinBei KelvinBer KelvinKei KelvinKer KendallTau KendallTauTest KernelExecute KernelMixtureDistribution KernelObject Kernels Ket Khinchin KirchhoffGraph KirchhoffMatrix KleinInvariantJ KnightTourGraph KnotData KnownUnitQ KolmogorovSmirnovTest KroneckerDelta KroneckerModelDecomposition KroneckerProduct KroneckerSymbol KuiperTest KumaraswamyDistribution Kurtosis KuwaharaFilter Label Labeled LabeledSlider LabelingFunction LabelStyle LaguerreL LambdaComponents LambertW LanczosWindow LandauDistribution Language LanguageCategory LaplaceDistribution LaplaceTransform Laplacian LaplacianFilter LaplacianGaussianFilter Large Larger Last Latitude LatitudeLongitude LatticeData LatticeReduce Launch LaunchKernels LayeredGraphPlot LayerSizeFunction LayoutInformation LCM LeafCount LeapYearQ LeastSquares LeastSquaresFilterKernel Left LeftArrow LeftArrowBar LeftArrowRightArrow LeftDownTeeVector LeftDownVector LeftDownVectorBar LeftRightArrow LeftRightVector LeftTee LeftTeeArrow LeftTeeVector LeftTriangle LeftTriangleBar LeftTriangleEqual LeftUpDownVector LeftUpTeeVector LeftUpVector LeftUpVectorBar LeftVector LeftVectorBar LegendAppearance Legended LegendFunction LegendLabel LegendLayout LegendMargins LegendMarkers LegendMarkerSize LegendreP LegendreQ LegendreType Length LengthWhile LerchPhi Less LessEqual LessEqualGreater LessFullEqual LessGreater LessLess LessSlantEqual LessTilde LetterCharacter LetterQ Level LeveneTest LeviCivitaTensor LevyDistribution Lexicographic LibraryFunction LibraryFunctionError LibraryFunctionInformation LibraryFunctionLoad LibraryFunctionUnload LibraryLoad LibraryUnload LicenseID LiftingFilterData LiftingWaveletTransform LightBlue LightBrown LightCyan Lighter LightGray LightGreen Lighting LightingAngle LightMagenta LightOrange LightPink LightPurple LightRed LightSources LightYellow Likelihood Limit LimitsPositioning LimitsPositioningTokens LindleyDistribution Line Line3DBox LinearFilter LinearFractionalTransform LinearModelFit LinearOffsetFunction LinearProgramming LinearRecurrence LinearSolve LinearSolveFunction LineBox LineBreak LinebreakAdjustments LineBreakChart LineBreakWithin LineColor LineForm LineGraph LineIndent LineIndentMaxFraction LineIntegralConvolutionPlot LineIntegralConvolutionScale LineLegend LineOpacity LineSpacing LineWrapParts LinkActivate LinkClose LinkConnect LinkConnectedQ LinkCreate LinkError LinkFlush LinkFunction LinkHost LinkInterrupt LinkLaunch LinkMode LinkObject LinkOpen LinkOptions LinkPatterns LinkProtocol LinkRead LinkReadHeld LinkReadyQ Links LinkWrite LinkWriteHeld LiouvilleLambda List Listable ListAnimate ListContourPlot ListContourPlot3D ListConvolve ListCorrelate ListCurvePathPlot ListDeconvolve ListDensityPlot Listen ListFourierSequenceTransform ListInterpolation ListLineIntegralConvolutionPlot ListLinePlot ListLogLinearPlot ListLogLogPlot ListLogPlot ListPicker ListPickerBox ListPickerBoxBackground ListPickerBoxOptions ListPlay ListPlot ListPlot3D ListPointPlot3D ListPolarPlot ListQ ListStreamDensityPlot ListStreamPlot ListSurfacePlot3D ListVectorDensityPlot ListVectorPlot ListVectorPlot3D ListZTransform Literal LiteralSearch LocalClusteringCoefficient LocalizeVariables LocationEquivalenceTest LocationTest Locator LocatorAutoCreate LocatorBox LocatorBoxOptions LocatorCentering LocatorPane LocatorPaneBox LocatorPaneBoxOptions LocatorRegion Locked Log Log10 Log2 LogBarnesG LogGamma LogGammaDistribution LogicalExpand LogIntegral LogisticDistribution LogitModelFit LogLikelihood LogLinearPlot LogLogisticDistribution LogLogPlot LogMultinormalDistribution LogNormalDistribution LogPlot LogRankTest LogSeriesDistribution LongEqual Longest LongestAscendingSequence LongestCommonSequence LongestCommonSequencePositions LongestCommonSubsequence LongestCommonSubsequencePositions LongestMatch LongForm Longitude LongLeftArrow LongLeftRightArrow LongRightArrow Loopback LoopFreeGraphQ LowerCaseQ LowerLeftArrow LowerRightArrow LowerTriangularize LowpassFilter LQEstimatorGains LQGRegulator LQOutputRegulatorGains LQRegulatorGains LUBackSubstitution LucasL LuccioSamiComponents LUDecomposition LyapunovSolve LyonsGroupLy MachineID MachineName MachineNumberQ MachinePrecision MacintoshSystemPageSetup Magenta Magnification Magnify MainSolve MaintainDynamicCaches Majority MakeBoxes MakeExpression MakeRules MangoldtLambda ManhattanDistance Manipulate Manipulator MannWhitneyTest MantissaExponent Manual Map MapAll MapAt MapIndexed MAProcess MapThread MarcumQ MardiaCombinedTest MardiaKurtosisTest MardiaSkewnessTest MarginalDistribution MarkovProcessProperties Masking MatchingDissimilarity MatchLocalNameQ MatchLocalNames MatchQ Material MathematicaNotation MathieuC MathieuCharacteristicA MathieuCharacteristicB MathieuCharacteristicExponent MathieuCPrime MathieuGroupM11 MathieuGroupM12 MathieuGroupM22 MathieuGroupM23 MathieuGroupM24 MathieuS MathieuSPrime MathMLForm MathMLText Matrices MatrixExp MatrixForm MatrixFunction MatrixLog MatrixPlot MatrixPower MatrixQ MatrixRank Max MaxBend MaxDetect MaxExtraBandwidths MaxExtraConditions MaxFeatures MaxFilter Maximize MaxIterations MaxMemoryUsed MaxMixtureKernels MaxPlotPoints MaxPoints MaxRecursion MaxStableDistribution MaxStepFraction MaxSteps MaxStepSize MaxValue MaxwellDistribution McLaughlinGroupMcL Mean MeanClusteringCoefficient MeanDegreeConnectivity MeanDeviation MeanFilter MeanGraphDistance MeanNeighborDegree MeanShift MeanShiftFilter Median MedianDeviation MedianFilter Medium MeijerG MeixnerDistribution MemberQ MemoryConstrained MemoryInUse Menu MenuAppearance MenuCommandKey MenuEvaluator MenuItem MenuPacket MenuSortingValue MenuStyle MenuView MergeDifferences Mesh MeshFunctions MeshRange MeshShading MeshStyle Message MessageDialog MessageList MessageName MessageOptions MessagePacket Messages MessagesNotebook MetaCharacters MetaInformation Method MethodOptions MexicanHatWavelet MeyerWavelet Min MinDetect MinFilter MinimalPolynomial MinimalStateSpaceModel Minimize Minors MinRecursion MinSize MinStableDistribution Minus MinusPlus MinValue Missing MissingDataMethod MittagLefflerE MixedRadix MixedRadixQuantity MixtureDistribution Mod Modal Mode Modular ModularLambda Module Modulus MoebiusMu Moment Momentary MomentConvert MomentEvaluate MomentGeneratingFunction Monday Monitor MonomialList MonomialOrder MonsterGroupM MorletWavelet MorphologicalBinarize MorphologicalBranchPoints MorphologicalComponents MorphologicalEulerNumber MorphologicalGraph MorphologicalPerimeter MorphologicalTransform Most MouseAnnotation MouseAppearance MouseAppearanceTag MouseButtons Mouseover MousePointerNote MousePosition MovingAverage MovingMedian MoyalDistribution MultiedgeStyle MultilaunchWarning MultiLetterItalics MultiLetterStyle MultilineFunction Multinomial MultinomialDistribution MultinormalDistribution MultiplicativeOrder Multiplicity Multiselection MultivariateHypergeometricDistribution MultivariatePoissonDistribution MultivariateTDistribution N NakagamiDistribution NameQ Names NamespaceBox Nand NArgMax NArgMin NBernoulliB NCache NDSolve NDSolveValue Nearest NearestFunction NeedCurrentFrontEndPackagePacket NeedCurrentFrontEndSymbolsPacket NeedlemanWunschSimilarity Needs Negative NegativeBinomialDistribution NegativeMultinomialDistribution NeighborhoodGraph Nest NestedGreaterGreater NestedLessLess NestedScriptRules NestList NestWhile NestWhileList NevilleThetaC NevilleThetaD NevilleThetaN NevilleThetaS NewPrimitiveStyle NExpectation Next NextPrime NHoldAll NHoldFirst NHoldRest NicholsGridLines NicholsPlot NIntegrate NMaximize NMaxValue NMinimize NMinValue NominalVariables NonAssociative NoncentralBetaDistribution NoncentralChiSquareDistribution NoncentralFRatioDistribution NoncentralStudentTDistribution NonCommutativeMultiply NonConstants None NonlinearModelFit NonlocalMeansFilter NonNegative NonPositive Nor NorlundB Norm Normal NormalDistribution NormalGrouping Normalize NormalizedSquaredEuclideanDistance NormalsFunction NormFunction Not NotCongruent NotCupCap NotDoubleVerticalBar Notebook NotebookApply NotebookAutoSave NotebookClose NotebookConvertSettings NotebookCreate NotebookCreateReturnObject NotebookDefault NotebookDelete NotebookDirectory NotebookDynamicExpression NotebookEvaluate NotebookEventActions NotebookFileName NotebookFind NotebookFindReturnObject NotebookGet NotebookGetLayoutInformationPacket NotebookGetMisspellingsPacket NotebookInformation NotebookInterfaceObject NotebookLocate NotebookObject NotebookOpen NotebookOpenReturnObject NotebookPath NotebookPrint NotebookPut NotebookPutReturnObject NotebookRead NotebookResetGeneratedCells Notebooks NotebookSave NotebookSaveAs NotebookSelection NotebookSetupLayoutInformationPacket NotebooksMenu NotebookWrite NotElement NotEqualTilde NotExists NotGreater NotGreaterEqual NotGreaterFullEqual NotGreaterGreater NotGreaterLess NotGreaterSlantEqual NotGreaterTilde NotHumpDownHump NotHumpEqual NotLeftTriangle NotLeftTriangleBar NotLeftTriangleEqual NotLess NotLessEqual NotLessFullEqual NotLessGreater NotLessLess NotLessSlantEqual NotLessTilde NotNestedGreaterGreater NotNestedLessLess NotPrecedes NotPrecedesEqual NotPrecedesSlantEqual NotPrecedesTilde NotReverseElement NotRightTriangle NotRightTriangleBar NotRightTriangleEqual NotSquareSubset NotSquareSubsetEqual NotSquareSuperset NotSquareSupersetEqual NotSubset NotSubsetEqual NotSucceeds NotSucceedsEqual NotSucceedsSlantEqual NotSucceedsTilde NotSuperset NotSupersetEqual NotTilde NotTildeEqual NotTildeFullEqual NotTildeTilde NotVerticalBar NProbability NProduct NProductFactors NRoots NSolve NSum NSumTerms Null NullRecords NullSpace NullWords Number NumberFieldClassNumber NumberFieldDiscriminant NumberFieldFundamentalUnits NumberFieldIntegralBasis NumberFieldNormRepresentatives NumberFieldRegulator NumberFieldRootsOfUnity NumberFieldSignature NumberForm NumberFormat NumberMarks NumberMultiplier NumberPadding NumberPoint NumberQ NumberSeparator NumberSigns NumberString Numerator NumericFunction NumericQ NuttallWindow NValues NyquistGridLines NyquistPlot O ObservabilityGramian ObservabilityMatrix ObservableDecomposition ObservableModelQ OddQ Off Offset OLEData On ONanGroupON OneIdentity Opacity Open OpenAppend Opener OpenerBox OpenerBoxOptions OpenerView OpenFunctionInspectorPacket Opening OpenRead OpenSpecialOptions OpenTemporary OpenWrite Operate OperatingSystem OptimumFlowData Optional OptionInspectorSettings OptionQ Options OptionsPacket OptionsPattern OptionValue OptionValueBox OptionValueBoxOptions Or Orange Order OrderDistribution OrderedQ Ordering Orderless OrnsteinUhlenbeckProcess Orthogonalize Out Outer OutputAutoOverwrite OutputControllabilityMatrix OutputControllableModelQ OutputForm OutputFormData OutputGrouping OutputMathEditExpression OutputNamePacket OutputResponse OutputSizeLimit OutputStream Over OverBar OverDot Overflow OverHat Overlaps Overlay OverlayBox OverlayBoxOptions Overscript OverscriptBox OverscriptBoxOptions OverTilde OverVector OwenT OwnValues PackingMethod PaddedForm Padding PadeApproximant PadLeft PadRight PageBreakAbove PageBreakBelow PageBreakWithin PageFooterLines PageFooters PageHeaderLines PageHeaders PageHeight PageRankCentrality PageWidth PairedBarChart PairedHistogram PairedSmoothHistogram PairedTTest PairedZTest PaletteNotebook PalettePath Pane PaneBox PaneBoxOptions Panel PanelBox PanelBoxOptions Paneled PaneSelector PaneSelectorBox PaneSelectorBoxOptions PaperWidth ParabolicCylinderD ParagraphIndent ParagraphSpacing ParallelArray ParallelCombine ParallelDo ParallelEvaluate Parallelization Parallelize ParallelMap ParallelNeeds ParallelProduct ParallelSubmit ParallelSum ParallelTable ParallelTry Parameter ParameterEstimator ParameterMixtureDistribution ParameterVariables ParametricFunction ParametricNDSolve ParametricNDSolveValue ParametricPlot ParametricPlot3D ParentConnect ParentDirectory ParentForm Parenthesize ParentList ParetoDistribution Part PartialCorrelationFunction PartialD ParticleData Partition PartitionsP PartitionsQ ParzenWindow PascalDistribution PassEventsDown PassEventsUp Paste PasteBoxFormInlineCells PasteButton Path PathGraph PathGraphQ Pattern PatternSequence PatternTest PauliMatrix PaulWavelet Pause PausedTime PDF PearsonChiSquareTest PearsonCorrelationTest PearsonDistribution PerformanceGoal PeriodicInterpolation Periodogram PeriodogramArray PermutationCycles PermutationCyclesQ PermutationGroup PermutationLength PermutationList PermutationListQ PermutationMax PermutationMin PermutationOrder PermutationPower PermutationProduct PermutationReplace Permutations PermutationSupport Permute PeronaMalikFilter Perpendicular PERTDistribution PetersenGraph PhaseMargins Pi Pick PIDData PIDDerivativeFilter PIDFeedforward PIDTune Piecewise PiecewiseExpand PieChart PieChart3D PillaiTrace PillaiTraceTest Pink Pivoting PixelConstrained PixelValue PixelValuePositions Placed Placeholder PlaceholderReplace Plain PlanarGraphQ Play PlayRange Plot Plot3D Plot3Matrix PlotDivision PlotJoined PlotLabel PlotLayout PlotLegends PlotMarkers PlotPoints PlotRange PlotRangeClipping PlotRangePadding PlotRegion PlotStyle Plus PlusMinus Pochhammer PodStates PodWidth Point Point3DBox PointBox PointFigureChart PointForm PointLegend PointSize PoissonConsulDistribution PoissonDistribution PoissonProcess PoissonWindow PolarAxes PolarAxesOrigin PolarGridLines PolarPlot PolarTicks PoleZeroMarkers PolyaAeppliDistribution PolyGamma Polygon Polygon3DBox Polygon3DBoxOptions PolygonBox PolygonBoxOptions PolygonHoleScale PolygonIntersections PolygonScale PolyhedronData PolyLog PolynomialExtendedGCD PolynomialForm PolynomialGCD PolynomialLCM PolynomialMod PolynomialQ PolynomialQuotient PolynomialQuotientRemainder PolynomialReduce PolynomialRemainder Polynomials PopupMenu PopupMenuBox PopupMenuBoxOptions PopupView PopupWindow Position Positive PositiveDefiniteMatrixQ PossibleZeroQ Postfix PostScript Power PowerDistribution PowerExpand PowerMod PowerModList PowerSpectralDensity PowersRepresentations PowerSymmetricPolynomial Precedence PrecedenceForm Precedes PrecedesEqual PrecedesSlantEqual PrecedesTilde Precision PrecisionGoal PreDecrement PredictionRoot PreemptProtect PreferencesPath Prefix PreIncrement Prepend PrependTo PreserveImageOptions Previous PriceGraphDistribution PrimaryPlaceholder Prime PrimeNu PrimeOmega PrimePi PrimePowerQ PrimeQ Primes PrimeZetaP PrimitiveRoot PrincipalComponents PrincipalValue Print PrintAction PrintForm PrintingCopies PrintingOptions PrintingPageRange PrintingStartingPageNumber PrintingStyleEnvironment PrintPrecision PrintTemporary Prism PrismBox PrismBoxOptions PrivateCellOptions PrivateEvaluationOptions PrivateFontOptions PrivateFrontEndOptions PrivateNotebookOptions PrivatePaths Probability ProbabilityDistribution ProbabilityPlot ProbabilityPr ProbabilityScalePlot ProbitModelFit ProcessEstimator ProcessParameterAssumptions ProcessParameterQ ProcessStateDomain ProcessTimeDomain Product ProductDistribution ProductLog ProgressIndicator ProgressIndicatorBox ProgressIndicatorBoxOptions Projection Prolog PromptForm Properties Property PropertyList PropertyValue Proportion Proportional Protect Protected ProteinData Pruning PseudoInverse Purple Put PutAppend Pyramid PyramidBox PyramidBoxOptions QBinomial QFactorial QGamma QHypergeometricPFQ QPochhammer QPolyGamma QRDecomposition QuadraticIrrationalQ Quantile QuantilePlot Quantity QuantityForm QuantityMagnitude QuantityQ QuantityUnit Quartics QuartileDeviation Quartiles QuartileSkewness QueueingNetworkProcess QueueingProcess QueueProperties Quiet Quit Quotient QuotientRemainder RadialityCentrality RadicalBox RadicalBoxOptions RadioButton RadioButtonBar RadioButtonBox RadioButtonBoxOptions Radon RamanujanTau RamanujanTauL RamanujanTauTheta RamanujanTauZ Random RandomChoice RandomComplex RandomFunction RandomGraph RandomImage RandomInteger RandomPermutation RandomPrime RandomReal RandomSample RandomSeed RandomVariate RandomWalkProcess Range RangeFilter RangeSpecification RankedMax RankedMin Raster Raster3D Raster3DBox Raster3DBoxOptions RasterArray RasterBox RasterBoxOptions Rasterize RasterSize Rational RationalFunctions Rationalize Rationals Ratios Raw RawArray RawBoxes RawData RawMedium RayleighDistribution Re Read ReadList ReadProtected Real RealBlockDiagonalForm RealDigits RealExponent Reals Reap Record RecordLists RecordSeparators Rectangle RectangleBox RectangleBoxOptions RectangleChart RectangleChart3D RecurrenceFilter RecurrenceTable RecurringDigitsForm Red Reduce RefBox ReferenceLineStyle ReferenceMarkers ReferenceMarkerStyle Refine ReflectionMatrix ReflectionTransform Refresh RefreshRate RegionBinarize RegionFunction RegionPlot RegionPlot3D RegularExpression Regularization Reinstall Release ReleaseHold ReliabilityDistribution ReliefImage ReliefPlot Remove RemoveAlphaChannel RemoveAsynchronousTask Removed RemoveInputStreamMethod RemoveOutputStreamMethod RemoveProperty RemoveScheduledTask RenameDirectory RenameFile RenderAll RenderingOptions RenewalProcess RenkoChart Repeated RepeatedNull RepeatedString Replace ReplaceAll ReplaceHeldPart ReplaceImageValue ReplaceList ReplacePart ReplacePixelValue ReplaceRepeated Resampling Rescale RescalingTransform ResetDirectory ResetMenusPacket ResetScheduledTask Residue Resolve Rest Resultant ResumePacket Return ReturnExpressionPacket ReturnInputFormPacket ReturnPacket ReturnTextPacket Reverse ReverseBiorthogonalSplineWavelet ReverseElement ReverseEquilibrium ReverseGraph ReverseUpEquilibrium RevolutionAxis RevolutionPlot3D RGBColor RiccatiSolve RiceDistribution RidgeFilter RiemannR RiemannSiegelTheta RiemannSiegelZ Riffle Right RightArrow RightArrowBar RightArrowLeftArrow RightCosetRepresentative RightDownTeeVector RightDownVector RightDownVectorBar RightTee RightTeeArrow RightTeeVector RightTriangle RightTriangleBar RightTriangleEqual RightUpDownVector RightUpTeeVector RightUpVector RightUpVectorBar RightVector RightVectorBar RiskAchievementImportance RiskReductionImportance RogersTanimotoDissimilarity Root RootApproximant RootIntervals RootLocusPlot RootMeanSquare RootOfUnityQ RootReduce Roots RootSum Rotate RotateLabel RotateLeft RotateRight RotationAction RotationBox RotationBoxOptions RotationMatrix RotationTransform Round RoundImplies RoundingRadius Row RowAlignments RowBackgrounds RowBox RowHeights RowLines RowMinHeight RowReduce RowsEqual RowSpacings RSolve RudvalisGroupRu Rule RuleCondition RuleDelayed RuleForm RulerUnits Run RunScheduledTask RunThrough RuntimeAttributes RuntimeOptions RussellRaoDissimilarity SameQ SameTest SampleDepth SampledSoundFunction SampledSoundList SampleRate SamplingPeriod SARIMAProcess SARMAProcess SatisfiabilityCount SatisfiabilityInstances SatisfiableQ Saturday Save Saveable SaveAutoDelete SaveDefinitions SawtoothWave Scale Scaled ScaleDivisions ScaledMousePosition ScaleOrigin ScalePadding ScaleRanges ScaleRangeStyle ScalingFunctions ScalingMatrix ScalingTransform Scan ScheduledTaskActiveQ ScheduledTaskData ScheduledTaskObject ScheduledTasks SchurDecomposition ScientificForm ScreenRectangle ScreenStyleEnvironment ScriptBaselineShifts ScriptLevel ScriptMinSize ScriptRules ScriptSizeMultipliers Scrollbars ScrollingOptions ScrollPosition Sec Sech SechDistribution SectionGrouping SectorChart SectorChart3D SectorOrigin SectorSpacing SeedRandom Select Selectable SelectComponents SelectedCells SelectedNotebook Selection SelectionAnimate SelectionCell SelectionCellCreateCell SelectionCellDefaultStyle SelectionCellParentStyle SelectionCreateCell SelectionDebuggerTag SelectionDuplicateCell SelectionEvaluate SelectionEvaluateCreateCell SelectionMove SelectionPlaceholder SelectionSetStyle SelectWithContents SelfLoops SelfLoopStyle SemialgebraicComponentInstances SendMail Sequence SequenceAlignment SequenceForm SequenceHold SequenceLimit Series SeriesCoefficient SeriesData SessionTime Set SetAccuracy SetAlphaChannel SetAttributes Setbacks SetBoxFormNamesPacket SetDelayed SetDirectory SetEnvironment SetEvaluationNotebook SetFileDate SetFileLoadingContext SetNotebookStatusLine SetOptions SetOptionsPacket SetPrecision SetProperty SetSelectedNotebook SetSharedFunction SetSharedVariable SetSpeechParametersPacket SetStreamPosition SetSystemOptions Setter SetterBar SetterBox SetterBoxOptions Setting SetValue Shading Shallow ShannonWavelet ShapiroWilkTest Share Sharpen ShearingMatrix ShearingTransform ShenCastanMatrix Short ShortDownArrow Shortest ShortestMatch ShortestPathFunction ShortLeftArrow ShortRightArrow ShortUpArrow Show ShowAutoStyles ShowCellBracket ShowCellLabel ShowCellTags ShowClosedCellArea ShowContents ShowControls ShowCursorTracker ShowGroupOpenCloseIcon ShowGroupOpener ShowInvisibleCharacters ShowPageBreaks ShowPredictiveInterface ShowSelection ShowShortBoxForm ShowSpecialCharacters ShowStringCharacters ShowSyntaxStyles ShrinkingDelay ShrinkWrapBoundingBox SiegelTheta SiegelTukeyTest Sign Signature SignedRankTest SignificanceLevel SignPadding SignTest SimilarityRules SimpleGraph SimpleGraphQ Simplify Sin Sinc SinghMaddalaDistribution SingleEvaluation SingleLetterItalics SingleLetterStyle SingularValueDecomposition SingularValueList SingularValuePlot SingularValues Sinh SinhIntegral SinIntegral SixJSymbol Skeleton SkeletonTransform SkellamDistribution Skewness SkewNormalDistribution Skip SliceDistribution Slider Slider2D Slider2DBox Slider2DBoxOptions SliderBox SliderBoxOptions SlideView Slot SlotSequence Small SmallCircle Smaller SmithDelayCompensator SmithWatermanSimilarity SmoothDensityHistogram SmoothHistogram SmoothHistogram3D SmoothKernelDistribution SocialMediaData Socket SokalSneathDissimilarity Solve SolveAlways SolveDelayed Sort SortBy Sound SoundAndGraphics SoundNote SoundVolume Sow Space SpaceForm Spacer Spacings Span SpanAdjustments SpanCharacterRounding SpanFromAbove SpanFromBoth SpanFromLeft SpanLineThickness SpanMaxSize SpanMinSize SpanningCharacters SpanSymmetric SparseArray SpatialGraphDistribution Speak SpeakTextPacket SpearmanRankTest SpearmanRho Spectrogram SpectrogramArray Specularity SpellingCorrection SpellingDictionaries SpellingDictionariesPath SpellingOptions SpellingSuggestionsPacket Sphere SphereBox SphericalBesselJ SphericalBesselY SphericalHankelH1 SphericalHankelH2 SphericalHarmonicY SphericalPlot3D SphericalRegion SpheroidalEigenvalue SpheroidalJoiningFactor SpheroidalPS SpheroidalPSPrime SpheroidalQS SpheroidalQSPrime SpheroidalRadialFactor SpheroidalS1 SpheroidalS1Prime SpheroidalS2 SpheroidalS2Prime Splice SplicedDistribution SplineClosed SplineDegree SplineKnots SplineWeights Split SplitBy SpokenString Sqrt SqrtBox SqrtBoxOptions Square SquaredEuclideanDistance SquareFreeQ SquareIntersection SquaresR SquareSubset SquareSubsetEqual SquareSuperset SquareSupersetEqual SquareUnion SquareWave StabilityMargins StabilityMarginsStyle StableDistribution Stack StackBegin StackComplete StackInhibit StandardDeviation StandardDeviationFilter StandardForm Standardize StandbyDistribution Star StarGraph StartAsynchronousTask StartingStepSize StartOfLine StartOfString StartScheduledTask StartupSound StateDimensions StateFeedbackGains StateOutputEstimator StateResponse StateSpaceModel StateSpaceRealization StateSpaceTransform StationaryDistribution StationaryWaveletPacketTransform StationaryWaveletTransform StatusArea StatusCentrality StepMonitor StieltjesGamma StirlingS1 StirlingS2 StopAsynchronousTask StopScheduledTask StrataVariables StratonovichProcess StreamColorFunction StreamColorFunctionScaling StreamDensityPlot StreamPlot StreamPoints StreamPosition Streams StreamScale StreamStyle String StringBreak StringByteCount StringCases StringCount StringDrop StringExpression StringForm StringFormat StringFreeQ StringInsert StringJoin StringLength StringMatchQ StringPosition StringQ StringReplace StringReplaceList StringReplacePart StringReverse StringRotateLeft StringRotateRight StringSkeleton StringSplit StringTake StringToStream StringTrim StripBoxes StripOnInput StripWrapperBoxes StrokeForm StructuralImportance StructuredArray StructuredSelection StruveH StruveL Stub StudentTDistribution Style StyleBox StyleBoxAutoDelete StyleBoxOptions StyleData StyleDefinitions StyleForm StyleKeyMapping StyleMenuListing StyleNameDialogSettings StyleNames StylePrint StyleSheetPath Subfactorial Subgraph SubMinus SubPlus SubresultantPolynomialRemainders SubresultantPolynomials Subresultants Subscript SubscriptBox SubscriptBoxOptions Subscripted Subset SubsetEqual Subsets SubStar Subsuperscript SubsuperscriptBox SubsuperscriptBoxOptions Subtract SubtractFrom SubValues Succeeds SucceedsEqual SucceedsSlantEqual SucceedsTilde SuchThat Sum SumConvergence Sunday SuperDagger SuperMinus SuperPlus Superscript SuperscriptBox SuperscriptBoxOptions Superset SupersetEqual SuperStar Surd SurdForm SurfaceColor SurfaceGraphics SurvivalDistribution SurvivalFunction SurvivalModel SurvivalModelFit SuspendPacket SuzukiDistribution SuzukiGroupSuz SwatchLegend Switch Symbol SymbolName SymletWavelet Symmetric SymmetricGroup SymmetricMatrixQ SymmetricPolynomial SymmetricReduction Symmetrize SymmetrizedArray SymmetrizedArrayRules SymmetrizedDependentComponents SymmetrizedIndependentComponents SymmetrizedReplacePart SynchronousInitialization SynchronousUpdating Syntax SyntaxForm SyntaxInformation SyntaxLength SyntaxPacket SyntaxQ SystemDialogInput SystemException SystemHelpPath SystemInformation SystemInformationData SystemOpen SystemOptions SystemsModelDelay SystemsModelDelayApproximate SystemsModelDelete SystemsModelDimensions SystemsModelExtract SystemsModelFeedbackConnect SystemsModelLabels SystemsModelOrder SystemsModelParallelConnect SystemsModelSeriesConnect SystemsModelStateFeedbackConnect SystemStub Tab TabFilling Table TableAlignments TableDepth TableDirections TableForm TableHeadings TableSpacing TableView TableViewBox TabSpacings TabView TabViewBox TabViewBoxOptions TagBox TagBoxNote TagBoxOptions TaggingRules TagSet TagSetDelayed TagStyle TagUnset Take TakeWhile Tally Tan Tanh TargetFunctions TargetUnits TautologyQ TelegraphProcess TemplateBox TemplateBoxOptions TemplateSlotSequence TemporalData Temporary TemporaryVariable TensorContract TensorDimensions TensorExpand TensorProduct TensorQ TensorRank TensorReduce TensorSymmetry TensorTranspose TensorWedge Tetrahedron TetrahedronBox TetrahedronBoxOptions TeXForm TeXSave Text Text3DBox Text3DBoxOptions TextAlignment TextBand TextBoundingBox TextBox TextCell TextClipboardType TextData TextForm TextJustification TextLine TextPacket TextParagraph TextRecognize TextRendering TextStyle Texture TextureCoordinateFunction TextureCoordinateScaling Therefore ThermometerGauge Thick Thickness Thin Thinning ThisLink ThompsonGroupTh Thread ThreeJSymbol Threshold Through Throw Thumbnail Thursday Ticks TicksStyle Tilde TildeEqual TildeFullEqual TildeTilde TimeConstrained TimeConstraint Times TimesBy TimeSeriesForecast TimeSeriesInvertibility TimeUsed TimeValue TimeZone Timing Tiny TitleGrouping TitsGroupT ToBoxes ToCharacterCode ToColor ToContinuousTimeModel ToDate ToDiscreteTimeModel ToeplitzMatrix ToExpression ToFileName Together Toggle ToggleFalse Toggler TogglerBar TogglerBox TogglerBoxOptions ToHeldExpression ToInvertibleTimeSeries TokenWords Tolerance ToLowerCase ToNumberField TooBig Tooltip TooltipBox TooltipBoxOptions TooltipDelay TooltipStyle Top TopHatTransform TopologicalSort ToRadicals ToRules ToString Total TotalHeight TotalVariationFilter TotalWidth TouchscreenAutoZoom TouchscreenControlPlacement ToUpperCase Tr Trace TraceAbove TraceAction TraceBackward TraceDepth TraceDialog TraceForward TraceInternal TraceLevel TraceOff TraceOn TraceOriginal TracePrint TraceScan TrackedSymbols TradingChart TraditionalForm TraditionalFunctionNotation TraditionalNotation TraditionalOrder TransferFunctionCancel TransferFunctionExpand TransferFunctionFactor TransferFunctionModel TransferFunctionPoles TransferFunctionTransform TransferFunctionZeros TransformationFunction TransformationFunctions TransformationMatrix TransformedDistribution TransformedField Translate TranslationTransform TransparentColor Transpose TreeForm TreeGraph TreeGraphQ TreePlot TrendStyle TriangleWave TriangularDistribution Trig TrigExpand TrigFactor TrigFactorList Trigger TrigReduce TrigToExp TrimmedMean True TrueQ TruncatedDistribution TsallisQExponentialDistribution TsallisQGaussianDistribution TTest Tube TubeBezierCurveBox TubeBezierCurveBoxOptions TubeBox TubeBSplineCurveBox TubeBSplineCurveBoxOptions Tuesday TukeyLambdaDistribution TukeyWindow Tuples TuranGraph TuringMachine Transparent UnateQ Uncompress Undefined UnderBar Underflow Underlined Underoverscript UnderoverscriptBox UnderoverscriptBoxOptions Underscript UnderscriptBox UnderscriptBoxOptions UndirectedEdge UndirectedGraph UndirectedGraphQ UndocumentedTestFEParserPacket UndocumentedTestGetSelectionPacket Unequal Unevaluated UniformDistribution UniformGraphDistribution UniformSumDistribution Uninstall Union UnionPlus Unique UnitBox UnitConvert UnitDimensions Unitize UnitRootTest UnitSimplify UnitStep UnitTriangle UnitVector Unprotect UnsameQ UnsavedVariables Unset UnsetShared UntrackedVariables Up UpArrow UpArrowBar UpArrowDownArrow Update UpdateDynamicObjects UpdateDynamicObjectsSynchronous UpdateInterval UpDownArrow UpEquilibrium UpperCaseQ UpperLeftArrow UpperRightArrow UpperTriangularize Upsample UpSet UpSetDelayed UpTee UpTeeArrow UpValues URL URLFetch URLFetchAsynchronous URLSave URLSaveAsynchronous UseGraphicsRange Using UsingFrontEnd V2Get ValidationLength Value ValueBox ValueBoxOptions ValueForm ValueQ ValuesData Variables Variance VarianceEquivalenceTest VarianceEstimatorFunction VarianceGammaDistribution VarianceTest VectorAngle VectorColorFunction VectorColorFunctionScaling VectorDensityPlot VectorGlyphData VectorPlot VectorPlot3D VectorPoints VectorQ Vectors VectorScale VectorStyle Vee Verbatim Verbose VerboseConvertToPostScriptPacket VerifyConvergence VerifySolutions VerifyTestAssumptions Version VersionNumber VertexAdd VertexCapacity VertexColors VertexComponent VertexConnectivity VertexCoordinateRules VertexCoordinates VertexCorrelationSimilarity VertexCosineSimilarity VertexCount VertexCoverQ VertexDataCoordinates VertexDegree VertexDelete VertexDiceSimilarity VertexEccentricity VertexInComponent VertexInDegree VertexIndex VertexJaccardSimilarity VertexLabeling VertexLabels VertexLabelStyle VertexList VertexNormals VertexOutComponent VertexOutDegree VertexQ VertexRenderingFunction VertexReplace VertexShape VertexShapeFunction VertexSize VertexStyle VertexTextureCoordinates VertexWeight Vertical VerticalBar VerticalForm VerticalGauge VerticalSeparator VerticalSlider VerticalTilde ViewAngle ViewCenter ViewMatrix ViewPoint ViewPointSelectorSettings ViewPort ViewRange ViewVector ViewVertical VirtualGroupData Visible VisibleCell VoigtDistribution VonMisesDistribution WaitAll WaitAsynchronousTask WaitNext WaitUntil WakebyDistribution WalleniusHypergeometricDistribution WaringYuleDistribution WatershedComponents WatsonUSquareTest WattsStrogatzGraphDistribution WaveletBestBasis WaveletFilterCoefficients WaveletImagePlot WaveletListPlot WaveletMapIndexed WaveletMatrixPlot WaveletPhi WaveletPsi WaveletScale WaveletScalogram WaveletThreshold WeaklyConnectedComponents WeaklyConnectedGraphQ WeakStationarity WeatherData WeberE Wedge Wednesday WeibullDistribution WeierstrassHalfPeriods WeierstrassInvariants WeierstrassP WeierstrassPPrime WeierstrassSigma WeierstrassZeta WeightedAdjacencyGraph WeightedAdjacencyMatrix WeightedData WeightedGraphQ Weights WelchWindow WheelGraph WhenEvent Which While White Whitespace WhitespaceCharacter WhittakerM WhittakerW WienerFilter WienerProcess WignerD WignerSemicircleDistribution WilksW WilksWTest WindowClickSelect WindowElements WindowFloating WindowFrame WindowFrameElements WindowMargins WindowMovable WindowOpacity WindowSelected WindowSize WindowStatusArea WindowTitle WindowToolbars WindowWidth With WolframAlpha WolframAlphaDate WolframAlphaQuantity WolframAlphaResult Word WordBoundary WordCharacter WordData WordSearch WordSeparators WorkingPrecision Write WriteString Wronskian XMLElement XMLObject Xnor Xor Yellow YuleDissimilarity ZernikeR ZeroSymmetric ZeroTest ZeroWidthTimes Zeta ZetaZero ZipfDistribution ZTest ZTransform $Aborted $ActivationGroupID $ActivationKey $ActivationUserRegistered $AddOnsDirectory $AssertFunction $Assumptions $AsynchronousTask $BaseDirectory $BatchInput $BatchOutput $BoxForms $ByteOrdering $Canceled $CharacterEncoding $CharacterEncodings $CommandLine $CompilationTarget $ConditionHold $ConfiguredKernels $Context $ContextPath $ControlActiveSetting $CreationDate $CurrentLink $DateStringFormat $DefaultFont $DefaultFrontEnd $DefaultImagingDevice $DefaultPath $Display $DisplayFunction $DistributedContexts $DynamicEvaluation $Echo $Epilog $ExportFormats $Failed $FinancialDataSource $FormatType $FrontEnd $FrontEndSession $GeoLocation $HistoryLength $HomeDirectory $HTTPCookies $IgnoreEOF $ImagingDevices $ImportFormats $InitialDirectory $Input $InputFileName $InputStreamMethods $Inspector $InstallationDate $InstallationDirectory $InterfaceEnvironment $IterationLimit $KernelCount $KernelID $Language $LaunchDirectory $LibraryPath $LicenseExpirationDate $LicenseID $LicenseProcesses $LicenseServer $LicenseSubprocesses $LicenseType $Line $Linked $LinkSupported $LoadedFiles $MachineAddresses $MachineDomain $MachineDomains $MachineEpsilon $MachineID $MachineName $MachinePrecision $MachineType $MaxExtraPrecision $MaxLicenseProcesses $MaxLicenseSubprocesses $MaxMachineNumber $MaxNumber $MaxPiecewiseCases $MaxPrecision $MaxRootDegree $MessageGroups $MessageList $MessagePrePrint $Messages $MinMachineNumber $MinNumber $MinorReleaseNumber $MinPrecision $ModuleNumber $NetworkLicense $NewMessage $NewSymbol $Notebooks $NumberMarks $Off $OperatingSystem $Output $OutputForms $OutputSizeLimit $OutputStreamMethods $Packages $ParentLink $ParentProcessID $PasswordFile $PatchLevelID $Path $PathnameSeparator $PerformanceGoal $PipeSupported $Post $Pre $PreferencesDirectory $PrePrint $PreRead $PrintForms $PrintLiteral $ProcessID $ProcessorCount $ProcessorType $ProductInformation $ProgramName $RandomState $RecursionLimit $ReleaseNumber $RootDirectory $ScheduledTask $ScriptCommandLine $SessionID $SetParentLink $SharedFunctions $SharedVariables $SoundDisplay $SoundDisplayFunction $SuppressInputFormHeads $SynchronousEvaluation $SyntaxHandler $System $SystemCharacterEncoding $SystemID $SystemWordLength $TemporaryDirectory $TemporaryPrefix $TextStyle $TimedOut $TimeUnit $TimeZone $TopDirectory $TraceOff $TraceOn $TracePattern $TracePostAction $TracePreAction $Urgent $UserAddOnsDirectory $UserBaseDirectory $UserDocumentsDirectory $UserName $Version $VersionNumber",contains:[{className:"comment",begin:/\(\*/,end:/\*\)/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{begin:/\{/,end:/\}/,illegal:/:/}]}}},function(e,t){e.exports=function(e){var t={relevance:0,contains:[{begin:"('|\\.')+"}]};return{keywords:{keyword:"break case catch classdef continue else elseif end enumerated events for function global if methods otherwise parfor persistent properties return spmd switch try while",built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell "},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function",beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}]},{className:"built_in",begin:/true|false/,relevance:0,starts:t},{begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number",begin:e.C_NUMBER_RE,relevance:0,starts:t},{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|}|\)/,relevance:0,starts:t},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{begin:'""'}],starts:t},e.COMMENT("^\\s*\\%\\{\\s*$","^\\s*\\%\\}\\s*$"),e.COMMENT("\\%","$")]}}},function(e,t){e.exports=function(e){return{lexemes:"[A-Za-z_%][0-9A-Za-z_%]*",keywords:{keyword:"if then else elseif for thru do while unless step in and or not",literal:"true false unknown inf minf ind und %e %i %pi %phi %gamma",built_in:" abasep abs absint absolute_real_time acos acosh acot acoth acsc acsch activate addcol add_edge add_edges addmatrices addrow add_vertex add_vertices adjacency_matrix adjoin adjoint af agd airy airy_ai airy_bi airy_dai airy_dbi algsys alg_type alias allroots alphacharp alphanumericp amortization %and annuity_fv annuity_pv antid antidiff AntiDifference append appendfile apply apply1 apply2 applyb1 apropos args arit_amortization arithmetic arithsum array arrayapply arrayinfo arraymake arraysetapply ascii asec asech asin asinh askinteger asksign assoc assoc_legendre_p assoc_legendre_q assume assume_external_byte_order asympa at atan atan2 atanh atensimp atom atvalue augcoefmatrix augmented_lagrangian_method av average_degree backtrace bars barsplot barsplot_description base64 base64_decode bashindices batch batchload bc2 bdvac belln benefit_cost bern bernpoly bernstein_approx bernstein_expand bernstein_poly bessel bessel_i bessel_j bessel_k bessel_simplify bessel_y beta beta_incomplete beta_incomplete_generalized beta_incomplete_regularized bezout bfallroots bffac bf_find_root bf_fmin_cobyla bfhzeta bfloat bfloatp bfpsi bfpsi0 bfzeta biconnected_components bimetric binomial bipartition block blockmatrixp bode_gain bode_phase bothcoef box boxplot boxplot_description break bug_report build_info|10 buildq build_sample burn cabs canform canten cardinality carg cartan cartesian_product catch cauchy_matrix cbffac cdf_bernoulli cdf_beta cdf_binomial cdf_cauchy cdf_chi2 cdf_continuous_uniform cdf_discrete_uniform cdf_exp cdf_f cdf_gamma cdf_general_finite_discrete cdf_geometric cdf_gumbel cdf_hypergeometric cdf_laplace cdf_logistic cdf_lognormal cdf_negative_binomial cdf_noncentral_chi2 cdf_noncentral_student_t cdf_normal cdf_pareto cdf_poisson cdf_rank_sum cdf_rayleigh cdf_signed_rank cdf_student_t cdf_weibull cdisplay ceiling central_moment cequal cequalignore cf cfdisrep cfexpand cgeodesic cgreaterp cgreaterpignore changename changevar chaosgame charat charfun charfun2 charlist charp charpoly chdir chebyshev_t chebyshev_u checkdiv check_overlaps chinese cholesky christof chromatic_index chromatic_number cint circulant_graph clear_edge_weight clear_rules clear_vertex_label clebsch_gordan clebsch_graph clessp clesspignore close closefile cmetric coeff coefmatrix cograd col collapse collectterms columnop columnspace columnswap columnvector combination combine comp2pui compare compfile compile compile_file complement_graph complete_bipartite_graph complete_graph complex_number_p components compose_functions concan concat conjugate conmetderiv connected_components connect_vertices cons constant constantp constituent constvalue cont2part content continuous_freq contortion contour_plot contract contract_edge contragrad contrib_ode convert coord copy copy_file copy_graph copylist copymatrix cor cos cosh cot coth cov cov1 covdiff covect covers crc24sum create_graph create_list csc csch csetup cspline ctaylor ct_coordsys ctransform ctranspose cube_graph cuboctahedron_graph cunlisp cv cycle_digraph cycle_graph cylindrical days360 dblint deactivate declare declare_constvalue declare_dimensions declare_fundamental_dimensions declare_fundamental_units declare_qty declare_translated declare_unit_conversion declare_units declare_weights decsym defcon define define_alt_display define_variable defint defmatch defrule defstruct deftaylor degree_sequence del delete deleten delta demo demoivre denom depends derivdegree derivlist describe desolve determinant dfloat dgauss_a dgauss_b dgeev dgemm dgeqrf dgesv dgesvd diag diagmatrix diag_matrix diagmatrixp diameter diff digitcharp dimacs_export dimacs_import dimension dimensionless dimensions dimensions_as_list direct directory discrete_freq disjoin disjointp disolate disp dispcon dispform dispfun dispJordan display disprule dispterms distrib divide divisors divsum dkummer_m dkummer_u dlange dodecahedron_graph dotproduct dotsimp dpart draw draw2d draw3d drawdf draw_file draw_graph dscalar echelon edge_coloring edge_connectivity edges eigens_by_jacobi eigenvalues eigenvectors eighth einstein eivals eivects elapsed_real_time elapsed_run_time ele2comp ele2polynome ele2pui elem elementp elevation_grid elim elim_allbut eliminate eliminate_using ellipse elliptic_e elliptic_ec elliptic_eu elliptic_f elliptic_kc elliptic_pi ematrix empty_graph emptyp endcons entermatrix entertensor entier equal equalp equiv_classes erf erfc erf_generalized erfi errcatch error errormsg errors euler ev eval_string evenp every evolution evolution2d evundiff example exp expand expandwrt expandwrt_factored expint expintegral_chi expintegral_ci expintegral_e expintegral_e1 expintegral_ei expintegral_e_simplify expintegral_li expintegral_shi expintegral_si explicit explose exponentialize express expt exsec extdiff extract_linear_equations extremal_subset ezgcd %f f90 facsum factcomb factor factorfacsum factorial factorout factorsum facts fast_central_elements fast_linsolve fasttimes featurep fernfale fft fib fibtophi fifth filename_merge file_search file_type fillarray findde find_root find_root_abs find_root_error find_root_rel first fix flatten flength float floatnump floor flower_snark flush flush1deriv flushd flushnd flush_output fmin_cobyla forget fortran fourcos fourexpand fourier fourier_elim fourint fourintcos fourintsin foursimp foursin fourth fposition frame_bracket freeof freshline fresnel_c fresnel_s from_adjacency_matrix frucht_graph full_listify fullmap fullmapl fullratsimp fullratsubst fullsetify funcsolve fundamental_dimensions fundamental_units fundef funmake funp fv g0 g1 gamma gamma_greek gamma_incomplete gamma_incomplete_generalized gamma_incomplete_regularized gauss gauss_a gauss_b gaussprob gcd gcdex gcdivide gcfac gcfactor gd generalized_lambert_w genfact gen_laguerre genmatrix gensym geo_amortization geo_annuity_fv geo_annuity_pv geomap geometric geometric_mean geosum get getcurrentdirectory get_edge_weight getenv get_lu_factors get_output_stream_string get_pixel get_plot_option get_tex_environment get_tex_environment_default get_vertex_label gfactor gfactorsum ggf girth global_variances gn gnuplot_close gnuplot_replot gnuplot_reset gnuplot_restart gnuplot_start go Gosper GosperSum gr2d gr3d gradef gramschmidt graph6_decode graph6_encode graph6_export graph6_import graph_center graph_charpoly graph_eigenvalues graph_flow graph_order graph_periphery graph_product graph_size graph_union great_rhombicosidodecahedron_graph great_rhombicuboctahedron_graph grid_graph grind grobner_basis grotzch_graph hamilton_cycle hamilton_path hankel hankel_1 hankel_2 harmonic harmonic_mean hav heawood_graph hermite hessian hgfred hilbertmap hilbert_matrix hipow histogram histogram_description hodge horner hypergeometric i0 i1 %ibes ic1 ic2 ic_convert ichr1 ichr2 icosahedron_graph icosidodecahedron_graph icurvature ident identfor identity idiff idim idummy ieqn %if ifactors iframes ifs igcdex igeodesic_coords ilt image imagpart imetric implicit implicit_derivative implicit_plot indexed_tensor indices induced_subgraph inferencep inference_result infix info_display init_atensor init_ctensor in_neighbors innerproduct inpart inprod inrt integerp integer_partitions integrate intersect intersection intervalp intopois intosum invariant1 invariant2 inverse_fft inverse_jacobi_cd inverse_jacobi_cn inverse_jacobi_cs inverse_jacobi_dc inverse_jacobi_dn inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd inverse_jacobi_ns inverse_jacobi_sc inverse_jacobi_sd inverse_jacobi_sn invert invert_by_adjoint invert_by_lu inv_mod irr is is_biconnected is_bipartite is_connected is_digraph is_edge_in_graph is_graph is_graph_or_digraph ishow is_isomorphic isolate isomorphism is_planar isqrt isreal_p is_sconnected is_tree is_vertex_in_graph items_inference %j j0 j1 jacobi jacobian jacobi_cd jacobi_cn jacobi_cs jacobi_dc jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_p jacobi_sc jacobi_sd jacobi_sn JF jn join jordan julia julia_set julia_sin %k kdels kdelta kill killcontext kostka kron_delta kronecker_product kummer_m kummer_u kurtosis kurtosis_bernoulli kurtosis_beta kurtosis_binomial kurtosis_chi2 kurtosis_continuous_uniform kurtosis_discrete_uniform kurtosis_exp kurtosis_f kurtosis_gamma kurtosis_general_finite_discrete kurtosis_geometric kurtosis_gumbel kurtosis_hypergeometric kurtosis_laplace kurtosis_logistic kurtosis_lognormal kurtosis_negative_binomial kurtosis_noncentral_chi2 kurtosis_noncentral_student_t kurtosis_normal kurtosis_pareto kurtosis_poisson kurtosis_rayleigh kurtosis_student_t kurtosis_weibull label labels lagrange laguerre lambda lambert_w laplace laplacian_matrix last lbfgs lc2kdt lcharp lc_l lcm lc_u ldefint ldisp ldisplay legendre_p legendre_q leinstein length let letrules letsimp levi_civita lfreeof lgtreillis lhs li liediff limit Lindstedt linear linearinterpol linear_program linear_regression line_graph linsolve listarray list_correlations listify list_matrix_entries list_nc_monomials listoftens listofvars listp lmax lmin load loadfile local locate_matrix_entry log logcontract log_gamma lopow lorentz_gauge lowercasep lpart lratsubst lreduce lriemann lsquares_estimates lsquares_estimates_approximate lsquares_estimates_exact lsquares_mse lsquares_residual_mse lsquares_residuals lsum ltreillis lu_backsub lucas lu_factor %m macroexpand macroexpand1 make_array makebox makefact makegamma make_graph make_level_picture makelist makeOrders make_poly_continent make_poly_country make_polygon make_random_state make_rgb_picture makeset make_string_input_stream make_string_output_stream make_transform mandelbrot mandelbrot_set map mapatom maplist matchdeclare matchfix mat_cond mat_fullunblocker mat_function mathml_display mat_norm matrix matrixmap matrixp matrix_size mattrace mat_trace mat_unblocker max max_clique max_degree max_flow maximize_lp max_independent_set max_matching maybe md5sum mean mean_bernoulli mean_beta mean_binomial mean_chi2 mean_continuous_uniform mean_deviation mean_discrete_uniform mean_exp mean_f mean_gamma mean_general_finite_discrete mean_geometric mean_gumbel mean_hypergeometric mean_laplace mean_logistic mean_lognormal mean_negative_binomial mean_noncentral_chi2 mean_noncentral_student_t mean_normal mean_pareto mean_poisson mean_rayleigh mean_student_t mean_weibull median median_deviation member mesh metricexpandall mgf1_sha1 min min_degree min_edge_cut minfactorial minimalPoly minimize_lp minimum_spanning_tree minor minpack_lsquares minpack_solve min_vertex_cover min_vertex_cut mkdir mnewton mod mode_declare mode_identity ModeMatrix moebius mon2schur mono monomial_dimensions multibernstein_poly multi_display_for_texinfo multi_elem multinomial multinomial_coeff multi_orbit multiplot_mode multi_pui multsym multthru mycielski_graph nary natural_unit nc_degree ncexpt ncharpoly negative_picture neighbors new newcontext newdet new_graph newline newton new_variable next_prime nicedummies niceindices ninth nofix nonarray noncentral_moment nonmetricity nonnegintegerp nonscalarp nonzeroandfreeof notequal nounify nptetrad npv nroots nterms ntermst nthroot nullity nullspace num numbered_boundaries numberp number_to_octets num_distinct_partitions numerval numfactor num_partitions nusum nzeta nzetai nzetar octets_to_number octets_to_oid odd_girth oddp ode2 ode_check odelin oid_to_octets op opena opena_binary openr openr_binary openw openw_binary operatorp opsubst optimize %or orbit orbits ordergreat ordergreatp orderless orderlessp orthogonal_complement orthopoly_recur orthopoly_weight outermap out_neighbors outofpois pade parabolic_cylinder_d parametric parametric_surface parg parGosper parse_string parse_timedate part part2cont partfrac partition partition_set partpol path_digraph path_graph pathname_directory pathname_name pathname_type pdf_bernoulli pdf_beta pdf_binomial pdf_cauchy pdf_chi2 pdf_continuous_uniform pdf_discrete_uniform pdf_exp pdf_f pdf_gamma pdf_general_finite_discrete pdf_geometric pdf_gumbel pdf_hypergeometric pdf_laplace pdf_logistic pdf_lognormal pdf_negative_binomial pdf_noncentral_chi2 pdf_noncentral_student_t pdf_normal pdf_pareto pdf_poisson pdf_rank_sum pdf_rayleigh pdf_signed_rank pdf_student_t pdf_weibull pearson_skewness permanent permut permutation permutations petersen_graph petrov pickapart picture_equalp picturep piechart piechart_description planar_embedding playback plog plot2d plot3d plotdf ploteq plsquares pochhammer points poisdiff poisexpt poisint poismap poisplus poissimp poissubst poistimes poistrim polar polarform polartorect polar_to_xy poly_add poly_buchberger poly_buchberger_criterion poly_colon_ideal poly_content polydecomp poly_depends_p poly_elimination_ideal poly_exact_divide poly_expand poly_expt poly_gcd polygon poly_grobner poly_grobner_equal poly_grobner_member poly_grobner_subsetp poly_ideal_intersection poly_ideal_polysaturation poly_ideal_polysaturation1 poly_ideal_saturation poly_ideal_saturation1 poly_lcm poly_minimization polymod poly_multiply polynome2ele polynomialp poly_normal_form poly_normalize poly_normalize_list poly_polysaturation_extension poly_primitive_part poly_pseudo_divide poly_reduced_grobner poly_reduction poly_saturation_extension poly_s_polynomial poly_subtract polytocompanion pop postfix potential power_mod powerseries powerset prefix prev_prime primep primes principal_components print printf printfile print_graph printpois printprops prodrac product properties propvars psi psubst ptriangularize pui pui2comp pui2ele pui2polynome pui_direct puireduc push put pv qput qrange qty quad_control quad_qag quad_qagi quad_qagp quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quadrilateral quantile quantile_bernoulli quantile_beta quantile_binomial quantile_cauchy quantile_chi2 quantile_continuous_uniform quantile_discrete_uniform quantile_exp quantile_f quantile_gamma quantile_general_finite_discrete quantile_geometric quantile_gumbel quantile_hypergeometric quantile_laplace quantile_logistic quantile_lognormal quantile_negative_binomial quantile_noncentral_chi2 quantile_noncentral_student_t quantile_normal quantile_pareto quantile_poisson quantile_rayleigh quantile_student_t quantile_weibull quartile_skewness quit qunit quotient racah_v racah_w radcan radius random random_bernoulli random_beta random_binomial random_bipartite_graph random_cauchy random_chi2 random_continuous_uniform random_digraph random_discrete_uniform random_exp random_f random_gamma random_general_finite_discrete random_geometric random_graph random_graph1 random_gumbel random_hypergeometric random_laplace random_logistic random_lognormal random_negative_binomial random_network random_noncentral_chi2 random_noncentral_student_t random_normal random_pareto random_permutation random_poisson random_rayleigh random_regular_graph random_student_t random_tournament random_tree random_weibull range rank rat ratcoef ratdenom ratdiff ratdisrep ratexpand ratinterpol rational rationalize ratnumer ratnump ratp ratsimp ratsubst ratvars ratweight read read_array read_binary_array read_binary_list read_binary_matrix readbyte readchar read_hashed_array readline read_list read_matrix read_nested_list readonly read_xpm real_imagpart_to_conjugate realpart realroots rearray rectangle rectform rectform_log_if_constant recttopolar rediff reduce_consts reduce_order region region_boundaries region_boundaries_plus rem remainder remarray rembox remcomps remcon remcoord remfun remfunction remlet remove remove_constvalue remove_dimensions remove_edge remove_fundamental_dimensions remove_fundamental_units remove_plot_option remove_vertex rempart remrule remsym remvalue rename rename_file reset reset_displays residue resolvante resolvante_alternee1 resolvante_bipartite resolvante_diedrale resolvante_klein resolvante_klein3 resolvante_produit_sym resolvante_unitaire resolvante_vierer rest resultant return reveal reverse revert revert2 rgb2level rhs ricci riemann rinvariant risch rk rmdir rncombine romberg room rootscontract round row rowop rowswap rreduce run_testsuite %s save saving scalarp scaled_bessel_i scaled_bessel_i0 scaled_bessel_i1 scalefactors scanmap scatterplot scatterplot_description scene schur2comp sconcat scopy scsimp scurvature sdowncase sec sech second sequal sequalignore set_alt_display setdifference set_draw_defaults set_edge_weight setelmx setequalp setify setp set_partitions set_plot_option set_prompt set_random_state set_tex_environment set_tex_environment_default setunits setup_autoload set_up_dot_simplifications set_vertex_label seventh sexplode sf sha1sum sha256sum shortest_path shortest_weighted_path show showcomps showratvars sierpinskiale sierpinskimap sign signum similaritytransform simp_inequality simplify_sum simplode simpmetderiv simtran sin sinh sinsert sinvertcase sixth skewness skewness_bernoulli skewness_beta skewness_binomial skewness_chi2 skewness_continuous_uniform skewness_discrete_uniform skewness_exp skewness_f skewness_gamma skewness_general_finite_discrete skewness_geometric skewness_gumbel skewness_hypergeometric skewness_laplace skewness_logistic skewness_lognormal skewness_negative_binomial skewness_noncentral_chi2 skewness_noncentral_student_t skewness_normal skewness_pareto skewness_poisson skewness_rayleigh skewness_student_t skewness_weibull slength smake small_rhombicosidodecahedron_graph small_rhombicuboctahedron_graph smax smin smismatch snowmap snub_cube_graph snub_dodecahedron_graph solve solve_rec solve_rec_rat some somrac sort sparse6_decode sparse6_encode sparse6_export sparse6_import specint spherical spherical_bessel_j spherical_bessel_y spherical_hankel1 spherical_hankel2 spherical_harmonic spherical_to_xyz splice split sposition sprint sqfr sqrt sqrtdenest sremove sremovefirst sreverse ssearch ssort sstatus ssubst ssubstfirst staircase standardize standardize_inverse_trig starplot starplot_description status std std1 std_bernoulli std_beta std_binomial std_chi2 std_continuous_uniform std_discrete_uniform std_exp std_f std_gamma std_general_finite_discrete std_geometric std_gumbel std_hypergeometric std_laplace std_logistic std_lognormal std_negative_binomial std_noncentral_chi2 std_noncentral_student_t std_normal std_pareto std_poisson std_rayleigh std_student_t std_weibull stemplot stirling stirling1 stirling2 strim striml strimr string stringout stringp strong_components struve_h struve_l sublis sublist sublist_indices submatrix subsample subset subsetp subst substinpart subst_parallel substpart substring subvar subvarp sum sumcontract summand_to_rec supcase supcontext symbolp symmdifference symmetricp system take_channel take_inference tan tanh taylor taylorinfo taylorp taylor_simplifier taytorat tcl_output tcontract tellrat tellsimp tellsimpafter tentex tenth test_mean test_means_difference test_normality test_proportion test_proportions_difference test_rank_sum test_sign test_signed_rank test_variance test_variance_ratio tex tex1 tex_display texput %th third throw time timedate timer timer_info tldefint tlimit todd_coxeter toeplitz tokens to_lisp topological_sort to_poly to_poly_solve totaldisrep totalfourier totient tpartpol trace tracematrix trace_options transform_sample translate translate_file transpose treefale tree_reduce treillis treinat triangle triangularize trigexpand trigrat trigreduce trigsimp trunc truncate truncated_cube_graph truncated_dodecahedron_graph truncated_icosahedron_graph truncated_tetrahedron_graph tr_warnings_get tube tutte_graph ueivects uforget ultraspherical underlying_graph undiff union unique uniteigenvectors unitp units unit_step unitvector unorder unsum untellrat untimer untrace uppercasep uricci uriemann uvect vandermonde_matrix var var1 var_bernoulli var_beta var_binomial var_chi2 var_continuous_uniform var_discrete_uniform var_exp var_f var_gamma var_general_finite_discrete var_geometric var_gumbel var_hypergeometric var_laplace var_logistic var_lognormal var_negative_binomial var_noncentral_chi2 var_noncentral_student_t var_normal var_pareto var_poisson var_rayleigh var_student_t var_weibull vector vectorpotential vectorsimp verbify vers vertex_coloring vertex_connectivity vertex_degree vertex_distance vertex_eccentricity vertex_in_degree vertex_out_degree vertices vertices_to_cycle vertices_to_path %w weyl wheel_graph wiener_index wigner_3j wigner_6j wigner_9j with_stdout write_binary_data writebyte write_data writefile wronskian xreduce xthru %y Zeilberger zeroequiv zerofor zeromatrix zeromatrixp zeta zgeev zheev zlange zn_add_table zn_carmichael_lambda zn_characteristic_factors zn_determinant zn_factor_generators zn_invert_by_lu zn_log zn_mult_table absboxchar activecontexts adapt_depth additive adim aform algebraic algepsilon algexact aliases allbut all_dotsimp_denoms allocation allsym alphabetic animation antisymmetric arrays askexp assume_pos assume_pos_pred assumescalar asymbol atomgrad atrig1 axes axis_3d axis_bottom axis_left axis_right axis_top azimuth background background_color backsubst berlefact bernstein_explicit besselexpand beta_args_sum_to_integer beta_expand bftorat bftrunc bindtest border boundaries_array box boxchar breakup %c capping cauchysum cbrange cbtics center cflength cframe_flag cnonmet_flag color color_bar color_bar_tics colorbox columns commutative complex cone context contexts contour contour_levels cosnpiflag ctaypov ctaypt ctayswitch ctayvar ct_coords ctorsion_flag ctrgsimp cube current_let_rule_package cylinder data_file_name debugmode decreasing default_let_rule_package delay dependencies derivabbrev derivsubst detout diagmetric diff dim dimensions dispflag display2d|10 display_format_internal distribute_over doallmxops domain domxexpt domxmxops domxnctimes dontfactor doscmxops doscmxplus dot0nscsimp dot0simp dot1simp dotassoc dotconstrules dotdistrib dotexptsimp dotident dotscrules draw_graph_program draw_realpart edge_color edge_coloring edge_partition edge_type edge_width %edispflag elevation %emode endphi endtheta engineering_format_floats enhanced3d %enumer epsilon_lp erfflag erf_representation errormsg error_size error_syms error_type %e_to_numlog eval even evenfun evflag evfun ev_point expandwrt_denom expintexpand expintrep expon expop exptdispflag exptisolate exptsubst facexpand facsum_combine factlim factorflag factorial_expand factors_only fb feature features file_name file_output_append file_search_demo file_search_lisp file_search_maxima|10 file_search_tests file_search_usage file_type_lisp file_type_maxima|10 fill_color fill_density filled_func fixed_vertices flipflag float2bf font font_size fortindent fortspaces fpprec fpprintprec functions gamma_expand gammalim gdet genindex gensumnum GGFCFMAX GGFINFINITY globalsolve gnuplot_command gnuplot_curve_styles gnuplot_curve_titles gnuplot_default_term_command gnuplot_dumb_term_command gnuplot_file_args gnuplot_file_name gnuplot_out_file gnuplot_pdf_term_command gnuplot_pm3d gnuplot_png_term_command gnuplot_postamble gnuplot_preamble gnuplot_ps_term_command gnuplot_svg_term_command gnuplot_term gnuplot_view_args Gosper_in_Zeilberger gradefs grid grid2d grind halfangles head_angle head_both head_length head_type height hypergeometric_representation %iargs ibase icc1 icc2 icounter idummyx ieqnprint ifb ifc1 ifc2 ifg ifgi ifr iframe_bracket_form ifri igeowedge_flag ikt1 ikt2 imaginary inchar increasing infeval infinity inflag infolists inm inmc1 inmc2 intanalysis integer integervalued integrate_use_rootsof integration_constant integration_constant_counter interpolate_color intfaclim ip_grid ip_grid_in irrational isolate_wrt_times iterations itr julia_parameter %k1 %k2 keepfloat key key_pos kinvariant kt label label_alignment label_orientation labels lassociative lbfgs_ncorrections lbfgs_nfeval_max leftjust legend letrat let_rule_packages lfg lg lhospitallim limsubst linear linear_solver linechar linel|10 linenum line_type linewidth line_width linsolve_params linsolvewarn lispdisp listarith listconstvars listdummyvars lmxchar load_pathname loadprint logabs logarc logcb logconcoeffp logexpand lognegint logsimp logx logx_secondary logy logy_secondary logz lriem m1pbranch macroexpansion macros mainvar manual_demo maperror mapprint matrix_element_add matrix_element_mult matrix_element_transpose maxapplydepth maxapplyheight maxima_tempdir|10 maxima_userdir|10 maxnegex MAX_ORD maxposex maxpsifracdenom maxpsifracnum maxpsinegint maxpsiposint maxtayorder mesh_lines_color method mod_big_prime mode_check_errorp mode_checkp mode_check_warnp mod_test mod_threshold modular_linear_solver modulus multiplicative multiplicities myoptions nary negdistrib negsumdispflag newline newtonepsilon newtonmaxiter nextlayerfactor niceindicespref nm nmc noeval nolabels nonegative_lp noninteger nonscalar noun noundisp nouns np npi nticks ntrig numer numer_pbranch obase odd oddfun opacity opproperties opsubst optimprefix optionset orientation origin orthopoly_returns_intervals outative outchar packagefile palette partswitch pdf_file pfeformat phiresolution %piargs piece pivot_count_sx pivot_max_sx plot_format plot_options plot_realpart png_file pochhammer_max_index points pointsize point_size points_joined point_type poislim poisson poly_coefficient_ring poly_elimination_order polyfactor poly_grobner_algorithm poly_grobner_debug poly_monomial_order poly_primary_elimination_order poly_return_term_list poly_secondary_elimination_order poly_top_reduction_only posfun position powerdisp pred prederror primep_number_of_tests product_use_gamma program programmode promote_float_to_bigfloat prompt proportional_axes props psexpand ps_file radexpand radius radsubstflag rassociative ratalgdenom ratchristof ratdenomdivide rateinstein ratepsilon ratfac rational ratmx ratprint ratriemann ratsimpexpons ratvarswitch ratweights ratweyl ratwtlvl real realonly redraw refcheck resolution restart resultant ric riem rmxchar %rnum_list rombergabs rombergit rombergmin rombergtol rootsconmode rootsepsilon run_viewer same_xy same_xyz savedef savefactors scalar scalarmatrixp scale scale_lp setcheck setcheckbreak setval show_edge_color show_edges show_edge_type show_edge_width show_id show_label showtime show_vertex_color show_vertex_size show_vertex_type show_vertices show_weight simp simplified_output simplify_products simpproduct simpsum sinnpiflag solvedecomposes solveexplicit solvefactors solvenullwarn solveradcan solvetrigwarn space sparse sphere spring_embedding_depth sqrtdispflag stardisp startphi starttheta stats_numer stringdisp structures style sublis_apply_lambda subnumsimp sumexpand sumsplitfact surface surface_hide svg_file symmetric tab taylordepth taylor_logexpand taylor_order_coefficients taylor_truncate_polynomials tensorkill terminal testsuite_files thetaresolution timer_devalue title tlimswitch tr track transcompile transform transform_xy translate_fast_arrays transparent transrun tr_array_as_ref tr_bound_function_applyp tr_file_tty_messagesp tr_float_can_branch_complex tr_function_call_default trigexpandplus trigexpandtimes triginverses trigsign trivial_solutions tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars tr_warn_bad_function_calls tr_warn_fexpr tr_warn_meval tr_warn_mode tr_warn_undeclared tr_warn_undefined_variable tstep ttyoff tube_extremes ufg ug %unitexpand unit_vectors uric uriem use_fast_arrays user_preamble usersetunits values vect_cross verbose vertex_color vertex_coloring vertex_partition vertex_size vertex_type view warnings weyl width windowname windowtitle wired_surface wireframe xaxis xaxis_color xaxis_secondary xaxis_type xaxis_width xlabel xlabel_secondary xlength xrange xrange_secondary xtics xtics_axis xtics_rotate xtics_rotate_secondary xtics_secondary xtics_secondary_axis xu_grid x_voxel xy_file xyplane xy_scale yaxis yaxis_color yaxis_secondary yaxis_type yaxis_width ylabel ylabel_secondary ylength yrange yrange_secondary ytics ytics_axis ytics_rotate ytics_rotate_secondary ytics_secondary ytics_secondary_axis yv_grid y_voxel yx_ratio zaxis zaxis_color zaxis_type zaxis_width zeroa zerob zerobern zeta%pi zlabel zlabel_rotate zlength zmin zn_primroot_limit zn_primroot_pretest",symbol:"_ __ %|0 %%|0"},contains:[{className:"comment",begin:"/\\*",end:"\\*/",contains:["self"]},e.QUOTE_STRING_MODE,{className:"number",relevance:0,variants:[{begin:"\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Ee][-+]?\\d+\\b"},{begin:"\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Bb][-+]?\\d+\\b",relevance:10},{begin:"\\b(\\.\\d+|\\d+\\.\\d+)\\b"},{begin:"\\b(\\d+|0[0-9A-Za-z]+)\\.?\\b"}]}],illegal:/@/}}},function(e,t){e.exports=function(e){return{keywords:"int float string vector matrix if else switch case default while do for in break continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor animDisplay animView annotate appendStringArray applicationName applyAttrPreset applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem componentEditor compositingInterop computePolysetVolume condition cone confirmDialog connectAttr connectControl connectDynamic connectJoint connectionInfo constrain constrainValue constructionHistory container containsMultibyte contextInfo control convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected displayColor displayCull displayLevelOfDetail displayPref displayRGBColor displaySmoothness displayStats displayString displaySurface distanceDimContext distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor editorTemplate effector emit emitter enableDevice encodeString endString endsWith env equivalent equivalentTol erf error eval evalDeferred evalEcho event exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo filetest filletCurve filter filterCurve filterExpand filterStudioImport findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss geometryConstraint getApplicationVersionAsFloat getAttr getClassification getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation listNodeTypes listPanelCategories listRelatives listSets listTransforms listUnselected listerEditor loadFluid loadNewShelf loadPlugin loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration panelHistory paramDimContext paramDimension paramLocator parent parentConstraint particle particleExists particleInstancer particleRenderInfo partition pasteKey pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE registerPluginResource rehash reloadImage removeJoint removeMultiInstance removePanelCategory rename renameAttr renameSelectionList renameUI render renderGlobalsNode renderInfo renderLayerButton renderLayerParent renderLayerPostProcess renderLayerUnparent renderManip renderPartition renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor renderWindowSelectContext renderer reorder reorderDeformers requires reroot resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType selectedNodes selectionConnection separator setAttr setAttrEnumResource setAttrMapping setAttrNiceNameResource setConstraintRestPosition setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField shortNameOf showHelp showHidden showManipCtx showSelectionInTitle showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString stringToStringArray strip stripPrefixFromName stroke subdAutoProjection subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList textToShelf textureDisplacePlane textureHairColor texturePlacementContext textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper trace track trackCtx transferAttributes transformCompare transformLimits translator trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform",illegal:"</",contains:[e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:"[\\$\\%\\@](\\^\\w\\b|#\\w+|[^\\s\\w{]|{\\w+}|\\w+)"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}}},function(e,t){e.exports=function(e){var t=e.COMMENT("%","$"),n=e.inherit(e.APOS_STRING_MODE,{relevance:0}),r=e.inherit(e.QUOTE_STRING_MODE,{relevance:0});r.contains.push({className:"subst",begin:"\\\\[abfnrtv]\\|\\\\x[0-9a-fA-F]*\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]",relevance:0});return{aliases:["m","moo"],keywords:{keyword:"module use_module import_module include_module end_module initialise mutable initialize finalize finalise interface implementation pred mode func type inst solver any_pred any_func is semidet det nondet multi erroneous failure cc_nondet cc_multi typeclass instance where pragma promise external trace atomic or_else require_complete_switch require_det require_semidet require_multi require_nondet require_cc_multi require_cc_nondet require_erroneous require_failure",meta:"inline no_inline type_spec source_file fact_table obsolete memo loop_check minimal_model terminates does_not_terminate check_termination promise_equivalent_clauses foreign_proc foreign_decl foreign_code foreign_type foreign_import_module foreign_export_enum foreign_export foreign_enum may_call_mercury will_not_call_mercury thread_safe not_thread_safe maybe_thread_safe promise_pure promise_semipure tabled_for_io local untrailed trailed attach_to_io_state can_pass_as_mercury_type stable will_not_throw_exception may_modify_trail will_not_modify_trail may_duplicate may_not_duplicate affects_liveness does_not_affect_liveness doesnt_affect_liveness no_sharing unknown_sharing sharing",built_in:"some all not if then else true fail false try catch catch_any semidet_true semidet_false semidet_fail impure_true impure semipure"},contains:[{className:"built_in",variants:[{begin:"<=>"},{begin:"<=",relevance:0},{begin:"=>",relevance:0},{begin:"/\\\\"},{begin:"\\\\/"}]},{className:"built_in",variants:[{begin:":-\\|--\x3e"},{begin:"=",relevance:0}]},t,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"0'.\\|0[box][0-9a-fA-F]*"},e.NUMBER_MODE,n,r,{begin:/:-/}]}}},function(e,t){e.exports=function(e){return{case_insensitive:!0,aliases:["mips"],lexemes:"\\.?"+e.IDENT_RE,keywords:{meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ",built_in:"$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 k0 k1 gp sp fp ra $f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 $f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt "},contains:[{className:"keyword",begin:"\\b(addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(.hb)?|jr(.hb)?|lbu?|lhu?|ll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|srlv?|subu?|sw[lr]?|xori?|wsbh|abs.[sd]|add.[sd]|alnv.ps|bc1[ft]l?|c.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et]).[sd]|(ceil|floor|round|trunc).[lw].[sd]|cfc1|cvt.d.[lsw]|cvt.l.[dsw]|cvt.ps.s|cvt.s.[dlw]|cvt.s.p[lu]|cvt.w.[dls]|div.[ds]|ldx?c1|luxc1|lwx?c1|madd.[sd]|mfc1|mov[fntz]?.[ds]|msub.[sd]|mth?c1|mul.[ds]|neg.[ds]|nmadd.[ds]|nmsub.[ds]|p[lu][lu].ps|recip.fmt|r?sqrt.[ds]|sdx?c1|sub.[ds]|suxc1|swx?c1|break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|tlti?u?|tnei?|wait|wrpgpr)",end:"\\s"},e.COMMENT("[;#]","$"),e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{begin:"0x[0-9a-f]+"},{begin:"\\b-?\\d+"}],relevance:0},{className:"symbol",variants:[{begin:"^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"^\\s*[0-9]+:"},{begin:"[0-9]+[bf]"}],relevance:0}],illegal:"/"}}},function(e,t){e.exports=function(e){return{keywords:"environ vocabularies notations constructors definitions registrations theorems schemes requirements begin end definition registration cluster existence pred func defpred deffunc theorem proof let take assume then thus hence ex for st holds consider reconsider such that and in provided of as from be being by means equals implies iff redefine define now not or attr is mode suppose per cases set thesis contradiction scheme reserve struct correctness compatibility coherence symmetry assymetry reflexivity irreflexivity connectedness uniqueness commutativity idempotence involutiveness projectivity",contains:[e.COMMENT("::","$")]}}},function(e,t){e.exports=function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",n={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:t},r={begin:"->{",end:"}"},o={variants:[{begin:/\$\d/},{begin:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{begin:/[\$%@][^\s\w{]/,relevance:0}]},i=[e.BACKSLASH_ESCAPE,n,o],a=[o,e.HASH_COMMENT_MODE,e.COMMENT("^\\=\\w","\\=cut",{endsWithParent:!0}),r,{className:"string",contains:i,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*\\<",end:"\\>",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:"{\\w+}",contains:[],relevance:0},{begin:"-?\\w+\\s*\\=\\>",contains:[],relevance:0}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",begin:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",relevance:10},{className:"regexp",begin:"(m|qr)?/",end:"/[a-z]*",contains:[e.BACKSLASH_ESCAPE],relevance:0}]},{className:"function",beginKeywords:"sub",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return n.contains=a,r.contains=a,{aliases:["pl","pm"],lexemes:/[\w\.]+/,keywords:t,contains:a}}},function(e,t){e.exports=function(e){return{subLanguage:"xml",contains:[{className:"meta",begin:"^__(END|DATA)__$"},{begin:"^\\s*%{1,2}={0,2}",end:"$",subLanguage:"perl"},{begin:"<%{1,2}={0,2}",end:"={0,1}%>",subLanguage:"perl",excludeBegin:!0,excludeEnd:!0}]}}},function(e,t){e.exports=function(e){var t={className:"number",relevance:0,variants:[{begin:"[$][a-fA-F0-9]+"},e.NUMBER_MODE]};return{case_insensitive:!0,keywords:{keyword:"public private property continue exit extern new try catch eachin not abstract final select case default const local global field end if then else elseif endif while wend repeat until forever for to step next return module inline throw import",built_in:"DebugLog DebugStop Error Print ACos ACosr ASin ASinr ATan ATan2 ATan2r ATanr Abs Abs Ceil Clamp Clamp Cos Cosr Exp Floor Log Max Max Min Min Pow Sgn Sgn Sin Sinr Sqrt Tan Tanr Seed PI HALFPI TWOPI",literal:"true false null and or shl shr mod"},illegal:/\/\*/,contains:[e.COMMENT("#rem","#end"),e.COMMENT("'","$",{relevance:0}),{className:"function",beginKeywords:"function method",end:"[(=:]|$",illegal:/\n/,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"class",beginKeywords:"class interface",end:"$",contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{className:"built_in",begin:"\\b(self|super)\\b"},{className:"meta",begin:"\\s*#",end:"$",keywords:{"meta-keyword":"if else elseif endif end then"}},{className:"meta",begin:"^\\s*strict\\b"},{beginKeywords:"alias",end:"=",contains:[e.UNDERSCORE_TITLE_MODE]},e.QUOTE_STRING_MODE,t]}}},function(e,t){e.exports=function(e){var t={keyword:"if then not for in while do return else elseif break continue switch and or unless when class extends super local import export from using",literal:"true false nil",built_in:"_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug io math os package string table"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={className:"subst",begin:/#\{/,end:/}/,keywords:t},o=[e.inherit(e.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}}),{className:"string",variants:[{begin:/'/,end:/'/,contains:[e.BACKSLASH_ESCAPE]},{begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,r]}]},{className:"built_in",begin:"@__"+e.IDENT_RE},{begin:"@"+e.IDENT_RE},{begin:e.IDENT_RE+"\\\\"+e.IDENT_RE}];r.contains=o;var i=e.inherit(e.TITLE_MODE,{begin:n}),a={className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(o)}]};return{aliases:["moon"],keywords:t,illegal:/\/\*/,contains:o.concat([e.COMMENT("--","$"),{className:"function",begin:"^\\s*"+n+"\\s*=\\s*(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[i,a]},{begin:/[\(,:=]\s*/,relevance:0,contains:[{className:"function",begin:"(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[a]}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[i]},i]},{className:"name",begin:n+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}}},function(e,t){e.exports=function(e){return{case_insensitive:!0,contains:[{beginKeywords:"build create index delete drop explain infer|10 insert merge prepare select update upsert|10",end:/;/,endsWithParent:!0,keywords:{keyword:"all alter analyze and any array as asc begin between binary boolean break bucket build by call case cast cluster collate collection commit connect continue correlate cover create database dataset datastore declare decrement delete derived desc describe distinct do drop each element else end every except exclude execute exists explain fetch first flatten for force from function grant group gsi having if ignore ilike in include increment index infer inline inner insert intersect into is join key keys keyspace known last left let letting like limit lsm map mapping matched materialized merge minus namespace nest not number object offset on option or order outer over parse partition password path pool prepare primary private privilege procedure public raw realm reduce rename return returning revoke right role rollback satisfies schema select self semi set show some start statistics string system then to transaction trigger truncate under union unique unknown unnest unset update upsert use user using validate value valued values via view when where while with within work xor",literal:"true false null missing|5",built_in:"array_agg array_append array_concat array_contains array_count array_distinct array_ifnull array_length array_max array_min array_position array_prepend array_put array_range array_remove array_repeat array_replace array_reverse array_sort array_sum avg count max min sum greatest least ifmissing ifmissingornull ifnull missingif nullif ifinf ifnan ifnanorinf naninf neginfif posinfif clock_millis clock_str date_add_millis date_add_str date_diff_millis date_diff_str date_part_millis date_part_str date_trunc_millis date_trunc_str duration_to_str millis str_to_millis millis_to_str millis_to_utc millis_to_zone_name now_millis now_str str_to_duration str_to_utc str_to_zone_name decode_json encode_json encoded_size poly_length base64 base64_encode base64_decode meta uuid abs acos asin atan atan2 ceil cos degrees e exp ln log floor pi power radians random round sign sin sqrt tan trunc object_length object_names object_pairs object_inner_pairs object_values object_inner_values object_add object_put object_remove object_unwrap regexp_contains regexp_like regexp_position regexp_replace contains initcap length lower ltrim position repeat replace rtrim split substr title trim upper isarray isatom isboolean isnumber isobject isstring type toarray toatom toboolean tonumber toobject tostring"},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"symbol",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE],relevance:2},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE]}}},function(e,t){e.exports=function(e){var t={className:"variable",variants:[{begin:/\$\d+/},{begin:/\$\{/,end:/}/},{begin:"[\\$\\@]"+e.UNDERSCORE_IDENT_RE}]},n={endsWithParent:!0,lexemes:"[a-z/_]+",keywords:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},relevance:0,illegal:"=>",contains:[e.HASH_COMMENT_MODE,{className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/}]},{begin:"([a-z]+):/",end:"\\s",endsWithParent:!0,excludeEnd:!0,contains:[t]},{className:"regexp",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:"\\s\\^",end:"\\s|{|;",returnEnd:!0},{begin:"~\\*?\\s+",end:"\\s|{|;",returnEnd:!0},{begin:"\\*(\\.[a-z\\-]+)+"},{begin:"([a-z\\-]+\\.)+\\*"}]},{className:"number",begin:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{className:"number",begin:"\\b\\d+[kKmMgGdshdwy]*\\b",relevance:0},t]};return{aliases:["nginxconf"],contains:[e.HASH_COMMENT_MODE,{begin:e.UNDERSCORE_IDENT_RE+"\\s+{",returnBegin:!0,end:"{",contains:[{className:"section",begin:e.UNDERSCORE_IDENT_RE}],relevance:0},{begin:e.UNDERSCORE_IDENT_RE+"\\s",end:";|{",returnBegin:!0,contains:[{className:"attribute",begin:e.UNDERSCORE_IDENT_RE,starts:n}],relevance:0}],illegal:"[^\\s\\}]"}}},function(e,t){e.exports=function(e){return{aliases:["nim"],keywords:{keyword:"addr and as asm bind block break case cast const continue converter discard distinct div do elif else end enum except export finally for from generic if import in include interface is isnot iterator let macro method mixin mod nil not notin object of or out proc ptr raise ref return shl shr static template try tuple type using var when while with without xor yield",literal:"shared guarded stdin stdout stderr result true false",built_in:"int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float float32 float64 bool char string cstring pointer expr stmt void auto any range array openarray varargs seq set clong culong cchar cschar cshort cint csize clonglong cfloat cdouble clongdouble cuchar cushort cuint culonglong cstringarray semistatic"},contains:[{className:"meta",begin:/{\./,end:/\.}/,relevance:10},{className:"string",begin:/[a-zA-Z]\w*"/,end:/"/,contains:[{begin:/""/}]},{className:"string",begin:/([a-zA-Z]\w*)?"""/,end:/"""/},e.QUOTE_STRING_MODE,{className:"type",begin:/\b[A-Z]\w+\b/,relevance:0},{className:"number",relevance:0,variants:[{begin:/\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/},{begin:/\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/},{begin:/\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/},{begin:/\b(\d[_\d]*)('?[iIuUfF](8|16|32|64))?/}]},e.HASH_COMMENT_MODE]}}},function(e,t){e.exports=function(e){var t={keyword:"rec with let in inherit assert if else then",literal:"true false or and null",built_in:"import abort baseNameOf dirOf isNull builtins map removeAttrs throw toString derivation"},n={className:"subst",begin:/\$\{/,end:/}/,keywords:t},r={className:"string",contains:[n],variants:[{begin:"''",end:"''"},{begin:'"',end:'"'}]},o=[e.NUMBER_MODE,e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,{begin:/[a-zA-Z0-9-_]+(\s*=)/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/\S+/}]}];return n.contains=o,{aliases:["nixos"],keywords:t,contains:o}}},function(e,t){e.exports=function(e){var t={className:"variable",begin:/\$+{[\w\.:-]+}/},n={className:"variable",begin:/\$+\w+/,illegal:/\(\){}/},r={className:"variable",begin:/\$+\([\w\^\.:-]+\)/},o={className:"string",variants:[{begin:'"',end:'"'},{begin:"'",end:"'"},{begin:"`",end:"`"}],illegal:/\n/,contains:[{className:"meta",begin:/\$(\\[nrt]|\$)/},{className:"variable",begin:/\$(ADMINTOOLS|APPDATA|CDBURN_AREA|CMDLINE|COMMONFILES32|COMMONFILES64|COMMONFILES|COOKIES|DESKTOP|DOCUMENTS|EXEDIR|EXEFILE|EXEPATH|FAVORITES|FONTS|HISTORY|HWNDPARENT|INSTDIR|INTERNET_CACHE|LANGUAGE|LOCALAPPDATA|MUSIC|NETHOOD|OUTDIR|PICTURES|PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES32|PROGRAMFILES64|PROGRAMFILES|QUICKLAUNCH|RECENT|RESOURCES_LOCALIZED|RESOURCES|SENDTO|SMPROGRAMS|SMSTARTUP|STARTMENU|SYSDIR|TEMP|TEMPLATES|VIDEOS|WINDIR)/},t,n,r]};return{case_insensitive:!1,keywords:{keyword:"Abort AddBrandingImage AddSize AllowRootDirInstall AllowSkipFiles AutoCloseWindow BGFont BGGradient BrandingText BringToFront Call CallInstDLL Caption ChangeUI CheckBitmap ClearErrors CompletedText ComponentText CopyFiles CRCCheck CreateDirectory CreateFont CreateShortCut Delete DeleteINISec DeleteINIStr DeleteRegKey DeleteRegValue DetailPrint DetailsButtonText DirText DirVar DirVerify EnableWindow EnumRegKey EnumRegValue Exch Exec ExecShell ExecShellWait ExecWait ExpandEnvStrings File FileBufSize FileClose FileErrorText FileOpen FileRead FileReadByte FileReadUTF16LE FileReadWord FileSeek FileWrite FileWriteByte FileWriteUTF16LE FileWriteWord FindClose FindFirst FindNext FindWindow FlushINI FunctionEnd GetCurInstType GetCurrentAddress GetDlgItem GetDLLVersion GetDLLVersionLocal GetErrorLevel GetFileTime GetFileTimeLocal GetFullPathName GetFunctionAddress GetInstDirError GetLabelAddress GetTempFileName Goto HideWindow Icon IfAbort IfErrors IfFileExists IfRebootFlag IfSilent InitPluginsDir InstallButtonText InstallColors InstallDir InstallDirRegKey InstProgressFlags InstType InstTypeGetText InstTypeSetText Int64Cmp Int64CmpU Int64Fmt IntCmp IntCmpU IntFmt IntOp IntPtrCmp IntPtrCmpU IntPtrOp IsWindow LangString LicenseBkColor LicenseData LicenseForceSelection LicenseLangString LicenseText LoadLanguageFile LockWindow LogSet LogText ManifestDPIAware ManifestSupportedOS MessageBox MiscButtonText Name Nop OutFile Page PageCallbacks PageExEnd Pop Push Quit ReadEnvStr ReadINIStr ReadRegDWORD ReadRegStr Reboot RegDLL Rename RequestExecutionLevel ReserveFile Return RMDir SearchPath SectionEnd SectionGetFlags SectionGetInstTypes SectionGetSize SectionGetText SectionGroupEnd SectionIn SectionSetFlags SectionSetInstTypes SectionSetSize SectionSetText SendMessage SetAutoClose SetBrandingImage SetCompress SetCompressor SetCompressorDictSize SetCtlColors SetCurInstType SetDatablockOptimize SetDateSave SetDetailsPrint SetDetailsView SetErrorLevel SetErrors SetFileAttributes SetFont SetOutPath SetOverwrite SetRebootFlag SetRegView SetShellVarContext SetSilent ShowInstDetails ShowUninstDetails ShowWindow SilentInstall SilentUnInstall Sleep SpaceTexts StrCmp StrCmpS StrCpy StrLen SubCaption Unicode UninstallButtonText UninstallCaption UninstallIcon UninstallSubCaption UninstallText UninstPage UnRegDLL Var VIAddVersionKey VIFileVersion VIProductVersion WindowIcon WriteINIStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegMultiStr WriteRegNone WriteRegStr WriteUninstaller XPStyle",literal:"admin all auto both bottom bzip2 colored components current custom directory false force hide highest ifdiff ifnewer instfiles lastused leave left license listonly lzma nevershow none normal notset off on open print right show silent silentlog smooth textonly top true try un.components un.custom un.directory un.instfiles un.license uninstConfirm user Win10 Win7 Win8 WinVista zlib"},contains:[e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT(";","$",{relevance:0}),{className:"function",beginKeywords:"Function PageEx Section SectionGroup",end:"$"},o,{className:"keyword",begin:/\!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|searchparse|searchreplace|system|tempfile|undef|verbose|warning)/},t,n,r,{className:"params",begin:"(ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)"},{className:"class",begin:/\w+\:\:\w+/},e.NUMBER_MODE]}}},function(e,t){e.exports=function(e){var t=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],keywords:{keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},lexemes:t,illegal:"</",contains:[{className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"'",end:"[^\\\\]'",illegal:"[^\\\\][^']"}]},{className:"meta",begin:"#",end:"$",contains:[{className:"meta-string",variants:[{begin:'"',end:'"'},{begin:"<",end:">"}]}]},{className:"class",begin:"("+n.split(" ").join("|")+")\\b",end:"({|$)",excludeEnd:!0,keywords:n,lexemes:t,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}},function(e,t){e.exports=function(e){return{aliases:["ml"],keywords:{keyword:"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref",literal:"true false"},illegal:/\/\/|>>/,lexemes:"[a-z_]\\w*!?",contains:[{className:"literal",begin:"\\[(\\|\\|)?\\]|\\(\\)",relevance:0},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*",relevance:0},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number",begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",relevance:0},{begin:/[-=]>/}]}}},function(e,t){e.exports=function(e){var t={className:"keyword",begin:"\\$(f[asn]|t|vp[rtd]|children)"},n={className:"number",begin:"\\b\\d+(\\.\\d+)?(e-?\\d+)?",relevance:0},r=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),o={className:"function",beginKeywords:"module function",end:"\\=|\\{",contains:[{className:"params",begin:"\\(",end:"\\)",contains:["self",n,r,t,{className:"literal",begin:"false|true|PI|undef"}]},e.UNDERSCORE_TITLE_MODE]};return{aliases:["scad"],keywords:{keyword:"function module include use for intersection_for if else \\%",literal:"false true PI undef",built_in:"circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"meta",keywords:{"meta-keyword":"include use"},begin:"include|use <",end:">"},r,t,{begin:"[*!#%]",relevance:0},o]}}},function(e,t){e.exports=function(e){var t="abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained",n=e.COMMENT("{","}",{relevance:0}),r=e.COMMENT("\\(\\*","\\*\\)",{relevance:10}),o={className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},i={className:"string",begin:"(#\\d+)+"},a={className:"function",beginKeywords:"function constructor destructor procedure method",end:"[:;]",keywords:"function constructor|10 destructor|10 procedure|10 method|10",contains:[e.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",keywords:t,contains:[o,i]},n,r]};return{case_insensitive:!0,lexemes:/\.?\w+/,keywords:t,illegal:'("|\\$[G-Zg-z]|\\/\\*|</|=>|->)',contains:[n,r,e.C_LINE_COMMENT_MODE,o,i,e.NUMBER_MODE,a,{className:"class",begin:"=\\bclass\\b",end:"end;",keywords:t,contains:[o,i,n,r,e.C_LINE_COMMENT_MODE,a]}]}}},function(e,t){e.exports=function(e){var t=e.COMMENT("{","}",{contains:["self"]});return{subLanguage:"xml",relevance:0,contains:[e.COMMENT("^#","$"),e.COMMENT("\\^rem{","}",{relevance:10,contains:[t]}),{className:"meta",begin:"^@(?:BASE|USE|CLASS|OPTIONS)$",relevance:10},{className:"title",begin:"@[\\w\\-]+\\[[\\w^;\\-]*\\](?:\\[[\\w^;\\-]*\\])?(?:.*)$"},{className:"variable",begin:"\\$\\{?[\\w\\-\\.\\:]+\\}?"},{className:"keyword",begin:"\\^[\\w\\-\\.\\:]+"},{className:"number",begin:"\\^#[0-9a-fA-F]+"},e.C_NUMBER_MODE]}}},function(e,t){e.exports=function(e){return{aliases:["pf.conf"],lexemes:/[a-z0-9_<>-]+/,keywords:{built_in:"block match pass load anchor|5 antispoof|10 set table",keyword:"in out log quick on rdomain inet inet6 proto from port os to routeallow-opts divert-packet divert-reply divert-to flags group icmp-typeicmp6-type label once probability recieved-on rtable prio queuetos tag tagged user keep fragment for os dropaf-to|10 binat-to|10 nat-to|10 rdr-to|10 bitmask least-stats random round-robinsource-hash static-portdup-to reply-to route-toparent bandwidth default min max qlimitblock-policy debug fingerprints hostid limit loginterface optimizationreassemble ruleset-optimization basic none profile skip state-defaultsstate-policy timeoutconst counters persistno modulate synproxy state|5 floating if-bound no-sync pflow|10 sloppysource-track global rule max-src-nodes max-src-states max-src-connmax-src-conn-rate overload flushscrub|5 max-mss min-ttl no-df|10 random-id",literal:"all any no-route self urpf-failed egress|5 unknown"},contains:[e.HASH_COMMENT_MODE,e.NUMBER_MODE,e.QUOTE_STRING_MODE,{className:"variable",begin:/\$[\w\d#@][\w\d_]*/},{className:"variable",begin:/<(?!\/)/,end:/>/}]}}},function(e,t){e.exports=function(e){var t=e.COMMENT("--","$"),n="BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL PATH POINT POLYGON REAL FLOAT4 SMALLINT INT2 SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR NAME OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 ",r=n.trim().split(" ").map(function(e){return e.split("|")[0]}).join("|"),o="ARRAY_AGG AVG BIT_AND BIT_OR BOOL_AND BOOL_OR COUNT EVERY JSON_AGG JSONB_AGG JSON_OBJECT_AGG JSONB_OBJECT_AGG MAX MIN MODE STRING_AGG SUM XMLAGG CORR COVAR_POP COVAR_SAMP REGR_AVGX REGR_AVGY REGR_COUNT REGR_INTERCEPT REGR_R2 REGR_SLOPE REGR_SXX REGR_SXY REGR_SYY STDDEV STDDEV_POP STDDEV_SAMP VARIANCE VAR_POP VAR_SAMP PERCENTILE_CONT PERCENTILE_DISC ROW_NUMBER RANK DENSE_RANK PERCENT_RANK CUME_DIST NTILE LAG LEAD FIRST_VALUE LAST_VALUE NTH_VALUE NUM_NONNULLS NUM_NULLS ABS CBRT CEIL CEILING DEGREES DIV EXP FLOOR LN LOG MOD PI POWER RADIANS ROUND SCALE SIGN SQRT TRUNC WIDTH_BUCKET RANDOM SETSEED ACOS ACOSD ASIN ASIND ATAN ATAND ATAN2 ATAN2D COS COSD COT COTD SIN SIND TAN TAND BIT_LENGTH CHAR_LENGTH CHARACTER_LENGTH LOWER OCTET_LENGTH OVERLAY POSITION SUBSTRING TREAT TRIM UPPER ASCII BTRIM CHR CONCAT CONCAT_WS CONVERT CONVERT_FROM CONVERT_TO DECODE ENCODE INITCAPLEFT LENGTH LPAD LTRIM MD5 PARSE_IDENT PG_CLIENT_ENCODING QUOTE_IDENT|10 QUOTE_LITERAL|10 QUOTE_NULLABLE|10 REGEXP_MATCH REGEXP_MATCHES REGEXP_REPLACE REGEXP_SPLIT_TO_ARRAY REGEXP_SPLIT_TO_TABLE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SPLIT_PART STRPOS SUBSTR TO_ASCII TO_HEX TRANSLATE OCTET_LENGTH GET_BIT GET_BYTE SET_BIT SET_BYTE TO_CHAR TO_DATE TO_NUMBER TO_TIMESTAMP AGE CLOCK_TIMESTAMP|10 DATE_PART DATE_TRUNC ISFINITE JUSTIFY_DAYS JUSTIFY_HOURS JUSTIFY_INTERVAL MAKE_DATE MAKE_INTERVAL|10 MAKE_TIME MAKE_TIMESTAMP|10 MAKE_TIMESTAMPTZ|10 NOW STATEMENT_TIMESTAMP|10 TIMEOFDAY TRANSACTION_TIMESTAMP|10 ENUM_FIRST ENUM_LAST ENUM_RANGE AREA CENTER DIAMETER HEIGHT ISCLOSED ISOPEN NPOINTS PCLOSE POPEN RADIUS WIDTH BOX BOUND_BOX CIRCLE LINE LSEG PATH POLYGON ABBREV BROADCAST HOST HOSTMASK MASKLEN NETMASK NETWORK SET_MASKLEN TEXT INET_SAME_FAMILYINET_MERGE MACADDR8_SET7BIT ARRAY_TO_TSVECTOR GET_CURRENT_TS_CONFIG NUMNODE PLAINTO_TSQUERY PHRASETO_TSQUERY WEBSEARCH_TO_TSQUERY QUERYTREE SETWEIGHT STRIP TO_TSQUERY TO_TSVECTOR JSON_TO_TSVECTOR JSONB_TO_TSVECTOR TS_DELETE TS_FILTER TS_HEADLINE TS_RANK TS_RANK_CD TS_REWRITE TSQUERY_PHRASE TSVECTOR_TO_ARRAY TSVECTOR_UPDATE_TRIGGER TSVECTOR_UPDATE_TRIGGER_COLUMN XMLCOMMENT XMLCONCAT XMLELEMENT XMLFOREST XMLPI XMLROOT XMLEXISTS XML_IS_WELL_FORMED XML_IS_WELL_FORMED_DOCUMENT XML_IS_WELL_FORMED_CONTENT XPATH XPATH_EXISTS XMLTABLE XMLNAMESPACES TABLE_TO_XML TABLE_TO_XMLSCHEMA TABLE_TO_XML_AND_XMLSCHEMA QUERY_TO_XML QUERY_TO_XMLSCHEMA QUERY_TO_XML_AND_XMLSCHEMA CURSOR_TO_XML CURSOR_TO_XMLSCHEMA SCHEMA_TO_XML SCHEMA_TO_XMLSCHEMA SCHEMA_TO_XML_AND_XMLSCHEMA DATABASE_TO_XML DATABASE_TO_XMLSCHEMA DATABASE_TO_XML_AND_XMLSCHEMA XMLATTRIBUTES TO_JSON TO_JSONB ARRAY_TO_JSON ROW_TO_JSON JSON_BUILD_ARRAY JSONB_BUILD_ARRAY JSON_BUILD_OBJECT JSONB_BUILD_OBJECT JSON_OBJECT JSONB_OBJECT JSON_ARRAY_LENGTH JSONB_ARRAY_LENGTH JSON_EACH JSONB_EACH JSON_EACH_TEXT JSONB_EACH_TEXT JSON_EXTRACT_PATH JSONB_EXTRACT_PATH JSON_OBJECT_KEYS JSONB_OBJECT_KEYS JSON_POPULATE_RECORD JSONB_POPULATE_RECORD JSON_POPULATE_RECORDSET JSONB_POPULATE_RECORDSET JSON_ARRAY_ELEMENTS JSONB_ARRAY_ELEMENTS JSON_ARRAY_ELEMENTS_TEXT JSONB_ARRAY_ELEMENTS_TEXT JSON_TYPEOF JSONB_TYPEOF JSON_TO_RECORD JSONB_TO_RECORD JSON_TO_RECORDSET JSONB_TO_RECORDSET JSON_STRIP_NULLS JSONB_STRIP_NULLS JSONB_SET JSONB_INSERT JSONB_PRETTY CURRVAL LASTVAL NEXTVAL SETVAL COALESCE NULLIF GREATEST LEAST ARRAY_APPEND ARRAY_CAT ARRAY_NDIMS ARRAY_DIMS ARRAY_FILL ARRAY_LENGTH ARRAY_LOWER ARRAY_POSITION ARRAY_POSITIONS ARRAY_PREPEND ARRAY_REMOVE ARRAY_REPLACE ARRAY_TO_STRING ARRAY_UPPER CARDINALITY STRING_TO_ARRAY UNNEST ISEMPTY LOWER_INC UPPER_INC LOWER_INF UPPER_INF RANGE_MERGE GENERATE_SERIES GENERATE_SUBSCRIPTS CURRENT_DATABASE CURRENT_QUERY CURRENT_SCHEMA|10 CURRENT_SCHEMAS|10 INET_CLIENT_ADDR INET_CLIENT_PORT INET_SERVER_ADDR INET_SERVER_PORT ROW_SECURITY_ACTIVE FORMAT_TYPE TO_REGCLASS TO_REGPROC TO_REGPROCEDURE TO_REGOPER TO_REGOPERATOR TO_REGTYPE TO_REGNAMESPACE TO_REGROLE COL_DESCRIPTION OBJ_DESCRIPTION SHOBJ_DESCRIPTION TXID_CURRENT TXID_CURRENT_IF_ASSIGNED TXID_CURRENT_SNAPSHOT TXID_SNAPSHOT_XIP TXID_SNAPSHOT_XMAX TXID_SNAPSHOT_XMIN TXID_VISIBLE_IN_SNAPSHOT TXID_STATUS CURRENT_SETTING SET_CONFIG BRIN_SUMMARIZE_NEW_VALUES BRIN_SUMMARIZE_RANGE BRIN_DESUMMARIZE_RANGE GIN_CLEAN_PENDING_LIST SUPPRESS_REDUNDANT_UPDATES_TRIGGER LO_FROM_BYTEA LO_PUT LO_GET LO_CREAT LO_CREATE LO_UNLINK LO_IMPORT LO_EXPORT LOREAD LOWRITE GROUPING CAST ".trim().split(" ").map(function(e){return e.split("|")[0]}).join("|");return{aliases:["postgres","postgresql"],case_insensitive:!0,keywords:{keyword:"ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION INDEX PROCEDURE ASSERTION ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS DEFERRABLE RANGE DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED OF NOTHING NONE EXCLUDE ATTRIBUTE USAGE ROUTINES TRUE FALSE NAN INFINITY ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT OPEN SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS ",built_in:"CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 SQLSTATE SQLERRM|10 SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED INDEX_CORRUPTED "},illegal:/:==|\W\s*\(\*|(^|\s)\$[a-z]|{{|[a-z]:\s*$|\.\.\.|TO:|DO:/,contains:[{className:"keyword",variants:[{begin:/\bTEXT\s*SEARCH\b/},{begin:/\b(PRIMARY|FOREIGN|FOR(\s+NO)?)\s+KEY\b/},{begin:/\bPARALLEL\s+(UNSAFE|RESTRICTED|SAFE)\b/},{begin:/\bSTORAGE\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\b/},{begin:/\bMATCH\s+(FULL|PARTIAL|SIMPLE)\b/},{begin:/\bNULLS\s+(FIRST|LAST)\b/},{begin:/\bEVENT\s+TRIGGER\b/},{begin:/\b(MAPPING|OR)\s+REPLACE\b/},{begin:/\b(FROM|TO)\s+(PROGRAM|STDIN|STDOUT)\b/},{begin:/\b(SHARE|EXCLUSIVE)\s+MODE\b/},{begin:/\b(LEFT|RIGHT)\s+(OUTER\s+)?JOIN\b/},{begin:/\b(FETCH|MOVE)\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\b/},{begin:/\bPRESERVE\s+ROWS\b/},{begin:/\bDISCARD\s+PLANS\b/},{begin:/\bREFERENCING\s+(OLD|NEW)\b/},{begin:/\bSKIP\s+LOCKED\b/},{begin:/\bGROUPING\s+SETS\b/},{begin:/\b(BINARY|INSENSITIVE|SCROLL|NO\s+SCROLL)\s+(CURSOR|FOR)\b/},{begin:/\b(WITH|WITHOUT)\s+HOLD\b/},{begin:/\bWITH\s+(CASCADED|LOCAL)\s+CHECK\s+OPTION\b/},{begin:/\bEXCLUDE\s+(TIES|NO\s+OTHERS)\b/},{begin:/\bFORMAT\s+(TEXT|XML|JSON|YAML)\b/},{begin:/\bSET\s+((SESSION|LOCAL)\s+)?NAMES\b/},{begin:/\bIS\s+(NOT\s+)?UNKNOWN\b/},{begin:/\bSECURITY\s+LABEL\b/},{begin:/\bSTANDALONE\s+(YES|NO|NO\s+VALUE)\b/},{begin:/\bWITH\s+(NO\s+)?DATA\b/},{begin:/\b(FOREIGN|SET)\s+DATA\b/},{begin:/\bSET\s+(CATALOG|CONSTRAINTS)\b/},{begin:/\b(WITH|FOR)\s+ORDINALITY\b/},{begin:/\bIS\s+(NOT\s+)?DOCUMENT\b/},{begin:/\bXML\s+OPTION\s+(DOCUMENT|CONTENT)\b/},{begin:/\b(STRIP|PRESERVE)\s+WHITESPACE\b/},{begin:/\bNO\s+(ACTION|MAXVALUE|MINVALUE)\b/},{begin:/\bPARTITION\s+BY\s+(RANGE|LIST|HASH)\b/},{begin:/\bAT\s+TIME\s+ZONE\b/},{begin:/\bGRANTED\s+BY\b/},{begin:/\bRETURN\s+(QUERY|NEXT)\b/},{begin:/\b(ATTACH|DETACH)\s+PARTITION\b/},{begin:/\bFORCE\s+ROW\s+LEVEL\s+SECURITY\b/},{begin:/\b(INCLUDING|EXCLUDING)\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\b/},{begin:/\bAS\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\b/}]},{begin:/\b(FORMAT|FAMILY|VERSION)\s*\(/},{begin:/\bINCLUDE\s*\(/,keywords:"INCLUDE"},{begin:/\bRANGE(?!\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))/},{begin:/\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\s*=/},{begin:/\b(PG_\w+?|HAS_[A-Z_]+_PRIVILEGE)\b/,relevance:10},{begin:/\bEXTRACT\s*\(/,end:/\bFROM\b/,returnEnd:!0,keywords:{type:"CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR TIMEZONE_MINUTE WEEK YEAR"}},{begin:/\b(XMLELEMENT|XMLPI)\s*\(\s*NAME/,keywords:{keyword:"NAME"}},{begin:/\b(XMLPARSE|XMLSERIALIZE)\s*\(\s*(DOCUMENT|CONTENT)/,keywords:{keyword:"DOCUMENT CONTENT"}},{beginKeywords:"CACHE INCREMENT MAXVALUE MINVALUE",end:e.C_NUMBER_RE,returnEnd:!0,keywords:"BY CACHE INCREMENT MAXVALUE MINVALUE"},{className:"type",begin:/\b(WITH|WITHOUT)\s+TIME\s+ZONE\b/},{className:"type",begin:/\bINTERVAL\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\s+TO\s+(MONTH|HOUR|MINUTE|SECOND))?\b/},{begin:/\bRETURNS\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\b/,keywords:{keyword:"RETURNS",type:"LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER"}},{begin:"\\b("+o+")\\s*\\("},{begin:"\\.("+r+")\\b"},{begin:"\\b("+r+")\\s+PATH\\b",keywords:{keyword:"PATH",type:n.replace("PATH ","")}},{className:"type",begin:"\\b("+r+")\\b"},{className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},{className:"string",begin:"(e|E|u&|U&)'",end:"'",contains:[{begin:"\\\\."}],relevance:10},{begin:"\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\$",endSameAsBegin:!0,contains:[{subLanguage:["pgsql","perl","python","tcl","r","lua","java","php","ruby","bash","scheme","xml","json"],endsWithParent:!0}]},{begin:'"',end:'"',contains:[{begin:'""'}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,{className:"meta",variants:[{begin:"%(ROW)?TYPE",relevance:10},{begin:"\\$\\d+"},{begin:"^#\\w",end:"$"}]},{className:"symbol",begin:"<<\\s*[a-zA-Z_][a-zA-Z_0-9$]*\\s*>>",relevance:10}]}}},function(e,t){e.exports=function(e){var t={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},n={className:"meta",begin:/<\?(php)?|\?>/},r={className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},o={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php","php3","php4","php5","php6","php7"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[n]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},n,{className:"keyword",begin:/\$this\b/},t,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",t,e.C_BLOCK_COMMENT_MODE,r,o]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},r,o]}}},function(e,t){e.exports=function(e){return{disableAutodetect:!0}}},function(e,t){e.exports=function(e){var t={className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE]},n={className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE],relevance:0},r={className:"type",begin:"\\b_?[A-Z][\\w]*",relevance:0},o={begin:e.IDENT_RE+"'",relevance:0};return{keywords:{keyword:"actor addressof and as be break class compile_error compile_intrinsicconsume continue delegate digestof do else elseif embed end errorfor fun if ifdef in interface is isnt lambda let match new not objector primitive recover repeat return struct then trait try type until use var where while with xor",meta:"iso val tag trn box ref",literal:"this false true"},contains:[{className:"class",beginKeywords:"class actor",end:"$",contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE]},{className:"function",beginKeywords:"new fun",end:"=>",contains:[e.TITLE_MODE,{begin:/\(/,end:/\)/,contains:[r,o,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},{begin:/:/,endsWithParent:!0,contains:[r]},e.C_LINE_COMMENT_MODE]},r,{className:"string",begin:'"""',end:'"""',relevance:10},t,n,o,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}}},function(e,t){e.exports=function(e){var t={begin:"`[\\s\\S]",relevance:0},n={className:"variable",variants:[{begin:/\$[\w\d][\w\d_:]*/}]},r={className:"string",variants:[{begin:/"/,end:/"/},{begin:/@"/,end:/^"@/}],contains:[t,n,{className:"variable",begin:/\$[A-z]/,end:/[^A-z]/}]},o=e.inherit(e.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,end:/#>/}],contains:[{className:"doctag",variants:[{begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/}]}]});return{aliases:["ps"],lexemes:/-?[A-z\.\-]+/,case_insensitive:!0,keywords:{keyword:"if else foreach return function do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch",built_in:"Add-Computer Add-Content Add-History Add-JobTrigger Add-Member Add-PSSnapin Add-Type Checkpoint-Computer Clear-Content Clear-EventLog Clear-History Clear-Host Clear-Item Clear-ItemProperty Clear-Variable Compare-Object Complete-Transaction Connect-PSSession Connect-WSMan Convert-Path ConvertFrom-Csv ConvertFrom-Json ConvertFrom-SecureString ConvertFrom-StringData ConvertTo-Csv ConvertTo-Html ConvertTo-Json ConvertTo-SecureString ConvertTo-Xml Copy-Item Copy-ItemProperty Debug-Process Disable-ComputerRestore Disable-JobTrigger Disable-PSBreakpoint Disable-PSRemoting Disable-PSSessionConfiguration Disable-WSManCredSSP Disconnect-PSSession Disconnect-WSMan Disable-ScheduledJob Enable-ComputerRestore Enable-JobTrigger Enable-PSBreakpoint Enable-PSRemoting Enable-PSSessionConfiguration Enable-ScheduledJob Enable-WSManCredSSP Enter-PSSession Exit-PSSession Export-Alias Export-Clixml Export-Console Export-Counter Export-Csv Export-FormatData Export-ModuleMember Export-PSSession ForEach-Object Format-Custom Format-List Format-Table Format-Wide Get-Acl Get-Alias Get-AuthenticodeSignature Get-ChildItem Get-Command Get-ComputerRestorePoint Get-Content Get-ControlPanelItem Get-Counter Get-Credential Get-Culture Get-Date Get-Event Get-EventLog Get-EventSubscriber Get-ExecutionPolicy Get-FormatData Get-Host Get-HotFix Get-Help Get-History Get-IseSnippet Get-Item Get-ItemProperty Get-Job Get-JobTrigger Get-Location Get-Member Get-Module Get-PfxCertificate Get-Process Get-PSBreakpoint Get-PSCallStack Get-PSDrive Get-PSProvider Get-PSSession Get-PSSessionConfiguration Get-PSSnapin Get-Random Get-ScheduledJob Get-ScheduledJobOption Get-Service Get-TraceSource Get-Transaction Get-TypeData Get-UICulture Get-Unique Get-Variable Get-Verb Get-WinEvent Get-WmiObject Get-WSManCredSSP Get-WSManInstance Group-Object Import-Alias Import-Clixml Import-Counter Import-Csv Import-IseSnippet Import-LocalizedData Import-PSSession Import-Module Invoke-AsWorkflow Invoke-Command Invoke-Expression Invoke-History Invoke-Item Invoke-RestMethod Invoke-WebRequest Invoke-WmiMethod Invoke-WSManAction Join-Path Limit-EventLog Measure-Command Measure-Object Move-Item Move-ItemProperty New-Alias New-Event New-EventLog New-IseSnippet New-Item New-ItemProperty New-JobTrigger New-Object New-Module New-ModuleManifest New-PSDrive New-PSSession New-PSSessionConfigurationFile New-PSSessionOption New-PSTransportOption New-PSWorkflowExecutionOption New-PSWorkflowSession New-ScheduledJobOption New-Service New-TimeSpan New-Variable New-WebServiceProxy New-WinEvent New-WSManInstance New-WSManSessionOption Out-Default Out-File Out-GridView Out-Host Out-Null Out-Printer Out-String Pop-Location Push-Location Read-Host Receive-Job Register-EngineEvent Register-ObjectEvent Register-PSSessionConfiguration Register-ScheduledJob Register-WmiEvent Remove-Computer Remove-Event Remove-EventLog Remove-Item Remove-ItemProperty Remove-Job Remove-JobTrigger Remove-Module Remove-PSBreakpoint Remove-PSDrive Remove-PSSession Remove-PSSnapin Remove-TypeData Remove-Variable Remove-WmiObject Remove-WSManInstance Rename-Computer Rename-Item Rename-ItemProperty Reset-ComputerMachinePassword Resolve-Path Restart-Computer Restart-Service Restore-Computer Resume-Job Resume-Service Save-Help Select-Object Select-String Select-Xml Send-MailMessage Set-Acl Set-Alias Set-AuthenticodeSignature Set-Content Set-Date Set-ExecutionPolicy Set-Item Set-ItemProperty Set-JobTrigger Set-Location Set-PSBreakpoint Set-PSDebug Set-PSSessionConfiguration Set-ScheduledJob Set-ScheduledJobOption Set-Service Set-StrictMode Set-TraceSource Set-Variable Set-WmiInstance Set-WSManInstance Set-WSManQuickConfig Show-Command Show-ControlPanelItem Show-EventLog Sort-Object Split-Path Start-Job Start-Process Start-Service Start-Sleep Start-Transaction Start-Transcript Stop-Computer Stop-Job Stop-Process Stop-Service Stop-Transcript Suspend-Job Suspend-Service Tee-Object Test-ComputerSecureChannel Test-Connection Test-ModuleManifest Test-Path Test-PSSessionConfigurationFile Trace-Command Unblock-File Undo-Transaction Unregister-Event Unregister-PSSessionConfiguration Unregister-ScheduledJob Update-FormatData Update-Help Update-List Update-TypeData Use-Transaction Wait-Event Wait-Job Wait-Process Where-Object Write-Debug Write-Error Write-EventLog Write-Host Write-Output Write-Progress Write-Verbose Write-Warning Add-MDTPersistentDrive Disable-MDTMonitorService Enable-MDTMonitorService Get-MDTDeploymentShareStatistics Get-MDTMonitorData Get-MDTOperatingSystemCatalog Get-MDTPersistentDrive Import-MDTApplication Import-MDTDriver Import-MDTOperatingSystem Import-MDTPackage Import-MDTTaskSequence New-MDTDatabase Remove-MDTMonitorData Remove-MDTPersistentDrive Restore-MDTPersistentDrive Set-MDTMonitorData Test-MDTDeploymentShare Test-MDTMonitorData Update-MDTDatabaseSchema Update-MDTDeploymentShare Update-MDTLinkedDS Update-MDTMedia Update-MDTMedia Add-VamtProductKey Export-VamtData Find-VamtManagedMachine Get-VamtConfirmationId Get-VamtProduct Get-VamtProductKey Import-VamtData Initialize-VamtData Install-VamtConfirmationId Install-VamtProductActivation Install-VamtProductKey Update-VamtProduct",nomarkup:"-ne -eq -lt -gt -ge -le -not -like -notlike -match -notmatch -contains -notcontains -in -notin -replace"},contains:[t,e.NUMBER_MODE,r,{className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]},{className:"literal",begin:/\$(null|true|false)\b/},n,o]}}},function(e,t){e.exports=function(e){return{keywords:{keyword:"BufferedReader PVector PFont PImage PGraphics HashMap boolean byte char color double float int long String Array FloatDict FloatList IntDict IntList JSONArray JSONObject Object StringDict StringList Table TableRow XML false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private",literal:"P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI",title:"setup draw",built_in:"displayHeight displayWidth mouseY mouseX mousePressed pmouseX pmouseY key keyCode pixels focused frameCount frameRate height width size createGraphics beginDraw createShape loadShape PShape arc ellipse line point quad rect triangle bezier bezierDetail bezierPoint bezierTangent curve curveDetail curvePoint curveTangent curveTightness shape shapeMode beginContour beginShape bezierVertex curveVertex endContour endShape quadraticVertex vertex ellipseMode noSmooth rectMode smooth strokeCap strokeJoin strokeWeight mouseClicked mouseDragged mouseMoved mousePressed mouseReleased mouseWheel keyPressed keyPressedkeyReleased keyTyped print println save saveFrame day hour millis minute month second year background clear colorMode fill noFill noStroke stroke alpha blue brightness color green hue lerpColor red saturation modelX modelY modelZ screenX screenY screenZ ambient emissive shininess specular add createImage beginCamera camera endCamera frustum ortho perspective printCamera printProjection cursor frameRate noCursor exit loop noLoop popStyle pushStyle redraw binary boolean byte char float hex int str unbinary unhex join match matchAll nf nfc nfp nfs split splitTokens trim append arrayCopy concat expand reverse shorten sort splice subset box sphere sphereDetail createInput createReader loadBytes loadJSONArray loadJSONObject loadStrings loadTable loadXML open parseXML saveTable selectFolder selectInput beginRaw beginRecord createOutput createWriter endRaw endRecord PrintWritersaveBytes saveJSONArray saveJSONObject saveStream saveStrings saveXML selectOutput popMatrix printMatrix pushMatrix resetMatrix rotate rotateX rotateY rotateZ scale shearX shearY translate ambientLight directionalLight lightFalloff lights lightSpecular noLights normal pointLight spotLight image imageMode loadImage noTint requestImage tint texture textureMode textureWrap blend copy filter get loadPixels set updatePixels blendMode loadShader PShaderresetShader shader createFont loadFont text textFont textAlign textLeading textMode textSize textWidth textAscent textDescent abs ceil constrain dist exp floor lerp log mag map max min norm pow round sq sqrt acos asin atan atan2 cos degrees radians sin tan noise noiseDetail noiseSeed random randomGaussian randomSeed"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}}},function(e,t){e.exports=function(e){return{contains:[e.C_NUMBER_MODE,{begin:"[a-zA-Z_][\\da-zA-Z_]+\\.[\\da-zA-Z_]{1,3}",end:":",excludeEnd:!0},{begin:"(ncalls|tottime|cumtime)",end:"$",keywords:"ncalls tottime|10 cumtime|10 filename",relevance:10},{begin:"function calls",end:"$",contains:[e.C_NUMBER_MODE],relevance:10},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"\\(",end:"\\)$",excludeBegin:!0,excludeEnd:!0,relevance:0}]}}},function(e,t){e.exports=function(e){var t={begin:/\(/,end:/\)/,relevance:0},n={begin:/\[/,end:/\]/},r={className:"comment",begin:/%/,end:/$/,contains:[e.PHRASAL_WORDS_MODE]},o={className:"string",begin:/`/,end:/`/,contains:[e.BACKSLASH_ESCAPE]},i=[{begin:/[a-z][A-Za-z0-9_]*/,relevance:0},{className:"symbol",variants:[{begin:/[A-Z][a-zA-Z0-9_]*/},{begin:/_[A-Za-z0-9_]*/}],relevance:0},t,{begin:/:-/},n,r,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,o,{className:"string",begin:/0\'(\\\'|.)/},{className:"string",begin:/0\'\\s/},e.C_NUMBER_MODE];return t.contains=i,n.contains=i,{contains:i.concat([{begin:/\.$/}])}}},function(e,t){e.exports=function(e){var t="[ \\t\\f]*",n="("+t+"[:=]"+t+"|[ \\t\\f]+)",r="([^\\\\:= \\t\\f\\n]|\\\\.)+",o={end:n,relevance:0,starts:{className:"string",end:/$/,relevance:0,contains:[{begin:"\\\\\\n"}]}};return{case_insensitive:!0,illegal:/\S/,contains:[e.COMMENT("^\\s*[!#]","$"),{begin:"([^\\\\\\W:= \\t\\f\\n]|\\\\.)+"+n,returnBegin:!0,contains:[{className:"attr",begin:"([^\\\\\\W:= \\t\\f\\n]|\\\\.)+",endsParent:!0,relevance:0}],starts:o},{begin:r+n,returnBegin:!0,relevance:0,contains:[{className:"meta",begin:r,endsParent:!0,relevance:0}],starts:o},{className:"attr",relevance:0,begin:r+t+"$"}]}}},function(e,t){e.exports=function(e){return{keywords:{keyword:"package import option optional required repeated group oneof",built_in:"double float int32 int64 uint32 uint64 sint32 sint64 fixed32 fixed64 sfixed32 sfixed64 bool string bytes",literal:"true false"},contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.C_LINE_COMMENT_MODE,{className:"class",beginKeywords:"message enum service",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{className:"function",beginKeywords:"rpc",end:/;/,excludeEnd:!0,keywords:"rpc returns"},{begin:/^\s*[A-Z_]+/,end:/\s*=/,excludeEnd:!0}]}}},function(e,t){e.exports=function(e){var t=e.COMMENT("#","$"),n=e.inherit(e.TITLE_MODE,{begin:"([A-Za-z_]|::)(\\w|::)*"}),r={className:"variable",begin:"\\$([A-Za-z_]|::)(\\w|::)*"},o={className:"string",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/}]};return{aliases:["pp"],contains:[t,r,o,{beginKeywords:"class",end:"\\{|;",illegal:/=/,contains:[n,t]},{beginKeywords:"define",end:/\{/,contains:[{className:"section",begin:e.IDENT_RE,endsParent:!0}]},{begin:e.IDENT_RE+"\\s+\\{",returnBegin:!0,end:/\S/,contains:[{className:"keyword",begin:e.IDENT_RE},{begin:/\{/,end:/\}/,keywords:{keyword:"and case default else elsif false if in import enherits node or true undef unless main settings $string ",literal:"alias audit before loglevel noop require subscribe tag owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check en_address ip_address realname command environment hour monute month monthday special target weekday creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey sslverify mounted",built_in:"architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version"},relevance:0,contains:[o,t,{begin:"[a-zA-Z_]+\\s*=>",returnBegin:!0,end:"=>",contains:[{className:"attr",begin:e.IDENT_RE}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},r]}],relevance:0}]}}},function(e,t){e.exports=function(e){return{aliases:["pb","pbi"],keywords:"And As Break CallDebugger Case CompilerCase CompilerDefault CompilerElse CompilerEndIf CompilerEndSelect CompilerError CompilerIf CompilerSelect Continue Data DataSection EndDataSection Debug DebugLevel Default Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM EnableDebugger EnableExplicit End EndEnumeration EndIf EndImport EndInterface EndMacro EndProcedure EndSelect EndStructure EndStructureUnion EndWith Enumeration Extends FakeReturn For Next ForEach ForEver Global Gosub Goto If Import ImportC IncludeBinary IncludeFile IncludePath Interface Macro NewList Not Or ProcedureReturn Protected Prototype PrototypeC Read ReDim Repeat Until Restore Return Select Shared Static Step Structure StructureUnion Swap To Wend While With XIncludeFile XOr Procedure ProcedureC ProcedureCDLL ProcedureDLL Declare DeclareC DeclareCDLL DeclareDLL",contains:[e.COMMENT(";","$",{relevance:0}),{className:"function",begin:"\\b(Procedure|Declare)(C|CDLL|DLL)?\\b",end:"\\(",excludeEnd:!0,returnBegin:!0,contains:[{className:"keyword",begin:"(Procedure|Declare)(C|CDLL|DLL)?",excludeEnd:!0},{className:"type",begin:"\\.\\w*"},e.UNDERSCORE_TITLE_MODE]},{className:"string",begin:'(~)?"',end:'"',illegal:"\\n"},{className:"symbol",begin:"#[a-zA-Z_]\\w*\\$?"}]}}},function(e,t){e.exports=function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},n={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/,end:/\}/,keywords:t,illegal:/#/},o={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,n],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,n],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,n,r]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,n,r]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,r]},{begin:/(fr|rf|f)"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,r]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},i={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},a={className:"params",begin:/\(/,end:/\)/,contains:["self",n,i,o]};return r.contains=[o,i,n],{aliases:["py","gyp"],keywords:t,illegal:/(<\/|->|\?)|=>/,contains:[n,i,o,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,a,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}},function(e,t){e.exports=function(e){return{aliases:["k","kdb"],keywords:{keyword:"do while select delete by update from",literal:"0b 1b",built_in:"neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum",type:"`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid"},lexemes:/(`?)[A-Za-z0-9_]+\b/,contains:[e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}}},function(e,t){e.exports=function(e){var t="[a-zA-Z_][a-zA-Z0-9\\._]*",n={className:"attribute",begin:"\\bid\\s*:",starts:{className:"string",end:t,returnEnd:!1}},r={begin:t+"\\s*:",returnBegin:!0,contains:[{className:"attribute",begin:t,end:"\\s*:",excludeEnd:!0,relevance:0}],relevance:0},o={begin:t+"\\s*{",end:"{",returnBegin:!0,relevance:0,contains:[e.inherit(e.TITLE_MODE,{begin:t})]};return{aliases:["qt"],case_insensitive:!1,keywords:{keyword:"in of on if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await import",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Behavior bool color coordinate date double enumeration font geocircle georectangle geoshape int list matrix4x4 parent point quaternion real rect size string url variant vector2d vector3d vector4dPromise"},contains:[{className:"meta",begin:/^\s*['"]use (strict|asm)['"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,{className:"subst",begin:"\\$\\{",end:"\\}"}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{begin:/</,end:/>\s*[);\]]/,relevance:0,subLanguage:"xml"}],relevance:0},{className:"keyword",begin:"\\bsignal\\b",starts:{className:"string",end:"(\\(|:|=|;|,|//|/\\*|$)",returnEnd:!0}},{className:"keyword",begin:"\\bproperty\\b",starts:{className:"string",end:"(:|=|;|,|//|/\\*|$)",returnEnd:!0}},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}],illegal:/\[|%/},{begin:"\\."+e.IDENT_RE,relevance:0},n,r,o],illegal:/#/}}},function(e,t){e.exports=function(e){var t="([a-zA-Z]|\\.[a-zA-Z.])[a-zA-Z0-9._]*";return{contains:[e.HASH_COMMENT_MODE,{begin:t,lexemes:t,keywords:{keyword:"function if in break next repeat else for return switch while try tryCatch stop warning require library attach detach source setMethod setGeneric setGroupGeneric setClass ...",literal:"NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10"},relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",relevance:0},{className:"number",begin:"\\d+\\.(?!\\d)(?:i\\b)?",relevance:0},{className:"number",begin:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{className:"number",begin:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{begin:"`",end:"`",relevance:0},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:'"',end:'"'},{begin:"'",end:"'"}]}]}}},function(e,t){e.exports=function(e){var t="~?[a-z$_][0-9a-zA-Z$_]*",n="`?[A-Z$_][0-9a-zA-Z$_]*",r="("+function(e){return e.map(function(e){return e.split("").map(function(e){return"\\"+e}).join("")}).join("|")}(["||","&&","++","**","+.","*","/","*.","/.","...","|>"])+"|==|===)",o="\\s+"+r+"\\s+",i={keyword:"and as asr assert begin class constraint do done downto else end exception externalfor fun function functor if in include inherit initializerland lazy let lor lsl lsr lxor match method mod module mutable new nonrecobject of open or private rec sig struct then to try type val virtual when while with",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ",literal:"true false"};const a="\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",s={className:"number",relevance:0,variants:[{begin:a},{begin:"\\(\\-"+a+"\\)"}]},l={className:"operator",relevance:0,begin:r},u=[{className:"identifier",relevance:0,begin:t},l,s],c=[e.QUOTE_STRING_MODE,l,{className:"module",begin:"\\b"+n,returnBegin:!0,end:".",contains:[{className:"identifier",begin:n,relevance:0}]}],f=[{className:"module",begin:"\\b"+n,returnBegin:!0,end:".",relevance:0,contains:[{className:"identifier",begin:n,relevance:0}]}],d={className:"function",relevance:0,keywords:i,variants:[{begin:"\\s(\\(\\.?.*?\\)|"+t+")\\s*=>",end:"\\s*=>",returnBegin:!0,relevance:0,contains:[{className:"params",variants:[{begin:t},{begin:"~?[a-z$_][0-9a-zA-Z$_]*(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?"},{begin:/\(\s*\)/}]}]},{begin:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",end:"\\s=>",returnBegin:!0,relevance:0,contains:[{className:"params",relevance:0,variants:[{begin:t,end:"(,|\\n|\\))",relevance:0,contains:[l,{className:"typing",begin:":",end:"(,|\\n)",returnBegin:!0,relevance:0,contains:f}]}]}]},{begin:"\\(\\.\\s"+t+"\\)\\s*=>"}]};c.push(d);const p={className:"constructor",begin:n+"\\(",end:"\\)",illegal:"\\n",keywords:i,contains:[e.QUOTE_STRING_MODE,l,{className:"params",begin:"\\b"+t}]},m={className:"pattern-match",begin:"\\|",returnBegin:!0,keywords:i,end:"=>",relevance:0,contains:[p,l,{relevance:0,className:"constructor",begin:n}]},h={className:"module-access",keywords:i,returnBegin:!0,variants:[{begin:"\\b("+n+"\\.)+"+t},{begin:"\\b("+n+"\\.)+\\(",end:"\\)",returnBegin:!0,contains:[d,{begin:"\\(",end:"\\)",skip:!0}].concat(c)},{begin:"\\b("+n+"\\.)+{",end:"}"}],contains:c};return f.push(h),{aliases:["re"],keywords:i,illegal:"(:\\-|:=|\\${|\\+=)",contains:[e.COMMENT("/\\*","\\*/",{illegal:"^(\\#,\\/\\/)"}),{className:"character",begin:"'(\\\\[^']+|[^'])'",illegal:"\\n",relevance:0},e.QUOTE_STRING_MODE,{className:"literal",begin:"\\(\\)",relevance:0},{className:"literal",begin:"\\[\\|",end:"\\|\\]",relevance:0,contains:u},{className:"literal",begin:"\\[",end:"\\]",relevance:0,contains:u},p,{className:"operator",begin:o,illegal:"\\-\\->",relevance:0},s,e.C_LINE_COMMENT_MODE,m,d,{className:"module-def",begin:"\\bmodule\\s+"+t+"\\s+"+n+"\\s+=\\s+{",end:"}",returnBegin:!0,keywords:i,relevance:0,contains:[{className:"module",relevance:0,begin:n},{begin:"{",end:"}",skip:!0}].concat(c)},h]}}},function(e,t){e.exports=function(e){return{keywords:"ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry Hider Hyperboloid Identity Illuminate Imager Interior LightSource MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd TransformPoints Translate TrimCurve WorldBegin WorldEnd",illegal:"</",contains:[e.HASH_COMMENT_MODE,e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}}},function(e,t){e.exports=function(e){var t="[a-zA-Z-_][^\\n{]+\\{",n={className:"attribute",begin:/[a-zA-Z-_]+/,end:/\s*:/,excludeEnd:!0,starts:{end:";",relevance:0,contains:[{className:"variable",begin:/\.[a-zA-Z-_]+/},{className:"keyword",begin:/\(optional\)/}]}};return{aliases:["graph","instances"],case_insensitive:!0,keywords:"import",contains:[{begin:"^facet "+t,end:"}",keywords:"facet",contains:[n,e.HASH_COMMENT_MODE]},{begin:"^\\s*instance of "+t,end:"}",keywords:"name count channels instance-data instance-state instance of",illegal:/\S/,contains:["self",n,e.HASH_COMMENT_MODE]},{begin:"^"+t,end:"}",contains:[n,e.HASH_COMMENT_MODE]},e.HASH_COMMENT_MODE]}}},function(e,t){e.exports=function(e){var t="foreach do while for if from to step else on-error and or not in",n="true false yes no nothing nil null",r={className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},o={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,r,{className:"variable",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]}]},i={className:"string",begin:/'/,end:/'/};return{aliases:["routeros","mikrotik"],case_insensitive:!0,lexemes:/:?[\w-]+/,keywords:{literal:n,keyword:t+" :"+t.split(" ").join(" :")+" :"+"global local beep delay put len typeof pick log time set find environment terminal error execute parse resolve toarray tobool toid toip toip6 tonum tostr totime".split(" ").join(" :")},contains:[{variants:[{begin:/^@/,end:/$/},{begin:/\/\*/,end:/\*\//},{begin:/%%/,end:/$/},{begin:/^'/,end:/$/},{begin:/^\s*\/[\w-]+=/,end:/$/},{begin:/\/\//,end:/$/},{begin:/^\[\</,end:/\>\]$/},{begin:/<\//,end:/>/},{begin:/^facet /,end:/\}/},{begin:"^1\\.\\.(\\d+)$",end:/$/}],illegal:/./},e.COMMENT("^#","$"),o,i,r,{begin:/[\w-]+\=([^\s\{\}\[\]\(\)]+)/,relevance:0,returnBegin:!0,contains:[{className:"attribute",begin:/[^=]+/},{begin:/=/,endsWithParent:!0,relevance:0,contains:[o,i,r,{className:"literal",begin:"\\b("+n.split(" ").join("|")+")\\b"},{begin:/("[^"]*"|[^\s\{\}\[\]]+)/}]}]},{className:"number",begin:/\*[0-9a-fA-F]+/},{begin:"\\b("+"add remove enable disable set get print export edit find run debug error info warning".split(" ").join("|")+")([\\s[(]|])",returnBegin:!0,contains:[{className:"builtin-name",begin:/\w+/}]},{className:"built_in",variants:[{begin:"(\\.\\./|/|\\s)(("+"traffic-flow traffic-generator firewall scheduler aaa accounting address-list address align area bandwidth-server bfd bgp bridge client clock community config connection console customer default dhcp-client dhcp-server discovery dns e-mail ethernet filter firewall firmware gps graphing group hardware health hotspot identity igmp-proxy incoming instance interface ip ipsec ipv6 irq l2tp-server lcd ldp logging mac-server mac-winbox mangle manual mirror mme mpls nat nd neighbor network note ntp ospf ospf-v3 ovpn-server page peer pim ping policy pool port ppp pppoe-client pptp-server prefix profile proposal proxy queue radius resource rip ripng route routing screen script security-profiles server service service-port settings shares smb sms sniffer snmp snooper socks sstp-server system tool tracking type upgrade upnp user-manager users user vlan secret vrrp watchdog web-access wireless pptp pppoe lan wan layer7-protocol lease simple raw".split(" ").join("|")+");?\\s)+",relevance:10},{begin:/\.\./}]}]}}},function(e,t){e.exports=function(e){return{keywords:{keyword:"float color point normal vector matrix while for if do return else break extern continue",built_in:"abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp faceforward filterstep floor format fresnel incident length lightsource log match max min mod noise normalize ntransform opposite option phong pnoise pow printf ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan texture textureinfo trace transform vtransform xcomp ycomp zcomp"},illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$"},{className:"class",beginKeywords:"surface displacement light volume imager",end:"\\("},{beginKeywords:"illuminate illuminance gather",end:"\\("}]}}},function(e,t){e.exports=function(e){return{keywords:{keyword:"BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM NUMDAYS READ_DATE STAGING",built_in:"IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"literal",variants:[{begin:"#\\s+[a-zA-Z\\ \\.]*",relevance:0},{begin:"#[a-zA-Z\\ \\.]+"}]}]}}},function(e,t){e.exports=function(e){var t="([ui](8|16|32|64|128|size)|f(32|64))?",n="drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!";return{aliases:["rs"],keywords:{keyword:"alignof as be box break const continue crate do else enum extern false fn for if impl in let loop match mod mut offsetof once priv proc pub pure ref return self Self sizeof static struct super trait true type typeof unsafe unsized use virtual while where yield move default",literal:"true false Some None Ok Err",built_in:n},lexemes:e.IDENT_RE+"!?",illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"string",variants:[{begin:/r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'\\?(x\w{2}|u\w{4}|U\w{8}|.)'/}]},{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*/},{className:"number",variants:[{begin:"\\b0b([01_]+)"+t},{begin:"\\b0o([0-7_]+)"+t},{begin:"\\b0x([A-Fa-f0-9_]+)"+t},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+t}],relevance:0},{className:"function",beginKeywords:"fn",end:"(\\(|<)",excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"meta",begin:"#\\!?\\[",end:"\\]",contains:[{className:"meta-string",begin:/"/,end:/"/}]},{className:"class",beginKeywords:"type",end:";",contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{endsParent:!0})],illegal:"\\S"},{className:"class",beginKeywords:"trait enum struct union",end:"{",contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{endsParent:!0})],illegal:"[\\w\\d]"},{begin:e.IDENT_RE+"::",keywords:{built_in:n}},{begin:"->"}]}}},function(e,t){e.exports=function(e){return{aliases:["sas","SAS"],case_insensitive:!0,keywords:{literal:"null missing _all_ _automatic_ _character_ _infile_ _n_ _name_ _null_ _numeric_ _user_ _webout_",meta:"do if then else end until while abort array attrib by call cards cards4 catname continue datalines datalines4 delete delim delimiter display dm drop endsas error file filename footnote format goto in infile informat input keep label leave length libname link list lostcard merge missing modify options output out page put redirect remove rename replace retain return select set skip startsas stop title update waitsas where window x systask add and alter as cascade check create delete describe distinct drop foreign from group having index insert into in key like message modify msgtype not null on or order primary references reset restrict select set table unique update validate view where"},contains:[{className:"keyword",begin:/^\s*(proc [\w\d_]+|data|run|quit)[\s\;]/},{className:"variable",begin:/\&[a-zA-Z_\&][a-zA-Z0-9_]*\.?/},{className:"emphasis",begin:/^\s*datalines|cards.*;/,end:/^\s*;\s*$/},{className:"built_in",begin:"%(bquote|nrbquote|cmpres|qcmpres|compstor|datatyp|display|do|else|end|eval|global|goto|if|index|input|keydef|label|left|length|let|local|lowcase|macro|mend|nrbquote|nrquote|nrstr|put|qcmpres|qleft|qlowcase|qscan|qsubstr|qsysfunc|qtrim|quote|qupcase|scan|str|substr|superq|syscall|sysevalf|sysexec|sysfunc|sysget|syslput|sysprod|sysrc|sysrput|then|to|trim|unquote|until|upcase|verify|while|window)"},{className:"name",begin:/%[a-zA-Z_][a-zA-Z_0-9]*/},{className:"meta",begin:"[^%](abs|addr|airy|arcos|arsin|atan|attrc|attrn|band|betainv|blshift|bnot|bor|brshift|bxor|byte|cdf|ceil|cexist|cinv|close|cnonct|collate|compbl|compound|compress|cos|cosh|css|curobs|cv|daccdb|daccdbsl|daccsl|daccsyd|dacctab|dairy|date|datejul|datepart|datetime|day|dclose|depdb|depdbsl|depdbsl|depsl|depsl|depsyd|depsyd|deptab|deptab|dequote|dhms|dif|digamma|dim|dinfo|dnum|dopen|doptname|doptnum|dread|dropnote|dsname|erf|erfc|exist|exp|fappend|fclose|fcol|fdelete|fetch|fetchobs|fexist|fget|fileexist|filename|fileref|finfo|finv|fipname|fipnamel|fipstate|floor|fnonct|fnote|fopen|foptname|foptnum|fpoint|fpos|fput|fread|frewind|frlen|fsep|fuzz|fwrite|gaminv|gamma|getoption|getvarc|getvarn|hbound|hms|hosthelp|hour|ibessel|index|indexc|indexw|input|inputc|inputn|int|intck|intnx|intrr|irr|jbessel|juldate|kurtosis|lag|lbound|left|length|lgamma|libname|libref|log|log10|log2|logpdf|logpmf|logsdf|lowcase|max|mdy|mean|min|minute|mod|month|mopen|mort|n|netpv|nmiss|normal|note|npv|open|ordinal|pathname|pdf|peek|peekc|pmf|point|poisson|poke|probbeta|probbnml|probchi|probf|probgam|probhypr|probit|probnegb|probnorm|probt|put|putc|putn|qtr|quote|ranbin|rancau|ranexp|rangam|range|rank|rannor|ranpoi|rantbl|rantri|ranuni|repeat|resolve|reverse|rewind|right|round|saving|scan|sdf|second|sign|sin|sinh|skewness|soundex|spedis|sqrt|std|stderr|stfips|stname|stnamel|substr|sum|symget|sysget|sysmsg|sysprod|sysrc|system|tan|tanh|time|timepart|tinv|tnonct|today|translate|tranwrd|trigamma|trim|trimn|trunc|uniform|upcase|uss|var|varfmt|varinfmt|varlabel|varlen|varname|varnum|varray|varrayx|vartype|verify|vformat|vformatd|vformatdx|vformatn|vformatnx|vformatw|vformatwx|vformatx|vinarray|vinarrayx|vinformat|vinformatd|vinformatdx|vinformatn|vinformatnx|vinformatw|vinformatwx|vinformatx|vlabel|vlabelx|vlength|vlengthx|vname|vnamex|vtype|vtypex|weekday|year|yyq|zipfips|zipname|zipnamel|zipstate)[(]"},{className:"string",variants:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},e.COMMENT("\\*",";"),e.C_BLOCK_COMMENT_MODE]}}},function(e,t){e.exports=function(e){var t={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:"\\${",end:"}"}]},n={className:"string",variants:[{begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:'"""',end:'"""',relevance:10},{begin:'[a-z]+"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t]},{className:"string",begin:'[a-z]+"""',end:'"""',contains:[t],relevance:10}]},r={className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},o={className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/,relevance:0},i={className:"class",beginKeywords:"class object trait type",end:/[:={\[\n;]/,excludeEnd:!0,contains:[{beginKeywords:"extends with",relevance:10},{begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[r]},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[r]},o]},a={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[o]};return{keywords:{literal:"true false null",keyword:"type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"symbol",begin:"'\\w[\\w\\d_]*(?!')"},r,a,i,e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}}},function(e,t){e.exports=function(e){var t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},r={className:"number",variants:[{begin:"(\\-|\\+)?\\d+([./]\\d+)?",relevance:0},{begin:"(\\-|\\+)?\\d+([./]\\d+)?[+\\-](\\-|\\+)?\\d+([./]\\d+)?i",relevance:0},{begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},o=e.QUOTE_STRING_MODE,i=[e.COMMENT(";","$",{relevance:0}),e.COMMENT("#\\|","\\|#")],a={begin:t,relevance:0},s={className:"symbol",begin:"'"+t},l={endsWithParent:!0,relevance:0},u={variants:[{begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)",contains:["self",n,o,r,a,s]}]},c={className:"name",begin:t,lexemes:t,keywords:{"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci<? string-ci=? string-ci>=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string<? string=? string>=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"}},f={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}],contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[c,{begin:/\(/,end:/\)/,endsParent:!0,contains:[a]}]},c,l]};return l.contains=[n,r,o,a,s,u,f].concat(i),{illegal:/\S/,contains:[{className:"meta",begin:"^#!",end:"$"},r,o,s,u,f].concat(i)}}},function(e,t){e.exports=function(e){var t=[e.C_NUMBER_MODE,{className:"string",begin:"'|\"",end:"'|\"",contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]}];return{aliases:["sci"],lexemes:/%?\w+/,keywords:{keyword:"abort break case clear catch continue do elseif else endfunction end for function global if pause return resume select try then while",literal:"%f %F %t %T %pi %eps %inf %nan %e %i %z %s",built_in:"abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan type typename warning zeros matrix"},illegal:'("|#|/\\*|\\s+/\\w+)',contains:[{className:"function",beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},{begin:"[a-zA-Z_][a-zA-Z_0-9]*('+[\\.']*|[\\.']+)",end:"",relevance:0},{begin:"\\[",end:"\\]'*[\\.']*",relevance:0,contains:t},e.COMMENT("//","$")].concat(t)}}},function(e,t){e.exports=function(e){var t={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"},n={className:"number",begin:"#[0-9A-Fa-f]+"};e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE;return{case_insensitive:!0,illegal:"[=/|']",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:"\\#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},{className:"selector-attr",begin:"\\[",end:"\\]",illegal:"$"},{className:"selector-tag",begin:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",relevance:0},{begin:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{begin:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},t,{className:"attribute",begin:"\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",illegal:"[^\\s]"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:":",end:";",contains:[t,n,e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"meta",begin:"!important"}]},{begin:"@",end:"[{;]",keywords:"mixin include extend for if else each while charset import debug media page content font-face namespace warn",contains:[t,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n,e.CSS_NUMBER_MODE,{begin:"\\s[A-Za-z0-9_.-]+",relevance:0}]}]}}},function(e,t){e.exports=function(e){return{aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}},function(e,t){e.exports=function(e){var t=["add","and","cmp","cmpg","cmpl","const","div","double","float","goto","if","int","long","move","mul","neg","new","nop","not","or","rem","return","shl","shr","sput","sub","throw","ushr","xor"];return{aliases:["smali"],contains:[{className:"string",begin:'"',end:'"',relevance:0},e.COMMENT("#","$",{relevance:0}),{className:"keyword",variants:[{begin:"\\s*\\.end\\s[a-zA-Z0-9]*"},{begin:"^[ ]*\\.[a-zA-Z]*",relevance:0},{begin:"\\s:[a-zA-Z_0-9]*",relevance:0},{begin:"\\s("+["transient","constructor","abstract","final","synthetic","public","private","protected","static","bridge","system"].join("|")+")"}]},{className:"built_in",variants:[{begin:"\\s("+t.join("|")+")\\s"},{begin:"\\s("+t.join("|")+")((\\-|/)[a-zA-Z0-9]+)+\\s",relevance:10},{begin:"\\s("+["aget","aput","array","check","execute","fill","filled","goto/16","goto/32","iget","instance","invoke","iput","monitor","packed","sget","sparse"].join("|")+")((\\-|/)[a-zA-Z0-9]+)*\\s",relevance:10}]},{className:"class",begin:"L[^(;:\n]*;",relevance:0},{begin:"[vp][0-9]+"}]}}},function(e,t){e.exports=function(e){var t={className:"string",begin:"\\$.{1}"},n={className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{aliases:["st"],keywords:"self super nil true false thisContext",contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:"[a-z][a-zA-Z0-9_]*:",relevance:0},e.C_NUMBER_MODE,n,t,{begin:"\\|[ ]*[a-z][a-zA-Z0-9_]*([ ]+[a-z][a-zA-Z0-9_]*)*[ ]*\\|",returnBegin:!0,end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?[a-z][a-zA-Z0-9_]*"}]},{begin:"\\#\\(",end:"\\)",contains:[e.APOS_STRING_MODE,t,e.C_NUMBER_MODE,n]}]}}},function(e,t){e.exports=function(e){return{aliases:["ml"],keywords:{keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while",built_in:"array bool char exn int list option order real ref string substring vector unit word",literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/,lexemes:"[a-z_]\\w*!?",contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number",begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",relevance:0},{begin:/[-=]>/}]}}},function(e,t){e.exports=function(e){var t=e.getLanguage("cpp").exports;return{aliases:["sqf"],case_insensitive:!0,keywords:{keyword:"case catch default do else exit exitWith for forEach from if private switch then throw to try waitUntil while with",built_in:"abs accTime acos action actionIDs actionKeys actionKeysImages actionKeysNames actionKeysNamesArray actionName actionParams activateAddons activatedAddons activateKey add3DENConnection add3DENEventHandler add3DENLayer addAction addBackpack addBackpackCargo addBackpackCargoGlobal addBackpackGlobal addCamShake addCuratorAddons addCuratorCameraArea addCuratorEditableObjects addCuratorEditingArea addCuratorPoints addEditorObject addEventHandler addForce addGoggles addGroupIcon addHandgunItem addHeadgear addItem addItemCargo addItemCargoGlobal addItemPool addItemToBackpack addItemToUniform addItemToVest addLiveStats addMagazine addMagazineAmmoCargo addMagazineCargo addMagazineCargoGlobal addMagazineGlobal addMagazinePool addMagazines addMagazineTurret addMenu addMenuItem addMissionEventHandler addMPEventHandler addMusicEventHandler addOwnedMine addPlayerScores addPrimaryWeaponItem addPublicVariableEventHandler addRating addResources addScore addScoreSide addSecondaryWeaponItem addSwitchableUnit addTeamMember addToRemainsCollector addTorque addUniform addVehicle addVest addWaypoint addWeapon addWeaponCargo addWeaponCargoGlobal addWeaponGlobal addWeaponItem addWeaponPool addWeaponTurret admin agent agents AGLToASL aimedAtTarget aimPos airDensityRTD airplaneThrottle airportSide AISFinishHeal alive all3DENEntities allAirports allControls allCurators allCutLayers allDead allDeadMen allDisplays allGroups allMapMarkers allMines allMissionObjects allow3DMode allowCrewInImmobile allowCuratorLogicIgnoreAreas allowDamage allowDammage allowFileOperations allowFleeing allowGetIn allowSprint allPlayers allSimpleObjects allSites allTurrets allUnits allUnitsUAV allVariables ammo ammoOnPylon and animate animateBay animateDoor animatePylon animateSource animationNames animationPhase animationSourcePhase animationState append apply armoryPoints arrayIntersect asin ASLToAGL ASLToATL assert assignAsCargo assignAsCargoIndex assignAsCommander assignAsDriver assignAsGunner assignAsTurret assignCurator assignedCargo assignedCommander assignedDriver assignedGunner assignedItems assignedTarget assignedTeam assignedVehicle assignedVehicleRole assignItem assignTeam assignToAirport atan atan2 atg ATLToASL attachedObject attachedObjects attachedTo attachObject attachTo attackEnabled backpack backpackCargo backpackContainer backpackItems backpackMagazines backpackSpaceFor behaviour benchmark binocular boundingBox boundingBoxReal boundingCenter breakOut breakTo briefingName buildingExit buildingPos buttonAction buttonSetAction cadetMode call callExtension camCommand camCommit camCommitPrepared camCommitted camConstuctionSetParams camCreate camDestroy cameraEffect cameraEffectEnableHUD cameraInterest cameraOn cameraView campaignConfigFile camPreload camPreloaded camPrepareBank camPrepareDir camPrepareDive camPrepareFocus camPrepareFov camPrepareFovRange camPreparePos camPrepareRelPos camPrepareTarget camSetBank camSetDir camSetDive camSetFocus camSetFov camSetFovRange camSetPos camSetRelPos camSetTarget camTarget camUseNVG canAdd canAddItemToBackpack canAddItemToUniform canAddItemToVest cancelSimpleTaskDestination canFire canMove canSlingLoad canStand canSuspend canTriggerDynamicSimulation canUnloadInCombat canVehicleCargo captive captiveNum cbChecked cbSetChecked ceil channelEnabled cheatsEnabled checkAIFeature checkVisibility className clearAllItemsFromBackpack clearBackpackCargo clearBackpackCargoGlobal clearGroupIcons clearItemCargo clearItemCargoGlobal clearItemPool clearMagazineCargo clearMagazineCargoGlobal clearMagazinePool clearOverlay clearRadio clearWeaponCargo clearWeaponCargoGlobal clearWeaponPool clientOwner closeDialog closeDisplay closeOverlay collapseObjectTree collect3DENHistory collectiveRTD combatMode commandArtilleryFire commandChat commander commandFire commandFollow commandFSM commandGetOut commandingMenu commandMove commandRadio commandStop commandSuppressiveFire commandTarget commandWatch comment commitOverlay compile compileFinal completedFSM composeText configClasses configFile configHierarchy configName configProperties configSourceAddonList configSourceMod configSourceModList confirmSensorTarget connectTerminalToUAV controlsGroupCtrl copyFromClipboard copyToClipboard copyWaypoints cos count countEnemy countFriendly countSide countType countUnknown create3DENComposition create3DENEntity createAgent createCenter createDialog createDiaryLink createDiaryRecord createDiarySubject createDisplay createGearDialog createGroup createGuardedPoint createLocation createMarker createMarkerLocal createMenu createMine createMissionDisplay createMPCampaignDisplay createSimpleObject createSimpleTask createSite createSoundSource createTask createTeam createTrigger createUnit createVehicle createVehicleCrew createVehicleLocal crew ctAddHeader ctAddRow ctClear ctCurSel ctData ctFindHeaderRows ctFindRowHeader ctHeaderControls ctHeaderCount ctRemoveHeaders ctRemoveRows ctrlActivate ctrlAddEventHandler ctrlAngle ctrlAutoScrollDelay ctrlAutoScrollRewind ctrlAutoScrollSpeed ctrlChecked ctrlClassName ctrlCommit ctrlCommitted ctrlCreate ctrlDelete ctrlEnable ctrlEnabled ctrlFade ctrlHTMLLoaded ctrlIDC ctrlIDD ctrlMapAnimAdd ctrlMapAnimClear ctrlMapAnimCommit ctrlMapAnimDone ctrlMapCursor ctrlMapMouseOver ctrlMapScale ctrlMapScreenToWorld ctrlMapWorldToScreen ctrlModel ctrlModelDirAndUp ctrlModelScale ctrlParent ctrlParentControlsGroup ctrlPosition ctrlRemoveAllEventHandlers ctrlRemoveEventHandler ctrlScale ctrlSetActiveColor ctrlSetAngle ctrlSetAutoScrollDelay ctrlSetAutoScrollRewind ctrlSetAutoScrollSpeed ctrlSetBackgroundColor ctrlSetChecked ctrlSetEventHandler ctrlSetFade ctrlSetFocus ctrlSetFont ctrlSetFontH1 ctrlSetFontH1B ctrlSetFontH2 ctrlSetFontH2B ctrlSetFontH3 ctrlSetFontH3B ctrlSetFontH4 ctrlSetFontH4B ctrlSetFontH5 ctrlSetFontH5B ctrlSetFontH6 ctrlSetFontH6B ctrlSetFontHeight ctrlSetFontHeightH1 ctrlSetFontHeightH2 ctrlSetFontHeightH3 ctrlSetFontHeightH4 ctrlSetFontHeightH5 ctrlSetFontHeightH6 ctrlSetFontHeightSecondary ctrlSetFontP ctrlSetFontPB ctrlSetFontSecondary ctrlSetForegroundColor ctrlSetModel ctrlSetModelDirAndUp ctrlSetModelScale ctrlSetPixelPrecision ctrlSetPosition ctrlSetScale ctrlSetStructuredText ctrlSetText ctrlSetTextColor ctrlSetTooltip ctrlSetTooltipColorBox ctrlSetTooltipColorShade ctrlSetTooltipColorText ctrlShow ctrlShown ctrlText ctrlTextHeight ctrlTextWidth ctrlType ctrlVisible ctRowControls ctRowCount ctSetCurSel ctSetData ctSetHeaderTemplate ctSetRowTemplate ctSetValue ctValue curatorAddons curatorCamera curatorCameraArea curatorCameraAreaCeiling curatorCoef curatorEditableObjects curatorEditingArea curatorEditingAreaType curatorMouseOver curatorPoints curatorRegisteredObjects curatorSelected curatorWaypointCost current3DENOperation currentChannel currentCommand currentMagazine currentMagazineDetail currentMagazineDetailTurret currentMagazineTurret currentMuzzle currentNamespace currentTask currentTasks currentThrowable currentVisionMode currentWaypoint currentWeapon currentWeaponMode currentWeaponTurret currentZeroing cursorObject cursorTarget customChat customRadio cutFadeOut cutObj cutRsc cutText damage date dateToNumber daytime deActivateKey debriefingText debugFSM debugLog deg delete3DENEntities deleteAt deleteCenter deleteCollection deleteEditorObject deleteGroup deleteGroupWhenEmpty deleteIdentity deleteLocation deleteMarker deleteMarkerLocal deleteRange deleteResources deleteSite deleteStatus deleteTeam deleteVehicle deleteVehicleCrew deleteWaypoint detach detectedMines diag_activeMissionFSMs diag_activeScripts diag_activeSQFScripts diag_activeSQSScripts diag_captureFrame diag_captureFrameToFile diag_captureSlowFrame diag_codePerformance diag_drawMode diag_enable diag_enabled diag_fps diag_fpsMin diag_frameNo diag_lightNewLoad diag_list diag_log diag_logSlowFrame diag_mergeConfigFile diag_recordTurretLimits diag_setLightNew diag_tickTime diag_toggle dialog diarySubjectExists didJIP didJIPOwner difficulty difficultyEnabled difficultyEnabledRTD difficultyOption direction directSay disableAI disableCollisionWith disableConversation disableDebriefingStats disableMapIndicators disableNVGEquipment disableRemoteSensors disableSerialization disableTIEquipment disableUAVConnectability disableUserInput displayAddEventHandler displayCtrl displayParent displayRemoveAllEventHandlers displayRemoveEventHandler displaySetEventHandler dissolveTeam distance distance2D distanceSqr distributionRegion do3DENAction doArtilleryFire doFire doFollow doFSM doGetOut doMove doorPhase doStop doSuppressiveFire doTarget doWatch drawArrow drawEllipse drawIcon drawIcon3D drawLine drawLine3D drawLink drawLocation drawPolygon drawRectangle drawTriangle driver drop dynamicSimulationDistance dynamicSimulationDistanceCoef dynamicSimulationEnabled dynamicSimulationSystemEnabled echo edit3DENMissionAttributes editObject editorSetEventHandler effectiveCommander emptyPositions enableAI enableAIFeature enableAimPrecision enableAttack enableAudioFeature enableAutoStartUpRTD enableAutoTrimRTD enableCamShake enableCaustics enableChannel enableCollisionWith enableCopilot enableDebriefingStats enableDiagLegend enableDynamicSimulation enableDynamicSimulationSystem enableEndDialog enableEngineArtillery enableEnvironment enableFatigue enableGunLights enableInfoPanelComponent enableIRLasers enableMimics enablePersonTurret enableRadio enableReload enableRopeAttach enableSatNormalOnDetail enableSaving enableSentences enableSimulation enableSimulationGlobal enableStamina enableTeamSwitch enableTraffic enableUAVConnectability enableUAVWaypoints enableVehicleCargo enableVehicleSensor enableWeaponDisassembly endLoadingScreen endMission engineOn enginesIsOnRTD enginesRpmRTD enginesTorqueRTD entities environmentEnabled estimatedEndServerTime estimatedTimeLeft evalObjectArgument everyBackpack everyContainer exec execEditorScript execFSM execVM exp expectedDestination exportJIPMessages eyeDirection eyePos face faction fadeMusic fadeRadio fadeSound fadeSpeech failMission fillWeaponsFromPool find findCover findDisplay findEditorObject findEmptyPosition findEmptyPositionReady findIf findNearestEnemy finishMissionInit finite fire fireAtTarget firstBackpack flag flagAnimationPhase flagOwner flagSide flagTexture fleeing floor flyInHeight flyInHeightASL fog fogForecast fogParams forceAddUniform forcedMap forceEnd forceFlagTexture forceFollowRoad forceMap forceRespawn forceSpeed forceWalk forceWeaponFire forceWeatherChange forEachMember forEachMemberAgent forEachMemberTeam forgetTarget format formation formationDirection formationLeader formationMembers formationPosition formationTask formatText formLeader freeLook fromEditor fuel fullCrew gearIDCAmmoCount gearSlotAmmoCount gearSlotData get3DENActionState get3DENAttribute get3DENCamera get3DENConnections get3DENEntity get3DENEntityID get3DENGrid get3DENIconsVisible get3DENLayerEntities get3DENLinesVisible get3DENMissionAttribute get3DENMouseOver get3DENSelected getAimingCoef getAllEnvSoundControllers getAllHitPointsDamage getAllOwnedMines getAllSoundControllers getAmmoCargo getAnimAimPrecision getAnimSpeedCoef getArray getArtilleryAmmo getArtilleryComputerSettings getArtilleryETA getAssignedCuratorLogic getAssignedCuratorUnit getBackpackCargo getBleedingRemaining getBurningValue getCameraViewDirection getCargoIndex getCenterOfMass getClientState getClientStateNumber getCompatiblePylonMagazines getConnectedUAV getContainerMaxLoad getCursorObjectParams getCustomAimCoef getDammage getDescription getDir getDirVisual getDLCAssetsUsage getDLCAssetsUsageByName getDLCs getEditorCamera getEditorMode getEditorObjectScope getElevationOffset getEnvSoundController getFatigue getForcedFlagTexture getFriend getFSMVariable getFuelCargo getGroupIcon getGroupIconParams getGroupIcons getHideFrom getHit getHitIndex getHitPointDamage getItemCargo getMagazineCargo getMarkerColor getMarkerPos getMarkerSize getMarkerType getMass getMissionConfig getMissionConfigValue getMissionDLCs getMissionLayerEntities getModelInfo getMousePosition getMusicPlayedTime getNumber getObjectArgument getObjectChildren getObjectDLC getObjectMaterials getObjectProxy getObjectTextures getObjectType getObjectViewDistance getOxygenRemaining getPersonUsedDLCs getPilotCameraDirection getPilotCameraPosition getPilotCameraRotation getPilotCameraTarget getPlateNumber getPlayerChannel getPlayerScores getPlayerUID getPos getPosASL getPosASLVisual getPosASLW getPosATL getPosATLVisual getPosVisual getPosWorld getPylonMagazines getRelDir getRelPos getRemoteSensorsDisabled getRepairCargo getResolution getShadowDistance getShotParents getSlingLoad getSoundController getSoundControllerResult getSpeed getStamina getStatValue getSuppression getTerrainGrid getTerrainHeightASL getText getTotalDLCUsageTime getUnitLoadout getUnitTrait getUserMFDText getUserMFDvalue getVariable getVehicleCargo getWeaponCargo getWeaponSway getWingsOrientationRTD getWingsPositionRTD getWPPos glanceAt globalChat globalRadio goggles goto group groupChat groupFromNetId groupIconSelectable groupIconsVisible groupId groupOwner groupRadio groupSelectedUnits groupSelectUnit gunner gusts halt handgunItems handgunMagazine handgunWeapon handsHit hasInterface hasPilotCamera hasWeapon hcAllGroups hcGroupParams hcLeader hcRemoveAllGroups hcRemoveGroup hcSelected hcSelectGroup hcSetGroup hcShowBar hcShownBar headgear hideBody hideObject hideObjectGlobal hideSelection hint hintC hintCadet hintSilent hmd hostMission htmlLoad HUDMovementLevels humidity image importAllGroups importance in inArea inAreaArray incapacitatedState inflame inflamed infoPanel infoPanelComponentEnabled infoPanelComponents infoPanels inGameUISetEventHandler inheritsFrom initAmbientLife inPolygon inputAction inRangeOfArtillery insertEditorObject intersect is3DEN is3DENMultiplayer isAbleToBreathe isAgent isArray isAutoHoverOn isAutonomous isAutotest isBleeding isBurning isClass isCollisionLightOn isCopilotEnabled isDamageAllowed isDedicated isDLCAvailable isEngineOn isEqualTo isEqualType isEqualTypeAll isEqualTypeAny isEqualTypeArray isEqualTypeParams isFilePatchingEnabled isFlashlightOn isFlatEmpty isForcedWalk isFormationLeader isGroupDeletedWhenEmpty isHidden isInRemainsCollector isInstructorFigureEnabled isIRLaserOn isKeyActive isKindOf isLaserOn isLightOn isLocalized isManualFire isMarkedForCollection isMultiplayer isMultiplayerSolo isNil isNull isNumber isObjectHidden isObjectRTD isOnRoad isPipEnabled isPlayer isRealTime isRemoteExecuted isRemoteExecutedJIP isServer isShowing3DIcons isSimpleObject isSprintAllowed isStaminaEnabled isSteamMission isStreamFriendlyUIEnabled isText isTouchingGround isTurnedOut isTutHintsEnabled isUAVConnectable isUAVConnected isUIContext isUniformAllowed isVehicleCargo isVehicleRadarOn isVehicleSensorEnabled isWalking isWeaponDeployed isWeaponRested itemCargo items itemsWithMagazines join joinAs joinAsSilent joinSilent joinString kbAddDatabase kbAddDatabaseTargets kbAddTopic kbHasTopic kbReact kbRemoveTopic kbTell kbWasSaid keyImage keyName knowsAbout land landAt landResult language laserTarget lbAdd lbClear lbColor lbColorRight lbCurSel lbData lbDelete lbIsSelected lbPicture lbPictureRight lbSelection lbSetColor lbSetColorRight lbSetCurSel lbSetData lbSetPicture lbSetPictureColor lbSetPictureColorDisabled lbSetPictureColorSelected lbSetPictureRight lbSetPictureRightColor lbSetPictureRightColorDisabled lbSetPictureRightColorSelected lbSetSelectColor lbSetSelectColorRight lbSetSelected lbSetText lbSetTextRight lbSetTooltip lbSetValue lbSize lbSort lbSortByValue lbText lbTextRight lbValue leader leaderboardDeInit leaderboardGetRows leaderboardInit leaderboardRequestRowsFriends leaderboardsRequestUploadScore leaderboardsRequestUploadScoreKeepBest leaderboardState leaveVehicle libraryCredits libraryDisclaimers lifeState lightAttachObject lightDetachObject lightIsOn lightnings limitSpeed linearConversion lineIntersects lineIntersectsObjs lineIntersectsSurfaces lineIntersectsWith linkItem list listObjects listRemoteTargets listVehicleSensors ln lnbAddArray lnbAddColumn lnbAddRow lnbClear lnbColor lnbCurSelRow lnbData lnbDeleteColumn lnbDeleteRow lnbGetColumnsPosition lnbPicture lnbSetColor lnbSetColumnsPos lnbSetCurSelRow lnbSetData lnbSetPicture lnbSetText lnbSetValue lnbSize lnbSort lnbSortByValue lnbText lnbValue load loadAbs loadBackpack loadFile loadGame loadIdentity loadMagazine loadOverlay loadStatus loadUniform loadVest local localize locationPosition lock lockCameraTo lockCargo lockDriver locked lockedCargo lockedDriver lockedTurret lockIdentity lockTurret lockWP log logEntities logNetwork logNetworkTerminate lookAt lookAtPos magazineCargo magazines magazinesAllTurrets magazinesAmmo magazinesAmmoCargo magazinesAmmoFull magazinesDetail magazinesDetailBackpack magazinesDetailUniform magazinesDetailVest magazinesTurret magazineTurretAmmo mapAnimAdd mapAnimClear mapAnimCommit mapAnimDone mapCenterOnCamera mapGridPosition markAsFinishedOnSteam markerAlpha markerBrush markerColor markerDir markerPos markerShape markerSize markerText markerType max members menuAction menuAdd menuChecked menuClear menuCollapse menuData menuDelete menuEnable menuEnabled menuExpand menuHover menuPicture menuSetAction menuSetCheck menuSetData menuSetPicture menuSetValue menuShortcut menuShortcutText menuSize menuSort menuText menuURL menuValue min mineActive mineDetectedBy missionConfigFile missionDifficulty missionName missionNamespace missionStart missionVersion mod modelToWorld modelToWorldVisual modelToWorldVisualWorld modelToWorldWorld modParams moonIntensity moonPhase morale move move3DENCamera moveInAny moveInCargo moveInCommander moveInDriver moveInGunner moveInTurret moveObjectToEnd moveOut moveTime moveTo moveToCompleted moveToFailed musicVolume name nameSound nearEntities nearestBuilding nearestLocation nearestLocations nearestLocationWithDubbing nearestObject nearestObjects nearestTerrainObjects nearObjects nearObjectsReady nearRoads nearSupplies nearTargets needReload netId netObjNull newOverlay nextMenuItemIndex nextWeatherChange nMenuItems not numberOfEnginesRTD numberToDate objectCurators objectFromNetId objectParent objStatus onBriefingGroup onBriefingNotes onBriefingPlan onBriefingTeamSwitch onCommandModeChanged onDoubleClick onEachFrame onGroupIconClick onGroupIconOverEnter onGroupIconOverLeave onHCGroupSelectionChanged onMapSingleClick onPlayerConnected onPlayerDisconnected onPreloadFinished onPreloadStarted onShowNewObject onTeamSwitch openCuratorInterface openDLCPage openMap openSteamApp openYoutubeVideo or orderGetIn overcast overcastForecast owner param params parseNumber parseSimpleArray parseText parsingNamespace particlesQuality pickWeaponPool pitch pixelGrid pixelGridBase pixelGridNoUIScale pixelH pixelW playableSlotsNumber playableUnits playAction playActionNow player playerRespawnTime playerSide playersNumber playGesture playMission playMove playMoveNow playMusic playScriptedMission playSound playSound3D position positionCameraToWorld posScreenToWorld posWorldToScreen ppEffectAdjust ppEffectCommit ppEffectCommitted ppEffectCreate ppEffectDestroy ppEffectEnable ppEffectEnabled ppEffectForceInNVG precision preloadCamera preloadObject preloadSound preloadTitleObj preloadTitleRsc preprocessFile preprocessFileLineNumbers primaryWeapon primaryWeaponItems primaryWeaponMagazine priority processDiaryLink productVersion profileName profileNamespace profileNameSteam progressLoadingScreen progressPosition progressSetPosition publicVariable publicVariableClient publicVariableServer pushBack pushBackUnique putWeaponPool queryItemsPool queryMagazinePool queryWeaponPool rad radioChannelAdd radioChannelCreate radioChannelRemove radioChannelSetCallSign radioChannelSetLabel radioVolume rain rainbow random rank rankId rating rectangular registeredTasks registerTask reload reloadEnabled remoteControl remoteExec remoteExecCall remoteExecutedOwner remove3DENConnection remove3DENEventHandler remove3DENLayer removeAction removeAll3DENEventHandlers removeAllActions removeAllAssignedItems removeAllContainers removeAllCuratorAddons removeAllCuratorCameraAreas removeAllCuratorEditingAreas removeAllEventHandlers removeAllHandgunItems removeAllItems removeAllItemsWithMagazines removeAllMissionEventHandlers removeAllMPEventHandlers removeAllMusicEventHandlers removeAllOwnedMines removeAllPrimaryWeaponItems removeAllWeapons removeBackpack removeBackpackGlobal removeCuratorAddons removeCuratorCameraArea removeCuratorEditableObjects removeCuratorEditingArea removeDrawIcon removeDrawLinks removeEventHandler removeFromRemainsCollector removeGoggles removeGroupIcon removeHandgunItem removeHeadgear removeItem removeItemFromBackpack removeItemFromUniform removeItemFromVest removeItems removeMagazine removeMagazineGlobal removeMagazines removeMagazinesTurret removeMagazineTurret removeMenuItem removeMissionEventHandler removeMPEventHandler removeMusicEventHandler removeOwnedMine removePrimaryWeaponItem removeSecondaryWeaponItem removeSimpleTask removeSwitchableUnit removeTeamMember removeUniform removeVest removeWeapon removeWeaponAttachmentCargo removeWeaponCargo removeWeaponGlobal removeWeaponTurret reportRemoteTarget requiredVersion resetCamShake resetSubgroupDirection resize resources respawnVehicle restartEditorCamera reveal revealMine reverse reversedMouseY roadAt roadsConnectedTo roleDescription ropeAttachedObjects ropeAttachedTo ropeAttachEnabled ropeAttachTo ropeCreate ropeCut ropeDestroy ropeDetach ropeEndPosition ropeLength ropes ropeUnwind ropeUnwound rotorsForcesRTD rotorsRpmRTD round runInitScript safeZoneH safeZoneW safeZoneWAbs safeZoneX safeZoneXAbs safeZoneY save3DENInventory saveGame saveIdentity saveJoysticks saveOverlay saveProfileNamespace saveStatus saveVar savingEnabled say say2D say3D scopeName score scoreSide screenshot screenToWorld scriptDone scriptName scudState secondaryWeapon secondaryWeaponItems secondaryWeaponMagazine select selectBestPlaces selectDiarySubject selectedEditorObjects selectEditorObject selectionNames selectionPosition selectLeader selectMax selectMin selectNoPlayer selectPlayer selectRandom selectRandomWeighted selectWeapon selectWeaponTurret sendAUMessage sendSimpleCommand sendTask sendTaskResult sendUDPMessage serverCommand serverCommandAvailable serverCommandExecutable serverName serverTime set set3DENAttribute set3DENAttributes set3DENGrid set3DENIconsVisible set3DENLayer set3DENLinesVisible set3DENLogicType set3DENMissionAttribute set3DENMissionAttributes set3DENModelsVisible set3DENObjectType set3DENSelected setAccTime setActualCollectiveRTD setAirplaneThrottle setAirportSide setAmmo setAmmoCargo setAmmoOnPylon setAnimSpeedCoef setAperture setApertureNew setArmoryPoints setAttributes setAutonomous setBehaviour setBleedingRemaining setBrakesRTD setCameraInterest setCamShakeDefParams setCamShakeParams setCamUseTI setCaptive setCenterOfMass setCollisionLight setCombatMode setCompassOscillation setConvoySeparation setCuratorCameraAreaCeiling setCuratorCoef setCuratorEditingAreaType setCuratorWaypointCost setCurrentChannel setCurrentTask setCurrentWaypoint setCustomAimCoef setCustomWeightRTD setDamage setDammage setDate setDebriefingText setDefaultCamera setDestination setDetailMapBlendPars setDir setDirection setDrawIcon setDriveOnPath setDropInterval setDynamicSimulationDistance setDynamicSimulationDistanceCoef setEditorMode setEditorObjectScope setEffectCondition setEngineRPMRTD setFace setFaceAnimation setFatigue setFeatureType setFlagAnimationPhase setFlagOwner setFlagSide setFlagTexture setFog setFormation setFormationTask setFormDir setFriend setFromEditor setFSMVariable setFuel setFuelCargo setGroupIcon setGroupIconParams setGroupIconsSelectable setGroupIconsVisible setGroupId setGroupIdGlobal setGroupOwner setGusts setHideBehind setHit setHitIndex setHitPointDamage setHorizonParallaxCoef setHUDMovementLevels setIdentity setImportance setInfoPanel setLeader setLightAmbient setLightAttenuation setLightBrightness setLightColor setLightDayLight setLightFlareMaxDistance setLightFlareSize setLightIntensity setLightnings setLightUseFlare setLocalWindParams setMagazineTurretAmmo setMarkerAlpha setMarkerAlphaLocal setMarkerBrush setMarkerBrushLocal setMarkerColor setMarkerColorLocal setMarkerDir setMarkerDirLocal setMarkerPos setMarkerPosLocal setMarkerShape setMarkerShapeLocal setMarkerSize setMarkerSizeLocal setMarkerText setMarkerTextLocal setMarkerType setMarkerTypeLocal setMass setMimic setMousePosition setMusicEffect setMusicEventHandler setName setNameSound setObjectArguments setObjectMaterial setObjectMaterialGlobal setObjectProxy setObjectTexture setObjectTextureGlobal setObjectViewDistance setOvercast setOwner setOxygenRemaining setParticleCircle setParticleClass setParticleFire setParticleParams setParticleRandom setPilotCameraDirection setPilotCameraRotation setPilotCameraTarget setPilotLight setPiPEffect setPitch setPlateNumber setPlayable setPlayerRespawnTime setPos setPosASL setPosASL2 setPosASLW setPosATL setPosition setPosWorld setPylonLoadOut setPylonsPriority setRadioMsg setRain setRainbow setRandomLip setRank setRectangular setRepairCargo setRotorBrakeRTD setShadowDistance setShotParents setSide setSimpleTaskAlwaysVisible setSimpleTaskCustomData setSimpleTaskDescription setSimpleTaskDestination setSimpleTaskTarget setSimpleTaskType setSimulWeatherLayers setSize setSkill setSlingLoad setSoundEffect setSpeaker setSpeech setSpeedMode setStamina setStaminaScheme setStatValue setSuppression setSystemOfUnits setTargetAge setTaskMarkerOffset setTaskResult setTaskState setTerrainGrid setText setTimeMultiplier setTitleEffect setTrafficDensity setTrafficDistance setTrafficGap setTrafficSpeed setTriggerActivation setTriggerArea setTriggerStatements setTriggerText setTriggerTimeout setTriggerType setType setUnconscious setUnitAbility setUnitLoadout setUnitPos setUnitPosWeak setUnitRank setUnitRecoilCoefficient setUnitTrait setUnloadInCombat setUserActionText setUserMFDText setUserMFDvalue setVariable setVectorDir setVectorDirAndUp setVectorUp setVehicleAmmo setVehicleAmmoDef setVehicleArmor setVehicleCargo setVehicleId setVehicleLock setVehiclePosition setVehicleRadar setVehicleReceiveRemoteTargets setVehicleReportOwnPosition setVehicleReportRemoteTargets setVehicleTIPars setVehicleVarName setVelocity setVelocityModelSpace setVelocityTransformation setViewDistance setVisibleIfTreeCollapsed setWantedRPMRTD setWaves setWaypointBehaviour setWaypointCombatMode setWaypointCompletionRadius setWaypointDescription setWaypointForceBehaviour setWaypointFormation setWaypointHousePosition setWaypointLoiterRadius setWaypointLoiterType setWaypointName setWaypointPosition setWaypointScript setWaypointSpeed setWaypointStatements setWaypointTimeout setWaypointType setWaypointVisible setWeaponReloadingTime setWind setWindDir setWindForce setWindStr setWingForceScaleRTD setWPPos show3DIcons showChat showCinemaBorder showCommandingMenu showCompass showCuratorCompass showGPS showHUD showLegend showMap shownArtilleryComputer shownChat shownCompass shownCuratorCompass showNewEditorObject shownGPS shownHUD shownMap shownPad shownRadio shownScoretable shownUAVFeed shownWarrant shownWatch showPad showRadio showScoretable showSubtitles showUAVFeed showWarrant showWatch showWaypoint showWaypoints side sideChat sideEnemy sideFriendly sideRadio simpleTasks simulationEnabled simulCloudDensity simulCloudOcclusion simulInClouds simulWeatherSync sin size sizeOf skill skillFinal skipTime sleep sliderPosition sliderRange sliderSetPosition sliderSetRange sliderSetSpeed sliderSpeed slingLoadAssistantShown soldierMagazines someAmmo sort soundVolume spawn speaker speed speedMode splitString sqrt squadParams stance startLoadingScreen step stop stopEngineRTD stopped str sunOrMoon supportInfo suppressFor surfaceIsWater surfaceNormal surfaceType swimInDepth switchableUnits switchAction switchCamera switchGesture switchLight switchMove synchronizedObjects synchronizedTriggers synchronizedWaypoints synchronizeObjectsAdd synchronizeObjectsRemove synchronizeTrigger synchronizeWaypoint systemChat systemOfUnits tan targetKnowledge targets targetsAggregate targetsQuery taskAlwaysVisible taskChildren taskCompleted taskCustomData taskDescription taskDestination taskHint taskMarkerOffset taskParent taskResult taskState taskType teamMember teamName teams teamSwitch teamSwitchEnabled teamType terminate terrainIntersect terrainIntersectASL terrainIntersectAtASL text textLog textLogFormat tg time timeMultiplier titleCut titleFadeOut titleObj titleRsc titleText toArray toFixed toLower toString toUpper triggerActivated triggerActivation triggerArea triggerAttachedVehicle triggerAttachObject triggerAttachVehicle triggerDynamicSimulation triggerStatements triggerText triggerTimeout triggerTimeoutCurrent triggerType turretLocal turretOwner turretUnit tvAdd tvClear tvCollapse tvCollapseAll tvCount tvCurSel tvData tvDelete tvExpand tvExpandAll tvPicture tvSetColor tvSetCurSel tvSetData tvSetPicture tvSetPictureColor tvSetPictureColorDisabled tvSetPictureColorSelected tvSetPictureRight tvSetPictureRightColor tvSetPictureRightColorDisabled tvSetPictureRightColorSelected tvSetText tvSetTooltip tvSetValue tvSort tvSortByValue tvText tvTooltip tvValue type typeName typeOf UAVControl uiNamespace uiSleep unassignCurator unassignItem unassignTeam unassignVehicle underwater uniform uniformContainer uniformItems uniformMagazines unitAddons unitAimPosition unitAimPositionVisual unitBackpack unitIsUAV unitPos unitReady unitRecoilCoefficient units unitsBelowHeight unlinkItem unlockAchievement unregisterTask updateDrawIcon updateMenuItem updateObjectTree useAISteeringComponent useAudioTimeForMoves userInputDisabled vectorAdd vectorCos vectorCrossProduct vectorDiff vectorDir vectorDirVisual vectorDistance vectorDistanceSqr vectorDotProduct vectorFromTo vectorMagnitude vectorMagnitudeSqr vectorModelToWorld vectorModelToWorldVisual vectorMultiply vectorNormalized vectorUp vectorUpVisual vectorWorldToModel vectorWorldToModelVisual vehicle vehicleCargoEnabled vehicleChat vehicleRadio vehicleReceiveRemoteTargets vehicleReportOwnPosition vehicleReportRemoteTargets vehicles vehicleVarName velocity velocityModelSpace verifySignature vest vestContainer vestItems vestMagazines viewDistance visibleCompass visibleGPS visibleMap visiblePosition visiblePositionASL visibleScoretable visibleWatch waves waypointAttachedObject waypointAttachedVehicle waypointAttachObject waypointAttachVehicle waypointBehaviour waypointCombatMode waypointCompletionRadius waypointDescription waypointForceBehaviour waypointFormation waypointHousePosition waypointLoiterRadius waypointLoiterType waypointName waypointPosition waypoints waypointScript waypointsEnabledUAV waypointShow waypointSpeed waypointStatements waypointTimeout waypointTimeoutCurrent waypointType waypointVisible weaponAccessories weaponAccessoriesCargo weaponCargo weaponDirection weaponInertia weaponLowered weapons weaponsItems weaponsItemsCargo weaponState weaponsTurret weightRTD WFSideText wind ",literal:"blufor civilian configNull controlNull displayNull east endl false grpNull independent lineBreak locationNull nil objNull opfor pi resistance scriptNull sideAmbientLife sideEmpty sideLogic sideUnknown taskNull teamMemberNull true west"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.NUMBER_MODE,{className:"variable",begin:/\b_+[a-zA-Z_]\w*/},{className:"title",begin:/[a-zA-Z][a-zA-Z0-9]+_fnc_\w*/},{className:"string",variants:[{begin:'"',end:'"',contains:[{begin:'""',relevance:0}]},{begin:"'",end:"'",contains:[{begin:"''",relevance:0}]}]},t.preprocessor],illegal:/#|^\$ /}}},function(e,t){e.exports=function(e){var t=e.COMMENT("--","$");return{case_insensitive:!0,illegal:/[<>{}*]/,contains:[{beginKeywords:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment with",end:/;/,endsWithParent:!0,lexemes:/[\w\.]+/,keywords:{keyword:"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select self sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null unknown",built_in:"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp varchar varying void"},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{begin:'""'}]},{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]}}},function(e,t){e.exports=function(e){return{contains:[e.HASH_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:e.UNDERSCORE_IDENT_RE,lexemes:e.UNDERSCORE_IDENT_RE,keywords:{name:"for in while repeat until if then else",symbol:"bernoulli bernoulli_logit binomial binomial_logit beta_binomial hypergeometric categorical categorical_logit ordered_logistic neg_binomial neg_binomial_2 neg_binomial_2_log poisson poisson_log multinomial normal exp_mod_normal skew_normal student_t cauchy double_exponential logistic gumbel lognormal chi_square inv_chi_square scaled_inv_chi_square exponential inv_gamma weibull frechet rayleigh wiener pareto pareto_type_2 von_mises uniform multi_normal multi_normal_prec multi_normal_cholesky multi_gp multi_gp_cholesky multi_student_t gaussian_dlm_obs dirichlet lkj_corr lkj_corr_cholesky wishart inv_wishart","selector-tag":"int real vector simplex unit_vector ordered positive_ordered row_vector matrix cholesky_factor_corr cholesky_factor_cov corr_matrix cov_matrix",title:"functions model data parameters quantities transformed generated",literal:"true false"},relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",relevance:0},{className:"number",begin:"\\d+\\.(?!\\d)(?:i\\b)?",relevance:0},{className:"number",begin:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{className:"number",begin:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0}]}}},function(e,t){e.exports=function(e){return{aliases:["do","ado"],case_insensitive:!0,keywords:"if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize meqparse mer merg merge mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5",contains:[{className:"symbol",begin:/`[a-zA-Z0-9_]+'/},{className:"variable",begin:/\$\{?[a-zA-Z0-9_]+\}?/},{className:"string",variants:[{begin:'`"[^\r\n]*?"\''},{begin:'"[^\r\n"]*"'}]},{className:"built_in",variants:[{begin:"\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\(|$)"}]},e.COMMENT("^[ \t]*\\*.*$",!1),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}}},function(e,t){e.exports=function(e){return{aliases:["p21","step","stp"],case_insensitive:!0,lexemes:"[A-Z_][A-Z0-9_.]*",keywords:{keyword:"HEADER ENDSEC DATA"},contains:[{className:"meta",begin:"ISO-10303-21;",relevance:10},{className:"meta",begin:"END-ISO-10303-21;",relevance:10},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT("/\\*\\*!","\\*/"),e.C_NUMBER_MODE,e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"string",begin:"'",end:"'"},{className:"symbol",variants:[{begin:"#",end:"\\d+",illegal:"\\W"}]}]}}},function(e,t){e.exports=function(e){var t={className:"variable",begin:"\\$"+e.IDENT_RE},n={className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"},r="[\\.\\s\\n\\[\\:,]";return{aliases:["styl"],case_insensitive:!1,keywords:"if else for in",illegal:"("+["\\?","(\\bReturn\\b)","(\\bEnd\\b)","(\\bend\\b)","(\\bdef\\b)",";","#\\s","\\*\\s","===\\s","\\|","%"].join("|")+")",contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{begin:"\\.[a-zA-Z][a-zA-Z0-9_-]*"+r,returnBegin:!0,contains:[{className:"selector-class",begin:"\\.[a-zA-Z][a-zA-Z0-9_-]*"}]},{begin:"\\#[a-zA-Z][a-zA-Z0-9_-]*"+r,returnBegin:!0,contains:[{className:"selector-id",begin:"\\#[a-zA-Z][a-zA-Z0-9_-]*"}]},{begin:"\\b("+["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"].join("|")+")"+r,returnBegin:!0,contains:[{className:"selector-tag",begin:"\\b[a-zA-Z][a-zA-Z0-9_-]*"}]},{begin:"&?:?:\\b("+["after","before","first-letter","first-line","active","first-child","focus","hover","lang","link","visited"].join("|")+")"+r},{begin:"@("+["charset","css","debug","extend","font-face","for","import","include","media","mixin","page","warn","while"].join("|")+")\\b"},t,e.CSS_NUMBER_MODE,e.NUMBER_MODE,{className:"function",begin:"^[a-zA-Z][a-zA-Z0-9_-]*\\(.*\\)",illegal:"[\\n]",returnBegin:!0,contains:[{className:"title",begin:"\\b[a-zA-Z][a-zA-Z0-9_-]*"},{className:"params",begin:/\(/,end:/\)/,contains:[n,t,e.APOS_STRING_MODE,e.CSS_NUMBER_MODE,e.NUMBER_MODE,e.QUOTE_STRING_MODE]}]},{className:"attribute",begin:"\\b("+["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse().join("|")+")\\b",starts:{end:/;|$/,contains:[n,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE,e.NUMBER_MODE,e.C_BLOCK_COMMENT_MODE],illegal:/\./,relevance:0}}]}}},function(e,t){e.exports=function(e){return{case_insensitive:!0,contains:[{className:"string",begin:"\\[\n(multipart)?",end:"\\]\n"},{className:"string",begin:"\\d{4}-\\d{2}-\\d{2}(\\s+)\\d{2}:\\d{2}:\\d{2}.\\d+Z"},{className:"string",begin:"(\\+|-)\\d+"},{className:"keyword",relevance:10,variants:[{begin:"^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\s+(test)?"},{begin:"^progress(:?)(\\s+)?(pop|push)?"},{begin:"^tags:"},{begin:"^time:"}]}]}}},function(e,t){e.exports=function(e){var t={keyword:"__COLUMN__ __FILE__ __FUNCTION__ __LINE__ as as! as? associatedtype associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n=e.COMMENT("/\\*","\\*/",{contains:["self"]}),r={className:"subst",begin:/\\\(/,end:"\\)",keywords:t,contains:[]},o={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{contains:[r,e.BACKSLASH_ESCAPE]});return r.contains=[o],{keywords:t,contains:[i,e.C_LINE_COMMENT_MODE,n,{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},o,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin:/</,end:/>/},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,contains:["self",o,i,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:t,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain)"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,n]}]}}},function(e,t){e.exports=function(e){return{contains:[{className:"comment",begin:/\$noop\(/,end:/\)/,contains:[{begin:/\(/,end:/\)/,contains:["self",{begin:/\\./}]}],relevance:10},{className:"keyword",begin:/\$(?!noop)[a-zA-Z][_a-zA-Z0-9]*/,end:/\(/,excludeEnd:!0},{className:"variable",begin:/%[_a-zA-Z0-9:]*/,end:"%"},{className:"symbol",begin:/\\./}]}}},function(e,t){e.exports=function(e){var t="[a-zA-Z_][\\w\\-]*",n={className:"attr",variants:[{begin:"^[ \\-]*"+t+":"},{begin:'^[ \\-]*"'+t+'":'},{begin:"^[ \\-]*'"+t+"':"}]},r={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:"{{",end:"}}"},{begin:"%{",end:"}"}]}]};return{case_insensitive:!0,aliases:["yml","YAML","yaml"],contains:[n,{className:"meta",begin:"^---s*$",relevance:10},{className:"string",begin:"[\\|>] *$",returnEnd:!0,contains:r.contains,end:n.variants[0].begin},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!"+e.UNDERSCORE_IDENT_RE},{className:"type",begin:"!!"+e.UNDERSCORE_IDENT_RE},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"^ *-",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:"true false yes no null",keywords:{literal:"true false yes no null"}},e.C_NUMBER_MODE,r]}}},function(e,t){e.exports=function(e){return{case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"meta",variants:[{begin:"^TAP version (\\d+)$"},{begin:"^1\\.\\.(\\d+)$"}]},{begin:"(s+)?---$",end:"\\.\\.\\.$",subLanguage:"yaml",relevance:0},{className:"number",begin:" (\\d+) "},{className:"symbol",variants:[{begin:"^ok"},{begin:"^not ok"}]}]}}},function(e,t){e.exports=function(e){return{aliases:["tk"],keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while",contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title",begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]",endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)",end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},{className:"number",variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]}}},function(e,t){e.exports=function(e){var t={className:"tag",begin:/\\/,relevance:0,contains:[{className:"name",variants:[{begin:/[a-zA-Zа-яА-я]+[*]?/},{begin:/[^a-zA-Zа-яА-я0-9]/}],starts:{endsWithParent:!0,relevance:0,contains:[{className:"string",variants:[{begin:/\[/,end:/\]/},{begin:/\{/,end:/\}/}]},{begin:/\s*=\s*/,endsWithParent:!0,relevance:0,contains:[{className:"number",begin:/-?\d*\.?\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?/}]}]}}]};return{contains:[t,{className:"formula",contains:[t],relevance:0,variants:[{begin:/\$\$/,end:/\$\$/},{begin:/\$/,end:/\$/}]},e.COMMENT("%","$",{relevance:0})]}}},function(e,t){e.exports=function(e){return{keywords:{keyword:"namespace const typedef struct enum service exception void oneway set list map required optional",built_in:"bool byte i16 i32 i64 double string binary",literal:"true false"},contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"class",beginKeywords:"struct enum service exception",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{begin:"\\b(set|list|map)\\s*<",end:">",keywords:"bool byte i16 i32 i64 double string binary",contains:["self"]}]}}},function(e,t){e.exports=function(e){var t={className:"number",begin:"[1-9][0-9]*",relevance:0},n={className:"symbol",begin:":[^\\]]+"};return{keywords:{keyword:"ABORT ACC ADJUST AND AP_LD BREAK CALL CNT COL CONDITION CONFIG DA DB DIV DETECT ELSE END ENDFOR ERR_NUM ERROR_PROG FINE FOR GP GUARD INC IF JMP LINEAR_MAX_SPEED LOCK MOD MONITOR OFFSET Offset OR OVERRIDE PAUSE PREG PTH RT_LD RUN SELECT SKIP Skip TA TB TO TOOL_OFFSET Tool_Offset UF UT UFRAME_NUM UTOOL_NUM UNLOCK WAIT X Y Z W P R STRLEN SUBSTR FINDSTR VOFFSET PROG ATTR MN POS",literal:"ON OFF max_speed LPOS JPOS ENABLE DISABLE START STOP RESET"},contains:[{className:"built_in",begin:"(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER| TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\[",end:"\\]",contains:["self",t,n]},{className:"built_in",begin:"(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\[",end:"\\]",contains:["self",t,e.QUOTE_STRING_MODE,n]},{className:"keyword",begin:"/(PROG|ATTR|MN|POS|END)\\b"},{className:"keyword",begin:"(CALL|RUN|POINT_LOGIC|LBL)\\b"},{className:"keyword",begin:"\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)"},{className:"number",begin:"\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\b",relevance:0},e.COMMENT("//","[;$]"),e.COMMENT("!","[;$]"),e.COMMENT("--eg:","$"),e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"'"},e.C_NUMBER_MODE,{className:"variable",begin:"\\$[A-Za-z0-9_]+"}]}}},function(e,t){e.exports=function(e){var t="attribute block constant cycle date dump include max min parent random range source template_from_string",n={beginKeywords:t,keywords:{name:t},relevance:0,contains:[{className:"params",begin:"\\(",end:"\\)"}]},r={begin:/\|[A-Za-z_]+:?/,keywords:"abs batch capitalize convert_encoding date date_modify default escape first format join json_encode keys last length lower merge nl2br number_format raw replace reverse round slice sort split striptags title trim upper url_encode",contains:[n]},o="autoescape block do embed extends filter flush for if import include macro sandbox set spaceless use verbatim";return o=o+" "+o.split(" ").map(function(e){return"end"+e}).join(" "),{aliases:["craftcms"],case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT(/\{#/,/#}/),{className:"template-tag",begin:/\{%/,end:/%}/,contains:[{className:"name",begin:/\w+/,keywords:o,starts:{endsWithParent:!0,contains:[r,n],relevance:0}}]},{className:"template-variable",begin:/\{\{/,end:/}}/,contains:["self",r,n]}]}}},function(e,t){e.exports=function(e){var t={keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class public private protected get set super static implements enum export import declare type namespace abstract as from extends async await",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document any number boolean string void Promise"};return{aliases:["ts"],keywords:t,contains:[{className:"meta",begin:/^\s*['"]use strict['"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,{className:"subst",begin:"\\$\\{",end:"\\}"}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+e.IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.IDENT_RE},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:["self",e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}]}],relevance:0},{className:"function",begin:"function",end:/[\{;]/,excludeEnd:!0,keywords:t,contains:["self",e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:/["'\(]/}],illegal:/%/,relevance:0},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0,contains:["self",{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:/["'\(]/}]},{begin:/module\./,keywords:{built_in:"module"},relevance:0},{beginKeywords:"module",end:/\{/,excludeEnd:!0},{beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:"interface extends"},{begin:/\$[(.]/},{begin:"\\."+e.IDENT_RE,relevance:0},{className:"meta",begin:"@[A-Za-z]+"}]}}},function(e,t){e.exports=function(e){return{keywords:{keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var",built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"},contains:[{className:"class",beginKeywords:"class interface namespace",end:"{",excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""',end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"^#",end:"$",relevance:2}]}}},function(e,t){e.exports=function(e){return{aliases:["vb"],case_insensitive:!0,keywords:{keyword:"addhandler addressof alias and andalso aggregate ansi as assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into is isfalse isnot istrue join key let lib like loop me mid mod module mustinherit mustoverride mybase myclass namespace narrowing new next not notinheritable notoverridable of off on operator option optional or order orelse overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim rem removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly xor",built_in:"boolean byte cbool cbyte cchar cdate cdec cdbl char cint clng cobj csbyte cshort csng cstr ctype date decimal directcast double gettype getxmlnamespace iif integer long object sbyte short single string trycast typeof uinteger ulong ushort",literal:"true false nothing"},illegal:"//|{|}|endif|gosub|variant|wend|^\\$ ",contains:[e.inherit(e.QUOTE_STRING_MODE,{contains:[{begin:'""'}]}),e.COMMENT("'","$",{returnBegin:!0,contains:[{className:"doctag",begin:"'''|\x3c!--|--\x3e",contains:[e.PHRASAL_WORDS_MODE]},{className:"doctag",begin:"</?",end:">",contains:[e.PHRASAL_WORDS_MODE]}]}),e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elseif end region externalsource"}}]}}},function(e,t){e.exports=function(e){return{aliases:["vbs"],case_insensitive:!0,keywords:{keyword:"call class const dim do loop erase execute executeglobal exit for each next function if then else on error option explicit new private property let get public randomize redim rem select case set stop sub while wend with end to elseif is or xor and not class_initialize class_terminate default preserve in me byval byref step resume goto",built_in:"lcase month vartype instrrev ubound setlocale getobject rgb getref string weekdayname rnd dateadd monthname now day minute isarray cbool round formatcurrency conversions csng timevalue second year space abs clng timeserial fixs len asc isempty maths dateserial atn timer isobject filter weekday datevalue ccur isdate instr datediff formatdatetime replace isnull right sgn array snumeric log cdbl hex chr lbound msgbox ucase getlocale cos cdate cbyte rtrim join hour oct typename trim strcomp int createobject loadpicture tan formatnumber mid scriptenginebuildversion scriptengine split scriptengineminorversion cint sin datepart ltrim sqr scriptenginemajorversion time derived eval date formatpercent exp inputbox left ascw chrw regexp server response request cstr err",literal:"true false null nothing empty"},illegal:"//",contains:[e.inherit(e.QUOTE_STRING_MODE,{contains:[{begin:'""'}]}),e.COMMENT(/'/,/$/,{relevance:0}),e.C_NUMBER_MODE]}}},function(e,t){e.exports=function(e){return{subLanguage:"xml",contains:[{begin:"<%",end:"%>",subLanguage:"vbscript"}]}}},function(e,t){e.exports=function(e){return{aliases:["v","sv","svh"],case_insensitive:!1,keywords:{keyword:"accept_on alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind bins binsof bit break buf|0 bufif0 bufif1 byte case casex casez cell chandle checker class clocking cmos config const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable dist do edge else end endcase endchecker endclass endclocking endconfig endfunction endgenerate endgroup endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask enum event eventually expect export extends extern final first_match for force foreach forever fork forkjoin function generate|5 genvar global highz0 highz1 if iff ifnone ignore_bins illegal_bins implements implies import incdir include initial inout input inside instance int integer interconnect interface intersect join join_any join_none large let liblist library local localparam logic longint macromodule matches medium modport module nand negedge nettype new nexttime nmos nor noshowcancelled not notif0 notif1 or output package packed parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos real realtime ref reg reject_on release repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always s_eventually s_nexttime s_until s_until_with scalared sequence shortint shortreal showcancelled signed small soft solve specify specparam static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on sync_reject_on table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior trireg type typedef union unique unique0 unsigned until until_with untyped use uwire var vectored virtual void wait wait_order wand weak weak0 weak1 while wildcard wire with within wor xnor xor",literal:"null",built_in:"$finish $stop $exit $fatal $error $warning $info $realtime $time $printtimescale $bitstoreal $bitstoshortreal $itor $signed $cast $bits $stime $timeformat $realtobits $shortrealtobits $rtoi $unsigned $asserton $assertkill $assertpasson $assertfailon $assertnonvacuouson $assertoff $assertcontrol $assertpassoff $assertfailoff $assertvacuousoff $isunbounded $sampled $fell $changed $past_gclk $fell_gclk $changed_gclk $rising_gclk $steady_gclk $coverage_control $coverage_get $coverage_save $set_coverage_db_name $rose $stable $past $rose_gclk $stable_gclk $future_gclk $falling_gclk $changing_gclk $display $coverage_get_max $coverage_merge $get_coverage $load_coverage_db $typename $unpacked_dimensions $left $low $increment $clog2 $ln $log10 $exp $sqrt $pow $floor $ceil $sin $cos $tan $countbits $onehot $isunknown $fatal $warning $dimensions $right $high $size $asin $acos $atan $atan2 $hypot $sinh $cosh $tanh $asinh $acosh $atanh $countones $onehot0 $error $info $random $dist_chi_square $dist_erlang $dist_exponential $dist_normal $dist_poisson $dist_t $dist_uniform $q_initialize $q_remove $q_exam $async$and$array $async$nand$array $async$or$array $async$nor$array $sync$and$array $sync$nand$array $sync$or$array $sync$nor$array $q_add $q_full $psprintf $async$and$plane $async$nand$plane $async$or$plane $async$nor$plane $sync$and$plane $sync$nand$plane $sync$or$plane $sync$nor$plane $system $display $displayb $displayh $displayo $strobe $strobeb $strobeh $strobeo $write $readmemb $readmemh $writememh $value$plusargs $dumpvars $dumpon $dumplimit $dumpports $dumpportson $dumpportslimit $writeb $writeh $writeo $monitor $monitorb $monitorh $monitoro $writememb $dumpfile $dumpoff $dumpall $dumpflush $dumpportsoff $dumpportsall $dumpportsflush $fclose $fdisplay $fdisplayb $fdisplayh $fdisplayo $fstrobe $fstrobeb $fstrobeh $fstrobeo $swrite $swriteb $swriteh $swriteo $fscanf $fread $fseek $fflush $feof $fopen $fwrite $fwriteb $fwriteh $fwriteo $fmonitor $fmonitorb $fmonitorh $fmonitoro $sformat $sformatf $fgetc $ungetc $fgets $sscanf $rewind $ftell $ferror"},lexemes:/[\w\$]+/,contains:[e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"number",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"\\b((\\d+'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)"},{begin:"\\B(('(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)"},{begin:"\\b([0-9_])+",relevance:0}]},{className:"variable",variants:[{begin:"#\\((?!parameter).+\\)"},{begin:"\\.\\w+",relevance:0}]},{className:"meta",begin:"`",end:"$",keywords:{"meta-keyword":"define __FILE__ __LINE__ begin_keywords celldefine default_nettype define else elsif end_keywords endcelldefine endif ifdef ifndef include line nounconnected_drive pragma resetall timescale unconnected_drive undef undefineall"},relevance:0}]}}},function(e,t){e.exports=function(e){return{case_insensitive:!0,keywords:{keyword:"abs access after alias all and architecture array assert assume assume_guarantee attribute begin block body buffer bus case component configuration constant context cover disconnect downto default else elsif end entity exit fairness file for force function generate generic group guarded if impure in inertial inout is label library linkage literal loop map mod nand new next nor not null of on open or others out package parameter port postponed procedure process property protected pure range record register reject release rem report restrict restrict_guarantee return rol ror select sequence severity shared signal sla sll sra srl strong subtype then to transport type unaffected units until use variable view vmode vprop vunit wait when while with xnor xor",built_in:"boolean bit character integer time delay_length natural positive string bit_vector file_open_kind file_open_status std_logic std_logic_vector unsigned signed boolean_vector integer_vector std_ulogic std_ulogic_vector unresolved_unsigned u_unsigned unresolved_signed u_signed real_vector time_vector",literal:"false true note warning error failure line text side width"},illegal:"{",contains:[e.C_BLOCK_COMMENT_MODE,e.COMMENT("--","$"),e.QUOTE_STRING_MODE,{className:"number",begin:"\\b(\\d(_|\\d)*#\\w+(\\.\\w+)?#([eE][-+]?\\d(_|\\d)*)?|\\d(_|\\d)*(\\.\\d(_|\\d)*)?([eE][-+]?\\d(_|\\d)*)?)",relevance:0},{className:"string",begin:"'(U|X|0|1|Z|W|L|H|-)'",contains:[e.BACKSLASH_ESCAPE]},{className:"symbol",begin:"'[A-Za-z](_?[A-Za-z0-9])*",contains:[e.BACKSLASH_ESCAPE]}]}}},function(e,t){e.exports=function(e){return{lexemes:/[!#@\w]+/,keywords:{keyword:"N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank",built_in:"synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv complete_check add getwinposx getqflist getwinposy screencol clearmatches empty extend getcmdpos mzeval garbagecollect setreg ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable shiftwidth max sinh isdirectory synID system inputrestore winline atan visualmode inputlist tabpagewinnr round getregtype mapcheck hasmapto histdel argidx findfile sha256 exists toupper getcmdline taglist string getmatches bufnr strftime winwidth bufexists strtrans tabpagebuflist setcmdpos remote_read printf setloclist getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval resolve libcallnr foldclosedend reverse filter has_key bufname str2float strlen setline getcharmod setbufvar index searchpos shellescape undofile foldclosed setqflist buflisted strchars str2nr virtcol floor remove undotree remote_expr winheight gettabwinvar reltime cursor tabpagenr finddir localtime acos getloclist search tanh matchend rename gettabvar strdisplaywidth type abs py3eval setwinvar tolower wildmenumode log10 spellsuggest bufloaded synconcealed nextnonblank server2client complete settabwinvar executable input wincol setmatches getftype hlID inputsave searchpair or screenrow line settabvar histadd deepcopy strpart remote_peek and eval getftime submatch screenchar winsaveview matchadd mkdir screenattr getfontname libcall reltimestr getfsize winnr invert pow getbufline byte2line soundfold repeat fnameescape tagfiles sin strwidth spellbadword trunc maparg log lispindent hostname setpos globpath remote_foreground getchar synIDattr fnamemodify cscope_connection stridx winbufnr indent min complete_add nr2char searchpairpos inputdialog values matchlist items hlexists strridx browsedir expand fmod pathshorten line2byte argc count getwinvar glob foldtextresult getreg foreground cosh matchdelete has char2nr simplify histget searchdecl iconv winrestcmd pumvisible writefile foldlevel haslocaldir keys cos matchstr foldtext histnr tan tempname getcwd byteidx getbufvar islocked escape eventhandler remote_send serverlist winrestview synstack pyeval prevnonblank readfile cindent filereadable changenr exp"},illegal:/;/,contains:[e.NUMBER_MODE,{className:"string",begin:"'",end:"'",illegal:"\\n"},{className:"string",begin:/"(\\"|\n\\|[^"\n])*"/},e.COMMENT('"',"$"),{className:"variable",begin:/[bwtglsav]:[\w\d_]*/},{className:"function",beginKeywords:"function function!",end:"$",relevance:0,contains:[e.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},{className:"symbol",begin:/<[\w-]+>/}]}}},function(e,t){e.exports=function(e){return{case_insensitive:!0,lexemes:"[.%]?"+e.IDENT_RE,keywords:{keyword:"lock rep repe repz repne repnz xaquire xrelease bnd nobnd aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63",built_in:"ip eip rip al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 cs ds es fs gs ss st st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 k0 k1 k2 k3 k4 k5 k6 k7 bnd0 bnd1 bnd2 bnd3 cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d r0h r1h r2h r3h r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l db dw dd dq dt ddq do dy dz resb resw resd resq rest resdq reso resy resz incbin equ times byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr",meta:"%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif %if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep %endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment .nolist __FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ __UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend align alignb sectalign daz nodaz up down zero default option assume public bits use16 use32 use64 default section segment absolute extern global common cpu float __utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ __float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ __Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__"},contains:[e.COMMENT(";","$",{relevance:0}),{className:"number",variants:[{begin:"\\b(?:([0-9][0-9_]*)?\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|(0[Xx])?[0-9][0-9_]*\\.?[0-9_]*(?:[pP](?:[+-]?[0-9_]+)?)?)\\b",relevance:0},{begin:"\\$[0-9][0-9A-Fa-f]*",relevance:0},{begin:"\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\b"},{begin:"\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\b"}]},e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:"'",end:"[^\\\\]'"},{begin:"`",end:"[^\\\\]`"}],relevance:0},{className:"symbol",variants:[{begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)"},{begin:"^\\s*%%[A-Za-z0-9_$#@~.?]*:"}],relevance:0},{className:"subst",begin:"%[0-9]+",relevance:0},{className:"subst",begin:"%!S+",relevance:0},{className:"meta",begin:/^\s*\.[\w_-]+/}]}}},function(e,t){e.exports=function(e){var t={keyword:"if then else do while until for loop import with is as where when by data constant integer real text name boolean symbol infix prefix postfix block tree",literal:"true false nil",built_in:"in mod rem and or xor not abs sign floor ceil sqrt sin cos tan asin acos atan exp expm1 log log2 log10 log1p pi at text_length text_range text_find text_replace contains page slide basic_slide title_slide title subtitle fade_in fade_out fade_at clear_color color line_color line_width texture_wrap texture_transform texture scale_?x scale_?y scale_?z? translate_?x translate_?y translate_?z? rotate_?x rotate_?y rotate_?z? rectangle circle ellipse sphere path line_to move_to quad_to curve_to theme background contents locally time mouse_?x mouse_?y mouse_buttons ObjectLoader Animate MovieCredits Slides Filters Shading Materials LensFlare Mapping VLCAudioVideo StereoDecoder PointCloud NetworkAccess RemoteControl RegExp ChromaKey Snowfall NodeJS Speech Charts"},n={className:"string",begin:'"',end:'"',illegal:"\\n"},r={beginKeywords:"import",end:"$",keywords:t,contains:[n]},o={className:"function",begin:/[a-z][^\n]*->/,returnBegin:!0,end:/->/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,keywords:t}})]};return{aliases:["tao"],lexemes:/[a-zA-Z][a-zA-Z0-9_?]*/,keywords:t,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"string",begin:"'",end:"'",illegal:"\\n"},{className:"string",begin:"<<",end:">>"},o,r,{className:"number",begin:"[0-9]+#[0-9A-Z_]+(\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?"},e.NUMBER_MODE]}}},function(e,t){e.exports=function(e){var t={begin:"{",end:"}"},n=[{begin:/\$[a-zA-Z0-9\-]+/},{className:"string",variants:[{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{className:"comment",begin:"\\(:",end:":\\)",relevance:10,contains:[{className:"doctag",begin:"@\\w+"}]},{className:"meta",begin:"%\\w+"},t];return t.contains=n,{aliases:["xpath","xq"],case_insensitive:!1,lexemes:/[a-zA-Z\$][a-zA-Z0-9_:\-]*/,illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{keyword:"for let if while then else return where group by xquery encoding versionmodule namespace boundary-space preserve strip default collation base-uri orderingcopy-namespaces order declare import schema namespace function option in allowing emptyat tumbling window sliding window start when only end when previous next stable ascendingdescending empty greatest least some every satisfies switch case typeswitch try catch andor to union intersect instance of treat as castable cast map array delete insert intoreplace value rename copy modify update",literal:"false true xs:string xs:integer element item xs:date xs:datetime xs:float xs:double xs:decimal QName xs:anyURI xs:long xs:int xs:short xs:byte attribute"},contains:n}}},function(e,t){e.exports=function(e){var t={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},n={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["zep"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var let while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally int uint long ulong char uchar double float bool boolean stringlikely unlikely",contains:[e.C_LINE_COMMENT_MODE,e.HASH_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:"<<<['\"]?\\w+['\"]?$",end:"^\\w+;",contains:[e.BACKSLASH_ESCAPE]},{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",e.C_BLOCK_COMMENT_MODE,t,n]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},t,n]}}},function(e,t,n){var r=n(632),o=n(1443),i=n(1448),a=n(635),s=n(1449),l=n(431),u=200;e.exports=function(e,t,n){var c=-1,f=o,d=e.length,p=!0,m=[],h=m;if(n)p=!1,f=i;else if(d>=u){var _=t?null:s(e);if(_)return l(_);p=!1,f=a,h=new r}else h=t?[]:m;e:for(;++c<d;){var g=e[c],v=t?t(g):g;if(g=n||0!==g?g:0,p&&v==v){for(var y=h.length;y--;)if(h[y]===v)continue e;t&&h.push(v),m.push(g)}else f(h,v,n)||(h!==m&&h.push(v),m.push(g))}return m}},function(e,t,n){var r=n(1421),o=n(301),i=n(430);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||o),string:new r}}},function(e,t,n){var r=n(1422),o=n(1427),i=n(1428),a=n(1429),s=n(1430);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=o,l.prototype.get=i,l.prototype.has=a,l.prototype.set=s,e.exports=l},function(e,t,n){var r=n(300);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},function(e,t,n){var r=n(633),o=n(1424),i=n(103),a=n(634),s=/^\[object .+?Constructor\]$/,l=Function.prototype,u=Object.prototype,c=l.toString,f=u.hasOwnProperty,d=RegExp("^"+c.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!i(e)||o(e))&&(r(e)?d:s).test(a(e))}},function(e,t,n){var r=n(1425),o=function(){var e=/[^.]+$/.exec(r&&r.keys&&r.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();e.exports=function(e){return!!o&&o in e}},function(e,t,n){var r=n(101)["__core-js_shared__"];e.exports=r},function(e,t){e.exports=function(e,t){return null==e?void 0:e[t]}},function(e,t){e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},function(e,t,n){var r=n(300),o="__lodash_hash_undefined__",i=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return n===o?void 0:n}return i.call(t,e)?t[e]:void 0}},function(e,t,n){var r=n(300),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:o.call(t,e)}},function(e,t,n){var r=n(300),o="__lodash_hash_undefined__";e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?o:t,this}},function(e,t){e.exports=function(){this.__data__=[],this.size=0}},function(e,t,n){var r=n(302),o=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0||(n==t.length-1?t.pop():o.call(t,n,1),--this.size,0))}},function(e,t,n){var r=n(302);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},function(e,t,n){var r=n(302);e.exports=function(e){return r(this.__data__,e)>-1}},function(e,t,n){var r=n(302);e.exports=function(e,t){var n=this.__data__,o=r(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this}},function(e,t,n){var r=n(304);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},function(e,t){e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},function(e,t,n){var r=n(304);e.exports=function(e){return r(this,e).get(e)}},function(e,t,n){var r=n(304);e.exports=function(e){return r(this,e).has(e)}},function(e,t,n){var r=n(304);e.exports=function(e,t){var n=r(this,e),o=n.size;return n.set(e,t),this.size+=n.size==o?0:1,this}},function(e,t){var n="__lodash_hash_undefined__";e.exports=function(e){return this.__data__.set(e,n),this}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,n){var r=n(1444);e.exports=function(e,t){return!(null==e||!e.length)&&r(e,t,0)>-1}},function(e,t,n){var r=n(1445),o=n(1446),i=n(1447);e.exports=function(e,t,n){return t==t?i(e,t,n):r(e,o,n)}},function(e,t){e.exports=function(e,t,n,r){for(var o=e.length,i=n+(r?1:-1);r?i--:++i<o;)if(t(e[i],i,e))return i;return-1}},function(e,t){e.exports=function(e){return e!=e}},function(e,t){e.exports=function(e,t,n){for(var r=n-1,o=e.length;++r<o;)if(e[r]===t)return r;return-1}},function(e,t){e.exports=function(e,t,n){for(var r=-1,o=null==e?0:e.length;++r<o;)if(n(t,e[r]))return!0;return!1}},function(e,t,n){var r=n(636),o=n(1450),i=n(431),a=r&&1/i(new r([,-0]))[1]==1/0?function(e){return new r(e)}:o;e.exports=a},function(e,t){e.exports=function(){}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(17)),o=s(n(0)),i=s(n(1)),a=n(637);function s(e){return e&&e.__esModule?e:{default:e}}var l=r.default.InteractiveAuth;t.default=o.default.createClass({displayName:"InteractiveAuth",propTypes:{matrixClient:i.default.object.isRequired,authData:i.default.shape({flows:i.default.array,params:i.default.object,session:i.default.string}),makeRequest:i.default.func.isRequired,onAuthFinished:i.default.func.isRequired,inputs:i.default.object,makeRegistrationUrl:i.default.func,sessionId:i.default.string,clientSecret:i.default.string,emailSid:i.default.string,poll:i.default.bool},getInitialState:function(){return{authStage:null,busy:!1,errorText:null,stageErrorText:null,submitButtonEnabled:!1}},componentWillMount:function(){var e=this;this._unmounted=!1,this._authLogic=new l({authData:this.props.authData,doRequest:this._requestCallback,inputs:this.props.inputs,stateUpdated:this._authStateUpdated,matrixClient:this.props.matrixClient,sessionId:this.props.sessionId,clientSecret:this.props.clientSecret,emailSid:this.props.emailSid}),this._authLogic.attemptAuth().then(function(t){var n={emailSid:e._authLogic.getEmailSid(),clientSecret:e._authLogic.getClientSecret()};e.props.onAuthFinished(!0,t,n)}).catch(function(t){if(e.props.onAuthFinished(!1,t),console.error("Error during user-interactive auth:",t),!e._unmounted){var n=t.message||t.toString();e.setState({errorText:n})}}).done(),this._intervalId=null,this.props.poll&&(this._intervalId=setInterval(function(){e._authLogic.poll()},2e3))},componentWillUnmount:function(){this._unmounted=!0,null!==this._intervalId&&clearInterval(this._intervalId)},_authStateUpdated:function(e,t){var n=this,r=this.state.authStage;this.setState({authStage:e,stageState:t,errorText:t.error},function(){r!=e&&n._setFocus()})},_requestCallback:function(e,t){var n=this,r=this.props.makeRequest(e);return t?r:(this.setState({busy:!0,errorText:null,stageErrorText:null}),r.finally(function(){n._unmounted||n.setState({busy:!1})}))},_setFocus:function(){this.refs.stageComponent&&this.refs.stageComponent.focus&&this.refs.stageComponent.focus()},_submitAuthDict:function(e){this._authLogic.submitAuthDict(e)},_renderCurrentStage:function(){var e=this.state.authStage;if(!e)return null;var t=(0,a.getEntryComponentForLoginType)(e);return o.default.createElement(t,{ref:"stageComponent",loginType:e,matrixClient:this.props.matrixClient,authSessionId:this._authLogic.getSessionId(),clientSecret:this._authLogic.getClientSecret(),stageParams:this._authLogic.getStageParams(e),submitAuthDict:this._submitAuthDict,errorText:this.state.stageErrorText,busy:this.state.busy,inputs:this.props.inputs,stageState:this.state.stageState,fail:this._onAuthStageFailed,setEmailSid:this._setEmailSid,makeRegistrationUrl:this.props.makeRegistrationUrl})},_onAuthStageFailed:function(e){this.props.onAuthFinished(!1,e)},_setEmailSid:function(e){this._authLogic.setEmailSid(e)},render:function(){var e=null;return this.state.errorText&&(e=o.default.createElement("div",{className:"error"},this.state.errorText)),o.default.createElement("div",null,o.default.createElement("div",null,this._renderCurrentStage(),e))}}),e.exports=t.default},function(e,t,n){"use strict";var r=d(n(0)),o=d(n(1)),i=d(n(24)),a=n(17),s=n(80),l=d(n(3)),u=d(n(10)),c=d(n(567)),f=d(n(22));function d(e){return e&&e.__esModule?e:{default:e}}var p=r.default.createClass({displayName:"LeftPanel",propTypes:{collapsed:o.default.bool.isRequired},contextTypes:{matrixClient:o.default.instanceOf(a.MatrixClient)},getInitialState:function(){return{searchFilter:""}},componentWillMount:function(){this.focusedElement=null},shouldComponentUpdate:function(e,t){return this.props.collapsed!==e.collapsed||this.props.disabled!==e.disabled||this.state.searchFilter!==t.searchFilter},_onFocus:function(e){this.focusedElement=e.target},_onBlur:function(e){this.focusedElement=null},_onKeyDown:function(e){if(this.focusedElement){var t=!0;switch(e.keyCode){case s.KeyCode.TAB:this._onMoveFocus(e.shiftKey);break;case s.KeyCode.UP:this._onMoveFocus(!0);break;case s.KeyCode.DOWN:this._onMoveFocus(!1);break;case s.KeyCode.ENTER:this._onMoveFocus(!1),this.focusedElement&&this.focusedElement.click();break;default:t=!1}t&&(e.stopPropagation(),e.preventDefault())}},_onMoveFocus:function(e){var t=this.focusedElement,n=!1,r=void 0;do{var o=e?t.lastElementChild:t.firstElementChild,i=e?t.previousElementSibling:t.nextElementSibling;n?o?t=o:i?t=i:(n=!1,t=t.parentElement):i?(t=i,n=!0):t=t.parentElement,t&&(r=t.classList).contains("mx_LeftPanel")&&(t=e?t.lastElementChild:t.firstElementChild,n=!0)}while(t&&!(r.contains("mx_RoomTile")||r.contains("mx_SearchBox_search")||r.contains("mx_RoomSubList_ellipsis")));t&&(t.focus(),this.focusedElement=t,this.focusedDescending=n)},onHideClick:function(){u.default.dispatch({action:"hide_left_panel"})},onSearch:function(e){this.setState({searchFilter:e})},collectRoomList:function(e){this._roomList=e},render:function(){var e=l.default.getComponent("rooms.RoomList"),t=l.default.getComponent("structures.TagPanel"),n=l.default.getComponent("structures.BottomLeftMenu"),o=l.default.getComponent("voip.CallPreview"),a=l.default.getComponent("structures.SearchBox"),s=r.default.createElement(a,{collapsed:this.props.collapsed,onSearch:this.onSearch}),u=(0,i.default)("mx_LeftPanel",{collapsed:this.props.collapsed}),d=!f.default.getValue("TagPanel.disableTagPanel"),p=d?r.default.createElement(t,null):r.default.createElement("div",null),m=(0,i.default)("mx_LeftPanel_container","mx_fadable",{mx_LeftPanel_container_collapsed:this.props.collapsed,mx_LeftPanel_container_hasTagPanel:d,mx_fadable_faded:this.props.disabled});return r.default.createElement("div",{className:m},p,r.default.createElement("aside",{className:u,onKeyDown:this._onKeyDown,onFocus:this._onFocus,onBlur:this._onBlur},s,r.default.createElement(o,{ConferenceHandler:c.default}),r.default.createElement(e,{ref:this.collectRoomList,collapsed:this.props.collapsed,searchFilter:this.state.searchFilter,ConferenceHandler:c.default}),r.default.createElement(n,{collapsed:this.props.collapsed})))}});e.exports=p},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=S(n(138)),o=S(n(19)),i=S(n(20)),a=n(9),s=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(17)),l=S(n(0)),u=S(n(1)),c=n(197),f=n(80),d=S(n(140)),p=S(n(648)),m=S(n(649)),h=S(n(3)),_=S(n(10)),g=S(n(444)),v=S(n(8)),y=S(n(22)),b=S(n(445)),E=S(n(655)),C=S(n(656));function S(e){return e&&e.__esModule?e:{default:e}}var D=l.default.createClass({displayName:"LoggedInView",propTypes:{matrixClient:u.default.instanceOf(s.MatrixClient).isRequired,page_type:u.default.string.isRequired,onRoomCreated:u.default.func,onUserSettingsClose:u.default.func,onRegistered:u.default.func,teamToken:u.default.string},childContextTypes:{matrixClient:u.default.instanceOf(s.MatrixClient),authCache:u.default.object},getChildContext:function(){return{matrixClient:this._matrixClient,authCache:{auth:{},lastUpdate:0}}},getInitialState:function(){return{useCompactLayout:y.default.getValue("useCompactLayout"),serverNoticeEvents:[]}},componentWillMount:function(){this._matrixClient=this.props.matrixClient,m.default.loadDevices(),document.addEventListener("keydown",this._onKeyDown),this._sessionStore=g.default,this._sessionStoreToken=this._sessionStore.addListener(this._setStateFromSessionStore),this._setStateFromSessionStore(),this._updateServerNoticeEvents(),this._matrixClient.on("accountData",this.onAccountData),this._matrixClient.on("sync",this.onSync),this._matrixClient.on("RoomState.events",this.onRoomStateEvents)},componentWillUnmount:function(){document.removeEventListener("keydown",this._onKeyDown),this._matrixClient.removeListener("accountData",this.onAccountData),this._matrixClient.removeListener("sync",this.onSync),this._matrixClient.removeListener("RoomState.events",this.onRoomStateEvents),this._sessionStoreToken&&this._sessionStoreToken.remove()},shouldComponentUpdate:function(){return Boolean(v.default.get())},canResetTimelineInRoom:function(e){return!this.refs.roomView||this.refs.roomView.canResetTimeline()},_setStateFromSessionStore:function(){this.setState({userHasGeneratedPassword:Boolean(this._sessionStore.getCachedPassword())})},onAccountData:function(e){"im.vector.web.settings"===e.getType()&&this.setState({useCompactLayout:e.getContent().useCompactLayout}),"m.ignored_user_list"===e.getType()&&_.default.dispatch({action:"ignore_state_changed"})},onSync:function(e,t,n){var r=this.state.syncErrorData&&this.state.syncErrorData.error&&this.state.syncErrorData.error.errcode,o=n&&n.error&&n.error.errcode;e===t&&r===o||("ERROR"===e?this.setState({syncErrorData:n}):this.setState({syncErrorData:null}),"PREPARED"===t&&"SYNCING"===e&&this._updateServerNoticeEvents())},onRoomStateEvents:function(e,t){var n=b.default.getRoomLists();n["m.server_notice"]&&n["m.server_notice"].some(function(t){return t.roomId===e.getRoomId()})&&this._updateServerNoticeEvents()},_updateServerNoticeEvents:function(){var e=(0,a.coroutine)(o.default.mark(function e(){var t,n,r,s,l,u,c,f,d,p,m,h,_,g,v,y,E=this;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if((t=b.default.getRoomLists())["m.server_notice"]){e.next=3;break}return e.abrupt("return",[]);case 3:n=[],r=!0,s=!1,l=void 0,e.prev=7,u=(0,i.default)(t["m.server_notice"]);case 9:if(r=(c=u.next()).done){e.next=43;break}if(f=c.value,(d=f.currentState.getStateEvents("m.room.pinned_events",""))&&d.getContent().pinned){e.next=14;break}return e.abrupt("continue",40);case 14:p=d.getContent().pinned.slice(0,2),m=!0,h=!1,_=void 0,e.prev=18,g=o.default.mark(function e(){var t,r,i;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=y.value,e.next=3,(0,a.resolve)(E._matrixClient.getEventTimeline(f.getUnfilteredTimelineSet(),t,0));case 3:r=e.sent,(i=r.getEvents().find(function(e){return e.getId()===t}))&&n.push(i);case 6:case"end":return e.stop()}},e,E)}),v=(0,i.default)(p);case 21:if(m=(y=v.next()).done){e.next=26;break}return e.delegateYield(g(),"t0",23);case 23:m=!0,e.next=21;break;case 26:e.next=32;break;case 28:e.prev=28,e.t1=e.catch(18),h=!0,_=e.t1;case 32:e.prev=32,e.prev=33,!m&&v.return&&v.return();case 35:if(e.prev=35,!h){e.next=38;break}throw _;case 38:return e.finish(35);case 39:return e.finish(32);case 40:r=!0,e.next=9;break;case 43:e.next=49;break;case 45:e.prev=45,e.t2=e.catch(7),s=!0,l=e.t2;case 49:e.prev=49,e.prev=50,!r&&u.return&&u.return();case 52:if(e.prev=52,!s){e.next=55;break}throw l;case 55:return e.finish(52);case 56:return e.finish(49);case 57:this.setState({serverNoticeEvents:n});case 58:case"end":return e.stop()}},e,this,[[7,45,49,57],[18,28,32,40],[33,,35,39],[50,,52,56]])}));return function(){return e.apply(this,arguments)}}(),_onKeyDown:function(e){var t=!1,n=(0,f.isOnlyCtrlOrCmdKeyEvent)(e);switch(e.keyCode){case f.KeyCode.UP:case f.KeyCode.DOWN:if(e.altKey&&!e.shiftKey&&!e.ctrlKey&&!e.metaKey){var r=e.keyCode==f.KeyCode.UP?"view_prev_room":"view_next_room";_.default.dispatch({action:r}),t=!0}break;case f.KeyCode.PAGE_UP:case f.KeyCode.PAGE_DOWN:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey||(this._onScrollKeyPressed(e),t=!0);break;case f.KeyCode.HOME:case f.KeyCode.END:!e.ctrlKey||e.shiftKey||e.altKey||e.metaKey||(this._onScrollKeyPressed(e),t=!0);break;case f.KeyCode.KEY_K:n&&(_.default.dispatch({action:"focus_room_filter"}),t=!0)}t&&(e.stopPropagation(),e.preventDefault())},_onScrollKeyPressed:function(e){this.refs.roomView?this.refs.roomView.handleScrollKey(e):this.refs.roomDirectory&&this.refs.roomDirectory.handleScrollKey(e)},_onDragEnd:function(e){if(e.destination){var t=e.destination.droppableId;if("tag-panel-droppable"===t){var n=e.draggableId.split(" ").pop();_.default.dispatch(E.default.moveTag(this._matrixClient,n,e.destination.index),!0)}else t.startsWith("room-sub-list-droppable_")&&this._onRoomTileEndDrag(e)}},_onRoomTileEndDrag:function(e){var t=e.destination.droppableId.split("_")[1],n=e.source.droppableId.split("_")[1];"undefined"===t&&(t=void 0),"undefined"===n&&(n=void 0);var r=e.draggableId.split("_")[1],o=e.source.index,i=e.destination.index;_.default.dispatch(C.default.tagRoom(this._matrixClient,this._matrixClient.getRoom(r),n,t,o,i),!0)},_onMouseDown:function(e){if(this.props.leftDisabled&&this.props.rightDisabled){var t=new r.default(e.target.className.split(" "));(t.has("mx_MatrixChat")||t.has("mx_MatrixChat_middlePanel")||t.has("mx_RoomView"))&&this.setState({mouseDown:{x:e.pageX,y:e.pageY}})}},_onMouseUp:function(e){if(this.state.mouseDown){var t=e.pageX-this.state.mouseDown.x,n=e.pageY-this.state.mouseDown.y;Math.sqrt(t*t+(n+n))<5&&_.default.dispatch({action:"close_settings"}),this.setState({mouseDown:null})}},render:function(){var e=h.default.getComponent("structures.LeftPanel"),t=h.default.getComponent("structures.RightPanel"),n=h.default.getComponent("structures.RoomView"),r=h.default.getComponent("structures.UserSettings"),o=h.default.getComponent("structures.CreateRoom"),i=h.default.getComponent("structures.RoomDirectory"),a=h.default.getComponent("structures.HomePage"),s=h.default.getComponent("structures.GroupView"),u=h.default.getComponent("structures.MyGroups"),f=h.default.getComponent("globals.MatrixToolbar"),m=h.default.getComponent("globals.CookieBar"),_=h.default.getComponent("globals.NewVersionBar"),g=h.default.getComponent("globals.UpdateCheckBar"),v=h.default.getComponent("globals.PasswordNagBar"),y=h.default.getComponent("globals.ServerLimitBar"),b=void 0,E="";switch(this.props.page_type){case p.default.RoomView:b=l.default.createElement(n,{ref:"roomView",autoJoin:this.props.autoJoin,onRegistered:this.props.onRegistered,thirdPartyInvite:this.props.thirdPartyInvite,oobData:this.props.roomOobData,eventPixelOffset:this.props.initialEventPixelOffset,key:this.props.currentRoomId||"roomview",disabled:this.props.middleDisabled,collapsedRhs:this.props.collapseRhs,ConferenceHandler:this.props.ConferenceHandler}),this.props.collapseRhs||(E=l.default.createElement(t,{roomId:this.props.currentRoomId,disabled:this.props.rightDisabled}));break;case p.default.UserSettings:b=l.default.createElement(r,{onClose:this.props.onCloseAllSettings,brand:this.props.config.brand,referralBaseUrl:this.props.config.referralBaseUrl,teamToken:this.props.teamToken}),this.props.collapseRhs||(E=l.default.createElement(t,{disabled:this.props.rightDisabled}));break;case p.default.MyGroups:b=l.default.createElement(u,null);break;case p.default.CreateRoom:b=l.default.createElement(o,{onRoomCreated:this.props.onRoomCreated,collapsedRhs:this.props.collapseRhs}),this.props.collapseRhs||(E=l.default.createElement(t,{disabled:this.props.rightDisabled}));break;case p.default.RoomDirectory:b=l.default.createElement(i,{ref:"roomDirectory",config:this.props.config.roomDirectory});break;case p.default.HomePage:var C=this.props.config.teamServerConfig?this.props.config.teamServerConfig.teamServerURL:null;b=l.default.createElement(a,{teamServerUrl:C,teamToken:this.props.teamToken,homePageUrl:this.props.config.welcomePageUrl});break;case p.default.UserView:b=null,E=l.default.createElement(t,{disabled:this.props.rightDisabled});break;case p.default.GroupView:b=l.default.createElement(s,{groupId:this.props.currentGroupId,isNew:this.props.currentGroupIsNew,collapsedRhs:this.props.collapseRhs}),this.props.collapseRhs||(E=l.default.createElement(t,{groupId:this.props.currentGroupId,disabled:this.props.rightDisabled}))}var S=this.state.serverNoticeEvents.find(function(e){return e&&"m.room.message"===e.getType()&&"m.server_notice.usage_limit_reached"===e.getContent().server_notice_type}),D=void 0,w=this.props.matrixClient.isGuest();if(this.state.syncErrorData&&"M_RESOURCE_LIMIT_EXCEEDED"===this.state.syncErrorData.error.errcode)D=l.default.createElement(y,{kind:"hard",adminContact:this.state.syncErrorData.error.data.admin_contact,limitType:this.state.syncErrorData.error.data.limit_type});else if(S)D=l.default.createElement(y,{kind:"soft",adminContact:S.getContent().admin_contact,limitType:S.getContent().limit_type});else if(this.props.showCookieBar&&this.props.config.piwik){var T=this.props.config.piwik.policyUrl||null;D=l.default.createElement(m,{policyUrl:T})}else this.props.hasNewVersion?D=l.default.createElement(_,{version:this.props.version,newVersion:this.props.newVersion,releaseNotes:this.props.newVersionReleaseNotes}):this.props.checkingForUpdate?D=l.default.createElement(g,this.props.checkingForUpdate):this.state.userHasGeneratedPassword?D=l.default.createElement(v,null):w||!d.default.supportsDesktopNotifications()||d.default.isEnabled()||d.default.isToolbarHidden()||(D=l.default.createElement(f,null));var x="mx_MatrixChat";return D&&(x+=" mx_MatrixChat_toolbarShowing"),this.state.useCompactLayout&&(x+=" mx_MatrixChat_useCompactLayout"),l.default.createElement("div",{className:"mx_MatrixChat_wrapper","aria-hidden":this.props.hideToSRUsers,onMouseDown:this._onMouseDown,onMouseUp:this._onMouseUp},D,l.default.createElement(c.DragDropContext,{onDragEnd:this._onDragEnd},l.default.createElement("div",{className:x},l.default.createElement(e,{collapsed:this.props.collapseLhs||!1,disabled:this.props.leftDisabled}),l.default.createElement("main",{className:"mx_MatrixChat_middlePanel"},b),E)))}});t.default=D,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1455);Object.defineProperty(t,"default",{enumerable:!0,get:function(){return function(e){return e&&e.__esModule?e:{default:e}}(r).default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=y(n(47)),i=y(n(11)),a=y(n(4)),s=y(n(5)),l=y(n(12)),u=y(n(13)),c=y(n(0)),f=y(n(1)),d=y(n(1456)),p=y(n(1475)),m=y(n(1476)),h=y(n(1477)),_=y(n(1479)),g=n(148),v=n(642);function y(e){return e&&e.__esModule?e:{default:e}}var b=function(e){function t(){var e,n,r,o;(0,a.default)(this,t);for(var s=arguments.length,u=Array(s),c=0;c<s;c++)u[c]=arguments[c];return n=r=(0,l.default)(this,(e=t.__proto__||(0,i.default)(t)).call.apply(e,[this].concat(u))),r.canLift=function(e){return(0,_.default)(r.store.getState(),e)},o=n,(0,l.default)(r,o)}return(0,u.default)(t,e),(0,s.default)(t,[{key:"getChildContext",value:function(){var e;return e={},(0,o.default)(e,g.storeKey,this.store),(0,o.default)(e,g.dimensionMarshalKey,this.dimensionMarshal),(0,o.default)(e,g.styleContextKey,this.styleMarshal.styleContext),(0,o.default)(e,g.canLiftContextKey,this.canLift),e}},{key:"componentWillMount",value:function(){var e=this;this.store=(0,d.default)(),this.styleMarshal=(0,h.default)();var t={cancel:function(){e.store.dispatch((0,v.clean)())},publishDraggables:function(t){e.store.dispatch((0,v.publishDraggableDimensions)(t))},publishDroppables:function(t){e.store.dispatch((0,v.publishDroppableDimensions)(t))},updateDroppableScroll:function(t,n){e.store.dispatch((0,v.updateDroppableDimensionScroll)(t,n))},updateDroppableIsEnabled:function(t,n){e.store.dispatch((0,v.updateDroppableDimensionIsEnabled)(t,n))}};this.dimensionMarshal=(0,m.default)(t);var n=this.store.getState();this.unsubscribe=this.store.subscribe(function(){var t=n,r=e.store.getState();if(n=r,r.phase!==t.phase){var o={onDragStart:e.props.onDragStart,onDragEnd:e.props.onDragEnd};(0,p.default)(o,t,r),e.styleMarshal.onPhaseChange(r),e.dimensionMarshal.onPhaseChange(r)}})}},{key:"componentDidMount",value:function(){this.styleMarshal.mount()}},{key:"componentWillUnmount",value:function(){this.unsubscribe(),this.styleMarshal.unmount()}},{key:"render",value:function(){return this.props.children}}]),t}(c.default.Component);b.childContextTypes=(r={},(0,o.default)(r,g.storeKey,f.default.shape({dispatch:f.default.func.isRequired,subscribe:f.default.func.isRequired,getState:f.default.func.isRequired}).isRequired),(0,o.default)(r,g.dimensionMarshalKey,f.default.object.isRequired),(0,o.default)(r,g.styleContextKey,f.default.string.isRequired),(0,o.default)(r,g.canLiftContextKey,f.default.func.isRequired),r),t.default=b},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(64)),o=n(479),i=s(n(1458)),a=s(n(1459));function s(e){return e&&e.__esModule?e:{default:e}}var l="object"===("undefined"==typeof window?"undefined":(0,r.default)(window))&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:o.compose;t.default=function(){return(0,o.createStore)(a.default,l((0,o.applyMiddleware)(i.default)))}},function(e,t){e.exports=function(e){if(!e.webpackPolyfill){var t=Object.create(e);t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1}return t}},function(e,t,n){"use strict";function r(e){return function(t){var n=t.dispatch,r=t.getState;return function(t){return function(o){return"function"==typeof o?o(n,r,e):t(o)}}}}n.r(t);var o=r();o.withExtraArgument=r,t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=p(n(14)),o=p(n(47)),i=p(n(37)),a=p(n(82)),s=n(70),l=n(305),u=p(n(1460)),c=p(n(1466)),f=p(n(1469)),d=n(306);function p(e){return e&&e.__esModule?e:{default:e}}var m={request:null,draggable:{},droppable:{}},h={x:0,y:0},_=(0,a.default)(function(){return{phase:arguments.length>0&&void 0!==arguments[0]?arguments[0]:"IDLE",drag:null,drop:null,dimension:m}}),g=function(e){return-1===["IDLE","DROP_ANIMATING","DROP_COMPLETE"].indexOf(e)},v=function(e){var t=e.state,n=e.clientSelection,r=e.shouldAnimate,o=e.windowScroll,a=e.impact;if("DRAGGING"!==t.phase)return console.error("cannot move while not dragging"),_();var l=t.drag;if(null==l)return console.error("cannot move if there is no drag information"),_();var c=l.current,f=l.initial,d=o||c.windowScroll,p=function(){var e=(0,s.subtract)(n,f.client.selection);return{offset:e,selection:n,center:(0,s.add)(e,f.client.center)}}(),m={selection:(0,s.add)(p.selection,d),offset:(0,s.add)(p.offset,d),center:(0,s.add)(p.center,d)},h={client:p,page:m,shouldAnimate:r,windowScroll:d},g=a||(0,u.default)({pageCenter:m.center,draggable:t.dimension.draggable[f.descriptor.id],draggables:t.dimension.draggable,droppables:t.dimension.droppable,previousImpact:l.impact}),v={initial:f,impact:g,current:h};return(0,i.default)({},t,{drag:v})},y=function(e){return"COLLECTING_INITIAL_DIMENSIONS"===e.phase?e:"DRAGGING"!==e.phase?e:e.drag?v({state:e,clientSelection:e.drag.current.client.selection,shouldAnimate:e.drag.current.shouldAnimate}):(console.error("cannot update a draggable dimension in an existing drag as there is invalid drag state"),_())};t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:_("IDLE"),t=arguments[1];if("CLEAN"===t.type)return _();if("PREPARE"===t.type)return _("PREPARING");if("REQUEST_DIMENSIONS"===t.type)return"PREPARING"!==e.phase?(console.error("trying to start a lift while not preparing for a lift"),_()):{phase:"COLLECTING_INITIAL_DIMENSIONS",drag:null,drop:null,dimension:{request:t.payload,draggable:{},droppable:{}}};if("PUBLISH_DRAGGABLE_DIMENSIONS"===t.type){var n=t.payload;if(!g(e.phase))return console.warn("dimensions rejected as no longer allowing dimension capture in phase",e.phase),e;var a=n.reduce(function(e,t){return e[t.descriptor.id]=t,e},{}),u=(0,i.default)({},e,{dimension:{request:e.dimension.request,droppable:e.dimension.droppable,draggable:(0,i.default)({},e.dimension.draggable,a)}});return y(u)}if("PUBLISH_DROPPABLE_DIMENSIONS"===t.type){var p=t.payload;if(!g(e.phase))return console.warn("dimensions rejected as no longer allowing dimension capture in phase",e.phase),e;var b=p.reduce(function(e,t){return e[t.descriptor.id]=t,e},{}),E=(0,i.default)({},e,{dimension:{request:e.dimension.request,draggable:e.dimension.draggable,droppable:(0,i.default)({},e.dimension.droppable,b)}});return y(E)}if("COMPLETE_LIFT"===t.type){if("COLLECTING_INITIAL_DIMENSIONS"!==e.phase)return console.error("trying complete lift without collecting dimensions"),e;var C=t.payload,S=C.id,D=C.client,w=C.windowScroll,T=C.isScrollAllowed,x={selection:(0,s.add)(D.selection,w),center:(0,s.add)(D.center,w)},R=e.dimension.draggable[S];if(!R)return console.error("could not find draggable in store after lift"),_();var k=R.descriptor,N={descriptor:k,isScrollAllowed:T,client:D,page:x,windowScroll:w},I={client:{selection:D.selection,center:D.center,offset:h},page:{selection:x.selection,center:x.center,offset:h},windowScroll:w,shouldAnimate:!1},O=e.dimension.droppable[k.droppableId];if(!O)return console.error("Cannot find home dimension for initial lift"),_();var A={index:k.index,droppableId:k.droppableId},M={movement:l.noMovement,direction:O.axis.direction,destination:A};return(0,i.default)({},e,{phase:"DRAGGING",drag:{initial:N,current:I,impact:M}})}if("UPDATE_DROPPABLE_DIMENSION_SCROLL"===t.type){if("DRAGGING"!==e.phase)return console.error("cannot update a droppable dimensions scroll when not dragging"),_();if(null==e.drag)return console.error("invalid store state"),_();if(!e.drag.initial.isScrollAllowed)return _();var P=t.payload,L=P.id,F=P.offset,U=e.dimension.droppable[L];if(!U)return console.warn("cannot update scroll for droppable as it has not yet been collected"),e;var j=(0,d.scrollDroppable)(U,F),B=(0,i.default)({},e,{dimension:{request:e.dimension.request,draggable:e.dimension.draggable,droppable:(0,i.default)({},e.dimension.droppable,(0,o.default)({},L,j))}});return y(B)}if("UPDATE_DROPPABLE_DIMENSION_IS_ENABLED"===t.type){if(!(0,r.default)(e.dimension.droppable).length)return e;var G=t.payload,q=G.id,V=G.isEnabled,H=e.dimension.droppable[q];if(!H)return console.warn("cannot update enabled state for droppable as it has not yet been collected"),e;if(H.isEnabled===V)return console.warn("trying to set droppable isEnabled to "+String(V)+" but it is already "+String(V)),e;var Y=(0,i.default)({},H,{isEnabled:V}),z=(0,i.default)({},e,{dimension:(0,i.default)({},e.dimension,{droppable:(0,i.default)({},e.dimension.droppable,(0,o.default)({},q,Y))})});return y(z)}if("MOVE"===t.type){var W=t.payload,K=W.client,$=W.windowScroll;return v({state:e,clientSelection:K,windowScroll:$,shouldAnimate:!1})}if("MOVE_BY_WINDOW_SCROLL"===t.type){var Q=t.payload.windowScroll;return e.drag?v({state:e,clientSelection:e.drag.current.client.selection,windowScroll:Q,shouldAnimate:!1}):(console.error("cannot move with window scrolling if no current drag"),_())}if("MOVE_FORWARD"===t.type||"MOVE_BACKWARD"===t.type){if("DRAGGING"!==e.phase)return console.error("cannot move while not dragging",t),_();if(!e.drag)return console.error("cannot move if there is no drag information"),_();var X=e.drag,J="MOVE_FORWARD"===t.type;if(!X.impact.destination)return console.error("cannot move if there is no previous destination"),_();var Z=e.dimension.droppable[X.impact.destination.droppableId],ee=(0,c.default)({isMovingForward:J,draggableId:X.initial.descriptor.id,droppable:Z,draggables:e.dimension.draggable,previousImpact:X.impact});if(!ee)return e;var te=ee.impact,ne=ee.pageCenter,re=(0,s.subtract)(ne,X.current.windowScroll);return v({state:e,impact:te,clientSelection:re,shouldAnimate:!0})}if("CROSS_AXIS_MOVE_FORWARD"===t.type||"CROSS_AXIS_MOVE_BACKWARD"===t.type){if("DRAGGING"!==e.phase)return console.error("cannot move cross axis when not dragging"),_();if(!e.drag)return console.error("cannot move cross axis if there is no drag information"),_();if(!e.drag.impact.destination)return console.error("cannot move cross axis if not in a droppable"),_();var oe=e.drag.current,ie=e.drag.initial.descriptor,ae=ie.id,se=oe.page.center,le=e.drag.impact.destination.droppableId,ue={index:ie.index,droppableId:ie.droppableId},ce=(0,f.default)({isMovingForward:"CROSS_AXIS_MOVE_FORWARD"===t.type,pageCenter:se,draggableId:ae,droppableId:le,home:ue,draggables:e.dimension.draggable,droppables:e.dimension.droppable,previousImpact:e.drag.impact});if(!ce)return e;var fe=ce.pageCenter,de=(0,s.subtract)(fe,oe.windowScroll);return v({state:e,clientSelection:de,impact:ce.impact,shouldAnimate:!0})}if("DROP_ANIMATE"===t.type){var pe=t.payload,me=pe.trigger,he=pe.newHomeOffset,_e=pe.impact,ge=pe.result;return"DRAGGING"!==e.phase?(console.error("cannot animate drop while not dragging",t),e):e.drag?{phase:"DROP_ANIMATING",drag:null,drop:{pending:{trigger:me,newHomeOffset:he,result:ge,impact:_e},result:null},dimension:e.dimension}:(console.error("cannot animate drop - invalid drag state"),_())}return"DROP_COMPLETE"===t.type?{phase:"DROP_COMPLETE",drag:null,drop:{pending:null,result:t.payload},dimension:m}:e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=l(n(1461)),o=l(n(199)),i=l(n(305)),a=l(n(1464)),s=l(n(1465));function l(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=e.pageCenter,n=e.draggable,l=e.draggables,u=e.droppables,c=e.previousImpact,f=c.destination&&c.destination.droppableId,d=(0,r.default)({target:t,draggable:n,draggables:l,droppables:u,previousDroppableOverId:f});if(!d)return i.default;var p=u[d];if(!p.isEnabled)return i.default;var m=u[n.descriptor.droppableId],h=m.descriptor.id===d,_=(0,o.default)(p,l);return h?(0,a.default)({pageCenter:t,draggable:n,home:m,insideHome:_,previousImpact:c||i.default}):(0,s.default)({pageCenter:t,draggable:n,destination:p,insideDestination:_,previousImpact:c||i.default})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=f(n(14)),o=f(n(82)),i=f(n(198)),a=f(n(199)),s=f(n(1462)),l=n(70),u=n(244),c=n(306);function f(e){return e&&e.__esModule?e:{default:e}}var d=(0,o.default)(function(e,t,n){var r=function(t){var r=e.page.withMargin[n.axis.size];return r<=t?null:(0,l.patch)(n.axis.line,r-t)},o=(0,a.default)(n,t);if(!o.length)return r(n.page.withMargin[n.axis.size]);var i=o[o.length-1].page.withMargin[n.axis.end];return r(n.page.withMargin[n.axis.end]-i)}),p=(0,o.default)(function(e,t){return(0,i.default)((0,u.addPosition)(e,t))});t.default=function(e){var t=e.target,n=e.draggable,o=e.draggables,i=e.droppables,a=e.previousDroppableOverId,l=(0,r.default)(i).map(function(e){return i[e]}).filter(function(e){return e.isEnabled}).find(function(e){var r=function(e){var t=e.draggable,n=e.draggables,r=e.droppable,o=e.previousDroppableOverId,i=t.descriptor.droppableId===r.descriptor.id,a=Boolean(o&&o===r.descriptor.id),s=r.viewport.subject,l=r.viewport.frame,u=r.viewport.clipped;if(!u)return u;if(i||!a)return u;var f=d(t,n,r);if(!f)return u;var m=s[r.axis.size]!==l[r.axis.size],h=p(u,f);return m?(0,c.clip)(l,h):h}({draggable:n,draggables:o,droppable:e,previousDroppableOverId:a});return!!r&&(0,s.default)(r)(t)});return l?l.descriptor.id:null}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(n(432));t.default=function(e){var t=(0,r.default)(e.top,e.bottom),n=(0,r.default)(e.left,e.right);return function(e){return t(e.y)&&t(e.y)&&n(e.x)&&n(e.x)}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.vertical={direction:"vertical",line:"y",crossLine:"x",start:"top",end:"bottom",size:"height",crossAxisStart:"left",crossAxisEnd:"right",crossAxisSize:"width"},t.horizontal={direction:"horizontal",line:"x",crossLine:"y",start:"left",end:"right",size:"width",crossAxisStart:"top",crossAxisEnd:"bottom",crossAxisSize:"height"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70),o=a(n(200)),i=a(n(147));function a(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=e.pageCenter,n=e.draggable,a=e.home,s=e.insideHome,l=e.previousImpact,u=(0,i.default)(),c=a.axis,f=n.page.withoutMargin.center,d=a.viewport.frameScroll.diff.value,p=(0,r.add)(t,d),m=p[c.line]-f[c.line]>0,h=(0,r.patch)(c.line,n.client.withMargin[c.size]),_=s.filter(function(e){if(e===n)return!1;var t=e.page.withoutMargin;return m?!(t.center[c.line]<f[c.line])&&p[c.line]>t[c.start]:!(f[c.line]<t.center[c.line])&&p[c.line]<t[c.end]}).map(function(e){return(0,o.default)({draggable:e,destination:a,previousImpact:l,viewport:u})}),g=m?_.reverse():_,v=function(){var e=s.indexOf(n),t=g.length;return t?m?e+t:e-t:e}();return{movement:{amount:h,displaced:g,isBeyondStartPosition:m},direction:c.direction,destination:{droppableId:a.descriptor.id,index:v}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70),o=a(n(200)),i=a(n(147));function a(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=e.pageCenter,n=e.draggable,a=e.destination,s=e.insideDestination,l=e.previousImpact,u=a.axis,c=(0,i.default)(),f=a.viewport.frameScroll.diff.value,d=(0,r.add)(t,f),p=s.filter(function(e){return e.page.withoutMargin[u.end]>d[u.line]}).map(function(e){return(0,o.default)({draggable:e,destination:a,previousImpact:l,viewport:c})}),m=s.length-p.length;return{movement:{amount:(0,r.patch)(u.line,n.page.withMargin[u.size]),displaced:p,isBeyondStartPosition:!1},direction:u.direction,destination:{droppableId:a.descriptor.id,index:m}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(1467)),o=i(n(1468));function i(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=e.draggableId,n=e.draggables,i=e.droppable,a=n[t].descriptor.droppableId===i.descriptor.id;return i.isEnabled?a?(0,r.default)(e):(0,o.default)(e):null}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=f(n(51)),o=f(n(82)),i=f(n(199)),a=n(70),s=f(n(640)),l=f(n(147)),u=f(n(245)),c=f(n(200));function f(e){return e&&e.__esModule?e:{default:e}}var d=(0,o.default)(function(e,t){return e.indexOf(t)});t.default=function(e){var t=e.isMovingForward,n=e.draggableId,o=e.previousImpact,f=e.droppable,p=e.draggables,m=o.destination;if(!m)return console.error("cannot move to next index when there is not previous destination"),null;var h=p[n],_=f.axis,g=(0,i.default)(f,p),v=d(g,h),y=m.index,b=t?y+1:y-1;if(-1===v)return console.error("could not find draggable inside current droppable"),null;if(b>g.length-1)return null;if(b<0)return null;var E=g[b],C=t&&b<=v||!t&&b>=v,S=C?t?"start":"end":t?"end":"start",D=(0,u.default)({source:h.page.withoutMargin,sourceEdge:S,destination:E.page.withoutMargin,destinationEdge:S,destinationAxis:f.axis}),w=(0,l.default)();if(!(0,s.default)({draggable:h,destination:f,newCenter:D,viewport:w}))return null;var T={draggableId:E.descriptor.id,isVisible:!0,shouldAnimate:!0};return{pageCenter:D,impact:{movement:{displaced:(C?o.movement.displaced.slice(1,o.movement.displaced.length):[T].concat((0,r.default)(o.movement.displaced))).map(function(e){var t=p[e.draggableId];return(0,c.default)({draggable:t,destination:f,previousImpact:o,viewport:w})}),amount:(0,a.patch)(_.line,h.page.withMargin[_.size]),isBeyondStartPosition:b>v},destination:{droppableId:f.descriptor.id,index:b},direction:f.axis.direction}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(51)),o=c(n(199)),i=n(70),a=c(n(245)),s=c(n(200)),l=c(n(147)),u=c(n(640));function c(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=e.isMovingForward,n=e.draggableId,c=e.previousImpact,f=e.droppable,d=e.draggables;if(!c.destination)return console.error("cannot move to next index when there is not previous destination"),null;var p=c.destination,m=d[n],h=f.axis,_=(0,o.default)(f,d),g=p.index,v=t?g+1:g-1,y=_.length-1;if(v>_.length)return null;if(v<0)return null;var b=_[Math.min(v,y)],E=v>y,C=E?"end":"start",S=(0,l.default)(),D=(0,a.default)({source:m.page.withoutMargin,sourceEdge:"start",destination:b.page.withMargin,destinationEdge:C,destinationAxis:f.axis});if(!(!!E||(0,u.default)({draggable:m,destination:f,newCenter:D,viewport:S})))return null;var w={draggableId:b.descriptor.id,isVisible:!0,shouldAnimate:!0},T={movement:{displaced:(t?c.movement.displaced.slice(1,c.movement.displaced.length):[w].concat((0,r.default)(c.movement.displaced))).map(function(e){if(e===w)return e;var t=d[e.draggableId];return(0,s.default)({draggable:t,destination:f,viewport:S,previousImpact:c})}),amount:(0,i.patch)(h.line,m.page.withMargin[h.size]),isBeyondStartPosition:!1},destination:{droppableId:f.descriptor.id,index:v},direction:f.axis.direction};return{pageCenter:D,impact:T}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=l(n(1470)),o=l(n(1471)),i=l(n(1472)),a=l(n(305)),s=l(n(199));function l(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=e.isMovingForward,n=e.pageCenter,l=e.draggableId,u=e.droppableId,c=e.home,f=e.draggables,d=e.droppables,p=e.previousImpact,m=f[l],h=d[u],_=(0,r.default)({isMovingForward:t,pageCenter:n,source:h,droppables:d});if(!_)return null;var g=(0,s.default)(_,f),v=(0,o.default)({axis:_.axis,pageCenter:n,destination:_,insideDestination:g});return g.length&&!v?null:(0,i.default)({pageCenter:n,destination:_,draggable:m,target:v,insideDestination:g,home:c,previousImpact:p||a.default})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=u(n(14)),o=n(70),i=u(n(432)),a=n(244),s=u(n(147)),l=u(n(639));function u(e){return e&&e.__esModule?e:{default:e}}var c=function(e){var t=e.viewport.clipped;if(!t)throw new Error("cannot get clipped area from droppable");return t};t.default=function(e){var t=e.isMovingForward,n=e.pageCenter,u=e.source,f=e.droppables,d=u.viewport.clipped;if(!d)return null;var p=u.axis,m=(0,i.default)(d[p.start],d[p.end]),h=(0,s.default)(),_=(0,r.default)(f).map(function(e){return f[e]}).filter(function(e){return e!==u}).filter(function(e){return e.isEnabled}).filter(function(e){return Boolean(e.viewport.clipped)}).filter(function(e){return(0,l.default)(h)(e.viewport.frame)}).filter(function(e){var n=c(e);return t?d[p.crossAxisEnd]<=n[p.crossAxisStart]:n[p.crossAxisEnd]<=d[p.crossAxisStart]}).filter(function(e){var t=c(e),n=(0,i.default)(t[p.start],t[p.end]);return m(t[p.start])||m(t[p.end])||n(d[p.start])||n(d[p.end])}).sort(function(e,n){var r=c(e)[p.crossAxisStart],o=c(n)[p.crossAxisStart];return t?r-o:o-r}).filter(function(e,t,n){return c(e)[p.crossAxisStart]===c(n[0])[p.crossAxisStart]});if(!_.length)return null;if(1===_.length)return _[0];var g=_.filter(function(e){return(0,i.default)(c(e)[p.start],c(e)[p.end])(n[p.line])});return 1===g.length?g[0]:g.length>1?g.sort(function(e,t){return c(e)[p.start]-c(t)[p.start]})[0]:_.sort(function(e,t){var r=(0,o.closest)(n,(0,a.getCorners)(c(e))),i=(0,o.closest)(n,(0,a.getCorners)(c(t)));return r!==i?r-i:c(e)[p.start]-c(t)[p.start]})[0]}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70),o=a(n(147)),i=a(n(433));function a(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=e.axis,n=e.pageCenter,a=e.destination,s=e.insideDestination;if(!s.length)return null;var l=(0,o.default)(),u=s.filter(function(e){return(0,i.default)({target:e.page.withMargin,destination:a,viewport:l})}).sort(function(e,o){var i=(0,r.distance)(n,e.page.withMargin.center),a=(0,r.distance)(n,o.page.withMargin.center);return i<a?-1:a<i?1:e.page.withMargin[t.start]-o.page.withMargin[t.start]});return u.length?u[0]:null}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(n(1473)),o=a(n(1474)),i=n(70);function a(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=e.pageCenter,n=e.destination,a=e.draggable,s=e.target,l=e.home,u=e.insideDestination,c=e.previousImpact,f=(0,i.patch)(n.axis.line,a.client.withMargin[n.axis.size]);return n.descriptor.id===a.descriptor.droppableId?(0,r.default)({amount:f,originalIndex:l.index,target:s,insideDroppable:u,draggable:a,droppable:n,previousImpact:c}):(0,o.default)({amount:f,pageCenter:t,target:s,insideDroppable:u,draggable:a,droppable:n,previousImpact:c})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(n(245)),o=a(n(147)),i=a(n(200));function a(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=e.amount,n=e.originalIndex,a=e.target,s=e.insideDroppable,l=e.draggable,u=e.droppable,c=e.previousImpact;if(!a)return console.error("there will always be a target in the original list"),null;var f=u.axis,d=s.indexOf(a);if(-1===d)return console.error("unable to find target in destination droppable"),null;if(d===n)return{pageCenter:l.page.withoutMargin.center,impact:{movement:{displaced:[],amount:t,isBeyondStartPosition:!1},direction:u.axis.direction,destination:{droppableId:u.descriptor.id,index:n}}};var p=d>n,m=p?"end":"start",h=(0,r.default)({source:l.page.withoutMargin,sourceEdge:m,destination:p?a.page.withoutMargin:a.page.withMargin,destinationEdge:m,destinationAxis:f}),_=function(){if(!p)return s.slice(d,n);var e=n+1,t=d+1;return s.slice(e,t).reverse()}(),g=(0,o.default)();return{pageCenter:h,impact:{movement:{displaced:_.map(function(e){return(0,i.default)({draggable:e,destination:u,previousImpact:c,viewport:g})}),amount:t,isBeyondStartPosition:p},direction:f.direction,destination:{droppableId:u.descriptor.id,index:d}}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(n(245)),o=a(n(200)),i=a(n(147));function a(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=e.amount,n=e.pageCenter,a=e.target,s=e.insideDroppable,l=e.draggable,u=e.droppable,c=e.previousImpact,f=u.axis,d=Boolean(a&&n[u.axis.line]<a.page.withMargin.center[u.axis.line]);if(!a)return{pageCenter:(0,r.default)({source:l.page.withoutMargin,sourceEdge:"start",destination:u.page.withMarginAndPadding,destinationEdge:"start",destinationAxis:f}),impact:{movement:{displaced:[],amount:t,isBeyondStartPosition:!1},direction:f.direction,destination:{droppableId:u.descriptor.id,index:0}}};var p=s.indexOf(a),m=d?p:p+1;if(-1===p)return console.error("could not find target inside destination"),null;var h=(0,r.default)({source:l.page.withoutMargin,sourceEdge:"start",destination:a.page.withMargin,destinationEdge:d?"start":"end",destinationAxis:f}),_=(0,i.default)();return{pageCenter:h,impact:{movement:{displaced:s.slice(m,s.length).map(function(e){return(0,o.default)({draggable:e,destination:u,viewport:_,previousImpact:c})}),amount:t,isBeyondStartPosition:!1},direction:f.direction,destination:{droppableId:u.descriptor.id,index:m}}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){var r=e.onDragStart,o=e.onDragEnd,i=n.phase,a=t.phase;if(i!==a)if("DRAGGING"!==i||"DRAGGING"===a){if("DROP_COMPLETE"===i&&"DROP_COMPLETE"!==a){if(!n.drop||!n.drop.result)return void console.error("cannot fire onDragEnd hook without drag state",{current:n,previous:t});var s=n.drop.result,l=s.source,u=s.destination,c=s.draggableId,f=s.type;return u?l.droppableId!==u.droppableId||l.index!==u.index?void o(n.drop.result):void o({draggableId:c,type:f,source:l,destination:null}):void o(n.drop.result)}if("IDLE"!==i||"DRAGGING"!==a){if("IDLE"===i&&"DROP_ANIMATING"===a){if(!t.drop||!t.drop.pending)return void console.error("cannot fire onDragEnd for cancel because cannot find previous pending drop");o({draggableId:t.drop.pending.result.draggableId,type:t.drop.pending.result.type,source:t.drop.pending.result.source,destination:null})}}else{if(!t.drag)return void console.error("cannot fire onDragEnd for cancel because cannot find previous drag");var d=t.drag.initial.descriptor,p=t.dimension.droppable[d.droppableId];if(!p)return void console.error("cannot find dimension for home droppable");var m={index:d.index,droppableId:d.droppableId};o({draggableId:d.id,type:p.descriptor.type,source:m,destination:null})}}else{if(!r)return;if(!n.drag)return void console.error("cannot fire onDragStart hook without drag state",{current:n,previous:t});var h=n.drag.initial.descriptor,_=n.dimension.droppable[h.droppableId];if(!_)return void console.error("cannot find dimension for home droppable");var g={index:h.index,droppableId:h.droppableId};r({draggableId:h.id,type:_.descriptor.type,source:g})}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(51)),o=s(n(14)),i=s(n(47)),a=s(n(37));function s(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t={droppables:{},draggables:{},isCollecting:!1,request:null,frameId:null},n=function(e){var n=(0,a.default)({},t,e);t=n},s=function(){var n;(n=console).error.apply(n,arguments),t.isCollecting&&(c(),e.cancel())},l=function(e){n({frameId:e})},u=function(){if(t.isCollecting){var n=function(){var e=t.draggables,n=t.droppables,i=t.request;if(!i)return console.error("cannot find request in state"),[];var a=e[i].descriptor,s=n[a.droppableId].descriptor,l=(0,o.default)(e).map(function(t){return e[t].descriptor}).filter(function(e){return e.id!==a.id}).filter(function(e){var t=n[e.droppableId];return t?t.descriptor.type===s.type:(console.warn("Orphan Draggable found "+e.id+" which says it belongs to unknown Droppable "+e.droppableId),!1)}),u=(0,o.default)(n).map(function(e){return n[e].descriptor}).filter(function(e){return e.id!==s.id}).filter(function(e){return n[e.id].descriptor.type===s.type});return[].concat((0,r.default)(u),(0,r.default)(l))}(),i=requestAnimationFrame(function(){var r=n.map(function(e){return e.type?t.droppables[e.id].callbacks.getDimension():t.draggables[e.id].getDimension()}),o=requestAnimationFrame(function(){var n=r.reduce(function(e,t){return t.placeholder?e.draggables.push(t):e.droppables.push(t),e},{draggables:[],droppables:[]});n.droppables.length&&e.publishDroppables(n.droppables),n.draggables.length&&e.publishDraggables(n.draggables),n.droppables.forEach(function(e){t.droppables[e.descriptor.id].callbacks.watchScroll()}),l(null)});l(o)});l(i)}else s("Cannot collect secondary dimensions when collection is not occurring")},c=function(){(0,o.default)(t.droppables).forEach(function(e){return t.droppables[e].callbacks.unwatchScroll()}),t.frameId&&cancelAnimationFrame(t.frameId),n({isCollecting:!1,request:null,frameId:null})};return{registerDraggable:function(e,r){var o=e.id;if(t.droppables[e.droppableId]){var l={descriptor:e,getDimension:r},u=(0,a.default)({},t.draggables,(0,i.default)({},o,l));n({draggables:u}),t.isCollecting&&console.warn("Adding a draggable during a drag is currently not supported")}else s("Cannot register Draggable "+o+" as there is no entry for the Droppable "+e.droppableId)},unregisterDraggable:function(e){var r=t.draggables[e.id];if(r){if(r.descriptor===e){var o=(0,a.default)({},t.draggables);delete o[e.id],n({draggables:o}),t.isCollecting&&console.warn("currently not supporting unmounting a Draggable during a drag")}}else s("Cannot unregister Draggable with id "+e.id+" as it is not registered")},registerDroppable:function(e,r){var o=e.id,s={descriptor:e,callbacks:r},l=(0,a.default)({},t.droppables,(0,i.default)({},o,s));n({droppables:l}),t.isCollecting&&console.warn("Currently not supporting updating Droppables during a drag")},unregisterDroppable:function(e){var r=t.droppables[e.id];if(r){if(r.descriptor===e){var o=(0,a.default)({},t.droppables);delete o[e.id],n({droppables:o}),t.isCollecting&&console.warn("currently not supporting unmounting a Droppable during a drag")}}else s("Cannot unregister Droppable with id "+e.id+" as as it is not registered")},updateDroppableIsEnabled:function(n,r){t.droppables[n]?t.isCollecting&&e.updateDroppableIsEnabled(n,r):s("Cannot update the scroll on Droppable "+n+" as it is not registered")},updateDroppableScroll:function(n,r){t.droppables[n]?t.isCollecting&&e.updateDroppableScroll(n,r):s("Cannot update the scroll on Droppable "+n+" as it is not registered")},onPhaseChange:function(r){var o=r.phase;if("COLLECTING_INITIAL_DIMENSIONS"!==o)return"DRAGGING"===o?r.dimension.request!==t.request?void s("Request in local state does not match that of the store"):void u():void("DROP_ANIMATING"!==o&&"DROP_COMPLETE"!==o?"IDLE"===o&&t.isCollecting&&c():t.isCollecting&&c());!function(r){if(t.isCollecting)s("Cannot start capturing dimensions for a drag it is already dragging");else if(r){n({isCollecting:!0,request:r});var o=t.draggables,i=t.droppables,a=o[r];if(a){var l=i[a.descriptor.droppableId];if(l){var u=l.callbacks.getDimension(),c=a.getDimension();e.publishDroppables([u]),e.publishDraggables([c]),l.callbacks.watchScroll()}else s("Cannot find home Droppable [id:"+a.descriptor.droppableId+"] for Draggable [id:"+r+"]")}else s("Cannot find Draggable with id "+r+" to start collecting dimensions")}else s("Cannot start capturing dimensions with an invalid request",r)}(r.dimension.request)}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(82)),o=i(n(1478));function i(e){return e&&e.__esModule?e:{default:e}}var a=0;t.default=function(){var e=""+a++,t=(0,o.default)(e),n={el:null},i=function(e){n=e},s=(0,r.default)(function(e){n.el?n.el.innerHTML=e:console.error("cannot set style of style tag if not mounted")});return{onPhaseChange:function(e){if(n.el){var r=e.phase;if("DRAGGING"!==r){if("DROP_ANIMATING"===r)return e.drop&&e.drop.pending?"DROP"===e.drop.pending.trigger?void s(t.dropAnimating):void s(t.userCancel):void console.error("Invalid state found in style-marshal");s(t.resting)}else s(t.dragging)}else console.error("cannot update styles until style marshal is mounted")},styleContext:e,mount:function(){if(n.el)console.error("Style marshal already mounted");else{var r=document.createElement("style");r.type="text/css",r.setAttribute("data-react-beautiful-dnd",e);var o=document.querySelector("head");if(!o)throw new Error("Cannot find the head to append a style to");o.appendChild(r),i({el:r}),s(t.resting)}},unmount:function(){if(n.el){var e=n.el;i({el:null}),e.parentNode?e.parentNode.removeChild(e):console.error("Cannot unmount style marshal as cannot find parent")}else console.error("Cannot unmount style marshal as it is already unmounted")}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(641),o="data-react-beautiful-dnd";t.default=function(e){var t="["+o+'-drag-handle="'+e+'"]',n={base:"\n "+t+" {\n -webkit-touch-callout: none;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n touch-action: manipulation;\n }\n ",grabCursor:"\n "+t+" {\n cursor: -webkit-grab;\n cursor: grab;\n }\n ",blockPointerEvents:"\n "+t+" {\n pointer-events: none;\n }\n "},i={animateMovement:"\n "+("["+o+'-draggable="'+e+'"]')+" {\n transition: "+r.css.outOfTheWay+";\n }\n "};return{resting:[n.base,n.grabCursor].join(""),dragging:[n.base,n.blockPointerEvents,i.animateMovement,"\n body {\n cursor: grabbing;\n cursor: -webkit-grabbing;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n }\n "].join(""),dropAnimating:[n.base,n.grabCursor,i.animateMovement].join(""),userCancel:[n.base,i.animateMovement].join("")}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=e.phase;return"IDLE"===n||"DROP_COMPLETE"===n||"PREPARING"!==n&&"COLLECTING_INITIAL_DIMENSIONS"!==n&&"DRAGGING"!==n&&("DROP_ANIMATING"===n?e.drop&&e.drop.pending?e.drop.pending.result.draggableId!==t&&"DROP"===e.drop.pending.trigger:(console.error("Invalid state shape for drop animating"),!1):(console.warn("unhandled phase "+n+" in canLift check"),!1))}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(245)),o=i(n(199));function i(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=e.movement,n=e.draggable,i=e.draggables,a=e.destination,s=n.client.withMargin.center;if(null==a)return s;var l=t.displaced,u=t.isBeyondStartPosition,c=a.axis,f=a.descriptor.id===n.descriptor.droppableId;if(f&&!l.length)return s;var d=(0,o.default)(a,i),p=f?i[l[0].draggableId].client.withMargin:l.length?i[l[0].draggableId].client.withMargin:d.length?d[d.length-1].client.withMargin:a.client.withMarginAndPadding,m=f?u?{sourceEdge:"end",destinationEdge:"end"}:{sourceEdge:"start",destinationEdge:"start"}:!l.length&&d.length?{sourceEdge:"start",destinationEdge:"end"}:{sourceEdge:"start",destinationEdge:"start"},h=m.sourceEdge,_=m.destinationEdge,g=n.client.withMargin;return(0,r.default)({source:g,sourceEdge:h,destination:p,destinationEdge:_,destinationAxis:c})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1482);Object.defineProperty(t,"default",{enumerable:!0,get:function(){return function(e){return e&&e.__esModule?e:{default:e}}(r).default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.makeSelector=void 0;var r=n(721),o=n(434),i=u(n(82)),a=n(148),s=n(1484),l=u(n(1485));function u(e){return e&&e.__esModule?e:{default:e}}var c=t.makeSelector=function(){var e=(0,i.default)(function(e,t){return!!t&&t.droppableId===e}),t=(0,i.default)(function(e,t,n){return n&&t?e===n.descriptor.droppableId?null:e!==t.droppableId?null:n.placeholder:null}),n=(0,i.default)(function(e,t){return{isDraggingOver:e,placeholder:t}});return(0,o.createSelector)([s.phaseSelector,s.dragSelector,s.draggingDraggableSelector,s.pendingDropSelector,function(e,t){return t.droppableId},function(e,t){return t.isDropDisabled||!1}],function(r,o,i,a,s,l){if(l)return n(!1,null);if("DRAGGING"===r){if(!o)return console.error("cannot determine dragging over as there is not drag"),n(!1,null);var u=e(s,o.impact.destination),c=t(s,o.impact.destination,i);return n(u,c)}if("DROP_ANIMATING"===r){if(!a)return console.error("cannot determine dragging over as there is no pending result"),n(!1,null);var f=e(s,a.impact.destination),d=t(s,a.result.destination,i);return n(f,d)}return n(!1,null)})};t.default=(0,r.connect)(function(){var e=c();return function(t,n){return e(t,n)}},null,null,{storeKey:a.storeKey})(l.default)},function(e,t,n){"use strict"; -/** @license React v16.6.1 - * react-is.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&Symbol.for,o=r?Symbol.for("react.element"):60103,i=r?Symbol.for("react.portal"):60106,a=r?Symbol.for("react.fragment"):60107,s=r?Symbol.for("react.strict_mode"):60108,l=r?Symbol.for("react.profiler"):60114,u=r?Symbol.for("react.provider"):60109,c=r?Symbol.for("react.context"):60110,f=r?Symbol.for("react.async_mode"):60111,d=r?Symbol.for("react.concurrent_mode"):60111,p=r?Symbol.for("react.forward_ref"):60112,m=r?Symbol.for("react.suspense"):60113,h=r?Symbol.for("react.memo"):60115,_=r?Symbol.for("react.lazy"):60116;function g(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case f:case d:case a:case l:case s:return e;default:switch(e=e&&e.$$typeof){case c:case p:case u:return e;default:return t}}case i:return t}}}function v(e){return g(e)===d}t.typeOf=g,t.AsyncMode=f,t.ConcurrentMode=d,t.ContextConsumer=c,t.ContextProvider=u,t.Element=o,t.ForwardRef=p,t.Fragment=a,t.Profiler=l,t.Portal=i,t.StrictMode=s,t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===d||e===l||e===s||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===_||e.$$typeof===h||e.$$typeof===u||e.$$typeof===c||e.$$typeof===p)},t.isAsyncMode=function(e){return v(e)||g(e)===f},t.isConcurrentMode=v,t.isContextConsumer=function(e){return g(e)===c},t.isContextProvider=function(e){return g(e)===u},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},t.isForwardRef=function(e){return g(e)===p},t.isFragment=function(e){return g(e)===a},t.isProfiler=function(e){return g(e)===l},t.isPortal=function(e){return g(e)===i},t.isStrictMode=function(e){return g(e)===s}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.draggingDraggableSelector=t.dragSelector=t.pendingDropSelector=t.phaseSelector=void 0;var r=n(434),o=t.phaseSelector=function(e){return e.phase},i=t.pendingDropSelector=function(e){return e.drop&&e.drop.pending?e.drop.pending:null},a=t.dragSelector=function(e){return e.drag};t.draggingDraggableSelector=(0,r.createSelector)([o,a,i,function(e){return e.dimension.draggable}],function(e,t,n,r){return"DRAGGING"===e?t?r[t.initial.descriptor.id]:(console.error("cannot get placeholder dimensions as there is an invalid drag state"),null):"DROP_ANIMATING"===e?n?n.result.destination?r[n.result.draggableId]:null:(console.error("cannot get placeholder dimensions as there is an invalid drag state"),null):null})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=h(n(47)),o=h(n(11)),i=h(n(4)),a=h(n(5)),s=h(n(12)),l=h(n(13)),u=n(0),c=h(u),f=h(n(1)),d=h(n(1486)),p=h(n(644)),m=n(148);function h(e){return e&&e.__esModule?e:{default:e}}var _=function(e){function t(){var e,n,r,a;(0,i.default)(this,t);for(var l=arguments.length,u=Array(l),c=0;c<l;c++)u[c]=arguments[c];return n=r=(0,s.default)(this,(e=t.__proto__||(0,o.default)(t)).call.apply(e,[this].concat(u))),r.state={ref:null},r.setRef=function(e){null!==e&&e!==r.state.ref&&r.setState({ref:e})},a=n,(0,s.default)(r,a)}return(0,l.default)(t,e),(0,a.default)(t,[{key:"getChildContext",value:function(){return(0,r.default)({},m.droppableIdKey,this.props.droppableId)}},{key:"getPlaceholder",value:function(){return this.props.placeholder?c.default.createElement(p.default,{placeholder:this.props.placeholder}):null}},{key:"render",value:function(){var e=this.props,t=e.children,n=e.direction,r=e.droppableId,o=e.ignoreContainerClipping,i=e.isDraggingOver,a=e.isDropDisabled,s=e.type,l={innerRef:this.setRef,placeholder:this.getPlaceholder()},u={isDraggingOver:i};return c.default.createElement(d.default,{droppableId:r,type:s,direction:n,ignoreContainerClipping:o,isDropDisabled:a,targetRef:this.state.ref},t(l,u))}}]),t}(u.Component);_.defaultProps={type:"DEFAULT",isDropDisabled:!1,direction:"vertical",ignoreContainerClipping:!1},_.childContextTypes=(0,r.default)({},m.droppableIdKey,f.default.string.isRequired),t.default=_},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1487);Object.defineProperty(t,"default",{enumerable:!0,get:function(){return function(e){return e&&e.__esModule?e:{default:e}}(r).default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=v(n(47)),o=v(n(11)),i=v(n(4)),a=v(n(5)),s=v(n(12)),l=v(n(13)),u=n(0),c=v(n(1)),f=v(n(82)),d=v(n(643)),p=v(n(435)),m=v(n(198)),h=n(306),_=v(n(1488)),g=n(148);function v(e){return e&&e.__esModule?e:{default:e}}var y={x:0,y:0},b=function(e){function t(e,n){(0,i.default)(this,t);var r=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this,e,n));r.closestScrollable=null,r.isWatchingScroll=!1,r.publishedDescriptor=null,r.getScrollOffset=function(){return r.closestScrollable?{x:r.closestScrollable.scrollLeft,y:r.closestScrollable.scrollTop}:y},r.memoizedUpdateScroll=(0,f.default)(function(e,t){if(r.publishedDescriptor){var n={x:e,y:t};r.context[g.dimensionMarshalKey].updateDroppableScroll(r.publishedDescriptor.id,n)}else console.error("Cannot update scroll on unpublished droppable")}),r.scheduleScrollUpdate=(0,d.default)(function(e){r.isWatchingScroll&&r.memoizedUpdateScroll(e.x,e.y)}),r.onClosestScroll=function(){r.scheduleScrollUpdate(r.getScrollOffset())},r.watchScroll=function(){r.props.targetRef?null!=r.closestScrollable&&(r.isWatchingScroll||(r.isWatchingScroll=!0,r.closestScrollable.addEventListener("scroll",r.onClosestScroll,{passive:!0}))):console.error("cannot watch droppable scroll if not in the dom")},r.unwatchScroll=function(){r.isWatchingScroll&&(r.isWatchingScroll=!1,r.closestScrollable?r.closestScrollable.removeEventListener("scroll",r.onClosestScroll):console.error("cannot unbind event listener if element is null"))},r.getMemoizedDescriptor=(0,f.default)(function(e,t){return{id:e,type:t}}),r.unpublish=function(){r.publishedDescriptor?(r.context[g.dimensionMarshalKey].unregisterDroppable(r.publishedDescriptor),r.publishedDescriptor=null):console.error("cannot unpublish descriptor when none is published")},r.publish=function(e){e!==r.publishedDescriptor&&(r.publishedDescriptor&&r.unpublish(),r.context[g.dimensionMarshalKey].registerDroppable(e,r.callbacks),r.publishedDescriptor=e)},r.getDimension=function(){var e=r.props,t=e.direction,n=e.ignoreContainerClipping,o=e.isDropDisabled,i=e.targetRef;if(!i)throw new Error("DimensionPublisher cannot calculate a dimension when not attached to the DOM");if(r.isWatchingScroll)throw new Error("Attempting to recapture Droppable dimension while already watching scroll on previous capture");var a=r.publishedDescriptor;if(!a)throw new Error("Cannot get dimension for unpublished droppable");r.closestScrollable=(0,_.default)(i);var s=r.getScrollOffset(),l=window.getComputedStyle(i),u={top:parseInt(l.marginTop,10),right:parseInt(l.marginRight,10),bottom:parseInt(l.marginBottom,10),left:parseInt(l.marginLeft,10)},c={top:parseInt(l.paddingTop,10),right:parseInt(l.paddingRight,10),bottom:parseInt(l.paddingBottom,10),left:parseInt(l.paddingLeft,10)},f=(0,m.default)(i.getBoundingClientRect()),d=n?null:r.closestScrollable?r.closestScrollable===i?null:(0,m.default)(r.closestScrollable.getBoundingClientRect()):null;return(0,h.getDroppableDimension)({descriptor:a,direction:t,client:f,frameClient:d,frameScroll:s,margin:u,padding:c,windowScroll:(0,p.default)(),isEnabled:!o})};var a={getDimension:r.getDimension,watchScroll:r.watchScroll,unwatchScroll:r.unwatchScroll};return r.callbacks=a,r}return(0,l.default)(t,e),(0,a.default)(t,[{key:"componentWillReceiveProps",value:function(e){if(e.targetRef){var t=e.droppableId,n=e.type,r=this.getMemoizedDescriptor(t,n);if(this.publish(r),this.props.isDropDisabled!==e.isDropDisabled)this.context[g.dimensionMarshalKey].updateDroppableIsEnabled(e.droppableId,!e.isDropDisabled)}else console.error("Cannot update droppable dimension publisher without a target ref")}},{key:"componentWillUnmount",value:function(){this.isWatchingScroll&&(console.warn("unmounting droppable while it was watching scroll"),this.unwatchScroll()),this.unpublish()}},{key:"render",value:function(){return this.props.children}}]),t}(u.Component);b.contextTypes=(0,r.default)({},g.dimensionMarshalKey,c.default.object.isRequired),t.default=b},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){var t=window.getComputedStyle(e);return function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.some(function(e){return"auto"===e||"scroll"===e})}(t.overflow,t.overflowY,t.overflowX)};t.default=function e(t){return null==t?null:r(t)?t:e(t.parentElement)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(11)),o=c(n(4)),i=c(n(5)),a=c(n(12)),s=c(n(13)),l=n(0),u=c(l);function c(e){return e&&e.__esModule?e:{default:e}}var f=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,i.default)(t,[{key:"render",value:function(){var e=this.props.placeholder,t=e.margin,n=t.top,r=t.left,o=t.bottom,i=t.right,a=e.withoutMargin,s={width:a.width,height:a.height,marginTop:n,marginLeft:r,marginBottom:o,marginRight:i,pointerEvents:"none",boxSizing:"border-box"};return u.default.createElement("div",{style:s})}}]),t}(l.PureComponent);t.default=f},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1491);Object.defineProperty(t,"default",{enumerable:!0,get:function(){return function(e){return e&&e.__esModule?e:{default:e}}(r).default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.makeSelector=void 0;var r=f(n(82)),o=n(721),i=n(434),a=f(n(1492)),s=n(148),l=n(70),u=f(n(638)),c=n(642);function f(e){return e&&e.__esModule?e:{default:e}}var d={isDropAnimating:!1,isDragging:!1,offset:{x:0,y:0},shouldAnimateDragMovement:!1,shouldAnimateDisplacement:!0,dimension:null,direction:null},p=t.makeSelector=function(){var e=(0,r.default)(function(e,t){return{x:e,y:t}}),t=(0,r.default)(function(e,t){return{isDropAnimating:!1,isDragging:!1,offset:e,shouldAnimateDisplacement:t,shouldAnimateDragMovement:!1,dimension:null,direction:null}}),n=(0,r.default)(function(e,t,n,r){return{isDragging:!0,isDropAnimating:!1,shouldAnimateDisplacement:!1,offset:e,shouldAnimateDragMovement:t,dimension:n,direction:r}}),o=function(n,r){var o=(0,u.default)(r.displaced)[n];if(!o)return null;if(!o.isVisible)return null;var i=r.isBeyondStartPosition?(0,l.negate)(r.amount):r.amount;return t(e(i.x,i.y),o.shouldAnimate)};return(0,i.createSelector)([function(t,r){if("DRAGGING"!==t.phase&&"DROP_ANIMATING"!==t.phase)return null;if("DRAGGING"===t.phase){if(!t.drag)return console.error("invalid drag state found in selector"),null;if(t.drag.initial.descriptor.id!==r.draggableId)return null;var o=t.drag.current.client.offset,i=t.dimension.draggable[r.draggableId],a=t.drag.impact.direction,s=t.drag.current.shouldAnimate;return n(e(o.x,o.y),s,i,a)}return t.drop&&t.drop.pending?t.drop.pending.result.draggableId!==r.draggableId?null:{isDragging:!1,isDropAnimating:!0,offset:t.drop.pending.newHomeOffset,dimension:t.dimension.draggable[r.draggableId],direction:null,shouldAnimateDragMovement:!1,shouldAnimateDisplacement:!1}:(console.error("cannot provide props for dropping item when there is invalid state"),null)},function(e,t){return"DRAGGING"!==e.phase&&"DROP_ANIMATING"!==e.phase?null:"DRAGGING"===e.phase?e.drag?e.drag.initial.descriptor.id===t.draggableId?null:o(t.draggableId,e.drag.impact.movement):(console.error("cannot correctly move item out of the way when there is invalid state"),null):e.drop&&e.drop.pending?e.drop.pending.result.draggableId===t.draggableId?null:o(t.draggableId,e.drop.pending.impact.movement):(console.error("cannot provide props for dropping item when there is invalid state"),null)}],function(e,t){return e||(t||d)})},m={lift:c.lift,move:c.move,moveForward:c.moveForward,moveBackward:c.moveBackward,crossAxisMoveForward:c.crossAxisMoveForward,crossAxisMoveBackward:c.crossAxisMoveBackward,moveByWindowScroll:c.moveByWindowScroll,drop:c.drop,dropAnimationFinished:c.dropAnimationFinished,cancel:c.cancel};t.default=(0,o.connect)(function(){var e=p();return function(t,n){return e(t,n)}},m,null,{storeKey:s.storeKey})(a.default)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.zIndexOptions=void 0;var r,o=C(n(47)),i=C(n(11)),a=C(n(4)),s=C(n(5)),l=C(n(12)),u=C(n(13)),c=n(0),f=C(c),d=C(n(1)),p=C(n(82)),m=C(n(1493)),h=C(n(1494)),_=C(n(1496)),g=C(n(1506)),v=C(n(435)),y=C(n(647)),b=C(n(644)),E=n(148);function C(e){return e&&e.__esModule?e:{default:e}}var S=t.zIndexOptions={dragging:5e3,dropAnimating:4500},D=function(e){function t(e,n){(0,a.default)(this,t);var r=(0,l.default)(this,(t.__proto__||(0,i.default)(t)).call(this,e,n));r.state={ref:null},r.onMoveEnd=function(){r.props.isDropAnimating&&r.props.dropAnimationFinished()},r.onLift=function(e){r.throwIfCannotDrag();var t=e.client,n=e.isScrollAllowed,o=r.props,i=o.lift,a=o.draggableId,s=r.state.ref;if(!s)throw new Error("cannot lift at this time");i(a,{selection:t,center:(0,y.default)(s)},(0,v.default)(),n)},r.onMove=function(e){r.throwIfCannotDrag();var t=r.props,n=t.draggableId,o=t.dimension,i=t.move;o&&i(n,e,(0,v.default)())},r.onMoveForward=function(){r.throwIfCannotDrag(),r.props.moveForward(r.props.draggableId)},r.onMoveBackward=function(){r.throwIfCannotDrag(),r.props.moveBackward(r.props.draggableId)},r.onCrossAxisMoveForward=function(){r.throwIfCannotDrag(),r.props.crossAxisMoveForward(r.props.draggableId)},r.onCrossAxisMoveBackward=function(){r.throwIfCannotDrag(),r.props.crossAxisMoveBackward(r.props.draggableId)},r.onWindowScroll=function(){r.throwIfCannotDrag();var e=(0,v.default)();r.props.moveByWindowScroll(r.props.draggableId,e)},r.onDrop=function(){r.throwIfCannotDrag(),r.props.drop()},r.onCancel=function(){r.props.cancel()},r.setRef=function(e){null!==e&&e!==r.state.ref&&r.setState({ref:e})},r.getDraggableRef=function(){return r.state.ref},r.getDraggingStyle=(0,p.default)(function(e,t,n){var r=e.client.withoutMargin,o=r.width,i=r.height,a=r.top,s=r.left;return{position:"fixed",boxSizing:"border-box",zIndex:t?S.dropAnimating:S.dragging,width:o,height:i,top:a,left:s,margin:0,pointerEvents:"none",transition:"none",transform:n.transform?""+n.transform:null}}),r.getNotDraggingStyle=(0,p.default)(function(e,t){return{transform:e.transform,transition:t?null:"none"}}),r.getProvided=(0,p.default)(function(e,t,n,o,i,a){var s=e||t,l=s?((0,m.default)(o,"draggable dimension required for dragging"),r.getDraggingStyle(o,t,a)):r.getNotDraggingStyle(a,n);return{innerRef:r.setRef,draggableProps:{"data-react-beautiful-dnd-draggable":r.styleContext,style:l},dragHandleProps:i,placeholder:s?r.getPlaceholder():null}}),r.getSnapshot=(0,p.default)(function(e,t){return{isDragging:e||t}}),r.getSpeed=(0,p.default)(function(e,t,n){return n?"STANDARD":e&&t?"FAST":"INSTANT"});var o={onLift:r.onLift,onMove:r.onMove,onDrop:r.onDrop,onCancel:r.onCancel,onMoveBackward:r.onMoveBackward,onMoveForward:r.onMoveForward,onCrossAxisMoveForward:r.onCrossAxisMoveForward,onCrossAxisMoveBackward:r.onCrossAxisMoveBackward,onWindowScroll:r.onWindowScroll};return r.callbacks=o,r.styleContext=n[E.styleContextKey],r}return(0,u.default)(t,e),(0,s.default)(t,[{key:"throwIfCannotDrag",value:function(){(0,m.default)(this.state.ref,"Draggable: cannot drag as no DOM node has been provided"),(0,m.default)(!this.props.isDragDisabled,"Draggable: cannot drag as dragging is not enabled")}},{key:"getPlaceholder",value:function(){var e=this.props.dimension;return(0,m.default)(e,"cannot get a drag placeholder when not dragging"),f.default.createElement(b.default,{placeholder:e.placeholder})}},{key:"render",value:function(){var e=this,t=this.props,n=t.draggableId,r=t.index,o=t.offset,i=t.isDragging,a=t.isDropAnimating,s=t.isDragDisabled,l=t.dimension,u=t.children,c=t.direction,d=t.shouldAnimateDragMovement,p=t.shouldAnimateDisplacement,m=t.disableInteractiveElementBlocking,v=this.context[E.droppableIdKey],y=this.getSpeed(i,d,a);return f.default.createElement(h.default,{draggableId:n,droppableId:v,index:r,targetRef:this.state.ref},f.default.createElement(_.default,{speed:y,destination:o,onMoveEnd:this.onMoveEnd},function(t){return f.default.createElement(g.default,{draggableId:n,isDragging:i,direction:c,isEnabled:!s,callbacks:e.callbacks,getDraggableRef:e.getDraggableRef,canDragInteractiveElements:m},function(n){return u(e.getProvided(i,a,p,l,n,t),e.getSnapshot(i,a))})}))}}]),t}(c.Component);D.defaultProps={isDragDisabled:!1,disableInteractiveElementBlocking:!1},D.contextTypes=(r={},(0,o.default)(r,E.droppableIdKey,d.default.string.isRequired),(0,o.default)(r,E.styleContextKey,d.default.string.isRequired),r),t.default=D},function(e,t,n){"use strict";e.exports=function(e,t,n,r,o,i,a,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,o,i,a,s],c=0;(l=new Error(t.replace(/%s/g,function(){return u[c++]}))).name="Invariant Violation"}throw l.framesToPop=1,l}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1495);Object.defineProperty(t,"default",{enumerable:!0,get:function(){return function(e){return e&&e.__esModule?e:{default:e}}(r).default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=_(n(47)),o=_(n(11)),i=_(n(4)),a=_(n(5)),s=_(n(12)),l=_(n(13)),u=n(0),c=_(n(1)),f=_(n(82)),d=_(n(435)),p=n(306),m=n(148),h=_(n(198));function _(e){return e&&e.__esModule?e:{default:e}}var g=function(e){function t(){var e,n,r,a;(0,i.default)(this,t);for(var l=arguments.length,u=Array(l),c=0;c<l;c++)u[c]=arguments[c];return n=r=(0,s.default)(this,(e=t.__proto__||(0,o.default)(t)).call.apply(e,[this].concat(u))),r.publishedDescriptor=null,r.getMemoizedDescriptor=(0,f.default)(function(e,t,n){return{id:e,droppableId:t,index:n}}),r.unpublish=function(){r.publishedDescriptor?(r.context[m.dimensionMarshalKey].unregisterDraggable(r.publishedDescriptor),r.publishedDescriptor=null):console.error("cannot unpublish descriptor when none is published")},r.publish=function(e){e!==r.publishedDescriptor&&(r.publishedDescriptor&&r.unpublish(),r.context[m.dimensionMarshalKey].registerDraggable(e,r.getDimension),r.publishedDescriptor=e)},r.getDimension=function(){var e=r.props.targetRef;if(!e)throw new Error("DraggableDimensionPublisher cannot calculate a dimension when not attached to the DOM");var t=r.publishedDescriptor;if(!t)throw new Error("Cannot get dimension for unpublished draggable");var n=window.getComputedStyle(e),o={top:parseInt(n.marginTop,10),right:parseInt(n.marginRight,10),bottom:parseInt(n.marginBottom,10),left:parseInt(n.marginLeft,10)},i=(0,h.default)(e.getBoundingClientRect());return(0,p.getDraggableDimension)({descriptor:t,client:i,margin:o,windowScroll:(0,d.default)()})},a=n,(0,s.default)(r,a)}return(0,l.default)(t,e),(0,a.default)(t,[{key:"componentWillReceiveProps",value:function(e){var t=e.draggableId,n=e.droppableId,r=e.index;if(e.targetRef){var o=this.getMemoizedDescriptor(t,n,r);this.publish(o)}else console.error("Updating draggable dimension handler without a targetRef")}},{key:"componentWillUnmount",value:function(){this.unpublish()}},{key:"render",value:function(){return this.props.children}}]),t}(u.Component);g.contextTypes=(0,r.default)({},m.dimensionMarshalKey,c.default.object.isRequired),t.default=g},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1497);Object.defineProperty(t,"default",{enumerable:!0,get:function(){return function(e){return e&&e.__esModule?e:{default:e}}(r).default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=d(n(11)),o=d(n(4)),i=d(n(5)),a=d(n(12)),s=d(n(13)),l=n(0),u=d(l),c=n(1498),f=n(641);function d(e){return e&&e.__esModule?e:{default:e}}var p={x:0,y:0},m={transform:null},h=function(e){return e.x===p.x&&e.y===p.y},_=function(e){function t(){var e,n,i,s;(0,o.default)(this,t);for(var l=arguments.length,u=Array(l),d=0;d<l;d++)u[d]=arguments[d];return n=i=(0,a.default)(this,(e=t.__proto__||(0,r.default)(t)).call.apply(e,[this].concat(u))),i.onRest=function(){var e=i.props.onMoveEnd;e&&setTimeout(function(){return e()})},i.getFinal=function(){var e=i.props.destination,t=i.props.speed;if("INSTANT"===t)return e;var n="FAST"===t?f.physics.fast:f.physics.standard;return{x:(0,c.spring)(e.x,n),y:(0,c.spring)(e.y,n)}},s=n,(0,a.default)(i,s)}return(0,s.default)(t,e),(0,i.default)(t,[{key:"render",value:function(){var e=this,t=this.getFinal(),n=h(t);return u.default.createElement(c.Motion,{defaultStyle:p,style:t,onRest:this.onRest},function(t){return e.props.children(function(e,t,n){if(e)return m;var r={x:t,y:n};return h(r)?m:{transform:"translate("+r.x+"px, "+r.y+"px)"}}(n,t.x,t.y))})}}]),t}(l.Component);_.defaultProps={destination:p},t.default=_},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e.default:e}t.__esModule=!0;var o=n(1499);t.Motion=r(o);var i=n(1501);t.StaggeredMotion=r(i);var a=n(1502);t.TransitionMotion=r(a);var s=n(1504);t.spring=r(s);var l=n(645);t.presets=r(l);var u=n(307);t.stripStyle=r(u);var c=n(1505);t.reorderKeys=r(c)},function(e,t,n){"use strict";t.__esModule=!0;var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();function i(e){return e&&e.__esModule?e:{default:e}}var a=i(n(436)),s=i(n(307)),l=i(n(437)),u=i(n(438)),c=i(n(439)),f=i(n(440)),d=i(n(0)),p=i(n(1)),m=1e3/60,h=function(e){function t(n){var o=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),e.call(this,n),this.wasAnimating=!1,this.animationID=null,this.prevTime=0,this.accumulatedTime=0,this.unreadPropStyle=null,this.clearUnreadPropStyle=function(e){var t=!1,n=o.state,i=n.currentStyle,a=n.currentVelocity,s=n.lastIdealStyle,l=n.lastIdealVelocity;for(var u in e)if(Object.prototype.hasOwnProperty.call(e,u)){var c=e[u];"number"==typeof c&&(t||(t=!0,i=r({},i),a=r({},a),s=r({},s),l=r({},l)),i[u]=c,a[u]=0,s[u]=c,l[u]=0)}t&&o.setState({currentStyle:i,currentVelocity:a,lastIdealStyle:s,lastIdealVelocity:l})},this.startAnimationIfNecessary=function(){o.animationID=c.default(function(e){var t=o.props.style;if(f.default(o.state.currentStyle,t,o.state.currentVelocity))return o.wasAnimating&&o.props.onRest&&o.props.onRest(),o.animationID=null,o.wasAnimating=!1,void(o.accumulatedTime=0);o.wasAnimating=!0;var n=e||u.default(),r=n-o.prevTime;if(o.prevTime=n,o.accumulatedTime=o.accumulatedTime+r,o.accumulatedTime>10*m&&(o.accumulatedTime=0),0===o.accumulatedTime)return o.animationID=null,void o.startAnimationIfNecessary();var i=(o.accumulatedTime-Math.floor(o.accumulatedTime/m)*m)/m,a=Math.floor(o.accumulatedTime/m),s={},c={},d={},p={};for(var h in t)if(Object.prototype.hasOwnProperty.call(t,h)){var _=t[h];if("number"==typeof _)d[h]=_,p[h]=0,s[h]=_,c[h]=0;else{for(var g=o.state.lastIdealStyle[h],v=o.state.lastIdealVelocity[h],y=0;y<a;y++){var b=l.default(m/1e3,g,v,_.val,_.stiffness,_.damping,_.precision);g=b[0],v=b[1]}var E=l.default(m/1e3,g,v,_.val,_.stiffness,_.damping,_.precision),C=E[0],S=E[1];d[h]=g+(C-g)*i,p[h]=v+(S-v)*i,s[h]=g,c[h]=v}}o.animationID=null,o.accumulatedTime-=a*m,o.setState({currentStyle:d,currentVelocity:p,lastIdealStyle:s,lastIdealVelocity:c}),o.unreadPropStyle=null,o.startAnimationIfNecessary()})},this.state=this.defaultState()}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),o(t,null,[{key:"propTypes",value:{defaultStyle:p.default.objectOf(p.default.number),style:p.default.objectOf(p.default.oneOfType([p.default.number,p.default.object])).isRequired,children:p.default.func.isRequired,onRest:p.default.func},enumerable:!0}]),t.prototype.defaultState=function(){var e=this.props,t=e.defaultStyle,n=e.style,r=t||s.default(n),o=a.default(r);return{currentStyle:r,currentVelocity:o,lastIdealStyle:r,lastIdealVelocity:o}},t.prototype.componentDidMount=function(){this.prevTime=u.default(),this.startAnimationIfNecessary()},t.prototype.componentWillReceiveProps=function(e){null!=this.unreadPropStyle&&this.clearUnreadPropStyle(this.unreadPropStyle),this.unreadPropStyle=e.style,null==this.animationID&&(this.prevTime=u.default(),this.startAnimationIfNecessary())},t.prototype.componentWillUnmount=function(){null!=this.animationID&&(c.default.cancel(this.animationID),this.animationID=null)},t.prototype.render=function(){var e=this.props.children(this.state.currentStyle);return e&&d.default.Children.only(e)},t}(d.default.Component);t.default=h,e.exports=t.default},function(e,t,n){(function(t){(function(){var n,r,o,i,a,s;"undefined"!=typeof performance&&null!==performance&&performance.now?e.exports=function(){return performance.now()}:void 0!==t&&null!==t&&t.hrtime?(e.exports=function(){return(n()-a)/1e6},r=t.hrtime,i=(n=function(){var e;return 1e9*(e=r())[0]+e[1]})(),s=1e9*t.uptime(),a=i-s):Date.now?(e.exports=function(){return Date.now()-o},o=Date.now()):(e.exports=function(){return(new Date).getTime()-o},o=(new Date).getTime())}).call(this)}).call(this,n(54))},function(e,t,n){"use strict";t.__esModule=!0;var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();function i(e){return e&&e.__esModule?e:{default:e}}var a=i(n(436)),s=i(n(307)),l=i(n(437)),u=i(n(438)),c=i(n(439)),f=i(n(440)),d=i(n(0)),p=i(n(1)),m=1e3/60;var h=function(e){function t(n){var o=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),e.call(this,n),this.animationID=null,this.prevTime=0,this.accumulatedTime=0,this.unreadPropStyles=null,this.clearUnreadPropStyle=function(e){for(var t=o.state,n=t.currentStyles,i=t.currentVelocities,a=t.lastIdealStyles,s=t.lastIdealVelocities,l=!1,u=0;u<e.length;u++){var c=e[u],f=!1;for(var d in c)if(Object.prototype.hasOwnProperty.call(c,d)){var p=c[d];"number"==typeof p&&(f||(f=!0,l=!0,n[u]=r({},n[u]),i[u]=r({},i[u]),a[u]=r({},a[u]),s[u]=r({},s[u])),n[u][d]=p,i[u][d]=0,a[u][d]=p,s[u][d]=0)}}l&&o.setState({currentStyles:n,currentVelocities:i,lastIdealStyles:a,lastIdealVelocities:s})},this.startAnimationIfNecessary=function(){o.animationID=c.default(function(e){var t=o.props.styles(o.state.lastIdealStyles);if(function(e,t,n){for(var r=0;r<e.length;r++)if(!f.default(e[r],t[r],n[r]))return!1;return!0}(o.state.currentStyles,t,o.state.currentVelocities))return o.animationID=null,void(o.accumulatedTime=0);var n=e||u.default(),r=n-o.prevTime;if(o.prevTime=n,o.accumulatedTime=o.accumulatedTime+r,o.accumulatedTime>10*m&&(o.accumulatedTime=0),0===o.accumulatedTime)return o.animationID=null,void o.startAnimationIfNecessary();for(var i=(o.accumulatedTime-Math.floor(o.accumulatedTime/m)*m)/m,a=Math.floor(o.accumulatedTime/m),s=[],c=[],d=[],p=[],h=0;h<t.length;h++){var _=t[h],g={},v={},y={},b={};for(var E in _)if(Object.prototype.hasOwnProperty.call(_,E)){var C=_[E];if("number"==typeof C)g[E]=C,v[E]=0,y[E]=C,b[E]=0;else{for(var S=o.state.lastIdealStyles[h][E],D=o.state.lastIdealVelocities[h][E],w=0;w<a;w++){var T=l.default(m/1e3,S,D,C.val,C.stiffness,C.damping,C.precision);S=T[0],D=T[1]}var x=l.default(m/1e3,S,D,C.val,C.stiffness,C.damping,C.precision),R=x[0],k=x[1];g[E]=S+(R-S)*i,v[E]=D+(k-D)*i,y[E]=S,b[E]=D}}d[h]=g,p[h]=v,s[h]=y,c[h]=b}o.animationID=null,o.accumulatedTime-=a*m,o.setState({currentStyles:d,currentVelocities:p,lastIdealStyles:s,lastIdealVelocities:c}),o.unreadPropStyles=null,o.startAnimationIfNecessary()})},this.state=this.defaultState()}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),o(t,null,[{key:"propTypes",value:{defaultStyles:p.default.arrayOf(p.default.objectOf(p.default.number)),styles:p.default.func.isRequired,children:p.default.func.isRequired},enumerable:!0}]),t.prototype.defaultState=function(){var e=this.props,t=e.defaultStyles,n=e.styles,r=t||n().map(s.default),o=r.map(function(e){return a.default(e)});return{currentStyles:r,currentVelocities:o,lastIdealStyles:r,lastIdealVelocities:o}},t.prototype.componentDidMount=function(){this.prevTime=u.default(),this.startAnimationIfNecessary()},t.prototype.componentWillReceiveProps=function(e){null!=this.unreadPropStyles&&this.clearUnreadPropStyle(this.unreadPropStyles),this.unreadPropStyles=e.styles(this.state.lastIdealStyles),null==this.animationID&&(this.prevTime=u.default(),this.startAnimationIfNecessary())},t.prototype.componentWillUnmount=function(){null!=this.animationID&&(c.default.cancel(this.animationID),this.animationID=null)},t.prototype.render=function(){var e=this.props.children(this.state.currentStyles);return e&&d.default.Children.only(e)},t}(d.default.Component);t.default=h,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();function i(e){return e&&e.__esModule?e:{default:e}}var a=i(n(436)),s=i(n(307)),l=i(n(437)),u=i(n(1503)),c=i(n(438)),f=i(n(439)),d=i(n(440)),p=i(n(0)),m=i(n(1)),h=1e3/60;function _(e,t,n){var r=t;return null==r?e.map(function(e,t){return{key:e.key,data:e.data,style:n[t]}}):e.map(function(e,t){for(var o=0;o<r.length;o++)if(r[o].key===e.key)return{key:r[o].key,data:r[o].data,style:n[t]};return{key:e.key,data:e.data,style:n[t]}})}function g(e,t,n,r,o,i,s,l,c){for(var f=u.default(r,o,function(e,r){var o=t(r);return null==o?(n({key:r.key,data:r.data}),null):d.default(i[e],o,s[e])?(n({key:r.key,data:r.data}),null):{key:r.key,data:r.data,style:o}}),p=[],m=[],h=[],_=[],g=0;g<f.length;g++){for(var v=f[g],y=null,b=0;b<r.length;b++)if(r[b].key===v.key){y=b;break}if(null==y){var E=e(v);p[g]=E,h[g]=E;var C=a.default(v.style);m[g]=C,_[g]=C}else p[g]=i[y],h[g]=l[y],m[g]=s[y],_[g]=c[y]}return[f,p,m,h,_]}var v=function(e){function t(n){var o=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),e.call(this,n),this.unmounting=!1,this.animationID=null,this.prevTime=0,this.accumulatedTime=0,this.unreadPropStyles=null,this.clearUnreadPropStyle=function(e){for(var t=g(o.props.willEnter,o.props.willLeave,o.props.didLeave,o.state.mergedPropsStyles,e,o.state.currentStyles,o.state.currentVelocities,o.state.lastIdealStyles,o.state.lastIdealVelocities),n=t[0],i=t[1],a=t[2],s=t[3],l=t[4],u=0;u<e.length;u++){var c=e[u].style,f=!1;for(var d in c)if(Object.prototype.hasOwnProperty.call(c,d)){var p=c[d];"number"==typeof p&&(f||(f=!0,i[u]=r({},i[u]),a[u]=r({},a[u]),s[u]=r({},s[u]),l[u]=r({},l[u]),n[u]={key:n[u].key,data:n[u].data,style:r({},n[u].style)}),i[u][d]=p,a[u][d]=0,s[u][d]=p,l[u][d]=0,n[u].style[d]=p)}}o.setState({currentStyles:i,currentVelocities:a,mergedPropsStyles:n,lastIdealStyles:s,lastIdealVelocities:l})},this.startAnimationIfNecessary=function(){o.unmounting||(o.animationID=f.default(function(e){if(!o.unmounting){var t=o.props.styles,n="function"==typeof t?t(_(o.state.mergedPropsStyles,o.unreadPropStyles,o.state.lastIdealStyles)):t;if(function(e,t,n,r){if(r.length!==t.length)return!1;for(var o=0;o<r.length;o++)if(r[o].key!==t[o].key)return!1;for(o=0;o<r.length;o++)if(!d.default(e[o],t[o].style,n[o]))return!1;return!0}(o.state.currentStyles,n,o.state.currentVelocities,o.state.mergedPropsStyles))return o.animationID=null,void(o.accumulatedTime=0);var r=e||c.default(),i=r-o.prevTime;if(o.prevTime=r,o.accumulatedTime=o.accumulatedTime+i,o.accumulatedTime>10*h&&(o.accumulatedTime=0),0===o.accumulatedTime)return o.animationID=null,void o.startAnimationIfNecessary();for(var a=(o.accumulatedTime-Math.floor(o.accumulatedTime/h)*h)/h,s=Math.floor(o.accumulatedTime/h),u=g(o.props.willEnter,o.props.willLeave,o.props.didLeave,o.state.mergedPropsStyles,n,o.state.currentStyles,o.state.currentVelocities,o.state.lastIdealStyles,o.state.lastIdealVelocities),f=u[0],p=u[1],m=u[2],v=u[3],y=u[4],b=0;b<f.length;b++){var E=f[b].style,C={},S={},D={},w={};for(var T in E)if(Object.prototype.hasOwnProperty.call(E,T)){var x=E[T];if("number"==typeof x)C[T]=x,S[T]=0,D[T]=x,w[T]=0;else{for(var R=v[b][T],k=y[b][T],N=0;N<s;N++){var I=l.default(h/1e3,R,k,x.val,x.stiffness,x.damping,x.precision);R=I[0],k=I[1]}var O=l.default(h/1e3,R,k,x.val,x.stiffness,x.damping,x.precision),A=O[0],M=O[1];C[T]=R+(A-R)*a,S[T]=k+(M-k)*a,D[T]=R,w[T]=k}}v[b]=D,y[b]=w,p[b]=C,m[b]=S}o.animationID=null,o.accumulatedTime-=s*h,o.setState({currentStyles:p,currentVelocities:m,lastIdealStyles:v,lastIdealVelocities:y,mergedPropsStyles:f}),o.unreadPropStyles=null,o.startAnimationIfNecessary()}}))},this.state=this.defaultState()}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),o(t,null,[{key:"propTypes",value:{defaultStyles:m.default.arrayOf(m.default.shape({key:m.default.string.isRequired,data:m.default.any,style:m.default.objectOf(m.default.number).isRequired})),styles:m.default.oneOfType([m.default.func,m.default.arrayOf(m.default.shape({key:m.default.string.isRequired,data:m.default.any,style:m.default.objectOf(m.default.oneOfType([m.default.number,m.default.object])).isRequired}))]).isRequired,children:m.default.func.isRequired,willEnter:m.default.func,willLeave:m.default.func,didLeave:m.default.func},enumerable:!0},{key:"defaultProps",value:{willEnter:function(e){return s.default(e.style)},willLeave:function(){return null},didLeave:function(){}},enumerable:!0}]),t.prototype.defaultState=function(){var e=this.props,t=e.defaultStyles,n=e.styles,r=e.willEnter,o=e.willLeave,i=e.didLeave,l="function"==typeof n?n(t):n,u=void 0;u=null==t?l:t.map(function(e){for(var t=0;t<l.length;t++)if(l[t].key===e.key)return l[t];return e});var c=null==t?l.map(function(e){return s.default(e.style)}):t.map(function(e){return s.default(e.style)}),f=null==t?l.map(function(e){return a.default(e.style)}):t.map(function(e){return a.default(e.style)}),d=g(r,o,i,u,l,c,f,c,f),p=d[0];return{currentStyles:d[1],currentVelocities:d[2],lastIdealStyles:d[3],lastIdealVelocities:d[4],mergedPropsStyles:p}},t.prototype.componentDidMount=function(){this.prevTime=c.default(),this.startAnimationIfNecessary()},t.prototype.componentWillReceiveProps=function(e){this.unreadPropStyles&&this.clearUnreadPropStyle(this.unreadPropStyles);var t=e.styles;this.unreadPropStyles="function"==typeof t?t(_(this.state.mergedPropsStyles,this.unreadPropStyles,this.state.lastIdealStyles)):t,null==this.animationID&&(this.prevTime=c.default(),this.startAnimationIfNecessary())},t.prototype.componentWillUnmount=function(){this.unmounting=!0,null!=this.animationID&&(f.default.cancel(this.animationID),this.animationID=null)},t.prototype.render=function(){var e=_(this.state.mergedPropsStyles,this.unreadPropStyles,this.state.currentStyles),t=this.props.children(e);return t&&p.default.Children.only(t)},t}(p.default.Component);t.default=v,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t,n){for(var r={},o=0;o<e.length;o++)r[e[o].key]=o;for(var i={},o=0;o<t.length;o++)i[t[o].key]=o;for(var a=[],o=0;o<t.length;o++)a[o]=t[o];for(var o=0;o<e.length;o++)if(!Object.prototype.hasOwnProperty.call(i,e[o].key)){var s=n(o,e[o]);null!=s&&a.push(s)}return a.sort(function(e,n){var o=i[e.key],a=i[n.key],s=r[e.key],l=r[n.key];if(null!=o&&null!=a)return i[e.key]-i[n.key];if(null!=s&&null!=l)return r[e.key]-r[n.key];if(null!=o){for(var u=0;u<t.length;u++){var c=t[u].key;if(Object.prototype.hasOwnProperty.call(r,c)){if(o<i[c]&&l>r[c])return-1;if(o>i[c]&&l<r[c])return 1}}return 1}for(var u=0;u<t.length;u++){var c=t[u].key;if(Object.prototype.hasOwnProperty.call(r,c)){if(a<i[c]&&s>r[c])return 1;if(a>i[c]&&s<r[c])return-1}}return-1})},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};t.default=function(e,t){return r({},i,t,{val:e})};var o=function(e){return e&&e.__esModule?e:{default:e}}(n(645)),i=r({},o.default.noWobble,{precision:.01});e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(){0};e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1507);Object.defineProperty(t,"default",{enumerable:!0,get:function(){return function(e){return e&&e.__esModule?e:{default:e}}(r).default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=v(n(47)),i=v(n(11)),a=v(n(4)),s=v(n(5)),l=v(n(12)),u=v(n(13)),c=n(0),f=v(n(1)),d=v(n(82)),p=n(148),m=v(n(1508)),h=v(n(1509)),_=v(n(1511)),g=v(n(1512));function v(e){return e&&e.__esModule?e:{default:e}}var y=function(){return!1},b=function(e){function t(e,n){(0,a.default)(this,t);var r=(0,l.default)(this,(t.__proto__||(0,i.default)(t)).call(this,e,n));r.onKeyDown=function(e){r.mouseSensor.isCapturing()||r.keyboardSensor.onKeyDown(e,r.props)},r.onMouseDown=function(e){r.keyboardSensor.isCapturing()||r.mouseSensor.isCapturing()||r.mouseSensor.onMouseDown(e)},r.onTouchStart=function(e){r.mouseSensor.isCapturing()||r.keyboardSensor.isCapturing()?console.error("mouse or keyboard already listening when attempting to touch drag"):r.touchSensor.onTouchStart(e)},r.onTouchMove=function(e){r.touchSensor.onTouchMove(e)},r.onClick=function(e){r.mouseSensor.onClick(e),r.touchSensor.onClick(e)},r.canStartCapturing=function(e){return!r.isAnySensorCapturing()&&(!!r.canLift(r.props.draggableId)&&(0,m.default)(e,r.props))},r.isAnySensorDragging=function(){return r.sensors.some(function(e){return e.isDragging()})},r.isAnySensorCapturing=function(){return r.sensors.some(function(e){return e.isCapturing()})},r.getProvided=(0,d.default)(function(e,t){return e?{onMouseDown:r.onMouseDown,onKeyDown:r.onKeyDown,onTouchStart:r.onTouchStart,onTouchMove:r.onTouchMove,onClick:r.onClick,tabIndex:0,"aria-grabbed":t,"data-react-beautiful-dnd-drag-handle":r.styleContext,draggable:!1,onDragStart:y,onDrop:y}:null});var o={callbacks:r.props.callbacks,getDraggableRef:r.props.getDraggableRef,canStartCapturing:r.canStartCapturing};return r.mouseSensor=(0,h.default)(o),r.keyboardSensor=(0,_.default)(o),r.touchSensor=(0,g.default)(o),r.sensors=[r.mouseSensor,r.keyboardSensor,r.touchSensor],r.styleContext=n[p.styleContextKey],r.canLift=n[p.canLiftContextKey],r}return(0,u.default)(t,e),(0,s.default)(t,[{key:"componentWillUnmount",value:function(){var e=this;this.sensors.forEach(function(t){var n=t.isCapturing(),r=t.isDragging();n&&t.kill(),r&&e.props.callbacks.onCancel()})}},{key:"componentWillReceiveProps",value:function(e){var t=this;this.isAnySensorCapturing()&&(this.props.isDragging&&!e.isDragging?this.sensors.forEach(function(e){e.isCapturing()&&e.kill()}):e.isEnabled||this.sensors.forEach(function(e){if(e.isCapturing()){var n=e.isDragging();e.kill(),n&&t.props.callbacks.onCancel()}}))}},{key:"render",value:function(){var e=this.props,t=e.children,n=e.isEnabled;return t(this.getProvided(n,this.isAnySensorDragging()))}}]),t}(c.Component);b.contextTypes=(r={},(0,o.default)(r,p.styleContextKey,f.default.string.isRequired),(0,o.default)(r,p.canLiftContextKey,f.default.func.isRequired),r),t.default=b},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=t.interactiveTagNames=["input","button","textarea","select","option","optgroup","video","audio"];t.default=function(e,t){if(t.canDragInteractiveElements)return!0;var n=e.target,o=e.currentTarget;return!(n instanceof HTMLElement&&o instanceof HTMLElement)||!(-1!==r.indexOf(n.tagName.toLowerCase()))&&!function e(t,n){if(null==n)return!1;var r=n.getAttribute("contenteditable");return"true"===r||""===r||n!==t&&e(t,n.parentElement)}(o,n)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=f(n(14)),o=f(n(37)),i=f(n(308)),a=f(n(441)),s=f(n(1510)),l=f(n(442)),u=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(443)),c=f(n(646));function f(e){return e&&e.__esModule?e:{default:e}}var d=function(){};t.default=function(e){var t=e.callbacks,n=e.getDraggableRef,f=e.canStartCapturing,p={isDragging:!1,pending:null,preventClick:!1},m=function(e){var t=(0,o.default)({},p,e);p=t},h=function(){return p.isDragging},_=function(){return Boolean(p.pending||p.isDragging)},g=(0,a.default)(t,h),v=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d;w(),m({isDragging:!1,pending:null}),e()},y=function(){m({preventClick:!1}),v()},b=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d;p.pending?y():v(e)},E=function(){b(t.onCancel)},C={mousemove:function(e){var n=e.button,r=e.clientX,o=e.clientY;if(0===n){var i={x:r,y:o};p.isDragging?g.move(i):p.pending?(0,s.default)(p.pending,i)&&function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d;m({pending:null,isDragging:!0,preventClick:!0}),e()}(function(){return t.onLift({client:i,isScrollAllowed:!0})}):console.error("invalid state")}},mouseup:function(){p.pending?y():v(t.onDrop)},mousedown:function(){v(t.onCancel)},keydown:function(e){if(e.keyCode===u.escape)return(0,i.default)(e),void E();(0,c.default)(e)},resize:E,scroll:function(){p.pending?y():g.windowScrollMove()},webkitmouseforcechanged:function(e){if(null!=e.webkitForce&&null!=MouseEvent.WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN){var t=MouseEvent.WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN;e.webkitForce>=t&&E()}else console.error("handling a mouse force changed event when it is not supported")}},S=(0,r.default)(C),D=function(){var e=(0,l.default)(n());S.forEach(function(t){"scroll"!==t?e.addEventListener(t,C[t]):e.addEventListener(t,C.scroll,{passive:!0})})},w=function(){var e=(0,l.default)(n());S.forEach(function(t){return e.removeEventListener(t,C[t])})};return{onMouseDown:function(e){if(f(e)){if(_())return console.error("should not be able to perform a mouse down while a drag or pending drag is occurring"),void E();var t=e.button,n=e.clientX,r=e.clientY;0===t&&((0,i.default)(e),function(e){m({pending:e,isDragging:!1}),D()}({x:n,y:r}))}},onClick:function(e){p.preventClick&&(m({preventClick:!1}),(0,i.default)(e))},kill:b,isCapturing:_,isDragging:h}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=t.sloppyClickThreshold=5;t.default=function(e,t){return Math.abs(t.x-e.x)>=r||Math.abs(t.y-e.y)>=r}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(14)),o=c(n(308)),i=c(n(441)),a=c(n(646)),s=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(443)),l=c(n(442)),u=c(n(647));function c(e){return e&&e.__esModule?e:{default:e}}var f=function(){};t.default=function(e){var t=e.callbacks,n=e.getDraggableRef,c=e.canStartCapturing,d={isDragging:!1},p=function(e){d=e},m=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f;E(),p({isDragging:!1}),e()},h=function(){m(t.onCancel)},_=function(){return d.isDragging},g=(0,i.default)(t,_),v={mousedown:h,resize:h,scroll:h},y=(0,r.default)(v),b=function(){var e=(0,l.default)(n());y.forEach(function(t){e.addEventListener(t,v[t])})},E=function(){var e=(0,l.default)(n());y.forEach(function(t){e.removeEventListener(t,v[t])})};return{onKeyDown:function(e,r){var i=r.direction;if(_()){if(e.keyCode===s.escape)return(0,o.default)(e),void h();if(e.keyCode===s.space)return(0,o.default)(e),void m(t.onDrop);if(!i)return console.error("Cannot handle keyboard movement event if direction is not provided"),(0,o.default)(e),void h();var l=function(e){"vertical"!==i?e.horizontal():e.vertical()};if(e.keyCode===s.arrowDown)return(0,o.default)(e),void l({vertical:g.moveForward,horizontal:g.crossAxisMoveForward});if(e.keyCode===s.arrowUp)return(0,o.default)(e),void l({vertical:g.moveBackward,horizontal:g.crossAxisMoveBackward});if(e.keyCode===s.arrowRight)return(0,o.default)(e),void l({vertical:g.crossAxisMoveForward,horizontal:g.moveForward});e.keyCode===s.arrowLeft&&((0,o.default)(e),l({vertical:g.crossAxisMoveBackward,horizontal:g.moveBackward})),(0,a.default)(e)}else{if(!c(e))return;if(e.keyCode!==s.space)return;(0,o.default)(e);var d=n();if(!d)return void console.error("cannot start a keyboard drag without a draggable ref");var v=(0,u.default)(d);!function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f;p({isDragging:!0}),b(),e()}(function(){return t.onLift({client:v,isScrollAllowed:!1})})}},kill:function(){return m()},isDragging:_,isCapturing:_}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.forcePressThreshold=t.timeForLongPress=void 0;var r=l(n(14)),o=l(n(37)),i=l(n(308)),a=l(n(441)),s=l(n(442));function l(e){return e&&e.__esModule?e:{default:e}}var u=t.timeForLongPress=150,c=t.forcePressThreshold=.15,f=function(){},d={isDragging:!1,pending:null,hasMoved:!1,preventClick:!1,longPressTimerId:null};t.default=function(e){var t=e.callbacks,n=e.getDraggableRef,l=e.canStartCapturing,p=d,m=function(e){p=(0,o.default)({},p,e)},h=function(){return p.isDragging},_=function(){return Boolean(p.pending||p.isDragging||p.longPressTimerId)},g=(0,a.default)(t,h),v=function(){var e=p.pending;if(!e)return console.error("cannot start a touch drag without a pending position"),void E();m({isDragging:!0,hasMoved:!1,pending:null,longPressTimerId:null}),t.onLift({client:e,isScrollAllowed:!1})},y=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f;T(),m((0,o.default)({},d,{preventClick:!0})),e()},b=function(){clearTimeout(p.longPressTimerId),T(),m(d)},E=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f;p.pending?b():y(e)},C=function(){E(t.onCancel)},S={touchmove:function(e){if(p.pending)b();else{p.hasMoved||m({hasMoved:!0}),(0,i.default)(e);var t=e.touches[0],n={x:t.clientX,y:t.clientY};g.move(n)}},touchend:function(e){p.pending?b():(y(t.onDrop),(0,i.default)(e))},touchcancel:C,touchstart:function(){h()&&(console.error("touch start fired while already dragging"),C())},orientationchange:C,resize:C,scroll:C,contextmenu:i.default,keydown:C,touchforcechange:function(e){p.hasMoved||e.touches[0].force>=c&&C()}},D=(0,r.default)(S),w=function(){var e=(0,s.default)(n());D.forEach(function(t){var n=S[t];"touchmove"!==t?e.addEventListener(t,n):e.addEventListener(t,n,{passive:!1})})},T=function(){var e=(0,s.default)(n());D.forEach(function(t){return e.removeEventListener(t,S[t])})};return{onTouchStart:function(e){if(l(e)){if(_())return console.error("should not be able to perform a touch start while a drag or pending drag is occurring"),void C();e.stopPropagation(),function(e){var t=e.touches[0],n={x:t.clientX,y:t.clientY},r=setTimeout(v,u);m({longPressTimerId:r,pending:n,isDragging:!1,hasMoved:!1}),w()}(e)}},onTouchMove:function(){p.pending&&b()},onClick:function(e){p.preventClick&&((0,i.default)(e),m(d))},kill:E,isCapturing:_,isDragging:h}}},function(e,t,n){"use strict";var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var a=n(650),s=n(141),l=n(1514),u={pure:!0,withProps:!1};e.exports={create:function(e,t){!function(e){e.getStores||s(!1),e.calculateState||s(!1)}(e);var n=r({},u,t||{}),c=function(t){function r(i){o(this,r),t.call(this,i),this.state=n.withProps?e.calculateState(null,i):e.calculateState(null,void 0)}return i(r,t),r.prototype.componentDidMount=function(){var r=this;t.prototype.componentDidMount&&t.prototype.componentDidMount.call(this);var o=e.getStores(),i=!1,s=function(){i=!0};this._fluxContainerSubscriptions=o.map(function(e){return e.addListener(s)}),this._fluxContainerStoreGroup=new a(o,function(){i&&r.setState(function(t){return n.withProps?e.calculateState(t,r.props):e.calculateState(t,void 0)}),i=!1})},r.prototype.componentWillReceiveProps=function(r,o){t.prototype.componentWillReceiveProps&&t.prototype.componentWillReceiveProps.call(this,r,o),n.withProps&&(n.pure&&l(this.props,r)||this.setState(function(t){return e.calculateState(t,r)}))},r.prototype.componentWillUnmount=function(){t.prototype.componentWillUnmount&&t.prototype.componentWillUnmount.call(this),this._fluxContainerStoreGroup.release();var e=this._fluxContainerSubscriptions,n=Array.isArray(e),r=0;for(e=n?e:e[Symbol.iterator]();;){var o;if(n){if(r>=e.length)break;o=e[r++]}else{if((r=e.next()).done)break;o=r.value}o.remove()}this._fluxContainerSubscriptions=[]},r}(e),f=n.pure?function(e){return function(e){function t(){o(this,t),e.apply(this,arguments)}return i(t,e),t.prototype.shouldComponentUpdate=function(e,t){return!l(this.props,e)||!l(this.state,t)},t}(e)}(c):c,d=e.displayName||e.name;return f.displayName="FluxContainer("+d+")",f}}},function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty;e.exports=function(e,t){if(e===t)return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),o=Object.keys(t);if(n.length!==o.length)return!1;for(var i=r.bind(t),a=0;a<n.length;a++)if(!i(n[a])||e[n[a]]!==t[n[a]])return!1;return!0}},function(e,t,n){"use strict";var r=n(651),o=n(6),i=n(141),a=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),e.apply(this,arguments)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.getInitialState=function(){return o.Map()},t.prototype.at=function(e){return this.has(e)||i(!1),this.get(e)},t.prototype.has=function(e){return this.getState().has(e)},t.prototype.get=function(e){return this.getState().get(e)},t.prototype.getAll=function(e,t){var n=this,r=o.Set(e),i=t||o.Map();return i.withMutations(function(e){var t=i,o=Array.isArray(t),a=0;for(t=o?t:t[Symbol.iterator]();;){var s;if(o){if(a>=t.length)break;s=t[a++]}else{if((a=t.next()).done)break;s=a.value}var l=s[0];r.has(l)&&n.has(l)||e.delete(l)}var u=r,c=Array.isArray(u),f=0;for(u=c?u:u[Symbol.iterator]();;){var d;if(c){if(f>=u.length)break;d=u[f++]}else{if((f=u.next()).done)break;d=f.value}var p=d;n.has(p)&&e.set(p,n.at(p))}})},t}(r);e.exports=a},function(e,t,n){var r={EventEmitter:n(1517),EmitterSubscription:n(653)};e.exports=r},function(e,t,n){"use strict";var r=n(653),o=n(1519),i=n(97),a=n(23),s=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._subscriber=new o,this._currentSubscription=null}return e.prototype.addListener=function(e,t,n){return this._subscriber.addSubscription(e,new r(this._subscriber,t,n))},e.prototype.once=function(e,t,n){var r=this;return this.addListener(e,function(){r.removeCurrentListener(),t.apply(n,arguments)})},e.prototype.removeAllListeners=function(e){this._subscriber.removeAllSubscriptions(e)},e.prototype.removeCurrentListener=function(){this._currentSubscription||a(!1),this._subscriber.removeSubscription(this._currentSubscription)},e.prototype.listeners=function(e){var t=this._subscriber.getSubscriptionsForType(e);return t?t.filter(i.thatReturnsTrue).map(function(e){return e.listener}):[]},e.prototype.emit=function(e){var t=this._subscriber.getSubscriptionsForType(e);if(t){for(var n=Object.keys(t),r=0;r<n.length;r++){var o=t[n[r]];o&&(this._currentSubscription=o,this.__emitToSubscription.apply(this,[o].concat(Array.prototype.slice.call(arguments))))}this._currentSubscription=null}},e.prototype.__emitToSubscription=function(e,t){var n=Array.prototype.slice.call(arguments,2);e.listener.apply(e.context,n)},e}();e.exports=s},function(e,t,n){"use strict";var r=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.subscriber=t}return e.prototype.remove=function(){this.subscriber&&(this.subscriber.removeSubscription(this),this.subscriber=null)},e}();e.exports=r},function(e,t,n){"use strict";var r=n(23),o=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._subscriptionsForType={},this._currentSubscription=null}return e.prototype.addSubscription=function(e,t){t.subscriber!==this&&r(!1),this._subscriptionsForType[e]||(this._subscriptionsForType[e]=[]);var n=this._subscriptionsForType[e].length;return this._subscriptionsForType[e].push(t),t.eventType=e,t.key=n,t},e.prototype.removeAllSubscriptions=function(e){void 0===e?this._subscriptionsForType={}:delete this._subscriptionsForType[e]},e.prototype.removeSubscription=function(e){var t=e.eventType,n=e.key,r=this._subscriptionsForType[t];r&&delete r[n]},e.prototype.getSubscriptionsForType=function(e){return this._subscriptionsForType[e]},e}();e.exports=o},function(e,t,n){"use strict";var r=n(141);e.exports=function(e,t){r(!1)}},function(e,t,n){"use strict";var r=n(650),o=n(141);e.exports=function(e){return{getInitialState:function(){return function(e){e.constructor.calculateState||o(!1)}(this),this.constructor.calculateState(null)},componentDidMount:function(){var t=this,n=!1,o=function(){n=!0};this._fluxMixinSubscriptions=e.map(function(e){return e.addListener(o)}),this._fluxMixinStoreGroup=new r(e,function(){n&&t.setState(function(e){return t.constructor.calculateState(t.state)}),n=!1})},componentWillUnmount:function(){this._fluxMixinStoreGroup.release();var e=this._fluxMixinSubscriptions,t=Array.isArray(e),n=0;for(e=t?e:e[Symbol.iterator]();;){var r;if(t){if(n>=e.length)break;r=e[n++]}else{if((n=e.next()).done)break;r=n.value}r.remove()}this._fluxMixinSubscriptions=[]}}}},function(e,t,n){n(1523),e.exports=9007199254740991},function(e,t,n){var r=n(26);r(r.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(e,t,n){"use strict";var r=n(2),o=n(0),i=n(10),a=n(27);e.exports=o.createClass({displayName:"LoginBox",propTypes:{},onLoginClick:function(){i.dispatch({action:"start_login"})},onRegisterClick:function(){i.dispatch({action:"start_registration"})},render:function(){var e=o.createElement("div",{className:"mx_LoginBox_loginButton_wrapper"},o.createElement(a,{className:"mx_LoginBox_loginButton",element:"button",onClick:this.onLoginClick},(0,r._t)("Login")),o.createElement(a,{className:"mx_LoginBox_registerButton",element:"button",onClick:this.onRegisterClick},(0,r._t)("Register")));return o.createElement("div",{className:"mx_LoginBox"},e)}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=L(n(37)),o=L(n(19)),i=n(9),a=L(i),s=L(n(126)),l=L(n(67)),u=L(n(40)),c=L(n(0)),f=L(n(1)),d=L(n(17)),p=L(n(90)),m=n(1526),h=L(n(8)),_=L(n(71)),g=L(n(39)),v=P(n(1532)),y=L(n(10)),b=L(n(16)),E=L(n(174)),C=L(n(3)),S=n(631),D=P(n(146)),w=L(n(129)),T=P(n(658)),x=L(n(648)),R=L(n(427)),k=L(n(1534)),N=n(2),I=n(22),O=L(I),A=n(1535),M=n(248);function P(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function L(e){return e&&e.__esModule?e:{default:e}}n(1536),a.default.config({warnings:!1});var F={LOADING:0,LOGIN:1,REGISTER:2,POST_REGISTRATION:3,FORGOT_PASSWORD:4,LOGGING_IN:5,LOGGED_IN:6},U=["view_user_settings","view_create_chat","view_create_room","view_create_group"];t.default=c.default.createClass({statics:{VIEWS:F},displayName:"MatrixChat",propTypes:{config:f.default.object,ConferenceHandler:f.default.any,onNewScreen:f.default.func,registrationUrl:f.default.string,enableGuest:f.default.bool,realQueryParams:f.default.object,startingFragmentQueryParams:f.default.object,onTokenLoginCompleted:f.default.func,initialScreenAfterLogin:f.default.shape({screen:f.default.string.isRequired,params:f.default.object}),defaultDeviceDisplayName:f.default.string,makeRegistrationUrl:f.default.func.isRequired},childContextTypes:{appConfig:f.default.object},AuxPanel:{RoomSettings:"room_settings"},getChildContext:function(){return{appConfig:this.props.config}},getInitialState:function(){return{view:F.LOADING,page_type:null,currentRoomId:null,viewUserId:null,collapseLhs:!1,collapseRhs:!1,leftDisabled:!1,middleDisabled:!1,rightDisabled:!1,version:null,newVersion:null,hasNewVersion:!1,newVersionReleaseNotes:null,checkingForUpdate:null,showCookieBar:!1,register_client_secret:null,register_session_id:null,register_hs_url:null,register_is_url:null,register_id_sid:null,hideToSRUsers:!1,syncError:null}},getDefaultProps:function(){return{realQueryParams:{},startingFragmentQueryParams:{},config:{},onTokenLoginCompleted:function(){}}},getCurrentHsUrl:function(){return this.state.register_hs_url?this.state.register_hs_url:h.default.get()?h.default.get().getHomeserverUrl():window.localStorage&&window.localStorage.getItem("mx_hs_url")?window.localStorage.getItem("mx_hs_url"):this.getDefaultHsUrl()},getDefaultHsUrl:function(){return this.props.config.default_hs_url||"https://matrix.org"},getFallbackHsUrl:function(){return this.props.config.fallback_hs_url},getCurrentIsUrl:function(){return this.state.register_is_url?this.state.register_is_url:h.default.get()?h.default.get().getIdentityServerUrl():window.localStorage&&window.localStorage.getItem("mx_is_url")?window.localStorage.getItem("mx_is_url"):this.getDefaultIsUrl()},getDefaultIsUrl:function(){return this.props.config.default_is_url||"https://vector.im"},componentWillMount:function(){g.default.put(this.props.config),this.firstSyncComplete=!1,this.firstSyncPromise=a.default.defer(),this.props.config.sync_timeline_limit&&(h.default.opts.initialSyncLimit=this.props.config.sync_timeline_limit);var e=null;if(this.props.config.teamTokenMap){var t=window.location.pathname.split("/")[1];t&&this.props.config.teamTokenMap.hasOwnProperty(t)&&(e=this.props.config.teamTokenMap[t])}this.props.startingFragmentQueryParams.team_token&&window.sessionStorage.setItem("mx_team_token",this.props.startingFragmentQueryParams.team_token),this._teamToken=e||window.localStorage.getItem("mx_team_token")||window.sessionStorage.getItem("mx_team_token"),"undefined"===this._teamToken&&(this._teamToken=void 0),this._teamToken&&console.info("Team token set to "+this._teamToken);var n=this.props.startingFragmentQueryParams.hs_url;n&&(console.log("Setting register_hs_url ",n),this.setState({register_hs_url:n}));var r=this.props.startingFragmentQueryParams.is_url;r&&(console.log("Setting register_is_url ",r),this.setState({register_is_url:r})),this._screenAfterLogin=this.props.initialScreenAfterLogin,this._windowWidth=1e4,this.handleResize(),window.addEventListener("resize",this.handleResize),this._pageChanging=!1,E.default.tint()},componentDidMount:function(){var e=this;this.dispatcherRef=y.default.register(this.onAction),this.focusComposer=!1,this.onAliasClick&&(w.default.onAliasClick=this.onAliasClick),this.onUserClick&&(w.default.onUserClick=this.onUserClick),this.onGroupClick&&(w.default.onGroupClick=this.onGroupClick);var t=this.props.config.teamServerConfig||{};T.initRtsClient(t.teamServerURL),T.attemptTokenLogin(this.props.realQueryParams).then(function(t){if(t)e.props.onTokenLoginCompleted();else{var n=e._screenAfterLogin?e._screenAfterLogin.screen:null;if("login"!==n&&"register"!==n&&"forgot_password"!==n)return a.default.resolve().then(function(){return T.loadSession({fragmentQueryParams:e.props.startingFragmentQueryParams,enableGuest:e.props.enableGuest,guestHsUrl:e.getCurrentHsUrl(),guestIsUrl:e.getCurrentIsUrl(),defaultDeviceDisplayName:e.props.defaultDeviceDisplayName})}).then(function(e){e||y.default.dispatch({action:"start_login"})});e._showScreenAfterLogin()}}),O.default.getValue("showCookieBar")&&this.setState({showCookieBar:!0}),O.default.getValue("analyticsOptIn")&&p.default.enable()},componentWillUnmount:function(){T.stopMatrixClient(),y.default.unregister(this.dispatcherRef),window.removeEventListener("focus",this.onFocus),window.removeEventListener("resize",this.handleResize)},componentWillUpdate:function(e,t){this.shouldTrackPageChange(this.state,t)&&this.startPageChangeTimer()},componentDidUpdate:function(e,t){if(this.shouldTrackPageChange(t,this.state)){var n=this.stopPageChangeTimer();p.default.trackPageChange(n)}this.focusComposer&&(y.default.dispatch({action:"focus_composer"}),this.focusComposer=!1)},startPageChangeTimer:function(){if(!performance||!performance.mark)return null;this._pageChanging?console.warn("MatrixChat.startPageChangeTimer: timer already started"):(this._pageChanging=!0,performance.mark("riot_MatrixChat_page_change_start"))},stopPageChangeTimer:function(){if(!performance||!performance.mark)return null;if(this._pageChanging){this._pageChanging=!1,performance.mark("riot_MatrixChat_page_change_stop"),performance.measure("riot_MatrixChat_page_change_delta","riot_MatrixChat_page_change_start","riot_MatrixChat_page_change_stop"),performance.clearMarks("riot_MatrixChat_page_change_start"),performance.clearMarks("riot_MatrixChat_page_change_stop");var e=performance.getEntriesByName("riot_MatrixChat_page_change_delta").pop();return e?e.duration:null}console.warn("MatrixChat.stopPageChangeTimer: timer not started")},shouldTrackPageChange:function(e,t){return e.currentRoomId!==t.currentRoomId||e.view!==t.view||e.page_type!==t.page_type},setStateForNewView:function(e){if(void 0===e.view)throw new Error("setStateForNewView with no view!");var t={viewUserId:null};(0,u.default)(t,e),this.setState(t)},onAction:function(e){var t=this,n=C.default.getComponent("dialogs.ErrorDialog"),r=C.default.getComponent("dialogs.QuestionDialog");if(h.default.get()&&h.default.get().isGuest()&&U.includes(e.action))return y.default.dispatch({action:"do_after_sync_prepared",deferred_action:e}),void y.default.dispatch({action:"require_registration"});switch(e.action){case"logout":T.logout();break;case"require_registration":(0,A.startAnyRegistrationFlow)(e);break;case"start_registration":this._startRegistration(e.params||{});break;case"start_login":this.setStateForNewView({view:F.LOGIN}),this.notifyNewScreen("login");break;case"start_post_registration":this.setState({view:F.POST_REGISTRATION});break;case"start_password_recovery":this.setStateForNewView({view:F.FORGOT_PASSWORD}),this.notifyNewScreen("forgot_password");break;case"start_chat":(0,R.default)({dmUserId:e.user_id});break;case"leave_room":this._leaveRoom(e.room_id);break;case"reject_invite":b.default.createTrackedDialog("Reject invitation","",r,{title:(0,N._t)("Reject invitation"),description:(0,N._t)("Are you sure you want to reject the invitation?"),onFinished:function(r){if(r){var o=C.default.getComponent("elements.Spinner"),i=b.default.createDialog(o,null,"mx_Dialog_spinner");h.default.get().leave(e.room_id).done(function(){i.close(),t.state.currentRoomId===e.room_id&&y.default.dispatch({action:"view_next_room"})},function(e){i.close(),b.default.createTrackedDialog("Failed to reject invitation","",n,{title:(0,N._t)("Failed to reject invitation"),description:e.toString()})})}}});break;case"view_user":this.state.collapseRhs&&setTimeout(function(){y.default.dispatch({action:"show_right_panel"}),y.default.dispatch({action:"view_user",member:e.member})},0);break;case"view_room":this._viewRoom(e);break;case"view_prev_room":this._viewNextRoom(-1);break;case"view_next_room":this._viewNextRoom(1);break;case"view_indexed_room":this._viewIndexedRoom(e.roomIndex);break;case"view_user_settings":this._setPage(x.default.UserSettings),this.notifyNewScreen("settings");break;case"close_settings":this.setState({leftDisabled:!1,rightDisabled:!1,middleDisabled:!1}),this.state.page_type===x.default.UserSettings&&(this.state.currentRoomId?this._viewRoom({room_id:this.state.currentRoomId}):this.state.currentGroupId?this._viewGroup({group_id:this.state.currentGroupId}):this._viewHome());break;case"view_create_room":this._createRoom();break;case"view_create_group":var o=C.default.getComponent("dialogs.CreateGroupDialog");b.default.createTrackedDialog("Create Community","",o);break;case"view_room_directory":this._setPage(x.default.RoomDirectory),this.notifyNewScreen("directory");break;case"view_my_groups":this._setPage(x.default.MyGroups),this.notifyNewScreen("groups");break;case"view_group":this._viewGroup(e);break;case"view_home_page":this._viewHome();break;case"view_set_mxid":this._setMxId(e);break;case"view_start_chat_or_reuse":this._chatCreateOrReuse(e.user_id,e.go_home_on_cancel);break;case"view_create_chat":(0,S.showStartChatInviteDialog)();break;case"view_invite":(0,S.showRoomInviteDialog)(e.roomId);break;case"notifier_enabled":this.forceUpdate();break;case"hide_left_panel":this.setState({collapseLhs:!0});break;case"show_left_panel":this.setState({collapseLhs:!1});break;case"hide_right_panel":this.setState({collapseRhs:!0});break;case"show_right_panel":this.setState({collapseRhs:!1});break;case"panel_disable":this.setState({leftDisabled:e.leftDisabled||e.sideDisabled||!1,middleDisabled:e.middleDisabled||!1,rightDisabled:e.rightDisabled||e.sideDisabled||!1});break;case"set_theme":this._onSetTheme(e.value);break;case"on_logging_in":this.setStateForNewView({view:F.LOGGING_IN});break;case"on_logged_in":this._onLoggedIn(e.teamToken);break;case"on_logged_out":this._onLoggedOut();break;case"will_start_client":this.setState({ready:!1},function(){t._onWillStartClient()});break;case"client_started":this._onClientStarted();break;case"new_version":this.onVersion(e.currentVersion,e.newVersion,e.releaseNotes);break;case"check_updates":this.setState({checkingForUpdate:e.value});break;case"send_event":this.onSendEvent(e.room_id,e.event);break;case"aria_hide_main_app":this.setState({hideToSRUsers:!0});break;case"aria_unhide_main_app":this.setState({hideToSRUsers:!1});break;case"accept_cookies":O.default.setValue("analyticsOptIn",null,I.SettingLevel.DEVICE,!0),O.default.setValue("showCookieBar",null,I.SettingLevel.DEVICE,!1),this.setState({showCookieBar:!1}),p.default.enable();break;case"reject_cookies":O.default.setValue("analyticsOptIn",null,I.SettingLevel.DEVICE,!1),O.default.setValue("showCookieBar",null,I.SettingLevel.DEVICE,!1),this.setState({showCookieBar:!1})}},_setPage:function(e){this.setState({page_type:e})},_startRegistration:function(e){var t={view:F.REGISTER};e.client_secret&&e.session_id&&e.hs_url&&e.is_url&&e.sid&&(t.register_client_secret=e.client_secret,t.register_session_id=e.session_id,t.register_hs_url=e.hs_url,t.register_is_url=e.is_url,t.register_id_sid=e.sid),this.setStateForNewView(t),this.notifyNewScreen("register")},_viewNextRoom:function(e){var t=v.mostRecentActivityFirst(h.default.get().getRooms());if(t.length<2)y.default.dispatch({action:"view_home_page"});else{for(var n=-1,r=0;r<t.length;++r)if(t[r].roomId==this.state.currentRoomId){n=r;break}(n=(n+e)%t.length)<0&&(n=t.length-1),y.default.dispatch({action:"view_room",room_id:t[n].roomId})}},_viewIndexedRoom:function(e){var t=v.mostRecentActivityFirst(h.default.get().getRooms());t[e]&&y.default.dispatch({action:"view_room",room_id:t[e].roomId})},_viewRoom:function(e){var t=this;this.focusComposer=!0;var n={currentRoomId:e.room_id||null,page_type:x.default.RoomView,thirdPartyInvite:e.third_party_invite,roomOobData:e.oob_data};e.room_alias?console.log("Switching to room alias "+e.room_alias+" at event "+e.event_id):console.log("Switching to room id "+e.room_id+" at event "+e.event_id);var r=a.default.resolve(null);if(!this.firstSyncComplete){if(!this.firstSyncPromise)return void console.warn("Cannot view a room before first sync. room_id:",e.room_id);r=this.firstSyncPromise.promise}r.done(function(){var r=e.room_alias||e.room_id,o=h.default.get().getRoom(e.room_id);if(o){var i=D.getDisplayAliasForRoom(o);i&&(r=i),localStorage&&localStorage.setItem("mx_last_room_id",o.roomId)}e.event_id&&e.highlighted&&(r+="/"+e.event_id),t.notifyNewScreen("room/"+r),n.ready=!0,t.setState(n)})},_viewGroup:function(e){var t=e.group_id;this.setState({currentGroupId:t,currentGroupIsNew:e.group_is_new}),this._setPage(x.default.GroupView),this.notifyNewScreen("group/"+t)},_viewHome:function(){this._setPage(x.default.HomePage),this.notifyNewScreen("home")},_setMxId:function(e){var t=this,n=C.default.getComponent("views.dialogs.SetMxIdDialog"),r=b.default.createTrackedDialog("Set MXID","",n,{homeserverUrl:h.default.get().getHomeserverUrl(),onFinished:function(n,r){if(!n)return y.default.dispatch({action:"cancel_after_sync_prepared"}),void(e.go_home_on_cancel&&y.default.dispatch({action:"view_home_page"}));t.onRegistered(r)},onDifferentServerClicked:function(e){y.default.dispatch({action:"start_registration"}),r()},onLoginClick:function(e){y.default.dispatch({action:"start_login"}),r()}}).close},_createRoom:function(){var e=C.default.getComponent("dialogs.CreateRoomDialog");b.default.createTrackedDialog("Create Room","",e,{onFinished:function(e,t,n){if(e){var r={};t&&(r.name=t),n&&(r.creation_content={"m.federate":!1}),(0,R.default)({createOpts:r}).done()}}})},_chatCreateOrReuse:function(e,t){void 0===t&&(t=!0);var n=C.default.getComponent("views.dialogs.ChatCreateOrReuseDialog");if(h.default.get().isGuest())return e!==this.props.config.welcomeUserId&&y.default.dispatch({action:"do_after_sync_prepared",deferred_action:{action:"view_start_chat_or_reuse",user_id:e}}),void y.default.dispatch({action:"require_registration",go_home_on_cancel:!0});var r=b.default.createTrackedDialog("Chat create or reuse","",n,{userId:e,onFinished:function(e){!e&&t&&y.default.dispatch({action:"view_home_page"})},onNewDMClick:function(){y.default.dispatch({action:"start_chat",user_id:e}),r(!0)},onExistingRoomSelected:function(e){y.default.dispatch({action:"view_room",room_id:e}),r(!0)}}).close},_leaveRoomWarnings:function(e){var t=h.default.get().getRoom(e).currentState.getStateEvents("m.room.join_rules",""),n=[];t&&("public"!==t.getContent().join_rule&&n.push(c.default.createElement("span",{className:"warning",key:"non_public_warning"}," ",(0,N._t)("This room is not public. You will not be able to rejoin without an invite."))));return n},_leaveRoom:function(e){var t=this,n=C.default.getComponent("dialogs.QuestionDialog"),r=C.default.getComponent("dialogs.ErrorDialog"),o=h.default.get().getRoom(e),i=this._leaveRoomWarnings(e);b.default.createTrackedDialog("Leave room","",n,{title:(0,N._t)("Leave room"),description:c.default.createElement("span",null,(0,N._t)("Are you sure you want to leave the room '%(roomName)s'?",{roomName:o.name}),i),button:(0,N._t)("Leave"),onFinished:function(n){if(n){var o=h.default.get().leave(e),i=C.default.getComponent("elements.Spinner"),a=b.default.createDialog(i,null,"mx_Dialog_spinner");o.then(function(){a.close(),t.state.currentRoomId===e&&y.default.dispatch({action:"view_next_room"})},function(t){a.close(),console.error("Failed to leave room "+e+" "+t);var n=(0,N._t)("Failed to leave room"),o=(0,N._t)("Server may be unavailable, overloaded, or you hit a bug.");"M_CANNOT_LEAVE_SERVER_NOTICE_ROOM"==t.errcode?(n=(0,N._t)("Can't leave Server Notices room"),o=(0,N._t)("This room is used for important messages from the Homeserver, so you cannot leave it.")):t&&t.message&&(o=t.message),b.default.createTrackedDialog("Failed to leave room","",r,{title:n,description:o})})}}})},_onSetTheme:function(e){e||(e=O.default.getValue("theme"));for(var t=(0,l.default)(null),n=void 0,r=0;n=document.getElementsByTagName("link")[r];r++){var o=n.getAttribute("href").match(/^bundles\/.*\/theme-(.*)\.css$/);o&&(t[o[1]]=n)}if(!(e in t))throw new Error("Unknown theme "+e);t[e].disabled=!1;var i=function(){t[e].disabled=!1,(0,s.default)(t).forEach(function(n){n!=t[e]&&(n.disabled=!0)}),E.default.setTheme(e)},a=!1;t[e].onload=function(){i()};for(var u=0;u<document.styleSheets.length;u++){var c=document.styleSheets[u];if(c&&c.href===t[e].href){a=!0;break}}a&&(t[e].onload=void 0,i())},_onLoggedIn:function(){var e=(0,i.coroutine)(o.default.mark(function e(t){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(this.setState({view:F.LOGGED_IN}),!t){e.next=6;break}this._teamToken=t,y.default.dispatch({action:"view_home_page"}),e.next=18;break;case 6:if(!this._is_registered){e.next=17;break}if(this._is_registered=!1,!this.props.config.welcomeUserId||!(0,N.getCurrentLanguage)().startsWith("en")){e.next=14;break}return e.next=11,(0,i.resolve)((0,R.default)({dmUserId:this.props.config.welcomeUserId,andView:!this.state.currentRoomId}));case 11:if(!e.sent){e.next=14;break}return e.abrupt("return");case 14:y.default.dispatch({action:"view_home_page"}),e.next=18;break;case 17:this._showScreenAfterLogin();case 18:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),_showScreenAfterLogin:function(){this._screenAfterLogin&&this._screenAfterLogin.screen?(this.showScreen(this._screenAfterLogin.screen,this._screenAfterLogin.params),this._screenAfterLogin=null):localStorage&&localStorage.getItem("mx_last_room_id")?y.default.dispatch({action:"view_room",room_id:localStorage.getItem("mx_last_room_id")}):y.default.dispatch({action:"view_home_page"})},_onLoggedOut:function(){this.notifyNewScreen("login"),this.setStateForNewView({view:F.LOGIN,ready:!1,collapseLhs:!1,collapseRhs:!1,currentRoomId:null,page_type:x.default.RoomDirectory}),this._teamToken=null,this._setPageSubtitle()},_onWillStartClient:function(){var e=this;this.firstSyncComplete=!1,this.firstSyncPromise=a.default.defer();var t=h.default.get();t.setCanResetTimelineCallback(function(t){return console.log("Request to reset timeline in room ",t," viewing:",e.state.currentRoomId),t!==e.state.currentRoomId||(!e._loggedInView||!e._loggedInView.child||e._loggedInView.child.canResetTimelineInRoom(t))}),t.on("sync",function(t,n,r){y.default.dispatch({action:"sync_state",prevState:n,state:t}),"ERROR"===t||"RECONNECTING"===t?(r.error instanceof d.default.InvalidStoreError&&T.handleInvalidStoreError(r.error),e.setState({syncError:r.error||!0})):e.state.syncError&&e.setState({syncError:null}),e.updateStatusIndicator(t,n),"SYNCING"===t&&"SYNCING"===n||(console.log("MatrixClient sync state => %s",t),"PREPARED"===t&&(e.firstSyncComplete=!0,e.firstSyncPromise.resolve(),y.default.dispatch({action:"focus_composer"}),e.setState({ready:!0})))}),t.on("Call.incoming",function(e){y.default.dispatch({action:"incoming_call",call:e},!0)}),t.on("Session.logged_out",function(e){if(!T.isLoggingOut()){var t=C.default.getComponent("dialogs.ErrorDialog");b.default.createTrackedDialog("Signed out","",t,{title:(0,N._t)("Signed Out"),description:(0,N._t)("For security, this session has been signed out. Please sign in again.")}),y.default.dispatch({action:"logout"})}}),t.on("no_consent",function(e,n){var r=C.default.getComponent("dialogs.QuestionDialog");b.default.createTrackedDialog("No Consent Dialog","",r,{title:(0,N._t)("Terms and Conditions"),description:c.default.createElement("div",null,c.default.createElement("p",null," ",(0,N._t)("To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.",{homeserverDomain:t.getDomain()}))),button:(0,N._t)("Review terms and conditions"),cancelButton:(0,N._t)("Dismiss"),onFinished:function(e){e&&window.open(n,"_blank")}},null,!0)}),t.on("accountData",function(e){"im.vector.web.settings"===e.getType()&&e.getContent()&&e.getContent().theme&&y.default.dispatch({action:"set_theme",value:e.getContent().theme})});var n=new m.DecryptionFailureTracker(function(e,t){p.default.trackEvent("E2E","Decryption failure",t,e)},function(e){switch(e){case"MEGOLM_UNKNOWN_INBOUND_SESSION_ID":return"olm_keys_not_sent_error";case"OLM_UNKNOWN_MESSAGE_INDEX":return"olm_index_error";case void 0:return"unexpected_error";default:return"unspecified_error"}});n.start(),t.on("Session.logged_out",function(){return n.stop()}),t.on("Event.decrypted",function(e,t){return n.eventDecrypted(e,t)});var r=new k.default(t);t.on("crypto.roomKeyRequest",function(e){r.handleKeyRequest(e)}),t.on("crypto.roomKeyRequestCancellation",function(e){r.handleKeyRequestCancellation(e)}),t.on("Room",function(e){if(h.default.get().isCryptoEnabled()){var t=O.default.getValueAt(I.SettingLevel.ROOM_DEVICE,"blacklistUnverifiedDevices",e.roomId,!0);e.setBlacklistUnverifiedDevices(t)}}),t.on("crypto.warning",function(e){var t=C.default.getComponent("dialogs.ErrorDialog");switch(e){case"CRYPTO_WARNING_OLD_VERSION_DETECTED":b.default.createTrackedDialog("Crypto migrated","",t,{title:(0,N._t)("Old cryptography data detected"),description:(0,N._t)("Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.")})}});var o=O.default.getValue("roomColor");E.default.tint(o.primary_color,o.secondary_color)},_onClientStarted:function(){var e=h.default.get();if(e.isCryptoEnabled()){var t=O.default.getValueAt(I.SettingLevel.DEVICE,"blacklistUnverifiedDevices");e.setGlobalBlacklistUnverifiedDevices(t)}},showScreen:function(e,t){var n=this;if("register"==e)y.default.dispatch({action:"start_registration",params:t});else if("login"==e)y.default.dispatch({action:"start_login",params:t});else if("forgot_password"==e)y.default.dispatch({action:"start_password_recovery",params:t});else if("new"==e)y.default.dispatch({action:"view_create_room"});else if("settings"==e)y.default.dispatch({action:"view_user_settings"});else if("home"==e)y.default.dispatch({action:"view_home_page"});else if("start"==e)this.showScreen("home"),y.default.dispatch({action:"require_registration"});else if("directory"==e)y.default.dispatch({action:"view_room_directory"});else if("groups"==e)y.default.dispatch({action:"view_my_groups"});else if("post_registration"==e)y.default.dispatch({action:"start_post_registration"});else if(0==e.indexOf("room/")){var r=e.substring(5).split("/"),o=r[0],i=r[1],s={inviteSignUrl:t.signurl,invitedEmail:t.email},l={name:t.room_name,avatarUrl:t.room_avatar_url,inviterName:t.inviter_name},u={action:"view_room",event_id:i,highlighted:Boolean(i),third_party_invite:s,oob_data:l};"#"==o[0]?u.room_alias=o:u.room_id=o,this.state.view===F.LOGGED_IN&&y.default.dispatch(u)}else if(0==e.indexOf("user/")){var c=e.substring(5);(this.firstSyncPromise?this.firstSyncPromise.promise:a.default.resolve()).then(function(){if("chat"!==t.action){n._setPage(x.default.UserView),n.notifyNewScreen("user/"+c);var e=new d.default.RoomMember(null,c);y.default.dispatch({action:"view_user",member:e})}else n._chatCreateOrReuse(c)})}else if(0==e.indexOf("group/")){var f=e.substring(6);y.default.dispatch({action:"view_group",group_id:f})}else console.info("Ignoring showScreen for '%s'",e)},notifyNewScreen:function(e){this.props.onNewScreen&&this.props.onNewScreen(e)},onAliasClick:function(e,t){e.preventDefault(),y.default.dispatch({action:"view_room",room_alias:t})},onUserClick:function(e,t){e.preventDefault();var n=new d.default.RoomMember(null,t);n&&y.default.dispatch({action:"view_user",member:n})},onGroupClick:function(e,t){e.preventDefault(),y.default.dispatch({action:"view_group",group_id:t})},onLogoutClick:function(e){y.default.dispatch({action:"logout"}),e.stopPropagation(),e.preventDefault()},handleResize:function(e){this._windowWidth>1e3&&window.innerWidth<=1e3&&y.default.dispatch({action:"hide_left_panel"}),this._windowWidth<=1e3&&window.innerWidth>1e3&&y.default.dispatch({action:"show_left_panel"}),this._windowWidth>820&&window.innerWidth<=820&&y.default.dispatch({action:"hide_right_panel"}),this._windowWidth<=820&&window.innerWidth>820&&y.default.dispatch({action:"show_right_panel"}),this._windowWidth=window.innerWidth},onRoomCreated:function(e){y.default.dispatch({action:"view_room",room_id:e})},onRegisterClick:function(){this.showScreen("register")},onLoginClick:function(){this.showScreen("login")},onForgotPasswordClick:function(){this.showScreen("forgot_password")},onReturnToAppClick:function(){this._onLoggedIn(null)},onRegistered:function(e,t){return this._teamToken=t,this._is_registered=!0,T.setLoggedIn(e)},onFinishPostRegistration:function(){this.setState({view:F.LOGGED_IN}),this.showScreen("settings")},onVersion:function(e,t,n){this.setState({version:e,newVersion:t,hasNewVersion:e!==t,newVersionReleaseNotes:n,checkingForUpdate:null})},onSendEvent:function(e,t){var n=h.default.get();n?n.sendEvent(e,t.getType(),t.getContent()).done(function(){y.default.dispatch({action:"message_sent"})},function(e){y.default.dispatch({action:"message_send_failed"})}):y.default.dispatch({action:"message_send_failed"})},_setPageSubtitle:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";document.title="Riot "+e},updateStatusIndicator:function(e,t){for(var n=0,r=h.default.get().getRooms(),o=0;o<r.length;++o)r[o].hasMembershipState(h.default.get().credentials.userId,"invite")?n++:r[o].getUnreadNotificationCount()&&n++;_.default.get()&&(_.default.get().setErrorStatus("ERROR"===e),_.default.get().setNotificationCount(n));var i="";"ERROR"===e&&(i+="["+(0,N._t)("Offline")+"] "),n>0&&(i+="["+n+"]"),this._setPageSubtitle(i)},onCloseAllSettings:function(){y.default.dispatch({action:"close_settings"})},onServerConfigChange:function(e){var t={};e.hsUrl&&(t.register_hs_url=e.hsUrl),e.isUrl&&(t.register_is_url=e.isUrl),this.setState(t)},_makeRegistrationUrl:function(e){return this.props.startingFragmentQueryParams.referrer&&(e.referrer=this.props.startingFragmentQueryParams.referrer),this.props.makeRegistrationUrl(e)},_collectLoggedInView:function(e){this._loggedInView=e},render:function(){if(this.state.view===F.LOADING||this.state.view===F.LOGGING_IN){var e=C.default.getComponent("elements.Spinner");return c.default.createElement("div",{className:"mx_MatrixChat_splash"},c.default.createElement(e,null))}if(this.state.view===F.POST_REGISTRATION){var t=C.default.getComponent("structures.login.PostRegistration");return c.default.createElement(t,{onComplete:this.onFinishPostRegistration})}if(this.state.view===F.LOGGED_IN){var n=this.state.syncError&&this.state.syncError instanceof d.default.InvalidStoreError;if(this.state.ready&&this.state.page_type&&!n){var o=C.default.getComponent("structures.LoggedInView");return c.default.createElement(o,(0,r.default)({ref:this._collectLoggedInView,matrixClient:h.default.get(),onRoomCreated:this.onRoomCreated,onCloseAllSettings:this.onCloseAllSettings,onRegistered:this.onRegistered,currentRoomId:this.state.currentRoomId,teamToken:this._teamToken,showCookieBar:this.state.showCookieBar},this.props,this.state))}var i=C.default.getComponent("elements.Spinner"),a=void 0;return this.state.syncError&&!n&&(a=c.default.createElement("div",{className:"mx_MatrixChat_syncError"},(0,M.messageForSyncError)(this.state.syncError))),c.default.createElement("div",{className:"mx_MatrixChat_splash"},a,c.default.createElement(i,null),c.default.createElement("a",{href:"#",className:"mx_MatrixChat_splashButtons",onClick:this.onLogoutClick},(0,N._t)("Logout")))}if(this.state.view===F.REGISTER){var s=C.default.getComponent("structures.login.Registration");return c.default.createElement(s,{clientSecret:this.state.register_client_secret,sessionId:this.state.register_session_id,idSid:this.state.register_id_sid,email:this.props.startingFragmentQueryParams.email,referrer:this.props.startingFragmentQueryParams.referrer,defaultHsUrl:this.getDefaultHsUrl(),defaultIsUrl:this.getDefaultIsUrl(),brand:this.props.config.brand,teamServerConfig:this.props.config.teamServerConfig,customHsUrl:this.getCurrentHsUrl(),customIsUrl:this.getCurrentIsUrl(),makeRegistrationUrl:this._makeRegistrationUrl,defaultDeviceDisplayName:this.props.defaultDeviceDisplayName,onLoggedIn:this.onRegistered,onLoginClick:this.onLoginClick,onRegisterClick:this.onRegisterClick,onCancelClick:h.default.get()?this.onReturnToAppClick:null,onServerConfigChange:this.onServerConfigChange})}if(this.state.view===F.FORGOT_PASSWORD){var l=C.default.getComponent("structures.login.ForgotPassword");return c.default.createElement(l,{defaultHsUrl:this.getDefaultHsUrl(),defaultIsUrl:this.getDefaultIsUrl(),customHsUrl:this.getCurrentHsUrl(),customIsUrl:this.getCurrentIsUrl(),onComplete:this.onLoginClick,onRegisterClick:this.onRegisterClick,onLoginClick:this.onLoginClick})}if(this.state.view===F.LOGIN){var u=C.default.getComponent("structures.login.Login");return c.default.createElement(u,{onLoggedIn:T.setLoggedIn,onRegisterClick:this.onRegisterClick,defaultHsUrl:this.getDefaultHsUrl(),defaultIsUrl:this.getDefaultIsUrl(),customHsUrl:this.getCurrentHsUrl(),customIsUrl:this.getCurrentIsUrl(),fallbackHsUrl:this.getFallbackHsUrl(),defaultDeviceDisplayName:this.props.defaultDeviceDisplayName,onForgotPasswordClick:this.onForgotPasswordClick,enableGuest:this.props.enableGuest,onCancelClick:h.default.get()?this.onReturnToAppClick:null,onServerConfigChange:this.onServerConfigChange})}console.error("Unknown view "+this.state.view)}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DecryptionFailureTracker=t.DecryptionFailure=void 0;var r=f(n(14)),o=f(n(20)),i=f(n(47)),a=f(n(37)),s=f(n(51)),l=f(n(657)),u=f(n(5)),c=f(n(4));function f(e){return e&&e.__esModule?e:{default:e}}var d=t.DecryptionFailure=function e(t,n){(0,c.default)(this,e),this.failedEventId=t,this.errorCode=n,this.ts=Date.now()},p=t.DecryptionFailureTracker=function(){function e(t,n){if((0,c.default)(this,e),this.failures=[],this.failureCounts={},this.trackedEventHashMap={},this.checkInterval=null,this.trackInterval=null,!t||"function"!=typeof t)throw new Error("DecryptionFailureTracker requires tracking function");if(n&&"function"!=typeof n)throw new Error("DecryptionFailureTracker second constructor argument should be a function");this._trackDecryptionFailure=t,this._mapErrorCode=n}return(0,u.default)(e,[{key:"eventDecrypted",value:function(e,t){t?this.addDecryptionFailure(new d(e.getId(),t.code)):this.removeDecryptionFailuresForEvent(e)}},{key:"addDecryptionFailure",value:function(e){this.failures.push(e)}},{key:"removeDecryptionFailuresForEvent",value:function(e){this.failures=this.failures.filter(function(t){return t.failedEventId!==e.getId()})}},{key:"start",value:function(){var t=this;this.checkInterval=setInterval(function(){return t.checkFailures(Date.now())},e.CHECK_INTERVAL_MS),this.trackInterval=setInterval(function(){return t.trackFailures()},e.TRACK_INTERVAL_MS)}},{key:"stop",value:function(){clearInterval(this.checkInterval),clearInterval(this.trackInterval),this.failures=[],this.failureCounts={}}},{key:"checkFailures",value:function(t){for(var n=this,r=[],o=[];this.failures.length>0;){var u=this.failures.shift();t>u.ts+e.GRACE_PERIOD_MS?r.push(u):o.push(u)}this.failures=o;var c=r.reduce(function(e,t){return n.trackedEventHashMap[t.failedEventId]?e:e.set(t.failedEventId,t)},new l.default),f=[].concat((0,s.default)(c.keys()));this.trackedEventHashMap=f.reduce(function(e,t){return(0,a.default)({},e,(0,i.default)({},t,!0))},this.trackedEventHashMap);var d=c.values();this._aggregateFailures(d)}},{key:"_aggregateFailures",value:function(e){var t=!0,n=!1,r=void 0;try{for(var i,a=(0,o.default)(e);!(t=(i=a.next()).done);t=!0){var s=i.value.errorCode;this.failureCounts[s]=(this.failureCounts[s]||0)+1}}catch(e){n=!0,r=e}finally{try{!t&&a.return&&a.return()}finally{if(n)throw r}}}},{key:"trackFailures",value:function(){var e=!0,t=!1,n=void 0;try{for(var i,a=(0,o.default)((0,r.default)(this.failureCounts));!(e=(i=a.next()).done);e=!0){var s=i.value;if(this.failureCounts[s]>0){var l=this._mapErrorCode?this._mapErrorCode(s):s;this._trackDecryptionFailure(this.failureCounts[s],l),this.failureCounts[s]=0}}}catch(e){t=!0,n=e}finally{try{!e&&a.return&&a.return()}finally{if(t)throw n}}}}]),e}();p.TRACK_INTERVAL_MS=6e4,p.CHECK_INTERVAL_MS=5e3,p.GRACE_PERIOD_MS=6e4},function(e,t,n){n(190),n(86),n(113),n(1528),n(1529),n(1530),n(1531),e.exports=n(18).Map},function(e,t,n){"use strict";var r=n(578),o=n(399);e.exports=n(580)("Map",function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{get:function(e){var t=r.getEntry(o(this,"Map"),e);return t&&t.v},set:function(e,t){return r.def(o(this,"Map"),0===e?0:e,t)}},r,!0)},function(e,t,n){var r=n(26);r(r.P+r.R,"Map",{toJSON:n(581)("Map")})},function(e,t,n){n(582)("Map")},function(e,t,n){n(583)("Map")},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(654));function o(e){return e.timeline.length?e.timeline[e.timeline.length-1].getTs():r.default}e.exports={mostRecentActivityFirst:function(e){return e.sort(function(e,t){return o(t)-o(e)})}}},function(e,t,n){"use strict";var r=i(n(4)),o=i(n(5));function i(e){return e&&e.__esModule?e:{default:e}}var a=n(8),s=n(10),l=["online","offline","unavailable"],u=function(){function e(){(0,r.default)(this,e)}return(0,o.default)(e,[{key:"start",value:function(){this.running=!0,void 0===this.state&&(this._resetTimer(),this.dispatcherRef=s.register(this._onAction.bind(this)))}},{key:"stop",value:function(){this.running=!1,this.timer&&(clearInterval(this.timer),this.timer=void 0,s.unregister(this.dispatcherRef)),this.state=void 0}},{key:"getState",value:function(){return this.state}},{key:"setState",value:function(e){if(e!==this.state){if(-1===l.indexOf(e))throw new Error("Bad presence state: "+e);if(this.running){var t=this.state;if(this.state=e,!a.get().isGuest()){var n=this;a.get().setPresence(this.state).done(function(){console.log("Presence: %s",e)},function(e){console.error("Failed to set presence: %s",e),n.state=t})}}}}},{key:"_onUnavailableTimerFire",value:function(){this.setState("unavailable")}},{key:"_onAction",value:function(e){"user_activity"===e.action&&this._resetTimer()}},{key:"_resetTimer",value:function(){var e=this;this.setState("online"),clearTimeout(this.timer),this.timer=setTimeout(function(){e._onUnavailableTimerFire()},18e4)}}]),e}();e.exports=new u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(20)),o=c(n(14)),i=c(n(67)),a=c(n(4)),s=c(n(5)),l=c(n(3)),u=c(n(16));function c(e){return e&&e.__esModule?e:{default:e}}var f=function(){function e(t){(0,a.default)(this,e),this._matrixClient=t,this._currentUser=null,this._currentDevice=null,this._pendingKeyRequests=(0,i.default)(null)}return(0,s.default)(e,[{key:"handleKeyRequest",value:function(e){var t=e.userId,n=e.deviceId,r=e.requestId;this._pendingKeyRequests[t]||(this._pendingKeyRequests[t]=(0,i.default)(null)),this._pendingKeyRequests[t][n]||(this._pendingKeyRequests[t][n]=[]);var o=this._pendingKeyRequests[t][n];o.find(function(e){return e.requestId===r})?console.log("Already have this key request, ignoring"):(o.push(e),this._currentUser?console.log("Key request, but we already have a dialog open"):this._processNextRequest())}},{key:"handleKeyRequestCancellation",value:function(e){var t=e.userId,n=e.deviceId,r=e.requestId;if(t!==this._currentUser||n!==this._currentDevice){if(this._pendingKeyRequests[t]){var i=this._pendingKeyRequests[t][n];if(i){var a=i.findIndex(function(e){return e.requestId===r});a<0||(console.log("Forgetting room key request"),i.splice(a,1),0===i.length&&(delete this._pendingKeyRequests[t][n],0===(0,o.default)(this._pendingKeyRequests[t]).length&&delete this._pendingKeyRequests[t]))}}}else console.log("room key request cancellation for the user we currently have a dialog open for")}},{key:"_processNextRequest",value:function(){var e=this,t=(0,o.default)(this._pendingKeyRequests)[0];if(t){var n=(0,o.default)(this._pendingKeyRequests[t])[0];if(n){console.log("Starting KeyShareDialog for "+t+":"+n);var i=l.default.getComponent("dialogs.KeyShareDialog");u.default.createTrackedDialog("Key Share","Process Next Request",i,{matrixClient:this._matrixClient,userId:t,deviceId:n,onFinished:function(i){if(e._currentUser=null,e._currentDevice=null,i){var a=!0,s=!1,l=void 0;try{for(var u,c=(0,r.default)(e._pendingKeyRequests[t][n]);!(a=(u=c.next()).done);a=!0)u.value.share()}catch(e){s=!0,l=e}finally{try{!a&&c.return&&c.return()}finally{if(s)throw l}}}delete e._pendingKeyRequests[t][n],0===(0,o.default)(e._pendingKeyRequests[t]).length&&delete e._pendingKeyRequests[t],e._processNextRequest()}}),this._currentUser=t,this._currentDevice=n}}}}]),e}();t.default=f,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.startAnyRegistrationFlow=void 0;var r=f(n(19)),o=n(9),i=(t.startAnyRegistrationFlow=function(){var e=(0,o.coroutine)(r.default.mark(function e(t){var n,l;return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return void 0===t&&(t={}),e.next=3,(0,o.resolve)(i());case 3:n=e.sent,n.some(function(e){return e.stages.every(function(e){return["m.login.dummy","m.login.recaptcha"].includes(e)})})?a.default.dispatch({action:"view_set_mxid",go_home_on_cancel:t.go_home_on_cancel}):(l=s.default.getComponent("dialogs.QuestionDialog"),u.default.createTrackedDialog("Registration required","",l,{title:(0,c._t)("Registration Required"),description:(0,c._t)("You need to register to do this. Would you like to register now?"),button:(0,c._t)("Register"),onFinished:function(e){e?a.default.dispatch({action:"start_registration"}):t.go_home_on_cancel&&a.default.dispatch({action:"view_home_page"})}}));case 6:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),function(){var e=(0,o.coroutine)(r.default.mark(function e(){return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,(0,o.resolve)(l.default.get().register(null,null,void 0,{},{}));case 3:console.log("Register request succeeded when it should have returned 401!"),e.next=11;break;case 6:if(e.prev=6,e.t0=e.catch(0),401!==e.t0.httpStatus){e.next=10;break}return e.abrupt("return",e.t0.data.flows);case 10:throw e.t0;case 11:throw new Error("Register request succeeded when it should have returned 401!");case 12:case"end":return e.stop()}},e,this,[[0,6]])}));return function(){return e.apply(this,arguments)}}()),a=f(n(10)),s=f(n(3)),l=f(n(8)),u=f(n(16)),c=n(2);function f(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";var r=c(n(40)),o=c(n(11)),i=c(n(4)),a=c(n(5)),s=c(n(12)),l=c(n(13)),u=c(n(10));function c(e){return e&&e.__esModule?e:{default:e}}var f={deferred_action:null},d=function(e){function t(){(0,i.default)(this,t);var e=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this,u.default));return e._state=f,e}return(0,l.default)(t,e),(0,a.default)(t,[{key:"_setState",value:function(e){this._state=(0,r.default)(this._state,e),this.__emitChange()}},{key:"__onDispatch",value:function(e){switch(e.action){case"do_after_sync_prepared":this._setState({deferred_action:e.deferred_action});break;case"cancel_after_sync_prepared":this._setState({deferred_action:null});break;case"sync_state":if("PREPARED"!==e.state)break;if(!this._state.deferred_action)break;var t=(0,r.default)({},this._state.deferred_action);this._setState({deferred_action:null}),u.default.dispatch(t);break;case"on_logged_out":this.reset()}}},{key:"reset",value:function(){this._state=(0,r.default)({},f)}}]),t}(n(246).Store),p=null;p||(p=new d),e.exports=p},function(e,t,n){"use strict";var r=p(n(51)),o=p(n(0)),i=p(n(41)),a=p(n(1)),s=p(n(24)),l=p(n(446)),u=n(143),c=p(n(10)),f=p(n(3)),d=p(n(8));function p(e){return e&&e.__esModule?e:{default:e}}var m=["m.sticker","m.room.message"];e.exports=o.default.createClass({displayName:"MessagePanel",propTypes:{hidden:a.default.bool,backPaginating:a.default.bool,forwardPaginating:a.default.bool,events:a.default.array.isRequired,highlightedEventId:a.default.string,showUrlPreview:a.default.bool,readMarkerEventId:a.default.string,readMarkerVisible:a.default.bool,ourUserId:a.default.string,suppressFirstDateSeparator:a.default.bool,showReadReceipts:a.default.bool,stickyBottom:a.default.bool,onScroll:a.default.func,onFillRequest:a.default.func,className:a.default.string.isRequired,tileShape:a.default.string,isTwelveHour:a.default.bool,alwaysShowTimestamps:a.default.bool},componentWillMount:function(){this.currentReadMarkerEventId=null,this.currentGhostEventId=null,this._readReceiptMap={},this._readMarkerGhostNode=null,this._isMounted=!0},componentWillUnmount:function(){this._isMounted=!1},getNodeForEventId:function(e){if(this.eventNodes)return this.eventNodes[e]},isAtBottom:function(){return this.refs.scrollPanel&&this.refs.scrollPanel.isAtBottom()},getScrollState:function(){return this.refs.scrollPanel?this.refs.scrollPanel.getScrollState():null},getReadMarkerPosition:function(){var e=this.refs.readMarkerNode,t=this.refs.scrollPanel;if(!e||!t)return null;var n=i.default.findDOMNode(t).getBoundingClientRect(),r=e.getBoundingClientRect();return r.bottom+2<n.top?-1:r.top<n.bottom?0:1},scrollToTop:function(){this.refs.scrollPanel&&this.refs.scrollPanel.scrollToTop()},scrollToBottom:function(){this.refs.scrollPanel&&this.refs.scrollPanel.scrollToBottom()},scrollRelative:function(e){this.refs.scrollPanel&&this.refs.scrollPanel.scrollRelative(e)},handleScrollKey:function(e){this.refs.scrollPanel&&this.refs.scrollPanel.handleScrollKey(e)},scrollToEvent:function(e,t,n){this.refs.scrollPanel&&this.refs.scrollPanel.scrollToToken(e,t,n)},checkFillState:function(){this.refs.scrollPanel&&this.refs.scrollPanel.checkFillState()},_isUnmounting:function(){return!this._isMounted},_shouldShowEvent:function(e){return(!e.sender||!d.default.get().isUserIgnored(e.sender.userId))&&(!!f.default.getComponent("rooms.EventTile").haveTileForEvent(e)&&(this.props.highlightedEventId===e.getId()||!(0,l.default)(e)))},_getEventTiles:function(){var e=this,t=f.default.getComponent("messages.DateSeparator"),n=f.default.getComponent("views.elements.MemberEventListSummary");this.eventNodes={};var i=!1,a=void 0,s=void 0,l=-1;for(a=this.props.events.length-1;a>=0;a--){var u=this.props.events[a];if(this._shouldShowEvent(u)&&(void 0===s&&(s=u),!u.status)){l=a;break}}var c=[],d=null,p=!1;this.currentReadMarkerEventId&&this.props.readMarkerEventId&&this.props.readMarkerVisible&&this.currentReadMarkerEventId!==this.props.readMarkerEventId&&(this.currentGhostEventId=null);var m=function(e){return"m.room.member"===e.getType()};for(a=0;a<this.props.events.length;a++){var h=this.props.events[a],_=h.getId(),g=h===s,v=this._shouldShowEvent(h);if(m(h)&&v){var y=!1,b=h.getTs(),E="membereventlistsummary-"+(d?h.getId():"initial");if(this._wantsDateSeparator(d,h.getDate())){var C=o.default.createElement("li",{key:b+"~"},o.default.createElement(t,{key:b+"~",ts:b}));c.push(C)}h.getId()===this.props.readMarkerEventId&&(y=!0);for(var S=[h];a+1<this.props.events.length;a++){var D=this.props.events[a+1];if(this._shouldShowEvent(D)){if(!m(D)||this._wantsDateSeparator(h,D.getDate()))break;D.getId()===this.props.readMarkerEventId&&(y=!0),S.push(D)}else D.getId()===this.props.readMarkerEventId&&(y=!0)}var w=!1,T=S.map(function(t){return t.getId()===e.props.highlightedEventId&&(w=!0),e._getTilesForEvent(t,t,t===s)}).reduce(function(e,t){return e.concat(t)});0===T.length&&(T=null),c.push(o.default.createElement(n,{key:E,events:S,onToggle:this._onWidgetLoad,startExpanded:w},T)),y&&c.push(this._getReadMarkerTile(i)),d=h}else{v&&(c.push.apply(c,(0,r.default)(this._getTilesForEvent(d,h,g))),d=h);var x=!1;_===this.props.readMarkerEventId&&(i=this.props.readMarkerVisible,a>=l&&(i=!1),c.push(this._getReadMarkerTile(i)),p=i,x=i),_===this.currentGhostEventId?c.push(this._getReadMarkerGhostTile()):x||_!==this.currentReadMarkerEventId||(c.push(this._getReadMarkerGhostTile()),this.currentGhostEventId=_)}}return this.currentReadMarkerEventId=p?this.props.readMarkerEventId:null,c},_getTilesForEvent:function(e,t,n){var r=f.default.getComponent("rooms.EventTile"),i=f.default.getComponent("messages.DateSeparator"),a=[],s=!1,l=null!==e&&m.includes(t.getType())&&m.includes(e.getType());null!==e&&e.sender&&t.sender&&t.sender.userId===e.sender.userId&&(t.getType()===e.getType()||l)&&t.getTs()-e.getTs()<=3e5&&(s=!0);var u=t.getTs(),c=t.getDate();if(t.status&&(u=(c=new Date).getTime()),this._wantsDateSeparator(e,c)){var d=o.default.createElement("li",{key:u},o.default.createElement(i,{key:u,ts:u}));a.push(d),s=!1}var p=t.getId(),h=p===this.props.highlightedEventId,_=t.status?void 0:p,g=void 0;return this.props.showReadReceipts&&(g=this._getReadReceiptsForEvent(t)),a.push(o.default.createElement("li",{key:p,ref:this._collectEventNode.bind(this,p),"data-scroll-tokens":_},o.default.createElement(r,{mxEvent:t,continuation:s,isRedacted:t.isRedacted(),onWidgetLoad:this._onWidgetLoad,readReceipts:g,readReceiptMap:this._readReceiptMap,showUrlPreview:this.props.showUrlPreview,checkUnmounting:this._isUnmounting,eventSendStatus:t.status,tileShape:this.props.tileShape,isTwelveHour:this.props.isTwelveHour,last:n,isSelectedEvent:h}))),a},_wantsDateSeparator:function(e,t){return null==e?!this.props.suppressFirstDateSeparator:(0,u.wantsDateSeparator)(e.getDate(),t)},_getReadReceiptsForEvent:function(e){var t=d.default.get().credentials.userId,n=d.default.get().getRoom(e.getRoomId());if(!n)return null;var r=[];return n.getReceiptsForEvent(e).forEach(function(e){if(e.userId&&"m.read"===e.type&&e.userId!==t&&!d.default.get().isUserIgnored(e.userId)){var o=n.getMember(e.userId);r.push({userId:e.userId,roomMember:o,ts:e.data?e.data.ts:0})}}),r.sort(function(e,t){return t.ts-e.ts})},_getReadMarkerTile:function(e){var t=void 0;return e&&(t=o.default.createElement("hr",{className:"mx_RoomView_myReadMarker",style:{opacity:1,width:"99%"}})),o.default.createElement("li",{key:"_readupto",ref:"readMarkerNode",className:"mx_RoomView_myReadMarker_container"},t)},_startAnimation:function(e){this._readMarkerGhostNode&&Velocity.Utilities.removeData(this._readMarkerGhostNode),this._readMarkerGhostNode=e,e&&Velocity(e,{opacity:"0",width:"10%"},{duration:400,easing:"easeInSine",delay:1e3})},_getReadMarkerGhostTile:function(){var e=o.default.createElement("hr",{className:"mx_RoomView_myReadMarker",style:{opacity:1,width:"99%"},ref:this._startAnimation});return o.default.createElement("li",{key:"_readuptoghost_"+this.currentGhostEventId,className:"mx_RoomView_myReadMarker_container"},e)},_collectEventNode:function(e,t){this.eventNodes[e]=t},_onWidgetLoad:function(){var e=this.refs.scrollPanel;e&&e.forceUpdate()},onResize:function(){c.default.dispatch({action:"timeline_resize"},!0)},render:function(){var e=f.default.getComponent("structures.ScrollPanel"),t=f.default.getComponent("elements.Spinner"),n=void 0,r=void 0;this.props.backPaginating&&(n=o.default.createElement("li",{key:"_topSpinner"},o.default.createElement(t,null))),this.props.forwardPaginating&&(r=o.default.createElement("li",{key:"_bottomSpinner"},o.default.createElement(t,null)));var i=this.props.hidden?{display:"none"}:{},a=(0,s.default)(this.props.className,{mx_MessagePanel_alwaysShowTimestamps:this.props.alwaysShowTimestamps});return o.default.createElement(e,{ref:"scrollPanel",className:a,onScroll:this.props.onScroll,onResize:this.onResize,onFillRequest:this.props.onFillRequest,onUnfillRequest:this.props.onUnfillRequest,style:i,stickyBottom:this.props.stickyBottom},n,this._getEventTiles(),r)}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(0)),o=c(n(1)),i=c(n(3)),a=n(2),s=c(n(10)),l=c(n(249)),u=c(n(27));function c(e){return e&&e.__esModule?e:{default:e}}t.default=(0,l.default)(r.default.createClass({displayName:"MyGroups",propTypes:{matrixClient:o.default.object.isRequired},getInitialState:function(){return{groups:null,error:null}},componentWillMount:function(){this._fetch()},_onCreateGroupClick:function(){s.default.dispatch({action:"view_create_group"})},_fetch:function(){var e=this;this.props.matrixClient.getJoinedGroups().done(function(t){e.setState({groups:t.groups,error:null})},function(t){"M_GUEST_ACCESS_FORBIDDEN"!==t.errcode?e.setState({groups:null,error:t}):e.setState({groups:[],error:null})})},render:function(){var e=i.default.getComponent("elements.Spinner"),t=i.default.getComponent("rooms.SimpleRoomHeader"),n=i.default.getComponent("elements.TintableSvg"),o=i.default.getComponent("groups.GroupTile"),s=i.default.getComponent("elements.GeminiScrollbarWrapper"),l=void 0,c=void 0;if(this.state.groups){var f=[];this.state.groups.forEach(function(e){f.push(r.default.createElement(o,{key:e,groupId:e}))}),c=f.length>0?r.default.createElement("h3",null,(0,a._t)("Your Communities")):r.default.createElement("div",null),l=f.length>0?r.default.createElement(s,null,r.default.createElement("div",{className:"mx_MyGroups_microcopy"},r.default.createElement("p",null,(0,a._t)("Did you know: you can use communities to filter your Riot.im experience!")),r.default.createElement("p",null,(0,a._t)("To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community."))),r.default.createElement("div",{className:"mx_MyGroups_joinedGroups"},f)):r.default.createElement("div",{className:"mx_MyGroups_placeholder"},(0,a._t)("You're not currently a member of any communities."))}else l=this.state.error?r.default.createElement("div",{className:"mx_MyGroups_error"},(0,a._t)("Error whilst fetching joined communities")):r.default.createElement(e,null);return r.default.createElement("div",{className:"mx_MyGroups"},r.default.createElement(t,{title:(0,a._t)("Communities"),icon:"img/icons-groups.svg"}),r.default.createElement("div",{className:"mx_MyGroups_header"},r.default.createElement("div",{className:"mx_MyGroups_headerCard"},r.default.createElement(u.default,{className:"mx_MyGroups_headerCard_button",onClick:this._onCreateGroupClick},r.default.createElement(n,{src:"img/icons-create-room.svg",width:"50",height:"50"})),r.default.createElement("div",{className:"mx_MyGroups_headerCard_content"},r.default.createElement("div",{className:"mx_MyGroups_headerCard_header"},(0,a._t)("Create a new community")),(0,a._t)("Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.")))),r.default.createElement("div",{className:"mx_MyGroups_content"},c,l))}})),e.exports=t.default},function(e,t,n){"use strict";var r=n(2),o=n(0),i=(n(41),n(17),n(3)),a=n(8),s=(n(10),o.createClass({displayName:"NotificationPanel",propTypes:{},render:function(){var e=i.getComponent("structures.TimelinePanel"),t=i.getComponent("elements.Spinner"),n=a.get().getNotifTimelineSet();return n?o.createElement(e,{key:"NotificationPanel_"+this.props.roomId,className:"mx_NotificationPanel",manageReadReceipts:!1,manageReadMarkers:!1,timelineSet:n,showUrlPreview:!1,tileShape:"notif",empty:(0,r._t)("You have no visible notifications")}):(console.error("No notifTimelineSet available!"),o.createElement("div",{className:"mx_NotificationPanel"},o.createElement(t,null)))}}));e.exports=s},function(e,t,n){"use strict";var r=C(n(51)),o=C(n(11)),i=C(n(4)),a=C(n(5)),s=C(n(12)),l=C(n(13)),u=C(n(0)),c=C(n(1)),f=C(n(24)),d=n(2),p=C(n(3)),m=C(n(10)),h=n(17),_=C(n(90)),g=C(n(201)),v=C(n(27)),y=n(629),b=C(n(81)),E=n(250);function C(e){return e&&e.__esModule?e:{default:e}}var S=function(e){function t(){(0,i.default)(this,t);var e=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this));return e.onClick=e.onClick.bind(e),e}return(0,l.default)(t,e),(0,a.default)(t,[{key:"onClick",value:function(e){_.default.trackEvent.apply(_.default,(0,r.default)(this.props.analytics)),m.default.dispatch({action:"view_right_panel_phase",phase:this.props.clickPhase})}},{key:"render",value:function(){var e=p.default.getComponent("elements.TintableSvg"),t=p.default.getComponent("elements.AccessibleButton");return u.default.createElement(t,{"aria-label":this.props.title,"aria-expanded":this.props.isHighlighted,title:this.props.title,className:"mx_RightPanel_headerButton",onClick:this.onClick},u.default.createElement("div",{className:"mx_RightPanel_headerButton_badge"},this.props.badge?this.props.badge:u.default.createElement("span",null," ")),u.default.createElement(e,{src:this.props.iconSrc,width:"25",height:"25"}),this.props.isHighlighted?u.default.createElement("div",{className:"mx_RightPanel_headerButton_highlight"}):u.default.createElement("div",null))}}]),t}(u.default.Component);S.propTypes={isHighlighted:c.default.bool.isRequired,clickPhase:c.default.string.isRequired,iconSrc:c.default.string.isRequired,badge:c.default.node,analytics:c.default.arrayOf(c.default.string).isRequired,title:c.default.string.isRequired},e.exports=u.default.createClass({displayName:"RightPanel",propTypes:{roomId:u.default.PropTypes.string,groupId:u.default.PropTypes.string,collapsed:u.default.PropTypes.bool},contextTypes:{matrixClient:c.default.instanceOf(h.MatrixClient)},Phase:{RoomMemberList:"RoomMemberList",GroupMemberList:"GroupMemberList",GroupRoomList:"GroupRoomList",GroupRoomInfo:"GroupRoomInfo",FilePanel:"FilePanel",NotificationPanel:"NotificationPanel",RoomMemberInfo:"RoomMemberInfo",GroupMemberInfo:"GroupMemberInfo"},componentWillMount:function(){this.dispatcherRef=m.default.register(this.onAction),this.context.matrixClient.on("RoomState.members",this.onRoomStateMember),this._initGroupStore(this.props.groupId)},componentWillUnmount:function(){m.default.unregister(this.dispatcherRef),this.context.matrixClient&&this.context.matrixClient.removeListener("RoomState.members",this.onRoomStateMember),this._unregisterGroupStore(this.props.groupId)},getInitialState:function(){return{phase:this.props.groupId?this.Phase.GroupMemberList:this.Phase.RoomMemberList,isUserPrivilegedInGroup:null}},componentWillReceiveProps:function(e){e.groupId!==this.props.groupId&&(this._unregisterGroupStore(this.props.groupId),this._initGroupStore(e.groupId))},_initGroupStore:function(e){e&&b.default.registerListener(e,this.onGroupStoreUpdated)},_unregisterGroupStore:function(){b.default.unregisterListener(this.onGroupStoreUpdated)},onGroupStoreUpdated:function(){this.setState({isUserPrivilegedInGroup:b.default.isUserPrivileged(this.props.groupId)})},onCollapseClick:function(){m.default.dispatch({action:"hide_right_panel"})},onInviteButtonClick:function(){this.context.matrixClient.isGuest()?m.default.dispatch({action:"require_registration"}):m.default.dispatch({action:"view_invite",roomId:this.props.roomId})},onInviteToGroupButtonClick:function(){var e=this;(0,y.showGroupInviteDialog)(this.props.groupId).then(function(){e.setState({phase:e.Phase.GroupMemberList})})},onAddRoomToGroupButtonClick:function(){var e=this;(0,y.showGroupAddRoomDialog)(this.props.groupId).then(function(){e.forceUpdate()})},onRoomStateMember:function(e,t,n){n.roomId===this.props.roomId&&(this.state.phase===this.Phase.RoomMemberList&&n.roomId===this.props.roomId?this._delayedUpdate():this.state.phase===this.Phase.RoomMemberInfo&&n.roomId===this.props.roomId&&n.userId===this.state.member.userId&&this._delayedUpdate())},_delayedUpdate:new g.default(function(){this.forceUpdate()},500),onAction:function(e){"view_user"===e.action?(m.default.dispatch({action:"show_right_panel"}),e.member?this.setState({phase:this.Phase.RoomMemberInfo,member:e.member}):this.props.roomId?this.setState({phase:this.Phase.RoomMemberList}):this.props.groupId&&this.setState({phase:this.Phase.GroupMemberList,member:e.member})):"view_group"===e.action?this.setState({phase:this.Phase.GroupMemberList,member:null}):"view_group_room"===e.action?this.setState({phase:this.Phase.GroupRoomInfo,groupRoomId:e.groupRoomId}):"view_group_room_list"===e.action?this.setState({phase:this.Phase.GroupRoomList}):"view_group_member_list"===e.action?this.setState({phase:this.Phase.GroupMemberList}):"view_group_user"===e.action?this.setState({phase:this.Phase.GroupMemberInfo,member:e.member}):"view_room"===e.action?this.setState({phase:this.Phase.RoomMemberList}):"view_right_panel_phase"===e.action&&this.setState({phase:e.phase})},render:function(){var e=p.default.getComponent("rooms.MemberList"),t=p.default.getComponent("rooms.MemberInfo"),n=p.default.getComponent("structures.NotificationPanel"),r=p.default.getComponent("structures.FilePanel"),o=p.default.getComponent("groups.GroupMemberList"),i=p.default.getComponent("groups.GroupMemberInfo"),a=p.default.getComponent("groups.GroupRoomList"),s=p.default.getComponent("groups.GroupRoomInfo"),l=p.default.getComponent("elements.TintableSvg"),c=void 0,m=void 0,h=(0,d._t)("Members");if((this.state.phase===this.Phase.RoomMemberList||this.state.phase===this.Phase.RoomMemberInfo)&&this.props.roomId){var _=this.context.matrixClient.getRoom(this.props.roomId),g=void 0;if(_){var y=_.getJoinedMemberCount();h=(0,d._t)("%(count)s Members",{count:y}),m=u.default.createElement("div",{title:h},(0,E.formatCount)(y)),g=_.hasMembershipState(this.context.matrixClient.credentials.userId,"join")}g&&(c=u.default.createElement(v.default,{className:"mx_RightPanel_invite",onClick:this.onInviteButtonClick},u.default.createElement("div",{className:"mx_RightPanel_icon"},u.default.createElement(l,{src:"img/icon-invite-people.svg",width:"35",height:"35"})),u.default.createElement("div",{className:"mx_RightPanel_message"},(0,d._t)("Invite to this room"))))}var b=[this.Phase.GroupMemberInfo,this.Phase.GroupMemberList].includes(this.state.phase),C=[];this.props.roomId?C=[u.default.createElement(S,{key:"_membersButton",title:h,iconSrc:"img/icons-people.svg",isHighlighted:[this.Phase.RoomMemberList,this.Phase.RoomMemberInfo].includes(this.state.phase),clickPhase:this.Phase.RoomMemberList,badge:m,analytics:["Right Panel","Member List Button","click"]}),u.default.createElement(S,{key:"_filesButton",title:(0,d._t)("Files"),iconSrc:"img/icons-files.svg",isHighlighted:this.state.phase===this.Phase.FilePanel,clickPhase:this.Phase.FilePanel,analytics:["Right Panel","File List Button","click"]}),u.default.createElement(S,{key:"_notifsButton",title:(0,d._t)("Notifications"),iconSrc:"img/icons-notifications.svg",isHighlighted:this.state.phase===this.Phase.NotificationPanel,clickPhase:this.Phase.NotificationPanel,analytics:["Right Panel","Notification List Button","click"]})]:this.props.groupId&&(C=[u.default.createElement(S,{key:"_groupMembersButton",title:(0,d._t)("Members"),iconSrc:"img/icons-people.svg",isHighlighted:b,clickPhase:this.Phase.GroupMemberList,analytics:["Right Panel","Group Member List Button","click"]}),u.default.createElement(S,{key:"_roomsButton",title:(0,d._t)("Rooms"),iconSrc:"img/icons-room.svg",isHighlighted:[this.Phase.GroupRoomList,this.Phase.GroupRoomInfo].includes(this.state.phase),clickPhase:this.Phase.GroupRoomList,analytics:["Right Panel","Group Room List Button","click"]})]),(this.props.roomId||this.props.groupId)&&C.push(u.default.createElement(v.default,{className:"mx_RightPanel_headerButton mx_RightPanel_collapsebutton",key:"_minimizeButton",title:(0,d._t)("Hide panel"),"aria-label":(0,d._t)("Hide panel"),onClick:this.onCollapseClick},u.default.createElement(l,{src:"img/minimise.svg",width:"10",height:"16",alt:""})));var D=u.default.createElement("div",null);this.props.collapsed||(this.props.roomId&&this.state.phase===this.Phase.RoomMemberList?D=u.default.createElement(e,{roomId:this.props.roomId,key:this.props.roomId}):this.props.groupId&&this.state.phase===this.Phase.GroupMemberList?D=u.default.createElement(o,{groupId:this.props.groupId,key:this.props.groupId}):this.state.phase===this.Phase.GroupRoomList?D=u.default.createElement(a,{groupId:this.props.groupId,key:this.props.groupId}):this.state.phase===this.Phase.RoomMemberInfo?D=u.default.createElement(t,{member:this.state.member,key:this.props.roomId||this.state.member.userId}):this.state.phase===this.Phase.GroupMemberInfo?D=u.default.createElement(i,{groupMember:this.state.member,groupId:this.props.groupId,key:this.state.member.user_id}):this.state.phase===this.Phase.GroupRoomInfo?D=u.default.createElement(s,{groupRoomId:this.state.groupRoomId,groupId:this.props.groupId,key:this.state.groupRoomId}):this.state.phase===this.Phase.NotificationPanel?D=u.default.createElement(n,null):this.state.phase===this.Phase.FilePanel&&(D=u.default.createElement(r,{roomId:this.props.roomId}))),D||(D=u.default.createElement("div",{className:"mx_RightPanel_blank"})),this.props.groupId&&this.state.isUserPrivilegedInGroup&&(c=b?u.default.createElement(v.default,{className:"mx_RightPanel_invite",onClick:this.onInviteToGroupButtonClick},u.default.createElement("div",{className:"mx_RightPanel_icon"},u.default.createElement(l,{src:"img/icon-invite-people.svg",width:"35",height:"35"})),u.default.createElement("div",{className:"mx_RightPanel_message"},(0,d._t)("Invite to this community"))):u.default.createElement(v.default,{className:"mx_RightPanel_invite",onClick:this.onAddRoomToGroupButtonClick},u.default.createElement("div",{className:"mx_RightPanel_icon"},u.default.createElement(l,{src:"img/icons-room-add.svg",width:"35",height:"35"})),u.default.createElement("div",{className:"mx_RightPanel_message"},(0,d._t)("Add rooms to this community"))));var w=(0,f.default)("mx_RightPanel","mx_fadable",{collapsed:this.props.collapsed,mx_fadable_faded:this.props.disabled});return u.default.createElement("aside",{className:w},u.default.createElement("div",{className:"mx_RightPanel_header"},u.default.createElement("div",{className:"mx_RightPanel_headerButtonGroup"},C)),D,u.default.createElement("div",{className:"mx_RightPanel_footer"},c))}})},function(e,t,n){"use strict";var r=l(n(31)),o=l(n(51)),i=l(n(9)),a=n(2),s=n(660);function l(e){return e&&e.__esModule?e:{default:e}}var u=n(0),c=n(8),f=n(17).ContentRepo,d=n(16),p=n(3),m=n(10),h=n(251),_=n(1546),g=n(129),v=n(234);function y(e){return e.canonical_alias||(e.aliases?e.aliases[0]:"")}g(h),e.exports=u.createClass({displayName:"RoomDirectory",propTypes:{config:u.PropTypes.object},getDefaultProps:function(){return{config:{}}},getInitialState:function(){return{publicRooms:[],loading:!0,protocolsLoading:!0,instanceId:null,includeAll:!1,roomServer:null,filterString:null}},componentWillMount:function(){var e=this;this._unmounted=!1,this.nextBatch=null,this.filterTimeout=null,this.scrollPanel=null,this.protocols=null,this.setState({protocolsLoading:!0}),c.get().getThirdpartyProtocols().done(function(t){e.protocols=t,e.setState({protocolsLoading:!1})},function(t){if(console.warn("error loading thirdparty protocols: "+t),e.setState({protocolsLoading:!1}),!c.get().isGuest()){var n=p.getComponent("dialogs.ErrorDialog");d.createTrackedDialog("Failed to get protocol list from Home Server","",n,{title:(0,a._t)("Failed to get protocol list from Home Server"),description:(0,a._t)("The Home Server may be too old to support third party networks")})}})},componentWillUnmount:function(){this.filterTimeout&&clearTimeout(this.filterTimeout),this._unmounted=!0},refreshRoomList:function(){this.nextBatch=null,this.setState({publicRooms:[],loading:!0}),this.getMoreRooms().done()},getMoreRooms:function(){var e=this;if(!c.get())return i.default.resolve();var t=this.state.filterString,n=this.state.roomServer,s=this.nextBatch,l={limit:20};return n!=c.getHomeServerName()&&(l.server=n),this.state.instanceId?l.third_party_instance_id=this.state.instanceId:this.state.includeAll&&(l.include_all_networks=!0),this.nextBatch&&(l.since=this.nextBatch),t&&(l.filter={generic_search_term:t}),c.get().publicRooms(l).then(function(r){if(t==e.state.filterString&&n==e.state.roomServer&&s==e.nextBatch&&!e._unmounted)return e.nextBatch=r.next_batch,e.setState(function(e){var t;return(t=e.publicRooms).push.apply(t,(0,o.default)(r.chunk)),e.loading=!1,e}),Boolean(r.next_batch)},function(o){if(t==e.state.filterString&&n==e.state.roomServer&&s==e.nextBatch&&!e._unmounted){e.setState({loading:!1}),console.error("Failed to get publicRooms: %s",(0,r.default)(o));var i=p.getComponent("dialogs.ErrorDialog");d.createTrackedDialog("Failed to get public room list","",i,{title:(0,a._t)("Failed to get public room list"),description:o&&o.message?o.message:(0,a._t)("The server may be unavailable or overloaded")})}})},removeFromDirectory:function(e){var t,n=this,r=y(e),o=e.name||r||(0,a._t)("Unnamed room"),i=p.getComponent("dialogs.QuestionDialog"),s=p.getComponent("dialogs.ErrorDialog");t=r?(0,a._t)("Delete the room alias %(alias)s and remove %(name)s from the directory?",{alias:r,name:o}):(0,a._t)("Remove %(name)s from the directory?",{name:o}),d.createTrackedDialog("Remove from Directory","",i,{title:(0,a._t)("Remove from Directory"),description:t,onFinished:function(t){if(t){var i=p.getComponent("elements.Spinner"),l=d.createDialog(i),u=(0,a._t)("remove %(name)s from the directory.",{name:o});c.get().setRoomDirectoryVisibility(e.room_id,"private").then(function(){if(r)return u=(0,a._t)("delete the alias."),c.get().deleteAlias(r)}).done(function(){l.close(),n.refreshRoomList()},function(e){l.close(),n.refreshRoomList(),console.error("Failed to "+u+": "+e),d.createTrackedDialog("Remove from Directory Error","",s,{title:(0,a._t)("Error"),description:e&&e.message?e.message:(0,a._t)("The server may be unavailable or overloaded")})})}}})},onRoomClicked:function(e,t){t.shiftKey?(t.preventDefault(),this.removeFromDirectory(e)):this.showRoom(e)},onOptionChange:function(e,t,n){this.nextBatch=null,this.setState({publicRooms:[],roomServer:e,instanceId:t,includeAll:n},this.refreshRoomList)},onFillRequest:function(e){return e||!this.nextBatch?i.default.resolve(!1):this.getMoreRooms()},onFilterChange:function(e){var t=this;this.setState({filterString:e||null}),this.filterTimeout&&clearTimeout(this.filterTimeout),this.filterTimeout=setTimeout(function(){t.filterTimeout=null,t.refreshRoomList()},700)},onFilterClear:function(){this.setState({filterString:null},this.refreshRoomList),this.filterTimeout&&clearTimeout(this.filterTimeout)},onJoinClick:function(e){var t=this;if(this.state.instanceId){var n=(0,s.protocolNameForInstanceId)(this.protocols,this.state.instanceId),r=(0,s.instanceForInstanceId)(this.protocols,this.state.instanceId),o=n?this._getFieldsForThirdPartyLocation(e,this.protocols[n],r):null;if(!o){var i=p.getComponent("dialogs.ErrorDialog");return void d.createTrackedDialog("Unable to join network","",i,{title:(0,a._t)("Unable to join network"),description:(0,a._t)("Riot does not know how to join a room on this network")})}c.get().getThirdpartyLocation(n,o).done(function(e){if(e.length>0&&e[0].alias)t.showRoomAlias(e[0].alias);else{var n=p.getComponent("dialogs.ErrorDialog");d.createTrackedDialog("Room not found","",n,{title:(0,a._t)("Room not found"),description:(0,a._t)("Couldn't find a matching Matrix room")})}},function(e){var t=p.getComponent("dialogs.ErrorDialog");d.createTrackedDialog("Fetching third party location failed","",t,{title:(0,a._t)("Fetching third party location failed"),description:(0,a._t)("Unable to look up room ID from server")})})}else-1==e.indexOf(":")&&(e=e+":"+this.state.roomServer),this.showRoomAlias(e)},showRoomAlias:function(e){this.showRoom(null,e)},showRoom:function(e,t){var n={action:"view_room"};if(e){if(c.get().isGuest()&&!e.world_readable&&!e.guest_can_join)return void m.dispatch({action:"require_registration"});t||(t=y(e)),n.oob_data={avatarUrl:e.avatar_url,name:e.name||t||(0,a._t)("Unnamed room")}}t?n.room_alias=t:n.room_id=e.room_id,m.dispatch(n)},getRows:function(){var e=p.getComponent("avatars.BaseAvatar");if(!this.state.publicRooms)return[];for(var t,n,r,o=this.state.publicRooms,i=[],s=0;s<o.length;s++){var l=o[s].name||y(o[s])||(0,a._t)("Unnamed room");t=null,n=null,o[s].world_readable&&(t=u.createElement("div",{className:"mx_RoomDirectory_perm"},(0,a._t)("World readable"))),o[s].guest_can_join&&(n=u.createElement("div",{className:"mx_RoomDirectory_perm"},(0,a._t)("Guests can join"))),r=null,(t||n)&&(r=u.createElement("div",{className:"mx_RoomDirectory_perms"},t,n));var d=o[s].topic||"";d=_(v(d)),i.push(u.createElement("tr",{key:o[s].room_id,onClick:this.onRoomClicked.bind(this,o[s]),onMouseDown:function(e){e.preventDefault()}},u.createElement("td",{className:"mx_RoomDirectory_roomAvatar"},u.createElement(e,{width:24,height:24,resizeMethod:"crop",name:l,idName:l,url:f.getHttpUriForMxc(c.get().getHomeserverUrl(),o[s].avatar_url,24,24,"crop")})),u.createElement("td",{className:"mx_RoomDirectory_roomDescription"},u.createElement("div",{className:"mx_RoomDirectory_name"},l)," ",r,u.createElement("div",{className:"mx_RoomDirectory_topic",onClick:function(e){e.stopPropagation()},dangerouslySetInnerHTML:{__html:d}}),u.createElement("div",{className:"mx_RoomDirectory_alias"},y(o[s]))),u.createElement("td",{className:"mx_RoomDirectory_roomMemberCount"},o[s].num_joined_members)))}return i},collectScrollPanel:function(e){this.scrollPanel=e},_stringLooksLikeId:function(e,t){var n=/^#[^\s]+:[^\s]/;return t&&t.regexp&&(n=new RegExp(t.regexp)),n.test(e)},_getFieldsForThirdPartyLocation:function(e,t,n){var r=t.location_fields;if(!r)return null;for(var o={},i=0;i<r.length-1;++i){var a=r[i];if(void 0===n.fields[a])return null;o[a]=n.fields[a]}return o[r[r.length-1]]=e,o},handleScrollKey:function(e){this.scrollPanel&&this.scrollPanel.handleScrollKey(e)},render:function(){var e=p.getComponent("rooms.SimpleRoomHeader"),t=p.getComponent("elements.Spinner");if(this.state.protocolsLoading)return u.createElement("div",{className:"mx_RoomDirectory"},u.createElement(e,{title:(0,a._t)("Directory")}),u.createElement(t,null));var n=void 0;if(this.state.loading)n=u.createElement("div",{className:"mx_RoomDirectory"},u.createElement(t,null));else{var r=void 0;r=0==this.getRows().length?u.createElement("i",null,(0,a._t)("No rooms to show")):u.createElement("table",{ref:"directory_table",className:"mx_RoomDirectory_table"},u.createElement("tbody",null,this.getRows()));var o=p.getComponent("structures.ScrollPanel");n=u.createElement(o,{ref:this.collectScrollPanel,className:"mx_RoomDirectory_tableWrapper",onFillRequest:this.onFillRequest,stickyBottom:!1,startAtBottom:!1,onResize:function(){}},r)}var i=(0,s.protocolNameForInstanceId)(this.protocols,this.state.instanceId),l=void 0;if(i&&this.protocols&&this.protocols[i]&&this.protocols[i].location_fields.length>0&&this.protocols[i].field_types){var c=this.protocols[i].location_fields.slice(-1)[0];l=this.protocols[i].field_types[c]}var f=(0,a._t)("Search for a room");this.state.instanceId?l&&(f=l.placeholder):f=(0,a._t)("#example")+":"+this.state.roomServer;var d=this._stringLooksLikeId(this.state.filterString,l);if(i){var m=(0,s.instanceForInstanceId)(this.protocols,this.state.instanceId);null===this._getFieldsForThirdPartyLocation(this.state.filterString,this.protocols[i],m)&&(d=!1)}var h=p.getComponent("directory.NetworkDropdown"),_=p.getComponent("elements.DirectorySearchBox");return u.createElement("div",{className:"mx_RoomDirectory"},u.createElement(e,{title:(0,a._t)("Directory"),icon:"img/icons-directory.svg"}),u.createElement("div",{className:"mx_RoomDirectory_list"},u.createElement("div",{className:"mx_RoomDirectory_listheader"},u.createElement(_,{className:"mx_RoomDirectory_searchbox",onChange:this.onFilterChange,onClear:this.onFilterClear,onJoinClick:this.onJoinClick,placeholder:f,showJoinButton:d}),u.createElement(h,{config:this.props.config,protocols:this.protocols,onOptionChange:this.onOptionChange})),n))}})},function(e,t,n){"use strict";t.__esModule=!0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o={defaultProtocol:"http",events:null,format:a,formatHref:a,nl2br:!1,tagName:"a",target:function(e,t){return"url"===t?"_blank":null},validate:!0,ignoreTags:[],attributes:null,className:"linkified"};function i(e){e=e||{},this.defaultProtocol=e.hasOwnProperty("defaultProtocol")?e.defaultProtocol:o.defaultProtocol,this.events=e.hasOwnProperty("events")?e.events:o.events,this.format=e.hasOwnProperty("format")?e.format:o.format,this.formatHref=e.hasOwnProperty("formatHref")?e.formatHref:o.formatHref,this.nl2br=e.hasOwnProperty("nl2br")?e.nl2br:o.nl2br,this.tagName=e.hasOwnProperty("tagName")?e.tagName:o.tagName,this.target=e.hasOwnProperty("target")?e.target:o.target,this.validate=e.hasOwnProperty("validate")?e.validate:o.validate,this.ignoreTags=[],this.attributes=e.attributes||e.linkAttributes||o.attributes,this.className=e.hasOwnProperty("className")?e.className:e.linkClass||o.className;for(var t=e.hasOwnProperty("ignoreTags")?e.ignoreTags:o.ignoreTags,n=0;n<t.length;n++)this.ignoreTags.push(t[n].toUpperCase())}function a(e){return e}t.defaults=o,t.Options=i,t.contains=function(e,t){for(var n=0;n<e.length;n++)if(e[n]===t)return!0;return!1},i.prototype={resolve:function(e){var t=e.toHref(this.defaultProtocol);return{formatted:this.get("format",e.toString(),e),formattedHref:this.get("formatHref",t,e),tagName:this.get("tagName",t,e),className:this.get("className",t,e),target:this.get("target",t,e),events:this.getObject("events",t,e),attributes:this.getObject("attributes",t,e)}},check:function(e){return this.get("validate",e.toString(),e)},get:function(e,t,n){var i=void 0,a=this[e];if(!a)return a;switch(void 0===a?"undefined":r(a)){case"function":return a(t,n.type);case"object":return"function"==typeof(i=a.hasOwnProperty(n.type)?a[n.type]:o[e])?i(t,n.type):i}return a},getObject:function(e,t,n){var r=this[e];return"function"==typeof r?r(t,n.type):r}}},function(e,t,n){"use strict";t.__esModule=!0,t.start=t.run=t.TOKENS=t.State=void 0;var r=n(661),o=n(450),i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(o);var a="aaa|aarp|abarth|abb|abbott|abbvie|abc|able|abogado|abudhabi|ac|academy|accenture|accountant|accountants|aco|active|actor|ad|adac|ads|adult|ae|aeg|aero|aetna|af|afamilycompany|afl|africa|ag|agakhan|agency|ai|aig|aigo|airbus|airforce|airtel|akdn|al|alfaromeo|alibaba|alipay|allfinanz|allstate|ally|alsace|alstom|am|americanexpress|americanfamily|amex|amfam|amica|amsterdam|analytics|android|anquan|anz|ao|aol|apartments|app|apple|aq|aquarelle|ar|arab|aramco|archi|army|arpa|art|arte|as|asda|asia|associates|at|athleta|attorney|au|auction|audi|audible|audio|auspost|author|auto|autos|avianca|aw|aws|ax|axa|az|azure|ba|baby|baidu|banamex|bananarepublic|band|bank|bar|barcelona|barclaycard|barclays|barefoot|bargains|baseball|basketball|bauhaus|bayern|bb|bbc|bbt|bbva|bcg|bcn|bd|be|beats|beauty|beer|bentley|berlin|best|bestbuy|bet|bf|bg|bh|bharti|bi|bible|bid|bike|bing|bingo|bio|biz|bj|black|blackfriday|blanco|blockbuster|blog|bloomberg|blue|bm|bms|bmw|bn|bnl|bnpparibas|bo|boats|boehringer|bofa|bom|bond|boo|book|booking|boots|bosch|bostik|boston|bot|boutique|box|br|bradesco|bridgestone|broadway|broker|brother|brussels|bs|bt|budapest|bugatti|build|builders|business|buy|buzz|bv|bw|by|bz|bzh|ca|cab|cafe|cal|call|calvinklein|cam|camera|camp|cancerresearch|canon|capetown|capital|capitalone|car|caravan|cards|care|career|careers|cars|cartier|casa|case|caseih|cash|casino|cat|catering|catholic|cba|cbn|cbre|cbs|cc|cd|ceb|center|ceo|cern|cf|cfa|cfd|cg|ch|chanel|channel|chase|chat|cheap|chintai|chloe|christmas|chrome|chrysler|church|ci|cipriani|circle|cisco|citadel|citi|citic|city|cityeats|ck|cl|claims|cleaning|click|clinic|clinique|clothing|cloud|club|clubmed|cm|cn|co|coach|codes|coffee|college|cologne|com|comcast|commbank|community|company|compare|computer|comsec|condos|construction|consulting|contact|contractors|cooking|cookingchannel|cool|coop|corsica|country|coupon|coupons|courses|cr|credit|creditcard|creditunion|cricket|crown|crs|cruise|cruises|csc|cu|cuisinella|cv|cw|cx|cy|cymru|cyou|cz|dabur|dad|dance|data|date|dating|datsun|day|dclk|dds|de|deal|dealer|deals|degree|delivery|dell|deloitte|delta|democrat|dental|dentist|desi|design|dev|dhl|diamonds|diet|digital|direct|directory|discount|discover|dish|diy|dj|dk|dm|dnp|do|docs|doctor|dodge|dog|doha|domains|dot|download|drive|dtv|dubai|duck|dunlop|duns|dupont|durban|dvag|dvr|dz|earth|eat|ec|eco|edeka|edu|education|ee|eg|email|emerck|energy|engineer|engineering|enterprises|epost|epson|equipment|er|ericsson|erni|es|esq|estate|esurance|et|etisalat|eu|eurovision|eus|events|everbank|exchange|expert|exposed|express|extraspace|fage|fail|fairwinds|faith|family|fan|fans|farm|farmers|fashion|fast|fedex|feedback|ferrari|ferrero|fi|fiat|fidelity|fido|film|final|finance|financial|fire|firestone|firmdale|fish|fishing|fit|fitness|fj|fk|flickr|flights|flir|florist|flowers|fly|fm|fo|foo|food|foodnetwork|football|ford|forex|forsale|forum|foundation|fox|fr|free|fresenius|frl|frogans|frontdoor|frontier|ftr|fujitsu|fujixerox|fun|fund|furniture|futbol|fyi|ga|gal|gallery|gallo|gallup|game|games|gap|garden|gb|gbiz|gd|gdn|ge|gea|gent|genting|george|gf|gg|ggee|gh|gi|gift|gifts|gives|giving|gl|glade|glass|gle|global|globo|gm|gmail|gmbh|gmo|gmx|gn|godaddy|gold|goldpoint|golf|goo|goodhands|goodyear|goog|google|gop|got|gov|gp|gq|gr|grainger|graphics|gratis|green|gripe|grocery|group|gs|gt|gu|guardian|gucci|guge|guide|guitars|guru|gw|gy|hair|hamburg|hangout|haus|hbo|hdfc|hdfcbank|health|healthcare|help|helsinki|here|hermes|hgtv|hiphop|hisamitsu|hitachi|hiv|hk|hkt|hm|hn|hockey|holdings|holiday|homedepot|homegoods|homes|homesense|honda|honeywell|horse|hospital|host|hosting|hot|hoteles|hotels|hotmail|house|how|hr|hsbc|ht|htc|hu|hughes|hyatt|hyundai|ibm|icbc|ice|icu|id|ie|ieee|ifm|ikano|il|im|imamat|imdb|immo|immobilien|in|industries|infiniti|info|ing|ink|institute|insurance|insure|int|intel|international|intuit|investments|io|ipiranga|iq|ir|irish|is|iselect|ismaili|ist|istanbul|it|itau|itv|iveco|iwc|jaguar|java|jcb|jcp|je|jeep|jetzt|jewelry|jio|jlc|jll|jm|jmp|jnj|jo|jobs|joburg|jot|joy|jp|jpmorgan|jprs|juegos|juniper|kaufen|kddi|ke|kerryhotels|kerrylogistics|kerryproperties|kfh|kg|kh|ki|kia|kim|kinder|kindle|kitchen|kiwi|km|kn|koeln|komatsu|kosher|kp|kpmg|kpn|kr|krd|kred|kuokgroup|kw|ky|kyoto|kz|la|lacaixa|ladbrokes|lamborghini|lamer|lancaster|lancia|lancome|land|landrover|lanxess|lasalle|lat|latino|latrobe|law|lawyer|lb|lc|lds|lease|leclerc|lefrak|legal|lego|lexus|lgbt|li|liaison|lidl|life|lifeinsurance|lifestyle|lighting|like|lilly|limited|limo|lincoln|linde|link|lipsy|live|living|lixil|lk|loan|loans|locker|locus|loft|lol|london|lotte|lotto|love|lpl|lplfinancial|lr|ls|lt|ltd|ltda|lu|lundbeck|lupin|luxe|luxury|lv|ly|ma|macys|madrid|maif|maison|makeup|man|management|mango|map|market|marketing|markets|marriott|marshalls|maserati|mattel|mba|mc|mckinsey|md|me|med|media|meet|melbourne|meme|memorial|men|menu|meo|merckmsd|metlife|mg|mh|miami|microsoft|mil|mini|mint|mit|mitsubishi|mk|ml|mlb|mls|mm|mma|mn|mo|mobi|mobile|mobily|moda|moe|moi|mom|monash|money|monster|mopar|mormon|mortgage|moscow|moto|motorcycles|mov|movie|movistar|mp|mq|mr|ms|msd|mt|mtn|mtr|mu|museum|mutual|mv|mw|mx|my|mz|na|nab|nadex|nagoya|name|nationwide|natura|navy|nba|nc|ne|nec|net|netbank|netflix|network|neustar|new|newholland|news|next|nextdirect|nexus|nf|nfl|ng|ngo|nhk|ni|nico|nike|nikon|ninja|nissan|nissay|nl|no|nokia|northwesternmutual|norton|now|nowruz|nowtv|np|nr|nra|nrw|ntt|nu|nyc|nz|obi|observer|off|office|okinawa|olayan|olayangroup|oldnavy|ollo|om|omega|one|ong|onl|online|onyourside|ooo|open|oracle|orange|org|organic|origins|osaka|otsuka|ott|ovh|pa|page|panasonic|panerai|paris|pars|partners|parts|party|passagens|pay|pccw|pe|pet|pf|pfizer|pg|ph|pharmacy|phd|philips|phone|photo|photography|photos|physio|piaget|pics|pictet|pictures|pid|pin|ping|pink|pioneer|pizza|pk|pl|place|play|playstation|plumbing|plus|pm|pn|pnc|pohl|poker|politie|porn|post|pr|pramerica|praxi|press|prime|pro|prod|productions|prof|progressive|promo|properties|property|protection|pru|prudential|ps|pt|pub|pw|pwc|py|qa|qpon|quebec|quest|qvc|racing|radio|raid|re|read|realestate|realtor|realty|recipes|red|redstone|redumbrella|rehab|reise|reisen|reit|reliance|ren|rent|rentals|repair|report|republican|rest|restaurant|review|reviews|rexroth|rich|richardli|ricoh|rightathome|ril|rio|rip|rmit|ro|rocher|rocks|rodeo|rogers|room|rs|rsvp|ru|rugby|ruhr|run|rw|rwe|ryukyu|sa|saarland|safe|safety|sakura|sale|salon|samsclub|samsung|sandvik|sandvikcoromant|sanofi|sap|sapo|sarl|sas|save|saxo|sb|sbi|sbs|sc|sca|scb|schaeffler|schmidt|scholarships|school|schule|schwarz|science|scjohnson|scor|scot|sd|se|search|seat|secure|security|seek|select|sener|services|ses|seven|sew|sex|sexy|sfr|sg|sh|shangrila|sharp|shaw|shell|shia|shiksha|shoes|shop|shopping|shouji|show|showtime|shriram|si|silk|sina|singles|site|sj|sk|ski|skin|sky|skype|sl|sling|sm|smart|smile|sn|sncf|so|soccer|social|softbank|software|sohu|solar|solutions|song|sony|soy|space|spiegel|spot|spreadbetting|sr|srl|srt|st|stada|staples|star|starhub|statebank|statefarm|statoil|stc|stcgroup|stockholm|storage|store|stream|studio|study|style|su|sucks|supplies|supply|support|surf|surgery|suzuki|sv|swatch|swiftcover|swiss|sx|sy|sydney|symantec|systems|sz|tab|taipei|talk|taobao|target|tatamotors|tatar|tattoo|tax|taxi|tc|tci|td|tdk|team|tech|technology|tel|telecity|telefonica|temasek|tennis|teva|tf|tg|th|thd|theater|theatre|tiaa|tickets|tienda|tiffany|tips|tires|tirol|tj|tjmaxx|tjx|tk|tkmaxx|tl|tm|tmall|tn|to|today|tokyo|tools|top|toray|toshiba|total|tours|town|toyota|toys|tr|trade|trading|training|travel|travelchannel|travelers|travelersinsurance|trust|trv|tt|tube|tui|tunes|tushu|tv|tvs|tw|tz|ua|ubank|ubs|uconnect|ug|uk|unicom|university|uno|uol|ups|us|uy|uz|va|vacations|vana|vanguard|vc|ve|vegas|ventures|verisign|versicherung|vet|vg|vi|viajes|video|vig|viking|villas|vin|vip|virgin|visa|vision|vista|vistaprint|viva|vivo|vlaanderen|vn|vodka|volkswagen|volvo|vote|voting|voto|voyage|vu|vuelos|wales|walmart|walter|wang|wanggou|warman|watch|watches|weather|weatherchannel|webcam|weber|website|wed|wedding|weibo|weir|wf|whoswho|wien|wiki|williamhill|win|windows|wine|winners|wme|wolterskluwer|woodside|work|works|world|wow|ws|wtc|wtf|xbox|xerox|xfinity|xihuan|xin|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--30rr7y|xn--3bst00m|xn--3ds443g|xn--3e0b707e|xn--3hcrj9c|xn--3oq18vl8pn36a|xn--3pxu8k|xn--42c2d9a|xn--45br5cyl|xn--45brj9c|xn--45q11c|xn--4gbrim|xn--54b7fta0cc|xn--55qw42g|xn--55qx5d|xn--5su34j936bgsg|xn--5tzm5g|xn--6frz82g|xn--6qq986b3xl|xn--80adxhks|xn--80ao21a|xn--80aqecdr1a|xn--80asehdb|xn--80aswg|xn--8y0a063a|xn--90a3ac|xn--90ae|xn--90ais|xn--9dbq2a|xn--9et52u|xn--9krt00a|xn--b4w605ferd|xn--bck1b9a5dre4c|xn--c1avg|xn--c2br7g|xn--cck2b3b|xn--cg4bki|xn--clchc0ea0b2g2a9gcd|xn--czr694b|xn--czrs0t|xn--czru2d|xn--d1acj3b|xn--d1alf|xn--e1a4c|xn--eckvdtc9d|xn--efvy88h|xn--estv75g|xn--fct429k|xn--fhbei|xn--fiq228c5hs|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--fjq720a|xn--flw351e|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--fzys8d69uvgm|xn--g2xx48c|xn--gckr3f0f|xn--gecrj9c|xn--gk3at1e|xn--h2breg3eve|xn--h2brj9c|xn--h2brj9c8c|xn--hxt814e|xn--i1b6b1a6a2e|xn--imr513n|xn--io0a7i|xn--j1aef|xn--j1amh|xn--j6w193g|xn--jlq61u9w7b|xn--jvr189m|xn--kcrx77d1x4a|xn--kprw13d|xn--kpry57d|xn--kpu716f|xn--kput3i|xn--l1acc|xn--lgbbat1ad8j|xn--mgb9awbf|xn--mgba3a3ejt|xn--mgba3a4f16a|xn--mgba7c0bbn0a|xn--mgbaakc7dvf|xn--mgbaam7a8h|xn--mgbab2bd|xn--mgbai9azgqp6j|xn--mgbayh7gpa|xn--mgbb9fbpob|xn--mgbbh1a|xn--mgbbh1a71e|xn--mgbc0a9azcg|xn--mgbca7dzdo|xn--mgberp4a5d4ar|xn--mgbgu82a|xn--mgbi4ecexp|xn--mgbpl2fh|xn--mgbt3dhd|xn--mgbtx2b|xn--mgbx4cd0ab|xn--mix891f|xn--mk1bu44c|xn--mxtq1m|xn--ngbc5azd|xn--ngbe9e0a|xn--ngbrx|xn--node|xn--nqv7f|xn--nqv7fs00ema|xn--nyqy26a|xn--o3cw4h|xn--ogbpf8fl|xn--p1acf|xn--p1ai|xn--pbt977c|xn--pgbs0dh|xn--pssy2u|xn--q9jyb4c|xn--qcka1pmc|xn--qxam|xn--rhqv96g|xn--rovu88b|xn--rvc1e0am3e|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--tckwe|xn--tiq49xqyj|xn--unup4y|xn--vermgensberater-ctb|xn--vermgensberatung-pwb|xn--vhquv|xn--vuq861b|xn--w4r85el8fhu5dnra|xn--w4rs40l|xn--wgbh1c|xn--wgbl6a|xn--xhq521b|xn--xkc2al3hye2a|xn--xkc2dl3a5ee0h|xn--y9a3aq|xn--yfro4i67o|xn--ygbi2ammx|xn--zfr164b|xperia|xxx|xyz|yachts|yahoo|yamaxun|yandex|ye|yodobashi|yoga|yokohama|you|youtube|yt|yun|za|zappos|zara|zero|zip|zippo|zm|zone|zuerich|zw".split("|"),s="0123456789".split(""),l="0123456789abcdefghijklmnopqrstuvwxyz".split(""),u=[" ","\f","\r","\t","\v"," "," ","᠎"],c=[],f=function(e){return new r.CharacterState(e)},d=f(),p=f(o.NUM),m=f(o.DOMAIN),h=f(),_=f(o.WS);d.on("@",f(o.AT)).on(".",f(o.DOT)).on("+",f(o.PLUS)).on("#",f(o.POUND)).on("?",f(o.QUERY)).on("/",f(o.SLASH)).on("_",f(o.UNDERSCORE)).on(":",f(o.COLON)).on("{",f(o.OPENBRACE)).on("[",f(o.OPENBRACKET)).on("<",f(o.OPENANGLEBRACKET)).on("(",f(o.OPENPAREN)).on("}",f(o.CLOSEBRACE)).on("]",f(o.CLOSEBRACKET)).on(">",f(o.CLOSEANGLEBRACKET)).on(")",f(o.CLOSEPAREN)).on("&",f(o.AMPERSAND)).on([",",";","!",'"',"'"],f(o.PUNCTUATION)),d.on("\n",f(o.NL)).on(u,_),_.on(u,_);for(var g=0;g<a.length;g++){var v=(0,r.stateify)(a[g],d,o.TLD,o.DOMAIN);c.push.apply(c,v)}var y=(0,r.stateify)("file",d,o.DOMAIN,o.DOMAIN),b=(0,r.stateify)("ftp",d,o.DOMAIN,o.DOMAIN),E=(0,r.stateify)("http",d,o.DOMAIN,o.DOMAIN),C=(0,r.stateify)("mailto",d,o.DOMAIN,o.DOMAIN);c.push.apply(c,y),c.push.apply(c,b),c.push.apply(c,E),c.push.apply(c,C);var S=y.pop(),D=b.pop(),w=E.pop(),T=C.pop(),x=f(o.DOMAIN),R=f(o.PROTOCOL),k=f(o.MAILTO);D.on("s",x).on(":",R),w.on("s",x).on(":",R),c.push(x),S.on(":",R),x.on(":",R),T.on(":",k);var N=(0,r.stateify)("localhost",d,o.LOCALHOST,o.DOMAIN);c.push.apply(c,N),d.on(s,p),p.on("-",h).on(s,p).on(l,m),m.on("-",h).on(l,m);for(var I=0;I<c.length;I++)c[I].on("-",h).on(l,m);h.on("-",h).on(s,m).on(l,m),d.defaultTransition=f(o.SYM);var O=d;t.State=r.CharacterState,t.TOKENS=i,t.run=function(e){for(var t=e.replace(/[A-Z]/g,function(e){return e.toLowerCase()}),n=e.length,r=[],o=0;o<n;){for(var i=d,a=null,s=0,l=null,u=-1;o<n&&(a=i.next(t[o]));)(i=a).accepts()?(u=0,l=i):u>=0&&u++,s++,o++;if(!(u<0)){o-=u,s-=u;var c=l.emit();r.push(new c(e.substr(o-s,s)))}}return r},t.start=O},function(e,t,n){"use strict";t.__esModule=!0,t.start=t.run=t.TOKENS=t.State=void 0;var r=n(661),o=n(1545),i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(o),a=n(450);var s=function(e){return new r.TokenState(e)},l=s(),u=s(),c=s(),f=s(),d=s(),p=s(),m=s(),h=s(o.URL),_=s(),g=s(o.URL),v=s(o.URL),y=s(),b=s(),E=s(),C=s(),S=s(),D=s(o.URL),w=s(o.URL),T=s(o.URL),x=s(o.URL),R=s(),k=s(),N=s(),I=s(),O=s(),A=s(),M=s(o.EMAIL),P=s(),L=s(o.EMAIL),F=s(o.MAILTOEMAIL),U=s(),j=s(),B=s(),G=s(),q=s(o.NL);l.on(a.NL,q).on(a.PROTOCOL,u).on(a.MAILTO,c).on(a.SLASH,f),u.on(a.SLASH,f),f.on(a.SLASH,d),l.on(a.TLD,p).on(a.DOMAIN,p).on(a.LOCALHOST,h).on(a.NUM,p),d.on(a.TLD,v).on(a.DOMAIN,v).on(a.NUM,v).on(a.LOCALHOST,v),p.on(a.DOT,m),O.on(a.DOT,A),m.on(a.TLD,h).on(a.DOMAIN,p).on(a.NUM,p).on(a.LOCALHOST,p),A.on(a.TLD,M).on(a.DOMAIN,O).on(a.NUM,O).on(a.LOCALHOST,O),h.on(a.DOT,m),M.on(a.DOT,A),h.on(a.COLON,_).on(a.SLASH,v),_.on(a.NUM,g),g.on(a.SLASH,v),M.on(a.COLON,P),P.on(a.NUM,L);var V=[a.DOMAIN,a.AT,a.LOCALHOST,a.NUM,a.PLUS,a.POUND,a.PROTOCOL,a.SLASH,a.TLD,a.UNDERSCORE,a.SYM,a.AMPERSAND],H=[a.COLON,a.DOT,a.QUERY,a.PUNCTUATION,a.CLOSEBRACE,a.CLOSEBRACKET,a.CLOSEANGLEBRACKET,a.CLOSEPAREN,a.OPENBRACE,a.OPENBRACKET,a.OPENANGLEBRACKET,a.OPENPAREN];v.on(a.OPENBRACE,b).on(a.OPENBRACKET,E).on(a.OPENANGLEBRACKET,C).on(a.OPENPAREN,S),y.on(a.OPENBRACE,b).on(a.OPENBRACKET,E).on(a.OPENANGLEBRACKET,C).on(a.OPENPAREN,S),b.on(a.CLOSEBRACE,v),E.on(a.CLOSEBRACKET,v),C.on(a.CLOSEANGLEBRACKET,v),S.on(a.CLOSEPAREN,v),D.on(a.CLOSEBRACE,v),w.on(a.CLOSEBRACKET,v),T.on(a.CLOSEANGLEBRACKET,v),x.on(a.CLOSEPAREN,v),R.on(a.CLOSEBRACE,v),k.on(a.CLOSEBRACKET,v),N.on(a.CLOSEANGLEBRACKET,v),I.on(a.CLOSEPAREN,v),b.on(V,D),E.on(V,w),C.on(V,T),S.on(V,x),b.on(H,R),E.on(H,k),C.on(H,N),S.on(H,I),D.on(V,D),w.on(V,w),T.on(V,T),x.on(V,x),D.on(H,D),w.on(H,w),T.on(H,T),x.on(H,x),R.on(V,D),k.on(V,w),N.on(V,T),I.on(V,x),R.on(H,R),k.on(H,k),N.on(H,N),I.on(H,I),v.on(V,v),y.on(V,v),v.on(H,y),y.on(H,y),c.on(a.TLD,F).on(a.DOMAIN,F).on(a.NUM,F).on(a.LOCALHOST,F),F.on(V,F).on(H,U),U.on(V,F).on(H,U);var Y=[a.DOMAIN,a.NUM,a.PLUS,a.POUND,a.QUERY,a.UNDERSCORE,a.SYM,a.AMPERSAND,a.TLD];p.on(Y,j).on(a.AT,B),h.on(Y,j).on(a.AT,B),m.on(Y,j),j.on(Y,j).on(a.AT,B).on(a.DOT,G),G.on(Y,j),B.on(a.TLD,O).on(a.DOMAIN,O).on(a.LOCALHOST,M);t.State=r.TokenState,t.TOKENS=i,t.run=function(e){for(var t=e.length,n=0,r=[],i=[];n<t;){for(var a=l,s=null,u=null,c=0,f=null,d=-1;n<t&&!(s=a.next(e[n]));)i.push(e[n++]);for(;n<t&&(u=s||a.next(e[n]));)s=null,(a=u).accepts()?(d=0,f=a):d>=0&&d++,n++,c++;if(d<0)for(var p=n-c;p<n;p++)i.push(e[p]);else{i.length>0&&(r.push(new o.TEXT(i)),i=[]),n-=d,c-=d;var m=f.emit();r.push(new m(e.slice(n-c,n)))}}return i.length>0&&r.push(new o.TEXT(i)),r},t.start=l},function(e,t,n){"use strict";t.__esModule=!0,t.URL=t.TEXT=t.NL=t.EMAIL=t.MAILTOEMAIL=t.Base=void 0;var r=n(662),o=n(310),i=n(450);function a(e){return e instanceof i.DOMAIN||e instanceof i.TLD}var s=(0,r.createTokenClass)();s.prototype={type:"token",isLink:!1,toString:function(){for(var e=[],t=0;t<this.v.length;t++)e.push(this.v[t].toString());return e.join("")},toHref:function(){return this.toString()},toObject:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"http";return{type:this.type,value:this.toString(),href:this.toHref(e)}}};var l=(0,o.inherits)(s,(0,r.createTokenClass)(),{type:"email",isLink:!0}),u=(0,o.inherits)(s,(0,r.createTokenClass)(),{type:"email",isLink:!0,toHref:function(){return"mailto:"+this.toString()}}),c=(0,o.inherits)(s,(0,r.createTokenClass)(),{type:"text"}),f=(0,o.inherits)(s,(0,r.createTokenClass)(),{type:"nl"}),d=(0,o.inherits)(s,(0,r.createTokenClass)(),{type:"url",isLink:!0,toHref:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"http",t=!1,n=!1,r=this.v,o=[],s=0;r[s]instanceof i.PROTOCOL;)t=!0,o.push(r[s].toString().toLowerCase()),s++;for(;r[s]instanceof i.SLASH;)n=!0,o.push(r[s].toString()),s++;for(;a(r[s]);)o.push(r[s].toString().toLowerCase()),s++;for(;s<r.length;s++)o.push(r[s].toString());return o=o.join(""),t||n||(o=e+"://"+o),o},hasProtocol:function(){return this.v[0]instanceof i.PROTOCOL}});t.Base=s,t.MAILTOEMAIL=l,t.EMAIL=u,t.NL=f,t.TEXT=c,t.URL=d},function(e,t,n){e.exports=n(1547).default},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(449));var o=r.tokenize,i=r.options.Options;function a(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function s(e){return e.replace(/"/g,""")}function l(e){if(!e)return"";var t=[];for(var n in e){var r=e[n]+"";t.push(n+'="'+s(r)+'"')}return t.join(" ")}function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t=new i(t);for(var n=o(e),r=[],u=0;u<n.length;u++){var c=n[u];if("nl"===c.type&&t.nl2br)r.push("<br>\n");else if(c.isLink&&t.check(c)){var f=t.resolve(c),d=f.formatted,p=f.formattedHref,m=f.tagName,h=f.className,_=f.target,g=f.attributes,v="<"+m+' href="'+s(p)+'"';h&&(v+=' class="'+s(h)+'"'),_&&(v+=' target="'+s(_)+'"'),g&&(v+=" "+l(g)),v+=">"+a(d)+"</"+m+">",r.push(v)}else r.push(a(c.toString()))}return r.join("")}if(!String.prototype.linkify)try{Object.defineProperty(String.prototype,"linkify",{set:function(){},get:function(){return function(e){return u(this,e)}}})}catch(e){String.prototype.linkify||(String.prototype.linkify=function(e){return u(this,e)})}t.default=u},function(e,t,n){"use strict";var r=_(n(20)),o=_(n(0)),i=_(n(1)),a=_(n(17)),s=n(2),l=_(n(3)),u=_(n(1549)),c=_(n(8)),f=_(n(311)),d=_(n(291)),p=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(410)),m=_(n(10)),h=n(248);function _(e){return e&&e.__esModule?e:{default:e}}function g(e){return e?e.getPendingEvents().filter(function(e){return e.status===a.default.EventStatus.NOT_SENT}):[]}e.exports=o.default.createClass({displayName:"RoomStatusBar",propTypes:{room:i.default.object.isRequired,numUnreadMessages:i.default.number,atEndOfLiveTimeline:i.default.bool,sentMessageAndIsAlone:i.default.bool,hasActiveCall:i.default.bool,whoIsTypingLimit:i.default.number,isPeeking:i.default.bool,onResendAllClick:i.default.func,onCancelAllClick:i.default.func,onInviteClick:i.default.func,onStopWarningClick:i.default.func,onScrollToBottomClick:i.default.func,onResize:i.default.func,onHidden:i.default.func,onVisible:i.default.func},getDefaultProps:function(){return{whoIsTypingLimit:3}},getInitialState:function(){return{syncState:c.default.get().getSyncState(),syncStateData:c.default.get().getSyncStateData(),usersTyping:u.default.usersTypingApartFromMe(this.props.room),unsentMessages:g(this.props.room)}},componentWillMount:function(){c.default.get().on("sync",this.onSyncStateChange),c.default.get().on("RoomMember.typing",this.onRoomMemberTyping),c.default.get().on("Room.localEchoUpdated",this._onRoomLocalEchoUpdated),this._checkSize()},componentDidUpdate:function(){this._checkSize()},componentWillUnmount:function(){var e=c.default.get();e&&(e.removeListener("sync",this.onSyncStateChange),e.removeListener("RoomMember.typing",this.onRoomMemberTyping),e.removeListener("Room.localEchoUpdated",this._onRoomLocalEchoUpdated))},onSyncStateChange:function(e,t,n){"SYNCING"===e&&"SYNCING"===t||this.setState({syncState:e,syncStateData:n})},onRoomMemberTyping:function(e,t){this.setState({usersTyping:u.default.usersTypingApartFromMeAndIgnored(this.props.room)})},_onSendWithoutVerifyingClick:function(){var e=this;p.getUnknownDevicesForRoom(c.default.get(),this.props.room).then(function(t){p.markAllDevicesKnown(c.default.get(),t),d.default.resendUnsentEvents(e.props.room)})},_onResendAllClick:function(){d.default.resendUnsentEvents(this.props.room),m.default.dispatch({action:"focus_composer"})},_onCancelAllClick:function(){d.default.cancelUnsentEvents(this.props.room),m.default.dispatch({action:"focus_composer"})},_onShowDevicesClick:function(){p.showUnknownDeviceDialogForMessages(c.default.get(),this.props.room)},_onRoomLocalEchoUpdated:function(e,t,n,r){t.roomId===this.props.room.roomId&&this.setState({unsentMessages:g(this.props.room)})},_checkSize:function(){this._getSize()?this.props.onVisible&&this.props.onVisible():this.props.onHidden&&this.props.onHidden()},_getSize:function(){return this._shouldShowConnectionError()||this.state.usersTyping.length>0||this.props.numUnreadMessages||!this.props.atEndOfLiveTimeline||this.props.hasActiveCall||this.props.sentMessageAndIsAlone?1:this.state.unsentMessages.length>0?2:0},_getIndicator:function(e){if(this.props.numUnreadMessages)return o.default.createElement("div",{className:"mx_RoomStatusBar_scrollDownIndicator",onClick:this.props.onScrollToBottomClick},o.default.createElement("img",{src:"img/newmessages.svg",width:"24",height:"24",alt:""}));var t=l.default.getComponent("elements.AccessibleButton");if(!this.props.atEndOfLiveTimeline)return o.default.createElement(t,{className:"mx_RoomStatusBar_scrollDownIndicator",onClick:this.props.onScrollToBottomClick},o.default.createElement("img",{src:"img/scrolldown.svg",width:"24",height:"24",alt:(0,s._t)("Scroll to bottom of page"),title:(0,s._t)("Scroll to bottom of page")}));if(this.props.hasActiveCall){var n=l.default.getComponent("elements.TintableSvg");return o.default.createElement(n,{src:"img/sound-indicator.svg",width:"23",height:"20"})}return this._shouldShowConnectionError()?null:e?o.default.createElement("div",{className:"mx_RoomStatusBar_typingIndicatorAvatars"},this._renderTypingIndicatorAvatars(this.props.whoIsTypingLimit)):null},_renderTypingIndicatorAvatars:function(e){var t=this.state.usersTyping,n=0;t.length>e&&(n=t.length-e+1,t=t.slice(0,e-1));var r=t.map(function(e){return o.default.createElement(f.default,{key:e.userId,member:e,width:24,height:24,resizeMethod:"crop"})});return n>0&&r.push(o.default.createElement("span",{className:"mx_RoomStatusBar_typingIndicatorRemaining",key:"others"},"+",n)),r},_shouldShowConnectionError:function(){var e=Boolean(this.state.syncStateData&&this.state.syncStateData.error&&"M_RESOURCE_LIMIT_EXCEEDED"===this.state.syncStateData.error.errcode);return"ERROR"===this.state.syncState&&!e},_getUnsentMessageContent:function(){var e=this,t=this.state.unsentMessages;if(!t.length)return null;var n=void 0,i=void 0;if(t.some(function(e){return e.error&&"UnknownDeviceError"===e.error.name}))n=(0,s._t)("Message not sent due to unknown devices being present"),i=(0,s._t)("<showDevicesText>Show devices</showDevicesText>, <sendAnywayText>send anyway</sendAnywayText> or <cancelText>cancel</cancelText>.",{},{showDevicesText:function(t){return o.default.createElement("a",{className:"mx_RoomStatusBar_resend_link",key:"resend",onClick:e._onShowDevicesClick},t)},sendAnywayText:function(t){return o.default.createElement("a",{className:"mx_RoomStatusBar_resend_link",key:"sendAnyway",onClick:e._onSendWithoutVerifyingClick},t)},cancelText:function(t){return o.default.createElement("a",{className:"mx_RoomStatusBar_resend_link",key:"cancel",onClick:e._onCancelAllClick},t)}});else{var a=null,l=null,u=!0,c=!1,f=void 0;try{for(var d,p=(0,r.default)(t);!(u=(d=p.next()).done);u=!0){var m=d.value;if(m.error&&"M_CONSENT_NOT_GIVEN"===m.error.errcode){a=m.error;break}if(m.error&&"M_RESOURCE_LIMIT_EXCEEDED"===m.error.errcode){l=m.error;break}}}catch(e){c=!0,f=e}finally{try{!u&&p.return&&p.return()}finally{if(c)throw f}}n=a?(0,s._t)("You can't send any messages until you review and agree to <consentLink>our terms and conditions</consentLink>.",{},{consentLink:function(e){return o.default.createElement("a",{href:a.data&&a.data.consent_uri,target:"_blank"},e)}}):l?(0,h.messageForResourceLimitError)(l.data.limit_type,l.data.admin_contact,{monthly_active_user:(0,s._td)("Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please <a>contact your service administrator</a> to continue using the service."),"":(0,s._td)("Your message wasn't sent because this homeserver has exceeded a resource limit. Please <a>contact your service administrator</a> to continue using the service.")}):1===t.length&&t[0].error&&t[0].error.data&&t[0].error.data.error?t[0].error.data.error:(0,s._t)("%(count)s of your messages have not been sent.",{count:t.length}),i=(0,s._t)("%(count)s <resendText>Resend all</resendText> or <cancelText>cancel all</cancelText> now. You can also select individual messages to resend or cancel.",{count:t.length},{resendText:function(t){return o.default.createElement("a",{className:"mx_RoomStatusBar_resend_link",key:"resend",onClick:e._onResendAllClick},t)},cancelText:function(t){return o.default.createElement("a",{className:"mx_RoomStatusBar_resend_link",key:"cancel",onClick:e._onCancelAllClick},t)}})}return o.default.createElement("div",{className:"mx_RoomStatusBar_connectionLostBar"},o.default.createElement("img",{src:"img/warning.svg",width:"24",height:"23",title:(0,s._t)("Warning"),alt:""}),o.default.createElement("div",null,o.default.createElement("div",{className:"mx_RoomStatusBar_connectionLostBar_title"},n),o.default.createElement("div",{className:"mx_RoomStatusBar_connectionLostBar_desc"},i)))},_getContent:function(){var e=this,t=l.default.getComponent("elements.EmojiText");if(this._shouldShowConnectionError())return o.default.createElement("div",{className:"mx_RoomStatusBar_connectionLostBar"},o.default.createElement("img",{src:"img/warning.svg",width:"24",height:"23",title:"/!\\ ",alt:"/!\\ "}),o.default.createElement("div",null,o.default.createElement("div",{className:"mx_RoomStatusBar_connectionLostBar_title"},(0,s._t)("Connectivity to the server has been lost.")),o.default.createElement("div",{className:"mx_RoomStatusBar_connectionLostBar_desc"},(0,s._t)("Sent messages will be stored until your connection has returned."))));if(this.state.unsentMessages.length>0)return this._getUnsentMessageContent();if(this.props.numUnreadMessages){var n=(0,s._t)("%(count)s new messages",{count:this.props.numUnreadMessages});return o.default.createElement("div",{className:"mx_RoomStatusBar_unreadMessagesBar",onClick:this.props.onScrollToBottomClick},n)}var r=u.default.whoIsTypingString(this.state.usersTyping,this.props.whoIsTypingLimit);return r?o.default.createElement("div",{className:"mx_RoomStatusBar_typingBar"},o.default.createElement(t,null,r)):this.props.hasActiveCall?o.default.createElement("div",{className:"mx_RoomStatusBar_callBar"},o.default.createElement("b",null,(0,s._t)("Active call"))):this.props.sentMessageAndIsAlone&&!this.props.isPeeking?o.default.createElement("div",{className:"mx_RoomStatusBar_isAlone"},(0,s._t)("There's no one else here! Would you like to <inviteText>invite others</inviteText> or <nowarnText>stop warning about the empty room</nowarnText>?",{},{inviteText:function(t){return o.default.createElement("a",{className:"mx_RoomStatusBar_resend_link",key:"invite",onClick:e.props.onInviteClick},t)},nowarnText:function(t){return o.default.createElement("a",{className:"mx_RoomStatusBar_resend_link",key:"nowarn",onClick:e.props.onStopWarningClick},t)}})):null},render:function(){var e=this._getContent(),t=this._getIndicator(this.state.usersTyping.length>0);return o.default.createElement("div",{className:"mx_RoomStatusBar"},o.default.createElement("div",{className:"mx_RoomStatusBar_indicator"},t),o.default.createElement("div",{role:"alert"},e))}})},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(14)),o=n(2);var i=n(8);e.exports={usersTypingApartFromMeAndIgnored:function(e){return this.usersTyping(e,[i.get().credentials.userId].concat(i.get().getIgnoredUsers()))},usersTypingApartFromMe:function(e){return this.usersTyping(e,[i.get().credentials.userId])},usersTyping:function(e,t){var n=[];void 0===t&&(t=[]);for(var o=(0,r.default)(e.currentState.members),i=0;i<o.length;++i){var a=o[i];e.currentState.members[a].typing&&-1==t.indexOf(a)&&n.push(e.currentState.members[a])}return n},whoIsTypingString:function(e,t){var n=0;if(e.length>t&&(n=e.length-t+1),0==e.length)return"";if(1==e.length)return(0,o._t)("%(displayName)s is typing",{displayName:e[0].name});var r=e.map(function(e){return e.name});if(n>=1)return(0,o._t)("%(names)s and %(count)s others are typing",{names:r.slice(0,t-1).join(", "),count:n});var i=r.pop();return(0,o._t)("%(names)s and %(lastPerson)s are typing",{names:r.join(", "),lastPerson:i})}}},function(e,t,n){"use strict";var r=v(n(51)),o=v(n(20)),i=v(n(0)),a=v(n(24)),s=v(n(3)),l=n(197),u=n(2),c=v(n(10)),f=v(n(309)),d=g(n(451)),p=g(n(250)),m=n(80),h=n(17),_=v(n(1));function g(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function v(e){return e&&e.__esModule?e:{default:e}}var y=i.default.createClass({displayName:"RoomSubList",debug:!1,propTypes:{list:_.default.arrayOf(_.default.object).isRequired,label:_.default.string.isRequired,tagName:_.default.string,editable:_.default.bool,order:_.default.string.isRequired,isInvite:_.default.bool,startAsHidden:_.default.bool,showSpinner:_.default.bool,collapsed:_.default.bool.isRequired,onHeaderClick:_.default.func,alwaysShowHeader:_.default.bool,incomingCall:_.default.object,onShowMoreRooms:_.default.func,searchFilter:_.default.string,emptyContent:_.default.node,headerItems:_.default.node,extraTiles:_.default.arrayOf(_.default.node),showEmpty:_.default.bool},getInitialState:function(){return{hidden:this.props.startAsHidden||!1,truncateAt:10,sortedList:[]}},getDefaultProps:function(){return{onHeaderClick:function(){},onShowMoreRooms:function(){},extraTiles:[],isInvite:!1,showEmpty:!0}},componentWillMount:function(){this.setState({sortedList:this.applySearchFilter(this.props.list,this.props.searchFilter)}),this.dispatcherRef=c.default.register(this.onAction)},componentWillUnmount:function(){c.default.unregister(this.dispatcherRef)},componentWillReceiveProps:function(e){this.setState({sortedList:this.applySearchFilter(e.list,e.searchFilter)})},applySearchFilter:function(e,t){if(""===t)return e;var n=t.toLowerCase();return e.filter(function(e){return e.name&&e.name.toLowerCase().includes(n)||"#"===t[0]&&e.getAliases().some(function(e){return e.toLowerCase().startsWith(n)})})},isCollapsableOnClick:function(){var e=this.refs.header.dataset.stuck;return!(!this.state.hidden&&void 0!==e&&"none"!==e)},onAction:function(e){"on_room_read"===e.action&&this.props.list.some(function(t){return t.roomId===e.roomId})&&this.forceUpdate()},onClick:function(e){if(this.isCollapsableOnClick()){var t=!this.state.hidden;this.setState({hidden:t}),t&&this.setState({truncateAt:10}),this.props.onShowMoreRooms(),this.props.onHeaderClick(t)}else this.props.onHeaderClick(this.state.hidden,this.refs.header.dataset.originalPosition)},onRoomTileClick:function(e,t){c.default.dispatch({action:"view_room",room_id:e,clear_search:t&&(t.keyCode===m.KeyCode.ENTER||t.keyCode===m.KeyCode.SPACE)})},_shouldShowNotifBadge:function(e){return[d.ALL_MESSAGES,d.ALL_MESSAGES_LOUD].indexOf(e)>-1},_shouldShowMentionBadge:function(e){return e!==d.MUTE},roomNotificationCount:function(e){var t=this;return this.props.isInvite?[0,!0]:this.props.list.reduce(function(n,r,o){if(void 0===e||o>=e){var i=d.getRoomNotifsState(r.roomId),a=r.getUnreadNotificationCount("highlight")>0,s=r.getUnreadNotificationCount(),l=s>0&&t._shouldShowNotifBadge(i),u=a&&t._shouldShowMentionBadge(i);(l||u)&&(n[0]+=s,a&&(n[1]=!0))}return n},[0,!1])},_updateSubListCount:function(){this.setState(this.state)},makeRoomTiles:function(){var e=this,t=s.default.getComponent("rooms.DNDRoomTile"),n=s.default.getComponent("rooms.RoomTile");return this.state.sortedList.map(function(r,o){var a=e.props.editable?t:n;return i.default.createElement(a,{index:o,room:r,roomSubList:e,tagName:e.props.tagName,key:r.roomId,collapsed:e.props.collapsed||!1,unread:f.default.doesRoomHaveUnreadMessages(r),highlight:r.getUnreadNotificationCount("highlight")>0||e.props.isInvite,isInvite:e.props.isInvite,refreshSubList:e._updateSubListCount,incomingCall:null,onClick:e.onRoomTileClick})})},_onNotifBadgeClick:function(e){e.preventDefault(),e.stopPropagation();var t=!0,n=!1,r=void 0;try{for(var i,a=(0,o.default)(this.state.sortedList);!(t=(i=a.next()).done);t=!0){var s=i.value,l=d.getRoomNotifsState(s.roomId),u=s.getUnreadNotificationCount("highlight")>0,f=s.getUnreadNotificationCount()>0&&this._shouldShowNotifBadge(l),p=u&&this._shouldShowMentionBadge(l);if(f||p)return void c.default.dispatch({action:"view_room",room_id:s.roomId})}}catch(e){n=!0,r=e}finally{try{!t&&a.return&&a.return()}finally{if(n)throw r}}},_onInviteBadgeClick:function(e){e.preventDefault(),e.stopPropagation(),this.state.sortedList&&this.state.sortedList.length>0?c.default.dispatch({action:"view_room",room_id:this.state.sortedList[0].roomId}):this.props.extraTiles&&this.props.extraTiles.length>0&&this.props.extraTiles[0].props&&this.props.extraTiles[0].props.group instanceof h.Group&&c.default.dispatch({action:"view_group",group_id:this.props.extraTiles[0].props.group.groupId})},_getHeaderJsx:function(){var e=this.roomNotificationCount(),t=e[0],n=e[1],r=this.props.list.length+(this.props.extraTiles||[]).length,o=r>0?r:"",l=(0,a.default)({mx_RoomSubList_chevron:!0,mx_RoomSubList_chevronRight:this.state.hidden,mx_RoomSubList_chevronDown:!this.state.hidden}),u=(0,a.default)({mx_RoomSubList_badge:!0,mx_RoomSubList_badgeHighlight:n}),c=void 0;t>0?c=i.default.createElement("div",{className:u,onClick:this._onNotifBadgeClick},p.formatCount(t)):this.props.isInvite&&(c=i.default.createElement("div",{className:u,onClick:this._onInviteBadgeClick},"!"));var f=void 0;this.props.collapsed&&(f=this.props.label,""!==o&&(f+=" ["+o+"]"));var d=void 0;if(this.props.incomingCall){var m=this;if(1===this.props.list.filter(function(e){return m.props.incomingCall.roomId===e.roomId}).length){var h=s.default.getComponent("voip.IncomingCallBox");d=i.default.createElement(h,{className:"mx_RoomSubList_incomingCall",incomingCall:this.props.incomingCall})}}var _=""===this.props.searchFilter?"0":"-1",g=s.default.getComponent("elements.AccessibleButton");return i.default.createElement("div",{className:"mx_RoomSubList_labelContainer",title:f,ref:"header"},i.default.createElement(g,{onClick:this.onClick,className:"mx_RoomSubList_label",tabIndex:_},this.props.collapsed?"":this.props.label,i.default.createElement("div",{className:"mx_RoomSubList_roomCount"},o),i.default.createElement("div",{className:l}),c,d))},_createOverflowTile:function(e,t){var n=i.default.createElement("div",{className:"mx_RoomSubList_chevronDown"}),r=this.roomNotificationCount(10),o=r[0],l=r[1];o&&!this.props.collapsed&&(n=p.formatCount(o));var c=(0,a.default)({mx_RoomSubList_moreBadge:!0,mx_RoomSubList_moreBadgeNotify:o&&!this.props.collapsed,mx_RoomSubList_moreBadgeHighlight:l&&!this.props.collapsed}),f=s.default.getComponent("elements.AccessibleButton");return i.default.createElement(f,{className:"mx_RoomSubList_ellipsis",onClick:this._showFullMemberList},i.default.createElement("div",{className:"mx_RoomSubList_line"}),i.default.createElement("div",{className:"mx_RoomSubList_more"},(0,u._t)("more")),i.default.createElement("div",{className:c},n))},_showFullMemberList:function(){this.setState({truncateAt:-1}),this.props.onShowMoreRooms(),this.props.onHeaderClick(!1)},render:function(){var e,t=s.default.getComponent("elements.TruncatedList"),n=void 0;if(this.props.showEmpty)0!==this.state.sortedList.length||this.props.searchFilter||0!==this.props.extraTiles.length?(e=n=this.makeRoomTiles()).push.apply(e,(0,r.default)(this.props.extraTiles)):n=this.props.emptyContent;else if(0===this.state.sortedList.length&&0===this.props.extraTiles.length){if(this.props.searchFilter||!this.props.emptyContent)return null;n=this.props.emptyContent}else{var o;(o=n=this.makeRoomTiles()).push.apply(o,(0,r.default)(this.props.extraTiles))}if(this.state.sortedList.length>0||this.props.extraTiles.length>0||this.props.editable){var a=void 0;a=this.state.hidden?i.default.createElement(t,{className:"mx_RoomSubList"}):i.default.createElement(t,{className:"mx_RoomSubList",truncateAt:this.state.truncateAt,createOverflowElement:this._createOverflowTile},n);var u=i.default.createElement("div",null,this._getHeaderJsx(),a);return this.props.editable?i.default.createElement(l.Droppable,{droppableId:"room-sub-list-droppable_"+this.props.tagName,type:"draggable-RoomTile"},function(e,t){return i.default.createElement("div",{ref:e.innerRef},u)}):u}var c=s.default.getComponent("elements.Spinner");return this.props.showSpinner&&(n=i.default.createElement(c,null)),i.default.createElement("div",{className:"mx_RoomSubList"},this.props.alwaysShowHeader?this._getHeaderJsx():void 0,this.state.hidden?void 0:n)}});e.exports=y},function(e,t,n){"use strict";var r=v(n(31)),o=v(n(51)),i=v(n(19)),a=n(9),s=v(a),l=v(n(446)),u=v(n(1)),c=n(2),f=n(80),d=v(n(104)),p=v(n(1552)),m=v(n(292)),h=n(22),_=v(h),g=v(n(142));function v(e){return e&&e.__esModule?e:{default:e}}var y=n(0),b=n(41),E=n(24),C=n(8),S=n(663),D=n(16),w=n(3),T=n(127),x=n(10),R=n(174),k=n(201),N=n(202),I=n(146),O=function(){},A="sandbox"in document.createElement("iframe");e.exports=y.createClass({displayName:"RoomView",propTypes:{ConferenceHandler:u.default.any,onRegistered:u.default.func,thirdPartyInvite:u.default.object,oobData:u.default.object,collapsedRhs:u.default.bool},getInitialState:function(){return{room:null,roomId:null,roomLoading:!0,peekLoading:!1,shouldPeek:!0,membersLoaded:!C.get().hasLazyLoadMembersEnabled(),initialEventId:null,initialEventPixelOffset:null,isInitialEventHighlighted:null,forwardingEvent:null,editingRoomSettings:!1,uploadingRoomSettings:!1,numUnreadMessages:0,draggingFile:!1,searching:!1,searchResults:null,callState:null,guestsCanJoin:!1,canPeek:!1,showApps:!1,isAlone:!1,isPeeking:!1,showingPinned:!1,roomLoadError:null,joining:!1,atEndOfLiveTimeline:!0,showTopUnreadMessagesBar:!1,auxPanelMaxHeight:void 0,statusBarVisible:!1}},componentWillMount:function(){this.dispatcherRef=x.register(this.onAction),C.get().on("Room",this.onRoom),C.get().on("Room.timeline",this.onRoomTimeline),C.get().on("Room.name",this.onRoomName),C.get().on("Room.accountData",this.onRoomAccountData),C.get().on("RoomState.members",this.onRoomStateMember),C.get().on("Room.myMembership",this.onMyMembership),C.get().on("accountData",this.onAccountData),this._roomStoreToken=d.default.addListener(this._onRoomViewStoreUpdate),this._onRoomViewStoreUpdate(!0),m.default.on("update",this._onWidgetEchoStoreUpdate)},_onRoomViewStoreUpdate:function(e){if(!this.unmounted&&(e||this.state.roomId===d.default.getRoomId())){var t={roomId:d.default.getRoomId(),roomAlias:d.default.getRoomAlias(),roomLoading:d.default.isRoomLoading(),roomLoadError:d.default.getRoomLoadError(),joining:d.default.isJoining(),initialEventId:d.default.getInitialEventId(),isInitialEventHighlighted:d.default.isInitialEventHighlighted(),forwardingEvent:d.default.getForwardingEvent(),shouldPeek:d.default.shouldPeek(),showingPinned:_.default.getValue("PinnedEvents.isOpen",d.default.getRoomId()),editingRoomSettings:d.default.isEditingSettings()};if(this.state.editingRoomSettings&&!t.editingRoomSettings&&x.dispatch({action:"focus_composer"}),console.log("RVS update:",t.roomId,t.roomAlias,"loading?",t.roomLoading,"joining?",t.joining,"initial?",e,"shouldPeek?",t.shouldPeek),e&&(t.room=C.get().getRoom(t.roomId),t.room&&(t.showApps=this._shouldShowApps(t.room),this._onRoomLoaded(t.room))),null===this.state.roomId&&null!==t.roomId&&!t.initialEventId){var n=p.default.getScrollState(t.roomId);n&&(t.initialEventId=n.focussedEvent,t.initialEventPixelOffset=n.pixelOffset)}this.state.initialEventId!==t.initialEventId&&(t.searchResults=null),this.setState(t),e&&this._setupRoom(t.room,t.roomId,t.joining,t.shouldPeek)}},_onWidgetEchoStoreUpdate:function(){this.setState({showApps:this._shouldShowApps(this.state.room)})},_setupRoom:function(e,t,n,r){var o=this;!n&&t&&(this.props.autoJoin?this.onJoinButtonClicked():!e&&r?(console.log("Attempting to peek into room %s",t),this.setState({peekLoading:!0,isPeeking:!0}),C.get().peekInRoom(t).then(function(e){o.unmounted||(o.setState({room:e,peekLoading:!1}),o._onRoomLoaded(e))},function(e){if(!o.unmounted){if(o.setState({isPeeking:!1}),"M_GUEST_ACCESS_FORBIDDEN"!=e.errcode)throw e;o.setState({peekLoading:!1})}})):e&&(C.get().stopPeeking(),this.setState({isPeeking:!1})))},_shouldShowApps:function(e){return!!A&&("true"!==localStorage.getItem(e.roomId+"_hide_widget_drawer")&&(m.default.getEchoedRoomWidgets(e.roomId,g.default.getRoomWidgets(e)).length>0||m.default.roomHasPendingWidgets(e.roomId,g.default.getRoomWidgets(e))))},componentDidMount:function(){var e=this._getCallForRoom(),t=e?e.call_state:"ended";if(this.setState({callState:t}),this._updateConfCallNotification(),window.addEventListener("beforeunload",this.onPageUnload),window.addEventListener("resize",this.onResize),this.onResize(),document.addEventListener("keydown",this.onKeyDown),this.state.room&&1==this.state.room.getJoinedMemberCount()&&this.state.room.getLiveTimeline()&&this.state.room.getLiveTimeline().getEvents()&&this.state.room.getLiveTimeline().getEvents().length<=6){var n=document.getElementById("mx_SearchableEntityList_query");setTimeout(function(){n&&n.focus()},50)}},shouldComponentUpdate:function(e,t){return!N.shallowEqual(this.props,e)||!N.shallowEqual(this.state,t)},componentDidUpdate:function(){if(this.refs.roomView){var e=b.findDOMNode(this.refs.roomView);e.ondrop||(e.addEventListener("drop",this.onDrop),e.addEventListener("dragover",this.onDragOver),e.addEventListener("dragleave",this.onDragLeaveOrEnd),e.addEventListener("dragend",this.onDragLeaveOrEnd))}},componentWillUnmount:function(){if(this.unmounted=!0,this.state.roomId&&p.default.setScrollState(this.state.roomId,this._getScrollState()),this.refs.roomView){var e=b.findDOMNode(this.refs.roomView);e.removeEventListener("drop",this.onDrop),e.removeEventListener("dragover",this.onDragOver),e.removeEventListener("dragleave",this.onDragLeaveOrEnd),e.removeEventListener("dragend",this.onDragLeaveOrEnd)}x.unregister(this.dispatcherRef),C.get()&&(C.get().removeListener("Room",this.onRoom),C.get().removeListener("Room.timeline",this.onRoomTimeline),C.get().removeListener("Room.name",this.onRoomName),C.get().removeListener("Room.accountData",this.onRoomAccountData),C.get().removeListener("Room.myMembership",this.onMyMembership),C.get().removeListener("RoomState.members",this.onRoomStateMember),C.get().removeListener("accountData",this.onAccountData)),window.removeEventListener("beforeunload",this.onPageUnload),window.removeEventListener("resize",this.onResize),document.removeEventListener("keydown",this.onKeyDown),this._roomStoreToken&&this._roomStoreToken.remove(),m.default.removeListener("update",this._onWidgetEchoStoreUpdate),this._updateRoomMembers.cancelPendingCall()},onPageUnload:function(e){return S.getCurrentUploads().length>0?e.returnValue=(0,c._t)("You seem to be uploading files, are you sure you want to quit?"):this._getCallForRoom()&&"ended"!==this.state.callState?e.returnValue=(0,c._t)("You seem to be in a call, are you sure you want to quit?"):void 0},onKeyDown:function(e){var t=!1,n=(0,f.isOnlyCtrlOrCmdKeyEvent)(e);switch(e.keyCode){case f.KeyCode.KEY_D:n&&(this.onMuteAudioClick(),t=!0);break;case f.KeyCode.KEY_E:n&&(this.onMuteVideoClick(),t=!0)}t&&(e.stopPropagation(),e.preventDefault())},onAction:function(e){switch(e.action){case"message_send_failed":case"message_sent":this._checkIfAlone(this.state.room);break;case"post_sticker_message":this.injectSticker(e.data.content.url,e.data.content.info,e.data.description||e.data.name);break;case"picture_snapshot":this.uploadFile(e.file);break;case"notifier_enabled":case"upload_failed":case"upload_started":case"upload_finished":this.forceUpdate();break;case"call_state":if(!e.room_id)return;var t,n=this._getCallForRoom();t=n?n.call_state:"ended",this._updateConfCallNotification(),this.setState({callState:t});break;case"appsDrawer":this.setState({showApps:e.show})}},onRoomTimeline:function(e,t,n,r,o){this.unmounted||t&&this.state.room&&t.roomId==this.state.room.roomId&&o.timeline.getTimelineSet()===t.getUnfilteredTimelineSet()&&("org.matrix.room.preview_urls"===e.getType()&&this._updatePreviewUrlVisibility(t),!n&&o&&o.liveEvent&&(this.state.joining||e.getSender()!==C.get().credentials.userId&&(!this.state.searchResults&&this.state.atEndOfLiveTimeline||(0,l.default)(e)||this.setState(function(e,t){return{numUnreadMessages:e.numUnreadMessages+1}}))))},onRoomName:function(e){this.state.room&&e.roomId==this.state.room.roomId&&this.forceUpdate()},canResetTimeline:function(){return!this.refs.messagePanel||this.refs.messagePanel.canResetTimeline()},_onRoomLoaded:function(e){this._warnAboutEncryption(e),this._calculatePeekRules(e),this._updatePreviewUrlVisibility(e),this._loadMembersIfJoined(e)},_loadMembersIfJoined:function(){var e=(0,a.coroutine)(i.default.mark(function e(t){var n;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!C.get().hasLazyLoadMembersEnabled()){e.next=14;break}if(!t||"join"!==t.getMyMembership()){e.next=14;break}return e.prev=3,e.next=6,(0,a.resolve)(t.loadMembersIfNeeded());case 6:this.unmounted||this.setState({membersLoaded:!0}),e.next=14;break;case 9:e.prev=9,e.t0=e.catch(3),n="Fetching room members for "+t.roomId+" failed. Room members will appear incomplete.",console.error(n),console.error(e.t0);case 14:case"end":return e.stop()}},e,this,[[3,9]])}));return function(t){return e.apply(this,arguments)}}(),_warnAboutEncryption:function(e){if(C.get().isRoomEncrypted(e.roomId)){var t=!1;if(localStorage&&(t=localStorage.getItem("mx_user_has_used_encryption")),!t){var n=w.getComponent("dialogs.QuestionDialog");D.createTrackedDialog("E2E Warning","",n,{title:(0,c._t)("Warning!"),hasCancelButton:!1,description:y.createElement("div",null,y.createElement("p",null,(0,c._t)("End-to-end encryption is in beta and may not be reliable"),"."),y.createElement("p",null,(0,c._t)("You should not yet trust it to secure data"),"."),y.createElement("p",null,(0,c._t)("Devices will not yet be able to decrypt history from before they joined the room"),"."),y.createElement("p",null,(0,c._t)("Encrypted messages will not be visible on clients that do not yet implement encryption"),"."))})}localStorage&&localStorage.setItem("mx_user_has_used_encryption",!0)}},_calculatePeekRules:function(e){var t=e.currentState.getStateEvents("m.room.guest_access","");t&&"can_join"===t.getContent().guest_access&&this.setState({guestsCanJoin:!0});var n=e.currentState.getStateEvents("m.room.history_visibility","");n&&"world_readable"===n.getContent().history_visibility&&this.setState({canPeek:!0})},_updatePreviewUrlVisibility:function(e){var t=e.roomId,n=C.get().isRoomEncrypted(t)?"urlPreviewsEnabled_e2ee":"urlPreviewsEnabled";this.setState({showUrlPreview:_.default.getValue(n,t)})},onRoom:function(e){var t=this;e&&e.roomId===this.state.roomId&&this.setState({room:e},function(){t._onRoomLoaded(e)})},updateTint:function(){var e=this.state.room;if(e){console.log("Tinter.tint from updateTint");var t=_.default.getValue("roomColor",e.roomId);R.tint(t.primary_color,t.secondary_color)}},onAccountData:function(e){var t=e.getType();"org.matrix.preview_urls"!==t&&"im.vector.web.settings"!==t||!this.state.room||this._updatePreviewUrlVisibility(this.state.room)},onRoomAccountData:function(e,t){if(t.roomId==this.state.roomId){var n=e.getType();if("org.matrix.room.color_scheme"===n){var r=e.getContent();console.log("Tinter.tint from onRoomAccountData"),R.tint(r.primary_color,r.secondary_color)}else"org.matrix.room.preview_urls"!==n&&"im.vector.web.settings"!==n||this._updatePreviewUrlVisibility(t)}},onRoomStateMember:function(e,t,n){this.state.room&&n.roomId===this.state.room.roomId&&this._updateRoomMembers()},onMyMembership:function(e,t,n){e.roomId===this.state.roomId&&(this.forceUpdate(),this._loadMembersIfJoined(e))},_updateRoomMembers:new k(function(){this._updateConfCallNotification(),this._updateDMState(),this._checkIfAlone(this.state.room)},500),_checkIfAlone:function(e){var t=!1;if(localStorage&&(t=localStorage.getItem("mx_user_alone_warned_"+this.state.room.roomId)),t)this.state.isAlone&&this.setState({isAlone:!1});else{var n=e.getJoinedMemberCount()+e.getInvitedMemberCount();this.setState({isAlone:1===n})}},_updateConfCallNotification:function(){var e=this.state.room;if(e&&this.props.ConferenceHandler){var t=e.getMember(this.props.ConferenceHandler.getConferenceUserIdForRoom(e.roomId));if(t){var n=this.props.ConferenceHandler.getConferenceCallForRoom(t.roomId);this.setState({displayConfCallNotification:(!n||"ended"===n.call_state)&&"join"===t.membership})}}},_updateDMState:function(){var e=this.state.room;if("join"==e.getMyMembership()){var t=e.getDMInviter();t&&I.setDMRoom(e.roomId,t)}},onSearchResultsResize:function(){x.dispatch({action:"timeline_resize"},!0)},onSearchResultsFillRequest:function(e){if(!e)return s.default.resolve(!1);if(this.state.searchResults.next_batch){O("requesting more search results");var t=C.get().backPaginateRoomEventsSearch(this.state.searchResults);return this._handleSearchResult(t)}return O("no more search results"),s.default.resolve(!1)},onInviteButtonClick:function(){x.dispatch({action:"view_invite",roomId:this.state.room.roomId}),this.setState({isAlone:!1})},onStopAloneWarningClick:function(){localStorage&&localStorage.setItem("mx_user_alone_warned_"+this.state.room.roomId,!0),this.setState({isAlone:!1})},onJoinButtonClicked:function(e){var t=this,n=C.get();if(n&&n.isGuest()){var r=this.props.thirdPartyInvite?this.props.thirdPartyInvite.inviteSignUrl:void 0;x.dispatch({action:"do_after_sync_prepared",deferred_action:{action:"join_room",opts:{inviteSignUrl:r}}}),x.dispatch({action:"will_join"});var o=w.getComponent("views.dialogs.SetMxIdDialog"),i=D.createTrackedDialog("Set MXID","",o,{homeserverUrl:n.getHomeserverUrl(),onFinished:function(e,n){e?t.props.onRegistered(n):(x.dispatch({action:"cancel_after_sync_prepared"}),x.dispatch({action:"cancel_join"}))},onDifferentServerClicked:function(e){x.dispatch({action:"start_registration"}),i()},onLoginClick:function(e){x.dispatch({action:"start_login"}),i()}}).close}else s.default.resolve().then(function(){var e=t.props.thirdPartyInvite?t.props.thirdPartyInvite.inviteSignUrl:void 0;return x.dispatch({action:"join_room",opts:{inviteSignUrl:e}}),s.default.resolve()})},onMessageListScroll:function(e){this.refs.messagePanel.isAtEndOfLiveTimeline()?this.setState({numUnreadMessages:0,atEndOfLiveTimeline:!0}):this.setState({atEndOfLiveTimeline:!1}),this._updateTopUnreadMessagesBar()},onDragOver:function(e){e.stopPropagation(),e.preventDefault(),e.dataTransfer.dropEffect="none";var t=[].concat((0,o.default)(e.dataTransfer.items));t.length>=1&&(t.every(function(e){return"file"==e.kind})&&(this.setState({draggingFile:!0}),e.dataTransfer.dropEffect="copy"))},onDrop:function(e){e.stopPropagation(),e.preventDefault(),this.setState({draggingFile:!1}),[].concat((0,o.default)(e.dataTransfer.files)).forEach(this.uploadFile)},onDragLeaveOrEnd:function(e){e.stopPropagation(),e.preventDefault(),this.setState({draggingFile:!1})},uploadFile:function(){var e=(0,a.coroutine)(i.default.mark(function e(t){var n;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(x.dispatch({action:"focus_composer"}),!C.get().isGuest()){e.next=4;break}return x.dispatch({action:"require_registration"}),e.abrupt("return");case 4:return e.prev=4,e.next=7,(0,a.resolve)(S.sendContentToRoom(t,this.state.room.roomId,C.get()));case 7:e.next=17;break;case 9:if(e.prev=9,e.t0=e.catch(4),"UnknownDeviceError"!==e.t0.name){e.next=13;break}return e.abrupt("return");case 13:return n=w.getComponent("dialogs.ErrorDialog"),console.error("Failed to upload file "+t+" "+e.t0),D.createTrackedDialog("Failed to upload file","",n,{title:(0,c._t)("Failed to upload file"),description:e.t0&&e.t0.message?e.t0.message:(0,c._t)("Server may be unavailable, overloaded, or the file too big")}),e.abrupt("return");case 17:x.dispatch({action:"message_sent"});case 18:case"end":return e.stop()}},e,this,[[4,9]])}));return function(t){return e.apply(this,arguments)}}(),injectSticker:function(e,t,n){C.get().isGuest()?x.dispatch({action:"require_registration"}):S.sendStickerContentToRoom(e,this.state.room.roomId,t,n,C.get()).done(void 0,function(e){e.name})},onSearch:function(e,t){this.setState({searchTerm:e,searchScope:t,searchResults:{},searchHighlights:[]}),this.refs.searchResultsPanel&&this.refs.searchResultsPanel.resetScrollState(),this.searchId=(new Date).getTime();var n=void 0;"Room"===t&&(n={rooms:[this.state.room.roomId]}),O("sending search request");var r=C.get().searchRoomEvents({filter:n,term:e});this._handleSearchResult(r).done()},_handleSearchResult:function(e){var t=this,n=this.searchId;return this.setState({searchInProgress:!0}),e.then(function(e){if(O("search complete"),!t.unmounted&&t.state.searching&&t.searchId==n){var r=e.highlights;r.indexOf(t.state.searchTerm)<0&&(r=r.concat(t.state.searchTerm)),r=r.sort(function(e,t){return t.length-e.length}),t.setState({searchHighlights:r,searchResults:e})}else console.error("Discarding stale search results")},function(e){var t=w.getComponent("dialogs.ErrorDialog");console.error("Search failed: "+e),D.createTrackedDialog("Search failed","",t,{title:(0,c._t)("Search failed"),description:e&&e.message?e.message:(0,c._t)("Server may be unavailable, overloaded, or search timed out :(")})}).finally(function(){t.setState({searchInProgress:!1})})},getSearchResultTiles:function(){var e=this,t=w.getComponent("rooms.EventTile"),n=w.getComponent("rooms.SearchResultTile"),r=w.getComponent("elements.Spinner"),o=C.get();if(void 0===this.state.searchResults.results)return[];var i=[];this.state.searchInProgress&&i.push(y.createElement("li",{key:"search-spinner"},y.createElement(r,null))),this.state.searchResults.next_batch||(0==this.state.searchResults.results.length?i.push(y.createElement("li",{key:"search-top-marker"},y.createElement("h2",{className:"mx_RoomView_topMarker"},(0,c._t)("No results")))):i.push(y.createElement("li",{key:"search-top-marker"},y.createElement("h2",{className:"mx_RoomView_topMarker"},(0,c._t)("No more results")))));for(var a=function(){var t=e.refs.searchResultsPanel;t&&t.checkScroll()},s=void 0,l=this.state.searchResults.results.length-1;l>=0;l--){var u=this.state.searchResults.results[l],f=u.context.getEvent(),d=f.getRoomId();if(t.haveTileForEvent(f)){if("All"===this.state.searchScope&&d!=s){var p=o.getRoom(d),m=p?p.name:(0,c._t)("Unknown room %(roomId)s",{roomId:d});i.push(y.createElement("li",{key:f.getId()+"-room"},y.createElement("h1",null,(0,c._t)("Room"),": ",m))),s=d}var h="#/room/"+d+"/"+f.getId();i.push(y.createElement(n,{key:f.getId(),searchResult:u,searchHighlights:this.state.searchHighlights,resultLink:h,onWidgetLoad:a}))}}return i},onPinnedClick:function(){var e=!this.state.showingPinned,t=this.state.room.roomId;this.setState({showingPinned:e,searching:!1}),_.default.setValue("PinnedEvents.isOpen",t,h.SettingLevel.ROOM_DEVICE,e)},onSettingsClick:function(){x.dispatch({action:"open_room_settings"})},onSettingsSaveClick:function(){var e=this;if(this.refs.room_settings){this.setState({uploadingRoomSettings:!0});var t=this.refs.header.getEditedName();void 0!==t&&this.refs.room_settings.setName(t);var n=this.refs.header.getEditedTopic();void 0!==n&&this.refs.room_settings.setTopic(n),this.refs.room_settings.save().then(function(e){var t=e.filter(function(e){return"fulfilled"!==e.state});if(console.log("Settings saved with %s errors",t.length),t.length){t.forEach(function(e){console.error(e.reason)});var n=w.getComponent("dialogs.ErrorDialog");D.createTrackedDialog("Failed to save room settings","",n,{title:(0,c._t)("Failed to save settings"),description:t.map(function(e){return e.reason}).join("\n")})}else x.dispatch({action:"close_settings"})}).finally(function(){e.setState({uploadingRoomSettings:!1}),x.dispatch({action:"close_settings"})}).done()}},onCancelClick:function(){console.log("updateTint from onCancelClick"),this.updateTint(),x.dispatch({action:"close_settings"}),this.state.forwardingEvent&&x.dispatch({action:"forward_event",event:null}),x.dispatch({action:"focus_composer"})},onLeaveClick:function(){x.dispatch({action:"leave_room",room_id:this.state.room.roomId})},onForgetClick:function(){C.get().forget(this.state.room.roomId).done(function(){x.dispatch({action:"view_next_room"})},function(e){var t=e.errcode||(0,c._t)("unknown error code"),n=w.getComponent("dialogs.ErrorDialog");D.createTrackedDialog("Failed to forget room","",n,{title:(0,c._t)("Error"),description:(0,c._t)("Failed to forget room %(errCode)s",{errCode:t})})})},onRejectButtonClicked:function(e){var t=this;this.setState({rejecting:!0}),C.get().leave(this.state.roomId).done(function(){x.dispatch({action:"view_next_room"}),t.setState({rejecting:!1})},function(e){console.error("Failed to reject invite: %s",e);var n=e.message?e.message:(0,r.default)(e),o=w.getComponent("dialogs.ErrorDialog");D.createTrackedDialog("Failed to reject invite","",o,{title:(0,c._t)("Failed to reject invite"),description:n}),t.setState({rejecting:!1,rejectError:e})})},onRejectThreepidInviteButtonClicked:function(e){x.dispatch({action:"view_room_directory"})},onSearchClick:function(){this.setState({searching:!0,showingPinned:!1})},onCancelSearchClick:function(){this.setState({searching:!1,searchResults:null})},jumpToLiveTimeline:function(){this.refs.messagePanel.jumpToLiveTimeline(),x.dispatch({action:"focus_composer"})},jumpToReadMarker:function(){this.refs.messagePanel.jumpToReadMarker()},forgetReadMarker:function(e){e.stopPropagation(),this.refs.messagePanel.forgetReadMarker()},_updateTopUnreadMessagesBar:function(){if(this.refs.messagePanel){var e=this.refs.messagePanel.canJumpToReadMarker();this.state.showTopUnreadMessagesBar!=e&&this.setState({showTopUnreadMessagesBar:e},this.onChildResize)}},_getScrollState:function(){var e=this.refs.messagePanel;if(!e)return null;if(this.state.atEndOfLiveTimeline)return null;var t=e.getScrollState();return t.stuckAtBottom?null:{focussedEvent:t.trackedScrollToken,pixelOffset:t.pixelOffset}},onResize:function(e){var t=window.innerHeight-(191+(this.state.editingRoomSettings?.3*window.innerHeight:120));t<50&&(t=50),this.setState({auxPanelMaxHeight:t})},onFullscreenClick:function(){x.dispatch({action:"video_fullscreen",fullscreen:!0},!0)},onMuteAudioClick:function(){var e=this._getCallForRoom();if(e){var t=!e.isMicrophoneMuted();e.setMicrophoneMuted(t),this.forceUpdate()}},onMuteVideoClick:function(){var e=this._getCallForRoom();if(e){var t=!e.isLocalVideoMuted();e.setLocalVideoMuted(t),this.forceUpdate()}},onChildResize:function(){},onStatusBarVisible:function(){this.unmounted||this.setState({statusBarVisible:!0})},onStatusBarHidden:function(){},handleScrollKey:function(e){var t=void 0;this.refs.searchResultsPanel?t=this.refs.searchResultsPanel:this.refs.messagePanel&&(t=this.refs.messagePanel),t&&t.handleScrollKey(e)},_getCallForRoom:function(){return this.state.room?T.getCallForRoom(this.state.room.roomId):null},_gatherTimelinePanelRef:function(e){this.refs.messagePanel=e,e&&(console.log("updateTint from RoomView._gatherTimelinePanelRef"),this.updateTint())},render:function(){var e=w.getComponent("rooms.RoomHeader"),t=w.getComponent("rooms.MessageComposer"),n=w.getComponent("rooms.ForwardMessage"),r=w.getComponent("rooms.RoomSettings"),o=w.getComponent("rooms.AuxPanel"),i=w.getComponent("rooms.SearchBar"),a=w.getComponent("rooms.PinnedEventsPanel"),s=w.getComponent("structures.ScrollPanel"),l=w.getComponent("elements.TintableSvg"),u=w.getComponent("rooms.RoomPreviewBar"),f=w.getComponent("elements.Spinner"),d=w.getComponent("structures.TimelinePanel"),p=w.getComponent("rooms.RoomUpgradeWarningBar");if(!this.state.room){if(this.state.roomLoading||this.state.peekLoading)return y.createElement("div",{className:"mx_RoomView"},y.createElement(f,null));var m=void 0;this.props.oobData&&(m=this.props.oobData.inviterName);var h=void 0;this.props.thirdPartyInvite&&(h=this.props.thirdPartyInvite.invitedEmail);var g=this.state.roomAlias;return y.createElement("div",{className:"mx_RoomView"},y.createElement(e,{ref:"header",room:this.state.room,oobData:this.props.oobData,collapsedRhs:this.props.collapsedRhs}),y.createElement("div",{className:"mx_RoomView_auxPanel"},y.createElement(u,{onJoinClick:this.onJoinButtonClicked,onForgetClick:this.onForgetClick,onRejectClick:this.onRejectThreepidInviteButtonClicked,canPreview:!1,error:this.state.roomLoadError,roomAlias:g,spinner:this.state.joining,spinnerState:"joining",inviterName:m,invitedEmail:h,room:this.state.room})),y.createElement("div",{className:"mx_RoomView_messagePanel"}))}var v=this.state.room.getMyMembership();if("invite"==v){if(this.state.joining||this.state.rejecting)return y.createElement("div",{className:"mx_RoomView"},y.createElement(f,null));var b=C.get().credentials.userId,D=this.state.room.getMember(b).events.member;m=D.sender?D.sender.name:D.getSender();return y.createElement("div",{className:"mx_RoomView"},y.createElement(e,{ref:"header",room:this.state.room,collapsedRhs:this.props.collapsedRhs}),y.createElement("div",{className:"mx_RoomView_auxPanel"},y.createElement(u,{onJoinClick:this.onJoinButtonClicked,onForgetClick:this.onForgetClick,onRejectClick:this.onRejectButtonClicked,inviterName:m,canPreview:!1,spinner:this.state.joining,spinnerState:"joining",room:this.state.room})),y.createElement("div",{className:"mx_RoomView_messagePanel"}))}var T=this._getCallForRoom(),x=!1;T&&"ended"!==this.state.callState&&"ringing"!==this.state.callState&&(x=!0);var R=E({mx_RoomView_scrollheader:!0}),k=void 0,N=!0;if(S.getCurrentUploads().length>0){var I=w.getComponent("structures.UploadBar");k=y.createElement(I,{room:this.state.room})}else if(!this.state.searchResults){var O=w.getComponent("structures.RoomStatusBar");N=this.state.statusBarVisible,k=y.createElement(O,{room:this.state.room,numUnreadMessages:this.state.numUnreadMessages,atEndOfLiveTimeline:this.state.atEndOfLiveTimeline,sentMessageAndIsAlone:this.state.isAlone,hasActiveCall:x,isPeeking:"join"!==v,onInviteClick:this.onInviteButtonClick,onStopWarningClick:this.onStopAloneWarningClick,onScrollToBottomClick:this.jumpToLiveTimeline,onResize:this.onChildResize,onVisible:this.onStatusBarVisible,onHidden:this.onStatusBarHidden,whoIsTypingLimit:3})}var A=this.state.room.shouldUpgradeToVersion()&&this.state.room.userMayUpgradeRoom(C.get().credentials.userId),M=null,P=!1;if(this.state.editingRoomSettings)M=y.createElement(r,{ref:"room_settings",onSaveClick:this.onSettingsSaveClick,onCancelClick:this.onCancelClick,room:this.state.room});else if(this.state.uploadingRoomSettings)M=y.createElement(f,null);else if(null!==this.state.forwardingEvent)M=y.createElement(n,{onCancelClick:this.onCancelClick});else if(this.state.searching)P=!0,M=y.createElement(i,{ref:"search_bar",searchInProgress:this.state.searchInProgress,onCancelClick:this.onCancelSearchClick,onSearch:this.onSearch});else if(A)M=y.createElement(p,{room:this.state.room}),P=!0;else if(this.state.showingPinned)P=!0,M=y.createElement(a,{room:this.state.room,onCancelClick:this.onPinnedClick});else if("join"!==v){m=void 0;this.props.oobData&&(m=this.props.oobData.inviterName);h=void 0;this.props.thirdPartyInvite&&(h=this.props.thirdPartyInvite.invitedEmail),P=!0,M=y.createElement(u,{onJoinClick:this.onJoinButtonClicked,onForgetClick:this.onForgetClick,onRejectClick:this.onRejectThreepidInviteButtonClicked,spinner:this.state.joining,spinnerState:"joining",inviterName:m,invitedEmail:h,canPreview:this.state.canPeek,room:this.state.room})}var L=y.createElement(o,{ref:"auxPanel",room:this.state.room,userId:C.get().credentials.userId,conferenceHandler:this.props.ConferenceHandler,draggingFile:this.state.draggingFile,displayConfCallNotification:this.state.displayConfCallNotification,maxHeight:this.state.auxPanelMaxHeight,onResize:this.onChildResize,showApps:this.state.showApps,hideAppsDrawer:this.state.editingRoomSettings},M),F=void 0,U=void 0;if("join"===v&&!this.state.searchResults&&(F=y.createElement(t,{room:this.state.room,onResize:this.onChildResize,uploadFile:this.uploadFile,callState:this.state.callState,disabled:this.props.disabled,showApps:this.state.showApps})),C.get().isGuest()){var j=w.getComponent("structures.LoginBox");F=y.createElement(j,null)}if(this.state.searchResults&&(U={searchTerm:this.state.searchTerm,searchScope:this.state.searchScope,searchCount:this.state.searchResults.count}),x){var B,G=void 0,q=void 0;"video"===T.type&&(G=y.createElement("div",{className:"mx_RoomView_voipButton",onClick:this.onFullscreenClick,title:(0,c._t)("Fill screen")},y.createElement(l,{src:"img/fullscreen.svg",width:"29",height:"22",style:{marginTop:1,marginRight:4}})),q=y.createElement("div",{className:"mx_RoomView_voipButton",onClick:this.onMuteVideoClick},y.createElement(l,{src:T.isLocalVideoMuted()?"img/video-unmute.svg":"img/video-mute.svg",alt:T.isLocalVideoMuted()?(0,c._t)("Click to unmute video"):(0,c._t)("Click to mute video"),width:"31",height:"27"}))),B=y.createElement("div",{className:"mx_RoomView_voipButton",onClick:this.onMuteAudioClick},y.createElement(l,{src:T.isMicrophoneMuted()?"img/voice-unmute.svg":"img/voice-mute.svg",alt:T.isMicrophoneMuted()?(0,c._t)("Click to unmute audio"):(0,c._t)("Click to mute audio"),width:"21",height:"26"})),k=y.createElement("div",{className:"mx_RoomView_callStatusBar"},B,q,G,k,y.createElement(l,{className:"mx_RoomView_voipChevron",src:"img/voip-chevron.svg",width:"22",height:"17"}))}var V=void 0,H=!1;this.state.searchResults&&(V=y.createElement(s,{ref:"searchResultsPanel",className:"mx_RoomView_messagePanel mx_RoomView_searchResultsPanel",onFillRequest:this.onSearchResultsFillRequest,onResize:this.onSearchResultsResize},y.createElement("li",{className:R}),this.getSearchResultTiles()),H=!0);var Y=this.state.isInitialEventHighlighted,z=null;this.state.forwardingEvent?z=this.state.forwardingEvent.getId():Y&&(z=this.state.initialEventId);var W=y.createElement(d,{ref:this._gatherTimelinePanelRef,timelineSet:this.state.room.getUnfilteredTimelineSet(),showReadReceipts:!_.default.getValue("hideReadReceipts"),manageReadReceipts:!this.state.isPeeking,manageReadMarkers:!this.state.isPeeking,hidden:H,highlightedEventId:z,eventId:this.state.initialEventId,eventPixelOffset:this.state.initialEventPixelOffset,onScroll:this.onMessageListScroll,onReadMarkerUpdated:this._updateTopUnreadMessagesBar,showUrlPreview:this.state.showUrlPreview,className:"mx_RoomView_messagePanel",membersLoaded:this.state.membersLoaded}),K=null;if(this.state.showTopUnreadMessagesBar){var $=w.getComponent("rooms.TopUnreadMessagesBar");K=y.createElement("div",{className:"mx_RoomView_topUnreadMessagesBar"},y.createElement($,{onScrollUpClick:this.jumpToReadMarker,onCloseClick:this.forgetReadMarker}))}var Q=E("mx_RoomView_statusArea",{mx_RoomView_statusArea_expanded:N}),X=E("mx_RoomView_body","mx_fadable",{mx_fadable_faded:this.props.disabled});return y.createElement("div",{className:"mx_RoomView"+(x?" mx_RoomView_inCall":""),ref:"roomView"},y.createElement(e,{ref:"header",room:this.state.room,searchInfo:U,oobData:this.props.oobData,editing:this.state.editingRoomSettings,saving:this.state.uploadingRoomSettings,inRoom:"join"===v,collapsedRhs:this.props.collapsedRhs,onSearchClick:this.onSearchClick,onSettingsClick:this.onSettingsClick,onPinnedClick:this.onPinnedClick,onSaveClick:this.onSettingsSaveClick,onCancelClick:M&&!P?this.onCancelClick:null,onForgetClick:"leave"===v?this.onForgetClick:null,onLeaveClick:"join"===v?this.onLeaveClick:null}),L,y.createElement("div",{className:X},K,W,V,y.createElement("div",{className:Q},y.createElement("div",{className:"mx_RoomView_statusAreaBox"},y.createElement("div",{className:"mx_RoomView_statusAreaBox_line"}),k)),F))}})},function(e,t,n){"use strict";(function(r){Object.defineProperty(t,"__esModule",{value:!0});var o=a(n(4)),i=a(n(5));function a(e){return e&&e.__esModule?e:{default:e}}var s=function(){function e(){(0,o.default)(this,e),this._scrollStateMap={}}return(0,i.default)(e,[{key:"getScrollState",value:function(e){return this._scrollStateMap[e]}},{key:"setScrollState",value:function(e,t){this._scrollStateMap[e]=t}}]),e}();void 0===r.mx_RoomScrollStateStore&&(r.mx_RoomScrollStateStore=new s),t.default=r.mx_RoomScrollStateStore,e.exports=t.default}).call(this,n(15))},function(e,t,n){"use strict";e.exports=function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}},function(e,t,n){var r;!function(o){"use strict";var i=o.HTMLCanvasElement&&o.HTMLCanvasElement.prototype,a=o.Blob&&function(){try{return Boolean(new Blob)}catch(e){return!1}}(),s=a&&o.Uint8Array&&function(){try{return 100===new Blob([new Uint8Array(100)]).size}catch(e){return!1}}(),l=o.BlobBuilder||o.WebKitBlobBuilder||o.MozBlobBuilder||o.MSBlobBuilder,u=/^data:((.*?)(;charset=.*?)?)(;base64)?,/,c=(a||l)&&o.atob&&o.ArrayBuffer&&o.Uint8Array&&function(e){var t,n,r,o,i,c,f,d,p;if(!(t=e.match(u)))throw new Error("invalid data URI");for(n=t[2]?t[1]:"text/plain"+(t[3]||";charset=US-ASCII"),r=!!t[4],o=e.slice(t[0].length),i=r?atob(o):decodeURIComponent(o),c=new ArrayBuffer(i.length),f=new Uint8Array(c),d=0;d<i.length;d+=1)f[d]=i.charCodeAt(d);return a?new Blob([s?f:c],{type:n}):((p=new l).append(c),p.getBlob(n))};o.HTMLCanvasElement&&!i.toBlob&&(i.mozGetAsFile?i.toBlob=function(e,t,n){var r=this;setTimeout(function(){n&&i.toDataURL&&c?e(c(r.toDataURL(t,n))):e(r.mozGetAsFile("blob",t))})}:i.toDataURL&&c&&(i.toBlob=function(e,t,n){var r=this;setTimeout(function(){e(c(r.toDataURL(t,n)))})})),void 0===(r=function(){return c}.call(t,n,t,e))||(e.exports=r)}(window)},function(e,t,n){"use strict";var r=s(n(1)),o=s(n(9)),i=n(80),a=s(n(3));function s(e){return e&&e.__esModule?e:{default:e}}var l=n(0),u=n(41),c=function(){};e.exports=l.createClass({displayName:"ScrollPanel",propTypes:{stickyBottom:r.default.bool,startAtBottom:r.default.bool,onFillRequest:r.default.func,onUnfillRequest:r.default.func,onScroll:r.default.func,onResize:r.default.func,className:r.default.string,style:r.default.object},getDefaultProps:function(){return{stickyBottom:!0,startAtBottom:!0,onFillRequest:function(e){return o.default.resolve(!1)},onUnfillRequest:function(e,t){},onScroll:function(){},onResize:function(){}}},componentWillMount:function(){this._pendingFillRequests={b:null,f:null},this.resetScrollState()},componentDidMount:function(){this.checkScroll()},componentDidUpdate:function(){this.checkScroll()},componentWillUnmount:function(){this.unmounted=!0},onScroll:function(e){var t=this._getScrollNode();if(c("Scroll event: offset now:",t.scrollTop,"_lastSetScroll:",this._lastSetScroll),void 0!==this._lastSetScroll&&t.scrollTop<this._lastSetScroll-200)return console.log("Working around vector-im/vector-web#528"),void this._restoreSavedScrollState();t.scrollTop!=this._lastSetScroll?this._saveScrollState():(c("Ignoring scroll echo"),this._lastSetScroll=void 0),this.props.onScroll(e),this.checkFillState()},onResize:function(){this.props.onResize(),this.checkScroll(),this._gemScroll&&this._gemScroll.forceUpdate()},checkScroll:function(){this._restoreSavedScrollState(),this.checkFillState()},isAtBottom:function(){var e=this._getScrollNode();return e.scrollHeight-Math.ceil(e.scrollTop)<=e.clientHeight+3},_getExcessHeight:function(e){var t=this._getScrollNode();return e?t.scrollTop-t.clientHeight-6e3:t.scrollHeight-(t.scrollTop+2*t.clientHeight)-6e3},checkFillState:function(){if(!this.unmounted){var e=this._getScrollNode();e.scrollTop<e.clientHeight&&this._maybeFill(!0),e.scrollTop>e.scrollHeight-2*e.clientHeight&&this._maybeFill(!1)}},_checkUnfillState:function(e){var t=this,n=this._getExcessHeight(e);if(!(n<=0)){for(var r=this.refs.itemlist.children,o=null,i=0;i<r.length;i++){var a=r[e?i:r.length-1-i];if(n-=a.clientHeight,a.clientHeight>n)break;a.dataset.scrollTokens&&(o=a.dataset.scrollTokens.split(",")[0])}o&&(this._unfillDebouncer&&clearTimeout(this._unfillDebouncer),this._unfillDebouncer=setTimeout(function(){t._unfillDebouncer=null,t.props.onUnfillRequest(e,o)},200))}},_maybeFill:function(e){var t=this,n=e?"b":"f";this._pendingFillRequests[n]?c("ScrollPanel: Already a "+n+" fill in progress - not starting another"):(c("ScrollPanel: starting "+n+" fill"),this._pendingFillRequests[n]=!0,o.default.try(function(){return t.props.onFillRequest(e)}).finally(function(){t._pendingFillRequests[n]=!1}).then(function(r){t.unmounted||(t._checkUnfillState(!e),c("ScrollPanel: "+n+" fill complete; hasMoreResults:"+r),r&&t.checkFillState())}).done())},getScrollState:function(){return this.scrollState},resetScrollState:function(){this.scrollState={stuckAtBottom:this.props.startAtBottom}},scrollToTop:function(){this._setScrollTop(0),this._saveScrollState()},scrollToBottom:function(){this._setScrollTop(Number.MAX_VALUE),this._saveScrollState()},scrollRelative:function(e){var t=this._getScrollNode(),n=e*t.clientHeight*.5;this._setScrollTop(t.scrollTop+n),this._saveScrollState()},handleScrollKey:function(e){switch(e.keyCode){case i.KeyCode.PAGE_UP:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey||this.scrollRelative(-1);break;case i.KeyCode.PAGE_DOWN:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey||this.scrollRelative(1);break;case i.KeyCode.HOME:!e.ctrlKey||e.shiftKey||e.altKey||e.metaKey||this.scrollToTop();break;case i.KeyCode.END:!e.ctrlKey||e.shiftKey||e.altKey||e.metaKey||this.scrollToBottom()}},scrollToToken:function(e,t,n){t=t||0,n=n||0,t+=this._getScrollNode().clientHeight*(1-n),this.scrollState={stuckAtBottom:!1,trackedScrollToken:e,pixelOffset:t},this._restoreSavedScrollState()},_scrollToToken:function(e,t){for(var n=void 0,r=this.refs.itemlist.children,o=r.length-1;o>=0;--o){var i=r[o];if(i.dataset.scrollTokens&&-1!==i.dataset.scrollTokens.split(",").indexOf(e)){n=i;break}}if(n){var a=this._getScrollNode(),s=u.findDOMNode(this).getBoundingClientRect(),l=n.getBoundingClientRect().bottom+t-s.bottom;c("ScrollPanel: scrolling to token '"+e+"'+"+t+" (delta: "+l+")"),0!=l&&this._setScrollTop(a.scrollTop+l)}else c("ScrollPanel: No node with scrollToken '"+e+"'")},_saveScrollState:function(){if(this.props.stickyBottom&&this.isAtBottom())return this.scrollState={stuckAtBottom:!0},void c("ScrollPanel: Saved scroll state",this.scrollState);for(var e=this.refs.itemlist,t=u.findDOMNode(this).getBoundingClientRect(),n=e.children,r=null,o=n.length-1;o>=0;--o){var i=n[o];if(i.dataset.scrollTokens){var a=i.getBoundingClientRect();if(r={stuckAtBottom:!1,trackedScrollToken:i.dataset.scrollTokens.split(",")[0],pixelOffset:t.bottom-a.bottom},a.top<t.bottom)break}}r?(this.scrollState=r,c("ScrollPanel: saved scroll state",this.scrollState)):c("ScrollPanel: unable to save scroll state: found no children in the viewport")},_restoreSavedScrollState:function(){var e=this.scrollState;this._getScrollNode();e.stuckAtBottom?this._setScrollTop(Number.MAX_VALUE):e.trackedScrollToken&&this._scrollToToken(e.trackedScrollToken,e.pixelOffset)},_setScrollTop:function(e){var t=this._getScrollNode(),n=t.scrollTop;t.scrollTop=Math.min(e,t.scrollHeight),t.scrollTop!=n&&(this._lastSetScroll=t.scrollTop),c("ScrollPanel: set scrollTop:",t.scrollTop,"requested:",e,"_lastSetScroll:",this._lastSetScroll)},_getScrollNode:function(){if(this.unmounted)throw new Error("ScrollPanel._getScrollNode called when unmounted");if(!this._gemScroll)throw new Error("ScrollPanel._getScrollNode called before gemini ref collected");return this._gemScroll.scrollbar.getViewElement()},_collectGeminiScroll:function(e){this._gemScroll=e},render:function(){var e=a.default.getComponent("elements.GeminiScrollbarWrapper");return l.createElement(e,{autoshow:!0,wrappedRef:this._collectGeminiScroll,onScroll:this.onScroll,onResize:this.onResize,className:this.props.className,style:this.props.style},l.createElement("div",{className:"mx_RoomView_messageListWrapper"},l.createElement("ol",{ref:"itemlist",className:"mx_RoomView_MessageList","aria-live":"polite"},this.props.children)))}})},function(e,t,n){"use strict";var r=c(n(0)),o=n(2),i=n(80),a=c(n(3)),s=c(n(10)),l=c(n(201)),u=c(n(27));function c(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"SearchBox",propTypes:{collapsed:r.default.PropTypes.bool,onSearch:r.default.PropTypes.func},getInitialState:function(){return{searchTerm:""}},componentDidMount:function(){this.dispatcherRef=s.default.register(this.onAction)},componentWillUnmount:function(){s.default.unregister(this.dispatcherRef)},onAction:function(e){switch(e.action){case"view_room":this.refs.search&&e.clear_search&&this._clearSearch();break;case"focus_room_filter":this.refs.search&&(this.refs.search.focus(),this.refs.search.select())}},onChange:function(){this.refs.search&&(this.setState({searchTerm:this.refs.search.value}),this.onSearch())},onSearch:new l.default(function(){this.props.onSearch(this.refs.search.value)},100),onToggleCollapse:function(e){e?s.default.dispatch({action:"show_left_panel"}):s.default.dispatch({action:"hide_left_panel"})},_onKeyDown:function(e){switch(e.keyCode){case i.KeyCode.ESCAPE:this._clearSearch(),s.default.dispatch({action:"focus_composer"})}},_clearSearch:function(){this.refs.search.value="",this.onChange()},render:function(){var e,t,n=this,i=a.default.getComponent("elements.TintableSvg"),s=this.refs.search&&""!==this.refs.search.value?"-1":"0";e=this.props.collapsed?r.default.createElement(u.default,{className:"mx_SearchBox_maximise",tabIndex:s,onClick:this.onToggleCollapse.bind(this,!0)},r.default.createElement(i,{src:"img/maximise.svg",width:"10",height:"16",alt:(0,o._t)("Expand panel")})):r.default.createElement(u.default,{className:"mx_SearchBox_minimise",tabIndex:s,onClick:this.onToggleCollapse.bind(this,!1)},r.default.createElement(i,{src:"img/minimise.svg",width:"10",height:"16",alt:(0,o._t)("Collapse panel")})),this.props.collapsed||(t=[this.state.searchTerm.length>0?r.default.createElement(u.default,{key:"button",className:"mx_SearchBox_closeButton",onClick:function(){n._clearSearch()}},r.default.createElement(i,{className:"mx_SearchBox_searchButton",src:"img/icons-close.svg",width:"24",height:"24"})):r.default.createElement(i,{key:"button",className:"mx_SearchBox_searchButton",src:"img/icons-search-copy.svg",width:"13",height:"13"}),r.default.createElement("input",{key:"searchfield",type:"text",ref:"search",className:"mx_SearchBox_search",value:this.state.searchTerm,onChange:this.onChange,onKeyDown:this._onKeyDown,placeholder:(0,o._t)("Filter room names")})]);return r.default.createElement("div",{className:"mx_SearchBox"},t,e)}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=p(n(0)),o=p(n(1)),i=n(17),a=p(n(448)),s=p(n(1558)),l=p(n(3)),u=p(n(10)),c=n(2),f=n(197),d=p(n(24));function p(e){return e&&e.__esModule?e:{default:e}}var m=r.default.createClass({displayName:"TagPanel",contextTypes:{matrixClient:o.default.instanceOf(i.MatrixClient)},getInitialState:function(){return{orderedTags:[],selectedTags:[]}},componentWillMount:function(){var e=this;this.unmounted=!1,this.context.matrixClient.on("Group.myMembership",this._onGroupMyMembership),this.context.matrixClient.on("sync",this._onClientSync),this._tagOrderStoreToken=a.default.addListener(function(){e.unmounted||e.setState({orderedTags:a.default.getOrderedTags()||[],selectedTags:a.default.getSelectedTags()})}),u.default.dispatch(s.default.fetchJoinedGroups(this.context.matrixClient))},componentWillUnmount:function(){this.unmounted=!0,this.context.matrixClient.removeListener("Group.myMembership",this._onGroupMyMembership),this.context.matrixClient.removeListener("sync",this._onClientSync),this._filterStoreToken&&this._filterStoreToken.remove()},_onGroupMyMembership:function(){this.unmounted||u.default.dispatch(s.default.fetchJoinedGroups(this.context.matrixClient))},_onClientSync:function(e,t){"ERROR"!==e&&t!==e&&u.default.dispatch(s.default.fetchJoinedGroups(this.context.matrixClient))},onMouseDown:function(e){this.state.selectedTags.length>0&&u.default.dispatch({action:"deselect_tags"})},onCreateGroupClick:function(e){e.stopPropagation(),u.default.dispatch({action:"view_create_group"})},onClearFilterClick:function(e){u.default.dispatch({action:"deselect_tags"})},render:function(){var e=this,t=l.default.getComponent("elements.GroupsButton"),n=l.default.getComponent("elements.DNDTagTile"),o=l.default.getComponent("elements.AccessibleButton"),i=l.default.getComponent("elements.TintableSvg"),a=l.default.getComponent("elements.GeminiScrollbarWrapper"),s=this.state.orderedTags.map(function(t,o){return r.default.createElement(n,{key:t,tag:t,index:o,selected:e.state.selectedTags.includes(t)})}),u=this.state.selectedTags.length>0,p=void 0;u&&(p=r.default.createElement(o,{className:"mx_TagPanel_clearButton",onClick:this.onClearFilterClick},r.default.createElement(i,{src:"img/icons-close.svg",width:"24",height:"24",alt:(0,c._t)("Clear filter"),title:(0,c._t)("Clear filter")})));var m=(0,d.default)("mx_TagPanel",{mx_TagPanel_items_selected:u});return r.default.createElement("div",{className:m},r.default.createElement("div",{className:"mx_TagPanel_clearButton_container"},p),r.default.createElement("div",{className:"mx_TagPanel_divider"}),r.default.createElement(a,{className:"mx_TagPanel_scroller",autoshow:!0,onMouseDown:this.onMouseDown},r.default.createElement(f.Droppable,{droppableId:"tag-panel-droppable",type:"draggable-TagTile"},function(e,t){return r.default.createElement("div",{className:"mx_TagPanel_tagTileContainer",ref:e.innerRef},s,e.placeholder)})),r.default.createElement("div",{className:"mx_TagPanel_divider"}),r.default.createElement("div",{className:"mx_TagPanel_groupsButton"},r.default.createElement(t,{tooltip:!0})))}});t.default=m,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(447),o={fetchJoinedGroups:function(e){return(0,r.asyncAction)("GroupActions.fetchJoinedGroups",function(){return e.getJoinedGroups()})}};t.default=o,e.exports=t.default},function(e,t,n){"use strict";var r=f(n(31)),o=f(n(51)),i=f(n(47)),a=f(n(22)),s=f(n(1)),l=f(n(9)),u=n(2),c=n(80);function f(e){return e&&e.__esModule?e:{default:e}}var d=n(0),p=n(41),m=n(17),h=m.EventTimeline,_=n(3),g=n(8),v=n(10),y=n(202),b=n(16),E=n(659),C=function(){},S=d.createClass({displayName:"TimelinePanel",propTypes:{timelineSet:s.default.object.isRequired,showReadReceipts:s.default.bool,manageReadReceipts:s.default.bool,manageReadMarkers:s.default.bool,hidden:s.default.bool,highlightedEventId:s.default.string,eventId:s.default.string,eventPixelOffset:s.default.number,showUrlPreview:s.default.bool,onScroll:s.default.func,onReadMarkerUpdated:s.default.func,timelineCap:s.default.number,className:s.default.string,tileShape:s.default.string,empty:s.default.string},statics:{roomReadMarkerTsMap:{}},getDefaultProps:function(){return{timelineCap:Number.MAX_VALUE,className:"mx_RoomView_messagePanel"}},getInitialState:function(){var e=null;if(this.props.manageReadMarkers){var t=this.props.timelineSet.room.getAccountData("m.fully_read");e=t?t.getContent().event_id:this._getCurrentReadReceipt()}return{events:[],timelineLoading:!0,canBackPaginate:!1,canForwardPaginate:!1,readMarkerVisible:!0,readMarkerEventId:e,backPaginating:!1,forwardPaginating:!1,clientSyncState:g.get().getSyncState(),isTwelveHour:a.default.getValue("showTwelveHourTimestamps"),alwaysShowTimestamps:a.default.getValue("alwaysShowTimestamps")}},componentWillMount:function(){C("TimelinePanel: mounting"),this.lastRRSentEventId=void 0,this.lastRMSentEventId=void 0,this.dispatcherRef=v.register(this.onAction),g.get().on("Room.timeline",this.onRoomTimeline),g.get().on("Room.timelineReset",this.onRoomTimelineReset),g.get().on("Room.redaction",this.onRoomRedaction),g.get().on("Room.receipt",this.onRoomReceipt),g.get().on("Room.localEchoUpdated",this.onLocalEchoUpdated),g.get().on("Room.accountData",this.onAccountData),g.get().on("Event.decrypted",this.onEventDecrypted),g.get().on("sync",this.onSync),this._initTimeline(this.props)},componentWillReceiveProps:function(e){if(e.timelineSet!==this.props.timelineSet&&console.warn("Replacing timelineSet on a TimelinePanel - confusion may ensue"),e.eventId!=this.props.eventId)return console.log("TimelinePanel switching to eventId "+e.eventId+" (was "+this.props.eventId+")"),this._initTimeline(e)},shouldComponentUpdate:function(e,t){return!y.shallowEqual(this.props,e)||!y.shallowEqual(this.state,t)},componentWillUnmount:function(){this.unmounted=!0,v.unregister(this.dispatcherRef);var e=g.get();e&&(e.removeListener("Room.timeline",this.onRoomTimeline),e.removeListener("Room.timelineReset",this.onRoomTimelineReset),e.removeListener("Room.redaction",this.onRoomRedaction),e.removeListener("Room.receipt",this.onRoomReceipt),e.removeListener("Room.localEchoUpdated",this.onLocalEchoUpdated),e.removeListener("Room.accountData",this.onAccountData),e.removeListener("Event.decrypted",this.onEventDecrypted),e.removeListener("sync",this.onSync))},onMessageListUnfillRequest:function(e,t){var n=e?h.BACKWARDS:h.FORWARDS;C("TimelinePanel: unpaginating events in direction",n);var r=t,o=this.state.events.findIndex(function(e){return e.getId()===r}),a=e?o+1:this.state.events.length-o;if(a>0){var s;C("TimelinePanel: Unpaginating",a,"in direction",n),this._timelineWindow.unpaginate(a,e);var l=e?"canBackPaginate":"canForwardPaginate";this.setState((s={},(0,i.default)(s,l,!0),(0,i.default)(s,"events",this._getEvents()),s))}},onMessageListFillRequest:function(e){var t=this;if(!this._shouldPaginate())return l.default.resolve(!1);var n=e?h.BACKWARDS:h.FORWARDS,r=e?"canBackPaginate":"canForwardPaginate",o=e?"backPaginating":"forwardPaginating";return this.state[r]?this._timelineWindow.canPaginate(n)?(C("TimelinePanel: Initiating paginate; backwards:"+e),this.setState((0,i.default)({},o,!0)),this._timelineWindow.paginate(n,20).then(function(n){var a;if(!t.unmounted){C("TimelinePanel: paginate complete backwards:"+e+"; success:"+n);var s=(a={},(0,i.default)(a,o,!1),(0,i.default)(a,r,n),(0,i.default)(a,"events",t._getEvents()),a),u=e?h.FORWARDS:h.BACKWARDS,c=e?"canForwardPaginate":"canBackPaginate";return!t.state[c]&&t._timelineWindow.canPaginate(u)&&(C("TimelinePanel: can now",u,"paginate again"),s[c]=!0),new l.default(function(e){t.setState(s,function(){e(n)})})}})):(C("TimelinePanel: can't",n,"paginate any further"),this.setState((0,i.default)({},r,!1)),l.default.resolve(!1)):(C("TimelinePanel: have given up",n,"paginating this timeline"),l.default.resolve(!1))},onMessageListScroll:function(e){this.props.onScroll&&this.props.onScroll(e),this.props.manageReadMarkers&&this.getReadMarkerPosition()<0&&this.setState({readMarkerVisible:!0})},onAction:function(e){switch(e.action){case"user_activity":case"user_activity_end":this.sendReadReceipt(),this.updateReadMarker();break;case"ignore_state_changed":this.forceUpdate()}},onRoomTimeline:function(e,t,n,r,i){var a=this;i.timeline.getTimelineSet()===this.props.timelineSet&&!n&&i&&i.liveEvent&&this.refs.messagePanel&&(this.refs.messagePanel.getScrollState().stuckAtBottom?this._timelineWindow.paginate(h.FORWARDS,1,!1).done(function(){if(!a.unmounted){var t=a._timelineWindow.getEvents(),n=t[t.length-1];a.props.timelineSet.room&&!a._timelineWindow.canPaginate(h.FORWARDS)&&t.push.apply(t,(0,o.default)(a.props.timelineSet.room.getPendingEvents()));var r={events:t};if(a.props.manageReadMarkers){var i=g.get().credentials.userId,s=null;(e.sender?e.sender.userId:null)==i||E.userCurrentlyActive()?n&&0===a.getReadMarkerPosition()&&(a._setReadMarker(n.getId(),n.getTs(),!0),r.readMarkerVisible=!1,r.readMarkerEventId=n.getId(),s=a.props.onReadMarkerUpdated):r.readMarkerVisible=!0}a.setState(r,s)}}):this.setState({canForwardPaginate:!0}))},onRoomTimelineReset:function(e,t){t===this.props.timelineSet&&this.refs.messagePanel&&this.refs.messagePanel.isAtBottom()&&this._loadTimeline()},canResetTimeline:function(){return this.refs.messagePanel&&this.refs.messagePanel.isAtBottom()},onRoomRedaction:function(e,t){this.unmounted||t===this.props.timelineSet.room&&this.forceUpdate()},onRoomReceipt:function(e,t){this.unmounted||t===this.props.timelineSet.room&&this.forceUpdate()},onLocalEchoUpdated:function(e,t,n){this.unmounted||t===this.props.timelineSet.room&&this._reloadEvents()},onAccountData:function(e,t){this.unmounted||t===this.props.timelineSet.room&&"m.fully_read"===e.getType()&&this.setState({readMarkerEventId:e.getContent().event_id},this.props.onReadMarkerUpdated)},onEventDecrypted:function(e){e.getRoomId()===this.props.timelineSet.room.roomId&&this.forceUpdate()},onSync:function(e,t,n){this.setState({clientSyncState:e})},sendReadReceipt:function(){var e=this;if(this.refs.messagePanel&&this.props.manageReadReceipts){var t=g.get();if(t&&!t.isGuest()){var n=!0,r=this._getCurrentReadReceipt(!0),o=this._indexForEventId(r);r&&null===o&&this._timelineWindow.canPaginate(h.FORWARDS)&&(n=!1);var i=this._getLastDisplayedEventIndex({ignoreOwn:!0});null===i&&(n=!1);var a=this.state.events[i];n=n&&i>o&&this.lastRRSentEventId!=a.getId();var s=this.lastRMSentEventId!=this.state.readMarkerEventId;(n||s)&&(n?this.lastRRSentEventId=a.getId():a=null,this.lastRMSentEventId=this.state.readMarkerEventId,C("TimelinePanel: Sending Read Markers for ",this.props.timelineSet.room.roomId,"rm",this.state.readMarkerEventId,a?"rr "+a.getId():""),g.get().setRoomReadMarkers(this.props.timelineSet.room.roomId,this.state.readMarkerEventId,a).catch(function(t){if("M_UNRECOGNIZED"===t.errcode&&a)return g.get().sendReadReceipt(a).catch(function(){e.lastRRSentEventId=void 0});e.lastRRSentEventId=void 0,e.lastRMSentEventId=void 0}),this.isAtEndOfLiveTimeline()&&(this.props.timelineSet.room.setUnreadNotificationCount("total",0),this.props.timelineSet.room.setUnreadNotificationCount("highlight",0),v.dispatch({action:"on_room_read",roomId:this.props.timelineSet.room.roomId})))}}},updateReadMarker:function(){if(this.props.manageReadMarkers&&0===this.getReadMarkerPosition()){var e=this._getLastDisplayedEventIndex({allowPartial:!0,ignoreEchoes:!0});if(null!==e){var t=this.state.events[e];this._setReadMarker(t.getId(),t.getTs()),this.state.readMarkerVisible&&this.setState({readMarkerVisible:!1})}}},_advanceReadMarkerPastMyEvents:function(){if(this.props.manageReadMarkers){for(var e=this._timelineWindow.getEvents(),t=0;t<e.length&&e[t].getId()!=this.state.readMarkerEventId;t++);if(!(t>=e.length)){var n=g.get().credentials.userId;for(t++;t<e.length;t++){if(!(r=e[t]).sender||r.sender.userId!=n)break}var r=e[--t];this._setReadMarker(r.getId(),r.getTs())}}},jumpToLiveTimeline:function(){this._timelineWindow.canPaginate(h.FORWARDS)?this._loadTimeline():this.refs.messagePanel&&this.refs.messagePanel.scrollToBottom()},jumpToReadMarker:function(){this.props.manageReadMarkers&&(this.refs.messagePanel&&this.state.readMarkerEventId&&(null===this.refs.messagePanel.getReadMarkerPosition()?this._loadTimeline(this.state.readMarkerEventId,0,1/3):this.refs.messagePanel.scrollToEvent(this.state.readMarkerEventId,0,1/3)))},forgetReadMarker:function(){if(this.props.manageReadMarkers){var e=this._getCurrentReadReceipt(),t=this.props.timelineSet.getTimelineForEvent(e),n=void 0;if(t){var r=t.getEvents().find(function(t){return t.getId()==e});r&&(n=r.getTs())}this._setReadMarker(e,n)}},isAtEndOfLiveTimeline:function(){return this.refs.messagePanel&&this.refs.messagePanel.isAtBottom()&&this._timelineWindow&&!this._timelineWindow.canPaginate(h.FORWARDS)},getScrollState:function(){return this.refs.messagePanel?this.refs.messagePanel.getScrollState():null},getReadMarkerPosition:function(){if(!this.props.manageReadMarkers)return null;if(!this.refs.messagePanel)return null;var e=this.refs.messagePanel.getReadMarkerPosition();if(null!==e)return e;var t=S.roomReadMarkerTsMap[this.props.timelineSet.room.roomId];return t&&this.state.events.length>0?t<this.state.events[0].getTs()?-1:1:null},canJumpToReadMarker:function(){var e=this.getReadMarkerPosition();return null!==this.state.readMarkerEventId&&this.state.readMarkerEventId!==this._getCurrentReadReceipt()&&(e<0||null===e)},handleScrollKey:function(e){this.refs.messagePanel&&(!e.ctrlKey||e.shiftKey||e.altKey||e.metaKey||e.keyCode!=c.KeyCode.END?this.refs.messagePanel.handleScrollKey(e):this.jumpToLiveTimeline())},_initTimeline:function(e){var t=e.eventId,n=e.eventPixelOffset,r=1;return null==n&&(r=.5),this._loadTimeline(t,n,r)},_loadTimeline:function(e,t,n){var o=this;this._timelineWindow=new m.TimelineWindow(g.get(),this.props.timelineSet,{windowLimit:this.props.timelineCap});var i=function(){o._reloadEvents(),o._advanceReadMarkerPastMyEvents(),o.setState({canBackPaginate:o._timelineWindow.canPaginate(h.BACKWARDS),canForwardPaginate:o._timelineWindow.canPaginate(h.FORWARDS),timelineLoading:!1},function(){o.refs.messagePanel?(e?o.refs.messagePanel.scrollToEvent(e,t,n):o.refs.messagePanel.scrollToBottom(),o.sendReadReceipt(),o.updateReadMarker()):console.log("can't initialise scroll state because messagePanel didn't load")})},a=this._timelineWindow.load(e,20);a.isFulfilled()?i():(this.setState({events:[],canBackPaginate:!1,canForwardPaginate:!1,timelineLoading:!0}),a=a.then(i,function(t){o.setState({timelineLoading:!1}),console.error("Error loading timeline panel at "+e+": "+t);t.message?t.message:(0,r.default)(t);var n=_.getComponent("dialogs.ErrorDialog"),i=void 0;e&&(i=function(){v.dispatch({action:"view_room",room_id:o.props.timelineSet.room.roomId})});var a="M_FORBIDDEN"==t.errcode?(0,u._t)("Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question."):(0,u._t)("Tried to load a specific point in this room's timeline, but was unable to find it.");b.createTrackedDialog("Failed to load timeline position","",n,{title:(0,u._t)("Failed to load timeline position"),description:a,onFinished:i})})),a.done()},_reloadEvents:function(){this.unmounted||this.setState({events:this._getEvents()})},_getEvents:function(){var e=this._timelineWindow.getEvents();return this._timelineWindow.canPaginate(h.FORWARDS)||e.push.apply(e,(0,o.default)(this.props.timelineSet.getPendingEvents())),e},_indexForEventId:function(e){for(var t=0;t<this.state.events.length;++t)if(e==this.state.events[t].getId())return t;return null},_getLastDisplayedEventIndex:function(e){var t=(e=e||{}).ignoreOwn||!1,n=e.ignoreEchoes||!1,r=e.allowPartial||!1,o=this.refs.messagePanel;if(void 0===o)return null;for(var i=p.findDOMNode(o).getBoundingClientRect(),a=g.get().credentials.userId,s=this.state.events.length-1;s>=0;--s){var l=this.state.events[s];if((!t||!l.sender||l.sender.userId!=a)&&(!n||!l.status)){var u=o.getNodeForEventId(l.getId());if(u){var c=u.getBoundingClientRect();if(r&&c.top<i.bottom||!r&&c.bottom<i.bottom)return s}}}return null},_getCurrentReadReceipt:function(e){var t=g.get();if(null==t)return null;var n=t.credentials.userId;return this.props.timelineSet.room.getEventReadUpTo(n,e)},_setReadMarker:function(e,t,n){var r=this.props.timelineSet.room.roomId;e!==this.state.readMarkerEventId&&(S.roomReadMarkerTsMap[r]=t,n||this.setState({readMarkerEventId:e},this.props.onReadMarkerUpdated))},_shouldPaginate:function(){return!this.state.events.some(function(e){return e.isBeingDecrypted()})},render:function(){var e=_.getComponent("structures.MessagePanel"),t=_.getComponent("elements.Spinner");if(this.state.timelineLoading)return d.createElement("div",{className:"mx_RoomView_messagePanelSpinner"},d.createElement(t,null));if(0==this.state.events.length&&!this.state.canBackPaginate&&this.props.empty)return d.createElement("div",{className:this.props.className+" mx_RoomView_messageListWrapper"},d.createElement("div",{className:"mx_RoomView_empty"},this.props.empty));var n=!this._timelineWindow.canPaginate(h.FORWARDS),r=this.state.forwardPaginating||["PREPARED","CATCHUP"].includes(this.state.clientSyncState);return d.createElement(e,{ref:"messagePanel",hidden:this.props.hidden,backPaginating:this.state.backPaginating,forwardPaginating:r,events:this.state.events,highlightedEventId:this.props.highlightedEventId,readMarkerEventId:this.state.readMarkerEventId,readMarkerVisible:this.state.readMarkerVisible,suppressFirstDateSeparator:this.state.canBackPaginate,showUrlPreview:this.props.showUrlPreview,showReadReceipts:this.props.showReadReceipts,ourUserId:g.get().credentials.userId,stickyBottom:n,onScroll:this.onMessageListScroll,onFillRequest:this.onMessageListFillRequest,onUnfillRequest:this.onMessageListUnfillRequest,isTwelveHour:this.state.isTwelveHour,alwaysShowTimestamps:this.state.alwaysShowTimestamps,className:this.props.className,tileShape:this.props.tileShape})}});e.exports=S},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1)),o=n(2);var i=n(0),a=n(663),s=n(10),l=n(452);e.exports=i.createClass({displayName:"UploadBar",propTypes:{room:r.default.object},componentDidMount:function(){this.dispatcherRef=s.register(this.onAction),this.mounted=!0},componentWillUnmount:function(){this.mounted=!1,s.unregister(this.dispatcherRef)},onAction:function(e){switch(e.action){case"upload_progress":case"upload_finished":case"upload_failed":this.mounted&&this.forceUpdate()}},render:function(){var e=a.getCurrentUploads();if(0==e.length)return i.createElement("div",null);for(var t=void 0,n=0;n<e.length;++n)if(e[n].roomId==this.props.room.roomId){t=e[n];break}if(!t)return i.createElement("div",null);var r={width:t.loaded/(t.total||1)*100+"%"},s=l(t.loaded),u=l(t.total);s.replace(/^.* /,"")===u.replace(/^.* /,"")&&(s=s.replace(/ .*/,""));var c=(0,o._t)("Uploading %(filename)s and %(count)s others",{filename:t.fileName,count:e.length-1});return i.createElement("div",{className:"mx_UploadBar"},i.createElement("div",{className:"mx_UploadBar_uploadProgressOuter"},i.createElement("div",{className:"mx_UploadBar_uploadProgressInner",style:r})),i.createElement("img",{className:"mx_UploadBar_uploadIcon mx_filterFlipColor",src:"img/fileicon.png",width:"17",height:"22"}),i.createElement("img",{className:"mx_UploadBar_uploadCancel mx_filterFlipColor",src:"img/cancel.svg",width:"18",height:"18",onClick:function(){a.cancelUpload(t.promise)}}),i.createElement("div",{className:"mx_UploadBar_uploadBytes"},s," / ",u),i.createElement("div",{className:"mx_UploadBar_uploadFilename"},c))}})},function(e,t,n){"use strict";var r=g(n(20)),o=g(n(19)),i=n(9),a=g(i),s=n(22),l=g(s),u=g(n(1)),c=g(n(444)),f=g(n(90)),d=g(n(27)),p=n(2),m=_(p),h=_(n(250));function _(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function g(e){return e&&e.__esModule?e:{default:e}}var v=n(0),y=n(41),b=n(3),E=n(8),C=n(71),S=n(16),D=n(10),w=n(1562),T=n(665),x=n(649),R=n(453),k=n(454),N=n(39),I="dist"in w?w.version:w.gitHead||"<local>",O=/^v?(\d+\.\d+\.\d+(?:-rc.+)?)(?:-(?:\d+-g)?([0-9a-fA-F]+))?(?:-dirty)?$/i,A=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=t.match(O),r=void 0;return r=n&&n[1]?n.length>1&&n[2]?"https://github.com/"+e+"/commit/"+n[2]:"https://github.com/"+e+"/releases/tag/v"+n[1]:"https://github.com/"+e+"/commit/"+t.split("-")[0],v.createElement("a",{target:"_blank",rel:"noopener",href:r},t)},M=[{id:"urlPreviewsEnabled"},{id:"autoplayGifsAndVideos"},{id:"alwaysShowEncryptionIcons"},{id:"hideReadReceipts"},{id:"dontSendTypingNotifications"},{id:"alwaysShowTimestamps"},{id:"showTwelveHourTimestamps"},{id:"hideJoinLeaves"},{id:"hideAvatarChanges"},{id:"hideDisplaynameChanges"},{id:"useCompactLayout"},{id:"hideRedactions"},{id:"enableSyntaxHighlightLanguageDetection"},{id:"MessageComposerInput.autoReplaceEmoji"},{id:"MessageComposerInput.dontSuggestEmoji"},{id:"Pill.shouldHidePillAvatar"},{id:"TextualBody.disableBigEmoji"},{id:"VideoView.flipVideoHorizontally"},{id:"TagPanel.disableTagPanel"},{id:"enableWidgetScreenshots"},{id:"RoomSubList.showEmpty"}],P=[{id:"analyticsOptIn",fn:function(e){e?f.default.enable():f.default.disable()}}],L=[{id:"webRtcForceTURN",fn:function(e){E.get().setForceTURN(e)}}],F=[{id:"blacklistUnverifiedDevices",fn:function(e){E.get().setGlobalBlacklistUnverifiedDevices(e)}}],U=[{label:(0,p._td)("Light theme"),value:"light"},{label:(0,p._td)("Dark theme"),value:"dark"},{label:(0,p._td)("Status.im theme"),value:"status"}],j=v.createClass({displayName:"IgnoredUser",propTypes:{userId:u.default.string.isRequired,onUnignored:u.default.func.isRequired},_onUnignoreClick:function(){var e=this,t=E.get().getIgnoredUsers(),n=t.indexOf(this.props.userId);-1!==n?(t.splice(n,1),E.get().setIgnoredUsers(t).then(function(){return e.props.onUnignored(e.props.userId)})):this.props.onUnignored(this.props.userId)},render:function(){return v.createElement("li",null,v.createElement(d.default,{onClick:this._onUnignoreClick,className:"mx_textButton"},(0,p._t)("Unignore")),this.props.userId)}});e.exports=v.createClass({displayName:"UserSettings",propTypes:{onClose:u.default.func,brand:u.default.string,referralBaseUrl:u.default.string,teamToken:u.default.string},getDefaultProps:function(){return{onClose:function(){}}},getInitialState:function(){return{avatarUrl:null,threepids:[],phase:"UserSettings.LOADING",email_add_pending:!1,vectorVersion:void 0,rejectingInvites:!1,mediaDevices:null,ignoredUsers:[]}},componentWillMount:function(){var e=this;if(this._unmounted=!1,this._addThreepid=null,C.get()&&a.default.resolve().then(function(){return C.get().getAppVersion()}).done(function(t){e._unmounted||e.setState({vectorVersion:t})},function(e){console.log("Failed to fetch app version",e)}),this._refreshMediaDevices(),this._refreshIgnoredUsers(),E.get().on("RoomMember.membership",this._onInviteStateChange),D.dispatch({action:"panel_disable",sideDisabled:!0,middleDisabled:!0}),this._refreshFromServer(),C.get().isElectron()){var t=n(293).ipcRenderer;t.on("settings",this._electronSettings),t.send("settings_get")}this.setState({language:m.getCurrentLanguage()}),this._sessionStore=c.default,this._sessionStoreToken=this._sessionStore.addListener(this._setStateFromSessionStore),this._setStateFromSessionStore()},componentDidMount:function(){this.dispatcherRef=D.register(this.onAction),this._me=E.get().credentials.userId},componentWillUnmount:function(){this._unmounted=!0,D.dispatch({action:"panel_disable",sideDisabled:!1,middleDisabled:!1}),D.unregister(this.dispatcherRef);var e=E.get();(e&&e.removeListener("RoomMember.membership",this._onInviteStateChange),C.get().isElectron())&&n(293).ipcRenderer.removeListener("settings",this._electronSettings)},shouldComponentUpdate:function(){return Boolean(E.get())},_setStateFromSessionStore:function(){this.setState({userHasGeneratedPassword:Boolean(this._sessionStore.getCachedPassword())})},_electronSettings:function(e,t){this.setState({electron_settings:t})},_refreshMediaDevices:function(e){var t=this;e&&e.getTracks().forEach(function(e){return e.stop()}),a.default.resolve().then(function(){return x.getDevices()}).then(function(e){t._unmounted||t.setState({mediaDevices:e,activeAudioOutput:l.default.getValueAt(s.SettingLevel.DEVICE,"webrtc_audiooutput"),activeAudioInput:l.default.getValueAt(s.SettingLevel.DEVICE,"webrtc_audioinput"),activeVideoInput:l.default.getValueAt(s.SettingLevel.DEVICE,"webrtc_videoinput")})})},_refreshFromServer:function(){var e=this;a.default.all([T.loadProfileInfo(),T.loadThreePids()]).done(function(t){e.setState({avatarUrl:t[0].avatar_url,threepids:t[1].threepids,phase:"UserSettings.DISPLAY"})},function(e){var t=b.getComponent("dialogs.ErrorDialog");console.error("Failed to load user settings: "+e),S.createTrackedDialog("Can't load user settings","",t,{title:(0,p._t)("Can't load user settings"),description:e&&e.message?e.message:(0,p._t)("Server may be unavailable or overloaded")})})},_refreshIgnoredUsers:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=E.get().getIgnoredUsers();if(e){var n=t.indexOf(e);-1!==n&&t.splice(n,1)}this.setState({ignoredUsers:t})},onAction:function(e){"notifier_enabled"===e.action?this.forceUpdate():"ignore_state_changed"===e.action&&this._refreshIgnoredUsers()},onAvatarPickerClick:function(e){this.refs.file_label&&this.refs.file_label.click()},onAvatarSelected:function(e){var t=this,n=this.refs.changeAvatar;n?n.onFileSelected(e).done(function(){t._refreshFromServer()},function(e){console.error("Failed to set avatar: "+e);var t=b.getComponent("dialogs.ErrorDialog");S.createTrackedDialog("Failed to set avatar","",t,{title:(0,p._t)("Failed to set avatar."),description:e&&e.message?e.message:(0,p._t)("Operation failed")})}):console.error("No ChangeAvatar found to upload image to!")},onAvatarRemoveClick:function(){E.get().setAvatarUrl(null),this.setState({avatarUrl:null})},onLogoutClicked:function(e){var t=this,n=b.getComponent("dialogs.QuestionDialog");S.createTrackedDialog("Logout E2E Export","",n,{title:(0,p._t)("Sign out"),description:v.createElement("div",null,(0,p._t)("For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.")),button:(0,p._t)("Sign out"),extraButtons:[v.createElement("button",{key:"export",className:"mx_Dialog_primary",onClick:this._onExportE2eKeysClicked},(0,p._t)("Export E2E room keys"))],onFinished:function(e){e&&(D.dispatch({action:"logout"}),t.props.onFinished&&t.props.onFinished())}})},onPasswordChangeError:function(e){var t=e.error||"";403===e.httpStatus?t=(0,p._t)("Failed to change password. Is your password correct?"):e.httpStatus&&(t+=" (HTTP status "+e.httpStatus+")");var n=b.getComponent("dialogs.ErrorDialog");console.error("Failed to change password: "+t),S.createTrackedDialog("Failed to change password","",n,{title:(0,p._t)("Error"),description:t})},onPasswordChanged:function(){var e=b.getComponent("dialogs.ErrorDialog");S.createTrackedDialog("Password changed","",e,{title:(0,p._t)("Success"),description:(0,p._t)("Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them")+"."})},_onAddEmailEditFinished:function(e,t){t&&this._addEmail()},_addEmail:function(){var e=this,t=b.getComponent("dialogs.ErrorDialog"),n=b.getComponent("dialogs.QuestionDialog"),r=this.refs.add_email_input.value;R.looksValid(r)?(this._addThreepid=new k,this._addThreepid.addEmailAddress(r,!0).done(function(){S.createTrackedDialog("Verification Pending","",n,{title:(0,p._t)("Verification Pending"),description:(0,p._t)("Please check your email and click on the link it contains. Once this is done, click continue."),button:(0,p._t)("Continue"),onFinished:e.onEmailDialogFinished})},function(n){e.setState({email_add_pending:!1}),console.error("Unable to add email address "+r+" "+n),S.createTrackedDialog("Unable to add email address","",t,{title:(0,p._t)("Unable to add email address"),description:n&&n.message?n.message:(0,p._t)("Operation failed")})}),y.findDOMNode(this.refs.add_email_input).blur(),this.setState({email_add_pending:!0})):S.createTrackedDialog("Invalid email address","",t,{title:(0,p._t)("Invalid Email Address"),description:(0,p._t)("This doesn't appear to be a valid email address")})},onRemoveThreepidClicked:function(e){var t=this,n=b.getComponent("dialogs.QuestionDialog");S.createTrackedDialog("Remove 3pid","",n,{title:(0,p._t)("Remove Contact Information?"),description:(0,p._t)("Remove %(threePid)s?",{threePid:e.address}),button:(0,p._t)("Remove"),onFinished:function(n){n&&(t.setState({phase:"UserSettings.LOADING"}),E.get().deleteThreePid(e.medium,e.address).then(function(){return t._refreshFromServer()}).catch(function(e){var t=b.getComponent("dialogs.ErrorDialog");console.error("Unable to remove contact information: "+e),S.createTrackedDialog("Remove 3pid failed","",t,{title:(0,p._t)("Unable to remove contact information"),description:e&&e.message?e.message:(0,p._t)("Operation failed")})}).done())}})},onEmailDialogFinished:function(e){e?this.verifyEmailAddress():this.setState({email_add_pending:!1})},verifyEmailAddress:function(){var e=this;this._addThreepid.checkEmailLinkClicked().done(function(){e._addThreepid=null,e.setState({phase:"UserSettings.LOADING"}),e._refreshFromServer(),e.setState({email_add_pending:!1})},function(t){if(e.setState({email_add_pending:!1}),"M_THREEPID_AUTH_FAILED"==t.errcode){var n=b.getComponent("dialogs.QuestionDialog"),r=(0,p._t)("Unable to verify email address.")+" "+(0,p._t)("Please check your email and click on the link it contains. Once this is done, click continue.");S.createTrackedDialog("Verification Pending","",n,{title:(0,p._t)("Verification Pending"),description:r,button:(0,p._t)("Continue"),onFinished:e.onEmailDialogFinished})}else{var o=b.getComponent("dialogs.ErrorDialog");console.error("Unable to verify email address: "+t),S.createTrackedDialog("Unable to verify email address","",o,{title:(0,p._t)("Unable to verify email address."),description:t&&t.message?t.message:(0,p._t)("Operation failed")})}})},_onDeactivateAccountClicked:function(){var e=b.getComponent("dialogs.DeactivateAccountDialog");S.createTrackedDialog("Deactivate Account","",e,{})},_onBugReportClicked:function(){var e=b.getComponent("dialogs.BugReportDialog");e&&S.createTrackedDialog("Bug Report Dialog","",e,{})},_onClearCacheClicked:function(){C.get()&&(E.get().stopClient(),E.get().store.deleteAllData().done(function(){C.get().reload()}))},_onInviteStateChange:function(e,t,n){t.userId===this._me&&"invite"===n&&this.forceUpdate()},_onRejectAllInvitesClicked:function(e,t){var n=this;this.setState({rejectingInvites:!0});var r=e.map(function(e){return E.get().leave(e.roomId).catch(function(e){})});a.default.all(r).then(function(){n.setState({rejectingInvites:!1})})},_onExportE2eKeysClicked:function(){S.createTrackedDialogAsync("Export E2E Keys","",function(e){n.e(9).then(function(){e(n(180))}.bind(null,n)).catch(n.oe)},{matrixClient:E.get()})},_onImportE2eKeysClicked:function(){S.createTrackedDialogAsync("Import E2E Keys","",function(e){n.e(9).then(function(){e(n(493))}.bind(null,n)).catch(n.oe)},{matrixClient:E.get()})},_renderGroupSettings:function(){var e=b.getComponent("groups.GroupUserSettings");return v.createElement(e,null)},_renderReferral:function(){var e=this.props.teamToken;if(!e)return null;if("string"!=typeof e)return console.warn("Team token not a string"),null;var t=(this.props.referralBaseUrl||window.location.origin)+"/#/register?referrer="+this._me+"&team_token="+e;return v.createElement("div",null,v.createElement("h3",null,"Referral"),v.createElement("div",{className:"mx_UserSettings_section"},(0,p._t)("Refer a friend to Riot:")," ",v.createElement("a",{href:t},t)))},onLanguageChange:function(e){this.state.language!==e&&(l.default.setValue("language",null,s.SettingLevel.DEVICE,e),this.setState({language:e}),C.get().reload())},_renderLanguageSetting:function(){var e=b.getComponent("views.elements.LanguageDropdown");return v.createElement("div",null,v.createElement("label",{htmlFor:"languageSelector"},(0,p._t)("Interface Language")),v.createElement(e,{ref:"language",onOptionChange:this.onLanguageChange,className:"mx_UserSettings_language",value:this.state.language}))},_renderUserInterfaceSettings:function(){return v.createElement("div",null,v.createElement("h3",null,(0,p._t)("User Interface")),v.createElement("div",{className:"mx_UserSettings_section"},M.map(this._renderAccountSetting),U.map(this._renderThemeOption),v.createElement("table",null,v.createElement("tbody",null,v.createElement("tr",null,v.createElement("td",null,v.createElement("strong",null,(0,p._t)("Autocomplete Delay (ms):"))),v.createElement("td",null,v.createElement("input",{type:"number",defaultValue:l.default.getValueAt(s.SettingLevel.DEVICE,"autocompleteDelay"),onChange:function(e){return l.default.setValue("autocompleteDelay",null,s.SettingLevel.DEVICE,e.target.value)}}))))),this._renderLanguageSetting()))},_renderAccountSetting:function(e){var t=b.getComponent("elements.SettingsFlag");return v.createElement("div",{className:"mx_UserSettings_toggle",key:e.id},v.createElement(t,{name:e.id,label:e.label,level:s.SettingLevel.ACCOUNT,onChange:e.fn}))},_renderThemeOption:function(e){var t=b.getComponent("elements.SettingsFlag");return v.createElement("div",{className:"mx_UserSettings_toggle",key:e.id+"_"+e.value},v.createElement(t,{name:"theme",label:e.label,level:s.SettingLevel.ACCOUNT,onChange:function(t){return D.dispatch({action:"set_theme",value:e.value})},group:"theme",value:e.value}))},_renderCryptoInfo:function(){var e=E.get(),t=e.deviceId,n=e.getDeviceEd25519Key();n=n?h.formatCryptoKey(n):(0,p._t)("<not supported>");var r=null;return e.isCryptoEnabled&&(r=v.createElement("div",{className:"mx_UserSettings_importExportButtons"},v.createElement(d.default,{className:"mx_UserSettings_button",onClick:this._onExportE2eKeysClicked},(0,p._t)("Export E2E room keys")),v.createElement(d.default,{className:"mx_UserSettings_button",onClick:this._onImportE2eKeysClicked},(0,p._t)("Import E2E room keys")))),v.createElement("div",null,v.createElement("h3",null,(0,p._t)("Cryptography")),v.createElement("div",{className:"mx_UserSettings_section mx_UserSettings_cryptoSection"},v.createElement("ul",null,v.createElement("li",null,v.createElement("label",null,(0,p._t)("Device ID:")),v.createElement("span",null,v.createElement("code",null,t))),v.createElement("li",null,v.createElement("label",null,(0,p._t)("Device key:")),v.createElement("span",null,v.createElement("code",null,v.createElement("b",null,n))))),r),v.createElement("div",{className:"mx_UserSettings_section"},F.map(this._renderDeviceSetting)))},_renderIgnoredUsers:function(){if(this.state.ignoredUsers.length>0){var e=this._refreshIgnoredUsers;return v.createElement("div",null,v.createElement("h3",null,(0,p._t)("Ignored Users")),v.createElement("div",{className:"mx_UserSettings_section mx_UserSettings_ignoredUsersSection"},v.createElement("ul",null,this.state.ignoredUsers.map(function(t){return v.createElement(j,{key:t,userId:t,onUnignored:e})}))))}return v.createElement("div",null)},_renderDeviceSetting:function(e){var t=b.getComponent("elements.SettingsFlag");return v.createElement("div",{className:"mx_UserSettings_toggle",key:e.id},v.createElement(t,{name:e.id,label:e.label,level:s.SettingLevel.DEVICE,onChange:e.fn}))},_renderDevicesPanel:function(){var e=b.getComponent("settings.DevicesPanel");return v.createElement("div",null,v.createElement("h3",null,(0,p._t)("Devices")),v.createElement(e,{className:"mx_UserSettings_section"}))},_renderBugReport:function(){return N.get().bug_report_endpoint_url?v.createElement("div",null,v.createElement("h3",null,(0,p._t)("Submit Debug Logs")),v.createElement("div",{className:"mx_UserSettings_section"},v.createElement("p",null,(0,p._t)("If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.")),v.createElement("button",{className:"mx_UserSettings_button",onClick:this._onBugReportClicked},(0,p._t)("Submit debug logs")))):v.createElement("div",null)},_renderAnalyticsControl:function(){return N.get().piwik?v.createElement("div",null,v.createElement("h3",null,(0,p._t)("Analytics")),v.createElement("div",{className:"mx_UserSettings_section"},(0,p._t)("Riot collects anonymous analytics to allow us to improve the application."),v.createElement("br",null),(0,p._t)("Privacy is important to us, so we don't collect any personal or identifiable data for our analytics."),v.createElement(d.default,{className:"mx_UserSettings_advanced_spoiler",onClick:f.default.showDetailsModal},(0,p._t)("Learn more about how we use analytics.")),P.map(this._renderDeviceSetting))):v.createElement("div",null)},_renderLabs:function(){var e=this,t=[];return l.default.getLabsFeatures().forEach(function(n){var r=function(){var t=(0,i.coroutine)(o.default.mark(function t(r){var a;return o.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(a=r.target.checked,"feature_lazyloading"!==n){t.next=8;break}return t.next=4,(0,i.resolve)(e._onLazyLoadChanging(a));case 4:if(t.sent){t.next=8;break}return r.preventDefault(),t.abrupt("return");case 8:return t.next=10,(0,i.resolve)(l.default.setFeatureEnabled(n,a));case 10:e.forceUpdate();case 11:case"end":return t.stop()}},t,e)}));return function(e){return t.apply(this,arguments)}}();t.push(v.createElement("div",{key:n,className:"mx_UserSettings_toggle"},v.createElement("input",{type:"checkbox",id:n,name:n,checked:l.default.isFeatureEnabled(n),onChange:r}),v.createElement("label",{htmlFor:n},l.default.getDisplayName(n))))}),0===t.length?null:v.createElement("div",null,v.createElement("h3",null,(0,p._t)("Labs")),v.createElement("div",{className:"mx_UserSettings_section"},v.createElement("p",null,(0,p._t)("These are experimental features that may break in unexpected ways"),". ",(0,p._t)("Use with caution"),"."),t))},_onLazyLoadChanging:function(){var e=(0,i.coroutine)(o.default.mark(function e(t){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!t){e.next=8;break}return e.next=3,(0,i.resolve)(E.get().doesServerSupportLazyLoading());case 3:if(e.sent){e.next=8;break}return e.next=7,(0,i.resolve)(new a.default(function(e){var t=b.getComponent("dialogs.QuestionDialog");S.createDialog(t,{title:(0,p._t)("Lazy loading members not supported"),description:v.createElement("div",null,(0,p._t)("Lazy loading is not supported by your current homeserver.")),button:(0,p._t)("OK"),onFinished:e})}));case 7:return e.abrupt("return",!1);case 8:return e.abrupt("return",!0);case 9:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),_renderDeactivateAccount:function(){return v.createElement("div",null,v.createElement("h3",null,(0,p._t)("Deactivate Account")),v.createElement("div",{className:"mx_UserSettings_section"},v.createElement(d.default,{className:"mx_UserSettings_button danger",onClick:this._onDeactivateAccountClicked}," ",(0,p._t)("Deactivate my account"))))},_renderTermsAndConditionsLinks:function(){if(N.get().terms_and_conditions_links){var e=[],t=!0,n=!1,o=void 0;try{for(var i,a=(0,r.default)(N.get().terms_and_conditions_links);!(t=(i=a.next()).done);t=!0){var s=i.value;e.push(v.createElement("div",{key:s.url},v.createElement("a",{href:s.url,rel:"noopener",target:"_blank"},s.text)))}}catch(e){n=!0,o=e}finally{try{!t&&a.return&&a.return()}finally{if(n)throw o}}return v.createElement("div",null,v.createElement("h3",null,(0,p._t)("Legal")),v.createElement("div",{className:"mx_UserSettings_section"},e))}return null},_renderClearCache:function(){return v.createElement("div",null,v.createElement("h3",null,(0,p._t)("Clear Cache")),v.createElement("div",{className:"mx_UserSettings_section"},v.createElement(d.default,{className:"mx_UserSettings_button danger",onClick:this._onClearCacheClicked},(0,p._t)("Clear Cache and Reload"))))},_renderCheckUpdate:function(){var e=C.get();return"canSelfUpdate"in e&&e.canSelfUpdate()&&"startUpdateCheck"in e?v.createElement("div",null,v.createElement("h3",null,(0,p._t)("Updates")),v.createElement("div",{className:"mx_UserSettings_section"},v.createElement(d.default,{className:"mx_UserSettings_button",onClick:e.startUpdateCheck},(0,p._t)("Check for update")))):v.createElement("div",null)},_renderBulkOptions:function(){var e=this,t=E.get().getRooms().filter(function(t){return t.hasMembershipState(e._me,"invite")});if(0===t.length)return null;var n=b.getComponent("elements.Spinner"),r=v.createElement(n,null);if(!this.state.rejectingInvites){var o=this._onRejectAllInvitesClicked.bind(this,t);r=v.createElement(d.default,{className:"mx_UserSettings_button danger",onClick:o},(0,p._t)("Reject all %(invitedRooms)s invites",{invitedRooms:t.length}))}return v.createElement("div",null,v.createElement("h3",null,(0,p._t)("Bulk Options")),v.createElement("div",{className:"mx_UserSettings_section"},r))},_renderElectronSettings:function(){var e=this.state.electron_settings;if(e)return v.createElement("div",null,v.createElement("h3",null,(0,p._t)("Desktop specific")),v.createElement("div",{className:"mx_UserSettings_section"},v.createElement("div",{className:"mx_UserSettings_toggle"},v.createElement("input",{type:"checkbox",name:"auto-launch",defaultChecked:e["auto-launch"],onChange:this._onAutoLaunchChanged}),v.createElement("label",{htmlFor:"auto-launch"},(0,p._t)("Start automatically after system login")))))},_onAutoLaunchChanged:function(e){n(293).ipcRenderer.send("settings_set","auto-launch",e.target.checked)},_mapWebRtcDevicesToSpans:function(e){return e.map(function(e){return v.createElement("span",{key:e.deviceId},e.label)})},_setAudioOutput:function(e){this.setState({activeAudioOutput:e}),x.setAudioOutput(e)},_setAudioInput:function(e){this.setState({activeAudioInput:e}),x.setAudioInput(e)},_setVideoInput:function(e){this.setState({activeVideoInput:e}),x.setVideoInput(e)},_requestMediaPermissions:function(e){var t=window.navigator.getUserMedia||window.navigator.webkitGetUserMedia||window.navigator.mozGetUserMedia;if(t)return t.apply(window.navigator,[{video:!0,audio:!0},this._refreshMediaDevices,function(){var e=b.getComponent("dialogs.ErrorDialog");S.createTrackedDialog("No media permissions","",e,{title:(0,p._t)("No media permissions"),description:(0,p._t)("You may need to manually permit Riot to access your microphone/webcam")})}])},_renderWebRtcDeviceSettings:function(){if(!1===this.state.mediaDevices)return v.createElement(d.default,{element:"p",className:"mx_UserSettings_link",onClick:this._requestMediaPermissions},(0,p._t)("Missing Media Permissions, click here to request."));if(this.state.mediaDevices){var e=b.getComponent("elements.Dropdown"),t=v.createElement("p",null,(0,p._t)("No Audio Outputs detected")),n=v.createElement("p",null,(0,p._t)("No Microphones detected")),r=v.createElement("p",null,(0,p._t)("No Webcams detected")),o={deviceId:"",label:(0,p._t)("Default Device")},i=this.state.mediaDevices.audiooutput.slice(0);if(i.length>0){var a="";i.some(function(e){return"default"===e.deviceId})?a="default":i.unshift(o),t=v.createElement("div",null,v.createElement("h4",null,(0,p._t)("Audio Output")),v.createElement(e,{className:"mx_UserSettings_webRtcDevices_dropdown",value:this.state.activeAudioOutput||a,onOptionChange:this._setAudioOutput},this._mapWebRtcDevicesToSpans(i)))}var s=this.state.mediaDevices.audioinput.slice(0);if(s.length>0){var l="";s.some(function(e){return"default"===e.deviceId})?l="default":s.unshift(o),n=v.createElement("div",null,v.createElement("h4",null,(0,p._t)("Microphone")),v.createElement(e,{className:"mx_UserSettings_webRtcDevices_dropdown",value:this.state.activeAudioInput||l,onOptionChange:this._setAudioInput},this._mapWebRtcDevicesToSpans(s)))}var u=this.state.mediaDevices.videoinput.slice(0);if(u.length>0){var c="";u.some(function(e){return"default"===e.deviceId})?c="default":u.unshift(o),r=v.createElement("div",null,v.createElement("h4",null,(0,p._t)("Camera")),v.createElement(e,{className:"mx_UserSettings_webRtcDevices_dropdown",value:this.state.activeVideoInput||c,onOptionChange:this._setVideoInput},this._mapWebRtcDevicesToSpans(u)))}return v.createElement("div",null,t,n,r)}},_renderWebRtcSettings:function(){return v.createElement("div",null,v.createElement("h3",null,(0,p._t)("VoIP")),v.createElement("div",{className:"mx_UserSettings_section"},L.map(this._renderDeviceSetting),this._renderWebRtcDeviceSettings()))},onSelfShareClick:function(){var e=E.get(),t=b.getComponent("dialogs.ShareDialog");S.createTrackedDialog("share self dialog","",t,{target:e.getUser(this._me)})},_showSpoiler:function(e){var t=e.target;t.innerHTML=t.getAttribute("data-spoiler");var n=document.createRange();n.selectNodeContents(t);var r=window.getSelection();r.removeAllRanges(),r.addRange(n)},nameForMedium:function(e){return"msisdn"===e?(0,p._t)("Phone"):"email"===e?(0,p._t)("Email"):e[0].toUpperCase()+e.slice(1)},presentableTextForThreepid:function(e){return"msisdn"===e.medium?"+"+e.address:e.address},render:function(){var e=this,t=b.getComponent("elements.Spinner");switch(this.state.phase){case"UserSettings.LOADING":return v.createElement(t,null);case"UserSettings.DISPLAY":break;default:throw new Error("Unknown state.phase => "+this.state.phase)}var n=b.getComponent("rooms.SimpleRoomHeader"),r=b.getComponent("views.settings.ChangeDisplayName"),o=b.getComponent("views.settings.ChangePassword"),i=b.getComponent("settings.ChangeAvatar"),a=b.getComponent("settings.Notifications"),s=b.getComponent("elements.EditableText"),l=b.getComponent("elements.GeminiScrollbarWrapper"),u=this.state.avatarUrl?E.get().mxcUrlToHttp(this.state.avatarUrl):null,c=this.state.threepids.map(function(t,n){var r="3pid-"+t.address;return v.createElement("div",{className:"mx_UserSettings_profileTableRow",key:n},v.createElement("div",{className:"mx_UserSettings_profileLabelCell"},v.createElement("label",{htmlFor:r},e.nameForMedium(t.medium))),v.createElement("div",{className:"mx_UserSettings_profileInputCell"},v.createElement("input",{type:"text",key:t.address,id:r,value:e.presentableTextForThreepid(t),disabled:!0})),v.createElement("div",{className:"mx_UserSettings_threepidButton mx_filterFlipColor"},v.createElement(d.default,{element:"img",src:"img/cancel-small.svg",width:"14",height:"14",alt:(0,p._t)("Remove"),onClick:function(n){return e.onRemoveThreepidClicked(t)}})))}),f=void 0;f=this.state.email_add_pending?v.createElement(t,{key:"_email_add_spinner"}):v.createElement("div",{className:"mx_UserSettings_profileTableRow",key:"_newEmail"},v.createElement("div",{className:"mx_UserSettings_profileLabelCell"},v.createElement("label",null,(0,p._t)("Email"))),v.createElement("div",{className:"mx_UserSettings_profileInputCell"},v.createElement(s,{ref:"add_email_input",className:"mx_UserSettings_editable",placeholderClassName:"mx_UserSettings_threepidPlaceholder",placeholder:(0,p._t)("Add email address"),blurToCancel:!1,onValueChanged:this._onAddEmailEditFinished})),v.createElement("div",{className:"mx_UserSettings_threepidButton mx_filterFlipColor"},v.createElement(d.default,{element:"img",src:"img/plus.svg",width:"14",height:"14",alt:(0,p._t)("Add"),onClick:this._addEmail})));var m=b.getComponent("views.settings.AddPhoneNumber"),h=v.createElement(m,{key:"_addMsisdn",onThreepidAdded:this._refreshFromServer});c.push(f),c.push(h);var _=v.createElement(o,{className:"mx_UserSettings_accountTable",rowClassName:"mx_UserSettings_profileTableRow",rowLabelClassName:"mx_UserSettings_profileLabelCell",rowInputClassName:"mx_UserSettings_profileInputCell",buttonClassName:"mx_UserSettings_button mx_UserSettings_changePasswordButton",onError:this.onPasswordChangeError,onFinished:this.onPasswordChanged}),g=void 0;void 0!==this.state.threepids&&(g=v.createElement("div",null,v.createElement("h3",null,(0,p._t)("Notifications")),v.createElement("div",{className:"mx_UserSettings_section"},v.createElement(a,{threepids:this.state.threepids,brand:this.props.brand}))));var y=E.get().olmVersion,S="<not-enabled>";return void 0!==y&&(S=y[0]+"."+y[1]+"."+y[2]),v.createElement("div",{className:"mx_UserSettings"},v.createElement(n,{title:(0,p._t)("Settings"),onCancelClick:this.props.onClose}),v.createElement(l,{className:"mx_UserSettings_body",autoshow:!0},v.createElement("h3",null,(0,p._t)("Profile")),v.createElement("div",{className:"mx_UserSettings_section"},v.createElement("div",{className:"mx_UserSettings_profileTable"},v.createElement("div",{className:"mx_UserSettings_profileTableRow"},v.createElement("div",{className:"mx_UserSettings_profileLabelCell"},v.createElement("label",{htmlFor:"displayName"},(0,p._t)("Display name"))),v.createElement("div",{className:"mx_UserSettings_profileInputCell"},v.createElement(r,null))),c),v.createElement("div",{className:"mx_UserSettings_avatarPicker"},v.createElement(d.default,{className:"mx_UserSettings_avatarPicker_remove",onClick:this.onAvatarRemoveClick},v.createElement("img",{src:"img/cancel.svg",width:"15",height:"15",className:"mx_filterFlipColor",alt:(0,p._t)("Remove avatar"),title:(0,p._t)("Remove avatar")})),v.createElement("div",{onClick:this.onAvatarPickerClick,className:"mx_UserSettings_avatarPicker_imgContainer"},v.createElement(i,{ref:"changeAvatar",initialAvatarUrl:u,showUploadSection:!1,className:"mx_UserSettings_avatarPicker_img"})),v.createElement("div",{className:"mx_UserSettings_avatarPicker_edit"},v.createElement("label",{htmlFor:"avatarInput",ref:"file_label"},v.createElement("img",{src:"img/camera.svg",className:"mx_filterFlipColor",alt:(0,p._t)("Upload avatar"),title:(0,p._t)("Upload avatar"),width:"17",height:"15"})),v.createElement("input",{id:"avatarInput",type:"file",onChange:this.onAvatarSelected})))),v.createElement("h3",null,(0,p._t)("Account")),v.createElement("div",{className:"mx_UserSettings_section cadcampoHide"},v.createElement(d.default,{className:"mx_UserSettings_logout mx_UserSettings_button",onClick:this.onLogoutClicked},(0,p._t)("Sign out")),this.state.userHasGeneratedPassword?v.createElement("div",{className:"mx_UserSettings_passwordWarning"},(0,p._t)("To return to your account in future you need to set a password")):null,_),this._renderGroupSettings(),this._renderReferral(),g,this._renderUserInterfaceSettings(),this._renderLabs(),this._renderWebRtcSettings(),this._renderDevicesPanel(),this._renderCryptoInfo(),this._renderIgnoredUsers(),this._renderBulkOptions(),this._renderBugReport(),C.get().isElectron()&&this._renderElectronSettings(),this._renderAnalyticsControl(),v.createElement("h3",null,(0,p._t)("Advanced")),v.createElement("div",{className:"mx_UserSettings_section"},v.createElement("div",{className:"mx_UserSettings_advanced"},(0,p._t)("Logged in as:")+" ",v.createElement("a",{onClick:this.onSelfShareClick,className:"mx_UserSettings_link"},this._me)),v.createElement("div",{className:"mx_UserSettings_advanced"},(0,p._t)("Access Token:")+" ",v.createElement(d.default,{element:"span",className:"mx_UserSettings_advanced_spoiler",onClick:this._showSpoiler,"data-spoiler":E.get().getAccessToken()},"<",(0,p._t)("click to reveal"),">")),v.createElement("div",{className:"mx_UserSettings_advanced"},(0,p._t)("Homeserver is")," ",E.get().getHomeserverUrl()),v.createElement("div",{className:"mx_UserSettings_advanced"},(0,p._t)("Identity Server is")," ",E.get().getIdentityServerUrl()),v.createElement("div",{className:"mx_UserSettings_advanced"},(0,p._t)("matrix-react-sdk version:")," ","<local>"!==I?A("matrix-org/matrix-react-sdk",I):I,v.createElement("br",null),(0,p._t)("riot-web version:")," ",void 0!==this.state.vectorVersion?A("vector-im/riot-web",this.state.vectorVersion):"unknown",v.createElement("br",null),(0,p._t)("olm version:")," ",S,v.createElement("br",null))),this._renderCheckUpdate(),this._renderClearCache(),this._renderDeactivateAccount(),this._renderTermsAndConditionsLinks()))}})},function(e){e.exports={_from:"matrix-react-sdk@0.14.4",_id:"matrix-react-sdk@0.14.4",_inBundle:!1,_integrity:"sha512-LYexzx6e9s9Ds8hZkDvF9e3AfuMyI0wGdigllDZNx13eq0JdlGdKMt8BKmbQrttLcsCDQq3Gb4A4Hgz6p7QtQg==",_location:"/matrix-react-sdk",_phantomChildren:{},_requested:{type:"version",registry:!0,raw:"matrix-react-sdk@0.14.4",name:"matrix-react-sdk",escapedName:"matrix-react-sdk",rawSpec:"0.14.4",saveSpec:null,fetchSpec:"0.14.4"},_requiredBy:["/"],_resolved:"https://registry.npmjs.org/matrix-react-sdk/-/matrix-react-sdk-0.14.4.tgz",_shasum:"9179074bedb501cfee58c9881e9f2116c967f8a7",_spec:"matrix-react-sdk@0.14.4",_where:"/private/var/folders/w1/zlp00m5x3fnc1y7qdzlwlk3m0000gn/T/tmp.Muos3FjT",author:{name:"matrix.org"},bin:{reskindex:"scripts/reskindex.js","matrix-gen-i18n":"scripts/gen-i18n.js","matrix-prune-i18n":"scripts/prune-i18n.js"},bugs:{url:"https://github.com/matrix-org/matrix-react-sdk/issues"},bundleDependencies:!1,dependencies:{"babel-runtime":"^6.26.0",bluebird:"^3.5.0","blueimp-canvas-to-blob":"^3.5.0","browser-encrypt-attachment":"^0.3.0","browser-request":"^0.3.3",classnames:"^2.1.2",commonmark:"^0.28.1",counterpart:"^0.18.0",emojione:"2.2.7","file-saver":"^1.3.3",filesize:"3.5.6",flux:"2.1.1","focus-trap-react":"^3.0.5","fuse.js":"^2.2.0","gemini-scrollbar":"github:matrix-org/gemini-scrollbar#b302279","gfm.css":"^1.1.1",glob:"^5.0.14","highlight.js":"^9.13.0","isomorphic-fetch":"^2.2.1",linkifyjs:"^2.1.6",lodash:"^4.13.1",lolex:"2.3.2","matrix-js-sdk":"0.12.1",optimist:"^0.6.1",pako:"^1.0.5","prop-types":"^15.5.8","qrcode-react":"^0.1.16",querystring:"^0.2.0",react:"^15.6.0","react-addons-css-transition-group":"15.3.2","react-beautiful-dnd":"^4.0.1","react-dom":"^15.6.0","react-gemini-scrollbar":"github:matrix-org/react-gemini-scrollbar#5e97aef","resize-observer-polyfill":"^1.5.0","sanitize-html":"^1.18.4",slate:"^0.41.2","slate-html-serializer":"^0.6.1","slate-md-serializer":"github:matrix-org/slate-md-serializer#f7c4ad3","slate-react":"^0.18.10","text-encoding-utf-8":"^1.0.1",url:"^0.11.0","velocity-vector":"github:vector-im/velocity#059e3b2","whatwg-fetch":"^1.1.1"},deprecated:!1,description:"SDK for matrix.org using React",devDependencies:{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^6.1.2","babel-loader":"^7.1.5","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-transform-async-to-bluebird":"^1.1.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-es2015":"^6.24.1","babel-preset-es2016":"^6.24.1","babel-preset-es2017":"^6.24.1","babel-preset-react":"^6.24.1",chokidar:"^1.6.1",concurrently:"^4.0.1",eslint:"^3.13.1","eslint-config-google":"^0.7.1","eslint-plugin-babel":"^4.1.2","eslint-plugin-flowtype":"^2.30.0","eslint-plugin-react":"^7.7.0","estree-walker":"^0.5.0",expect:"^1.16.0","flow-parser":"^0.57.3",karma:"^3.0.0","karma-chrome-launcher":"^0.2.3","karma-cli":"^1.0.1","karma-junit-reporter":"^0.4.2","karma-logcapture-reporter":"0.0.1","karma-mocha":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-spec-reporter":"^0.0.31","karma-summary-reporter":"^1.5.1","karma-webpack":"^4.0.0-beta.0","matrix-mock-request":"^1.2.1","matrix-react-test-utils":"^0.1.1",mocha:"^5.0.5","react-addons-test-utils":"^15.4.0","require-json":"0.0.1",rimraf:"^2.4.3",sinon:"^5.0.7","source-map-loader":"^0.2.3",walk:"^2.3.9",webpack:"^4.20.2","webpack-cli":"^3.1.1"},files:[".eslintrc.js","CHANGELOG.md","CONTRIBUTING.rst","LICENSE","README.md","code_style.md","git-revision.txt","header","jenkins.sh","karma.conf.js","lib","package.json","release.sh","scripts","src","test","res"],homepage:"https://github.com/matrix-org/matrix-react-sdk#readme",license:"Apache-2.0",main:"lib/index.js",name:"matrix-react-sdk",repository:{type:"git",url:"git+https://github.com/matrix-org/matrix-react-sdk.git"},scripts:{build:"npm run reskindex && npm run start:init","build:watch":"babel src -w --skip-initial-build -d lib --source-maps --copy-files",clean:"rimraf lib","emoji-data-strip":"node scripts/emoji-data-strip.js",i18n:"matrix-gen-i18n",lint:"eslint src/",lintall:"eslint src/ test/",lintwithexclusions:"eslint --max-warnings 20 --ignore-path .eslintignore.errorfiles src test",prepublish:"npm run clean && npm run build && git rev-parse HEAD > git-revision.txt",prunei18n:"matrix-prune-i18n",reskindex:"node scripts/reskindex.js -h header","reskindex:watch":"node scripts/reskindex.js -h header -w",start:"npm run start:init && npm run start:all","start:all":'concurrently --kill-others-on-fail --prefix "{time} [{name}]" -n build,reskindex "npm run build:watch" "npm run reskindex:watch"',"start:init":"babel src -d lib --source-maps --copy-files",test:"karma start --single-run=true --browsers ChromeHeadless","test-multi":"karma start"},version:"0.14.4"}},function(e,t,n){"use strict";var r=s(n(31)),o=s(n(0)),i=s(n(1)),a=s(n(455));function s(e){return e&&e.__esModule?e:{default:e}}e.exports=o.default.createClass({displayName:"ViewSource",propTypes:{content:i.default.object.isRequired,onFinished:i.default.func.isRequired},componentDidMount:function(){document.addEventListener("keydown",this.onKeyDown)},componentWillUnmount:function(){document.removeEventListener("keydown",this.onKeyDown)},onKeyDown:function(e){27==e.keyCode&&(e.stopPropagation(),e.preventDefault(),this.props.onFinished())},render:function(){return o.default.createElement("div",{className:"mx_ViewSource"},o.default.createElement(a.default,{className:"json"},(0,r.default)(this.props.content,null,2)))}})},function(e,t,n){"use strict";var r=d(n(47)),o=d(n(0)),i=d(n(1)),a=n(2),s=d(n(3)),l=d(n(16)),u=d(n(8)),c=d(n(39)),f=d(n(1565));function d(e){return e&&e.__esModule?e:{default:e}}e.exports=o.default.createClass({displayName:"ForgotPassword",propTypes:{defaultHsUrl:i.default.string,defaultIsUrl:i.default.string,customHsUrl:i.default.string,customIsUrl:i.default.string,onLoginClick:i.default.func,onRegisterClick:i.default.func,onComplete:i.default.func.isRequired},getInitialState:function(){return{enteredHomeserverUrl:this.props.customHsUrl||this.props.defaultHsUrl,enteredIdentityServerUrl:this.props.customIsUrl||this.props.defaultIsUrl,progress:null,password:null,password2:null}},submitPasswordReset:function(e,t,n,r){var o=this;this.setState({progress:"sending_email"}),this.reset=new f.default(e,t),this.reset.resetPassword(n,r).done(function(){o.setState({progress:"sent_email"})},function(e){o.showErrorDialog((0,a._t)("Failed to send email")+": "+e.message),o.setState({progress:null})})},onVerify:function(e){var t=this;e.preventDefault(),this.reset?this.reset.checkEmailLinkClicked().done(function(e){t.setState({progress:"complete"})},function(e){t.showErrorDialog(e.message)}):console.error("onVerify called before submitPasswordReset!")},onSubmitForm:function(e){var t=this;if(e.preventDefault(),this.state.email)if(this.state.password&&this.state.password2)if(this.state.password!==this.state.password2)this.showErrorDialog((0,a._t)("New passwords must match each other."));else{var n=s.default.getComponent("dialogs.QuestionDialog");l.default.createTrackedDialog("Forgot Password Warning","",n,{title:(0,a._t)("Warning!"),description:o.default.createElement("div",null,(0,a._t)("Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.")),button:(0,a._t)("Continue"),extraButtons:[o.default.createElement("button",{key:"export_keys",className:"mx_Dialog_primary",onClick:this._onExportE2eKeysClicked},(0,a._t)("Export E2E room keys"))],onFinished:function(e){e&&t.submitPasswordReset(t.state.enteredHomeserverUrl,t.state.enteredIdentityServerUrl,t.state.email,t.state.password)}})}else this.showErrorDialog((0,a._t)("A new password must be entered."));else this.showErrorDialog((0,a._t)("The email address linked to your account must be entered."))},_onExportE2eKeysClicked:function(){l.default.createTrackedDialogAsync("Export E2E Keys","Forgot Password",function(e){n.e(9).then(function(){e(n(180))}.bind(null,n)).catch(n.oe)},{matrixClient:u.default.get()})},onInputChanged:function(e,t){this.setState((0,r.default)({},e,t.target.value))},onServerConfigChange:function(e){var t={};void 0!==e.hsUrl&&(t.enteredHomeserverUrl=e.hsUrl),void 0!==e.isUrl&&(t.enteredIdentityServerUrl=e.isUrl),this.setState(t)},showErrorDialog:function(e,t){var n=s.default.getComponent("dialogs.ErrorDialog");l.default.createTrackedDialog("Forgot Password Error","",n,{title:t,description:e})},render:function(){var e=s.default.getComponent("login.LoginPage"),t=s.default.getComponent("login.LoginHeader"),n=s.default.getComponent("login.LoginFooter"),r=s.default.getComponent("login.ServerConfig"),i=s.default.getComponent("elements.Spinner"),l=void 0;if("sending_email"===this.state.progress)l=o.default.createElement(i,null);else if("sent_email"===this.state.progress)l=o.default.createElement("div",{className:"mx_Login_prompt"},(0,a._t)("An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.",{emailAddress:this.state.email}),o.default.createElement("br",null),o.default.createElement("input",{className:"mx_Login_submit",type:"button",onClick:this.onVerify,value:(0,a._t)("I have verified my email address")}));else if("complete"===this.state.progress)l=o.default.createElement("div",{className:"mx_Login_prompt"},o.default.createElement("p",null,(0,a._t)("Your password has been reset"),"."),o.default.createElement("p",null,(0,a._t)("You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device"),"."),o.default.createElement("input",{className:"mx_Login_submit",type:"button",onClick:this.props.onComplete,value:(0,a._t)("Return to login screen")}));else{var u=void 0;c.default.get().disable_custom_urls||(u=o.default.createElement(r,{ref:"serverConfig",withToggleButton:!0,defaultHsUrl:this.props.defaultHsUrl,defaultIsUrl:this.props.defaultIsUrl,customHsUrl:this.props.customHsUrl,customIsUrl:this.props.customIsUrl,onServerConfigChange:this.onServerConfigChange,delayTimeMs:0}));var f=s.default.getComponent("structures.login.LanguageSelector");l=o.default.createElement("div",null,o.default.createElement("div",{className:"mx_Login_prompt"},(0,a._t)("To reset your password, enter the email address linked to your account"),":"),o.default.createElement("div",null,o.default.createElement("form",{onSubmit:this.onSubmitForm},o.default.createElement("input",{className:"mx_Login_field",ref:"user",type:"text",name:"reset_email",value:this.state.email,onChange:this.onInputChanged.bind(this,"email"),placeholder:(0,a._t)("Email address"),autoFocus:!0}),o.default.createElement("br",null),o.default.createElement("input",{className:"mx_Login_field",ref:"pass",type:"password",name:"reset_password",value:this.state.password,onChange:this.onInputChanged.bind(this,"password"),placeholder:(0,a._t)("New password")}),o.default.createElement("br",null),o.default.createElement("input",{className:"mx_Login_field",ref:"pass",type:"password",name:"reset_password_confirm",value:this.state.password2,onChange:this.onInputChanged.bind(this,"password2"),placeholder:(0,a._t)("Confirm your new password")}),o.default.createElement("br",null),o.default.createElement("input",{className:"mx_Login_submit",type:"submit",value:(0,a._t)("Send Reset Email")})),u,o.default.createElement("a",{className:"mx_Login_create",onClick:this.props.onLoginClick,href:"#"},(0,a._t)("Return to login screen")),o.default.createElement("a",{className:"mx_Login_create",onClick:this.props.onRegisterClick,href:"#"},(0,a._t)("Create an account")),o.default.createElement(f,null),o.default.createElement(n,null)))}return o.default.createElement(e,null,o.default.createElement("div",{className:"mx_Login_box"},o.default.createElement(t,null),l))}})},function(e,t,n){"use strict";var r=s(n(4)),o=s(n(5)),i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(17)),a=n(2);function s(e){return e&&e.__esModule?e:{default:e}}var l=function(){function e(t,n){(0,r.default)(this,e),this.client=i.createClient({baseUrl:t,idBaseUrl:n}),this.clientSecret=this.client.generateClientSecret(),this.identityServerDomain=n.split("://")[1]}return(0,o.default)(e,[{key:"resetPassword",value:function(e,t){var n=this;return this.password=t,this.client.requestPasswordEmailToken(e,this.clientSecret,1).then(function(e){return n.sessionId=e.sid,e},function(e){throw"M_THREEPID_NOT_FOUND"===e.errcode?e.message=(0,a._t)("This email address was not found"):e.httpStatus&&(e.message=e.message+" (Status "+e.httpStatus+")"),e})}},{key:"checkEmailLinkClicked",value:function(){return this.client.setPassword({type:"m.login.email.identity",threepid_creds:{sid:this.sessionId,client_secret:this.clientSecret,id_server:this.identityServerDomain}},this.password).catch(function(e){throw 401===e.httpStatus?e.message=(0,a._t)("Failed to verify email address: make sure you clicked the link in the email"):404===e.httpStatus?e.message=(0,a._t)("Your email address does not appear to be associated with a Matrix ID on this Homeserver."):e.httpStatus&&(e.message+=" (Status "+e.httpStatus+")"),e})}}]),e}();e.exports=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){if(r.default.get().disable_login_language_selector)return u.default.createElement("div",null);var e=l.default.getComponent("views.elements.LanguageDropdown");return u.default.createElement("div",{className:"mx_Login_language_div"},u.default.createElement(e,{onOptionChange:f,className:"mx_Login_language",value:(0,o.getCurrentLanguage)()}))};var r=c(n(39)),o=n(2),i=n(22),a=c(i),s=c(n(71)),l=c(n(3)),u=c(n(0));function c(e){return e&&e.__esModule?e:{default:e}}function f(e){(0,o.getCurrentLanguage)()!==e&&(a.default.setValue("language",null,i.SettingLevel.DEVICE,e),s.default.get().reload())}e.exports=t.default},function(e,t,n){"use strict";var r=f(n(0)),o=f(n(1)),i=n(2),a=f(n(3)),s=f(n(1568)),l=f(n(39)),u=f(n(22)),c=n(248);function f(e){return e&&e.__esModule?e:{default:e}}var d=/^[0-9()\-\s]*$/;e.exports=r.default.createClass({displayName:"Login",propTypes:{onLoggedIn:o.default.func.isRequired,enableGuest:o.default.bool,customHsUrl:o.default.string,customIsUrl:o.default.string,defaultHsUrl:o.default.string,defaultIsUrl:o.default.string,fallbackHsUrl:o.default.string,defaultDeviceDisplayName:o.default.string,onRegisterClick:o.default.func.isRequired,onForgotPasswordClick:o.default.func,onCancelClick:o.default.func,onServerConfigChange:o.default.func.isRequired},getInitialState:function(){return{busy:!1,errorText:null,loginIncorrect:!1,enteredHomeserverUrl:this.props.customHsUrl||this.props.defaultHsUrl,enteredIdentityServerUrl:this.props.customIsUrl||this.props.defaultIsUrl,username:"",phoneCountry:null,phoneNumber:"",currentFlow:"m.login.password"}},componentWillMount:function(){this._unmounted=!1,this._stepRendererMap={"m.login.password":this._renderPasswordStep,"m.login.cas":this._renderCasStep},this._initLoginLogic()},componentWillUnmount:function(){this._unmounted=!0},onPasswordLoginError:function(e){this.setState({errorText:e,loginIncorrect:Boolean(e)})},onPasswordLogin:function(e,t,n,o){var a=this;this.setState({busy:!0,errorText:null,loginIncorrect:!1}),this._loginLogic.loginViaPassword(e,t,n,o).then(function(e){a.props.onLoggedIn(e)},function(t){if(!a._unmounted){var n=void 0,o=e.indexOf("@")>0;if(400===t.httpStatus&&o)n=(0,i._t)("This Home Server does not support login using email address.");else if("M_RESOURCE_LIMIT_EXCEEDED"==t.errcode){var s=(0,c.messageForResourceLimitError)(t.data.limit_type,t.data.admin_contact,{monthly_active_user:(0,i._td)("This homeserver has hit its Monthly Active User limit."),"":(0,i._td)("This homeserver has exceeded one of its resource limits.")}),u=(0,c.messageForResourceLimitError)(t.data.limit_type,t.data.admin_contact,{"":(0,i._td)("Please <a>contact your service administrator</a> to continue using this service.")});n=r.default.createElement("div",null,r.default.createElement("div",null,s),r.default.createElement("div",{className:"mx_Login_smallError"},u))}else n=401===t.httpStatus||403===t.httpStatus?l.default.get().disable_custom_urls?r.default.createElement("div",null,r.default.createElement("div",null,(0,i._t)("Incorrect username and/or password.")),r.default.createElement("div",{className:"mx_Login_smallError"},(0,i._t)("Please note you are logging into the %(hs)s server, not matrix.org.",{hs:a.props.defaultHsUrl.replace(/^https?:\/\//,"")}))):(0,i._t)("Incorrect username and/or password."):a._errorTextFromError(t);a.setState({errorText:n,loginIncorrect:401===t.httpStatus||403===t.httpStatus})}}).finally(function(){a._unmounted||a.setState({busy:!1})}).done()},onCasLogin:function(){this._loginLogic.redirectToCas()},_onLoginAsGuestClick:function(){var e=this;e.setState({busy:!0,errorText:null,loginIncorrect:!1}),this._loginLogic.loginAsGuest().then(function(t){e.props.onLoggedIn(t)},function(t){var n=void 0;n=403===t.httpStatus?(0,i._t)("Guest access is disabled on this Home Server."):e._errorTextFromError(t),e.setState({errorText:n,loginIncorrect:!1})}).finally(function(){e.setState({busy:!1})}).done()},onUsernameChanged:function(e){this.setState({username:e})},onPhoneCountryChanged:function(e){this.setState({phoneCountry:e})},onPhoneNumberChanged:function(e){d.test(e)?this.setState({phoneNumber:e,errorText:null}):this.setState({errorText:(0,i._t)("The phone number entered looks invalid")})},onServerConfigChange:function(e){var t=this,n={errorText:null};void 0!==e.hsUrl&&(n.enteredHomeserverUrl=e.hsUrl),void 0!==e.isUrl&&(n.enteredIdentityServerUrl=e.isUrl),this.props.onServerConfigChange(e),this.setState(n,function(){t._initLoginLogic(e.hsUrl||null,e.isUrl)})},_initLoginLogic:function(e,t){var n=this,r=this;e=e||this.state.enteredHomeserverUrl,t=t||this.state.enteredIdentityServerUrl;var o=e===this.props.defaultHsUrl?this.props.fallbackHsUrl:null,a=new s.default(e,t,o,{defaultDeviceDisplayName:this.props.defaultDeviceDisplayName});this._loginLogic=a,this.setState({enteredHomeserverUrl:e,enteredIdentityServerUrl:t,busy:!0,loginIncorrect:!1}),a.getFlows().then(function(e){for(var t=0;t<e.length;t++)if(n._isSupportedFlow(e[t]))return a.chooseFlow(t),void n.setState({currentFlow:n._getCurrentFlowStep()});n.setState({errorText:(0,i._t)("This homeserver doesn't offer any login flows which are supported by this client.")})},function(e){r.setState({errorText:r._errorTextFromError(e),loginIncorrect:!1})}).finally(function(){r.setState({busy:!1})}).done()},_isSupportedFlow:function(e){return!!this._stepRendererMap[e.type]||(console.log("Skipping flow",e,"due to unsupported login type",e.type),!1)},_getCurrentFlowStep:function(){return this._loginLogic?this._loginLogic.getCurrentFlowStep():null},_errorTextFromError:function(e){var t=this,n=e.errcode;!n&&e.httpStatus&&(n="HTTP "+e.httpStatus);var o=(0,i._t)("Error: Problem communicating with the given homeserver.")+(n?" ("+n+")":"");return"rejected"===e.cors&&(o="https:"!==window.location.protocol||!this.state.enteredHomeserverUrl.startsWith("http:")&&this.state.enteredHomeserverUrl.startsWith("http")?r.default.createElement("span",null,(0,i._t)("Can't connect to homeserver - please check your connectivity, ensure your <a>homeserver's SSL certificate</a> is trusted, and that a browser extension is not blocking requests.",{},{a:function(e){return r.default.createElement("a",{href:t.state.enteredHomeserverUrl},e)}})):r.default.createElement("span",null,(0,i._t)("Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or <a>enable unsafe scripts</a>.",{},{a:function(e){return r.default.createElement("a",{href:"https://www.google.com/search?&q=enable%20unsafe%20scripts"},e)}}))),o},componentForStep:function(e){if(!e)return null;var t=this._stepRendererMap[e];return t?t():null},_renderPasswordStep:function(){var e=a.default.getComponent("login.PasswordLogin");return r.default.createElement(e,{onSubmit:this.onPasswordLogin,onError:this.onPasswordLoginError,initialUsername:this.state.username,initialPhoneCountry:this.state.phoneCountry,initialPhoneNumber:this.state.phoneNumber,onUsernameChanged:this.onUsernameChanged,onPhoneCountryChanged:this.onPhoneCountryChanged,onPhoneNumberChanged:this.onPhoneNumberChanged,onForgotPasswordClick:this.props.onForgotPasswordClick,loginIncorrect:this.state.loginIncorrect,hsUrl:this.state.enteredHomeserverUrl})},_renderCasStep:function(){var e=a.default.getComponent("login.CasLogin");return r.default.createElement(e,{onSubmit:this.onCasLogin})},render:function(){var e=a.default.getComponent("elements.Spinner"),t=a.default.getComponent("login.LoginPage"),n=a.default.getComponent("login.LoginHeader"),o=a.default.getComponent("login.LoginFooter"),s=a.default.getComponent("login.ServerConfig"),c=this.state.busy?r.default.createElement("div",{className:"mx_Login_loader"},r.default.createElement(e,null)):null,f=void 0;this.props.enableGuest&&(f=r.default.createElement("a",{className:"mx_Login_create",onClick:this._onLoginAsGuestClick,href:"#"},(0,i._t)("Try the app first")));var d=void 0,p=void 0;l.default.get().disable_custom_urls||(d=r.default.createElement(s,{ref:"serverConfig",withToggleButton:!0,customHsUrl:this.props.customHsUrl,customIsUrl:this.props.customIsUrl,defaultHsUrl:this.props.defaultHsUrl,defaultIsUrl:this.props.defaultIsUrl,onServerConfigChange:this.onServerConfigChange,delayTimeMs:1e3})),"status"!==u.default.getValue("theme")?p=r.default.createElement("h2",null,(0,i._t)("Sign in")," ",c):this.state.errorText||(p=r.default.createElement("h2",null,(0,i._t)("Sign in to get started")," ",c));var m=void 0;this.state.errorText&&(m=r.default.createElement("div",{className:"mx_Login_error"},this.state.errorText));var h=a.default.getComponent("structures.login.LanguageSelector");return r.default.createElement(t,null,r.default.createElement("div",{className:"mx_Login_box"},r.default.createElement(n,null),r.default.createElement("div",null,p,m,this.componentForStep(this.state.currentFlow),d,r.default.createElement("a",{className:"mx_Login_create",onClick:this.props.onRegisterClick,href:"#"},(0,i._t)("Create an account")),f,r.default.createElement(h,null),r.default.createElement(o,null))))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=u(n(40)),o=u(n(4)),i=u(n(5)),a=u(n(17)),s=(n(2),u(n(9))),l=u(n(89));function u(e){return e&&e.__esModule?e:{default:e}}var c=function(){function e(t,n,r,i){(0,o.default)(this,e),this._hsUrl=t,this._isUrl=n,this._fallbackHsUrl=r,this._currentFlowIndex=0,this._flows=[],this._defaultDeviceDisplayName=i.defaultDeviceDisplayName}return(0,i.default)(e,[{key:"getHomeserverUrl",value:function(){return this._hsUrl}},{key:"getIdentityServerUrl",value:function(){return this._isUrl}},{key:"setHomeserverUrl",value:function(e){this._hsUrl=e}},{key:"setIdentityServerUrl",value:function(e){this._isUrl=e}},{key:"_createTemporaryClient",value:function(){return a.default.createClient({baseUrl:this._hsUrl,idBaseUrl:this._isUrl})}},{key:"getFlows",value:function(){var e=this;return this._createTemporaryClient().loginFlows().then(function(t){return e._flows=t.flows,e._currentFlowIndex=0,e._flows})}},{key:"chooseFlow",value:function(e){this._currentFlowIndex=e}},{key:"getCurrentFlowStep",value:function(){var e=this._flows[this._currentFlowIndex];return e?e.type:null}},{key:"loginAsGuest",value:function(){var e=this;return this._createTemporaryClient().registerGuest({body:{initial_device_display_name:this._defaultDeviceDisplayName}}).then(function(t){return{userId:t.user_id,deviceId:t.device_id,accessToken:t.access_token,homeserverUrl:e._hsUrl,identityServerUrl:e._isUrl,guest:!0}},function(e){throw e})}},{key:"loginViaPassword",value:function(e,t,n,o){var i=this,l=this,u=e.indexOf("@")>0,c=void 0,f=void 0;t&&n?c={type:"m.id.phone",country:t,number:n}:u?(c={type:"m.id.thirdparty",medium:"email",address:e},f={medium:"email",address:e}):(c={type:"m.id.user",user:e},f={user:e});var d={password:o,identifier:c,initial_device_display_name:this._defaultDeviceDisplayName};(0,r.default)(d,f);var p=this._createTemporaryClient(),m=null;return p.login("m.login.password",d).then(function(e){return s.default.resolve({homeserverUrl:l._hsUrl,identityServerUrl:l._isUrl,userId:e.user_id,deviceId:e.device_id,accessToken:e.access_token})}).catch(function(e){if(m=e,403===e.httpStatus&&l._fallbackHsUrl)return function(e){return a.default.createClient({baseUrl:l._fallbackHsUrl,idBaseUrl:i._isUrl}).login("m.login.password",d).then(function(e){return s.default.resolve({homeserverUrl:l._fallbackHsUrl,identityServerUrl:l._isUrl,userId:e.user_id,deviceId:e.device_id,accessToken:e.access_token})}).catch(function(t){throw console.log("fallback HS login failed",t),e})}(m);throw m}).catch(function(e){throw m}).catch(function(e){throw console.log("Login failed",e),e})}},{key:"redirectToCas",value:function(){var e=this._createTemporaryClient(),t=l.default.parse(window.location.href,!0);t.hash="",t.query.homeserver=e.getHomeserverUrl(),t.query.identityServer=e.getIdentityServerUrl();var n=e.getCasLoginUrl(l.default.format(t));window.location.href=n}}]),e}();t.default=c,e.exports=t.default},function(e,t,n){"use strict";var r=l(n(0)),o=l(n(1)),i=l(n(3)),a=l(n(8)),s=n(2);function l(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"PostRegistration",propTypes:{onComplete:o.default.func.isRequired},getInitialState:function(){return{avatarUrl:null,errorString:null,busy:!1}},componentWillMount:function(){var e=a.default.get();this.setState({busy:!0});var t=this;e.getProfileInfo(e.credentials.userId).done(function(e){t.setState({avatarUrl:a.default.get().mxcUrlToHttp(e.avatar_url),busy:!1})},function(e){t.setState({errorString:(0,s._t)("Failed to fetch avatar URL"),busy:!1})})},render:function(){var e=i.default.getComponent("settings.ChangeDisplayName"),t=i.default.getComponent("settings.ChangeAvatar"),n=i.default.getComponent("login.LoginPage"),o=i.default.getComponent("login.LoginHeader");return r.default.createElement(n,null,r.default.createElement("div",{className:"mx_Login_box"},r.default.createElement(o,null),r.default.createElement("div",{className:"mx_Login_profile"},(0,s._t)("Set a display name:"),r.default.createElement(e,null),(0,s._t)("Upload an avatar:"),r.default.createElement(t,{initialAvatarUrl:this.state.avatarUrl}),r.default.createElement("button",{onClick:this.props.onComplete},(0,s._t)("Continue")),this.state.errorString)))}})},function(e,t,n){"use strict";var r=v(n(20)),o=v(n(19)),i=n(9),a=v(i),s=v(n(17)),l=v(n(0)),u=v(n(1)),c=v(n(3)),f=v(n(8)),d=v(n(666)),p=v(n(389)),m=n(2),h=v(n(39)),_=v(n(22)),g=n(248);function v(e){return e&&e.__esModule?e:{default:e}}e.exports=l.default.createClass({displayName:"Registration",propTypes:{onLoggedIn:u.default.func.isRequired,clientSecret:u.default.string,sessionId:u.default.string,makeRegistrationUrl:u.default.func.isRequired,idSid:u.default.string,customHsUrl:u.default.string,customIsUrl:u.default.string,defaultHsUrl:u.default.string,defaultIsUrl:u.default.string,brand:u.default.string,email:u.default.string,referrer:u.default.string,teamServerConfig:u.default.shape({supportEmail:u.default.string.isRequired,teamServerURL:u.default.string.isRequired}),teamSelected:u.default.object,defaultDeviceDisplayName:u.default.string,onLoginClick:u.default.func.isRequired,onCancelClick:u.default.func,onServerConfigChange:u.default.func.isRequired,rtsClient:u.default.shape({getTeamsConfig:u.default.func.isRequired,trackReferral:u.default.func.isRequired,getTeam:u.default.func.isRequired})},getInitialState:function(){return{busy:!1,teamServerBusy:!1,errorText:null,formVals:{email:this.props.email},doingUIAuth:Boolean(this.props.sessionId),hsUrl:this.props.customHsUrl,isUrl:this.props.customIsUrl,flows:null}},componentWillMount:function(){var e=this;this._unmounted=!1,this._replaceClient(),this.props.teamServerConfig&&this.props.teamServerConfig.teamServerURL&&!this._rtsClient&&(this._rtsClient=this.props.rtsClient||new p.default(this.props.teamServerConfig.teamServerURL),this.setState({teamServerBusy:!0}),this._rtsClient.getTeamsConfig().then(function(t){var n={teams:t,supportEmail:e.props.teamServerConfig.supportEmail};console.log("Setting teams config to ",n),e.setState({teamsConfig:n,teamServerBusy:!1})},function(t){console.error("Error retrieving config for teams",t),e.setState({teamServerBusy:!1})}))},onServerConfigChange:function(e){var t=this,n={};void 0!==e.hsUrl&&(n.hsUrl=e.hsUrl),void 0!==e.isUrl&&(n.isUrl=e.isUrl),this.props.onServerConfigChange(e),this.setState(n,function(){t._replaceClient()})},_replaceClient:function(){var e=(0,i.coroutine)(o.default.mark(function e(){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this._matrixClient=s.default.createClient({baseUrl:this.state.hsUrl,idBaseUrl:this.state.isUrl}),e.prev=1,e.next=4,(0,i.resolve)(this._makeRegisterRequest({}));case 4:console.log("Expecting 401 from register request but got success!"),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(1),401===e.t0.httpStatus?this.setState({flows:e.t0.data.flows}):this.setState({errorText:(0,m._t)("Unable to query for supported registration methods")});case 10:case"end":return e.stop()}},e,this,[[1,7]])}));return function(){return e.apply(this,arguments)}}(),onFormSubmit:function(e){this.setState({errorText:"",busy:!0,formVals:e,doingUIAuth:!0})},_onUIAuthFinished:function(e,t,n){var o=this;if(e){this.setState({busy:!0,doingUIAuth:!1});var i=a.default.resolve(null);this._rtsClient&&n.emailSid&&(i=this._rtsClient.trackReferral(this.props.referrer||"",n.emailSid,n.clientSecret).then(function(e){var t=e.team_token;return window.localStorage.setItem("mx_team_token",t),o._rtsClient.getTeam(t).then(function(e){console.log("User successfully registered with team "+e.name),e.rooms&&e.rooms.forEach(function(e){e.auto_join&&e.room_id&&(console.log("Auto-joining "+e.room_id),f.default.get().joinRoom(e.room_id))})},function(e){console.error("Error getting team config",e)}),t},function(e){console.error("Error tracking referral",e)})),i.then(function(e){return o.props.onLoggedIn({userId:t.user_id,deviceId:t.device_id,homeserverUrl:o._matrixClient.getHomeserverUrl(),identityServerUrl:o._matrixClient.getIdentityServerUrl(),accessToken:t.access_token},e)}).then(function(e){return o._setupPushers(e)})}else{var s=t.message||t.toString();if("M_RESOURCE_LIMIT_EXCEEDED"==t.errcode){var u=(0,g.messageForResourceLimitError)(t.data.limit_type,t.data.admin_contact,{monthly_active_user:(0,m._td)("This homeserver has hit its Monthly Active User limit."),"":(0,m._td)("This homeserver has exceeded one of its resource limits.")}),c=(0,g.messageForResourceLimitError)(t.data.limit_type,t.data.admin_contact,{"":(0,m._td)("Please <a>contact your service administrator</a> to continue using this service.")});s=l.default.createElement("div",null,l.default.createElement("p",null,u),l.default.createElement("p",null,c))}else if(t.required_stages&&t.required_stages.indexOf("m.login.msisdn")>-1){var d=!1,p=!0,h=!1,_=void 0;try{for(var v,y=(0,r.default)(t.available_flows);!(p=(v=y.next()).done);p=!0){d|=v.value.stages.indexOf("m.login.msisdn")>-1}}catch(e){h=!0,_=e}finally{try{!p&&y.return&&y.return()}finally{if(h)throw _}}d||(s=(0,m._t)("This server does not support authentication with a phone number."))}this.setState({busy:!1,doingUIAuth:!1,errorText:s})}},_setupPushers:function(e){var t=this;return this.props.brand?e.getPushers().then(function(n){for(var r=n.pushers,o=0;o<r.length;++o)if("email"===r[o].kind){var i=r[o];i.data={brand:t.props.brand},e.setPusher(i).done(function(){console.log("Set email branding to "+t.props.brand)},function(e){console.error("Couldn't set email branding: "+e)})}},function(e){console.error("Couldn't get pushers: "+e)}):a.default.resolve()},onFormValidationFailed:function(e){var t=void 0;switch(e){case"RegistrationForm.ERR_PASSWORD_MISSING":t=(0,m._t)("Missing password.");break;case"RegistrationForm.ERR_PASSWORD_MISMATCH":t=(0,m._t)("Passwords don't match.");break;case"RegistrationForm.ERR_PASSWORD_LENGTH":t=(0,m._t)("Password too short (min %(MIN_PASSWORD_LENGTH)s).",{MIN_PASSWORD_LENGTH:6});break;case"RegistrationForm.ERR_EMAIL_INVALID":t=(0,m._t)("This doesn't look like a valid email address.");break;case"RegistrationForm.ERR_PHONE_NUMBER_INVALID":t=(0,m._t)("This doesn't look like a valid phone number.");break;case"RegistrationForm.ERR_MISSING_EMAIL":t=(0,m._t)("An email address is required to register on this homeserver.");break;case"RegistrationForm.ERR_MISSING_PHONE_NUMBER":t=(0,m._t)("A phone number is required to register on this homeserver.");break;case"RegistrationForm.ERR_USERNAME_INVALID":t=(0,m._t)("User names may only contain letters, numbers, dots, hyphens and underscores.");break;case"RegistrationForm.ERR_USERNAME_BLANK":t=(0,m._t)("You need to enter a user name.");break;default:console.error("Unknown error code: %s",e),t=(0,m._t)("An unknown error occurred.")}this.setState({errorText:t})},onTeamSelected:function(e){this._unmounted||this.setState({teamSelected:e})},_makeRegisterRequest:function(e){var t=this.state.formVals.password?{email:!0,msisdn:!0}:{};return this._matrixClient.register(this.state.formVals.username,this.state.formVals.password,void 0,e,t,null)},_getUIAuthInputs:function(){return{emailAddress:this.state.formVals.email,phoneCountry:this.state.formVals.phoneCountry,phoneNumber:this.state.formVals.phoneNumber}},render:function(){var e=c.default.getComponent("login.LoginHeader"),t=c.default.getComponent("login.LoginFooter"),n=c.default.getComponent("login.LoginPage"),r=c.default.getComponent("structures.InteractiveAuth"),o=c.default.getComponent("elements.Spinner"),i=c.default.getComponent("views.login.ServerConfig"),a=_.default.getValue("theme"),s=void 0;if(this.state.doingUIAuth)s=l.default.createElement(r,{matrixClient:this._matrixClient,makeRequest:this._makeRegisterRequest,onAuthFinished:this._onUIAuthFinished,inputs:this._getUIAuthInputs(),makeRegistrationUrl:this.props.makeRegistrationUrl,sessionId:this.props.sessionId,clientSecret:this.props.clientSecret,emailSid:this.props.idSid,poll:!0});else if(this.state.busy||this.state.teamServerBusy||!this.state.flows)s=l.default.createElement(o,null);else{var u=void 0;h.default.get().disable_custom_urls||(u=l.default.createElement(i,{ref:"serverConfig",withToggleButton:!0,customHsUrl:this.props.customHsUrl,customIsUrl:this.props.customIsUrl,defaultHsUrl:this.props.defaultHsUrl,defaultIsUrl:this.props.defaultIsUrl,onServerConfigChange:this.onServerConfigChange,delayTimeMs:1e3})),s=l.default.createElement("div",null,l.default.createElement(d.default,{defaultUsername:this.state.formVals.username,defaultEmail:this.state.formVals.email,defaultPhoneCountry:this.state.formVals.phoneCountry,defaultPhoneNumber:this.state.formVals.phoneNumber,defaultPassword:this.state.formVals.password,teamsConfig:this.state.teamsConfig,minPasswordLength:6,onError:this.onFormValidationFailed,onRegisterClick:this.onFormSubmit,onTeamSelected:this.onTeamSelected,flows:this.state.flows}),u)}var f=void 0,p=void 0;"status"===a&&this.state.errorText?f=l.default.createElement("div",{className:"mx_Login_error"},this.state.errorText):(f=l.default.createElement("h2",null,(0,m._t)("Create an account")),this.state.errorText&&(p=l.default.createElement("div",{className:"mx_Login_error"},this.state.errorText)));var g=void 0;this.state.doingUIAuth||(g=l.default.createElement("a",{className:"mx_Login_create",onClick:this.props.onLoginClick,href:"#"},"status"===a?(0,m._t)("Sign in"):(0,m._t)("I already have an account")));var v=c.default.getComponent("structures.login.LanguageSelector");return l.default.createElement(n,null,l.default.createElement("div",{className:"mx_Login_box"},l.default.createElement(e,{icon:this.state.teamSelected?this.props.teamServerConfig.teamServerURL+"/static/common/"+this.state.teamSelected.domain+"/icon.png":null}),f,s,g,p,l.default.createElement(v,null),l.default.createElement(t,null)))}})},function(e,t,n){"use strict";var r=f(n(37)),o=f(n(128)),i=f(n(0)),a=f(n(1)),s=n(17),l=f(n(290)),u=f(n(3)),c=f(n(27));function f(e){return e&&e.__esModule?e:{default:e}}e.exports=i.default.createClass({displayName:"BaseAvatar",propTypes:{name:a.default.string.isRequired,idName:a.default.string,title:a.default.string,url:a.default.string,urls:a.default.array,width:a.default.number,height:a.default.number,resizeMethod:a.default.string,defaultToInitialLetter:a.default.bool},contextTypes:{matrixClient:a.default.instanceOf(s.MatrixClient)},getDefaultProps:function(){return{width:40,height:40,resizeMethod:"crop",defaultToInitialLetter:!0}},getInitialState:function(){return this._getState(this.props)},componentWillMount:function(){this.unmounted=!1,this.context.matrixClient.on("sync",this.onClientSync)},componentWillUnmount:function(){this.unmounted=!0,this.context.matrixClient.removeListener("sync",this.onClientSync)},componentWillReceiveProps:function(e){var t=this._getState(e),n=t.imageUrls,r=this.state.imageUrls;if(n.length!==r.length)this.setState(t);else for(var o=0;o<n.length;o++)if(r[o]!==n[o]){this.setState(t);break}},onClientSync:function(e,t){this.unmounted||"ERROR"!==e&&t!==e&&this.state.urlsIndex>0&&this.setState({urlsIndex:0})},_getState:function(e){var t=e.urls||[];e.url&&t.unshift(e.url);var n=null;return e.defaultToInitialLetter&&(n=l.default.defaultAvatarUrlForString(e.idName||e.name),t.push(n)),{imageUrls:t,defaultImageUrl:n,urlsIndex:0}},onError:function(e){var t=this.state.urlsIndex+1;t<this.state.imageUrls.length&&this.setState({urlsIndex:t})},_getInitialLetter:function(e){if(!(e.length<1)){var t=0,n=e[0];"@"!==n&&"#"!==n&&"+"!==n||!e[1]||t++;var r=1,o=e.charCodeAt(t);if(o>=55296&&o<=56319&&e[t+1]){var i=e.charCodeAt(t+1);i>=56320&&i<=57343&&r++}return e.substring(t,t+r).toUpperCase()}},render:function(){var e=u.default.getComponent("elements.EmojiText"),t=this.state.imageUrls[this.state.urlsIndex],n=this.props,a=n.name,s=(n.idName,n.title),l=(n.url,n.urls,n.width),f=n.height,d=(n.resizeMethod,n.defaultToInitialLetter,n.onClick),p=(0,o.default)(n,["name","idName","title","url","urls","width","height","resizeMethod","defaultToInitialLetter","onClick"]);if(t===this.state.defaultImageUrl){var m=this._getInitialLetter(a),h=i.default.createElement(e,{className:"mx_BaseAvatar_initial","aria-hidden":"true",style:{fontSize:.65*l+"px",width:l+"px",lineHeight:f+"px"}},m),_=i.default.createElement("img",{className:"mx_BaseAvatar_image",src:t,alt:"",title:s,onError:this.onError,width:l,height:f});return null!=d?i.default.createElement(c.default,(0,r.default)({element:"span",className:"mx_BaseAvatar",onClick:d},p),h,_):i.default.createElement("span",(0,r.default)({className:"mx_BaseAvatar"},p),h,_)}return null!=d?i.default.createElement(c.default,(0,r.default)({className:"mx_BaseAvatar mx_BaseAvatar_image",element:"img",src:t,onClick:d,onError:this.onError,width:l,height:f,title:s,alt:""},p)):i.default.createElement("img",(0,r.default)({className:"mx_BaseAvatar mx_BaseAvatar_image",src:t,onError:this.onError,width:l,height:f,title:s,alt:""},p))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=u(n(37)),o=u(n(128)),i=u(n(0)),a=u(n(1)),s=u(n(3)),l=u(n(8));function u(e){return e&&e.__esModule?e:{default:e}}t.default=i.default.createClass({displayName:"GroupAvatar",propTypes:{groupId:a.default.string,groupName:a.default.string,groupAvatarUrl:a.default.string,width:a.default.number,height:a.default.number,resizeMethod:a.default.string,onClick:a.default.func},getDefaultProps:function(){return{width:36,height:36,resizeMethod:"crop"}},getGroupAvatarUrl:function(){return l.default.get().mxcUrlToHttp(this.props.groupAvatarUrl,this.props.width,this.props.height,this.props.resizeMethod)},render:function(){var e=s.default.getComponent("avatars.BaseAvatar"),t=this.props,n=(t.groupId,t.groupAvatarUrl,t.groupName),a=(0,o.default)(t,["groupId","groupAvatarUrl","groupName"]);return i.default.createElement(e,(0,r.default)({name:n||this.props.groupId[1],idName:this.props.groupId,url:this.getGroupAvatarUrl()},a))}}),e.exports=t.default},function(e,t,n){"use strict";var r=d(n(37)),o=d(n(128)),i=d(n(0)),a=d(n(1)),s=n(17),l=d(n(8)),u=d(n(16)),c=d(n(3)),f=d(n(130));function d(e){return e&&e.__esModule?e:{default:e}}e.exports=i.default.createClass({displayName:"RoomAvatar",propTypes:{room:a.default.object,oobData:a.default.object,width:a.default.number,height:a.default.number,resizeMethod:a.default.string,viewAvatarOnClick:a.default.bool},getDefaultProps:function(){return{width:36,height:36,resizeMethod:"crop",oobData:{}}},getInitialState:function(){return{urls:this.getImageUrls(this.props)}},componentWillMount:function(){l.default.get().on("RoomState.events",this.onRoomStateEvents)},componentWillUnmount:function(){var e=l.default.get();e&&e.removeListener("RoomState.events",this.onRoomStateEvents)},componentWillReceiveProps:function(e){this.setState({urls:this.getImageUrls(e)})},onRoomStateEvents:function(e){this.props.room&&e.getRoomId()===this.props.room.roomId&&"m.room.avatar"===e.getType()&&this.setState({urls:this.getImageUrls(this.props)})},getImageUrls:function(e){return[s.ContentRepo.getHttpUriForMxc(l.default.get().getHomeserverUrl(),e.oobData.avatarUrl,Math.floor(e.width*window.devicePixelRatio),Math.floor(e.height*window.devicePixelRatio),e.resizeMethod),this.getRoomAvatarUrl(e),this.getOneToOneAvatar(e)].filter(function(e){return null!=e&&""!=e})},getRoomAvatarUrl:function(e){return e.room?e.room.getAvatarUrl(l.default.get().getHomeserverUrl(),Math.floor(e.width*window.devicePixelRatio),Math.floor(e.height*window.devicePixelRatio),e.resizeMethod,!1):null},getOneToOneAvatar:function(e){var t=e.room;if(!t)return null;var n=null,r=f.default.shared().getUserIdForRoomId(t.roomId);return(n=r?t.getMember(r):t.getAvatarFallbackMember())?n.getAvatarUrl(l.default.get().getHomeserverUrl(),Math.floor(e.width*window.devicePixelRatio),Math.floor(e.height*window.devicePixelRatio),e.resizeMethod,!1):null},onRoomAvatarClick:function(){var e=this.props.room.getAvatarUrl(l.default.get().getHomeserverUrl(),null,null,null,!1),t=c.default.getComponent("elements.ImageView"),n={src:e,name:this.props.room.name};u.default.createDialog(t,n,"mx_Dialog_lightbox")},render:function(){var e=c.default.getComponent("avatars.BaseAvatar"),t=this.props,n=t.room,a=t.oobData,s=(t.viewAvatarOnClick,(0,o.default)(t,["room","oobData","viewAvatarOnClick"])),l=n?n.name:a.name;return i.default.createElement(e,(0,r.default)({},s,{name:l,idName:n?n.roomId:null,urls:this.state.urls,onClick:this.props.viewAvatarOnClick?this.onRoomAvatarClick:null}))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(11)),o=c(n(4)),i=c(n(5)),a=c(n(12)),s=c(n(13)),l=c(n(0)),u=c(n(1));function c(e){return e&&e.__esModule?e:{default:e}}var f=function(e){function t(e){(0,o.default)(this,t);var n=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this,e));return n.resize=n.resize.bind(n),n}return(0,s.default)(t,e),(0,i.default)(t,[{key:"componentDidMount",value:function(){this.resize=this.resize.bind(this),window.addEventListener("resize",this.resize)}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.resize)}},{key:"resize",value:function(){this.props.onResize&&this.props.onResize()}},{key:"render",value:function(){return l.default.createElement("div",null,this.props.element)}}]),t}(l.default.Component);f.PropTypes={element:u.default.element.isRequired,onResize:u.default.func},t.default=f,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(11)),o=c(n(4)),i=c(n(5)),a=c(n(12)),s=c(n(13)),l=c(n(0)),u=c(n(1));function c(e){return e&&e.__esModule?e:{default:e}}var f=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,i.default)(t,[{key:"render",value:function(){return l.default.createElement("div",null,this.props.message)}}]),t}(l.default.Component);f.PropTypes={message:u.default.string.isRequired},t.default=f,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=g(n(19)),o=n(9),i=g(n(11)),a=g(n(4)),s=g(n(5)),l=g(n(12)),u=g(n(13)),c=g(n(0)),f=g(n(1)),d=g(n(3)),p=n(2),m=g(n(16)),h=n(17),_=g(n(81));function g(e){return e&&e.__esModule?e:{default:e}}var v=function(e){function t(e,n){(0,a.default)(this,t);var r=(0,l.default)(this,(t.__proto__||(0,i.default)(t)).call(this,e,n));return r._onClickReject=r._onClickReject.bind(r),r}return(0,u.default)(t,e),(0,s.default)(t,[{key:"componentWillMount",value:function(){this._unmounted=!1}},{key:"componentWillUnmount",value:function(){this._unmounted=!0}},{key:"_onClickReject",value:function(){var e=this,t=d.default.getComponent("dialogs.QuestionDialog");m.default.createTrackedDialog("Reject community invite","",t,{title:(0,p._t)("Reject invitation"),description:(0,p._t)("Are you sure you want to reject the invitation?"),onFinished:function(){var t=(0,o.coroutine)(r.default.mark(function t(n){var i,a,s;return r.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(n){t.next=2;break}return t.abrupt("return");case 2:return i=d.default.getComponent("elements.Spinner"),a=m.default.createDialog(i,null,"mx_Dialog_spinner"),t.prev=4,t.next=7,(0,o.resolve)(_.default.leaveGroup(e.props.group.groupId));case 7:t.next=14;break;case 9:t.prev=9,t.t0=t.catch(4),console.error("Error rejecting community invite: ",t.t0),s=d.default.getComponent("dialogs.ErrorDialog"),m.default.createTrackedDialog("Error rejecting invite","",s,{title:(0,p._t)("Error"),description:(0,p._t)("Unable to reject invite")});case 14:return t.prev=14,a.close(),t.finish(14);case 17:case"end":return t.stop()}},t,e,[[4,9,14,17]])}));return function(e){return t.apply(this,arguments)}}()}),this.props.onFinished&&this.props.onFinished()}},{key:"render",value:function(){return c.default.createElement("div",null,c.default.createElement("div",{className:"mx_RoomTileContextMenu_leave",onClick:this._onClickReject},c.default.createElement("img",{className:"mx_RoomTileContextMenu_tag_icon",src:"img/icon_context_delete.svg",width:"15",height:"15"}),(0,p._t)("Reject")))}}]),t}(c.default.Component);v.propTypes={group:f.default.instanceOf(h.Group).isRequired,onFinished:f.default.func},t.default=v,e.exports=t.default},function(e,t,n){"use strict";var r=h(n(0)),o=h(n(1)),i=n(17),a=h(n(8)),s=h(n(10)),l=h(n(3)),u=n(2),c=h(n(16)),f=h(n(291)),d=h(n(22)),p=n(79),m=n(240);function h(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"MessageContextMenu",propTypes:{mxEvent:o.default.object.isRequired,eventTileOps:o.default.object,collapseReplyThread:o.default.func,onFinished:o.default.func},getInitialState:function(){return{canRedact:!1,canPin:!1}},componentWillMount:function(){a.default.get().on("RoomMember.powerLevel",this._checkPermissions),this._checkPermissions()},componentWillUnmount:function(){var e=a.default.get();e&&e.removeListener("RoomMember.powerLevel",this._checkPermissions)},_checkPermissions:function(){var e=a.default.get(),t=e.getRoom(this.props.mxEvent.getRoomId()),n=t.currentState.maySendRedactionForEvent(this.props.mxEvent,e.credentials.userId),r=t.currentState.mayClientSendStateEvent("m.room.pinned_events",e);d.default.isFeatureEnabled("feature_pinning")||(r=!1),this.setState({canRedact:n,canPin:r})},_isPinned:function(){var e=a.default.get().getRoom(this.props.mxEvent.getRoomId()).currentState.getStateEvents("m.room.pinned_events","");return!!e&&e.getContent().pinned.includes(this.props.mxEvent.getId())},onResendClick:function(){f.default.resend(this.props.mxEvent),this.closeMenu()},onViewSourceClick:function(){var e=l.default.getComponent("structures.ViewSource");c.default.createTrackedDialog("View Event Source","",e,{content:this.props.mxEvent.event},"mx_Dialog_viewsource"),this.closeMenu()},onViewClearSourceClick:function(){var e=l.default.getComponent("structures.ViewSource");c.default.createTrackedDialog("View Clear Event Source","",e,{content:this.props.mxEvent._clearEvent},"mx_Dialog_viewsource"),this.closeMenu()},onRedactClick:function(){var e=this,t=l.default.getComponent("dialogs.ConfirmRedactDialog");c.default.createTrackedDialog("Confirm Redact Dialog","",t,{onFinished:function(t){t&&a.default.get().redactEvent(e.props.mxEvent.getRoomId(),e.props.mxEvent.getId()).catch(function(e){var t=l.default.getComponent("dialogs.ErrorDialog"),n=e.errcode||e.statusCode;c.default.createTrackedDialog("You cannot delete this message","",t,{title:(0,u._t)("Error"),description:(0,u._t)("You cannot delete this message. (%(code)s)",{code:n})})}).done()}},"mx_Dialog_confirmredact"),this.closeMenu()},onCancelSendClick:function(){f.default.removeFromQueue(this.props.mxEvent),this.closeMenu()},onForwardClick:function(){s.default.dispatch({action:"forward_event",event:this.props.mxEvent}),this.closeMenu()},onPinClick:function(){var e=this;a.default.get().getStateEvent(this.props.mxEvent.getRoomId(),"m.room.pinned_events","").catch(function(e){if("M_NOT_FOUND"===e.errcode)return null;throw e}).then(function(t){var n=(t?t.pinned:[])||[];n.includes(e.props.mxEvent.getId())?n.splice(n.indexOf(e.props.mxEvent.getId()),1):n.push(e.props.mxEvent.getId()),a.default.get().sendStateEvent(e.props.mxEvent.getRoomId(),"m.room.pinned_events",{pinned:n},"")}),this.closeMenu()},closeMenu:function(){this.props.onFinished&&this.props.onFinished()},onUnhidePreviewClick:function(){this.props.eventTileOps&&this.props.eventTileOps.unhideWidget(),this.closeMenu()},onQuoteClick:function(){s.default.dispatch({action:"quote",event:this.props.mxEvent}),this.closeMenu()},onPermalinkClick:function(e){e.preventDefault();var t=l.default.getComponent("dialogs.ShareDialog");c.default.createTrackedDialog("share room message dialog","",t,{target:this.props.mxEvent}),this.closeMenu()},onReplyClick:function(){s.default.dispatch({action:"reply_to_event",event:this.props.mxEvent}),this.closeMenu()},onCollapseReplyThreadClick:function(){this.props.collapseReplyThread(),this.closeMenu()},render:function(){var e=this.props.mxEvent.status,t=void 0,n=void 0,o=void 0,a=void 0,s=void 0,l=void 0,c=void 0,f=void 0,d=void 0,h=void 0,_=void 0,g=!e||e===i.EventStatus.SENT;if(e===i.EventStatus.NOT_SENT&&(t=r.default.createElement("div",{className:"mx_MessageContextMenu_field",onClick:this.onResendClick},(0,u._t)("Resend"))),g&&this.state.canRedact&&(n=r.default.createElement("div",{className:"mx_MessageContextMenu_field",onClick:this.onRedactClick},(0,u._t)("Remove"))),e!==i.EventStatus.QUEUED&&e!==i.EventStatus.NOT_SENT||(o=r.default.createElement("div",{className:"mx_MessageContextMenu_field",onClick:this.onCancelSendClick},(0,u._t)("Cancel Sending"))),g&&"m.room.message"===this.props.mxEvent.getType()){var v=this.props.mxEvent.getContent();v.msgtype&&"m.bad.encrypted"!==v.msgtype&&v.hasOwnProperty("body")&&(a=r.default.createElement("div",{className:"mx_MessageContextMenu_field",onClick:this.onForwardClick},(0,u._t)("Forward Message")),h=r.default.createElement("div",{className:"mx_MessageContextMenu_field",onClick:this.onReplyClick},(0,u._t)("Reply")),this.state.canPin&&(s=r.default.createElement("div",{className:"mx_MessageContextMenu_field",onClick:this.onPinClick},this._isPinned()?(0,u._t)("Unpin Message"):(0,u._t)("Pin Message"))))}var y=r.default.createElement("div",{className:"mx_MessageContextMenu_field",onClick:this.onViewSourceClick},(0,u._t)("View Source"));this.props.mxEvent.getType()!==this.props.mxEvent.getWireType()&&(l=r.default.createElement("div",{className:"mx_MessageContextMenu_field",onClick:this.onViewClearSourceClick},(0,u._t)("View Decrypted Source"))),this.props.eventTileOps&&this.props.eventTileOps.isWidgetHidden()&&(c=r.default.createElement("div",{className:"mx_MessageContextMenu_field",onClick:this.onUnhidePreviewClick},(0,u._t)("Unhide Preview")));var b=r.default.createElement("div",{className:"mx_MessageContextMenu_field"},r.default.createElement("a",{href:(0,p.makeEventPermalink)(this.props.mxEvent.getRoomId(),this.props.mxEvent.getId()),target:"_blank",rel:"noopener",onClick:this.onPermalinkClick},(0,u._t)("Share Message")));return this.props.eventTileOps&&this.props.eventTileOps.getInnerText&&(d=r.default.createElement("div",{className:"mx_MessageContextMenu_field",onClick:this.onQuoteClick},(0,u._t)("Quote"))),"string"==typeof this.props.mxEvent.event.content.external_url&&(0,m.isUrlPermitted)(this.props.mxEvent.event.content.external_url)&&(f=r.default.createElement("div",{className:"mx_MessageContextMenu_field"},r.default.createElement("a",{href:this.props.mxEvent.event.content.external_url,rel:"noopener",target:"_blank",onClick:this.closeMenu},(0,u._t)("Source URL")))),this.props.collapseReplyThread&&(_=r.default.createElement("div",{className:"mx_MessageContextMenu_field",onClick:this.onCollapseReplyThreadClick},(0,u._t)("Collapse Reply Thread"))),r.default.createElement("div",null,t,n,o,a,s,y,l,c,b,d,h,f,_)}})},function(e,t,n){"use strict";var r=g(n(9)),o=g(n(0)),i=g(n(24)),a=g(n(1)),s=g(n(3)),l=n(2),u=g(n(8)),c=g(n(10)),f=g(n(130)),d=_(n(146)),p=_(n(451)),m=g(n(16)),h=g(n(656));function _(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function g(e){return e&&e.__esModule?e:{default:e}}e.exports=o.default.createClass({displayName:"RoomTileContextMenu",propTypes:{room:a.default.object.isRequired,onFinished:a.default.func},getInitialState:function(){var e=new f.default(u.default.get());return{roomNotifState:p.getRoomNotifsState(this.props.room.roomId),isFavourite:this.props.room.tags.hasOwnProperty("m.favourite"),isLowPriority:this.props.room.tags.hasOwnProperty("m.lowpriority"),isDirectMessage:Boolean(e.getUserIdForRoomId(this.props.room.roomId))}},componentWillMount:function(){this._unmounted=!1},componentWillUnmount:function(){this._unmounted=!0},_toggleTag:function(e,t){var n=this;u.default.get().isGuest()||r.default.delay(500).then(function(){c.default.dispatch(h.default.tagRoom(u.default.get(),n.props.room,t,e,void 0,0),!0),n.props.onFinished()})},_onClickFavourite:function(){!this.state.isFavourite&&this.state.isLowPriority?(this.setState({isFavourite:!0,isLowPriority:!1}),this._toggleTag("m.favourite","m.lowpriority")):this.state.isFavourite?(this.setState({isFavourite:!1}),this._toggleTag(null,"m.favourite")):this.state.isFavourite||(this.setState({isFavourite:!0}),this._toggleTag("m.favourite"))},_onClickLowPriority:function(){!this.state.isLowPriority&&this.state.isFavourite?(this.setState({isFavourite:!1,isLowPriority:!0}),this._toggleTag("m.lowpriority","m.favourite")):this.state.isLowPriority?(this.setState({isLowPriority:!1}),this._toggleTag(null,"m.lowpriority")):this.state.isLowPriority||(this.setState({isLowPriority:!0}),this._toggleTag("m.lowpriority"))},_onClickDM:function(){var e=this;if(!u.default.get().isGuest()){var t=!this.state.isDirectMessage;this.setState({isDirectMessage:t}),d.guessAndSetDMRoom(this.props.room,t).delay(500).finally(function(){e.props.onFinished&&e.props.onFinished()},function(e){var t=s.default.getComponent("dialogs.ErrorDialog");m.default.createTrackedDialog("Failed to set Direct Message status of room","",t,{title:(0,l._t)("Failed to set Direct Message status of room"),description:e&&e.message?e.message:(0,l._t)("Operation failed")})})}},_onClickLeave:function(){c.default.dispatch({action:"leave_room",room_id:this.props.room.roomId}),this.props.onFinished&&this.props.onFinished()},_onClickReject:function(){c.default.dispatch({action:"reject_invite",room_id:this.props.room.roomId}),this.props.onFinished&&this.props.onFinished()},_onClickForget:function(){u.default.get().forget(this.props.room.roomId).done(function(){c.default.dispatch({action:"view_next_room"})},function(e){var t=e.errcode||(0,l._td)("unknown error code"),n=s.default.getComponent("dialogs.ErrorDialog");m.default.createTrackedDialog("Failed to forget room","",n,{title:(0,l._t)("Failed to forget room %(errCode)s",{errCode:t}),description:e&&e.message?e.message:(0,l._t)("Operation failed")})}),this.props.onFinished&&this.props.onFinished()},_saveNotifState:function(e){var t=this;if(!u.default.get().isGuest()){var n=this.state.roomNotifState,o=this.props.room.roomId;this.setState({roomNotifState:e}),p.setRoomNotifsState(o,e).done(function(){return r.default.delay(500).then(function(){t._unmounted||t.props.onFinished&&t.props.onFinished()})},function(e){t._unmounted||t.setState({roomNotifState:n})})}},_onClickAlertMe:function(){this._saveNotifState(p.ALL_MESSAGES_LOUD)},_onClickAllNotifs:function(){this._saveNotifState(p.ALL_MESSAGES)},_onClickMentions:function(){this._saveNotifState(p.MENTIONS_ONLY)},_onClickMute:function(){this._saveNotifState(p.MUTE)},_renderNotifMenu:function(){var e=(0,i.default)({mx_RoomTileContextMenu_notif_field:!0,mx_RoomTileContextMenu_notif_fieldSet:this.state.roomNotifState==p.ALL_MESSAGES_LOUD}),t=(0,i.default)({mx_RoomTileContextMenu_notif_field:!0,mx_RoomTileContextMenu_notif_fieldSet:this.state.roomNotifState==p.ALL_MESSAGES}),n=(0,i.default)({mx_RoomTileContextMenu_notif_field:!0,mx_RoomTileContextMenu_notif_fieldSet:this.state.roomNotifState==p.MENTIONS_ONLY}),r=(0,i.default)({mx_RoomTileContextMenu_notif_field:!0,mx_RoomTileContextMenu_notif_fieldSet:this.state.roomNotifState==p.MUTE});return o.default.createElement("div",null,o.default.createElement("div",{className:"mx_RoomTileContextMenu_notif_picker"},o.default.createElement("img",{src:"img/notif-slider.svg",width:"20",height:"107"})),o.default.createElement("div",{className:e,onClick:this._onClickAlertMe},o.default.createElement("img",{className:"mx_RoomTileContextMenu_notif_activeIcon",src:"img/notif-active.svg",width:"12",height:"12"}),o.default.createElement("img",{className:"mx_RoomTileContextMenu_notif_icon mx_filterFlipColor",src:"img/icon-context-mute-off-copy.svg",width:"16",height:"12"}),(0,l._t)("All messages (noisy)")),o.default.createElement("div",{className:t,onClick:this._onClickAllNotifs},o.default.createElement("img",{className:"mx_RoomTileContextMenu_notif_activeIcon",src:"img/notif-active.svg",width:"12",height:"12"}),o.default.createElement("img",{className:"mx_RoomTileContextMenu_notif_icon mx_filterFlipColor",src:"img/icon-context-mute-off.svg",width:"16",height:"12"}),(0,l._t)("All messages")),o.default.createElement("div",{className:n,onClick:this._onClickMentions},o.default.createElement("img",{className:"mx_RoomTileContextMenu_notif_activeIcon",src:"img/notif-active.svg",width:"12",height:"12"}),o.default.createElement("img",{className:"mx_RoomTileContextMenu_notif_icon mx_filterFlipColor",src:"img/icon-context-mute-mentions.svg",width:"16",height:"12"}),(0,l._t)("Mentions only")),o.default.createElement("div",{className:r,onClick:this._onClickMute},o.default.createElement("img",{className:"mx_RoomTileContextMenu_notif_activeIcon",src:"img/notif-active.svg",width:"12",height:"12"}),o.default.createElement("img",{className:"mx_RoomTileContextMenu_notif_icon mx_filterFlipColor",src:"img/icon-context-mute.svg",width:"16",height:"12"}),(0,l._t)("Mute")))},_renderLeaveMenu:function(e){if(!e)return null;var t=null,n=null;switch(e){case"join":t=this._onClickLeave,n=(0,l._t)("Leave");break;case"leave":case"ban":t=this._onClickForget,n=(0,l._t)("Forget");break;case"invite":t=this._onClickReject,n=(0,l._t)("Reject")}return o.default.createElement("div",null,o.default.createElement("div",{className:"mx_RoomTileContextMenu_leave",onClick:t},o.default.createElement("img",{className:"mx_RoomTileContextMenu_tag_icon",src:"img/icon_context_delete.svg",width:"15",height:"15"}),n))},_renderRoomTagMenu:function(){var e=(0,i.default)({mx_RoomTileContextMenu_tag_field:!0,mx_RoomTileContextMenu_tag_fieldSet:this.state.isFavourite,mx_RoomTileContextMenu_tag_fieldDisabled:!1}),t=(0,i.default)({mx_RoomTileContextMenu_tag_field:!0,mx_RoomTileContextMenu_tag_fieldSet:this.state.isLowPriority,mx_RoomTileContextMenu_tag_fieldDisabled:!1}),n=(0,i.default)({mx_RoomTileContextMenu_tag_field:!0,mx_RoomTileContextMenu_tag_fieldSet:this.state.isDirectMessage,mx_RoomTileContextMenu_tag_fieldDisabled:!1});return o.default.createElement("div",null,o.default.createElement("div",{className:e,onClick:this._onClickFavourite},o.default.createElement("img",{className:"mx_RoomTileContextMenu_tag_icon",src:"img/icon_context_fave.svg",width:"15",height:"15"}),o.default.createElement("img",{className:"mx_RoomTileContextMenu_tag_icon_set",src:"img/icon_context_fave_on.svg",width:"15",height:"15"}),(0,l._t)("Favourite")),o.default.createElement("div",{className:t,onClick:this._onClickLowPriority},o.default.createElement("img",{className:"mx_RoomTileContextMenu_tag_icon",src:"img/icon_context_low.svg",width:"15",height:"15"}),o.default.createElement("img",{className:"mx_RoomTileContextMenu_tag_icon_set",src:"img/icon_context_low_on.svg",width:"15",height:"15"}),(0,l._t)("Low Priority")),o.default.createElement("div",{className:n,onClick:this._onClickDM},o.default.createElement("img",{className:"mx_RoomTileContextMenu_tag_icon",src:"img/icon_context_person.svg",width:"15",height:"15"}),o.default.createElement("img",{className:"mx_RoomTileContextMenu_tag_icon_set",src:"img/icon_context_person_on.svg",width:"15",height:"15"}),(0,l._t)("Direct Chat")))},render:function(){var e=this.props.room.getMyMembership();return"join"!==e?this._renderLeaveMenu(e):o.default.createElement("div",null,this._renderNotifMenu(),o.default.createElement("hr",{className:"mx_RoomTileContextMenu_separator"}),this._renderLeaveMenu(e),o.default.createElement("hr",{className:"mx_RoomTileContextMenu_separator"}),this._renderRoomTagMenu())}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=h(n(11)),o=h(n(4)),i=h(n(5)),a=h(n(12)),s=h(n(13)),l=h(n(0)),u=h(n(1)),c=n(2),f=h(n(10)),d=h(n(655)),p=h(n(8)),m=h(n(3));function h(e){return e&&e.__esModule?e:{default:e}}var _=function(e){function t(){(0,o.default)(this,t);var e=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this));return e._onViewCommunityClick=e._onViewCommunityClick.bind(e),e._onRemoveClick=e._onRemoveClick.bind(e),e}return(0,s.default)(t,e),(0,i.default)(t,[{key:"_onViewCommunityClick",value:function(){f.default.dispatch({action:"view_group",group_id:this.props.tag}),this.props.onFinished()}},{key:"_onRemoveClick",value:function(){f.default.dispatch(d.default.removeTag(p.default.get(),this.props.tag)),this.props.onFinished()}},{key:"render",value:function(){var e=m.default.getComponent("elements.TintableSvg");return l.default.createElement("div",null,l.default.createElement("div",{className:"mx_TagTileContextMenu_item",onClick:this._onViewCommunityClick},l.default.createElement(e,{className:"mx_TagTileContextMenu_item_icon",src:"img/icons-groups.svg",width:"15",height:"15"}),(0,c._t)("View Community")),l.default.createElement("hr",{className:"mx_TagTileContextMenu_separator"}),l.default.createElement("div",{className:"mx_TagTileContextMenu_item",onClick:this._onRemoveClick},l.default.createElement("img",{className:"mx_TagTileContextMenu_item_icon",src:"img/icon_context_delete.svg",width:"15",height:"15"}),(0,c._t)("Remove")))}}]),t}(l.default.Component);_.propTypes={tag:u.default.string.isRequired,onFinished:u.default.func.isRequired},t.default=_,e.exports=t.default},function(e,t,n){"use strict";var r=a(n(0)),o=a(n(1)),i=n(2);function a(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"CreateRoomButton",propTypes:{onCreateRoom:o.default.func},getDefaultProps:function(){return{onCreateRoom:function(){}}},onClick:function(){this.props.onCreateRoom()},render:function(){return r.default.createElement("button",{className:"mx_CreateRoomButton",onClick:this.onClick},(0,i._t)("Create Room"))}})},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1)),o=n(2);var i=n(0);e.exports=i.createClass({displayName:"CreateRoomPresets",propTypes:{onChange:r.default.func,preset:r.default.string},Presets:{PrivateChat:"private_chat",PublicChat:"public_chat",Custom:"custom"},getDefaultProps:function(){return{onChange:function(){}}},onValueChanged:function(e){this.props.onChange(e.target.value)},render:function(){return i.createElement("select",{className:"mx_Presets",onChange:this.onValueChanged,value:this.props.preset},i.createElement("option",{value:this.Presets.PrivateChat},(0,o._t)("Private Chat")),i.createElement("option",{value:this.Presets.PublicChat},(0,o._t)("Public Chat")),i.createElement("option",{value:this.Presets.Custom},(0,o._t)("Custom")))}})},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1)),o=n(2);var i=n(0);e.exports=i.createClass({displayName:"RoomAlias",propTypes:{homeserver:r.default.string,alias:r.default.string,onChange:r.default.func},getDefaultProps:function(){return{onChange:function(){},alias:""}},getAliasLocalpart:function(){var e=this.props.alias;if(e&&this.props.homeserver){var t=":"+this.props.homeserver;e.startsWith("#")&&e.endsWith(t)&&(e=e.slice(1,-t.length))}return e},onValueChanged:function(e){this.props.onChange(e.target.value)},onFocus:function(e){var t=e.target,n=e.target.value;if(this.props.homeserver)if(""==n){var r=this;setTimeout(function(){t.value="#:"+r.props.homeserver,t.setSelectionRange(1,1)},0)}else{var o=":"+this.props.homeserver;setTimeout(function(){t.setSelectionRange(n.startsWith("#")?1:0,n.endsWith(o)?t.value.length-o.length:t.value.length)},0)}},onBlur:function(e){var t=e.target.value;if(this.props.homeserver){if(t=="#:"+this.props.homeserver)return void(e.target.value="");if(""!=t){var n=e.target.value,r=":"+this.props.homeserver;t.startsWith("#")||(n="#"+n),t.endsWith(r)||(n+=r),e.target.value=n}}},render:function(){return i.createElement("input",{type:"text",className:"mx_RoomAlias",placeholder:(0,o._t)("Alias (optional)"),onChange:this.onValueChanged,onFocus:this.onFocus,onBlur:this.onBlur,value:this.props.alias})}})},function(e,t,n){"use strict";var r=d(n(138)),o=d(n(0)),i=d(n(1)),a=n(2),s=d(n(3)),l=d(n(8)),u=d(n(9)),c=n(196),f=d(n(81));function d(e){return e&&e.__esModule?e:{default:e}}var p={"mx-user-id":(0,a._td)("Matrix ID"),"mx-room-id":(0,a._td)("Matrix Room ID"),email:(0,a._td)("email address")};e.exports=o.default.createClass({displayName:"AddressPickerDialog",propTypes:{title:i.default.string.isRequired,description:i.default.node,extraNode:i.default.node,value:i.default.string,placeholder:i.default.string,roomId:i.default.string,button:i.default.string,focus:i.default.bool,validAddressTypes:i.default.arrayOf(i.default.oneOf(c.addressTypes)),onFinished:i.default.func.isRequired,groupId:i.default.string,pickerType:i.default.oneOf(["user","room"]),includeSelf:i.default.bool},getDefaultProps:function(){return{value:"",focus:!0,validAddressTypes:c.addressTypes,pickerType:"user",includeSelf:!1}},getInitialState:function(){return{error:!1,selectedList:[],busy:!1,searchError:null,serverSupportsUserDirectory:!0,query:"",suggestedList:[]}},componentDidMount:function(){this.props.focus&&(this.refs.textinput.value=this.props.value)},onButtonClick:function(){var e=this.state.selectedList.slice();""!==this.refs.textinput.value&&null===(e=this._addInputToList())||this.props.onFinished(!0,e)},onCancel:function(){this.props.onFinished(!1)},onKeyDown:function(e){27===e.keyCode?(e.stopPropagation(),e.preventDefault(),this.props.onFinished(!1)):38===e.keyCode?(e.stopPropagation(),e.preventDefault(),this.addressSelector&&this.addressSelector.moveSelectionUp()):40===e.keyCode?(e.stopPropagation(),e.preventDefault(),this.addressSelector&&this.addressSelector.moveSelectionDown()):this.state.suggestedList.length>0&&(188===e.keyCode||13===e.keyCode||9===e.keyCode)?(e.stopPropagation(),e.preventDefault(),this.addressSelector&&this.addressSelector.chooseSelection()):0===this.refs.textinput.value.length&&this.state.selectedList.length&&8===e.keyCode?(e.stopPropagation(),e.preventDefault(),this.onDismissed(this.state.selectedList.length-1)()):13===e.keyCode?(e.stopPropagation(),e.preventDefault(),""===this.refs.textinput.value?this.onButtonClick():this._addInputToList()):188!==e.keyCode&&9!==e.keyCode||(e.stopPropagation(),e.preventDefault(),this._addInputToList())},onQueryChanged:function(e){var t=this,n=e.target.value;this.queryChangedDebouncer&&clearTimeout(this.queryChangedDebouncer),n.length>0&&"@"!==n&&n.length>=2?this.queryChangedDebouncer=setTimeout(function(){"user"===t.props.pickerType?t.props.groupId?t._doNaiveGroupSearch(n):t.state.serverSupportsUserDirectory?t._doUserDirectorySearch(n):t._doLocalSearch(n):"room"===t.props.pickerType?t.props.groupId?t._doNaiveGroupRoomSearch(n):t._doRoomSearch(n):console.error("Unknown pickerType",t.props.pickerType)},200):this.setState({suggestedList:[],query:"",searchError:null})},onDismissed:function(e){var t=this;return function(){var n=t.state.selectedList.slice();n.splice(e,1),t.setState({selectedList:n,suggestedList:[],query:""}),t._cancelThreepidLookup&&t._cancelThreepidLookup()}},onClick:function(e){var t=this;return function(){t.onSelected(e)}},onSelected:function(e){var t=this.state.selectedList.slice();t.push(this.state.suggestedList[e]),this.setState({selectedList:t,suggestedList:[],query:""}),this._cancelThreepidLookup&&this._cancelThreepidLookup()},_doNaiveGroupSearch:function(e){var t=this,n=e.toLowerCase();this.setState({busy:!0,query:e,searchError:null}),l.default.get().getGroupUsers(this.props.groupId).then(function(r){var o=[];r.chunk.forEach(function(e){var t=e.user_id.toLowerCase().includes(n),r=(e.displayname||"").toLowerCase().includes(n);(t||r)&&o.push({user_id:e.user_id,avatar_url:e.avatar_url,display_name:e.displayname})}),t._processResults(o,e)}).catch(function(e){console.error("Error whilst searching group rooms: ",e),t.setState({searchError:e.errcode?e.message:(0,a._t)("Something went wrong!")})}).done(function(){t.setState({busy:!1})})},_doNaiveGroupRoomSearch:function(e){var t=e.toLowerCase(),n=[];f.default.getGroupRooms(this.props.groupId).forEach(function(e){var r=(e.name||"").toLowerCase().includes(t),o=(e.topic||"").toLowerCase().includes(t),i=(e.canonical_alias||"").toLowerCase().includes(t);(r||o||i)&&n.push({room_id:e.room_id,avatar_url:e.avatar_url,name:e.name||e.canonical_alias})}),this._processResults(n,e),this.setState({busy:!1})},_doRoomSearch:function(e){var t=e.toLowerCase(),n=[];l.default.get().getRooms().forEach(function(e){var r=1/0,o=e.currentState.getStateEvents("m.room.name",""),i=o?o.getContent().name:"",s=e.getCanonicalAlias(),l=e.currentState.getStateEvents("m.room.aliases").map(function(e){return e.getContent().aliases}).reduce(function(e,t){return e.concat(t)},[]),u=(i||"").toLowerCase().includes(t),c=!1,f=1/0;if(l.forEach(function(e){(e||"").toLowerCase().includes(t)&&(c=!0,f>e.length&&(f=e.length))}),u||c){c&&(r=f);var d=e.currentState.getStateEvents("m.room.avatar",""),p=d?d.getContent().url:void 0;n.push({rank:r,room_id:e.roomId,avatar_url:p,name:i||s||l[0]||(0,a._t)("Unnamed Room")})}});var r=n.sort(function(e,t){return e.rank-t.rank});this._processResults(r,e),this.setState({busy:!1})},_doUserDirectorySearch:function(e){var t=this;this.setState({busy:!0,query:e,searchError:null}),l.default.get().searchUserDirectory({term:e}).then(function(n){t.state.query===e&&t._processResults(n.results,e)}).catch(function(n){console.error("Error whilst searching user directory: ",n),t.setState({searchError:n.errcode?n.message:(0,a._t)("Something went wrong!")}),"M_UNRECOGNIZED"===n.errcode&&(t.setState({serverSupportsUserDirectory:!1}),t._doLocalSearch(e))}).done(function(){t.setState({busy:!1})})},_doLocalSearch:function(e){this.setState({query:e,searchError:null});var t=e.toLowerCase(),n=[];l.default.get().getUsers().forEach(function(e){-1===e.userId.toLowerCase().indexOf(t)&&-1===e.displayName.toLowerCase().indexOf(t)||n.push({user_id:e.userId,display_name:e.displayName,avatar_url:e.avatarUrl})}),this._processResults(n,e)},_processResults:function(e,t){var n=this,r=[];e.forEach(function(e){e.room_id?r.push({addressType:"mx-room-id",address:e.room_id,displayName:e.name,avatarMxc:e.avatar_url,isKnown:!0}):(n.props.includeSelf||e.user_id!==l.default.get().credentials.userId)&&r.push({addressType:"mx-user-id",address:e.user_id,displayName:e.display_name,avatarMxc:e.avatar_url,isKnown:!0})});var o=(0,c.getAddressType)(t);this.props.validAddressTypes.includes(o)&&(r.unshift({addressType:o,address:t,isKnown:!1}),this._cancelThreepidLookup&&this._cancelThreepidLookup(),"email"===o&&this._lookupThreepid(o,t).done()),this.setState({suggestedList:r,error:!1},function(){n.addressSelector&&n.addressSelector.moveSelectionTop()})},_addInputToList:function(){var e=this.refs.textinput.value.trim(),t=(0,c.getAddressType)(e),n={addressType:t,address:e,isKnown:!1};if(!this.props.validAddressTypes.includes(t))return this.setState({error:!0}),null;if("mx-user-id"===t){var r=l.default.get().getUser(n.address);r&&(n.displayName=r.displayName,n.avatarMxc=r.avatarUrl,n.isKnown=!0)}else if("mx-room-id"===t){var o=l.default.get().getRoom(n.address);o&&(n.displayName=o.name,n.avatarMxc=o.avatarUrl,n.isKnown=!0)}var i=this.state.selectedList.slice();return i.push(n),this.setState({selectedList:i,suggestedList:[],query:""}),this._cancelThreepidLookup&&this._cancelThreepidLookup(),i},_lookupThreepid:function(e,t){var n=this,r=!1;return this._cancelThreepidLookup=function(){r=!0},u.default.delay(500).then(function(){return r?null:l.default.get().lookupThreePid(e,t)}).then(function(e){return null!==e&&e.mxid?r?null:l.default.get().getProfileInfo(e.mxid):null}).then(function(o){return null===o?null:r?null:void n.setState({suggestedList:[{addressType:e,address:t,displayName:o.displayname,avatarMxc:o.avatar_url,isKnown:!0}]})})},render:function(){var e=this,t=s.default.getComponent("views.dialogs.BaseDialog"),n=s.default.getComponent("views.elements.DialogButtons"),i=s.default.getComponent("elements.AddressSelector");this.scrollElement=null;var l={};this.state.selectedList.forEach(function(e){var t=e.address,n=e.addressType;l[n]||(l[n]=new r.default),l[n].add(t)});var u=this.state.suggestedList.filter(function(e){var t=e.address,n=e.addressType;return!(l[n]&&l[n].has(t))}),c=[];if(this.state.selectedList.length>0)for(var f=s.default.getComponent("elements.AddressTile"),d=0;d<this.state.selectedList.length;d++)c.push(o.default.createElement(f,{key:d,address:this.state.selectedList[d],canDismiss:!0,onDismissed:this.onDismissed(d),showAddress:"user"===this.props.pickerType}));c.push(o.default.createElement("textarea",{key:this.state.selectedList.length,rows:"1",id:"textinput",ref:"textinput",className:"mx_ChatInviteDialog_input",onChange:this.onQueryChanged,placeholder:this.props.placeholder,defaultValue:this.props.value,autoFocus:this.props.focus}));var m=void 0,h=void 0;if(this.state.error){var _=this.props.validAddressTypes.map(function(e){return(0,a._t)(p[e])});m=o.default.createElement("div",{className:"mx_ChatInviteDialog_error"},(0,a._t)("You have entered an invalid address."),o.default.createElement("br",null),(0,a._t)("Try using one of the following valid address types: %(validTypesList)s.",{validTypesList:_.join(", ")}))}else this.state.searchError?m=o.default.createElement("div",{className:"mx_ChatInviteDialog_error"},this.state.searchError):this.state.query.length>0&&0===u.length&&!this.state.busy?m=o.default.createElement("div",{className:"mx_ChatInviteDialog_error"},(0,a._t)("No results")):h=o.default.createElement(i,{ref:function(t){e.addressSelector=t},addressList:u,showAddress:"user"===this.props.pickerType,onSelected:this.onSelected,truncateAt:40});return o.default.createElement(t,{className:"mx_ChatInviteDialog",onKeyDown:this.onKeyDown,onFinished:this.props.onFinished,title:this.props.title},o.default.createElement("div",{className:"mx_ChatInviteDialog_label"},o.default.createElement("label",{htmlFor:"textinput"},this.props.description)),o.default.createElement("div",{className:"mx_Dialog_content"},o.default.createElement("div",{className:"mx_ChatInviteDialog_inputContainer"},c),m,h,this.props.extraNode),o.default.createElement(n,{primaryButton:this.props.button,onPrimaryButtonClick:this.onButtonClick,onCancel:this.onCancel}))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=d(n(0)),o=d(n(1585)),i=d(n(1)),a=d(n(24)),s=n(17),l=n(80),u=d(n(27)),c=d(n(3)),f=d(n(8));function d(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"BaseDialog",propTypes:{onFinished:i.default.func.isRequired,hasCancel:i.default.bool,onKeyDown:i.default.func,className:i.default.string,title:i.default.string.isRequired,children:i.default.node,contentId:i.default.string,titleClass:i.default.string},getDefaultProps:function(){return{hasCancel:!0}},childContextTypes:{matrixClient:i.default.instanceOf(s.MatrixClient)},getChildContext:function(){return{matrixClient:this._matrixClient}},componentWillMount:function(){this._matrixClient=f.default.get()},_onKeyDown:function(e){this.props.onKeyDown&&this.props.onKeyDown(e),this.props.hasCancel&&e.keyCode===l.KeyCode.ESCAPE&&(e.stopPropagation(),e.preventDefault(),this.props.onFinished(!1))},_onCancelClick:function(e){this.props.onFinished(!1)},render:function(){var e=c.default.getComponent("elements.TintableSvg"),t=void 0;return this.props.hasCancel&&(t=r.default.createElement(u.default,{onClick:this._onCancelClick,className:"mx_Dialog_cancelButton"},r.default.createElement(e,{src:"img/icons-close-button.svg",width:"35",height:"35"}))),r.default.createElement(o.default,{onKeyDown:this._onKeyDown,className:this.props.className,role:"dialog","aria-labelledby":"mx_BaseDialog_title","aria-describedby":this.props.contentId},t,r.default.createElement("div",{className:(0,a.default)("mx_Dialog_title",this.props.titleClass),id:"mx_BaseDialog_title"},this.props.title),this.props.children)}}),e.exports=t.default},function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var o=n(0),i=n(1586),a=["active","paused","tag","focusTrapOptions","_createFocusTrap"],s=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.setNode=function(e){n.node=e},"undefined"!=typeof document&&(n.previouslyFocusedElement=document.activeElement),n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,o.Component),r(t,[{key:"componentDidMount",value:function(){var e=this.props.focusTrapOptions,t={returnFocusOnDeactivate:!1};for(var n in e)e.hasOwnProperty(n)&&"returnFocusOnDeactivate"!==n&&(t[n]=e[n]);this.focusTrap=this.props._createFocusTrap(this.node,t),this.props.active&&this.focusTrap.activate(),this.props.paused&&this.focusTrap.pause()}},{key:"componentDidUpdate",value:function(e){e.active&&!this.props.active?this.focusTrap.deactivate():!e.active&&this.props.active&&this.focusTrap.activate(),e.paused&&!this.props.paused?this.focusTrap.unpause():!e.paused&&this.props.paused&&this.focusTrap.pause()}},{key:"componentWillUnmount",value:function(){this.focusTrap.deactivate(),!1!==this.props.focusTrapOptions.returnFocusOnDeactivate&&this.previouslyFocusedElement&&this.previouslyFocusedElement.focus&&this.previouslyFocusedElement.focus()}},{key:"render",value:function(){var e={ref:this.setNode};for(var t in this.props)this.props.hasOwnProperty(t)&&-1===a.indexOf(t)&&(e[t]=this.props[t]);return o.createElement(this.props.tag,e,this.props.children)}}]),t}();s.defaultProps={active:!0,tag:"div",paused:!1,focusTrapOptions:{},_createFocusTrap:i},e.exports=s},function(e,t,n){var r=n(1587),o=null;function i(e){e&&e.focus&&e!==document.activeElement&&(e.focus(),"input"===e.tagName.toLowerCase()&&e.select())}e.exports=function(e,t){var n=[],a=null,s=null,l=null,u=!1,c=!1,f=null,d="string"==typeof e?document.querySelector(e):e,p=t||{};p.returnFocusOnDeactivate=!t||void 0===t.returnFocusOnDeactivate||t.returnFocusOnDeactivate,p.escapeDeactivates=!t||void 0===t.escapeDeactivates||t.escapeDeactivates;var m={activate:function(e){if(!u){var t={onActivate:e&&void 0!==e.onActivate?e.onActivate:p.onActivate};return u=!0,c=!1,l=document.activeElement,t.onActivate&&t.onActivate(),_(),m}},deactivate:h,pause:function(){!c&&u&&(c=!0,g())},unpause:function(){c&&u&&(c=!1,_())}};return m;function h(e){if(u){var t={returnFocus:e&&void 0!==e.returnFocus?e.returnFocus:p.returnFocusOnDeactivate,onDeactivate:e&&void 0!==e.onDeactivate?e.onDeactivate:p.onDeactivate};return g(),t.onDeactivate&&t.onDeactivate(),t.returnFocus&&setTimeout(function(){i(l)},0),u=!1,c=!1,this}}function _(){if(u)return o&&o.pause(),o=m,S(),setTimeout(function(){i(function(){var e;if(!(e=null!==v("initialFocus")?v("initialFocus"):d.contains(document.activeElement)?document.activeElement:n[0]||v("fallbackFocus")))throw new Error("You can't have a focus-trap without at least one focusable element");return e}())},0),document.addEventListener("focus",E,!0),document.addEventListener("click",b,!0),document.addEventListener("mousedown",y,!0),document.addEventListener("touchstart",y,!0),document.addEventListener("keydown",C,!0),m}function g(){if(u&&o===m)return document.removeEventListener("focus",E,!0),document.removeEventListener("click",b,!0),document.removeEventListener("mousedown",y,!0),document.removeEventListener("touchstart",y,!0),document.removeEventListener("keydown",C,!0),o=null,m}function v(e){var t=p[e],n=t;if(!t)return null;if("string"==typeof t&&!(n=document.querySelector(t)))throw new Error("`"+e+"` refers to no known node");if("function"==typeof t&&!(n=t()))throw new Error("`"+e+"` did not return a node");return n}function y(e){p.clickOutsideDeactivates&&!d.contains(e.target)&&h({returnFocus:!1})}function b(e){p.clickOutsideDeactivates||d.contains(e.target)||(e.preventDefault(),e.stopImmediatePropagation())}function E(e){d.contains(e.target)||(e.preventDefault(),e.stopImmediatePropagation(),"function"==typeof e.target.blur&&e.target.blur(),f&&function(e){if(e.shiftKey)return i(s);i(a)}(f))}function C(e){"Tab"!==e.key&&9!==e.keyCode||function(e){if(S(),e.target.hasAttribute("tabindex")&&Number(e.target.getAttribute("tabindex"))<0)return f=e;e.preventDefault();var t=n.indexOf(e.target);e.shiftKey?e.target===a||-1===n.indexOf(e.target)?i(s):i(n[t-1]):e.target===s?i(a):i(n[t+1])}(e),!1!==p.escapeDeactivates&&function(e){return"Escape"===e.key||"Esc"===e.key||27===e.keyCode}(e)&&h()}function S(){n=r(d),a=n[0],s=n[n.length-1]}}},function(e,t){e.exports=function(e,t){t=t||{};var n,r,o,i=e.ownerDocument||e,a=[],s=[],l=function(e){var t=[];return function(n){if(n===e.documentElement)return!1;var r=e.defaultView.getComputedStyle(n);return!!function n(r,o){if(r===e.documentElement)return!1;for(var i=0,a=t.length;i<a;i++)if(t[i][0]===r)return t[i][1];o=o||e.defaultView.getComputedStyle(r);var s=!1;"none"===o.display?s=!0:r.parentNode&&(s=n(r.parentNode));t.push([r,s]);return s}(n,r)||"hidden"===r.visibility}}(i),u=["input","select","a[href]","textarea","button","[tabindex]"],c=e.querySelectorAll(u.join(","));if(t.includeContainer){var f=Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector;u.some(function(t){return f.call(e,t)})&&(c=Array.prototype.slice.apply(c)).unshift(e)}for(var d=0,p=c.length;d<p;d++)n=c[d],r=parseInt(n.getAttribute("tabindex"),10),(o=isNaN(r)?n.tabIndex:r)<0||"INPUT"===n.tagName&&"hidden"===n.type||n.disabled||l(n,i)||(0===o?a.push(n):s.push({index:d,tabIndex:o,node:n}));var m=s.sort(function(e,t){return e.tabIndex===t.tabIndex?e.index-t.index:e.tabIndex-t.tabIndex}).map(function(e){return e.node});return Array.prototype.push.apply(m,a),m}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=p(n(11)),o=p(n(4)),i=p(n(5)),a=p(n(12)),s=p(n(13)),l=p(n(0)),u=p(n(3)),c=p(n(39)),f=p(n(16)),d=n(2);function p(e){return e&&e.__esModule?e:{default:e}}var m=function(e){function t(e,n){(0,o.default)(this,t);var i=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this,e,n));return i.state={sendLogs:!0,busy:!1,err:null,issueUrl:"",text:"",progress:null},i._unmounted=!1,i._onSubmit=i._onSubmit.bind(i),i._onCancel=i._onCancel.bind(i),i._onTextChange=i._onTextChange.bind(i),i._onIssueUrlChange=i._onIssueUrlChange.bind(i),i._onSendLogsChange=i._onSendLogsChange.bind(i),i._sendProgressCallback=i._sendProgressCallback.bind(i),i}return(0,s.default)(t,e),(0,i.default)(t,[{key:"componentWillUnmount",value:function(){this._unmounted=!0}},{key:"_onCancel",value:function(e){this.props.onFinished(!1)}},{key:"_onSubmit",value:function(e){var t=this,r=(this.state.text.length>0?this.state.text+"\n\n":"")+"Issue: "+(this.state.issueUrl.length>0?this.state.issueUrl:"No issue link given");this.setState({busy:!0,progress:null,err:null}),this._sendProgressCallback((0,d._t)("Preparing to send logs")),n.e(8).then(function(){var e=[n(740)];(function(e){e(c.default.get().bug_report_endpoint_url,{userText:r,sendLogs:!0,progressCallback:t._sendProgressCallback}).then(function(){if(!t._unmounted){t.props.onFinished(!1);var e=u.default.getComponent("dialogs.QuestionDialog");f.default.createTrackedDialog("Bug report sent","",e,{title:(0,d._t)("Logs sent"),description:(0,d._t)("Thank you!"),hasCancelButton:!1})}},function(e){t._unmounted||t.setState({busy:!1,progress:null,err:(0,d._t)("Failed to send logs: ")+""+e.message})})}).apply(null,e)}).catch(n.oe)}},{key:"_onTextChange",value:function(e){this.setState({text:e.target.value})}},{key:"_onIssueUrlChange",value:function(e){this.setState({issueUrl:e.target.value})}},{key:"_onSendLogsChange",value:function(e){this.setState({sendLogs:e.target.checked})}},{key:"_sendProgressCallback",value:function(e){this._unmounted||this.setState({progress:e})}},{key:"render",value:function(){var e=u.default.getComponent("elements.Spinner"),t=u.default.getComponent("views.dialogs.BaseDialog"),n=u.default.getComponent("views.elements.DialogButtons"),r=null;this.state.err&&(r=l.default.createElement("div",{className:"error"},this.state.err));var o=null;return this.state.busy&&(o=l.default.createElement("div",{className:"progress"},l.default.createElement(e,null),this.state.progress," ...")),l.default.createElement(t,{className:"mx_BugReportDialog",onFinished:this._onCancel,title:(0,d._t)("Submit debug logs"),contentId:"mx_Dialog_content"},l.default.createElement("div",{className:"mx_Dialog_content",id:"mx_Dialog_content"},l.default.createElement("p",null,(0,d._t)("Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.")),l.default.createElement("p",null,l.default.createElement("b",null,(0,d._t)("Before submitting logs, you must <a>create a GitHub issue</a> to describe your problem.",{},{a:function(e){return l.default.createElement("a",{target:"_blank",href:"https://github.com/vector-im/riot-web/issues/new"},e)}}))),l.default.createElement("div",{className:"mx_BugReportDialog_field_container"},l.default.createElement("label",{htmlFor:"mx_BugReportDialog_issueUrl",className:"mx_BugReportDialog_field_label"},(0,d._t)("What GitHub issue are these logs for?")),l.default.createElement("input",{id:"mx_BugReportDialog_issueUrl",type:"text",className:"mx_BugReportDialog_field_input",onChange:this._onIssueUrlChange,value:this.state.issueUrl,placeholder:"https://github.com/vector-im/riot-web/issues/..."})),l.default.createElement("div",{className:"mx_BugReportDialog_field_container"},l.default.createElement("label",{htmlFor:"mx_BugReportDialog_notes_label",className:"mx_BugReportDialog_field_label"},(0,d._t)("Notes:")),l.default.createElement("textarea",{className:"mx_BugReportDialog_field_input",rows:5,onChange:this._onTextChange,value:this.state.text})),o,r),l.default.createElement(n,{primaryButton:(0,d._t)("Send logs"),onPrimaryButtonClick:this._onSubmit,focus:!0,onCancel:this._onCancel,disabled:this.state.busy}))}}]),t}(l.default.Component);t.default=m,m.propTypes={onFinished:l.default.PropTypes.func.isRequired},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=p(n(47)),o=p(n(11)),i=p(n(4)),a=p(n(5)),s=p(n(12)),l=p(n(13)),u=p(n(0)),c=p(n(3)),f=p(n(99)),d=n(2);function p(e){return e&&e.__esModule?e:{default:e}}var m=["vector-im/riot-web","matrix-org/matrix-react-sdk","matrix-org/matrix-js-sdk"],h=function(e){function t(e){(0,i.default)(this,t);var n=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this,e));return n.state={},n}return(0,l.default)(t,e),(0,a.default)(t,[{key:"componentDidMount",value:function(){var e=this,t=this.props.newVersion.split("-"),n=this.props.version.split("-");if(null!=t&&null!=n)for(var o=function(o){var i=n[2*o],a=t[2*o];(0,f.default)("https://api.github.com/repos/"+m[o]+"/compare/"+i+"..."+a,function(t,n,i){null!=i&&e.setState((0,r.default)({},m[o],JSON.parse(i).commits))})},i=0;i<m.length;i++)o(i)}},{key:"_elementsForCommit",value:function(e){return u.default.createElement("li",{key:e.sha,className:"mx_ChangelogDialog_li"},u.default.createElement("a",{href:e.html_url,target:"_blank",rel:"noopener"},e.commit.message))}},{key:"render",value:function(){var e=this,t=c.default.getComponent("views.elements.Spinner"),n=c.default.getComponent("dialogs.QuestionDialog"),r=m.map(function(n){return null==e.state[n]?u.default.createElement(t,{key:n}):u.default.createElement("div",{key:n},u.default.createElement("h2",null,n),u.default.createElement("ul",null,e.state[n].map(e._elementsForCommit)))}),o=u.default.createElement("div",{className:"mx_ChangelogDialog_content"},null==this.props.version||null==this.props.newVersion?u.default.createElement("h2",null,(0,d._t)("Unavailable")):r);return u.default.createElement(n,{title:(0,d._t)("Changelog"),description:o,button:(0,d._t)("Update"),onFinished:this.props.onFinished})}}]),t}(u.default.Component);t.default=h,h.propTypes={version:u.default.PropTypes.string.isRequired,newVersion:u.default.PropTypes.string.isRequired,onFinished:u.default.PropTypes.func.isRequired},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=v(n(20)),o=v(n(11)),i=v(n(4)),a=v(n(5)),s=v(n(12)),l=v(n(13)),u=v(n(0)),c=v(n(1)),f=v(n(3)),d=n(2),p=v(n(8)),m=v(n(130)),h=v(n(27)),_=v(n(309)),g=v(n(24));function v(e){return e&&e.__esModule?e:{default:e}}var y=function(e){function t(e){(0,i.default)(this,t);var n=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this,e));return n.onFinished=n.onFinished.bind(n),n.onRoomTileClick=n.onRoomTileClick.bind(n),n.state={tiles:[],profile:{displayName:null,avatarUrl:null},profileError:null},n}return(0,l.default)(t,e),(0,a.default)(t,[{key:"componentWillMount",value:function(){var e=this,t=p.default.get(),n=new m.default(t).getDMRoomsForUserId(this.props.userId),o=f.default.getComponent("rooms.RoomTile"),i=[],a=!0,s=!1,l=void 0;try{for(var c,d=(0,r.default)(n);!(a=(c=d.next()).done);a=!0){var h=c.value,g=t.getRoom(h);if(g){var v="invite"===g.getMyMembership(),y=g.getUnreadNotificationCount("highlight")>0||v;i.push(u.default.createElement(o,{key:g.roomId,room:g,transparent:!0,collapsed:!1,selected:!1,unread:_.default.doesRoomHaveUnreadMessages(g),highlight:y,isInvite:v,onClick:this.onRoomTileClick}))}}}catch(e){s=!0,l=e}finally{try{!a&&d.return&&d.return()}finally{if(s)throw l}}this.setState({tiles:i}),0===i.length&&(this.setState({busyProfile:!0}),p.default.get().getProfileInfo(this.props.userId).done(function(t){var n={displayName:t.displayname,avatarUrl:null};t.avatar_url&&(n.avatarUrl=p.default.get().mxcUrlToHttp(t.avatar_url,48,48,"crop")),e.setState({busyProfile:!1,profile:n})},function(t){console.error("Unable to get profile for user "+e.props.userId+":",t),e.setState({busyProfile:!1,profileError:t})}))}},{key:"onRoomTileClick",value:function(e){this.props.onExistingRoomSelected(e)}},{key:"onFinished",value:function(){this.props.onFinished(!1)}},{key:"render",value:function(){var e="",t=null;if(this.state.tiles.length>0){e=(0,d._t)("Create a new chat or reuse an existing one");var n=(0,g.default)({mx_MemberInfo_createRoom_label:!0,mx_RoomTile_name:!0}),r=u.default.createElement(h.default,{className:"mx_MemberInfo_createRoom",onClick:this.props.onNewDMClick},u.default.createElement("div",{className:"mx_RoomTile_avatar"},u.default.createElement("img",{src:"img/create-big.svg",width:"26",height:"26"})),u.default.createElement("div",{className:n},u.default.createElement("i",null,(0,d._t)("Start new chat"))));t=u.default.createElement("div",{className:"mx_Dialog_content",id:"mx_Dialog_content"},(0,d._t)("You already have existing direct chats with this user:"),u.default.createElement("div",{className:"mx_ChatCreateOrReuseDialog_tiles"},this.state.tiles,r))}else{var o=f.default.getComponent("avatars.BaseAvatar"),i=f.default.getComponent("views.elements.DialogButtons"),a=f.default.getComponent("elements.Spinner");e=(0,d._t)("Start chatting");var s=null;s=this.state.busyProfile?u.default.createElement(a,null):this.state.profileError?u.default.createElement("div",{className:"error",role:"alert"},"Unable to load profile information for ",this.props.userId):u.default.createElement("div",{className:"mx_ChatCreateOrReuseDialog_profile"},u.default.createElement(o,{name:this.state.profile.displayName||this.props.userId,url:this.state.profile.avatarUrl,width:48,height:48}),u.default.createElement("div",{className:"mx_ChatCreateOrReuseDialog_profile_name"},this.state.profile.displayName||this.props.userId)),t=u.default.createElement("div",null,u.default.createElement("div",{className:"mx_Dialog_content",id:"mx_Dialog_content"},u.default.createElement("p",null,(0,d._t)("Click on the button below to start chatting!")),s),u.default.createElement(i,{primaryButton:(0,d._t)("Start Chatting"),onPrimaryButtonClick:this.props.onNewDMClick,focus:!0}))}var l=f.default.getComponent("views.dialogs.BaseDialog");return u.default.createElement(l,{className:"mx_ChatCreateOrReuseDialog",onFinished:this.onFinished,title:e,contentId:"mx_Dialog_content"},t)}}]),t}(u.default.Component);t.default=y,y.propTypes={userId:c.default.string.isRequired,onFinished:c.default.func.isRequired,onNewDMClick:c.default.func.isRequired,onExistingRoomSelected:c.default.func.isRequired},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(n(0)),o=a(n(3)),i=n(2);function a(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"ConfirmRedactDialog",render:function(){var e=o.default.getComponent("views.dialogs.QuestionDialog");return r.default.createElement(e,{onFinished:this.props.onFinished,title:(0,i._t)("Confirm Removal"),description:(0,i._t)("Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change."),button:(0,i._t)("Remove")})}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=u(n(0)),o=u(n(1)),i=n(17),a=u(n(3)),s=n(2),l=n(243);function u(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"ConfirmUserActionDialog",propTypes:{member:o.default.object,groupMember:l.GroupMemberType,matrixClient:o.default.instanceOf(i.MatrixClient),action:o.default.string.isRequired,title:o.default.string.isRequired,askReason:o.default.bool,danger:o.default.bool,onFinished:o.default.func.isRequired},defaultProps:{danger:!1,askReason:!1},componentWillMount:function(){this._reasonField=null},onOk:function(){var e=void 0;this._reasonField&&(e=this._reasonField.value),this.props.onFinished(!0,e)},onCancel:function(){this.props.onFinished(!1)},_collectReasonField:function(e){this._reasonField=e},render:function(){var e=a.default.getComponent("views.dialogs.BaseDialog"),t=a.default.getComponent("views.elements.DialogButtons"),n=a.default.getComponent("views.avatars.MemberAvatar"),o=a.default.getComponent("views.avatars.BaseAvatar"),i=this.props.danger?"danger":"",l=void 0;this.props.askReason&&(l=r.default.createElement("div",null,r.default.createElement("form",{onSubmit:this.onOk},r.default.createElement("input",{className:"mx_ConfirmUserActionDialog_reasonField",ref:this._collectReasonField,placeholder:(0,s._t)("Reason"),autoFocus:!0}))));var u=void 0,c=void 0,f=void 0;if(this.props.member)u=r.default.createElement(n,{member:this.props.member,width:48,height:48}),c=this.props.member.name,f=this.props.member.userId;else{var d=this.props.groupMember.avatarUrl?this.props.matrixClient.mxcUrlToHttp(this.props.groupMember.avatarUrl,48,48):null;c=this.props.groupMember.displayname||this.props.groupMember.userId,f=this.props.groupMember.userId,u=r.default.createElement(o,{name:c,url:d,width:48,height:48})}return r.default.createElement(e,{className:"mx_ConfirmUserActionDialog",onFinished:this.props.onFinished,title:this.props.title,contentId:"mx_Dialog_content"},r.default.createElement("div",{id:"mx_Dialog_content",className:"mx_Dialog_content"},r.default.createElement("div",{className:"mx_ConfirmUserActionDialog_avatar"},u),r.default.createElement("div",{className:"mx_ConfirmUserActionDialog_name"},c),r.default.createElement("div",{className:"mx_ConfirmUserActionDialog_userId"},f)),l,r.default.createElement(t,{primaryButton:this.props.action,onPrimaryButtonClick:this.onOk,primaryButtonClass:i,focus:!this.props.askReason,onCancel:this.onCancel}))}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=u(n(0)),o=u(n(1)),i=u(n(3)),a=u(n(10)),s=n(2),l=u(n(8));function u(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"CreateGroupDialog",propTypes:{onFinished:o.default.func.isRequired},getInitialState:function(){return{groupName:"",groupId:"",groupError:null,creating:!1,createError:null}},_onGroupNameChange:function(e){this.setState({groupName:e.target.value})},_onGroupIdChange:function(e){this.setState({groupId:e.target.value})},_onGroupIdBlur:function(e){this._checkGroupId()},_checkGroupId:function(e){var t=null;return this.state.groupId?/^[a-z0-9=_\-\.\/]*$/.test(this.state.groupId)||(t=(0,s._t)("Community IDs may only contain characters a-z, 0-9, or '=_-./'")):t=(0,s._t)("Community IDs cannot be empty."),this.setState({groupIdError:t,createError:null}),t},_onFormSubmit:function(e){var t=this;if(e.preventDefault(),!this._checkGroupId()){var n={};""!==this.state.groupName&&(n.name=this.state.groupName),this.setState({creating:!0}),l.default.get().createGroup({localpart:this.state.groupId,profile:n}).then(function(e){a.default.dispatch({action:"view_group",group_id:e.group_id,group_is_new:!0}),t.props.onFinished(!0)}).catch(function(e){t.setState({createError:e})}).finally(function(){t.setState({creating:!1})}).done()}},_onCancel:function(){this.props.onFinished(!1)},render:function(){var e=i.default.getComponent("views.dialogs.BaseDialog"),t=i.default.getComponent("elements.Spinner");if(this.state.creating)return r.default.createElement(t,null);var n=void 0;return this.state.createError&&(n=r.default.createElement("div",{className:"error",role:"alert"},r.default.createElement("div",null,(0,s._t)("Something went wrong whilst creating your community")),r.default.createElement("div",null,this.state.createError.message))),r.default.createElement(e,{className:"mx_CreateGroupDialog",onFinished:this.props.onFinished,title:(0,s._t)("Create Community")},r.default.createElement("form",{onSubmit:this._onFormSubmit},r.default.createElement("div",{className:"mx_Dialog_content"},r.default.createElement("div",{className:"mx_CreateGroupDialog_inputRow"},r.default.createElement("div",{className:"mx_CreateGroupDialog_label"},r.default.createElement("label",{htmlFor:"groupname"},(0,s._t)("Community Name"))),r.default.createElement("div",null,r.default.createElement("input",{id:"groupname",className:"mx_CreateGroupDialog_input",autoFocus:!0,size:"64",placeholder:(0,s._t)("Example"),onChange:this._onGroupNameChange,value:this.state.groupName}))),r.default.createElement("div",{className:"mx_CreateGroupDialog_inputRow"},r.default.createElement("div",{className:"mx_CreateGroupDialog_label"},r.default.createElement("label",{htmlFor:"groupid"},(0,s._t)("Community ID"))),r.default.createElement("div",{className:"mx_CreateGroupDialog_input_group"},r.default.createElement("span",{className:"mx_CreateGroupDialog_prefix"},"+"),r.default.createElement("input",{id:"groupid",className:"mx_CreateGroupDialog_input mx_CreateGroupDialog_input_hasPrefixAndSuffix",size:"32",placeholder:(0,s._t)("example"),onChange:this._onGroupIdChange,onBlur:this._onGroupIdBlur,value:this.state.groupId}),r.default.createElement("span",{className:"mx_CreateGroupDialog_suffix"},":",l.default.get().getDomain()))),r.default.createElement("div",{className:"error"},this.state.groupIdError),n),r.default.createElement("div",{className:"mx_Dialog_buttons"},r.default.createElement("input",{type:"submit",value:(0,s._t)("Create"),className:"mx_Dialog_primary"}),r.default.createElement("button",{onClick:this._onCancel},(0,s._t)("Cancel")))))}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=l(n(0)),o=l(n(1)),i=l(n(3)),a=l(n(39)),s=n(2);function l(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"CreateRoomDialog",propTypes:{onFinished:o.default.func.isRequired},componentWillMount:function(){var e=a.default.get();this.defaultNoFederate=!1===e.default_federate},onOk:function(){this.props.onFinished(!0,this.refs.textinput.value,this.refs.checkbox.checked)},onCancel:function(){this.props.onFinished(!1)},render:function(){var e=i.default.getComponent("views.dialogs.BaseDialog"),t=i.default.getComponent("views.elements.DialogButtons");return r.default.createElement(e,{className:"mx_CreateRoomDialog",onFinished:this.props.onFinished,title:(0,s._t)("Create Room")},r.default.createElement("form",{onSubmit:this.onOk},r.default.createElement("div",{className:"mx_Dialog_content"},r.default.createElement("div",{className:"mx_CreateRoomDialog_label"},r.default.createElement("label",{htmlFor:"textinput"}," ",(0,s._t)("Room name (optional)")," ")),r.default.createElement("div",{className:"mx_CreateRoomDialog_input_container"},r.default.createElement("input",{id:"textinput",ref:"textinput",className:"mx_CreateRoomDialog_input",autoFocus:!0})),r.default.createElement("br",null),r.default.createElement("details",{className:"mx_CreateRoomDialog_details"},r.default.createElement("summary",{className:"mx_CreateRoomDialog_details_summary"},(0,s._t)("Advanced options")),r.default.createElement("div",null,r.default.createElement("input",{type:"checkbox",id:"checkbox",ref:"checkbox",defaultChecked:this.defaultNoFederate}),r.default.createElement("label",{htmlFor:"checkbox"},(0,s._t)("Block users on other matrix homeservers from joining this room"),r.default.createElement("br",null),"(",(0,s._t)("This setting cannot be changed later!"),")"))))),r.default.createElement(t,{primaryButton:(0,s._t)("Create Room"),onPrimaryButtonClick:this.onOk,onCancel:this.onCancel}))}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=v(n(19)),o=n(9),i=v(n(11)),a=v(n(4)),s=v(n(5)),l=v(n(12)),u=v(n(13)),c=v(n(0)),f=v(n(1)),d=v(n(3)),p=v(n(90)),m=v(n(8)),h=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(658)),_=v(n(239)),g=n(2);function v(e){return e&&e.__esModule?e:{default:e}}var y=function(e){function t(e,n){(0,a.default)(this,t);var r=(0,l.default)(this,(t.__proto__||(0,i.default)(t)).call(this,e,n));r._passwordField=null,r._onOk=r._onOk.bind(r),r._onCancel=r._onCancel.bind(r),r._onPasswordFieldChange=r._onPasswordFieldChange.bind(r),r._onEraseFieldChange=r._onEraseFieldChange.bind(r);var o=m.default.get().getAccountData("im.riot.account_deactivation_preferences"),s=o&&o.getContent()&&o.getContent().shouldErase||!1;return r.state={confirmButtonEnabled:!1,busy:!1,shouldErase:s,errStr:null},r}return(0,u.default)(t,e),(0,s.default)(t,[{key:"_onPasswordFieldChange",value:function(e){this.setState({confirmButtonEnabled:Boolean(e.target.value)})}},{key:"_onEraseFieldChange",value:function(e){this.setState({shouldErase:e.target.checked})}},{key:"_onOk",value:function(){var e=(0,o.coroutine)(r.default.mark(function e(){var t,n;return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this.setState({busy:!0}),e.prev=1,e.next=4,(0,o.resolve)(m.default.get().setAccountData("im.riot.account_deactivation_preferences",{shouldErase:this.state.shouldErase}));case 4:e.next=10;break;case 6:return e.prev=6,e.t0=e.catch(1),this.setState({busy:!1,errStr:(0,g._t)("Failed to indicate account erasure")}),e.abrupt("return");case 10:return e.prev=10,t={type:"m.login.password",user:m.default.get().credentials.userId,password:this._passwordField.value},e.next=14,(0,o.resolve)(m.default.get().deactivateAccount(t,this.state.shouldErase));case 14:e.next=22;break;case 16:return e.prev=16,e.t1=e.catch(10),n=(0,g._t)("Unknown error"),401!=e.t1.httpStatus&&403!=e.t1.httpStatus||(n=(0,g._t)("Incorrect password"),(0,_.default)(this._passwordField,"callout.shake",300)),this.setState({busy:!1,errStr:n}),e.abrupt("return");case 22:p.default.trackEvent("Account","Deactivate Account"),h.onLoggedOut(),this.props.onFinished(!1);case 25:case"end":return e.stop()}},e,this,[[1,6],[10,16]])}));return function(){return e.apply(this,arguments)}}()},{key:"_onCancel",value:function(){this.props.onFinished(!1)}},{key:"render",value:function(){var e=this,t=d.default.getComponent("views.dialogs.BaseDialog"),n=d.default.getComponent("elements.Spinner"),r="",o=null;this.state.errStr&&(o=c.default.createElement("div",{className:"error"},this.state.errStr),r="error");var i=this.state.busy?c.default.createElement(n,null):(0,g._t)("Deactivate Account"),a=this.state.confirmButtonEnabled&&!this.state.busy,s=null;return this.state.busy||(s=c.default.createElement("button",{onClick:this._onCancel,autoFocus:!0},(0,g._t)("Cancel"))),c.default.createElement(t,{className:"mx_DeactivateAccountDialog",onFinished:this.props.onFinished,onEnterPressed:this.onOk,titleClass:"danger",title:(0,g._t)("Deactivate Account")},c.default.createElement("div",{className:"mx_Dialog_content"},c.default.createElement("p",null,(0,g._t)("This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. <b>This action is irreversible.</b>",{},{b:function(e){return c.default.createElement("b",null," ",e," ")}})),c.default.createElement("p",null,(0,g._t)("Deactivating your account <b>does not by default cause us to forget messages you have sent.</b> If you would like us to forget your messages, please tick the box below.",{},{b:function(e){return c.default.createElement("b",null," ",e," ")}})),c.default.createElement("p",null,(0,g._t)("Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.")),c.default.createElement("div",{className:"mx_DeactivateAccountDialog_input_section"},c.default.createElement("p",null,c.default.createElement("label",{htmlFor:"mx_DeactivateAccountDialog_erase_account_input"},c.default.createElement("input",{id:"mx_DeactivateAccountDialog_erase_account_input",type:"checkbox",checked:this.state.shouldErase,onChange:this._onEraseFieldChange}),(0,g._t)("Please forget all messages I have sent when my account is deactivated (<b>Warning:</b> this will cause future users to see an incomplete view of conversations)",{},{b:function(e){return c.default.createElement("b",null,e)}}))),c.default.createElement("p",null,(0,g._t)("To continue, please enter your password:")),c.default.createElement("input",{type:"password",placeholder:(0,g._t)("password"),onChange:this._onPasswordFieldChange,ref:function(t){e._passwordField=t},className:r})),o),c.default.createElement("div",{className:"mx_Dialog_buttons"},c.default.createElement("button",{className:"mx_Dialog_primary danger",onClick:this._onOk,disabled:!a},i),s))}}]),t}(c.default.Component);t.default=y,y.propTypes={onFinished:f.default.func.isRequired},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=c;var r=u(n(0)),o=u(n(1)),i=u(n(8)),a=u(n(3)),s=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(250)),l=n(2);function u(e){return e&&e.__esModule?e:{default:e}}function c(e){var t=a.default.getComponent("dialogs.QuestionDialog"),n=s.formatCryptoKey(e.device.getFingerprint()),o=r.default.createElement("div",null,r.default.createElement("p",null,(0,l._t)("To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:")),r.default.createElement("div",{className:"mx_UserSettings_cryptoSection"},r.default.createElement("ul",null,r.default.createElement("li",null,r.default.createElement("label",null,(0,l._t)("Device name"),":")," ",r.default.createElement("span",null,e.device.getDisplayName())),r.default.createElement("li",null,r.default.createElement("label",null,(0,l._t)("Device ID"),":")," ",r.default.createElement("span",null,r.default.createElement("code",null,e.device.deviceId))),r.default.createElement("li",null,r.default.createElement("label",null,(0,l._t)("Device key"),":")," ",r.default.createElement("span",null,r.default.createElement("code",null,r.default.createElement("b",null,n)))))),r.default.createElement("p",null,(0,l._t)("If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.")),r.default.createElement("p",null,(0,l._t)("In future this verification process will be more sophisticated.")));return r.default.createElement(t,{title:(0,l._t)("Verify device"),description:o,button:(0,l._t)("I verify that the keys match"),onFinished:function(t){t&&i.default.get().setDeviceVerified(e.userId,e.device.deviceId,!0),e.onFinished(t)}})}c.propTypes={userId:o.default.string.isRequired,device:o.default.object.isRequired,onFinished:o.default.func.isRequired},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=b(n(14)),o=b(n(31)),i=b(n(19)),a=n(9),s=b(n(40)),l=b(n(47)),u=b(n(5)),c=b(n(11)),f=b(n(4)),d=b(n(12)),p=b(n(13)),m=b(n(0)),h=b(n(1)),_=b(n(3)),g=b(n(455)),v=n(2),y=b(n(8));function b(e){return e&&e.__esModule?e:{default:e}}var E=function(e){function t(){return(0,f.default)(this,t),(0,d.default)(this,(t.__proto__||(0,c.default)(t)).apply(this,arguments))}return(0,p.default)(t,e),t}(m.default.Component);E.contextTypes={roomId:h.default.string.isRequired};var C=function(e){function t(e,n){(0,f.default)(this,t);var r=(0,d.default)(this,(t.__proto__||(0,c.default)(t)).call(this,e,n));return r._onChange=r._onChange.bind(r),r.onBack=r.onBack.bind(r),r}return(0,p.default)(t,e),(0,u.default)(t,[{key:"onBack",value:function(){this.state.message?this.setState({message:null}):this.props.onBack()}},{key:"_onChange",value:function(e){this.setState((0,l.default)({},e.target.id,"checkbox"===e.target.type?e.target.checked:e.target.value))}},{key:"_buttons",value:function(){return m.default.createElement("div",{className:"mx_Dialog_buttons"},m.default.createElement("button",{onClick:this.onBack},(0,v._t)("Back")),!this.state.message&&m.default.createElement("button",{onClick:this._send},(0,v._t)("Send")))}},{key:"textInput",value:function(e,t){return m.default.createElement("div",{className:"mx_DevTools_inputRow"},m.default.createElement("div",{className:"mx_DevTools_inputLabelCell"},m.default.createElement("label",{htmlFor:e},t)),m.default.createElement("div",{className:"mx_DevTools_inputCell"},m.default.createElement("input",{id:e,className:"mx_TextInputDialog_input",onChange:this._onChange,value:this.state[e],size:"32",autoFocus:!0})))}}]),t}(E),S=function(e){function t(e,n){(0,f.default)(this,t);var r=(0,d.default)(this,(t.__proto__||(0,c.default)(t)).call(this,e,n));r._send=r._send.bind(r);var o=(0,s.default)({eventType:"",stateKey:"",evContent:"{\n\n}"},r.props.inputs),i=o.eventType,a=o.stateKey,l=o.evContent;return r.state={isStateEvent:Boolean(r.props.forceStateEvent),eventType:i,stateKey:a,evContent:l},r}return(0,p.default)(t,e),(0,u.default)(t,null,[{key:"getLabel",value:function(){return(0,v._t)("Send Custom Event")}}]),(0,u.default)(t,[{key:"send",value:function(e){var t=y.default.get();return this.state.isStateEvent?t.sendStateEvent(this.context.roomId,this.state.eventType,e,this.state.stateKey):t.sendEvent(this.context.roomId,this.state.eventType,e)}},{key:"_send",value:function(){var e=(0,a.coroutine)(i.default.mark(function e(){var t,n;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(""!==this.state.eventType){e.next=3;break}return this.setState({message:(0,v._t)("You must specify an event type!")}),e.abrupt("return");case 3:return t=void 0,e.prev=4,n=JSON.parse(this.state.evContent),e.next=8,(0,a.resolve)(this.send(n));case 8:t=(0,v._t)("Event sent!"),e.next=14;break;case 11:e.prev=11,e.t0=e.catch(4),t=(0,v._t)("Failed to send custom event.")+" ("+e.t0.toString()+")";case 14:this.setState({message:t});case 15:case"end":return e.stop()}},e,this,[[4,11]])}));return function(){return e.apply(this,arguments)}}()},{key:"render",value:function(){return this.state.message?m.default.createElement("div",null,m.default.createElement("div",{className:"mx_Dialog_content"},this.state.message),this._buttons()):m.default.createElement("div",null,m.default.createElement("div",{className:"mx_DevTools_content"},this.textInput("eventType",(0,v._t)("Event Type")),this.state.isStateEvent&&this.textInput("stateKey",(0,v._t)("State Key")),m.default.createElement("br",null),m.default.createElement("div",{className:"mx_DevTools_inputLabelCell"},m.default.createElement("label",{htmlFor:"evContent"}," ",(0,v._t)("Event Content")," ")),m.default.createElement("div",null,m.default.createElement("textarea",{id:"evContent",onChange:this._onChange,value:this.state.evContent,className:"mx_DevTools_textarea"}))),m.default.createElement("div",{className:"mx_Dialog_buttons"},m.default.createElement("button",{onClick:this.onBack},(0,v._t)("Back")),!this.state.message&&m.default.createElement("button",{onClick:this._send},(0,v._t)("Send")),!this.state.message&&!this.props.forceStateEvent&&m.default.createElement("div",{style:{float:"right"}},m.default.createElement("input",{id:"isStateEvent",className:"mx_DevTools_tgl mx_DevTools_tgl-flip",type:"checkbox",onChange:this._onChange,checked:this.state.isStateEvent}),m.default.createElement("label",{className:"mx_DevTools_tgl-btn","data-tg-off":"Event","data-tg-on":"State Event",htmlFor:"isStateEvent"}))))}}]),t}(C);S.propTypes={onBack:h.default.func.isRequired,forceStateEvent:h.default.bool,inputs:h.default.object};var D=function(e){function t(e,n){(0,f.default)(this,t);var r=(0,d.default)(this,(t.__proto__||(0,c.default)(t)).call(this,e,n));r._send=r._send.bind(r);var o=(0,s.default)({eventType:"",evContent:"{\n\n}"},r.props.inputs),i=o.eventType,a=o.evContent;return r.state={isRoomAccountData:Boolean(r.props.isRoomAccountData),eventType:i,evContent:a},r}return(0,p.default)(t,e),(0,u.default)(t,null,[{key:"getLabel",value:function(){return(0,v._t)("Send Account Data")}}]),(0,u.default)(t,[{key:"send",value:function(e){var t=y.default.get();return this.state.isRoomAccountData?t.setRoomAccountData(this.context.roomId,this.state.eventType,e):t.setAccountData(this.state.eventType,e)}},{key:"_send",value:function(){var e=(0,a.coroutine)(i.default.mark(function e(){var t,n;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(""!==this.state.eventType){e.next=3;break}return this.setState({message:(0,v._t)("You must specify an event type!")}),e.abrupt("return");case 3:return t=void 0,e.prev=4,n=JSON.parse(this.state.evContent),e.next=8,(0,a.resolve)(this.send(n));case 8:t=(0,v._t)("Event sent!"),e.next=14;break;case 11:e.prev=11,e.t0=e.catch(4),t=(0,v._t)("Failed to send custom event.")+" ("+e.t0.toString()+")";case 14:this.setState({message:t});case 15:case"end":return e.stop()}},e,this,[[4,11]])}));return function(){return e.apply(this,arguments)}}()},{key:"render",value:function(){return this.state.message?m.default.createElement("div",null,m.default.createElement("div",{className:"mx_Dialog_content"},this.state.message),this._buttons()):m.default.createElement("div",null,m.default.createElement("div",{className:"mx_DevTools_content"},this.textInput("eventType",(0,v._t)("Event Type")),m.default.createElement("br",null),m.default.createElement("div",{className:"mx_DevTools_inputLabelCell"},m.default.createElement("label",{htmlFor:"evContent"}," ",(0,v._t)("Event Content")," ")),m.default.createElement("div",null,m.default.createElement("textarea",{id:"evContent",onChange:this._onChange,value:this.state.evContent,className:"mx_DevTools_textarea"}))),m.default.createElement("div",{className:"mx_Dialog_buttons"},m.default.createElement("button",{onClick:this.onBack},(0,v._t)("Back")),!this.state.message&&m.default.createElement("button",{onClick:this._send},(0,v._t)("Send")),!this.state.message&&m.default.createElement("div",{style:{float:"right"}},m.default.createElement("input",{id:"isRoomAccountData",className:"mx_DevTools_tgl mx_DevTools_tgl-flip",type:"checkbox",onChange:this._onChange,checked:this.state.isRoomAccountData,disabled:this.props.forceMode}),m.default.createElement("label",{className:"mx_DevTools_tgl-btn","data-tg-off":"Account Data","data-tg-on":"Room Data",htmlFor:"isRoomAccountData"}))))}}]),t}(C);D.propTypes={isRoomAccountData:h.default.bool,forceMode:h.default.bool,inputs:h.default.object};var w=20,T=50,x=function(e){function t(e,n){(0,f.default)(this,t);var r=(0,d.default)(this,(t.__proto__||(0,c.default)(t)).call(this,e,n));return r.showAll=function(){r.setState({truncateAt:r.state.truncateAt+T})},r.createOverflowElement=function(e,t){return m.default.createElement("button",{className:"mx_DevTools_RoomStateExplorer_button",onClick:r.showAll},(0,v._t)("and %(count)s others...",{count:e}))},r.onQuery=function(e){r.props.onChange&&r.props.onChange(e.target.value)},r.getChildren=function(e,t){return r.state.filteredChildren.slice(e,t)},r.getChildCount=function(){return r.state.filteredChildren.length},r.state={filteredChildren:t.filterChildren(r.props.children,r.props.query),truncateAt:w},r}return(0,p.default)(t,e),(0,u.default)(t,null,[{key:"filterChildren",value:function(e,t){if(!t)return e;var n=t.toLowerCase();return e.filter(function(e){return e.key.toLowerCase().includes(n)})}}]),(0,u.default)(t,[{key:"componentWillReceiveProps",value:function(e){this.props.children===e.children&&this.props.query===e.query||this.setState({filteredChildren:t.filterChildren(e.children,e.query),truncateAt:w})}},{key:"render",value:function(){var e=_.default.getComponent("elements.TruncatedList");return m.default.createElement("div",null,m.default.createElement("input",{size:"64",autoFocus:!0,onChange:this.onQuery,value:this.props.query,placeholder:(0,v._t)("Filter results"),className:"mx_TextInputDialog_input mx_DevTools_RoomStateExplorer_query",key:this.props.children[0]?this.props.children[0].key:""}),m.default.createElement(e,{getChildren:this.getChildren,getChildCount:this.getChildCount,truncateAt:this.state.truncateAt,createOverflowElement:this.createOverflowElement}))}}]),t}(m.default.Component);x.propTypes={children:h.default.any,query:h.default.string,onChange:h.default.func};var R=function(e){function t(e,n){(0,f.default)(this,t);var r=(0,d.default)(this,(t.__proto__||(0,c.default)(t)).call(this,e,n)),o=y.default.get().getRoom(r.context.roomId);return r.roomStateEvents=o.currentState.events,r.onBack=r.onBack.bind(r),r.editEv=r.editEv.bind(r),r.onQueryEventType=r.onQueryEventType.bind(r),r.onQueryStateKey=r.onQueryStateKey.bind(r),r.state={eventType:null,event:null,editing:!1,queryEventType:"",queryStateKey:""},r}return(0,p.default)(t,e),(0,u.default)(t,null,[{key:"getLabel",value:function(){return(0,v._t)("Explore Room State")}}]),(0,u.default)(t,[{key:"browseEventType",value:function(e){var t=this;return function(){t.setState({eventType:e})}}},{key:"onViewSourceClick",value:function(e){var t=this;return function(){t.setState({event:e})}}},{key:"onBack",value:function(){this.state.editing?this.setState({editing:!1}):this.state.event?this.setState({event:null}):this.state.eventType?this.setState({eventType:null}):this.props.onBack()}},{key:"editEv",value:function(){this.setState({editing:!0})}},{key:"onQueryEventType",value:function(e){this.setState({queryEventType:e})}},{key:"onQueryStateKey",value:function(e){this.setState({queryStateKey:e})}},{key:"render",value:function(){var e=this;if(this.state.event)return this.state.editing?m.default.createElement(S,{forceStateEvent:!0,onBack:this.onBack,inputs:{eventType:this.state.event.getType(),evContent:(0,o.default)(this.state.event.getContent(),null,"\t"),stateKey:this.state.event.getStateKey()}}):m.default.createElement("div",{className:"mx_ViewSource"},m.default.createElement("div",{className:"mx_Dialog_content"},m.default.createElement(g.default,{className:"json"},(0,o.default)(this.state.event.event,null,2))),m.default.createElement("div",{className:"mx_Dialog_buttons"},m.default.createElement("button",{onClick:this.onBack},(0,v._t)("Back")),m.default.createElement("button",{onClick:this.editEv},(0,v._t)("Edit"))));var t=null,n="mx_DevTools_RoomStateExplorer_button";if(null===this.state.eventType)t=m.default.createElement(x,{query:this.state.queryEventType,onChange:this.onQueryEventType},(0,r.default)(this.roomStateEvents).map(function(t){var o=e.roomStateEvents[t],i=(0,r.default)(o),a=void 0;return a=1===i.length&&""===i[0]?e.onViewSourceClick(o[i[0]]):e.browseEventType(t),m.default.createElement("button",{className:n,key:t,onClick:a},t)}));else{var i=this.roomStateEvents[this.state.eventType];t=m.default.createElement(x,{query:this.state.queryStateKey,onChange:this.onQueryStateKey},(0,r.default)(i).map(function(t){var r=i[t];return m.default.createElement("button",{className:n,key:t,onClick:e.onViewSourceClick(r)},t)}))}return m.default.createElement("div",null,m.default.createElement("div",{className:"mx_Dialog_content"},t),m.default.createElement("div",{className:"mx_Dialog_buttons"},m.default.createElement("button",{onClick:this.onBack},(0,v._t)("Back"))))}}]),t}(E);R.propTypes={onBack:h.default.func.isRequired};var k=function(e){function t(e,n){(0,f.default)(this,t);var r=(0,d.default)(this,(t.__proto__||(0,c.default)(t)).call(this,e,n));return r.onBack=r.onBack.bind(r),r.editEv=r.editEv.bind(r),r._onChange=r._onChange.bind(r),r.onQueryEventType=r.onQueryEventType.bind(r),r.state={isRoomAccountData:!1,event:null,editing:!1,queryEventType:""},r}return(0,p.default)(t,e),(0,u.default)(t,null,[{key:"getLabel",value:function(){return(0,v._t)("Explore Account Data")}}]),(0,u.default)(t,[{key:"getData",value:function(){var e=y.default.get();return this.state.isRoomAccountData?e.getRoom(this.context.roomId).accountData:e.store.accountData}},{key:"onViewSourceClick",value:function(e){var t=this;return function(){t.setState({event:e})}}},{key:"onBack",value:function(){this.state.editing?this.setState({editing:!1}):this.state.event?this.setState({event:null}):this.props.onBack()}},{key:"_onChange",value:function(e){this.setState((0,l.default)({},e.target.id,"checkbox"===e.target.type?e.target.checked:e.target.value))}},{key:"editEv",value:function(){this.setState({editing:!0})}},{key:"onQueryEventType",value:function(e){this.setState({queryEventType:e})}},{key:"render",value:function(){var e=this;if(this.state.event)return this.state.editing?m.default.createElement(D,{isRoomAccountData:this.state.isRoomAccountData,onBack:this.onBack,inputs:{eventType:this.state.event.getType(),evContent:(0,o.default)(this.state.event.getContent(),null,"\t")},forceMode:!0}):m.default.createElement("div",{className:"mx_ViewSource"},m.default.createElement("div",{className:"mx_DevTools_content"},m.default.createElement(g.default,{className:"json"},(0,o.default)(this.state.event.event,null,2))),m.default.createElement("div",{className:"mx_Dialog_buttons"},m.default.createElement("button",{onClick:this.onBack},(0,v._t)("Back")),m.default.createElement("button",{onClick:this.editEv},(0,v._t)("Edit"))));var t=[],n=this.getData();return(0,r.default)(n).forEach(function(r){var o=n[r];t.push(m.default.createElement("button",{className:"mx_DevTools_RoomStateExplorer_button",key:r,onClick:e.onViewSourceClick(o)},r))}),m.default.createElement("div",null,m.default.createElement("div",{className:"mx_Dialog_content"},m.default.createElement(x,{query:this.state.queryEventType,onChange:this.onQueryEventType},t)),m.default.createElement("div",{className:"mx_Dialog_buttons"},m.default.createElement("button",{onClick:this.onBack},(0,v._t)("Back")),!this.state.message&&m.default.createElement("div",{style:{float:"right"}},m.default.createElement("input",{id:"isRoomAccountData",className:"mx_DevTools_tgl mx_DevTools_tgl-flip",type:"checkbox",onChange:this._onChange,checked:this.state.isRoomAccountData}),m.default.createElement("label",{className:"mx_DevTools_tgl-btn","data-tg-off":"Account Data","data-tg-on":"Room Data",htmlFor:"isRoomAccountData"}))))}}]),t}(E);k.propTypes={onBack:h.default.func.isRequired};var N=[S,R,D,k],I=function(e){function t(e,n){(0,f.default)(this,t);var r=(0,d.default)(this,(t.__proto__||(0,c.default)(t)).call(this,e,n));return r.onBack=r.onBack.bind(r),r.onCancel=r.onCancel.bind(r),r.state={mode:null},r}return(0,p.default)(t,e),(0,u.default)(t,[{key:"componentWillUnmount",value:function(){this._unmounted=!0}},{key:"getChildContext",value:function(){return{roomId:this.props.roomId}}},{key:"_setMode",value:function(e){var t=this;return function(){t.setState({mode:e})}}},{key:"onBack",value:function(){this.prevMode?(this.setState({mode:this.prevMode}),this.prevMode=null):this.setState({mode:null})}},{key:"onCancel",value:function(){this.props.onFinished(!1)}},{key:"render",value:function(){var e=this,t=void 0;if(this.state.mode)t=m.default.createElement("div",{className:"mx_DevTools_dialog"},m.default.createElement("div",{className:"mx_DevTools_label_left"},this.state.mode.getLabel()),m.default.createElement("div",{className:"mx_DevTools_label_right"},"Room ID: ",this.props.roomId),m.default.createElement("div",{className:"mx_DevTools_label_bottom"}),m.default.createElement(this.state.mode,{onBack:this.onBack}));else{t=m.default.createElement("div",null,m.default.createElement("div",{className:"mx_DevTools_dialog"},m.default.createElement("div",{className:"mx_DevTools_label_left"},(0,v._t)("Toolbox")),m.default.createElement("div",{className:"mx_DevTools_label_right"},"Room ID: ",this.props.roomId),m.default.createElement("div",{className:"mx_DevTools_label_bottom"}),m.default.createElement("div",{className:"mx_Dialog_content"},N.map(function(t){var n=t.getLabel(),r=e._setMode(t);return m.default.createElement("button",{className:"mx_DevTools_RoomStateExplorer_button",key:n,onClick:r},n)}))),m.default.createElement("div",{className:"mx_Dialog_buttons"},m.default.createElement("button",{onClick:this.onCancel},(0,v._t)("Cancel"))))}var n=_.default.getComponent("views.dialogs.BaseDialog");return m.default.createElement(n,{className:"mx_QuestionDialog",onFinished:this.props.onFinished,title:(0,v._t)("Developer Tools")},t)}}]),t}(m.default.Component);I.childContextTypes={roomId:h.default.string.isRequired},I.propTypes={roomId:h.default.string.isRequired,onFinished:h.default.func.isRequired},t.default=I,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(0)),o=s(n(1)),i=s(n(3)),a=n(2);function s(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"ErrorDialog",propTypes:{title:o.default.string,description:o.default.oneOfType([o.default.element,o.default.string]),button:o.default.string,focus:o.default.bool,onFinished:o.default.func.isRequired},getDefaultProps:function(){return{focus:!0,title:null,description:null,button:null}},render:function(){var e=i.default.getComponent("views.dialogs.BaseDialog");return r.default.createElement(e,{className:"mx_ErrorDialog",onFinished:this.props.onFinished,title:this.props.title||(0,a._t)("Error"),contentId:"mx_Dialog_content"},r.default.createElement("div",{className:"mx_Dialog_content",id:"mx_Dialog_content"},this.props.description||(0,a._t)("An error has occurred.")),r.default.createElement("div",{className:"mx_Dialog_buttons"},r.default.createElement("button",{className:"mx_Dialog_primary",onClick:this.props.onFinished,autoFocus:this.props.focus},this.props.button||(0,a._t)("OK"))))}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=l(n(0)),o=l(n(1)),i=l(n(3)),a=n(2),s=l(n(27));function l(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"InteractiveAuthDialog",propTypes:{matrixClient:o.default.object.isRequired,authData:o.default.shape({flows:o.default.array,params:o.default.object,session:o.default.string}),makeRequest:o.default.func.isRequired,onFinished:o.default.func.isRequired,title:o.default.string},getInitialState:function(){return{authError:null}},_onAuthFinished:function(e,t){e?this.props.onFinished(!0,t):this.setState({authError:t})},_onDismissClick:function(){this.props.onFinished(!1)},render:function(){var e=i.default.getComponent("structures.InteractiveAuth"),t=i.default.getComponent("views.dialogs.BaseDialog"),n=void 0;return n=this.state.authError?r.default.createElement("div",{id:"mx_Dialog_content"},r.default.createElement("div",{role:"alert"},this.state.authError.message||this.state.authError.toString()),r.default.createElement("br",null),r.default.createElement(s.default,{onClick:this._onDismissClick,className:"mx_UserSettings_button",autoFocus:"true"},(0,a._t)("Dismiss"))):r.default.createElement("div",{id:"mx_Dialog_content"},r.default.createElement(e,{ref:this._collectInteractiveAuth,matrixClient:this.props.matrixClient,authData:this.props.authData,makeRequest:this.props.makeRequest,onAuthFinished:this._onAuthFinished})),r.default.createElement(t,{className:"mx_InteractiveAuthDialog",onFinished:this.props.onFinished,title:this.state.authError?"Error":this.props.title||(0,a._t)("Authentication"),contentId:"mx_Dialog_content"},n)}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=l(n(16)),o=l(n(0)),i=l(n(1)),a=l(n(3)),s=n(2);function l(e){return e&&e.__esModule?e:{default:e}}t.default=o.default.createClass({displayName:"KeyShareDialog",propTypes:{matrixClient:i.default.object.isRequired,userId:i.default.string.isRequired,deviceId:i.default.string.isRequired,onFinished:i.default.func.isRequired},getInitialState:function(){return{deviceInfo:null,wasNewDevice:!1}},componentDidMount:function(){var e=this;this._unmounted=!1;var t=this.props.userId,n=this.props.deviceId;this.props.matrixClient.downloadKeys([t],!1).then(function(r){if(!e._unmounted){var o=r[t][n];if(!o)return console.warn("No details found for device "+t+":"+n),void e.props.onFinished(!1);var i=!o.isKnown();e.setState({deviceInfo:o,wasNewDevice:i}),i&&e.props.matrixClient.setDeviceKnown(t,n,!0)}}).done()},componentWillUnmount:function(){this._unmounted=!0},_onVerifyClicked:function(){var e=this,t=a.default.getComponent("views.dialogs.DeviceVerifyDialog");console.log("KeyShareDialog: Starting verify dialog"),r.default.createTrackedDialog("Key Share","Starting dialog",t,{userId:this.props.userId,device:this.state.deviceInfo,onFinished:function(t){t&&e.props.onFinished(!0)}})},_onShareClicked:function(){console.log("KeyShareDialog: User clicked 'share'"),this.props.onFinished(!0)},_onIgnoreClicked:function(){console.log("KeyShareDialog: User clicked 'ignore'"),this.props.onFinished(!1)},_renderContent:function(){var e=this.state.deviceInfo.getDisplayName()||this.state.deviceInfo.deviceId,t=void 0;return t=this.state.wasNewDevice?(0,s._td)("You added a new device '%(displayName)s', which is requesting encryption keys."):(0,s._td)("Your unverified device '%(displayName)s' is requesting encryption keys."),t=(0,s._t)(t,{displayName:e}),o.default.createElement("div",{id:"mx_Dialog_content"},o.default.createElement("p",null,t),o.default.createElement("div",{className:"mx_Dialog_buttons"},o.default.createElement("button",{onClick:this._onVerifyClicked,autoFocus:"true"},(0,s._t)("Start verification")),o.default.createElement("button",{onClick:this._onShareClicked},(0,s._t)("Share without verifying")),o.default.createElement("button",{onClick:this._onIgnoreClicked},(0,s._t)("Ignore request"))))},render:function(){var e=a.default.getComponent("views.dialogs.BaseDialog"),t=a.default.getComponent("views.elements.Spinner"),n=void 0;return n=this.state.deviceInfo?this._renderContent():o.default.createElement("div",{id:"mx_Dialog_content"},o.default.createElement("p",null,(0,s._t)("Loading device info...")),o.default.createElement(t,null)),o.default.createElement(e,{className:"mx_KeyShareRequestDialog",onFinished:this.props.onFinished,title:(0,s._t)("Encryption key request"),contentId:"mx_Dialog_content"},n)}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(n(0)),o=a(n(456)),i=n(2);function a(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=(0,i._t)("You've previously used Riot on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, Riot needs to resync your account.",{host:e.host}),n=(0,i._t)("If the other version of Riot is still open in another tab, please close it as using Riot on the same host with both lazy loading enabled and disabled simultaneously will cause issues.");return r.default.createElement(o.default,{hasCancelButton:!1,title:(0,i._t)("Incompatible local cache"),description:r.default.createElement("div",null,r.default.createElement("p",null,t),r.default.createElement("p",null,n)),button:(0,i._t)("Clear cache and resync"),onFinished:e.onFinished})},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(n(0)),o=a(n(456)),i=n(2);function a(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=(0,i._t)("Riot now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!");return r.default.createElement(o.default,{hasCancelButton:!1,title:(0,i._t)("Updating Riot"),description:r.default.createElement("div",null,t),button:(0,i._t)("OK"),onFinished:e.onFinished})},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(47)),o=c(n(0)),i=c(n(1)),a=c(n(3)),s=c(n(8)),l=c(n(16)),u=n(2);function c(e){return e&&e.__esModule?e:{default:e}}t.default=o.default.createClass({displayName:"RoomUpgradeDialog",propTypes:{room:i.default.object.isRequired,onFinished:i.default.func.isRequired},componentWillMount:function(){this._targetVersion=this.props.room.shouldUpgradeToVersion()},getInitialState:function(){return{busy:!1}},_onCancelClick:function(){this.props.onFinished(!1)},_onUpgradeClick:function(){var e=this;this.setState({busy:!0}),s.default.get().upgradeRoom(this.props.room.roomId,this._targetVersion).catch(function(e){var t=a.default.getComponent("dialogs.ErrorDialog");l.default.createTrackedDialog("Failed to upgrade room","",t,{title:(0,u._t)("Failed to upgrade room"),description:e&&e.message?e.message:(0,u._t)("The room upgrade could not be completed")})}).finally(function(){e.setState({busy:!1})})},render:function(){var e,t=a.default.getComponent("views.dialogs.BaseDialog"),n=a.default.getComponent("views.elements.DialogButtons"),i=a.default.getComponent("views.elements.Spinner"),s=void 0;return s=this.state.busy?o.default.createElement(i,null):o.default.createElement(n,{primaryButton:(0,u._t)("Upgrade this room to version %(version)s",{version:this._targetVersion}),primaryButtonClass:"danger",hasCancel:!0,onPrimaryButtonClick:this._onUpgradeClick,focus:this.props.focus,onCancel:this._onCancelClick}),o.default.createElement(t,(e={className:"mx_RoomUpgradeDialog",onFinished:this.onCancelled,title:(0,u._t)("Upgrade Room Version"),contentId:"mx_Dialog_content"},(0,r.default)(e,"onFinished",this.props.onFinished),(0,r.default)(e,"hasCancel",!0),e),o.default.createElement("p",null,(0,u._t)("Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:")),o.default.createElement("ol",null,o.default.createElement("li",null,(0,u._t)("Create a new room with the same name, description and avatar")),o.default.createElement("li",null,(0,u._t)("Update any local room aliases to point to the new room")),o.default.createElement("li",null,(0,u._t)("Stop users from speaking in the old version of the room, and post a message advising users to move to the new room")),o.default.createElement("li",null,(0,u._t)("Put a link back to the old room at the start of the new room so people can see old messages"))),s)}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=u(n(0)),o=u(n(1)),i=u(n(3)),a=u(n(39)),s=u(n(16)),l=n(2);function u(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"SessionRestoreErrorDialog",propTypes:{error:o.default.string.isRequired,onFinished:o.default.func.isRequired},_sendBugReport:function(){var e=i.default.getComponent("dialogs.BugReportDialog");s.default.createTrackedDialog("Session Restore Error","Send Bug Report Dialog",e,{})},_onClearStorageClick:function(){var e=i.default.getComponent("dialogs.QuestionDialog");s.default.createTrackedDialog("Session Restore Confirm Logout","",e,{title:(0,l._t)("Sign out"),description:r.default.createElement("div",null,(0,l._t)("Log out and remove encryption keys?")),button:(0,l._t)("Sign out"),danger:!0,onFinished:this.props.onFinished})},_onRefreshClick:function(){window.location.reload(!0)},render:function(){var e=i.default.getComponent("views.dialogs.BaseDialog"),t=i.default.getComponent("views.elements.DialogButtons"),n=r.default.createElement("button",{onClick:this._onClearStorageClick,className:"danger"},(0,l._t)("Clear Storage and Sign Out")),o=void 0;return o=a.default.get().bug_report_endpoint_url?r.default.createElement(t,{primaryButton:(0,l._t)("Send Logs"),onPrimaryButtonClick:this._sendBugReport,focus:!0,hasCancel:!1},n):r.default.createElement(t,{primaryButton:(0,l._t)("Refresh"),onPrimaryButtonClick:this._onRefreshClick,focus:!0,hasCancel:!1},n),r.default.createElement(e,{className:"mx_ErrorDialog",onFinished:this.props.onFinished,title:(0,l._t)("Unable to restore session"),contentId:"mx_Dialog_content",hasCancel:!1},r.default.createElement("div",{className:"mx_Dialog_content",id:"mx_Dialog_content"},r.default.createElement("p",null,(0,l._t)("We encountered an error trying to restore your previous session.")),r.default.createElement("p",null,(0,l._t)("If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.")),r.default.createElement("p",null,(0,l._t)("Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable."))),o)}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(0)),o=c(n(1)),i=c(n(3)),a=c(n(453)),s=c(n(454)),l=n(2),u=c(n(16));function c(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"SetEmailDialog",propTypes:{onFinished:o.default.func.isRequired},getInitialState:function(){return{emailAddress:"",emailBusy:!1}},onEmailAddressChanged:function(e){this.setState({emailAddress:e})},onSubmit:function(){var e=this,t=i.default.getComponent("dialogs.ErrorDialog"),n=i.default.getComponent("dialogs.QuestionDialog"),r=this.state.emailAddress;a.default.looksValid(r)?(this._addThreepid=new s.default,this._addThreepid.addEmailAddress(r,!0).done(function(){u.default.createTrackedDialog("Verification Pending","",n,{title:(0,l._t)("Verification Pending"),description:(0,l._t)("Please check your email and click on the link it contains. Once this is done, click continue."),button:(0,l._t)("Continue"),onFinished:e.onEmailDialogFinished})},function(n){e.setState({emailBusy:!1}),console.error("Unable to add email address "+r+" "+n),u.default.createTrackedDialog("Unable to add email address","",t,{title:(0,l._t)("Unable to add email address"),description:n&&n.message?n.message:(0,l._t)("Operation failed")})}),this.setState({emailBusy:!0})):u.default.createTrackedDialog("Invalid Email Address","",t,{title:(0,l._t)("Invalid Email Address"),description:(0,l._t)("This doesn't appear to be a valid email address")})},onCancelled:function(){this.props.onFinished(!1)},onEmailDialogFinished:function(e){e?this.verifyEmailAddress():this.setState({emailBusy:!1})},verifyEmailAddress:function(){var e=this;this._addThreepid.checkEmailLinkClicked().done(function(){e.props.onFinished(!0)},function(t){if(e.setState({emailBusy:!1}),"M_THREEPID_AUTH_FAILED"==t.errcode){var n=i.default.getComponent("dialogs.QuestionDialog"),r=(0,l._t)("Unable to verify email address.")+" "+(0,l._t)("Please check your email and click on the link it contains. Once this is done, click continue.");u.default.createTrackedDialog("Verification Pending","3pid Auth Failed",n,{title:(0,l._t)("Verification Pending"),description:r,button:(0,l._t)("Continue"),onFinished:e.onEmailDialogFinished})}else{var o=i.default.getComponent("dialogs.ErrorDialog");console.error("Unable to verify email address: "+t),u.default.createTrackedDialog("Unable to verify email address","",o,{title:(0,l._t)("Unable to verify email address."),description:t&&t.message?t.message:(0,l._t)("Operation failed")})}})},render:function(){var e=i.default.getComponent("views.dialogs.BaseDialog"),t=i.default.getComponent("elements.Spinner"),n=i.default.getComponent("elements.EditableText"),o=this.state.emailBusy?r.default.createElement(t,null):r.default.createElement(n,{initialValue:this.state.emailAddress,className:"mx_SetEmailDialog_email_input",autoFocus:"true",placeholder:(0,l._t)("Email address"),placeholderClassName:"mx_SetEmailDialog_email_input_placeholder",blurToCancel:!1,onValueChanged:this.onEmailAddressChanged});return r.default.createElement(e,{className:"mx_SetEmailDialog",onFinished:this.onCancelled,title:this.props.title,contentId:"mx_Dialog_content"},r.default.createElement("div",{className:"mx_Dialog_content"},r.default.createElement("p",{id:"mx_Dialog_content"},(0,l._t)("This will allow you to reset your password and receive notifications.")),o),r.default.createElement("div",{className:"mx_Dialog_buttons"},r.default.createElement("input",{className:"mx_Dialog_primary",type:"submit",value:(0,l._t)("Continue"),onClick:this.onSubmit}),r.default.createElement("input",{type:"submit",value:(0,l._t)("Skip"),onClick:this.onCancelled})))}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=f(n(9)),o=f(n(0)),i=f(n(1)),a=f(n(3)),s=f(n(8)),l=f(n(24)),u=n(80),c=n(2);function f(e){return e&&e.__esModule?e:{default:e}}t.default=o.default.createClass({displayName:"SetMxIdDialog",propTypes:{onFinished:i.default.func.isRequired,onDifferentServerClicked:i.default.func.isRequired,onLoginClick:i.default.func.isRequired},getInitialState:function(){return{username:"",usernameBusy:!1,usernameError:"",usernameCheckSupport:!0,doingUIAuth:!1,authError:""}},componentDidMount:function(){this.refs.input_value.select(),this._matrixClient=s.default.get()},onValueChange:function(e){var t=this;this.setState({username:e.target.value,usernameBusy:!0,usernameError:""},function(){t.state.username&&t.state.usernameCheckSupport?(t._usernameCheckTimeout&&clearTimeout(t._usernameCheckTimeout),t._usernameCheckTimeout=setTimeout(function(){t._doUsernameCheck().finally(function(){t.setState({usernameBusy:!1})})},250)):t.setState({usernameBusy:!1})})},onKeyUp:function(e){e.keyCode===u.KeyCode.ENTER&&this.onSubmit()},onSubmit:function(e){this.setState({doingUIAuth:!0})},_doUsernameCheck:function(){var e=this;return encodeURIComponent(this.state.username)!==this.state.username?(this.setState({usernameError:(0,c._t)("User names may only contain letters, numbers, dots, hyphens and underscores.")}),r.default.reject()):this._matrixClient.isUsernameAvailable(this.state.username).then(function(t){t&&e.setState({usernameError:""})},function(t){var n={usernameCheckSupport:"M_UNRECOGNIZED"!==t.errcode};switch(console.error("Error whilst checking username availability: ",t),t.errcode){case"M_USER_IN_USE":n.usernameError=(0,c._t)("Username not available");break;case"M_INVALID_USERNAME":n.usernameError=(0,c._t)("Username invalid: %(errMessage)s",{errMessage:t.message});break;case"M_UNRECOGNIZED":n.usernameError="";break;case void 0:n.usernameError=(0,c._t)("Something went wrong!");break;default:n.usernameError=(0,c._t)("An error occurred: %(error_string)s",{error_string:t.message})}e.setState(n)})},_generatePassword:function(){return Math.random().toString(36).slice(2)},_makeRegisterRequest:function(e){return this._generatedPassword||(this._generatedPassword=this._generatePassword()),this._matrixClient.register(this.state.username,this._generatedPassword,void 0,e,{},null)},_onUIAuthFinished:function(e,t){if(this.setState({doingUIAuth:!1}),e){this.props.onFinished(!0,{userId:t.user_id,deviceId:t.device_id,homeserverUrl:this._matrixClient.getHomeserverUrl(),identityServerUrl:this._matrixClient.getIdentityServerUrl(),accessToken:t.access_token,password:this._generatedPassword,teamToken:null})}else this.setState({authError:t.message})},render:function(){var e=this,t=a.default.getComponent("views.dialogs.BaseDialog"),n=a.default.getComponent("structures.InteractiveAuth"),r=a.default.getComponent("elements.Spinner"),i=void 0;this.state.doingUIAuth&&(i=o.default.createElement(n,{matrixClient:this._matrixClient,makeRequest:this._makeRegisterRequest,onAuthFinished:this._onUIAuthFinished,inputs:{},poll:!0}));var s=(0,l.default)({mx_SetMxIdDialog_input:!0,error:Boolean(this.state.usernameError)}),u=null,f=null;if(this.state.usernameBusy)f=o.default.createElement(r,{w:"24",h:"24"});else{var d=this.state.username&&this.state.usernameCheckSupport&&!this.state.usernameError,p=(0,l.default)({error:Boolean(this.state.usernameError),success:d});u=o.default.createElement("div",{className:p,role:"alert"},d?(0,c._t)("Username available"):this.state.usernameError)}var m=null;this.state.authError&&(m=o.default.createElement("div",{className:"error",role:"alert"},this.state.authError));var h=this.state.username&&!this.state.usernameError&&!this.state.usernameBusy;return o.default.createElement(t,{className:"mx_SetMxIdDialog",onFinished:this.props.onFinished,title:(0,c._t)("To get started, please pick a username!"),contentId:"mx_Dialog_content"},o.default.createElement("div",{className:"mx_Dialog_content",id:"mx_Dialog_content"},o.default.createElement("div",{className:"mx_SetMxIdDialog_input_group"},o.default.createElement("input",{type:"text",ref:"input_value",value:this.state.username,autoFocus:!0,onChange:this.onValueChange,onKeyUp:this.onKeyUp,size:"30",className:s}),f),u,o.default.createElement("p",null,(0,c._t)("This will be your account name on the <span></span> homeserver, or you can pick a <a>different server</a>.",{},{span:o.default.createElement("span",null,this.props.homeserverUrl),a:function(t){return o.default.createElement("a",{href:"#",onClick:e.props.onDifferentServerClicked},t)}})),o.default.createElement("p",null,(0,c._t)("If you already have a Matrix account you can <a>log in</a> instead.",{},{a:function(t){return o.default.createElement("a",{href:"#",onClick:e.props.onLoginClick},t)}})),i,m),o.default.createElement("div",{className:"mx_Dialog_buttons"},o.default.createElement("input",{className:"mx_Dialog_primary",type:"submit",value:(0,c._t)("Continue"),onClick:this.onSubmit,disabled:!h})))}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(0)),o=s(n(3)),i=n(2),a=s(n(16));function s(e){return e&&e.__esModule?e:{default:e}}var l=function(e){var t=o.default.getComponent("views.dialogs.BaseDialog"),n=(0,i._t)("You have successfully set a password!");e.didSetEmail&&(n=(0,i._t)("You have successfully set a password and an email address!"));var a=(0,i._t)("You can now return to your account after signing out, and sign in on other devices."),s=null;return e.didSetEmail||(s=(0,i._t)("Remember, you can always set an email address in user settings if you change your mind.")),r.default.createElement(t,{className:"mx_SetPasswordDialog",onFinished:e.onFinished,title:n},r.default.createElement("div",{className:"mx_Dialog_content"},r.default.createElement("p",null,a),r.default.createElement("p",null,s)),r.default.createElement("div",{className:"mx_Dialog_buttons"},r.default.createElement("button",{className:"mx_Dialog_primary",autoFocus:!0,onClick:e.onFinished},(0,i._t)("Continue"))))};t.default=r.default.createClass({displayName:"SetPasswordDialog",propTypes:{onFinished:r.default.PropTypes.func.isRequired},getInitialState:function(){return{error:null}},componentWillMount:function(){console.info("SetPasswordDialog component will mount")},_onPasswordChanged:function(e){var t=this;a.default.createDialog(l,{didSetEmail:e.didSetEmail,onFinished:function(){t.props.onFinished()}})},_onPasswordChangeError:function(e){var t=e.error||"";403===e.httpStatus?t=(0,i._t)("Failed to change password. Is your password correct?"):e.httpStatus&&(t+=" "+(0,i._t)("(HTTP status %(httpStatus)s)",{httpStatus:e.httpStatus})),this.setState({error:t})},render:function(){var e=o.default.getComponent("views.dialogs.BaseDialog"),t=o.default.getComponent("views.settings.ChangePassword");return r.default.createElement(e,{className:"mx_SetPasswordDialog",onFinished:this.props.onFinished,title:(0,i._t)("Please set a password!")},r.default.createElement("div",{className:"mx_Dialog_content"},r.default.createElement("p",null,(0,i._t)("This will allow you to return to your account after signing out, and sign in on other devices.")),r.default.createElement(t,{className:"mx_SetPasswordDialog_change_password",rowClassName:"",rowLabelClassName:"",rowInputClassName:"",buttonClassName:"mx_Dialog_primary mx_SetPasswordDialog_change_password_button",confirm:!1,autoFocusNewPasswordInput:!0,shouldAskForEmail:!0,onError:this._onPasswordChangeError,onFinished:this._onPasswordChanged}),r.default.createElement("div",{className:"error"},this.state.error)))}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=_(n(11)),o=_(n(4)),i=_(n(5)),a=_(n(12)),s=_(n(13)),l=_(n(0)),u=_(n(1)),c=n(17),f=_(n(3)),d=n(2),p=_(n(1609)),m=n(79),h=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(176));function _(e){return e&&e.__esModule?e:{default:e}}var g=[{name:"Facebook",img:"img/social/facebook.png",url:function(e){return"https://www.facebook.com/sharer/sharer.php?u="+e}},{name:"Twitter",img:"img/social/twitter-2.png",url:function(e){return"https://twitter.com/home?status="+e}},{name:"LinkedIn",img:"img/social/linkedin.png",url:function(e){return"https://www.linkedin.com/shareArticle?mini=true&url="+e}},{name:"Reddit",img:"img/social/reddit.png",url:function(e){return"http://www.reddit.com/submit?url="+e}},{name:"email",img:"img/social/email-1.png",url:function(e){return"mailto:?body="+e}}],v=function(e){function t(e){(0,o.default)(this,t);var n=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this,e));return n.onCopyClick=n.onCopyClick.bind(n),n.onLinkSpecificEventCheckboxClick=n.onLinkSpecificEventCheckboxClick.bind(n),n.state={linkSpecificEvent:n.props.target instanceof c.MatrixEvent},n}return(0,s.default)(t,e),(0,i.default)(t,[{key:"onCopyClick",value:function(e){e.preventDefault(),t._selectText(this.refs.link);var n=void 0;try{n=document.execCommand("copy")}catch(e){console.error("Failed to copy: ",e)}var r=f.default.getComponent("context_menus.GenericTextContextMenu"),o=e.target.getBoundingClientRect(),i=o.right+window.pageXOffset,a=o.top+o.height/2+window.pageYOffset-19,s=h.createMenu(r,{chevronOffset:10,left:i,top:a,message:n?(0,d._t)("Copied!"):(0,d._t)("Failed to copy")},!1).close;e.target.onmouseleave=s}},{key:"onLinkSpecificEventCheckboxClick",value:function(){this.setState({linkSpecificEvent:!this.state.linkSpecificEvent})}},{key:"render",value:function(){var e=void 0,n=void 0,r=void 0;if(this.props.target instanceof c.Room){e=(0,d._t)("Share Room");var o=this.props.target.getLiveTimeline().getEvents();o.length>0&&(r=l.default.createElement("div",null,l.default.createElement("input",{type:"checkbox",id:"mx_ShareDialog_checkbox",checked:this.state.linkSpecificEvent,onClick:this.onLinkSpecificEventCheckboxClick}),l.default.createElement("label",{htmlFor:"mx_ShareDialog_checkbox"},(0,d._t)("Link to most recent message")))),n=this.state.linkSpecificEvent?(0,m.makeEventPermalink)(this.props.target.roomId,o[o.length-1].getId()):(0,m.makeRoomPermalink)(this.props.target.roomId)}else this.props.target instanceof c.User||this.props.target instanceof c.RoomMember?(e=(0,d._t)("Share User"),n=(0,m.makeUserPermalink)(this.props.target.userId)):this.props.target instanceof c.Group?(e=(0,d._t)("Share Community"),n=(0,m.makeGroupPermalink)(this.props.target.groupId)):this.props.target instanceof c.MatrixEvent&&(e=(0,d._t)("Share Room Message"),r=l.default.createElement("div",null,l.default.createElement("input",{type:"checkbox",id:"mx_ShareDialog_checkbox",checked:this.state.linkSpecificEvent,onClick:this.onLinkSpecificEventCheckboxClick}),l.default.createElement("label",{htmlFor:"mx_ShareDialog_checkbox"},(0,d._t)("Link to selected message"))),n=this.state.linkSpecificEvent?(0,m.makeEventPermalink)(this.props.target.getRoomId(),this.props.target.getId()):(0,m.makeRoomPermalink)(this.props.target.getRoomId()));var i=encodeURIComponent(n),a=f.default.getComponent("views.dialogs.BaseDialog");return l.default.createElement(a,{title:e,className:"mx_ShareDialog",contentId:"mx_Dialog_content",onFinished:this.props.onFinished},l.default.createElement("div",{className:"mx_ShareDialog_content"},l.default.createElement("div",{className:"mx_ShareDialog_matrixto"},l.default.createElement("a",{ref:"link",href:n,onClick:t.onLinkClick,className:"mx_ShareDialog_matrixto_link"},n),l.default.createElement("a",{href:n,className:"mx_ShareDialog_matrixto_copy",onClick:this.onCopyClick},(0,d._t)("COPY"),l.default.createElement("div",null," "))),r,l.default.createElement("hr",null),l.default.createElement("div",{className:"mx_ShareDialog_split"},l.default.createElement("div",{className:"mx_ShareDialog_qrcode_container"},l.default.createElement(p.default,{value:n,size:256,logoWidth:48,logo:"img/matrix-m.svg"})),l.default.createElement("div",{className:"mx_ShareDialog_social_container"},g.map(function(e){return l.default.createElement("a",{rel:"noopener",target:"_blank",key:e.name,name:e.name,href:e.url(i),className:"mx_ShareDialog_social_icon"},l.default.createElement("img",{src:e.img,alt:e.name,height:64,width:64}))})))))}}],[{key:"_selectText",value:function(e){var t=document.createRange();t.selectNodeContents(e);var n=window.getSelection();n.removeAllRanges(),n.addRange(t)}},{key:"onLinkClick",value:function(e){e.preventDefault();var n=e.target;t._selectText(n)}}]),t}(l.default.Component);v.propTypes={onFinished:u.default.func.isRequired,target:u.default.oneOfType([u.default.instanceOf(c.Room),u.default.instanceOf(c.User),u.default.instanceOf(c.Group),u.default.instanceOf(c.RoomMember),u.default.instanceOf(c.MatrixEvent)]).isRequired},t.default=v,e.exports=t.default},function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var o,i=n(0),a=n(1),s=n(41),l=n(1610);o=/^0\.14/.test(i.version)?function(e){return e}:function(e){return s.findDOMNode(e)};var u=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,i.Component),r(t,[{key:"shouldComponentUpdate",value:function(e){var n=this;return Object.keys(t.propTypes).some(function(t){return n.props[t]!==e[t]})}},{key:"componentDidMount",value:function(){this.update()}},{key:"componentDidUpdate",value:function(){this.update()}},{key:"utf16to8",value:function(e){var t,n,r,o;for(t="",r=e.length,n=0;n<r;n++)(o=e.charCodeAt(n))>=1&&o<=127?t+=e.charAt(n):o>2047?(t+=String.fromCharCode(224|o>>12&15),t+=String.fromCharCode(128|o>>6&63),t+=String.fromCharCode(128|o>>0&63)):(t+=String.fromCharCode(192|o>>6&31),t+=String.fromCharCode(128|o>>0&63));return t}},{key:"update",value:function(){var e=this.utf16to8(this.props.value),t=l(e),n=o(this.refs.canvas),r=n.getContext("2d"),i=t.modules,a=this.props.size/i.length,s=this.props.size/i.length,u=(window.devicePixelRatio||1)/function(e){return e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1}(r);if(n.height=n.width=this.props.size*u,r.scale(u,u),i.forEach(function(e,t){e.forEach(function(e,n){r.fillStyle=e?this.props.fgColor:this.props.bgColor;var o=Math.ceil((n+1)*a)-Math.floor(n*a),i=Math.ceil((t+1)*s)-Math.floor(t*s);r.fillRect(Math.round(n*a),Math.round(t*s),o,i)},this)},this),this.props.logo){var c=this,f=this.props.size,d=document.createElement("img");d.src=this.props.logo,d.onload=function(){var e=c.props.logoWidth||.2*f,t=c.props.logoHeight||d.height/d.width*e,n=(f-e)/2,o=(f-t)/2;d.width=e,d.height=t,r.drawImage(d,n,o,e,t)}}}},{key:"render",value:function(){return i.createElement("canvas",{style:{height:this.props.size,width:this.props.size},height:this.props.size,width:this.props.size,ref:"canvas"})}}]),t}();u.propTypes={value:a.string.isRequired,size:a.number,bgColor:a.string,fgColor:a.string,logo:a.string,logoWidth:a.number,logoHeight:a.number},u.defaultProps={size:128,bgColor:"#FFFFFF",fgColor:"#000000",value:"http://facebook.github.io/react/"},e.exports=u},function(e,t,n){var r=n(1611),o=n(670),i=function(e,t){var n=new r((t=t||{}).typeNumber||-1,t.errorCorrectLevel||o.H);return n.addData(e),n.make(),n};i.ErrorCorrectLevel=o,e.exports=i},function(e,t,n){var r=n(1612),o=n(1613),i=n(1614),a=n(1615),s=n(671);function l(e,t){this.typeNumber=e,this.errorCorrectLevel=t,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}var u=l.prototype;u.addData=function(e){var t=new r(e);this.dataList.push(t),this.dataCache=null},u.isDark=function(e,t){if(e<0||this.moduleCount<=e||t<0||this.moduleCount<=t)throw new Error(e+","+t);return this.modules[e][t]},u.getModuleCount=function(){return this.moduleCount},u.make=function(){if(this.typeNumber<1){var e=1;for(e=1;e<40;e++){for(var t=o.getRSBlocks(e,this.errorCorrectLevel),n=new i,r=0,s=0;s<t.length;s++)r+=t[s].dataCount;for(s=0;s<this.dataList.length;s++){var l=this.dataList[s];n.put(l.mode,4),n.put(l.getLength(),a.getLengthInBits(l.mode,e)),l.write(n)}if(n.getLengthInBits()<=8*r)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())},u.makeImpl=function(e,t){this.moduleCount=4*this.typeNumber+17,this.modules=new Array(this.moduleCount);for(var n=0;n<this.moduleCount;n++){this.modules[n]=new Array(this.moduleCount);for(var r=0;r<this.moduleCount;r++)this.modules[n][r]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(e,t),this.typeNumber>=7&&this.setupTypeNumber(e),null==this.dataCache&&(this.dataCache=l.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,t)},u.setupPositionProbePattern=function(e,t){for(var n=-1;n<=7;n++)if(!(e+n<=-1||this.moduleCount<=e+n))for(var r=-1;r<=7;r++)t+r<=-1||this.moduleCount<=t+r||(this.modules[e+n][t+r]=0<=n&&n<=6&&(0==r||6==r)||0<=r&&r<=6&&(0==n||6==n)||2<=n&&n<=4&&2<=r&&r<=4)},u.getBestMaskPattern=function(){for(var e=0,t=0,n=0;n<8;n++){this.makeImpl(!0,n);var r=a.getLostPoint(this);(0==n||e>r)&&(e=r,t=n)}return t},u.createMovieClip=function(e,t,n){var r=e.createEmptyMovieClip(t,n);this.make();for(var o=0;o<this.modules.length;o++)for(var i=1*o,a=0;a<this.modules[o].length;a++){var s=1*a;this.modules[o][a]&&(r.beginFill(0,100),r.moveTo(s,i),r.lineTo(s+1,i),r.lineTo(s+1,i+1),r.lineTo(s,i+1),r.endFill())}return r},u.setupTimingPattern=function(){for(var e=8;e<this.moduleCount-8;e++)null==this.modules[e][6]&&(this.modules[e][6]=e%2==0);for(var t=8;t<this.moduleCount-8;t++)null==this.modules[6][t]&&(this.modules[6][t]=t%2==0)},u.setupPositionAdjustPattern=function(){for(var e=a.getPatternPosition(this.typeNumber),t=0;t<e.length;t++)for(var n=0;n<e.length;n++){var r=e[t],o=e[n];if(null==this.modules[r][o])for(var i=-2;i<=2;i++)for(var s=-2;s<=2;s++)this.modules[r+i][o+s]=-2==i||2==i||-2==s||2==s||0==i&&0==s}},u.setupTypeNumber=function(e){for(var t=a.getBCHTypeNumber(this.typeNumber),n=0;n<18;n++){var r=!e&&1==(t>>n&1);this.modules[Math.floor(n/3)][n%3+this.moduleCount-8-3]=r}for(n=0;n<18;n++){r=!e&&1==(t>>n&1);this.modules[n%3+this.moduleCount-8-3][Math.floor(n/3)]=r}},u.setupTypeInfo=function(e,t){for(var n=this.errorCorrectLevel<<3|t,r=a.getBCHTypeInfo(n),o=0;o<15;o++){var i=!e&&1==(r>>o&1);o<6?this.modules[o][8]=i:o<8?this.modules[o+1][8]=i:this.modules[this.moduleCount-15+o][8]=i}for(o=0;o<15;o++){i=!e&&1==(r>>o&1);o<8?this.modules[8][this.moduleCount-o-1]=i:o<9?this.modules[8][15-o-1+1]=i:this.modules[8][15-o-1]=i}this.modules[this.moduleCount-8][8]=!e},u.mapData=function(e,t){for(var n=-1,r=this.moduleCount-1,o=7,i=0,s=this.moduleCount-1;s>0;s-=2)for(6==s&&s--;;){for(var l=0;l<2;l++)if(null==this.modules[r][s-l]){var u=!1;i<e.length&&(u=1==(e[i]>>>o&1)),a.getMask(t,r,s-l)&&(u=!u),this.modules[r][s-l]=u,-1==--o&&(i++,o=7)}if((r+=n)<0||this.moduleCount<=r){r-=n,n=-n;break}}},l.PAD0=236,l.PAD1=17,l.createData=function(e,t,n){for(var r=o.getRSBlocks(e,t),s=new i,u=0;u<n.length;u++){var c=n[u];s.put(c.mode,4),s.put(c.getLength(),a.getLengthInBits(c.mode,e)),c.write(s)}var f=0;for(u=0;u<r.length;u++)f+=r[u].dataCount;if(s.getLengthInBits()>8*f)throw new Error("code length overflow. ("+s.getLengthInBits()+">"+8*f+")");for(s.getLengthInBits()+4<=8*f&&s.put(0,4);s.getLengthInBits()%8!=0;)s.putBit(!1);for(;!(s.getLengthInBits()>=8*f||(s.put(l.PAD0,8),s.getLengthInBits()>=8*f));)s.put(l.PAD1,8);return l.createBytes(s,r)},l.createBytes=function(e,t){for(var n=0,r=0,o=0,i=new Array(t.length),l=new Array(t.length),u=0;u<t.length;u++){var c=t[u].dataCount,f=t[u].totalCount-c;r=Math.max(r,c),o=Math.max(o,f),i[u]=new Array(c);for(var d=0;d<i[u].length;d++)i[u][d]=255&e.buffer[d+n];n+=c;var p=a.getErrorCorrectPolynomial(f),m=new s(i[u],p.getLength()-1).mod(p);l[u]=new Array(p.getLength()-1);for(d=0;d<l[u].length;d++){var h=d+m.getLength()-l[u].length;l[u][d]=h>=0?m.get(h):0}}var _=0;for(d=0;d<t.length;d++)_+=t[d].totalCount;var g=new Array(_),v=0;for(d=0;d<r;d++)for(u=0;u<t.length;u++)d<i[u].length&&(g[v++]=i[u][d]);for(d=0;d<o;d++)for(u=0;u<t.length;u++)d<l[u].length&&(g[v++]=l[u][d]);return g},e.exports=l},function(e,t,n){var r=n(669);function o(e){this.mode=r.MODE_8BIT_BYTE,this.data=e}o.prototype={getLength:function(e){return this.data.length},write:function(e){for(var t=0;t<this.data.length;t++)e.put(this.data.charCodeAt(t),8)}},e.exports=o},function(e,t,n){var r=n(670);function o(e,t){this.totalCount=e,this.dataCount=t}o.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],o.getRSBlocks=function(e,t){var n=o.getRsBlockTable(e,t);if(void 0==n)throw new Error("bad rs block @ typeNumber:"+e+"/errorCorrectLevel:"+t);for(var r=n.length/3,i=new Array,a=0;a<r;a++)for(var s=n[3*a+0],l=n[3*a+1],u=n[3*a+2],c=0;c<s;c++)i.push(new o(l,u));return i},o.getRsBlockTable=function(e,t){switch(t){case r.L:return o.RS_BLOCK_TABLE[4*(e-1)+0];case r.M:return o.RS_BLOCK_TABLE[4*(e-1)+1];case r.Q:return o.RS_BLOCK_TABLE[4*(e-1)+2];case r.H:return o.RS_BLOCK_TABLE[4*(e-1)+3];default:return}},e.exports=o},function(e,t){function n(){this.buffer=new Array,this.length=0}n.prototype={get:function(e){var t=Math.floor(e/8);return 1==(this.buffer[t]>>>7-e%8&1)},put:function(e,t){for(var n=0;n<t;n++)this.putBit(1==(e>>>t-n-1&1))},getLengthInBits:function(){return this.length},putBit:function(e){var t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},e.exports=n},function(e,t,n){var r=n(669),o=n(671),i=n(672),a=0,s=1,l=2,u=3,c=4,f=5,d=6,p=7,m={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(e){for(var t=e<<10;m.getBCHDigit(t)-m.getBCHDigit(m.G15)>=0;)t^=m.G15<<m.getBCHDigit(t)-m.getBCHDigit(m.G15);return(e<<10|t)^m.G15_MASK},getBCHTypeNumber:function(e){for(var t=e<<12;m.getBCHDigit(t)-m.getBCHDigit(m.G18)>=0;)t^=m.G18<<m.getBCHDigit(t)-m.getBCHDigit(m.G18);return e<<12|t},getBCHDigit:function(e){for(var t=0;0!=e;)t++,e>>>=1;return t},getPatternPosition:function(e){return m.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,t,n){switch(e){case a:return(t+n)%2==0;case s:return t%2==0;case l:return n%3==0;case u:return(t+n)%3==0;case c:return(Math.floor(t/2)+Math.floor(n/3))%2==0;case f:return t*n%2+t*n%3==0;case d:return(t*n%2+t*n%3)%2==0;case p:return(t*n%3+(t+n)%2)%2==0;default:throw new Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var t=new o([1],0),n=0;n<e;n++)t=t.multiply(new o([1,i.gexp(n)],0));return t},getLengthInBits:function(e,t){if(1<=t&&t<10)switch(e){case r.MODE_NUMBER:return 10;case r.MODE_ALPHA_NUM:return 9;case r.MODE_8BIT_BYTE:case r.MODE_KANJI:return 8;default:throw new Error("mode:"+e)}else if(t<27)switch(e){case r.MODE_NUMBER:return 12;case r.MODE_ALPHA_NUM:return 11;case r.MODE_8BIT_BYTE:return 16;case r.MODE_KANJI:return 10;default:throw new Error("mode:"+e)}else{if(!(t<41))throw new Error("type:"+t);switch(e){case r.MODE_NUMBER:return 14;case r.MODE_ALPHA_NUM:return 13;case r.MODE_8BIT_BYTE:return 16;case r.MODE_KANJI:return 12;default:throw new Error("mode:"+e)}}},getLostPoint:function(e){for(var t=e.getModuleCount(),n=0,r=0;r<t;r++)for(var o=0;o<t;o++){for(var i=0,a=e.isDark(r,o),s=-1;s<=1;s++)if(!(r+s<0||t<=r+s))for(var l=-1;l<=1;l++)o+l<0||t<=o+l||0==s&&0==l||a==e.isDark(r+s,o+l)&&i++;i>5&&(n+=3+i-5)}for(r=0;r<t-1;r++)for(o=0;o<t-1;o++){var u=0;e.isDark(r,o)&&u++,e.isDark(r+1,o)&&u++,e.isDark(r,o+1)&&u++,e.isDark(r+1,o+1)&&u++,0!=u&&4!=u||(n+=3)}for(r=0;r<t;r++)for(o=0;o<t-6;o++)e.isDark(r,o)&&!e.isDark(r,o+1)&&e.isDark(r,o+2)&&e.isDark(r,o+3)&&e.isDark(r,o+4)&&!e.isDark(r,o+5)&&e.isDark(r,o+6)&&(n+=40);for(o=0;o<t;o++)for(r=0;r<t-6;r++)e.isDark(r,o)&&!e.isDark(r+1,o)&&e.isDark(r+2,o)&&e.isDark(r+3,o)&&e.isDark(r+4,o)&&!e.isDark(r+5,o)&&e.isDark(r+6,o)&&(n+=40);var c=0;for(o=0;o<t;o++)for(r=0;r<t;r++)e.isDark(r,o)&&c++;return n+=10*(Math.abs(100*c/t/t-50)/5)}};e.exports=m},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(n(0)),o=a(n(1)),i=a(n(3));function a(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"TextInputDialog",propTypes:{title:o.default.string,description:o.default.oneOfType([o.default.element,o.default.string]),value:o.default.string,button:o.default.string,focus:o.default.bool,onFinished:o.default.func.isRequired},getDefaultProps:function(){return{title:"",value:"",description:"",focus:!0}},componentDidMount:function(){this.props.focus&&(this.refs.textinput.value=this.props.value)},onOk:function(){this.props.onFinished(!0,this.refs.textinput.value)},onCancel:function(){this.props.onFinished(!1)},render:function(){var e=i.default.getComponent("views.dialogs.BaseDialog"),t=i.default.getComponent("views.elements.DialogButtons");return r.default.createElement(e,{className:"mx_TextInputDialog",onFinished:this.props.onFinished,title:this.props.title},r.default.createElement("form",{onSubmit:this.onOk},r.default.createElement("div",{className:"mx_Dialog_content"},r.default.createElement("div",{className:"mx_TextInputDialog_label"},r.default.createElement("label",{htmlFor:"textinput"}," ",this.props.description," ")),r.default.createElement("div",null,r.default.createElement("input",{id:"textinput",ref:"textinput",className:"mx_TextInputDialog_input",defaultValue:this.props.value,autoFocus:this.props.focus,size:"64"})))),r.default.createElement(t,{primaryButton:this.props.button,onPrimaryButtonClick:this.onOk,onCancel:this.onCancel}))}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=f(n(14)),o=f(n(0)),i=f(n(1)),a=f(n(3)),s=f(n(8)),l=(f(n(673)),f(n(291)),n(2)),u=f(n(22)),c=n(410);function f(e){return e&&e.__esModule?e:{default:e}}function d(e){var t=e.userId,n=e.device,r=a.default.getComponent("elements.DeviceVerifyButtons");return o.default.createElement("li",null,o.default.createElement(r,{device:n,userId:t}),n.deviceId,o.default.createElement("br",null),n.getDisplayName())}function p(e){var t=e.userId,n=e.userDevices,i=(0,r.default)(n).map(function(e){return o.default.createElement(d,{key:e,userId:t,device:n[e]})});return o.default.createElement("ul",{className:"mx_UnknownDeviceDialog_deviceList"},i)}function m(e){var t=e.devices,n=(0,r.default)(t).map(function(e){return o.default.createElement("li",{key:e},o.default.createElement("p",null,e,":"),o.default.createElement(p,{userId:e,userDevices:t[e]}))});return o.default.createElement("ul",null,n)}d.propTypes={userId:i.default.string.isRequired,device:i.default.object.isRequired},p.propTypes={userId:i.default.string.isRequired,userDevices:i.default.object.isRequired},m.propTypes={devices:i.default.object.isRequired},t.default=o.default.createClass({displayName:"UnknownDeviceDialog",propTypes:{room:i.default.object.isRequired,devices:i.default.object,onFinished:i.default.func.isRequired,sendAnywayLabel:i.default.string.isRequired,sendLabel:i.default.string.isRequired,onSend:i.default.func.isRequired},componentWillMount:function(){s.default.get().on("deviceVerificationChanged",this._onDeviceVerificationChanged)},componentWillUnmount:function(){s.default.get()&&s.default.get().removeListener("deviceVerificationChanged",this._onDeviceVerificationChanged)},_onDeviceVerificationChanged:function(e,t,n){this.props.devices[e]&&this.props.devices[e][t]&&(this.props.devices[e][t]=n,this.forceUpdate())},_onDismissClicked:function(){this.props.onFinished()},_onSendAnywayClicked:function(){(0,c.markAllDevicesKnown)(s.default.get(),this.props.devices),this.props.onFinished(),this.props.onSend()},_onSendClicked:function(){this.props.onFinished(),this.props.onSend()},render:function(){var e=this,t=a.default.getComponent("elements.GeminiScrollbarWrapper");if(null===this.props.devices){var n=a.default.getComponent("elements.Spinner");return o.default.createElement(n,null)}var i=void 0;i=u.default.getValue("blacklistUnverifiedDevices",this.props.room.roomId)?o.default.createElement("h4",null,(0,l._t)("You are currently blacklisting unverified devices; to send messages to these devices you must verify them.")):o.default.createElement("div",null,o.default.createElement("p",null,(0,l._t)("We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.")));var s=!1;(0,r.default)(this.props.devices).forEach(function(t){(0,r.default)(e.props.devices[t]).map(function(n){var r=e.props.devices[t][n];r.isUnverified()&&!r.isKnown()&&(s=!0)})});var c=s?this._onSendAnywayClicked:this._onSendClicked,f=this.props.sendAnywayLabel,d=a.default.getComponent("views.dialogs.BaseDialog"),p=a.default.getComponent("views.elements.DialogButtons");return o.default.createElement(d,{className:"mx_UnknownDeviceDialog",onFinished:this.props.onFinished,title:(0,l._t)("Room contains unknown devices"),contentId:"mx_Dialog_content"},o.default.createElement(t,{autoshow:!1,className:"mx_Dialog_content",id:"mx_Dialog_content"},o.default.createElement("h4",null,(0,l._t)('"%(RoomName)s" contains devices that you haven\'t seen before.',{RoomName:this.props.room.name})),i,(0,l._t)("Unknown devices"),":",o.default.createElement(m,{devices:this.props.devices})),o.default.createElement(p,{primaryButton:f,onPrimaryButtonClick:c,onCancel:this._onDismissClicked}))}}),e.exports=t.default},function(e,t,n){ -/** - * gemini-scrollbar - * @version 1.4.3 - * @link http://noeldelgado.github.io/gemini-scrollbar/ - * @license MIT - */ -!function(){var t,n,r;function o(e,t){if(e.classList)return t.forEach(function(t){e.classList.add(t)});e.className+=" "+t.join(" ")}function i(e,t){if(e.classList)return t.forEach(function(t){e.classList.remove(t)});e.className=e.className.replace(new RegExp("(^|\\b)"+t.join("|")+"(\\b|$)","gi")," ")}function a(){var e=navigator.userAgent.toLowerCase();return-1!==e.indexOf("msie")||-1!==e.indexOf("trident")||-1!==e.indexOf(" edge/")}function s(e){this.element=null,this.autoshow=!1,this.createElements=!0,this.forceGemini=!1,this.onResize=null,Object.keys(e||{}).forEach(function(t){this[t]=e[t]},this),t=function(){var e,t=document.createElement("div");return t.style.position="absolute",t.style.top="-9999px",t.style.width="100px",t.style.height="100px",t.style.overflow="scroll",t.style.msOverflowStyle="scrollbar",document.body.appendChild(t),e=t.offsetWidth-t.clientWidth,document.body.removeChild(t),e}(),n=0===t&&!1===this.forceGemini,this._cache={events:{}},this._created=!1,this._cursorDown=!1,this._prevPageX=0,this._prevPageY=0,this._document=null,this._viewElement=this.element,this._scrollbarVerticalElement=null,this._thumbVerticalElement=null,this._scrollbarHorizontalElement=null,this._scrollbarHorizontalElement=null}r={element:"gm-scrollbar-container",verticalScrollbar:"gm-scrollbar -vertical",horizontalScrollbar:"gm-scrollbar -horizontal",thumb:"thumb",view:"gm-scroll-view",autoshow:"gm-autoshow",disable:"gm-scrollbar-disable-selection",prevented:"gm-prevented",resizeTrigger:"gm-resize-trigger"},s.prototype.create=function(){if(n){if(o(this.element,[r.prevented]),this.onResize){if(!0===this.createElements){for(this._viewElement=document.createElement("div");this.element.childNodes.length>0;)this._viewElement.appendChild(this.element.childNodes[0]);this.element.appendChild(this._viewElement)}else this._viewElement=this.element.querySelector("."+r.view);o(this.element,[r.element]),o(this._viewElement,[r.view]),this._createResizeTrigger()}return this}if(!0===this._created)return console.warn("calling on a already-created object"),this;if(this.autoshow&&o(this.element,[r.autoshow]),this._document=document,!0===this.createElements){for(this._viewElement=document.createElement("div"),this._scrollbarVerticalElement=document.createElement("div"),this._thumbVerticalElement=document.createElement("div"),this._scrollbarHorizontalElement=document.createElement("div"),this._thumbHorizontalElement=document.createElement("div");this.element.childNodes.length>0;)this._viewElement.appendChild(this.element.childNodes[0]);this._scrollbarVerticalElement.appendChild(this._thumbVerticalElement),this._scrollbarHorizontalElement.appendChild(this._thumbHorizontalElement),this.element.appendChild(this._scrollbarVerticalElement),this.element.appendChild(this._scrollbarHorizontalElement),this.element.appendChild(this._viewElement)}else this._viewElement=this.element.querySelector("."+r.view),this._scrollbarVerticalElement=this.element.querySelector("."+r.verticalScrollbar.split(" ").join(".")),this._thumbVerticalElement=this._scrollbarVerticalElement.querySelector("."+r.thumb),this._scrollbarHorizontalElement=this.element.querySelector("."+r.horizontalScrollbar.split(" ").join(".")),this._thumbHorizontalElement=this._scrollbarHorizontalElement.querySelector("."+r.thumb);return o(this.element,[r.element]),o(this._viewElement,[r.view]),o(this._scrollbarVerticalElement,r.verticalScrollbar.split(/\s/)),o(this._scrollbarHorizontalElement,r.horizontalScrollbar.split(/\s/)),o(this._thumbVerticalElement,[r.thumb]),o(this._thumbHorizontalElement,[r.thumb]),this._scrollbarVerticalElement.style.display="",this._scrollbarHorizontalElement.style.display="",this._createResizeTrigger(),this._created=!0,this._bindEvents().update()},s.prototype._createResizeTrigger=function(){var e=document.createElement("object");o(e,[r.resizeTrigger]),e.type="text/html";var t=this._resizeHandler.bind(this);e.onload=function(){e.contentDocument.defaultView.addEventListener("resize",t)},a()||(e.data="about:blank"),this.element.appendChild(e),a()&&(e.data="about:blank"),this._resizeTriggerElement=e},s.prototype.update=function(){return n?this:!1===this._created?(console.warn("calling on a not-yet-created object"),this):(this._viewElement.style.width=(this.element.offsetWidth+t).toString()+"px",this._viewElement.style.height=(this.element.offsetHeight+t).toString()+"px",e=100*this._viewElement.clientHeight/this._viewElement.scrollHeight,r=100*this._viewElement.clientWidth/this._viewElement.scrollWidth,this._thumbVerticalElement.style.height=e<100?e+"%":"",this._thumbHorizontalElement.style.width=r<100?r+"%":"",this._scrollHandler(),this);var e,r},s.prototype.destroy=function(){if(this._resizeTriggerElement&&(this.element.removeChild(this._resizeTriggerElement),this._resizeTriggerElement=null),n)return this;if(!1===this._created)return console.warn("calling on a not-yet-created object"),this;if(this._unbinEvents(),i(this.element,[r.element,r.autoshow]),!0===this.createElements){for(this.element.removeChild(this._scrollbarVerticalElement),this.element.removeChild(this._scrollbarHorizontalElement);this._viewElement.childNodes.length>0;)this.element.appendChild(this._viewElement.childNodes[0]);this.element.removeChild(this._viewElement)}else this._viewElement.style.width="",this._viewElement.style.height="",this._scrollbarVerticalElement.style.display="none",this._scrollbarHorizontalElement.style.display="none";return this._created=!1,this._document=null,null},s.prototype.getViewElement=function(){return this._viewElement},s.prototype._bindEvents=function(){return this._cache.events.scrollHandler=this._scrollHandler.bind(this),this._cache.events.clickVerticalTrackHandler=this._clickVerticalTrackHandler.bind(this),this._cache.events.clickHorizontalTrackHandler=this._clickHorizontalTrackHandler.bind(this),this._cache.events.clickVerticalThumbHandler=this._clickVerticalThumbHandler.bind(this),this._cache.events.clickHorizontalThumbHandler=this._clickHorizontalThumbHandler.bind(this),this._cache.events.mouseUpDocumentHandler=this._mouseUpDocumentHandler.bind(this),this._cache.events.mouseMoveDocumentHandler=this._mouseMoveDocumentHandler.bind(this),this._viewElement.addEventListener("scroll",this._cache.events.scrollHandler),this._scrollbarVerticalElement.addEventListener("mousedown",this._cache.events.clickVerticalTrackHandler),this._scrollbarHorizontalElement.addEventListener("mousedown",this._cache.events.clickHorizontalTrackHandler),this._thumbVerticalElement.addEventListener("mousedown",this._cache.events.clickVerticalThumbHandler),this._thumbHorizontalElement.addEventListener("mousedown",this._cache.events.clickHorizontalThumbHandler),this._document.addEventListener("mouseup",this._cache.events.mouseUpDocumentHandler),this},s.prototype._unbinEvents=function(){return this._viewElement.removeEventListener("scroll",this._cache.events.scrollHandler),this._scrollbarVerticalElement.removeEventListener("mousedown",this._cache.events.clickVerticalTrackHandler),this._scrollbarHorizontalElement.removeEventListener("mousedown",this._cache.events.clickHorizontalTrackHandler),this._thumbVerticalElement.removeEventListener("mousedown",this._cache.events.clickVerticalThumbHandler),this._thumbHorizontalElement.removeEventListener("mousedown",this._cache.events.clickHorizontalThumbHandler),this._document.removeEventListener("mouseup",this._cache.events.mouseUpDocumentHandler),this._document.removeEventListener("mousemove",this._cache.events.mouseMoveDocumentHandler),this},s.prototype._scrollHandler=function(){var e,t,n;n=100*(e=this._viewElement).scrollTop/e.clientHeight,t=100*e.scrollLeft/e.clientWidth,this._thumbVerticalElement.style.msTransform="translateY("+n+"%)",this._thumbVerticalElement.style.webkitTransform="translateY("+n+"%)",this._thumbVerticalElement.style.transform="translateY("+n+"%)",this._thumbHorizontalElement.style.msTransform="translateX("+t+"%)",this._thumbHorizontalElement.style.webkitTransform="translateX("+t+"%)",this._thumbHorizontalElement.style.transform="translateX("+t+"%)"},s.prototype._resizeHandler=function(){this.update(),this.onResize&&this.onResize()},s.prototype._clickVerticalTrackHandler=function(e){var t=100*(Math.abs(e.target.getBoundingClientRect().top-e.clientY)-this._thumbVerticalElement.offsetHeight/2)/this._scrollbarVerticalElement.offsetHeight;this._viewElement.scrollTop=t*this._viewElement.scrollHeight/100},s.prototype._clickHorizontalTrackHandler=function(e){var t=100*(Math.abs(e.target.getBoundingClientRect().left-e.clientX)-this._thumbHorizontalElement.offsetWidth/2)/this._scrollbarHorizontalElement.offsetWidth;this._viewElement.scrollLeft=t*this._viewElement.scrollWidth/100},s.prototype._clickVerticalThumbHandler=function(e){this._startDrag(e),this._prevPageY=e.currentTarget.offsetHeight-(e.clientY-e.currentTarget.getBoundingClientRect().top)},s.prototype._clickHorizontalThumbHandler=function(e){this._startDrag(e),this._prevPageX=e.currentTarget.offsetWidth-(e.clientX-e.currentTarget.getBoundingClientRect().left)},s.prototype._startDrag=function(e){e.stopImmediatePropagation(),this._cursorDown=!0,o(document.body,[r.disable]),this._document.addEventListener("mousemove",this._cache.events.mouseMoveDocumentHandler),this._document.onselectstart=function(){return!1}},s.prototype._mouseUpDocumentHandler=function(){this._cursorDown=!1,this._prevPageX=this._prevPageY=0,i(document.body,[r.disable]),this._document.removeEventListener("mousemove",this._cache.events.mouseMoveDocumentHandler),this._document.onselectstart=null},s.prototype._mouseMoveDocumentHandler=function(e){var t;if(!1!==this._cursorDown)return this._prevPageY?(t=100*(-1*(this._scrollbarVerticalElement.getBoundingClientRect().top-e.clientY)-(this._thumbVerticalElement.offsetHeight-this._prevPageY))/this._scrollbarVerticalElement.offsetHeight,void(this._viewElement.scrollTop=t*this._viewElement.scrollHeight/100)):void(this._prevPageX&&(t=100*(-1*(this._scrollbarHorizontalElement.getBoundingClientRect().left-e.clientX)-(this._thumbHorizontalElement.offsetWidth-this._prevPageX))/this._scrollbarHorizontalElement.offsetWidth,this._viewElement.scrollLeft=t*this._viewElement.scrollWidth/100))},e.exports=s}()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=p(n(14)),o=p(n(20)),i=p(n(11)),a=p(n(4)),s=p(n(5)),l=p(n(12)),u=p(n(13)),c=p(n(0)),f=p(n(8)),d=n(660);function p(e){return e&&e.__esModule?e:{default:e}}var m=function(e){function t(e){(0,a.default)(this,t);var n=(0,l.default)(this,(t.__proto__||(0,i.default)(t)).call(this,e));n.dropdownRootElement=null,n.ignoreEvent=null,n.onInputClick=n.onInputClick.bind(n),n.onRootClick=n.onRootClick.bind(n),n.onDocumentClick=n.onDocumentClick.bind(n),n.onMenuOptionClick=n.onMenuOptionClick.bind(n),n.onInputKeyUp=n.onInputKeyUp.bind(n),n.collectRoot=n.collectRoot.bind(n),n.collectInputTextBox=n.collectInputTextBox.bind(n),n.inputTextBox=null;var r=f.default.getHomeServerName();return n.state={expanded:!1,selectedServer:r,selectedInstance:null,includeAllNetworks:!1},n}return(0,u.default)(t,e),(0,s.default)(t,[{key:"componentWillMount",value:function(){document.addEventListener("click",this.onDocumentClick,!1),this.props.onOptionChange(this.state.selectedServer,this.state.selectedInstance,this.state.includeAllNetworks)}},{key:"componentWillUnmount",value:function(){document.removeEventListener("click",this.onDocumentClick,!1)}},{key:"componentDidUpdate",value:function(){this.state.expanded&&this.inputTextBox&&this.inputTextBox.focus()}},{key:"onDocumentClick",value:function(e){e!==this.ignoreEvent&&this.setState({expanded:!1})}},{key:"onRootClick",value:function(e){this.ignoreEvent=e}},{key:"onInputClick",value:function(e){this.setState({expanded:!this.state.expanded}),e.preventDefault()}},{key:"onMenuOptionClick",value:function(e,t,n){this.setState({expanded:!1,selectedServer:e,selectedInstanceId:t?t.instance_id:null,includeAll:n}),this.props.onOptionChange(e,t?t.instance_id:null,n)}},{key:"onInputKeyUp",value:function(e){"Enter"==e.key&&(this.setState({expanded:!1,selectedServer:e.target.value,selectedNetwork:null}),this.props.onOptionChange(e.target.value,null))}},{key:"collectRoot",value:function(e){this.dropdownRootElement&&this.dropdownRootElement.removeEventListener("click",this.onRootClick,!1),e&&e.addEventListener("click",this.onRootClick,!1),this.dropdownRootElement=e}},{key:"collectInputTextBox",value:function(e){this.inputTextBox=e}},{key:"_getMenuOptions",value:function(){var e=[],t=[];this.props.config.servers&&(t=t.concat(this.props.config.servers)),-1==t.indexOf(f.default.getHomeServerName())&&t.unshift(f.default.getHomeServerName());var n=!0,i=!1,a=void 0;try{for(var s,l=(0,o.default)(t);!(n=(s=l.next()).done);n=!0){var u=s.value;if(e.push(this._makeMenuOption(u,null,!0)),u==f.default.getHomeServerName()&&(e.push(this._makeMenuOption(u,null,!1)),this.props.protocols)){var c=!0,d=!1,p=void 0;try{for(var m,h=(0,o.default)((0,r.default)(this.props.protocols));!(c=(m=h.next()).done);c=!0){var _=m.value;if(this.props.protocols[_].instances){var g=this.props.protocols[_].instances;g.sort(function(e,t){var n=e.desc,r=t.desc;return n<r?-1:n>r?1:0});var v=!0,y=!1,b=void 0;try{for(var E,C=(0,o.default)(g);!(v=(E=C.next()).done);v=!0){var S=E.value;S.instance_id&&e.push(this._makeMenuOption(u,S,!1))}}catch(e){y=!0,b=e}finally{try{!v&&C.return&&C.return()}finally{if(y)throw b}}}}}catch(e){d=!0,p=e}finally{try{!c&&h.return&&h.return()}finally{if(d)throw p}}}}}catch(e){i=!0,a=e}finally{try{!n&&l.return&&l.return()}finally{if(i)throw a}}return e}},{key:"_makeMenuOption",value:function(e,t,n,r){void 0===r&&(r=!0);var o=void 0,i=void 0,a=void 0;if(!t&&n)a=e,i=e,"mx_NetworkDropdown_menu_all";else if(t){a=e+"_inst_"+t.instance_id;var s=t.icon?f.default.get().mxcUrlToHttp(t.icon,25,25,"crop",!0):"img/network-matrix.svg";o=c.default.createElement("img",{src:s}),i=t.desc,"mx_NetworkDropdown_menu_network"}else a=e+"_all",i="Matrix",o=c.default.createElement("img",{src:"img/network-matrix.svg"}),"mx_NetworkDropdown_menu_network";var l=r?this.onMenuOptionClick.bind(this,e,t,n):null;return c.default.createElement("div",{key:a,className:"mx_NetworkDropdown_networkoption",onClick:l},o,c.default.createElement("span",{className:"mx_NetworkDropdown_menu_network"},i))}},{key:"render",value:function(){var e=void 0,t=void 0;if(this.state.expanded){var n=this._getMenuOptions();t=c.default.createElement("div",{className:"mx_NetworkDropdown_menu"},n),e=c.default.createElement("input",{type:"text",className:"mx_NetworkDropdown_networkoption",ref:this.collectInputTextBox,onKeyUp:this.onInputKeyUp,placeholder:"matrix.org"})}else{var r=(0,d.instanceForInstanceId)(this.props.protocols,this.state.selectedInstanceId);e=this._makeMenuOption(this.state.selectedServer,r,this.state.includeAll,!1)}return c.default.createElement("div",{className:"mx_NetworkDropdown",ref:this.collectRoot},c.default.createElement("div",{className:"mx_NetworkDropdown_input",onClick:this.onInputClick},e,c.default.createElement("span",{className:"mx_NetworkDropdown_arrow"}),t))}}]),t}(c.default.Component);t.default=m,m.propTypes={onOptionChange:c.default.PropTypes.func.isRequired,protocols:c.default.PropTypes.object,config:c.default.PropTypes.object},m.defaultProps={protocols:{},config:{}},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=u(n(0)),o=u(n(1)),i=u(n(27)),a=u(n(10)),s=u(n(3)),l=u(n(90));function u(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"RoleButton",propTypes:{size:o.default.string,tooltip:o.default.bool,action:o.default.string.isRequired,mouseOverAction:o.default.string,label:o.default.string.isRequired,iconPath:o.default.string.isRequired},getDefaultProps:function(){return{size:"25",tooltip:!1}},getInitialState:function(){return{showTooltip:!1}},_onClick:function(e){e.stopPropagation(),l.default.trackEvent("Action Button","click",this.props.action),a.default.dispatch({action:this.props.action})},_onMouseEnter:function(){this.props.tooltip&&this.setState({showTooltip:!0}),this.props.mouseOverAction&&a.default.dispatch({action:this.props.mouseOverAction})},_onMouseLeave:function(){this.setState({showTooltip:!1})},render:function(){var e=s.default.getComponent("elements.TintableSvg"),t=void 0;if(this.state.showTooltip){var n=s.default.getComponent("rooms.RoomTooltip");t=r.default.createElement(n,{className:"mx_RoleButton_tooltip",label:this.props.label})}return r.default.createElement(i.default,{className:"mx_RoleButton",onClick:this._onClick,onMouseEnter:this._onMouseEnter,onMouseLeave:this._onMouseLeave,"aria-label":this.props.label},r.default.createElement(e,{src:this.props.iconPath,width:this.props.size,height:this.props.size}),t)}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=l(n(0)),o=l(n(1)),i=l(n(3)),a=l(n(24)),s=n(196);function l(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"AddressSelector",propTypes:{onSelected:o.default.func.isRequired,addressList:o.default.arrayOf(s.UserAddressType).isRequired,showAddress:o.default.bool,truncateAt:o.default.number.isRequired,selected:o.default.number,header:o.default.node},getInitialState:function(){return{selected:void 0===this.props.selected?0:this.props.selected,hover:!1}},componentWillReceiveProps:function(e){var t=this.state.selected,n=this._maxSelected(e.addressList);t>n&&this.setState({selected:n})},componentDidUpdate:function(){if(this.scrollElement&&this.props.addressList.length>0&&!this.state.hover){var e=this.addressListElement.getBoundingClientRect().height;this.scrollElement.scrollTop=this.state.selected*e-e}},moveSelectionTop:function(){this.state.selected>0&&this.setState({selected:0,hover:!1})},moveSelectionUp:function(){this.state.selected>0&&this.setState({selected:this.state.selected-1,hover:!1})},moveSelectionDown:function(){this.state.selected<this._maxSelected(this.props.addressList)&&this.setState({selected:this.state.selected+1,hover:!1})},chooseSelection:function(){this.selectAddress(this.state.selected)},onClick:function(e){this.selectAddress(e)},onMouseEnter:function(e){this.setState({selected:e,hover:!0})},onMouseLeave:function(){this.setState({hover:!1})},selectAddress:function(e){0!==this.props.addressList.length&&(this.props.onSelected(e),this.setState({hover:!1}))},createAddressListTiles:function(){var e=this,t=i.default.getComponent("elements.AddressTile"),n=this._maxSelected(this.props.addressList),o=[];if(this.props.addressList.length>0)for(var s=0;s<=n;s++){var l=(0,a.default)({mx_AddressSelector_addressListElement:!0,mx_AddressSelector_selected:this.state.selected===s});o.push(r.default.createElement("div",{className:l,onClick:this.onClick.bind(this,s),onMouseEnter:this.onMouseEnter.bind(this,s),onMouseLeave:this.onMouseLeave,key:this.props.addressList[s].addressType+"/"+this.props.addressList[s].address,ref:function(t){e.addressListElement=t}},r.default.createElement(t,{address:this.props.addressList[s],showAddress:this.props.showAddress,justified:!0,networkName:"vector",networkUrl:"img/search-icon-vector.svg"})))}return o},_maxSelected:function(e){var t=0===e.length?0:e.length-1;return t>this.props.truncateAt-1?this.props.truncateAt-1:t},render:function(){var e=this,t=(0,a.default)({mx_AddressSelector:!0,mx_AddressSelector_empty:0===this.props.addressList.length});return r.default.createElement("div",{className:t,ref:function(t){e.scrollElement=t}},this.props.header,this.createAddressListTiles())}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(0)),o=c(n(1)),i=c(n(24)),a=c(n(3)),s=c(n(8)),l=n(2),u=n(196);function c(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"AddressTile",propTypes:{address:u.UserAddressType.isRequired,canDismiss:o.default.bool,onDismissed:o.default.func,justified:o.default.bool},getDefaultProps:function(){return{canDismiss:!1,onDismissed:function(){},justified:!1}},render:function(){var e=this.props.address,t=e.displayName||e.address,n=[],o=["mx-user-id","mx-room-id"].includes(e.addressType);o&&e.avatarMxc?n.push(s.default.get().mxcUrlToHttp(e.avatarMxc,25,25,"crop")):"email"===e.addressType&&n.push("img/icon-email-user.svg");var u=a.default.getComponent("avatars.BaseAvatar"),c=a.default.getComponent("elements.TintableSvg"),f=(0,i.default)({mx_AddressTile_name:!0,mx_AddressTile_justified:this.props.justified}),d=void 0,p=!1;if(o&&e.isKnown){var m=(0,i.default)({mx_AddressTile_id:!0,mx_AddressTile_justified:this.props.justified});d=r.default.createElement("div",{className:"mx_AddressTile_mx"},r.default.createElement("div",{className:f},t),this.props.showAddress?r.default.createElement("div",{className:m},e.address):r.default.createElement("div",null))}else if(o){var h=(0,i.default)({mx_AddressTile_unknownMx:!0,mx_AddressTile_justified:this.props.justified});d=r.default.createElement("div",{className:h},this.props.address.address)}else if("email"===e.addressType){var _=(0,i.default)({mx_AddressTile_email:!0,mx_AddressTile_justified:this.props.justified}),g=null;e.displayName&&(g=r.default.createElement("div",{className:f},e.displayName)),d=r.default.createElement("div",{className:"mx_AddressTile_mx"},r.default.createElement("div",{className:_},e.address),g)}else{p=!0;var v=(0,i.default)({mx_AddressTile_unknown:!0,mx_AddressTile_justified:this.props.justified});d=r.default.createElement("div",{className:v},(0,l._t)("Unknown Address"))}var y=(0,i.default)({mx_AddressTile:!0,mx_AddressTile_error:p}),b=void 0;return this.props.canDismiss&&(b=r.default.createElement("div",{className:"mx_AddressTile_dismiss",onClick:this.props.onDismissed},r.default.createElement(c,{src:"img/icon-address-delete.svg",width:"9",height:"9"}))),r.default.createElement("div",{className:y},r.default.createElement("div",{className:"mx_AddressTile_avatar"},r.default.createElement(u,{defaultToInitialLetter:!0,width:25,height:25,name:t,title:t,urls:n})),d,b)}}),e.exports=t.default},function(e,t,n){"use strict";(function(r){Object.defineProperty(t,"__esModule",{value:!0});var o=l(n(4)),i=l(n(5)),a=l(n(1624)),s=l(n(1627));function l(e){return e&&e.__esModule?e:{default:e}}r.mxFromWidgetMessaging||(r.mxFromWidgetMessaging=new a.default,r.mxFromWidgetMessaging.start()),r.mxToWidgetMessaging||(r.mxToWidgetMessaging=new s.default,r.mxToWidgetMessaging.start());var u=function(){function e(t,n,i){(0,o.default)(this,e),this.widgetId=t,this.widgetUrl=n,this.target=i,this.fromWidget=r.mxFromWidgetMessaging,this.toWidget=r.mxToWidgetMessaging,this.start()}return(0,i.default)(e,[{key:"messageToWidget",value:function(e){return e.widgetId=this.widgetId,this.toWidget.exec(e,this.target).then(function(e){if(void 0===e.response)throw new Error("Missing 'response' field");if(e.response&&e.response.error){var t=e.response.error,n=String(t.message?t.message:"An error was returned");throw t._error&&console.error(t._error),new Error(n)}return e.response})}},{key:"getScreenshot",value:function(){return console.warn("Requesting screenshot for",this.widgetId),this.messageToWidget({api:"toWidget",action:"screenshot"}).catch(function(e){return new Error("Failed to get screenshot: "+e.message)}).then(function(e){return e.screenshot})}},{key:"getCapabilities",value:function(){var e=this;return console.warn("Requesting capabilities for",this.widgetId),this.messageToWidget({api:"toWidget",action:"capabilities"}).then(function(t){return console.warn("Got capabilities for",e.widgetId,t.capabilities),t.capabilities})}},{key:"sendVisibility",value:function(e){return this.messageToWidget({api:"toWidget",action:"visibility",visible:e}).catch(function(e){console.error("Failed to send visibility: ",e)})}},{key:"start",value:function(){this.fromWidget.addEndpoint(this.widgetId,this.widgetUrl)}},{key:"stop",value:function(){this.fromWidget.removeEndpoint(this.widgetId,this.widgetUrl)}}]),e}();t.default=u,e.exports=t.default}).call(this,n(15))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=f(n(31)),o=f(n(4)),i=f(n(5)),a=f(n(89)),s=f(n(10)),l=f(n(1625)),u=f(n(1626)),c=f(n(247));function f(e){return e&&e.__esModule?e:{default:e}}var d=["0.0.1"],p=function(){function e(){(0,o.default)(this,e),this.widgetMessagingEndpoints=[],this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.onPostMessage=this.onPostMessage.bind(this)}return(0,i.default)(e,[{key:"start",value:function(){window.addEventListener("message",this.onPostMessage)}},{key:"stop",value:function(){window.removeEventListener("message",this.onPostMessage)}},{key:"addEndpoint",value:function(e,t){var n=a.default.parse(t);if(n&&n.protocol&&n.host){var r=n.protocol+"//"+n.host,o=new u.default(e,r);this.widgetMessagingEndpoints.some(function(n){return n.widgetId===e&&n.endpointUrl===t})?console.warn("Add FromWidgetPostMessageApi - Endpoint already registered"):(console.warn("Adding fromWidget messaging endpoint for "+e,o),this.widgetMessagingEndpoints.push(o))}else console.warn("Add FromWidgetPostMessageApi endpoint - Invalid origin:",t)}},{key:"removeEndpoint",value:function(e,t){var n=a.default.parse(t);if(n&&n.protocol&&n.host){var r=n.protocol+"//"+n.host;if(this.widgetMessagingEndpoints&&this.widgetMessagingEndpoints.length>0){var o=this.widgetMessagingEndpoints.length;return this.widgetMessagingEndpoints=this.widgetMessagingEndpoints.filter(function(t){return t.widgetId!=e||t.endpointUrl!=r}),o>this.widgetMessagingEndpoints.length}return!1}console.warn("Remove widget messaging endpoint - Invalid origin")}},{key:"onPostMessage",value:function(e){if(e.origin||(e.origin=e.originalEvent.origin),0!==e.origin.length&&this.trustedEndpoint(e.origin)&&"fromWidget"===e.data.api&&e.data.widgetId){e.data.requestId||console.warn("fromWidget action '"+e.data.action+"' does not have a requestId");var t=e.data.action,n=e.data.widgetId;if("content_loaded"===t)console.warn("Widget reported content loaded for",n),s.default.dispatch({action:"widget_content_loaded",widgetId:n}),this.sendResponse(e,{success:!0});else if("supported_api_versions"===t)this.sendResponse(e,{api:"fromWidget",supported_versions:d});else if("api_version"===t)this.sendResponse(e,{api:"fromWidget",version:"0.0.1"});else if("m.sticker"===t){var r=e.data.data||e.data.widgetData;s.default.dispatch({action:"m.sticker",data:r,widgetId:e.data.widgetId})}else if("integration_manager_open"===t){s.default.dispatch({action:"stickerpicker_close"});var o=e.data.data||e.data.widgetData,i=o&&o.integType?o.integType:null,a=o&&o.integId?o.integId:null;l.default.open(i,a)}else if("set_always_on_screen"===t){var u=e.data.data.value;c.default.widgetHasCapability(n,"m.always_on_screen")&&c.default.setWidgetPersistence(n,u)}else console.warn("Widget postMessage event unhandled"),this.sendError(e,{message:"The postMessage was unhandled"})}}},{key:"trustedEndpoint",value:function(e){return!!e&&this.widgetMessagingEndpoints.some(function(t){return t.endpointUrl===e})}},{key:"sendResponse",value:function(e,t){var n=JSON.parse((0,r.default)(e.data));n.response=t,e.source.postMessage(n,e.origin)}},{key:"sendError",value:function(e,t,n){console.error("Action:"+e.data.action+" failed with message: "+t);var o=JSON.parse((0,r.default)(e.data));o.response={error:{message:t}},n&&(o.response.error._error=n),e.source.postMessage(o,e.origin)}}]),e}();t.default=p,e.exports=t.default},function(e,t,n){"use strict";(function(r){Object.defineProperty(t,"__esModule",{value:!0});var o=m(n(19)),i=n(9),a=m(n(4)),s=m(n(5)),l=m(n(16)),u=m(n(3)),c=m(n(39)),f=m(n(458)),d=m(n(173)),p=m(n(104));function m(e){return e&&e.__esModule?e:{default:e}}r.mxIntegrationManager||(r.mxIntegrationManager={});var h=function(){function e(){(0,a.default)(this,e)}return(0,s.default)(e,null,[{key:"_init",value:function(){if(!r.mxIntegrationManager.client||!r.mxIntegrationManager.connected){if(c.default.get().integrations_ui_url&&c.default.get().integrations_rest_url)return f.default.startListening(),r.mxIntegrationManager.client=new d.default,r.mxIntegrationManager.client.connect().then(function(){r.mxIntegrationManager.connected=!0}).catch(function(e){console.error("Failed to connect to integrations server",e),r.mxIntegrationManager.error=e});console.error("Invalid integration manager config",c.default.get())}}},{key:"open",value:function(){var t=(0,i.coroutine)(o.default.mark(function t(n,a,s){var c,f,d;return o.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,(0,i.resolve)(e._init());case 2:if(c=u.default.getComponent("views.settings.IntegrationsManager"),!r.mxIntegrationManager.error&&r.mxIntegrationManager.client&&r.mxIntegrationManager.client.hasCredentials()){t.next=6;break}return console.error("Scalar error",r.mxIntegrationManager),t.abrupt("return");case 6:f="type_"+n,d=r.mxIntegrationManager.client&&r.mxIntegrationManager.client.hasCredentials()?r.mxIntegrationManager.client.getScalarInterfaceUrlForRoom({roomId:p.default.getRoomId()},f,a):null,l.default.createTrackedDialog("Integrations Manager","",c,{src:d,onFinished:s},"mx_IntegrationsManager");case 9:case"end":return t.stop()}},t,this)}));return function(e,n,r){return t.apply(this,arguments)}}()}]),e}();t.default=h,e.exports=t.default}).call(this,n(15))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(n(4));t.default=function e(t,n){if((0,r.default)(this,e),!t)throw new Error("No widgetId specified in widgetMessageEndpoint constructor");if(!n)throw new Error("No endpoint specified in widgetMessageEndpoint constructor");this.widgetId=t,this.endpointUrl=n},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(31)),o=s(n(4)),i=s(n(5)),a=s(n(9));function s(e){return e&&e.__esModule?e:{default:e}}var l=function(){function e(t){(0,o.default)(this,e),this._timeoutMs=t||5e3,this._counter=0,this._requestMap={},this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.onPostMessage=this.onPostMessage.bind(this)}return(0,i.default)(e,[{key:"start",value:function(){window.addEventListener("message",this.onPostMessage)}},{key:"stop",value:function(){window.removeEventListener("message",this.onPostMessage)}},{key:"onPostMessage",value:function(e){var t=e.data;if(void 0!==t.response){var n=this._requestMap[t.requestId];n&&(delete this._requestMap[t.requestId],n.resolve(t))}}},{key:"exec",value:function(e,t,n){var o=this;return t=t||window.parent,n=n||"*",this._counter+=1,e.requestId=Date.now()+"-"+Math.random().toString(36)+"-"+this._counter,new a.default(function(i,a){o._requestMap[e.requestId]={resolve:i,reject:a},t.postMessage(e,n),o._timeoutMs>0&&setTimeout(function(){o._requestMap[e.requestId]&&(console.error("postMessage request timed out. Sent object: "+(0,r.default)(e),o._requestMap),o._requestMap[e.requestId].reject(new Error("Timed out")),delete o._requestMap[e.requestId])},o._timeoutMs)})}}]),e}();t.default=l,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(0)),o=s(n(3)),i=s(n(1)),a=n(2);function s(e){return e&&e.__esModule?e:{default:e}}var l=function(e){var t=o.default.getComponent("elements.ActionButton");return r.default.createElement(t,{action:"view_create_room",mouseOverAction:e.callout?"callout_create_room":null,label:(0,a._t)("Create new room"),iconPath:"img/icons-create-room.svg",size:e.size,tooltip:e.tooltip})};l.propTypes={size:i.default.string,tooltip:i.default.bool},t.default=l,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(37));t.default=function(e){return i.default.createElement("div",null,i.default.createElement(a.Draggable,{key:e.tag,draggableId:e.tag,index:e.index,type:"draggable-TagTile"},function(t,n){return i.default.createElement("div",null,i.default.createElement("div",(0,r.default)({ref:t.innerRef},t.draggableProps,t.dragHandleProps),i.default.createElement(o.default,e)),t.placeholder)}))};var o=s(n(678)),i=s(n(0)),a=n(197);function s(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=u(n(0)),o=u(n(1)),i=u(n(8)),a=u(n(3)),s=u(n(16)),l=n(2);function u(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"DeviceVerifyButtons",propTypes:{userId:o.default.string.isRequired,device:o.default.object.isRequired},getInitialState:function(){return{device:this.props.device}},componentWillMount:function(){i.default.get().on("deviceVerificationChanged",this.onDeviceVerificationChanged)},componentWillUnmount:function(){i.default.get().removeListener("deviceVerificationChanged",this.onDeviceVerificationChanged)},onDeviceVerificationChanged:function(e,t,n){e===this.props.userId&&t===this.props.device.deviceId&&this.setState({device:n})},onVerifyClick:function(){var e=a.default.getComponent("views.dialogs.DeviceVerifyDialog");s.default.createTrackedDialog("Device Verify Dialog","",e,{userId:this.props.userId,device:this.state.device})},onUnverifyClick:function(){i.default.get().setDeviceVerified(this.props.userId,this.state.device.deviceId,!1)},onBlacklistClick:function(){i.default.get().setDeviceBlocked(this.props.userId,this.state.device.deviceId,!0)},onUnblacklistClick:function(){i.default.get().setDeviceBlocked(this.props.userId,this.state.device.deviceId,!1)},render:function(){var e=null,t=null;return e=this.state.device.isBlocked()?r.default.createElement("button",{className:"mx_MemberDeviceInfo_textButton mx_MemberDeviceInfo_unblacklist",onClick:this.onUnblacklistClick},(0,l._t)("Unblacklist")):r.default.createElement("button",{className:"mx_MemberDeviceInfo_textButton mx_MemberDeviceInfo_blacklist",onClick:this.onBlacklistClick},(0,l._t)("Blacklist")),t=this.state.device.isVerified()?r.default.createElement("button",{className:"mx_MemberDeviceInfo_textButton mx_MemberDeviceInfo_unverify",onClick:this.onUnverifyClick},(0,l._t)("Unverify")):r.default.createElement("button",{className:"mx_MemberDeviceInfo_textButton mx_MemberDeviceInfo_verify",onClick:this.onVerifyClick},(0,l._t)("Verify...")),r.default.createElement("div",{className:"mx_MemberDeviceInfo mx_DeviceVerifyButtons"},t,e)}}),e.exports=t.default},function(e,t,n){"use strict";var r=a(n(0)),o=a(n(1)),i=n(2);function a(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"DialogButtons",propTypes:{primaryButton:o.default.node.isRequired,cancelButton:o.default.node,onPrimaryButtonClick:o.default.func.isRequired,hasCancel:o.default.bool,onCancel:o.default.func,focus:o.default.bool,disabled:o.default.bool},getDefaultProps:function(){return{hasCancel:!0,disabled:!1}},_onCancelClick:function(){this.props.onCancel()},render:function(){var e="mx_Dialog_primary";this.props.primaryButtonClass&&(e+=" "+this.props.primaryButtonClass);var t=void 0;return(this.props.cancelButton||this.props.hasCancel)&&(t=r.default.createElement("button",{onClick:this._onCancelClick,disabled:this.props.disabled},this.props.cancelButton||(0,i._t)("Cancel"))),r.default.createElement("div",{className:"mx_Dialog_buttons"},t,this.props.children,r.default.createElement("button",{className:e,onClick:this.props.onPrimaryButtonClick,autoFocus:this.props.focus,disabled:this.props.disabled},this.props.primaryButton))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=f(n(11)),o=f(n(4)),i=f(n(5)),a=f(n(12)),s=f(n(13)),l=f(n(0)),u=f(n(1)),c=f(n(24));function f(e){return e&&e.__esModule?e:{default:e}}var d=function(e){function t(){(0,o.default)(this,t);var e=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this));return e._collectInput=e._collectInput.bind(e),e._onClearClick=e._onClearClick.bind(e),e._onChange=e._onChange.bind(e),e._onKeyUp=e._onKeyUp.bind(e),e._onJoinButtonClick=e._onJoinButtonClick.bind(e),e.input=null,e.state={value:""},e}return(0,s.default)(t,e),(0,i.default)(t,[{key:"_collectInput",value:function(e){this.input=e}},{key:"_onClearClick",value:function(){this.setState({value:""}),this.input&&(this.input.focus(),this.props.onClear&&this.props.onClear())}},{key:"_onChange",value:function(e){this.input&&(this.setState({value:e.target.value}),this.props.onChange&&this.props.onChange(e.target.value))}},{key:"_onKeyUp",value:function(e){"Enter"==e.key&&this.props.showJoinButton&&this.props.onJoinClick&&this.props.onJoinClick(this.state.value)}},{key:"_onJoinButtonClick",value:function(){this.props.onJoinClick&&this.props.onJoinClick(this.state.value)}},{key:"render",value:function(){var e={mx_DirectorySearchBox:!0};e[this.props.className]=!0;var t=void 0;return this.props.showJoinButton&&(t=l.default.createElement("span",{className:"mx_DirectorySearchBox_joinButton",onClick:this._onJoinButtonClick},"Join")),l.default.createElement("span",{className:(0,c.default)(e)},l.default.createElement("div",{className:"mx_DirectorySearchBox_container"},l.default.createElement("input",{type:"text",name:"dirsearch",value:this.state.value,className:"mx_DirectorySearchBox_input",ref:this._collectInput,onChange:this._onChange,onKeyUp:this._onKeyUp,placeholder:this.props.placeholder,autoFocus:!0}),t,l.default.createElement("span",{className:"mx_DirectorySearchBox_clear_wrapper"},l.default.createElement("span",{className:"mx_DirectorySearchBox_clear",onClick:this._onClearClick}))))}}]),t}(l.default.Component);t.default=d,d.propTypes={className:u.default.string,onChange:u.default.func,onClear:u.default.func,onJoinClick:u.default.func,placeholder:u.default.string,showJoinButton:u.default.bool},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=m(n(14)),o=m(n(11)),i=m(n(4)),a=m(n(5)),s=m(n(12)),l=m(n(13)),u=m(n(0)),c=m(n(1)),f=m(n(24)),d=m(n(27)),p=n(2);function m(e){return e&&e.__esModule?e:{default:e}}var h=function(e){function t(e){(0,i.default)(this,t);var n=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this,e));return n._onMouseEnter=n._onMouseEnter.bind(n),n._onClick=n._onClick.bind(n),n}return(0,l.default)(t,e),(0,a.default)(t,[{key:"_onMouseEnter",value:function(){this.props.onMouseEnter(this.props.dropdownKey)}},{key:"_onClick",value:function(e){e.preventDefault(),e.stopPropagation(),this.props.onClick(this.props.dropdownKey)}},{key:"render",value:function(){var e=(0,f.default)({mx_Dropdown_option:!0,mx_Dropdown_option_highlight:this.props.highlighted});return u.default.createElement("div",{className:e,onClick:this._onClick,onKeyPress:this._onKeyPress,onMouseEnter:this._onMouseEnter},this.props.children)}}]),t}(u.default.Component);h.defaultProps={disabled:!1},h.propTypes={children:c.default.oneOfType([c.default.arrayOf(u.default.PropTypes.node),c.default.node]),highlighted:c.default.bool,dropdownKey:c.default.string,onClick:c.default.func.isRequired,onMouseEnter:c.default.func.isRequired};var _=function(e){function t(e){(0,i.default)(this,t);var n=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this,e));n.dropdownRootElement=null,n.ignoreEvent=null,n._onInputClick=n._onInputClick.bind(n),n._onRootClick=n._onRootClick.bind(n),n._onDocumentClick=n._onDocumentClick.bind(n),n._onMenuOptionClick=n._onMenuOptionClick.bind(n),n._onInputKeyPress=n._onInputKeyPress.bind(n),n._onInputKeyUp=n._onInputKeyUp.bind(n),n._onInputChange=n._onInputChange.bind(n),n._collectRoot=n._collectRoot.bind(n),n._collectInputTextBox=n._collectInputTextBox.bind(n),n._setHighlightedOption=n._setHighlightedOption.bind(n),n.inputTextBox=null,n._reindexChildren(n.props.children);var r=u.default.Children.toArray(e.children)[0];return n.state={expanded:!1,highlightedOption:r?r.key:null,searchQuery:""},n}return(0,l.default)(t,e),(0,a.default)(t,[{key:"componentWillMount",value:function(){document.addEventListener("click",this._onDocumentClick,!1)}},{key:"componentWillUnmount",value:function(){document.removeEventListener("click",this._onDocumentClick,!1)}},{key:"componentWillReceiveProps",value:function(e){if(e.children&&0!==e.children.length){this._reindexChildren(e.children);var t=e.children[0];this.setState({highlightedOption:t?t.key:null})}}},{key:"_reindexChildren",value:function(e){var t=this;this.childrenByKey={},u.default.Children.forEach(e,function(e){t.childrenByKey[e.key]=e})}},{key:"_onDocumentClick",value:function(e){e!==this.ignoreEvent&&this.setState({expanded:!1})}},{key:"_onRootClick",value:function(e){this.ignoreEvent=e}},{key:"_onInputClick",value:function(e){this.props.disabled||this.state.expanded||(this.setState({expanded:!0}),e.preventDefault())}},{key:"_onMenuOptionClick",value:function(e){this.setState({expanded:!1}),this.props.onOptionChange(e)}},{key:"_onInputKeyPress",value:function(e){"Enter"==e.key&&(this.setState({expanded:!1}),this.props.onOptionChange(this.state.highlightedOption),e.preventDefault())}},{key:"_onInputKeyUp",value:function(e){"Escape"==e.key?this.setState({expanded:!1}):"ArrowDown"==e.key?this.setState({highlightedOption:this._nextOption(this.state.highlightedOption)}):"ArrowUp"==e.key&&this.setState({highlightedOption:this._prevOption(this.state.highlightedOption)})}},{key:"_onInputChange",value:function(e){this.setState({searchQuery:e.target.value}),this.props.onSearchChange&&this.props.onSearchChange(e.target.value)}},{key:"_collectRoot",value:function(e){this.dropdownRootElement&&this.dropdownRootElement.removeEventListener("click",this._onRootClick,!1),e&&e.addEventListener("click",this._onRootClick,!1),this.dropdownRootElement=e}},{key:"_collectInputTextBox",value:function(e){this.inputTextBox=e,e&&e.focus()}},{key:"_setHighlightedOption",value:function(e){this.setState({highlightedOption:e})}},{key:"_nextOption",value:function(e){var t=(0,r.default)(this.childrenByKey);return t[(t.indexOf(e)+1)%t.length]}},{key:"_prevOption",value:function(e){var t=(0,r.default)(this.childrenByKey);return t[(t.indexOf(e)-1)%t.length]}},{key:"_getMenuOptions",value:function(){var e=this,t=u.default.Children.map(this.props.children,function(t){return u.default.createElement(h,{key:t.key,dropdownKey:t.key,highlighted:e.state.highlightedOption==t.key,onMouseEnter:e._setHighlightedOption,onClick:e._onMenuOptionClick},t)});return 0===t.length?[u.default.createElement("div",{key:"0",className:"mx_Dropdown_option"},(0,p._t)("No results"))]:t}},{key:"render",value:function(){var e=void 0,t={};this.props.menuWidth&&(t.width=this.props.menuWidth);var n=void 0;if(this.state.expanded&&(this.props.searchEnabled&&(e=u.default.createElement("input",{type:"text",className:"mx_Dropdown_option",ref:this._collectInputTextBox,onKeyPress:this._onInputKeyPress,onKeyUp:this._onInputKeyUp,onChange:this._onInputChange,value:this.state.searchQuery})),n=u.default.createElement("div",{className:"mx_Dropdown_menu",style:t},this._getMenuOptions())),!e){var r=this.props.getShortOption?this.props.getShortOption(this.props.value):this.childrenByKey[this.props.value];e=u.default.createElement("div",{className:"mx_Dropdown_option"},r)}var o={mx_Dropdown:!0,mx_Dropdown_disabled:this.props.disabled};return this.props.className&&(o[this.props.className]=!0),u.default.createElement("div",{className:(0,f.default)(o),ref:this._collectRoot},u.default.createElement(d.default,{className:"mx_Dropdown_input",onClick:this._onInputClick},e,u.default.createElement("span",{className:"mx_Dropdown_arrow"}),n))}}]),t}(u.default.Component);t.default=_,_.propTypes={menuWidth:c.default.number,onOptionChange:c.default.func.isRequired,onSearchChange:c.default.func,searchEnabled:c.default.bool,getShortOption:c.default.func,value:c.default.string,disabled:c.default.bool},e.exports=t.default},function(e,t,n){"use strict";var r=s(n(0)),o=s(n(1)),i=s(n(3)),a=n(2);function s(e){return e&&e.__esModule?e:{default:e}}var l=r.default.createClass({displayName:"EditableItem",propTypes:{initialValue:o.default.string,index:o.default.number,placeholder:o.default.string,onChange:o.default.func,onRemove:o.default.func,onAdd:o.default.func,addOnChange:o.default.bool},onChange:function(e){this.setState({value:e}),this.props.onChange&&this.props.onChange(e,this.props.index),this.props.addOnChange&&this.props.onAdd&&this.props.onAdd(e)},onRemove:function(){this.props.onRemove&&this.props.onRemove(this.props.index)},onAdd:function(){this.props.onAdd&&this.props.onAdd(this.state.value)},render:function(){var e=i.default.getComponent("elements.EditableText");return r.default.createElement("div",{className:"mx_EditableItem"},r.default.createElement(e,{className:"mx_EditableItem_editable",placeholderClassName:"mx_EditableItem_editablePlaceholder",placeholder:this.props.placeholder,blurToCancel:!1,editable:!0,initialValue:this.props.initialValue,onValueChanged:this.onChange}),this.props.onAdd?r.default.createElement("div",{className:"mx_EditableItem_addButton"},r.default.createElement("img",{className:"mx_filterFlipColor",src:"img/plus.svg",width:"14",height:"14",alt:(0,a._t)("Add"),onClick:this.onAdd})):r.default.createElement("div",{className:"mx_EditableItem_removeButton"},r.default.createElement("img",{className:"mx_filterFlipColor",src:"img/cancel-small.svg",width:"14",height:"14",alt:(0,a._t)("Delete"),onClick:this.onRemove})))}});e.exports=r.default.createClass({displayName:"EditableItemList",propTypes:{items:o.default.arrayOf(o.default.string).isRequired,onNewItemChanged:o.default.func,onItemAdded:o.default.func,onItemEdited:o.default.func,onItemRemoved:o.default.func,canEdit:o.default.bool},getDefaultProps:function(){return{onItemAdded:function(){},onItemEdited:function(){},onItemRemoved:function(){},onNewItemChanged:function(){}}},onItemAdded:function(e){this.props.onItemAdded(e)},onItemEdited:function(e,t){0===e.length?this.onItemRemoved(t):this.props.onItemEdited(e,t)},onItemRemoved:function(e){this.props.onItemRemoved(e)},onNewItemChanged:function(e){this.props.onNewItemChanged(e)},render:function(){var e=this,t=this.props.items.map(function(t,n){return r.default.createElement(l,{key:n,index:n,initialValue:t,onChange:e.onItemEdited,onRemove:e.onItemRemoved,placeholder:e.props.placeholder})}),n=this.props.items.length>0?this.props.itemsLabel:this.props.noItemsLabel;return r.default.createElement("div",{className:"mx_EditableItemList"},r.default.createElement("div",{className:"mx_EditableItemList_label"},n),t,this.props.canEdit?r.default.createElement(l,{key:t.length,initialValue:this.props.newItem,onAdd:this.onItemAdded,onChange:this.onNewItemChanged,addOnChange:!0,placeholder:this.props.placeholder}):r.default.createElement("div",null))}})},function(e,t,n){"use strict";var r=i(n(0)),o=i(n(1));function i(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"EditableText",propTypes:{onValueChanged:o.default.func,initialValue:o.default.string,label:o.default.string,placeholder:o.default.string,className:o.default.string,labelClassName:o.default.string,placeholderClassName:o.default.string,blurToCancel:o.default.bool,blurToSubmit:o.default.bool,editable:o.default.bool},Phases:{Display:"display",Edit:"edit"},getDefaultProps:function(){return{onValueChanged:function(){},initialValue:"",label:"",placeholder:"",editable:!0,className:"mx_EditableText",placeholderClassName:"mx_EditableText_placeholder",blurToSubmit:!1}},getInitialState:function(){return{phase:this.Phases.Display}},componentWillReceiveProps:function(e){e.initialValue!==this.props.initialValue&&(this.value=e.initialValue,this.refs.editable_div&&this.showPlaceholder(!this.value))},componentWillMount:function(){this.value="",this.placeholder=!1},componentDidMount:function(){this.value=this.props.initialValue,this.refs.editable_div&&this.showPlaceholder(!this.value)},showPlaceholder:function(e){e?(this.refs.editable_div.textContent=this.props.placeholder,this.refs.editable_div.setAttribute("class",this.props.className+" "+this.props.placeholderClassName),this.placeholder=!0,this.value=""):(this.refs.editable_div.textContent=this.value,this.refs.editable_div.setAttribute("class",this.props.className),this.placeholder=!1)},getValue:function(){return this.value},setValue:function(e){this.value=e,this.showPlaceholder(!this.value)},edit:function(){this.setState({phase:this.Phases.Edit})},cancelEdit:function(){this.setState({phase:this.Phases.Display}),this.value=this.props.initialValue,this.showPlaceholder(!this.value),this.onValueChanged(!1),this.refs.editable_div.blur()},onValueChanged:function(e){this.props.onValueChanged(this.value,e)},onKeyDown:function(e){this.placeholder&&this.showPlaceholder(!1),"Enter"===e.key&&(e.stopPropagation(),e.preventDefault())},onKeyUp:function(e){e.target.textContent?this.placeholder||(this.value=e.target.textContent):this.showPlaceholder(!0),"Enter"===e.key?this.onFinish(e):"Escape"===e.key&&this.cancelEdit()},onClickDiv:function(e){this.props.editable&&this.setState({phase:this.Phases.Edit})},onFocus:function(e){var t=e.target.childNodes[0];if(t){var n=document.createRange();n.setStart(t,0),n.setEnd(t,t.length);var r=window.getSelection();r.removeAllRanges(),r.addRange(n)}},onFinish:function(e,t){var n=this,r=this,o="Enter"===e.key||t;this.setState({phase:this.Phases.Display},function(){n.value!==n.props.initialValue&&r.onValueChanged(o)})},onBlur:function(e){window.getSelection().removeAllRanges(),this.props.blurToCancel?this.cancelEdit():this.onFinish(e,this.props.blurToSubmit),this.showPlaceholder(!this.value)},render:function(){var e=this.props,t=e.className,n=e.editable,o=e.initialValue,i=e.label,a=e.labelClassName;return!n||this.state.phase===this.Phases.Display&&(i||a)&&!this.value?r.default.createElement("div",{className:t+" "+a,onClick:this.onClickDiv},i||o):r.default.createElement("div",{ref:"editable_div",contentEditable:!0,className:t,onKeyDown:this.onKeyDown,onKeyUp:this.onKeyUp,onFocus:this.onFocus,onBlur:this.onBlur})}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=d(n(11)),o=d(n(4)),i=d(n(5)),a=d(n(12)),s=d(n(13)),l=d(n(0)),u=d(n(1)),c=d(n(3)),f=d(n(9));function d(e){return e&&e.__esModule?e:{default:e}}var p=function(e){function t(e,n){(0,o.default)(this,t);var i=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this,e,n));return i._unmounted=!1,i.state={busy:!1,errorString:null,value:e.initialValue},i._onValueChanged=i._onValueChanged.bind(i),i}return(0,s.default)(t,e),(0,i.default)(t,[{key:"componentWillMount",value:function(){var e=this;void 0!==this.props.getInitialValue&&(this.setState({busy:!0}),this.props.getInitialValue().done(function(t){e._unmounted||e.setState({busy:!1,value:t})},function(t){e._unmounted||e.setState({errorString:t.toString(),busy:!1})}))}},{key:"componentWillUnmount",value:function(){this._unmounted=!0}},{key:"_onValueChanged",value:function(e,t){var n=this;t&&(this.setState({busy:!0,errorString:null}),this.props.onSubmit(e).done(function(){n._unmounted||n.setState({busy:!1,value:e})},function(e){n._unmounted||n.setState({errorString:e.toString(),busy:!1})}))}},{key:"render",value:function(){if(this.state.busy){var e=c.default.getComponent("elements.Spinner");return l.default.createElement(e,null)}if(this.state.errorString)return l.default.createElement("div",{className:"error"},this.state.errorString);var t=c.default.getComponent("elements.EditableText");return l.default.createElement(t,{initialValue:this.state.value,placeholder:this.props.placeholder,onValueChanged:this._onValueChanged,blurToSubmit:this.props.blurToSubmit})}}]),t}(l.default.Component);t.default=p,p.propTypes={getInitialValue:u.default.func,initialValue:u.default.string,placeholder:u.default.string,onSubmit:u.default.func,blurToSubmit:u.default.bool},p.defaultProps={initialValue:"",placeholder:"",blurToSubmit:!1,onSubmit:function(e){return f.default.resolve()}},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(128));t.default=l;var o=s(n(0)),i=s(n(1)),a=n(240);function s(e){return e&&e.__esModule?e:{default:e}}function l(e){var t=e.element,n=e.children,i=(0,r.default)(e,["element","children"]);return(0,a.containsEmoji)(n)?(i.dangerouslySetInnerHTML=(0,a.emojifyText)(n),o.default.createElement(t,i)):o.default.createElement(t,i,n)}l.propTypes={element:i.default.string,children:i.default.string.isRequired},l.defaultProps={element:"span"},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(37)),o=s(n(128)),i=s(n(0)),a=s(n(673));function s(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=e.wrappedRef,n=(0,o.default)(e,["wrappedRef"]);return i.default.createElement(a.default,(0,r.default)({ref:t,forceGemini:!0},n),e.children)},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(0)),o=s(n(3)),i=s(n(1)),a=n(2);function s(e){return e&&e.__esModule?e:{default:e}}var l=function(e){var t=o.default.getComponent("elements.ActionButton");return r.default.createElement(t,{action:"view_my_groups",label:(0,a._t)("Communities"),iconPath:"img/icons-groups.svg",size:e.size,tooltip:e.tooltip})};l.propTypes={size:i.default.string,tooltip:i.default.bool},t.default=l,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(0)),o=s(n(3)),i=s(n(1)),a=n(2);function s(e){return e&&e.__esModule?e:{default:e}}var l=function(e){var t=o.default.getComponent("elements.ActionButton");return r.default.createElement(t,{action:"view_home_page",label:(0,a._t)("Home"),iconPath:"img/icons-home.svg",size:e.size,tooltip:e.tooltip})};l.propTypes={size:i.default.string,tooltip:i.default.bool},t.default=l,e.exports=t.default},function(e,t,n){"use strict";var r=n(143),o=n(2),i=n(0),a=n(8),s=n(452),l=n(27),u=n(16),c=n(3);e.exports=i.createClass({displayName:"ImageView",propTypes:{src:i.PropTypes.string.isRequired,name:i.PropTypes.string,link:i.PropTypes.string,width:i.PropTypes.number,height:i.PropTypes.number,fileSize:i.PropTypes.number,onFinished:i.PropTypes.func.isRequired,mxEvent:i.PropTypes.object},componentDidMount:function(){document.addEventListener("keydown",this.onKeyDown)},componentWillUnmount:function(){document.removeEventListener("keydown",this.onKeyDown)},onKeyDown:function(e){27==e.keyCode&&(e.stopPropagation(),e.preventDefault(),this.props.onFinished())},onRedactClick:function(){var e=this,t=c.getComponent("dialogs.ConfirmRedactDialog");u.createTrackedDialog("Confirm Redact Dialog","Image View",t,{onFinished:function(t){if(t){a.get().redactEvent(e.props.mxEvent.getRoomId(),e.props.mxEvent.getId()).catch(function(e){var t=c.getComponent("dialogs.ErrorDialog"),n=e.errcode||e.statusCode;u.createTrackedDialog("You cannot delete this image.","",t,{title:(0,o._t)("Error"),description:(0,o._t)("You cannot delete this image. (%(code)s)",{code:n})})}).done()}}})},getName:function(){var e=this.props.name;return e&&this.props.link&&(e=i.createElement("a",{href:this.props.link,target:"_blank",rel:"noopener"},e)),e},render:function(){var e,t,n,u;this.props.width&&this.props.height&&(t=(e={width:this.props.width,height:this.props.height}).width+"x"+e.height+"px"),this.props.fileSize&&(n=s(this.props.fileSize)),u=n&&t?n+", "+t:n||t;var c,f,d=!!this.props.mxEvent;if(d){var p=this.props.mxEvent.getSender(),m=a.get().getRoom(this.props.mxEvent.getRoomId());if(m){var h=m.getMember(p);h&&(p=h.name)}c=i.createElement("div",{className:"mx_ImageView_metadata"},(0,o._t)("Uploaded on %(date)s by %(user)s",{date:(0,r.formatDate)(new Date(this.props.mxEvent.getTs())),user:p}))}return d&&(f=i.createElement("div",{className:"mx_ImageView_button",onClick:this.onRedactClick},(0,o._t)("Remove"))),i.createElement("div",{className:"mx_ImageView"},i.createElement("div",{className:"mx_ImageView_lhs"}),i.createElement("div",{className:"mx_ImageView_content"},i.createElement("img",{src:this.props.src,style:e}),i.createElement("div",{className:"mx_ImageView_labelWrapper"},i.createElement("div",{className:"mx_ImageView_label"},i.createElement(l,{className:"mx_ImageView_cancel",onClick:this.props.onFinished},i.createElement("img",{src:"img/cancel-white.svg",width:"18",height:"18",alt:(0,o._t)("Close")})),i.createElement("div",{className:"mx_ImageView_shim"}),i.createElement("div",{className:"mx_ImageView_name"},this.getName()),c,i.createElement("a",{className:"mx_ImageView_link",href:this.props.src,download:this.props.name,target:"_blank",rel:"noopener"},i.createElement("div",{className:"mx_ImageView_download"},(0,o._t)("Download this file"),i.createElement("br",null),i.createElement("span",{className:"mx_ImageView_size"},u))),f,i.createElement("div",{className:"mx_ImageView_shim"})))),i.createElement("div",{className:"mx_ImageView_rhs"}))}})},function(e,t,n){"use strict";var r=n(0);e.exports=r.createClass({displayName:"InlineSpinner",render:function(){var e=this.props.w||16,t=this.props.h||16,n=this.props.imgClassName||"";return r.createElement("div",{className:"mx_InlineSpinner"},r.createElement("img",{src:"img/spinner.gif",width:e,height:t,className:n}))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=p(n(11)),o=p(n(4)),i=p(n(5)),a=p(n(12)),s=p(n(13)),l=p(n(0)),u=p(n(1)),c=p(n(3)),f=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(2)),d=p(n(22));function p(e){return e&&e.__esModule?e:{default:e}}var m=function(e){function t(e){(0,o.default)(this,t);var n=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this,e));return n._onSearchChange=n._onSearchChange.bind(n),n.state={searchQuery:"",langs:null},n}return(0,s.default)(t,e),(0,i.default)(t,[{key:"componentWillMount",value:function(){var e=this;if(f.getAllLanguagesFromJson().then(function(t){t.sort(function(e,t){return e.label<t.label?-1:e.label>t.label?1:0}),e.setState({langs:t})}).catch(function(){e.setState({langs:["en"]})}).done(),!this.props.value){var t=d.default.getValue("language",null,!0);if(t)this.props.onOptionChange(t);else{var n=f.normalizeLanguageKey(f.getLanguageFromBrowser());this.props.onOptionChange(n)}}}},{key:"_onSearchChange",value:function(e){this.setState({searchQuery:e})}},{key:"render",value:function(){var e=this;if(null===this.state.langs){var t=c.default.getComponent("elements.Spinner");return l.default.createElement(t,null)}var n=c.default.getComponent("elements.Dropdown"),r=(this.state.searchQuery?this.state.langs.filter(function(t){return function(e,t){return 0==t.label.toUpperCase().indexOf(e.toUpperCase())||t.value.toUpperCase()==e.toUpperCase()}(e.state.searchQuery,t)}):this.state.langs).map(function(e){return l.default.createElement("div",{key:e.value},e.label)}),o=d.default.getValue("language",null,!0),i=null;return o?i=this.props.value||o:(o=navigator.language||navigator.userLanguage,i=this.props.value||o),l.default.createElement(n,{className:this.props.className,onOptionChange:this.props.onOptionChange,onSearchChange:this._onSearchChange,searchEnabled:!0,value:i},r)}}]),t}(l.default.Component);t.default=m,m.propTypes={className:u.default.string,onOptionChange:u.default.func.isRequired,value:u.default.string},e.exports=t.default},function(e,t,n){"use strict";var r=l(n(14)),o=l(n(0)),i=l(n(1)),a=l(n(3)),s=n(2);function l(e){return e&&e.__esModule?e:{default:e}}var u=n(311);e.exports=o.default.createClass({displayName:"MemberEventListSummary",propTypes:{events:i.default.array.isRequired,children:i.default.array.isRequired,summaryLength:i.default.number,avatarsMaxLength:i.default.number,threshold:i.default.number,onToggle:i.default.func,startExpanded:i.default.bool},getInitialState:function(){return{expanded:Boolean(this.props.startExpanded)}},getDefaultProps:function(){return{summaryLength:1,threshold:3,avatarsMaxLength:5}},shouldComponentUpdate:function(e,t){return e.events.length!==this.props.events.length||this.state.expanded||t.expanded||e.events.length<this.props.threshold},_toggleSummary:function(){this.setState({expanded:!this.state.expanded}),this.props.onToggle()},_renderSummary:function(e,t){var n=this,r=t.map(function(t){var r=e[t],o=n._renderNameList(r),i=t.split(","),a=n._getCanonicalTransitions(i),l=n._coalesceRepeatedTransitions(a).map(function(e){return n._getDescriptionForTransition(e.transitionType,r.length,e.repeats)}),u=n._renderCommaSeparatedList(l);return(0,s._t)("%(nameList)s %(transitionList)s",{nameList:o,transitionList:u})});if(!r)return null;var i=a.default.getComponent("elements.EmojiText");return o.default.createElement("span",{className:"mx_TextualEvent mx_MemberEventListSummary_summary"},o.default.createElement(i,null,r.join(", ")))},_renderNameList:function(e){return this._renderCommaSeparatedList(e,this.props.summaryLength)},_getCanonicalTransitions:function(e){for(var t={joined:{after:"left",newTransition:"joined_and_left"},left:{after:"joined",newTransition:"left_and_joined"}},n=[],r=0;r<e.length;r++){var o=e[r],i=e[r+1],a=o;r<e.length-1&&t[o]&&t[o].after===i&&(a=t[o].newTransition,r++),n.push(a)}return n},_coalesceRepeatedTransitions:function(e){for(var t=[],n=0;n<e.length;n++)t.length>0&&t[t.length-1].transitionType===e[n]?t[t.length-1].repeats+=1:t.push({transitionType:e[n],repeats:1});return t},_getDescriptionForTransition:function(e,t,n){var r=null;switch(e){case"joined":r=t>1?(0,s._t)("%(severalUsers)sjoined %(count)s times",{severalUsers:"",count:n}):(0,s._t)("%(oneUser)sjoined %(count)s times",{oneUser:"",count:n});break;case"left":r=t>1?(0,s._t)("%(severalUsers)sleft %(count)s times",{severalUsers:"",count:n}):(0,s._t)("%(oneUser)sleft %(count)s times",{oneUser:"",count:n});break;case"joined_and_left":r=t>1?(0,s._t)("%(severalUsers)sjoined and left %(count)s times",{severalUsers:"",count:n}):(0,s._t)("%(oneUser)sjoined and left %(count)s times",{oneUser:"",count:n});break;case"left_and_joined":r=t>1?(0,s._t)("%(severalUsers)sleft and rejoined %(count)s times",{severalUsers:"",count:n}):(0,s._t)("%(oneUser)sleft and rejoined %(count)s times",{oneUser:"",count:n});break;case"invite_reject":r=t>1?(0,s._t)("%(severalUsers)srejected their invitations %(count)s times",{severalUsers:"",count:n}):(0,s._t)("%(oneUser)srejected their invitation %(count)s times",{oneUser:"",count:n});break;case"invite_withdrawal":r=t>1?(0,s._t)("%(severalUsers)shad their invitations withdrawn %(count)s times",{severalUsers:"",count:n}):(0,s._t)("%(oneUser)shad their invitation withdrawn %(count)s times",{oneUser:"",count:n});break;case"invited":r=t>1?(0,s._t)("were invited %(count)s times",{count:n}):(0,s._t)("was invited %(count)s times",{count:n});break;case"banned":r=t>1?(0,s._t)("were banned %(count)s times",{count:n}):(0,s._t)("was banned %(count)s times",{count:n});break;case"unbanned":r=t>1?(0,s._t)("were unbanned %(count)s times",{count:n}):(0,s._t)("was unbanned %(count)s times",{count:n});break;case"kicked":r=t>1?(0,s._t)("were kicked %(count)s times",{count:n}):(0,s._t)("was kicked %(count)s times",{count:n});break;case"changed_name":r=t>1?(0,s._t)("%(severalUsers)schanged their name %(count)s times",{severalUsers:"",count:n}):(0,s._t)("%(oneUser)schanged their name %(count)s times",{oneUser:"",count:n});break;case"changed_avatar":r=t>1?(0,s._t)("%(severalUsers)schanged their avatar %(count)s times",{severalUsers:"",count:n}):(0,s._t)("%(oneUser)schanged their avatar %(count)s times",{oneUser:"",count:n})}return r},_renderCommaSeparatedList:function(e,t){var n=void 0===t?0:Math.max(e.length-t,0);if(0===e.length)return"";if(1===e.length)return e[0];if(n>0)return e=e.slice(0,t),(0,s._t)("%(items)s and %(count)s others",{items:e.join(", "),count:n});var r=e.pop();return(0,s._t)("%(items)s and %(lastItem)s",{items:e.join(", "),lastItem:r})},_renderAvatars:function(e){var t=e.slice(0,this.props.avatarsMaxLength).map(function(e){return o.default.createElement(u,{key:e.userId,member:e,width:14,height:14})});return o.default.createElement("span",{className:"mx_MemberEventListSummary_avatars",onClick:this._toggleSummary},t)},_getTransitionSequence:function(e){return e.map(this._getTransition)},_getTransition:function(e){switch(e.mxEvent.getContent().membership){case"invite":return"invited";case"ban":return"banned";case"join":return"join"===e.mxEvent.getPrevContent().membership?e.mxEvent.getContent().displayname!==e.mxEvent.getPrevContent().displayname?"changed_name":e.mxEvent.getContent().avatar_url!==e.mxEvent.getPrevContent().avatar_url?"changed_avatar":null:"joined";case"leave":if(e.mxEvent.getSender()===e.mxEvent.getStateKey())switch(e.mxEvent.getPrevContent().membership){case"invite":return"invite_reject";default:return"left"}switch(e.mxEvent.getPrevContent().membership){case"invite":return"invite_withdrawal";case"ban":return"unbanned";case"join":return"kicked";default:return"left"}default:return null}},_getAggregate:function(e){var t=this,n={},o={};return(0,r.default)(e).forEach(function(r){var i=e[r][0],a=i.displayName,s=t._getTransitionSequence(e[r]);n[s]||(n[s]=[],o[s]=-1),n[s].push(a),(-1===o[s]||i.index<o[s])&&(o[s]=i.index)}),{names:n,indices:o}},render:function(){var e=this.props.events,t=e.map(function(e){return e.getId()}).join(","),n=e.length<this.props.threshold,i=this.state.expanded||n,a=null;if(i&&(a=this.props.children),n)return o.default.createElement("div",{className:"mx_MemberEventListSummary","data-scroll-tokens":t},a);var l={},u=[];e.forEach(function(e,t){var n=e.getStateKey();l[n]||(l[n]=[],e.target&&u.push(e.target)),l[n].push({mxEvent:e,displayName:(e.target?e.target.name:null)||n,index:t})});var c=this._getAggregate(l),f=(0,r.default)(c.names).sort(function(e,t){return c.indices[e]>c.indices[t]}),d=null;i||(d=o.default.createElement("div",{className:"mx_EventTile_line"},o.default.createElement("div",{className:"mx_EventTile_info"},this._renderAvatars(u),this._renderSummary(c.names,f))));var p=o.default.createElement("div",{className:"mx_MemberEventListSummary_toggle",onClick:this._toggleSummary},i?(0,s._t)("collapse"):(0,s._t)("expand"));return o.default.createElement("div",{className:"mx_MemberEventListSummary","data-scroll-tokens":t},p,d,i?o.default.createElement("div",{className:"mx_MemberEventListSummary_line"}," "):null,a)}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=m(n(40)),o=m(n(11)),i=m(n(4)),a=m(n(5)),s=m(n(12)),l=m(n(13)),u=m(n(0)),c=m(n(41)),f=m(n(1)),d=m(n(1646)),p=m(n(10));function m(e){return e&&e.__esModule?e:{default:e}}function h(e){return document.getElementById(e)}var _=function(e){function t(){(0,i.default)(this,t);var e=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this));return e.collectChildContainer=e.collectChildContainer.bind(e),e.collectChild=e.collectChild.bind(e),e._repositionChild=e._repositionChild.bind(e),e._onAction=e._onAction.bind(e),e.resizeObserver=new d.default(e._repositionChild),window.addEventListener("resize",e._repositionChild),e._dispatcherRef=p.default.register(e._onAction),e}return(0,l.default)(t,e),(0,a.default)(t,[{key:"collectChildContainer",value:function(e){this.childContainer&&this.resizeObserver.unobserve(this.childContainer),this.childContainer=e,e&&this.resizeObserver.observe(e)}},{key:"collectChild",value:function(e){this.child=e,this.updateChild()}},{key:"componentDidMount",value:function(){this.updateChild()}},{key:"componentDidUpdate",value:function(){this.updateChild()}},{key:"componentWillUnmount",value:function(){this.updateChildVisibility(this.child,!1),this.resizeObserver.disconnect(),window.removeEventListener("resize",this._repositionChild),p.default.unregister(this._dispatcherRef)}},{key:"_onAction",value:function(e){"timeline_resize"===e.action&&this._repositionChild()}},{key:"_repositionChild",value:function(){this.updateChildPosition(this.child,this.childContainer)}},{key:"updateChild",value:function(){this.updateChildPosition(this.child,this.childContainer),this.updateChildVisibility(this.child,!0)}},{key:"updateChildVisibility",value:function(e,t){e&&(e.style.display=t?"block":"none")}},{key:"updateChildPosition",value:function(e,t){if(e&&t){var n=t.getBoundingClientRect();(0,r.default)(e.style,{position:"absolute",top:n.top+"px",left:n.left+"px",width:n.width+"px",height:n.height+"px"})}}},{key:"render",value:function(){var e=u.default.createElement("div",{ref:this.collectChild,style:this.props.style},this.props.children);return c.default.render(e,function(e){var t=h(e);return t||((t=document.createElement("div")).id=e,document.body.appendChild(t)),t}("mx_persistedElement_"+this.props.persistKey)),u.default.createElement("div",{ref:this.collectChildContainer})}}],[{key:"destroyElement",value:function(e){var t=h("mx_persistedElement_"+e);t&&t.remove()}},{key:"isMounted",value:function(e){return Boolean(h("mx_persistedElement_"+e))}}]),t}(u.default.Component);_.propTypes={persistKey:f.default.string.isRequired},t.default=_,e.exports=t.default},function(e,t,n){"use strict";n.r(t),function(e){var n=function(){if("undefined"!=typeof Map)return Map;function e(e,t){var n=-1;return e.some(function(e,r){return e[0]===t&&(n=r,!0)}),n}return function(){function t(){this.__entries__=[]}var n={size:{configurable:!0}};return n.size.get=function(){return this.__entries__.length},t.prototype.get=function(t){var n=e(this.__entries__,t),r=this.__entries__[n];return r&&r[1]},t.prototype.set=function(t,n){var r=e(this.__entries__,t);~r?this.__entries__[r][1]=n:this.__entries__.push([t,n])},t.prototype.delete=function(t){var n=this.__entries__,r=e(n,t);~r&&n.splice(r,1)},t.prototype.has=function(t){return!!~e(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(e,t){void 0===t&&(t=null);for(var n=0,r=this.__entries__;n<r.length;n+=1){var o=r[n];e.call(t,o[1],o[0])}},Object.defineProperties(t.prototype,n),t}()}(),r="undefined"!=typeof window&&"undefined"!=typeof document&&window.document===document,o=void 0!==e&&e.Math===Math?e:"undefined"!=typeof self&&self.Math===Math?self:"undefined"!=typeof window&&window.Math===Math?window:Function("return this")(),i="function"==typeof requestAnimationFrame?requestAnimationFrame.bind(o):function(e){return setTimeout(function(){return e(Date.now())},1e3/60)},a=2,s=["top","right","bottom","left","width","height","size","weight"],l="undefined"!=typeof MutationObserver,u=function(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=function(e,t){var n=!1,r=!1,o=0;function s(){n&&(n=!1,e()),r&&u()}function l(){i(s)}function u(){var e=Date.now();if(n){if(e-o<a)return;r=!0}else n=!0,r=!1,setTimeout(l,t);o=e}return u}(this.refresh.bind(this),20)};u.prototype.addObserver=function(e){~this.observers_.indexOf(e)||this.observers_.push(e),this.connected_||this.connect_()},u.prototype.removeObserver=function(e){var t=this.observers_,n=t.indexOf(e);~n&&t.splice(n,1),!t.length&&this.connected_&&this.disconnect_()},u.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},u.prototype.updateObservers_=function(){var e=this.observers_.filter(function(e){return e.gatherActive(),e.hasActive()});return e.forEach(function(e){return e.broadcastActive()}),e.length>0},u.prototype.connect_=function(){r&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),l?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},u.prototype.disconnect_=function(){r&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},u.prototype.onTransitionEnd_=function(e){var t=e.propertyName;void 0===t&&(t=""),s.some(function(e){return!!~t.indexOf(e)})&&this.refresh()},u.getInstance=function(){return this.instance_||(this.instance_=new u),this.instance_},u.instance_=null;var c=function(e,t){for(var n=0,r=Object.keys(t);n<r.length;n+=1){var o=r[n];Object.defineProperty(e,o,{value:t[o],enumerable:!1,writable:!1,configurable:!0})}return e},f=function(e){return e&&e.ownerDocument&&e.ownerDocument.defaultView||o},d=v(0,0,0,0);function p(e){return parseFloat(e)||0}function m(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];return t.reduce(function(t,n){return t+p(e["border-"+n+"-width"])},0)}function h(e){var t=e.clientWidth,n=e.clientHeight;if(!t&&!n)return d;var r=f(e).getComputedStyle(e),o=function(e){for(var t={},n=0,r=["top","right","bottom","left"];n<r.length;n+=1){var o=r[n],i=e["padding-"+o];t[o]=p(i)}return t}(r),i=o.left+o.right,a=o.top+o.bottom,s=p(r.width),l=p(r.height);if("border-box"===r.boxSizing&&(Math.round(s+i)!==t&&(s-=m(r,"left","right")+i),Math.round(l+a)!==n&&(l-=m(r,"top","bottom")+a)),!function(e){return e===f(e).document.documentElement}(e)){var u=Math.round(s+i)-t,c=Math.round(l+a)-n;1!==Math.abs(u)&&(s-=u),1!==Math.abs(c)&&(l-=c)}return v(o.left,o.top,s,l)}var _="undefined"!=typeof SVGGraphicsElement?function(e){return e instanceof f(e).SVGGraphicsElement}:function(e){return e instanceof f(e).SVGElement&&"function"==typeof e.getBBox};function g(e){return r?_(e)?function(e){var t=e.getBBox();return v(0,0,t.width,t.height)}(e):h(e):d}function v(e,t,n,r){return{x:e,y:t,width:n,height:r}}var y=function(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=v(0,0,0,0),this.target=e};y.prototype.isActive=function(){var e=g(this.target);return this.contentRect_=e,e.width!==this.broadcastWidth||e.height!==this.broadcastHeight},y.prototype.broadcastRect=function(){var e=this.contentRect_;return this.broadcastWidth=e.width,this.broadcastHeight=e.height,e};var b=function(e,t){var n=function(e){var t=e.x,n=e.y,r=e.width,o=e.height,i="undefined"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,a=Object.create(i.prototype);return c(a,{x:t,y:n,width:r,height:o,top:n,right:t+r,bottom:o+n,left:t}),a}(t);c(this,{target:e,contentRect:n})},E=function(e,t,r){if(this.activeObservations_=[],this.observations_=new n,"function"!=typeof e)throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=e,this.controller_=t,this.callbackCtx_=r};E.prototype.observe=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof f(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)||(t.set(e,new y(e)),this.controller_.addObserver(this),this.controller_.refresh())}},E.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof f(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},E.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},E.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach(function(t){t.isActive()&&e.activeObservations_.push(t)})},E.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,t=this.activeObservations_.map(function(e){return new b(e.target,e.broadcastRect())});this.callback_.call(e,t,e),this.clearActive()}},E.prototype.clearActive=function(){this.activeObservations_.splice(0)},E.prototype.hasActive=function(){return this.activeObservations_.length>0};var C="undefined"!=typeof WeakMap?new WeakMap:new n,S=function(e){if(!(this instanceof S))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var t=u.getInstance(),n=new E(e,t,this);C.set(this,n)};["observe","unobserve","disconnect"].forEach(function(e){S.prototype[e]=function(){return(t=C.get(this))[e].apply(t,arguments);var t}});var D=void 0!==o.ResizeObserver?o.ResizeObserver:S;t.default=D}.call(this,n(15))},function(e,t,n){"use strict";var r=u(n(0)),o=u(n(104)),i=u(n(247)),a=u(n(142)),s=u(n(3)),l=u(n(8));function u(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"PersistentApp",getInitialState:function(){return{roomId:o.default.getRoomId(),persistentWidgetId:i.default.getPersistentWidgetId()}},componentWillMount:function(){this._roomStoreToken=o.default.addListener(this._onRoomViewStoreUpdate),i.default.on("update",this._onActiveWidgetStoreUpdate)},componentWillUnmount:function(){this._roomStoreToken&&this._roomStoreToken.remove(),i.default.removeListener("update",this._onActiveWidgetStoreUpdate)},_onRoomViewStoreUpdate:function(e){o.default.getRoomId()!==this.state.roomId&&this.setState({roomId:o.default.getRoomId()})},_onActiveWidgetStoreUpdate:function(){this.setState({persistentWidgetId:i.default.getPersistentWidgetId()})},render:function(){if(this.state.persistentWidgetId){var e=i.default.getRoomId(this.state.persistentWidgetId);if(this.state.roomId!==e){var t=l.default.get().getRoom(e),n=a.default.getRoomWidgets(t).find(function(e){return e.getStateKey()===i.default.getPersistentWidgetId()}),o=a.default.makeAppConfig(n.getStateKey(),n.getContent(),n.sender,e),u=a.default.getCapWhitelistForAppTypeInRoomId(o.type,e),c=s.default.getComponent("elements.AppTile");return r.default.createElement(c,{key:o.id,id:o.id,url:o.url,name:o.name,type:o.type,fullWidth:!0,room:t,userId:l.default.get().credentials.userId,show:!0,creatorUserId:o.creatorUserId,widgetPageTitle:o.data&&o.data.title?o.data.title:"",waitForIframeLoad:o.waitForIframeLoad,whitelistCapabilities:u,showDelete:!1,showMinimise:!1,miniMode:!0})}}return null}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=h(n(19)),o=n(9),i=h(n(0)),a=h(n(3)),s=h(n(10)),l=h(n(24)),u=n(17),c=h(n(1)),f=h(n(8)),d=n(129),p=n(146),m=h(n(145));function h(e){return e&&e.__esModule?e:{default:e}}var _=new RegExp(d.MATRIXTO_URL_PATTERN),g=/^#\/(?:user|room|group)\/(([#!@+])[^\/]*)$/,v=i.default.createClass({displayName:"Pill",statics:{isPillUrl:function(e){return!!_.exec(e)},isMessagePillUrl:function(e){return!!g.exec(e)},roomNotifPos:function(e){return e.indexOf("@room")},roomNotifLen:function(){return"@room".length},TYPE_USER_MENTION:"TYPE_USER_MENTION",TYPE_ROOM_MENTION:"TYPE_ROOM_MENTION",TYPE_GROUP_MENTION:"TYPE_GROUP_MENTION",TYPE_AT_ROOM_MENTION:"TYPE_AT_ROOM_MENTION"},props:{type:c.default.string,url:c.default.string,inMessage:c.default.bool,room:c.default.instanceOf(u.Room),shouldShowPillAvatar:c.default.bool,isSelected:c.default.bool},childContextTypes:{matrixClient:c.default.instanceOf(u.MatrixClient)},getChildContext:function(){return{matrixClient:this._matrixClient}},getInitialState:function(){return{resourceId:null,pillType:null,member:null,group:null,room:null}},componentWillReceiveProps:function(e){var t=this;return(0,o.coroutine)(r.default.mark(function n(){var i,a,s,l,c,d,p,h,y,b,E;return r.default.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:i=_,e.inMessage&&(i=g),a=void 0,s=void 0,l=void 0,e.url&&(a=i.exec(e.url)||[],s=a[1],l=a[2]),c=t.props.type||{"@":v.TYPE_USER_MENTION,"#":v.TYPE_ROOM_MENTION,"!":v.TYPE_ROOM_MENTION,"+":v.TYPE_GROUP_MENTION}[l],d=void 0,p=void 0,h=void 0,n.t0=c,n.next=n.t0===v.TYPE_AT_ROOM_MENTION?13:n.t0===v.TYPE_USER_MENTION?15:n.t0===v.TYPE_ROOM_MENTION?19:n.t0===v.TYPE_GROUP_MENTION?23:33;break;case 13:return h=e.room,n.abrupt("break",33);case 15:return y=e.room.getMember(s),d=y,y||(d=new u.RoomMember(null,s),t.doProfileLookup(s,d)),n.abrupt("break",33);case 19:return b="#"===s[0]?f.default.get().getRooms().find(function(e){return e.getAliases().includes(s)}):f.default.get().getRoom(s),h=b,n.abrupt("break",33);case 23:return E=f.default.get(),n.prev=24,n.next=27,(0,o.resolve)(m.default.getGroupProfileCached(E,s));case 27:p=n.sent,n.next=33;break;case 30:n.prev=30,n.t1=n.catch(24),p={groupId:s,avatarUrl:null,name:null};case 33:t.setState({resourceId:s,pillType:c,member:d,group:p,room:h});case 34:case"end":return n.stop()}},n,t,[[24,30]])}))()},componentWillMount:function(){this._unmounted=!1,this._matrixClient=f.default.get(),this.componentWillReceiveProps(this.props)},componentWillUnmount:function(){this._unmounted=!0},doProfileLookup:function(e,t){var n=this;f.default.get().getProfileInfo(e).then(function(e){n._unmounted||(t.name=e.displayname,t.rawDisplayName=e.displayname,t.events.member={getContent:function(){return{avatar_url:e.avatar_url}},getDirectionalContent:function(){return this.getContent()}},n.setState({member:t}))}).catch(function(t){console.error("Could not retrieve profile data for "+e+":",t)})},onUserPillClicked:function(){s.default.dispatch({action:"view_user",member:this.state.member})},render:function(){var e=a.default.getComponent("views.avatars.BaseAvatar"),t=a.default.getComponent("avatars.MemberAvatar"),n=a.default.getComponent("avatars.RoomAvatar"),r=this.state.resourceId,o=null,s=r,u=void 0,c=void 0,d=this.props.url,m=void 0;switch(this.state.pillType){case v.TYPE_AT_ROOM_MENTION:var h=this.props.room;h&&(s="@room",this.props.shouldShowPillAvatar&&(o=i.default.createElement(n,{room:h,width:16,height:16})),u="mx_AtRoomPill");break;case v.TYPE_USER_MENTION:var _=this.state.member;_&&(c=_.userId,_.rawDisplayName=_.rawDisplayName||"",s=_.rawDisplayName,this.props.shouldShowPillAvatar&&(o=i.default.createElement(t,{member:_,width:16,height:16})),u="mx_UserPill",d=null,m=this.onUserPillClicked);break;case v.TYPE_ROOM_MENTION:var g=this.state.room;g&&(s=(g?(0,p.getDisplayAliasForRoom)(g):null)||r,this.props.shouldShowPillAvatar&&(o=i.default.createElement(n,{room:g,width:16,height:16})),u="mx_RoomPill");break;case v.TYPE_GROUP_MENTION:if(this.state.group){var y=this.state.group,b=y.avatarUrl,E=y.groupId,C=y.name,S=f.default.get();s=E,this.props.shouldShowPillAvatar&&(o=i.default.createElement(e,{name:C||E,width:16,height:16,url:b?S.mxcUrlToHttp(b,16,16):null})),u="mx_GroupPill"}}var D=(0,l.default)(u,{mx_UserPill_me:c===f.default.get().credentials.userId,mx_UserPill_selected:this.props.isSelected});return this.state.pillType?this.props.inMessage?i.default.createElement("a",{className:D,href:d,onClick:m,title:r,"data-offset-key":this.props.offsetKey},o,s):i.default.createElement("span",{className:D,title:r,"data-offset-key":this.props.offsetKey},o,s):null}});t.default=v,e.exports=t.default},function(e,t,n){"use strict";var r=l(n(14)),o=l(n(0)),i=l(n(1)),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(598)),s=n(2);function l(e){return e&&e.__esModule?e:{default:e}}e.exports=o.default.createClass({displayName:"PowerSelector",propTypes:{value:i.default.number.isRequired,maxValue:i.default.number.isRequired,usersDefault:i.default.number.isRequired,controlled:i.default.bool,disabled:i.default.bool,onChange:i.default.func,powerLevelKey:i.default.string},getInitialState:function(){return{levelRoleMap:{},options:[]}},getDefaultProps:function(){return{maxValue:1/0,usersDefault:0}},componentWillMount:function(){this._initStateFromProps(this.props)},componentWillReceiveProps:function(e){this._initStateFromProps(e)},_initStateFromProps:function(e){var t=a.levelRoleMap(e.usersDefault),n=(0,r.default)(t).filter(function(t){return void 0===t||t<=e.maxValue});this.setState({levelRoleMap:t,options:n,custom:void 0===t[e.value]})},onSelectChange:function(e){this.setState({custom:"SELECT_VALUE_CUSTOM"===e.target.value}),"SELECT_VALUE_CUSTOM"!==e.target.value&&this.props.onChange(e.target.value,this.props.powerLevelKey)},onCustomBlur:function(e){this.props.onChange(parseInt(this.refs.custom.value),this.props.powerLevelKey)},onCustomKeyDown:function(e){"Enter"==e.key&&this.props.onChange(parseInt(this.refs.custom.value),this.props.powerLevelKey)},render:function(){var e=this,t=void 0;this.state.custom&&(t=this.props.disabled?o.default.createElement("span",null,(0,s._t)("Custom of %(powerLevel)s",{powerLevel:this.props.value})):o.default.createElement("span",null," = ",o.default.createElement("input",{ref:"custom",type:"text",size:"3",defaultValue:this.props.value,onBlur:this.onCustomBlur,onKeyDown:this.onCustomKeyDown})));var n=void 0;n=this.state.custom?"SELECT_VALUE_CUSTOM":this.state.levelRoleMap[this.props.value]?this.props.value:"SELECT_VALUE_CUSTOM";var r=void 0;if(this.props.disabled)r=o.default.createElement("span",null,this.state.levelRoleMap[n]);else{var i=this.state.options.map(function(t){return{value:t,text:a.textualPowerLevel(t,e.props.usersDefault)}});i.push({value:"SELECT_VALUE_CUSTOM",text:(0,s._t)("Custom level")}),i=i.map(function(e){return o.default.createElement("option",{value:e.value,key:e.value},e.text)}),r=o.default.createElement("select",{ref:"select",value:this.props.controlled?n:void 0,defaultValue:this.props.controlled?void 0:n,onChange:this.onSelectChange},i)}return o.default.createElement("span",{className:"mx_PowerSelector"},r,t)}})},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1));var o=n(0);e.exports=o.createClass({displayName:"ProgressBar",propTypes:{value:r.default.number,max:r.default.number},render:function(){var e={width:this.props.value/this.props.max*100+"%"};return o.createElement("div",{className:"mx_ProgressBar"},o.createElement("div",{className:"mx_ProgressBar_fill",style:e}))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(0)),o=s(n(3)),i=s(n(1)),a=n(2);function s(e){return e&&e.__esModule?e:{default:e}}var l=function(e){var t=o.default.getComponent("elements.ActionButton");return r.default.createElement(t,{action:"view_room_directory",mouseOverAction:e.callout?"callout_room_directory":null,label:(0,a._t)("Room directory"),iconPath:"img/icons-directory.svg",size:e.size,tooltip:e.tooltip})};l.propTypes={size:i.default.string,tooltip:i.default.bool},t.default=l,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(0)),o=s(n(3)),i=s(n(1)),a=n(2);function s(e){return e&&e.__esModule?e:{default:e}}var l=function(e){var t=o.default.getComponent("elements.ActionButton");return r.default.createElement(t,{action:"view_user_settings",label:(0,a._t)("Settings"),iconPath:"img/icons-settings.svg",size:e.size,tooltip:e.tooltip})};l.propTypes={size:i.default.string,tooltip:i.default.bool},t.default=l,e.exports=t.default},function(e,t,n){"use strict";var r=s(n(0)),o=s(n(1)),i=s(n(22)),a=n(2);function s(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"SettingsFlag",propTypes:{name:o.default.string.isRequired,level:o.default.string.isRequired,roomId:o.default.string,label:o.default.string,onChange:o.default.func,isExplicit:o.default.bool,manualSave:o.default.bool,group:o.default.string,value:o.default.any},getInitialState:function(){return{value:i.default.getValueAt(this.props.level,this.props.name,this.props.roomId,this.props.isExplicit)}},onChange:function(e){if(!this.props.group||e.target.checked){var t=this.props.group?this.props.value:e.target.checked;this.props.manualSave?this.setState({value:t}):this.save(t),this.props.onChange&&this.props.onChange(t)}},save:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0;return i.default.setValue(this.props.name,this.props.roomId,this.props.level,void 0!==e?e:this.state.value)},render:function(){var e=this.props.manualSave?this.state.value:i.default.getValueAt(this.props.level,this.props.name,this.props.roomId,this.props.isExplicit),t=i.default.canSetValue(this.props.name,this.props.roomId,this.props.level),n=this.props.label;n=n?(0,a._t)(n):i.default.getDisplayName(this.props.name,this.props.level);var o=this.props.name+"_"+this.props.group+"_"+this.props.value+"_"+this.props.level,s=r.default.createElement("input",{id:o,type:"checkbox",defaultChecked:e,onChange:this.onChange,disabled:!t});return this.props.group&&(s=r.default.createElement("input",{id:o,type:"radio",name:this.props.group,value:this.props.value,checked:e===this.props.value,onChange:this.onChange,disabled:!t})),r.default.createElement("label",null,s,n)}})},function(e,t,n){"use strict";var r=n(0);e.exports=r.createClass({displayName:"Spinner",render:function(){var e=this.props.w||32,t=this.props.h||32,n=this.props.imgClassName||"";return r.createElement("div",{className:"mx_Spinner"},r.createElement("img",{src:"img/spinner.gif",width:e,height:t,className:n}))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(0)),o=s(n(3)),i=s(n(1)),a=n(2);function s(e){return e&&e.__esModule?e:{default:e}}var l=function(e){var t=o.default.getComponent("elements.ActionButton");return r.default.createElement(t,{action:"view_create_chat",mouseOverAction:e.callout?"callout_start_chat":null,label:(0,a._t)("Start chat"),iconPath:"img/icons-people.svg",size:e.size,tooltip:e.tooltip})};l.propTypes={size:i.default.string,tooltip:i.default.bool},t.default=l,e.exports=t.default},function(e,t,n){"use strict";var r=i(n(0)),o=i(n(3));function i(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"ToolTipButton",getInitialState:function(){return{hover:!1}},onMouseOver:function(){this.setState({hover:!0})},onMouseOut:function(){this.setState({hover:!1})},render:function(){var e=o.default.getComponent("rooms.RoomTooltip"),t=this.state.hover?r.default.createElement(e,{className:"mx_ToolTipButton_container",tooltipClassName:"mx_ToolTipButton_helpText",label:this.props.helpText}):r.default.createElement("div",null);return r.default.createElement("div",{className:"mx_ToolTipButton",onMouseOver:this.onMouseOver,onMouseOut:this.onMouseOut},"?",t)}})},function(e,t,n){"use strict";var r=a(n(0)),o=a(n(1)),i=n(2);function a(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"TruncatedList",propTypes:{truncateAt:o.default.number,className:o.default.string,getChildren:o.default.func,getChildCount:o.default.func,createOverflowElement:o.default.func},getDefaultProps:function(){return{truncateAt:2,createOverflowElement:function(e,t){return r.default.createElement("div",null,(0,i._t)("And %(count)s more...",{count:e}))}}},_getChildren:function(e,t){return this.props.getChildren&&this.props.getChildCount?this.props.getChildren(e,t):r.default.Children.toArray(this.props.children).filter(function(e){return null!=e}).slice(e,t)},_getChildCount:function(){return this.props.getChildren&&this.props.getChildCount?this.props.getChildCount():r.default.Children.toArray(this.props.children).filter(function(e){return null!=e}).length},render:function(){var e=null,t=this._getChildCount(),n=t;if(this.props.truncateAt>=0){var o=t-this.props.truncateAt;o>1&&(e=this.props.createOverflowElement(o,t),n=this.props.truncateAt)}var i=this._getChildren(0,n);return r.default.createElement("div",{className:this.props.className},i,e)}})},function(e,t,n){"use strict";var r=a(n(0)),o=a(n(1)),i=n(2);function a(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"UserSelector",propTypes:{onChange:o.default.func,selected_users:o.default.arrayOf(r.default.PropTypes.string)},getDefaultProps:function(){return{onChange:function(){},selected:[]}},addUser:function(e){this.props.selected_users.indexOf(-1==e)&&this.props.onChange(this.props.selected_users.concat([e]))},removeUser:function(e){this.props.onChange(this.props.selected_users.filter(function(t){return t!=e}))},onAddUserId:function(){this.addUser(this.refs.user_id_input.value),this.refs.user_id_input.value=""},render:function(){var e=this;return r.default.createElement("div",null,r.default.createElement("ul",{className:"mx_UserSelector_UserIdList",ref:"list"},this.props.selected_users.map(function(t,n){return r.default.createElement("li",{key:t},t," - ",r.default.createElement("span",{onClick:function(){e.removeUser(t)}},"X"))})),r.default.createElement("input",{type:"text",ref:"user_id_input",defaultValue:"",className:"mx_UserSelector_userIdInput",placeholder:(0,i._t)("ex. @bob:example.com")}),r.default.createElement("button",{onClick:this.onAddUserId,className:"mx_UserSelector_AddUserId"},(0,i._t)("Add User")))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=m(n(11)),o=m(n(4)),i=m(n(5)),a=m(n(12)),s=m(n(13)),l=m(n(0)),u=m(n(1)),c=m(n(10)),f=n(2),d=m(n(3)),p=m(n(90));function m(e){return e&&e.__esModule?e:{default:e}}var h=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this))}return(0,s.default)(t,e),(0,i.default)(t,[{key:"onUsageDataClicked",value:function(){p.default.showDetailsModal()}},{key:"onAccept",value:function(){c.default.dispatch({action:"accept_cookies"})}},{key:"onReject",value:function(){c.default.dispatch({action:"reject_cookies"})}},{key:"render",value:function(){var e=this,t=d.default.getComponent("elements.AccessibleButton");return l.default.createElement("div",{className:"mx_MatrixToolbar"},l.default.createElement("img",{className:"mx_MatrixToolbar_warning",src:"img/warning.svg",width:"24",height:"23",alt:""}),l.default.createElement("div",{className:"mx_MatrixToolbar_content"},this.props.policyUrl?(0,f._t)("Please help improve Riot.im by sending <UsageDataLink>anonymous usage data</UsageDataLink>. This will use a cookie (please see our <PolicyLink>Cookie Policy</PolicyLink>).",{},{UsageDataLink:function(t){return l.default.createElement("a",{className:"mx_MatrixToolbar_link",href:"javascript:;",onClick:e.onUsageDataClicked},t)},PolicyLink:function(t){return l.default.createElement("a",{className:"mx_MatrixToolbar_link",target:"_blank",href:e.props.policyUrl},t)}}):(0,f._t)("Please help improve Riot.im by sending <UsageDataLink>anonymous usage data</UsageDataLink>. This will use a cookie.",{},{UsageDataLink:function(t){return l.default.createElement("a",{className:"mx_MatrixToolbar_link",href:"javascript:;",onClick:e.onUsageDataClicked},t)}})),l.default.createElement(t,{element:"button",className:"mx_MatrixToolbar_action",onClick:this.onAccept},(0,f._t)("Yes, I want to help!")),l.default.createElement(t,{className:"mx_MatrixToolbar_close",onClick:this.onReject},l.default.createElement("img",{src:"img/cancel.svg",width:"18",height:"18",alt:(0,f._t)("Close")})))}}]),t}(l.default.Component);h.propTypes={policyUrl:u.default.string},t.default=h,e.exports=t.default},function(e,t,n){"use strict";var r=s(n(0)),o=n(2),i=s(n(140)),a=s(n(27));function s(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"MatrixToolbar",hideToolbar:function(){i.default.setToolbarHidden(!0)},onClick:function(){i.default.setEnabled(!0)},render:function(){return r.default.createElement("div",{className:"mx_MatrixToolbar"},r.default.createElement("img",{className:"mx_MatrixToolbar_warning",src:"img/warning.svg",width:"24",height:"23"}),r.default.createElement("div",{className:"mx_MatrixToolbar_content"},(0,o._t)("You are not receiving desktop notifications")," ",r.default.createElement("a",{className:"mx_MatrixToolbar_link",onClick:this.onClick}," ",(0,o._t)("Enable them now"))),r.default.createElement(a.default,{className:"mx_MatrixToolbar_close",onClick:this.hideToolbar},r.default.createElement("img",{src:"img/cancel.svg",width:"18",height:"18",alt:(0,o._t)("Close")})))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=l(n(0)),o=l(n(3)),i=l(n(16)),a=l(n(71)),s=n(2);function l(e){return e&&e.__esModule?e:{default:e}}function u(e){var t=e.split("-");return 5==t.length&&"react"==t[1]&&"js"==t[3]}t.default=r.default.createClass({displayName:"NewVersionBar",propTypes:{version:r.default.PropTypes.string.isRequired,newVersion:r.default.PropTypes.string.isRequired,releaseNotes:r.default.PropTypes.string},displayReleaseNotes:function(e){var t=o.default.getComponent("dialogs.QuestionDialog");i.default.createTrackedDialog("Display release notes","",t,{title:(0,s._t)("What's New"),description:r.default.createElement("div",{className:"mx_MatrixToolbar_changelog"},e),button:(0,s._t)("Update"),onFinished:function(e){e&&a.default.get()&&a.default.get().installUpdate()}})},displayChangelog:function(){var e=o.default.getComponent("dialogs.ChangelogDialog");i.default.createTrackedDialog("Display Changelog","",e,{version:this.props.version,newVersion:this.props.newVersion,onFinished:function(e){e&&a.default.get()&&a.default.get().installUpdate()}})},onUpdateClicked:function(){a.default.get().installUpdate()},render:function(){var e=void 0;return this.props.releaseNotes?e=r.default.createElement("button",{className:"mx_MatrixToolbar_action",onClick:this.displayReleaseNotes},(0,s._t)("What's new?")):u(this.props.version)&&u(this.props.newVersion)?e=r.default.createElement("button",{className:"mx_MatrixToolbar_action",onClick:this.displayChangelog},(0,s._t)("What's new?")):a.default.get()&&(e=r.default.createElement("button",{className:"mx_MatrixToolbar_action",onClick:this.onUpdateClicked},(0,s._t)("Update"))),r.default.createElement("div",{className:"mx_MatrixToolbar"},r.default.createElement("img",{className:"mx_MatrixToolbar_warning",src:"img/warning.svg",width:"24",height:"23"}),r.default.createElement("div",{className:"mx_MatrixToolbar_content"},(0,s._t)("A new version of Riot is available.")),e)}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(0)),o=s(n(3)),i=s(n(16)),a=n(2);function s(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"PasswordNagBar",onUpdateClicked:function(){var e=o.default.getComponent("dialogs.SetPasswordDialog");i.default.createTrackedDialog("Set Password Dialog","Password Nag Bar",e)},render:function(){return r.default.createElement("div",{className:"mx_MatrixToolbar mx_MatrixToolbar_clickable",onClick:this.onUpdateClicked},r.default.createElement("img",{className:"mx_MatrixToolbar_warning",src:"img/warning.svg",width:"24",height:"23",alt:""}),r.default.createElement("div",{className:"mx_MatrixToolbar_content"},(0,a._t)("To return to your account in future you need to <u>set a password</u>",{},{u:function(e){return r.default.createElement("u",null,e)}})),r.default.createElement("button",{className:"mx_MatrixToolbar_action"},(0,a._t)("Set Password")))}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=l(n(0)),o=l(n(1)),i=l(n(24)),a=n(2),s=n(248);function l(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"ServerLimitBar",propTypes:{kind:o.default.string,adminContact:o.default.string,limitType:o.default.string.isRequired},getDefaultProps:function(){return{kind:"hard"}},render:function(){var e={mx_MatrixToolbar:!0},t=void 0,n=void 0;return"hard"===this.props.kind?(e.mx_MatrixToolbar_error=!0,t=(0,s.messageForResourceLimitError)(this.props.limitType,this.props.adminContact,{"":(0,a._td)("Please <a>contact your service administrator</a> to continue using the service.")}),n=(0,s.messageForResourceLimitError)(this.props.limitType,this.props.adminContact,{monthly_active_user:(0,a._td)("This homeserver has hit its Monthly Active User limit."),"":(0,a._td)("This homeserver has exceeded one of its resource limits.")})):(e.mx_MatrixToolbar_info=!0,t=(0,s.messageForResourceLimitError)(this.props.limitType,this.props.adminContact,{"":(0,a._td)("Please <a>contact your service administrator</a> to get this limit increased.")}),n=(0,s.messageForResourceLimitError)(this.props.limitType,this.props.adminContact,{monthly_active_user:(0,a._td)("This homeserver has hit its Monthly Active User limit so <b>some users will not be able to log in</b>."),"":(0,a._td)("This homeserver has exceeded one of its resource limits so <b>some users will not be able to log in</b>.")},{b:function(e){return r.default.createElement("b",null,e)}})),r.default.createElement("div",{className:(0,i.default)(e)},r.default.createElement("div",{className:"mx_MatrixToolbar_content"},n," ",t))}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(0)),o=n(2),i=s(n(71)),a=s(n(27));function s(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"UpdateCheckBar",propTypes:{status:r.default.PropTypes.string.isRequired,detail:r.default.PropTypes.string},getDefaultProps:function(){return{detail:""}},getStatusText:function(){var e=i.default.get().getUpdateCheckStatusEnum();switch(this.props.status){case e.ERROR:return(0,o._t)("Error encountered (%(errorDetail)s).",{errorDetail:this.props.detail});case e.CHECKING:return(0,o._t)("Checking for an update...");case e.NOTAVAILABLE:return(0,o._t)("No update available.");case e.DOWNLOADING:return(0,o._t)("Downloading update...")}},hideToolbar:function(){i.default.get().stopUpdateCheck()},render:function(){var e=this.getStatusText();(0,o._t)("Warning");if(!1 in i.default.get())return r.default.createElement("div",null);var t=i.default.get().getUpdateCheckStatusEnum(),n=void 0;return n=[t.ERROR,t.NOTAVAILABLE].includes(this.props.status)?r.default.createElement("img",{className:"mx_MatrixToolbar_warning",src:"img/warning.svg",width:"24",height:"23",alt:""}):r.default.createElement("img",{className:"mx_MatrixToolbar_warning",src:"img/spinner.gif",width:"24",height:"23",alt:""}),r.default.createElement("div",{className:"mx_MatrixToolbar"},n,r.default.createElement("div",{className:"mx_MatrixToolbar_content"},e),r.default.createElement(a.default,{className:"mx_MatrixToolbar_close",onClick:this.hideToolbar},r.default.createElement("img",{src:"img/cancel.svg",width:"18",height:"18",alt:(0,o._t)("Close")})))}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=d(n(0)),o=d(n(1)),i=n(17),a=d(n(3)),s=d(n(10)),l=d(n(27)),u=d(n(24)),c=d(n(8)),f=n(176);function d(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"GroupInviteTile",propTypes:{group:o.default.object.isRequired},contextTypes:{matrixClient:o.default.instanceOf(i.MatrixClient)},getInitialState:function(){return{hover:!1,badgeHover:!1,menuDisplayed:!1,selected:null===this.props.group.groupId}},onClick:function(e){s.default.dispatch({action:"view_group",group_id:this.props.group.groupId})},onMouseEnter:function(){var e={hover:!0};this.context.matrixClient.isGuest()||(e.badgeHover=!0),this.setState(e)},onMouseLeave:function(){this.setState({badgeHover:!1,hover:!1})},_showContextMenu:function(e,t,n){var r=this,o=a.default.getComponent("context_menus.GroupInviteTileContextMenu");(0,f.createMenu)(o,{chevronOffset:n,left:e,top:t,group:this.props.group,onFinished:function(){r.setState({menuDisplayed:!1})}}),this.setState({menuDisplayed:!0})},onContextMenu:function(e){if(e.preventDefault(),!c.default.get().isGuest()){this._showContextMenu(e.clientX,e.clientY-20,12)}},onBadgeClicked:function(e){if(e.stopPropagation(),!c.default.get().isGuest()){this.props.collapsed&&this.setState({hover:!1});var t=e.target.getBoundingClientRect(),n=t.right+window.pageXOffset+3,r=t.top+t.height/2+window.pageYOffset;r-=20,this._showContextMenu(n,r,12)}},render:function(){var e=a.default.getComponent("avatars.BaseAvatar"),t=a.default.getComponent("elements.EmojiText"),n=this.props.group.name||this.props.group.groupId,o=this.props.group.avatarUrl?this.context.matrixClient.mxcUrlToHttp(this.props.group.avatarUrl,24,24):null,i=r.default.createElement(e,{name:n,width:24,height:24,url:o}),s=(0,u.default)("mx_RoomTile_name mx_RoomTile_invite mx_RoomTile_badgeShown",{mx_RoomTile_badgeShown:this.state.badgeHover||this.state.menuDisplayed}),c=r.default.createElement(t,{element:"div",title:this.props.group.groupId,className:s,dir:"auto"},n),f=this.state.badgeHover||this.state.menuDisplayed,d=(0,u.default)("mx_RoomTile_badge mx_RoomTile_highlight",{mx_RoomTile_badgeButton:f}),p=f?"···":"!",m=r.default.createElement("div",{className:d,onClick:this.onBadgeClicked},p),h=void 0;if(this.props.collapsed&&this.state.hover){var _=a.default.getComponent("rooms.RoomTooltip");h=r.default.createElement(_,{className:"mx_RoomTile_tooltip",label:n,dir:"auto"})}var g=(0,u.default)("mx_RoomTile mx_RoomTile_highlight",{mx_RoomTile_menuDisplayed:this.state.menuDisplayed,mx_RoomTile_selected:this.state.selected});return r.default.createElement(l.default,{className:g,onClick:this.onClick,onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onContextMenu:this.onContextMenu},r.default.createElement("div",{className:"mx_RoomTile_avatar"},i),r.default.createElement("div",{className:"mx_RoomTile_nameContainer"},c,m),h)}}),e.exports=t.default},function(e,t,n){"use strict";var r=p(n(1)),o=p(n(0)),i=n(17),a=p(n(10)),s=p(n(16)),l=p(n(3)),u=n(2),c=n(243),f=p(n(81)),d=p(n(27));function p(e){return e&&e.__esModule?e:{default:e}}e.exports=o.default.createClass({displayName:"GroupMemberInfo",contextTypes:{matrixClient:r.default.instanceOf(i.MatrixClient)},propTypes:{groupId:r.default.string,groupMember:c.GroupMemberType,isInvited:r.default.bool},getInitialState:function(){return{removingUser:!1,isUserPrivilegedInGroup:null}},componentWillMount:function(){this._unmounted=!1,this._initGroupStore(this.props.groupId)},componentWillReceiveProps:function(e){e.groupId!==this.props.groupId&&(this._unregisterGroupStore(this.props.groupId),this._initGroupStore(e.groupId))},componentWillUnmount:function(){this._unmounted=!0,this._unregisterGroupStore(this.props.groupId)},_initGroupStore:function(e){f.default.registerListener(e,this.onGroupStoreUpdated)},_unregisterGroupStore:function(e){f.default.unregisterListener(this.onGroupStoreUpdated)},onGroupStoreUpdated:function(){var e=this;this._unmounted||this.setState({isUserInvited:f.default.getGroupInvitedMembers(this.props.groupId).some(function(t){return t.userId===e.props.groupMember.userId}),isUserPrivilegedInGroup:f.default.isUserPrivileged(this.props.groupId)})},_onKick:function(){var e=this,t=l.default.getComponent("dialogs.ConfirmUserActionDialog");s.default.createDialog(t,{matrixClient:this.context.matrixClient,groupMember:this.props.groupMember,action:this.state.isUserInvited?(0,u._t)("Disinvite"):(0,u._t)("Remove from community"),title:this.state.isUserInvited?(0,u._t)("Disinvite this user from community?"):(0,u._t)("Remove this user from community?"),danger:!0,onFinished:function(t){t&&(e.setState({removingUser:!0}),e.context.matrixClient.removeUserFromGroup(e.props.groupId,e.props.groupMember.userId).then(function(){a.default.dispatch({action:"view_user",member:null})}).catch(function(t){var n=l.default.getComponent("dialogs.ErrorDialog");s.default.createTrackedDialog("Failed to remove user from group","",n,{title:(0,u._t)("Error"),description:e.state.isUserInvited?(0,u._t)("Failed to withdraw invitation"):(0,u._t)("Failed to remove user from community")})}).finally(function(){e.setState({removingUser:!1})}))}})},_onCancel:function(e){a.default.dispatch({action:"view_user",member:null})},onRoomTileClick:function(e){a.default.dispatch({action:"view_room",room_id:e})},render:function(){if(this.state.removingUser){var e=l.default.getComponent("elements.Spinner");return o.default.createElement("div",{className:"mx_MemberInfo"},o.default.createElement(e,null))}var t=void 0;if(this.state.isUserPrivilegedInGroup){var n=o.default.createElement(d.default,{className:"mx_MemberInfo_field",onClick:this._onKick},this.state.isUserInvited?(0,u._t)("Disinvite"):(0,u._t)("Remove from community"));n&&(t=o.default.createElement("div",{className:"mx_MemberInfo_adminTools"},o.default.createElement("h3",null,(0,u._t)("Admin Tools")),o.default.createElement("div",{className:"mx_MemberInfo_buttons"},n)))}var r=this.context.matrixClient.mxcUrlToHttp(this.props.groupMember.avatarUrl,36,36,"crop"),i=l.default.getComponent("avatars.BaseAvatar"),a=o.default.createElement(i,{name:this.props.groupMember.userId,width:36,height:36,url:r}),s=this.props.groupMember.displayname||this.props.groupMember.userId,c=l.default.getComponent("elements.EmojiText"),f=l.default.getComponent("elements.GeminiScrollbarWrapper");return o.default.createElement("div",{className:"mx_MemberInfo"},o.default.createElement(f,{autoshow:!0},o.default.createElement(d.default,{className:"mx_MemberInfo_cancel",onClick:this._onCancel},o.default.createElement("img",{src:"img/cancel.svg",width:"18",height:"18",className:"mx_filterFlipColor"})),o.default.createElement("div",{className:"mx_MemberInfo_avatar"},a),o.default.createElement(c,{element:"h2"},s),o.default.createElement("div",{className:"mx_MemberInfo_profile"},o.default.createElement("div",{className:"mx_MemberInfo_profileField"},this.props.groupMember.userId)),t))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=u(n(14)),o=u(n(0)),i=n(2),a=u(n(3)),s=u(n(81)),l=u(n(1));function u(e){return e&&e.__esModule?e:{default:e}}t.default=o.default.createClass({displayName:"GroupMemberList",propTypes:{groupId:l.default.string.isRequired},getInitialState:function(){return{members:null,invitedMembers:null,truncateAt:30}},componentWillMount:function(){this._unmounted=!1,this._initGroupStore(this.props.groupId)},componentWillUnmount:function(){this._unmounted=!0},_initGroupStore:function(e){var t=this;s.default.registerListener(e,function(){t._fetchMembers()})},_fetchMembers:function(){this._unmounted||this.setState({members:s.default.getGroupMembers(this.props.groupId),invitedMembers:s.default.getGroupInvitedMembers(this.props.groupId)})},_createOverflowTile:function(e,t){var n=a.default.getComponent("rooms.EntityTile"),r=a.default.getComponent("avatars.BaseAvatar"),s=(0,i._t)("and %(count)s others...",{count:e});return o.default.createElement(n,{className:"mx_EntityTile_ellipsis",avatarJsx:o.default.createElement(r,{url:"img/ellipsis.svg",name:"...",width:36,height:36}),name:s,presenceState:"online",suppressOnHover:!0,onClick:this._showFullMemberList})},_showFullMemberList:function(){this.setState({truncateAt:-1})},onSearchQueryChanged:function(e){this.setState({searchQuery:e.target.value})},makeGroupMemberTiles:function(e,t){var n=this,i=a.default.getComponent("groups.GroupMemberTile"),s=a.default.getComponent("elements.TruncatedList");(e=(e||"").toLowerCase())&&(t=t.filter(function(t){var n=(t.displayname||"").toLowerCase().includes(e),r=t.userId.toLowerCase().includes(e);return!(!n&&!r)}));var l={};t.forEach(function(e){l[e.userId]||(l[e.userId]=e)}),(t=(0,r.default)(l).map(function(e){return l[e]})).sort(function(e,t){if(e.isPrivileged===t.isPrivileged){var n=e.displayname||e.userId,r=t.displayname||t.userId;return n<r?-1:n>r?1:0}return e.isPrivileged?-1:1});var u=t.map(function(e){return o.default.createElement(i,{key:e.userId,groupId:n.props.groupId,member:e})});return o.default.createElement(s,{className:"mx_MemberList_wrapper",truncateAt:this.state.truncateAt,createOverflowElement:this._createOverflowTile},u)},render:function(){var e=a.default.getComponent("elements.GeminiScrollbarWrapper");if(this.state.fetching||this.state.fetchingInvitedMembers){var t=a.default.getComponent("elements.Spinner");return o.default.createElement("div",{className:"mx_MemberList"},o.default.createElement(t,null))}var n=o.default.createElement("form",{autoComplete:"off"},o.default.createElement("input",{className:"mx_GroupMemberList_query",id:"mx_GroupMemberList_query",type:"text",onChange:this.onSearchQueryChanged,value:this.state.searchQuery,placeholder:(0,i._t)("Filter community members")})),r=this.state.members?o.default.createElement("div",{className:"mx_MemberList_joined"},this.makeGroupMemberTiles(this.state.searchQuery,this.state.members)):o.default.createElement("div",null),s=this.state.invitedMembers&&this.state.invitedMembers.length>0?o.default.createElement("div",{className:"mx_MemberList_invited"},o.default.createElement("h2",null,(0,i._t)("Invited")),this.makeGroupMemberTiles(this.state.searchQuery,this.state.invitedMembers)):o.default.createElement("div",null);return o.default.createElement("div",{className:"mx_MemberList"},n,o.default.createElement(e,{autoshow:!0},r,s))}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=u(n(0)),o=u(n(1)),i=u(n(3)),a=u(n(10)),s=n(243),l=u(n(249));function u(e){return e&&e.__esModule?e:{default:e}}t.default=(0,l.default)(r.default.createClass({displayName:"GroupMemberTile",propTypes:{matrixClient:o.default.object,groupId:o.default.string.isRequired,member:s.GroupMemberType.isRequired},getInitialState:function(){return{}},onClick:function(e){a.default.dispatch({action:"view_group_user",member:this.props.member,groupId:this.props.groupId})},render:function(){var e=i.default.getComponent("avatars.BaseAvatar"),t=i.default.getComponent("rooms.EntityTile"),n=this.props.member.displayname||this.props.member.userId,o=this.props.matrixClient.mxcUrlToHttp(this.props.member.avatarUrl,36,36,"crop"),a=r.default.createElement(e,{name:this.props.member.userId,width:36,height:36,url:o});return r.default.createElement(t,{name:n,avatarJsx:a,onClick:this.onClick,suppressOnHover:!0,presenceState:"online",powerStatus:this.props.member.isPrivileged?t.POWER_STATUS_ADMIN:null})}})),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=l(n(0)),o=l(n(1)),i=l(n(3)),a=l(n(81)),s=n(2);function l(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"GroupPublicityToggle",propTypes:{groupId:o.default.string.isRequired},getInitialState:function(){return{busy:!1,ready:!1,isGroupPublicised:null}},componentWillMount:function(){this._initGroupStore(this.props.groupId)},_initGroupStore:function(e){var t=this;this._groupStoreToken=a.default.registerListener(e,function(){t.setState({isGroupPublicised:a.default.getGroupPublicity(e),ready:a.default.isStateReady(e,a.default.STATE_KEY.Summary)})})},componentWillUnmount:function(){this._groupStoreToken&&this._groupStoreToken.unregister()},_onPublicityToggle:function(e){var t=this;e.stopPropagation(),this.setState({busy:!0,isGroupPublicised:!this.state.isGroupPublicised}),a.default.setGroupPublicity(this.props.groupId,!this.state.isGroupPublicised).then(function(){t.setState({busy:!1})})},render:function(){var e=i.default.getComponent("groups.GroupTile"),t=r.default.createElement("input",{type:"checkbox",onChange:this._onPublicityToggle,checked:this.state.isGroupPublicised}),n=this.state.ready?this.state.isGroupPublicised?(0,s._t)("Flair will appear if enabled in room settings"):(0,s._t)("Flair will not appear"):(0,s._t)("Loading...");return r.default.createElement("div",{className:"mx_GroupPublicity_toggle"},r.default.createElement(e,{groupId:this.props.groupId,showDescription:!1,avatarHeight:40}),r.default.createElement("label",{onClick:this._onPublicityToggle},t,n))}}),e.exports=t.default},function(e,t,n){"use strict";var r=f(n(1)),o=f(n(0)),i=n(17),a=f(n(10)),s=f(n(16)),l=f(n(3)),u=n(2),c=f(n(81));function f(e){return e&&e.__esModule?e:{default:e}}e.exports=o.default.createClass({displayName:"GroupRoomInfo",contextTypes:{matrixClient:r.default.instanceOf(i.MatrixClient)},propTypes:{groupId:r.default.string,groupRoomId:r.default.string},getInitialState:function(){return{isUserPrivilegedInGroup:null,groupRoom:null,groupRoomPublicityLoading:!1,groupRoomRemoveLoading:!1}},componentWillMount:function(){this._initGroupStore(this.props.groupId)},componentWillReceiveProps:function(e){e.groupId!==this.props.groupId&&(this._unregisterGroupStore(this.props.groupId),this._initGroupStore(e.groupId))},componentWillUnmount:function(){this._unregisterGroupStore(this.props.groupId)},_initGroupStore:function(e){c.default.registerListener(e,this.onGroupStoreUpdated)},_unregisterGroupStore:function(e){c.default.unregisterListener(this.onGroupStoreUpdated)},_updateGroupRoom:function(){var e=this;this.setState({groupRoom:c.default.getGroupRooms(this.props.groupId).find(function(t){return t.roomId===e.props.groupRoomId})})},onGroupStoreUpdated:function(){this.setState({isUserPrivilegedInGroup:c.default.isUserPrivileged(this.props.groupId)}),this._updateGroupRoom()},_onRemove:function(e){var t=this,n=this.props.groupId,r=this.state.groupRoom.displayname;e.preventDefault(),e.stopPropagation();var o=l.default.getComponent("dialogs.QuestionDialog");s.default.createTrackedDialog("Confirm removal of group from room","",o,{title:(0,u._t)("Are you sure you want to remove '%(roomName)s' from %(groupId)s?",{roomName:r,groupId:n}),description:(0,u._t)("Removing a room from the community will also remove it from the community page."),button:(0,u._t)("Remove"),onFinished:function(e){if(e){t.setState({groupRoomRemoveLoading:!0});var n=t.props.groupId,o=t.props.groupRoomId;c.default.removeRoomFromGroup(t.props.groupId,o).then(function(){a.default.dispatch({action:"view_group_room_list"})}).catch(function(e){console.error("Error whilst removing "+o+" from "+n,e);var t=l.default.getComponent("dialogs.ErrorDialog");s.default.createTrackedDialog("Failed to remove room from group","",t,{title:(0,u._t)("Failed to remove room from community"),description:(0,u._t)("Failed to remove '%(roomName)s' from %(groupId)s",{groupId:n,roomName:r})})}).finally(function(){t.setState({groupRoomRemoveLoading:!1})})}}})},_onCancel:function(e){a.default.dispatch({action:"view_group_room_list"})},_changeGroupRoomPublicity:function(e){var t=this,n="public"===e.target.value;this.setState({groupRoomPublicityLoading:!0});var r=this.props.groupId,o=this.props.groupRoomId,i=this.state.groupRoom.displayname;c.default.updateGroupRoomVisibility(this.props.groupId,o,n).catch(function(e){console.error("Error whilst changing visibility of "+o+" in "+r+" to "+n,e);var t=l.default.getComponent("dialogs.ErrorDialog");s.default.createTrackedDialog("Failed to remove room from group","",t,{title:(0,u._t)("Something went wrong!"),description:(0,u._t)("The visibility of '%(roomName)s' in %(groupId)s could not be updated.",{roomName:i,groupId:r})})}).finally(function(){t.setState({groupRoomPublicityLoading:!1})})},render:function(){var e=l.default.getComponent("avatars.BaseAvatar"),t=l.default.getComponent("elements.EmojiText"),n=l.default.getComponent("elements.AccessibleButton"),r=l.default.getComponent("elements.InlineSpinner"),i=l.default.getComponent("elements.GeminiScrollbarWrapper");if(this.state.groupRoomRemoveLoading||!this.state.groupRoom){var a=l.default.getComponent("elements.Spinner");return o.default.createElement("div",{className:"mx_MemberInfo"},o.default.createElement(a,null))}var s=void 0;this.state.isUserPrivilegedInGroup&&(s=o.default.createElement("div",{className:"mx_MemberInfo_adminTools"},o.default.createElement("h3",null,(0,u._t)("Admin Tools")),o.default.createElement("div",{className:"mx_MemberInfo_buttons"},o.default.createElement(n,{className:"mx_MemberInfo_field",onClick:this._onRemove},(0,u._t)("Remove from community"))),o.default.createElement("h3",null,(0,u._t)("Visibility in Room List"),this.state.groupRoomPublicityLoading?o.default.createElement(r,null):o.default.createElement("div",null)),o.default.createElement("div",null,o.default.createElement("label",null,o.default.createElement("input",{type:"radio",value:"public",checked:this.state.groupRoom.isPublic,onClick:this._changeGroupRoomPublicity}),o.default.createElement("div",{className:"mx_MemberInfo_label_text"},(0,u._t)("Visible to everyone")))),o.default.createElement("div",null,o.default.createElement("label",null,o.default.createElement("input",{type:"radio",value:"private",checked:!this.state.groupRoom.isPublic,onClick:this._changeGroupRoomPublicity}),o.default.createElement("div",{className:"mx_MemberInfo_label_text"},(0,u._t)("Only visible to community members"))))));var c=this.context.matrixClient.mxcUrlToHttp(this.state.groupRoom.avatarUrl,36,36,"crop"),f=this.state.groupRoom.displayname,d=o.default.createElement(e,{name:f,width:36,height:36,url:c});return o.default.createElement("div",{className:"mx_MemberInfo"},o.default.createElement(i,{autoshow:!0},o.default.createElement(n,{className:"mx_MemberInfo_cancel",onClick:this._onCancel},o.default.createElement("img",{src:"img/cancel.svg",width:"18",height:"18",className:"mx_filterFlipColor"})),o.default.createElement("div",{className:"mx_MemberInfo_avatar"},d),o.default.createElement(t,{element:"h2"},f),o.default.createElement("div",{className:"mx_MemberInfo_profile"},o.default.createElement("div",{className:"mx_MemberInfo_profileField"},this.state.groupRoom.canonical_alias)),s))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=l(n(0)),o=n(2),i=l(n(3)),a=l(n(81)),s=l(n(1));function l(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"GroupRoomList",propTypes:{groupId:s.default.string.isRequired},getInitialState:function(){return{rooms:null,truncateAt:30,searchQuery:""}},componentWillMount:function(){this._unmounted=!1,this._initGroupStore(this.props.groupId)},componentWillUnmount:function(){this._unmounted=!0,this._unregisterGroupStore()},_unregisterGroupStore:function(){a.default.unregisterListener(this.onGroupStoreUpdated)},_initGroupStore:function(e){var t=this;a.default.registerListener(e,this.onGroupStoreUpdated),a.default.on("error",function(n,r){r===e&&t.setState({rooms:null})})},onGroupStoreUpdated:function(){this._unmounted||this.setState({rooms:a.default.getGroupRooms(this.props.groupId)})},_createOverflowTile:function(e,t){var n=i.default.getComponent("rooms.EntityTile"),a=i.default.getComponent("avatars.BaseAvatar"),s=(0,o._t)("and %(count)s others...",{count:e});return r.default.createElement(n,{className:"mx_EntityTile_ellipsis",avatarJsx:r.default.createElement(a,{url:"img/ellipsis.svg",name:"...",width:36,height:36}),name:s,presenceState:"online",suppressOnHover:!0,onClick:this._showFullRoomList})},_showFullRoomList:function(){this.setState({truncateAt:-1})},onSearchQueryChanged:function(e){this.setState({searchQuery:e.target.value})},makeGroupRoomTiles:function(e){var t=this,n=i.default.getComponent("groups.GroupRoomTile");e=(e||"").toLowerCase();var o=this.state.rooms;return e&&(o=o.filter(function(t){var n=(t.name||"").toLowerCase().includes(e),r=(t.canonicalAlias||"").toLowerCase().includes(e);return n||r})),o=o.map(function(e,o){return r.default.createElement(n,{key:o,groupId:t.props.groupId,groupRoom:e})})},render:function(){if(null===this.state.rooms)return null;var e=r.default.createElement("form",{autoComplete:"off"},r.default.createElement("input",{className:"mx_GroupRoomList_query",id:"mx_GroupRoomList_query",type:"text",onChange:this.onSearchQueryChanged,value:this.state.searchQuery,placeholder:(0,o._t)("Filter community rooms")})),t=i.default.getComponent("elements.GeminiScrollbarWrapper"),n=i.default.getComponent("elements.TruncatedList");return r.default.createElement("div",{className:"mx_GroupRoomList"},e,r.default.createElement(t,{autoshow:!0,className:"mx_GroupRoomList_joined mx_GroupRoomList_outerWrapper"},r.default.createElement(n,{className:"mx_GroupRoomList_wrapper",truncateAt:this.state.truncateAt,createOverflowElement:this._createOverflowTile},this.makeGroupRoomTiles(this.state.searchQuery))))}}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=u(n(0)),o=n(17),i=u(n(1)),a=u(n(3)),s=u(n(10)),l=n(243);function u(e){return e&&e.__esModule?e:{default:e}}var c=r.default.createClass({displayName:"GroupRoomTile",propTypes:{groupId:i.default.string.isRequired,groupRoom:l.GroupRoomType.isRequired},onClick:function(e){s.default.dispatch({action:"view_group_room",groupId:this.props.groupId,groupRoomId:this.props.groupRoom.roomId})},render:function(){var e=a.default.getComponent("avatars.BaseAvatar"),t=a.default.getComponent("elements.AccessibleButton"),n=this.context.matrixClient.mxcUrlToHttp(this.props.groupRoom.avatarUrl,36,36,"crop"),o=r.default.createElement(e,{name:this.props.groupRoom.displayname,width:36,height:36,url:n});return r.default.createElement(t,{className:"mx_GroupRoomTile",onClick:this.onClick},r.default.createElement("div",{className:"mx_GroupRoomTile_avatar"},o),r.default.createElement("div",{className:"mx_GroupRoomTile_name"},this.props.groupRoom.displayname))}});c.contextTypes={matrixClient:i.default.instanceOf(o.MatrixClient).isRequired},t.default=c,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=f(n(37)),o=f(n(0)),i=f(n(1)),a=n(17),s=n(197),l=f(n(3)),u=f(n(10)),c=f(n(145));function f(e){return e&&e.__esModule?e:{default:e}}function d(){}var p=o.default.createClass({displayName:"GroupTile",propTypes:{groupId:i.default.string.isRequired,showDescription:i.default.bool,avatarHeight:i.default.number},contextTypes:{matrixClient:i.default.instanceOf(a.MatrixClient).isRequired},getInitialState:function(){return{profile:null}},getDefaultProps:function(){return{showDescription:!0,avatarHeight:50}},componentWillMount:function(){var e=this;c.default.getGroupProfileCached(this.context.matrixClient,this.props.groupId).then(function(t){e.setState({profile:t})}).catch(function(e){console.error("Error whilst getting cached profile for GroupTile",e)})},onMouseDown:function(e){e.preventDefault(),u.default.dispatch({action:"view_group",group_id:this.props.groupId})},render:function(){var e=this,t=l.default.getComponent("avatars.BaseAvatar"),n=l.default.getComponent("elements.AccessibleButton"),i=this.state.profile||{},a=i.name||this.props.groupId,u=this.props.avatarHeight,c=this.props.showDescription?o.default.createElement("div",{className:"mx_GroupTile_desc"},i.shortDescription):o.default.createElement("div",null),f=i.avatarUrl?this.context.matrixClient.mxcUrlToHttp(i.avatarUrl,u,u,"crop"):null;return o.default.createElement(n,{className:"mx_GroupTile",onMouseDown:this.onMouseDown,onClick:d},o.default.createElement(s.Droppable,{droppableId:"my-groups-droppable",type:"draggable-TagTile"},function(n,i){return o.default.createElement("div",{ref:n.innerRef},o.default.createElement(s.Draggable,{key:"GroupTile "+e.props.groupId,draggableId:"GroupTile "+e.props.groupId,index:e.props.groupId,type:"draggable-TagTile"},function(n,i){return o.default.createElement("div",null,o.default.createElement("div",(0,r.default)({ref:n.innerRef},n.draggableProps,n.dragHandleProps),o.default.createElement("div",{className:"mx_GroupTile_avatar"},o.default.createElement(t,{name:a,idName:e.props.groupId,url:f,width:u,height:u}))),n.placeholder?o.default.createElement("div",{className:"mx_GroupTile_avatar"},o.default.createElement(t,{name:a,idName:e.props.groupId,url:f,width:u,height:u})):o.default.createElement("div",null))}))}),o.default.createElement("div",{className:"mx_GroupTile_profile"},o.default.createElement("div",{className:"mx_GroupTile_name"},a),c,o.default.createElement("div",{className:"mx_GroupTile_groupId"},this.props.groupId)))}});t.default=p,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=l(n(0)),o=l(n(1)),i=l(n(3)),a=n(17),s=n(2);function l(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"GroupUserSettings",contextTypes:{matrixClient:o.default.instanceOf(a.MatrixClient)},getInitialState:function(){return{error:null,groups:null}},componentWillMount:function(){var e=this;this.context.matrixClient.getJoinedGroups().done(function(t){e.setState({groups:t.groups||[],error:null})},function(t){console.error(t),e.setState({groups:null,error:t})})},_renderGroupPublicity:function(){var e="",t=r.default.createElement("div",null),n=this.state.groups;if(this.state.error)e=(0,s._t)("Something went wrong when trying to get your communities.");else if(null===n)e=(0,s._t)("Loading...");else if(n.length>0){var o=i.default.getComponent("groups.GroupPublicityToggle"),a=i.default.getComponent("elements.GeminiScrollbarWrapper"),l=n.map(function(e,t){return r.default.createElement(o,{key:t,groupId:e})});e=(0,s._t)("Display your community flair in rooms configured to show it."),t=r.default.createElement("div",{className:"mx_GroupUserSettings_groupPublicity_scrollbox"},r.default.createElement(a,null,l))}else e=(0,s._t)("You're not currently a member of any communities.");return r.default.createElement("div",null,r.default.createElement("h3",null,(0,s._t)("Flair")),r.default.createElement("div",{className:"mx_UserSettings_section"},r.default.createElement("p",null,e),t))},render:function(){var e=this._renderGroupPublicity();return r.default.createElement("div",null,e)}}),e.exports=t.default},function(e,t,n){"use strict";(function(t){var r=s(n(0)),o=s(n(41)),i=s(n(1)),a=n(2);function s(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"CaptchaForm",propTypes:{sitePublicKey:i.default.string,onCaptchaResponse:i.default.func},getDefaultProps:function(){return{onCaptchaResponse:function(){}}},getInitialState:function(){return{errorText:null}},componentWillMount:function(){this._captchaWidgetId=null},componentDidMount:function(){var e=this;if(t.grecaptcha)this._onCaptchaLoaded();else{console.log("Loading recaptcha script..."),window.mx_on_recaptcha_loaded=function(){e._onCaptchaLoaded()};var n=t.location.protocol;if("file:"===n){var i=document.createElement("div");o.default.render((0,a._t)("Robot check is currently unavailable on desktop - please use a <a>web browser</a>",{},{a:function(e){return r.default.createElement("a",{href:"https://riot.im/app"},e)}}),i),this.refs.recaptchaContainer.appendChild(i)}else{var s=document.createElement("script");s.setAttribute("src",n+"//www.google.com/recaptcha/api.js?onload=mx_on_recaptcha_loaded&render=explicit"),this.refs.recaptchaContainer.appendChild(s)}}},componentWillUnmount:function(){this._resetRecaptcha()},_renderRecaptcha:function(e){if(!t.grecaptcha)throw console.error("grecaptcha not loaded!"),new Error("Recaptcha did not load successfully");var n=this.props.sitePublicKey;if(!n)throw console.error("No public key for recaptcha!"),new Error("This server has not supplied enough information for Recaptcha authentication");console.log("Rendering to %s",e),this._captchaWidgetId=t.grecaptcha.render(e,{sitekey:n,callback:this.props.onCaptchaResponse})},_resetRecaptcha:function(){null!==this._captchaWidgetId&&t.grecaptcha.reset(this._captchaWidgetId)},_onCaptchaLoaded:function(){console.log("Loaded recaptcha script.");try{this._renderRecaptcha("mx_recaptcha")}catch(e){this.setState({errorText:e.toString()})}},render:function(){var e=null;return this.state.errorText&&(e=r.default.createElement("div",{className:"error"},this.state.errorText)),r.default.createElement("div",{ref:"recaptchaContainer"},(0,a._t)("This Home Server would like to make sure you are not a robot"),r.default.createElement("br",null),r.default.createElement("div",{id:"mx_recaptcha"}),e)}})}).call(this,n(15))},function(e,t,n){"use strict";var r=a(n(0)),o=a(n(1)),i=n(2);function a(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"CasLogin",propTypes:{onSubmit:o.default.func},render:function(){return r.default.createElement("div",null,r.default.createElement("button",{onClick:this.props.onSubmit},(0,i._t)("Sign in with CAS")))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=p(n(20)),o=p(n(11)),i=p(n(4)),a=p(n(5)),s=p(n(12)),l=p(n(13)),u=p(n(0)),c=p(n(1)),f=p(n(3)),d=n(668);function p(e){return e&&e.__esModule?e:{default:e}}var m=new Object(null),h=!0,_=!1,g=void 0;try{for(var v,y=(0,r.default)(d.COUNTRIES);!(h=(v=y.next()).done);h=!0){var b=v.value;m[b.iso2]=b}}catch(e){_=!0,g=e}finally{try{!h&&y.return&&y.return()}finally{if(_)throw g}}var E=function(e){function t(e){(0,i.default)(this,t);var n=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this,e));return n._onSearchChange=n._onSearchChange.bind(n),n._onOptionChange=n._onOptionChange.bind(n),n._getShortOption=n._getShortOption.bind(n),n.state={searchQuery:""},n}return(0,l.default)(t,e),(0,a.default)(t,[{key:"componentWillMount",value:function(){this.props.value||this.props.onOptionChange(d.COUNTRIES[0])}},{key:"_onSearchChange",value:function(e){this.setState({searchQuery:e})}},{key:"_onOptionChange",value:function(e){this.props.onOptionChange(m[e])}},{key:"_flagImgForIso2",value:function(e){return u.default.createElement("img",{src:"img/flags/"+e+".png"})}},{key:"_getShortOption",value:function(e){if(this.props.isSmall){var t=void 0;return this.props.showPrefix&&(t="+"+m[e].prefix),u.default.createElement("span",null,this._flagImgForIso2(e),t)}}},{key:"render",value:function(){var e=this,t=f.default.getComponent("elements.Dropdown"),n=void 0;if(this.state.searchQuery){if(n=d.COUNTRIES.filter(function(e,t){return"+"===e[0]&&(e=e.slice(1)),0==t.name.toUpperCase().indexOf(e.toUpperCase())||t.iso2==e.toUpperCase()||-1!==t.prefix.indexOf(e)}.bind(this,this.state.searchQuery)),2==this.state.searchQuery.length&&m[this.state.searchQuery.toUpperCase()]){var r=m[this.state.searchQuery.toUpperCase()];(n=n.filter(function(e){return e.iso2!=r.iso2})).unshift(r)}}else n=d.COUNTRIES;var o=n.map(function(t){return u.default.createElement("div",{key:t.iso2},e._flagImgForIso2(t.iso2),t.name," ",u.default.createElement("span",null,"(+",t.prefix,")"))}),i=this.props.value||d.COUNTRIES[0].iso2;return u.default.createElement(t,{className:this.props.className+" left_aligned",onOptionChange:this._onOptionChange,onSearchChange:this._onSearchChange,menuWidth:298,getShortOption:this._getShortOption,value:i,searchEnabled:!0,disabled:this.props.disabled},o)}}]),t}(u.default.Component);t.default=E,E.propTypes={className:c.default.string,isSmall:c.default.bool,showPrefix:c.default.bool,onOptionChange:c.default.func.isRequired,value:c.default.string,disabled:c.default.bool},e.exports=t.default},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(0)),o=n(2);e.exports=r.default.createClass({displayName:"CustomServerDialog",render:function(){return r.default.createElement("div",{className:"mx_ErrorDialog"},r.default.createElement("div",{className:"mx_Dialog_title"},(0,o._t)("Custom Server Options")),r.default.createElement("div",{className:"mx_Dialog_content"},r.default.createElement("span",null,(0,o._t)("You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL."),r.default.createElement("br",null),(0,o._t)("This allows you to use this app with an existing Matrix account on a different home server."),r.default.createElement("br",null),r.default.createElement("br",null),(0,o._t)("You can also set a custom identity server but this will typically prevent interaction with users based on email address."))),r.default.createElement("div",{className:"mx_Dialog_buttons"},r.default.createElement("button",{onClick:this.props.onFinished,autoFocus:!0},(0,o._t)("Dismiss"))))}})},function(e,t,n){"use strict";var r=n(2),o=function(e){return e&&e.__esModule?e:{default:e}}(n(0));e.exports=o.default.createClass({displayName:"LoginFooter",render:function(){return o.default.createElement("div",{className:"mx_Login_links"},o.default.createElement("a",{href:"https://matrix.org"},(0,r._t)("powered by Matrix")))}})},function(e,t,n){"use strict";var r=n(0);e.exports=r.createClass({displayName:"LoginHeader",render:function(){return r.createElement("div",{className:"mx_Login_logo"},"Matrix")}})},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(22));var o=n(0);e.exports=o.createClass({displayName:"LoginPage",render:function(){return"status"===r.default.getValue("theme")?o.createElement("div",{className:"mx_StatusLogin"},o.createElement("div",{className:"mx_StatusLogin_brand"},o.createElement("img",{src:"themes/status/img/logo.svg",alt:"Status",width:"221",height:"53"})),o.createElement("div",{className:"mx_StatusLogin_content"},o.createElement("div",{className:"mx_StatusLogin_header"},o.createElement("h1",null,"Status Community Chat"),o.createElement("div",{className:"mx_StatusLogin_subtitle"},"A safer, decentralised communication platform ",o.createElement("a",{href:"https://riot.im"},"powered by Riot"))),this.props.children,o.createElement("div",{className:"mx_StatusLogin_footer"},o.createElement("p",null,"This channel is for our development community."),o.createElement("p",null,"Interested in SNT and discussions on the cryptocurrency market?"),o.createElement("p",null,o.createElement("a",{href:"https://t.me/StatusNetworkChat",target:"_blank",className:"mx_StatusLogin_footer_cta"},"Join Telegram Chat"))))):o.createElement("div",{className:"mx_Login"},this.props.children)}})},function(e,t,n){"use strict";var r=h(n(11)),o=h(n(4)),i=h(n(5)),a=h(n(12)),s=h(n(13)),l=h(n(0)),u=h(n(1)),c=h(n(24)),f=h(n(3)),d=n(2),p=n(667),m=h(n(39));function h(e){return e&&e.__esModule?e:{default:e}}var _=function(e){function t(e){(0,o.default)(this,t);var n=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this,e));return n.state={username:n.props.initialUsername,password:n.props.initialPassword,phoneCountry:n.props.initialPhoneCountry,phoneNumber:n.props.initialPhoneNumber,loginType:t.LOGIN_FIELD_MXID},n.onSubmitForm=n.onSubmitForm.bind(n),n.onUsernameChanged=n.onUsernameChanged.bind(n),n.onLoginTypeChange=n.onLoginTypeChange.bind(n),n.onPhoneCountryChanged=n.onPhoneCountryChanged.bind(n),n.onPhoneNumberChanged=n.onPhoneNumberChanged.bind(n),n.onPasswordChanged=n.onPasswordChanged.bind(n),n.isLoginEmpty=n.isLoginEmpty.bind(n),n}return(0,s.default)(t,e),(0,i.default)(t,[{key:"componentWillMount",value:function(){this._passwordField=null,this._loginField=null}},{key:"componentWillReceiveProps",value:function(e){!this.props.loginIncorrect&&e.loginIncorrect&&(0,p.field_input_incorrect)(this.isLoginEmpty()?this._loginField:this._passwordField)}},{key:"onSubmitForm",value:function(e){e.preventDefault();var n="",r=null,o=null,i=void 0;switch(this.state.loginType){case t.LOGIN_FIELD_EMAIL:(n=this.state.username)||(i=(0,d._t)("The email field must not be blank."));break;case t.LOGIN_FIELD_MXID:(n=this.state.username)||(i=(0,d._t)("The user name field must not be blank."));break;case t.LOGIN_FIELD_PHONE:r=this.state.phoneCountry,(o=this.state.phoneNumber)||(i=(0,d._t)("The phone number field must not be blank."))}i?this.props.onError(i):this.state.password?this.props.onSubmit(n,r,o,this.state.password):this.props.onError((0,d._t)("The password field must not be blank."))}},{key:"onUsernameChanged",value:function(e){this.setState({username:e.target.value}),this.props.onUsernameChanged(e.target.value)}},{key:"onLoginTypeChange",value:function(e){this.props.onError(null),this.setState({loginType:e,username:""})}},{key:"onPhoneCountryChanged",value:function(e){this.setState({phoneCountry:e.iso2,phonePrefix:e.prefix}),this.props.onPhoneCountryChanged(e.iso2)}},{key:"onPhoneNumberChanged",value:function(e){this.setState({phoneNumber:e.target.value}),this.props.onPhoneNumberChanged(e.target.value)}},{key:"onPasswordChanged",value:function(e){this.setState({password:e.target.value}),this.props.onPasswordChanged(e.target.value)}},{key:"renderLoginField",value:function(e,n){var r=this,o={mx_Login_field:!0,mx_Login_field_disabled:n};switch(e){case t.LOGIN_FIELD_EMAIL:return o.mx_Login_email=!0,o.error=this.props.loginIncorrect&&!this.state.username,l.default.createElement("input",{className:(0,c.default)(o),ref:function(e){r._loginField=e},key:"email_input",type:"text",name:"username",onChange:this.onUsernameChanged,placeholder:"joe@example.com",value:this.state.username,autoFocus:!0,disabled:n});case t.LOGIN_FIELD_MXID:return o.mx_Login_username=!0,o.error=this.props.loginIncorrect&&!this.state.username,l.default.createElement("input",{className:(0,c.default)(o),ref:function(e){r._loginField=e},key:"username_input",type:"text",name:"username",onChange:this.onUsernameChanged,placeholder:m.default.get().disable_custom_urls?(0,d._t)("Username on %(hs)s",{hs:this.props.hsUrl.replace(/^https?:\/\//,"")}):(0,d._t)("User name"),value:this.state.username,autoFocus:!0,disabled:n});case t.LOGIN_FIELD_PHONE:var i=f.default.getComponent("views.login.CountryDropdown");return o.mx_Login_phoneNumberField=!0,o.mx_Login_field_has_prefix=!0,o.error=this.props.loginIncorrect&&!this.state.phoneNumber,l.default.createElement("div",{className:"mx_Login_phoneSection"},l.default.createElement(i,{className:"mx_Login_phoneCountry mx_Login_field_prefix",onOptionChange:this.onPhoneCountryChanged,value:this.state.phoneCountry,isSmall:!0,showPrefix:!0,disabled:n}),l.default.createElement("input",{className:(0,c.default)(o),ref:function(e){r._loginField=e},key:"phone_input",type:"text",name:"phoneNumber",onChange:this.onPhoneNumberChanged,placeholder:(0,d._t)("Mobile phone number"),value:this.state.phoneNumber,autoFocus:!0,disabled:n}))}}},{key:"isLoginEmpty",value:function(){switch(this.state.loginType){case t.LOGIN_FIELD_EMAIL:case t.LOGIN_FIELD_MXID:return!this.state.username;case t.LOGIN_FIELD_PHONE:return!this.state.phoneCountry||!this.state.phoneNumber}}},{key:"render",value:function(){var e=this,n=void 0;this.props.onForgotPasswordClick&&(n=l.default.createElement("a",{className:"mx_Login_forgot",onClick:this.props.onForgotPasswordClick,href:"#"},(0,d._t)("Forgot your password?")));var r="";if(this.props.hsUrl)try{var o=new URL(this.props.hsUrl);r=(0,d._t)("%(serverName)s Matrix ID",{serverName:o.hostname})}catch(e){}var i=(0,c.default)({mx_Login_field:!0,mx_Login_field_disabled:""===r,error:this.props.loginIncorrect&&!this.isLoginEmpty()}),a=f.default.getComponent("elements.Dropdown"),s=this.renderLoginField(this.state.loginType,""===r),u=void 0;return m.default.get().disable_3pid_login||(u=l.default.createElement("div",{className:"mx_Login_type_container"},l.default.createElement("label",{className:"mx_Login_type_label"},(0,d._t)("Sign in with")),l.default.createElement(a,{className:"mx_Login_type_dropdown",value:this.state.loginType,disabled:""===r,onOptionChange:this.onLoginTypeChange},l.default.createElement("span",{key:t.LOGIN_FIELD_MXID},r),l.default.createElement("span",{key:t.LOGIN_FIELD_EMAIL},(0,d._t)("Email address")),l.default.createElement("span",{key:t.LOGIN_FIELD_PHONE},(0,d._t)("Phone"))))),l.default.createElement("div",null,l.default.createElement("form",{onSubmit:this.onSubmitForm},u,s,l.default.createElement("input",{className:i,ref:function(t){e._passwordField=t},type:"password",name:"password",value:this.state.password,onChange:this.onPasswordChanged,placeholder:(0,d._t)("Password"),disabled:""===r}),l.default.createElement("br",null),n,l.default.createElement("input",{className:"mx_Login_submit",type:"submit",value:(0,d._t)("Sign in"),disabled:""===r})))}}]),t}(l.default.Component);_.defaultProps={onError:function(){},onUsernameChanged:function(){},onPasswordChanged:function(){},onPhoneCountryChanged:function(){},onPhoneNumberChanged:function(){},initialUsername:"",initialPhoneCountry:"",initialPhoneNumber:"",initialPassword:"",loginIncorrect:!1,hsDomain:""},_.LOGIN_FIELD_EMAIL="login_field_email",_.LOGIN_FIELD_MXID="login_field_mxid",_.LOGIN_FIELD_PHONE="login_field_phone",_.propTypes={onSubmit:u.default.func.isRequired,onError:u.default.func,onForgotPasswordClick:u.default.func,initialUsername:u.default.string,initialPhoneCountry:u.default.string,initialPhoneNumber:u.default.string,initialPassword:u.default.string,onUsernameChanged:u.default.func,onPhoneCountryChanged:u.default.func,onPhoneNumberChanged:u.default.func,onPasswordChanged:u.default.func,loginIncorrect:u.default.bool},e.exports=_},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1)),o=n(2);var i=n(0),a=n(16),s=n(3);e.exports=i.createClass({displayName:"ServerConfig",propTypes:{onServerConfigChange:r.default.func,defaultHsUrl:r.default.string,defaultIsUrl:r.default.string,customHsUrl:r.default.string,customIsUrl:r.default.string,withToggleButton:r.default.bool,delayTimeMs:r.default.number},getDefaultProps:function(){return{onServerConfigChange:function(){},customHsUrl:"",customIsUrl:"",withToggleButton:!1,delayTimeMs:0}},getInitialState:function(){return{hs_url:this.props.customHsUrl,is_url:this.props.customIsUrl,configVisible:!this.props.withToggleButton||this.props.customHsUrl!==this.props.defaultHsUrl||this.props.customIsUrl!==this.props.defaultIsUrl}},onHomeserverChanged:function(e){this.setState({hs_url:e.target.value},function(){this._hsTimeoutId=this._waitThenInvoke(this._hsTimeoutId,function(){var e=this.state.hs_url.trim().replace(/\/$/,"");""===e&&(e=this.props.defaultHsUrl),this.props.onServerConfigChange({hsUrl:this.state.hs_url,isUrl:this.state.is_url})})})},onIdentityServerChanged:function(e){this.setState({is_url:e.target.value},function(){this._isTimeoutId=this._waitThenInvoke(this._isTimeoutId,function(){var e=this.state.is_url.trim().replace(/\/$/,"");""===e&&(e=this.props.defaultIsUrl),this.props.onServerConfigChange({hsUrl:this.state.hs_url,isUrl:this.state.is_url})})})},_waitThenInvoke:function(e,t){return e&&clearTimeout(e),setTimeout(t.bind(this),this.props.delayTimeMs)},onServerConfigVisibleChange:function(e,t){this.setState({configVisible:e}),e?this.props.onServerConfigChange({hsUrl:this.state.hs_url,isUrl:this.state.is_url}):this.props.onServerConfigChange({hsUrl:this.props.defaultHsUrl,isUrl:this.props.defaultIsUrl})},showHelpPopup:function(){var e=s.getComponent("login.CustomServerDialog");a.createTrackedDialog("Custom Server Dialog","",e)},render:function(){var e={};e.display=this.state.configVisible?"block":"none";var t=void 0;return this.props.withToggleButton&&(t=i.createElement("div",{className:"mx_ServerConfig_selector"},i.createElement("input",{className:"mx_Login_radio",id:"basic",name:"configVisible",type:"radio",checked:!this.state.configVisible,onChange:this.onServerConfigVisibleChange.bind(this,!1)}),i.createElement("label",{className:"mx_Login_label",htmlFor:"basic"},(0,o._t)("Default server")),"  ",i.createElement("input",{className:"mx_Login_radio",id:"advanced",name:"configVisible",type:"radio",checked:this.state.configVisible,onChange:this.onServerConfigVisibleChange.bind(this,!0)}),i.createElement("label",{className:"mx_Login_label",htmlFor:"advanced"},(0,o._t)("Custom server")))),i.createElement("div",null,t,i.createElement("div",{style:e},i.createElement("div",{className:"mx_ServerConfig"},i.createElement("label",{className:"mx_Login_label mx_ServerConfig_hslabel",htmlFor:"hsurl"},(0,o._t)("Home server URL")),i.createElement("input",{className:"mx_Login_field",id:"hsurl",type:"text",placeholder:this.props.defaultHsUrl,disabled:!this.props.withToggleButton,value:this.state.hs_url,onChange:this.onHomeserverChanged}),i.createElement("label",{className:"mx_Login_label mx_ServerConfig_islabel",htmlFor:"isurl"},(0,o._t)("Identity server URL")),i.createElement("input",{className:"mx_Login_field",id:"isurl",type:"text",placeholder:this.props.defaultIsUrl,disabled:!this.props.withToggleButton,value:this.state.is_url,onChange:this.onIdentityServerChanged}),i.createElement("a",{className:"mx_ServerConfig_help",href:"#",onClick:this.showHelpPopup},(0,o._t)("What does this mean?")))))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=d(n(11)),o=d(n(4)),i=d(n(5)),a=d(n(12)),s=d(n(13)),l=d(n(0)),u=d(n(1)),c=n(2),f=n(143);function d(e){return e&&e.__esModule?e:{default:e}}var p=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,i.default)(t,[{key:"getLabel",value:function(){var e=new Date(this.props.ts),t=new Date,n=new Date,r=[(0,c._t)("Sunday"),(0,c._t)("Monday"),(0,c._t)("Tuesday"),(0,c._t)("Wednesday"),(0,c._t)("Thursday"),(0,c._t)("Friday"),(0,c._t)("Saturday")];return n.setDate(t.getDate()-1),e.toDateString()===t.toDateString()?(0,c._t)("Today"):e.toDateString()===n.toDateString()?(0,c._t)("Yesterday"):t.getTime()-e.getTime()<5184e5?r[e.getDay()]:(0,f.formatFullDateNoTime)(e)}},{key:"render",value:function(){return l.default.createElement("h2",{className:"mx_DateSeparator"},this.getLabel())}}]),t}(l.default.Component);p.propTypes={ts:u.default.number.isRequired},t.default=p,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=m(n(37)),o=m(n(11)),i=m(n(4)),a=m(n(5)),s=m(n(12)),l=m(n(13)),u=m(n(0)),c=m(n(312)),f=m(n(8)),d=n(313),p=n(2);function m(e){return e&&e.__esModule?e:{default:e}}var h=function(e){function t(e){(0,i.default)(this,t);var n=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this,e));return n.state={playing:!1,decryptedUrl:null,decryptedBlob:null,error:null},n}return(0,l.default)(t,e),(0,a.default)(t,[{key:"onPlayToggle",value:function(){this.setState({playing:!this.state.playing})}},{key:"_getContentUrl",value:function(){var e=this.props.mxEvent.getContent();return void 0!==e.file?this.state.decryptedUrl:f.default.get().mxcUrlToHttp(e.url)}},{key:"componentDidMount",value:function(){var e=this,t=this.props.mxEvent.getContent();if(void 0!==t.file&&null===this.state.decryptedUrl){var n=void 0;(0,d.decryptFile)(t.file).then(function(e){return n=e,URL.createObjectURL(n)}).done(function(t){e.setState({decryptedUrl:t,decryptedBlob:n})},function(t){console.warn("Unable to decrypt attachment: ",t),e.setState({error:t})})}}},{key:"componentWillUnmount",value:function(){this.state.decryptedUrl&&URL.revokeObjectURL(this.state.decryptedUrl)}},{key:"render",value:function(){var e=this.props.mxEvent.getContent();if(null!==this.state.error)return u.default.createElement("span",{className:"mx_MAudioBody",ref:"body"},u.default.createElement("img",{src:"img/warning.svg",width:"16",height:"16"}),(0,p._t)("Error decrypting audio"));if(void 0!==e.file&&null===this.state.decryptedUrl)return u.default.createElement("span",{className:"mx_MAudioBody"},u.default.createElement("img",{src:"img/spinner.gif",alt:e.body,width:"16",height:"16"}));var t=this._getContentUrl();return u.default.createElement("span",{className:"mx_MAudioBody"},u.default.createElement("audio",{src:t,controls:!0}),u.default.createElement(c.default,(0,r.default)({},this.props,{decryptedBlob:this.state.decryptedBlob})))}}]),t}(u.default.Component);t.default=h,e.exports=t.default},function(e,t,n){n(1687),e.exports=self.fetch.bind(self)},function(e,t){!function(e){"use strict";if(!e.fetch){var t={searchParams:"URLSearchParams"in e,iterable:"Symbol"in e&&"iterator"in Symbol,blob:"FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),formData:"FormData"in e,arrayBuffer:"ArrayBuffer"in e};if(t.arrayBuffer)var n=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],r=function(e){return e&&DataView.prototype.isPrototypeOf(e)},o=ArrayBuffer.isView||function(e){return e&&n.indexOf(Object.prototype.toString.call(e))>-1};c.prototype.append=function(e,t){e=s(e),t=l(t);var n=this.map[e];this.map[e]=n?n+","+t:t},c.prototype.delete=function(e){delete this.map[s(e)]},c.prototype.get=function(e){return e=s(e),this.has(e)?this.map[e]:null},c.prototype.has=function(e){return this.map.hasOwnProperty(s(e))},c.prototype.set=function(e,t){this.map[s(e)]=l(t)},c.prototype.forEach=function(e,t){for(var n in this.map)this.map.hasOwnProperty(n)&&e.call(t,this.map[n],n,this)},c.prototype.keys=function(){var e=[];return this.forEach(function(t,n){e.push(n)}),u(e)},c.prototype.values=function(){var e=[];return this.forEach(function(t){e.push(t)}),u(e)},c.prototype.entries=function(){var e=[];return this.forEach(function(t,n){e.push([n,t])}),u(e)},t.iterable&&(c.prototype[Symbol.iterator]=c.prototype.entries);var i=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];_.prototype.clone=function(){return new _(this,{body:this._bodyInit})},h.call(_.prototype),h.call(v.prototype),v.prototype.clone=function(){return new v(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new c(this.headers),url:this.url})},v.error=function(){var e=new v(null,{status:0,statusText:""});return e.type="error",e};var a=[301,302,303,307,308];v.redirect=function(e,t){if(-1===a.indexOf(t))throw new RangeError("Invalid status code");return new v(null,{status:t,headers:{location:e}})},e.Headers=c,e.Request=_,e.Response=v,e.fetch=function(e,n){return new Promise(function(r,o){var i=new _(e,n),a=new XMLHttpRequest;a.onload=function(){var e={status:a.status,statusText:a.statusText,headers:function(e){var t=new c;return e.split(/\r?\n/).forEach(function(e){var n=e.split(":"),r=n.shift().trim();if(r){var o=n.join(":").trim();t.append(r,o)}}),t}(a.getAllResponseHeaders()||"")};e.url="responseURL"in a?a.responseURL:e.headers.get("X-Request-URL");var t="response"in a?a.response:a.responseText;r(new v(t,e))},a.onerror=function(){o(new TypeError("Network request failed"))},a.ontimeout=function(){o(new TypeError("Network request failed"))},a.open(i.method,i.url,!0),"include"===i.credentials&&(a.withCredentials=!0),"responseType"in a&&t.blob&&(a.responseType="blob"),i.headers.forEach(function(e,t){a.setRequestHeader(t,e)}),a.send(void 0===i._bodyInit?null:i._bodyInit)})},e.fetch.polyfill=!0}function s(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function l(e){return"string"!=typeof e&&(e=String(e)),e}function u(e){var n={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return t.iterable&&(n[Symbol.iterator]=function(){return n}),n}function c(e){this.map={},e instanceof c?e.forEach(function(e,t){this.append(t,e)},this):Array.isArray(e)?e.forEach(function(e){this.append(e[0],e[1])},this):e&&Object.getOwnPropertyNames(e).forEach(function(t){this.append(t,e[t])},this)}function f(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function d(e){return new Promise(function(t,n){e.onload=function(){t(e.result)},e.onerror=function(){n(e.error)}})}function p(e){var t=new FileReader,n=d(t);return t.readAsArrayBuffer(e),n}function m(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function h(){return this.bodyUsed=!1,this._initBody=function(e){if(this._bodyInit=e,e)if("string"==typeof e)this._bodyText=e;else if(t.blob&&Blob.prototype.isPrototypeOf(e))this._bodyBlob=e;else if(t.formData&&FormData.prototype.isPrototypeOf(e))this._bodyFormData=e;else if(t.searchParams&&URLSearchParams.prototype.isPrototypeOf(e))this._bodyText=e.toString();else if(t.arrayBuffer&&t.blob&&r(e))this._bodyArrayBuffer=m(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer]);else{if(!t.arrayBuffer||!ArrayBuffer.prototype.isPrototypeOf(e)&&!o(e))throw new Error("unsupported BodyInit type");this._bodyArrayBuffer=m(e)}else this._bodyText="";this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):t.searchParams&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},t.blob&&(this.blob=function(){var e=f(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?f(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(p)}),this.text=function(){var e=f(this);if(e)return e;if(this._bodyBlob)return function(e){var t=new FileReader,n=d(t);return t.readAsText(e),n}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),n=new Array(t.length),r=0;r<t.length;r++)n[r]=String.fromCharCode(t[r]);return n.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},t.formData&&(this.formData=function(){return this.text().then(g)}),this.json=function(){return this.text().then(JSON.parse)},this}function _(e,t){var n=(t=t||{}).body;if(e instanceof _){if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new c(e.headers)),this.method=e.method,this.mode=e.mode,n||null==e._bodyInit||(n=e._bodyInit,e.bodyUsed=!0)}else this.url=String(e);if(this.credentials=t.credentials||this.credentials||"omit",!t.headers&&this.headers||(this.headers=new c(t.headers)),this.method=function(e){var t=e.toUpperCase();return i.indexOf(t)>-1?t:e}(t.method||this.method||"GET"),this.mode=t.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(n)}function g(e){var t=new FormData;return e.trim().split("&").forEach(function(e){if(e){var n=e.split("="),r=n.shift().replace(/\+/g," "),o=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(r),decodeURIComponent(o))}}),t}function v(e,t){t||(t={}),this.type="default",this.status="status"in t?t.status:200,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new c(t.headers),this.url=t.url||"",this._initBody(e)}}("undefined"!=typeof self?self:this)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=f(n(11)),o=f(n(4)),i=f(n(5)),a=f(n(12)),s=f(n(13)),l=f(n(0)),u=f(n(681)),c=f(n(3));function f(e){return e&&e.__esModule?e:{default:e}}var d=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,i.default)(t,[{key:"onClick",value:function(){}},{key:"wrapImage",value:function(e,t){return l.default.createElement("div",{className:"mx_MStickerBody_wrapper"}," ",t," ")}},{key:"getPlaceholder",value:function(){var e=c.default.getComponent("elements.TintableSvg");return l.default.createElement(e,{src:"img/icons-show-stickers.svg",width:"75",height:"75"})}},{key:"getTooltip",value:function(){var e=this.props.mxEvent&&this.props.mxEvent.getContent();if(!(e&&e.body&&e.info&&e.info.w))return null;var t=c.default.getComponent("rooms.RoomTooltip");return l.default.createElement("div",{style:{left:e.info.w+"px"},className:"mx_MStickerBody_tooltip"},l.default.createElement(t,{label:e.body}))}},{key:"getFileBody",value:function(){return null}}]),t}(u.default);t.default=d,e.exports=t.default},function(e,t,n){"use strict";var r=d(n(37)),o=d(n(0)),i=d(n(1)),a=d(n(312)),s=d(n(8)),l=n(313),u=d(n(9)),c=n(2),f=d(n(22));function d(e){return e&&e.__esModule?e:{default:e}}e.exports=o.default.createClass({displayName:"MVideoBody",propTypes:{mxEvent:i.default.object.isRequired,onWidgetLoad:i.default.func.isRequired},getInitialState:function(){return{decryptedUrl:null,decryptedThumbnailUrl:null,decryptedBlob:null,error:null}},thumbScale:function(e,t,n,r){if(e&&t){if(e<n&&t<r)return 1;var o=n/e,i=r/t;return o<i?o:i}},_getContentUrl:function(){var e=this.props.mxEvent.getContent();return void 0!==e.file?this.state.decryptedUrl:s.default.get().mxcUrlToHttp(e.url)},_getThumbUrl:function(){var e=this.props.mxEvent.getContent();return void 0!==e.file?this.state.decryptedThumbnailUrl:e.info&&e.info.thumbnail_url?s.default.get().mxcUrlToHttp(e.info.thumbnail_url):null},componentDidMount:function(){var e=this,t=this.props.mxEvent.getContent();if(void 0!==t.file&&null===this.state.decryptedUrl){var n=u.default.resolve(null);t.info.thumbnail_file&&(n=(0,l.decryptFile)(t.info.thumbnail_file).then(function(e){return URL.createObjectURL(e)}));var r=void 0;n.then(function(n){return(0,l.decryptFile)(t.file).then(function(e){return r=e,URL.createObjectURL(e)}).then(function(t){e.setState({decryptedUrl:t,decryptedThumbnailUrl:n,decryptedBlob:r}),e.props.onWidgetLoad()})}).catch(function(t){console.warn("Unable to decrypt attachment: ",t),e.setState({error:t})}).done()}},componentWillUnmount:function(){this.state.decryptedUrl&&URL.revokeObjectURL(this.state.decryptedUrl),this.state.decryptedThumbnailUrl&&URL.revokeObjectURL(this.state.decryptedThumbnailUrl)},render:function(){var e=this.props.mxEvent.getContent();if(null!==this.state.error)return o.default.createElement("span",{className:"mx_MVideoBody",ref:"body"},o.default.createElement("img",{src:"img/warning.svg",width:"16",height:"16"}),(0,c._t)("Error decrypting video"));if(void 0!==e.file&&null===this.state.decryptedUrl)return o.default.createElement("span",{className:"mx_MVideoBody",ref:"body"},o.default.createElement("div",{className:"mx_MImageBody_thumbnail mx_MImageBody_thumbnail_spinner",ref:"image"},o.default.createElement("img",{src:"img/spinner.gif",alt:e.body,width:"16",height:"16"})));var t=this._getContentUrl(),n=this._getThumbUrl(),i=f.default.getValue("autoplayGifsAndVideos"),s=null,l=null,u=null,d="metadata";if(e.info){var p=this.thumbScale(e.info.w,e.info.h,480,360);p&&(l=Math.floor(e.info.w*p),s=Math.floor(e.info.h*p)),n&&(u=n,d="none")}return o.default.createElement("span",{className:"mx_MVideoBody"},o.default.createElement("video",{className:"mx_MVideoBody",src:t,alt:e.body,controls:!0,preload:d,muted:i,autoPlay:i,height:s,width:l,poster:u}),o.default.createElement(a.default,(0,r.default)({},this.props,{decryptedBlob:this.state.decryptedBlob})))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=f(n(11)),o=f(n(4)),i=f(n(5)),a=f(n(12)),s=f(n(13)),l=f(n(0)),u=f(n(1)),c=n(143);function f(e){return e&&e.__esModule?e:{default:e}}var d=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,i.default)(t,[{key:"render",value:function(){var e=new Date(this.props.ts);return l.default.createElement("span",{className:"mx_MessageTimestamp",title:(0,c.formatFullDate)(e,this.props.showTwelveHour)},(0,c.formatTime)(e,this.props.showTwelveHour))}}]),t}(l.default.Component);d.propTypes={ts:u.default.number.isRequired,showTwelveHour:u.default.bool},t.default=d,e.exports=t.default},function(e,t,n){"use strict";var r=f(n(0)),o=f(n(1)),i=f(n(8)),a=n(17),s=n(2),l=f(n(3)),u=f(n(16)),c=f(n(27));function f(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"RoomAvatarEvent",propTypes:{mxEvent:o.default.object.isRequired},onAvatarClick:function(e){var t=i.default.get().mxcUrlToHttp(this.props.mxEvent.getContent().url),n=l.default.getComponent("elements.ImageView"),r={src:t,name:e};u.default.createDialog(n,r,"mx_Dialog_lightbox")},render:function(){var e=this,t=this.props.mxEvent,n=t.sender&&t.sender.name?t.sender.name:t.getSender(),o=l.default.getComponent("avatars.BaseAvatar"),u=i.default.get().getRoom(this.props.mxEvent.getRoomId()),f=(0,s._t)("%(senderDisplayName)s changed the avatar for %(roomName)s",{senderDisplayName:n,roomName:u?u.name:""});if(!t.getContent().url||0===t.getContent().url.trim().length)return r.default.createElement("div",{className:"mx_TextualEvent"},(0,s._t)("%(senderDisplayName)s removed the room avatar.",{senderDisplayName:n}));var d=a.ContentRepo.getHttpUriForMxc(i.default.get().getHomeserverUrl(),t.getContent().url,Math.ceil(14*window.devicePixelRatio),Math.ceil(14*window.devicePixelRatio),"crop");return r.default.createElement("div",{className:"mx_RoomAvatarEvent"},(0,s._t)("%(senderDisplayName)s changed the room avatar to <img/>",{senderDisplayName:n},{img:function(){return r.default.createElement(c.default,{key:"avatar",className:"mx_RoomAvatarEvent_avatar",onClick:e.onAvatarClick.bind(e,f)},r.default.createElement(o,{width:14,height:14,url:d,name:f}))}}))}})},function(e,t,n){"use strict";var r=l(n(0)),o=l(n(1)),i=l(n(10)),a=n(79),s=n(2);function l(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"RoomCreate",propTypes:{mxEvent:o.default.object.isRequired},_onLinkClicked:function(e){e.preventDefault();var t=this.props.mxEvent.getContent().predecessor;i.default.dispatch({action:"view_room",event_id:t.event_id,highlighted:!0,room_id:t.room_id})},render:function(){var e=this.props.mxEvent.getContent().predecessor;return void 0===e?r.default.createElement("div",null):r.default.createElement("div",{className:"mx_CreateEvent"},r.default.createElement("img",{className:"mx_CreateEvent_image",src:"img/room-continuation.svg"}),r.default.createElement("div",{className:"mx_CreateEvent_header"},(0,s._t)("This room is a continuation of another conversation.")),r.default.createElement("a",{className:"mx_CreateEvent_link",href:(0,a.makeEventPermalink)(e.room_id,e.event_id),onClick:this._onLinkClicked},(0,s._t)("Click here to see older messages.")))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(0)),o=c(n(1)),i=n(17),a=c(n(3)),s=c(n(679)),l=c(n(145)),u=n(2);function c(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createClass({displayName:"SenderProfile",propTypes:{mxEvent:o.default.object.isRequired,text:o.default.string,onClick:o.default.func},contextTypes:{matrixClient:o.default.instanceOf(i.MatrixClient)},getInitialState:function(){return{userGroups:null,relatedGroups:[]}},componentWillMount:function(){var e=this;this.unmounted=!1,this._updateRelatedGroups(),l.default.getPublicisedGroupsCached(this.context.matrixClient,this.props.mxEvent.getSender()).then(function(t){e.unmounted||e.setState({userGroups:t})}),this.context.matrixClient.on("RoomState.events",this.onRoomStateEvents)},componentWillUnmount:function(){this.unmounted=!0,this.context.matrixClient.removeListener("RoomState.events",this.onRoomStateEvents)},onRoomStateEvents:function(e){"m.room.related_groups"===e.getType()&&e.getRoomId()===this.props.mxEvent.getRoomId()&&this._updateRelatedGroups()},_updateRelatedGroups:function(){if(!this.unmounted){var e=this.context.matrixClient.getRoom(this.props.mxEvent.getRoomId());if(e){var t=e.currentState.getStateEvents("m.room.related_groups","");this.setState({relatedGroups:t&&t.getContent().groups||[]})}}},_getDisplayedGroups:function(e,t){var n=e||[];return n=t&&t.length>0?n.filter(function(e){return t.includes(e)}):[]},render:function(){var e=a.default.getComponent("elements.EmojiText"),t=this.props.mxEvent,n=t.sender?t.sender.name:t.getSender();if("m.emote"===t.getContent().msgtype)return r.default.createElement("span",null);var o=r.default.createElement("div",null);if(this.props.enableFlair){var i=this._getDisplayedGroups(this.state.userGroups,this.state.relatedGroups);o=r.default.createElement(s.default,{key:"flair",userId:t.getSender(),groups:i})}var l=r.default.createElement(e,{key:"name"},n||""),c=r.default.createElement("span",null,r.default.createElement("span",{className:"mx_SenderProfile_name"},l),o),f=this.props.text?r.default.createElement("span",{className:"mx_SenderProfile_aux"},(0,u._t)(this.props.text,{senderName:function(){return l}})):c;return r.default.createElement("div",{className:"mx_SenderProfile",dir:"auto",onClick:this.props.onClick},f)}}),e.exports=t.default},function(e,t,n){"use strict";(function(t){var r=x(n(211)),o=x(n(20)),i=x(n(138)),a=x(n(0)),s=x(n(41)),l=x(n(1)),u=x(n(426)),c=T(n(240)),f=T(n(251)),d=x(n(314)),p=x(n(129)),m=x(n(3)),h=x(n(173)),_=x(n(16)),g=x(n(39)),v=x(n(10)),y=n(2),b=x(n(8)),E=T(n(176)),C=x(n(22)),S=x(n(287)),D=x(n(241)),w=n(79);function T(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function x(e){return e&&e.__esModule?e:{default:e}}(0,p.default)(f),e.exports=a.default.createClass({displayName:"TextualBody",propTypes:{mxEvent:l.default.object.isRequired,highlights:l.default.array,highlightLink:l.default.string,showUrlPreview:l.default.bool,onWidgetLoad:l.default.func,tileShape:l.default.string},getInitialState:function(){return{links:[],widgetHidden:!1}},copyToClipboard:function(e){var t=document.createElement("textarea");t.value=e,document.body.appendChild(t),t.select();var n=!1;try{n=document.execCommand("copy")}catch(e){console.log("Unable to copy")}return document.body.removeChild(t),n},componentDidMount:function(){var e=this;if(this._unmounted=!1,this.pillifyLinks(this.refs.content.children),(0,d.default)(this.refs.content,p.default.options),this.calculateUrlPreview(),"org.matrix.custom.html"===this.props.mxEvent.getContent().format){var t=s.default.findDOMNode(this).getElementsByTagName("code");t.length>0&&setTimeout(function(){if(!e._unmounted)for(var n=0;n<t.length;n++){if(C.default.getValue("enableSyntaxHighlightLanguageDetection"))u.default.highlightBlock(t[n]);else 0!=t[n].className.split(/\s+/).filter(function(e){return e.startsWith("language-")}).length&&u.default.highlightBlock(t[n])}},10),this._addCodeCopyButton()}},componentDidUpdate:function(){this.calculateUrlPreview()},componentWillUnmount:function(){this._unmounted=!0},shouldComponentUpdate:function(e,t){return e.mxEvent.getId()!==this.props.mxEvent.getId()||e.highlights!==this.props.highlights||e.highlightLink!==this.props.highlightLink||e.showUrlPreview!==this.props.showUrlPreview||t.links!==this.state.links||t.widgetHidden!==this.state.widgetHidden},calculateUrlPreview:function(){if(this.props.showUrlPreview&&!this.state.links.length){var e=this.findLinks(this.refs.content.children);if(e.length){var n=new i.default;if(e=e.filter(function(e){return!n.has(e)&&(n.add(e),!0)}),this.setState({links:e}),t.localStorage){var r=t.localStorage.getItem("hide_preview_"+this.props.mxEvent.getId());this.setState({widgetHidden:r})}}}},pillifyLinks:function(e){for(var t=!C.default.getValue("Pill.shouldHidePillAvatar"),n=e[0];n;){var r=!1;if("A"===n.tagName&&n.getAttribute("href")){var i=n.getAttribute("href"),l=m.default.getComponent("elements.Pill");if(l.isMessagePillUrl(i)){var u=document.createElement("span"),c=b.default.get().getRoom(this.props.mxEvent.getRoomId()),f=a.default.createElement(l,{url:i,inMessage:!0,room:c,shouldShowPillAvatar:t});s.default.render(f,u),n.parentNode.replaceChild(u,n),r=!0,n=u}}else if(n.nodeType===Node.TEXT_NODE){for(var d=m.default.getComponent("elements.Pill"),p=n,h=[];null!==p;){var _=d.roomNotifPos(p.textContent),g=null;if(_>-1){var v=p;_>0&&(v=v.splitText(_)),v.textContent.length>d.roomNotifLen()&&(g=v.splitText(d.roomNotifLen())),h.push(v)}p=g}if(h.length>0){var y=new S.default(b.default.get()),E=y.getPushRuleById(".m.rule.roomnotif");if(E&&y.ruleMatchesEvent(E,this.props.mxEvent)){var D=!0,w=!1,T=void 0;try{for(var x,R=(0,o.default)(h);!(D=(x=R.next()).done);D=!0){var k=x.value;n=k.nextSibling;var N=document.createElement("span"),I=b.default.get().getRoom(this.props.mxEvent.getRoomId()),O=a.default.createElement(d,{type:d.TYPE_AT_ROOM_MENTION,inMessage:!0,room:I,shouldShowPillAvatar:!0});s.default.render(O,N),k.parentNode.replaceChild(N,k)}}catch(e){w=!0,T=e}finally{try{!D&&R.return&&R.return()}finally{if(w)throw T}}continue}}}n.childNodes&&n.childNodes.length&&!r&&this.pillifyLinks(n.childNodes),n=n.nextSibling}},findLinks:function(e){for(var t=[],n=0;n<e.length;n++){var r=e[n];if("A"===r.tagName&&r.getAttribute("href"))this.isLinkPreviewable(r)&&t.push(r.getAttribute("href"));else{if("PRE"===r.tagName||"CODE"===r.tagName||"BLOCKQUOTE"===r.tagName)continue;r.children&&r.children.length&&(t=t.concat(this.findLinks(r.children)))}}return t},isLinkPreviewable:function(e){if(!e.getAttribute("href").startsWith("http://")&&!e.getAttribute("href").startsWith("https://"))return!1;if(e.textContent.indexOf("/")>-1)return!0;var t=e.getAttribute("href").match(/^https?:\/\/(.*?)(\/|$)/)[1];return t!==w.host&&!e.textContent.toLowerCase().trim().startsWith(t.toLowerCase())},_addCodeCopyButton:function(){var e=this;(0,r.default)(s.default.findDOMNode(this).querySelectorAll(".mx_EventTile_body pre")).forEach(function(t){var n=document.createElement("span");n.className="mx_EventTile_copyButton",n.onclick=function(t){var r=n.parentNode.getElementsByTagName("code")[0],o=e.copyToClipboard(r.textContent),i=m.default.getComponent("context_menus.GenericTextContextMenu"),a=t.target.getBoundingClientRect(),s=a.right+window.pageXOffset,l=a.top+a.height/2+window.pageYOffset-19,u=E.createMenu(i,{chevronOffset:10,left:s,top:l,message:o?(0,y._t)("Copied!"):(0,y._t)("Failed to copy")},!1).close;t.target.onmouseleave=u};var r=document.createElement("div");r.className="mx_EventTile_pre_container",t.parentNode.replaceChild(r,t),r.appendChild(t),r.appendChild(n)})},onCancelClick:function(e){this.setState({widgetHidden:!0}),t.localStorage&&t.localStorage.setItem("hide_preview_"+this.props.mxEvent.getId(),"1"),this.forceUpdate()},onEmoteSenderClick:function(e){var t=this.props.mxEvent;v.default.dispatch({action:"insert_mention",user_id:t.getSender()})},getEventTileOps:function(){var e=this;return{isWidgetHidden:function(){return e.state.widgetHidden},unhideWidget:function(){e.setState({widgetHidden:!1}),t.localStorage&&t.localStorage.removeItem("hide_preview_"+e.props.mxEvent.getId())},getInnerText:function(){return e.refs.content.innerText}}},onStarterLinkClick:function(e,t){t.preventDefault();var n=new h.default;n.connect().then(function(){var t=n.getStarterLink(e),r=m.default.getComponent("dialogs.QuestionDialog"),o=g.default.get().integrations_ui_url;_.default.createTrackedDialog("Add an integration","",r,{title:(0,y._t)("Add an Integration"),description:a.default.createElement("div",null,(0,y._t)("You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?",{integrationsUrl:o})),button:(0,y._t)("Continue"),onFinished:function(e){if(e){var n=window.screen.width>1024?1024:window.screen.width,r=window.screen.height>800?800:window.screen.height,o=(window.screen.width-n)/2,i=(window.screen.height-r)/2;window.open(t,"_blank","height="+r+", width="+n+", top="+i+", left="+o+",")}}})})},render:function(){var e=this,t=m.default.getComponent("elements.EmojiText"),n=this.props.mxEvent,r=n.getContent(),o=D.default.getParentEventId(n),i=c.bodyToHtml(r,this.props.highlights,{disableBigEmoji:C.default.getValue("TextualBody.disableBigEmoji"),stripReplyFallback:o});this.props.highlightLink?i=a.default.createElement("a",{href:this.props.highlightLink},i):r.data&&"string"==typeof r.data["org.matrix.neb.starter_link"]&&(i=a.default.createElement("a",{href:"#",onClick:this.onStarterLinkClick.bind(this,r.data["org.matrix.neb.starter_link"])},i));var s=void 0;if(this.state.links.length&&!this.state.widgetHidden&&this.props.showUrlPreview){var l=m.default.getComponent("rooms.LinkPreviewWidget");s=this.state.links.map(function(t){return a.default.createElement(l,{key:t,link:t,mxEvent:e.props.mxEvent,onCancelClick:e.onCancelClick,onWidgetLoad:e.props.onWidgetLoad})})}switch(r.msgtype){case"m.emote":var u=n.sender?n.sender.name:n.getSender();return a.default.createElement("span",{ref:"content",className:"mx_MEmoteBody mx_EventTile_content"},"* ",a.default.createElement(t,{className:"mx_MEmoteBody_sender",onClick:this.onEmoteSenderClick},u)," ",i,s);case"m.notice":return a.default.createElement("span",{ref:"content",className:"mx_MNoticeBody mx_EventTile_content"},i,s);default:return a.default.createElement("span",{ref:"content",className:"mx_MTextBody mx_EventTile_content"},i,s)}}})}).call(this,n(15))},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(449));var o=r.tokenize,i=r.options,a=i.Options,s=r.parser.TOKENS.TEXT,l=1,u=3;function c(e,t,n){var r=n[n.length-1];e.replaceChild(r,t);for(var o=n.length-2;o>=0;o--)e.insertBefore(n[o],r),r=n[o]}function f(e,t,n){var r=[],o=e,i=Array.isArray(o),a=0;for(o=i?o:o[Symbol.iterator]();;){var s;if(i){if(a>=o.length)break;s=o[a++]}else{if((a=o.next()).done)break;s=a.value}var l=s;if("nl"===l.type&&t.nl2br)r.push(n.createElement("br"));else if(l.isLink&&t.check(l)){var u=t.resolve(l),c=u.formatted,f=u.formattedHref,d=u.tagName,p=u.className,m=u.target,h=u.events,_=u.attributes,g=n.createElement(d);if(g.setAttribute("href",f),p&&g.setAttribute("class",p),m&&g.setAttribute("target",m),_)for(var v in _)g.setAttribute(v,_[v]);if(h)for(var y in h)g.addEventListener?g.addEventListener(y,h[y]):g.attachEvent&&g.attachEvent("on"+y,h[y]);g.appendChild(n.createTextNode(c)),r.push(g)}else r.push(n.createTextNode(l.toString()))}return r}function d(e,t,n){if(!e||e.nodeType!==l)throw new Error("Cannot linkify "+e+" - Invalid DOM Node type");var r=t.ignoreTags;if("A"===e.tagName||i.contains(r,e.tagName))return e;for(var a=e.firstChild;a;){var p=void 0,m=void 0,h=void 0;switch(a.nodeType){case l:d(a,t,n);break;case u:if(p=a.nodeValue,0===(m=o(p)).length||1===m.length&&m[0]instanceof s)break;c(e,a,h=f(m,t,n)),a=h[h.length-1]}a=a.nextSibling}return e}function p(t,n){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{r=r||document||window&&window.document||e&&e.document}catch(e){}if(!r)throw new Error("Cannot find document implementation. If you are in a non-browser environment like Node.js, pass the document implementation as the third argument to linkifyElement.");return d(t,n=new a(n),r)}p.helper=d,p.normalize=function(e){return new a(e)},t.default=p}).call(this,n(15))},function(e,t,n){"use strict";var r=i(n(1)),o=i(n(3));function i(e){return e&&e.__esModule?e:{default:e}}var a=n(0),s=n(409);e.exports=a.createClass({displayName:"TextualEvent",propTypes:{mxEvent:r.default.object.isRequired},render:function(){var e=o.default.getComponent("elements.EmojiText"),t=s.textForEvent(this.props.mxEvent);return null==t||0===t.length?null:a.createElement(e,{element:"div",className:"mx_TextualEvent"},t)}})},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(0)),o=n(2);e.exports=r.default.createClass({displayName:"UnknownBody",render:function(){var e=(0,o._t)("Removed or unknown message type");if(this.props.mxEvent.isRedacted()){var t=this.props.mxEvent.getUnsigned().redacted_because.sender;e=t?(0,o._t)("Message removed by %(userId)s",{userId:t}):(0,o._t)("Message removed")}var n=this.props.mxEvent.getContent().body;return r.default.createElement("span",{className:"mx_UnknownBody",title:e},n)}})},function(e,t,n){"use strict";var r=s(n(14)),o=s(n(9)),i=s(n(1)),a=n(2);function s(e){return e&&e.__esModule?e:{default:e}}var l=n(0),u=n(202),c=n(8),f=n(3),d=n(16);e.exports=l.createClass({displayName:"AliasSettings",propTypes:{roomId:i.default.string.isRequired,canSetCanonicalAlias:i.default.bool.isRequired,canSetAliases:i.default.bool.isRequired,aliasEvents:i.default.array,canonicalAliasEvent:i.default.object},getDefaultProps:function(){return{canSetAliases:!1,canSetCanonicalAlias:!1,aliasEvents:[]}},getInitialState:function(){return this.recalculateState(this.props.aliasEvents,this.props.canonicalAliasEvent)},recalculateState:function(e,t){e=e||[];var n={domainToAliases:{},remoteDomains:[],canonicalAlias:null},o=c.get().getDomain();return n.domainToAliases=this.aliasEventsToDictionary(e),n.remoteDomains=(0,r.default)(n.domainToAliases).filter(function(e){return e!==o&&n.domainToAliases[e].length>0}),t&&(n.canonicalAlias=t.getContent().alias),n},saveSettings:function(){for(var e=[],t=this.getAliasOperations(),n=0;n<t.length;n++){var r=t[n];switch(console.log("alias %s %s",r.place,r.val),r.place){case"add":e.push(c.get().createAlias(r.val,this.props.roomId));break;case"del":e.push(c.get().deleteAlias(r.val));break;default:console.log("Unknown alias operation, ignoring: "+r.place)}}var i=null;this.props.canonicalAliasEvent&&(i=this.props.canonicalAliasEvent.getContent().alias);var a=this.state.canonicalAlias;return this.props.canSetCanonicalAlias&&i!==a&&(console.log("AliasSettings: Updating canonical alias"),e=[o.default.all(e).then(c.get().sendStateEvent(this.props.roomId,"m.room.canonical_alias",{alias:a},""))]),e},aliasEventsToDictionary:function(e){var t={};return e.forEach(function(e){t[e.getStateKey()]=(e.getContent().aliases||[]).slice()}),t},isAliasValid:function(e){return e.match(/^#([^\/:,]+?):(.+)$/)&&encodeURI(e)===e},getAliasOperations:function(){var e=this.aliasEventsToDictionary(this.props.aliasEvents);return u.getKeyValueArrayDiffs(e,this.state.domainToAliases)},onNewAliasChanged:function(e){this.setState({newAlias:e})},onLocalAliasAdded:function(e){if(e&&0!==e.length){var t=c.get().getDomain();if(e.includes(":")||(e+=":"+t),this.isAliasValid(e)&&e.endsWith(t))this.state.domainToAliases[t]=this.state.domainToAliases[t]||[],this.state.domainToAliases[t].push(e),this.setState({domainToAliases:this.state.domainToAliases,newAlias:""});else{var n=f.getComponent("dialogs.ErrorDialog");d.createTrackedDialog("Invalid alias format","",n,{title:(0,a._t)("Invalid alias format"),description:(0,a._t)("'%(alias)s' is not a valid format for an alias",{alias:e})})}this.props.canonicalAlias||this.setState({canonicalAlias:e})}},onLocalAliasChanged:function(e,t){if(""!==e){var n=c.get().getDomain();if(e.includes(":")||(e+=":"+n),this.isAliasValid(e)&&e.endsWith(n))this.state.domainToAliases[n][t]=e;else{var r=f.getComponent("dialogs.ErrorDialog");d.createTrackedDialog("Invalid address format","",r,{title:(0,a._t)("Invalid address format"),description:(0,a._t)("'%(alias)s' is not a valid format for an address",{alias:e})})}}},onLocalAliasDeleted:function(e){var t=c.get().getDomain(),n=this.state.domainToAliases[t].splice(e,1);this.setState({domainToAliases:this.state.domainToAliases}),this.props.canonicalAlias===n&&this.setState({canonicalAlias:null})},onCanonicalAliasChange:function(e){this.setState({canonicalAlias:e.target.value})},render:function(){var e=this,t=this,n=f.getComponent("elements.EditableText"),o=f.getComponent("elements.EditableItemList"),i=c.get().getDomain(),s=void 0;if(this.props.canSetCanonicalAlias){var u=!1,d=this.state.canonicalAlias||"";s=l.createElement("select",{onChange:this.onCanonicalAliasChange,value:d},l.createElement("option",{value:"",key:"unset"},(0,a._t)("not specified")),(0,r.default)(t.state.domainToAliases).map(function(n,r){return t.state.domainToAliases[n].map(function(t,n){return t===e.state.canonicalAlias&&(u=!0),l.createElement("option",{value:t,key:r+"_"+n},t)})}),u||!this.stateCanonicalAlias?"":l.createElement("option",{value:this.state.canonicalAlias,key:"arbitrary"},this.state.canonicalAlias))}else s=l.createElement("b",null,this.state.canonicalAlias||(0,a._t)("not set"));var p=void 0;return this.state.remoteDomains.length&&(p=l.createElement("div",null,l.createElement("div",{className:"mx_RoomSettings_aliasLabel"},(0,a._t)("Remote addresses for this room:")),l.createElement("div",{className:"mx_RoomSettings_aliasesTable"},this.state.remoteDomains.map(function(t,r){return e.state.domainToAliases[t].map(function(e,t){return l.createElement("div",{className:"mx_RoomSettings_aliasesTableRow",key:r+"_"+t},l.createElement(n,{className:"mx_RoomSettings_alias mx_RoomSettings_editable",blurToCancel:!1,editable:!1,initialValue:e}))})})))),l.createElement("div",null,l.createElement("h3",null,(0,a._t)("Addresses")),l.createElement("div",{className:"mx_RoomSettings_aliasLabel"},(0,a._t)("The main address for this room is"),": ",s),l.createElement(o,{className:"mx_RoomSettings_localAliases",items:this.state.domainToAliases[i]||[],newItem:this.state.newAlias,onNewItemChanged:this.onNewAliasChanged,canEdit:this.props.canSetAliases,onItemAdded:this.onLocalAliasAdded,onItemEdited:this.onLocalAliasChanged,onItemRemoved:this.onLocalAliasDeleted,itemsLabel:(0,a._t)("Local addresses for this room:"),noItemsLabel:(0,a._t)("This room has no local addresses"),placeholder:(0,a._t)("New address (e.g. #foo:%(localDomain)s)",{localDomain:i})}),p)}})},function(e,t,n){"use strict";var r=l(n(9)),o=l(n(1)),i=l(n(10)),a=n(22),s=l(a);function l(e){return e&&e.__esModule?e:{default:e}}var u=n(0),c=(n(3),n(174)),f=(n(8),n(16),[[c.getKeyRgb()[0],c.getKeyRgb()[1]],["#81bddb","#eaf1f4"],["#bd79cb","#f3eaf5"],["#c65d94","#f5eaef"],["#e55e5e","#f5eaea"],["#eca46f","#f5eeea"],["#dad658","#f5f4ea"],["#80c553","#eef5ea"],["#bb814e","#eee8e3"]]);e.exports=u.createClass({displayName:"ColorSettings",propTypes:{room:o.default.object.isRequired},getInitialState:function(){var e={index:0,primary_color:f[0][0],secondary_color:f[0][1],hasChanged:!1},t=s.default.getValueAt(a.SettingLevel.ROOM_ACCOUNT,"roomColor",this.props.room.roomId);return t.primary_color&&t.secondary_color&&(e.primary_color=t.primary_color,e.secondary_color=t.secondary_color),e.index=this._getColorIndex(e),-1===e.index&&(e.index=f.length,f.push([t.primary_color,t.secondary_color])),e},saveSettings:function(){if(!this.state.hasChanged)return r.default.resolve();var e=this.getInitialState();return e.primary_color===this.state.primary_color&&e.secondary_color===this.state.secondary_color||(console.log("ColorSettings: Saving new color"),s.default.setValue("roomColor",this.props.room.roomId,a.SettingLevel.ROOM_ACCOUNT,{primary_color:this.state.primary_color,secondary_color:this.state.secondary_color}).catch(function(e){"M_GUEST_ACCESS_FORBIDDEN"===e.errcode&&i.default.dispatch({action:"require_registration"})})),r.default.resolve()},_getColorIndex:function(e){if(!e||!e.primary_color||!e.secondary_color)return-1;for(var t=0;t<f.length;t++){var n=f[t];if(n[0]===String(e.primary_color).toLowerCase()&&n[1]===String(e.secondary_color).toLowerCase())return t}return-1},_onColorSchemeChanged:function(e){c.tint(f[e][0],f[e][1]),this.setState({index:e,primary_color:f[e][0],secondary_color:f[e][1],hasChanged:!0})},render:function(){var e=this;return u.createElement("div",{className:"mx_RoomSettings_roomColors"},f.map(function(t,n){var r=void 0;n===e.state.index&&(r=u.createElement("div",{className:"mx_RoomSettings_roomColor_selected"},u.createElement("img",{src:"img/tick.svg",width:"17",height:"14",alt:"./"})));var o=e._onColorSchemeChanged.bind(e,n);return u.createElement("div",{className:"mx_RoomSettings_roomColor",key:"room_color_"+n,style:{backgroundColor:t[1]},onClick:o},r,u.createElement("div",{className:"mx_RoomSettings_roomColorPrimary",style:{backgroundColor:t[0]}}))}))}})},function(e,t,n){"use strict";var r=p(n(47)),o=p(n(40)),i=p(n(65)),a=p(n(0)),s=p(n(1)),l=n(17),u=p(n(3)),c=n(2),f=p(n(16)),d=p(n(683));function p(e){return e&&e.__esModule?e:{default:e}}var m=/\+\S+\:\S+/;e.exports=a.default.createClass({displayName:"RelatedGroupSettings",propTypes:{roomId:s.default.string.isRequired,canSetRelatedGroups:s.default.bool.isRequired,relatedGroupsEvent:s.default.instanceOf(l.MatrixEvent)},contextTypes:{matrixClient:s.default.instanceOf(l.MatrixClient)},getDefaultProps:function(){return{canSetRelatedGroups:!1}},getInitialState:function(){return{newGroupsList:this.getInitialGroupList(),newGroupId:null}},getInitialGroupList:function(){return this.props.relatedGroupsEvent&&this.props.relatedGroupsEvent.getContent().groups||[]},needsSaving:function(){var e=this.context.matrixClient;return!!e.getRoom(this.props.roomId).currentState.maySendStateEvent("m.room.related_groups",e.getUserId())&&!(0,d.default)(this.getInitialGroupList(),this.state.newGroupsList)},saveSettings:function(){return this.needsSaving()?this.context.matrixClient.sendStateEvent(this.props.roomId,"m.room.related_groups",{groups:this.state.newGroupsList},""):i.default.resolve()},validateGroupId:function(e){if(!m.test(e)){var t=u.default.getComponent("dialogs.ErrorDialog");return f.default.createTrackedDialog("Invalid related community ID","",t,{title:(0,c._t)("Invalid community ID"),description:(0,c._t)("'%(groupId)s' is not a valid community ID",{groupId:e})}),!1}return!0},onNewGroupChanged:function(e){this.setState({newGroupId:e})},onGroupAdded:function(e){0!==e.length&&this.validateGroupId(e)&&this.setState({newGroupsList:this.state.newGroupsList.concat([e]),newGroupId:""})},onGroupEdited:function(e,t){0!==e.length&&this.validateGroupId(e)&&this.setState({newGroupsList:(0,o.default)(this.state.newGroupsList,(0,r.default)({},t,e))})},onGroupDeleted:function(e){var t=this.state.newGroupsList.slice();t.splice(e,1),this.setState({newGroupsList:t})},render:function(){var e=this.context.matrixClient.getDomain(),t=u.default.getComponent("elements.EditableItemList");return a.default.createElement("div",null,a.default.createElement("h3",null,(0,c._t)("Flair")),a.default.createElement(t,{items:this.state.newGroupsList,className:"mx_RelatedGroupSettings",newItem:this.state.newGroupId,canEdit:this.props.canSetRelatedGroups,onNewItemChanged:this.onNewGroupChanged,onItemAdded:this.onGroupAdded,onItemEdited:this.onGroupEdited,onItemRemoved:this.onGroupDeleted,itemsLabel:(0,c._t)("Showing flair for these communities:"),noItemsLabel:(0,c._t)("This room is not showing flair for any communities"),placeholder:(0,c._t)("New community ID (e.g. +foo:%(localDomain)s)",{localDomain:e})}))}})},function(e,t,n){var r=n(461),o=n(684),i=n(1708),a=n(1710),s=n(317),l=n(102),u=n(465),c=n(690),f=1,d="[object Arguments]",p="[object Array]",m="[object Object]",h=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,_,g,v){var y=l(e),b=l(t),E=y?p:s(e),C=b?p:s(t),S=(E=E==d?m:E)==m,D=(C=C==d?m:C)==m,w=E==C;if(w&&u(e)){if(!u(t))return!1;y=!0,S=!1}if(w&&!S)return v||(v=new r),y||c(e)?o(e,t,n,_,g,v):i(e,t,E,n,_,g,v);if(!(n&f)){var T=S&&h.call(e,"__wrapped__"),x=D&&h.call(t,"__wrapped__");if(T||x){var R=T?e.value():e,k=x?t.value():t;return v||(v=new r),g(R,k,n,_,v)}}return!!w&&(v||(v=new r),a(e,t,n,_,g,v))}},function(e,t,n){var r=n(301);e.exports=function(){this.__data__=new r,this.size=0}},function(e,t){e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},function(e,t){e.exports=function(e){return this.__data__.get(e)}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,n){var r=n(301),o=n(430),i=n(429),a=200;e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var s=n.__data__;if(!o||s.length<a-1)return s.push([e,t]),this.size=++n.size,this;n=this.__data__=new i(s)}return n.set(e,t),this.size=n.size,this}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}},function(e,t,n){var r=n(194),o=n(685),i=n(303),a=n(684),s=n(1709),l=n(431),u=1,c=2,f="[object Boolean]",d="[object Date]",p="[object Error]",m="[object Map]",h="[object Number]",_="[object RegExp]",g="[object Set]",v="[object String]",y="[object Symbol]",b="[object ArrayBuffer]",E="[object DataView]",C=r?r.prototype:void 0,S=C?C.valueOf:void 0;e.exports=function(e,t,n,r,C,D,w){switch(n){case E:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case b:return!(e.byteLength!=t.byteLength||!D(new o(e),new o(t)));case f:case d:case h:return i(+e,+t);case p:return e.name==t.name&&e.message==t.message;case _:case v:return e==t+"";case m:var T=s;case g:var x=r&u;if(T||(T=l),e.size!=t.size&&!x)return!1;var R=w.get(e);if(R)return R==t;r|=c,w.set(e,t);var k=a(T(e),T(t),r,C,D,w);return w.delete(e),k;case y:if(S)return S.call(e)==S.call(t)}return!1}},function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}},function(e,t,n){var r=n(686),o=1,i=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,a,s,l){var u=n&o,c=r(e),f=c.length;if(f!=r(t).length&&!u)return!1;for(var d=f;d--;){var p=c[d];if(!(u?p in t:i.call(t,p)))return!1}var m=l.get(e);if(m&&l.get(t))return m==t;var h=!0;l.set(e,t),l.set(t,e);for(var _=u;++d<f;){var g=e[p=c[d]],v=t[p];if(a)var y=u?a(v,g,p,t,e,l):a(g,v,p,e,t,l);if(!(void 0===y?g===v||s(g,v,n,a,l):y)){h=!1;break}_||(_="constructor"==p)}if(h&&!_){var b=e.constructor,E=t.constructor;b!=E&&"constructor"in e&&"constructor"in t&&!("function"==typeof b&&b instanceof b&&"function"==typeof E&&E instanceof E)&&(h=!1)}return l.delete(e),l.delete(t),h}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,o=0,i=[];++n<r;){var a=e[n];t(a,n,e)&&(i[o++]=a)}return i}},function(e,t){e.exports=function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}},function(e,t,n){var r=n(195),o=n(144),i="[object Arguments]";e.exports=function(e){return o(e)&&r(e)==i}},function(e,t){e.exports=function(){return!1}},function(e,t,n){var r=n(195),o=n(466),i=n(144),a={};a["[object Float32Array]"]=a["[object Float64Array]"]=a["[object Int8Array]"]=a["[object Int16Array]"]=a["[object Int32Array]"]=a["[object Uint8Array]"]=a["[object Uint8ClampedArray]"]=a["[object Uint16Array]"]=a["[object Uint32Array]"]=!0,a["[object Arguments]"]=a["[object Array]"]=a["[object ArrayBuffer]"]=a["[object Boolean]"]=a["[object DataView]"]=a["[object Date]"]=a["[object Error]"]=a["[object Function]"]=a["[object Map]"]=a["[object Number]"]=a["[object Object]"]=a["[object RegExp]"]=a["[object Set]"]=a["[object String]"]=a["[object WeakMap]"]=!1,e.exports=function(e){return i(e)&&o(e.length)&&!!a[r(e)]}},function(e,t,n){var r=n(468),o=n(1717),i=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return o(e);var t=[];for(var n in Object(e))i.call(e,n)&&"constructor"!=n&&t.push(n);return t}},function(e,t,n){var r=n(691)(Object.keys,Object);e.exports=r},function(e,t,n){var r=n(177)(n(101),"DataView");e.exports=r},function(e,t,n){var r=n(177)(n(101),"Promise");e.exports=r},function(e,t,n){var r=n(177)(n(101),"WeakMap");e.exports=r},function(e,t,n){"use strict";var r=n(17),o=l(n(1)),i=n(2),a=n(22),s=l(a);function l(e){return e&&e.__esModule?e:{default:e}}var u=n(0),c=n(3);e.exports=u.createClass({displayName:"UrlPreviewSettings",propTypes:{room:o.default.object},contextTypes:{matrixClient:o.default.instanceOf(r.MatrixClient).isRequired},saveSettings:function(){var e=[];return this.refs.urlPreviewsRoom&&e.push(this.refs.urlPreviewsRoom.save()),this.refs.urlPreviewsSelf&&e.push(this.refs.urlPreviewsSelf.save()),e},render:function(){var e=c.getComponent("elements.SettingsFlag"),t=this.props.room.roomId,n=this.context.matrixClient.isRoomEncrypted(t),r=null,o=null;if(n)r=(0,i._t)("In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.");else{var l=s.default.getValueAt(a.SettingLevel.ACCOUNT,"urlPreviewsEnabled");if(l?r=(0,i._t)("You have <a>enabled</a> URL previews by default.",{},{a:function(e){return u.createElement("a",{href:"#/settings"},e)}}):l&&(r=(0,i._t)("You have <a>disabled</a> URL previews by default.",{},{a:function(e){return u.createElement("a",{href:"#/settings"},e)}})),s.default.canSetValue("urlPreviewsEnabled",t,"room"))o=u.createElement("label",null,u.createElement(e,{name:"urlPreviewsEnabled",level:a.SettingLevel.ROOM,roomId:t,isExplicit:!0,manualSave:!0,ref:"urlPreviewsRoom"}));else{var f=(0,i._td)("URL previews are enabled by default for participants in this room.");s.default.getValueAt(a.SettingLevel.ROOM,"urlPreviewsEnabled",t,!0)||(f=(0,i._td)("URL previews are disabled by default for participants in this room.")),o=u.createElement("label",null,(0,i._t)(f))}}var d=u.createElement(e,{name:n?"urlPreviewsEnabled_e2ee":"urlPreviewsEnabled",level:a.SettingLevel.ROOM_ACCOUNT,roomId:t,manualSave:!0,ref:"urlPreviewsSelf"});return u.createElement("div",{className:"mx_RoomSettings_toggles"},u.createElement("h3",null,(0,i._t)("URL Previews")),u.createElement("div",null,(0,i._t)("When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.")),u.createElement("div",null,r),o,u.createElement("label",null,d))}})},function(e,t,n){var r=n(194),o=n(464),i=n(102),a=r?r.isConcatSpreadable:void 0;e.exports=function(e){return i(e)||o(e)||!!(a&&e&&e[a])}},function(e,t,n){var r=n(298),o=n(695),i=n(700),a=n(102);e.exports=function(e,t){return(a(e)?r:i)(e,o(t,3))}},function(e,t,n){var r=n(1725),o=n(1726),i=n(697);e.exports=function(e){var t=o(e);return 1==t.length&&t[0][2]?i(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},function(e,t,n){var r=n(461),o=n(460),i=1,a=2;e.exports=function(e,t,n,s){var l=n.length,u=l,c=!s;if(null==e)return!u;for(e=Object(e);l--;){var f=n[l];if(c&&f[2]?f[1]!==e[f[0]]:!(f[0]in e))return!1}for(;++l<u;){var d=(f=n[l])[0],p=e[d],m=f[1];if(c&&f[2]){if(void 0===p&&!(d in e))return!1}else{var h=new r;if(s)var _=s(p,m,d,e,t,h);if(!(void 0===_?o(m,p,i|a,s,h):_))return!1}}return!0}},function(e,t,n){var r=n(696),o=n(252);e.exports=function(e){for(var t=o(e),n=t.length;n--;){var i=t[n],a=e[i];t[n]=[i,a,r(a)]}return t}},function(e,t,n){var r=n(460),o=n(698),i=n(699),a=n(470),s=n(696),l=n(697),u=n(204),c=1,f=2;e.exports=function(e,t){return a(e)&&s(t)?l(u(e),t):function(n){var a=o(n,e);return void 0===a&&a===t?i(n,e):r(t,a,c|f)}}},function(e,t,n){var r=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,o=/\\(\\)?/g,i=n(1729)(function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(r,function(e,n,r,i){t.push(r?i.replace(o,"$1"):n||e)}),t});e.exports=i},function(e,t,n){var r=n(1730),o=500;e.exports=function(e){var t=r(e,function(e){return n.size===o&&n.clear(),e}),n=t.cache;return t}},function(e,t,n){var r=n(429),o="Expected a function";function i(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError(o);var n=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=n.cache;if(i.has(o))return i.get(o);var a=e.apply(this,r);return n.cache=i.set(o,a)||i,a};return n.cache=new(i.Cache||r),n}i.Cache=r,e.exports=i},function(e,t){e.exports=function(e,t){return null!=e&&t in Object(e)}},function(e,t,n){var r=n(203),o=n(464),i=n(102),a=n(315),s=n(466),l=n(204);e.exports=function(e,t,n){for(var u=-1,c=(t=r(t,e)).length,f=!1;++u<c;){var d=l(t[u]);if(!(f=null!=e&&n(e,d)))break;e=e[d]}return f||++u!=c?f:!!(c=null==e?0:e.length)&&s(c)&&a(d,c)&&(i(e)||o(e))}},function(e,t,n){var r=n(1734),o=n(1735),i=n(470),a=n(204);e.exports=function(e){return i(e)?r(a(e)):o(e)}},function(e,t){e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},function(e,t,n){var r=n(318);e.exports=function(e){return function(t){return r(t,e)}}},function(e,t,n){var r=n(1737),o=n(1740)(r);e.exports=o},function(e,t,n){var r=n(1738),o=n(252);e.exports=function(e,t){return e&&r(e,t,o)}},function(e,t,n){var r=n(1739)();e.exports=r},function(e,t){e.exports=function(e){return function(t,n,r){for(var o=-1,i=Object(t),a=r(t),s=a.length;s--;){var l=a[e?s:++o];if(!1===n(i[l],l,i))break}return t}}},function(e,t,n){var r=n(253);e.exports=function(e,t){return function(n,o){if(null==n)return n;if(!r(n))return e(n,o);for(var i=n.length,a=t?i:-1,s=Object(n);(t?a--:++a<i)&&!1!==o(s[a],a,s););return n}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9),o=_(n(11)),i=_(n(4)),a=_(n(5)),s=_(n(12)),l=_(n(13)),u=_(n(126)),c=_(n(0)),f=n(2),d=_(n(178)),p=_(n(254)),m=n(179),h=n(705);function _(e){return e&&e.__esModule?e:{default:e}}var g=(0,u.default)(h.CommandMap),v=/(^\/\w*)(?: .*)?/g,y=function(e){function t(){(0,i.default)(this,t);var e=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this,v));return e.matcher=new p.default(g,{keys:["command","args","description"]}),e}return(0,l.default)(t,e),(0,a.default)(t,[{key:"getCompletions",value:function(){var e=(0,r.method)(function(e,t,n){var r=this.getCurrentCommand(e,t),o=r.command,i=r.range;if(!o)return[];var a=[];if(o[0]!==o[1]){var s=o[1].substr(1);if(h.CommandMap[s]){if(h.CommandMap[s].hideCompletionAfterSpace)return[];a=[h.CommandMap[s]]}}else a="/"===e?g:this.matcher.match(o[1]);return a.map(function(e){return{completion:e.command===o[1]?o[0]:e.command+" ",component:c.default.createElement(m.TextualCompletion,{title:e.command,subtitle:e.args,description:(0,f._t)(e.description)}),range:i}})});return function(t,n,r){return e.apply(this,arguments)}}()},{key:"getName",value:function(){return"*️⃣ "+(0,f._t)("Commands")}},{key:"renderCompletions",value:function(e){return c.default.createElement("div",{className:"mx_Autocomplete_Completion_container_block"},e)}}]),t}(d.default);t.default=y,e.exports=t.default},function(e,t,n){var r=n(1743),o=n(471)(r);e.exports=o},function(e,t,n){var r=n(698);e.exports=function(e,t){for(var n=-1,o=t.length,i=Array(o),a=null==e;++n<o;)i[n]=a?void 0:r(e,t[n]);return i}},function(e,t,n){var r=n(469);e.exports=function(e){return null!=e&&e.length?r(e,1):[]}},function(e,t){e.exports=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}},function(e,t,n){var r=n(1747),o=n(704),i=n(319),a=o?function(e,t){return o(e,"toString",{configurable:!0,enumerable:!1,value:r(t),writable:!0})}:i;e.exports=a},function(e,t){e.exports=function(e){return function(){return e}}},function(e,t){var n=800,r=16,o=Date.now;e.exports=function(e){var t=0,i=0;return function(){var a=o(),s=r-(a-i);if(i=a,s>0){if(++t>=n)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}},function(e,t,n){var r=n(298),o=n(695),i=n(700),a=n(1750),s=n(316),l=n(1751),u=n(319);e.exports=function(e,t,n){var c=-1;t=r(t.length?t:[u],s(o));var f=i(e,function(e,n,o){return{criteria:r(t,function(t){return t(e)}),index:++c,value:e}});return a(f,function(e,t){return l(e,t,n)})}},function(e,t){e.exports=function(e,t){var n=e.length;for(e.sort(t);n--;)e[n]=e[n].value;return e}},function(e,t,n){var r=n(1752);e.exports=function(e,t,n){for(var o=-1,i=e.criteria,a=t.criteria,s=i.length,l=n.length;++o<s;){var u=r(i[o],a[o]);if(u)return o>=l?u:u*("desc"==n[o]?-1:1)}return e.index-t.index}},function(e,t,n){var r=n(242);e.exports=function(e,t){if(e!==t){var n=void 0!==e,o=null===e,i=e==e,a=r(e),s=void 0!==t,l=null===t,u=t==t,c=r(t);if(!l&&!c&&!a&&e>t||a&&s&&u&&!l&&!c||o&&s&&u||!n&&u||!i)return 1;if(!o&&!a&&!c&&e<t||c&&n&&i&&!o&&!a||l&&n&&i||!s&&i||!u)return-1}return 0}},function(e,t,n){var r=n(319),o=n(702),i=n(703);e.exports=function(e,t){return i(o(e,t,r),e+"")}},function(e,t,n){var r=n(303),o=n(253),i=n(315),a=n(103);e.exports=function(e,t,n){if(!a(n))return!1;var s=typeof t;return!!("number"==s?o(n)&&i(t,n.length):"string"==s&&t in n)&&r(n[t],e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=E(n(19)),o=n(9),i=E(n(65)),a=E(n(11)),s=E(n(4)),l=E(n(5)),u=E(n(12)),c=E(n(13)),f=E(n(0)),d=n(2),p=E(n(178)),m=E(n(8)),h=E(n(254)),_=n(179),g=E(n(3)),v=E(n(255)),y=n(79),b=E(n(145));function E(e){return e&&e.__esModule?e:{default:e}}var C=/\B\+\S*/g;function S(e,t){var n=t.indexOf(e);return-1===n?1/0:n}var D=function(e){function t(){(0,s.default)(this,t);var e=(0,u.default)(this,(t.__proto__||(0,a.default)(t)).call(this,C));return e.matcher=new h.default([],{keys:["groupId","name","shortDescription"]}),e}return(0,c.default)(t,e),(0,l.default)(t,[{key:"getCompletions",value:function(){var e=(0,o.coroutine)(r.default.mark(function e(t,n){var a,s,l,u,c,d,p,h,E,C=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(a=g.default.getComponent("views.avatars.BaseAvatar"),!/^(\/join|\/leave)/.test(t)){e.next=3;break}return e.abrupt("return",[]);case 3:if(s=m.default.get(),l=[],u=this.getCurrentCommand(t,n,C),c=u.command,d=u.range,!c){e.next=15;break}return p=s.getGroups().filter(function(e){return"join"===e.myMembership}),e.next=10,(0,o.resolve)(i.default.all(p.map(function(){var e=(0,o.method)(function(e){var t=e.groupId;try{return b.default.getGroupProfileCached(s,t)}catch(e){return i.default.resolve({name:"",groupId:t,avatarUrl:"",shortDescription:""})}});return function(t){return e.apply(this,arguments)}}())));case 10:h=e.sent,this.matcher.setObjects(h),E=c[0],l=this.matcher.match(E),l=(0,v.default)(l,[function(e){return S(E,e.groupId)},function(e){return e.groupId.length}]).map(function(e){var t=e.avatarUrl,n=e.groupId,r=e.name;return{completion:n,suffix:" ",href:(0,y.makeGroupPermalink)(n),component:f.default.createElement(_.PillCompletion,{initialComponent:f.default.createElement(a,{name:r||n,width:24,height:24,url:t?s.mxcUrlToHttp(t,24,24):null}),title:r,description:n}),range:d}}).slice(0,4);case 15:return e.abrupt("return",l);case 16:case"end":return e.stop()}},e,this)}));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"getName",value:function(){return"💬 "+(0,d._t)("Communities")}},{key:"renderCompletions",value:function(e){return f.default.createElement("div",{className:"mx_Autocomplete_Completion_container_pill mx_Autocomplete_Completion_container_truncate"},e)}}]),t}(p.default);t.default=D,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=m(n(19)),o=n(9),i=m(n(11)),a=m(n(4)),s=m(n(5)),l=m(n(12)),u=m(n(13)),c=m(n(0)),f=n(2),d=m(n(178));n(566);var p=n(179);function m(e){return e&&e.__esModule?e:{default:e}}var h=/\/ddg\s+(.+)$/g,_=function(e){function t(){return(0,a.default)(this,t),(0,l.default)(this,(t.__proto__||(0,i.default)(t)).call(this,h))}return(0,u.default)(t,e),(0,s.default)(t,[{key:"getCompletions",value:function(){var e=(0,o.coroutine)(r.default.mark(function e(n,i){var a,s,l,u,f,d;arguments.length>2&&void 0!==arguments[2]&&arguments[2];return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(a=this.getCurrentCommand(n,i),s=a.command,l=a.range,n&&s){e.next=3;break}return e.abrupt("return",[]);case 3:return e.next=5,(0,o.resolve)(fetch(t.getQueryUri(s[1]),{method:"GET"}));case 5:return u=e.sent,e.next=8,(0,o.resolve)(u.json());case 8:return f=e.sent,d=f.Results.map(function(e){return{completion:e.Text,component:c.default.createElement(p.TextualCompletion,{title:e.Text,description:e.Result}),range:l}}),f.Answer&&d.unshift({completion:f.Answer,component:c.default.createElement(p.TextualCompletion,{title:f.Answer,description:f.AnswerType}),range:l}),f.RelatedTopics&&f.RelatedTopics.length>0&&d.unshift({completion:f.RelatedTopics[0].Text,component:c.default.createElement(p.TextualCompletion,{title:f.RelatedTopics[0].Text}),range:l}),f.AbstractText&&d.unshift({completion:f.AbstractText,component:c.default.createElement(p.TextualCompletion,{title:f.AbstractText}),range:l}),e.abrupt("return",d);case 14:case"end":return e.stop()}},e,this)}));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"getName",value:function(){return"🔍 "+(0,f._t)("Results from DuckDuckGo")}},{key:"renderCompletions",value:function(e){return c.default.createElement("div",{className:"mx_Autocomplete_Completion_container_block"},e)}}],[{key:"getQueryUri",value:function(e){return"https://api.duckduckgo.com/?q="+encodeURIComponent(e)+"&format=json&no_redirect=1&no_html=1&t="+encodeURIComponent("vector")}}]),t}(d.default);t.default=_,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9),o=y(n(11)),i=y(n(4)),a=y(n(5)),s=y(n(12)),l=y(n(13)),u=y(n(0)),c=n(2),f=y(n(178)),d=y(n(8)),p=y(n(254)),m=n(179),h=n(146),_=y(n(3)),g=y(n(255)),v=n(79);function y(e){return e&&e.__esModule?e:{default:e}}var b=/\B#\S*/g;var E=function(e){function t(){(0,i.default)(this,t);var e=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this,b));return e.matcher=new p.default([],{keys:["displayedAlias","name"]}),e}return(0,l.default)(t,e),(0,a.default)(t,[{key:"getCompletions",value:function(){var e=(0,r.method)(function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=_.default.getComponent("views.avatars.RoomAvatar"),o=d.default.get(),i=[],a=this.getCurrentCommand(e,t,n),s=a.command,l=a.range;if(s){this.matcher.setObjects(o.getRooms().filter(function(e){return!!e&&!!(0,h.getDisplayAliasForRoom)(e)}).map(function(e){return{room:e,name:e.name,displayedAlias:(0,h.getDisplayAliasForRoom)(e)}}));var c=s[0];i=this.matcher.match(c),i=(0,g.default)(i,[function(e){return function(e,t){var n=t.indexOf(e);return-1===n?1/0:n}(c,e.displayedAlias)},function(e){return e.displayedAlias.length}]).map(function(e){var t=(0,h.getDisplayAliasForRoom)(e.room)||e.roomId;return{completion:t,completionId:t,suffix:" ",href:(0,v.makeRoomPermalink)(t),component:u.default.createElement(m.PillCompletion,{initialComponent:u.default.createElement(r,{width:24,height:24,room:e.room}),title:e.name,description:t}),range:l}}).filter(function(e){return!!e.completion&&e.completion.length>0}).slice(0,4)}return i});return function(t,n,r){return e.apply(this,arguments)}}()},{key:"getName",value:function(){return"💬 "+(0,c._t)("Rooms")}},{key:"renderCompletions",value:function(e){return u.default.createElement("div",{className:"mx_Autocomplete_Completion_container_pill mx_Autocomplete_Completion_container_truncate"},e)}}]),t}(f.default);t.default=E,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=b(n(51)),o=b(n(20)),i=n(9),a=b(n(11)),s=b(n(4)),l=b(n(5)),u=b(n(12)),c=b(n(13)),f=b(n(0)),d=n(2),p=b(n(178)),m=n(179),h=b(n(3)),_=b(n(254)),g=b(n(255)),v=b(n(8)),y=n(79);function b(e){return e&&e.__esModule?e:{default:e}}var E=/\B@\S*/g,C=/[^/,:; \t\n]\S*/g,S=function(e){function t(e){(0,s.default)(this,t);var n=(0,u.default)(this,(t.__proto__||(0,a.default)(t)).call(this,E,C));return n.users=null,n.room=null,n.room=e,n.matcher=new _.default([],{keys:["name"],funcs:[function(e){return e.userId.slice(1)}],shouldMatchPrefix:!0,shouldMatchWordsOnly:!1}),n._onRoomTimelineBound=n._onRoomTimeline.bind(n),n._onRoomStateMemberBound=n._onRoomStateMember.bind(n),v.default.get().on("Room.timeline",n._onRoomTimelineBound),v.default.get().on("RoomState.members",n._onRoomStateMemberBound),n}return(0,c.default)(t,e),(0,l.default)(t,[{key:"destroy",value:function(){v.default.get()&&(v.default.get().removeListener("Room.timeline",this._onRoomTimelineBound),v.default.get().removeListener("RoomState.members",this._onRoomStateMemberBound))}},{key:"_onRoomTimeline",value:function(e,t,n,r,o){t&&(r||t.roomId===this.room.roomId&&o.timeline.getTimelineSet()===t.getUnfilteredTimelineSet()&&!n&&o&&o.liveEvent&&this.onUserSpoke(e.sender))}},{key:"_onRoomStateMember",value:function(e,t,n){n.roomId===this.room.roomId&&(this.users=null)}},{key:"getCompletions",value:function(){var e=(0,i.method)(function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=h.default.getComponent("views.avatars.MemberAvatar");null===this.users&&this._makeUsers();var o=[],i=this.getCurrentCommand(e,t,n),a=i.command,s=i.range;if(!a)return o;var l=a[0];if(l&&"@"!==l){var u=l.startsWith("@")?l.substring(1):l;o=this.matcher.match(u).map(function(e){var n=e.name||e.userId||"";return{completion:e.rawDisplayName,completionId:e.userId,suffix:t.beginning&&0===s.start?": ":" ",href:(0,y.makeUserPermalink)(e.userId),component:f.default.createElement(m.PillCompletion,{initialComponent:f.default.createElement(r,{member:e,width:24,height:24}),title:n,description:e.userId}),range:s}})}return o});return function(t,n,r){return e.apply(this,arguments)}}()},{key:"getName",value:function(){return"👥 "+(0,d._t)("Users")}},{key:"_makeUsers",value:function(){var e=this.room.getLiveTimeline().getEvents(),t={},n=!0,r=!1,i=void 0;try{for(var a,s=(0,o.default)(e);!(n=(a=s.next()).done);n=!0){var l=a.value;t[l.getSender()]=l.getTs()}}catch(e){r=!0,i=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw i}}var u=v.default.get().credentials.userId;this.users=this.room.getJoinedMembers().filter(function(e){return e.userId!==u}),this.users=(0,g.default)(this.users,function(e){return 1e20-t[e.userId]||1e20}),this.matcher.setObjects(this.users)}},{key:"onUserSpoke",value:function(e){null!==this.users&&e&&e.userId!==v.default.get().credentials.userId&&(this.users.splice(this.users.findIndex(function(t){return t.userId===e.userId}),1),this.users=[e].concat((0,r.default)(this.users)),this.matcher.setObjects(this.users))}},{key:"renderCompletions",value:function(e){return f.default.createElement("div",{className:"mx_Autocomplete_Completion_container_pill"},e)}},{key:"shouldForceComplete",value:function(){return!0}}]),t}(p.default);t.default=S,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9),o=E(n(11)),i=E(n(4)),a=E(n(5)),s=E(n(12)),l=E(n(13)),u=E(n(14)),c=E(n(0)),f=n(2),d=E(n(178)),p=n(299),m=E(n(254)),h=E(n(3)),_=n(179),g=E(n(428)),v=E(n(255)),y=E(n(22)),b=E(n(1760));function E(e){return e&&e.__esModule?e:{default:e}}var C=["people","food","objects","activity","nature","travel","flags","regional","symbols","modifier"],S=new RegExp("(?:^|\\s|"+p.unicodeRegexp+")("+p.asciiRegexp+"|:[+-\\w]*:?)$","g"),D=new RegExp("(\\s|"+p.unicodeRegexp+")"),w=(0,u.default)(b.default).map(function(e){return b.default[e]}).sort(function(e,t){return e.category===t.category?e.emoji_order-t.emoji_order:C.indexOf(e.category)-C.indexOf(t.category)}).map(function(e,t){return{name:e.name,shortname:e.shortname,aliases:e.aliases?e.aliases.join(" "):"",aliases_ascii:e.aliases_ascii?e.aliases_ascii.join(" "):"",_orderBy:t}});var T=function(e){function t(){(0,i.default)(this,t);var e=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this,S));return e.matcher=new m.default(w,{keys:["aliases_ascii","shortname","aliases"],shouldMatchWordsOnly:!1}),e.nameMatcher=new m.default(w,{keys:["name"],shouldMatchWordsOnly:!0}),e}return(0,l.default)(t,e),(0,a.default)(t,[{key:"getCompletions",value:function(){var e=(0,r.method)(function(e,t,n){if(y.default.getValue("MessageComposerInput.dontSuggestEmoji"))return[];var r=h.default.getComponent("views.elements.EmojiText"),o=[],i=this.getCurrentCommand(e,t),a=i.command,s=i.range;if(a){var l=a[0],u=D.exec(l);u&&(l=l.slice(u[0].length),s.start+=u[0].length),o=(o=this.matcher.match(l)).concat(this.nameMatcher.match(l));var f=[];f.push(function(e){return function(e,t){var n=t.indexOf(e);return-1===n?1/0:n}(l,e.shortname)}),l.length>1&&f.push(function(e){return e.shortname.length}),f.push(function(e){return e._orderBy}),o=(o=(0,v.default)((0,g.default)(o),f)).map(function(e){var t=e.shortname,n=(0,p.shortnameToUnicode)(t);return{completion:n,component:c.default.createElement(_.PillCompletion,{title:t,initialComponent:c.default.createElement(r,{style:{maxWidth:"1em"}},n)}),range:s}}).slice(0,20)}return o});return function(t,n,r){return e.apply(this,arguments)}}()},{key:"getName",value:function(){return"😃 "+(0,f._t)("Emoji")}},{key:"renderCompletions",value:function(e){return c.default.createElement("div",{className:"mx_Autocomplete_Completion_container_pill"},e)}}]),t}(d.default);t.default=T,e.exports=t.default},function(e){e.exports=[{name:"hundred points symbol",shortname:":100:",category:"symbols",emoji_order:"2119"},{name:"input symbol for numbers",shortname:":1234:",category:"symbols",emoji_order:"2122"},{name:"grinning face",shortname:":grinning:",category:"people",emoji_order:"1"},{name:"grinning face with smiling eyes",shortname:":grin:",category:"people",emoji_order:"2"},{name:"face with tears of joy",shortname:":joy:",category:"people",emoji_order:"3",aliases_ascii:[":')",":'-)"]},{name:"rolling on the floor laughing",shortname:":rofl:",category:"people",emoji_order:"4",aliases:[":rolling_on_the_floor_laughing:"]},{name:"smiling face with open mouth",shortname:":smiley:",category:"people",emoji_order:"5",aliases_ascii:[":D",":-D","=D"]},{name:"smiling face with open mouth and smiling eyes",shortname:":smile:",category:"people",emoji_order:"6"},{name:"smiling face with open mouth and cold sweat",shortname:":sweat_smile:",category:"people",emoji_order:"7",aliases_ascii:["':)","':-)","'=)","':D","':-D","'=D"]},{name:"smiling face with open mouth and tightly-closed eyes",shortname:":laughing:",category:"people",emoji_order:"8",aliases:[":satisfied:"],aliases_ascii:[">:)",">;)",">:-)",">=)"]},{name:"winking face",shortname:":wink:",category:"people",emoji_order:"9",aliases_ascii:[";)",";-)","*-)","*)",";-]",";]",";D",";^)"]},{name:"smiling face with smiling eyes",shortname:":blush:",category:"people",emoji_order:"10"},{name:"face savouring delicious food",shortname:":yum:",category:"people",emoji_order:"11"},{name:"smiling face with sunglasses",shortname:":sunglasses:",category:"people",emoji_order:"12",aliases_ascii:["B-)","B)","8)","8-)","B-D","8-D"]},{name:"smiling face with heart-shaped eyes",shortname:":heart_eyes:",category:"people",emoji_order:"13"},{name:"face throwing a kiss",shortname:":kissing_heart:",category:"people",emoji_order:"14",aliases_ascii:[":*",":-*","=*",":^*"]},{name:"kissing face",shortname:":kissing:",category:"people",emoji_order:"15"},{name:"kissing face with smiling eyes",shortname:":kissing_smiling_eyes:",category:"people",emoji_order:"16"},{name:"kissing face with closed eyes",shortname:":kissing_closed_eyes:",category:"people",emoji_order:"17"},{name:"white smiling face",shortname:":relaxed:",category:"people",emoji_order:"18"},{name:"slightly smiling face",shortname:":slight_smile:",category:"people",emoji_order:"19",aliases:[":slightly_smiling_face:"],aliases_ascii:[":)",":-)","=]","=)",":]"]},{name:"hugging face",shortname:":hugging:",category:"people",emoji_order:"20",aliases:[":hugging_face:"]},{name:"thinking face",shortname:":thinking:",category:"people",emoji_order:"21",aliases:[":thinking_face:"]},{name:"neutral face",shortname:":neutral_face:",category:"people",emoji_order:"22"},{name:"expressionless face",shortname:":expressionless:",category:"people",emoji_order:"23",aliases_ascii:["-_-","-__-","-___-"]},{name:"face without mouth",shortname:":no_mouth:",category:"people",emoji_order:"24",aliases_ascii:[":-X",":X",":-#",":#","=X","=x",":x",":-x","=#"]},{name:"face with rolling eyes",shortname:":rolling_eyes:",category:"people",emoji_order:"25",aliases:[":face_with_rolling_eyes:"]},{name:"smirking face",shortname:":smirk:",category:"people",emoji_order:"26"},{name:"persevering face",shortname:":persevere:",category:"people",emoji_order:"27",aliases_ascii:[">.<"]},{name:"disappointed but relieved face",shortname:":disappointed_relieved:",category:"people",emoji_order:"28"},{name:"face with open mouth",shortname:":open_mouth:",category:"people",emoji_order:"29",aliases_ascii:[":-O",":O",":-o",":o","O_O",">:O"]},{name:"zipper-mouth face",shortname:":zipper_mouth:",category:"people",emoji_order:"30",aliases:[":zipper_mouth_face:"]},{name:"hushed face",shortname:":hushed:",category:"people",emoji_order:"31"},{name:"sleepy face",shortname:":sleepy:",category:"people",emoji_order:"32"},{name:"tired face",shortname:":tired_face:",category:"people",emoji_order:"33"},{name:"sleeping face",shortname:":sleeping:",category:"people",emoji_order:"34"},{name:"relieved face",shortname:":relieved:",category:"people",emoji_order:"35"},{name:"nerd face",shortname:":nerd:",category:"people",emoji_order:"36",aliases:[":nerd_face:"]},{name:"face with stuck-out tongue",shortname:":stuck_out_tongue:",category:"people",emoji_order:"37",aliases_ascii:[":P",":-P","=P",":-p",":p","=p",":-Þ",":Þ",":þ",":-þ",":-b",":b","d:"]},{name:"face with stuck-out tongue and winking eye",shortname:":stuck_out_tongue_winking_eye:",category:"people",emoji_order:"38",aliases_ascii:[">:P","X-P","x-p"]},{name:"face with stuck-out tongue and tightly-closed eyes",shortname:":stuck_out_tongue_closed_eyes:",category:"people",emoji_order:"39"},{name:"drooling face",shortname:":drooling_face:",category:"people",emoji_order:"40",aliases:[":drool:"]},{name:"unamused face",shortname:":unamused:",category:"people",emoji_order:"41"},{name:"face with cold sweat",shortname:":sweat:",category:"people",emoji_order:"42",aliases_ascii:["':(","':-(","'=("]},{name:"pensive face",shortname:":pensive:",category:"people",emoji_order:"43"},{name:"confused face",shortname:":confused:",category:"people",emoji_order:"44",aliases_ascii:[">:\\",">:/",":-/",":-.",":/",":\\","=/","=\\",":L","=L"]},{name:"upside-down face",shortname:":upside_down:",category:"people",emoji_order:"45",aliases:[":upside_down_face:"]},{name:"money-mouth face",shortname:":money_mouth:",category:"people",emoji_order:"46",aliases:[":money_mouth_face:"]},{name:"astonished face",shortname:":astonished:",category:"people",emoji_order:"47"},{name:"white frowning face",shortname:":frowning2:",category:"people",emoji_order:"48",aliases:[":white_frowning_face:"]},{name:"slightly frowning face",shortname:":slight_frown:",category:"people",emoji_order:"49",aliases:[":slightly_frowning_face:"]},{name:"confounded face",shortname:":confounded:",category:"people",emoji_order:"50"},{name:"disappointed face",shortname:":disappointed:",category:"people",emoji_order:"51",aliases_ascii:[">:[",":-(",":(",":-[",":[","=("]},{name:"worried face",shortname:":worried:",category:"people",emoji_order:"52"},{name:"face with look of triumph",shortname:":triumph:",category:"people",emoji_order:"53"},{name:"crying face",shortname:":cry:",category:"people",emoji_order:"54",aliases_ascii:[":'(",":'-(",";(",";-("]},{name:"loudly crying face",shortname:":sob:",category:"people",emoji_order:"55"},{name:"frowning face with open mouth",shortname:":frowning:",category:"people",emoji_order:"56"},{name:"anguished face",shortname:":anguished:",category:"people",emoji_order:"57"},{name:"fearful face",shortname:":fearful:",category:"people",emoji_order:"58",aliases_ascii:["D:"]},{name:"weary face",shortname:":weary:",category:"people",emoji_order:"59"},{name:"grimacing face",shortname:":grimacing:",category:"people",emoji_order:"60"},{name:"face with open mouth and cold sweat",shortname:":cold_sweat:",category:"people",emoji_order:"61"},{name:"face screaming in fear",shortname:":scream:",category:"people",emoji_order:"62"},{name:"flushed face",shortname:":flushed:",category:"people",emoji_order:"63",aliases_ascii:[":$","=$"]},{name:"dizzy face",shortname:":dizzy_face:",category:"people",emoji_order:"64",aliases_ascii:["#-)","#)","%-)","%)","X)","X-)"]},{name:"pouting face",shortname:":rage:",category:"people",emoji_order:"65"},{name:"angry face",shortname:":angry:",category:"people",emoji_order:"66",aliases_ascii:[">:(",">:-(",":@"]},{name:"smiling face with halo",shortname:":innocent:",category:"people",emoji_order:"67",aliases_ascii:["O:-)","0:-3","0:3","0:-)","0:)","0;^)","O:)","O;-)","O=)","0;-)","O:-3","O:3"]},{name:"face with cowboy hat",shortname:":cowboy:",category:"people",emoji_order:"68",aliases:[":face_with_cowboy_hat:"]},{name:"clown face",shortname:":clown:",category:"people",emoji_order:"69",aliases:[":clown_face:"]},{name:"lying face",shortname:":lying_face:",category:"people",emoji_order:"70",aliases:[":liar:"]},{name:"face with medical mask",shortname:":mask:",category:"people",emoji_order:"71"},{name:"face with thermometer",shortname:":thermometer_face:",category:"people",emoji_order:"72",aliases:[":face_with_thermometer:"]},{name:"face with head-bandage",shortname:":head_bandage:",category:"people",emoji_order:"73",aliases:[":face_with_head_bandage:"]},{name:"nauseated face",shortname:":nauseated_face:",category:"people",emoji_order:"74",aliases:[":sick:"]},{name:"sneezing face",shortname:":sneezing_face:",category:"people",emoji_order:"75",aliases:[":sneeze:"]},{name:"smiling face with horns",shortname:":smiling_imp:",category:"people",emoji_order:"76"},{name:"imp",shortname:":imp:",category:"people",emoji_order:"77"},{name:"japanese ogre",shortname:":japanese_ogre:",category:"people",emoji_order:"78"},{name:"japanese goblin",shortname:":japanese_goblin:",category:"people",emoji_order:"79"},{name:"skull",shortname:":skull:",category:"people",emoji_order:"80",aliases:[":skeleton:"]},{name:"skull and crossbones",shortname:":skull_crossbones:",category:"objects",emoji_order:"81",aliases:[":skull_and_crossbones:"]},{name:"ghost",shortname:":ghost:",category:"people",emoji_order:"82"},{name:"extraterrestrial alien",shortname:":alien:",category:"people",emoji_order:"83"},{name:"alien monster",shortname:":space_invader:",category:"activity",emoji_order:"84"},{name:"robot face",shortname:":robot:",category:"people",emoji_order:"85",aliases:[":robot_face:"]},{name:"pile of poo",shortname:":poop:",category:"people",emoji_order:"86",aliases:[":shit:",":hankey:",":poo:"]},{name:"smiling cat face with open mouth",shortname:":smiley_cat:",category:"people",emoji_order:"87"},{name:"grinning cat face with smiling eyes",shortname:":smile_cat:",category:"people",emoji_order:"88"},{name:"cat face with tears of joy",shortname:":joy_cat:",category:"people",emoji_order:"89"},{name:"smiling cat face with heart-shaped eyes",shortname:":heart_eyes_cat:",category:"people",emoji_order:"90"},{name:"cat face with wry smile",shortname:":smirk_cat:",category:"people",emoji_order:"91"},{name:"kissing cat face with closed eyes",shortname:":kissing_cat:",category:"people",emoji_order:"92"},{name:"weary cat face",shortname:":scream_cat:",category:"people",emoji_order:"93"},{name:"crying cat face",shortname:":crying_cat_face:",category:"people",emoji_order:"94"},{name:"pouting cat face",shortname:":pouting_cat:",category:"people",emoji_order:"95"},{name:"see-no-evil monkey",shortname:":see_no_evil:",category:"nature",emoji_order:"96"},{name:"hear-no-evil monkey",shortname:":hear_no_evil:",category:"nature",emoji_order:"97"},{name:"speak-no-evil monkey",shortname:":speak_no_evil:",category:"nature",emoji_order:"98"},{name:"boy",shortname:":boy:",category:"people",emoji_order:"99"},{name:"boy tone 1",shortname:":boy_tone1:",category:"people",emoji_order:"100"},{name:"boy tone 2",shortname:":boy_tone2:",category:"people",emoji_order:"101"},{name:"boy tone 3",shortname:":boy_tone3:",category:"people",emoji_order:"102"},{name:"boy tone 4",shortname:":boy_tone4:",category:"people",emoji_order:"103"},{name:"boy tone 5",shortname:":boy_tone5:",category:"people",emoji_order:"104"},{name:"girl",shortname:":girl:",category:"people",emoji_order:"105"},{name:"girl tone 1",shortname:":girl_tone1:",category:"people",emoji_order:"106"},{name:"girl tone 2",shortname:":girl_tone2:",category:"people",emoji_order:"107"},{name:"girl tone 3",shortname:":girl_tone3:",category:"people",emoji_order:"108"},{name:"girl tone 4",shortname:":girl_tone4:",category:"people",emoji_order:"109"},{name:"girl tone 5",shortname:":girl_tone5:",category:"people",emoji_order:"110"},{name:"man",shortname:":man:",category:"people",emoji_order:"111"},{name:"man tone 1",shortname:":man_tone1:",category:"people",emoji_order:"112"},{name:"man tone 2",shortname:":man_tone2:",category:"people",emoji_order:"113"},{name:"man tone 3",shortname:":man_tone3:",category:"people",emoji_order:"114"},{name:"man tone 4",shortname:":man_tone4:",category:"people",emoji_order:"115"},{name:"man tone 5",shortname:":man_tone5:",category:"people",emoji_order:"116"},{name:"woman",shortname:":woman:",category:"people",emoji_order:"117"},{name:"woman tone 1",shortname:":woman_tone1:",category:"people",emoji_order:"118"},{name:"woman tone 2",shortname:":woman_tone2:",category:"people",emoji_order:"119"},{name:"woman tone 3",shortname:":woman_tone3:",category:"people",emoji_order:"120"},{name:"woman tone 4",shortname:":woman_tone4:",category:"people",emoji_order:"121"},{name:"woman tone 5",shortname:":woman_tone5:",category:"people",emoji_order:"122"},{name:"older man",shortname:":older_man:",category:"people",emoji_order:"123"},{name:"older man tone 1",shortname:":older_man_tone1:",category:"people",emoji_order:"124"},{name:"older man tone 2",shortname:":older_man_tone2:",category:"people",emoji_order:"125"},{name:"older man tone 3",shortname:":older_man_tone3:",category:"people",emoji_order:"126"},{name:"older man tone 4",shortname:":older_man_tone4:",category:"people",emoji_order:"127"},{name:"older man tone 5",shortname:":older_man_tone5:",category:"people",emoji_order:"128"},{name:"older woman",shortname:":older_woman:",category:"people",emoji_order:"129",aliases:[":grandma:"]},{name:"older woman tone 1",shortname:":older_woman_tone1:",category:"people",emoji_order:"130",aliases:[":grandma_tone1:"]},{name:"older woman tone 2",shortname:":older_woman_tone2:",category:"people",emoji_order:"131",aliases:[":grandma_tone2:"]},{name:"older woman tone 3",shortname:":older_woman_tone3:",category:"people",emoji_order:"132",aliases:[":grandma_tone3:"]},{name:"older woman tone 4",shortname:":older_woman_tone4:",category:"people",emoji_order:"133",aliases:[":grandma_tone4:"]},{name:"older woman tone 5",shortname:":older_woman_tone5:",category:"people",emoji_order:"134",aliases:[":grandma_tone5:"]},{name:"baby",shortname:":baby:",category:"people",emoji_order:"135"},{name:"baby tone 1",shortname:":baby_tone1:",category:"people",emoji_order:"136"},{name:"baby tone 2",shortname:":baby_tone2:",category:"people",emoji_order:"137"},{name:"baby tone 3",shortname:":baby_tone3:",category:"people",emoji_order:"138"},{name:"baby tone 4",shortname:":baby_tone4:",category:"people",emoji_order:"139"},{name:"baby tone 5",shortname:":baby_tone5:",category:"people",emoji_order:"140"},{name:"baby angel",shortname:":angel:",category:"people",emoji_order:"141"},{name:"baby angel tone 1",shortname:":angel_tone1:",category:"people",emoji_order:"142"},{name:"baby angel tone 2",shortname:":angel_tone2:",category:"people",emoji_order:"143"},{name:"baby angel tone 3",shortname:":angel_tone3:",category:"people",emoji_order:"144"},{name:"baby angel tone 4",shortname:":angel_tone4:",category:"people",emoji_order:"145"},{name:"baby angel tone 5",shortname:":angel_tone5:",category:"people",emoji_order:"146"},{name:"police officer",shortname:":cop:",category:"people",emoji_order:"339"},{name:"police officer tone 1",shortname:":cop_tone1:",category:"people",emoji_order:"340"},{name:"police officer tone 2",shortname:":cop_tone2:",category:"people",emoji_order:"341"},{name:"police officer tone 3",shortname:":cop_tone3:",category:"people",emoji_order:"342"},{name:"police officer tone 4",shortname:":cop_tone4:",category:"people",emoji_order:"343"},{name:"police officer tone 5",shortname:":cop_tone5:",category:"people",emoji_order:"344"},{name:"sleuth or spy",shortname:":spy:",category:"people",emoji_order:"357",aliases:[":sleuth_or_spy:"]},{name:"sleuth or spy tone 1",shortname:":spy_tone1:",category:"people",emoji_order:"358",aliases:[":sleuth_or_spy_tone1:"]},{name:"sleuth or spy tone 2",shortname:":spy_tone2:",category:"people",emoji_order:"359",aliases:[":sleuth_or_spy_tone2:"]},{name:"sleuth or spy tone 3",shortname:":spy_tone3:",category:"people",emoji_order:"360",aliases:[":sleuth_or_spy_tone3:"]},{name:"sleuth or spy tone 4",shortname:":spy_tone4:",category:"people",emoji_order:"361",aliases:[":sleuth_or_spy_tone4:"]},{name:"sleuth or spy tone 5",shortname:":spy_tone5:",category:"people",emoji_order:"362",aliases:[":sleuth_or_spy_tone5:"]},{name:"guardsman",shortname:":guardsman:",category:"people",emoji_order:"375"},{name:"guardsman tone 1",shortname:":guardsman_tone1:",category:"people",emoji_order:"376"},{name:"guardsman tone 2",shortname:":guardsman_tone2:",category:"people",emoji_order:"377"},{name:"guardsman tone 3",shortname:":guardsman_tone3:",category:"people",emoji_order:"378"},{name:"guardsman tone 4",shortname:":guardsman_tone4:",category:"people",emoji_order:"379"},{name:"guardsman tone 5",shortname:":guardsman_tone5:",category:"people",emoji_order:"380"},{name:"construction worker",shortname:":construction_worker:",category:"people",emoji_order:"393"},{name:"construction worker tone 1",shortname:":construction_worker_tone1:",category:"people",emoji_order:"394"},{name:"construction worker tone 2",shortname:":construction_worker_tone2:",category:"people",emoji_order:"395"},{name:"construction worker tone 3",shortname:":construction_worker_tone3:",category:"people",emoji_order:"396"},{name:"construction worker tone 4",shortname:":construction_worker_tone4:",category:"people",emoji_order:"397"},{name:"construction worker tone 5",shortname:":construction_worker_tone5:",category:"people",emoji_order:"398"},{name:"man with turban",shortname:":man_with_turban:",category:"people",emoji_order:"411"},{name:"man with turban tone 1",shortname:":man_with_turban_tone1:",category:"people",emoji_order:"412"},{name:"man with turban tone 2",shortname:":man_with_turban_tone2:",category:"people",emoji_order:"413"},{name:"man with turban tone 3",shortname:":man_with_turban_tone3:",category:"people",emoji_order:"414"},{name:"man with turban tone 4",shortname:":man_with_turban_tone4:",category:"people",emoji_order:"415"},{name:"man with turban tone 5",shortname:":man_with_turban_tone5:",category:"people",emoji_order:"416"},{name:"person with blond hair",shortname:":person_with_blond_hair:",category:"people",emoji_order:"429"},{name:"person with blond hair tone 1",shortname:":person_with_blond_hair_tone1:",category:"people",emoji_order:"430"},{name:"person with blond hair tone 2",shortname:":person_with_blond_hair_tone2:",category:"people",emoji_order:"431"},{name:"person with blond hair tone 3",shortname:":person_with_blond_hair_tone3:",category:"people",emoji_order:"432"},{name:"person with blond hair tone 4",shortname:":person_with_blond_hair_tone4:",category:"people",emoji_order:"433"},{name:"person with blond hair tone 5",shortname:":person_with_blond_hair_tone5:",category:"people",emoji_order:"434"},{name:"father christmas",shortname:":santa:",category:"people",emoji_order:"447"},{name:"father christmas tone 1",shortname:":santa_tone1:",category:"people",emoji_order:"448"},{name:"father christmas tone 2",shortname:":santa_tone2:",category:"people",emoji_order:"449"},{name:"father christmas tone 3",shortname:":santa_tone3:",category:"people",emoji_order:"450"},{name:"father christmas tone 4",shortname:":santa_tone4:",category:"people",emoji_order:"451"},{name:"father christmas tone 5",shortname:":santa_tone5:",category:"people",emoji_order:"452"},{name:"mother christmas",shortname:":mrs_claus:",category:"people",emoji_order:"453",aliases:[":mother_christmas:"]},{name:"mother christmas tone 1",shortname:":mrs_claus_tone1:",category:"people",emoji_order:"454",aliases:[":mother_christmas_tone1:"]},{name:"mother christmas tone 2",shortname:":mrs_claus_tone2:",category:"people",emoji_order:"455",aliases:[":mother_christmas_tone2:"]},{name:"mother christmas tone 3",shortname:":mrs_claus_tone3:",category:"people",emoji_order:"456",aliases:[":mother_christmas_tone3:"]},{name:"mother christmas tone 4",shortname:":mrs_claus_tone4:",category:"people",emoji_order:"457",aliases:[":mother_christmas_tone4:"]},{name:"mother christmas tone 5",shortname:":mrs_claus_tone5:",category:"people",emoji_order:"458",aliases:[":mother_christmas_tone5:"]},{name:"princess",shortname:":princess:",category:"people",emoji_order:"459"},{name:"princess tone 1",shortname:":princess_tone1:",category:"people",emoji_order:"460"},{name:"princess tone 2",shortname:":princess_tone2:",category:"people",emoji_order:"461"},{name:"princess tone 3",shortname:":princess_tone3:",category:"people",emoji_order:"462"},{name:"princess tone 4",shortname:":princess_tone4:",category:"people",emoji_order:"463"},{name:"princess tone 5",shortname:":princess_tone5:",category:"people",emoji_order:"464"},{name:"prince",shortname:":prince:",category:"people",emoji_order:"465"},{name:"prince tone 1",shortname:":prince_tone1:",category:"people",emoji_order:"466"},{name:"prince tone 2",shortname:":prince_tone2:",category:"people",emoji_order:"467"},{name:"prince tone 3",shortname:":prince_tone3:",category:"people",emoji_order:"468"},{name:"prince tone 4",shortname:":prince_tone4:",category:"people",emoji_order:"469"},{name:"prince tone 5",shortname:":prince_tone5:",category:"people",emoji_order:"470"},{name:"bride with veil",shortname:":bride_with_veil:",category:"people",emoji_order:"471"},{name:"bride with veil tone 1",shortname:":bride_with_veil_tone1:",category:"people",emoji_order:"472"},{name:"bride with veil tone 2",shortname:":bride_with_veil_tone2:",category:"people",emoji_order:"473"},{name:"bride with veil tone 3",shortname:":bride_with_veil_tone3:",category:"people",emoji_order:"474"},{name:"bride with veil tone 4",shortname:":bride_with_veil_tone4:",category:"people",emoji_order:"475"},{name:"bride with veil tone 5",shortname:":bride_with_veil_tone5:",category:"people",emoji_order:"476"},{name:"man in tuxedo",shortname:":man_in_tuxedo:",category:"people",emoji_order:"477"},{name:"man in tuxedo tone 1",shortname:":man_in_tuxedo_tone1:",category:"people",emoji_order:"478",aliases:[":tuxedo_tone1:"]},{name:"man in tuxedo tone 2",shortname:":man_in_tuxedo_tone2:",category:"people",emoji_order:"479",aliases:[":tuxedo_tone2:"]},{name:"man in tuxedo tone 3",shortname:":man_in_tuxedo_tone3:",category:"people",emoji_order:"480",aliases:[":tuxedo_tone3:"]},{name:"man in tuxedo tone 4",shortname:":man_in_tuxedo_tone4:",category:"people",emoji_order:"481",aliases:[":tuxedo_tone4:"]},{name:"man in tuxedo tone 5",shortname:":man_in_tuxedo_tone5:",category:"people",emoji_order:"482",aliases:[":tuxedo_tone5:"]},{name:"pregnant woman",shortname:":pregnant_woman:",category:"people",emoji_order:"483",aliases:[":expecting_woman:"]},{name:"pregnant woman tone 1",shortname:":pregnant_woman_tone1:",category:"people",emoji_order:"484",aliases:[":expecting_woman_tone1:"]},{name:"pregnant woman tone 2",shortname:":pregnant_woman_tone2:",category:"people",emoji_order:"485",aliases:[":expecting_woman_tone2:"]},{name:"pregnant woman tone 3",shortname:":pregnant_woman_tone3:",category:"people",emoji_order:"486",aliases:[":expecting_woman_tone3:"]},{name:"pregnant woman tone 4",shortname:":pregnant_woman_tone4:",category:"people",emoji_order:"487",aliases:[":expecting_woman_tone4:"]},{name:"pregnant woman tone 5",shortname:":pregnant_woman_tone5:",category:"people",emoji_order:"488",aliases:[":expecting_woman_tone5:"]},{name:"man with gua pi mao",shortname:":man_with_gua_pi_mao:",category:"people",emoji_order:"489"},{name:"man with gua pi mao tone 1",shortname:":man_with_gua_pi_mao_tone1:",category:"people",emoji_order:"490"},{name:"man with gua pi mao tone 2",shortname:":man_with_gua_pi_mao_tone2:",category:"people",emoji_order:"491"},{name:"man with gua pi mao tone 3",shortname:":man_with_gua_pi_mao_tone3:",category:"people",emoji_order:"492"},{name:"man with gua pi mao tone 4",shortname:":man_with_gua_pi_mao_tone4:",category:"people",emoji_order:"493"},{name:"man with gua pi mao tone 5",shortname:":man_with_gua_pi_mao_tone5:",category:"people",emoji_order:"494"},{name:"person frowning",shortname:":person_frowning:",category:"people",emoji_order:"495"},{name:"person frowning tone 1",shortname:":person_frowning_tone1:",category:"people",emoji_order:"496"},{name:"person frowning tone 2",shortname:":person_frowning_tone2:",category:"people",emoji_order:"497"},{name:"person frowning tone 3",shortname:":person_frowning_tone3:",category:"people",emoji_order:"498"},{name:"person frowning tone 4",shortname:":person_frowning_tone4:",category:"people",emoji_order:"499"},{name:"person frowning tone 5",shortname:":person_frowning_tone5:",category:"people",emoji_order:"500"},{name:"person with pouting face",shortname:":person_with_pouting_face:",category:"people",emoji_order:"513"},{name:"person with pouting face tone1",shortname:":person_with_pouting_face_tone1:",category:"people",emoji_order:"514"},{name:"person with pouting face tone2",shortname:":person_with_pouting_face_tone2:",category:"people",emoji_order:"515"},{name:"person with pouting face tone3",shortname:":person_with_pouting_face_tone3:",category:"people",emoji_order:"516"},{name:"person with pouting face tone4",shortname:":person_with_pouting_face_tone4:",category:"people",emoji_order:"517"},{name:"person with pouting face tone5",shortname:":person_with_pouting_face_tone5:",category:"people",emoji_order:"518"},{name:"face with no good gesture",shortname:":no_good:",category:"people",emoji_order:"531"},{name:"face with no good gesture tone 1",shortname:":no_good_tone1:",category:"people",emoji_order:"532"},{name:"face with no good gesture tone 2",shortname:":no_good_tone2:",category:"people",emoji_order:"533"},{name:"face with no good gesture tone 3",shortname:":no_good_tone3:",category:"people",emoji_order:"534"},{name:"face with no good gesture tone 4",shortname:":no_good_tone4:",category:"people",emoji_order:"535"},{name:"face with no good gesture tone 5",shortname:":no_good_tone5:",category:"people",emoji_order:"536"},{name:"face with ok gesture",shortname:":ok_woman:",category:"people",emoji_order:"549",aliases_ascii:["*\\0/*","\\0/","*\\O/*","\\O/"]},{name:"face with ok gesture tone1",shortname:":ok_woman_tone1:",category:"people",emoji_order:"550"},{name:"face with ok gesture tone2",shortname:":ok_woman_tone2:",category:"people",emoji_order:"551"},{name:"face with ok gesture tone3",shortname:":ok_woman_tone3:",category:"people",emoji_order:"552"},{name:"face with ok gesture tone4",shortname:":ok_woman_tone4:",category:"people",emoji_order:"553"},{name:"face with ok gesture tone5",shortname:":ok_woman_tone5:",category:"people",emoji_order:"554"},{name:"information desk person",shortname:":information_desk_person:",category:"people",emoji_order:"567"},{name:"information desk person tone 1",shortname:":information_desk_person_tone1:",category:"people",emoji_order:"568"},{name:"information desk person tone 2",shortname:":information_desk_person_tone2:",category:"people",emoji_order:"569"},{name:"information desk person tone 3",shortname:":information_desk_person_tone3:",category:"people",emoji_order:"570"},{name:"information desk person tone 4",shortname:":information_desk_person_tone4:",category:"people",emoji_order:"571"},{name:"information desk person tone 5",shortname:":information_desk_person_tone5:",category:"people",emoji_order:"572"},{name:"happy person raising one hand",shortname:":raising_hand:",category:"people",emoji_order:"585"},{name:"happy person raising one hand tone1",shortname:":raising_hand_tone1:",category:"people",emoji_order:"586"},{name:"happy person raising one hand tone2",shortname:":raising_hand_tone2:",category:"people",emoji_order:"587"},{name:"happy person raising one hand tone3",shortname:":raising_hand_tone3:",category:"people",emoji_order:"588"},{name:"happy person raising one hand tone4",shortname:":raising_hand_tone4:",category:"people",emoji_order:"589"},{name:"happy person raising one hand tone5",shortname:":raising_hand_tone5:",category:"people",emoji_order:"590"},{name:"person bowing deeply",shortname:":bow:",category:"people",emoji_order:"603"},{name:"person bowing deeply tone 1",shortname:":bow_tone1:",category:"people",emoji_order:"604"},{name:"person bowing deeply tone 2",shortname:":bow_tone2:",category:"people",emoji_order:"605"},{name:"person bowing deeply tone 3",shortname:":bow_tone3:",category:"people",emoji_order:"606"},{name:"person bowing deeply tone 4",shortname:":bow_tone4:",category:"people",emoji_order:"607"},{name:"person bowing deeply tone 5",shortname:":bow_tone5:",category:"people",emoji_order:"608"},{name:"face palm",shortname:":face_palm:",category:"people",emoji_order:"621",aliases:[":facepalm:"]},{name:"face palm tone 1",shortname:":face_palm_tone1:",category:"people",emoji_order:"622",aliases:[":facepalm_tone1:"]},{name:"face palm tone 2",shortname:":face_palm_tone2:",category:"people",emoji_order:"623",aliases:[":facepalm_tone2:"]},{name:"face palm tone 3",shortname:":face_palm_tone3:",category:"people",emoji_order:"624",aliases:[":facepalm_tone3:"]},{name:"face palm tone 4",shortname:":face_palm_tone4:",category:"people",emoji_order:"625",aliases:[":facepalm_tone4:"]},{name:"face palm tone 5",shortname:":face_palm_tone5:",category:"people",emoji_order:"626",aliases:[":facepalm_tone5:"]},{name:"shrug",shortname:":shrug:",category:"people",emoji_order:"639"},{name:"shrug tone 1",shortname:":shrug_tone1:",category:"people",emoji_order:"640"},{name:"shrug tone 2",shortname:":shrug_tone2:",category:"people",emoji_order:"641"},{name:"shrug tone 3",shortname:":shrug_tone3:",category:"people",emoji_order:"642"},{name:"shrug tone 4",shortname:":shrug_tone4:",category:"people",emoji_order:"643"},{name:"shrug tone 5",shortname:":shrug_tone5:",category:"people",emoji_order:"644"},{name:"face massage",shortname:":massage:",category:"people",emoji_order:"657"},{name:"face massage tone 1",shortname:":massage_tone1:",category:"people",emoji_order:"658"},{name:"face massage tone 2",shortname:":massage_tone2:",category:"people",emoji_order:"659"},{name:"face massage tone 3",shortname:":massage_tone3:",category:"people",emoji_order:"660"},{name:"face massage tone 4",shortname:":massage_tone4:",category:"people",emoji_order:"661"},{name:"face massage tone 5",shortname:":massage_tone5:",category:"people",emoji_order:"662"},{name:"haircut",shortname:":haircut:",category:"people",emoji_order:"675"},{name:"haircut tone 1",shortname:":haircut_tone1:",category:"people",emoji_order:"676"},{name:"haircut tone 2",shortname:":haircut_tone2:",category:"people",emoji_order:"677"},{name:"haircut tone 3",shortname:":haircut_tone3:",category:"people",emoji_order:"678"},{name:"haircut tone 4",shortname:":haircut_tone4:",category:"people",emoji_order:"679"},{name:"haircut tone 5",shortname:":haircut_tone5:",category:"people",emoji_order:"680"},{name:"pedestrian",shortname:":walking:",category:"people",emoji_order:"693"},{name:"pedestrian tone 1",shortname:":walking_tone1:",category:"people",emoji_order:"694"},{name:"pedestrian tone 2",shortname:":walking_tone2:",category:"people",emoji_order:"695"},{name:"pedestrian tone 3",shortname:":walking_tone3:",category:"people",emoji_order:"696"},{name:"pedestrian tone 4",shortname:":walking_tone4:",category:"people",emoji_order:"697"},{name:"pedestrian tone 5",shortname:":walking_tone5:",category:"people",emoji_order:"698"},{name:"runner",shortname:":runner:",category:"people",emoji_order:"711"},{name:"runner tone 1",shortname:":runner_tone1:",category:"people",emoji_order:"712"},{name:"runner tone 2",shortname:":runner_tone2:",category:"people",emoji_order:"713"},{name:"runner tone 3",shortname:":runner_tone3:",category:"people",emoji_order:"714"},{name:"runner tone 4",shortname:":runner_tone4:",category:"people",emoji_order:"715"},{name:"runner tone 5",shortname:":runner_tone5:",category:"people",emoji_order:"716"},{name:"dancer",shortname:":dancer:",category:"people",emoji_order:"729"},{name:"dancer tone 1",shortname:":dancer_tone1:",category:"people",emoji_order:"730"},{name:"dancer tone 2",shortname:":dancer_tone2:",category:"people",emoji_order:"731"},{name:"dancer tone 3",shortname:":dancer_tone3:",category:"people",emoji_order:"732"},{name:"dancer tone 4",shortname:":dancer_tone4:",category:"people",emoji_order:"733"},{name:"dancer tone 5",shortname:":dancer_tone5:",category:"people",emoji_order:"734"},{name:"man dancing",shortname:":man_dancing:",category:"people",emoji_order:"735",aliases:[":male_dancer:"]},{name:"man dancing tone 1",shortname:":man_dancing_tone1:",category:"people",emoji_order:"736",aliases:[":male_dancer_tone1:"]},{name:"man dancing tone 2",shortname:":man_dancing_tone2:",category:"people",emoji_order:"737",aliases:[":male_dancer_tone2:"]},{name:"man dancing tone 3",shortname:":man_dancing_tone3:",category:"people",emoji_order:"738",aliases:[":male_dancer_tone3:"]},{name:"man dancing tone 4",shortname:":man_dancing_tone4:",category:"people",emoji_order:"739",aliases:[":male_dancer_tone4:"]},{name:"man dancing tone 5",shortname:":man_dancing_tone5:",category:"people",emoji_order:"740",aliases:[":male_dancer_tone5:"]},{name:"woman with bunny ears",shortname:":dancers:",category:"people",emoji_order:"741"},{name:"man in business suit levitating",shortname:":levitate:",category:"activity",emoji_order:"759",aliases:[":man_in_business_suit_levitating:"]},{name:"speaking head in silhouette",shortname:":speaking_head:",category:"people",emoji_order:"765",aliases:[":speaking_head_in_silhouette:"]},{name:"bust in silhouette",shortname:":bust_in_silhouette:",category:"people",emoji_order:"766"},{name:"busts in silhouette",shortname:":busts_in_silhouette:",category:"people",emoji_order:"767"},{name:"fencer",shortname:":fencer:",category:"activity",emoji_order:"768",aliases:[":fencing:"]},{name:"horse racing",shortname:":horse_racing:",category:"activity",emoji_order:"769"},{name:"horse racing tone 1",shortname:":horse_racing_tone1:",category:"activity",emoji_order:"770"},{name:"horse racing tone 2",shortname:":horse_racing_tone2:",category:"activity",emoji_order:"771"},{name:"horse racing tone 3",shortname:":horse_racing_tone3:",category:"activity",emoji_order:"772"},{name:"horse racing tone 4",shortname:":horse_racing_tone4:",category:"activity",emoji_order:"773"},{name:"horse racing tone 5",shortname:":horse_racing_tone5:",category:"activity",emoji_order:"774"},{name:"skier",shortname:":skier:",category:"activity",emoji_order:"775"},{name:"snowboarder",shortname:":snowboarder:",category:"activity",emoji_order:"776"},{name:"golfer",shortname:":golfer:",category:"activity",emoji_order:"782"},{name:"surfer",shortname:":surfer:",category:"activity",emoji_order:"800"},{name:"surfer tone 1",shortname:":surfer_tone1:",category:"activity",emoji_order:"801"},{name:"surfer tone 2",shortname:":surfer_tone2:",category:"activity",emoji_order:"802"},{name:"surfer tone 3",shortname:":surfer_tone3:",category:"activity",emoji_order:"803"},{name:"surfer tone 4",shortname:":surfer_tone4:",category:"activity",emoji_order:"804"},{name:"surfer tone 5",shortname:":surfer_tone5:",category:"activity",emoji_order:"805"},{name:"rowboat",shortname:":rowboat:",category:"activity",emoji_order:"818"},{name:"rowboat tone 1",shortname:":rowboat_tone1:",category:"activity",emoji_order:"819"},{name:"rowboat tone 2",shortname:":rowboat_tone2:",category:"activity",emoji_order:"820"},{name:"rowboat tone 3",shortname:":rowboat_tone3:",category:"activity",emoji_order:"821"},{name:"rowboat tone 4",shortname:":rowboat_tone4:",category:"activity",emoji_order:"822"},{name:"rowboat tone 5",shortname:":rowboat_tone5:",category:"activity",emoji_order:"823"},{name:"swimmer",shortname:":swimmer:",category:"activity",emoji_order:"836"},{name:"swimmer tone 1",shortname:":swimmer_tone1:",category:"activity",emoji_order:"837"},{name:"swimmer tone 2",shortname:":swimmer_tone2:",category:"activity",emoji_order:"838"},{name:"swimmer tone 3",shortname:":swimmer_tone3:",category:"activity",emoji_order:"839"},{name:"swimmer tone 4",shortname:":swimmer_tone4:",category:"activity",emoji_order:"840"},{name:"swimmer tone 5",shortname:":swimmer_tone5:",category:"activity",emoji_order:"841"},{name:"person with ball",shortname:":basketball_player:",category:"activity",emoji_order:"854",aliases:[":person_with_ball:"]},{name:"person with ball tone 1",shortname:":basketball_player_tone1:",category:"activity",emoji_order:"855",aliases:[":person_with_ball_tone1:"]},{name:"person with ball tone 2",shortname:":basketball_player_tone2:",category:"activity",emoji_order:"856",aliases:[":person_with_ball_tone2:"]},{name:"person with ball tone 3",shortname:":basketball_player_tone3:",category:"activity",emoji_order:"857",aliases:[":person_with_ball_tone3:"]},{name:"person with ball tone 4",shortname:":basketball_player_tone4:",category:"activity",emoji_order:"858",aliases:[":person_with_ball_tone4:"]},{name:"person with ball tone 5",shortname:":basketball_player_tone5:",category:"activity",emoji_order:"859",aliases:[":person_with_ball_tone5:"]},{name:"weight lifter",shortname:":lifter:",category:"activity",emoji_order:"872",aliases:[":weight_lifter:"]},{name:"weight lifter tone 1",shortname:":lifter_tone1:",category:"activity",emoji_order:"873",aliases:[":weight_lifter_tone1:"]},{name:"weight lifter tone 2",shortname:":lifter_tone2:",category:"activity",emoji_order:"874",aliases:[":weight_lifter_tone2:"]},{name:"weight lifter tone 3",shortname:":lifter_tone3:",category:"activity",emoji_order:"875",aliases:[":weight_lifter_tone3:"]},{name:"weight lifter tone 4",shortname:":lifter_tone4:",category:"activity",emoji_order:"876",aliases:[":weight_lifter_tone4:"]},{name:"weight lifter tone 5",shortname:":lifter_tone5:",category:"activity",emoji_order:"877",aliases:[":weight_lifter_tone5:"]},{name:"bicyclist",shortname:":bicyclist:",category:"activity",emoji_order:"890"},{name:"bicyclist tone 1",shortname:":bicyclist_tone1:",category:"activity",emoji_order:"891"},{name:"bicyclist tone 2",shortname:":bicyclist_tone2:",category:"activity",emoji_order:"892"},{name:"bicyclist tone 3",shortname:":bicyclist_tone3:",category:"activity",emoji_order:"893"},{name:"bicyclist tone 4",shortname:":bicyclist_tone4:",category:"activity",emoji_order:"894"},{name:"bicyclist tone 5",shortname:":bicyclist_tone5:",category:"activity",emoji_order:"895"},{name:"mountain bicyclist",shortname:":mountain_bicyclist:",category:"activity",emoji_order:"908"},{name:"mountain bicyclist tone 1",shortname:":mountain_bicyclist_tone1:",category:"activity",emoji_order:"909"},{name:"mountain bicyclist tone 2",shortname:":mountain_bicyclist_tone2:",category:"activity",emoji_order:"910"},{name:"mountain bicyclist tone 3",shortname:":mountain_bicyclist_tone3:",category:"activity",emoji_order:"911"},{name:"mountain bicyclist tone 4",shortname:":mountain_bicyclist_tone4:",category:"activity",emoji_order:"912"},{name:"mountain bicyclist tone 5",shortname:":mountain_bicyclist_tone5:",category:"activity",emoji_order:"913"},{name:"racing car",shortname:":race_car:",category:"travel",emoji_order:"926",aliases:[":racing_car:"]},{name:"racing motorcycle",shortname:":motorcycle:",category:"travel",emoji_order:"927",aliases:[":racing_motorcycle:"]},{name:"person doing cartwheel",shortname:":cartwheel:",category:"activity",emoji_order:"928",aliases:[":person_doing_cartwheel:"]},{name:"person doing cartwheel tone 1",shortname:":cartwheel_tone1:",category:"activity",emoji_order:"929",aliases:[":person_doing_cartwheel_tone1:"]},{name:"person doing cartwheel tone 2",shortname:":cartwheel_tone2:",category:"activity",emoji_order:"930",aliases:[":person_doing_cartwheel_tone2:"]},{name:"person doing cartwheel tone 3",shortname:":cartwheel_tone3:",category:"activity",emoji_order:"931",aliases:[":person_doing_cartwheel_tone3:"]},{name:"person doing cartwheel tone 4",shortname:":cartwheel_tone4:",category:"activity",emoji_order:"932",aliases:[":person_doing_cartwheel_tone4:"]},{name:"person doing cartwheel tone 5",shortname:":cartwheel_tone5:",category:"activity",emoji_order:"933",aliases:[":person_doing_cartwheel_tone5:"]},{name:"wrestlers",shortname:":wrestlers:",category:"activity",emoji_order:"946",aliases:[":wrestling:"]},{name:"wrestlers tone 1",shortname:":wrestlers_tone1:",category:"activity",emoji_order:"947",aliases:[":wrestling_tone1:"]},{name:"wrestlers tone 2",shortname:":wrestlers_tone2:",category:"activity",emoji_order:"948",aliases:[":wrestling_tone2:"]},{name:"wrestlers tone 3",shortname:":wrestlers_tone3:",category:"activity",emoji_order:"949",aliases:[":wrestling_tone3:"]},{name:"wrestlers tone 4",shortname:":wrestlers_tone4:",category:"activity",emoji_order:"950",aliases:[":wrestling_tone4:"]},{name:"wrestlers tone 5",shortname:":wrestlers_tone5:",category:"activity",emoji_order:"951",aliases:[":wrestling_tone5:"]},{name:"water polo",shortname:":water_polo:",category:"activity",emoji_order:"964"},{name:"water polo tone 1",shortname:":water_polo_tone1:",category:"activity",emoji_order:"965"},{name:"water polo tone 2",shortname:":water_polo_tone2:",category:"activity",emoji_order:"966"},{name:"water polo tone 3",shortname:":water_polo_tone3:",category:"activity",emoji_order:"967"},{name:"water polo tone 4",shortname:":water_polo_tone4:",category:"activity",emoji_order:"968"},{name:"water polo tone 5",shortname:":water_polo_tone5:",category:"activity",emoji_order:"969"},{name:"handball",shortname:":handball:",category:"activity",emoji_order:"982"},{name:"handball tone 1",shortname:":handball_tone1:",category:"activity",emoji_order:"983"},{name:"handball tone 2",shortname:":handball_tone2:",category:"activity",emoji_order:"984"},{name:"handball tone 3",shortname:":handball_tone3:",category:"activity",emoji_order:"985"},{name:"handball tone 4",shortname:":handball_tone4:",category:"activity",emoji_order:"986"},{name:"handball tone 5",shortname:":handball_tone5:",category:"activity",emoji_order:"987"},{name:"juggling",shortname:":juggling:",category:"activity",emoji_order:"1000",aliases:[":juggler:"]},{name:"juggling tone 1",shortname:":juggling_tone1:",category:"activity",emoji_order:"1001",aliases:[":juggler_tone1:"]},{name:"juggling tone 2",shortname:":juggling_tone2:",category:"activity",emoji_order:"1002",aliases:[":juggler_tone2:"]},{name:"juggling tone 3",shortname:":juggling_tone3:",category:"activity",emoji_order:"1003",aliases:[":juggler_tone3:"]},{name:"juggling tone 4",shortname:":juggling_tone4:",category:"activity",emoji_order:"1004",aliases:[":juggler_tone4:"]},{name:"juggling tone 5",shortname:":juggling_tone5:",category:"activity",emoji_order:"1005",aliases:[":juggler_tone5:"]},{name:"man and woman holding hands",shortname:":couple:",category:"people",emoji_order:"1018"},{name:"two men holding hands",shortname:":two_men_holding_hands:",category:"people",emoji_order:"1024"},{name:"two women holding hands",shortname:":two_women_holding_hands:",category:"people",emoji_order:"1030"},{name:"kiss",shortname:":couplekiss:",category:"people",emoji_order:"1036"},{name:"kiss (man,man)",shortname:":kiss_mm:",category:"people",emoji_order:"1038",aliases:[":couplekiss_mm:"]},{name:"kiss (woman,woman)",shortname:":kiss_ww:",category:"people",emoji_order:"1039",aliases:[":couplekiss_ww:"]},{name:"couple with heart",shortname:":couple_with_heart:",category:"people",emoji_order:"1040"},{name:"couple (man,man)",shortname:":couple_mm:",category:"people",emoji_order:"1042",aliases:[":couple_with_heart_mm:"]},{name:"couple (woman,woman)",shortname:":couple_ww:",category:"people",emoji_order:"1043",aliases:[":couple_with_heart_ww:"]},{name:"family",shortname:":family:",category:"people",emoji_order:"1044"},{name:"family (man,woman,girl)",shortname:":family_mwg:",category:"people",emoji_order:"1051"},{name:"family (man,woman,girl,boy)",shortname:":family_mwgb:",category:"people",emoji_order:"1052"},{name:"family (man,woman,boy,boy)",shortname:":family_mwbb:",category:"people",emoji_order:"1053"},{name:"family (man,woman,girl,girl)",shortname:":family_mwgg:",category:"people",emoji_order:"1054"},{name:"family (man,man,boy)",shortname:":family_mmb:",category:"people",emoji_order:"1055"},{name:"family (man,man,girl)",shortname:":family_mmg:",category:"people",emoji_order:"1056"},{name:"family (man,man,girl,boy)",shortname:":family_mmgb:",category:"people",emoji_order:"1057"},{name:"family (man,man,boy,boy)",shortname:":family_mmbb:",category:"people",emoji_order:"1058"},{name:"family (man,man,girl,girl)",shortname:":family_mmgg:",category:"people",emoji_order:"1059"},{name:"family (woman,woman,boy)",shortname:":family_wwb:",category:"people",emoji_order:"1060"},{name:"family (woman,woman,girl)",shortname:":family_wwg:",category:"people",emoji_order:"1061"},{name:"family (woman,woman,girl,boy)",shortname:":family_wwgb:",category:"people",emoji_order:"1062"},{name:"family (woman,woman,boy,boy)",shortname:":family_wwbb:",category:"people",emoji_order:"1063"},{name:"family (woman,woman,girl,girl)",shortname:":family_wwgg:",category:"people",emoji_order:"1064"},{name:"emoji modifier Fitzpatrick type-1-2",shortname:":tone1:",category:"modifier",emoji_order:"1075"},{name:"emoji modifier Fitzpatrick type-3",shortname:":tone2:",category:"modifier",emoji_order:"1076"},{name:"emoji modifier Fitzpatrick type-4",shortname:":tone3:",category:"modifier",emoji_order:"1077"},{name:"emoji modifier Fitzpatrick type-5",shortname:":tone4:",category:"modifier",emoji_order:"1078"},{name:"emoji modifier Fitzpatrick type-6",shortname:":tone5:",category:"modifier",emoji_order:"1079"},{name:"flexed biceps",shortname:":muscle:",category:"people",emoji_order:"1080"},{name:"flexed biceps tone 1",shortname:":muscle_tone1:",category:"people",emoji_order:"1081"},{name:"flexed biceps tone 2",shortname:":muscle_tone2:",category:"people",emoji_order:"1082"},{name:"flexed biceps tone 3",shortname:":muscle_tone3:",category:"people",emoji_order:"1083"},{name:"flexed biceps tone 4",shortname:":muscle_tone4:",category:"people",emoji_order:"1084"},{name:"flexed biceps tone 5",shortname:":muscle_tone5:",category:"people",emoji_order:"1085"},{name:"selfie",shortname:":selfie:",category:"people",emoji_order:"1086"},{name:"selfie tone 1",shortname:":selfie_tone1:",category:"people",emoji_order:"1087"},{name:"selfie tone 2",shortname:":selfie_tone2:",category:"people",emoji_order:"1088"},{name:"selfie tone 3",shortname:":selfie_tone3:",category:"people",emoji_order:"1089"},{name:"selfie tone 4",shortname:":selfie_tone4:",category:"people",emoji_order:"1090"},{name:"selfie tone 5",shortname:":selfie_tone5:",category:"people",emoji_order:"1091"},{name:"white left pointing backhand index",shortname:":point_left:",category:"people",emoji_order:"1092"},{name:"white left pointing backhand index tone 1",shortname:":point_left_tone1:",category:"people",emoji_order:"1093"},{name:"white left pointing backhand index tone 2",shortname:":point_left_tone2:",category:"people",emoji_order:"1094"},{name:"white left pointing backhand index tone 3",shortname:":point_left_tone3:",category:"people",emoji_order:"1095"},{name:"white left pointing backhand index tone 4",shortname:":point_left_tone4:",category:"people",emoji_order:"1096"},{name:"white left pointing backhand index tone 5",shortname:":point_left_tone5:",category:"people",emoji_order:"1097"},{name:"white right pointing backhand index",shortname:":point_right:",category:"people",emoji_order:"1098"},{name:"white right pointing backhand index tone 1",shortname:":point_right_tone1:",category:"people",emoji_order:"1099"},{name:"white right pointing backhand index tone 2",shortname:":point_right_tone2:",category:"people",emoji_order:"1100"},{name:"white right pointing backhand index tone 3",shortname:":point_right_tone3:",category:"people",emoji_order:"1101"},{name:"white right pointing backhand index tone 4",shortname:":point_right_tone4:",category:"people",emoji_order:"1102"},{name:"white right pointing backhand index tone 5",shortname:":point_right_tone5:",category:"people",emoji_order:"1103"},{name:"white up pointing index",shortname:":point_up:",category:"people",emoji_order:"1104"},{name:"white up pointing index tone 1",shortname:":point_up_tone1:",category:"people",emoji_order:"1105"},{name:"white up pointing index tone 2",shortname:":point_up_tone2:",category:"people",emoji_order:"1106"},{name:"white up pointing index tone 3",shortname:":point_up_tone3:",category:"people",emoji_order:"1107"},{name:"white up pointing index tone 4",shortname:":point_up_tone4:",category:"people",emoji_order:"1108"},{name:"white up pointing index tone 5",shortname:":point_up_tone5:",category:"people",emoji_order:"1109"},{name:"white up pointing backhand index",shortname:":point_up_2:",category:"people",emoji_order:"1110"},{name:"white up pointing backhand index tone 1",shortname:":point_up_2_tone1:",category:"people",emoji_order:"1111"},{name:"white up pointing backhand index tone 2",shortname:":point_up_2_tone2:",category:"people",emoji_order:"1112"},{name:"white up pointing backhand index tone 3",shortname:":point_up_2_tone3:",category:"people",emoji_order:"1113"},{name:"white up pointing backhand index tone 4",shortname:":point_up_2_tone4:",category:"people",emoji_order:"1114"},{name:"white up pointing backhand index tone 5",shortname:":point_up_2_tone5:",category:"people",emoji_order:"1115"},{name:"reversed hand with middle finger extended",shortname:":middle_finger:",category:"people",emoji_order:"1116",aliases:[":reversed_hand_with_middle_finger_extended:"]},{name:"reversed hand with middle finger extended tone 1",shortname:":middle_finger_tone1:",category:"people",emoji_order:"1117",aliases:[":reversed_hand_with_middle_finger_extended_tone1:"]},{name:"reversed hand with middle finger extended tone 2",shortname:":middle_finger_tone2:",category:"people",emoji_order:"1118",aliases:[":reversed_hand_with_middle_finger_extended_tone2:"]},{name:"reversed hand with middle finger extended tone 3",shortname:":middle_finger_tone3:",category:"people",emoji_order:"1119",aliases:[":reversed_hand_with_middle_finger_extended_tone3:"]},{name:"reversed hand with middle finger extended tone 4",shortname:":middle_finger_tone4:",category:"people",emoji_order:"1120",aliases:[":reversed_hand_with_middle_finger_extended_tone4:"]},{name:"reversed hand with middle finger extended tone 5",shortname:":middle_finger_tone5:",category:"people",emoji_order:"1121",aliases:[":reversed_hand_with_middle_finger_extended_tone5:"]},{name:"white down pointing backhand index",shortname:":point_down:",category:"people",emoji_order:"1122"},{name:"white down pointing backhand index tone 1",shortname:":point_down_tone1:",category:"people",emoji_order:"1123"},{name:"white down pointing backhand index tone 2",shortname:":point_down_tone2:",category:"people",emoji_order:"1124"},{name:"white down pointing backhand index tone 3",shortname:":point_down_tone3:",category:"people",emoji_order:"1125"},{name:"white down pointing backhand index tone 4",shortname:":point_down_tone4:",category:"people",emoji_order:"1126"},{name:"white down pointing backhand index tone 5",shortname:":point_down_tone5:",category:"people",emoji_order:"1127"},{name:"victory hand",shortname:":v:",category:"people",emoji_order:"1128"},{name:"victory hand tone 1",shortname:":v_tone1:",category:"people",emoji_order:"1129"},{name:"victory hand tone 2",shortname:":v_tone2:",category:"people",emoji_order:"1130"},{name:"victory hand tone 3",shortname:":v_tone3:",category:"people",emoji_order:"1131"},{name:"victory hand tone 4",shortname:":v_tone4:",category:"people",emoji_order:"1132"},{name:"victory hand tone 5",shortname:":v_tone5:",category:"people",emoji_order:"1133"},{name:"hand with first and index finger crossed",shortname:":fingers_crossed:",category:"people",emoji_order:"1134",aliases:[":hand_with_index_and_middle_finger_crossed:"]},{name:"hand with index and middle fingers crossed tone 1",shortname:":fingers_crossed_tone1:",category:"people",emoji_order:"1135",aliases:[":hand_with_index_and_middle_fingers_crossed_tone1:"]},{name:"hand with index and middle fingers crossed tone 2",shortname:":fingers_crossed_tone2:",category:"people",emoji_order:"1136",aliases:[":hand_with_index_and_middle_fingers_crossed_tone2:"]},{name:"hand with index and middle fingers crossed tone 3",shortname:":fingers_crossed_tone3:",category:"people",emoji_order:"1137",aliases:[":hand_with_index_and_middle_fingers_crossed_tone3:"]},{name:"hand with index and middle fingers crossed tone 4",shortname:":fingers_crossed_tone4:",category:"people",emoji_order:"1138",aliases:[":hand_with_index_and_middle_fingers_crossed_tone4:"]},{name:"hand with index and middle fingers crossed tone 5",shortname:":fingers_crossed_tone5:",category:"people",emoji_order:"1139",aliases:[":hand_with_index_and_middle_fingers_crossed_tone5:"]},{name:"raised hand with part between middle and ring fingers",shortname:":vulcan:",category:"people",emoji_order:"1140",aliases:[":raised_hand_with_part_between_middle_and_ring_fingers:"]},{name:"raised hand with part between middle and ring fingers tone 1",shortname:":vulcan_tone1:",category:"people",emoji_order:"1141",aliases:[":raised_hand_with_part_between_middle_and_ring_fingers_tone1:"]},{name:"raised hand with part between middle and ring fingers tone 2",shortname:":vulcan_tone2:",category:"people",emoji_order:"1142",aliases:[":raised_hand_with_part_between_middle_and_ring_fingers_tone2:"]},{name:"raised hand with part between middle and ring fingers tone 3",shortname:":vulcan_tone3:",category:"people",emoji_order:"1143",aliases:[":raised_hand_with_part_between_middle_and_ring_fingers_tone3:"]},{name:"raised hand with part between middle and ring fingers tone 4",shortname:":vulcan_tone4:",category:"people",emoji_order:"1144",aliases:[":raised_hand_with_part_between_middle_and_ring_fingers_tone4:"]},{name:"raised hand with part between middle and ring fingers tone 5",shortname:":vulcan_tone5:",category:"people",emoji_order:"1145",aliases:[":raised_hand_with_part_between_middle_and_ring_fingers_tone5:"]},{name:"sign of the horns",shortname:":metal:",category:"people",emoji_order:"1146",aliases:[":sign_of_the_horns:"]},{name:"sign of the horns tone 1",shortname:":metal_tone1:",category:"people",emoji_order:"1147",aliases:[":sign_of_the_horns_tone1:"]},{name:"sign of the horns tone 2",shortname:":metal_tone2:",category:"people",emoji_order:"1148",aliases:[":sign_of_the_horns_tone2:"]},{name:"sign of the horns tone 3",shortname:":metal_tone3:",category:"people",emoji_order:"1149",aliases:[":sign_of_the_horns_tone3:"]},{name:"sign of the horns tone 4",shortname:":metal_tone4:",category:"people",emoji_order:"1150",aliases:[":sign_of_the_horns_tone4:"]},{name:"sign of the horns tone 5",shortname:":metal_tone5:",category:"people",emoji_order:"1151",aliases:[":sign_of_the_horns_tone5:"]},{name:"call me hand",shortname:":call_me:",category:"people",emoji_order:"1152",aliases:[":call_me_hand:"]},{name:"call me hand tone 1",shortname:":call_me_tone1:",category:"people",emoji_order:"1153",aliases:[":call_me_hand_tone1:"]},{name:"call me hand tone 2",shortname:":call_me_tone2:",category:"people",emoji_order:"1154",aliases:[":call_me_hand_tone2:"]},{name:"call me hand tone 3",shortname:":call_me_tone3:",category:"people",emoji_order:"1155",aliases:[":call_me_hand_tone3:"]},{name:"call me hand tone 4",shortname:":call_me_tone4:",category:"people",emoji_order:"1156",aliases:[":call_me_hand_tone4:"]},{name:"call me hand tone 5",shortname:":call_me_tone5:",category:"people",emoji_order:"1157",aliases:[":call_me_hand_tone5:"]},{name:"raised hand with fingers splayed",shortname:":hand_splayed:",category:"people",emoji_order:"1158",aliases:[":raised_hand_with_fingers_splayed:"]},{name:"raised hand with fingers splayed tone 1",shortname:":hand_splayed_tone1:",category:"people",emoji_order:"1159",aliases:[":raised_hand_with_fingers_splayed_tone1:"]},{name:"raised hand with fingers splayed tone 2",shortname:":hand_splayed_tone2:",category:"people",emoji_order:"1160",aliases:[":raised_hand_with_fingers_splayed_tone2:"]},{name:"raised hand with fingers splayed tone 3",shortname:":hand_splayed_tone3:",category:"people",emoji_order:"1161",aliases:[":raised_hand_with_fingers_splayed_tone3:"]},{name:"raised hand with fingers splayed tone 4",shortname:":hand_splayed_tone4:",category:"people",emoji_order:"1162",aliases:[":raised_hand_with_fingers_splayed_tone4:"]},{name:"raised hand with fingers splayed tone 5",shortname:":hand_splayed_tone5:",category:"people",emoji_order:"1163",aliases:[":raised_hand_with_fingers_splayed_tone5:"]},{name:"raised hand",shortname:":raised_hand:",category:"people",emoji_order:"1164"},{name:"raised hand tone 1",shortname:":raised_hand_tone1:",category:"people",emoji_order:"1165"},{name:"raised hand tone 2",shortname:":raised_hand_tone2:",category:"people",emoji_order:"1166"},{name:"raised hand tone 3",shortname:":raised_hand_tone3:",category:"people",emoji_order:"1167"},{name:"raised hand tone 4",shortname:":raised_hand_tone4:",category:"people",emoji_order:"1168"},{name:"raised hand tone 5",shortname:":raised_hand_tone5:",category:"people",emoji_order:"1169"},{name:"ok hand sign",shortname:":ok_hand:",category:"people",emoji_order:"1170"},{name:"ok hand sign tone 1",shortname:":ok_hand_tone1:",category:"people",emoji_order:"1171"},{name:"ok hand sign tone 2",shortname:":ok_hand_tone2:",category:"people",emoji_order:"1172"},{name:"ok hand sign tone 3",shortname:":ok_hand_tone3:",category:"people",emoji_order:"1173"},{name:"ok hand sign tone 4",shortname:":ok_hand_tone4:",category:"people",emoji_order:"1174"},{name:"ok hand sign tone 5",shortname:":ok_hand_tone5:",category:"people",emoji_order:"1175"},{name:"thumbs up sign",shortname:":thumbsup:",category:"people",emoji_order:"1176",aliases:[":+1:",":thumbup:"]},{name:"thumbs up sign tone 1",shortname:":thumbsup_tone1:",category:"people",emoji_order:"1177",aliases:[":+1_tone1:",":thumbup_tone1:"]},{name:"thumbs up sign tone 2",shortname:":thumbsup_tone2:",category:"people",emoji_order:"1178",aliases:[":+1_tone2:",":thumbup_tone2:"]},{name:"thumbs up sign tone 3",shortname:":thumbsup_tone3:",category:"people",emoji_order:"1179",aliases:[":+1_tone3:",":thumbup_tone3:"]},{name:"thumbs up sign tone 4",shortname:":thumbsup_tone4:",category:"people",emoji_order:"1180",aliases:[":+1_tone4:",":thumbup_tone4:"]},{name:"thumbs up sign tone 5",shortname:":thumbsup_tone5:",category:"people",emoji_order:"1181",aliases:[":+1_tone5:",":thumbup_tone5:"]},{name:"thumbs down sign",shortname:":thumbsdown:",category:"people",emoji_order:"1182",aliases:[":-1:",":thumbdown:"]},{name:"thumbs down sign tone 1",shortname:":thumbsdown_tone1:",category:"people",emoji_order:"1183",aliases:[":-1_tone1:",":thumbdown_tone1:"]},{name:"thumbs down sign tone 2",shortname:":thumbsdown_tone2:",category:"people",emoji_order:"1184",aliases:[":-1_tone2:",":thumbdown_tone2:"]},{name:"thumbs down sign tone 3",shortname:":thumbsdown_tone3:",category:"people",emoji_order:"1185",aliases:[":-1_tone3:",":thumbdown_tone3:"]},{name:"thumbs down sign tone 4",shortname:":thumbsdown_tone4:",category:"people",emoji_order:"1186",aliases:[":-1_tone4:",":thumbdown_tone4:"]},{name:"thumbs down sign tone 5",shortname:":thumbsdown_tone5:",category:"people",emoji_order:"1187",aliases:[":-1_tone5:",":thumbdown_tone5:"]},{name:"raised fist",shortname:":fist:",category:"people",emoji_order:"1188"},{name:"raised fist tone 1",shortname:":fist_tone1:",category:"people",emoji_order:"1189"},{name:"raised fist tone 2",shortname:":fist_tone2:",category:"people",emoji_order:"1190"},{name:"raised fist tone 3",shortname:":fist_tone3:",category:"people",emoji_order:"1191"},{name:"raised fist tone 4",shortname:":fist_tone4:",category:"people",emoji_order:"1192"},{name:"raised fist tone 5",shortname:":fist_tone5:",category:"people",emoji_order:"1193"},{name:"fisted hand sign",shortname:":punch:",category:"people",emoji_order:"1194"},{name:"fisted hand sign tone 1",shortname:":punch_tone1:",category:"people",emoji_order:"1195"},{name:"fisted hand sign tone 2",shortname:":punch_tone2:",category:"people",emoji_order:"1196"},{name:"fisted hand sign tone 3",shortname:":punch_tone3:",category:"people",emoji_order:"1197"},{name:"fisted hand sign tone 4",shortname:":punch_tone4:",category:"people",emoji_order:"1198"},{name:"fisted hand sign tone 5",shortname:":punch_tone5:",category:"people",emoji_order:"1199"},{name:"left-facing fist",shortname:":left_facing_fist:",category:"people",emoji_order:"1200",aliases:[":left_fist:"]},{name:"left facing fist tone 1",shortname:":left_facing_fist_tone1:",category:"people",emoji_order:"1201",aliases:[":left_fist_tone1:"]},{name:"left facing fist tone 2",shortname:":left_facing_fist_tone2:",category:"people",emoji_order:"1202",aliases:[":left_fist_tone2:"]},{name:"left facing fist tone 3",shortname:":left_facing_fist_tone3:",category:"people",emoji_order:"1203",aliases:[":left_fist_tone3:"]},{name:"left facing fist tone 4",shortname:":left_facing_fist_tone4:",category:"people",emoji_order:"1204",aliases:[":left_fist_tone4:"]},{name:"left facing fist tone 5",shortname:":left_facing_fist_tone5:",category:"people",emoji_order:"1205",aliases:[":left_fist_tone5:"]},{name:"right-facing fist",shortname:":right_facing_fist:",category:"people",emoji_order:"1206",aliases:[":right_fist:"]},{name:"right facing fist tone 1",shortname:":right_facing_fist_tone1:",category:"people",emoji_order:"1207",aliases:[":right_fist_tone1:"]},{name:"right facing fist tone 2",shortname:":right_facing_fist_tone2:",category:"people",emoji_order:"1208",aliases:[":right_fist_tone2:"]},{name:"right facing fist tone 3",shortname:":right_facing_fist_tone3:",category:"people",emoji_order:"1209",aliases:[":right_fist_tone3:"]},{name:"right facing fist tone 4",shortname:":right_facing_fist_tone4:",category:"people",emoji_order:"1210",aliases:[":right_fist_tone4:"]},{name:"right facing fist tone 5",shortname:":right_facing_fist_tone5:",category:"people",emoji_order:"1211",aliases:[":right_fist_tone5:"]},{name:"raised back of hand",shortname:":raised_back_of_hand:",category:"people",emoji_order:"1212",aliases:[":back_of_hand:"]},{name:"raised back of hand tone 1",shortname:":raised_back_of_hand_tone1:",category:"people",emoji_order:"1213",aliases:[":back_of_hand_tone1:"]},{name:"raised back of hand tone 2",shortname:":raised_back_of_hand_tone2:",category:"people",emoji_order:"1214",aliases:[":back_of_hand_tone2:"]},{name:"raised back of hand tone 3",shortname:":raised_back_of_hand_tone3:",category:"people",emoji_order:"1215",aliases:[":back_of_hand_tone3:"]},{name:"raised back of hand tone 4",shortname:":raised_back_of_hand_tone4:",category:"people",emoji_order:"1216",aliases:[":back_of_hand_tone4:"]},{name:"raised back of hand tone 5",shortname:":raised_back_of_hand_tone5:",category:"people",emoji_order:"1217",aliases:[":back_of_hand_tone5:"]},{name:"waving hand sign",shortname:":wave:",category:"people",emoji_order:"1218"},{name:"waving hand sign tone 1",shortname:":wave_tone1:",category:"people",emoji_order:"1219"},{name:"waving hand sign tone 2",shortname:":wave_tone2:",category:"people",emoji_order:"1220"},{name:"waving hand sign tone 3",shortname:":wave_tone3:",category:"people",emoji_order:"1221"},{name:"waving hand sign tone 4",shortname:":wave_tone4:",category:"people",emoji_order:"1222"},{name:"waving hand sign tone 5",shortname:":wave_tone5:",category:"people",emoji_order:"1223"},{name:"clapping hands sign",shortname:":clap:",category:"people",emoji_order:"1224"},{name:"clapping hands sign tone 1",shortname:":clap_tone1:",category:"people",emoji_order:"1225"},{name:"clapping hands sign tone 2",shortname:":clap_tone2:",category:"people",emoji_order:"1226"},{name:"clapping hands sign tone 3",shortname:":clap_tone3:",category:"people",emoji_order:"1227"},{name:"clapping hands sign tone 4",shortname:":clap_tone4:",category:"people",emoji_order:"1228"},{name:"clapping hands sign tone 5",shortname:":clap_tone5:",category:"people",emoji_order:"1229"},{name:"writing hand",shortname:":writing_hand:",category:"people",emoji_order:"1230"},{name:"writing hand tone 1",shortname:":writing_hand_tone1:",category:"people",emoji_order:"1231"},{name:"writing hand tone 2",shortname:":writing_hand_tone2:",category:"people",emoji_order:"1232"},{name:"writing hand tone 3",shortname:":writing_hand_tone3:",category:"people",emoji_order:"1233"},{name:"writing hand tone 4",shortname:":writing_hand_tone4:",category:"people",emoji_order:"1234"},{name:"writing hand tone 5",shortname:":writing_hand_tone5:",category:"people",emoji_order:"1235"},{name:"open hands sign",shortname:":open_hands:",category:"people",emoji_order:"1236"},{name:"open hands sign tone 1",shortname:":open_hands_tone1:",category:"people",emoji_order:"1237"},{name:"open hands sign tone 2",shortname:":open_hands_tone2:",category:"people",emoji_order:"1238"},{name:"open hands sign tone 3",shortname:":open_hands_tone3:",category:"people",emoji_order:"1239"},{name:"open hands sign tone 4",shortname:":open_hands_tone4:",category:"people",emoji_order:"1240"},{name:"open hands sign tone 5",shortname:":open_hands_tone5:",category:"people",emoji_order:"1241"},{name:"person raising both hands in celebration",shortname:":raised_hands:",category:"people",emoji_order:"1242"},{name:"person raising both hands in celebration tone 1",shortname:":raised_hands_tone1:",category:"people",emoji_order:"1243"},{name:"person raising both hands in celebration tone 2",shortname:":raised_hands_tone2:",category:"people",emoji_order:"1244"},{name:"person raising both hands in celebration tone 3",shortname:":raised_hands_tone3:",category:"people",emoji_order:"1245"},{name:"person raising both hands in celebration tone 4",shortname:":raised_hands_tone4:",category:"people",emoji_order:"1246"},{name:"person raising both hands in celebration tone 5",shortname:":raised_hands_tone5:",category:"people",emoji_order:"1247"},{name:"person with folded hands",shortname:":pray:",category:"people",emoji_order:"1248"},{name:"person with folded hands tone 1",shortname:":pray_tone1:",category:"people",emoji_order:"1249"},{name:"person with folded hands tone 2",shortname:":pray_tone2:",category:"people",emoji_order:"1250"},{name:"person with folded hands tone 3",shortname:":pray_tone3:",category:"people",emoji_order:"1251"},{name:"person with folded hands tone 4",shortname:":pray_tone4:",category:"people",emoji_order:"1252"},{name:"person with folded hands tone 5",shortname:":pray_tone5:",category:"people",emoji_order:"1253"},{name:"handshake",shortname:":handshake:",category:"people",emoji_order:"1254",aliases:[":shaking_hands:"]},{name:"handshake tone 1",shortname:":handshake_tone1:",category:"people",emoji_order:"1255",aliases:[":shaking_hands_tone1:"]},{name:"handshake tone 2",shortname:":handshake_tone2:",category:"people",emoji_order:"1256",aliases:[":shaking_hands_tone2:"]},{name:"handshake tone 3",shortname:":handshake_tone3:",category:"people",emoji_order:"1257",aliases:[":shaking_hands_tone3:"]},{name:"handshake tone 4",shortname:":handshake_tone4:",category:"people",emoji_order:"1258",aliases:[":shaking_hands_tone4:"]},{name:"handshake tone 5",shortname:":handshake_tone5:",category:"people",emoji_order:"1259",aliases:[":shaking_hands_tone5:"]},{name:"nail polish",shortname:":nail_care:",category:"people",emoji_order:"1260"},{name:"nail polish tone 1",shortname:":nail_care_tone1:",category:"people",emoji_order:"1261"},{name:"nail polish tone 2",shortname:":nail_care_tone2:",category:"people",emoji_order:"1262"},{name:"nail polish tone 3",shortname:":nail_care_tone3:",category:"people",emoji_order:"1263"},{name:"nail polish tone 4",shortname:":nail_care_tone4:",category:"people",emoji_order:"1264"},{name:"nail polish tone 5",shortname:":nail_care_tone5:",category:"people",emoji_order:"1265"},{name:"ear",shortname:":ear:",category:"people",emoji_order:"1266"},{name:"ear tone 1",shortname:":ear_tone1:",category:"people",emoji_order:"1267"},{name:"ear tone 2",shortname:":ear_tone2:",category:"people",emoji_order:"1268"},{name:"ear tone 3",shortname:":ear_tone3:",category:"people",emoji_order:"1269"},{name:"ear tone 4",shortname:":ear_tone4:",category:"people",emoji_order:"1270"},{name:"ear tone 5",shortname:":ear_tone5:",category:"people",emoji_order:"1271"},{name:"nose",shortname:":nose:",category:"people",emoji_order:"1272"},{name:"nose tone 1",shortname:":nose_tone1:",category:"people",emoji_order:"1273"},{name:"nose tone 2",shortname:":nose_tone2:",category:"people",emoji_order:"1274"},{name:"nose tone 3",shortname:":nose_tone3:",category:"people",emoji_order:"1275"},{name:"nose tone 4",shortname:":nose_tone4:",category:"people",emoji_order:"1276"},{name:"nose tone 5",shortname:":nose_tone5:",category:"people",emoji_order:"1277"},{name:"footprints",shortname:":footprints:",category:"people",emoji_order:"1278"},{name:"eyes",shortname:":eyes:",category:"people",emoji_order:"1279"},{name:"eye",shortname:":eye:",category:"people",emoji_order:"1280"},{name:"eye in speech bubble",shortname:":eye_in_speech_bubble:",category:"symbols",emoji_order:"1281"},{name:"tongue",shortname:":tongue:",category:"people",emoji_order:"1282"},{name:"mouth",shortname:":lips:",category:"people",emoji_order:"1283"},{name:"kiss mark",shortname:":kiss:",category:"people",emoji_order:"1284"},{name:"heart with arrow",shortname:":cupid:",category:"symbols",emoji_order:"1285"},{name:"heavy black heart",shortname:":heart:",category:"symbols",emoji_order:"1286",aliases_ascii:["<3"]},{name:"beating heart",shortname:":heartbeat:",category:"symbols",emoji_order:"1287"},{name:"broken heart",shortname:":broken_heart:",category:"symbols",emoji_order:"1288",aliases_ascii:["</3"]},{name:"two hearts",shortname:":two_hearts:",category:"symbols",emoji_order:"1289"},{name:"sparkling heart",shortname:":sparkling_heart:",category:"symbols",emoji_order:"1290"},{name:"growing heart",shortname:":heartpulse:",category:"symbols",emoji_order:"1291"},{name:"blue heart",shortname:":blue_heart:",category:"symbols",emoji_order:"1292"},{name:"green heart",shortname:":green_heart:",category:"symbols",emoji_order:"1293"},{name:"yellow heart",shortname:":yellow_heart:",category:"symbols",emoji_order:"1294"},{name:"purple heart",shortname:":purple_heart:",category:"symbols",emoji_order:"1295"},{name:"black heart",shortname:":black_heart:",category:"symbols",emoji_order:"1296"},{name:"heart with ribbon",shortname:":gift_heart:",category:"symbols",emoji_order:"1297"},{name:"revolving hearts",shortname:":revolving_hearts:",category:"symbols",emoji_order:"1298"},{name:"heart decoration",shortname:":heart_decoration:",category:"symbols",emoji_order:"1299"},{name:"heavy heart exclamation mark ornament",shortname:":heart_exclamation:",category:"symbols",emoji_order:"1300",aliases:[":heavy_heart_exclamation_mark_ornament:"]},{name:"love letter",shortname:":love_letter:",category:"objects",emoji_order:"1301"},{name:"sleeping symbol",shortname:":zzz:",category:"people",emoji_order:"1302"},{name:"anger symbol",shortname:":anger:",category:"symbols",emoji_order:"1303"},{name:"bomb",shortname:":bomb:",category:"objects",emoji_order:"1304"},{name:"collision symbol",shortname:":boom:",category:"symbols",emoji_order:"1305"},{name:"splashing sweat symbol",shortname:":sweat_drops:",category:"nature",emoji_order:"1306"},{name:"dash symbol",shortname:":dash:",category:"nature",emoji_order:"1307"},{name:"dizzy symbol",shortname:":dizzy:",category:"symbols",emoji_order:"1308"},{name:"speech balloon",shortname:":speech_balloon:",category:"symbols",emoji_order:"1309"},{name:"left speech bubble",shortname:":speech_left:",category:"symbols",emoji_order:"1310",aliases:[":left_speech_bubble:"]},{name:"right anger bubble",shortname:":anger_right:",category:"symbols",emoji_order:"1311",aliases:[":right_anger_bubble:"]},{name:"thought balloon",shortname:":thought_balloon:",category:"symbols",emoji_order:"1312"},{name:"hole",shortname:":hole:",category:"objects",emoji_order:"1313"},{name:"eyeglasses",shortname:":eyeglasses:",category:"people",emoji_order:"1314"},{name:"dark sunglasses",shortname:":dark_sunglasses:",category:"people",emoji_order:"1315"},{name:"necktie",shortname:":necktie:",category:"people",emoji_order:"1316"},{name:"t-shirt",shortname:":shirt:",category:"people",emoji_order:"1317"},{name:"jeans",shortname:":jeans:",category:"people",emoji_order:"1318"},{name:"dress",shortname:":dress:",category:"people",emoji_order:"1319"},{name:"kimono",shortname:":kimono:",category:"people",emoji_order:"1320"},{name:"bikini",shortname:":bikini:",category:"people",emoji_order:"1321"},{name:"womans clothes",shortname:":womans_clothes:",category:"people",emoji_order:"1322"},{name:"purse",shortname:":purse:",category:"people",emoji_order:"1323"},{name:"handbag",shortname:":handbag:",category:"people",emoji_order:"1324"},{name:"pouch",shortname:":pouch:",category:"people",emoji_order:"1325"},{name:"shopping bags",shortname:":shopping_bags:",category:"objects",emoji_order:"1326"},{name:"school satchel",shortname:":school_satchel:",category:"people",emoji_order:"1327"},{name:"mans shoe",shortname:":mans_shoe:",category:"people",emoji_order:"1328"},{name:"athletic shoe",shortname:":athletic_shoe:",category:"people",emoji_order:"1329"},{name:"high-heeled shoe",shortname:":high_heel:",category:"people",emoji_order:"1330"},{name:"womans sandal",shortname:":sandal:",category:"people",emoji_order:"1331"},{name:"womans boots",shortname:":boot:",category:"people",emoji_order:"1332"},{name:"crown",shortname:":crown:",category:"people",emoji_order:"1333"},{name:"womans hat",shortname:":womans_hat:",category:"people",emoji_order:"1334"},{name:"top hat",shortname:":tophat:",category:"people",emoji_order:"1335"},{name:"graduation cap",shortname:":mortar_board:",category:"people",emoji_order:"1336"},{name:"helmet with white cross",shortname:":helmet_with_cross:",category:"people",emoji_order:"1337",aliases:[":helmet_with_white_cross:"]},{name:"prayer beads",shortname:":prayer_beads:",category:"objects",emoji_order:"1338"},{name:"lipstick",shortname:":lipstick:",category:"people",emoji_order:"1339"},{name:"ring",shortname:":ring:",category:"people",emoji_order:"1340"},{name:"gem stone",shortname:":gem:",category:"objects",emoji_order:"1341"},{name:"monkey face",shortname:":monkey_face:",category:"nature",emoji_order:"1342"},{name:"monkey",shortname:":monkey:",category:"nature",emoji_order:"1343"},{name:"gorilla",shortname:":gorilla:",category:"nature",emoji_order:"1344"},{name:"dog face",shortname:":dog:",category:"nature",emoji_order:"1345"},{name:"dog",shortname:":dog2:",category:"nature",emoji_order:"1346"},{name:"poodle",shortname:":poodle:",category:"nature",emoji_order:"1347"},{name:"wolf face",shortname:":wolf:",category:"nature",emoji_order:"1348"},{name:"fox face",shortname:":fox:",category:"nature",emoji_order:"1349",aliases:[":fox_face:"]},{name:"cat face",shortname:":cat:",category:"nature",emoji_order:"1350"},{name:"cat",shortname:":cat2:",category:"nature",emoji_order:"1351"},{name:"lion face",shortname:":lion_face:",category:"nature",emoji_order:"1352",aliases:[":lion:"]},{name:"tiger face",shortname:":tiger:",category:"nature",emoji_order:"1353"},{name:"tiger",shortname:":tiger2:",category:"nature",emoji_order:"1354"},{name:"leopard",shortname:":leopard:",category:"nature",emoji_order:"1355"},{name:"horse face",shortname:":horse:",category:"nature",emoji_order:"1356"},{name:"horse",shortname:":racehorse:",category:"nature",emoji_order:"1357"},{name:"deer",shortname:":deer:",category:"nature",emoji_order:"1358"},{name:"unicorn face",shortname:":unicorn:",category:"nature",emoji_order:"1359",aliases:[":unicorn_face:"]},{name:"cow face",shortname:":cow:",category:"nature",emoji_order:"1360"},{name:"ox",shortname:":ox:",category:"nature",emoji_order:"1361"},{name:"water buffalo",shortname:":water_buffalo:",category:"nature",emoji_order:"1362"},{name:"cow",shortname:":cow2:",category:"nature",emoji_order:"1363"},{name:"pig face",shortname:":pig:",category:"nature",emoji_order:"1364"},{name:"pig",shortname:":pig2:",category:"nature",emoji_order:"1365"},{name:"boar",shortname:":boar:",category:"nature",emoji_order:"1366"},{name:"pig nose",shortname:":pig_nose:",category:"nature",emoji_order:"1367"},{name:"ram",shortname:":ram:",category:"nature",emoji_order:"1368"},{name:"sheep",shortname:":sheep:",category:"nature",emoji_order:"1369"},{name:"goat",shortname:":goat:",category:"nature",emoji_order:"1370"},{name:"dromedary camel",shortname:":dromedary_camel:",category:"nature",emoji_order:"1371"},{name:"bactrian camel",shortname:":camel:",category:"nature",emoji_order:"1372"},{name:"elephant",shortname:":elephant:",category:"nature",emoji_order:"1373"},{name:"rhinoceros",shortname:":rhino:",category:"nature",emoji_order:"1374",aliases:[":rhinoceros:"]},{name:"mouse face",shortname:":mouse:",category:"nature",emoji_order:"1375"},{name:"mouse",shortname:":mouse2:",category:"nature",emoji_order:"1376"},{name:"rat",shortname:":rat:",category:"nature",emoji_order:"1377"},{name:"hamster face",shortname:":hamster:",category:"nature",emoji_order:"1378"},{name:"rabbit face",shortname:":rabbit:",category:"nature",emoji_order:"1379"},{name:"rabbit",shortname:":rabbit2:",category:"nature",emoji_order:"1380"},{name:"chipmunk",shortname:":chipmunk:",category:"nature",emoji_order:"1381"},{name:"bat",shortname:":bat:",category:"nature",emoji_order:"1382"},{name:"bear face",shortname:":bear:",category:"nature",emoji_order:"1383"},{name:"koala",shortname:":koala:",category:"nature",emoji_order:"1384"},{name:"panda face",shortname:":panda_face:",category:"nature",emoji_order:"1385"},{name:"paw prints",shortname:":feet:",category:"nature",emoji_order:"1386",aliases:[":paw_prints:"]},{name:"turkey",shortname:":turkey:",category:"nature",emoji_order:"1387"},{name:"chicken",shortname:":chicken:",category:"nature",emoji_order:"1388"},{name:"rooster",shortname:":rooster:",category:"nature",emoji_order:"1389"},{name:"hatching chick",shortname:":hatching_chick:",category:"nature",emoji_order:"1390"},{name:"baby chick",shortname:":baby_chick:",category:"nature",emoji_order:"1391"},{name:"front-facing baby chick",shortname:":hatched_chick:",category:"nature",emoji_order:"1392"},{name:"bird",shortname:":bird:",category:"nature",emoji_order:"1393"},{name:"penguin",shortname:":penguin:",category:"nature",emoji_order:"1394"},{name:"dove of peace",shortname:":dove:",category:"nature",emoji_order:"1395",aliases:[":dove_of_peace:"]},{name:"eagle",shortname:":eagle:",category:"nature",emoji_order:"1396"},{name:"duck",shortname:":duck:",category:"nature",emoji_order:"1397"},{name:"owl",shortname:":owl:",category:"nature",emoji_order:"1398"},{name:"frog face",shortname:":frog:",category:"nature",emoji_order:"1399"},{name:"crocodile",shortname:":crocodile:",category:"nature",emoji_order:"1400"},{name:"turtle",shortname:":turtle:",category:"nature",emoji_order:"1401"},{name:"lizard",shortname:":lizard:",category:"nature",emoji_order:"1402"},{name:"snake",shortname:":snake:",category:"nature",emoji_order:"1403"},{name:"dragon face",shortname:":dragon_face:",category:"nature",emoji_order:"1404"},{name:"dragon",shortname:":dragon:",category:"nature",emoji_order:"1405"},{name:"spouting whale",shortname:":whale:",category:"nature",emoji_order:"1406"},{name:"whale",shortname:":whale2:",category:"nature",emoji_order:"1407"},{name:"dolphin",shortname:":dolphin:",category:"nature",emoji_order:"1408"},{name:"fish",shortname:":fish:",category:"nature",emoji_order:"1409"},{name:"tropical fish",shortname:":tropical_fish:",category:"nature",emoji_order:"1410"},{name:"blowfish",shortname:":blowfish:",category:"nature",emoji_order:"1411"},{name:"shark",shortname:":shark:",category:"nature",emoji_order:"1412"},{name:"octopus",shortname:":octopus:",category:"nature",emoji_order:"1413"},{name:"spiral shell",shortname:":shell:",category:"nature",emoji_order:"1414"},{name:"crab",shortname:":crab:",category:"nature",emoji_order:"1415"},{name:"shrimp",shortname:":shrimp:",category:"nature",emoji_order:"1416"},{name:"squid",shortname:":squid:",category:"nature",emoji_order:"1417"},{name:"butterfly",shortname:":butterfly:",category:"nature",emoji_order:"1418"},{name:"snail",shortname:":snail:",category:"nature",emoji_order:"1419"},{name:"bug",shortname:":bug:",category:"nature",emoji_order:"1420"},{name:"ant",shortname:":ant:",category:"nature",emoji_order:"1421"},{name:"honeybee",shortname:":bee:",category:"nature",emoji_order:"1422"},{name:"lady beetle",shortname:":beetle:",category:"nature",emoji_order:"1423"},{name:"spider",shortname:":spider:",category:"nature",emoji_order:"1424"},{name:"spider web",shortname:":spider_web:",category:"nature",emoji_order:"1425"},{name:"scorpion",shortname:":scorpion:",category:"nature",emoji_order:"1426"},{name:"bouquet",shortname:":bouquet:",category:"nature",emoji_order:"1427"},{name:"cherry blossom",shortname:":cherry_blossom:",category:"nature",emoji_order:"1428"},{name:"white flower",shortname:":white_flower:",category:"symbols",emoji_order:"1429"},{name:"rosette",shortname:":rosette:",category:"nature",emoji_order:"1430"},{name:"rose",shortname:":rose:",category:"nature",emoji_order:"1431"},{name:"wilted flower",shortname:":wilted_rose:",category:"nature",emoji_order:"1432",aliases:[":wilted_flower:"]},{name:"hibiscus",shortname:":hibiscus:",category:"nature",emoji_order:"1433"},{name:"sunflower",shortname:":sunflower:",category:"nature",emoji_order:"1434"},{name:"blossom",shortname:":blossom:",category:"nature",emoji_order:"1435"},{name:"tulip",shortname:":tulip:",category:"nature",emoji_order:"1436"},{name:"seedling",shortname:":seedling:",category:"nature",emoji_order:"1437"},{name:"evergreen tree",shortname:":evergreen_tree:",category:"nature",emoji_order:"1438"},{name:"deciduous tree",shortname:":deciduous_tree:",category:"nature",emoji_order:"1439"},{name:"palm tree",shortname:":palm_tree:",category:"nature",emoji_order:"1440"},{name:"cactus",shortname:":cactus:",category:"nature",emoji_order:"1441"},{name:"ear of rice",shortname:":ear_of_rice:",category:"nature",emoji_order:"1442"},{name:"herb",shortname:":herb:",category:"nature",emoji_order:"1443"},{name:"shamrock",shortname:":shamrock:",category:"nature",emoji_order:"1444"},{name:"four leaf clover",shortname:":four_leaf_clover:",category:"nature",emoji_order:"1445"},{name:"maple leaf",shortname:":maple_leaf:",category:"nature",emoji_order:"1446"},{name:"fallen leaf",shortname:":fallen_leaf:",category:"nature",emoji_order:"1447"},{name:"leaf fluttering in wind",shortname:":leaves:",category:"nature",emoji_order:"1448"},{name:"grapes",shortname:":grapes:",category:"food",emoji_order:"1449"},{name:"melon",shortname:":melon:",category:"food",emoji_order:"1450"},{name:"watermelon",shortname:":watermelon:",category:"food",emoji_order:"1451"},{name:"tangerine",shortname:":tangerine:",category:"food",emoji_order:"1452"},{name:"lemon",shortname:":lemon:",category:"food",emoji_order:"1453"},{name:"banana",shortname:":banana:",category:"food",emoji_order:"1454"},{name:"pineapple",shortname:":pineapple:",category:"food",emoji_order:"1455"},{name:"red apple",shortname:":apple:",category:"food",emoji_order:"1456"},{name:"green apple",shortname:":green_apple:",category:"food",emoji_order:"1457"},{name:"pear",shortname:":pear:",category:"food",emoji_order:"1458"},{name:"peach",shortname:":peach:",category:"food",emoji_order:"1459"},{name:"cherries",shortname:":cherries:",category:"food",emoji_order:"1460"},{name:"strawberry",shortname:":strawberry:",category:"food",emoji_order:"1461"},{name:"kiwifruit",shortname:":kiwi:",category:"food",emoji_order:"1462",aliases:[":kiwifruit:"]},{name:"tomato",shortname:":tomato:",category:"food",emoji_order:"1463"},{name:"avocado",shortname:":avocado:",category:"food",emoji_order:"1464"},{name:"aubergine",shortname:":eggplant:",category:"food",emoji_order:"1465"},{name:"potato",shortname:":potato:",category:"food",emoji_order:"1466"},{name:"carrot",shortname:":carrot:",category:"food",emoji_order:"1467"},{name:"ear of maize",shortname:":corn:",category:"food",emoji_order:"1468"},{name:"hot pepper",shortname:":hot_pepper:",category:"food",emoji_order:"1469"},{name:"cucumber",shortname:":cucumber:",category:"food",emoji_order:"1470"},{name:"mushroom",shortname:":mushroom:",category:"nature",emoji_order:"1471"},{name:"peanuts",shortname:":peanuts:",category:"food",emoji_order:"1472",aliases:[":shelled_peanut:"]},{name:"chestnut",shortname:":chestnut:",category:"nature",emoji_order:"1473"},{name:"bread",shortname:":bread:",category:"food",emoji_order:"1474"},{name:"croissant",shortname:":croissant:",category:"food",emoji_order:"1475"},{name:"baguette bread",shortname:":french_bread:",category:"food",emoji_order:"1476",aliases:[":baguette_bread:"]},{name:"pancakes",shortname:":pancakes:",category:"food",emoji_order:"1477"},{name:"cheese wedge",shortname:":cheese:",category:"food",emoji_order:"1478",aliases:[":cheese_wedge:"]},{name:"meat on bone",shortname:":meat_on_bone:",category:"food",emoji_order:"1479"},{name:"poultry leg",shortname:":poultry_leg:",category:"food",emoji_order:"1480"},{name:"bacon",shortname:":bacon:",category:"food",emoji_order:"1481"},{name:"hamburger",shortname:":hamburger:",category:"food",emoji_order:"1482"},{name:"french fries",shortname:":fries:",category:"food",emoji_order:"1483"},{name:"slice of pizza",shortname:":pizza:",category:"food",emoji_order:"1484"},{name:"hot dog",shortname:":hotdog:",category:"food",emoji_order:"1485",aliases:[":hot_dog:"]},{name:"taco",shortname:":taco:",category:"food",emoji_order:"1486"},{name:"burrito",shortname:":burrito:",category:"food",emoji_order:"1487"},{name:"stuffed flatbread",shortname:":stuffed_flatbread:",category:"food",emoji_order:"1488",aliases:[":stuffed_pita:"]},{name:"egg",shortname:":egg:",category:"food",emoji_order:"1489"},{name:"cooking",shortname:":cooking:",category:"food",emoji_order:"1490"},{name:"shallow pan of food",shortname:":shallow_pan_of_food:",category:"food",emoji_order:"1491",aliases:[":paella:"]},{name:"pot of food",shortname:":stew:",category:"food",emoji_order:"1492"},{name:"green salad",shortname:":salad:",category:"food",emoji_order:"1493",aliases:[":green_salad:"]},{name:"popcorn",shortname:":popcorn:",category:"food",emoji_order:"1494"},{name:"bento box",shortname:":bento:",category:"food",emoji_order:"1495"},{name:"rice cracker",shortname:":rice_cracker:",category:"food",emoji_order:"1496"},{name:"rice ball",shortname:":rice_ball:",category:"food",emoji_order:"1497"},{name:"cooked rice",shortname:":rice:",category:"food",emoji_order:"1498"},{name:"curry and rice",shortname:":curry:",category:"food",emoji_order:"1499"},{name:"steaming bowl",shortname:":ramen:",category:"food",emoji_order:"1500"},{name:"spaghetti",shortname:":spaghetti:",category:"food",emoji_order:"1501"},{name:"roasted sweet potato",shortname:":sweet_potato:",category:"food",emoji_order:"1502"},{name:"oden",shortname:":oden:",category:"food",emoji_order:"1503"},{name:"sushi",shortname:":sushi:",category:"food",emoji_order:"1504"},{name:"fried shrimp",shortname:":fried_shrimp:",category:"food",emoji_order:"1505"},{name:"fish cake with swirl design",shortname:":fish_cake:",category:"food",emoji_order:"1506"},{name:"dango",shortname:":dango:",category:"food",emoji_order:"1507"},{name:"soft ice cream",shortname:":icecream:",category:"food",emoji_order:"1508"},{name:"shaved ice",shortname:":shaved_ice:",category:"food",emoji_order:"1509"},{name:"ice cream",shortname:":ice_cream:",category:"food",emoji_order:"1510"},{name:"doughnut",shortname:":doughnut:",category:"food",emoji_order:"1511"},{name:"cookie",shortname:":cookie:",category:"food",emoji_order:"1512"},{name:"birthday cake",shortname:":birthday:",category:"food",emoji_order:"1513"},{name:"shortcake",shortname:":cake:",category:"food",emoji_order:"1514"},{name:"chocolate bar",shortname:":chocolate_bar:",category:"food",emoji_order:"1515"},{name:"candy",shortname:":candy:",category:"food",emoji_order:"1516"},{name:"lollipop",shortname:":lollipop:",category:"food",emoji_order:"1517"},{name:"custard",shortname:":custard:",category:"food",emoji_order:"1518",aliases:[":pudding:",":flan:"]},{name:"honey pot",shortname:":honey_pot:",category:"food",emoji_order:"1519"},{name:"baby bottle",shortname:":baby_bottle:",category:"food",emoji_order:"1520"},{name:"glass of milk",shortname:":milk:",category:"food",emoji_order:"1521",aliases:[":glass_of_milk:"]},{name:"hot beverage",shortname:":coffee:",category:"food",emoji_order:"1522"},{name:"teacup without handle",shortname:":tea:",category:"food",emoji_order:"1523"},{name:"sake bottle and cup",shortname:":sake:",category:"food",emoji_order:"1524"},{name:"bottle with popping cork",shortname:":champagne:",category:"food",emoji_order:"1525",aliases:[":bottle_with_popping_cork:"]},{name:"wine glass",shortname:":wine_glass:",category:"food",emoji_order:"1526"},{name:"cocktail glass",shortname:":cocktail:",category:"food",emoji_order:"1527"},{name:"tropical drink",shortname:":tropical_drink:",category:"food",emoji_order:"1528"},{name:"beer mug",shortname:":beer:",category:"food",emoji_order:"1529"},{name:"clinking beer mugs",shortname:":beers:",category:"food",emoji_order:"1530"},{name:"clinking glasses",shortname:":champagne_glass:",category:"food",emoji_order:"1531",aliases:[":clinking_glass:"]},{name:"tumbler glass",shortname:":tumbler_glass:",category:"food",emoji_order:"1532",aliases:[":whisky:"]},{name:"fork and knife with plate",shortname:":fork_knife_plate:",category:"food",emoji_order:"1533",aliases:[":fork_and_knife_with_plate:"]},{name:"fork and knife",shortname:":fork_and_knife:",category:"food",emoji_order:"1534"},{name:"spoon",shortname:":spoon:",category:"food",emoji_order:"1535"},{name:"hocho",shortname:":knife:",category:"objects",emoji_order:"1536"},{name:"amphora",shortname:":amphora:",category:"objects",emoji_order:"1537"},{name:"earth globe europe-africa",shortname:":earth_africa:",category:"nature",emoji_order:"1538"},{name:"earth globe americas",shortname:":earth_americas:",category:"nature",emoji_order:"1539"},{name:"earth globe asia-australia",shortname:":earth_asia:",category:"nature",emoji_order:"1540"},{name:"globe with meridians",shortname:":globe_with_meridians:",category:"symbols",emoji_order:"1541"},{name:"world map",shortname:":map:",category:"objects",emoji_order:"1542",aliases:[":world_map:"]},{name:"silhouette of japan",shortname:":japan:",category:"travel",emoji_order:"1543"},{name:"snow capped mountain",shortname:":mountain_snow:",category:"travel",emoji_order:"1544",aliases:[":snow_capped_mountain:"]},{name:"mountain",shortname:":mountain:",category:"travel",emoji_order:"1545"},{name:"volcano",shortname:":volcano:",category:"travel",emoji_order:"1546"},{name:"mount fuji",shortname:":mount_fuji:",category:"travel",emoji_order:"1547"},{name:"camping",shortname:":camping:",category:"travel",emoji_order:"1548"},{name:"beach with umbrella",shortname:":beach:",category:"travel",emoji_order:"1549",aliases:[":beach_with_umbrella:"]},{name:"desert",shortname:":desert:",category:"travel",emoji_order:"1550"},{name:"desert island",shortname:":island:",category:"travel",emoji_order:"1551",aliases:[":desert_island:"]},{name:"national park",shortname:":park:",category:"travel",emoji_order:"1552",aliases:[":national_park:"]},{name:"stadium",shortname:":stadium:",category:"travel",emoji_order:"1553"},{name:"classical building",shortname:":classical_building:",category:"travel",emoji_order:"1554"},{name:"building construction",shortname:":construction_site:",category:"travel",emoji_order:"1555",aliases:[":building_construction:"]},{name:"house buildings",shortname:":homes:",category:"travel",emoji_order:"1556",aliases:[":house_buildings:"]},{name:"cityscape",shortname:":cityscape:",category:"travel",emoji_order:"1557"},{name:"derelict house building",shortname:":house_abandoned:",category:"travel",emoji_order:"1558",aliases:[":derelict_house_building:"]},{name:"house building",shortname:":house:",category:"travel",emoji_order:"1559"},{name:"house with garden",shortname:":house_with_garden:",category:"travel",emoji_order:"1560"},{name:"office building",shortname:":office:",category:"travel",emoji_order:"1561"},{name:"japanese post office",shortname:":post_office:",category:"travel",emoji_order:"1562"},{name:"european post office",shortname:":european_post_office:",category:"travel",emoji_order:"1563"},{name:"hospital",shortname:":hospital:",category:"travel",emoji_order:"1564"},{name:"bank",shortname:":bank:",category:"travel",emoji_order:"1565"},{name:"hotel",shortname:":hotel:",category:"travel",emoji_order:"1566"},{name:"love hotel",shortname:":love_hotel:",category:"travel",emoji_order:"1567"},{name:"convenience store",shortname:":convenience_store:",category:"travel",emoji_order:"1568"},{name:"school",shortname:":school:",category:"travel",emoji_order:"1569"},{name:"department store",shortname:":department_store:",category:"travel",emoji_order:"1570"},{name:"factory",shortname:":factory:",category:"travel",emoji_order:"1571"},{name:"japanese castle",shortname:":japanese_castle:",category:"travel",emoji_order:"1572"},{name:"european castle",shortname:":european_castle:",category:"travel",emoji_order:"1573"},{name:"wedding",shortname:":wedding:",category:"travel",emoji_order:"1574"},{name:"tokyo tower",shortname:":tokyo_tower:",category:"travel",emoji_order:"1575"},{name:"statue of liberty",shortname:":statue_of_liberty:",category:"travel",emoji_order:"1576"},{name:"church",shortname:":church:",category:"travel",emoji_order:"1577"},{name:"mosque",shortname:":mosque:",category:"travel",emoji_order:"1578"},{name:"synagogue",shortname:":synagogue:",category:"travel",emoji_order:"1579"},{name:"shinto shrine",shortname:":shinto_shrine:",category:"travel",emoji_order:"1580"},{name:"kaaba",shortname:":kaaba:",category:"travel",emoji_order:"1581"},{name:"fountain",shortname:":fountain:",category:"travel",emoji_order:"1582"},{name:"tent",shortname:":tent:",category:"travel",emoji_order:"1583"},{name:"foggy",shortname:":foggy:",category:"travel",emoji_order:"1584"},{name:"night with stars",shortname:":night_with_stars:",category:"travel",emoji_order:"1585"},{name:"sunrise over mountains",shortname:":sunrise_over_mountains:",category:"travel",emoji_order:"1586"},{name:"sunrise",shortname:":sunrise:",category:"travel",emoji_order:"1587"},{name:"cityscape at dusk",shortname:":city_dusk:",category:"travel",emoji_order:"1588"},{name:"sunset over buildings",shortname:":city_sunset:",category:"travel",emoji_order:"1589",aliases:[":city_sunrise:"]},{name:"bridge at night",shortname:":bridge_at_night:",category:"travel",emoji_order:"1590"},{name:"hot springs",shortname:":hotsprings:",category:"symbols",emoji_order:"1591"},{name:"milky way",shortname:":milky_way:",category:"travel",emoji_order:"1592"},{name:"carousel horse",shortname:":carousel_horse:",category:"travel",emoji_order:"1593"},{name:"ferris wheel",shortname:":ferris_wheel:",category:"travel",emoji_order:"1594"},{name:"roller coaster",shortname:":roller_coaster:",category:"travel",emoji_order:"1595"},{name:"barber pole",shortname:":barber:",category:"objects",emoji_order:"1596"},{name:"circus tent",shortname:":circus_tent:",category:"activity",emoji_order:"1597"},{name:"performing arts",shortname:":performing_arts:",category:"activity",emoji_order:"1598"},{name:"frame with picture",shortname:":frame_photo:",category:"objects",emoji_order:"1599",aliases:[":frame_with_picture:"]},{name:"artist palette",shortname:":art:",category:"activity",emoji_order:"1600"},{name:"slot machine",shortname:":slot_machine:",category:"activity",emoji_order:"1601"},{name:"steam locomotive",shortname:":steam_locomotive:",category:"travel",emoji_order:"1602"},{name:"railway car",shortname:":railway_car:",category:"travel",emoji_order:"1603"},{name:"high-speed train",shortname:":bullettrain_side:",category:"travel",emoji_order:"1604"},{name:"high-speed train with bullet nose",shortname:":bullettrain_front:",category:"travel",emoji_order:"1605"},{name:"train",shortname:":train2:",category:"travel",emoji_order:"1606"},{name:"metro",shortname:":metro:",category:"travel",emoji_order:"1607"},{name:"light rail",shortname:":light_rail:",category:"travel",emoji_order:"1608"},{name:"station",shortname:":station:",category:"travel",emoji_order:"1609"},{name:"tram",shortname:":tram:",category:"travel",emoji_order:"1610"},{name:"monorail",shortname:":monorail:",category:"travel",emoji_order:"1611"},{name:"mountain railway",shortname:":mountain_railway:",category:"travel",emoji_order:"1612"},{name:"tram car",shortname:":train:",category:"travel",emoji_order:"1613"},{name:"bus",shortname:":bus:",category:"travel",emoji_order:"1614"},{name:"oncoming bus",shortname:":oncoming_bus:",category:"travel",emoji_order:"1615"},{name:"trolleybus",shortname:":trolleybus:",category:"travel",emoji_order:"1616"},{name:"minibus",shortname:":minibus:",category:"travel",emoji_order:"1617"},{name:"ambulance",shortname:":ambulance:",category:"travel",emoji_order:"1618"},{name:"fire engine",shortname:":fire_engine:",category:"travel",emoji_order:"1619"},{name:"police car",shortname:":police_car:",category:"travel",emoji_order:"1620"},{name:"oncoming police car",shortname:":oncoming_police_car:",category:"travel",emoji_order:"1621"},{name:"taxi",shortname:":taxi:",category:"travel",emoji_order:"1622"},{name:"oncoming taxi",shortname:":oncoming_taxi:",category:"travel",emoji_order:"1623"},{name:"automobile",shortname:":red_car:",category:"travel",emoji_order:"1624"},{name:"oncoming automobile",shortname:":oncoming_automobile:",category:"travel",emoji_order:"1625"},{name:"recreational vehicle",shortname:":blue_car:",category:"travel",emoji_order:"1626"},{name:"delivery truck",shortname:":truck:",category:"travel",emoji_order:"1627"},{name:"articulated lorry",shortname:":articulated_lorry:",category:"travel",emoji_order:"1628"},{name:"tractor",shortname:":tractor:",category:"travel",emoji_order:"1629"},{name:"bicycle",shortname:":bike:",category:"travel",emoji_order:"1630"},{name:"scooter",shortname:":scooter:",category:"travel",emoji_order:"1631"},{name:"motor scooter",shortname:":motor_scooter:",category:"travel",emoji_order:"1632",aliases:[":motorbike:"]},{name:"bus stop",shortname:":busstop:",category:"travel",emoji_order:"1633"},{name:"motorway",shortname:":motorway:",category:"travel",emoji_order:"1634"},{name:"railway track",shortname:":railway_track:",category:"travel",emoji_order:"1635",aliases:[":railroad_track:"]},{name:"fuel pump",shortname:":fuelpump:",category:"travel",emoji_order:"1636"},{name:"police cars revolving light",shortname:":rotating_light:",category:"travel",emoji_order:"1637"},{name:"horizontal traffic light",shortname:":traffic_light:",category:"travel",emoji_order:"1638"},{name:"vertical traffic light",shortname:":vertical_traffic_light:",category:"travel",emoji_order:"1639"},{name:"construction sign",shortname:":construction:",category:"travel",emoji_order:"1640"},{name:"octagonal sign",shortname:":octagonal_sign:",category:"symbols",emoji_order:"1641",aliases:[":stop_sign:"]},{name:"anchor",shortname:":anchor:",category:"travel",emoji_order:"1642"},{name:"sailboat",shortname:":sailboat:",category:"travel",emoji_order:"1643"},{name:"canoe",shortname:":canoe:",category:"travel",emoji_order:"1644",aliases:[":kayak:"]},{name:"speedboat",shortname:":speedboat:",category:"travel",emoji_order:"1645"},{name:"passenger ship",shortname:":cruise_ship:",category:"travel",emoji_order:"1646",aliases:[":passenger_ship:"]},{name:"ferry",shortname:":ferry:",category:"travel",emoji_order:"1647"},{name:"motorboat",shortname:":motorboat:",category:"travel",emoji_order:"1648"},{name:"ship",shortname:":ship:",category:"travel",emoji_order:"1649"},{name:"airplane",shortname:":airplane:",category:"travel",emoji_order:"1650"},{name:"small airplane",shortname:":airplane_small:",category:"travel",emoji_order:"1651",aliases:[":small_airplane:"]},{name:"airplane departure",shortname:":airplane_departure:",category:"travel",emoji_order:"1652"},{name:"airplane arriving",shortname:":airplane_arriving:",category:"travel",emoji_order:"1653"},{name:"seat",shortname:":seat:",category:"travel",emoji_order:"1654"},{name:"helicopter",shortname:":helicopter:",category:"travel",emoji_order:"1655"},{name:"suspension railway",shortname:":suspension_railway:",category:"travel",emoji_order:"1656"},{name:"mountain cableway",shortname:":mountain_cableway:",category:"travel",emoji_order:"1657"},{name:"aerial tramway",shortname:":aerial_tramway:",category:"travel",emoji_order:"1658"},{name:"rocket",shortname:":rocket:",category:"travel",emoji_order:"1659"},{name:"satellite",shortname:":satellite_orbital:",category:"travel",emoji_order:"1660"},{name:"bellhop bell",shortname:":bellhop:",category:"objects",emoji_order:"1661",aliases:[":bellhop_bell:"]},{name:"door",shortname:":door:",category:"objects",emoji_order:"1662"},{name:"sleeping accommodation",shortname:":sleeping_accommodation:",category:"objects",emoji_order:"1663"},{name:"bed",shortname:":bed:",category:"objects",emoji_order:"1669"},{name:"couch and lamp",shortname:":couch:",category:"objects",emoji_order:"1670",aliases:[":couch_and_lamp:"]},{name:"toilet",shortname:":toilet:",category:"objects",emoji_order:"1671"},{name:"shower",shortname:":shower:",category:"objects",emoji_order:"1672"},{name:"bath",shortname:":bath:",category:"activity",emoji_order:"1673"},{name:"bath tone 1",shortname:":bath_tone1:",category:"activity",emoji_order:"1674"},{name:"bath tone 2",shortname:":bath_tone2:",category:"activity",emoji_order:"1675"},{name:"bath tone 3",shortname:":bath_tone3:",category:"activity",emoji_order:"1676"},{name:"bath tone 4",shortname:":bath_tone4:",category:"activity",emoji_order:"1677"},{name:"bath tone 5",shortname:":bath_tone5:",category:"activity",emoji_order:"1678"},{name:"bathtub",shortname:":bathtub:",category:"objects",emoji_order:"1679"},{name:"hourglass",shortname:":hourglass:",category:"objects",emoji_order:"1680"},{name:"hourglass with flowing sand",shortname:":hourglass_flowing_sand:",category:"objects",emoji_order:"1681"},{name:"watch",shortname:":watch:",category:"objects",emoji_order:"1682"},{name:"alarm clock",shortname:":alarm_clock:",category:"objects",emoji_order:"1683"},{name:"stopwatch",shortname:":stopwatch:",category:"objects",emoji_order:"1684"},{name:"timer clock",shortname:":timer:",category:"objects",emoji_order:"1685",aliases:[":timer_clock:"]},{name:"mantlepiece clock",shortname:":clock:",category:"objects",emoji_order:"1686",aliases:[":mantlepiece_clock:"]},{name:"clock face twelve oclock",shortname:":clock12:",category:"symbols",emoji_order:"1687"},{name:"clock face twelve-thirty",shortname:":clock1230:",category:"symbols",emoji_order:"1688"},{name:"clock face one oclock",shortname:":clock1:",category:"symbols",emoji_order:"1689"},{name:"clock face one-thirty",shortname:":clock130:",category:"symbols",emoji_order:"1690"},{name:"clock face two oclock",shortname:":clock2:",category:"symbols",emoji_order:"1691"},{name:"clock face two-thirty",shortname:":clock230:",category:"symbols",emoji_order:"1692"},{name:"clock face three oclock",shortname:":clock3:",category:"symbols",emoji_order:"1693"},{name:"clock face three-thirty",shortname:":clock330:",category:"symbols",emoji_order:"1694"},{name:"clock face four oclock",shortname:":clock4:",category:"symbols",emoji_order:"1695"},{name:"clock face four-thirty",shortname:":clock430:",category:"symbols",emoji_order:"1696"},{name:"clock face five oclock",shortname:":clock5:",category:"symbols",emoji_order:"1697"},{name:"clock face five-thirty",shortname:":clock530:",category:"symbols",emoji_order:"1698"},{name:"clock face six oclock",shortname:":clock6:",category:"symbols",emoji_order:"1699"},{name:"clock face six-thirty",shortname:":clock630:",category:"symbols",emoji_order:"1700"},{name:"clock face seven oclock",shortname:":clock7:",category:"symbols",emoji_order:"1701"},{name:"clock face seven-thirty",shortname:":clock730:",category:"symbols",emoji_order:"1702"},{name:"clock face eight oclock",shortname:":clock8:",category:"symbols",emoji_order:"1703"},{name:"clock face eight-thirty",shortname:":clock830:",category:"symbols",emoji_order:"1704"},{name:"clock face nine oclock",shortname:":clock9:",category:"symbols",emoji_order:"1705"},{name:"clock face nine-thirty",shortname:":clock930:",category:"symbols",emoji_order:"1706"},{name:"clock face ten oclock",shortname:":clock10:",category:"symbols",emoji_order:"1707"},{name:"clock face ten-thirty",shortname:":clock1030:",category:"symbols",emoji_order:"1708"},{name:"clock face eleven oclock",shortname:":clock11:",category:"symbols",emoji_order:"1709"},{name:"clock face eleven-thirty",shortname:":clock1130:",category:"symbols",emoji_order:"1710"},{name:"new moon symbol",shortname:":new_moon:",category:"nature",emoji_order:"1711"},{name:"waxing crescent moon symbol",shortname:":waxing_crescent_moon:",category:"nature",emoji_order:"1712"},{name:"first quarter moon symbol",shortname:":first_quarter_moon:",category:"nature",emoji_order:"1713"},{name:"waxing gibbous moon symbol",shortname:":waxing_gibbous_moon:",category:"nature",emoji_order:"1714"},{name:"full moon symbol",shortname:":full_moon:",category:"nature",emoji_order:"1715"},{name:"waning gibbous moon symbol",shortname:":waning_gibbous_moon:",category:"nature",emoji_order:"1716"},{name:"last quarter moon symbol",shortname:":last_quarter_moon:",category:"nature",emoji_order:"1717"},{name:"waning crescent moon symbol",shortname:":waning_crescent_moon:",category:"nature",emoji_order:"1718"},{name:"crescent moon",shortname:":crescent_moon:",category:"nature",emoji_order:"1719"},{name:"new moon with face",shortname:":new_moon_with_face:",category:"nature",emoji_order:"1720"},{name:"first quarter moon with face",shortname:":first_quarter_moon_with_face:",category:"nature",emoji_order:"1721"},{name:"last quarter moon with face",shortname:":last_quarter_moon_with_face:",category:"nature",emoji_order:"1722"},{name:"thermometer",shortname:":thermometer:",category:"objects",emoji_order:"1723"},{name:"black sun with rays",shortname:":sunny:",category:"nature",emoji_order:"1724"},{name:"full moon with face",shortname:":full_moon_with_face:",category:"nature",emoji_order:"1725"},{name:"sun with face",shortname:":sun_with_face:",category:"nature",emoji_order:"1726"},{name:"white medium star",shortname:":star:",category:"nature",emoji_order:"1727"},{name:"glowing star",shortname:":star2:",category:"nature",emoji_order:"1728"},{name:"shooting star",shortname:":stars:",category:"travel",emoji_order:"1729"},{name:"cloud",shortname:":cloud:",category:"nature",emoji_order:"1730"},{name:"sun behind cloud",shortname:":partly_sunny:",category:"nature",emoji_order:"1731"},{name:"thunder cloud and rain",shortname:":thunder_cloud_rain:",category:"nature",emoji_order:"1732",aliases:[":thunder_cloud_and_rain:"]},{name:"white sun with small cloud",shortname:":white_sun_small_cloud:",category:"nature",emoji_order:"1733",aliases:[":white_sun_with_small_cloud:"]},{name:"white sun behind cloud",shortname:":white_sun_cloud:",category:"nature",emoji_order:"1734",aliases:[":white_sun_behind_cloud:"]},{name:"white sun behind cloud with rain",shortname:":white_sun_rain_cloud:",category:"nature",emoji_order:"1735",aliases:[":white_sun_behind_cloud_with_rain:"]},{name:"cloud with rain",shortname:":cloud_rain:",category:"nature",emoji_order:"1736",aliases:[":cloud_with_rain:"]},{name:"cloud with snow",shortname:":cloud_snow:",category:"nature",emoji_order:"1737",aliases:[":cloud_with_snow:"]},{name:"cloud with lightning",shortname:":cloud_lightning:",category:"nature",emoji_order:"1738",aliases:[":cloud_with_lightning:"]},{name:"cloud with tornado",shortname:":cloud_tornado:",category:"nature",emoji_order:"1739",aliases:[":cloud_with_tornado:"]},{name:"fog",shortname:":fog:",category:"nature",emoji_order:"1740"},{name:"wind blowing face",shortname:":wind_blowing_face:",category:"nature",emoji_order:"1741"},{name:"cyclone",shortname:":cyclone:",category:"symbols",emoji_order:"1742"},{name:"rainbow",shortname:":rainbow:",category:"travel",emoji_order:"1743"},{name:"closed umbrella",shortname:":closed_umbrella:",category:"people",emoji_order:"1744"},{name:"umbrella",shortname:":umbrella2:",category:"nature",emoji_order:"1745"},{name:"umbrella with rain drops",shortname:":umbrella:",category:"nature",emoji_order:"1746"},{name:"umbrella on ground",shortname:":beach_umbrella:",category:"objects",emoji_order:"1747",aliases:[":umbrella_on_ground:"]},{name:"high voltage sign",shortname:":zap:",category:"nature",emoji_order:"1748"},{name:"snowflake",shortname:":snowflake:",category:"nature",emoji_order:"1749"},{name:"snowman",shortname:":snowman2:",category:"nature",emoji_order:"1750"},{name:"snowman without snow",shortname:":snowman:",category:"nature",emoji_order:"1751"},{name:"comet",shortname:":comet:",category:"nature",emoji_order:"1752"},{name:"fire",shortname:":fire:",category:"nature",emoji_order:"1753",aliases:[":flame:"]},{name:"droplet",shortname:":droplet:",category:"nature",emoji_order:"1754"},{name:"water wave",shortname:":ocean:",category:"nature",emoji_order:"1755"},{name:"jack-o-lantern",shortname:":jack_o_lantern:",category:"nature",emoji_order:"1756"},{name:"christmas tree",shortname:":christmas_tree:",category:"nature",emoji_order:"1757"},{name:"fireworks",shortname:":fireworks:",category:"travel",emoji_order:"1758"},{name:"firework sparkler",shortname:":sparkler:",category:"travel",emoji_order:"1759"},{name:"sparkles",shortname:":sparkles:",category:"nature",emoji_order:"1760"},{name:"balloon",shortname:":balloon:",category:"objects",emoji_order:"1761"},{name:"party popper",shortname:":tada:",category:"objects",emoji_order:"1762"},{name:"confetti ball",shortname:":confetti_ball:",category:"objects",emoji_order:"1763"},{name:"tanabata tree",shortname:":tanabata_tree:",category:"nature",emoji_order:"1764"},{name:"pine decoration",shortname:":bamboo:",category:"nature",emoji_order:"1765"},{name:"japanese dolls",shortname:":dolls:",category:"objects",emoji_order:"1766"},{name:"carp streamer",shortname:":flags:",category:"objects",emoji_order:"1767"},{name:"wind chime",shortname:":wind_chime:",category:"objects",emoji_order:"1768"},{name:"moon viewing ceremony",shortname:":rice_scene:",category:"travel",emoji_order:"1769"},{name:"ribbon",shortname:":ribbon:",category:"objects",emoji_order:"1770"},{name:"wrapped present",shortname:":gift:",category:"objects",emoji_order:"1771"},{name:"reminder ribbon",shortname:":reminder_ribbon:",category:"activity",emoji_order:"1772"},{name:"admission tickets",shortname:":tickets:",category:"activity",emoji_order:"1773",aliases:[":admission_tickets:"]},{name:"ticket",shortname:":ticket:",category:"activity",emoji_order:"1774"},{name:"military medal",shortname:":military_medal:",category:"activity",emoji_order:"1775"},{name:"trophy",shortname:":trophy:",category:"activity",emoji_order:"1776"},{name:"sports medal",shortname:":medal:",category:"activity",emoji_order:"1777",aliases:[":sports_medal:"]},{name:"first place medal",shortname:":first_place:",category:"activity",emoji_order:"1778",aliases:[":first_place_medal:"]},{name:"second place medal",shortname:":second_place:",category:"activity",emoji_order:"1779",aliases:[":second_place_medal:"]},{name:"third place medal",shortname:":third_place:",category:"activity",emoji_order:"1780",aliases:[":third_place_medal:"]},{name:"soccer ball",shortname:":soccer:",category:"activity",emoji_order:"1781"},{name:"baseball",shortname:":baseball:",category:"activity",emoji_order:"1782"},{name:"basketball and hoop",shortname:":basketball:",category:"activity",emoji_order:"1783"},{name:"volleyball",shortname:":volleyball:",category:"activity",emoji_order:"1784"},{name:"american football",shortname:":football:",category:"activity",emoji_order:"1785"},{name:"rugby football",shortname:":rugby_football:",category:"activity",emoji_order:"1786"},{name:"tennis racquet and ball",shortname:":tennis:",category:"activity",emoji_order:"1787"},{name:"billiards",shortname:":8ball:",category:"activity",emoji_order:"1788"},{name:"bowling",shortname:":bowling:",category:"activity",emoji_order:"1789"},{name:"cricket bat and ball",shortname:":cricket:",category:"activity",emoji_order:"1790",aliases:[":cricket_bat_ball:"]},{name:"field hockey stick and ball",shortname:":field_hockey:",category:"activity",emoji_order:"1791"},{name:"ice hockey stick and puck",shortname:":hockey:",category:"activity",emoji_order:"1792"},{name:"table tennis paddle and ball",shortname:":ping_pong:",category:"activity",emoji_order:"1793",aliases:[":table_tennis:"]},{name:"badminton racquet",shortname:":badminton:",category:"activity",emoji_order:"1794"},{name:"boxing glove",shortname:":boxing_glove:",category:"activity",emoji_order:"1795",aliases:[":boxing_gloves:"]},{name:"martial arts uniform",shortname:":martial_arts_uniform:",category:"activity",emoji_order:"1796",aliases:[":karate_uniform:"]},{name:"goal net",shortname:":goal:",category:"activity",emoji_order:"1797",aliases:[":goal_net:"]},{name:"direct hit",shortname:":dart:",category:"activity",emoji_order:"1798"},{name:"flag in hole",shortname:":golf:",category:"activity",emoji_order:"1799"},{name:"ice skate",shortname:":ice_skate:",category:"activity",emoji_order:"1800"},{name:"fishing pole and fish",shortname:":fishing_pole_and_fish:",category:"activity",emoji_order:"1801"},{name:"running shirt with sash",shortname:":running_shirt_with_sash:",category:"activity",emoji_order:"1802"},{name:"ski and ski boot",shortname:":ski:",category:"activity",emoji_order:"1803"},{name:"video game",shortname:":video_game:",category:"activity",emoji_order:"1804"},{name:"joystick",shortname:":joystick:",category:"objects",emoji_order:"1805"},{name:"game die",shortname:":game_die:",category:"activity",emoji_order:"1806"},{name:"black spade suit",shortname:":spades:",category:"symbols",emoji_order:"1807"},{name:"black heart suit",shortname:":hearts:",category:"symbols",emoji_order:"1808"},{name:"black diamond suit",shortname:":diamonds:",category:"symbols",emoji_order:"1809"},{name:"black club suit",shortname:":clubs:",category:"symbols",emoji_order:"1810"},{name:"playing card black joker",shortname:":black_joker:",category:"symbols",emoji_order:"1811"},{name:"mahjong tile red dragon",shortname:":mahjong:",category:"symbols",emoji_order:"1812"},{name:"flower playing cards",shortname:":flower_playing_cards:",category:"symbols",emoji_order:"1813"},{name:"speaker with cancellation stroke",shortname:":mute:",category:"symbols",emoji_order:"1814"},{name:"speaker",shortname:":speaker:",category:"symbols",emoji_order:"1815"},{name:"speaker with one sound wave",shortname:":sound:",category:"symbols",emoji_order:"1816"},{name:"speaker with three sound waves",shortname:":loud_sound:",category:"symbols",emoji_order:"1817"},{name:"public address loudspeaker",shortname:":loudspeaker:",category:"symbols",emoji_order:"1818"},{name:"cheering megaphone",shortname:":mega:",category:"symbols",emoji_order:"1819"},{name:"postal horn",shortname:":postal_horn:",category:"objects",emoji_order:"1820"},{name:"bell",shortname:":bell:",category:"symbols",emoji_order:"1821"},{name:"bell with cancellation stroke",shortname:":no_bell:",category:"symbols",emoji_order:"1822"},{name:"musical score",shortname:":musical_score:",category:"activity",emoji_order:"1823"},{name:"musical note",shortname:":musical_note:",category:"symbols",emoji_order:"1824"},{name:"multiple musical notes",shortname:":notes:",category:"symbols",emoji_order:"1825"},{name:"studio microphone",shortname:":microphone2:",category:"objects",emoji_order:"1826",aliases:[":studio_microphone:"]},{name:"level slider",shortname:":level_slider:",category:"objects",emoji_order:"1827"},{name:"control knobs",shortname:":control_knobs:",category:"objects",emoji_order:"1828"},{name:"microphone",shortname:":microphone:",category:"activity",emoji_order:"1829"},{name:"headphone",shortname:":headphones:",category:"activity",emoji_order:"1830"},{name:"radio",shortname:":radio:",category:"objects",emoji_order:"1831"},{name:"saxophone",shortname:":saxophone:",category:"activity",emoji_order:"1832"},{name:"guitar",shortname:":guitar:",category:"activity",emoji_order:"1833"},{name:"musical keyboard",shortname:":musical_keyboard:",category:"activity",emoji_order:"1834"},{name:"trumpet",shortname:":trumpet:",category:"activity",emoji_order:"1835"},{name:"violin",shortname:":violin:",category:"activity",emoji_order:"1836"},{name:"drum with drumsticks",shortname:":drum:",category:"activity",emoji_order:"1837",aliases:[":drum_with_drumsticks:"]},{name:"mobile phone",shortname:":iphone:",category:"objects",emoji_order:"1838"},{name:"mobile phone with rightwards arrow at left",shortname:":calling:",category:"objects",emoji_order:"1839"},{name:"black telephone",shortname:":telephone:",category:"objects",emoji_order:"1840"},{name:"telephone receiver",shortname:":telephone_receiver:",category:"objects",emoji_order:"1841"},{name:"pager",shortname:":pager:",category:"objects",emoji_order:"1842"},{name:"fax machine",shortname:":fax:",category:"objects",emoji_order:"1843"},{name:"battery",shortname:":battery:",category:"objects",emoji_order:"1844"},{name:"electric plug",shortname:":electric_plug:",category:"objects",emoji_order:"1845"},{name:"personal computer",shortname:":computer:",category:"objects",emoji_order:"1846"},{name:"desktop computer",shortname:":desktop:",category:"objects",emoji_order:"1847",aliases:[":desktop_computer:"]},{name:"printer",shortname:":printer:",category:"objects",emoji_order:"1848"},{name:"keyboard",shortname:":keyboard:",category:"objects",emoji_order:"1849"},{name:"three button mouse",shortname:":mouse_three_button:",category:"objects",emoji_order:"1850",aliases:[":three_button_mouse:"]},{name:"trackball",shortname:":trackball:",category:"objects",emoji_order:"1851"},{name:"minidisc",shortname:":minidisc:",category:"objects",emoji_order:"1852"},{name:"floppy disk",shortname:":floppy_disk:",category:"objects",emoji_order:"1853"},{name:"optical disc",shortname:":cd:",category:"objects",emoji_order:"1854"},{name:"dvd",shortname:":dvd:",category:"objects",emoji_order:"1855"},{name:"movie camera",shortname:":movie_camera:",category:"objects",emoji_order:"1856"},{name:"film frames",shortname:":film_frames:",category:"objects",emoji_order:"1857"},{name:"film projector",shortname:":projector:",category:"objects",emoji_order:"1858",aliases:[":film_projector:"]},{name:"clapper board",shortname:":clapper:",category:"activity",emoji_order:"1859"},{name:"television",shortname:":tv:",category:"objects",emoji_order:"1860"},{name:"camera",shortname:":camera:",category:"objects",emoji_order:"1861"},{name:"camera with flash",shortname:":camera_with_flash:",category:"objects",emoji_order:"1862"},{name:"video camera",shortname:":video_camera:",category:"objects",emoji_order:"1863"},{name:"videocassette",shortname:":vhs:",category:"objects",emoji_order:"1864"},{name:"left-pointing magnifying glass",shortname:":mag:",category:"objects",emoji_order:"1865"},{name:"right-pointing magnifying glass",shortname:":mag_right:",category:"objects",emoji_order:"1866"},{name:"microscope",shortname:":microscope:",category:"objects",emoji_order:"1867"},{name:"telescope",shortname:":telescope:",category:"objects",emoji_order:"1868"},{name:"satellite antenna",shortname:":satellite:",category:"objects",emoji_order:"1869"},{name:"candle",shortname:":candle:",category:"objects",emoji_order:"1870"},{name:"electric light bulb",shortname:":bulb:",category:"objects",emoji_order:"1871"},{name:"electric torch",shortname:":flashlight:",category:"objects",emoji_order:"1872"},{name:"izakaya lantern",shortname:":izakaya_lantern:",category:"objects",emoji_order:"1873"},{name:"notebook with decorative cover",shortname:":notebook_with_decorative_cover:",category:"objects",emoji_order:"1874"},{name:"closed book",shortname:":closed_book:",category:"objects",emoji_order:"1875"},{name:"open book",shortname:":book:",category:"objects",emoji_order:"1876"},{name:"green book",shortname:":green_book:",category:"objects",emoji_order:"1877"},{name:"blue book",shortname:":blue_book:",category:"objects",emoji_order:"1878"},{name:"orange book",shortname:":orange_book:",category:"objects",emoji_order:"1879"},{name:"books",shortname:":books:",category:"objects",emoji_order:"1880"},{name:"notebook",shortname:":notebook:",category:"objects",emoji_order:"1881"},{name:"ledger",shortname:":ledger:",category:"objects",emoji_order:"1882"},{name:"page with curl",shortname:":page_with_curl:",category:"objects",emoji_order:"1883"},{name:"scroll",shortname:":scroll:",category:"objects",emoji_order:"1884"},{name:"page facing up",shortname:":page_facing_up:",category:"objects",emoji_order:"1885"},{name:"newspaper",shortname:":newspaper:",category:"objects",emoji_order:"1886"},{name:"rolled-up newspaper",shortname:":newspaper2:",category:"objects",emoji_order:"1887",aliases:[":rolled_up_newspaper:"]},{name:"bookmark tabs",shortname:":bookmark_tabs:",category:"objects",emoji_order:"1888"},{name:"bookmark",shortname:":bookmark:",category:"objects",emoji_order:"1889"},{name:"label",shortname:":label:",category:"objects",emoji_order:"1890"},{name:"money bag",shortname:":moneybag:",category:"objects",emoji_order:"1891"},{name:"banknote with yen sign",shortname:":yen:",category:"objects",emoji_order:"1892"},{name:"banknote with dollar sign",shortname:":dollar:",category:"objects",emoji_order:"1893"},{name:"banknote with euro sign",shortname:":euro:",category:"objects",emoji_order:"1894"},{name:"banknote with pound sign",shortname:":pound:",category:"objects",emoji_order:"1895"},{name:"money with wings",shortname:":money_with_wings:",category:"objects",emoji_order:"1896"},{name:"credit card",shortname:":credit_card:",category:"objects",emoji_order:"1897"},{name:"chart with upwards trend and yen sign",shortname:":chart:",category:"symbols",emoji_order:"1898"},{name:"currency exchange",shortname:":currency_exchange:",category:"symbols",emoji_order:"1899"},{name:"heavy dollar sign",shortname:":heavy_dollar_sign:",category:"symbols",emoji_order:"1900"},{name:"envelope",shortname:":envelope:",category:"objects",emoji_order:"1901"},{name:"e-mail symbol",shortname:":e-mail:",category:"objects",emoji_order:"1902",aliases:[":email:"]},{name:"incoming envelope",shortname:":incoming_envelope:",category:"objects",emoji_order:"1903"},{name:"envelope with downwards arrow above",shortname:":envelope_with_arrow:",category:"objects",emoji_order:"1904"},{name:"outbox tray",shortname:":outbox_tray:",category:"objects",emoji_order:"1905"},{name:"inbox tray",shortname:":inbox_tray:",category:"objects",emoji_order:"1906"},{name:"package",shortname:":package:",category:"objects",emoji_order:"1907"},{name:"closed mailbox with raised flag",shortname:":mailbox:",category:"objects",emoji_order:"1908"},{name:"closed mailbox with lowered flag",shortname:":mailbox_closed:",category:"objects",emoji_order:"1909"},{name:"open mailbox with raised flag",shortname:":mailbox_with_mail:",category:"objects",emoji_order:"1910"},{name:"open mailbox with lowered flag",shortname:":mailbox_with_no_mail:",category:"objects",emoji_order:"1911"},{name:"postbox",shortname:":postbox:",category:"objects",emoji_order:"1912"},{name:"ballot box with ballot",shortname:":ballot_box:",category:"objects",emoji_order:"1913",aliases:[":ballot_box_with_ballot:"]},{name:"pencil",shortname:":pencil2:",category:"objects",emoji_order:"1914"},{name:"black nib",shortname:":black_nib:",category:"objects",emoji_order:"1915"},{name:"lower left fountain pen",shortname:":pen_fountain:",category:"objects",emoji_order:"1916",aliases:[":lower_left_fountain_pen:"]},{name:"lower left ballpoint pen",shortname:":pen_ballpoint:",category:"objects",emoji_order:"1917",aliases:[":lower_left_ballpoint_pen:"]},{name:"lower left paintbrush",shortname:":paintbrush:",category:"objects",emoji_order:"1918",aliases:[":lower_left_paintbrush:"]},{name:"lower left crayon",shortname:":crayon:",category:"objects",emoji_order:"1919",aliases:[":lower_left_crayon:"]},{name:"memo",shortname:":pencil:",category:"objects",emoji_order:"1920"},{name:"briefcase",shortname:":briefcase:",category:"people",emoji_order:"1921"},{name:"file folder",shortname:":file_folder:",category:"objects",emoji_order:"1922"},{name:"open file folder",shortname:":open_file_folder:",category:"objects",emoji_order:"1923"},{name:"card index dividers",shortname:":dividers:",category:"objects",emoji_order:"1924",aliases:[":card_index_dividers:"]},{name:"calendar",shortname:":date:",category:"objects",emoji_order:"1925"},{name:"tear-off calendar",shortname:":calendar:",category:"objects",emoji_order:"1926"},{name:"spiral note pad",shortname:":notepad_spiral:",category:"objects",emoji_order:"1927",aliases:[":spiral_note_pad:"]},{name:"spiral calendar pad",shortname:":calendar_spiral:",category:"objects",emoji_order:"1928",aliases:[":spiral_calendar_pad:"]},{name:"card index",shortname:":card_index:",category:"objects",emoji_order:"1929"},{name:"chart with upwards trend",shortname:":chart_with_upwards_trend:",category:"objects",emoji_order:"1930"},{name:"chart with downwards trend",shortname:":chart_with_downwards_trend:",category:"objects",emoji_order:"1931"},{name:"bar chart",shortname:":bar_chart:",category:"objects",emoji_order:"1932"},{name:"clipboard",shortname:":clipboard:",category:"objects",emoji_order:"1933"},{name:"pushpin",shortname:":pushpin:",category:"objects",emoji_order:"1934"},{name:"round pushpin",shortname:":round_pushpin:",category:"objects",emoji_order:"1935"},{name:"paperclip",shortname:":paperclip:",category:"objects",emoji_order:"1936"},{name:"linked paperclips",shortname:":paperclips:",category:"objects",emoji_order:"1937",aliases:[":linked_paperclips:"]},{name:"straight ruler",shortname:":straight_ruler:",category:"objects",emoji_order:"1938"},{name:"triangular ruler",shortname:":triangular_ruler:",category:"objects",emoji_order:"1939"},{name:"black scissors",shortname:":scissors:",category:"objects",emoji_order:"1940"},{name:"card file box",shortname:":card_box:",category:"objects",emoji_order:"1941",aliases:[":card_file_box:"]},{name:"file cabinet",shortname:":file_cabinet:",category:"objects",emoji_order:"1942"},{name:"wastebasket",shortname:":wastebasket:",category:"objects",emoji_order:"1943"},{name:"lock",shortname:":lock:",category:"objects",emoji_order:"1944"},{name:"open lock",shortname:":unlock:",category:"objects",emoji_order:"1945"},{name:"lock with ink pen",shortname:":lock_with_ink_pen:",category:"objects",emoji_order:"1946"},{name:"closed lock with key",shortname:":closed_lock_with_key:",category:"objects",emoji_order:"1947"},{name:"key",shortname:":key:",category:"objects",emoji_order:"1948"},{name:"old key",shortname:":key2:",category:"objects",emoji_order:"1949",aliases:[":old_key:"]},{name:"hammer",shortname:":hammer:",category:"objects",emoji_order:"1950"},{name:"pick",shortname:":pick:",category:"objects",emoji_order:"1951"},{name:"hammer and pick",shortname:":hammer_pick:",category:"objects",emoji_order:"1952",aliases:[":hammer_and_pick:"]},{name:"hammer and wrench",shortname:":tools:",category:"objects",emoji_order:"1953",aliases:[":hammer_and_wrench:"]},{name:"dagger knife",shortname:":dagger:",category:"objects",emoji_order:"1954",aliases:[":dagger_knife:"]},{name:"crossed swords",shortname:":crossed_swords:",category:"objects",emoji_order:"1955"},{name:"pistol",shortname:":gun:",category:"objects",emoji_order:"1956"},{name:"bow and arrow",shortname:":bow_and_arrow:",category:"activity",emoji_order:"1957",aliases:[":archery:"]},{name:"shield",shortname:":shield:",category:"objects",emoji_order:"1958"},{name:"wrench",shortname:":wrench:",category:"objects",emoji_order:"1959"},{name:"nut and bolt",shortname:":nut_and_bolt:",category:"objects",emoji_order:"1960"},{name:"gear",shortname:":gear:",category:"objects",emoji_order:"1961"},{name:"compression",shortname:":compression:",category:"objects",emoji_order:"1962"},{name:"alembic",shortname:":alembic:",category:"objects",emoji_order:"1963"},{name:"scales",shortname:":scales:",category:"objects",emoji_order:"1964"},{name:"link symbol",shortname:":link:",category:"objects",emoji_order:"1965"},{name:"chains",shortname:":chains:",category:"objects",emoji_order:"1966"},{name:"syringe",shortname:":syringe:",category:"objects",emoji_order:"1967"},{name:"pill",shortname:":pill:",category:"objects",emoji_order:"1968"},{name:"smoking symbol",shortname:":smoking:",category:"objects",emoji_order:"1969"},{name:"coffin",shortname:":coffin:",category:"objects",emoji_order:"1970"},{name:"funeral urn",shortname:":urn:",category:"objects",emoji_order:"1971",aliases:[":funeral_urn:"]},{name:"moyai",shortname:":moyai:",category:"objects",emoji_order:"1972"},{name:"oil drum",shortname:":oil:",category:"objects",emoji_order:"1973",aliases:[":oil_drum:"]},{name:"crystal ball",shortname:":crystal_ball:",category:"objects",emoji_order:"1974"},{name:"shopping trolley",shortname:":shopping_cart:",category:"objects",emoji_order:"1975",aliases:[":shopping_trolley:"]},{name:"automated teller machine",shortname:":atm:",category:"symbols",emoji_order:"1976"},{name:"put litter in its place symbol",shortname:":put_litter_in_its_place:",category:"symbols",emoji_order:"1977"},{name:"potable water symbol",shortname:":potable_water:",category:"symbols",emoji_order:"1978"},{name:"wheelchair symbol",shortname:":wheelchair:",category:"symbols",emoji_order:"1979"},{name:"mens symbol",shortname:":mens:",category:"symbols",emoji_order:"1980"},{name:"womens symbol",shortname:":womens:",category:"symbols",emoji_order:"1981"},{name:"restroom",shortname:":restroom:",category:"symbols",emoji_order:"1982"},{name:"baby symbol",shortname:":baby_symbol:",category:"symbols",emoji_order:"1983"},{name:"water closet",shortname:":wc:",category:"symbols",emoji_order:"1984"},{name:"passport control",shortname:":passport_control:",category:"symbols",emoji_order:"1985"},{name:"customs",shortname:":customs:",category:"symbols",emoji_order:"1986"},{name:"baggage claim",shortname:":baggage_claim:",category:"symbols",emoji_order:"1987"},{name:"left luggage",shortname:":left_luggage:",category:"symbols",emoji_order:"1988"},{name:"warning sign",shortname:":warning:",category:"symbols",emoji_order:"1989"},{name:"children crossing",shortname:":children_crossing:",category:"symbols",emoji_order:"1990"},{name:"no entry",shortname:":no_entry:",category:"symbols",emoji_order:"1991"},{name:"no entry sign",shortname:":no_entry_sign:",category:"symbols",emoji_order:"1992"},{name:"no bicycles",shortname:":no_bicycles:",category:"symbols",emoji_order:"1993"},{name:"no smoking symbol",shortname:":no_smoking:",category:"symbols",emoji_order:"1994"},{name:"do not litter symbol",shortname:":do_not_litter:",category:"symbols",emoji_order:"1995"},{name:"non-potable water symbol",shortname:":non-potable_water:",category:"symbols",emoji_order:"1996"},{name:"no pedestrians",shortname:":no_pedestrians:",category:"symbols",emoji_order:"1997"},{name:"no mobile phones",shortname:":no_mobile_phones:",category:"symbols",emoji_order:"1998"},{name:"no one under eighteen symbol",shortname:":underage:",category:"symbols",emoji_order:"1999"},{name:"radioactive sign",shortname:":radioactive:",category:"symbols",emoji_order:"2000",aliases:[":radioactive_sign:"]},{name:"biohazard sign",shortname:":biohazard:",category:"symbols",emoji_order:"2001",aliases:[":biohazard_sign:"]},{name:"upwards black arrow",shortname:":arrow_up:",category:"symbols",emoji_order:"2002"},{name:"north east arrow",shortname:":arrow_upper_right:",category:"symbols",emoji_order:"2003"},{name:"black rightwards arrow",shortname:":arrow_right:",category:"symbols",emoji_order:"2004"},{name:"south east arrow",shortname:":arrow_lower_right:",category:"symbols",emoji_order:"2005"},{name:"downwards black arrow",shortname:":arrow_down:",category:"symbols",emoji_order:"2006"},{name:"south west arrow",shortname:":arrow_lower_left:",category:"symbols",emoji_order:"2007"},{name:"leftwards black arrow",shortname:":arrow_left:",category:"symbols",emoji_order:"2008"},{name:"north west arrow",shortname:":arrow_upper_left:",category:"symbols",emoji_order:"2009"},{name:"up down arrow",shortname:":arrow_up_down:",category:"symbols",emoji_order:"2010"},{name:"left right arrow",shortname:":left_right_arrow:",category:"symbols",emoji_order:"2011"},{name:"leftwards arrow with hook",shortname:":leftwards_arrow_with_hook:",category:"symbols",emoji_order:"2012"},{name:"rightwards arrow with hook",shortname:":arrow_right_hook:",category:"symbols",emoji_order:"2013"},{name:"arrow pointing rightwards then curving upwards",shortname:":arrow_heading_up:",category:"symbols",emoji_order:"2014"},{name:"arrow pointing rightwards then curving downwards",shortname:":arrow_heading_down:",category:"symbols",emoji_order:"2015"},{name:"clockwise downwards and upwards open circle arrows",shortname:":arrows_clockwise:",category:"symbols",emoji_order:"2016"},{name:"anticlockwise downwards and upwards open circle arrows",shortname:":arrows_counterclockwise:",category:"symbols",emoji_order:"2017"},{name:"back with leftwards arrow above",shortname:":back:",category:"symbols",emoji_order:"2018"},{name:"end with leftwards arrow above",shortname:":end:",category:"symbols",emoji_order:"2019"},{name:"on with exclamation mark with left right arrow abo",shortname:":on:",category:"symbols",emoji_order:"2020"},{name:"soon with rightwards arrow above",shortname:":soon:",category:"symbols",emoji_order:"2021"},{name:"top with upwards arrow above",shortname:":top:",category:"symbols",emoji_order:"2022"},{name:"place of worship",shortname:":place_of_worship:",category:"symbols",emoji_order:"2023",aliases:[":worship_symbol:"]},{name:"atom symbol",shortname:":atom:",category:"symbols",emoji_order:"2024",aliases:[":atom_symbol:"]},{name:"om symbol",shortname:":om_symbol:",category:"symbols",emoji_order:"2025"},{name:"star of david",shortname:":star_of_david:",category:"symbols",emoji_order:"2026"},{name:"wheel of dharma",shortname:":wheel_of_dharma:",category:"symbols",emoji_order:"2027"},{name:"yin yang",shortname:":yin_yang:",category:"symbols",emoji_order:"2028"},{name:"latin cross",shortname:":cross:",category:"symbols",emoji_order:"2029",aliases:[":latin_cross:"]},{name:"orthodox cross",shortname:":orthodox_cross:",category:"symbols",emoji_order:"2030"},{name:"star and crescent",shortname:":star_and_crescent:",category:"symbols",emoji_order:"2031"},{name:"peace symbol",shortname:":peace:",category:"symbols",emoji_order:"2032",aliases:[":peace_symbol:"]},{name:"menorah with nine branches",shortname:":menorah:",category:"symbols",emoji_order:"2033"},{name:"six pointed star with middle dot",shortname:":six_pointed_star:",category:"symbols",emoji_order:"2034"},{name:"aries",shortname:":aries:",category:"symbols",emoji_order:"2035"},{name:"taurus",shortname:":taurus:",category:"symbols",emoji_order:"2036"},{name:"gemini",shortname:":gemini:",category:"symbols",emoji_order:"2037"},{name:"cancer",shortname:":cancer:",category:"symbols",emoji_order:"2038"},{name:"leo",shortname:":leo:",category:"symbols",emoji_order:"2039"},{name:"virgo",shortname:":virgo:",category:"symbols",emoji_order:"2040"},{name:"libra",shortname:":libra:",category:"symbols",emoji_order:"2041"},{name:"scorpius",shortname:":scorpius:",category:"symbols",emoji_order:"2042"},{name:"sagittarius",shortname:":sagittarius:",category:"symbols",emoji_order:"2043"},{name:"capricorn",shortname:":capricorn:",category:"symbols",emoji_order:"2044"},{name:"aquarius",shortname:":aquarius:",category:"symbols",emoji_order:"2045"},{name:"pisces",shortname:":pisces:",category:"symbols",emoji_order:"2046"},{name:"ophiuchus",shortname:":ophiuchus:",category:"symbols",emoji_order:"2047"},{name:"twisted rightwards arrows",shortname:":twisted_rightwards_arrows:",category:"symbols",emoji_order:"2048"},{name:"clockwise rightwards and leftwards open circle arrows",shortname:":repeat:",category:"symbols",emoji_order:"2049"},{name:"clockwise rightwards and leftwards open circle arrows with circled one overlay",shortname:":repeat_one:",category:"symbols",emoji_order:"2050"},{name:"black right-pointing triangle",shortname:":arrow_forward:",category:"symbols",emoji_order:"2051"},{name:"black right-pointing double triangle",shortname:":fast_forward:",category:"symbols",emoji_order:"2052"},{name:"black right-pointing double triangle with vertical bar",shortname:":track_next:",category:"symbols",emoji_order:"2053",aliases:[":next_track:"]},{name:"black right-pointing double triangle with double vertical bar",shortname:":play_pause:",category:"symbols",emoji_order:"2054"},{name:"black left-pointing triangle",shortname:":arrow_backward:",category:"symbols",emoji_order:"2055"},{name:"black left-pointing double triangle",shortname:":rewind:",category:"symbols",emoji_order:"2056"},{name:"black left-pointing double triangle with vertical bar",shortname:":track_previous:",category:"symbols",emoji_order:"2057",aliases:[":previous_track:"]},{name:"up-pointing small red triangle",shortname:":arrow_up_small:",category:"symbols",emoji_order:"2058"},{name:"black up-pointing double triangle",shortname:":arrow_double_up:",category:"symbols",emoji_order:"2059"},{name:"down-pointing small red triangle",shortname:":arrow_down_small:",category:"symbols",emoji_order:"2060"},{name:"black down-pointing double triangle",shortname:":arrow_double_down:",category:"symbols",emoji_order:"2061"},{name:"double vertical bar",shortname:":pause_button:",category:"symbols",emoji_order:"2062",aliases:[":double_vertical_bar:"]},{name:"black square for stop",shortname:":stop_button:",category:"symbols",emoji_order:"2063"},{name:"black circle for record",shortname:":record_button:",category:"symbols",emoji_order:"2064"},{name:"eject symbol",shortname:":eject:",category:"symbols",emoji_order:"2065",aliases:[":eject_symbol:"]},{name:"cinema",shortname:":cinema:",category:"symbols",emoji_order:"2066"},{name:"low brightness symbol",shortname:":low_brightness:",category:"symbols",emoji_order:"2067"},{name:"high brightness symbol",shortname:":high_brightness:",category:"symbols",emoji_order:"2068"},{name:"antenna with bars",shortname:":signal_strength:",category:"symbols",emoji_order:"2069"},{name:"vibration mode",shortname:":vibration_mode:",category:"symbols",emoji_order:"2070"},{name:"mobile phone off",shortname:":mobile_phone_off:",category:"symbols",emoji_order:"2071"},{name:"black universal recycling symbol",shortname:":recycle:",category:"symbols",emoji_order:"2072"},{name:"name badge",shortname:":name_badge:",category:"symbols",emoji_order:"2073"},{name:"fleur-de-lis",shortname:":fleur-de-lis:",category:"symbols",emoji_order:"2074"},{name:"japanese symbol for beginner",shortname:":beginner:",category:"symbols",emoji_order:"2075"},{name:"trident emblem",shortname:":trident:",category:"symbols",emoji_order:"2076"},{name:"heavy large circle",shortname:":o:",category:"symbols",emoji_order:"2077"},{name:"white heavy check mark",shortname:":white_check_mark:",category:"symbols",emoji_order:"2078"},{name:"ballot box with check",shortname:":ballot_box_with_check:",category:"symbols",emoji_order:"2079"},{name:"heavy check mark",shortname:":heavy_check_mark:",category:"symbols",emoji_order:"2080"},{name:"heavy multiplication x",shortname:":heavy_multiplication_x:",category:"symbols",emoji_order:"2081"},{name:"cross mark",shortname:":x:",category:"symbols",emoji_order:"2082"},{name:"negative squared cross mark",shortname:":negative_squared_cross_mark:",category:"symbols",emoji_order:"2083"},{name:"heavy plus sign",shortname:":heavy_plus_sign:",category:"symbols",emoji_order:"2084"},{name:"heavy minus sign",shortname:":heavy_minus_sign:",category:"symbols",emoji_order:"2088"},{name:"heavy division sign",shortname:":heavy_division_sign:",category:"symbols",emoji_order:"2089"},{name:"curly loop",shortname:":curly_loop:",category:"symbols",emoji_order:"2090"},{name:"double curly loop",shortname:":loop:",category:"symbols",emoji_order:"2091"},{name:"part alternation mark",shortname:":part_alternation_mark:",category:"symbols",emoji_order:"2092"},{name:"eight spoked asterisk",shortname:":eight_spoked_asterisk:",category:"symbols",emoji_order:"2093"},{name:"eight pointed black star",shortname:":eight_pointed_black_star:",category:"symbols",emoji_order:"2094"},{name:"sparkle",shortname:":sparkle:",category:"symbols",emoji_order:"2095"},{name:"double exclamation mark",shortname:":bangbang:",category:"symbols",emoji_order:"2096"},{name:"exclamation question mark",shortname:":interrobang:",category:"symbols",emoji_order:"2097"},{name:"black question mark ornament",shortname:":question:",category:"symbols",emoji_order:"2098"},{name:"white question mark ornament",shortname:":grey_question:",category:"symbols",emoji_order:"2099"},{name:"white exclamation mark ornament",shortname:":grey_exclamation:",category:"symbols",emoji_order:"2100"},{name:"heavy exclamation mark symbol",shortname:":exclamation:",category:"symbols",emoji_order:"2101"},{name:"wavy dash",shortname:":wavy_dash:",category:"symbols",emoji_order:"2102"},{name:"copyright sign",shortname:":copyright:",category:"symbols",emoji_order:"2103"},{name:"registered sign",shortname:":registered:",category:"symbols",emoji_order:"2104"},{name:"trade mark sign",shortname:":tm:",category:"symbols",emoji_order:"2105"},{name:"keycap number sign",shortname:":hash:",category:"symbols",emoji_order:"2106"},{name:"keycap asterisk",shortname:":asterisk:",category:"symbols",emoji_order:"2107",aliases:[":keycap_asterisk:"]},{name:"keycap digit zero",shortname:":zero:",category:"symbols",emoji_order:"2108"},{name:"keycap digit one",shortname:":one:",category:"symbols",emoji_order:"2109"},{name:"keycap digit two",shortname:":two:",category:"symbols",emoji_order:"2110"},{name:"keycap digit three",shortname:":three:",category:"symbols",emoji_order:"2111"},{name:"keycap digit four",shortname:":four:",category:"symbols",emoji_order:"2112"},{name:"keycap digit five",shortname:":five:",category:"symbols",emoji_order:"2113"},{name:"keycap digit six",shortname:":six:",category:"symbols",emoji_order:"2114"},{name:"keycap digit seven",shortname:":seven:",category:"symbols",emoji_order:"2115"},{name:"keycap digit eight",shortname:":eight:",category:"symbols",emoji_order:"2116"},{name:"keycap digit nine",shortname:":nine:",category:"symbols",emoji_order:"2117"},{name:"keycap ten",shortname:":keycap_ten:",category:"symbols",emoji_order:"2118"},{name:"input symbol for latin capital letters",shortname:":capital_abcd:",category:"symbols",emoji_order:"2120"},{name:"input symbol for latin small letters",shortname:":abcd:",category:"symbols",emoji_order:"2121"},{name:"input symbol for symbols",shortname:":symbols:",category:"symbols",emoji_order:"2123"},{name:"input symbol for latin letters",shortname:":abc:",category:"symbols",emoji_order:"2124"},{name:"negative squared latin capital letter a",shortname:":a:",category:"symbols",emoji_order:"2125"},{name:"negative squared ab",shortname:":ab:",category:"symbols",emoji_order:"2126"},{name:"negative squared latin capital letter b",shortname:":b:",category:"symbols",emoji_order:"2127"},{name:"squared cl",shortname:":cl:",category:"symbols",emoji_order:"2128"},{name:"squared cool",shortname:":cool:",category:"symbols",emoji_order:"2129"},{name:"squared free",shortname:":free:",category:"symbols",emoji_order:"2130"},{name:"information source",shortname:":information_source:",category:"symbols",emoji_order:"2131"},{name:"squared id",shortname:":id:",category:"symbols",emoji_order:"2132"},{name:"circled latin capital letter m",shortname:":m:",category:"symbols",emoji_order:"2133"},{name:"squared new",shortname:":new:",category:"symbols",emoji_order:"2134"},{name:"squared ng",shortname:":ng:",category:"symbols",emoji_order:"2135"},{name:"negative squared latin capital letter o",shortname:":o2:",category:"symbols",emoji_order:"2136"},{name:"squared ok",shortname:":ok:",category:"symbols",emoji_order:"2137"},{name:"negative squared latin capital letter p",shortname:":parking:",category:"symbols",emoji_order:"2138"},{name:"squared sos",shortname:":sos:",category:"symbols",emoji_order:"2139"},{name:"squared up with exclamation mark",shortname:":up:",category:"symbols",emoji_order:"2140"},{name:"squared vs",shortname:":vs:",category:"symbols",emoji_order:"2141"},{name:"squared katakana koko",shortname:":koko:",category:"symbols",emoji_order:"2142"},{name:"squared katakana sa",shortname:":sa:",category:"symbols",emoji_order:"2143"},{name:"squared cjk unified ideograph-6708",shortname:":u6708:",category:"symbols",emoji_order:"2144"},{name:"squared cjk unified ideograph-6709",shortname:":u6709:",category:"symbols",emoji_order:"2145"},{name:"squared cjk unified ideograph-6307",shortname:":u6307:",category:"symbols",emoji_order:"2146"},{name:"circled ideograph advantage",shortname:":ideograph_advantage:",category:"symbols",emoji_order:"2147"},{name:"squared cjk unified ideograph-5272",shortname:":u5272:",category:"symbols",emoji_order:"2148"},{name:"squared cjk unified ideograph-7121",shortname:":u7121:",category:"symbols",emoji_order:"2149"},{name:"squared cjk unified ideograph-7981",shortname:":u7981:",category:"symbols",emoji_order:"2150"},{name:"circled ideograph accept",shortname:":accept:",category:"symbols",emoji_order:"2151"},{name:"squared cjk unified ideograph-7533",shortname:":u7533:",category:"symbols",emoji_order:"2152"},{name:"squared cjk unified ideograph-5408",shortname:":u5408:",category:"symbols",emoji_order:"2153"},{name:"squared cjk unified ideograph-7a7a",shortname:":u7a7a:",category:"symbols",emoji_order:"2154"},{name:"circled ideograph congratulation",shortname:":congratulations:",category:"symbols",emoji_order:"2155"},{name:"circled ideograph secret",shortname:":secret:",category:"symbols",emoji_order:"2156"},{name:"squared cjk unified ideograph-55b6",shortname:":u55b6:",category:"symbols",emoji_order:"2157"},{name:"squared cjk unified ideograph-6e80",shortname:":u6e80:",category:"symbols",emoji_order:"2158"},{name:"black small square",shortname:":black_small_square:",category:"symbols",emoji_order:"2159"},{name:"white small square",shortname:":white_small_square:",category:"symbols",emoji_order:"2160"},{name:"white medium square",shortname:":white_medium_square:",category:"symbols",emoji_order:"2161"},{name:"black medium square",shortname:":black_medium_square:",category:"symbols",emoji_order:"2162"},{name:"white medium small square",shortname:":white_medium_small_square:",category:"symbols",emoji_order:"2163"},{name:"black medium small square",shortname:":black_medium_small_square:",category:"symbols",emoji_order:"2164"},{name:"black large square",shortname:":black_large_square:",category:"symbols",emoji_order:"2165"},{name:"white large square",shortname:":white_large_square:",category:"symbols",emoji_order:"2166"},{name:"large orange diamond",shortname:":large_orange_diamond:",category:"symbols",emoji_order:"2167"},{name:"large blue diamond",shortname:":large_blue_diamond:",category:"symbols",emoji_order:"2168"},{name:"small orange diamond",shortname:":small_orange_diamond:",category:"symbols",emoji_order:"2169"},{name:"small blue diamond",shortname:":small_blue_diamond:",category:"symbols",emoji_order:"2170"},{name:"up-pointing red triangle",shortname:":small_red_triangle:",category:"symbols",emoji_order:"2171"},{name:"down-pointing red triangle",shortname:":small_red_triangle_down:",category:"symbols",emoji_order:"2172"},{name:"diamond shape with a dot inside",shortname:":diamond_shape_with_a_dot_inside:",category:"symbols",emoji_order:"2173"},{name:"radio button",shortname:":radio_button:",category:"symbols",emoji_order:"2174"},{name:"black square button",shortname:":black_square_button:",category:"symbols",emoji_order:"2175"},{name:"white square button",shortname:":white_square_button:",category:"symbols",emoji_order:"2176"},{name:"white circle",shortname:":white_circle:",category:"symbols",emoji_order:"2177"},{name:"black circle",shortname:":black_circle:",category:"symbols",emoji_order:"2178"},{name:"red circle",shortname:":red_circle:",category:"symbols",emoji_order:"2179"},{name:"blue circle",shortname:":blue_circle:",category:"symbols",emoji_order:"2180"},{name:"chequered flag",shortname:":checkered_flag:",category:"travel",emoji_order:"2181"},{name:"triangular flag on post",shortname:":triangular_flag_on_post:",category:"objects",emoji_order:"2182"},{name:"crossed flags",shortname:":crossed_flags:",category:"objects",emoji_order:"2183"},{name:"waving black flag",shortname:":flag_black:",category:"objects",emoji_order:"2184",aliases:[":waving_black_flag:"]},{name:"waving white flag",shortname:":flag_white:",category:"objects",emoji_order:"2185",aliases:[":waving_white_flag:"]},{name:"rainbow_flag",shortname:":rainbow_flag:",category:"objects",emoji_order:"2186",aliases:[":gay_pride_flag:"]},{name:"ascension",shortname:":flag_ac:",category:"flags",emoji_order:"2187",aliases:[":ac:"]},{name:"andorra",shortname:":flag_ad:",category:"flags",emoji_order:"2188",aliases:[":ad:"]},{name:"the united arab emirates",shortname:":flag_ae:",category:"flags",emoji_order:"2189",aliases:[":ae:"]},{name:"afghanistan",shortname:":flag_af:",category:"flags",emoji_order:"2190",aliases:[":af:"]},{name:"antigua and barbuda",shortname:":flag_ag:",category:"flags",emoji_order:"2191",aliases:[":ag:"]},{name:"anguilla",shortname:":flag_ai:",category:"flags",emoji_order:"2192",aliases:[":ai:"]},{name:"albania",shortname:":flag_al:",category:"flags",emoji_order:"2193",aliases:[":al:"]},{name:"armenia",shortname:":flag_am:",category:"flags",emoji_order:"2194",aliases:[":am:"]},{name:"angola",shortname:":flag_ao:",category:"flags",emoji_order:"2195",aliases:[":ao:"]},{name:"antarctica",shortname:":flag_aq:",category:"flags",emoji_order:"2196",aliases:[":aq:"]},{name:"argentina",shortname:":flag_ar:",category:"flags",emoji_order:"2197",aliases:[":ar:"]},{name:"american samoa",shortname:":flag_as:",category:"flags",emoji_order:"2198",aliases:[":as:"]},{name:"austria",shortname:":flag_at:",category:"flags",emoji_order:"2199",aliases:[":at:"]},{name:"australia",shortname:":flag_au:",category:"flags",emoji_order:"2200",aliases:[":au:"]},{name:"aruba",shortname:":flag_aw:",category:"flags",emoji_order:"2201",aliases:[":aw:"]},{name:"åland islands",shortname:":flag_ax:",category:"flags",emoji_order:"2202",aliases:[":ax:"]},{name:"azerbaijan",shortname:":flag_az:",category:"flags",emoji_order:"2203",aliases:[":az:"]},{name:"bosnia and herzegovina",shortname:":flag_ba:",category:"flags",emoji_order:"2204",aliases:[":ba:"]},{name:"barbados",shortname:":flag_bb:",category:"flags",emoji_order:"2205",aliases:[":bb:"]},{name:"bangladesh",shortname:":flag_bd:",category:"flags",emoji_order:"2206",aliases:[":bd:"]},{name:"belgium",shortname:":flag_be:",category:"flags",emoji_order:"2207",aliases:[":be:"]},{name:"burkina faso",shortname:":flag_bf:",category:"flags",emoji_order:"2208",aliases:[":bf:"]},{name:"bulgaria",shortname:":flag_bg:",category:"flags",emoji_order:"2209",aliases:[":bg:"]},{name:"bahrain",shortname:":flag_bh:",category:"flags",emoji_order:"2210",aliases:[":bh:"]},{name:"burundi",shortname:":flag_bi:",category:"flags",emoji_order:"2211",aliases:[":bi:"]},{name:"benin",shortname:":flag_bj:",category:"flags",emoji_order:"2212",aliases:[":bj:"]},{name:"saint barthélemy",shortname:":flag_bl:",category:"flags",emoji_order:"2213",aliases:[":bl:"]},{name:"bermuda",shortname:":flag_bm:",category:"flags",emoji_order:"2214",aliases:[":bm:"]},{name:"brunei",shortname:":flag_bn:",category:"flags",emoji_order:"2215",aliases:[":bn:"]},{name:"bolivia",shortname:":flag_bo:",category:"flags",emoji_order:"2216",aliases:[":bo:"]},{name:"caribbean netherlands",shortname:":flag_bq:",category:"flags",emoji_order:"2217",aliases:[":bq:"]},{name:"brazil",shortname:":flag_br:",category:"flags",emoji_order:"2218",aliases:[":br:"]},{name:"the bahamas",shortname:":flag_bs:",category:"flags",emoji_order:"2219",aliases:[":bs:"]},{name:"bhutan",shortname:":flag_bt:",category:"flags",emoji_order:"2220",aliases:[":bt:"]},{name:"bouvet island",shortname:":flag_bv:",category:"flags",emoji_order:"2221",aliases:[":bv:"]},{name:"botswana",shortname:":flag_bw:",category:"flags",emoji_order:"2222",aliases:[":bw:"]},{name:"belarus",shortname:":flag_by:",category:"flags",emoji_order:"2223",aliases:[":by:"]},{name:"belize",shortname:":flag_bz:",category:"flags",emoji_order:"2224",aliases:[":bz:"]},{name:"canada",shortname:":flag_ca:",category:"flags",emoji_order:"2225",aliases:[":ca:"]},{name:"cocos (keeling) islands",shortname:":flag_cc:",category:"flags",emoji_order:"2226",aliases:[":cc:"]},{name:"the democratic republic of the congo",shortname:":flag_cd:",category:"flags",emoji_order:"2227",aliases:[":congo:"]},{name:"central african republic",shortname:":flag_cf:",category:"flags",emoji_order:"2228",aliases:[":cf:"]},{name:"the republic of the congo",shortname:":flag_cg:",category:"flags",emoji_order:"2229",aliases:[":cg:"]},{name:"switzerland",shortname:":flag_ch:",category:"flags",emoji_order:"2230",aliases:[":ch:"]},{name:"côte d’ivoire",shortname:":flag_ci:",category:"flags",emoji_order:"2231",aliases:[":ci:"]},{name:"cook islands",shortname:":flag_ck:",category:"flags",emoji_order:"2232",aliases:[":ck:"]},{name:"chile",shortname:":flag_cl:",category:"flags",emoji_order:"2233",aliases:[":chile:"]},{name:"cameroon",shortname:":flag_cm:",category:"flags",emoji_order:"2234",aliases:[":cm:"]},{name:"china",shortname:":flag_cn:",category:"flags",emoji_order:"2235",aliases:[":cn:"]},{name:"colombia",shortname:":flag_co:",category:"flags",emoji_order:"2236",aliases:[":co:"]},{name:"clipperton island",shortname:":flag_cp:",category:"flags",emoji_order:"2237",aliases:[":cp:"]},{name:"costa rica",shortname:":flag_cr:",category:"flags",emoji_order:"2238",aliases:[":cr:"]},{name:"cuba",shortname:":flag_cu:",category:"flags",emoji_order:"2239",aliases:[":cu:"]},{name:"cape verde",shortname:":flag_cv:",category:"flags",emoji_order:"2240",aliases:[":cv:"]},{name:"curaçao",shortname:":flag_cw:",category:"flags",emoji_order:"2241",aliases:[":cw:"]},{name:"christmas island",shortname:":flag_cx:",category:"flags",emoji_order:"2242",aliases:[":cx:"]},{name:"cyprus",shortname:":flag_cy:",category:"flags",emoji_order:"2243",aliases:[":cy:"]},{name:"the czech republic",shortname:":flag_cz:",category:"flags",emoji_order:"2244",aliases:[":cz:"]},{name:"germany",shortname:":flag_de:",category:"flags",emoji_order:"2245",aliases:[":de:"]},{name:"diego garcia",shortname:":flag_dg:",category:"flags",emoji_order:"2246",aliases:[":dg:"]},{name:"djibouti",shortname:":flag_dj:",category:"flags",emoji_order:"2247",aliases:[":dj:"]},{name:"denmark",shortname:":flag_dk:",category:"flags",emoji_order:"2248",aliases:[":dk:"]},{name:"dominica",shortname:":flag_dm:",category:"flags",emoji_order:"2249",aliases:[":dm:"]},{name:"the dominican republic",shortname:":flag_do:",category:"flags",emoji_order:"2250",aliases:[":do:"]},{name:"algeria",shortname:":flag_dz:",category:"flags",emoji_order:"2251",aliases:[":dz:"]},{name:"ceuta, melilla",shortname:":flag_ea:",category:"flags",emoji_order:"2252",aliases:[":ea:"]},{name:"ecuador",shortname:":flag_ec:",category:"flags",emoji_order:"2253",aliases:[":ec:"]},{name:"estonia",shortname:":flag_ee:",category:"flags",emoji_order:"2254",aliases:[":ee:"]},{name:"egypt",shortname:":flag_eg:",category:"flags",emoji_order:"2255",aliases:[":eg:"]},{name:"western sahara",shortname:":flag_eh:",category:"flags",emoji_order:"2256",aliases:[":eh:"]},{name:"eritrea",shortname:":flag_er:",category:"flags",emoji_order:"2257",aliases:[":er:"]},{name:"spain",shortname:":flag_es:",category:"flags",emoji_order:"2258",aliases:[":es:"]},{name:"ethiopia",shortname:":flag_et:",category:"flags",emoji_order:"2259",aliases:[":et:"]},{name:"european union",shortname:":flag_eu:",category:"flags",emoji_order:"2260",aliases:[":eu:"]},{name:"finland",shortname:":flag_fi:",category:"flags",emoji_order:"2261",aliases:[":fi:"]},{name:"fiji",shortname:":flag_fj:",category:"flags",emoji_order:"2262",aliases:[":fj:"]},{name:"falkland islands",shortname:":flag_fk:",category:"flags",emoji_order:"2263",aliases:[":fk:"]},{name:"micronesia",shortname:":flag_fm:",category:"flags",emoji_order:"2264",aliases:[":fm:"]},{name:"faroe islands",shortname:":flag_fo:",category:"flags",emoji_order:"2265",aliases:[":fo:"]},{name:"france",shortname:":flag_fr:",category:"flags",emoji_order:"2266",aliases:[":fr:"]},{name:"gabon",shortname:":flag_ga:",category:"flags",emoji_order:"2267",aliases:[":ga:"]},{name:"great britain",shortname:":flag_gb:",category:"flags",emoji_order:"2268",aliases:[":gb:"]},{name:"grenada",shortname:":flag_gd:",category:"flags",emoji_order:"2269",aliases:[":gd:"]},{name:"georgia",shortname:":flag_ge:",category:"flags",emoji_order:"2270",aliases:[":ge:"]},{name:"french guiana",shortname:":flag_gf:",category:"flags",emoji_order:"2271",aliases:[":gf:"]},{name:"guernsey",shortname:":flag_gg:",category:"flags",emoji_order:"2272",aliases:[":gg:"]},{name:"ghana",shortname:":flag_gh:",category:"flags",emoji_order:"2273",aliases:[":gh:"]},{name:"gibraltar",shortname:":flag_gi:",category:"flags",emoji_order:"2274",aliases:[":gi:"]},{name:"greenland",shortname:":flag_gl:",category:"flags",emoji_order:"2275",aliases:[":gl:"]},{name:"the gambia",shortname:":flag_gm:",category:"flags",emoji_order:"2276",aliases:[":gm:"]},{name:"guinea",shortname:":flag_gn:",category:"flags",emoji_order:"2277",aliases:[":gn:"]},{name:"guadeloupe",shortname:":flag_gp:",category:"flags",emoji_order:"2278",aliases:[":gp:"]},{name:"equatorial guinea",shortname:":flag_gq:",category:"flags",emoji_order:"2279",aliases:[":gq:"]},{name:"greece",shortname:":flag_gr:",category:"flags",emoji_order:"2280",aliases:[":gr:"]},{name:"south georgia",shortname:":flag_gs:",category:"flags",emoji_order:"2281",aliases:[":gs:"]},{name:"guatemala",shortname:":flag_gt:",category:"flags",emoji_order:"2282",aliases:[":gt:"]},{name:"guam",shortname:":flag_gu:",category:"flags",emoji_order:"2283",aliases:[":gu:"]},{name:"guinea-bissau",shortname:":flag_gw:",category:"flags",emoji_order:"2284",aliases:[":gw:"]},{name:"guyana",shortname:":flag_gy:",category:"flags",emoji_order:"2285",aliases:[":gy:"]},{name:"hong kong",shortname:":flag_hk:",category:"flags",emoji_order:"2286",aliases:[":hk:"]},{name:"heard island and mcdonald islands",shortname:":flag_hm:",category:"flags",emoji_order:"2287",aliases:[":hm:"]},{name:"honduras",shortname:":flag_hn:",category:"flags",emoji_order:"2288",aliases:[":hn:"]},{name:"croatia",shortname:":flag_hr:",category:"flags",emoji_order:"2289",aliases:[":hr:"]},{name:"haiti",shortname:":flag_ht:",category:"flags",emoji_order:"2290",aliases:[":ht:"]},{name:"hungary",shortname:":flag_hu:",category:"flags",emoji_order:"2291",aliases:[":hu:"]},{name:"canary islands",shortname:":flag_ic:",category:"flags",emoji_order:"2292",aliases:[":ic:"]},{name:"indonesia",shortname:":flag_id:",category:"flags",emoji_order:"2293",aliases:[":indonesia:"]},{name:"ireland",shortname:":flag_ie:",category:"flags",emoji_order:"2294",aliases:[":ie:"]},{name:"israel",shortname:":flag_il:",category:"flags",emoji_order:"2295",aliases:[":il:"]},{name:"isle of man",shortname:":flag_im:",category:"flags",emoji_order:"2296",aliases:[":im:"]},{name:"india",shortname:":flag_in:",category:"flags",emoji_order:"2297",aliases:[":in:"]},{name:"british indian ocean territory",shortname:":flag_io:",category:"flags",emoji_order:"2298",aliases:[":io:"]},{name:"iraq",shortname:":flag_iq:",category:"flags",emoji_order:"2299",aliases:[":iq:"]},{name:"iran",shortname:":flag_ir:",category:"flags",emoji_order:"2300",aliases:[":ir:"]},{name:"iceland",shortname:":flag_is:",category:"flags",emoji_order:"2301",aliases:[":is:"]},{name:"italy",shortname:":flag_it:",category:"flags",emoji_order:"2302",aliases:[":it:"]},{name:"jersey",shortname:":flag_je:",category:"flags",emoji_order:"2303",aliases:[":je:"]},{name:"jamaica",shortname:":flag_jm:",category:"flags",emoji_order:"2304",aliases:[":jm:"]},{name:"jordan",shortname:":flag_jo:",category:"flags",emoji_order:"2305",aliases:[":jo:"]},{name:"japan",shortname:":flag_jp:",category:"flags",emoji_order:"2306",aliases:[":jp:"]},{name:"kenya",shortname:":flag_ke:",category:"flags",emoji_order:"2307",aliases:[":ke:"]},{name:"kyrgyzstan",shortname:":flag_kg:",category:"flags",emoji_order:"2308",aliases:[":kg:"]},{name:"cambodia",shortname:":flag_kh:",category:"flags",emoji_order:"2309",aliases:[":kh:"]},{name:"kiribati",shortname:":flag_ki:",category:"flags",emoji_order:"2310",aliases:[":ki:"]},{name:"the comoros",shortname:":flag_km:",category:"flags",emoji_order:"2311",aliases:[":km:"]},{name:"saint kitts and nevis",shortname:":flag_kn:",category:"flags",emoji_order:"2312",aliases:[":kn:"]},{name:"north korea",shortname:":flag_kp:",category:"flags",emoji_order:"2313",aliases:[":kp:"]},{name:"korea",shortname:":flag_kr:",category:"flags",emoji_order:"2314",aliases:[":kr:"]},{name:"kuwait",shortname:":flag_kw:",category:"flags",emoji_order:"2315",aliases:[":kw:"]},{name:"cayman islands",shortname:":flag_ky:",category:"flags",emoji_order:"2316",aliases:[":ky:"]},{name:"kazakhstan",shortname:":flag_kz:",category:"flags",emoji_order:"2317",aliases:[":kz:"]},{name:"laos",shortname:":flag_la:",category:"flags",emoji_order:"2318",aliases:[":la:"]},{name:"lebanon",shortname:":flag_lb:",category:"flags",emoji_order:"2319",aliases:[":lb:"]},{name:"saint lucia",shortname:":flag_lc:",category:"flags",emoji_order:"2320",aliases:[":lc:"]},{name:"liechtenstein",shortname:":flag_li:",category:"flags",emoji_order:"2321",aliases:[":li:"]},{name:"sri lanka",shortname:":flag_lk:",category:"flags",emoji_order:"2322",aliases:[":lk:"]},{name:"liberia",shortname:":flag_lr:",category:"flags",emoji_order:"2323",aliases:[":lr:"]},{name:"lesotho",shortname:":flag_ls:",category:"flags",emoji_order:"2324",aliases:[":ls:"]},{name:"lithuania",shortname:":flag_lt:",category:"flags",emoji_order:"2325",aliases:[":lt:"]},{name:"luxembourg",shortname:":flag_lu:",category:"flags",emoji_order:"2326",aliases:[":lu:"]},{name:"latvia",shortname:":flag_lv:",category:"flags",emoji_order:"2327",aliases:[":lv:"]},{name:"libya",shortname:":flag_ly:",category:"flags",emoji_order:"2328",aliases:[":ly:"]},{name:"morocco",shortname:":flag_ma:",category:"flags",emoji_order:"2329",aliases:[":ma:"]},{name:"monaco",shortname:":flag_mc:",category:"flags",emoji_order:"2330",aliases:[":mc:"]},{name:"moldova",shortname:":flag_md:",category:"flags",emoji_order:"2331",aliases:[":md:"]},{name:"montenegro",shortname:":flag_me:",category:"flags",emoji_order:"2332",aliases:[":me:"]},{name:"saint martin",shortname:":flag_mf:",category:"flags",emoji_order:"2333",aliases:[":mf:"]},{name:"madagascar",shortname:":flag_mg:",category:"flags",emoji_order:"2334",aliases:[":mg:"]},{name:"the marshall islands",shortname:":flag_mh:",category:"flags",emoji_order:"2335",aliases:[":mh:"]},{name:"macedonia",shortname:":flag_mk:",category:"flags",emoji_order:"2336",aliases:[":mk:"]},{name:"mali",shortname:":flag_ml:",category:"flags",emoji_order:"2337",aliases:[":ml:"]},{name:"myanmar",shortname:":flag_mm:",category:"flags",emoji_order:"2338",aliases:[":mm:"]},{name:"mongolia",shortname:":flag_mn:",category:"flags",emoji_order:"2339",aliases:[":mn:"]},{name:"macau",shortname:":flag_mo:",category:"flags",emoji_order:"2340",aliases:[":mo:"]},{name:"northern mariana islands",shortname:":flag_mp:",category:"flags",emoji_order:"2341",aliases:[":mp:"]},{name:"martinique",shortname:":flag_mq:",category:"flags",emoji_order:"2342",aliases:[":mq:"]},{name:"mauritania",shortname:":flag_mr:",category:"flags",emoji_order:"2343",aliases:[":mr:"]},{name:"montserrat",shortname:":flag_ms:",category:"flags",emoji_order:"2344",aliases:[":ms:"]},{name:"malta",shortname:":flag_mt:",category:"flags",emoji_order:"2345",aliases:[":mt:"]},{name:"mauritius",shortname:":flag_mu:",category:"flags",emoji_order:"2346",aliases:[":mu:"]},{name:"maldives",shortname:":flag_mv:",category:"flags",emoji_order:"2347",aliases:[":mv:"]},{name:"malawi",shortname:":flag_mw:",category:"flags",emoji_order:"2348",aliases:[":mw:"]},{name:"mexico",shortname:":flag_mx:",category:"flags",emoji_order:"2349",aliases:[":mx:"]},{name:"malaysia",shortname:":flag_my:",category:"flags",emoji_order:"2350",aliases:[":my:"]},{name:"mozambique",shortname:":flag_mz:",category:"flags",emoji_order:"2351",aliases:[":mz:"]},{name:"namibia",shortname:":flag_na:",category:"flags",emoji_order:"2352",aliases:[":na:"]},{name:"new caledonia",shortname:":flag_nc:",category:"flags",emoji_order:"2353",aliases:[":nc:"]},{name:"niger",shortname:":flag_ne:",category:"flags",emoji_order:"2354",aliases:[":ne:"]},{name:"norfolk island",shortname:":flag_nf:",category:"flags",emoji_order:"2355",aliases:[":nf:"]},{name:"nigeria",shortname:":flag_ng:",category:"flags",emoji_order:"2356",aliases:[":nigeria:"]},{name:"nicaragua",shortname:":flag_ni:",category:"flags",emoji_order:"2357",aliases:[":ni:"]},{name:"the netherlands",shortname:":flag_nl:",category:"flags",emoji_order:"2358",aliases:[":nl:"]},{name:"norway",shortname:":flag_no:",category:"flags",emoji_order:"2359",aliases:[":no:"]},{name:"nepal",shortname:":flag_np:",category:"flags",emoji_order:"2360",aliases:[":np:"]},{name:"nauru",shortname:":flag_nr:",category:"flags",emoji_order:"2361",aliases:[":nr:"]},{name:"niue",shortname:":flag_nu:",category:"flags",emoji_order:"2362",aliases:[":nu:"]},{name:"new zealand",shortname:":flag_nz:",category:"flags",emoji_order:"2363",aliases:[":nz:"]},{name:"oman",shortname:":flag_om:",category:"flags",emoji_order:"2364",aliases:[":om:"]},{name:"panama",shortname:":flag_pa:",category:"flags",emoji_order:"2365",aliases:[":pa:"]},{name:"peru",shortname:":flag_pe:",category:"flags",emoji_order:"2366",aliases:[":pe:"]},{name:"french polynesia",shortname:":flag_pf:",category:"flags",emoji_order:"2367",aliases:[":pf:"]},{name:"papua new guinea",shortname:":flag_pg:",category:"flags",emoji_order:"2368",aliases:[":pg:"]},{name:"the philippines",shortname:":flag_ph:",category:"flags",emoji_order:"2369",aliases:[":ph:"]},{name:"pakistan",shortname:":flag_pk:",category:"flags",emoji_order:"2370",aliases:[":pk:"]},{name:"poland",shortname:":flag_pl:",category:"flags",emoji_order:"2371",aliases:[":pl:"]},{name:"saint pierre and miquelon",shortname:":flag_pm:",category:"flags",emoji_order:"2372",aliases:[":pm:"]},{name:"pitcairn",shortname:":flag_pn:",category:"flags",emoji_order:"2373",aliases:[":pn:"]},{name:"puerto rico",shortname:":flag_pr:",category:"flags",emoji_order:"2374",aliases:[":pr:"]},{name:"palestinian authority",shortname:":flag_ps:",category:"flags",emoji_order:"2375",aliases:[":ps:"]},{name:"portugal",shortname:":flag_pt:",category:"flags",emoji_order:"2376",aliases:[":pt:"]},{name:"palau",shortname:":flag_pw:",category:"flags",emoji_order:"2377",aliases:[":pw:"]},{name:"paraguay",shortname:":flag_py:",category:"flags",emoji_order:"2378",aliases:[":py:"]},{name:"qatar",shortname:":flag_qa:",category:"flags",emoji_order:"2379",aliases:[":qa:"]},{name:"réunion",shortname:":flag_re:",category:"flags",emoji_order:"2380",aliases:[":re:"]},{name:"romania",shortname:":flag_ro:",category:"flags",emoji_order:"2381",aliases:[":ro:"]},{name:"serbia",shortname:":flag_rs:",category:"flags",emoji_order:"2382",aliases:[":rs:"]},{name:"russia",shortname:":flag_ru:",category:"flags",emoji_order:"2383",aliases:[":ru:"]},{name:"rwanda",shortname:":flag_rw:",category:"flags",emoji_order:"2384",aliases:[":rw:"]},{name:"saudi arabia",shortname:":flag_sa:",category:"flags",emoji_order:"2385",aliases:[":saudiarabia:",":saudi:"]},{name:"the solomon islands",shortname:":flag_sb:",category:"flags",emoji_order:"2386",aliases:[":sb:"]},{name:"the seychelles",shortname:":flag_sc:",category:"flags",emoji_order:"2387",aliases:[":sc:"]},{name:"sudan",shortname:":flag_sd:",category:"flags",emoji_order:"2388",aliases:[":sd:"]},{name:"sweden",shortname:":flag_se:",category:"flags",emoji_order:"2389",aliases:[":se:"]},{name:"singapore",shortname:":flag_sg:",category:"flags",emoji_order:"2390",aliases:[":sg:"]},{name:"saint helena",shortname:":flag_sh:",category:"flags",emoji_order:"2391",aliases:[":sh:"]},{name:"slovenia",shortname:":flag_si:",category:"flags",emoji_order:"2392",aliases:[":si:"]},{name:"svalbard and jan mayen",shortname:":flag_sj:",category:"flags",emoji_order:"2393",aliases:[":sj:"]},{name:"slovakia",shortname:":flag_sk:",category:"flags",emoji_order:"2394",aliases:[":sk:"]},{name:"sierra leone",shortname:":flag_sl:",category:"flags",emoji_order:"2395",aliases:[":sl:"]},{name:"san marino",shortname:":flag_sm:",category:"flags",emoji_order:"2396",aliases:[":sm:"]},{name:"senegal",shortname:":flag_sn:",category:"flags",emoji_order:"2397",aliases:[":sn:"]},{name:"somalia",shortname:":flag_so:",category:"flags",emoji_order:"2398",aliases:[":so:"]},{name:"suriname",shortname:":flag_sr:",category:"flags",emoji_order:"2399",aliases:[":sr:"]},{name:"south sudan",shortname:":flag_ss:",category:"flags",emoji_order:"2400",aliases:[":ss:"]},{name:"são tomé and príncipe",shortname:":flag_st:",category:"flags",emoji_order:"2401",aliases:[":st:"]},{name:"el salvador",shortname:":flag_sv:",category:"flags",emoji_order:"2402",aliases:[":sv:"]},{name:"sint maarten",shortname:":flag_sx:",category:"flags",emoji_order:"2403",aliases:[":sx:"]},{name:"syria",shortname:":flag_sy:",category:"flags",emoji_order:"2404",aliases:[":sy:"]},{name:"swaziland",shortname:":flag_sz:",category:"flags",emoji_order:"2405",aliases:[":sz:"]},{name:"tristan da cunha",shortname:":flag_ta:",category:"flags",emoji_order:"2406",aliases:[":ta:"]},{name:"turks and caicos islands",shortname:":flag_tc:",category:"flags",emoji_order:"2407",aliases:[":tc:"]},{name:"chad",shortname:":flag_td:",category:"flags",emoji_order:"2408",aliases:[":td:"]},{name:"french southern territories",shortname:":flag_tf:",category:"flags",emoji_order:"2409",aliases:[":tf:"]},{name:"togo",shortname:":flag_tg:",category:"flags",emoji_order:"2410",aliases:[":tg:"]},{name:"thailand",shortname:":flag_th:",category:"flags",emoji_order:"2411",aliases:[":th:"]},{name:"tajikistan",shortname:":flag_tj:",category:"flags",emoji_order:"2412",aliases:[":tj:"]},{name:"tokelau",shortname:":flag_tk:",category:"flags",emoji_order:"2413",aliases:[":tk:"]},{name:"timor-leste",shortname:":flag_tl:",category:"flags",emoji_order:"2414",aliases:[":tl:"]},{name:"turkmenistan",shortname:":flag_tm:",category:"flags",emoji_order:"2415",aliases:[":turkmenistan:"]},{name:"tunisia",shortname:":flag_tn:",category:"flags",emoji_order:"2416",aliases:[":tn:"]},{name:"tonga",shortname:":flag_to:",category:"flags",emoji_order:"2417",aliases:[":to:"]},{name:"turkey",shortname:":flag_tr:",category:"flags",emoji_order:"2418",aliases:[":tr:"]},{name:"trinidad and tobago",shortname:":flag_tt:",category:"flags",emoji_order:"2419",aliases:[":tt:"]},{name:"tuvalu",shortname:":flag_tv:",category:"flags",emoji_order:"2420",aliases:[":tuvalu:"]},{name:"the republic of china",shortname:":flag_tw:",category:"flags",emoji_order:"2421",aliases:[":tw:"]},{name:"tanzania",shortname:":flag_tz:",category:"flags",emoji_order:"2422",aliases:[":tz:"]},{name:"ukraine",shortname:":flag_ua:",category:"flags",emoji_order:"2423",aliases:[":ua:"]},{name:"uganda",shortname:":flag_ug:",category:"flags",emoji_order:"2424",aliases:[":ug:"]},{name:"united states minor outlying islands",shortname:":flag_um:",category:"flags",emoji_order:"2425",aliases:[":um:"]},{name:"united states",shortname:":flag_us:",category:"flags",emoji_order:"2427",aliases:[":us:"]},{name:"uruguay",shortname:":flag_uy:",category:"flags",emoji_order:"2428",aliases:[":uy:"]},{name:"uzbekistan",shortname:":flag_uz:",category:"flags",emoji_order:"2429",aliases:[":uz:"]},{name:"the vatican city",shortname:":flag_va:",category:"flags",emoji_order:"2430",aliases:[":va:"]},{name:"saint vincent and the grenadines",shortname:":flag_vc:",category:"flags",emoji_order:"2431",aliases:[":vc:"]},{name:"venezuela",shortname:":flag_ve:",category:"flags",emoji_order:"2432",aliases:[":ve:"]},{name:"british virgin islands",shortname:":flag_vg:",category:"flags",emoji_order:"2433",aliases:[":vg:"]},{name:"u.s. virgin islands",shortname:":flag_vi:",category:"flags",emoji_order:"2434",aliases:[":vi:"]},{name:"vietnam",shortname:":flag_vn:",category:"flags",emoji_order:"2435",aliases:[":vn:"]},{name:"vanuatu",shortname:":flag_vu:",category:"flags",emoji_order:"2436",aliases:[":vu:"]},{name:"wallis and futuna",shortname:":flag_wf:",category:"flags",emoji_order:"2437",aliases:[":wf:"]},{name:"samoa",shortname:":flag_ws:",category:"flags",emoji_order:"2438",aliases:[":ws:"]},{name:"kosovo",shortname:":flag_xk:",category:"flags",emoji_order:"2439",aliases:[":xk:"]},{name:"yemen",shortname:":flag_ye:",category:"flags",emoji_order:"2440",aliases:[":ye:"]},{name:"mayotte",shortname:":flag_yt:",category:"flags",emoji_order:"2441",aliases:[":yt:"]},{name:"south africa",shortname:":flag_za:",category:"flags",emoji_order:"2442",aliases:[":za:"]},{name:"zambia",shortname:":flag_zm:",category:"flags",emoji_order:"2443",aliases:[":zm:"]},{name:"zimbabwe",shortname:":flag_zw:",category:"flags",emoji_order:"2444",aliases:[":zw:"]},{name:"regional indicator symbol letter z",shortname:":regional_indicator_z:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter y",shortname:":regional_indicator_y:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter x",shortname:":regional_indicator_x:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter w",shortname:":regional_indicator_w:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter v",shortname:":regional_indicator_v:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter u",shortname:":regional_indicator_u:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter t",shortname:":regional_indicator_t:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter s",shortname:":regional_indicator_s:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter r",shortname:":regional_indicator_r:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter q",shortname:":regional_indicator_q:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter p",shortname:":regional_indicator_p:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter o",shortname:":regional_indicator_o:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter n",shortname:":regional_indicator_n:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter m",shortname:":regional_indicator_m:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter l",shortname:":regional_indicator_l:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter k",shortname:":regional_indicator_k:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter j",shortname:":regional_indicator_j:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter i",shortname:":regional_indicator_i:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter h",shortname:":regional_indicator_h:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter g",shortname:":regional_indicator_g:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter f",shortname:":regional_indicator_f:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter e",shortname:":regional_indicator_e:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter d",shortname:":regional_indicator_d:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter c",shortname:":regional_indicator_c:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter b",shortname:":regional_indicator_b:",category:"regional",emoji_order:"12345"},{name:"regional indicator symbol letter a",shortname:":regional_indicator_a:",category:"regional",emoji_order:"12345"}]},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9),o=h(n(11)),i=h(n(4)),a=h(n(5)),s=h(n(12)),l=h(n(13)),u=h(n(0)),c=h(n(178)),f=n(2),d=h(n(8)),p=n(179),m=h(n(3));function h(e){return e&&e.__esModule?e:{default:e}}var _=/@\S*/g,g=function(e){function t(e){(0,i.default)(this,t);var n=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this,_));return n.room=e,n}return(0,l.default)(t,e),(0,a.default)(t,[{key:"getCompletions",value:function(){var e=(0,r.method)(function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=m.default.getComponent("views.avatars.RoomAvatar"),o=d.default.get();if(!this.room.currentState.mayTriggerNotifOfType("room",o.credentials.userId))return[];var i=this.getCurrentCommand(e,t,n),a=i.command,s=i.range;return a&&a[0]&&"@room".startsWith(a[0])&&a[0].length>1?[{completion:"@room",completionId:"@room",suffix:" ",component:u.default.createElement(p.PillCompletion,{initialComponent:u.default.createElement(r,{width:24,height:24,room:this.room}),title:"@room",description:(0,f._t)("Notify the whole room")}),range:s}]:[]});return function(t,n,r){return e.apply(this,arguments)}}()},{key:"getName",value:function(){return"❗️ "+(0,f._t)("Room Notification")}},{key:"renderCompletions",value:function(e){return u.default.createElement("div",{className:"mx_Autocomplete_Completion_container_pill mx_Autocomplete_Completion_container_truncate"},e)}}]),t}(c.default);t.default=g,e.exports=t.default},function(e,t,n){"use strict";var r=f(n(0)),o=f(n(1)),i=f(n(8)),a=f(n(3)),s=f(n(10)),l=f(n(202)),u=f(n(692)),c=n(2);function f(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"AuxPanel",propTypes:{room:o.default.object.isRequired,userId:o.default.string.isRequired,showApps:o.default.bool,hideAppsDrawer:o.default.bool,conferenceHandler:o.default.object,draggingFile:o.default.bool,displayConfCallNotification:o.default.bool,maxHeight:o.default.number,onResize:o.default.func},defaultProps:{showApps:!0,hideAppsDrawer:!1},shouldComponentUpdate:function(e,t){return!l.default.shallowEqual(this.props,e)||!l.default.shallowEqual(this.state,t)},componentDidUpdate:function(e,t){this.props.onResize&&this.props.onResize()},onConferenceNotificationClick:function(e,t){s.default.dispatch({action:"place_call",type:t,room_id:this.props.room.roomId}),e.stopPropagation(),e.preventDefault()},render:function(){var e=this,t=a.default.getComponent("voip.CallView"),n=a.default.getComponent("elements.TintableSvg"),o=null;this.props.draggingFile&&(o=r.default.createElement("div",{className:"mx_RoomView_fileDropTarget"},r.default.createElement("div",{className:"mx_RoomView_fileDropTargetLabel",title:(0,c._t)("Drop File Here")},r.default.createElement(n,{src:"img/upload-big.svg",width:"45",height:"59"}),r.default.createElement("br",null),(0,c._t)("Drop file here to upload"))));var s=null;if(this.props.displayConfCallNotification){var l="",f=void 0;i.default.get().supportsVoip()?f=r.default.createElement("span",null,(0,c._t)("Join as <voiceText>voice</voiceText> or <videoText>video</videoText>.",{},{voiceText:function(t){return r.default.createElement("a",{onClick:function(t){e.onConferenceNotificationClick(t,"voice")},href:"#"},t)},videoText:function(t){return r.default.createElement("a",{onClick:function(t){e.onConferenceNotificationClick(t,"video")},href:"#"},t)}})):l=(0,c._t)(" (unsupported)"),s=r.default.createElement("div",{className:"mx_RoomView_ongoingConfCallNotification"},(0,c._t)("Ongoing conference call%(supportedText)s.",{supportedText:l})," ",f)}var d=r.default.createElement(t,{ref:"callView",room:this.props.room,ConferenceHandler:this.props.conferenceHandler,onResize:this.props.onResize,maxVideoHeight:this.props.maxHeight}),p=r.default.createElement(u.default,{ref:"appsDrawer",room:this.props.room,userId:this.props.userId,maxHeight:this.props.maxHeight,showApps:this.props.showApps,hide:this.props.hideAppsDrawer});return r.default.createElement("div",{className:"mx_RoomView_auxPanel",style:{maxHeight:this.props.maxHeight}},p,o,d,s,this.props.children)}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=p(n(37)),o=p(n(11)),i=p(n(4)),a=p(n(5)),s=p(n(12)),l=p(n(13)),u=p(n(0)),c=n(197),f=p(n(706)),d=p(n(24));function p(e){return e&&e.__esModule?e:{default:e}}var m=function(e){function t(){(0,i.default)(this,t);var e=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this));return e.getClassName=e.getClassName.bind(e),e}return(0,l.default)(t,e),(0,a.default)(t,[{key:"getClassName",value:function(e){return(0,d.default)({mx_DNDRoomTile:!0,mx_DNDRoomTile_dragging:e})}},{key:"render",value:function(){var e=this,t=this.props;return u.default.createElement("div",null,u.default.createElement(c.Draggable,{key:t.room.roomId,draggableId:t.tagName+"_"+t.room.roomId,index:t.index,type:"draggable-RoomTile"},function(n,o){return u.default.createElement("div",null,u.default.createElement("div",(0,r.default)({ref:n.innerRef},n.draggableProps,n.dragHandleProps),u.default.createElement("div",{className:e.getClassName(o.isDragging)},u.default.createElement(f.default,t))),n.placeholder)}))}}]),t}(u.default.PureComponent);t.default=m,e.exports=t.default},function(e,t,n){"use strict";(function(r){Object.defineProperty(t,"__esModule",{value:!0});var o=l(n(20)),i=l(n(4)),a=l(n(5)),s=l(n(104));function l(e){return e&&e.__esModule?e:{default:e}}var u=function(){function e(){(0,i.default)(this,e),this._listeners={},this._activeRoomId=s.default.getRoomId(),this._roomStoreToken=s.default.addListener(this._onRoomViewStoreUpdate.bind(this))}return(0,a.default)(e,[{key:"addListener",value:function(e,t){this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].push(t)}},{key:"removeListener",value:function(e,t){if(this._listeners[e]){var n=this._listeners[e].indexOf(t);n>-1&&this._listeners[e].splice(n,1)}else console.warn("Unregistering unrecognised listener (roomId="+e+")")}},{key:"_emit",value:function(e){if(this._listeners[e]){var t=!0,n=!1,r=void 0;try{for(var i,a=(0,o.default)(this._listeners[e]);!(t=(i=a.next()).done);t=!0){i.value.call()}}catch(e){n=!0,r=e}finally{try{!t&&a.return&&a.return()}finally{if(n)throw r}}}}},{key:"_onRoomViewStoreUpdate",value:function(){this._activeRoomId&&this._emit(this._activeRoomId),this._activeRoomId=s.default.getRoomId(),this._activeRoomId&&this._emit(this._activeRoomId)}}]),e}();void 0===r.mx_ActiveRoomObserver&&(r.mx_ActiveRoomObserver=new u),t.default=r.mx_ActiveRoomObserver,e.exports=t.default}).call(this,n(15))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(47)),o=s(n(1)),i=s(n(27)),a=n(2);function s(e){return e&&e.__esModule?e:{default:e}}var l=n(0),u=(n(8),n(3)),c={offline:"mx_EntityTile_offline",online:"mx_EntityTile_online",unavailable:"mx_EntityTile_unavailable"};var f=l.createClass({displayName:"EntityTile",propTypes:{name:o.default.string,title:o.default.string,avatarJsx:o.default.any,className:o.default.string,presenceState:o.default.string,presenceLastActiveAgo:o.default.number,presenceLastTs:o.default.number,presenceCurrentlyActive:o.default.bool,showInviteButton:o.default.bool,shouldComponentUpdate:o.default.func,onClick:o.default.func,suppressOnHover:o.default.bool,showPresence:o.default.bool},getDefaultProps:function(){return{shouldComponentUpdate:function(e,t){return!0},onClick:function(){},presenceState:"offline",presenceLastActiveAgo:0,presenceLastTs:0,showInviteButton:!1,suppressOnHover:!1,showPresence:!0}},getInitialState:function(){return{hover:!1}},shouldComponentUpdate:function(e,t){return this.state.hover!==t.hover||this.props.shouldComponentUpdate(e,t)},mouseEnter:function(e){this.setState({hover:!0})},mouseLeave:function(e){this.setState({hover:!1})},render:function(){var e="mx_EntityTile ";e+=function(e,t,n){return!1===n?"mx_EntityTile_online_beenactive":"offline"==e?t?c.offline+"_beenactive":c.offline+"_neveractive":e?c[e]:c.offline+"_neveractive"}(this.props.presenceState,this.props.presenceLastActiveAgo,this.props.showPresence)+(this.props.className?" "+this.props.className:"");var t=void 0,n=this.props.name,o=u.getComponent("elements.EmojiText");if(this.state.hover&&!this.props.suppressOnHover){var s=this.props.presenceLastActiveAgo?Date.now()-(this.props.presenceLastTs-this.props.presenceLastActiveAgo):-1;e+=" mx_EntityTile_hover";var d=u.getComponent("rooms.PresenceLabel"),p=null,m="mx_EntityTile_name";this.props.showPresence&&(p=l.createElement(d,{activeAgo:s,currentlyActive:this.props.presenceCurrentlyActive,presenceState:this.props.presenceState}),m+=" mx_EntityTile_name_hover"),t=l.createElement("div",{className:"mx_EntityTile_details"},l.createElement("img",{className:"mx_EntityTile_chevron",src:"img/member_chevron.png",width:"8",height:"12"}),l.createElement(o,{element:"div",className:m,dir:"auto"},n),p)}else t=l.createElement(o,{element:"div",className:"mx_EntityTile_name",dir:"auto"},n);var h=void 0;this.props.showInviteButton&&(h=l.createElement("div",{className:"mx_EntityTile_invite"},l.createElement("img",{src:"img/plus.svg",width:"16",height:"16"})));var _=void 0,g=this.props.powerStatus;if(g){var v,y,b=(v={},(0,r.default)(v,f.POWER_STATUS_MODERATOR,"img/mod.svg"),(0,r.default)(v,f.POWER_STATUS_ADMIN,"img/admin.svg"),v)[g],E=(y={},(0,r.default)(y,f.POWER_STATUS_MODERATOR,(0,a._t)("Moderator")),(0,r.default)(y,f.POWER_STATUS_ADMIN,(0,a._t)("Admin")),y)[g];_=l.createElement("img",{src:b,className:"mx_EntityTile_power",width:"16",height:"17",alt:E})}var C=u.getComponent("avatars.BaseAvatar"),S=this.props.avatarJsx||l.createElement(C,{name:this.props.name,width:36,height:36});return l.createElement(i.default,{className:e,title:this.props.title,onClick:this.props.onClick,onMouseEnter:this.mouseEnter,onMouseLeave:this.mouseLeave},l.createElement("div",{className:"mx_EntityTile_avatar"},S,_),t,h)}});f.POWER_STATUS_MODERATOR="moderator",f.POWER_STATUS_ADMIN="admin",t.default=f,e.exports=t.default},function(e,t,n){"use strict";var r=h(n(37)),o=h(n(14)),i=h(n(19)),a=n(9),s=h(n(241)),l=h(n(1)),u=n(2),c=h(n(249)),f=h(n(10)),d=n(79),p=h(n(22)),m=n(17);function h(e){return e&&e.__esModule?e:{default:e}}var _=n(0),g=n(24),v=n(16),y=n(3),b=n(409),E=n(176),C=n(202),S={"m.room.message":"messages.MessageEvent","m.sticker":"messages.MessageEvent","m.call.invite":"messages.TextualEvent","m.call.answer":"messages.TextualEvent","m.call.hangup":"messages.TextualEvent"},D={"m.room.aliases":"messages.TextualEvent","m.room.canonical_alias":"messages.TextualEvent","m.room.create":"messages.RoomCreate","m.room.member":"messages.TextualEvent","m.room.name":"messages.TextualEvent","m.room.avatar":"messages.RoomAvatarEvent","m.room.third_party_invite":"messages.TextualEvent","m.room.history_visibility":"messages.TextualEvent","m.room.encryption":"messages.TextualEvent","m.room.topic":"messages.TextualEvent","m.room.power_levels":"messages.TextualEvent","m.room.pinned_events":"messages.TextualEvent","m.room.server_acl":"messages.TextualEvent","im.vector.modular.widgets":"messages.TextualEvent"};function w(e){var t=e.getType();return e.isState()?D[t]:S[t]}e.exports=(0,c.default)(_.createClass({displayName:"EventTile",propTypes:{matrixClient:l.default.object.isRequired,mxEvent:l.default.object.isRequired,isRedacted:l.default.bool,continuation:l.default.bool,last:l.default.bool,contextual:l.default.bool,highlights:l.default.array,highlightLink:l.default.string,showUrlPreview:l.default.bool,isSelectedEvent:l.default.bool,onWidgetLoad:l.default.func,readReceipts:l.default.arrayOf(_.PropTypes.object),readReceiptMap:l.default.object,checkUnmounting:l.default.func,eventSendStatus:l.default.string,tileShape:l.default.string,isTwelveHour:l.default.bool},getDefaultProps:function(){return{onWidgetLoad:function(){}}},getInitialState:function(){return{menu:!1,allReadAvatars:!1,verified:null,previouslyRequestedKeys:!1}},componentWillMount:function(){this._suppressReadReceiptAnimation=!0,this._verifyEvent(this.props.mxEvent)},componentDidMount:function(){this._suppressReadReceiptAnimation=!1,this.props.matrixClient.on("deviceVerificationChanged",this.onDeviceVerificationChanged),this.props.mxEvent.on("Event.decrypted",this._onDecrypted)},componentWillReceiveProps:function(e){e.eventSendStatus!==this.props.eventSendStatus&&this._verifyEvent(e.mxEvent)},shouldComponentUpdate:function(e,t){return!C.shallowEqual(this.state,t)||!this._propsEqual(this.props,e)},componentWillUnmount:function(){this.props.matrixClient.removeListener("deviceVerificationChanged",this.onDeviceVerificationChanged),this.props.mxEvent.removeListener("Event.decrypted",this._onDecrypted)},_onDecrypted:function(){this._verifyEvent(this.props.mxEvent),this.forceUpdate()},onDeviceVerificationChanged:function(e,t){e===this.props.mxEvent.getSender()&&this._verifyEvent(this.props.mxEvent)},_verifyEvent:function(){var e=(0,a.coroutine)(i.default.mark(function e(t){var n,r=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.isEncrypted()){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,(0,a.resolve)(this.props.matrixClient.isEventSenderVerified(t));case 4:n=e.sent,this.setState({verified:n},function(){r.props.onWidgetLoad()});case 6:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),_propsEqual:function(e,t){var n=(0,o.default)(e),r=(0,o.default)(t);if(n.length!==r.length)return!1;for(var i=0;i<n.length;i++){var a=n[i];if(!t.hasOwnProperty(a))return!1;if("readReceipts"===a){var s=e[a],l=t[a];if(s===l)continue;if(!s||!l)return!1;if(s.length!==l.length)return!1;for(var u=0;u<s.length;u++){if(s[u].userId!==l[u].userId)return!1;if(s[u].roomMember!==l[u].roomMember)return!1}}else if(e[a]!==t[a])return!1}return!0},shouldHighlight:function(){var e=this.props.matrixClient.getPushActionsForEvent(this.props.mxEvent);return!(!e||!e.tweaks)&&(this.props.mxEvent.getSender()!==this.props.matrixClient.credentials.userId&&e.tweaks.highlight)},onEditClicked:function(e){var t=y.getComponent("context_menus.MessageContextMenu"),n=e.target.getBoundingClientRect(),r=n.right+window.pageXOffset,o=n.top+n.height/2+window.pageYOffset-19,i=this,a=this.refs,s=a.tile,l=a.replyThread;E.createMenu(t,{chevronOffset:10,mxEvent:this.props.mxEvent,left:r,top:o,eventTileOps:s&&s.getEventTileOps?s.getEventTileOps():void 0,collapseReplyThread:l&&l.canCollapse()?l.collapse:void 0,onFinished:function(){i.setState({menu:!1})}}),this.setState({menu:!0})},toggleAllReadAvatars:function(){this.setState({allReadAvatars:!this.state.allReadAvatars})},getReadAvatars:function(){if(!this.props.readReceipts||0===this.props.readReceipts.length)return _.createElement("span",{className:"mx_EventTile_readAvatars"});for(var e=y.getComponent("rooms.ReadReceiptMarker"),t=[],n=0,r=this.props.readReceipts||[],o=0;o<r.length;++o){var i=r[o],a=!0;(o<5||this.state.allReadAvatars)&&(a=!1),n=-15*(a?4:o);var s=i.userId,l=void 0;this.props.readReceiptMap&&((l=this.props.readReceiptMap[s])||(l={},this.props.readReceiptMap[s]=l)),t.unshift(_.createElement(e,{key:s,member:i.roomMember,fallbackUserId:s,leftOffset:n,hidden:a,readReceiptInfo:l,checkUnmounting:this.props.checkUnmounting,suppressAnimation:this._suppressReadReceiptAnimation,onClick:this.toggleAllReadAvatars,timestamp:i.ts,showTwelveHour:this.props.isTwelveHour}))}var u=void 0;if(!this.state.allReadAvatars){var c=r.length-5;c>0&&(u=_.createElement("span",{className:"mx_EventTile_readAvatarRemainder",onClick:this.toggleAllReadAvatars,style:{right:-(n-15)}},c,"+"))}return _.createElement("span",{className:"mx_EventTile_readAvatars"},u,t)},onSenderProfileClick:function(e){var t=this.props.mxEvent;f.default.dispatch({action:"insert_mention",user_id:t.getSender()})},onCryptoClicked:function(e){var t=this.props.mxEvent;v.createTrackedDialogAsync("Encrypted Event Dialog","",function(e){n.e(7).then(function(){var t=[n(741)];e.apply(null,t)}.bind(this)).catch(n.oe)},{event:t})},onRequestKeysClick:function(){this.setState({previouslyRequestedKeys:!0}),this.props.matrixClient.cancelAndResendEventRoomKeyRequest(this.props.mxEvent)},onPermalinkClicked:function(e){e.preventDefault(),f.default.dispatch({action:"view_room",event_id:this.props.mxEvent.getId(),highlighted:!0,room_id:this.props.mxEvent.getRoomId()})},_renderE2EPadlock:function(){var e=this.props.mxEvent,t={onClick:this.onCryptoClicked};return"m.bad.encrypted"===e.getContent().msgtype?_.createElement(R,t):e.isEncrypted()?this.state.verified?_.createElement(I,t):_.createElement(O,t):this.props.matrixClient.isRoomEncrypted(e.getRoomId())?e.status===m.EventStatus.ENCRYPTING?_.createElement(k,t):e.status===m.EventStatus.NOT_SENT?_.createElement(N,t):_.createElement(A,t):null},render:function(){var e=this,t=y.getComponent("messages.MessageTimestamp"),n=y.getComponent("messages.SenderProfile"),r=y.getComponent("avatars.MemberAvatar"),o=this.props.mxEvent.getContent().msgtype,i=this.props.mxEvent.getType(),a="m.room.message"!==i&&"m.sticker"!==i&&"m.room.create"!=i,l=w(this.props.mxEvent);if(!l){var c=this.props.mxEvent;return console.warn("Event type not supported: type:"+c.getType()+" isState:"+c.isState()),_.createElement("div",{className:"mx_EventTile mx_EventTile_info mx_MNoticeBody"},_.createElement("div",{className:"mx_EventTile_line"},(0,u._t)("This event could not be displayed")))}var f=y.getComponent(l),p=-1!==["sending","queued","encrypting"].indexOf(this.props.eventSendStatus),m=x(this.props.mxEvent)&&this.props.isRedacted,h=this.props.mxEvent.isDecryptionFailure(),v=g({mx_EventTile:!0,mx_EventTile_info:a,mx_EventTile_12hr:this.props.isTwelveHour,mx_EventTile_encrypting:"encrypting"===this.props.eventSendStatus,mx_EventTile_sending:p,mx_EventTile_notSent:"not_sent"===this.props.eventSendStatus,mx_EventTile_highlight:"notif"!==this.props.tileShape&&this.shouldHighlight(),mx_EventTile_selected:this.props.isSelectedEvent,mx_EventTile_continuation:this.props.tileShape?"":this.props.continuation,mx_EventTile_last:this.props.last,mx_EventTile_contextual:this.props.contextual,menu:this.state.menu,mx_EventTile_verified:!0===this.state.verified,mx_EventTile_unverified:!1===this.state.verified,mx_EventTile_bad:h,mx_EventTile_emote:"m.emote"===o,mx_EventTile_redacted:m}),b=(0,d.makeEventPermalink)(this.props.mxEvent.getRoomId(),this.props.mxEvent.getId()),E=this.getReadAvatars(),C=void 0,S=void 0,D=void 0,T=void 0;if("notif"===this.props.tileShape?(D=24,T=!0):"messages.RoomCreate"===l?(D=0,T=!1):a?(D=14,T=!1):this.props.continuation&&"file_grid"!==this.props.tileShape?(D=0,T=!1):(D=30,T=!0),this.props.mxEvent.sender&&D&&(C=_.createElement("div",{className:"mx_EventTile_avatar"},_.createElement(r,{member:this.props.mxEvent.sender,width:D,height:D,viewUserOnClick:!0}))),T){var R=null;this.props.tileShape&&"reply"!==this.props.tileShape&&"reply_preview"!==this.props.tileShape?S=_.createElement(n,{mxEvent:this.props.mxEvent,enableFlair:!0}):("m.image"===o?R=(0,u._td)("%(senderName)s sent an image"):"m.video"===o?R=(0,u._td)("%(senderName)s sent a video"):"m.file"===o&&(R=(0,u._td)("%(senderName)s uploaded a file")),S=_.createElement(n,{onClick:this.onSenderProfileClick,mxEvent:this.props.mxEvent,enableFlair:!R,text:R}))}var k=_.createElement("span",{className:"mx_EventTile_editButton",title:(0,u._t)("Options"),onClick:this.onEditClicked}),N=this.props.mxEvent.getTs()?_.createElement(t,{showTwelveHour:this.props.isTwelveHour,ts:this.props.mxEvent.getTs()}):null,I=_.createElement("div",{className:"mx_EventTile_keyRequestInfo_tooltip_contents"},_.createElement("p",null,this.state.previouslyRequestedKeys?(0,u._t)("Your key share request has been sent - please check your other devices for key share requests."):(0,u._t)("Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.")),_.createElement("p",null,(0,u._t)("If your other devices do not have the key for this message you will not be able to decrypt them."))),O=this.state.previouslyRequestedKeys?(0,u._t)("Key request sent."):(0,u._t)("<requestLink>Re-request encryption keys</requestLink> from your other devices.",{},{requestLink:function(t){return _.createElement("a",{onClick:e.onRequestKeysClick},t)}}),A=y.getComponent("elements.ToolTipButton"),M=h?_.createElement("div",{className:"mx_EventTile_keyRequestInfo"},_.createElement("span",{className:"mx_EventTile_keyRequestInfo_text"},O),_.createElement(A,{helpText:I})):null;switch(this.props.tileShape){case"notif":var P=y.getComponent("elements.EmojiText"),L=this.props.matrixClient.getRoom(this.props.mxEvent.getRoomId());return _.createElement("div",{className:v},_.createElement("div",{className:"mx_EventTile_roomName"},_.createElement(P,{element:"a",href:b,onClick:this.onPermalinkClicked},L?L.name:"")),_.createElement("div",{className:"mx_EventTile_senderDetails"},C,_.createElement("a",{href:b,onClick:this.onPermalinkClicked},S,N)),_.createElement("div",{className:"mx_EventTile_line"},_.createElement(f,{ref:"tile",mxEvent:this.props.mxEvent,highlights:this.props.highlights,highlightLink:this.props.highlightLink,showUrlPreview:this.props.showUrlPreview,onWidgetLoad:this.props.onWidgetLoad})));case"file_grid":return _.createElement("div",{className:v},_.createElement("div",{className:"mx_EventTile_line"},_.createElement(f,{ref:"tile",mxEvent:this.props.mxEvent,highlights:this.props.highlights,highlightLink:this.props.highlightLink,showUrlPreview:this.props.showUrlPreview,tileShape:this.props.tileShape,onWidgetLoad:this.props.onWidgetLoad})),_.createElement("a",{className:"mx_EventTile_senderDetailsLink",href:b,onClick:this.onPermalinkClicked},_.createElement("div",{className:"mx_EventTile_senderDetails"},S,N)));case"reply":case"reply_preview":return _.createElement("div",{className:v},C,S,_.createElement("div",{className:"mx_EventTile_reply"},_.createElement("a",{href:b,onClick:this.onPermalinkClicked},N),this._renderE2EPadlock(),"reply_preview"===this.props.tileShape&&s.default.makeThread(this.props.mxEvent,this.props.onWidgetLoad,"replyThread"),_.createElement(f,{ref:"tile",mxEvent:this.props.mxEvent,highlights:this.props.highlights,highlightLink:this.props.highlightLink,onWidgetLoad:this.props.onWidgetLoad,showUrlPreview:!1})));default:return _.createElement("div",{className:v},_.createElement("div",{className:"mx_EventTile_msgOption"},E),S,_.createElement("div",{className:"mx_EventTile_line"},_.createElement("a",{href:b,onClick:this.onPermalinkClicked},N),this._renderE2EPadlock(),s.default.makeThread(this.props.mxEvent,this.props.onWidgetLoad,"replyThread"),_.createElement(f,{ref:"tile",mxEvent:this.props.mxEvent,highlights:this.props.highlights,highlightLink:this.props.highlightLink,showUrlPreview:this.props.showUrlPreview,onWidgetLoad:this.props.onWidgetLoad}),M,k),C)}}}));var T=["m.room.message","m.sticker"];function x(e){return T.includes(e.getType())}function R(e){return _.createElement(M,(0,r.default)({alt:(0,u._t)("Undecryptable"),src:"img/e2e-blocked.svg",width:"12",height:"12",style:{marginLeft:"-1px"}},e))}function k(e){return _.createElement(M,(0,r.default)({alt:(0,u._t)("Encrypting"),src:"img/e2e-encrypting.svg",width:"10",height:"12"},e))}function N(e){return _.createElement(M,(0,r.default)({alt:(0,u._t)("Encrypted, not sent"),src:"img/e2e-not_sent.svg",width:"10",height:"12"},e))}function I(e){return _.createElement(M,(0,r.default)({alt:(0,u._t)("Encrypted by a verified device"),src:"img/e2e-verified.svg",width:"10",height:"12"},e))}function O(e){return _.createElement(M,(0,r.default)({alt:(0,u._t)("Encrypted by an unverified device"),src:"img/e2e-warning.svg",width:"15",height:"12",style:{marginLeft:"-2px"}},e))}function A(e){return _.createElement(M,(0,r.default)({alt:(0,u._t)("Unencrypted message"),src:"img/e2e-unencrypted.svg",width:"12",height:"12"},e))}function M(e){return p.default.getValue("alwaysShowEncryptionIcons")?_.createElement("img",(0,r.default)({className:"mx_EventTile_e2eIcon"},e)):_.createElement("img",(0,r.default)({className:"mx_EventTile_e2eIcon mx_EventTile_e2eIcon_hidden"},e))}e.exports.haveTileForEvent=function(e){if(e.isRedacted()&&!x(e))return!1;var t=w(e);return void 0!==t&&("messages.TextualEvent"===t?""!==b.textForEvent(e):"messages.RoomCreate"!==t||Boolean(e.getContent().predecessor))},e.exports.getHandlerTile=w},function(e,t,n){"use strict";var r=l(n(0)),o=l(n(1)),i=n(2),a=l(n(10)),s=n(80);function l(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"ForwardMessage",propTypes:{onCancelClick:o.default.func.isRequired},componentWillMount:function(){a.default.dispatch({action:"panel_disable",rightDisabled:!0,middleDisabled:!0})},componentDidMount:function(){document.addEventListener("keydown",this._onKeyDown)},componentWillUnmount:function(){a.default.dispatch({action:"panel_disable",sideDisabled:!1,middleDisabled:!1}),document.removeEventListener("keydown",this._onKeyDown)},_onKeyDown:function(e){switch(e.keyCode){case s.KeyCode.ESCAPE:this.props.onCancelClick()}},render:function(){return r.default.createElement("div",{className:"mx_ForwardMessage"},r.default.createElement("h1",null,(0,i._t)("Please select the destination room for this message")))}})},function(e,t,n){"use strict";var r=i(n(14)),o=i(n(1));function i(e){return e&&e.__esModule?e:{default:e}}var a=n(0),s=n(3),l=n(8),u=n(1769),c=n(16),f=n(251),d=n(314),p=n(129);p(f),e.exports=a.createClass({displayName:"LinkPreviewWidget",propTypes:{link:o.default.string.isRequired,mxEvent:o.default.object.isRequired,onCancelClick:o.default.func,onWidgetLoad:o.default.func},getInitialState:function(){return{preview:null}},componentWillMount:function(){var e=this;this.unmounted=!1,l.get().getUrlPreview(this.props.link,this.props.mxEvent.getTs()).then(function(t){e.unmounted||e.setState({preview:t},e.props.onWidgetLoad)},function(t){console.error("Failed to get preview for "+e.props.link+" "+t)}).done()},componentDidMount:function(){this.refs.description&&d(this.refs.description,p.options)},componentDidUpdate:function(){this.refs.description&&d(this.refs.description,p.options)},componentWillUnmount:function(){this.unmounted=!0},onImageClick:function(e){var t=this.state.preview;if(0==e.button&&!e.metaKey){e.preventDefault();var n=s.getComponent("elements.ImageView"),r=t["og:image"];r&&r.startsWith("mxc://")&&(r=l.get().mxcUrlToHttp(r));var o={src:r,width:t["og:image:width"],height:t["og:image:height"],name:t["og:title"]||t["og:description"]||this.props.link,fileSize:t["matrix:image:size"],link:this.props.link};c.createDialog(n,o,"mx_Dialog_lightbox")}},render:function(){var e=this.state.preview;if(!e||0===(0,r.default)(e).length)return a.createElement("div",null);var t=e["og:image"];t&&t.startsWith("mxc://")&&(t=l.get().mxcUrlToHttp(t,100,100));var n=100;e["og:image:width"]&&e["og:image:height"]&&(n=u.thumbHeight(e["og:image:width"],e["og:image:height"],100,100));var o=void 0;return t&&(o=a.createElement("div",{className:"mx_LinkPreviewWidget_image",style:{height:n}},a.createElement("img",{style:{maxWidth:100,maxHeight:100},src:t,onClick:this.onImageClick}))),a.createElement("div",{className:"mx_LinkPreviewWidget"},o,a.createElement("div",{className:"mx_LinkPreviewWidget_caption"},a.createElement("div",{className:"mx_LinkPreviewWidget_title"},a.createElement("a",{href:this.props.link,target:"_blank",rel:"noopener"},e["og:title"])),a.createElement("div",{className:"mx_LinkPreviewWidget_siteName"},e["og:site_name"]?" - "+e["og:site_name"]:null),a.createElement("div",{className:"mx_LinkPreviewWidget_description",ref:"description"},e["og:description"])),a.createElement("img",{className:"mx_LinkPreviewWidget_cancel mx_filterFlipColor",src:"img/cancel.svg",width:"18",height:"18",onClick:this.props.onCancelClick}))}})},function(e,t,n){"use strict";e.exports={thumbHeight:function(e,t,n,r){if(e&&t){if(e<n&&t<r)return t;var o=n/e,i=r/t;return o<i?Math.floor(o*t):Math.floor(i*t)}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=d(n(11)),o=d(n(4)),i=d(n(5)),a=d(n(12)),s=d(n(13)),l=d(n(0)),u=d(n(1)),c=d(n(3)),f=n(2);function d(e){return e&&e.__esModule?e:{default:e}}var p=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,i.default)(t,[{key:"render",value:function(){var e=null,t=c.default.getComponent("elements.DeviceVerifyButtons");e=this.props.device.isBlocked()?l.default.createElement("div",{className:"mx_MemberDeviceInfo_blacklisted"},l.default.createElement("img",{src:"img/e2e-blocked.svg",width:"12",height:"12",style:{marginLeft:"-1px"},alt:(0,f._t)("Blacklisted")})):this.props.device.isVerified()?l.default.createElement("div",{className:"mx_MemberDeviceInfo_verified"},l.default.createElement("img",{src:"img/e2e-verified.svg",width:"10",height:"12",alt:(0,f._t)("Verified")})):l.default.createElement("div",{className:"mx_MemberDeviceInfo_unverified"},l.default.createElement("img",{src:"img/e2e-warning.svg",width:"15",height:"12",style:{marginLeft:"-2px"},alt:(0,f._t)("Unverified")}));var n=this.props.device.ambiguous?(this.props.device.getDisplayName()?this.props.device.getDisplayName():"")+" ("+this.props.device.deviceId+")":this.props.device.getDisplayName();return l.default.createElement("div",{className:"mx_MemberDeviceInfo",title:(0,f._t)("device id: ")+this.props.device.deviceId},l.default.createElement("div",{className:"mx_MemberDeviceInfo_deviceInfo"},l.default.createElement("div",{className:"mx_MemberDeviceInfo_deviceId"},n,e)),l.default.createElement(t,{userId:this.props.userId,device:this.props.device}))}}]),t}(l.default.Component);t.default=p,p.displayName="MemberDeviceInfo",p.propTypes={userId:u.default.string.isRequired,device:u.default.object.isRequired},e.exports=t.default},function(e,t,n){"use strict";var r=S(n(20)),o=S(n(19)),i=n(9),a=S(n(65)),s=S(n(67)),l=S(n(0)),u=S(n(1)),c=S(n(24)),f=S(n(10)),d=S(n(16)),p=S(n(3)),m=n(2),h=S(n(427)),_=S(n(130)),g=S(n(309)),v=n(707),y=S(n(249)),b=S(n(27)),E=S(n(104)),C=S(n(39));function S(e){return e&&e.__esModule?e:{default:e}}e.exports=(0,y.default)(l.default.createClass({displayName:"MemberInfo",propTypes:{matrixClient:u.default.object.isRequired,member:u.default.object.isRequired},getInitialState:function(){return{can:{kick:!1,ban:!1,mute:!1,modifyLevel:!1},muted:!1,isTargetMod:!1,updating:0,devicesLoading:!0,devices:null,isIgnoring:!1}},componentWillMount:function(){this._cancelDeviceList=null,this._enableDevices=this.props.matrixClient.isCryptoEnabled();var e=this.props.matrixClient;e.on("deviceVerificationChanged",this.onDeviceVerificationChanged),e.on("Room",this.onRoom),e.on("deleteRoom",this.onDeleteRoom),e.on("Room.timeline",this.onRoomTimeline),e.on("Room.name",this.onRoomName),e.on("Room.receipt",this.onRoomReceipt),e.on("RoomState.events",this.onRoomStateEvents),e.on("RoomMember.name",this.onRoomMemberName),e.on("RoomMember.membership",this.onRoomMemberMembership),e.on("accountData",this.onAccountData),this._checkIgnoreState()},componentDidMount:function(){this._updateStateForNewMember(this.props.member)},componentWillReceiveProps:function(e){this.props.member.userId!==e.member.userId&&this._updateStateForNewMember(e.member)},componentWillUnmount:function(){var e=this.props.matrixClient;e&&(e.removeListener("deviceVerificationChanged",this.onDeviceVerificationChanged),e.removeListener("Room",this.onRoom),e.removeListener("deleteRoom",this.onDeleteRoom),e.removeListener("Room.timeline",this.onRoomTimeline),e.removeListener("Room.name",this.onRoomName),e.removeListener("Room.receipt",this.onRoomReceipt),e.removeListener("RoomState.events",this.onRoomStateEvents),e.removeListener("RoomMember.name",this.onRoomMemberName),e.removeListener("RoomMember.membership",this.onRoomMemberMembership),e.removeListener("accountData",this.onAccountData)),this._cancelDeviceList&&this._cancelDeviceList()},_checkIgnoreState:function(){var e=this.props.matrixClient.isUserIgnored(this.props.member.userId);this.setState({isIgnoring:e})},_disambiguateDevices:function(e){for(var t=(0,s.default)(null),n=0;n<e.length;n++){var r=e[n].getDisplayName(),o=t[r]||[];o.push(n),t[r]=o}for(var i in t)t[i].length>1&&t[i].forEach(function(t){e[t].ambiguous=!0})},onDeviceVerificationChanged:function(e,t){var n=this;this._enableDevices&&e===this.props.member.userId&&a.default.resolve(this.props.matrixClient.getStoredDevicesForUser(e)).then(function(e){n.setState({devices:e})})},onRoom:function(e){this.forceUpdate()},onDeleteRoom:function(e){this.forceUpdate()},onRoomTimeline:function(e,t,n){n||this.forceUpdate()},onRoomName:function(e){this.forceUpdate()},onRoomReceipt:function(e,t){(0,v.findReadReceiptFromUserId)(e,this.props.matrixClient.credentials.userId)&&this.forceUpdate()},onRoomStateEvents:function(e,t){this.forceUpdate()},onRoomMemberName:function(e,t){this.forceUpdate()},onRoomMemberMembership:function(e,t){this.props.member.userId===t.userId&&this.forceUpdate()},onAccountData:function(e){"m.direct"===e.getType()&&this.forceUpdate()},_updateStateForNewMember:function(e){var t=this._calculateOpsPermissions(e);t.devicesLoading=!0,t.devices=null,this.setState(t),this._cancelDeviceList&&(this._cancelDeviceList(),this._cancelDeviceList=null),this._downloadDeviceList(e)},_downloadDeviceList:function(e){if(this._enableDevices){var t=!1;this._cancelDeviceList=function(){t=!0};var n=this.props.matrixClient,r=this;n.downloadKeys([e.userId],!0).then(function(){return n.getStoredDevicesForUser(e.userId)}).finally(function(){r._cancelDeviceList=null}).done(function(e){t||(r._disambiguateDevices(e),r.setState({devicesLoading:!1,devices:e}))},function(e){console.log("Error downloading devices",e),r.setState({devicesLoading:!1})})}},onIgnoreToggle:function(){var e=this,t=this.props.matrixClient.getIgnoredUsers();if(this.state.isIgnoring){var n=t.indexOf(this.props.member.userId);-1!==n&&t.splice(n,1)}else t.push(this.props.member.userId);this.props.matrixClient.setIgnoredUsers(t).then(function(){return e.setState({isIgnoring:!e.state.isIgnoring})})},onKick:function(){var e=this,t=this.props.member.membership,n=p.default.getComponent("dialogs.ConfirmUserActionDialog");d.default.createTrackedDialog("Confirm User Action Dialog","onKick",n,{member:this.props.member,action:"invite"===t?(0,m._t)("Disinvite"):(0,m._t)("Kick"),title:"invite"===t?(0,m._t)("Disinvite this user?"):(0,m._t)("Kick this user?"),askReason:"join"===t,danger:!0,onFinished:function(t,n){t&&(e.setState({updating:e.state.updating+1}),e.props.matrixClient.kick(e.props.member.roomId,e.props.member.userId,n||void 0).then(function(){console.log("Kick success")},function(e){var t=p.default.getComponent("dialogs.ErrorDialog");console.error("Kick error: "+e),d.default.createTrackedDialog("Failed to kick","",t,{title:(0,m._t)("Failed to kick"),description:e&&e.message?e.message:"Operation failed"})}).finally(function(){e.setState({updating:e.state.updating-1})}))}})},onBanOrUnban:function(){var e=this,t=p.default.getComponent("dialogs.ConfirmUserActionDialog");d.default.createTrackedDialog("Confirm User Action Dialog","onBanOrUnban",t,{member:this.props.member,action:"ban"===this.props.member.membership?(0,m._t)("Unban"):(0,m._t)("Ban"),title:"ban"===this.props.member.membership?(0,m._t)("Unban this user?"):(0,m._t)("Ban this user?"),askReason:"ban"!==this.props.member.membership,danger:"ban"!==this.props.member.membership,onFinished:function(t,n){if(t){e.setState({updating:e.state.updating+1});("ban"===e.props.member.membership?e.props.matrixClient.unban(e.props.member.roomId,e.props.member.userId):e.props.matrixClient.ban(e.props.member.roomId,e.props.member.userId,n||void 0)).then(function(){console.log("Ban success")},function(e){var t=p.default.getComponent("dialogs.ErrorDialog");console.error("Ban error: "+e),d.default.createTrackedDialog("Failed to ban user","",t,{title:(0,m._t)("Error"),description:(0,m._t)("Failed to ban user")})}).finally(function(){e.setState({updating:e.state.updating-1})})}}})},_warnSelfDemote:function(){var e=p.default.getComponent("dialogs.QuestionDialog");return new a.default(function(t){d.default.createTrackedDialog("Demoting Self","",e,{title:(0,m._t)("Demote yourself?"),description:l.default.createElement("div",null,(0,m._t)("You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.")),button:(0,m._t)("Demote"),onFinished:t})})},onMuteToggle:function(){var e=(0,i.coroutine)(o.default.mark(function e(){var t,n,r,a,s,l,u,c,f,h=this;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t=p.default.getComponent("dialogs.ErrorDialog"),n=this.props.member.roomId,r=this.props.member.userId,a=this.props.matrixClient.getRoom(n)){e.next=6;break}return e.abrupt("return");case 6:if(r!==this.props.matrixClient.getUserId()){e.next=18;break}return e.prev=7,e.next=10,(0,i.resolve)(this._warnSelfDemote());case 10:if(e.sent){e.next=12;break}return e.abrupt("return");case 12:e.next=18;break;case 14:return e.prev=14,e.t0=e.catch(7),console.error("Failed to warn about self demotion: ",e.t0),e.abrupt("return");case 18:if(s=a.currentState.getStateEvents("m.room.power_levels","")){e.next=21;break}return e.abrupt("return");case 21:l=this.state.muted,u=s.getContent(),c=(u.events?u.events["m.room.message"]:null)||u.events_default,f=void 0,f=l?c:c-1,f=parseInt(f),isNaN(f)||(this.setState({updating:this.state.updating+1}),this.props.matrixClient.setPowerLevel(n,r,f,s).then(function(){console.log("Mute toggle success")},function(e){console.error("Mute error: "+e),d.default.createTrackedDialog("Failed to mute user","",t,{title:(0,m._t)("Error"),description:(0,m._t)("Failed to mute user")})}).finally(function(){h.setState({updating:h.state.updating-1})}));case 28:case"end":return e.stop()}},e,this,[[7,14]])}));return function(){return e.apply(this,arguments)}}(),onModToggle:function(){var e=this,t=p.default.getComponent("dialogs.ErrorDialog"),n=this.props.member.roomId,r=this.props.member.userId,o=this.props.matrixClient.getRoom(n);if(o){var i=o.currentState.getStateEvents("m.room.power_levels","");if(i){var a=o.getMember(this.props.matrixClient.credentials.userId);if(a){var s=i.getContent().users_default,l=a.powerLevel-1;l>50&&s<50&&(l=50);var u=this.state.isTargetMod?s:l;this.setState({updating:this.state.updating+1}),this.props.matrixClient.setPowerLevel(n,r,parseInt(u),i).then(function(){console.log("Mod toggle success")},function(e){"M_GUEST_ACCESS_FORBIDDEN"===e.errcode?f.default.dispatch({action:"require_registration"}):(console.error("Toggle moderator error:"+e),d.default.createTrackedDialog("Failed to toggle moderator status","",t,{title:(0,m._t)("Error"),description:(0,m._t)("Failed to toggle moderator status")}))}).finally(function(){e.setState({updating:e.state.updating-1})})}}}},_applyPowerChange:function(e,t,n,r){var o=this;this.setState({updating:this.state.updating+1}),this.props.matrixClient.setPowerLevel(e,t,parseInt(n),r).then(function(){console.log("Power change success")},function(e){var t=p.default.getComponent("dialogs.ErrorDialog");console.error("Failed to change power level "+e),d.default.createTrackedDialog("Failed to change power level","",t,{title:(0,m._t)("Error"),description:(0,m._t)("Failed to change power level")})}).finally(function(){o.setState({updating:o.state.updating-1})}).done()},onPowerChange:function(){var e=(0,i.coroutine)(o.default.mark(function e(t){var n,r,a,s,u,c,f,h=this;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.props.member.roomId,r=this.props.member.userId,a=this.props.matrixClient.getRoom(n)){e.next=5;break}return e.abrupt("return");case 5:if(s=a.currentState.getStateEvents("m.room.power_levels","")){e.next=8;break}return e.abrupt("return");case 8:if(s.getContent().users){e.next=11;break}return this._applyPowerChange(n,r,t,s),e.abrupt("return");case 11:if(u=this.props.matrixClient.getUserId(),c=p.default.getComponent("dialogs.QuestionDialog"),u!==r){e.next=26;break}return e.prev=14,e.next=17,(0,i.resolve)(this._warnSelfDemote());case 17:if(e.sent){e.next=19;break}return e.abrupt("return");case 19:this._applyPowerChange(n,r,t,s),e.next=25;break;case 22:e.prev=22,e.t0=e.catch(14),console.error("Failed to warn about self demotion: ",e.t0);case 25:return e.abrupt("return");case 26:if(f=s.getContent().users[u],parseInt(f)!==parseInt(t)){e.next=30;break}return d.default.createTrackedDialog("Promote to PL100 Warning","",c,{title:(0,m._t)("Warning!"),description:l.default.createElement("div",null,(0,m._t)("You will not be able to undo this change as you are promoting the user to have the same power level as yourself."),l.default.createElement("br",null),(0,m._t)("Are you sure?")),button:(0,m._t)("Continue"),onFinished:function(e){e&&h._applyPowerChange(n,r,t,s)}}),e.abrupt("return");case 30:this._applyPowerChange(n,r,t,s);case 31:case"end":return e.stop()}},e,this,[[14,22]])}));return function(t){return e.apply(this,arguments)}}(),onNewDMClick:function(){var e=this;this.setState({updating:this.state.updating+1}),(0,h.default)({dmUserId:this.props.member.userId}).finally(function(){e.setState({updating:e.state.updating-1})}).done()},onLeaveClick:function(){f.default.dispatch({action:"leave_room",room_id:this.props.member.roomId})},_calculateOpsPermissions:function(e){var t={can:{},muted:!1},n=this.props.matrixClient.getRoom(e.roomId);if(!n)return t;var r=n.currentState.getStateEvents("m.room.power_levels","");if(!r)return t;var o=n.getMember(this.props.matrixClient.credentials.userId);if(!o)return t;var i=e;return{can:this._calculateCanPermissions(o,i,r.getContent()),muted:this._isMuted(i,r.getContent()),isTargetMod:i.powerLevel>r.getContent().users_default}},_calculateCanPermissions:function(e,t,n){var r=e.userId===t.userId,o={kick:!1,ban:!1,mute:!1,modifyLevel:!1,modifyLevelMax:0};if(!(t.powerLevel<e.powerLevel||r))return o;var i=(n.events?n.events["m.room.power_levels"]:null)||n.state_default;return o.kick=e.powerLevel>=n.kick,o.ban=e.powerLevel>=n.ban,o.mute=e.powerLevel>=i,o.modifyLevel=e.powerLevel>=i&&(r||e.powerLevel>t.powerLevel),o.modifyLevelMax=e.powerLevel,o},_isMuted:function(e,t){if(!t||!e)return!1;var n=(t.events?t.events["m.room.message"]:null)||t.events_default;return e.powerLevel<n},onCancel:function(e){f.default.dispatch({action:"view_user",member:null})},onMemberAvatarClick:function(){var e=this.props.member,t=e.getMxcAvatarUrl();if(t){var n=this.props.matrixClient.mxcUrlToHttp(t),r=p.default.getComponent("elements.ImageView"),o={src:n,name:e.name};d.default.createDialog(r,o,"mx_Dialog_lightbox")}},onRoomTileClick:function(e){f.default.dispatch({action:"view_room",room_id:e})},_renderDevices:function(){if(!this._enableDevices)return null;var e=this.state.devices,t=p.default.getComponent("rooms.MemberDeviceInfo"),n=p.default.getComponent("elements.Spinner"),r=void 0;if(this.state.devicesLoading)r=l.default.createElement(n,null);else if(null===e)r=(0,m._t)("Unable to load device list");else if(0===e.length)r=(0,m._t)("No devices with registered encryption keys");else{r=[];for(var o=0;o<e.length;o++)r.push(l.default.createElement(t,{key:o,userId:this.props.member.userId,device:e[o]}))}return l.default.createElement("div",null,l.default.createElement("h3",null,(0,m._t)("Devices")),l.default.createElement("div",{className:"mx_MemberInfo_devices"},r))},onShareUserClick:function(){var e=p.default.getComponent("dialogs.ShareDialog");d.default.createTrackedDialog("share room member dialog","",e,{target:this.props.member})},_renderUserOptions:function(){var e=this,t=this.props.matrixClient,n=this.props.member,r=null,a=null,s=null,u=null;if(n.userId!==t.getUserId()){if(r=l.default.createElement(b.default,{onClick:this.onIgnoreToggle,className:"mx_MemberInfo_field"},this.state.isIgnoring?(0,m._t)("Unignore"):(0,m._t)("Ignore")),n.roomId){var c=t.getRoom(n.roomId).getEventReadUpTo(n.userId);u=l.default.createElement(b.default,{onClick:function(){f.default.dispatch({action:"view_room",highlighted:!0,event_id:c,room_id:n.roomId})},className:"mx_MemberInfo_field"},(0,m._t)("Jump to read receipt")),a=l.default.createElement(b.default,{onClick:function(){f.default.dispatch({action:"insert_mention",user_id:n.userId})},className:"mx_MemberInfo_field"},(0,m._t)("Mention"))}if(!n||!n.membership||"leave"===n.membership){var h=n&&n.roomId?n.roomId:E.default.getRoomId(),_=function(){var r=(0,i.coroutine)(o.default.mark(function r(){var a;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,(0,i.resolve)(t.invite(h,n.userId));case 3:e.next=9;break;case 5:e.prev=5,e.t0=e.catch(0),a=p.default.getComponent("dialogs.ErrorDialog"),d.default.createTrackedDialog("Failed to invite","",a,{title:(0,m._t)("Failed to invite"),description:e.t0&&e.t0.message?e.t0.message:"Operation failed"});case 9:case"end":return e.stop()}},r,e,[[0,5]])}));return function(){return r.apply(this,arguments)}}();s=l.default.createElement(b.default,{onClick:_,className:"mx_MemberInfo_field"},(0,m._t)("Invite"))}}var g=l.default.createElement(b.default,{onClick:this.onShareUserClick,className:"mx_MemberInfo_field"},(0,m._t)("Share Link to User"));return l.default.createElement("div",null,l.default.createElement("h3",null,(0,m._t)("User Options")),l.default.createElement("div",{className:"mx_MemberInfo_buttons"},u,g,a,r,s))},render:function(){var e=void 0,t=void 0,n=void 0,o=void 0,i=void 0,a=void 0;if(this.props.member.userId!==this.props.matrixClient.credentials.userId){var s=new _.default(this.props.matrixClient).getDMRoomsForUserId(this.props.member.userId),u=p.default.getComponent("rooms.RoomTile"),f=[],d=!0,h=!1,v=void 0;try{for(var y,E=(0,r.default)(s);!(d=(y=E.next()).done);d=!0){var S=y.value,D=this.props.matrixClient.getRoom(S);if(D){if("join"!==D.getMyMembership())continue;var w=this.props.member;if(!w.membership||"join"!==w.membership)continue;var T=D.getUnreadNotificationCount("highlight")>0;f.push(l.default.createElement(u,{key:D.roomId,room:D,transparent:!0,collapsed:!1,selected:!1,unread:g.default.doesRoomHaveUnreadMessages(D),highlight:T,isInvite:!1,onClick:this.onRoomTileClick}))}}}catch(e){h=!0,v=e}finally{try{!d&&E.return&&E.return()}finally{if(h)throw v}}var x=(0,c.default)({mx_MemberInfo_createRoom_label:!0,mx_RoomTile_name:!0}),R=l.default.createElement(b.default,{className:"mx_MemberInfo_createRoom",onClick:this.onNewDMClick},l.default.createElement("div",{className:"mx_RoomTile_avatar"},l.default.createElement("img",{src:"img/create-big.svg",width:"26",height:"26"})),l.default.createElement("div",{className:x},l.default.createElement("i",null,(0,m._t)("Start a chat"))));e=l.default.createElement("div",null,l.default.createElement("h3",null,(0,m._t)("Direct chats")),f,R)}if(this.state.updating){var k=p.default.getComponent("elements.Spinner");a=l.default.createElement(k,{imgClassName:"mx_ContextualMenu_spinner"})}if(this.state.can.kick){var N="invite"===this.props.member.membership?(0,m._t)("Disinvite"):(0,m._t)("Kick");t=l.default.createElement(b.default,{className:"mx_MemberInfo_field",onClick:this.onKick},N)}if(this.state.can.ban){var I=(0,m._t)("Ban");"ban"===this.props.member.membership&&(I=(0,m._t)("Unban")),n=l.default.createElement(b.default,{className:"mx_MemberInfo_field",onClick:this.onBanOrUnban},I)}if(this.state.can.mute){var O=this.state.muted?(0,m._t)("Unmute"):(0,m._t)("Mute");o=l.default.createElement(b.default,{className:"mx_MemberInfo_field",onClick:this.onMuteToggle},O)}if(this.state.can.toggleMod){var A=this.state.isTargetMod?(0,m._t)("Revoke Moderator"):(0,m._t)("Make Moderator");i=l.default.createElement(b.default,{className:"mx_MemberInfo_field",onClick:this.onModToggle},A)}var M=void 0;(t||n||o||i)&&(M=l.default.createElement("div",null,l.default.createElement("h3",null,(0,m._t)("Admin Tools")),l.default.createElement("div",{className:"mx_MemberInfo_buttons"},o,t,n,i)));var P=this.props.member.name,L=void 0,F=void 0,U=void 0;this.props.member.user&&(L=this.props.member.user.presence,F=this.props.member.user.lastActiveAgo,U=this.props.member.user.currentlyActive);var j=this.props.matrixClient.getRoom(this.props.member.roomId),B=j?j.currentState.getStateEvents("m.room.power_levels",""):null,G=B?B.getContent().users_default:0,q=C.default.get().enable_presence_by_hs_url,V=this.props.matrixClient.baseUrl,H=!0;q&&void 0!==q[V]&&(H=q[V]);var Y=null;if(H){var z=p.default.getComponent("rooms.PresenceLabel");Y=l.default.createElement(z,{activeAgo:F,currentlyActive:U,presenceState:L})}var W=null;if(this.props.member.roomId){var K=p.default.getComponent("elements.PowerSelector");W=l.default.createElement("div",null,l.default.createElement("div",{className:"mx_MemberInfo_profileField"},(0,m._t)("Level:")," ",l.default.createElement("b",null,l.default.createElement(K,{controlled:!0,value:parseInt(this.props.member.powerLevel),maxValue:this.state.can.modifyLevelMax,disabled:!this.state.can.modifyLevel,usersDefault:G,onChange:this.onPowerChange}))),l.default.createElement("div",{className:"mx_MemberInfo_profileField"},Y))}var $=p.default.getComponent("elements.GeminiScrollbarWrapper"),Q=p.default.getComponent("avatars.MemberAvatar"),X=p.default.getComponent("elements.EmojiText");return l.default.createElement("div",{className:"mx_MemberInfo"},l.default.createElement($,{autoshow:!0},l.default.createElement(b.default,{className:"mx_MemberInfo_cancel",onClick:this.onCancel},l.default.createElement("img",{src:"img/cancel.svg",width:"18",height:"18",className:"mx_filterFlipColor",alt:(0,m._t)("Close")})),l.default.createElement("div",{className:"mx_MemberInfo_avatar"},l.default.createElement(Q,{onClick:this.onMemberAvatarClick,member:this.props.member,width:48,height:48})),l.default.createElement(X,{element:"h2"},P),l.default.createElement("div",{className:"mx_MemberInfo_profile"},l.default.createElement("div",{className:"mx_MemberInfo_profileField"},this.props.member.userId),W),this._renderUserOptions(),M,e,this._renderDevices(),a))}}))},function(e,t,n){"use strict";var r=c(n(51)),o=c(n(126)),i=c(n(19)),a=n(9),s=c(n(0)),l=n(2),u=c(n(39));function c(e){return e&&e.__esModule?e:{default:e}}var f=n(8),d=n(3),p=n(201),m=n(127);e.exports=s.default.createClass({displayName:"MemberList",getInitialState:function(){return f.get().hasLazyLoadMembersEnabled()?this._getMembersState([]):this._getMembersState(this.roomMembers())},componentWillMount:function(){this._mounted=!0;var e=f.get();e.hasLazyLoadMembersEnabled()?(this._showMembersAccordingToMembershipWithLL(),e.on("Room.myMembership",this.onMyMembership)):this._listenForMembersChanges(),e.on("Room",this.onRoom);var t=u.default.get().enable_presence_by_hs_url,n=f.get().baseUrl;this._showPresence=!0,t&&void 0!==t[n]&&(this._showPresence=t[n])},_listenForMembersChanges:function(){var e=f.get();e.on("RoomState.members",this.onRoomStateMember),e.on("RoomMember.name",this.onRoomMemberName),e.on("RoomState.events",this.onRoomStateEvent),e.on("User.lastPresenceTs",this.onUserLastPresenceTs)},componentWillUnmount:function(){this._mounted=!1;var e=f.get();e&&(e.removeListener("RoomState.members",this.onRoomStateMember),e.removeListener("RoomMember.name",this.onRoomMemberName),e.removeListener("Room.myMembership",this.onMyMembership),e.removeListener("RoomState.events",this.onRoomStateEvent),e.removeListener("Room",this.onRoom),e.removeListener("User.lastPresenceTs",this.onUserLastPresenceTs)),this._updateList.cancelPendingCall()},_showMembersAccordingToMembershipWithLL:function(){var e=(0,a.coroutine)(i.default.mark(function e(){var t,n,r;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!f.get().hasLazyLoadMembersEnabled()){e.next=18;break}if(t=f.get(),n=t.getRoom(this.props.roomId),"join"!==(r=n&&n.getMyMembership())){e.next=17;break}return this.setState({loading:!0}),e.prev=7,e.next=10,(0,a.resolve)(n.loadMembersIfNeeded());case 10:e.next=14;break;case 12:e.prev=12,e.t0=e.catch(7);case 14:this._mounted&&(this.setState(this._getMembersState(this.roomMembers())),this._listenForMembersChanges()),e.next=18;break;case 17:"invite"===r&&this.setState(this._getMembersState(this.roomMembers()));case 18:case"end":return e.stop()}},e,this,[[7,12]])}));return function(){return e.apply(this,arguments)}}(),_getMembersState:function(e){return{loading:!1,members:e,filteredJoinedMembers:this._filterMembers(e,"join"),filteredInvitedMembers:this._filterMembers(e,"invite"),truncateAtJoined:30,truncateAtInvited:5,searchQuery:""}},onUserLastPresenceTs:function(e,t){this.refs[t.userId]&&this._updateList()},onRoom:function(e){e.roomId===this.props.roomId&&this._showMembersAccordingToMembershipWithLL()},onMyMembership:function(e,t,n){e.roomId===this.props.roomId&&"join"===t&&this._showMembersAccordingToMembershipWithLL()},onRoomStateMember:function(e,t,n){n.roomId===this.props.roomId&&this._updateList()},onRoomMemberName:function(e,t){t.roomId===this.props.roomId&&this._updateList()},onRoomStateEvent:function(e,t){e.getRoomId()===this.props.roomId&&"m.room.third_party_invite"===e.getType()&&this._updateList()},_updateList:new p(function(){var e={loading:!1,members:this.roomMembers()};e.filteredJoinedMembers=this._filterMembers(e.members,"join",this.state.searchQuery),e.filteredInvitedMembers=this._filterMembers(e.members,"invite",this.state.searchQuery),this.setState(e)},500),getMembersWithUser:function(){if(!this.props.roomId)return[];var e=f.get(),t=e.getRoom(this.props.roomId);if(!t)return[];var n=(0,o.default)(t.currentState.members);return n.forEach(function(t){null===t.user&&(t.user=e.getUser(t.userId))}),n},roomMembers:function(){var e=m.getConferenceHandler(),t=this.getMembersWithUser().filter(function(t){return("join"===t.membership||"invite"===t.membership)&&(!e||e&&!e.isConferenceUser(t.userId))});return t.sort(this.memberSort),t},_createOverflowTileJoined:function(e,t){return this._createOverflowTile(e,t,this._showMoreJoinedMemberList)},_createOverflowTileInvited:function(e,t){return this._createOverflowTile(e,t,this._showMoreInvitedMemberList)},_createOverflowTile:function(e,t,n){var r=d.getComponent("rooms.EntityTile"),o=d.getComponent("avatars.BaseAvatar"),i=(0,l._t)("and %(count)s others...",{count:e});return s.default.createElement(r,{className:"mx_EntityTile_ellipsis",avatarJsx:s.default.createElement(o,{url:"img/ellipsis.svg",name:"...",width:36,height:36}),name:i,presenceState:"online",suppressOnHover:!0,onClick:n})},_showMoreJoinedMemberList:function(){this.setState({truncateAtJoined:this.state.truncateAtJoined+100})},_showMoreInvitedMemberList:function(){this.setState({truncateAtInvited:this.state.truncateAtInvited+100})},memberString:function(e){return e?"("+e.name+", "+e.powerLevel+", "+e.user.lastActiveAgo+", "+e.user.currentlyActive+")":"(null)"},memberSort:function(e,t){var n=e.user,r=t.user;if(!n&&!r)return 0;if(n&&!r)return-1;if(!n&&r)return 1;if(n.currentlyActive&&r.currentlyActive||!this._showPresence){if(e.powerLevel===t.powerLevel){if(e.name&&t.name){var o="@"===e.name[0]?e.name.substr(1):e.name,i="@"===t.name[0]?t.name.substr(1):t.name;return o.localeCompare(i)}return 0}return t.powerLevel-e.powerLevel}return n.currentlyActive&&!r.currentlyActive?-1:!n.currentlyActive&&r.currentlyActive?1:r.getLastActiveTs()-n.getLastActiveTs()},onSearchQueryChanged:function(e){var t=e.target.value;this.setState({searchQuery:t,filteredJoinedMembers:this._filterMembers(this.state.members,"join",t),filteredInvitedMembers:this._filterMembers(this.state.members,"invite",t)})},_filterMembers:function(e,t,n){return e.filter(function(e){if(n){n=n.toLowerCase();var r=-1!==e.name.toLowerCase().indexOf(n),o=-1!==e.userId.toLowerCase().indexOf(n);if(!r&&!o)return!1}return e.membership===t})},_getPending3PidInvites:function(){var e=f.get().getRoom(this.props.roomId);if(e)return e.currentState.getStateEvents("m.room.third_party_invite").filter(function(t){for(var n=["key_validity_url","public_key","display_name"],r=0;r<n.length;++r)if(void 0===t.getContent()[n[r]])return!1;return!e.currentState.getInviteForThreePidToken(t.getStateKey())})},_makeMemberTiles:function(e,t){var n=this,o=d.getComponent("rooms.MemberTile"),i=e.map(function(e){return s.default.createElement(o,{key:e.userId,member:e,ref:e.userId,showPresence:n._showPresence})});if("invite"===t){var a=d.getComponent("rooms.EntityTile");i.push.apply(i,(0,r.default)(this._getPending3PidInvites().map(function(e){return s.default.createElement(a,{key:e.getStateKey(),name:e.getContent().display_name,suppressOnHover:!0})})))}return i},_getChildrenJoined:function(e,t){return this._makeMemberTiles(this.state.filteredJoinedMembers.slice(e,t))},_getChildCountJoined:function(){return this.state.filteredJoinedMembers.length},_getChildrenInvited:function(e,t){return this._makeMemberTiles(this.state.filteredInvitedMembers.slice(e,t),"invite")},_getChildCountInvited:function(){return this.state.filteredInvitedMembers.length+(this._getPending3PidInvites()||[]).length},render:function(){if(this.state.loading){var e=d.getComponent("elements.Spinner");return s.default.createElement("div",{className:"mx_MemberList"},s.default.createElement(e,null))}var t=d.getComponent("elements.TruncatedList"),n=d.getComponent("elements.GeminiScrollbarWrapper"),r=null;this._getChildCountInvited()>0&&(r=s.default.createElement("div",{className:"mx_MemberList_invited"},s.default.createElement("h2",null,(0,l._t)("Invited")),s.default.createElement("div",{className:"mx_MemberList_wrapper"},s.default.createElement(t,{className:"mx_MemberList_wrapper",truncateAt:this.state.truncateAtInvited,createOverflowElement:this._createOverflowTileInvited,getChildren:this._getChildrenInvited,getChildCount:this._getChildCountInvited}))));var o=s.default.createElement("form",{autoComplete:"off"},s.default.createElement("input",{className:"mx_MemberList_query",id:"mx_MemberList_query",type:"text",onChange:this.onSearchQueryChanged,value:this.state.searchQuery,placeholder:(0,l._t)("Filter room members")}));return s.default.createElement("div",{className:"mx_MemberList"},o,s.default.createElement(n,{autoshow:!0,className:"mx_MemberList_joined"},s.default.createElement(t,{className:"mx_MemberList_wrapper",truncateAt:this.state.truncateAtJoined,createOverflowElement:this._createOverflowTileJoined,getChildren:this._getChildrenJoined,getChildCount:this._getChildCountJoined}),r))}})},function(e,t,n){"use strict";var r=a(n(37)),o=a(n(1)),i=n(2);function a(e){return e&&e.__esModule?e:{default:e}}var s=n(0),l=(n(8),n(3)),u=n(10);n(16);e.exports=s.createClass({displayName:"MemberTile",propTypes:{member:o.default.any.isRequired,showPresence:o.default.bool},getDefaultProps:function(){return{showPresence:!0}},getInitialState:function(){return{}},shouldComponentUpdate:function(e,t){return void 0===this.member_last_modified_time||this.member_last_modified_time<e.member.getLastModifiedTime()||!(!e.member.user||!(void 0===this.user_last_modified_time||this.user_last_modified_time<e.member.user.getLastModifiedTime()))},onClick:function(e){u.dispatch({action:"view_user",member:this.props.member})},_getDisplayName:function(){return this.props.member.name},getPowerLabel:function(){return(0,i._t)("%(userName)s (power %(powerLevelNumber)s)",{userName:this.props.member.userId,powerLevelNumber:this.props.member.powerLevel})},render:function(){var e=l.getComponent("avatars.MemberAvatar"),t=(l.getComponent("avatars.BaseAvatar"),l.getComponent("rooms.EntityTile")),n=this.props.member,o=this._getDisplayName(),i=n.user?n.user.presence:null,a=s.createElement(e,{member:n,width:36,height:36});n.user&&(this.user_last_modified_time=n.user.getLastModifiedTime()),this.member_last_modified_time=n.getLastModifiedTime();var u={100:t.POWER_STATUS_ADMIN,50:t.POWER_STATUS_MODERATOR}[this.props.member.powerLevel];return s.createElement(t,(0,r.default)({},this.props,{presenceState:i,presenceLastActiveAgo:n.user?n.user.lastActiveAgo:0,presenceLastTs:n.user?n.user.lastPresenceTs:0,presenceCurrentlyActive:!!n.user&&n.user.currentlyActive,avatarJsx:a,title:this.getPowerLabel(),onClick:this.onClick,name:o,powerStatus:u,showPresence:this.props.showPresence}))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=E(n(11)),o=E(n(4)),i=E(n(5)),a=E(n(12)),s=E(n(13)),l=E(n(0)),u=E(n(1)),c=n(2),f=E(n(127)),d=E(n(8)),p=E(n(16)),m=E(n(3)),h=E(n(10)),_=E(n(104)),g=n(22),v=E(g),y=E(n(708)),b=n(79);function E(e){return e&&e.__esModule?e:{default:e}}var C=[(0,c._td)("bold"),(0,c._td)("italic"),(0,c._td)("deleted"),(0,c._td)("underlined"),(0,c._td)("inline-code"),(0,c._td)("block-quote"),(0,c._td)("bulleted-list"),(0,c._td)("numbered-list")],S=function(e){function t(e,n){(0,o.default)(this,t);var i=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this,e,n));return i.onCallClick=i.onCallClick.bind(i),i.onHangupClick=i.onHangupClick.bind(i),i.onUploadClick=i.onUploadClick.bind(i),i.onUploadFileSelected=i.onUploadFileSelected.bind(i),i.uploadFiles=i.uploadFiles.bind(i),i.onVoiceCallClick=i.onVoiceCallClick.bind(i),i._onAutocompleteConfirm=i._onAutocompleteConfirm.bind(i),i.onToggleFormattingClicked=i.onToggleFormattingClicked.bind(i),i.onToggleMarkdownClicked=i.onToggleMarkdownClicked.bind(i),i.onInputStateChanged=i.onInputStateChanged.bind(i),i.onEvent=i.onEvent.bind(i),i._onRoomStateEvents=i._onRoomStateEvents.bind(i),i._onRoomViewStoreUpdate=i._onRoomViewStoreUpdate.bind(i),i._onTombstoneClick=i._onTombstoneClick.bind(i),i.state={inputState:{marks:[],blockType:null,isRichTextEnabled:v.default.getValue("MessageComposerInput.isRichTextEnabled")},showFormatting:v.default.getValue("MessageComposer.showFormatting"),isQuoting:Boolean(_.default.getQuotingEvent()),tombstone:i._getRoomTombstone()},i}return(0,s.default)(t,e),(0,i.default)(t,[{key:"componentDidMount",value:function(){d.default.get().on("event",this.onEvent),d.default.get().on("RoomState.events",this._onRoomStateEvents),this._roomStoreToken=_.default.addListener(this._onRoomViewStoreUpdate),this._waitForOwnMember()}},{key:"_waitForOwnMember",value:function(){var e=this,t=this.props.room.getMember(d.default.get().getUserId());t?this.setState({me:t}):this.props.room.loadMembersIfNeeded().then(function(){var t=e.props.room.getMember(d.default.get().getUserId());e.setState({me:t})})}},{key:"componentWillUnmount",value:function(){d.default.get()&&(d.default.get().removeListener("event",this.onEvent),d.default.get().removeListener("RoomState.events",this._onRoomStateEvents)),this._roomStoreToken&&this._roomStoreToken.remove()}},{key:"onEvent",value:function(e){"m.room.encryption"===e.getType()&&e.getRoomId()===this.props.room.roomId&&this.forceUpdate()}},{key:"_onRoomStateEvents",value:function(e,t){e.getRoomId()===this.props.room.roomId&&"m.room.tombstone"===e.getType()&&this.setState({tombstone:this._getRoomTombstone()})}},{key:"_getRoomTombstone",value:function(){return this.props.room.currentState.getStateEvents("m.room.tombstone","")}},{key:"_onRoomViewStoreUpdate",value:function(){var e=Boolean(_.default.getQuotingEvent());this.state.isQuoting!==e&&this.setState({isQuoting:e})}},{key:"onUploadClick",value:function(e){d.default.get().isGuest()?h.default.dispatch({action:"require_registration"}):this.refs.uploadInput.click()}},{key:"onUploadFileSelected",value:function(e){this.uploadFiles(e.target.files)}},{key:"uploadFiles",value:function(e){for(var t=this,n=m.default.getComponent("dialogs.QuestionDialog"),r=m.default.getComponent("elements.TintableSvg"),o=[],i=0;i<e.length;i++)o.push(l.default.createElement("li",{key:i},l.default.createElement(r,{key:i,src:"img/files.svg",width:"16",height:"16"})," ",e[i].name||(0,c._t)("Attachment")));var a=null;Boolean(_.default.getQuotingEvent())&&(a=l.default.createElement("p",null,(0,c._t)("At this time it is not possible to reply with a file so this will be sent without being a reply."))),p.default.createTrackedDialog("Upload Files confirmation","",n,{title:(0,c._t)("Upload Files"),description:l.default.createElement("div",null,l.default.createElement("p",null,(0,c._t)("Are you sure you want to upload the following files?")),l.default.createElement("ul",{style:{listStyle:"none",textAlign:"left"}},o),a),onFinished:function(n){if(n&&e)for(var r=0;r<e.length;r++)t.props.uploadFile(e[r]);t.refs.uploadInput.value=null}})}},{key:"onHangupClick",value:function(){var e=f.default.getCallForRoom(this.props.room.roomId);e&&h.default.dispatch({action:"hangup",room_id:e.roomId})}},{key:"onCallClick",value:function(e){h.default.dispatch({action:"place_call",type:e.shiftKey?"screensharing":"video",room_id:this.props.room.roomId})}},{key:"onVoiceCallClick",value:function(e){h.default.dispatch({action:"place_call",type:"voice",room_id:this.props.room.roomId})}},{key:"onInputStateChanged",value:function(e){this.setState({inputState:e})}},{key:"_onAutocompleteConfirm",value:function(e,t){this.messageComposerInput&&this.messageComposerInput.setDisplayedCompletion(e,t)}},{key:"onFormatButtonClicked",value:function(e,t){t.preventDefault(),this.messageComposerInput.onFormatButtonClicked(e,t)}},{key:"onToggleFormattingClicked",value:function(){v.default.setValue("MessageComposer.showFormatting",null,g.SettingLevel.DEVICE,!this.state.showFormatting),this.setState({showFormatting:!this.state.showFormatting})}},{key:"onToggleMarkdownClicked",value:function(e){e.preventDefault(),this.messageComposerInput.enableRichtext(!this.state.inputState.isRichTextEnabled)}},{key:"_onTombstoneClick",value:function(e){e.preventDefault();var t=this.state.tombstone.getContent().replacement_room;h.default.dispatch({action:"view_room",highlighted:!0,room_id:t})}},{key:"render",value:function(){var e=this,t=m.default.getComponent("avatars.MemberAvatar"),n=m.default.getComponent("elements.TintableSvg"),r=m.default.getComponent("rooms.MessageComposerInput"),o=[];this.state.me&&o.push(l.default.createElement("div",{key:"controls_avatar",className:"mx_MessageComposer_avatar"},l.default.createElement(t,{member:this.state.me,width:24,height:24})));var i=void 0,a=void 0,s=void 0,u=d.default.get().isRoomEncrypted(this.props.room.roomId);u?(i="img/e2e-verified.svg",a=(0,c._t)("Encrypted room"),s="mx_MessageComposer_e2eIcon"):(i="img/e2e-unencrypted.svg",a=(0,c._t)("Unencrypted room"),s="mx_MessageComposer_e2eIcon mx_filterFlipColor"),o.push(l.default.createElement("img",{key:"e2eIcon",className:s,src:i,width:"12",height:"12",alt:a,title:a}));var f=void 0,p=void 0,h=void 0,_=m.default.getComponent("elements.AccessibleButton");if(this.props.callState&&"ended"!==this.props.callState?h=l.default.createElement(_,{key:"controls_hangup",className:"mx_MessageComposer_hangup",onClick:this.onHangupClick},l.default.createElement("img",{src:"img/hangup.svg",alt:(0,c._t)("Hangup"),title:(0,c._t)("Hangup"),width:"25",height:"26"})):(f=l.default.createElement(_,{key:"controls_call",className:"mx_MessageComposer_voicecall",onClick:this.onVoiceCallClick,title:(0,c._t)("Voice call")},l.default.createElement(n,{src:"img/icon-call.svg",width:"35",height:"35"})),p=l.default.createElement(_,{key:"controls_videocall",className:"mx_MessageComposer_videocall",onClick:this.onCallClick,title:(0,c._t)("Video call")},l.default.createElement(n,{src:"img/icons-video.svg",width:"35",height:"35"}))),!this.state.tombstone&&this.props.room.maySendMessage()){var g=l.default.createElement(_,{key:"controls_upload",className:"mx_MessageComposer_upload",onClick:this.onUploadClick,title:(0,c._t)("Upload file")},l.default.createElement(n,{src:"img/icons-upload.svg",width:"35",height:"35"}),l.default.createElement("input",{ref:"uploadInput",type:"file",style:{display:"none"},multiple:!0,onChange:this.onUploadFileSelected})),v=this.state.inputState.isRichTextEnabled?l.default.createElement(_,{element:"img",className:"mx_MessageComposer_formatting",alt:(0,c._t)("Show Text Formatting Toolbar"),title:(0,c._t)("Show Text Formatting Toolbar"),src:"img/button-text-formatting.svg",onClick:this.onToggleFormattingClicked,style:{visibility:this.state.showFormatting?"hidden":"visible"},key:"controls_formatting"}):null,E=void 0;E=this.state.isQuoting?u?(0,c._t)("Send an encrypted reply…"):(0,c._t)("Send a reply (unencrypted)…"):u?(0,c._t)("Send an encrypted message…"):(0,c._t)("Send a message (unencrypted)…");var S=l.default.createElement(y.default,{key:"stickerpicker_controls_button",room:this.props.room});o.push(l.default.createElement(r,{ref:function(t){return e.messageComposerInput=t},key:"controls_input",onResize:this.props.onResize,room:this.props.room,placeholder:E,onFilesPasted:this.uploadFiles,onInputStateChanged:this.onInputStateChanged}),v,S,g,h,f,p)}else if(this.state.tombstone){var D=this.state.tombstone.getContent().replacement_room;o.push(l.default.createElement("div",{className:"mx_MessageComposer_replaced_wrapper"},l.default.createElement("div",{className:"mx_MessageComposer_replaced_valign"},l.default.createElement("img",{className:"mx_MessageComposer_roomReplaced_icon",src:"img/room_replaced.svg"}),l.default.createElement("span",{className:"mx_MessageComposer_roomReplaced_header"},(0,c._t)("This room has been replaced and is no longer active.")),l.default.createElement("br",null),l.default.createElement("a",{href:(0,b.makeRoomPermalink)(D),className:"mx_MessageComposer_roomReplaced_link",onClick:this._onTombstoneClick},(0,c._t)("The conversation continues here.")))))}else o.push(l.default.createElement("div",{key:"controls_error",className:"mx_MessageComposer_noperm_error"},(0,c._t)("You do not have permission to post to this room")));var w=void 0;if(this.state.showFormatting&&this.state.inputState.isRichTextEnabled){var T=this.state.inputState,x=T.marks,R=T.blockType,k=C.map(function(t){var n="inline-code"===t?"code":t,r=x.some(function(e){return e.type===n})||R===t?"-on":"",o=e.onFormatButtonClicked.bind(e,t);return l.default.createElement("img",{className:"mx_MessageComposer_format_button mx_filterFlipColor",title:(0,c._t)(t),onMouseDown:o,key:t,src:"img/button-text-"+t+r+".svg",height:"17"})});w=l.default.createElement("div",{className:"mx_MessageComposer_formatbar_wrapper"},l.default.createElement("div",{className:"mx_MessageComposer_formatbar"},k,l.default.createElement("div",{style:{flex:1}}),l.default.createElement("img",{title:this.state.inputState.isRichTextEnabled?(0,c._t)("Turn Markdown on"):(0,c._t)("Turn Markdown off"),onMouseDown:this.onToggleMarkdownClicked,className:"mx_MessageComposer_formatbar_markdown mx_filterFlipColor",src:"img/button-md-"+!this.state.inputState.isRichTextEnabled+".png"}),l.default.createElement(_,{element:"img",title:(0,c._t)("Hide Text Formatting Toolbar"),onClick:this.onToggleFormattingClicked,className:"mx_MessageComposer_formatbar_cancel mx_filterFlipColor",src:"img/icon-text-cancel.svg"})))}return l.default.createElement("div",{className:"mx_MessageComposer"},l.default.createElement("div",{className:"mx_MessageComposer_wrapper"},l.default.createElement("div",{className:"mx_MessageComposer_row"},o)),w)}}]),t}(l.default.Component);t.default=S,S.propTypes={onResize:u.default.func,room:u.default.object.isRequired,callState:u.default.string,uploadFile:u.default.func.isRequired,showApps:u.default.bool},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=K(n(37)),o=K(n(625)),i=K(n(19)),a=n(9),s=(K(a),K(n(40))),l=K(n(47)),u=K(n(11)),c=K(n(4)),f=K(n(5)),d=K(n(12)),p=K(n(13)),m=K(n(14)),h=K(n(0)),_=(K(n(41)),K(n(1))),g=n(1883),v=n(21),y=K(n(1816)),b=K(n(1820)),E=K(n(320)),C=K(n(1822)),S=K(n(24)),D=K(n(8)),w=n(705),T=n(80),x=K(n(16)),R=K(n(3)),k=n(2),N=K(n(90)),I=K(n(10)),O=W(n(1823)),A=W(n(240)),M=K(n(693)),P=(n(701),K(n(1824))),L=K(n(1835)),F=K(n(1838)),U=n(129),j=n(299),B=n(22),G=K(B),q=n(79),V=K(n(716)),H=K(n(104)),Y=K(n(241)),z=n(17);function W(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function K(e){return e&&e.__esModule?e:{default:e}}new RegExp(U.MATRIXTO_MD_LINK_PATTERN,"g"),(0,m.default)(j.emojioneList);var $=(0,j.mapUnicodeToShort)(),Q=new RegExp("(?:^|\\s)("+j.asciiRegexp+")\\s$"),X=new RegExp(j.unicodeRegexp,"g"),J={p:"paragraph",blockquote:"block-quote",ul:"bulleted-list",h1:"heading1",h2:"heading2",h3:"heading3",h4:"heading4",h5:"heading5",h6:"heading6",li:"list-item",ol:"numbered-list",pre:"code"},Z={strong:"bold",b:"bold",em:"italic",i:"italic",code:"code",u:"underlined",del:"deleted",strike:"deleted",s:"deleted"},ee={inlines:{pill:{isVoid:!0},emoji:{isVoid:!0}}};var te=function(e){function t(e,n){(0,c.default)(this,t);var r=(0,d.default)(this,(t.__proto__||(0,u.default)(t)).call(this,e,n));ne.call(r);var o=G.default.getValue("MessageComposerInput.isRichTextEnabled");N.default.setRichtextMode(o),r.client=D.default.get(),r.suppressAutoComplete=!1,r.direction="",r.plainWithMdPills=new C.default({pillFormat:"md"}),r.plainWithIdPills=new C.default({pillFormat:"id"}),r.plainWithPlainPills=new C.default({pillFormat:"plain"}),r.md=new b.default({rules:[{serialize:function(e,t){if("inline"===e.object)switch(e.type){case"pill":return"["+e.data.get("completion")+"]("+e.data.get("href")+")";case"emoji":return e.data.get("emojiUnicode")}}},{serialize:function(e,t){if("mark"===e.object)switch(e.type){case"underlined":return"<u>"+t+"</u>";case"deleted":return"<del>"+t+"</del>";case"code":return"`"+t.split("\\").map(function(e){return e||"\\"}).join("")+"`"}}}]}),r.html=new y.default({rules:[{deserialize:function(e,t){var n=e.tagName.toLowerCase(),r=J[n];if(r)return{object:"block",type:r,nodes:t(e.childNodes)};if(r=Z[n])return{object:"mark",type:r,nodes:t(e.childNodes)};if("a"===n){var o=e.getAttribute("href"),i=void 0;return o&&(i=o.match(U.MATRIXTO_URL_PATTERN)),i?{object:"inline",type:"pill",data:{href:o,completion:e.innerText,completionId:i[1]}}:{object:"inline",type:"link",data:{href:o},nodes:t(e.childNodes)}}},serialize:function(e,t){if("block"===e.object)return r.renderNode({node:e,children:t});if("mark"===e.object)return r.renderMark({mark:e,children:t});if("inline"===e.object){switch(e.type){case"pill":return h.default.createElement("a",{href:e.data.get("href")},e.data.get("completion"));case"link":return h.default.createElement("a",{href:e.data.get("href")},t);case"emoji":return h.default.createElement("b",null,e.data.get("emojiUnicode"))}return r.renderNode({node:e,children:t})}}}]});var i=F.default.getEditorState(r.props.room.roomId);return r.state={isRichTextEnabled:o,editorState:r.createEditorState(o,i?i.editor_state:void 0,i?i.rich_text:void 0),originalEditorState:null,currentlyComposedEditorState:null,someCompletions:null},r}return(0,p.default)(t,e),(0,f.default)(t,[{key:"createEditorState",value:function(e,t,n){return t instanceof v.Value?e&&!n?this.mdToRichEditorState(t):n&&!e?this.richToMdEditorState(t):t:E.default.deserialize("",{defaultBlock:"paragraph"}).change().focus().value}},{key:"componentWillMount",value:function(){this.dispatcherRef=I.default.register(this.onAction),this.historyManager=new L.default(this.props.room.roomId,"mx_slate_composer_history_")}},{key:"componentWillUnmount",value:function(){I.default.unregister(this.dispatcherRef)}},{key:"onTypingActivity",value:function(){this.isTyping=!0,this.userTypingTimer||this.sendTyping(!0),this.startUserTypingTimer(),this.startServerTypingTimer()}},{key:"onFinishedTyping",value:function(){this.isTyping=!1,this.sendTyping(!1),this.stopUserTypingTimer(),this.stopServerTypingTimer()}},{key:"startUserTypingTimer",value:function(){this.stopUserTypingTimer();var e=this;this.userTypingTimer=setTimeout(function(){e.isTyping=!1,e.sendTyping(e.isTyping),e.userTypingTimer=null},1e4)}},{key:"stopUserTypingTimer",value:function(){this.userTypingTimer&&(clearTimeout(this.userTypingTimer),this.userTypingTimer=null)}},{key:"startServerTypingTimer",value:function(){if(!this.serverTypingTimer){var e=this;this.serverTypingTimer=setTimeout(function(){e.isTyping&&(e.sendTyping(e.isTyping),e.startServerTypingTimer())},15e3)}}},{key:"stopServerTypingTimer",value:function(){this.serverTypingTimer&&(clearTimeout(this.serverTypingTimer),this.serverTypingTimer=null)}},{key:"sendTyping",value:function(e){G.default.getValue("dontSendTypingNotifications")||D.default.get().sendTyping(this.props.room.roomId,this.isTyping,3e4).done()}},{key:"refreshTyping",value:function(){this.typingTimeout&&(clearTimeout(this.typingTimeout),this.typingTimeout=null)}},{key:"mdToRichEditorState",value:function(e){var t=this.plainWithMdPills.serialize(e),n=new P.default(t);return this.html.deserialize(n.toHTML())}},{key:"richToMdEditorState",value:function(e){return E.default.deserialize(this.md.serialize(e),{defaultBlock:"paragraph"})}},{key:"enableRichtext",value:function(e){var t=this;if(e!==this.state.isRichTextEnabled){var n=null;n=e?this.mdToRichEditorState(this.state.editorState):this.richToMdEditorState(this.state.editorState),N.default.setRichtextMode(e),this.setState({editorState:this.createEditorState(e,n),isRichTextEnabled:e},function(){t._editor.focus()}),G.default.setValue("MessageComposerInput.isRichTextEnabled",null,B.SettingLevel.ACCOUNT,e)}}},{key:"getAutocompleteQuery",value:function(e){return e.selection.anchor.key?e.document.getDescendant(e.selection.anchor.key).text:""}},{key:"getSelectionRange",value:function(e){this.getAutocompleteQuery(e);var t=e.document.nodes.get(0),n=t&&t.nodes.get(0),r={beginning:t&&n&&"block"===t.object&&"text"===n.object&&e.selection.anchor.key===n.key,start:e.selection.anchor.offset,end:e.selection.anchor.key==e.selection.focus.key?e.selection.focus.offset:e.selection.anchor.offset};if(r.start>r.end){var o=r.start;r.start=r.end,r.end=o}return r}},{key:"render",value:function(){var e=this,t=this.state.originalEditorState||this.state.editorState,n=(0,S.default)("mx_MessageComposer_input",{mx_MessageComposer_input_error:!1===this.state.someCompletions}),r=""===E.default.serialize(this.state.editorState),o=this.props.placeholder;return r&&this.state.editorState.startBlock&&"paragraph"!==this.state.editorState.startBlock.type&&(o=void 0),h.default.createElement("div",{className:"mx_MessageComposer_input_wrapper",onClick:this.focusComposer},h.default.createElement("div",{className:"mx_MessageComposer_autocomplete_wrapper"},h.default.createElement(V.default,null),h.default.createElement(M.default,{ref:function(t){return e.autocomplete=t},room:this.props.room,onConfirm:this.onAutocompleteConfirm,onSelectionChange:this.setDisplayedCompletion,query:this.suppressAutoComplete?"":this.getAutocompleteQuery(t),selection:this.getSelectionRange(t)})),h.default.createElement("div",{className:n},h.default.createElement("img",{className:"mx_MessageComposer_input_markdownIndicator mx_filterFlipColor",onMouseDown:this.onMarkdownToggleClicked,title:this.state.isRichTextEnabled?(0,k._t)("Markdown is disabled"):(0,k._t)("Markdown is enabled"),src:"img/button-md-"+!this.state.isRichTextEnabled+".png"}),h.default.createElement(g.Editor,{ref:this._collectEditor,dir:"auto",className:"mx_MessageComposer_editor",placeholder:o,value:this.state.editorState,onChange:this.onChange,onKeyDown:this.onKeyDown,onPaste:this.onPaste,renderNode:this.renderNode,renderMark:this.renderMark,spellCheck:!r,schema:ee})))}}]),t}(h.default.Component);te.propTypes={onResize:_.default.func,room:_.default.object.isRequired,onFilesPasted:_.default.func,onInputStateChanged:_.default.func};var ne=function(){var e=this;this._collectEditor=function(t){e._editor=t},this.onAction=function(t){e._editor;var n=e.state.editorState;switch(t.action){case"reply_to_event":case"focus_composer":e.focusComposer();break;case"insert_mention":var r=e.getSelectionRange(e.state.editorState),o=e.props.room.getMember(t.user_id),i=o?o.rawDisplayName:t.user_id;e.setDisplayedCompletion({completion:i,completionId:t.user_id,selection:r,href:(0,q.makeUserPermalink)(t.user_id),suffix:r.beginning&&0===r.start?": ":" "});break;case"quote":var a=A.bodyToHtml(t.event.getContent(),null,{forComposerQuote:!0,returnString:!0,emojiOne:!1}),s=e.html.deserialize(a),l=v.Block.create("block-quote");if(e.state.isRichTextEnabled){var u=n.change(),c=n.anchorText;u=c&&""!==c.text||1!==n.anchorBlock.nodes.size?u.insertBlock(l):u.replaceNodeByKey(n.anchorBlock.key,l),u=(u=s.document.nodes.size&&"paragraph"===s.document.nodes.get(0).type?u.insertFragmentByKey(l.key,0,s.document.nodes.get(0)):u.insertFragmentByKey(l.key,0,s.document)).select(v.Range.create({anchor:{key:l.key},focus:{key:l.key}})).moveToEndOfBlock().insertBlock(v.Block.create("paragraph")).focus(),e.onChange(u)}else{var f=s.change();f.moveToRangeOfNode(s.document).wrapBlock(l);var d=e.md.serialize(f.value),p=n.change().insertText(d+"\n\n").focus();e.onChange(p)}}},this.onChange=function(t,n){var r=t.value;if(""!==e.direction){var o=r.focusInline||r.focusText;if(r.schema.isVoid(o)){var i="Previous"===e.direction?"End":"Start";if(r.selection.isCollapsed)t=t["moveTo"+i+"Of"+e.direction+"Text"]();else{var a="Previous"===e.direction?r.previousText:r.nextText;a&&(t=t["moveFocusTo"+i+"OfNode"](a))}r=t.value}}if(e.autocomplete.state.completionList.length>0&&!e.autocomplete.state.hide&&!function(e,t){return e.anchor.key===t.anchor.key&&e.anchor.offset===t.anchorOffset&&e.focus.key===t.focusKey&&e.focus.offset===t.focusOffset&&e.isFocused===t.isFocused&&e.isBackward===t.isBackward}(e.state.editorState.selection,r.selection)&&e.state.editorState.document.toJSON()===r.document.toJSON()&&e.autocomplete.hide(),""!==E.default.serialize(r)?e.onTypingActivity():e.onFinishedTyping(),null!==r.startText){var s=r.startText.text,l=r.selection.start.offset;if(G.default.getValue("MessageComposerInput.autoReplaceEmoji")){var u=Q.exec(s.slice(0,l));if(u){var c=j.asciiList[u[1]],f=(0,j.shortnameToUnicode)($[c]),d=v.Range.create({anchor:{key:r.startText.key,offset:l-u[1].length-1},focus:{key:r.startText.key,offset:l-1}});t=t.insertTextAtRange(d,f),r=t.value}}}if(r.document.getTexts().forEach(function(e){if(""!==e.text&&A.containsEmoji(e.text))for(var n=void 0;null!==(n=X.exec(e.text));){var o=v.Range.create({anchor:{key:e.key,offset:n.index},focus:{key:e.key,offset:n.index+n[0].length}}),i=v.Inline.create({type:"emoji",data:{emojiUnicode:n[0]}});t=t.insertInlineAtRange(o,i),r=t.value}}),r.selection.anchor.key&&"emoji"===r.document.getParent(r.selection.anchor.key).type&&(t=t.moveToStartOfNextText(),r=t.value),e.props.onInputStateChanged&&r.blocks.size>0){var p=r.blocks.first().type;if("list-item"===p){var m=r.document.getParent(r.blocks.first().key);"numbered-list"===m.type?p="numbered-list":"bulleted-list"===m.type&&(p="bulleted-list")}var h={marks:r.activeMarks,isRichTextEnabled:e.state.isRichTextEnabled,blockType:p};e.props.onInputStateChanged(h)}F.default.setEditorState(e.props.room.roomId,r,e.state.isRichTextEnabled),e.setState({editorState:r,originalEditorState:n||null})},this.hasMark=function(t){return e.state.editorState.activeMarks.some(function(e){return e.type===t})},this.hasBlock=function(t){return e.state.editorState.blocks.some(function(e){return e.type===t})},this.onKeyDown=function(t,n,r){switch(e.suppressAutoComplete=!1,t.keyCode===T.KeyCode.LEFT?e.direction="Previous":t.keyCode===T.KeyCode.RIGHT?e.direction="Next":e.direction="",t.keyCode){case T.KeyCode.ENTER:return e.handleReturn(t,n);case T.KeyCode.BACKSPACE:return e.onBackspace(t,n);case T.KeyCode.UP:return e.onVerticalArrow(t,!0);case T.KeyCode.DOWN:return e.onVerticalArrow(t,!1);case T.KeyCode.TAB:return e.onTab(t);case T.KeyCode.ESCAPE:return e.onEscape(t);case T.KeyCode.SPACE:return e.onSpace(t,n)}if((0,T.isOnlyCtrlOrCmdKeyEvent)(t)){var o,i=(o={},(0,l.default)(o,T.KeyCode.KEY_M,"toggle-mode"),(0,l.default)(o,T.KeyCode.KEY_B,"bold"),(0,l.default)(o,T.KeyCode.KEY_I,"italic"),(0,l.default)(o,T.KeyCode.KEY_U,"underlined"),(0,l.default)(o,T.KeyCode.KEY_J,"inline-code"),o)[t.keyCode];if(i)return t.preventDefault(),e.handleKeyCommand(i)}},this.onSpace=function(e,t){if(!(e.metaKey||e.altKey||e.shiftKey||e.ctrlKey))return e.preventDefault(),t.withoutMerging(function(){t.insertText(e.key)})},this.onBackspace=function(t,n){if(!(t.metaKey||t.altKey||t.shiftKey)){var r=e.state.editorState;if(e.state.isRichTextEnabled){if(e.hasBlock("list-item")&&0==r.selection.anchor.offset)return n.setBlocks("paragraph").unwrapBlock("bulleted-list").unwrapBlock("numbered-list"),n;if(0==r.selection.anchor.offset&&r.isCollapsed){if(e.hasBlock("block-quote")||e.hasBlock("heading1")||e.hasBlock("heading2")||e.hasBlock("heading3")||e.hasBlock("heading4")||e.hasBlock("heading5")||e.hasBlock("heading6")||e.hasBlock("code"))return n.setBlocks("paragraph");var o=r.document.getParent(r.anchorBlock.key);if(0==r.selection.anchor.offset&&e.hasBlock("paragraph")&&1==o.nodes.size&&"document"!==o.object)return n.replaceNodeByKey(r.anchorBlock.key,r.anchorText).moveToEndOfNode(o).focus()}}}},this.handleKeyCommand=function(t){if("toggle-mode"===t)return e.enableRichtext(!e.state.isRichTextEnabled),!0;if(e.state.isRichTextEnabled){var n=t,r=e.state.editorState,o=r.change(),i=r.document;switch(n){case"bulleted-list":case"numbered-list":var a=e.hasBlock("list-item"),s=r.blocks.some(function(e){return!!i.getClosest(e.key,function(e){return e.type===n})});a&&s?o.setBlocks("paragraph").unwrapBlock("bulleted-list").unwrapBlock("numbered-list"):a?o.unwrapBlock("bulleted-list"===n?"numbered-list":"bulleted-list").wrapBlock(n):o.setBlocks("list-item").wrapBlock(n);break;case"paragraph":case"block-quote":case"heading1":case"heading2":case"heading3":case"heading4":case"heading5":case"heading6":case"list-item":case"code":var l=e.hasBlock(n);e.hasBlock("list-item")?o.setBlocks(l?"paragraph":n).unwrapBlock("bulleted-list").unwrapBlock("numbered-list"):o.setBlocks(l?"paragraph":n);break;case"bold":case"italic":case"inline-code":case"underlined":case"deleted":o.toggleMark("inline-code"===n?"code":n);break;default:return console.warn("ignoring unrecognised RTE command "+n),!1}return e.onChange(o),!0}return!1},this.onPaste=function(t,n,r){var o=(0,g.getEventTransfer)(t);switch(o.type){case"files":return e.props.onFilesPasted(o.files);case"html":if(e.state.isRichTextEnabled){var i=e.html.deserialize(o.html);return n.insertFragment(i.document)}return n.withoutMerging(function(){n.insertText(o.text)});case"text":return n.withoutMerging(function(){n.insertText(o.text)})}},this.handleReturn=function(t,n){if(t.shiftKey)return n.insertText("\n");var r=e.state.editorState,o=r.blocks.last();if(["code","block-quote","list-item"].includes(o.type))return""===o.text?n.setBlocks("paragraph").unwrapBlock("bulleted-list").unwrapBlock("numbered-list"):void 0;var i=void 0,a=void 0,l=void 0,u=void 0,c=r.document.nodes.get(0),f=c&&c.nodes.get(0);if(c&&f&&"block"===c.object&&"text"===f.object&&"/"===f.text[0]&&(u=e.plainWithIdPills.serialize(r),l=(0,w.processCommandInput)(e.props.room.roomId,u)),l){if(l.error||(e.historyManager.save(r,e.state.isRichTextEnabled?"rich":"markdown"),e.setState({editorState:e.createEditorState()},function(){e._editor.focus()})),l.promise)l.promise.then(function(){console.log("Command success.")},function(e){console.error("Command failure: %s",e);var t=R.default.getComponent("dialogs.ErrorDialog");x.default.createTrackedDialog("Server error","",t,{title:(0,k._t)("Server error"),description:e&&e.message?e.message:(0,k._t)("Server unavailable, overloaded, or something else went wrong.")})});else if(l.error){console.error(l.error);var d=R.default.getComponent("dialogs.ErrorDialog");x.default.createTrackedDialog("Command error","",d,{title:(0,k._t)("Command error"),description:l.error})}return!0}var p=H.default.getQuotingEvent(),m=Boolean(p);if(e.state.isRichTextEnabled){var h=!1;if(m&&(h=!0),h||(h=!!r.document.findDescendant(function(e){return"block"===e.object&&"paragraph"!==e.type||"inline"===e.object||"text"===e.object&&e.getMarks().size>0})),""===(i=e.plainWithPlainPills.serialize(r)))return!0;h&&(a=A.processHtmlForSending(e.html.serialize(r)))}else{var _=e.plainWithMdPills.serialize(r);if(""===_)return!0;var g=new P.default(_);g.isPlainText()&&!m?i=g.toPlaintext():(i=e.plainWithPlainPills.serialize(r),a=g.toHTML())}var v=z.ContentHelpers.makeHtmlMessage,y=z.ContentHelpers.makeTextMessage;if(e.historyManager.save(r,e.state.isRichTextEnabled?"rich":"markdown"),u&&u.startsWith("/me")){if(p){var b=R.default.getComponent("dialogs.ErrorDialog");return x.default.createTrackedDialog("Emote Reply Fail","",b,{title:(0,k._t)("Unable to reply"),description:(0,k._t)("At this time it is not possible to reply with an emote.")}),!1}i=i.substring(4),a&&(a=a.replace(/\/me ?/,"")),v=z.ContentHelpers.makeHtmlEmote,y=z.ContentHelpers.makeEmoteMessage}var E=a?v(i,a):y(i);if(p){var C=Y.default.makeReplyMixIn(p);E=(0,s.default)(C,E);var S=Y.default.getNestedReplyText(p);S&&(E.formatted_body&&(E.formatted_body=S.html+E.formatted_body),E.body=S.body+E.body),I.default.dispatch({action:"reply_to_event",event:null})}return e.client.sendMessage(e.props.room.roomId,E).then(function(e){I.default.dispatch({action:"message_sent"})}).catch(function(t){!function(e,t){console.log("MessageComposer got send failure: "+e.name+"("+e+")"),I.default.dispatch({action:"message_send_failed"})}(t,e.props.room)}),e.setState({editorState:e.createEditorState()},function(){e._editor.focus()}),!0},this.onVerticalArrow=function(t,n){if(!(t.ctrlKey||t.shiftKey||t.altKey||t.metaKey))if(0===e.autocomplete.state.completionList.length){var r=e.state.editorState.selection;if(!r.isCollapsed)return;var o=e.state.editorState.document;if(n){if(!r.anchor.isAtStartOfNode(o))return}else if(!r.anchor.isAtEndOfNode(o))return;e.selectHistory(n)&&t.preventDefault()}else e.moveAutocompleteSelection(n),t.preventDefault()},this.selectHistory=function(){var t=(0,a.method)(function(t){var n=t?-1:1;if(e.historyManager.currentIndex===e.historyManager.history.length){if(!t)return;e.setState({currentlyComposedEditorState:e.state.editorState})}else if(e.historyManager.currentIndex+n===e.historyManager.history.length)return e.setState({editorState:e.state.currentlyComposedEditorState}),void(e.historyManager.currentIndex=e.historyManager.history.length);var r=void 0,o=e.historyManager.getItem(n);if(o)return r=(r="rich"!==o.format||e.state.isRichTextEnabled?"markdown"===o.format&&e.state.isRichTextEnabled?e.mdToRichEditorState(o.value):o.value:e.richToMdEditorState(o.value)).change().moveToEndOfNode(r.document).value,e.suppressAutoComplete=!0,e.setState({editorState:r},function(){e._editor.focus()}),!0});return function(e){return t.apply(this,arguments)}}(),this.onTab=function(){var t=(0,a.coroutine)(i.default.mark(function t(n){var r;return i.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(e.setState({someCompletions:null}),n.preventDefault(),0!==e.autocomplete.state.completionList.length){t.next=11;break}return t.next=5,(0,a.resolve)(e.autocomplete.forceComplete());case 5:return r=t.sent,e.setState({someCompletions:r>0}),t.next=9,(0,a.resolve)(e.moveAutocompleteSelection(!1));case 9:t.next=13;break;case 11:return t.next=13,(0,a.resolve)(e.moveAutocompleteSelection(n.shiftKey));case 13:case"end":return t.stop()}},t,e)}));return function(e){return t.apply(this,arguments)}}(),this.moveAutocompleteSelection=function(t){t?e.autocomplete.onUpArrow():e.autocomplete.onDownArrow()},this.onEscape=function(){var t=(0,a.coroutine)(i.default.mark(function t(n){return i.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n.preventDefault(),e.autocomplete&&e.autocomplete.onEscape(n),t.next=4,(0,a.resolve)(e.setDisplayedCompletion(null));case 4:case"end":return t.stop()}},t,e)}));return function(e){return t.apply(this,arguments)}}(),this.onAutocompleteConfirm=function(t){e.focusComposer(),(0,o.default)(function(){e.setDisplayedCompletion(t)})},this.setDisplayedCompletion=function(){var t=(0,a.method)(function(t){var n=e.state.originalEditorState||e.state.editorState;if(null==t){if(e.state.originalEditorState){var r=e.state.originalEditorState;e.setState({editorState:r})}return!1}var o=t.range,i=void 0===o?null:o,a=t.completion,s=void 0===a?"":a,l=t.completionId,u=void 0===l?"":l,c=t.href,f=void 0===c?null:c,d=t.suffix,p=void 0===d?"":d,m=void 0;f?m=v.Inline.create({type:"pill",data:{completion:s,completionId:u,href:f}}):"@room"===s&&(m=v.Inline.create({type:"pill",data:{completion:s,completionId:u}}));var h=n;i&&(h=h.change().moveToAnchor().moveAnchorTo(i.start).moveFocusTo(i.end).focus().value);var _=void 0;return h=(_=m?h.change().insertInlineAtRange(h.selection,m).insertText(p).focus():h.change().insertTextAtRange(h.selection,s).insertText(p).focus()).value,e.onChange(_,n),!0});return function(e){return t.apply(this,arguments)}}(),this.renderNode=function(t){var n=t.attributes,o=t.children,i=t.node,a=t.isSelected;switch(i.type){case"paragraph":return h.default.createElement("p",n,o);case"block-quote":return h.default.createElement("blockquote",n,o);case"bulleted-list":return h.default.createElement("ul",n,o);case"heading1":return h.default.createElement("h1",n,o);case"heading2":return h.default.createElement("h2",n,o);case"heading3":return h.default.createElement("h3",n,o);case"heading4":return h.default.createElement("h4",n,o);case"heading5":return h.default.createElement("h5",n,o);case"heading6":return h.default.createElement("h6",n,o);case"list-item":return h.default.createElement("li",n,o);case"numbered-list":return h.default.createElement("ol",n,o);case"code":return h.default.createElement("pre",n,o);case"link":return h.default.createElement("a",(0,r.default)({},n,{href:i.data.get("href")}),o);case"pill":var s=i.data,l=s.get("href"),u=s.get("completion"),c=!G.default.getValue("Pill.shouldHidePillAvatar"),f=R.default.getComponent("elements.Pill");if("@room"===u)return h.default.createElement(f,(0,r.default)({type:f.TYPE_AT_ROOM_MENTION,room:e.props.room,shouldShowPillAvatar:c,isSelected:a},n));if(f.isPillUrl(l))return h.default.createElement(f,(0,r.default)({url:l,room:e.props.room,shouldShowPillAvatar:c,isSelected:a},n));var d=i.text;return h.default.createElement("a",(0,r.default)({href:l},t.attributes),d);case"emoji":var p=i.data.get("emojiUnicode"),m=O.unicodeToEmojiUri(p),_=(0,j.toShort)(p),g=(0,S.default)("mx_emojione",{mx_emojione_selected:a}),v={};return t.selected&&(v.border="1px solid blue"),h.default.createElement("img",{className:g,src:m,title:_,alt:p,style:v})}},this.renderMark=function(e){var t=e.children,n=e.mark,r=e.attributes;switch(n.type){case"bold":return h.default.createElement("strong",r,t);case"italic":return h.default.createElement("em",r,t);case"code":return h.default.createElement("code",r,t);case"underlined":return h.default.createElement("u",r,t);case"deleted":return h.default.createElement("del",r,t)}},this.onFormatButtonClicked=function(t,n){if(n.preventDefault(),document.activeElement&&"mx_MessageComposer_editor"!==document.activeElement.className)return e._editor.focus(),void setTimeout(function(){e.handleKeyCommand(t)},500);e.handleKeyCommand(t)},this.onMarkdownToggleClicked=function(t){t.preventDefault(),e.handleKeyCommand("toggle-mode")},this.focusComposer=function(){e._editor.focus()}};t.default=te,e.exports=t.default},function(e,t,n){"use strict";e.exports=function(e){function t(e){for(var t=0,n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return r.colors[Math.abs(t)%r.colors.length]}function r(e){var n;function a(){if(a.enabled){for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];var i=a,s=Number(new Date),l=s-(n||s);i.diff=l,i.prev=n,i.curr=s,n=s,t[0]=r.coerce(t[0]),"string"!=typeof t[0]&&t.unshift("%O");var u=0;t[0]=t[0].replace(/%([a-zA-Z%])/g,function(e,n){if("%%"===e)return e;u++;var o=r.formatters[n];if("function"==typeof o){var a=t[u];e=o.call(i,a),t.splice(u,1),u--}return e}),r.formatArgs.call(i,t),(i.log||r.log).apply(i,t)}}return a.namespace=e,a.enabled=r.enabled(e),a.useColors=r.useColors(),a.color=t(e),a.destroy=o,a.extend=i,"function"==typeof r.init&&r.init(a),r.instances.push(a),a}function o(){var e=r.instances.indexOf(this);return-1!==e&&(r.instances.splice(e,1),!0)}function i(e,t){return r(this.namespace+(void 0===t?":":t)+e)}return r.debug=r,r.default=r,r.coerce=function(e){return e instanceof Error?e.stack||e.message:e},r.disable=function(){r.enable("")},r.enable=function(e){var t;r.save(e),r.names=[],r.skips=[];var n=("string"==typeof e?e:"").split(/[\s,]+/),o=n.length;for(t=0;t<o;t++)n[t]&&("-"===(e=n[t].replace(/\*/g,".*?"))[0]?r.skips.push(new RegExp("^"+e.substr(1)+"$")):r.names.push(new RegExp("^"+e+"$")));for(t=0;t<r.instances.length;t++){var i=r.instances[t];i.enabled=r.enabled(i.namespace)}},r.enabled=function(e){if("*"===e[e.length-1])return!0;var t,n;for(t=0,n=r.skips.length;t<n;t++)if(r.skips[t].test(e))return!1;for(t=0,n=r.names.length;t<n;t++)if(r.names[t].test(e))return!0;return!1},r.humanize=n(1777),Object.keys(e).forEach(function(t){r[t]=e[t]}),r.instances=[],r.names=[],r.skips=[],r.formatters={},r.selectColor=t,r.enable(r.load()),r}},function(e,t){var n=1e3,r=60*n,o=60*r,i=24*o,a=7*i,s=365.25*i;function l(e,t,n,r){var o=t>=1.5*n;return Math.round(e/n)+" "+r+(o?"s":"")}e.exports=function(e,t){t=t||{};var u=typeof e;if("string"===u&&e.length>0)return function(e){if((e=String(e)).length>100)return;var t=/^((?:\d+)?\-?\d?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!t)return;var l=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return l*s;case"weeks":case"week":case"w":return l*a;case"days":case"day":case"d":return l*i;case"hours":case"hour":case"hrs":case"hr":case"h":return l*o;case"minutes":case"minute":case"mins":case"min":case"m":return l*r;case"seconds":case"second":case"secs":case"sec":case"s":return l*n;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return l;default:return}}(e);if("number"===u&&!1===isNaN(e))return t.long?function(e){var t=Math.abs(e);if(t>=i)return l(e,t,i,"day");if(t>=o)return l(e,t,o,"hour");if(t>=r)return l(e,t,r,"minute");if(t>=n)return l(e,t,n,"second");return e+" ms"}(e):function(e){var t=Math.abs(e);if(t>=i)return Math.round(e/i)+"d";if(t>=o)return Math.round(e/o)+"h";if(t>=r)return Math.round(e/r)+"m";if(t>=n)return Math.round(e/n)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},function(e,t,n){"use strict"; -/*! - * isobject <https://github.com/jonschlinkert/isobject> - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */e.exports=function(e){return null!=e&&"object"==typeof e&&!1===Array.isArray(e)}},function(e,t,n){var r=n(461),o=n(1780),i=n(472),a=n(1781),s=n(1782),l=n(1785),u=n(1786),c=n(1787),f=n(1788),d=n(686),p=n(712),m=n(317),h=n(1789),_=n(1790),g=n(1795),v=n(102),y=n(465),b=n(1797),E=n(103),C=n(1799),S=n(252),D=1,w=2,T=4,x="[object Arguments]",R="[object Function]",k="[object GeneratorFunction]",N="[object Object]",I={};I[x]=I["[object Array]"]=I["[object ArrayBuffer]"]=I["[object DataView]"]=I["[object Boolean]"]=I["[object Date]"]=I["[object Float32Array]"]=I["[object Float64Array]"]=I["[object Int8Array]"]=I["[object Int16Array]"]=I["[object Int32Array]"]=I["[object Map]"]=I["[object Number]"]=I[N]=I["[object RegExp]"]=I["[object Set]"]=I["[object String]"]=I["[object Symbol]"]=I["[object Uint8Array]"]=I["[object Uint8ClampedArray]"]=I["[object Uint16Array]"]=I["[object Uint32Array]"]=!0,I["[object Error]"]=I[R]=I["[object WeakMap]"]=!1,e.exports=function e(t,n,O,A,M,P){var L,F=n&D,U=n&w,j=n&T;if(O&&(L=M?O(t,A,M,P):O(t)),void 0!==L)return L;if(!E(t))return t;var B=v(t);if(B){if(L=h(t),!F)return u(t,L)}else{var G=m(t),q=G==R||G==k;if(y(t))return l(t,F);if(G==N||G==x||q&&!M){if(L=U||q?{}:g(t),!F)return U?f(t,s(L,t)):c(t,a(L,t))}else{if(!I[G])return M?t:{};L=_(t,G,F)}}P||(P=new r);var V=P.get(t);if(V)return V;if(P.set(t,L),C(t))return t.forEach(function(r){L.add(e(r,n,O,r,t,P))}),L;if(b(t))return t.forEach(function(r,o){L.set(o,e(r,n,O,o,t,P))}),L;var H=j?U?p:d:U?keysIn:S,Y=B?void 0:H(t);return o(Y||t,function(r,o){Y&&(r=t[o=r]),i(L,o,e(r,n,O,o,t,P))}),L}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e}},function(e,t,n){var r=n(256),o=n(252);e.exports=function(e,t){return e&&r(t,o(t),e)}},function(e,t,n){var r=n(256),o=n(710);e.exports=function(e,t){return e&&r(t,o(t),e)}},function(e,t,n){var r=n(103),o=n(468),i=n(1784),a=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return i(e);var t=o(e),n=[];for(var s in e)("constructor"!=s||!t&&a.call(e,s))&&n.push(s);return n}},function(e,t){e.exports=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}},function(e,t,n){(function(e){var r=n(101),o="object"==typeof t&&t&&!t.nodeType&&t,i=o&&"object"==typeof e&&e&&!e.nodeType&&e,a=i&&i.exports===o?r.Buffer:void 0,s=a?a.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,r=s?s(n):new e.constructor(n);return e.copy(r),r}}).call(this,n(171)(e))},function(e,t){e.exports=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}},function(e,t,n){var r=n(256),o=n(463);e.exports=function(e,t){return r(e,o(e),t)}},function(e,t,n){var r=n(256),o=n(711);e.exports=function(e,t){return r(e,o(e),t)}},function(e,t){var n=Object.prototype.hasOwnProperty;e.exports=function(e){var t=e.length,r=new e.constructor(t);return t&&"string"==typeof e[0]&&n.call(e,"index")&&(r.index=e.index,r.input=e.input),r}},function(e,t,n){var r=n(474),o=n(1791),i=n(1792),a=n(1793),s=n(1794),l="[object Boolean]",u="[object Date]",c="[object Map]",f="[object Number]",d="[object RegExp]",p="[object Set]",m="[object String]",h="[object Symbol]",_="[object ArrayBuffer]",g="[object DataView]",v="[object Float32Array]",y="[object Float64Array]",b="[object Int8Array]",E="[object Int16Array]",C="[object Int32Array]",S="[object Uint8Array]",D="[object Uint8ClampedArray]",w="[object Uint16Array]",T="[object Uint32Array]";e.exports=function(e,t,n){var x=e.constructor;switch(t){case _:return r(e);case l:case u:return new x(+e);case g:return o(e,n);case v:case y:case b:case E:case C:case S:case D:case w:case T:return s(e,n);case c:return new x;case f:case m:return new x(e);case d:return i(e);case p:return new x;case h:return a(e)}}},function(e,t,n){var r=n(474);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}},function(e,t){var n=/\w*$/;e.exports=function(e){var t=new e.constructor(e.source,n.exec(e));return t.lastIndex=e.lastIndex,t}},function(e,t,n){var r=n(194),o=r?r.prototype:void 0,i=o?o.valueOf:void 0;e.exports=function(e){return i?Object(i.call(e)):{}}},function(e,t,n){var r=n(474);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}},function(e,t,n){var r=n(1796),o=n(473),i=n(468);e.exports=function(e){return"function"!=typeof e.constructor||i(e)?{}:r(o(e))}},function(e,t,n){var r=n(103),o=Object.create,i=function(){function e(){}return function(t){if(!r(t))return{};if(o)return o(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=i},function(e,t,n){var r=n(1798),o=n(316),i=n(467),a=i&&i.isMap,s=a?o(a):r;e.exports=s},function(e,t,n){var r=n(317),o=n(144),i="[object Map]";e.exports=function(e){return o(e)&&r(e)==i}},function(e,t,n){var r=n(1800),o=n(316),i=n(467),a=i&&i.isSet,s=a?o(a):r;e.exports=s},function(e,t,n){var r=n(317),o=n(144),i="[object Set]";e.exports=function(e){return o(e)&&r(e)==i}},function(e,t,n){var r=n(203),o=n(1802),i=n(1803),a=n(204);e.exports=function(e,t){return t=r(t,e),null==(e=i(e,t))||delete e[a(o(t))]}},function(e,t){e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},function(e,t,n){var r=n(318),o=n(1804);e.exports=function(e,t){return t.length<2?e:r(e,o(t,0,-1))}},function(e,t){e.exports=function(e,t,n){var r=-1,o=e.length;t<0&&(t=-t>o?0:o+t),(n=n>o?o:n)<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var i=Array(o);++r<o;)i[r]=e[r+t];return i}},function(e,t,n){var r=n(1806);e.exports=function(e){return r(e)?void 0:e}},function(e,t,n){var r=n(195),o=n(473),i=n(144),a="[object Object]",s=Function.prototype,l=Object.prototype,u=s.toString,c=l.hasOwnProperty,f=u.call(Object);e.exports=function(e){if(!i(e)||r(e)!=a)return!1;var t=o(e);if(null===t)return!0;var n=c.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&u.call(n)==f}},function(e,t,n){var r=n(1808),o=n(699);e.exports=function(e,t){return r(e,t,function(t,n){return o(e,n)})}},function(e,t,n){var r=n(318),o=n(1809),i=n(203);e.exports=function(e,t,n){for(var a=-1,s=t.length,l={};++a<s;){var u=t[a],c=r(e,u);n(c,u)&&o(l,i(u,e),c)}return l}},function(e,t,n){var r=n(472),o=n(203),i=n(315),a=n(103),s=n(204);e.exports=function(e,t,n,l){if(!a(e))return e;for(var u=-1,c=(t=o(t,e)).length,f=c-1,d=e;null!=d&&++u<c;){var p=s(t[u]),m=n;if(u!=f){var h=d[p];void 0===(m=l?l(h,p,d):void 0)&&(m=a(h)?h:i(t[u+1])?[]:{})}r(d,p,m),d=d[p]}return e}},function(e,t,n){"use strict";e.exports=function(e){function t(e){for(var t=0,n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return r.colors[Math.abs(t)%r.colors.length]}function r(e){var n;function a(){if(a.enabled){for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];var i=a,s=Number(new Date),l=s-(n||s);i.diff=l,i.prev=n,i.curr=s,n=s,t[0]=r.coerce(t[0]),"string"!=typeof t[0]&&t.unshift("%O");var u=0;t[0]=t[0].replace(/%([a-zA-Z%])/g,function(e,n){if("%%"===e)return e;u++;var o=r.formatters[n];if("function"==typeof o){var a=t[u];e=o.call(i,a),t.splice(u,1),u--}return e}),r.formatArgs.call(i,t),(i.log||r.log).apply(i,t)}}return a.namespace=e,a.enabled=r.enabled(e),a.useColors=r.useColors(),a.color=t(e),a.destroy=o,a.extend=i,"function"==typeof r.init&&r.init(a),r.instances.push(a),a}function o(){var e=r.instances.indexOf(this);return-1!==e&&(r.instances.splice(e,1),!0)}function i(e,t){return r(this.namespace+(void 0===t?":":t)+e)}return r.debug=r,r.default=r,r.coerce=function(e){return e instanceof Error?e.stack||e.message:e},r.disable=function(){r.enable("")},r.enable=function(e){var t;r.save(e),r.names=[],r.skips=[];var n=("string"==typeof e?e:"").split(/[\s,]+/),o=n.length;for(t=0;t<o;t++)n[t]&&("-"===(e=n[t].replace(/\*/g,".*?"))[0]?r.skips.push(new RegExp("^"+e.substr(1)+"$")):r.names.push(new RegExp("^"+e+"$")));for(t=0;t<r.instances.length;t++){var i=r.instances[t];i.enabled=r.enabled(i.namespace)}},r.enabled=function(e){if("*"===e[e.length-1])return!0;var t,n;for(t=0,n=r.skips.length;t<n;t++)if(r.skips[t].test(e))return!1;for(t=0,n=r.names.length;t<n;t++)if(r.names[t].test(e))return!0;return!1},r.humanize=n(1811),Object.keys(e).forEach(function(t){r[t]=e[t]}),r.instances=[],r.names=[],r.skips=[],r.formatters={},r.selectColor=t,r.enable(r.load()),r}},function(e,t){var n=1e3,r=60*n,o=60*r,i=24*o,a=7*i,s=365.25*i;function l(e,t,n,r){var o=t>=1.5*n;return Math.round(e/n)+" "+r+(o?"s":"")}e.exports=function(e,t){t=t||{};var u=typeof e;if("string"===u&&e.length>0)return function(e){if((e=String(e)).length>100)return;var t=/^((?:\d+)?\-?\d?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!t)return;var l=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return l*s;case"weeks":case"week":case"w":return l*a;case"days":case"day":case"d":return l*i;case"hours":case"hour":case"hrs":case"hr":case"h":return l*o;case"minutes":case"minute":case"mins":case"min":case"m":return l*r;case"seconds":case"second":case"secs":case"sec":case"s":return l*n;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return l;default:return}}(e);if("number"===u&&!1===isNaN(e))return t.long?function(e){var t=Math.abs(e);if(t>=i)return l(e,t,i,"day");if(t>=o)return l(e,t,o,"hour");if(t>=r)return l(e,t,r,"minute");if(t>=n)return l(e,t,n,"second");return e+" ms"}(e):function(e){var t=Math.abs(e);if(t>=i)return Math.round(e/i)+"d";if(t>=o)return Math.round(e/o)+"h";if(t>=r)return Math.round(e/r)+"m";if(t>=n)return Math.round(e/n)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},function(e,t){e.exports=function e(t){if(r(t))return t;if(r(t.ownerDocument))return t.ownerDocument;if(r(t.document))return t.document;if(t.parentNode)return e(t.parentNode);if(t.commonAncestorContainer)return e(t.commonAncestorContainer);if(t.startContainer)return e(t.startContainer);if(t.anchorNode)return e(t.anchorNode)};var n=9;function r(e){return e&&e.nodeType===n}},function(e,t){e.exports=!!document.attachEvent&&window!==document.parentWindow},function(e,t,n){var r=n(103),o=n(1815),i=n(713),a="Expected a function",s=Math.max,l=Math.min;e.exports=function(e,t,n){var u,c,f,d,p,m,h=0,_=!1,g=!1,v=!0;if("function"!=typeof e)throw new TypeError(a);function y(t){var n=u,r=c;return u=c=void 0,h=t,d=e.apply(r,n)}function b(e){var n=e-m;return void 0===m||n>=t||n<0||g&&e-h>=f}function E(){var e=o();if(b(e))return C(e);p=setTimeout(E,function(e){var n=t-(e-m);return g?l(n,f-(e-h)):n}(e))}function C(e){return p=void 0,v&&u?y(e):(u=c=void 0,d)}function S(){var e=o(),n=b(e);if(u=arguments,c=this,m=e,n){if(void 0===p)return function(e){return h=e,p=setTimeout(E,t),_?y(e):d}(m);if(g)return p=setTimeout(E,t),y(m)}return void 0===p&&(p=setTimeout(E,t)),d}return t=i(t)||0,r(n)&&(_=!!n.leading,f=(g="maxWait"in n)?s(i(n.maxWait)||0,t):f,v="trailing"in n?!!n.trailing:v),S.cancel=function(){void 0!==p&&clearTimeout(p),h=0,u=m=c=p=void 0},S.flush=function(){return void 0===p?d:C(o())},S}},function(e,t,n){var r=n(101);e.exports=function(){return r.Date.now()}},function(e,t,n){"use strict";n.r(t);var r=n(0),o=n.n(r),i=n(728),a=n(323),s=n.n(a),l=n(21),u=n(6),c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f=new u.Record({object:"string",text:""}),d={deserialize:function(e){if(e.tagName&&"br"===e.tagName.toLowerCase())return{object:"text",leaves:[{object:"leaf",text:"\n"}]};if("#text"==e.nodeName){if(e.nodeValue&&e.nodeValue.match(/<!--.*?-->/))return;return{object:"text",leaves:[{object:"leaf",text:e.nodeValue}]}}},serialize:function(e,t){if("string"===e.object)return t.split("\n").reduce(function(e,t,n){return 0!=n&&e.push(o.a.createElement("br",{key:n})),e.push(t),e},[])}};function p(e){if("undefined"==typeof DOMParser)throw new Error("The native `DOMParser` global which the `Html` serializer uses by default is not present in this environment. You must supply the `options.parseHtml` function instead.");return(new DOMParser).parseFromString(e,"text/html").body||window.document.createElement("body")}var m=function(){var e=this;this.deserialize=function(t){var n=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).toJSON,r=void 0!==n&&n,o=e.defaultBlock,i=(0,e.parseHtml)(t),a=Array.from(i.childNodes),s=e.deserializeElements(a);0==(s=s.reduce(function(e,t,n,r){if("block"==t.object)return e.push(t),e;if(n>0&&"block"!=r[n-1].object)return e[e.length-1].nodes.push(t),e;var i=c({object:"block",data:{},isVoid:!1},o,{nodes:[t]});return e.push(i),e},[])).length&&(s=[c({object:"block",data:{},isVoid:!1},o,{nodes:[{object:"text",leaves:[{object:"leaf",text:"",marks:[]}]}]})]);var u={object:"value",document:{object:"document",data:{},nodes:s}};return r?u:l.Value.fromJSON(u)},this.deserializeElements=function(){var t=[];return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).filter(e.cruftNewline).forEach(function(n){var r=e.deserializeElement(n);switch(s()(r)){case"array":t=t.concat(r);break;case"object":t.push(r)}}),t},this.deserializeElement=function(t){var n=void 0;t.tagName||(t.tagName="");var r=function(t){switch("[object NodeList]"==Object.prototype.toString.call(t)&&(t=Array.from(t)),s()(t)){case"array":return e.deserializeElements(t);case"object":return e.deserializeElement(t);case"null":case"undefined":return;default:throw new Error('The `next` argument was called with invalid children: "'+t+'".')}},o=!0,i=!1,a=void 0;try{for(var l,u=e.rules[Symbol.iterator]();!(o=(l=u.next()).done);o=!0){var c=l.value;if(c.deserialize){var f=c.deserialize(t,r),d=s()(f);if("array"!=d&&"object"!=d&&"null"!=d&&"undefined"!=d)throw new Error('A rule returned an invalid deserialized representation: "'+n+'".');if(void 0!==f){if(null===f)return null;n="mark"==f.object?e.deserializeMark(f):f;break}}}}catch(e){i=!0,a=e}finally{try{!o&&u.return&&u.return()}finally{if(i)throw a}}return n||r(t.childNodes)},this.deserializeMark=function(t){var n=t.type,r=t.data;return t.nodes.reduce(function(t,o){var i=function t(o){return"mark"==o.object?e.deserializeMark(o):("text"==o.object?o.leaves=o.leaves.map(function(e){return e.marks=e.marks||[],e.marks.push({type:n,data:r}),e}):o.nodes&&(o.nodes=o.nodes.map(t)),o)}(o);return Array.isArray(i)?t.concat(i):(t.push(i),t)},[])},this.serialize=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.document.nodes.map(e.serializeNode).filter(function(e){return e});return!1===n.render?r:Object(i.renderToStaticMarkup)(o.a.createElement("body",null,r)).slice(6,-7)},this.serializeNode=function(t){if("text"===t.object)return t.getLeaves().map(e.serializeLeaf);var n=t.nodes.map(e.serializeNode),r=!0,o=!1,i=void 0;try{for(var a,s=e.rules[Symbol.iterator]();!(r=(a=s.next()).done);r=!0){var l=a.value;if(l.serialize){var u=l.serialize(t,n);if(null===u)return;if(u)return _(u)}}}catch(e){o=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}throw new Error('No serializer defined for node of type "'+t.type+'".')},this.serializeLeaf=function(t){var n=new f({text:t.text}),r=e.serializeString(n);return t.marks.reduce(function(t,n){var r=!0,o=!1,i=void 0;try{for(var a,s=e.rules[Symbol.iterator]();!(r=(a=s.next()).done);r=!0){var l=a.value;if(l.serialize){var u=l.serialize(n,t);if(null===u)return;if(u)return _(u)}}}catch(e){o=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}throw new Error('No serializer defined for mark of type "'+n.type+'".')},r)},this.serializeString=function(t){var n=!0,r=!1,o=void 0;try{for(var i,a=e.rules[Symbol.iterator]();!(n=(i=a.next()).done);n=!0){var s=i.value;if(s.serialize){var l=s.serialize(t,t.text);if(l)return l}}}catch(e){r=!0,o=e}finally{try{!n&&a.return&&a.return()}finally{if(r)throw o}}},this.cruftNewline=function(e){return!("#text"===e.nodeName&&"\n"==e.nodeValue)}},h=0;function _(e){return o.a.cloneElement(e,{key:h++})}t.default=function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),m.call(this);var n=t.defaultBlock,r=void 0===n?"paragraph":n,o=t.parseHtml,i=void 0===o?p:o,a=t.rules,s=void 0===a?[]:a;r=l.Node.createProperties(r),this.rules=[].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}(s),[d]),this.defaultBlock=r,this.parseHtml=i}},function(e,t,n){"use strict";var r=n(537),o=n(1818),i=n(564);r.inject();var a={renderToString:o.renderToString,renderToStaticMarkup:o.renderToStaticMarkup,version:i};e.exports=a},function(e,t,n){"use strict";var r=n(32),o=n(165),i=n(562),a=n(557),s=(n(88),n(563)),l=n(169),u=n(1819),c=n(556),f=n(98),d=n(222),p=n(382),m=(n(23),0);function h(e,t){var n;try{return f.injection.injectBatchingStrategy(u),n=c.getPooled(t),m++,n.perform(function(){var r=p(e,!0),o=l.mountComponent(r,n,null,i(),d,0);return t||(o=s.addChecksumToMarkup(o)),o},null)}finally{m--,c.release(n),m||f.injection.injectBatchingStrategy(a)}}e.exports={renderToString:function(e){return o.isValidElement(e)||r("46"),h(e,!1)},renderToStaticMarkup:function(e){return o.isValidElement(e)||r("47"),h(e,!0)}}},function(e,t,n){"use strict";e.exports={isBatchingUpdates:!1,batchedUpdates:function(e){}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=function(e){return e&&e.__esModule?e:{default:e}}(n(1821)),i=n(21),a=n(6),s=n(714);var l=new a.Record({object:"string",text:""}),u="",c=[{serialize:function(e,t){if("string"===e.object)return t}},{serialize:function(e,t,n){if("block"===e.object){var r=n.getParent(e.key),o=function(t){return n.getNextSibling(e.key)?t+"\n\n":t};switch(e.type){case"table":return u="",t.trim();case"table-head":switch(e.getIn(["data","align"])){case"left":u+="|:--- ";break;case"center":u+="|:---:";break;case"right":u+="| ---:";break;default:u+="| --- "}return"| "+t+" ";case"table-row":var i="";return u&&(i=u+"|\n",u=""),t+"|\n"+i;case"table-cell":return"| "+t+" ";case"paragraph":return o(""+t);case"code":return o("```\n"+t+"\n```");case"code-line":return t+"\n";case"block-quote":return o(""+t.replace(/^/gm,"> "));case"todo-list":case"bulleted-list":case"ordered-list":return r===n?t:"\n"+o(t.replace(/^/gm," "));case"list-item":switch(r.type){case"ordered-list":return"1. "+t+"\n";case"todo-list":return(e.getIn(["data","checked"])?"[x]":"[ ]")+" "+t+"\n";default:case"bulleted-list":return"* "+t+"\n"}case"heading1":return"\n"+t.replace(/^/gm,"# ")+"\n";case"heading2":return"\n"+t.replace(/^/gm,"## ")+"\n";case"heading3":return"\n"+t.replace(/^/gm,"### ")+"\n";case"heading4":return"\n"+t.replace(/^/gm,"#### ")+"\n";case"heading5":return"\n"+t.replace(/^/gm,"##### ")+"\n";case"heading6":return"\n"+t.replace(/^/gm,"###### ")+"\n";case"horizontal-rule":return"---";case"image":return"!["+e.getIn(["data","alt"])+"]("+(0,s.encode)(e.getIn(["data","src"])||"")+")"}}}},{serialize:function(e,t){if("inline"===e.object)switch(e.type){case"link":var n=(0,s.encode)(e.getIn(["data","href"])||"");return n?"["+t.trim()+"]("+n+")":t.trim()}}},{serialize:function(e,t){if("mark"===e.object)switch(e.type){case"bold":return"**"+t+"**";case"italic":return"_"+t+"_";case"code":return"`"+t+"`";case"inserted":return"++"+t+"++";case"deleted":return"~~"+t+"~~"}}}],f=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.rules=[].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}(t.rules||[]),c),this.serializeNode=this.serializeNode.bind(this),this.serializeLeaves=this.serializeLeaves.bind(this),this.serializeString=this.serializeString.bind(this)}return r(e,[{key:"serialize",value:function(e){var t=this,n=e.document;return n.nodes.map(function(e){return t.serializeNode(e,n)}).join("\n").replace(/^\s+/g,"")}},{key:"serializeNode",value:function(e,t){var n=this;if("text"==e.object){var r=e.getLeaves(),o=!!t.getClosest(e.key,function(e){e.type});return r.map(this.serializeLeaves,!o)}var i=e.nodes.map(function(e){return n.serializeNode(e,t)});i=0===i.flatten().size?"":i.flatten().join("");var a=!0,s=!1,l=void 0;try{for(var u,c=this.rules[Symbol.iterator]();!(a=(u=c.next()).done);a=!0){var f=u.value;if(f.serialize){var d=f.serialize(e,i,t);if(d)return d}}}catch(e){s=!0,l=e}finally{try{!a&&c.return&&c.return()}finally{if(s)throw l}}}},{key:"serializeLeaves",value:function(e,t){var n=this,r=e.text;t&&(r=r.replace(/([\\`*{}\[\]()#+\-.!_>])/gi,"\\$1"));var o=new l({text:r}),i=this.serializeString(o);return e.marks.reduce(function(e,t){var r=!0,o=!1,i=void 0;try{for(var a,s=n.rules[Symbol.iterator]();!(r=(a=s.next()).done);r=!0){var l=a.value;if(l.serialize){var u=l.serialize(t,e);if(u)return u}}}catch(e){o=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}},i)}},{key:"serializeString",value:function(e){var t=!0,n=!1,r=void 0;try{for(var o,i=this.rules[Symbol.iterator]();!(t=(o=i.next()).done);t=!0){var a=o.value;if(a.serialize){var s=a.serialize(e,e.text);if(s)return s}}}catch(e){n=!0,r=e}finally{try{!t&&i.return&&i.return()}finally{if(n)throw r}}}},{key:"deserialize",value:function(e){var t=o.default.parse(e);return i.Value.fromJSON({document:t})}}]),e}();t.default=f},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(714),o=Object.prototype.hasOwnProperty,i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)o.call(n,r)&&(e[r]=n[r])}return e},a=function(){};a.exec=a;var s={gfm:!0,tables:!0,breaks:!1,pedantic:!1,smartLists:!0,silent:!1,langPrefix:"lang-",renderer:new d},l={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:a,hr:/^( *[-*_]){3,} *(?:\n|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n|$)/,nptable:a,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*(?:\n|$))+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n(?! )(?!\1bull )\n|\s*$)/,def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n|$)/,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|def))+)(?:\n|$)/,text:/^[^\n]+/};function u(e){this.tokens=[],this.tokens.links={},this.options=i({},e||s),this.rules=l.normal,this.options.gfm&&(this.options.tables?this.rules=l.tables:this.rules=l.gfm)}l.bullet=/(?:[*+-]|\d+\.|\[[x\s]\])/,l.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/,l.item=h(l.item,"gm")(/bull/g,l.bullet)(),l.list=h(l.list)(/bull/g,l.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+l.def.source+")")(),l.blockquote=h(l.blockquote)("def",l.def)(),l.paragraph=h(l.paragraph)("hr",l.hr)("heading",l.heading)("lheading",l.lheading)("blockquote",l.blockquote)("def",l.def)(),l.normal=i({},l),l.gfm=i({},l.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]+?)\s*\1 *(?:\n|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n{1,2}|$)/}),l.gfm.paragraph=h(l.paragraph)("(?!","(?!"+l.gfm.fences.source.replace("\\1","\\2")+"|"+l.list.source.replace("\\1","\\3")+"|")(),l.tables=i({},l.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)/}),u.rules=l,u.parse=function(e,t){return new u(t).parse(e)},u.prototype.parse=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},u.prototype.token=function(e,t,n){var r,o,i,a,s,u,c,f,d;for(e=(e=e.replace(/^ +$/gm,"")).replace(/^\n/,"");e;){if(i=this.rules.newline.exec(e)){e=e.substring(i[0].length);var p=i[0].length;if(t)for(var m=0;m<p;m++)this.tokens.push({type:"paragraph",text:""})}if(i=this.rules.code.exec(e))e=e.substring(i[0].length),i=i[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",text:this.options.pedantic?i:i.replace(/\n+$/,"")});else if(i=this.rules.fences.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"code",lang:i[2],text:i[3]});else if(i=this.rules.heading.exec(e)){e=e.substring(i[0].length);var h=this.tokens[this.tokens.length-1];h&&"paragraph"===h.type&&""===h.text&&this.tokens.splice(-1,1),this.tokens.push({type:"heading",depth:i[1].length,text:i[2]})}else if(t&&(i=this.rules.nptable.exec(e))){for(e=e.substring(i[0].length),u={type:"table",header:i[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:i[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:i[3].replace(/\n$/,"").split("\n")},f=0;f<u.align.length;f++)/^ *-+: *$/.test(u.align[f])?u.align[f]="right":/^ *:-+: *$/.test(u.align[f])?u.align[f]="center":/^ *:-+ *$/.test(u.align[f])?u.align[f]="left":u.align[f]=null;for(f=0;f<u.cells.length;f++)u.cells[f]=u.cells[f].split(/ *\| */);this.tokens.push(u)}else if(i=this.rules.lheading.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"heading",depth:"="===i[2]?1:2,text:i[1]});else if(i=this.rules.hr.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"hr"});else if(i=this.rules.blockquote.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"blockquote_start"}),i=i[0].replace(/^ *> ?/gm,""),this.token(i,t,!0),this.tokens.push({type:"blockquote_end"});else if(i=this.rules.list.exec(e)){e=e.substring(i[0].length);var _=(a=i[2]).length>1,g="["===a[0];for(this.tokens.push({type:"list_start",style:g?"todo":_?"ordered":"bulleted"}),r=!1,d=(i=i[0].match(this.rules.item)).length,f=0;f<d;f++){u=i[f];var v=g?!!u.match(/^ *(\[x\])/):void 0;c=u.length,~(u=u.replace(/^ *([*+-]|\d+\.|\[[x\s]\]) +/,"")).indexOf("\n ")&&(c-=u.length,u=this.options.pedantic?u.replace(/^ {1,4}/gm,""):u.replace(new RegExp("^ {1,"+c+"}","gm"),"")),this.options.smartLists&&f!==d-1&&(a===(s=l.bullet.exec(i[f+1])[0])||a.length>1&&s.length>1||(e=i.slice(f+1).join("\n")+e,f=d-1)),o=r||/\n\n(?!\s*$)/.test(u),f!==d-1&&(r="\n"===u.charAt(u.length-1),o||(o=r)),this.tokens.push({checked:v,type:o?"loose_item_start":"list_item_start"}),this.token(u,!1,n),this.tokens.push({type:"list_item_end"})}this.tokens.push({type:"list_end"})}else if(!n&&t&&(i=this.rules.def.exec(e)))e=e.substring(i[0].length),this.tokens.links[i[1].toLowerCase()]={href:i[2],title:i[3]};else if(t&&(i=this.rules.table.exec(e))){for(e=e.substring(i[0].length),u={type:"table",header:i[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:i[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:i[3].replace(/(?: *\| *)?\n$/,"").split("\n")},f=0;f<u.align.length;f++)/^ *-+: *$/.test(u.align[f])?u.align[f]="right":/^ *:-+: *$/.test(u.align[f])?u.align[f]="center":/^ *:-+ *$/.test(u.align[f])?u.align[f]="left":u.align[f]=null;for(f=0;f<u.cells.length;f++)u.cells[f]=u.cells[f].replace(/^ *\| *| *\| *$/g,"").split(/ *\| */);this.tokens.push(u)}else if(t&&(i=this.rules.paragraph.exec(e))){e=e.substring(i[0].length);var y="\n"===i[1].charAt(i[1].length-1);this.tokens.push({type:"paragraph",text:y?i[1].slice(0,-1):i[1]}),y&&this.tokens.push({type:"paragraph",text:""})}else if(i=this.rules.text.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"text",text:i[0]});else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}return this.tokens};var c={escape:/^\\([\\`*{}\[\]()#+\-.!_>])/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:a,ins:a,text:/^[\s\S]+?(?=[\\<!\[_*`]| {2,}\n|$)/};function f(e,t){if(this.options=i({},t||s),this.links=e,this.rules=c.normal,this.renderer=this.options.renderer||new d,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.gfm?this.options.breaks?this.rules=c.breaks:this.rules=c.gfm:this.options.pedantic&&(this.rules=c.pedantic)}function d(e){this.options=e||{}}function p(e,t){this.text=e,t&&(this.marks=[t])}function m(e){this.tokens=[],this.token=null,this.options=i({},e||s),this.options.renderer=this.options.renderer||new d,this.renderer=this.options.renderer,this.renderer.options=this.options}function h(e,t){return e=e.source,t=t||"",function n(r,o){return r?(o=(o=o.source||o).replace(/(^|[^\[])\^/g,"$1"),e=e.replace(r,o),n):new RegExp(e,t)}}c._inside=/(?:\[[^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*/,c._href=/\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/,c.link=h(c.link)("inside",c._inside)("href",c._href)(),c.reflink=h(c.reflink)("inside",c._inside)(),c.normal=i({},c),c.pedantic=i({},c.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),c.gfm=i({},c.normal,{escape:h(c.escape)("])","~|])")(),del:/^~~(?=\S)([\s\S]*?\S)~~/,ins:/^\+\+(?=\S)([\s\S]*?\S)\+\+/,text:h(c.text)("]|","~+]|")()}),c.breaks=i({},c.gfm,{br:h(c.br)("{2,}","*")(),text:h(c.gfm.text)("{2,}","*")()}),f.rules=c,f.parse=function(e,t,n){return new f(t,n).parse(e)},f.prototype.parse=function(e){for(var t,n,r=[];e;)if(n=this.rules.escape.exec(e))e=e.substring(n[0].length),r.push({object:"text",leaves:[{text:n[1]}]});else if(n=this.rules.link.exec(e))e=e.substring(n[0].length),this.inLink=!0,r.push(this.outputLink(n,{href:n[2],title:n[3]})),this.inLink=!1;else if((n=this.rules.reflink.exec(e))||(n=this.rules.nolink.exec(e))){if(e=e.substring(n[0].length),t=(n[2]||n[1]).replace(/\s+/g," "),!(t=this.links[t.toLowerCase()])||!t.href){r.push({object:"text",leaves:[{text:n[0].charAt(0)}]}),e=n[0].substring(1)+e;continue}this.inLink=!0,r.push(this.outputLink(n,t)),this.inLink=!1}else if(n=this.rules.strong.exec(e))e=e.substring(n[0].length),r.push(this.renderer.strong(this.parse(n[2]||n[1])));else if(n=this.rules.em.exec(e))e=e.substring(n[0].length),r.push(this.renderer.em(this.parse(n[2]||n[1])));else if(n=this.rules.code.exec(e))e=e.substring(n[0].length),r.push(this.renderer.codespan(n[2]));else if(n=this.rules.br.exec(e))e=e.substring(n[0].length),r.push(this.renderer.br());else if(n=this.rules.del.exec(e))e=e.substring(n[0].length),r.push(this.renderer.del(this.parse(n[1])));else if(n=this.rules.ins.exec(e))e=e.substring(n[0].length),r.push(this.renderer.ins(this.parse(n[1])));else if(n=this.rules.text.exec(e))e=e.substring(n[0].length),r.push(this.renderer.text(n[0]));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0));return r},f.prototype.outputLink=function(e,t){var n=t.href,r=t.title;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.parse(e[1])):this.renderer.image(n,r,e[1])},d.prototype.groupTextInLeaves=function(e){var t=this;return function(e){return[].concat.apply([],e)}(e).reduce(function(e,n){var r=e.length-1,o=r>=0&&e[r]&&"text"===e[r].object;return n instanceof p?o?(e[r].leaves.push(n),e):(e.push({object:"text",leaves:[n]}),e):n instanceof Array?e.concat(t.groupTextInLeaves(n)):(e.push(n),e)},[])},d.prototype.code=function(e,t){var n={};return t&&(n.language=this.options.langPrefix+t),{object:"block",type:"code",data:n,nodes:this.groupTextInLeaves(e)}},d.prototype.blockquote=function(e){return{object:"block",type:"block-quote",nodes:this.groupTextInLeaves(e)}},d.prototype.heading=function(e,t){return{object:"block",type:"heading"+t,nodes:this.groupTextInLeaves(e)}},d.prototype.hr=function(){return{object:"block",type:"horizontal-rule",isVoid:!0}},d.prototype.list=function(e,t){return{object:"block",type:t+"-list",nodes:e}},d.prototype.listitem=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=void 0;return void 0!==t.checked&&(n={checked:t.checked}),{object:"block",type:"list-item",data:n,nodes:this.groupTextInLeaves(e)}},d.prototype.paragraph=function(e){return{object:"block",type:"paragraph",nodes:this.groupTextInLeaves(e)}},d.prototype.table=function(e){return{object:"block",type:"table",nodes:e}},d.prototype.tablerow=function(e){return{object:"block",type:"table-row",nodes:e}},d.prototype.tablecell=function(e,t){return{object:"block",data:{align:t.align},type:t.header?"table-head":"table-cell",nodes:this.groupTextInLeaves(e)}},d.prototype.strong=function(e){return e.map(function(e){return e.marks?e.marks.push({type:"bold"}):e.marks=[{type:"bold"}],e})},d.prototype.em=function(e){return e.map(function(e){return e.marks?e.marks.push({type:"italic"}):e.marks=[{type:"italic"}],e})},d.prototype.codespan=function(e){return new p(e,{type:"code"})},d.prototype.br=function(){return new p("")},d.prototype.del=function(e){return e.map(function(e){return e.marks?e.marks.push({type:"deleted"}):e.marks=[{type:"deleted"}],e})},d.prototype.ins=function(e){return e.map(function(e){return e.marks?e.marks.push({type:"inserted"}):e.marks=[{type:"inserted"}],e})},d.prototype.link=function(e,t,n){var o={href:(0,r.decode)(e)};return t&&(o.title=t),{object:"inline",type:"link",nodes:this.groupTextInLeaves(n),data:o}},d.prototype.image=function(e,t,n){var o={src:(0,r.decode)(e)};return t&&(o.title=t),n&&(o.alt=n),{object:"block",type:"image",nodes:[{object:"text",leaves:[{text:""}]}],isVoid:!0,data:o}},d.prototype.text=function(e){return new p(e)},m.parse=function(e,t,n){return new m(t,n).parse(e)},m.prototype.parse=function(e){this.inline=new f(e.links,this.options,this.renderer),this.tokens=e.slice().reverse();for(var t=[];this.next();)t.push(this.tok());return t},m.prototype.next=function(){return this.token=this.tokens.pop()},m.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},m.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.parse(e)},m.prototype.tok=function(){switch(this.token.type){case"space":return{object:"text",leaves:[{text:""}]};case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.parse(this.token.text),this.token.depth);case"code":return this.renderer.code(this.inline.parse(this.token.text),this.token.lang);case"table":var e=[],t=void 0,n=void 0,r=void 0,o=[];for(t=0;t<this.token.header.length;t++)({header:!0,align:this.token.align[t]}),o.push(this.renderer.tablecell(this.inline.parse(this.token.header[t]),{header:!0,align:this.token.align[t]}));for(e.push(this.renderer.tablerow(o)),t=0;t<this.token.cells.length;t++){n=this.token.cells[t];var i=[];for(r=0;r<n.length;r++)i.push(this.renderer.tablecell(this.inline.parse(n[r]),{header:!1,align:this.token.align[r]}));e.push(this.renderer.tablerow(i))}return this.renderer.table(e);case"blockquote_start":for(var a=[];"blockquote_end"!==this.next().type;)a.push(this.inline.parse(this.token.text));return this.renderer.blockquote(a);case"list_start":for(var s=[],l=this.token.style;"list_end"!==this.next().type;)s.push(this.tok());return this.renderer.list(s,l);case"loose_item_start":case"list_item_start":for(var u=[],c={checked:this.token.checked};"list_item_end"!==this.next().type;)u.push("text"===this.token.type?this.renderer.paragraph(this.inline.parse(this.token.text)):this.tok());return this.renderer.listitem(u,c);case"paragraph":return this.renderer.paragraph(this.inline.parse(this.token.text));case"text":return this.renderer.text(this.parseText())}};var _={parse:function(e,t){t=i({},s,t);try{var n=m.parse(u.parse(e,t),t)}catch(e){if(!t.silent)throw e;n=[{object:"block",type:"paragraph",nodes:[{object:"text",leaves:[{text:"An error occured:"},{text:e.message}]}]}]}return{nodes:n}}};t.default=_},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(n(4)),o=n(21);t.default=function e(){var t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,r.default)(this,e),this.serialize=function(e){return t._serializeNode(e.document)},this._serializeNode=function(e){if("document"==e.object||"block"==e.object&&o.Block.isBlockList(e.nodes))return e.nodes.map(t._serializeNode).join("\n");if("emoji"==e.type)return e.data.get("emojiUnicode");if("pill"!=e.type)return e.nodes?e.nodes.map(t._serializeNode).join(""):e.text;var n=e.data.get("completion");if("@room"===n)return n;switch(t.pillFormat){case"plain":return n;case"md":return"["+n+"]("+e.data.get("href")+")";case"id":return e.data.get("completionId")||n}};var i=n.pillFormat,a=void 0===i?"plain":i;this.pillFormat=a},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.unicodeToEmojiUri=function(e){var t=r.mapUnicodeToShort();return e.replace(r.regUnicode,function(e){if(void 0!==e&&""!==e&&e in r.jsEscapeMap){var n=r.jsEscapeMap[e],o=t[n],i=r.emojioneList[o].fname;return r.imagePathSVG+i+".svg"+r.cacheBustParam}return e})};var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(299))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(4)),o=s(n(5)),i=s(n(1825)),a=s(n(626));function s(e){return e&&e.__esModule?e:{default:e}}var l=["sub","sup","del","u"],u=["text","softbreak","linebreak","paragraph","document"];function c(e){var t=/^<\/?(.*)>$/.exec(e.literal);if(t&&2==t.length){var n=t[1];return l.indexOf(n)>-1}return!1}function f(e){c(e)?this.lit(e.literal):this.lit((0,a.default)(e.literal))}function d(e){for(var t=e;t.parent;)t=t.parent;return t.firstChild!=t.lastChild}var p=function(){function e(t){(0,r.default)(this,e),this.input=t;var n=new i.default.Parser;this.parsed=n.parse(this.input)}return(0,o.default)(e,[{key:"isPlainText",value:function(){for(var e=this.parsed.walker(),t=void 0;t=e.next();){var n=t.node;if(!(u.indexOf(n.type)>-1)){if("html_inline"!=n.type&&"html_block"!=n.type)return!1;if(c(n))return!1}}return!0}},{key:"toHTML",value:function(){var e=new i.default.HtmlRenderer({safe:!1,softbreak:"<br />"}),t=e.paragraph;return e.paragraph=function(e,n){d(e)&&t.call(this,e,n)},e.html_inline=f,e.html_block=function(e){f.call(this,e)},e.render(this.parsed)}},{key:"toPlaintext",value:function(){var e=new i.default.HtmlRenderer({safe:!1});e.paragraph;return e.out=function(e){this.lit(e)},e.paragraph=function(e,t){d(e)&&!t&&e.next&&this.lit("\n\n")},e.html_block=function(e){this.lit(e.literal),d(e)&&e.next&&this.lit("\n\n")},e.render(this.parsed)}}]),e}();t.default=p,e.exports=t.default},function(e,t,n){"use strict";e.exports.Node=n(475),e.exports.Parser=n(1826),e.exports.HtmlRenderer=n(1833),e.exports.XmlRenderer=n(1834)},function(e,t,n){"use strict";var r=n(475),o=n(205).unescapeString,i=n(205).OPENTAG,a=n(205).CLOSETAG,s=n(1829),l=[/./,/^<(?:script|pre|style)(?:\s|>|$)/i,/^<!--/,/^<[?]/,/^<![A-Z]/,/^<!\[CDATA\[/,/^<[/]?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[123456]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|title|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\s|[/]?[>]|$)/i,new RegExp("^(?:"+i+"|"+a+")\\s*$","i")],u=[/./,/<\/(?:script|pre|style)>/i,/-->/,/\?>/,/>/,/\]\]>/],c=/^(?:(?:\*[ \t]*){3,}|(?:_[ \t]*){3,}|(?:-[ \t]*){3,})[ \t]*$/,f=/^[#`~*+_=<>0-9-]/,d=/[^ \t\f\v\r\n]/,p=/^[*+-]/,m=/^(\d{1,9})([.)])/,h=/^#{1,6}(?:[ \t]+|$)/,_=/^`{3,}(?!.*`)|^~{3,}(?!.*~)/,g=/^(?:`{3,}|~{3,})(?= *$)/,v=/^(?:=+|-+)[ \t]*$/,y=/\r\n|\n|\r/,b=function(e){return 32===e||9===e},E=function(e,t){return t<e.length?e.charCodeAt(t):-1},C=function(e){for(;e;){if(e._lastLineBlank)return!0;var t=e.type;if("list"!==t&&"item"!==t)break;e=e._lastChild}return!1},S=function(){if(this.partiallyConsumedTab){this.offset+=1;var e=4-this.column%4;this.tip._string_content+=" ".repeat(e)}this.tip._string_content+=this.currentLine.slice(this.offset)+"\n"},D=function(e,t){for(;!this.blocks[this.tip.type].canContain(e);)this.finalize(this.tip,this.lineNumber-1);var n=t+1,o=new r(e,[[this.lineNumber,n],[0,0]]);return o._string_content="",this.tip.appendChild(o),this.tip=o,o},w=function(){if(!this.allClosed){for(;this.oldtip!==this.lastMatchedContainer;){var e=this.oldtip._parent;this.finalize(this.oldtip,this.lineNumber-1),this.oldtip=e}this.allClosed=!0}},T={document:{continue:function(){return 0},finalize:function(){},canContain:function(e){return"item"!==e},acceptsLines:!1},list:{continue:function(){return 0},finalize:function(e,t){for(var n=t._firstChild;n;){if(C(n)&&n._next){t._listData.tight=!1;break}for(var r=n._firstChild;r;){if(C(r)&&(n._next||r._next)){t._listData.tight=!1;break}r=r._next}n=n._next}},canContain:function(e){return"item"===e},acceptsLines:!1},block_quote:{continue:function(e){var t=e.currentLine;return e.indented||62!==E(t,e.nextNonspace)?1:(e.advanceNextNonspace(),e.advanceOffset(1,!1),b(E(t,e.offset))&&e.advanceOffset(1,!0),0)},finalize:function(){},canContain:function(e){return"item"!==e},acceptsLines:!1},item:{continue:function(e,t){if(e.blank){if(null==t._firstChild)return 1;e.advanceNextNonspace()}else{if(!(e.indent>=t._listData.markerOffset+t._listData.padding))return 1;e.advanceOffset(t._listData.markerOffset+t._listData.padding,!0)}return 0},finalize:function(){},canContain:function(e){return"item"!==e},acceptsLines:!1},heading:{continue:function(){return 1},finalize:function(){},canContain:function(){return!1},acceptsLines:!1},thematic_break:{continue:function(){return 1},finalize:function(){},canContain:function(){return!1},acceptsLines:!1},code_block:{continue:function(e,t){var n=e.currentLine,r=e.indent;if(t._isFenced){var o=r<=3&&n.charAt(e.nextNonspace)===t._fenceChar&&n.slice(e.nextNonspace).match(g);if(o&&o[0].length>=t._fenceLength)return e.finalize(t,e.lineNumber),2;for(var i=t._fenceOffset;i>0&&b(E(n,e.offset));)e.advanceOffset(1,!0),i--}else if(r>=4)e.advanceOffset(4,!0);else{if(!e.blank)return 1;e.advanceNextNonspace()}return 0},finalize:function(e,t){if(t._isFenced){var n=t._string_content,r=n.indexOf("\n"),i=n.slice(0,r),a=n.slice(r+1);t.info=o(i.trim()),t._literal=a}else t._literal=t._string_content.replace(/(\n *)+$/,"\n");t._string_content=null},canContain:function(){return!1},acceptsLines:!0},html_block:{continue:function(e,t){return!e.blank||6!==t._htmlBlockType&&7!==t._htmlBlockType?0:1},finalize:function(e,t){t._literal=t._string_content.replace(/(\n *)+$/,""),t._string_content=null},canContain:function(){return!1},acceptsLines:!0},paragraph:{continue:function(e){return e.blank?1:0},finalize:function(e,t){for(var n,r=!1;91===E(t._string_content,0)&&(n=e.inlineParser.parseReference(t._string_content,e.refmap));)t._string_content=t._string_content.slice(n),r=!0;r&&function(e){return!d.test(e)}(t._string_content)&&t.unlink()},canContain:function(){return!1},acceptsLines:!0}},x=[function(e){return e.indented||62!==E(e.currentLine,e.nextNonspace)?0:(e.advanceNextNonspace(),e.advanceOffset(1,!1),b(E(e.currentLine,e.offset))&&e.advanceOffset(1,!0),e.closeUnmatchedBlocks(),e.addChild("block_quote",e.nextNonspace),1)},function(e){var t;if(!e.indented&&(t=e.currentLine.slice(e.nextNonspace).match(h))){e.advanceNextNonspace(),e.advanceOffset(t[0].length,!1),e.closeUnmatchedBlocks();var n=e.addChild("heading",e.nextNonspace);return n.level=t[0].trim().length,n._string_content=e.currentLine.slice(e.offset).replace(/^[ \t]*#+[ \t]*$/,"").replace(/[ \t]+#+[ \t]*$/,""),e.advanceOffset(e.currentLine.length-e.offset),2}return 0},function(e){var t;if(!e.indented&&(t=e.currentLine.slice(e.nextNonspace).match(_))){var n=t[0].length;e.closeUnmatchedBlocks();var r=e.addChild("code_block",e.nextNonspace);return r._isFenced=!0,r._fenceLength=n,r._fenceChar=t[0][0],r._fenceOffset=e.indent,e.advanceNextNonspace(),e.advanceOffset(n,!1),2}return 0},function(e,t){if(!e.indented&&60===E(e.currentLine,e.nextNonspace)){var n,r=e.currentLine.slice(e.nextNonspace);for(n=1;n<=7;n++){if(l[n].test(r)&&(n<7||"paragraph"!==t.type))return e.closeUnmatchedBlocks(),e.addChild("html_block",e.offset)._htmlBlockType=n,2}}return 0},function(e,t){var n;if(!e.indented&&"paragraph"===t.type&&(n=e.currentLine.slice(e.nextNonspace).match(v))){e.closeUnmatchedBlocks();var o=new r("heading",t.sourcepos);return o.level="="===n[0][0]?1:2,o._string_content=t._string_content,t.insertAfter(o),t.unlink(),e.tip=o,e.advanceOffset(e.currentLine.length-e.offset,!1),2}return 0},function(e){return!e.indented&&c.test(e.currentLine.slice(e.nextNonspace))?(e.closeUnmatchedBlocks(),e.addChild("thematic_break",e.nextNonspace),e.advanceOffset(e.currentLine.length-e.offset,!1),2):0},function(e,t){var n;return e.indented&&"list"!==t.type||!(n=function(e,t){var n,r,o,i,a=e.currentLine.slice(e.nextNonspace),s={type:null,tight:!0,bulletChar:null,start:null,delimiter:null,padding:null,markerOffset:e.indent};if(n=a.match(p))s.type="bullet",s.bulletChar=n[0][0];else{if(!(n=a.match(m))||"paragraph"===t.type&&"1"!==n[1])return null;s.type="ordered",s.start=parseInt(n[1]),s.delimiter=n[2]}if(-1!==(r=E(e.currentLine,e.nextNonspace+n[0].length))&&9!==r&&32!==r)return null;if("paragraph"===t.type&&!e.currentLine.slice(e.nextNonspace+n[0].length).match(d))return null;e.advanceNextNonspace(),e.advanceOffset(n[0].length,!0),o=e.column,i=e.offset;do{e.advanceOffset(1,!0),r=E(e.currentLine,e.offset)}while(e.column-o<5&&b(r));var l=-1===E(e.currentLine,e.offset),u=e.column-o;return u>=5||u<1||l?(s.padding=n[0].length+1,e.column=o,e.offset=i,b(E(e.currentLine,e.offset))&&e.advanceOffset(1,!0)):s.padding=n[0].length+u,s}(e,t))?0:(e.closeUnmatchedBlocks(),"list"===e.tip.type&&function(e,t){return e.type===t.type&&e.delimiter===t.delimiter&&e.bulletChar===t.bulletChar}(t._listData,n)||((t=e.addChild("list",e.nextNonspace))._listData=n),(t=e.addChild("item",e.nextNonspace))._listData=n,1)},function(e){return e.indented&&"paragraph"!==e.tip.type&&!e.blank?(e.advanceOffset(4,!0),e.closeUnmatchedBlocks(),e.addChild("code_block",e.offset),2):0}],R=function(e,t){for(var n,r,o,i=this.currentLine;e>0&&(o=i[this.offset]);)"\t"===o?(n=4-this.column%4,t?(this.partiallyConsumedTab=n>e,r=n>e?e:n,this.column+=r,this.offset+=this.partiallyConsumedTab?0:1,e-=r):(this.partiallyConsumedTab=!1,this.column+=n,this.offset+=1,e-=1)):(this.partiallyConsumedTab=!1,this.offset+=1,this.column+=1,e-=1)},k=function(){this.offset=this.nextNonspace,this.column=this.nextNonspaceColumn,this.partiallyConsumedTab=!1},N=function(){for(var e,t=this.currentLine,n=this.offset,r=this.column;""!==(e=t.charAt(n));)if(" "===e)n++,r++;else{if("\t"!==e)break;n++,r+=4-r%4}this.blank="\n"===e||"\r"===e||""===e,this.nextNonspace=n,this.nextNonspaceColumn=r,this.indent=this.nextNonspaceColumn-this.column,this.indented=this.indent>=4},I=function(e){var t,n,r=!0,o=this.doc;for(this.oldtip=this.tip,this.offset=0,this.column=0,this.blank=!1,this.partiallyConsumedTab=!1,this.lineNumber+=1,-1!==e.indexOf("\0")&&(e=e.replace(/\0/g,"�")),this.currentLine=e;(n=o._lastChild)&&n._open;){switch(o=n,this.findNextNonspace(),this.blocks[o.type].continue(this,o)){case 0:break;case 1:r=!1;break;case 2:return void(this.lastLineLength=e.length);default:throw"continue returned illegal value, must be 0, 1, or 2"}if(!r){o=o._parent;break}}this.allClosed=o===this.oldtip,this.lastMatchedContainer=o;for(var i="paragraph"!==o.type&&T[o.type].acceptsLines,a=this.blockStarts,s=a.length;!i;){if(this.findNextNonspace(),!this.indented&&!f.test(e.slice(this.nextNonspace))){this.advanceNextNonspace();break}for(var l=0;l<s;){var c=a[l](this,o);if(1===c){o=this.tip;break}if(2===c){o=this.tip,i=!0;break}l++}if(l===s){this.advanceNextNonspace();break}}if(this.allClosed||this.blank||"paragraph"!==this.tip.type){this.closeUnmatchedBlocks(),this.blank&&o.lastChild&&(o.lastChild._lastLineBlank=!0),t=o.type;for(var d=this.blank&&!("block_quote"===t||"code_block"===t&&o._isFenced||"item"===t&&!o._firstChild&&o.sourcepos[0][0]===this.lineNumber),p=o;p;)p._lastLineBlank=d,p=p._parent;this.blocks[t].acceptsLines?(this.addLine(),"html_block"===t&&o._htmlBlockType>=1&&o._htmlBlockType<=5&&u[o._htmlBlockType].test(this.currentLine.slice(this.offset))&&this.finalize(o,this.lineNumber)):this.offset<e.length&&!this.blank&&(o=this.addChild("paragraph",this.offset),this.advanceNextNonspace(),this.addLine())}else this.addLine();this.lastLineLength=e.length},O=function(e,t){var n=e._parent;e._open=!1,e.sourcepos[1]=[t,this.lastLineLength],this.blocks[e.type].finalize(this,e),this.tip=n},A=function(e){var t,n,r,o=e.walker();for(this.inlineParser.refmap=this.refmap,this.inlineParser.options=this.options;n=o.next();)r=(t=n.node).type,n.entering||"paragraph"!==r&&"heading"!==r||this.inlineParser.parse(t)},M=function(){return new r("document",[[1,1],[0,0]])},P=function(e){this.doc=new M,this.tip=this.doc,this.refmap={},this.lineNumber=0,this.lastLineLength=0,this.offset=0,this.column=0,this.lastMatchedContainer=this.doc,this.currentLine="",this.options.time&&console.time("preparing input");var t=e.split(y),n=t.length;10===e.charCodeAt(e.length-1)&&(n-=1),this.options.time&&console.timeEnd("preparing input"),this.options.time&&console.time("block parsing");for(var r=0;r<n;r++)this.incorporateLine(t[r]);for(;this.tip;)this.finalize(this.tip,n);return this.options.time&&console.timeEnd("block parsing"),this.options.time&&console.time("inline parsing"),this.processInlines(this.doc),this.options.time&&console.timeEnd("inline parsing"),this.doc};e.exports=function(e){return{doc:new M,blocks:T,blockStarts:x,tip:this.doc,oldtip:this.doc,currentLine:"",lineNumber:0,offset:0,column:0,nextNonspace:0,nextNonspaceColumn:0,indent:0,indented:!1,blank:!1,partiallyConsumedTab:!1,allClosed:!0,lastMatchedContainer:this.doc,refmap:{},lastLineLength:0,inlineParser:new s(e),findNextNonspace:N,advanceOffset:R,advanceNextNonspace:k,addLine:S,addChild:D,incorporateLine:I,finalize:O,processInlines:A,closeUnmatchedBlocks:w,parse:P,options:e||{}}}},function(e,t,n){"use strict";var r={};function o(e,t,n){var i,a,s,l,u,c="";for("string"!=typeof t&&(n=t,t=o.defaultChars),void 0===n&&(n=!0),u=function(e){var t,n,o=r[e];if(o)return o;for(o=r[e]=[],t=0;t<128;t++)n=String.fromCharCode(t),/^[0-9a-z]$/i.test(n)?o.push(n):o.push("%"+("0"+t.toString(16).toUpperCase()).slice(-2));for(t=0;t<e.length;t++)o[e.charCodeAt(t)]=e[t];return o}(t),i=0,a=e.length;i<a;i++)if(s=e.charCodeAt(i),n&&37===s&&i+2<a&&/^[0-9a-f]{2}$/i.test(e.slice(i+1,i+3)))c+=e.slice(i,i+3),i+=2;else if(s<128)c+=u[s];else if(s>=55296&&s<=57343){if(s>=55296&&s<=56319&&i+1<a&&(l=e.charCodeAt(i+1))>=56320&&l<=57343){c+=encodeURIComponent(e[i]+e[i+1]),i++;continue}c+="%EF%BF%BD"}else c+=encodeURIComponent(e[i]);return c}o.defaultChars=";/?:@&=+$,-_.!~*'()#",o.componentChars="-_.!~*'()",e.exports=o},function(e,t,n){"use strict";var r={};function o(e,t){var n;return"string"!=typeof t&&(t=o.defaultChars),n=function(e){var t,n,o=r[e];if(o)return o;for(o=r[e]=[],t=0;t<128;t++)n=String.fromCharCode(t),o.push(n);for(t=0;t<e.length;t++)o[n=e.charCodeAt(t)]="%"+("0"+n.toString(16).toUpperCase()).slice(-2);return o}(t),e.replace(/(%[a-f0-9]{2})+/gi,function(e){var t,r,o,i,a,s,l,u="";for(t=0,r=e.length;t<r;t+=3)(o=parseInt(e.slice(t+1,t+3),16))<128?u+=n[o]:192==(224&o)&&t+3<r&&128==(192&(i=parseInt(e.slice(t+4,t+6),16)))?(u+=(l=o<<6&1984|63&i)<128?"��":String.fromCharCode(l),t+=3):224==(240&o)&&t+6<r&&(i=parseInt(e.slice(t+4,t+6),16),a=parseInt(e.slice(t+7,t+9),16),128==(192&i)&&128==(192&a))?(u+=(l=o<<12&61440|i<<6&4032|63&a)<2048||l>=55296&&l<=57343?"���":String.fromCharCode(l),t+=6):240==(248&o)&&t+9<r&&(i=parseInt(e.slice(t+4,t+6),16),a=parseInt(e.slice(t+7,t+9),16),s=parseInt(e.slice(t+10,t+12),16),128==(192&i)&&128==(192&a)&&128==(192&s))?((l=o<<18&1835008|i<<12&258048|a<<6&4032|63&s)<65536||l>1114111?u+="����":(l-=65536,u+=String.fromCharCode(55296+(l>>10),56320+(1023&l))),t+=9):u+="�";return u})}o.defaultChars=";/?:@&=+$,#",o.componentChars="",e.exports=o},function(e,t,n){"use strict";var r=n(475),o=n(205),i=n(1830),a=o.normalizeURI,s=o.unescapeString,l=n(1831),u=n(417).decodeHTML;n(1832);var c=o.ESCAPABLE,f="\\\\"+c,d=o.ENTITY,p=o.reHtmlTag,m=new RegExp(/[!"#$%&'()*+,\-./:;<=>?@\[\]^_`{|}~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]/),h=new RegExp('^(?:"('+f+'|[^"\\x00])*"|\'('+f+"|[^'\\x00])*'|\\(("+f+"|[^)\\x00])*\\))"),_=new RegExp("^(?:[<](?:[^ <>\\t\\n\\\\\\x00]|"+f+"|\\\\)*[>])"),g=new RegExp("^"+c),v=new RegExp("^"+d,"i"),y=/`+/,b=/^`+/,E=/\.\.\./g,C=/--+/g,S=/^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,D=/^<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\x00-\x20]*>/i,w=/^ *(?:\n *)?/,T=/^[ \t\n\x0b\x0c\x0d]/,x=/[ \t\n\x0b\x0c\x0d]+/g,R=/^\s/,k=/ *$/,N=/^ */,I=/^ *(?:\n|$)/,O=new RegExp("^\\[(?:[^\\\\\\[\\]]|"+f+"|\\\\){0,1000}\\]"),A=/^[^\n`\[\]\\!<&*_'"]+/m,M=function(e){var t=new r("text");return t._literal=e,t},P=function(e){var t=e.exec(this.subject.slice(this.pos));return null===t?null:(this.pos+=t.index+t[0].length,t[0])},L=function(){return this.pos<this.subject.length?this.subject.charCodeAt(this.pos):-1},F=function(){return this.match(w),!0},U=function(e){var t=this.match(b);if(null===t)return!1;for(var n,o,i=this.pos;null!==(n=this.match(y));)if(n===t)return(o=new r("code"))._literal=this.subject.slice(i,this.pos-t.length).trim().replace(x," "),e.appendChild(o),!0;return this.pos=i,e.appendChild(M(t)),!0},j=function(e){var t,n=this.subject;return this.pos+=1,10===this.peek()?(this.pos+=1,t=new r("linebreak"),e.appendChild(t)):g.test(n.charAt(this.pos))?(e.appendChild(M(n.charAt(this.pos))),this.pos+=1):e.appendChild(M("\\")),!0},B=function(e){var t,n,o;return(t=this.match(S))?(n=t.slice(1,t.length-1),(o=new r("link"))._destination=a("mailto:"+n),o._title="",o.appendChild(M(n)),e.appendChild(o),!0):!!(t=this.match(D))&&(n=t.slice(1,t.length-1),(o=new r("link"))._destination=a(n),o._title="",o.appendChild(M(n)),e.appendChild(o),!0)},G=function(e){var t=this.match(p);if(null===t)return!1;var n=new r("html_inline");return n._literal=t,e.appendChild(n),!0},q=function(e){var t,n,r,o,i,a,s,u,c,f,d,p=0,h=this.pos;if(39===e||34===e)p++,this.pos++;else for(;this.peek()===e;)p++,this.pos++;return 0===p?null:(t=0===h?"\n":this.subject.charAt(h-1),n=-1===(r=this.peek())?"\n":l(r),u=R.test(n),c=m.test(n),f=R.test(t),d=m.test(t),o=!u&&(!c||f||d),i=!f&&(!d||u||c),95===e?(a=o&&(!i||d),s=i&&(!o||c)):39===e||34===e?(a=o&&!i,s=i):(a=o,s=i),this.pos=h,{numdelims:p,can_open:a,can_close:s})},V=function(e,t){var n=this.scanDelims(e);if(!n)return!1;var r,o=n.numdelims,i=this.pos;this.pos+=o,r=39===e?"’":34===e?"“":this.subject.slice(i,this.pos);var a=M(r);return t.appendChild(a),this.delimiters={cc:e,numdelims:o,origdelims:o,node:a,previous:this.delimiters,next:null,can_open:n.can_open,can_close:n.can_close},null!==this.delimiters.previous&&(this.delimiters.previous.next=this.delimiters),!0},H=function(e){null!==e.previous&&(e.previous.next=e.next),null===e.next?this.delimiters=e.previous:e.next.previous=e.previous},Y=function(e,t){e.next!==t&&(e.next=t,t.previous=e)},z=function(e){var t,n,o,i,a,s,l,u,c,f,d=[],p=!1;for(d[95]=e,d[42]=e,d[39]=e,d[34]=e,n=this.delimiters;null!==n&&n.previous!==e;)n=n.previous;for(;null!==n;){var m=n.cc;if(n.can_close){for(t=n.previous,f=!1;null!==t&&t!==e&&t!==d[m];){if(p=(n.can_open||t.can_close)&&(t.origdelims+n.origdelims)%3==0,t.cc===n.cc&&t.can_open&&!p){f=!0;break}t=t.previous}if(o=n,42===m||95===m)if(f){l=n.numdelims>=2&&t.numdelims>=2?2:1,i=t.node,a=n.node,t.numdelims-=l,n.numdelims-=l,i._literal=i._literal.slice(0,i._literal.length-l),a._literal=a._literal.slice(0,a._literal.length-l);var h=new r(1===l?"emph":"strong");for(u=i._next;u&&u!==a;)c=u._next,u.unlink(),h.appendChild(u),u=c;i.insertAfter(h),Y(t,n),0===t.numdelims&&(i.unlink(),this.removeDelimiter(t)),0===n.numdelims&&(a.unlink(),s=n.next,this.removeDelimiter(n),n=s)}else n=n.next;else 39===m?(n.node._literal="’",f&&(t.node._literal="‘"),n=n.next):34===m&&(n.node._literal="”",f&&(t.node.literal="“"),n=n.next);f||p||(d[m]=o.previous,o.can_open||this.removeDelimiter(o))}else n=n.next}for(;null!==this.delimiters&&this.delimiters!==e;)this.removeDelimiter(this.delimiters)},W=function(){var e=this.match(h);return null===e?null:s(e.substr(1,e.length-2))},K=function(){var e=this.match(_);if(null===e){for(var t,n=this.pos,r=0;-1!==(t=this.peek());)if(92===t)this.pos+=1,-1!==this.peek()&&(this.pos+=1);else if(40===t)this.pos+=1,r+=1;else if(41===t){if(r<1)break;this.pos+=1,r-=1}else{if(null!==T.exec(l(t)))break;this.pos+=1}return e=this.subject.substr(n,this.pos-n),a(s(e))}return a(s(e.substr(1,e.length-2)))},$=function(){var e=this.match(O);return null===e||e.length>1001||/[^\\]\\\]$/.exec(e)?0:e.length},Q=function(e){var t=this.pos;this.pos+=1;var n=M("[");return e.appendChild(n),this.addBracket(n,t,!1),!0},X=function(e){var t=this.pos;if(this.pos+=1,91===this.peek()){this.pos+=1;var n=M("![");e.appendChild(n),this.addBracket(n,t+1,!0)}else e.appendChild(M("!"));return!0},J=function(e){var t,n,o,a,s,l,u=!1;if(this.pos+=1,t=this.pos,null===(l=this.brackets))return e.appendChild(M("]")),!0;if(!l.active)return e.appendChild(M("]")),this.removeBracket(),!0;n=l.image;var c=this.pos;if(40===this.peek()&&(this.pos++,this.spnl()&&null!==(o=this.parseLinkDestination())&&this.spnl()&&(T.test(this.subject.charAt(this.pos-1))&&(a=this.parseLinkTitle()),1)&&this.spnl()&&41===this.peek()?(this.pos+=1,u=!0):this.pos=c),!u){var f=this.pos,d=this.parseLinkLabel();if(d>2?s=this.subject.slice(f,f+d):l.bracketAfter||(s=this.subject.slice(l.index,t)),0===d&&(this.pos=c),s){var p=this.refmap[i(s)];p&&(o=p.destination,a=p.title,u=!0)}}if(u){var m,h,_=new r(n?"image":"link");for(_._destination=o,_._title=a||"",m=l.node._next;m;)h=m._next,m.unlink(),_.appendChild(m),m=h;if(e.appendChild(_),this.processEmphasis(l.previousDelimiter),this.removeBracket(),l.node.unlink(),!n)for(l=this.brackets;null!==l;)l.image||(l.active=!1),l=l.previous;return!0}return this.removeBracket(),this.pos=t,e.appendChild(M("]")),!0},Z=function(e,t,n){null!==this.brackets&&(this.brackets.bracketAfter=!0),this.brackets={node:e,previous:this.brackets,previousDelimiter:this.delimiters,index:t,image:n,active:!0}},ee=function(){this.brackets=this.brackets.previous},te=function(e){var t;return!!(t=this.match(v))&&(e.appendChild(M(u(t))),!0)},ne=function(e){var t;return!!(t=this.match(A))&&(this.options.smart?e.appendChild(M(t.replace(E,"…").replace(C,function(e){var t=0,n=0;return e.length%3==0?n=e.length/3:e.length%2==0?t=e.length/2:e.length%3==2?(t=1,n=(e.length-2)/3):(t=2,n=(e.length-4)/3),"—".repeat(n)+"–".repeat(t)}))):e.appendChild(M(t)),!0)},re=function(e){this.pos+=1;var t=e._lastChild;if(t&&"text"===t.type&&" "===t._literal[t._literal.length-1]){var n=" "===t._literal[t._literal.length-2];t._literal=t._literal.replace(k,""),e.appendChild(new r(n?"linebreak":"softbreak"))}else e.appendChild(new r("softbreak"));return this.match(N),!0},oe=function(e,t){var n,r,o,a;this.subject=e,this.pos=0;var s=this.pos;if(0===(a=this.parseLinkLabel()))return 0;if(n=this.subject.substr(0,a),58!==this.peek())return this.pos=s,0;if(this.pos++,this.spnl(),null===(r=this.parseLinkDestination())||0===r.length)return this.pos=s,0;var l=this.pos;this.spnl(),null===(o=this.parseLinkTitle())&&(o="",this.pos=l);var u=!0;if(null===this.match(I)&&(""===o?u=!1:(o="",this.pos=l,u=null!==this.match(I))),!u)return this.pos=s,0;var c=i(n);return""===c?(this.pos=s,0):(t[c]||(t[c]={destination:r,title:o}),this.pos-s)},ie=function(e){var t=!1,n=this.peek();if(-1===n)return!1;switch(n){case 10:t=this.parseNewline(e);break;case 92:t=this.parseBackslash(e);break;case 96:t=this.parseBackticks(e);break;case 42:case 95:t=this.handleDelim(n,e);break;case 39:case 34:t=this.options.smart&&this.handleDelim(n,e);break;case 91:t=this.parseOpenBracket(e);break;case 33:t=this.parseBang(e);break;case 93:t=this.parseCloseBracket(e);break;case 60:t=this.parseAutolink(e)||this.parseHtmlTag(e);break;case 38:t=this.parseEntity(e);break;default:t=this.parseString(e)}return t||(this.pos+=1,e.appendChild(M(l(n)))),!0},ae=function(e){for(this.subject=e._string_content.trim(),this.pos=0,this.delimiters=null,this.brackets=null;this.parseInline(e););e._string_content=null,this.processEmphasis(null)};e.exports=function(e){return{subject:"",delimiters:null,brackets:null,pos:0,refmap:{},match:P,peek:L,spnl:F,parseBackticks:U,parseBackslash:j,parseAutolink:B,parseHtmlTag:G,scanDelims:q,handleDelim:V,parseLinkTitle:W,parseLinkDestination:K,parseLinkLabel:$,parseOpenBracket:Q,parseBang:X,parseCloseBracket:J,addBracket:Z,removeBracket:ee,parseEntity:te,parseString:ne,parseNewline:re,parseReference:oe,parseInline:ie,processEmphasis:z,removeDelimiter:H,options:e||{},parse:ae}}},function(e,t,n){"use strict";var r=/[ \t\r\n]+|[A-Z\xB5\xC0-\xD6\xD8-\xDF\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u0149\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u017F\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C5\u01C7\u01C8\u01CA\u01CB\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F0-\u01F2\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0345\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03AB\u03B0\u03C2\u03CF-\u03D1\u03D5\u03D6\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F0\u03F1\u03F4\u03F5\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u0587\u10A0-\u10C5\u10C7\u10CD\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E96-\u1E9B\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F50\u1F52\u1F54\u1F56\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1F80-\u1FAF\u1FB2-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD2\u1FD3\u1FD6-\u1FDB\u1FE2-\u1FE4\u1FE6-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2126\u212A\u212B\u2132\u2160-\u216F\u2183\u24B6-\u24CF\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AD\uA7B0\uA7B1\uFB00-\uFB06\uFB13-\uFB17\uFF21-\uFF3A]|\uD801[\uDC00-\uDC27]|\uD806[\uDCA0-\uDCBF]/g,o={A:"a",B:"b",C:"c",D:"d",E:"e",F:"f",G:"g",H:"h",I:"i",J:"j",K:"k",L:"l",M:"m",N:"n",O:"o",P:"p",Q:"q",R:"r",S:"s",T:"t",U:"u",V:"v",W:"w",X:"x",Y:"y",Z:"z","µ":"μ","À":"à","Á":"á","Â":"â","Ã":"ã","Ä":"ä","Å":"å","Æ":"æ","Ç":"ç","È":"è","É":"é","Ê":"ê","Ë":"ë","Ì":"ì","Í":"í","Î":"î","Ï":"ï","Ð":"ð","Ñ":"ñ","Ò":"ò","Ó":"ó","Ô":"ô","Õ":"õ","Ö":"ö","Ø":"ø","Ù":"ù","Ú":"ú","Û":"û","Ü":"ü","Ý":"ý","Þ":"þ","Ā":"ā","Ă":"ă","Ą":"ą","Ć":"ć","Ĉ":"ĉ","Ċ":"ċ","Č":"č","Ď":"ď","Đ":"đ","Ē":"ē","Ĕ":"ĕ","Ė":"ė","Ę":"ę","Ě":"ě","Ĝ":"ĝ","Ğ":"ğ","Ġ":"ġ","Ģ":"ģ","Ĥ":"ĥ","Ħ":"ħ","Ĩ":"ĩ","Ī":"ī","Ĭ":"ĭ","Į":"į","IJ":"ij","Ĵ":"ĵ","Ķ":"ķ","Ĺ":"ĺ","Ļ":"ļ","Ľ":"ľ","Ŀ":"ŀ","Ł":"ł","Ń":"ń","Ņ":"ņ","Ň":"ň","Ŋ":"ŋ","Ō":"ō","Ŏ":"ŏ","Ő":"ő","Œ":"œ","Ŕ":"ŕ","Ŗ":"ŗ","Ř":"ř","Ś":"ś","Ŝ":"ŝ","Ş":"ş","Š":"š","Ţ":"ţ","Ť":"ť","Ŧ":"ŧ","Ũ":"ũ","Ū":"ū","Ŭ":"ŭ","Ů":"ů","Ű":"ű","Ų":"ų","Ŵ":"ŵ","Ŷ":"ŷ","Ÿ":"ÿ","Ź":"ź","Ż":"ż","Ž":"ž","ſ":"s","Ɓ":"ɓ","Ƃ":"ƃ","Ƅ":"ƅ","Ɔ":"ɔ","Ƈ":"ƈ","Ɖ":"ɖ","Ɗ":"ɗ","Ƌ":"ƌ","Ǝ":"ǝ","Ə":"ə","Ɛ":"ɛ","Ƒ":"ƒ","Ɠ":"ɠ","Ɣ":"ɣ","Ɩ":"ɩ","Ɨ":"ɨ","Ƙ":"ƙ","Ɯ":"ɯ","Ɲ":"ɲ","Ɵ":"ɵ","Ơ":"ơ","Ƣ":"ƣ","Ƥ":"ƥ","Ʀ":"ʀ","Ƨ":"ƨ","Ʃ":"ʃ","Ƭ":"ƭ","Ʈ":"ʈ","Ư":"ư","Ʊ":"ʊ","Ʋ":"ʋ","Ƴ":"ƴ","Ƶ":"ƶ","Ʒ":"ʒ","Ƹ":"ƹ","Ƽ":"ƽ","DŽ":"dž","Dž":"dž","LJ":"lj","Lj":"lj","NJ":"nj","Nj":"nj","Ǎ":"ǎ","Ǐ":"ǐ","Ǒ":"ǒ","Ǔ":"ǔ","Ǖ":"ǖ","Ǘ":"ǘ","Ǚ":"ǚ","Ǜ":"ǜ","Ǟ":"ǟ","Ǡ":"ǡ","Ǣ":"ǣ","Ǥ":"ǥ","Ǧ":"ǧ","Ǩ":"ǩ","Ǫ":"ǫ","Ǭ":"ǭ","Ǯ":"ǯ","DZ":"dz","Dz":"dz","Ǵ":"ǵ","Ƕ":"ƕ","Ƿ":"ƿ","Ǹ":"ǹ","Ǻ":"ǻ","Ǽ":"ǽ","Ǿ":"ǿ","Ȁ":"ȁ","Ȃ":"ȃ","Ȅ":"ȅ","Ȇ":"ȇ","Ȉ":"ȉ","Ȋ":"ȋ","Ȍ":"ȍ","Ȏ":"ȏ","Ȑ":"ȑ","Ȓ":"ȓ","Ȕ":"ȕ","Ȗ":"ȗ","Ș":"ș","Ț":"ț","Ȝ":"ȝ","Ȟ":"ȟ","Ƞ":"ƞ","Ȣ":"ȣ","Ȥ":"ȥ","Ȧ":"ȧ","Ȩ":"ȩ","Ȫ":"ȫ","Ȭ":"ȭ","Ȯ":"ȯ","Ȱ":"ȱ","Ȳ":"ȳ","Ⱥ":"ⱥ","Ȼ":"ȼ","Ƚ":"ƚ","Ⱦ":"ⱦ","Ɂ":"ɂ","Ƀ":"ƀ","Ʉ":"ʉ","Ʌ":"ʌ","Ɇ":"ɇ","Ɉ":"ɉ","Ɋ":"ɋ","Ɍ":"ɍ","Ɏ":"ɏ","ͅ":"ι","Ͱ":"ͱ","Ͳ":"ͳ","Ͷ":"ͷ","Ϳ":"ϳ","Ά":"ά","Έ":"έ","Ή":"ή","Ί":"ί","Ό":"ό","Ύ":"ύ","Ώ":"ώ","Α":"α","Β":"β","Γ":"γ","Δ":"δ","Ε":"ε","Ζ":"ζ","Η":"η","Θ":"θ","Ι":"ι","Κ":"κ","Λ":"λ","Μ":"μ","Ν":"ν","Ξ":"ξ","Ο":"ο","Π":"π","Ρ":"ρ","Σ":"σ","Τ":"τ","Υ":"υ","Φ":"φ","Χ":"χ","Ψ":"ψ","Ω":"ω","Ϊ":"ϊ","Ϋ":"ϋ","ς":"σ","Ϗ":"ϗ","ϐ":"β","ϑ":"θ","ϕ":"φ","ϖ":"π","Ϙ":"ϙ","Ϛ":"ϛ","Ϝ":"ϝ","Ϟ":"ϟ","Ϡ":"ϡ","Ϣ":"ϣ","Ϥ":"ϥ","Ϧ":"ϧ","Ϩ":"ϩ","Ϫ":"ϫ","Ϭ":"ϭ","Ϯ":"ϯ","ϰ":"κ","ϱ":"ρ","ϴ":"θ","ϵ":"ε","Ϸ":"ϸ","Ϲ":"ϲ","Ϻ":"ϻ","Ͻ":"ͻ","Ͼ":"ͼ","Ͽ":"ͽ","Ѐ":"ѐ","Ё":"ё","Ђ":"ђ","Ѓ":"ѓ","Є":"є","Ѕ":"ѕ","І":"і","Ї":"ї","Ј":"ј","Љ":"љ","Њ":"њ","Ћ":"ћ","Ќ":"ќ","Ѝ":"ѝ","Ў":"ў","Џ":"џ","А":"а","Б":"б","В":"в","Г":"г","Д":"д","Е":"е","Ж":"ж","З":"з","И":"и","Й":"й","К":"к","Л":"л","М":"м","Н":"н","О":"о","П":"п","Р":"р","С":"с","Т":"т","У":"у","Ф":"ф","Х":"х","Ц":"ц","Ч":"ч","Ш":"ш","Щ":"щ","Ъ":"ъ","Ы":"ы","Ь":"ь","Э":"э","Ю":"ю","Я":"я","Ѡ":"ѡ","Ѣ":"ѣ","Ѥ":"ѥ","Ѧ":"ѧ","Ѩ":"ѩ","Ѫ":"ѫ","Ѭ":"ѭ","Ѯ":"ѯ","Ѱ":"ѱ","Ѳ":"ѳ","Ѵ":"ѵ","Ѷ":"ѷ","Ѹ":"ѹ","Ѻ":"ѻ","Ѽ":"ѽ","Ѿ":"ѿ","Ҁ":"ҁ","Ҋ":"ҋ","Ҍ":"ҍ","Ҏ":"ҏ","Ґ":"ґ","Ғ":"ғ","Ҕ":"ҕ","Җ":"җ","Ҙ":"ҙ","Қ":"қ","Ҝ":"ҝ","Ҟ":"ҟ","Ҡ":"ҡ","Ң":"ң","Ҥ":"ҥ","Ҧ":"ҧ","Ҩ":"ҩ","Ҫ":"ҫ","Ҭ":"ҭ","Ү":"ү","Ұ":"ұ","Ҳ":"ҳ","Ҵ":"ҵ","Ҷ":"ҷ","Ҹ":"ҹ","Һ":"һ","Ҽ":"ҽ","Ҿ":"ҿ","Ӏ":"ӏ","Ӂ":"ӂ","Ӄ":"ӄ","Ӆ":"ӆ","Ӈ":"ӈ","Ӊ":"ӊ","Ӌ":"ӌ","Ӎ":"ӎ","Ӑ":"ӑ","Ӓ":"ӓ","Ӕ":"ӕ","Ӗ":"ӗ","Ә":"ә","Ӛ":"ӛ","Ӝ":"ӝ","Ӟ":"ӟ","Ӡ":"ӡ","Ӣ":"ӣ","Ӥ":"ӥ","Ӧ":"ӧ","Ө":"ө","Ӫ":"ӫ","Ӭ":"ӭ","Ӯ":"ӯ","Ӱ":"ӱ","Ӳ":"ӳ","Ӵ":"ӵ","Ӷ":"ӷ","Ӹ":"ӹ","Ӻ":"ӻ","Ӽ":"ӽ","Ӿ":"ӿ","Ԁ":"ԁ","Ԃ":"ԃ","Ԅ":"ԅ","Ԇ":"ԇ","Ԉ":"ԉ","Ԋ":"ԋ","Ԍ":"ԍ","Ԏ":"ԏ","Ԑ":"ԑ","Ԓ":"ԓ","Ԕ":"ԕ","Ԗ":"ԗ","Ԙ":"ԙ","Ԛ":"ԛ","Ԝ":"ԝ","Ԟ":"ԟ","Ԡ":"ԡ","Ԣ":"ԣ","Ԥ":"ԥ","Ԧ":"ԧ","Ԩ":"ԩ","Ԫ":"ԫ","Ԭ":"ԭ","Ԯ":"ԯ","Ա":"ա","Բ":"բ","Գ":"գ","Դ":"դ","Ե":"ե","Զ":"զ","Է":"է","Ը":"ը","Թ":"թ","Ժ":"ժ","Ի":"ի","Լ":"լ","Խ":"խ","Ծ":"ծ","Կ":"կ","Հ":"հ","Ձ":"ձ","Ղ":"ղ","Ճ":"ճ","Մ":"մ","Յ":"յ","Ն":"ն","Շ":"շ","Ո":"ո","Չ":"չ","Պ":"պ","Ջ":"ջ","Ռ":"ռ","Ս":"ս","Վ":"վ","Տ":"տ","Ր":"ր","Ց":"ց","Ւ":"ւ","Փ":"փ","Ք":"ք","Օ":"օ","Ֆ":"ֆ","Ⴀ":"ⴀ","Ⴁ":"ⴁ","Ⴂ":"ⴂ","Ⴃ":"ⴃ","Ⴄ":"ⴄ","Ⴅ":"ⴅ","Ⴆ":"ⴆ","Ⴇ":"ⴇ","Ⴈ":"ⴈ","Ⴉ":"ⴉ","Ⴊ":"ⴊ","Ⴋ":"ⴋ","Ⴌ":"ⴌ","Ⴍ":"ⴍ","Ⴎ":"ⴎ","Ⴏ":"ⴏ","Ⴐ":"ⴐ","Ⴑ":"ⴑ","Ⴒ":"ⴒ","Ⴓ":"ⴓ","Ⴔ":"ⴔ","Ⴕ":"ⴕ","Ⴖ":"ⴖ","Ⴗ":"ⴗ","Ⴘ":"ⴘ","Ⴙ":"ⴙ","Ⴚ":"ⴚ","Ⴛ":"ⴛ","Ⴜ":"ⴜ","Ⴝ":"ⴝ","Ⴞ":"ⴞ","Ⴟ":"ⴟ","Ⴠ":"ⴠ","Ⴡ":"ⴡ","Ⴢ":"ⴢ","Ⴣ":"ⴣ","Ⴤ":"ⴤ","Ⴥ":"ⴥ","Ⴧ":"ⴧ","Ⴭ":"ⴭ","Ḁ":"ḁ","Ḃ":"ḃ","Ḅ":"ḅ","Ḇ":"ḇ","Ḉ":"ḉ","Ḋ":"ḋ","Ḍ":"ḍ","Ḏ":"ḏ","Ḑ":"ḑ","Ḓ":"ḓ","Ḕ":"ḕ","Ḗ":"ḗ","Ḙ":"ḙ","Ḛ":"ḛ","Ḝ":"ḝ","Ḟ":"ḟ","Ḡ":"ḡ","Ḣ":"ḣ","Ḥ":"ḥ","Ḧ":"ḧ","Ḩ":"ḩ","Ḫ":"ḫ","Ḭ":"ḭ","Ḯ":"ḯ","Ḱ":"ḱ","Ḳ":"ḳ","Ḵ":"ḵ","Ḷ":"ḷ","Ḹ":"ḹ","Ḻ":"ḻ","Ḽ":"ḽ","Ḿ":"ḿ","Ṁ":"ṁ","Ṃ":"ṃ","Ṅ":"ṅ","Ṇ":"ṇ","Ṉ":"ṉ","Ṋ":"ṋ","Ṍ":"ṍ","Ṏ":"ṏ","Ṑ":"ṑ","Ṓ":"ṓ","Ṕ":"ṕ","Ṗ":"ṗ","Ṙ":"ṙ","Ṛ":"ṛ","Ṝ":"ṝ","Ṟ":"ṟ","Ṡ":"ṡ","Ṣ":"ṣ","Ṥ":"ṥ","Ṧ":"ṧ","Ṩ":"ṩ","Ṫ":"ṫ","Ṭ":"ṭ","Ṯ":"ṯ","Ṱ":"ṱ","Ṳ":"ṳ","Ṵ":"ṵ","Ṷ":"ṷ","Ṹ":"ṹ","Ṻ":"ṻ","Ṽ":"ṽ","Ṿ":"ṿ","Ẁ":"ẁ","Ẃ":"ẃ","Ẅ":"ẅ","Ẇ":"ẇ","Ẉ":"ẉ","Ẋ":"ẋ","Ẍ":"ẍ","Ẏ":"ẏ","Ẑ":"ẑ","Ẓ":"ẓ","Ẕ":"ẕ","ẛ":"ṡ","Ạ":"ạ","Ả":"ả","Ấ":"ấ","Ầ":"ầ","Ẩ":"ẩ","Ẫ":"ẫ","Ậ":"ậ","Ắ":"ắ","Ằ":"ằ","Ẳ":"ẳ","Ẵ":"ẵ","Ặ":"ặ","Ẹ":"ẹ","Ẻ":"ẻ","Ẽ":"ẽ","Ế":"ế","Ề":"ề","Ể":"ể","Ễ":"ễ","Ệ":"ệ","Ỉ":"ỉ","Ị":"ị","Ọ":"ọ","Ỏ":"ỏ","Ố":"ố","Ồ":"ồ","Ổ":"ổ","Ỗ":"ỗ","Ộ":"ộ","Ớ":"ớ","Ờ":"ờ","Ở":"ở","Ỡ":"ỡ","Ợ":"ợ","Ụ":"ụ","Ủ":"ủ","Ứ":"ứ","Ừ":"ừ","Ử":"ử","Ữ":"ữ","Ự":"ự","Ỳ":"ỳ","Ỵ":"ỵ","Ỷ":"ỷ","Ỹ":"ỹ","Ỻ":"ỻ","Ỽ":"ỽ","Ỿ":"ỿ","Ἀ":"ἀ","Ἁ":"ἁ","Ἂ":"ἂ","Ἃ":"ἃ","Ἄ":"ἄ","Ἅ":"ἅ","Ἆ":"ἆ","Ἇ":"ἇ","Ἐ":"ἐ","Ἑ":"ἑ","Ἒ":"ἒ","Ἓ":"ἓ","Ἔ":"ἔ","Ἕ":"ἕ","Ἠ":"ἠ","Ἡ":"ἡ","Ἢ":"ἢ","Ἣ":"ἣ","Ἤ":"ἤ","Ἥ":"ἥ","Ἦ":"ἦ","Ἧ":"ἧ","Ἰ":"ἰ","Ἱ":"ἱ","Ἲ":"ἲ","Ἳ":"ἳ","Ἴ":"ἴ","Ἵ":"ἵ","Ἶ":"ἶ","Ἷ":"ἷ","Ὀ":"ὀ","Ὁ":"ὁ","Ὂ":"ὂ","Ὃ":"ὃ","Ὄ":"ὄ","Ὅ":"ὅ","Ὑ":"ὑ","Ὓ":"ὓ","Ὕ":"ὕ","Ὗ":"ὗ","Ὠ":"ὠ","Ὡ":"ὡ","Ὢ":"ὢ","Ὣ":"ὣ","Ὤ":"ὤ","Ὥ":"ὥ","Ὦ":"ὦ","Ὧ":"ὧ","Ᾰ":"ᾰ","Ᾱ":"ᾱ","Ὰ":"ὰ","Ά":"ά","ι":"ι","Ὲ":"ὲ","Έ":"έ","Ὴ":"ὴ","Ή":"ή","Ῐ":"ῐ","Ῑ":"ῑ","Ὶ":"ὶ","Ί":"ί","Ῠ":"ῠ","Ῡ":"ῡ","Ὺ":"ὺ","Ύ":"ύ","Ῥ":"ῥ","Ὸ":"ὸ","Ό":"ό","Ὼ":"ὼ","Ώ":"ώ","Ω":"ω","K":"k","Å":"å","Ⅎ":"ⅎ","Ⅰ":"ⅰ","Ⅱ":"ⅱ","Ⅲ":"ⅲ","Ⅳ":"ⅳ","Ⅴ":"ⅴ","Ⅵ":"ⅵ","Ⅶ":"ⅶ","Ⅷ":"ⅷ","Ⅸ":"ⅸ","Ⅹ":"ⅹ","Ⅺ":"ⅺ","Ⅻ":"ⅻ","Ⅼ":"ⅼ","Ⅽ":"ⅽ","Ⅾ":"ⅾ","Ⅿ":"ⅿ","Ↄ":"ↄ","Ⓐ":"ⓐ","Ⓑ":"ⓑ","Ⓒ":"ⓒ","Ⓓ":"ⓓ","Ⓔ":"ⓔ","Ⓕ":"ⓕ","Ⓖ":"ⓖ","Ⓗ":"ⓗ","Ⓘ":"ⓘ","Ⓙ":"ⓙ","Ⓚ":"ⓚ","Ⓛ":"ⓛ","Ⓜ":"ⓜ","Ⓝ":"ⓝ","Ⓞ":"ⓞ","Ⓟ":"ⓟ","Ⓠ":"ⓠ","Ⓡ":"ⓡ","Ⓢ":"ⓢ","Ⓣ":"ⓣ","Ⓤ":"ⓤ","Ⓥ":"ⓥ","Ⓦ":"ⓦ","Ⓧ":"ⓧ","Ⓨ":"ⓨ","Ⓩ":"ⓩ","Ⰰ":"ⰰ","Ⰱ":"ⰱ","Ⰲ":"ⰲ","Ⰳ":"ⰳ","Ⰴ":"ⰴ","Ⰵ":"ⰵ","Ⰶ":"ⰶ","Ⰷ":"ⰷ","Ⰸ":"ⰸ","Ⰹ":"ⰹ","Ⰺ":"ⰺ","Ⰻ":"ⰻ","Ⰼ":"ⰼ","Ⰽ":"ⰽ","Ⰾ":"ⰾ","Ⰿ":"ⰿ","Ⱀ":"ⱀ","Ⱁ":"ⱁ","Ⱂ":"ⱂ","Ⱃ":"ⱃ","Ⱄ":"ⱄ","Ⱅ":"ⱅ","Ⱆ":"ⱆ","Ⱇ":"ⱇ","Ⱈ":"ⱈ","Ⱉ":"ⱉ","Ⱊ":"ⱊ","Ⱋ":"ⱋ","Ⱌ":"ⱌ","Ⱍ":"ⱍ","Ⱎ":"ⱎ","Ⱏ":"ⱏ","Ⱐ":"ⱐ","Ⱑ":"ⱑ","Ⱒ":"ⱒ","Ⱓ":"ⱓ","Ⱔ":"ⱔ","Ⱕ":"ⱕ","Ⱖ":"ⱖ","Ⱗ":"ⱗ","Ⱘ":"ⱘ","Ⱙ":"ⱙ","Ⱚ":"ⱚ","Ⱛ":"ⱛ","Ⱜ":"ⱜ","Ⱝ":"ⱝ","Ⱞ":"ⱞ","Ⱡ":"ⱡ","Ɫ":"ɫ","Ᵽ":"ᵽ","Ɽ":"ɽ","Ⱨ":"ⱨ","Ⱪ":"ⱪ","Ⱬ":"ⱬ","Ɑ":"ɑ","Ɱ":"ɱ","Ɐ":"ɐ","Ɒ":"ɒ","Ⱳ":"ⱳ","Ⱶ":"ⱶ","Ȿ":"ȿ","Ɀ":"ɀ","Ⲁ":"ⲁ","Ⲃ":"ⲃ","Ⲅ":"ⲅ","Ⲇ":"ⲇ","Ⲉ":"ⲉ","Ⲋ":"ⲋ","Ⲍ":"ⲍ","Ⲏ":"ⲏ","Ⲑ":"ⲑ","Ⲓ":"ⲓ","Ⲕ":"ⲕ","Ⲗ":"ⲗ","Ⲙ":"ⲙ","Ⲛ":"ⲛ","Ⲝ":"ⲝ","Ⲟ":"ⲟ","Ⲡ":"ⲡ","Ⲣ":"ⲣ","Ⲥ":"ⲥ","Ⲧ":"ⲧ","Ⲩ":"ⲩ","Ⲫ":"ⲫ","Ⲭ":"ⲭ","Ⲯ":"ⲯ","Ⲱ":"ⲱ","Ⲳ":"ⲳ","Ⲵ":"ⲵ","Ⲷ":"ⲷ","Ⲹ":"ⲹ","Ⲻ":"ⲻ","Ⲽ":"ⲽ","Ⲿ":"ⲿ","Ⳁ":"ⳁ","Ⳃ":"ⳃ","Ⳅ":"ⳅ","Ⳇ":"ⳇ","Ⳉ":"ⳉ","Ⳋ":"ⳋ","Ⳍ":"ⳍ","Ⳏ":"ⳏ","Ⳑ":"ⳑ","Ⳓ":"ⳓ","Ⳕ":"ⳕ","Ⳗ":"ⳗ","Ⳙ":"ⳙ","Ⳛ":"ⳛ","Ⳝ":"ⳝ","Ⳟ":"ⳟ","Ⳡ":"ⳡ","Ⳣ":"ⳣ","Ⳬ":"ⳬ","Ⳮ":"ⳮ","Ⳳ":"ⳳ","Ꙁ":"ꙁ","Ꙃ":"ꙃ","Ꙅ":"ꙅ","Ꙇ":"ꙇ","Ꙉ":"ꙉ","Ꙋ":"ꙋ","Ꙍ":"ꙍ","Ꙏ":"ꙏ","Ꙑ":"ꙑ","Ꙓ":"ꙓ","Ꙕ":"ꙕ","Ꙗ":"ꙗ","Ꙙ":"ꙙ","Ꙛ":"ꙛ","Ꙝ":"ꙝ","Ꙟ":"ꙟ","Ꙡ":"ꙡ","Ꙣ":"ꙣ","Ꙥ":"ꙥ","Ꙧ":"ꙧ","Ꙩ":"ꙩ","Ꙫ":"ꙫ","Ꙭ":"ꙭ","Ꚁ":"ꚁ","Ꚃ":"ꚃ","Ꚅ":"ꚅ","Ꚇ":"ꚇ","Ꚉ":"ꚉ","Ꚋ":"ꚋ","Ꚍ":"ꚍ","Ꚏ":"ꚏ","Ꚑ":"ꚑ","Ꚓ":"ꚓ","Ꚕ":"ꚕ","Ꚗ":"ꚗ","Ꚙ":"ꚙ","Ꚛ":"ꚛ","Ꜣ":"ꜣ","Ꜥ":"ꜥ","Ꜧ":"ꜧ","Ꜩ":"ꜩ","Ꜫ":"ꜫ","Ꜭ":"ꜭ","Ꜯ":"ꜯ","Ꜳ":"ꜳ","Ꜵ":"ꜵ","Ꜷ":"ꜷ","Ꜹ":"ꜹ","Ꜻ":"ꜻ","Ꜽ":"ꜽ","Ꜿ":"ꜿ","Ꝁ":"ꝁ","Ꝃ":"ꝃ","Ꝅ":"ꝅ","Ꝇ":"ꝇ","Ꝉ":"ꝉ","Ꝋ":"ꝋ","Ꝍ":"ꝍ","Ꝏ":"ꝏ","Ꝑ":"ꝑ","Ꝓ":"ꝓ","Ꝕ":"ꝕ","Ꝗ":"ꝗ","Ꝙ":"ꝙ","Ꝛ":"ꝛ","Ꝝ":"ꝝ","Ꝟ":"ꝟ","Ꝡ":"ꝡ","Ꝣ":"ꝣ","Ꝥ":"ꝥ","Ꝧ":"ꝧ","Ꝩ":"ꝩ","Ꝫ":"ꝫ","Ꝭ":"ꝭ","Ꝯ":"ꝯ","Ꝺ":"ꝺ","Ꝼ":"ꝼ","Ᵹ":"ᵹ","Ꝿ":"ꝿ","Ꞁ":"ꞁ","Ꞃ":"ꞃ","Ꞅ":"ꞅ","Ꞇ":"ꞇ","Ꞌ":"ꞌ","Ɥ":"ɥ","Ꞑ":"ꞑ","Ꞓ":"ꞓ","Ꞗ":"ꞗ","Ꞙ":"ꞙ","Ꞛ":"ꞛ","Ꞝ":"ꞝ","Ꞟ":"ꞟ","Ꞡ":"ꞡ","Ꞣ":"ꞣ","Ꞥ":"ꞥ","Ꞧ":"ꞧ","Ꞩ":"ꞩ","Ɦ":"ɦ","Ɜ":"ɜ","Ɡ":"ɡ","Ɬ":"ɬ","Ʞ":"ʞ","Ʇ":"ʇ","A":"a","B":"b","C":"c","D":"d","E":"e","F":"f","G":"g","H":"h","I":"i","J":"j","K":"k","L":"l","M":"m","N":"n","O":"o","P":"p","Q":"q","R":"r","S":"s","T":"t","U":"u","V":"v","W":"w","X":"x","Y":"y","Z":"z","𐐀":"𐐨","𐐁":"𐐩","𐐂":"𐐪","𐐃":"𐐫","𐐄":"𐐬","𐐅":"𐐭","𐐆":"𐐮","𐐇":"𐐯","𐐈":"𐐰","𐐉":"𐐱","𐐊":"𐐲","𐐋":"𐐳","𐐌":"𐐴","𐐍":"𐐵","𐐎":"𐐶","𐐏":"𐐷","𐐐":"𐐸","𐐑":"𐐹","𐐒":"𐐺","𐐓":"𐐻","𐐔":"𐐼","𐐕":"𐐽","𐐖":"𐐾","𐐗":"𐐿","𐐘":"𐑀","𐐙":"𐑁","𐐚":"𐑂","𐐛":"𐑃","𐐜":"𐑄","𐐝":"𐑅","𐐞":"𐑆","𐐟":"𐑇","𐐠":"𐑈","𐐡":"𐑉","𐐢":"𐑊","𐐣":"𐑋","𐐤":"𐑌","𐐥":"𐑍","𐐦":"𐑎","𐐧":"𐑏","𑢠":"𑣀","𑢡":"𑣁","𑢢":"𑣂","𑢣":"𑣃","𑢤":"𑣄","𑢥":"𑣅","𑢦":"𑣆","𑢧":"𑣇","𑢨":"𑣈","𑢩":"𑣉","𑢪":"𑣊","𑢫":"𑣋","𑢬":"𑣌","𑢭":"𑣍","𑢮":"𑣎","𑢯":"𑣏","𑢰":"𑣐","𑢱":"𑣑","𑢲":"𑣒","𑢳":"𑣓","𑢴":"𑣔","𑢵":"𑣕","𑢶":"𑣖","𑢷":"𑣗","𑢸":"𑣘","𑢹":"𑣙","𑢺":"𑣚","𑢻":"𑣛","𑢼":"𑣜","𑢽":"𑣝","𑢾":"𑣞","𑢿":"𑣟","ß":"ss","İ":"i̇","ʼn":"ʼn","ǰ":"ǰ","ΐ":"ΐ","ΰ":"ΰ","և":"եւ","ẖ":"ẖ","ẗ":"ẗ","ẘ":"ẘ","ẙ":"ẙ","ẚ":"aʾ","ẞ":"ss","ὐ":"ὐ","ὒ":"ὒ","ὔ":"ὔ","ὖ":"ὖ","ᾀ":"ἀι","ᾁ":"ἁι","ᾂ":"ἂι","ᾃ":"ἃι","ᾄ":"ἄι","ᾅ":"ἅι","ᾆ":"ἆι","ᾇ":"ἇι","ᾈ":"ἀι","ᾉ":"ἁι","ᾊ":"ἂι","ᾋ":"ἃι","ᾌ":"ἄι","ᾍ":"ἅι","ᾎ":"ἆι","ᾏ":"ἇι","ᾐ":"ἠι","ᾑ":"ἡι","ᾒ":"ἢι","ᾓ":"ἣι","ᾔ":"ἤι","ᾕ":"ἥι","ᾖ":"ἦι","ᾗ":"ἧι","ᾘ":"ἠι","ᾙ":"ἡι","ᾚ":"ἢι","ᾛ":"ἣι","ᾜ":"ἤι","ᾝ":"ἥι","ᾞ":"ἦι","ᾟ":"ἧι","ᾠ":"ὠι","ᾡ":"ὡι","ᾢ":"ὢι","ᾣ":"ὣι","ᾤ":"ὤι","ᾥ":"ὥι","ᾦ":"ὦι","ᾧ":"ὧι","ᾨ":"ὠι","ᾩ":"ὡι","ᾪ":"ὢι","ᾫ":"ὣι","ᾬ":"ὤι","ᾭ":"ὥι","ᾮ":"ὦι","ᾯ":"ὧι","ᾲ":"ὰι","ᾳ":"αι","ᾴ":"άι","ᾶ":"ᾶ","ᾷ":"ᾶι","ᾼ":"αι","ῂ":"ὴι","ῃ":"ηι","ῄ":"ήι","ῆ":"ῆ","ῇ":"ῆι","ῌ":"ηι","ῒ":"ῒ","ΐ":"ΐ","ῖ":"ῖ","ῗ":"ῗ","ῢ":"ῢ","ΰ":"ΰ","ῤ":"ῤ","ῦ":"ῦ","ῧ":"ῧ","ῲ":"ὼι","ῳ":"ωι","ῴ":"ώι","ῶ":"ῶ","ῷ":"ῶι","ῼ":"ωι","ff":"ff","fi":"fi","fl":"fl","ffi":"ffi","ffl":"ffl","ſt":"st","st":"st","ﬓ":"մն","ﬔ":"մե","ﬕ":"մի","ﬖ":"վն","ﬗ":"մխ"};e.exports=function(e){return e.slice(1,e.length-1).trim().replace(r,function(e){return o[e]||" "})}},function(e,t,n){"use strict"; -/*! http://mths.be/fromcodepoint v0.2.1 by @mathias */if(String.fromCodePoint)e.exports=function(e){try{return String.fromCodePoint(e)}catch(e){if(e instanceof RangeError)return String.fromCharCode(65533);throw e}};else{var r=String.fromCharCode,o=Math.floor;e.exports=function(){var e,t,n=[],i=-1,a=arguments.length;if(!a)return"";for(var s="";++i<a;){var l=Number(arguments[i]);if(!isFinite(l)||l<0||l>1114111||o(l)!==l)return String.fromCharCode(65533);l<=65535?n.push(l):(e=55296+((l-=65536)>>10),t=l%1024+56320,n.push(e,t)),(i+1===a||n.length>16384)&&(s+=r.apply(null,n),n.length=0)}return s}}},function(e,t){ -/*! http://mths.be/repeat v0.2.0 by @mathias */ -String.prototype.repeat||function(){"use strict";var e=function(){try{var e={},t=Object.defineProperty,n=t(e,e,e)&&t}catch(e){}return n}(),t=function(e){if(null==this)throw TypeError();var t=String(this),n=e?Number(e):0;if(n!=n&&(n=0),n<0||n==1/0)throw RangeError();for(var r="";n;)n%2==1&&(r+=t),n>1&&(t+=t),n>>=1;return r};e?e(String.prototype,"repeat",{value:t,configurable:!0,writable:!0}):String.prototype.repeat=t}()},function(e,t,n){"use strict";var r=n(715),o=/^javascript:|vbscript:|file:|data:/i,i=/^data:image\/(?:png|gif|jpeg|webp)/i,a=function(e){return o.test(e)&&!i.test(e)};function s(e){(e=e||{}).softbreak=e.softbreak||"\n",this.disableTags=0,this.lastOut="\n",this.options=e}s.prototype=Object.create(r.prototype),s.prototype.text=function(e){this.out(e.literal)},s.prototype.html_inline=function(e){this.options.safe?this.lit("\x3c!-- raw HTML omitted --\x3e"):this.lit(e.literal)},s.prototype.html_block=function(e){this.cr(),this.options.safe?this.lit("\x3c!-- raw HTML omitted --\x3e"):this.lit(e.literal),this.cr()},s.prototype.softbreak=function(){this.lit(this.options.softbreak)},s.prototype.linebreak=function(){this.tag("br",[],!0),this.cr()},s.prototype.link=function(e,t){var n=this.attrs(e);t?(this.options.safe&&a(e.destination)||n.push(["href",this.esc(e.destination,!0)]),e.title&&n.push(["title",this.esc(e.title,!0)]),this.tag("a",n)):this.tag("/a")},s.prototype.image=function(e,t){t?(0===this.disableTags&&(this.options.safe&&a(e.destination)?this.lit('<img src="" alt="'):this.lit('<img src="'+this.esc(e.destination,!0)+'" alt="')),this.disableTags+=1):(this.disableTags-=1,0===this.disableTags&&(e.title&&this.lit('" title="'+this.esc(e.title,!0)),this.lit('" />')))},s.prototype.emph=function(e,t){this.tag(t?"em":"/em")},s.prototype.strong=function(e,t){this.tag(t?"strong":"/strong")},s.prototype.paragraph=function(e,t){var n=e.parent.parent,r=this.attrs(e);null!==n&&"list"===n.type&&n.listTight||(t?(this.cr(),this.tag("p",r)):(this.tag("/p"),this.cr()))},s.prototype.heading=function(e,t){var n="h"+e.level,r=this.attrs(e);t?(this.cr(),this.tag(n,r)):(this.tag("/"+n),this.cr())},s.prototype.code=function(e){this.tag("code"),this.out(e.literal),this.tag("/code")},s.prototype.code_block=function(e){var t=e.info?e.info.split(/\s+/):[],n=this.attrs(e);t.length>0&&t[0].length>0&&n.push(["class","language-"+this.esc(t[0],!0)]),this.cr(),this.tag("pre"),this.tag("code",n),this.out(e.literal),this.tag("/code"),this.tag("/pre"),this.cr()},s.prototype.thematic_break=function(e){var t=this.attrs(e);this.cr(),this.tag("hr",t,!0),this.cr()},s.prototype.block_quote=function(e,t){var n=this.attrs(e);t?(this.cr(),this.tag("blockquote",n),this.cr()):(this.cr(),this.tag("/blockquote"),this.cr())},s.prototype.list=function(e,t){var n="bullet"===e.listType?"ul":"ol",r=this.attrs(e);if(t){var o=e.listStart;null!==o&&1!==o&&r.push(["start",o.toString()]),this.cr(),this.tag(n,r),this.cr()}else this.cr(),this.tag("/"+n),this.cr()},s.prototype.item=function(e,t){var n=this.attrs(e);t?this.tag("li",n):(this.tag("/li"),this.cr())},s.prototype.custom_inline=function(e,t){t&&e.onEnter?this.lit(e.onEnter):!t&&e.onExit&&this.lit(e.onExit)},s.prototype.custom_block=function(e,t){this.cr(),t&&e.onEnter?this.lit(e.onEnter):!t&&e.onExit&&this.lit(e.onExit),this.cr()},s.prototype.esc=n(205).escapeXml,s.prototype.out=function(e){this.lit(this.esc(e,!1))},s.prototype.tag=function(e,t,n){if(!(this.disableTags>0)){if(this.buffer+="<"+e,t&&t.length>0)for(var r,o=0;void 0!==(r=t[o]);)this.buffer+=" "+r[0]+'="'+r[1]+'"',o++;n&&(this.buffer+=" /"),this.buffer+=">",this.lastOut=">"}},s.prototype.attrs=function(e){var t=[];if(this.options.sourcepos){var n=e.sourcepos;n&&t.push(["data-sourcepos",String(n[0][0])+":"+String(n[0][1])+"-"+String(n[1][0])+":"+String(n[1][1])])}return t},e.exports=s},function(e,t,n){"use strict";var r=n(715),o=/\<[^>]*\>/;function i(e){return e.replace(/([a-z])([A-Z])/g,"$1_$2").toLowerCase()}function a(e){e=e||{},this.disableTags=0,this.lastOut="\n",this.indentLevel=0,this.indent=" ",this.options=e}a.prototype=Object.create(r.prototype),a.prototype.render=function(e){var t,n;this.buffer="";var r,o,a,s,l,u,c=e.walker(),f=this.options;for(f.time&&console.time("rendering"),this.buffer+='<?xml version="1.0" encoding="UTF-8"?>\n',this.buffer+='<!DOCTYPE document SYSTEM "CommonMark.dtd">\n';r=c.next();)if(a=r.entering,u=(o=r.node).type,s=o.isContainer,l="thematic_break"===u||"linebreak"===u||"softbreak"===u,n=i(u),a){switch(t=[],u){case"document":t.push(["xmlns","http://commonmark.org/xml/1.0"]);break;case"list":null!==o.listType&&t.push(["type",o.listType.toLowerCase()]),null!==o.listStart&&t.push(["start",String(o.listStart)]),null!==o.listTight&&t.push(["tight",o.listTight?"true":"false"]);var d=o.listDelimiter;if(null!==d){var p="";p="."===d?"period":"paren",t.push(["delimiter",p])}break;case"code_block":o.info&&t.push(["info",o.info]);break;case"heading":t.push(["level",String(o.level)]);break;case"link":case"image":t.push(["destination",o.destination]),t.push(["title",o.title]);break;case"custom_inline":case"custom_block":t.push(["on_enter",o.onEnter]),t.push(["on_exit",o.onExit])}if(f.sourcepos){var m=o.sourcepos;m&&t.push(["sourcepos",String(m[0][0])+":"+String(m[0][1])+"-"+String(m[1][0])+":"+String(m[1][1])])}if(this.cr(),this.out(this.tag(n,t,l)),s)this.indentLevel+=1;else if(!s&&!l){var h=o.literal;h&&this.out(this.esc(h)),this.out(this.tag("/"+n))}}else this.indentLevel-=1,this.cr(),this.out(this.tag("/"+n));return f.time&&console.timeEnd("rendering"),this.buffer+="\n",this.buffer},a.prototype.out=function(e){this.disableTags>0?this.buffer+=e.replace(o,""):this.buffer+=e,this.lastOut=e},a.prototype.cr=function(){if("\n"!==this.lastOut){this.buffer+="\n",this.lastOut="\n";for(var e=this.indentLevel;e>0;e--)this.buffer+=this.indent}},a.prototype.tag=function(e,t,n){var r="<"+e;if(t&&t.length>0)for(var o,i=0;void 0!==(o=t[i]);)r+=" "+o[0]+'="'+this.esc(o[1])+'"',i++;return n&&(r+=" /"),r+=">"},a.prototype.esc=n(205).escapeXml,e.exports=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=l(n(31)),o=l(n(4)),i=l(n(5)),a=n(21),s=l(n(1836));function l(e){return e&&e.__esModule?e:{default:e}}var u=function(){function e(t,n){(0,o.default)(this,e),this.format="rich",this.value=t,this.format=n}return(0,i.default)(e,[{key:"toJSON",value:function(){return{value:this.value.toJSON(),format:this.format}}}],[{key:"fromJSON",value:function(t){return new e(a.Value.fromJSON(t.value),t.format)}}]),e}(),c=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"mx_composer_history_";(0,o.default)(this,e),this.history=[],this.lastIndex=0,this.currentIndex=0,this.prefix=n+t;for(var r=void 0;r=sessionStorage.getItem(this.prefix+"["+this.currentIndex+"]");this.currentIndex++)try{this.history.push(u.fromJSON(JSON.parse(r)))}catch(e){console.warn("Throwing away unserialisable history",e)}this.lastIndex=this.currentIndex,this.currentIndex=this.history.length}return(0,i.default)(e,[{key:"save",value:function(e,t){var n=new u(e,t);this.history.push(n),this.currentIndex=this.history.length,sessionStorage.setItem(this.prefix+"["+this.lastIndex+++"]",(0,r.default)(n.toJSON()))}},{key:"getItem",value:function(e){return this.currentIndex=(0,s.default)(this.currentIndex+e,0,this.history.length-1),this.history[this.currentIndex]}}]),e}();t.default=c,e.exports=t.default},function(e,t,n){var r=n(1837),o=n(713);e.exports=function(e,t,n){return void 0===n&&(n=t,t=void 0),void 0!==n&&(n=(n=o(n))==n?n:0),void 0!==t&&(t=(t=o(t))==t?t:0),r(o(e),t,n)}},function(e,t){e.exports=function(e,t,n){return e==e&&(void 0!==n&&(e=e<=n?e:n),void 0!==t&&(e=e>=t?e:t)),e}},function(e,t,n){"use strict";var r=s(n(31)),o=s(n(4)),i=s(n(5)),a=n(21);function s(e){return e&&e.__esModule?e:{default:e}}var l="editor_state_",u=function(){function e(){(0,o.default)(this,e),this.prefix=l}return(0,i.default)(e,[{key:"_getKey",value:function(e){return this.prefix+e}},{key:"setEditorState",value:function(e,t,n){localStorage.setItem(this._getKey(e),(0,r.default)({editor_state:t.toJSON({preserveSelection:!0,preserveKeys:!0}),rich_text:n}))}},{key:"getEditorState",value:function(e){var t=localStorage.getItem(this._getKey(e)),n=void 0;if(t){if(!(n=JSON.parse(t))||void 0===n.rich_text||void 0===n.editor_state)return;n.editor_state=a.Value.fromJSON(n.editor_state)}return n}}]),e}(),c=null;c||(c=new u),e.exports=c},function(e,t,n){"use strict";var r=f(n(65)),o=f(n(0)),i=f(n(1)),a=f(n(8)),s=f(n(27)),l=f(n(717)),u=n(2),c=f(n(1840));function f(e){return e&&e.__esModule?e:{default:e}}e.exports=o.default.createClass({displayName:"PinnedEventsPanel",propTypes:{room:i.default.object.isRequired,onCancelClick:i.default.func},getInitialState:function(){return{loading:!0}},componentDidMount:function(){this._updatePinnedMessages(),a.default.get().on("RoomState.events",this._onStateEvent)},componentWillUnmount:function(){a.default.get()&&a.default.get().removeListener("RoomState.events",this._onStateEvent)},_onStateEvent:function(e){e.getRoomId()===this.props.room.roomId&&"m.room.pinned_events"===e.getType()&&this._updatePinnedMessages()},_updatePinnedMessages:function(){var e=this,t=this.props.room.currentState.getStateEvents("m.room.pinned_events","");if(t&&t.getContent().pinned){var n=[],o=a.default.get();t.getContent().pinned.map(function(t){n.push(o.getEventTimeline(e.props.room.getUnfilteredTimelineSet(),t,0).then(function(e){var n=e.getEvents().find(function(e){return e.getId()===t});return{eventId:t,timeline:e,event:n}}).catch(function(n){return console.error("Error looking up pinned event "+t+" in room "+e.props.room.roomId),console.error(n),null}))}),r.default.all(n).then(function(t){var n=t.filter(function(e){return c.default.isPinnable(e.event)});e.setState({loading:!1,pinned:n})})}else this.setState({loading:!1,pinned:[]});this._updateReadState()},_updateReadState:function(){var e=this.props.room.currentState.getStateEvents("m.room.pinned_events","");if(e){var t=[],n=this.props.room.getAccountData("im.vector.room.read_pins");n&&n.getContent()&&(t=n.getContent().event_ids||[]),t.includes(e.getId())||(t.push(e.getId()),t=t.reverse().splice(0,10).reverse(),a.default.get().setRoomAccountData(this.props.room.roomId,"im.vector.room.read_pins",{event_ids:t}))}},_getPinnedTiles:function(){var e=this;return 0===this.state.pinned.length?o.default.createElement("div",null,(0,u._t)("No pinned messages.")):this.state.pinned.map(function(t){return o.default.createElement(l.default,{key:t.event.getId(),mxRoom:e.props.room,mxEvent:t.event,onUnpinned:e._updatePinnedMessages})})},render:function(){var e=o.default.createElement("div",null,(0,u._t)("Loading..."));return this.state&&!this.state.loading&&(e=this._getPinnedTiles()),o.default.createElement("div",{className:"mx_PinnedEventsPanel"},o.default.createElement("div",{className:"mx_PinnedEventsPanel_body"},o.default.createElement(s.default,{className:"mx_PinnedEventsPanel_cancel",onClick:this.props.onCancelClick},o.default.createElement("img",{className:"mx_filterFlipColor",src:"img/cancel.svg",width:"18",height:"18"})),o.default.createElement("h3",{className:"mx_PinnedEventsPanel_header"},(0,u._t)("Pinned Messages")),e))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(4)),o=i(n(5));function i(e){return e&&e.__esModule?e:{default:e}}var a=function(){function e(){(0,r.default)(this,e)}return(0,o.default)(e,null,[{key:"isPinnable",value:function(e){return!!e&&("m.room.message"===e.getType()&&!e.isRedacted())}}]),e}();t.default=a,e.exports=t.default},function(e,t,n){"use strict";var r=a(n(0)),o=a(n(1)),i=n(2);function a(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"PresenceLabel",propTypes:{activeAgo:o.default.number,currentlyActive:o.default.bool,presenceState:o.default.string},getDefaultProps:function(){return{ago:-1,presenceState:null}},getDuration:function(e){if(e){var t=parseInt(e/1e3),n=t%60,r=parseInt(t/60)%60,o=parseInt(t/3600)%24,a=parseInt(t/86400);return t<60?t<0?(0,i._t)("%(duration)ss",{duration:0}):(0,i._t)("%(duration)ss",{duration:n}):t<3600?(0,i._t)("%(duration)sm",{duration:r}):t<86400?(0,i._t)("%(duration)sh",{duration:o}):(0,i._t)("%(duration)sd",{duration:a})}},getPrettyPresence:function(e,t,n){if(!n&&void 0!==t&&t>0){var r=this.getDuration(t);return"online"===e?(0,i._t)("Online for %(duration)s",{duration:r}):"unavailable"===e?(0,i._t)("Idle for %(duration)s",{duration:r}):"offline"===e?(0,i._t)("Offline for %(duration)s",{duration:r}):(0,i._t)("Unknown for %(duration)s",{duration:r})}return"online"===e?(0,i._t)("Online"):"unavailable"===e?(0,i._t)("Idle"):"offline"===e?(0,i._t)("Offline"):(0,i._t)("Unknown")},render:function(){return r.default.createElement("div",{className:"mx_PresenceLabel"},this.getPrettyPresence(this.props.presenceState,this.props.activeAgo,this.props.currentlyActive))}})},function(e,t,n){"use strict";(function(t){var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1)),o=n(2),i=n(143);var a=n(0),s=n(41),l=n(3),u=n(1843);n(1844);var c=!1;try{t.localStorage&&(c="true"==t.localStorage.getItem("avatar_bounce"))}catch(e){}e.exports=a.createClass({displayName:"ReadReceiptMarker",propTypes:{member:r.default.object,fallbackUserId:r.default.string.isRequired,leftOffset:r.default.number,hidden:r.default.bool,suppressAnimation:r.default.bool,readReceiptInfo:r.default.object,checkUnmounting:r.default.func,onClick:r.default.func,timestamp:r.default.number,showTwelveHour:r.default.bool},getDefaultProps:function(){return{leftOffset:0}},getInitialState:function(){return{suppressDisplay:!this.props.suppressAnimation}},componentWillUnmount:function(){var e=this.props.readReceiptInfo;if(e&&(!this.props.checkUnmounting||!this.props.checkUnmounting())){var t=s.findDOMNode(this);e.top=t.offsetTop,e.left=t.offsetLeft,e.parent=t.offsetParent}},componentDidMount:function(){if(this.state.suppressDisplay){var e=-15,t=this.props.readReceiptInfo;t&&t.parent&&(e=t.top+t.parent.getBoundingClientRect().top);var n=s.findDOMNode(this),r=void 0;n.offsetParent?r=e-n.offsetParent.getBoundingClientRect().top:(console.warn("ReadReceiptMarker for "+this.props.fallbackUserId+" in has no offsetParent"),r=0);var o=[],i=[];if(t&&t.left){o.push({top:r+"px",left:t.left+"px"});i.push({duration:100,easing:"easeOut"})}o.push({top:r+"px",left:"0px"}),i.push({duration:c?Math.min(200*Math.log(Math.abs(r)),3e3):300,easing:c?"easeOutBounce":"easeOutCubic"}),this.setState({suppressDisplay:!1,startStyles:o,enterTransitionOpts:i})}},render:function(){var e=l.getComponent("avatars.MemberAvatar");if(this.state.suppressDisplay)return a.createElement("div",null);var t={left:this.props.leftOffset+"px",top:"0px",visibility:this.props.hidden?"hidden":"visible"},n=void 0;if(this.props.timestamp){var r=(0,i.formatDate)(new Date(this.props.timestamp),this.props.showTwelveHour);n=this.props.member&&this.props.fallbackUserId!==this.props.member.rawDisplayName?(0,o._t)("Seen by %(displayName)s (%(userName)s) at %(dateTime)s",{displayName:this.props.member.rawDisplayName,userName:this.props.fallbackUserId,dateTime:r}):(0,o._t)("Seen by %(userName)s at %(dateTime)s",{userName:this.props.fallbackUserId,dateTime:r})}return a.createElement(u,{startStyles:this.state.startStyles,enterTransitionOpts:this.state.enterTransitionOpts},a.createElement(e,{member:this.props.member,fallbackUserId:this.props.fallbackUserId,"aria-hidden":"true",width:14,height:14,resizeMethod:"crop",style:t,title:n,onClick:this.props.onClick}))}})}).call(this,n(15))},function(e,t,n){"use strict";var r=i(n(126)),o=i(n(1));function i(e){return e&&e.__esModule?e:{default:e}}var a=n(0),s=n(41),l=n(239);e.exports=a.createClass({displayName:"Velociraptor",propTypes:{children:o.default.any,transition:o.default.object,startStyles:o.default.array,enterTransitionOpts:o.default.array},getDefaultProps:function(){return{startStyles:[],enterTransitionOpts:[]}},componentWillMount:function(){this.nodes={},this._updateChildren(this.props.children)},componentWillReceiveProps:function(e){this._updateChildren(e.children)},_updateChildren:function(e){var t=this,n=this.children||{};this.children={},a.Children.toArray(e).forEach(function(e){if(n[e.key]){var r=n[e.key],o=s.findDOMNode(t.nodes[r.key]);o&&o.style.left!=e.props.style.left&&l(o,{left:e.props.style.left},t.props.transition).then(function(){"visible"==o.style.visibility&&"hidden"==e.props.style.visibility&&(o.style.visibility=e.props.style.visibility)}),o&&"hidden"==o.style.visibility&&"visible"==e.props.style.visibility&&(o.style.visibility=e.props.style.visibility),t.children[e.key]=a.cloneElement(r,e.props,e.props.children)}else{var i={},u=e.props.style,c=t.props.startStyles;if(c.length>0){var f=c[0];i.style=f}i.ref=function(n){return t._collectNode(e.key,n,u)},t.children[e.key]=a.cloneElement(e,i)}})},_collectNode:function(e,t,n){if(t&&void 0===this.nodes[e]&&this.props.startStyles.length>0){for(var r=this.props.startStyles,o=this.props.enterTransitionOpts,i=s.findDOMNode(t),a=1;a<r.length;++a)l(i,r[a],o[a-1]);l(i,n,o[a-1]).then(function(){i.style.visibility=n.visibility})}else if(null===t){var u=s.findDOMNode(this.nodes[e]);u&&l.Utilities.removeData(u)}this.nodes[e]=t},render:function(){return a.createElement("span",null,(0,r.default)(this.children))}})},function(e,t,n){"use strict";n(239).Easings.easeOutBounce=function(e){return 1-function(e){for(var t=void 0,n=4;e<((t=Math.pow(2,--n))-1)/11;);return 1/Math.pow(4,3-n)-7.5625*Math.pow((3*t-2)/22-e,2)}(1-e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(3)),o=c(n(10)),i=c(n(0)),a=n(2),s=c(n(1)),l=c(n(24)),u=n(718);function c(e){return e&&e.__esModule?e:{default:e}}t.default=i.default.createClass({displayName:"RoomDetailList",propTypes:{rooms:s.default.arrayOf(u.roomShape),className:s.default.string},getRows:function(){var e=this;if(!this.props.rooms)return[];var t=r.default.getComponent("rooms.RoomDetailRow");return this.props.rooms.map(function(n,r){return i.default.createElement(t,{key:r,room:n,onClick:e.onDetailsClick})})},onDetailsClick:function(e,t){o.default.dispatch({action:"view_room",room_id:t.roomId,room_alias:t.canonicalAlias||(t.aliases||[])[0]})},render:function(){var e=void 0;return e=0===this.getRows().length?i.default.createElement("i",null,(0,a._t)("No rooms to show")):i.default.createElement("table",{ref:"directory_table",className:"mx_RoomDirectory_table"},i.default.createElement("tbody",null,this.getRows())),i.default.createElement("div",{className:(0,l.default)("mx_RoomDetailList",this.props.className)},e)}}),e.exports=t.default},function(e,t,n){"use strict";var r=n(0);e.exports=r.createClass({displayName:"RoomDropTarget",render:function(){return r.createElement("div",{className:"mx_RoomDropTarget_container"},r.createElement("div",{className:"mx_RoomDropTarget"},r.createElement("div",{className:"mx_RoomDropTarget_label"},this.props.label)))}})},function(e,t,n){"use strict";var r=y(n(0)),o=y(n(1)),i=y(n(24)),a=y(n(3)),s=n(2),l=y(n(8)),u=y(n(16)),c=y(n(10)),f=y(n(201)),d=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(251)),p=y(n(314)),m=y(n(129)),h=y(n(27)),_=y(n(680)),g=n(719),v=y(n(22));function y(e){return e&&e.__esModule?e:{default:e}}(0,m.default)(d),e.exports=r.default.createClass({displayName:"RoomHeader",propTypes:{room:o.default.object,oobData:o.default.object,editing:o.default.bool,saving:o.default.bool,inRoom:o.default.bool,collapsedRhs:o.default.bool,onSettingsClick:o.default.func,onPinnedClick:o.default.func,onSaveClick:o.default.func,onSearchClick:o.default.func,onLeaveClick:o.default.func,onCancelClick:o.default.func},getDefaultProps:function(){return{editing:!1,inRoom:!1,onSaveClick:function(){},onCancelClick:null}},componentDidMount:function(){var e=l.default.get();e.on("RoomState.events",this._onRoomStateEvents),e.on("Room.accountData",this._onRoomAccountData),this.props.room&&this.props.room.on("Room.name",this._onRoomNameChange)},componentDidUpdate:function(){this.refs.topic&&(0,p.default)(this.refs.topic,m.default.options)},componentWillUnmount:function(){this.props.room&&this.props.room.removeListener("Room.name",this._onRoomNameChange);var e=l.default.get();e&&(e.removeListener("RoomState.events",this._onRoomStateEvents),e.removeListener("Room.accountData",this._onRoomAccountData))},_onRoomStateEvents:function(e,t){this.props.room&&e.getRoomId()===this.props.room.roomId&&this._rateLimitedUpdate()},_onRoomAccountData:function(e,t){this.props.room&&t.roomId===this.props.room.roomId&&"im.vector.room.read_pins"===e.getType()&&this._rateLimitedUpdate()},_rateLimitedUpdate:new f.default(function(){this.forceUpdate()},500),_onRoomNameChange:function(e){this.forceUpdate()},onAvatarPickerClick:function(e){this.refs.file_label&&this.refs.file_label.click()},onAvatarSelected:function(e){var t=this.refs.changeAvatar;t?t.onFileSelected(e).catch(function(e){var t="string"==typeof e?e:e.error||"",n=a.default.getComponent("dialogs.ErrorDialog");console.error("Failed to set avatar: "+t),u.default.createTrackedDialog("Failed to set avatar","",n,{title:(0,s._t)("Error"),description:(0,s._t)("Failed to set avatar.")})}).done():console.error("No ChangeAvatar found to upload image to!")},onAvatarRemoveClick:function(){l.default.get().sendStateEvent(this.props.room.roomId,"m.room.avatar",{url:null},"")},onShowRhsClick:function(e){c.default.dispatch({action:"show_right_panel"})},onShareRoomClick:function(e){var t=a.default.getComponent("dialogs.ShareDialog");u.default.createTrackedDialog("share room dialog","",t,{target:this.props.room})},_hasUnreadPins:function(){var e=this.props.room.currentState.getStateEvents("m.room.pinned_events","");if(!e)return!1;if(e.getContent().pinned&&e.getContent().pinned.length<=0)return!1;var t=this.props.room.getAccountData("im.vector.room.read_pins");if(t&&t.getContent()){var n=t.getContent().event_ids||[];if(n)return!n.includes(e.getId())}return!0},_hasPins:function(){var e=this.props.room.currentState.getStateEvents("m.room.pinned_events","");return!!e&&!(e.getContent().pinned&&e.getContent().pinned.length<=0)},getEditedName:function(){var e=void 0;return this.refs.nameEditor&&(e=this.refs.nameEditor.getRoomName()),e},getEditedTopic:function(){var e=void 0;return this.refs.topicEditor&&(e=this.refs.topicEditor.getTopic()),e},render:function(){var e=a.default.getComponent("avatars.RoomAvatar"),t=a.default.getComponent("settings.ChangeAvatar"),n=a.default.getComponent("elements.TintableSvg"),o=a.default.getComponent("elements.EmojiText"),u=null,c=null,f=null,d=null,p=null,m=null,y=null,b=null,E=void 0,C=void 0,S=void 0;if(this.props.editing){var D=l.default.get().credentials.userId;E=this.props.room.currentState.maySendStateEvent("m.room.name",D),C=this.props.room.currentState.maySendStateEvent("m.room.avatar",D),S=this.props.room.currentState.maySendStateEvent("m.room.topic",D),m=r.default.createElement(h.default,{className:"mx_RoomHeader_textButton",onClick:this.props.onSaveClick},(0,s._t)("Save"))}if(this.props.onCancelClick&&(d=r.default.createElement(g.CancelButton,{onClick:this.props.onCancelClick})),this.props.saving){var w=a.default.getComponent("elements.Spinner");p=r.default.createElement("div",{className:"mx_RoomHeader_spinner"},r.default.createElement(w,null))}if(E){var T=a.default.getComponent("rooms.RoomNameEditor");u=r.default.createElement(T,{ref:"nameEditor",room:this.props.room})}else{this.props.searchInfo&&void 0!==this.props.searchInfo.searchCount&&null!==this.props.searchInfo.searchCount&&(c=r.default.createElement("div",{className:"mx_RoomHeader_searchStatus"}," ",(0,s._t)("(~%(count)s results)",{count:this.props.searchInfo.searchCount})));var x=!1,R=this.props.room?this.props.room.getJoinedMembers():void 0;if(R&&1===R.length&&R[0].userId===l.default.get().credentials.userId){var k=this.props.room.currentState.getStateEvents("m.room.name","");k&&k.getContent().name||(x=!0)}var N=(0,s._t)("Join Room");this.props.oobData&&this.props.oobData.name?N=this.props.oobData.name:this.props.room&&(N=this.props.room.name);var I=(0,i.default)("mx_RoomHeader_nametext",{mx_RoomHeader_settingsHint:x});u=r.default.createElement("div",{className:"mx_RoomHeader_name",onClick:this.props.onSettingsClick},r.default.createElement(o,{dir:"auto",element:"div",className:I,title:N},N),c)}if(S){var O=a.default.getComponent("rooms.RoomTopicEditor");f=r.default.createElement(O,{ref:"topicEditor",room:this.props.room})}else{var A=void 0;if(this.props.room){var M=this.props.room.currentState.getStateEvents("m.room.topic","");M&&(A=M.getContent().topic)}A&&(f=r.default.createElement("div",{className:"mx_RoomHeader_topic",ref:"topic",title:A,dir:"auto"},A))}var P=null;if(C?P=r.default.createElement("div",{className:"mx_RoomHeader_avatarPicker"},r.default.createElement("div",{onClick:this.onAvatarPickerClick},r.default.createElement(t,{ref:"changeAvatar",room:this.props.room,showUploadSection:!1,width:48,height:48})),r.default.createElement("div",{className:"mx_RoomHeader_avatarPicker_edit"},r.default.createElement("label",{htmlFor:"avatarInput",ref:"file_label"},r.default.createElement("img",{src:"img/camera.svg",alt:(0,s._t)("Upload avatar"),title:(0,s._t)("Upload avatar"),width:"17",height:"15"})),r.default.createElement("input",{id:"avatarInput",type:"file",onChange:this.onAvatarSelected})),r.default.createElement("div",{className:"mx_RoomHeader_avatarPicker_remove",onClick:this.onAvatarRemoveClick},r.default.createElement("img",{src:"img/cancel.svg",className:"mx_filterFlipColor",width:"10",alt:(0,s._t)("Remove avatar"),title:(0,s._t)("Remove avatar")}))):(this.props.room||this.props.oobData&&this.props.oobData.name)&&(P=r.default.createElement(e,{room:this.props.room,width:48,height:48,oobData:this.props.oobData,viewAvatarOnClick:!0})),this.props.onSettingsClick&&(y=r.default.createElement(h.default,{className:"mx_RoomHeader_button",onClick:this.props.onSettingsClick,title:(0,s._t)("Settings")},r.default.createElement(n,{src:"img/icons-settings-room.svg",width:"16",height:"16"}))),this.props.onPinnedClick&&v.default.isFeatureEnabled("feature_pinning")){var L=null;this._hasUnreadPins()?L=r.default.createElement("div",{className:"mx_RoomHeader_pinsIndicator mx_RoomHeader_pinsIndicatorUnread"}):this._hasPins()&&(L=r.default.createElement("div",{className:"mx_RoomHeader_pinsIndicator"})),b=r.default.createElement(h.default,{className:"mx_RoomHeader_button mx_RoomHeader_pinnedButton",onClick:this.props.onPinnedClick,title:(0,s._t)("Pinned Messages")},L,r.default.createElement(n,{src:"img/icons-pin.svg",width:"16",height:"16"}))}var F=void 0;this.props.onForgetClick&&(F=r.default.createElement(h.default,{className:"mx_RoomHeader_button",onClick:this.props.onForgetClick,title:(0,s._t)("Forget room")},r.default.createElement(n,{src:"img/leave.svg",width:"26",height:"20"})));var U=void 0;this.props.onSearchClick&&this.props.inRoom&&(U=r.default.createElement(h.default,{className:"mx_RoomHeader_button",onClick:this.props.onSearchClick,title:(0,s._t)("Search")},r.default.createElement(n,{src:"img/icons-search.svg",width:"35",height:"35"})));var j=void 0;this.props.inRoom&&(j=r.default.createElement(h.default,{className:"mx_RoomHeader_button",onClick:this.onShareRoomClick,title:(0,s._t)("Share room")},r.default.createElement(n,{src:"img/icons-share.svg",width:"16",height:"16"})));var B=void 0;this.props.collapsedRhs&&(B=r.default.createElement(h.default,{className:"mx_RoomHeader_button",onClick:this.onShowRhsClick,title:(0,s._t)("Show panel")},r.default.createElement(n,{src:"img/maximise.svg",width:"10",height:"16"})));var G=void 0,q=void 0;return this.props.room&&this.props.room.roomId&&this.props.inRoom&&(q=r.default.createElement(_.default,{room:this.props.room})),this.props.editing||(G=r.default.createElement("div",{className:"mx_RoomHeader_rightRow"},y,b,j,q,F,U,B)),r.default.createElement("div",{className:"mx_RoomHeader "+(this.props.editing?"mx_RoomHeader_editing":"")},r.default.createElement("div",{className:"mx_RoomHeader_wrapper"},r.default.createElement("div",{className:"mx_RoomHeader_leftRow"},r.default.createElement("div",{className:"mx_RoomHeader_avatar"},P),r.default.createElement("div",{className:"mx_RoomHeader_info"},u,f)),p,m,d,G))}})},function(e,t,n){"use strict";var r=g(n(64)),o=g(n(14)),i=g(n(126)),a=g(n(20)),s=g(n(211)),l=g(n(138)),u=g(n(22)),c=g(n(1)),f=n(2),d=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(146)),p=g(n(130)),m=g(n(448)),h=g(n(445)),_=g(n(81));function g(e){return e&&e.__esModule?e:{default:e}}var v=n(0),y=n(41),b=n(8),E=n(127),C=n(10),S=n(3),D=n(201),w=n(707),T=/^(m\.(favourite|lowpriority|server_notice)|im\.vector\.fake\.(invite|recent|direct|archived))$/;e.exports=v.createClass({displayName:"RoomList",propTypes:{ConferenceHandler:c.default.any,collapsed:c.default.bool.isRequired,searchFilter:c.default.string},getInitialState:function(){return{isLoadingLeftRooms:!1,totalRoomCount:null,lists:{},incomingCall:null,selectedTags:[]}},componentWillMount:function(){var e=this;this.mounted=!1;var t=b.get();t.on("Room",this.onRoom),t.on("deleteRoom",this.onDeleteRoom),t.on("Room.receipt",this.onRoomReceipt),t.on("RoomMember.name",this.onRoomMemberName),t.on("Event.decrypted",this.onEventDecrypted),t.on("accountData",this.onAccountData),t.on("Group.myMembership",this._onGroupMyMembership);var n=p.default.shared();this._visibleRoomsForGroup={},this._visibleRooms=b.get().getVisibleRooms(),this._groupStoreToken=_.default.registerListener(null,function(){(m.default.getOrderedTags()||[]).forEach(function(t){"+"===t[0]&&(e.updateVisibleRoomsForTag(n,t),e.updateVisibleRooms())})}),this._tagStoreToken=m.default.addListener(function(){e.updateVisibleRooms()}),this._roomListStoreToken=h.default.addListener(function(){e._delayedRefreshRoomList()}),this.refreshRoomList(),this._delayedRefreshRoomListLoopCount=0},componentDidMount:function(){this.dispatcherRef=C.register(this.onAction),this._updateStickyHeaders(!0),this.mounted=!0},componentDidUpdate:function(){this._updateStickyHeaders(!0),this._repositionIncomingCallBox(void 0,!1)},onAction:function(e){switch(e.action){case"view_tooltip":this.tooltip=e.tooltip;break;case"call_state":var t=E.getCall(e.room_id);t&&"ringing"===t.call_state?(this.setState({incomingCall:t}),this._repositionIncomingCallBox(void 0,!0)):this.setState({incomingCall:null})}},componentWillUnmount:function(){this.mounted=!1,C.unregister(this.dispatcherRef),b.get()&&(b.get().removeListener("Room",this.onRoom),b.get().removeListener("deleteRoom",this.onDeleteRoom),b.get().removeListener("Room.receipt",this.onRoomReceipt),b.get().removeListener("RoomMember.name",this.onRoomMemberName),b.get().removeListener("Event.decrypted",this.onEventDecrypted),b.get().removeListener("accountData",this.onAccountData),b.get().removeListener("Group.myMembership",this._onGroupMyMembership)),this._tagStoreToken&&this._tagStoreToken.remove(),this._roomListStoreToken&&this._roomListStoreToken.remove(),this._groupStoreToken&&this._groupStoreToken.unregister(),this._delayedRefreshRoomList.cancelPendingCall()},onRoom:function(e){this.updateVisibleRooms()},onDeleteRoom:function(e){this.updateVisibleRooms()},onArchivedHeaderClick:function(e,t){if(!e){var n=this;this.setState({isLoadingLeftRooms:!0}),this._updateStickyHeaders(!0,t),b.get().syncLeftRooms().catch(function(e){console.error("Failed to sync left rooms: %s",e),console.error(e)}).finally(function(){n.setState({isLoadingLeftRooms:!1})})}},onSubListHeaderClick:function(e,t){this._updateStickyHeaders(!0,t)},onRoomReceipt:function(e,t){w.findReadReceiptFromUserId(e,b.get().credentials.userId)&&this._delayedRefreshRoomList()},onRoomMemberName:function(e,t){this._delayedRefreshRoomList()},onEventDecrypted:function(e){this._delayedRefreshRoomList()},onAccountData:function(e){"m.direct"==e.getType()&&this._delayedRefreshRoomList()},_onGroupMyMembership:function(e){this.forceUpdate()},_delayedRefreshRoomList:new D(function(){this.refreshRoomList()},500),updateVisibleRoomsForTag:function(e,t){var n=this;this.mounted&&"+"===t[0]&&(this._visibleRoomsForGroup[t]=[],_.default.getGroupRooms(t).forEach(function(e){return n._visibleRoomsForGroup[t].push(e.roomId)}),_.default.getGroupMembers(t).forEach(function(r){r.userId!==b.get().credentials.userId&&e.getDMRoomsForUserId(r.userId).forEach(function(e){return n._visibleRoomsForGroup[t].push(e)})}))},updateVisibleRooms:function(){var e=this,t=m.default.getSelectedTags(),n=[];if(t.forEach(function(t){(e._visibleRoomsForGroup[t]||[]).forEach(function(e){return n.push(e)})}),t.length>0){var r=new l.default;n.forEach(function(e){var t=b.get().getRoom(e);t&&r.add(t)}),this._visibleRooms=(0,s.default)(r)}else this._visibleRooms=b.get().getVisibleRooms();this._delayedRefreshRoomList()},refreshRoomList:function(){var e=this.getRoomLists(),t=0,n=!0,r=!1,o=void 0;try{for(var s,l=(0,a.default)((0,i.default)(e));!(n=(s=l.next()).done);n=!0){t+=s.value.length}}catch(e){r=!0,o=e}finally{try{!n&&l.return&&l.return()}finally{if(r)throw o}}this.setState({lists:e,totalRoomCount:t,selectedTags:m.default.getSelectedTags()})},getRoomLists:function(){var e=this,t=h.default.getRoomLists(),n={},r={};return this._visibleRooms.forEach(function(e){r[e.roomId]=!0}),(0,o.default)(t).forEach(function(o){var i=t[o].filter(function(t){if(t){var n=b.get().getUserId();if(!d.isConfCallRoom(t,n,e.props.ConferenceHandler))return Boolean(r[t.roomId])}});(i.length>0||o.match(T))&&(n[o]=i)}),n},_getScrollNode:function(){if(!this.mounted)return null;var e=y.findDOMNode(this);return e?e.classList.contains("gm-prevented")?e:e.children[2]:null},_whenScrolling:function(e){this._hideTooltip(e),this._repositionIncomingCallBox(e,!1),this._updateStickyHeaders(!1)},_hideTooltip:function(e){this.tooltip&&"none"!==this.tooltip.style.display&&(this.tooltip.style.display="none")},_repositionIncomingCallBox:function(e,t){var n=document.getElementById("incomingCallBox");if(n&&n.parentElement){var r=this._getScrollNode();if(!r)return;var o=r.getBoundingClientRect().top+window.pageYOffset,i=y.findDOMNode(this).getBoundingClientRect().height,a=n.parentElement.getBoundingClientRect().top+window.pageYOffset,s=o+(i-45);a=(a=a<o?o:a)>s?s:a,n.style.top=a+"px",n.style.left=r.offsetLeft+r.offsetWidth+12+"px"}},_initAndPositionStickyHeaders:function(e,t){var n=this._getScrollNode();if(n){var o=n.getBoundingClientRect().top+window.pageYOffset,i=y.findDOMNode(this).getBoundingClientRect().height;if(e){if(this.stickies=document.getElementsByClassName("mx_RoomSubList_labelContainer"),!this.stickies.length)return;this.scrollAreaSufficient=120+this.stickies[0].getBoundingClientRect().height*this.stickies.length<i,"object"===(0,r.default)(this.stickies)&&this.stickies.length>0&&Array.prototype.forEach.call(this.stickies,function(e,t){e.dataset.originalPosition=e.offsetTop-n.offsetTop;var r=e.getBoundingClientRect().height;return e.dataset.originalHeight=r,e.style.height=r,e})}if(this.stickies){var a=this,s=0;void 0!==t&&(n.scrollTop=t),Array.prototype.forEach.call(this.stickies,function(e,r,l){var u=e.dataset.originalPosition,c=e.dataset.originalHeight,f=e.childNodes[0],d=c*r,p=c*(l.length-r);a.scrollAreaSufficient&&u<n.scrollTop+d?(e.dataset.stuck="top",f.classList.add("mx_RoomSubList_fixed"),f.style.top=o+d+"px",void 0!==t&&u===t&&(s=d)):a.scrollAreaSufficient&&u>n.scrollTop+i-p?(e.dataset.stuck="bottom",f.classList.add("mx_RoomSubList_fixed"),f.style.top=o+i-p+"px"):(e.dataset.stuck="none",f.classList.remove("mx_RoomSubList_fixed"),f.style.top=null)}),void 0!==t&&(n.scrollTop-=s)}}},_updateStickyHeaders:function(e,t){var n=this;e?window.setTimeout(function(){n._initAndPositionStickyHeaders(e,t)}):this._initAndPositionStickyHeaders(e,t)},onShowMoreRooms:function(){this._gemScroll&&this._gemScroll.forceUpdate()},_getEmptyContent:function(e){if(this.state.selectedTags.length>0)return null;var t=S.getComponent("rooms.RoomDropTarget");if(this.props.collapsed)return v.createElement(t,{label:""});var n=S.getComponent("elements.StartChatButton"),r=S.getComponent("elements.RoomDirectoryButton"),o=S.getComponent("elements.CreateRoomButton"),i=null;switch(e){case"im.vector.fake.direct":i=v.createElement("div",{className:"mx_RoomList_emptySubListTip"},(0,f._t)("Press <StartChatButton> to start a chat with someone",{},{StartChatButton:v.createElement(n,{size:"16",callout:!0})}));break;case"im.vector.fake.recent":i=v.createElement("div",{className:"mx_RoomList_emptySubListTip"},(0,f._t)("You're not in any rooms yet! Press <CreateRoomButton> to make a room or <RoomDirectoryButton> to browse the directory",{},{CreateRoomButton:v.createElement(o,{size:"16",callout:!0}),RoomDirectoryButton:v.createElement(r,{size:"16",callout:!0})}))}if(i)return v.createElement("div",{className:"mx_RoomList_emptySubListTip_container"},i);if(0===this.state.totalRoomCount)return null;var a=function(e){switch(e){case"m.favourite":return(0,f._t)("Drop here to favourite");case"im.vector.fake.direct":return(0,f._t)("Drop here to tag direct chat");case"im.vector.fake.recent":return(0,f._t)("Drop here to restore");case"m.lowpriority":return(0,f._t)("Drop here to demote");default:return(0,f._t)("Drop here to tag %(section)s",{section:e})}}(e);return v.createElement(t,{label:a})},_getHeaderItems:function(e){var t=S.getComponent("elements.StartChatButton"),n=S.getComponent("elements.RoomDirectoryButton"),r=S.getComponent("elements.CreateRoomButton");switch(e){case"im.vector.fake.direct":return v.createElement("span",{className:"mx_RoomList_headerButtons"},v.createElement(t,{size:"16"}));case"im.vector.fake.recent":return v.createElement("span",{className:"mx_RoomList_headerButtons"},v.createElement(n,{size:"16"}),v.createElement(r,{size:"16"}))}},_makeGroupInviteTiles:function(e){var t=[],n=e&&e.toLowerCase(),r=S.getComponent("groups.GroupInviteTile"),o=!0,i=!1,s=void 0;try{for(var l,u=(0,a.default)(b.get().getGroups());!(o=(l=u.next()).done);o=!0){var c=l.value,f=c.groupId,d=c.name;"invite"===c.myMembership&&((!n||f.toLowerCase().startsWith(n)||d&&d.toLowerCase().includes(n))&&t.push(v.createElement(r,{key:f,group:c,collapsed:this.props.collapsed})))}}catch(e){i=!0,s=e}finally{try{!o&&u.return&&u.return()}finally{if(i)throw s}}return t},_collectGemini:function(e){this._gemScroll=e},render:function(){var e=this,t=S.getComponent("structures.RoomSubList"),n=S.getComponent("elements.GeminiScrollbarWrapper"),r=u.default.getValue("RoomSubList.showEmpty"),i=this;return v.createElement(n,{className:"mx_RoomList_scrollbar",autoshow:!0,onScroll:i._whenScrolling,onResize:i._whenScrolling,wrappedRef:this._collectGemini},v.createElement("div",{className:"mx_RoomList"},v.createElement(t,{list:[],extraTiles:this._makeGroupInviteTiles(i.props.searchFilter),label:(0,f._t)("Community Invites"),editable:!1,order:"recent",isInvite:!0,collapsed:i.props.collapsed,searchFilter:i.props.searchFilter,onHeaderClick:i.onSubListHeaderClick,onShowMoreRooms:i.onShowMoreRooms,showEmpty:r}),v.createElement(t,{list:i.state.lists["im.vector.fake.invite"],label:(0,f._t)("Invites"),editable:!1,order:"recent",isInvite:!0,incomingCall:i.state.incomingCall,collapsed:i.props.collapsed,searchFilter:i.props.searchFilter,onHeaderClick:i.onSubListHeaderClick,onShowMoreRooms:i.onShowMoreRooms,showEmpty:r}),v.createElement(t,{list:i.state.lists["m.favourite"],label:(0,f._t)("Favourites"),tagName:"m.favourite",emptyContent:this._getEmptyContent("m.favourite"),editable:!0,order:"manual",incomingCall:i.state.incomingCall,collapsed:i.props.collapsed,searchFilter:i.props.searchFilter,onHeaderClick:i.onSubListHeaderClick,onShowMoreRooms:i.onShowMoreRooms,showEmpty:r}),v.createElement(t,{list:i.state.lists["im.vector.fake.direct"],label:(0,f._t)("People"),tagName:"im.vector.fake.direct",emptyContent:this._getEmptyContent("im.vector.fake.direct"),headerItems:this._getHeaderItems("im.vector.fake.direct"),editable:!0,order:"recent",incomingCall:i.state.incomingCall,collapsed:i.props.collapsed,alwaysShowHeader:!0,searchFilter:i.props.searchFilter,onHeaderClick:i.onSubListHeaderClick,onShowMoreRooms:i.onShowMoreRooms,showEmpty:r}),v.createElement(t,{list:i.state.lists["im.vector.fake.recent"],label:(0,f._t)("Rooms"),editable:!0,emptyContent:this._getEmptyContent("im.vector.fake.recent"),headerItems:this._getHeaderItems("im.vector.fake.recent"),order:"recent",incomingCall:i.state.incomingCall,collapsed:i.props.collapsed,searchFilter:i.props.searchFilter,onHeaderClick:i.onSubListHeaderClick,onShowMoreRooms:i.onShowMoreRooms,showEmpty:r}),(0,o.default)(i.state.lists).map(function(n){if(!n.match(T))return v.createElement(t,{list:i.state.lists[n],key:n,label:function(e){return e.startsWith("u.")?e.slice(2):e}(n),tagName:n,emptyContent:e._getEmptyContent(n),editable:!0,order:"manual",incomingCall:i.state.incomingCall,collapsed:i.props.collapsed,searchFilter:i.props.searchFilter,onHeaderClick:i.onSubListHeaderClick,onShowMoreRooms:i.onShowMoreRooms,showEmpty:r})}),v.createElement(t,{list:i.state.lists["m.lowpriority"],label:(0,f._t)("Low priority"),tagName:"m.lowpriority",emptyContent:this._getEmptyContent("m.lowpriority"),editable:!0,order:"recent",incomingCall:i.state.incomingCall,collapsed:i.props.collapsed,searchFilter:i.props.searchFilter,onHeaderClick:i.onSubListHeaderClick,onShowMoreRooms:i.onShowMoreRooms,showEmpty:r}),v.createElement(t,{list:i.state.lists["im.vector.fake.archived"],emptyContent:i.props.collapsed?null:v.createElement("div",{className:"mx_RoomList_emptySubListTip_container"},v.createElement("div",{className:"mx_RoomList_emptySubListTip"},(0,f._t)("You have no historical rooms"))),label:(0,f._t)("Historical"),editable:!1,order:"recent",collapsed:i.props.collapsed,alwaysShowHeader:!0,startAsHidden:!0,showSpinner:i.state.isLoadingLeftRooms,onHeaderClick:i.onArchivedHeaderClick,incomingCall:i.state.incomingCall,searchFilter:i.props.searchFilter,onShowMoreRooms:i.onShowMoreRooms,showEmpty:r}),v.createElement(t,{list:i.state.lists["m.server_notice"],label:(0,f._t)("System Alerts"),tagName:"m.lowpriority",editable:!1,order:"recent",incomingCall:i.state.incomingCall,collapsed:i.props.collapsed,searchFilter:i.props.searchFilter,onHeaderClick:i.onSubListHeaderClick,onShowMoreRooms:i.onShowMoreRooms,showEmpty:!1})))}})},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1)),o=n(2);var i=n(0),a=n(3),s=n(8);e.exports=i.createClass({displayName:"RoomNameEditor",propTypes:{room:r.default.object.isRequired},getInitialState:function(){return{name:null}},componentWillMount:function(){var e=this.props.room,t=e.currentState.getStateEvents("m.room.name",""),n=s.get().credentials.userId,r=e.getDefaultRoomName(n);this.setState({name:t?t.getContent().name:""}),this._placeholderName=(0,o._t)("Unnamed Room"),r&&"Empty room"!==r&&(this._placeholderName+=" ("+r+")")},getRoomName:function(){return this.state.name},_onValueChanged:function(e,t){this.setState({name:e})},render:function(){var e=a.getComponent("elements.EditableText");return i.createElement("div",{className:"mx_RoomHeader_name"},i.createElement(e,{ref:"editor",className:"mx_RoomHeader_nametext mx_RoomHeader_editable",placeholderClassName:"mx_RoomHeader_placeholder",placeholder:this._placeholderName,blurToCancel:!1,initialValue:this.state.name,onValueChanged:this._onValueChanged,dir:"auto"}))}})},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1)),o=n(2);var i=n(0),a=n(3),s=n(8);e.exports=i.createClass({displayName:"RoomPreviewBar",propTypes:{onJoinClick:r.default.func,onRejectClick:r.default.func,onForgetClick:r.default.func,inviterName:r.default.string,invitedEmail:r.default.string,error:r.default.object,canPreview:r.default.bool,room:r.default.object,spinner:r.default.bool,spinnerState:r.default.oneOf(["joining"]),roomAlias:r.default.string},getDefaultProps:function(){return{onJoinClick:function(){},canPreview:!0}},getInitialState:function(){return{busy:!1}},componentWillMount:function(){var e=this;this.props.inviterName&&this.props.invitedEmail&&(this.setState({busy:!0}),s.get().lookupThreePid("email",this.props.invitedEmail).finally(function(){e.setState({busy:!1})}).done(function(t){e.setState({invitedEmailMxid:t.mxid})},function(t){e.setState({threePidFetchError:t})}))},_roomNameElement:function(){return this.props.room?this.props.room.name:this.props.room_alias||""},render:function(){var e=this,t=void 0,n=void 0;if(this.props.spinner||this.state.busy){var r=a.getComponent("elements.Spinner"),l="";return"joining"===this.props.spinnerState&&(l=(0,o._t)("Joining room...")),i.createElement("div",{className:"mx_RoomPreviewBar"},i.createElement("p",{className:"mx_RoomPreviewBar_spinnerIntro"},l),i.createElement(r,null))}var u=this.props.room?this.props.room.getMember(s.get().getUserId()):null,c=u&&u.isKicked(),f=u&&u&&"ban"==u.membership;if(this.props.inviterName){var d=void 0;this.props.invitedEmail&&(this.state.threePidFetchError?d=i.createElement("div",{className:"error"},(0,o._t)("Unable to ascertain that the address this invite was sent to matches one associated with your account.")):this.state.invitedEmailMxid!=s.get().credentials.userId&&(d=i.createElement("div",{className:"mx_RoomPreviewBar_warning"},i.createElement("div",{className:"mx_RoomPreviewBar_warningIcon"},i.createElement("img",{src:"img/warning.svg",width:"24",height:"23",title:"/!\\\\",alt:"/!\\\\"})),i.createElement("div",{className:"mx_RoomPreviewBar_warningText"},(0,o._t)("This invitation was sent to an email address which is not associated with this account:"),i.createElement("b",null,i.createElement("span",{className:"email"},this.props.invitedEmail)),i.createElement("br",null),(0,o._t)("You may wish to login with a different account, or add this email to this account."))))),t=i.createElement("div",null,i.createElement("div",{className:"mx_RoomPreviewBar_invite_text"},(0,o._t)("You have been invited to join this room by %(inviterName)s",{inviterName:this.props.inviterName})),i.createElement("div",{className:"mx_RoomPreviewBar_join_text"},(0,o._t)("Would you like to <acceptText>accept</acceptText> or <declineText>decline</declineText> this invitation?",{},{acceptText:function(t){return i.createElement("a",{onClick:e.props.onJoinClick},t)},declineText:function(t){return i.createElement("a",{onClick:e.props.onRejectClick},t)}})),d)}else if(c||f){var p=this._roomNameElement(),m=this.props.room.currentState.getMember(u.events.member.getSender()),h=m?m.name:u.events.member.getSender(),_=void 0;u.events.member.getContent().reason&&(_=i.createElement("div",null,(0,o._t)("Reason: %(reasonText)s",{reasonText:u.events.member.getContent().reason})));var g=void 0;f||(g=i.createElement("div",null,i.createElement("a",{onClick:this.props.onJoinClick},i.createElement("b",null,(0,o._t)("Rejoin")))));var v=void 0;c?v=p?(0,o._t)("You have been kicked from %(roomName)s by %(userName)s.",{roomName:p,userName:h}):(0,o._t)("You have been kicked from this room by %(userName)s.",{userName:h}):f&&(v=p?(0,o._t)("You have been banned from %(roomName)s by %(userName)s.",{roomName:p,userName:h}):(0,o._t)("You have been banned from this room by %(userName)s.",{userName:h})),t=i.createElement("div",null,i.createElement("div",{className:"mx_RoomPreviewBar_join_text"},v,i.createElement("br",null),_,g,i.createElement("a",{onClick:this.props.onForgetClick},i.createElement("b",null,(0,o._t)("Forget room")))))}else if(this.props.error){var y=this.props.roomAlias||(0,o._t)("This room"),b=void 0;b="M_NOT_FOUND"==this.props.error.errcode?(0,o._t)("%(roomName)s does not exist.",{roomName:y}):(0,o._t)("%(roomName)s is not accessible at this time.",{roomName:y}),t=i.createElement("div",null,i.createElement("div",{className:"mx_RoomPreviewBar_join_text"},b))}else{var E=this._roomNameElement();t=i.createElement("div",null,i.createElement("div",{className:"mx_RoomPreviewBar_join_text"},E?(0,o._t)("You are trying to access %(roomName)s.",{roomName:E}):(0,o._t)("You are trying to access a room."),i.createElement("br",null),(0,o._t)("<a>Click here</a> to join the discussion!",{},{a:function(t){return i.createElement("a",{onClick:e.props.onJoinClick},i.createElement("b",null,t))}})))}return this.props.canPreview&&(n=i.createElement("div",{className:"mx_RoomPreviewBar_preview_text"},(0,o._t)("This is a preview of this room. Room interactions have been disabled"),".")),i.createElement("div",{className:"mx_RoomPreviewBar"},i.createElement("div",{className:"mx_RoomPreviewBar_wrapper"},t,n))}})},function(e,t,n){"use strict";var r=y(n(20)),o=y(n(40)),i=y(n(31)),a=y(n(14)),s=y(n(9)),l=y(n(0)),u=y(n(1)),c=n(2),f=y(n(8)),d=y(n(3)),p=y(n(16)),m=y(n(202)),h=y(n(10)),_=y(n(27)),g=n(22),v=y(g);function y(e){return e&&e.__esModule?e:{default:e}}function b(e,t){var n=parseInt(e);return isNaN(n)?t:n}var E={"m.room.avatar":(0,c._td)("To change the room's avatar, you must be a"),"m.room.name":(0,c._td)("To change the room's name, you must be a"),"m.room.canonical_alias":(0,c._td)("To change the room's main address, you must be a"),"m.room.history_visibility":(0,c._td)("To change the room's history visibility, you must be a"),"m.room.power_levels":(0,c._td)("To change the permissions in the room, you must be a"),"m.room.topic":(0,c._td)("To change the topic, you must be a"),"im.vector.modular.widgets":(0,c._td)("To modify widgets in the room, you must be a")},C={"m.room.avatar":{isState:!0},"m.room.name":{isState:!0},"m.room.canonical_alias":{isState:!0},"m.room.history_visibility":{isState:!0},"m.room.power_levels":{isState:!0},"m.room.topic":{isState:!0},"im.vector.modular.widgets":{isState:!0}},S=l.default.createClass({displayName:"BannedUser",propTypes:{canUnban:u.default.bool,member:u.default.object.isRequired,by:u.default.string.isRequired,reason:u.default.string},_onUnbanClick:function(){var e=this,t=d.default.getComponent("dialogs.ConfirmUserActionDialog");p.default.createTrackedDialog("Confirm User Action Dialog","onUnbanClick",t,{member:this.props.member,action:(0,c._t)("Unban"),title:(0,c._t)("Unban this user?"),danger:!1,onFinished:function(t){t&&f.default.get().unban(e.props.member.roomId,e.props.member.userId).catch(function(e){var t=d.default.getComponent("dialogs.ErrorDialog");console.error("Failed to unban: "+e),p.default.createTrackedDialog("Failed to unban","",t,{title:(0,c._t)("Error"),description:(0,c._t)("Failed to unban")})}).done()}})},render:function(){var e=void 0;return this.props.canUnban&&(e=l.default.createElement(_.default,{className:"mx_RoomSettings_unbanButton",onClick:this._onUnbanClick},(0,c._t)("Unban"))),l.default.createElement("li",null,e,l.default.createElement("span",{title:(0,c._t)("Banned by %(displayName)s",{displayName:this.props.by})},l.default.createElement("strong",null,this.props.member.name)," ",this.props.member.userId,this.props.reason?" "+(0,c._t)("Reason")+": "+this.props.reason:""))}});e.exports=l.default.createClass({displayName:"RoomSettings",propTypes:{room:u.default.object.isRequired},getInitialState:function(){var e={};return(0,a.default)(this.props.room.tags).forEach(function(t){e[t]=["yep"]}),{name:this._yankValueFromEvent("m.room.name","name"),topic:this._yankValueFromEvent("m.room.topic","topic"),join_rule:this._yankValueFromEvent("m.room.join_rules","join_rule"),history_visibility:this._yankValueFromEvent("m.room.history_visibility","history_visibility"),guest_access:this._yankValueFromEvent("m.room.guest_access","guest_access"),powerLevels:this._yankContentFromEvent("m.room.power_levels",{}),powerLevelsChanged:!1,tags_changed:!1,tags:e,isRoomPublished:this._originalIsRoomPublished||!1}},componentWillMount:function(){var e=this;f.default.get().on("RoomMember.membership",this._onRoomMemberMembership),f.default.get().getRoomDirectoryVisibility(this.props.room.roomId).done(function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.setState({isRoomPublished:"public"===t.visibility}),e._originalIsRoomPublished="public"===t.visibility},function(e){console.error("Failed to get room visibility: "+e)}),h.default.dispatch({action:"panel_disable",sideDisabled:!0,middleDisabled:!0})},componentWillUnmount:function(){var e=f.default.get();e&&e.removeListener("RoomMember.membership",this._onRoomMemberMembership),h.default.dispatch({action:"panel_disable",sideDisabled:!1,middleDisabled:!1})},setName:function(e){this.setState({name:e})},setTopic:function(e){this.setState({topic:e})},save:function(){var e=this,t=s.default.defer();function n(e){return e.then(function(e){return{state:"fulfilled",value:e}},function(e){return{state:"rejected",reason:e}})}return this.setState({_loading:!0},function(){t.resolve(),e.setState({_loading:!1})}),t.promise.then(function(){return s.default.all(e._calcSavePromises().map(n))})},_calcSavePromises:function(){var e=this.props.room.roomId,t=this.saveAliases(),n=this.getInitialState();console.log("Original: %s",(0,i.default)(n)),console.log("New: %s",(0,i.default)(this.state)),this._hasDiff(this.state.name,n.name)&&t.push(f.default.get().setRoomName(e,this.state.name)),this._hasDiff(this.state.topic,n.topic)&&t.push(f.default.get().setRoomTopic(e,this.state.topic)),this.state.history_visibility!==n.history_visibility&&t.push(f.default.get().sendStateEvent(e,"m.room.history_visibility",{history_visibility:this.state.history_visibility},"")),this.state.isRoomPublished!==n.isRoomPublished&&t.push(f.default.get().setRoomDirectoryVisibility(e,this.state.isRoomPublished?"public":"private")),this.state.join_rule!==n.join_rule&&t.push(f.default.get().sendStateEvent(e,"m.room.join_rules",{join_rule:this.state.join_rule},"")),this.state.guest_access!==n.guest_access&&t.push(f.default.get().sendStateEvent(e,"m.room.guest_access",{guest_access:this.state.guest_access},""));var r=this.state.powerLevels;(this.state.powerLevelsChanged&&t.push(f.default.get().sendStateEvent(e,"m.room.power_levels",r,"")),this.state.tags_changed)&&m.default.getKeyValueArrayDiffs(n.tags,this.state.tags).forEach(function(n){switch(n.place){case"add":t.push(f.default.get().setRoomTag(e,n.key,{}));break;case"del":t.push(f.default.get().deleteRoomTag(e,n.key));break;default:console.error("Unknown tag operation: %s",n.place)}});var o=void 0;(o=this.saveColor()).isFulfilled()||t.push(o);var a=this.saveUrlPreviewSettings();return a.length>0&&a.map(function(e){return t.push(e)}),t.push(this.saveRelatedGroups()),(o=this.saveEnableEncryption()).isFulfilled()||t.push(o),this.saveBlacklistUnverifiedDevicesPerRoom(),console.log("Performing %s operations: %s",t.length,(0,i.default)(t)),t},saveAliases:function(){return this.refs.alias_settings?this.refs.alias_settings.saveSettings():[s.default.resolve()]},saveRelatedGroups:function(){return this.refs.related_groups?this.refs.related_groups.saveSettings():s.default.resolve()},saveColor:function(){return this.refs.color_settings?this.refs.color_settings.saveSettings():s.default.resolve()},saveUrlPreviewSettings:function(){return this.refs.url_preview_settings?this.refs.url_preview_settings.saveSettings():s.default.resolve()},saveEnableEncryption:function(){if(!this.refs.encrypt)return s.default.resolve();if(!this.refs.encrypt.checked)return s.default.resolve();var e=this.props.room.roomId;return f.default.get().sendStateEvent(e,"m.room.encryption",{algorithm:"m.megolm.v1.aes-sha2"})},saveBlacklistUnverifiedDevicesPerRoom:function(){var e=this;this.refs.blacklistUnverifiedDevices&&this.refs.blacklistUnverifiedDevices.save().then(function(){var t=v.default.getValueAt(g.SettingLevel.ROOM_DEVICE,"blacklistUnverifiedDevices",e.props.room.roomId,!0);e.props.room.setBlacklistUnverifiedDevices(t)})},_hasDiff:function(e,t){return(e=e||"")!==(t=t||"")},onPowerLevelsChanged:function(e,t){var n=(0,o.default)({},this.state.powerLevels);if(e=parseInt(e),t.startsWith("event_levels_"))n.events=(0,o.default)({},this.state.powerLevels.events||{}),n.events[t.slice("event_levels_".length)]=e;else{var i=t.split("."),a=void 0,s=n,l=!0,u=!1,c=void 0;try{for(var f,d=(0,r.default)(i);!(l=(f=d.next()).done);l=!0){var p=f.value;s[p]||(s[p]={}),a=s,s=s[p]}}catch(e){u=!0,c=e}finally{try{!l&&d.return&&d.return()}finally{if(u)throw c}}a[i[i.length-1]]=e}this.setState({powerLevels:n,powerLevelsChanged:!0})},_yankContentFromEvent:function(e,t){var n=this.props.room.currentState.getStateEvents(e,"");return n&&n.getContent()||t},_yankValueFromEvent:function(e,t,n){var r=this.props.room.currentState.getStateEvents(e,"");if(!r)return n;var o=r.getContent();return t in o?o[t]:n},_onHistoryRadioToggle:function(e){var t=this,n=d.default.getComponent("dialogs.QuestionDialog");e.preventDefault();var r=e.target.value;p.default.createTrackedDialog("Privacy warning","",n,{title:(0,c._t)("Privacy warning"),description:l.default.createElement("div",null,(0,c._t)("Changes to who can read history will only apply to future messages in this room"),".",l.default.createElement("br",null),(0,c._t)("The visibility of existing history will be unchanged"),"."),button:(0,c._t)("Continue"),onFinished:function(e){e&&t.setState({history_visibility:r})}})},_onRoomAccessRadioToggle:function(e){switch(e.target.value){case"invite_only":this.setState({join_rule:"invite",guest_access:"can_join"});break;case"public_no_guests":this.setState({join_rule:"public",guest_access:"forbidden"});break;case"public_with_guests":this.setState({join_rule:"public",guest_access:"can_join"})}},_onToggle:function(e,t,n,r){console.log("Checkbox toggle: %s %s",e,r.target.checked);var o={};o[e]=r.target.checked?t:n,this.setState(o)},_onTagChange:function(e,t){t.target.checked?("m.favourite"===e?delete this.state.tags["m.lowpriority"]:"m.lowpriority"===e&&delete this.state.tags["m.favourite"],this.state.tags[e]=this.state.tags[e]||["yep"]):delete this.state.tags[e],this.setState({tags:this.state.tags,tags_changed:!0})},mayChangeRoomAccess:function(){var e=f.default.get(),t=this.props.room.currentState;return t.mayClientSendStateEvent("m.room.join_rules",e)&&t.mayClientSendStateEvent("m.room.guest_access",e)},onLeaveClick:function(){h.default.dispatch({action:"leave_room",room_id:this.props.room.roomId})},onForgetClick:function(){f.default.get().forget(this.props.room.roomId).done(function(){h.default.dispatch({action:"view_next_room"})},function(e){var t=e.errcode||(0,c._t)("unknown error code"),n=d.default.getComponent("dialogs.ErrorDialog");p.default.createTrackedDialog("Failed to forget room","",n,{title:(0,c._t)("Error"),description:(0,c._t)("Failed to forget room %(errCode)s",{errCode:t})})})},onEnableEncryptionClick:function(){var e=this;if(this.refs.encrypt.checked){var t=d.default.getComponent("dialogs.QuestionDialog");p.default.createTrackedDialog("E2E Enable Warning","",t,{title:(0,c._t)("Warning!"),description:l.default.createElement("div",null,l.default.createElement("p",null,(0,c._t)("End-to-end encryption is in beta and may not be reliable"),"."),l.default.createElement("p",null,(0,c._t)("You should not yet trust it to secure data"),"."),l.default.createElement("p",null,(0,c._t)("Devices will not yet be able to decrypt history from before they joined the room"),"."),l.default.createElement("p",null,(0,c._t)("Once encryption is enabled for a room it cannot be turned off again (for now)"),"."),l.default.createElement("p",null,(0,c._t)("Encrypted messages will not be visible on clients that do not yet implement encryption"),".")),onFinished:function(t){t||(e.refs.encrypt.checked=!1)}})}},_onRoomUpgradeClick:function(){var e=d.default.getComponent("dialogs.RoomUpgradeDialog");p.default.createTrackedDialog("Upgrade Room Version","",e,{room:this.props.room})},_onRoomMemberMembership:function(){this.forceUpdate()},_populateDefaultPlEvents:function(e,t,n){var o=!0,i=!1,s=void 0;try{for(var l,u=(0,r.default)((0,a.default)(C));!(o=(l=u.next()).done);o=!0){var c=l.value;c in e||(e[c]=C[c].isState?t:n)}}catch(e){i=!0,s=e}finally{try{!o&&u.return&&u.return()}finally{if(i)throw s}}},_renderEncryptionSection:function(){var e=d.default.getComponent("elements.SettingsFlag"),t=f.default.get(),n=this.props.room.currentState,r=t.isRoomEncrypted(this.props.room.roomId),o=l.default.createElement(e,{name:"blacklistUnverifiedDevices",level:g.SettingLevel.ROOM_DEVICE,roomId:this.props.room.roomId,manualSave:!0,ref:"blacklistUnverifiedDevices"});return!r&&n.mayClientSendStateEvent("m.room.encryption",t)?l.default.createElement("div",null,l.default.createElement("label",null,l.default.createElement("input",{type:"checkbox",ref:"encrypt",onClick:this.onEnableEncryptionClick}),l.default.createElement("img",{className:"mx_RoomSettings_e2eIcon mx_filterFlipColor",src:"img/e2e-unencrypted.svg",width:"12",height:"12"}),(0,c._t)("Enable encryption")," ",(0,c._t)("(warning: cannot be disabled again!)")),o):l.default.createElement("div",null,l.default.createElement("label",null,r?l.default.createElement("img",{className:"mx_RoomSettings_e2eIcon",src:"img/e2e-verified.svg",width:"10",height:"12"}):l.default.createElement("img",{className:"mx_RoomSettings_e2eIcon mx_filterFlipColor",src:"img/e2e-unencrypted.svg",width:"12",height:"12"}),r?(0,c._t)("Encryption is enabled in this room"):(0,c._t)("Encryption is not enabled in this room"),"."),o)},render:function(){var e=this,t=d.default.getComponent("room_settings.AliasSettings"),n=d.default.getComponent("room_settings.ColorSettings"),o=d.default.getComponent("room_settings.UrlPreviewSettings"),i=d.default.getComponent("room_settings.RelatedGroupSettings"),s=d.default.getComponent("elements.PowerSelector"),u=f.default.get(),p=this.props.room.currentState,m=u.credentials.userId,h=this.state.powerLevels,g=h.events||{},v=h.users||{},y={users_default:{desc:(0,c._t)("The default role for new room members is"),defaultValue:0},events_default:{desc:(0,c._t)("To send messages, you must be a"),defaultValue:0},invite:{desc:(0,c._t)("To invite users into the room, you must be a"),defaultValue:50},state_default:{desc:(0,c._t)("To configure the room, you must be a"),defaultValue:50},kick:{desc:(0,c._t)("To kick users, you must be a"),defaultValue:50},ban:{desc:(0,c._t)("To ban users, you must be a"),defaultValue:50},redact:{desc:(0,c._t)("To remove other users' messages, you must be a"),defaultValue:50},"notifications.room":{desc:(0,c._t)("To notify everyone in the room, you must be a"),defaultValue:50}},C=b(h.ban,y.ban.defaultValue),D=b(h.users_default,y.users_default.defaultValue);this._populateDefaultPlEvents(g,b(h.state_default,y.state_default.defaultValue),b(h.events_default,y.events_default.defaultValue));var w=v[m];void 0===w&&(w=D);var T=p.mayClientSendStateEvent("m.room.power_levels",u),x=!u.isGuest(),R=this,k=l.default.createElement(i,{ref:"related_groups",roomId:this.props.room.roomId,canSetRelatedGroups:p.mayClientSendStateEvent("m.room.related_groups",u),relatedGroupsEvent:this.props.room.currentState.getStateEvents("m.room.related_groups","")}),N=l.default.createElement("div",null,(0,c._t)("No users have specific privileges in this room"),"."),I=void 0;if((0,a.default)(v).length){var O=[],A=[];(0,a.default)(v).forEach(function(e){v[e]>D?O.push(l.default.createElement("li",{className:"mx_RoomSettings_userLevel",key:e},(0,c._t)("%(user)s is a %(userRole)s",{user:e,userRole:l.default.createElement(s,{value:v[e],disabled:!0})}))):v[e]<D&&A.push(l.default.createElement("li",{className:"mx_RoomSettings_userLevel",key:e},(0,c._t)("%(user)s is a %(userRole)s",{user:e,userRole:l.default.createElement(s,{value:v[e],disabled:!0})})))});var M=function(e,t){var n=v[t.key]-v[e.key];return 0!==n?n:e.key.toLocaleLowerCase().localeCompare(t.key.toLocaleLowerCase())};O.sort(M),A.sort(M),O.length&&(N=l.default.createElement("div",null,l.default.createElement("h3",null,(0,c._t)("Privileged Users")),l.default.createElement("ul",{className:"mx_RoomSettings_userLevels"},O))),A.length&&(I=l.default.createElement("div",null,l.default.createElement("h3",null,(0,c._t)("Muted Users")),l.default.createElement("ul",{className:"mx_RoomSettings_userLevels"},A)))}var P=this.props.room.getMembersWithMembership("ban"),L=void 0;if(P.length){var F=w>=C;L=l.default.createElement("div",null,l.default.createElement("h3",null,(0,c._t)("Banned users")),l.default.createElement("ul",{className:"mx_RoomSettings_banned"},P.map(function(e){var t=e.events.member.getContent(),n=R.props.room.getMember(e.events.member.getSender()),r=e.events.member.getSender();return n&&(r=n.name),l.default.createElement(S,{key:e.userId,canUnban:F,member:e,reason:t.reason,by:r})})))}var U=void 0;!1===this._yankValueFromEvent("m.room.create","m.federate",!0)&&(U=l.default.createElement("div",{className:"mx_RoomSettings_powerLevel"},(0,c._t)("This room is not accessible by remote Matrix servers"),"."));var j=null,B=this.props.room.getMyMembership();B&&("join"===B?j=l.default.createElement(_.default,{className:"mx_RoomSettings_leaveButton",onClick:this.onLeaveClick},(0,c._t)("Leave room")):"leave"===B&&(j=l.default.createElement(_.default,{className:"mx_RoomSettings_leaveButton",onClick:this.onForgetClick},(0,c._t)("Forget room"))));var G=[{name:"m.favourite",label:(0,c._t)("Favourite"),ref:"tag_favourite"},{name:"m.lowpriority",label:(0,c._t)("Low priority"),ref:"tag_lowpriority"}];(0,a.default)(this.state.tags).sort().forEach(function(e){"m.favourite"!==e&&"m.lowpriority"!==e&&G.push({name:e,label:e})});var q=null;(x||R.state.tags)&&(q=l.default.createElement("div",{className:"mx_RoomSettings_tags"},(0,c._t)("Tagged as: "),x?G.map(function(e,t){return l.default.createElement("label",{key:t},l.default.createElement("input",{type:"checkbox",ref:e.ref,checked:e.name in R.state.tags,onChange:R._onTagChange.bind(R,e.name)}),e.label)}):R.state.tags&&R.state.tags.join?R.state.tags.join(", "):""));var V=this.state.history_visibility||"shared",H=void 0,Y=0;(this.props.room.currentState.getStateEvents("m.room.aliases")||[]).forEach(function(e){var t=e.getContent().aliases||[];Y+=t.length}),"public"===this.state.join_rule&&0==Y&&(H=l.default.createElement("div",{className:"mx_RoomSettings_warning"},(0,c._t)("To link to a room it must have <a>an address</a>.",{},{a:function(e){return l.default.createElement("a",{href:"#addresses"},e)}})));var z=void 0;"public"!==this.state.join_rule&&"forbidden"===this.state.guest_access&&(z=l.default.createElement("div",{className:"mx_RoomSettings_warning"},(0,c._t)("Guests cannot join this room even if explicitly invited.")," ",l.default.createElement("a",{href:"#",onClick:function(t){e.setState({join_rule:"invite",guest_access:"can_join"}),t.preventDefault()}},(0,c._t)("Click here to fix")),"."));var W=(0,a.default)(y).map(function(t,n){var o=y[t],i=t.split("."),a=h,u=!0,c=!1,f=void 0;try{for(var d,p=(0,r.default)(i);!(u=(d=p.next()).done);u=!0){var m=d.value;if(void 0===a)break;a=a[m]}}catch(e){c=!0,f=e}finally{try{!u&&p.return&&p.return()}finally{if(c)throw f}}var _=b(a,o.defaultValue);return l.default.createElement("div",{key:n,className:"mx_RoomSettings_powerLevel"},l.default.createElement("span",{className:"mx_RoomSettings_powerLevelKey"},o.desc),l.default.createElement(s,{value:_,usersDefault:D,controlled:!1,disabled:!T||w<_,powerLevelKey:t,onChange:e.onPowerLevelsChanged}))}),K=(0,a.default)(g).map(function(e,t){var n=E[e];return n=n?(0,c._t)(n):(0,c._t)("To send events of type <eventType/>, you must be a",{},{eventType:l.default.createElement("code",null,e)}),l.default.createElement("div",{className:"mx_RoomSettings_powerLevel",key:e},l.default.createElement("span",{className:"mx_RoomSettings_powerLevelKey"},n," "),l.default.createElement(s,{value:g[e],usersDefault:D,controlled:!1,disabled:!T||w<g[e],powerLevelKey:"event_levels_"+e,onChange:R.onPowerLevelsChanged}))}),$=null;return this.props.room.shouldUpgradeToVersion()&&this.props.room.userMayUpgradeRoom(m)&&($=l.default.createElement(_.default,{className:"mx_RoomSettings_upgradeButton danger",onClick:this._onRoomUpgradeClick},(0,c._t)("Upgrade room to version %(ver)s",{ver:this.props.room.shouldUpgradeToVersion()}))),l.default.createElement("div",{className:"mx_RoomSettings"},j,q,l.default.createElement("div",{className:"mx_RoomSettings_toggles"},l.default.createElement("div",{className:"mx_RoomSettings_settings"},l.default.createElement("h3",null,(0,c._t)("Who can access this room?")),z,l.default.createElement("label",null,l.default.createElement("input",{type:"radio",name:"roomVis",value:"invite_only",disabled:!this.mayChangeRoomAccess(),onChange:this._onRoomAccessRadioToggle,checked:"public"!==this.state.join_rule}),(0,c._t)("Only people who have been invited")),l.default.createElement("label",null,l.default.createElement("input",{type:"radio",name:"roomVis",value:"public_no_guests",disabled:!this.mayChangeRoomAccess(),onChange:this._onRoomAccessRadioToggle,checked:"public"===this.state.join_rule&&"can_join"!==this.state.guest_access}),(0,c._t)("Anyone who knows the room's link, apart from guests")),l.default.createElement("label",null,l.default.createElement("input",{type:"radio",name:"roomVis",value:"public_with_guests",disabled:!this.mayChangeRoomAccess(),onChange:this._onRoomAccessRadioToggle,checked:"public"===this.state.join_rule&&"can_join"===this.state.guest_access}),(0,c._t)("Anyone who knows the room's link, including guests")),H,l.default.createElement("br",null),this._renderEncryptionSection(),l.default.createElement("label",null,l.default.createElement("input",{type:"checkbox",disabled:!p.mayClientSendStateEvent("m.room.aliases",u),onChange:this._onToggle.bind(this,"isRoomPublished",!0,!1),checked:this.state.isRoomPublished}),(0,c._t)("Publish this room to the public in %(domain)s's room directory?",{domain:f.default.get().getDomain()}))),l.default.createElement("div",{className:"mx_RoomSettings_settings"},l.default.createElement("h3",null,(0,c._t)("Who can read history?")),l.default.createElement("label",null,l.default.createElement("input",{type:"radio",name:"historyVis",value:"world_readable",disabled:!p.mayClientSendStateEvent("m.room.history_visibility",u),checked:"world_readable"===V,onChange:this._onHistoryRadioToggle}),(0,c._t)("Anyone")),l.default.createElement("label",null,l.default.createElement("input",{type:"radio",name:"historyVis",value:"shared",disabled:!p.mayClientSendStateEvent("m.room.history_visibility",u),checked:"shared"===V,onChange:this._onHistoryRadioToggle}),(0,c._t)("Members only (since the point in time of selecting this option)")),l.default.createElement("label",null,l.default.createElement("input",{type:"radio",name:"historyVis",value:"invited",disabled:!p.mayClientSendStateEvent("m.room.history_visibility",u),checked:"invited"===V,onChange:this._onHistoryRadioToggle}),(0,c._t)("Members only (since they were invited)")),l.default.createElement("label",null,l.default.createElement("input",{type:"radio",name:"historyVis",value:"joined",disabled:!p.mayClientSendStateEvent("m.room.history_visibility",u),checked:"joined"===V,onChange:this._onHistoryRadioToggle}),(0,c._t)("Members only (since they joined)")))),l.default.createElement("div",null,l.default.createElement("h3",null,(0,c._t)("Room Colour")),l.default.createElement(n,{ref:"color_settings",room:this.props.room})),l.default.createElement("a",{id:"addresses"}),l.default.createElement(t,{ref:"alias_settings",roomId:this.props.room.roomId,canSetCanonicalAlias:p.mayClientSendStateEvent("m.room.canonical_alias",u),canSetAliases:!0,canonicalAliasEvent:this.props.room.currentState.getStateEvents("m.room.canonical_alias",""),aliasEvents:this.props.room.currentState.getStateEvents("m.room.aliases")}),k,l.default.createElement(o,{ref:"url_preview_settings",room:this.props.room}),l.default.createElement("h3",null,(0,c._t)("Permissions")),l.default.createElement("div",{className:"mx_RoomSettings_powerLevels mx_RoomSettings_settings"},W,K,U),N,I,L,l.default.createElement("h3",null,(0,c._t)("Advanced")),l.default.createElement("div",{className:"mx_RoomSettings_settings"},(0,c._t)("Internal room ID: ")," ",l.default.createElement("code",null,this.props.room.roomId),l.default.createElement("br",null),(0,c._t)("Room version number: ")," ",l.default.createElement("code",null,this.props.room.getVersion()),l.default.createElement("br",null),$))}})},function(e,t,n){"use strict";var r=s(n(0)),o=s(n(41)),i=s(n(10)),a=s(n(24));function s(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"RoomTooltip",propTypes:{className:r.default.PropTypes.string.isRequired,tooltipClassName:r.default.PropTypes.string,room:r.default.PropTypes.object,label:r.default.PropTypes.node},componentDidMount:function(){this.tooltipContainer=document.createElement("div"),this.tooltipContainer.className="mx_RoomTileTooltip_wrapper",document.body.appendChild(this.tooltipContainer),window.addEventListener("scroll",this._renderTooltip,!0),this.parent=o.default.findDOMNode(this).parentNode,this._renderTooltip()},componentDidUpdate:function(){this._renderTooltip()},componentWillUnmount:function(){i.default.dispatch({action:"view_tooltip",tooltip:null,parent:null}),o.default.unmountComponentAtNode(this.tooltipContainer),document.body.removeChild(this.tooltipContainer),window.removeEventListener("scroll",this._renderTooltip,!0)},_updatePosition:function(e){var t=this.parent.getBoundingClientRect(),n=0;return t.height>25&&(n=Math.floor((t.height-25)/2)),e.top=t.top-2+window.pageYOffset+n,e.left=6+t.right+window.pageXOffset,e},_renderTooltip:function(){var e=o.default.findDOMNode(this).parentNode,t={};(t=this._updatePosition(t)).display="block";var n=(0,a.default)("mx_RoomTooltip",this.props.tooltipClassName),s=r.default.createElement("div",{className:n,style:t},r.default.createElement("div",{className:"mx_RoomTooltip_chevron"}),this.props.label);this.tooltip=o.default.render(s,this.tooltipContainer),i.default.dispatch({action:"view_tooltip",tooltip:this.tooltip,parent:e})},render:function(){return r.default.createElement("div",{className:this.props.className})}})},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1)),o=n(2);var i=n(0),a=n(3);e.exports=i.createClass({displayName:"RoomTopicEditor",propTypes:{room:r.default.object.isRequired},getInitialState:function(){return{topic:null}},componentWillMount:function(){var e=this.props.room.currentState.getStateEvents("m.room.topic","");this.setState({topic:e?e.getContent().topic:""})},getTopic:function(){return this.state.topic},_onValueChanged:function(e){this.setState({topic:e})},render:function(){var e=a.getComponent("elements.EditableText");return i.createElement(e,{className:"mx_RoomHeader_topic mx_RoomHeader_editable",placeholderClassName:"mx_RoomHeader_placeholder",placeholder:(0,o._t)("Add a topic"),blurToCancel:!1,initialValue:this.state.topic,onValueChanged:this._onValueChanged,dir:"auto"})}})},function(e,t,n){"use strict";var r=l(n(0)),o=l(n(1)),i=l(n(3)),a=l(n(16)),s=n(2);function l(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"RoomUpgradeWarningBar",propTypes:{room:o.default.object.isRequired},onUpgradeClick:function(){var e=i.default.getComponent("dialogs.RoomUpgradeDialog");a.default.createTrackedDialog("Upgrade Room Version","",e,{room:this.props.room})},render:function(){var e=i.default.getComponent("elements.AccessibleButton");return r.default.createElement("div",{className:"mx_RoomUpgradeWarningBar"},r.default.createElement("div",{className:"mx_RoomUpgradeWarningBar_header"},(0,s._t)("There is a known vulnerability affecting this room.")),r.default.createElement("div",{className:"mx_RoomUpgradeWarningBar_body"},(0,s._t)("This room version is vulnerable to malicious modification of room state.")),r.default.createElement("p",{className:"mx_RoomUpgradeWarningBar_upgradelink"},r.default.createElement(e,{onClick:this.onUpgradeClick},(0,s._t)("Click here to upgrade to the latest room version and ensure room integrity is protected."))),r.default.createElement("div",{className:"mx_RoomUpgradeWarningBar_small"},(0,s._t)("Only room administrators will see this warning")))}})},function(e,t,n){"use strict";var r=n(2),o=n(0),i=(n(8),n(3),n(24)),a=n(27);e.exports=o.createClass({displayName:"SearchBar",getInitialState:function(){return{scope:"Room"}},onThisRoomClick:function(){this.setState({scope:"Room"})},onAllRoomsClick:function(){this.setState({scope:"All"})},onSearchChange:function(e){13===e.keyCode&&this.onSearch(),27===e.keyCode&&this.props.onCancelClick()},onSearch:function(){this.props.onSearch(this.refs.search_term.value,this.state.scope)},render:function(){var e=i({mx_SearchBar_searchButton:!0,mx_SearchBar_searching:this.props.searchInProgress}),t=i({mx_SearchBar_button:!0,mx_SearchBar_unselected:"Room"!==this.state.scope}),n=i({mx_SearchBar_button:!0,mx_SearchBar_unselected:"All"!==this.state.scope});return o.createElement("div",{className:"mx_SearchBar"},o.createElement("input",{ref:"search_term",className:"mx_SearchBar_input",type:"text",autoFocus:!0,placeholder:(0,r._t)("Search…"),onKeyDown:this.onSearchChange}),o.createElement(a,{className:e,onClick:this.onSearch},o.createElement("img",{src:"img/search-button.svg",width:"37",height:"37",alt:(0,r._t)("Search")})),o.createElement(a,{className:t,onClick:this.onThisRoomClick},(0,r._t)("This Room")),o.createElement(a,{className:n,onClick:this.onAllRoomsClick},(0,r._t)("All Rooms")),o.createElement(a,{className:"mx_SearchBar_cancel",onClick:this.props.onCancelClick},o.createElement("img",{src:"img/cancel.svg",width:"18",height:"18"})))}})},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1));var o=n(0),i=n(3);e.exports=o.createClass({displayName:"SearchResult",propTypes:{searchResult:r.default.object.isRequired,searchHighlights:r.default.array,resultLink:r.default.string,onWidgetLoad:r.default.func},render:function(){for(var e=i.getComponent("messages.DateSeparator"),t=i.getComponent("rooms.EventTile"),n=this.props.searchResult,r=n.context.getEvent(),a=r.getId(),s=r.getTs(),l=[o.createElement(e,{key:s+"-search",ts:s})],u=n.context.getTimeline(),c=0;c<u.length;c++){var f,d=u[c],p=c!=n.context.getOurEventIndex();p||(f=this.props.searchHighlights),t.haveTileForEvent(d)&&l.push(o.createElement(t,{key:a+"+"+c,mxEvent:d,contextual:p,highlights:f,highlightLink:this.props.resultLink,onWidgetLoad:this.props.onWidgetLoad}))}return o.createElement("li",{"data-scroll-tokens":a+"+"+c},l)}})},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1)),o=n(2);var i=n(0),a=(n(8),n(16),n(3)),s=i.createClass({displayName:"SearchableEntityList",propTypes:{emptyQueryShowsAll:r.default.bool,showInputBox:r.default.bool,onQueryChanged:r.default.func,onSubmit:r.default.func,entities:r.default.array,truncateAt:r.default.number},getDefaultProps:function(){return{showInputBox:!0,entities:[],emptyQueryShowsAll:!1,onSubmit:function(){},onQueryChanged:function(e){}}},getInitialState:function(){return{query:"",focused:!1,truncateAt:this.props.truncateAt,results:this.getSearchResults("",this.props.entities)}},componentWillReceiveProps:function(e){this.setState({results:this.getSearchResults(this.state.query,e.entities)})},componentWillUnmount:function(){this.props.onQueryChanged("")},setQuery:function(e){this.setState({query:e,results:this.getSearchResults(e,this.props.entities)})},onQueryChanged:function(e){var t=this,n=e.target.value;this.setState({query:n,truncateAt:0===n.length?this.props.truncateAt:this.state.truncateAt,results:this.getSearchResults(n,this.props.entities)},function(){t.props.onQueryChanged(n)})},onQuerySubmit:function(e){e.preventDefault(),this.props.onSubmit(this.state.query)},getSearchResults:function(e,t){return e&&0!==e.length?t.filter(function(t){return t.matches(e)}):this.props.emptyQueryShowsAll?t:[]},_showAll:function(){this.setState({truncateAt:-1})},_createOverflowEntity:function(e,t){var n=a.getComponent("rooms.EntityTile"),r=a.getComponent("avatars.BaseAvatar"),s=(0,o._t)("and %(count)s others...",{count:e});return i.createElement(n,{className:"mx_EntityTile_ellipsis",avatarJsx:i.createElement(r,{url:"img/ellipsis.svg",name:"...",width:36,height:36}),name:s,presenceState:"online",suppressOnHover:!0,onClick:this._showAll})},render:function(){var e=this,t=void 0;this.props.showInputBox&&(t=i.createElement("form",{onSubmit:this.onQuerySubmit,autoComplete:"off"},i.createElement("input",{className:"mx_SearchableEntityList_query",id:"mx_SearchableEntityList_query",type:"text",onChange:this.onQueryChanged,value:this.state.query,onFocus:function(){e.setState({focused:!0})},onBlur:function(){e.setState({focused:!1})},placeholder:(0,o._t)("Search")})));var n=void 0;if(this.state.results.length>1||this.state.focused){if(this.props.truncateAt){var r=a.getComponent("elements.TruncatedList");n=i.createElement(r,{className:"mx_SearchableEntityList_list",truncateAt:this.state.truncateAt,createOverflowElement:this._createOverflowEntity},this.state.results.map(function(e){return e.getJsx()}))}else n=i.createElement("div",{className:"mx_SearchableEntityList_list"},this.state.results.map(function(e){return e.getJsx()}));var s=a.getComponent("elements.GeminiScrollbarWrapper");n=i.createElement(s,{autoshow:!0,className:"mx_SearchableEntityList_listWrapper"},n)}return i.createElement("div",{className:"mx_SearchableEntityList "+(n?"mx_SearchableEntityList_expanded":"")},t,n,n?i.createElement("div",{className:"mx_SearchableEntityList_hrWrapper"},i.createElement("hr",null)):"")}});e.exports=s},function(e,t,n){"use strict";var r=a(n(1)),o=n(2),i=a(n(27));function a(e){return e&&e.__esModule?e:{default:e}}var s=n(0);n(3);e.exports=s.createClass({displayName:"TopUnreadMessagesBar",propTypes:{onScrollUpClick:r.default.func,onCloseClick:r.default.func},render:function(){return s.createElement("div",{className:"mx_TopUnreadMessagesBar"},s.createElement(i.default,{className:"mx_TopUnreadMessagesBar_scrollUp",onClick:this.props.onScrollUpClick},s.createElement("img",{src:"img/scrollto.svg",width:"24",height:"24",alt:"",title:(0,o._t)("Scroll to unread messages"),role:"presentation"}),(0,o._t)("Jump to first unread message.")),s.createElement(i.default,{element:"img",className:"mx_TopUnreadMessagesBar_close mx_filterFlipColor",src:"img/cancel.svg",width:"18",height:"18",alt:(0,o._t)("Close"),title:(0,o._t)("Close"),onClick:this.props.onCloseClick}))}})},function(e,t,n){"use strict";var r=i(n(37)),o=i(n(1));function i(e){return e&&e.__esModule?e:{default:e}}var a=n(0),s=n(290),l=(n(8),n(3));n(10),n(16);e.exports=a.createClass({displayName:"UserTile",propTypes:{user:o.default.any.isRequired},render:function(){var e,t=l.getComponent("rooms.EntityTile"),n=this.props.user,o=n.displayName||n.userId;e=n.lastActiveAgo?Date.now()-(n.lastPresenceTs-n.lastActiveAgo):-1;var i=l.getComponent("avatars.BaseAvatar"),u=a.createElement(i,{width:36,height:36,name:o,idName:n.userId,url:s.avatarUrlForUser(n,36,36,"crop")});return a.createElement(t,(0,r.default)({},this.props,{presenceState:n.presence,presenceActiveAgo:e,presenceCurrentlyActive:n.currentlyActive,name:o,title:n.userId,avatarJsx:u}))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(0)),o=c(n(1)),i=n(2),a=c(n(3)),s=c(n(454)),l=c(n(249)),u=c(n(16));function c(e){return e&&e.__esModule?e:{default:e}}t.default=(0,l.default)(r.default.createClass({displayName:"AddPhoneNumber",propTypes:{matrixClient:o.default.object.isRequired,onThreepidAdded:o.default.func},getInitialState:function(){return{busy:!1,phoneCountry:null,phoneNumber:"",msisdn_add_pending:!1}},componentWillMount:function(){this._addThreepid=null,this._addMsisdnInput=null,this._unmounted=!1},componentWillUnmount:function(){this._unmounted=!0},_onPhoneCountryChange:function(e){this.setState({phoneCountry:e.iso2})},_onPhoneNumberChange:function(e){this.setState({phoneNumber:e.target.value})},_onAddMsisdnEditFinished:function(e,t){t&&this._addMsisdn()},_onAddMsisdnSubmit:function(e){e.preventDefault(),this._addMsisdn()},_collectAddMsisdnInput:function(e){this._addMsisdnInput=e},_addMsisdn:function(){var e=this,t=a.default.getComponent("dialogs.ErrorDialog");this._addThreepid=new s.default,this._addThreepid.addMsisdn(this.state.phoneCountry,this.state.phoneNumber,!0).then(function(t){e._promptForMsisdnVerificationCode(t.msisdn)}).catch(function(e){console.error("Unable to add phone number: "+e);var n=e.message;u.default.createTrackedDialog("Add Phone Number Error","",t,{title:(0,i._t)("Error"),description:n})}).finally(function(){e._unmounted||e.setState({msisdn_add_pending:!1})}).done(),this._addMsisdnInput.blur(),this.setState({msisdn_add_pending:!0})},_promptForMsisdnVerificationCode:function(e,t){var n=this;if(!this._unmounted){var o=a.default.getComponent("dialogs.TextInputDialog"),s=[r.default.createElement("div",{key:"_static"},(0,i._t)("A text message has been sent to +%(msisdn)s. Please enter the verification code it contains",{msisdn:e}))];if(t){var l=t.error;"M_THREEPID_AUTH_FAILED"==t.errcode&&(l=(0,i._t)("Incorrect verification code")),s.push(r.default.createElement("div",{key:"_error",className:"error"},l))}u.default.createTrackedDialog("Prompt for MSISDN Verification Code","",o,{title:(0,i._t)("Enter Code"),description:r.default.createElement("div",null,s),button:(0,i._t)("Submit"),onFinished:function(t,r){t?n._unmounted||(n.setState({msisdn_add_pending:!0}),n._addThreepid.haveMsisdnToken(r).then(function(){n._addThreepid=null,n.setState({phoneNumber:""}),n.props.onThreepidAdded&&n.props.onThreepidAdded()}).catch(function(t){n._promptForMsisdnVerificationCode(e,t)}).finally(function(){n._unmounted||n.setState({msisdn_add_pending:!1})}).done()):n._addThreepid=null}})}},render:function(){var e=a.default.getComponent("elements.Spinner");if(this.state.msisdn_add_pending)return r.default.createElement(e,null);if(this.props.matrixClient.isGuest())return r.default.createElement("div",null);var t=a.default.getComponent("views.login.CountryDropdown");return r.default.createElement("form",{className:"mx_UserSettings_profileTableRow",onSubmit:this._onAddMsisdnSubmit},r.default.createElement("div",{className:"mx_UserSettings_profileLabelCell"},r.default.createElement("label",null,(0,i._t)("Phone"))),r.default.createElement("div",{className:"mx_UserSettings_profileInputCell"},r.default.createElement("div",{className:"mx_UserSettings_phoneSection"},r.default.createElement(t,{onOptionChange:this._onPhoneCountryChange,className:"mx_UserSettings_phoneCountry",value:this.state.phoneCountry,isSmall:!0}),r.default.createElement("input",{type:"text",ref:this._collectAddMsisdnInput,className:"mx_UserSettings_phoneNumberField",placeholder:(0,i._t)("Add phone number"),value:this.state.phoneNumber,onChange:this._onPhoneNumberChange}))),r.default.createElement("div",{className:"mx_UserSettings_threepidButton mx_filterFlipColor"},r.default.createElement("input",{type:"image",value:(0,i._t)("Add"),src:"img/plus.svg",width:"14",height:"14"})))}})),e.exports=t.default},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1)),o=n(2);var i=n(0),a=n(8),s=n(3);e.exports=i.createClass({displayName:"ChangeAvatar",propTypes:{initialAvatarUrl:r.default.string,room:r.default.object,showUploadSection:r.default.bool,width:r.default.number,height:r.default.number,className:r.default.string},Phases:{Display:"display",Uploading:"uploading",Error:"error"},getDefaultProps:function(){return{showUploadSection:!0,className:"",width:80,height:80}},getInitialState:function(){return{avatarUrl:this.props.initialAvatarUrl,phase:this.Phases.Display}},componentWillMount:function(){a.get().on("RoomState.events",this.onRoomStateEvents)},componentWillReceiveProps:function(e){this.avatarSet||this.setState({avatarUrl:e.initialAvatarUrl})},componentWillUnmount:function(){a.get()&&a.get().removeListener("RoomState.events",this.onRoomStateEvents)},onRoomStateEvents:function(e){this.props.room&&e.getRoomId()===this.props.room.roomId&&"m.room.avatar"===e.getType()&&e.getSender()===a.get().getUserId()&&(e.getContent().url||(this.avatarSet=!1,this.setState({})))},setAvatarFromFile:function(e){var t=null;this.setState({phase:this.Phases.Uploading});var n=this,r=a.get().uploadContent(e).then(function(e){return t=e,n.props.room?a.get().sendStateEvent(n.props.room.roomId,"m.room.avatar",{url:e},""):a.get().setAvatarUrl(e)});return r.done(function(){n.setState({phase:n.Phases.Display,avatarUrl:a.get().mxcUrlToHttp(t)})},function(e){n.setState({phase:n.Phases.Error}),n.onError(e)}),r},onFileSelected:function(e){return this.avatarSet=!0,this.setAvatarFromFile(e.target.files[0])},onError:function(e){this.setState({errorText:(0,o._t)("Failed to upload profile picture!")})},render:function(){var e=void 0;if(this.props.room&&!this.avatarSet){var t=s.getComponent("avatars.RoomAvatar");e=i.createElement(t,{room:this.props.room,width:this.props.width,height:this.props.height,resizeMethod:"crop"})}else{var n=s.getComponent("avatars.BaseAvatar");e=i.createElement(n,{width:this.props.width,height:this.props.height,resizeMethod:"crop",name:"?",idName:a.get().getUserIdLocalpart(),url:this.state.avatarUrl})}var r=void 0;switch(this.props.showUploadSection&&(r=i.createElement("div",{className:this.props.className},(0,o._t)("Upload new:"),i.createElement("input",{type:"file",accept:"image/*",onChange:this.onFileSelected}),this.state.errorText)),this.state.phase){case this.Phases.Display:case this.Phases.Error:return i.createElement("div",null,i.createElement("div",{className:this.props.className},e),r);case this.Phases.Uploading:var l=s.getComponent("elements.Spinner");return i.createElement(l,null)}}})},function(e,t,n){"use strict";var r=u(n(19)),o=n(9),i=u(n(0)),a=u(n(3)),s=u(n(8)),l=n(2);function u(e){return e&&e.__esModule?e:{default:e}}e.exports=i.default.createClass({displayName:"ChangeDisplayName",_getDisplayName:function(){var e=(0,o.coroutine)(r.default.mark(function e(){var t,n;return r.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=s.default.get(),e.prev=1,e.next=4,(0,o.resolve)(t.getProfileInfo(t.getUserId()));case 4:return n=e.sent,e.abrupt("return",n.displayname);case 8:throw e.prev=8,e.t0=e.catch(1),new Error("Failed to fetch display name");case 11:case"end":return e.stop()}},e,this,[[1,8]])}));return function(){return e.apply(this,arguments)}}(),_changeDisplayName:function(e){return s.default.get().setDisplayName(e).catch(function(e){throw new Error("Failed to set display name",e)})},render:function(){var e=a.default.getComponent("elements.EditableTextContainer");return i.default.createElement(e,{getInitialValue:this._getDisplayName,placeholder:(0,l._t)("No display name"),blurToSubmit:!0,onSubmit:this._changeDisplayName})}})},function(e,t,n){"use strict";var r=u(n(1)),o=u(n(10)),i=u(n(9)),a=u(n(27)),s=n(2),l=u(n(444));function u(e){return e&&e.__esModule?e:{default:e}}var c=n(0),f=n(8),d=n(16),p=n(3);e.exports=c.createClass({displayName:"ChangePassword",propTypes:{onFinished:r.default.func,onError:r.default.func,onCheckPassword:r.default.func,rowClassName:r.default.string,rowLabelClassName:r.default.string,rowInputClassName:r.default.string,buttonClassName:r.default.string,confirm:r.default.bool,autoFocusNewPasswordInput:r.default.bool},Phases:{Edit:"edit",Uploading:"uploading",Error:"error"},getDefaultProps:function(){return{onFinished:function(){},onError:function(){},onCheckPassword:function(e,t,n){return t!==n?{error:(0,s._t)("New passwords don't match")}:t&&0!==t.length?void 0:{error:(0,s._t)("Passwords can't be empty")}},confirm:!0}},getInitialState:function(){return{phase:this.Phases.Edit,cachedPassword:null}},componentWillMount:function(){this._sessionStore=l.default,this._sessionStoreToken=this._sessionStore.addListener(this._setStateFromSessionStore),this._setStateFromSessionStore()},componentWillUnmount:function(){this._sessionStoreToken&&this._sessionStoreToken.remove()},_setStateFromSessionStore:function(){this.setState({cachedPassword:this._sessionStore.getCachedPassword()})},changePassword:function(e,t){var n=this,r=f.get();if(this.props.confirm){var o=p.getComponent("dialogs.QuestionDialog");d.createTrackedDialog("Change Password","",o,{title:(0,s._t)("Warning!"),description:c.createElement("div",null,(0,s._t)("Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.")," (",c.createElement("a",{href:"https://github.com/vector-im/riot-web/issues/2671"},"https://github.com/vector-im/riot-web/issues/2671"),")"),button:(0,s._t)("Continue"),extraButtons:[c.createElement("button",{className:"mx_Dialog_primary",onClick:this._onExportE2eKeysClicked},(0,s._t)("Export E2E room keys"))],onFinished:function(o){o&&n._changePassword(r,e,t)}})}else this._changePassword(r,e,t)},_changePassword:function(e,t,n){var r=this,i={type:"m.login.password",user:e.credentials.userId,password:t};this.setState({phase:this.Phases.Uploading}),e.setPassword(i,n).then(function(){if(o.default.dispatch({action:"password_changed"}),r.props.shouldAskForEmail)return r._optionallySetEmail().then(function(e){r.props.onFinished({didSetEmail:e})});r.props.onFinished()},function(e){r.props.onError(e)}).finally(function(){r.setState({phase:r.Phases.Edit})}).done()},_optionallySetEmail:function(){var e=i.default.defer(),t=p.getComponent("dialogs.SetEmailDialog");return d.createTrackedDialog("Do you want to set an email address?","",t,{title:(0,s._t)("Do you want to set an email address?"),onFinished:function(t){e.resolve(t)}}),e.promise},_onExportE2eKeysClicked:function(){d.createTrackedDialogAsync("Export E2E Keys","Change Password",function(e){n.e(9).then(function(){e(n(180))}.bind(null,n)).catch(n.oe)},{matrixClient:f.get()})},onClickChange:function(e){e.preventDefault();var t=this.state.cachedPassword||this.refs.old_input.value,n=this.refs.new_input.value,r=this.refs.confirm_input.value,o=this.props.onCheckPassword(t,n,r);o?this.props.onError(o):this.changePassword(t,n)},render:function(){var e=this.props.rowClassName,t=this.props.rowLabelClassName,n=this.props.rowInputClassName,r=this.props.buttonClassName,o=null;switch(this.state.cachedPassword||(o=c.createElement("div",{className:e},c.createElement("div",{className:t},c.createElement("label",{htmlFor:"passwordold"},(0,s._t)("Current password"))),c.createElement("div",{className:n},c.createElement("input",{id:"passwordold",type:"password",ref:"old_input"})))),this.state.phase){case this.Phases.Edit:var i=this.state.cachedPassword?(0,s._t)("Password"):(0,s._t)("New Password");return c.createElement("form",{className:this.props.className,onSubmit:this.onClickChange},o,c.createElement("div",{className:e},c.createElement("div",{className:t},c.createElement("label",{htmlFor:"password1"},i)),c.createElement("div",{className:n},c.createElement("input",{id:"password1",type:"password",ref:"new_input",autoFocus:this.props.autoFocusNewPasswordInput}))),c.createElement("div",{className:e},c.createElement("div",{className:t},c.createElement("label",{htmlFor:"password2"},(0,s._t)("Confirm password"))),c.createElement("div",{className:n},c.createElement("input",{id:"password2",type:"password",ref:"confirm_input"}))),c.createElement(a.default,{className:r,onClick:this.onClickChange,element:"button"},(0,s._t)("Change Password")));case this.Phases.Uploading:var l=p.getComponent("elements.Spinner");return c.createElement("div",{className:"mx_Dialog_content"},c.createElement(l,null))}}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=h(n(11)),o=h(n(4)),i=h(n(5)),a=h(n(12)),s=h(n(13)),l=h(n(0)),u=h(n(1)),c=h(n(24)),f=h(n(3)),d=h(n(8)),p=n(2),m=h(n(16));function h(e){return e&&e.__esModule?e:{default:e}}var _=function(e){function t(e,n){(0,o.default)(this,t);var i=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this,e,n));return i.state={devices:void 0,deviceLoadError:void 0,selectedDevices:[],deleting:!1},i._unmounted=!1,i._renderDevice=i._renderDevice.bind(i),i._onDeviceSelectionToggled=i._onDeviceSelectionToggled.bind(i),i._onDeleteClick=i._onDeleteClick.bind(i),i}return(0,s.default)(t,e),(0,i.default)(t,[{key:"componentDidMount",value:function(){this._loadDevices()}},{key:"componentWillUnmount",value:function(){this._unmounted=!0}},{key:"_loadDevices",value:function(){var e=this;d.default.get().getDevices().done(function(t){e._unmounted||e.setState({devices:t.devices||[]})},function(t){if(!e._unmounted){var n=void 0;404==t.httpStatus?n=(0,p._t)("Your home server does not support device management."):(console.error("Error loading devices:",t),n=(0,p._t)("Unable to load device list")),e.setState({deviceLoadError:n})}})}},{key:"_deviceCompare",value:function(e,t){var n=(t.last_seen_ts||0)-(e.last_seen_ts||0);if(0!==n)return n;var r=e.device_id,o=t.device_id;return r<o?-1:r>o?1:0}},{key:"_onDeviceSelectionToggled",value:function(e){if(!this._unmounted){var t=e.device_id;this.setState(function(e,n){var r=e.selectedDevices.slice(),o=r.indexOf(t);return-1===o?r.push(t):r.splice(o,1),{selectedDevices:r}})}}},{key:"_onDeleteClick",value:function(){var e=this;this.setState({deleting:!0}),this._makeDeleteRequest(null).catch(function(t){if(!e._unmounted){if(401!==t.httpStatus||!t.data||!t.data.flows)throw t;var n=f.default.getComponent("dialogs.InteractiveAuthDialog");m.default.createTrackedDialog("Delete Device Dialog","",n,{title:(0,p._t)("Authentication"),matrixClient:d.default.get(),authData:t.data,makeRequest:e._makeDeleteRequest.bind(e)})}}).catch(function(t){console.error("Error deleting devices",t),e._unmounted}).finally(function(){e.setState({deleting:!1})})}},{key:"_makeDeleteRequest",value:function(e){var t=this;return d.default.get().deleteMultipleDevices(this.state.selectedDevices,e).then(function(){t.setState({devices:t.state.devices.filter(function(e){return!t.state.selectedDevices.includes(e.device_id)}),selectedDevices:[]})})}},{key:"_renderDevice",value:function(e){var t=f.default.getComponent("settings.DevicesPanelEntry");return l.default.createElement(t,{key:e.device_id,device:e,selected:this.state.selectedDevices.includes(e.device_id),onDeviceToggled:this._onDeviceSelectionToggled})}},{key:"render",value:function(){var e=f.default.getComponent("elements.Spinner"),t=f.default.getComponent("elements.AccessibleButton");if(void 0!==this.state.deviceLoadError){var n=(0,c.default)(this.props.className,"error");return l.default.createElement("div",{className:n},this.state.deviceLoadError)}var r=this.state.devices;if(void 0===r){var o=this.props.className;return l.default.createElement(e,{className:o})}r.sort(this._deviceCompare);var i=this.state.deleting?l.default.createElement(e,{w:22,h:22}):l.default.createElement(t,{className:"mx_textButton",onClick:this._onDeleteClick},(0,p._t)("Delete %(count)s devices",{count:this.state.selectedDevices.length})),a=(0,c.default)(this.props.className,"mx_DevicesPanel");return l.default.createElement("div",{className:a},l.default.createElement("div",{className:"mx_DevicesPanel_header"},l.default.createElement("div",{className:"mx_DevicesPanel_deviceId"},(0,p._t)("Device ID")),l.default.createElement("div",{className:"mx_DevicesPanel_deviceName"},(0,p._t)("Device Name")),l.default.createElement("div",{className:"mx_DevicesPanel_deviceLastSeen"},(0,p._t)("Last seen")),l.default.createElement("div",{className:"mx_DevicesPanel_deviceButtons"},this.state.selectedDevices.length>0?i:(0,p._t)("Select devices"))),r.map(this._renderDevice))}}]),t}(l.default.Component);t.default=_,_.displayName="MemberDeviceInfo",_.propTypes={className:u.default.string},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=m(n(11)),o=m(n(4)),i=m(n(5)),a=m(n(12)),s=m(n(13)),l=m(n(0)),u=m(n(1)),c=m(n(3)),f=n(2),d=m(n(8)),p=n(143);function m(e){return e&&e.__esModule?e:{default:e}}var h=function(e){function t(e,n){(0,o.default)(this,t);var i=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this,e,n));return i._unmounted=!1,i.onDeviceToggled=i.onDeviceToggled.bind(i),i._onDisplayNameChanged=i._onDisplayNameChanged.bind(i),i}return(0,s.default)(t,e),(0,i.default)(t,[{key:"componentWillUnmount",value:function(){this._unmounted=!0}},{key:"_onDisplayNameChanged",value:function(e){var t=this.props.device;return d.default.get().setDeviceDetails(t.device_id,{display_name:e}).catch(function(e){throw console.error("Error setting device display name",e),new Error((0,f._t)("Failed to set display name"))})}},{key:"onDeviceToggled",value:function(){this.props.onDeviceToggled(this.props.device)}},{key:"render",value:function(){var e=c.default.getComponent("elements.EditableTextContainer"),t=this.props.device,n="";if(t.last_seen_ts){var r=(0,p.formatDate)(new Date(t.last_seen_ts));n=t.last_seen_ip+" @ "+r.toLocaleString()}var o="";return t.device_id===d.default.get().getDeviceId()&&(o=" mx_DevicesPanel_myDevice"),l.default.createElement("div",{className:"mx_DevicesPanel_device"+o},l.default.createElement("div",{className:"mx_DevicesPanel_deviceId"},t.device_id),l.default.createElement("div",{className:"mx_DevicesPanel_deviceName"},l.default.createElement(e,{initialValue:t.display_name,onSubmit:this._onDisplayNameChanged,placeholder:t.device_id})),l.default.createElement("div",{className:"mx_DevicesPanel_lastSeen"},n),l.default.createElement("div",{className:"mx_DevicesPanel_deviceButtons"},l.default.createElement("input",{type:"checkbox",onClick:this.onDeviceToggled,checked:this.props.selected})))}}]),t}(l.default.Component);t.default=h,h.propTypes={device:u.default.object.isRequired,onDeviceToggled:u.default.func},h.defaultProps={onDeviceToggled:function(){}},e.exports=t.default},function(e,t,n){"use strict";var r=n(2),o=n(0),i=n(140),a=n(10);e.exports=o.createClass({displayName:"EnableNotificationsButton",componentDidMount:function(){this.dispatcherRef=a.register(this.onAction)},componentWillUnmount:function(){a.unregister(this.dispatcherRef)},onAction:function(e){"notifier_enabled"===e.action&&this.forceUpdate()},enabled:function(){return i.isEnabled()},onClick:function(){var e=this;i.supportsDesktopNotifications()&&(i.isEnabled()?i.setEnabled(!1):i.setEnabled(!0,function(){e.forceUpdate()}),this.forceUpdate())},render:function(){return this.enabled()?o.createElement("button",{className:"mx_EnableNotificationsButton",onClick:this.onClick},(0,r._t)("Disable Notifications")):o.createElement("button",{className:"mx_EnableNotificationsButton",onClick:this.onClick},(0,r._t)("Enable Notifications"))}})},function(e,t,n){"use strict";var r=n(0),o=(n(3),n(8),n(10));e.exports=r.createClass({displayName:"IntegrationsManager",propTypes:{src:r.PropTypes.string.isRequired,onFinished:r.PropTypes.func.isRequired},componentDidMount:function(){this.dispatcherRef=o.register(this.onAction),document.addEventListener("keydown",this.onKeyDown)},componentWillUnmount:function(){o.unregister(this.dispatcherRef),document.removeEventListener("keydown",this.onKeyDown)},onKeyDown:function(e){27==e.keyCode&&(e.stopPropagation(),e.preventDefault(),this.props.onFinished())},onAction:function(e){"close_scalar"===e.action&&this.props.onFinished()},render:function(){return r.createElement("iframe",{src:this.props.src})}})},function(e,t,n){"use strict";var r=m(n(14)),o=m(n(0)),i=m(n(9)),a=m(n(3)),s=n(2),l=m(n(8)),u=m(n(665)),c=n(22),f=m(c),d=m(n(16)),p=n(1869);function m(e){return e&&e.__esModule?e:{default:e}}var h={"im.vector.rule.contains_display_name":".m.rule.contains_display_name","im.vector.rule.room_one_to_one":".m.rule.room_one_to_one","im.vector.rule.room_message":".m.rule.message","im.vector.rule.invite_for_me":".m.rule.invite_for_me","im.vector.rule.call":".m.rule.call","im.vector.rule.notices":".m.rule.suppress_notices"};function _(e){var t=p.NotificationUtils.decodeActions(e);return null!==t?p.NotificationUtils.encodeActions(t):e}e.exports=o.default.createClass({displayName:"Notifications",phases:{LOADING:"LOADING",DISPLAY:"DISPLAY",ERROR:"ERROR"},propTypes:{threepids:o.default.PropTypes.array.isRequired,brand:o.default.PropTypes.string},getDefaultProps:function(){return{threepids:[]}},getInitialState:function(){return{phase:this.phases.LOADING,masterPushRule:void 0,vectorPushRules:[],vectorContentRules:{vectorState:p.PushRuleVectorState.ON,rules:[]},externalPushRules:[],externalContentRules:[]}},componentWillMount:function(){this._refreshFromServer()},onEnableNotificationsChange:function(e){var t=this;this.setState({phase:this.phases.LOADING}),l.default.get().setPushRuleEnabled("global",t.state.masterPushRule.kind,t.state.masterPushRule.rule_id,!e.target.checked).done(function(){t._refreshFromServer()})},onEnableDesktopNotificationsChange:function(e){var t=this;f.default.setValue("notificationsEnabled",null,c.SettingLevel.DEVICE,e.target.checked).finally(function(){t.forceUpdate()})},onEnableDesktopNotificationBodyChange:function(e){var t=this;f.default.setValue("notificationBodyEnabled",null,c.SettingLevel.DEVICE,e.target.checked).finally(function(){t.forceUpdate()})},onEnableAudioNotificationsChange:function(e){var t=this;f.default.setValue("audioNotificationsEnabled",null,c.SettingLevel.DEVICE,e.target.checked).finally(function(){t.forceUpdate()})},onEnableEmailNotificationsChange:function(e,t){var n=this,r=void 0;if(t.target.checked){var o={};o.brand=this.props.brand||"Riot",r=u.default.addEmailPusher(e,o)}else{var i=u.default.getEmailPusher(this.state.pushers,e);i.kind=null,r=l.default.get().setPusher(i)}r.done(function(){n._refreshFromServer()},function(e){var t=a.default.getComponent("dialogs.ErrorDialog");d.default.createTrackedDialog("Error saving email notification preferences","",t,{title:(0,s._t)("Error saving email notification preferences"),description:(0,s._t)("An error occurred whilst saving your email notification preferences.")})})},onNotifStateButtonClicked:function(e){var t=e.target.className.split("-")[0],n=e.target.className.split("-")[1];if("_keywords"===t)this._setKeywordsPushRuleVectorState(n);else{var r=this.getRule(t);r&&this._setPushRuleVectorState(r,n)}},onKeywordsClicked:function(e){var t=this,n=[];for(var r in this.state.vectorContentRules.rules){var o=this.state.vectorContentRules.rules[r];n.push(o.pattern)}n.length?(n.sort(),n=n.join(", ")):n="";var i=a.default.getComponent("dialogs.TextInputDialog");d.default.createTrackedDialog("Keywords Dialog","",i,{title:(0,s._t)("Keywords"),description:(0,s._t)("Enter keywords separated by a comma:"),button:(0,s._t)("OK"),value:n,onFinished:function(e,r){if(e&&r!==n){var o=r.split(",");for(var i in o)o[i]=o[i].trim();o=o.reduce(function(e,t){return""!==t&&e.indexOf(t)<0&&e.push(t),e},[]),t._setKeywords(o)}}})},getRule:function(e){for(var t in this.state.vectorPushRules){var n=this.state.vectorPushRules[t];if(n.vectorRuleId===e)return n}},_setPushRuleVectorState:function(e,t){if(e&&e.vectorState!==t){this.setState({phase:this.phases.LOADING});var n=this,r=l.default.get(),o=[],u=p.VectorPushRulesDefinitions[e.vectorRuleId];if(e.rule){var c=u.vectorStateToActions[t];c?o.push(this._updatePushRuleActions(e.rule,c,!0)):o.push(r.setPushRuleEnabled("global",e.rule.kind,e.rule.rule_id,!1))}i.default.all(o).done(function(){n._refreshFromServer()},function(e){var t=a.default.getComponent("dialogs.ErrorDialog");console.error("Failed to change settings: "+e),d.default.createTrackedDialog("Failed to change settings","",t,{title:(0,s._t)("Failed to change settings"),description:e&&e.message?e.message:(0,s._t)("Operation failed"),onFinished:n._refreshFromServer})})}},_setKeywordsPushRuleVectorState:function(e){if(this.state.vectorContentRules.vectorState!==e&&0!==this.state.vectorContentRules.rules.length){var t=this,n=l.default.get();this.setState({phase:this.phases.LOADING});var r=[];for(var o in this.state.vectorContentRules.rules){var u=this.state.vectorContentRules.rules[o],c=void 0,f=void 0;switch(e){case p.PushRuleVectorState.ON:1!==u.actions.length&&(f=p.PushRuleVectorState.actionsFor(p.PushRuleVectorState.ON)),this.state.vectorContentRules.vectorState===p.PushRuleVectorState.OFF&&(c=!0);break;case p.PushRuleVectorState.LOUD:3!==u.actions.length&&(f=p.PushRuleVectorState.actionsFor(p.PushRuleVectorState.LOUD)),this.state.vectorContentRules.vectorState===p.PushRuleVectorState.OFF&&(c=!0);break;case p.PushRuleVectorState.OFF:c=!1}f?r.push(this._updatePushRuleActions(u,f,c)):void 0!=c&&r.push(n.setPushRuleEnabled("global",u.kind,u.rule_id,c))}i.default.all(r).done(function(e){t._refreshFromServer()},function(e){var n=a.default.getComponent("dialogs.ErrorDialog");console.error("Can't update user notification settings: "+e),d.default.createTrackedDialog("Can't update user notifcation settings","",n,{title:(0,s._t)("Can't update user notification settings"),description:e&&e.message?e.message:(0,s._t)("Operation failed"),onFinished:t._refreshFromServer})})}},_setKeywords:function(e){this.setState({phase:this.phases.LOADING});var t=this,n=l.default.get(),r=[],o=[];for(var u in t.state.vectorContentRules.rules){var c=t.state.vectorContentRules.rules[u];o.push(c.pattern),e.indexOf(c.pattern)<0&&r.push(n.deletePushRule("global",c.kind,c.rule_id))}for(var f in t.state.externalContentRules){var m=t.state.externalContentRules[f];e.indexOf(m.pattern)>=0&&r.push(n.deletePushRule("global",m.kind,m.rule_id))}var h=function(e){var n=a.default.getComponent("dialogs.ErrorDialog");console.error("Failed to update keywords: "+e),d.default.createTrackedDialog("Failed to update keywords","",n,{title:(0,s._t)("Failed to update keywords"),description:e&&e.message?e.message:(0,s._t)("Operation failed"),onFinished:t._refreshFromServer})};i.default.all(r).done(function(r){var a=[],s=t.state.vectorContentRules.vectorState;for(var l in s===p.PushRuleVectorState.OFF&&(s=t.state.vectorContentRules.rules.length?p.PushRuleVectorState.contentRuleVectorStateKind(t.state.vectorContentRules.rules[0]):p.PushRuleVectorState.ON),e){var u=e[l];o.indexOf(u)<0&&(t.state.vectorContentRules.vectorState!==p.PushRuleVectorState.OFF?a.push(n.addPushRule("global","content",u,{actions:p.PushRuleVectorState.actionsFor(s),pattern:u})):a.push(t._addDisabledPushRule("global","content",u,{actions:p.PushRuleVectorState.actionsFor(s),pattern:u})))}i.default.all(a).done(function(e){t._refreshFromServer()},h)},h)},_addDisabledPushRule:function(e,t,n,r){var o=l.default.get();return o.addPushRule(e,t,n,r).then(function(){return o.setPushRuleEnabled(e,t,n,!1)})},_portRulesToNewAPI:function(e){var t=[],n=l.default.get();for(var r in e.global)for(var o=e.global[r],a=0;a<o.length;++a){var s=o[a];s.rule_id in h&&(console.log("Porting legacy rule",s),t.push(function(e,t){return n.setPushRuleActions("global",e,h[t.rule_id],_(t.actions)).then(function(){return n.deletePushRule("global",e,t.rule_id)}).catch(function(e){console.warn("Error when porting legacy rule: "+e)})}(r,s)))}return t.length>0?i.default.all(t).then(function(){return n.getPushRules()}):e},_refreshFromServer:function(){var e=this,t=l.default.get().getPushRules().then(e._portRulesToNewAPI).then(function(t){l.default.get().pushRules=t;var n={".m.rule.master":"master",".m.rule.contains_display_name":"vector",".m.rule.contains_user_name":"vector",".m.rule.room_one_to_one":"vector",".m.rule.message":"vector",".m.rule.invite_for_me":"vector",".m.rule.call":"vector",".m.rule.suppress_notices":"vector"},i={master:[],vector:{},others:[]};for(var a in t.global)for(var u=0;u<(0,r.default)(t.global[a]).length;++u){var c=t.global[a][u],f=n[c.rule_id];c.kind=a,"."===c.rule_id[0]&&("vector"===f?i.vector[c.rule_id]=c:"master"===f?i.master.push(c):i.others.push(c))}i.master.length>0&&(e.state.masterPushRule=i.master[0]);var d=p.ContentRules.parseContentRules(t);e.state.vectorContentRules={vectorState:d.vectorState,rules:d.rules},e.state.externalContentRules=d.externalRules,e.state.vectorPushRules=[],e.state.externalPushRules=[];var m=[".m.rule.contains_display_name",".m.rule.contains_user_name","_keywords",".m.rule.room_one_to_one",".m.rule.message",".m.rule.invite_for_me",".m.rule.call",".m.rule.suppress_notices"];for(var h in m){var _=m[h];if("_keywords"===_)e.state.vectorPushRules.push({vectorRuleId:"_keywords",description:o.default.createElement("span",null,(0,s._t)("Messages containing <span>keywords</span>",{},{span:function(t){return o.default.createElement("span",{className:"mx_UserNotifSettings_keywords",onClick:e.onKeywordsClicked},t)}})),vectorState:e.state.vectorContentRules.vectorState});else{var g=p.VectorPushRulesDefinitions[_],v=i.vector[_],y=g.ruleToVectorState(v);e.state.vectorPushRules.push({vectorRuleId:_,description:(0,s._t)(g.description),rule:v,vectorState:y}),v&&!y&&(v.description=g.description,e.state.externalPushRules.push(v))}}var b={".m.rule.message":(0,s._t)("Notify for all other messages/rooms"),".m.rule.fallback":(0,s._t)("Notify me for anything else")};for(var E in i.others){var C=i.others[E],S=b[C.rule_id];S&&C.enabled&&!C.default&&(C.description=S,e.state.externalPushRules.push(C))}}),n=l.default.get().getPushers().then(function(t){e.setState({pushers:t.pushers})});i.default.all([t,n]).then(function(){e.setState({phase:e.phases.DISPLAY})},function(t){console.error(t),e.setState({phase:e.phases.ERROR})}).finally(function(){e.setState({masterPushRule:e.state.masterPushRule,vectorContentRules:e.state.vectorContentRules,vectorPushRules:e.state.vectorPushRules,externalContentRules:e.state.externalContentRules,externalPushRules:e.state.externalPushRules})}).done()},_updatePushRuleActions:function(e,t,n){var r=l.default.get();return r.setPushRuleActions("global",e.kind,e.rule_id,t).then(function(){if(void 0!=n)return r.setPushRuleEnabled("global",e.kind,e.rule_id,n)})},renderNotifRulesTableRow:function(e,t,n){return o.default.createElement("tr",{key:t},o.default.createElement("th",null,e),o.default.createElement("th",null,o.default.createElement("input",{className:t+"-"+p.PushRuleVectorState.OFF,type:"radio",checked:n===p.PushRuleVectorState.OFF,onChange:this.onNotifStateButtonClicked})),o.default.createElement("th",null,o.default.createElement("input",{className:t+"-"+p.PushRuleVectorState.ON,type:"radio",checked:n===p.PushRuleVectorState.ON,onChange:this.onNotifStateButtonClicked})),o.default.createElement("th",null,o.default.createElement("input",{className:t+"-"+p.PushRuleVectorState.LOUD,type:"radio",checked:n===p.PushRuleVectorState.LOUD,onChange:this.onNotifStateButtonClicked})))},renderNotifRulesTableRows:function(){var e=[];for(var t in this.state.vectorPushRules){var n=this.state.vectorPushRules[t];e.push(this.renderNotifRulesTableRow(n.description,n.vectorRuleId,n.vectorState))}return e},emailNotificationsRow:function(e,t){return o.default.createElement("div",{className:"mx_UserNotifSettings_tableRow"},o.default.createElement("div",{className:"mx_UserNotifSettings_inputCell"},o.default.createElement("input",{id:"enableEmailNotifications_{address}",ref:"enableEmailNotifications_{address}",type:"checkbox",checked:u.default.hasEmailPusher(this.state.pushers,e),onChange:this.onEnableEmailNotificationsChange.bind(this,e)})),o.default.createElement("div",{className:"mx_UserNotifSettings_labelCell"},o.default.createElement("label",{htmlFor:"enableEmailNotifications_{address}"},t)))},render:function(){var e=void 0;if(this.state.phase===this.phases.LOADING){var t=a.default.getComponent("elements.Spinner");e=o.default.createElement(t,null)}var n=void 0;if(this.state.masterPushRule&&(n=o.default.createElement("div",{className:"mx_UserNotifSettings_tableRow"},o.default.createElement("div",{className:"mx_UserNotifSettings_inputCell"},o.default.createElement("input",{id:"enableNotifications",ref:"enableNotifications",type:"checkbox",checked:!this.state.masterPushRule.enabled,onChange:this.onEnableNotificationsChange})),o.default.createElement("div",{className:"mx_UserNotifSettings_labelCell"},o.default.createElement("label",{htmlFor:"enableNotifications"},(0,s._t)("Enable notifications for this account"))))),this.state.masterPushRule&&this.state.masterPushRule.enabled)return o.default.createElement("div",null,n,o.default.createElement("div",{className:"mx_UserSettings_notifTable"},(0,s._t)("All notifications are currently disabled for all targets."),"."));var r=this.props.threepids.filter(function(e){return"email"===e.medium}),i=void 0;i=0===r.length?o.default.createElement("div",null,(0,s._t)("Add an email address above to configure email notifications")):this.emailNotificationsRow(r[0].address,(0,s._t)("Enable email notifications")+" ("+r[0].address+")");var l=[];for(var u in this.state.externalPushRules){var c=this.state.externalPushRules[u];l.push(o.default.createElement("li",null,(0,s._t)(c.description)))}var d=[];for(var p in this.state.externalContentRules){var m=this.state.externalContentRules[p];d.push(m.pattern)}d.length&&(d=d.join(", "),l.push(o.default.createElement("li",null,(0,s._t)("Notifications on the following keywords follow rules which can’t be displayed here:")," ",d)));var h=void 0;if(void 0===this.state.pushers)h=o.default.createElement("div",{className:"error"},(0,s._t)("Unable to fetch notification target list"));else if(0==this.state.pushers.length)h=null;else{for(var _=[],g=0;g<this.state.pushers.length;++g)_.push(o.default.createElement("tr",{key:g},o.default.createElement("td",null,this.state.pushers[g].app_display_name),o.default.createElement("td",null,this.state.pushers[g].device_display_name)));h=o.default.createElement("table",{className:"mx_UserSettings_devicesTable"},o.default.createElement("tbody",null,_))}h&&(h=o.default.createElement("div",null,o.default.createElement("h3",null,(0,s._t)("Notification targets")),h));var v=void 0;return l.length&&(v=o.default.createElement("div",null,o.default.createElement("h3",null,(0,s._t)("Advanced notification settings")),(0,s._t)("There are advanced notifications which are not shown here"),".",o.default.createElement("br",null),(0,s._t)("You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply"),".",o.default.createElement("ul",null,l))),o.default.createElement("div",null,n,o.default.createElement("div",{className:"mx_UserSettings_notifTable"},e,o.default.createElement("div",{className:"mx_UserNotifSettings_tableRow"},o.default.createElement("div",{className:"mx_UserNotifSettings_inputCell"},o.default.createElement("input",{id:"enableDesktopNotifications",ref:"enableDesktopNotifications",type:"checkbox",checked:f.default.getValue("notificationsEnabled"),onChange:this.onEnableDesktopNotificationsChange})),o.default.createElement("div",{className:"mx_UserNotifSettings_labelCell"},o.default.createElement("label",{htmlFor:"enableDesktopNotifications"},(0,s._t)("Enable desktop notifications")))),o.default.createElement("div",{className:"mx_UserNotifSettings_tableRow"},o.default.createElement("div",{className:"mx_UserNotifSettings_inputCell"},o.default.createElement("input",{id:"enableDesktopNotificationBody",ref:"enableDesktopNotificationBody",type:"checkbox",checked:f.default.getValue("notificationBodyEnabled"),onChange:this.onEnableDesktopNotificationBodyChange})),o.default.createElement("div",{className:"mx_UserNotifSettings_labelCell"},o.default.createElement("label",{htmlFor:"enableDesktopNotificationBody"},(0,s._t)("Show message in desktop notification")))),o.default.createElement("div",{className:"mx_UserNotifSettings_tableRow"},o.default.createElement("div",{className:"mx_UserNotifSettings_inputCell"},o.default.createElement("input",{id:"enableDesktopAudioNotifications",ref:"enableDesktopAudioNotifications",type:"checkbox",checked:f.default.getValue("audioNotificationsEnabled"),onChange:this.onEnableAudioNotificationsChange})),o.default.createElement("div",{className:"mx_UserNotifSettings_labelCell"},o.default.createElement("label",{htmlFor:"enableDesktopAudioNotifications"},(0,s._t)("Enable audible notifications in web client")))),i,o.default.createElement("div",{className:"mx_UserNotifSettings_pushRulesTableWrapper"},o.default.createElement("table",{className:"mx_UserNotifSettings_pushRulesTable"},o.default.createElement("thead",null,o.default.createElement("tr",null,o.default.createElement("th",{width:"55%"}),o.default.createElement("th",{width:"15%"},(0,s._t)("Off")),o.default.createElement("th",{width:"15%"},(0,s._t)("On")),o.default.createElement("th",{width:"15%"},(0,s._t)("Noisy")))),o.default.createElement("tbody",null,this.renderNotifRulesTableRows()))),v,h))}})},function(e,t,n){"use strict";e.exports={NotificationUtils:n(476),PushRuleVectorState:n(477),VectorPushRulesDefinitions:n(1870),ContentRules:n(1871)}},function(e,t,n){"use strict";var r=s(n(31)),o=s(n(4)),i=s(n(5)),a=n(2);function s(e){return e&&e.__esModule?e:{default:e}}var l=n(720),u=n(477),c=function(){function e(t){(0,o.default)(this,e),this.kind=t.kind,this.description=t.description,this.vectorStateToActions=t.vectorStateToActions}return(0,i.default)(e,[{key:"ruleToVectorState",value:function(e){var t=!1;for(var n in e&&(t=e.enabled,e.actions),u.states){var o=u.states[n],i=this.vectorStateToActions[o];if(i){if(t&&(0,r.default)(e.actions)===(0,r.default)(i))return o}else if(!t)return o}console.error("Cannot translate rule actions into Vector rule state. Rule: "+(0,r.default)(e))}}]),e}();e.exports={".m.rule.contains_display_name":new c({kind:"override",description:(0,a._td)("Messages containing my display name"),vectorStateToActions:{on:l.ACTION_NOTIFY,loud:l.ACTION_HIGHLIGHT_DEFAULT_SOUND,off:l.ACTION_DISABLED}}),".m.rule.contains_user_name":new c({kind:"override",description:(0,a._td)("Messages containing my user name"),vectorStateToActions:{on:l.ACTION_NOTIFY,loud:l.ACTION_HIGHLIGHT_DEFAULT_SOUND,off:l.ACTION_DISABLED}}),".m.rule.room_one_to_one":new c({kind:"underride",description:(0,a._td)("Messages in one-to-one chats"),vectorStateToActions:{on:l.ACTION_NOTIFY,loud:l.ACTION_NOTIFY_DEFAULT_SOUND,off:l.ACTION_DONT_NOTIFY}}),".m.rule.message":new c({kind:"underride",description:(0,a._td)("Messages in group chats"),vectorStateToActions:{on:l.ACTION_NOTIFY,loud:l.ACTION_NOTIFY_DEFAULT_SOUND,off:l.ACTION_DONT_NOTIFY}}),".m.rule.invite_for_me":new c({kind:"underride",description:(0,a._td)("When I'm invited to a room"),vectorStateToActions:{on:l.ACTION_NOTIFY,loud:l.ACTION_NOTIFY_DEFAULT_SOUND,off:l.ACTION_DISABLED}}),".m.rule.call":new c({kind:"underride",description:(0,a._td)("Call invitation"),vectorStateToActions:{on:l.ACTION_NOTIFY,loud:l.ACTION_NOTIFY_RING_SOUND,off:l.ACTION_DISABLED}}),".m.rule.suppress_notices":new c({kind:"override",description:(0,a._td)("Messages sent by bot"),vectorStateToActions:{on:l.ACTION_DISABLED,loud:l.ACTION_NOTIFY_DEFAULT_SOUND,off:l.ACTION_DONT_NOTIFY}})}},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(14));var o=n(477);e.exports={parseContentRules:function(e){var t=this._categoriseContentRules(e);return t.loud.length?{vectorState:o.LOUD,rules:t.loud,externalRules:[].concat(t.loud_but_disabled,t.on,t.on_but_disabled,t.other)}:t.loud_but_disabled.length?{vectorState:o.OFF,rules:t.loud_but_disabled,externalRules:[].concat(t.on,t.on_but_disabled,t.other)}:t.on.length?{vectorState:o.ON,rules:t.on,externalRules:[].concat(t.on_but_disabled,t.other)}:t.on_but_disabled.length?{vectorState:o.OFF,rules:t.on_but_disabled,externalRules:t.other}:{vectorState:o.ON,rules:[],externalRules:t.other}},_categoriseContentRules:function(e){var t={on:[],on_but_disabled:[],loud:[],loud_but_disabled:[],other:[]};for(var n in e.global)for(var i=0;i<(0,r.default)(e.global[n]).length;++i){var a=e.global[n][i];if("."!==a.rule_id[0]&&"content"===n)switch(a.kind=n,o.contentRuleVectorStateKind(a)){case o.ON:a.enabled?t.on.push(a):t.on_but_disabled.push(a);break;case o.LOUD:a.enabled?t.loud.push(a):t.loud_but_disabled.push(a);break;default:t.other.push(a)}}return t}}},function(e,t,n){"use strict";var r=u(n(0)),o=u(n(1)),i=u(n(104)),a=u(n(127)),s=u(n(10)),l=u(n(3));function u(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"CallPreview",propTypes:{ConferenceHandler:o.default.object},getInitialState:function(){return{roomId:i.default.getRoomId(),activeCall:a.default.getAnyActiveCall()}},componentWillMount:function(){this._roomStoreToken=i.default.addListener(this._onRoomViewStoreUpdate),this.dispatcherRef=s.default.register(this._onAction)},componentWillUnmount:function(){this._roomStoreToken&&this._roomStoreToken.remove(),s.default.unregister(this.dispatcherRef)},_onRoomViewStoreUpdate:function(e){i.default.getRoomId()!==this.state.roomId&&this.setState({roomId:i.default.getRoomId()})},_onAction:function(e){switch(e.action){case"call_state":this.setState({activeCall:a.default.getAnyActiveCall()})}},_onCallViewClick:function(){var e=a.default.getAnyActiveCall();e&&s.default.dispatch({action:"view_room",room_id:e.groupRoomId||e.roomId})},render:function(){var e=a.default.getCallForRoom(this.state.roomId);if(this.state.activeCall&&"connected"===this.state.activeCall.call_state&&!e){var t=l.default.getComponent("voip.CallView");return r.default.createElement(t,{className:"mx_LeftPanel_callView",showVoice:!0,onClick:this._onCallViewClick,ConferenceHandler:this.props.ConferenceHandler})}var n=l.default.getComponent("elements.PersistentApp");return r.default.createElement(n,null)}})},function(e,t,n){"use strict";var r=c(n(0)),o=c(n(1)),i=c(n(10)),a=c(n(127)),s=c(n(3)),l=c(n(8)),u=n(2);function c(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"CallView",propTypes:{room:o.default.object,ConferenceHandler:o.default.object,maxVideoHeight:o.default.number,onClick:o.default.func,onResize:o.default.func,showVoice:o.default.bool},getInitialState:function(){return{call:null}},componentDidMount:function(){this.dispatcherRef=i.default.register(this.onAction),this.showCall()},componentWillUnmount:function(){i.default.unregister(this.dispatcherRef)},onAction:function(e){"call_state"===e.action&&this.showCall()},showCall:function(){var e=void 0;if(this.props.room){var t=this.props.room.roomId;e=a.default.getCallForRoom(t)||(this.props.ConferenceHandler?this.props.ConferenceHandler.getConferenceCallForRoom(t):null),this.call&&this.setState({call:e})}else e=a.default.getAnyActiveCall(),this.setState({call:e});e&&(e.setLocalVideoElement(this.getVideoView().getLocalVideoElement()),e.setRemoteVideoElement(this.getVideoView().getRemoteVideoElement()),e.setRemoteAudioElement(this.getVideoView().getRemoteAudioElement())),e&&"video"===e.type&&"ended"!==e.call_state&&"ringing"!==e.call_state?(this.getVideoView().getLocalVideoElement().style.display=e.confUserId?"none":"block",this.getVideoView().getRemoteVideoElement().style.display="block"):(this.getVideoView().getLocalVideoElement().style.display="none",this.getVideoView().getRemoteVideoElement().style.display="none",i.default.dispatch({action:"video_fullscreen",fullscreen:!1})),this.props.onResize&&this.props.onResize()},getVideoView:function(){return this.refs.video},render:function(){var e=s.default.getComponent("voip.VideoView"),t=s.default.getComponent("elements.AccessibleButton"),n=void 0;if(this.state.call&&"voice"===this.state.call.type&&this.props.showVoice){var o=l.default.get().getRoom(this.state.call.roomId);n=r.default.createElement(t,{className:"mx_CallView_voice",onClick:this.props.onClick},(0,u._t)("Active call (%(roomName)s)",{roomName:o.name}))}return r.default.createElement("div",null,r.default.createElement(e,{ref:"video",onClick:this.props.onClick,onResize:this.props.onResize,maxHeight:this.props.maxVideoHeight}),n)}})},function(e,t,n){"use strict";var r=u(n(0)),o=u(n(1)),i=u(n(8)),a=u(n(10)),s=n(2),l=u(n(3));function u(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"IncomingCallBox",propTypes:{incomingCall:o.default.object},onAnswerClick:function(e){e.stopPropagation(),a.default.dispatch({action:"answer",room_id:this.props.incomingCall.roomId})},onRejectClick:function(e){e.stopPropagation(),a.default.dispatch({action:"hangup",room_id:this.props.incomingCall.roomId})},render:function(){var e=null;this.props.incomingCall&&(e=i.default.get().getRoom(this.props.incomingCall.roomId));var t=e?e.name:(0,s._t)("unknown caller"),n=null;this.props.incomingCall&&(n="voice"===this.props.incomingCall.type?(0,s._t)("Incoming voice call from %(name)s",{name:t}):"video"===this.props.incomingCall.type?(0,s._t)("Incoming video call from %(name)s",{name:t}):(0,s._t)("Incoming call from %(name)s",{name:t}));var o=l.default.getComponent("elements.AccessibleButton");return r.default.createElement("div",{className:"mx_IncomingCallBox",id:"incomingCallBox"},r.default.createElement("img",{className:"mx_IncomingCallBox_chevron",src:"img/chevron-left.png",width:"9",height:"16"}),r.default.createElement("div",{className:"mx_IncomingCallBox_title"},n),r.default.createElement("div",{className:"mx_IncomingCallBox_buttons"},r.default.createElement("div",{className:"mx_IncomingCallBox_buttons_cell"},r.default.createElement(o,{className:"mx_IncomingCallBox_buttons_decline",onClick:this.onRejectClick},(0,s._t)("Decline"))),r.default.createElement("div",{className:"mx_IncomingCallBox_buttons_cell"},r.default.createElement(o,{className:"mx_IncomingCallBox_buttons_accept",onClick:this.onAnswerClick},(0,s._t)("Accept")))))}})},function(e,t,n){"use strict";var r=i(n(0)),o=i(n(1));function i(e){return e&&e.__esModule?e:{default:e}}e.exports=r.default.createClass({displayName:"VideoFeed",propTypes:{maxHeight:o.default.number,onResize:o.default.func},componentDidMount:function(){this.refs.vid.addEventListener("resize",this.onResize)},componentWillUnmount:function(){this.refs.vid.removeEventListener("resize",this.onResize)},onResize:function(e){this.props.onResize&&this.props.onResize(e)},render:function(){return r.default.createElement("video",{ref:"vid",style:{maxHeight:this.props.maxHeight}})}})},function(e,t,n){"use strict";var r=c(n(0)),o=c(n(41)),i=c(n(1)),a=c(n(24)),s=c(n(3)),l=c(n(10)),u=c(n(22));function c(e){return e&&e.__esModule?e:{default:e}}function f(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement}e.exports=r.default.createClass({displayName:"VideoView",propTypes:{maxHeight:i.default.number,onClick:i.default.func,onResize:i.default.func},componentDidMount:function(){this.dispatcherRef=l.default.register(this.onAction)},componentWillUnmount:function(){l.default.unregister(this.dispatcherRef)},getRemoteVideoElement:function(){return o.default.findDOMNode(this.refs.remote)},getRemoteAudioElement:function(){var e=document.getElementById("remoteAudio");return e||console.error("Failed to find remoteAudio element - cannot play audio!You need to add an <audio/> to the DOM."),e},getLocalVideoElement:function(){return o.default.findDOMNode(this.refs.local)},setContainer:function(e){this.container=e},onAction:function(e){switch(e.action){case"video_fullscreen":if(!this.container)return;var t=this.container;if(e.fullscreen)(t.requestFullScreen||t.webkitRequestFullScreen||t.mozRequestFullScreen||t.msRequestFullscreen).call(t);else if(f()){var n=document.exitFullscreen||document.mozCancelFullScreen||document.webkitExitFullscreen||document.msExitFullscreen;n&&n.call(document)}}},render:function(){var e=s.default.getComponent("voip.VideoFeed"),t=f()?null:this.props.maxHeight,n=(0,a.default)("mx_VideoView_localVideoFeed",{mx_VideoView_localVideoFeed_flipped:u.default.getValue("VideoView.flipVideoHorizontally")});return r.default.createElement("div",{className:"mx_VideoView",ref:this.setContainer,onClick:this.props.onClick},r.default.createElement("div",{className:"mx_VideoView_remoteVideoFeed"},r.default.createElement(e,{ref:"remote",onResize:this.props.onResize,maxHeight:t})),r.default.createElement("div",{className:n},r.default.createElement(e,{ref:"local"})))}})},,,,,,,function(e,t,n){"use strict";n.r(t);var r=n(131),o=n.n(r),i=n(0),a=n.n(i),s=n(1),l=n.n(s),u=n(21);function c(e,t){function n(n,r,o,i,a){var s=r[o];return null!=s||n?null==s&&n?new Error("The "+a+" `"+o+"` is marked as required in `"+i+"`, but it was not supplied."):t(s)?null:new Error("Invalid "+a+" `"+o+"` supplied to `"+i+"`, expected a Slate `"+e+"` but received: "+s):null}function r(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return n.apply(void 0,[!1].concat(t))}return r.isRequired=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return n.apply(void 0,[!0].concat(t))},r}var f={block:c("Block",function(e){return u.Block.isBlock(e)}),blocks:c("List<Block>",function(e){return u.Block.isBlockList(e)}),change:c("Change",function(e){return u.Change.isChange(e)}),data:c("Data",function(e){return u.Data.isData(e)}),document:c("Document",function(e){return u.Document.isDocument(e)}),history:c("History",function(e){return u.History.isHistory(e)}),inline:c("Inline",function(e){return u.Inline.isInline(e)}),inlines:c("Inline",function(e){return u.Inline.isInlineList(e)}),leaf:c("Leaf",function(e){return u.Leaf.isLeaf(e)}),leaves:c("List<Leaf>",function(e){return u.Leaf.isLeafList(e)}),mark:c("Mark",function(e){return u.Mark.isMark(e)}),marks:c("Set<Mark>",function(e){return u.Mark.isMarkSet(e)}),node:c("Node",function(e){return u.Node.isNode(e)}),nodes:c("List<Node>",function(e){return u.Node.isNodeList(e)}),range:c("Range",function(e){return u.Range.isRange(e)}),ranges:c("List<Range>",function(e){return u.Range.isRangeList(e)}),schema:c("Schema",function(e){return u.Schema.isSchema(e)}),stack:c("Stack",function(e){return u.Stack.isStack(e)}),value:c("Value",function(e){return u.Value.isValue(e)}),text:c("Text",function(e){return u.Text.isText(e)}),texts:c("List<Text>",function(e){return u.Text.isTextList(e)})},d=n(483),p=n.n(d),m=n(6),h=n(62),_=n(56),g=n.n(_),v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},y="object"===("undefined"==typeof window?"undefined":v(window))&&"object"===("undefined"==typeof document?"undefined":v(document))&&9===document.nodeType,b=function(){return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),E=void 0;if(y){var C=!0,S=!1,D=void 0;try{for(var w,T=[["edge",/Edge\/([0-9\._]+)/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)$/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+)\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["android",/Android\s([0-9\.]+)/],["safari",/Version\/([0-9\._]+).*Safari/]][Symbol.iterator]();!(C=(w=T.next()).done);C=!0){var x=b(w.value,2),R=x[0];if(x[1].test(window.navigator.userAgent)){E=R;break}}}catch(e){S=!0,D=e}finally{try{!C&&T.return&&T.return()}finally{if(S)throw D}}}var k=void 0;if(y){var N=!0,I=!1,O=void 0;try{for(var A,M=[["ios",/os ([\.\_\d]+) like mac os/i],["macos",/mac os x/i],["android",/android/i],["firefoxos",/mozilla\/[a-z\.\_\d]+ \((?:mobile)|(?:tablet)/i],["windows",/windows\s*(?:nt)?\s*([\.\_\d]+)/i]][Symbol.iterator]();!(N=(A=M.next()).done);N=!0){var P=b(A.value,2),L=P[0];if(P[1].test(window.navigator.userAgent)){k=L;break}}}catch(e){I=!0,O=e}finally{try{!N&&M.return&&M.return()}finally{if(I)throw O}}}var F=[["inputeventslevel1",function(e){return"inputType"in(e.InputEvent?new InputEvent("input"):{})}],["inputeventslevel2",function(e){var t=e.document.createElement("div");return t.contentEditable=!0,"onbeforeinput"in t}]],U=[];if(y){var j=!0,B=!1,G=void 0;try{for(var q,V=F[Symbol.iterator]();!(j=(q=V.next()).done);j=!0){var H=b(q.value,2),Y=H[0];(0,H[1])(window)&&U.push(Y)}}catch(e){B=!0,G=e}finally{try{!j&&V.return&&V.return()}finally{if(B)throw G}}}var z="firefox"===E,W="safari"===E,K="ie"===E,$="edge"===E,Q="ios"===k,X="macos"===k,J=(U.includes("inputeventslevel1"),U.includes("inputeventslevel2")),Z=n(726),ee=n.n(Z),te=n(727),ne=n.n(te),re=n(484);function oe(e){var t=JSON.stringify(e);return Object(re.btoa)(encodeURIComponent(t))}function ie(e){var t=decodeURIComponent(Object(re.atob)(e));return JSON.parse(t)}var ae={deserialize:function(e,t){var n=ie(e);return u.Value.fromJSON(n,t)},deserializeNode:function(e,t){var n=ie(e);return u.Node.fromJSON(n,t)},serialize:function(e,t){return oe(e.toJSON(t))},serializeNode:function(e,t){return oe(e.toJSON(t))}},se=n(320),le=n(322),ue={bold:"mod+b",compose:["down","left","right","up","backspace","enter"],moveBackward:"left",moveForward:"right",moveWordBackward:"ctrl+left",moveWordForward:"ctrl+right",deleteBackward:"shift?+backspace",deleteForward:"shift?+delete",extendBackward:"shift+left",extendForward:"shift+right",italic:"mod+i",splitBlock:"shift?+enter",undo:"mod+z"},ce={moveLineBackward:"opt+up",moveLineForward:"opt+down",moveWordBackward:"opt+left",moveWordForward:"opt+right",deleteBackward:["ctrl+backspace","ctrl+h"],deleteForward:["ctrl+delete","ctrl+d"],deleteLineBackward:"cmd+shift?+backspace",deleteLineForward:["cmd+shift?+delete","ctrl+k"],deleteWordBackward:"opt+shift?+backspace",deleteWordForward:"opt+shift?+delete",extendLineBackward:"opt+shift+up",extendLineForward:"opt+shift+down",redo:"cmd+shift+z",transposeCharacter:"ctrl+t"},fe={deleteWordBackward:"ctrl+shift?+backspace",deleteWordForward:"ctrl+shift?+delete",redo:"ctrl+y"},de={},pe=Q||X,me=!pe;[].concat(Object.keys(ue)).concat(Object.keys(ce)).concat(Object.keys(fe)).forEach(function(e){var t="is"+e[0].toUpperCase()+e.slice(1);if(!de[t]){var n=ue[e],r=ce[e],o=fe[e],i=n&&Object(le.isKeyHotkey)(n),a=r&&Object(le.isKeyHotkey)(r),s=o&&Object(le.isKeyHotkey)(o);de[t]=function(e){return!(!i||!i(e))||(!!(pe&&a&&a(e))||!!(me&&s&&s(e)))}}});var he=de,_e=n(41),ge=function(e,t){return e===t};var ve=function(e,t){var n;void 0===t&&(t=ge);var r,o=[],i=!1,a=function(e,n){return t(e,o[n])};return function(){for(var t=arguments.length,s=new Array(t),l=0;l<t;l++)s[l]=arguments[l];return i&&n===this&&s.length===o.length&&s.every(a)?r:(r=e.apply(this,s),i=!0,n=this,o=s,r)}};n.d(t,"Editor",function(){return It}),n.d(t,"cloneFragment",function(){return pt}),n.d(t,"findDOMNode",function(){return He}),n.d(t,"findDOMRange",function(){return ze}),n.d(t,"findNode",function(){return mt}),n.d(t,"findRange",function(){return tt}),n.d(t,"getEventRange",function(){return ht}),n.d(t,"getEventTransfer",function(){return Ct}),n.d(t,"setEventTransfer",function(){return wt}),n.d(t,"AfterPlugin",function(){return xt}),n.d(t,"BeforePlugin",function(){return kt});var ye=["onBeforeInput","onBlur","onClick","onContextMenu","onCompositionEnd","onCompositionStart","onCopy","onCut","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onInput","onFocus","onKeyDown","onKeyUp","onPaste","onSelect"],be=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},Ee=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),Ce=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},Se=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},De=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)},we=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},Te=function(){return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),xe=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)},Re=[].concat(xe(ye),["decorateNode","onChange","renderEditor","renderMark","renderNode","renderPlaceholder","renderPortal","schema","validateNode"]),ke=/^([\w-]+)(?::(\d+))?$/;var Ne={parse:function(e){var t=ke.exec(e);if(!t)throw new Error('Invalid offset key string "'+e+'".');var n=Te(t,3),r=(n[0],n[1]),o=n[2];return{key:r,index:parseInt(o,10)}},stringify:function(e){return e.key+":"+e.index}},Ie=o()("slate:leaves"),Oe=function(e){function t(){var e,n,r;be(this,t);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return n=r=we(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(i))),Ae.call(r),we(r,n)}return De(t,e),Ee(t,[{key:"shouldComponentUpdate",value:function(e){return e.index!=this.props.index||e.marks!=this.props.marks||e.text!=this.props.text||e.parent!=this.props.parent}},{key:"render",value:function(){this.debug("render",this);var e=this.props,t=e.node,n=e.index,r=Ne.stringify({key:t.key,index:n});return a.a.createElement("span",{"data-offset-key":r},this.renderMarks())}},{key:"renderMarks",value:function(){var e=this.props,t=e.marks,n=e.node,r=e.offset,o=e.text,i=e.editor,a=i.stack,s=this.renderText(),l={"data-slate-leaf":!0};return t.reduce(function(e,s){var u={editor:i,mark:s,marks:t,node:n,offset:r,text:o,children:e,attributes:l};return a.find("renderMark",u)||e},s)}},{key:"renderText",value:function(){var e=this.props,t=e.block,n=e.node,r=e.editor,o=e.parent,i=e.text,s=e.index,l=e.leaves;if(r.value.schema.isVoid(o))return a.a.createElement("span",{"data-slate-zero-width":"z"},"\ufeff");if(""===i&&"block"===o.object&&""===o.text&&o.nodes.last()===n)return a.a.createElement("span",{"data-slate-zero-width":"n"},"\ufeff");if(""===i)return a.a.createElement("span",{"data-slate-zero-width":"z"},"\ufeff");var u=t.getLastText(),c=i.charAt(i.length-1),f=n===u,d=s===l.size-1;return f&&d&&"\n"===c?i+"\n":i}}]),t}(a.a.Component);Oe.propTypes={block:f.block.isRequired,editor:l.a.object.isRequired,index:l.a.number.isRequired,leaves:f.leaves.isRequired,marks:f.marks.isRequired,node:f.node.isRequired,offset:l.a.number.isRequired,parent:f.node.isRequired,text:l.a.string.isRequired};var Ae=function(){var e=this;this.debug=function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];Ie.apply(void 0,[t,e.props.node.key+"-"+e.props.index].concat(r))}},Me=o()("slate:node"),Pe=function(e){function t(){var e,n,r;be(this,t);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return n=r=we(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(i))),Le.call(r),we(r,n)}return De(t,e),Ee(t,[{key:"render",value:function(){var e=this;this.debug("render",this);var t=this.props,n=t.decorations,r=t.editor,o=t.node,i=t.style,s=r.value.document,l=o.key,c=n.filter(function(e){var t=e.start,n=e.end;if(t.key===l||n.key===l)return!0;if(t.key===n.key)return!1;var r=s.assertPath(l);return-1!==u.PathUtils.compare(r,t.path)&&1!==u.PathUtils.compare(r,n.path)}),f=0===c.size?o.getLeaves():o.getLeaves(c),d=0,p=f.map(function(t,n){var r=e.renderLeaf(f,t,n,d);return d+=t.text.length,r});return a.a.createElement("span",{"data-key":l,style:i},p)}}]),t}(a.a.Component);Pe.propTypes={block:f.block,decorations:p.a.list.isRequired,editor:l.a.object.isRequired,node:f.node.isRequired,parent:f.node.isRequired,style:l.a.object},Pe.defaultProps={style:null};var Le=function(){var e=this;this.debug=function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];var i=e.props.node.key;Me.apply(void 0,[t,i+" (text)"].concat(r))},this.shouldComponentUpdate=function(t){var n=t,r=e.props;if(n.node!=r.node)return!0;if("block"==n.parent.object){var o=r.parent.nodes.last(),i=n.parent.nodes.last();if(r.node==o&&n.node!=i)return!0}return!n.decorations.equals(r.decorations)},this.renderLeaf=function(t,n,r,o){var i=e.props,s=i.block,l=i.node,u=i.parent,c=i.editor,f=n.text,d=n.marks;return a.a.createElement(Oe,{key:l.key+"-"+r,block:s,editor:c,index:r,marks:d,node:l,offset:o,parent:u,leaves:t,text:f})}},Fe=o()("slate:void"),Ue=function(e){function t(){var e,n,r;be(this,t);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return n=r=we(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(i))),je.call(r),we(r,n)}return De(t,e),Ee(t,[{key:"render",value:function(){var e=this.props,t=e.children,n=e.node,r=e.readOnly,o="block"==n.object?"div":"span",i=a.a.createElement(o,{"data-slate-spacer":!0,style:{height:"0",color:"transparent",outline:"none",position:"absolute"}},this.renderText()),s=a.a.createElement(o,{contentEditable:!!r&&null},t);return this.debug("render",{props:e}),a.a.createElement(o,{"data-slate-void":!0,"data-key":n.key,contentEditable:!(!r&&"block"!=n.object)&&null},r?null:i,s)}}]),t}(a.a.Component);Ue.propTypes={block:f.block,children:l.a.any.isRequired,editor:l.a.object.isRequired,node:f.node.isRequired,parent:f.node.isRequired,readOnly:l.a.bool.isRequired};var je=function(){var e=this;this.debug=function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];var i=e.props.node,a=i.key+" ("+i.type+")";Fe.apply(void 0,[t,""+a].concat(r))},this.renderText=function(){var t=e.props,n=t.block,r=t.decorations,o=t.node,i=t.readOnly,s=t.editor,l=o.getFirstText();return a.a.createElement(Pe,{block:"block"==o.object?o:n,decorations:r,editor:s,key:l.key,node:l,parent:o,readOnly:i})}};function Be(e,t){var n=Object(m.Set)().asMutable(),r=[];return function(e,t){if(t.isEmpty())return e.nodes.toArray().map(function(e,t){return{child:e,index:t}});var n=Ce({},e.key,0),r=1;e.forEachDescendant(function(e){n[e.key]=r,r+=1});var o=e.nodes.toArray(),i=o.map(function(e,t){return{child:e,index:t,order:n[e.key]}});return t.forEach(function(e){var t=n[e.start.key],a=void 0===t?0:function(e,t,n){var r=e.findIndex(function(e){return n<t[e.key]});if(r<=0)return 0;var o=e[r-1];return t[o.key]}(o,n,t);i.push({isRangeStart:!0,order:a-.5,decoration:e});var s=(n[e.end.key]||r)+.5;i.push({isRangeEnd:!0,order:s,decoration:e})}),i.sort(function(e,t){return e.order>t.order?1:-1})}(e,t).forEach(function(e){e.isRangeStart?n.add(e.decoration):e.isRangeEnd?n.remove(e.decoration):r.push(n.toList())}),r}var Ge=o()("slate:node"),qe=function(e){function t(){var e,n,r;be(this,t);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return n=r=we(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(i))),Ve.call(r),we(r,n)}return De(t,e),Ee(t,[{key:"shouldComponentUpdate",value:function(e){var t=this.props,n=t.editor.stack.find("shouldNodeComponentUpdate",t,e),r=e,o=t;if(null!=n){if(n)return!0;Object(h.a)(!1!==n,"Returning false in `shouldNodeComponentUpdate` does not disable Slate's internal `shouldComponentUpdate` logic. If you want to prevent updates, use React's `shouldComponentUpdate` instead.")}return r.readOnly!=o.readOnly||(r.node!=o.node||(!(!r.isSelected&&!o.isSelected)||(!(!r.isFocused&&!o.isFocused)||!r.decorations.equals(o.decorations))))}},{key:"render",value:function(){var e=this;this.debug("render",this);var t=this.props,n=t.editor,r=t.isSelected,o=t.isFocused,i=t.node,s=t.decorations,l=t.parent,u=t.readOnly,c=n.value,f=c.selection,d=c.schema,p=n.stack,m=i.getSelectionIndexes(f,r),h=Be(i,s.concat(i.getDecorations(p))),_=[];i.nodes.forEach(function(t,n){var r=!!m&&m.start<=n&&n<m.end;_.push(e.renderNode(t,r,h[n]))});var g={"data-key":i.key};"block"==i.object&&"block"!=i.nodes.first().object&&("rtl"==i.getTextDirection()&&(g.dir="rtl"));var v={key:i.key,editor:n,isFocused:o,isSelected:r,node:i,parent:l,readOnly:u},y=p.find("renderPlaceholder",v);y&&(y=a.a.cloneElement(y,{key:i.key+"-placeholder"}),_=[y].concat(xe(_)));var b=p.find("renderNode",Se({},v,{attributes:g,children:_}));return d.isVoid(i)?a.a.createElement(Ue,this.props,b):b}}]),t}(a.a.Component);qe.propTypes={block:f.block,decorations:p.a.list.isRequired,editor:l.a.object.isRequired,isFocused:l.a.bool.isRequired,isSelected:l.a.bool.isRequired,node:f.node.isRequired,parent:f.node.isRequired,readOnly:l.a.bool.isRequired};var Ve=function(){var e=this;this.debug=function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];var i=e.props.node,a=i.key,s=i.type;Ge.apply(void 0,[t,a+" ("+s+")"].concat(r))},this.renderNode=function(t,n,r){var o=e.props,i=o.block,s=o.editor,l=o.node,u=o.readOnly,c=o.isFocused,f="text"==t.object?Pe:qe;return a.a.createElement(f,{block:"block"==l.object?l:i,decorations:r,editor:s,isSelected:n,isFocused:c&&n,key:t.key,node:t,parent:l,readOnly:u})}};function He(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window;u.Node.isNode(e)&&(e=e.key);var n=t.document.querySelector('[data-key="'+e+'"]');if(!n)throw new Error('Unable to find a DOM node for "'+e+'". This is often because of forgetting to add `props.attributes` to a custom component.');return n}function Ye(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window,n=He(e.key,t),r=0,o=void 0,i=t.document.createNodeIterator(n,NodeFilter.SHOW_TEXT,function(){return NodeFilter.FILTER_ACCEPT},!1);o=i.nextNode();){var a=r+o.textContent.length;if(e.offset<=a){var s=e.offset-r;return{node:o,offset:s>=0?s:0}}r=a}return null}function ze(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window,n=e.anchor,r=e.focus,o=e.isBackward,i=e.isCollapsed,a=Ye(n,t),s=i?a:Ye(r,t);if(!a||!s)return null;var l=t.document.createRange(),u=o?s:a,c=o?a:s;return l.setStart(u.node,u.offset),l.setEnd(c.node,c.offset),l}var We="data-slate-zero-width",Ke="["+We+"]",$e="data-offset-key",Qe="["+$e+"]",Xe="[data-key]",Je="[data-slate-void]";function Ze(e,t,n){var r=function(e,t){if(1==e.nodeType&&e.childNodes.length){var n=t==e.childNodes.length,r=n?"backward":"forward",o=n?t-1:t;for(e=et(e,o,r);1==e.nodeType&&e.childNodes.length;){var i=n?e.childNodes.length-1:0;e=et(e,i,r)}t=n?e.textContent.length:0}return{node:e,offset:t}}(e,t),o=r.node,i=r.offset,a=g()(e),s=o.parentNode,l=s.closest(Qe),u=void 0,c=void 0;if(l){var f=a.document.createRange(),d=l.closest(Xe);f.setStart(d,0),f.setEnd(o,i),c=d,u=f.toString().length}else{var p=s.closest(Je);if(!p)return null;if(!(l=p.querySelector(Qe)))return null;u=(c=l).textContent.length}u==c.textContent.length&&s.hasAttribute(We)&&u--;var m=l.getAttribute($e);if(!m)return null;var h=Ne.parse(m).key;return n.document.hasDescendant(h)?n.document.createPoint({key:h,offset:u}):null}function et(e,t,n){for(var r=e.childNodes,o=r[t],i=t,a=!1,s=!1;(8==o.nodeType||1==o.nodeType&&0==o.childNodes.length||1==o.nodeType&&"false"==o.getAttribute("contenteditable"))&&(!a||!s);)i>=r.length?(a=!0,i=t-1,n="backward"):i<0?(s=!0,i=t+1,n="forward"):(o=r[i],"forward"==n&&i++,"backward"==n&&i--);return o||null}function tt(e,t){var n=e.anchorNode||e.startContainer;if(!n)return null;var r=g()(n);(e instanceof r.Range||r.StaticRange&&e instanceof r.StaticRange)&&(e={anchorNode:e.startContainer,anchorOffset:e.startOffset,focusNode:e.endContainer,focusOffset:e.endOffset});var o=e,i=o.anchorNode,a=o.anchorOffset,s=o.focusNode,l=o.focusOffset,u=o.isCollapsed,c=Ze(i,a,t),f=u?c:Ze(s,l,t);if(!c||!f)return null;if(K||$){var d=Ye(c),p=Ye(f);e={anchorNode:d.node,anchorOffset:d.offset,focusNode:p.node,focusOffset:p.offset}}return t.document.createRange({anchor:c,focus:f})}var nt=["auto","overlay","scroll"],rt=Q&&!!window.navigator.userAgent.match(/os 11_/i);function ot(e){if(!rt&&e.anchorNode){var t=g()(e.anchorNode),n=function(e,t){for(var n=e.parentNode,r=void 0;!r&&n.parentNode;){var o=t.getComputedStyle(n).overflowY;if(nt.includes(o)){r=n;break}n=n.parentNode}return r||t.document.body}(e.anchorNode,t),r=n==t.document.body||n==t.document.documentElement,o=ee()(e),i=e.getRangeAt(0).cloneRange();i.collapse(o);var a=i.getBoundingClientRect();W&&i.collapsed&&0==a.top&&0==a.height&&(0==i.startOffset?i.setEnd(i.endContainer,1):i.setStart(i.startContainer,i.startOffset-1),0==(a=i.getBoundingClientRect()).top&&0==a.height&&i.getClientRects().length&&(a=i.getClientRects()[0]));var s=void 0,l=void 0,u=void 0,c=void 0,f=0,d=0,p=0,m=0,h=0,_=0,v=0,y=0;if(r){s=t.innerWidth,l=t.innerHeight,u=t.pageYOffset,c=t.pageXOffset}else{var b=n.offsetWidth,E=n.offsetHeight,C=n.scrollTop,S=n.scrollLeft,D=t.getComputedStyle(n),w=D.borderTopWidth,T=D.borderBottomWidth,x=D.borderLeftWidth,R=D.borderRightWidth,k=D.paddingTop,N=D.paddingBottom,I=D.paddingLeft,O=D.paddingRight,A=n.getBoundingClientRect();s=b,l=E,f=A.top+parseInt(w,10),d=A.left+parseInt(x,10),p=parseInt(w,10)+parseInt(T,10),m=parseInt(x,10)+parseInt(R,10),h=parseInt(k,10),_=parseInt(N,10),v=parseInt(I,10),y=parseInt(O,10),u=C,c=S}var M=a.top+u-f,P=a.left+c-d,L=c,F=u;P<c?L=P-v:P+a.width+m>c+s&&(L=P+m+y-s),M<u?F=M-h:M+a.height+p>u+l&&(F=M+p+_+a.height-l),r?t.scrollTo(L,F):(n.scrollTop=F,n.scrollLeft=L)}}function it(e){var t=window.document;if(t&&t.body.createTextRange){var n=t.body.createTextRange();n.collapse(),n.select()}else e.removeAllRanges()}var at=/Permission denied to access property "nodeType"/,st=o()("slate:content"),lt=function(e){function t(){var e,n,r;be(this,t);for(var o=arguments.length,i=Array(o),s=0;s<o;s++)i[s]=arguments[s];return n=r=we(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(i))),r.tmp={isUpdatingSelection:!1},r.handlers=ye.reduce(function(e,t){return e[t]=function(e){return r.onEvent(t,e)},e},{}),r.updateSelection=function(){var e=r.props.editor.value.selection,t=e.isBackward,n=g()(r.element),o=n.getSelection();if(o){var i=o.rangeCount,a=o.anchorNode;if(i||!e.isBlurred){if(e.isBlurred){if(!r.isInEditor(a))return;return it(o),r.element.blur(),void st("updateSelection",{selection:e,native:o})}if(!e.isUnset){var s=!!i&&o.getRangeAt(0),l=ze(e,n);if(l){var u=l.startContainer,c=l.startOffset,f=l.endContainer,d=l.endOffset;s&&(u==s.startContainer&&c==s.startOffset&&f==s.endContainer&&d==s.endOffset||u==s.endContainer&&c==s.endOffset&&f==s.startContainer&&d==s.startOffset)||(r.tmp.isUpdatingSelection=!0,it(o),o.setBaseAndExtent?t?o.setBaseAndExtent(l.endContainer,l.endOffset,l.startContainer,l.startOffset):o.setBaseAndExtent(l.startContainer,l.startOffset,l.endContainer,l.endOffset):o.addRange(l),ot(o),setTimeout(function(){z&&r.element&&r.element.focus(),r.tmp.isUpdatingSelection=!1}),st("updateSelection",{selection:e,native:o}))}else Object(h.a)(!1,"Unable to find a native DOM range from the current selection.")}}}},r.ref=function(e){r.element=e},r.isInEditor=function(e){var t=r.element,n=void 0;try{if(8===e.nodeType)return!1;n=3===e.nodeType?e.parentNode:e}catch(e){if(z&&at.test(e.message))return!1;throw e}return(n.isContentEditable||n.closest("[data-slate-void]"))&&(n===t||n.closest("[data-slate-editor]")===t)},r.onNativeSelectionChange=ne()(function(e){r.props.readOnly||g()(e.target).document.activeElement===r.element&&r.props.onSelect(e)},100),r.renderNode=function(e,t,n){var o=r.props,i=o.editor,s=o.readOnly,l=i.value,u=l.document,c=l.selection.isFocused;return a.a.createElement(qe,{block:null,editor:i,decorations:n,isSelected:t,isFocused:c&&t,key:e.key,node:e,parent:u,readOnly:s})},we(r,n)}return De(t,e),Ee(t,[{key:"componentDidMount",value:function(){g()(this.element).document.addEventListener("selectionchange",this.onNativeSelectionChange),J&&this.element.addEventListener("beforeinput",this.handlers.onBeforeInput),this.updateSelection()}},{key:"componentWillUnmount",value:function(){var e=g()(this.element);e&&e.document.removeEventListener("selectionchange",this.onNativeSelectionChange),J&&this.element.removeEventListener("beforeinput",this.handlers.onBeforeInput)}},{key:"componentDidUpdate",value:function(){this.updateSelection()}},{key:"onEvent",value:function(e,t){if(st("onEvent",e),!this.tmp.isUpdatingSelection||"onSelect"!=e&&"onBlur"!=e&&"onFocus"!=e){if("onSelect"==e){var n=this.props.editor.value,r=n.selection,o=tt(g()(t.target).getSelection(),n);if(o&&o.equals(r.toRange()))return void this.updateSelection()}if("onDragEnd"==e||"onDragEnter"==e||"onDragExit"==e||"onDragLeave"==e||"onDragOver"==e||"onDragStart"==e||"onDrop"==e)if(t.target.closest("[data-slate-editor]")!==this.element)return;("onBeforeInput"!=e&&"onBlur"!=e&&"onCompositionEnd"!=e&&"onCompositionStart"!=e&&"onCopy"!=e&&"onCut"!=e&&"onFocus"!=e&&"onInput"!=e&&"onKeyDown"!=e&&"onKeyUp"!=e&&"onPaste"!=e&&"onSelect"!=e||this.isInEditor(t.target))&&this.props[e](t)}}},{key:"render",value:function(){var e=this,t=this.props,n=this.handlers,r=t.className,o=t.readOnly,i=t.editor,s=t.tabIndex,l=t.role,u=t.tagName,c=t.spellCheck,f=i.value,d=i.stack,p=u,m=f.document,h=f.selection,_=f.decorations,g=m.getSelectionIndexes(h),v=Be(m,m.getDecorations(d).concat(_)),y=m.nodes.toArray().map(function(t,n){var r=!!g&&g.start<=n&&n<g.end;return e.renderNode(t,r,v[n])}),b=Se({outline:"none",whiteSpace:"pre-wrap",wordWrap:"break-word"},o?{}:{WebkitUserModify:"read-write-plaintext-only"},t.style);return st("render",{props:t}),a.a.createElement(p,Se({},n,{"data-slate-editor":!0,ref:this.ref,"data-key":m.key,contentEditable:!o||null,suppressContentEditableWarning:!0,className:r,autoCorrect:t.autoCorrect?"on":"off",spellCheck:c,style:b,role:o?null:l||"textbox",tabIndex:s,"data-gramm":!1}),y)}}]),t}(a.a.Component);lt.propTypes={autoCorrect:l.a.bool.isRequired,className:l.a.string,editor:l.a.object.isRequired,readOnly:l.a.bool.isRequired,role:l.a.string,spellCheck:l.a.bool.isRequired,style:l.a.object,tabIndex:l.a.number,tagName:l.a.string},lt.defaultProps={style:{},tagName:"div"},ye.forEach(function(e){lt.propTypes[e]=l.a.func.isRequired});var ut={FRAGMENT:"application/x-slate-fragment",HTML:"text/html",NODE:"application/x-slate-node",RICH:"text/rtf",TEXT:"text/plain"},ct=ut.FRAGMENT,ft=ut.HTML,dt=ut.TEXT;function pt(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.fragment,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},o=g()(e.target),i=o.getSelection(),a=t.schema,s=t.selection,l=s.start,c=s.end,f=t.document.getClosestVoid(l.key,a),d=t.document.getClosestVoid(c.key,a);if(!i.isCollapsed||f){var p=ae.serializeNode(n),m=i.getRangeAt(0),h=m.cloneContents(),_=h.childNodes[0];if(h.childNodes.forEach(function(e){e.textContent&&""!==e.textContent.trim()&&(_=e)}),d){var v=m.cloneRange(),y=He(d,o);v.setEndAfter(y),h=v.cloneContents()}if(f&&(_=h.childNodes[0].childNodes[1].firstChild),[].slice.call(h.querySelectorAll(Ke)).forEach(function(e){var t="n"===e.getAttribute(We);e.textContent=t?"\n":""}),3==_.nodeType){var b=o.document.createElement("span");b.style.whiteSpace="pre",b.appendChild(_),h.appendChild(b),_=b}_.setAttribute("data-slate-fragment",p);var E=u.Value.create({document:n}),C=se.default.serialize(E),S=o.document.createElement("div");S.appendChild(h),e.clipboardData&&e.clipboardData.setData&&!K&&(e.preventDefault(),e.clipboardData.setData(dt,C),e.clipboardData.setData(ct,p),e.clipboardData.setData(ft,S.innerHTML),r());var D=e.target.closest("[data-slate-editor]");S.setAttribute("contenteditable",!0),S.style.position="absolute",S.style.left="-9999px",D.appendChild(S),i.selectAllChildren(S),o.requestAnimationFrame(function(){D.removeChild(S),it(i),i.addRange(m),r()})}}function mt(e,t){var n=e.closest("[data-key]");if(!n)return null;var r=n.getAttribute("data-key");return r&&t.document.getNode(r)||null}function ht(e,t){e.nativeEvent&&(e=e.nativeEvent);var n=e,r=n.x,o=n.y,i=n.target;if(null==r||null==o)return null;var a=t.document,s=t.schema,l=mt(i,t);if(!l)return null;if(s.isVoid(l)){var u=i.getBoundingClientRect(),c="inline"==l.object?r-u.left<u.left+u.width-r:o-u.top<u.top+u.height-o,f=l.getFirstText(),d=a.createRange();if(c){var p=a.getPreviousText(f.key);if(p)return d.moveToEndOfNode(p)}var m=a.getNextText(f.key);return m?d.moveToStartOfNode(m):null}var h=g()(i),_=void 0;if(h.document.caretRangeFromPoint)_=h.document.caretRangeFromPoint(r,o);else if(h.document.caretPositionFromPoint){var v=h.document.caretPositionFromPoint(r,o);(_=h.document.createRange()).setStart(v.offsetNode,v.offset),_.setEnd(v.offsetNode,v.offset)}else if(h.document.body.createTextRange){_=h.document.body.createTextRange();try{_.moveToPoint(r,o)}catch(e){return null}}var y=tt(_,t);return y||null}var _t=ut.FRAGMENT,gt=ut.HTML,vt=ut.NODE,yt=ut.RICH,bt=ut.TEXT,Et=/ data-slate-fragment="([^\s"]+)"/;function Ct(e){!K&&e.nativeEvent&&(e=e.nativeEvent);var t=e.dataTransfer||e.clipboardData,n=St(t,_t),r=St(t,vt),o=St(t,gt),i=St(t,yt),a=St(t,bt),s=void 0;if(!n&&o&&~o.indexOf(' data-slate-fragment="')){var l=Et.exec(o),u=Te(l,2),c=(u[0],u[1]);c&&(n=c)}if(a){var f=function(e){var t="SLATE-DATA-EMBED::";if(e.substring(0,t.length)!=t)return{TEXT:e};try{return JSON.parse(e.substring(t.length))}catch(e){throw new Error("Unable to parse custom Slate drag event data.")}}(a);f[_t]&&(n=f[_t]),f[vt]&&(r=f[vt]),f[bt]&&(a=f[bt])}n&&(n=ae.deserializeNode(n)),r&&(r=ae.deserializeNode(r));try{t.items&&t.items.length?s=Array.from(t.items).map(function(e){return"file"==e.kind?e.getAsFile():null}).filter(function(e){return e}):t.files&&t.files.length&&(s=Array.from(t.files))}catch(e){t.files&&t.files.length&&(s=Array.from(t.files))}var d={files:s,fragment:n,html:o,node:r,rich:i,text:a};return d.type=function(e){return e.fragment?"fragment":e.node?"node":e.rich&&e.html?"html":e.rich&&e.text?"text":e.files&&e.files.length?"files":e.html?"html":e.text?"text":"unknown"}(d),d}function St(e,t){return e.types&&e.types.length?-1!==Array.from(e.types).indexOf(t)&&e.getData(t)||null:t==bt&&e.getData("Text")||null}var Dt=ut.TEXT;function wt(e,t,n){var r=ut[t.toUpperCase()];if(!r)throw new Error('Cannot set unknown transfer type "'+r+'".');e.nativeEvent&&(e=e.nativeEvent);var o=e.dataTransfer||e.clipboardData;try{o.setData(r,n),o.setData("text",o.getData("text"))}catch(e){var i="SLATE-DATA-EMBED::",a=o.getData(Dt),s={};if(a.substring(0,i.length)===i)try{s=JSON.parse(a.substring(i.length))}catch(e){throw new Error("Failed to parse Slate data from `DataTransfer` object.")}else s[Dt]=a;s[r]=n;var l=""+i+JSON.stringify(s);o.setData(Dt,l)}}var Tt=o()("slate:after");function xt(){var e=null;return{onBeforeInput:function(e,t,n){if(Tt("onBeforeInput",{event:e}),e.nativeEvent)return e.preventDefault(),void t.insertText(e.data);var r=e.getTargetRanges(),o=Te(r,1)[0];if(o){e.preventDefault();var i=t.value,a=i.document,s=i.selection,l=i.schema,u=tt(o,i);switch(e.inputType){case"deleteByDrag":case"deleteByCut":case"deleteContent":case"deleteContentBackward":case"deleteContentForward":return void t.deleteAtRange(u);case"deleteWordBackward":return void t.deleteWordBackwardAtRange(u);case"deleteWordForward":return void t.deleteWordForwardAtRange(u);case"deleteSoftLineBackward":case"deleteHardLineBackward":return void t.deleteLineBackwardAtRange(u);case"deleteSoftLineForward":case"deleteHardLineForward":return void t.deleteLineForwardAtRange(u);case"insertLineBreak":case"insertParagraph":return void(a.hasVoidParent(s.start.path,l)?t.moveToStartOfNextText():t.splitBlockAtRange(u));case"insertFromYank":case"insertReplacementText":case"insertText":var c=null==e.data?e.dataTransfer.getData("text/plain"):e.data;if(null==c)return;return t.insertTextAtRange(u,c,s.marks),void(s.marks&&i.document!=t.value.document&&t.select({marks:null}))}}},onBlur:function(e,t,n){Tt("onBlur",{event:e}),t.blur()},onClick:function(e,t,n){if(n.props.readOnly)return!0;var r=t.value,o=r.document,i=r.schema,a=mt(e.target,r);if(a){var s=o.getAncestors(a.key);a&&(i.isVoid(a)||s.some(function(e){return i.isVoid(e)}))&&t.focus().moveToEndOfNode(a),Tt("onClick",{event:e})}},onCopy:function(e,t,n){Tt("onCopy",{event:e}),pt(e,t.value)},onCut:function(e,t,n){Tt("onCut",{event:e}),pt(e,t.value,t.value.fragment,function(){var e=t.value,r=e.endBlock,o=e.endInline,i=e.selection,a=e.schema,s=i.isCollapsed,l=r&&a.isVoid(r)&&s,u=o&&a.isVoid(o)&&s;l?n.change(function(e){return e.removeNodeByKey(r.key)}):u?n.change(function(e){return e.removeNodeByKey(o.key)}):n.change(function(e){return e.delete()})})},onDragEnd:function(t,n,r){Tt("onDragEnd",{event:t}),e=null},onDragOver:function(e,t,n){Tt("onDragOver",{event:e})},onDragStart:function(t,n,r){Tt("onDragStart",{event:t}),e=!0;var o=n.value,i=o.document,a=o.schema,s=mt(t.target,o),l=i.getAncestors(s.key),u=s&&(a.isVoid(s)||l.some(function(e){return a.isVoid(e)})),c=o.blocks.some(function(e){return e.key===s.key});u&&!c&&n.moveToRangeOfNode(s);var f=n.value.fragment;wt(t,"fragment",ae.serializeNode(f))},onDrop:function(t,n,r){Tt("onDrop",{event:t});var o=n.value,i=o.document,a=o.selection,s=o.schema,l=g()(t.target),u=ht(t,o);if(u){var c=Ct(t),f=c.type,d=c.fragment,p=c.text;if(n.focus(),e&&a.end.key==u.end.key&&a.end.offset<u.end.offset&&(u=u.moveForward(a.start.key==a.end.key?0-a.end.offset+a.start.offset:0-a.end.offset)),e&&n.delete(),n.select(u),"text"==f||"html"==f){var m=u.anchor,h=i.hasVoidParent(m.key,s);if(h){for(var _=i.getNode(m.key);h&&(_=i.getNextText(_.key));)h=i.hasVoidParent(_.key,s);_&&n.moveToStartOfNode(_)}p&&p.split("\n").forEach(function(e,t){t>0&&n.splitBlock(),n.insertText(e)})}"fragment"==f&&n.insertFragment(d);var v=He(i.getNode(u.focus.key),l);v&&v.dispatchEvent(new MouseEvent("mouseup",{view:l,bubbles:!0,cancelable:!0}))}},onInput:function(e,t,n){Tt("onInput",{event:e});var r=g()(e.target),o=t.value,i=r.getSelection().anchorNode,a=Ze(i,0,o);if(a){var s=o.document,l=o.selection,u=s.getDescendant(a.key),c=s.getClosestBlock(u.key),f=u.getLeaves(),d=c.getLastText(),p=f.last(),m=0,h=0,_=f.find(function(e){if(m=h,(h+=e.text.length)>a.offset)return!0})||p,v=_.text,y=i.textContent,b=u==d,E=_==p,C=y.charAt(y.length-1);if(b&&E&&"\n"==C&&(y=y.slice(0,-1)),y!=v){var S=y.length-v.length,D=l.moveToEnd().moveForward(S),w=l.moveAnchorTo(a.key,m).moveFocusTo(a.key,h);w=s.resolveRange(w),t.insertTextAtRange(w,y,_.marks).select(D)}}},onKeyDown:function(e,t,n){Tt("onKeyDown",{event:e});var r=t.value,o=r.document,i=r.selection,a=r.schema,s=o.hasVoidParent(i.start.path,a);if(he.isSplitBlock(e)&&!Q)return s?t.moveToStartOfNextText():t.splitBlock();if(he.isDeleteBackward(e)&&!Q)return t.deleteCharBackward();if(he.isDeleteForward(e)&&!Q)return t.deleteCharForward();if(he.isDeleteLineBackward(e))return t.deleteLineBackward();if(he.isDeleteLineForward(e))return t.deleteLineForward();if(he.isDeleteWordBackward(e))return t.deleteWordBackward();if(he.isDeleteWordForward(e))return t.deleteWordForward();if(he.isRedo(e))return t.redo();if(he.isUndo(e))return t.undo();if(he.isMoveLineBackward(e))return e.preventDefault(),t.moveToStartOfBlock();if(he.isMoveLineForward(e))return e.preventDefault(),t.moveToEndOfBlock();if(he.isExtendLineBackward(e))return e.preventDefault(),t.moveFocusToStartOfBlock();if(he.isExtendLineForward(e))return e.preventDefault(),t.moveFocusToEndOfBlock();if(he.isMoveBackward(e)){var l=r.previousText,u=r.startText,c=l&&o.hasVoidParent(l.key,a);if(s||c||""==u.text)return e.preventDefault(),t.moveBackward()}if(he.isMoveForward(e)){var f=r.nextText,d=r.startText,p=f&&o.hasVoidParent(f.key,a);if(s||p||""==d.text)return e.preventDefault(),t.moveForward()}if(he.isExtendBackward(e)){var m=r.previousText,h=r.startText,_=m&&o.hasVoidParent(m.key,a);if(s||_||""==h.text)return e.preventDefault(),t.moveFocusBackward()}if(he.isExtendForward(e)){var g=r.nextText,v=r.startText,y=g&&o.hasVoidParent(g.key,a);if(s||y||""==v.text)return e.preventDefault(),t.moveFocusForward()}},onPaste:function(e,t,n){Tt("onPaste",{event:e});var r=Ct(e),o=r.type,i=r.fragment,a=r.text;if("fragment"==o&&t.insertFragment(i),"text"==o||"html"==o){if(!a)return;var s=t.value,l=s.document,u=s.selection,c=s.startBlock;if(s.schema.isVoid(c))return;var f=c,d=l.getInsertMarksAtRange(u),p=se.default.deserialize(a,{defaultBlock:f,defaultMarks:d}).document;t.insertFragment(p)}},onSelect:function(e,t,n){Tt("onSelect",{event:e});var r=g()(e.target),o=t.value,i=o.document,a=o.schema,s=r.getSelection();if(s.rangeCount){var l=tt(s,o);if(l){var u=l,c=u.anchor,f=u.focus,d=i.getNode(c.key),p=i.getNode(f.key),m=i.getClosestInline(c.key),h=i.getClosestInline(f.key),_=i.getClosestBlock(f.key),v=i.getClosestBlock(c.key);if(v&&!a.isVoid(v)&&0==c.offset&&_&&a.isVoid(_)&&0!=f.offset&&(l=l.setFocus(f.setOffset(0))),m&&!a.isVoid(m)&&c.offset==d.text.length){var y=i.getClosestBlock(c.key).getNextText(c.key);y&&(l=l.moveAnchorTo(y.key,0))}if(h&&!a.isVoid(h)&&f.offset==p.text.length){var b=i.getClosestBlock(f.key).getNextText(f.key);b&&(l=l.moveFocusTo(b.key,0))}var E=i.createSelection(l);E=(E=E.setIsFocused(!0)).set("marks",o.selection.marks),t.select(E)}}else t.blur()},renderEditor:function(e,t){var n=t.handlers;return a.a.createElement(lt,Se({},n,{autoCorrect:e.autoCorrect,className:e.className,editor:t,readOnly:e.readOnly,role:e.role,spellCheck:e.spellCheck,style:e.style,tabIndex:e.tabIndex,tagName:e.tagName}))},renderNode:function(e){var t=e.attributes,n=e.children,r=e.node;if("block"==r.object||"inline"==r.object){var o="block"==r.object?"div":"span";return a.a.createElement(o,Se({},t,{style:{position:"relative"}}),n)}},renderPlaceholder:function(e){var t=e.editor,n=e.node;if(t.props.placeholder&&!t.state.isComposing&&"block"==n.object&&u.Text.isTextList(n.nodes)&&""==n.text&&!(t.value.document.getBlocks().size>1))return a.a.createElement("span",{contentEditable:!1,style:{pointerEvents:"none",display:"inline-block",width:"0",maxWidth:"100%",whiteSpace:"nowrap",opacity:"0.333"}},t.props.placeholder)}}}var Rt=o()("slate:before");function kt(){var e=null,t=0,n=!1,r=!1,o=!1;return{onBeforeInput:function(e,t,n){return!!n.props.readOnly||!(!e.nativeEvent||!J)||void Rt("onBeforeInput",{event:e})},onBlur:function(t,n,o){if(r)return!0;if(o.props.readOnly)return!0;var i=n.value,a=i.schema,s=t.relatedTarget,l=t.target,u=g()(l);if(e==u.document.activeElement)return!0;if(s){var c=Object(_e.findDOMNode)(o);if(s==c)return!0;if(s.hasAttribute("data-slate-spacer"))return!0;var f=mt(s,i);if(c.contains(s)&&f&&!a.isVoid(f))return!0}Rt("onBlur",{event:t})},onChange:function(e,t){e.value.schema!=t.schema&&e.withoutSaving(function(){e.setValue({schema:t.schema}).normalize()}),Rt("onChange")},onCompositionEnd:function(e,r,o){var i=t;window.requestAnimationFrame(function(){t>i||(n=!1,o.state.isComposing&&o.setState({isComposing:!1}))}),Rt("onCompositionEnd",{event:e})},onCompositionStart:function(e,r,o){n=!0,t++,o.state.isComposing||o.setState({isComposing:!0}),Rt("onCompositionStart",{event:e})},onCopy:function(e,t,n){var o=g()(e.target);r=!0,o.requestAnimationFrame(function(){return r=!1}),Rt("onCopy",{event:e})},onCut:function(e,t,n){if(n.props.readOnly)return!0;var o=g()(e.target);r=!0,o.requestAnimationFrame(function(){return r=!1}),Rt("onCut",{event:e})},onDragEnd:function(e,t,n){o=!1,Rt("onDragEnd",{event:e})},onDragEnter:function(e,t,n){Rt("onDragEnter",{event:e})},onDragExit:function(e,t,n){Rt("onDragExit",{event:e})},onDragLeave:function(e,t,n){Rt("onDragLeave",{event:e})},onDragOver:function(e,t,n){var r=n.value.schema,i=mt(e.target,n.value);r.isVoid(i)&&e.preventDefault(),K&&e.preventDefault(),o||(o=!0,K||(e.nativeEvent.dataTransfer.dropEffect="move")),Rt("onDragOver",{event:e})},onDragStart:function(e,t,n){o=!0,Rt("onDragStart",{event:e})},onDrop:function(e,t,n){if(n.props.readOnly)return!0;e.preventDefault(),Rt("onDrop",{event:e})},onFocus:function(t,n,o){if(r)return!0;if(o.props.readOnly)return!0;var i=Object(_e.findDOMNode)(o),a=g()(t.target);if(e=a.document.activeElement,z&&t.target!=i)return i.focus(),!0;Rt("onFocus",{event:t})},onInput:function(e,t,r){return!!n||!!t.value.selection.isBlurred||void Rt("onInput",{event:e})},onKeyDown:function(e,t,r){return!!r.props.readOnly||(n?(he.isCompose(e)&&e.preventDefault(),!0):(!Q&&(he.isBold(e)||he.isDeleteBackward(e)||he.isDeleteForward(e)||he.isDeleteLineBackward(e)||he.isDeleteLineForward(e)||he.isDeleteWordBackward(e)||he.isDeleteWordForward(e)||he.isItalic(e)||he.isRedo(e)||he.isSplitBlock(e)||he.isTransposeCharacter(e)||he.isUndo(e))&&e.preventDefault(),void Rt("onKeyDown",{event:e})))},onPaste:function(e,t,n){if(n.props.readOnly)return!0;e.preventDefault(),Rt("onPaste",{event:e})},onSelect:function(t,o,i){if(r)return!0;if(n)return!0;if(i.props.readOnly)return!0;var a=g()(t.target);e=a.document.activeElement,Rt("onSelect",{event:t})}}}var Nt=o()("slate:editor"),It=function(e){function t(){var e,n,r;be(this,t);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return n=r=we(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(i))),Ot.call(r),we(r,n)}return De(t,e),Ee(t,[{key:"componentDidMount",value:function(){this.tmp.updates++;var e=this.props.autoFocus,t=this.tmp.change;e&&(t?t.focus():this.focus()),t&&this.onChange(t)}},{key:"componentDidUpdate",value:function(e){this.tmp.updates++;var t=this.tmp,n=t.change,r=t.resolves,o=t.updates;Object(h.a)(r<5||r!==o,"A Slate <Editor> component is re-resolving `props.plugins` or `props.schema` on each update, which leads to poor performance. This is often due to passing in a new `schema` or `plugins` prop with each render by declaring them inline in your render function. Do not do this!"),n&&this.onChange(n)}},{key:"render",value:function(){Nt("render",this);var e=Se({},this.props);return this.stack.render("renderEditor",e,this)}},{key:"plugins",get:function(){return this.resolvePlugins(this.props.plugins,this.props.schema)}},{key:"schema",get:function(){return this.resolveSchema(this.plugins)}},{key:"stack",get:function(){return this.resolveStack(this.plugins)}},{key:"value",get:function(){return this.plugins===this.tmp.plugins&&this.props.value===this.tmp.value?this.tmp.value:this.resolveValue(this.plugins,this.props.value)}}]),t}(a.a.Component);It.propTypes={autoCorrect:l.a.bool,autoFocus:l.a.bool,className:l.a.string,onChange:l.a.func,placeholder:l.a.any,plugins:l.a.array,readOnly:l.a.bool,role:l.a.string,schema:l.a.object,spellCheck:l.a.bool,style:l.a.object,tabIndex:l.a.number,value:f.value.isRequired},It.defaultProps={autoFocus:!1,autoCorrect:!0,onChange:function(){},plugins:[],readOnly:!1,schema:{},spellCheck:!0};var Ot=function(){var e=this;this.state={},this.tmp={change:null,isChanging:!1,operationsSize:null,plugins:null,resolves:0,updates:0,value:null},this.handlers=ye.reduce(function(t,n){return t[n]=function(t){return e.onEvent(n,t)},t},{}),this.change=function(){if(e.tmp.isChanging)Object(h.a)(!1,"The `editor.change` method was called from within an existing `editor.change` callback. This is not allowed, and often due to calling `editor.change` directly from a plugin's event handler which is unnecessary.");else{var t=e.value.change();try{e.tmp.isChanging=!0,t.call.apply(t,arguments)}catch(e){throw e}finally{e.tmp.isChanging=!1}e.onChange(t)}},this.blur=function(){e.change(function(e){return e.blur()})},this.focus=function(){e.change(function(e){return e.focus()})},this.onChange=function(t){0!==t.operations.size&&(Nt("onChange",{change:t}),t=e.resolveChange(e.plugins,t,t.operations.size),e.tmp.value=t.value,e.tmp.plugins=e.plugins,delete e.tmp.change,delete e.tmp.operationsSize,e.props.onChange(t))},this.onEvent=function(t,n){e.change(function(r){e.stack.run(t,n,r,e)})},this.resolveChange=ve(function(t,n,r){return e.resolveStack(t).run("onChange",n,e),n}),this.resolvePlugins=ve(function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};Nt("resolvePlugins",{plugins:t,schema:n}),e.tmp.resolves++;var r=kt(),o=xt(),i={schema:n},a=function(t){return"onChange"==t?"continue":"schema"==t?"continue":void(i[t]=function(){var n;return e.props[t]&&(n=e.props)[t].apply(n,arguments)})},s=!0,l=!1,u=void 0;try{for(var c,f=Re[Symbol.iterator]();!(s=(c=f.next()).done);s=!0)a(c.value)}catch(e){l=!0,u=e}finally{try{!s&&f.return&&f.return()}finally{if(l)throw u}}return[r,i].concat(xe(t),[o])}),this.resolveSchema=ve(function(e){return Nt("resolveSchema",{plugins:e}),u.Schema.create({plugins:e})}),this.resolveStack=ve(function(e){return Nt("resolveStack",{plugins:e}),u.Stack.create({plugins:e})}),this.resolveValue=ve(function(t,n){Nt("resolveValue",{plugins:t,value:n});var r=n.change();return r=e.resolveChange(t,r,r.operations.size),e.tmp.change=r,e.tmp.operationsSize=r.operations.size,r.value})},At=!0,Mt=!1,Pt=void 0;try{for(var Lt,Ft=ye[Symbol.iterator]();!(At=(Lt=Ft.next()).done);At=!0){var Ut=Lt.value;It.propTypes[Ut]=l.a.func}}catch(e){Mt=!0,Pt=e}finally{try{!At&&Ft.return&&Ft.return()}finally{if(Mt)throw Pt}}var jt={Editor:It,cloneFragment:pt,findDOMNode:He,findDOMRange:ze,findNode:mt,findRange:tt,getEventRange:ht,getEventTransfer:Ct,setEventTransfer:wt,AfterPlugin:xt,BeforePlugin:kt};t.default=jt},function(e,t){},function(e,t){},function(e,t){},function(e,t){}]); -//# sourceMappingURL=bundle.js.map \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/indexeddb-worker.js b/riot/bundles/f5c70ee9a294f6e4590e/indexeddb-worker.js deleted file mode 100644 index 62ff55b..0000000 --- a/riot/bundles/f5c70ee9a294f6e4590e/indexeddb-worker.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1877)}({111:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},112:function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},113:function(t,e,n){n(363);for(var r=n(34),o=n(60),i=n(77),a=n(38)("toStringTag"),s="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),c=0;c<s.length;c++){var u=s[c],l=r[u],f=l&&l.prototype;f&&!f[a]&&o(f,a,u),i[u]=i.Array}},116:function(t,e,n){var r=n(35);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},117:function(t,e,n){var r=n(52),o=n(271),i=n(121),a=n(119)("IE_PROTO"),s=function(){},c=function(){var t,e=n(136)("iframe"),r=i.length;for(e.style.display="none",n(272).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),c=t.F;r--;)delete c.prototype[i[r]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(s.prototype=r(t),n=new s,s.prototype=null,n[a]=t):n=c(),void 0===e?n:o(n,e)}},118:function(t,e,n){var r=n(111),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},119:function(t,e,n){var r=n(120)("keys"),o=n(96);t.exports=function(t){return r[t]||(r[t]=o(t))}},120:function(t,e,n){var r=n(34),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});t.exports=function(t){return o[t]||(o[t]={})}},121:function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},122:function(t,e,n){var r=n(46).f,o=n(61),i=n(38)("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},124:function(t,e){e.f={}.propertyIsEnumerable},135:function(t,e){t.exports=!0},136:function(t,e,n){var r=n(35),o=n(34).document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},137:function(t,e,n){var r=n(96)("meta"),o=n(35),i=n(61),a=n(46).f,s=0,c=Object.isExtensible||function(){return!0},u=!n(58)(function(){return c(Object.preventExtensions({}))}),l=function(t){a(t,r,{value:{i:"O"+ ++s,w:{}}})},f=t.exports={KEY:r,NEED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,r)){if(!c(t))return"F";if(!e)return"E";l(t)}return t[r].i},getWeak:function(t,e){if(!i(t,r)){if(!c(t))return!0;if(!e)return!1;l(t)}return t[r].w},onFreeze:function(t){return u&&f.NEED&&c(t)&&!i(t,r)&&l(t),t}}},14:function(t,e,n){t.exports={default:n(219),__esModule:!0}},149:function(t,e,n){"use strict";e.__esModule=!0;var r=i(n(393)),o=i(n(20));function i(t){return t&&t.__esModule?t:{default:t}}e.default=function(){return function(t,e){if(Array.isArray(t))return t;if((0,r.default)(Object(t)))return function(t,e){var n=[],r=!0,i=!1,a=void 0;try{for(var s,c=(0,o.default)(t);!(r=(s=c.next()).done)&&(n.push(s.value),!e||n.length!==e);r=!0);}catch(t){i=!0,a=t}finally{try{!r&&c.return&&c.return()}finally{if(i)throw a}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},15:function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},161:function(t,e,n){t.exports=!n(44)&&!n(58)(function(){return 7!=Object.defineProperty(n(136)("div"),"a",{get:function(){return 7}}).a})},162:function(t,e,n){var r=n(61),o=n(59),i=n(213)(!1),a=n(119)("IE_PROTO");t.exports=function(t,e){var n,s=o(t),c=0,u=[];for(n in s)n!=a&&r(s,n)&&u.push(n);for(;e.length>c;)r(s,n=e[c++])&&(~i(u,n)||u.push(n));return u}},163:function(t,e,n){var r=n(95);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},164:function(t,e,n){var r=n(95),o=n(38)("toStringTag"),i="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),o))?n:i?r(e):"Object"==(a=r(e))&&"function"==typeof e.callee?"Arguments":a}},166:function(t,e,n){e.f=n(38)},167:function(t,e,n){var r=n(34),o=n(18),i=n(135),a=n(166),s=n(46).f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||s(e,t,{value:a.f(t)})}},18:function(t,e){var n=t.exports={version:"2.5.1"};"number"==typeof __e&&(__e=n)},185:function(t,e,n){"use strict";var r=n(135),o=n(26),i=n(212),a=n(60),s=n(61),c=n(77),u=n(354),l=n(122),f=n(215),p=n(38)("iterator"),h=!([].keys&&"next"in[].keys()),d=function(){return this};t.exports=function(t,e,n,_,v,y,m){u(n,e,_);var g,b,w,x=function(t){if(!h&&t in C)return C[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},j=e+" Iterator",k="values"==v,E=!1,C=t.prototype,O=C[p]||C["@@iterator"]||v&&C[v],S=O||x(v),T=v?k?x("entries"):S:void 0,F="Array"==e&&C.entries||O;if(F&&(w=f(F.call(new t)))!==Object.prototype&&w.next&&(l(w,j,!0),r||s(w,p)||a(w,p,d)),k&&O&&"values"!==O.name&&(E=!0,S=function(){return O.call(this)}),r&&!m||!h&&!E&&C[p]||a(C,p,S),c[e]=S,c[j]=d,v)if(g={values:k?S:x("values"),keys:y?S:x("keys"),entries:T},m)for(b in g)b in C||i(C,b,g[b]);else o(o.P+o.F*(h||E),e,g);return g}},186:function(t,e,n){var r=n(164),o=n(38)("iterator"),i=n(77);t.exports=n(18).getIteratorMethod=function(t){if(void 0!=t)return t[o]||t["@@iterator"]||i[r(t)]}},187:function(t,e,n){(function(t){var r=void 0!==t&&t||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},e.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(218),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(15))},1877:function(t,e,n){"use strict";var r=new(n(1878).IndexedDBStoreWorker)(postMessage);onmessage=r.onMessage},1878:function(t,e,n){"use strict";t.exports.IndexedDBStoreWorker=n(1879)},1879:function(t,e,n){"use strict";var r=c(n(51)),o=c(n(4)),i=c(n(5)),a=c(n(9)),s=c(n(396));function c(t){return t&&t.__esModule?t:{default:t}}var u=function(){function t(e){(0,o.default)(this,t),this.backend=null,this.postMessage=e,this.onMessage=this.onMessage.bind(this)}return(0,i.default)(t,[{key:"onMessage",value:function(t){var e,n,o=this,i=t.data,c=void 0;switch(i.command){case"_setupWorker":this.backend=new s.default(indexedDB,i.args[0]),c=a.default.resolve();break;case"connect":c=this.backend.connect();break;case"isNewlyCreated":c=this.backend.isNewlyCreated();break;case"clearDatabase":c=this.backend.clearDatabase().then(function(t){return{}});break;case"getSavedSync":c=this.backend.getSavedSync(!1);break;case"setSyncData":c=(e=this.backend).setSyncData.apply(e,(0,r.default)(i.args));break;case"syncToDatabase":c=(n=this.backend).syncToDatabase.apply(n,(0,r.default)(i.args)).then(function(){return{}});break;case"getUserPresenceEvents":c=this.backend.getUserPresenceEvents();break;case"getNextBatchToken":c=this.backend.getNextBatchToken();break;case"getOutOfBandMembers":c=this.backend.getOutOfBandMembers(i.args[0]);break;case"clearOutOfBandMembers":c=this.backend.clearOutOfBandMembers(i.args[0]);break;case"setOutOfBandMembers":c=this.backend.setOutOfBandMembers(i.args[0],i.args[1]);break;case"getClientOptions":c=this.backend.getClientOptions();break;case"storeClientOptions":c=this.backend.storeClientOptions(i.args[0])}void 0!==c?c.done(function(t){o.postMessage.call(null,{command:"cmd_success",seq:i.seq,result:t})},function(t){console.error("Error running command: "+i.command),console.error(t),o.postMessage.call(null,{command:"cmd_fail",seq:i.seq,error:{message:t.message,name:t.name}})}):this.postMessage({command:"cmd_fail",seq:i.seq,error:"Unrecognised command"})}}]),t}();t.exports=u},189:function(t,e){e.f=Object.getOwnPropertySymbols},19:function(t,e,n){t.exports=n(216)},190:function(t,e){},20:function(t,e,n){t.exports={default:n(391),__esModule:!0}},211:function(t,e,n){t.exports={default:n(352),__esModule:!0}},212:function(t,e,n){t.exports=n(60)},213:function(t,e,n){var r=n(59),o=n(118),i=n(214);t.exports=function(t){return function(e,n,a){var s,c=r(e),u=o(c.length),l=i(a,u);if(t&&n!=n){for(;u>l;)if((s=c[l++])!=s)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}}},214:function(t,e,n){var r=n(111),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=r(t))<0?o(t+e,0):i(t,e)}},215:function(t,e,n){var r=n(61),o=n(87),i=n(119)("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},216:function(t,e,n){var r=function(){return this}()||Function("return this")(),o=r.regeneratorRuntime&&Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime")>=0,i=o&&r.regeneratorRuntime;if(r.regeneratorRuntime=void 0,t.exports=n(217),o)r.regeneratorRuntime=i;else try{delete r.regeneratorRuntime}catch(t){r.regeneratorRuntime=void 0}},217:function(t,e){!function(e){"use strict";var n,r=Object.prototype,o=r.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag",u="object"==typeof t,l=e.regeneratorRuntime;if(l)u&&(t.exports=l);else{(l=e.regeneratorRuntime=u?t.exports:{}).wrap=b;var f="suspendedStart",p="suspendedYield",h="executing",d="completed",_={},v={};v[a]=function(){return this};var y=Object.getPrototypeOf,m=y&&y(y(P([])));m&&m!==r&&o.call(m,a)&&(v=m);var g=k.prototype=x.prototype=Object.create(v);j.prototype=g.constructor=k,k.constructor=j,k[c]=j.displayName="GeneratorFunction",l.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===j||"GeneratorFunction"===(e.displayName||e.name))},l.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,k):(t.__proto__=k,c in t||(t[c]="GeneratorFunction")),t.prototype=Object.create(g),t},l.awrap=function(t){return{__await:t}},E(C.prototype),C.prototype[s]=function(){return this},l.AsyncIterator=C,l.async=function(t,e,n,r){var o=new C(b(t,e,n,r));return l.isGeneratorFunction(e)?o:o.next().then(function(t){return t.done?t.value:o.next()})},E(g),g[c]="Generator",g[a]=function(){return this},g.toString=function(){return"[object Generator]"},l.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var r=e.pop();if(r in t)return n.value=r,n.done=!1,n}return n.done=!0,n}},l.values=P,F.prototype={constructor:F,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(T),!t)for(var e in this)"t"===e.charAt(0)&&o.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(r,o){return s.type="throw",s.arg=t,e.next=r,o&&(e.method="next",e.arg=n),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=o.call(a,"catchLoc"),u=o.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var i=r;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,_):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),_},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),T(n),_}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;T(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:P(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=n),_}}}function b(t,e,n,r){var o=e&&e.prototype instanceof x?e:x,i=Object.create(o.prototype),a=new F(r||[]);return i._invoke=function(t,e,n){var r=f;return function(o,i){if(r===h)throw new Error("Generator is already running");if(r===d){if("throw"===o)throw i;return R()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var s=O(a,n);if(s){if(s===_)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===f)throw r=d,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=h;var c=w(t,e,n);if("normal"===c.type){if(r=n.done?d:p,c.arg===_)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r=d,n.method="throw",n.arg=c.arg)}}}(t,n,a),i}function w(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}function x(){}function j(){}function k(){}function E(t){["next","throw","return"].forEach(function(e){t[e]=function(t){return this._invoke(e,t)}})}function C(t){var e;this._invoke=function(n,r){function i(){return new Promise(function(e,i){!function e(n,r,i,a){var s=w(t[n],t,r);if("throw"!==s.type){var c=s.arg,u=c.value;return u&&"object"==typeof u&&o.call(u,"__await")?Promise.resolve(u.__await).then(function(t){e("next",t,i,a)},function(t){e("throw",t,i,a)}):Promise.resolve(u).then(function(t){c.value=t,i(c)},a)}a(s.arg)}(n,r,e,i)})}return e=e?e.then(i,i):i()}}function O(t,e){var r=t.iterator[e.method];if(r===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=n,O(t,e),"throw"===e.method))return _;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return _}var o=w(r,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,_;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,_):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,_)}function S(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function T(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function F(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(S,this),this.reset(!0)}function P(t){if(t){var e=t[a];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,i=function e(){for(;++r<t.length;)if(o.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=n,e.done=!0,e};return i.next=i}}return{next:R}}function R(){return{value:n,done:!0}}}(function(){return this}()||Function("return this")())},218:function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var r,o=1,i={},a=!1,s=t.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(t);c=c&&c.setTimeout?c:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick(function(){l(t)})}:function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?function(){var e="setImmediate$"+Math.random()+"$",n=function(n){n.source===t&&"string"==typeof n.data&&0===n.data.indexOf(e)&&l(+n.data.slice(e.length))};t.addEventListener?t.addEventListener("message",n,!1):t.attachEvent("onmessage",n),r=function(n){t.postMessage(e+n,"*")}}():t.MessageChannel?function(){var t=new MessageChannel;t.port1.onmessage=function(t){l(t.data)},r=function(e){t.port2.postMessage(e)}}():s&&"onreadystatechange"in s.createElement("script")?function(){var t=s.documentElement;r=function(e){var n=s.createElement("script");n.onreadystatechange=function(){l(e),n.onreadystatechange=null,t.removeChild(n),n=null},t.appendChild(n)}}():r=function(t){setTimeout(l,0,t)},c.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var a={callback:t,args:e};return i[o]=a,r(o),o++},c.clearImmediate=u}function u(t){delete i[t]}function l(t){if(a)setTimeout(l,0,t);else{var e=i[t];if(e){a=!0;try{!function(t){var e=t.callback,r=t.args;switch(r.length){case 0:e();break;case 1:e(r[0]);break;case 2:e(r[0],r[1]);break;case 3:e(r[0],r[1],r[2]);break;default:e.apply(n,r)}}(e)}finally{u(t),a=!1}}}}}("undefined"==typeof self?void 0===t?this:t:self)}).call(this,n(15),n(54))},219:function(t,e,n){n(220),t.exports=n(18).Object.keys},220:function(t,e,n){var r=n(87),o=n(78);n(68)("keys",function(){return function(t){return o(r(t))}})},223:function(t,e,n){t.exports={default:n(359),__esModule:!0}},224:function(t,e,n){var r=n(124),o=n(76),i=n(59),a=n(116),s=n(61),c=n(161),u=Object.getOwnPropertyDescriptor;e.f=n(44)?u:function(t,e){if(t=i(t),e=a(e,!0),c)try{return u(t,e)}catch(t){}if(s(t,e))return o(!r.f.call(t,e),t[e])}},225:function(t,e,n){var r=n(162),o=n(121).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},26:function(t,e,n){var r=n(34),o=n(18),i=n(66),a=n(60),s=function(t,e,n){var c,u,l,f=t&s.F,p=t&s.G,h=t&s.S,d=t&s.P,_=t&s.B,v=t&s.W,y=p?o:o[e]||(o[e]={}),m=y.prototype,g=p?r:h?r[e]:(r[e]||{}).prototype;for(c in p&&(n=e),n)(u=!f&&g&&void 0!==g[c])&&c in y||(l=u?g[c]:n[c],y[c]=p&&"function"!=typeof g[c]?n[c]:_&&u?i(l,r):v&&g[c]==l?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(l):d&&"function"==typeof l?i(Function.call,l):l,d&&((y.virtual||(y.virtual={}))[c]=l,t&s.R&&m&&!m[c]&&a(m,c,l)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},271:function(t,e,n){var r=n(46),o=n(52),i=n(78);t.exports=n(44)?Object.defineProperties:function(t,e){o(t);for(var n,a=i(e),s=a.length,c=0;s>c;)r.f(t,n=a[c++],e[n]);return t}},272:function(t,e,n){var r=n(34).document;t.exports=r&&r.documentElement},273:function(t,e,n){var r=n(52);t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(e){var i=t.return;throw void 0!==i&&r(i.call(t)),e}}},274:function(t,e,n){var r=n(77),o=n(38)("iterator"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||i[o]===t)}},275:function(t,e,n){var r=n(38)("iterator"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i=[7],a=i[r]();a.next=function(){return{done:n=!0}},i[r]=function(){return a},t(i)}catch(t){}return n}},276:function(t,e,n){var r=n(59),o=n(225).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?function(t){try{return o(t)}catch(t){return a.slice()}}(t):o(r(t))}},277:function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},278:function(t,e,n){var r=n(95);t.exports=Array.isArray||function(t){return"Array"==r(t)}},285:function(t,e,n){"use strict";var r=c(n(67)),o=c(n(14)),i=c(n(4)),a=c(n(5)),s=c(n(29));function c(t){return t&&t.__esModule?t:{default:t}}var u=function(){function t(e){(0,i.default)(this,t),(e=e||{}).maxTimelineEntries=e.maxTimelineEntries||50,this.opts=e,this.accountData={},this.inviteRooms={},this.joinRooms={},this.nextBatch=null,this.groups={invite:{},join:{},leave:{}}}return(0,a.default)(t,[{key:"accumulate",value:function(t){this._accumulateRooms(t),this._accumulateGroups(t),this._accumulateAccountData(t),this.nextBatch=t.next_batch}},{key:"_accumulateAccountData",value:function(t){var e=this;t.account_data&&t.account_data.events&&t.account_data.events.forEach(function(t){e.accountData[t.type]=t})}},{key:"_accumulateRooms",value:function(t){var e=this;t.rooms&&(t.rooms.invite&&(0,o.default)(t.rooms.invite).forEach(function(n){e._accumulateRoom(n,"invite",t.rooms.invite[n])}),t.rooms.join&&(0,o.default)(t.rooms.join).forEach(function(n){e._accumulateRoom(n,"join",t.rooms.join[n])}),t.rooms.leave&&(0,o.default)(t.rooms.leave).forEach(function(n){e._accumulateRoom(n,"leave",t.rooms.leave[n])}))}},{key:"_accumulateRoom",value:function(t,e,n){switch(e){case"invite":this._accumulateInviteState(t,n);break;case"join":this.inviteRooms[t]&&delete this.inviteRooms[t],this._accumulateJoinState(t,n);break;case"leave":this.inviteRooms[t]?delete this.inviteRooms[t]:delete this.joinRooms[t];break;default:console.error("Unknown cateogory: ",e)}}},{key:"_accumulateInviteState",value:function(t,e){if(e.invite_state&&e.invite_state.events)if(this.inviteRooms[t]){var n=this.inviteRooms[t];e.invite_state.events.forEach(function(t){for(var e=!1,r=0;r<n.invite_state.events.length;r++){var o=n.invite_state.events[r];o.type===t.type&&o.state_key==t.state_key&&(n.invite_state.events[r]=t,e=!0)}e||n.invite_state.events.push(t)})}else this.inviteRooms[t]={invite_state:e.invite_state}}},{key:"_accumulateJoinState",value:function(t,e){this.joinRooms[t]||(this.joinRooms[t]={_currentState:(0,r.default)(null),_timeline:[],_accountData:(0,r.default)(null),_unreadNotifications:{},_summary:{},_readReceipts:{}});var n=this.joinRooms[t];if(e.account_data&&e.account_data.events&&e.account_data.events.forEach(function(t){n._accountData[t.type]=t}),e.unread_notifications&&(n._unreadNotifications=e.unread_notifications),e.summary){var i=n._summary,a=e.summary;i["m.heroes"]=a["m.heroes"]||i["m.heroes"],i["m.joined_member_count"]=a["m.joined_member_count"]||i["m.joined_member_count"],i["m.invited_member_count"]=a["m.invited_member_count"]||i["m.invited_member_count"]}if(e.ephemeral&&e.ephemeral.events&&e.ephemeral.events.forEach(function(t){"m.receipt"===t.type&&t.content&&(0,o.default)(t.content).forEach(function(e){t.content[e]["m.read"]&&(0,o.default)(t.content[e]["m.read"]).forEach(function(r){n._readReceipts[r]={data:t.content[e]["m.read"][r],eventId:e}})})}),e.timeline&&e.timeline.limited&&(n._timeline=[]),e.state&&e.state.events&&e.state.events.forEach(function(t){l(n._currentState,t)}),e.timeline&&e.timeline.events&&e.timeline.events.forEach(function(t,r){l(n._currentState,t),n._timeline.push({event:t,token:0===r?e.timeline.prev_batch:null})}),n._timeline.length>this.opts.maxTimelineEntries)for(var s=n._timeline.length-this.opts.maxTimelineEntries;s<n._timeline.length;s++)if(n._timeline[s].token){n._timeline=n._timeline.slice(s,n._timeline.length);break}}},{key:"_accumulateGroups",value:function(t){var e=this;t.groups&&(t.groups.invite&&(0,o.default)(t.groups.invite).forEach(function(n){e._accumulateGroup(n,"invite",t.groups.invite[n])}),t.groups.join&&(0,o.default)(t.groups.join).forEach(function(n){e._accumulateGroup(n,"join",t.groups.join[n])}),t.groups.leave&&(0,o.default)(t.groups.leave).forEach(function(n){e._accumulateGroup(n,"leave",t.groups.leave[n])}))}},{key:"_accumulateGroup",value:function(t,e,n){for(var r=["invite","join","leave"],o=0;o<r.length;o++){var i=r[o];delete this.groups[i][t]}this.groups[e][t]=n}},{key:"getJSON",value:function(){var t=this,e={join:{},invite:{},leave:{}};(0,o.default)(this.inviteRooms).forEach(function(n){e.invite[n]=t.inviteRooms[n]}),(0,o.default)(this.joinRooms).forEach(function(n){var i=t.joinRooms[n],a={ephemeral:{events:[]},account_data:{events:[]},state:{events:[]},timeline:{events:[],prev_batch:null},unread_notifications:i._unreadNotifications,summary:i._summary};(0,o.default)(i._accountData).forEach(function(t){a.account_data.events.push(i._accountData[t])});var c={type:"m.receipt",room_id:n,content:{}};(0,o.default)(i._readReceipts).forEach(function(t){var e=i._readReceipts[t];c.content[e.eventId]||(c.content[e.eventId]={"m.read":{}}),c.content[e.eventId]["m.read"][t]=e.data}),(0,o.default)(c.content).length>0&&a.ephemeral.events.push(c),i._timeline.forEach(function(t){if(!a.timeline.prev_batch){if(!t.token)return;a.timeline.prev_batch=t.token}a.timeline.events.push(t.event)});for(var u=(0,r.default)(null),f=a.timeline.events.length-1;f>=0;f--){var p=a.timeline.events[f];if(null!==p.state_key&&void 0!==p.state_key){var h=s.default.deepCopy(p);h.unsigned&&(h.unsigned.prev_content&&(h.content=h.unsigned.prev_content),h.unsigned.prev_sender&&(h.sender=h.unsigned.prev_sender)),l(u,h)}}(0,o.default)(i._currentState).forEach(function(t){(0,o.default)(i._currentState[t]).forEach(function(e){var n=i._currentState[t][e];u[t]&&u[t][e]&&(n=u[t][e]),a.state.events.push(n)})}),e.join[n]=a});var n=[];return(0,o.default)(this.accountData).forEach(function(e){n.push(t.accountData[e])}),{nextBatch:this.nextBatch,roomsData:e,groupsData:this.groups,accountData:n}}},{key:"getNextBatchToken",value:function(){return this.nextBatch}}]),t}();function l(t,e){null!==e.state_key&&void 0!==e.state_key&&e.type&&(t[e.type]||(t[e.type]=(0,r.default)(null)),t[e.type][e.state_key]=e)}t.exports=u},29:function(t,e,n){"use strict";var r=a(n(67)),o=a(n(64)),i=a(n(31));function a(t){return t&&t.__esModule?t:{default:t}}t.exports.encodeParams=function(t){var e="";for(var n in t)t.hasOwnProperty(n)&&(e+="&"+encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e.substring(1)},t.exports.encodeUri=function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t=t.replace(n,encodeURIComponent(e[n])));return t},t.exports.map=function(t,e){for(var n=new Array(t.length),r=0;r<t.length;r++)n[r]=e(t[r]);return n},t.exports.filter=function(t,e){for(var n=[],r=0;r<t.length;r++)e(t[r],r,t)&&n.push(t[r]);return n},t.exports.keys=function(t){var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push(n);return e},t.exports.values=function(t){var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push(t[n]);return e},t.exports.forEach=function(t,e){for(var n=0;n<t.length;n++)e(t[n],n)},t.exports.findElement=function(t,e,n){var r=void 0;if(n){for(r=t.length-1;r>=0;r--)if(e(t[r],r,t))return t[r]}else for(r=0;r<t.length;r++)if(e(t[r],r,t))return t[r]},t.exports.removeElement=function(t,e,n){var r=void 0,o=void 0;if(n){for(r=t.length-1;r>=0;r--)if(e(t[r],r,t))return o=t[r],t.splice(r,1),o}else for(r=0;r<t.length;r++)if(e(t[r],r,t))return o=t[r],t.splice(r,1),o;return!1},t.exports.isFunction=function(t){return"[object Function]"==Object.prototype.toString.call(t)},t.exports.isArray=function(t){return Array.isArray?Array.isArray(t):Boolean(t&&t.constructor===Array)},t.exports.checkObjectHasKeys=function(t,e){for(var n=0;n<e.length;n++)if(!t.hasOwnProperty(e[n]))throw new Error("Missing required key: "+e[n])},t.exports.checkObjectHasNoAdditionalKeys=function(t,e){for(var n in t)if(t.hasOwnProperty(n)&&-1===e.indexOf(n))throw new Error("Unknown key: "+n)},t.exports.deepCopy=function(t){return JSON.parse((0,i.default)(t))};var s=t.exports.deepCompare=function(t,e){if(t===e)return!0;if((void 0===t?"undefined":(0,o.default)(t))!==(void 0===e?"undefined":(0,o.default)(e)))return!1;if("number"==typeof t&&isNaN(t)&&isNaN(e))return!0;if(null===t||null===e)return t===e;if(!(t instanceof Object))return!1;if(t.constructor!==e.constructor||t.prototype!==e.prototype)return!1;if(t instanceof RegExp||t instanceof Date)return t.toString()===e.toString();if(t instanceof Array){if(t.length!==e.length)return!1;for(var n=0;n<t.length;n++)if(!s(t[n],e[n]))return!1}else{var r=void 0;for(r in e)if(e.hasOwnProperty(r)!==t.hasOwnProperty(r))return!1;for(r in e){if(e.hasOwnProperty(r)!==t.hasOwnProperty(r))return!1;if(!s(t[r],e[r]))return!1}}return!0};t.exports.extend=function(){for(var t=arguments[0]||{},e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)t[r]=n[r]}return t},t.exports.runPolyfills=function(){Array.prototype.filter||(Array.prototype.filter=function(t){if(void 0===this||null===this)throw new TypeError;var e=Object(this),n=e.length>>>0;if("function"!=typeof t)throw new TypeError;for(var r=[],o=arguments.length>=2?arguments[1]:void 0,i=0;i<n;i++)if(i in e){var a=e[i];t.call(o,a,i,e)&&r.push(a)}return r}),Array.prototype.map||(Array.prototype.map=function(t,e){var n=void 0,r=void 0;if(null===this||void 0===this)throw new TypeError(" this is null or not defined");var o=Object(this),i=o.length>>>0;if("function"!=typeof t)throw new TypeError(t+" is not a function");arguments.length>1&&(n=e);var a=new Array(i);for(r=0;r<i;){var s,c;r in o&&(s=o[r],c=t.call(n,s,r,o),a[r]=c),r++}return a}),Array.prototype.forEach||(Array.prototype.forEach=function(t,e){var n=void 0,r=void 0;if(null===this||void 0===this)throw new TypeError(" this is null or not defined");var o=Object(this),i=o.length>>>0;if("function"!=typeof t)throw new TypeError(t+" is not a function");for(arguments.length>1&&(n=e),r=0;r<i;){var a;r in o&&(a=o[r],t.call(n,a,r,o)),r++}})},t.exports.inherits=function(t,e){"function"!=typeof r.default&&(Object.create=function(){function t(){}var e=Object.prototype.hasOwnProperty;return function(n){if("object"!=(void 0===n?"undefined":(0,o.default)(n)))throw new TypeError("Object prototype may only be an Object or null");t.prototype=n;var r=new t;if(t.prototype=null,arguments.length>1){var i=Object(arguments[1]);for(var a in i)e.call(i,a)&&(r[a]=i[a])}return r}}()),t.super_=e,t.prototype=(0,r.default)(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})},t.exports.isNumber=function(t){return"number"==typeof t&&isFinite(t)},t.exports.removeHiddenChars=function(t){return t.normalize("NFD").replace(c,"")};var c=/[\u200B-\u200D\u0300-\u036f\uFEFF\s]/g},31:function(t,e,n){t.exports={default:n(390),__esModule:!0}},34:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},35:function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},352:function(t,e,n){n(86),n(355),t.exports=n(18).Array.from},353:function(t,e,n){var r=n(111),o=n(112);t.exports=function(t){return function(e,n){var i,a,s=String(o(e)),c=r(n),u=s.length;return c<0||c>=u?t?"":void 0:(i=s.charCodeAt(c))<55296||i>56319||c+1===u||(a=s.charCodeAt(c+1))<56320||a>57343?t?s.charAt(c):i:t?s.slice(c,c+2):a-56320+(i-55296<<10)+65536}}},354:function(t,e,n){"use strict";var r=n(117),o=n(76),i=n(122),a={};n(60)(a,n(38)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+" Iterator")}},355:function(t,e,n){"use strict";var r=n(66),o=n(26),i=n(87),a=n(273),s=n(274),c=n(118),u=n(356),l=n(186);o(o.S+o.F*!n(275)(function(t){Array.from(t)}),"Array",{from:function(t){var e,n,o,f,p=i(t),h="function"==typeof this?this:Array,d=arguments.length,_=d>1?arguments[1]:void 0,v=void 0!==_,y=0,m=l(p);if(v&&(_=r(_,d>2?arguments[2]:void 0,2)),void 0==m||h==Array&&s(m))for(n=new h(e=c(p.length));e>y;y++)u(n,y,v?_(p[y],y):p[y]);else for(f=m.call(p),n=new h;!(o=f.next()).done;y++)u(n,y,v?a(f,_,[o.value,y],!0):o.value);return n.length=y,n}})},356:function(t,e,n){"use strict";var r=n(46),o=n(76);t.exports=function(t,e,n){e in t?r.f(t,e,o(0,n)):t[e]=n}},357:function(t,e,n){n(358);var r=n(18).Object;t.exports=function(t,e){return r.create(t,e)}},358:function(t,e,n){var r=n(26);r(r.S,"Object",{create:n(117)})},359:function(t,e,n){n(360);var r=n(18).Object;t.exports=function(t,e,n){return r.defineProperty(t,e,n)}},360:function(t,e,n){var r=n(26);r(r.S+r.F*!n(44),"Object",{defineProperty:n(46).f})},361:function(t,e,n){t.exports={default:n(362),__esModule:!0}},362:function(t,e,n){n(86),n(113),t.exports=n(166).f("iterator")},363:function(t,e,n){"use strict";var r=n(364),o=n(277),i=n(77),a=n(59);t.exports=n(185)(Array,"Array",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},364:function(t,e){t.exports=function(){}},365:function(t,e,n){t.exports={default:n(366),__esModule:!0}},366:function(t,e,n){n(367),n(190),n(369),n(370),t.exports=n(18).Symbol},367:function(t,e,n){"use strict";var r=n(34),o=n(61),i=n(44),a=n(26),s=n(212),c=n(137).KEY,u=n(58),l=n(120),f=n(122),p=n(96),h=n(38),d=n(166),_=n(167),v=n(368),y=n(278),m=n(52),g=n(59),b=n(116),w=n(76),x=n(117),j=n(276),k=n(224),E=n(46),C=n(78),O=k.f,S=E.f,T=j.f,F=r.Symbol,P=r.JSON,R=P&&P.stringify,A=h("_hidden"),D=h("toPrimitive"),L={}.propertyIsEnumerable,I=l("symbol-registry"),M=l("symbols"),N=l("op-symbols"),B=Object.prototype,V="function"==typeof F,U=r.QObject,H=!U||!U.prototype||!U.prototype.findChild,G=i&&u(function(){return 7!=x(S({},"a",{get:function(){return S(this,"a",{value:7}).a}})).a})?function(t,e,n){var r=O(B,e);r&&delete B[e],S(t,e,n),r&&t!==B&&S(B,e,r)}:S,q=function(t){var e=M[t]=x(F.prototype);return e._k=t,e},$=V&&"symbol"==typeof F.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof F},Q=function(t,e,n){return t===B&&Q(N,e,n),m(t),e=b(e,!0),m(n),o(M,e)?(n.enumerable?(o(t,A)&&t[A][e]&&(t[A][e]=!1),n=x(n,{enumerable:w(0,!1)})):(o(t,A)||S(t,A,w(1,{})),t[A][e]=!0),G(t,e,n)):S(t,e,n)},W=function(t,e){m(t);for(var n,r=v(e=g(e)),o=0,i=r.length;i>o;)Q(t,n=r[o++],e[n]);return t},z=function(t){var e=L.call(this,t=b(t,!0));return!(this===B&&o(M,t)&&!o(N,t))&&(!(e||!o(this,t)||!o(M,t)||o(this,A)&&this[A][t])||e)},K=function(t,e){if(t=g(t),e=b(e,!0),t!==B||!o(M,e)||o(N,e)){var n=O(t,e);return!n||!o(M,e)||o(t,A)&&t[A][e]||(n.enumerable=!0),n}},X=function(t){for(var e,n=T(g(t)),r=[],i=0;n.length>i;)o(M,e=n[i++])||e==A||e==c||r.push(e);return r},J=function(t){for(var e,n=t===B,r=T(n?N:g(t)),i=[],a=0;r.length>a;)!o(M,e=r[a++])||n&&!o(B,e)||i.push(M[e]);return i};V||(s((F=function(){if(this instanceof F)throw TypeError("Symbol is not a constructor!");var t=p(arguments.length>0?arguments[0]:void 0),e=function(n){this===B&&e.call(N,n),o(this,A)&&o(this[A],t)&&(this[A][t]=!1),G(this,t,w(1,n))};return i&&H&&G(B,t,{configurable:!0,set:e}),q(t)}).prototype,"toString",function(){return this._k}),k.f=K,E.f=Q,n(225).f=j.f=X,n(124).f=z,n(189).f=J,i&&!n(135)&&s(B,"propertyIsEnumerable",z,!0),d.f=function(t){return q(h(t))}),a(a.G+a.W+a.F*!V,{Symbol:F});for(var Y="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),Z=0;Y.length>Z;)h(Y[Z++]);for(var tt=C(h.store),et=0;tt.length>et;)_(tt[et++]);a(a.S+a.F*!V,"Symbol",{for:function(t){return o(I,t+="")?I[t]:I[t]=F(t)},keyFor:function(t){if(!$(t))throw TypeError(t+" is not a symbol!");for(var e in I)if(I[e]===t)return e},useSetter:function(){H=!0},useSimple:function(){H=!1}}),a(a.S+a.F*!V,"Object",{create:function(t,e){return void 0===e?x(t):W(x(t),e)},defineProperty:Q,defineProperties:W,getOwnPropertyDescriptor:K,getOwnPropertyNames:X,getOwnPropertySymbols:J}),P&&a(a.S+a.F*(!V||u(function(){var t=F();return"[null]"!=R([t])||"{}"!=R({a:t})||"{}"!=R(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!$(t)){for(var e,n,r=[t],o=1;arguments.length>o;)r.push(arguments[o++]);return"function"==typeof(e=r[1])&&(n=e),!n&&y(e)||(e=function(t,e){if(n&&(e=n.call(this,t,e)),!$(e))return e}),r[1]=e,R.apply(P,r)}}}),F.prototype[D]||n(60)(F.prototype,D,F.prototype.valueOf),f(F,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},368:function(t,e,n){var r=n(78),o=n(189),i=n(124);t.exports=function(t){var e=r(t),n=o.f;if(n)for(var a,s=n(t),c=i.f,u=0;s.length>u;)c.call(t,a=s[u++])&&e.push(a);return e}},369:function(t,e,n){n(167)("asyncIterator")},370:function(t,e,n){n(167)("observable")},38:function(t,e,n){var r=n(120)("wks"),o=n(96),i=n(34).Symbol,a="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)("Symbol."+t))}).store=r},390:function(t,e,n){var r=n(18),o=r.JSON||(r.JSON={stringify:JSON.stringify});t.exports=function(t){return o.stringify.apply(o,arguments)}},391:function(t,e,n){n(113),n(86),t.exports=n(392)},392:function(t,e,n){var r=n(52),o=n(186);t.exports=n(18).getIterator=function(t){var e=o(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return r(e.call(t))}},393:function(t,e,n){t.exports={default:n(394),__esModule:!0}},394:function(t,e,n){n(113),n(86),t.exports=n(395)},395:function(t,e,n){var r=n(164),o=n(38)("iterator"),i=n(77);t.exports=n(18).isIterable=function(t){var e=Object(t);return void 0!==e[o]||"@@iterator"in e||i.hasOwnProperty(r(e))}},396:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=l(n(20)),o=l(n(19)),i=n(9),a=l(i),s=l(n(149)),c=l(n(285)),u=l(n(29));function l(t){return t&&t.__esModule?t:{default:t}}function f(t,e,n){var r=t.openCursor(e);return new a.default(function(t,e){var o=[];r.onerror=function(t){e(new Error("Query failed: "+t.target.errorCode))},r.onsuccess=function(e){var r=e.target.result;r?(o.push(n(r)),r.continue()):t(o)}})}function p(t){return new a.default(function(e,n){t.oncomplete=function(t){e(t)},t.onerror=function(t){n(t.target.error)}})}function h(t){return new a.default(function(e,n){t.onsuccess=function(t){e(t)},t.onerror=function(t){n(t.target.error)}})}function d(t){return new a.default(function(e,n){t.onsuccess=function(){return e(t)},t.onerror=function(t){return n(t)}})}function _(t){return h(t).then(function(t){return t.target.result})}var v=function(t,e){this.indexedDB=t,this._dbName="matrix-js-sdk:"+(e||"default"),this.db=null,this._disconnected=!0,this._syncAccumulator=new c.default,this._isNewlyCreated=!1};v.prototype={connect:function(){var t=this;if(!this._disconnected)return console.log("LocalIndexedDBStoreBackend.connect: already connected or connecting"),a.default.resolve();this._disconnected=!1,console.log("LocalIndexedDBStoreBackend.connect: connecting...");var e=this.indexedDB.open(this._dbName,3);return e.onupgradeneeded=function(e){var n=e.target.result,r=e.oldVersion;console.log("LocalIndexedDBStoreBackend.connect: upgrading from "+r),r<1&&(t._isNewlyCreated=!0,function(t){t.createObjectStore("users",{keyPath:["userId"]}),t.createObjectStore("accountData",{keyPath:["type"]}),t.createObjectStore("sync",{keyPath:["clobber"]})}(n)),r<2&&function(t){t.createObjectStore("oob_membership_events",{keyPath:["room_id","state_key"]}).createIndex("room","room_id")}(n),r<3&&function(t){t.createObjectStore("client_options",{keyPath:["clobber"]})}(n)},e.onblocked=function(){console.log("can't yet open LocalIndexedDBStoreBackend because it is open elsewhere")},console.log("LocalIndexedDBStoreBackend.connect: awaiting connection..."),h(e).then(function(e){return console.log("LocalIndexedDBStoreBackend.connect: connected"),t.db=e.target.result,t.db.onversionchange=function(){t.db.close()},t._init()})},isNewlyCreated:function(){return a.default.resolve(this._isNewlyCreated)},_init:function(){var t=this;return a.default.all([this._loadAccountData(),this._loadSyncData()]).then(function(e){var n=(0,s.default)(e,2),r=n[0],o=n[1];console.log("LocalIndexedDBStoreBackend: loaded initial data"),t._syncAccumulator.accumulate({next_batch:o.nextBatch,rooms:o.roomsData,groups:o.groupsData,account_data:{events:r}})})},getOutOfBandMembers:function(t){var e=this;return new a.default(function(n,r){var o=e.db.transaction(["oob_membership_events"],"readonly").objectStore("oob_membership_events").index("room"),i=IDBKeyRange.only(t),a=o.openCursor(i),s=[],c=!1;a.onsuccess=function(t){var e=t.target.result;if(!e)return s.length||c?n(s):n(null);var r=e.value;r.oob_written?c=!0:s.push(r),e.continue()},a.onerror=function(t){r(t)}}).then(function(e){return console.log("LL: got "+(e&&e.length)+" membershipEvents from storage for room "+t+" ..."),e})},setOutOfBandMembers:function(){var t=(0,i.coroutine)(o.default.mark(function t(e,n){var r,a,s;return o.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return console.log("LL: backend about to store "+n.length+" members for "+e),r=this.db.transaction(["oob_membership_events"],"readwrite"),a=r.objectStore("oob_membership_events"),n.forEach(function(t){a.put(t)}),s={room_id:e,oob_written:!0,state_key:0},a.put(s),t.next=8,(0,i.resolve)(p(r));case 8:console.log("LL: backend done storing for "+e+"!");case 9:case"end":return t.stop()}},t,this)}));return function(e,n){return t.apply(this,arguments)}}(),clearOutOfBandMembers:function(){var t=(0,i.coroutine)(o.default.mark(function t(e){var n,r,c,u,l,f,p,h,v,y,m,g,b;return o.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n=this.db.transaction(["oob_membership_events"],"readonly"),r=n.objectStore("oob_membership_events"),c=r.index("room"),u=IDBKeyRange.only(e),l=_(c.openKeyCursor(u,"next")).then(function(t){return t&&t.primaryKey[1]}),f=_(c.openKeyCursor(u,"prev")).then(function(t){return t&&t.primaryKey[1]}),t.next=8,(0,i.resolve)(a.default.all([l,f]));case 8:return p=t.sent,h=(0,s.default)(p,2),v=h[0],y=h[1],m=this.db.transaction(["oob_membership_events"],"readwrite"),g=m.objectStore("oob_membership_events"),b=IDBKeyRange.bound([e,v],[e,y]),console.log("LL: Deleting all users + marker in storage for room "+e+", with key range:",[e,v],[e,y]),t.next=18,(0,i.resolve)(d(g.delete(b)));case 18:case"end":return t.stop()}},t,this)}));return function(e){return t.apply(this,arguments)}}(),clearDatabase:function(){var t=this;return new a.default(function(e,n){console.log("Removing indexeddb instance: "+t._dbName);var r=t.indexedDB.deleteDatabase(t._dbName);r.onblocked=function(){console.log("can't yet delete indexeddb "+t._dbName+" because it is open elsewhere")},r.onerror=function(t){console.warn("unable to delete js-sdk store indexeddb: "+t.target.error),e()},r.onsuccess=function(){console.log("Removed indexeddb instance: "+t._dbName),e()}})},getSavedSync:function(t){void 0===t&&(t=!0);var e=this._syncAccumulator.getJSON();return e.nextBatch?t?a.default.resolve(u.default.deepCopy(e)):a.default.resolve(e):a.default.resolve(null)},getNextBatchToken:function(){return a.default.resolve(this._syncAccumulator.getNextBatchToken())},setSyncData:function(t){var e=this;return a.default.resolve().then(function(){e._syncAccumulator.accumulate(t)})},syncToDatabase:function(t){var e=this._syncAccumulator.getJSON();return a.default.all([this._persistUserPresenceEvents(t),this._persistAccountData(e.accountData),this._persistSyncData(e.nextBatch,e.roomsData,e.groupsData)])},_persistSyncData:function(t,e,n){var r=this;return console.log("Persisting sync data up to ",t),a.default.try(function(){var o=r.db.transaction(["sync"],"readwrite");return o.objectStore("sync").put({clobber:"-",nextBatch:t,roomsData:e,groupsData:n}),p(o)})},_persistAccountData:function(t){var e=this;return a.default.try(function(){for(var n=e.db.transaction(["accountData"],"readwrite"),r=n.objectStore("accountData"),o=0;o<t.length;o++)r.put(t[o]);return p(n)})},_persistUserPresenceEvents:function(t){var e=this;return a.default.try(function(){var n=e.db.transaction(["users"],"readwrite"),o=n.objectStore("users"),i=!0,a=!1,s=void 0;try{for(var c,u=(0,r.default)(t);!(i=(c=u.next()).done);i=!0){var l=c.value;o.put({userId:l[0],event:l[1]})}}catch(t){a=!0,s=t}finally{try{!i&&u.return&&u.return()}finally{if(a)throw s}}return p(n)})},getUserPresenceEvents:function(){var t=this;return a.default.try(function(){return f(t.db.transaction(["users"],"readonly").objectStore("users"),void 0,function(t){return[t.value.userId,t.value.event]})})},_loadAccountData:function(){var t=this;return console.log("LocalIndexedDBStoreBackend: loading account data..."),a.default.try(function(){return f(t.db.transaction(["accountData"],"readonly").objectStore("accountData"),void 0,function(t){return t.value}).then(function(t){return console.log("LocalIndexedDBStoreBackend: loaded account data"),t})})},_loadSyncData:function(){var t=this;return console.log("LocalIndexedDBStoreBackend: loading sync data..."),a.default.try(function(){return f(t.db.transaction(["sync"],"readonly").objectStore("sync"),void 0,function(t){return t.value}).then(function(t){return console.log("LocalIndexedDBStoreBackend: loaded sync data"),t.length>1&&console.warn("loadSyncData: More than 1 sync row found."),t.length>0?t[0]:{}})})},getClientOptions:function(){var t=this;return a.default.resolve().then(function(){return f(t.db.transaction(["client_options"],"readonly").objectStore("client_options"),void 0,function(t){if(t.value&&t.value&&t.value.options)return t.value.options}).then(function(t){return t[0]})})},storeClientOptions:function(){var t=(0,i.coroutine)(o.default.mark(function t(e){var n;return o.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n=this.db.transaction(["client_options"],"readwrite"),n.objectStore("client_options").put({clobber:"-",options:e}),t.next=5,(0,i.resolve)(p(n));case 5:case"end":return t.stop()}},t,this)}));return function(e){return t.apply(this,arguments)}}()},e.default=v},4:function(t,e,n){"use strict";e.__esModule=!0,e.default=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},44:function(t,e,n){t.exports=!n(58)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},46:function(t,e,n){var r=n(52),o=n(161),i=n(116),a=Object.defineProperty;e.f=n(44)?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},5:function(t,e,n){"use strict";e.__esModule=!0;var r=function(t){return t&&t.__esModule?t:{default:t}}(n(223));e.default=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),(0,r.default)(t,o.key,o)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}()},51:function(t,e,n){"use strict";e.__esModule=!0;var r=function(t){return t&&t.__esModule?t:{default:t}}(n(211));e.default=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return(0,r.default)(t)}},52:function(t,e,n){var r=n(35);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},54:function(t,e){var n,r,o=t.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(t){n=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(t){r=a}}();var c,u=[],l=!1,f=-1;function p(){l&&c&&(l=!1,c.length?u=c.concat(u):f=-1,u.length&&h())}function h(){if(!l){var t=s(p);l=!0;for(var e=u.length;e;){for(c=u,u=[];++f<e;)c&&c[f].run();f=-1,e=u.length}c=null,l=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function d(t,e){this.fun=t,this.array=e}function _(){}o.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];u.push(new d(t,e)),1!==u.length||l||s(h)},d.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=_,o.addListener=_,o.once=_,o.off=_,o.removeListener=_,o.removeAllListeners=_,o.emit=_,o.prependListener=_,o.prependOnceListener=_,o.listeners=function(t){return[]},o.binding=function(t){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(t){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},58:function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},59:function(t,e,n){var r=n(163),o=n(112);t.exports=function(t){return r(o(t))}},60:function(t,e,n){var r=n(46),o=n(76);t.exports=n(44)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},61:function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},64:function(t,e,n){"use strict";e.__esModule=!0;var r=a(n(361)),o=a(n(365)),i="function"==typeof o.default&&"symbol"==typeof r.default?function(t){return typeof t}:function(t){return t&&"function"==typeof o.default&&t.constructor===o.default&&t!==o.default.prototype?"symbol":typeof t};function a(t){return t&&t.__esModule?t:{default:t}}e.default="function"==typeof o.default&&"symbol"===i(r.default)?function(t){return void 0===t?"undefined":i(t)}:function(t){return t&&"function"==typeof o.default&&t.constructor===o.default&&t!==o.default.prototype?"symbol":void 0===t?"undefined":i(t)}},66:function(t,e,n){var r=n(94);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},67:function(t,e,n){t.exports={default:n(357),__esModule:!0}},68:function(t,e,n){var r=n(26),o=n(18),i=n(58);t.exports=function(t,e){var n=(o.Object||{})[t]||Object[t],a={};a[t]=e(n),r(r.S+r.F*i(function(){n(1)}),"Object",a)}},76:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},77:function(t,e){t.exports={}},78:function(t,e,n){var r=n(162),o=n(121);t.exports=Object.keys||function(t){return r(t,o)}},86:function(t,e,n){"use strict";var r=n(353)(!0);n(185)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},87:function(t,e,n){var r=n(112);t.exports=function(t){return Object(r(t))}},9:function(t,e,n){(function(e,n,r){t.exports=function(){var t,o,i;return function t(e,n,r){function o(a,s){if(!n[a]){if(!e[a]){var c="function"==typeof _dereq_&&_dereq_;if(!s&&c)return c(a,!0);if(i)return i(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var l=n[a]={exports:{}};e[a][0].call(l.exports,function(t){var n=e[a][1][t];return o(n||t)},l,l.exports,t,e,n,r)}return n[a].exports}for(var i="function"==typeof _dereq_&&_dereq_,a=0;a<r.length;a++)o(r[a]);return o}({1:[function(t,e,n){"use strict";e.exports=function(t){var e=t._SomePromiseArray;function n(t){var n=new e(t),r=n.promise();return n.setHowMany(1),n.setUnwrap(),n.init(),r}t.any=function(t){return n(t)},t.prototype.any=function(){return n(this)}}},{}],2:[function(t,n,r){"use strict";var o;try{throw new Error}catch(t){o=t}var i=t("./schedule"),a=t("./queue"),s=t("./util");function c(){this._customScheduler=!1,this._isTickUsed=!1,this._lateQueue=new a(16),this._normalQueue=new a(16),this._haveDrainedQueues=!1,this._trampolineEnabled=!0;var t=this;this.drainQueues=function(){t._drainQueues()},this._schedule=i}function u(t,e,n){this._lateQueue.push(t,e,n),this._queueTick()}function l(t,e,n){this._normalQueue.push(t,e,n),this._queueTick()}function f(t){this._normalQueue._pushOne(t),this._queueTick()}function p(t){for(;t.length()>0;)h(t)}function h(t){var e=t.shift();if("function"!=typeof e)e._settlePromises();else{var n=t.shift(),r=t.shift();e.call(n,r)}}c.prototype.setScheduler=function(t){var e=this._schedule;return this._schedule=t,this._customScheduler=!0,e},c.prototype.hasCustomScheduler=function(){return this._customScheduler},c.prototype.enableTrampoline=function(){this._trampolineEnabled=!0},c.prototype.disableTrampolineIfNecessary=function(){s.hasDevTools&&(this._trampolineEnabled=!1)},c.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues},c.prototype.fatalError=function(t,n){n?(e.stderr.write("Fatal "+(t instanceof Error?t.stack:t)+"\n"),e.exit(2)):this.throwLater(t)},c.prototype.throwLater=function(t,e){if(1===arguments.length&&(e=t,t=function(){throw e}),"undefined"!=typeof setTimeout)setTimeout(function(){t(e)},0);else try{this._schedule(function(){t(e)})}catch(t){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}},s.hasDevTools?(c.prototype.invokeLater=function(t,e,n){this._trampolineEnabled?u.call(this,t,e,n):this._schedule(function(){setTimeout(function(){t.call(e,n)},100)})},c.prototype.invoke=function(t,e,n){this._trampolineEnabled?l.call(this,t,e,n):this._schedule(function(){t.call(e,n)})},c.prototype.settlePromises=function(t){this._trampolineEnabled?f.call(this,t):this._schedule(function(){t._settlePromises()})}):(c.prototype.invokeLater=u,c.prototype.invoke=l,c.prototype.settlePromises=f),c.prototype._drainQueues=function(){p(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,p(this._lateQueue)},c.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},c.prototype._reset=function(){this._isTickUsed=!1},n.exports=c,n.exports.firstLineError=o},{"./queue":26,"./schedule":29,"./util":36}],3:[function(t,e,n){"use strict";e.exports=function(t,e,n,r){var o=!1,i=function(t,e){this._reject(e)},a=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(i,i,null,this,t)},s=function(t,e){0==(50397184&this._bitField)&&this._resolveCallback(e.target)},c=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(i){o||(o=!0,t.prototype._propagateFrom=r.propagateFromFunction(),t.prototype._boundValue=r.boundValueFunction());var u=n(i),l=new t(e);l._propagateFrom(this,1);var f=this._target();if(l._setBoundTo(u),u instanceof t){var p={promiseRejectionQueued:!1,promise:l,target:f,bindingPromise:u};f._then(e,a,void 0,l,p),u._then(s,c,void 0,l,p),l._setOnCancel(u)}else l._resolveCallback(f);return l},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=2097152|this._bitField,this._boundTo=t):this._bitField=-2097153&this._bitField},t.prototype._isBound=function(){return 2097152==(2097152&this._bitField)},t.bind=function(e,n){return t.resolve(n).bind(e)}}},{}],4:[function(t,e,n){"use strict";var r;"undefined"!=typeof Promise&&(r=Promise);var o=t("./promise")();o.noConflict=function(){try{Promise===o&&(Promise=r)}catch(t){}return o},e.exports=o},{"./promise":22}],5:[function(t,e,n){"use strict";var r=Object.create;if(r){var o=r(null),i=r(null);o[" size"]=i[" size"]=0}e.exports=function(e){var n=t("./util"),r=n.canEvaluate;function o(t){var r=this.pop(),o=function(t,r){var o;if(null!=t&&(o=t[r]),"function"!=typeof o){var i="Object "+n.classString(t)+" has no method '"+n.toString(r)+"'";throw new e.TypeError(i)}return o}(t,r);return o.apply(t,this)}function i(t){return t[this]}function a(t){var e=+this;return e<0&&(e=Math.max(0,e+t.length)),t[e]}n.isIdentifier,e.prototype.call=function(t){var e=[].slice.call(arguments,1);return e.push(t),this._then(o,void 0,void 0,e,void 0)},e.prototype.get=function(t){var e,n="number"==typeof t;if(n)e=a;else if(r){var o=(void 0)(t);e=null!==o?o:i}else e=i;return this._then(e,void 0,void 0,t,void 0)}}},{"./util":36}],6:[function(t,e,n){"use strict";e.exports=function(e,n,r,o){var i=t("./util"),a=i.tryCatch,s=i.errorObj,c=e._async;e.prototype.break=e.prototype.cancel=function(){if(!o.cancellation())return this._warn("cancellation is disabled");for(var t=this,e=t;t._isCancellable();){if(!t._cancelBy(e)){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}var n=t._cancellationParent;if(null==n||!n._isCancellable()){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}t._isFollowing()&&t._followee().cancel(),t._setWillBeCancelled(),e=t,t=n}},e.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},e.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},e.prototype._cancelBy=function(t){return t===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},e.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},e.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),c.invoke(this._cancelPromises,this,void 0))},e.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},e.prototype._unsetOnCancel=function(){this._onCancelField=void 0},e.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},e.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},e.prototype._doInvokeOnCancel=function(t,e){if(i.isArray(t))for(var n=0;n<t.length;++n)this._doInvokeOnCancel(t[n],e);else if(void 0!==t)if("function"==typeof t){if(!e){var r=a(t).call(this._boundValue());r===s&&(this._attachExtraTrace(r.e),c.throwLater(r.e))}}else t._resultCancelled(this)},e.prototype._invokeOnCancel=function(){var t=this._onCancel();this._unsetOnCancel(),c.invoke(this._doInvokeOnCancel,this,t)},e.prototype._invokeInternalOnCancel=function(){this._isCancellable()&&(this._doInvokeOnCancel(this._onCancel(),!0),this._unsetOnCancel())},e.prototype._resultCancelled=function(){this.cancel()}}},{"./util":36}],7:[function(t,e,n){"use strict";e.exports=function(e){var n=t("./util"),r=t("./es5").keys,o=n.tryCatch,i=n.errorObj;return function(t,a,s){return function(c){var u=s._boundValue();t:for(var l=0;l<t.length;++l){var f=t[l];if(f===Error||null!=f&&f.prototype instanceof Error){if(c instanceof f)return o(a).call(u,c)}else if("function"==typeof f){var p=o(f).call(u,c);if(p===i)return p;if(p)return o(a).call(u,c)}else if(n.isObject(c)){for(var h=r(f),d=0;d<h.length;++d){var _=h[d];if(f[_]!=c[_])continue t}return o(a).call(u,c)}}return e}}}},{"./es5":13,"./util":36}],8:[function(t,e,n){"use strict";e.exports=function(t){var e=!1,n=[];function r(){this._trace=new r.CapturedTrace(o())}function o(){var t=n.length-1;if(t>=0)return n[t]}return t.prototype._promiseCreated=function(){},t.prototype._pushContext=function(){},t.prototype._popContext=function(){return null},t._peekContext=t.prototype._peekContext=function(){},r.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,n.push(this._trace))},r.prototype._popContext=function(){if(void 0!==this._trace){var t=n.pop(),e=t._promiseCreated;return t._promiseCreated=null,e}return null},r.CapturedTrace=null,r.create=function(){if(e)return new r},r.deactivateLongStackTraces=function(){},r.activateLongStackTraces=function(){var n=t.prototype._pushContext,i=t.prototype._popContext,a=t._peekContext,s=t.prototype._peekContext,c=t.prototype._promiseCreated;r.deactivateLongStackTraces=function(){t.prototype._pushContext=n,t.prototype._popContext=i,t._peekContext=a,t.prototype._peekContext=s,t.prototype._promiseCreated=c,e=!1},e=!0,t.prototype._pushContext=r.prototype._pushContext,t.prototype._popContext=r.prototype._popContext,t._peekContext=t.prototype._peekContext=o,t.prototype._promiseCreated=function(){var t=this._peekContext();t&&null==t._promiseCreated&&(t._promiseCreated=this)}},r}},{}],9:[function(t,n,r){"use strict";n.exports=function(n,r){var o,i,a,s=n._getDomain,c=n._async,u=t("./errors").Warning,l=t("./util"),f=t("./es5"),p=l.canAttachTrace,h=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,d=/\((?:timers\.js):\d+:\d+\)/,_=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,v=null,y=null,m=!1,g=!(0==l.env("BLUEBIRD_DEBUG")),b=!(0==l.env("BLUEBIRD_WARNINGS")||!g&&!l.env("BLUEBIRD_WARNINGS")),w=!(0==l.env("BLUEBIRD_LONG_STACK_TRACES")||!g&&!l.env("BLUEBIRD_LONG_STACK_TRACES")),x=0!=l.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(b||!!l.env("BLUEBIRD_W_FORGOTTEN_RETURN"));n.prototype.suppressUnhandledRejections=function(){var t=this._target();t._bitField=-1048577&t._bitField|524288},n.prototype._ensurePossibleRejectionHandled=function(){if(0==(524288&this._bitField)){this._setRejectionIsUnhandled();var t=this;setTimeout(function(){t._notifyUnhandledRejection()},1)}},n.prototype._notifyUnhandledRejectionIsHandled=function(){$("rejectionHandled",o,void 0,this)},n.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},n.prototype._returnedNonUndefined=function(){return 0!=(268435456&this._bitField)},n.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var t=this._settledValue();this._setUnhandledRejectionIsNotified(),$("unhandledRejection",i,t,this)}},n.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},n.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},n.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},n.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},n.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},n.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},n.prototype._warn=function(t,e,n){return U(t,e,n||this)},n.onPossiblyUnhandledRejection=function(t){var e=s();i="function"==typeof t?null===e?t:l.domainBind(e,t):void 0},n.onUnhandledRejectionHandled=function(t){var e=s();o="function"==typeof t?null===e?t:l.domainBind(e,t):void 0};var j=function(){};n.longStackTraces=function(){if(c.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!Z.longStackTraces&&W()){var t=n.prototype._captureStackTrace,e=n.prototype._attachExtraTrace,o=n.prototype._dereferenceTrace;Z.longStackTraces=!0,j=function(){if(c.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");n.prototype._captureStackTrace=t,n.prototype._attachExtraTrace=e,n.prototype._dereferenceTrace=o,r.deactivateLongStackTraces(),c.enableTrampoline(),Z.longStackTraces=!1},n.prototype._captureStackTrace=N,n.prototype._attachExtraTrace=B,n.prototype._dereferenceTrace=V,r.activateLongStackTraces(),c.disableTrampolineIfNecessary()}},n.hasLongStackTraces=function(){return Z.longStackTraces&&W()};var k=function(){try{if("function"==typeof CustomEvent){var t=new CustomEvent("CustomEvent");return l.global.dispatchEvent(t),function(t,e){var n={detail:e,cancelable:!0};f.defineProperty(n,"promise",{value:e.promise}),f.defineProperty(n,"reason",{value:e.reason});var r=new CustomEvent(t.toLowerCase(),n);return!l.global.dispatchEvent(r)}}if("function"==typeof Event){var t=new Event("CustomEvent");return l.global.dispatchEvent(t),function(t,e){var n=new Event(t.toLowerCase(),{cancelable:!0});return n.detail=e,f.defineProperty(n,"promise",{value:e.promise}),f.defineProperty(n,"reason",{value:e.reason}),!l.global.dispatchEvent(n)}}var t=document.createEvent("CustomEvent");return t.initCustomEvent("testingtheevent",!1,!0,{}),l.global.dispatchEvent(t),function(t,e){var n=document.createEvent("CustomEvent");return n.initCustomEvent(t.toLowerCase(),!1,!0,e),!l.global.dispatchEvent(n)}}catch(t){}return function(){return!1}}(),E=l.isNode?function(){return e.emit.apply(e,arguments)}:l.global?function(t){var e="on"+t.toLowerCase(),n=l.global[e];return!!n&&(n.apply(l.global,[].slice.call(arguments,1)),!0)}:function(){return!1};function C(t,e){return{promise:e}}var O={promiseCreated:C,promiseFulfilled:C,promiseRejected:C,promiseResolved:C,promiseCancelled:C,promiseChained:function(t,e,n){return{promise:e,child:n}},warning:function(t,e){return{warning:e}},unhandledRejection:function(t,e,n){return{reason:e,promise:n}},rejectionHandled:C},S=function(t){var e=!1;try{e=E.apply(null,arguments)}catch(t){c.throwLater(t),e=!0}var n=!1;try{n=k(t,O[t].apply(null,arguments))}catch(t){c.throwLater(t),n=!0}return n||e};function T(){return!1}function F(t,e,n){var r=this;try{t(e,n,function(t){if("function"!=typeof t)throw new TypeError("onCancel must be a function, got: "+l.toString(t));r._attachCancellationCallback(t)})}catch(t){return t}}function P(t){if(!this._isCancellable())return this;var e=this._onCancel();void 0!==e?l.isArray(e)?e.push(t):this._setOnCancel([e,t]):this._setOnCancel(t)}function R(){return this._onCancelField}function A(t){this._onCancelField=t}function D(){this._cancellationParent=void 0,this._onCancelField=void 0}function L(t,e){if(0!=(1&e)){this._cancellationParent=t;var n=t._branchesRemainingToCancel;void 0===n&&(n=0),t._branchesRemainingToCancel=n+1}0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}n.config=function(t){if("longStackTraces"in(t=Object(t))&&(t.longStackTraces?n.longStackTraces():!t.longStackTraces&&n.hasLongStackTraces()&&j()),"warnings"in t){var e=t.warnings;Z.warnings=!!e,x=Z.warnings,l.isObject(e)&&"wForgottenReturn"in e&&(x=!!e.wForgottenReturn)}if("cancellation"in t&&t.cancellation&&!Z.cancellation){if(c.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");n.prototype._clearCancellationData=D,n.prototype._propagateFrom=L,n.prototype._onCancel=R,n.prototype._setOnCancel=A,n.prototype._attachCancellationCallback=P,n.prototype._execute=F,I=L,Z.cancellation=!0}return"monitoring"in t&&(t.monitoring&&!Z.monitoring?(Z.monitoring=!0,n.prototype._fireEvent=S):!t.monitoring&&Z.monitoring&&(Z.monitoring=!1,n.prototype._fireEvent=T)),n},n.prototype._fireEvent=T,n.prototype._execute=function(t,e,n){try{t(e,n)}catch(t){return t}},n.prototype._onCancel=function(){},n.prototype._setOnCancel=function(t){},n.prototype._attachCancellationCallback=function(t){},n.prototype._captureStackTrace=function(){},n.prototype._attachExtraTrace=function(){},n.prototype._dereferenceTrace=function(){},n.prototype._clearCancellationData=function(){},n.prototype._propagateFrom=function(t,e){};var I=function(t,e){0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)};function M(){var t=this._boundTo;return void 0!==t&&t instanceof n?t.isFulfilled()?t.value():void 0:t}function N(){this._trace=new J(this._peekContext())}function B(t,e){if(p(t)){var n=this._trace;if(void 0!==n&&e&&(n=n._parent),void 0!==n)n.attachExtraTrace(t);else if(!t.__stackCleaned__){var r=G(t);l.notEnumerableProp(t,"stack",r.message+"\n"+r.stack.join("\n")),l.notEnumerableProp(t,"__stackCleaned__",!0)}}}function V(){this._trace=void 0}function U(t,e,r){if(Z.warnings){var o,i=new u(t);if(e)r._attachExtraTrace(i);else if(Z.longStackTraces&&(o=n._peekContext()))o.attachExtraTrace(i);else{var a=G(i);i.stack=a.message+"\n"+a.stack.join("\n")}S("warning",i)||q(i,"",!0)}}function H(t){for(var e=[],n=0;n<t.length;++n){var r=t[n],o=" (No stack trace)"===r||v.test(r),i=o&&z(r);o&&!i&&(m&&" "!==r.charAt(0)&&(r=" "+r),e.push(r))}return e}function G(t){var e=t.stack,n=t.toString();return e="string"==typeof e&&e.length>0?function(t){for(var e=t.stack.replace(/\s+$/g,"").split("\n"),n=0;n<e.length;++n){var r=e[n];if(" (No stack trace)"===r||v.test(r))break}return n>0&&"SyntaxError"!=t.name&&(e=e.slice(n)),e}(t):[" (No stack trace)"],{message:n,stack:"SyntaxError"==t.name?e:H(e)}}function q(t,e,n){if("undefined"!=typeof console){var r;if(l.isObject(t)){var o=t.stack;r=e+y(o,t)}else r=e+String(t);"function"==typeof a?a(r,n):"function"!=typeof console.log&&"object"!=typeof console.log||console.log(r)}}function $(t,e,n,r){var o=!1;try{"function"==typeof e&&(o=!0,"rejectionHandled"===t?e(r):e(n,r))}catch(t){c.throwLater(t)}"unhandledRejection"===t?S(t,n,r)||o||q(n,"Unhandled rejection "):S(t,r)}function Q(t){var e;if("function"==typeof t)e="[function "+(t.name||"anonymous")+"]";else{if(e=t&&"function"==typeof t.toString?t.toString():l.toString(t),/\[object [a-zA-Z0-9$_]+\]/.test(e))try{var n=JSON.stringify(t);e=n}catch(t){}0===e.length&&(e="(empty array)")}return"(<"+function(t){return t.length<41?t:t.substr(0,38)+"..."}(e)+">, no stack trace)"}function W(){return"function"==typeof Y}var z=function(){return!1},K=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function X(t){var e=t.match(K);if(e)return{fileName:e[1],line:parseInt(e[2],10)}}function J(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);Y(this,J),e>32&&this.uncycle()}l.inherits(J,Error),r.CapturedTrace=J,J.prototype.uncycle=function(){var t=this._length;if(!(t<2)){for(var e=[],n={},r=0,o=this;void 0!==o;++r)e.push(o),o=o._parent;for(var r=(t=this._length=r)-1;r>=0;--r){var i=e[r].stack;void 0===n[i]&&(n[i]=r)}for(var r=0;r<t;++r){var a=e[r].stack,s=n[a];if(void 0!==s&&s!==r){s>0&&(e[s-1]._parent=void 0,e[s-1]._length=1),e[r]._parent=void 0,e[r]._length=1;var c=r>0?e[r-1]:this;s<t-1?(c._parent=e[s+1],c._parent.uncycle(),c._length=c._parent._length+1):(c._parent=void 0,c._length=1);for(var u=c._length+1,l=r-2;l>=0;--l)e[l]._length=u,u++;return}}}},J.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var e=G(t),n=e.message,r=[e.stack],o=this;void 0!==o;)r.push(H(o.stack.split("\n"))),o=o._parent;!function(t){for(var e=t[0],n=1;n<t.length;++n){for(var r=t[n],o=e.length-1,i=e[o],a=-1,s=r.length-1;s>=0;--s)if(r[s]===i){a=s;break}for(var s=a;s>=0;--s){var c=r[s];if(e[o]!==c)break;e.pop(),o--}e=r}}(r),function(t){for(var e=0;e<t.length;++e)(0===t[e].length||e+1<t.length&&t[e][0]===t[e+1][0])&&(t.splice(e,1),e--)}(r),l.notEnumerableProp(t,"stack",function(t,e){for(var n=0;n<e.length-1;++n)e[n].push("From previous event:"),e[n]=e[n].join("\n");return n<e.length&&(e[n]=e[n].join("\n")),t+"\n"+e.join("\n")}(n,r)),l.notEnumerableProp(t,"__stackCleaned__",!0)}};var Y=function(){var t=/^\s*at\s*/,e=function(t,e){return"string"==typeof t?t:void 0!==e.name&&void 0!==e.message?e.toString():Q(e)};if("number"==typeof Error.stackTraceLimit&&"function"==typeof Error.captureStackTrace){Error.stackTraceLimit+=6,v=t,y=e;var n=Error.captureStackTrace;return z=function(t){return h.test(t)},function(t,e){Error.stackTraceLimit+=6,n(t,e),Error.stackTraceLimit-=6}}var r,o=new Error;if("string"==typeof o.stack&&o.stack.split("\n")[0].indexOf("stackDetection@")>=0)return v=/@/,y=e,m=!0,function(t){t.stack=(new Error).stack};try{throw new Error}catch(t){r="stack"in t}return"stack"in o||!r||"number"!=typeof Error.stackTraceLimit?(y=function(t,e){return"string"==typeof t?t:"object"!=typeof e&&"function"!=typeof e||void 0===e.name||void 0===e.message?Q(e):e.toString()},null):(v=t,y=e,function(t){Error.stackTraceLimit+=6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit-=6})}();"undefined"!=typeof console&&void 0!==console.warn&&(a=function(t){console.warn(t)},l.isNode&&e.stderr.isTTY?a=function(t,e){var n=e?"":"";console.warn(n+t+"\n")}:l.isNode||"string"!=typeof(new Error).stack||(a=function(t,e){console.warn("%c"+t,e?"color: darkorange":"color: red")}));var Z={warnings:b,longStackTraces:!1,cancellation:!1,monitoring:!1};return w&&n.longStackTraces(),{longStackTraces:function(){return Z.longStackTraces},warnings:function(){return Z.warnings},cancellation:function(){return Z.cancellation},monitoring:function(){return Z.monitoring},propagateFromFunction:function(){return I},boundValueFunction:function(){return M},checkForgottenReturns:function(t,e,n,r,o){if(void 0===t&&null!==e&&x){if(void 0!==o&&o._returnedNonUndefined())return;if(0==(65535&r._bitField))return;n&&(n+=" ");var i="",a="";if(e._trace){for(var s=e._trace.stack.split("\n"),c=H(s),u=c.length-1;u>=0;--u){var l=c[u];if(!d.test(l)){var f=l.match(_);f&&(i="at "+f[1]+":"+f[2]+":"+f[3]+" ");break}}if(c.length>0)for(var p=c[0],u=0;u<s.length;++u)if(s[u]===p){u>0&&(a="\n"+s[u-1]);break}}var h="a promise was created in a "+n+"handler "+i+"but was not returned from it, see http://goo.gl/rRqMUw"+a;r._warn(h,!0,e)}},setBounds:function(t,e){if(W()){for(var n,r,o=t.stack.split("\n"),i=e.stack.split("\n"),a=-1,s=-1,c=0;c<o.length;++c){var u=X(o[c]);if(u){n=u.fileName,a=u.line;break}}for(var c=0;c<i.length;++c){var u=X(i[c]);if(u){r=u.fileName,s=u.line;break}}a<0||s<0||!n||!r||n!==r||a>=s||(z=function(t){if(h.test(t))return!0;var e=X(t);return!!(e&&e.fileName===n&&a<=e.line&&e.line<=s)})}},warn:U,deprecated:function(t,e){var n=t+" is deprecated and will be removed in a future version.";return e&&(n+=" Use "+e+" instead."),U(n)},CapturedTrace:J,fireDomEvent:k,fireGlobalEvent:E}}},{"./errors":12,"./es5":13,"./util":36}],10:[function(t,e,n){"use strict";e.exports=function(t){function e(){return this.value}function n(){throw this.reason}t.prototype.return=t.prototype.thenReturn=function(n){return n instanceof t&&n.suppressUnhandledRejections(),this._then(e,void 0,void 0,{value:n},void 0)},t.prototype.throw=t.prototype.thenThrow=function(t){return this._then(n,void 0,void 0,{reason:t},void 0)},t.prototype.catchThrow=function(t){if(arguments.length<=1)return this._then(void 0,n,void 0,{reason:t},void 0);var e=arguments[1];return this.caught(t,function(){throw e})},t.prototype.catchReturn=function(n){if(arguments.length<=1)return n instanceof t&&n.suppressUnhandledRejections(),this._then(void 0,e,void 0,{value:n},void 0);var r=arguments[1];return r instanceof t&&r.suppressUnhandledRejections(),this.caught(n,function(){return r})}}},{}],11:[function(t,e,n){"use strict";e.exports=function(t,e){var n=t.reduce,r=t.all;function o(){return r(this)}t.prototype.each=function(t){return n(this,t,e,0)._then(o,void 0,void 0,this,void 0)},t.prototype.mapSeries=function(t){return n(this,t,e,e)},t.each=function(t,r){return n(t,r,e,0)._then(o,void 0,void 0,t,void 0)},t.mapSeries=function(t,r){return n(t,r,e,e)}}},{}],12:[function(t,e,n){"use strict";var r,o,i=t("./es5"),a=i.freeze,s=t("./util"),c=s.inherits,u=s.notEnumerableProp;function l(t,e){function n(r){if(!(this instanceof n))return new n(r);u(this,"message","string"==typeof r?r:e),u(this,"name",t),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return c(n,Error),n}var f=l("Warning","warning"),p=l("CancellationError","cancellation error"),h=l("TimeoutError","timeout error"),d=l("AggregateError","aggregate error");try{r=TypeError,o=RangeError}catch(t){r=l("TypeError","type error"),o=l("RangeError","range error")}for(var _="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),v=0;v<_.length;++v)"function"==typeof Array.prototype[_[v]]&&(d.prototype[_[v]]=Array.prototype[_[v]]);i.defineProperty(d.prototype,"length",{value:0,configurable:!1,writable:!0,enumerable:!0}),d.prototype.isOperational=!0;var y=0;function m(t){if(!(this instanceof m))return new m(t);u(this,"name","OperationalError"),u(this,"message",t),this.cause=t,this.isOperational=!0,t instanceof Error?(u(this,"message",t.message),u(this,"stack",t.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}d.prototype.toString=function(){var t=Array(4*y+1).join(" "),e="\n"+t+"AggregateError of:\n";y++,t=Array(4*y+1).join(" ");for(var n=0;n<this.length;++n){for(var r=this[n]===this?"[Circular AggregateError]":this[n]+"",o=r.split("\n"),i=0;i<o.length;++i)o[i]=t+o[i];r=o.join("\n"),e+=r+"\n"}return y--,e},c(m,Error);var g=Error.__BluebirdErrorTypes__;g||(g=a({CancellationError:p,TimeoutError:h,OperationalError:m,RejectionError:m,AggregateError:d}),i.defineProperty(Error,"__BluebirdErrorTypes__",{value:g,writable:!1,enumerable:!1,configurable:!1})),e.exports={Error:Error,TypeError:r,RangeError:o,CancellationError:g.CancellationError,OperationalError:g.OperationalError,TimeoutError:g.TimeoutError,AggregateError:g.AggregateError,Warning:f}},{"./es5":13,"./util":36}],13:[function(t,e,n){var r=function(){"use strict";return void 0===this}();if(r)e.exports={freeze:Object.freeze,defineProperty:Object.defineProperty,getDescriptor:Object.getOwnPropertyDescriptor,keys:Object.keys,names:Object.getOwnPropertyNames,getPrototypeOf:Object.getPrototypeOf,isArray:Array.isArray,isES5:r,propertyIsWritable:function(t,e){var n=Object.getOwnPropertyDescriptor(t,e);return!(n&&!n.writable&&!n.set)}};else{var o={}.hasOwnProperty,i={}.toString,a={}.constructor.prototype,s=function(t){var e=[];for(var n in t)o.call(t,n)&&e.push(n);return e};e.exports={isArray:function(t){try{return"[object Array]"===i.call(t)}catch(t){return!1}},keys:s,names:s,defineProperty:function(t,e,n){return t[e]=n.value,t},getDescriptor:function(t,e){return{value:t[e]}},freeze:function(t){return t},getPrototypeOf:function(t){try{return Object(t).constructor.prototype}catch(t){return a}},isES5:r,propertyIsWritable:function(){return!0}}}},{}],14:[function(t,e,n){"use strict";e.exports=function(t,e){var n=t.map;t.prototype.filter=function(t,r){return n(this,t,r,e)},t.filter=function(t,r,o){return n(t,r,o,e)}}},{}],15:[function(t,e,n){"use strict";e.exports=function(e,n,r){var o=t("./util"),i=e.CancellationError,a=o.errorObj,s=t("./catch_filter")(r);function c(t,e,n){this.promise=t,this.type=e,this.handler=n,this.called=!1,this.cancelPromise=null}function u(t){this.finallyHandler=t}function l(t,e){return null!=t.cancelPromise&&(arguments.length>1?t.cancelPromise._reject(e):t.cancelPromise._cancel(),t.cancelPromise=null,!0)}function f(){return h.call(this,this.promise._target()._settledValue())}function p(t){if(!l(this,t))return a.e=t,a}function h(t){var o=this.promise,s=this.handler;if(!this.called){this.called=!0;var c=this.isFinallyHandler()?s.call(o._boundValue()):s.call(o._boundValue(),t);if(c===r)return c;if(void 0!==c){o._setReturnedNonUndefined();var h=n(c,o);if(h instanceof e){if(null!=this.cancelPromise){if(h._isCancelled()){var d=new i("late cancellation observer");return o._attachExtraTrace(d),a.e=d,a}h.isPending()&&h._attachCancellationCallback(new u(this))}return h._then(f,p,void 0,this,void 0)}}}return o.isRejected()?(l(this),a.e=t,a):(l(this),t)}return c.prototype.isFinallyHandler=function(){return 0===this.type},u.prototype._resultCancelled=function(){l(this.finallyHandler)},e.prototype._passThrough=function(t,e,n,r){return"function"!=typeof t?this.then():this._then(n,r,void 0,new c(this,e,t),void 0)},e.prototype.lastly=e.prototype.finally=function(t){return this._passThrough(t,0,h,h)},e.prototype.tap=function(t){return this._passThrough(t,1,h)},e.prototype.tapCatch=function(t){var n=arguments.length;if(1===n)return this._passThrough(t,1,void 0,h);var r,i=new Array(n-1),a=0;for(r=0;r<n-1;++r){var c=arguments[r];if(!o.isObject(c))return e.reject(new TypeError("tapCatch statement predicate: expecting an object but got "+o.classString(c)));i[a++]=c}i.length=a;var u=arguments[r];return this._passThrough(s(i,u,this),1,void 0,h)},c}},{"./catch_filter":7,"./util":36}],16:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i,a){var s=t("./errors"),c=s.TypeError,u=t("./util"),l=u.errorObj,f=u.tryCatch,p=[];function h(t,n,o,i){if(a.cancellation()){var s=new e(r),c=this._finallyPromise=new e(r);this._promise=s.lastly(function(){return c}),s._captureStackTrace(),s._setOnCancel(this)}else{var u=this._promise=new e(r);u._captureStackTrace()}this._stack=i,this._generatorFunction=t,this._receiver=n,this._generator=void 0,this._yieldHandlers="function"==typeof o?[o].concat(p):p,this._yieldedPromise=null,this._cancellationPhase=!1}u.inherits(h,i),h.prototype._isResolved=function(){return null===this._promise},h.prototype._cleanup=function(){this._promise=this._generator=null,a.cancellation()&&null!==this._finallyPromise&&(this._finallyPromise._fulfill(),this._finallyPromise=null)},h.prototype._promiseCancelled=function(){if(!this._isResolved()){var t,n=void 0!==this._generator.return;if(n)this._promise._pushContext(),t=f(this._generator.return).call(this._generator,void 0),this._promise._popContext();else{var r=new e.CancellationError("generator .return() sentinel");e.coroutine.returnSentinel=r,this._promise._attachExtraTrace(r),this._promise._pushContext(),t=f(this._generator.throw).call(this._generator,r),this._promise._popContext()}this._cancellationPhase=!0,this._yieldedPromise=null,this._continue(t)}},h.prototype._promiseFulfilled=function(t){this._yieldedPromise=null,this._promise._pushContext();var e=f(this._generator.next).call(this._generator,t);this._promise._popContext(),this._continue(e)},h.prototype._promiseRejected=function(t){this._yieldedPromise=null,this._promise._attachExtraTrace(t),this._promise._pushContext();var e=f(this._generator.throw).call(this._generator,t);this._promise._popContext(),this._continue(e)},h.prototype._resultCancelled=function(){if(this._yieldedPromise instanceof e){var t=this._yieldedPromise;this._yieldedPromise=null,t.cancel()}},h.prototype.promise=function(){return this._promise},h.prototype._run=function(){this._generator=this._generatorFunction.call(this._receiver),this._receiver=this._generatorFunction=void 0,this._promiseFulfilled(void 0)},h.prototype._continue=function(t){var n=this._promise;if(t===l)return this._cleanup(),this._cancellationPhase?n.cancel():n._rejectCallback(t.e,!1);var r=t.value;if(!0===t.done)return this._cleanup(),this._cancellationPhase?n.cancel():n._resolveCallback(r);var i=o(r,this._promise);if(i instanceof e||null!==(i=function(t,n,r){for(var i=0;i<n.length;++i){r._pushContext();var a=f(n[i])(t);if(r._popContext(),a===l){r._pushContext();var s=e.reject(l.e);return r._popContext(),s}var c=o(a,r);if(c instanceof e)return c}return null}(i,this._yieldHandlers,this._promise))){var a=(i=i._target())._bitField;0==(50397184&a)?(this._yieldedPromise=i,i._proxy(this,null)):0!=(33554432&a)?e._async.invoke(this._promiseFulfilled,this,i._value()):0!=(16777216&a)?e._async.invoke(this._promiseRejected,this,i._reason()):this._promiseCancelled()}else this._promiseRejected(new c("A value %s was yielded that could not be treated as a promise\n\n See http://goo.gl/MqrFmX\n\n".replace("%s",String(r))+"From coroutine:\n"+this._stack.split("\n").slice(1,-7).join("\n")))},e.coroutine=function(t,e){if("function"!=typeof t)throw new c("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");var n=Object(e).yieldHandler,r=h,o=(new Error).stack;return function(){var e=t.apply(this,arguments),i=new r(void 0,void 0,n,o),a=i.promise();return i._generator=e,i._promiseFulfilled(void 0),a}},e.coroutine.addYieldHandler=function(t){if("function"!=typeof t)throw new c("expecting a function but got "+u.classString(t));p.push(t)},e.spawn=function(t){if(a.deprecated("Promise.spawn()","Promise.coroutine()"),"function"!=typeof t)return n("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");var r=new h(t,this),o=r.promise();return r._run(e.spawn),o}}},{"./errors":12,"./util":36}],17:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i,a){var s=t("./util");s.canEvaluate,s.tryCatch,s.errorObj,e.join=function(){var t,e=arguments.length-1;e>0&&"function"==typeof arguments[e]&&(t=arguments[e]);var r=[].slice.call(arguments);t&&r.pop();var o=new n(r).promise();return void 0!==t?o.spread(t):o}}},{"./util":36}],18:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i,a){var s=e._getDomain,c=t("./util"),u=c.tryCatch,l=c.errorObj,f=e._async;function p(t,e,n,r){this.constructor$(t),this._promise._captureStackTrace();var o=s();this._callback=null===o?e:c.domainBind(o,e),this._preservedValues=r===i?new Array(this.length()):null,this._limit=n,this._inFlight=0,this._queue=[],f.invoke(this._asyncInit,this,void 0)}function h(t,n,o,i){if("function"!=typeof n)return r("expecting a function but got "+c.classString(n));var a=0;if(void 0!==o){if("object"!=typeof o||null===o)return e.reject(new TypeError("options argument must be an object but it is "+c.classString(o)));if("number"!=typeof o.concurrency)return e.reject(new TypeError("'concurrency' must be a number but it is "+c.classString(o.concurrency)));a=o.concurrency}return a="number"==typeof a&&isFinite(a)&&a>=1?a:0,new p(t,n,a,i).promise()}c.inherits(p,n),p.prototype._asyncInit=function(){this._init$(void 0,-2)},p.prototype._init=function(){},p.prototype._promiseFulfilled=function(t,n){var r=this._values,i=this.length(),s=this._preservedValues,c=this._limit;if(n<0){if(r[n=-1*n-1]=t,c>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(c>=1&&this._inFlight>=c)return r[n]=t,this._queue.push(n),!1;null!==s&&(s[n]=t);var f=this._promise,p=this._callback,h=f._boundValue();f._pushContext();var d=u(p).call(h,t,n,i),_=f._popContext();if(a.checkForgottenReturns(d,_,null!==s?"Promise.filter":"Promise.map",f),d===l)return this._reject(d.e),!0;var v=o(d,this._promise);if(v instanceof e){var y=(v=v._target())._bitField;if(0==(50397184&y))return c>=1&&this._inFlight++,r[n]=v,v._proxy(this,-1*(n+1)),!1;if(0==(33554432&y))return 0!=(16777216&y)?(this._reject(v._reason()),!0):(this._cancel(),!0);d=v._value()}r[n]=d}var m=++this._totalResolved;return m>=i&&(null!==s?this._filter(r,s):this._resolve(r),!0)},p.prototype._drainQueue=function(){for(var t=this._queue,e=this._limit,n=this._values;t.length>0&&this._inFlight<e;){if(this._isResolved())return;var r=t.pop();this._promiseFulfilled(n[r],r)}},p.prototype._filter=function(t,e){for(var n=e.length,r=new Array(n),o=0,i=0;i<n;++i)t[i]&&(r[o++]=e[i]);r.length=o,this._resolve(r)},p.prototype.preservedValues=function(){return this._preservedValues},e.prototype.map=function(t,e){return h(this,t,e,null)},e.map=function(t,e,n,r){return h(t,e,n,r)}}},{"./util":36}],19:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i){var a=t("./util"),s=a.tryCatch;e.method=function(t){if("function"!=typeof t)throw new e.TypeError("expecting a function but got "+a.classString(t));return function(){var r=new e(n);r._captureStackTrace(),r._pushContext();var o=s(t).apply(this,arguments),a=r._popContext();return i.checkForgottenReturns(o,a,"Promise.method",r),r._resolveFromSyncValue(o),r}},e.attempt=e.try=function(t){if("function"!=typeof t)return o("expecting a function but got "+a.classString(t));var r,c=new e(n);if(c._captureStackTrace(),c._pushContext(),arguments.length>1){i.deprecated("calling Promise.try with more than 1 argument");var u=arguments[1],l=arguments[2];r=a.isArray(u)?s(t).apply(l,u):s(t).call(l,u)}else r=s(t)();var f=c._popContext();return i.checkForgottenReturns(r,f,"Promise.try",c),c._resolveFromSyncValue(r),c},e.prototype._resolveFromSyncValue=function(t){t===a.errorObj?this._rejectCallback(t.e,!1):this._resolveCallback(t,!0)}}},{"./util":36}],20:[function(t,e,n){"use strict";var r=t("./util"),o=r.maybeWrapAsError,i=t("./errors"),a=i.OperationalError,s=t("./es5"),c=/^(?:name|message|stack|cause)$/;function u(t){var e;if(function(t){return t instanceof Error&&s.getPrototypeOf(t)===Error.prototype}(t)){(e=new a(t)).name=t.name,e.message=t.message,e.stack=t.stack;for(var n=s.keys(t),o=0;o<n.length;++o){var i=n[o];c.test(i)||(e[i]=t[i])}return e}return r.markAsOriginatingFromRejection(t),t}e.exports=function(t,e){return function(n,r){if(null!==t){if(n){var i=u(o(n));t._attachExtraTrace(i),t._reject(i)}else if(e){var a=[].slice.call(arguments,1);t._fulfill(a)}else t._fulfill(r);t=null}}}},{"./errors":12,"./es5":13,"./util":36}],21:[function(t,e,n){"use strict";e.exports=function(e){var n=t("./util"),r=e._async,o=n.tryCatch,i=n.errorObj;function a(t,e){if(!n.isArray(t))return s.call(this,t,e);var a=o(e).apply(this._boundValue(),[null].concat(t));a===i&&r.throwLater(a.e)}function s(t,e){var n=this._boundValue(),a=void 0===t?o(e).call(n,null):o(e).call(n,null,t);a===i&&r.throwLater(a.e)}function c(t,e){if(!t){var n=new Error(t+"");n.cause=t,t=n}var a=o(e).call(this._boundValue(),t);a===i&&r.throwLater(a.e)}e.prototype.asCallback=e.prototype.nodeify=function(t,e){if("function"==typeof t){var n=s;void 0!==e&&Object(e).spread&&(n=a),this._then(n,c,void 0,this,t)}return this}}},{"./util":36}],22:[function(t,n,r){"use strict";n.exports=function(){var r=function(){return new d("circular promise resolution chain\n\n See http://goo.gl/MqrFmX\n")},o=function(){return new T.PromiseInspection(this._target())},i=function(t){return T.reject(new d(t))};function a(){}var s,c={},u=t("./util");s=u.isNode?function(){var t=e.domain;return void 0===t&&(t=null),t}:function(){return null},u.notEnumerableProp(T,"_getDomain",s);var l=t("./es5"),f=t("./async"),p=new f;l.defineProperty(T,"_async",{value:p});var h=t("./errors"),d=T.TypeError=h.TypeError;T.RangeError=h.RangeError;var _=T.CancellationError=h.CancellationError;T.TimeoutError=h.TimeoutError,T.OperationalError=h.OperationalError,T.RejectionError=h.OperationalError,T.AggregateError=h.AggregateError;var v=function(){},y={},m={},g=t("./thenables")(T,v),b=t("./promise_array")(T,v,g,i,a),w=t("./context")(T),x=w.create,j=t("./debuggability")(T,w),k=(j.CapturedTrace,t("./finally")(T,g,m)),E=t("./catch_filter")(m),C=t("./nodeback"),O=u.errorObj,S=u.tryCatch;function T(t){t!==v&&function(t,e){if(null==t||t.constructor!==T)throw new d("the promise constructor cannot be invoked directly\n\n See http://goo.gl/MqrFmX\n");if("function"!=typeof e)throw new d("expecting a function but got "+u.classString(e))}(this,t),this._bitField=0,this._fulfillmentHandler0=void 0,this._rejectionHandler0=void 0,this._promise0=void 0,this._receiver0=void 0,this._resolveFromExecutor(t),this._promiseCreated(),this._fireEvent("promiseCreated",this)}function F(t){this.promise._resolveCallback(t)}function P(t){this.promise._rejectCallback(t,!1)}function R(t){var e=new T(v);e._fulfillmentHandler0=t,e._rejectionHandler0=t,e._promise0=t,e._receiver0=t}return T.prototype.toString=function(){return"[object Promise]"},T.prototype.caught=T.prototype.catch=function(t){var e=arguments.length;if(e>1){var n,r=new Array(e-1),o=0;for(n=0;n<e-1;++n){var a=arguments[n];if(!u.isObject(a))return i("Catch statement predicate: expecting an object but got "+u.classString(a));r[o++]=a}return r.length=o,t=arguments[n],this.then(void 0,E(r,t,this))}return this.then(void 0,t)},T.prototype.reflect=function(){return this._then(o,o,void 0,this,void 0)},T.prototype.then=function(t,e){if(j.warnings()&&arguments.length>0&&"function"!=typeof t&&"function"!=typeof e){var n=".then() only accepts functions but was passed: "+u.classString(t);arguments.length>1&&(n+=", "+u.classString(e)),this._warn(n)}return this._then(t,e,void 0,void 0,void 0)},T.prototype.done=function(t,e){var n=this._then(t,e,void 0,void 0,void 0);n._setIsFinal()},T.prototype.spread=function(t){return"function"!=typeof t?i("expecting a function but got "+u.classString(t)):this.all()._then(t,void 0,void 0,y,void 0)},T.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},T.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new b(this).promise()},T.prototype.error=function(t){return this.caught(u.originatesFromRejection,t)},T.getNewLibraryCopy=n.exports,T.is=function(t){return t instanceof T},T.fromNode=T.fromCallback=function(t){var e=new T(v);e._captureStackTrace();var n=arguments.length>1&&!!Object(arguments[1]).multiArgs,r=S(t)(C(e,n));return r===O&&e._rejectCallback(r.e,!0),e._isFateSealed()||e._setAsyncGuaranteed(),e},T.all=function(t){return new b(t).promise()},T.cast=function(t){var e=g(t);return e instanceof T||((e=new T(v))._captureStackTrace(),e._setFulfilled(),e._rejectionHandler0=t),e},T.resolve=T.fulfilled=T.cast,T.reject=T.rejected=function(t){var e=new T(v);return e._captureStackTrace(),e._rejectCallback(t,!0),e},T.setScheduler=function(t){if("function"!=typeof t)throw new d("expecting a function but got "+u.classString(t));return p.setScheduler(t)},T.prototype._then=function(t,e,n,r,o){var i=void 0!==o,a=i?o:new T(v),c=this._target(),l=c._bitField;i||(a._propagateFrom(this,3),a._captureStackTrace(),void 0===r&&0!=(2097152&this._bitField)&&(r=0!=(50397184&l)?this._boundValue():c===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,a));var f=s();if(0!=(50397184&l)){var h,d,y=c._settlePromiseCtx;0!=(33554432&l)?(d=c._rejectionHandler0,h=t):0!=(16777216&l)?(d=c._fulfillmentHandler0,h=e,c._unsetRejectionIsUnhandled()):(y=c._settlePromiseLateCancellationObserver,d=new _("late cancellation observer"),c._attachExtraTrace(d),h=e),p.invoke(y,c,{handler:null===f?h:"function"==typeof h&&u.domainBind(f,h),promise:a,receiver:r,value:d})}else c._addCallbacks(t,e,a,r,f);return a},T.prototype._length=function(){return 65535&this._bitField},T.prototype._isFateSealed=function(){return 0!=(117506048&this._bitField)},T.prototype._isFollowing=function(){return 67108864==(67108864&this._bitField)},T.prototype._setLength=function(t){this._bitField=-65536&this._bitField|65535&t},T.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},T.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},T.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},T.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},T.prototype._isFinal=function(){return(4194304&this._bitField)>0},T.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},T.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},T.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},T.prototype._setAsyncGuaranteed=function(){p.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},T.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[4*t-4+3];if(e!==c)return void 0===e&&this._isBound()?this._boundValue():e},T.prototype._promiseAt=function(t){return this[4*t-4+2]},T.prototype._fulfillmentHandlerAt=function(t){return this[4*t-4+0]},T.prototype._rejectionHandlerAt=function(t){return this[4*t-4+1]},T.prototype._boundValue=function(){},T.prototype._migrateCallback0=function(t){t._bitField;var e=t._fulfillmentHandler0,n=t._rejectionHandler0,r=t._promise0,o=t._receiverAt(0);void 0===o&&(o=c),this._addCallbacks(e,n,r,o,null)},T.prototype._migrateCallbackAt=function(t,e){var n=t._fulfillmentHandlerAt(e),r=t._rejectionHandlerAt(e),o=t._promiseAt(e),i=t._receiverAt(e);void 0===i&&(i=c),this._addCallbacks(n,r,o,i,null)},T.prototype._addCallbacks=function(t,e,n,r,o){var i=this._length();if(i>=65531&&(i=0,this._setLength(0)),0===i)this._promise0=n,this._receiver0=r,"function"==typeof t&&(this._fulfillmentHandler0=null===o?t:u.domainBind(o,t)),"function"==typeof e&&(this._rejectionHandler0=null===o?e:u.domainBind(o,e));else{var a=4*i-4;this[a+2]=n,this[a+3]=r,"function"==typeof t&&(this[a+0]=null===o?t:u.domainBind(o,t)),"function"==typeof e&&(this[a+1]=null===o?e:u.domainBind(o,e))}return this._setLength(i+1),i},T.prototype._proxy=function(t,e){this._addCallbacks(void 0,void 0,e,t,null)},T.prototype._resolveCallback=function(t,e){if(0==(117506048&this._bitField)){if(t===this)return this._rejectCallback(r(),!1);var n=g(t,this);if(!(n instanceof T))return this._fulfill(t);e&&this._propagateFrom(n,2);var o=n._target();if(o!==this){var i=o._bitField;if(0==(50397184&i)){var a=this._length();a>0&&o._migrateCallback0(this);for(var s=1;s<a;++s)o._migrateCallbackAt(this,s);this._setFollowing(),this._setLength(0),this._setFollowee(o)}else if(0!=(33554432&i))this._fulfill(o._value());else if(0!=(16777216&i))this._reject(o._reason());else{var c=new _("late cancellation observer");o._attachExtraTrace(c),this._reject(c)}}else this._reject(r())}},T.prototype._rejectCallback=function(t,e,n){var r=u.ensureErrorObject(t),o=r===t;if(!o&&!n&&j.warnings()){var i="a promise was rejected with a non-error: "+u.classString(t);this._warn(i,!0)}this._attachExtraTrace(r,!!e&&o),this._reject(t)},T.prototype._resolveFromExecutor=function(t){if(t!==v){var e=this;this._captureStackTrace(),this._pushContext();var n=!0,r=this._execute(t,function(t){e._resolveCallback(t)},function(t){e._rejectCallback(t,n)});n=!1,this._popContext(),void 0!==r&&e._rejectCallback(r,!0)}},T.prototype._settlePromiseFromHandler=function(t,e,n,r){var o=r._bitField;if(0==(65536&o)){var i;r._pushContext(),e===y?n&&"number"==typeof n.length?i=S(t).apply(this._boundValue(),n):(i=O).e=new d("cannot .spread() a non-array: "+u.classString(n)):i=S(t).call(e,n);var a=r._popContext();0==(65536&(o=r._bitField))&&(i===m?r._reject(n):i===O?r._rejectCallback(i.e,!1):(j.checkForgottenReturns(i,a,"",r,this),r._resolveCallback(i)))}},T.prototype._target=function(){for(var t=this;t._isFollowing();)t=t._followee();return t},T.prototype._followee=function(){return this._rejectionHandler0},T.prototype._setFollowee=function(t){this._rejectionHandler0=t},T.prototype._settlePromise=function(t,e,n,r){var i=t instanceof T,s=this._bitField,c=0!=(134217728&s);0!=(65536&s)?(i&&t._invokeInternalOnCancel(),n instanceof k&&n.isFinallyHandler()?(n.cancelPromise=t,S(e).call(n,r)===O&&t._reject(O.e)):e===o?t._fulfill(o.call(n)):n instanceof a?n._promiseCancelled(t):i||t instanceof b?t._cancel():n.cancel()):"function"==typeof e?i?(c&&t._setAsyncGuaranteed(),this._settlePromiseFromHandler(e,n,r,t)):e.call(n,r,t):n instanceof a?n._isResolved()||(0!=(33554432&s)?n._promiseFulfilled(r,t):n._promiseRejected(r,t)):i&&(c&&t._setAsyncGuaranteed(),0!=(33554432&s)?t._fulfill(r):t._reject(r))},T.prototype._settlePromiseLateCancellationObserver=function(t){var e=t.handler,n=t.promise,r=t.receiver,o=t.value;"function"==typeof e?n instanceof T?this._settlePromiseFromHandler(e,r,o,n):e.call(r,o,n):n instanceof T&&n._reject(o)},T.prototype._settlePromiseCtx=function(t){this._settlePromise(t.promise,t.handler,t.receiver,t.value)},T.prototype._settlePromise0=function(t,e,n){var r=this._promise0,o=this._receiverAt(0);this._promise0=void 0,this._receiver0=void 0,this._settlePromise(r,t,o,e)},T.prototype._clearCallbackDataAtIndex=function(t){var e=4*t-4;this[e+2]=this[e+3]=this[e+0]=this[e+1]=void 0},T.prototype._fulfill=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(t===this){var n=r();return this._attachExtraTrace(n),this._reject(n)}this._setFulfilled(),this._rejectionHandler0=t,(65535&e)>0&&(0!=(134217728&e)?this._settlePromises():p.settlePromises(this),this._dereferenceTrace())}},T.prototype._reject=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=t,this._isFinal())return p.fatalError(t,u.isNode);(65535&e)>0?p.settlePromises(this):this._ensurePossibleRejectionHandled()}},T.prototype._fulfillPromises=function(t,e){for(var n=1;n<t;n++){var r=this._fulfillmentHandlerAt(n),o=this._promiseAt(n),i=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(o,r,i,e)}},T.prototype._rejectPromises=function(t,e){for(var n=1;n<t;n++){var r=this._rejectionHandlerAt(n),o=this._promiseAt(n),i=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(o,r,i,e)}},T.prototype._settlePromises=function(){var t=this._bitField,e=65535&t;if(e>0){if(0!=(16842752&t)){var n=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,n,t),this._rejectPromises(e,n)}else{var r=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,r,t),this._fulfillPromises(e,r)}this._setLength(0)}this._clearCancellationData()},T.prototype._settledValue=function(){var t=this._bitField;return 0!=(33554432&t)?this._rejectionHandler0:0!=(16777216&t)?this._fulfillmentHandler0:void 0},T.defer=T.pending=function(){j.deprecated("Promise.defer","new Promise");var t=new T(v);return{promise:t,resolve:F,reject:P}},u.notEnumerableProp(T,"_makeSelfResolutionError",r),t("./method")(T,v,g,i,j),t("./bind")(T,v,g,j),t("./cancel")(T,b,i,j),t("./direct_resolve")(T),t("./synchronous_inspection")(T),t("./join")(T,b,g,v,p,s),T.Promise=T,T.version="3.5.2",t("./map.js")(T,b,i,g,v,j),t("./call_get.js")(T),t("./using.js")(T,i,g,x,v,j),t("./timers.js")(T,v,j),t("./generators.js")(T,i,v,g,a,j),t("./nodeify.js")(T),t("./promisify.js")(T,v),t("./props.js")(T,b,g,i),t("./race.js")(T,v,g,i),t("./reduce.js")(T,b,i,g,v,j),t("./settle.js")(T,b,j),t("./some.js")(T,b,i),t("./filter.js")(T,v),t("./each.js")(T,v),t("./any.js")(T),u.toFastProperties(T),u.toFastProperties(T.prototype),R({a:1}),R({b:2}),R({c:3}),R(1),R(function(){}),R(void 0),R(!1),R(new T(v)),j.setBounds(f.firstLineError,u.lastLineError),T}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i){var a=t("./util");function s(t){var r=this._promise=new e(n);t instanceof e&&r._propagateFrom(t,3),r._setOnCancel(this),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}return a.isArray,a.inherits(s,i),s.prototype.length=function(){return this._length},s.prototype.promise=function(){return this._promise},s.prototype._init=function t(n,i){var s=r(this._values,this._promise);if(s instanceof e){var c=(s=s._target())._bitField;if(this._values=s,0==(50397184&c))return this._promise._setAsyncGuaranteed(),s._then(t,this._reject,void 0,this,i);if(0==(33554432&c))return 0!=(16777216&c)?this._reject(s._reason()):this._cancel();s=s._value()}if(null!==(s=a.asArray(s)))0!==s.length?this._iterate(s):-5===i?this._resolveEmptyArray():this._resolve(function(t){switch(t){case-2:return[];case-3:return{};case-6:return new Map}}(i));else{var u=o("expecting an array or an iterable object but got "+a.classString(s)).reason();this._promise._rejectCallback(u,!1)}},s.prototype._iterate=function(t){var n=this.getActualLength(t.length);this._length=n,this._values=this.shouldCopyValues()?new Array(n):this._values;for(var o=this._promise,i=!1,a=null,s=0;s<n;++s){var c=r(t[s],o);c instanceof e?(c=c._target(),a=c._bitField):a=null,i?null!==a&&c.suppressUnhandledRejections():null!==a?0==(50397184&a)?(c._proxy(this,s),this._values[s]=c):i=0!=(33554432&a)?this._promiseFulfilled(c._value(),s):0!=(16777216&a)?this._promiseRejected(c._reason(),s):this._promiseCancelled(s):i=this._promiseFulfilled(c,s)}i||o._setAsyncGuaranteed()},s.prototype._isResolved=function(){return null===this._values},s.prototype._resolve=function(t){this._values=null,this._promise._fulfill(t)},s.prototype._cancel=function(){!this._isResolved()&&this._promise._isCancellable()&&(this._values=null,this._promise._cancel())},s.prototype._reject=function(t){this._values=null,this._promise._rejectCallback(t,!1)},s.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;return n>=this._length&&(this._resolve(this._values),!0)},s.prototype._promiseCancelled=function(){return this._cancel(),!0},s.prototype._promiseRejected=function(t){return this._totalResolved++,this._reject(t),!0},s.prototype._resultCancelled=function(){if(!this._isResolved()){var t=this._values;if(this._cancel(),t instanceof e)t.cancel();else for(var n=0;n<t.length;++n)t[n]instanceof e&&t[n].cancel()}},s.prototype.shouldCopyValues=function(){return!0},s.prototype.getActualLength=function(t){return t},s}},{"./util":36}],24:[function(t,e,n){"use strict";e.exports=function(e,n){var r={},o=t("./util"),i=t("./nodeback"),a=o.withAppended,s=o.maybeWrapAsError,c=o.canEvaluate,u=t("./errors").TypeError,l={__isPromisified__:!0},f=new RegExp("^(?:"+["arity","length","name","arguments","caller","callee","prototype","__isPromisified__"].join("|")+")$"),p=function(t){return o.isIdentifier(t)&&"_"!==t.charAt(0)&&"constructor"!==t};function h(t){return!f.test(t)}function d(t){try{return!0===t.__isPromisified__}catch(t){return!1}}function _(t,e,n){var r=o.getDataPropertyOrDefault(t,e+n,l);return!!r&&d(r)}function v(t,e,n,r){for(var i=o.inheritedDataKeys(t),a=[],s=0;s<i.length;++s){var c=i[s],l=t[c],f=r===p||p(c,l,t);"function"!=typeof l||d(l)||_(t,c,e)||!r(c,l,t,f)||a.push(c,l)}return function(t,e,n){for(var r=0;r<t.length;r+=2){var o=t[r];if(n.test(o))for(var i=o.replace(n,""),a=0;a<t.length;a+=2)if(t[a]===i)throw new u("Cannot promisify an API that has normal methods with '%s'-suffix\n\n See http://goo.gl/MqrFmX\n".replace("%s",e))}}(a,e,n),a}var y=function(t){return t.replace(/([$])/,"\\$")},m=c?void 0:function(t,c,u,l,f,p){var h=function(){return this}(),d=t;function _(){var o=c;c===r&&(o=this);var u=new e(n);u._captureStackTrace();var l="string"==typeof d&&this!==h?this[d]:t,f=i(u,p);try{l.apply(o,a(arguments,f))}catch(t){u._rejectCallback(s(t),!0,!0)}return u._isFateSealed()||u._setAsyncGuaranteed(),u}return"string"==typeof d&&(t=l),o.notEnumerableProp(_,"__isPromisified__",!0),_};function g(t,e,n,i,a){for(var s=new RegExp(y(e)+"$"),c=v(t,e,s,n),u=0,l=c.length;u<l;u+=2){var f=c[u],p=c[u+1],h=f+e;if(i===m)t[h]=m(f,r,f,p,e,a);else{var d=i(p,function(){return m(f,r,f,p,e,a)});o.notEnumerableProp(d,"__isPromisified__",!0),t[h]=d}}return o.toFastProperties(t),t}e.promisify=function(t,e){if("function"!=typeof t)throw new u("expecting a function but got "+o.classString(t));if(d(t))return t;var n=void 0===(e=Object(e)).context?r:e.context,i=!!e.multiArgs,a=function(t,e,n){return m(t,e,void 0,t,null,n)}(t,n,i);return o.copyDescriptors(t,a,h),a},e.promisifyAll=function(t,e){if("function"!=typeof t&&"object"!=typeof t)throw new u("the target of promisifyAll must be an object or a function\n\n See http://goo.gl/MqrFmX\n");var n=!!(e=Object(e)).multiArgs,r=e.suffix;"string"!=typeof r&&(r="Async");var i=e.filter;"function"!=typeof i&&(i=p);var a=e.promisifier;if("function"!=typeof a&&(a=m),!o.isIdentifier(r))throw new RangeError("suffix must be a valid identifier\n\n See http://goo.gl/MqrFmX\n");for(var s=o.inheritedDataKeys(t),c=0;c<s.length;++c){var l=t[s[c]];"constructor"!==s[c]&&o.isClass(l)&&(g(l.prototype,r,i,a,n),g(l,r,i,a,n))}return g(t,r,i,a,n)}}},{"./errors":12,"./nodeback":20,"./util":36}],25:[function(t,e,n){"use strict";e.exports=function(e,n,r,o){var i,a=t("./util"),s=a.isObject,c=t("./es5");"function"==typeof Map&&(i=Map);var u=function(){var t=0,e=0;function n(n,r){this[t]=n,this[t+e]=r,t++}return function(r){e=r.size,t=0;var o=new Array(2*r.size);return r.forEach(n,o),o}}();function l(t){var e,n=!1;if(void 0!==i&&t instanceof i)e=u(t),n=!0;else{var r=c.keys(t),o=r.length;e=new Array(2*o);for(var a=0;a<o;++a){var s=r[a];e[a]=t[s],e[a+o]=s}}this.constructor$(e),this._isMap=n,this._init$(void 0,n?-6:-3)}function f(t){var n,i=r(t);return s(i)?(n=i instanceof e?i._then(e.props,void 0,void 0,void 0,void 0):new l(i).promise(),i instanceof e&&n._propagateFrom(i,2),n):o("cannot await properties of a non-object\n\n See http://goo.gl/MqrFmX\n")}a.inherits(l,n),l.prototype._init=function(){},l.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;if(n>=this._length){var r;if(this._isMap)r=function(t){for(var e=new i,n=t.length/2|0,r=0;r<n;++r){var o=t[n+r],a=t[r];e.set(o,a)}return e}(this._values);else{r={};for(var o=this.length(),a=0,s=this.length();a<s;++a)r[this._values[a+o]]=this._values[a]}return this._resolve(r),!0}return!1},l.prototype.shouldCopyValues=function(){return!1},l.prototype.getActualLength=function(t){return t>>1},e.prototype.props=function(){return f(this)},e.props=function(t){return f(t)}}},{"./es5":13,"./util":36}],26:[function(t,e,n){"use strict";function r(t){this._capacity=t,this._length=0,this._front=0}r.prototype._willBeOverCapacity=function(t){return this._capacity<t},r.prototype._pushOne=function(t){var e=this.length();this._checkCapacity(e+1);var n=this._front+e&this._capacity-1;this[n]=t,this._length=e+1},r.prototype.push=function(t,e,n){var r=this.length()+3;if(this._willBeOverCapacity(r))return this._pushOne(t),this._pushOne(e),void this._pushOne(n);var o=this._front+r-3;this._checkCapacity(r);var i=this._capacity-1;this[o+0&i]=t,this[o+1&i]=e,this[o+2&i]=n,this._length=r},r.prototype.shift=function(){var t=this._front,e=this[t];return this[t]=void 0,this._front=t+1&this._capacity-1,this._length--,e},r.prototype.length=function(){return this._length},r.prototype._checkCapacity=function(t){this._capacity<t&&this._resizeTo(this._capacity<<1)},r.prototype._resizeTo=function(t){var e=this._capacity;this._capacity=t;var n=this._front,r=this._length,o=n+r&e-1;!function(t,e,n,r,o){for(var i=0;i<o;++i)n[i+r]=t[i+e],t[i+e]=void 0}(this,0,this,e,o)},e.exports=r},{}],27:[function(t,e,n){"use strict";e.exports=function(e,n,r,o){var i=t("./util"),a=function(t){return t.then(function(e){return s(e,t)})};function s(t,s){var c=r(t);if(c instanceof e)return a(c);if(null===(t=i.asArray(t)))return o("expecting an array or an iterable object but got "+i.classString(t));var u=new e(n);void 0!==s&&u._propagateFrom(s,3);for(var l=u._fulfill,f=u._reject,p=0,h=t.length;p<h;++p){var d=t[p];(void 0!==d||p in t)&&e.cast(d)._then(l,f,void 0,u,null)}return u}e.race=function(t){return s(t,void 0)},e.prototype.race=function(){return s(this,void 0)}}},{"./util":36}],28:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i,a){var s=e._getDomain,c=t("./util"),u=c.tryCatch;function l(t,n,r,o){this.constructor$(t);var a=s();this._fn=null===a?n:c.domainBind(a,n),void 0!==r&&(r=e.resolve(r))._attachCancellationCallback(this),this._initialValue=r,this._currentCancellable=null,this._eachValues=o===i?Array(this._length):0===o?null:void 0,this._promise._captureStackTrace(),this._init$(void 0,-5)}function f(t,e){this.isFulfilled()?e._resolve(t):e._reject(t)}function p(t,e,n,o){if("function"!=typeof e)return r("expecting a function but got "+c.classString(e));var i=new l(t,e,n,o);return i.promise()}function h(t){this.accum=t,this.array._gotAccum(t);var n=o(this.value,this.array._promise);return n instanceof e?(this.array._currentCancellable=n,n._then(d,void 0,void 0,this,void 0)):d.call(this,n)}function d(t){var n,r=this.array,o=r._promise,i=u(r._fn);o._pushContext(),(n=void 0!==r._eachValues?i.call(o._boundValue(),t,this.index,this.length):i.call(o._boundValue(),this.accum,t,this.index,this.length))instanceof e&&(r._currentCancellable=n);var s=o._popContext();return a.checkForgottenReturns(n,s,void 0!==r._eachValues?"Promise.each":"Promise.reduce",o),n}c.inherits(l,n),l.prototype._gotAccum=function(t){void 0!==this._eachValues&&null!==this._eachValues&&t!==i&&this._eachValues.push(t)},l.prototype._eachComplete=function(t){return null!==this._eachValues&&this._eachValues.push(t),this._eachValues},l.prototype._init=function(){},l.prototype._resolveEmptyArray=function(){this._resolve(void 0!==this._eachValues?this._eachValues:this._initialValue)},l.prototype.shouldCopyValues=function(){return!1},l.prototype._resolve=function(t){this._promise._resolveCallback(t),this._values=null},l.prototype._resultCancelled=function(t){if(t===this._initialValue)return this._cancel();this._isResolved()||(this._resultCancelled$(),this._currentCancellable instanceof e&&this._currentCancellable.cancel(),this._initialValue instanceof e&&this._initialValue.cancel())},l.prototype._iterate=function(t){var n,r;this._values=t;var o=t.length;if(void 0!==this._initialValue?(n=this._initialValue,r=0):(n=e.resolve(t[0]),r=1),this._currentCancellable=n,!n.isRejected())for(;r<o;++r){var i={accum:null,value:t[r],index:r,length:o,array:this};n=n._then(h,void 0,void 0,i,void 0)}void 0!==this._eachValues&&(n=n._then(this._eachComplete,void 0,void 0,this,void 0)),n._then(f,f,void 0,n,this)},e.prototype.reduce=function(t,e){return p(this,t,e,null)},e.reduce=function(t,e,n,r){return p(t,e,n,r)}}},{"./util":36}],29:[function(t,o,i){"use strict";var a,s=t("./util"),c=s.getNativePromise();if(s.isNode&&"undefined"==typeof MutationObserver){var u=n.setImmediate,l=e.nextTick;a=s.isRecentNode?function(t){u.call(n,t)}:function(t){l.call(e,t)}}else if("function"==typeof c&&"function"==typeof c.resolve){var f=c.resolve();a=function(t){f.then(t)}}else a="undefined"==typeof MutationObserver||"undefined"!=typeof window&&window.navigator&&(window.navigator.standalone||window.cordova)?void 0!==r?function(t){r(t)}:"undefined"!=typeof setTimeout?function(t){setTimeout(t,0)}:function(){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}:function(){var t=document.createElement("div"),e={attributes:!0},n=!1,r=document.createElement("div"),o=new MutationObserver(function(){t.classList.toggle("foo"),n=!1});return o.observe(r,e),function(o){var i=new MutationObserver(function(){i.disconnect(),o()});i.observe(t,e),n||(n=!0,r.classList.toggle("foo"))}}();o.exports=a},{"./util":36}],30:[function(t,e,n){"use strict";e.exports=function(e,n,r){var o=e.PromiseInspection,i=t("./util");function a(t){this.constructor$(t)}i.inherits(a,n),a.prototype._promiseResolved=function(t,e){this._values[t]=e;var n=++this._totalResolved;return n>=this._length&&(this._resolve(this._values),!0)},a.prototype._promiseFulfilled=function(t,e){var n=new o;return n._bitField=33554432,n._settledValueField=t,this._promiseResolved(e,n)},a.prototype._promiseRejected=function(t,e){var n=new o;return n._bitField=16777216,n._settledValueField=t,this._promiseResolved(e,n)},e.settle=function(t){return r.deprecated(".settle()",".reflect()"),new a(t).promise()},e.prototype.settle=function(){return e.settle(this)}}},{"./util":36}],31:[function(t,e,n){"use strict";e.exports=function(e,n,r){var o=t("./util"),i=t("./errors").RangeError,a=t("./errors").AggregateError,s=o.isArray,c={};function u(t){this.constructor$(t),this._howMany=0,this._unwrap=!1,this._initialized=!1}function l(t,e){if((0|e)!==e||e<0)return r("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var n=new u(t),o=n.promise();return n.setHowMany(e),n.init(),o}o.inherits(u,n),u.prototype._init=function(){if(this._initialized)if(0!==this._howMany){this._init$(void 0,-5);var t=s(this._values);!this._isResolved()&&t&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}else this._resolve([])},u.prototype.init=function(){this._initialized=!0,this._init()},u.prototype.setUnwrap=function(){this._unwrap=!0},u.prototype.howMany=function(){return this._howMany},u.prototype.setHowMany=function(t){this._howMany=t},u.prototype._promiseFulfilled=function(t){return this._addFulfilled(t),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},u.prototype._promiseRejected=function(t){return this._addRejected(t),this._checkOutcome()},u.prototype._promiseCancelled=function(){return this._values instanceof e||null==this._values?this._cancel():(this._addRejected(c),this._checkOutcome())},u.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var t=new a,e=this.length();e<this._values.length;++e)this._values[e]!==c&&t.push(this._values[e]);return t.length>0?this._reject(t):this._cancel(),!0}return!1},u.prototype._fulfilled=function(){return this._totalResolved},u.prototype._rejected=function(){return this._values.length-this.length()},u.prototype._addRejected=function(t){this._values.push(t)},u.prototype._addFulfilled=function(t){this._values[this._totalResolved++]=t},u.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},u.prototype._getRangeError=function(t){var e="Input array must contain at least "+this._howMany+" items but contains only "+t+" items";return new i(e)},u.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},e.some=function(t,e){return l(t,e)},e.prototype.some=function(t){return l(this,t)},e._SomePromiseArray=u}},{"./errors":12,"./util":36}],32:[function(t,e,n){"use strict";e.exports=function(t){function e(t){void 0!==t?(t=t._target(),this._bitField=t._bitField,this._settledValueField=t._isFateSealed()?t._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}e.prototype._settledValue=function(){return this._settledValueField};var n=e.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},r=e.prototype.error=e.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},o=e.prototype.isFulfilled=function(){return 0!=(33554432&this._bitField)},i=e.prototype.isRejected=function(){return 0!=(16777216&this._bitField)},a=e.prototype.isPending=function(){return 0==(50397184&this._bitField)},s=e.prototype.isResolved=function(){return 0!=(50331648&this._bitField)};e.prototype.isCancelled=function(){return 0!=(8454144&this._bitField)},t.prototype.__isCancelled=function(){return 65536==(65536&this._bitField)},t.prototype._isCancelled=function(){return this._target().__isCancelled()},t.prototype.isCancelled=function(){return 0!=(8454144&this._target()._bitField)},t.prototype.isPending=function(){return a.call(this._target())},t.prototype.isRejected=function(){return i.call(this._target())},t.prototype.isFulfilled=function(){return o.call(this._target())},t.prototype.isResolved=function(){return s.call(this._target())},t.prototype.value=function(){return n.call(this._target())},t.prototype.reason=function(){var t=this._target();return t._unsetRejectionIsUnhandled(),r.call(t)},t.prototype._value=function(){return this._settledValue()},t.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},t.PromiseInspection=e}},{}],33:[function(t,e,n){"use strict";e.exports=function(e,n){var r=t("./util"),o=r.errorObj,i=r.isObject,a={}.hasOwnProperty;return function(t,s){if(i(t)){if(t instanceof e)return t;var c=function(t){try{return function(t){return t.then}(t)}catch(t){return o.e=t,o}}(t);if(c===o){s&&s._pushContext();var u=e.reject(c.e);return s&&s._popContext(),u}if("function"==typeof c){if(function(t){try{return a.call(t,"_promise0")}catch(t){return!1}}(t)){var u=new e(n);return t._then(u._fulfill,u._reject,void 0,u,null),u}return function(t,i,a){var s=new e(n),c=s;a&&a._pushContext(),s._captureStackTrace(),a&&a._popContext();var u=!0,l=r.tryCatch(i).call(t,function(t){s&&(s._resolveCallback(t),s=null)},function(t){s&&(s._rejectCallback(t,u,!0),s=null)});return u=!1,s&&l===o&&(s._rejectCallback(l.e,!0,!0),s=null),c}(t,c,s)}}return t}}},{"./util":36}],34:[function(t,e,n){"use strict";e.exports=function(e,n,r){var o=t("./util"),i=e.TimeoutError;function a(t){this.handle=t}a.prototype._resultCancelled=function(){clearTimeout(this.handle)};var s=function(t){return c(+this).thenReturn(t)},c=e.delay=function(t,o){var i,c;return void 0!==o?(i=e.resolve(o)._then(s,null,null,t,void 0),r.cancellation()&&o instanceof e&&i._setOnCancel(o)):(i=new e(n),c=setTimeout(function(){i._fulfill()},+t),r.cancellation()&&i._setOnCancel(new a(c)),i._captureStackTrace()),i._setAsyncGuaranteed(),i};function u(t){return clearTimeout(this.handle),t}function l(t){throw clearTimeout(this.handle),t}e.prototype.delay=function(t){return c(t,this)},e.prototype.timeout=function(t,e){var n,s;t=+t;var c=new a(setTimeout(function(){n.isPending()&&function(t,e,n){var r;r="string"!=typeof e?e instanceof Error?e:new i("operation timed out"):new i(e),o.markAsOriginatingFromRejection(r),t._attachExtraTrace(r),t._reject(r),null!=n&&n.cancel()}(n,e,s)},t));return r.cancellation()?(s=this.then(),(n=s._then(u,l,void 0,c,void 0))._setOnCancel(c)):n=this._then(u,l,void 0,c,void 0),n}}},{"./util":36}],35:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i,a){var s=t("./util"),c=t("./errors").TypeError,u=t("./util").inherits,l=s.errorObj,f=s.tryCatch,p={};function h(t){setTimeout(function(){throw t},0)}function d(t,n){var o=0,a=t.length,s=new e(i);return function i(){if(o>=a)return s._fulfill();var c=function(t){var e=r(t);return e!==t&&"function"==typeof t._isDisposable&&"function"==typeof t._getDisposer&&t._isDisposable()&&e._setDisposable(t._getDisposer()),e}(t[o++]);if(c instanceof e&&c._isDisposable()){try{c=r(c._getDisposer().tryDispose(n),t.promise)}catch(t){return h(t)}if(c instanceof e)return c._then(i,h,null,null,null)}i()}(),s}function _(t,e,n){this._data=t,this._promise=e,this._context=n}function v(t,e,n){this.constructor$(t,e,n)}function y(t){return _.isDisposer(t)?(this.resources[this.index]._setDisposable(t),t.promise()):t}function m(t){this.length=t,this.promise=null,this[t-1]=null}_.prototype.data=function(){return this._data},_.prototype.promise=function(){return this._promise},_.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():p},_.prototype.tryDispose=function(t){var e=this.resource(),n=this._context;void 0!==n&&n._pushContext();var r=e!==p?this.doDispose(e,t):null;return void 0!==n&&n._popContext(),this._promise._unsetDisposable(),this._data=null,r},_.isDisposer=function(t){return null!=t&&"function"==typeof t.resource&&"function"==typeof t.tryDispose},u(v,_),v.prototype.doDispose=function(t,e){var n=this.data();return n.call(t,t,e)},m.prototype._resultCancelled=function(){for(var t=this.length,n=0;n<t;++n){var r=this[n];r instanceof e&&r.cancel()}},e.using=function(){var t=arguments.length;if(t<2)return n("you must pass at least 2 arguments to Promise.using");var o,i=arguments[t-1];if("function"!=typeof i)return n("expecting a function but got "+s.classString(i));var c=!0;2===t&&Array.isArray(arguments[0])?(o=arguments[0],t=o.length,c=!1):(o=arguments,t--);for(var u=new m(t),p=0;p<t;++p){var h=o[p];if(_.isDisposer(h)){var v=h;(h=h.promise())._setDisposable(v)}else{var g=r(h);g instanceof e&&(h=g._then(y,null,null,{resources:u,index:p},void 0))}u[p]=h}for(var b=new Array(u.length),p=0;p<b.length;++p)b[p]=e.resolve(u[p]).reflect();var w=e.all(b).then(function(t){for(var e=0;e<t.length;++e){var n=t[e];if(n.isRejected())return l.e=n.error(),l;if(!n.isFulfilled())return void w.cancel();t[e]=n.value()}x._pushContext(),i=f(i);var r=c?i.apply(void 0,t):i(t),o=x._popContext();return a.checkForgottenReturns(r,o,"Promise.using",x),r}),x=w.lastly(function(){var t=new e.PromiseInspection(w);return d(u,t)});return u.promise=x,x._setOnCancel(u),x},e.prototype._setDisposable=function(t){this._bitField=131072|this._bitField,this._disposer=t},e.prototype._isDisposable=function(){return(131072&this._bitField)>0},e.prototype._getDisposer=function(){return this._disposer},e.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},e.prototype.disposer=function(t){if("function"==typeof t)return new v(t,this,o());throw new c}}},{"./errors":12,"./util":36}],36:[function(t,r,o){"use strict";var i=t("./es5"),a="undefined"==typeof navigator,s={e:{}},c,u="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n?n:void 0!==this?this:null;function l(){try{var t=c;return c=null,t.apply(this,arguments)}catch(t){return s.e=t,s}}function f(t){return c=t,l}var p=function(t,e){var n={}.hasOwnProperty;function r(){for(var r in this.constructor=t,this.constructor$=e,e.prototype)n.call(e.prototype,r)&&"$"!==r.charAt(r.length-1)&&(this[r+"$"]=e.prototype[r])}return r.prototype=e.prototype,t.prototype=new r,t.prototype};function h(t){return null==t||!0===t||!1===t||"string"==typeof t||"number"==typeof t}function d(t){return"function"==typeof t||"object"==typeof t&&null!==t}function _(t){return h(t)?new Error(O(t)):t}function v(t,e){var n,r=t.length,o=new Array(r+1);for(n=0;n<r;++n)o[n]=t[n];return o[n]=e,o}function y(t,e,n){if(!i.isES5)return{}.hasOwnProperty.call(t,e)?t[e]:void 0;var r=Object.getOwnPropertyDescriptor(t,e);return null!=r?null==r.get&&null==r.set?r.value:n:void 0}function m(t,e,n){if(h(t))return t;var r={value:n,configurable:!0,enumerable:!1,writable:!0};return i.defineProperty(t,e,r),t}function g(t){throw t}var b=function(){var t=[Array.prototype,Object.prototype,Function.prototype],e=function(e){for(var n=0;n<t.length;++n)if(t[n]===e)return!0;return!1};if(i.isES5){var n=Object.getOwnPropertyNames;return function(t){for(var r=[],o=Object.create(null);null!=t&&!e(t);){var a;try{a=n(t)}catch(t){return r}for(var s=0;s<a.length;++s){var c=a[s];if(!o[c]){o[c]=!0;var u=Object.getOwnPropertyDescriptor(t,c);null!=u&&null==u.get&&null==u.set&&r.push(c)}}t=i.getPrototypeOf(t)}return r}}var r={}.hasOwnProperty;return function(n){if(e(n))return[];var o=[];t:for(var i in n)if(r.call(n,i))o.push(i);else{for(var a=0;a<t.length;++a)if(r.call(t[a],i))continue t;o.push(i)}return o}}(),w=/this\s*\.\s*\S+\s*=/;function x(t){try{if("function"==typeof t){var e=i.names(t.prototype),n=i.isES5&&e.length>1,r=e.length>0&&!(1===e.length&&"constructor"===e[0]),o=w.test(t+"")&&i.names(t).length>0;if(n||r||o)return!0}return!1}catch(t){return!1}}function j(t){function e(){}e.prototype=t;var n=new e;function r(){return typeof n.foo}return r(),r(),t}var k=/^[a-z$_][a-z$_0-9]*$/i;function E(t){return k.test(t)}function C(t,e,n){for(var r=new Array(t),o=0;o<t;++o)r[o]=e+o+n;return r}function O(t){try{return t+""}catch(t){return"[no string representation]"}}function S(t){return t instanceof Error||null!==t&&"object"==typeof t&&"string"==typeof t.message&&"string"==typeof t.name}function T(t){try{m(t,"isOperational",!0)}catch(t){}}function F(t){return null!=t&&(t instanceof Error.__BluebirdErrorTypes__.OperationalError||!0===t.isOperational)}function P(t){return S(t)&&i.propertyIsWritable(t,"stack")}var R="stack"in new Error?function(t){return P(t)?t:new Error(O(t))}:function(t){if(P(t))return t;try{throw new Error(O(t))}catch(t){return t}};function A(t){return{}.toString.call(t)}function D(t,e,n){for(var r=i.names(t),o=0;o<r.length;++o){var a=r[o];if(n(a))try{i.defineProperty(e,a,i.getDescriptor(t,a))}catch(t){}}}var L=function(t){return i.isArray(t)?t:null};if("undefined"!=typeof Symbol&&Symbol.iterator){var I="function"==typeof Array.from?function(t){return Array.from(t)}:function(t){for(var e,n=[],r=t[Symbol.iterator]();!(e=r.next()).done;)n.push(e.value);return n};L=function(t){return i.isArray(t)?t:null!=t&&"function"==typeof t[Symbol.iterator]?I(t):null}}var M=void 0!==e&&"[object process]"===A(e).toLowerCase(),N=void 0!==e&&!0;function B(t){return N?Object({NODE_ENV:"production"})[t]:void 0}function V(){if("function"==typeof Promise)try{var t=new Promise(function(){});if("[object Promise]"==={}.toString.call(t))return Promise}catch(t){}}function U(t,e){return t.bind(e)}var H={isClass:x,isIdentifier:E,inheritedDataKeys:b,getDataPropertyOrDefault:y,thrower:g,isArray:i.isArray,asArray:L,notEnumerableProp:m,isPrimitive:h,isObject:d,isError:S,canEvaluate:a,errorObj:s,tryCatch:f,inherits:p,withAppended:v,maybeWrapAsError:_,toFastProperties:j,filledRange:C,toString:O,canAttachTrace:P,ensureErrorObject:R,originatesFromRejection:F,markAsOriginatingFromRejection:T,classString:A,copyDescriptors:D,hasDevTools:"undefined"!=typeof chrome&&chrome&&"function"==typeof chrome.loadTimes,isNode:M,hasEnvVariables:N,env:B,global:u,getNativePromise:V,domainBind:U};H.isRecentNode=H.isNode&&function(){var t=e.versions.node.split(".").map(Number);return 0===t[0]&&t[1]>10||t[0]>0}(),H.isNode&&H.toFastProperties(e);try{throw new Error}catch(t){H.lastLineError=t}r.exports=H},{"./es5":13}]},{},[4])(4)}(),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)}).call(this,n(54),n(15),n(187).setImmediate)},94:function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},95:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},96:function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}}}); -//# sourceMappingURL=indexeddb-worker.js.map \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/indexeddb-worker.js.map b/riot/bundles/f5c70ee9a294f6e4590e/indexeddb-worker.js.map deleted file mode 100644 index 6288eaf..0000000 --- a/riot/bundles/f5c70ee9a294f6e4590e/indexeddb-worker.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack/bootstrap","node_modules/core-js/library/modules/_to-integer.js","node_modules/core-js/library/modules/_defined.js","node_modules/core-js/library/modules/web.dom.iterable.js","node_modules/core-js/library/modules/_to-primitive.js","node_modules/core-js/library/modules/_object-create.js","node_modules/core-js/library/modules/_to-length.js","node_modules/core-js/library/modules/_shared-key.js","node_modules/core-js/library/modules/_shared.js","node_modules/core-js/library/modules/_enum-bug-keys.js","node_modules/core-js/library/modules/_set-to-string-tag.js","node_modules/core-js/library/modules/_object-pie.js","node_modules/core-js/library/modules/_library.js","node_modules/core-js/library/modules/_dom-create.js","node_modules/core-js/library/modules/_meta.js","node_modules/babel-runtime/core-js/object/keys.js","node_modules/babel-runtime/helpers/slicedToArray.js","(webpack)/buildin/global.js","node_modules/core-js/library/modules/_ie8-dom-define.js","node_modules/core-js/library/modules/_object-keys-internal.js","node_modules/core-js/library/modules/_iobject.js","node_modules/core-js/library/modules/_classof.js","node_modules/core-js/library/modules/_wks-ext.js","node_modules/core-js/library/modules/_wks-define.js","node_modules/core-js/library/modules/_core.js","node_modules/core-js/library/modules/_iter-define.js","node_modules/core-js/library/modules/core.get-iterator-method.js","node_modules/timers-browserify/main.js","src/vector/indexeddb-worker.js","node_modules/matrix-js-sdk/lib/indexeddb-worker.js","node_modules/matrix-js-sdk/lib/store/indexeddb-store-worker.js","node_modules/core-js/library/modules/_object-gops.js","node_modules/babel-runtime/regenerator/index.js","node_modules/babel-runtime/core-js/get-iterator.js","node_modules/babel-runtime/core-js/array/from.js","node_modules/core-js/library/modules/_redefine.js","node_modules/core-js/library/modules/_array-includes.js","node_modules/core-js/library/modules/_to-absolute-index.js","node_modules/core-js/library/modules/_object-gpo.js","node_modules/babel-runtime/node_modules/regenerator-runtime/runtime-module.js","node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js","node_modules/setimmediate/setImmediate.js","node_modules/core-js/library/fn/object/keys.js","node_modules/core-js/library/modules/es6.object.keys.js","node_modules/babel-runtime/core-js/object/define-property.js","node_modules/core-js/library/modules/_object-gopd.js","node_modules/core-js/library/modules/_object-gopn.js","node_modules/core-js/library/modules/_export.js","node_modules/core-js/library/modules/_object-dps.js","node_modules/core-js/library/modules/_html.js","node_modules/core-js/library/modules/_iter-call.js","node_modules/core-js/library/modules/_is-array-iter.js","node_modules/core-js/library/modules/_iter-detect.js","node_modules/core-js/library/modules/_object-gopn-ext.js","node_modules/core-js/library/modules/_iter-step.js","node_modules/core-js/library/modules/_is-array.js","node_modules/matrix-js-sdk/lib/sync-accumulator.js","node_modules/matrix-js-sdk/lib/utils.js","node_modules/babel-runtime/core-js/json/stringify.js","node_modules/core-js/library/modules/_global.js","node_modules/core-js/library/modules/_is-object.js","node_modules/core-js/library/fn/array/from.js","node_modules/core-js/library/modules/_string-at.js","node_modules/core-js/library/modules/_iter-create.js","node_modules/core-js/library/modules/es6.array.from.js","node_modules/core-js/library/modules/_create-property.js","node_modules/core-js/library/fn/object/create.js","node_modules/core-js/library/modules/es6.object.create.js","node_modules/core-js/library/fn/object/define-property.js","node_modules/core-js/library/modules/es6.object.define-property.js","node_modules/babel-runtime/core-js/symbol/iterator.js","node_modules/core-js/library/fn/symbol/iterator.js","node_modules/core-js/library/modules/es6.array.iterator.js","node_modules/core-js/library/modules/_add-to-unscopables.js","node_modules/babel-runtime/core-js/symbol.js","node_modules/core-js/library/fn/symbol/index.js","node_modules/core-js/library/modules/es6.symbol.js","node_modules/core-js/library/modules/_enum-keys.js","node_modules/core-js/library/modules/es7.symbol.async-iterator.js","node_modules/core-js/library/modules/es7.symbol.observable.js","node_modules/core-js/library/modules/_wks.js","node_modules/core-js/library/fn/json/stringify.js","node_modules/core-js/library/fn/get-iterator.js","node_modules/core-js/library/modules/core.get-iterator.js","node_modules/babel-runtime/core-js/is-iterable.js","node_modules/core-js/library/fn/is-iterable.js","node_modules/core-js/library/modules/core.is-iterable.js","node_modules/matrix-js-sdk/lib/store/indexeddb-local-backend.js","node_modules/babel-runtime/helpers/classCallCheck.js","node_modules/core-js/library/modules/_descriptors.js","node_modules/core-js/library/modules/_object-dp.js","node_modules/babel-runtime/helpers/createClass.js","node_modules/babel-runtime/helpers/toConsumableArray.js","node_modules/core-js/library/modules/_an-object.js","node_modules/process/browser.js","node_modules/core-js/library/modules/_fails.js","node_modules/core-js/library/modules/_to-iobject.js","node_modules/core-js/library/modules/_hide.js","node_modules/core-js/library/modules/_has.js","node_modules/babel-runtime/helpers/typeof.js","node_modules/core-js/library/modules/_ctx.js","node_modules/babel-runtime/core-js/object/create.js","node_modules/core-js/library/modules/_object-sap.js","node_modules/core-js/library/modules/_property-desc.js","node_modules/core-js/library/modules/_iterators.js","node_modules/core-js/library/modules/_object-keys.js","node_modules/core-js/library/modules/es6.string.iterator.js","node_modules/core-js/library/modules/_to-object.js","node_modules/bluebird/js/browser/bluebird.js","node_modules/core-js/library/modules/_a-function.js","node_modules/core-js/library/modules/_cof.js","node_modules/core-js/library/modules/_uid.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","ceil","Math","floor","it","isNaN","undefined","TypeError","global","hide","Iterators","TO_STRING_TAG","DOMIterables","split","length","NAME","Collection","proto","Array","isObject","S","fn","val","toString","valueOf","anObject","dPs","enumBugKeys","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","appendChild","src","contentWindow","document","open","write","lt","close","F","O","Properties","result","toInteger","min","shared","uid","store","def","f","has","TAG","tag","stat","configurable","propertyIsEnumerable","is","createElement","META","setDesc","id","isExtensible","FREEZE","preventExtensions","setMeta","w","meta","KEY","NEED","fastKey","getWeak","onFreeze","default","_isIterable3","_interopRequireDefault","_getIterator3","obj","arr","isArray","_arr","_n","_d","_e","_s","_i","next","done","push","err","sliceIterator","g","this","Function","eval","e","window","a","toIObject","arrayIndexOf","names","cof","ARG","arguments","T","B","tryGet","callee","core","LIBRARY","wksExt","$Symbol","charAt","version","__e","$export","redefine","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","keys","returnThis","Base","Constructor","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","values","P","classof","getIteratorMethod","scope","self","apply","Timeout","clearFn","_id","_clearFn","setTimeout","clearTimeout","setInterval","clearInterval","timeout","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","setImmediate","clearImmediate","remoteWorker","IndexedDBStoreWorker","postMessage","onmessage","onMessage","_toConsumableArray3","_classCallCheck3","_createClass3","_bluebird2","_indexeddbLocalBackend2","backend","ev","_backend","_backend2","_this","msg","data","prom","command","indexedDB","args","resolve","connect","isNewlyCreated","clearDatabase","then","getSavedSync","setSyncData","syncToDatabase","getUserPresenceEvents","getNextBatchToken","getOutOfBandMembers","clearOutOfBandMembers","setOutOfBandMembers","getClientOptions","storeClientOptions","ret","seq","console","error","message","getOwnPropertySymbols","toLength","toAbsoluteIndex","IS_INCLUDES","$this","el","fromIndex","index","max","toObject","ObjectProto","constructor","hadRuntime","regeneratorRuntime","getOwnPropertyNames","indexOf","oldRuntime","Op","hasOwn","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","inModule","runtime","wrap","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","getProto","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","arg","__await","defineIteratorMethods","AsyncIterator","async","innerFn","outerFn","tryLocsList","iter","reverse","pop","Context","reset","skipTempReset","prev","sent","_sent","delegate","method","tryEntries","forEach","resetTryEntry","slice","stop","rootRecord","completion","type","rval","dispatchException","exception","context","handle","loc","caught","record","entry","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","Error","abrupt","finallyEntry","complete","afterLoc","finish","catch","thrown","delegateYield","iterable","resultName","nextLoc","protoGenerator","generator","_invoke","state","doneResult","delegateResult","maybeInvokeDelegate","tryCatch","makeInvokeMethod","previousPromise","callInvokeWithMethodAndArg","Promise","reject","invoke","unwrapped","return","info","pushTryEntry","locs","iteratorMethod","process","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","nextTick","runIfPresent","importScripts","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","messagePrefix","random","onGlobalMessage","event","source","addEventListener","attachEvent","installPostMessageImplementation","MessageChannel","channel","port1","port2","installMessageChannelImplementation","html","documentElement","script","onreadystatechange","removeChild","installReadyStateChangeImplementation","callback","task","run","$keys","pIE","createDesc","toPrimitive","IE8_DOM_DEFINE","gOPD","getOwnPropertyDescriptor","hiddenKeys","concat","ctx","own","out","IS_FORCED","IS_GLOBAL","G","IS_STATIC","IS_PROTO","IS_BIND","IS_WRAP","W","expProto","target","C","b","virtual","R","U","dP","getKeys","defineProperties","ArrayProto","SAFE_CLOSING","riter","from","exec","skipClosing","safe","gOPN","windowNames","getWindowNames","_create2","_keys2","_utils2","SyncAccumulator","opts","maxTimelineEntries","accountData","inviteRooms","joinRooms","nextBatch","groups","invite","join","leave","syncResponse","_accumulateRooms","_accumulateGroups","_accumulateAccountData","next_batch","account_data","events","_this2","rooms","roomId","_accumulateRoom","category","_accumulateInviteState","_accumulateJoinState","invite_state","currentData","hasAdded","current","state_key","_currentState","_timeline","_accountData","_unreadNotifications","_summary","_readReceipts","unread_notifications","summary","acc","sum","ephemeral","content","eventId","userId","timeline","limited","setState","token","prev_batch","_this3","groupId","_accumulateGroup","cat","_this4","roomData","roomJson","evType","receiptEvent","room_id","receiptData","m.read","msgData","rollBackState","timelineEvent","prevStateEvent","deepCopy","unsigned","prev_content","prev_sender","sender","stateKey","accData","roomsData","groupsData","eventMap","_typeof3","_stringify2","encodeParams","params","qs","encodeURIComponent","substring","encodeUri","pathTemplate","variables","replace","map","array","results","filter","findElement","removeElement","removed","splice","isFunction","Boolean","checkObjectHasKeys","checkObjectHasNoAdditionalKeys","allowedKeys","JSON","parse","deepCompare","x","y","RegExp","Date","extend","propName","runPolyfills","fun","len","res","thisArg","k","A","kValue","mappedValue","inherits","superCtor","Temp","prop","super_","writable","isNumber","isFinite","removeHiddenChars","str","normalize","removeHiddenCharsRegex","__g","defined","TO_STRING","that","pos","String","charCodeAt","descriptor","isArrayIter","createProperty","getIterFn","arrayLike","step","aLen","mapfn","mapping","iterFn","$defineProperty","$Object","D","desc","addToUnscopables","iterated","_t","_k","Arguments","DESCRIPTORS","$fails","wks","wksDefine","enumKeys","_create","gOPNExt","$GOPD","$DP","$JSON","_stringify","stringify","HIDDEN","TO_PRIMITIVE","isEnum","SymbolRegistry","AllSymbols","OPSymbols","USE_NATIVE","QObject","setter","findChild","setSymbolDesc","protoDesc","sym","isSymbol","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","set","es6Symbols","j","wellKnownSymbols","for","keyFor","useSetter","useSimple","replacer","$replacer","gOPS","getSymbols","symbols","USE_SYMBOL","getIterator","isIterable","_regenerator2","_bluebird","_slicedToArray3","_syncAccumulator2","selectQuery","keyRange","resultMapper","query","openCursor","onerror","errorCode","onsuccess","cursor","continue","txnAsPromise","txn","oncomplete","reqAsEventPromise","req","reqAsPromise","reqAsCursorPromise","LocalIndexedDBStoreBackend","indexedDBInterface","dbName","_dbName","db","_disconnected","_syncAccumulator","_isNewlyCreated","log","onupgradeneeded","oldVersion","createObjectStore","keyPath","createDatabase","createIndex","upgradeSchemaV2","upgradeSchemaV3","onblocked","onversionchange","_init","all","_loadAccountData","_loadSyncData","_ref","_ref2","syncData","accumulate","roomIndex","transaction","objectStore","range","IDBKeyRange","only","request","membershipEvents","oobWritten","oob_written","_ref3","coroutine","_callee","tx","markerObject","_context","put","_x","_x2","_ref4","_callee2","readTx","roomRange","minStateKeyProm","maxStateKeyProm","_ref5","_ref6","minStateKey","maxStateKey","writeTx","writeStore","membersKeyRange","_context2","openKeyCursor","primaryKey","bound","delete","_x3","deleteDatabase","warn","copy","getJSON","_this5","userTuples","_persistUserPresenceEvents","_persistAccountData","_persistSyncData","_this6","try","clobber","_this7","tuples","_this8","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","tuple","_this9","_this10","_this11","_this12","options","_ref7","_callee3","_context3","_x4","instance","Attributes","_defineProperty2","props","protoProps","staticProps","_from2","arr2","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","noop","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","IObject","_iterator2","_symbol2","_typeof","aFunction","fails","exp","bitmap","$at","point","define","u","_dereq_","code","1","SomePromiseArray","_SomePromiseArray","any","promises","promise","setHowMany","setUnwrap","init","2","firstLineError","schedule","Queue","util","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","_trampolineEnabled","drainQueues","_drainQueues","_schedule","AsyncInvokeLater","receiver","_queueTick","AsyncInvoke","AsyncSettlePromises","_pushOne","_drainQueue","_drainQueueStep","shift","_settlePromises","setScheduler","hasCustomScheduler","enableTrampoline","disableTrampolineIfNecessary","hasDevTools","haveItemsQueued","fatalError","isNode","stderr","stack","exit","throwLater","invokeLater","settlePromises","_reset","./queue","./schedule","./util","3","INTERNAL","tryConvertToPromise","debug","calledBind","rejectThis","_","_reject","targetRejected","promiseRejectionQueued","bindingPromise","_then","bindingResolved","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","4","old","bluebird","noConflict","./promise","5","cr","callerCache","getterCache","canEvaluate","caller","methodName","classString","ensureMethod","namedGetter","indexedGetter","isIdentifier","propertyName","isIndex","maybeGetter","getGetter","6","PromiseArray","apiRejection","errorObj","_async","cancel","cancellation","_warn","child","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","parent","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","7","NEXT_FILTER","instances","cb","boundTo","predicateLoop","matchesPredicate","./es5","8","longStackTraces","contextStack","_trace","CapturedTrace","peekContext","lastIndex","_promiseCreated","_pushContext","_popContext","_peekContext","trace","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","9","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","getDomain","_getDomain","Warning","es5","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","warnings","wForgottenReturn","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejection","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","reason","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","onPossiblyUnhandledRejection","domain","domainBind","onUnhandledRejectionHandled","disableLongStackTraces","config","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","Promise_dereferenceTrace","_dereferenceTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","longStackTracesDereferenceTrace","hasLongStackTraces","fireDomEvent","CustomEvent","dispatchEvent","eventData","detail","cancelable","domEvent","toLowerCase","Event","createEvent","initCustomEvent","fireGlobalEvent","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","warning","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","flags","branchesRemainingToCancel","warningsOption","_clearCancellationData","_execute","monitoring","_fireEvent","handler","isFulfilled","ignoreSelf","_parent","attachExtraTrace","__stackCleaned__","parsed","parseStackAndMessage","notEnumerableProp","formatAndLogError","cleanStack","line","isTraceLine","test","isInternalFrame","shouldIgnore","stackFramesAsArray","isSoft","localHandler","localEventFired","formatNonError","newStr","substr","maxChars","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","matches","match","fileName","parseInt","_promisesCreated","uncycle","nodes","stackToIndex","node","currentStack","cycleEdgeNode","currentChildLength","stacks","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","isTTY","color","checkForgottenReturns","returnValue","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","deprecated","replacement","./errors","10","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","catchReturn","_value","11","PromiseReduce","reduce","PromiseAll","promiseAllThis","each","mapSeries","12","_TypeError","_RangeError","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","CancellationError","TimeoutError","AggregateError","RangeError","level","OperationalError","cause","indent","lines","errorTypes","RejectionError","13","isES5","getDescriptor","propertyIsWritable","ObjectKeys","14","PromiseMap","15","catchFilter","PassThroughHandlerContext","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","fail","reasonOrValue","isFinallyHandler","isRejected","_passThrough","success","lastly","tap","tapCatch","handlerOrPredicate","catchInstances","./catch_filter","16","Proxyable","errors","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","implementsReturn","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","spawn","addYieldHandler","17","last","spread","18","MappingPromiseArray","limit","_filter","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","_init$","_values","preservedValues","totalResolved","_totalResolved","_resolve","booleans","19","_resolveFromSyncValue","attempt","20","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","21","spreadAdapter","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","22","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","APPLY","createContext","nodebackForPromise","check","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","v","deferReject","fillTypes","reflect","didFulfill","didReject","_setIsFinal","toJSON","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","base","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","_settlePromise","isPromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","defer","pending","toFastProperties","./any.js","./async","./bind","./call_get.js","./cancel","./context","./debuggability","./direct_resolve","./each.js","./filter.js","./finally","./generators.js","./join","./map.js","./method","./nodeback","./nodeify.js","./promise_array","./promisify.js","./props.js","./race.js","./reduce.js","./settle.js","./some.js","./synchronous_inspection","./thenables","./timers.js","./using.js","23","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","Map","toResolutionValue","getActualLength","shouldCopyValues","isResolved","24","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","defaultFilter","propsFilter","isPromisified","hasPromisified","suffix","getDataPropertyOrDefault","promisifiableMethods","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","escapeIdentRegex","makeNodePromisified","makeNodePromisifiedEval","__","defaultThis","promisified","promisifyAll","promisifier","promisifiedKey","promisify","copyDescriptors","isClass","25","Es6Map","mapToEntries","size","extractEntry","PropertiesPromiseArray","isMap","_isMap","castValue","entriesToMap","keyOffset","26","capacity","_capacity","_front","_willBeOverCapacity","_checkCapacity","wrapMask","front","_resizeTo","oldCapacity","moveItemsCount","srcIndex","dst","dstIndex","arrayMove","27","raceLater","race","28","ReductionPromiseArray","initialValue","_each","_fn","_initialValue","_currentCancellable","_eachValues","completed","valueOrReason","gotAccum","accum","_gotAccum","gotValue","_eachComplete","_resultCancelled$","29","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","ProcessNextTick","isRecentNode","nativePromise","navigator","standalone","cordova","div","attributes","toggleScheduled","div2","o2","classList","toggle","observe","disconnect","30","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","31","CANCELLATION","_howMany","_unwrap","_initialized","some","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","count","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","32","__isCancelled","33","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","34","HandleWrapper","afterValue","delay","ms","successClear","failureClear","handleWrapper","afterTimeout","35","NULL","dispose","resources","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","_data","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","resource","doDispose","_unsetDisposable","using","input","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","36","tryCatchTarget","globalObject","tryCatcher","Child","Parent","isPrimitive","maybeError","safeToString","appendee","defaultValue","excludedPrototypes","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","ic","foo","rident","filledRange","prefix","isError","ignore","to","ArrayFrom","itResult","hasEnvVariables","NODE_ENV","chrome","loadTimes","Number","px"],"mappings":"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","file":"bundles/f5c70ee9a294f6e4590e/indexeddb-worker.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1877);\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n return store[key] || (store[key] = {});\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","exports.f = {}.propertyIsEnumerable;\n","module.exports = true;\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };","\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","exports.f = require('./_wks');\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","var core = module.exports = { version: '2.5.1' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {IndexedDBStoreWorker} from 'matrix-js-sdk/lib/indexeddb-worker.js';\n\nconst remoteWorker = new IndexedDBStoreWorker(postMessage);\n\nonmessage = remoteWorker.onMessage;\n","\"use strict\";\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Separate exports file for the indexeddb web worker, which is designed\n * to be used separately\n */\n\n/** The {@link module:indexeddb-store-worker~IndexedDBStoreWorker} class. */\nmodule.exports.IndexedDBStoreWorker = require(\"./store/indexeddb-store-worker.js\");\n//# sourceMappingURL=indexeddb-worker.js.map","'use strict';\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _indexeddbLocalBackend = require('./indexeddb-local-backend.js');\n\nvar _indexeddbLocalBackend2 = _interopRequireDefault(_indexeddbLocalBackend);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * This class lives in the webworker and drives a LocalIndexedDBStoreBackend\n * controlled by messages from the main process.\n *\n * It should be instantiated by a web worker script provided by the application\n * in a script, for example:\n *\n * import {IndexedDBStoreWorker} from 'matrix-js-sdk/lib/indexeddb-worker.js';\n * const remoteWorker = new IndexedDBStoreWorker(postMessage);\n * onmessage = remoteWorker.onMessage;\n *\n * Note that it is advisable to import this class by referencing the file directly to\n * avoid a dependency on the whole js-sdk.\n *\n */\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar IndexedDBStoreWorker = function () {\n /**\n * @param {function} postMessage The web worker postMessage function that\n * should be used to communicate back to the main script.\n */\n function IndexedDBStoreWorker(postMessage) {\n (0, _classCallCheck3.default)(this, IndexedDBStoreWorker);\n\n this.backend = null;\n this.postMessage = postMessage;\n\n this.onMessage = this.onMessage.bind(this);\n }\n\n /**\n * Passes a message event from the main script into the class. This method\n * can be directly assigned to the web worker `onmessage` variable.\n *\n * @param {Object} ev The message event\n */\n\n\n (0, _createClass3.default)(IndexedDBStoreWorker, [{\n key: 'onMessage',\n value: function onMessage(ev) {\n var _backend,\n _backend2,\n _this = this;\n\n var msg = ev.data;\n var prom = void 0;\n\n switch (msg.command) {\n case '_setupWorker':\n this.backend = new _indexeddbLocalBackend2.default(\n // this is the 'indexedDB' global (where global != window\n // because it's a web worker and there is no window).\n indexedDB, msg.args[0]);\n prom = _bluebird2.default.resolve();\n break;\n case 'connect':\n prom = this.backend.connect();\n break;\n case 'isNewlyCreated':\n prom = this.backend.isNewlyCreated();\n break;\n case 'clearDatabase':\n prom = this.backend.clearDatabase().then(function (result) {\n // This returns special classes which can't be cloned\n // across to the main script, so don't try.\n return {};\n });\n break;\n case 'getSavedSync':\n prom = this.backend.getSavedSync(false);\n break;\n case 'setSyncData':\n prom = (_backend = this.backend).setSyncData.apply(_backend, (0, _toConsumableArray3.default)(msg.args));\n break;\n case 'syncToDatabase':\n prom = (_backend2 = this.backend).syncToDatabase.apply(_backend2, (0, _toConsumableArray3.default)(msg.args)).then(function () {\n // This also returns IndexedDB events which are not cloneable\n return {};\n });\n break;\n case 'getUserPresenceEvents':\n prom = this.backend.getUserPresenceEvents();\n break;\n case 'getNextBatchToken':\n prom = this.backend.getNextBatchToken();\n break;\n case 'getOutOfBandMembers':\n prom = this.backend.getOutOfBandMembers(msg.args[0]);\n break;\n case 'clearOutOfBandMembers':\n prom = this.backend.clearOutOfBandMembers(msg.args[0]);\n break;\n case 'setOutOfBandMembers':\n prom = this.backend.setOutOfBandMembers(msg.args[0], msg.args[1]);\n break;\n case 'getClientOptions':\n prom = this.backend.getClientOptions();\n break;\n case 'storeClientOptions':\n prom = this.backend.storeClientOptions(msg.args[0]);\n break;\n }\n\n if (prom === undefined) {\n this.postMessage({\n command: 'cmd_fail',\n seq: msg.seq,\n // Can't be an Error because they're not structured cloneable\n error: \"Unrecognised command\"\n });\n return;\n }\n\n prom.done(function (ret) {\n _this.postMessage.call(null, {\n command: 'cmd_success',\n seq: msg.seq,\n result: ret\n });\n }, function (err) {\n console.error(\"Error running command: \" + msg.command);\n console.error(err);\n _this.postMessage.call(null, {\n command: 'cmd_fail',\n seq: msg.seq,\n // Just send a string because Error objects aren't cloneable\n error: {\n message: err.message,\n name: err.name\n }\n });\n });\n }\n }]);\n return IndexedDBStoreWorker;\n}();\n\nmodule.exports = IndexedDBStoreWorker;\n//# sourceMappingURL=indexeddb-store-worker.js.map","exports.f = Object.getOwnPropertySymbols;\n","module.exports = require(\"regenerator-runtime\");\n","module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };","module.exports = require('./_hide');\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() { return this })() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && key in exports) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","\"use strict\";\n\nvar _create = require(\"babel-runtime/core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _utils = require(\"./utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The purpose of this class is to accumulate /sync responses such that a\n * complete \"initial\" JSON response can be returned which accurately represents\n * the sum total of the /sync responses accumulated to date. It only handles\n * room data: that is, everything under the \"rooms\" top-level key.\n *\n * This class is used when persisting room data so a complete /sync response can\n * be loaded from disk and incremental syncs can be performed on the server,\n * rather than asking the server to do an initial sync on startup.\n */\nvar SyncAccumulator = function () {\n\n /**\n * @param {Object} opts\n * @param {Number=} opts.maxTimelineEntries The ideal maximum number of\n * timeline entries to keep in the sync response. This is best-effort, as\n * clients do not always have a back-pagination token for each event, so\n * it's possible there may be slightly *less* than this value. There will\n * never be more. This cannot be 0 or else it makes it impossible to scroll\n * back in a room. Default: 50.\n */\n function SyncAccumulator(opts) {\n (0, _classCallCheck3.default)(this, SyncAccumulator);\n\n opts = opts || {};\n opts.maxTimelineEntries = opts.maxTimelineEntries || 50;\n this.opts = opts;\n this.accountData = {\n //$event_type: Object\n };\n this.inviteRooms = {\n //$roomId: { ... sync 'invite' json data ... }\n };\n this.joinRooms = {\n //$roomId: {\n // _currentState: { $event_type: { $state_key: json } },\n // _timeline: [\n // { event: $event, token: null|token },\n // { event: $event, token: null|token },\n // { event: $event, token: null|token },\n // ...\n // ],\n // _summary: {\n // m.heroes: [ $user_id ],\n // m.joined_member_count: $count,\n // m.invited_member_count: $count\n // },\n // _accountData: { $event_type: json },\n // _unreadNotifications: { ... unread_notifications JSON ... },\n // _readReceipts: { $user_id: { data: $json, eventId: $event_id }}\n //}\n };\n // the /sync token which corresponds to the last time rooms were\n // accumulated. We remember this so that any caller can obtain a\n // coherent /sync response and know at what point they should be\n // streaming from without losing events.\n this.nextBatch = null;\n\n // { ('invite'|'join'|'leave'): $groupId: { ... sync 'group' data } }\n this.groups = {\n invite: {},\n join: {},\n leave: {}\n };\n }\n\n (0, _createClass3.default)(SyncAccumulator, [{\n key: \"accumulate\",\n value: function accumulate(syncResponse) {\n this._accumulateRooms(syncResponse);\n this._accumulateGroups(syncResponse);\n this._accumulateAccountData(syncResponse);\n this.nextBatch = syncResponse.next_batch;\n }\n }, {\n key: \"_accumulateAccountData\",\n value: function _accumulateAccountData(syncResponse) {\n var _this = this;\n\n if (!syncResponse.account_data || !syncResponse.account_data.events) {\n return;\n }\n // Clobbers based on event type.\n syncResponse.account_data.events.forEach(function (e) {\n _this.accountData[e.type] = e;\n });\n }\n\n /**\n * Accumulate incremental /sync room data.\n * @param {Object} syncResponse the complete /sync JSON\n */\n\n }, {\n key: \"_accumulateRooms\",\n value: function _accumulateRooms(syncResponse) {\n var _this2 = this;\n\n if (!syncResponse.rooms) {\n return;\n }\n if (syncResponse.rooms.invite) {\n (0, _keys2.default)(syncResponse.rooms.invite).forEach(function (roomId) {\n _this2._accumulateRoom(roomId, \"invite\", syncResponse.rooms.invite[roomId]);\n });\n }\n if (syncResponse.rooms.join) {\n (0, _keys2.default)(syncResponse.rooms.join).forEach(function (roomId) {\n _this2._accumulateRoom(roomId, \"join\", syncResponse.rooms.join[roomId]);\n });\n }\n if (syncResponse.rooms.leave) {\n (0, _keys2.default)(syncResponse.rooms.leave).forEach(function (roomId) {\n _this2._accumulateRoom(roomId, \"leave\", syncResponse.rooms.leave[roomId]);\n });\n }\n }\n }, {\n key: \"_accumulateRoom\",\n value: function _accumulateRoom(roomId, category, data) {\n // Valid /sync state transitions\n // +--------+ <======+ 1: Accept an invite\n // +== | INVITE | | (5) 2: Leave a room\n // | +--------+ =====+ | 3: Join a public room previously\n // |(1) (4) | | left (handle as if new room)\n // V (2) V | 4: Reject an invite\n // +------+ ========> +--------+ 5: Invite to a room previously\n // | JOIN | (3) | LEAVE* | left (handle as if new room)\n // +------+ <======== +--------+\n //\n // * equivalent to \"no state\"\n switch (category) {\n case \"invite\":\n // (5)\n this._accumulateInviteState(roomId, data);\n break;\n case \"join\":\n if (this.inviteRooms[roomId]) {\n // (1)\n // was previously invite, now join. We expect /sync to give\n // the entire state and timeline on 'join', so delete previous\n // invite state\n delete this.inviteRooms[roomId];\n }\n // (3)\n this._accumulateJoinState(roomId, data);\n break;\n case \"leave\":\n if (this.inviteRooms[roomId]) {\n // (4)\n delete this.inviteRooms[roomId];\n } else {\n // (2)\n delete this.joinRooms[roomId];\n }\n break;\n default:\n console.error(\"Unknown cateogory: \", category);\n }\n }\n }, {\n key: \"_accumulateInviteState\",\n value: function _accumulateInviteState(roomId, data) {\n if (!data.invite_state || !data.invite_state.events) {\n // no new data\n return;\n }\n if (!this.inviteRooms[roomId]) {\n this.inviteRooms[roomId] = {\n invite_state: data.invite_state\n };\n return;\n }\n // accumulate extra keys for invite->invite transitions\n // clobber based on event type / state key\n // We expect invite_state to be small, so just loop over the events\n var currentData = this.inviteRooms[roomId];\n data.invite_state.events.forEach(function (e) {\n var hasAdded = false;\n for (var i = 0; i < currentData.invite_state.events.length; i++) {\n var current = currentData.invite_state.events[i];\n if (current.type === e.type && current.state_key == e.state_key) {\n currentData.invite_state.events[i] = e; // update\n hasAdded = true;\n }\n }\n if (!hasAdded) {\n currentData.invite_state.events.push(e);\n }\n });\n }\n\n // Accumulate timeline and state events in a room.\n\n }, {\n key: \"_accumulateJoinState\",\n value: function _accumulateJoinState(roomId, data) {\n // We expect this function to be called a lot (every /sync) so we want\n // this to be fast. /sync stores events in an array but we often want\n // to clobber based on type/state_key. Rather than convert arrays to\n // maps all the time, just keep private maps which contain\n // the actual current accumulated sync state, and array-ify it when\n // getJSON() is called.\n\n // State resolution:\n // The 'state' key is the delta from the previous sync (or start of time\n // if no token was supplied), to the START of the timeline. To obtain\n // the current state, we need to \"roll forward\" state by reading the\n // timeline. We want to store the current state so we can drop events\n // out the end of the timeline based on opts.maxTimelineEntries.\n //\n // 'state' 'timeline' current state\n // |-------x<======================>x\n // T I M E\n //\n // When getJSON() is called, we 'roll back' the current state by the\n // number of entries in the timeline to work out what 'state' should be.\n\n // Back-pagination:\n // On an initial /sync, the server provides a back-pagination token for\n // the start of the timeline. When /sync deltas come down, they also\n // include back-pagination tokens for the start of the timeline. This\n // means not all events in the timeline have back-pagination tokens, as\n // it is only the ones at the START of the timeline which have them.\n // In order for us to have a valid timeline (and back-pagination token\n // to match), we need to make sure that when we remove old timeline\n // events, that we roll forward to an event which has a back-pagination\n // token. This means we can't keep a strict sliding-window based on\n // opts.maxTimelineEntries, and we may have a few less. We should never\n // have more though, provided that the /sync limit is less than or equal\n // to opts.maxTimelineEntries.\n\n if (!this.joinRooms[roomId]) {\n // Create truly empty objects so event types of 'hasOwnProperty' and co\n // don't cause this code to break.\n this.joinRooms[roomId] = {\n _currentState: (0, _create2.default)(null),\n _timeline: [],\n _accountData: (0, _create2.default)(null),\n _unreadNotifications: {},\n _summary: {},\n _readReceipts: {}\n };\n }\n var currentData = this.joinRooms[roomId];\n\n if (data.account_data && data.account_data.events) {\n // clobber based on type\n data.account_data.events.forEach(function (e) {\n currentData._accountData[e.type] = e;\n });\n }\n\n // these probably clobber, spec is unclear.\n if (data.unread_notifications) {\n currentData._unreadNotifications = data.unread_notifications;\n }\n if (data.summary) {\n var HEROES_KEY = \"m.heroes\";\n var INVITED_COUNT_KEY = \"m.invited_member_count\";\n var JOINED_COUNT_KEY = \"m.joined_member_count\";\n\n var acc = currentData._summary;\n var sum = data.summary;\n acc[HEROES_KEY] = sum[HEROES_KEY] || acc[HEROES_KEY];\n acc[JOINED_COUNT_KEY] = sum[JOINED_COUNT_KEY] || acc[JOINED_COUNT_KEY];\n acc[INVITED_COUNT_KEY] = sum[INVITED_COUNT_KEY] || acc[INVITED_COUNT_KEY];\n }\n\n if (data.ephemeral && data.ephemeral.events) {\n data.ephemeral.events.forEach(function (e) {\n // We purposefully do not persist m.typing events.\n // Technically you could refresh a browser before the timer on a\n // typing event is up, so it'll look like you aren't typing when\n // you really still are. However, the alternative is worse. If\n // we do persist typing events, it will look like people are\n // typing forever until someone really does start typing (which\n // will prompt Synapse to send down an actual m.typing event to\n // clobber the one we persisted).\n if (e.type !== \"m.receipt\" || !e.content) {\n // This means we'll drop unknown ephemeral events but that\n // seems okay.\n return;\n }\n // Handle m.receipt events. They clobber based on:\n // (user_id, receipt_type)\n // but they are keyed in the event as:\n // content:{ $event_id: { $receipt_type: { $user_id: {json} }}}\n // so store them in the former so we can accumulate receipt deltas\n // quickly and efficiently (we expect a lot of them). Fold the\n // receipt type into the key name since we only have 1 at the\n // moment (m.read) and nested JSON objects are slower and more\n // of a hassle to work with. We'll inflate this back out when\n // getJSON() is called.\n (0, _keys2.default)(e.content).forEach(function (eventId) {\n if (!e.content[eventId][\"m.read\"]) {\n return;\n }\n (0, _keys2.default)(e.content[eventId][\"m.read\"]).forEach(function (userId) {\n // clobber on user ID\n currentData._readReceipts[userId] = {\n data: e.content[eventId][\"m.read\"][userId],\n eventId: eventId\n };\n });\n });\n });\n }\n\n // if we got a limited sync, we need to remove all timeline entries or else\n // we will have gaps in the timeline.\n if (data.timeline && data.timeline.limited) {\n currentData._timeline = [];\n }\n\n // Work out the current state. The deltas need to be applied in the order:\n // - existing state which didn't come down /sync.\n // - State events under the 'state' key.\n // - State events in the 'timeline'.\n if (data.state && data.state.events) {\n data.state.events.forEach(function (e) {\n setState(currentData._currentState, e);\n });\n }\n if (data.timeline && data.timeline.events) {\n data.timeline.events.forEach(function (e, index) {\n // this nops if 'e' isn't a state event\n setState(currentData._currentState, e);\n // append the event to the timeline. The back-pagination token\n // corresponds to the first event in the timeline\n currentData._timeline.push({\n event: e,\n token: index === 0 ? data.timeline.prev_batch : null\n });\n });\n }\n\n // attempt to prune the timeline by jumping between events which have\n // pagination tokens.\n if (currentData._timeline.length > this.opts.maxTimelineEntries) {\n var startIndex = currentData._timeline.length - this.opts.maxTimelineEntries;\n for (var i = startIndex; i < currentData._timeline.length; i++) {\n if (currentData._timeline[i].token) {\n // keep all events after this, including this one\n currentData._timeline = currentData._timeline.slice(i, currentData._timeline.length);\n break;\n }\n }\n }\n }\n\n /**\n * Accumulate incremental /sync group data.\n * @param {Object} syncResponse the complete /sync JSON\n */\n\n }, {\n key: \"_accumulateGroups\",\n value: function _accumulateGroups(syncResponse) {\n var _this3 = this;\n\n if (!syncResponse.groups) {\n return;\n }\n if (syncResponse.groups.invite) {\n (0, _keys2.default)(syncResponse.groups.invite).forEach(function (groupId) {\n _this3._accumulateGroup(groupId, \"invite\", syncResponse.groups.invite[groupId]);\n });\n }\n if (syncResponse.groups.join) {\n (0, _keys2.default)(syncResponse.groups.join).forEach(function (groupId) {\n _this3._accumulateGroup(groupId, \"join\", syncResponse.groups.join[groupId]);\n });\n }\n if (syncResponse.groups.leave) {\n (0, _keys2.default)(syncResponse.groups.leave).forEach(function (groupId) {\n _this3._accumulateGroup(groupId, \"leave\", syncResponse.groups.leave[groupId]);\n });\n }\n }\n }, {\n key: \"_accumulateGroup\",\n value: function _accumulateGroup(groupId, category, data) {\n var _arr = ['invite', 'join', 'leave'];\n\n for (var _i = 0; _i < _arr.length; _i++) {\n var cat = _arr[_i];\n delete this.groups[cat][groupId];\n }\n this.groups[category][groupId] = data;\n }\n\n /**\n * Return everything under the 'rooms' key from a /sync response which\n * represents all room data that should be stored. This should be paired\n * with the sync token which represents the most recent /sync response\n * provided to accumulate().\n * @return {Object} An object with a \"nextBatch\", \"roomsData\" and \"accountData\"\n * keys.\n * The \"nextBatch\" key is a string which represents at what point in the\n * /sync stream the accumulator reached. This token should be used when\n * restarting a /sync stream at startup. Failure to do so can lead to missing\n * events. The \"roomsData\" key is an Object which represents the entire\n * /sync response from the 'rooms' key onwards. The \"accountData\" key is\n * a list of raw events which represent global account data.\n */\n\n }, {\n key: \"getJSON\",\n value: function getJSON() {\n var _this4 = this;\n\n var data = {\n join: {},\n invite: {},\n // always empty. This is set by /sync when a room was previously\n // in 'invite' or 'join'. On fresh startup, the client won't know\n // about any previous room being in 'invite' or 'join' so we can\n // just omit mentioning it at all, even if it has previously come\n // down /sync.\n // The notable exception is when a client is kicked or banned:\n // we may want to hold onto that room so the client can clearly see\n // why their room has disappeared. We don't persist it though because\n // it is unclear *when* we can safely remove the room from the DB.\n // Instead, we assume that if you're loading from the DB, you've\n // refreshed the page, which means you've seen the kick/ban already.\n leave: {}\n };\n (0, _keys2.default)(this.inviteRooms).forEach(function (roomId) {\n data.invite[roomId] = _this4.inviteRooms[roomId];\n });\n (0, _keys2.default)(this.joinRooms).forEach(function (roomId) {\n var roomData = _this4.joinRooms[roomId];\n var roomJson = {\n ephemeral: { events: [] },\n account_data: { events: [] },\n state: { events: [] },\n timeline: {\n events: [],\n prev_batch: null\n },\n unread_notifications: roomData._unreadNotifications,\n summary: roomData._summary\n };\n // Add account data\n (0, _keys2.default)(roomData._accountData).forEach(function (evType) {\n roomJson.account_data.events.push(roomData._accountData[evType]);\n });\n\n // Add receipt data\n var receiptEvent = {\n type: \"m.receipt\",\n room_id: roomId,\n content: {\n // $event_id: { \"m.read\": { $user_id: $json } }\n }\n };\n (0, _keys2.default)(roomData._readReceipts).forEach(function (userId) {\n var receiptData = roomData._readReceipts[userId];\n if (!receiptEvent.content[receiptData.eventId]) {\n receiptEvent.content[receiptData.eventId] = {\n \"m.read\": {}\n };\n }\n receiptEvent.content[receiptData.eventId][\"m.read\"][userId] = receiptData.data;\n });\n // add only if we have some receipt data\n if ((0, _keys2.default)(receiptEvent.content).length > 0) {\n roomJson.ephemeral.events.push(receiptEvent);\n }\n\n // Add timeline data\n roomData._timeline.forEach(function (msgData) {\n if (!roomJson.timeline.prev_batch) {\n // the first event we add to the timeline MUST match up to\n // the prev_batch token.\n if (!msgData.token) {\n return; // this shouldn't happen as we prune constantly.\n }\n roomJson.timeline.prev_batch = msgData.token;\n }\n roomJson.timeline.events.push(msgData.event);\n });\n\n // Add state data: roll back current state to the start of timeline,\n // by \"reverse clobbering\" from the end of the timeline to the start.\n // Convert maps back into arrays.\n var rollBackState = (0, _create2.default)(null);\n for (var i = roomJson.timeline.events.length - 1; i >= 0; i--) {\n var timelineEvent = roomJson.timeline.events[i];\n if (timelineEvent.state_key === null || timelineEvent.state_key === undefined) {\n continue; // not a state event\n }\n // since we're going back in time, we need to use the previous\n // state value else we'll break causality. We don't have the\n // complete previous state event, so we need to create one.\n var prevStateEvent = _utils2.default.deepCopy(timelineEvent);\n if (prevStateEvent.unsigned) {\n if (prevStateEvent.unsigned.prev_content) {\n prevStateEvent.content = prevStateEvent.unsigned.prev_content;\n }\n if (prevStateEvent.unsigned.prev_sender) {\n prevStateEvent.sender = prevStateEvent.unsigned.prev_sender;\n }\n }\n setState(rollBackState, prevStateEvent);\n }\n (0, _keys2.default)(roomData._currentState).forEach(function (evType) {\n (0, _keys2.default)(roomData._currentState[evType]).forEach(function (stateKey) {\n var ev = roomData._currentState[evType][stateKey];\n if (rollBackState[evType] && rollBackState[evType][stateKey]) {\n // use the reverse clobbered event instead.\n ev = rollBackState[evType][stateKey];\n }\n roomJson.state.events.push(ev);\n });\n });\n data.join[roomId] = roomJson;\n });\n\n // Add account data\n var accData = [];\n (0, _keys2.default)(this.accountData).forEach(function (evType) {\n accData.push(_this4.accountData[evType]);\n });\n\n return {\n nextBatch: this.nextBatch,\n roomsData: data,\n groupsData: this.groups,\n accountData: accData\n };\n }\n }, {\n key: \"getNextBatchToken\",\n value: function getNextBatchToken() {\n return this.nextBatch;\n }\n }]);\n return SyncAccumulator;\n}(); /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/**\n * This is an internal module. See {@link SyncAccumulator} for the public class.\n * @module sync-accumulator\n */\n\nfunction setState(eventMap, event) {\n if (event.state_key === null || event.state_key === undefined || !event.type) {\n return;\n }\n if (!eventMap[event.type]) {\n eventMap[event.type] = (0, _create2.default)(null);\n }\n eventMap[event.type][event.state_key] = event;\n}\n\nmodule.exports = SyncAccumulator;\n//# sourceMappingURL=sync-accumulator.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * This is an internal module.\n * @module utils\n */\n\n/**\n * Encode a dictionary of query parameters.\n * @param {Object} params A dict of key/values to encode e.g.\n * {\"foo\": \"bar\", \"baz\": \"taz\"}\n * @return {string} The encoded string e.g. foo=bar&baz=taz\n */\n\nvar _create = require(\"babel-runtime/core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports.encodeParams = function (params) {\n var qs = \"\";\n for (var key in params) {\n if (!params.hasOwnProperty(key)) {\n continue;\n }\n qs += \"&\" + encodeURIComponent(key) + \"=\" + encodeURIComponent(params[key]);\n }\n return qs.substring(1);\n};\n\n/**\n * Encodes a URI according to a set of template variables. Variables will be\n * passed through encodeURIComponent.\n * @param {string} pathTemplate The path with template variables e.g. '/foo/$bar'.\n * @param {Object} variables The key/value pairs to replace the template\n * variables with. E.g. { \"$bar\": \"baz\" }.\n * @return {string} The result of replacing all template variables e.g. '/foo/baz'.\n */\nmodule.exports.encodeUri = function (pathTemplate, variables) {\n for (var key in variables) {\n if (!variables.hasOwnProperty(key)) {\n continue;\n }\n pathTemplate = pathTemplate.replace(key, encodeURIComponent(variables[key]));\n }\n return pathTemplate;\n};\n\n/**\n * Applies a map function to the given array.\n * @param {Array} array The array to apply the function to.\n * @param {Function} fn The function that will be invoked for each element in\n * the array with the signature <code>fn(element){...}</code>\n * @return {Array} A new array with the results of the function.\n */\nmodule.exports.map = function (array, fn) {\n var results = new Array(array.length);\n for (var i = 0; i < array.length; i++) {\n results[i] = fn(array[i]);\n }\n return results;\n};\n\n/**\n * Applies a filter function to the given array.\n * @param {Array} array The array to apply the function to.\n * @param {Function} fn The function that will be invoked for each element in\n * the array. It should return true to keep the element. The function signature\n * looks like <code>fn(element, index, array){...}</code>.\n * @return {Array} A new array with the results of the function.\n */\nmodule.exports.filter = function (array, fn) {\n var results = [];\n for (var i = 0; i < array.length; i++) {\n if (fn(array[i], i, array)) {\n results.push(array[i]);\n }\n }\n return results;\n};\n\n/**\n * Get the keys for an object. Same as <code>Object.keys()</code>.\n * @param {Object} obj The object to get the keys for.\n * @return {string[]} The keys of the object.\n */\nmodule.exports.keys = function (obj) {\n var keys = [];\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n keys.push(key);\n }\n return keys;\n};\n\n/**\n * Get the values for an object.\n * @param {Object} obj The object to get the values for.\n * @return {Array<*>} The values of the object.\n */\nmodule.exports.values = function (obj) {\n var values = [];\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n values.push(obj[key]);\n }\n return values;\n};\n\n/**\n * Invoke a function for each item in the array.\n * @param {Array} array The array.\n * @param {Function} fn The function to invoke for each element. Has the\n * function signature <code>fn(element, index)</code>.\n */\nmodule.exports.forEach = function (array, fn) {\n for (var i = 0; i < array.length; i++) {\n fn(array[i], i);\n }\n};\n\n/**\n * The findElement() method returns a value in the array, if an element in the array\n * satisfies (returns true) the provided testing function. Otherwise undefined\n * is returned.\n * @param {Array} array The array.\n * @param {Function} fn Function to execute on each value in the array, with the\n * function signature <code>fn(element, index, array)</code>\n * @param {boolean} reverse True to search in reverse order.\n * @return {*} The first value in the array which returns <code>true</code> for\n * the given function.\n */\nmodule.exports.findElement = function (array, fn, reverse) {\n var i = void 0;\n if (reverse) {\n for (i = array.length - 1; i >= 0; i--) {\n if (fn(array[i], i, array)) {\n return array[i];\n }\n }\n } else {\n for (i = 0; i < array.length; i++) {\n if (fn(array[i], i, array)) {\n return array[i];\n }\n }\n }\n};\n\n/**\n * The removeElement() method removes the first element in the array that\n * satisfies (returns true) the provided testing function.\n * @param {Array} array The array.\n * @param {Function} fn Function to execute on each value in the array, with the\n * function signature <code>fn(element, index, array)</code>. Return true to\n * remove this element and break.\n * @param {boolean} reverse True to search in reverse order.\n * @return {boolean} True if an element was removed.\n */\nmodule.exports.removeElement = function (array, fn, reverse) {\n var i = void 0;\n var removed = void 0;\n if (reverse) {\n for (i = array.length - 1; i >= 0; i--) {\n if (fn(array[i], i, array)) {\n removed = array[i];\n array.splice(i, 1);\n return removed;\n }\n }\n } else {\n for (i = 0; i < array.length; i++) {\n if (fn(array[i], i, array)) {\n removed = array[i];\n array.splice(i, 1);\n return removed;\n }\n }\n }\n return false;\n};\n\n/**\n * Checks if the given thing is a function.\n * @param {*} value The thing to check.\n * @return {boolean} True if it is a function.\n */\nmodule.exports.isFunction = function (value) {\n return Object.prototype.toString.call(value) == \"[object Function]\";\n};\n\n/**\n * Checks if the given thing is an array.\n * @param {*} value The thing to check.\n * @return {boolean} True if it is an array.\n */\nmodule.exports.isArray = function (value) {\n return Array.isArray ? Array.isArray(value) : Boolean(value && value.constructor === Array);\n};\n\n/**\n * Checks that the given object has the specified keys.\n * @param {Object} obj The object to check.\n * @param {string[]} keys The list of keys that 'obj' must have.\n * @throws If the object is missing keys.\n */\nmodule.exports.checkObjectHasKeys = function (obj, keys) {\n for (var i = 0; i < keys.length; i++) {\n if (!obj.hasOwnProperty(keys[i])) {\n throw new Error(\"Missing required key: \" + keys[i]);\n }\n }\n};\n\n/**\n * Checks that the given object has no extra keys other than the specified ones.\n * @param {Object} obj The object to check.\n * @param {string[]} allowedKeys The list of allowed key names.\n * @throws If there are extra keys.\n */\nmodule.exports.checkObjectHasNoAdditionalKeys = function (obj, allowedKeys) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n if (allowedKeys.indexOf(key) === -1) {\n throw new Error(\"Unknown key: \" + key);\n }\n }\n};\n\n/**\n * Deep copy the given object. The object MUST NOT have circular references and\n * MUST NOT have functions.\n * @param {Object} obj The object to deep copy.\n * @return {Object} A copy of the object without any references to the original.\n */\nmodule.exports.deepCopy = function (obj) {\n return JSON.parse((0, _stringify2.default)(obj));\n};\n\n/**\n * Compare two objects for equality. The objects MUST NOT have circular references.\n *\n * @param {Object} x The first object to compare.\n * @param {Object} y The second object to compare.\n *\n * @return {boolean} true if the two objects are equal\n */\nvar deepCompare = module.exports.deepCompare = function (x, y) {\n // Inspired by\n // http://stackoverflow.com/questions/1068834/object-comparison-in-javascript#1144249\n\n // Compare primitives and functions.\n // Also check if both arguments link to the same object.\n if (x === y) {\n return true;\n }\n\n if ((typeof x === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(x)) !== (typeof y === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(y))) {\n return false;\n }\n\n // special-case NaN (since NaN !== NaN)\n if (typeof x === 'number' && isNaN(x) && isNaN(y)) {\n return true;\n }\n\n // special-case null (since typeof null == 'object', but null.constructor\n // throws)\n if (x === null || y === null) {\n return x === y;\n }\n\n // everything else is either an unequal primitive, or an object\n if (!(x instanceof Object)) {\n return false;\n }\n\n // check they are the same type of object\n if (x.constructor !== y.constructor || x.prototype !== y.prototype) {\n return false;\n }\n\n // special-casing for some special types of object\n if (x instanceof RegExp || x instanceof Date) {\n return x.toString() === y.toString();\n }\n\n // the object algorithm works for Array, but it's sub-optimal.\n if (x instanceof Array) {\n if (x.length !== y.length) {\n return false;\n }\n\n for (var i = 0; i < x.length; i++) {\n if (!deepCompare(x[i], y[i])) {\n return false;\n }\n }\n } else {\n // disable jshint \"The body of a for in should be wrapped in an if\n // statement\"\n /* jshint -W089 */\n\n // check that all of y's direct keys are in x\n var p = void 0;\n for (p in y) {\n if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {\n return false;\n }\n }\n\n // finally, compare each of x's keys with y\n for (p in y) {\n if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {\n return false;\n }\n if (!deepCompare(x[p], y[p])) {\n return false;\n }\n }\n }\n /* jshint +W089 */\n return true;\n};\n\n/**\n * Copy properties from one object to another.\n *\n * All enumerable properties, included inherited ones, are copied.\n *\n * This is approximately equivalent to ES6's Object.assign, except\n * that the latter doesn't copy inherited properties.\n *\n * @param {Object} target The object that will receive new properties\n * @param {...Object} source Objects from which to copy properties\n *\n * @return {Object} target\n */\nmodule.exports.extend = function () {\n var target = arguments[0] || {};\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var propName in source) {\n // eslint-disable-line guard-for-in\n target[propName] = source[propName];\n }\n }\n return target;\n};\n\n/**\n * Run polyfills to add Array.map and Array.filter if they are missing.\n */\nmodule.exports.runPolyfills = function () {\n // Array.prototype.filter\n // ========================================================\n // SOURCE:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter\n if (!Array.prototype.filter) {\n Array.prototype.filter = function (fun /*, thisArg*/) {\n if (this === void 0 || this === null) {\n throw new TypeError();\n }\n\n var t = Object(this);\n var len = t.length >>> 0;\n if (typeof fun !== 'function') {\n throw new TypeError();\n }\n\n var res = [];\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n for (var i = 0; i < len; i++) {\n if (i in t) {\n var val = t[i];\n\n // NOTE: Technically this should Object.defineProperty at\n // the next index, as push can be affected by\n // properties on Object.prototype and Array.prototype.\n // But that method's new, and collisions should be\n // rare, so use the more-compatible alternative.\n if (fun.call(thisArg, val, i, t)) {\n res.push(val);\n }\n }\n }\n\n return res;\n };\n }\n\n // Array.prototype.map\n // ========================================================\n // SOURCE:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map\n // Production steps of ECMA-262, Edition 5, 15.4.4.19\n // Reference: http://es5.github.io/#x15.4.4.19\n if (!Array.prototype.map) {\n Array.prototype.map = function (callback, thisArg) {\n var T = void 0,\n k = void 0;\n\n if (this === null || this === undefined) {\n throw new TypeError(' this is null or not defined');\n }\n\n // 1. Let O be the result of calling ToObject passing the |this|\n // value as the argument.\n var O = Object(this);\n\n // 2. Let lenValue be the result of calling the Get internal\n // method of O with the argument \"length\".\n // 3. Let len be ToUint32(lenValue).\n var len = O.length >>> 0;\n\n // 4. If IsCallable(callback) is false, throw a TypeError exception.\n // See: http://es5.github.com/#x9.11\n if (typeof callback !== 'function') {\n throw new TypeError(callback + ' is not a function');\n }\n\n // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.\n if (arguments.length > 1) {\n T = thisArg;\n }\n\n // 6. Let A be a new array created as if by the expression new Array(len)\n // where Array is the standard built-in constructor with that name and\n // len is the value of len.\n var A = new Array(len);\n\n // 7. Let k be 0\n k = 0;\n\n // 8. Repeat, while k < len\n while (k < len) {\n var kValue, mappedValue;\n\n // a. Let Pk be ToString(k).\n // This is implicit for LHS operands of the in operator\n // b. Let kPresent be the result of calling the HasProperty internal\n // method of O with argument Pk.\n // This step can be combined with c\n // c. If kPresent is true, then\n if (k in O) {\n // i. Let kValue be the result of calling the Get internal\n // method of O with argument Pk.\n kValue = O[k];\n\n // ii. Let mappedValue be the result of calling the Call internal\n // method of callback with T as the this value and argument\n // list containing kValue, k, and O.\n mappedValue = callback.call(T, kValue, k, O);\n\n // iii. Call the DefineOwnProperty internal method of A with arguments\n // Pk, Property Descriptor\n // { Value: mappedValue,\n // Writable: true,\n // Enumerable: true,\n // Configurable: true },\n // and false.\n\n // In browsers that support Object.defineProperty, use the following:\n // Object.defineProperty(A, k, {\n // value: mappedValue,\n // writable: true,\n // enumerable: true,\n // configurable: true\n // });\n\n // For best browser support, use the following:\n A[k] = mappedValue;\n }\n // d. Increase k by 1.\n k++;\n }\n\n // 9. return A\n return A;\n };\n }\n\n // Array.prototype.forEach\n // ========================================================\n // SOURCE:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach\n // Production steps of ECMA-262, Edition 5, 15.4.4.18\n // Reference: http://es5.github.io/#x15.4.4.18\n if (!Array.prototype.forEach) {\n Array.prototype.forEach = function (callback, thisArg) {\n var T = void 0,\n k = void 0;\n\n if (this === null || this === undefined) {\n throw new TypeError(' this is null or not defined');\n }\n\n // 1. Let O be the result of calling ToObject passing the |this| value as the\n // argument.\n var O = Object(this);\n\n // 2. Let lenValue be the result of calling the Get internal method of O with the\n // argument \"length\".\n // 3. Let len be ToUint32(lenValue).\n var len = O.length >>> 0;\n\n // 4. If IsCallable(callback) is false, throw a TypeError exception.\n // See: http://es5.github.com/#x9.11\n if (typeof callback !== \"function\") {\n throw new TypeError(callback + ' is not a function');\n }\n\n // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.\n if (arguments.length > 1) {\n T = thisArg;\n }\n\n // 6. Let k be 0\n k = 0;\n\n // 7. Repeat, while k < len\n while (k < len) {\n var kValue;\n\n // a. Let Pk be ToString(k).\n // This is implicit for LHS operands of the in operator\n // b. Let kPresent be the result of calling the HasProperty internal\n // method of O with\n // argument Pk.\n // This step can be combined with c\n // c. If kPresent is true, then\n if (k in O) {\n // i. Let kValue be the result of calling the Get internal method of O with\n // argument Pk\n kValue = O[k];\n\n // ii. Call the Call internal method of callback with T as the this value and\n // argument list containing kValue, k, and O.\n callback.call(T, kValue, k, O);\n }\n // d. Increase k by 1.\n k++;\n }\n // 8. return undefined\n };\n }\n};\n\n/**\n * Inherit the prototype methods from one constructor into another. This is a\n * port of the Node.js implementation with an Object.create polyfill.\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nmodule.exports.inherits = function (ctor, superCtor) {\n // Add Object.create polyfill for IE8\n // Source:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript\n // /Reference/Global_Objects/Object/create#Polyfill\n if (typeof _create2.default != 'function') {\n // Production steps of ECMA-262, Edition 5, 15.2.3.5\n // Reference: http://es5.github.io/#x15.2.3.5\n Object.create = function () {\n // To save on memory, use a shared constructor\n function Temp() {}\n\n // make a safe reference to Object.prototype.hasOwnProperty\n var hasOwn = Object.prototype.hasOwnProperty;\n\n return function (O) {\n // 1. If Type(O) is not Object or Null throw a TypeError exception.\n if ((typeof O === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(O)) != 'object') {\n throw new TypeError('Object prototype may only be an Object or null');\n }\n\n // 2. Let obj be the result of creating a new object as if by the\n // expression new Object() where Object is the standard built-in\n // constructor with that name\n // 3. Set the [[Prototype]] internal property of obj to O.\n Temp.prototype = O;\n var obj = new Temp();\n Temp.prototype = null; // Let's not keep a stray reference to O...\n\n // 4. If the argument Properties is present and not undefined, add\n // own properties to obj as if by calling the standard built-in\n // function Object.defineProperties with arguments obj and\n // Properties.\n if (arguments.length > 1) {\n // Object.defineProperties does ToObject on its first argument.\n var Properties = Object(arguments[1]);\n for (var prop in Properties) {\n if (hasOwn.call(Properties, prop)) {\n obj[prop] = Properties[prop];\n }\n }\n }\n\n // 5. Return obj\n return obj;\n };\n }();\n }\n // END polyfill\n\n // Add util.inherits from Node.js\n // Source:\n // https://github.com/joyent/node/blob/master/lib/util.js\n // Copyright Joyent, Inc. and other Node contributors.\n //\n // Permission is hereby granted, free of charge, to any person obtaining a\n // copy of this software and associated documentation files (the\n // \"Software\"), to deal in the Software without restriction, including\n // without limitation the rights to use, copy, modify, merge, publish,\n // distribute, sublicense, and/or sell copies of the Software, and to permit\n // persons to whom the Software is furnished to do so, subject to the\n // following conditions:\n //\n // The above copyright notice and this permission notice shall be included\n // in all copies or substantial portions of the Software.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n // USE OR OTHER DEALINGS IN THE SOFTWARE.\n ctor.super_ = superCtor;\n ctor.prototype = (0, _create2.default)(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\n\n/**\n * Returns whether the given value is a finite number without type-coercion\n *\n * @param {*} value the value to test\n * @return {boolean} whether or not value is a finite number without type-coercion\n */\nmodule.exports.isNumber = function (value) {\n return typeof value === 'number' && isFinite(value);\n};\n\n/**\n * Removes zero width chars, diacritics and whitespace from the string\n * @param {string} str the string to remove hidden characters from\n * @return {string} a string with the hidden characters removed\n */\nmodule.exports.removeHiddenChars = function (str) {\n return str.normalize('NFD').replace(removeHiddenCharsRegex, '');\n};\nvar removeHiddenCharsRegex = /[\\u200B-\\u200D\\u0300-\\u036f\\uFEFF\\s]/g;\n//# sourceMappingURL=utils.js.map","module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = function () { /* empty */ };\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n if (it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n replacer = args[1];\n if (typeof replacer == 'function') $replacer = replacer;\n if ($replacer || !isArray(replacer)) replacer = function (key, value) {\n if ($replacer) value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _syncAccumulator = require(\"../sync-accumulator\");\n\nvar _syncAccumulator2 = _interopRequireDefault(_syncAccumulator);\n\nvar _utils = require(\"../utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar VERSION = 3; /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction createDatabase(db) {\n // Make user store, clobber based on user ID. (userId property of User objects)\n db.createObjectStore(\"users\", { keyPath: [\"userId\"] });\n\n // Make account data store, clobber based on event type.\n // (event.type property of MatrixEvent objects)\n db.createObjectStore(\"accountData\", { keyPath: [\"type\"] });\n\n // Make /sync store (sync tokens, room data, etc), always clobber (const key).\n db.createObjectStore(\"sync\", { keyPath: [\"clobber\"] });\n}\n\nfunction upgradeSchemaV2(db) {\n var oobMembersStore = db.createObjectStore(\"oob_membership_events\", {\n keyPath: [\"room_id\", \"state_key\"]\n });\n oobMembersStore.createIndex(\"room\", \"room_id\");\n}\n\nfunction upgradeSchemaV3(db) {\n db.createObjectStore(\"client_options\", { keyPath: [\"clobber\"] });\n}\n\n/**\n * Helper method to collect results from a Cursor and promiseify it.\n * @param {ObjectStore|Index} store The store to perform openCursor on.\n * @param {IDBKeyRange=} keyRange Optional key range to apply on the cursor.\n * @param {Function} resultMapper A function which is repeatedly called with a\n * Cursor.\n * Return the data you want to keep.\n * @return {Promise<T[]>} Resolves to an array of whatever you returned from\n * resultMapper.\n */\nfunction selectQuery(store, keyRange, resultMapper) {\n var query = store.openCursor(keyRange);\n return new _bluebird2.default(function (resolve, reject) {\n var results = [];\n query.onerror = function (event) {\n reject(new Error(\"Query failed: \" + event.target.errorCode));\n };\n // collect results\n query.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n resolve(results);\n return; // end of results\n }\n results.push(resultMapper(cursor));\n cursor.continue();\n };\n });\n}\n\nfunction txnAsPromise(txn) {\n return new _bluebird2.default(function (resolve, reject) {\n txn.oncomplete = function (event) {\n resolve(event);\n };\n txn.onerror = function (event) {\n reject(event.target.error);\n };\n });\n}\n\nfunction reqAsEventPromise(req) {\n return new _bluebird2.default(function (resolve, reject) {\n req.onsuccess = function (event) {\n resolve(event);\n };\n req.onerror = function (event) {\n reject(event.target.error);\n };\n });\n}\n\nfunction reqAsPromise(req) {\n return new _bluebird2.default(function (resolve, reject) {\n req.onsuccess = function () {\n return resolve(req);\n };\n req.onerror = function (err) {\n return reject(err);\n };\n });\n}\n\nfunction reqAsCursorPromise(req) {\n return reqAsEventPromise(req).then(function (event) {\n return event.target.result;\n });\n}\n\n/**\n * Does the actual reading from and writing to the indexeddb\n *\n * Construct a new Indexed Database store backend. This requires a call to\n * <code>connect()</code> before this store can be used.\n * @constructor\n * @param {Object} indexedDBInterface The Indexed DB interface e.g\n * <code>window.indexedDB</code>\n * @param {string=} dbName Optional database name. The same name must be used\n * to open the same database.\n */\nvar LocalIndexedDBStoreBackend = function LocalIndexedDBStoreBackend(indexedDBInterface, dbName) {\n this.indexedDB = indexedDBInterface;\n this._dbName = \"matrix-js-sdk:\" + (dbName || \"default\");\n this.db = null;\n this._disconnected = true;\n this._syncAccumulator = new _syncAccumulator2.default();\n this._isNewlyCreated = false;\n};\n\nLocalIndexedDBStoreBackend.prototype = {\n /**\n * Attempt to connect to the database. This can fail if the user does not\n * grant permission.\n * @return {Promise} Resolves if successfully connected.\n */\n connect: function connect() {\n var _this = this;\n\n if (!this._disconnected) {\n console.log(\"LocalIndexedDBStoreBackend.connect: already connected or connecting\");\n return _bluebird2.default.resolve();\n }\n\n this._disconnected = false;\n\n console.log(\"LocalIndexedDBStoreBackend.connect: connecting...\");\n var req = this.indexedDB.open(this._dbName, VERSION);\n req.onupgradeneeded = function (ev) {\n var db = ev.target.result;\n var oldVersion = ev.oldVersion;\n console.log(\"LocalIndexedDBStoreBackend.connect: upgrading from \" + oldVersion);\n if (oldVersion < 1) {\n // The database did not previously exist.\n _this._isNewlyCreated = true;\n createDatabase(db);\n }\n if (oldVersion < 2) {\n upgradeSchemaV2(db);\n }\n if (oldVersion < 3) {\n upgradeSchemaV3(db);\n }\n // Expand as needed.\n };\n\n req.onblocked = function () {\n console.log(\"can't yet open LocalIndexedDBStoreBackend because it is open elsewhere\");\n };\n\n console.log(\"LocalIndexedDBStoreBackend.connect: awaiting connection...\");\n return reqAsEventPromise(req).then(function (ev) {\n console.log(\"LocalIndexedDBStoreBackend.connect: connected\");\n _this.db = ev.target.result;\n\n // add a poorly-named listener for when deleteDatabase is called\n // so we can close our db connections.\n _this.db.onversionchange = function () {\n _this.db.close();\n };\n\n return _this._init();\n });\n },\n /** @return {bool} whether or not the database was newly created in this session. */\n isNewlyCreated: function isNewlyCreated() {\n return _bluebird2.default.resolve(this._isNewlyCreated);\n },\n\n /**\n * Having connected, load initial data from the database and prepare for use\n * @return {Promise} Resolves on success\n */\n _init: function _init() {\n var _this2 = this;\n\n return _bluebird2.default.all([this._loadAccountData(), this._loadSyncData()]).then(function (_ref) {\n var _ref2 = (0, _slicedToArray3.default)(_ref, 2),\n accountData = _ref2[0],\n syncData = _ref2[1];\n\n console.log(\"LocalIndexedDBStoreBackend: loaded initial data\");\n _this2._syncAccumulator.accumulate({\n next_batch: syncData.nextBatch,\n rooms: syncData.roomsData,\n groups: syncData.groupsData,\n account_data: {\n events: accountData\n }\n });\n });\n },\n\n /**\n * Returns the out-of-band membership events for this room that\n * were previously loaded.\n * @param {string} roomId\n * @returns {Promise<event[]>} the events, potentially an empty array if OOB loading didn't yield any new members\n * @returns {null} in case the members for this room haven't been stored yet\n */\n getOutOfBandMembers: function getOutOfBandMembers(roomId) {\n var _this3 = this;\n\n return new _bluebird2.default(function (resolve, reject) {\n var tx = _this3.db.transaction([\"oob_membership_events\"], \"readonly\");\n var store = tx.objectStore(\"oob_membership_events\");\n var roomIndex = store.index(\"room\");\n var range = IDBKeyRange.only(roomId);\n var request = roomIndex.openCursor(range);\n\n var membershipEvents = [];\n // did we encounter the oob_written marker object\n // amongst the results? That means OOB member\n // loading already happened for this room\n // but there were no members to persist as they\n // were all known already\n var oobWritten = false;\n\n request.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n // Unknown room\n if (!membershipEvents.length && !oobWritten) {\n return resolve(null);\n }\n return resolve(membershipEvents);\n }\n var record = cursor.value;\n if (record.oob_written) {\n oobWritten = true;\n } else {\n membershipEvents.push(record);\n }\n cursor.continue();\n };\n request.onerror = function (err) {\n reject(err);\n };\n }).then(function (events) {\n console.log(\"LL: got \" + (events && events.length) + (\" membershipEvents from storage for room \" + roomId + \" ...\"));\n return events;\n });\n },\n\n /**\n * Stores the out-of-band membership events for this room. Note that\n * it still makes sense to store an empty array as the OOB status for the room is\n * marked as fetched, and getOutOfBandMembers will return an empty array instead of null\n * @param {string} roomId\n * @param {event[]} membershipEvents the membership events to store\n */\n setOutOfBandMembers: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(roomId, membershipEvents) {\n var tx, store, markerObject;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n console.log(\"LL: backend about to store \" + membershipEvents.length + (\" members for \" + roomId));\n tx = this.db.transaction([\"oob_membership_events\"], \"readwrite\");\n store = tx.objectStore(\"oob_membership_events\");\n\n membershipEvents.forEach(function (e) {\n store.put(e);\n });\n // aside from all the events, we also write a marker object to the store\n // to mark the fact that OOB members have been written for this room.\n // It's possible that 0 members need to be written as all where previously know\n // but we still need to know whether to return null or [] from getOutOfBandMembers\n // where null means out of band members haven't been stored yet for this room\n markerObject = {\n room_id: roomId,\n oob_written: true,\n state_key: 0\n };\n\n store.put(markerObject);\n _context.next = 8;\n return (0, _bluebird.resolve)(txnAsPromise(tx));\n\n case 8:\n console.log(\"LL: backend done storing for \" + roomId + \"!\");\n\n case 9:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function setOutOfBandMembers(_x, _x2) {\n return _ref3.apply(this, arguments);\n }\n\n return setOutOfBandMembers;\n }(),\n\n clearOutOfBandMembers: function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(roomId) {\n var readTx, store, roomIndex, roomRange, minStateKeyProm, maxStateKeyProm, _ref5, _ref6, minStateKey, maxStateKey, writeTx, writeStore, membersKeyRange;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // the approach to delete all members for a room\n // is to get the min and max state key from the index\n // for that room, and then delete between those\n // keys in the store.\n // this should be way faster than deleting every member\n // individually for a large room.\n readTx = this.db.transaction([\"oob_membership_events\"], \"readonly\");\n store = readTx.objectStore(\"oob_membership_events\");\n roomIndex = store.index(\"room\");\n roomRange = IDBKeyRange.only(roomId);\n minStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, \"next\")).then(function (cursor) {\n return cursor && cursor.primaryKey[1];\n });\n maxStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, \"prev\")).then(function (cursor) {\n return cursor && cursor.primaryKey[1];\n });\n _context2.next = 8;\n return (0, _bluebird.resolve)(_bluebird2.default.all([minStateKeyProm, maxStateKeyProm]));\n\n case 8:\n _ref5 = _context2.sent;\n _ref6 = (0, _slicedToArray3.default)(_ref5, 2);\n minStateKey = _ref6[0];\n maxStateKey = _ref6[1];\n writeTx = this.db.transaction([\"oob_membership_events\"], \"readwrite\");\n writeStore = writeTx.objectStore(\"oob_membership_events\");\n membersKeyRange = IDBKeyRange.bound([roomId, minStateKey], [roomId, maxStateKey]);\n\n\n console.log(\"LL: Deleting all users + marker in storage for \" + (\"room \" + roomId + \", with key range:\"), [roomId, minStateKey], [roomId, maxStateKey]);\n _context2.next = 18;\n return (0, _bluebird.resolve)(reqAsPromise(writeStore.delete(membersKeyRange)));\n\n case 18:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function clearOutOfBandMembers(_x3) {\n return _ref4.apply(this, arguments);\n }\n\n return clearOutOfBandMembers;\n }(),\n\n /**\n * Clear the entire database. This should be used when logging out of a client\n * to prevent mixing data between accounts.\n * @return {Promise} Resolved when the database is cleared.\n */\n clearDatabase: function clearDatabase() {\n var _this4 = this;\n\n return new _bluebird2.default(function (resolve, reject) {\n console.log(\"Removing indexeddb instance: \" + _this4._dbName);\n var req = _this4.indexedDB.deleteDatabase(_this4._dbName);\n\n req.onblocked = function () {\n console.log(\"can't yet delete indexeddb \" + _this4._dbName + \" because it is open elsewhere\");\n };\n\n req.onerror = function (ev) {\n // in firefox, with indexedDB disabled, this fails with a\n // DOMError. We treat this as non-fatal, so that we can still\n // use the app.\n console.warn(\"unable to delete js-sdk store indexeddb: \" + ev.target.error);\n resolve();\n };\n\n req.onsuccess = function () {\n console.log(\"Removed indexeddb instance: \" + _this4._dbName);\n resolve();\n };\n });\n },\n\n /**\n * @param {boolean=} copy If false, the data returned is from internal\n * buffers and must not be mutated. Otherwise, a copy is made before\n * returning such that the data can be safely mutated. Default: true.\n *\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\n getSavedSync: function getSavedSync(copy) {\n if (copy === undefined) copy = true;\n\n var data = this._syncAccumulator.getJSON();\n if (!data.nextBatch) return _bluebird2.default.resolve(null);\n if (copy) {\n // We must deep copy the stored data so that the /sync processing code doesn't\n // corrupt the internal state of the sync accumulator (it adds non-clonable keys)\n return _bluebird2.default.resolve(_utils2.default.deepCopy(data));\n } else {\n return _bluebird2.default.resolve(data);\n }\n },\n\n getNextBatchToken: function getNextBatchToken() {\n return _bluebird2.default.resolve(this._syncAccumulator.getNextBatchToken());\n },\n\n setSyncData: function setSyncData(syncData) {\n var _this5 = this;\n\n return _bluebird2.default.resolve().then(function () {\n _this5._syncAccumulator.accumulate(syncData);\n });\n },\n\n syncToDatabase: function syncToDatabase(userTuples) {\n var syncData = this._syncAccumulator.getJSON();\n\n return _bluebird2.default.all([this._persistUserPresenceEvents(userTuples), this._persistAccountData(syncData.accountData), this._persistSyncData(syncData.nextBatch, syncData.roomsData, syncData.groupsData)]);\n },\n\n /**\n * Persist rooms /sync data along with the next batch token.\n * @param {string} nextBatch The next_batch /sync value.\n * @param {Object} roomsData The 'rooms' /sync data from a SyncAccumulator\n * @param {Object} groupsData The 'groups' /sync data from a SyncAccumulator\n * @return {Promise} Resolves if the data was persisted.\n */\n _persistSyncData: function _persistSyncData(nextBatch, roomsData, groupsData) {\n var _this6 = this;\n\n console.log(\"Persisting sync data up to \", nextBatch);\n return _bluebird2.default.try(function () {\n var txn = _this6.db.transaction([\"sync\"], \"readwrite\");\n var store = txn.objectStore(\"sync\");\n store.put({\n clobber: \"-\", // constant key so will always clobber\n nextBatch: nextBatch,\n roomsData: roomsData,\n groupsData: groupsData\n }); // put == UPSERT\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Persist a list of account data events. Events with the same 'type' will\n * be replaced.\n * @param {Object[]} accountData An array of raw user-scoped account data events\n * @return {Promise} Resolves if the events were persisted.\n */\n _persistAccountData: function _persistAccountData(accountData) {\n var _this7 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this7.db.transaction([\"accountData\"], \"readwrite\");\n var store = txn.objectStore(\"accountData\");\n for (var i = 0; i < accountData.length; i++) {\n store.put(accountData[i]); // put == UPSERT\n }\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Persist a list of [user id, presence event] they are for.\n * Users with the same 'userId' will be replaced.\n * Presence events should be the event in its raw form (not the Event\n * object)\n * @param {Object[]} tuples An array of [userid, event] tuples\n * @return {Promise} Resolves if the users were persisted.\n */\n _persistUserPresenceEvents: function _persistUserPresenceEvents(tuples) {\n var _this8 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this8.db.transaction([\"users\"], \"readwrite\");\n var store = txn.objectStore(\"users\");\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(tuples), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var tuple = _step.value;\n\n store.put({\n userId: tuple[0],\n event: tuple[1]\n }); // put == UPSERT\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Load all user presence events from the database. This is not cached.\n * FIXME: It would probably be more sensible to store the events in the\n * sync.\n * @return {Promise<Object[]>} A list of presence events in their raw form.\n */\n getUserPresenceEvents: function getUserPresenceEvents() {\n var _this9 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this9.db.transaction([\"users\"], \"readonly\");\n var store = txn.objectStore(\"users\");\n return selectQuery(store, undefined, function (cursor) {\n return [cursor.value.userId, cursor.value.event];\n });\n });\n },\n\n /**\n * Load all the account data events from the database. This is not cached.\n * @return {Promise<Object[]>} A list of raw global account events.\n */\n _loadAccountData: function _loadAccountData() {\n var _this10 = this;\n\n console.log(\"LocalIndexedDBStoreBackend: loading account data...\");\n return _bluebird2.default.try(function () {\n var txn = _this10.db.transaction([\"accountData\"], \"readonly\");\n var store = txn.objectStore(\"accountData\");\n return selectQuery(store, undefined, function (cursor) {\n return cursor.value;\n }).then(function (result) {\n console.log(\"LocalIndexedDBStoreBackend: loaded account data\");\n return result;\n });\n });\n },\n\n /**\n * Load the sync data from the database.\n * @return {Promise<Object>} An object with \"roomsData\" and \"nextBatch\" keys.\n */\n _loadSyncData: function _loadSyncData() {\n var _this11 = this;\n\n console.log(\"LocalIndexedDBStoreBackend: loading sync data...\");\n return _bluebird2.default.try(function () {\n var txn = _this11.db.transaction([\"sync\"], \"readonly\");\n var store = txn.objectStore(\"sync\");\n return selectQuery(store, undefined, function (cursor) {\n return cursor.value;\n }).then(function (results) {\n console.log(\"LocalIndexedDBStoreBackend: loaded sync data\");\n if (results.length > 1) {\n console.warn(\"loadSyncData: More than 1 sync row found.\");\n }\n return results.length > 0 ? results[0] : {};\n });\n });\n },\n\n getClientOptions: function getClientOptions() {\n var _this12 = this;\n\n return _bluebird2.default.resolve().then(function () {\n var txn = _this12.db.transaction([\"client_options\"], \"readonly\");\n var store = txn.objectStore(\"client_options\");\n return selectQuery(store, undefined, function (cursor) {\n if (cursor.value && cursor.value && cursor.value.options) {\n return cursor.value.options;\n }\n }).then(function (results) {\n return results[0];\n });\n });\n },\n\n storeClientOptions: function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(options) {\n var txn, store;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n txn = this.db.transaction([\"client_options\"], \"readwrite\");\n store = txn.objectStore(\"client_options\");\n\n store.put({\n clobber: \"-\", // constant key so will always clobber\n options: options\n }); // put == UPSERT\n _context3.next = 5;\n return (0, _bluebird.resolve)(txnAsPromise(txn));\n\n case 5:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function storeClientOptions(_x4) {\n return _ref7.apply(this, arguments);\n }\n\n return storeClientOptions;\n }()\n};\n\nexports.default = LocalIndexedDBStoreBackend;\n//# sourceMappingURL=indexeddb-local-backend.js.map","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();","\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","module.exports = {};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2018 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.5.2\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar SomePromiseArray = Promise._SomePromiseArray;\nfunction any(promises) {\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(1);\n ret.setUnwrap();\n ret.init();\n return promise;\n}\n\nPromise.any = function (promises) {\n return any(promises);\n};\n\nPromise.prototype.any = function () {\n return any(this);\n};\n\n};\n\n},{}],2:[function(_dereq_,module,exports){\n\"use strict\";\nvar firstLineError;\ntry {throw new Error(); } catch (e) {firstLineError = e;}\nvar schedule = _dereq_(\"./schedule\");\nvar Queue = _dereq_(\"./queue\");\nvar util = _dereq_(\"./util\");\n\nfunction Async() {\n this._customScheduler = false;\n this._isTickUsed = false;\n this._lateQueue = new Queue(16);\n this._normalQueue = new Queue(16);\n this._haveDrainedQueues = false;\n this._trampolineEnabled = true;\n var self = this;\n this.drainQueues = function () {\n self._drainQueues();\n };\n this._schedule = schedule;\n}\n\nAsync.prototype.setScheduler = function(fn) {\n var prev = this._schedule;\n this._schedule = fn;\n this._customScheduler = true;\n return prev;\n};\n\nAsync.prototype.hasCustomScheduler = function() {\n return this._customScheduler;\n};\n\nAsync.prototype.enableTrampoline = function() {\n this._trampolineEnabled = true;\n};\n\nAsync.prototype.disableTrampolineIfNecessary = function() {\n if (util.hasDevTools) {\n this._trampolineEnabled = false;\n }\n};\n\nAsync.prototype.haveItemsQueued = function () {\n return this._isTickUsed || this._haveDrainedQueues;\n};\n\n\nAsync.prototype.fatalError = function(e, isNode) {\n if (isNode) {\n process.stderr.write(\"Fatal \" + (e instanceof Error ? e.stack : e) +\n \"\\n\");\n process.exit(2);\n } else {\n this.throwLater(e);\n }\n};\n\nAsync.prototype.throwLater = function(fn, arg) {\n if (arguments.length === 1) {\n arg = fn;\n fn = function () { throw arg; };\n }\n if (typeof setTimeout !== \"undefined\") {\n setTimeout(function() {\n fn(arg);\n }, 0);\n } else try {\n this._schedule(function() {\n fn(arg);\n });\n } catch (e) {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n};\n\nfunction AsyncInvokeLater(fn, receiver, arg) {\n this._lateQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncInvoke(fn, receiver, arg) {\n this._normalQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncSettlePromises(promise) {\n this._normalQueue._pushOne(promise);\n this._queueTick();\n}\n\nif (!util.hasDevTools) {\n Async.prototype.invokeLater = AsyncInvokeLater;\n Async.prototype.invoke = AsyncInvoke;\n Async.prototype.settlePromises = AsyncSettlePromises;\n} else {\n Async.prototype.invokeLater = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvokeLater.call(this, fn, receiver, arg);\n } else {\n this._schedule(function() {\n setTimeout(function() {\n fn.call(receiver, arg);\n }, 100);\n });\n }\n };\n\n Async.prototype.invoke = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvoke.call(this, fn, receiver, arg);\n } else {\n this._schedule(function() {\n fn.call(receiver, arg);\n });\n }\n };\n\n Async.prototype.settlePromises = function(promise) {\n if (this._trampolineEnabled) {\n AsyncSettlePromises.call(this, promise);\n } else {\n this._schedule(function() {\n promise._settlePromises();\n });\n }\n };\n}\n\nfunction _drainQueue(queue) {\n while (queue.length() > 0) {\n _drainQueueStep(queue);\n }\n}\n\nfunction _drainQueueStep(queue) {\n var fn = queue.shift();\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n } else {\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n}\n\nAsync.prototype._drainQueues = function () {\n _drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n _drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29,\"./util\":36}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & (~2097152);\n }\n};\n\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (!true) {\nvar makeMethodCaller = function (methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n var ret = cache[name];\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n cache[\" size\"] = keys.length - 256;\n }\n }\n return ret;\n};\n\ngetMethodCaller = function(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n return fn;\n}\n\nfunction caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);;\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n if (maybeCaller !== null) {\n return this._then(\n maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n return obj[this];\n}\nfunction indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n var isIndex = (typeof propertyName === \"number\");\n var getter;\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (item != null && item.prototype instanceof Error)) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n Context.deactivateLongStackTraces = function() {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context) {\nvar getDomain = Promise._getDomain;\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar es5 = _dereq_(\"./es5\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (true ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n var self = this;\n setTimeout(function() {\n self._notifyUnhandledRejection();\n }, 1);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var domain = getDomain();\n possiblyUnhandledRejection =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var domain = getDomain();\n unhandledRejectionHandled =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace;\n config.longStackTraces = true;\n disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;\n Context.deactivateLongStackTraces();\n async.enableTrampoline();\n config.longStackTraces = false;\n };\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n Context.activateLongStackTraces();\n async.disableTrampolineIfNecessary();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\nvar fireDomEvent = (function() {\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var eventData = {\n detail: event,\n cancelable: true\n };\n es5.defineProperty(\n eventData, \"promise\", {value: event.promise});\n es5.defineProperty(eventData, \"reason\", {value: event.reason});\n var domEvent = new CustomEvent(name.toLowerCase(), eventData);\n return !util.global.dispatchEvent(domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = new Event(name.toLowerCase(), {\n cancelable: true\n });\n domEvent.detail = event;\n es5.defineProperty(domEvent, \"promise\", {value: event.promise});\n es5.defineProperty(domEvent, \"reason\", {value: event.reason});\n return !util.global.dispatchEvent(domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name.toLowerCase(), false, true,\n event);\n return !util.global.dispatchEvent(domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar fireGlobalEvent = (function() {\n if (util.isNode) {\n return function() {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function() {\n return false;\n };\n }\n return function(name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._dereferenceTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n}\n\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction longStackTracesDereferenceTrace() {\n this._trace = undefined;\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n}\n\nfunction reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n}\n\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = firstLineError.stack.split(\"\\n\");\n var lastStackLines = lastLineError.stack.split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\n return boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n}\n\nmodule.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n};\n\n},{\"./es5\":13,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n} else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\n catch(e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function() {\n return true;\n }\n };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"expecting an object but got \" + util.classString(item)\n ));\n }\n }\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n apiRejection,\n INTERNAL,\n tryConvertToPromise,\n Proxyable,\n debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n var result = tryCatch(yieldHandlers[i])(value);\n traceParent._popContext();\n if (result === errorObj) {\n traceParent._pushContext();\n var ret = Promise.reject(errorObj.e);\n traceParent._popContext();\n return ret;\n }\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n this._promise = internal.lastly(function() {\n return _finallyPromise;\n });\n internal._captureStackTrace();\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n }\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\"\n ? [yieldHandler].concat(yieldHandlers)\n : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n this._promise = this._generator = null;\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n this._finallyPromise = null;\n }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n var result;\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\n \"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n reason);\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n result = tryCatch(this._generator[\"return\"]).call(this._generator,\n undefined);\n this._promise._popContext();\n }\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n this._yieldedPromise = null;\n this._promise._pushContext();\n var result = tryCatch(this._generator.next).call(this._generator, value);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n this._yieldedPromise = null;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n var result = tryCatch(this._generator[\"throw\"])\n .call(this._generator, reason);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n};\n\nPromiseSpawn.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver =\n this._generatorFunction = undefined;\n this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n if (result === errorObj) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n if (result.done === true) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n if (!(maybePromise instanceof Promise)) {\n maybePromise =\n promiseFromYieldHandler(maybePromise,\n this._yieldHandlers,\n this._promise);\n if (maybePromise === null) {\n this._promiseRejected(\n new TypeError(\n \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n \"From coroutine:\\u000a\" +\n this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n )\n );\n return;\n }\n }\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n this._yieldedPromise = maybePromise;\n maybePromise._proxy(this, null);\n } else if (((bitField & 33554432) !== 0)) {\n Promise._async.invoke(\n this._promiseFulfilled, this, maybePromise._value()\n );\n } else if (((bitField & 16777216) !== 0)) {\n Promise._async.invoke(\n this._promiseRejected, this, maybePromise._reason()\n );\n } else {\n this._promiseCancelled();\n }\n }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n spawn._promiseFulfilled(undefined);\n return ret;\n };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n spawn._run(Promise.spawn);\n return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async,\n getDomain) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!true) {\nif (canEvaluate) {\n var thenCallback = function(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\n }\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n\n\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n maybePromise._value(), holder);\n } else if (((bitField & 16777216) !== 0)) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var domain = getDomain();\n if (domain !== null) {\n holder.fn = util.domainBind(domain, holder.fn);\n }\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var args = [].slice.call(arguments);;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n this._promise._captureStackTrace();\n var domain = getDomain();\n this._callback = domain === null ? fn : util.domainBind(domain, fn);\n this._preservedValues = _filter === INTERNAL\n ? new Array(this.length())\n : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = (index * -1) - 1;\n values[index] = value;\n if (limit >= 1) {\n this._inFlight--;\n this._drainQueue();\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n this._queue.push(index);\n return false;\n }\n if (preservedValues !== null) preservedValues[index] = value;\n\n var promise = this._promise;\n var callback = this._callback;\n var receiver = promise._boundValue();\n promise._pushContext();\n var ret = tryCatch(callback).call(receiver, value, index, length);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n promise\n );\n if (ret === errorObj) {\n this._reject(ret.e);\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n maybePromise._proxy(this, (index + 1) * -1);\n return false;\n } else if (((bitField & 33554432) !== 0)) {\n ret = maybePromise._value();\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(maybePromise._reason());\n return true;\n } else {\n this._cancel();\n return true;\n }\n }\n values[index] = ret;\n }\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n return true;\n }\n return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n this._promiseFulfilled(values[index], index);\n }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n ret.length = j;\n this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n if (options !== undefined) {\n if (typeof options === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(\n new TypeError(\"'concurrency' must be a number but it is \" +\n util.classString(options.concurrency)));\n }\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\n \"options argument must be an object but it is \" +\n util.classString(options)));\n }\n }\n limit = typeof limit === \"number\" &&\n isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n};\n};\n\n},{\"./util\":36}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);;\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret =\n tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nfunction successAdapter(val, nodeback) {\n var promise = this;\n var receiver = promise._boundValue();\n var ret = val === undefined\n ? tryCatch(nodeback).call(receiver, null)\n : tryCatch(nodeback).call(receiver, null, val);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\nfunction errorAdapter(reason, nodeback) {\n var promise = this;\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n this._then(\n adapter,\n errorAdapter,\n undefined,\n this,\n nodeback\n );\n }\n return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\n\nvar getDomain;\nif (util.isNode) {\n getDomain = function() {\n var ret = process.domain;\n if (ret === undefined) ret = null;\n return ret;\n };\n} else {\n getDomain = function() {\n return null;\n };\n}\nutil.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n _dereq_(\"./promise_array\")(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\nvar debug = _dereq_(\"./debuggability\")(Promise, Context);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((this._bitField & 2097152) !== 0)) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var domain = getDomain();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\n if (((bitField & 33554432) !== 0)) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if (((bitField & 16777216) !== 0)) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: domain === null ? handler\n : (typeof handler === \"function\" &&\n util.domainBind(domain, handler)),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise, receiver, domain);\n }\n\n return promise;\n};\n\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n this._bitField = this._bitField | 134217728;\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n domain\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n if (typeof fulfill === \"function\") {\n this[base + 0] =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\n this._setFollowee(promise);\n } else if (((bitField & 33554432) !== 0)) {\n this._fulfill(promise._value());\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n var promiseCreated = promise._popContext();\n bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = ((bitField & 134217728) !== 0);\n if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if (((bitField & 33554432) !== 0)) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if (((bitField & 134217728) !== 0)) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n this._dereferenceTrace();\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = (bitField & 65535);\n\n if (len > 0) {\n if (((bitField & 16842752) !== 0)) {\n var reason = this._fulfillmentHandler0;\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n};\n\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\nPromise.Promise = Promise;\nPromise.version = \"3.5.2\";\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./call_get.js')(Promise);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./filter.js')(Promise, INTERNAL);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./any.js')(Promise);\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \n function fillTypes(value) { \n var p = new Promise(INTERNAL); \n p._fulfillmentHandler0 = value; \n p._rejectionHandler0 = value; \n p._promise0 = value; \n p._receiver0 = value; \n } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \n fillTypes(1); \n fillTypes(function(){}); \n fillTypes(undefined); \n fillTypes(false); \n fillTypes(new Promise(INTERNAL)); \n debug.setBounds(Async.firstLineError, util.lastLineError); \n return Promise; \n\n};\n\n},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36}],23:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if (((bitField & 50397184) === 0)) {\n this._promise._setAsyncGuaranteed();\n return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\n } else if (((bitField & 33554432) !== 0)) {\n values = values._value();\n } else if (((bitField & 16777216) !== 0)) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if (((bitField & 50397184) === 0)) {\n maybePromise._proxy(this, i);\n this._values[i] = maybePromise;\n } else if (((bitField & 33554432) !== 0)) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if (((bitField & 16777216) !== 0)) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n \"arity\", \"length\",\n \"name\",\n \"arguments\",\n \"caller\",\n \"callee\",\n \"prototype\",\n \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n return util.isIdentifier(name) &&\n name.charAt(0) !== \"_\" &&\n name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n }\n catch (e) {\n return false;\n }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix,\n defaultPromisified);\n return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\"\n .replace(\"%s\", suffix));\n }\n }\n }\n }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter\n ? true : defaultFilter(key, value, obj);\n if (typeof value === \"function\" &&\n !isPromisified(value) &&\n !hasPromisified(obj, key, suffix) &&\n filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (!true) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n for(var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n return util.filledRange(\n Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined\n ? \"ret = callback({{args}}, nodeback); break;\\n\"\n : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] +\":\" +\n generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", (shouldProxyThis\n ? \"ret = callback.apply(this, args);\\n\"\n : \"ret = callback.apply(receiver, args);\\n\"));\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\"\n ? (\"this != null ? this['\"+callback+\"'] : fn\")\n : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n .replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\",\n \"fn\",\n \"receiver\",\n \"withAppended\",\n \"maybeWrapAsError\",\n \"nodebackForPromise\",\n \"tryCatch\",\n \"errorObj\",\n \"notEnumerableProp\",\n \"INTERNAL\",\n body)(\n Promise,\n fn,\n receiver,\n withAppended,\n maybeWrapAsError,\n nodebackForPromise,\n util.tryCatch,\n util.errorObj,\n util.notEnumerableProp,\n INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = (function() {return this;})();\n var method = callback;\n if (typeof method === \"string\") {\n callback = fn;\n }\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n var cb = typeof method === \"string\" && this !== defaultThis\n ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch(e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n ? makeNodePromisifiedEval\n : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods =\n promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i+= 2) {\n var key = methods[i];\n var fn = methods[i+1];\n var promisifiedKey = key + suffix;\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] =\n makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function() {\n return makeNodePromisified(key, THIS, key,\n fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n util.toFastProperties(obj);\n return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined,\n callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n if (isPromisified(fn)) {\n return fn;\n }\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && typeof target !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n\n var keys = util.inheritedDataKeys(target);\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n if (keys[i] !== \"constructor\" &&\n util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier,\n multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n})();\n\nvar entriesToMap = function(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n this.constructor$(entries);\n this._isMap = isMap;\n this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n var val;\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n this._resolve(val);\n return true;\n }\n return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n};\n\nfunction props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(\n Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n return ret;\n}\n\nPromise.prototype.props = function () {\n return props(this);\n};\n\nPromise.props = function (promises) {\n return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\n var wrapMask = this._capacity - 1;\n this[(j + 0) & wrapMask] = fn;\n this[(j + 1) & wrapMask] = receiver;\n this[(j + 2) & wrapMask] = arg;\n this._length = length;\n};\n\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n return promise.then(function(array) {\n return race(array, promise);\n });\n};\n\nfunction race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null)\n return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n return ret;\n}\n\nPromise.race = function (promises) {\n return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var domain = getDomain();\n this._fn = domain === null ? fn : util.domainBind(domain, fn);\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n initialValue._attachCancellationCallback(this);\n }\n this._initialValue = initialValue;\n this._currentCancellable = null;\n if(_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n this._promise._captureStackTrace();\n this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n if (this._eachValues !== undefined && \n this._eachValues !== null && \n accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n this._resolve(this._eachValues !== undefined ? this._eachValues\n : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n this._promise._resolveCallback(value);\n this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n this._resultCancelled$();\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value\n ._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n}\n\nfunction gotAccum(accum) {\n this.accum = accum;\n this.array._gotAccum(accum);\n var value = tryConvertToPromise(this.value, this.array._promise);\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n}\n\nfunction gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n promise._pushContext();\n var ret;\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(),\n this.accum, value, this.index, this.length);\n }\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n promise\n );\n return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova))) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function() {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function() {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n })();\n} else if (typeof setImmediate !== \"undefined\") {\n schedule = function (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n if (this._howMany === 0) {\n this._resolve([]);\n return;\n }\n this._init$(undefined, -5);\n var isArrayResolved = isArray(this._values);\n if (!this._isResolved() &&\n isArrayResolved &&\n this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n};\n\nSomePromiseArray.prototype.init = function () {\n this._initialized = true;\n this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n return true;\n }\n return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n this._addRejected(CANCELLATION);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n return true;\n }\n return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" +\n this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n}\n\nPromise.some = function (promises, howMany) {\n return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle) {\n this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n if (value !== undefined) {\n ret = Promise.resolve(value)\n ._then(afterValue, null, null, ms, undefined);\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function() { ret._fulfill(); }, +ms);\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n ret._captureStackTrace();\n }\n ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n var err;\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n util.markAsOriginatingFromRejection(err);\n promise._attachExtraTrace(err);\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n};\n\nfunction successClear(value) {\n clearTimeout(this.handle);\n return value;\n}\n\nfunction failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n }\n\n return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n var TypeError = _dereq_(\"./errors\").TypeError;\n var inherits = _dereq_(\"./util\").inherits;\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function(){throw e;}, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n if (maybePromise !== thenable &&\n typeof thenable._isDisposable === \"function\" &&\n typeof thenable._getDisposer === \"function\" &&\n thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n return maybePromise;\n }\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n if (maybePromise instanceof Promise &&\n maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(\n maybePromise._getDisposer().tryDispose(inspection),\n resources.promise);\n } catch (e) {\n return thrower(e);\n }\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower,\n null, null, null);\n }\n }\n iterator();\n }\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function(inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL\n ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n this._promise._unsetDisposable();\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return (d != null &&\n typeof d.resource === \"function\" &&\n typeof d.tryDispose === \"function\");\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n return value.promise();\n }\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length-1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function() {\n var len = this.length;\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\n \"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var input;\n var spreadArgs = true;\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n var resources = new ResourceList(len);\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n if (maybePromise instanceof Promise) {\n resource =\n maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources)\n .then(function(inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n inspections[i] = inspection.value();\n }\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs\n ? fn.apply(undefined, inspections) : fn(inspections);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n\n var promise = resultPromise.lastly(function() {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n promise._setOnCancel(resources);\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & (~131072);\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n throw new TypeError();\n };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n}\n\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function(obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var receiver = new FakeConstructor();\n function ic() {\n return typeof receiver.foo;\n }\n ic();\n ic();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj instanceof Error ||\n (obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\");\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n return Array.from(v);\n } : function(v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if ({}.toString.call(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nfunction domainBind(self, cb) {\n return self.bind(cb);\n}\n\nvar ret = {\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n hasDevTools: typeof chrome !== \"undefined\" && chrome &&\n typeof chrome.loadTimes === \"function\",\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n domainBind: domainBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version = process.versions.node.split(\".\").map(Number);\n return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13}]},{},[4])(4)\n}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/mobileguide.js b/riot/bundles/f5c70ee9a294f6e4590e/mobileguide.js deleted file mode 100644 index 2e1e4f5..0000000 --- a/riot/bundles/f5c70ee9a294f6e4590e/mobileguide.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1880)}({111:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},112:function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},116:function(t,e,n){var r=n(35);t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},118:function(t,e,n){var r=n(111),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},119:function(t,e,n){var r=n(120)("keys"),i=n(96);t.exports=function(t){return r[t]||(r[t]=i(t))}},120:function(t,e,n){var r=n(34),i=r["__core-js_shared__"]||(r["__core-js_shared__"]={});t.exports=function(t){return i[t]||(i[t]={})}},121:function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},136:function(t,e,n){var r=n(35),i=n(34).document,o=r(i)&&r(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},14:function(t,e,n){t.exports={default:n(219),__esModule:!0}},15:function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},161:function(t,e,n){t.exports=!n(44)&&!n(58)(function(){return 7!=Object.defineProperty(n(136)("div"),"a",{get:function(){return 7}}).a})},162:function(t,e,n){var r=n(61),i=n(59),o=n(213)(!1),a=n(119)("IE_PROTO");t.exports=function(t,e){var n,s=i(t),c=0,u=[];for(n in s)n!=a&&r(s,n)&&u.push(n);for(;e.length>c;)r(s,n=e[c++])&&(~o(u,n)||u.push(n));return u}},163:function(t,e,n){var r=n(95);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},18:function(t,e){var n=t.exports={version:"2.5.1"};"number"==typeof __e&&(__e=n)},187:function(t,e,n){(function(t){var r=void 0!==t&&t||"undefined"!=typeof self&&self||window,i=Function.prototype.apply;function o(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new o(i.call(setTimeout,r,arguments),clearTimeout)},e.setInterval=function(){return new o(i.call(setInterval,r,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(r,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(218),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(15))},1880:function(t,e,n){"use strict";var r=function(t){return t&&t.__esModule?t:{default:t}}(n(19)),i=n(9),o=function(){var t=(0,i.coroutine)(r.default.mark(function t(){var e,n;return r.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return document.getElementById("back_to_riot_button").onclick=s,t.next=3,(0,i.resolve)((0,a.getVectorConfig)(".."));case 3:e=t.sent,n=void 0,e&&e.default_hs_url&&(n=e.default_hs_url),n&&!n.endsWith("/")&&(n+="/"),n&&"https://matrix.org/"!==n&&(document.getElementById("step2_container").style.display="block",document.getElementById("hs_url").innerHTML=n,document.getElementById("step_login_header").innerHTML="Step 3: Register or Log in");case 8:case"end":return t.stop()}},t,this)}));return function(){return t.apply(this,arguments)}}(),a=n(411);function s(){document.cookie="mobile_redirect_to_guide=false;path=/",window.location.href="../"}o()},19:function(t,e,n){t.exports=n(216)},213:function(t,e,n){var r=n(59),i=n(118),o=n(214);t.exports=function(t){return function(e,n,a){var s,c=r(e),u=i(c.length),l=o(a,u);if(t&&n!=n){for(;u>l;)if((s=c[l++])!=s)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}}},214:function(t,e,n){var r=n(111),i=Math.max,o=Math.min;t.exports=function(t,e){return(t=r(t))<0?i(t+e,0):o(t,e)}},216:function(t,e,n){var r=function(){return this}()||Function("return this")(),i=r.regeneratorRuntime&&Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime")>=0,o=i&&r.regeneratorRuntime;if(r.regeneratorRuntime=void 0,t.exports=n(217),i)r.regeneratorRuntime=o;else try{delete r.regeneratorRuntime}catch(t){r.regeneratorRuntime=void 0}},217:function(t,e){!function(e){"use strict";var n,r=Object.prototype,i=r.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag",u="object"==typeof t,l=e.regeneratorRuntime;if(l)u&&(t.exports=l);else{(l=e.regeneratorRuntime=u?t.exports:{}).wrap=b;var f="suspendedStart",p="suspendedYield",h="executing",d="completed",_={},v={};v[a]=function(){return this};var y=Object.getPrototypeOf,m=y&&y(y(P([])));m&&m!==r&&i.call(m,a)&&(v=m);var g=j.prototype=C.prototype=Object.create(v);E.prototype=g.constructor=j,j.constructor=E,j[c]=E.displayName="GeneratorFunction",l.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===E||"GeneratorFunction"===(e.displayName||e.name))},l.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,j):(t.__proto__=j,c in t||(t[c]="GeneratorFunction")),t.prototype=Object.create(g),t},l.awrap=function(t){return{__await:t}},k(x.prototype),x.prototype[s]=function(){return this},l.AsyncIterator=x,l.async=function(t,e,n,r){var i=new x(b(t,e,n,r));return l.isGeneratorFunction(e)?i:i.next().then(function(t){return t.done?t.value:i.next()})},k(g),g[c]="Generator",g[a]=function(){return this},g.toString=function(){return"[object Generator]"},l.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var r=e.pop();if(r in t)return n.value=r,n.done=!1,n}return n.done=!0,n}},l.values=P,S.prototype={constructor:S,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(O),!t)for(var e in this)"t"===e.charAt(0)&&i.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(r,i){return s.type="throw",s.arg=t,e.next=r,i&&(e.method="next",e.arg=n),!!i}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=i.call(a,"catchLoc"),u=i.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var o=r;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=t,a.arg=e,o?(this.method="next",this.next=o.finallyLoc,_):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),_},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),O(n),_}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;O(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:P(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=n),_}}}function b(t,e,n,r){var i=e&&e.prototype instanceof C?e:C,o=Object.create(i.prototype),a=new S(r||[]);return o._invoke=function(t,e,n){var r=f;return function(i,o){if(r===h)throw new Error("Generator is already running");if(r===d){if("throw"===i)throw o;return R()}for(n.method=i,n.arg=o;;){var a=n.delegate;if(a){var s=T(a,n);if(s){if(s===_)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===f)throw r=d,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=h;var c=w(t,e,n);if("normal"===c.type){if(r=n.done?d:p,c.arg===_)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r=d,n.method="throw",n.arg=c.arg)}}}(t,n,a),o}function w(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}function C(){}function E(){}function j(){}function k(t){["next","throw","return"].forEach(function(e){t[e]=function(t){return this._invoke(e,t)}})}function x(t){var e;this._invoke=function(n,r){function o(){return new Promise(function(e,o){!function e(n,r,o,a){var s=w(t[n],t,r);if("throw"!==s.type){var c=s.arg,u=c.value;return u&&"object"==typeof u&&i.call(u,"__await")?Promise.resolve(u.__await).then(function(t){e("next",t,o,a)},function(t){e("throw",t,o,a)}):Promise.resolve(u).then(function(t){c.value=t,o(c)},a)}a(s.arg)}(n,r,e,o)})}return e=e?e.then(o,o):o()}}function T(t,e){var r=t.iterator[e.method];if(r===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=n,T(t,e),"throw"===e.method))return _;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return _}var i=w(r,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,_;var o=i.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,_):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,_)}function F(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function O(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function S(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(F,this),this.reset(!0)}function P(t){if(t){var e=t[a];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function e(){for(;++r<t.length;)if(i.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=n,e.done=!0,e};return o.next=o}}return{next:R}}function R(){return{value:n,done:!0}}}(function(){return this}()||Function("return this")())},218:function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var r,i=1,o={},a=!1,s=t.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(t);c=c&&c.setTimeout?c:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick(function(){l(t)})}:function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?function(){var e="setImmediate$"+Math.random()+"$",n=function(n){n.source===t&&"string"==typeof n.data&&0===n.data.indexOf(e)&&l(+n.data.slice(e.length))};t.addEventListener?t.addEventListener("message",n,!1):t.attachEvent("onmessage",n),r=function(n){t.postMessage(e+n,"*")}}():t.MessageChannel?function(){var t=new MessageChannel;t.port1.onmessage=function(t){l(t.data)},r=function(e){t.port2.postMessage(e)}}():s&&"onreadystatechange"in s.createElement("script")?function(){var t=s.documentElement;r=function(e){var n=s.createElement("script");n.onreadystatechange=function(){l(e),n.onreadystatechange=null,t.removeChild(n),n=null},t.appendChild(n)}}():r=function(t){setTimeout(l,0,t)},c.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var a={callback:t,args:e};return o[i]=a,r(i),i++},c.clearImmediate=u}function u(t){delete o[t]}function l(t){if(a)setTimeout(l,0,t);else{var e=o[t];if(e){a=!0;try{!function(t){var e=t.callback,r=t.args;switch(r.length){case 0:e();break;case 1:e(r[0]);break;case 2:e(r[0],r[1]);break;case 3:e(r[0],r[1],r[2]);break;default:e.apply(n,r)}}(e)}finally{u(t),a=!1}}}}}("undefined"==typeof self?void 0===t?this:t:self)}).call(this,n(15),n(54))},219:function(t,e,n){n(220),t.exports=n(18).Object.keys},220:function(t,e,n){var r=n(87),i=n(78);n(68)("keys",function(){return function(t){return i(r(t))}})},26:function(t,e,n){var r=n(34),i=n(18),o=n(66),a=n(60),s=function(t,e,n){var c,u,l,f=t&s.F,p=t&s.G,h=t&s.S,d=t&s.P,_=t&s.B,v=t&s.W,y=p?i:i[e]||(i[e]={}),m=y.prototype,g=p?r:h?r[e]:(r[e]||{}).prototype;for(c in p&&(n=e),n)(u=!f&&g&&void 0!==g[c])&&c in y||(l=u?g[c]:n[c],y[c]=p&&"function"!=typeof g[c]?n[c]:_&&u?o(l,r):v&&g[c]==l?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(l):d&&"function"==typeof l?o(Function.call,l):l,d&&((y.virtual||(y.virtual={}))[c]=l,t&s.R&&m&&!m[c]&&a(m,c,l)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},34:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},35:function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},411:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getVectorConfig=void 0;var r=c(n(19)),i=c(n(14)),o=n(9),a=c(o),s=(e.getVectorConfig=function(){var t=(0,o.coroutine)(r.default.mark(function t(e){var n;return r.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return void 0===e&&(e=""),""===e||e.endsWith("/")||(e+="/"),t.prev=2,t.next=5,(0,o.resolve)(u(e+"config."+document.domain+".json"));case 5:if(n=t.sent,0!==(0,i.default)(n).length){t.next=8;break}throw new Error;case 8:return t.abrupt("return",n);case 11:return t.prev=11,t.t0=t.catch(2),t.next=15,(0,o.resolve)(u(e+"config.json"));case 15:return t.abrupt("return",t.sent);case 16:case"end":return t.stop()}},t,this,[[2,11]])}));return function(e){return t.apply(this,arguments)}}(),c(n(99)));function c(t){return t&&t.__esModule?t:{default:t}}function u(t){return new a.default(function(e,n){(0,s.default)({method:"GET",url:t},function(t,r,i){if(t||r.status<200||r.status>=300)return r&&(404==r.status||0==r.status&&""==i)&&e({}),void n({err:t,response:r});e(JSON.parse(i))})})}},44:function(t,e,n){t.exports=!n(58)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},46:function(t,e,n){var r=n(52),i=n(161),o=n(116),a=Object.defineProperty;e.f=n(44)?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},52:function(t,e,n){var r=n(35);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},54:function(t,e){var n,r,i=t.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(t){n=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(t){r=a}}();var c,u=[],l=!1,f=-1;function p(){l&&c&&(l=!1,c.length?u=c.concat(u):f=-1,u.length&&h())}function h(){if(!l){var t=s(p);l=!0;for(var e=u.length;e;){for(c=u,u=[];++f<e;)c&&c[f].run();f=-1,e=u.length}c=null,l=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function d(t,e){this.fun=t,this.array=e}function _(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];u.push(new d(t,e)),1!==u.length||l||s(h)},d.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=_,i.addListener=_,i.once=_,i.off=_,i.removeListener=_,i.removeAllListeners=_,i.emit=_,i.prependListener=_,i.prependOnceListener=_,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},58:function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},59:function(t,e,n){var r=n(163),i=n(112);t.exports=function(t){return r(i(t))}},60:function(t,e,n){var r=n(46),i=n(76);t.exports=n(44)?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},61:function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},66:function(t,e,n){var r=n(94);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},68:function(t,e,n){var r=n(26),i=n(18),o=n(58);t.exports=function(t,e){var n=(i.Object||{})[t]||Object[t],a={};a[t]=e(n),r(r.S+r.F*o(function(){n(1)}),"Object",a)}},76:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},78:function(t,e,n){var r=n(162),i=n(121);t.exports=Object.keys||function(t){return r(t,i)}},87:function(t,e,n){var r=n(112);t.exports=function(t){return Object(r(t))}},9:function(t,e,n){(function(e,n,r){t.exports=function(){var t,i,o;return function t(e,n,r){function i(a,s){if(!n[a]){if(!e[a]){var c="function"==typeof _dereq_&&_dereq_;if(!s&&c)return c(a,!0);if(o)return o(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var l=n[a]={exports:{}};e[a][0].call(l.exports,function(t){var n=e[a][1][t];return i(n||t)},l,l.exports,t,e,n,r)}return n[a].exports}for(var o="function"==typeof _dereq_&&_dereq_,a=0;a<r.length;a++)i(r[a]);return i}({1:[function(t,e,n){"use strict";e.exports=function(t){var e=t._SomePromiseArray;function n(t){var n=new e(t),r=n.promise();return n.setHowMany(1),n.setUnwrap(),n.init(),r}t.any=function(t){return n(t)},t.prototype.any=function(){return n(this)}}},{}],2:[function(t,n,r){"use strict";var i;try{throw new Error}catch(t){i=t}var o=t("./schedule"),a=t("./queue"),s=t("./util");function c(){this._customScheduler=!1,this._isTickUsed=!1,this._lateQueue=new a(16),this._normalQueue=new a(16),this._haveDrainedQueues=!1,this._trampolineEnabled=!0;var t=this;this.drainQueues=function(){t._drainQueues()},this._schedule=o}function u(t,e,n){this._lateQueue.push(t,e,n),this._queueTick()}function l(t,e,n){this._normalQueue.push(t,e,n),this._queueTick()}function f(t){this._normalQueue._pushOne(t),this._queueTick()}function p(t){for(;t.length()>0;)h(t)}function h(t){var e=t.shift();if("function"!=typeof e)e._settlePromises();else{var n=t.shift(),r=t.shift();e.call(n,r)}}c.prototype.setScheduler=function(t){var e=this._schedule;return this._schedule=t,this._customScheduler=!0,e},c.prototype.hasCustomScheduler=function(){return this._customScheduler},c.prototype.enableTrampoline=function(){this._trampolineEnabled=!0},c.prototype.disableTrampolineIfNecessary=function(){s.hasDevTools&&(this._trampolineEnabled=!1)},c.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues},c.prototype.fatalError=function(t,n){n?(e.stderr.write("Fatal "+(t instanceof Error?t.stack:t)+"\n"),e.exit(2)):this.throwLater(t)},c.prototype.throwLater=function(t,e){if(1===arguments.length&&(e=t,t=function(){throw e}),"undefined"!=typeof setTimeout)setTimeout(function(){t(e)},0);else try{this._schedule(function(){t(e)})}catch(t){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}},s.hasDevTools?(c.prototype.invokeLater=function(t,e,n){this._trampolineEnabled?u.call(this,t,e,n):this._schedule(function(){setTimeout(function(){t.call(e,n)},100)})},c.prototype.invoke=function(t,e,n){this._trampolineEnabled?l.call(this,t,e,n):this._schedule(function(){t.call(e,n)})},c.prototype.settlePromises=function(t){this._trampolineEnabled?f.call(this,t):this._schedule(function(){t._settlePromises()})}):(c.prototype.invokeLater=u,c.prototype.invoke=l,c.prototype.settlePromises=f),c.prototype._drainQueues=function(){p(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,p(this._lateQueue)},c.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},c.prototype._reset=function(){this._isTickUsed=!1},n.exports=c,n.exports.firstLineError=i},{"./queue":26,"./schedule":29,"./util":36}],3:[function(t,e,n){"use strict";e.exports=function(t,e,n,r){var i=!1,o=function(t,e){this._reject(e)},a=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(o,o,null,this,t)},s=function(t,e){0==(50397184&this._bitField)&&this._resolveCallback(e.target)},c=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(o){i||(i=!0,t.prototype._propagateFrom=r.propagateFromFunction(),t.prototype._boundValue=r.boundValueFunction());var u=n(o),l=new t(e);l._propagateFrom(this,1);var f=this._target();if(l._setBoundTo(u),u instanceof t){var p={promiseRejectionQueued:!1,promise:l,target:f,bindingPromise:u};f._then(e,a,void 0,l,p),u._then(s,c,void 0,l,p),l._setOnCancel(u)}else l._resolveCallback(f);return l},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=2097152|this._bitField,this._boundTo=t):this._bitField=-2097153&this._bitField},t.prototype._isBound=function(){return 2097152==(2097152&this._bitField)},t.bind=function(e,n){return t.resolve(n).bind(e)}}},{}],4:[function(t,e,n){"use strict";var r;"undefined"!=typeof Promise&&(r=Promise);var i=t("./promise")();i.noConflict=function(){try{Promise===i&&(Promise=r)}catch(t){}return i},e.exports=i},{"./promise":22}],5:[function(t,e,n){"use strict";var r=Object.create;if(r){var i=r(null),o=r(null);i[" size"]=o[" size"]=0}e.exports=function(e){var n=t("./util"),r=n.canEvaluate;function i(t){var r=this.pop(),i=function(t,r){var i;if(null!=t&&(i=t[r]),"function"!=typeof i){var o="Object "+n.classString(t)+" has no method '"+n.toString(r)+"'";throw new e.TypeError(o)}return i}(t,r);return i.apply(t,this)}function o(t){return t[this]}function a(t){var e=+this;return e<0&&(e=Math.max(0,e+t.length)),t[e]}n.isIdentifier,e.prototype.call=function(t){var e=[].slice.call(arguments,1);return e.push(t),this._then(i,void 0,void 0,e,void 0)},e.prototype.get=function(t){var e,n="number"==typeof t;if(n)e=a;else if(r){var i=(void 0)(t);e=null!==i?i:o}else e=o;return this._then(e,void 0,void 0,t,void 0)}}},{"./util":36}],6:[function(t,e,n){"use strict";e.exports=function(e,n,r,i){var o=t("./util"),a=o.tryCatch,s=o.errorObj,c=e._async;e.prototype.break=e.prototype.cancel=function(){if(!i.cancellation())return this._warn("cancellation is disabled");for(var t=this,e=t;t._isCancellable();){if(!t._cancelBy(e)){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}var n=t._cancellationParent;if(null==n||!n._isCancellable()){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}t._isFollowing()&&t._followee().cancel(),t._setWillBeCancelled(),e=t,t=n}},e.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},e.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},e.prototype._cancelBy=function(t){return t===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},e.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},e.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),c.invoke(this._cancelPromises,this,void 0))},e.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},e.prototype._unsetOnCancel=function(){this._onCancelField=void 0},e.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},e.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},e.prototype._doInvokeOnCancel=function(t,e){if(o.isArray(t))for(var n=0;n<t.length;++n)this._doInvokeOnCancel(t[n],e);else if(void 0!==t)if("function"==typeof t){if(!e){var r=a(t).call(this._boundValue());r===s&&(this._attachExtraTrace(r.e),c.throwLater(r.e))}}else t._resultCancelled(this)},e.prototype._invokeOnCancel=function(){var t=this._onCancel();this._unsetOnCancel(),c.invoke(this._doInvokeOnCancel,this,t)},e.prototype._invokeInternalOnCancel=function(){this._isCancellable()&&(this._doInvokeOnCancel(this._onCancel(),!0),this._unsetOnCancel())},e.prototype._resultCancelled=function(){this.cancel()}}},{"./util":36}],7:[function(t,e,n){"use strict";e.exports=function(e){var n=t("./util"),r=t("./es5").keys,i=n.tryCatch,o=n.errorObj;return function(t,a,s){return function(c){var u=s._boundValue();t:for(var l=0;l<t.length;++l){var f=t[l];if(f===Error||null!=f&&f.prototype instanceof Error){if(c instanceof f)return i(a).call(u,c)}else if("function"==typeof f){var p=i(f).call(u,c);if(p===o)return p;if(p)return i(a).call(u,c)}else if(n.isObject(c)){for(var h=r(f),d=0;d<h.length;++d){var _=h[d];if(f[_]!=c[_])continue t}return i(a).call(u,c)}}return e}}}},{"./es5":13,"./util":36}],8:[function(t,e,n){"use strict";e.exports=function(t){var e=!1,n=[];function r(){this._trace=new r.CapturedTrace(i())}function i(){var t=n.length-1;if(t>=0)return n[t]}return t.prototype._promiseCreated=function(){},t.prototype._pushContext=function(){},t.prototype._popContext=function(){return null},t._peekContext=t.prototype._peekContext=function(){},r.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,n.push(this._trace))},r.prototype._popContext=function(){if(void 0!==this._trace){var t=n.pop(),e=t._promiseCreated;return t._promiseCreated=null,e}return null},r.CapturedTrace=null,r.create=function(){if(e)return new r},r.deactivateLongStackTraces=function(){},r.activateLongStackTraces=function(){var n=t.prototype._pushContext,o=t.prototype._popContext,a=t._peekContext,s=t.prototype._peekContext,c=t.prototype._promiseCreated;r.deactivateLongStackTraces=function(){t.prototype._pushContext=n,t.prototype._popContext=o,t._peekContext=a,t.prototype._peekContext=s,t.prototype._promiseCreated=c,e=!1},e=!0,t.prototype._pushContext=r.prototype._pushContext,t.prototype._popContext=r.prototype._popContext,t._peekContext=t.prototype._peekContext=i,t.prototype._promiseCreated=function(){var t=this._peekContext();t&&null==t._promiseCreated&&(t._promiseCreated=this)}},r}},{}],9:[function(t,n,r){"use strict";n.exports=function(n,r){var i,o,a,s=n._getDomain,c=n._async,u=t("./errors").Warning,l=t("./util"),f=t("./es5"),p=l.canAttachTrace,h=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,d=/\((?:timers\.js):\d+:\d+\)/,_=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,v=null,y=null,m=!1,g=!(0==l.env("BLUEBIRD_DEBUG")),b=!(0==l.env("BLUEBIRD_WARNINGS")||!g&&!l.env("BLUEBIRD_WARNINGS")),w=!(0==l.env("BLUEBIRD_LONG_STACK_TRACES")||!g&&!l.env("BLUEBIRD_LONG_STACK_TRACES")),C=0!=l.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(b||!!l.env("BLUEBIRD_W_FORGOTTEN_RETURN"));n.prototype.suppressUnhandledRejections=function(){var t=this._target();t._bitField=-1048577&t._bitField|524288},n.prototype._ensurePossibleRejectionHandled=function(){if(0==(524288&this._bitField)){this._setRejectionIsUnhandled();var t=this;setTimeout(function(){t._notifyUnhandledRejection()},1)}},n.prototype._notifyUnhandledRejectionIsHandled=function(){$("rejectionHandled",i,void 0,this)},n.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},n.prototype._returnedNonUndefined=function(){return 0!=(268435456&this._bitField)},n.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var t=this._settledValue();this._setUnhandledRejectionIsNotified(),$("unhandledRejection",o,t,this)}},n.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},n.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},n.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},n.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},n.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},n.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},n.prototype._warn=function(t,e,n){return U(t,e,n||this)},n.onPossiblyUnhandledRejection=function(t){var e=s();o="function"==typeof t?null===e?t:l.domainBind(e,t):void 0},n.onUnhandledRejectionHandled=function(t){var e=s();i="function"==typeof t?null===e?t:l.domainBind(e,t):void 0};var E=function(){};n.longStackTraces=function(){if(c.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!Z.longStackTraces&&z()){var t=n.prototype._captureStackTrace,e=n.prototype._attachExtraTrace,i=n.prototype._dereferenceTrace;Z.longStackTraces=!0,E=function(){if(c.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");n.prototype._captureStackTrace=t,n.prototype._attachExtraTrace=e,n.prototype._dereferenceTrace=i,r.deactivateLongStackTraces(),c.enableTrampoline(),Z.longStackTraces=!1},n.prototype._captureStackTrace=M,n.prototype._attachExtraTrace=V,n.prototype._dereferenceTrace=H,r.activateLongStackTraces(),c.disableTrampolineIfNecessary()}},n.hasLongStackTraces=function(){return Z.longStackTraces&&z()};var j=function(){try{if("function"==typeof CustomEvent){var t=new CustomEvent("CustomEvent");return l.global.dispatchEvent(t),function(t,e){var n={detail:e,cancelable:!0};f.defineProperty(n,"promise",{value:e.promise}),f.defineProperty(n,"reason",{value:e.reason});var r=new CustomEvent(t.toLowerCase(),n);return!l.global.dispatchEvent(r)}}if("function"==typeof Event){var t=new Event("CustomEvent");return l.global.dispatchEvent(t),function(t,e){var n=new Event(t.toLowerCase(),{cancelable:!0});return n.detail=e,f.defineProperty(n,"promise",{value:e.promise}),f.defineProperty(n,"reason",{value:e.reason}),!l.global.dispatchEvent(n)}}var t=document.createEvent("CustomEvent");return t.initCustomEvent("testingtheevent",!1,!0,{}),l.global.dispatchEvent(t),function(t,e){var n=document.createEvent("CustomEvent");return n.initCustomEvent(t.toLowerCase(),!1,!0,e),!l.global.dispatchEvent(n)}}catch(t){}return function(){return!1}}(),k=l.isNode?function(){return e.emit.apply(e,arguments)}:l.global?function(t){var e="on"+t.toLowerCase(),n=l.global[e];return!!n&&(n.apply(l.global,[].slice.call(arguments,1)),!0)}:function(){return!1};function x(t,e){return{promise:e}}var T={promiseCreated:x,promiseFulfilled:x,promiseRejected:x,promiseResolved:x,promiseCancelled:x,promiseChained:function(t,e,n){return{promise:e,child:n}},warning:function(t,e){return{warning:e}},unhandledRejection:function(t,e,n){return{reason:e,promise:n}},rejectionHandled:x},F=function(t){var e=!1;try{e=k.apply(null,arguments)}catch(t){c.throwLater(t),e=!0}var n=!1;try{n=j(t,T[t].apply(null,arguments))}catch(t){c.throwLater(t),n=!0}return n||e};function O(){return!1}function S(t,e,n){var r=this;try{t(e,n,function(t){if("function"!=typeof t)throw new TypeError("onCancel must be a function, got: "+l.toString(t));r._attachCancellationCallback(t)})}catch(t){return t}}function P(t){if(!this._isCancellable())return this;var e=this._onCancel();void 0!==e?l.isArray(e)?e.push(t):this._setOnCancel([e,t]):this._setOnCancel(t)}function R(){return this._onCancelField}function A(t){this._onCancelField=t}function L(){this._cancellationParent=void 0,this._onCancelField=void 0}function I(t,e){if(0!=(1&e)){this._cancellationParent=t;var n=t._branchesRemainingToCancel;void 0===n&&(n=0),t._branchesRemainingToCancel=n+1}0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}n.config=function(t){if("longStackTraces"in(t=Object(t))&&(t.longStackTraces?n.longStackTraces():!t.longStackTraces&&n.hasLongStackTraces()&&E()),"warnings"in t){var e=t.warnings;Z.warnings=!!e,C=Z.warnings,l.isObject(e)&&"wForgottenReturn"in e&&(C=!!e.wForgottenReturn)}if("cancellation"in t&&t.cancellation&&!Z.cancellation){if(c.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");n.prototype._clearCancellationData=L,n.prototype._propagateFrom=I,n.prototype._onCancel=R,n.prototype._setOnCancel=A,n.prototype._attachCancellationCallback=P,n.prototype._execute=S,N=I,Z.cancellation=!0}return"monitoring"in t&&(t.monitoring&&!Z.monitoring?(Z.monitoring=!0,n.prototype._fireEvent=F):!t.monitoring&&Z.monitoring&&(Z.monitoring=!1,n.prototype._fireEvent=O)),n},n.prototype._fireEvent=O,n.prototype._execute=function(t,e,n){try{t(e,n)}catch(t){return t}},n.prototype._onCancel=function(){},n.prototype._setOnCancel=function(t){},n.prototype._attachCancellationCallback=function(t){},n.prototype._captureStackTrace=function(){},n.prototype._attachExtraTrace=function(){},n.prototype._dereferenceTrace=function(){},n.prototype._clearCancellationData=function(){},n.prototype._propagateFrom=function(t,e){};var N=function(t,e){0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)};function D(){var t=this._boundTo;return void 0!==t&&t instanceof n?t.isFulfilled()?t.value():void 0:t}function M(){this._trace=new K(this._peekContext())}function V(t,e){if(p(t)){var n=this._trace;if(void 0!==n&&e&&(n=n._parent),void 0!==n)n.attachExtraTrace(t);else if(!t.__stackCleaned__){var r=q(t);l.notEnumerableProp(t,"stack",r.message+"\n"+r.stack.join("\n")),l.notEnumerableProp(t,"__stackCleaned__",!0)}}}function H(){this._trace=void 0}function U(t,e,r){if(Z.warnings){var i,o=new u(t);if(e)r._attachExtraTrace(o);else if(Z.longStackTraces&&(i=n._peekContext()))i.attachExtraTrace(o);else{var a=q(o);o.stack=a.message+"\n"+a.stack.join("\n")}F("warning",o)||G(o,"",!0)}}function B(t){for(var e=[],n=0;n<t.length;++n){var r=t[n],i=" (No stack trace)"===r||v.test(r),o=i&&W(r);i&&!o&&(m&&" "!==r.charAt(0)&&(r=" "+r),e.push(r))}return e}function q(t){var e=t.stack,n=t.toString();return e="string"==typeof e&&e.length>0?function(t){for(var e=t.stack.replace(/\s+$/g,"").split("\n"),n=0;n<e.length;++n){var r=e[n];if(" (No stack trace)"===r||v.test(r))break}return n>0&&"SyntaxError"!=t.name&&(e=e.slice(n)),e}(t):[" (No stack trace)"],{message:n,stack:"SyntaxError"==t.name?e:B(e)}}function G(t,e,n){if("undefined"!=typeof console){var r;if(l.isObject(t)){var i=t.stack;r=e+y(i,t)}else r=e+String(t);"function"==typeof a?a(r,n):"function"!=typeof console.log&&"object"!=typeof console.log||console.log(r)}}function $(t,e,n,r){var i=!1;try{"function"==typeof e&&(i=!0,"rejectionHandled"===t?e(r):e(n,r))}catch(t){c.throwLater(t)}"unhandledRejection"===t?F(t,n,r)||i||G(n,"Unhandled rejection "):F(t,r)}function Q(t){var e;if("function"==typeof t)e="[function "+(t.name||"anonymous")+"]";else{if(e=t&&"function"==typeof t.toString?t.toString():l.toString(t),/\[object [a-zA-Z0-9$_]+\]/.test(e))try{var n=JSON.stringify(t);e=n}catch(t){}0===e.length&&(e="(empty array)")}return"(<"+function(t){return t.length<41?t:t.substr(0,38)+"..."}(e)+">, no stack trace)"}function z(){return"function"==typeof Y}var W=function(){return!1},X=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function J(t){var e=t.match(X);if(e)return{fileName:e[1],line:parseInt(e[2],10)}}function K(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);Y(this,K),e>32&&this.uncycle()}l.inherits(K,Error),r.CapturedTrace=K,K.prototype.uncycle=function(){var t=this._length;if(!(t<2)){for(var e=[],n={},r=0,i=this;void 0!==i;++r)e.push(i),i=i._parent;for(var r=(t=this._length=r)-1;r>=0;--r){var o=e[r].stack;void 0===n[o]&&(n[o]=r)}for(var r=0;r<t;++r){var a=e[r].stack,s=n[a];if(void 0!==s&&s!==r){s>0&&(e[s-1]._parent=void 0,e[s-1]._length=1),e[r]._parent=void 0,e[r]._length=1;var c=r>0?e[r-1]:this;s<t-1?(c._parent=e[s+1],c._parent.uncycle(),c._length=c._parent._length+1):(c._parent=void 0,c._length=1);for(var u=c._length+1,l=r-2;l>=0;--l)e[l]._length=u,u++;return}}}},K.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var e=q(t),n=e.message,r=[e.stack],i=this;void 0!==i;)r.push(B(i.stack.split("\n"))),i=i._parent;!function(t){for(var e=t[0],n=1;n<t.length;++n){for(var r=t[n],i=e.length-1,o=e[i],a=-1,s=r.length-1;s>=0;--s)if(r[s]===o){a=s;break}for(var s=a;s>=0;--s){var c=r[s];if(e[i]!==c)break;e.pop(),i--}e=r}}(r),function(t){for(var e=0;e<t.length;++e)(0===t[e].length||e+1<t.length&&t[e][0]===t[e+1][0])&&(t.splice(e,1),e--)}(r),l.notEnumerableProp(t,"stack",function(t,e){for(var n=0;n<e.length-1;++n)e[n].push("From previous event:"),e[n]=e[n].join("\n");return n<e.length&&(e[n]=e[n].join("\n")),t+"\n"+e.join("\n")}(n,r)),l.notEnumerableProp(t,"__stackCleaned__",!0)}};var Y=function(){var t=/^\s*at\s*/,e=function(t,e){return"string"==typeof t?t:void 0!==e.name&&void 0!==e.message?e.toString():Q(e)};if("number"==typeof Error.stackTraceLimit&&"function"==typeof Error.captureStackTrace){Error.stackTraceLimit+=6,v=t,y=e;var n=Error.captureStackTrace;return W=function(t){return h.test(t)},function(t,e){Error.stackTraceLimit+=6,n(t,e),Error.stackTraceLimit-=6}}var r,i=new Error;if("string"==typeof i.stack&&i.stack.split("\n")[0].indexOf("stackDetection@")>=0)return v=/@/,y=e,m=!0,function(t){t.stack=(new Error).stack};try{throw new Error}catch(t){r="stack"in t}return"stack"in i||!r||"number"!=typeof Error.stackTraceLimit?(y=function(t,e){return"string"==typeof t?t:"object"!=typeof e&&"function"!=typeof e||void 0===e.name||void 0===e.message?Q(e):e.toString()},null):(v=t,y=e,function(t){Error.stackTraceLimit+=6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit-=6})}();"undefined"!=typeof console&&void 0!==console.warn&&(a=function(t){console.warn(t)},l.isNode&&e.stderr.isTTY?a=function(t,e){var n=e?"":"";console.warn(n+t+"\n")}:l.isNode||"string"!=typeof(new Error).stack||(a=function(t,e){console.warn("%c"+t,e?"color: darkorange":"color: red")}));var Z={warnings:b,longStackTraces:!1,cancellation:!1,monitoring:!1};return w&&n.longStackTraces(),{longStackTraces:function(){return Z.longStackTraces},warnings:function(){return Z.warnings},cancellation:function(){return Z.cancellation},monitoring:function(){return Z.monitoring},propagateFromFunction:function(){return N},boundValueFunction:function(){return D},checkForgottenReturns:function(t,e,n,r,i){if(void 0===t&&null!==e&&C){if(void 0!==i&&i._returnedNonUndefined())return;if(0==(65535&r._bitField))return;n&&(n+=" ");var o="",a="";if(e._trace){for(var s=e._trace.stack.split("\n"),c=B(s),u=c.length-1;u>=0;--u){var l=c[u];if(!d.test(l)){var f=l.match(_);f&&(o="at "+f[1]+":"+f[2]+":"+f[3]+" ");break}}if(c.length>0)for(var p=c[0],u=0;u<s.length;++u)if(s[u]===p){u>0&&(a="\n"+s[u-1]);break}}var h="a promise was created in a "+n+"handler "+o+"but was not returned from it, see http://goo.gl/rRqMUw"+a;r._warn(h,!0,e)}},setBounds:function(t,e){if(z()){for(var n,r,i=t.stack.split("\n"),o=e.stack.split("\n"),a=-1,s=-1,c=0;c<i.length;++c){var u=J(i[c]);if(u){n=u.fileName,a=u.line;break}}for(var c=0;c<o.length;++c){var u=J(o[c]);if(u){r=u.fileName,s=u.line;break}}a<0||s<0||!n||!r||n!==r||a>=s||(W=function(t){if(h.test(t))return!0;var e=J(t);return!!(e&&e.fileName===n&&a<=e.line&&e.line<=s)})}},warn:U,deprecated:function(t,e){var n=t+" is deprecated and will be removed in a future version.";return e&&(n+=" Use "+e+" instead."),U(n)},CapturedTrace:K,fireDomEvent:j,fireGlobalEvent:k}}},{"./errors":12,"./es5":13,"./util":36}],10:[function(t,e,n){"use strict";e.exports=function(t){function e(){return this.value}function n(){throw this.reason}t.prototype.return=t.prototype.thenReturn=function(n){return n instanceof t&&n.suppressUnhandledRejections(),this._then(e,void 0,void 0,{value:n},void 0)},t.prototype.throw=t.prototype.thenThrow=function(t){return this._then(n,void 0,void 0,{reason:t},void 0)},t.prototype.catchThrow=function(t){if(arguments.length<=1)return this._then(void 0,n,void 0,{reason:t},void 0);var e=arguments[1];return this.caught(t,function(){throw e})},t.prototype.catchReturn=function(n){if(arguments.length<=1)return n instanceof t&&n.suppressUnhandledRejections(),this._then(void 0,e,void 0,{value:n},void 0);var r=arguments[1];return r instanceof t&&r.suppressUnhandledRejections(),this.caught(n,function(){return r})}}},{}],11:[function(t,e,n){"use strict";e.exports=function(t,e){var n=t.reduce,r=t.all;function i(){return r(this)}t.prototype.each=function(t){return n(this,t,e,0)._then(i,void 0,void 0,this,void 0)},t.prototype.mapSeries=function(t){return n(this,t,e,e)},t.each=function(t,r){return n(t,r,e,0)._then(i,void 0,void 0,t,void 0)},t.mapSeries=function(t,r){return n(t,r,e,e)}}},{}],12:[function(t,e,n){"use strict";var r,i,o=t("./es5"),a=o.freeze,s=t("./util"),c=s.inherits,u=s.notEnumerableProp;function l(t,e){function n(r){if(!(this instanceof n))return new n(r);u(this,"message","string"==typeof r?r:e),u(this,"name",t),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return c(n,Error),n}var f=l("Warning","warning"),p=l("CancellationError","cancellation error"),h=l("TimeoutError","timeout error"),d=l("AggregateError","aggregate error");try{r=TypeError,i=RangeError}catch(t){r=l("TypeError","type error"),i=l("RangeError","range error")}for(var _="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),v=0;v<_.length;++v)"function"==typeof Array.prototype[_[v]]&&(d.prototype[_[v]]=Array.prototype[_[v]]);o.defineProperty(d.prototype,"length",{value:0,configurable:!1,writable:!0,enumerable:!0}),d.prototype.isOperational=!0;var y=0;function m(t){if(!(this instanceof m))return new m(t);u(this,"name","OperationalError"),u(this,"message",t),this.cause=t,this.isOperational=!0,t instanceof Error?(u(this,"message",t.message),u(this,"stack",t.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}d.prototype.toString=function(){var t=Array(4*y+1).join(" "),e="\n"+t+"AggregateError of:\n";y++,t=Array(4*y+1).join(" ");for(var n=0;n<this.length;++n){for(var r=this[n]===this?"[Circular AggregateError]":this[n]+"",i=r.split("\n"),o=0;o<i.length;++o)i[o]=t+i[o];r=i.join("\n"),e+=r+"\n"}return y--,e},c(m,Error);var g=Error.__BluebirdErrorTypes__;g||(g=a({CancellationError:p,TimeoutError:h,OperationalError:m,RejectionError:m,AggregateError:d}),o.defineProperty(Error,"__BluebirdErrorTypes__",{value:g,writable:!1,enumerable:!1,configurable:!1})),e.exports={Error:Error,TypeError:r,RangeError:i,CancellationError:g.CancellationError,OperationalError:g.OperationalError,TimeoutError:g.TimeoutError,AggregateError:g.AggregateError,Warning:f}},{"./es5":13,"./util":36}],13:[function(t,e,n){var r=function(){"use strict";return void 0===this}();if(r)e.exports={freeze:Object.freeze,defineProperty:Object.defineProperty,getDescriptor:Object.getOwnPropertyDescriptor,keys:Object.keys,names:Object.getOwnPropertyNames,getPrototypeOf:Object.getPrototypeOf,isArray:Array.isArray,isES5:r,propertyIsWritable:function(t,e){var n=Object.getOwnPropertyDescriptor(t,e);return!(n&&!n.writable&&!n.set)}};else{var i={}.hasOwnProperty,o={}.toString,a={}.constructor.prototype,s=function(t){var e=[];for(var n in t)i.call(t,n)&&e.push(n);return e};e.exports={isArray:function(t){try{return"[object Array]"===o.call(t)}catch(t){return!1}},keys:s,names:s,defineProperty:function(t,e,n){return t[e]=n.value,t},getDescriptor:function(t,e){return{value:t[e]}},freeze:function(t){return t},getPrototypeOf:function(t){try{return Object(t).constructor.prototype}catch(t){return a}},isES5:r,propertyIsWritable:function(){return!0}}}},{}],14:[function(t,e,n){"use strict";e.exports=function(t,e){var n=t.map;t.prototype.filter=function(t,r){return n(this,t,r,e)},t.filter=function(t,r,i){return n(t,r,i,e)}}},{}],15:[function(t,e,n){"use strict";e.exports=function(e,n,r){var i=t("./util"),o=e.CancellationError,a=i.errorObj,s=t("./catch_filter")(r);function c(t,e,n){this.promise=t,this.type=e,this.handler=n,this.called=!1,this.cancelPromise=null}function u(t){this.finallyHandler=t}function l(t,e){return null!=t.cancelPromise&&(arguments.length>1?t.cancelPromise._reject(e):t.cancelPromise._cancel(),t.cancelPromise=null,!0)}function f(){return h.call(this,this.promise._target()._settledValue())}function p(t){if(!l(this,t))return a.e=t,a}function h(t){var i=this.promise,s=this.handler;if(!this.called){this.called=!0;var c=this.isFinallyHandler()?s.call(i._boundValue()):s.call(i._boundValue(),t);if(c===r)return c;if(void 0!==c){i._setReturnedNonUndefined();var h=n(c,i);if(h instanceof e){if(null!=this.cancelPromise){if(h._isCancelled()){var d=new o("late cancellation observer");return i._attachExtraTrace(d),a.e=d,a}h.isPending()&&h._attachCancellationCallback(new u(this))}return h._then(f,p,void 0,this,void 0)}}}return i.isRejected()?(l(this),a.e=t,a):(l(this),t)}return c.prototype.isFinallyHandler=function(){return 0===this.type},u.prototype._resultCancelled=function(){l(this.finallyHandler)},e.prototype._passThrough=function(t,e,n,r){return"function"!=typeof t?this.then():this._then(n,r,void 0,new c(this,e,t),void 0)},e.prototype.lastly=e.prototype.finally=function(t){return this._passThrough(t,0,h,h)},e.prototype.tap=function(t){return this._passThrough(t,1,h)},e.prototype.tapCatch=function(t){var n=arguments.length;if(1===n)return this._passThrough(t,1,void 0,h);var r,o=new Array(n-1),a=0;for(r=0;r<n-1;++r){var c=arguments[r];if(!i.isObject(c))return e.reject(new TypeError("tapCatch statement predicate: expecting an object but got "+i.classString(c)));o[a++]=c}o.length=a;var u=arguments[r];return this._passThrough(s(o,u,this),1,void 0,h)},c}},{"./catch_filter":7,"./util":36}],16:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,a){var s=t("./errors"),c=s.TypeError,u=t("./util"),l=u.errorObj,f=u.tryCatch,p=[];function h(t,n,i,o){if(a.cancellation()){var s=new e(r),c=this._finallyPromise=new e(r);this._promise=s.lastly(function(){return c}),s._captureStackTrace(),s._setOnCancel(this)}else{var u=this._promise=new e(r);u._captureStackTrace()}this._stack=o,this._generatorFunction=t,this._receiver=n,this._generator=void 0,this._yieldHandlers="function"==typeof i?[i].concat(p):p,this._yieldedPromise=null,this._cancellationPhase=!1}u.inherits(h,o),h.prototype._isResolved=function(){return null===this._promise},h.prototype._cleanup=function(){this._promise=this._generator=null,a.cancellation()&&null!==this._finallyPromise&&(this._finallyPromise._fulfill(),this._finallyPromise=null)},h.prototype._promiseCancelled=function(){if(!this._isResolved()){var t,n=void 0!==this._generator.return;if(n)this._promise._pushContext(),t=f(this._generator.return).call(this._generator,void 0),this._promise._popContext();else{var r=new e.CancellationError("generator .return() sentinel");e.coroutine.returnSentinel=r,this._promise._attachExtraTrace(r),this._promise._pushContext(),t=f(this._generator.throw).call(this._generator,r),this._promise._popContext()}this._cancellationPhase=!0,this._yieldedPromise=null,this._continue(t)}},h.prototype._promiseFulfilled=function(t){this._yieldedPromise=null,this._promise._pushContext();var e=f(this._generator.next).call(this._generator,t);this._promise._popContext(),this._continue(e)},h.prototype._promiseRejected=function(t){this._yieldedPromise=null,this._promise._attachExtraTrace(t),this._promise._pushContext();var e=f(this._generator.throw).call(this._generator,t);this._promise._popContext(),this._continue(e)},h.prototype._resultCancelled=function(){if(this._yieldedPromise instanceof e){var t=this._yieldedPromise;this._yieldedPromise=null,t.cancel()}},h.prototype.promise=function(){return this._promise},h.prototype._run=function(){this._generator=this._generatorFunction.call(this._receiver),this._receiver=this._generatorFunction=void 0,this._promiseFulfilled(void 0)},h.prototype._continue=function(t){var n=this._promise;if(t===l)return this._cleanup(),this._cancellationPhase?n.cancel():n._rejectCallback(t.e,!1);var r=t.value;if(!0===t.done)return this._cleanup(),this._cancellationPhase?n.cancel():n._resolveCallback(r);var o=i(r,this._promise);if(o instanceof e||null!==(o=function(t,n,r){for(var o=0;o<n.length;++o){r._pushContext();var a=f(n[o])(t);if(r._popContext(),a===l){r._pushContext();var s=e.reject(l.e);return r._popContext(),s}var c=i(a,r);if(c instanceof e)return c}return null}(o,this._yieldHandlers,this._promise))){var a=(o=o._target())._bitField;0==(50397184&a)?(this._yieldedPromise=o,o._proxy(this,null)):0!=(33554432&a)?e._async.invoke(this._promiseFulfilled,this,o._value()):0!=(16777216&a)?e._async.invoke(this._promiseRejected,this,o._reason()):this._promiseCancelled()}else this._promiseRejected(new c("A value %s was yielded that could not be treated as a promise\n\n See http://goo.gl/MqrFmX\n\n".replace("%s",String(r))+"From coroutine:\n"+this._stack.split("\n").slice(1,-7).join("\n")))},e.coroutine=function(t,e){if("function"!=typeof t)throw new c("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");var n=Object(e).yieldHandler,r=h,i=(new Error).stack;return function(){var e=t.apply(this,arguments),o=new r(void 0,void 0,n,i),a=o.promise();return o._generator=e,o._promiseFulfilled(void 0),a}},e.coroutine.addYieldHandler=function(t){if("function"!=typeof t)throw new c("expecting a function but got "+u.classString(t));p.push(t)},e.spawn=function(t){if(a.deprecated("Promise.spawn()","Promise.coroutine()"),"function"!=typeof t)return n("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");var r=new h(t,this),i=r.promise();return r._run(e.spawn),i}}},{"./errors":12,"./util":36}],17:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,a){var s=t("./util");s.canEvaluate,s.tryCatch,s.errorObj,e.join=function(){var t,e=arguments.length-1;e>0&&"function"==typeof arguments[e]&&(t=arguments[e]);var r=[].slice.call(arguments);t&&r.pop();var i=new n(r).promise();return void 0!==t?i.spread(t):i}}},{"./util":36}],18:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,a){var s=e._getDomain,c=t("./util"),u=c.tryCatch,l=c.errorObj,f=e._async;function p(t,e,n,r){this.constructor$(t),this._promise._captureStackTrace();var i=s();this._callback=null===i?e:c.domainBind(i,e),this._preservedValues=r===o?new Array(this.length()):null,this._limit=n,this._inFlight=0,this._queue=[],f.invoke(this._asyncInit,this,void 0)}function h(t,n,i,o){if("function"!=typeof n)return r("expecting a function but got "+c.classString(n));var a=0;if(void 0!==i){if("object"!=typeof i||null===i)return e.reject(new TypeError("options argument must be an object but it is "+c.classString(i)));if("number"!=typeof i.concurrency)return e.reject(new TypeError("'concurrency' must be a number but it is "+c.classString(i.concurrency)));a=i.concurrency}return a="number"==typeof a&&isFinite(a)&&a>=1?a:0,new p(t,n,a,o).promise()}c.inherits(p,n),p.prototype._asyncInit=function(){this._init$(void 0,-2)},p.prototype._init=function(){},p.prototype._promiseFulfilled=function(t,n){var r=this._values,o=this.length(),s=this._preservedValues,c=this._limit;if(n<0){if(r[n=-1*n-1]=t,c>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(c>=1&&this._inFlight>=c)return r[n]=t,this._queue.push(n),!1;null!==s&&(s[n]=t);var f=this._promise,p=this._callback,h=f._boundValue();f._pushContext();var d=u(p).call(h,t,n,o),_=f._popContext();if(a.checkForgottenReturns(d,_,null!==s?"Promise.filter":"Promise.map",f),d===l)return this._reject(d.e),!0;var v=i(d,this._promise);if(v instanceof e){var y=(v=v._target())._bitField;if(0==(50397184&y))return c>=1&&this._inFlight++,r[n]=v,v._proxy(this,-1*(n+1)),!1;if(0==(33554432&y))return 0!=(16777216&y)?(this._reject(v._reason()),!0):(this._cancel(),!0);d=v._value()}r[n]=d}var m=++this._totalResolved;return m>=o&&(null!==s?this._filter(r,s):this._resolve(r),!0)},p.prototype._drainQueue=function(){for(var t=this._queue,e=this._limit,n=this._values;t.length>0&&this._inFlight<e;){if(this._isResolved())return;var r=t.pop();this._promiseFulfilled(n[r],r)}},p.prototype._filter=function(t,e){for(var n=e.length,r=new Array(n),i=0,o=0;o<n;++o)t[o]&&(r[i++]=e[o]);r.length=i,this._resolve(r)},p.prototype.preservedValues=function(){return this._preservedValues},e.prototype.map=function(t,e){return h(this,t,e,null)},e.map=function(t,e,n,r){return h(t,e,n,r)}}},{"./util":36}],19:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o){var a=t("./util"),s=a.tryCatch;e.method=function(t){if("function"!=typeof t)throw new e.TypeError("expecting a function but got "+a.classString(t));return function(){var r=new e(n);r._captureStackTrace(),r._pushContext();var i=s(t).apply(this,arguments),a=r._popContext();return o.checkForgottenReturns(i,a,"Promise.method",r),r._resolveFromSyncValue(i),r}},e.attempt=e.try=function(t){if("function"!=typeof t)return i("expecting a function but got "+a.classString(t));var r,c=new e(n);if(c._captureStackTrace(),c._pushContext(),arguments.length>1){o.deprecated("calling Promise.try with more than 1 argument");var u=arguments[1],l=arguments[2];r=a.isArray(u)?s(t).apply(l,u):s(t).call(l,u)}else r=s(t)();var f=c._popContext();return o.checkForgottenReturns(r,f,"Promise.try",c),c._resolveFromSyncValue(r),c},e.prototype._resolveFromSyncValue=function(t){t===a.errorObj?this._rejectCallback(t.e,!1):this._resolveCallback(t,!0)}}},{"./util":36}],20:[function(t,e,n){"use strict";var r=t("./util"),i=r.maybeWrapAsError,o=t("./errors"),a=o.OperationalError,s=t("./es5"),c=/^(?:name|message|stack|cause)$/;function u(t){var e;if(function(t){return t instanceof Error&&s.getPrototypeOf(t)===Error.prototype}(t)){(e=new a(t)).name=t.name,e.message=t.message,e.stack=t.stack;for(var n=s.keys(t),i=0;i<n.length;++i){var o=n[i];c.test(o)||(e[o]=t[o])}return e}return r.markAsOriginatingFromRejection(t),t}e.exports=function(t,e){return function(n,r){if(null!==t){if(n){var o=u(i(n));t._attachExtraTrace(o),t._reject(o)}else if(e){var a=[].slice.call(arguments,1);t._fulfill(a)}else t._fulfill(r);t=null}}}},{"./errors":12,"./es5":13,"./util":36}],21:[function(t,e,n){"use strict";e.exports=function(e){var n=t("./util"),r=e._async,i=n.tryCatch,o=n.errorObj;function a(t,e){if(!n.isArray(t))return s.call(this,t,e);var a=i(e).apply(this._boundValue(),[null].concat(t));a===o&&r.throwLater(a.e)}function s(t,e){var n=this._boundValue(),a=void 0===t?i(e).call(n,null):i(e).call(n,null,t);a===o&&r.throwLater(a.e)}function c(t,e){if(!t){var n=new Error(t+"");n.cause=t,t=n}var a=i(e).call(this._boundValue(),t);a===o&&r.throwLater(a.e)}e.prototype.asCallback=e.prototype.nodeify=function(t,e){if("function"==typeof t){var n=s;void 0!==e&&Object(e).spread&&(n=a),this._then(n,c,void 0,this,t)}return this}}},{"./util":36}],22:[function(t,n,r){"use strict";n.exports=function(){var r=function(){return new d("circular promise resolution chain\n\n See http://goo.gl/MqrFmX\n")},i=function(){return new O.PromiseInspection(this._target())},o=function(t){return O.reject(new d(t))};function a(){}var s,c={},u=t("./util");s=u.isNode?function(){var t=e.domain;return void 0===t&&(t=null),t}:function(){return null},u.notEnumerableProp(O,"_getDomain",s);var l=t("./es5"),f=t("./async"),p=new f;l.defineProperty(O,"_async",{value:p});var h=t("./errors"),d=O.TypeError=h.TypeError;O.RangeError=h.RangeError;var _=O.CancellationError=h.CancellationError;O.TimeoutError=h.TimeoutError,O.OperationalError=h.OperationalError,O.RejectionError=h.OperationalError,O.AggregateError=h.AggregateError;var v=function(){},y={},m={},g=t("./thenables")(O,v),b=t("./promise_array")(O,v,g,o,a),w=t("./context")(O),C=w.create,E=t("./debuggability")(O,w),j=(E.CapturedTrace,t("./finally")(O,g,m)),k=t("./catch_filter")(m),x=t("./nodeback"),T=u.errorObj,F=u.tryCatch;function O(t){t!==v&&function(t,e){if(null==t||t.constructor!==O)throw new d("the promise constructor cannot be invoked directly\n\n See http://goo.gl/MqrFmX\n");if("function"!=typeof e)throw new d("expecting a function but got "+u.classString(e))}(this,t),this._bitField=0,this._fulfillmentHandler0=void 0,this._rejectionHandler0=void 0,this._promise0=void 0,this._receiver0=void 0,this._resolveFromExecutor(t),this._promiseCreated(),this._fireEvent("promiseCreated",this)}function S(t){this.promise._resolveCallback(t)}function P(t){this.promise._rejectCallback(t,!1)}function R(t){var e=new O(v);e._fulfillmentHandler0=t,e._rejectionHandler0=t,e._promise0=t,e._receiver0=t}return O.prototype.toString=function(){return"[object Promise]"},O.prototype.caught=O.prototype.catch=function(t){var e=arguments.length;if(e>1){var n,r=new Array(e-1),i=0;for(n=0;n<e-1;++n){var a=arguments[n];if(!u.isObject(a))return o("Catch statement predicate: expecting an object but got "+u.classString(a));r[i++]=a}return r.length=i,t=arguments[n],this.then(void 0,k(r,t,this))}return this.then(void 0,t)},O.prototype.reflect=function(){return this._then(i,i,void 0,this,void 0)},O.prototype.then=function(t,e){if(E.warnings()&&arguments.length>0&&"function"!=typeof t&&"function"!=typeof e){var n=".then() only accepts functions but was passed: "+u.classString(t);arguments.length>1&&(n+=", "+u.classString(e)),this._warn(n)}return this._then(t,e,void 0,void 0,void 0)},O.prototype.done=function(t,e){var n=this._then(t,e,void 0,void 0,void 0);n._setIsFinal()},O.prototype.spread=function(t){return"function"!=typeof t?o("expecting a function but got "+u.classString(t)):this.all()._then(t,void 0,void 0,y,void 0)},O.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},O.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new b(this).promise()},O.prototype.error=function(t){return this.caught(u.originatesFromRejection,t)},O.getNewLibraryCopy=n.exports,O.is=function(t){return t instanceof O},O.fromNode=O.fromCallback=function(t){var e=new O(v);e._captureStackTrace();var n=arguments.length>1&&!!Object(arguments[1]).multiArgs,r=F(t)(x(e,n));return r===T&&e._rejectCallback(r.e,!0),e._isFateSealed()||e._setAsyncGuaranteed(),e},O.all=function(t){return new b(t).promise()},O.cast=function(t){var e=g(t);return e instanceof O||((e=new O(v))._captureStackTrace(),e._setFulfilled(),e._rejectionHandler0=t),e},O.resolve=O.fulfilled=O.cast,O.reject=O.rejected=function(t){var e=new O(v);return e._captureStackTrace(),e._rejectCallback(t,!0),e},O.setScheduler=function(t){if("function"!=typeof t)throw new d("expecting a function but got "+u.classString(t));return p.setScheduler(t)},O.prototype._then=function(t,e,n,r,i){var o=void 0!==i,a=o?i:new O(v),c=this._target(),l=c._bitField;o||(a._propagateFrom(this,3),a._captureStackTrace(),void 0===r&&0!=(2097152&this._bitField)&&(r=0!=(50397184&l)?this._boundValue():c===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,a));var f=s();if(0!=(50397184&l)){var h,d,y=c._settlePromiseCtx;0!=(33554432&l)?(d=c._rejectionHandler0,h=t):0!=(16777216&l)?(d=c._fulfillmentHandler0,h=e,c._unsetRejectionIsUnhandled()):(y=c._settlePromiseLateCancellationObserver,d=new _("late cancellation observer"),c._attachExtraTrace(d),h=e),p.invoke(y,c,{handler:null===f?h:"function"==typeof h&&u.domainBind(f,h),promise:a,receiver:r,value:d})}else c._addCallbacks(t,e,a,r,f);return a},O.prototype._length=function(){return 65535&this._bitField},O.prototype._isFateSealed=function(){return 0!=(117506048&this._bitField)},O.prototype._isFollowing=function(){return 67108864==(67108864&this._bitField)},O.prototype._setLength=function(t){this._bitField=-65536&this._bitField|65535&t},O.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},O.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},O.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},O.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},O.prototype._isFinal=function(){return(4194304&this._bitField)>0},O.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},O.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},O.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},O.prototype._setAsyncGuaranteed=function(){p.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},O.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[4*t-4+3];if(e!==c)return void 0===e&&this._isBound()?this._boundValue():e},O.prototype._promiseAt=function(t){return this[4*t-4+2]},O.prototype._fulfillmentHandlerAt=function(t){return this[4*t-4+0]},O.prototype._rejectionHandlerAt=function(t){return this[4*t-4+1]},O.prototype._boundValue=function(){},O.prototype._migrateCallback0=function(t){t._bitField;var e=t._fulfillmentHandler0,n=t._rejectionHandler0,r=t._promise0,i=t._receiverAt(0);void 0===i&&(i=c),this._addCallbacks(e,n,r,i,null)},O.prototype._migrateCallbackAt=function(t,e){var n=t._fulfillmentHandlerAt(e),r=t._rejectionHandlerAt(e),i=t._promiseAt(e),o=t._receiverAt(e);void 0===o&&(o=c),this._addCallbacks(n,r,i,o,null)},O.prototype._addCallbacks=function(t,e,n,r,i){var o=this._length();if(o>=65531&&(o=0,this._setLength(0)),0===o)this._promise0=n,this._receiver0=r,"function"==typeof t&&(this._fulfillmentHandler0=null===i?t:u.domainBind(i,t)),"function"==typeof e&&(this._rejectionHandler0=null===i?e:u.domainBind(i,e));else{var a=4*o-4;this[a+2]=n,this[a+3]=r,"function"==typeof t&&(this[a+0]=null===i?t:u.domainBind(i,t)),"function"==typeof e&&(this[a+1]=null===i?e:u.domainBind(i,e))}return this._setLength(o+1),o},O.prototype._proxy=function(t,e){this._addCallbacks(void 0,void 0,e,t,null)},O.prototype._resolveCallback=function(t,e){if(0==(117506048&this._bitField)){if(t===this)return this._rejectCallback(r(),!1);var n=g(t,this);if(!(n instanceof O))return this._fulfill(t);e&&this._propagateFrom(n,2);var i=n._target();if(i!==this){var o=i._bitField;if(0==(50397184&o)){var a=this._length();a>0&&i._migrateCallback0(this);for(var s=1;s<a;++s)i._migrateCallbackAt(this,s);this._setFollowing(),this._setLength(0),this._setFollowee(i)}else if(0!=(33554432&o))this._fulfill(i._value());else if(0!=(16777216&o))this._reject(i._reason());else{var c=new _("late cancellation observer");i._attachExtraTrace(c),this._reject(c)}}else this._reject(r())}},O.prototype._rejectCallback=function(t,e,n){var r=u.ensureErrorObject(t),i=r===t;if(!i&&!n&&E.warnings()){var o="a promise was rejected with a non-error: "+u.classString(t);this._warn(o,!0)}this._attachExtraTrace(r,!!e&&i),this._reject(t)},O.prototype._resolveFromExecutor=function(t){if(t!==v){var e=this;this._captureStackTrace(),this._pushContext();var n=!0,r=this._execute(t,function(t){e._resolveCallback(t)},function(t){e._rejectCallback(t,n)});n=!1,this._popContext(),void 0!==r&&e._rejectCallback(r,!0)}},O.prototype._settlePromiseFromHandler=function(t,e,n,r){var i=r._bitField;if(0==(65536&i)){var o;r._pushContext(),e===y?n&&"number"==typeof n.length?o=F(t).apply(this._boundValue(),n):(o=T).e=new d("cannot .spread() a non-array: "+u.classString(n)):o=F(t).call(e,n);var a=r._popContext();0==(65536&(i=r._bitField))&&(o===m?r._reject(n):o===T?r._rejectCallback(o.e,!1):(E.checkForgottenReturns(o,a,"",r,this),r._resolveCallback(o)))}},O.prototype._target=function(){for(var t=this;t._isFollowing();)t=t._followee();return t},O.prototype._followee=function(){return this._rejectionHandler0},O.prototype._setFollowee=function(t){this._rejectionHandler0=t},O.prototype._settlePromise=function(t,e,n,r){var o=t instanceof O,s=this._bitField,c=0!=(134217728&s);0!=(65536&s)?(o&&t._invokeInternalOnCancel(),n instanceof j&&n.isFinallyHandler()?(n.cancelPromise=t,F(e).call(n,r)===T&&t._reject(T.e)):e===i?t._fulfill(i.call(n)):n instanceof a?n._promiseCancelled(t):o||t instanceof b?t._cancel():n.cancel()):"function"==typeof e?o?(c&&t._setAsyncGuaranteed(),this._settlePromiseFromHandler(e,n,r,t)):e.call(n,r,t):n instanceof a?n._isResolved()||(0!=(33554432&s)?n._promiseFulfilled(r,t):n._promiseRejected(r,t)):o&&(c&&t._setAsyncGuaranteed(),0!=(33554432&s)?t._fulfill(r):t._reject(r))},O.prototype._settlePromiseLateCancellationObserver=function(t){var e=t.handler,n=t.promise,r=t.receiver,i=t.value;"function"==typeof e?n instanceof O?this._settlePromiseFromHandler(e,r,i,n):e.call(r,i,n):n instanceof O&&n._reject(i)},O.prototype._settlePromiseCtx=function(t){this._settlePromise(t.promise,t.handler,t.receiver,t.value)},O.prototype._settlePromise0=function(t,e,n){var r=this._promise0,i=this._receiverAt(0);this._promise0=void 0,this._receiver0=void 0,this._settlePromise(r,t,i,e)},O.prototype._clearCallbackDataAtIndex=function(t){var e=4*t-4;this[e+2]=this[e+3]=this[e+0]=this[e+1]=void 0},O.prototype._fulfill=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(t===this){var n=r();return this._attachExtraTrace(n),this._reject(n)}this._setFulfilled(),this._rejectionHandler0=t,(65535&e)>0&&(0!=(134217728&e)?this._settlePromises():p.settlePromises(this),this._dereferenceTrace())}},O.prototype._reject=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=t,this._isFinal())return p.fatalError(t,u.isNode);(65535&e)>0?p.settlePromises(this):this._ensurePossibleRejectionHandled()}},O.prototype._fulfillPromises=function(t,e){for(var n=1;n<t;n++){var r=this._fulfillmentHandlerAt(n),i=this._promiseAt(n),o=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(i,r,o,e)}},O.prototype._rejectPromises=function(t,e){for(var n=1;n<t;n++){var r=this._rejectionHandlerAt(n),i=this._promiseAt(n),o=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(i,r,o,e)}},O.prototype._settlePromises=function(){var t=this._bitField,e=65535&t;if(e>0){if(0!=(16842752&t)){var n=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,n,t),this._rejectPromises(e,n)}else{var r=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,r,t),this._fulfillPromises(e,r)}this._setLength(0)}this._clearCancellationData()},O.prototype._settledValue=function(){var t=this._bitField;return 0!=(33554432&t)?this._rejectionHandler0:0!=(16777216&t)?this._fulfillmentHandler0:void 0},O.defer=O.pending=function(){E.deprecated("Promise.defer","new Promise");var t=new O(v);return{promise:t,resolve:S,reject:P}},u.notEnumerableProp(O,"_makeSelfResolutionError",r),t("./method")(O,v,g,o,E),t("./bind")(O,v,g,E),t("./cancel")(O,b,o,E),t("./direct_resolve")(O),t("./synchronous_inspection")(O),t("./join")(O,b,g,v,p,s),O.Promise=O,O.version="3.5.2",t("./map.js")(O,b,o,g,v,E),t("./call_get.js")(O),t("./using.js")(O,o,g,C,v,E),t("./timers.js")(O,v,E),t("./generators.js")(O,o,v,g,a,E),t("./nodeify.js")(O),t("./promisify.js")(O,v),t("./props.js")(O,b,g,o),t("./race.js")(O,v,g,o),t("./reduce.js")(O,b,o,g,v,E),t("./settle.js")(O,b,E),t("./some.js")(O,b,o),t("./filter.js")(O,v),t("./each.js")(O,v),t("./any.js")(O),u.toFastProperties(O),u.toFastProperties(O.prototype),R({a:1}),R({b:2}),R({c:3}),R(1),R(function(){}),R(void 0),R(!1),R(new O(v)),E.setBounds(f.firstLineError,u.lastLineError),O}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o){var a=t("./util");function s(t){var r=this._promise=new e(n);t instanceof e&&r._propagateFrom(t,3),r._setOnCancel(this),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}return a.isArray,a.inherits(s,o),s.prototype.length=function(){return this._length},s.prototype.promise=function(){return this._promise},s.prototype._init=function t(n,o){var s=r(this._values,this._promise);if(s instanceof e){var c=(s=s._target())._bitField;if(this._values=s,0==(50397184&c))return this._promise._setAsyncGuaranteed(),s._then(t,this._reject,void 0,this,o);if(0==(33554432&c))return 0!=(16777216&c)?this._reject(s._reason()):this._cancel();s=s._value()}if(null!==(s=a.asArray(s)))0!==s.length?this._iterate(s):-5===o?this._resolveEmptyArray():this._resolve(function(t){switch(t){case-2:return[];case-3:return{};case-6:return new Map}}(o));else{var u=i("expecting an array or an iterable object but got "+a.classString(s)).reason();this._promise._rejectCallback(u,!1)}},s.prototype._iterate=function(t){var n=this.getActualLength(t.length);this._length=n,this._values=this.shouldCopyValues()?new Array(n):this._values;for(var i=this._promise,o=!1,a=null,s=0;s<n;++s){var c=r(t[s],i);c instanceof e?(c=c._target(),a=c._bitField):a=null,o?null!==a&&c.suppressUnhandledRejections():null!==a?0==(50397184&a)?(c._proxy(this,s),this._values[s]=c):o=0!=(33554432&a)?this._promiseFulfilled(c._value(),s):0!=(16777216&a)?this._promiseRejected(c._reason(),s):this._promiseCancelled(s):o=this._promiseFulfilled(c,s)}o||i._setAsyncGuaranteed()},s.prototype._isResolved=function(){return null===this._values},s.prototype._resolve=function(t){this._values=null,this._promise._fulfill(t)},s.prototype._cancel=function(){!this._isResolved()&&this._promise._isCancellable()&&(this._values=null,this._promise._cancel())},s.prototype._reject=function(t){this._values=null,this._promise._rejectCallback(t,!1)},s.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;return n>=this._length&&(this._resolve(this._values),!0)},s.prototype._promiseCancelled=function(){return this._cancel(),!0},s.prototype._promiseRejected=function(t){return this._totalResolved++,this._reject(t),!0},s.prototype._resultCancelled=function(){if(!this._isResolved()){var t=this._values;if(this._cancel(),t instanceof e)t.cancel();else for(var n=0;n<t.length;++n)t[n]instanceof e&&t[n].cancel()}},s.prototype.shouldCopyValues=function(){return!0},s.prototype.getActualLength=function(t){return t},s}},{"./util":36}],24:[function(t,e,n){"use strict";e.exports=function(e,n){var r={},i=t("./util"),o=t("./nodeback"),a=i.withAppended,s=i.maybeWrapAsError,c=i.canEvaluate,u=t("./errors").TypeError,l={__isPromisified__:!0},f=new RegExp("^(?:"+["arity","length","name","arguments","caller","callee","prototype","__isPromisified__"].join("|")+")$"),p=function(t){return i.isIdentifier(t)&&"_"!==t.charAt(0)&&"constructor"!==t};function h(t){return!f.test(t)}function d(t){try{return!0===t.__isPromisified__}catch(t){return!1}}function _(t,e,n){var r=i.getDataPropertyOrDefault(t,e+n,l);return!!r&&d(r)}function v(t,e,n,r){for(var o=i.inheritedDataKeys(t),a=[],s=0;s<o.length;++s){var c=o[s],l=t[c],f=r===p||p(c,l,t);"function"!=typeof l||d(l)||_(t,c,e)||!r(c,l,t,f)||a.push(c,l)}return function(t,e,n){for(var r=0;r<t.length;r+=2){var i=t[r];if(n.test(i))for(var o=i.replace(n,""),a=0;a<t.length;a+=2)if(t[a]===o)throw new u("Cannot promisify an API that has normal methods with '%s'-suffix\n\n See http://goo.gl/MqrFmX\n".replace("%s",e))}}(a,e,n),a}var y=function(t){return t.replace(/([$])/,"\\$")},m=c?void 0:function(t,c,u,l,f,p){var h=function(){return this}(),d=t;function _(){var i=c;c===r&&(i=this);var u=new e(n);u._captureStackTrace();var l="string"==typeof d&&this!==h?this[d]:t,f=o(u,p);try{l.apply(i,a(arguments,f))}catch(t){u._rejectCallback(s(t),!0,!0)}return u._isFateSealed()||u._setAsyncGuaranteed(),u}return"string"==typeof d&&(t=l),i.notEnumerableProp(_,"__isPromisified__",!0),_};function g(t,e,n,o,a){for(var s=new RegExp(y(e)+"$"),c=v(t,e,s,n),u=0,l=c.length;u<l;u+=2){var f=c[u],p=c[u+1],h=f+e;if(o===m)t[h]=m(f,r,f,p,e,a);else{var d=o(p,function(){return m(f,r,f,p,e,a)});i.notEnumerableProp(d,"__isPromisified__",!0),t[h]=d}}return i.toFastProperties(t),t}e.promisify=function(t,e){if("function"!=typeof t)throw new u("expecting a function but got "+i.classString(t));if(d(t))return t;var n=void 0===(e=Object(e)).context?r:e.context,o=!!e.multiArgs,a=function(t,e,n){return m(t,e,void 0,t,null,n)}(t,n,o);return i.copyDescriptors(t,a,h),a},e.promisifyAll=function(t,e){if("function"!=typeof t&&"object"!=typeof t)throw new u("the target of promisifyAll must be an object or a function\n\n See http://goo.gl/MqrFmX\n");var n=!!(e=Object(e)).multiArgs,r=e.suffix;"string"!=typeof r&&(r="Async");var o=e.filter;"function"!=typeof o&&(o=p);var a=e.promisifier;if("function"!=typeof a&&(a=m),!i.isIdentifier(r))throw new RangeError("suffix must be a valid identifier\n\n See http://goo.gl/MqrFmX\n");for(var s=i.inheritedDataKeys(t),c=0;c<s.length;++c){var l=t[s[c]];"constructor"!==s[c]&&i.isClass(l)&&(g(l.prototype,r,o,a,n),g(l,r,o,a,n))}return g(t,r,o,a,n)}}},{"./errors":12,"./nodeback":20,"./util":36}],25:[function(t,e,n){"use strict";e.exports=function(e,n,r,i){var o,a=t("./util"),s=a.isObject,c=t("./es5");"function"==typeof Map&&(o=Map);var u=function(){var t=0,e=0;function n(n,r){this[t]=n,this[t+e]=r,t++}return function(r){e=r.size,t=0;var i=new Array(2*r.size);return r.forEach(n,i),i}}();function l(t){var e,n=!1;if(void 0!==o&&t instanceof o)e=u(t),n=!0;else{var r=c.keys(t),i=r.length;e=new Array(2*i);for(var a=0;a<i;++a){var s=r[a];e[a]=t[s],e[a+i]=s}}this.constructor$(e),this._isMap=n,this._init$(void 0,n?-6:-3)}function f(t){var n,o=r(t);return s(o)?(n=o instanceof e?o._then(e.props,void 0,void 0,void 0,void 0):new l(o).promise(),o instanceof e&&n._propagateFrom(o,2),n):i("cannot await properties of a non-object\n\n See http://goo.gl/MqrFmX\n")}a.inherits(l,n),l.prototype._init=function(){},l.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;if(n>=this._length){var r;if(this._isMap)r=function(t){for(var e=new o,n=t.length/2|0,r=0;r<n;++r){var i=t[n+r],a=t[r];e.set(i,a)}return e}(this._values);else{r={};for(var i=this.length(),a=0,s=this.length();a<s;++a)r[this._values[a+i]]=this._values[a]}return this._resolve(r),!0}return!1},l.prototype.shouldCopyValues=function(){return!1},l.prototype.getActualLength=function(t){return t>>1},e.prototype.props=function(){return f(this)},e.props=function(t){return f(t)}}},{"./es5":13,"./util":36}],26:[function(t,e,n){"use strict";function r(t){this._capacity=t,this._length=0,this._front=0}r.prototype._willBeOverCapacity=function(t){return this._capacity<t},r.prototype._pushOne=function(t){var e=this.length();this._checkCapacity(e+1);var n=this._front+e&this._capacity-1;this[n]=t,this._length=e+1},r.prototype.push=function(t,e,n){var r=this.length()+3;if(this._willBeOverCapacity(r))return this._pushOne(t),this._pushOne(e),void this._pushOne(n);var i=this._front+r-3;this._checkCapacity(r);var o=this._capacity-1;this[i+0&o]=t,this[i+1&o]=e,this[i+2&o]=n,this._length=r},r.prototype.shift=function(){var t=this._front,e=this[t];return this[t]=void 0,this._front=t+1&this._capacity-1,this._length--,e},r.prototype.length=function(){return this._length},r.prototype._checkCapacity=function(t){this._capacity<t&&this._resizeTo(this._capacity<<1)},r.prototype._resizeTo=function(t){var e=this._capacity;this._capacity=t;var n=this._front,r=this._length,i=n+r&e-1;!function(t,e,n,r,i){for(var o=0;o<i;++o)n[o+r]=t[o+e],t[o+e]=void 0}(this,0,this,e,i)},e.exports=r},{}],27:[function(t,e,n){"use strict";e.exports=function(e,n,r,i){var o=t("./util"),a=function(t){return t.then(function(e){return s(e,t)})};function s(t,s){var c=r(t);if(c instanceof e)return a(c);if(null===(t=o.asArray(t)))return i("expecting an array or an iterable object but got "+o.classString(t));var u=new e(n);void 0!==s&&u._propagateFrom(s,3);for(var l=u._fulfill,f=u._reject,p=0,h=t.length;p<h;++p){var d=t[p];(void 0!==d||p in t)&&e.cast(d)._then(l,f,void 0,u,null)}return u}e.race=function(t){return s(t,void 0)},e.prototype.race=function(){return s(this,void 0)}}},{"./util":36}],28:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,a){var s=e._getDomain,c=t("./util"),u=c.tryCatch;function l(t,n,r,i){this.constructor$(t);var a=s();this._fn=null===a?n:c.domainBind(a,n),void 0!==r&&(r=e.resolve(r))._attachCancellationCallback(this),this._initialValue=r,this._currentCancellable=null,this._eachValues=i===o?Array(this._length):0===i?null:void 0,this._promise._captureStackTrace(),this._init$(void 0,-5)}function f(t,e){this.isFulfilled()?e._resolve(t):e._reject(t)}function p(t,e,n,i){if("function"!=typeof e)return r("expecting a function but got "+c.classString(e));var o=new l(t,e,n,i);return o.promise()}function h(t){this.accum=t,this.array._gotAccum(t);var n=i(this.value,this.array._promise);return n instanceof e?(this.array._currentCancellable=n,n._then(d,void 0,void 0,this,void 0)):d.call(this,n)}function d(t){var n,r=this.array,i=r._promise,o=u(r._fn);i._pushContext(),(n=void 0!==r._eachValues?o.call(i._boundValue(),t,this.index,this.length):o.call(i._boundValue(),this.accum,t,this.index,this.length))instanceof e&&(r._currentCancellable=n);var s=i._popContext();return a.checkForgottenReturns(n,s,void 0!==r._eachValues?"Promise.each":"Promise.reduce",i),n}c.inherits(l,n),l.prototype._gotAccum=function(t){void 0!==this._eachValues&&null!==this._eachValues&&t!==o&&this._eachValues.push(t)},l.prototype._eachComplete=function(t){return null!==this._eachValues&&this._eachValues.push(t),this._eachValues},l.prototype._init=function(){},l.prototype._resolveEmptyArray=function(){this._resolve(void 0!==this._eachValues?this._eachValues:this._initialValue)},l.prototype.shouldCopyValues=function(){return!1},l.prototype._resolve=function(t){this._promise._resolveCallback(t),this._values=null},l.prototype._resultCancelled=function(t){if(t===this._initialValue)return this._cancel();this._isResolved()||(this._resultCancelled$(),this._currentCancellable instanceof e&&this._currentCancellable.cancel(),this._initialValue instanceof e&&this._initialValue.cancel())},l.prototype._iterate=function(t){var n,r;this._values=t;var i=t.length;if(void 0!==this._initialValue?(n=this._initialValue,r=0):(n=e.resolve(t[0]),r=1),this._currentCancellable=n,!n.isRejected())for(;r<i;++r){var o={accum:null,value:t[r],index:r,length:i,array:this};n=n._then(h,void 0,void 0,o,void 0)}void 0!==this._eachValues&&(n=n._then(this._eachComplete,void 0,void 0,this,void 0)),n._then(f,f,void 0,n,this)},e.prototype.reduce=function(t,e){return p(this,t,e,null)},e.reduce=function(t,e,n,r){return p(t,e,n,r)}}},{"./util":36}],29:[function(t,i,o){"use strict";var a,s=t("./util"),c=s.getNativePromise();if(s.isNode&&"undefined"==typeof MutationObserver){var u=n.setImmediate,l=e.nextTick;a=s.isRecentNode?function(t){u.call(n,t)}:function(t){l.call(e,t)}}else if("function"==typeof c&&"function"==typeof c.resolve){var f=c.resolve();a=function(t){f.then(t)}}else a="undefined"==typeof MutationObserver||"undefined"!=typeof window&&window.navigator&&(window.navigator.standalone||window.cordova)?void 0!==r?function(t){r(t)}:"undefined"!=typeof setTimeout?function(t){setTimeout(t,0)}:function(){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}:function(){var t=document.createElement("div"),e={attributes:!0},n=!1,r=document.createElement("div"),i=new MutationObserver(function(){t.classList.toggle("foo"),n=!1});return i.observe(r,e),function(i){var o=new MutationObserver(function(){o.disconnect(),i()});o.observe(t,e),n||(n=!0,r.classList.toggle("foo"))}}();i.exports=a},{"./util":36}],30:[function(t,e,n){"use strict";e.exports=function(e,n,r){var i=e.PromiseInspection,o=t("./util");function a(t){this.constructor$(t)}o.inherits(a,n),a.prototype._promiseResolved=function(t,e){this._values[t]=e;var n=++this._totalResolved;return n>=this._length&&(this._resolve(this._values),!0)},a.prototype._promiseFulfilled=function(t,e){var n=new i;return n._bitField=33554432,n._settledValueField=t,this._promiseResolved(e,n)},a.prototype._promiseRejected=function(t,e){var n=new i;return n._bitField=16777216,n._settledValueField=t,this._promiseResolved(e,n)},e.settle=function(t){return r.deprecated(".settle()",".reflect()"),new a(t).promise()},e.prototype.settle=function(){return e.settle(this)}}},{"./util":36}],31:[function(t,e,n){"use strict";e.exports=function(e,n,r){var i=t("./util"),o=t("./errors").RangeError,a=t("./errors").AggregateError,s=i.isArray,c={};function u(t){this.constructor$(t),this._howMany=0,this._unwrap=!1,this._initialized=!1}function l(t,e){if((0|e)!==e||e<0)return r("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var n=new u(t),i=n.promise();return n.setHowMany(e),n.init(),i}i.inherits(u,n),u.prototype._init=function(){if(this._initialized)if(0!==this._howMany){this._init$(void 0,-5);var t=s(this._values);!this._isResolved()&&t&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}else this._resolve([])},u.prototype.init=function(){this._initialized=!0,this._init()},u.prototype.setUnwrap=function(){this._unwrap=!0},u.prototype.howMany=function(){return this._howMany},u.prototype.setHowMany=function(t){this._howMany=t},u.prototype._promiseFulfilled=function(t){return this._addFulfilled(t),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},u.prototype._promiseRejected=function(t){return this._addRejected(t),this._checkOutcome()},u.prototype._promiseCancelled=function(){return this._values instanceof e||null==this._values?this._cancel():(this._addRejected(c),this._checkOutcome())},u.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var t=new a,e=this.length();e<this._values.length;++e)this._values[e]!==c&&t.push(this._values[e]);return t.length>0?this._reject(t):this._cancel(),!0}return!1},u.prototype._fulfilled=function(){return this._totalResolved},u.prototype._rejected=function(){return this._values.length-this.length()},u.prototype._addRejected=function(t){this._values.push(t)},u.prototype._addFulfilled=function(t){this._values[this._totalResolved++]=t},u.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},u.prototype._getRangeError=function(t){var e="Input array must contain at least "+this._howMany+" items but contains only "+t+" items";return new o(e)},u.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},e.some=function(t,e){return l(t,e)},e.prototype.some=function(t){return l(this,t)},e._SomePromiseArray=u}},{"./errors":12,"./util":36}],32:[function(t,e,n){"use strict";e.exports=function(t){function e(t){void 0!==t?(t=t._target(),this._bitField=t._bitField,this._settledValueField=t._isFateSealed()?t._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}e.prototype._settledValue=function(){return this._settledValueField};var n=e.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},r=e.prototype.error=e.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},i=e.prototype.isFulfilled=function(){return 0!=(33554432&this._bitField)},o=e.prototype.isRejected=function(){return 0!=(16777216&this._bitField)},a=e.prototype.isPending=function(){return 0==(50397184&this._bitField)},s=e.prototype.isResolved=function(){return 0!=(50331648&this._bitField)};e.prototype.isCancelled=function(){return 0!=(8454144&this._bitField)},t.prototype.__isCancelled=function(){return 65536==(65536&this._bitField)},t.prototype._isCancelled=function(){return this._target().__isCancelled()},t.prototype.isCancelled=function(){return 0!=(8454144&this._target()._bitField)},t.prototype.isPending=function(){return a.call(this._target())},t.prototype.isRejected=function(){return o.call(this._target())},t.prototype.isFulfilled=function(){return i.call(this._target())},t.prototype.isResolved=function(){return s.call(this._target())},t.prototype.value=function(){return n.call(this._target())},t.prototype.reason=function(){var t=this._target();return t._unsetRejectionIsUnhandled(),r.call(t)},t.prototype._value=function(){return this._settledValue()},t.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},t.PromiseInspection=e}},{}],33:[function(t,e,n){"use strict";e.exports=function(e,n){var r=t("./util"),i=r.errorObj,o=r.isObject,a={}.hasOwnProperty;return function(t,s){if(o(t)){if(t instanceof e)return t;var c=function(t){try{return function(t){return t.then}(t)}catch(t){return i.e=t,i}}(t);if(c===i){s&&s._pushContext();var u=e.reject(c.e);return s&&s._popContext(),u}if("function"==typeof c){if(function(t){try{return a.call(t,"_promise0")}catch(t){return!1}}(t)){var u=new e(n);return t._then(u._fulfill,u._reject,void 0,u,null),u}return function(t,o,a){var s=new e(n),c=s;a&&a._pushContext(),s._captureStackTrace(),a&&a._popContext();var u=!0,l=r.tryCatch(o).call(t,function(t){s&&(s._resolveCallback(t),s=null)},function(t){s&&(s._rejectCallback(t,u,!0),s=null)});return u=!1,s&&l===i&&(s._rejectCallback(l.e,!0,!0),s=null),c}(t,c,s)}}return t}}},{"./util":36}],34:[function(t,e,n){"use strict";e.exports=function(e,n,r){var i=t("./util"),o=e.TimeoutError;function a(t){this.handle=t}a.prototype._resultCancelled=function(){clearTimeout(this.handle)};var s=function(t){return c(+this).thenReturn(t)},c=e.delay=function(t,i){var o,c;return void 0!==i?(o=e.resolve(i)._then(s,null,null,t,void 0),r.cancellation()&&i instanceof e&&o._setOnCancel(i)):(o=new e(n),c=setTimeout(function(){o._fulfill()},+t),r.cancellation()&&o._setOnCancel(new a(c)),o._captureStackTrace()),o._setAsyncGuaranteed(),o};function u(t){return clearTimeout(this.handle),t}function l(t){throw clearTimeout(this.handle),t}e.prototype.delay=function(t){return c(t,this)},e.prototype.timeout=function(t,e){var n,s;t=+t;var c=new a(setTimeout(function(){n.isPending()&&function(t,e,n){var r;r="string"!=typeof e?e instanceof Error?e:new o("operation timed out"):new o(e),i.markAsOriginatingFromRejection(r),t._attachExtraTrace(r),t._reject(r),null!=n&&n.cancel()}(n,e,s)},t));return r.cancellation()?(s=this.then(),(n=s._then(u,l,void 0,c,void 0))._setOnCancel(c)):n=this._then(u,l,void 0,c,void 0),n}}},{"./util":36}],35:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,a){var s=t("./util"),c=t("./errors").TypeError,u=t("./util").inherits,l=s.errorObj,f=s.tryCatch,p={};function h(t){setTimeout(function(){throw t},0)}function d(t,n){var i=0,a=t.length,s=new e(o);return function o(){if(i>=a)return s._fulfill();var c=function(t){var e=r(t);return e!==t&&"function"==typeof t._isDisposable&&"function"==typeof t._getDisposer&&t._isDisposable()&&e._setDisposable(t._getDisposer()),e}(t[i++]);if(c instanceof e&&c._isDisposable()){try{c=r(c._getDisposer().tryDispose(n),t.promise)}catch(t){return h(t)}if(c instanceof e)return c._then(o,h,null,null,null)}o()}(),s}function _(t,e,n){this._data=t,this._promise=e,this._context=n}function v(t,e,n){this.constructor$(t,e,n)}function y(t){return _.isDisposer(t)?(this.resources[this.index]._setDisposable(t),t.promise()):t}function m(t){this.length=t,this.promise=null,this[t-1]=null}_.prototype.data=function(){return this._data},_.prototype.promise=function(){return this._promise},_.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():p},_.prototype.tryDispose=function(t){var e=this.resource(),n=this._context;void 0!==n&&n._pushContext();var r=e!==p?this.doDispose(e,t):null;return void 0!==n&&n._popContext(),this._promise._unsetDisposable(),this._data=null,r},_.isDisposer=function(t){return null!=t&&"function"==typeof t.resource&&"function"==typeof t.tryDispose},u(v,_),v.prototype.doDispose=function(t,e){var n=this.data();return n.call(t,t,e)},m.prototype._resultCancelled=function(){for(var t=this.length,n=0;n<t;++n){var r=this[n];r instanceof e&&r.cancel()}},e.using=function(){var t=arguments.length;if(t<2)return n("you must pass at least 2 arguments to Promise.using");var i,o=arguments[t-1];if("function"!=typeof o)return n("expecting a function but got "+s.classString(o));var c=!0;2===t&&Array.isArray(arguments[0])?(i=arguments[0],t=i.length,c=!1):(i=arguments,t--);for(var u=new m(t),p=0;p<t;++p){var h=i[p];if(_.isDisposer(h)){var v=h;(h=h.promise())._setDisposable(v)}else{var g=r(h);g instanceof e&&(h=g._then(y,null,null,{resources:u,index:p},void 0))}u[p]=h}for(var b=new Array(u.length),p=0;p<b.length;++p)b[p]=e.resolve(u[p]).reflect();var w=e.all(b).then(function(t){for(var e=0;e<t.length;++e){var n=t[e];if(n.isRejected())return l.e=n.error(),l;if(!n.isFulfilled())return void w.cancel();t[e]=n.value()}C._pushContext(),o=f(o);var r=c?o.apply(void 0,t):o(t),i=C._popContext();return a.checkForgottenReturns(r,i,"Promise.using",C),r}),C=w.lastly(function(){var t=new e.PromiseInspection(w);return d(u,t)});return u.promise=C,C._setOnCancel(u),C},e.prototype._setDisposable=function(t){this._bitField=131072|this._bitField,this._disposer=t},e.prototype._isDisposable=function(){return(131072&this._bitField)>0},e.prototype._getDisposer=function(){return this._disposer},e.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},e.prototype.disposer=function(t){if("function"==typeof t)return new v(t,this,i());throw new c}}},{"./errors":12,"./util":36}],36:[function(t,r,i){"use strict";var o=t("./es5"),a="undefined"==typeof navigator,s={e:{}},c,u="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n?n:void 0!==this?this:null;function l(){try{var t=c;return c=null,t.apply(this,arguments)}catch(t){return s.e=t,s}}function f(t){return c=t,l}var p=function(t,e){var n={}.hasOwnProperty;function r(){for(var r in this.constructor=t,this.constructor$=e,e.prototype)n.call(e.prototype,r)&&"$"!==r.charAt(r.length-1)&&(this[r+"$"]=e.prototype[r])}return r.prototype=e.prototype,t.prototype=new r,t.prototype};function h(t){return null==t||!0===t||!1===t||"string"==typeof t||"number"==typeof t}function d(t){return"function"==typeof t||"object"==typeof t&&null!==t}function _(t){return h(t)?new Error(T(t)):t}function v(t,e){var n,r=t.length,i=new Array(r+1);for(n=0;n<r;++n)i[n]=t[n];return i[n]=e,i}function y(t,e,n){if(!o.isES5)return{}.hasOwnProperty.call(t,e)?t[e]:void 0;var r=Object.getOwnPropertyDescriptor(t,e);return null!=r?null==r.get&&null==r.set?r.value:n:void 0}function m(t,e,n){if(h(t))return t;var r={value:n,configurable:!0,enumerable:!1,writable:!0};return o.defineProperty(t,e,r),t}function g(t){throw t}var b=function(){var t=[Array.prototype,Object.prototype,Function.prototype],e=function(e){for(var n=0;n<t.length;++n)if(t[n]===e)return!0;return!1};if(o.isES5){var n=Object.getOwnPropertyNames;return function(t){for(var r=[],i=Object.create(null);null!=t&&!e(t);){var a;try{a=n(t)}catch(t){return r}for(var s=0;s<a.length;++s){var c=a[s];if(!i[c]){i[c]=!0;var u=Object.getOwnPropertyDescriptor(t,c);null!=u&&null==u.get&&null==u.set&&r.push(c)}}t=o.getPrototypeOf(t)}return r}}var r={}.hasOwnProperty;return function(n){if(e(n))return[];var i=[];t:for(var o in n)if(r.call(n,o))i.push(o);else{for(var a=0;a<t.length;++a)if(r.call(t[a],o))continue t;i.push(o)}return i}}(),w=/this\s*\.\s*\S+\s*=/;function C(t){try{if("function"==typeof t){var e=o.names(t.prototype),n=o.isES5&&e.length>1,r=e.length>0&&!(1===e.length&&"constructor"===e[0]),i=w.test(t+"")&&o.names(t).length>0;if(n||r||i)return!0}return!1}catch(t){return!1}}function E(t){function e(){}e.prototype=t;var n=new e;function r(){return typeof n.foo}return r(),r(),t}var j=/^[a-z$_][a-z$_0-9]*$/i;function k(t){return j.test(t)}function x(t,e,n){for(var r=new Array(t),i=0;i<t;++i)r[i]=e+i+n;return r}function T(t){try{return t+""}catch(t){return"[no string representation]"}}function F(t){return t instanceof Error||null!==t&&"object"==typeof t&&"string"==typeof t.message&&"string"==typeof t.name}function O(t){try{m(t,"isOperational",!0)}catch(t){}}function S(t){return null!=t&&(t instanceof Error.__BluebirdErrorTypes__.OperationalError||!0===t.isOperational)}function P(t){return F(t)&&o.propertyIsWritable(t,"stack")}var R="stack"in new Error?function(t){return P(t)?t:new Error(T(t))}:function(t){if(P(t))return t;try{throw new Error(T(t))}catch(t){return t}};function A(t){return{}.toString.call(t)}function L(t,e,n){for(var r=o.names(t),i=0;i<r.length;++i){var a=r[i];if(n(a))try{o.defineProperty(e,a,o.getDescriptor(t,a))}catch(t){}}}var I=function(t){return o.isArray(t)?t:null};if("undefined"!=typeof Symbol&&Symbol.iterator){var N="function"==typeof Array.from?function(t){return Array.from(t)}:function(t){for(var e,n=[],r=t[Symbol.iterator]();!(e=r.next()).done;)n.push(e.value);return n};I=function(t){return o.isArray(t)?t:null!=t&&"function"==typeof t[Symbol.iterator]?N(t):null}}var D=void 0!==e&&"[object process]"===A(e).toLowerCase(),M=void 0!==e&&!0;function V(t){return M?Object({NODE_ENV:"production"})[t]:void 0}function H(){if("function"==typeof Promise)try{var t=new Promise(function(){});if("[object Promise]"==={}.toString.call(t))return Promise}catch(t){}}function U(t,e){return t.bind(e)}var B={isClass:C,isIdentifier:k,inheritedDataKeys:b,getDataPropertyOrDefault:y,thrower:g,isArray:o.isArray,asArray:I,notEnumerableProp:m,isPrimitive:h,isObject:d,isError:F,canEvaluate:a,errorObj:s,tryCatch:f,inherits:p,withAppended:v,maybeWrapAsError:_,toFastProperties:E,filledRange:x,toString:T,canAttachTrace:P,ensureErrorObject:R,originatesFromRejection:S,markAsOriginatingFromRejection:O,classString:A,copyDescriptors:L,hasDevTools:"undefined"!=typeof chrome&&chrome&&"function"==typeof chrome.loadTimes,isNode:D,hasEnvVariables:M,env:V,global:u,getNativePromise:H,domainBind:U};B.isRecentNode=B.isNode&&function(){var t=e.versions.node.split(".").map(Number);return 0===t[0]&&t[1]>10||t[0]>0}(),B.isNode&&B.toFastProperties(e);try{throw new Error}catch(t){B.lastLineError=t}r.exports=B},{"./es5":13}]},{},[4])(4)}(),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)}).call(this,n(54),n(15),n(187).setImmediate)},94:function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},95:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},96:function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},99:function(t,e,n){var r,i,o;i=[],void 0===(o="function"==typeof(r=function(){var t=XMLHttpRequest;if(!t)throw new Error("missing XMLHttpRequest");function e(o,a){if("function"!=typeof a)throw new Error("Bad callback given: "+a);if(!o)throw new Error("No options given");var s=o.onResponse;if((o="string"==typeof o?{uri:o}:JSON.parse(JSON.stringify(o))).onResponse=s,o.verbose&&(e.log=function(){var t,e,n={},o=["trace","debug","info","warn","error"];for(e=0;e<o.length;e++)n[t=o[e]]=r,"undefined"!=typeof console&&console&&console[t]&&(n[t]=i(console,t));return n}()),o.url&&(o.uri=o.url,delete o.url),!o.uri&&""!==o.uri)throw new Error("options.uri is a required argument");if("string"!=typeof o.uri)throw new Error("options.uri must be a string");for(var c=["proxy","_redirectsFollowed","maxRedirects","followRedirect"],u=0;u<c.length;u++)if(o[c[u]])throw new Error("options."+c[u]+" is not supported");if(o.callback=a,o.method=o.method||"GET",o.headers=o.headers||{},o.body=o.body||null,o.timeout=o.timeout||e.DEFAULT_TIMEOUT,o.headers.host)throw new Error("Options.headers.host is not supported");o.json&&(o.headers.accept=o.headers.accept||"application/json","GET"!==o.method&&(o.headers["content-type"]="application/json"),"boolean"!=typeof o.json?o.body=JSON.stringify(o.json):"string"!=typeof o.body&&(o.body=JSON.stringify(o.body)));var l=function(t){var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push(encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e.join("&")};if(o.qs){var f="string"==typeof o.qs?o.qs:l(o.qs);-1!==o.uri.indexOf("?")?o.uri=o.uri+"&"+f:o.uri=o.uri+"?"+f}if(o.form){if("string"==typeof o.form)throw"form name unsupported";if("POST"===o.method){var p=(o.encoding||"application/x-www-form-urlencoded").toLowerCase();switch(o.headers["content-type"]=p,p){case"application/x-www-form-urlencoded":o.body=l(o.form).replace(/%20/g,"+");break;case"multipart/form-data":var h=function(t){var e={};e.boundry="-------------------------------"+Math.floor(1e9*Math.random());var n=[];for(var r in t)t.hasOwnProperty(r)&&n.push("--"+e.boundry+'\nContent-Disposition: form-data; name="'+r+'"\n\n'+t[r]+"\n");return n.push("--"+e.boundry+"--"),e.body=n.join(""),e.length=e.body.length,e.type="multipart/form-data; boundary="+e.boundry,e}(o.form);o.body=h.body,o.headers["content-type"]=h.type;break;default:throw new Error("unsupported encoding:"+p)}}}return o.onResponse=o.onResponse||r,!0===o.onResponse&&(o.onResponse=a,o.callback=r),!o.headers.authorization&&o.auth&&(o.headers.authorization="Basic "+function(t){var e,n,r,i,o,a,s,c,u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",l=0,f=0,p="",h=[];if(!t)return t;do{e=t.charCodeAt(l++),n=t.charCodeAt(l++),r=t.charCodeAt(l++),i=(c=e<<16|n<<8|r)>>18&63,o=c>>12&63,a=c>>6&63,s=63&c,h[f++]=u.charAt(i)+u.charAt(o)+u.charAt(a)+u.charAt(s)}while(l<t.length);switch(p=h.join(""),t.length%3){case 1:p=p.slice(0,-2)+"==";break;case 2:p=p.slice(0,-1)+"="}return p}(o.auth.username+":"+o.auth.password)),function(r){var i=new t,o=!1,a=function(t){var e,n=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/;try{e=location.href}catch(t){(e=document.createElement("a")).href="",e=e.href}var r=n.exec(e.toLowerCase())||[],i=n.exec(t.toLowerCase());return!(!i||i[1]==r[1]&&i[2]==r[2]&&(i[3]||("http:"===i[1]?80:443))==(r[3]||("http:"===r[1]?80:443)))}(r.uri),s="withCredentials"in i;if(n+=1,i.seq_id=n,i.id=n+": "+r.method+" "+r.uri,i._id=i.id,a&&!s){var c=new Error("Browser does not support cross-origin request: "+r.uri);return c.cors="unsupported",r.callback(c,i)}i.timeoutTimer=setTimeout(function(){o=!0;var t=new Error("ETIMEDOUT");return t.code="ETIMEDOUT",t.duration=r.timeout,e.log.error("Timeout",{id:i._id,milliseconds:r.timeout}),r.callback(t,i)},r.timeout);var u={response:!1,loading:!1,end:!1};return i.onreadystatechange=function(n){if(o)return e.log.debug("Ignoring timed out state change",{state:i.readyState,id:i.id});if(e.log.debug("State change",{state:i.readyState,id:i.id,timed_out:o}),i.readyState===t.OPENED)for(var a in e.log.debug("Request started",{id:i.id}),r.headers)i.setRequestHeader(a,r.headers[a]);else i.readyState===t.HEADERS_RECEIVED?l():i.readyState===t.LOADING?(l(),f()):i.readyState===t.DONE&&(l(),f(),function(){if(!u.end){if(u.end=!0,e.log.debug("Request done",{id:i.id}),i.body=i.responseText,r.json)try{i.body=JSON.parse(i.responseText)}catch(t){return r.callback(t,i)}r.callback(null,i,i.body)}}())},i.open(r.method,r.uri,!0),a&&(i.withCredentials=!!r.withCredentials),i.send(r.body),i;function l(){if(!u.response){if(u.response=!0,e.log.debug("Got response",{id:i.id,status:i.status}),clearTimeout(i.timeoutTimer),i.statusCode=i.status,a&&0==i.statusCode){var t=new Error("CORS request rejected: "+r.uri);return t.cors="rejected",u.loading=!0,u.end=!0,r.callback(t,i)}r.onResponse(null,i)}}function f(){u.loading||(u.loading=!0,e.log.debug("Response body loading",{id:i.id}))}}(o)}e.log={trace:r,debug:r,info:r,warn:r,error:r};var n=0;function r(){}function i(t,e){return function(n,r){return"object"==typeof r&&(n+=" "+JSON.stringify(r)),t[e].call(t,n)}}return e.withCredentials=!1,e.DEFAULT_TIMEOUT=18e4,e.defaults=function(t,n){var r=function(e){return function(n,r){for(var i in n="string"==typeof n?{uri:n}:JSON.parse(JSON.stringify(n)),t)void 0===n[i]&&(n[i]=t[i]);return e(n,r)}},i=r(e);return i.get=r(e.get),i.post=r(e.post),i.put=r(e.put),i.head=r(e.head),i},["get","put","post","head"].forEach(function(t){var n=t.toUpperCase();e[t.toLowerCase()]=function(t){"string"==typeof t?t={method:n,uri:t}:(t=JSON.parse(JSON.stringify(t))).method=n;var r=[t].concat(Array.prototype.slice.apply(arguments,[1]));return e.apply(this,r)}}),e.couch=function(t,n){return"string"==typeof t&&(t={uri:t}),t.json=!0,t.body&&(t.json=t.body),delete t.body,n=n||r,e(t,function(t,e,r){if(t)return n(t,e,r);if((e.statusCode<200||e.statusCode>299)&&r.error){for(var i in t=new Error("CouchDB error: "+(r.error.reason||r.error.error)),r)t[i]=r[i];return n(t,e,r)}return n(t,e,r)})},e})?r.apply(e,i):r)||(t.exports=o)}}); -//# sourceMappingURL=mobileguide.js.map \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/mobileguide.js.map b/riot/bundles/f5c70ee9a294f6e4590e/mobileguide.js.map deleted file mode 100644 index b609586..0000000 --- a/riot/bundles/f5c70ee9a294f6e4590e/mobileguide.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack/bootstrap","node_modules/core-js/library/modules/_to-integer.js","node_modules/core-js/library/modules/_defined.js","node_modules/core-js/library/modules/_to-primitive.js","node_modules/core-js/library/modules/_to-length.js","node_modules/core-js/library/modules/_shared-key.js","node_modules/core-js/library/modules/_shared.js","node_modules/core-js/library/modules/_enum-bug-keys.js","node_modules/core-js/library/modules/_dom-create.js","node_modules/babel-runtime/core-js/object/keys.js","(webpack)/buildin/global.js","node_modules/core-js/library/modules/_ie8-dom-define.js","node_modules/core-js/library/modules/_object-keys-internal.js","node_modules/core-js/library/modules/_iobject.js","node_modules/core-js/library/modules/_core.js","node_modules/timers-browserify/main.js","src/vector/mobile_guide/index.js","node_modules/babel-runtime/regenerator/index.js","node_modules/core-js/library/modules/_array-includes.js","node_modules/core-js/library/modules/_to-absolute-index.js","node_modules/babel-runtime/node_modules/regenerator-runtime/runtime-module.js","node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js","node_modules/setimmediate/setImmediate.js","node_modules/core-js/library/fn/object/keys.js","node_modules/core-js/library/modules/es6.object.keys.js","node_modules/core-js/library/modules/_export.js","node_modules/core-js/library/modules/_global.js","node_modules/core-js/library/modules/_is-object.js","src/vector/getconfig.js","node_modules/core-js/library/modules/_descriptors.js","node_modules/core-js/library/modules/_object-dp.js","node_modules/core-js/library/modules/_an-object.js","node_modules/process/browser.js","node_modules/core-js/library/modules/_fails.js","node_modules/core-js/library/modules/_to-iobject.js","node_modules/core-js/library/modules/_hide.js","node_modules/core-js/library/modules/_has.js","node_modules/core-js/library/modules/_ctx.js","node_modules/core-js/library/modules/_object-sap.js","node_modules/core-js/library/modules/_property-desc.js","node_modules/core-js/library/modules/_object-keys.js","node_modules/core-js/library/modules/_to-object.js","node_modules/bluebird/js/browser/bluebird.js","node_modules/core-js/library/modules/_a-function.js","node_modules/core-js/library/modules/_cof.js","node_modules/core-js/library/modules/_uid.js","node_modules/browser-request/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","ceil","Math","floor","it","isNaN","undefined","TypeError","isObject","S","fn","val","toString","valueOf","toInteger","min","shared","uid","global","store","split","document","is","createElement","default","g","this","Function","eval","e","window","a","has","toIObject","arrayIndexOf","IE_PROTO","names","O","result","push","length","cof","propertyIsEnumerable","core","version","__e","scope","self","apply","Timeout","id","clearFn","_id","_clearFn","setTimeout","arguments","clearTimeout","setInterval","clearInterval","timeout","close","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","setImmediate","clearImmediate","_callee","config","hsUrl","_regenerator2","wrap","_context","prev","next","getElementById","onclick","onBackToRiotClick","_bluebird","resolve","_getconfig","getVectorConfig","sent","endsWith","style","display","innerHTML","stop","cookie","location","href","initPage","toLength","toAbsoluteIndex","IS_INCLUDES","$this","el","fromIndex","index","max","hadRuntime","regeneratorRuntime","getOwnPropertyNames","indexOf","oldRuntime","Op","hasOwn","$Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","inModule","runtime","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","constructor","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","arg","__await","defineIteratorMethods","AsyncIterator","async","innerFn","outerFn","tryLocsList","iter","then","done","keys","reverse","pop","Context","reset","skipTempReset","_sent","delegate","method","tryEntries","forEach","resetTryEntry","charAt","slice","rootRecord","completion","type","rval","dispatchException","exception","context","handle","loc","caught","record","entry","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","Error","abrupt","finallyEntry","complete","afterLoc","finish","catch","thrown","delegateYield","iterable","resultName","nextLoc","protoGenerator","generator","_invoke","state","doneResult","delegateResult","maybeInvokeDelegate","tryCatch","makeInvokeMethod","obj","err","previousPromise","callInvokeWithMethodAndArg","Promise","reject","invoke","unwrapped","return","info","pushTryEntry","locs","iteratorMethod","process","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","nextTick","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","messagePrefix","random","onGlobalMessage","event","source","data","addEventListener","attachEvent","installPostMessageImplementation","MessageChannel","channel","port1","port2","installMessageChannelImplementation","html","documentElement","script","onreadystatechange","removeChild","appendChild","installReadyStateChangeImplementation","callback","args","Array","task","run","toObject","$keys","ctx","hide","$export","own","out","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","expProto","target","C","b","virtual","R","U","__g","relativeLocation","configJson","getConfig","domain","_keys2","t0","configJsonFilename","_browserRequest2","url","response","body","status","JSON","parse","anObject","IE8_DOM_DEFINE","toPrimitive","dP","f","Attributes","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","concat","drainQueue","len","marker","runClearTimeout","Item","array","noop","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","exec","IObject","defined","createDesc","aFunction","that","fails","KEY","exp","bitmap","configurable","writable","enumBugKeys","define","u","_dereq_","code","1","SomePromiseArray","_SomePromiseArray","any","promises","ret","promise","setHowMany","setUnwrap","init","2","firstLineError","schedule","Queue","util","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","_trampolineEnabled","drainQueues","_drainQueues","_schedule","AsyncInvokeLater","receiver","_queueTick","AsyncInvoke","AsyncSettlePromises","_pushOne","_drainQueue","_drainQueueStep","shift","_settlePromises","setScheduler","hasCustomScheduler","enableTrampoline","disableTrampolineIfNecessary","hasDevTools","haveItemsQueued","fatalError","isNode","stderr","write","stack","exit","throwLater","invokeLater","settlePromises","_reset","./queue","./schedule","./util","3","INTERNAL","tryConvertToPromise","debug","calledBind","rejectThis","_","_reject","targetRejected","promiseRejectionQueued","bindingPromise","_then","bindingResolved","thisArg","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","4","old","bluebird","noConflict","./promise","5","cr","callerCache","getterCache","canEvaluate","caller","methodName","message","classString","ensureMethod","namedGetter","indexedGetter","isIdentifier","propertyName","isIndex","maybeGetter","getGetter","6","PromiseArray","apiRejection","errorObj","_async","cancel","cancellation","_warn","child","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","parent","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","isArray","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","7","NEXT_FILTER","getKeys","instances","cb","boundTo","predicateLoop","matchesPredicate","j","./es5","8","longStackTraces","contextStack","_trace","CapturedTrace","peekContext","lastIndex","_promiseCreated","_pushContext","_popContext","_peekContext","trace","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","9","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","getDomain","_getDomain","Warning","es5","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","warnings","wForgottenReturn","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejection","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","reason","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","warn","onPossiblyUnhandledRejection","domainBind","onUnhandledRejectionHandled","disableLongStackTraces","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","Promise_dereferenceTrace","_dereferenceTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","longStackTracesDereferenceTrace","hasLongStackTraces","fireDomEvent","CustomEvent","dispatchEvent","eventData","detail","cancelable","domEvent","toLowerCase","Event","createEvent","initCustomEvent","fireGlobalEvent","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","warning","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","flags","branchesRemainingToCancel","opts","warningsOption","_clearCancellationData","_execute","monitoring","_fireEvent","handler","isFulfilled","error","ignoreSelf","_parent","attachExtraTrace","__stackCleaned__","parsed","parseStackAndMessage","notEnumerableProp","join","formatAndLogError","cleanStack","line","isTraceLine","test","isInternalFrame","shouldIgnore","replace","stackFramesAsArray","isSoft","console","String","log","localHandler","localEventFired","formatNonError","str","newStr","stringify","substr","maxChars","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","matches","match","fileName","parseInt","_promisesCreated","uncycle","inherits","nodes","stackToIndex","node","currentStack","cycleEdgeNode","currentChildLength","stacks","current","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","splice","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","isTTY","color","checkForgottenReturns","returnValue","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","msg","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","deprecated","replacement","./errors","10","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","catchReturn","_value","11","PromiseReduce","reduce","PromiseAll","all","promiseAllThis","each","mapSeries","12","_TypeError","_RangeError","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","CancellationError","TimeoutError","AggregateError","RangeError","methods","level","OperationalError","cause","indent","lines","errorTypes","RejectionError","13","isES5","getDescriptor","getOwnPropertyDescriptor","propertyIsWritable","prop","descriptor","set","proto","ObjectKeys","desc","14","PromiseMap","map","filter","options","15","catchFilter","PassThroughHandlerContext","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","fail","reasonOrValue","isFinallyHandler","isRejected","_passThrough","success","lastly","tap","tapCatch","handlerOrPredicate","catchInstances","./catch_filter","16","Proxyable","errors","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","implementsReturn","coroutine","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","spawn","addYieldHandler","17","last","spread","18","MappingPromiseArray","limit","_filter","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","isFinite","_init$","_init","_values","preservedValues","totalResolved","_totalResolved","_resolve","booleans","19","_resolveFromSyncValue","attempt","20","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","21","spreadAdapter","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","22","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","APPLY","createContext","nodebackForPromise","check","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","v","deferReject","fillTypes","reflect","didFulfill","didReject","_setIsFinal","toJSON","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","base","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","x","_settlePromise","isPromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","defer","pending","toFastProperties","./any.js","./async","./bind","./call_get.js","./cancel","./context","./debuggability","./direct_resolve","./each.js","./filter.js","./finally","./generators.js","./join","./map.js","./method","./nodeback","./nodeify.js","./promise_array","./promisify.js","./props.js","./race.js","./reduce.js","./settle.js","./some.js","./synchronous_inspection","./thenables","./timers.js","./using.js","23","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","Map","toResolutionValue","getActualLength","shouldCopyValues","isResolved","24","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","RegExp","defaultFilter","propsFilter","isPromisified","hasPromisified","suffix","getDataPropertyOrDefault","promisifiableMethods","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","escapeIdentRegex","makeNodePromisified","makeNodePromisifiedEval","__","defaultThis","promisified","promisifyAll","promisifier","promisifiedKey","promisify","copyDescriptors","isClass","25","Es6Map","mapToEntries","size","extractEntry","PropertiesPromiseArray","entries","isMap","_isMap","props","castValue","entriesToMap","keyOffset","26","capacity","_capacity","_front","_willBeOverCapacity","_checkCapacity","wrapMask","front","_resizeTo","oldCapacity","moveItemsCount","src","srcIndex","dst","dstIndex","arrayMove","27","raceLater","race","28","ReductionPromiseArray","initialValue","_each","_fn","_initialValue","_currentCancellable","_eachValues","completed","valueOrReason","gotAccum","accum","_gotAccum","gotValue","_eachComplete","sender","_resultCancelled$","29","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","ProcessNextTick","isRecentNode","nativePromise","navigator","standalone","cordova","div","attributes","toggleScheduled","div2","o2","classList","toggle","observe","disconnect","30","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","31","CANCELLATION","_howMany","_unwrap","_initialized","some","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","count","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","32","__isCancelled","33","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","34","HandleWrapper","afterValue","delay","ms","successClear","failureClear","handleWrapper","afterTimeout","35","NULL","dispose","resources","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","_data","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","resource","doDispose","_unsetDisposable","using","input","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","36","tryCatchTarget","globalObject","tryCatcher","Child","Parent","T","isPrimitive","maybeError","safeToString","appendee","defaultValue","excludedPrototypes","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","ic","foo","rident","filledRange","prefix","isError","ignore","from","to","ArrayFrom","itResult","hasEnvVariables","NODE_ENV","chrome","loadTimes","Number","px","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","XHR","XMLHttpRequest","request","options_onResponse","onResponse","uri","verbose","logger","levels","formatted","getLogger","unsupported_options","headers","DEFAULT_TIMEOUT","host","json","accept","serialize","encodeURIComponent","qs","form","encoding","multi","boundry","multipart","authorization","auth","o1","o3","h1","h2","h3","h4","bits","b64","ac","enc","tmp_arr","charCodeAt","b64_enc","username","password","xhr","timed_out","is_cors","ajaxLocation","rurl","ajaxLocParts","parts","is_crossDomain","supports_cors","req_seq","seq_id","cors_err","cors","timeoutTimer","er","duration","milliseconds","did","loading","end","readyState","OPENED","setRequestHeader","HEADERS_RECEIVED","on_response","LOADING","on_loading","DONE","responseText","on_end","open","withCredentials","send","statusCode","run_xhr","defaults","requester","def","params","de","post","put","head","shortcut","toUpperCase","couch","resp"],"mappings":"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","file":"bundles/f5c70ee9a294f6e4590e/mobileguide.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1880);\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n return store[key] || (store[key] = {});\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","var core = module.exports = { version: '2.5.1' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","import {getVectorConfig} from '../getconfig';\n\nfunction onBackToRiotClick() {\n document.cookie = 'mobile_redirect_to_guide=false;path=/';\n window.location.href = '../';\n}\n\nasync function initPage() {\n document.getElementById('back_to_riot_button').onclick = onBackToRiotClick;\n\n const config = await getVectorConfig('..');\n let hsUrl;\n if (config && config['default_hs_url']) {\n hsUrl = config['default_hs_url'];\n }\n if (hsUrl && !hsUrl.endsWith('/')) hsUrl += '/';\n if (hsUrl && hsUrl !== 'https://matrix.org/') {\n document.getElementById('step2_container').style.display = 'block';\n document.getElementById('hs_url').innerHTML = hsUrl;\n document.getElementById('step_login_header').innerHTML= 'Step 3: Register or Log in';\n }\n}\n\ninitPage();\n","module.exports = require(\"regenerator-runtime\");\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() { return this })() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && key in exports) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport Promise from 'bluebird';\nimport request from 'browser-request';\n\nexport async function getVectorConfig(relativeLocation) {\n if (relativeLocation === undefined) relativeLocation = '';\n if (relativeLocation !== '' && !relativeLocation.endsWith('/')) relativeLocation += '/';\n try {\n const configJson = await getConfig(`${relativeLocation}config.${document.domain}.json`);\n // 404s succeed with an empty json config, so check that there are keys\n if (Object.keys(configJson).length === 0) {\n throw new Error(); // throw to enter the catch\n }\n return configJson;\n } catch (e) {\n return await getConfig(relativeLocation + \"config.json\");\n }\n}\n\nfunction getConfig(configJsonFilename) {\n return new Promise(function(resolve, reject) {\n request(\n { method: \"GET\", url: configJsonFilename },\n (err, response, body) => {\n if (err || response.status < 200 || response.status >= 300) {\n // Lack of a config isn't an error, we should\n // just use the defaults.\n // Also treat a blank config as no config, assuming\n // the status code is 0, because we don't get 404s\n // from file: URIs so this is the only way we can\n // not fail if the file doesn't exist when loading\n // from a file:// URI.\n if (response) {\n if (response.status == 404 || (response.status == 0 && body == '')) {\n resolve({});\n }\n }\n reject({err: err, response: response});\n return;\n }\n\n // We parse the JSON ourselves rather than use the JSON\n // parameter, since this throws a parse error on empty\n // which breaks if there's no config.json and we're\n // loading from the filesystem (see above).\n resolve(JSON.parse(body));\n },\n );\n });\n}\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2018 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.5.2\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar SomePromiseArray = Promise._SomePromiseArray;\nfunction any(promises) {\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(1);\n ret.setUnwrap();\n ret.init();\n return promise;\n}\n\nPromise.any = function (promises) {\n return any(promises);\n};\n\nPromise.prototype.any = function () {\n return any(this);\n};\n\n};\n\n},{}],2:[function(_dereq_,module,exports){\n\"use strict\";\nvar firstLineError;\ntry {throw new Error(); } catch (e) {firstLineError = e;}\nvar schedule = _dereq_(\"./schedule\");\nvar Queue = _dereq_(\"./queue\");\nvar util = _dereq_(\"./util\");\n\nfunction Async() {\n this._customScheduler = false;\n this._isTickUsed = false;\n this._lateQueue = new Queue(16);\n this._normalQueue = new Queue(16);\n this._haveDrainedQueues = false;\n this._trampolineEnabled = true;\n var self = this;\n this.drainQueues = function () {\n self._drainQueues();\n };\n this._schedule = schedule;\n}\n\nAsync.prototype.setScheduler = function(fn) {\n var prev = this._schedule;\n this._schedule = fn;\n this._customScheduler = true;\n return prev;\n};\n\nAsync.prototype.hasCustomScheduler = function() {\n return this._customScheduler;\n};\n\nAsync.prototype.enableTrampoline = function() {\n this._trampolineEnabled = true;\n};\n\nAsync.prototype.disableTrampolineIfNecessary = function() {\n if (util.hasDevTools) {\n this._trampolineEnabled = false;\n }\n};\n\nAsync.prototype.haveItemsQueued = function () {\n return this._isTickUsed || this._haveDrainedQueues;\n};\n\n\nAsync.prototype.fatalError = function(e, isNode) {\n if (isNode) {\n process.stderr.write(\"Fatal \" + (e instanceof Error ? e.stack : e) +\n \"\\n\");\n process.exit(2);\n } else {\n this.throwLater(e);\n }\n};\n\nAsync.prototype.throwLater = function(fn, arg) {\n if (arguments.length === 1) {\n arg = fn;\n fn = function () { throw arg; };\n }\n if (typeof setTimeout !== \"undefined\") {\n setTimeout(function() {\n fn(arg);\n }, 0);\n } else try {\n this._schedule(function() {\n fn(arg);\n });\n } catch (e) {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n};\n\nfunction AsyncInvokeLater(fn, receiver, arg) {\n this._lateQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncInvoke(fn, receiver, arg) {\n this._normalQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncSettlePromises(promise) {\n this._normalQueue._pushOne(promise);\n this._queueTick();\n}\n\nif (!util.hasDevTools) {\n Async.prototype.invokeLater = AsyncInvokeLater;\n Async.prototype.invoke = AsyncInvoke;\n Async.prototype.settlePromises = AsyncSettlePromises;\n} else {\n Async.prototype.invokeLater = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvokeLater.call(this, fn, receiver, arg);\n } else {\n this._schedule(function() {\n setTimeout(function() {\n fn.call(receiver, arg);\n }, 100);\n });\n }\n };\n\n Async.prototype.invoke = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvoke.call(this, fn, receiver, arg);\n } else {\n this._schedule(function() {\n fn.call(receiver, arg);\n });\n }\n };\n\n Async.prototype.settlePromises = function(promise) {\n if (this._trampolineEnabled) {\n AsyncSettlePromises.call(this, promise);\n } else {\n this._schedule(function() {\n promise._settlePromises();\n });\n }\n };\n}\n\nfunction _drainQueue(queue) {\n while (queue.length() > 0) {\n _drainQueueStep(queue);\n }\n}\n\nfunction _drainQueueStep(queue) {\n var fn = queue.shift();\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n } else {\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n}\n\nAsync.prototype._drainQueues = function () {\n _drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n _drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29,\"./util\":36}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & (~2097152);\n }\n};\n\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (!true) {\nvar makeMethodCaller = function (methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n var ret = cache[name];\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n cache[\" size\"] = keys.length - 256;\n }\n }\n return ret;\n};\n\ngetMethodCaller = function(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n return fn;\n}\n\nfunction caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);;\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n if (maybeCaller !== null) {\n return this._then(\n maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n return obj[this];\n}\nfunction indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n var isIndex = (typeof propertyName === \"number\");\n var getter;\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (item != null && item.prototype instanceof Error)) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n Context.deactivateLongStackTraces = function() {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context) {\nvar getDomain = Promise._getDomain;\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar es5 = _dereq_(\"./es5\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (true ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n var self = this;\n setTimeout(function() {\n self._notifyUnhandledRejection();\n }, 1);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var domain = getDomain();\n possiblyUnhandledRejection =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var domain = getDomain();\n unhandledRejectionHandled =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace;\n config.longStackTraces = true;\n disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;\n Context.deactivateLongStackTraces();\n async.enableTrampoline();\n config.longStackTraces = false;\n };\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n Context.activateLongStackTraces();\n async.disableTrampolineIfNecessary();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\nvar fireDomEvent = (function() {\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var eventData = {\n detail: event,\n cancelable: true\n };\n es5.defineProperty(\n eventData, \"promise\", {value: event.promise});\n es5.defineProperty(eventData, \"reason\", {value: event.reason});\n var domEvent = new CustomEvent(name.toLowerCase(), eventData);\n return !util.global.dispatchEvent(domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = new Event(name.toLowerCase(), {\n cancelable: true\n });\n domEvent.detail = event;\n es5.defineProperty(domEvent, \"promise\", {value: event.promise});\n es5.defineProperty(domEvent, \"reason\", {value: event.reason});\n return !util.global.dispatchEvent(domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name.toLowerCase(), false, true,\n event);\n return !util.global.dispatchEvent(domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar fireGlobalEvent = (function() {\n if (util.isNode) {\n return function() {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function() {\n return false;\n };\n }\n return function(name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._dereferenceTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n}\n\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction longStackTracesDereferenceTrace() {\n this._trace = undefined;\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n}\n\nfunction reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n}\n\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = firstLineError.stack.split(\"\\n\");\n var lastStackLines = lastLineError.stack.split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\n return boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n}\n\nmodule.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n};\n\n},{\"./es5\":13,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n} else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\n catch(e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function() {\n return true;\n }\n };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"expecting an object but got \" + util.classString(item)\n ));\n }\n }\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n apiRejection,\n INTERNAL,\n tryConvertToPromise,\n Proxyable,\n debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n var result = tryCatch(yieldHandlers[i])(value);\n traceParent._popContext();\n if (result === errorObj) {\n traceParent._pushContext();\n var ret = Promise.reject(errorObj.e);\n traceParent._popContext();\n return ret;\n }\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n this._promise = internal.lastly(function() {\n return _finallyPromise;\n });\n internal._captureStackTrace();\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n }\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\"\n ? [yieldHandler].concat(yieldHandlers)\n : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n this._promise = this._generator = null;\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n this._finallyPromise = null;\n }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n var result;\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\n \"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n reason);\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n result = tryCatch(this._generator[\"return\"]).call(this._generator,\n undefined);\n this._promise._popContext();\n }\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n this._yieldedPromise = null;\n this._promise._pushContext();\n var result = tryCatch(this._generator.next).call(this._generator, value);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n this._yieldedPromise = null;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n var result = tryCatch(this._generator[\"throw\"])\n .call(this._generator, reason);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n};\n\nPromiseSpawn.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver =\n this._generatorFunction = undefined;\n this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n if (result === errorObj) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n if (result.done === true) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n if (!(maybePromise instanceof Promise)) {\n maybePromise =\n promiseFromYieldHandler(maybePromise,\n this._yieldHandlers,\n this._promise);\n if (maybePromise === null) {\n this._promiseRejected(\n new TypeError(\n \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n \"From coroutine:\\u000a\" +\n this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n )\n );\n return;\n }\n }\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n this._yieldedPromise = maybePromise;\n maybePromise._proxy(this, null);\n } else if (((bitField & 33554432) !== 0)) {\n Promise._async.invoke(\n this._promiseFulfilled, this, maybePromise._value()\n );\n } else if (((bitField & 16777216) !== 0)) {\n Promise._async.invoke(\n this._promiseRejected, this, maybePromise._reason()\n );\n } else {\n this._promiseCancelled();\n }\n }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n spawn._promiseFulfilled(undefined);\n return ret;\n };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n spawn._run(Promise.spawn);\n return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async,\n getDomain) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!true) {\nif (canEvaluate) {\n var thenCallback = function(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\n }\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n\n\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n maybePromise._value(), holder);\n } else if (((bitField & 16777216) !== 0)) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var domain = getDomain();\n if (domain !== null) {\n holder.fn = util.domainBind(domain, holder.fn);\n }\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var args = [].slice.call(arguments);;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n this._promise._captureStackTrace();\n var domain = getDomain();\n this._callback = domain === null ? fn : util.domainBind(domain, fn);\n this._preservedValues = _filter === INTERNAL\n ? new Array(this.length())\n : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = (index * -1) - 1;\n values[index] = value;\n if (limit >= 1) {\n this._inFlight--;\n this._drainQueue();\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n this._queue.push(index);\n return false;\n }\n if (preservedValues !== null) preservedValues[index] = value;\n\n var promise = this._promise;\n var callback = this._callback;\n var receiver = promise._boundValue();\n promise._pushContext();\n var ret = tryCatch(callback).call(receiver, value, index, length);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n promise\n );\n if (ret === errorObj) {\n this._reject(ret.e);\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n maybePromise._proxy(this, (index + 1) * -1);\n return false;\n } else if (((bitField & 33554432) !== 0)) {\n ret = maybePromise._value();\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(maybePromise._reason());\n return true;\n } else {\n this._cancel();\n return true;\n }\n }\n values[index] = ret;\n }\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n return true;\n }\n return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n this._promiseFulfilled(values[index], index);\n }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n ret.length = j;\n this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n if (options !== undefined) {\n if (typeof options === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(\n new TypeError(\"'concurrency' must be a number but it is \" +\n util.classString(options.concurrency)));\n }\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\n \"options argument must be an object but it is \" +\n util.classString(options)));\n }\n }\n limit = typeof limit === \"number\" &&\n isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n};\n};\n\n},{\"./util\":36}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);;\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret =\n tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nfunction successAdapter(val, nodeback) {\n var promise = this;\n var receiver = promise._boundValue();\n var ret = val === undefined\n ? tryCatch(nodeback).call(receiver, null)\n : tryCatch(nodeback).call(receiver, null, val);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\nfunction errorAdapter(reason, nodeback) {\n var promise = this;\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n this._then(\n adapter,\n errorAdapter,\n undefined,\n this,\n nodeback\n );\n }\n return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\n\nvar getDomain;\nif (util.isNode) {\n getDomain = function() {\n var ret = process.domain;\n if (ret === undefined) ret = null;\n return ret;\n };\n} else {\n getDomain = function() {\n return null;\n };\n}\nutil.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n _dereq_(\"./promise_array\")(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\nvar debug = _dereq_(\"./debuggability\")(Promise, Context);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((this._bitField & 2097152) !== 0)) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var domain = getDomain();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\n if (((bitField & 33554432) !== 0)) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if (((bitField & 16777216) !== 0)) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: domain === null ? handler\n : (typeof handler === \"function\" &&\n util.domainBind(domain, handler)),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise, receiver, domain);\n }\n\n return promise;\n};\n\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n this._bitField = this._bitField | 134217728;\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n domain\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n if (typeof fulfill === \"function\") {\n this[base + 0] =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\n this._setFollowee(promise);\n } else if (((bitField & 33554432) !== 0)) {\n this._fulfill(promise._value());\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n var promiseCreated = promise._popContext();\n bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = ((bitField & 134217728) !== 0);\n if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if (((bitField & 33554432) !== 0)) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if (((bitField & 134217728) !== 0)) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n this._dereferenceTrace();\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = (bitField & 65535);\n\n if (len > 0) {\n if (((bitField & 16842752) !== 0)) {\n var reason = this._fulfillmentHandler0;\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n};\n\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\nPromise.Promise = Promise;\nPromise.version = \"3.5.2\";\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./call_get.js')(Promise);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./filter.js')(Promise, INTERNAL);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./any.js')(Promise);\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \n function fillTypes(value) { \n var p = new Promise(INTERNAL); \n p._fulfillmentHandler0 = value; \n p._rejectionHandler0 = value; \n p._promise0 = value; \n p._receiver0 = value; \n } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \n fillTypes(1); \n fillTypes(function(){}); \n fillTypes(undefined); \n fillTypes(false); \n fillTypes(new Promise(INTERNAL)); \n debug.setBounds(Async.firstLineError, util.lastLineError); \n return Promise; \n\n};\n\n},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36}],23:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if (((bitField & 50397184) === 0)) {\n this._promise._setAsyncGuaranteed();\n return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\n } else if (((bitField & 33554432) !== 0)) {\n values = values._value();\n } else if (((bitField & 16777216) !== 0)) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if (((bitField & 50397184) === 0)) {\n maybePromise._proxy(this, i);\n this._values[i] = maybePromise;\n } else if (((bitField & 33554432) !== 0)) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if (((bitField & 16777216) !== 0)) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n \"arity\", \"length\",\n \"name\",\n \"arguments\",\n \"caller\",\n \"callee\",\n \"prototype\",\n \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n return util.isIdentifier(name) &&\n name.charAt(0) !== \"_\" &&\n name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n }\n catch (e) {\n return false;\n }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix,\n defaultPromisified);\n return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\"\n .replace(\"%s\", suffix));\n }\n }\n }\n }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter\n ? true : defaultFilter(key, value, obj);\n if (typeof value === \"function\" &&\n !isPromisified(value) &&\n !hasPromisified(obj, key, suffix) &&\n filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (!true) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n for(var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n return util.filledRange(\n Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined\n ? \"ret = callback({{args}}, nodeback); break;\\n\"\n : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] +\":\" +\n generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", (shouldProxyThis\n ? \"ret = callback.apply(this, args);\\n\"\n : \"ret = callback.apply(receiver, args);\\n\"));\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\"\n ? (\"this != null ? this['\"+callback+\"'] : fn\")\n : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n .replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\",\n \"fn\",\n \"receiver\",\n \"withAppended\",\n \"maybeWrapAsError\",\n \"nodebackForPromise\",\n \"tryCatch\",\n \"errorObj\",\n \"notEnumerableProp\",\n \"INTERNAL\",\n body)(\n Promise,\n fn,\n receiver,\n withAppended,\n maybeWrapAsError,\n nodebackForPromise,\n util.tryCatch,\n util.errorObj,\n util.notEnumerableProp,\n INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = (function() {return this;})();\n var method = callback;\n if (typeof method === \"string\") {\n callback = fn;\n }\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n var cb = typeof method === \"string\" && this !== defaultThis\n ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch(e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n ? makeNodePromisifiedEval\n : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods =\n promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i+= 2) {\n var key = methods[i];\n var fn = methods[i+1];\n var promisifiedKey = key + suffix;\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] =\n makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function() {\n return makeNodePromisified(key, THIS, key,\n fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n util.toFastProperties(obj);\n return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined,\n callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n if (isPromisified(fn)) {\n return fn;\n }\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && typeof target !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n\n var keys = util.inheritedDataKeys(target);\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n if (keys[i] !== \"constructor\" &&\n util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier,\n multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n})();\n\nvar entriesToMap = function(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n this.constructor$(entries);\n this._isMap = isMap;\n this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n var val;\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n this._resolve(val);\n return true;\n }\n return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n};\n\nfunction props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(\n Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n return ret;\n}\n\nPromise.prototype.props = function () {\n return props(this);\n};\n\nPromise.props = function (promises) {\n return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\n var wrapMask = this._capacity - 1;\n this[(j + 0) & wrapMask] = fn;\n this[(j + 1) & wrapMask] = receiver;\n this[(j + 2) & wrapMask] = arg;\n this._length = length;\n};\n\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n return promise.then(function(array) {\n return race(array, promise);\n });\n};\n\nfunction race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null)\n return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n return ret;\n}\n\nPromise.race = function (promises) {\n return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var domain = getDomain();\n this._fn = domain === null ? fn : util.domainBind(domain, fn);\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n initialValue._attachCancellationCallback(this);\n }\n this._initialValue = initialValue;\n this._currentCancellable = null;\n if(_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n this._promise._captureStackTrace();\n this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n if (this._eachValues !== undefined && \n this._eachValues !== null && \n accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n this._resolve(this._eachValues !== undefined ? this._eachValues\n : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n this._promise._resolveCallback(value);\n this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n this._resultCancelled$();\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value\n ._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n}\n\nfunction gotAccum(accum) {\n this.accum = accum;\n this.array._gotAccum(accum);\n var value = tryConvertToPromise(this.value, this.array._promise);\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n}\n\nfunction gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n promise._pushContext();\n var ret;\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(),\n this.accum, value, this.index, this.length);\n }\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n promise\n );\n return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova))) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function() {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function() {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n })();\n} else if (typeof setImmediate !== \"undefined\") {\n schedule = function (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n if (this._howMany === 0) {\n this._resolve([]);\n return;\n }\n this._init$(undefined, -5);\n var isArrayResolved = isArray(this._values);\n if (!this._isResolved() &&\n isArrayResolved &&\n this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n};\n\nSomePromiseArray.prototype.init = function () {\n this._initialized = true;\n this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n return true;\n }\n return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n this._addRejected(CANCELLATION);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n return true;\n }\n return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" +\n this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n}\n\nPromise.some = function (promises, howMany) {\n return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle) {\n this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n if (value !== undefined) {\n ret = Promise.resolve(value)\n ._then(afterValue, null, null, ms, undefined);\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function() { ret._fulfill(); }, +ms);\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n ret._captureStackTrace();\n }\n ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n var err;\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n util.markAsOriginatingFromRejection(err);\n promise._attachExtraTrace(err);\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n};\n\nfunction successClear(value) {\n clearTimeout(this.handle);\n return value;\n}\n\nfunction failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n }\n\n return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n var TypeError = _dereq_(\"./errors\").TypeError;\n var inherits = _dereq_(\"./util\").inherits;\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function(){throw e;}, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n if (maybePromise !== thenable &&\n typeof thenable._isDisposable === \"function\" &&\n typeof thenable._getDisposer === \"function\" &&\n thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n return maybePromise;\n }\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n if (maybePromise instanceof Promise &&\n maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(\n maybePromise._getDisposer().tryDispose(inspection),\n resources.promise);\n } catch (e) {\n return thrower(e);\n }\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower,\n null, null, null);\n }\n }\n iterator();\n }\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function(inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL\n ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n this._promise._unsetDisposable();\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return (d != null &&\n typeof d.resource === \"function\" &&\n typeof d.tryDispose === \"function\");\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n return value.promise();\n }\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length-1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function() {\n var len = this.length;\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\n \"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var input;\n var spreadArgs = true;\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n var resources = new ResourceList(len);\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n if (maybePromise instanceof Promise) {\n resource =\n maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources)\n .then(function(inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n inspections[i] = inspection.value();\n }\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs\n ? fn.apply(undefined, inspections) : fn(inspections);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n\n var promise = resultPromise.lastly(function() {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n promise._setOnCancel(resources);\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & (~131072);\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n throw new TypeError();\n };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n}\n\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function(obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var receiver = new FakeConstructor();\n function ic() {\n return typeof receiver.foo;\n }\n ic();\n ic();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj instanceof Error ||\n (obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\");\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n return Array.from(v);\n } : function(v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if ({}.toString.call(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nfunction domainBind(self, cb) {\n return self.bind(cb);\n}\n\nvar ret = {\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n hasDevTools: typeof chrome !== \"undefined\" && chrome &&\n typeof chrome.loadTimes === \"function\",\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n domainBind: domainBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version = process.versions.node.split(\".\").map(Number);\n return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13}]},{},[4])(4)\n}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","// Browser Request\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// UMD HEADER START \n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like enviroments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.returnExports = factory();\n }\n}(this, function () {\n// UMD HEADER END\n\nvar XHR = XMLHttpRequest\nif (!XHR) throw new Error('missing XMLHttpRequest')\nrequest.log = {\n 'trace': noop, 'debug': noop, 'info': noop, 'warn': noop, 'error': noop\n}\n\nvar DEFAULT_TIMEOUT = 3 * 60 * 1000 // 3 minutes\n\n//\n// request\n//\n\nfunction request(options, callback) {\n // The entry-point to the API: prep the options object and pass the real work to run_xhr.\n if(typeof callback !== 'function')\n throw new Error('Bad callback given: ' + callback)\n\n if(!options)\n throw new Error('No options given')\n\n var options_onResponse = options.onResponse; // Save this for later.\n\n if(typeof options === 'string')\n options = {'uri':options};\n else\n options = JSON.parse(JSON.stringify(options)); // Use a duplicate for mutating.\n\n options.onResponse = options_onResponse // And put it back.\n\n if (options.verbose) request.log = getLogger();\n\n if(options.url) {\n options.uri = options.url;\n delete options.url;\n }\n\n if(!options.uri && options.uri !== \"\")\n throw new Error(\"options.uri is a required argument\");\n\n if(typeof options.uri != \"string\")\n throw new Error(\"options.uri must be a string\");\n\n var unsupported_options = ['proxy', '_redirectsFollowed', 'maxRedirects', 'followRedirect']\n for (var i = 0; i < unsupported_options.length; i++)\n if(options[ unsupported_options[i] ])\n throw new Error(\"options.\" + unsupported_options[i] + \" is not supported\")\n\n options.callback = callback\n options.method = options.method || 'GET';\n options.headers = options.headers || {};\n options.body = options.body || null\n options.timeout = options.timeout || request.DEFAULT_TIMEOUT\n\n if(options.headers.host)\n throw new Error(\"Options.headers.host is not supported\");\n\n if(options.json) {\n options.headers.accept = options.headers.accept || 'application/json'\n if(options.method !== 'GET')\n options.headers['content-type'] = 'application/json'\n\n if(typeof options.json !== 'boolean')\n options.body = JSON.stringify(options.json)\n else if(typeof options.body !== 'string')\n options.body = JSON.stringify(options.body)\n }\n \n //BEGIN QS Hack\n var serialize = function(obj) {\n var str = [];\n for(var p in obj)\n if (obj.hasOwnProperty(p)) {\n str.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(obj[p]));\n }\n return str.join(\"&\");\n }\n \n if(options.qs){\n var qs = (typeof options.qs == 'string')? options.qs : serialize(options.qs);\n if(options.uri.indexOf('?') !== -1){ //no get params\n options.uri = options.uri+'&'+qs;\n }else{ //existing get params\n options.uri = options.uri+'?'+qs;\n }\n }\n //END QS Hack\n \n //BEGIN FORM Hack\n var multipart = function(obj) {\n //todo: support file type (useful?)\n var result = {};\n result.boundry = '-------------------------------'+Math.floor(Math.random()*1000000000);\n var lines = [];\n for(var p in obj){\n if (obj.hasOwnProperty(p)) {\n lines.push(\n '--'+result.boundry+\"\\n\"+\n 'Content-Disposition: form-data; name=\"'+p+'\"'+\"\\n\"+\n \"\\n\"+\n obj[p]+\"\\n\"\n );\n }\n }\n lines.push( '--'+result.boundry+'--' );\n result.body = lines.join('');\n result.length = result.body.length;\n result.type = 'multipart/form-data; boundary='+result.boundry;\n return result;\n }\n \n if(options.form){\n if(typeof options.form == 'string') throw('form name unsupported');\n if(options.method === 'POST'){\n var encoding = (options.encoding || 'application/x-www-form-urlencoded').toLowerCase();\n options.headers['content-type'] = encoding;\n switch(encoding){\n case 'application/x-www-form-urlencoded':\n options.body = serialize(options.form).replace(/%20/g, \"+\");\n break;\n case 'multipart/form-data':\n var multi = multipart(options.form);\n //options.headers['content-length'] = multi.length;\n options.body = multi.body;\n options.headers['content-type'] = multi.type;\n break;\n default : throw new Error('unsupported encoding:'+encoding);\n }\n }\n }\n //END FORM Hack\n\n // If onResponse is boolean true, call back immediately when the response is known,\n // not when the full request is complete.\n options.onResponse = options.onResponse || noop\n if(options.onResponse === true) {\n options.onResponse = callback\n options.callback = noop\n }\n\n // XXX Browsers do not like this.\n //if(options.body)\n // options.headers['content-length'] = options.body.length;\n\n // HTTP basic authentication\n if(!options.headers.authorization && options.auth)\n options.headers.authorization = 'Basic ' + b64_enc(options.auth.username + ':' + options.auth.password);\n\n return run_xhr(options)\n}\n\nvar req_seq = 0\nfunction run_xhr(options) {\n var xhr = new XHR\n , timed_out = false\n , is_cors = is_crossDomain(options.uri)\n , supports_cors = ('withCredentials' in xhr)\n\n req_seq += 1\n xhr.seq_id = req_seq\n xhr.id = req_seq + ': ' + options.method + ' ' + options.uri\n xhr._id = xhr.id // I know I will type \"_id\" from habit all the time.\n\n if(is_cors && !supports_cors) {\n var cors_err = new Error('Browser does not support cross-origin request: ' + options.uri)\n cors_err.cors = 'unsupported'\n return options.callback(cors_err, xhr)\n }\n\n xhr.timeoutTimer = setTimeout(too_late, options.timeout)\n function too_late() {\n timed_out = true\n var er = new Error('ETIMEDOUT')\n er.code = 'ETIMEDOUT'\n er.duration = options.timeout\n\n request.log.error('Timeout', { 'id':xhr._id, 'milliseconds':options.timeout })\n return options.callback(er, xhr)\n }\n\n // Some states can be skipped over, so remember what is still incomplete.\n var did = {'response':false, 'loading':false, 'end':false}\n\n xhr.onreadystatechange = on_state_change\n xhr.open(options.method, options.uri, true) // asynchronous\n if(is_cors)\n xhr.withCredentials = !! options.withCredentials\n xhr.send(options.body)\n return xhr\n\n function on_state_change(event) {\n if(timed_out)\n return request.log.debug('Ignoring timed out state change', {'state':xhr.readyState, 'id':xhr.id})\n\n request.log.debug('State change', {'state':xhr.readyState, 'id':xhr.id, 'timed_out':timed_out})\n\n if(xhr.readyState === XHR.OPENED) {\n request.log.debug('Request started', {'id':xhr.id})\n for (var key in options.headers)\n xhr.setRequestHeader(key, options.headers[key])\n }\n\n else if(xhr.readyState === XHR.HEADERS_RECEIVED)\n on_response()\n\n else if(xhr.readyState === XHR.LOADING) {\n on_response()\n on_loading()\n }\n\n else if(xhr.readyState === XHR.DONE) {\n on_response()\n on_loading()\n on_end()\n }\n }\n\n function on_response() {\n if(did.response)\n return\n\n did.response = true\n request.log.debug('Got response', {'id':xhr.id, 'status':xhr.status})\n clearTimeout(xhr.timeoutTimer)\n xhr.statusCode = xhr.status // Node request compatibility\n\n // Detect failed CORS requests.\n if(is_cors && xhr.statusCode == 0) {\n var cors_err = new Error('CORS request rejected: ' + options.uri)\n cors_err.cors = 'rejected'\n\n // Do not process this request further.\n did.loading = true\n did.end = true\n\n return options.callback(cors_err, xhr)\n }\n\n options.onResponse(null, xhr)\n }\n\n function on_loading() {\n if(did.loading)\n return\n\n did.loading = true\n request.log.debug('Response body loading', {'id':xhr.id})\n // TODO: Maybe simulate \"data\" events by watching xhr.responseText\n }\n\n function on_end() {\n if(did.end)\n return\n\n did.end = true\n request.log.debug('Request done', {'id':xhr.id})\n\n xhr.body = xhr.responseText\n if(options.json) {\n try { xhr.body = JSON.parse(xhr.responseText) }\n catch (er) { return options.callback(er, xhr) }\n }\n\n options.callback(null, xhr, xhr.body)\n }\n\n} // request\n\nrequest.withCredentials = false;\nrequest.DEFAULT_TIMEOUT = DEFAULT_TIMEOUT;\n\n//\n// defaults\n//\n\nrequest.defaults = function(options, requester) {\n var def = function (method) {\n var d = function (params, callback) {\n if(typeof params === 'string')\n params = {'uri': params};\n else {\n params = JSON.parse(JSON.stringify(params));\n }\n for (var i in options) {\n if (params[i] === undefined) params[i] = options[i]\n }\n return method(params, callback)\n }\n return d\n }\n var de = def(request)\n de.get = def(request.get)\n de.post = def(request.post)\n de.put = def(request.put)\n de.head = def(request.head)\n return de\n}\n\n//\n// HTTP method shortcuts\n//\n\nvar shortcuts = [ 'get', 'put', 'post', 'head' ];\nshortcuts.forEach(function(shortcut) {\n var method = shortcut.toUpperCase();\n var func = shortcut.toLowerCase();\n\n request[func] = function(opts) {\n if(typeof opts === 'string')\n opts = {'method':method, 'uri':opts};\n else {\n opts = JSON.parse(JSON.stringify(opts));\n opts.method = method;\n }\n\n var args = [opts].concat(Array.prototype.slice.apply(arguments, [1]));\n return request.apply(this, args);\n }\n})\n\n//\n// CouchDB shortcut\n//\n\nrequest.couch = function(options, callback) {\n if(typeof options === 'string')\n options = {'uri':options}\n\n // Just use the request API to do JSON.\n options.json = true\n if(options.body)\n options.json = options.body\n delete options.body\n\n callback = callback || noop\n\n var xhr = request(options, couch_handler)\n return xhr\n\n function couch_handler(er, resp, body) {\n if(er)\n return callback(er, resp, body)\n\n if((resp.statusCode < 200 || resp.statusCode > 299) && body.error) {\n // The body is a Couch JSON object indicating the error.\n er = new Error('CouchDB error: ' + (body.error.reason || body.error.error))\n for (var key in body)\n er[key] = body[key]\n return callback(er, resp, body);\n }\n\n return callback(er, resp, body);\n }\n}\n\n//\n// Utility\n//\n\nfunction noop() {}\n\nfunction getLogger() {\n var logger = {}\n , levels = ['trace', 'debug', 'info', 'warn', 'error']\n , level, i\n\n for(i = 0; i < levels.length; i++) {\n level = levels[i]\n\n logger[level] = noop\n if(typeof console !== 'undefined' && console && console[level])\n logger[level] = formatted(console, level)\n }\n\n return logger\n}\n\nfunction formatted(obj, method) {\n return formatted_logger\n\n function formatted_logger(str, context) {\n if(typeof context === 'object')\n str += ' ' + JSON.stringify(context)\n\n return obj[method].call(obj, str)\n }\n}\n\n// Return whether a URL is a cross-domain request.\nfunction is_crossDomain(url) {\n var rurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/\n\n // jQuery #8138, IE may throw an exception when accessing\n // a field from window.location if document.domain has been set\n var ajaxLocation\n try { ajaxLocation = location.href }\n catch (e) {\n // Use the href attribute of an A element since IE will modify it given document.location\n ajaxLocation = document.createElement( \"a\" );\n ajaxLocation.href = \"\";\n ajaxLocation = ajaxLocation.href;\n }\n\n var ajaxLocParts = rurl.exec(ajaxLocation.toLowerCase()) || []\n , parts = rurl.exec(url.toLowerCase() )\n\n var result = !!(\n parts &&\n ( parts[1] != ajaxLocParts[1]\n || parts[2] != ajaxLocParts[2]\n || (parts[3] || (parts[1] === \"http:\" ? 80 : 443)) != (ajaxLocParts[3] || (ajaxLocParts[1] === \"http:\" ? 80 : 443))\n )\n )\n\n //console.debug('is_crossDomain('+url+') -> ' + result)\n return result\n}\n\n// MIT License from http://phpjs.org/functions/base64_encode:358\nfunction b64_enc (data) {\n // Encodes string using MIME base64 algorithm\n var b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc=\"\", tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n // assume utf8 data\n // data = this.utf8_encode(data+'');\n\n do { // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n\n bits = o1<<16 | o2<<8 | o3;\n\n h1 = bits>>18 & 0x3f;\n h2 = bits>>12 & 0x3f;\n h3 = bits>>6 & 0x3f;\n h4 = bits & 0x3f;\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '==';\n break;\n case 2:\n enc = enc.slice(0, -1) + '=';\n break;\n }\n\n return enc;\n}\n return request;\n//UMD FOOTER START\n}));\n//UMD FOOTER END\n"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/olm.js b/riot/bundles/f5c70ee9a294f6e4590e/olm.js deleted file mode 100644 index f0d37cd..0000000 --- a/riot/bundles/f5c70ee9a294f6e4590e/olm.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e){var r={};function n(i){if(r[i])return r[i].exports;var t=r[i]={i:i,l:!1,exports:{}};return e[i].call(t.exports,t,t.exports,n),t.l=!0,t.exports}n.m=e,n.c=r,n.d=function(e,r,i){n.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,r){if(1&r&&(e=n(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var t in e)n.d(i,t,function(r){return e[r]}.bind(null,t));return i},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,"a",r),r},n.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},n.p="",n(n.s=1881)}({15:function(e,r){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},1881:function(e,r,n){"use strict";(function(e){e.OLM_OPTIONS={TOTAL_STACK:65536,TOTAL_MEMORY:262144},n(1882)}).call(this,n(15))},1882:function(module,exports){var N={},ra,process;if("undefined"!=typeof window)ra=function(e){window.crypto.getRandomValues(e)};else{if(!module.exports)throw Error("Cannot find global to attach library to");var cb=require("crypto");ra=function(e){var r=cb.randomBytes(e.length);e.set(r)},process=global.process}!function(){function P(e){eval.call(null,e)}function z(e,r){e||Q("Assertion failed: "+r)}function Ba(g){var b=a["_"+g];if(!b)try{b=eval("_"+g)}catch(e){}return z(b,"Cannot call unknown function "+g+" (perhaps LLVM optimizations or closure removed it?)"),b}function Ca(e,r,n){switch("*"===(n=n||"i8").charAt(n.length-1)&&(n="i32"),n){case"i1":case"i8":A[e>>0]=r;break;case"i16":fa[e>>1]=r;break;case"i32":D[e>>2]=r;break;case"i64":tempI64=[r>>>0,(tempDouble=r,1<=+db(tempDouble)?0<tempDouble?(0|eb(+fb(tempDouble/4294967296),4294967295))>>>0:~~+gb((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],D[e>>2]=tempI64[0],D[e+4>>2]=tempI64[1];break;case"float":ga[e>>2]=r;break;case"double":ha[e>>3]=r;break;default:Q("invalid type for setValue: "+n)}}function W(e,r){switch("*"===(r=r||"i8").charAt(r.length-1)&&(r="i32"),r){case"i1":case"i8":return A[e>>0];case"i16":return fa[e>>1];case"i32":case"i64":return D[e>>2];case"float":return ga[e>>2];case"double":return ha[e>>3];default:Q("invalid type for setValue: "+r)}return null}function K(r,n,i,t){var o,a;"number"==typeof r?(o=!0,a=r):(o=!1,a=r.length);var u,s,_="string"==typeof n?n:null;if(i=4==i?t:["function"==typeof X?X:e.p,e.j,e.p,e.e][void 0===i?2:i](Math.max(a,_?1:n.length)),o){for(t=i,z(0==(3&i)),r=i+(-4&a);t<r;t+=4)D[t>>2]=0;for(r=i+a;t<r;)A[t++>>0]=0;return i}if("i8"===_)return r.subarray||r.slice?B.set(r,i):B.set(new Uint8Array(r),i),i;for(t=0;t<a;){var l=r[t];"function"==typeof l&&(l=e.O(l)),0===(o=_||n[t])?t++:("i64"==o&&(o="i32"),Ca(i+t,l,o),s!==o&&(u=e.r(o),s=o),t+=u)}return i}function r(e,r){if(0===r||!e)return"";for(var n,i=0,t=0;(i|=n=B[e+t>>0],0!=n||r)&&(t++,!r||t!=r););if(r||(r=t),n="",128>i){for(;0<r;)i=String.fromCharCode.apply(String,B.subarray(e,e+Math.min(r,1024))),n=n?n+i:i,e+=1024,r-=1024;return n}return a.UTF8ToString(e)}function Ea(e,r){for(var n,i,t,o,a,u="";;){if(!(n=e[r++]))return u;128&n?(i=63&e[r++],192==(224&n)?u+=String.fromCharCode((31&n)<<6|i):(t=63&e[r++],224==(240&n)?n=(15&n)<<12|i<<6|t:(o=63&e[r++],240==(248&n)?n=(7&n)<<18|i<<12|t<<6|o:(a=63&e[r++],248==(252&n)?n=(3&n)<<24|i<<18|t<<12|o<<6|a:n=(1&n)<<30|i<<24|t<<18|o<<12|a<<6|63&e[r++])),65536>n?u+=String.fromCharCode(n):(n-=65536,u+=String.fromCharCode(55296|n>>10,56320|1023&n)))):u+=String.fromCharCode(n)}}function sa(e){return Ea(B,e)}function ta(e,r,n,i){if(!(0<i))return 0;var t=n;i=n+i-1;for(var o=0;o<e.length;++o){var a=e.charCodeAt(o);if(55296<=a&&57343>=a&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++o)),127>=a){if(n>=i)break;r[n++]=a}else{if(2047>=a){if(n+1>=i)break;r[n++]=192|a>>6}else{if(65535>=a){if(n+2>=i)break;r[n++]=224|a>>12}else{if(2097151>=a){if(n+3>=i)break;r[n++]=240|a>>18}else{if(67108863>=a){if(n+4>=i)break;r[n++]=248|a>>24}else{if(n+5>=i)break;r[n++]=252|a>>30,r[n++]=128|a>>24&63}r[n++]=128|a>>18&63}r[n++]=128|a>>12&63}r[n++]=128|a>>6&63}r[n++]=128|63&a}}return r[n]=0,n-t}function Fa(e){for(var r=0,n=0;n<e.length;++n){var i=e.charCodeAt(n);55296<=i&&57343>=i&&(i=65536+((1023&i)<<10)|1023&e.charCodeAt(++n)),127>=i?++r:r=2047>=i?r+2:65535>=i?r+3:2097151>=i?r+4:67108863>=i?r+5:r+6}return r}function hb(n){return n.replace(/__Z[\w\d_]+/g,function(n){var i;e:{if(a.___cxa_demangle)try{var t=X(n.length);ua(n.substr(1),t);var o=X(4),u=a.___cxa_demangle(t,0,0,o);if(0===W(o,"i32")&&u){i=r(u);break e}}catch(e){i=n;break e}finally{t&&va(t),o&&va(o),u&&va(u)}e.g("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),i=n}return n===i?n:n+" ["+i+"]"})}function Ga(){var e,r=hb;e:{if(!(e=Error()).stack){try{throw Error(0)}catch(r){e=r}if(!e.stack){e="(no stack trace available)";break e}}e=e.stack.toString()}return r(e)}function ib(e){return 0<e%4096&&(e+=4096-e%4096),e}function S(r){for(;0<r.length;){var n=r.shift();if("function"==typeof n)n();else{var i=n.K;"number"==typeof i?void 0===n.l?e.m("v",i):e.m("vi",i,[n.l]):i(void 0===n.l?null:n.l)}}}function Ha(e){Ia.unshift(e)}function Ja(e){Ka.unshift(e)}function ia(e,r,n){return e=ta(e,n=Array(0<n?n:Fa(e)+1),0,n.length),r&&(n.length=e),n}function ua(e,r,n){for(e=ia(e,n),n=0;n<e.length;)A[r+n>>0]=e[n],n+=1}function La(e,r){for(var n=0;n<e.length;n++)A[r++>>0]=e[n]}function Ma(e,r,n){for(var i=0;i<e.length;++i)A[r++>>0]=e.charCodeAt(i);n||(A[r>>0]=0)}function Na(e){return a.___errno_location&&(D[a.___errno_location()>>2]=e),e}function ja(r){var n=ja;n.b||(E=ib(E),n.b=!0,z(e.e),n.v=e.e,e.e=function(){Q("cannot dynamically allocate, sbrk now has control")});var i=E;return 0==r||n.v(r)?i:4294967295}function wa(){var r=wa;return r.b||(r.b=[]),r.b.push(e.f()),r.b.length-1}function T(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function xa(e){function r(){if(!a.calledRun&&(a.calledRun=!0,!ka)){if(Y||(Y=!0,S(la)),S(Oa),a.onRuntimeInitialized&&a.onRuntimeInitialized(),a._main&&Pa&&a.callMain(e),a.postRun)for("function"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;)Ja(a.postRun.shift());S(Ka)}}if(e=e||a.arguments,null===Qa&&(Qa=Date.now()),!(0<R)){if(a.preRun)for("function"==typeof a.preRun&&(a.preRun=[a.preRun]);a.preRun.length;)Ha(a.preRun.shift());S(Ia),0<R||a.calledRun||(a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1),r()},1)):r())}}function Ra(e,r){if(!r||!a.noExitRuntime)throw!a.noExitRuntime&&(ka=!0,H=jb,S(Sa),a.onExit)&&a.onExit(e),Z?process.exit(e):ma&&"function"==typeof quit&&quit(e),new T(e)}function Q(e){void 0!==e?(a.print(e),a.o(e),e=JSON.stringify(e)):e="",ka=!0;var r="abort("+e+") at "+Ga()+"\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";throw Ta&&Ta.forEach(function(n){r=n(r,e)}),r}function L(){var e=a._olm_outbound_group_session_size();this.c=u(e),this.a=a._olm_outbound_group_session(this.c)}function v(e){return function(){var n=e.apply(this,arguments);if(n===aa)throw n=r(a._olm_outbound_group_session_last_error(arguments[0])),Error("OLM."+n);return n}}function I(){var e=a._olm_inbound_group_session_size();this.c=u(e),this.a=a._olm_inbound_group_session(this.c)}function F(e){return function(){var n=e.apply(this,arguments);if(n===aa)throw n=r(a._olm_inbound_group_session_last_error(arguments[0])),Error("OLM."+n);return n}}function h(e){return a.allocate(e,"i8",a.ALLOC_STACK)}function m(e){return a.intArrayFromString(e,!0)}function ba(e){var r=h(e);return e=new Uint8Array(a.HEAPU8.buffer,r,e),ra(e),r}function k(e){return function(){var r=Ua.f();try{return e.apply(this,arguments)}finally{Ua.d(r)}}}function na(e,r){for(;0<r--;)a.HEAP8[e++]=0}function C(){var e=a._olm_account_size();this.c=u(e),this.a=a._olm_account(this.c)}function t(e){return function(){var n=e.apply(this,arguments);if(n===aa)throw n=r(a._olm_account_last_error(arguments[0])),Error("OLM."+n);return n}}function w(){var e=a._olm_session_size();this.c=u(e),this.a=a._olm_session(this.c)}function p(e){return function(){var n=e.apply(this,arguments);if(n===aa)throw n=r(a._olm_session_last_error(arguments[0])),Error("OLM."+n);return n}}function oa(){var e=a._olm_utility_size();this.c=u(e),this.a=a._olm_utility(this.c)}function ya(e){return function(){var n=e.apply(this,arguments);if(n===aa)throw n=r(a._olm_utility_last_error(arguments[0])),Error("OLM."+n);return n}}var a={};if("undefined"!=typeof OLM_OPTIONS)for(var G in OLM_OPTIONS)OLM_OPTIONS.hasOwnProperty(G)&&(a[G]=OLM_OPTIONS[G]);a||(a=eval("(function() { try { return Module || {} } catch(e) { return {} } })()"));var ca={};for(G in a)a.hasOwnProperty(G)&&(ca[G]=a[G]);var da=!1,U=!1,Z=!1,ma=!1,pa,qa;if(a.ENVIRONMENT)if("WEB"===a.ENVIRONMENT)da=!0;else if("WORKER"===a.ENVIRONMENT)U=!0;else if("NODE"===a.ENVIRONMENT)Z=!0;else{if("SHELL"!==a.ENVIRONMENT)throw Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.");ma=!0}else da="object"==typeof window,U="function"==typeof importScripts,Z="object"==typeof process&&"function"==typeof require&&!da&&!U,ma=!da&&!Z&&!U;if(Z)a.print||(a.print=console.log),a.printErr||(a.printErr=console.warn),a.read=function(e,r){pa||(pa=require("fs")),qa||(qa=require("path")),e=qa.normalize(e);var n=pa.readFileSync(e);return n||e==qa.resolve(e)||(e=path.join(__dirname,"..","src",e),n=pa.readFileSync(e)),n&&!r&&(n=n.toString()),n},a.readBinary=function(e){return(e=a.read(e,!0)).buffer||(e=new Uint8Array(e)),z(e.buffer),e},a.load=function(e){P(read(e))},a.thisProgram||(a.thisProgram=1<process.argv.length?process.argv[1].replace(/\\/g,"/"):"unknown-program"),a.arguments=process.argv.slice(2),void 0!==module&&(module.exports=a),process.on("uncaughtException",function(e){if(!(e instanceof T))throw e}),a.inspect=function(){return"[Emscripten Module object]"};else if(ma)a.print||(a.print=print),"undefined"!=typeof printErr&&(a.printErr=printErr),a.read="undefined"!=typeof read?read:function(){throw"no read() available (jsc?)"},a.readBinary=function(e){return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(z("object"==typeof(e=read(e,"binary"))),e)},"undefined"!=typeof scriptArgs?a.arguments=scriptArgs:void 0!==arguments&&(a.arguments=arguments),eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined");else{if(!da&&!U)throw"Unknown runtime environment. Where are we?";a.read=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},a.readAsync=function(e,r,n){var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=function(){200==i.status||0==i.status&&i.response?r(i.response):n()},i.onerror=n,i.send(null)},void 0!==arguments&&(a.arguments=arguments),"undefined"!=typeof console?(a.print||(a.print=function(e){console.log(e)}),a.printErr||(a.printErr=function(e){console.warn(e)})):a.print||(a.print=function(){}),U&&(a.load=importScripts),void 0===a.setWindowTitle&&(a.setWindowTitle=function(e){document.title=e})}for(G in!a.load&&a.read&&(a.load=function(e){P(a.read(e))}),a.print||(a.print=function(){}),a.printErr||(a.printErr=a.print),a.arguments||(a.arguments=[]),a.thisProgram||(a.thisProgram="./this.program"),a.print=a.print,a.o=a.printErr,a.preRun=[],a.postRun=[],ca)ca.hasOwnProperty(G)&&(a[G]=ca[G]);var ca=void 0,e={C:function(e){tempRet0=e},A:function(){return tempRet0},f:function(){return H},d:function(e){H=e},r:function(r){switch(r){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:return"*"===r[r.length-1]?e.k:"i"===r[0]?(z(0==(r=parseInt(r.substr(1)))%8),r/8):0}},w:function(r){return Math.max(e.r(r),e.k)},D:16,R:function(e,r){return"double"===r||"i64"===r?7&e&&(z(4==(7&e)),e+=4):z(0==(3&e)),e},L:function(r,n,i){return i||"i64"!=r&&"double"!=r?r?Math.min(n||(r?e.w(r):0),e.k):Math.min(n,8):8},m:function(e,r,n){return n&&n.length?(n.splice||(n=Array.prototype.slice.call(n)),n.splice(0,0,r),a["dynCall_"+e].apply(null,n)):a["dynCall_"+e].call(null,r)},i:[],s:function(r){for(var n=0;n<e.i.length;n++)if(!e.i[n])return e.i[n]=r,2*(1+n);throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."},B:function(r){e.i[(r-2)/2]=null},g:function(r){e.g.b||(e.g.b={}),e.g.b[r]||(e.g.b[r]=1,a.o(r))},n:{},N:function(r,n){z(n),e.n[n]||(e.n[n]={});var i=e.n[n];return i[r]||(i[r]=function(){return e.m(n,r,arguments)}),i[r]},M:function(){throw"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work"},j:function(e){var r=H;return H=(H=H+e|0)+15&-16,r},p:function(e){var r=J;return J=(J=J+e|0)+15&-16,r},e:function(e){var r=E;return(e=(E=(E=E+e|0)+15&-16)>=V)&&(Q("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+V+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 "),e=!0),e?(E=r,0):r},q:function(e,r){return Math.ceil(e/(r||16))*(r||16)},Q:function(e,r,n){return n?+(e>>>0)+4294967296*+(r>>>0):+(e>>>0)+4294967296*+(0|r)},h:8,k:4,F:0};a.Runtime=e,e.addFunction=e.s,e.removeFunction=e.B;var ka=!1,Va,Wa;!function(){function a(e){return{arguments:(e=e.toString().match(d).slice(1))[0],body:e[1],returnValue:e[2]}}function b(){if(!l)for(var e in l={},c)c.hasOwnProperty(e)&&(l[e]=a(c[e]))}var c={stackSave:function(){e.f()},stackRestore:function(){e.d()},arrayToC:function(r){var n=e.j(r.length);return La(r,n),n},stringToC:function(r){var n=0;return null!==r&&void 0!==r&&0!==r&&ua(r,n=e.j(1+(r.length<<2))),n}},f={string:c.stringToC,array:c.arrayToC};Wa=function(n,i,t,o,a){n=Ba(n);var u=[],s=0;if(o)for(var _=0;_<o.length;_++){var l=f[t[_]];l?(0===s&&(s=e.f()),u[_]=l(o[_])):u[_]=o[_]}if(t=n.apply(null,u),"string"===i&&(t=r(t)),0!==s){if(a&&a.async)return void EmterpreterAsync.G.push(function(){e.d(s)});e.d(s)}return t};var d=/^function\s*[a-zA-Z$_0-9]*\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/,l=null;Va=function(c,f,d){d=d||[];var O=Ba(c);c=d.every(function(e){return"number"===e});var h="string"!==f;if(h&&c)return O;var e=d.map(function(e,r){return"$"+r});f="(function("+e.join(",")+") {";var k=d.length;if(!c){b(),f+="var stack = "+l.stackSave.body+";";for(var m=0;m<k;m++){var q=e[m],p=d[m];"number"!==p&&(p=l[p+"ToC"],f+="var "+p.arguments+" = "+q+";",f+=p.body+";",f+=q+"=("+p.returnValue+");")}}return d=a(function(){return O}).returnValue,f+="var ret = "+d+"("+e.join(",")+");",h||(d=a(function(){return r}).returnValue,f+="ret = "+d+"(ret);"),c||(b(),f+=l.stackRestore.body.replace("()","(stack)")+";"),eval(f+"return ret})")}}(),a.ccall=Wa,a.cwrap=Va,a.setValue=Ca,a.getValue=W,a.ALLOC_NORMAL=0,a.ALLOC_STACK=1,a.ALLOC_STATIC=2,a.ALLOC_DYNAMIC=3,a.ALLOC_NONE=4,a.allocate=K,a.getMemory=function(r){return Xa?void 0!==ja&&!ja.b||!Y?e.e(r):X(r):e.p(r)},a.Pointer_stringify=r,a.AsciiToString=function(e){for(var r="";;){var n=A[e++>>0];if(!n)return r;r+=String.fromCharCode(n)}},a.stringToAscii=function(e,r){return Ma(e,r,!1)},a.UTF8ArrayToString=Ea,a.UTF8ToString=sa,a.stringToUTF8Array=ta,a.stringToUTF8=function(e,r,n){return ta(e,B,r,n)},a.lengthBytesUTF8=Fa,a.stackTrace=Ga;for(var x,A,B,fa,Ya,D,Za,ga,ha,$a=0,J=0,Xa=!1,ab=0,H=0,za=0,E=0,bb=a.TOTAL_STACK||5242880,V=a.TOTAL_MEMORY||16777216,M=65536;M<V||M<2*bb;)M=16777216>M?2*M:M+16777216;if(M!==V&&(V=M),x=a.buffer?a.buffer:new ArrayBuffer(V),a.HEAP8=A=new Int8Array(x),a.HEAP16=fa=new Int16Array(x),a.HEAP32=D=new Int32Array(x),a.HEAPU8=B=new Uint8Array(x),a.HEAPU16=Ya=new Uint16Array(x),a.HEAPU32=Za=new Uint32Array(x),a.HEAPF32=ga=new Float32Array(x),a.HEAPF64=ha=new Float64Array(x),D[0]=255,255!==B[0]||0!==B[3])throw"Typed arrays 2 must be run on a little-endian system";a.HEAP=void 0,a.buffer=x,a.HEAP8=A,a.HEAP16=fa,a.HEAP32=D,a.HEAPU8=B,a.HEAPU16=Ya,a.HEAPU32=Za,a.HEAPF32=ga,a.HEAPF64=ha;var Ia=[],la=[],Oa=[],Sa=[],Ka=[],Y=!1;a.addOnPreRun=Ha,a.addOnInit=function(e){la.unshift(e)},a.addOnPreMain=function(e){Oa.unshift(e)},a.addOnExit=function(e){Sa.unshift(e)},a.addOnPostRun=Ja,a.intArrayFromString=ia,a.intArrayToString=function(e){for(var r=[],n=0;n<e.length;n++){var i=e[n];255<i&&(i&=255),r.push(String.fromCharCode(i))}return r.join("")},a.writeStringToMemory=ua,a.writeArrayToMemory=La,a.writeAsciiToMemory=Ma,Math.imul&&-5===Math.imul(4294967295,5)||(Math.imul=function(e,r){var n=65535&e,i=65535&r;return n*i+((e>>>16)*i+n*(r>>>16)<<16)|0}),Math.P=Math.imul,Math.clz32||(Math.clz32=function(e){e>>>=0;for(var r=0;32>r;r++)if(e&1<<31-r)return r;return 32}),Math.I=Math.clz32;var db=Math.abs,gb=Math.ceil,fb=Math.floor,eb=Math.min,R=0,Aa=null,ea=null;a.addRunDependency=function(){R++,a.monitorRunDependencies&&a.monitorRunDependencies(R)},a.removeRunDependency=function(){if(R--,a.monitorRunDependencies&&a.monitorRunDependencies(R),0==R&&(null!==Aa&&(clearInterval(Aa),Aa=null),ea)){var e=ea;ea=null,e()}},a.preloadedImages={},a.preloadedAudios={},$a=8,J=$a+36128,la.push(),K([34,174,40,215,152,47,138,66,205,101,239,35,145,68,55,113,47,59,77,236,207,251,192,181,188,219,137,129,165,219,181,233,56,181,72,243,91,194,86,57,25,208,5,182,241,17,241,89,155,79,25,175,164,130,63,146,24,129,109,218,213,94,28,171,66,2,3,163,152,170,7,216,190,111,112,69,1,91,131,18,140,178,228,78,190,133,49,36,226,180,255,213,195,125,12,85,111,137,123,242,116,93,190,114,177,150,22,59,254,177,222,128,53,18,199,37,167,6,220,155,148,38,105,207,116,241,155,193,210,74,241,158,193,105,155,228,227,37,79,56,134,71,190,239,181,213,140,139,198,157,193,15,101,156,172,119,204,161,12,36,117,2,43,89,111,44,233,45,131,228,166,110,170,132,116,74,212,251,65,189,220,169,176,92,181,83,17,131,218,136,249,118,171,223,102,238,82,81,62,152,16,50,180,45,109,198,49,168,63,33,251,152,200,39,3,176,228,14,239,190,199,127,89,191,194,143,168,61,243,11,224,198,37,167,10,147,71,145,167,213,111,130,3,224,81,99,202,6,112,110,14,10,103,41,41,20,252,47,210,70,133,10,183,39,38,201,38,92,56,33,27,46,237,42,196,90,252,109,44,77,223,179,149,157,19,13,56,83,222,99,175,139,84,115,10,101,168,178,119,60,187,10,106,118,230,174,237,71,46,201,194,129,59,53,130,20,133,44,114,146,100,3,241,76,161,232,191,162,1,48,66,188,75,102,26,168,145,151,248,208,112,139,75,194,48,190,84,6,163,81,108,199,24,82,239,214,25,232,146,209,16,169,101,85,36,6,153,214,42,32,113,87,133,53,14,244,184,209,187,50,112,160,106,16,200,208,210,184,22,193,164,25,83,171,65,81,8,108,55,30,153,235,142,223,76,119,72,39,168,72,155,225,181,188,176,52,99,90,201,197,179,12,28,57,203,138,65,227,74,170,216,78,115,227,99,119,79,202,156,91,163,184,178,214,243,111,46,104,252,178,239,93,238,130,143,116,96,47,23,67,111,99,165,120,114,171,240,161,20,120,200,132,236,57,100,26,8,2,199,140,40,30,99,35,250,255,190,144,233,189,130,222,235,108,80,164,21,121,198,178,247,163,249,190,43,83,114,227,242,120,113,198,156,97,38,234,206,62,39,202,7,194,192,33,199,184,134,209,30,235,224,205,214,125,218,234,120,209,110,238,127,79,125,245,186,111,23,114,170,103,240,6,166,152,200,162,197,125,99,10,174,13,249,190,4,152,63,17,27,71,28,19,53,11,113,27,132,125,4,35,245,119,219,40,147,36,199,64,123,171,202,50,188,190,201,21,10,190,158,60,76,13,16,156,196,103,29,67,182,66,62,203,190,212,197,76,42,126,101,252,156,41,127,89,236,250,214,58,171,111,203,95,23,88,71,74,140,25,68,108,68,129,0,0,8,0,0,0,77,129,0,0,11,0,0,0,164,2,0,0,89,129,0,0,8,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,89,241,178,254,10,229,166,255,123,221,42,254,30,20,212,0,82,128,3,0,48,209,243,0,119,121,64,255,50,227,156,255,0,110,197,1,103,27,144,0,133,59,140,1,189,241,36,255,248,37,195,1,96,220,55,0,183,76,62,255,195,66,61,0,50,76,164,1,225,164,76,255,76,61,163,255,117,62,31,0,81,145,64,255,118,65,14,0,162,115,214,255,6,138,46,0,124,230,244,255,10,138,143,0,52,26,194,0,184,244,76,0,129,143,41,1,190,244,19,255,123,170,122,255,98,129,68,0,121,213,147,0,86,101,30,255,161,103,155,0,140,89,67,255,239,229,190,1,67,11,181,0,198,240,137,254,238,69,188,255,67,151,238,0,19,42,108,255,229,85,113,1,50,68,135,255,17,106,9,0,50,103,1,255,80,1,168,1,35,152,30,255,16,168,185,1,56,89,232,255,101,210,252,0,41,250,71,0,204,170,79,255,14,46,239,255,80,77,239,0,189,214,75,255,17,141,249,0,38,80,76,255,190,85,117,0,86,228,170,0,156,216,208,1,195,207,164,255,150,66,76,255,175,225,16,255,141,80,98,1,76,219,242,0,198,162,114,0,46,218,152,0,155,43,241,254,155,160,104,255,51,187,165,0,2,17,175,0,66,84,160,1,247,58,30,0,35,65,53,254,69,236,191,0,45,134,245,1,163,123,221,0,32,110,20,255,52,23,165,0,186,214,71,0,233,176,96,0,242,239,54,1,57,89,138,0,83,0,84,255,136,160,100,0,92,142,120,254,104,124,190,0,181,177,62,255,250,41,85,0,152,130,42,1,96,252,246,0,151,151,63,254,239,133,62,0,32,56,156,0,45,167,189,255,142,133,179,1,131,86,211,0,187,179,150,254,250,170,14,255,210,163,78,0,37,52,151,0,99,77,26,0,238,156,213,255,213,192,209,1,73,46,84,0,20,65,41,1,54,206,79,0,201,131,146,254,170,111,24,255,177,33,50,254,171,38,203,255,78,247,116,0,209,221,153,0,133,128,178,1,58,44,25,0,201,39,59,1,189,19,252,0,49,229,210,1,117,187,117,0,181,179,184,1,0,114,219,0,48,94,147,0,245,41,56,0,125,13,204,254,244,173,119,0,44,221,32,254,84,234,20,0,249,160,198,1,236,126,234,255,47,99,168,254,170,226,153,255,102,179,216,0,226,141,122,255,122,66,153,254,182,245,134,0,227,228,25,1,214,57,235,255,216,173,56,255,181,231,210,0,119,128,157,255,129,95,136,255,110,126,51,0,2,169,183,255,7,130,98,254,69,176,94,255,116,4,227,1,217,242,145,255,202,173,31,1,105,1,39,255,46,175,69,0,228,47,58,255,215,224,69,254,207,56,69,255,16,254,139,255,23,207,212,255,202,20,126,255,95,213,96,255,9,176,33,0,200,5,207,255,241,42,128,254,35,33,192,255,248,229,196,1,129,17,120,0,251,103,151,255,7,52,112,255,140,56,66,255,40,226,245,255,217,70,37,254,172,214,9,255,72,67,134,1,146,192,214,255,44,38,112,0,68,184,75,255,206,90,251,0,149,235,141,0,181,170,58,0,116,244,239,0,92,157,2,0,102,173,98,0,233,137,96,1,127,49,203,0,5,155,148,0,23,148,9,255,211,122,12,0,34,134,26,255,219,204,136,0,134,8,41,255,224,83,43,254,85,25,247,0,109,127,0,254,169,136,48,0,238,119,219,255,231,173,213,0,206,18,254,254,8,186,7,255,126,9,7,1,111,42,72,0,111,52,236,254,96,63,141,0,147,191,127,254,205,78,192,255,14,106,237,1,187,219,76,0,175,243,187,254,105,89,173,0,85,25,89,1,162,243,148,0,2,118,209,254,33,158,9,0,139,163,46,255,93,70,40,0,108,42,142,254,111,252,142,255,155,223,144,0,51,229,167,255,73,252,155,255,94,116,12,255,152,160,218,255,156,238,37,255,179,234,207,255,197,0,179,255,154,164,141,0,225,196,104,0,10,35,25,254,209,212,242,255,97,253,222,254,184,101,229,0,222,18,127,1,164,136,135,255,30,207,140,254,146,97,243,0,129,192,26,254,201,84,33,255,111,10,78,255,147,81,178,255,4,4,24,0,161,238,215,255,6,141,33,0,53,215,14,255,41,181,208,255,231,139,157,0,179,203,221,255,255,185,113,0,189,226,172,255,113,66,214,255,202,62,45,255,102,64,8,255,78,174,16,254,133,117,68,255,182,120,89,255,133,114,211,0,189,110,21,255,15,10,106,0,41,192,1,0,152,232,121,255,188,60,160,255,153,113,206,255,0,183,226,254,180,13,72,255,176,160,14,254,211,201,134,255,158,24,143,0,127,105,53,0,96,12,189,0,167,215,251,255,159,76,128,254,106,101,225,255,30,252,4,0,146,12,174,0,133,59,140,1,189,241,36,255,248,37,195,1,96,220,55,0,183,76,62,255,195,66,61,0,50,76,164,1,225,164,76,255,76,61,163,255,117,62,31,0,81,145,64,255,118,65,14,0,162,115,214,255,6,138,46,0,124,230,244,255,10,138,143,0,52,26,194,0,184,244,76,0,129,143,41,1,190,244,19,255,123,170,122,255,98,129,68,0,121,213,147,0,86,101,30,255,161,103,155,0,140,89,67,255,239,229,190,1,67,11,181,0,198,240,137,254,238,69,188,255,234,113,60,255,37,255,57,255,69,178,182,254,128,208,179,0,118,26,125,254,3,7,214,255,241,50,77,255,85,203,197,255,211,135,250,255,25,48,100,255,187,213,180,254,17,88,105,0,83,209,158,1,5,115,98,0,4,174,60,254,171,55,110,255,217,181,17,255,20,188,170,0,146,156,102,254,87,214,174,255,114,122,155,1,233,44,170,0,127,8,239,1,214,236,234,0,175,5,219,0,49,106,61,255,6,66,208,255,2,106,110,255,81,234,19,255,215,107,192,255,67,151,238,0,19,42,108,255,229,85,113,1,50,68,135,255,17,106,9,0,50,103,1,255,80,1,168,1,35,152,30,255,16,168,185,1,56,89,232,255,101,210,252,0,41,250,71,0,204,170,79,255,14,46,239,255,80,77,239,0,189,214,75,255,17,141,249,0,38,80,76,255,190,85,117,0,86,228,170,0,156,216,208,1,195,207,164,255,150,66,76,255,175,225,16,255,141,80,98,1,76,219,242,0,198,162,114,0,46,218,152,0,155,43,241,254,155,160,104,255,178,9,252,254,100,110,212,0,14,5,167,0,233,239,163,255,28,151,157,1,101,146,10,255,254,158,70,254,71,249,228,0,88,30,50,0,68,58,160,255,191,24,104,1,129,66,129,255,192,50,85,255,8,179,138,255,38,250,201,0,115,80,160,0,131,230,113,0,125,88,147,0,90,68,199,0,253,76,158,0,28,255,118,0,113,250,254,0,66,75,46,0,230,218,43,0,229,120,186,1,148,68,43,0,136,124,238,1,187,107,197,255,84,53,246,255,51,116,254,255,51,187,165,0,2,17,175,0,66,84,160,1,247,58,30,0,35,65,53,254,69,236,191,0,45,134,245,1,163,123,221,0,32,110,20,255,52,23,165,0,186,214,71,0,233,176,96,0,242,239,54,1,57,89,138,0,83,0,84,255,136,160,100,0,92,142,120,254,104,124,190,0,181,177,62,255,250,41,85,0,152,130,42,1,96,252,246,0,151,151,63,254,239,133,62,0,32,56,156,0,45,167,189,255,142,133,179,1,131,86,211,0,187,179,150,254,250,170,14,255,68,113,21,255,222,186,59,255,66,7,241,1,69,6,72,0,86,156,108,254,55,167,89,0,109,52,219,254,13,176,23,255,196,44,106,255,239,149,71,255,164,140,125,255,159,173,1,0,51,41,231,0,145,62,33,0,138,111,93,1,185,83,69,0,144,115,46,0,97,151,16,255,24,228,26,0,49,217,226,0,113,75,234,254,193,153,12,255,182,48,96,255,14,13,26,0,128,195,249,254,69,193,59,0,132,37,81,254,125,106,60,0,214,240,169,1,164,227,66,0,210,163,78,0,37,52,151,0,99,77,26,0,238,156,213,255,213,192,209,1,73,46,84,0,20,65,41,1,54,206,79,0,201,131,146,254,170,111,24,255,177,33,50,254,171,38,203,255,78,247,116,0,209,221,153,0,133,128,178,1,58,44,25,0,201,39,59,1,189,19,252,0,49,229,210,1,117,187,117,0,181,179,184,1,0,114,219,0,48,94,147,0,245,41,56,0,125,13,204,254,244,173,119,0,44,221,32,254,84,234,20,0,249,160,198,1,236,126,234,255,143,62,221,0,129,89,214,255,55,139,5,254,68,20,191,255,14,204,178,1,35,195,217,0,47,51,206,1,38,246,165,0,206,27,6,254,158,87,36,0,217,52,146,255,125,123,215,255,85,60,31,255,171,13,7,0,218,245,88,254,252,35,60,0,55,214,160,255,133,101,56,0,224,32,19,254,147,64,234,0,26,145,162,1,114,118,125,0,248,252,250,0,101,94,196,255,198,141,226,254,51,42,182,0,135,12,9,254,109,172,210,255,197,236,194,1,241,65,154,0,48,156,47,255,153,67,55,255,218,165,34,254,74,180,179,0,218,66,71,1,88,122,99,0,212,181,219,255,92,42,231,255,239,0,154,0,245,77,183,255,94,81,170,1,18,213,216,0,171,93,71,0,52,94,248,0,18,151,161,254,197,209,66,255,174,244,15,254,162,48,183,0,49,61,240,254,182,93,195,0,199,228,6,1,200,5,17,255,137,45,237,255,108,148,4,0,90,79,237,255,39,63,77,255,53,82,207,1,142,22,118,255,101,232,18,1,92,26,67,0,5,200,88,255,33,168,138,255,149,225,72,0,2,209,27,255,44,245,168,1,220,237,17,255,30,211,105,254,141,238,221,0,128,80,245,254,111,254,14,0,222,95,190,1,223,9,241,0,146,76,212,255,108,205,104,255,63,117,153,0,144,69,48,0,35,228,111,0,192,33,193,255,112,214,190,254,115,152,151,0,23,102,88,0,51,74,248,0,226,199,143,254,204,162,101,255,208,97,189,1,245,104,18,0,230,246,30,255,23,148,69,0,110,88,52,254,226,181,89,255,208,47,90,254,114,161,80,255,33,116,248,0,179,152,87,255,69,144,177,1,88,238,26,255,58,32,113,1,1,77,69,0,59,121,52,255,152,238,83,0,52,8,193,0,231,39,233,255,199,34,138,0,222,68,173,0,91,57,242,254,220,210,127,255,192,7,246,254,151,35,187,0,195,236,165,0,111,93,206,0,212,247,133,1,154,133,209,255,155,231,10,0,64,78,38,0,122,249,100,1,30,19,97,255,62,91,249,1,248,133,77,0,197,63,168,254,116,10,82,0,184,236,113,254,212,203,194,255,61,100,252,254,36,5,202,255,119,91,153,255,129,79,29,0,103,103,171,254,237,215,111,255,216,53,69,0,239,240,23,0,194,149,221,255,38,225,222,0,232,255,180,254,118,82,133,255,57,209,177,1,139,232,133,0,158,176,46,254,194,115,46,0,88,247,229,1,28,103,191,0,221,222,175,254,149,235,44,0,151,228,25,254,218,105,103,0,142,85,210,0,149,129,190,255,213,65,94,254,117,134,224,255,82,198,117,0,157,221,220,0,163,101,36,0,197,114,37,0,104,172,166,254,11,182,0,0,81,72,188,255,97,188,16,255,69,6,10,0,199,147,145,255,8,9,115,1,65,214,175,255,217,173,209,0,80,127,166,0,247,229,4,254,167,183,124,255,90,28,204,254,175,59,240,255,11,41,248,1,108,40,51,255,144,177,195,254,150,250,126,0,138,91,65,1,120,60,222,255,245,193,239,0,29,214,189,255,128,2,25,0,80,154,162,0,77,220,107,1,234,205,74,255,54,166,103,255,116,72,9,0,228,94,47,255,30,200,25,255,35,214,89,255,61,176,140,255,83,226,163,255,75,130,172,0,128,38,17,0,95,137,152,255,215,124,159,1,79,93,0,0,148,82,157,254,195,130,251,255,40,202,76,255,251,126,224,0,157,99,62,254,207,7,225,255,96,68,195,0,140,186,157,255,131,19,231,255,42,128,254,0,52,219,61,254,102,203,72,0,141,7,11,255,186,164,213,0,31,122,119,0,133,242,145,0,208,252,232,255,91,213,182,255,143,4,250,254,249,215,74,0,165,30,111,1,171,9,223,0,229,123,34,1,92,130,26,255,77,155,45,1,195,139,28,255,59,224,78,0,136,17,247,0,108,121,32,0,79,250,189,255,96,227,252,254,38,241,62,0,62,174,125,255,155,111,93,255,10,230,206,1,97,197,40,255,0,49,57,254,65,250,13,0,18,251,150,255,220,109,210,255,5,174,166,254,44,129,189,0,235,35,147,255,37,247,141,255,72,141,4,255,103,107,255,0,247,90,4,0,53,44,42,0,2,30,240,0,4,59,63,0,88,78,36,0,113,167,180,0,190,71,193,255,199,158,164,255,58,8,172,0,77,33,12,0,65,63,3,0,153,77,33,255,172,254,102,1,228,221,4,255,87,30,254,1,146,41,86,255,138,204,239,254,108,141,17,255,187,242,135,0,210,208,127,0,68,45,14,254,73,96,62,0,81,60,24,255,170,6,36,255,3,249,26,0,35,213,109,0,22,129,54,255,21,35,225,255,234,61,56,255,58,217,6,0,143,124,88,0,236,126,66,0,209,38,183,255,34,238,6,255,174,145,102,0,95,22,211,0,196,15,153,254,46,84,232,255,117,34,146,1,231,250,74,255,27,134,100,1,92,187,195,255,170,198,112,0,120,28,42,0,209,70,67,0,29,81,31,0,29,168,100,1,169,173,160,0,107,35,117,0,62,96,59,255,81,12,69,1,135,239,190,255,220,252,18,0,163,220,58,255,137,137,188,255,83,102,109,0,96,6,76,0,234,222,210,255,185,174,205,1,60,158,213,255,13,241,214,0,172,129,140,0,93,104,242,0,192,156,251,0,43,117,30,0,225,81,158,0,127,232,218,0,226,28,203,0,233,27,151,255,117,43,5,255,242,14,47,255,33,20,6,0,137,251,44,254,27,31,245,255,183,214,125,254,40,121,149,0,186,158,213,255,89,8,227,0,69,88,0,254,203,135,225,0,201,174,203,0,147,71,184,0,18,121,41,254,94,5,78,0,224,214,240,254,36,5,180,0,251,135,231,1,163,138,212,0,210,249,116,254,88,129,187,0,19,8,49,254,62,14,144,255,159,76,211,0,214,51,82,0,109,117,228,254,103,223,203,255,75,252,15,1,154,71,220,255,23,13,91,1,141,168,96,255,181,182,133,0,250,51,55,0,234,234,212,254,175,63,158,0,39,240,52,1,158,189,36,255,213,40,85,1,32,180,247,255,19,102,26,1,84,24,97,255,69,21,222,0,148,139,122,255,220,213,235,1,232,203,255,0,121,57,147,0,227,7,154,0,53,22,147,1,72,1,225,0,82,134,48,254,83,60,157,255,145,72,169,0,34,103,239,0,198,233,47,0,116,19,4,255,184,106,9,255,183,129,83,0,36,176,230,1,34,103,72,0,219,162,134,0,245,42,158,0,32,149,96,254,165,44,144,0,202,239,72,254,215,150,5,0,42,66,36,1,132,215,175,0,86,174,86,255,26,197,156,255,49,232,135,254,103,182,82,0,253,128,176,1,153,178,122,0,245,250,10,0,236,24,178,0,137,106,132,0,40,29,41,0,50,30,152,255,124,105,38,0,230,191,75,0,143,43,170,0,44,131,20,255,44,13,23,255,237,255,155,1,159,109,100,255,112,181,24,255,104,220,108,0,55,211,131,0,99,12,213,255,152,151,145,255,238,5,159,0,97,155,8,0,33,108,81,0,1,3,103,0,62,109,34,255,250,155,180,0,32,71,195,255,38,70,145,1,159,95,245,0,69,229,101,1,136,28,240,0,79,224,25,0,78,110,121,255,248,168,124,0,187,128,247,0,2,147,235,254,79,11,132,0,70,58,12,1,181,8,163,255,79,137,133,255,37,170,11,255,141,243,85,255,176,231,215,255,204,150,164,255,239,215,39,255,46,87,156,254,8,163,88,255,172,34,232,0,66,44,102,255,27,54,41,254,236,99,87,255,41,123,169,1,52,114,43,0,117,134,40,0,155,134,26,0,231,207,91,254,35,132,38,255,19,102,125,254,36,227,133,255,118,3,113,255,29,13,124,0,152,96,74,1,88,146,206,255,167,191,220,254,162,18,88,255,182,100,23,0,31,117,52,0,81,46,106,1,12,2,7,0,69,80,201,1,209,246,172,0,12,48,141,1,224,211,88,0,116,226,159,0,122,98,130,0,65,236,234,1,225,226,9,255,207,226,123,1,89,214,59,0,112,135,88,1,90,244,203,255,49,11,38,1,129,108,186,0,89,112,15,1,101,46,204,255,127,204,45,254,79,255,221,255,51,73,18,255,127,42,101,255,241,21,202,0,160,227,7,0,105,50,236,0,79,52,197,255,104,202,208,1,180,15,16,0,101,197,78,255,98,77,203,0,41,185,241,1,35,193,124,0,35,155,23,255,207,53,192,0,11,125,163,1,249,158,185,255,4,131,48,0,21,93,111,255,61,121,231,1,69,200,36,255,185,48,185,255,111,238,21,255,39,50,25,255,99,215,163,255,87,212,30,255,164,147,5,255,128,6,35,1,108,223,110,255,194,76,178,0,74,101,180,0,243,47,48,0,174,25,43,255,82,173,253,1,54,114,192,255,40,55,91,0,215,108,176,255,11,56,7,0,224,233,76,0,209,98,202,254,242,25,125,0,44,193,93,254,203,8,177,0,135,176,19,0,112,71,213,255,206,59,176,1,4,67,26,0,14,143,213,254,42,55,208,255,60,67,120,0,193,21,163,0,99,164,115,0,10,20,118,0,156,212,222,254,160,7,217,255,114,245,76,1,117,59,123,0,176,194,86,254,213,15,176,0,78,206,207,254,213,129,59,0,233,251,22,1,96,55,152,255,236,255,15,255,197,89,84,255,93,149,133,0,174,160,113,0,234,99,169,255,152,116,88,0,144,164,83,255,95,29,198,255,34,47,15,255,99,120,134,255,5,236,193,0,249,247,126,255,147,187,30,0,50,230,117,255,108,217,219,255,163,81,166,255,72,25,169,254,155,121,79,255,28,155,89,254,7,126,17,0,147,65,33,1,47,234,253,0,26,51,18,0,105,83,199,255,163,196,230,0,113,248,164,0,226,254,218,0,189,209,203,255,164,247,222,254,255,35,165,0,4,188,243,1,127,179,71,0,37,237,254,255,100,186,240,0,5,57,71,254,103,72,73,255,244,18,81,254,229,210,132,255,238,6,180,255,11,229,174,255,227,221,192,1,17,49,28,0,163,215,196,254,9,118,4,255,51,240,71,0,113,129,109,255,76,240,231,0,188,177,127,0,125,71,44,1,26,175,243,0,94,169,25,254,27,230,29,0,15,139,119,1,168,170,186,255,172,197,76,255,252,75,188,0,137,124,196,0,72,22,96,255,45,151,249,1,220,145,100,0,64,192,159,255,120,239,226,0,129,178,146,0,0,192,125,0,235,138,234,0,183,157,146,0,83,199,192,255,184,172,72,255,73,225,128,0,77,6,250,255,186,65,67,0,104,246,207,0,188,32,138,255,218,24,242,0,67,138,81,254,237,129,121,255,20,207,150,1,41,199,16,255,6,20,128,0,159,118,5,0,181,16,143,255,220,38,15,0,23,64,147,254,73,26,13,0,87,228,57,1,204,124,128,0,43,24,223,0,219,99,199,0,22,75,20,255,19,27,126,0,157,62,215,0,110,29,230,0,179,167,255,1,54,252,190,0,221,204,182,254,179,158,65,255,81,157,3,0,194,218,159,0,170,223,0,0,224,11,32,255,38,197,98,0,168,164,37,0,23,88,7,1,164,186,110,0,96,36,134,0,234,242,229,0,250,121,19,0,242,254,112,255,3,47,94,1,9,239,6,255,81,134,153,254,214,253,168,255,67,124,224,0,245,95,74,0,28,30,44,254,1,109,220,255,178,89,89,0,252,36,76,0,24,198,46,255,76,77,111,0,134,234,136,255,39,94,29,0,185,72,234,255,70,68,135,255,231,102,7,254,77,231,140,0,167,47,58,1,148,97,118,255,16,27,225,1,166,206,143,255,110,178,214,255,180,131,162,0,143,141,225,1,13,218,78,255,114,153,33,1,98,104,204,0,175,114,117,1,167,206,75,0,202,196,83,1,58,64,67,0,138,47,111,1,196,247,128,255,137,224,224,254,158,112,207,0,154,100,255,1,134,37,107,0,198,128,79,255,127,209,155,255,163,254,185,254,60,14,243,0,31,219,112,254,29,217,65,0,200,13,116,254,123,60,196,255,224,59,184,254,242,89,196,0,123,16,75,254,149,16,206,0,69,254,48,1,231,116,223,255,209,160,65,1,200,80,98,0,37,194,184,254,148,63,34,0,139,240,65,255,217,144,132,255,56,38,45,254,199,120,210,0,108,177,166,255,160,222,4,0,220,126,119,254,165,107,160,255,82,220,248,1,241,175,136,0,144,141,23,255,169,138,84,0,160,137,78,255,226,118,80,255,52,27,132,255,63,96,139,255,152,250,39,0,188,155,15,0,232,51,150,254,40,15,232,255,240,229,9,255,137,175,27,255,75,73,97,1,218,212,11,0,135,5,162,1,107,185,213,0,2,249,107,255,40,242,70,0,219,200,25,0,25,157,13,0,67,82,80,255,196,249,23,255,145,20,149,0,50,72,146,0,94,76,148,1,24,251,65,0,31,192,23,0,184,212,201,255,123,233,162,1,247,173,72,0,162,87,219,254,126,134,89,0,159,11,12,254,166,105,29,0,73,27,228,1,113,120,183,255,66,163,109,1,212,143,11,255,159,231,168,1,255,128,90,0,57,14,58,254,89,52,10,255,253,8,163,1,0,145,210,255,10,129,85,1,46,181,27,0,103,136,160,254,126,188,209,255,34,35,111,0,215,219,24,255,212,11,214,254,101,5,118,0,232,197,133,255,223,167,109,255,237,80,86,255,70,139,94,0,158,193,191,1,155,15,51,255,15,190,115,0,78,135,207,255,249,10,27,1,181,125,233,0,95,172,13,254,170,213,161,255,39,236,138,255,95,93,87,255,190,128,95,0,125,15,206,0,166,150,159,0,227,15,158,255,206,158,120,255,42,141,128,0,101,178,120,1,156,109,131,0,218,14,44,254,247,168,206,255,212,112,28,0,112,17,228,255,90,16,37,1,197,222,108,0,254,207,83,255,9,90,243,255,243,244,172,0,26,88,115,255,205,116,122,0,191,230,193,0,180,100,11,1,217,37,96,255,154,78,156,0,235,234,31,255,206,178,178,255,149,192,251,0,182,250,135,0,246,22,105,0,124,193,109,255,2,210,149,255,169,17,170,0,0,96,110,255,117,9,8,1,50,123,40,255,193,189,99,0,34,227,160,0,48,80,70,254,211,51,236,0,45,122,245,254,44,174,8,0,173,37,233,255,158,65,171,0,122,69,215,255,90,80,2,255,131,106,96,254,227,114,135,0,205,49,119,254,176,62,64,255,82,51,17,255,241,20,243,255,130,13,8,254,128,217,243,255,162,27,1,254,90,118,241,0,246,198,246,255,55,16,118,255,200,159,157,0,163,17,1,0,140,107,121,0,85,161,118,255,38,0,149,0,156,47,238,0,9,166,166,1,75,98,181,255,50,74,25,0,66,15,47,0,139,225,159,0,76,3,142,255,14,238,184,0,11,207,53,255,183,192,186,1,171,32,174,255,191,76,221,1,247,170,219,0,25,172,50,254,217,9,233,0,203,126,68,255,183,92,48,0,127,167,183,1,65,49,254,0,16,63,127,1,254,21,170,255,59,224,127,254,22,48,63,255,27,78,130,254,40,195,29,0,250,132,112,254,35,203,144,0,104,169,168,0,207,253,30,255,104,40,38,254,94,228,88,0,206,16,128,255,212,55,122,255,223,22,234,0,223,197,127,0,253,181,181,1,145,102,118,0,236,153,36,255,212,217,72,255,20,38,24,254,138,62,62,0,152,140,4,0,230,220,99,255,1,21,212,255,148,201,231,0,244,123,9,254,0,171,210,0,51,58,37,255,1,255,14,255,244,183,145,254,0,242,166,0,22,74,132,0,121,216,41,0,95,195,114,254,133,24,151,255,156,226,231,255,247,5,77,255,246,148,115,254,225,92,81,255,222,80,246,254,170,123,89,255,74,199,141,0,29,20,8,255,138,136,70,255,93,75,92,0,221,147,49,254,52,126,226,0,229,124,23,0,46,9,181,0,205,64,52,1,131,254,28,0,151,158,212,0,131,64,78,0,206,25,171,0,0,230,139,0,191,253,110,254,103,247,167,0,64,40,40,1,42,165,241,255,59,75,228,254,124,243,189,255,196,92,178,255,130,140,86,255,141,89,56,1,147,198,5,255,203,248,158,254,144,162,141,0,11,172,226,0,130,42,21,255,1,167,143,255,144,36,36,255,48,88,164,254,168,170,220,0,98,71,214,0,91,208,79,0,159,76,201,1,166,42,214,255,69,255,0,255,6,128,125,255,190,1,140,0,146,83,218,255,215,238,72,1,122,127,53,0,189,116,165,255,84,8,66,255,214,3,208,255,213,110,133,0,195,168,44,1,158,231,69,0,162,64,200,254,91,58,104,0,182,58,187,254,249,228,136,0,203,134,76,254,99,221,233,0,75,254,214,254,80,69,154,0,64,152,248,254,236,136,202,255,157,105,153,254,149,175,20,0,22,35,19,255,124,121,233,0,186,250,198,254,132,229,139,0,137,80,174,255,165,125,68,0,144,202,148,254,235,239,248,0,135,184,118,0,101,94,17,255,122,72,70,254,69,130,146,0,127,222,248,1,69,127,118,255,30,82,215,254,188,74,19,255,229,167,194,254,117,25,66,255,65,234,56,254,213,22,156,0,151,59,93,254,45,28,27,255,186,126,164,255,32,6,239,0,127,114,99,1,219,52,2,255,99,96,166,254,62,190,126,255,108,222,168,1,75,226,174,0,230,226,199,0,60,117,218,255,252,248,20,1,214,188,204,0,31,194,134,254,123,69,192,255,169,173,36,254,55,98,91,0,223,42,102,254,137,1,102,0,157,90,25,0,239,122,64,255,252,6,233,0,7,54,20,255,82,116,174,0,135,37,54,255,15,186,125,0,227,112,175,255,100,180,225,255,42,237,244,255,244,173,226,254,248,18,33,0,171,99,150,255,74,235,50,255,117,82,32,254,106,168,237,0,207,109,208,1,228,9,186,0,135,60,169,254,179,92,143,0,244,170,104,255,235,45,124,255,70,99,186,0,117,137,183,0,224,31,215,0,40,9,100,0,26,16,95,1,68,217,87,0,8,151,20,255,26,100,58,255,176,165,203,1,52,118,70,0,7,32,254,254,244,254,245,255,167,144,194,255,125,113,23,255,176,121,181,0,136,84,209,0,138,6,30,255,89,48,28,0,33,155,14,255,25,240,154,0,141,205,109,1,70,115,62,255,20,40,107,254,138,154,199,255,94,223,226,255,157,171,38,0,163,177,25,254,45,118,3,255,14,222,23,1,209,190,81,255,118,123,232,1,13,213,101,255,123,55,123,254,27,246,165,0,50,99,76,255,140,214,32,255,97,65,67,255,24,12,28,0,174,86,78,1,64,247,96,0,160,135,67,0,66,55,243,255,147,204,96,255,26,6,33,255,98,51,83,1,153,213,208,255,2,184,54,255,25,218,11,0,49,67,246,254,18,149,72,255,13,25,72,0,42,79,214,0,42,4,38,1,27,139,144,255,149,187,23,0,18,164,132,0,245,84,184,254,120,198,104,255,126,218,96,0,56,117,234,255,13,29,214,254,68,47,10,255,167,154,132,254,152,38,198,0,66,178,89,255,200,46,171,255,13,99,83,255,210,187,253,255,170,45,42,1,138,209,124,0,214,162,141,0,12,230,156,0,102,36,112,254,3,147,67,0,52,215,123,255,233,171,54,255,98,137,62,0,247,218,39,255,231,218,236,0,247,191,127,0,195,146,84,0,165,176,92,255,19,212,94,255,17,74,227,0,88,40,153,1,198,147,1,255,206,67,245,254,240,3,218,255,61,141,213,255,97,183,106,0,195,232,235,254,95,86,154,0,209,48,205,254,118,209,241,255,240,120,223,1,213,29,159,0,163,127,147,255,13,218,93,0,85,24,68,254,70,20,80,255,189,5,140,1,82,97,254,255,99,99,191,255,132,84,133,255,107,218,116,255,112,122,46,0,105,17,32,0,194,160,63,255,68,222,39,1,216,253,92,0,177,105,205,255,149,201,195,0,42,225,11,255,40,162,115,0,9,7,81,0,165,218,219,0,180,22,0,254,29,146,252,255,146,207,225,1,180,135,96,0,31,163,112,0,177,11,219,255,133,12,193,254,43,78,50,0,65,113,121,1,59,217,6,255,110,94,24,1,112,172,111,0,7,15,96,0,36,85,123,0,71,150,21,255,208,73,188,0,192,11,167,1,213,245,34,0,9,230,92,0,162,142,39,255,215,90,27,0,98,97,89,0,94,79,211,0,90,157,240,0,95,220,126,1,102,176,226,0,36,30,224,254,35,31,127,0,231,232,115,1,85,83,130,0,210,73,245,255,47,143,114,255,68,65,197,0,59,72,62,255,183,133,173,254,93,121,118,255,59,177,81,255,234,69,173,255,205,128,177,0,220,244,51,0,26,244,209,1,73,222,77,255,163,8,96,254,150,149,211,0,158,254,203,1,54,127,139,0,161,224,59,0,4,109,22,255,222,42,45,255,208,146,102,255,236,142,187,0,50,205,245,255,10,74,89,254,48,79,142,0,222,76,130,255,30,166,63,0,236,12,13,255,49,184,244,0,187,113,102,0,218,101,253,0,153,57,182,254,32,150,42,0,25,198,146,1,237,241,56,0,140,68,5,0,91,164,172,255,78,145,186,254,67,52,205,0,219,207,129,1,109,115,17,0,54,143,58,1,21,248,120,255,179,255,30,0,193,236,66,255,1,255,7,255,253,192,48,255,19,69,217,1,3,214,0,255,64,101,146,1,223,125,35,255,235,73,179,255,249,167,226,0,225,175,10,1,97,162,58,0,106,112,171,1,84,172,5,255,133,140,178,255,134,245,142,0,97,90,125,255,186,203,185,255,223,77,23,255,192,92,106,0,15,198,115,255,217,152,248,0,171,178,120,255,228,134,53,0,176,54,193,1,250,251,53,0,213,10,100,1,34,199,106,0,151,31,244,254,172,224,87,255,14,237,23,255,253,85,26,255,127,39,116,255,172,104,100,0,251,14,70,255,212,208,138,255,253,211,250,0,176,49,165,0,15,76,123,255,37,218,160,255,92,135,16,1,10,126,114,255,70,5,224,255,247,249,141,0,68,20,60,1,241,210,189,255,195,217,187,1,151,3,113,0,151,92,174,0,231,62,178,255,219,183,225,0,23,23,33,255,205,181,80,0,57,184,248,255,67,180,1,255,90,123,93,255,39,0,162,255,96,248,52,255,84,66,140,0,34,127,228,255,194,138,7,1,166,110,188,0,21,17,155,1,154,190,198,255,214,80,59,255,18,7,143,0,72,29,226,1,199,217,249,0,232,161,71,1,149,190,201,0,217,175,95,254,113,147,67,255,138,143,199,255,127,204,1,0,29,182,83,1,206,230,155,255,186,204,60,0,10,125,85,255,232,96,25,255,255,89,247,255,213,254,175,1,232,193,81,0,28,43,156,254,12,69,8,0,147,24,248,0,18,198,49,0,134,60,35,0,118,246,18,255,49,88,254,254,228,21,186,255,182,65,112,1,219,22,1,255,22,126,52,255,189,53,49,255,112,25,143,0,38,127,55,255,226,101,163,254,208,133,61,255,137,69,174,1,190,118,145,255,60,98,219,255,217,13,245,255,250,136,10,0,84,254,226,0,201,31,125,1,240,51,251,255,31,131,130,255,2,138,50,255,215,215,177,1,223,12,238,255,252,149,56,255,124,91,68,255,72,126,170,254,119,255,100,0,130,135,232,255,14,79,178,0,250,131,197,0,138,198,208,0,121,216,139,254,119,18,36,255,29,193,122,0,16,42,45,255,213,240,235,1,230,190,169,255,198,35,228,254,110,173,72,0,214,221,241,255,56,148,135,0,192,117,78,254,141,93,207,255,143,65,149,0,21,18,98,255,95,44,244,1,106,191,77,0,254,85,8,254,214,110,176,255,73,173,19,254,160,196,199,255,237,90,144,0,193,172,113,255,200,155,136,254,228,90,221,0,137,49,74,1,164,221,215,255,209,189,5,255,105,236,55,255,42,31,129,1,193,255,236,0,46,217,60,0,138,88,187,255,226,82,236,255,81,69,151,255,142,190,16,1,13,134,8,0,127,122,48,255,81,64,156,0,171,243,139,0,237,35,246,0,122,143,193,254,212,122,146,0,95,41,255,1,87,132,77,0,4,212,31,0,17,31,78,0,39,45,173,254,24,142,217,255,95,9,6,255,227,83,6,0,98,59,130,254,62,30,33,0,8,115,211,1,162,97,128,255,7,184,23,254,116,28,168,255,248,138,151,255,98,244,240,0,186,118,130,0,114,248,235,255,105,173,200,1,160,124,71,255,94,36,164,1,175,65,146,255,238,241,170,254,202,198,197,0,228,71,138,254,45,246,109,255,194,52,158,0,133,187,176,0,83,252,154,254,89,189,221,255,170,73,252,0,148,58,125,0,36,68,51,254,42,69,177,255,168,76,86,255,38,100,204,255,38,53,35,0,175,19,97,0,225,238,253,255,81,81,135,0,210,27,255,254,235,73,107,0,8,207,115,0,82,127,136,0,84,99,21,254,207,19,136,0,100,164,101,0,80,208,77,255,132,207,237,255,15,3,15,255,33,166,110,0,156,95,85,255,37,185,111,1,150,106,35,255,166,151,76,0,114,87,135,255,159,194,64,0,12,122,31,255,232,7,101,254,173,119,98,0,154,71,220,254,191,57,53,255,168,232,160,255,224,32,99,255,218,156,165,0,151,153,163,0,217,13,148,1,197,113,89,0,149,28,161,254,207,23,30,0,105,132,227,255,54,230,94,255,133,173,204,255,92,183,157,255,88,144,252,254,102,33,90,0,159,97,3,0,181,218,155,255,240,114,119,0,106,214,53,255,165,190,115,1,152,91,225,255,88,106,44,255,208,61,113,0,151,52,124,0,191,27,156,255,110,54,236,1,14,30,166,255,39,127,207,1,229,199,28,0,188,228,188,254,100,157,235,0,246,218,183,1,107,22,193,255,206,160,95,0,76,239,147,0,207,161,117,0,51,166,2,255,52,117,10,254,73,56,227,255,152,193,225,0,132,94,136,255,101,191,209,0,32,107,229,255,198,43,180,1,100,210,118,0,114,67,153,255,23,88,26,255,89,154,92,1,220,120,140,255,144,114,207,255,252,115,250,255,34,206,72,0,138,133,127,255,8,178,124,1,87,75,97,0,15,229,92,254,240,67,131,255,118,123,227,254,146,120,104,255,145,213,255,1,129,187,70,255,219,119,54,0,1,19,173,0,45,150,148,1,248,83,72,0,203,233,169,1,142,107,56,0,247,249,38,1,45,242,80,255,30,233,103,0,96,82,70,0,23,201,111,0,81,39,30,255,161,183,78,255,194,234,33,255,68,227,140,254,216,206,116,0,70,27,235,255,104,144,79,0,164,230,93,254,214,135,156,0,154,187,242,254,188,20,131,255,36,109,174,0,159,112,241,0,5,110,149,1,36,165,218,0,166,29,19,1,178,46,73,0,93,43,32,254,248,189,237,0,102,155,141,0,201,93,195,255,241,139,253,255,15,111,98,255,108,65,163,254,155,79,190,255,73,174,193,254,246,40,48,255,107,88,11,254,202,97,85,255,253,204,18,255,113,242,66,0,110,160,194,254,208,18,186,0,81,21,60,0,188,104,167,255,124,166,97,254,210,133,142,0,56,242,137,254,41,111,130,0,111,151,58,1,111,213,141,255,183,172,241,255,38,6,196,255,185,7,123,255,46,11,246,0,245,105,119,1,15,2,161,255,8,206,45,255,18,202,74,255,83,124,115,1,212,141,157,0,83,8,209,254,139,15,232,255,172,54,173,254,50,247,132,0,214,189,213,0,144,184,105,0,223,254,248,0,255,147,240,255,23,188,72,0,7,51,54,0,188,25,180,254,220,180,0,255,83,160,20,0,163,189,243,255,58,209,194,255,87,73,60,0,106,24,49,0,245,249,220,0,22,173,167,0,118,11,195,255,19,126,237,0,110,159,37,255,59,82,47,0,180,187,86,0,188,148,208,1,100,37,133,255,7,112,193,0,129,188,156,255,84,106,129,255,133,225,202,0,14,236,111,255,40,20,101,0,172,172,49,254,51,54,74,255,251,185,184,255,93,155,224,255,180,249,224,1,230,178,146,0,72,57,54,254,178,62,184,0,119,205,72,0,185,239,253,255,61,15,218,0,196,67,56,255,234,32,171,1,46,219,228,0,208,108,234,255,20,63,232,255,165,53,199,1,133,228,5,255,52,205,107,0,74,238,140,255,150,156,219,254,239,172,178,255,251,189,223,254,32,142,211,255,218,15,138,1,241,196,80,0,28,36,98,254,22,234,199,0,61,237,220,255,246,57,37,0,142,17,142,255,157,62,26,0,43,238,95,254,3,217,6,255,213,25,240,1,39,220,174,255,154,205,48,254,19,13,192,255,244,34,54,254,140,16,155,0,240,181,5,254,155,193,60,0,166,128,4,255,36,145,56,255,150,240,219,0,120,51,145,0,82,153,42,1,140,236,146,0,107,92,248,1,189,10,3,0,63,136,242,0,211,39,24,0,19,202,161,1,173,27,186,255,210,204,239,254,41,209,162,255,182,254,159,255,172,116,52,0,195,103,222,254,205,69,59,0,53,22,41,1,218,48,194,0,80,210,242,0,210,188,207,0,187,161,161,254,216,17,1,0,136,225,113,0,250,184,63,0,223,30,98,254,77,168,162,0,59,53,175,0,19,201,10,255,139,224,194,0,147,193,154,255,212,189,12,254,1,200,174,255,50,133,113,1,94,179,90,0,173,182,135,0,94,177,113,0,43,89,215,255,136,252,106,255,123,134,83,254,5,245,66,255,82,49,39,1,220,2,224,0,97,129,177,0,77,59,89,0,61,29,155,1,203,171,220,255,92,78,139,0,145,33,181,255,169,24,141,1,55,150,179,0,139,60,80,255,218,39,97,0,2,147,107,255,60,248,72,0,173,230,47,1,6,83,182,255,16,105,162,254,137,212,81,255,180,184,134,1,39,222,164,255,221,105,251,1,239,112,125,0,63,7,97,0,63,104,227,255,148,58,12,0,90,60,224,255,84,212,252,0,79,215,168,0,248,221,199,1,115,121,1,0,36,172,120,0,32,162,187,255,57,107,49,255,147,42,21,0,106,198,43,1,57,74,87,0,126,203,81,255,129,135,195,0,140,31,177,0,221,139,194,0,3,222,215,0,131,68,231,0,177,86,178,254,124,151,180,0,184,124,38,1,70,163,17,0,249,251,181,1,42,55,227,0,226,161,44,0,23,236,110,0,51,149,142,1,93,5,236,0,218,183,106,254,67,24,77,0,40,245,209,255,222,121,153,0,165,57,30,0,83,125,60,0,70,38,82,1,229,6,188,0,109,222,157,255,55,118,63,255,205,151,186,0,227,33,149,255,254,176,246,1,227,177,227,0,34,106,163,254,176,43,79,0,106,95,78,1,185,241,122,255,185,14,61,0,36,1,202,0,13,178,162,255,247,11,132,0,161,230,92,1,65,1,185,255,212,50,165,1,141,146,64,255,158,242,218,0,21,164,125,0,213,139,122,1,67,71,87,0,203,158,178,1,151,92,43,0,152,111,5,255,39,3,239,255,217,255,250,255,176,63,71,255,74,245,77,1,250,174,18,255,34,49,227,255,246,46,251,255,154,35,48,1,125,157,61,255,106,36,78,255,97,236,153,0,136,187,120,255,113,134,171,255,19,213,217,254,216,94,209,255,252,5,61,0,94,3,202,0,3,26,183,255,64,191,43,255,30,23,21,0,129,141,77,255,102,120,7,1,194,76,140,0,188,175,52,255,17,81,148,0,232,86,55,1,225,48,172,0,134,42,42,255,238,50,47,0,169,18,254,0,20,147,87,255,14,195,239,255,69,247,23,0,238,229,128,255,177,49,112,0,168,98,251,255,121,71,248,0,243,8,145,254,246,227,153,255,219,169,177,254,251,139,165,255,12,163,185,255,164,40,171,255,153,159,27,254,243,109,91,255,222,24,112,1,18,214,231,0,107,157,181,254,195,147,0,255,194,99,104,255,89,140,190,255,177,66,126,254,106,185,66,0,49,218,31,0,252,174,158,0,188,79,230,1,238,41,224,0,212,234,8,1,136,11,181,0,166,117,83,255,68,195,94,0,46,132,201,0,240,152,88,0,164,57,69,254,160,224,42,255,59,215,67,255,119,195,141,255,36,180,121,254,207,47,8,255,174,210,223,0,101,197,68,255,255,82,141,1,250,137,233,0,97,86,133,1,16,80,69,0,132,131,159,0,116,93,100,0,45,141,139,0,152,172,157,255,90,43,91,0,71,153,46,0,39,16,112,255,217,136,97,255,220,198,25,254,177,53,49,0,222,88,134,255,128,15,60,0,207,192,169,255,192,116,209,255,106,78,211,1,200,213,183,255,7,12,122,254,222,203,60,255,33,110,199,254,251,106,117,0,228,225,4,1,120,58,7,255,221,193,84,254,112,133,27,0,189,200,201,255,139,135,150,0,234,55,176,255,61,50,65,0,152,108,169,255,220,85,1,255,112,135,227,0,162,26,186,0,207,96,185,254,244,136,107,0,93,153,50,1,198,97,151,0,110,11,86,255,143,117,174,255,115,212,200,0,5,202,183,0,237,164,10,254,185,239,62,0,236,120,18,254,98,123,99,255,168,201,194,254,46,234,214,0,191,133,49,255,99,169,119,0,190,187,35,1,115,21,45,255,249,131,72,0,112,6,123,255,214,49,181,254,166,233,34,0,92,197,102,254,253,228,205,255,3,59,201,1,42,98,46,0,219,37,35,255,169,195,38,0,94,124,193,1,156,43,223,0,95,72,133,254,120,206,191,0,122,197,239,255,177,187,79,255,254,46,2,1,250,167,190,0,84,129,19,0,203,113,166,255,249,31,189,254,72,157,202,255,208,71,73,255,207,24,72,0,10,16,18,1,210,81,76,255,88,208,192,255,126,243,107,255,238,141,120,255,199,121,234,255,137,12,59,255,36,220,123,255,148,179,60,254,240,12,29,0,66,0,97,1,36,30,38,255,115,1,93,255,96,103,231,255,197,158,59,1,192,164,240,0,202,202,57,255,24,174,48],"i8",4,e.h),K([89,77,155,1,42,76,215,0,244,151,233,0,23,48,81,0,239,127,52,254,227,130,37,255,248,116,93,1,124,132,118,0,173,254,192,1,6,235,83,255,110,175,231,1,251,28,182,0,129,249,93,254,84,184,128,0,76,181,62,0,175,128,186,0,100,53,136,254,109,29,226,0,221,233,58,1,20,99,74,0,0,22,160,0,134,13,21,0,9,52,55,255,17,89,140,0,175,34,59,0,84,165,119,255,224,226,234,255,7,72,166,255,123,115,255,1,18,214,246,0,250,7,71,1,217,220,185,0,212,35,76,255,38,125,175,0,189,97,210,0,114,238,44,255,41,188,169,254,45,186,154,0,81,92,22,0,132,160,193,0,121,208,98,255,13,81,44,255,203,156,82,0,71,58,21,255,208,114,191,254,50,38,147,0,154,216,195,0,101,25,18,0,60,250,215,255,233,132,235,255,103,175,142,1,16,14,92,0,141,31,110,254,238,241,45,255,153,217,239,1,97,168,47,255,249,85,16,1,28,175,62,255,57,254,54,0,222,231,126,0,166,45,117,254,18,189,96,255,228,76,50,0,200,244,94,0,198,152,120,1,68,34,69,255,12,65,160,254,101,19,90,0,167,197,120,255,68,54,185,255,41,218,188,0,113,168,48,0,88,105,189,1,26,82,32,255,185,93,164,1,228,240,237,255,66,182,53,0,171,197,92,255,107,9,233,1,199,120,144,255,78,49,10,255,109,170,105,255,90,4,31,255,28,244,113,255,74,58,11,0,62,220,246,255,121,154,200,254,144,210,178,255,126,57,129,1,43,250,14,255,101,111,28,1,47,86,241,255,61,70,150,255,53,73,5,255,30,26,158,0,209,26,86,0,138,237,74,0,164,95,188,0,142,60,29,254,162,116,248,255,187,175,160,0,151,18,16,0,209,111,65,254,203,134,39,255,88,108,49,255,131,26,71,255,221,27,215,254,104,105,93,255,31,236,31,254,135,0,211,255,143,127,110,1,212,73,229,0,233,67,167,254,195,1,208,255,132,17,221,255,51,217,90,0,67,235,50,255,223,210,143,0,179,53,130,1,233,106,198,0,217,173,220,255,112,229,24,255,175,154,93,254,71,203,246,255,48,66,133,255,3,136,230,255,23,221,113,254,235,111,213,0,170,120,95,254,251,221,2,0,45,130,158,254,105,94,217,255,242,52,180,254,213,68,45,255,104,38,28,0,244,158,76,0,161,200,96,255,207,53,13,255,187,67,148,0,170,54,248,0,119,162,178,255,83,20,11,0,42,42,192,1,146,159,163,255,183,232,111,0,77,229,21,255,71,53,143,0,27,76,34,0,246,136,47,255,219,39,182,255,92,224,201,1,19,142,14,255,69,182,241,255,163,118,245,0,9,109,106,1,170,181,247,255,78,47,238,255,84,210,176,255,213,107,139,0,39,38,11,0,72,21,150,0,72,130,69,0,205,77,155,254,142,133,21,0,71,111,172,254,226,42,59,255,179,0,215,1,33,128,241,0,234,252,13,1,184,79,8,0,110,30,73,255,246,141,189,0,170,207,218,1,74,154,69,255,138,246,49,255,155,32,100,0,125,74,105,255,90,85,61,255,35,229,177,255,62,125,193,255,153,86,188,1,73,120,212,0,209,123,246,254,135,209,38,255,151,58,44,1,92,69,214,255,14,12,88,255,252,153,166,255,253,207,112,255,60,78,83,255,227,124,110,0,180,96,252,255,53,117,33,254,164,220,82,255,41,1,27,255,38,164,166,255,164,99,169,254,61,144,70,255,192,166,18,0,107,250,66,0,197,65,50,0,1,179,18,255,255,104,1,255,43,153,35,255,80,111,168,0,110,175,168,0,41,105,45,255,219,14,205,255,164,233,140,254,43,1,118,0,233,67,195,0,178,82,159,255,138,87,122,255,212,238,90,255,144,35,124,254,25,140,164,0,251,215,44,254,133,70,107,255,101,227,80,254,92,169,55,0,215,42,49,0,114,180,85,255,33,232,27,1,172,213,25,0,62,176,123,254,32,133,24,255,225,191,62,0,93,70,153,0,181,42,104,1,22,191,224,255,200,200,140,255,249,234,37,0,149,57,141,0,195,56,208,255,254,130,70,255,32,173,240,255,29,220,199,0,110,100,115,255,132,229,249,0,228,233,223,255,37,216,209,254,178,177,209,255,183,45,165,254,224,97,114,0,137,97,168,255,225,222,172,0,165,13,49,1,210,235,204,255,252,4,28,254,70,160,151,0,232,190,52,254,83,248,93,255,62,215,77,1,175,175,179,255,160,50,66,0,121,48,208,0,63,169,209,255,0,210,200,0,224,187,44,1,73,162,82,0,9,176,143,255,19,76,193,255,29,59,167,1,24,43,154,0,28,190,190,0,141,188,129,0,232,235,203,255,234,0,109,255,54,65,159,0,60,88,232,255,121,253,150,254,252,233,131,255,198,110,41,1,83,77,71,255,200,22,59,254,106,253,242,255,21,12,207,255,237,66,189,0,90,198,202,1,225,172,127,0,53,22,202,0,56,230,132,0,1,86,183,0,109,190,42,0,243,68,174,1,109,228,154,0,200,177,122,1,35,160,183,255,177,48,85,255,90,218,169,255,248,152,78,0,202,254,110,0,6,52,43,0,142,98,65,255,63,145,22,0,70,106,93,0,232,138,107,1,110,179,61,255,211,129,218,1,242,209,92,0,35,90,217,1,182,143,106,255,116,101,217,255,114,250,221,255,173,204,6,0,60,150,163,0,73,172,44,255,239,110,80,255,237,76,153,254,161,140,249,0,149,232,229,0,133,31,40,255,174,164,119,0,113,51,214,0,129,228,2,254,64,34,243,0,107,227,244,255,174,106,200,255,84,153,70,1,50,35,16,0,250,74,216,254,236,189,66,255,153,249,13,0,230,178,4,255,221,41,238,0,118,227,121,255,94,87,140,254,254,119,92,0,73,239,246,254,117,87,128,0,19,211,145,255,177,46,252,0,229,91,246,1,69,128,247,255,202,77,54,1,8,11,9,255,153,96,166,0,217,214,173,255,134,192,2,1,0,207,0,0,189,174,107,1,140,134,100,0,158,193,243,1,182,102,171,0,235,154,51,0,142,5,123,255,60,168,89,1,217,14,92,255,19,214,5,1,211,167,254,0,44,6,202,254,120,18,236,255,15,113,184,255,184,223,139,0,40,177,119,254,182,123,90,255,176,165,176,0,247,77,194,0,27,234,120,0,231,0,214,255,59,39,30,0,125,99,145,255,150,68,68,1,141,222,248,0,153,123,210,255,110,127,152,255,229,33,214,1,135,221,197,0,137,97,2,0,12,143,204,255,81,41,188,0,115,79,130,255,94,3,132,0,152,175,187,255,124,141,10,255,126,192,179,255,11,103,198,0,149,6,45,0,219,85,187,1,230,18,178,255,72,182,152,0,3,198,184,255,128,112,224,1,97,161,230,0,254,99,38,255,58,159,197,0,151,66,219,0,59,69,143,255,185,112,249,0,119,136,47,255,123,130,132,0,168,71,95,255,113,176,40,1,232,185,173,0,207,93,117,1,68,157,108,255,102,5,147,254,49,97,33,0,89,65,111,254,247,30,163,255,124,217,221,1,102,250,216,0,198,174,75,254,57,55,18,0,227,5,236,1,229,213,173,0,201,109,218,1,49,233,239,0,30,55,158,1,25,178,106,0,155,111,188,1,94,126,140,0,215,31,238,1,77,240,16,0,213,242,25,1,38,71,168,0,205,186,93,254,49,211,140,255,219,0,180,255,134,118,165,0,160,147,134,255,110,186,35,255,198,243,42,0,243,146,119,0,134,235,163,1,4,241,135,255,193,46,193,254,103,180,79,255,225,4,184,254,242,118,130,0,146,135,176,1,234,111,30,0,69,66,213,254,41,96,123,0,121,94,42,255,178,191,195,255,46,130,42,0,117,84,8,255,233,49,214,254,238,122,109,0,6,71,89,1,236,211,123,0,244,13,48,254,119,148,14,0,114,28,86,255,75,237,25,255,145,229,16,254,129,100,53,255,134,150,120,254,168,157,50,0,23,72,104,255,224,49,14,0,255,123,22,255,151,185,151,255,170,80,184,1,134,182,20,0,41,100,101,1,153,33,16,0,76,154,111,1,86,206,234,255,192,160,164,254,165,123,93,255,1,216,164,254,67,17,175,255,169,11,59,255,158,41,61,255,73,188,14,255,195,6,137,255,22,147,29,255,20,103,3,255,246,130,227,255,122,40,128,0,226,47,24,254,35,36,32,0,152,186,183,255,69,202,20,0,195,133,195,0,222,51,247,0,169,171,94,1,183,0,160,255,64,205,18,1,156,83,15,255,197,58,249,254,251,89,110,255,50,10,88,254,51,43,216,0,98,242,198,1,245,151,113,0,171,236,194,1,197,31,199,255,229,81,38,1,41,59,20,0,253,104,230,0,152,93,14,255,246,242,146,254,214,169,240,255,240,102,108,254,160,167,236,0,154,218,188,0,150,233,202,255,27,19,250,1,2,71,133,255,175,12,63,1,145,183,198,0,104,120,115,255,130,251,247,0,17,212,167,255,62,123,132,255,247,100,189,0,155,223,152,0,143,197,33,0,155,59,44,255,150,93,240,1,127,3,87,255,95,71,207,1,167,85,1,255,188,152,116,255,10,23,23,0,137,195,93,1,54,98,97,0,240,0,168,255,148,188,127,0,134,107,151,0,76,253,171,0,90,132,192,0,146,22,54,0,224,66,54,254,230,186,229,255,39,182,196,0,148,251,130,255,65,131,108,254,128,1,160,0,169,49,167,254,199,254,148,255,251,6,131,0,187,254,129,255,85,82,62,0,178,23,58,255,254,132,5,0,164,213,39,0,134,252,146,254,37,53,81,255,155,134,82,0,205,167,238,255,94,45,180,255,132,40,161,0,254,111,112,1,54,75,217,0,179,230,221,1,235,94,191,255,23,243,48,1,202,145,203,255,39,118,42,255,117,141,253,0,254,0,222,0,43,251,50,0,54,169,234,1,80,68,208,0,148,203,243,254,145,7,135,0,6,254,0,0,252,185,127,0,98,8,129,255,38,35,72,255,211,36,220,1,40,26,89,0,168,64,197,254,3,222,239,255,2,83,215,254,180,159,105,0,58,115,194,0,186,116,106,255,229,247,219,255,129,118,193,0,202,174,183,1,166,161,72,0,201,107,147,254,237,136,74,0,233,230,106,1,105,111,168,0,64,224,30,1,1,229,3,0,102,151,175,255,194,238,228,255,254,250,212,0,187,237,121,0,67,251,96,1,197,30,11,0,183,95,204,0,205,89,138,0,64,221,37,1,255,223,30,255,178,48,211,255,241,200,90,255,167,209,96,255,57,130,221,0,46,114,200,255,61,184,66,0,55,182,24,254,110,182,33,0,171,190,232,255,114,94,31,0,18,221,8,0,47,231,254,0,255,112,83,0,118,15,215,255,173,25,40,254,192,193,31,255,238,21,146,255,171,193,118,255,101,234,53,254,131,212,112,0,89,192,107,1,8,208,27,0,181,217,15,255,231,149,232,0,140,236,126,0,144,9,199,255,12,79,181,254,147,182,202,255,19,109,182,255,49,212,225,0,74,163,203,0,175,233,148,0,26,112,51,0,193,193,9,255,15,135,249,0,150,227,130,0,204,0,219,1,24,242,205,0,238,208,117,255,22,244,112,0,26,229,34,0,37,80,188,255,38,45,206,254,240,90,225,255,29,3,47,255,42,224,76,0,186,243,167,0,32,132,15,255,5,51,125,0,139,135,24,0,6,241,219,0,172,229,133,255,246,214,50,0,231,11,207,255,191,126,83,1,180,163,170,255,245,56,24,1,178,164,211,255,3,16,202,1,98,57,118,255,141,131,89,254,33,51,24,0,243,149,91,255,253,52,14,0,35,169,67,254,49,30,88,255,179,27,36,255,165,140,183,0,58,189,151,0,88,31,0,0,75,169,66,0,66,101,199,255,24,216,199,1,121,196,26,255,14,79,203,254,240,226,81,255,94,28,10,255,83,193,240,255,204,193,131,255,94,15,86,0,218,40,157,0,51,193,209,0,0,242,177,0,102,185,247,0,158,109,116,0,38,135,91,0,223,175,149,0,220,66,1,255,86,60,232,0,25,96,37,255,225,122,162,1,215,187,168,255,158,157,46,0,56,171,162,0,232,240,101,1,122,22,9,0,51,9,21,255,53,25,238,255,217,30,232,254,125,169,148,0,13,232,102,0,148,9,37,0,165,97,141,1,228,131,41,0,222,15,243,255,254,18,17,0,6,60,237,1,106,3,113,0,59,132,189,0,92,112,30,0,105,208,213,0,48,84,179,255,187,121,231,254,27,216,109,255,162,221,107,254,73,239,195,255,250,31,57,255,149,135,89,255,185,23,115,1,3,163,157,255,18,112,250,0,25,57,187,255,161,96,164,0,47,16,243,0,12,141,251,254,67,234,184,255,41,18,161,0,175,6,96,255,160,172,52,254,24,176,183,255,198,193,85,1,124,121,137,255,151,50,114,255,220,203,60,255,207,239,5,1,0,38,107,255,55,238,94,254,70,152,94,0,213,220,77,1,120,17,69,255,85,164,190,255,203,234,81,0,38,49,37,254,61,144,124,0,137,78,49,254,168,247,48,0,95,164,252,0,105,169,135,0,253,228,134,0,64,166,75,0,81,73,20,255,207,210,10,0,234,106,150,255,94,34,90,255,254,159,57,254,220,133,99,0,139,147,180,254,24,23,185,0,41,57,30,255,189,97,76,0,65,187,223,255,224,172,37,255,34,62,95,1,231,144,240,0,77,106,126,254,64,152,91,0,29,98,155,0,226,251,53,255,234,211,5,255,144,203,222,255,164,176,221,254,5,231,24,0,179,122,205,0,36,1,134,255,125,70,151,254,97,228,252,0,172,129,23,254,48,90,209,255,150,224,82,1,84,134,30,0,241,196,46,0,103,113,234,255,46,101,121,254,40,124,250,255,135,45,242,254,9,249,168,255,140,108,131,255,143,163,171,0,50,173,199,255,88,222,142,255,200,95,158,0,142,192,163,255,7,117,135,0,111,124,22,0,236,12,65,254,68,38,65,255,227,174,254,0,244,245,38,0,240,50,208,255,161,63,250,0,60,209,239,0,122,35,19,0,14,33,230,254,2,159,113,0,106,20,127,255,228,205,96,0,137,210,174,254,180,212,144,255,89,98,154,1,34,88,139,0,167,162,112,1,65,110,197,0,241,37,169,0,66,56,131,255,10,201,83,254,133,253,187,255,177,112,45,254,196,251,0,0,196,250,151,255,238,232,214,255,150,209,205,0,28,240,118,0,71,76,83,1,236,99,91,0,42,250,131,1,96,18,64,255,118,222,35,0,113,214,203,255,122,119,184,255,66,19,36,0,204,64,249,0,146,89,139,0,134,62,135,1,104,233,101,0,188,84,26,0,49,249,129,0,208,214,75,255,207,130,77,255,115,175,235,0,171,2,137,255,175,145,186,1,55,245,135,255,154,86,181,1,100,58,246,255,109,199,60,255,82,204,134,255,215,49,230,1,140,229,192,255,222,193,251,255,81,136,15,255,179,149,162,255,23,39,29,255,7,95,75,254,191,81,222,0,241,81,90,255,107,49,201,255,244,211,157,0,222,140,149,255,65,219,56,254,189,246,90,255,178,59,157,1,48,219,52,0,98,34,215,0,28,17,187,255,175,169,24,0,92,79,161,255,236,200,194,1,147,143,234,0,229,225,7,1,197,168,14,0,235,51,53,1,253,120,174,0,197,6,168,255,202,117,171,0,163,21,206,0,114,85,90,255,15,41,10,255,194,19,99,0,65,55,216,254,162,146,116,0,50,206,212,255,64,146,29,255,158,158,131,1,100,165,130,255,172,23,129,255,125,53,9,255,15,193,18,1,26,49,11,255,181,174,201,1,135,201,14,255,100,19,149,0,219,98,79,0,42,99,143,254,96,0,48,255,197,249,83,254,104,149,79,255,235,110,136,254,82,128,44,255,65,41,36,254,88,211,10,0,187,121,187,0,98,134,199,0,171,188,179,254,210,11,238,255,66,123,130,254,52,234,61,0,48,113,23,254,6,86,120,255,119,178,245,0,87,129,201,0,242,141,209,0,202,114,85,0,148,22,161,0,103,195,48,0,25,49,171,255,138,67,130,0,182,73,122,254,148,24,130,0,211,229,154,0,32,155,158,0,84,105,61,0,177,194,9,255,166,89,86,1,54,83,187,0,249,40,117,255,109,3,215,255,53,146,44,1,63,47,179,0,194,216,3,254,14,84,136,0,136,177,13,255,72,243,186,255,117,17,125,255,211,58,211,255,93,79,223,0,90,88,245,255,139,209,111,255,70,222,47,0,10,246,79,255,198,217,178,0,227,225,11,1,78,126,179,255,62,43,126,0,103,148,35,0,129,8,165,254,245,240,148,0,61,51,142,0,81,208,134,0,15,137,115,255,211,119,236,255,159,245,248,255,2,134,136,255,230,139,58,1,160,164,254,0,114,85,141,255,49,166,182,255,144,70,84,1,85,182,7,0,46,53,93,0,9,166,161,255,55,162,178,255,45,184,188,0,146,28,44,254,169,90,49,0,120,178,241,1,14,123,127,255,7,241,199,1,189,66,50,255,198,143,101,254,189,243,135,255,141,24,24,254,75,97,87,0,118,251,154,1,237,54,156,0,171,146,207,255,131,196,246,255,136,64,113,1,151,232,57,0,240,218,115,0,49,61,27,255,64,129,73,1,252,169,27,255,40,132,10,1,90,201,193,255,252,121,240,1,186,206,41,0,43,198,97,0,145,100,183,0,204,216,80,254,172,150,65,0,249,229,196,254,104,123,73,255,77,104,96,254,130,180,8,0,104,123,57,0,220,202,229,255,102,249,211,0,86,14,232,255,182,78,209,0,239,225,164,0,106,13,32,255,120,73,17,255,134,67,233,0,83,254,181,0,183,236,112,1,48,64,131,255,241,216,243,255,65,193,226,0,206,241,100,254,100,134,166,255,237,202,197,0,55,13,81,0,32,124,102,255,40,228,177,0,118,181,31,1,231,160,134,255,119,187,202,0,0,142,60,255,128,38,189,255,166,201,150,0,207,120,26,1,54,184,172,0,12,242,204,254,133,66,230,0,34,38,31,1,184,112,80,0,32,51,165,254,191,243,55,0,58,73,146,254,155,167,205,255,100,104,152,255,197,254,207,255,173,19,247,0,238,10,202,0,239,151,242,0,94,59,39,255,240,29,102,255,10,92,154,255,229,84,219,255,161,129,80,0,208,90,204,1,240,219,174,255,158,102,145,1,53,178,76,255,52,108,168,1,83,222,107,0,211,36,109,0,118,58,56,0,8,29,22,0,237,160,199,0,170,209,157,0,137,71,47,0,143,86,32,0,198,242,2,0,212,48,136,1,92,172,186,0,230,151,105,1,96,191,229,0,138,80,191,254,240,216,130,255,98,43,6,254,168,196,49,0,253,18,91,1,144,73,121,0,61,146,39,1,63,104,24,255,184,165,112,254,126,235,98,0,80,213,98,255,123,60,87,255,82,140,245,1,223,120,173,255,15,198,134,1,206,60,239,0,231,234,92,255,33,238,19,255,165,113,142,1,176,119,38,0,160,43,166,254,239,91,105,0,107,61,194,1,25,4,68,0,15,139,51,0,164,132,106,255,34,116,46,254,168,95,197,0,137,212,23,0,72,156,58,0,137,112,69,254,150,105,154,255,236,201,157,0,23,212,154,255,136,82,227,254,226,59,221,255,95,149,192,0,81,118,52,255,33,43,215,1,14,147,75,255,89,156,121,254,14,18,79,0,147,208,139,1,151,218,62,255,156,88,8,1,210,184,98,255,20,175,123,255,102,83,229,0,220,65,116,1,150,250,4,255,92,142,220,255,34,247,66,255,204,225,179,254,151,81,151,0,71,40,236,255,138,63,62,0,6,79,240,255,183,185,181,0,118,50,27,0,63,227,192,0,123,99,58,1,50,224,155,255,17,225,223,254,220,224,77,255,14,44,123,1,141,128,175,0,248,212,200,0,150,59,183,255,147,97,29,0,150,204,181,0,253,37,71,0,145,85,119,0,154,200,186,0,2,128,249,255,83,24,124,0,14,87,143,0,168,51,245,1,124,151,231,255,208,240,197,1,124,190,185,0,48,58,246,0,20,233,232,0,125,18,98,255,13,254,31,255,245,177,130,255,108,142,35,0,171,125,242,254,140,12,34,255,165,161,162,0,206,205,101,0,247,25,34,1,100,145,57,0,39,70,57,0,118,204,203,255,242,0,162,0,165,244,30,0,198,116,226,0,128,111,153,255,140,54,182,1,60,122,15,255,155,58,57,1,54,50,198,0,171,211,29,255,107,138,167,255,173,107,199,255,109,161,193,0,89,72,242,255,206,115,89,255,250,254,142,254,177,202,94,255,81,89,50,0,7,105,66,255,25,254,255,254,203,64,23,255,79,222,108,255,39,249,75,0,241,124,50,0,239,152,133,0,221,241,105,0,147,151,98,0,213,161,121,254,242,49,137,0,233,37,249,254,42,183,27,0,184,119,230,255,217,32,163,255,208,251,228,1,137,62,131,255,79,64,9,254,94,48,113,0,17,138,50,254,193,255,22,0,247,18,197,1,67,55,104,0,16,205,95,255,48,37,66,0,55,156,63,1,64,82,74,255,200,53,71,254,239,67,125,0,26,224,222,0,223,137,93,255,30,224,202,255,9,220,132,0,198,38,235,1,102,141,86,0,60,43,81,1,136,28,26,0,233,36,8,254,207,242,148,0,164,162,63,0,51,46,224,255,114,48,79,255,9,175,226,0,222,3,193,255,47,160,232,255,255,93,105,254,14,42,230,0,26,138,82,1,208,43,244,0,27,39,38,255,98,208,127,255,64,149,182,255,5,250,209,0,187,60,28,254,49,25,218,255,169,116,205,255,119,18,120,0,156,116,147,255,132,53,109,255,13,10,202,0,110,83,167,0,157,219,137,255,6,3,130,255,50,167,30,255,60,159,47,255,129,128,157,254,94,3,189,0,3,166,68,0,83,223,215,0,150,90,194,1,15,168,65,0,227,83,51,255,205,171,66,255,54,187,60,1,152,102,45,255,119,154,225,0,240,247,136,0,100,197,178,255,139,71,223,255,204,82,16,1,41,206,42,255,156,192,221,255,216,123,244,255,218,218,185,255,187,186,239,255,252,172,160,255,195,52,22,0,144,174,181,254,187,100,115,255,211,78,176,255,27,7,193,0,147,213,104,255,90,201,10,255,80,123,66,1,22,33,186,0,1,7,99,254,30,206,10,0,229,234,5,0,53,30,210,0,138,8,220,254,71,55,167,0,72,225,86,1,118,190,188,0,254,193,101,1,171,249,172,255,94,158,183,254,93,2,108,255,176,93,76,255,73,99,79,255,74,64,129,254,246,46,65,0,99,241,127,254,246,151,102,255,44,53,208,254,59,102,234,0,154,175,164,255,88,242,32,0,111,38,1,0,255,182,190,255,115,176,15,254,169,60,129,0,122,237,241,0,90,76,63,0,62,74,120,255,122,195,110,0,119,4,178,0,222,242,210,0,130,33,46,254,156,40,41,0,167,146,112,1,49,163,111,255,121,176,235,0,76,207,14,255,3,25,198,1,41,235,213,0,85,36,214,1,49,92,109,255,200,24,30,254,168,236,195,0,145,39,124,1,236,195,149,0,90,36,184,255,67,85,170,255,38,35,26,254,131,124,68,255,239,155,35,255,54,201,164,0,196,22,117,255,49,15,205,0,24,224,29,1,126,113,144,0,117,21,182,0,203,159,141,0,223,135,77,0,176,230,176,255,190,229,215,255,99,37,181,255,51,21,138,255,25,189,89,255,49,48,165,254,152,45,247,0,170,108,222,0,80,202,5,0,27,69,103,254,204,22,129,255,180,252,62,254,210,1,91,255,146,110,254,255,219,162,28,0,223,252,213,1,59,8,33,0,206,16,244,0,129,211,48,0,107,160,208,0,112,59,209,0,109,77,216,254,34,21,185,255,246,99,56,255,179,139,19,255,185,29,50,255,84,89,19,0,74,250,98,255,225,42,200,255,192,217,205,255,210,16,167,0,99,132,95,1,43,230,57,0,254,11,203,255,99,188,63,255,119,193,251,254,80,105,54,0,232,181,189,1,183,69,112,255,208,171,165,255,47,109,180,255,123,83,165,0,146,162,52,255,154,11,4,255,151,227,90,255,146,137,97,254,61,233,41,255,94,42,55,255,108,164,236,0,152,68,254,0,10,140,131,255,10,106,79,254,243,158,137,0,67,178,66,254,177,123,198,255,15,62,34,0,197,88,42,255,149,95,177,255,152,0,198,255,149,254,113,255,225,90,163,255,125,217,247,0,18,17,224,0,128,66,120,254,192,25,9,255,50,221,205,0,49,212,70,0,233,255,164,0,2,209,9,0,221,52,219,254,172,224,244,255,94,56,206,1,242,179,2,255,31,91,164,1,230,46,138,255,189,230,220,0,57,47,61,255,111,11,157,0,177,91,152,0,28,230,98,0,97,87,126,0,198,89,145,255,167,79,107,0,249,77,160,1,29,233,230,255,150,21,86,254,60,11,193,0,151,37,36,254,185,150,243,255,228,212,83,1,172,151,180,0,201,169,155,0,244,60,234,0,142,235,4,1,67,218,60,0,192,113,75,1,116,243,207,255,65,172,155,0,81,30,156,255,80,72,33,254,18,231,109,255,142,107,21,254,125,26,132,255,176,16,59,255,150,201,58,0,206,169,201,0,208,121,226,0,40,172,14,255,150,61,94,255,56,57,156,255,141,60,145,255,45,108,149,255,238,145,155,255,209,85,31,254,192,12,210,0,99,98,93,254,152,16,151,0,225,185,220,0,141,235,44,255,160,172,21,254,71,26,31,255,13,64,93,254,28,56,198,0,177,62,248,1,182,8,241,0,166,101,148,255,78,81,133,255,129,222,215,1,188,169,129,255,232,7,97,0,49,112,60,255,217,229,251,0,119,108,138,0,39,19,123,254,131,49,235,0,132,84,145,0,130,230,148,255,25,74,187,0,5,245,54,255,185,219,241,1,18,194,228,255,241,202,102,0,105,113,202,0,155,235,79,0,21,9,178,255,156,1,239,0,200,148,61,0,115,247,210,255,49,221,135,0,58,189,8,1,35,46,9,0,81,65,5,255,52,158,185,255,125,116,46,255,74,140,13,255,210,92,172,254,147,23,71,0,217,224,253,254,115,108,180,255,145,58,48,254,219,177,24,255,156,255,60,1,154,147,242,0,253,134,87,0,53,75,229,0,48,195,222,255,31,175,50,255,156,210,120,255,208,35,222,255,18,248,179,1,2,10,101,255,157,194,248,255,158,204,101,255,104,254,197,255,79,62,4,0,178,172,101,1,96,146,251,255,65,10,156,0,2,137,165,255,116,4,231,0,242,215,1,0,19,35,29,255,43,161,79,0,59,149,246,1,251,66,176,0,200,33,3,255,80,110,142,255,195,161,17,1,228,56,66,255,123,47,145,254,132,4,164,0,67,174,172,0,25,253,114,0,87,97,87,1,250,220,84,0,96,91,200,255,37,125,59,0,19,65,118,0,161,52,241,255,237,172,6,255,176,191,255,255,1,65,130,254,223,190,230,0,101,253,231,255,146,35,109,0,250,29,77,1,49,0,19,0,123,90,155,1,22,86,32,255,218,213,65,0,111,93,127,0,60,93,169,255,8,127,182,0,17,186,14,254,253,137,246,255,213,25,48,254,76,238,0,255,248,92,70,255,99,224,139,0,184,9,255,1,7,164,208,0,205,131,198,1,87,214,199,0,130,214,95,0,221,149,222,0,23,38,171,254,197,110,213,0,43,115,140,254,215,177,118,0,96,52,66,1,117,158,237,0,14,64,182,255,46,63,174,255,158,95,190,255,225,205,177,255,43,5,142,255,172,99,212,255,244,187,147,0,29,51,153,255,228,116,24,254,30,101,207,0,19,246,150,255,134,231,5,0,125,134,226,1,77,65,98,0,236,130,33,255,5,110,62,0,69,108,127,255,7,113,22,0,145,20,83,254,194,161,231,255,131,181,60,0,217,209,177,255,229,148,212,254,3,131,184,0,117,177,187,1,28,14,31,255,176,102,80,0,50,84,151,255,125,31,54,255,21,157,133,255,19,179,139,1,224,232,26,0,34,117,170,255,167,252,171,255,73,141,206,254,129,250,35,0,72,79,236,1,220,229,20,255,41,202,173,255,99,76,238,255,198,22,224,255,108,198,195,255,36,141,96,1,236,158,59,255,106,100,87,0,110,226,2,0,227,234,222,0,154,93,119,255,74,112,164,255,67,91,2,255,21,145,33,255,102,214,137,255,175,230,103,254,163,246,166,0,93,247,116,254,167,224,28,255,220,2,57,1,171,206,84,0,123,228,17,255,27,120,119,0,119,11,147,1,180,47,225,255,104,200,185,254,165,2,114,0,77,78,212,0,45,154,177,255,24,196,121,254,82,157,182,0,90,16,190,1,12,147,197,0,95,239,152,255,11,235,71,0,86,146,119,255,172,134,214,0,60,131,196,0,161,225,129,0,31,130,120,254,95,200,51,0,105,231,210,255,58,9,148,255,43,168,221,255,124,237,142,0,198,211,50,254,46,245,103,0,164,248,84,0,152,70,208,255,180,117,177,0,70,79,185,0,243,74,32,0,149,156,207,0,197,196,161,1,245,53,239,0,15,93,246,254,139,240,49,255,196,88,36,255,162,38,123,0,128,200,157,1,174,76,103,255,173,169,34,254,216,1,171,255,114,51,17,0,136,228,194,0,110,150,56,254,106,246,159,0,19,184,79,255,150,77,240,255,155,80,162,0,0,53,169,255,29,151,86,0,68,94,16,0,92,7,110,254,98,117,149,255,249,77,230,255,253,10,140,0,214,124,92,254,35,118,235,0,89,48,57,1,22,53,166,0,184,144,61,255,179,255,194,0,214,248,61,254,59,110,246,0,121,21,81,254,166,3,228,0,106,64,26,255,69,232,134,255,242,220,53,254,46,220,85,0,113,149,247,255,97,179,103,255,190,127,11,0,135,209,182,0,95,52,129,1,170,144,206,255,122,200,204,255,168,100,146,0,60,144,149,254,70,60,40,0,122,52,177,255,246,211,101,255,174,237,8,0,7,51,120,0,19,31,173,0,126,239,156,255,143,189,203,0,196,128,88,255,233,133,226,255,30,125,173,255,201,108,50,0,123,100,59,255,254,163,3,1,221,148,181,255,214,136,57,254,222,180,137,255,207,88,54,255,28,33,251,255,67,214,52,1,210,208,100,0,81,170,94,0,145,40,53,0,224,111,231,254,35,28,244,255,226,199,195,254,238,17,230,0,217,217,164,254,169,157,221,0,218,46,162,1,199,207,163,255,108,115,162,1,14,96,187,255,118,60,76,0,184,159,152,0,209,231,71,254,42,164,186,255,186,153,51,254,221,171,182,255,162,142,173,0,235,47,193,0,7,139,16,1,95,164,64,255,16,221,166,0,219,197,16,0,132,29,44,255,100,69,117,255,60,235,88,254,40,81,173,0,71,190,61,255,187,88,157,0,231,11,23,0,237,117,164,0,225,168,223,255,154,114,116,255,163,152,242,1,24,32,170,0,125,98,113,254,168,19,76,0,17,157,220,254,155,52,5,0,19,111,161,255,71,90,252,255,173,110,240,0,10,198,121,255,253,255,240,255,66,123,210,0,221,194,215,254,121,163,17,255,225,7,99,0,190,49,182,0,115,9,133,1,232,26,138,255,213,68,132,0,44,119,122,255,179,98,51,0,149,90,106,0,71,50,230,255,10,153,118,255,177,70,25,0,165,87,205,0,55,138,234,0,238,30,97,0,113,155,207,0,98,153,127,0,34,107,219,254,117,114,172,255,76,180,255,254,242,57,179,255,221,34,172,254,56,162,49,255,83,3,255,255,113,221,189,255,188,25,228,254,16,88,89,255,71,28,198,254,22,17,149,255,243,121,254,255,107,202,99,255,9,206,14,1,220,47,153,0,107,137,39,1,97,49,194,255,149,51,197,254,186,58,11,255,107,43,232,1,200,6,14,255,181,133,65,254,221,228,171,255,123,62,231,1,227,234,179,255,34,189,212,254,244,187,249,0,190,13,80,1,130,89,1,0,223,133,173,0,9,222,198,255,66,127,74,0,167,216,93,255,155,168,198,1,66,145,0,0,68,102,46,1,172,90,154,0,216,128,75,255,160,40,51,0,158,17,27,1,124,240,49,0,236,202,176,255,151,124,192,255,38,193,190,0,95,182,61,0,163,147,124,255,255,165,51,255,28,40,17,254,215,96,78,0,86,145,218,254,31,36,202,255,86,9,5,0,111,41,200,255,237,108,97,0,57,62,44,0,117,184,15,1,45,241,116,0,152,1,220,255,157,165,188,0,250,15,131,1,60,44,125,255,65,220,251,255,75,50,184,0,53,90,128,255,231,80,194,255,136,129,127,1,21,18,187,255,45,58,161,255,71,147,34,0,174,249,11,254,35,141,29,0,239,68,177,255,115,110,58,0,238,190,177,1,87,245,166,255,190,49,247,255,146,83,184,255,173,14,39,255,146,215,104,0,142,223,120,0,149,200,155,255,212,207,145,1,16,181,217,0,173,32,87,255,255,35,181,0,119,223,161,1,200,223,94,255,70,6,186,255,192,67,85,255,50,169,152,0,144,26,123,255,56,243,179,254,20,68,136,0,39,140,188,254,253,208,5,255,200,115,135,1,43,172,229,255,156,104,187,0,151,251,167,0,52,135,23,0,151,153,72,0,147,197,107,254,148,158,5,255,238,143,206,0,126,153,137,255,88,152,197,254,7,68,167,0,252,159,165,255,239,78,54,255,24,63,55,255,38,222,94,0,237,183,12,255,206,204,210,0,19,39,246,254,30,74,231,0,135,108,29,1,179,115,0,0,117,118,116,1,132,6,252,255,145,129,161,1,105,67,141,0,82,37,226,255,238,226,228,255,204,214,129,254,162,123,100,255,185,121,234,0,45,108,231,0,66,8,56,255,132,136,128,0,172,224,66,254,175,157,188,0,230,223,226,254,242,219,69,0,184,14,119,1,82,162,56,0,114,123,20,0,162,103,85,255,49,239,99,254,156,135,215,0,111,255,167,254,39,196,214,0,144,38,79,1,249,168,125,0,155,97,156,255,23,52,219,255,150,22,144,0,44,149,165,255,40,127,183,0,196,77,233,255,118,129,210,255,170,135,230,255,214,119,198,0,233,240,35,0,253,52,7,255,117,102,48,255,21,204,154,255,179,136,177,255,23,2,3,1,149,130,89,255,252,17,159,1,70,60,26,0,144,107,17,0,180,190,60,255,56,182,59,255,110,71,54,255,198,18,129,255,149,224,87,255,223,21,152,255,138,22,182,255,250,156,205,0,236,45,208,255,79,148,242,1,101,70,209,0,103,78,174,0,101,144,172,255,152,136,237,1,191,194,136,0,113,80,125,1,152,4,141,0,155,150,53,255,196,116,245,0,239,114,73,254,19,82,17,255,124,125,234,255,40,52,191,0,42,210,158,255,155,132,165,0,178,5,42,1,64,92,40,255,36,85,77,255,178,228,118,0,137,66,96,254,115,226,66,0,110,240,69,254,151,111,80,0,167,174,236,255,227,108,107,255,188,242,65,255,183,81,255,0,57,206,181,255,47,34,181,255,213,240,158,1,71,75,95,0,156,40,24,255,102,210,81,0,171,199,228,255,154,34,41,0,227,175,75,0,21,239,195,0,138,229,95,1,76,192,49,0,117,123,87,1,227,225,130,0,125,62,63,255,2,198,171,0,254,36,13,254,145,186,206,0,148,255,244,255,35,0,166,0,30,150,219,1,92,228,212,0,92,198,60,254,62,133,200,255,201,41,59,0,125,238,109,255,180,163,238,1,140,122,82,0,9,22,88,255,197,157,47,255,153,94,57,0,88,30,182,0,84,161,85,0,178,146,124,0,166,166,7,255,21,208,223,0,156,182,242,0,155,121,185,0,83,156,174,254,154,16,118,255,186,83,232,1,223,58,121,255,29,23,88,0,35,125,127,255,170,5,149,254,164,12,130,255,155,196,29,0,161,96,136,0,7,35,29,1,162,37,251,0,3,46,242,255,0,217,188,0,57,174,226,1,206,233,2,0,57,187,136,254,123,189,9,255,201,117,127,255,186,36,204,0,231,25,216,0,80,78,105,0,19,134,129,255,148,203,68,0,141,81,125,254,248,165,200,255,214,144,135,0,151,55,166,255,38,235,91,0,21,46,154,0,223,254,150,255,35,153,180,255,125,176,29,1,43,98,30,255,216,122,230,255,233,160,12,0,57,185,12,254,240,113,7,255,5,9,16,254,26,91,108,0,109,198,203,0,8,147,40,0,129,134,228,255,124,186,40,255,114,98,132,254,166,132,23,0,99,69,44,0,9,242,238,255,184,53,59,0,132,129,102,255,52,32,243,254,147,223,200,255,123,83,179,254,135,144,201,255,141,37,56,1,151,60,227,255,90,73,156,1,203,172,187,0,80,151,47,255,94,137,231,255,36,191,59,255,225,209,181,255,74,215,213,254,6,118,179,255,153,54,193,1,50,0,231,0,104,157,72,1,140,227,154,255,182,226,16,254,96,225,92,255,115,20,170,254,6,250,78,0,248,75,173,255,53,89,6,255,0,180,118,0,72,173,1,0,64,8,206,1,174,133,223,0,185,62,133,255,214,11,98,0,197,31,208,0,171,167,244,255,22,231,181,1,150,218,185,0,247,169,97,1,165,139,247,255,47,120,149,1,103,248,51,0,60,69,28,254,25,179,196,0,124,7,218,254,58,107,81,0,184,233,156,255,252,74,36,0,118,188,67,0,141,95,53,255,222,94,165,254,46,61,53,0,206,59,115,255,47,236,250,255,74,5,32,1,129,154,238,255,106,32,226,0,121,187,61,255,3,166,241,254,67,170,172,255,29,216,178,255,23,201,252,0,253,110,243,0,200,125,57,0,109,192,96,255,52,115,238,0,38,121,243,255,201,56,33,0,194,118,130,0,75,96,25,255,170,30,230,254,39,63,253,0,36,45,250,255,251,1,239,0,160,212,92,1,45,209,237,0,243,33,87,254,237,84,201,255,212,18,157,254,212,99,127,255,217,98,16,254,139,172,239,0,168,201,130,255,143,193,169,255,238,151,193,1,215,104,41,0,239,61,165,254,2,3,242,0,22,203,177,254,177,204,22,0,149,129,213,254,31,11,41,255,0,159,121,254,160,25,114,255,162,80,200,0,157,151,11,0,154,134,78,1,216,54,252,0,48,103,133,0,105,220,197,0,253,168,77,254,53,179,23,0,24,121,240,1,255,46,96,255,107,60,135,254,98,205,249,255,63,249,119,255,120,59,211,255,114,180,55,254,91,85,237,0,149,212,77,1,56,73,49,0,86,198,150,0,93,209,160,0,69,205,182,255,244,90,43,0,20,36,176,0,122,116,221,0,51,167,39,1,231,1,63,255,13,197,134,0,3,209,34,255,135,59,202,0,167,100,78,0,47,223,76,0,185,60,62,0,178,166,123,1,132,12,161,255,61,174,43,0,195,69,144,0,127,47,191,1,34,44,78,0,57,234,52,1,255,22,40,255,246,94,146,0,83,228,128,0,60,78,224,255,0,96,210,255,153,175,236,0,159,21,73,0,180,115,196,254,131,225,106,0,255,167,134,0,159,8,112,255,120,68,194,255,176,196,198,255,118,48,168,255,93,169,1,0,112,200,102,1,74,24,254,0,19,141,4,254,142,62,63,0,131,179,187,255,77,156,155,255,119,86,164,0,170,208,146,255,208,133,154,255,148,155,58,255,162,120,232,254,252,213,155,0,241,13,42,0,94,50,131,0,179,170,112,0,140,83,151,255,55,119,84,1,140,35,239,255,153,45,67,1,236,175,39,0,54,151,103,255,158,42,65,255,196,239,135,254,86,53,203,0,149,97,47,254,216,35,17,255,70,3,70,1,103,36,90,255,40,26,173,0,184,48,13,0,163,219,217,255,81,6,1,255,221,170,108,254,233,208,93,0,100,201,249,254,86,36,35,255,209,154,30,1,227,201,251,255,2,189,167,254,100,57,3,0,13,128,41,0,197,100,75,0,150,204,235,255,145,174,59,0,120,248,149,255,85,55,225,0,114,210,53,254,199,204,119,0,14,247,74,1,63,251,129,0,67,104,151,1,135,130,80,0,79,89,55,255,117,230,157,255,25,96,143,0,213,145,5,0,69,241,120,1,149,243,95,255,114,42,20,0,131,72,2,0,154,53,20,255,73,62,109,0,196,102,152,0,41,12,204,255,122,38,11,1,250,10,145,0,207,125,148,0,246,244,222,255,41,32,85,1,112,213,126,0,162,249,86,1,71,198,127,255,81,9,21,1,98,39,4,255,204,71,45,1,75,111,137,0,234,59,231,0,32,48,95,255,204,31,114,1,29,196,181,255,51,241,167,254,93,109,142,0,104,144,45,0,235,12,181,255,52,112,164,0,76,254,202,255,174,14,162,0,61,235,147,255,43,64,185,254,233,125,217,0,243,88,167,254,74,49,8,0,156,204,66,0,124,214,123,0,38,221,118,1,146,112,236,0,114,98,177,0,151,89,199,0,87,197,112,0,185,149,161,0,44,96,165,0,248,179,20,255,188,219,216,254,40,62,13,0,243,142,141,0,229,227,206,255,172,202,35,255,117,176,225,255,82,110,38,1,42,245,14,255,20,83,97,0,49,171,10,0,242,119,120,0,25,232,61,0,212,240,147,255,4,115,56,255,145,17,239,254,202,17,251,255,249,18,245,255,99,117,239,0,184,4,179,255,246,237,51,255,37,239,137,255,166,112,166,255,81,188,33,255,185,250,142,255,54,187,173,0,208,112,201,0,246,43,228,1,104,184,88,255,212,52,196,255,51,117,108,255,254,117,155,0,46,91,15,255,87,14,144,255,87,227,204,0,83,26,83,1,159,76,227,0,159,27,213,1,24,151,108,0,117,144,179,254,137,209,82,0,38,159,10,0,115,133,201,0,223,182,156,1,110,196,93,255,57,60,233,0,5,167,105,255,154,197,164,0,96,34,186,255,147,133,37,1,220,99,190,0,1,167,84,255,20,145,171,0,194,197,251,254,95,78,133,255,252,248,243,255,225,93,131,255,187,134,196,255,216,153,170,0,20,118,158,254,140,1,118,0,86,158,15,1,45,211,41,255,147,1,100,254,113,116,76,255,211,127,108,1,103,15,48,0,193,16,102,1,69,51,95,255,107,128,157,0,137,171,233,0,90,124,144,1,106,161,182,0,175,76,236,1,200,141,172,255,163,58,104,0,233,180,52,255,240,253,14,255,162,113,254,255,38,239,138,254,52,46,166,0,241,101,33,254,131,186,156,0,111,208,62,255,124,94,160,255,31,172,254,0,112,174,56,255,188,99,27,255,67,138,251,0,125,58,128,1,156,152,174,255,178,12,247,255,252,84,158,0,82,197,14,254,172,200,83,255,37,39,46,1,106,207,167,0,24,189,34,0,131,178,144,0,206,213,4,0,161,226,210,0,72,51,105,255,97,45,187,255,78,184,223,255,176,29,251,0,79,160,86,255,116,37,178,0,82,77,213,1,82,84,141,255,226,101,212,1,175,88,199,255,245,94,247,1,172,118,109,255,166,185,190,0,131,181,120,0,87,254,93,255,134,240,73,255,32,245,143,255,139,162,103,255,179,98,18,254,217,204,112,0,147,223,120,255,53,10,243,0,166,140,150,0,125,80,200,255,14,109,219,255,91,218,1,255,252,252,47,254,109,156,116,255,115,49,127,1,204,87,211,255,148,202,217,255,26,85,249,255,14,245,134,1,76,89,169,255,242,45,230,0,59,98,172,255,114,73,132,254,78,155,49,255,158,126,84,0,49,175,43,255,16,182,84,255,157,103,35,0,104,193,109,255,67,221,154,0,201,172,1,254,8,162,88,0,165,1,29,255,125,155,229,255,30,154,220,1,103,239,92,0,220,1,109,255,202,198,1,0,94,2,142,1,36,54,44,0,235,226,158,255,170,251,214,255,185,77,9,0,97,74,242,0,219,163,149,255,240,35,118,255,223,114,88,254,192,199,3,0,106,37,24,255,201,161,118,255,97,89,99,1,224,58,103,255,101,199,147,254,222,60,99,0,234,25,59,1,52,135,27,0,102,3,91,254,168,216,235,0,229,232,136,0,104,60,129,0,46,168,238,0,39,191,67,0,75,163,47,0,143,97,98,255,56,216,168,1,168,233,252,255,35,111,22,255,92,84,43,0,26,200,87,1,91,253,152,0,202,56,70,0,142,8,77,0,80,10,175,1,252,199,76,0,22,110,82,255,129,1,194,0,11,128,61,1,87,14,145,255,253,222,190,1,15,72,174,0,85,163,86,254,58,99,44,255,45,24,188,254,26,205,15,0,19,229,210,254,248,67,195,0,99,71,184,0,154,199,37,255,151,243,121,255,38,51,75,255,201,85,130,254,44,65,250,0,57,147,243,254,146,43,59,255,89,28,53,0,33,84,24,255,179,51,18,254,189,70,83,0,11,156,179,1,98,134,119,0,158,111,111,0,119,154,73,255,200,63,140,254,45,13,13,255,154,192,2,254,81,72,42,0,46,160,185,254,44,112,6,0,146,215,149,1,26,176,104,0,68,28,87,1,236,50,153,255,179,128,250,254,206,193,191,255,166,92,137,254,53,40,239,0,210,1,204,254,168,173,35,0,141,243,45,1,36,50,109,255,15,242,194,255,227,159,122,255,176,175,202,254,70,57,72,0,40,223,56,0,208,162,58,255,183,98,93,0,15,111,12,0,30,8,76,255,132,127,246,255,45,242,103,0,69,181,15,255,10,209,30,0,3,179,121,0,241,232,218,1,123,199,88,255,2,210,202,1,188,130,81,255,94,101,208,1,103,36,45,0,76,193,24,1,95,26,241,255,165,162,187,0,36,114,140],"i8",4,e.h+10240),K([202,66,5,255,37,56,147,0,152,11,243,1,127,85,232,255,250,135,212,1,185,177,113,0,90,220,75,255,69,248,146,0,50,111,50,0,92,22,80,0,244,36,115,254,163,100,82,255,25,193,6,1,127,61,36,0,253,67,30,254,65,236,170,255,161,17,215,254,63,175,140,0,55,127,4,0,79,112,233,0,109,160,40,0,143,83,7,255,65,26,238,255,217,169,140,255,78,94,189,255,0,147,190,255,147,71,186,254,106,77,127,255,233,157,233,1,135,87,237,255,208,13,236,1,155,109,36,255,180,100,218,0,180,163,18,0,190,110,9,1,17,63,123,255,179,136,180,255,165,123,123,255,144,188,81,254,71,240,108,255,25,112,11,255,227,218,51,255,167,50,234,255,114,79,108,255,31,19,115,255,183,240,99,0,227,87,143,255,72,217,248,255,102,169,95,1,129,149,149,0,238,133,12,1,227,204,35,0,208,115,26,1,102,8,234,0,112,88,143,1,144,249,14,0,240,158,172,254,100,112,119,0,194,141,153,254,40,56,83,255,121,176,46,0,42,53,76,255,158,191,154,0,91,209,92,0,173,13,16,1,5,72,226,255,204,254,149,0,80,184,207,0,100,9,122,254,118,101,171,255,252,203,0,254,160,207,54,0,56,72,249,1,56,140,13,255,10,64,107,254,91,101,52,255,225,181,248,1,139,255,132,0,230,145,17,0,233,56,23,0,119,1,241,255,213,169,151,255,99,99,9,254,185,15,191,255,173,103,109,1,174,13,251,255,178,88,7,254,27,59,68,255,10,33,2,255,248,97,59,0,26,30,146,1,176,147,10,0,95,121,207,1,188,88,24,0,185,94,254,254,115,55,201,0,24,50,70,0,120,53,6,0,142,66,146,0,228,226,249,255,104,192,222,1,173,68,219,0,162,184,36,255,143,102,137,255,157,11,23,0,125,45,98,0,235,93,225,254,56,112,160,255,70,116,243,1,153,249,55,255,129,39,17,1,241,80,244,0,87,69,21,1,94,228,73,255,78,66,65,255,194,227,231,0,61,146,87,255,173,155,23,255,112,116,219,254,216,38,11,255,131,186,133,0,94,212,187,0,100,47,91,0,204,254,175,255,222,18,215,254,173,68,108,255,227,228,79,255,38,221,213,0,163,227,150,254,31,190,18,0,160,179,11,1,10,90,94,255,220,174,88,0,163,211,229,255,199,136,52,0,130,95,221,255,140,188,231,254,139,113,128,255,117,171,236,254,49,220,20,255,59,20,171,255,228,109,188,0,20,225,32,254,195,16,174,0,227,254,136,1,135,39,105,0,150,77,206,255,210,238,226,0,55,212,132,254,239,57,124,0,170,194,93,255,249,16,247,255,24,151,62,255,10,151,10,0,79,139,178,255,120,242,202,0,26,219,213,0,62,125,35,255,144,2,108,255,230,33,83,255,81,45,216,1,224,62,17,0,214,217,125,0,98,153,153,255,179,176,106,254,131,93,138,255,109,62,36,255,178,121,32,255,120,252,70,0,220,248,37,0,204,88,103,1,128,220,251,255,236,227,7,1,106,49,198,255,60,56,107,0,99,114,238,0,220,204,94,1,73,187,1,0,89,154,34,0,78,217,165,255,14,195,249,255,9,230,253,255,205,135,245,0,26,252,7,255,84,205,27,1,134,2,112,0,37,158,32,0,231,91,237,255,191,170,204,255,152,7,222,0,109,192,49,0,193,166,146,255,232,19,181,255,105,142,52,255,103,16,27,1,253,200,165,0,195,217,4,255,52,189,144,255,123,155,160,254,87,130,54,255,78,120,61,255,14,56,41,0,25,41,125,255,87,168,245,0,214,165,70,0,212,169,6,255,219,211,194,254,72,93,164,255,197,33,103,255,43,142,141,0,131,225,172,0,244,105,28,0,68,68,225,0,136,84,13,255,130,57,40,254,139,77,56,0,84,150,53,0,54,95,157,0,144,13,177,254,95,115,186,0,117,23,118,255,244,166,241,255,11,186,135,0,178,106,203,255,97,218,93,0,43,253,45,0,164,152,4,0,139,118,239,0,96,1,24,254,235,153,211,255,168,110,20,255,50,239,176,0,114,41,232,0,193,250,53,0,254,160,111,254,136,122,41,255,97,108,67,0,215,152,23,255,140,209,212,0,42,189,163,0,202,42,50,255,106,106,189,255,190,68,217,255,233,58,117,0,229,220,243,1,197,3,4,0,37,120,54,254,4,156,134,255,36,61,171,254,165,136,100,255,212,232,14,0,90,174,10,0,216,198,65,255,12,3,64,0,116,113,115,255,248,103,8,0,231,125,18,255,160,28,197,0,30,184,35,1,223,73,249,255,123,20,46,254,135,56,37,255,173,13,229,1,119,161,34,255,245,61,73,0,205,125,112,0,137,104,134,0,217,246,30,255,237,142,143,0,65,159,102,255,108,164,190,0,219,117,173,255,34,37,120,254,200,69,80,0,31,124,218,254,74,27,160,255,186,154,199,255,71,199,252,0,104,81,159,1,17,200,39,0,211,61,192,1,26,238,91,0,148,217,12,0,59,91,213,255,11,81,183,255,129,230,122,255,114,203,145,1,119,180,66,255,72,138,180,0,224,149,106,0,119,82,104,255,208,140,43,0,98,9,182,255,205,101,134,255,18,101,38,0,95,197,166,255,203,241,147,0,62,208,145,255,133,246,251,0,2,169,14,0,13,247,184,0,142,7,254,0,36,200,23,255,88,205,223,0,91,129,52,255,21,186,30,0,143,228,210,1,247,234,248,255,230,69,31,254,176,186,135,255,238,205,52,1,139,79,43,0,17,176,217,254,32,243,67,0,242,111,233,0,44,35,9,255,227,114,81,1,4,71,12,255,38,105,191,0,7,117,50,255,81,79,16,0,63,68,65,255,157,36,110,255,77,241,3,255,226,45,251,1,142,25,206,0,120,123,209,1,28,254,238,255,5,128,126,255,91,222,215,255,162,15,191,0,86,240,73,0,135,185,81,254,44,241,163,0,212,219,210,255,112,162,155,0,207,101,118,0,168,72,56,255,196,5,52,0,72,172,242,255,126,22,157,255,146,96,59,255,162,121,152,254,140,16,95,0,195,254,200,254,82,150,162,0,119,43,145,254,204,172,78,255,166,224,159,0,104,19,237,255,245,126,208,255,226,59,213,0,117,217,197,0,152,72,237,0,220,31,23,254,14,90,231,255,188,212,64,1,60,101,246,255,85,24,86,0,1,177,109,0,146,83,32,1,75,182,192,0,119,241,224,0,185,237,27,255,184,101,82,1,235,37,77,255,253,134,19,0,232,246,122,0,60,106,179,0,195,11,12,0,109,66,235,1,125,113,59,0,61,40,164,0,175,104,240,0,2,47,187,255,50,12,141,0,194,139,181,255,135,250,104,0,97,92,222,255,217,149,201,255,203,241,118,255,79,151,67,0,122,142,218,255,149,245,239,0,138,42,200,254,80,37,97,255,124,112,167,255,36,138,87,255,130,29,147,255,241,87,78,255,204,97,19,1,177,209,22,255,247,227,127,254,99,119,83,255,212,25,198,1,16,179,179,0,145,77,172,254,89,153,14,255,218,189,167,0,107,233,59,255,35,33,243,254,44,112,112,255,161,127,79,1,204,175,10,0,40,21,138,254,104,116,228,0,199,95,137,255,133,190,168,255,146,165,234,1,183,99,39,0,183,220,54,254,255,222,133,0,162,219,121,254,63,239,6,0,225,102,54,255,251,18,246,0,4,34,129,1,135,36,131,0,206,50,59,1,15,97,183,0,171,216,135,255,101,152,43,255,150,251,91,0,38,145,95,0,34,204,38,254,178,140,83,255,25,129,243,255,76,144,37,0,106,36,26,254,118,144,172,255,68,186,229,255,107,161,213,255,46,163,68,255,149,170,253,0,187,17,15,0,218,160,165,255,171,35,246,1,96,13,19,0,165,203,117,0,214,107,192,255,244,123,177,1,100,3,104,0,178,242,97,255,251,76,130,255,211,77,42,1,250,79,70,255,63,244,80,1,105,101,246,0,61,136,58,1,238,91,213,0,14,59,98,255,167,84,77,0,17,132,46,254,57,175,197,255,185,62,184,0,76,64,207,0,172,175,208,254,175,74,37,0,138,27,211,254,148,125,194,0,10,89,81,0,168,203,101,255,43,213,209,1,235,245,54,0,30,35,226,255,9,126,70,0,226,125,94,254,156,117,20,255,57,248,112,1,230,48,64,255,164,92,166,1,224,214,230,255,36,120,143,0,55,8,43,255,251,1,245,1,106,98,165,0,74,107,106,254,53,4,54,255,90,178,150,1,3,120,123,255,244,5,89,1,114,250,61,255,254,153,82,1,77,15,17,0,57,238,90,1,95,223,230,0,236,52,47,254,103,148,164,255,121,207,36,1,18,16,185,255,75,20,74,0,187,11,101,0,46,48,129,255,22,239,210,255,77,236,129,255,111,77,204,255,61,72,97,255,199,217,251,255,42,215,204,0,133,145,201,255,57,230,146,1,235,100,198,0,146,73,35,254,108,198,20,255,182,79,210,255,82,103,136,0,246,108,176,0,34,17,60,255,19,74,114,254,168,170,78,255,157,239,20,255,149,41,168,0,58,121,28,0,79,179,134,255,231,121,135,255,174,209,98,255,243,122,190,0,171,166,205,0,212,116,48,0,29,108,66,255,162,222,182,1,14,119,21,0,213,39,249,255,254,223,228,255,183,165,198,0,133,190,48,0,124,208,109,255,119,175,85,255,9,209,121,1,48,171,189,255,195,71,134,1,136,219,51,255,182,91,141,254,49,159,72,0,35,118,245,255,112,186,227,255,59,137,31,0,137,44,163,0,114,103,60,254,8,213,150,0,162,10,113,255,194,104,72,0,220,131,116,255,178,79,92,0,203,250,213,254,93,193,189,255,130,255,34,254,212,188,151,0,136,17,20,255,20,101,83,255,212,206,166,0,229,238,73,255,151,74,3,255,168,87,215,0,155,188,133,255,166,129,73,0,240,79,133,255,178,211,81,255,203,72,163,254,193,168,165,0,14,164,199,254,30,255,204,0,65,72,91,1,166,74,102,255,200,42,0,255,194,113,227,255,66,23,208,0,229,216,100,255,24,239,26,0,10,233,62,255,123,10,178,1,26,36,174,255,119,219,199,1,45,163,190,0,16,168,42,0,166,57,198,255,28,26,26,0,126,165,231,0,251,108,100,255,61,229,121,255,58,118,138,0,76,207,17,0,13,34,112,254,89,16,168,0,37,208,105,255,35,201,215,255,40,106,101,254,6,239,114,0,40,103,226,254,246,127,110,255,63,167,58,0,132,240,142,0,5,158,88,255,129,73,158,255,94,89,146,0,230,54,146,0,8,45,173,0,79,169,1,0,115,186,247,0,84,64,131,0,67,224,253,255,207,189,64,0,154,28,81,1,45,184,54,255,87,212,224,255,0,96,73,255,129,33,235,1,52,66,80,255,251,174,155,255,4,179,37,0,234,164,93,254,93,175,253,0,198,69,87,255,224,106,46,0,99,29,210,0,62,188,114,255,44,234,8,0,169,175,247,255,23,109,137,255,229,182,39,0,192,165,94,254,245,101,217,0,191,88,96,0,196,94,99,255,106,238,11,254,53,126,243,0,94,1,101,255,46,147,2,0,201,124,124,255,141,12,218,0,13,166,157,1,48,251,237,255,155,250,124,255,106,148,146,255,182,13,202,0,28,61,167,0,217,152,8,254,220,130,45,255,200,230,255,1,55,65,87,255,93,191,97,254,114,251,14,0,32,105,92,1,26,207,141,0,24,207,13,254,21,50,48,255,186,148,116,255,211,43,225,0,37,34,162,254,164,210,42,255,68,23,96,255,182,214,8,255,245,117,137,255,66,195,50,0,75,12,83,254,80,140,164,0,9,165,36,1,228,110,227,0,241,17,90,1,25,52,212,0,6,223,12,255,139,243,57,0,12,113,75,1,246,183,191,255,213,191,69,255,230,15,142,0,1,195,196,255,138,171,47,255,64,63,106,1,16,169,214,255,207,174,56,1,88,73,133,255,182,133,140,0,177,14,25,255,147,184,53,255,10,227,161,255,120,216,244,255,73,77,233,0,157,238,139,1,59,65,233,0,70,251,216,1,41,184,153,255,32,203,112,0,146,147,253,0,87,101,109,1,44,82,133,255,244,150,53,255,94,152,232,255,59,93,39,255,88,147,220,255,78,81,13,1,32,47,252,255,160,19,114,255,93,107,39,255,118,16,211,1,185,119,209,255,227,219,127,254,88,105,236,255,162,110,23,255,36,166,110,255,91,236,221,255,66,234,116,0,111,19,244,254,10,233,26,0,32,183,6,254,2,191,242,0,218,156,53,254,41,60,70,255,168,236,111,0,121,185,126,255,238,142,207,255,55,126,52,0,220,129,208,254,80,204,164,255,67,23,144,254,218,40,108,255,127,202,164,0,203,33,3,255,2,158,0,0,37,96,188,255,192,49,74,0,109,4,0,0,111,167,10,254,91,218,135,255,203,66,173,255,150,194,226,0,201,253,6,255,174,102,121,0,205,191,110,0,53,194,4,0,81,40,45,254,35,102,143,255,12,108,198,255,16,27,232,255,252,71,186,1,176,110,114,0,142,3,117,1,113,77,142,0,19,156,197,1,92,47,252,0,53,232,22,1,54,18,235,0,46,35,189,255,236,212,129,0,2,96,208,254,200,238,199,255,59,175,164,255,146,43,231,0,194,217,52,255,3,223,12,0,138,54,178,254,85,235,207,0,232,207,34,0,49,52,50,255,166,113,89,255,10,45,216,255,62,173,28,0,111,165,246,0,118,115,91,255,128,84,60,0,167,144,203,0,87,13,243,0,22,30,228,1,177,113,146,255,129,170,230,254,252,153,129,255,145,225,43,0,70,231,5,255,122,105,126,254,86,246,148,255,110,37,154,254,209,3,91,0,68,145,62,0,228,16,165,255,55,221,249,254,178,210,91,0,83,146,226,254,69,146,186,0,93,210,104,254,16,25,173,0,231,186,38,0,189,122,140,255,251,13,112,255,105,110,93,0,251,72,170,0,192,23,223,255,24,3,202,1,225,93,228,0,153,147,199,254,109,170,22,0,248,101,246,255,178,124,12,255,178,254,102,254,55,4,65,0,125,214,180,0,183,96,147,0,45,117,23,254,132,191,249,0,143,176,203,254,136,183,54,255,146,234,177,0,146,101,86,255,44,123,143,1,33,209,152,0,192,90,41,254,83,15,125,255,213,172,82,0,215,169,144,0,16,13,34,0,32,209,100,255,84,18,249,1,197,17,236,255,217,186,230,0,49,160,176,255,111,118,97,255,237,104,235,0,79,59,92,254,69,249,11,255,35,172,74,1,19,118,68,0,222,124,165,255,180,66,35,255,86,174,246,0,43,74,111,255,126,144,86,255,228,234,91,0,242,213,24,254,69,44,235,255,220,180,35,0,8,248,7,255,102,47,92,255,240,205,102,255,113,230,171,1,31,185,201,255,194,246,70,255,122,17,187,0,134,70,199,255,149,3,150,255,117,63,103,0,65,104,123,255,212,54,19,1,6,141,88,0,83,134,243,255,136,53,103,0,169,27,180,0,177,49,24,0,111,54,167,0,195,61,215,255,31,1,108,1,60,42,70,0,185,3,162,255,194,149,40,255,246,127,38,254,190,119,38,255,61,119,8,1,96,161,219,255,42,203,221,1,177,242,164,255,245,159,10,0,116,196,0,0,5,93,205,254,128,127,179,0,125,237,246,255,149,162,217,255,87,37,20,254,140,238,192,0,9,9,193,0,97,1,226,0,29,38,10,0,0,136,63,255,229,72,210,254,38,134,92,255,78,218,208,1,104,36,84,255,12,5,193,255,242,175,61,255,191,169,46,1,179,147,147,255,113,190,139,254,125,172,31,0,3,75,252,254,215,36,15,0,193,27,24,1,255,69,149,255,110,129,118,0,203,93,249,0,138,137,64,254,38,70,6,0,153,116,222,0,161,74,123,0,193,99,79,255,118,59,94,255,61,12,43,1,146,177,157,0,46,147,191,0,16,255,38,0,11,51,31,1,60,58,98,255,111,194,77,1,154,91,244,0,140,40,144,1,173,10,251,0,203,209,50,254,108,130,78,0,228,180,90,0,174,7,250,0,31,174,60,0,41,171,30,0,116,99,82,255,118,193,139,255,187,173,198,254,218,111,56,0,185,123,216,0,249,158,52,0,52,180,93,255,201,9,91,255,56,45,166,254,132,155,203,255,58,232,110,0,52,211,89,255,253,0,162,1,9,87,183,0,145,136,44,1,94,122,245,0,85,188,171,1,147,92,198,0,0,8,104,0,30,95,174,0,221,230,52,1,247,247,235,255,137,174,53,255,35,21,204,255,71,227,214,1,232,82,194,0,11,48,227,255,170,73,184,255,198,251,252,254,44,112,34,0,131,101,131,255,72,168,187,0,132,135,125,255,138,104,97,255,238,184,168,255,243,104,84,255,135,216,226,255,139,144,237,0,188,137,150,1,80,56,140,255,86,169,167,255,194,78,25,255,220,17,180,255,17,13,193,0,117,137,212,255,141,224,151,0,49,244,175,0,193,99,175,255,19,99,154,1,255,65,62,255,156,210,55,255,242,244,3,255,250,14,149,0,158,88,217,255,157,207,134,254,251,232,28,0,46,156,251,255,171,56,184,255,239,51,234,0,142,138,131,255,25,254,243,1,10,201,194,0,63,97,75,0,210,239,162,0,192,200,31,1,117,214,243,0,24,71,222,254,54,40,232,255,76,183,111,254,144,14,87,255,214,79,136,255,216,196,212,0,132,27,140,254,131,5,253,0,124,108,19,255,28,215,75,0,76,222,55,254,233,182,63,0,68,171,191,254,52,111,222,255,10,105,77,255,80,170,235,0,143,24,88,255,45,231,121,0,148,129,224,1,61,246,84,0,253,46,219,255,239,76,33,0,49,148,18,254,230,37,69,0,67,134,22,254,142,155,94,0,31,157,211,254,213,42,30,255,4,228,247,254,252,176,13,255,39,0,31,254,241,244,255,255,170,45,10,254,253,222,249,0,222,114,132,0,255,47,6,255,180,163,179,1,84,94,151,255,89,209,82,254,229,52,169,255,213,236,0,1,214,56,228,255,135,119,151,255,112,201,193,0,83,160,53,254,6,151,66,0,18,162,17,0,233,97,91,0,131,5,78,1,181,120,53,255,117,95,63,255,237,117,185,0,191,126,136,255,144,119,233,0,183,57,97,1,47,201,187,255,167,165,119,1,45,100,126,0,21,98,6,254,145,150,95,255,120,54,152,0,209,98,104,0,143,111,30,254,184,148,249,0,235,216,46,0,248,202,148,255,57,95,22,0,242,225,163,0,233,247,232,255,71,171,19,255,103,244,49,255,84,103,93,255,68,121,244,1,82,224,13,0,41,79,43,255,249,206,167,255,215,52,21,254,192,32,22,255,247,111,60,0,101,74,38,255,22,91,84,254,29,28,13,255,198,231,215,254,244,154,200,0,223,137,237,0,211,132,14,0,95,64,206,255,17,62,247,255,233,131,121,1,93,23,77,0,205,204,52,254,81,189,136,0,180,219,138,1,143,18,94,0,204,43,140,254,188,175,219,0,111,98,143,255,151,63,162,255,211,50,71,254,19,146,53,0,146,45,83,254,178,82,238,255,16,133,84,255,226,198,93,255,201,97,20,255,120,118,35,255,114,50,231,255,162,229,156,255,211,26,12,0,114,39,115,255,206,212,134,0,197,217,160,255,116,129,94,254,199,215,219,255,75,223,249,1,253,116,181,255,232,215,104,255,228,130,246,255,185,117,86,0,14,5,8,0,239,29,61,1,237,87,133,255,125,146,137,254,204,168,223,0,46,168,245,0,154,105,22,0,220,212,161,255,107,69,24,255,137,218,181,255,241,84,198,255,130,122,211,255,141,8,153,255,190,177,118,0,96,89,178,0,255,16,48,254,122,96,105,255,117,54,232,255,34,126,105,255,204,67,166,0,232,52,138,255,211,147,12,0,25,54,7,0,44,15,215,254,51,236,45,0,190,68,129,1,106,147,225,0,28,93,45,254,236,141,15,255,17,61,161,0,220,115,192,0,236,145,24,254,111,168,169,0,224,58,63,255,127,164,188,0,82,234,75,1,224,158,134,0,209,68,110,1,217,166,217,0,70,225,166,1,187,193,143,255,16,7,88,255,10,205,140,0,117,192,156,1,17,56,38,0,27,124,108,1,171,215,55,255,95,253,212,0,155,135,168,255,246,178,153,254,154,68,74,0,232,61,96,254,105,132,59,0,33,76,199,1,189,176,130,255,9,104,25,254,75,198,102,255,233,1,112,0,108,220,20,255,114,230,70,0,140,194,133,255,57,158,164,254,146,6,80,255,169,196,97,1,85,183,130,0,70,158,222,1,59,237,234,255,96,25,26,255,232,175,97,255,11,121,248,254,88,35,194,0,219,180,252,254,74,8,227,0,195,227,73,1,184,110,161,255,49,233,164,1,128,53,47,0,82,14,121,255,193,190,58,0,48,174,117,255,132,23,32,0,40,10,134,1,22,51,25,255,240,11,176,255,110,57,146,0,117,143,239,1,157,101,118,255,54,84,76,0,205,184,18,255,47,4,72,255,78,112,85,255,193,50,66,1,93,16,52,255,8,105,134,0,12,109,72,255,58,156,251,0,144,35,204,0,44,160,117,254,50,107,194,0,1,68,165,255,111,110,162,0,158,83,40,254,76,214,234,0,58,216,205,255,171,96,147,255,40,227,114,1,176,227,241,0,70,249,183,1,136,84,139,255,60,122,247,254,143,9,117,255,177,174,137,254,73,247,143,0,236,185,126,255,62,25,247,255,45,64,56,255,161,244,6,0,34,57,56,1,105,202,83,0,128,147,208,0,6,103,10,255,74,138,65,255,97,80,100,255,214,174,33,255,50,134,74,255,110,151,130,254,111,84,172,0,84,199,75,254,248,59,112,255,8,216,178,1,9,183,95,0,238,27,8,254,170,205,220,0,195,229,135,0,98,76,237,255,226,91,26,1,82,219,39,255,225,190,199,1,217,200,121,255,81,179,8,255,140,65,206,0,178,207,87,254,250,252,46,255,104,89,110,1,253,189,158,255,144,214,158,255,160,245,54,255,53,183,92,1,21,200,194,255,146,33,113,1,209,1,255,0,235,106,43,255,167,52,232,0,157,229,221,0,51,30,25,0,250,221,27,1,65,147,87,255,79,123,196,0,65,196,223,255,76,44,17,1,85,241,68,0,202,183,249,255,65,212,212,255,9,33,154,1,71,59,80,0,175,194,59,255,141,72,9,0,100,160,244,0,230,208,56,0,59,25,75,254,80,194,194,0,18,3,200,254,160,159,115,0,132,143,247,1,111,93,57,255,58,237,11,1,134,222,135,255,122,163,108,1,123,43,190,255,251,189,206,254,80,182,72,255,208,246,224,1,17,60,9,0,161,207,38,0,141,109,91,0,216,15,211,255,136,78,110,0,98,163,104,255,21,80,121,255,173,178,183,1,127,143,4,0,104,60,82,254,214,16,13,255,96,238,33,1,158,148,230,255,127,129,62,255,51,255,210,255,62,141,236,254,157,55,224,255,114,39,244,0,192,188,250,255,228,76,53,0,98,84,81,255,173,203,61,254,147,50,55,255,204,235,191,0,52,197,244,0,88,43,211,254,27,191,119,0,188,231,154,0,66,81,161,0,92,193,160,1,250,227,120,0,123,55,226,0,184,17,72,0,133,168,10,254,22,135,156,255,41,25,103,255,48,202,58,0,186,149,81,255,188,134,239,0,235,181,189,254,217,139,188,255,74,48,82,0,46,218,229,0,189,253,251,0,50,229,12,255,211,141,191,1,128,244,25,255,169,231,122,254,86,47,189,255,132,183,23,255,37,178,150,255,51,137,253,0,200,78,31,0,22,105,50,0,130,60,0,0,132,163,91,254,23,231,187,0,192,79,239,0,157,102,164,255,192,82,20,1,24,181,103,255,240,9,234,0,1,123,164,255,133,233,0,255,202,242,242,0,60,186,245,0,241,16,199,255,224,116,158,254,191,125,91,255,224,86,207,0,121,37,231,255,227,9,198,255,15,153,239,255,121,232,217,254,75,112,82,0,95,12,57,254,51,214,105,255,148,220,97,1,199,98,36,0,156,209,12,254,10,212,52,0,217,180,55,254,212,170,232,255,216,20,84,255,157,250,135,0,157,99,127,254,1,206,41,0,149,36,70,1,54,196,201,255,87,116,0,254,235,171,150,0,27,163,234,0,202,135,180,0,208,95,0,254,123,156,93,0,183,62,75,0,137,235,182,0,204,225,255,255,214,139,210,255,2,115,8,255,29,12,111,0,52,156,1,0,253,21,251,255,37,165,31,254,12,130,211,0,106,18,53,254,42,99,154,0,14,217,61,254,216,11,92,255,200,197,112,254,147,38,199,0,36,252,120,254,107,169,77,0,1,123,159,255,207,75,102,0,163,175,196,0,44,1,240,0,120,186,176,254,13,98,76,255,237,124,241,255,232,146,188,255,200,96,224,0,204,31,41,0,208,200,13,0,21,225,96,255,175,156,196,0,247,208,126,0,62,184,244,254,2,171,81,0,85,115,158,0,54,64,45,255,19,138,114,0,135,71,205,0,227,47,147,1,218,231,66,0,253,209,28,0,244,15,173,255,6,15,118,254,16,150,208,255,185,22,50,255,86,112,207,255,75,113,215,1,63,146,43,255,4,225,19,254,227,23,62,255,14,255,214,254,45,8,205,255,87,197,151,254,210,82,215,255,245,248,247,255,128,248,70,0,225,247,87,0,90,120,70,0,213,245,92,0,13,133,226,0,47,181,5,1,92,163,105,255,6,30,133,254,232,178,61,255,230,149,24,255,18,49,158,0,228,100,61,254,116,243,251,255,77,75,92,1,81,219,147,255,76,163,254,254,141,213,246,0,232,37,152,254,97,44,100,0,201,37,50,1,212,244,57,0,174,171,183,255,249,74,112,0,166,156,30,0,222,221,97,255,243,93,73,254,251,101,100,255,216,217,93,255,254,138,187,255,142,190,52,255,59,203,177,255,200,94,52,0,115,114,158,255,165,152,104,1,126,99,226,255,118,157,244,1,107,200,16,0,193,90,229,0,121,6,88,0,156,32,93,254,125,241,211,255,14,237,157,255,165,154,21,255,184,224,22,255,250,24,152,255,113,77,31,0,247,171,23,255,237,177,204,255,52,137,145,255,194,182,114,0,224,234,149,0,10,111,103,1,201,129,4,0,238,142,78,0,52,6,40,255,110,213,165,254,60,207,253,0,62,215,69,0,96,97,0,255,49,45,202,0,120,121,22,255,235,139,48,1,198,45,34,255,182,50,27,1,131,210,91,255,46,54,128,0,175,123,105,255,198,141,78,254,67,244,239,255,245,54,103,254,78,38,242,255,2,92,249,254,251,174,87,255,139,63,144,0,24,108,27,255,34,102,18,1,34,22,152,0,66,229,118,254,50,143,99,0,144,169,149,1,118,30,152,0,178,8,121,1,8,159,18,0,90,101,230,255,129,29,119,0,68,36,11,1,232,183,55,0,23,255,96,255,161,41,193,255,63,139,222,0,15,179,243,0,255,100,15,255,82,53,135,0,137,57,149,1,99,240,170,255,22,230,228,254,49,180,82,255,61,82,43,0,110,245,217,0,199,125,61,0,46,253,52,0,141,197,219,0,211,159,193,0,55,121,105,254,183,20,129,0,169,119,170,255,203,178,139,255,135,40,182,255,172,13,202,255,65,178,148,0,8,207,43,0,122,53,127,1,74,161,48,0,227,214,128,254,86,11,243,255,100,86,7,1,245,68,134,255,61,43,21,1,152,84,94,255,190,60,250,254,239,118,232,255,214,136,37,1,113,76,107,255,93,104,100,1,144,206,23,255,110,150,154,1,228,103,185,0,218,49,50,254,135,77,139,255,185,1,78,0,0,161,148,255,97,29,233,255,207,148,149,255,160,168,0,0,91,128,171,255,6,28,19,254,11,111,247,0,39,187,150,255,138,232,149,0,117,62,68,255,63,216,188,255,235,234,32,254,29,57,160,255,25,12,241,1,169,60,191,0,32,131,141,255,237,159,123,255,94,197,94,254,116,254,3,255,92,179,97,254,121,97,92,255,170,112,14,0,21,149,248,0,248,227,3,0,80,96,109,0,75,192,74,1,12,90,226,255,161,106,68,1,208,114,127,255,114,42,255,254,74,26,74,255,247,179,150,254,121,140,60,0,147,70,200,255,214,40,161,255,161,188,201,255,141,65,135,255,242,115,252,0,62,47,202,0,180,149,255,254,130,55,237,0,165,17,186,255,10,169,194,0,156,109,218,255,112,140,123,255,104,128,223,254,177,142,108,255,121,37,219,255,128,77,18,255,111,108,23,1,91,192,75,0,174,245,22,255,4,236,62,255,43,64,153,1,227,173,254,0,237,122,132,1,127,89,186,255,142,82,128,254,252,84,174,0,90,179,177,1,243,214,87,255,103,60,162,255,208,130,14,255,11,130,139,0,206,129,219,255,94,217,157,255,239,230,230,255,116,115,159,254,164,107,95,0,51,218,2,1,216,125,198,255,140,202,128,254,11,95,68,255,55,9,93,254,174,153,6,255,204,172,96,0,69,160,110,0,213,38,49,254,27,80,213,0,118,125,114,0,70,70,67,255,15,142,73,255,131,122,185,255,243,20,50,254,130,237,40,0,210,159,140,1,197,151,65,255,84,153,66,0,195,126,90,0,16,238,236,1,118,187,102,255,3,24,133,255,187,69,230,0,56,197,92,1,213,69,94,255,80,138,229,1,206,7,230,0,222,111,230,1,91,233,119,255,9,89,7,1,2,98,1,0,148,74,133,255,51,246,180,255,228,177,112,1,58,189,108,255,194,203,237,254,21,209,195,0,147,10,35,1,86,157,226,0,31,163,139,254,56,7,75,255,62,90,116,0,181,60,169,0,138,162,212,254,81,167,31,0,205,90,112,255,33,112,227,0,83,151,117,1,177,224,73,255,174,144,217,255,230,204,79,255,22,77,232,255,114,78,234,0,224,57,126,254,9,49,141,0,242,147,165,1,104,182,140,255,167,132,12,1,123,68,127,0,225,87,39,1,251,108,8,0,198,193,143,1,121,135,207,255,172,22,70,0,50,68,116,255,101,175,40,255,248,105,233,0,166,203,7,0,110,197,218,0,215,254,26,254,168,226,253,0,31,143,96,0,11,103,41,0,183,129,203,254,100,247,74,255,213,126,132,0,210,147,44,0,199,234,27,1,148,47,181,0,155,91,158,1,54,105,175,255,2,78,145,254,102,154,95,0,128,207,127,254,52,124,236,255,130,84,71,0,221,243,211,0,152,170,207,0,222,106,199,0,183,84,94,254,92,200,56,255,138,182,115,1,142,96,146,0,133,136,228,0,97,18,150,0,55,251,66,0,140,102,4,0,202,103,151,0,30,19,248,255,51,184,207,0,202,198,89,0,55,197,225,254,169,95,249,255,66,65,68,255,188,234,126,0,166,223,100,1,112,239,244,0,144,23,194,0,58,39,182,0,244,44,24,254,175,68,179,255,152,118,154,1,176,162,130,0,217,114,204,254,173,126,78,255,33,222,30,255,36,2,91,255,2,143,243,0,9,235,215,0,3,171,151,1,24,215,245,255,168,47,164,254,241,146,207,0,69,129,180,0,68,243,113,0,144,53,72,254,251,45,14,0,23,110,168,0,68,68,79,255,110,70,95,254,174,91,144,255,33,206,95,255,137,41,7,255,19,187,153,254,35,255,112,255,9,145,185,254,50,157,37,0,11,112,49,1,102,8,190,255,234,243,169,1,60,85,23,0,74,39,189,0,116,49,239,0,173,213,210,0,46,161,108,255,159,150,37,0,196,120,185,255,34,98,6,255,153,195,62,255,97,230,71,255,102,61,76,0,26,212,236,255,164,97,16,0,198,59,146,0,163,23,196,0,56,24,61,0,181,98,193,0,251,147,229,255,98,189,24,255,46,54,206,255,234,82,246,0,183,103,38,1,109,62,204,0,10,240,224,0,146,22,117,255,142,154,120,0,69,212,35,0,208,99,118,1,121,255,3,255,72,6,194,0,117,17,197,255,125,15,23,0,154,79,153,0,214,94,197,255,185,55,147,255,62,254,78,254,127,82,153,0,110,102,63,255,108,82,161,255,105,187,212,1,80,138,39,0,60,255,93,255,72,12,186,0,210,251,31,1,190,167,144,255,228,44,19,254,128,67,232,0,214,249,107,254,136,145,86,255,132,46,176,0,189,187,227,255,208,22,140,0,217,211,116,0,50,81,186,254,139,250,31,0,30,64,198,1,135,155,100,0,160,206,23,254,187,162,211,255,16,188,63,0,254,208,49,0,85,84,191,0,241,192,242,255,153,126,145,1,234,162,162,255,230,97,216,1,64,135,126,0,190,148,223,1,52,0,43,255,28,39,189,1,64,136,238,0,175,196,185,0,98,226,213,255,127,159,244,1,226,175,60,0,160,233,142,1,180,243,207,255,69,152,89,1,31,101,21,0,144,25,164,254,139,191,209,0,91,25,121,0,32,147,5,0,39,186,123,255,63,115,230,255,93,167,198,255,143,213,220,255,179,156,19,255,25,66,122,0,214,160,217,255,2,45,62,255,106,79,146,254,51,137,99,255,87,100,231,255,175,145,232,255,101,184,1,255,174,9,125,0,82,37,161,1,36,114,141,255,48,222,142,255,245,186,154,0,5,174,221,254,63,114,155,255,135,55,160,1,80,31,135,0,126,250,179,1,236,218,45,0,20,28,145,1,16,147,73,0,249,189,132,1,17,189,192,255,223,142,198,255,72,20,15,255,250,53,237,254,15,11,18,0,27,211,113,254,213,107,56,255,174,147,146,255,96,126,48,0,23,193,109,1,37,162,94,0,199,157,249,254,24,128,187,255,205,49,178,254,93,164,42,255,43,119,235,1,88,183,237,255,218,210,1,255,107,254,42,0,230,10,99,255,162,0,226,0,219,237,91,0,129,178,203,0,208,50,95,254,206,208,95,255,247,191,89,254,110,234,79,255,165,61,243,0,20,122,112,255,246,246,185,254,103,4,123,0,233,99,230,1,219,91,252,255,199,222,22,255,179,245,233,255,211,241,234,0,111,250,192,255,85,84,136,0,101,58,50,255,131,173,156,254,119,45,51,255,118,233,16,254,242,90,214,0,94,159,219,1,3,3,234,255,98,76,92,254,80,54,230,0,5,228,231,254,53,24,223,255,113,56,118,1,20,132,1,255,171,210,236,0,56,241,158,255,186,115,19,255,8,229,174,0,48,44,0,1,114,114,166,255,6,73,226,255,205,89,244,0,137,227,75,1,248,173,56,0,74,120,246,254,119,3,11,255,81,120,198,255,136,122,98,255,146,241,221,1,109,194,78,255,223,241,70,1,214,200,169,255,97,190,47,255,47,103,174,255,99,92,72,254,118,233,180,255,193,35,233,254,26,229,32,255,222,252,198,0,204,43,71,255,199,84,172,0,134,102,190,0,111,238,97,254,230,40,230,0,227,205,64,254,200,12,225,0,166,25,222,0,113,69,51,255,143,159,24,0,167,184,74,0,29,224,116,254,158,208,233,0,193,116,126,255,212,11,133,255,22,58,140,1,204,36,51,255,232,30,43,0,235,70,181,255,64,56,146,254,169,18,84,255,226,1,13,255,200,50,176,255,52,213,245,254,168,209,97,0,191,71,55,0,34,78,156,0,232,144,58,1,185,74,189,0,186,142,149,254,64,69,127,255,161,203,147,255,176,151,191,0,136,231,203,254,163,182,137,0,161,126,251,254,233,32,66,0,68,207,66,0,30,28,37,0,93,114,96,1,254,92,247,255,44,171,69,0,202,119,11,255,188,118,50,1,255,83,136,255,71,82,26,0,70,227,2,0,32,235,121,1,181,41,154,0,71,134,229,254,202,255,36,0,41,152,5,0,154,63,73,255,34,182,124,0,121,221,150,255,26,204,213,1,41,172,87,0,90,157,146,255,109,130,20,0,71,107,200,255,243,102,189,0,1,195,145,254,46,88,117,0,8,206,227,0,191,110,253,255,109,128,20,254,134,85,51,255,137,177,112,1,216,34,22,255,131,16,208,255,121,149,170,0,114,19,23,1,166,80,31,255,113,240,122,0,232,179,250,0,68,110,180,254,210,170,119,0,223,108,164,255,207,79,233,255,27,229,226,254,209,98,81,255,79,68,7,0,131,185,100,0,170,29,162,255,17,162,107,255,57,21,11,1,100,200,181,255,127,65,166,1,165,134,204,0,104,167,168,0,1,164,79,0,146,135,59,1,70,50,128,255,102,119,13,254,227,6,135,0,162,142,179,255,160,100,222,0,27,224,219,1,158,93,195,255,234,141,137,0,16,24,125,255,238,206,47,255,97,17,98,255,116,110,12,255,96,115,77,0,91,227,232,255,248,254,79,255,92,229,6,254,88,198,139,0,206,75,129,0,250,77,206,255,141,244,123,1,138,69,220,0,32,151,6,1,131,167,22,255,237,68,167,254,199,189,150,0,163,171,138,255,51,188,6,255,95,29,137,254,148,226,179,0,181,107,208,255,134,31,82,255,151,101,45,255,129,202,225,0,224,72,147,0,48,138,151,255,195,64,206,254,237,218,158,0,106,29,137,254,253,189,233,255,103,15,17,255,194,97,255,0,178,45,169,254,198,225,155,0,39,48,117,255,135,106,115,0,97,38,181,0,150,47,65,255,83,130,229,254,246,38,129,0,92,239,154,254,91,99,127,0,161,111,33,255,238,217,242,255,131,185,195,255,213,191,158,255,41,150,218,0,132,169,131,0,89,84,252,1,171,70,128,255,163,248,203,254,1,50,180,255,124,76,85,1,251,111,80,0,99,66,239,255,154,237,182,255,221,126,133,254,74,204,99,255,65,147,119,255,99,56,167,255,79,248,149,255,116,155,228,255,237,43,14,254,69,137,11,255,22,250,241,1,91,122,143,255,205,249,243,0,212,26,60,255,48,182,176,1,48,23,191,255,203,121,152,254,45,74,213,255,62,90,18,254,245,163,230,255,185,106,116,255,83,35,159,0,12,33,2,255,80,34,62,0,16,87,174,255,173,101,85,0,202,36,81,254,160,69,204,255,64,225,187,0,58,206,94,0,86,144,47,0,229,86,245,0,63,145,190,1,37,5,39,0,109,251,26,0,137,147,234,0,162,121,145,255,144,116,206,255,197,232,185,255,183,190,140,255,73,12,254,255,139,20,242,255,170,90,239,255,97,66,187,255,245,181,135,254,222,136,52,0,245,5,51,254,203,47,78,0,152,101,216,0,73,23,125,0,254,96,33,1,235,210,73,255,43,209,88,1,7,129,109,0,122,104,228,254,170,242,203,0,242,204,135,255,202,28,233,255,65,6,127,0,159,144,71,0,100,140,95,0,78,150,13,0,251,107,118,1,182,58,125,255,1,38,108,255,141,189,209,255,8,155,125,1,113,163,91,255,121,79,190,255,134,239,108,255,76,47,248,0,163,228,239,0,17,111,10,0,88,149,75,255,215,235,239,0,167,159,24,255,47,151,108,255,107,209,188,0,233,231,99,254,28,202,148,255,174,35,138,255,110,24,68,255,2,69,181,0,107,102,82,0,102,237,7,0,92,36,237,255,221,162,83,1,55,202,6,255,135,234,135,255,24,250,222,0,65,94,168,254,245,248,210,255,167,108,201,254,255,161,111,0,205,8,254,0,136,13,116,0,100,176,132,255,43,215,126,255,177,133,130,255,158,79,148,0,67,224,37,1,12,206,21,255,62,34,110,1,237,104,175,255,80,132,111,255,142,174,72,0,84,229,180,254,105,179,140,0,64,248,15,255,233,138,16,0,245,67,123,254,218,121,212,255,63,95,218,1,213,133,137,255,143,182,82,255,48,28,11,0,244,114,141,1,209,175,76,255,157,181,150,255,186,229,3,255,164,157,111,1,231,189,139,0,119,202,190,255,218,106,64,255,68,235,63,254,96,26,172,255,187,47,11,1,215,18,251,255,81,84,89,0,68,58,128,0,94,113,5,1,92,129,208,255,97,15,83,254,9,28,188,0,239,9,164,0,60,205,152,0,192,163,98,255,184,18,60,0,217,182,139,0,109,59,120,255,4,192,251,0,169,210,240,255,37,172,92,254,148,211,245,255,179,65,52,0,253,13,115,0,185,174,206,1,114,188,149,255,237,90,173,0,43,199,192,255,88,108,113,0,52,35,76,0,66,25,148,255,221,4,7,255,151,241,114,255,190,209,232,0,98,50,199,0,151,150,213,255,18,74,36,1,53,40,7,0,19,135,65,255,26,172,69,0,174,237,85,0,99,95,41,0,3,56,16,0,39,160,177,255,200,106,218,254,185,68,84,255,91,186,61,254,67,143,141,255,13,244,166,255,99,114,198,0,199,110,163,255,193,18,186,0,124,239,246,1,110,68,22,0,2,235,46,1,212,60,107,0,105,42,105,1,14,230,152,0,7,5,131,0,141,104,154,255,213,3,6,0,131,228,162,255,179,100,28,1,231,123,85,255,206,14,223,1,253,96,230,0,38,152,149,1,98,137,122,0,214,205,3,255,226,152,179,255,6,133,137,0,158,69,140,255,113,162,154,255,180,243,172,255,27,189,115,255,143,46,220,255,213,134,225,255,126,29,69,0,188,43,137,1,242,70,9,0,90,204,255,255,231,170,147,0,23,56,19,254,56,125,157,255,48,179,218,255,79,182,253,255,38,212,191,1,41,235,124,0,96,151,28,0,135,148,190,0,205,249,39,254,52,96,136,255,212,44,136,255,67,209,131,255,252,130,23,255,219,128,20,255,198,129,118,0,108,101,11,0,178,5,146,1,62,7,100,255,181,236,94,254,28,26,164,0,76,22,112,255,120,102,79,0,202,192,229,1,200,176,215,0,41,64,244,255,206,184,78,0,167,45,63,1,160,35,0,255,59,12,142,255,204,9,144,255,219,94,229,1,122,27,112,0,189,105,109,255,64,208,74,255,251,127,55,1,2,226,198,0,44,76,209,0,151,152,77,255,210,23,46,1,201,171,69,255,44,211,231,0,190,37,224,255,245,196,62,255,169,181,222,255,34,211,17,0,119,241,197,255,229,35,152,1,21,69,40,255,178,226,161,0,148,179,193,0,219,194,254,1,40,206,51,255,231,92,250,1,67,153,170,0,21,148,241,0,170,69,82,255,121,18,231,255,92,114,3,0,184,62,230,0,225,201,87,255,146,96,162,255,181,242,220,0,173,187,221,1,226,62,170,255,56,126,217,1,117,13,227,255,179,44,239,0,157,141,155,255,144,221,83,0,235,209,208,0,42,17,165,1,251,81,133,0,124,245,201,254,97,211,24,255,83,214,166,0,154,36,9,255,248,47,127,0,90,219,140,255,161,217,38,254,212,147,63,255,66,84,148,1,207,3,1,0,230,134,89,1,127,78,122,255,224,155,1,255,82,136,74,0,178,156,208,255,186,25,49,255,222,3,210,1,229,150,190,255,85,162,52,255,41,84,141,255,73,123,84,254,93,17,150,0,119,19,28,1,32,22,215,255,28,23,204,255,142,241,52,255,228,52,125,0,29,76,207,0,215,167,250,254,175,164,230,0,55,207,105,1,109,187,245,255,161,44,220,1,41,101,128,255,167,16,94,0,93,214,107,255,118,72,0,254,80,61,234,255,121,175,125,0,139,169,251,0,97,39,147,254,250,196,49,255,165,179,110,254,223,70,187,255,22,142,125,1,154,179,138,255,118,176,42,1,10,174,153,0,156,92,102,0,168,13,161,255,143,16,32,0,250,197,180,255,203,163,44,1,87,32,36,0,161,153,20,255,123,252,15,0,25,227,80,0,60,88,142,0,17,22,201,1,154,205,77,255,39,63,47,0,8,122,141,0,128,23,182,254,204,39,19,255,4,112,29,255,23,36,140,255,210,234,116,254,53,50,63,255,121,171,104,255,160,219,94,0,87,82,14,254,231,42,5,0,165,139,127,254,86,78,38,0,130,60,66,254,203,30,45,255,46,196,122,1,249,53,162,255,136,143,103,254,215,210,114,0,231,7,160,254,169,152,42,255,111,45,246,0,142,131,135,255,131,71,204,255,36,226,11,0,0,28,242,255,225,138,213,255,247,46,216,254,245,3,183,0,108,252,74,1,206,26,48,255,205,54,246,255,211,198,36,255,121,35,50,0,52,216,202,255,38,139,129,254,242,73,148,0,67,231,141,255,42,47,204,0,78,116,25,1,4,225,191,255,6,147,228,0,58,88,177,0,122,165,229,255,252,83,201,255,224,167,96,1,177,184,158,255,242,105,179,1,248,198,240,0,133,66,203,1,254,36,47,0,45,24,115,255,119,62,254,0,196,225,186,254,123,141,172,0,26,85,41,255,226,111,183,0,213,231,151,0,4,59,7,255,238,138,148,0,66,147,33,255,31,246,141,255,209,141,116,255,104,112,31,0,88,161,172,0,83,215,230,254,47,111,151,0,45,38,52,1,132,45,204,0,138,128,109,254,233,117,134,255,243,190,173,254,241,236,240,0,82,127,236,254,40,223,161,255,110,182,225,255,123,174,239,0,135,242,145,1,51,209,154,0,150,3,115,254,217,164,252,255,55,156,69,1,84,94,255,255,232,73,45,1,20,19,212,255,96,197,59,254,96,251,33,0,38,199,73,1,64,172,247,255,117,116,56,255,228,17,18,0,62,138,103,1,246,229,164,255,244,118,201,254,86,32,159,255,109,34,137,1,85,211,186,0,10,193,193,254,122,194,177,0,122,238,102,255,162,218,171,0,108,217,161,1,158,170,34,0,176,47,155,1,181,228,11,255,8,156,0,0,16,75,93,0,206,98,255,1,58,154,35,0,12,243,184,254,67,117,66,255,230,229,123,0,201,42,110,0,134,228,178,254,186,108,118,255,58,19,154,255,82,169,62,255],"i8",4,e.h+20480),K([114,143,115,1,239,196,50,255,173,48,193,255,147,2,84,255,150,134,147,254,95,232,73,0,109,227,52,254,191,137,10,0,40,204,30,254,76,52,97,255,164,235,126,0,254,124,188,0,74,182,21,1,121,29,35,255,241,30,7,254,85,218,214,255,7,84,150,254,81,27,117,255,160,159,152,254,66,24,221,255,227,10,60,1,141,135,102,0,208,189,150,1,117,179,92,0,132,22,136,255,120,199,28,0,21,129,79,254,182,9,65,0,218,163,169,0,246,147,198,255,107,38,144,1,78,175,205,255,214,5,250,254,47,88,29,255,164,47,204,255,43,55,6,255,131,134,207,254,116,100,214,0,96,140,75,1,106,220,144,0,195,32,28,1,172,81,5,255,199,179,52,255,37,84,203,0,170,112,174,0,11,4,91,0,69,244,27,1,117,131,92,0,33,152,175,255,140,153,107,255,251,135,43,254,87,138,4,255,198,234,147,254,121,152,84,255,205,101,155,1,157,9,25,0,72,106,17,254,108,153,0,255,189,229,186,0,193,8,176,255,174,149,209,0,238,130,29,0,233,214,126,1,61,226,102,0,57,163,4,1,198,111,51,255,45,79,78,1,115,210,10,255,218,9,25,255,158,139,198,255,211,82,187,254,80,133,83,0,157,129,230,1,243,133,134,255,40,136,16,0,77,107,79,255,183,85,92,1,177,204,202,0,163,71,147,255,152,69,190,0,172,51,188,1,250,210,172,255,211,242,113,1,89,89,26,255,64,66,111,254,116,152,42,0,161,39,27,255,54,80,254,0,106,209,115,1,103,124,97,0,221,230,98,255,31,231,6,0,178,192,120,254,15,217,203,255,124,158,79,0,112,145,247,0,92,250,48,1,163,181,193,255,37,47,142,254,144,189,165,255,46,146,240,0,6,75,128,0,41,157,200,254,87,121,213,0,1,113,236,0,5,45,250,0,144,12,82,0,31,108,231,0,225,239,119,255,167,7,189,255,187,228,132,255,110,189,34,0,94,44,204,1,162,52,197,0,78,188,241,254,57,20,141,0,244,146,47,1,206,100,51,0,125,107,148,254,27,195,77,0,152,253,90,1,7,143,144,255,51,37,31,0,34,119,38,255,7,197,118,0,153,188,211,0,151,20,116,254,245,65,52,255,180,253,110,1,47,177,209,0,161,99,17,255,118,222,202,0,125,179,252,1,123,54,126,255,145,57,191,0,55,186,121,0,10,243,138,0,205,211,229,255,125,156,241,254,148,156,185,255,227,19,188,255,124,41,32,255,31,34,206,254,17,57,83,0,204,22,37,255,42,96,98,0,119,102,184,1,3,190,28,0,110,82,218,255,200,204,192,255,201,145,118,0,117,204,146,0,132,32,98,1,192,194,121,0,106,161,248,1,237,88,124,0,23,212,26,0,205,171,90,255,248,48,216,1,141,37,230,255,124,203,0,254,158,168,30,255,214,248,21,0,112,187,7,255,75,133,239,255,74,227,243,255,250,147,70,0,214,120,162,0,167,9,179,255,22,158,18,0,218,77,209,1,97,109,81,255,244,33,179,255,57,52,57,255,65,172,210,255,249,71,209,255,142,169,238,0,158,189,153,255,174,254,103,254,98,33,14,0,141,76,230,255,113,139,52,255,15,58,212,0,168,215,201,255,248,204,215,1,223,68,160,255,57,154,183,254,47,231,121,0,106,166,137,0,81,136,138,0,165,43,51,0,231,139,61,0,57,95,59,254,118,98,25,255,151,63,236,1,94,190,250,255,169,185,114,1,5,250,58,255,75,105,97,1,215,223,134,0,113,99,163,1,128,62,112,0,99,106,147,0,163,195,10,0,33,205,182,0,214,14,174,255,129,38,231,255,53,182,223,0,98,42,159,255,247,13,40,0,188,210,177,1,6,21,0,255,255,61,148,254,137,45,129,255,89,26,116,254,126,38,114,0,251,50,242,254,121,134,128,255,204,249,167,254,165,235,215,0,202,177,243,0,133,141,62,0,240,130,190,1,110,175,255,0,0,20,146,1,37,210,121,255,7,39,130,0,142,250,84,255,141,200,207,0,9,95,104,255,11,244,174,0,134,232,126,0,167,1,123,254,16,193,149,255,232,233,239,1,213,70,112,255,252,116,160,254,242,222,220,255,205,85,227,0,7,185,58,0,118,247,63,1,116,77,177,255,62,245,200,254,63,18,37,255,107,53,232,254,50,221,211,0,162,219,7,254,2,94,43,0,182,62,182,254,160,78,200,255,135,140,170,0,235,184,228,0,175,53,138,254,80,58,77,255,152,201,2,1,63,196,34,0,5,30,184,0,171,176,154,0,121,59,206,0,38,99,39,0,172,80,77,254,0,134,151,0,186,33,241,254,94,253,223,255,44,114,252,0,108,126,57,255,201,40,13,255,39,229,27,255,39,239,23,1,151,121,51,255,153,150,248,0,10,234,174,255,118,246,4,254,200,245,38,0,69,161,242,1,16,178,150,0,113,56,130,0,171,31,105,0,26,88,108,255,49,42,106,0,251,169,66,0,69,93,149,0,20,57,254,0,164,25,111,0,90,188,90,255,204,4,197,0,40,213,50,1,212,96,132,255,88,138,180,254,228,146,124,255,184,246,247,0,65,117,86,255,253,102,210,254,254,121,36,0,137,115,3,255,60,24,216,0,134,18,29,0,59,226,97,0,176,142,71,0,7,209,161,0,189,84,51,254,155,250,72,0,213,84,235,255,45,222,224,0,238,148,143,255,170,42,53,255,78,167,117,0,186,0,40,255,125,177,103,255,69,225,66,0,227,7,88,1,75,172,6,0,169,45,227,1,16,36,70,255,50,2,9,255,139,193,22,0,143,183,231,254,218,69,50,0,236,56,161,1,213,131,42,0,138,145,44,254,136,229,40,255,49,63,35,255,61,145,245,255,101,192,2,254,232,167,113,0,152,104,38,1,121,185,218,0,121,139,211,254,119,240,35,0,65,189,217,254,187,179,162,255,160,187,230,0,62,248,14,255,60,78,97,0,255,247,163,255,225,59,91,255,107,71,58,255,241,47,33,1,50,117,236,0,219,177,63,254,244,90,179,0,35,194,215,255,189,67,50,255,23,135,129,0,104,189,37,255,185,57,194,0,35,62,231,255,220,248,108,0,12,231,178,0,143,80,91,1,131,93,101,255,144,39,2,1,255,250,178,0,5,17,236,254,139,32,46,0,204,188,38,254,245,115,52,255,191,113,73,254,191,108,69,255,22,69,245,1,23,203,178,0,170,99,170,0,65,248,111,0,37,108,153,255,64,37,69,0,0,88,62,254,89,148,144,255,191,68,224,1,241,39,53,0,41,203,237,255,145,126,194,255,221,42,253,255,25,99,151,0,97,253,223,1,74,115,49,255,6,175,72,255,59,176,203,0,124,183,249,1,228,228,99,0,129,12,207,254,168,192,195,255,204,176,16,254,152,234,171,0,77,37,85,255,33,120,135,255,142,194,227,1,31,214,58,0,213,187,125,255,232,46,60,255,190,116,42,254,151,178,19,255,51,62,237,254,204,236,193,0,194,232,60,0,172,34,157,255,189,16,184,254,103,3,95,255,141,233,36,254,41,25,11,255,21,195,166,0,118,245,45,0,67,213,149,255,159,12,18,255,187,164,227,1,160,25,5,0,12,78,195,1,43,197,225,0,48,142,41,254,196,155,60,255,223,199,18,1,145,136,156,0,252,117,169,254,145,226,238,0,239,23,107,0,109,181,188,255,230,112,49,254,73,170,237,255,231,183,227,255,80,220,20,0,194,107,127,1,127,205,101,0,46,52,197,1,210,171,36,255,88,3,90,255,56,151,141,0,96,187,255,255,42,78,200,0,254,70,70,1,244,125,168,0,204,68,138,1,124,215,70,0,102,66,200,254,17,52,228,0,117,220,143,254,203,248,123,0,56,18,174,255,186,151,164,255,51,232,208,1,160,228,43,255,249,29,25,1,68,190,63,0,244,126,0,0,164,2,0,0,157,129,0,0,11,0,0,0,173,129,0,0,181,129,0,0,199,129,0,0,223,129,0,0,243,129,0,0,6,130,0,0,22,130,0,0,41,130,0,0,56,130,0,0,72,130,0,0,95,130,0,0,112,130,0,0,128,130,0,0,150,130,0,0,176,130,0,0,164,2,0,0,204,130,0,0,6,0,0,0,152,47,138,66,145,68,55,113,207,251,192,181,165,219,181,233,91,194,86,57,241,17,241,89,164,130,63,146,213,94,28,171,152,170,7,216,1,91,131,18,190,133,49,36,195,125,12,85,116,93,190,114,254,177,222,128,167,6,220,155,116,241,155,193,193,105,155,228,134,71,190,239,198,157,193,15,204,161,12,36,111,44,233,45,170,132,116,74,220,169,176,92,218,136,249,118,82,81,62,152,109,198,49,168,200,39,3,176,199,127,89,191,243,11,224,198,71,145,167,213,81,99,202,6,103,41,41,20,133,10,183,39,56,33,27,46,252,109,44,77,19,13,56,83,84,115,10,101,187,10,106,118,46,201,194,129,133,44,114,146,161,232,191,162,75,102,26,168,112,139,75,194,163,81,108,199,25,232,146,209,36,6,153,214,133,53,14,244,112,160,106,16,22,193,164,25,8,108,55,30,76,119,72,39,181,188,176,52,179,12,28,57,74,170,216,78,79,202,156,91,243,111,46,104,238,130,143,116,111,99,165,120,20,120,200,132,8,2,199,140,250,255,190,144,235,108,80,164,247,163,249,190,242,120,113,198,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,16,0,0,0,32,0,0,0,64,0,0,0,128,0,0,0,27,0,0,0,54,0,0,0,108,0,0,0,216,0,0,0,171,0,0,0,77,0,0,0,154,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,43,47,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,62,255,255,255,63,52,53,54,55,56,57,58,59,60,61,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255,255,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,255,255,255,255,255,79,76,77,95,82,79,79,84,0,79,76,77,95,82,65,84,67,72,69,84,0,79,76,77,95,75,69,89,83,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,34,99,117,114,118,101,50,53,53,49,57,34,58,0,34,101,100,50,53,53,49,57,34,58,0,77,69,71,79,76,77,95,75,69,89,83,0,0,1,2,3,83,85,67,67,69,83,83,0,78,79,84,95,69,78,79,85,71,72,95,82,65,78,68,79,77,0,79,85,84,80,85,84,95,66,85,70,70,69,82,95,84,79,79,95,83,77,65,76,76,0,66,65,68,95,77,69,83,83,65,71,69,95,86,69,82,83,73,79,78,0,66,65,68,95,77,69,83,83,65,71,69,95,70,79,82,77,65,84,0,66,65,68,95,77,69,83,83,65,71,69,95,77,65,67,0,66,65,68,95,77,69,83,83,65,71,69,95,75,69,89,95,73,68,0,73,78,86,65,76,73,68,95,66,65,83,69,54,52,0,66,65,68,95,65,67,67,79,85,78,84,95,75,69,89,0,85,78,75,78,79,87,78,95,80,73,67,75,76,69,95,86,69,82,83,73,79,78,0,67,79,82,82,85,80,84,69,68,95,80,73,67,75,76,69,0,66,65,68,95,83,69,83,83,73,79,78,95,75,69,89,0,85,78,75,78,79,87,78,95,77,69,83,83,65,71,69,95,73,78,68,69,88,0,66,65,68,95,76,69,71,65,67,89,95,65,67,67,79,85,78,84,95,80,73,67,75,76,69,0,66,65,68,95,83,73,71,78,65,84,85,82,69,0,85,78,75,78,79,87,78,95,69,82,82,79,82,0,80,105,99,107,108,101,0,99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22,0,0,0,0,0,0,2,3,9,11,13,14,4,6,18,22,26,28,6,5,27,29,23,18,8,12,36,44,52,56,10,15,45,39,57,54,12,10,54,58,46,36,14,9,63,49,35,42,16,24,72,88,104,112,18,27,65,83,101,126,20,30,90,78,114,108,22,29,83,69,127,98,24,20,108,116,92,72,26,23,101,127,81,70,28,18,126,98,70,84,30,17,119,105,75,90,32,48,144,176,208,224,34,51,153,187,221,238,36,54,130,166,202,252,38,53,139,173,199,242,40,60,180,156,228,216,42,63,189,151,233,214,44,58,166,138,254,196,46,57,175,129,243,202,48,40,216,232,184,144,50,43,209,227,181,158,52,46,202,254,162,140,54,45,195,245,175,130,56,36,252,196,140,168,58,39,245,207,129,166,60,34,238,210,150,180,62,33,231,217,155,186,64,96,59,123,187,219,66,99,50,112,182,213,68,102,41,109,161,199,70,101,32,102,172,201,72,108,31,87,143,227,74,111,22,92,130,237,76,106,13,65,149,255,78,105,4,74,152,241,80,120,115,35,211,171,82,123,122,40,222,165,84,126,97,53,201,183,86,125,104,62,196,185,88,116,87,15,231,147,90,119,94,4,234,157,92,114,69,25,253,143,94,113,76,18,240,129,96,80,171,203,107,59,98,83,162,192,102,53,100,86,185,221,113,39,102,85,176,214,124,41,104,92,143,231,95,3,106,95,134,236,82,13,108,90,157,241,69,31,110,89,148,250,72,17,112,72,227,147,3,75,114,75,234,152,14,69,116,78,241,133,25,87,118,77,248,142,20,89,120,68,199,191,55,115,122,71,206,180,58,125,124,66,213,169,45,111,126,65,220,162,32,97,128,192,118,246,109,173,130,195,127,253,96,163,132,198,100,224,119,177,134,197,109,235,122,191,136,204,82,218,89,149,138,207,91,209,84,155,140,202,64,204,67,137,142,201,73,199,78,135,144,216,62,174,5,221,146,219,55,165,8,211,148,222,44,184,31,193,150,221,37,179,18,207,152,212,26,130,49,229,154,215,19,137,60,235,156,210,8,148,43,249,158,209,1,159,38,247,160,240,230,70,189,77,162,243,239,77,176,67,164,246,244,80,167,81,166,245,253,91,170,95,168,252,194,106,137,117,170,255,203,97,132,123,172,250,208,124,147,105,174,249,217,119,158,103,176,232,174,30,213,61,178,235,167,21,216,51,180,238,188,8,207,33,182,237,181,3,194,47,184,228,138,50,225,5,186,231,131,57,236,11,188,226,152,36,251,25,190,225,145,47,246,23,192,160,77,141,214,118,194,163,68,134,219,120,196,166,95,155,204,106,198,165,86,144,193,100,200,172,105,161,226,78,202,175,96,170,239,64,204,170,123,183,248,82,206,169,114,188,245,92,208,184,5,213,190,6,210,187,12,222,179,8,212,190,23,195,164,26,214,189,30,200,169,20,216,180,33,249,138,62,218,183,40,242,135,48,220,178,51,239,144,34,222,177,58,228,157,44,224,144,221,61,6,150,226,147,212,54,11,152,228,150,207,43,28,138,230,149,198,32,17,132,232,156,249,17,50,174,234,159,240,26,63,160,236,154,235,7,40,178,238,153,226,12,37,188,240,136,149,101,110,230,242,139,156,110,99,232,244,142,135,115,116,250,246,141,142,120,121,244,248,132,177,73,90,222,250,135,184,66,87,208,252,130,163,95,64,194,254,129,170,84,77,204,27,155,236,247,218,65,25,152,229,252,215,79,31,157,254,225,192,93,29,158,247,234,205,83,19,151,200,219,238,121,17,148,193,208,227,119,23,145,218,205,244,101,21,146,211,198,249,107,11,131,164,175,178,49,9,128,173,164,191,63,15,133,182,185,168,45,13,134,191,178,165,35,3,143,128,131,134,9,1,140,137,136,139,7,7,137,146,149,156,21,5,138,155,158,145,27,59,171,124,71,10,161,57,168,117,76,7,175,63,173,110,81,16,189,61,174,103,90,29,179,51,167,88,107,62,153,49,164,81,96,51,151,55,161,74,125,36,133,53,162,67,118,41,139,43,179,52,31,98,209,41,176,61,20,111,223,47,181,38,9,120,205,45,182,47,2,117,195,35,191,16,51,86,233,33,188,25,56,91,231,39,185,2,37,76,245,37,186,11,46,65,251,91,251,215,140,97,154,89,248,222,135,108,148,95,253,197,154,123,134,93,254,204,145,118,136,83,247,243,160,85,162,81,244,250,171,88,172,87,241,225,182,79,190,85,242,232,189,66,176,75,227,159,212,9,234,73,224,150,223,4,228,79,229,141,194,19,246,77,230,132,201,30,248,67,239,187,248,61,210,65,236,178,243,48,220,71,233,169,238,39,206,69,234,160,229,42,192,123,203,71,60,177,122,121,200,78,55,188,116,127,205,85,42,171,102,125,206,92,33,166,104,115,199,99,16,133,66,113,196,106,27,136,76,119,193,113,6,159,94,117,194,120,13,146,80,107,211,15,100,217,10,105,208,6,111,212,4,111,213,29,114,195,22,109,214,20,121,206,24,99,223,43,72,237,50,97,220,34,67,224,60,103,217,57,94,247,46,101,218,48,85,250,32,155,91,154,1,183,236,153,88,147,10,186,226,159,93,136,23,173,240,157,94,129,28,160,254,147,87,190,45,131,212,145,84,183,38,142,218,151,81,172,59,153,200,149,82,165,48,148,198,139,67,210,89,223,156,137,64,219,82,210,146,143,69,192,79,197,128,141,70,201,68,200,142,131,79,246,117,235,164,129,76,255,126,230,170,135,73,228,99,241,184,133,74,237,104,252,182,187,107,10,177,103,12,185,104,3,186,106,2,191,109,24,167,125,16,189,110,17,172,112,30,179,103,46,157,83,52,177,100,39,150,94,58,183,97,60,139,73,40,181,98,53,128,68,38,171,115,66,233,15,124,169,112,75,226,2,114,175,117,80,255,21,96,173,118,89,244,24,110,163,127,102,197,59,68,161,124,111,206,54,74,167,121,116,211,33,88,165,122,125,216,44,86,219,59,161,122,12,55,217,56,168,113,1,57,223,61,179,108,22,43,221,62,186,103,27,37,211,55,133,86,56,15,209,52,140,93,53,1,215,49,151,64,34,19,213,50,158,75,47,29,203,35,233,34,100,71,201,32,224,41,105,73,207,37,251,52,126,91,205,38,242,63,115,85,195,47,205,14,80,127,193,44,196,5,93,113,199,41,223,24,74,99,197,42,214,19,71,109,251,11,49,202,220,215,249,8,56,193,209,217,255,13,35,220,198,203,253,14,42,215,203,197,243,7,21,230,232,239,241,4,28,237,229,225,247,1,7,240,242,243,245,2,14,251,255,253,235,19,121,146,180,167,233,16,112,153,185,169,239,21,107,132,174,187,237,22,98,143,163,181,227,31,93,190,128,159,225,28,84,181,141,145,231,25,79,168,154,131,229,26,70,163,151,141,82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],"i8",4,e.h+30720);var kb=J,J=J+16;a._i64Subtract=lb,a._i64Add=mb,a._bitshift64Ashr=nb,a._memset=ob,a._bitshift64Lshr=pb,a._bitshift64Shl=qb,a._memcpy=rb;var ab=H=e.q(J),Xa=!0,za=ab+bb,E=e.q(za),sb=K([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",3);a.t={Math:Math,Int8Array:Int8Array,Int16Array:Int16Array,Int32Array:Int32Array,Uint8Array:Uint8Array,Uint16Array:Uint16Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array,NaN:NaN,Infinity:1/0},a.u={abort:Q,assert:z,invoke_ii:function(e,r){try{return a.dynCall_ii(e,r)}catch(e){if("number"!=typeof e&&"longjmp"!==e)throw e;d.setThrew(1,0)}},invoke_iiiiiiiiii:function(e,r,n,i,t,o,u,s,_,l){try{return a.dynCall_iiiiiiiiii(e,r,n,i,t,o,u,s,_,l)}catch(e){if("number"!=typeof e&&"longjmp"!==e)throw e;d.setThrew(1,0)}},invoke_iii:function(e,r,n){try{return a.dynCall_iii(e,r,n)}catch(e){if("number"!=typeof e&&"longjmp"!==e)throw e;d.setThrew(1,0)}},_pthread_self:function(){return 0},_abort:function(){a.abort()},___setErrNo:Na,_llvm_stacksave:wa,_sbrk:ja,_time:function(e){var r=Date.now()/1e3|0;return e&&(D[e>>2]=r),r},_emscripten_memcpy_big:function(e,r,n){return B.set(B.subarray(r,r+n),e),e},_llvm_stackrestore:function(r){var n=wa,i=n.b[r];n.b.splice(r,1),e.d(i)},_sysconf:function(e){switch(e){case 30:return 4096;case 85:return M/4096;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"==typeof navigator&&navigator.hardwareConcurrency||1}return Na(22),-1},STACKTOP:H,STACK_MAX:za,tempDoublePtr:kb,ABORT:ka,cttz_i8:sb};var d=function(e,r,n){"use asm";var i=new e.Int8Array(n);var t=new e.Int16Array(n);var o=new e.Int32Array(n);var a=new e.Uint8Array(n);var u=new e.Uint16Array(n);var s=new e.Uint32Array(n);var _=new e.Float32Array(n);var l=new e.Float64Array(n);var f=r.STACKTOP|0;var c=r.STACK_MAX|0;var h=r.tempDoublePtr|0;var d=r.ABORT|0;var m=r.cttz_i8|0;var p=0;var b=0;var w=0;var v=0;var k=e.NaN,g=e.Infinity;var y=0,A=0,T=0,M=0,E=0.0,S=0,x=0,O=0,R=0.0;var C=0;var I=0;var L=0;var P=0;var N=0;var U=0;var F=0;var z=0;var q=0;var H=0;var j=e.Math.floor;var D=e.Math.abs;var V=e.Math.sqrt;var B=e.Math.pow;var G=e.Math.cos;var K=e.Math.sin;var W=e.Math.tan;var Y=e.Math.acos;var J=e.Math.asin;var X=e.Math.atan;var Q=e.Math.atan2;var Z=e.Math.exp;var $=e.Math.log;var ee=e.Math.ceil;var re=e.Math.imul;var ne=e.Math.min;var ie=e.Math.clz32;var te=r.abort;var oe=r.assert;var ae=r.invoke_ii;var ue=r.invoke_iiiiiiiiii;var se=r.invoke_iii;var _e=r._pthread_self;var le=r._abort;var fe=r.___setErrNo;var ce=r._llvm_stacksave;var he=r._sbrk;var de=r._time;var me=r._emscripten_memcpy_big;var pe=r._llvm_stackrestore;var be=r._sysconf;var we=0.0;function ve(e){e=e|0;var r=0;r=f;f=f+e|0;f=f+15&-16;return r|0}function ke(){return f|0}function ge(e){e=e|0;f=e}function ye(e,r){e=e|0;r=r|0;f=e;c=r}function Ae(e,r){e=e|0;r=r|0;if(!p){p=e;b=r}}function Te(e){e=e|0;i[h>>0]=i[e>>0];i[h+1>>0]=i[e+1>>0];i[h+2>>0]=i[e+2>>0];i[h+3>>0]=i[e+3>>0]}function Me(e){e=e|0;i[h>>0]=i[e>>0];i[h+1>>0]=i[e+1>>0];i[h+2>>0]=i[e+2>>0];i[h+3>>0]=i[e+3>>0];i[h+4>>0]=i[e+4>>0];i[h+5>>0]=i[e+5>>0];i[h+6>>0]=i[e+6>>0];i[h+7>>0]=i[e+7>>0]}function Ee(e){e=e|0;C=e}function Se(){return C|0}function xe(e){e=e|0;e=e+2|0;return(((e>>>0)/3|0)<<2|((e>>>0)%3|0))+-2|0}function Oe(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,o=0,u=0,s=0,_=0;u=(r>>>0)%3|0;t=e+(r-u)|0;if((u|0)==(r|0)){u=n;t=e}else{o=e;do{u=a[o>>0]|0;s=u<<8|(a[o+1>>0]|0);_=a[o+2>>0]|0;o=o+3|0;i[n+3>>0]=i[32900+(_&63)>>0]|0;i[n+2>>0]=i[32900+((s<<8|_)>>>6&63)>>0]|0;i[n+1>>0]=i[32900+(s>>>4&63)>>0]|0;i[n>>0]=i[32900+(u>>>2)>>0]|0;n=n+4|0}while((o|0)!=(t|0));u=n}n=e+r|0;if((n|0)==(t|0)){_=u;return _|0}o=a[t>>0]|0;if((n-t|0)==2){n=a[t+1>>0]|0;i[u+2>>0]=i[32900+(n<<2&60)>>0]|0;t=u+3|0;n=(n|o<<8)>>>4}else{t=u+2|0;n=o<<4}i[u+1>>0]=i[32900+(n&63)>>0]|0;i[u>>0]=i[32900+(n>>>6)>>0]|0;_=t;return _|0}function Re(e){e=e|0;if((e&3|0)==1){e=-1;return e|0}e=e+2|0;e=(e&3)+-2+((e>>>2)*3|0)|0;return e|0}function Ce(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,o=0,u=0,s=0,_=0,l=0,f=0;_=r&-4;o=e+_|0;if(!_)u=e;else{_=(r+-4|0)>>>2;u=(_*3|0)+3|0;_=(_<<2)+4|0;t=n;s=e;while(1){l=a[32964+((a[s+1>>0]|0)&127)>>0]|0|(a[32964+((a[s>>0]|0)&127)>>0]|0)<<6;f=l<<6|(a[32964+((a[s+2>>0]|0)&127)>>0]|0);i[t+2>>0]=f<<6|(a[32964+((a[s+3>>0]|0)&127)>>0]|0);s=s+4|0;i[t+1>>0]=f>>>2;i[t>>0]=l>>>4;if((s|0)==(o|0))break;else t=t+3|0}n=n+u|0;u=e+_|0}t=e+r|0;if((t|0)==(u|0))return t|0;o=a[32964+((a[u+1>>0]|0)&127)>>0]|0|(a[32964+((a[u>>0]|0)&127)>>0]|0)<<6;if((t-u|0)==3)i[n+1>>0]=(a[32964+((a[u+2>>0]|0)&127)>>0]|0|o<<6)>>>2;i[n>>0]=o>>>4;return t|0}function Ie(e){e=e|0;e=e+2|0;return(((e>>>0)/3|0)<<2|((e>>>0)%3|0))+-2|0}function Le(e,r,n){e=e|0;r=r|0;n=n|0;return(Oe(e,r,n)|0)-n|0}function Pe(e){e=e|0;if((e&3|0)==1){e=-1;return e|0}e=e+2|0;e=(e&3)+-2+((e>>>2)*3|0)|0;return e|0}function Ne(e,r,n){e=e|0;r=r|0;n=n|0;Ce(e,r,n)|0;if((r&3|0)==1){n=-1;return n|0}n=r+2|0;n=(n&3)+-2+((n>>>2)*3|0)|0;return n|0}function Ue(e,r){e=e|0;r=r|0;i[e+3>>0]=r;i[e+2>>0]=r>>>8;i[e+1>>0]=r>>>16;i[e>>0]=r>>>24;return e+4|0}function Fe(e,r,n){e=e|0;r=r|0;n=n|0;var i=0;o[n>>2]=0;i=e+4|0;if(i>>>0>r>>>0){n=r;return n|0}o[n>>2]=0;r=(a[e>>0]|0)<<8;o[n>>2]=r;r=(a[e+1>>0]|0|r)<<8;o[n>>2]=r;r=(a[e+2>>0]|0|r)<<8;o[n>>2]=r;o[n>>2]=a[e+3>>0]|0|r;n=i;return n|0}function ze(e,r){e=e|0;r=r|0;i[e>>0]=r&1;return e+1|0}function qe(e,r,n){e=e|0;r=r|0;n=n|0;if((e|0)==(r|0)){n=e;return n|0}i[n>>0]=(i[e>>0]|0)!=0&1;n=e+1|0;return n|0}function He(e,r,n){e=e|0;r=r|0;n=n|0;bo(e|0,r|0,n|0)|0;return e+n|0}function je(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0;t=e+i|0;if(t>>>0>r>>>0){e=r;return e|0}bo(n|0,e|0,i|0)|0;e=t;return e|0}function De(e){e=e|0;return 32}function Ve(e,r){e=e|0;r=r|0;var n=0,t=0;t=e;n=t+32|0;do{i[t>>0]=i[r>>0]|0;t=t+1|0;r=r+1|0}while((t|0)<(n|0));return e+32|0}function Be(e,r,n){e=e|0;r=r|0;n=n|0;var t=0;t=e+32|0;if(t>>>0>r>>>0){t=r;return t|0}r=e;e=n+32|0;do{i[n>>0]=i[r>>0]|0;n=n+1|0;r=r+1|0}while((n|0)<(e|0));return t|0}function Ge(e){e=e|0;return 64}function Ke(e,r){e=e|0;r=r|0;var n=0,t=0,o=0;n=e;t=r;o=n+32|0;do{i[n>>0]=i[t>>0]|0;n=n+1|0;t=t+1|0}while((n|0)<(o|0));n=e+32|0;t=r+32|0;o=n+32|0;do{i[n>>0]=i[t>>0]|0;n=n+1|0;t=t+1|0}while((n|0)<(o|0));return e+64|0}function We(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,o=0,a=0,u=0;t=e+32|0;if(t>>>0>r>>>0)t=r;else{u=n;a=u+32|0;do{i[u>>0]=i[e>>0]|0;u=u+1|0;e=e+1|0}while((u|0)<(a|0))}o=t+32|0;if(o>>>0>r>>>0){u=r;return u|0}u=n+32|0;e=t;a=u+32|0;do{i[u>>0]=i[e>>0]|0;u=u+1|0;e=e+1|0}while((u|0)<(a|0));u=o;return u|0}function Ye(e){e=e|0;return 32}function Je(e,r){e=e|0;r=r|0;var n=0,t=0;t=e;n=t+32|0;do{i[t>>0]=i[r>>0]|0;t=t+1|0;r=r+1|0}while((t|0)<(n|0));return e+32|0}function Xe(e,r,n){e=e|0;r=r|0;n=n|0;var t=0;t=e+32|0;if(t>>>0>r>>>0){t=r;return t|0}r=e;e=n+32|0;do{i[n>>0]=i[r>>0]|0;n=n+1|0;r=r+1|0}while((n|0)<(e|0));return t|0}function Qe(e){e=e|0;return 96}function Ze(e,r){e=e|0;r=r|0;var n=0,t=0,o=0;n=e;t=r;o=n+32|0;do{i[n>>0]=i[t>>0]|0;n=n+1|0;t=t+1|0}while((n|0)<(o|0));n=e+32|0;t=r+32|0;o=n+64|0;do{i[n>>0]=i[t>>0]|0;n=n+1|0;t=t+1|0}while((n|0)<(o|0));return e+96|0}function $e(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,o=0,a=0,u=0;t=e+32|0;if(t>>>0>r>>>0)t=r;else{u=n;a=u+32|0;do{i[u>>0]=i[e>>0]|0;u=u+1|0;e=e+1|0}while((u|0)<(a|0))}o=t+64|0;if(o>>>0>r>>>0){u=r;return u|0}u=n+32|0;e=t;a=u+64|0;do{i[u>>0]=i[e>>0]|0;u=u+1|0;e=e+1|0}while((u|0)<(a|0));u=o;return u|0}function er(e,r){e=e|0;r=r|0;i[e+3>>0]=r;i[e+2>>0]=r>>>8;i[e+1>>0]=r>>>16;i[e>>0]=r>>>24;return e+4|0}function rr(e,r,n){e=e|0;r=r|0;n=n|0;var i=0;o[n>>2]=0;i=e+4|0;if(i>>>0>r>>>0){n=r;return n|0}o[n>>2]=0;r=(a[e>>0]|0)<<8;o[n>>2]=r;r=(a[e+1>>0]|0|r)<<8;o[n>>2]=r;r=(a[e+2>>0]|0|r)<<8;o[n>>2]=r;o[n>>2]=a[e+3>>0]|0|r;n=i;return n|0}function nr(e,r){e=e|0;r=r|0;i[e>>0]=(r|0)!=0&1;return e+1|0}function ir(e,r,n){e=e|0;r=r|0;n=n|0;if((e|0)==(r|0)){n=e;return n|0}i[n>>0]=(i[e>>0]|0)!=0&1;n=e+1|0;return n|0}function tr(e,r,n){e=e|0;r=r|0;n=n|0;bo(e|0,r|0,n|0)|0;return e+n|0}function or(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0;t=e+i|0;if(t>>>0>r>>>0){e=r;return e|0}bo(n|0,e|0,i|0)|0;e=t;return e|0}function ar(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0,o=0,a=0;if(r>>>0>127){o=r;t=1;while(1){t=t+1|0;if(o>>>0>16383)o=o>>>7;else break}}else t=1;if(e>>>0>127){o=1;while(1){o=o+1|0;if(e>>>0>16383)e=e>>>7;else break}}else o=1;if(n>>>0>127){a=n;e=1;while(1){e=e+1|0;if(a>>>0>16383)a=a>>>7;else break}}else e=1;return r+4+n+i+t+o+e|0}function ur(e,r,n,t,a,u){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;u=u|0;var s=0,_=0;i[u>>0]=r;r=u+2|0;i[u+1>>0]=10;if(t>>>0>127){s=t;while(1){_=r+1|0;i[r>>0]=s|128;u=s>>>7;if(s>>>0>16383){r=_;s=u}else{r=_;break}}}else u=t;_=r+1|0;i[r>>0]=u;o[e>>2]=_;t=_+t|0;r=t+1|0;i[t>>0]=16;if(n>>>0>127){s=n;while(1){u=r+1|0;i[r>>0]=s|128;n=s>>>7;if(s>>>0>16383){r=u;s=n}else break}}else u=r;i[u>>0]=n;s=e+4|0;r=u+2|0;i[u+1>>0]=34;if(a>>>0>127)u=r;else{_=a;t=r;_=_&255;e=t+1|0;i[t>>0]=_;o[s>>2]=e;return}while(1){r=u+1|0;i[u>>0]=a|128;n=a>>>7;if(a>>>0>16383){u=r;a=n}else break}t=n&255;e=r+1|0;i[r>>0]=t;o[s>>2]=e;return}function sr(e,r,n,t){e=e|0;r=r|0;n=n|0;t=t|0;var u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0;l=r+n+(0-t)|0;o[e+8>>2]=r;o[e+12>>2]=n;f=e+1|0;i[f>>0]=0;c=e+16|0;h=e+20|0;d=e+24|0;m=e+28|0;o[c>>2]=0;o[c+4>>2]=0;o[c+8>>2]=0;o[c+12>>2]=0;if(n>>>0<t>>>0|(l|0)==(r|0))return;t=r+1|0;i[e>>0]=i[r>>0]|0;if((t|0)==(l|0))return;_=l;s=e+4|0;e:while(1){if((i[t>>0]|0)==10){u=t+1|0;n=u;while(1){if((n|0)==(l|0)){r=l;break}r=n+1|0;if((i[n>>0]|0)>-1)break;else n=r}if((r|0)!=(u|0)){e=r;n=0;do{e=e+-1|0;n=a[e>>0]&127|n<<7}while((e|0)!=(u|0));if(n>>>0>(_-r|0)>>>0){n=44;break}}else n=0;o[c>>2]=r;o[h>>2]=n;n=r+n|0}else n=t;if((n|0)==(l|0)){n=44;break}if((i[n>>0]|0)==16){u=n+1|0;r=u;while(1){if((r|0)==(l|0)){n=l;break}n=r+1|0;if((i[r>>0]|0)>-1)break;else r=n}if((n|0)==(u|0))r=0;else{e=n;r=0;do{e=e+-1|0;r=a[e>>0]&127|r<<7}while((e|0)!=(u|0))}o[s>>2]=r;i[f>>0]=1}if((n|0)==(l|0)){n=44;break}if((i[n>>0]|0)==34){u=n+1|0;n=u;while(1){if((n|0)==(l|0)){r=l;break}r=n+1|0;if((i[n>>0]|0)>-1)break;else n=r}if((r|0)!=(u|0)){e=r;n=0;do{e=e+-1|0;n=a[e>>0]&127|n<<7}while((e|0)!=(u|0));if(n>>>0>(_-r|0)>>>0){n=44;break}}else n=0;o[d>>2]=r;o[m>>2]=n;n=r+n|0}r:do{if(!((t|0)!=(n|0)|(n|0)==(l|0))){switch(a[t>>0]&7|0){case 0:{n=t;while(1){if((n|0)==(l|0)){t=l;break}t=n+1|0;if((i[n>>0]|0)>-1)break;else n=t}while(1){if((t|0)==(l|0)){n=44;break e}n=t+1|0;if((i[t>>0]|0)>-1)break r;else t=n}}case 2:break;default:{n=44;break e}}while(1){if((t|0)==(l|0)){n=l;break}n=t+1|0;if((i[t>>0]|0)>-1)break;else t=n}t=n;while(1){if((t|0)==(l|0)){r=l;break}r=t+1|0;if((i[t>>0]|0)>-1)break;else t=r}if((r|0)!=(n|0)){e=r;t=0;do{e=e+-1|0;t=a[e>>0]&127|t<<7}while((e|0)!=(n|0));n=t;if(n>>>0>(_-r|0)>>>0){n=44;break e}else n=r+n|0}}}while(0);if((n|0)==(l|0)){n=44;break}else t=n}if((n|0)==44)return}function _r(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0,o=0,a=0,u=0,s=0;if(e>>>0>127){o=e;t=1;while(1){t=t+1|0;if(o>>>0>16383)o=o>>>7;else break}}else t=1;if(r>>>0>127){a=r;o=1;while(1){o=o+1|0;if(a>>>0>16383)a=a>>>7;else break}}else o=1;if(n>>>0>127){u=n;a=1;while(1){a=a+1|0;if(u>>>0>16383)u=u>>>7;else break}}else a=1;if(i>>>0>127){s=i;u=1;while(1){u=u+1|0;if(s>>>0>16383)s=s>>>7;else break}}else u=1;return e+5+r+n+i+t+o+a+u|0}function lr(e,r,n,t,a,u,s){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;u=u|0;s=s|0;var _=0,l=0,f=0;i[s>>0]=r;f=e+8|0;r=s+2|0;i[s+1>>0]=10;if(a>>>0>127){_=a;while(1){l=r+1|0;i[r>>0]=_|128;s=_>>>7;if(_>>>0>16383){r=l;_=s}else{r=l;break}}}else s=a;l=r+1|0;i[r>>0]=s;o[f>>2]=l;a=l+a|0;f=e+4|0;r=a+1|0;i[a>>0]=18;if(t>>>0>127){_=t;while(1){l=r+1|0;i[r>>0]=_|128;s=_>>>7;if(_>>>0>16383){r=l;_=s}else{r=l;break}}}else s=t;a=r+1|0;i[r>>0]=s;o[f>>2]=a;t=a+t|0;r=t+1|0;i[t>>0]=26;if(n>>>0>127){_=n;while(1){l=r+1|0;i[r>>0]=_|128;s=_>>>7;if(_>>>0>16383){r=l;_=s}else{r=l;break}}}else s=n;l=r+1|0;i[r>>0]=s;o[e>>2]=l;n=l+n|0;l=e+12|0;r=n+1|0;i[n>>0]=34;if(u>>>0>127)_=r;else{t=u;n=r;t=t&255;e=n+1|0;i[n>>0]=t;o[l>>2]=e;return}while(1){r=_+1|0;i[_>>0]=u|128;s=u>>>7;if(u>>>0>16383){_=r;u=s}else break}n=s&255;e=r+1|0;i[r>>0]=n;o[l>>2]=e;return}function fr(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0;_=r+n|0;l=e+20|0;f=e+24|0;c=e+4|0;h=e+8|0;d=e+12|0;m=e+16|0;p=e+28|0;b=e+32|0;o[c>>2]=0;o[c+4>>2]=0;o[c+8>>2]=0;o[c+12>>2]=0;o[c+16>>2]=0;o[c+20>>2]=0;o[c+24>>2]=0;o[c+28>>2]=0;if(!n)return;i[e>>0]=i[r>>0]|0;if((n|0)==1)return;s=_;e=r+1|0;e:while(1){if((i[e>>0]|0)==10){u=e+1|0;n=u;while(1){if((n|0)==(_|0)){r=_;break}r=n+1|0;if((i[n>>0]|0)>-1)break;else n=r}if((r|0)!=(u|0)){t=r;n=0;do{t=t+-1|0;n=a[t>>0]&127|n<<7}while((t|0)!=(u|0));if(n>>>0>(s-r|0)>>>0){n=54;break}}else n=0;o[l>>2]=r;o[f>>2]=n;n=r+n|0}else n=e;if((n|0)==(_|0)){n=54;break}if((i[n>>0]|0)==18){u=n+1|0;n=u;while(1){if((n|0)==(_|0)){r=_;break}r=n+1|0;if((i[n>>0]|0)>-1)break;else n=r}if((r|0)!=(u|0)){t=r;n=0;do{t=t+-1|0;n=a[t>>0]&127|n<<7}while((t|0)!=(u|0));if(n>>>0>(s-r|0)>>>0){n=54;break}}else n=0;o[d>>2]=r;o[m>>2]=n;n=r+n|0}if((n|0)==(_|0)){n=54;break}if((i[n>>0]|0)==26){u=n+1|0;n=u;while(1){if((n|0)==(_|0)){r=_;break}r=n+1|0;if((i[n>>0]|0)>-1)break;else n=r}if((r|0)!=(u|0)){t=r;n=0;do{t=t+-1|0;n=a[t>>0]&127|n<<7}while((t|0)!=(u|0));if(n>>>0>(s-r|0)>>>0){n=54;break}}else n=0;o[c>>2]=r;o[h>>2]=n;n=r+n|0}if((n|0)==(_|0)){n=54;break}if((i[n>>0]|0)==34){u=n+1|0;n=u;while(1){if((n|0)==(_|0)){r=_;break}r=n+1|0;if((i[n>>0]|0)>-1)break;else n=r}if((r|0)!=(u|0)){t=r;n=0;do{t=t+-1|0;n=a[t>>0]&127|n<<7}while((t|0)!=(u|0));if(n>>>0>(s-r|0)>>>0){n=54;break}}else n=0;o[p>>2]=r;o[b>>2]=n;n=r+n|0}r:do{if(!((e|0)!=(n|0)|(n|0)==(_|0))){switch(a[e>>0]&7|0){case 0:{n=e;while(1){if((n|0)==(_|0)){e=_;break}e=n+1|0;if((i[n>>0]|0)>-1)break;else n=e}while(1){if((e|0)==(_|0)){n=54;break e}n=e+1|0;if((i[e>>0]|0)>-1)break r;else e=n}}case 2:break;default:{n=54;break e}}while(1){if((e|0)==(_|0)){n=_;break}n=e+1|0;if((i[e>>0]|0)>-1)break;else e=n}e=n;while(1){if((e|0)==(_|0)){r=_;break}r=e+1|0;if((i[e>>0]|0)>-1)break;else e=r}if((r|0)!=(n|0)){t=r;e=0;do{t=t+-1|0;e=a[t>>0]&127|e<<7}while((t|0)!=(n|0));n=e;if(n>>>0>(s-r|0)>>>0){n=54;break e}else n=r+n|0}}}while(0);if((n|0)==(_|0)){n=54;break}else e=n}if((n|0)==54)return}function cr(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0,o=0;if(e>>>0>127){t=1;while(1){t=t+1|0;if(e>>>0>16383)e=e>>>7;else break}}else t=1;if(r>>>0>127){o=r;e=1;while(1){e=e+1|0;if(o>>>0>16383)o=o>>>7;else break}}else e=1;return r+3+n+i+t+e|0}function hr(e,r,n,t,a){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;var u=0,s=0;i[t>>0]=e;u=t+2|0;i[t+1>>0]=8;if(r>>>0>127)while(1){s=u+1|0;i[u>>0]=r|128;e=r>>>7;if(r>>>0>16383){u=s;r=e}else{u=s;break}}else e=r;i[u>>0]=e;e=u+2|0;i[u+1>>0]=18;if(n>>>0>127){r=n;while(1){s=e+1|0;i[e>>0]=r|128;u=r>>>7;if(r>>>0>16383){e=s;r=u}else{e=s;break}}}else u=n;s=e+1|0;i[e>>0]=u;o[a>>2]=s;return s+n-t|0}function dr(e,r,n,t,u){e=e|0;r=r|0;n=n|0;t=t|0;u=u|0;var s=0,_=0,l=0,f=0,c=0,h=0,d=0;l=t+n|0;f=e+r+(0-l)|0;c=u+4|0;o[c>>2]=0;h=u+12|0;o[h>>2]=0;d=u+16|0;o[d>>2]=0;if(l>>>0>r>>>0|(f|0)==(e|0))return;t=e+1|0;i[u>>0]=i[e>>0]|0;e:do{if((t|0)==(f|0))n=0;else{l=f;n=0;do{if((i[t>>0]|0)==8){s=t+1|0;n=s;while(1){if((n|0)==(f|0)){r=f;break}r=n+1|0;if((i[n>>0]|0)>-1)break;else n=r}if((r|0)==(s|0))n=0;else{e=r;n=0;do{e=e+-1|0;n=a[e>>0]&127|n<<7}while((e|0)!=(s|0))}o[c>>2]=n;n=1}else r=t;if((r|0)==(f|0))break e;if((i[r>>0]|0)==18){_=r+1|0;r=_;while(1){if((r|0)==(f|0)){e=f;break}e=r+1|0;if((i[r>>0]|0)>-1)break;else r=e}if((e|0)!=(_|0)){s=e;r=0;do{s=s+-1|0;r=a[s>>0]&127|r<<7}while((s|0)!=(_|0));if(r>>>0>(l-e|0)>>>0)break e}else r=0;o[h>>2]=e;o[d>>2]=r;r=e+r|0}r:do{if(!((t|0)!=(r|0)|(r|0)==(f|0))){switch(a[t>>0]&7|0){case 0:{while(1){if((t|0)==(f|0)){r=f;break}r=t+1|0;if((i[t>>0]|0)>-1)break;else t=r}while(1){if((r|0)==(f|0))break e;t=r+1|0;if((i[r>>0]|0)>-1)break r;else r=t}}case 2:break;default:break e}while(1){if((t|0)==(f|0)){t=f;break}r=t+1|0;if((i[t>>0]|0)>-1){t=r;break}else t=r}r=t;while(1){if((r|0)==(f|0)){e=f;break}e=r+1|0;if((i[r>>0]|0)>-1)break;else r=e}if((e|0)!=(t|0)){s=e;r=0;do{s=s+-1|0;r=a[s>>0]&127|r<<7}while((s|0)!=(t|0));t=r;if(t>>>0>(l-e|0)>>>0)break e;else t=e+t|0}}else t=r}while(0)}while((t|0)!=(f|0))}}while(0);o[u+8>>2]=n&255;return}function mr(e){e=e|0;Jn(e,648,664);o[e+3216>>2]=0;i[e+3220>>0]=0;return}function pr(e){e=e|0;return 64}function br(e,r,n,t,a,u){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;u=u|0;var s=0,_=0,l=0,c=0,h=0;h=f;f=f+224|0;_=h+160|0;l=h+96|0;c=h;if(u>>>0<64){o[e+3216>>2]=1;e=-1;f=h;return e|0}else{Cr(a,_);Cr(a+32|0,l);r=r+96|0;i[e+3220>>0]=0;a=e+3221|0;u=r;s=a+32|0;do{i[a>>0]=i[u>>0]|0;a=a+1|0;u=u+1|0}while((a|0)<(s|0));a=e+3253|0;u=_;s=a+32|0;do{i[a>>0]=i[u>>0]|0;a=a+1|0;u=u+1|0}while((a|0)<(s|0));a=e+3285|0;u=t;s=a+32|0;do{i[a>>0]=i[u>>0]|0;a=a+1|0;u=u+1|0}while((a|0)<(s|0));Ir(r,t,c);Ir(_,n,c+32|0);Ir(_,t,c+64|0);Qn(e,c,96,l);Oi(_,64);Oi(l,64);Oi(c,96);e=0;f=h;return e|0}return 0}function wr(e,r,n,t,a){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;var u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0;w=f;f=f+208|0;d=w+32|0;m=w;p=w+168|0;b=w+72|0;fr(d,t,a);u=(n|0)!=0;a=o[d+4>>2]|0;s=(a|0)!=0;t=u|s;if(a)t=t&(o[d+8>>2]|0)==32;c=o[d+28>>2]|0;l=o[d+12>>2]|0;h=o[d+20>>2]|0;if(!(t&(c|0)!=0&(l|0)!=0&(o[d+16>>2]|0)==32&(h|0)!=0&(o[d+24>>2]|0)==32)){o[e+3216>>2]=4;e=-1;f=w;return e|0}if(u&s?ao(n,a,32)|0:0){o[e+3216>>2]=6;e=-1;f=w;return e|0}_=e+3221|0;n=_;u=n+32|0;do{i[n>>0]=i[a>>0]|0;n=n+1|0;a=a+1|0}while((n|0)<(u|0));s=e+3253|0;n=s;a=l;u=n+32|0;do{i[n>>0]=i[a>>0]|0;n=n+1|0;a=a+1|0}while((n|0)<(u|0));t=e+3285|0;n=t;a=h;u=n+32|0;do{i[n>>0]=i[a>>0]|0;n=n+1|0;a=a+1|0}while((n|0)<(u|0));d=o[d+32>>2]|0;a=o[e+4>>2]|0;sr(m,c,d,Io[o[o[a>>2]>>2]&1](a)|0);a=o[m+16>>2]|0;if((a|0)!=0?(o[m+20>>2]|0)==32:0){n=p;u=n+32|0;do{i[n>>0]=i[a>>0]|0;n=n+1|0;a=a+1|0}while((n|0)<(u|0));a=li(r,t)|0;if(!a){o[e+3216>>2]=6;a=-1}else{a=a+5|0;Ir(a,_,b);Ir(r+96|0,s,b+32|0);Ir(a,s,b+64|0);Xn(e,b,96,p);Oi(b,96);a=0}}else{o[e+3216>>2]=4;a=-1}e=a;f=w;return e|0}function vr(e){e=e|0;return 32}function kr(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,a=0,u=0,s=0;s=f;f=f+96|0;u=s;if(n>>>0<32){o[e+3216>>2]=2;u=-1;f=s;return u|0}else{n=u;t=e+3221|0;a=n+32|0;do{i[n>>0]=i[t>>0]|0;n=n+1|0;t=t+1|0}while((n|0)<(a|0));n=u+32|0;t=e+3253|0;a=n+32|0;do{i[n>>0]=i[t>>0]|0;n=n+1|0;t=t+1|0}while((n|0)<(a|0));n=u+64|0;t=e+3285|0;a=n+32|0;do{i[n>>0]=i[t>>0]|0;n=n+1|0;t=t+1|0}while((n|0)<(a|0));qr(u,96,r);u=32;f=s;return u|0}return 0}function gr(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0,a=0,u=0,s=0,_=0,l=0;l=f;f=f+48|0;_=l;fr(_,n,i);s=(r|0)!=0;t=o[_+4>>2]|0;i=s|(t|0)!=0;u=(t|0)==0;if(!u)i=i&(o[_+8>>2]|0)==32;n=o[_+12>>2]|0;a=o[_+20>>2]|0;if(!(i&(o[_+28>>2]|0)!=0&(n|0)!=0&(o[_+16>>2]|0)==32&(a|0)!=0&(o[_+24>>2]|0)==32)){e=0;f=l;return e|0}if(u)i=1;else i=(ao(t,e+3221|0,32)|0)==0;if(s){if(!i){e=0;f=l;return e|0}if(ao(r,e+3221|0,32)|0){e=0;f=l;return e|0}}else if(!i){e=0;f=l;return e|0}if(ao(n,e+3253|0,32)|0){e=0;f=l;return e|0}e=(ao(a,e+3285|0,32)|0)==0;f=l;return e|0}function yr(e){e=e|0;return a[e+3220>>0]|0|0}function Ar(e,r){e=e|0;r=r|0;r=ti(e,r)|0;if(i[e+3220>>0]|0){e=r;return e|0}e=_r(32,32,32,r)|0;return e|0}function Tr(e){e=e|0;return oi(e)|0}function Mr(e,r,n,t,a,u,s){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;u=u|0;s=s|0;var _=0,l=0,c=0,h=0,d=0;d=f;f=f+16|0;h=d;_=ti(e,n)|0;l=e+3220|0;if(!(i[l>>0]|0))_=_r(32,32,32,_)|0;if(_>>>0>s>>>0){o[e+3216>>2]=2;e=-1;f=d;return e|0}c=ti(e,n)|0;if(!(i[l>>0]|0)){lr(h,3,32,32,32,c,u);u=o[h+8>>2]|0;_=e+3285|0;s=u+32|0;do{i[u>>0]=i[_>>0]|0;u=u+1|0;_=_+1|0}while((u|0)<(s|0));u=o[h>>2]|0;_=e+3221|0;s=u+32|0;do{i[u>>0]=i[_>>0]|0;u=u+1|0;_=_+1|0}while((u|0)<(s|0));u=o[h+4>>2]|0;_=e+3253|0;s=u+32|0;do{i[u>>0]=i[_>>0]|0;u=u+1|0;_=_+1|0}while((u|0)<(s|0));u=o[h+12>>2]|0}u=ai(e,r,n,t,a,u,c)|0;if((u|0)!=-1){e=u;f=d;return e|0}a=e+8|0;o[e+3216>>2]=o[a>>2];o[a>>2]=0;e=-1;f=d;return e|0}function Er(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0,a=0;a=f;f=f+48|0;t=a;do{if((r|0)!=1){fr(t,n,i);n=o[t+28>>2]|0;if(n|0){i=o[t+32>>2]|0;break}o[e+3216>>2]=4;e=-1;f=a;return e|0}}while(0);n=ui(e,n,i)|0;if((n|0)!=-1){e=n;f=a;return e|0}t=e+8|0;o[e+3216>>2]=o[t>>2];o[t>>2]=0;e=-1;f=a;return e|0}function Sr(e,r,n,t,a,u){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;u=u|0;var s=0,_=0;_=f;f=f+48|0;s=_;do{if((r|0)!=1){fr(s,n,t);n=o[s+28>>2]|0;if(n|0){t=o[s+32>>2]|0;break}o[e+3216>>2]=4;e=-1;f=_;return e|0}}while(0);n=si(e,n,t,a,u)|0;if((n|0)==-1){a=e+8|0;o[e+3216>>2]=o[a>>2];o[a>>2]=0;e=-1;f=_;return e|0}else{i[e+3220>>0]=1;e=n;f=_;return e|0}return 0}function xr(e){e=e|0;var r=0;r=(De(e+3221|0)|0)+5|0;r=r+(De(e+3253|0)|0)|0;r=r+(De(e+3285|0)|0)|0;return r+(Zn(e)|0)|0}function Or(e,r){e=e|0;r=r|0;e=Ue(e,1)|0;return $n(Ve(Ve(Ve(ze(e,(i[r+3220>>0]|0)!=0)|0,r+3221|0)|0,r+3253|0)|0,r+3285|0)|0,r)|0}function Rr(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0;a=f;f=f+16|0;i=a;t=Fe(e,r,i)|0;e=o[i>>2]|0;e:do{if((e|0)<1){switch(e|0){case-2147483647:break;default:{i=3;break e}}e=1;i=4}else switch(e|0){case 1:{e=0;i=4;break}default:i=3}}while(0);if((i|0)==3){o[n+3216>>2]=9;n=r;f=a;return n|0}else if((i|0)==4){n=ei(Be(Be(Be(qe(t,r,n+3220|0)|0,r,n+3221|0)|0,r,n+3253|0)|0,r,n+3285|0)|0,r,n,e)|0;f=a;return n|0}return 0}function Cr(e,r){e=e|0;r=r|0;var n=0,t=0,o=0;t=r+32|0;o=t;n=o+32|0;do{i[o>>0]=i[e>>0]|0;o=o+1|0;e=e+1|0}while((o|0)<(n|0));ro(r,t,33122)|0;return}function Ir(e,r,n){e=e|0;r=r|0;n=n|0;ro(n,e+32|0,r)|0;return}function Lr(e,r){e=e|0;r=r|0;Xi(r,r+32|0,e);return}function Pr(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;rt(i,r,n,e,e+32|0);return}function Nr(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;return(et(i,r,n,e)|0)!=0|0}function Ur(e){e=e|0;return e+16-(e&15)|0}function Fr(e,r,n,t,o){e=e|0;r=r|0;n=n|0;t=t|0;o=o|0;var u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0;C=f;f=f+256|0;R=C;O=C+240|0;Zt(e,R,256);S=O;T=S+16|0;do{i[S>>0]=i[r>>0]|0;S=S+1|0;r=r+1|0}while((S|0)<(T|0));if(t>>>0>15){u=O+1|0;m=O+2|0;p=O+3|0;b=O+4|0;w=O+5|0;v=O+6|0;k=O+7|0;g=O+8|0;y=O+9|0;s=O+10|0;_=O+11|0;l=O+12|0;c=O+13|0;h=O+14|0;d=O+15|0;M=t+-16|0;E=M&-16;x=E+16|0;A=o+x|0;e=t;t=n;while(1){i[O>>0]=i[O>>0]^i[t>>0];i[u>>0]=i[u>>0]^i[t+1>>0];i[m>>0]=i[m>>0]^i[t+2>>0];i[p>>0]=i[p>>0]^i[t+3>>0];i[b>>0]=i[b>>0]^i[t+4>>0];i[w>>0]=i[w>>0]^i[t+5>>0];i[v>>0]=i[v>>0]^i[t+6>>0];i[k>>0]=i[k>>0]^i[t+7>>0];i[g>>0]=i[g>>0]^i[t+8>>0];i[y>>0]=i[y>>0]^i[t+9>>0];i[s>>0]=i[s>>0]^i[t+10>>0];i[_>>0]=i[_>>0]^i[t+11>>0];i[l>>0]=i[l>>0]^i[t+12>>0];i[c>>0]=i[c>>0]^i[t+13>>0];i[h>>0]=i[h>>0]^i[t+14>>0];i[d>>0]=i[d>>0]^i[t+15>>0];Xt(O,o,R,256);S=O;r=o;T=S+16|0;do{i[S>>0]=i[r>>0]|0;S=S+1|0;r=r+1|0}while((S|0)<(T|0));e=e+-16|0;if(e>>>0<=15)break;else{t=t+16|0;o=o+16|0}}o=A;r=M-E|0;n=n+x|0}else r=t;if(r){e=0;do{x=O+e|0;i[x>>0]=i[x>>0]^i[n+e>>0];e=e+1|0}while((e|0)!=(r|0));if(r>>>0<16)n=r;else{Xt(O,o,R,256);Oi(R,240);Oi(O,16);f=C;return}}else n=0;e=16-r|0;do{x=O+n|0;i[x>>0]=(a[x>>0]|0)^e;n=n+1|0}while((n|0)!=16);Xt(O,o,R,256);Oi(R,240);Oi(O,16);f=C;return}function zr(e,r,n,t,o){e=e|0;r=r|0;n=n|0;t=t|0;o=o|0;var a=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0;x=f;f=f+272|0;S=x;M=x+256|0;E=x+240|0;Zt(e,S,256);T=M;A=T+16|0;do{i[T>>0]=i[r>>0]|0;T=T+1|0;r=r+1|0}while((T|0)<(A|0));if(!t){Oi(S,240);Oi(M,16);Oi(E,16);S=t+-1|0;o=o+S|0;o=i[o>>0]|0;o=o&255;S=o>>>0>t>>>0;o=t-o|0;o=S?-1:o;f=x;return o|0}e=M+1|0;h=M+2|0;m=M+3|0;p=M+4|0;b=M+5|0;w=M+6|0;v=M+7|0;k=M+8|0;g=M+9|0;a=M+10|0;u=M+11|0;s=M+12|0;_=M+13|0;l=M+14|0;c=M+15|0;y=0;do{d=n+y|0;T=E;r=d;A=T+16|0;do{i[T>>0]=i[r>>0]|0;T=T+1|0;r=r+1|0}while((T|0)<(A|0));T=o+y|0;eo(d,T,S,256);i[T>>0]=i[T>>0]^i[M>>0];r=T+1|0;i[r>>0]=i[r>>0]^i[e>>0];r=T+2|0;i[r>>0]=i[r>>0]^i[h>>0];r=T+3|0;i[r>>0]=i[r>>0]^i[m>>0];r=T+4|0;i[r>>0]=i[r>>0]^i[p>>0];r=T+5|0;i[r>>0]=i[r>>0]^i[b>>0];r=T+6|0;i[r>>0]=i[r>>0]^i[w>>0];r=T+7|0;i[r>>0]=i[r>>0]^i[v>>0];r=T+8|0;i[r>>0]=i[r>>0]^i[k>>0];r=T+9|0;i[r>>0]=i[r>>0]^i[g>>0];r=T+10|0;i[r>>0]=i[r>>0]^i[a>>0];r=T+11|0;i[r>>0]=i[r>>0]^i[u>>0];r=T+12|0;i[r>>0]=i[r>>0]^i[s>>0];r=T+13|0;i[r>>0]=i[r>>0]^i[_>>0];r=T+14|0;i[r>>0]=i[r>>0]^i[l>>0];T=T+15|0;i[T>>0]=i[T>>0]^i[c>>0];T=M;r=E;A=T+16|0;do{i[T>>0]=i[r>>0]|0;T=T+1|0;r=r+1|0}while((T|0)<(A|0));y=y+16|0}while(y>>>0<t>>>0);Oi(S,240);Oi(M,16);Oi(E,16);S=t+-1|0;o=o+S|0;o=i[o>>0]|0;o=o&255;S=o>>>0>t>>>0;o=t-o|0;o=S?-1:o;f=x;return o|0}function qr(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0;i=f;f=f+112|0;t=i;Wt(t);Yt(t,e,r);Jt(t,n);Oi(t,112);f=i;return}function Hr(e,r,n,t,o){e=e|0;r=r|0;n=n|0;t=t|0;o=o|0;var u=0,s=0,_=0,l=0,c=0,h=0,d=0;d=f;f=f+400|0;h=d+224|0;l=d+112|0;c=d+336|0;_=d;u=c;s=u+64|0;do{i[u>>0]=0;u=u+1|0}while((u|0)<(s|0));if(r>>>0>64){Wt(h);Yt(h,e,r);Jt(h,c)}else bo(c|0,e|0,r|0)|0;u=h;e=c;s=u+64|0;do{i[u>>0]=i[e>>0]|0;u=u+1|0;e=e+1|0}while((u|0)<(s|0));e=0;do{s=h+e|0;i[s>>0]=(a[s>>0]|0)^54;e=e+1|0}while((e|0)!=64);Wt(_);Yt(_,h,64);Oi(h,64);Yt(_,n,t);u=h;e=c;s=u+64|0;do{i[u>>0]=i[e>>0]|0;u=u+1|0;e=e+1|0}while((u|0)<(s|0));e=0;do{t=h+e|0;i[t>>0]=(a[t>>0]|0)^92;e=e+1|0}while((e|0)!=64);Jt(_,h+64|0);Wt(l);Yt(l,h,96);Jt(l,o);Oi(l,112);Oi(h,96);Oi(c,64);Oi(_,112);f=d;return}function jr(e,r,n,t,o,u,s,_){e=e|0;r=r|0;n=n|0;t=t|0;o=o|0;u=u|0;s=s|0;_=_|0;var l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0;g=f;f=f+432|0;p=g+112|0;v=g+328|0;m=g;b=g+264|0;k=g+232|0;w=g+224|0;i[w>>0]=1;h=(n|0)==0;l=h?32:t;t=h?36088:n;h=b;d=h+64|0;do{i[h>>0]=0;h=h+1|0}while((h|0)<(d|0));if(l>>>0>64){Wt(p);Yt(p,t,l);Jt(p,b)}else bo(b|0,t|0,l|0)|0;h=p;t=b;d=h+64|0;do{i[h>>0]=i[t>>0]|0;h=h+1|0;t=t+1|0}while((h|0)<(d|0));t=0;do{d=p+t|0;i[d>>0]=(a[d>>0]|0)^54;t=t+1|0}while((t|0)!=64);Wt(m);Yt(m,p,64);Oi(p,64);Yt(m,e,r);h=v;t=b;d=h+64|0;do{i[h>>0]=i[t>>0]|0;h=h+1|0;t=t+1|0}while((h|0)<(d|0));t=0;do{d=v+t|0;i[d>>0]=(a[d>>0]|0)^92;t=t+1|0}while((t|0)!=64);c=v+64|0;Jt(m,c);Wt(p);Yt(p,v,96);Jt(p,k);Oi(p,112);Oi(v,96);h=b+32|0;d=h+32|0;do{i[h>>0]=0;h=h+1|0}while((h|0)<(d|0));h=b;t=k;d=h+32|0;do{i[h>>0]=i[t>>0]|0;h=h+1|0;t=t+1|0}while((h|0)<(d|0));h=p;t=b;d=h+64|0;do{i[h>>0]=i[t>>0]|0;h=h+1|0;t=t+1|0}while((h|0)<(d|0));t=0;do{d=p+t|0;i[d>>0]=(a[d>>0]|0)^54;t=t+1|0}while((t|0)!=64);Wt(m);Yt(m,p,64);Oi(p,64);Yt(m,o,u);Yt(m,w,1);h=v;t=b;d=h+64|0;do{i[h>>0]=i[t>>0]|0;h=h+1|0;t=t+1|0}while((h|0)<(d|0));t=0;do{d=v+t|0;i[d>>0]=(a[d>>0]|0)^92;t=t+1|0}while((t|0)!=64);Jt(m,c);Wt(p);Yt(p,v,96);Jt(p,k);Oi(p,112);Oi(v,96);if(_>>>0<=32){bo(s|0,k|0,_|0)|0;Oi(m,112);Oi(b,64);Oi(k,32);f=g;return}l=_+-33&-32;e=l+32|0;n=s;r=_;do{h=n;t=k;d=h+32|0;do{i[h>>0]=i[t>>0]|0;h=h+1|0;t=t+1|0}while((h|0)<(d|0));n=n+32|0;i[w>>0]=(i[w>>0]|0)+1<<24>>24;h=p;t=b;d=h+64|0;do{i[h>>0]=i[t>>0]|0;h=h+1|0;t=t+1|0}while((h|0)<(d|0));t=0;do{d=p+t|0;i[d>>0]=(a[d>>0]|0)^54;t=t+1|0}while((t|0)!=64);Wt(m);Yt(m,p,64);Oi(p,64);Yt(m,k,32);Yt(m,o,u);Yt(m,w,1);h=v;t=b;d=h+64|0;do{i[h>>0]=i[t>>0]|0;h=h+1|0;t=t+1|0}while((h|0)<(d|0));t=0;do{d=v+t|0;i[d>>0]=(a[d>>0]|0)^92;t=t+1|0}while((t|0)!=64);r=r+-32|0;Jt(m,c);Wt(p);Yt(p,v,96);Jt(p,k);Oi(p,112);Oi(v,96)}while(r>>>0>32);s=s+e|0;_=_+-32-l|0;bo(s|0,k|0,_|0)|0;Oi(m,112);Oi(b,64);Oi(k,32);f=g;return}function Dr(e,r,n){e=e|0;r=r|0;n=n|0;if(e|0)i[e>>0]=2;if(r|0)i[r>>0]=2;if(!n)return;i[n>>0]=1;return}function Vr(){return-1}function Br(e){e=e|0;return st(o[e+7368>>2]|0)|0}function Gr(e){e=e|0;return st(o[e+3216>>2]|0)|0}function Kr(e){e=e|0;return st(o[e>>2]|0)|0}function Wr(){return 7372}function Yr(){return 3320}function Jr(){return 4}function Xr(e){e=e|0;Oi(e,7372);_i(e);return e|0}function Qr(e){e=e|0;Oi(e,3320);mr(e);return e|0}function Zr(e){e=e|0;Oi(e,4);Gn(e);return e|0}function $r(e){e=e|0;Oi(e,7372);_i(e);return 7372}function en(e){e=e|0;Oi(e,3320);mr(e);return 3320}function rn(e){e=e|0;Oi(e,4);Gn(e);return 4}function nn(e){e=e|0;return _t(Ti(e)|0)|0}function tn(e){e=e|0;return _t(xr(e)|0)|0}function on(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0;a=Ti(e)|0;if((_t(a)|0)>>>0>t>>>0){o[e+7368>>2]=2;t=-1;return t|0}else{Mi(lt(i,a)|0,e)|0;t=ft(r,n,i,a)|0;return t|0}return 0}function an(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0;a=xr(e)|0;if((_t(a)|0)>>>0>t>>>0){o[e+3216>>2]=2;e=-1;return e|0}else{Or(lt(i,a)|0,e)|0;e=ft(r,n,i,a)|0;return e|0}return 0}function un(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0;a=e+7368|0;r=ct(r,n,i,t,a)|0;if((r|0)==-1){t=-1;return t|0}n=i+r|0;if((n|0)==(Ei(i,n+1|0,e)|0))return t|0;if(o[a>>2]|0){t=-1;return t|0}o[a>>2]=10;t=-1;return t|0}function sn(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0;a=e+3216|0;r=ct(r,n,i,t,a)|0;if((r|0)==-1){e=-1;return e|0}n=i+r|0;if((n|0)==(Rr(i,n+1|0,e)|0)){e=t;return e|0}if(o[a>>2]|0){e=-1;return e|0}o[a>>2]=10;e=-1;return e|0}function _n(e){e=e|0;return ci(e)|0}function ln(e,r,n){e=e|0;r=r|0;n=n|0;e=hi(e,r,n)|0;Oi(r,n);return e|0}function fn(e){e=e|0;return di(e)|0}function cn(e,r,n){e=e|0;r=r|0;n=n|0;return mi(e,r,n)|0}function hn(e){e=e|0;return xe(pi(e)|0)|0}function dn(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0,u=0;a=pi(e)|0;if((xe(a)|0)>>>0>t>>>0){o[e+7368>>2]=2;t=-1;return t|0}else{u=0-a|0;bi(e,r,n,i+(xe(a)|0)+u|0,a)|0;t=xe(a)|0;Oe(i+t+u|0,a,i)|0;return t|0}return 0}function mn(e){e=e|0;return wi(e)|0}function pn(e,r,n){e=e|0;r=r|0;n=n|0;return vi(e,r,n)|0}function bn(e){e=e|0;return ki(e)|0}function wn(e){e=e|0;return gi(e)|0}function vn(e,r){e=e|0;r=r|0;return yi(e,r)|0}function kn(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;r=Ai(e,r,n,i)|0;Oi(n,i);return r|0}function gn(e){e=e|0;return pr(e)|0}function yn(e,r,n,i,t,a,u,s){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;a=a|0;u=u|0;s=s|0;var _=0,l=0,c=0;c=f;f=f+64|0;_=c+32|0;l=c;if((Re(i)|0)==32?(Re(a)|0)==32:0){Ce(n,i,_)|0;Ce(t,a,l)|0;a=br(e,r,_,l,u,s)|0;Oi(u,s);f=c;return a|0}o[e+3216>>2]=7;a=-1;f=c;return a|0}function An(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0;t=Re(i)|0;if((t|0)==-1){o[e+3216>>2]=7;e=-1;return e|0}else{Ce(n,i,n)|0;e=wr(e,r,0,n,t)|0;return e|0}return 0}function Tn(e,r,n,i,t,a){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;a=a|0;var u=0,s=0;s=f;f=f+32|0;u=s;if((Re(i)|0)!=32){o[e+3216>>2]=7;e=-1;f=s;return e|0}Ce(n,i,u)|0;n=Re(a)|0;if((n|0)==-1){o[e+3216>>2]=7;n=-1}else{Ce(t,a,t)|0;n=wr(e,r,u,t,n)|0}e=n;f=s;return e|0}function Mn(e){e=e|0;return xe(vr(e)|0)|0}function En(e,r,n){e=e|0;r=r|0;n=n|0;var i=0;i=vr(e)|0;if((xe(i)|0)>>>0>n>>>0){o[e+3216>>2]=2;e=-1;return e|0}n=0-i|0;if((kr(e,r+(xe(i)|0)+n|0,i)|0)==-1){e=-1;return e|0}e=xe(i)|0;Oe(r+e+n|0,i,r)|0;return e|0}function Sn(e){e=e|0;return a[e+3220>>0]|0|0}function xn(e,r,n){e=e|0;r=r|0;n=n|0;var i=0;i=Re(n)|0;if((i|0)==-1){o[e+3216>>2]=7;e=-1;return e|0}else{Ce(r,n,r)|0;e=(gr(e,0,r,i)|0)&1;return e|0}return 0}function On(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0,u=0;u=f;f=f+32|0;a=u;if((Re(n)|0)!=32){o[e+3216>>2]=7;e=-1;f=u;return e|0}Ce(r,n,a)|0;r=Re(t)|0;if((r|0)==-1){o[e+3216>>2]=7;r=-1}else{Ce(i,t,i)|0;r=(gr(e,a,i,r)|0)&1}e=r;f=u;return e|0}function Rn(e,r){e=e|0;r=r|0;r=fi(e,r+3285|0)|0;if((r|0)!=-1)return r|0;o[e+7368>>2]=6;return r|0}function Cn(e){e=e|0;return yr(e)|0}function In(e){e=e|0;return Tr(e)|0}function Ln(e,r){e=e|0;r=r|0;return xe(Ar(e,r)|0)|0}function Pn(e,r,n,i,t,a,u){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;a=a|0;u=u|0;var s=0;s=Ar(e,n)|0;if((xe(s)|0)>>>0>u>>>0){o[e+3216>>2]=2;e=-1;return e|0}u=0-s|0;e=Mr(e,r,n,i,t,a+(xe(s)|0)+u|0,s)|0;Oi(i,t);if((e|0)==-1){e=-1;return e|0}e=xe(s)|0;Oe(a+e+u|0,s,a)|0;return e|0}function Nn(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0;t=Re(i)|0;if((t|0)==-1){o[e+3216>>2]=7;e=-1;return e|0}else{Ce(n,i,n)|0;e=Er(e,r,n,t)|0;return e|0}return 0}function Un(e,r,n,i,t,a){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;a=a|0;var u=0;u=Re(i)|0;if((u|0)==-1){o[e+3216>>2]=7;e=-1;return e|0}else{Ce(n,i,n)|0;e=Sr(e,r,n,u,t,a)|0;return e|0}return 0}function Fn(e){e=e|0;return xe(Kn(e)|0)|0}function zn(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0;a=Kn(e)|0;if((xe(a)|0)>>>0>t>>>0){o[e>>2]=2;e=-1;return e|0}t=0-a|0;if((Wn(e,r,n,i+(xe(a)|0)+t|0,a)|0)==-1){e=-1;return e|0}e=xe(a)|0;Oe(i+e+t|0,a,i)|0;return e|0}function qn(e,r,n,i,t,a,u){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;a=a|0;u=u|0;var s=0,_=0;_=f;f=f+32|0;s=_;if((Re(n)|0)!=32){o[e>>2]=7;s=-1;f=_;return s|0}Ce(r,n,s)|0;r=Re(u)|0;if((r|0)==-1){o[e>>2]=7;r=-1}else{Ce(a,u,a)|0;r=Yn(e,s,i,t,a,r)|0}s=r;f=_;return s|0}function Hn(e){e=e|0;return 8}function jn(e,r){e=e|0;r=r|0;return Ur(r)|0}function Dn(e,r,n,t,a,u,s,_,l){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;u=u|0;s=s|0;_=_|0;l=l|0;var c=0,h=0,d=0,m=0;m=f;f=f+192|0;c=m+112|0;h=m+32|0;d=m;if((Ur(a)|0)>>>0<s>>>0){a=-1;f=m;return a|0}jr(r,n,0,0,o[e+4>>2]|0,o[e+8>>2]|0,c,80);s=h;r=c;n=s+32|0;do{i[s>>0]=i[r>>0]|0;s=s+1|0;r=r+1|0}while((s|0)<(n|0));e=h+32|0;s=e;r=c+32|0;n=s+32|0;do{i[s>>0]=i[r>>0]|0;s=s+1|0;r=r+1|0}while((s|0)<(n|0));s=h+64|0;r=c+64|0;n=s+16|0;do{i[s>>0]=i[r>>0]|0;s=s+1|0;r=r+1|0}while((s|0)<(n|0));Oi(c,80);Fr(h,h+64|0,t,a,u);Hr(e,32,_,l+-8|0,d);t=d;d=o[t>>2]|0;t=o[t+4>>2]|0;a=_+l+-8|0;_=a;i[_>>0]=d;i[_+1>>0]=d>>8;i[_+2>>0]=d>>16;i[_+3>>0]=d>>24;a=a+4|0;i[a>>0]=t;i[a+1>>0]=t>>8;i[a+2>>0]=t>>16;i[a+3>>0]=t>>24;Oi(h,80);a=l;f=m;return a|0}function Vn(e,r){e=e|0;r=r|0;return r|0}function Bn(e,r,n,t,a,u,s,_,l){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;u=u|0;s=s|0;_=_|0;l=l|0;var c=0,h=0,d=0,m=0;m=f;f=f+192|0;c=m+112|0;h=m+32|0;d=m;jr(r,n,0,0,o[e+4>>2]|0,o[e+8>>2]|0,c,80);e=h;r=c;n=e+32|0;do{i[e>>0]=i[r>>0]|0;e=e+1|0;r=r+1|0}while((e|0)<(n|0));l=h+32|0;e=l;r=c+32|0;n=e+32|0;do{i[e>>0]=i[r>>0]|0;e=e+1|0;r=r+1|0}while((e|0)<(n|0));e=h+64|0;r=c+64|0;n=e+16|0;do{i[e>>0]=i[r>>0]|0;e=e+1|0;r=r+1|0}while((e|0)<(n|0));Oi(c,80);Hr(l,32,t,a+-8|0,d);if(Ri(t+a+-8|0,d,8)|0){_=zr(h,h+64|0,u,s,_)|0;Oi(h,80);f=m;return _|0}else{Oi(h,80);_=-1;f=m;return _|0}return 0}function Gn(e){e=e|0;o[e>>2]=0;return}function Kn(e){e=e|0;return 32}function Wn(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;if(t>>>0<32){o[e>>2]=2;e=-1;return e|0}else{qr(r,n,i);e=32;return e|0}return 0}function Yn(e,r,n,i,t,a){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;a=a|0;if(a>>>0<64){o[e>>2]=5;e=-1;return e|0}if(Nr(r,n,i,t)|0){e=0;return e|0}o[e>>2]=5;e=-1;return e|0}function Jn(e,r,n){e=e|0;r=r|0;n=n|0;o[e>>2]=r;o[e+4>>2]=n;o[e+8>>2]=0;o[e+44>>2]=e+48;o[e+148>>2]=e+152;o[e+492>>2]=e+496;return}function Xn(e,r,n,t){e=e|0;r=r|0;n=n|0;t=t|0;var a=0,u=0,s=0,_=0,l=0,c=0;c=f;f=f+64|0;l=c;_=o[e>>2]|0;jr(r,n,0,0,o[_>>2]|0,o[_+4>>2]|0,l,64);_=e+152|0;n=e+148|0;r=o[n>>2]|0;if((r|0)==(e+492|0))s=(r|0)==(_|0)?e+84|0:_;else{r=r+68|0;o[n>>2]=r;s=_}r=r+-68|0;if((r|0)!=(s|0))do{n=r;r=r+-68|0;a=r;u=n+68|0;do{o[n>>2]=o[a>>2];n=n+4|0;a=a+4|0}while((n|0)<(u|0))}while((r|0)!=(s|0));o[e+184>>2]=0;n=e+12|0;a=l;u=n+32|0;do{i[n>>0]=i[a>>0]|0;n=n+1|0;a=a+1|0}while((n|0)<(u|0));n=e+188|0;a=l+32|0;u=n+32|0;do{i[n>>0]=i[a>>0]|0;n=n+1|0;a=a+1|0}while((n|0)<(u|0));n=_;a=t;u=n+32|0;do{i[n>>0]=i[a>>0]|0;n=n+1|0;a=a+1|0}while((n|0)<(u|0));Oi(l,64);f=c;return}function Qn(e,r,n,t){e=e|0;r=r|0;n=n|0;t=t|0;var a=0,u=0,s=0,_=0,l=0,c=0;c=f;f=f+64|0;l=c;_=o[e>>2]|0;jr(r,n,0,0,o[_>>2]|0,o[_+4>>2]|0,l,64);_=e+48|0;n=e+44|0;r=o[n>>2]|0;if((r|0)==(e+148|0))s=(r|0)==(_|0)?e+-52|0:_;else{r=r+100|0;o[n>>2]=r;s=_}r=r+-100|0;if((r|0)!=(s|0))do{n=r;r=r+-100|0;a=r;u=n+100|0;do{o[n>>2]=o[a>>2];n=n+4|0;a=a+4|0}while((n|0)<(u|0))}while((r|0)!=(s|0));o[e+112>>2]=0;n=e+12|0;a=l;u=n+32|0;do{i[n>>0]=i[a>>0]|0;n=n+1|0;a=a+1|0}while((n|0)<(u|0));n=e+116|0;a=l+32|0;u=n+32|0;do{i[n>>0]=i[a>>0]|0;n=n+1|0;a=a+1|0}while((n|0)<(u|0));n=_;a=t;u=n+64|0;do{i[n>>0]=i[a>>0]|0;n=n+1|0;a=a+1|0}while((n|0)<(u|0));Oi(l,64);f=c;return}function Zn(e){e=e|0;var r=0,n=0,i=0,t=0;r=e+48|0;i=o[e+44>>2]|0;if((r|0)==(i|0))t=36;else{n=r;r=4;do{r=r+36+(Ge(n)|0)|0;n=n+100|0}while((n|0)!=(i|0));t=r+32|0}r=e+152|0;i=o[e+148>>2]|0;if((r|0)==(i|0))r=4;else{n=r;r=4;do{r=r+36+(De(n)|0)|0;n=n+68|0}while((n|0)!=(i|0))}t=t+r|0;r=e+496|0;i=o[e+492>>2]|0;if((r|0)==(i|0)){e=4;e=t+e|0;return e|0}else{n=r;r=4}do{r=r+36+(De(n)|0)|0;n=n+68|0}while((n|0)!=(i|0));e=t+r|0;return e|0}function $n(e,r){e=e|0;r=r|0;var n=0,i=0;e=He(e,r+12|0,32)|0;i=r+44|0;n=r+48|0;e=Ue(e,((o[i>>2]|0)-n|0)/100|0)|0;i=o[i>>2]|0;if((n|0)!=(i|0))do{e=He(Ke(e,n)|0,n+68|0,32)|0;e=Ue(e,o[n+64>>2]|0)|0;n=n+100|0}while((n|0)!=(i|0));i=r+148|0;n=r+152|0;e=Ue(e,((o[i>>2]|0)-n|0)/68|0)|0;i=o[i>>2]|0;if((n|0)!=(i|0))do{e=He(Ve(e,n)|0,n+36|0,32)|0;e=Ue(e,o[n+32>>2]|0)|0;n=n+68|0}while((n|0)!=(i|0));i=r+492|0;n=r+496|0;e=Ue(e,((o[i>>2]|0)-n|0)/68|0)|0;i=o[i>>2]|0;if((n|0)==(i|0)){r=e;return r|0}do{e=He(Ve(e,n)|0,n+36|0,32)|0;e=Ue(e,o[n+32>>2]|0)|0;n=n+68|0}while((n|0)!=(i|0));return e|0}function ei(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0;t=f;f=f+16|0;e=ii(ni(ri(je(e,r,n+12|0,32)|0,r,n+44|0)|0,r,n+148|0)|0,r,n+492|0)|0;if(!i){i=e;f=t;return i|0}i=Fe(e,r,t)|0;f=t;return i|0}function ri(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,c=0,h=0;h=f;f=f+16|0;c=h;e=Fe(e,r,c)|0;l=o[c>>2]|0;o[c>>2]=l+-1;if((e|0)==(r|0)|(l|0)==0){c=e;f=h;return c|0}_=n+104|0;l=n+4|0;do{i=o[n>>2]|0;if((i|0)==(_|0)){i=l;t=_}else{t=i+100|0;o[n>>2]=t}t=t+-100|0;if((t|0)!=(i|0))do{a=t;t=t+-100|0;u=t;s=a+100|0;do{o[a>>2]=o[u>>2];a=a+4|0;u=u+4|0}while((a|0)<(s|0))}while((t|0)!=(i|0));e=Fe(je(We(e,r,i)|0,r,i+68|0,32)|0,r,i+64|0)|0;s=o[c>>2]|0;o[c>>2]=s+-1}while(!((e|0)==(r|0)|(s|0)==0));f=h;return e|0}function ni(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,c=0,h=0;h=f;f=f+16|0;c=h;e=Fe(e,r,c)|0;l=o[c>>2]|0;o[c>>2]=l+-1;if((e|0)==(r|0)|(l|0)==0){c=e;f=h;return c|0}_=n+344|0;l=n+276|0;do{i=o[n>>2]|0;if((i|0)==(_|0)){i=l;t=_}else{t=i+68|0;o[n>>2]=t}t=t+-68|0;if((t|0)!=(i|0))do{a=t;t=t+-68|0;u=t;s=a+68|0;do{o[a>>2]=o[u>>2];a=a+4|0;u=u+4|0}while((a|0)<(s|0))}while((t|0)!=(i|0));e=Fe(je(Be(e,r,i)|0,r,i+36|0,32)|0,r,i+32|0)|0;s=o[c>>2]|0;o[c>>2]=s+-1}while(!((e|0)==(r|0)|(s|0)==0));f=h;return e|0}function ii(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,c=0,h=0;h=f;f=f+16|0;c=h;e=Fe(e,r,c)|0;l=o[c>>2]|0;o[c>>2]=l+-1;if((e|0)==(r|0)|(l|0)==0){c=e;f=h;return c|0}_=n+2724|0;l=n+2656|0;do{i=o[n>>2]|0;if((i|0)==(_|0)){i=l;t=_}else{t=i+68|0;o[n>>2]=t}t=t+-68|0;if((t|0)!=(i|0))do{a=t;t=t+-68|0;u=t;s=a+68|0;do{o[a>>2]=o[u>>2];a=a+4|0;u=u+4|0}while((a|0)<(s|0))}while((t|0)!=(i|0));e=Fe(je(Be(e,r,i)|0,r,i+36|0,32)|0,r,i+32|0)|0;s=o[c>>2]|0;o[c>>2]=s+-1}while(!((e|0)==(r|0)|(s|0)==0));f=h;return e|0}function ti(e,r){e=e|0;r=r|0;var n=0,i=0;if((o[e+44>>2]|0)==(e+48|0))n=0;else n=o[e+112>>2]|0;e=e+4|0;i=o[e>>2]|0;r=Po[o[(o[i>>2]|0)+4>>2]&3](i,r)|0;e=o[e>>2]|0;return ar(n,32,r,Io[o[o[e>>2]>>2]&1](e)|0)|0}function oi(e){e=e|0;return((o[e+44>>2]|0)==(e+48|0)?32:0)|0}function ai(e,r,n,t,a,u,s){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;u=u|0;s=s|0;var _=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0;b=f;f=f+112|0;p=b+64|0;m=b;l=e+44|0;h=e+48|0;if((o[l>>2]|0)==(h|0))_=0;else _=o[e+112>>2]|0;d=e+4|0;w=o[d>>2]|0;w=Po[o[(o[w>>2]|0)+4>>2]&3](w,n)|0;c=o[d>>2]|0;c=ar(_,32,w,Io[o[o[c>>2]>>2]&1](c)|0)|0;_=(o[l>>2]|0)==(h|0);if((_?32:0)>>>0>a>>>0){o[e+8>>2]=1;w=-1;f=b;return w|0}if(c>>>0>s>>>0){o[e+8>>2]=2;w=-1;f=b;return w|0}if(_){o[l>>2]=e+148;Cr(t,h);t=o[e>>2]|0;Ir(h,e+152|0,p);l=e+12|0;jr(p,32,l,32,o[t+8>>2]|0,o[t+12>>2]|0,m,64);t=m;a=l+32|0;do{i[l>>0]=i[t>>0]|0;l=l+1|0;t=t+1|0}while((l|0)<(a|0));_=e+116|0;l=_;t=m+32|0;a=l+32|0;do{i[l>>0]=i[t>>0]|0;l=l+1|0;t=t+1|0}while((l|0)<(a|0));l=e+112|0;o[l>>2]=0;Oi(m,64);Oi(p,32)}else{l=e+112|0;_=e+116|0}s=p+4|0;Hr(_,32,33154,1,s);o[p>>2]=o[l>>2];Hr(_,32,33155,1,_);o[l>>2]=(o[l>>2]|0)+1;_=o[d>>2]|0;_=Po[o[(o[_>>2]|0)+4>>2]&3](_,n)|0;ur(m,3,o[p>>2]|0,32,_,u);l=o[m>>2]|0;t=h;a=l+32|0;do{i[l>>0]=i[t>>0]|0;l=l+1|0;t=t+1|0}while((l|0)<(a|0));w=o[d>>2]|0;Lo[o[(o[w>>2]|0)+8>>2]&3](w,s,32,r,n,o[m+4>>2]|0,_,u,c)|0;Oi(p,36);w=c;f=b;return w|0}function ui(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0;a=f;f=f+32|0;t=a;i=e+4|0;u=o[i>>2]|0;sr(t,r,n,Io[o[o[u>>2]>>2]&1](u)|0);if(!(o[t+24>>2]|0)){o[e+8>>2]=4;u=-1;f=a;return u|0}else{u=o[i>>2]|0;u=Po[o[(o[u>>2]|0)+12>>2]&3](u,o[t+28>>2]|0)|0;f=a;return u|0}return 0}function si(e,r,n,a,u){e=e|0;r=r|0;n=n|0;a=a|0;u=u|0;var s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0;O=f;f=f+240|0;E=O+168|0;M=O+104|0;m=O+208|0;d=O+32|0;S=O;g=e+4|0;A=o[g>>2]|0;sr(S,r,n,Io[o[o[A>>2]>>2]&1](A)|0);r=t[S>>1]|0;if((r&255)<<24>>24!=3){o[e+8>>2]=3;e=-1;f=O;return e|0}if(((r&65535)>=256?(T=S+16|0,o[T>>2]|0):0)?(y=S+24|0,o[y>>2]|0):0){A=o[g>>2]|0;k=S+28|0;if((Po[o[(o[A>>2]|0)+12>>2]&3](A,o[k>>2]|0)|0)>>>0>u>>>0){o[e+8>>2]=2;e=-1;f=O;return e|0}if((o[S+20>>2]|0)!=32){o[e+8>>2]=4;e=-1;f=O;return e|0}n=e+152|0;A=e+148|0;_=o[A>>2]|0;e:do{if((n|0)!=(_|0)){l=o[T>>2]|0;c=n;r=0;do{p=(ao(c,l,32)|0)==0;r=p?c:r;c=c+68|0}while(!(p|(c|0)==(_|0)));c=r;l=(c|0)!=0;if(l){_=c+32|0;r=o[_>>2]|0;p=S+4|0;d=o[p>>2]|0;if(d>>>0>=r>>>0){if((d-r|0)>>>0>2e3)break;v=E;b=_;w=v+36|0;do{o[v>>2]=o[b>>2];v=v+4|0;b=b+4|0}while((v|0)<(w|0));s=E+4|0;if((o[E>>2]|0)>>>0<d>>>0)do{Hr(s,32,33155,1,s);x=(o[E>>2]|0)+1|0;o[E>>2]=x}while(x>>>0<(o[p>>2]|0)>>>0);x=M+4|0;Hr(s,32,33154,1,x);o[M>>2]=o[E>>2];w=o[g>>2]|0;x=Lo[o[(o[w>>2]|0)+16>>2]&3](w,x,32,o[S+8>>2]|0,o[S+12>>2]|0,o[y>>2]|0,o[k>>2]|0,a,u)|0;Oi(E,36);w=l;v=c;b=37;break}r=e+496|0;m=e+492|0;l=o[m>>2]|0;if((r|0)!=(l|0)){c=S+8|0;h=S+12|0;_=d;while(1){if(((_|0)==(o[r+32>>2]|0)?(ao(r,o[T>>2]|0,32)|0)==0:0)?(s=o[g>>2]|0,s=Lo[o[(o[s>>2]|0)+16>>2]&3](s,r+36|0,32,o[c>>2]|0,o[h>>2]|0,o[y>>2]|0,o[k>>2]|0,a,u)|0,(s|0)!=-1):0){n=r;break}r=r+68|0;if((r|0)==(l|0))break e;_=o[p>>2]|0}Oi(n,68);e=(o[m>>2]|0)+-68|0;o[m>>2]=e;if((e|0)==(r|0)){e=s;f=O;return e|0}do{v=r;r=r+68|0;b=r;w=v+68|0;do{o[v>>2]=o[b>>2];v=v+4|0;b=b+4|0}while((v|0)<(w|0))}while((r|0)!=(o[m>>2]|0));f=O;return s|0}}else b=15}else b=15}while(0);if((b|0)==15){s=e+48|0;if((o[e+44>>2]|0)!=(s|0)?(h=S+4|0,(o[h>>2]|0)>>>0<=2e3):0){v=d;b=o[T>>2]|0;w=v+32|0;do{i[v>>0]=i[b>>0]|0;v=v+1|0;b=b+1|0}while((v|0)<(w|0));v=o[e>>2]|0;r=d+32|0;Ir(s,d,E);jr(E,32,e+12|0,32,o[v+8>>2]|0,o[v+12>>2]|0,M,64);v=m;b=M;w=v+32|0;do{i[v>>0]=i[b>>0]|0;v=v+1|0;b=b+1|0}while((v|0)<(w|0));v=d+36|0;b=M+32|0;w=v+32|0;do{i[v>>0]=i[b>>0]|0;v=v+1|0;b=b+1|0}while((v|0)<(w|0));o[r>>2]=0;Oi(M,64);Oi(E,32);_=o[h>>2]|0;x=o[r>>2]|0;if(_>>>0<x>>>0|(_-x|0)>>>0>2e3)s=-1;else{v=E;b=r;w=v+36|0;do{o[v>>2]=o[b>>2];v=v+4|0;b=b+4|0}while((v|0)<(w|0));s=E+4|0;if((o[E>>2]|0)>>>0<_>>>0)do{Hr(s,32,33155,1,s);x=(o[E>>2]|0)+1|0;o[E>>2]=x}while(x>>>0<(o[h>>2]|0)>>>0);x=M+4|0;Hr(s,32,33154,1,x);o[M>>2]=o[E>>2];s=o[g>>2]|0;s=Lo[o[(o[s>>2]|0)+16>>2]&3](s,x,32,o[S+8>>2]|0,o[S+12>>2]|0,o[y>>2]|0,o[k>>2]|0,a,u)|0;Oi(E,36)}Oi(m,32);Oi(d,68)}else s=-1;w=0;v=0;x=s;b=37}if((b|0)==37?(x|0)!=-1:0){if(!w){s=o[A>>2]|0;if((s|0)==(e+492|0))n=(s|0)==(n|0)?e+84|0:n;else{s=s+68|0;o[A>>2]=s}s=s+-68|0;if((s|0)!=(n|0))do{v=s;s=s+-68|0;b=s;w=v+68|0;do{o[v>>2]=o[b>>2];v=v+4|0;b=b+4|0}while((v|0)<(w|0))}while((s|0)!=(n|0));v=n;b=o[T>>2]|0;w=v+32|0;do{i[v>>0]=i[b>>0]|0;v=v+1|0;b=b+1|0}while((v|0)<(w|0));s=e+48|0;b=o[e>>2]|0;Ir(s,n,E);v=e+12|0;jr(E,32,v,32,o[b+8>>2]|0,o[b+12>>2]|0,M,64);b=M;w=v+32|0;do{i[v>>0]=i[b>>0]|0;v=v+1|0;b=b+1|0}while((v|0)<(w|0));v=n+36|0;b=M+32|0;w=v+32|0;do{i[v>>0]=i[b>>0]|0;v=v+1|0;b=b+1|0}while((v|0)<(w|0));o[n+32>>2]=0;Oi(M,64);Oi(E,32);Oi(s,100);r=e+44|0;E=(o[r>>2]|0)+-100|0;o[r>>2]=E;if((E|0)!=(s|0))do{v=s;s=s+100|0;b=s;w=v+100|0;do{o[v>>2]=o[b>>2];v=v+4|0;b=b+4|0}while((v|0)<(w|0))}while((s|0)!=(o[r>>2]|0))}else n=v;p=n+32|0;l=S+4|0;if((o[p>>2]|0)>>>0<(o[l>>2]|0)>>>0){c=e+496|0;h=e+492|0;d=e+3216|0;s=n+36|0;m=e+532|0;_=e+528|0;do{r=o[h>>2]|0;if((r|0)==(d|0))r=d;else{r=r+68|0;o[h>>2]=r}r=r+-68|0;if((r|0)!=(c|0))do{v=r;r=r+-68|0;b=r;w=v+68|0;do{o[v>>2]=o[b>>2];v=v+4|0;b=b+4|0}while((v|0)<(w|0))}while((r|0)!=(c|0));Hr(s,32,33154,1,m);o[_>>2]=o[p>>2];o[c>>2]=o[n>>2];o[c+4>>2]=o[n+4>>2];o[c+8>>2]=o[n+8>>2];o[c+12>>2]=o[n+12>>2];o[c+16>>2]=o[n+16>>2];o[c+20>>2]=o[n+20>>2];o[c+24>>2]=o[n+24>>2];o[c+28>>2]=o[n+28>>2];Hr(s,32,33155,1,s);e=(o[p>>2]|0)+1|0;o[p>>2]=e}while(e>>>0<(o[l>>2]|0)>>>0)}else s=n+36|0;Hr(s,32,33155,1,s);o[p>>2]=(o[p>>2]|0)+1;e=x;f=O;return e|0}o[e+8>>2]=5;e=-1;f=O;return e|0}o[e+8>>2]=4;e=-1;f=O;return e|0}function _i(e){e=e|0;o[e+160>>2]=e+164;o[e+7364>>2]=0;o[e+7368>>2]=0;return}function li(e,r){e=e|0;r=r|0;var n=0;n=e+164|0;e=o[e+160>>2]|0;if((n|0)==(e|0)){r=0;return r|0}while(1){if(Ri(n+5|0,r,32)|0){e=5;break}n=n+72|0;if((n|0)==(e|0)){n=0;e=5;break}}if((e|0)==5)return n|0;return 0}function fi(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,a=0;n=e+164|0;a=e+160|0;if((n|0)==(o[a>>2]|0)){a=-1;return a|0}while(1){if(Ri(n+5|0,r,32)|0){e=n;break}n=n+72|0;if((n|0)==(o[a>>2]|0)){n=-1;i=7;break}}if((i|0)==7)return n|0;n=o[e>>2]|0;t=(o[a>>2]|0)+-72|0;o[a>>2]=t;if((t|0)==(e|0)){a=n;return a|0}do{r=e;e=e+72|0;i=e;t=r+72|0;do{o[r>>2]=o[i>>2];r=r+4|0;i=i+4|0}while((r|0)<(t|0))}while((e|0)!=(o[a>>2]|0));return n|0}function ci(e){e=e|0;return 64}function hi(e,r,n){e=e|0;r=r|0;n=n|0;if(n>>>0<64){o[e+7368>>2]=1;e=-1;return e|0}else{Lr(r,e);Cr(r+32|0,e+96|0);e=0;return e|0}return 0}function di(e){e=e|0;e=xe(32)|0;return e+30+(xe(32)|0)|0}function mi(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,a=0,u=0;u=xe(32)|0;if((u+30+(xe(32)|0)|0)>>>0>n>>>0){o[e+7368>>2]=2;e=-1;return e|0}else{i[r>>0]=123;t=r+1|0;a=33156;u=t+13|0;do{i[t>>0]=i[a>>0]|0;t=t+1|0;a=a+1|0}while((t|0)<(u|0));i[r+14>>0]=34;n=Oe(e+96|0,32,r+15|0)|0;i[n>>0]=34;i[n+1>>0]=44;t=n+2|0;a=33170;u=t+10|0;do{i[t>>0]=i[a>>0]|0;t=t+1|0;a=a+1|0}while((t|0)<(u|0));i[n+12>>0]=34;e=Oe(e,32,n+13|0)|0;i[e>>0]=34;i[e+1>>0]=125;e=e+2-r|0;return e|0}return 0}function pi(e){e=e|0;return 64}function bi(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;if(t>>>0<64){o[e+7368>>2]=2;e=-1;return e|0}else{Pr(e,r,n,i);e=64;return e|0}return 0}function wi(e){e=e|0;var r=0,n=0,t=0,a=0;r=e+164|0;t=o[e+160>>2]|0;if((r|0)!=(t|0)){n=1;e=0;do{if(!(i[r+4>>0]|0)){a=xe(4)|0;n=0;e=e+6+a+(xe(32)|0)|0}r=r+72|0}while((r|0)!=(t|0));if(!n){t=16;a=e;a=t+a|0;return a|0}}else e=0;t=17;a=e;a=t+a|0;return a|0}function vi(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,a=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0;h=f;l=e+164|0;_=e+160|0;u=o[_>>2]|0;if((l|0)!=(u|0)){s=l;a=1;t=0;do{if(!(i[s+4>>0]|0)){d=xe(4)|0;a=0;t=t+6+d+(xe(32)|0)|0}s=s+72|0}while((s|0)!=(u|0));if(a)c=3;else a=16}else{t=0;c=3}if((c|0)==3)a=17;if((a+t|0)>>>0>n>>>0){o[e+7368>>2]=2;d=-1;f=h;return d|0}i[r>>0]=123;t=r+1|0;a=33156;u=t+13|0;do{i[t>>0]=i[a>>0]|0;t=t+1|0;a=a+1|0}while((t|0)<(u|0));t=r+14|0;s=o[_>>2]|0;if((l|0)!=(s|0)){u=l;a=123;do{if(!(i[u+4>>0]|0)){i[t>>0]=a;i[t+1>>0]=34;a=ce()|0;d=f;f=f+16|0;Ue(d,o[u>>2]|0)|0;t=Oe(d,4,t+2|0)|0;i[t>>0]=34;i[t+1>>0]=58;i[t+2>>0]=34;t=Oe(u+5|0,32,t+3|0)|0;i[t>>0]=34;pe(a|0);t=t+1|0;a=44}u=u+72|0}while((u|0)!=(s|0));if(a<<24>>24!=44)c=14}else{a=123;c=14}if((c|0)==14){i[t>>0]=a;t=t+1|0}i[t>>0]=125;i[t+1>>0]=125;d=t+2-r|0;f=h;return d|0}function ki(e){e=e|0;var r=0,n=0,t=0;r=e+164|0;t=o[e+160>>2]|0;if((r|0)==(t|0)){t=0;return t|0}else e=0;do{n=r+4|0;if(!(i[n>>0]|0)){i[n>>0]=1;e=e+1|0}r=r+72|0}while((r|0)!=(t|0));return e|0}function gi(e){e=e|0;return 100}function yi(e,r){e=e|0;r=r|0;return r<<5|0}function Ai(e,r,n,t){e=e|0;r=r|0;n=n|0;t=t|0;var a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0;if(r<<5>>>0>t>>>0){o[e+7368>>2]=1;d=-1;return d|0}if(!r){d=0;return d|0}l=e+164|0;f=e+160|0;c=e+7364|0;h=e+7364|0;d=e+168|0;_=e+169|0;s=0;while(1){t=o[f>>2]|0;if((t|0)==(c|0))t=c;else{t=t+72|0;o[f>>2]=t}t=t+-72|0;if((t|0)!=(l|0))do{e=t;t=t+-72|0;a=t;u=e+72|0;do{o[e>>2]=o[a>>2];e=e+4|0;a=a+4|0}while((e|0)<(u|0))}while((t|0)!=(l|0));u=(o[h>>2]|0)+1|0;o[h>>2]=u;o[l>>2]=u;i[d>>0]=0;Cr(n,_);s=s+1|0;if((s|0)==(r|0))break;else n=n+32|0}return r|0}function Ti(e){e=e|0;var r=0,n=0,i=0,t=0;i=Qe(e)|0;t=Ge(e+96|0)|0;r=e+164|0;n=o[e+160>>2]|0;if((r|0)==(n|0)){n=4;i=i+8|0;t=i+t|0;t=t+n|0;return t|0}else e=4;do{e=e+5+(Ge(r+5|0)|0)|0;r=r+72|0}while((r|0)!=(n|0));i=i+8|0;t=i+t|0;t=t+e|0;return t|0}function Mi(e,r){e=e|0;r=r|0;var n=0,t=0;e=Ke(Ze(Ue(e,2)|0,r)|0,r+96|0)|0;t=r+160|0;n=r+164|0;e=Ue(e,((o[t>>2]|0)-n|0)/72|0)|0;t=o[t>>2]|0;if((n|0)==(t|0)){t=e;r=r+7364|0;r=o[r>>2]|0;r=Ue(t,r)|0;return r|0}do{e=Ue(e,o[n>>2]|0)|0;e=Ke(ze(e,(i[n+4>>0]|0)!=0)|0,n+5|0)|0;n=n+72|0}while((n|0)!=(t|0));r=r+7364|0;r=o[r>>2]|0;r=Ue(e,r)|0;return r|0}function Ei(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0;i=f;f=f+16|0;t=i;e=Fe(e,r,t)|0;switch(o[t>>2]|0){case 2:{t=Fe(Si(We($e(e,r,n)|0,r,n+96|0)|0,r,n+160|0)|0,r,n+7364|0)|0;f=i;return t|0}case 1:{o[n+7368>>2]=13;t=r;f=i;return t|0}default:{o[n+7368>>2]=9;t=r;f=i;return t|0}}return 0}function Si(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,c=0,h=0;h=f;f=f+16|0;c=h;e=Fe(e,r,c)|0;l=o[c>>2]|0;o[c>>2]=l+-1;if((e|0)==(r|0)|(l|0)==0){c=e;f=h;return c|0}_=n+7204|0;l=n+7132|0;do{i=o[n>>2]|0;if((i|0)==(_|0)){i=l;t=_}else{t=i+72|0;o[n>>2]=t}t=t+-72|0;if((t|0)!=(i|0))do{a=t;t=t+-72|0;u=t;s=a+72|0;do{o[a>>2]=o[u>>2];a=a+4|0;u=u+4|0}while((a|0)<(s|0))}while((t|0)!=(i|0));e=We(qe(Fe(e,r,i)|0,r,i+4|0)|0,r,i+5|0)|0;s=o[c>>2]|0;o[c>>2]=s+-1}while(!((e|0)==(r|0)|(s|0)==0));f=h;return e|0}function xi(e,r){e=e|0;r=r|0;var n=0;n=e+r|0;if(!r)return;do{i[e>>0]=0;e=e+1|0}while((e|0)!=(n|0));return}function Oi(e,r){e=e|0;r=r|0;var n=0;n=e+r|0;if(!r)return;do{i[e>>0]=0;e=e+1|0}while((e|0)!=(n|0));return}function Ri(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,o=0;o=f;f=f+16|0;t=o;i[t>>0]=0;if(n|0)while(1){n=n+-1|0;i[t>>0]=i[t>>0]|i[r>>0]^i[e>>0];if(!n)break;else{r=r+1|0;e=e+1|0}}f=o;return(i[t>>0]|0)==0|0}function Ci(e,r){e=e|0;r=r|0;var n=0,t=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,I=0,L=0;L=a[r>>0]|0;s=po(a[r+1>>0]|0|0,0,8)|0;f=C;x=po(a[r+2>>0]|0|0,0,16)|0;f=f|C;S=po(a[r+3>>0]|0|0,0,24)|0;f=f|C;c=i[r+6>>0]|0;_=a[r+4>>0]|0;O=po(a[r+5>>0]|0|0,0,8)|0;l=C;c=po(c&255|0,0,16)|0;l=po(O|_|c|0,l|C|0,6)|0;c=C;_=i[r+9>>0]|0;O=a[r+7>>0]|0;u=po(a[r+8>>0]|0|0,0,8)|0;A=C;_=po(_&255|0,0,16)|0;A=po(u|O|_|0,A|C|0,5)|0;_=C;O=i[r+12>>0]|0;u=a[r+10>>0]|0;g=po(a[r+11>>0]|0|0,0,8)|0;R=C;O=po(O&255|0,0,16)|0;R=po(g|u|O|0,R|C|0,3)|0;O=C;u=i[r+15>>0]|0;g=a[r+13>>0]|0;m=po(a[r+14>>0]|0|0,0,8)|0;v=C;u=po(u&255|0,0,16)|0;v=po(m|g|u|0,v|C|0,2)|0;u=C;g=a[r+16>>0]|0;m=po(a[r+17>>0]|0|0,0,8)|0;M=C;n=po(a[r+18>>0]|0|0,0,16)|0;M=M|C;E=po(a[r+19>>0]|0|0,0,24)|0;E=m|g|n|E;M=M|C;n=i[r+22>>0]|0;g=a[r+20>>0]|0;m=po(a[r+21>>0]|0|0,0,8)|0;p=C;n=po(n&255|0,0,16)|0;p=po(m|g|n|0,p|C|0,7)|0;n=C;g=i[r+25>>0]|0;m=a[r+23>>0]|0;t=po(a[r+24>>0]|0|0,0,8)|0;y=C;g=po(g&255|0,0,16)|0;y=po(t|m|g|0,y|C|0,5)|0;g=C;m=i[r+28>>0]|0;t=a[r+26>>0]|0;b=po(a[r+27>>0]|0|0,0,8)|0;d=C;m=po(m&255|0,0,16)|0;d=po(b|t|m|0,d|C|0,4)|0;m=C;t=i[r+31>>0]|0;b=a[r+29>>0]|0;T=po(a[r+30>>0]|0|0,0,8)|0;w=C;r=po(t&255|0,0,16)|0;w=po(T|b|r|0,w|C|0,2)|0;w=w&33554428;r=fo(w|0,0,16777216,0)|0;r=mo(r|0,C|0,25)|0;b=C;T=lo(0,0,r|0,b|0)|0;f=fo(T&19|0,0,s|L|x|S|0,f|0)|0;S=C;b=po(r|0,b|0,25)|0;r=C;x=fo(l|0,c|0,16777216,0)|0;x=mo(x|0,C|0,25)|0;L=C;_=fo(A|0,_|0,x|0,L|0)|0;A=C;L=po(x|0,L|0,25)|0;L=lo(l|0,c|0,L|0,C|0)|0;c=C;l=fo(R|0,O|0,16777216,0)|0;l=mo(l|0,C|0,25)|0;x=C;u=fo(v|0,u|0,l|0,x|0)|0;v=C;x=po(l|0,x|0,25)|0;l=C;s=fo(E|0,M|0,16777216,0)|0;s=mo(s|0,C|0,25)|0;T=C;n=fo(p|0,n|0,s|0,T|0)|0;p=C;T=po(s|0,T|0,25)|0;s=C;t=fo(y|0,g|0,16777216,0)|0;t=mo(t|0,C|0,25)|0;k=C;m=fo(d|0,m|0,t|0,k|0)|0;d=C;k=po(t|0,k|0,25)|0;t=C;I=fo(f|0,S|0,33554432,0)|0;I=co(I|0,C|0,26)|0;h=C;c=fo(L|0,c|0,I|0,h|0)|0;h=po(I|0,h|0,26)|0;h=lo(f|0,S|0,h|0,C|0)|0;S=fo(_|0,A|0,33554432,0)|0;S=co(S|0,C|0,26)|0;f=C;O=fo(S|0,f|0,R|0,O|0)|0;l=lo(O|0,C|0,x|0,l|0)|0;f=po(S|0,f|0,26)|0;f=lo(_|0,A|0,f|0,C|0)|0;A=fo(u|0,v|0,33554432,0)|0;A=co(A|0,C|0,26)|0;_=C;M=fo(A|0,_|0,E|0,M|0)|0;s=lo(M|0,C|0,T|0,s|0)|0;_=po(A|0,_|0,26)|0;_=lo(u|0,v|0,_|0,C|0)|0;v=fo(n|0,p|0,33554432,0)|0;v=co(v|0,C|0,26)|0;u=C;g=fo(v|0,u|0,y|0,g|0)|0;t=lo(g|0,C|0,k|0,t|0)|0;u=po(v|0,u|0,26)|0;u=lo(n|0,p|0,u|0,C|0)|0;p=fo(m|0,d|0,33554432,0)|0;p=co(p|0,C|0,26)|0;n=C;w=fo(w|0,0,p|0,n|0)|0;r=lo(w|0,C|0,b|0,r|0)|0;n=po(p|0,n|0,26)|0;n=lo(m|0,d|0,n|0,C|0)|0;o[e>>2]=h;o[e+4>>2]=c;o[e+8>>2]=f;o[e+12>>2]=l;o[e+16>>2]=_;o[e+20>>2]=s;o[e+24>>2]=u;o[e+28>>2]=t;o[e+32>>2]=n;o[e+36>>2]=r;return}function Ii(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,o=0,a=0;a=f;f=f+160|0;i=a+120|0;t=a+80|0;o=a+40|0;n=a;Li(i,r);Li(t,i);Li(t,t);Pi(t,r,t);Pi(i,i,t);Li(o,i);Pi(t,t,o);Li(o,t);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Pi(t,o,t);Li(o,t);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Pi(o,o,t);Li(n,o);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Pi(o,n,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Pi(t,o,t);Li(o,t);r=1;do{Li(o,o);r=r+1|0}while((r|0)!=50);Pi(o,o,t);Li(n,o);r=1;do{Li(n,n);r=r+1|0}while((r|0)!=100);Pi(o,n,o);Li(o,o);r=1;do{Li(o,o);r=r+1|0}while((r|0)!=50);Pi(t,o,t);Li(t,t);Li(t,t);Li(t,t);Li(t,t);Li(t,t);Pi(e,t,i);f=a;return}function Li(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0,se=0,_e=0,le=0,fe=0,ce=0,he=0,de=0,me=0,pe=0,be=0,we=0,ve=0,ke=0,ge=0,ye=0,Ae=0,Te=0,Me=0,Ee=0,Se=0,xe=0,Oe=0,Re=0,Ce=0,Ie=0,Le=0,Pe=0,Ne=0,Ue=0,Fe=0,ze=0,qe=0,He=0,je=0,De=0,Ve=0,Be=0,Ge=0,Ke=0,We=0,Ye=0,Je=0,Xe=0,Qe=0,Ze=0,$e=0,er=0,rr=0,nr=0,ir=0,tr=0,or=0,ar=0;rr=o[r>>2]|0;ke=o[r+4>>2]|0;_=o[r+8>>2]|0;fe=o[r+12>>2]|0;i=o[r+16>>2]|0;ir=o[r+20>>2]|0;X=o[r+24>>2]|0;Fe=o[r+28>>2]|0;u=o[r+32>>2]|0;r=o[r+36>>2]|0;f=rr<<1;m=ke<<1;Je=_<<1;t=fe<<1;he=i<<1;S=ir<<1;c=X<<1;s=Fe<<1;Ue=ir*38|0;be=X*19|0;ge=Fe*38|0;ie=u*19|0;ar=r*38|0;nr=((rr|0)<0)<<31>>31;nr=yo(rr|0,nr|0,rr|0,nr|0)|0;rr=C;d=((f|0)<0)<<31>>31;ve=((ke|0)<0)<<31>>31;Pe=yo(f|0,d|0,ke|0,ve|0)|0;Le=C;l=((_|0)<0)<<31>>31;Ye=yo(_|0,l|0,f|0,d|0)|0;We=C;ce=((fe|0)<0)<<31>>31;Ke=yo(fe|0,ce|0,f|0,d|0)|0;Ge=C;x=((i|0)<0)<<31>>31;He=yo(i|0,x|0,f|0,d|0)|0;qe=C;tr=((ir|0)<0)<<31>>31;Te=yo(ir|0,tr|0,f|0,d|0)|0;Ae=C;a=((X|0)<0)<<31>>31;ae=yo(X|0,a|0,f|0,d|0)|0;oe=C;ze=((Fe|0)<0)<<31>>31;V=yo(Fe|0,ze|0,f|0,d|0)|0;D=C;E=((u|0)<0)<<31>>31;R=yo(u|0,E|0,f|0,d|0)|0;O=C;p=((r|0)<0)<<31>>31;d=yo(r|0,p|0,f|0,d|0)|0;f=C;h=((m|0)<0)<<31>>31;ve=yo(m|0,h|0,ke|0,ve|0)|0;ke=C;re=yo(m|0,h|0,_|0,l|0)|0;ne=C;j=((t|0)<0)<<31>>31;Be=yo(t|0,j|0,m|0,h|0)|0;Ve=C;xe=yo(i|0,x|0,m|0,h|0)|0;Se=C;n=((S|0)<0)<<31>>31;se=yo(S|0,n|0,m|0,h|0)|0;ue=C;G=yo(X|0,a|0,m|0,h|0)|0;B=C;H=((s|0)<0)<<31>>31;L=yo(s|0,H|0,m|0,h|0)|0;I=C;v=yo(u|0,E|0,m|0,h|0)|0;w=C;or=((ar|0)<0)<<31>>31;h=yo(ar|0,or|0,m|0,h|0)|0;m=C;De=yo(_|0,l|0,_|0,l|0)|0;je=C;Xe=((Je|0)<0)<<31>>31;Ee=yo(Je|0,Xe|0,fe|0,ce|0)|0;Me=C;le=yo(i|0,x|0,Je|0,Xe|0)|0;_e=C;J=yo(ir|0,tr|0,Je|0,Xe|0)|0;Y=C;q=yo(X|0,a|0,Je|0,Xe|0)|0;z=C;g=yo(Fe|0,ze|0,Je|0,Xe|0)|0;k=C;te=((ie|0)<0)<<31>>31;Xe=yo(ie|0,te|0,Je|0,Xe|0)|0;Je=C;l=yo(ar|0,or|0,_|0,l|0)|0;_=C;ce=yo(t|0,j|0,fe|0,ce|0)|0;fe=C;W=yo(t|0,j|0,i|0,x|0)|0;K=C;N=yo(S|0,n|0,t|0,j|0)|0;P=C;M=yo(X|0,a|0,t|0,j|0)|0;T=C;ye=((ge|0)<0)<<31>>31;Ze=yo(ge|0,ye|0,t|0,j|0)|0;Qe=C;Re=yo(ie|0,te|0,t|0,j|0)|0;Oe=C;j=yo(ar|0,or|0,t|0,j|0)|0;t=C;F=yo(i|0,x|0,i|0,x|0)|0;U=C;de=((he|0)<0)<<31>>31;A=yo(he|0,de|0,ir|0,tr|0)|0;y=C;we=((be|0)<0)<<31>>31;er=yo(be|0,we|0,he|0,de|0)|0;$e=C;Ie=yo(ge|0,ye|0,i|0,x|0)|0;Ce=C;de=yo(ie|0,te|0,he|0,de|0)|0;he=C;x=yo(ar|0,or|0,i|0,x|0)|0;i=C;tr=yo(Ue|0,((Ue|0)<0)<<31>>31|0,ir|0,tr|0)|0;ir=C;Ue=yo(be|0,we|0,S|0,n|0)|0;Ne=C;pe=yo(ge|0,ye|0,S|0,n|0)|0;me=C;Z=yo(ie|0,te|0,S|0,n|0)|0;Q=C;n=yo(ar|0,or|0,S|0,n|0)|0;S=C;we=yo(be|0,we|0,X|0,a|0)|0;be=C;ee=yo(ge|0,ye|0,X|0,a|0)|0;$=C;c=yo(ie|0,te|0,c|0,((c|0)<0)<<31>>31|0)|0;b=C;a=yo(ar|0,or|0,X|0,a|0)|0;X=C;ze=yo(ge|0,ye|0,Fe|0,ze|0)|0;Fe=C;ye=yo(ie|0,te|0,s|0,H|0)|0;ge=C;H=yo(ar|0,or|0,s|0,H|0)|0;s=C;te=yo(ie|0,te|0,u|0,E|0)|0;ie=C;E=yo(ar|0,or|0,u|0,E|0)|0;u=C;p=yo(ar|0,or|0,r|0,p|0)|0;r=C;rr=fo(tr|0,ir|0,nr|0,rr|0)|0;$e=fo(rr|0,C|0,er|0,$e|0)|0;Qe=fo($e|0,C|0,Ze|0,Qe|0)|0;Je=fo(Qe|0,C|0,Xe|0,Je|0)|0;m=fo(Je|0,C|0,h|0,m|0)|0;h=C;ke=fo(Ye|0,We|0,ve|0,ke|0)|0;ve=C;ne=fo(Ke|0,Ge|0,re|0,ne|0)|0;re=C;je=fo(Be|0,Ve|0,De|0,je|0)|0;qe=fo(je|0,C|0,He|0,qe|0)|0;Fe=fo(qe|0,C|0,ze|0,Fe|0)|0;b=fo(Fe|0,C|0,c|0,b|0)|0;S=fo(b|0,C|0,n|0,S|0)|0;n=C;b=fo(m|0,h|0,33554432,0)|0;b=co(b|0,C|0,26)|0;c=C;Le=fo(Ue|0,Ne|0,Pe|0,Le|0)|0;Ce=fo(Le|0,C|0,Ie|0,Ce|0)|0;Oe=fo(Ce|0,C|0,Re|0,Oe|0)|0;_=fo(Oe|0,C|0,l|0,_|0)|0;_=fo(_|0,C|0,b|0,c|0)|0;l=C;c=po(b|0,c|0,26)|0;c=lo(m|0,h|0,c|0,C|0)|0;h=C;m=fo(S|0,n|0,33554432,0)|0;m=co(m|0,C|0,26)|0;b=C;Me=fo(xe|0,Se|0,Ee|0,Me|0)|0;Ae=fo(Me|0,C|0,Te|0,Ae|0)|0;ge=fo(Ae|0,C|0,ye|0,ge|0)|0;X=fo(ge|0,C|0,a|0,X|0)|0;X=fo(X|0,C|0,m|0,b|0)|0;a=C;b=po(m|0,b|0,26)|0;b=lo(S|0,n|0,b|0,C|0)|0;n=C;S=fo(_|0,l|0,16777216,0)|0;S=co(S|0,C|0,25)|0;m=C;be=fo(ke|0,ve|0,we|0,be|0)|0;me=fo(be|0,C|0,pe|0,me|0)|0;he=fo(me|0,C|0,de|0,he|0)|0;t=fo(he|0,C|0,j|0,t|0)|0;t=fo(t|0,C|0,S|0,m|0)|0;j=C;m=po(S|0,m|0,25)|0;m=lo(_|0,l|0,m|0,C|0)|0;l=C;_=fo(X|0,a|0,16777216,0)|0;_=co(_|0,C|0,25)|0;S=C;_e=fo(ce|0,fe|0,le|0,_e|0)|0;ue=fo(_e|0,C|0,se|0,ue|0)|0;oe=fo(ue|0,C|0,ae|0,oe|0)|0;ie=fo(oe|0,C|0,te|0,ie|0)|0;s=fo(ie|0,C|0,H|0,s|0)|0;s=fo(s|0,C|0,_|0,S|0)|0;H=C;S=po(_|0,S|0,25)|0;S=lo(X|0,a|0,S|0,C|0)|0;a=C;X=fo(t|0,j|0,33554432,0)|0;X=co(X|0,C|0,26)|0;_=C;$=fo(ne|0,re|0,ee|0,$|0)|0;Q=fo($|0,C|0,Z|0,Q|0)|0;i=fo(Q|0,C|0,x|0,i|0)|0;i=fo(i|0,C|0,X|0,_|0)|0;x=C;_=po(X|0,_|0,26)|0;_=lo(t|0,j|0,_|0,C|0)|0;j=fo(s|0,H|0,33554432,0)|0;j=co(j|0,C|0,26)|0;t=C;K=fo(J|0,Y|0,W|0,K|0)|0;B=fo(K|0,C|0,G|0,B|0)|0;D=fo(B|0,C|0,V|0,D|0)|0;u=fo(D|0,C|0,E|0,u|0)|0;u=fo(u|0,C|0,j|0,t|0)|0;E=C;t=po(j|0,t|0,26)|0;t=lo(s|0,H|0,t|0,C|0)|0;H=fo(i|0,x|0,16777216,0)|0;H=co(H|0,C|0,25)|0;s=C;n=fo(H|0,s|0,b|0,n|0)|0;b=C;s=po(H|0,s|0,25)|0;s=lo(i|0,x|0,s|0,C|0)|0;x=fo(u|0,E|0,16777216,0)|0;x=co(x|0,C|0,25)|0;i=C;U=fo(q|0,z|0,F|0,U|0)|0;P=fo(U|0,C|0,N|0,P|0)|0;I=fo(P|0,C|0,L|0,I|0)|0;O=fo(I|0,C|0,R|0,O|0)|0;r=fo(O|0,C|0,p|0,r|0)|0;r=fo(r|0,C|0,x|0,i|0)|0;p=C;i=po(x|0,i|0,25)|0;i=lo(u|0,E|0,i|0,C|0)|0;E=fo(n|0,b|0,33554432,0)|0;E=co(E|0,C|0,26)|0;u=C;a=fo(S|0,a|0,E|0,u|0)|0;u=po(E|0,u|0,26)|0;u=lo(n|0,b|0,u|0,C|0)|0;b=fo(r|0,p|0,33554432,0)|0;b=co(b|0,C|0,26)|0;n=C;y=fo(M|0,T|0,A|0,y|0)|0;k=fo(y|0,C|0,g|0,k|0)|0;w=fo(k|0,C|0,v|0,w|0)|0;f=fo(w|0,C|0,d|0,f|0)|0;f=fo(f|0,C|0,b|0,n|0)|0;d=C;n=po(b|0,n|0,26)|0;n=lo(r|0,p|0,n|0,C|0)|0;p=fo(f|0,d|0,16777216,0)|0;p=co(p|0,C|0,25)|0;r=C;b=yo(p|0,r|0,19,0)|0;h=fo(b|0,C|0,c|0,h|0)|0;c=C;r=po(p|0,r|0,25)|0;r=lo(f|0,d|0,r|0,C|0)|0;d=fo(h|0,c|0,33554432,0)|0;d=co(d|0,C|0,26)|0;f=C;l=fo(m|0,l|0,d|0,f|0)|0;f=po(d|0,f|0,26)|0;f=lo(h|0,c|0,f|0,C|0)|0;o[e>>2]=f;o[e+4>>2]=l;o[e+8>>2]=_;o[e+12>>2]=s;o[e+16>>2]=u;o[e+20>>2]=a;o[e+24>>2]=t;o[e+28>>2]=i;o[e+32>>2]=n;o[e+36>>2]=r;return}function Pi(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0,se=0,_e=0,le=0,fe=0,ce=0,he=0,de=0,me=0,pe=0,be=0,we=0,ve=0,ke=0,ge=0,ye=0,Ae=0,Te=0,Me=0,Ee=0,Se=0,xe=0,Oe=0,Re=0,Ce=0,Ie=0,Le=0,Pe=0,Ne=0,Ue=0,Fe=0,ze=0,qe=0,He=0,je=0,De=0,Ve=0,Be=0,Ge=0,Ke=0,We=0,Ye=0,Je=0,Xe=0,Qe=0,Ze=0,$e=0,er=0,rr=0,nr=0,ir=0,tr=0,or=0,ar=0,ur=0,sr=0,_r=0,lr=0,fr=0,cr=0,hr=0,dr=0,mr=0,pr=0,br=0,wr=0,vr=0,kr=0,gr=0,yr=0,Ar=0,Tr=0,Mr=0,Er=0,Sr=0,xr=0,Or=0,Rr=0,Cr=0,Ir=0,Lr=0,Pr=0,Nr=0,Ur=0,Fr=0,zr=0,qr=0,Hr=0,jr=0,Dr=0,Vr=0,Br=0,Gr=0,Kr=0,Wr=0,Yr=0,Jr=0,Xr=0,Qr=0,Zr=0,$r=0,en=0,rn=0,nn=0,tn=0,on=0,an=0,un=0,sn=0,_n=0,ln=0,fn=0,cn=0,hn=0,dn=0,mn=0,pn=0,bn=0,wn=0,vn=0,kn=0,gn=0,yn=0,An=0,Tn=0,Mn=0,En=0,Sn=0,xn=0,On=0,Rn=0,Cn=0,In=0,Ln=0,Pn=0,Nn=0,Un=0,Fn=0,zn=0,qn=0,Hn=0,jn=0,Dn=0,Vn=0,Bn=0,Gn=0;f=o[r>>2]|0;w=o[r+4>>2]|0;_=o[r+8>>2]|0;Vr=o[r+12>>2]|0;i=o[r+16>>2]|0;Me=o[r+20>>2]|0;Te=o[r+24>>2]|0;Mr=o[r+28>>2]|0;u=o[r+32>>2]|0;ae=o[r+36>>2]|0;L=o[n>>2]|0;N=o[n+4>>2]|0;R=o[n+8>>2]|0;x=o[n+12>>2]|0;E=o[n+16>>2]|0;T=o[n+20>>2]|0;y=o[n+24>>2]|0;k=o[n+28>>2]|0;l=o[n+32>>2]|0;v=o[n+36>>2]|0;jn=N*19|0;rn=R*19|0;br=x*19|0;Le=E*19|0;ln=T*19|0;Or=y*19|0;Ge=k*19|0;Gn=l*19|0;Vn=v*19|0;m=w<<1;t=Vr<<1;z=Me<<1;s=Mr<<1;n=ae<<1;d=((f|0)<0)<<31>>31;P=((L|0)<0)<<31>>31;qn=yo(L|0,P|0,f|0,d|0)|0;zn=C;U=((N|0)<0)<<31>>31;An=yo(N|0,U|0,f|0,d|0)|0;yn=C;I=((R|0)<0)<<31>>31;kr=yo(R|0,I|0,f|0,d|0)|0;vr=C;O=((x|0)<0)<<31>>31;Ue=yo(x|0,O|0,f|0,d|0)|0;Ne=C;S=((E|0)<0)<<31>>31;hn=yo(E|0,S|0,f|0,d|0)|0;cn=C;M=((T|0)<0)<<31>>31;Ir=yo(T|0,M|0,f|0,d|0)|0;Cr=C;A=((y|0)<0)<<31>>31;Ye=yo(y|0,A|0,f|0,d|0)|0;We=C;g=((k|0)<0)<<31>>31;_e=yo(k|0,g|0,f|0,d|0)|0;se=C;Dn=((l|0)<0)<<31>>31;j=yo(l|0,Dn|0,f|0,d|0)|0;H=C;d=yo(v|0,((v|0)<0)<<31>>31|0,f|0,d|0)|0;f=C;v=((w|0)<0)<<31>>31;tn=yo(L|0,P|0,w|0,v|0)|0;on=C;h=((m|0)<0)<<31>>31;Tr=yo(N|0,U|0,m|0,h|0)|0;Ar=C;ze=yo(R|0,I|0,w|0,v|0)|0;Fe=C;mn=yo(x|0,O|0,m|0,h|0)|0;dn=C;Pr=yo(E|0,S|0,w|0,v|0)|0;Lr=C;Xe=yo(T|0,M|0,m|0,h|0)|0;Je=C;fe=yo(y|0,A|0,w|0,v|0)|0;le=C;V=yo(k|0,g|0,m|0,h|0)|0;D=C;v=yo(l|0,Dn|0,w|0,v|0)|0;w=C;Dn=((Vn|0)<0)<<31>>31;h=yo(Vn|0,Dn|0,m|0,h|0)|0;m=C;l=((_|0)<0)<<31>>31;yr=yo(L|0,P|0,_|0,l|0)|0;gr=C;De=yo(N|0,U|0,_|0,l|0)|0;je=C;bn=yo(R|0,I|0,_|0,l|0)|0;pn=C;Ur=yo(x|0,O|0,_|0,l|0)|0;Nr=C;Ze=yo(E|0,S|0,_|0,l|0)|0;Qe=C;he=yo(T|0,M|0,_|0,l|0)|0;ce=C;G=yo(y|0,A|0,_|0,l|0)|0;B=C;g=yo(k|0,g|0,_|0,l|0)|0;k=C;Bn=((Gn|0)<0)<<31>>31;Mn=yo(Gn|0,Bn|0,_|0,l|0)|0;Tn=C;l=yo(Vn|0,Dn|0,_|0,l|0)|0;_=C;Br=((Vr|0)<0)<<31>>31;He=yo(L|0,P|0,Vr|0,Br|0)|0;qe=C;oe=((t|0)<0)<<31>>31;gn=yo(N|0,U|0,t|0,oe|0)|0;kn=C;zr=yo(R|0,I|0,Vr|0,Br|0)|0;Fr=C;er=yo(x|0,O|0,t|0,oe|0)|0;$e=C;me=yo(E|0,S|0,Vr|0,Br|0)|0;de=C;W=yo(T|0,M|0,t|0,oe|0)|0;K=C;A=yo(y|0,A|0,Vr|0,Br|0)|0;y=C;Ke=((Ge|0)<0)<<31>>31;Sn=yo(Ge|0,Ke|0,t|0,oe|0)|0;En=C;Br=yo(Gn|0,Bn|0,Vr|0,Br|0)|0;Vr=C;oe=yo(Vn|0,Dn|0,t|0,oe|0)|0;t=C;q=((i|0)<0)<<31>>31;vn=yo(L|0,P|0,i|0,q|0)|0;wn=C;Dr=yo(N|0,U|0,i|0,q|0)|0;jr=C;nr=yo(R|0,I|0,i|0,q|0)|0;rr=C;be=yo(x|0,O|0,i|0,q|0)|0;pe=C;J=yo(E|0,S|0,i|0,q|0)|0;Y=C;M=yo(T|0,M|0,i|0,q|0)|0;T=C;Rr=((Or|0)<0)<<31>>31;On=yo(Or|0,Rr|0,i|0,q|0)|0;xn=C;Kr=yo(Ge|0,Ke|0,i|0,q|0)|0;Gr=C;sr=yo(Gn|0,Bn|0,i|0,q|0)|0;ur=C;q=yo(Vn|0,Dn|0,i|0,q|0)|0;i=C;Ee=((Me|0)<0)<<31>>31;Hr=yo(L|0,P|0,Me|0,Ee|0)|0;qr=C;r=((z|0)<0)<<31>>31;ar=yo(N|0,U|0,z|0,r|0)|0;or=C;ve=yo(R|0,I|0,Me|0,Ee|0)|0;we=C;Q=yo(x|0,O|0,z|0,r|0)|0;X=C;S=yo(E|0,S|0,Me|0,Ee|0)|0;E=C;fn=((ln|0)<0)<<31>>31;Cn=yo(ln|0,fn|0,z|0,r|0)|0;Rn=C;Yr=yo(Or|0,Rr|0,Me|0,Ee|0)|0;Wr=C;lr=yo(Ge|0,Ke|0,z|0,r|0)|0;_r=C;Ee=yo(Gn|0,Bn|0,Me|0,Ee|0)|0;Me=C;r=yo(Vn|0,Dn|0,z|0,r|0)|0;z=C;a=((Te|0)<0)<<31>>31;tr=yo(L|0,P|0,Te|0,a|0)|0;ir=C;Ae=yo(N|0,U|0,Te|0,a|0)|0;ye=C;$=yo(R|0,I|0,Te|0,a|0)|0;Z=C;O=yo(x|0,O|0,Te|0,a|0)|0;x=C;Pe=((Le|0)<0)<<31>>31;Ln=yo(Le|0,Pe|0,Te|0,a|0)|0;In=C;Xr=yo(ln|0,fn|0,Te|0,a|0)|0;Jr=C;cr=yo(Or|0,Rr|0,Te|0,a|0)|0;fr=C;xe=yo(Ge|0,Ke|0,Te|0,a|0)|0;Se=C;c=yo(Gn|0,Bn|0,Te|0,a|0)|0;b=C;a=yo(Vn|0,Dn|0,Te|0,a|0)|0;Te=C;Er=((Mr|0)<0)<<31>>31;ge=yo(L|0,P|0,Mr|0,Er|0)|0;ke=C;te=((s|0)<0)<<31>>31;ie=yo(N|0,U|0,s|0,te|0)|0;ne=C;I=yo(R|0,I|0,Mr|0,Er|0)|0;R=C;wr=((br|0)<0)<<31>>31;Nn=yo(br|0,wr|0,s|0,te|0)|0;Pn=C;Zr=yo(Le|0,Pe|0,Mr|0,Er|0)|0;Qr=C;dr=yo(ln|0,fn|0,s|0,te|0)|0;hr=C;Re=yo(Or|0,Rr|0,Mr|0,Er|0)|0;Oe=C;un=yo(Ge|0,Ke|0,s|0,te|0)|0;an=C;Er=yo(Gn|0,Bn|0,Mr|0,Er|0)|0;Mr=C;te=yo(Vn|0,Dn|0,s|0,te|0)|0;s=C;F=((u|0)<0)<<31>>31;re=yo(L|0,P|0,u|0,F|0)|0;ee=C;U=yo(N|0,U|0,u|0,F|0)|0;N=C;nn=((rn|0)<0)<<31>>31;Fn=yo(rn|0,nn|0,u|0,F|0)|0;Un=C;en=yo(br|0,wr|0,u|0,F|0)|0;$r=C;pr=yo(Le|0,Pe|0,u|0,F|0)|0;mr=C;Ie=yo(ln|0,fn|0,u|0,F|0)|0;Ce=C;_n=yo(Or|0,Rr|0,u|0,F|0)|0;sn=C;xr=yo(Ge|0,Ke|0,u|0,F|0)|0;Sr=C;Be=yo(Gn|0,Bn|0,u|0,F|0)|0;Ve=C;F=yo(Vn|0,Dn|0,u|0,F|0)|0;u=C;ue=((ae|0)<0)<<31>>31;P=yo(L|0,P|0,ae|0,ue|0)|0;L=C;p=((n|0)<0)<<31>>31;jn=yo(jn|0,((jn|0)<0)<<31>>31|0,n|0,p|0)|0;Hn=C;nn=yo(rn|0,nn|0,ae|0,ue|0)|0;rn=C;wr=yo(br|0,wr|0,n|0,p|0)|0;br=C;Pe=yo(Le|0,Pe|0,ae|0,ue|0)|0;Le=C;fn=yo(ln|0,fn|0,n|0,p|0)|0;ln=C;Rr=yo(Or|0,Rr|0,ae|0,ue|0)|0;Or=C;Ke=yo(Ge|0,Ke|0,n|0,p|0)|0;Ge=C;ue=yo(Gn|0,Bn|0,ae|0,ue|0)|0;ae=C;p=yo(Vn|0,Dn|0,n|0,p|0)|0;n=C;zn=fo(jn|0,Hn|0,qn|0,zn|0)|0;Un=fo(zn|0,C|0,Fn|0,Un|0)|0;Pn=fo(Un|0,C|0,Nn|0,Pn|0)|0;In=fo(Pn|0,C|0,Ln|0,In|0)|0;Rn=fo(In|0,C|0,Cn|0,Rn|0)|0;xn=fo(Rn|0,C|0,On|0,xn|0)|0;En=fo(xn|0,C|0,Sn|0,En|0)|0;Tn=fo(En|0,C|0,Mn|0,Tn|0)|0;m=fo(Tn|0,C|0,h|0,m|0)|0;h=C;on=fo(An|0,yn|0,tn|0,on|0)|0;tn=C;wn=fo(gn|0,kn|0,vn|0,wn|0)|0;pn=fo(wn|0,C|0,bn|0,pn|0)|0;dn=fo(pn|0,C|0,mn|0,dn|0)|0;cn=fo(dn|0,C|0,hn|0,cn|0)|0;ln=fo(cn|0,C|0,fn|0,ln|0)|0;sn=fo(ln|0,C|0,_n|0,sn|0)|0;an=fo(sn|0,C|0,un|0,an|0)|0;b=fo(an|0,C|0,c|0,b|0)|0;z=fo(b|0,C|0,r|0,z|0)|0;r=C;b=fo(m|0,h|0,33554432,0)|0;b=co(b|0,C|0,26)|0;c=C;rn=fo(on|0,tn|0,nn|0,rn|0)|0;$r=fo(rn|0,C|0,en|0,$r|0)|0;Qr=fo($r|0,C|0,Zr|0,Qr|0)|0;Jr=fo(Qr|0,C|0,Xr|0,Jr|0)|0;Wr=fo(Jr|0,C|0,Yr|0,Wr|0)|0;Gr=fo(Wr|0,C|0,Kr|0,Gr|0)|0;Vr=fo(Gr|0,C|0,Br|0,Vr|0)|0;_=fo(Vr|0,C|0,l|0,_|0)|0;_=fo(_|0,C|0,b|0,c|0)|0;l=C;c=po(b|0,c|0,26)|0;c=lo(m|0,h|0,c|0,C|0)|0;h=C;m=fo(z|0,r|0,33554432,0)|0;m=co(m|0,C|0,26)|0;b=C;qr=fo(Dr|0,jr|0,Hr|0,qr|0)|0;Fr=fo(qr|0,C|0,zr|0,Fr|0)|0;Nr=fo(Fr|0,C|0,Ur|0,Nr|0)|0;Lr=fo(Nr|0,C|0,Pr|0,Lr|0)|0;Cr=fo(Lr|0,C|0,Ir|0,Cr|0)|0;Or=fo(Cr|0,C|0,Rr|0,Or|0)|0;Sr=fo(Or|0,C|0,xr|0,Sr|0)|0;Mr=fo(Sr|0,C|0,Er|0,Mr|0)|0;Te=fo(Mr|0,C|0,a|0,Te|0)|0;Te=fo(Te|0,C|0,m|0,b|0)|0;a=C;b=po(m|0,b|0,26)|0;b=lo(z|0,r|0,b|0,C|0)|0;r=C;z=fo(_|0,l|0,16777216,0)|0;z=co(z|0,C|0,25)|0;m=C;gr=fo(Tr|0,Ar|0,yr|0,gr|0)|0;vr=fo(gr|0,C|0,kr|0,vr|0)|0;br=fo(vr|0,C|0,wr|0,br|0)|0;mr=fo(br|0,C|0,pr|0,mr|0)|0;hr=fo(mr|0,C|0,dr|0,hr|0)|0;fr=fo(hr|0,C|0,cr|0,fr|0)|0;_r=fo(fr|0,C|0,lr|0,_r|0)|0;ur=fo(_r|0,C|0,sr|0,ur|0)|0;t=fo(ur|0,C|0,oe|0,t|0)|0;t=fo(t|0,C|0,z|0,m|0)|0;oe=C;m=po(z|0,m|0,25)|0;m=lo(_|0,l|0,m|0,C|0)|0;l=C;_=fo(Te|0,a|0,16777216,0)|0;_=co(_|0,C|0,25)|0;z=C;ir=fo(ar|0,or|0,tr|0,ir|0)|0;rr=fo(ir|0,C|0,nr|0,rr|0)|0;$e=fo(rr|0,C|0,er|0,$e|0)|0;Qe=fo($e|0,C|0,Ze|0,Qe|0)|0;Je=fo(Qe|0,C|0,Xe|0,Je|0)|0;We=fo(Je|0,C|0,Ye|0,We|0)|0;Ge=fo(We|0,C|0,Ke|0,Ge|0)|0;Ve=fo(Ge|0,C|0,Be|0,Ve|0)|0;s=fo(Ve|0,C|0,te|0,s|0)|0;s=fo(s|0,C|0,_|0,z|0)|0;te=C;z=po(_|0,z|0,25)|0;z=lo(Te|0,a|0,z|0,C|0)|0;a=C;Te=fo(t|0,oe|0,33554432,0)|0;Te=co(Te|0,C|0,26)|0;_=C;qe=fo(De|0,je|0,He|0,qe|0)|0;Fe=fo(qe|0,C|0,ze|0,Fe|0)|0;Ne=fo(Fe|0,C|0,Ue|0,Ne|0)|0;Le=fo(Ne|0,C|0,Pe|0,Le|0)|0;Ce=fo(Le|0,C|0,Ie|0,Ce|0)|0;Oe=fo(Ce|0,C|0,Re|0,Oe|0)|0;Se=fo(Oe|0,C|0,xe|0,Se|0)|0;Me=fo(Se|0,C|0,Ee|0,Me|0)|0;i=fo(Me|0,C|0,q|0,i|0)|0;i=fo(i|0,C|0,Te|0,_|0)|0;q=C;_=po(Te|0,_|0,26)|0;_=lo(t|0,oe|0,_|0,C|0)|0;oe=fo(s|0,te|0,33554432,0)|0;oe=co(oe|0,C|0,26)|0;t=C;ke=fo(Ae|0,ye|0,ge|0,ke|0)|0;we=fo(ke|0,C|0,ve|0,we|0)|0;pe=fo(we|0,C|0,be|0,pe|0)|0;de=fo(pe|0,C|0,me|0,de|0)|0;ce=fo(de|0,C|0,he|0,ce|0)|0;le=fo(ce|0,C|0,fe|0,le|0)|0;se=fo(le|0,C|0,_e|0,se|0)|0;ae=fo(se|0,C|0,ue|0,ae|0)|0;u=fo(ae|0,C|0,F|0,u|0)|0;u=fo(u|0,C|0,oe|0,t|0)|0;F=C;t=po(oe|0,t|0,26)|0;t=lo(s|0,te|0,t|0,C|0)|0;te=fo(i|0,q|0,16777216,0)|0;te=co(te|0,C|0,25)|0;s=C;r=fo(te|0,s|0,b|0,r|0)|0;b=C;s=po(te|0,s|0,25)|0;s=lo(i|0,q|0,s|0,C|0)|0;q=fo(u|0,F|0,16777216,0)|0;q=co(q|0,C|0,25)|0;i=C;ee=fo(ie|0,ne|0,re|0,ee|0)|0;Z=fo(ee|0,C|0,$|0,Z|0)|0;X=fo(Z|0,C|0,Q|0,X|0)|0;Y=fo(X|0,C|0,J|0,Y|0)|0;K=fo(Y|0,C|0,W|0,K|0)|0;B=fo(K|0,C|0,G|0,B|0)|0;D=fo(B|0,C|0,V|0,D|0)|0;H=fo(D|0,C|0,j|0,H|0)|0;n=fo(H|0,C|0,p|0,n|0)|0;n=fo(n|0,C|0,q|0,i|0)|0;p=C;i=po(q|0,i|0,25)|0;i=lo(u|0,F|0,i|0,C|0)|0;F=fo(r|0,b|0,33554432,0)|0;F=co(F|0,C|0,26)|0;u=C;a=fo(z|0,a|0,F|0,u|0)|0;u=po(F|0,u|0,26)|0;u=lo(r|0,b|0,u|0,C|0)|0;b=fo(n|0,p|0,33554432,0)|0;b=co(b|0,C|0,26)|0;r=C;L=fo(U|0,N|0,P|0,L|0)|0;R=fo(L|0,C|0,I|0,R|0)|0;x=fo(R|0,C|0,O|0,x|0)|0;E=fo(x|0,C|0,S|0,E|0)|0;T=fo(E|0,C|0,M|0,T|0)|0;y=fo(T|0,C|0,A|0,y|0)|0;k=fo(y|0,C|0,g|0,k|0)|0;w=fo(k|0,C|0,v|0,w|0)|0;f=fo(w|0,C|0,d|0,f|0)|0;f=fo(f|0,C|0,b|0,r|0)|0;d=C;r=po(b|0,r|0,26)|0;r=lo(n|0,p|0,r|0,C|0)|0;p=fo(f|0,d|0,16777216,0)|0;p=co(p|0,C|0,25)|0;n=C;b=yo(p|0,n|0,19,0)|0;h=fo(b|0,C|0,c|0,h|0)|0;c=C;n=po(p|0,n|0,25)|0;n=lo(f|0,d|0,n|0,C|0)|0;d=fo(h|0,c|0,33554432,0)|0;d=co(d|0,C|0,26)|0;f=C;l=fo(m|0,l|0,d|0,f|0)|0;f=po(d|0,f|0,26)|0;f=lo(h|0,c|0,f|0,C|0)|0;o[e>>2]=f;o[e+4>>2]=l;o[e+8>>2]=_;o[e+12>>2]=s;o[e+16>>2]=u;o[e+20>>2]=a;o[e+24>>2]=t;o[e+28>>2]=i;o[e+32>>2]=r;o[e+36>>2]=n;return}function Ni(e,r){e=e|0;r=r|0;var n=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0;c=o[r>>2]|0;f=o[r+4>>2]|0;l=o[r+8>>2]|0;_=o[r+12>>2]|0;s=o[r+16>>2]|0;u=o[r+20>>2]|0;a=o[r+24>>2]|0;t=o[r+28>>2]|0;d=o[r+32>>2]|0;n=o[r+36>>2]|0;c=(((((((((((((n*19|0)+16777216>>25)+c>>26)+f>>25)+l>>26)+_>>25)+s>>26)+u>>25)+a>>26)+t>>25)+d>>26)+n>>25)*19|0)+c|0;h=c>>26;f=h+f|0;h=c-(h<<26)|0;c=f>>25;l=c+l|0;c=f-(c<<25)|0;f=l>>26;_=f+_|0;f=l-(f<<26)|0;l=_>>25;s=l+s|0;l=_-(l<<25)|0;_=s>>26;u=_+u|0;_=s-(_<<26)|0;s=u>>25;a=s+a|0;s=u-(s<<25)|0;u=a>>26;t=u+t|0;u=a-(u<<26)|0;a=t>>25;r=a+d|0;a=t-(a<<25)|0;t=r>>26;n=t+n|0;t=r-(t<<26)|0;r=n&33554431;i[e>>0]=h;i[e+1>>0]=h>>>8;i[e+2>>0]=h>>>16;i[e+3>>0]=c<<2|h>>>24;i[e+4>>0]=c>>>6;i[e+5>>0]=c>>>14;i[e+6>>0]=f<<3|c>>>22;i[e+7>>0]=f>>>5;i[e+8>>0]=f>>>13;i[e+9>>0]=l<<5|f>>>21;i[e+10>>0]=l>>>3;i[e+11>>0]=l>>>11;i[e+12>>0]=_<<6|l>>>19;i[e+13>>0]=_>>>2;i[e+14>>0]=_>>>10;i[e+15>>0]=_>>>18;i[e+16>>0]=s;i[e+17>>0]=s>>>8;i[e+18>>0]=s>>>16;i[e+19>>0]=u<<1|s>>>24;i[e+20>>0]=u>>>7;i[e+21>>0]=u>>>15;i[e+22>>0]=a<<3|u>>>23;i[e+23>>0]=a>>>5;i[e+24>>0]=a>>>13;i[e+25>>0]=t<<4|a>>>21;i[e+26>>0]=t>>>4;i[e+27>>0]=t>>>12;i[e+28>>0]=t>>>20|r<<6;i[e+29>>0]=n>>>2;i[e+30>>0]=n>>>10;i[e+31>>0]=r>>>18;return}function Ui(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,o=0,a=0;a=f;f=f+128|0;t=a+80|0;o=a+40|0;i=a;Li(t,r);Li(o,t);Li(o,o);Pi(o,r,o);Pi(t,t,o);Li(t,t);Pi(t,o,t);Li(o,t);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Pi(t,o,t);Li(o,t);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Pi(o,o,t);Li(i,o);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Pi(o,i,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Pi(t,o,t);Li(o,t);n=1;do{Li(o,o);n=n+1|0}while((n|0)!=50);Pi(o,o,t);Li(i,o);n=1;do{Li(i,i);n=n+1|0}while((n|0)!=100);Pi(o,i,o);Li(o,o);n=1;do{Li(o,o);n=n+1|0}while((n|0)!=50);Pi(t,o,t);Li(t,t);Li(t,t);Pi(e,t,r);f=a;return}function Fi(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0,se=0,_e=0,le=0,fe=0,ce=0,he=0,de=0,me=0,pe=0,be=0,we=0,ve=0,ke=0,ge=0,ye=0,Ae=0,Te=0,Me=0,Ee=0,Se=0,xe=0,Oe=0,Re=0,Ce=0,Ie=0,Le=0,Pe=0,Ne=0,Ue=0,Fe=0,ze=0,qe=0,He=0,je=0,De=0,Ve=0,Be=0,Ge=0,Ke=0,We=0,Ye=0,Je=0,Xe=0,Qe=0,Ze=0,$e=0,er=0,rr=0,nr=0,ir=0,tr=0,or=0,ar=0;rr=o[r>>2]|0;Fe=o[r+4>>2]|0;_=o[r+8>>2]|0;ie=o[r+12>>2]|0;i=o[r+16>>2]|0;ir=o[r+20>>2]|0;A=o[r+24>>2]|0;me=o[r+28>>2]|0;u=o[r+32>>2]|0;r=o[r+36>>2]|0;f=rr<<1;h=Fe<<1;Je=_<<1;t=ie<<1;Ce=i<<1;n=ir<<1;de=A<<1;s=me<<1;Ye=ir*38|0;Ne=A*19|0;oe=me*38|0;J=u*19|0;ar=r*38|0;nr=((rr|0)<0)<<31>>31;nr=yo(rr|0,nr|0,rr|0,nr|0)|0;rr=C;d=((f|0)<0)<<31>>31;ze=((Fe|0)<0)<<31>>31;Ke=yo(f|0,d|0,Fe|0,ze|0)|0;Ge=C;l=((_|0)<0)<<31>>31;He=yo(_|0,l|0,f|0,d|0)|0;qe=C;te=((ie|0)<0)<<31>>31;Re=yo(ie|0,te|0,f|0,d|0)|0;Oe=C;k=((i|0)<0)<<31>>31;we=yo(i|0,k|0,f|0,d|0)|0;be=C;tr=((ir|0)<0)<<31>>31;se=yo(ir|0,tr|0,f|0,d|0)|0;ue=C;a=((A|0)<0)<<31>>31;Z=yo(A|0,a|0,f|0,d|0)|0;Q=C;pe=((me|0)<0)<<31>>31;D=yo(me|0,pe|0,f|0,d|0)|0;j=C;w=((u|0)<0)<<31>>31;I=yo(u|0,w|0,f|0,d|0)|0;R=C;p=((r|0)<0)<<31>>31;d=yo(r|0,p|0,f|0,d|0)|0;f=C;m=((h|0)<0)<<31>>31;ze=yo(h|0,m|0,Fe|0,ze|0)|0;Fe=C;xe=yo(h|0,m|0,_|0,l|0)|0;Se=C;y=((t|0)<0)<<31>>31;ye=yo(t|0,y|0,h|0,m|0)|0;ge=C;ce=yo(i|0,k|0,h|0,m|0)|0;fe=C;v=((n|0)<0)<<31>>31;ee=yo(n|0,v|0,h|0,m|0)|0;$=C;B=yo(A|0,a|0,h|0,m|0)|0;V=C;g=((s|0)<0)<<31>>31;P=yo(s|0,g|0,h|0,m|0)|0;L=C;c=yo(u|0,w|0,h|0,m|0)|0;b=C;or=((ar|0)<0)<<31>>31;m=yo(ar|0,or|0,h|0,m|0)|0;h=C;ke=yo(_|0,l|0,_|0,l|0)|0;ve=C;Xe=((Je|0)<0)<<31>>31;le=yo(Je|0,Xe|0,ie|0,te|0)|0;_e=C;ne=yo(i|0,k|0,Je|0,Xe|0)|0;re=C;Y=yo(ir|0,tr|0,Je|0,Xe|0)|0;W=C;H=yo(A|0,a|0,Je|0,Xe|0)|0;q=C;M=yo(me|0,pe|0,Je|0,Xe|0)|0;T=C;X=((J|0)<0)<<31>>31;Xe=yo(J|0,X|0,Je|0,Xe|0)|0;Je=C;l=yo(ar|0,or|0,_|0,l|0)|0;_=C;te=yo(t|0,y|0,ie|0,te|0)|0;ie=C;K=yo(t|0,y|0,i|0,k|0)|0;G=C;U=yo(n|0,v|0,t|0,y|0)|0;N=C;O=yo(A|0,a|0,t|0,y|0)|0;x=C;ae=((oe|0)<0)<<31>>31;Ze=yo(oe|0,ae|0,t|0,y|0)|0;Qe=C;De=yo(J|0,X|0,t|0,y|0)|0;je=C;y=yo(ar|0,or|0,t|0,y|0)|0;t=C;z=yo(i|0,k|0,i|0,k|0)|0;F=C;Ie=((Ce|0)<0)<<31>>31;S=yo(Ce|0,Ie|0,ir|0,tr|0)|0;E=C;Ue=((Ne|0)<0)<<31>>31;er=yo(Ne|0,Ue|0,Ce|0,Ie|0)|0;$e=C;Be=yo(oe|0,ae|0,i|0,k|0)|0;Ve=C;Ie=yo(J|0,X|0,Ce|0,Ie|0)|0;Ce=C;k=yo(ar|0,or|0,i|0,k|0)|0;i=C;tr=yo(Ye|0,((Ye|0)<0)<<31>>31|0,ir|0,tr|0)|0;ir=C;Ye=yo(Ne|0,Ue|0,n|0,v|0)|0;We=C;Pe=yo(oe|0,ae|0,n|0,v|0)|0;Le=C;Te=yo(J|0,X|0,n|0,v|0)|0;Ae=C;v=yo(ar|0,or|0,n|0,v|0)|0;n=C;Ue=yo(Ne|0,Ue|0,A|0,a|0)|0;Ne=C;Ee=yo(oe|0,ae|0,A|0,a|0)|0;Me=C;de=yo(J|0,X|0,de|0,((de|0)<0)<<31>>31|0)|0;he=C;a=yo(ar|0,or|0,A|0,a|0)|0;A=C;pe=yo(oe|0,ae|0,me|0,pe|0)|0;me=C;ae=yo(J|0,X|0,s|0,g|0)|0;oe=C;g=yo(ar|0,or|0,s|0,g|0)|0;s=C;X=yo(J|0,X|0,u|0,w|0)|0;J=C;w=yo(ar|0,or|0,u|0,w|0)|0;u=C;p=yo(ar|0,or|0,r|0,p|0)|0;r=C;rr=fo(tr|0,ir|0,nr|0,rr|0)|0;$e=fo(rr|0,C|0,er|0,$e|0)|0;Qe=fo($e|0,C|0,Ze|0,Qe|0)|0;Je=fo(Qe|0,C|0,Xe|0,Je|0)|0;h=fo(Je|0,C|0,m|0,h|0)|0;m=C;Ge=fo(Ye|0,We|0,Ke|0,Ge|0)|0;Ve=fo(Ge|0,C|0,Be|0,Ve|0)|0;je=fo(Ve|0,C|0,De|0,je|0)|0;_=fo(je|0,C|0,l|0,_|0)|0;l=C;Fe=fo(He|0,qe|0,ze|0,Fe|0)|0;Ne=fo(Fe|0,C|0,Ue|0,Ne|0)|0;Le=fo(Ne|0,C|0,Pe|0,Le|0)|0;Ce=fo(Le|0,C|0,Ie|0,Ce|0)|0;t=fo(Ce|0,C|0,y|0,t|0)|0;y=C;Se=fo(Re|0,Oe|0,xe|0,Se|0)|0;Me=fo(Se|0,C|0,Ee|0,Me|0)|0;Ae=fo(Me|0,C|0,Te|0,Ae|0)|0;i=fo(Ae|0,C|0,k|0,i|0)|0;k=C;ve=fo(ye|0,ge|0,ke|0,ve|0)|0;be=fo(ve|0,C|0,we|0,be|0)|0;me=fo(be|0,C|0,pe|0,me|0)|0;he=fo(me|0,C|0,de|0,he|0)|0;n=fo(he|0,C|0,v|0,n|0)|0;v=C;_e=fo(ce|0,fe|0,le|0,_e|0)|0;ue=fo(_e|0,C|0,se|0,ue|0)|0;oe=fo(ue|0,C|0,ae|0,oe|0)|0;A=fo(oe|0,C|0,a|0,A|0)|0;a=C;re=fo(te|0,ie|0,ne|0,re|0)|0;$=fo(re|0,C|0,ee|0,$|0)|0;Q=fo($|0,C|0,Z|0,Q|0)|0;J=fo(Q|0,C|0,X|0,J|0)|0;s=fo(J|0,C|0,g|0,s|0)|0;g=C;G=fo(Y|0,W|0,K|0,G|0)|0;V=fo(G|0,C|0,B|0,V|0)|0;j=fo(V|0,C|0,D|0,j|0)|0;u=fo(j|0,C|0,w|0,u|0)|0;w=C;F=fo(H|0,q|0,z|0,F|0)|0;N=fo(F|0,C|0,U|0,N|0)|0;L=fo(N|0,C|0,P|0,L|0)|0;R=fo(L|0,C|0,I|0,R|0)|0;r=fo(R|0,C|0,p|0,r|0)|0;p=C;E=fo(O|0,x|0,S|0,E|0)|0;T=fo(E|0,C|0,M|0,T|0)|0;b=fo(T|0,C|0,c|0,b|0)|0;f=fo(b|0,C|0,d|0,f|0)|0;d=C;m=po(h|0,m|0,1)|0;h=C;l=po(_|0,l|0,1)|0;_=C;y=po(t|0,y|0,1)|0;t=C;k=po(i|0,k|0,1)|0;i=C;v=po(n|0,v|0,1)|0;n=C;a=po(A|0,a|0,1)|0;A=C;g=po(s|0,g|0,1)|0;s=C;w=po(u|0,w|0,1)|0;u=C;p=po(r|0,p|0,1)|0;r=C;d=po(f|0,d|0,1)|0;f=C;b=fo(m|0,h|0,33554432,0)|0;b=co(b|0,C|0,26)|0;c=C;_=fo(b|0,c|0,l|0,_|0)|0;l=C;c=po(b|0,c|0,26)|0;c=lo(m|0,h|0,c|0,C|0)|0;h=C;m=fo(v|0,n|0,33554432,0)|0;m=co(m|0,C|0,26)|0;b=C;A=fo(m|0,b|0,a|0,A|0)|0;a=C;b=po(m|0,b|0,26)|0;b=lo(v|0,n|0,b|0,C|0)|0;n=C;v=fo(_|0,l|0,16777216,0)|0;v=co(v|0,C|0,25)|0;m=C;t=fo(v|0,m|0,y|0,t|0)|0;y=C;m=po(v|0,m|0,25)|0;m=lo(_|0,l|0,m|0,C|0)|0;l=C;_=fo(A|0,a|0,16777216,0)|0;_=co(_|0,C|0,25)|0;v=C;s=fo(_|0,v|0,g|0,s|0)|0;g=C;v=po(_|0,v|0,25)|0;v=lo(A|0,a|0,v|0,C|0)|0;a=C;A=fo(t|0,y|0,33554432,0)|0;A=co(A|0,C|0,26)|0;_=C;i=fo(A|0,_|0,k|0,i|0)|0;k=C;_=po(A|0,_|0,26)|0;_=lo(t|0,y|0,_|0,C|0)|0;y=fo(s|0,g|0,33554432,0)|0;y=co(y|0,C|0,26)|0;t=C;u=fo(y|0,t|0,w|0,u|0)|0;w=C;t=po(y|0,t|0,26)|0;t=lo(s|0,g|0,t|0,C|0)|0;g=fo(i|0,k|0,16777216,0)|0;g=co(g|0,C|0,25)|0;s=C;n=fo(g|0,s|0,b|0,n|0)|0;b=C;s=po(g|0,s|0,25)|0;s=lo(i|0,k|0,s|0,C|0)|0;k=fo(u|0,w|0,16777216,0)|0;k=co(k|0,C|0,25)|0;i=C;r=fo(k|0,i|0,p|0,r|0)|0;p=C;i=po(k|0,i|0,25)|0;i=lo(u|0,w|0,i|0,C|0)|0;w=fo(n|0,b|0,33554432,0)|0;w=co(w|0,C|0,26)|0;u=C;a=fo(v|0,a|0,w|0,u|0)|0;u=po(w|0,u|0,26)|0;u=lo(n|0,b|0,u|0,C|0)|0;b=fo(r|0,p|0,33554432,0)|0;b=co(b|0,C|0,26)|0;n=C;f=fo(b|0,n|0,d|0,f|0)|0;d=C;n=po(b|0,n|0,26)|0;n=lo(r|0,p|0,n|0,C|0)|0;p=fo(f|0,d|0,16777216,0)|0;p=co(p|0,C|0,25)|0;r=C;b=yo(p|0,r|0,19,0)|0;h=fo(b|0,C|0,c|0,h|0)|0;c=C;r=po(p|0,r|0,25)|0;r=lo(f|0,d|0,r|0,C|0)|0;d=fo(h|0,c|0,33554432,0)|0;d=co(d|0,C|0,26)|0;f=C;l=fo(m|0,l|0,d|0,f|0)|0;f=po(d|0,f|0,26)|0;f=lo(h|0,c|0,f|0,C|0)|0;o[e>>2]=f;o[e+4>>2]=l;o[e+8>>2]=_;o[e+12>>2]=s;o[e+16>>2]=u;o[e+20>>2]=a;o[e+24>>2]=t;o[e+28>>2]=i;o[e+32>>2]=n;o[e+36>>2]=r;return}function zi(e){e=e|0;var r=0,n=0,t=0,o=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0,se=0,_e=0,le=0,fe=0,ce=0,he=0,de=0,me=0,pe=0,be=0,we=0,ve=0,ke=0,ge=0,ye=0,Ae=0,Te=0,Me=0,Ee=0,Se=0,xe=0,Oe=0,Re=0,Ce=0,Ie=0,Le=0,Pe=0,Ne=0,Ue=0,Fe=0,ze=0,qe=0,He=0,je=0,De=0,Ve=0,Be=0,Ge=0,Ke=0,We=0,Ye=0,Je=0,Xe=0,Qe=0,Ze=0,$e=0,er=0,rr=0,nr=0,ir=0,tr=0,or=0,ar=0;te=e+1|0;re=e+2|0;x=i[re>>0]|0;t=a[e>>0]|0;h=po(a[te>>0]|0|0,0,8)|0;ge=C;x=x&255;W=po(x|0,0,16)|0;ee=e+3|0;T=po(a[ee>>0]|0|0,0,8)|0;ae=C;$=e+4|0;K=po(a[$>>0]|0|0,0,16)|0;ae=ae|C;X=e+5|0;q=a[X>>0]|0;J=po(q|0,0,24)|0;ae=mo(T|x|K|J|0,ae|C|0,5)|0;J=e+6|0;K=e+7|0;x=i[K>>0]|0;T=po(a[J>>0]|0|0,0,8)|0;Se=C;x=x&255;G=po(x|0,0,16)|0;Se=mo(T|q|G|0,Se|C|0,2)|0;G=e+8|0;q=po(a[G>>0]|0|0,0,8)|0;T=C;B=e+9|0;xe=po(a[B>>0]|0|0,0,16)|0;T=T|C;j=e+10|0;Be=a[j>>0]|0;H=po(Be|0,0,24)|0;T=mo(q|x|xe|H|0,T|C|0,7)|0;H=e+11|0;xe=po(a[H>>0]|0|0,0,8)|0;x=C;q=e+12|0;I=po(a[q>>0]|0|0,0,16)|0;x=x|C;U=e+13|0;k=a[U>>0]|0;N=po(k|0,0,24)|0;x=mo(xe|Be|I|N|0,x|C|0,4)|0;N=e+14|0;I=e+15|0;Be=i[I>>0]|0;xe=po(a[N>>0]|0|0,0,8)|0;Oe=C;Be=Be&255;R=po(Be|0,0,16)|0;Oe=mo(xe|k|R|0,Oe|C|0,1)|0;R=e+16|0;k=po(a[R>>0]|0|0,0,8)|0;xe=C;O=e+17|0;y=po(a[O>>0]|0|0,0,16)|0;xe=xe|C;E=e+18|0;g=a[E>>0]|0;M=po(g|0,0,24)|0;xe=mo(k|Be|y|M|0,xe|C|0,6)|0;M=e+19|0;y=e+20|0;Be=i[y>>0]|0;k=po(a[M>>0]|0|0,0,8)|0;Ge=C;Be=po(Be&255|0,0,16)|0;Ge=mo(k|g|Be|0,Ge|C|0,3)|0;Be=C;g=e+21|0;k=e+22|0;b=e+23|0;he=i[b>>0]|0;er=a[g>>0]|0;rr=po(a[k>>0]|0|0,0,8)|0;Ze=C;he=he&255;$e=po(he|0,0,16)|0;p=e+24|0;Ue=po(a[p>>0]|0|0,0,8)|0;je=C;m=e+25|0;s=po(a[m>>0]|0|0,0,16)|0;je=je|C;c=e+26|0;Ae=a[c>>0]|0;f=po(Ae|0,0,24)|0;je=mo(Ue|he|s|f|0,je|C|0,5)|0;f=e+27|0;s=e+28|0;he=i[s>>0]|0;Ue=po(a[f>>0]|0|0,0,8)|0;Qe=C;he=he&255;u=po(he|0,0,16)|0;Qe=mo(Ue|Ae|u|0,Qe|C|0,2)|0;u=e+29|0;Ae=po(a[u>>0]|0|0,0,8)|0;Ue=C;o=e+30|0;or=po(a[o>>0]|0|0,0,16)|0;Ue=Ue|C;r=e+31|0;pe=a[r>>0]|0;de=po(pe|0,0,24)|0;Ue=mo(Ae|he|or|de|0,Ue|C|0,7)|0;de=po(a[e+32>>0]|0|0,0,8)|0;or=C;he=po(a[e+33>>0]|0|0,0,16)|0;or=or|C;Ae=a[e+34>>0]|0;fe=po(Ae|0,0,24)|0;or=mo(de|pe|he|fe|0,or|C|0,4)|0;fe=i[e+36>>0]|0;he=po(a[e+35>>0]|0|0,0,8)|0;pe=C;fe=fe&255;de=po(fe|0,0,16)|0;pe=mo(he|Ae|de|0,pe|C|0,1)|0;de=po(a[e+37>>0]|0|0,0,8)|0;Ae=C;he=po(a[e+38>>0]|0|0,0,16)|0;Ae=Ae|C;ze=a[e+39>>0]|0;oe=po(ze|0,0,24)|0;Ae=mo(de|fe|he|oe|0,Ae|C|0,6)|0;oe=i[e+41>>0]|0;he=po(a[e+40>>0]|0|0,0,8)|0;fe=C;oe=po(oe&255|0,0,16)|0;fe=mo(he|ze|oe|0,fe|C|0,3)|0;oe=C;ze=i[e+44>>0]|0;he=a[e+42>>0]|0;de=po(a[e+43>>0]|0|0,0,8)|0;_=C;ze=ze&255;Me=po(ze|0,0,16)|0;_e=po(a[e+45>>0]|0|0,0,8)|0;F=C;Y=po(a[e+46>>0]|0|0,0,16)|0;F=F|C;ar=a[e+47>>0]|0;d=po(ar|0,0,24)|0;F=mo(_e|ze|Y|d|0,F|C|0,5)|0;d=i[e+49>>0]|0;Y=po(a[e+48>>0]|0|0,0,8)|0;ze=C;d=d&255;_e=po(d|0,0,16)|0;ze=mo(Y|ar|_e|0,ze|C|0,2)|0;ze=ze&2097151;_e=po(a[e+50>>0]|0|0,0,8)|0;ar=C;Y=po(a[e+51>>0]|0|0,0,16)|0;ar=ar|C;Ee=a[e+52>>0]|0;z=po(Ee|0,0,24)|0;ar=mo(_e|d|Y|z|0,ar|C|0,7)|0;ar=ar&2097151;z=po(a[e+53>>0]|0|0,0,8)|0;Y=C;d=po(a[e+54>>0]|0|0,0,16)|0;Y=Y|C;_e=a[e+55>>0]|0;V=po(_e|0,0,24)|0;Y=mo(z|Ee|d|V|0,Y|C|0,4)|0;Y=Y&2097151;V=i[e+57>>0]|0;d=po(a[e+56>>0]|0|0,0,8)|0;Ee=C;V=V&255;z=po(V|0,0,16)|0;Ee=mo(d|_e|z|0,Ee|C|0,1)|0;Ee=Ee&2097151;z=po(a[e+58>>0]|0|0,0,8)|0;_e=C;d=po(a[e+59>>0]|0|0,0,16)|0;_e=_e|C;ue=a[e+60>>0]|0;D=po(ue|0,0,24)|0;_e=mo(z|V|d|D|0,_e|C|0,6)|0;_e=_e&2097151;D=po(a[e+61>>0]|0|0,0,8)|0;d=C;V=po(a[e+62>>0]|0|0,0,16)|0;d=d|C;z=po(a[e+63>>0]|0|0,0,24)|0;d=mo(D|ue|V|z|0,d|C|0,3)|0;z=C;V=yo(d|0,z|0,666643,0)|0;ue=C;D=yo(d|0,z|0,470296,0)|0;P=C;ne=yo(d|0,z|0,654183,0)|0;ve=C;Re=yo(d|0,z|0,-997805,-1)|0;v=C;l=yo(d|0,z|0,136657,0)|0;S=C;z=yo(d|0,z|0,-683901,-1)|0;_=fo(z|0,C|0,de|he|Me&2031616|0,_|0)|0;Me=C;he=yo(_e|0,0,666643,0)|0;de=C;z=yo(_e|0,0,470296,0)|0;d=C;We=yo(_e|0,0,654183,0)|0;w=C;ce=yo(_e|0,0,-997805,-1)|0;Z=C;Te=yo(_e|0,0,136657,0)|0;we=C;_e=yo(_e|0,0,-683901,-1)|0;L=C;n=yo(Ee|0,0,666643,0)|0;be=C;ye=yo(Ee|0,0,470296,0)|0;Fe=C;Ce=yo(Ee|0,0,654183,0)|0;ie=C;nr=yo(Ee|0,0,-997805,-1)|0;Ke=C;le=yo(Ee|0,0,136657,0)|0;A=C;Ee=yo(Ee|0,0,-683901,-1)|0;Ae=fo(Ee|0,C|0,Ae&2097151|0,0)|0;we=fo(Ae|0,C|0,Te|0,we|0)|0;v=fo(we|0,C|0,Re|0,v|0)|0;Re=C;we=yo(Y|0,0,666643,0)|0;Te=C;Ae=yo(Y|0,0,470296,0)|0;Ee=C;Ye=yo(Y|0,0,654183,0)|0;Q=C;Le=yo(Y|0,0,-997805,-1)|0;Ie=C;tr=yo(Y|0,0,136657,0)|0;ir=C;Y=yo(Y|0,0,-683901,-1)|0;me=C;se=yo(ar|0,0,666643,0)|0;ke=C;De=yo(ar|0,0,470296,0)|0;Ve=C;He=yo(ar|0,0,654183,0)|0;qe=C;Xe=yo(ar|0,0,-997805,-1)|0;Je=C;Ne=yo(ar|0,0,136657,0)|0;Pe=C;ar=yo(ar|0,0,-683901,-1)|0;or=fo(ar|0,C|0,or&2097151|0,0)|0;ir=fo(or|0,C|0,tr|0,ir|0)|0;Ke=fo(ir|0,C|0,nr|0,Ke|0)|0;w=fo(Ke|0,C|0,We|0,w|0)|0;P=fo(w|0,C|0,D|0,P|0)|0;D=C;w=yo(ze|0,0,666643,0)|0;xe=fo(w|0,C|0,xe&2097151|0,0)|0;w=C;We=yo(ze|0,0,470296,0)|0;Ke=C;nr=yo(ze|0,0,654183,0)|0;Ze=fo(nr|0,C|0,rr|er|$e&2031616|0,Ze|0)|0;Ve=fo(Ze|0,C|0,De|0,Ve|0)|0;Te=fo(Ve|0,C|0,we|0,Te|0)|0;we=C;Ve=yo(ze|0,0,-997805,-1)|0;De=C;Ze=yo(ze|0,0,136657,0)|0;Qe=fo(Ze|0,C|0,Qe&2097151|0,0)|0;Je=fo(Qe|0,C|0,Xe|0,Je|0)|0;Q=fo(Je|0,C|0,Ye|0,Q|0)|0;Fe=fo(Q|0,C|0,ye|0,Fe|0)|0;de=fo(Fe|0,C|0,he|0,de|0)|0;he=C;ze=yo(ze|0,0,-683901,-1)|0;Fe=C;ye=fo(xe|0,w|0,1048576,0)|0;ye=mo(ye|0,C|0,21)|0;Q=C;Be=fo(We|0,Ke|0,Ge|0,Be|0)|0;Be=fo(Be|0,C|0,ye|0,Q|0)|0;ke=fo(Be|0,C|0,se|0,ke|0)|0;se=C;Q=po(ye|0,Q|0,21)|0;Q=lo(xe|0,w|0,Q|0,C|0)|0;w=C;xe=fo(Te|0,we|0,1048576,0)|0;xe=mo(xe|0,C|0,21)|0;ye=C;je=fo(Ve|0,De|0,je&2097151|0,0)|0;qe=fo(je|0,C|0,He|0,qe|0)|0;Ee=fo(qe|0,C|0,Ae|0,Ee|0)|0;be=fo(Ee|0,C|0,n|0,be|0)|0;be=fo(be|0,C|0,xe|0,ye|0)|0;n=C;ye=po(xe|0,ye|0,21)|0;xe=C;Ee=fo(de|0,he|0,1048576,0)|0;Ee=co(Ee|0,C|0,21)|0;Ae=C;Ue=fo(ze|0,Fe|0,Ue&2097151|0,0)|0;Pe=fo(Ue|0,C|0,Ne|0,Pe|0)|0;Ie=fo(Pe|0,C|0,Le|0,Ie|0)|0;ie=fo(Ie|0,C|0,Ce|0,ie|0)|0;d=fo(ie|0,C|0,z|0,d|0)|0;ue=fo(d|0,C|0,V|0,ue|0)|0;ue=fo(ue|0,C|0,Ee|0,Ae|0)|0;V=C;Ae=po(Ee|0,Ae|0,21)|0;Ee=C;d=fo(P|0,D|0,1048576,0)|0;d=co(d|0,C|0,21)|0;z=C;pe=fo(Y|0,me|0,pe&2097151|0,0)|0;A=fo(pe|0,C|0,le|0,A|0)|0;Z=fo(A|0,C|0,ce|0,Z|0)|0;ve=fo(Z|0,C|0,ne|0,ve|0)|0;ve=fo(ve|0,C|0,d|0,z|0)|0;ne=C;z=po(d|0,z|0,21)|0;z=lo(P|0,D|0,z|0,C|0)|0;D=C;P=fo(v|0,Re|0,1048576,0)|0;P=co(P|0,C|0,21)|0;d=C;oe=fo(_e|0,L|0,fe|0,oe|0)|0;S=fo(oe|0,C|0,l|0,S|0)|0;S=fo(S|0,C|0,P|0,d|0)|0;l=C;d=po(P|0,d|0,21)|0;d=lo(v|0,Re|0,d|0,C|0)|0;Re=C;v=fo(_|0,Me|0,1048576,0)|0;v=co(v|0,C|0,21)|0;P=C;F=fo(v|0,P|0,F&2097151|0,0)|0;oe=C;P=po(v|0,P|0,21)|0;P=lo(_|0,Me|0,P|0,C|0)|0;Me=C;_=fo(ke|0,se|0,1048576,0)|0;_=mo(_|0,C|0,21)|0;v=C;fe=po(_|0,v|0,21)|0;fe=lo(ke|0,se|0,fe|0,C|0)|0;se=C;ke=fo(be|0,n|0,1048576,0)|0;ke=co(ke|0,C|0,21)|0;L=C;_e=po(ke|0,L|0,21)|0;_e=lo(be|0,n|0,_e|0,C|0)|0;n=C;be=fo(ue|0,V|0,1048576,0)|0;be=co(be|0,C|0,21)|0;Z=C;D=fo(z|0,D|0,be|0,Z|0)|0;z=C;Z=po(be|0,Z|0,21)|0;Z=lo(ue|0,V|0,Z|0,C|0)|0;V=C;ue=fo(ve|0,ne|0,1048576,0)|0;ue=co(ue|0,C|0,21)|0;be=C;Re=fo(ue|0,be|0,d|0,Re|0)|0;d=C;be=po(ue|0,be|0,21)|0;be=lo(ve|0,ne|0,be|0,C|0)|0;ne=C;ve=fo(S|0,l|0,1048576,0)|0;ve=co(ve|0,C|0,21)|0;ue=C;Me=fo(ve|0,ue|0,P|0,Me|0)|0;P=C;ue=po(ve|0,ue|0,21)|0;ue=lo(S|0,l|0,ue|0,C|0)|0;l=C;S=yo(F|0,oe|0,666643,0)|0;Oe=fo(S|0,C|0,Oe&2097151|0,0)|0;S=C;ve=yo(F|0,oe|0,470296,0)|0;ve=fo(Q|0,w|0,ve|0,C|0)|0;w=C;Q=yo(F|0,oe|0,654183,0)|0;Q=fo(fe|0,se|0,Q|0,C|0)|0;se=C;fe=yo(F|0,oe|0,-997805,-1)|0;ce=C;A=yo(F|0,oe|0,136657,0)|0;A=fo(_e|0,n|0,A|0,C|0)|0;n=C;oe=yo(F|0,oe|0,-683901,-1)|0;F=C;L=fo(de|0,he|0,ke|0,L|0)|0;Ee=lo(L|0,C|0,Ae|0,Ee|0)|0;F=fo(Ee|0,C|0,oe|0,F|0)|0;oe=C;Ee=yo(Me|0,P|0,666643,0)|0;x=fo(Ee|0,C|0,x&2097151|0,0)|0;Ee=C;Ae=yo(Me|0,P|0,470296,0)|0;Ae=fo(Oe|0,S|0,Ae|0,C|0)|0;S=C;Oe=yo(Me|0,P|0,654183,0)|0;Oe=fo(ve|0,w|0,Oe|0,C|0)|0;w=C;ve=yo(Me|0,P|0,-997805,-1)|0;ve=fo(Q|0,se|0,ve|0,C|0)|0;se=C;Q=yo(Me|0,P|0,136657,0)|0;L=C;P=yo(Me|0,P|0,-683901,-1)|0;P=fo(A|0,n|0,P|0,C|0)|0;n=C;A=yo(ue|0,l|0,666643,0)|0;T=fo(A|0,C|0,T&2097151|0,0)|0;A=C;Me=yo(ue|0,l|0,470296,0)|0;Me=fo(x|0,Ee|0,Me|0,C|0)|0;Ee=C;x=yo(ue|0,l|0,654183,0)|0;x=fo(Ae|0,S|0,x|0,C|0)|0;S=C;Ae=yo(ue|0,l|0,-997805,-1)|0;Ae=fo(Oe|0,w|0,Ae|0,C|0)|0;w=C;Oe=yo(ue|0,l|0,136657,0)|0;Oe=fo(ve|0,se|0,Oe|0,C|0)|0;se=C;l=yo(ue|0,l|0,-683901,-1)|0;ue=C;v=fo(Te|0,we|0,_|0,v|0)|0;xe=lo(v|0,C|0,ye|0,xe|0)|0;ce=fo(xe|0,C|0,fe|0,ce|0)|0;L=fo(ce|0,C|0,Q|0,L|0)|0;ue=fo(L|0,C|0,l|0,ue|0)|0;l=C;L=yo(Re|0,d|0,666643,0)|0;Q=C;ce=yo(Re|0,d|0,470296,0)|0;fe=C;xe=yo(Re|0,d|0,654183,0)|0;ye=C;v=yo(Re|0,d|0,-997805,-1)|0;_=C;we=yo(Re|0,d|0,136657,0)|0;we=fo(Ae|0,w|0,we|0,C|0)|0;w=C;d=yo(Re|0,d|0,-683901,-1)|0;d=fo(Oe|0,se|0,d|0,C|0)|0;se=C;Oe=yo(be|0,ne|0,666643,0)|0;Re=C;Ae=yo(be|0,ne|0,470296,0)|0;Te=C;ve=yo(be|0,ne|0,654183,0)|0;ke=C;he=yo(be|0,ne|0,-997805,-1)|0;de=C;_e=yo(be|0,ne|0,136657,0)|0;le=C;ne=yo(be|0,ne|0,-683901,-1)|0;ne=fo(we|0,w|0,ne|0,C|0)|0;w=C;we=yo(D|0,z|0,666643,0)|0;ge=fo(we|0,C|0,h|t|W&2031616|0,ge|0)|0;W=C;t=yo(D|0,z|0,470296,0)|0;h=C;we=yo(D|0,z|0,654183,0)|0;Se=fo(we|0,C|0,Se&2097151|0,0)|0;Q=fo(Se|0,C|0,L|0,Q|0)|0;Te=fo(Q|0,C|0,Ae|0,Te|0)|0;Ae=C;Q=yo(D|0,z|0,-997805,-1)|0;L=C;Se=yo(D|0,z|0,136657,0)|0;Se=fo(Me|0,Ee|0,Se|0,C|0)|0;ye=fo(Se|0,C|0,xe|0,ye|0)|0;de=fo(ye|0,C|0,he|0,de|0)|0;he=C;z=yo(D|0,z|0,-683901,-1)|0;D=C;ye=fo(ge|0,W|0,1048576,0)|0;ye=co(ye|0,C|0,21)|0;xe=C;ae=fo(t|0,h|0,ae&2097151|0,0)|0;Re=fo(ae|0,C|0,Oe|0,Re|0)|0;Re=fo(Re|0,C|0,ye|0,xe|0)|0;Oe=C;xe=po(ye|0,xe|0,21)|0;xe=lo(ge|0,W|0,xe|0,C|0)|0;W=C;ge=fo(Te|0,Ae|0,1048576,0)|0;ge=co(ge|0,C|0,21)|0;ye=C;L=fo(T|0,A|0,Q|0,L|0)|0;fe=fo(L|0,C|0,ce|0,fe|0)|0;ke=fo(fe|0,C|0,ve|0,ke|0)|0;ke=fo(ke|0,C|0,ge|0,ye|0)|0;ve=C;ye=po(ge|0,ye|0,21)|0;ge=C;fe=fo(de|0,he|0,1048576,0)|0;fe=co(fe|0,C|0,21)|0;ce=C;D=fo(x|0,S|0,z|0,D|0)|0;_=fo(D|0,C|0,v|0,_|0)|0;le=fo(_|0,C|0,_e|0,le|0)|0;le=fo(le|0,C|0,fe|0,ce|0)|0;_e=C;ce=po(fe|0,ce|0,21)|0;fe=C;_=fo(ne|0,w|0,1048576,0)|0;_=co(_|0,C|0,21)|0;v=C;se=fo(d|0,se|0,_|0,v|0)|0;d=C;v=po(_|0,v|0,21)|0;v=lo(ne|0,w|0,v|0,C|0)|0;w=C;ne=fo(ue|0,l|0,1048576,0)|0;ne=co(ne|0,C|0,21)|0;_=C;n=fo(P|0,n|0,ne|0,_|0)|0;P=C;_=po(ne|0,_|0,21)|0;_=lo(ue|0,l|0,_|0,C|0)|0;l=C;ue=fo(F|0,oe|0,1048576,0)|0;ue=co(ue|0,C|0,21)|0;ne=C;V=fo(Z|0,V|0,ue|0,ne|0)|0;Z=C;ne=po(ue|0,ne|0,21)|0;ne=lo(F|0,oe|0,ne|0,C|0)|0;oe=C;F=fo(Re|0,Oe|0,1048576,0)|0;F=co(F|0,C|0,21)|0;ue=C;D=po(F|0,ue|0,21)|0;z=C;S=fo(ke|0,ve|0,1048576,0)|0;S=co(S|0,C|0,21)|0;x=C;L=po(S|0,x|0,21)|0;Q=C;A=fo(le|0,_e|0,1048576,0)|0;A=co(A|0,C|0,21)|0;T=C;w=fo(v|0,w|0,A|0,T|0)|0;v=C;T=po(A|0,T|0,21)|0;A=C;ae=fo(se|0,d|0,1048576,0)|0;ae=co(ae|0,C|0,21)|0;h=C;l=fo(_|0,l|0,ae|0,h|0)|0;_=C;h=po(ae|0,h|0,21)|0;h=lo(se|0,d|0,h|0,C|0)|0;d=C;se=fo(n|0,P|0,1048576,0)|0;se=co(se|0,C|0,21)|0;ae=C;oe=fo(ne|0,oe|0,se|0,ae|0)|0;ne=C;ae=po(se|0,ae|0,21)|0;ae=lo(n|0,P|0,ae|0,C|0)|0;P=C;n=fo(V|0,Z|0,1048576,0)|0;n=co(n|0,C|0,21)|0;se=C;t=po(n|0,se|0,21)|0;t=lo(V|0,Z|0,t|0,C|0)|0;Z=C;V=yo(n|0,se|0,666643,0)|0;V=fo(xe|0,W|0,V|0,C|0)|0;W=C;xe=yo(n|0,se|0,470296,0)|0;Se=C;Ee=yo(n|0,se|0,654183,0)|0;Me=C;we=yo(n|0,se|0,-997805,-1)|0;be=C;pe=yo(n|0,se|0,136657,0)|0;me=C;se=yo(n|0,se|0,-683901,-1)|0;n=C;Y=co(V|0,W|0,21)|0;ie=C;Se=fo(Re|0,Oe|0,xe|0,Se|0)|0;Se=fo(Se|0,C|0,Y|0,ie|0)|0;z=lo(Se|0,C|0,D|0,z|0)|0;D=C;ie=po(Y|0,ie|0,21)|0;ie=lo(V|0,W|0,ie|0,C|0)|0;W=C;V=co(z|0,D|0,21)|0;Y=C;Ae=fo(Ee|0,Me|0,Te|0,Ae|0)|0;ge=lo(Ae|0,C|0,ye|0,ge|0)|0;ue=fo(ge|0,C|0,F|0,ue|0)|0;ue=fo(ue|0,C|0,V|0,Y|0)|0;F=C;Y=po(V|0,Y|0,21)|0;Y=lo(z|0,D|0,Y|0,C|0)|0;D=C;z=co(ue|0,F|0,21)|0;V=C;be=fo(ke|0,ve|0,we|0,be|0)|0;Q=lo(be|0,C|0,L|0,Q|0)|0;Q=fo(Q|0,C|0,z|0,V|0)|0;L=C;V=po(z|0,V|0,21)|0;V=lo(ue|0,F|0,V|0,C|0)|0;F=C;ue=co(Q|0,L|0,21)|0;z=C;he=fo(pe|0,me|0,de|0,he|0)|0;fe=lo(he|0,C|0,ce|0,fe|0)|0;x=fo(fe|0,C|0,S|0,x|0)|0;x=fo(x|0,C|0,ue|0,z|0)|0;S=C;z=po(ue|0,z|0,21)|0;z=lo(Q|0,L|0,z|0,C|0)|0;L=C;Q=co(x|0,S|0,21)|0;ue=C;n=fo(le|0,_e|0,se|0,n|0)|0;A=lo(n|0,C|0,T|0,A|0)|0;A=fo(A|0,C|0,Q|0,ue|0)|0;T=C;ue=po(Q|0,ue|0,21)|0;ue=lo(x|0,S|0,ue|0,C|0)|0;S=C;x=co(A|0,T|0,21)|0;Q=C;v=fo(w|0,v|0,x|0,Q|0)|0;w=C;Q=po(x|0,Q|0,21)|0;Q=lo(A|0,T|0,Q|0,C|0)|0;T=C;A=co(v|0,w|0,21)|0;x=C;d=fo(A|0,x|0,h|0,d|0)|0;h=C;x=po(A|0,x|0,21)|0;x=lo(v|0,w|0,x|0,C|0)|0;w=C;v=co(d|0,h|0,21)|0;A=C;_=fo(l|0,_|0,v|0,A|0)|0;l=C;A=po(v|0,A|0,21)|0;A=lo(d|0,h|0,A|0,C|0)|0;h=C;d=co(_|0,l|0,21)|0;v=C;P=fo(d|0,v|0,ae|0,P|0)|0;ae=C;v=po(d|0,v|0,21)|0;v=lo(_|0,l|0,v|0,C|0)|0;l=C;_=co(P|0,ae|0,21)|0;d=C;ne=fo(oe|0,ne|0,_|0,d|0)|0;oe=C;d=po(_|0,d|0,21)|0;d=lo(P|0,ae|0,d|0,C|0)|0;ae=C;P=co(ne|0,oe|0,21)|0;_=C;Z=fo(P|0,_|0,t|0,Z|0)|0;t=C;_=po(P|0,_|0,21)|0;_=lo(ne|0,oe|0,_|0,C|0)|0;oe=C;ne=co(Z|0,t|0,21)|0;P=C;n=po(ne|0,P|0,21)|0;n=lo(Z|0,t|0,n|0,C|0)|0;t=C;Z=yo(ne|0,P|0,666643,0)|0;W=fo(Z|0,C|0,ie|0,W|0)|0;ie=C;Z=yo(ne|0,P|0,470296,0)|0;Z=fo(Y|0,D|0,Z|0,C|0)|0;D=C;Y=yo(ne|0,P|0,654183,0)|0;Y=fo(V|0,F|0,Y|0,C|0)|0;F=C;V=yo(ne|0,P|0,-997805,-1)|0;V=fo(z|0,L|0,V|0,C|0)|0;L=C;z=yo(ne|0,P|0,136657,0)|0;z=fo(ue|0,S|0,z|0,C|0)|0;S=C;P=yo(ne|0,P|0,-683901,-1)|0;P=fo(Q|0,T|0,P|0,C|0)|0;T=C;Q=co(W|0,ie|0,21)|0;ne=C;D=fo(Z|0,D|0,Q|0,ne|0)|0;Z=C;ne=po(Q|0,ne|0,21)|0;ne=lo(W|0,ie|0,ne|0,C|0)|0;ie=C;W=co(D|0,Z|0,21)|0;Q=C;F=fo(Y|0,F|0,W|0,Q|0)|0;Y=C;Q=po(W|0,Q|0,21)|0;Q=lo(D|0,Z|0,Q|0,C|0)|0;Z=C;D=co(F|0,Y|0,21)|0;W=C;L=fo(V|0,L|0,D|0,W|0)|0;V=C;W=po(D|0,W|0,21)|0;W=lo(F|0,Y|0,W|0,C|0)|0;Y=C;F=co(L|0,V|0,21)|0;D=C;S=fo(z|0,S|0,F|0,D|0)|0;z=C;D=po(F|0,D|0,21)|0;D=lo(L|0,V|0,D|0,C|0)|0;V=C;L=co(S|0,z|0,21)|0;F=C;T=fo(P|0,T|0,L|0,F|0)|0;P=C;F=po(L|0,F|0,21)|0;F=lo(S|0,z|0,F|0,C|0)|0;z=C;S=co(T|0,P|0,21)|0;L=C;w=fo(S|0,L|0,x|0,w|0)|0;x=C;L=po(S|0,L|0,21)|0;L=lo(T|0,P|0,L|0,C|0)|0;P=C;T=co(w|0,x|0,21)|0;S=C;h=fo(T|0,S|0,A|0,h|0)|0;A=C;S=po(T|0,S|0,21)|0;S=lo(w|0,x|0,S|0,C|0)|0;x=C;w=co(h|0,A|0,21)|0;T=C;l=fo(w|0,T|0,v|0,l|0)|0;v=C;T=po(w|0,T|0,21)|0;T=lo(h|0,A|0,T|0,C|0)|0;A=C;h=co(l|0,v|0,21)|0;w=C;ae=fo(h|0,w|0,d|0,ae|0)|0;d=C;w=po(h|0,w|0,21)|0;w=lo(l|0,v|0,w|0,C|0)|0;v=C;l=co(ae|0,d|0,21)|0;h=C;oe=fo(l|0,h|0,_|0,oe|0)|0;_=C;h=po(l|0,h|0,21)|0;h=lo(ae|0,d|0,h|0,C|0)|0;d=C;ae=co(oe|0,_|0,21)|0;l=C;t=fo(ae|0,l|0,n|0,t|0)|0;n=C;l=po(ae|0,l|0,21)|0;l=lo(oe|0,_|0,l|0,C|0)|0;_=C;i[e>>0]=ne;e=mo(ne|0,ie|0,8)|0;i[te>>0]=e;e=mo(ne|0,ie|0,16)|0;ie=C;ne=po(Q|0,Z|0,5)|0;i[re>>0]=ne|e;e=mo(Q|0,Z|0,3)|0;i[ee>>0]=e;e=mo(Q|0,Z|0,11)|0;i[$>>0]=e;e=mo(Q|0,Z|0,19)|0;Z=C;Q=po(W|0,Y|0,2)|0;i[X>>0]=Q|e;e=mo(W|0,Y|0,6)|0;i[J>>0]=e;e=mo(W|0,Y|0,14)|0;Y=C;W=po(D|0,V|0,7)|0;i[K>>0]=W|e;e=mo(D|0,V|0,1)|0;i[G>>0]=e;e=mo(D|0,V|0,9)|0;i[B>>0]=e;e=mo(D|0,V|0,17)|0;V=C;D=po(F|0,z|0,4)|0;i[j>>0]=D|e;e=mo(F|0,z|0,4)|0;i[H>>0]=e;e=mo(F|0,z|0,12)|0;i[q>>0]=e;e=mo(F|0,z|0,20)|0;z=C;F=po(L|0,P|0,1)|0;i[U>>0]=F|e;e=mo(L|0,P|0,7)|0;i[N>>0]=e;e=mo(L|0,P|0,15)|0;P=C;L=po(S|0,x|0,6)|0;i[I>>0]=L|e;e=mo(S|0,x|0,2)|0;i[R>>0]=e;e=mo(S|0,x|0,10)|0;i[O>>0]=e;e=mo(S|0,x|0,18)|0;x=C;S=po(T|0,A|0,3)|0;i[E>>0]=S|e;e=mo(T|0,A|0,5)|0;i[M>>0]=e;e=mo(T|0,A|0,13)|0;i[y>>0]=e;i[g>>0]=w;e=mo(w|0,v|0,8)|0;i[k>>0]=e;e=mo(w|0,v|0,16)|0;v=C;w=po(h|0,d|0,5)|0;i[b>>0]=w|e;e=mo(h|0,d|0,3)|0;i[p>>0]=e;e=mo(h|0,d|0,11)|0;i[m>>0]=e;e=mo(h|0,d|0,19)|0;d=C;h=po(l|0,_|0,2)|0;i[c>>0]=h|e;e=mo(l|0,_|0,6)|0;i[f>>0]=e;_=mo(l|0,_|0,14)|0;l=C;e=po(t|0,n|0,7)|0;i[s>>0]=_|e;e=mo(t|0,n|0,1)|0;i[u>>0]=e;e=mo(t|0,n|0,9)|0;i[o>>0]=e;e=mo(t|0,n|0,17)|0;i[r>>0]=e;return}function qi(e,r,n,t){e=e|0;r=r|0;n=n|0;t=t|0;var o=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0,se=0,_e=0,le=0,fe=0,ce=0,he=0,de=0,me=0,pe=0,be=0,we=0,ve=0,ke=0,ge=0,ye=0,Ae=0,Te=0,Me=0,Ee=0,Se=0,xe=0,Oe=0,Re=0,Ce=0,Ie=0,Le=0,Pe=0,Ne=0,Ue=0,Fe=0,ze=0,qe=0,He=0,je=0,De=0,Ve=0,Be=0,Ge=0,Ke=0,We=0,Ye=0,Je=0,Xe=0,Qe=0,Ze=0,$e=0,er=0,rr=0,nr=0,ir=0,tr=0,or=0,ar=0,ur=0,sr=0,_r=0,lr=0,fr=0,cr=0,hr=0,dr=0,mr=0,pr=0,br=0,wr=0,vr=0,kr=0,gr=0,yr=0,Ar=0,Tr=0,Mr=0,Er=0,Sr=0,xr=0,Or=0,Rr=0,Cr=0,Ir=0,Lr=0,Pr=0,Nr=0,Ur=0,Fr=0,zr=0,qr=0,Hr=0,jr=0,Dr=0,Vr=0,Br=0,Gr=0,Kr=0,Wr=0,Yr=0,Jr=0,Xr=0,Qr=0,Zr=0,$r=0,en=0,rn=0,nn=0,tn=0,on=0,an=0,un=0,sn=0,_n=0,ln=0,fn=0,cn=0,hn=0,dn=0,mn=0,pn=0,bn=0,wn=0,vn=0,kn=0,gn=0,yn=0;E=i[r+2>>0]|0;ze=a[r>>0]|0;pr=po(a[r+1>>0]|0|0,0,8)|0;_r=C;E=E&255;ir=po(E|0,0,16)|0;ir=pr|ze|ir&2031616;ze=po(a[r+3>>0]|0|0,0,8)|0;pr=C;M=po(a[r+4>>0]|0|0,0,16)|0;pr=pr|C;hr=a[r+5>>0]|0;Xe=po(hr|0,0,24)|0;pr=mo(ze|E|M|Xe|0,pr|C|0,5)|0;pr=pr&2097151;Xe=i[r+7>>0]|0;M=po(a[r+6>>0]|0|0,0,8)|0;E=C;Xe=Xe&255;ze=po(Xe|0,0,16)|0;E=mo(M|hr|ze|0,E|C|0,2)|0;E=E&2097151;ze=po(a[r+8>>0]|0|0,0,8)|0;hr=C;M=po(a[r+9>>0]|0|0,0,16)|0;hr=hr|C;_=a[r+10>>0]|0;Fe=po(_|0,0,24)|0;hr=mo(ze|Xe|M|Fe|0,hr|C|0,7)|0;hr=hr&2097151;Fe=po(a[r+11>>0]|0|0,0,8)|0;M=C;Xe=po(a[r+12>>0]|0|0,0,16)|0;M=M|C;ze=a[r+13>>0]|0;P=po(ze|0,0,24)|0;M=mo(Fe|_|Xe|P|0,M|C|0,4)|0;M=M&2097151;P=i[r+15>>0]|0;Xe=po(a[r+14>>0]|0|0,0,8)|0;_=C;P=P&255;Fe=po(P|0,0,16)|0;_=mo(Xe|ze|Fe|0,_|C|0,1)|0;_=_&2097151;Fe=po(a[r+16>>0]|0|0,0,8)|0;ze=C;Xe=po(a[r+17>>0]|0|0,0,16)|0;ze=ze|C;vn=a[r+18>>0]|0;ne=po(vn|0,0,24)|0;ze=mo(Fe|P|Xe|ne|0,ze|C|0,6)|0;ze=ze&2097151;ne=i[r+20>>0]|0;Xe=po(a[r+19>>0]|0|0,0,8)|0;P=C;ne=po(ne&255|0,0,16)|0;P=mo(Xe|vn|ne|0,P|C|0,3)|0;ne=C;vn=i[r+23>>0]|0;Xe=a[r+21>>0]|0;Fe=po(a[r+22>>0]|0|0,0,8)|0;fr=C;vn=vn&255;Ne=po(vn|0,0,16)|0;Ne=Fe|Xe|Ne&2031616;Xe=po(a[r+24>>0]|0|0,0,8)|0;Fe=C;p=po(a[r+25>>0]|0|0,0,16)|0;Fe=Fe|C;d=a[r+26>>0]|0;c=po(d|0,0,24)|0;Fe=mo(Xe|vn|p|c|0,Fe|C|0,5)|0;Fe=Fe&2097151;c=i[r+28>>0]|0;p=po(a[r+27>>0]|0|0,0,8)|0;vn=C;c=c&255;Xe=po(c|0,0,16)|0;vn=mo(p|d|Xe|0,vn|C|0,2)|0;vn=vn&2097151;Xe=po(a[r+29>>0]|0|0,0,8)|0;d=C;p=po(a[r+30>>0]|0|0,0,16)|0;d=d|C;Oe=po(a[r+31>>0]|0|0,0,24)|0;d=mo(Xe|c|p|Oe|0,d|C|0,7)|0;Oe=C;p=i[n+2>>0]|0;c=a[n>>0]|0;Xe=po(a[n+1>>0]|0|0,0,8)|0;re=C;p=p&255;ee=po(p|0,0,16)|0;ee=Xe|c|ee&2031616;c=po(a[n+3>>0]|0|0,0,8)|0;Xe=C;te=po(a[n+4>>0]|0|0,0,16)|0;Xe=Xe|C;m=a[n+5>>0]|0;pn=po(m|0,0,24)|0;Xe=mo(c|p|te|pn|0,Xe|C|0,5)|0;Xe=Xe&2097151;pn=i[n+7>>0]|0;te=po(a[n+6>>0]|0|0,0,8)|0;p=C;pn=pn&255;c=po(pn|0,0,16)|0;p=mo(te|m|c|0,p|C|0,2)|0;p=p&2097151;c=po(a[n+8>>0]|0|0,0,8)|0;m=C;te=po(a[n+9>>0]|0|0,0,16)|0;m=m|C;Ge=a[n+10>>0]|0;Pe=po(Ge|0,0,24)|0;m=mo(c|pn|te|Pe|0,m|C|0,7)|0;m=m&2097151;Pe=po(a[n+11>>0]|0|0,0,8)|0;te=C;pn=po(a[n+12>>0]|0|0,0,16)|0;te=te|C;c=a[n+13>>0]|0;yn=po(c|0,0,24)|0;te=mo(Pe|Ge|pn|yn|0,te|C|0,4)|0;te=te&2097151;yn=i[n+15>>0]|0;pn=po(a[n+14>>0]|0|0,0,8)|0;Ge=C;yn=yn&255;Pe=po(yn|0,0,16)|0;Ge=mo(pn|c|Pe|0,Ge|C|0,1)|0;Ge=Ge&2097151;Pe=po(a[n+16>>0]|0|0,0,8)|0;c=C;pn=po(a[n+17>>0]|0|0,0,16)|0;c=c|C;U=a[n+18>>0]|0;kr=po(U|0,0,24)|0;c=mo(Pe|yn|pn|kr|0,c|C|0,6)|0;c=c&2097151;kr=i[n+20>>0]|0;pn=po(a[n+19>>0]|0|0,0,8)|0;yn=C;kr=po(kr&255|0,0,16)|0;yn=mo(pn|U|kr|0,yn|C|0,3)|0;kr=C;U=i[n+23>>0]|0;pn=a[n+21>>0]|0;Pe=po(a[n+22>>0]|0|0,0,8)|0;ye=C;U=U&255;he=po(U|0,0,16)|0;he=Pe|pn|he&2031616;pn=po(a[n+24>>0]|0|0,0,8)|0;Pe=C;Ce=po(a[n+25>>0]|0|0,0,16)|0;Pe=Pe|C;A=a[n+26>>0]|0;bn=po(A|0,0,24)|0;Pe=mo(pn|U|Ce|bn|0,Pe|C|0,5)|0;Pe=Pe&2097151;bn=i[n+28>>0]|0;Ce=po(a[n+27>>0]|0|0,0,8)|0;U=C;bn=bn&255;pn=po(bn|0,0,16)|0;U=mo(Ce|A|pn|0,U|C|0,2)|0;U=U&2097151;pn=po(a[n+29>>0]|0|0,0,8)|0;A=C;Ce=po(a[n+30>>0]|0|0,0,16)|0;A=A|C;Se=po(a[n+31>>0]|0|0,0,24)|0;A=mo(pn|bn|Ce|Se|0,A|C|0,7)|0;Se=C;Ce=i[t+2>>0]|0;bn=a[t>>0]|0;pn=po(a[t+1>>0]|0|0,0,8)|0;Y=C;Ce=Ce&255;wn=po(Ce|0,0,16)|0;De=po(a[t+3>>0]|0|0,0,8)|0;Ae=C;Me=po(a[t+4>>0]|0|0,0,16)|0;Ae=Ae|C;sr=a[t+5>>0]|0;we=po(sr|0,0,24)|0;Ae=mo(De|Ce|Me|we|0,Ae|C|0,5)|0;we=i[t+7>>0]|0;Me=po(a[t+6>>0]|0|0,0,8)|0;Ce=C;we=we&255;De=po(we|0,0,16)|0;Ce=mo(Me|sr|De|0,Ce|C|0,2)|0;De=po(a[t+8>>0]|0|0,0,8)|0;sr=C;Me=po(a[t+9>>0]|0|0,0,16)|0;sr=sr|C;D=a[t+10>>0]|0;L=po(D|0,0,24)|0;sr=mo(De|we|Me|L|0,sr|C|0,7)|0;L=po(a[t+11>>0]|0|0,0,8)|0;Me=C;we=po(a[t+12>>0]|0|0,0,16)|0;Me=Me|C;De=a[t+13>>0]|0;S=po(De|0,0,24)|0;Me=mo(L|D|we|S|0,Me|C|0,4)|0;S=i[t+15>>0]|0;we=po(a[t+14>>0]|0|0,0,8)|0;D=C;S=S&255;L=po(S|0,0,16)|0;D=mo(we|De|L|0,D|C|0,1)|0;L=po(a[t+16>>0]|0|0,0,8)|0;De=C;we=po(a[t+17>>0]|0|0,0,16)|0;De=De|C;q=a[t+18>>0]|0;u=po(q|0,0,24)|0;De=mo(L|S|we|u|0,De|C|0,6)|0;u=i[t+20>>0]|0;we=po(a[t+19>>0]|0|0,0,8)|0;S=C;u=po(u&255|0,0,16)|0;S=mo(we|q|u|0,S|C|0,3)|0;u=C;q=i[t+23>>0]|0;we=a[t+21>>0]|0;L=po(a[t+22>>0]|0|0,0,8)|0;X=C;q=q&255;Q=po(q|0,0,16)|0;ke=po(a[t+24>>0]|0|0,0,8)|0;I=C;Ee=po(a[t+25>>0]|0|0,0,16)|0;I=I|C;r=a[t+26>>0]|0;ce=po(r|0,0,24)|0;I=mo(ke|q|Ee|ce|0,I|C|0,5)|0;ce=i[t+28>>0]|0;Ee=po(a[t+27>>0]|0|0,0,8)|0;q=C;ce=ce&255;ke=po(ce|0,0,16)|0;q=mo(Ee|r|ke|0,q|C|0,2)|0;ke=po(a[t+29>>0]|0|0,0,8)|0;r=C;Ee=po(a[t+30>>0]|0|0,0,16)|0;r=r|C;s=po(a[t+31>>0]|0|0,0,24)|0;r=mo(ke|ce|Ee|s|0,r|C|0,7)|0;s=C;Ee=yo(ee|0,re|0,ir|0,_r|0)|0;Ee=fo(pn|bn|wn&2031616|0,Y|0,Ee|0,C|0)|0;Y=C;wn=yo(Xe|0,0,ir|0,_r|0)|0;bn=C;pn=yo(ee|0,re|0,pr|0,0)|0;ce=C;ke=yo(p|0,0,ir|0,_r|0)|0;Re=C;ge=yo(Xe|0,0,pr|0,0)|0;fn=C;se=yo(ee|0,re|0,E|0,0)|0;se=fo(ge|0,fn|0,se|0,C|0)|0;Re=fo(se|0,C|0,ke|0,Re|0)|0;Ce=fo(Re|0,C|0,Ce&2097151|0,0)|0;Re=C;ke=yo(m|0,0,ir|0,_r|0)|0;se=C;fn=yo(p|0,0,pr|0,0)|0;ge=C;mn=yo(Xe|0,0,E|0,0)|0;dn=C;hn=yo(ee|0,re|0,hr|0,0)|0;cn=C;Le=yo(te|0,0,ir|0,_r|0)|0;Te=C;rn=yo(m|0,0,pr|0,0)|0;V=C;tn=yo(p|0,0,E|0,0)|0;Ie=C;on=yo(Xe|0,0,hr|0,0)|0;an=C;nn=yo(ee|0,re|0,M|0,0)|0;nn=fo(on|0,an|0,nn|0,C|0)|0;Ie=fo(nn|0,C|0,tn|0,Ie|0)|0;V=fo(Ie|0,C|0,rn|0,V|0)|0;Te=fo(V|0,C|0,Le|0,Te|0)|0;Me=fo(Te|0,C|0,Me&2097151|0,0)|0;Te=C;Le=yo(Ge|0,0,ir|0,_r|0)|0;V=C;rn=yo(te|0,0,pr|0,0)|0;Ie=C;tn=yo(m|0,0,E|0,0)|0;nn=C;an=yo(p|0,0,hr|0,0)|0;on=C;ln=yo(Xe|0,0,M|0,0)|0;_n=C;sn=yo(ee|0,re|0,_|0,0)|0;un=C;J=yo(c|0,0,ir|0,_r|0)|0;Ve=C;Dr=yo(Ge|0,0,pr|0,0)|0;ie=C;Br=yo(te|0,0,E|0,0)|0;jr=C;Kr=yo(m|0,0,hr|0,0)|0;Vr=C;Yr=yo(p|0,0,M|0,0)|0;Gr=C;Jr=yo(Xe|0,0,_|0,0)|0;Xr=C;Wr=yo(ee|0,re|0,ze|0,0)|0;Wr=fo(Jr|0,Xr|0,Wr|0,C|0)|0;Gr=fo(Wr|0,C|0,Yr|0,Gr|0)|0;Vr=fo(Gr|0,C|0,Kr|0,Vr|0)|0;jr=fo(Vr|0,C|0,Br|0,jr|0)|0;ie=fo(jr|0,C|0,Dr|0,ie|0)|0;Ve=fo(ie|0,C|0,J|0,Ve|0)|0;De=fo(Ve|0,C|0,De&2097151|0,0)|0;Ve=C;J=yo(yn|0,kr|0,ir|0,_r|0)|0;ie=C;Dr=yo(c|0,0,pr|0,0)|0;jr=C;Br=yo(Ge|0,0,E|0,0)|0;Vr=C;Kr=yo(te|0,0,hr|0,0)|0;Gr=C;Yr=yo(m|0,0,M|0,0)|0;Wr=C;Xr=yo(p|0,0,_|0,0)|0;Jr=C;en=yo(Xe|0,0,ze|0,0)|0;$r=C;Zr=yo(ee|0,re|0,P|0,ne|0)|0;Qr=C;ve=yo(he|0,ye|0,ir|0,_r|0)|0;Tr=C;Mr=yo(yn|0,kr|0,pr|0,0)|0;Er=C;Sr=yo(c|0,0,E|0,0)|0;xr=C;Or=yo(Ge|0,0,hr|0,0)|0;Rr=C;Cr=yo(te|0,0,M|0,0)|0;Ir=C;Lr=yo(m|0,0,_|0,0)|0;Pr=C;Nr=yo(p|0,0,ze|0,0)|0;Ur=C;zr=yo(Xe|0,0,P|0,ne|0)|0;qr=C;Hr=yo(ee|0,re|0,Ne|0,fr|0)|0;Hr=fo(zr|0,qr|0,Hr|0,C|0)|0;Ur=fo(Hr|0,C|0,Nr|0,Ur|0)|0;Pr=fo(Ur|0,C|0,Lr|0,Pr|0)|0;Ir=fo(Pr|0,C|0,Cr|0,Ir|0)|0;Rr=fo(Ir|0,C|0,Or|0,Rr|0)|0;xr=fo(Rr|0,C|0,Sr|0,xr|0)|0;Er=fo(xr|0,C|0,Mr|0,Er|0)|0;Tr=fo(Er|0,C|0,ve|0,Tr|0)|0;X=fo(Tr|0,C|0,L|we|Q&2031616|0,X|0)|0;Q=C;we=yo(Pe|0,0,ir|0,_r|0)|0;L=C;Tr=yo(he|0,ye|0,pr|0,0)|0;ve=C;Er=yo(yn|0,kr|0,E|0,0)|0;Mr=C;xr=yo(c|0,0,hr|0,0)|0;Sr=C;Rr=yo(Ge|0,0,M|0,0)|0;Or=C;Ir=yo(te|0,0,_|0,0)|0;Cr=C;Pr=yo(m|0,0,ze|0,0)|0;Lr=C;Ur=yo(p|0,0,P|0,ne|0)|0;Nr=C;Hr=yo(Xe|0,0,Ne|0,fr|0)|0;qr=C;zr=yo(ee|0,re|0,Fe|0,0)|0;Fr=C;H=yo(U|0,0,ir|0,_r|0)|0;z=C;er=yo(Pe|0,0,pr|0,0)|0;j=C;T=yo(he|0,ye|0,E|0,0)|0;rr=C;dr=yo(yn|0,kr|0,hr|0,0)|0;k=C;N=yo(c|0,0,M|0,0)|0;mr=C;He=yo(Ge|0,0,_|0,0)|0;x=C;ar=yo(te|0,0,ze|0,0)|0;je=C;K=yo(m|0,0,P|0,ne|0)|0;ur=C;Ye=yo(p|0,0,Ne|0,fr|0)|0;W=C;yr=yo(Xe|0,0,Fe|0,0)|0;Ar=C;Je=yo(ee|0,re|0,vn|0,0)|0;Je=fo(yr|0,Ar|0,Je|0,C|0)|0;W=fo(Je|0,C|0,Ye|0,W|0)|0;ur=fo(W|0,C|0,K|0,ur|0)|0;je=fo(ur|0,C|0,ar|0,je|0)|0;x=fo(je|0,C|0,He|0,x|0)|0;mr=fo(x|0,C|0,N|0,mr|0)|0;k=fo(mr|0,C|0,dr|0,k|0)|0;rr=fo(k|0,C|0,T|0,rr|0)|0;j=fo(rr|0,C|0,er|0,j|0)|0;z=fo(j|0,C|0,H|0,z|0)|0;q=fo(z|0,C|0,q&2097151|0,0)|0;z=C;_r=yo(A|0,Se|0,ir|0,_r|0)|0;ir=C;H=yo(U|0,0,pr|0,0)|0;j=C;er=yo(Pe|0,0,E|0,0)|0;rr=C;T=yo(he|0,ye|0,hr|0,0)|0;k=C;dr=yo(yn|0,kr|0,M|0,0)|0;mr=C;N=yo(c|0,0,_|0,0)|0;x=C;He=yo(Ge|0,0,ze|0,0)|0;je=C;ar=yo(te|0,0,P|0,ne|0)|0;ur=C;K=yo(m|0,0,Ne|0,fr|0)|0;W=C;Ye=yo(p|0,0,Fe|0,0)|0;Je=C;Ar=yo(Xe|0,0,vn|0,0)|0;yr=C;re=yo(ee|0,re|0,d|0,Oe|0)|0;ee=C;pr=yo(A|0,Se|0,pr|0,0)|0;br=C;tr=yo(U|0,0,E|0,0)|0;y=C;oe=yo(Pe|0,0,hr|0,0)|0;or=C;ue=yo(he|0,ye|0,M|0,0)|0;$=C;wr=yo(yn|0,kr|0,_|0,0)|0;lr=C;fe=yo(c|0,0,ze|0,0)|0;vr=C;pe=yo(Ge|0,0,P|0,ne|0)|0;le=C;qe=yo(te|0,0,Ne|0,fr|0)|0;me=C;Qe=yo(m|0,0,Fe|0,0)|0;ae=C;cr=yo(p|0,0,vn|0,0)|0;g=C;Xe=yo(Xe|0,0,d|0,Oe|0)|0;Xe=fo(cr|0,g|0,Xe|0,C|0)|0;ae=fo(Xe|0,C|0,Qe|0,ae|0)|0;me=fo(ae|0,C|0,qe|0,me|0)|0;le=fo(me|0,C|0,pe|0,le|0)|0;vr=fo(le|0,C|0,fe|0,vr|0)|0;lr=fo(vr|0,C|0,wr|0,lr|0)|0;$=fo(lr|0,C|0,ue|0,$|0)|0;or=fo($|0,C|0,oe|0,or|0)|0;y=fo(or|0,C|0,tr|0,y|0)|0;br=fo(y|0,C|0,pr|0,br|0)|0;pr=C;E=yo(A|0,Se|0,E|0,0)|0;y=C;tr=yo(U|0,0,hr|0,0)|0;or=C;oe=yo(Pe|0,0,M|0,0)|0;$=C;ue=yo(he|0,ye|0,_|0,0)|0;lr=C;wr=yo(yn|0,kr|0,ze|0,0)|0;vr=C;fe=yo(c|0,0,P|0,ne|0)|0;le=C;pe=yo(Ge|0,0,Ne|0,fr|0)|0;me=C;qe=yo(te|0,0,Fe|0,0)|0;ae=C;Qe=yo(m|0,0,vn|0,0)|0;Xe=C;p=yo(p|0,0,d|0,Oe|0)|0;g=C;hr=yo(A|0,Se|0,hr|0,0)|0;cr=C;Ze=yo(U|0,0,M|0,0)|0;b=C;O=yo(Pe|0,0,_|0,0)|0;$e=C;h=yo(he|0,ye|0,ze|0,0)|0;v=C;Z=yo(yn|0,kr|0,P|0,ne|0)|0;o=C;_e=yo(c|0,0,Ne|0,fr|0)|0;w=C;de=yo(Ge|0,0,Fe|0,0)|0;R=C;gr=yo(te|0,0,vn|0,0)|0;f=C;m=yo(m|0,0,d|0,Oe|0)|0;m=fo(gr|0,f|0,m|0,C|0)|0;R=fo(m|0,C|0,de|0,R|0)|0;w=fo(R|0,C|0,_e|0,w|0)|0;o=fo(w|0,C|0,Z|0,o|0)|0;v=fo(o|0,C|0,h|0,v|0)|0;$e=fo(v|0,C|0,O|0,$e|0)|0;b=fo($e|0,C|0,Ze|0,b|0)|0;cr=fo(b|0,C|0,hr|0,cr|0)|0;hr=C;M=yo(A|0,Se|0,M|0,0)|0;b=C;Ze=yo(U|0,0,_|0,0)|0;$e=C;O=yo(Pe|0,0,ze|0,0)|0;v=C;h=yo(he|0,ye|0,P|0,ne|0)|0;o=C;Z=yo(yn|0,kr|0,Ne|0,fr|0)|0;w=C;_e=yo(c|0,0,Fe|0,0)|0;R=C;de=yo(Ge|0,0,vn|0,0)|0;m=C;te=yo(te|0,0,d|0,Oe|0)|0;f=C;_=yo(A|0,Se|0,_|0,0)|0;gr=C;n=yo(U|0,0,ze|0,0)|0;F=C;G=yo(Pe|0,0,P|0,ne|0)|0;Ue=C;We=yo(he|0,ye|0,Ne|0,fr|0)|0;B=C;Be=yo(yn|0,kr|0,Fe|0,0)|0;Ke=C;t=yo(c|0,0,vn|0,0)|0;l=C;Ge=yo(Ge|0,0,d|0,Oe|0)|0;Ge=fo(t|0,l|0,Ge|0,C|0)|0;Ke=fo(Ge|0,C|0,Be|0,Ke|0)|0;B=fo(Ke|0,C|0,We|0,B|0)|0;Ue=fo(B|0,C|0,G|0,Ue|0)|0;F=fo(Ue|0,C|0,n|0,F|0)|0;gr=fo(F|0,C|0,_|0,gr|0)|0;_=C;ze=yo(A|0,Se|0,ze|0,0)|0;F=C;n=yo(U|0,0,P|0,ne|0)|0;Ue=C;G=yo(Pe|0,0,Ne|0,fr|0)|0;B=C;We=yo(he|0,ye|0,Fe|0,0)|0;Ke=C;Be=yo(yn|0,kr|0,vn|0,0)|0;Ge=C;c=yo(c|0,0,d|0,Oe|0)|0;l=C;ne=yo(A|0,Se|0,P|0,ne|0)|0;t=C;P=yo(U|0,0,Ne|0,fr|0)|0;xe=C;be=yo(Pe|0,0,Fe|0,0)|0;nr=C;kn=yo(he|0,ye|0,vn|0,0)|0;gn=C;kr=yo(yn|0,kr|0,d|0,Oe|0)|0;kr=fo(kn|0,gn|0,kr|0,C|0)|0;nr=fo(kr|0,C|0,be|0,nr|0)|0;xe=fo(nr|0,C|0,P|0,xe|0)|0;t=fo(xe|0,C|0,ne|0,t|0)|0;ne=C;fr=yo(A|0,Se|0,Ne|0,fr|0)|0;Ne=C;xe=yo(U|0,0,Fe|0,0)|0;P=C;nr=yo(Pe|0,0,vn|0,0)|0;be=C;ye=yo(he|0,ye|0,d|0,Oe|0)|0;he=C;Fe=yo(A|0,Se|0,Fe|0,0)|0;kr=C;gn=yo(U|0,0,vn|0,0)|0;kn=C;Pe=yo(Pe|0,0,d|0,Oe|0)|0;Pe=fo(gn|0,kn|0,Pe|0,C|0)|0;kr=fo(Pe|0,C|0,Fe|0,kr|0)|0;Fe=C;vn=yo(A|0,Se|0,vn|0,0)|0;Pe=C;U=yo(U|0,0,d|0,Oe|0)|0;U=fo(vn|0,Pe|0,U|0,C|0)|0;Pe=C;Oe=yo(A|0,Se|0,d|0,Oe|0)|0;d=C;Se=fo(Ee|0,Y|0,1048576,0)|0;Se=mo(Se|0,C|0,21)|0;A=C;ce=fo(wn|0,bn|0,pn|0,ce|0)|0;ce=fo(ce|0,C|0,Se|0,A|0)|0;Ae=fo(ce|0,C|0,Ae&2097151|0,0)|0;ce=C;A=po(Se|0,A|0,21)|0;A=lo(Ee|0,Y|0,A|0,C|0)|0;Y=C;Ee=fo(Ce|0,Re|0,1048576,0)|0;Ee=mo(Ee|0,C|0,21)|0;Se=C;cn=fo(mn|0,dn|0,hn|0,cn|0)|0;ge=fo(cn|0,C|0,fn|0,ge|0)|0;se=fo(ge|0,C|0,ke|0,se|0)|0;sr=fo(se|0,C|0,sr&2097151|0,0)|0;sr=fo(sr|0,C|0,Ee|0,Se|0)|0;se=C;Se=po(Ee|0,Se|0,21)|0;Ee=C;ke=fo(Me|0,Te|0,1048576,0)|0;ke=co(ke|0,C|0,21)|0;ge=C;un=fo(ln|0,_n|0,sn|0,un|0)|0;on=fo(un|0,C|0,an|0,on|0)|0;nn=fo(on|0,C|0,tn|0,nn|0)|0;Ie=fo(nn|0,C|0,rn|0,Ie|0)|0;V=fo(Ie|0,C|0,Le|0,V|0)|0;D=fo(V|0,C|0,D&2097151|0,0)|0;D=fo(D|0,C|0,ke|0,ge|0)|0;V=C;ge=po(ke|0,ge|0,21)|0;ke=C;Le=fo(De|0,Ve|0,1048576,0)|0;Le=co(Le|0,C|0,21)|0;Ie=C;Qr=fo(en|0,$r|0,Zr|0,Qr|0)|0;Jr=fo(Qr|0,C|0,Xr|0,Jr|0)|0;Wr=fo(Jr|0,C|0,Yr|0,Wr|0)|0;Gr=fo(Wr|0,C|0,Kr|0,Gr|0)|0;Vr=fo(Gr|0,C|0,Br|0,Vr|0)|0;jr=fo(Vr|0,C|0,Dr|0,jr|0)|0;ie=fo(jr|0,C|0,J|0,ie|0)|0;u=fo(ie|0,C|0,S|0,u|0)|0;u=fo(u|0,C|0,Le|0,Ie|0)|0;S=C;Ie=po(Le|0,Ie|0,21)|0;Le=C;ie=fo(X|0,Q|0,1048576,0)|0;ie=co(ie|0,C|0,21)|0;J=C;Fr=fo(Hr|0,qr|0,zr|0,Fr|0)|0;Nr=fo(Fr|0,C|0,Ur|0,Nr|0)|0;Lr=fo(Nr|0,C|0,Pr|0,Lr|0)|0;Cr=fo(Lr|0,C|0,Ir|0,Cr|0)|0;Or=fo(Cr|0,C|0,Rr|0,Or|0)|0;Sr=fo(Or|0,C|0,xr|0,Sr|0)|0;Mr=fo(Sr|0,C|0,Er|0,Mr|0)|0;ve=fo(Mr|0,C|0,Tr|0,ve|0)|0;L=fo(ve|0,C|0,we|0,L|0)|0;I=fo(L|0,C|0,I&2097151|0,0)|0;I=fo(I|0,C|0,ie|0,J|0)|0;L=C;J=po(ie|0,J|0,21)|0;ie=C;we=fo(q|0,z|0,1048576,0)|0;we=co(we|0,C|0,21)|0;ve=C;ee=fo(Ar|0,yr|0,re|0,ee|0)|0;Je=fo(ee|0,C|0,Ye|0,Je|0)|0;W=fo(Je|0,C|0,K|0,W|0)|0;ur=fo(W|0,C|0,ar|0,ur|0)|0;je=fo(ur|0,C|0,He|0,je|0)|0;x=fo(je|0,C|0,N|0,x|0)|0;mr=fo(x|0,C|0,dr|0,mr|0)|0;k=fo(mr|0,C|0,T|0,k|0)|0;rr=fo(k|0,C|0,er|0,rr|0)|0;j=fo(rr|0,C|0,H|0,j|0)|0;ir=fo(j|0,C|0,_r|0,ir|0)|0;s=fo(ir|0,C|0,r|0,s|0)|0;s=fo(s|0,C|0,we|0,ve|0)|0;r=C;ve=po(we|0,ve|0,21)|0;we=C;ir=fo(br|0,pr|0,1048576,0)|0;ir=co(ir|0,C|0,21)|0;_r=C;g=fo(Qe|0,Xe|0,p|0,g|0)|0;ae=fo(g|0,C|0,qe|0,ae|0)|0;me=fo(ae|0,C|0,pe|0,me|0)|0;le=fo(me|0,C|0,fe|0,le|0)|0;vr=fo(le|0,C|0,wr|0,vr|0)|0;lr=fo(vr|0,C|0,ue|0,lr|0)|0;$=fo(lr|0,C|0,oe|0,$|0)|0;or=fo($|0,C|0,tr|0,or|0)|0;y=fo(or|0,C|0,E|0,y|0)|0;y=fo(y|0,C|0,ir|0,_r|0)|0;E=C;_r=po(ir|0,_r|0,21)|0;ir=C;or=fo(cr|0,hr|0,1048576,0)|0;or=co(or|0,C|0,21)|0;tr=C;f=fo(de|0,m|0,te|0,f|0)|0;R=fo(f|0,C|0,_e|0,R|0)|0;w=fo(R|0,C|0,Z|0,w|0)|0;o=fo(w|0,C|0,h|0,o|0)|0;v=fo(o|0,C|0,O|0,v|0)|0;$e=fo(v|0,C|0,Ze|0,$e|0)|0;b=fo($e|0,C|0,M|0,b|0)|0;b=fo(b|0,C|0,or|0,tr|0)|0;M=C;tr=po(or|0,tr|0,21)|0;or=C;$e=fo(gr|0,_|0,1048576,0)|0;$e=co($e|0,C|0,21)|0;Ze=C;l=fo(Be|0,Ge|0,c|0,l|0)|0;Ke=fo(l|0,C|0,We|0,Ke|0)|0;B=fo(Ke|0,C|0,G|0,B|0)|0;Ue=fo(B|0,C|0,n|0,Ue|0)|0;F=fo(Ue|0,C|0,ze|0,F|0)|0;F=fo(F|0,C|0,$e|0,Ze|0)|0;ze=C;Ze=po($e|0,Ze|0,21)|0;$e=C;Ue=fo(t|0,ne|0,1048576,0)|0;Ue=co(Ue|0,C|0,21)|0;n=C;he=fo(nr|0,be|0,ye|0,he|0)|0;P=fo(he|0,C|0,xe|0,P|0)|0;Ne=fo(P|0,C|0,fr|0,Ne|0)|0;Ne=fo(Ne|0,C|0,Ue|0,n|0)|0;fr=C;n=po(Ue|0,n|0,21)|0;n=lo(t|0,ne|0,n|0,C|0)|0;ne=C;t=fo(kr|0,Fe|0,1048576,0)|0;t=mo(t|0,C|0,21)|0;Ue=C;Pe=fo(U|0,Pe|0,t|0,Ue|0)|0;U=C;Ue=po(t|0,Ue|0,21)|0;Ue=lo(kr|0,Fe|0,Ue|0,C|0)|0;Fe=C;kr=fo(Oe|0,d|0,1048576,0)|0;kr=mo(kr|0,C|0,21)|0;t=C;P=po(kr|0,t|0,21)|0;P=lo(Oe|0,d|0,P|0,C|0)|0;d=C;Oe=fo(Ae|0,ce|0,1048576,0)|0;Oe=mo(Oe|0,C|0,21)|0;xe=C;he=po(Oe|0,xe|0,21)|0;he=lo(Ae|0,ce|0,he|0,C|0)|0;ce=C;Ae=fo(sr|0,se|0,1048576,0)|0;Ae=co(Ae|0,C|0,21)|0;ye=C;be=po(Ae|0,ye|0,21)|0;be=lo(sr|0,se|0,be|0,C|0)|0;se=C;sr=fo(D|0,V|0,1048576,0)|0;sr=co(sr|0,C|0,21)|0;nr=C;B=po(sr|0,nr|0,21)|0;G=C;Ke=fo(u|0,S|0,1048576,0)|0;Ke=co(Ke|0,C|0,21)|0;We=C;l=po(Ke|0,We|0,21)|0;c=C;Ge=fo(I|0,L|0,1048576,0)|0;Ge=co(Ge|0,C|0,21)|0;Be=C;v=po(Ge|0,Be|0,21)|0;O=C;o=fo(s|0,r|0,1048576,0)|0;o=co(o|0,C|0,21)|0;h=C;w=po(o|0,h|0,21)|0;Z=C;R=fo(y|0,E|0,1048576,0)|0;R=co(R|0,C|0,21)|0;_e=C;f=po(R|0,_e|0,21)|0;te=C;m=fo(b|0,M|0,1048576,0)|0;m=co(m|0,C|0,21)|0;de=C;$=po(m|0,de|0,21)|0;oe=C;lr=fo(F|0,ze|0,1048576,0)|0;lr=co(lr|0,C|0,21)|0;ue=C;ne=fo(lr|0,ue|0,n|0,ne|0)|0;n=C;ue=po(lr|0,ue|0,21)|0;ue=lo(F|0,ze|0,ue|0,C|0)|0;ze=C;F=fo(Ne|0,fr|0,1048576,0)|0;F=co(F|0,C|0,21)|0;lr=C;Fe=fo(F|0,lr|0,Ue|0,Fe|0)|0;Ue=C;lr=po(F|0,lr|0,21)|0;lr=lo(Ne|0,fr|0,lr|0,C|0)|0;fr=C;Ne=fo(Pe|0,U|0,1048576,0)|0;Ne=mo(Ne|0,C|0,21)|0;F=C;d=fo(Ne|0,F|0,P|0,d|0)|0;P=C;F=po(Ne|0,F|0,21)|0;F=lo(Pe|0,U|0,F|0,C|0)|0;U=C;Pe=yo(kr|0,t|0,666643,0)|0;Ne=C;vr=yo(kr|0,t|0,470296,0)|0;wr=C;le=yo(kr|0,t|0,654183,0)|0;fe=C;me=yo(kr|0,t|0,-997805,-1)|0;pe=C;ae=yo(kr|0,t|0,136657,0)|0;qe=C;t=yo(kr|0,t|0,-683901,-1)|0;t=fo(gr|0,_|0,t|0,C|0)|0;$e=lo(t|0,C|0,Ze|0,$e|0)|0;de=fo($e|0,C|0,m|0,de|0)|0;m=C;$e=yo(d|0,P|0,666643,0)|0;Ze=C;t=yo(d|0,P|0,470296,0)|0;_=C;gr=yo(d|0,P|0,654183,0)|0;kr=C;g=yo(d|0,P|0,-997805,-1)|0;p=C;Xe=yo(d|0,P|0,136657,0)|0;Qe=C;P=yo(d|0,P|0,-683901,-1)|0;d=C;j=yo(F|0,U|0,666643,0)|0;H=C;rr=yo(F|0,U|0,470296,0)|0;er=C;k=yo(F|0,U|0,654183,0)|0;T=C;mr=yo(F|0,U|0,-997805,-1)|0;dr=C;x=yo(F|0,U|0,136657,0)|0;N=C;U=yo(F|0,U|0,-683901,-1)|0;F=C;pe=fo(cr|0,hr|0,me|0,pe|0)|0;Qe=fo(pe|0,C|0,Xe|0,Qe|0)|0;F=fo(Qe|0,C|0,U|0,F|0)|0;or=lo(F|0,C|0,tr|0,or|0)|0;_e=fo(or|0,C|0,R|0,_e|0)|0;R=C;or=yo(Fe|0,Ue|0,666643,0)|0;tr=C;F=yo(Fe|0,Ue|0,470296,0)|0;U=C;Qe=yo(Fe|0,Ue|0,654183,0)|0;Xe=C;pe=yo(Fe|0,Ue|0,-997805,-1)|0;me=C;hr=yo(Fe|0,Ue|0,136657,0)|0;cr=C;Ue=yo(Fe|0,Ue|0,-683901,-1)|0;Fe=C;je=yo(lr|0,fr|0,666643,0)|0;He=C;ur=yo(lr|0,fr|0,470296,0)|0;ar=C;W=yo(lr|0,fr|0,654183,0)|0;K=C;Je=yo(lr|0,fr|0,-997805,-1)|0;Ye=C;ee=yo(lr|0,fr|0,136657,0)|0;re=C;fr=yo(lr|0,fr|0,-683901,-1)|0;lr=C;wr=fo(gr|0,kr|0,vr|0,wr|0)|0;pr=fo(wr|0,C|0,br|0,pr|0)|0;dr=fo(pr|0,C|0,mr|0,dr|0)|0;cr=fo(dr|0,C|0,hr|0,cr|0)|0;lr=fo(cr|0,C|0,fr|0,lr|0)|0;ir=lo(lr|0,C|0,_r|0,ir|0)|0;h=fo(ir|0,C|0,o|0,h|0)|0;o=C;ir=yo(ne|0,n|0,666643,0)|0;ir=fo(sr|0,nr|0,ir|0,C|0)|0;Ve=fo(ir|0,C|0,De|0,Ve|0)|0;Le=lo(Ve|0,C|0,Ie|0,Le|0)|0;Ie=C;Ve=yo(ne|0,n|0,470296,0)|0;De=C;ir=yo(ne|0,n|0,654183,0)|0;nr=C;tr=fo(ur|0,ar|0,or|0,tr|0)|0;nr=fo(tr|0,C|0,ir|0,nr|0)|0;We=fo(nr|0,C|0,Ke|0,We|0)|0;Q=fo(We|0,C|0,X|0,Q|0)|0;ie=lo(Q|0,C|0,J|0,ie|0)|0;J=C;Q=yo(ne|0,n|0,-997805,-1)|0;X=C;We=yo(ne|0,n|0,136657,0)|0;Ke=C;Ze=fo(rr|0,er|0,$e|0,Ze|0)|0;Xe=fo(Ze|0,C|0,Qe|0,Xe|0)|0;Ye=fo(Xe|0,C|0,Je|0,Ye|0)|0;Ke=fo(Ye|0,C|0,We|0,Ke|0)|0;Be=fo(Ke|0,C|0,Ge|0,Be|0)|0;z=fo(Be|0,C|0,q|0,z|0)|0;we=lo(z|0,C|0,ve|0,we|0)|0;ve=C;n=yo(ne|0,n|0,-683901,-1)|0;ne=C;z=fo(Le|0,Ie|0,1048576,0)|0;z=co(z|0,C|0,21)|0;q=C;He=fo(Ve|0,De|0,je|0,He|0)|0;S=fo(He|0,C|0,u|0,S|0)|0;c=lo(S|0,C|0,l|0,c|0)|0;c=fo(c|0,C|0,z|0,q|0)|0;l=C;q=po(z|0,q|0,21)|0;z=C;S=fo(ie|0,J|0,1048576,0)|0;S=co(S|0,C|0,21)|0;u=C;H=fo(F|0,U|0,j|0,H|0)|0;K=fo(H|0,C|0,W|0,K|0)|0;X=fo(K|0,C|0,Q|0,X|0)|0;L=fo(X|0,C|0,I|0,L|0)|0;O=lo(L|0,C|0,v|0,O|0)|0;O=fo(O|0,C|0,S|0,u|0)|0;v=C;u=po(S|0,u|0,21)|0;S=C;L=fo(we|0,ve|0,1048576,0)|0;L=co(L|0,C|0,21)|0;I=C;Ne=fo(t|0,_|0,Pe|0,Ne|0)|0;T=fo(Ne|0,C|0,k|0,T|0)|0;me=fo(T|0,C|0,pe|0,me|0)|0;re=fo(me|0,C|0,ee|0,re|0)|0;ne=fo(re|0,C|0,n|0,ne|0)|0;r=fo(ne|0,C|0,s|0,r|0)|0;Z=lo(r|0,C|0,w|0,Z|0)|0;Z=fo(Z|0,C|0,L|0,I|0)|0;w=C;I=po(L|0,I|0,21)|0;L=C;r=fo(h|0,o|0,1048576,0)|0;r=co(r|0,C|0,21)|0;s=C;fe=fo(g|0,p|0,le|0,fe|0)|0;N=fo(fe|0,C|0,x|0,N|0)|0;Fe=fo(N|0,C|0,Ue|0,Fe|0)|0;E=fo(Fe|0,C|0,y|0,E|0)|0;te=lo(E|0,C|0,f|0,te|0)|0;te=fo(te|0,C|0,r|0,s|0)|0;f=C;s=po(r|0,s|0,21)|0;s=lo(h|0,o|0,s|0,C|0)|0;o=C;h=fo(_e|0,R|0,1048576,0)|0;h=co(h|0,C|0,21)|0;r=C;qe=fo(P|0,d|0,ae|0,qe|0)|0;M=fo(qe|0,C|0,b|0,M|0)|0;oe=lo(M|0,C|0,$|0,oe|0)|0;oe=fo(oe|0,C|0,h|0,r|0)|0;$=C;r=po(h|0,r|0,21)|0;r=lo(_e|0,R|0,r|0,C|0)|0;R=C;_e=fo(de|0,m|0,1048576,0)|0;_e=co(_e|0,C|0,21)|0;h=C;ze=fo(_e|0,h|0,ue|0,ze|0)|0;ue=C;h=po(_e|0,h|0,21)|0;h=lo(de|0,m|0,h|0,C|0)|0;m=C;de=fo(c|0,l|0,1048576,0)|0;de=co(de|0,C|0,21)|0;_e=C;M=po(de|0,_e|0,21)|0;b=C;qe=fo(O|0,v|0,1048576,0)|0;qe=co(qe|0,C|0,21)|0;ae=C;d=po(qe|0,ae|0,21)|0;P=C;E=fo(Z|0,w|0,1048576,0)|0;E=co(E|0,C|0,21)|0;y=C;o=fo(E|0,y|0,s|0,o|0)|0;s=C;y=po(E|0,y|0,21)|0;y=lo(Z|0,w|0,y|0,C|0)|0;w=C;Z=fo(te|0,f|0,1048576,0)|0;Z=co(Z|0,C|0,21)|0;E=C;R=fo(Z|0,E|0,r|0,R|0)|0;r=C;E=po(Z|0,E|0,21)|0;E=lo(te|0,f|0,E|0,C|0)|0;f=C;te=fo(oe|0,$|0,1048576,0)|0;te=co(te|0,C|0,21)|0;Z=C;m=fo(te|0,Z|0,h|0,m|0)|0;h=C;Z=po(te|0,Z|0,21)|0;Z=lo(oe|0,$|0,Z|0,C|0)|0;$=C;oe=yo(ze|0,ue|0,666643,0)|0;te=C;Fe=yo(ze|0,ue|0,470296,0)|0;Ue=C;N=yo(ze|0,ue|0,654183,0)|0;x=C;fe=yo(ze|0,ue|0,-997805,-1)|0;le=C;p=yo(ze|0,ue|0,136657,0)|0;g=C;ue=yo(ze|0,ue|0,-683901,-1)|0;ue=fo(qe|0,ae|0,ue|0,C|0)|0;ve=fo(ue|0,C|0,we|0,ve|0)|0;L=lo(ve|0,C|0,I|0,L|0)|0;I=C;ve=yo(m|0,h|0,666643,0)|0;we=C;ue=yo(m|0,h|0,470296,0)|0;ae=C;qe=yo(m|0,h|0,654183,0)|0;ze=C;ne=yo(m|0,h|0,-997805,-1)|0;n=C;re=yo(m|0,h|0,136657,0)|0;ee=C;h=yo(m|0,h|0,-683901,-1)|0;m=C;me=yo(Z|0,$|0,666643,0)|0;me=fo(be|0,se|0,me|0,C|0)|0;se=C;be=yo(Z|0,$|0,470296,0)|0;pe=C;T=yo(Z|0,$|0,654183,0)|0;k=C;Ne=yo(Z|0,$|0,-997805,-1)|0;Pe=C;_=yo(Z|0,$|0,136657,0)|0;t=C;$=yo(Z|0,$|0,-683901,-1)|0;Z=C;le=fo(re|0,ee|0,fe|0,le|0)|0;Z=fo(le|0,C|0,$|0,Z|0)|0;_e=fo(Z|0,C|0,de|0,_e|0)|0;J=fo(_e|0,C|0,ie|0,J|0)|0;S=lo(J|0,C|0,u|0,S|0)|0;u=C;J=yo(R|0,r|0,666643,0)|0;ie=C;_e=yo(R|0,r|0,470296,0)|0;_e=fo(me|0,se|0,_e|0,C|0)|0;se=C;me=yo(R|0,r|0,654183,0)|0;de=C;Z=yo(R|0,r|0,-997805,-1)|0;$=C;le=yo(R|0,r|0,136657,0)|0;fe=C;r=yo(R|0,r|0,-683901,-1)|0;R=C;ee=yo(E|0,f|0,666643,0)|0;re=C;X=yo(E|0,f|0,470296,0)|0;Q=C;K=yo(E|0,f|0,654183,0)|0;W=C;H=yo(E|0,f|0,-997805,-1)|0;j=C;U=yo(E|0,f|0,136657,0)|0;F=C;f=yo(E|0,f|0,-683901,-1)|0;E=C;Ue=fo(qe|0,ze|0,Fe|0,Ue|0)|0;Pe=fo(Ue|0,C|0,Ne|0,Pe|0)|0;Ie=fo(Pe|0,C|0,Le|0,Ie|0)|0;z=lo(Ie|0,C|0,q|0,z|0)|0;fe=fo(z|0,C|0,le|0,fe|0)|0;E=fo(fe|0,C|0,f|0,E|0)|0;f=C;fe=yo(o|0,s|0,666643,0)|0;Y=fo(fe|0,C|0,A|0,Y|0)|0;A=C;fe=yo(o|0,s|0,470296,0)|0;le=C;z=yo(o|0,s|0,654183,0)|0;q=C;xe=fo(Ce|0,Re|0,Oe|0,xe|0)|0;Ee=lo(xe|0,C|0,Se|0,Ee|0)|0;ie=fo(Ee|0,C|0,J|0,ie|0)|0;q=fo(ie|0,C|0,z|0,q|0)|0;Q=fo(q|0,C|0,X|0,Q|0)|0;X=C;q=yo(o|0,s|0,-997805,-1)|0;z=C;ie=yo(o|0,s|0,136657,0)|0;J=C;ye=fo(Me|0,Te|0,Ae|0,ye|0)|0;ke=lo(ye|0,C|0,ge|0,ke|0)|0;we=fo(ke|0,C|0,ve|0,we|0)|0;pe=fo(we|0,C|0,be|0,pe|0)|0;de=fo(pe|0,C|0,me|0,de|0)|0;J=fo(de|0,C|0,ie|0,J|0)|0;j=fo(J|0,C|0,H|0,j|0)|0;H=C;s=yo(o|0,s|0,-683901,-1)|0;o=C;J=fo(Y|0,A|0,1048576,0)|0;J=co(J|0,C|0,21)|0;ie=C;le=fo(he|0,ce|0,fe|0,le|0)|0;re=fo(le|0,C|0,ee|0,re|0)|0;re=fo(re|0,C|0,J|0,ie|0)|0;ee=C;ie=po(J|0,ie|0,21)|0;ie=lo(Y|0,A|0,ie|0,C|0)|0;A=C;Y=fo(Q|0,X|0,1048576,0)|0;Y=co(Y|0,C|0,21)|0;J=C;z=fo(_e|0,se|0,q|0,z|0)|0;W=fo(z|0,C|0,K|0,W|0)|0;W=fo(W|0,C|0,Y|0,J|0)|0;K=C;J=po(Y|0,J|0,21)|0;Y=C;z=fo(j|0,H|0,1048576,0)|0;z=co(z|0,C|0,21)|0;q=C;te=fo(ue|0,ae|0,oe|0,te|0)|0;k=fo(te|0,C|0,T|0,k|0)|0;V=fo(k|0,C|0,D|0,V|0)|0;G=lo(V|0,C|0,B|0,G|0)|0;$=fo(G|0,C|0,Z|0,$|0)|0;o=fo($|0,C|0,s|0,o|0)|0;F=fo(o|0,C|0,U|0,F|0)|0;F=fo(F|0,C|0,z|0,q|0)|0;U=C;q=po(z|0,q|0,21)|0;z=C;o=fo(E|0,f|0,1048576,0)|0;o=co(o|0,C|0,21)|0;s=C;x=fo(ne|0,n|0,N|0,x|0)|0;t=fo(x|0,C|0,_|0,t|0)|0;l=fo(t|0,C|0,c|0,l|0)|0;b=lo(l|0,C|0,M|0,b|0)|0;R=fo(b|0,C|0,r|0,R|0)|0;R=fo(R|0,C|0,o|0,s|0)|0;r=C;s=po(o|0,s|0,21)|0;s=lo(E|0,f|0,s|0,C|0)|0;f=C;E=fo(S|0,u|0,1048576,0)|0;E=co(E|0,C|0,21)|0;o=C;g=fo(h|0,m|0,p|0,g|0)|0;v=fo(g|0,C|0,O|0,v|0)|0;v=fo(v|0,C|0,E|0,o|0)|0;P=lo(v|0,C|0,d|0,P|0)|0;d=C;o=po(E|0,o|0,21)|0;o=lo(S|0,u|0,o|0,C|0)|0;u=C;S=fo(L|0,I|0,1048576,0)|0;S=co(S|0,C|0,21)|0;E=C;w=fo(y|0,w|0,S|0,E|0)|0;y=C;E=po(S|0,E|0,21)|0;S=C;v=fo(re|0,ee|0,1048576,0)|0;v=co(v|0,C|0,21)|0;O=C;g=po(v|0,O|0,21)|0;p=C;m=fo(W|0,K|0,1048576,0)|0;m=co(m|0,C|0,21)|0;h=C;b=po(m|0,h|0,21)|0;M=C;l=fo(F|0,U|0,1048576,0)|0;l=co(l|0,C|0,21)|0;c=C;f=fo(s|0,f|0,l|0,c|0)|0;s=C;c=po(l|0,c|0,21)|0;l=C;t=fo(R|0,r|0,1048576,0)|0;t=co(t|0,C|0,21)|0;_=C;u=fo(o|0,u|0,t|0,_|0)|0;o=C;_=po(t|0,_|0,21)|0;_=lo(R|0,r|0,_|0,C|0)|0;r=C;R=fo(P|0,d|0,1048576,0)|0;R=co(R|0,C|0,21)|0;t=C;x=po(R|0,t|0,21)|0;x=lo(P|0,d|0,x|0,C|0)|0;d=C;P=fo(w|0,y|0,1048576,0)|0;P=co(P|0,C|0,21)|0;N=C;n=po(P|0,N|0,21)|0;n=lo(w|0,y|0,n|0,C|0)|0;y=C;w=yo(P|0,N|0,666643,0)|0;w=fo(ie|0,A|0,w|0,C|0)|0;A=C;ie=yo(P|0,N|0,470296,0)|0;ne=C;$=yo(P|0,N|0,654183,0)|0;Z=C;G=yo(P|0,N|0,-997805,-1)|0;B=C;V=yo(P|0,N|0,136657,0)|0;D=C;N=yo(P|0,N|0,-683901,-1)|0;P=C;k=co(w|0,A|0,21)|0;T=C;ee=fo(ie|0,ne|0,re|0,ee|0)|0;p=lo(ee|0,C|0,g|0,p|0)|0;p=fo(p|0,C|0,k|0,T|0)|0;g=C;T=po(k|0,T|0,21)|0;T=lo(w|0,A|0,T|0,C|0)|0;A=C;w=co(p|0,g|0,21)|0;k=C;X=fo($|0,Z|0,Q|0,X|0)|0;Y=lo(X|0,C|0,J|0,Y|0)|0;O=fo(Y|0,C|0,v|0,O|0)|0;O=fo(O|0,C|0,w|0,k|0)|0;v=C;k=po(w|0,k|0,21)|0;k=lo(p|0,g|0,k|0,C|0)|0;g=C;p=co(O|0,v|0,21)|0;w=C;B=fo(W|0,K|0,G|0,B|0)|0;M=lo(B|0,C|0,b|0,M|0)|0;M=fo(M|0,C|0,p|0,w|0)|0;b=C;w=po(p|0,w|0,21)|0;w=lo(O|0,v|0,w|0,C|0)|0;v=C;O=co(M|0,b|0,21)|0;p=C;H=fo(V|0,D|0,j|0,H|0)|0;z=lo(H|0,C|0,q|0,z|0)|0;h=fo(z|0,C|0,m|0,h|0)|0;h=fo(h|0,C|0,O|0,p|0)|0;m=C;p=po(O|0,p|0,21)|0;p=lo(M|0,b|0,p|0,C|0)|0;b=C;M=co(h|0,m|0,21)|0;O=C;P=fo(F|0,U|0,N|0,P|0)|0;l=lo(P|0,C|0,c|0,l|0)|0;l=fo(l|0,C|0,M|0,O|0)|0;c=C;O=po(M|0,O|0,21)|0;O=lo(h|0,m|0,O|0,C|0)|0;m=C;h=co(l|0,c|0,21)|0;M=C;s=fo(f|0,s|0,h|0,M|0)|0;f=C;M=po(h|0,M|0,21)|0;M=lo(l|0,c|0,M|0,C|0)|0;c=C;l=co(s|0,f|0,21)|0;h=C;r=fo(l|0,h|0,_|0,r|0)|0;_=C;h=po(l|0,h|0,21)|0;h=lo(s|0,f|0,h|0,C|0)|0;f=C;s=co(r|0,_|0,21)|0;l=C;o=fo(u|0,o|0,s|0,l|0)|0;u=C;l=po(s|0,l|0,21)|0;l=lo(r|0,_|0,l|0,C|0)|0;_=C;r=co(o|0,u|0,21)|0;s=C;d=fo(r|0,s|0,x|0,d|0)|0;x=C;s=po(r|0,s|0,21)|0;s=lo(o|0,u|0,s|0,C|0)|0;u=C;o=co(d|0,x|0,21)|0;r=C;t=fo(L|0,I|0,R|0,t|0)|0;S=lo(t|0,C|0,E|0,S|0)|0;S=fo(S|0,C|0,o|0,r|0)|0;E=C;r=po(o|0,r|0,21)|0;r=lo(d|0,x|0,r|0,C|0)|0;x=C;d=co(S|0,E|0,21)|0;o=C;y=fo(d|0,o|0,n|0,y|0)|0;n=C;o=po(d|0,o|0,21)|0;o=lo(S|0,E|0,o|0,C|0)|0;E=C;S=co(y|0,n|0,21)|0;d=C;t=po(S|0,d|0,21)|0;t=lo(y|0,n|0,t|0,C|0)|0;n=C;y=yo(S|0,d|0,666643,0)|0;A=fo(y|0,C|0,T|0,A|0)|0;T=C;y=yo(S|0,d|0,470296,0)|0;y=fo(k|0,g|0,y|0,C|0)|0;g=C;k=yo(S|0,d|0,654183,0)|0;k=fo(w|0,v|0,k|0,C|0)|0;v=C;w=yo(S|0,d|0,-997805,-1)|0;w=fo(p|0,b|0,w|0,C|0)|0;b=C;p=yo(S|0,d|0,136657,0)|0;p=fo(O|0,m|0,p|0,C|0)|0;m=C;d=yo(S|0,d|0,-683901,-1)|0;d=fo(M|0,c|0,d|0,C|0)|0;c=C;M=co(A|0,T|0,21)|0;S=C;g=fo(y|0,g|0,M|0,S|0)|0;y=C;S=po(M|0,S|0,21)|0;S=lo(A|0,T|0,S|0,C|0)|0;T=C;A=co(g|0,y|0,21)|0;M=C;v=fo(k|0,v|0,A|0,M|0)|0;k=C;M=po(A|0,M|0,21)|0;M=lo(g|0,y|0,M|0,C|0)|0;y=C;g=co(v|0,k|0,21)|0;A=C;b=fo(w|0,b|0,g|0,A|0)|0;w=C;A=po(g|0,A|0,21)|0;A=lo(v|0,k|0,A|0,C|0)|0;k=C;v=co(b|0,w|0,21)|0;g=C;m=fo(p|0,m|0,v|0,g|0)|0;p=C;g=po(v|0,g|0,21)|0;g=lo(b|0,w|0,g|0,C|0)|0;w=C;b=co(m|0,p|0,21)|0;v=C;c=fo(d|0,c|0,b|0,v|0)|0;d=C;v=po(b|0,v|0,21)|0;v=lo(m|0,p|0,v|0,C|0)|0;p=C;m=co(c|0,d|0,21)|0;b=C;f=fo(m|0,b|0,h|0,f|0)|0;h=C;b=po(m|0,b|0,21)|0;b=lo(c|0,d|0,b|0,C|0)|0;d=C;c=co(f|0,h|0,21)|0;m=C;_=fo(c|0,m|0,l|0,_|0)|0;l=C;m=po(c|0,m|0,21)|0;m=lo(f|0,h|0,m|0,C|0)|0;h=C;f=co(_|0,l|0,21)|0;c=C;u=fo(f|0,c|0,s|0,u|0)|0;s=C;c=po(f|0,c|0,21)|0;c=lo(_|0,l|0,c|0,C|0)|0;l=C;_=co(u|0,s|0,21)|0;f=C;x=fo(_|0,f|0,r|0,x|0)|0;r=C;f=po(_|0,f|0,21)|0;f=lo(u|0,s|0,f|0,C|0)|0;s=C;u=co(x|0,r|0,21)|0;_=C;E=fo(u|0,_|0,o|0,E|0)|0;o=C;_=po(u|0,_|0,21)|0;_=lo(x|0,r|0,_|0,C|0)|0;r=C;x=co(E|0,o|0,21)|0;u=C;n=fo(x|0,u|0,t|0,n|0)|0;t=C;u=po(x|0,u|0,21)|0;u=lo(E|0,o|0,u|0,C|0)|0;o=C;i[e>>0]=S;E=mo(S|0,T|0,8)|0;i[e+1>>0]=E;T=mo(S|0,T|0,16)|0;S=C;E=po(M|0,y|0,5)|0;i[e+2>>0]=E|T;T=mo(M|0,y|0,3)|0;i[e+3>>0]=T;T=mo(M|0,y|0,11)|0;i[e+4>>0]=T;y=mo(M|0,y|0,19)|0;M=C;T=po(A|0,k|0,2)|0;i[e+5>>0]=T|y;y=mo(A|0,k|0,6)|0;i[e+6>>0]=y;k=mo(A|0,k|0,14)|0;A=C;y=po(g|0,w|0,7)|0;i[e+7>>0]=y|k;k=mo(g|0,w|0,1)|0;i[e+8>>0]=k;k=mo(g|0,w|0,9)|0;i[e+9>>0]=k;w=mo(g|0,w|0,17)|0;g=C;k=po(v|0,p|0,4)|0;i[e+10>>0]=k|w;w=mo(v|0,p|0,4)|0;i[e+11>>0]=w;w=mo(v|0,p|0,12)|0;i[e+12>>0]=w;p=mo(v|0,p|0,20)|0;v=C;w=po(b|0,d|0,1)|0;i[e+13>>0]=w|p;p=mo(b|0,d|0,7)|0;i[e+14>>0]=p;d=mo(b|0,d|0,15)|0;b=C;p=po(m|0,h|0,6)|0;i[e+15>>0]=p|d;d=mo(m|0,h|0,2)|0;i[e+16>>0]=d;d=mo(m|0,h|0,10)|0;i[e+17>>0]=d;h=mo(m|0,h|0,18)|0;m=C;d=po(c|0,l|0,3)|0;i[e+18>>0]=d|h;h=mo(c|0,l|0,5)|0;i[e+19>>0]=h;l=mo(c|0,l|0,13)|0;i[e+20>>0]=l;i[e+21>>0]=f;l=mo(f|0,s|0,8)|0;i[e+22>>0]=l;s=mo(f|0,s|0,16)|0;f=C;l=po(_|0,r|0,5)|0;i[e+23>>0]=l|s;s=mo(_|0,r|0,3)|0;i[e+24>>0]=s;s=mo(_|0,r|0,11)|0;i[e+25>>0]=s;r=mo(_|0,r|0,19)|0;_=C;s=po(u|0,o|0,2)|0;i[e+26>>0]=s|r;r=mo(u|0,o|0,6)|0;i[e+27>>0]=r;o=mo(u|0,o|0,14)|0;u=C;r=po(n|0,t|0,7)|0;i[e+28>>0]=o|r;r=mo(n|0,t|0,1)|0;i[e+29>>0]=r;r=mo(n|0,t|0,9)|0;i[e+30>>0]=r;t=mo(n|0,t|0,17)|0;i[e+31>>0]=t;return}function Hi(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0;W=r+40|0;_=r+44|0;c=r+48|0;m=r+52|0;w=r+56|0;g=r+60|0;T=r+64|0;S=r+68|0;R=r+72|0;x=r+76|0;B=r+4|0;j=r+8|0;i=r+12|0;f=r+16|0;h=r+20|0;k=r+24|0;y=r+28|0;O=r+32|0;H=r+36|0;ae=(o[B>>2]|0)+(o[_>>2]|0)|0;oe=(o[j>>2]|0)+(o[c>>2]|0)|0;te=(o[i>>2]|0)+(o[m>>2]|0)|0;ie=(o[f>>2]|0)+(o[w>>2]|0)|0;ne=(o[h>>2]|0)+(o[g>>2]|0)|0;re=(o[k>>2]|0)+(o[T>>2]|0)|0;ee=(o[y>>2]|0)+(o[S>>2]|0)|0;$=(o[O>>2]|0)+(o[R>>2]|0)|0;X=(o[H>>2]|0)+(o[x>>2]|0)|0;o[e>>2]=(o[r>>2]|0)+(o[W>>2]|0);ue=e+4|0;o[ue>>2]=ae;ae=e+8|0;o[ae>>2]=oe;oe=e+12|0;o[oe>>2]=te;te=e+16|0;o[te>>2]=ie;ie=e+20|0;o[ie>>2]=ne;ne=e+24|0;o[ne>>2]=re;re=e+28|0;o[re>>2]=ee;ee=e+32|0;o[ee>>2]=$;$=e+36|0;o[$>>2]=X;X=e+40|0;B=(o[_>>2]|0)-(o[B>>2]|0)|0;j=(o[c>>2]|0)-(o[j>>2]|0)|0;i=(o[m>>2]|0)-(o[i>>2]|0)|0;f=(o[w>>2]|0)-(o[f>>2]|0)|0;h=(o[g>>2]|0)-(o[h>>2]|0)|0;k=(o[T>>2]|0)-(o[k>>2]|0)|0;y=(o[S>>2]|0)-(o[y>>2]|0)|0;O=(o[R>>2]|0)-(o[O>>2]|0)|0;H=(o[x>>2]|0)-(o[H>>2]|0)|0;o[X>>2]=(o[W>>2]|0)-(o[r>>2]|0);W=e+44|0;o[W>>2]=B;B=e+48|0;o[B>>2]=j;j=e+52|0;o[j>>2]=i;i=e+56|0;o[i>>2]=f;f=e+60|0;o[f>>2]=h;h=e+64|0;o[h>>2]=k;k=e+68|0;o[k>>2]=y;y=e+72|0;o[y>>2]=O;O=e+76|0;o[O>>2]=H;H=e+80|0;Pi(H,e,n);Pi(X,X,n+40|0);x=e+120|0;Pi(x,n+120|0,r+120|0);Pi(e,r+80|0,n+80|0);R=o[e>>2]<<1;S=o[ue>>2]<<1;T=o[ae>>2]<<1;g=o[oe>>2]<<1;w=o[te>>2]<<1;m=o[ie>>2]<<1;c=o[ne>>2]<<1;_=o[re>>2]<<1;a=o[ee>>2]<<1;r=o[$>>2]<<1;Q=o[H>>2]|0;q=e+84|0;Y=o[q>>2]|0;z=e+88|0;G=o[z>>2]|0;F=e+92|0;D=o[F>>2]|0;U=e+96|0;t=o[U>>2]|0;N=e+100|0;u=o[N>>2]|0;P=e+104|0;d=o[P>>2]|0;L=e+108|0;p=o[L>>2]|0;I=e+112|0;A=o[I>>2]|0;C=e+116|0;M=o[C>>2]|0;Z=o[X>>2]|0;J=o[W>>2]|0;K=o[B>>2]|0;V=o[j>>2]|0;n=o[i>>2]|0;s=o[f>>2]|0;l=o[h>>2]|0;b=o[k>>2]|0;v=o[y>>2]|0;E=o[O>>2]|0;o[e>>2]=Q-Z;o[ue>>2]=Y-J;o[ae>>2]=G-K;o[oe>>2]=D-V;o[te>>2]=t-n;o[ie>>2]=u-s;o[ne>>2]=d-l;o[re>>2]=p-b;o[ee>>2]=A-v;o[$>>2]=M-E;o[X>>2]=Z+Q;o[W>>2]=J+Y;o[B>>2]=K+G;o[j>>2]=V+D;o[i>>2]=n+t;o[f>>2]=s+u;o[h>>2]=l+d;o[k>>2]=b+p;o[y>>2]=v+A;o[O>>2]=E+M;O=o[x>>2]|0;M=e+124|0;E=o[M>>2]|0;y=e+128|0;A=o[y>>2]|0;v=e+132|0;k=o[v>>2]|0;p=e+136|0;b=o[p>>2]|0;h=e+140|0;d=o[h>>2]|0;l=e+144|0;f=o[l>>2]|0;u=e+148|0;s=o[u>>2]|0;i=e+152|0;t=o[i>>2]|0;e=e+156|0;n=o[e>>2]|0;o[H>>2]=O+R;o[q>>2]=E+S;o[z>>2]=A+T;o[F>>2]=k+g;o[U>>2]=b+w;o[N>>2]=d+m;o[P>>2]=f+c;o[L>>2]=s+_;o[I>>2]=t+a;o[C>>2]=n+r;o[x>>2]=R-O;o[M>>2]=S-E;o[y>>2]=T-A;o[v>>2]=g-k;o[p>>2]=w-b;o[h>>2]=m-d;o[l>>2]=c-f;o[u>>2]=_-s;o[i>>2]=a-t;o[e>>2]=r-n;return}function ji(e,r,n,t){e=e|0;r=r|0;n=n|0;t=t|0;var u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0;A=f;f=f+2400|0;p=A+1760|0;v=A+2136|0;k=A+1880|0;w=A+480|0;g=A+320|0;y=A+160|0;b=A;u=0;do{i[v+u>>0]=(a[r+(u>>3)>>0]|0)>>>(u&7)&1;u=u+1|0}while((u|0)!=256);m=0;while(1){h=v+m|0;e:do{if(i[h>>0]|0){d=1;do{u=d+m|0;if((u|0)>=256)break e;r=v+u|0;c=i[r>>0]|0;r:do{if(c<<24>>24){s=i[h>>0]|0;_=c<<24>>24<<d;l=s+_|0;if((l|0)<16){i[h>>0]=l;i[r>>0]=0;break}r=s-_|0;if((r|0)<=-16)break e;i[h>>0]=r;r=v+u|0;if(c<<24>>24)do{i[r>>0]=0;u=u+1|0;if((u|0)>=256)break r;r=v+u|0}while((i[v+u>>0]|0)!=0);i[r>>0]=1}}while(0);d=d+1|0}while((d|0)<7)}}while(0);m=m+1|0;if((m|0)==256){r=0;break}}do{i[k+r>>0]=(a[t+(r>>3)>>0]|0)>>>(r&7)&1;r=r+1|0}while((r|0)!=256);m=0;do{h=k+m|0;e:do{if(i[h>>0]|0){d=1;do{u=d+m|0;if((u|0)>=256)break e;r=k+u|0;c=i[r>>0]|0;r:do{if(c<<24>>24){s=i[h>>0]|0;_=c<<24>>24<<d;l=s+_|0;if((l|0)<16){i[h>>0]=l;i[r>>0]=0;break}r=s-_|0;if((r|0)<=-16)break e;i[h>>0]=r;r=k+u|0;if(c<<24>>24)do{i[r>>0]=0;u=u+1|0;if((u|0)>=256)break r;r=k+u|0}while((i[k+u>>0]|0)!=0);i[r>>0]=1}}while(0);d=d+1|0}while((d|0)<7)}}while(0);m=m+1|0}while((m|0)!=256);Di(w,n);_=o[n+4>>2]|0;u=o[n+8>>2]|0;r=o[n+12>>2]|0;t=o[n+16>>2]|0;m=o[n+20>>2]|0;d=o[n+24>>2]|0;h=o[n+28>>2]|0;c=o[n+32>>2]|0;l=o[n+36>>2]|0;o[p>>2]=o[n>>2];o[p+4>>2]=_;o[p+8>>2]=u;o[p+12>>2]=r;o[p+16>>2]=t;o[p+20>>2]=m;o[p+24>>2]=d;o[p+28>>2]=h;o[p+32>>2]=c;o[p+36>>2]=l;l=o[n+44>>2]|0;c=o[n+48>>2]|0;h=o[n+52>>2]|0;d=o[n+56>>2]|0;m=o[n+60>>2]|0;t=o[n+64>>2]|0;r=o[n+68>>2]|0;u=o[n+72>>2]|0;_=o[n+76>>2]|0;o[p+40>>2]=o[n+40>>2];o[p+44>>2]=l;o[p+48>>2]=c;o[p+52>>2]=h;o[p+56>>2]=d;o[p+60>>2]=m;o[p+64>>2]=t;o[p+68>>2]=r;o[p+72>>2]=u;o[p+76>>2]=_;_=o[n+84>>2]|0;u=o[n+88>>2]|0;r=o[n+92>>2]|0;t=o[n+96>>2]|0;m=o[n+100>>2]|0;d=o[n+104>>2]|0;h=o[n+108>>2]|0;c=o[n+112>>2]|0;l=o[n+116>>2]|0;o[p+80>>2]=o[n+80>>2];o[p+84>>2]=_;o[p+88>>2]=u;o[p+92>>2]=r;o[p+96>>2]=t;o[p+100>>2]=m;o[p+104>>2]=d;o[p+108>>2]=h;o[p+112>>2]=c;o[p+116>>2]=l;Vi(g,p);l=g+120|0;Pi(b,g,l);c=g+40|0;h=g+80|0;Pi(b+40|0,c,h);Pi(b+80|0,h,l);Pi(b+120|0,g,c);Hi(g,b,w);Pi(y,g,l);d=y+40|0;Pi(d,c,h);m=y+80|0;Pi(m,h,l);t=y+120|0;Pi(t,g,c);r=w+160|0;Di(r,y);Hi(g,b,r);Pi(y,g,l);Pi(d,c,h);Pi(m,h,l);Pi(t,g,c);r=w+320|0;Di(r,y);Hi(g,b,r);Pi(y,g,l);Pi(d,c,h);Pi(m,h,l);Pi(t,g,c);r=w+480|0;Di(r,y);Hi(g,b,r);Pi(y,g,l);Pi(d,c,h);Pi(m,h,l);Pi(t,g,c);r=w+640|0;Di(r,y);Hi(g,b,r);Pi(y,g,l);Pi(d,c,h);Pi(m,h,l);Pi(t,g,c);r=w+800|0;Di(r,y);Hi(g,b,r);Pi(y,g,l);Pi(d,c,h);Pi(m,h,l);Pi(t,g,c);r=w+960|0;Di(r,y);Hi(g,b,r);Pi(y,g,l);Pi(d,c,h);Pi(m,h,l);Pi(t,g,c);Di(w+1120|0,y);r=e;u=r+40|0;do{o[r>>2]=0;r=r+4|0}while((r|0)<(u|0));s=e+40|0;o[s>>2]=1;r=e+44|0;u=r+36|0;do{o[r>>2]=0;r=r+4|0}while((r|0)<(u|0));_=e+80|0;o[_>>2]=1;r=e+84|0;u=r+36|0;do{o[r>>2]=0;r=r+4|0}while((r|0)<(u|0));u=255;while(1){if(i[v+u>>0]|0){r=u;break}if(i[k+u>>0]|0){r=u;break}r=u+-1|0;if((u|0)>0)u=r;else break}if((r|0)<=-1){f=A;return}while(1){Vi(g,e);u=i[v+r>>0]|0;if(u<<24>>24<=0){if(u<<24>>24<0){Pi(y,g,l);Pi(d,c,h);Pi(m,h,l);Pi(t,g,c);Bi(g,y,w+(((u<<24>>24|0)/-2|0)*160|0)|0)}}else{Pi(y,g,l);Pi(d,c,h);Pi(m,h,l);Pi(t,g,c);Hi(g,y,w+(((u<<24>>24|0)/2|0)*160|0)|0)}u=i[k+r>>0]|0;if(u<<24>>24<=0){if(u<<24>>24<0){Pi(y,g,l);Pi(d,c,h);Pi(m,h,l);Pi(t,g,c);Ki(g,y,736+(((u<<24>>24|0)/-2|0)*120|0)|0)}}else{Pi(y,g,l);Pi(d,c,h);Pi(m,h,l);Pi(t,g,c);Gi(g,y,736+(((u<<24>>24|0)/2|0)*120|0)|0)}Pi(e,g,l);Pi(s,c,h);Pi(_,h,l);if((r|0)>0)r=r+-1|0;else break}f=A;return}function Di(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0;c=r+40|0;g=r+44|0;k=r+48|0;v=r+52|0;w=r+56|0;b=r+60|0;p=r+64|0;m=r+68|0;d=r+72|0;h=r+76|0;n=r+4|0;i=r+8|0;t=r+12|0;a=r+16|0;u=r+20|0;s=r+24|0;_=r+28|0;l=r+32|0;f=r+36|0;R=(o[n>>2]|0)+(o[g>>2]|0)|0;O=(o[i>>2]|0)+(o[k>>2]|0)|0;x=(o[t>>2]|0)+(o[v>>2]|0)|0;S=(o[a>>2]|0)+(o[w>>2]|0)|0;E=(o[u>>2]|0)+(o[b>>2]|0)|0;M=(o[s>>2]|0)+(o[p>>2]|0)|0;T=(o[_>>2]|0)+(o[m>>2]|0)|0;A=(o[l>>2]|0)+(o[d>>2]|0)|0;y=(o[f>>2]|0)+(o[h>>2]|0)|0;o[e>>2]=(o[r>>2]|0)+(o[c>>2]|0);o[e+4>>2]=R;o[e+8>>2]=O;o[e+12>>2]=x;o[e+16>>2]=S;o[e+20>>2]=E;o[e+24>>2]=M;o[e+28>>2]=T;o[e+32>>2]=A;o[e+36>>2]=y;n=(o[g>>2]|0)-(o[n>>2]|0)|0;i=(o[k>>2]|0)-(o[i>>2]|0)|0;t=(o[v>>2]|0)-(o[t>>2]|0)|0;a=(o[w>>2]|0)-(o[a>>2]|0)|0;u=(o[b>>2]|0)-(o[u>>2]|0)|0;s=(o[p>>2]|0)-(o[s>>2]|0)|0;_=(o[m>>2]|0)-(o[_>>2]|0)|0;l=(o[d>>2]|0)-(o[l>>2]|0)|0;f=(o[h>>2]|0)-(o[f>>2]|0)|0;o[e+40>>2]=(o[c>>2]|0)-(o[r>>2]|0);o[e+44>>2]=n;o[e+48>>2]=i;o[e+52>>2]=t;o[e+56>>2]=a;o[e+60>>2]=u;o[e+64>>2]=s;o[e+68>>2]=_;o[e+72>>2]=l;o[e+76>>2]=f;f=o[r+84>>2]|0;l=o[r+88>>2]|0;_=o[r+92>>2]|0;s=o[r+96>>2]|0;u=o[r+100>>2]|0;a=o[r+104>>2]|0;t=o[r+108>>2]|0;i=o[r+112>>2]|0;n=o[r+116>>2]|0;o[e+80>>2]=o[r+80>>2];o[e+84>>2]=f;o[e+88>>2]=l;o[e+92>>2]=_;o[e+96>>2]=s;o[e+100>>2]=u;o[e+104>>2]=a;o[e+108>>2]=t;o[e+112>>2]=i;o[e+116>>2]=n;Pi(e+120|0,r+120|0,696);return}function Vi(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,a=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0,se=0,_e=0,le=0;n=f;f=f+48|0;P=n;Li(e,r);B=e+80|0;_e=r+40|0;Li(B,_e);g=e+120|0;Fi(g,r+80|0);le=e+40|0;se=(o[r+44>>2]|0)+(o[r+4>>2]|0)|0;ue=(o[r+48>>2]|0)+(o[r+8>>2]|0)|0;ae=(o[r+52>>2]|0)+(o[r+12>>2]|0)|0;oe=(o[r+56>>2]|0)+(o[r+16>>2]|0)|0;te=(o[r+60>>2]|0)+(o[r+20>>2]|0)|0;ie=(o[r+64>>2]|0)+(o[r+24>>2]|0)|0;ne=(o[r+68>>2]|0)+(o[r+28>>2]|0)|0;re=(o[r+72>>2]|0)+(o[r+32>>2]|0)|0;ee=(o[r+76>>2]|0)+(o[r+36>>2]|0)|0;o[le>>2]=(o[_e>>2]|0)+(o[r>>2]|0);_e=e+44|0;o[_e>>2]=se;se=e+48|0;o[se>>2]=ue;ue=e+52|0;o[ue>>2]=ae;ae=e+56|0;o[ae>>2]=oe;oe=e+60|0;o[oe>>2]=te;te=e+64|0;o[te>>2]=ie;ie=e+68|0;o[ie>>2]=ne;ne=e+72|0;o[ne>>2]=re;re=e+76|0;o[re>>2]=ee;Li(P,le);ee=o[B>>2]|0;V=e+84|0;$=o[V>>2]|0;D=e+88|0;Z=o[D>>2]|0;j=e+92|0;Q=o[j>>2]|0;H=e+96|0;X=o[H>>2]|0;q=e+100|0;J=o[q>>2]|0;z=e+104|0;Y=o[z>>2]|0;F=e+108|0;W=o[F>>2]|0;U=e+112|0;K=o[U>>2]|0;N=e+116|0;G=o[N>>2]|0;y=o[e>>2]|0;C=e+4|0;k=o[C>>2]|0;O=e+8|0;w=o[O>>2]|0;S=e+12|0;p=o[S>>2]|0;M=e+16|0;d=o[M>>2]|0;A=e+20|0;c=o[A>>2]|0;a=e+24|0;_=o[a>>2]|0;l=e+28|0;u=o[l>>2]|0;m=e+32|0;t=o[m>>2]|0;v=e+36|0;r=o[v>>2]|0;L=y+ee|0;I=k+$|0;R=w+Z|0;x=p+Q|0;E=d+X|0;T=c+J|0;i=_+Y|0;s=u+W|0;h=t+K|0;b=r+G|0;o[le>>2]=L;o[_e>>2]=I;o[se>>2]=R;o[ue>>2]=x;o[ae>>2]=E;o[oe>>2]=T;o[te>>2]=i;o[ie>>2]=s;o[ne>>2]=h;o[re>>2]=b;y=ee-y|0;k=$-k|0;w=Z-w|0;p=Q-p|0;d=X-d|0;c=J-c|0;_=Y-_|0;u=W-u|0;t=K-t|0;r=G-r|0;o[B>>2]=y;o[V>>2]=k;o[D>>2]=w;o[j>>2]=p;o[H>>2]=d;o[q>>2]=c;o[z>>2]=_;o[F>>2]=u;o[U>>2]=t;o[N>>2]=r;I=(o[P+4>>2]|0)-I|0;R=(o[P+8>>2]|0)-R|0;x=(o[P+12>>2]|0)-x|0;E=(o[P+16>>2]|0)-E|0;T=(o[P+20>>2]|0)-T|0;i=(o[P+24>>2]|0)-i|0;s=(o[P+28>>2]|0)-s|0;h=(o[P+32>>2]|0)-h|0;b=(o[P+36>>2]|0)-b|0;o[e>>2]=(o[P>>2]|0)-L;o[C>>2]=I;o[O>>2]=R;o[S>>2]=x;o[M>>2]=E;o[A>>2]=T;o[a>>2]=i;o[l>>2]=s;o[m>>2]=h;o[v>>2]=b;v=e+124|0;b=e+128|0;m=e+132|0;h=e+136|0;l=e+140|0;s=e+144|0;a=e+148|0;i=e+152|0;e=e+156|0;k=(o[v>>2]|0)-k|0;w=(o[b>>2]|0)-w|0;p=(o[m>>2]|0)-p|0;d=(o[h>>2]|0)-d|0;c=(o[l>>2]|0)-c|0;_=(o[s>>2]|0)-_|0;u=(o[a>>2]|0)-u|0;t=(o[i>>2]|0)-t|0;r=(o[e>>2]|0)-r|0;o[g>>2]=(o[g>>2]|0)-y;o[v>>2]=k;o[b>>2]=w;o[m>>2]=p;o[h>>2]=d;o[l>>2]=c;o[s>>2]=_;o[a>>2]=u;o[i>>2]=t;o[e>>2]=r;f=n;return}function Bi(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0;W=r+40|0;s=r+44|0;f=r+48|0;d=r+52|0;b=r+56|0;k=r+60|0;A=r+64|0;E=r+68|0;O=r+72|0;x=r+76|0;B=r+4|0;j=r+8|0;i=r+12|0;c=r+16|0;h=r+20|0;g=r+24|0;y=r+28|0;R=r+32|0;H=r+36|0;ae=(o[B>>2]|0)+(o[s>>2]|0)|0;oe=(o[j>>2]|0)+(o[f>>2]|0)|0;te=(o[i>>2]|0)+(o[d>>2]|0)|0;ie=(o[c>>2]|0)+(o[b>>2]|0)|0;ne=(o[h>>2]|0)+(o[k>>2]|0)|0;re=(o[g>>2]|0)+(o[A>>2]|0)|0;ee=(o[y>>2]|0)+(o[E>>2]|0)|0;$=(o[R>>2]|0)+(o[O>>2]|0)|0;X=(o[H>>2]|0)+(o[x>>2]|0)|0;o[e>>2]=(o[r>>2]|0)+(o[W>>2]|0);ue=e+4|0;o[ue>>2]=ae;ae=e+8|0;o[ae>>2]=oe;oe=e+12|0;o[oe>>2]=te;te=e+16|0;o[te>>2]=ie;ie=e+20|0;o[ie>>2]=ne;ne=e+24|0;o[ne>>2]=re;re=e+28|0;o[re>>2]=ee;ee=e+32|0;o[ee>>2]=$;$=e+36|0;o[$>>2]=X;X=e+40|0;B=(o[s>>2]|0)-(o[B>>2]|0)|0;j=(o[f>>2]|0)-(o[j>>2]|0)|0;i=(o[d>>2]|0)-(o[i>>2]|0)|0;c=(o[b>>2]|0)-(o[c>>2]|0)|0;h=(o[k>>2]|0)-(o[h>>2]|0)|0;g=(o[A>>2]|0)-(o[g>>2]|0)|0;y=(o[E>>2]|0)-(o[y>>2]|0)|0;R=(o[O>>2]|0)-(o[R>>2]|0)|0;H=(o[x>>2]|0)-(o[H>>2]|0)|0;o[X>>2]=(o[W>>2]|0)-(o[r>>2]|0);W=e+44|0;o[W>>2]=B;B=e+48|0;o[B>>2]=j;j=e+52|0;o[j>>2]=i;i=e+56|0;o[i>>2]=c;c=e+60|0;o[c>>2]=h;h=e+64|0;o[h>>2]=g;g=e+68|0;o[g>>2]=y;y=e+72|0;o[y>>2]=R;R=e+76|0;o[R>>2]=H;H=e+80|0;Pi(H,e,n+40|0);Pi(X,X,n);x=e+120|0;Pi(x,n+120|0,r+120|0);Pi(e,r+80|0,n+80|0);O=o[e>>2]<<1;E=o[ue>>2]<<1;A=o[ae>>2]<<1;k=o[oe>>2]<<1;b=o[te>>2]<<1;d=o[ie>>2]<<1;f=o[ne>>2]<<1;s=o[re>>2]<<1;t=o[ee>>2]<<1;n=o[$>>2]<<1;Q=o[H>>2]|0;q=e+84|0;Y=o[q>>2]|0;z=e+88|0;G=o[z>>2]|0;F=e+92|0;D=o[F>>2]|0;U=e+96|0;a=o[U>>2]|0;N=e+100|0;u=o[N>>2]|0;P=e+104|0;m=o[P>>2]|0;L=e+108|0;p=o[L>>2]|0;I=e+112|0;T=o[I>>2]|0;C=e+116|0;M=o[C>>2]|0;Z=o[X>>2]|0;J=o[W>>2]|0;K=o[B>>2]|0;V=o[j>>2]|0;r=o[i>>2]|0;_=o[c>>2]|0;l=o[h>>2]|0;w=o[g>>2]|0;v=o[y>>2]|0;S=o[R>>2]|0;o[e>>2]=Q-Z;o[ue>>2]=Y-J;o[ae>>2]=G-K;o[oe>>2]=D-V;o[te>>2]=a-r;o[ie>>2]=u-_;o[ne>>2]=m-l;o[re>>2]=p-w;o[ee>>2]=T-v;o[$>>2]=M-S;o[X>>2]=Z+Q;o[W>>2]=J+Y;o[B>>2]=K+G;o[j>>2]=V+D;o[i>>2]=r+a;o[c>>2]=_+u;o[h>>2]=l+m;o[g>>2]=w+p;o[y>>2]=v+T;o[R>>2]=S+M;R=o[x>>2]|0;M=e+124|0;S=o[M>>2]|0;y=e+128|0;T=o[y>>2]|0;v=e+132|0;g=o[v>>2]|0;p=e+136|0;w=o[p>>2]|0;h=e+140|0;m=o[h>>2]|0;l=e+144|0;c=o[l>>2]|0;u=e+148|0;_=o[u>>2]|0;i=e+152|0;a=o[i>>2]|0;e=e+156|0;r=o[e>>2]|0;o[H>>2]=O-R;o[q>>2]=E-S;o[z>>2]=A-T;o[F>>2]=k-g;o[U>>2]=b-w;o[N>>2]=d-m;o[P>>2]=f-c;o[L>>2]=s-_;o[I>>2]=t-a;o[C>>2]=n-r;o[x>>2]=R+O;o[M>>2]=S+E;o[y>>2]=T+A;o[v>>2]=g+k;o[p>>2]=w+b;o[h>>2]=m+d;o[l>>2]=c+f;o[u>>2]=_+s;o[i>>2]=a+t;o[e>>2]=r+n;return}function Gi(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0;W=r+40|0;_=r+44|0;c=r+48|0;m=r+52|0;w=r+56|0;g=r+60|0;T=r+64|0;S=r+68|0;R=r+72|0;x=r+76|0;B=r+4|0;j=r+8|0;i=r+12|0;f=r+16|0;h=r+20|0;k=r+24|0;y=r+28|0;O=r+32|0;H=r+36|0;ae=(o[B>>2]|0)+(o[_>>2]|0)|0;oe=(o[j>>2]|0)+(o[c>>2]|0)|0;te=(o[i>>2]|0)+(o[m>>2]|0)|0;ie=(o[f>>2]|0)+(o[w>>2]|0)|0;ne=(o[h>>2]|0)+(o[g>>2]|0)|0;re=(o[k>>2]|0)+(o[T>>2]|0)|0;ee=(o[y>>2]|0)+(o[S>>2]|0)|0;$=(o[O>>2]|0)+(o[R>>2]|0)|0;X=(o[H>>2]|0)+(o[x>>2]|0)|0;o[e>>2]=(o[r>>2]|0)+(o[W>>2]|0);ue=e+4|0;o[ue>>2]=ae;ae=e+8|0;o[ae>>2]=oe;oe=e+12|0;o[oe>>2]=te;te=e+16|0;o[te>>2]=ie;ie=e+20|0;o[ie>>2]=ne;ne=e+24|0;o[ne>>2]=re;re=e+28|0;o[re>>2]=ee;ee=e+32|0;o[ee>>2]=$;$=e+36|0;o[$>>2]=X;X=e+40|0;B=(o[_>>2]|0)-(o[B>>2]|0)|0;j=(o[c>>2]|0)-(o[j>>2]|0)|0;i=(o[m>>2]|0)-(o[i>>2]|0)|0;f=(o[w>>2]|0)-(o[f>>2]|0)|0;h=(o[g>>2]|0)-(o[h>>2]|0)|0;k=(o[T>>2]|0)-(o[k>>2]|0)|0;y=(o[S>>2]|0)-(o[y>>2]|0)|0;O=(o[R>>2]|0)-(o[O>>2]|0)|0;H=(o[x>>2]|0)-(o[H>>2]|0)|0;o[X>>2]=(o[W>>2]|0)-(o[r>>2]|0);W=e+44|0;o[W>>2]=B;B=e+48|0;o[B>>2]=j;j=e+52|0;o[j>>2]=i;i=e+56|0;o[i>>2]=f;f=e+60|0;o[f>>2]=h;h=e+64|0;o[h>>2]=k;k=e+68|0;o[k>>2]=y;y=e+72|0;o[y>>2]=O;O=e+76|0;o[O>>2]=H;H=e+80|0;Pi(H,e,n);Pi(X,X,n+40|0);x=e+120|0;Pi(x,n+80|0,r+120|0);R=o[r+80>>2]<<1;S=o[r+84>>2]<<1;T=o[r+88>>2]<<1;g=o[r+92>>2]<<1;w=o[r+96>>2]<<1;m=o[r+100>>2]<<1;c=o[r+104>>2]<<1;_=o[r+108>>2]<<1;a=o[r+112>>2]<<1;r=o[r+116>>2]<<1;Q=o[H>>2]|0;q=e+84|0;Y=o[q>>2]|0;z=e+88|0;G=o[z>>2]|0;F=e+92|0;D=o[F>>2]|0;U=e+96|0;t=o[U>>2]|0;N=e+100|0;u=o[N>>2]|0;P=e+104|0;d=o[P>>2]|0;L=e+108|0;p=o[L>>2]|0;I=e+112|0;A=o[I>>2]|0;C=e+116|0;M=o[C>>2]|0;Z=o[X>>2]|0;J=o[W>>2]|0;K=o[B>>2]|0;V=o[j>>2]|0;n=o[i>>2]|0;s=o[f>>2]|0;l=o[h>>2]|0;b=o[k>>2]|0;v=o[y>>2]|0;E=o[O>>2]|0;o[e>>2]=Q-Z;o[ue>>2]=Y-J;o[ae>>2]=G-K;o[oe>>2]=D-V;o[te>>2]=t-n;o[ie>>2]=u-s;o[ne>>2]=d-l;o[re>>2]=p-b;o[ee>>2]=A-v;o[$>>2]=M-E;o[X>>2]=Z+Q;o[W>>2]=J+Y;o[B>>2]=K+G;o[j>>2]=V+D;o[i>>2]=n+t;o[f>>2]=s+u;o[h>>2]=l+d;o[k>>2]=b+p;o[y>>2]=v+A;o[O>>2]=E+M;O=o[x>>2]|0;M=e+124|0;E=o[M>>2]|0;y=e+128|0;A=o[y>>2]|0;v=e+132|0;k=o[v>>2]|0;p=e+136|0;b=o[p>>2]|0;h=e+140|0;d=o[h>>2]|0;l=e+144|0;f=o[l>>2]|0;u=e+148|0;s=o[u>>2]|0;i=e+152|0;t=o[i>>2]|0;e=e+156|0;n=o[e>>2]|0;o[H>>2]=O+R;o[q>>2]=E+S;o[z>>2]=A+T;o[F>>2]=k+g;o[U>>2]=b+w;o[N>>2]=d+m;o[P>>2]=f+c;o[L>>2]=s+_;o[I>>2]=t+a;o[C>>2]=n+r;o[x>>2]=R-O;o[M>>2]=S-E;o[y>>2]=T-A;o[v>>2]=g-k;o[p>>2]=w-b;o[h>>2]=m-d;o[l>>2]=c-f;o[u>>2]=_-s;o[i>>2]=a-t;o[e>>2]=r-n;return}function Ki(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0;W=r+40|0;s=r+44|0;f=r+48|0;d=r+52|0;b=r+56|0;k=r+60|0;A=r+64|0;E=r+68|0;O=r+72|0;x=r+76|0;B=r+4|0;j=r+8|0;i=r+12|0;c=r+16|0;h=r+20|0;g=r+24|0;y=r+28|0;R=r+32|0;H=r+36|0;ae=(o[B>>2]|0)+(o[s>>2]|0)|0;oe=(o[j>>2]|0)+(o[f>>2]|0)|0;te=(o[i>>2]|0)+(o[d>>2]|0)|0;ie=(o[c>>2]|0)+(o[b>>2]|0)|0;ne=(o[h>>2]|0)+(o[k>>2]|0)|0;re=(o[g>>2]|0)+(o[A>>2]|0)|0;ee=(o[y>>2]|0)+(o[E>>2]|0)|0;$=(o[R>>2]|0)+(o[O>>2]|0)|0;X=(o[H>>2]|0)+(o[x>>2]|0)|0;o[e>>2]=(o[r>>2]|0)+(o[W>>2]|0);ue=e+4|0;o[ue>>2]=ae;ae=e+8|0;o[ae>>2]=oe;oe=e+12|0;o[oe>>2]=te;te=e+16|0;o[te>>2]=ie;ie=e+20|0;o[ie>>2]=ne;ne=e+24|0;o[ne>>2]=re;re=e+28|0;o[re>>2]=ee;ee=e+32|0;o[ee>>2]=$;$=e+36|0;o[$>>2]=X;X=e+40|0;B=(o[s>>2]|0)-(o[B>>2]|0)|0;j=(o[f>>2]|0)-(o[j>>2]|0)|0;i=(o[d>>2]|0)-(o[i>>2]|0)|0;c=(o[b>>2]|0)-(o[c>>2]|0)|0;h=(o[k>>2]|0)-(o[h>>2]|0)|0;g=(o[A>>2]|0)-(o[g>>2]|0)|0;y=(o[E>>2]|0)-(o[y>>2]|0)|0;R=(o[O>>2]|0)-(o[R>>2]|0)|0;H=(o[x>>2]|0)-(o[H>>2]|0)|0;o[X>>2]=(o[W>>2]|0)-(o[r>>2]|0);W=e+44|0;o[W>>2]=B;B=e+48|0;o[B>>2]=j;j=e+52|0;o[j>>2]=i;i=e+56|0;o[i>>2]=c;c=e+60|0;o[c>>2]=h;h=e+64|0;o[h>>2]=g;g=e+68|0;o[g>>2]=y;y=e+72|0;o[y>>2]=R;R=e+76|0;o[R>>2]=H;H=e+80|0;Pi(H,e,n+40|0);Pi(X,X,n);x=e+120|0;Pi(x,n+80|0,r+120|0);O=o[r+80>>2]<<1;E=o[r+84>>2]<<1;A=o[r+88>>2]<<1;k=o[r+92>>2]<<1;b=o[r+96>>2]<<1;d=o[r+100>>2]<<1;f=o[r+104>>2]<<1;s=o[r+108>>2]<<1;t=o[r+112>>2]<<1;n=o[r+116>>2]<<1;Q=o[H>>2]|0;q=e+84|0;Y=o[q>>2]|0;z=e+88|0;G=o[z>>2]|0;F=e+92|0;D=o[F>>2]|0;U=e+96|0;a=o[U>>2]|0;N=e+100|0;u=o[N>>2]|0;P=e+104|0;m=o[P>>2]|0;L=e+108|0;p=o[L>>2]|0;I=e+112|0;T=o[I>>2]|0;C=e+116|0;M=o[C>>2]|0;Z=o[X>>2]|0;J=o[W>>2]|0;K=o[B>>2]|0;V=o[j>>2]|0;r=o[i>>2]|0;_=o[c>>2]|0;l=o[h>>2]|0;w=o[g>>2]|0;v=o[y>>2]|0;S=o[R>>2]|0;o[e>>2]=Q-Z;o[ue>>2]=Y-J;o[ae>>2]=G-K;o[oe>>2]=D-V;o[te>>2]=a-r;o[ie>>2]=u-_;o[ne>>2]=m-l;o[re>>2]=p-w;o[ee>>2]=T-v;o[$>>2]=M-S;o[X>>2]=Z+Q;o[W>>2]=J+Y;o[B>>2]=K+G;o[j>>2]=V+D;o[i>>2]=r+a;o[c>>2]=_+u;o[h>>2]=l+m;o[g>>2]=w+p;o[y>>2]=v+T;o[R>>2]=S+M;R=o[x>>2]|0;M=e+124|0;S=o[M>>2]|0;y=e+128|0;T=o[y>>2]|0;v=e+132|0;g=o[v>>2]|0;p=e+136|0;w=o[p>>2]|0;h=e+140|0;m=o[h>>2]|0;l=e+144|0;c=o[l>>2]|0;u=e+148|0;_=o[u>>2]|0;i=e+152|0;a=o[i>>2]|0;e=e+156|0;r=o[e>>2]|0;o[H>>2]=O-R;o[q>>2]=E-S;o[z>>2]=A-T;o[F>>2]=k-g;o[U>>2]=b-w;o[N>>2]=d-m;o[P>>2]=f-c;o[L>>2]=s-_;o[I>>2]=t-a;o[C>>2]=n-r;o[x>>2]=R+O;o[M>>2]=S+E;o[y>>2]=T+A;o[v>>2]=g+k;o[p>>2]=w+b;o[h>>2]=m+d;o[l>>2]=c+f;o[u>>2]=_+s;o[i>>2]=a+t;o[e>>2]=r+n;return}function Wi(e,r){e=e|0;r=r|0;var n=0,t=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0,se=0,_e=0,le=0,fe=0,ce=0,he=0,de=0,me=0;me=f;f=f+240|0;ce=me+200|0;he=me+160|0;_=me+120|0;l=me+80|0;de=me+40|0;fe=me;le=e+40|0;Ci(le,r);u=e+80|0;o[u>>2]=1;s=e+84|0;n=s;t=n+36|0;do{o[n>>2]=0;n=n+4|0}while((n|0)<(t|0));Li(he,le);Pi(_,he,1696);ue=he+4|0;se=he+8|0;_e=he+12|0;re=he+16|0;ne=he+20|0;ie=he+24|0;te=he+28|0;oe=he+32|0;ae=he+36|0;S=o[u>>2]|0;E=o[s>>2]|0;T=o[e+88>>2]|0;y=o[e+92>>2]|0;k=o[e+96>>2]|0;w=o[e+100>>2]|0;$=o[e+104>>2]|0;Q=o[e+108>>2]|0;J=o[e+112>>2]|0;W=o[e+116>>2]|0;n=(o[he>>2]|0)-S|0;t=(o[ue>>2]|0)-E|0;u=(o[se>>2]|0)-T|0;s=(o[_e>>2]|0)-y|0;b=(o[re>>2]|0)-k|0;p=(o[ne>>2]|0)-w|0;c=(o[ie>>2]|0)-$|0;h=(o[te>>2]|0)-Q|0;d=(o[oe>>2]|0)-J|0;m=(o[ae>>2]|0)-W|0;o[he>>2]=n;o[ue>>2]=t;o[se>>2]=u;o[_e>>2]=s;o[re>>2]=b;o[ne>>2]=p;o[ie>>2]=c;o[te>>2]=h;o[oe>>2]=d;o[ae>>2]=m;M=_+4|0;A=_+8|0;g=_+12|0;v=_+16|0;ee=_+20|0;Z=_+24|0;X=_+28|0;Y=_+32|0;K=_+36|0;E=E+(o[M>>2]|0)|0;T=T+(o[A>>2]|0)|0;y=y+(o[g>>2]|0)|0;k=k+(o[v>>2]|0)|0;w=w+(o[ee>>2]|0)|0;$=$+(o[Z>>2]|0)|0;Q=Q+(o[X>>2]|0)|0;J=J+(o[Y>>2]|0)|0;W=W+(o[K>>2]|0)|0;o[_>>2]=S+(o[_>>2]|0);o[M>>2]=E;o[A>>2]=T;o[g>>2]=y;o[v>>2]=k;o[ee>>2]=w;o[Z>>2]=$;o[X>>2]=Q;o[Y>>2]=J;o[K>>2]=W;Li(l,_);Pi(l,l,_);Li(e,l);Pi(e,e,_);Pi(e,e,he);Ui(e,e);Pi(e,e,l);Pi(e,e,he);Li(de,e);Pi(de,de,_);K=de+4|0;W=de+8|0;Y=de+12|0;J=de+16|0;X=de+20|0;Q=de+24|0;Z=de+28|0;$=de+32|0;ee=de+36|0;t=(o[K>>2]|0)-t|0;u=(o[W>>2]|0)-u|0;s=(o[Y>>2]|0)-s|0;_=(o[J>>2]|0)-b|0;l=(o[X>>2]|0)-p|0;c=(o[Q>>2]|0)-c|0;h=(o[Z>>2]|0)-h|0;d=(o[$>>2]|0)-d|0;m=(o[ee>>2]|0)-m|0;o[fe>>2]=(o[de>>2]|0)-n;n=fe+4|0;o[n>>2]=t;t=fe+8|0;o[t>>2]=u;u=fe+12|0;o[u>>2]=s;s=fe+16|0;o[s>>2]=_;_=fe+20|0;o[_>>2]=l;l=fe+24|0;o[l>>2]=c;c=fe+28|0;o[c>>2]=h;h=fe+32|0;o[h>>2]=d;d=fe+36|0;o[d>>2]=m;Ni(ce,fe);m=ce+1|0;p=ce+2|0;b=ce+3|0;w=ce+4|0;v=ce+5|0;k=ce+6|0;g=ce+7|0;y=ce+8|0;A=ce+9|0;T=ce+10|0;M=ce+11|0;E=ce+12|0;S=ce+13|0;x=ce+14|0;O=ce+15|0;R=ce+16|0;C=ce+17|0;I=ce+18|0;L=ce+19|0;P=ce+20|0;N=ce+21|0;U=ce+22|0;F=ce+23|0;z=ce+24|0;q=ce+25|0;H=ce+26|0;j=ce+27|0;D=ce+28|0;V=ce+29|0;B=ce+30|0;G=ce+31|0;do{if((i[m>>0]|i[ce>>0]|i[p>>0]|i[b>>0]|i[w>>0]|i[v>>0]|i[k>>0]|i[g>>0]|i[y>>0]|i[A>>0]|i[T>>0]|i[M>>0]|i[E>>0]|i[S>>0]|i[x>>0]|i[O>>0]|i[R>>0]|i[C>>0]|i[I>>0]|i[L>>0]|i[P>>0]|i[N>>0]|i[U>>0]|i[F>>0]|i[z>>0]|i[q>>0]|i[H>>0]|i[j>>0]|i[D>>0]|i[V>>0]|i[B>>0]|i[G>>0])<<24>>24){K=(o[ue>>2]|0)+(o[K>>2]|0)|0;W=(o[se>>2]|0)+(o[W>>2]|0)|0;Y=(o[_e>>2]|0)+(o[Y>>2]|0)|0;re=(o[re>>2]|0)+(o[J>>2]|0)|0;ne=(o[ne>>2]|0)+(o[X>>2]|0)|0;ie=(o[ie>>2]|0)+(o[Q>>2]|0)|0;ue=(o[te>>2]|0)+(o[Z>>2]|0)|0;se=(o[oe>>2]|0)+(o[$>>2]|0)|0;_e=(o[ae>>2]|0)+(o[ee>>2]|0)|0;o[fe>>2]=(o[he>>2]|0)+(o[de>>2]|0);o[n>>2]=K;o[t>>2]=W;o[u>>2]=Y;o[s>>2]=re;o[_>>2]=ne;o[l>>2]=ie;o[c>>2]=ue;o[h>>2]=se;o[d>>2]=_e;Ni(ce,fe);if(!((i[m>>0]|i[ce>>0]|i[p>>0]|i[b>>0]|i[w>>0]|i[v>>0]|i[k>>0]|i[g>>0]|i[y>>0]|i[A>>0]|i[T>>0]|i[M>>0]|i[E>>0]|i[S>>0]|i[x>>0]|i[O>>0]|i[R>>0]|i[C>>0]|i[I>>0]|i[L>>0]|i[P>>0]|i[N>>0]|i[U>>0]|i[F>>0]|i[z>>0]|i[q>>0]|i[H>>0]|i[j>>0]|i[D>>0]|i[V>>0]|i[B>>0]|i[G>>0])<<24>>24)){Pi(e,e,1736);break}else{de=-1;f=me;return de|0}}}while(0);Ni(ce,e);if(((a[ce>>0]|0)&1|0)==((a[r+31>>0]|0)>>>7|0)){Z=e+4|0;ee=e+8|0;ne=e+12|0;te=e+16|0;ae=e+20|0;se=e+24|0;fe=e+28|0;ce=e+32|0;de=e+36|0;Q=0-(o[Z>>2]|0)|0;$=0-(o[ee>>2]|0)|0;re=0-(o[ne>>2]|0)|0;ie=0-(o[te>>2]|0)|0;oe=0-(o[ae>>2]|0)|0;ue=0-(o[se>>2]|0)|0;_e=0-(o[fe>>2]|0)|0;r=0-(o[ce>>2]|0)|0;he=0-(o[de>>2]|0)|0;o[e>>2]=0-(o[e>>2]|0);o[Z>>2]=Q;o[ee>>2]=$;o[ne>>2]=re;o[te>>2]=ie;o[ae>>2]=oe;o[se>>2]=ue;o[fe>>2]=_e;o[ce>>2]=r;o[de>>2]=he}Pi(e+120|0,e,le);de=0;f=me;return de|0}function Yi(e,r){e=e|0;r=r|0;var n=0,t=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0;v=f;f=f+592|0;d=v+400|0;p=v+520|0;b=v+240|0;m=v+120|0;w=v;n=0;do{c=i[r+n>>0]|0;h=n<<1;i[p+h>>0]=c&15;i[p+(h|1)>>0]=(c&255)>>>4;n=n+1|0}while((n|0)!=32);r=0;n=0;do{h=p+n|0;c=(a[h>>0]|0)+r|0;r=(c<<24)+134217728>>28;i[h>>0]=c-(r<<4);n=n+1|0}while((n|0)!=63);n=p+63|0;i[n>>0]=(a[n>>0]|0)+r;r=e;n=r+40|0;do{o[r>>2]=0;r=r+4|0}while((r|0)<(n|0));c=e+40|0;o[c>>2]=1;_=e+44|0;r=_;n=r+36|0;do{o[r>>2]=0;r=r+4|0}while((r|0)<(n|0));h=e+80|0;o[h>>2]=1;l=e+84|0;r=l;n=r+76|0;do{o[r>>2]=0;r=r+4|0}while((r|0)<(n|0));n=b+120|0;t=b+40|0;u=b+80|0;s=e+120|0;r=1;do{Ji(w,(r|0)/2|0,i[p+r>>0]|0);Gi(b,e,w);Pi(e,b,n);Pi(c,t,u);Pi(h,u,n);Pi(s,b,t);r=r+2|0}while((r|0)<64);S=o[e+4>>2]|0;M=o[e+8>>2]|0;T=o[e+12>>2]|0;A=o[e+16>>2]|0;y=o[e+20>>2]|0;g=o[e+24>>2]|0;k=o[e+28>>2]|0;r=o[e+32>>2]|0;E=o[e+36>>2]|0;o[d>>2]=o[e>>2];o[d+4>>2]=S;o[d+8>>2]=M;o[d+12>>2]=T;o[d+16>>2]=A;o[d+20>>2]=y;o[d+24>>2]=g;o[d+28>>2]=k;o[d+32>>2]=r;o[d+36>>2]=E;E=o[_>>2]|0;r=o[e+48>>2]|0;_=o[e+52>>2]|0;k=o[e+56>>2]|0;g=o[e+60>>2]|0;y=o[e+64>>2]|0;A=o[e+68>>2]|0;T=o[e+72>>2]|0;M=o[e+76>>2]|0;o[d+40>>2]=o[c>>2];o[d+44>>2]=E;o[d+48>>2]=r;o[d+52>>2]=_;o[d+56>>2]=k;o[d+60>>2]=g;o[d+64>>2]=y;o[d+68>>2]=A;o[d+72>>2]=T;o[d+76>>2]=M;M=o[l>>2]|0;T=o[e+88>>2]|0;A=o[e+92>>2]|0;y=o[e+96>>2]|0;g=o[e+100>>2]|0;k=o[e+104>>2]|0;_=o[e+108>>2]|0;l=o[e+112>>2]|0;r=o[e+116>>2]|0;o[d+80>>2]=o[h>>2];o[d+84>>2]=M;o[d+88>>2]=T;o[d+92>>2]=A;o[d+96>>2]=y;o[d+100>>2]=g;o[d+104>>2]=k;o[d+108>>2]=_;o[d+112>>2]=l;o[d+116>>2]=r;Vi(b,d);Pi(m,b,n);d=m+40|0;Pi(d,t,u);r=m+80|0;Pi(r,u,n);Vi(b,m);Pi(m,b,n);Pi(d,t,u);Pi(r,u,n);Vi(b,m);Pi(m,b,n);Pi(d,t,u);Pi(r,u,n);Vi(b,m);Pi(e,b,n);Pi(c,t,u);Pi(h,u,n);Pi(s,b,t);r=0;do{Ji(w,(r|0)/2|0,i[p+r>>0]|0);Gi(b,e,w);Pi(e,b,n);Pi(c,t,u);Pi(h,u,n);Pi(s,b,t);r=r+2|0}while((r|0)<64);f=v;return}function Ji(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0,se=0,_e=0;w=n<<24>>24;w=mo(w|0,((w|0)<0)<<31>>31|0,63)|0;n=n<<24>>24;w=0-w|0;n=n-((n&w)<<1)&255;o[e>>2]=1;i=e+4|0;v=i;k=v+36|0;do{o[v>>2]=0;v=v+4|0}while((v|0)<(k|0));t=e+40|0;o[t>>2]=1;a=e+44|0;u=e+80|0;s=fo((n^1)&255|0,0,-1,-1)|0;s=mo(s|0,C|0,63)|0;_=1776+(r*960|0)|0;l=e+8|0;f=e+12|0;c=e+16|0;h=e+20|0;d=e+24|0;m=e+28|0;p=e+32|0;b=e+36|0;v=a;k=v+76|0;do{o[v>>2]=0;v=v+4|0}while((v|0)<(k|0));E=0-s|0;se=o[1776+(r*960|0)+4>>2]&E;N=o[1776+(r*960|0)+8>>2]&E;F=o[1776+(r*960|0)+12>>2]&E;q=o[1776+(r*960|0)+16>>2]&E;j=o[1776+(r*960|0)+20>>2]&E;V=o[1776+(r*960|0)+24>>2]&E;G=o[1776+(r*960|0)+28>>2]&E;W=o[1776+(r*960|0)+32>>2]&E;J=o[1776+(r*960|0)+36>>2]&E;o[e>>2]=(o[_>>2]^1)&E^1;o[i>>2]=se;o[l>>2]=N;o[f>>2]=F;o[c>>2]=q;o[h>>2]=j;o[d>>2]=V;o[m>>2]=G;o[p>>2]=W;o[b>>2]=J;J=e+48|0;W=e+52|0;G=e+56|0;V=e+60|0;j=e+64|0;q=e+68|0;F=e+72|0;N=e+76|0;se=o[1776+(r*960|0)+44>>2]&E;M=o[1776+(r*960|0)+48>>2]&E;x=o[1776+(r*960|0)+52>>2]&E;S=o[1776+(r*960|0)+56>>2]&E;$=o[1776+(r*960|0)+60>>2]&E;O=o[1776+(r*960|0)+64>>2]&E;ie=o[1776+(r*960|0)+68>>2]&E;I=o[1776+(r*960|0)+72>>2]&E;ue=o[1776+(r*960|0)+76>>2]&E;o[t>>2]=(o[1776+(r*960|0)+40>>2]^1)&E^1;o[a>>2]=se;o[J>>2]=M;o[W>>2]=x;o[G>>2]=S;o[V>>2]=$;o[j>>2]=O;o[q>>2]=ie;o[F>>2]=I;o[N>>2]=ue;ue=o[u>>2]|0;I=e+84|0;ie=o[I>>2]|0;O=e+88|0;$=o[O>>2]|0;S=e+92|0;x=o[S>>2]|0;M=e+96|0;se=o[M>>2]|0;A=e+100|0;te=o[A>>2]|0;g=e+104|0;ee=o[g>>2]|0;s=e+108|0;y=o[s>>2]|0;v=e+112|0;R=o[v>>2]|0;k=e+116|0;_=o[k>>2]|0;oe=(o[1776+(r*960|0)+84>>2]^ie)&E;re=(o[1776+(r*960|0)+88>>2]^$)&E;T=(o[1776+(r*960|0)+92>>2]^x)&E;L=(o[1776+(r*960|0)+96>>2]^se)&E;ae=(o[1776+(r*960|0)+100>>2]^te)&E;ne=(o[1776+(r*960|0)+104>>2]^ee)&E;_e=(o[1776+(r*960|0)+108>>2]^y)&E;Z=(o[1776+(r*960|0)+112>>2]^R)&E;P=(o[1776+(r*960|0)+116>>2]^_)&E;o[u>>2]=(o[1776+(r*960|0)+80>>2]^ue)&E^ue;o[I>>2]=oe^ie;o[O>>2]=re^$;o[S>>2]=T^x;o[M>>2]=L^se;o[A>>2]=ae^te;o[g>>2]=ne^ee;o[s>>2]=_e^y;o[v>>2]=Z^R;o[k>>2]=P^_;_=fo((n^2)&255|0,0,-1,-1)|0;_=mo(_|0,C|0,63)|0;P=o[e>>2]|0;R=o[i>>2]|0;Z=o[l>>2]|0;y=o[f>>2]|0;_e=o[c>>2]|0;ee=o[h>>2]|0;ne=o[d>>2]|0;te=o[m>>2]|0;ae=o[p>>2]|0;se=o[b>>2]|0;_=0-_|0;L=(o[1776+(r*960|0)+124>>2]^R)&_;x=(o[1776+(r*960|0)+128>>2]^Z)&_;T=(o[1776+(r*960|0)+132>>2]^y)&_;$=(o[1776+(r*960|0)+136>>2]^_e)&_;re=(o[1776+(r*960|0)+140>>2]^ee)&_;ie=(o[1776+(r*960|0)+144>>2]^ne)&_;oe=(o[1776+(r*960|0)+148>>2]^te)&_;ue=(o[1776+(r*960|0)+152>>2]^ae)&_;E=(o[1776+(r*960|0)+156>>2]^se)&_;o[e>>2]=(o[1776+(r*960|0)+120>>2]^P)&_^P;o[i>>2]=L^R;o[l>>2]=x^Z;o[f>>2]=T^y;o[c>>2]=$^_e;o[h>>2]=re^ee;o[d>>2]=ie^ne;o[m>>2]=oe^te;o[p>>2]=ue^ae;o[b>>2]=E^se;se=o[t>>2]|0;E=o[a>>2]|0;ae=o[J>>2]|0;ue=o[W>>2]|0;te=o[G>>2]|0;oe=o[V>>2]|0;ne=o[j>>2]|0;ie=o[q>>2]|0;ee=o[F>>2]|0;re=o[N>>2]|0;_e=(o[1776+(r*960|0)+164>>2]^E)&_;$=(o[1776+(r*960|0)+168>>2]^ae)&_;y=(o[1776+(r*960|0)+172>>2]^ue)&_;T=(o[1776+(r*960|0)+176>>2]^te)&_;Z=(o[1776+(r*960|0)+180>>2]^oe)&_;x=(o[1776+(r*960|0)+184>>2]^ne)&_;R=(o[1776+(r*960|0)+188>>2]^ie)&_;L=(o[1776+(r*960|0)+192>>2]^ee)&_;P=(o[1776+(r*960|0)+196>>2]^re)&_;o[t>>2]=(o[1776+(r*960|0)+160>>2]^se)&_^se;o[a>>2]=_e^E;o[J>>2]=$^ae;o[W>>2]=y^ue;o[G>>2]=T^te;o[V>>2]=Z^oe;o[j>>2]=x^ne;o[q>>2]=R^ie;o[F>>2]=L^ee;o[N>>2]=P^re;re=o[u>>2]|0;P=o[I>>2]|0;ee=o[O>>2]|0;L=o[S>>2]|0;ie=o[M>>2]|0;R=o[A>>2]|0;ne=o[g>>2]|0;x=o[s>>2]|0;oe=o[v>>2]|0;Z=o[k>>2]|0;te=(o[1776+(r*960|0)+204>>2]^P)&_;T=(o[1776+(r*960|0)+208>>2]^ee)&_;ue=(o[1776+(r*960|0)+212>>2]^L)&_;y=(o[1776+(r*960|0)+216>>2]^ie)&_;ae=(o[1776+(r*960|0)+220>>2]^R)&_;$=(o[1776+(r*960|0)+224>>2]^ne)&_;E=(o[1776+(r*960|0)+228>>2]^x)&_;_e=(o[1776+(r*960|0)+232>>2]^oe)&_;se=(o[1776+(r*960|0)+236>>2]^Z)&_;o[u>>2]=(o[1776+(r*960|0)+200>>2]^re)&_^re;o[I>>2]=te^P;o[O>>2]=T^ee;o[S>>2]=ue^L;o[M>>2]=y^ie;o[A>>2]=ae^R;o[g>>2]=$^ne;o[s>>2]=E^x;o[v>>2]=_e^oe;o[k>>2]=se^Z;Z=fo((n^3)&255|0,0,-1,-1)|0;Z=mo(Z|0,C|0,63)|0;se=o[e>>2]|0;oe=o[i>>2]|0;_e=o[l>>2]|0;x=o[f>>2]|0;E=o[c>>2]|0;ne=o[h>>2]|0;$=o[d>>2]|0;R=o[m>>2]|0;ae=o[p>>2]|0;ie=o[b>>2]|0;Z=0-Z|0;y=(o[1776+(r*960|0)+244>>2]^oe)&Z;L=(o[1776+(r*960|0)+248>>2]^_e)&Z;ue=(o[1776+(r*960|0)+252>>2]^x)&Z;ee=(o[1776+(r*960|0)+256>>2]^E)&Z;T=(o[1776+(r*960|0)+260>>2]^ne)&Z;P=(o[1776+(r*960|0)+264>>2]^$)&Z;te=(o[1776+(r*960|0)+268>>2]^R)&Z;re=(o[1776+(r*960|0)+272>>2]^ae)&Z;_=(o[1776+(r*960|0)+276>>2]^ie)&Z;o[e>>2]=(o[1776+(r*960|0)+240>>2]^se)&Z^se;o[i>>2]=y^oe;o[l>>2]=L^_e;o[f>>2]=ue^x;o[c>>2]=ee^E;o[h>>2]=T^ne;o[d>>2]=P^$;o[m>>2]=te^R;o[p>>2]=re^ae;o[b>>2]=_^ie;ie=o[t>>2]|0;_=o[a>>2]|0;ae=o[J>>2]|0;re=o[W>>2]|0;R=o[G>>2]|0;te=o[V>>2]|0;$=o[j>>2]|0;P=o[q>>2]|0;ne=o[F>>2]|0;T=o[N>>2]|0;E=(o[1776+(r*960|0)+284>>2]^_)&Z;ee=(o[1776+(r*960|0)+288>>2]^ae)&Z;x=(o[1776+(r*960|0)+292>>2]^re)&Z;ue=(o[1776+(r*960|0)+296>>2]^R)&Z;_e=(o[1776+(r*960|0)+300>>2]^te)&Z;L=(o[1776+(r*960|0)+304>>2]^$)&Z;oe=(o[1776+(r*960|0)+308>>2]^P)&Z;y=(o[1776+(r*960|0)+312>>2]^ne)&Z;se=(o[1776+(r*960|0)+316>>2]^T)&Z;o[t>>2]=(o[1776+(r*960|0)+280>>2]^ie)&Z^ie;o[a>>2]=E^_;o[J>>2]=ee^ae;o[W>>2]=x^re;o[G>>2]=ue^R;o[V>>2]=_e^te;o[j>>2]=L^$;o[q>>2]=oe^P;o[F>>2]=y^ne;o[N>>2]=se^T;T=o[u>>2]|0;se=o[I>>2]|0;ne=o[O>>2]|0;y=o[S>>2]|0;P=o[M>>2]|0;oe=o[A>>2]|0;$=o[g>>2]|0;L=o[s>>2]|0;te=o[v>>2]|0;_e=o[k>>2]|0;R=(o[1776+(r*960|0)+324>>2]^se)&Z;ue=(o[1776+(r*960|0)+328>>2]^ne)&Z;re=(o[1776+(r*960|0)+332>>2]^y)&Z;x=(o[1776+(r*960|0)+336>>2]^P)&Z;ae=(o[1776+(r*960|0)+340>>2]^oe)&Z;ee=(o[1776+(r*960|0)+344>>2]^$)&Z;_=(o[1776+(r*960|0)+348>>2]^L)&Z;E=(o[1776+(r*960|0)+352>>2]^te)&Z;ie=(o[1776+(r*960|0)+356>>2]^_e)&Z;o[u>>2]=(o[1776+(r*960|0)+320>>2]^T)&Z^T;o[I>>2]=R^se;o[O>>2]=ue^ne;o[S>>2]=re^y;o[M>>2]=x^P;o[A>>2]=ae^oe;o[g>>2]=ee^$;o[s>>2]=_^L;o[v>>2]=E^te;o[k>>2]=ie^_e;_e=fo((n^4)&255|0,0,-1,-1)|0;_e=mo(_e|0,C|0,63)|0;ie=o[e>>2]|0;te=o[i>>2]|0;E=o[l>>2]|0;L=o[f>>2]|0;_=o[c>>2]|0;$=o[h>>2]|0;ee=o[d>>2]|0;oe=o[m>>2]|0;ae=o[p>>2]|0;P=o[b>>2]|0;_e=0-_e|0;x=(o[1776+(r*960|0)+364>>2]^te)&_e;y=(o[1776+(r*960|0)+368>>2]^E)&_e;re=(o[1776+(r*960|0)+372>>2]^L)&_e;ne=(o[1776+(r*960|0)+376>>2]^_)&_e;ue=(o[1776+(r*960|0)+380>>2]^$)&_e;se=(o[1776+(r*960|0)+384>>2]^ee)&_e;R=(o[1776+(r*960|0)+388>>2]^oe)&_e;T=(o[1776+(r*960|0)+392>>2]^ae)&_e;Z=(o[1776+(r*960|0)+396>>2]^P)&_e;o[e>>2]=(o[1776+(r*960|0)+360>>2]^ie)&_e^ie;o[i>>2]=x^te;o[l>>2]=y^E;o[f>>2]=re^L;o[c>>2]=ne^_;o[h>>2]=ue^$;o[d>>2]=se^ee;o[m>>2]=R^oe;o[p>>2]=T^ae;o[b>>2]=Z^P;P=o[t>>2]|0;Z=o[a>>2]|0;ae=o[J>>2]|0;T=o[W>>2]|0;oe=o[G>>2]|0;R=o[V>>2]|0;ee=o[j>>2]|0;se=o[q>>2]|0;$=o[F>>2]|0;ue=o[N>>2]|0;_=(o[1776+(r*960|0)+404>>2]^Z)&_e;ne=(o[1776+(r*960|0)+408>>2]^ae)&_e;L=(o[1776+(r*960|0)+412>>2]^T)&_e;re=(o[1776+(r*960|0)+416>>2]^oe)&_e;E=(o[1776+(r*960|0)+420>>2]^R)&_e;y=(o[1776+(r*960|0)+424>>2]^ee)&_e;te=(o[1776+(r*960|0)+428>>2]^se)&_e;x=(o[1776+(r*960|0)+432>>2]^$)&_e;ie=(o[1776+(r*960|0)+436>>2]^ue)&_e;o[t>>2]=(o[1776+(r*960|0)+400>>2]^P)&_e^P;o[a>>2]=_^Z;o[J>>2]=ne^ae;o[W>>2]=L^T;o[G>>2]=re^oe;o[V>>2]=E^R;o[j>>2]=y^ee;o[q>>2]=te^se;o[F>>2]=x^$;o[N>>2]=ie^ue;ue=o[u>>2]|0;ie=o[I>>2]|0;$=o[O>>2]|0;x=o[S>>2]|0;se=o[M>>2]|0;te=o[A>>2]|0;ee=o[g>>2]|0;y=o[s>>2]|0;R=o[v>>2]|0;E=o[k>>2]|0;oe=(o[1776+(r*960|0)+444>>2]^ie)&_e;re=(o[1776+(r*960|0)+448>>2]^$)&_e;T=(o[1776+(r*960|0)+452>>2]^x)&_e;L=(o[1776+(r*960|0)+456>>2]^se)&_e;ae=(o[1776+(r*960|0)+460>>2]^te)&_e;ne=(o[1776+(r*960|0)+464>>2]^ee)&_e;Z=(o[1776+(r*960|0)+468>>2]^y)&_e;_=(o[1776+(r*960|0)+472>>2]^R)&_e;P=(o[1776+(r*960|0)+476>>2]^E)&_e;o[u>>2]=(o[1776+(r*960|0)+440>>2]^ue)&_e^ue;o[I>>2]=oe^ie;o[O>>2]=re^$;o[S>>2]=T^x;o[M>>2]=L^se;o[A>>2]=ae^te;o[g>>2]=ne^ee;o[s>>2]=Z^y;o[v>>2]=_^R;o[k>>2]=P^E;E=fo((n^5)&255|0,0,-1,-1)|0;E=mo(E|0,C|0,63)|0;P=o[e>>2]|0;R=o[i>>2]|0;_=o[l>>2]|0;y=o[f>>2]|0;Z=o[c>>2]|0;ee=o[h>>2]|0;ne=o[d>>2]|0;te=o[m>>2]|0;ae=o[p>>2]|0;se=o[b>>2]|0;E=0-E|0;L=(o[1776+(r*960|0)+484>>2]^R)&E;x=(o[1776+(r*960|0)+488>>2]^_)&E;T=(o[1776+(r*960|0)+492>>2]^y)&E;$=(o[1776+(r*960|0)+496>>2]^Z)&E;re=(o[1776+(r*960|0)+500>>2]^ee)&E;ie=(o[1776+(r*960|0)+504>>2]^ne)&E;oe=(o[1776+(r*960|0)+508>>2]^te)&E;ue=(o[1776+(r*960|0)+512>>2]^ae)&E;_e=(o[1776+(r*960|0)+516>>2]^se)&E;o[e>>2]=(o[1776+(r*960|0)+480>>2]^P)&E^P;o[i>>2]=L^R;o[l>>2]=x^_;o[f>>2]=T^y;o[c>>2]=$^Z;o[h>>2]=re^ee;o[d>>2]=ie^ne;o[m>>2]=oe^te;o[p>>2]=ue^ae;o[b>>2]=_e^se;se=o[t>>2]|0;_e=o[a>>2]|0;ae=o[J>>2]|0;ue=o[W>>2]|0;te=o[G>>2]|0;oe=o[V>>2]|0;ne=o[j>>2]|0;ie=o[q>>2]|0;ee=o[F>>2]|0;re=o[N>>2]|0;Z=(o[1776+(r*960|0)+524>>2]^_e)&E;$=(o[1776+(r*960|0)+528>>2]^ae)&E;y=(o[1776+(r*960|0)+532>>2]^ue)&E;T=(o[1776+(r*960|0)+536>>2]^te)&E;_=(o[1776+(r*960|0)+540>>2]^oe)&E;x=(o[1776+(r*960|0)+544>>2]^ne)&E;R=(o[1776+(r*960|0)+548>>2]^ie)&E;L=(o[1776+(r*960|0)+552>>2]^ee)&E;P=(o[1776+(r*960|0)+556>>2]^re)&E;o[t>>2]=(o[1776+(r*960|0)+520>>2]^se)&E^se;o[a>>2]=Z^_e;o[J>>2]=$^ae;o[W>>2]=y^ue;o[G>>2]=T^te;o[V>>2]=_^oe;o[j>>2]=x^ne;o[q>>2]=R^ie;o[F>>2]=L^ee;o[N>>2]=P^re;re=o[u>>2]|0;P=o[I>>2]|0;ee=o[O>>2]|0;L=o[S>>2]|0;ie=o[M>>2]|0;R=o[A>>2]|0;ne=o[g>>2]|0;x=o[s>>2]|0;oe=o[v>>2]|0;_=o[k>>2]|0;te=(o[1776+(r*960|0)+564>>2]^P)&E;T=(o[1776+(r*960|0)+568>>2]^ee)&E;ue=(o[1776+(r*960|0)+572>>2]^L)&E;y=(o[1776+(r*960|0)+576>>2]^ie)&E;ae=(o[1776+(r*960|0)+580>>2]^R)&E;$=(o[1776+(r*960|0)+584>>2]^ne)&E;_e=(o[1776+(r*960|0)+588>>2]^x)&E;Z=(o[1776+(r*960|0)+592>>2]^oe)&E;se=(o[1776+(r*960|0)+596>>2]^_)&E;o[u>>2]=(o[1776+(r*960|0)+560>>2]^re)&E^re;o[I>>2]=te^P;o[O>>2]=T^ee;o[S>>2]=ue^L;o[M>>2]=y^ie;o[A>>2]=ae^R;o[g>>2]=$^ne;o[s>>2]=_e^x;o[v>>2]=Z^oe;o[k>>2]=se^_;_=fo((n^6)&255|0,0,-1,-1)|0;_=mo(_|0,C|0,63)|0;se=o[e>>2]|0;oe=o[i>>2]|0;Z=o[l>>2]|0;x=o[f>>2]|0;_e=o[c>>2]|0;ne=o[h>>2]|0;$=o[d>>2]|0;R=o[m>>2]|0;ae=o[p>>2]|0;ie=o[b>>2]|0;_=0-_|0;y=(o[1776+(r*960|0)+604>>2]^oe)&_;L=(o[1776+(r*960|0)+608>>2]^Z)&_;ue=(o[1776+(r*960|0)+612>>2]^x)&_;ee=(o[1776+(r*960|0)+616>>2]^_e)&_;T=(o[1776+(r*960|0)+620>>2]^ne)&_;P=(o[1776+(r*960|0)+624>>2]^$)&_;te=(o[1776+(r*960|0)+628>>2]^R)&_;re=(o[1776+(r*960|0)+632>>2]^ae)&_;E=(o[1776+(r*960|0)+636>>2]^ie)&_;o[e>>2]=(o[1776+(r*960|0)+600>>2]^se)&_^se;o[i>>2]=y^oe;o[l>>2]=L^Z;o[f>>2]=ue^x;o[c>>2]=ee^_e;o[h>>2]=T^ne;o[d>>2]=P^$;o[m>>2]=te^R;o[p>>2]=re^ae;o[b>>2]=E^ie;ie=o[t>>2]|0;E=o[a>>2]|0;ae=o[J>>2]|0;re=o[W>>2]|0;R=o[G>>2]|0;te=o[V>>2]|0;$=o[j>>2]|0;P=o[q>>2]|0;ne=o[F>>2]|0;T=o[N>>2]|0;_e=(o[1776+(r*960|0)+644>>2]^E)&_;ee=(o[1776+(r*960|0)+648>>2]^ae)&_;x=(o[1776+(r*960|0)+652>>2]^re)&_;ue=(o[1776+(r*960|0)+656>>2]^R)&_;Z=(o[1776+(r*960|0)+660>>2]^te)&_;L=(o[1776+(r*960|0)+664>>2]^$)&_;oe=(o[1776+(r*960|0)+668>>2]^P)&_;y=(o[1776+(r*960|0)+672>>2]^ne)&_;se=(o[1776+(r*960|0)+676>>2]^T)&_;o[t>>2]=(o[1776+(r*960|0)+640>>2]^ie)&_^ie;o[a>>2]=_e^E;o[J>>2]=ee^ae;o[W>>2]=x^re;o[G>>2]=ue^R;o[V>>2]=Z^te;o[j>>2]=L^$;o[q>>2]=oe^P;o[F>>2]=y^ne;o[N>>2]=se^T;T=o[u>>2]|0;se=o[I>>2]|0;ne=o[O>>2]|0;y=o[S>>2]|0;P=o[M>>2]|0;oe=o[A>>2]|0;$=o[g>>2]|0;L=o[s>>2]|0;te=o[v>>2]|0;Z=o[k>>2]|0;R=(o[1776+(r*960|0)+684>>2]^se)&_;ue=(o[1776+(r*960|0)+688>>2]^ne)&_;re=(o[1776+(r*960|0)+692>>2]^y)&_;x=(o[1776+(r*960|0)+696>>2]^P)&_;ae=(o[1776+(r*960|0)+700>>2]^oe)&_;ee=(o[1776+(r*960|0)+704>>2]^$)&_;E=(o[1776+(r*960|0)+708>>2]^L)&_;_e=(o[1776+(r*960|0)+712>>2]^te)&_;ie=(o[1776+(r*960|0)+716>>2]^Z)&_;o[u>>2]=(o[1776+(r*960|0)+680>>2]^T)&_^T;o[I>>2]=R^se;o[O>>2]=ue^ne;o[S>>2]=re^y;o[M>>2]=x^P;o[A>>2]=ae^oe;o[g>>2]=ee^$;o[s>>2]=E^L;o[v>>2]=_e^te;o[k>>2]=ie^Z;Z=fo((n^7)&255|0,0,-1,-1)|0;Z=mo(Z|0,C|0,63)|0;ie=o[e>>2]|0;te=o[i>>2]|0;_e=o[l>>2]|0;L=o[f>>2]|0;E=o[c>>2]|0;$=o[h>>2]|0;ee=o[d>>2]|0;oe=o[m>>2]|0;ae=o[p>>2]|0;P=o[b>>2]|0;Z=0-Z|0;x=(o[1776+(r*960|0)+724>>2]^te)&Z;y=(o[1776+(r*960|0)+728>>2]^_e)&Z;re=(o[1776+(r*960|0)+732>>2]^L)&Z;ne=(o[1776+(r*960|0)+736>>2]^E)&Z;ue=(o[1776+(r*960|0)+740>>2]^$)&Z;se=(o[1776+(r*960|0)+744>>2]^ee)&Z;R=(o[1776+(r*960|0)+748>>2]^oe)&Z;T=(o[1776+(r*960|0)+752>>2]^ae)&Z;_=(o[1776+(r*960|0)+756>>2]^P)&Z;o[e>>2]=(o[1776+(r*960|0)+720>>2]^ie)&Z^ie;o[i>>2]=x^te;o[l>>2]=y^_e;o[f>>2]=re^L;o[c>>2]=ne^E;o[h>>2]=ue^$;o[d>>2]=se^ee;o[m>>2]=R^oe;o[p>>2]=T^ae;o[b>>2]=_^P;P=o[t>>2]|0;_=o[a>>2]|0;ae=o[J>>2]|0;T=o[W>>2]|0;oe=o[G>>2]|0;R=o[V>>2]|0;ee=o[j>>2]|0;se=o[q>>2]|0;$=o[F>>2]|0;ue=o[N>>2]|0;E=(o[1776+(r*960|0)+764>>2]^_)&Z;ne=(o[1776+(r*960|0)+768>>2]^ae)&Z;L=(o[1776+(r*960|0)+772>>2]^T)&Z;re=(o[1776+(r*960|0)+776>>2]^oe)&Z;_e=(o[1776+(r*960|0)+780>>2]^R)&Z;y=(o[1776+(r*960|0)+784>>2]^ee)&Z;te=(o[1776+(r*960|0)+788>>2]^se)&Z;x=(o[1776+(r*960|0)+792>>2]^$)&Z;ie=(o[1776+(r*960|0)+796>>2]^ue)&Z;o[t>>2]=(o[1776+(r*960|0)+760>>2]^P)&Z^P;o[a>>2]=E^_;o[J>>2]=ne^ae;o[W>>2]=L^T;o[G>>2]=re^oe;o[V>>2]=_e^R;o[j>>2]=y^ee;o[q>>2]=te^se;o[F>>2]=x^$;o[N>>2]=ie^ue;ue=o[u>>2]|0;ie=o[I>>2]|0;$=o[O>>2]|0;x=o[S>>2]|0;se=o[M>>2]|0;te=o[A>>2]|0;ee=o[g>>2]|0;y=o[s>>2]|0;R=o[v>>2]|0;_e=o[k>>2]|0;oe=(o[1776+(r*960|0)+804>>2]^ie)&Z;re=(o[1776+(r*960|0)+808>>2]^$)&Z;T=(o[1776+(r*960|0)+812>>2]^x)&Z;L=(o[1776+(r*960|0)+816>>2]^se)&Z;ae=(o[1776+(r*960|0)+820>>2]^te)&Z;ne=(o[1776+(r*960|0)+824>>2]^ee)&Z;_=(o[1776+(r*960|0)+828>>2]^y)&Z;E=(o[1776+(r*960|0)+832>>2]^R)&Z;P=(o[1776+(r*960|0)+836>>2]^_e)&Z;o[u>>2]=(o[1776+(r*960|0)+800>>2]^ue)&Z^ue;o[I>>2]=oe^ie;o[O>>2]=re^$;o[S>>2]=T^x;o[M>>2]=L^se;o[A>>2]=ae^te;o[g>>2]=ne^ee;o[s>>2]=_^y;o[v>>2]=E^R;o[k>>2]=P^_e;_e=fo((n^8)&255|0,0,-1,-1)|0;_e=mo(_e|0,C|0,63)|0;P=o[e>>2]|0;R=o[i>>2]|0;E=o[l>>2]|0;y=o[f>>2]|0;_=o[c>>2]|0;ee=o[h>>2]|0;ne=o[d>>2]|0;te=o[m>>2]|0;ae=o[p>>2]|0;se=o[b>>2]|0;_e=0-_e|0;L=(o[1776+(r*960|0)+844>>2]^R)&_e;x=(o[1776+(r*960|0)+848>>2]^E)&_e;T=(o[1776+(r*960|0)+852>>2]^y)&_e;n=(o[1776+(r*960|0)+856>>2]^_)&_e;$=(o[1776+(r*960|0)+860>>2]^ee)&_e;re=(o[1776+(r*960|0)+864>>2]^ne)&_e;ie=(o[1776+(r*960|0)+868>>2]^te)&_e;oe=(o[1776+(r*960|0)+872>>2]^ae)&_e;ue=(o[1776+(r*960|0)+876>>2]^se)&_e;o[e>>2]=(o[1776+(r*960|0)+840>>2]^P)&_e^P;o[i>>2]=L^R;o[l>>2]=x^E;o[f>>2]=T^y;o[c>>2]=n^_;o[h>>2]=$^ee;o[d>>2]=re^ne;o[m>>2]=ie^te;o[p>>2]=oe^ae;o[b>>2]=ue^se;se=o[t>>2]|0;ue=o[a>>2]|0;ae=o[J>>2]|0;oe=o[W>>2]|0;te=o[G>>2]|0;ie=o[V>>2]|0;ne=o[j>>2]|0;re=o[q>>2]|0;ee=o[F>>2]|0;$=o[N>>2]|0;_=(o[1776+(r*960|0)+884>>2]^ue)&_e;n=(o[1776+(r*960|0)+888>>2]^ae)&_e;y=(o[1776+(r*960|0)+892>>2]^oe)&_e;T=(o[1776+(r*960|0)+896>>2]^te)&_e;E=(o[1776+(r*960|0)+900>>2]^ie)&_e;x=(o[1776+(r*960|0)+904>>2]^ne)&_e;R=(o[1776+(r*960|0)+908>>2]^re)&_e;L=(o[1776+(r*960|0)+912>>2]^ee)&_e;P=(o[1776+(r*960|0)+916>>2]^$)&_e;se=(o[1776+(r*960|0)+880>>2]^se)&_e^se;o[t>>2]=se;ue=_^ue;o[a>>2]=ue;ae=n^ae;o[J>>2]=ae;oe=y^oe;o[W>>2]=oe;te=T^te;o[G>>2]=te;ie=E^ie;o[V>>2]=ie;ne=x^ne;o[j>>2]=ne;re=R^re;o[q>>2]=re;ee=L^ee;o[F>>2]=ee;$=P^$;o[N>>2]=$;P=o[u>>2]|0;L=o[I>>2]|0;R=o[O>>2]|0;x=o[S>>2]|0;E=o[M>>2]|0;T=o[A>>2]|0;y=o[g>>2]|0;n=o[s>>2]|0;_=o[v>>2]|0;Z=o[k>>2]|0;U=(o[1776+(r*960|0)+924>>2]^L)&_e;z=(o[1776+(r*960|0)+928>>2]^R)&_e;H=(o[1776+(r*960|0)+932>>2]^x)&_e;D=(o[1776+(r*960|0)+936>>2]^E)&_e;B=(o[1776+(r*960|0)+940>>2]^T)&_e;K=(o[1776+(r*960|0)+944>>2]^y)&_e;Y=(o[1776+(r*960|0)+948>>2]^n)&_e;X=(o[1776+(r*960|0)+952>>2]^_)&_e;Q=(o[1776+(r*960|0)+956>>2]^Z)&_e;P=(o[1776+(r*960|0)+920>>2]^P)&_e^P;o[u>>2]=P;L=U^L;o[I>>2]=L;R=z^R;o[O>>2]=R;x=H^x;o[S>>2]=x;E=D^E;o[M>>2]=E;T=B^T;o[A>>2]=T;y=K^y;o[g>>2]=y;n=Y^n;o[s>>2]=n;_=X^_;o[v>>2]=_;r=Q^Z;o[k>>2]=r;Z=o[e>>2]|0;Q=o[i>>2]|0;X=o[l>>2]|0;Y=o[f>>2]|0;K=o[c>>2]|0;B=o[h>>2]|0;D=o[d>>2]|0;H=o[m>>2]|0;z=o[p>>2]|0;U=o[b>>2]|0;o[e>>2]=(Z^se)&w^Z;o[i>>2]=(Q^ue)&w^Q;o[l>>2]=(X^ae)&w^X;o[f>>2]=(Y^oe)&w^Y;o[c>>2]=(K^te)&w^K;o[h>>2]=(B^ie)&w^B;o[d>>2]=(D^ne)&w^D;o[m>>2]=(H^re)&w^H;o[p>>2]=(z^ee)&w^z;o[b>>2]=(U^$)&w^U;i=o[t>>2]|0;e=o[a>>2]|0;b=o[J>>2]|0;p=o[W>>2]|0;m=o[G>>2]|0;d=o[V>>2]|0;h=o[j>>2]|0;c=o[q>>2]|0;f=o[F>>2]|0;l=o[N>>2]|0;o[t>>2]=(i^Z)&w^i;o[a>>2]=(e^Q)&w^e;o[J>>2]=(b^X)&w^b;o[W>>2]=(p^Y)&w^p;o[G>>2]=(m^K)&w^m;o[V>>2]=(d^B)&w^d;o[j>>2]=(h^D)&w^h;o[q>>2]=(c^H)&w^c;o[F>>2]=(f^z)&w^f;o[N>>2]=(l^U)&w^l;a=o[u>>2]|0;l=o[I>>2]|0;f=o[O>>2]|0;c=o[S>>2]|0;h=o[M>>2]|0;d=o[A>>2]|0;m=o[g>>2]|0;p=o[s>>2]|0;b=o[v>>2]|0;e=o[k>>2]|0;o[u>>2]=(a^0-P)&w^a;o[I>>2]=(l^0-L)&w^l;o[O>>2]=(f^0-R)&w^f;o[S>>2]=(c^0-x)&w^c;o[M>>2]=(h^0-E)&w^h;o[A>>2]=(d^0-T)&w^d;o[g>>2]=(m^0-y)&w^m;o[s>>2]=(p^0-n)&w^p;o[v>>2]=(b^0-_)&w^b;o[k>>2]=(e^0-r)&w^e;return}function Xi(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0;p=f;f=f+496|0;h=p;c=p+448|0;d=p+408|0;m=p+368|0;l=p+208|0;s=h+72|0;o[s>>2]=0;_=h;o[_>>2]=0;o[_+4>>2]=0;_=h+8|0;o[_>>2]=-205731576;o[_+4>>2]=1779033703;_=h+16|0;o[_>>2]=-2067093701;o[_+4>>2]=-1150833019;_=h+24|0;o[_>>2]=-23791573;o[_+4>>2]=1013904242;_=h+32|0;o[_>>2]=1595750129;o[_+4>>2]=-1521486534;_=h+40|0;o[_>>2]=-1377402159;o[_+4>>2]=1359893119;_=h+48|0;o[_>>2]=725511199;o[_+4>>2]=-1694144372;_=h+56|0;o[_>>2]=-79577749;o[_+4>>2]=528734635;_=h+64|0;o[_>>2]=327033209;o[_+4>>2]=1541459225;if(n|0){_=h+76|0;t=0;u=0;do{i[u+t+(h+76)>>0]=i[n+u>>0]|0;u=u+1|0;t=o[s>>2]|0}while(u>>>0<32);n=t+32|0;o[s>>2]=n;if((n|0)==128){Qi(h,_);n=h;n=fo(o[n>>2]|0,o[n+4>>2]|0,1024,0)|0;_=h;o[_>>2]=n;o[_+4>>2]=C;o[s>>2]=0}Zi(h,r)|0}i[r>>0]=(a[r>>0]|0)&248;_=r+31|0;i[_>>0]=(a[_>>0]|0)&63|64;Yi(l,r);Ii(c,l+80|0);Pi(d,l,c);Pi(m,l+40|0,c);Ni(e,m);Ni(h,d);m=e+31|0;i[m>>0]=(a[m>>0]|0)^(a[h>>0]|0)<<7;f=p;return}function Qi(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,I=0,L=0,P=0;A=f;f=f+704|0;u=A+640|0;g=A;y=e+8|0;n=u;i=y;t=n+64|0;do{o[n>>2]=o[i>>2];n=n+4|0;i=i+4|0}while((n|0)<(t|0));n=0;do{w=r+(n<<3)|0;h=po(a[w>>0]|0|0,0,56)|0;v=C;c=po(a[w+1>>0]|0|0,0,48)|0;v=C|v;d=po(a[w+2>>0]|0|0,0,40)|0;v=v|C|(a[w+3>>0]|0);m=po(a[w+4>>0]|0|0,0,24)|0;v=v|C;p=po(a[w+5>>0]|0|0,0,16)|0;v=v|C;b=po(a[w+6>>0]|0|0,0,8)|0;k=g+(n<<3)|0;o[k>>2]=c|h|d|m|p|b|(a[w+7>>0]|0);o[k+4>>2]=v|C;n=n+1|0}while((n|0)!=16);i=g;n=o[i>>2]|0;i=o[i+4>>2]|0;t=16;do{l=g+(t+-2<<3)|0;T=o[l>>2]|0;l=o[l+4>>2]|0;c=mo(T|0,l|0,19)|0;d=C;h=po(T|0,l|0,45)|0;d=d|C;s=mo(T|0,l|0,61)|0;r=C;_=po(T|0,l|0,3)|0;r=r|C;l=mo(T|0,l|0,6)|0;d=r^C^d;r=g+(t+-7<<3)|0;T=o[r>>2]|0;r=o[r+4>>2]|0;w=g+(t+-15<<3)|0;E=n;n=o[w>>2]|0;M=i;i=o[w+4>>2]|0;w=mo(n|0,i|0,1)|0;v=C;k=po(n|0,i|0,63)|0;v=v|C;m=mo(n|0,i|0,8)|0;S=C;p=po(n|0,i|0,56)|0;S=S|C;b=mo(n|0,i|0,7)|0;v=S^C^v;r=fo(E|0,M|0,T|0,r|0)|0;d=fo(r|0,C|0,(s|_)^l^(c|h)|0,d|0)|0;v=fo(d|0,C|0,(m|p)^b^(w|k)|0,v|0)|0;k=g+(t<<3)|0;o[k>>2]=v;o[k+4>>2]=C;t=t+1|0}while((t|0)!=80);n=u+56|0;d=u+32|0;t=u+48|0;_=u+40|0;w=u;m=u+8|0;l=u+16|0;r=u+24|0;p=o[d>>2]|0;d=o[d+4>>2]|0;u=o[t>>2]|0;c=o[_>>2]|0;t=o[t+4>>2]|0;_=o[_+4>>2]|0;i=o[n>>2]|0;n=o[n+4>>2]|0;v=o[w>>2]|0;w=o[w+4>>2]|0;b=o[m>>2]|0;m=o[m+4>>2]|0;h=o[l>>2]|0;l=o[l+4>>2]|0;s=o[r>>2]|0;r=o[r+4>>2]|0;k=0;do{L=mo(p|0,d|0,14)|0;O=C;T=po(p|0,d|0,50)|0;O=O|C;R=mo(p|0,d|0,18)|0;P=C;S=po(p|0,d|0,46)|0;P=O^(P|C);O=mo(p|0,d|0,41)|0;M=C;I=po(p|0,d|0,23)|0;M=P^(M|C);P=8+(k<<3)|0;E=g+(k<<3)|0;x=o[E>>2]|0;E=o[E+4>>2]|0;n=fo(o[P>>2]|0,o[P+4>>2]|0,i|0,n|0)|0;M=fo(n|0,C|0,(L|T)^(R|S)^(O|I)|0,M|0)|0;E=fo(M|0,C|0,x|0,E|0)|0;E=fo(E|0,C|0,(c^u)&p^u|0,(_^t)&d^t|0)|0;x=C;M=mo(v|0,w|0,28)|0;I=C;O=po(v|0,w|0,36)|0;I=I|C;S=mo(v|0,w|0,34)|0;R=C;T=po(v|0,w|0,30)|0;R=I^(R|C);I=mo(v|0,w|0,39)|0;n=C;i=po(v|0,w|0,25)|0;n=R^(n|C);R=fo(s|0,r|0,E|0,x|0)|0;r=C;x=fo((b|v)&h|b&v|0,(m|w)&l|m&w|0,E|0,x|0)|0;n=fo(x|0,C|0,(M|O)^(S|T)^(I|i)|0,n|0)|0;i=C;I=mo(R|0,r|0,14)|0;T=C;S=po(R|0,r|0,50)|0;T=T|C;O=mo(R|0,r|0,18)|0;M=C;x=po(R|0,r|0,46)|0;M=T^(M|C);T=mo(R|0,r|0,41)|0;s=C;E=po(R|0,r|0,23)|0;s=fo((I|S)^(O|x)^(T|E)|0,M^(s|C)|0,u|0,t|0)|0;u=k|1;M=8+(u<<3)|0;u=g+(u<<3)|0;t=o[u>>2]|0;u=o[u+4>>2]|0;M=fo(s|0,C|0,o[M>>2]|0,o[M+4>>2]|0)|0;u=fo(M|0,C|0,t|0,u|0)|0;u=fo(u|0,C|0,(p^c)&R^c|0,(d^_)&r^_|0)|0;t=C;M=mo(n|0,i|0,28)|0;s=C;E=po(n|0,i|0,36)|0;s=s|C;T=mo(n|0,i|0,34)|0;x=C;O=po(n|0,i|0,30)|0;x=s^(x|C);s=mo(n|0,i|0,39)|0;S=C;I=po(n|0,i|0,25)|0;S=fo((v|n)&b|v&n|0,(w|i)&m|w&i|0,(M|E)^(T|O)^(s|I)|0,x^(S|C)|0)|0;x=C;I=fo(u|0,t|0,h|0,l|0)|0;l=C;t=fo(S|0,x|0,u|0,t|0)|0;u=C;x=mo(I|0,l|0,14)|0;S=C;s=po(I|0,l|0,50)|0;S=S|C;h=mo(I|0,l|0,18)|0;O=C;T=po(I|0,l|0,46)|0;O=S^(O|C);S=mo(I|0,l|0,41)|0;E=C;M=po(I|0,l|0,23)|0;E=fo((x|s)^(h|T)^(S|M)|0,O^(E|C)|0,c|0,_|0)|0;c=k|2;O=8+(c<<3)|0;c=g+(c<<3)|0;_=o[c>>2]|0;c=o[c+4>>2]|0;O=fo(E|0,C|0,o[O>>2]|0,o[O+4>>2]|0)|0;c=fo(O|0,C|0,_|0,c|0)|0;c=fo(c|0,C|0,(R^p)&I^p|0,(r^d)&l^d|0)|0;_=C;O=mo(t|0,u|0,28)|0;E=C;M=po(t|0,u|0,36)|0;E=E|C;S=mo(t|0,u|0,34)|0;T=C;h=po(t|0,u|0,30)|0;T=E^(T|C);E=mo(t|0,u|0,39)|0;s=C;x=po(t|0,u|0,25)|0;s=fo((n|t)&v|n&t|0,(i|u)&w|i&u|0,(O|M)^(S|h)^(E|x)|0,T^(s|C)|0)|0;T=C;m=fo(c|0,_|0,b|0,m|0)|0;x=C;_=fo(s|0,T|0,c|0,_|0)|0;c=C;T=mo(m|0,x|0,14)|0;s=C;E=po(m|0,x|0,50)|0;s=s|C;h=mo(m|0,x|0,18)|0;b=C;S=po(m|0,x|0,46)|0;b=s^(b|C);s=mo(m|0,x|0,41)|0;M=C;O=po(m|0,x|0,23)|0;M=fo((T|E)^(h|S)^(s|O)|0,b^(M|C)|0,p|0,d|0)|0;p=k|3;b=8+(p<<3)|0;p=g+(p<<3)|0;d=o[p>>2]|0;p=o[p+4>>2]|0;b=fo(M|0,C|0,o[b>>2]|0,o[b+4>>2]|0)|0;p=fo(b|0,C|0,d|0,p|0)|0;p=fo(p|0,C|0,(I^R)&m^R|0,(l^r)&x^r|0)|0;d=C;b=mo(_|0,c|0,28)|0;M=C;O=po(_|0,c|0,36)|0;M=M|C;s=mo(_|0,c|0,34)|0;S=C;h=po(_|0,c|0,30)|0;S=M^(S|C);M=mo(_|0,c|0,39)|0;E=C;T=po(_|0,c|0,25)|0;E=fo((t|_)&n|t&_|0,(u|c)&i|u&c|0,(b|O)^(s|h)^(M|T)|0,S^(E|C)|0)|0;S=C;w=fo(p|0,d|0,v|0,w|0)|0;T=C;d=fo(E|0,S|0,p|0,d|0)|0;p=C;S=mo(w|0,T|0,14)|0;E=C;M=po(w|0,T|0,50)|0;E=E|C;h=mo(w|0,T|0,18)|0;s=C;O=po(w|0,T|0,46)|0;s=E^(s|C);E=mo(w|0,T|0,41)|0;b=C;v=po(w|0,T|0,23)|0;b=fo((S|M)^(h|O)^(E|v)|0,s^(b|C)|0,R|0,r|0)|0;r=k|4;R=8+(r<<3)|0;r=g+(r<<3)|0;s=o[r>>2]|0;r=o[r+4>>2]|0;R=fo(b|0,C|0,o[R>>2]|0,o[R+4>>2]|0)|0;r=fo(R|0,C|0,s|0,r|0)|0;r=fo(r|0,C|0,(m^I)&w^I|0,(x^l)&T^l|0)|0;s=C;R=mo(d|0,p|0,28)|0;b=C;v=po(d|0,p|0,36)|0;b=b|C;E=mo(d|0,p|0,34)|0;O=C;h=po(d|0,p|0,30)|0;O=b^(O|C);b=mo(d|0,p|0,39)|0;M=C;S=po(d|0,p|0,25)|0;M=fo((_|d)&t|_&d|0,(c|p)&u|c&p|0,(R|v)^(E|h)^(b|S)|0,O^(M|C)|0)|0;O=C;i=fo(r|0,s|0,n|0,i|0)|0;n=C;s=fo(M|0,O|0,r|0,s|0)|0;r=C;O=mo(i|0,n|0,14)|0;M=C;S=po(i|0,n|0,50)|0;M=M|C;b=mo(i|0,n|0,18)|0;h=C;E=po(i|0,n|0,46)|0;h=M^(h|C);M=mo(i|0,n|0,41)|0;v=C;R=po(i|0,n|0,23)|0;v=fo((O|S)^(b|E)^(M|R)|0,h^(v|C)|0,I|0,l|0)|0;l=k|5;I=8+(l<<3)|0;l=g+(l<<3)|0;h=o[l>>2]|0;l=o[l+4>>2]|0;I=fo(v|0,C|0,o[I>>2]|0,o[I+4>>2]|0)|0;l=fo(I|0,C|0,h|0,l|0)|0;l=fo(l|0,C|0,(w^m)&i^m|0,(T^x)&n^x|0)|0;h=C;I=mo(s|0,r|0,28)|0;v=C;R=po(s|0,r|0,36)|0;v=v|C;M=mo(s|0,r|0,34)|0;E=C;b=po(s|0,r|0,30)|0;E=v^(E|C);v=mo(s|0,r|0,39)|0;S=C;O=po(s|0,r|0,25)|0;S=fo((d|s)&_|d&s|0,(p|r)&c|p&r|0,(I|R)^(M|b)^(v|O)|0,E^(S|C)|0)|0;E=C;u=fo(l|0,h|0,t|0,u|0)|0;t=C;h=fo(S|0,E|0,l|0,h|0)|0;l=C;E=mo(u|0,t|0,14)|0;S=C;O=po(u|0,t|0,50)|0;S=S|C;v=mo(u|0,t|0,18)|0;b=C;M=po(u|0,t|0,46)|0;b=S^(b|C);S=mo(u|0,t|0,41)|0;R=C;I=po(u|0,t|0,23)|0;x=fo((E|O)^(v|M)^(S|I)|0,b^(R|C)|0,m|0,x|0)|0;m=k|6;R=8+(m<<3)|0;m=g+(m<<3)|0;b=o[m>>2]|0;m=o[m+4>>2]|0;R=fo(x|0,C|0,o[R>>2]|0,o[R+4>>2]|0)|0;m=fo(R|0,C|0,b|0,m|0)|0;m=fo(m|0,C|0,(i^w)&u^w|0,(n^T)&t^T|0)|0;b=C;R=mo(h|0,l|0,28)|0;x=C;I=po(h|0,l|0,36)|0;x=x|C;S=mo(h|0,l|0,34)|0;M=C;v=po(h|0,l|0,30)|0;M=x^(M|C);x=mo(h|0,l|0,39)|0;O=C;E=po(h|0,l|0,25)|0;O=fo((s|h)&d|s&h|0,(r|l)&p|r&l|0,(R|I)^(S|v)^(x|E)|0,M^(O|C)|0)|0;M=C;c=fo(m|0,b|0,_|0,c|0)|0;_=C;b=fo(O|0,M|0,m|0,b|0)|0;m=C;M=mo(c|0,_|0,14)|0;O=C;E=po(c|0,_|0,50)|0;O=O|C;x=mo(c|0,_|0,18)|0;v=C;S=po(c|0,_|0,46)|0;v=O^(v|C);O=mo(c|0,_|0,41)|0;I=C;R=po(c|0,_|0,23)|0;T=fo((M|E)^(x|S)^(O|R)|0,v^(I|C)|0,w|0,T|0)|0;w=k|7;I=8+(w<<3)|0;w=g+(w<<3)|0;v=o[w>>2]|0;w=o[w+4>>2]|0;I=fo(T|0,C|0,o[I>>2]|0,o[I+4>>2]|0)|0;w=fo(I|0,C|0,v|0,w|0)|0;w=fo(w|0,C|0,(u^i)&c^i|0,(t^n)&_^n|0)|0;v=C;I=mo(b|0,m|0,28)|0;T=C;R=po(b|0,m|0,36)|0;T=T|C;O=mo(b|0,m|0,34)|0;S=C;x=po(b|0,m|0,30)|0;S=T^(S|C);T=mo(b|0,m|0,39)|0;E=C;M=po(b|0,m|0,25)|0;E=fo((h|b)&s|h&b|0,(l|m)&r|l&m|0,(I|R)^(O|x)^(T|M)|0,S^(E|C)|0)|0;S=C;p=fo(w|0,v|0,d|0,p|0)|0;d=C;v=fo(E|0,S|0,w|0,v|0)|0;w=C;k=k+8|0}while((k|0)<80);L=y;L=fo(v|0,w|0,o[L>>2]|0,o[L+4>>2]|0)|0;P=y;o[P>>2]=L;o[P+4>>2]=C;P=e+16|0;L=P;L=fo(b|0,m|0,o[L>>2]|0,o[L+4>>2]|0)|0;o[P>>2]=L;o[P+4>>2]=C;P=e+24|0;L=P;L=fo(h|0,l|0,o[L>>2]|0,o[L+4>>2]|0)|0;o[P>>2]=L;o[P+4>>2]=C;P=e+32|0;L=P;L=fo(s|0,r|0,o[L>>2]|0,o[L+4>>2]|0)|0;o[P>>2]=L;o[P+4>>2]=C;P=e+40|0;L=P;L=fo(p|0,d|0,o[L>>2]|0,o[L+4>>2]|0)|0;o[P>>2]=L;o[P+4>>2]=C;P=e+48|0;L=P;L=fo(c|0,_|0,o[L>>2]|0,o[L+4>>2]|0)|0;o[P>>2]=L;o[P+4>>2]=C;P=e+56|0;L=P;L=fo(u|0,t|0,o[L>>2]|0,o[L+4>>2]|0)|0;o[P>>2]=L;o[P+4>>2]=C;P=e+64|0;L=P;L=fo(i|0,n|0,o[L>>2]|0,o[L+4>>2]|0)|0;o[P>>2]=L;o[P+4>>2]=C;f=A;return}function Zi(e,r){e=e|0;r=r|0;var n=0,t=0,a=0,u=0;if((e|0)==0|(r|0)==0){r=1;return r|0}t=e+72|0;n=o[t>>2]|0;if(n>>>0>127){r=1;return r|0}u=po(n|0,0,3)|0;a=e;u=fo(o[a>>2]|0,o[a+4>>2]|0,u|0,C|0)|0;a=e;o[a>>2]=u;o[a+4>>2]=C;o[t>>2]=n+1;a=e+76|0;i[e+76+n>>0]=-128;n=o[t>>2]|0;if(n>>>0>112){if(n>>>0<128)do{o[t>>2]=n+1;i[e+76+n>>0]=0;n=o[t>>2]|0}while(n>>>0<128);Qi(e,a);o[t>>2]=0;n=0}do{o[t>>2]=n+1;i[e+76+n>>0]=0;n=o[t>>2]|0}while(n>>>0<120);u=e;n=o[u>>2]|0;u=o[u+4>>2]|0;t=mo(n|0,u|0,56)|0;i[e+196>>0]=t;t=mo(n|0,u|0,48)|0;i[e+197>>0]=t;t=mo(n|0,u|0,40)|0;i[e+198>>0]=t;i[e+199>>0]=u;t=mo(n|0,u|0,24)|0;i[e+200>>0]=t;t=mo(n|0,u|0,16)|0;i[e+201>>0]=t;u=mo(n|0,u|0,8)|0;i[e+202>>0]=u;i[e+203>>0]=n;Qi(e,a);n=0;do{a=e+8+(n<<3)|0;t=a;t=mo(o[t>>2]|0,o[t+4>>2]|0,56)|0;u=r+(n<<3)|0;i[u>>0]=t;t=a;t=mo(o[t>>2]|0,o[t+4>>2]|0,48)|0;i[u+1>>0]=t;t=a;t=mo(o[t>>2]|0,o[t+4>>2]|0,40)|0;i[u+2>>0]=t;i[u+3>>0]=o[a+4>>2];t=a;t=mo(o[t>>2]|0,o[t+4>>2]|0,24)|0;i[u+4>>0]=t;t=a;t=mo(o[t>>2]|0,o[t+4>>2]|0,16)|0;i[u+5>>0]=t;t=a;t=mo(o[t>>2]|0,o[t+4>>2]|0,8)|0;i[u+6>>0]=t;i[u+7>>0]=o[a>>2];n=n+1|0}while((n|0)!=8);n=0;return n|0}function $i(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,a=0,u=0,s=0,_=0;if((e|0)==0|(r|0)==0){e=1;return e|0}s=e+72|0;t=o[s>>2]|0;if(t>>>0>128){e=1;return e|0}if(!n){e=0;return e|0}_=e+76|0;while(1){if(!(n>>>0>127&(t|0)==0)){u=128-t|0;u=n>>>0<u>>>0?n:u;if(u){a=0;do{i[t+a+(e+76)>>0]=i[r+a>>0]|0;a=a+1|0;t=o[s>>2]|0}while(a>>>0<u>>>0)}a=t+u|0;o[s>>2]=a;r=r+u|0;n=n-u|0;if((a|0)==128){Qi(e,_);a=e;a=fo(o[a>>2]|0,o[a+4>>2]|0,1024,0)|0;u=e;o[u>>2]=a;o[u+4>>2]=C;o[s>>2]=0}}else{Qi(e,r);a=e;a=fo(o[a>>2]|0,o[a+4>>2]|0,1024,0)|0;u=e;o[u>>2]=a;o[u+4>>2]=C;n=n+-128|0;r=r+128|0}if(!n){n=0;break}t=o[s>>2]|0}return n|0}function et(e,r,n,t){e=e|0;r=r|0;n=n|0;t=t|0;var u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0;A=f;f=f+736|0;k=A+704|0;v=A+568|0;g=A+528|0;y=A+488|0;b=A+640|0;p=A+608|0;w=A;d=A+328|0;m=A+208|0;if((a[e+63>>0]|0)>31){y=0;f=A;return y|0}if(Wi(d,t)|0){y=0;f=A;return y|0}h=w+72|0;o[h>>2]=0;l=w;o[l>>2]=0;o[l+4>>2]=0;l=w+8|0;o[l>>2]=-205731576;o[l+4>>2]=1779033703;l=w+16|0;o[l>>2]=-2067093701;o[l+4>>2]=-1150833019;l=w+24|0;o[l>>2]=-23791573;o[l+4>>2]=1013904242;l=w+32|0;o[l>>2]=1595750129;o[l+4>>2]=-1521486534;l=w+40|0;o[l>>2]=-1377402159;o[l+4>>2]=1359893119;l=w+48|0;o[l>>2]=725511199;o[l+4>>2]=-1694144372;l=w+56|0;o[l>>2]=-79577749;o[l+4>>2]=528734635;l=w+64|0;o[l>>2]=327033209;o[l+4>>2]=1541459225;l=w+76|0;u=0;_=0;do{i[_+u+(w+76)>>0]=i[e+_>>0]|0;_=_+1|0;u=o[h>>2]|0}while(_>>>0<32);c=u+32|0;o[h>>2]=c;if((c|0)==128){Qi(w,l);l=w;l=fo(o[l>>2]|0,o[l+4>>2]|0,1024,0)|0;c=w;o[c>>2]=l;o[c+4>>2]=C;o[h>>2]=0}e:do{if(t|0?(s=o[h>>2]|0,s>>>0<=128):0){c=w+76|0;u=32;while(1){if(!((s|0)==0&u>>>0>127)){l=128-s|0;l=u>>>0<l>>>0?u:l;if(l){_=0;do{i[_+s+(w+76)>>0]=i[t+_>>0]|0;_=_+1|0;s=o[h>>2]|0}while(_>>>0<l>>>0)}_=s+l|0;o[h>>2]=_;t=t+l|0;u=u-l|0;if((_|0)==128){Qi(w,c);_=w;_=fo(o[_>>2]|0,o[_+4>>2]|0,1024,0)|0;l=w;o[l>>2]=_;o[l+4>>2]=C;o[h>>2]=0}}else{Qi(w,t);_=w;_=fo(o[_>>2]|0,o[_+4>>2]|0,1024,0)|0;l=w;o[l>>2]=_;o[l+4>>2]=C;u=u+-128|0;t=t+128|0}if(!u)break e;s=o[h>>2]|0}}}while(0);$i(w,r,n)|0;Zi(w,b)|0;zi(b);ji(m,b,d,e+32|0);Ii(v,m+80|0);Pi(g,m,v);Pi(y,m+40|0,v);Ni(p,y);Ni(k,g);y=p+31|0;i[y>>0]=(a[y>>0]|0)^(a[k>>0]|0)<<7;y=(i[e+1>>0]^i[p+1>>0]|i[e>>0]^i[p>>0]|i[e+2>>0]^i[p+2>>0]|i[e+3>>0]^i[p+3>>0]|i[e+4>>0]^i[p+4>>0]|i[e+5>>0]^i[p+5>>0]|i[e+6>>0]^i[p+6>>0]|i[e+7>>0]^i[p+7>>0]|i[e+8>>0]^i[p+8>>0]|i[e+9>>0]^i[p+9>>0]|i[e+10>>0]^i[p+10>>0]|i[e+11>>0]^i[p+11>>0]|i[e+12>>0]^i[p+12>>0]|i[e+13>>0]^i[p+13>>0]|i[e+14>>0]^i[p+14>>0]|i[e+15>>0]^i[p+15>>0]|i[e+16>>0]^i[p+16>>0]|i[e+17>>0]^i[p+17>>0]|i[e+18>>0]^i[p+18>>0]|i[e+19>>0]^i[p+19>>0]|i[e+20>>0]^i[p+20>>0]|i[e+21>>0]^i[p+21>>0]|i[e+22>>0]^i[p+22>>0]|i[e+23>>0]^i[p+23>>0]|i[e+24>>0]^i[p+24>>0]|i[e+25>>0]^i[p+25>>0]|i[e+26>>0]^i[p+26>>0]|i[e+27>>0]^i[p+27>>0]|i[e+28>>0]^i[p+28>>0]|i[e+29>>0]^i[p+29>>0]|i[e+30>>0]^i[p+30>>0]|i[e+31>>0]^i[y>>0])<<24>>24==0&1;f=A;return y|0}function rt(e,r,n,t,u){e=e|0;r=r|0;n=n|0;t=t|0;u=u|0;var s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0;R=f;f=f+656|0;A=R+616|0;y=R+448|0;T=R+408|0;M=R+368|0;S=R;x=R+552|0;O=R+488|0;g=R+208|0;E=S+72|0;o[E>>2]=0;k=S;o[k>>2]=0;o[k+4>>2]=0;k=S+8|0;c=k;o[c>>2]=-205731576;o[c+4>>2]=1779033703;c=S+16|0;h=c;o[h>>2]=-2067093701;o[h+4>>2]=-1150833019;h=S+24|0;d=h;o[d>>2]=-23791573;o[d+4>>2]=1013904242;d=S+32|0;m=d;o[m>>2]=1595750129;o[m+4>>2]=-1521486534;m=S+40|0;p=m;o[p>>2]=-1377402159;o[p+4>>2]=1359893119;p=S+48|0;b=p;o[b>>2]=725511199;o[b+4>>2]=-1694144372;b=S+56|0;w=b;o[w>>2]=-79577749;o[w+4>>2]=528734635;w=S+64|0;_=w;o[_>>2]=327033209;o[_+4>>2]=1541459225;_=u+32|0;v=S+76|0;s=0;l=0;do{i[l+s+(S+76)>>0]=i[_+l>>0]|0;l=l+1|0;s=o[E>>2]|0}while(l>>>0<32);l=s+32|0;o[E>>2]=l;if((l|0)==128){Qi(S,v);l=S;l=fo(o[l>>2]|0,o[l+4>>2]|0,1024,0)|0;v=S;o[v>>2]=l;o[v+4>>2]=C;o[E>>2]=0}$i(S,r,n)|0;Zi(S,O)|0;zi(O);Yi(g,O);Ii(y,g+80|0);Pi(T,g,y);Pi(M,g+40|0,y);Ni(e,M);Ni(A,T);M=e+31|0;i[M>>0]=(a[M>>0]|0)^(a[A>>0]|0)<<7;o[E>>2]=0;M=S;o[M>>2]=0;o[M+4>>2]=0;M=k;o[M>>2]=-205731576;o[M+4>>2]=1779033703;M=c;o[M>>2]=-2067093701;o[M+4>>2]=-1150833019;M=h;o[M>>2]=-23791573;o[M+4>>2]=1013904242;M=d;o[M>>2]=1595750129;o[M+4>>2]=-1521486534;M=m;o[M>>2]=-1377402159;o[M+4>>2]=1359893119;M=p;o[M>>2]=725511199;o[M+4>>2]=-1694144372;M=b;o[M>>2]=-79577749;o[M+4>>2]=528734635;M=w;o[M>>2]=327033209;o[M+4>>2]=1541459225;if(e|0){l=S+76|0;s=0;_=0;do{i[_+s+(S+76)>>0]=i[e+_>>0]|0;_=_+1|0;s=o[E>>2]|0}while(_>>>0<32);M=s+32|0;o[E>>2]=M;if((M|0)==128){Qi(S,l);T=S;T=fo(o[T>>2]|0,o[T+4>>2]|0,1024,0)|0;M=S;o[M>>2]=T;o[M+4>>2]=C;o[E>>2]=0}}if(!t){$i(S,r,n)|0;Zi(S,x)|0;zi(x);e=e+32|0;qi(e,x,u,O);f=R;return}_=o[E>>2]|0;if(_>>>0>128){$i(S,r,n)|0;Zi(S,x)|0;zi(x);e=e+32|0;qi(e,x,u,O);f=R;return}h=S+76|0;s=32;while(1){if(!((_|0)==0&s>>>0>127)){c=128-_|0;c=s>>>0<c>>>0?s:c;if(c){l=0;do{i[l+_+(S+76)>>0]=i[t+l>>0]|0;l=l+1|0;_=o[E>>2]|0}while(l>>>0<c>>>0)}M=_+c|0;o[E>>2]=M;t=t+c|0;s=s-c|0;if((M|0)==128){Qi(S,h);T=S;T=fo(o[T>>2]|0,o[T+4>>2]|0,1024,0)|0;M=S;o[M>>2]=T;o[M+4>>2]=C;o[E>>2]=0}}else{Qi(S,t);T=S;T=fo(o[T>>2]|0,o[T+4>>2]|0,1024,0)|0;M=S;o[M>>2]=T;o[M+4>>2]=C;s=s+-128|0;t=t+128|0}if(!s)break;_=o[E>>2]|0}$i(S,r,n)|0;Zi(S,x)|0;zi(x);e=e+32|0;qi(e,x,u,O);f=R;return}function nt(e,r,n){e=e|0;r=r|0;n=n|0;o[e+128>>2]=n;n=r;r=e+128|0;do{i[e>>0]=i[n>>0]|0;e=e+1|0;n=n+1|0}while((e|0)<(r|0));return}function it(e){e=e|0;return 132}function tt(e,r){e=e|0;r=r|0;r=tr(r,e,128)|0;return er(r,o[e+128>>2]|0)|0}function ot(e,r,n){e=e|0;r=r|0;n=n|0;return rr(or(r,n,e,128)|0,n,e+128|0)|0}function at(e){e=e|0;var r=0,n=0,i=0;i=e+128|0;r=(o[i>>2]|0)+1|0;o[i>>2]=r;if(r&16777215)if(!(r&65535))n=1;else n=(r&255|0)==0?2:3;else n=0;r=e+(n<<5)|0;i=3;while(1){Hr(r,32,33193+i|0,1,e+(i<<5)|0);if((i|0)>(n|0))i=i+-1|0;else break}return}function ut(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,a=0,u=0,s=0;u=e+128|0;n=o[u>>2]|0;s=0;do{i=(4-s<<3)+-8|0;a=-1<<i;i=(r>>>i)-(n>>>i)&255;if(!i){if(n>>>0>r>>>0){i=256;t=5}}else if(i>>>0>1)t=5;else t=6;if((t|0)==5){n=e+(s<<5)|0;t=33193+s|0;do{Hr(n,32,t,1,n);i=i+-1|0}while(i>>>0>1);t=6}if((t|0)==6){t=0;n=e+(s<<5)|0;i=3;while(1){Hr(n,32,33193+i|0,1,e+(i<<5)|0);if((i|0)>(s|0))i=i+-1|0;else break}n=a&r;o[u>>2]=n}s=s+1|0}while((s|0)!=4);return}function st(e){e=e|0;if(e>>>0>=15){e=33470;return e|0}e=o[32512+(e<<2)>>2]|0;return e|0}function _t(e){e=e|0;e=Po[o[680>>2]&3](32572,e)|0;return Ie((Io[o[169]&1](32572)|0)+e|0)|0}function lt(e,r){e=e|0;r=r|0;r=Po[o[680>>2]&3](32572,r)|0;r=(Io[o[169]&1](32572)|0)+r|0;return e+(Ie(r)|0)+(0-r)|0}function ft(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0,a=0,u=0,s=0;s=Po[o[680>>2]&3](32572,i)|0;a=(Io[o[169]&1](32572)|0)+s|0;t=Ie(a)|0;u=n+t+(0-a)|0;Lo[o[684>>2]&3](32572,e,r,u,i,u,s,u,a)|0;Le(u,a,n)|0;return t|0}function ct(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0;a=Pe(i)|0;if((a|0)==-1){if(!t){t=-1;return t|0}o[t>>2]=7;t=-1;return t|0}else{Ne(n,i,n)|0;i=a-(Io[o[169]&1](32572)|0)|0;a=Lo[o[692>>2]&3](32572,e,r,n,a,n,i,n,i)|0;if(!((t|0)!=0&(a|0)==-1)){t=a;return t|0}o[t>>2]=8;t=-1;return t|0}return 0}function ht(){return 304}function dt(e){e=e|0;xi(e,304);return e|0}function mt(e){e=e|0;xi(e,304);return 304}function pt(e){e=e|0;return st(o[e+300>>2]|0)|0}function bt(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,u=0,s=0,_=0;_=f;f=f+240|0;s=_;switch(Pe(n)|0){case-1:{o[e+300>>2]=7;s=-1;f=_;return s|0}case 229:{Ne(r,n,s)|0;do{if((i[s>>0]|0)==2){n=s+5|0;r=((a[s+2>>0]|a[s+1>>0]<<8)<<8|a[s+3>>0])<<8|a[s+4>>0];nt(e,n,r);nt(e+132|0,n,r);r=e+264|0;n=r;t=s+133|0;u=n+32|0;do{i[n>>0]=i[t>>0]|0;n=n+1|0;t=t+1|0}while((n|0)<(u|0));if(!(Nr(r,s,165,s+165|0)|0)){o[e+300>>2]=14;r=-1;break}else{o[e+296>>2]=1;r=0;break}}else{o[e+300>>2]=11;r=-1}}while(0);xi(s,229);s=r;f=_;return s|0}default:{o[e+300>>2]=11;s=-1;f=_;return s|0}}return 0}function wt(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,u=0;u=f;f=f+176|0;t=u;switch(Pe(n)|0){case-1:{o[e+300>>2]=7;t=-1;f=u;return t|0}case 165:{Ne(r,n,t)|0;if((i[t>>0]|0)==1){n=t+5|0;r=((a[t+2>>0]|a[t+1>>0]<<8)<<8|a[t+3>>0])<<8|a[t+4>>0];nt(e,n,r);nt(e+132|0,n,r);e=e+264|0;r=t+133|0;n=e+32|0;do{i[e>>0]=i[r>>0]|0;e=e+1|0;r=r+1|0}while((e|0)<(n|0));e=0}else{o[e+300>>2]=11;e=-1}xi(t,165);t=e;f=u;return t|0}default:{o[e+300>>2]=11;t=-1;f=u;return t|0}}return 0}function vt(e){e=e|0;var r=0,n=0;n=it(e)|0;r=it(e+132|0)|0;return _t(n+5+r+(Ye(e+264|0)|0)|0)|0}function kt(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0,u=0,s=0,_=0;_=it(e)|0;a=e+132|0;s=it(a)|0;u=e+264|0;s=_+5+s+(Ye(u)|0)|0;if((_t(s)|0)>>>0>t>>>0){o[e+300>>2]=2;_=-1;return _|0}else{_=Je(tt(a,tt(e,er(lt(i,s)|0,2)|0)|0)|0,u)|0;nr(_,o[e+296>>2]|0)|0;_=ft(r,n,i,s)|0;return _|0}return 0}function gt(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0,u=0,s=0,_=0;_=f;f=f+16|0;u=_;s=e+300|0;r=ct(r,n,i,t,s)|0;if((r|0)==-1){t=-1;f=_;return t|0}a=i+r|0;r=rr(i,a,u)|0;if(((o[u>>2]|0)+-1|0)>>>0>1){o[s>>2]=9;t=-1;f=_;return t|0}r=Xe(ot(e+132|0,ot(e,r,a)|0,a)|0,a,e+264|0)|0;n=e+296|0;if((o[u>>2]|0)==1)o[n>>2]=1;else r=ir(r,a,n)|0;if((a|0)==(r|0)){f=_;return t|0}o[s>>2]=10;t=-1;f=_;return t|0}function yt(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,a=0,u=0;a=f;f=f+32|0;t=a;n=Ne(r,n,r)|0;if((n|0)==-1){o[e+300>>2]=7;e=-1;f=a;return e|0}u=o[8124]|0;dr(r,n,Io[o[o[u>>2]>>2]&1](u)|0,64,t);do{if((i[t>>0]|0)==3)if(!(o[t+12>>2]|0)){o[e+300>>2]=4;n=-1;break}else{n=o[8124]|0;n=Po[o[(o[n>>2]|0)+12>>2]&3](n,o[t+16>>2]|0)|0;break}else{o[e+300>>2]=3;n=-1}}while(0);u=n;f=a;return u|0}function At(e,r,n,t,a,u){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;u=u|0;var s=0,_=0,l=0,c=0,h=0,d=0;d=f;f=f+160|0;l=d+132|0;h=d;n=Ne(r,n,r)|0;if((n|0)==-1){o[e+300>>2]=7;e=-1;f=d;return e|0}_=o[8124]|0;dr(r,n,Io[o[o[_>>2]>>2]&1](_)|0,64,l);e:do{if((i[l>>0]|0)==3){if(o[l+8>>2]|0?(c=l+12|0,o[c>>2]|0):0){if(u|0)o[u>>2]=o[l+4>>2];s=n+-64|0;if(!(Nr(e+264|0,r,s,r+s|0)|0)){o[e+300>>2]=14;n=-1;break}u=o[8124]|0;_=l+16|0;if((Po[o[(o[u>>2]|0)+12>>2]&3](u,o[_>>2]|0)|0)>>>0>a>>>0){o[e+300>>2]=2;n=-1;break}n=o[l+4>>2]|0;u=e+132|0;do{if((n-(o[e+260>>2]|0)|0)<=-1)if((n-(o[e+128>>2]|0)|0)<0){o[e+300>>2]=12;n=-1;break e}else{bo(h|0,e|0,132)|0;ut(h,n);break}else{ut(u,n);bo(h|0,u|0,132)|0}}while(0);n=o[8124]|0;n=Lo[o[(o[n>>2]|0)+16>>2]&3](n,h,128,r,s,o[c>>2]|0,o[_>>2]|0,t,a)|0;xi(h,132);if((n|0)==-1){o[e+300>>2]=5;n=-1;break}else{o[e+296>>2]=1;break}}o[e+300>>2]=4;n=-1}else{o[e+300>>2]=3;n=-1}}while(0);e=n;f=d;return e|0}function Tt(e){e=e|0;return Ie(32)|0}function Mt(e,r,n){e=e|0;r=r|0;n=n|0;if((Ie(32)|0)>>>0>n>>>0){o[e+300>>2]=2;e=-1;return e|0}else{e=Le(e+264|0,32,r)|0;return e|0}return 0}function Et(e){e=e|0;return o[e+128>>2]|0}function St(e){e=e|0;return o[e+296>>2]|0}function xt(e){e=e|0;return Ie(165)|0}function Ot(e,r,n,t){e=e|0;r=r|0;n=n|0;t=t|0;var a=0,u=0,s=0,_=0,l=0;l=f;f=f+144|0;_=l;a=Ie(165)|0;if(a>>>0>n>>>0){o[e+300>>2]=2;e=-1;f=l;return e|0}n=e+132|0;do{if((t-(o[e+260>>2]|0)|0)>-1){ut(n,t);bo(_|0,n|0,132)|0}else{if((t-(o[e+128>>2]|0)|0)>=0){bo(_|0,e|0,132)|0;ut(_,t);break}o[e+300>>2]=12;e=-1;f=l;return e|0}}while(0);s=r+a+-165|0;i[s>>0]=1;u=s+1|0;i[u>>0]=t>>>24;u=u+1|0;i[u>>0]=t>>>16;u=u+1|0;i[u>>0]=t>>>8;i[u+1>>0]=t;u=r+(a+-161)|0;a=r+(a+-160)|0;n=_;t=a+128|0;do{i[a>>0]=i[n>>0]|0;a=a+1|0;n=n+1|0}while((a|0)<(t|0));a=u+129|0;n=e+264|0;t=a+32|0;do{i[a>>0]=i[n>>0]|0;a=a+1|0;n=n+1|0}while((a|0)<(t|0));e=Le(s,165,r)|0;f=l;return e|0}function Rt(){return 232}function Ct(e){e=e|0;xi(e,232);return e|0}function It(e){e=e|0;xi(e,232);return 232}function Lt(e){e=e|0;return st(o[e+228>>2]|0)|0}function Pt(e){e=e|0;var r=0;r=(it(e)|0)+4|0;return _t(r+(Qe(e+132|0)|0)|0)|0}function Nt(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0,u=0;u=(it(e)|0)+4|0;a=e+132|0;u=u+(Qe(a)|0)|0;if((_t(u)|0)>>>0>t>>>0){o[e+228>>2]=2;e=-1;return e|0}else{Ze(tt(e,er(lt(i,u)|0,1)|0)|0,a)|0;e=ft(r,n,i,u)|0;return e|0}return 0}function Ut(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0,u=0,s=0;s=f;f=f+16|0;u=s;a=e+228|0;r=ct(r,n,i,t,a)|0;if((r|0)==-1){e=-1;f=s;return e|0}n=i+r|0;r=rr(i,n,u)|0;if((o[u>>2]|0)!=1){o[a>>2]=9;e=-1;f=s;return e|0}if((n|0)==($e(ot(e,r,n)|0,n,e+132|0)|0)){e=t;f=s;return e|0}o[a>>2]=10;e=-1;f=s;return e|0}function Ft(e){e=e|0;return 160}function zt(e,r,n){e=e|0;r=r|0;n=n|0;if(n>>>0<160){o[e+228>>2]=1;e=-1;return e|0}else{nt(e,r,0);Lr(r+128|0,e+132|0);xi(r,n);e=0;return e|0}return 0}function qt(e,r){e=e|0;r=r|0;var n=0;n=o[8124]|0;n=Po[o[(o[n>>2]|0)+4>>2]&3](n,r)|0;r=o[8124]|0;r=Io[o[o[r>>2]>>2]&1](r)|0;return Ie(cr(o[e+128>>2]|0,n,r,64)|0)|0}function Ht(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0,u=0,s=0,_=0,l=0,c=0;l=f;f=f+16|0;_=l;a=o[8124]|0;a=Po[o[(o[a>>2]|0)+4>>2]&3](a,n)|0;s=o[8124]|0;s=Io[o[o[s>>2]>>2]&1](s)|0;u=e+128|0;s=cr(o[u>>2]|0,a,s,64)|0;if((Ie(s)|0)>>>0>t>>>0){o[e+228>>2]=2;e=-1;f=l;return e|0}a=i+(Ie(s)|0)+(0-s)|0;c=o[8124]|0;c=Po[o[(o[c>>2]|0)+4>>2]&3](c,n)|0;t=o[8124]|0;t=Io[o[o[t>>2]>>2]&1](t)|0;t=(hr(3,o[u>>2]|0,c,a,_)|0)+t|0;u=o[8124]|0;if((Lo[o[(o[u>>2]|0)+8>>2]&3](u,e,128,r,n,o[_>>2]|0,c,a,t)|0)==-1){c=-1;f=l;return c|0}else{at(e);Pr(e+132|0,a,t,a+t|0);c=Le(a,s,i)|0;f=l;return c|0}return 0}function jt(e){e=e|0;return Ie(32)|0}function Dt(e,r,n){e=e|0;r=r|0;n=n|0;if((Ie(32)|0)>>>0>n>>>0){o[e+228>>2]=2;e=-1;return e|0}else{e=Le(e+132|0,32,r)|0;return e|0}return 0}function Vt(e){e=e|0;return o[e+128>>2]|0}function Bt(e){e=e|0;return Ie(229)|0}function Gt(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,a=0,u=0,s=0,_=0;t=Ie(229)|0;if(t>>>0>n>>>0){o[e+228>>2]=2;r=-1;return r|0}else{s=r+t+-229|0;i[s>>0]=2;a=o[e+128>>2]|0;_=s+1|0;i[_>>0]=a>>>24;_=_+1|0;i[_>>0]=a>>>16;_=_+1|0;i[_>>0]=a>>>8;i[_+1>>0]=a;_=r+(t+-225)|0;t=r+(t+-224)|0;a=e;u=t+128|0;do{i[t>>0]=i[a>>0]|0;t=t+1|0;a=a+1|0}while((t|0)<(u|0));n=e+132|0;t=_+129|0;a=n;u=t+32|0;do{i[t>>0]=i[a>>0]|0;t=t+1|0;a=a+1|0}while((t|0)<(u|0));e=_+161|0;Pr(n,s,e-s|0,e);r=Le(s,229,r)|0;return r|0}return 0}function Kt(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0;O=f;f=f+256|0;c=O;n=0;i=0;while(1){o[c+(n<<2)>>2]=(a[r+(i|1)>>0]|0)<<16|(a[r+i>>0]|0)<<24|(a[r+(i|2)>>0]|0)<<8|(a[r+(i|3)>>0]|0);n=n+1|0;if((n|0)==16)break;else i=i+4|0}r=o[c>>2]|0;n=16;do{x=o[c+(n+-2<<2)>>2]|0;S=r;r=o[c+(n+-15<<2)>>2]|0;o[c+(n<<2)>>2]=S+(o[c+(n+-7<<2)>>2]|0)+((x>>>19|x<<13)^x>>>10^(x>>>17|x<<15))+((r>>>18|r<<14)^r>>>3^(r>>>7|r<<25));n=n+1|0}while((n|0)!=64);m=e+80|0;p=o[m>>2]|0;b=e+84|0;w=o[b>>2]|0;v=e+88|0;k=o[v>>2]|0;g=e+92|0;y=o[g>>2]|0;A=e+96|0;T=o[A>>2]|0;M=e+100|0;E=o[M>>2]|0;S=e+104|0;x=o[S>>2]|0;h=e+108|0;d=o[h>>2]|0;l=p;s=w;u=k;i=y;e=T;n=E;r=x;t=d;_=0;while(1){t=((e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7))+t+(r&~e^n&e)+(o[32584+(_<<2)>>2]|0)+(o[c+(_<<2)>>2]|0)|0;i=t+i|0;t=((l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10))+(l&(s^u)^s&u)+t|0;_=_+1|0;if((_|0)==64){_=l;break}else{C=e;R=l;l=t;e=i;t=r;r=n;n=C;i=u;u=s;s=R}}o[m>>2]=p+t;o[b>>2]=w+_;o[v>>2]=k+s;o[g>>2]=y+u;o[A>>2]=T+i;o[M>>2]=E+e;o[S>>2]=x+n;o[h>>2]=d+r;f=O;return}function Wt(e){e=e|0;var r=0;o[e+64>>2]=0;r=e+72|0;o[r>>2]=0;o[r+4>>2]=0;o[e+80>>2]=1779033703;o[e+84>>2]=-1150833019;o[e+88>>2]=1013904242;o[e+92>>2]=-1521486534;o[e+96>>2]=1359893119;o[e+100>>2]=-1694144372;o[e+104>>2]=528734635;o[e+108>>2]=1541459225;return}function Yt(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,a=0,u=0,s=0,_=0;if(!n)return;a=e+64|0;u=e+72|0;t=o[a>>2]|0;s=0;do{i[e+t>>0]=i[r+s>>0]|0;t=(o[a>>2]|0)+1|0;o[a>>2]=t;if((t|0)==64){Kt(e,e);_=u;_=fo(o[_>>2]|0,o[_+4>>2]|0,512,0)|0;t=u;o[t>>2]=_;o[t+4>>2]=C;o[a>>2]=0;t=0}s=s+1|0}while((s|0)!=(n|0));return}function Jt(e,r){e=e|0;r=r|0;var n=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0;a=e+64|0;n=o[a>>2]|0;t=n+1|0;i[e+n>>0]=-128;if(n>>>0<56){if(t>>>0<56)ho(e+t|0,0,55-n|0)|0}else{if(t>>>0<64)ho(e+t|0,0,63-n|0)|0;Kt(e,e);n=e;t=n+56|0;do{o[n>>2]=0;n=n+4|0}while((n|0)<(t|0))}s=e+72|0;u=s;u=fo(o[a>>2]<<3|0,0,o[u>>2]|0,o[u+4>>2]|0)|0;a=C;o[s>>2]=u;o[s+4>>2]=a;i[e+63>>0]=u;s=mo(u|0,a|0,8)|0;i[e+62>>0]=s;s=mo(u|0,a|0,16)|0;i[e+61>>0]=s;s=mo(u|0,a|0,24)|0;i[e+60>>0]=s;i[e+59>>0]=a;s=mo(u|0,a|0,40)|0;i[e+58>>0]=s;s=mo(u|0,a|0,48)|0;i[e+57>>0]=s;a=mo(u|0,a|0,56)|0;i[e+56>>0]=a;Kt(e,e);a=e+80|0;u=e+84|0;s=e+88|0;_=e+92|0;l=e+96|0;f=e+100|0;c=e+104|0;n=e+108|0;t=0;do{e=24-(t<<3)|0;i[r+t>>0]=(o[a>>2]|0)>>>e;i[r+(t+4)>>0]=(o[u>>2]|0)>>>e;i[r+(t+8)>>0]=(o[s>>2]|0)>>>e;i[r+(t+12)>>0]=(o[_>>2]|0)>>>e;i[r+(t+16)>>0]=(o[l>>2]|0)>>>e;i[r+(t+20)>>0]=(o[f>>2]|0)>>>e;i[r+(t+24)>>0]=(o[c>>2]|0)>>>e;i[r+(t+28)>>0]=(o[n>>2]|0)>>>e;t=t+1|0}while((t|0)!=4);return}function Xt(e,r,n,t){e=e|0;r=r|0;n=n|0;t=t|0;var u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0;F=f;f=f+16|0;U=F;S=U+4|0;P=U+8|0;H=i[e+3>>0]|0;N=U+12|0;p=i[e+4>>0]|0;g=U+1|0;d=i[e+5>>0]|0;y=U+5|0;q=i[e+6>>0]|0;A=U+9|0;z=i[e+7>>0]|0;T=U+13|0;k=i[e+8>>0]|0;M=U+2|0;u=i[e+9>>0]|0;E=U+6|0;b=i[e+10>>0]|0;x=U+10|0;v=i[e+11>>0]|0;O=U+14|0;_=i[e+12>>0]|0;R=U+3|0;w=i[e+13>>0]|0;C=U+7|0;m=i[e+14>>0]|0;I=U+11|0;h=i[e+15>>0]|0;L=U+15|0;l=o[n>>2]|0;c=(a[e>>0]|0)^l>>>24;s=(a[e+1>>0]|0)^l>>>16;i[P>>0]=(a[e+2>>0]|0)^l>>>8;i[N>>0]=H&255^l;l=o[n+4>>2]|0;p=p&255^l>>>24;d=d&255^l>>>16;i[A>>0]=q&255^l>>>8;i[T>>0]=z&255^l;l=o[n+8>>2]|0;k=k&255^l>>>24;u=u&255^l>>>16;b=b&255^l>>>8;i[O>>0]=v&255^l;l=o[n+12>>2]|0;_=_&255^l>>>24;e=w&255^l>>>16;m=m&255^l>>>8;l=h&255^l;i[U>>0]=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;i[g>>0]=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;i[M>>0]=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;i[R>>0]=i[(_&15)+(33491+(_>>>4<<4))>>0]|0;s=i[(s&15)+(33491+((s>>>4&15)<<4))>>0]|0;u=i[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;e=i[(e&15)+(33491+((e>>>4&15)<<4))>>0]|0;_=a[P>>0]|0;_=i[(_&15)+(33491+(_>>>4<<4))>>0]|0;k=a[A>>0]|0;k=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;b=i[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;m=i[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;p=a[N>>0]|0;p=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;c=a[T>>0]|0;c=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;h=a[O>>0]|0;h=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;l=i[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;i[S>>0]=i[(d&15)+(33491+((d>>>4&15)<<4))>>0]|0;i[y>>0]=u;i[E>>0]=e;i[C>>0]=s;i[P>>0]=b;i[x>>0]=_;i[A>>0]=m;i[I>>0]=k;i[N>>0]=l;i[L>>0]=h;i[O>>0]=c;i[T>>0]=p;Qt(U);p=o[n+16>>2]|0;c=(a[U>>0]|0)^p>>>24;i[S>>0]=(a[S>>0]|0)^p>>>16;i[P>>0]=(a[P>>0]|0)^p>>>8;i[N>>0]=(a[N>>0]|0)^p;p=o[n+20>>2]|0;h=(a[g>>0]|0)^p>>>24;l=(a[y>>0]|0)^p>>>16;i[A>>0]=(a[A>>0]|0)^p>>>8;i[T>>0]=(a[T>>0]|0)^p;p=o[n+24>>2]|0;k=(a[M>>0]|0)^p>>>24;m=(a[E>>0]|0)^p>>>16;_=(a[x>>0]|0)^p>>>8;i[O>>0]=(a[O>>0]|0)^p;p=o[n+28>>2]|0;b=(a[R>>0]|0)^p>>>24;s=(a[C>>0]|0)^p>>>16;e=(a[I>>0]|0)^p>>>8;p=(a[L>>0]|0)^p;i[U>>0]=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;i[g>>0]=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;i[M>>0]=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;i[R>>0]=i[(b&15)+(33491+(b>>>4<<4))>>0]|0;b=a[S>>0]|0;b=i[(b&15)+(33491+(b>>>4<<4))>>0]|0;m=i[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;s=i[(s&15)+(33491+((s>>>4&15)<<4))>>0]|0;k=a[P>>0]|0;k=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;h=a[A>>0]|0;h=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;_=i[(_&15)+(33491+((_>>>4&15)<<4))>>0]|0;e=i[(e&15)+(33491+((e>>>4&15)<<4))>>0]|0;c=a[N>>0]|0;c=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;u=a[T>>0]|0;u=i[(u&15)+(33491+(u>>>4<<4))>>0]|0;d=a[O>>0]|0;d=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;p=i[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;i[S>>0]=i[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;i[y>>0]=m;i[E>>0]=s;i[C>>0]=b;i[P>>0]=_;i[x>>0]=k;i[A>>0]=e;i[I>>0]=h;i[N>>0]=p;i[L>>0]=d;i[O>>0]=u;i[T>>0]=c;Qt(U);c=o[n+32>>2]|0;u=(a[U>>0]|0)^c>>>24;i[S>>0]=(a[S>>0]|0)^c>>>16;i[P>>0]=(a[P>>0]|0)^c>>>8;i[N>>0]=(a[N>>0]|0)^c;c=o[n+36>>2]|0;d=(a[g>>0]|0)^c>>>24;p=(a[y>>0]|0)^c>>>16;i[A>>0]=(a[A>>0]|0)^c>>>8;i[T>>0]=(a[T>>0]|0)^c;c=o[n+40>>2]|0;h=(a[M>>0]|0)^c>>>24;e=(a[E>>0]|0)^c>>>16;k=(a[x>>0]|0)^c>>>8;i[O>>0]=(a[O>>0]|0)^c;c=o[n+44>>2]|0;_=(a[R>>0]|0)^c>>>24;b=(a[C>>0]|0)^c>>>16;s=(a[I>>0]|0)^c>>>8;c=(a[L>>0]|0)^c;i[U>>0]=i[(u&15)+(33491+(u>>>4<<4))>>0]|0;i[g>>0]=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;i[M>>0]=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;i[R>>0]=i[(_&15)+(33491+(_>>>4<<4))>>0]|0;_=a[S>>0]|0;_=i[(_&15)+(33491+(_>>>4<<4))>>0]|0;e=i[(e&15)+(33491+((e>>>4&15)<<4))>>0]|0;b=i[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;h=a[P>>0]|0;h=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;d=a[A>>0]|0;d=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;k=i[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;s=i[(s&15)+(33491+((s>>>4&15)<<4))>>0]|0;u=a[N>>0]|0;u=i[(u&15)+(33491+(u>>>4<<4))>>0]|0;m=a[T>>0]|0;m=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;l=a[O>>0]|0;l=i[(l&15)+(33491+(l>>>4<<4))>>0]|0;c=i[(c&15)+(33491+((c>>>4&15)<<4))>>0]|0;i[S>>0]=i[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;i[y>>0]=e;i[E>>0]=b;i[C>>0]=_;i[P>>0]=k;i[x>>0]=h;i[A>>0]=s;i[I>>0]=d;i[N>>0]=c;i[L>>0]=l;i[O>>0]=m;i[T>>0]=u;Qt(U);u=o[n+48>>2]|0;m=(a[U>>0]|0)^u>>>24;i[S>>0]=(a[S>>0]|0)^u>>>16;i[P>>0]=(a[P>>0]|0)^u>>>8;i[N>>0]=(a[N>>0]|0)^u;u=o[n+52>>2]|0;l=(a[g>>0]|0)^u>>>24;c=(a[y>>0]|0)^u>>>16;i[A>>0]=(a[A>>0]|0)^u>>>8;i[T>>0]=(a[T>>0]|0)^u;u=o[n+56>>2]|0;d=(a[M>>0]|0)^u>>>24;s=(a[E>>0]|0)^u>>>16;h=(a[x>>0]|0)^u>>>8;i[O>>0]=(a[O>>0]|0)^u;u=o[n+60>>2]|0;k=(a[R>>0]|0)^u>>>24;_=(a[C>>0]|0)^u>>>16;b=(a[I>>0]|0)^u>>>8;u=(a[L>>0]|0)^u;i[U>>0]=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;i[g>>0]=i[(l&15)+(33491+(l>>>4<<4))>>0]|0;i[M>>0]=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;i[R>>0]=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;k=a[S>>0]|0;k=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;s=i[(s&15)+(33491+((s>>>4&15)<<4))>>0]|0;_=i[(_&15)+(33491+((_>>>4&15)<<4))>>0]|0;d=a[P>>0]|0;d=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;l=a[A>>0]|0;l=i[(l&15)+(33491+(l>>>4<<4))>>0]|0;h=i[(h&15)+(33491+((h>>>4&15)<<4))>>0]|0;b=i[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;m=a[N>>0]|0;m=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;e=a[T>>0]|0;e=i[(e&15)+(33491+(e>>>4<<4))>>0]|0;p=a[O>>0]|0;p=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;u=i[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;i[S>>0]=i[(c&15)+(33491+((c>>>4&15)<<4))>>0]|0;i[y>>0]=s;i[E>>0]=_;i[C>>0]=k;i[P>>0]=h;i[x>>0]=d;i[A>>0]=b;i[I>>0]=l;i[N>>0]=u;i[L>>0]=p;i[O>>0]=e;i[T>>0]=m;Qt(U);m=o[n+64>>2]|0;e=(a[U>>0]|0)^m>>>24;i[S>>0]=(a[S>>0]|0)^m>>>16;i[P>>0]=(a[P>>0]|0)^m>>>8;i[N>>0]=(a[N>>0]|0)^m;m=o[n+68>>2]|0;p=(a[g>>0]|0)^m>>>24;u=(a[y>>0]|0)^m>>>16;i[A>>0]=(a[A>>0]|0)^m>>>8;i[T>>0]=(a[T>>0]|0)^m;m=o[n+72>>2]|0;l=(a[M>>0]|0)^m>>>24;b=(a[E>>0]|0)^m>>>16;d=(a[x>>0]|0)^m>>>8;i[O>>0]=(a[O>>0]|0)^m;m=o[n+76>>2]|0;h=(a[R>>0]|0)^m>>>24;k=(a[C>>0]|0)^m>>>16;_=(a[I>>0]|0)^m>>>8;m=(a[L>>0]|0)^m;i[U>>0]=i[(e&15)+(33491+(e>>>4<<4))>>0]|0;i[g>>0]=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;i[M>>0]=i[(l&15)+(33491+(l>>>4<<4))>>0]|0;i[R>>0]=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;h=a[S>>0]|0;h=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;b=i[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;k=i[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;l=a[P>>0]|0;l=i[(l&15)+(33491+(l>>>4<<4))>>0]|0;p=a[A>>0]|0;p=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;d=i[(d&15)+(33491+((d>>>4&15)<<4))>>0]|0;_=i[(_&15)+(33491+((_>>>4&15)<<4))>>0]|0;e=a[N>>0]|0;e=i[(e&15)+(33491+(e>>>4<<4))>>0]|0;s=a[T>>0]|0;s=i[(s&15)+(33491+(s>>>4<<4))>>0]|0;c=a[O>>0]|0;c=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;m=i[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;i[S>>0]=i[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;i[y>>0]=b;i[E>>0]=k;i[C>>0]=h;i[P>>0]=d;i[x>>0]=l;i[A>>0]=_;i[I>>0]=p;i[N>>0]=m;i[L>>0]=c;i[O>>0]=s;i[T>>0]=e;Qt(U);e=o[n+80>>2]|0;s=(a[U>>0]|0)^e>>>24;i[S>>0]=(a[S>>0]|0)^e>>>16;i[P>>0]=(a[P>>0]|0)^e>>>8;i[N>>0]=(a[N>>0]|0)^e;e=o[n+84>>2]|0;c=(a[g>>0]|0)^e>>>24;m=(a[y>>0]|0)^e>>>16;i[A>>0]=(a[A>>0]|0)^e>>>8;i[T>>0]=(a[T>>0]|0)^e;e=o[n+88>>2]|0;p=(a[M>>0]|0)^e>>>24;_=(a[E>>0]|0)^e>>>16;l=(a[x>>0]|0)^e>>>8;i[O>>0]=(a[O>>0]|0)^e;e=o[n+92>>2]|0;d=(a[R>>0]|0)^e>>>24;h=(a[C>>0]|0)^e>>>16;k=(a[I>>0]|0)^e>>>8;e=(a[L>>0]|0)^e;i[U>>0]=i[(s&15)+(33491+(s>>>4<<4))>>0]|0;i[g>>0]=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;i[M>>0]=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;i[R>>0]=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;d=a[S>>0]|0;d=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;_=i[(_&15)+(33491+((_>>>4&15)<<4))>>0]|0;h=i[(h&15)+(33491+((h>>>4&15)<<4))>>0]|0;p=a[P>>0]|0;p=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;c=a[A>>0]|0;c=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;l=i[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;k=i[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;s=a[N>>0]|0;s=i[(s&15)+(33491+(s>>>4<<4))>>0]|0;b=a[T>>0]|0;b=i[(b&15)+(33491+(b>>>4<<4))>>0]|0;u=a[O>>0]|0;u=i[(u&15)+(33491+(u>>>4<<4))>>0]|0;e=i[(e&15)+(33491+((e>>>4&15)<<4))>>0]|0;i[S>>0]=i[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;i[y>>0]=_;i[E>>0]=h;i[C>>0]=d;i[P>>0]=l;i[x>>0]=p;i[A>>0]=k;i[I>>0]=c;i[N>>0]=e;i[L>>0]=u;i[O>>0]=b;i[T>>0]=s;Qt(U);s=o[n+96>>2]|0;b=(a[U>>0]|0)^s>>>24;i[S>>0]=(a[S>>0]|0)^s>>>16;i[P>>0]=(a[P>>0]|0)^s>>>8;i[N>>0]=(a[N>>0]|0)^s;s=o[n+100>>2]|0;u=(a[g>>0]|0)^s>>>24;e=(a[y>>0]|0)^s>>>16;i[A>>0]=(a[A>>0]|0)^s>>>8;i[T>>0]=(a[T>>0]|0)^s;s=o[n+104>>2]|0;c=(a[M>>0]|0)^s>>>24;k=(a[E>>0]|0)^s>>>16;p=(a[x>>0]|0)^s>>>8;i[O>>0]=(a[O>>0]|0)^s;s=o[n+108>>2]|0;l=(a[R>>0]|0)^s>>>24;d=(a[C>>0]|0)^s>>>16;h=(a[I>>0]|0)^s>>>8;s=(a[L>>0]|0)^s;i[U>>0]=i[(b&15)+(33491+(b>>>4<<4))>>0]|0;i[g>>0]=i[(u&15)+(33491+(u>>>4<<4))>>0]|0;i[M>>0]=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;i[R>>0]=i[(l&15)+(33491+(l>>>4<<4))>>0]|0;l=a[S>>0]|0;l=i[(l&15)+(33491+(l>>>4<<4))>>0]|0;k=i[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;d=i[(d&15)+(33491+((d>>>4&15)<<4))>>0]|0;c=a[P>>0]|0;c=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;u=a[A>>0]|0;u=i[(u&15)+(33491+(u>>>4<<4))>>0]|0;p=i[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;h=i[(h&15)+(33491+((h>>>4&15)<<4))>>0]|0;b=a[N>>0]|0;b=i[(b&15)+(33491+(b>>>4<<4))>>0]|0;_=a[T>>0]|0;_=i[(_&15)+(33491+(_>>>4<<4))>>0]|0;m=a[O>>0]|0;m=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;s=i[(s&15)+(33491+((s>>>4&15)<<4))>>0]|0;i[S>>0]=i[(e&15)+(33491+((e>>>4&15)<<4))>>0]|0;i[y>>0]=k;i[E>>0]=d;i[C>>0]=l;i[P>>0]=p;i[x>>0]=c;i[A>>0]=h;i[I>>0]=u;i[N>>0]=s;i[L>>0]=m;i[O>>0]=_;i[T>>0]=b;Qt(U);b=o[n+112>>2]|0;_=(a[U>>0]|0)^b>>>24;i[S>>0]=(a[S>>0]|0)^b>>>16;i[P>>0]=(a[P>>0]|0)^b>>>8;i[N>>0]=(a[N>>0]|0)^b;b=o[n+116>>2]|0;m=(a[g>>0]|0)^b>>>24;s=(a[y>>0]|0)^b>>>16;i[A>>0]=(a[A>>0]|0)^b>>>8;i[T>>0]=(a[T>>0]|0)^b;b=o[n+120>>2]|0;u=(a[M>>0]|0)^b>>>24;h=(a[E>>0]|0)^b>>>16;c=(a[x>>0]|0)^b>>>8;i[O>>0]=(a[O>>0]|0)^b;b=o[n+124>>2]|0;p=(a[R>>0]|0)^b>>>24;l=(a[C>>0]|0)^b>>>16;d=(a[I>>0]|0)^b>>>8;b=(a[L>>0]|0)^b;i[U>>0]=i[(_&15)+(33491+(_>>>4<<4))>>0]|0;i[g>>0]=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;i[M>>0]=i[(u&15)+(33491+(u>>>4<<4))>>0]|0;i[R>>0]=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;p=a[S>>0]|0;p=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;h=i[(h&15)+(33491+((h>>>4&15)<<4))>>0]|0;l=i[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;u=a[P>>0]|0;u=i[(u&15)+(33491+(u>>>4<<4))>>0]|0;m=a[A>>0]|0;m=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;c=i[(c&15)+(33491+((c>>>4&15)<<4))>>0]|0;d=i[(d&15)+(33491+((d>>>4&15)<<4))>>0]|0;_=a[N>>0]|0;_=i[(_&15)+(33491+(_>>>4<<4))>>0]|0;k=a[T>>0]|0;k=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;e=a[O>>0]|0;e=i[(e&15)+(33491+(e>>>4<<4))>>0]|0;b=i[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;i[S>>0]=i[(s&15)+(33491+((s>>>4&15)<<4))>>0]|0;i[y>>0]=h;i[E>>0]=l;i[C>>0]=p;i[P>>0]=c;i[x>>0]=u;i[A>>0]=d;i[I>>0]=m;i[N>>0]=b;i[L>>0]=e;i[O>>0]=k;i[T>>0]=_;Qt(U);_=o[n+128>>2]|0;k=(a[U>>0]|0)^_>>>24;i[S>>0]=(a[S>>0]|0)^_>>>16;i[P>>0]=(a[P>>0]|0)^_>>>8;i[N>>0]=(a[N>>0]|0)^_;_=o[n+132>>2]|0;e=(a[g>>0]|0)^_>>>24;b=(a[y>>0]|0)^_>>>16;i[A>>0]=(a[A>>0]|0)^_>>>8;i[T>>0]=(a[T>>0]|0)^_;_=o[n+136>>2]|0;m=(a[M>>0]|0)^_>>>24;d=(a[E>>0]|0)^_>>>16;u=(a[x>>0]|0)^_>>>8;i[O>>0]=(a[O>>0]|0)^_;_=o[n+140>>2]|0;c=(a[R>>0]|0)^_>>>24;p=(a[C>>0]|0)^_>>>16;l=(a[I>>0]|0)^_>>>8;_=(a[L>>0]|0)^_;i[U>>0]=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;i[g>>0]=i[(e&15)+(33491+(e>>>4<<4))>>0]|0;i[M>>0]=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;i[R>>0]=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;c=a[S>>0]|0;c=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;d=i[(d&15)+(33491+((d>>>4&15)<<4))>>0]|0;p=i[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;m=a[P>>0]|0;m=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;e=a[A>>0]|0;e=i[(e&15)+(33491+(e>>>4<<4))>>0]|0;u=i[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;l=i[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;k=a[N>>0]|0;k=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;h=a[T>>0]|0;h=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;s=a[O>>0]|0;s=i[(s&15)+(33491+(s>>>4<<4))>>0]|0;_=i[(_&15)+(33491+((_>>>4&15)<<4))>>0]|0;i[S>>0]=i[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;i[y>>0]=d;i[E>>0]=p;i[C>>0]=c;i[P>>0]=u;i[x>>0]=m;i[A>>0]=l;i[I>>0]=e;i[N>>0]=_;i[L>>0]=s;i[O>>0]=h;i[T>>0]=k;Qt(U);k=o[n+144>>2]|0;h=(a[U>>0]|0)^k>>>24;i[S>>0]=(a[S>>0]|0)^k>>>16;i[P>>0]=(a[P>>0]|0)^k>>>8;i[N>>0]=(a[N>>0]|0)^k;k=o[n+148>>2]|0;s=(a[g>>0]|0)^k>>>24;_=(a[y>>0]|0)^k>>>16;i[A>>0]=(a[A>>0]|0)^k>>>8;i[T>>0]=(a[T>>0]|0)^k;k=o[n+152>>2]|0;e=(a[M>>0]|0)^k>>>24;l=(a[E>>0]|0)^k>>>16;m=(a[x>>0]|0)^k>>>8;i[O>>0]=(a[O>>0]|0)^k;k=o[n+156>>2]|0;u=(a[R>>0]|0)^k>>>24;c=(a[C>>0]|0)^k>>>16;p=(a[I>>0]|0)^k>>>8;k=(a[L>>0]|0)^k;i[U>>0]=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;i[g>>0]=i[(s&15)+(33491+(s>>>4<<4))>>0]|0;e=i[(e&15)+(33491+(e>>>4<<4))>>0]|0;i[M>>0]=e;u=i[(u&15)+(33491+(u>>>4<<4))>>0]|0;i[R>>0]=u;s=a[S>>0]|0;s=i[(s&15)+(33491+(s>>>4<<4))>>0]|0;_=i[(_&15)+(33491+((_>>>4&15)<<4))>>0]|0;l=i[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;c=i[(c&15)+(33491+((c>>>4&15)<<4))>>0]|0;h=a[P>>0]|0;h=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;d=a[A>>0]|0;d=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;m=i[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;p=i[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;b=a[N>>0]|0;b=i[(b&15)+(33491+(b>>>4<<4))>>0]|0;w=a[T>>0]|0;w=i[(w&15)+(33491+(w>>>4<<4))>>0]|0;v=a[O>>0]|0;v=i[(v&15)+(33491+(v>>>4<<4))>>0]|0;k=i[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;i[S>>0]=_;i[y>>0]=l;i[E>>0]=c;i[C>>0]=s;i[P>>0]=m;i[x>>0]=h;i[A>>0]=p;i[I>>0]=d;i[N>>0]=k;i[L>>0]=v;i[O>>0]=w;i[T>>0]=b;if((t|0)==128){q=o[n+160>>2]|0;H=((a[U>>0]|0)^q>>>24)&255;i[U>>0]=H;_=(_&255^q>>>16)&255;i[S>>0]=_;S=(m&255^q>>>8)&255;i[P>>0]=S;m=(k&255^q)&255;i[N>>0]=m;q=o[n+164>>2]|0;k=((a[g>>0]|0)^q>>>24)&255;i[g>>0]=k;g=(l&255^q>>>16)&255;i[y>>0]=g;y=(p&255^q>>>8)&255;i[A>>0]=y;A=(b&255^q)&255;i[T>>0]=A;q=o[n+168>>2]|0;T=(e&255^q>>>24)&255;i[M>>0]=T;P=(c&255^q>>>16)&255;i[E>>0]=P;N=(h&255^q>>>8)&255;i[x>>0]=N;M=(w&255^q)&255;i[O>>0]=M;q=o[n+172>>2]|0;t=(u&255^q>>>24)&255;i[R>>0]=t;U=(s&255^q>>>16)&255;i[C>>0]=U;z=(d&255^q>>>8)&255;i[I>>0]=z;q=(v&255^q)&255;i[L>>0]=q;E=_;x=m;O=k;R=g;C=y;I=A;L=T;n=M;i[r>>0]=H;H=r+1|0;i[H>>0]=E;H=r+2|0;i[H>>0]=S;H=r+3|0;i[H>>0]=x;H=r+4|0;i[H>>0]=O;H=r+5|0;i[H>>0]=R;H=r+6|0;i[H>>0]=C;H=r+7|0;i[H>>0]=I;H=r+8|0;i[H>>0]=L;H=r+9|0;i[H>>0]=P;H=r+10|0;i[H>>0]=N;H=r+11|0;i[H>>0]=n;H=r+12|0;i[H>>0]=t;H=r+13|0;i[H>>0]=U;H=r+14|0;i[H>>0]=z;H=r+15|0;i[H>>0]=q;f=F;return}Qt(U);_=o[n+160>>2]|0;k=(a[U>>0]|0)^_>>>24;i[S>>0]=(a[S>>0]|0)^_>>>16;i[P>>0]=(a[P>>0]|0)^_>>>8;i[N>>0]=(a[N>>0]|0)^_;_=o[n+164>>2]|0;e=(a[g>>0]|0)^_>>>24;b=(a[y>>0]|0)^_>>>16;i[A>>0]=(a[A>>0]|0)^_>>>8;i[T>>0]=(a[T>>0]|0)^_;_=o[n+168>>2]|0;m=(a[M>>0]|0)^_>>>24;d=(a[E>>0]|0)^_>>>16;u=(a[x>>0]|0)^_>>>8;i[O>>0]=(a[O>>0]|0)^_;_=o[n+172>>2]|0;c=(a[R>>0]|0)^_>>>24;p=(a[C>>0]|0)^_>>>16;l=(a[I>>0]|0)^_>>>8;_=(a[L>>0]|0)^_;i[U>>0]=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;i[g>>0]=i[(e&15)+(33491+(e>>>4<<4))>>0]|0;i[M>>0]=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;i[R>>0]=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;c=a[S>>0]|0;c=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;d=i[(d&15)+(33491+((d>>>4&15)<<4))>>0]|0;p=i[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;m=a[P>>0]|0;m=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;e=a[A>>0]|0;e=i[(e&15)+(33491+(e>>>4<<4))>>0]|0;u=i[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;l=i[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;k=a[N>>0]|0;k=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;h=a[T>>0]|0;h=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;s=a[O>>0]|0;s=i[(s&15)+(33491+(s>>>4<<4))>>0]|0;_=i[(_&15)+(33491+((_>>>4&15)<<4))>>0]|0;i[S>>0]=i[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;i[y>>0]=d;i[E>>0]=p;i[C>>0]=c;i[P>>0]=u;i[x>>0]=m;i[A>>0]=l;i[I>>0]=e;i[N>>0]=_;i[L>>0]=s;i[O>>0]=h;i[T>>0]=k;Qt(U);k=o[n+176>>2]|0;h=(a[U>>0]|0)^k>>>24;i[S>>0]=(a[S>>0]|0)^k>>>16;i[P>>0]=(a[P>>0]|0)^k>>>8;i[N>>0]=(a[N>>0]|0)^k;k=o[n+180>>2]|0;s=(a[g>>0]|0)^k>>>24;_=(a[y>>0]|0)^k>>>16;i[A>>0]=(a[A>>0]|0)^k>>>8;i[T>>0]=(a[T>>0]|0)^k;k=o[n+184>>2]|0;e=(a[M>>0]|0)^k>>>24;l=(a[E>>0]|0)^k>>>16;m=(a[x>>0]|0)^k>>>8;i[O>>0]=(a[O>>0]|0)^k;k=o[n+188>>2]|0;u=(a[R>>0]|0)^k>>>24;c=(a[C>>0]|0)^k>>>16;p=(a[I>>0]|0)^k>>>8;k=(a[L>>0]|0)^k;i[U>>0]=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;i[g>>0]=i[(s&15)+(33491+(s>>>4<<4))>>0]|0;e=i[(e&15)+(33491+(e>>>4<<4))>>0]|0;i[M>>0]=e;u=i[(u&15)+(33491+(u>>>4<<4))>>0]|0;i[R>>0]=u;s=a[S>>0]|0;s=i[(s&15)+(33491+(s>>>4<<4))>>0]|0;_=i[(_&15)+(33491+((_>>>4&15)<<4))>>0]|0;l=i[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;c=i[(c&15)+(33491+((c>>>4&15)<<4))>>0]|0;h=a[P>>0]|0;h=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;d=a[A>>0]|0;d=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;m=i[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;p=i[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;b=a[N>>0]|0;b=i[(b&15)+(33491+(b>>>4<<4))>>0]|0;w=a[T>>0]|0;w=i[(w&15)+(33491+(w>>>4<<4))>>0]|0;v=a[O>>0]|0;v=i[(v&15)+(33491+(v>>>4<<4))>>0]|0;k=i[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;i[S>>0]=_;i[y>>0]=l;i[E>>0]=c;i[C>>0]=s;i[P>>0]=m;i[x>>0]=h;i[A>>0]=p;i[I>>0]=d;i[N>>0]=k;i[L>>0]=v;i[O>>0]=w;i[T>>0]=b;if((t|0)==192){q=o[n+192>>2]|0;H=((a[U>>0]|0)^q>>>24)&255;i[U>>0]=H;_=(_&255^q>>>16)&255;i[S>>0]=_;S=(m&255^q>>>8)&255;i[P>>0]=S;m=(k&255^q)&255;i[N>>0]=m;q=o[n+196>>2]|0;k=((a[g>>0]|0)^q>>>24)&255;i[g>>0]=k;g=(l&255^q>>>16)&255;i[y>>0]=g;y=(p&255^q>>>8)&255;i[A>>0]=y;A=(b&255^q)&255;i[T>>0]=A;q=o[n+200>>2]|0;T=(e&255^q>>>24)&255;i[M>>0]=T;P=(c&255^q>>>16)&255;i[E>>0]=P;N=(h&255^q>>>8)&255;i[x>>0]=N;M=(w&255^q)&255;i[O>>0]=M;q=o[n+204>>2]|0;t=(u&255^q>>>24)&255;i[R>>0]=t;U=(s&255^q>>>16)&255;i[C>>0]=U;z=(d&255^q>>>8)&255;i[I>>0]=z;q=(v&255^q)&255;i[L>>0]=q;E=_;x=m;O=k;R=g;C=y;I=A;L=T;n=M;i[r>>0]=H;H=r+1|0;i[H>>0]=E;H=r+2|0;i[H>>0]=S;H=r+3|0;i[H>>0]=x;H=r+4|0;i[H>>0]=O;H=r+5|0;i[H>>0]=R;H=r+6|0;i[H>>0]=C;H=r+7|0;i[H>>0]=I;H=r+8|0;i[H>>0]=L;H=r+9|0;i[H>>0]=P;H=r+10|0;i[H>>0]=N;H=r+11|0;i[H>>0]=n;H=r+12|0;i[H>>0]=t;H=r+13|0;i[H>>0]=U;H=r+14|0;i[H>>0]=z;H=r+15|0;i[H>>0]=q;f=F;return}else{Qt(U);w=o[n+192>>2]|0;q=(a[U>>0]|0)^w>>>24;i[S>>0]=(a[S>>0]|0)^w>>>16;i[P>>0]=(a[P>>0]|0)^w>>>8;i[N>>0]=(a[N>>0]|0)^w;w=o[n+196>>2]|0;m=(a[g>>0]|0)^w>>>24;b=(a[y>>0]|0)^w>>>16;i[A>>0]=(a[A>>0]|0)^w>>>8;i[T>>0]=(a[T>>0]|0)^w;w=o[n+200>>2]|0;k=(a[M>>0]|0)^w>>>24;t=(a[E>>0]|0)^w>>>16;p=(a[x>>0]|0)^w>>>8;i[O>>0]=(a[O>>0]|0)^w;w=o[n+204>>2]|0;d=(a[R>>0]|0)^w>>>24;c=(a[C>>0]|0)^w>>>16;l=(a[I>>0]|0)^w>>>8;w=(a[L>>0]|0)^w;i[U>>0]=i[(q&15)+(33491+(q>>>4<<4))>>0]|0;i[g>>0]=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;i[M>>0]=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;i[R>>0]=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;d=a[S>>0]|0;d=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;t=i[(t&15)+(33491+((t>>>4&15)<<4))>>0]|0;c=i[(c&15)+(33491+((c>>>4&15)<<4))>>0]|0;k=a[P>>0]|0;k=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;m=a[A>>0]|0;m=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;p=i[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;l=i[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;q=a[N>>0]|0;q=i[(q&15)+(33491+(q>>>4<<4))>>0]|0;h=a[T>>0]|0;h=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;z=a[O>>0]|0;z=i[(z&15)+(33491+(z>>>4<<4))>>0]|0;w=i[(w&15)+(33491+((w>>>4&15)<<4))>>0]|0;i[S>>0]=i[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;i[y>>0]=t;i[E>>0]=c;i[C>>0]=d;i[P>>0]=p;i[x>>0]=k;i[A>>0]=l;i[I>>0]=m;i[N>>0]=w;i[L>>0]=z;i[O>>0]=h;i[T>>0]=q;Qt(U);q=o[n+208>>2]|0;h=(a[U>>0]|0)^q>>>24;i[S>>0]=(a[S>>0]|0)^q>>>16;i[P>>0]=(a[P>>0]|0)^q>>>8;i[N>>0]=(a[N>>0]|0)^q;q=o[n+212>>2]|0;z=(a[g>>0]|0)^q>>>24;w=(a[y>>0]|0)^q>>>16;i[A>>0]=(a[A>>0]|0)^q>>>8;i[T>>0]=(a[T>>0]|0)^q;q=o[n+216>>2]|0;m=(a[M>>0]|0)^q>>>24;l=(a[E>>0]|0)^q>>>16;k=(a[x>>0]|0)^q>>>8;i[O>>0]=(a[O>>0]|0)^q;q=o[n+220>>2]|0;p=(a[R>>0]|0)^q>>>24;d=(a[C>>0]|0)^q>>>16;c=(a[I>>0]|0)^q>>>8;q=(a[L>>0]|0)^q;i[U>>0]=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;i[g>>0]=i[(z&15)+(33491+(z>>>4<<4))>>0]|0;i[M>>0]=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;i[R>>0]=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;p=a[S>>0]|0;p=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;w=i[(w&15)+(33491+((w>>>4&15)<<4))>>0]|0;l=i[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;d=i[(d&15)+(33491+((d>>>4&15)<<4))>>0]|0;m=a[P>>0]|0;m=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;z=a[A>>0]|0;z=i[(z&15)+(33491+(z>>>4<<4))>>0]|0;k=i[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;c=i[(c&15)+(33491+((c>>>4&15)<<4))>>0]|0;h=a[N>>0]|0;h=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;t=a[T>>0]|0;t=i[(t&15)+(33491+(t>>>4<<4))>>0]|0;b=a[O>>0]|0;b=i[(b&15)+(33491+(b>>>4<<4))>>0]|0;q=i[(q&15)+(33491+((q>>>4&15)<<4))>>0]|0;v=o[n+224>>2]|0;H=((a[U>>0]|0)^v>>>24)&255;i[U>>0]=H;w=(w&255^v>>>16)&255;i[S>>0]=w;S=(k&255^v>>>8)&255;i[P>>0]=S;v=(q&255^v)&255;i[N>>0]=v;q=o[n+228>>2]|0;k=((a[g>>0]|0)^q>>>24)&255;i[g>>0]=k;g=(l&255^q>>>16)&255;i[y>>0]=g;y=(c&255^q>>>8)&255;i[A>>0]=y;A=(h&255^q)&255;i[T>>0]=A;q=o[n+232>>2]|0;T=((a[M>>0]|0)^q>>>24)&255;i[M>>0]=T;P=(d&255^q>>>16)&255;i[E>>0]=P;N=(m&255^q>>>8)&255;i[x>>0]=N;M=(t&255^q)&255;i[O>>0]=M;q=o[n+236>>2]|0;t=((a[R>>0]|0)^q>>>24)&255;i[R>>0]=t;U=(p&255^q>>>16)&255;i[C>>0]=U;z=(z&255^q>>>8)&255;i[I>>0]=z;q=(b&255^q)&255;i[L>>0]=q;E=w;x=v;O=k;R=g;C=y;I=A;L=T;n=M;i[r>>0]=H;H=r+1|0;i[H>>0]=E;H=r+2|0;i[H>>0]=S;H=r+3|0;i[H>>0]=x;H=r+4|0;i[H>>0]=O;H=r+5|0;i[H>>0]=R;H=r+6|0;i[H>>0]=C;H=r+7|0;i[H>>0]=I;H=r+8|0;i[H>>0]=L;H=r+9|0;i[H>>0]=P;H=r+10|0;i[H>>0]=N;H=r+11|0;i[H>>0]=n;H=r+12|0;i[H>>0]=t;H=r+13|0;i[H>>0]=U;H=r+14|0;i[H>>0]=z;H=r+15|0;i[H>>0]=q;f=F;return}}function Qt(e){e=e|0;var r=0,n=0,t=0,o=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0;h=i[e>>0]|0;f=e+4|0;t=i[f>>0]|0;o=e+8|0;a=i[o>>0]|0;u=e+12|0;n=i[u>>0]|0;_=h&255;s=t&255;r=a&255;c=n&255;i[e>>0]=n^a^i[33747+(_*6|0)>>0]^i[33747+(s*6|0)+1>>0];i[f>>0]=i[33747+(s*6|0)>>0]^h^n^i[33747+(r*6|0)+1>>0];i[o>>0]=i[33747+(c*6|0)+1>>0]^(i[33747+(r*6|0)>>0]^(t^h));i[u>>0]=a^t^i[33747+(_*6|0)+1>>0]^i[33747+(c*6|0)>>0];u=e+1|0;c=i[u>>0]|0;_=e+5|0;t=i[_>>0]|0;a=e+9|0;o=i[a>>0]|0;h=e+13|0;r=i[h>>0]|0;f=c&255;n=t&255;s=o&255;l=r&255;i[u>>0]=r^o^i[33747+(f*6|0)>>0]^i[33747+(n*6|0)+1>>0];i[_>>0]=i[33747+(n*6|0)>>0]^c^r^i[33747+(s*6|0)+1>>0];i[a>>0]=i[33747+(l*6|0)+1>>0]^(i[33747+(s*6|0)>>0]^(t^c));i[h>>0]=o^t^i[33747+(f*6|0)+1>>0]^i[33747+(l*6|0)>>0];h=e+2|0;l=i[h>>0]|0;f=e+6|0;t=i[f>>0]|0;o=e+10|0;a=i[o>>0]|0;c=e+14|0;s=i[c>>0]|0;_=l&255;r=t&255;n=a&255;u=s&255;i[h>>0]=s^a^i[33747+(_*6|0)>>0]^i[33747+(r*6|0)+1>>0];i[f>>0]=i[33747+(r*6|0)>>0]^l^s^i[33747+(n*6|0)+1>>0];i[o>>0]=i[33747+(u*6|0)+1>>0]^(i[33747+(n*6|0)>>0]^(t^l));i[c>>0]=a^t^i[33747+(_*6|0)+1>>0]^i[33747+(u*6|0)>>0];c=e+3|0;u=i[c>>0]|0;_=e+7|0;t=i[_>>0]|0;a=e+11|0;o=i[a>>0]|0;e=e+15|0;l=i[e>>0]|0;n=u&255;f=t&255;s=o&255;r=l&255;i[c>>0]=l^o^i[33747+(n*6|0)>>0]^i[33747+(f*6|0)+1>>0];i[_>>0]=i[33747+(f*6|0)>>0]^u^l^i[33747+(s*6|0)+1>>0];i[a>>0]=i[33747+(r*6|0)+1>>0]^(i[33747+(s*6|0)>>0]^(t^u));i[e>>0]=o^t^i[33747+(n*6|0)+1>>0]^i[33747+(r*6|0)>>0];return}function Zt(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,u=0;switch(n|0){case 128:{t=4;u=44;break}case 192:{t=6;u=52;break}case 256:{t=8;u=60;break}default:return}n=0;do{i=n<<2;o[r+(n<<2)>>2]=(a[e+(i|1)>>0]|0)<<16|(a[e+i>>0]|0)<<24|(a[e+(i|2)>>0]|0)<<8|(a[e+(i|3)>>0]|0);n=n+1|0}while((n|0)<(t|0));if(t>>>0>6)i=t;else{i=t;do{e=i+-1|0;n=o[r+(e<<2)>>2]|0;if(!((i|0)%(t|0)|0))n=((a[(n&15)+(33491+((n>>>4&15)<<4))>>0]|0)<<8|(a[(n>>>24&15)+(33491+(n>>>28<<4))>>0]|0)|(a[(n>>>8&15)+(33491+((n>>>12&15)<<4))>>0]|0)<<16|(a[(n>>>16&15)+(33491+((n>>>20&15)<<4))>>0]|0)<<24)^o[32840+(((e|0)/(t|0)|0)<<2)>>2];o[r+(i<<2)>>2]=o[r+(i-t<<2)>>2]^n;i=i+1|0}while((i|0)<(u|0));return}do{e=i+-1|0;n=o[r+(e<<2)>>2]|0;switch((i|0)%(t|0)|0|0){case 0:{n=((a[(n&15)+(33491+((n>>>4&15)<<4))>>0]|0)<<8|(a[(n>>>24&15)+(33491+(n>>>28<<4))>>0]|0)|(a[(n>>>8&15)+(33491+((n>>>12&15)<<4))>>0]|0)<<16|(a[(n>>>16&15)+(33491+((n>>>20&15)<<4))>>0]|0)<<24)^o[32840+(((e|0)/(t|0)|0)<<2)>>2];break}case 4:{n=(a[(n>>>8&15)+(33491+((n>>>12&15)<<4))>>0]|0)<<8|(a[(n&15)+(33491+((n>>>4&15)<<4))>>0]|0)|(a[(n>>>16&15)+(33491+((n>>>20&15)<<4))>>0]|0)<<16|(a[(n>>>24&15)+(33491+(n>>>28<<4))>>0]|0)<<24;break}default:{}}o[r+(i<<2)>>2]=o[r+(i-t<<2)>>2]^n;i=i+1|0}while((i|0)<(u|0));return}function $t(e){e=e|0;var r=0,n=0,t=0,o=0,u=0,s=0,_=0,l=0;_=e+4|0;t=e+8|0;n=e+12|0;r=a[e>>0]|0;u=a[_>>0]|0;l=a[t>>0]|0;o=a[n>>0]|0;i[e>>0]=i[33747+(o*6|0)+2>>0]^(i[33747+(l*6|0)+4>>0]^(i[33747+(u*6|0)+3>>0]^i[33747+(r*6|0)+5>>0]));i[_>>0]=i[33747+(o*6|0)+4>>0]^(i[33747+(l*6|0)+3>>0]^(i[33747+(u*6|0)+5>>0]^i[33747+(r*6|0)+2>>0]));i[t>>0]=i[33747+(o*6|0)+3>>0]^(i[33747+(l*6|0)+5>>0]^(i[33747+(u*6|0)+2>>0]^i[33747+(r*6|0)+4>>0]));i[n>>0]=i[33747+(o*6|0)+5>>0]^(i[33747+(l*6|0)+2>>0]^(i[33747+(u*6|0)+4>>0]^i[33747+(r*6|0)+3>>0]));n=e+1|0;r=e+5|0;u=e+9|0;l=e+13|0;o=a[n>>0]|0;t=a[r>>0]|0;_=a[u>>0]|0;s=a[l>>0]|0;i[n>>0]=i[33747+(s*6|0)+2>>0]^(i[33747+(_*6|0)+4>>0]^(i[33747+(t*6|0)+3>>0]^i[33747+(o*6|0)+5>>0]));i[r>>0]=i[33747+(s*6|0)+4>>0]^(i[33747+(_*6|0)+3>>0]^(i[33747+(t*6|0)+5>>0]^i[33747+(o*6|0)+2>>0]));i[u>>0]=i[33747+(s*6|0)+3>>0]^(i[33747+(_*6|0)+5>>0]^(i[33747+(t*6|0)+2>>0]^i[33747+(o*6|0)+4>>0]));i[l>>0]=i[33747+(s*6|0)+5>>0]^(i[33747+(_*6|0)+2>>0]^(i[33747+(t*6|0)+4>>0]^i[33747+(o*6|0)+3>>0]));l=e+2|0;o=e+6|0;t=e+10|0;_=e+14|0;s=a[l>>0]|0;u=a[o>>0]|0;r=a[t>>0]|0;n=a[_>>0]|0;i[l>>0]=i[33747+(n*6|0)+2>>0]^(i[33747+(r*6|0)+4>>0]^(i[33747+(u*6|0)+3>>0]^i[33747+(s*6|0)+5>>0]));i[o>>0]=i[33747+(n*6|0)+4>>0]^(i[33747+(r*6|0)+3>>0]^(i[33747+(u*6|0)+5>>0]^i[33747+(s*6|0)+2>>0]));i[t>>0]=i[33747+(n*6|0)+3>>0]^(i[33747+(r*6|0)+5>>0]^(i[33747+(u*6|0)+2>>0]^i[33747+(s*6|0)+4>>0]));i[_>>0]=i[33747+(n*6|0)+5>>0]^(i[33747+(r*6|0)+2>>0]^(i[33747+(u*6|0)+4>>0]^i[33747+(s*6|0)+3>>0]));_=e+3|0;s=e+7|0;u=e+11|0;e=e+15|0;r=a[_>>0]|0;n=a[s>>0]|0;t=a[u>>0]|0;o=a[e>>0]|0;i[_>>0]=i[33747+(o*6|0)+2>>0]^(i[33747+(t*6|0)+4>>0]^(i[33747+(n*6|0)+3>>0]^i[33747+(r*6|0)+5>>0]));i[s>>0]=i[33747+(o*6|0)+4>>0]^(i[33747+(t*6|0)+3>>0]^(i[33747+(n*6|0)+5>>0]^i[33747+(r*6|0)+2>>0]));i[u>>0]=i[33747+(o*6|0)+3>>0]^(i[33747+(t*6|0)+5>>0]^(i[33747+(n*6|0)+2>>0]^i[33747+(r*6|0)+4>>0]));i[e>>0]=i[33747+(o*6|0)+5>>0]^(i[33747+(t*6|0)+2>>0]^(i[33747+(n*6|0)+4>>0]^i[33747+(r*6|0)+3>>0]));return}function eo(e,r,n,t){e=e|0;r=r|0;n=n|0;t=t|0;var u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0;q=f;f=f+16|0;z=q;u=i[e>>0]|0;i[z>>0]=u;c=i[e+1>>0]|0;R=z+4|0;i[R>>0]=c;g=i[e+2>>0]|0;U=z+8|0;i[U>>0]=g;y=i[e+3>>0]|0;F=z+12|0;i[F>>0]=y;s=i[e+4>>0]|0;T=z+1|0;i[T>>0]=s;_=i[e+5>>0]|0;M=z+5|0;i[M>>0]=_;l=i[e+6>>0]|0;E=z+9|0;i[E>>0]=l;h=i[e+7>>0]|0;S=z+13|0;i[S>>0]=h;d=i[e+8>>0]|0;x=z+2|0;i[x>>0]=d;m=i[e+9>>0]|0;O=z+6|0;i[O>>0]=m;p=i[e+10>>0]|0;C=z+10|0;i[C>>0]=p;b=i[e+11>>0]|0;I=z+14|0;i[I>>0]=b;w=i[e+12>>0]|0;L=z+3|0;i[L>>0]=w;v=i[e+13>>0]|0;P=z+7|0;i[P>>0]=v;k=i[e+14>>0]|0;N=z+11|0;i[N>>0]=k;e=i[e+15>>0]|0;A=z+15|0;i[A>>0]=e;if((t|0)>128){if((t|0)>192){V=o[n+224>>2]|0;B=u&255^V>>>24;j=c&255^V>>>16;t=g&255^V>>>8;g=y&255^V;c=o[n+228>>2]|0;V=s&255^c>>>24;H=_&255^c>>>16;y=l&255^c>>>8;_=h&255^c;c=o[n+232>>2]|0;D=d&255^c>>>24;h=m&255^c>>>16;s=p&255^c>>>8;c=b&255^c;b=o[n+236>>2]|0;m=w&255^b>>>24;d=v&255^b>>>16;u=k&255^b>>>8;b=e&255^b;l=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;i[T>>0]=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;i[x>>0]=i[(D&15)+(35283+(D>>>4<<4))>>0]|0;i[L>>0]=i[(m&15)+(35283+(m>>>4<<4))>>0]|0;d=i[(d&15)+(35283+((d>>>4&15)<<4))>>0]|0;m=i[(j&15)+(35283+((j>>>4&15)<<4))>>0]|0;i[O>>0]=i[(H&15)+(35283+((H>>>4&15)<<4))>>0]|0;i[P>>0]=i[(h&15)+(35283+((h>>>4&15)<<4))>>0]|0;s=i[(s&15)+(35283+((s>>>4&15)<<4))>>0]|0;u=i[(u&15)+(35283+((u>>>4&15)<<4))>>0]|0;h=i[(t&15)+(35283+((t>>>4&15)<<4))>>0]|0;i[N>>0]=i[(y&15)+(35283+((y>>>4&15)<<4))>>0]|0;_=i[(_&15)+(35283+((_>>>4&15)<<4))>>0]|0;c=i[(c&15)+(35283+((c>>>4&15)<<4))>>0]|0;b=i[(b&15)+(35283+((b>>>4&15)<<4))>>0]|0;e=i[(g&15)+(35283+((g>>>4&15)<<4))>>0]|0;p=o[n+208>>2]|0;i[z>>0]=l&255^p>>>24;i[R>>0]=d&255^p>>>16;i[U>>0]=s&255^p>>>8;i[F>>0]=_&255^p;p=o[n+212>>2]|0;i[T>>0]=(a[T>>0]|0)^p>>>24;i[M>>0]=m&255^p>>>16;i[E>>0]=u&255^p>>>8;i[S>>0]=c&255^p;p=o[n+216>>2]|0;i[x>>0]=(a[x>>0]|0)^p>>>24;i[O>>0]=(a[O>>0]|0)^p>>>16;i[C>>0]=h&255^p>>>8;i[I>>0]=b&255^p;p=o[n+220>>2]|0;i[L>>0]=(a[L>>0]|0)^p>>>24;i[P>>0]=(a[P>>0]|0)^p>>>16;i[N>>0]=(a[N>>0]|0)^p>>>8;i[A>>0]=e&255^p;$t(z);p=i[P>>0]|0;e=i[O>>0]|0;b=i[M>>0]|0;h=i[R>>0]|0;c=i[N>>0]|0;u=i[E>>0]|0;m=i[C>>0]|0;_=i[U>>0]|0;s=i[A>>0]|0;i[A>>0]=i[F>>0]|0;d=i[S>>0]|0;l=i[I>>0]|0;w=a[z>>0]|0;i[z>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;w=a[T>>0]|0;i[T>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;w=a[x>>0]|0;i[x>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;w=a[L>>0]|0;i[L>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;p=p&255;p=i[(p&15)+(35283+(p>>>4<<4))>>0]|0;h=h&255;h=i[(h&15)+(35283+(h>>>4<<4))>>0]|0;b=b&255;i[O>>0]=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;e=e&255;i[P>>0]=i[(e&15)+(35283+(e>>>4<<4))>>0]|0;m=m&255;m=i[(m&15)+(35283+(m>>>4<<4))>>0]|0;c=c&255;c=i[(c&15)+(35283+(c>>>4<<4))>>0]|0;_=_&255;_=i[(_&15)+(35283+(_>>>4<<4))>>0]|0;u=u&255;i[N>>0]=i[(u&15)+(35283+(u>>>4<<4))>>0]|0;d=d&255;d=i[(d&15)+(35283+(d>>>4<<4))>>0]|0;l=l&255;l=i[(l&15)+(35283+(l>>>4<<4))>>0]|0;s=s&255;s=i[(s&15)+(35283+(s>>>4<<4))>>0]|0;u=a[A>>0]|0;u=i[(u&15)+(35283+(u>>>4<<4))>>0]|0;e=o[n+192>>2]|0;i[z>>0]=(a[z>>0]|0)^e>>>24;i[R>>0]=p&255^e>>>16;i[U>>0]=m&255^e>>>8;i[F>>0]=d&255^e;e=o[n+196>>2]|0;i[T>>0]=(a[T>>0]|0)^e>>>24;i[M>>0]=h&255^e>>>16;i[E>>0]=c&255^e>>>8;i[S>>0]=l&255^e;e=o[n+200>>2]|0;i[x>>0]=(a[x>>0]|0)^e>>>24;i[O>>0]=(a[O>>0]|0)^e>>>16;i[C>>0]=_&255^e>>>8;i[I>>0]=s&255^e;e=o[n+204>>2]|0;i[L>>0]=(a[L>>0]|0)^e>>>24;i[P>>0]=(a[P>>0]|0)^e>>>16;i[N>>0]=(a[N>>0]|0)^e>>>8;i[A>>0]=u&255^e;$t(z);e=i[z>>0]|0;u=i[T>>0]|0;s=i[x>>0]|0;_=i[L>>0]|0;l=i[P>>0]|0;c=i[R>>0]|0;h=i[M>>0]|0;d=i[O>>0]|0;m=i[C>>0]|0;p=i[N>>0]|0;b=i[U>>0]|0;w=i[E>>0]|0;v=i[S>>0]|0;k=i[I>>0]|0;g=i[A>>0]|0;y=i[F>>0]|0}else{V=o[n+192>>2]|0;t=(u&255^V>>>24)&255;i[z>>0]=t;c=(c&255^V>>>16)&255;i[R>>0]=c;j=(g&255^V>>>8)&255;i[U>>0]=j;y=(y&255^V)&255;i[F>>0]=y;V=o[n+196>>2]|0;u=(s&255^V>>>24)&255;i[T>>0]=u;H=(_&255^V>>>16)&255;i[M>>0]=H;D=(l&255^V>>>8)&255;i[E>>0]=D;V=(h&255^V)&255;i[S>>0]=V;B=o[n+200>>2]|0;s=(d&255^B>>>24)&255;i[x>>0]=s;d=(m&255^B>>>16)&255;i[O>>0]=d;m=(p&255^B>>>8)&255;i[C>>0]=m;B=(b&255^B)&255;i[I>>0]=B;g=o[n+204>>2]|0;_=(w&255^g>>>24)&255;i[L>>0]=_;l=(v&255^g>>>16)&255;i[P>>0]=l;p=(k&255^g>>>8)&255;i[N>>0]=p;g=(e&255^g)&255;i[A>>0]=g;e=t;h=H;b=j;w=D;v=V;k=B}B=e&255;B=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;u=u&255;i[T>>0]=i[(u&15)+(35283+(u>>>4<<4))>>0]|0;s=s&255;i[x>>0]=i[(s&15)+(35283+(s>>>4<<4))>>0]|0;_=_&255;i[L>>0]=i[(_&15)+(35283+(_>>>4<<4))>>0]|0;l=l&255;l=i[(l&15)+(35283+(l>>>4<<4))>>0]|0;_=c&255;_=i[(_&15)+(35283+(_>>>4<<4))>>0]|0;s=h&255;i[O>>0]=i[(s&15)+(35283+(s>>>4<<4))>>0]|0;s=d&255;i[P>>0]=i[(s&15)+(35283+(s>>>4<<4))>>0]|0;s=m&255;s=i[(s&15)+(35283+(s>>>4<<4))>>0]|0;u=p&255;u=i[(u&15)+(35283+(u>>>4<<4))>>0]|0;h=b&255;h=i[(h&15)+(35283+(h>>>4<<4))>>0]|0;m=w&255;i[N>>0]=i[(m&15)+(35283+(m>>>4<<4))>>0]|0;m=v&255;m=i[(m&15)+(35283+(m>>>4<<4))>>0]|0;c=k&255;c=i[(c&15)+(35283+(c>>>4<<4))>>0]|0;b=g&255;b=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;e=y&255;e=i[(e&15)+(35283+(e>>>4<<4))>>0]|0;p=o[n+176>>2]|0;i[z>>0]=B&255^p>>>24;i[R>>0]=l&255^p>>>16;i[U>>0]=s&255^p>>>8;i[F>>0]=m&255^p;p=o[n+180>>2]|0;i[T>>0]=(a[T>>0]|0)^p>>>24;i[M>>0]=_&255^p>>>16;i[E>>0]=u&255^p>>>8;i[S>>0]=c&255^p;p=o[n+184>>2]|0;i[x>>0]=(a[x>>0]|0)^p>>>24;i[O>>0]=(a[O>>0]|0)^p>>>16;i[C>>0]=h&255^p>>>8;i[I>>0]=b&255^p;p=o[n+188>>2]|0;i[L>>0]=(a[L>>0]|0)^p>>>24;i[P>>0]=(a[P>>0]|0)^p>>>16;i[N>>0]=(a[N>>0]|0)^p>>>8;i[A>>0]=e&255^p;$t(z);p=i[P>>0]|0;e=i[O>>0]|0;b=i[M>>0]|0;h=i[R>>0]|0;c=i[N>>0]|0;u=i[E>>0]|0;m=i[C>>0]|0;_=i[U>>0]|0;s=i[A>>0]|0;i[A>>0]=i[F>>0]|0;d=i[S>>0]|0;l=i[I>>0]|0;w=a[z>>0]|0;i[z>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;w=a[T>>0]|0;i[T>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;w=a[x>>0]|0;i[x>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;w=a[L>>0]|0;i[L>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;p=p&255;p=i[(p&15)+(35283+(p>>>4<<4))>>0]|0;h=h&255;h=i[(h&15)+(35283+(h>>>4<<4))>>0]|0;b=b&255;i[O>>0]=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;e=e&255;i[P>>0]=i[(e&15)+(35283+(e>>>4<<4))>>0]|0;m=m&255;m=i[(m&15)+(35283+(m>>>4<<4))>>0]|0;c=c&255;c=i[(c&15)+(35283+(c>>>4<<4))>>0]|0;_=_&255;_=i[(_&15)+(35283+(_>>>4<<4))>>0]|0;u=u&255;i[N>>0]=i[(u&15)+(35283+(u>>>4<<4))>>0]|0;d=d&255;d=i[(d&15)+(35283+(d>>>4<<4))>>0]|0;l=l&255;l=i[(l&15)+(35283+(l>>>4<<4))>>0]|0;s=s&255;s=i[(s&15)+(35283+(s>>>4<<4))>>0]|0;u=a[A>>0]|0;u=i[(u&15)+(35283+(u>>>4<<4))>>0]|0;e=o[n+160>>2]|0;i[z>>0]=(a[z>>0]|0)^e>>>24;i[R>>0]=p&255^e>>>16;i[U>>0]=m&255^e>>>8;i[F>>0]=d&255^e;e=o[n+164>>2]|0;i[T>>0]=(a[T>>0]|0)^e>>>24;i[M>>0]=h&255^e>>>16;i[E>>0]=c&255^e>>>8;i[S>>0]=l&255^e;e=o[n+168>>2]|0;i[x>>0]=(a[x>>0]|0)^e>>>24;i[O>>0]=(a[O>>0]|0)^e>>>16;i[C>>0]=_&255^e>>>8;i[I>>0]=s&255^e;e=o[n+172>>2]|0;i[L>>0]=(a[L>>0]|0)^e>>>24;i[P>>0]=(a[P>>0]|0)^e>>>16;i[N>>0]=(a[N>>0]|0)^e>>>8;i[A>>0]=u&255^e;$t(z);e=i[z>>0]|0;u=i[T>>0]|0;s=i[x>>0]|0;_=i[L>>0]|0;l=i[P>>0]|0;c=i[R>>0]|0;h=i[M>>0]|0;d=i[O>>0]|0;m=i[C>>0]|0;p=i[N>>0]|0;b=i[U>>0]|0;w=i[E>>0]|0;v=i[S>>0]|0;k=i[I>>0]|0;g=i[A>>0]|0;y=i[F>>0]|0}else{V=o[n+160>>2]|0;t=(u&255^V>>>24)&255;i[z>>0]=t;c=(c&255^V>>>16)&255;i[R>>0]=c;j=(g&255^V>>>8)&255;i[U>>0]=j;y=(y&255^V)&255;i[F>>0]=y;V=o[n+164>>2]|0;u=(s&255^V>>>24)&255;i[T>>0]=u;H=(_&255^V>>>16)&255;i[M>>0]=H;D=(l&255^V>>>8)&255;i[E>>0]=D;V=(h&255^V)&255;i[S>>0]=V;B=o[n+168>>2]|0;s=(d&255^B>>>24)&255;i[x>>0]=s;d=(m&255^B>>>16)&255;i[O>>0]=d;m=(p&255^B>>>8)&255;i[C>>0]=m;B=(b&255^B)&255;i[I>>0]=B;g=o[n+172>>2]|0;_=(w&255^g>>>24)&255;i[L>>0]=_;l=(v&255^g>>>16)&255;i[P>>0]=l;p=(k&255^g>>>8)&255;i[N>>0]=p;g=(e&255^g)&255;i[A>>0]=g;e=t;h=H;b=j;w=D;v=V;k=B}e=e&255;e=i[(e&15)+(35283+(e>>>4<<4))>>0]|0;H=u&255;i[T>>0]=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;H=s&255;i[x>>0]=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;H=_&255;i[L>>0]=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;l=l&255;l=i[(l&15)+(35283+(l>>>4<<4))>>0]|0;H=c&255;H=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;V=h&255;i[O>>0]=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;V=d&255;i[P>>0]=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;V=m&255;V=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;t=p&255;t=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;B=b&255;B=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;w=w&255;i[N>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;w=v&255;w=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;b=k&255;b=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;v=g&255;v=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;j=y&255;j=i[(j&15)+(35283+(j>>>4<<4))>>0]|0;D=o[n+144>>2]|0;i[z>>0]=e&255^D>>>24;i[R>>0]=l&255^D>>>16;i[U>>0]=V&255^D>>>8;i[F>>0]=w&255^D;D=o[n+148>>2]|0;i[T>>0]=(a[T>>0]|0)^D>>>24;i[M>>0]=H&255^D>>>16;i[E>>0]=t&255^D>>>8;i[S>>0]=b&255^D;D=o[n+152>>2]|0;i[x>>0]=(a[x>>0]|0)^D>>>24;i[O>>0]=(a[O>>0]|0)^D>>>16;i[C>>0]=B&255^D>>>8;i[I>>0]=v&255^D;D=o[n+156>>2]|0;i[L>>0]=(a[L>>0]|0)^D>>>24;i[P>>0]=(a[P>>0]|0)^D>>>16;i[N>>0]=(a[N>>0]|0)^D>>>8;i[A>>0]=j&255^D;$t(z);D=i[P>>0]|0;j=i[O>>0]|0;v=i[M>>0]|0;g=i[R>>0]|0;B=i[N>>0]|0;b=i[E>>0]|0;w=i[C>>0]|0;t=i[U>>0]|0;H=i[A>>0]|0;i[A>>0]=i[F>>0]|0;V=i[S>>0]|0;y=i[I>>0]|0;k=a[z>>0]|0;i[z>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[T>>0]|0;i[T>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[x>>0]|0;i[x>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[L>>0]|0;i[L>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;D=D&255;D=i[(D&15)+(35283+(D>>>4<<4))>>0]|0;g=g&255;g=i[(g&15)+(35283+(g>>>4<<4))>>0]|0;v=v&255;i[O>>0]=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;j=j&255;i[P>>0]=i[(j&15)+(35283+(j>>>4<<4))>>0]|0;w=w&255;w=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;B=B&255;B=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;t=t&255;t=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;b=b&255;i[N>>0]=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;V=V&255;V=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;y=y&255;y=i[(y&15)+(35283+(y>>>4<<4))>>0]|0;H=H&255;H=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;b=a[A>>0]|0;b=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;j=o[n+128>>2]|0;i[z>>0]=(a[z>>0]|0)^j>>>24;i[R>>0]=D&255^j>>>16;i[U>>0]=w&255^j>>>8;i[F>>0]=V&255^j;j=o[n+132>>2]|0;i[T>>0]=(a[T>>0]|0)^j>>>24;i[M>>0]=g&255^j>>>16;i[E>>0]=B&255^j>>>8;i[S>>0]=y&255^j;j=o[n+136>>2]|0;i[x>>0]=(a[x>>0]|0)^j>>>24;i[O>>0]=(a[O>>0]|0)^j>>>16;i[C>>0]=t&255^j>>>8;i[I>>0]=H&255^j;j=o[n+140>>2]|0;i[L>>0]=(a[L>>0]|0)^j>>>24;i[P>>0]=(a[P>>0]|0)^j>>>16;i[N>>0]=(a[N>>0]|0)^j>>>8;i[A>>0]=b&255^j;$t(z);j=i[P>>0]|0;b=i[O>>0]|0;H=i[M>>0]|0;t=i[R>>0]|0;y=i[N>>0]|0;B=i[E>>0]|0;g=i[C>>0]|0;V=i[U>>0]|0;w=i[A>>0]|0;i[A>>0]=i[F>>0]|0;D=i[S>>0]|0;v=i[I>>0]|0;k=a[z>>0]|0;i[z>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[T>>0]|0;i[T>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[x>>0]|0;i[x>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[L>>0]|0;i[L>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;j=j&255;j=i[(j&15)+(35283+(j>>>4<<4))>>0]|0;t=t&255;t=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;H=H&255;i[O>>0]=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;b=b&255;i[P>>0]=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;g=g&255;g=i[(g&15)+(35283+(g>>>4<<4))>>0]|0;y=y&255;y=i[(y&15)+(35283+(y>>>4<<4))>>0]|0;V=V&255;V=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;B=B&255;i[N>>0]=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;D=D&255;D=i[(D&15)+(35283+(D>>>4<<4))>>0]|0;v=v&255;v=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;w=w&255;w=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;B=a[A>>0]|0;B=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;b=o[n+112>>2]|0;i[z>>0]=(a[z>>0]|0)^b>>>24;i[R>>0]=j&255^b>>>16;i[U>>0]=g&255^b>>>8;i[F>>0]=D&255^b;b=o[n+116>>2]|0;i[T>>0]=(a[T>>0]|0)^b>>>24;i[M>>0]=t&255^b>>>16;i[E>>0]=y&255^b>>>8;i[S>>0]=v&255^b;b=o[n+120>>2]|0;i[x>>0]=(a[x>>0]|0)^b>>>24;i[O>>0]=(a[O>>0]|0)^b>>>16;i[C>>0]=V&255^b>>>8;i[I>>0]=w&255^b;b=o[n+124>>2]|0;i[L>>0]=(a[L>>0]|0)^b>>>24;i[P>>0]=(a[P>>0]|0)^b>>>16;i[N>>0]=(a[N>>0]|0)^b>>>8;i[A>>0]=B&255^b;$t(z);b=i[P>>0]|0;B=i[O>>0]|0;w=i[M>>0]|0;V=i[R>>0]|0;v=i[N>>0]|0;y=i[E>>0]|0;t=i[C>>0]|0;D=i[U>>0]|0;g=i[A>>0]|0;i[A>>0]=i[F>>0]|0;j=i[S>>0]|0;H=i[I>>0]|0;k=a[z>>0]|0;i[z>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[T>>0]|0;i[T>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[x>>0]|0;i[x>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[L>>0]|0;i[L>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;b=b&255;b=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;V=V&255;V=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;w=w&255;i[O>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;B=B&255;i[P>>0]=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;t=t&255;t=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;v=v&255;v=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;D=D&255;D=i[(D&15)+(35283+(D>>>4<<4))>>0]|0;y=y&255;i[N>>0]=i[(y&15)+(35283+(y>>>4<<4))>>0]|0;j=j&255;j=i[(j&15)+(35283+(j>>>4<<4))>>0]|0;H=H&255;H=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;g=g&255;g=i[(g&15)+(35283+(g>>>4<<4))>>0]|0;y=a[A>>0]|0;y=i[(y&15)+(35283+(y>>>4<<4))>>0]|0;B=o[n+96>>2]|0;i[z>>0]=(a[z>>0]|0)^B>>>24;i[R>>0]=b&255^B>>>16;i[U>>0]=t&255^B>>>8;i[F>>0]=j&255^B;B=o[n+100>>2]|0;i[T>>0]=(a[T>>0]|0)^B>>>24;i[M>>0]=V&255^B>>>16;i[E>>0]=v&255^B>>>8;i[S>>0]=H&255^B;B=o[n+104>>2]|0;i[x>>0]=(a[x>>0]|0)^B>>>24;i[O>>0]=(a[O>>0]|0)^B>>>16;i[C>>0]=D&255^B>>>8;i[I>>0]=g&255^B;B=o[n+108>>2]|0;i[L>>0]=(a[L>>0]|0)^B>>>24;i[P>>0]=(a[P>>0]|0)^B>>>16;i[N>>0]=(a[N>>0]|0)^B>>>8;i[A>>0]=y&255^B;$t(z);B=i[P>>0]|0;y=i[O>>0]|0;g=i[M>>0]|0;D=i[R>>0]|0;H=i[N>>0]|0;v=i[E>>0]|0;V=i[C>>0]|0;j=i[U>>0]|0;t=i[A>>0]|0;i[A>>0]=i[F>>0]|0;b=i[S>>0]|0;w=i[I>>0]|0;k=a[z>>0]|0;i[z>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[T>>0]|0;i[T>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[x>>0]|0;i[x>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[L>>0]|0;i[L>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;B=B&255;B=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;D=D&255;D=i[(D&15)+(35283+(D>>>4<<4))>>0]|0;g=g&255;i[O>>0]=i[(g&15)+(35283+(g>>>4<<4))>>0]|0;y=y&255;i[P>>0]=i[(y&15)+(35283+(y>>>4<<4))>>0]|0;V=V&255;V=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;H=H&255;H=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;j=j&255;j=i[(j&15)+(35283+(j>>>4<<4))>>0]|0;v=v&255;i[N>>0]=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;b=b&255;b=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;w=w&255;w=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;t=t&255;t=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;v=a[A>>0]|0;v=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;y=o[n+80>>2]|0;i[z>>0]=(a[z>>0]|0)^y>>>24;i[R>>0]=B&255^y>>>16;i[U>>0]=V&255^y>>>8;i[F>>0]=b&255^y;y=o[n+84>>2]|0;i[T>>0]=(a[T>>0]|0)^y>>>24;i[M>>0]=D&255^y>>>16;i[E>>0]=H&255^y>>>8;i[S>>0]=w&255^y;y=o[n+88>>2]|0;i[x>>0]=(a[x>>0]|0)^y>>>24;i[O>>0]=(a[O>>0]|0)^y>>>16;i[C>>0]=j&255^y>>>8;i[I>>0]=t&255^y;y=o[n+92>>2]|0;i[L>>0]=(a[L>>0]|0)^y>>>24;i[P>>0]=(a[P>>0]|0)^y>>>16;i[N>>0]=(a[N>>0]|0)^y>>>8;i[A>>0]=v&255^y;$t(z);y=i[P>>0]|0;v=i[O>>0]|0;t=i[M>>0]|0;j=i[R>>0]|0;w=i[N>>0]|0;H=i[E>>0]|0;D=i[C>>0]|0;b=i[U>>0]|0;V=i[A>>0]|0;i[A>>0]=i[F>>0]|0;B=i[S>>0]|0;g=i[I>>0]|0;k=a[z>>0]|0;i[z>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[T>>0]|0;i[T>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[x>>0]|0;i[x>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[L>>0]|0;i[L>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;y=y&255;y=i[(y&15)+(35283+(y>>>4<<4))>>0]|0;j=j&255;j=i[(j&15)+(35283+(j>>>4<<4))>>0]|0;t=t&255;i[O>>0]=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;v=v&255;i[P>>0]=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;D=D&255;D=i[(D&15)+(35283+(D>>>4<<4))>>0]|0;w=w&255;w=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;b=b&255;b=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;H=H&255;i[N>>0]=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;B=B&255;B=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;g=g&255;g=i[(g&15)+(35283+(g>>>4<<4))>>0]|0;V=V&255;V=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;H=a[A>>0]|0;H=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;v=o[n+64>>2]|0;i[z>>0]=(a[z>>0]|0)^v>>>24;i[R>>0]=y&255^v>>>16;i[U>>0]=D&255^v>>>8;i[F>>0]=B&255^v;v=o[n+68>>2]|0;i[T>>0]=(a[T>>0]|0)^v>>>24;i[M>>0]=j&255^v>>>16;i[E>>0]=w&255^v>>>8;i[S>>0]=g&255^v;v=o[n+72>>2]|0;i[x>>0]=(a[x>>0]|0)^v>>>24;i[O>>0]=(a[O>>0]|0)^v>>>16;i[C>>0]=b&255^v>>>8;i[I>>0]=V&255^v;v=o[n+76>>2]|0;i[L>>0]=(a[L>>0]|0)^v>>>24;i[P>>0]=(a[P>>0]|0)^v>>>16;i[N>>0]=(a[N>>0]|0)^v>>>8;i[A>>0]=H&255^v;$t(z);v=i[P>>0]|0;H=i[O>>0]|0;V=i[M>>0]|0;b=i[R>>0]|0;g=i[N>>0]|0;w=i[E>>0]|0;j=i[C>>0]|0;B=i[U>>0]|0;D=i[A>>0]|0;i[A>>0]=i[F>>0]|0;y=i[S>>0]|0;t=i[I>>0]|0;k=a[z>>0]|0;i[z>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[T>>0]|0;i[T>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[x>>0]|0;i[x>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[L>>0]|0;i[L>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;v=v&255;v=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;b=b&255;b=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;V=V&255;i[O>>0]=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;H=H&255;i[P>>0]=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;j=j&255;j=i[(j&15)+(35283+(j>>>4<<4))>>0]|0;g=g&255;g=i[(g&15)+(35283+(g>>>4<<4))>>0]|0;B=B&255;B=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;w=w&255;i[N>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;y=y&255;y=i[(y&15)+(35283+(y>>>4<<4))>>0]|0;t=t&255;t=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;D=D&255;D=i[(D&15)+(35283+(D>>>4<<4))>>0]|0;w=a[A>>0]|0;w=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;H=o[n+48>>2]|0;i[z>>0]=(a[z>>0]|0)^H>>>24;i[R>>0]=v&255^H>>>16;i[U>>0]=j&255^H>>>8;i[F>>0]=y&255^H;H=o[n+52>>2]|0;i[T>>0]=(a[T>>0]|0)^H>>>24;i[M>>0]=b&255^H>>>16;i[E>>0]=g&255^H>>>8;i[S>>0]=t&255^H;H=o[n+56>>2]|0;i[x>>0]=(a[x>>0]|0)^H>>>24;i[O>>0]=(a[O>>0]|0)^H>>>16;i[C>>0]=B&255^H>>>8;i[I>>0]=D&255^H;H=o[n+60>>2]|0;i[L>>0]=(a[L>>0]|0)^H>>>24;i[P>>0]=(a[P>>0]|0)^H>>>16;i[N>>0]=(a[N>>0]|0)^H>>>8;i[A>>0]=w&255^H;$t(z);H=i[P>>0]|0;w=i[O>>0]|0;D=i[M>>0]|0;B=i[R>>0]|0;t=i[N>>0]|0;g=i[E>>0]|0;b=i[C>>0]|0;y=i[U>>0]|0;j=i[A>>0]|0;i[A>>0]=i[F>>0]|0;v=i[S>>0]|0;V=i[I>>0]|0;k=a[z>>0]|0;i[z>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[T>>0]|0;i[T>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[x>>0]|0;i[x>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[L>>0]|0;i[L>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;H=H&255;H=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;B=B&255;B=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;D=D&255;i[O>>0]=i[(D&15)+(35283+(D>>>4<<4))>>0]|0;w=w&255;i[P>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;b=b&255;b=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;t=t&255;t=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;y=y&255;y=i[(y&15)+(35283+(y>>>4<<4))>>0]|0;g=g&255;i[N>>0]=i[(g&15)+(35283+(g>>>4<<4))>>0]|0;v=v&255;v=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;V=V&255;V=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;j=j&255;j=i[(j&15)+(35283+(j>>>4<<4))>>0]|0;g=a[A>>0]|0;g=i[(g&15)+(35283+(g>>>4<<4))>>0]|0;w=o[n+32>>2]|0;i[z>>0]=(a[z>>0]|0)^w>>>24;i[R>>0]=H&255^w>>>16;i[U>>0]=b&255^w>>>8;i[F>>0]=v&255^w;w=o[n+36>>2]|0;i[T>>0]=(a[T>>0]|0)^w>>>24;i[M>>0]=B&255^w>>>16;i[E>>0]=t&255^w>>>8;i[S>>0]=V&255^w;w=o[n+40>>2]|0;i[x>>0]=(a[x>>0]|0)^w>>>24;i[O>>0]=(a[O>>0]|0)^w>>>16;i[C>>0]=y&255^w>>>8;i[I>>0]=j&255^w;w=o[n+44>>2]|0;i[L>>0]=(a[L>>0]|0)^w>>>24;i[P>>0]=(a[P>>0]|0)^w>>>16;i[N>>0]=(a[N>>0]|0)^w>>>8;i[A>>0]=g&255^w;$t(z);w=i[P>>0]|0;g=i[O>>0]|0;j=i[M>>0]|0;y=i[R>>0]|0;V=i[N>>0]|0;t=i[E>>0]|0;B=i[C>>0]|0;v=i[U>>0]|0;b=i[A>>0]|0;i[A>>0]=i[F>>0]|0;H=i[S>>0]|0;D=i[I>>0]|0;k=a[z>>0]|0;i[z>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[T>>0]|0;i[T>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[x>>0]|0;i[x>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[L>>0]|0;i[L>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;w=w&255;w=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;y=y&255;y=i[(y&15)+(35283+(y>>>4<<4))>>0]|0;j=j&255;i[O>>0]=i[(j&15)+(35283+(j>>>4<<4))>>0]|0;g=g&255;i[P>>0]=i[(g&15)+(35283+(g>>>4<<4))>>0]|0;B=B&255;B=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;V=V&255;V=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;v=v&255;v=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;t=t&255;i[N>>0]=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;H=H&255;H=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;D=D&255;D=i[(D&15)+(35283+(D>>>4<<4))>>0]|0;b=b&255;b=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;t=a[A>>0]|0;t=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;g=o[n+16>>2]|0;i[z>>0]=(a[z>>0]|0)^g>>>24;i[R>>0]=w&255^g>>>16;i[U>>0]=B&255^g>>>8;i[F>>0]=H&255^g;g=o[n+20>>2]|0;i[T>>0]=(a[T>>0]|0)^g>>>24;i[M>>0]=y&255^g>>>16;i[E>>0]=V&255^g>>>8;i[S>>0]=D&255^g;g=o[n+24>>2]|0;i[x>>0]=(a[x>>0]|0)^g>>>24;i[O>>0]=(a[O>>0]|0)^g>>>16;i[C>>0]=v&255^g>>>8;i[I>>0]=b&255^g;g=o[n+28>>2]|0;i[L>>0]=(a[L>>0]|0)^g>>>24;i[P>>0]=(a[P>>0]|0)^g>>>16;i[N>>0]=(a[N>>0]|0)^g>>>8;i[A>>0]=t&255^g;$t(z);g=i[P>>0]|0;t=i[O>>0]|0;b=i[M>>0]|0;v=i[R>>0]|0;D=i[N>>0]|0;V=i[E>>0]|0;y=i[C>>0]|0;H=i[U>>0]|0;B=i[A>>0]|0;i[A>>0]=i[F>>0]|0;w=i[S>>0]|0;j=i[I>>0]|0;k=a[z>>0]|0;k=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;i[z>>0]=k;p=a[T>>0]|0;i[T>>0]=i[(p&15)+(35283+(p>>>4<<4))>>0]|0;p=a[x>>0]|0;i[x>>0]=i[(p&15)+(35283+(p>>>4<<4))>>0]|0;p=a[L>>0]|0;i[L>>0]=i[(p&15)+(35283+(p>>>4<<4))>>0]|0;g=g&255;g=i[(g&15)+(35283+(g>>>4<<4))>>0]|0;v=v&255;v=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;b=b&255;i[O>>0]=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;t=t&255;i[P>>0]=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;y=y&255;y=i[(y&15)+(35283+(y>>>4<<4))>>0]|0;D=D&255;D=i[(D&15)+(35283+(D>>>4<<4))>>0]|0;H=H&255;H=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;V=V&255;i[N>>0]=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;w=w&255;w=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;j=j&255;j=i[(j&15)+(35283+(j>>>4<<4))>>0]|0;B=B&255;B=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;V=a[A>>0]|0;V=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;t=o[n>>2]|0;k=(k&255^t>>>24)&255;i[z>>0]=k;g=(g&255^t>>>16)&255;i[R>>0]=g;y=(y&255^t>>>8)&255;i[U>>0]=y;t=(w&255^t)&255;i[F>>0]=t;z=o[n+4>>2]|0;A=((a[T>>0]|0)^z>>>24)&255;i[T>>0]=A;T=(v&255^z>>>16)&255;i[M>>0]=T;M=(D&255^z>>>8)&255;i[E>>0]=M;E=(j&255^z)&255;i[S>>0]=E;z=o[n+8>>2]|0;R=((a[x>>0]|0)^z>>>24)&255;i[x>>0]=R;U=((a[O>>0]|0)^z>>>16)&255;i[O>>0]=U;F=(H&255^z>>>8)&255;i[C>>0]=F;z=(B&255^z)&255;i[I>>0]=z;B=o[n+12>>2]|0;H=((a[L>>0]|0)^B>>>24)&255;i[L>>0]=H;j=((a[P>>0]|0)^B>>>16)&255;i[P>>0]=j;D=((a[N>>0]|0)^B>>>8)&255;i[r>>0]=k;i[r+1>>0]=g;i[r+2>>0]=y;i[r+3>>0]=t;i[r+4>>0]=A;i[r+5>>0]=T;i[r+6>>0]=M;i[r+7>>0]=E;i[r+8>>0]=R;i[r+9>>0]=U;i[r+10>>0]=F;i[r+11>>0]=z;i[r+12>>0]=H;i[r+13>>0]=j;i[r+14>>0]=D;i[r+15>>0]=V&255^B;f=q;return}function ro(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0,se=0,_e=0,le=0,fe=0,ce=0,he=0,de=0,me=0,pe=0,be=0,we=0,ve=0,ke=0,ge=0,ye=0,Ae=0,Te=0,Me=0,Ee=0,Se=0,xe=0,Oe=0,Re=0,Ce=0,Ie=0,Le=0,Pe=0,Ne=0,Ue=0,Fe=0,ze=0,qe=0,He=0,je=0,De=0,Ve=0,Be=0,Ge=0,Ke=0,We=0,Ye=0,Je=0,Xe=0,Qe=0,Ze=0,$e=0,er=0,rr=0,nr=0,ir=0,tr=0,or=0,ar=0,ur=0,sr=0,_r=0,lr=0,fr=0,cr=0,hr=0,dr=0,mr=0,pr=0,br=0,wr=0,vr=0,kr=0,gr=0,yr=0,Ar=0,Tr=0,Mr=0,Er=0,Sr=0,xr=0,Or=0,Rr=0,Cr=0,Ir=0,Lr=0,Pr=0,Nr=0,Ur=0,Fr=0,zr=0,qr=0,Hr=0,jr=0,Dr=0;Lr=f;f=f+2640|0;Ir=Lr+2456|0;Ar=Lr+2304|0;xr=Lr+2152|0;yr=Lr+2e3|0;kr=Lr+1848|0;gr=Lr+1696|0;Or=Lr+1544|0;Tr=Lr+1392|0;Mr=Lr+1240|0;Er=Lr+1088|0;t=Lr+936|0;u=Lr+784|0;s=Lr+632|0;_=Lr+480|0;h=Lr+328|0;wr=Lr+248|0;Sr=Lr+168|0;Cr=Lr+80|0;Rr=Lr;vr=Lr+2608|0;Z=vr;d=r;Q=Z+32|0;do{i[Z>>0]=i[d>>0]|0;Z=Z+1|0;d=d+1|0}while((Z|0)<(Q|0));i[vr>>0]=(a[vr>>0]|0)&248;Z=vr+31|0;i[Z>>0]=(a[Z>>0]|0)&63|64;Z=a[n>>0]|0;dr=po(a[n+1>>0]|0|0,0,8)|0;hr=C;pr=po(a[n+2>>0]|0|0,0,16)|0;hr=hr|C;mr=a[n+3>>0]|0;Q=po(mr|0,0,24)|0;br=wr;o[br>>2]=dr|Z|pr|Q&50331648;o[br+4>>2]=hr;br=po(a[n+4>>0]|0|0,0,8)|0;hr=C;Q=po(a[n+5>>0]|0|0,0,16)|0;hr=hr|C;pr=a[n+6>>0]|0;Z=po(pr|0,0,24)|0;hr=mo(br|mr|Q|Z|0,hr|C|0,2)|0;Z=wr+8|0;o[Z>>2]=hr&33554431;o[Z+4>>2]=0;Z=po(a[n+7>>0]|0|0,0,8)|0;hr=C;Q=po(a[n+8>>0]|0|0,0,16)|0;hr=hr|C;mr=a[n+9>>0]|0;br=po(mr|0,0,24)|0;hr=mo(Z|pr|Q|br|0,hr|C|0,3)|0;br=wr+16|0;o[br>>2]=hr&67108863;o[br+4>>2]=0;br=po(a[n+10>>0]|0|0,0,8)|0;hr=C;Q=po(a[n+11>>0]|0|0,0,16)|0;hr=hr|C;pr=a[n+12>>0]|0;Z=po(pr|0,0,24)|0;hr=mo(br|mr|Q|Z|0,hr|C|0,5)|0;Z=wr+24|0;o[Z>>2]=hr&33554431;o[Z+4>>2]=0;Z=po(a[n+13>>0]|0|0,0,8)|0;hr=C;Q=po(a[n+14>>0]|0|0,0,16)|0;hr=hr|C;mr=po(a[n+15>>0]|0|0,0,24)|0;hr=mo(Z|pr|Q|mr|0,hr|C|0,6)|0;mr=wr+32|0;o[mr>>2]=hr&67108863;o[mr+4>>2]=0;mr=a[n+16>>0]|0;hr=po(a[n+17>>0]|0|0,0,8)|0;Q=C;pr=po(a[n+18>>0]|0|0,0,16)|0;Q=Q|C;Z=a[n+19>>0]|0;br=po(Z|0,0,24)|0;dr=wr+40|0;o[dr>>2]=hr|mr|pr|br&16777216;o[dr+4>>2]=Q;dr=po(a[n+20>>0]|0|0,0,8)|0;Q=C;br=po(a[n+21>>0]|0|0,0,16)|0;Q=Q|C;pr=a[n+22>>0]|0;mr=po(pr|0,0,24)|0;Q=mo(dr|Z|br|mr|0,Q|C|0,1)|0;mr=wr+48|0;o[mr>>2]=Q&67108863;o[mr+4>>2]=0;mr=po(a[n+23>>0]|0|0,0,8)|0;Q=C;br=po(a[n+24>>0]|0|0,0,16)|0;Q=Q|C;Z=a[n+25>>0]|0;dr=po(Z|0,0,24)|0;Q=mo(mr|pr|br|dr|0,Q|C|0,3)|0;dr=wr+56|0;o[dr>>2]=Q&33554431;o[dr+4>>2]=0;dr=po(a[n+26>>0]|0|0,0,8)|0;Q=C;br=po(a[n+27>>0]|0|0,0,16)|0;Q=Q|C;pr=a[n+28>>0]|0;mr=po(pr|0,0,24)|0;Q=mo(dr|Z|br|mr|0,Q|C|0,4)|0;mr=wr+64|0;o[mr>>2]=Q&67108863;o[mr+4>>2]=0;mr=po(a[n+29>>0]|0|0,0,8)|0;Q=C;br=po(a[n+30>>0]|0|0,0,16)|0;Q=Q|C;Z=po(a[n+31>>0]|0|0,0,24)|0;Q=mo(mr|pr|br|Z|0,Q|C|0,6)|0;Z=wr+72|0;o[Z>>2]=Q&33554431;o[Z+4>>2]=0;ho(Mr|0,0,152)|0;Z=Mr;o[Z>>2]=1;o[Z+4>>2]=0;ho(Er|0,0,152)|0;Z=Er;o[Z>>2]=1;o[Z+4>>2]=0;ho(t|0,0,152)|0;ho(u|0,0,152)|0;ho(s|0,0,152)|0;Z=s;o[Z>>2]=1;o[Z+4>>2]=0;ho(_|0,0,152)|0;ho(h|0,0,152)|0;Z=h;o[Z>>2]=1;o[Z+4>>2]=0;Z=Tr+80|0;Q=Z+72|0;do{o[Z>>2]=0;Z=Z+4|0}while((Z|0)<(Q|0));Z=Tr;d=wr;Q=Z+80|0;do{o[Z>>2]=o[d>>2];Z=Z+4|0;d=d+4|0}while((Z|0)<(Q|0));se=yr+144|0;_e=yr+64|0;le=yr+136|0;fe=yr+56|0;ce=yr+128|0;he=yr+48|0;de=yr+120|0;me=yr+40|0;pe=yr+112|0;be=yr+32|0;we=yr+104|0;ve=yr+24|0;ke=yr+96|0;ge=yr+16|0;ye=yr+88|0;Ae=yr+8|0;Te=yr+80|0;Me=kr+144|0;Ee=kr+64|0;Se=kr+136|0;xe=kr+56|0;Oe=kr+128|0;Re=kr+48|0;Ce=kr+120|0;Ie=kr+40|0;Le=kr+112|0;Pe=kr+32|0;Ne=kr+104|0;Ue=kr+24|0;Fe=kr+96|0;ze=kr+16|0;qe=kr+88|0;He=kr+8|0;je=kr+80|0;De=yr+72|0;Ve=kr+72|0;Be=Ar+8|0;Ge=xr+8|0;Ke=Ar+16|0;We=xr+16|0;Ye=Ar+24|0;Je=xr+24|0;Xe=Ar+32|0;Qe=xr+32|0;Ze=Ar+40|0;$e=xr+40|0;er=Ar+48|0;rr=xr+48|0;nr=Ar+56|0;ir=xr+56|0;tr=Ar+64|0;or=xr+64|0;ar=Ar+72|0;ur=xr+72|0;sr=Ir+80|0;_r=Ir+8|0;lr=Ir+16|0;fr=Ir+24|0;cr=Ir+32|0;hr=Ir+40|0;dr=Ir+48|0;mr=Ir+56|0;pr=Ir+64|0;br=Ir+72|0;n=0;l=Tr;c=Mr;r=Er;do{d=i[vr+(31-n)>>0]|0;ue=0;ie=u;te=s;oe=_;ae=h;while(1){$=d&255;ee=lo(0,0,$>>>7|0,0)|0;ne=C;u=0;do{W=r+(u<<3)|0;G=W;K=o[G>>2]|0;G=o[G+4>>2]|0;Z=l+(u<<3)|0;J=Z;Q=o[J>>2]|0;J=o[J+4>>2]|0;X=(Q^K)ⅇY=(J^G)≠K=co(0,X^K|0,32)|0;o[W>>2]=K;o[W+4>>2]=C;Q=co(0,X^Q|0,32)|0;o[Z>>2]=Q;o[Z+4>>2]=C;u=u+1|0}while((u|0)!=10);u=0;do{W=t+(u<<3)|0;G=W;K=o[G>>2]|0;G=o[G+4>>2]|0;Z=c+(u<<3)|0;J=Z;Q=o[J>>2]|0;J=o[J+4>>2]|0;X=(Q^K)ⅇY=(J^G)≠K=co(0,X^K|0,32)|0;o[W>>2]=K;o[W+4>>2]=C;Q=co(0,X^Q|0,32)|0;o[Z>>2]=Q;o[Z+4>>2]=C;u=u+1|0}while((u|0)!=10);Y=r;s=o[Y>>2]|0;Y=o[Y+4>>2]|0;b=r+8|0;z=b;B=o[z>>2]|0;z=o[z+4>>2]|0;Fr=r+16|0;x=Fr;S=o[x>>2]|0;x=o[x+4>>2]|0;K=r+24|0;Pr=K;w=o[Pr>>2]|0;Pr=o[Pr+4>>2]|0;X=r+32|0;Q=X;zr=o[Q>>2]|0;Q=o[Q+4>>2]|0;I=r+40|0;u=I;W=o[u>>2]|0;u=o[u+4>>2]|0;k=r+48|0;F=k;U=o[F>>2]|0;F=o[F+4>>2]|0;T=r+56|0;M=T;H=o[M>>2]|0;M=o[M+4>>2]|0;qr=r+64|0;O=qr;g=o[O>>2]|0;O=o[O+4>>2]|0;_=r+72|0;Nr=_;Ur=o[Nr>>2]|0;Nr=o[Nr+4>>2]|0;J=t;V=o[J>>2]|0;J=o[J+4>>2]|0;L=fo(V|0,J|0,s|0,Y|0)|0;P=r;o[P>>2]=L;o[P+4>>2]=C;P=t+8|0;L=P;q=o[L>>2]|0;L=o[L+4>>2]|0;A=fo(q|0,L|0,B|0,z|0)|0;o[b>>2]=A;o[b+4>>2]=C;b=t+16|0;A=b;y=o[A>>2]|0;A=o[A+4>>2]|0;h=fo(y|0,A|0,S|0,x|0)|0;o[Fr>>2]=h;o[Fr+4>>2]=C;Fr=t+24|0;h=Fr;d=o[h>>2]|0;h=o[h+4>>2]|0;jr=fo(d|0,h|0,w|0,Pr|0)|0;o[K>>2]=jr;o[K+4>>2]=C;K=t+32|0;jr=K;Z=o[jr>>2]|0;jr=o[jr+4>>2]|0;D=fo(Z|0,jr|0,zr|0,Q|0)|0;o[X>>2]=D;o[X+4>>2]=C;X=t+40|0;D=X;j=o[D>>2]|0;D=o[D+4>>2]|0;R=fo(j|0,D|0,W|0,u|0)|0;o[I>>2]=R;o[I+4>>2]=C;I=t+48|0;R=I;G=o[R>>2]|0;R=o[R+4>>2]|0;N=fo(G|0,R|0,U|0,F|0)|0;o[k>>2]=N;o[k+4>>2]=C;k=t+56|0;N=k;E=o[N>>2]|0;N=o[N+4>>2]|0;p=fo(E|0,N|0,H|0,M|0)|0;o[T>>2]=p;o[T+4>>2]=C;T=t+64|0;p=T;m=o[p>>2]|0;p=o[p+4>>2]|0;Hr=fo(m|0,p|0,g|0,O|0)|0;o[qr>>2]=Hr;o[qr+4>>2]=C;qr=t+72|0;Hr=qr;v=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;Dr=fo(v|0,Hr|0,Ur|0,Nr|0)|0;o[_>>2]=Dr;o[_+4>>2]=C;J=lo(s|0,Y|0,V|0,J|0)|0;V=t;o[V>>2]=J;o[V+4>>2]=C;L=lo(B|0,z|0,q|0,L|0)|0;o[P>>2]=L;o[P+4>>2]=C;A=lo(S|0,x|0,y|0,A|0)|0;o[b>>2]=A;o[b+4>>2]=C;h=lo(w|0,Pr|0,d|0,h|0)|0;o[Fr>>2]=h;o[Fr+4>>2]=C;jr=lo(zr|0,Q|0,Z|0,jr|0)|0;o[K>>2]=jr;o[K+4>>2]=C;D=lo(W|0,u|0,j|0,D|0)|0;o[X>>2]=D;o[X+4>>2]=C;R=lo(U|0,F|0,G|0,R|0)|0;o[I>>2]=R;o[I+4>>2]=C;N=lo(H|0,M|0,E|0,N|0)|0;o[k>>2]=N;o[k+4>>2]=C;p=lo(g|0,O|0,m|0,p|0)|0;o[T>>2]=p;o[T+4>>2]=C;Hr=lo(Ur|0,Nr|0,v|0,Hr|0)|0;o[qr>>2]=Hr;o[qr+4>>2]=C;qr=l;Hr=o[qr>>2]|0;qr=o[qr+4>>2]|0;v=l+8|0;Nr=v;Ur=o[Nr>>2]|0;Nr=o[Nr+4>>2]|0;T=l+16|0;p=T;m=o[p>>2]|0;p=o[p+4>>2]|0;O=l+24|0;g=O;k=o[g>>2]|0;g=o[g+4>>2]|0;N=l+32|0;E=N;M=o[E>>2]|0;E=o[E+4>>2]|0;H=l+40|0;I=H;R=o[I>>2]|0;I=o[I+4>>2]|0;G=l+48|0;F=G;U=o[F>>2]|0;F=o[F+4>>2]|0;X=l+56|0;D=X;j=o[D>>2]|0;D=o[D+4>>2]|0;u=l+64|0;W=u;K=o[W>>2]|0;W=o[W+4>>2]|0;jr=l+72|0;Z=jr;Q=o[Z>>2]|0;Z=o[Z+4>>2]|0;zr=c;Fr=o[zr>>2]|0;zr=o[zr+4>>2]|0;h=fo(Fr|0,zr|0,Hr|0,qr|0)|0;d=l;o[d>>2]=h;o[d+4>>2]=C;d=c+8|0;h=d;Pr=o[h>>2]|0;h=o[h+4>>2]|0;w=fo(Pr|0,h|0,Ur|0,Nr|0)|0;o[v>>2]=w;o[v+4>>2]=C;v=c+16|0;w=v;b=o[w>>2]|0;w=o[w+4>>2]|0;A=fo(b|0,w|0,m|0,p|0)|0;o[T>>2]=A;o[T+4>>2]=C;T=c+24|0;A=T;y=o[A>>2]|0;A=o[A+4>>2]|0;x=fo(y|0,A|0,k|0,g|0)|0;o[O>>2]=x;o[O+4>>2]=C;O=c+32|0;x=O;S=o[x>>2]|0;x=o[x+4>>2]|0;P=fo(S|0,x|0,M|0,E|0)|0;o[N>>2]=P;o[N+4>>2]=C;N=c+40|0;P=N;L=o[P>>2]|0;P=o[P+4>>2]|0;q=fo(L|0,P|0,R|0,I|0)|0;o[H>>2]=q;o[H+4>>2]=C;H=c+48|0;q=H;z=o[q>>2]|0;q=o[q+4>>2]|0;B=fo(z|0,q|0,U|0,F|0)|0;o[G>>2]=B;o[G+4>>2]=C;G=c+56|0;B=G;V=o[B>>2]|0;B=o[B+4>>2]|0;J=fo(V|0,B|0,j|0,D|0)|0;o[X>>2]=J;o[X+4>>2]=C;X=c+64|0;J=X;Y=o[J>>2]|0;J=o[J+4>>2]|0;s=fo(Y|0,J|0,K|0,W|0)|0;o[u>>2]=s;o[u+4>>2]=C;u=c+72|0;s=u;_=o[s>>2]|0;s=o[s+4>>2]|0;Dr=fo(_|0,s|0,Q|0,Z|0)|0;o[jr>>2]=Dr;o[jr+4>>2]=C;zr=lo(Hr|0,qr|0,Fr|0,zr|0)|0;Fr=c;o[Fr>>2]=zr;o[Fr+4>>2]=C;h=lo(Ur|0,Nr|0,Pr|0,h|0)|0;o[d>>2]=h;o[d+4>>2]=C;w=lo(m|0,p|0,b|0,w|0)|0;o[v>>2]=w;o[v+4>>2]=C;A=lo(k|0,g|0,y|0,A|0)|0;o[T>>2]=A;o[T+4>>2]=C;x=lo(M|0,E|0,S|0,x|0)|0;o[O>>2]=x;o[O+4>>2]=C;P=lo(R|0,I|0,L|0,P|0)|0;o[N>>2]=P;o[N+4>>2]=C;q=lo(U|0,F|0,z|0,q|0)|0;o[H>>2]=q;o[H+4>>2]=C;B=lo(j|0,D|0,V|0,B|0)|0;o[G>>2]=B;o[G+4>>2]=C;J=lo(K|0,W|0,Y|0,J|0)|0;o[X>>2]=J;o[X+4>>2]=C;s=lo(Q|0,Z|0,_|0,s|0)|0;o[u>>2]=s;o[u+4>>2]=C;no(yr,l,t);no(kr,r,c);u=se;s=o[u>>2]|0;u=o[u+4>>2]|0;_=_e;Z=o[_>>2]|0;_=o[_+4>>2]|0;Q=yo(s|0,u|0,18,0)|0;X=C;u=fo(Z|0,_|0,s|0,u|0)|0;X=fo(u|0,C|0,Q|0,X|0)|0;Q=_e;o[Q>>2]=X;o[Q+4>>2]=C;Q=le;X=o[Q>>2]|0;Q=o[Q+4>>2]|0;u=fe;s=o[u>>2]|0;u=o[u+4>>2]|0;_=yo(X|0,Q|0,18,0)|0;Z=C;Q=fo(s|0,u|0,X|0,Q|0)|0;Z=fo(Q|0,C|0,_|0,Z|0)|0;_=fe;o[_>>2]=Z;o[_+4>>2]=C;_=ce;Z=o[_>>2]|0;_=o[_+4>>2]|0;Q=he;X=o[Q>>2]|0;Q=o[Q+4>>2]|0;u=yo(Z|0,_|0,18,0)|0;s=C;_=fo(X|0,Q|0,Z|0,_|0)|0;s=fo(_|0,C|0,u|0,s|0)|0;u=he;o[u>>2]=s;o[u+4>>2]=C;u=de;s=o[u>>2]|0;u=o[u+4>>2]|0;_=me;Z=o[_>>2]|0;_=o[_+4>>2]|0;Q=yo(s|0,u|0,18,0)|0;X=C;u=fo(Z|0,_|0,s|0,u|0)|0;X=fo(u|0,C|0,Q|0,X|0)|0;Q=me;o[Q>>2]=X;o[Q+4>>2]=C;Q=pe;X=o[Q>>2]|0;Q=o[Q+4>>2]|0;u=be;s=o[u>>2]|0;u=o[u+4>>2]|0;_=yo(X|0,Q|0,18,0)|0;Z=C;Q=fo(s|0,u|0,X|0,Q|0)|0;Z=fo(Q|0,C|0,_|0,Z|0)|0;_=be;o[_>>2]=Z;o[_+4>>2]=C;_=we;Z=o[_>>2]|0;_=o[_+4>>2]|0;Q=ve;X=o[Q>>2]|0;Q=o[Q+4>>2]|0;u=yo(Z|0,_|0,18,0)|0;s=C;_=fo(X|0,Q|0,Z|0,_|0)|0;s=fo(_|0,C|0,u|0,s|0)|0;u=ve;o[u>>2]=s;o[u+4>>2]=C;u=ke;s=o[u>>2]|0;u=o[u+4>>2]|0;_=ge;Z=o[_>>2]|0;_=o[_+4>>2]|0;Q=yo(s|0,u|0,18,0)|0;X=C;u=fo(Z|0,_|0,s|0,u|0)|0;X=fo(u|0,C|0,Q|0,X|0)|0;Q=ge;o[Q>>2]=X;o[Q+4>>2]=C;Q=ye;X=o[Q>>2]|0;Q=o[Q+4>>2]|0;u=Ae;s=o[u>>2]|0;u=o[u+4>>2]|0;_=yo(X|0,Q|0,18,0)|0;Z=C;Q=fo(s|0,u|0,X|0,Q|0)|0;Z=fo(Q|0,C|0,_|0,Z|0)|0;_=Ae;o[_>>2]=Z;o[_+4>>2]=C;_=Te;Z=o[_>>2]|0;_=o[_+4>>2]|0;Q=yr;X=o[Q>>2]|0;Q=o[Q+4>>2]|0;u=yo(Z|0,_|0,18,0)|0;s=C;_=fo(X|0,Q|0,Z|0,_|0)|0;s=fo(_|0,C|0,u|0,s|0)|0;u=C;_=yr;o[_>>2]=s;o[_+4>>2]=u;_=Te;o[_>>2]=0;o[_+4>>2]=0;_=0;do{qr=fo(u>>31>>>6|0,0,s|0,u|0)|0;qr=co(qr|0,C|0,26)|0;zr=C;Fr=po(qr|0,zr|0,26)|0;Fr=lo(s|0,u|0,Fr|0,C|0)|0;Dr=yr+(_<<3)|0;o[Dr>>2]=Fr;o[Dr+4>>2]=C;Dr=yr+((_|1)<<3)|0;Fr=Dr;Fr=fo(qr|0,zr|0,o[Fr>>2]|0,o[Fr+4>>2]|0)|0;zr=C;qr=fo(zr>>31>>>7|0,0,Fr|0,zr|0)|0;qr=co(qr|0,C|0,25)|0;Hr=C;jr=po(qr|0,Hr|0,25)|0;jr=lo(Fr|0,zr|0,jr|0,C|0)|0;o[Dr>>2]=jr;o[Dr+4>>2]=C;_=_+2|0;Dr=yr+(_<<3)|0;jr=Dr;s=fo(qr|0,Hr|0,o[jr>>2]|0,o[jr+4>>2]|0)|0;u=C;o[Dr>>2]=s;o[Dr+4>>2]=u}while(_>>>0<10);d=Te;h=o[d>>2]|0;d=o[d+4>>2]|0;u=yr;m=o[u>>2]|0;u=o[u+4>>2]|0;s=yo(h|0,d|0,18,0)|0;_=C;d=fo(m|0,u|0,h|0,d|0)|0;_=fo(d|0,C|0,s|0,_|0)|0;s=C;d=Te;o[d>>2]=0;o[d+4>>2]=0;d=fo(s>>31>>>6|0,0,_|0,s|0)|0;d=co(d|0,C|0,26)|0;h=C;u=po(d|0,h|0,26)|0;u=lo(_|0,s|0,u|0,C|0)|0;s=C;_=yr;o[_>>2]=u;o[_+4>>2]=s;_=Ae;_=fo(d|0,h|0,o[_>>2]|0,o[_+4>>2]|0)|0;h=C;d=Ae;o[d>>2]=_;o[d+4>>2]=h;d=Me;m=o[d>>2]|0;d=o[d+4>>2]|0;p=Ee;Dr=o[p>>2]|0;p=o[p+4>>2]|0;jr=yo(m|0,d|0,18,0)|0;Hr=C;d=fo(Dr|0,p|0,m|0,d|0)|0;Hr=fo(d|0,C|0,jr|0,Hr|0)|0;jr=Ee;o[jr>>2]=Hr;o[jr+4>>2]=C;jr=Se;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;d=xe;m=o[d>>2]|0;d=o[d+4>>2]|0;p=yo(Hr|0,jr|0,18,0)|0;Dr=C;jr=fo(m|0,d|0,Hr|0,jr|0)|0;Dr=fo(jr|0,C|0,p|0,Dr|0)|0;p=xe;o[p>>2]=Dr;o[p+4>>2]=C;p=Oe;Dr=o[p>>2]|0;p=o[p+4>>2]|0;jr=Re;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;d=yo(Dr|0,p|0,18,0)|0;m=C;p=fo(Hr|0,jr|0,Dr|0,p|0)|0;m=fo(p|0,C|0,d|0,m|0)|0;d=Re;o[d>>2]=m;o[d+4>>2]=C;d=Ce;m=o[d>>2]|0;d=o[d+4>>2]|0;p=Ie;Dr=o[p>>2]|0;p=o[p+4>>2]|0;jr=yo(m|0,d|0,18,0)|0;Hr=C;d=fo(Dr|0,p|0,m|0,d|0)|0;Hr=fo(d|0,C|0,jr|0,Hr|0)|0;jr=Ie;o[jr>>2]=Hr;o[jr+4>>2]=C;jr=Le;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;d=Pe;m=o[d>>2]|0;d=o[d+4>>2]|0;p=yo(Hr|0,jr|0,18,0)|0;Dr=C;jr=fo(m|0,d|0,Hr|0,jr|0)|0;Dr=fo(jr|0,C|0,p|0,Dr|0)|0;p=Pe;o[p>>2]=Dr;o[p+4>>2]=C;p=Ne;Dr=o[p>>2]|0;p=o[p+4>>2]|0;jr=Ue;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;d=yo(Dr|0,p|0,18,0)|0;m=C;p=fo(Hr|0,jr|0,Dr|0,p|0)|0;m=fo(p|0,C|0,d|0,m|0)|0;d=Ue;o[d>>2]=m;o[d+4>>2]=C;d=Fe;m=o[d>>2]|0;d=o[d+4>>2]|0;p=ze;Dr=o[p>>2]|0;p=o[p+4>>2]|0;jr=yo(m|0,d|0,18,0)|0;Hr=C;d=fo(Dr|0,p|0,m|0,d|0)|0;Hr=fo(d|0,C|0,jr|0,Hr|0)|0;jr=ze;o[jr>>2]=Hr;o[jr+4>>2]=C;jr=qe;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;d=He;m=o[d>>2]|0;d=o[d+4>>2]|0;p=yo(Hr|0,jr|0,18,0)|0;Dr=C;jr=fo(m|0,d|0,Hr|0,jr|0)|0;Dr=fo(jr|0,C|0,p|0,Dr|0)|0;p=He;o[p>>2]=Dr;o[p+4>>2]=C;p=je;Dr=o[p>>2]|0;p=o[p+4>>2]|0;jr=kr;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;d=yo(Dr|0,p|0,18,0)|0;m=C;p=fo(Hr|0,jr|0,Dr|0,p|0)|0;m=fo(p|0,C|0,d|0,m|0)|0;d=C;p=kr;o[p>>2]=m;o[p+4>>2]=d;p=je;o[p>>2]=0;o[p+4>>2]=0;p=0;do{qr=fo(d>>31>>>6|0,0,m|0,d|0)|0;qr=co(qr|0,C|0,26)|0;zr=C;Fr=po(qr|0,zr|0,26)|0;Fr=lo(m|0,d|0,Fr|0,C|0)|0;Dr=kr+(p<<3)|0;o[Dr>>2]=Fr;o[Dr+4>>2]=C;Dr=kr+((p|1)<<3)|0;Fr=Dr;Fr=fo(qr|0,zr|0,o[Fr>>2]|0,o[Fr+4>>2]|0)|0;zr=C;qr=fo(zr>>31>>>7|0,0,Fr|0,zr|0)|0;qr=co(qr|0,C|0,25)|0;Hr=C;jr=po(qr|0,Hr|0,25)|0;jr=lo(Fr|0,zr|0,jr|0,C|0)|0;o[Dr>>2]=jr;o[Dr+4>>2]=C;p=p+2|0;Dr=kr+(p<<3)|0;jr=Dr;m=fo(qr|0,Hr|0,o[jr>>2]|0,o[jr+4>>2]|0)|0;d=C;o[Dr>>2]=m;o[Dr+4>>2]=d}while(p>>>0<10);R=je;x=o[R>>2]|0;R=o[R+4>>2]|0;M=kr;O=o[M>>2]|0;M=o[M+4>>2]|0;E=yo(x|0,R|0,18,0)|0;S=C;R=fo(O|0,M|0,x|0,R|0)|0;S=fo(R|0,C|0,E|0,S|0)|0;E=C;R=je;o[R>>2]=0;o[R+4>>2]=0;R=fo(E>>31>>>6|0,0,S|0,E|0)|0;R=co(R|0,C|0,26)|0;x=C;M=po(R|0,x|0,26)|0;M=lo(S|0,E|0,M|0,C|0)|0;E=C;S=He;S=fo(R|0,x|0,o[S>>2]|0,o[S+4>>2]|0)|0;x=C;R=ge;O=o[R>>2]|0;R=o[R+4>>2]|0;N=ve;P=o[N>>2]|0;N=o[N+4>>2]|0;q=be;z=o[q>>2]|0;q=o[q+4>>2]|0;V=me;D=o[V>>2]|0;V=o[V+4>>2]|0;W=he;K=o[W>>2]|0;W=o[W+4>>2]|0;Q=fe;X=o[Q>>2]|0;Q=o[Q+4>>2]|0;Ur=_e;Nr=o[Ur>>2]|0;Ur=o[Ur+4>>2]|0;Hr=De;qr=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;L=fo(M|0,E|0,u|0,s|0)|0;I=yr;o[I>>2]=L;o[I+4>>2]=C;I=fo(S|0,x|0,_|0,h|0)|0;L=Ae;o[L>>2]=I;o[L+4>>2]=C;L=ze;I=o[L>>2]|0;L=o[L+4>>2]|0;U=fo(I|0,L|0,O|0,R|0)|0;F=ge;o[F>>2]=U;o[F+4>>2]=C;F=Ue;U=o[F>>2]|0;F=o[F+4>>2]|0;H=fo(U|0,F|0,P|0,N|0)|0;j=ve;o[j>>2]=H;o[j+4>>2]=C;j=Pe;H=o[j>>2]|0;j=o[j+4>>2]|0;B=fo(H|0,j|0,z|0,q|0)|0;G=be;o[G>>2]=B;o[G+4>>2]=C;G=Ie;B=o[G>>2]|0;G=o[G+4>>2]|0;Y=fo(B|0,G|0,D|0,V|0)|0;J=me;o[J>>2]=Y;o[J+4>>2]=C;J=Re;Y=o[J>>2]|0;J=o[J+4>>2]|0;Z=fo(Y|0,J|0,K|0,W|0)|0;Pr=he;o[Pr>>2]=Z;o[Pr+4>>2]=C;Pr=xe;Z=o[Pr>>2]|0;Pr=o[Pr+4>>2]|0;Fr=fo(Z|0,Pr|0,X|0,Q|0)|0;zr=fe;o[zr>>2]=Fr;o[zr+4>>2]=C;zr=Ee;Fr=o[zr>>2]|0;zr=o[zr+4>>2]|0;jr=fo(Fr|0,zr|0,Nr|0,Ur|0)|0;Dr=_e;o[Dr>>2]=jr;o[Dr+4>>2]=C;Dr=Ve;jr=o[Dr>>2]|0;Dr=o[Dr+4>>2]|0;A=fo(jr|0,Dr|0,qr|0,Hr|0)|0;T=De;o[T>>2]=A;o[T+4>>2]=C;u=lo(u|0,s|0,M|0,E|0)|0;s=kr;o[s>>2]=u;o[s+4>>2]=C;s=lo(_|0,h|0,S|0,x|0)|0;u=He;o[u>>2]=s;o[u+4>>2]=C;u=lo(O|0,R|0,I|0,L|0)|0;s=ze;o[s>>2]=u;o[s+4>>2]=C;s=lo(P|0,N|0,U|0,F|0)|0;u=Ue;o[u>>2]=s;o[u+4>>2]=C;u=lo(z|0,q|0,H|0,j|0)|0;s=Pe;o[s>>2]=u;o[s+4>>2]=C;s=lo(D|0,V|0,B|0,G|0)|0;u=Ie;o[u>>2]=s;o[u+4>>2]=C;u=lo(K|0,W|0,Y|0,J|0)|0;s=Re;o[s>>2]=u;o[s+4>>2]=C;s=lo(X|0,Q|0,Z|0,Pr|0)|0;u=xe;o[u>>2]=s;o[u+4>>2]=C;u=lo(Nr|0,Ur|0,Fr|0,zr|0)|0;s=Ee;o[s>>2]=u;o[s+4>>2]=C;s=lo(qr|0,Hr|0,jr|0,Dr|0)|0;u=Ve;o[u>>2]=s;o[u+4>>2]=C;io(Or,yr);io(gr,kr);no(kr,gr,wr);u=Me;s=o[u>>2]|0;u=o[u+4>>2]|0;_=Ee;Dr=o[_>>2]|0;_=o[_+4>>2]|0;jr=yo(s|0,u|0,18,0)|0;Hr=C;u=fo(Dr|0,_|0,s|0,u|0)|0;Hr=fo(u|0,C|0,jr|0,Hr|0)|0;jr=Ee;o[jr>>2]=Hr;o[jr+4>>2]=C;jr=Se;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;u=xe;s=o[u>>2]|0;u=o[u+4>>2]|0;_=yo(Hr|0,jr|0,18,0)|0;Dr=C;jr=fo(s|0,u|0,Hr|0,jr|0)|0;Dr=fo(jr|0,C|0,_|0,Dr|0)|0;_=xe;o[_>>2]=Dr;o[_+4>>2]=C;_=Oe;Dr=o[_>>2]|0;_=o[_+4>>2]|0;jr=Re;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;u=yo(Dr|0,_|0,18,0)|0;s=C;_=fo(Hr|0,jr|0,Dr|0,_|0)|0;s=fo(_|0,C|0,u|0,s|0)|0;u=Re;o[u>>2]=s;o[u+4>>2]=C;u=Ce;s=o[u>>2]|0;u=o[u+4>>2]|0;_=Ie;Dr=o[_>>2]|0;_=o[_+4>>2]|0;jr=yo(s|0,u|0,18,0)|0;Hr=C;u=fo(Dr|0,_|0,s|0,u|0)|0;Hr=fo(u|0,C|0,jr|0,Hr|0)|0;jr=Ie;o[jr>>2]=Hr;o[jr+4>>2]=C;jr=Le;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;u=Pe;s=o[u>>2]|0;u=o[u+4>>2]|0;_=yo(Hr|0,jr|0,18,0)|0;Dr=C;jr=fo(s|0,u|0,Hr|0,jr|0)|0;Dr=fo(jr|0,C|0,_|0,Dr|0)|0;_=Pe;o[_>>2]=Dr;o[_+4>>2]=C;_=Ne;Dr=o[_>>2]|0;_=o[_+4>>2]|0;jr=Ue;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;u=yo(Dr|0,_|0,18,0)|0;s=C;_=fo(Hr|0,jr|0,Dr|0,_|0)|0;s=fo(_|0,C|0,u|0,s|0)|0;u=Ue;o[u>>2]=s;o[u+4>>2]=C;u=Fe;s=o[u>>2]|0;u=o[u+4>>2]|0;_=ze;Dr=o[_>>2]|0;_=o[_+4>>2]|0;jr=yo(s|0,u|0,18,0)|0;Hr=C;u=fo(Dr|0,_|0,s|0,u|0)|0;Hr=fo(u|0,C|0,jr|0,Hr|0)|0;jr=ze;o[jr>>2]=Hr;o[jr+4>>2]=C;jr=qe;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;u=He;s=o[u>>2]|0;u=o[u+4>>2]|0;_=yo(Hr|0,jr|0,18,0)|0;Dr=C;jr=fo(s|0,u|0,Hr|0,jr|0)|0;Dr=fo(jr|0,C|0,_|0,Dr|0)|0;_=He;o[_>>2]=Dr;o[_+4>>2]=C;_=je;Dr=o[_>>2]|0;_=o[_+4>>2]|0;jr=kr;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;u=yo(Dr|0,_|0,18,0)|0;s=C;_=fo(Hr|0,jr|0,Dr|0,_|0)|0;s=fo(_|0,C|0,u|0,s|0)|0;u=C;_=kr;o[_>>2]=s;o[_+4>>2]=u;_=je;o[_>>2]=0;o[_+4>>2]=0;_=0;do{qr=fo(u>>31>>>6|0,0,s|0,u|0)|0;qr=co(qr|0,C|0,26)|0;zr=C;Fr=po(qr|0,zr|0,26)|0;Fr=lo(s|0,u|0,Fr|0,C|0)|0;Dr=kr+(_<<3)|0;o[Dr>>2]=Fr;o[Dr+4>>2]=C;Dr=kr+((_|1)<<3)|0;Fr=Dr;Fr=fo(qr|0,zr|0,o[Fr>>2]|0,o[Fr+4>>2]|0)|0;zr=C;qr=fo(zr>>31>>>7|0,0,Fr|0,zr|0)|0;qr=co(qr|0,C|0,25)|0;Hr=C;jr=po(qr|0,Hr|0,25)|0;jr=lo(Fr|0,zr|0,jr|0,C|0)|0;o[Dr>>2]=jr;o[Dr+4>>2]=C;_=_+2|0;Dr=kr+(_<<3)|0;jr=Dr;s=fo(qr|0,Hr|0,o[jr>>2]|0,o[jr+4>>2]|0)|0;u=C;o[Dr>>2]=s;o[Dr+4>>2]=u}while(_>>>0<10);Q=je;Z=o[Q>>2]|0;Q=o[Q+4>>2]|0;Dr=kr;Hr=o[Dr>>2]|0;Dr=o[Dr+4>>2]|0;d=yo(Z|0,Q|0,18,0)|0;jr=C;Q=fo(Hr|0,Dr|0,Z|0,Q|0)|0;jr=fo(Q|0,C|0,d|0,jr|0)|0;d=C;Q=je;o[Q>>2]=0;o[Q+4>>2]=0;Q=fo(d>>31>>>6|0,0,jr|0,d|0)|0;Q=co(Q|0,C|0,26)|0;Z=C;Dr=po(Q|0,Z|0,26)|0;Dr=lo(jr|0,d|0,Dr|0,C|0)|0;d=kr;o[d>>2]=Dr;o[d+4>>2]=C;d=He;d=fo(Q|0,Z|0,o[d>>2]|0,o[d+4>>2]|0)|0;Z=He;o[Z>>2]=d;o[Z+4>>2]=C;Z=ie;d=Or;Q=Z+80|0;do{o[Z>>2]=o[d>>2];Z=Z+4|0;d=d+4|0}while((Z|0)<(Q|0));Z=te;d=kr;Q=Z+80|0;do{o[Z>>2]=o[d>>2];Z=Z+4|0;d=d+4|0}while((Z|0)<(Q|0));io(Ar,r);io(xr,t);no(oe,Ar,xr);u=oe+144|0;_=o[u>>2]|0;u=o[u+4>>2]|0;s=oe+64|0;Dr=s;d=o[Dr>>2]|0;Dr=o[Dr+4>>2]|0;Hr=yo(_|0,u|0,18,0)|0;jr=C;u=fo(d|0,Dr|0,_|0,u|0)|0;jr=fo(u|0,C|0,Hr|0,jr|0)|0;o[s>>2]=jr;o[s+4>>2]=C;s=oe+136|0;jr=o[s>>2]|0;s=o[s+4>>2]|0;Hr=oe+56|0;u=Hr;_=o[u>>2]|0;u=o[u+4>>2]|0;Dr=yo(jr|0,s|0,18,0)|0;d=C;s=fo(_|0,u|0,jr|0,s|0)|0;d=fo(s|0,C|0,Dr|0,d|0)|0;o[Hr>>2]=d;o[Hr+4>>2]=C;Hr=oe+128|0;d=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;Dr=oe+48|0;s=Dr;jr=o[s>>2]|0;s=o[s+4>>2]|0;u=yo(d|0,Hr|0,18,0)|0;_=C;Hr=fo(jr|0,s|0,d|0,Hr|0)|0;_=fo(Hr|0,C|0,u|0,_|0)|0;o[Dr>>2]=_;o[Dr+4>>2]=C;Dr=oe+120|0;_=o[Dr>>2]|0;Dr=o[Dr+4>>2]|0;u=oe+40|0;Hr=u;d=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;s=yo(_|0,Dr|0,18,0)|0;jr=C;Dr=fo(d|0,Hr|0,_|0,Dr|0)|0;jr=fo(Dr|0,C|0,s|0,jr|0)|0;o[u>>2]=jr;o[u+4>>2]=C;u=oe+112|0;jr=o[u>>2]|0;u=o[u+4>>2]|0;s=oe+32|0;Dr=s;_=o[Dr>>2]|0;Dr=o[Dr+4>>2]|0;Hr=yo(jr|0,u|0,18,0)|0;d=C;u=fo(_|0,Dr|0,jr|0,u|0)|0;d=fo(u|0,C|0,Hr|0,d|0)|0;o[s>>2]=d;o[s+4>>2]=C;s=oe+104|0;d=o[s>>2]|0;s=o[s+4>>2]|0;Hr=oe+24|0;u=Hr;jr=o[u>>2]|0;u=o[u+4>>2]|0;Dr=yo(d|0,s|0,18,0)|0;_=C;s=fo(jr|0,u|0,d|0,s|0)|0;_=fo(s|0,C|0,Dr|0,_|0)|0;o[Hr>>2]=_;o[Hr+4>>2]=C;Hr=oe+96|0;_=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;Dr=oe+16|0;s=Dr;d=o[s>>2]|0;s=o[s+4>>2]|0;u=yo(_|0,Hr|0,18,0)|0;jr=C;Hr=fo(d|0,s|0,_|0,Hr|0)|0;jr=fo(Hr|0,C|0,u|0,jr|0)|0;o[Dr>>2]=jr;o[Dr+4>>2]=C;Dr=oe+88|0;jr=o[Dr>>2]|0;Dr=o[Dr+4>>2]|0;u=oe+8|0;Hr=u;_=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;s=yo(jr|0,Dr|0,18,0)|0;d=C;Dr=fo(_|0,Hr|0,jr|0,Dr|0)|0;d=fo(Dr|0,C|0,s|0,d|0)|0;s=u;o[s>>2]=d;o[s+4>>2]=C;s=oe+80|0;d=s;Dr=o[d>>2]|0;d=o[d+4>>2]|0;jr=oe;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;_=yo(Dr|0,d|0,18,0)|0;h=C;d=fo(Hr|0,jr|0,Dr|0,d|0)|0;h=fo(d|0,C|0,_|0,h|0)|0;_=C;d=oe;o[d>>2]=h;o[d+4>>2]=_;d=s;o[d>>2]=0;o[d+4>>2]=0;d=0;do{qr=fo(_>>31>>>6|0,0,h|0,_|0)|0;qr=co(qr|0,C|0,26)|0;zr=C;Fr=po(qr|0,zr|0,26)|0;Fr=lo(h|0,_|0,Fr|0,C|0)|0;Dr=oe+(d<<3)|0;o[Dr>>2]=Fr;o[Dr+4>>2]=C;Dr=oe+((d|1)<<3)|0;Fr=Dr;Fr=fo(qr|0,zr|0,o[Fr>>2]|0,o[Fr+4>>2]|0)|0;zr=C;qr=fo(zr>>31>>>7|0,0,Fr|0,zr|0)|0;qr=co(qr|0,C|0,25)|0;Hr=C;jr=po(qr|0,Hr|0,25)|0;jr=lo(Fr|0,zr|0,jr|0,C|0)|0;o[Dr>>2]=jr;o[Dr+4>>2]=C;d=d+2|0;Dr=oe+(d<<3)|0;jr=Dr;h=fo(qr|0,Hr|0,o[jr>>2]|0,o[jr+4>>2]|0)|0;_=C;o[Dr>>2]=h;o[Dr+4>>2]=_}while(d>>>0<10);I=s;P=o[I>>2]|0;I=o[I+4>>2]|0;_=oe;h=o[_>>2]|0;_=o[_+4>>2]|0;R=yo(P|0,I|0,18,0)|0;L=C;I=fo(h|0,_|0,P|0,I|0)|0;L=fo(I|0,C|0,R|0,L|0)|0;R=C;o[s>>2]=0;o[s+4>>2]=0;s=fo(R>>31>>>6|0,0,L|0,R|0)|0;s=co(s|0,C|0,26)|0;I=C;P=po(s|0,I|0,26)|0;P=lo(L|0,R|0,P|0,C|0)|0;R=oe;o[R>>2]=P;o[R+4>>2]=C;R=u;R=fo(s|0,I|0,o[R>>2]|0,o[R+4>>2]|0)|0;I=u;o[I>>2]=R;o[I+4>>2]=C;I=Ar;R=o[I>>2]|0;I=o[I+4>>2]|0;u=xr;u=lo(R|0,I|0,o[u>>2]|0,o[u+4>>2]|0)|0;s=C;P=xr;o[P>>2]=u;o[P+4>>2]=s;P=Be;L=o[P>>2]|0;P=o[P+4>>2]|0;_=Ge;_=lo(L|0,P|0,o[_>>2]|0,o[_+4>>2]|0)|0;h=C;U=Ge;o[U>>2]=_;o[U+4>>2]=h;U=Ke;N=o[U>>2]|0;U=o[U+4>>2]|0;d=We;d=lo(N|0,U|0,o[d>>2]|0,o[d+4>>2]|0)|0;m=C;z=We;o[z>>2]=d;o[z+4>>2]=m;z=Ye;F=o[z>>2]|0;z=o[z+4>>2]|0;p=Je;p=lo(F|0,z|0,o[p>>2]|0,o[p+4>>2]|0)|0;b=C;H=Je;o[H>>2]=p;o[H+4>>2]=b;H=Xe;q=o[H>>2]|0;H=o[H+4>>2]|0;w=Qe;w=lo(q|0,H|0,o[w>>2]|0,o[w+4>>2]|0)|0;v=C;D=Qe;o[D>>2]=w;o[D+4>>2]=v;D=Ze;j=o[D>>2]|0;D=o[D+4>>2]|0;k=$e;k=lo(j|0,D|0,o[k>>2]|0,o[k+4>>2]|0)|0;g=C;B=$e;o[B>>2]=k;o[B+4>>2]=g;B=er;V=o[B>>2]|0;B=o[B+4>>2]|0;y=rr;y=lo(V|0,B|0,o[y>>2]|0,o[y+4>>2]|0)|0;A=C;K=rr;o[K>>2]=y;o[K+4>>2]=A;K=nr;G=o[K>>2]|0;K=o[K+4>>2]|0;T=ir;T=lo(G|0,K|0,o[T>>2]|0,o[T+4>>2]|0)|0;M=C;Y=ir;o[Y>>2]=T;o[Y+4>>2]=M;Y=tr;W=o[Y>>2]|0;Y=o[Y+4>>2]|0;E=or;E=lo(W|0,Y|0,o[E>>2]|0,o[E+4>>2]|0)|0;S=C;X=or;o[X>>2]=E;o[X+4>>2]=S;X=ar;J=o[X>>2]|0;X=o[X+4>>2]|0;x=ur;x=lo(J|0,X|0,o[x>>2]|0,o[x+4>>2]|0)|0;O=C;Z=ur;o[Z>>2]=x;o[Z+4>>2]=O;Z=sr;Q=Z+72|0;do{o[Z>>2]=0;Z=Z+4|0}while((Z|0)<(Q|0));s=yo(u|0,s|0,121665,0)|0;u=C;Dr=Ir;o[Dr>>2]=s;o[Dr+4>>2]=u;Dr=yo(_|0,h|0,121665,0)|0;_=_r;o[_>>2]=Dr;o[_+4>>2]=C;_=yo(d|0,m|0,121665,0)|0;Dr=lr;o[Dr>>2]=_;o[Dr+4>>2]=C;Dr=yo(p|0,b|0,121665,0)|0;_=fr;o[_>>2]=Dr;o[_+4>>2]=C;_=yo(w|0,v|0,121665,0)|0;Dr=cr;o[Dr>>2]=_;o[Dr+4>>2]=C;Dr=yo(k|0,g|0,121665,0)|0;_=hr;o[_>>2]=Dr;o[_+4>>2]=C;_=yo(y|0,A|0,121665,0)|0;Dr=dr;o[Dr>>2]=_;o[Dr+4>>2]=C;Dr=yo(T|0,M|0,121665,0)|0;_=mr;o[_>>2]=Dr;o[_+4>>2]=C;_=yo(E|0,S|0,121665,0)|0;Dr=pr;o[Dr>>2]=_;o[Dr+4>>2]=C;Dr=yo(x|0,O|0,121665,0)|0;_=br;o[_>>2]=Dr;o[_+4>>2]=C;_=sr;o[_>>2]=0;o[_+4>>2]=0;_=0;do{qr=fo(u>>31>>>6|0,0,s|0,u|0)|0;qr=co(qr|0,C|0,26)|0;zr=C;Fr=po(qr|0,zr|0,26)|0;Fr=lo(s|0,u|0,Fr|0,C|0)|0;Dr=Ir+(_<<3)|0;o[Dr>>2]=Fr;o[Dr+4>>2]=C;Dr=Ir+((_|1)<<3)|0;Fr=Dr;Fr=fo(qr|0,zr|0,o[Fr>>2]|0,o[Fr+4>>2]|0)|0;zr=C;qr=fo(zr>>31>>>7|0,0,Fr|0,zr|0)|0;qr=co(qr|0,C|0,25)|0;Hr=C;jr=po(qr|0,Hr|0,25)|0;jr=lo(Fr|0,zr|0,jr|0,C|0)|0;o[Dr>>2]=jr;o[Dr+4>>2]=C;_=_+2|0;Dr=Ir+(_<<3)|0;jr=Dr;s=fo(qr|0,Hr|0,o[jr>>2]|0,o[jr+4>>2]|0)|0;u=C;o[Dr>>2]=s;o[Dr+4>>2]=u}while(_>>>0<10);u=sr;_=o[u>>2]|0;u=o[u+4>>2]|0;d=Ir;Hr=o[d>>2]|0;d=o[d+4>>2]|0;jr=yo(_|0,u|0,18,0)|0;h=C;u=fo(Hr|0,d|0,_|0,u|0)|0;h=fo(u|0,C|0,jr|0,h|0)|0;jr=C;u=sr;o[u>>2]=0;o[u+4>>2]=0;u=fo(jr>>31>>>6|0,0,h|0,jr|0)|0;u=co(u|0,C|0,26)|0;_=C;d=po(u|0,_|0,26)|0;Hr=C;s=_r;Dr=o[s>>2]|0;s=o[s+4>>2]|0;jr=fo(h|0,jr|0,R|0,I|0)|0;Hr=lo(jr|0,C|0,d|0,Hr|0)|0;d=Ir;o[d>>2]=Hr;o[d+4>>2]=C;s=fo(Dr|0,s|0,L|0,P|0)|0;_=fo(s|0,C|0,u|0,_|0)|0;u=_r;o[u>>2]=_;o[u+4>>2]=C;u=lr;u=fo(o[u>>2]|0,o[u+4>>2]|0,N|0,U|0)|0;_=lr;o[_>>2]=u;o[_+4>>2]=C;_=fr;_=fo(o[_>>2]|0,o[_+4>>2]|0,F|0,z|0)|0;u=fr;o[u>>2]=_;o[u+4>>2]=C;u=cr;u=fo(o[u>>2]|0,o[u+4>>2]|0,q|0,H|0)|0;_=cr;o[_>>2]=u;o[_+4>>2]=C;_=hr;_=fo(o[_>>2]|0,o[_+4>>2]|0,j|0,D|0)|0;u=hr;o[u>>2]=_;o[u+4>>2]=C;u=dr;u=fo(o[u>>2]|0,o[u+4>>2]|0,V|0,B|0)|0;_=dr;o[_>>2]=u;o[_+4>>2]=C;_=mr;_=fo(o[_>>2]|0,o[_+4>>2]|0,G|0,K|0)|0;u=mr;o[u>>2]=_;o[u+4>>2]=C;u=pr;u=fo(o[u>>2]|0,o[u+4>>2]|0,W|0,Y|0)|0;_=pr;o[_>>2]=u;o[_+4>>2]=C;_=br;_=fo(o[_>>2]|0,o[_+4>>2]|0,J|0,X|0)|0;u=br;o[u>>2]=_;o[u+4>>2]=C;no(ae,xr,Ir);u=ae+144|0;_=o[u>>2]|0;u=o[u+4>>2]|0;s=ae+64|0;Dr=s;d=o[Dr>>2]|0;Dr=o[Dr+4>>2]|0;Hr=yo(_|0,u|0,18,0)|0;jr=C;u=fo(d|0,Dr|0,_|0,u|0)|0;jr=fo(u|0,C|0,Hr|0,jr|0)|0;o[s>>2]=jr;o[s+4>>2]=C;s=ae+136|0;jr=o[s>>2]|0;s=o[s+4>>2]|0;Hr=ae+56|0;u=Hr;_=o[u>>2]|0;u=o[u+4>>2]|0;Dr=yo(jr|0,s|0,18,0)|0;d=C;s=fo(_|0,u|0,jr|0,s|0)|0;d=fo(s|0,C|0,Dr|0,d|0)|0;o[Hr>>2]=d;o[Hr+4>>2]=C;Hr=ae+128|0;d=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;Dr=ae+48|0;s=Dr;jr=o[s>>2]|0;s=o[s+4>>2]|0;u=yo(d|0,Hr|0,18,0)|0;_=C;Hr=fo(jr|0,s|0,d|0,Hr|0)|0;_=fo(Hr|0,C|0,u|0,_|0)|0;o[Dr>>2]=_;o[Dr+4>>2]=C;Dr=ae+120|0;_=o[Dr>>2]|0;Dr=o[Dr+4>>2]|0;u=ae+40|0;Hr=u;d=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;s=yo(_|0,Dr|0,18,0)|0;jr=C;Dr=fo(d|0,Hr|0,_|0,Dr|0)|0;jr=fo(Dr|0,C|0,s|0,jr|0)|0;o[u>>2]=jr;o[u+4>>2]=C;u=ae+112|0;jr=o[u>>2]|0;u=o[u+4>>2]|0;s=ae+32|0;Dr=s;_=o[Dr>>2]|0;Dr=o[Dr+4>>2]|0;Hr=yo(jr|0,u|0,18,0)|0;d=C;u=fo(_|0,Dr|0,jr|0,u|0)|0;d=fo(u|0,C|0,Hr|0,d|0)|0;o[s>>2]=d;o[s+4>>2]=C;s=ae+104|0;d=o[s>>2]|0;s=o[s+4>>2]|0;Hr=ae+24|0;u=Hr;jr=o[u>>2]|0;u=o[u+4>>2]|0;Dr=yo(d|0,s|0,18,0)|0;_=C;s=fo(jr|0,u|0,d|0,s|0)|0;_=fo(s|0,C|0,Dr|0,_|0)|0;o[Hr>>2]=_;o[Hr+4>>2]=C;Hr=ae+96|0;_=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;Dr=ae+16|0;s=Dr;d=o[s>>2]|0;s=o[s+4>>2]|0;u=yo(_|0,Hr|0,18,0)|0;jr=C;Hr=fo(d|0,s|0,_|0,Hr|0)|0;jr=fo(Hr|0,C|0,u|0,jr|0)|0;o[Dr>>2]=jr;o[Dr+4>>2]=C;Dr=ae+88|0;jr=o[Dr>>2]|0;Dr=o[Dr+4>>2]|0;u=ae+8|0;Hr=u;_=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;s=yo(jr|0,Dr|0,18,0)|0;d=C;Dr=fo(_|0,Hr|0,jr|0,Dr|0)|0;d=fo(Dr|0,C|0,s|0,d|0)|0;s=u;o[s>>2]=d;o[s+4>>2]=C;s=ae+80|0;d=s;Dr=o[d>>2]|0;d=o[d+4>>2]|0;jr=ae;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;_=yo(Dr|0,d|0,18,0)|0;h=C;d=fo(Hr|0,jr|0,Dr|0,d|0)|0;h=fo(d|0,C|0,_|0,h|0)|0;_=C;d=ae;o[d>>2]=h;o[d+4>>2]=_;d=s;o[d>>2]=0;o[d+4>>2]=0;d=0;do{qr=fo(_>>31>>>6|0,0,h|0,_|0)|0;qr=co(qr|0,C|0,26)|0;zr=C;Fr=po(qr|0,zr|0,26)|0;Fr=lo(h|0,_|0,Fr|0,C|0)|0;Dr=ae+(d<<3)|0;o[Dr>>2]=Fr;o[Dr+4>>2]=C;Dr=ae+((d|1)<<3)|0;Fr=Dr;Fr=fo(qr|0,zr|0,o[Fr>>2]|0,o[Fr+4>>2]|0)|0;zr=C;qr=fo(zr>>31>>>7|0,0,Fr|0,zr|0)|0;qr=co(qr|0,C|0,25)|0;Hr=C;jr=po(qr|0,Hr|0,25)|0;jr=lo(Fr|0,zr|0,jr|0,C|0)|0;o[Dr>>2]=jr;o[Dr+4>>2]=C;d=d+2|0;Dr=ae+(d<<3)|0;jr=Dr;h=fo(qr|0,Hr|0,o[jr>>2]|0,o[jr+4>>2]|0)|0;_=C;o[Dr>>2]=h;o[Dr+4>>2]=_}while(d>>>0<10);Hr=s;jr=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;qr=ae;Fr=o[qr>>2]|0;qr=o[qr+4>>2]|0;Dr=yo(jr|0,Hr|0,18,0)|0;zr=C;Hr=fo(Fr|0,qr|0,jr|0,Hr|0)|0;zr=fo(Hr|0,C|0,Dr|0,zr|0)|0;Dr=C;Hr=s;o[Hr>>2]=0;o[Hr+4>>2]=0;Hr=fo(Dr>>31>>>6|0,0,zr|0,Dr|0)|0;Hr=co(Hr|0,C|0,26)|0;jr=C;qr=po(Hr|0,jr|0,26)|0;qr=lo(zr|0,Dr|0,qr|0,C|0)|0;Dr=ae;o[Dr>>2]=qr;o[Dr+4>>2]=C;Dr=u;Dr=fo(Hr|0,jr|0,o[Dr>>2]|0,o[Dr+4>>2]|0)|0;o[u>>2]=Dr;o[u+4>>2]=C;u=0;do{Fr=oe+(u<<3)|0;Nr=Fr;Ur=o[Nr>>2]|0;Nr=o[Nr+4>>2]|0;Dr=ie+(u<<3)|0;qr=Dr;jr=o[qr>>2]|0;qr=o[qr+4>>2]|0;Hr=(jr^Ur)ⅇzr=(qr^Nr)≠Ur=co(0,Hr^Ur|0,32)|0;o[Fr>>2]=Ur;o[Fr+4>>2]=C;jr=co(0,Hr^jr|0,32)|0;o[Dr>>2]=jr;o[Dr+4>>2]=C;u=u+1|0}while((u|0)!=10);u=0;do{Fr=ae+(u<<3)|0;Nr=Fr;Ur=o[Nr>>2]|0;Nr=o[Nr+4>>2]|0;Dr=te+(u<<3)|0;qr=Dr;jr=o[qr>>2]|0;qr=o[qr+4>>2]|0;Hr=(jr^Ur)ⅇzr=(qr^Nr)≠Ur=co(0,Hr^Ur|0,32)|0;o[Fr>>2]=Ur;o[Fr+4>>2]=C;jr=co(0,Hr^jr|0,32)|0;o[Dr>>2]=jr;o[Dr+4>>2]=C;u=u+1|0}while((u|0)!=10);ue=ue+1|0;if((ue|0)==8){u=l;l=ie;s=c;c=te;_=r;r=oe;h=t;t=ae;break}else{qr=ae;Hr=oe;jr=te;Dr=ie;d=$<<1&255;ae=t;t=qr;oe=r;r=Hr;te=c;c=jr;ie=l;l=Dr}}n=n+1|0}while((n|0)!=32);Z=Sr;d=r;Q=Z+80|0;do{o[Z>>2]=o[d>>2];Z=Z+4|0;d=d+4|0}while((Z|0)<(Q|0));Z=Cr;d=t;Q=Z+80|0;do{o[Z>>2]=o[d>>2];Z=Z+4|0;d=d+4|0}while((Z|0)<(Q|0));io(Ir,Cr);io(Er,Ir);io(Mr,Er);to(Ar,Mr,Cr);to(xr,Ar,Ir);io(Mr,xr);to(yr,Mr,Ar);io(Mr,yr);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);to(kr,Mr,yr);io(Mr,kr);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);to(gr,Er,kr);io(Mr,gr);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);to(Mr,Er,gr);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);to(Or,Mr,kr);io(Mr,Or);io(Er,Mr);r=2;do{io(Mr,Er);io(Er,Mr);r=r+2|0}while((r|0)<50);to(Tr,Er,Or);io(Er,Tr);io(Mr,Er);r=2;do{io(Er,Mr);io(Mr,Er);r=r+2|0}while((r|0)<100);to(Er,Mr,Tr);io(Mr,Er);io(Er,Mr);r=2;do{io(Mr,Er);io(Er,Mr);r=r+2|0}while((r|0)<50);to(Mr,Er,Or);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);to(Rr,Er,xr);to(Cr,Sr,Rr);r=o[Cr>>2]|0;o[Ir>>2]=r;_=Ir+4|0;o[_>>2]=o[Cr+8>>2];l=Ir+8|0;o[l>>2]=o[Cr+16>>2];c=Ir+12|0;o[c>>2]=o[Cr+24>>2];h=Ir+16|0;o[h>>2]=o[Cr+32>>2];d=Ir+20|0;o[d>>2]=o[Cr+40>>2];m=Ir+24|0;o[m>>2]=o[Cr+48>>2];p=Ir+28|0;o[p>>2]=o[Cr+56>>2];b=Ir+32|0;o[b>>2]=o[Cr+64>>2];w=Ir+36|0;o[w>>2]=o[Cr+72>>2];t=0;do{n=Ir+(t<<2)|0;u=r>>31&r;if(!(t&1)){jr=u>>26;o[n>>2]=(re(jr,-67108864)|0)+r;t=t+1|0;Dr=Ir+(t<<2)|0;r=(o[Dr>>2]|0)+jr|0;o[Dr>>2]=r}else{jr=u>>25;o[n>>2]=(re(jr,-33554432)|0)+r;t=t+1|0;Dr=Ir+(t<<2)|0;r=(o[Dr>>2]|0)+jr|0;o[Dr>>2]=r}}while((t|0)!=9);t=o[w>>2]|0;r=(t>>31&t)>>25;o[w>>2]=(re(r,-33554432)|0)+t;r=(r*19|0)+(o[Ir>>2]|0)|0;o[Ir>>2]=r;t=0;do{n=Ir+(t<<2)|0;u=r>>31&r;if(!(t&1)){jr=u>>26;o[n>>2]=(re(jr,-67108864)|0)+r;t=t+1|0;Dr=Ir+(t<<2)|0;r=(o[Dr>>2]|0)+jr|0;o[Dr>>2]=r}else{jr=u>>25;o[n>>2]=(re(jr,-33554432)|0)+r;t=t+1|0;Dr=Ir+(t<<2)|0;r=(o[Dr>>2]|0)+jr|0;o[Dr>>2]=r}}while((t|0)!=9);t=o[w>>2]|0;r=(t>>31&t)>>25;o[w>>2]=(re(r,-33554432)|0)+t;r=(r*19|0)+(o[Ir>>2]|0)|0;t=(r>>31&r)>>26;r=(re(t,-67108864)|0)+r|0;o[Ir>>2]=r;o[_>>2]=t+(o[_>>2]|0);t=0;do{n=Ir+(t<<2)|0;if(!(t&1)){o[n>>2]=r&67108863;t=t+1|0;Dr=Ir+(t<<2)|0;r=(o[Dr>>2]|0)+(r>>26)|0;o[Dr>>2]=r}else{o[n>>2]=r&33554431;t=t+1|0;Dr=Ir+(t<<2)|0;r=(o[Dr>>2]|0)+(r>>25)|0;o[Dr>>2]=r}}while((t|0)!=9);r=o[w>>2]|0;o[w>>2]=r&33554431;r=(o[Ir>>2]|0)+((r>>25)*19|0)|0;o[Ir>>2]=r;t=0;do{n=Ir+(t<<2)|0;if(!(t&1)){o[n>>2]=r&67108863;t=t+1|0;Dr=Ir+(t<<2)|0;r=(o[Dr>>2]|0)+(r>>26)|0;o[Dr>>2]=r}else{o[n>>2]=r&33554431;t=t+1|0;Dr=Ir+(t<<2)|0;r=(o[Dr>>2]|0)+(r>>25)|0;o[Dr>>2]=r}}while((t|0)!=9);s=o[w>>2]|0;u=s&33554431;o[w>>2]=u;s=(o[Ir>>2]|0)+((s>>25)*19|0)|0;o[Ir>>2]=s;n=1;r=~(s+-67108845>>31);do{t=o[Ir+(n<<2)>>2]|0;if(!(n&1)){t=t<<16&(t^-67108864);t=t<<8&t;t=t<<4&t;t=t<<2&t;t=t<<1&t}else{t=t<<16&(t^-33554432);t=t<<8&t;t=t<<4&t;t=t<<2&t;t=t<<1&t}r=t>>31&r;n=n+1|0}while((n|0)!=10);Or=s-(r&67108845)|0;o[Ir>>2]=Or;Er=r&67108863;Sr=r&33554431;Cr=(o[_>>2]|0)-Sr|0;Pr=(o[l>>2]|0)-Er|0;Ur=(o[c>>2]|0)-Sr|0;Fr=(o[h>>2]|0)-Er|0;zr=(o[d>>2]|0)-Sr|0;o[d>>2]=zr;jr=(o[m>>2]|0)-Er|0;Dr=(o[p>>2]|0)-Sr|0;Er=(o[b>>2]|0)-Er|0;xr=Cr<<2;o[_>>2]=xr;Rr=Pr<<3;o[l>>2]=Rr;Ir=Ur<<5;o[c>>2]=Ir;Nr=Fr<<6;o[h>>2]=Nr;qr=jr<<1;o[m>>2]=qr;Hr=Dr<<3;o[p>>2]=Hr;o[b>>2]=Er<<4;o[w>>2]=u-Sr<<6;i[e>>0]=Or;i[e+1>>0]=Or>>>8;i[e+2>>0]=Or>>>16;i[e+3>>0]=xr|Or>>>24;i[e+4>>0]=Cr>>>6;i[e+5>>0]=Cr>>>14;i[e+6>>0]=Rr|Cr>>>22;i[e+7>>0]=Pr>>>5;i[e+8>>0]=Pr>>>13;i[e+9>>0]=Ir|Pr>>>21;i[e+10>>0]=Ur>>>3;i[e+11>>0]=Ur>>>11;i[e+12>>0]=Nr|Ur>>>19;i[e+13>>0]=Fr>>>2;i[e+14>>0]=Fr>>>10;i[e+15>>0]=Fr>>>18;i[e+16>>0]=zr;i[e+17>>0]=zr>>>8;i[e+18>>0]=zr>>>16;i[e+19>>0]=zr>>>24|qr;i[e+20>>0]=jr>>>7;i[e+21>>0]=jr>>>15;i[e+22>>0]=Hr|jr>>>23;i[e+23>>0]=Dr>>>5;i[e+24>>0]=Dr>>>13;jr=o[b>>2]|0;i[e+25>>0]=jr|Dr>>>21;i[e+26>>0]=jr>>>8;i[e+27>>0]=jr>>>16;Dr=o[w>>2]|0;i[e+28>>0]=Dr|jr>>>24;i[e+29>>0]=Dr>>>8;i[e+30>>0]=Dr>>>16;i[e+31>>0]=Dr>>>24;f=Lr;return 0}function no(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0;u=co(0,o[r>>2]|0,32)|0;h=C;y=co(0,o[n>>2]|0,32)|0;h=yo(y|0,C|0,u|0,h|0)|0;u=e;o[u>>2]=h;o[u+4>>2]=C;u=co(0,o[r>>2]|0,32)|0;h=C;y=n+8|0;w=co(0,o[y>>2]|0,32)|0;h=yo(w|0,C|0,u|0,h|0)|0;u=C;w=r+8|0;b=co(0,o[w>>2]|0,32)|0;m=C;g=co(0,o[n>>2]|0,32)|0;m=yo(g|0,C|0,b|0,m|0)|0;u=fo(m|0,C|0,h|0,u|0)|0;h=e+8|0;o[h>>2]=u;o[h+4>>2]=C;h=co(0,o[w>>2]|0,31)|0;u=C;m=co(0,o[y>>2]|0,32)|0;u=yo(m|0,C|0,h|0,u|0)|0;h=C;m=co(0,o[r>>2]|0,32)|0;b=C;g=n+16|0;f=co(0,o[g>>2]|0,32)|0;b=yo(f|0,C|0,m|0,b|0)|0;h=fo(b|0,C|0,u|0,h|0)|0;u=C;b=r+16|0;m=co(0,o[b>>2]|0,32)|0;f=C;k=co(0,o[n>>2]|0,32)|0;f=yo(k|0,C|0,m|0,f|0)|0;f=fo(h|0,u|0,f|0,C|0)|0;u=e+16|0;o[u>>2]=f;o[u+4>>2]=C;u=co(0,o[w>>2]|0,32)|0;f=C;h=co(0,o[g>>2]|0,32)|0;f=yo(h|0,C|0,u|0,f|0)|0;u=C;h=co(0,o[b>>2]|0,32)|0;m=C;k=co(0,o[y>>2]|0,32)|0;m=yo(k|0,C|0,h|0,m|0)|0;u=fo(m|0,C|0,f|0,u|0)|0;f=C;m=co(0,o[r>>2]|0,32)|0;h=C;k=n+24|0;a=co(0,o[k>>2]|0,32)|0;h=yo(a|0,C|0,m|0,h|0)|0;h=fo(u|0,f|0,h|0,C|0)|0;f=C;u=r+24|0;m=co(0,o[u>>2]|0,32)|0;a=C;_=co(0,o[n>>2]|0,32)|0;a=yo(_|0,C|0,m|0,a|0)|0;a=fo(h|0,f|0,a|0,C|0)|0;f=e+24|0;o[f>>2]=a;o[f+4>>2]=C;f=co(0,o[b>>2]|0,32)|0;a=C;h=co(0,o[g>>2]|0,32)|0;a=yo(h|0,C|0,f|0,a|0)|0;f=C;h=co(0,o[w>>2]|0,32)|0;m=C;_=co(0,o[k>>2]|0,32)|0;m=yo(_|0,C|0,h|0,m|0)|0;h=C;_=co(0,o[u>>2]|0,32)|0;p=C;d=co(0,o[y>>2]|0,32)|0;p=yo(d|0,C|0,_|0,p|0)|0;h=fo(p|0,C|0,m|0,h|0)|0;h=po(h|0,C|0,1)|0;f=fo(h|0,C|0,a|0,f|0)|0;a=C;h=co(0,o[r>>2]|0,32)|0;m=C;p=n+32|0;_=co(0,o[p>>2]|0,32)|0;m=yo(_|0,C|0,h|0,m|0)|0;m=fo(f|0,a|0,m|0,C|0)|0;a=C;f=r+32|0;h=co(0,o[f>>2]|0,32)|0;_=C;d=co(0,o[n>>2]|0,32)|0;_=yo(d|0,C|0,h|0,_|0)|0;_=fo(m|0,a|0,_|0,C|0)|0;a=e+32|0;o[a>>2]=_;o[a+4>>2]=C;a=co(0,o[b>>2]|0,32)|0;_=C;m=co(0,o[k>>2]|0,32)|0;_=yo(m|0,C|0,a|0,_|0)|0;a=C;m=co(0,o[u>>2]|0,32)|0;h=C;d=co(0,o[g>>2]|0,32)|0;h=yo(d|0,C|0,m|0,h|0)|0;a=fo(h|0,C|0,_|0,a|0)|0;_=C;h=co(0,o[w>>2]|0,32)|0;m=C;d=co(0,o[p>>2]|0,32)|0;m=yo(d|0,C|0,h|0,m|0)|0;m=fo(a|0,_|0,m|0,C|0)|0;_=C;a=co(0,o[f>>2]|0,32)|0;h=C;d=co(0,o[y>>2]|0,32)|0;h=yo(d|0,C|0,a|0,h|0)|0;h=fo(m|0,_|0,h|0,C|0)|0;_=C;m=co(0,o[r>>2]|0,32)|0;a=C;d=n+40|0;v=co(0,o[d>>2]|0,32)|0;a=yo(v|0,C|0,m|0,a|0)|0;a=fo(h|0,_|0,a|0,C|0)|0;_=C;h=r+40|0;m=co(0,o[h>>2]|0,32)|0;v=C;l=co(0,o[n>>2]|0,32)|0;v=yo(l|0,C|0,m|0,v|0)|0;v=fo(a|0,_|0,v|0,C|0)|0;_=e+40|0;o[_>>2]=v;o[_+4>>2]=C;_=co(0,o[u>>2]|0,32)|0;v=C;a=co(0,o[k>>2]|0,32)|0;v=yo(a|0,C|0,_|0,v|0)|0;_=C;a=co(0,o[w>>2]|0,32)|0;m=C;l=co(0,o[d>>2]|0,32)|0;m=yo(l|0,C|0,a|0,m|0)|0;_=fo(m|0,C|0,v|0,_|0)|0;v=C;m=co(0,o[h>>2]|0,32)|0;a=C;l=co(0,o[y>>2]|0,32)|0;a=yo(l|0,C|0,m|0,a|0)|0;a=fo(_|0,v|0,a|0,C|0)|0;a=po(a|0,C|0,1)|0;v=C;_=co(0,o[b>>2]|0,32)|0;m=C;l=co(0,o[p>>2]|0,32)|0;m=yo(l|0,C|0,_|0,m|0)|0;m=fo(a|0,v|0,m|0,C|0)|0;v=C;a=co(0,o[f>>2]|0,32)|0;_=C;l=co(0,o[g>>2]|0,32)|0;_=yo(l|0,C|0,a|0,_|0)|0;_=fo(m|0,v|0,_|0,C|0)|0;v=C;m=co(0,o[r>>2]|0,32)|0;a=C;l=n+48|0;A=co(0,o[l>>2]|0,32)|0;a=yo(A|0,C|0,m|0,a|0)|0;a=fo(_|0,v|0,a|0,C|0)|0;v=C;_=r+48|0;m=co(0,o[_>>2]|0,32)|0;A=C;c=co(0,o[n>>2]|0,32)|0;A=yo(c|0,C|0,m|0,A|0)|0;A=fo(a|0,v|0,A|0,C|0)|0;v=e+48|0;o[v>>2]=A;o[v+4>>2]=C;v=co(0,o[u>>2]|0,32)|0;A=C;a=co(0,o[p>>2]|0,32)|0;A=yo(a|0,C|0,v|0,A|0)|0;v=C;a=co(0,o[f>>2]|0,32)|0;m=C;c=co(0,o[k>>2]|0,32)|0;m=yo(c|0,C|0,a|0,m|0)|0;v=fo(m|0,C|0,A|0,v|0)|0;A=C;m=co(0,o[b>>2]|0,32)|0;a=C;c=co(0,o[d>>2]|0,32)|0;a=yo(c|0,C|0,m|0,a|0)|0;a=fo(v|0,A|0,a|0,C|0)|0;A=C;v=co(0,o[h>>2]|0,32)|0;m=C;c=co(0,o[g>>2]|0,32)|0;m=yo(c|0,C|0,v|0,m|0)|0;m=fo(a|0,A|0,m|0,C|0)|0;A=C;a=co(0,o[w>>2]|0,32)|0;v=C;c=co(0,o[l>>2]|0,32)|0;v=yo(c|0,C|0,a|0,v|0)|0;v=fo(m|0,A|0,v|0,C|0)|0;A=C;m=co(0,o[_>>2]|0,32)|0;a=C;c=co(0,o[y>>2]|0,32)|0;a=yo(c|0,C|0,m|0,a|0)|0;a=fo(v|0,A|0,a|0,C|0)|0;A=C;v=co(0,o[r>>2]|0,32)|0;m=C;c=n+56|0;T=co(0,o[c>>2]|0,32)|0;m=yo(T|0,C|0,v|0,m|0)|0;m=fo(a|0,A|0,m|0,C|0)|0;A=C;a=r+56|0;v=co(0,o[a>>2]|0,32)|0;T=C;s=co(0,o[n>>2]|0,32)|0;T=yo(s|0,C|0,v|0,T|0)|0;T=fo(m|0,A|0,T|0,C|0)|0;A=e+56|0;o[A>>2]=T;o[A+4>>2]=C;A=co(0,o[f>>2]|0,32)|0;T=C;m=co(0,o[p>>2]|0,32)|0;T=yo(m|0,C|0,A|0,T|0)|0;A=C;m=co(0,o[u>>2]|0,32)|0;v=C;s=co(0,o[d>>2]|0,32)|0;v=yo(s|0,C|0,m|0,v|0)|0;m=C;s=co(0,o[h>>2]|0,32)|0;t=C;i=co(0,o[k>>2]|0,32)|0;t=yo(i|0,C|0,s|0,t|0)|0;m=fo(t|0,C|0,v|0,m|0)|0;v=C;t=co(0,o[w>>2]|0,32)|0;s=C;i=co(0,o[c>>2]|0,32)|0;s=yo(i|0,C|0,t|0,s|0)|0;s=fo(m|0,v|0,s|0,C|0)|0;v=C;m=co(0,o[a>>2]|0,32)|0;t=C;i=co(0,o[y>>2]|0,32)|0;t=yo(i|0,C|0,m|0,t|0)|0;t=fo(s|0,v|0,t|0,C|0)|0;t=po(t|0,C|0,1)|0;A=fo(t|0,C|0,T|0,A|0)|0;T=C;t=co(0,o[b>>2]|0,32)|0;v=C;s=co(0,o[l>>2]|0,32)|0;v=yo(s|0,C|0,t|0,v|0)|0;v=fo(A|0,T|0,v|0,C|0)|0;T=C;A=co(0,o[_>>2]|0,32)|0;t=C;s=co(0,o[g>>2]|0,32)|0;t=yo(s|0,C|0,A|0,t|0)|0;t=fo(v|0,T|0,t|0,C|0)|0;T=C;v=co(0,o[r>>2]|0,32)|0;A=C;s=n+64|0;m=co(0,o[s>>2]|0,32)|0;A=yo(m|0,C|0,v|0,A|0)|0;A=fo(t|0,T|0,A|0,C|0)|0;T=C;t=r+64|0;v=co(0,o[t>>2]|0,32)|0;m=C;i=co(0,o[n>>2]|0,32)|0;m=yo(i|0,C|0,v|0,m|0)|0;m=fo(A|0,T|0,m|0,C|0)|0;T=e+64|0;o[T>>2]=m;o[T+4>>2]=C;T=co(0,o[f>>2]|0,32)|0;m=C;A=co(0,o[d>>2]|0,32)|0;m=yo(A|0,C|0,T|0,m|0)|0;T=C;A=co(0,o[h>>2]|0,32)|0;v=C;i=co(0,o[p>>2]|0,32)|0;v=yo(i|0,C|0,A|0,v|0)|0;T=fo(v|0,C|0,m|0,T|0)|0;m=C;v=co(0,o[u>>2]|0,32)|0;A=C;i=co(0,o[l>>2]|0,32)|0;A=yo(i|0,C|0,v|0,A|0)|0;A=fo(T|0,m|0,A|0,C|0)|0;m=C;T=co(0,o[_>>2]|0,32)|0;v=C;i=co(0,o[k>>2]|0,32)|0;v=yo(i|0,C|0,T|0,v|0)|0;v=fo(A|0,m|0,v|0,C|0)|0;m=C;A=co(0,o[b>>2]|0,32)|0;T=C;i=co(0,o[c>>2]|0,32)|0;T=yo(i|0,C|0,A|0,T|0)|0;T=fo(v|0,m|0,T|0,C|0)|0;m=C;v=co(0,o[a>>2]|0,32)|0;A=C;i=co(0,o[g>>2]|0,32)|0;A=yo(i|0,C|0,v|0,A|0)|0;A=fo(T|0,m|0,A|0,C|0)|0;m=C;T=co(0,o[w>>2]|0,32)|0;v=C;i=co(0,o[s>>2]|0,32)|0;v=yo(i|0,C|0,T|0,v|0)|0;v=fo(A|0,m|0,v|0,C|0)|0;m=C;A=co(0,o[t>>2]|0,32)|0;T=C;i=co(0,o[y>>2]|0,32)|0;T=yo(i|0,C|0,A|0,T|0)|0;T=fo(v|0,m|0,T|0,C|0)|0;m=C;v=co(0,o[r>>2]|0,32)|0;A=C;i=n+72|0;M=co(0,o[i>>2]|0,32)|0;A=yo(M|0,C|0,v|0,A|0)|0;A=fo(T|0,m|0,A|0,C|0)|0;m=C;r=r+72|0;T=co(0,o[r>>2]|0,32)|0;v=C;n=co(0,o[n>>2]|0,32)|0;v=yo(n|0,C|0,T|0,v|0)|0;v=fo(A|0,m|0,v|0,C|0)|0;n=e+72|0;o[n>>2]=v;o[n+4>>2]=C;n=co(0,o[h>>2]|0,32)|0;v=C;m=co(0,o[d>>2]|0,32)|0;v=yo(m|0,C|0,n|0,v|0)|0;n=C;m=co(0,o[u>>2]|0,32)|0;A=C;T=co(0,o[c>>2]|0,32)|0;A=yo(T|0,C|0,m|0,A|0)|0;n=fo(A|0,C|0,v|0,n|0)|0;v=C;A=co(0,o[a>>2]|0,32)|0;m=C;T=co(0,o[k>>2]|0,32)|0;m=yo(T|0,C|0,A|0,m|0)|0;m=fo(n|0,v|0,m|0,C|0)|0;v=C;n=co(0,o[w>>2]|0,32)|0;w=C;A=co(0,o[i>>2]|0,32)|0;w=yo(A|0,C|0,n|0,w|0)|0;w=fo(m|0,v|0,w|0,C|0)|0;v=C;m=co(0,o[r>>2]|0,32)|0;n=C;y=co(0,o[y>>2]|0,32)|0;n=yo(y|0,C|0,m|0,n|0)|0;n=fo(w|0,v|0,n|0,C|0)|0;n=po(n|0,C|0,1)|0;v=C;w=co(0,o[f>>2]|0,32)|0;m=C;y=co(0,o[l>>2]|0,32)|0;m=yo(y|0,C|0,w|0,m|0)|0;m=fo(n|0,v|0,m|0,C|0)|0;v=C;n=co(0,o[_>>2]|0,32)|0;w=C;y=co(0,o[p>>2]|0,32)|0;w=yo(y|0,C|0,n|0,w|0)|0;w=fo(m|0,v|0,w|0,C|0)|0;v=C;m=co(0,o[b>>2]|0,32)|0;n=C;y=co(0,o[s>>2]|0,32)|0;n=yo(y|0,C|0,m|0,n|0)|0;n=fo(w|0,v|0,n|0,C|0)|0;v=C;w=co(0,o[t>>2]|0,32)|0;m=C;y=co(0,o[g>>2]|0,32)|0;m=yo(y|0,C|0,w|0,m|0)|0;m=fo(n|0,v|0,m|0,C|0)|0;v=e+80|0;o[v>>2]=m;o[v+4>>2]=C;v=co(0,o[h>>2]|0,32)|0;m=C;n=co(0,o[l>>2]|0,32)|0;m=yo(n|0,C|0,v|0,m|0)|0;v=C;n=co(0,o[_>>2]|0,32)|0;w=C;y=co(0,o[d>>2]|0,32)|0;w=yo(y|0,C|0,n|0,w|0)|0;v=fo(w|0,C|0,m|0,v|0)|0;m=C;w=co(0,o[f>>2]|0,32)|0;n=C;y=co(0,o[c>>2]|0,32)|0;n=yo(y|0,C|0,w|0,n|0)|0;n=fo(v|0,m|0,n|0,C|0)|0;m=C;v=co(0,o[a>>2]|0,32)|0;w=C;y=co(0,o[p>>2]|0,32)|0;w=yo(y|0,C|0,v|0,w|0)|0;w=fo(n|0,m|0,w|0,C|0)|0;m=C;n=co(0,o[u>>2]|0,32)|0;v=C;y=co(0,o[s>>2]|0,32)|0;v=yo(y|0,C|0,n|0,v|0)|0;v=fo(w|0,m|0,v|0,C|0)|0;m=C;w=co(0,o[t>>2]|0,32)|0;n=C;y=co(0,o[k>>2]|0,32)|0;n=yo(y|0,C|0,w|0,n|0)|0;n=fo(v|0,m|0,n|0,C|0)|0;m=C;b=co(0,o[b>>2]|0,32)|0;v=C;w=co(0,o[i>>2]|0,32)|0;v=yo(w|0,C|0,b|0,v|0)|0;v=fo(n|0,m|0,v|0,C|0)|0;m=C;n=co(0,o[r>>2]|0,32)|0;b=C;g=co(0,o[g>>2]|0,32)|0;b=yo(g|0,C|0,n|0,b|0)|0;b=fo(v|0,m|0,b|0,C|0)|0;m=e+88|0;o[m>>2]=b;o[m+4>>2]=C;m=co(0,o[_>>2]|0,32)|0;b=C;v=co(0,o[l>>2]|0,32)|0;b=yo(v|0,C|0,m|0,b|0)|0;m=C;v=co(0,o[h>>2]|0,32)|0;n=C;g=co(0,o[c>>2]|0,32)|0;n=yo(g|0,C|0,v|0,n|0)|0;v=C;g=co(0,o[a>>2]|0,32)|0;w=C;y=co(0,o[d>>2]|0,32)|0;w=yo(y|0,C|0,g|0,w|0)|0;v=fo(w|0,C|0,n|0,v|0)|0;n=C;u=co(0,o[u>>2]|0,32)|0;w=C;g=co(0,o[i>>2]|0,32)|0;w=yo(g|0,C|0,u|0,w|0)|0;w=fo(v|0,n|0,w|0,C|0)|0;n=C;v=co(0,o[r>>2]|0,32)|0;u=C;k=co(0,o[k>>2]|0,32)|0;u=yo(k|0,C|0,v|0,u|0)|0;u=fo(w|0,n|0,u|0,C|0)|0;u=po(u|0,C|0,1)|0;m=fo(u|0,C|0,b|0,m|0)|0;b=C;u=co(0,o[f>>2]|0,32)|0;n=C;w=co(0,o[s>>2]|0,32)|0;n=yo(w|0,C|0,u|0,n|0)|0;n=fo(m|0,b|0,n|0,C|0)|0;b=C;m=co(0,o[t>>2]|0,32)|0;u=C;w=co(0,o[p>>2]|0,32)|0;u=yo(w|0,C|0,m|0,u|0)|0;u=fo(n|0,b|0,u|0,C|0)|0;b=e+96|0;o[b>>2]=u;o[b+4>>2]=C;b=co(0,o[_>>2]|0,32)|0;u=C;n=co(0,o[c>>2]|0,32)|0;u=yo(n|0,C|0,b|0,u|0)|0;b=C;n=co(0,o[a>>2]|0,32)|0;m=C;w=co(0,o[l>>2]|0,32)|0;m=yo(w|0,C|0,n|0,m|0)|0;b=fo(m|0,C|0,u|0,b|0)|0;u=C;m=co(0,o[h>>2]|0,32)|0;n=C;w=co(0,o[s>>2]|0,32)|0;n=yo(w|0,C|0,m|0,n|0)|0;n=fo(b|0,u|0,n|0,C|0)|0;u=C;b=co(0,o[t>>2]|0,32)|0;m=C;w=co(0,o[d>>2]|0,32)|0;m=yo(w|0,C|0,b|0,m|0)|0;m=fo(n|0,u|0,m|0,C|0)|0;u=C;f=co(0,o[f>>2]|0,32)|0;n=C;b=co(0,o[i>>2]|0,32)|0;n=yo(b|0,C|0,f|0,n|0)|0;n=fo(m|0,u|0,n|0,C|0)|0;u=C;m=co(0,o[r>>2]|0,32)|0;f=C;p=co(0,o[p>>2]|0,32)|0;f=yo(p|0,C|0,m|0,f|0)|0;f=fo(n|0,u|0,f|0,C|0)|0;u=e+104|0;o[u>>2]=f;o[u+4>>2]=C;u=co(0,o[a>>2]|0,32)|0;f=C;n=co(0,o[c>>2]|0,32)|0;f=yo(n|0,C|0,u|0,f|0)|0;u=C;n=co(0,o[h>>2]|0,32)|0;h=C;m=co(0,o[i>>2]|0,32)|0;h=yo(m|0,C|0,n|0,h|0)|0;u=fo(h|0,C|0,f|0,u|0)|0;f=C;h=co(0,o[r>>2]|0,32)|0;n=C;d=co(0,o[d>>2]|0,32)|0;n=yo(d|0,C|0,h|0,n|0)|0;n=fo(u|0,f|0,n|0,C|0)|0;n=po(n|0,C|0,1)|0;f=C;u=co(0,o[_>>2]|0,32)|0;h=C;d=co(0,o[s>>2]|0,32)|0;h=yo(d|0,C|0,u|0,h|0)|0;h=fo(n|0,f|0,h|0,C|0)|0;f=C;n=co(0,o[t>>2]|0,32)|0;u=C;d=co(0,o[l>>2]|0,32)|0;u=yo(d|0,C|0,n|0,u|0)|0;u=fo(h|0,f|0,u|0,C|0)|0;f=e+112|0;o[f>>2]=u;o[f+4>>2]=C;f=co(0,o[a>>2]|0,32)|0;u=C;h=co(0,o[s>>2]|0,32)|0;u=yo(h|0,C|0,f|0,u|0)|0;f=C;h=co(0,o[t>>2]|0,32)|0;n=C;d=co(0,o[c>>2]|0,32)|0;n=yo(d|0,C|0,h|0,n|0)|0;f=fo(n|0,C|0,u|0,f|0)|0;u=C;n=co(0,o[_>>2]|0,32)|0;_=C;h=co(0,o[i>>2]|0,32)|0;_=yo(h|0,C|0,n|0,_|0)|0;_=fo(f|0,u|0,_|0,C|0)|0;u=C;f=co(0,o[r>>2]|0,32)|0;n=C;l=co(0,o[l>>2]|0,32)|0;n=yo(l|0,C|0,f|0,n|0)|0;n=fo(_|0,u|0,n|0,C|0)|0;u=e+120|0;o[u>>2]=n;o[u+4>>2]=C;u=co(0,o[t>>2]|0,32)|0;n=C;_=co(0,o[s>>2]|0,32)|0;n=yo(_|0,C|0,u|0,n|0)|0;u=C;a=co(0,o[a>>2]|0,32)|0;_=C;f=co(0,o[i>>2]|0,32)|0;_=yo(f|0,C|0,a|0,_|0)|0;a=C;f=co(0,o[r>>2]|0,32)|0;l=C;c=co(0,o[c>>2]|0,32)|0;l=yo(c|0,C|0,f|0,l|0)|0;a=fo(l|0,C|0,_|0,a|0)|0;a=po(a|0,C|0,1)|0;u=fo(a|0,C|0,n|0,u|0)|0;n=e+128|0;o[n>>2]=u;o[n+4>>2]=C;t=co(0,o[t>>2]|0,32)|0;n=C;u=co(0,o[i>>2]|0,32)|0;n=yo(u|0,C|0,t|0,n|0)|0;t=C;u=co(0,o[r>>2]|0,32)|0;a=C;s=co(0,o[s>>2]|0,32)|0;a=yo(s|0,C|0,u|0,a|0)|0;t=fo(a|0,C|0,n|0,t|0)|0;n=e+136|0;o[n>>2]=t;o[n+4>>2]=C;n=co(0,o[r>>2]|0,31)|0;r=C;i=co(0,o[i>>2]|0,32)|0;r=yo(i|0,C|0,n|0,r|0)|0;e=e+144|0;o[e>>2]=r;o[e+4>>2]=C;return}function io(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,a=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0;s=f;f=f+160|0;n=s;k=o[r>>2]|0;V=co(0,k|0,32)|0;q=C;M=yo(V|0,q|0,V|0,q|0)|0;O=n;o[O>>2]=M;o[O+4>>2]=C;k=co(0,k|0,31)|0;O=C;M=r+8|0;R=o[M>>2]|0;x=co(0,R|0,32)|0;A=C;T=yo(x|0,A|0,k|0,O|0)|0;u=n+8|0;i=u;o[i>>2]=T;o[i+4>>2]=C;i=yo(x|0,A|0,x|0,A|0)|0;T=C;l=r+16|0;c=co(0,o[l>>2]|0,32)|0;L=C;p=yo(c|0,L|0,V|0,q|0)|0;T=fo(p|0,C|0,i|0,T|0)|0;T=po(T|0,C|0,1)|0;i=n+16|0;p=i;o[p>>2]=T;o[p+4>>2]=C;p=yo(c|0,L|0,x|0,A|0)|0;T=C;I=r+24|0;U=co(0,o[I>>2]|0,32)|0;H=C;v=yo(U|0,H|0,V|0,q|0)|0;T=fo(v|0,C|0,p|0,T|0)|0;T=po(T|0,C|0,1)|0;p=n+24|0;v=p;o[v>>2]=T;o[v+4>>2]=C;v=yo(c|0,L|0,c|0,L|0)|0;T=C;t=co(0,R|0,30)|0;t=yo(U|0,H|0,t|0,C|0)|0;T=fo(t|0,C|0,v|0,T|0)|0;v=C;t=r+32|0;b=co(0,o[t>>2]|0,32)|0;_=C;O=yo(b|0,_|0,k|0,O|0)|0;O=fo(T|0,v|0,O|0,C|0)|0;v=n+32|0;T=v;o[T>>2]=O;o[T+4>>2]=C;T=yo(U|0,H|0,c|0,L|0)|0;O=C;k=yo(b|0,_|0,x|0,A|0)|0;O=fo(k|0,C|0,T|0,O|0)|0;T=C;k=r+40|0;g=co(0,o[k>>2]|0,32)|0;a=C;z=yo(g|0,a|0,V|0,q|0)|0;z=fo(O|0,T|0,z|0,C|0)|0;z=po(z|0,C|0,1)|0;T=n+40|0;O=T;o[O>>2]=z;o[O+4>>2]=C;O=yo(U|0,H|0,U|0,H|0)|0;z=C;S=yo(b|0,_|0,c|0,L|0)|0;z=fo(S|0,C|0,O|0,z|0)|0;O=C;S=r+48|0;m=co(0,o[S>>2]|0,32)|0;d=C;N=yo(m|0,d|0,V|0,q|0)|0;N=fo(z|0,O|0,N|0,C|0)|0;O=C;R=co(0,R|0,31)|0;R=yo(g|0,a|0,R|0,C|0)|0;R=fo(N|0,O|0,R|0,C|0)|0;R=po(R|0,C|0,1)|0;O=n+48|0;N=O;o[N>>2]=R;o[N+4>>2]=C;N=yo(b|0,_|0,U|0,H|0)|0;R=C;z=yo(g|0,a|0,c|0,L|0)|0;R=fo(z|0,C|0,N|0,R|0)|0;N=C;z=yo(m|0,d|0,x|0,A|0)|0;z=fo(R|0,N|0,z|0,C|0)|0;N=C;R=r+56|0;w=co(0,o[R>>2]|0,32)|0;h=C;E=yo(w|0,h|0,V|0,q|0)|0;E=fo(z|0,N|0,E|0,C|0)|0;E=po(E|0,C|0,1)|0;N=n+56|0;z=N;o[z>>2]=E;o[z+4>>2]=C;z=yo(b|0,_|0,b|0,_|0)|0;E=C;j=yo(m|0,d|0,c|0,L|0)|0;D=C;F=r+64|0;P=co(0,o[F>>2]|0,32)|0;y=C;q=yo(P|0,y|0,V|0,q|0)|0;D=fo(q|0,C|0,j|0,D|0)|0;j=C;A=yo(w|0,h|0,x|0,A|0)|0;x=C;q=yo(g|0,a|0,U|0,H|0)|0;x=fo(q|0,C|0,A|0,x|0)|0;x=po(x|0,C|0,1)|0;x=fo(D|0,j|0,x|0,C|0)|0;x=po(x|0,C|0,1)|0;E=fo(x|0,C|0,z|0,E|0)|0;z=n+64|0;x=z;o[x>>2]=E;o[x+4>>2]=C;x=yo(g|0,a|0,b|0,_|0)|0;E=C;H=yo(m|0,d|0,U|0,H|0)|0;E=fo(H|0,C|0,x|0,E|0)|0;x=C;L=yo(w|0,h|0,c|0,L|0)|0;L=fo(E|0,x|0,L|0,C|0)|0;x=C;M=co(0,o[M>>2]|0,32)|0;E=C;c=yo(P|0,y|0,M|0,E|0)|0;c=fo(L|0,x|0,c|0,C|0)|0;x=C;L=co(0,o[r>>2]|0,32)|0;H=C;U=o[r+72>>2]|0;j=co(0,U|0,32)|0;D=C;H=yo(j|0,D|0,L|0,H|0)|0;H=fo(c|0,x|0,H|0,C|0)|0;H=po(H|0,C|0,1)|0;r=n+72|0;o[r>>2]=H;o[r+4>>2]=C;r=yo(g|0,a|0,g|0,a|0)|0;H=C;_=yo(m|0,d|0,b|0,_|0)|0;H=fo(_|0,C|0,r|0,H|0)|0;r=C;l=co(0,o[l>>2]|0,32)|0;_=C;b=yo(P|0,y|0,l|0,_|0)|0;b=fo(H|0,r|0,b|0,C|0)|0;r=C;I=co(0,o[I>>2]|0,32)|0;H=C;x=yo(w|0,h|0,I|0,H|0)|0;c=C;E=yo(j|0,D|0,M|0,E|0)|0;c=fo(E|0,C|0,x|0,c|0)|0;c=po(c|0,C|0,1)|0;c=fo(b|0,r|0,c|0,C|0)|0;c=po(c|0,C|0,1)|0;r=n+80|0;b=r;o[b>>2]=c;o[b+4>>2]=C;a=yo(m|0,d|0,g|0,a|0)|0;g=C;t=co(0,o[t>>2]|0,32)|0;b=C;c=yo(w|0,h|0,t|0,b|0)|0;g=fo(c|0,C|0,a|0,g|0)|0;a=C;c=yo(P|0,y|0,I|0,H|0)|0;c=fo(g|0,a|0,c|0,C|0)|0;a=C;_=yo(j|0,D|0,l|0,_|0)|0;_=fo(c|0,a|0,_|0,C|0)|0;a=C;c=po(_|0,a|0,1)|0;l=C;g=n+88|0;o[g>>2]=c;o[g+4>>2]=l;d=yo(m|0,d|0,m|0,d|0)|0;m=C;g=yo(P|0,y|0,t|0,b|0)|0;x=C;k=o[k>>2]|0;E=co(0,k|0,32)|0;M=C;L=yo(w|0,h|0,E|0,M|0)|0;A=C;H=yo(j|0,D|0,I|0,H|0)|0;A=fo(H|0,C|0,L|0,A|0)|0;A=po(A|0,C|0,1)|0;x=fo(A|0,C|0,g|0,x|0)|0;x=po(x|0,C|0,1)|0;m=fo(x|0,C|0,d|0,m|0)|0;d=C;x=n+96|0;o[x>>2]=m;o[x+4>>2]=d;S=co(0,o[S>>2]|0,32)|0;x=C;h=yo(w|0,h|0,S|0,x|0)|0;w=C;M=yo(P|0,y|0,E|0,M|0)|0;w=fo(M|0,C|0,h|0,w|0)|0;h=C;b=yo(j|0,D|0,t|0,b|0)|0;b=fo(w|0,h|0,b|0,C|0)|0;h=C;w=po(b|0,h|0,1)|0;t=C;M=n+104|0;o[M>>2]=w;o[M+4>>2]=t;R=o[R>>2]|0;M=co(0,R|0,32)|0;E=C;g=yo(M|0,E|0,M|0,E|0)|0;A=C;y=yo(P|0,y|0,S|0,x|0)|0;A=fo(y|0,C|0,g|0,A|0)|0;g=C;k=co(0,k|0,31)|0;k=yo(j|0,D|0,k|0,C|0)|0;k=fo(A|0,g|0,k|0,C|0)|0;g=C;A=po(k|0,g|0,1)|0;y=C;P=n+112|0;o[P>>2]=A;o[P+4>>2]=y;F=o[F>>2]|0;P=co(0,F|0,32)|0;L=C;E=yo(P|0,L|0,M|0,E|0)|0;M=C;x=yo(j|0,D|0,S|0,x|0)|0;M=fo(x|0,C|0,E|0,M|0)|0;E=C;x=po(M|0,E|0,1)|0;S=C;H=n+120|0;o[H>>2]=x;o[H+4>>2]=S;L=yo(P|0,L|0,P|0,L|0)|0;P=C;R=co(0,R|0,30)|0;R=yo(j|0,D|0,R|0,C|0)|0;P=fo(R|0,C|0,L|0,P|0)|0;L=C;R=n+128|0;o[R>>2]=P;o[R+4>>2]=L;F=co(0,F|0,31)|0;F=yo(j|0,D|0,F|0,C|0)|0;R=C;H=n+136|0;o[H>>2]=F;o[H+4>>2]=R;U=co(0,U|0,31)|0;D=yo(U|0,C|0,j|0,D|0)|0;j=C;U=n+144|0;o[U>>2]=D;o[U+4>>2]=j;U=z;H=o[U>>2]|0;U=o[U+4>>2]|0;I=yo(D|0,j|0,18,0)|0;q=C;U=fo(D|0,j|0,H|0,U|0)|0;q=fo(U|0,C|0,I|0,q|0)|0;o[z>>2]=q;o[z+4>>2]=C;z=N;q=o[z>>2]|0;z=o[z+4>>2]|0;I=yo(F|0,R|0,18,0)|0;U=C;R=fo(q|0,z|0,F|0,R|0)|0;U=fo(R|0,C|0,I|0,U|0)|0;o[N>>2]=U;o[N+4>>2]=C;N=O;U=o[N>>2]|0;N=o[N+4>>2]|0;I=yo(P|0,L|0,18,0)|0;R=C;L=fo(U|0,N|0,P|0,L|0)|0;R=fo(L|0,C|0,I|0,R|0)|0;o[O>>2]=R;o[O+4>>2]=C;O=T;R=o[O>>2]|0;O=o[O+4>>2]|0;E=yo(M|0,E|0,36,0)|0;M=C;S=fo(R|0,O|0,x|0,S|0)|0;M=fo(S|0,C|0,E|0,M|0)|0;o[T>>2]=M;o[T+4>>2]=C;T=v;M=o[T>>2]|0;T=o[T+4>>2]|0;g=yo(k|0,g|0,36,0)|0;k=C;y=fo(M|0,T|0,A|0,y|0)|0;k=fo(y|0,C|0,g|0,k|0)|0;o[v>>2]=k;o[v+4>>2]=C;v=p;k=o[v>>2]|0;v=o[v+4>>2]|0;h=yo(b|0,h|0,36,0)|0;b=C;t=fo(k|0,v|0,w|0,t|0)|0;b=fo(t|0,C|0,h|0,b|0)|0;o[p>>2]=b;o[p+4>>2]=C;p=i;b=o[p>>2]|0;p=o[p+4>>2]|0;h=yo(m|0,d|0,18,0)|0;t=C;d=fo(b|0,p|0,m|0,d|0)|0;t=fo(d|0,C|0,h|0,t|0)|0;o[i>>2]=t;o[i+4>>2]=C;i=u;t=o[i>>2]|0;i=o[i+4>>2]|0;a=yo(_|0,a|0,36,0)|0;_=C;l=fo(t|0,i|0,c|0,l|0)|0;_=fo(l|0,C|0,a|0,_|0)|0;a=u;o[a>>2]=_;o[a+4>>2]=C;a=r;_=o[a>>2]|0;a=o[a+4>>2]|0;l=n;c=o[l>>2]|0;l=o[l+4>>2]|0;i=yo(_|0,a|0,18,0)|0;t=C;a=fo(c|0,l|0,_|0,a|0)|0;t=fo(a|0,C|0,i|0,t|0)|0;i=C;a=n;o[a>>2]=t;o[a+4>>2]=i;a=r;o[a>>2]=0;o[a+4>>2]=0;a=0;do{H=fo(i>>31>>>6|0,0,t|0,i|0)|0;H=co(H|0,C|0,26)|0;q=C;z=po(H|0,q|0,26)|0;z=lo(t|0,i|0,z|0,C|0)|0;V=n+(a<<3)|0;o[V>>2]=z;o[V+4>>2]=C;V=n+((a|1)<<3)|0;z=V;z=fo(H|0,q|0,o[z>>2]|0,o[z+4>>2]|0)|0;q=C;H=fo(q>>31>>>7|0,0,z|0,q|0)|0;H=co(H|0,C|0,25)|0;j=C;D=po(H|0,j|0,25)|0;D=lo(z|0,q|0,D|0,C|0)|0;o[V>>2]=D;o[V+4>>2]=C;a=a+2|0;V=n+(a<<3)|0;D=V;t=fo(H|0,j|0,o[D>>2]|0,o[D+4>>2]|0)|0;i=C;o[V>>2]=t;o[V+4>>2]=i}while(a>>>0<10);D=r;j=o[D>>2]|0;D=o[D+4>>2]|0;q=n;z=o[q>>2]|0;q=o[q+4>>2]|0;V=yo(j|0,D|0,18,0)|0;H=C;D=fo(z|0,q|0,j|0,D|0)|0;H=fo(D|0,C|0,V|0,H|0)|0;V=C;D=r;o[D>>2]=0;o[D+4>>2]=0;D=fo(V>>31>>>6|0,0,H|0,V|0)|0;D=co(D|0,C|0,26)|0;r=C;j=po(D|0,r|0,26)|0;j=lo(H|0,V|0,j|0,C|0)|0;V=n;o[V>>2]=j;o[V+4>>2]=C;V=u;V=fo(D|0,r|0,o[V>>2]|0,o[V+4>>2]|0)|0;r=u;o[r>>2]=V;o[r+4>>2]=C;r=e+80|0;do{o[e>>2]=o[n>>2];e=e+4|0;n=n+4|0}while((e|0)<(r|0));f=s;return}function to(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0;s=f;f=f+160|0;i=s;no(i,r,n);r=i+144|0;t=o[r>>2]|0;r=o[r+4>>2]|0;n=i+64|0;_=n;u=o[_>>2]|0;_=o[_+4>>2]|0;c=yo(t|0,r|0,18,0)|0;l=C;r=fo(u|0,_|0,t|0,r|0)|0;l=fo(r|0,C|0,c|0,l|0)|0;o[n>>2]=l;o[n+4>>2]=C;n=i+136|0;l=o[n>>2]|0;n=o[n+4>>2]|0;c=i+56|0;r=c;t=o[r>>2]|0;r=o[r+4>>2]|0;_=yo(l|0,n|0,18,0)|0;u=C;n=fo(t|0,r|0,l|0,n|0)|0;u=fo(n|0,C|0,_|0,u|0)|0;o[c>>2]=u;o[c+4>>2]=C;c=i+128|0;u=o[c>>2]|0;c=o[c+4>>2]|0;_=i+48|0;n=_;l=o[n>>2]|0;n=o[n+4>>2]|0;r=yo(u|0,c|0,18,0)|0;t=C;c=fo(l|0,n|0,u|0,c|0)|0;t=fo(c|0,C|0,r|0,t|0)|0;o[_>>2]=t;o[_+4>>2]=C;_=i+120|0;t=o[_>>2]|0;_=o[_+4>>2]|0;r=i+40|0;c=r;u=o[c>>2]|0;c=o[c+4>>2]|0;n=yo(t|0,_|0,18,0)|0;l=C;_=fo(u|0,c|0,t|0,_|0)|0;l=fo(_|0,C|0,n|0,l|0)|0;o[r>>2]=l;o[r+4>>2]=C;r=i+112|0;l=o[r>>2]|0;r=o[r+4>>2]|0;n=i+32|0;_=n;t=o[_>>2]|0;_=o[_+4>>2]|0;c=yo(l|0,r|0,18,0)|0;u=C;r=fo(t|0,_|0,l|0,r|0)|0;u=fo(r|0,C|0,c|0,u|0)|0;o[n>>2]=u;o[n+4>>2]=C;n=i+104|0;u=o[n>>2]|0;n=o[n+4>>2]|0;c=i+24|0;r=c;l=o[r>>2]|0;r=o[r+4>>2]|0;_=yo(u|0,n|0,18,0)|0;t=C;n=fo(l|0,r|0,u|0,n|0)|0;t=fo(n|0,C|0,_|0,t|0)|0;o[c>>2]=t;o[c+4>>2]=C;c=i+96|0;t=o[c>>2]|0;c=o[c+4>>2]|0;_=i+16|0;n=_;u=o[n>>2]|0;n=o[n+4>>2]|0;r=yo(t|0,c|0,18,0)|0;l=C;c=fo(u|0,n|0,t|0,c|0)|0;l=fo(c|0,C|0,r|0,l|0)|0;o[_>>2]=l;o[_+4>>2]=C;_=i+88|0;l=o[_>>2]|0;_=o[_+4>>2]|0;r=i+8|0;c=r;t=o[c>>2]|0;c=o[c+4>>2]|0;n=yo(l|0,_|0,18,0)|0;u=C;_=fo(t|0,c|0,l|0,_|0)|0;u=fo(_|0,C|0,n|0,u|0)|0;n=r;o[n>>2]=u;o[n+4>>2]=C;n=i+80|0;u=n;_=o[u>>2]|0;u=o[u+4>>2]|0;l=i;c=o[l>>2]|0;l=o[l+4>>2]|0;t=yo(_|0,u|0,18,0)|0;a=C;u=fo(c|0,l|0,_|0,u|0)|0;a=fo(u|0,C|0,t|0,a|0)|0;t=C;u=i;o[u>>2]=a;o[u+4>>2]=t;u=n;o[u>>2]=0;o[u+4>>2]=0;u=0;do{h=fo(t>>31>>>6|0,0,a|0,t|0)|0;h=co(h|0,C|0,26)|0;d=C;m=po(h|0,d|0,26)|0;m=lo(a|0,t|0,m|0,C|0)|0;c=i+(u<<3)|0;o[c>>2]=m;o[c+4>>2]=C;c=i+((u|1)<<3)|0;m=c;m=fo(h|0,d|0,o[m>>2]|0,o[m+4>>2]|0)|0;d=C;h=fo(d>>31>>>7|0,0,m|0,d|0)|0;h=co(h|0,C|0,25)|0;_=C;l=po(h|0,_|0,25)|0;l=lo(m|0,d|0,l|0,C|0)|0;o[c>>2]=l;o[c+4>>2]=C;u=u+2|0;c=i+(u<<3)|0;l=c;a=fo(h|0,_|0,o[l>>2]|0,o[l+4>>2]|0)|0;t=C;o[c>>2]=a;o[c+4>>2]=t}while(u>>>0<10);d=n;h=o[d>>2]|0;d=o[d+4>>2]|0;l=i;_=o[l>>2]|0;l=o[l+4>>2]|0;m=yo(h|0,d|0,18,0)|0;c=C;d=fo(_|0,l|0,h|0,d|0)|0;c=fo(d|0,C|0,m|0,c|0)|0;m=C;d=n;o[d>>2]=0;o[d+4>>2]=0;d=fo(m>>31>>>6|0,0,c|0,m|0)|0;d=co(d|0,C|0,26)|0;n=C;h=po(d|0,n|0,26)|0;h=lo(c|0,m|0,h|0,C|0)|0;m=i;o[m>>2]=h;o[m+4>>2]=C;m=r;m=fo(d|0,n|0,o[m>>2]|0,o[m+4>>2]|0)|0;n=r;o[n>>2]=m;o[n+4>>2]=C;n=e;r=n+80|0;do{o[n>>2]=o[i>>2];n=n+4|0;i=i+4|0}while((n|0)<(r|0));f=s;return}function oo(){var e=0;if(!(o[8886]|0))e=35588;else e=o[(_e()|0)+64>>2]|0;return e|0}function ao(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,o=0;e:do{if(!n)n=0;else{o=n;t=e;while(1){e=i[t>>0]|0;n=i[r>>0]|0;if(e<<24>>24!=n<<24>>24)break;o=o+-1|0;if(!o){n=0;break e}else{t=t+1|0;r=r+1|0}}n=(e&255)-(n&255)|0}}while(0);return n|0}function uo(e){e=e|0;var r=0,n=0,i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0,I=0,L=0,P=0,N=0,U=0,F=0;do{if(e>>>0<245){d=e>>>0<11?16:e+11&-8;e=d>>>3;_=o[8898]|0;r=_>>>e;if(r&3|0){r=(r&1^1)+e|0;n=35632+(r<<1<<2)|0;i=n+8|0;t=o[i>>2]|0;a=t+8|0;u=o[a>>2]|0;do{if((n|0)!=(u|0)){if(u>>>0<(o[8902]|0)>>>0)le();e=u+12|0;if((o[e>>2]|0)==(t|0)){o[e>>2]=n;o[i>>2]=u;break}else le()}else o[8898]=_&~(1<<r)}while(0);F=r<<3;o[t+4>>2]=F|3;F=t+F+4|0;o[F>>2]=o[F>>2]|1;F=a;return F|0}u=o[8900]|0;if(d>>>0>u>>>0){if(r|0){n=2<<e;n=r<<e&(n|0-n);n=(n&0-n)+-1|0;s=n>>>12&16;n=n>>>s;t=n>>>5&8;n=n>>>t;a=n>>>2&4;n=n>>>a;i=n>>>1&2;n=n>>>i;r=n>>>1&1;r=(t|s|a|i|r)+(n>>>r)|0;n=35632+(r<<1<<2)|0;i=n+8|0;a=o[i>>2]|0;s=a+8|0;t=o[s>>2]|0;do{if((n|0)!=(t|0)){if(t>>>0<(o[8902]|0)>>>0)le();e=t+12|0;if((o[e>>2]|0)==(a|0)){o[e>>2]=n;o[i>>2]=t;l=o[8900]|0;break}else le()}else{o[8898]=_&~(1<<r);l=u}}while(0);u=(r<<3)-d|0;o[a+4>>2]=d|3;i=a+d|0;o[i+4>>2]=u|1;o[i+u>>2]=u;if(l|0){t=o[8903]|0;r=l>>>3;n=35632+(r<<1<<2)|0;e=o[8898]|0;r=1<<r;if(e&r){e=n+8|0;r=o[e>>2]|0;if(r>>>0<(o[8902]|0)>>>0)le();else{f=e;c=r}}else{o[8898]=e|r;f=n+8|0;c=n}o[f>>2]=t;o[c+12>>2]=t;o[t+8>>2]=c;o[t+12>>2]=n}o[8900]=u;o[8903]=i;F=s;return F|0}e=o[8899]|0;if(e){n=(e&0-e)+-1|0;U=n>>>12&16;n=n>>>U;N=n>>>5&8;n=n>>>N;F=n>>>2&4;n=n>>>F;r=n>>>1&2;n=n>>>r;i=n>>>1&1;i=o[35896+((N|U|F|r|i)+(n>>>i)<<2)>>2]|0;n=(o[i+4>>2]&-8)-d|0;r=i;while(1){e=o[r+16>>2]|0;if(!e){e=o[r+20>>2]|0;if(!e){_=i;break}}r=(o[e+4>>2]&-8)-d|0;F=r>>>0<n>>>0;n=F?r:n;r=e;i=F?e:i}a=o[8902]|0;if(_>>>0<a>>>0)le();s=_+d|0;if(_>>>0>=s>>>0)le();u=o[_+24>>2]|0;i=o[_+12>>2]|0;do{if((i|0)==(_|0)){r=_+20|0;e=o[r>>2]|0;if(!e){r=_+16|0;e=o[r>>2]|0;if(!e){h=0;break}}while(1){i=e+20|0;t=o[i>>2]|0;if(t|0){e=t;r=i;continue}i=e+16|0;t=o[i>>2]|0;if(!t)break;else{e=t;r=i}}if(r>>>0<a>>>0)le();else{o[r>>2]=0;h=e;break}}else{t=o[_+8>>2]|0;if(t>>>0<a>>>0)le();e=t+12|0;if((o[e>>2]|0)!=(_|0))le();r=i+8|0;if((o[r>>2]|0)==(_|0)){o[e>>2]=i;o[r>>2]=t;h=i;break}else le()}}while(0);do{if(u|0){e=o[_+28>>2]|0;r=35896+(e<<2)|0;if((_|0)==(o[r>>2]|0)){o[r>>2]=h;if(!h){o[8899]=o[8899]&~(1<<e);break}}else{if(u>>>0<(o[8902]|0)>>>0)le();e=u+16|0;if((o[e>>2]|0)==(_|0))o[e>>2]=h;else o[u+20>>2]=h;if(!h)break}r=o[8902]|0;if(h>>>0<r>>>0)le();o[h+24>>2]=u;e=o[_+16>>2]|0;do{if(e|0)if(e>>>0<r>>>0)le();else{o[h+16>>2]=e;o[e+24>>2]=h;break}}while(0);e=o[_+20>>2]|0;if(e|0)if(e>>>0<(o[8902]|0)>>>0)le();else{o[h+20>>2]=e;o[e+24>>2]=h;break}}}while(0);if(n>>>0<16){F=n+d|0;o[_+4>>2]=F|3;F=_+F+4|0;o[F>>2]=o[F>>2]|1}else{o[_+4>>2]=d|3;o[s+4>>2]=n|1;o[s+n>>2]=n;e=o[8900]|0;if(e|0){t=o[8903]|0;r=e>>>3;i=35632+(r<<1<<2)|0;e=o[8898]|0;r=1<<r;if(e&r){e=i+8|0;r=o[e>>2]|0;if(r>>>0<(o[8902]|0)>>>0)le();else{m=e;p=r}}else{o[8898]=e|r;m=i+8|0;p=i}o[m>>2]=t;o[p+12>>2]=t;o[t+8>>2]=p;o[t+12>>2]=i}o[8900]=n;o[8903]=s}F=_+8|0;return F|0}}}else if(e>>>0<=4294967231){e=e+11|0;d=e&-8;_=o[8899]|0;if(_){n=0-d|0;e=e>>>8;if(e)if(d>>>0>16777215)s=31;else{p=(e+1048320|0)>>>16&8;R=e<<p;m=(R+520192|0)>>>16&4;R=R<<m;s=(R+245760|0)>>>16&2;s=14-(m|p|s)+(R<<s>>>15)|0;s=d>>>(s+7|0)&1|s<<1}else s=0;r=o[35896+(s<<2)>>2]|0;e:do{if(!r){e=0;r=0;R=86}else{t=n;e=0;a=d<<((s|0)==31?0:25-(s>>>1)|0);u=r;r=0;while(1){i=o[u+4>>2]&-8;n=i-d|0;if(n>>>0<t>>>0)if((i|0)==(d|0)){e=u;r=u;R=90;break e}else r=u;else n=t;i=o[u+20>>2]|0;u=o[u+16+(a>>>31<<2)>>2]|0;e=(i|0)==0|(i|0)==(u|0)?e:i;i=(u|0)==0;if(i){R=86;break}else{t=n;a=a<<(i&1^1)}}}}while(0);if((R|0)==86){if((e|0)==0&(r|0)==0){e=2<<s;e=_&(e|0-e);if(!e)break;p=(e&0-e)+-1|0;c=p>>>12&16;p=p>>>c;f=p>>>5&8;p=p>>>f;h=p>>>2&4;p=p>>>h;m=p>>>1&2;p=p>>>m;e=p>>>1&1;e=o[35896+((f|c|h|m|e)+(p>>>e)<<2)>>2]|0}if(!e){s=n;_=r}else R=90}if((R|0)==90)while(1){R=0;p=(o[e+4>>2]&-8)-d|0;i=p>>>0<n>>>0;n=i?p:n;r=i?e:r;i=o[e+16>>2]|0;if(i|0){e=i;R=90;continue}e=o[e+20>>2]|0;if(!e){s=n;_=r;break}else R=90}if((_|0)!=0?s>>>0<((o[8900]|0)-d|0)>>>0:0){t=o[8902]|0;if(_>>>0<t>>>0)le();u=_+d|0;if(_>>>0>=u>>>0)le();a=o[_+24>>2]|0;n=o[_+12>>2]|0;do{if((n|0)==(_|0)){r=_+20|0;e=o[r>>2]|0;if(!e){r=_+16|0;e=o[r>>2]|0;if(!e){w=0;break}}while(1){n=e+20|0;i=o[n>>2]|0;if(i|0){e=i;r=n;continue}n=e+16|0;i=o[n>>2]|0;if(!i)break;else{e=i;r=n}}if(r>>>0<t>>>0)le();else{o[r>>2]=0;w=e;break}}else{i=o[_+8>>2]|0;if(i>>>0<t>>>0)le();e=i+12|0;if((o[e>>2]|0)!=(_|0))le();r=n+8|0;if((o[r>>2]|0)==(_|0)){o[e>>2]=n;o[r>>2]=i;w=n;break}else le()}}while(0);do{if(a|0){e=o[_+28>>2]|0;r=35896+(e<<2)|0;if((_|0)==(o[r>>2]|0)){o[r>>2]=w;if(!w){o[8899]=o[8899]&~(1<<e);break}}else{if(a>>>0<(o[8902]|0)>>>0)le();e=a+16|0;if((o[e>>2]|0)==(_|0))o[e>>2]=w;else o[a+20>>2]=w;if(!w)break}r=o[8902]|0;if(w>>>0<r>>>0)le();o[w+24>>2]=a;e=o[_+16>>2]|0;do{if(e|0)if(e>>>0<r>>>0)le();else{o[w+16>>2]=e;o[e+24>>2]=w;break}}while(0);e=o[_+20>>2]|0;if(e|0)if(e>>>0<(o[8902]|0)>>>0)le();else{o[w+20>>2]=e;o[e+24>>2]=w;break}}}while(0);do{if(s>>>0>=16){o[_+4>>2]=d|3;o[u+4>>2]=s|1;o[u+s>>2]=s;e=s>>>3;if(s>>>0<256){n=35632+(e<<1<<2)|0;r=o[8898]|0;e=1<<e;if(r&e){e=n+8|0;r=o[e>>2]|0;if(r>>>0<(o[8902]|0)>>>0)le();else{k=e;g=r}}else{o[8898]=r|e;k=n+8|0;g=n}o[k>>2]=u;o[g+12>>2]=u;o[u+8>>2]=g;o[u+12>>2]=n;break}e=s>>>8;if(e)if(s>>>0>16777215)n=31;else{U=(e+1048320|0)>>>16&8;F=e<<U;N=(F+520192|0)>>>16&4;F=F<<N;n=(F+245760|0)>>>16&2;n=14-(N|U|n)+(F<<n>>>15)|0;n=s>>>(n+7|0)&1|n<<1}else n=0;i=35896+(n<<2)|0;o[u+28>>2]=n;e=u+16|0;o[e+4>>2]=0;o[e>>2]=0;e=o[8899]|0;r=1<<n;if(!(e&r)){o[8899]=e|r;o[i>>2]=u;o[u+24>>2]=i;o[u+12>>2]=u;o[u+8>>2]=u;break}t=s<<((n|0)==31?0:25-(n>>>1)|0);e=o[i>>2]|0;while(1){if((o[e+4>>2]&-8|0)==(s|0)){n=e;R=148;break}r=e+16+(t>>>31<<2)|0;n=o[r>>2]|0;if(!n){R=145;break}else{t=t<<1;e=n}}if((R|0)==145)if(r>>>0<(o[8902]|0)>>>0)le();else{o[r>>2]=u;o[u+24>>2]=e;o[u+12>>2]=u;o[u+8>>2]=u;break}else if((R|0)==148){e=n+8|0;r=o[e>>2]|0;F=o[8902]|0;if(r>>>0>=F>>>0&n>>>0>=F>>>0){o[r+12>>2]=u;o[e>>2]=u;o[u+8>>2]=r;o[u+12>>2]=n;o[u+24>>2]=0;break}else le()}}else{F=s+d|0;o[_+4>>2]=F|3;F=_+F+4|0;o[F>>2]=o[F>>2]|1}}while(0);F=_+8|0;return F|0}}}else d=-1}while(0);n=o[8900]|0;if(n>>>0>=d>>>0){e=n-d|0;r=o[8903]|0;if(e>>>0>15){F=r+d|0;o[8903]=F;o[8900]=e;o[F+4>>2]=e|1;o[F+e>>2]=e;o[r+4>>2]=d|3}else{o[8900]=0;o[8903]=0;o[r+4>>2]=n|3;F=r+n+4|0;o[F>>2]=o[F>>2]|1}F=r+8|0;return F|0}e=o[8901]|0;if(e>>>0>d>>>0){N=e-d|0;o[8901]=N;F=o[8904]|0;U=F+d|0;o[8904]=U;o[U+4>>2]=N|1;o[F+4>>2]=d|3;F=F+8|0;return F|0}do{if(!(o[9016]|0)){e=be(30)|0;if(!(e+-1&e)){o[9018]=e;o[9017]=e;o[9019]=-1;o[9020]=-1;o[9021]=0;o[9009]=0;o[9016]=(de(0)|0)&-16^1431655768;break}else le()}}while(0);u=d+48|0;a=o[9018]|0;s=d+47|0;t=a+s|0;a=0-a|0;_=t&a;if(_>>>0<=d>>>0){F=0;return F|0}e=o[9008]|0;if(e|0?(k=o[9006]|0,g=k+_|0,g>>>0<=k>>>0|g>>>0>e>>>0):0){F=0;return F|0}e:do{if(!(o[9009]&4)){e=o[8904]|0;r:do{if(e){n=36040;while(1){r=o[n>>2]|0;if(r>>>0<=e>>>0?(b=n+4|0,(r+(o[b>>2]|0)|0)>>>0>e>>>0):0){i=n;n=b;break}n=o[n+8>>2]|0;if(!n){R=173;break r}}e=t-(o[8901]|0)&a;if(e>>>0<2147483647){r=he(e|0)|0;if((r|0)==((o[i>>2]|0)+(o[n>>2]|0)|0)){if((r|0)!=(-1|0)){u=r;t=e;R=193;break e}}else R=183}}else R=173}while(0);do{if((R|0)==173?(v=he(0)|0,(v|0)!=(-1|0)):0){e=v;r=o[9017]|0;n=r+-1|0;if(!(n&e))e=_;else e=_-e+(n+e&0-r)|0;r=o[9006]|0;n=r+e|0;if(e>>>0>d>>>0&e>>>0<2147483647){g=o[9008]|0;if(g|0?n>>>0<=r>>>0|n>>>0>g>>>0:0)break;r=he(e|0)|0;if((r|0)==(v|0)){u=v;t=e;R=193;break e}else R=183}}}while(0);r:do{if((R|0)==183){n=0-e|0;do{if(u>>>0>e>>>0&(e>>>0<2147483647&(r|0)!=(-1|0))?(y=o[9018]|0,y=s-e+y&0-y,y>>>0<2147483647):0)if((he(y|0)|0)==(-1|0)){he(n|0)|0;break r}else{e=y+e|0;break}}while(0);if((r|0)!=(-1|0)){u=r;t=e;R=193;break e}}}while(0);o[9009]=o[9009]|4;R=190}else R=190}while(0);if((((R|0)==190?_>>>0<2147483647:0)?(A=he(_|0)|0,T=he(0)|0,A>>>0<T>>>0&((A|0)!=(-1|0)&(T|0)!=(-1|0))):0)?(M=T-A|0,M>>>0>(d+40|0)>>>0):0){u=A;t=M;R=193}if((R|0)==193){e=(o[9006]|0)+t|0;o[9006]=e;if(e>>>0>(o[9007]|0)>>>0)o[9007]=e;s=o[8904]|0;do{if(s){i=36040;do{e=o[i>>2]|0;r=i+4|0;n=o[r>>2]|0;if((u|0)==(e+n|0)){E=e;S=r;x=n;O=i;R=203;break}i=o[i+8>>2]|0}while((i|0)!=0);if(((R|0)==203?(o[O+12>>2]&8|0)==0:0)?s>>>0<u>>>0&s>>>0>=E>>>0:0){o[S>>2]=x+t;F=s+8|0;F=(F&7|0)==0?0:0-F&7;U=s+F|0;F=t-F+(o[8901]|0)|0;o[8904]=U;o[8901]=F;o[U+4>>2]=F|1;o[U+F+4>>2]=40;o[8905]=o[9020];break}e=o[8902]|0;if(u>>>0<e>>>0){o[8902]=u;_=u}else _=e;n=u+t|0;e=36040;while(1){if((o[e>>2]|0)==(n|0)){r=e;R=211;break}e=o[e+8>>2]|0;if(!e){r=36040;break}}if((R|0)==211)if(!(o[e+12>>2]&8)){o[r>>2]=u;f=e+4|0;o[f>>2]=(o[f>>2]|0)+t;f=u+8|0;f=u+((f&7|0)==0?0:0-f&7)|0;e=n+8|0;e=n+((e&7|0)==0?0:0-e&7)|0;l=f+d|0;a=e-f-d|0;o[f+4>>2]=d|3;do{if((e|0)!=(s|0)){if((e|0)==(o[8903]|0)){F=(o[8900]|0)+a|0;o[8900]=F;o[8903]=l;o[l+4>>2]=F|1;o[l+F>>2]=F;break}r=o[e+4>>2]|0;if((r&3|0)==1){s=r&-8;t=r>>>3;e:do{if(r>>>0>=256){u=o[e+24>>2]|0;i=o[e+12>>2]|0;do{if((i|0)==(e|0)){n=e+16|0;i=n+4|0;r=o[i>>2]|0;if(!r){r=o[n>>2]|0;if(!r){N=0;break}}else n=i;while(1){i=r+20|0;t=o[i>>2]|0;if(t|0){r=t;n=i;continue}i=r+16|0;t=o[i>>2]|0;if(!t)break;else{r=t;n=i}}if(n>>>0<_>>>0)le();else{o[n>>2]=0;N=r;break}}else{t=o[e+8>>2]|0;if(t>>>0<_>>>0)le();r=t+12|0;if((o[r>>2]|0)!=(e|0))le();n=i+8|0;if((o[n>>2]|0)==(e|0)){o[r>>2]=i;o[n>>2]=t;N=i;break}else le()}}while(0);if(!u)break;r=o[e+28>>2]|0;n=35896+(r<<2)|0;do{if((e|0)!=(o[n>>2]|0)){if(u>>>0<(o[8902]|0)>>>0)le();r=u+16|0;if((o[r>>2]|0)==(e|0))o[r>>2]=N;else o[u+20>>2]=N;if(!N)break e}else{o[n>>2]=N;if(N|0)break;o[8899]=o[8899]&~(1<<r);break e}}while(0);i=o[8902]|0;if(N>>>0<i>>>0)le();o[N+24>>2]=u;r=e+16|0;n=o[r>>2]|0;do{if(n|0)if(n>>>0<i>>>0)le();else{o[N+16>>2]=n;o[n+24>>2]=N;break}}while(0);r=o[r+4>>2]|0;if(!r)break;if(r>>>0<(o[8902]|0)>>>0)le();else{o[N+20>>2]=r;o[r+24>>2]=N;break}}else{n=o[e+8>>2]|0;i=o[e+12>>2]|0;r=35632+(t<<1<<2)|0;do{if((n|0)!=(r|0)){if(n>>>0<_>>>0)le();if((o[n+12>>2]|0)==(e|0))break;le()}}while(0);if((i|0)==(n|0)){o[8898]=o[8898]&~(1<<t);break}do{if((i|0)==(r|0))I=i+8|0;else{if(i>>>0<_>>>0)le();r=i+8|0;if((o[r>>2]|0)==(e|0)){I=r;break}le()}}while(0);o[n+12>>2]=i;o[I>>2]=n}}while(0);e=e+s|0;a=s+a|0}e=e+4|0;o[e>>2]=o[e>>2]&-2;o[l+4>>2]=a|1;o[l+a>>2]=a;e=a>>>3;if(a>>>0<256){n=35632+(e<<1<<2)|0;r=o[8898]|0;e=1<<e;do{if(!(r&e)){o[8898]=r|e;U=n+8|0;F=n}else{e=n+8|0;r=o[e>>2]|0;if(r>>>0>=(o[8902]|0)>>>0){U=e;F=r;break}le()}}while(0);o[U>>2]=l;o[F+12>>2]=l;o[l+8>>2]=F;o[l+12>>2]=n;break}e=a>>>8;do{if(!e)n=0;else{if(a>>>0>16777215){n=31;break}U=(e+1048320|0)>>>16&8;F=e<<U;N=(F+520192|0)>>>16&4;F=F<<N;n=(F+245760|0)>>>16&2;n=14-(N|U|n)+(F<<n>>>15)|0;n=a>>>(n+7|0)&1|n<<1}}while(0);i=35896+(n<<2)|0;o[l+28>>2]=n;e=l+16|0;o[e+4>>2]=0;o[e>>2]=0;e=o[8899]|0;r=1<<n;if(!(e&r)){o[8899]=e|r;o[i>>2]=l;o[l+24>>2]=i;o[l+12>>2]=l;o[l+8>>2]=l;break}t=a<<((n|0)==31?0:25-(n>>>1)|0);e=o[i>>2]|0;while(1){if((o[e+4>>2]&-8|0)==(a|0)){n=e;R=281;break}r=e+16+(t>>>31<<2)|0;n=o[r>>2]|0;if(!n){R=278;break}else{t=t<<1;e=n}}if((R|0)==278)if(r>>>0<(o[8902]|0)>>>0)le();else{o[r>>2]=l;o[l+24>>2]=e;o[l+12>>2]=l;o[l+8>>2]=l;break}else if((R|0)==281){e=n+8|0;r=o[e>>2]|0;F=o[8902]|0;if(r>>>0>=F>>>0&n>>>0>=F>>>0){o[r+12>>2]=l;o[e>>2]=l;o[l+8>>2]=r;o[l+12>>2]=n;o[l+24>>2]=0;break}else le()}}else{F=(o[8901]|0)+a|0;o[8901]=F;o[8904]=l;o[l+4>>2]=F|1}}while(0);F=f+8|0;return F|0}else r=36040;while(1){e=o[r>>2]|0;if(e>>>0<=s>>>0?(C=e+(o[r+4>>2]|0)|0,C>>>0>s>>>0):0){r=C;break}r=o[r+8>>2]|0}a=r+-47|0;n=a+8|0;n=a+((n&7|0)==0?0:0-n&7)|0;a=s+16|0;n=n>>>0<a>>>0?s:n;e=n+8|0;i=u+8|0;i=(i&7|0)==0?0:0-i&7;F=u+i|0;i=t+-40-i|0;o[8904]=F;o[8901]=i;o[F+4>>2]=i|1;o[F+i+4>>2]=40;o[8905]=o[9020];i=n+4|0;o[i>>2]=27;o[e>>2]=o[9010];o[e+4>>2]=o[9011];o[e+8>>2]=o[9012];o[e+12>>2]=o[9013];o[9010]=u;o[9011]=t;o[9013]=0;o[9012]=e;e=n+24|0;do{e=e+4|0;o[e>>2]=7}while((e+4|0)>>>0<r>>>0);if((n|0)!=(s|0)){u=n-s|0;o[i>>2]=o[i>>2]&-2;o[s+4>>2]=u|1;o[n>>2]=u;e=u>>>3;if(u>>>0<256){n=35632+(e<<1<<2)|0;r=o[8898]|0;e=1<<e;if(r&e){e=n+8|0;r=o[e>>2]|0;if(r>>>0<(o[8902]|0)>>>0)le();else{L=e;P=r}}else{o[8898]=r|e;L=n+8|0;P=n}o[L>>2]=s;o[P+12>>2]=s;o[s+8>>2]=P;o[s+12>>2]=n;break}e=u>>>8;if(e)if(u>>>0>16777215)n=31;else{U=(e+1048320|0)>>>16&8;F=e<<U;N=(F+520192|0)>>>16&4;F=F<<N;n=(F+245760|0)>>>16&2;n=14-(N|U|n)+(F<<n>>>15)|0;n=u>>>(n+7|0)&1|n<<1}else n=0;t=35896+(n<<2)|0;o[s+28>>2]=n;o[s+20>>2]=0;o[a>>2]=0;e=o[8899]|0;r=1<<n;if(!(e&r)){o[8899]=e|r;o[t>>2]=s;o[s+24>>2]=t;o[s+12>>2]=s;o[s+8>>2]=s;break}i=u<<((n|0)==31?0:25-(n>>>1)|0);e=o[t>>2]|0;while(1){if((o[e+4>>2]&-8|0)==(u|0)){n=e;R=307;break}r=e+16+(i>>>31<<2)|0;n=o[r>>2]|0;if(!n){R=304;break}else{i=i<<1;e=n}}if((R|0)==304)if(r>>>0<(o[8902]|0)>>>0)le();else{o[r>>2]=s;o[s+24>>2]=e;o[s+12>>2]=s;o[s+8>>2]=s;break}else if((R|0)==307){e=n+8|0;r=o[e>>2]|0;F=o[8902]|0;if(r>>>0>=F>>>0&n>>>0>=F>>>0){o[r+12>>2]=s;o[e>>2]=s;o[s+8>>2]=r;o[s+12>>2]=n;o[s+24>>2]=0;break}else le()}}}else{F=o[8902]|0;if((F|0)==0|u>>>0<F>>>0)o[8902]=u;o[9010]=u;o[9011]=t;o[9013]=0;o[8907]=o[9016];o[8906]=-1;e=0;do{F=35632+(e<<1<<2)|0;o[F+12>>2]=F;o[F+8>>2]=F;e=e+1|0}while((e|0)!=32);F=u+8|0;F=(F&7|0)==0?0:0-F&7;U=u+F|0;F=t+-40-F|0;o[8904]=U;o[8901]=F;o[U+4>>2]=F|1;o[U+F+4>>2]=40;o[8905]=o[9020]}}while(0);e=o[8901]|0;if(e>>>0>d>>>0){N=e-d|0;o[8901]=N;F=o[8904]|0;U=F+d|0;o[8904]=U;o[U+4>>2]=N|1;o[F+4>>2]=d|3;F=F+8|0;return F|0}}o[(oo()|0)>>2]=12;F=0;return F|0}function so(e){e=e|0;var r=0,n=0,i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0;if(!e)return;n=e+-8|0;u=o[8902]|0;if(n>>>0<u>>>0)le();e=o[e+-4>>2]|0;r=e&3;if((r|0)==1)le();i=e&-8;c=n+i|0;do{if(!(e&1)){e=o[n>>2]|0;if(!r)return;l=n+(0-e)|0;_=e+i|0;if(l>>>0<u>>>0)le();if((l|0)==(o[8903]|0)){e=c+4|0;r=o[e>>2]|0;if((r&3|0)!=3){p=l;a=_;break}o[8900]=_;o[e>>2]=r&-2;o[l+4>>2]=_|1;o[l+_>>2]=_;return}i=e>>>3;if(e>>>0<256){r=o[l+8>>2]|0;n=o[l+12>>2]|0;e=35632+(i<<1<<2)|0;if((r|0)!=(e|0)){if(r>>>0<u>>>0)le();if((o[r+12>>2]|0)!=(l|0))le()}if((n|0)==(r|0)){o[8898]=o[8898]&~(1<<i);p=l;a=_;break}if((n|0)!=(e|0)){if(n>>>0<u>>>0)le();e=n+8|0;if((o[e>>2]|0)==(l|0))t=e;else le()}else t=n+8|0;o[r+12>>2]=n;o[t>>2]=r;p=l;a=_;break}t=o[l+24>>2]|0;n=o[l+12>>2]|0;do{if((n|0)==(l|0)){r=l+16|0;n=r+4|0;e=o[n>>2]|0;if(!e){e=o[r>>2]|0;if(!e){s=0;break}}else r=n;while(1){n=e+20|0;i=o[n>>2]|0;if(i|0){e=i;r=n;continue}n=e+16|0;i=o[n>>2]|0;if(!i)break;else{e=i;r=n}}if(r>>>0<u>>>0)le();else{o[r>>2]=0;s=e;break}}else{i=o[l+8>>2]|0;if(i>>>0<u>>>0)le();e=i+12|0;if((o[e>>2]|0)!=(l|0))le();r=n+8|0;if((o[r>>2]|0)==(l|0)){o[e>>2]=n;o[r>>2]=i;s=n;break}else le()}}while(0);if(t){e=o[l+28>>2]|0;r=35896+(e<<2)|0;if((l|0)==(o[r>>2]|0)){o[r>>2]=s;if(!s){o[8899]=o[8899]&~(1<<e);p=l;a=_;break}}else{if(t>>>0<(o[8902]|0)>>>0)le();e=t+16|0;if((o[e>>2]|0)==(l|0))o[e>>2]=s;else o[t+20>>2]=s;if(!s){p=l;a=_;break}}n=o[8902]|0;if(s>>>0<n>>>0)le();o[s+24>>2]=t;e=l+16|0;r=o[e>>2]|0;do{if(r|0)if(r>>>0<n>>>0)le();else{o[s+16>>2]=r;o[r+24>>2]=s;break}}while(0);e=o[e+4>>2]|0;if(e)if(e>>>0<(o[8902]|0)>>>0)le();else{o[s+20>>2]=e;o[e+24>>2]=s;p=l;a=_;break}else{p=l;a=_}}else{p=l;a=_}}else{p=n;a=i}}while(0);if(p>>>0>=c>>>0)le();e=c+4|0;r=o[e>>2]|0;if(!(r&1))le();if(!(r&2)){if((c|0)==(o[8904]|0)){m=(o[8901]|0)+a|0;o[8901]=m;o[8904]=p;o[p+4>>2]=m|1;if((p|0)!=(o[8903]|0))return;o[8903]=0;o[8900]=0;return}if((c|0)==(o[8903]|0)){m=(o[8900]|0)+a|0;o[8900]=m;o[8903]=p;o[p+4>>2]=m|1;o[p+m>>2]=m;return}a=(r&-8)+a|0;i=r>>>3;do{if(r>>>0>=256){t=o[c+24>>2]|0;e=o[c+12>>2]|0;do{if((e|0)==(c|0)){r=c+16|0;n=r+4|0;e=o[n>>2]|0;if(!e){e=o[r>>2]|0;if(!e){h=0;break}}else r=n;while(1){n=e+20|0;i=o[n>>2]|0;if(i|0){e=i;r=n;continue}n=e+16|0;i=o[n>>2]|0;if(!i)break;else{e=i;r=n}}if(r>>>0<(o[8902]|0)>>>0)le();else{o[r>>2]=0;h=e;break}}else{r=o[c+8>>2]|0;if(r>>>0<(o[8902]|0)>>>0)le();n=r+12|0;if((o[n>>2]|0)!=(c|0))le();i=e+8|0;if((o[i>>2]|0)==(c|0)){o[n>>2]=e;o[i>>2]=r;h=e;break}else le()}}while(0);if(t|0){e=o[c+28>>2]|0;r=35896+(e<<2)|0;if((c|0)==(o[r>>2]|0)){o[r>>2]=h;if(!h){o[8899]=o[8899]&~(1<<e);break}}else{if(t>>>0<(o[8902]|0)>>>0)le();e=t+16|0;if((o[e>>2]|0)==(c|0))o[e>>2]=h;else o[t+20>>2]=h;if(!h)break}n=o[8902]|0;if(h>>>0<n>>>0)le();o[h+24>>2]=t;e=c+16|0;r=o[e>>2]|0;do{if(r|0)if(r>>>0<n>>>0)le();else{o[h+16>>2]=r;o[r+24>>2]=h;break}}while(0);e=o[e+4>>2]|0;if(e|0)if(e>>>0<(o[8902]|0)>>>0)le();else{o[h+20>>2]=e;o[e+24>>2]=h;break}}}else{r=o[c+8>>2]|0;n=o[c+12>>2]|0;e=35632+(i<<1<<2)|0;if((r|0)!=(e|0)){if(r>>>0<(o[8902]|0)>>>0)le();if((o[r+12>>2]|0)!=(c|0))le()}if((n|0)==(r|0)){o[8898]=o[8898]&~(1<<i);break}if((n|0)!=(e|0)){if(n>>>0<(o[8902]|0)>>>0)le();e=n+8|0;if((o[e>>2]|0)==(c|0))f=e;else le()}else f=n+8|0;o[r+12>>2]=n;o[f>>2]=r}}while(0);o[p+4>>2]=a|1;o[p+a>>2]=a;if((p|0)==(o[8903]|0)){o[8900]=a;return}}else{o[e>>2]=r&-2;o[p+4>>2]=a|1;o[p+a>>2]=a}e=a>>>3;if(a>>>0<256){n=35632+(e<<1<<2)|0;r=o[8898]|0;e=1<<e;if(r&e){e=n+8|0;r=o[e>>2]|0;if(r>>>0<(o[8902]|0)>>>0)le();else{d=e;m=r}}else{o[8898]=r|e;d=n+8|0;m=n}o[d>>2]=p;o[m+12>>2]=p;o[p+8>>2]=m;o[p+12>>2]=n;return}e=a>>>8;if(e)if(a>>>0>16777215)n=31;else{d=(e+1048320|0)>>>16&8;m=e<<d;h=(m+520192|0)>>>16&4;m=m<<h;n=(m+245760|0)>>>16&2;n=14-(h|d|n)+(m<<n>>>15)|0;n=a>>>(n+7|0)&1|n<<1}else n=0;i=35896+(n<<2)|0;o[p+28>>2]=n;o[p+20>>2]=0;o[p+16>>2]=0;e=o[8899]|0;r=1<<n;do{if(e&r){t=a<<((n|0)==31?0:25-(n>>>1)|0);e=o[i>>2]|0;while(1){if((o[e+4>>2]&-8|0)==(a|0)){n=e;i=130;break}r=e+16+(t>>>31<<2)|0;n=o[r>>2]|0;if(!n){i=127;break}else{t=t<<1;e=n}}if((i|0)==127)if(r>>>0<(o[8902]|0)>>>0)le();else{o[r>>2]=p;o[p+24>>2]=e;o[p+12>>2]=p;o[p+8>>2]=p;break}else if((i|0)==130){e=n+8|0;r=o[e>>2]|0;m=o[8902]|0;if(r>>>0>=m>>>0&n>>>0>=m>>>0){o[r+12>>2]=p;o[e>>2]=p;o[p+8>>2]=r;o[p+12>>2]=n;o[p+24>>2]=0;break}else le()}}else{o[8899]=e|r;o[i>>2]=p;o[p+24>>2]=i;o[p+12>>2]=p;o[p+8>>2]=p}}while(0);p=(o[8906]|0)+-1|0;o[8906]=p;if(!p)e=36048;else return;while(1){e=o[e>>2]|0;if(!e)break;else e=e+8|0}o[8906]=-1;return}function _o(){}function lo(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;i=r-i-(n>>>0>e>>>0|0)>>>0;return(C=i,e-n>>>0|0)|0}function fo(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;n=e+n>>>0;return(C=r+i+(n>>>0<e>>>0|0)>>>0,n|0)|0}function co(e,r,n){e=e|0;r=r|0;n=n|0;if((n|0)<32){C=r>>n;return e>>>n|(r&(1<<n)-1)<<32-n}C=(r|0)<0?-1:0;return r>>n-32|0}function ho(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,a=0,u=0,s=0;t=e+n|0;if((n|0)>=20){r=r&255;u=e&3;s=r|r<<8|r<<16|r<<24;a=t&~3;if(u){u=e+4-u|0;while((e|0)<(u|0)){i[e>>0]=r;e=e+1|0}}while((e|0)<(a|0)){o[e>>2]=s;e=e+4|0}}while((e|0)<(t|0)){i[e>>0]=r;e=e+1|0}return e-n|0}function mo(e,r,n){e=e|0;r=r|0;n=n|0;if((n|0)<32){C=r>>>n;return e>>>n|(r&(1<<n)-1)<<32-n}C=0;return r>>>n-32|0}function po(e,r,n){e=e|0;r=r|0;n=n|0;if((n|0)<32){C=r<<n|(e&(1<<n)-1<<32-n)>>>32-n;return e<<n}C=e<<n-32;return 0}function bo(e,r,n){e=e|0;r=r|0;n=n|0;var t=0;if((n|0)>=4096)return me(e|0,r|0,n|0)|0;t=e|0;if((e&3)==(r&3)){while(e&3){if(!n)return t|0;i[e>>0]=i[r>>0]|0;e=e+1|0;r=r+1|0;n=n-1|0}while((n|0)>=4){o[e>>2]=o[r>>2];e=e+4|0;r=r+4|0;n=n-4|0}}while((n|0)>0){i[e>>0]=i[r>>0]|0;e=e+1|0;r=r+1|0;n=n-1|0}return t|0}function wo(e){e=e|0;var r=0;r=i[m+(e&255)>>0]|0;if((r|0)<8)return r|0;r=i[m+(e>>8&255)>>0]|0;if((r|0)<8)return r+8|0;r=i[m+(e>>16&255)>>0]|0;if((r|0)<8)return r+16|0;return(i[m+(e>>>24)>>0]|0)+24|0}function vo(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,o=0;o=e&65535;t=r&65535;n=re(t,o)|0;i=e>>>16;e=(n>>>16)+(re(t,i)|0)|0;t=r>>>16;r=re(t,o)|0;return(C=(e>>>16)+(re(t,i)|0)+(((e&65535)+r|0)>>>16)|0,e+r<<16|n&65535|0)|0}function ko(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0,o=0,a=0,u=0,s=0,_=0;_=r>>31|((r|0)<0?-1:0)<<1;s=((r|0)<0?-1:0)>>31|((r|0)<0?-1:0)<<1;o=i>>31|((i|0)<0?-1:0)<<1;t=((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1;u=lo(_^e|0,s^r|0,_|0,s|0)|0;a=C;e=o^_;r=t^s;return lo((Mo(u,a,lo(o^n|0,t^i|0,o|0,t|0)|0,C,0)|0)^e|0,C^r|0,e|0,r|0)|0}function go(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0,a=0,u=0,s=0,_=0,l=0;t=f;f=f+16|0;s=t|0;u=r>>31|((r|0)<0?-1:0)<<1;a=((r|0)<0?-1:0)>>31|((r|0)<0?-1:0)<<1;l=i>>31|((i|0)<0?-1:0)<<1;_=((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1;e=lo(u^e|0,a^r|0,u|0,a|0)|0;r=C;Mo(e,r,lo(l^n|0,_^i|0,l|0,_|0)|0,C,s)|0;i=lo(o[s>>2]^u|0,o[s+4>>2]^a|0,u|0,a|0)|0;n=C;f=t;return(C=n,i)|0}function yo(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0,o=0;t=e;o=n;n=vo(t,o)|0;e=C;return(C=(re(r,o)|0)+(re(i,t)|0)+e|e&0,n|0|0)|0}function Ao(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;return Mo(e,r,n,i,0)|0}function To(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0,a=0;a=f;f=f+16|0;t=a|0;Mo(e,r,n,i,t)|0;f=a;return(C=o[t+4>>2]|0,o[t>>2]|0)|0}function Mo(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0;f=e;_=r;l=_;u=n;h=i;s=h;if(!l){a=(t|0)!=0;if(!s){if(a){o[t>>2]=(f>>>0)%(u>>>0);o[t+4>>2]=0}h=0;t=(f>>>0)/(u>>>0)>>>0;return(C=h,t)|0}else{if(!a){h=0;t=0;return(C=h,t)|0}o[t>>2]=e|0;o[t+4>>2]=r&0;h=0;t=0;return(C=h,t)|0}}a=(s|0)==0;do{if(u){if(!a){a=(ie(s|0)|0)-(ie(l|0)|0)|0;if(a>>>0<=31){c=a+1|0;s=31-a|0;r=a-31>>31;u=c;e=f>>>(c>>>0)&r|l<<s;r=l>>>(c>>>0)&r;a=0;s=f<<s;break}if(!t){h=0;t=0;return(C=h,t)|0}o[t>>2]=e|0;o[t+4>>2]=_|r&0;h=0;t=0;return(C=h,t)|0}a=u-1|0;if(a&u|0){s=(ie(u|0)|0)+33-(ie(l|0)|0)|0;m=64-s|0;c=32-s|0;_=c>>31;d=s-32|0;r=d>>31;u=s;e=c-1>>31&l>>>(d>>>0)|(l<<c|f>>>(s>>>0))&r;r=r&l>>>(s>>>0);a=f<<m&_;s=(l<<m|f>>>(d>>>0))&_|f<<c&s-33>>31;break}if(t|0){o[t>>2]=a&f;o[t+4>>2]=0}if((u|0)==1){d=_|r&0;m=e|0|0;return(C=d,m)|0}else{m=wo(u|0)|0;d=l>>>(m>>>0)|0;m=l<<32-m|f>>>(m>>>0)|0;return(C=d,m)|0}}else{if(a){if(t|0){o[t>>2]=(l>>>0)%(u>>>0);o[t+4>>2]=0}d=0;m=(l>>>0)/(u>>>0)>>>0;return(C=d,m)|0}if(!f){if(t|0){o[t>>2]=0;o[t+4>>2]=(l>>>0)%(s>>>0)}d=0;m=(l>>>0)/(s>>>0)>>>0;return(C=d,m)|0}a=s-1|0;if(!(a&s)){if(t|0){o[t>>2]=e|0;o[t+4>>2]=a&l|r&0}d=0;m=l>>>((wo(s|0)|0)>>>0);return(C=d,m)|0}a=(ie(s|0)|0)-(ie(l|0)|0)|0;if(a>>>0<=30){r=a+1|0;s=31-a|0;u=r;e=l<<s|f>>>(r>>>0);r=l>>>(r>>>0);a=0;s=f<<s;break}if(!t){d=0;m=0;return(C=d,m)|0}o[t>>2]=e|0;o[t+4>>2]=_|r&0;d=0;m=0;return(C=d,m)|0}}while(0);if(!u){l=s;_=0;s=0}else{c=n|0|0;f=h|i&0;l=fo(c|0,f|0,-1,-1)|0;n=C;_=s;s=0;do{i=_;_=a>>>31|_<<1;a=s|a<<1;i=e<<1|i>>>31|0;h=e>>>31|r<<1|0;lo(l|0,n|0,i|0,h|0)|0;m=C;d=m>>31|((m|0)<0?-1:0)<<1;s=d&1;e=lo(i|0,h|0,d&c|0,(((m|0)<0?-1:0)>>31|((m|0)<0?-1:0)<<1)&f|0)|0;r=C;u=u-1|0}while((u|0)!=0);l=_;_=0}u=0;if(t|0){o[t>>2]=e;o[t+4>>2]=r}d=(a|0)>>>31|(l|u)<<1|(u<<1|a>>>31)&0|_;m=(a<<1|0>>>31)&-2|s;return(C=d,m)|0}function Eo(e,r){e=e|0;r=r|0;return Io[e&1](r|0)|0}function So(e,r,n,i,t,o,a,u,s,_){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;o=o|0;a=a|0;u=u|0;s=s|0;_=_|0;return Lo[e&3](r|0,n|0,i|0,t|0,o|0,a|0,u|0,s|0,_|0)|0}function xo(e,r,n){e=e|0;r=r|0;n=n|0;return Po[e&3](r|0,n|0)|0}function Oo(e){e=e|0;te(0);return 0}function Ro(e,r,n,i,t,o,a,u,s){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;o=o|0;a=a|0;u=u|0;s=s|0;te(1);return 0}function Co(e,r){e=e|0;r=r|0;te(2);return 0}var Io=[Oo,Hn];var Lo=[Ro,Dn,Bn,Ro];var Po=[Co,jn,Vn,Co];return{_olm_create_inbound_session_from:Tn,_olm_unpickle_outbound_group_session:Ut,_olm_clear_utility:rn,_olm_outbound_group_session_message_index:Vt,_olm_account_sign:dn,_bitshift64Lshr:mo,_olm_account_one_time_keys:pn,_olm_encrypt_random_length:In,_olm_init_inbound_group_session:bt,_olm_matches_inbound_session:xn,_bitshift64Ashr:co,_memcpy:bo,_olm_error:Vr,_olm_session_has_received_message:Sn,_olm_create_account_random_length:_n,_olm_inbound_group_session:dt,_olm_outbound_group_session_last_error:Lt,_olm_utility_last_error:Kr,_olm_pickle_inbound_group_session:kt,_free:so,_olm_inbound_group_session_id_length:Tt,_olm_unpickle_session:sn,_olm_encrypt_message_type:Cn,_olm_init_outbound_group_session_random_length:Ft,_olm_get_library_version:Dr,_olm_pickle_inbound_group_session_length:vt,_olm_clear_account:$r,_olm_decrypt_max_plaintext_length:Nn,_olm_group_decrypt:At,_olm_group_decrypt_max_plaintext_length:yt,_olm_remove_one_time_keys:Rn,_olm_inbound_group_session_id:Mt,_olm_import_inbound_group_session:wt,_olm_clear_inbound_group_session:mt,_olm_export_inbound_group_session_length:xt,_olm_export_inbound_group_session:Ot,_olm_account_one_time_keys_length:mn,_olm_unpickle_inbound_group_session:gt,_olm_inbound_group_session_first_known_index:Et,_olm_inbound_group_session_last_error:pt,_olm_pickle_session:an,_olm_encrypt:Pn,_olm_session_id:En,_olm_sha256:zn,_olm_account_signature_length:hn,_olm_decrypt:Un,_olm_account_max_number_of_one_time_keys:wn,_olm_matches_inbound_session_from:On,_olm_outbound_group_session_size:Rt,_olm_account_identity_keys_length:fn,_olm_utility:Zr,_olm_create_account:ln,_olm_account_generate_one_time_keys:kn,_olm_utility_size:Jr,_olm_account_size:Wr,_olm_ed25519_verify:qn,_memset:ho,_olm_create_outbound_session_random_length:gn,_olm_pickle_outbound_group_session:Nt,_olm_group_encrypt_message_length:qt,_olm_pickle_outbound_group_session_length:Pt,_olm_account_generate_one_time_keys_random_length:vn,_olm_outbound_group_session_key:Gt,_olm_group_encrypt:Ht,_olm_account_identity_keys:cn,_i64Subtract:lo,_olm_unpickle_account:un,_olm_clear_session:en,_olm_pickle_session_length:tn,_olm_create_outbound_session:yn,_olm_inbound_group_session_size:ht,_olm_sha256_length:Fn,_malloc:uo,_olm_account:Xr,_olm_pickle_account_length:nn,_olm_session_size:Yr,_olm_inbound_group_session_is_verified:St,_olm_session:Qr,_bitshift64Shl:po,_olm_outbound_group_session_id_length:jt,_olm_create_inbound_session:An,_olm_clear_outbound_group_session:It,_olm_session_id_length:Mn,_i64Add:fo,_olm_account_last_error:Br,_olm_outbound_group_session:Ct,_olm_encrypt_message_length:Ln,_olm_pickle_account:on,_olm_account_mark_keys_as_published:bn,_olm_init_outbound_group_session:zt,_olm_outbound_group_session_key_length:Bt,_olm_session_last_error:Gr,_olm_outbound_group_session_id:Dt,runPostSets:_o,stackAlloc:ve,stackSave:ke,stackRestore:ge,establishStackSpace:ye,setThrew:Ae,setTempRet0:Ee,getTempRet0:Se,dynCall_ii:Eo,dynCall_iiiiiiiiii:So,dynCall_iii:xo}}(a.t,a.u,x);a._olm_create_inbound_session_from=d._olm_create_inbound_session_from,a._olm_unpickle_outbound_group_session=d._olm_unpickle_outbound_group_session,a._olm_clear_utility=d._olm_clear_utility,a._olm_outbound_group_session_message_index=d._olm_outbound_group_session_message_index,a._olm_account_sign=d._olm_account_sign;var pb=a._bitshift64Lshr=d._bitshift64Lshr;a._olm_account_one_time_keys=d._olm_account_one_time_keys,a._olm_encrypt_random_length=d._olm_encrypt_random_length,a._olm_init_inbound_group_session=d._olm_init_inbound_group_session,a._olm_matches_inbound_session=d._olm_matches_inbound_session;var nb=a._bitshift64Ashr=d._bitshift64Ashr,rb=a._memcpy=d._memcpy;a._olm_error=d._olm_error,a._olm_account_generate_one_time_keys=d._olm_account_generate_one_time_keys,a._olm_create_account_random_length=d._olm_create_account_random_length,a._olm_inbound_group_session=d._olm_inbound_group_session,a._olm_outbound_group_session_last_error=d._olm_outbound_group_session_last_error,a._olm_utility_last_error=d._olm_utility_last_error,a._olm_pickle_inbound_group_session=d._olm_pickle_inbound_group_session;var va=a._free=d._free;a.runPostSets=d.runPostSets,a._olm_inbound_group_session_id_length=d._olm_inbound_group_session_id_length,a._olm_unpickle_session=d._olm_unpickle_session,a._olm_encrypt_message_type=d._olm_encrypt_message_type,a._olm_init_outbound_group_session_random_length=d._olm_init_outbound_group_session_random_length,a._olm_get_library_version=d._olm_get_library_version,a._olm_pickle_inbound_group_session_length=d._olm_pickle_inbound_group_session_length,a._olm_clear_account=d._olm_clear_account,a._olm_decrypt_max_plaintext_length=d._olm_decrypt_max_plaintext_length,a._olm_group_decrypt=d._olm_group_decrypt,a._olm_account_last_error=d._olm_account_last_error,a._olm_remove_one_time_keys=d._olm_remove_one_time_keys,a._olm_inbound_group_session_id=d._olm_inbound_group_session_id,a._olm_import_inbound_group_session=d._olm_import_inbound_group_session,a._olm_clear_inbound_group_session=d._olm_clear_inbound_group_session,a._olm_export_inbound_group_session_length=d._olm_export_inbound_group_session_length,a._olm_export_inbound_group_session=d._olm_export_inbound_group_session,a._olm_account_one_time_keys_length=d._olm_account_one_time_keys_length,a._olm_unpickle_inbound_group_session=d._olm_unpickle_inbound_group_session,a._olm_inbound_group_session_first_known_index=d._olm_inbound_group_session_first_known_index,a._olm_inbound_group_session_last_error=d._olm_inbound_group_session_last_error,a._olm_pickle_session=d._olm_pickle_session,a._olm_encrypt=d._olm_encrypt,a._olm_session_id=d._olm_session_id,a._olm_sha256=d._olm_sha256,a._olm_account_signature_length=d._olm_account_signature_length,a._olm_decrypt=d._olm_decrypt,a._olm_account_max_number_of_one_time_keys=d._olm_account_max_number_of_one_time_keys,a._olm_matches_inbound_session_from=d._olm_matches_inbound_session_from,a._olm_outbound_group_session_size=d._olm_outbound_group_session_size,a._olm_account_identity_keys_length=d._olm_account_identity_keys_length,a._olm_utility=d._olm_utility,a._olm_create_account=d._olm_create_account,a._olm_session_has_received_message=d._olm_session_has_received_message,a._olm_utility_size=d._olm_utility_size,a._olm_account_size=d._olm_account_size,a._olm_ed25519_verify=d._olm_ed25519_verify;var ob=a._memset=d._memset;a._olm_create_outbound_session_random_length=d._olm_create_outbound_session_random_length,a._olm_pickle_outbound_group_session=d._olm_pickle_outbound_group_session,a._olm_group_encrypt_message_length=d._olm_group_encrypt_message_length,a._olm_pickle_outbound_group_session_length=d._olm_pickle_outbound_group_session_length,a._olm_account_generate_one_time_keys_random_length=d._olm_account_generate_one_time_keys_random_length,a._olm_outbound_group_session_key=d._olm_outbound_group_session_key,a._olm_group_encrypt=d._olm_group_encrypt,a._olm_pickle_account_length=d._olm_pickle_account_length;var lb=a._i64Subtract=d._i64Subtract;a._olm_unpickle_account=d._olm_unpickle_account,a._olm_clear_session=d._olm_clear_session,a._olm_pickle_session_length=d._olm_pickle_session_length,a._olm_create_outbound_session=d._olm_create_outbound_session,a._olm_inbound_group_session_size=d._olm_inbound_group_session_size,a._olm_sha256_length=d._olm_sha256_length;var X=a._malloc=d._malloc;a._olm_account=d._olm_account,a._olm_account_identity_keys=d._olm_account_identity_keys,a._olm_session_size=d._olm_session_size,a._olm_inbound_group_session_is_verified=d._olm_inbound_group_session_is_verified,a._olm_session=d._olm_session;var qb=a._bitshift64Shl=d._bitshift64Shl;a._olm_outbound_group_session_id_length=d._olm_outbound_group_session_id_length,a._olm_create_inbound_session=d._olm_create_inbound_session,a._olm_clear_outbound_group_session=d._olm_clear_outbound_group_session,a._olm_session_id_length=d._olm_session_id_length;var mb=a._i64Add=d._i64Add;a._olm_group_decrypt_max_plaintext_length=d._olm_group_decrypt_max_plaintext_length,a._olm_outbound_group_session=d._olm_outbound_group_session,a._olm_encrypt_message_length=d._olm_encrypt_message_length,a._olm_pickle_account=d._olm_pickle_account,a._olm_account_mark_keys_as_published=d._olm_account_mark_keys_as_published,a._olm_init_outbound_group_session=d._olm_init_outbound_group_session,a._olm_outbound_group_session_key_length=d._olm_outbound_group_session_key_length,a._olm_session_last_error=d._olm_session_last_error,a._olm_outbound_group_session_id=d._olm_outbound_group_session_id,a.dynCall_ii=d.dynCall_ii,a.dynCall_iiiiiiiiii=d.dynCall_iiiiiiiiii,a.dynCall_iii=d.dynCall_iii,e.j=d.stackAlloc,e.f=d.stackSave,e.d=d.stackRestore,e.J=d.establishStackSpace,e.C=d.setTempRet0,e.A=d.getTempRet0,T.prototype=Error(),T.prototype.constructor=T;var jb,Qa=null,ea=function e(){a.calledRun||xa(),a.calledRun||(ea=e)};a.callMain=a.H=function(e){function r(){for(var e=0;3>e;e++)i.push(0)}e=e||[],Y||(Y=!0,S(la));var n=e.length+1,i=[K(ia(a.thisProgram),"i8",0)];r();for(var t=0;t<n-1;t+=1)i.push(K(ia(e[t]),"i8",0)),r();i.push(0),i=K(i,"i32",0);try{Ra(a._main(n,i,0),!0)}catch(e){if(!(e instanceof T)){if("SimulateInfiniteLoop"!=e)throw e&&"object"==typeof e&&e.stack&&a.o("exception thrown: "+[e,e.stack]),e;a.noExitRuntime=!0}}},a.run=a.run=xa,a.exit=a.exit=Ra;var Ta=[];if(a.abort=a.abort=Q,a.preInit)for("function"==typeof a.preInit&&(a.preInit=[a.preInit]);0<a.preInit.length;)a.preInit.pop()();var Pa=!1;a.noInitialRun&&(Pa=!1),xa();var q=1;L.prototype.free=function(){a._olm_clear_outbound_group_session(this.a),y(this.a)},L.prototype.pickle=k(function(e){e=m(e);var n=v(a._olm_pickle_outbound_group_session_length)(this.a),i=h(e),t=h(n+q);return v(a._olm_pickle_outbound_group_session)(this.a,i,e.length,t,n),r(t)}),L.prototype.unpickle=k(function(e,r){var n=m(e),i=h(n),t=m(r),o=h(t);v(a._olm_unpickle_outbound_group_session)(this.a,i,n.length,o,t.length)}),L.prototype.create=k(function(){var e=v(a._olm_init_outbound_group_session_random_length)(this.a),r=ba(e);v(a._olm_init_outbound_group_session)(this.a,r,e)}),L.prototype.encrypt=function(e){var r,n,i;try{i=a.lengthBytesUTF8(e);var t=v(a._olm_group_encrypt_message_length)(this.a,i);return r=u(i+1),a.stringToUTF8(e,r,i+1),n=u(t+q),v(a._olm_group_encrypt)(this.a,r,i,n,t),a.setValue(n+t,0,"i8"),a.UTF8ToString(n)}finally{void 0!==r&&(na(r,i+1),y(r)),void 0!==n&&y(n)}},L.prototype.session_id=k(function(){var e=v(a._olm_outbound_group_session_id_length)(this.a),n=h(e+q);return v(a._olm_outbound_group_session_id)(this.a,n,e),r(n)}),L.prototype.session_key=k(function(){var e=v(a._olm_outbound_group_session_key_length)(this.a),n=h(e+q);return v(a._olm_outbound_group_session_key)(this.a,n,e),r(n)}),L.prototype.message_index=function(){return v(a._olm_outbound_group_session_message_index)(this.a)},N.OutboundGroupSession=L,q=1,I.prototype.free=function(){a._olm_clear_inbound_group_session(this.a),y(this.a)},I.prototype.pickle=k(function(e){e=m(e);var n=F(a._olm_pickle_inbound_group_session_length)(this.a),i=h(e),t=h(n+q);return F(a._olm_pickle_inbound_group_session)(this.a,i,e.length,t,n),r(t)}),I.prototype.unpickle=k(function(e,r){var n=m(e),i=h(n),t=m(r),o=h(t);F(a._olm_unpickle_inbound_group_session)(this.a,i,n.length,o,t.length)}),I.prototype.create=k(function(e){var r=h(e=m(e));F(a._olm_init_inbound_group_session)(this.a,r,e.length)}),I.prototype.import_session=k(function(e){var r=h(e=m(e));F(a._olm_import_inbound_group_session)(this.a,r,e.length)}),I.prototype.decrypt=k(function(e){var r,n,i;try{r=u(e.length),a.writeAsciiToMemory(e,r,!0);var t=F(a._olm_group_decrypt_max_plaintext_length)(this.a,r,e.length);a.writeAsciiToMemory(e,r,!0),n=u(t+q);var o=h(4);return i=F(a._olm_group_decrypt)(this.a,r,e.length,n,t,o),a.setValue(n+i,0,"i8"),{plaintext:sa(n),message_index:a.getValue(o,"i32")}}finally{void 0!==r&&y(r),void 0!==n&&(na(n,i+q),y(n))}}),I.prototype.session_id=k(function(){var e=F(a._olm_inbound_group_session_id_length)(this.a),n=h(e+q);return F(a._olm_inbound_group_session_id)(this.a,n,e),r(n)}),I.prototype.first_known_index=k(function(){return F(a._olm_inbound_group_session_first_known_index)(this.a)}),I.prototype.export_session=k(function(e){var n=F(a._olm_export_inbound_group_session_length)(this.a),i=h(n+q);return v(a._olm_export_inbound_group_session)(this.a,i,n,e),r(i)}),N.InboundGroupSession=I;var Ua=a.Runtime,u=a._malloc,y=a._free,r=a.Pointer_stringify,aa=a._olm_error(),q=1;C.prototype.free=function(){a._olm_clear_account(this.a),y(this.a)},C.prototype.create=k(function(){var e=t(a._olm_create_account_random_length)(this.a),r=ba(e);t(a._olm_create_account)(this.a,r,e)}),C.prototype.identity_keys=k(function(){var e=t(a._olm_account_identity_keys_length)(this.a),n=h(e+q);return t(a._olm_account_identity_keys)(this.a,n,e),r(n)}),C.prototype.sign=k(function(e){var n=t(a._olm_account_signature_length)(this.a),i=h(e=m(e)),o=h(n+q);return t(a._olm_account_sign)(this.a,i,e.length,o,n),r(o)}),C.prototype.one_time_keys=k(function(){var e=t(a._olm_account_one_time_keys_length)(this.a),n=h(e+q);return t(a._olm_account_one_time_keys)(this.a,n,e),r(n)}),C.prototype.mark_keys_as_published=k(function(){t(a._olm_account_mark_keys_as_published)(this.a)}),C.prototype.max_number_of_one_time_keys=k(function(){return t(a._olm_account_max_number_of_one_time_keys)(this.a)}),C.prototype.generate_one_time_keys=k(function(e){var r=t(a._olm_account_generate_one_time_keys_random_length)(this.a,e),n=ba(r);t(a._olm_account_generate_one_time_keys)(this.a,e,n,r)}),C.prototype.remove_one_time_keys=k(function(e){t(a._olm_remove_one_time_keys)(this.a,e.a)}),C.prototype.pickle=k(function(e){e=m(e);var n=t(a._olm_pickle_account_length)(this.a),i=h(e),o=h(n+q);return t(a._olm_pickle_account)(this.a,i,e.length,o,n),r(o)}),C.prototype.unpickle=k(function(e,r){var n=m(e),i=h(n),o=m(r),u=h(o);t(a._olm_unpickle_account)(this.a,i,n.length,u,o.length)}),w.prototype.free=function(){a._olm_clear_session(this.a),y(this.a)},w.prototype.pickle=k(function(e){e=m(e);var n=p(a._olm_pickle_session_length)(this.a),i=h(e),t=h(n+q);return p(a._olm_pickle_session)(this.a,i,e.length,t,n),r(t)}),w.prototype.unpickle=k(function(e,r){var n=m(e),i=h(n),t=m(r),o=h(t);p(a._olm_unpickle_session)(this.a,i,n.length,o,t.length)}),w.prototype.create_outbound=k(function(e,r,n){var i=p(a._olm_create_outbound_session_random_length)(this.a),t=ba(i);r=m(r),n=m(n);var o=h(r),u=h(n);p(a._olm_create_outbound_session)(this.a,e.a,o,r.length,u,n.length,t,i)}),w.prototype.create_inbound=k(function(e,r){var n=m(r),i=h(n);p(a._olm_create_inbound_session)(this.a,e.a,i,n.length)}),w.prototype.create_inbound_from=k(function(e,r,n){var i=h(r=m(r)),t=h(n=m(n));p(a._olm_create_inbound_session_from)(this.a,e.a,i,r.length,t,n.length)}),w.prototype.session_id=k(function(){var e=p(a._olm_session_id_length)(this.a),n=h(e+q);return p(a._olm_session_id)(this.a,n,e),r(n)}),w.prototype.has_received_message=function(){return!!p(a._olm_session_has_received_message)(this.a)},w.prototype.matches_inbound=k(function(e){var r=h(e=m(e));return!!p(a._olm_matches_inbound_session)(this.a,r,e.length)}),w.prototype.matches_inbound_from=k(function(e,r){var n=m(e),i=h(n),t=m(r),o=h(t);return!!p(a._olm_matches_inbound_session_from)(this.a,i,n.length,o,t.length)}),w.prototype.encrypt=k(function(e){var r,n,i;try{var t=p(a._olm_encrypt_random_length)(this.a),o=p(a._olm_encrypt_message_type)(this.a);i=a.lengthBytesUTF8(e);var s=p(a._olm_encrypt_message_length)(this.a,i),_=ba(t);return r=u(i+1),a.stringToUTF8(e,r,i+1),n=u(s+q),p(a._olm_encrypt)(this.a,r,i,_,t,n,s),a.setValue(n+s,0,"i8"),{type:o,body:a.UTF8ToString(n)}}finally{void 0!==r&&(na(r,i+1),y(r)),void 0!==n&&y(n)}}),w.prototype.decrypt=k(function(e,r){var n,i,t;try{n=u(r.length),a.writeAsciiToMemory(r,n,!0),t=p(a._olm_decrypt_max_plaintext_length)(this.a,e,n,r.length),a.writeAsciiToMemory(r,n,!0),i=u(t+q);var o=p(a._olm_decrypt)(this.a,e,n,r.length,i,t);return a.setValue(i+o,0,"i8"),sa(i)}finally{void 0!==n&&y(n),void 0!==i&&(na(i,t+q),y(i))}}),oa.prototype.free=function(){a._olm_clear_utility(this.a),y(this.a)},oa.prototype.sha256=k(function(e){var n=ya(a._olm_sha256_length)(this.a),i=h(e=m(e)),t=h(n+q);return ya(a._olm_sha2516)(this.a,i,e.length(),t,n),r(t)}),oa.prototype.ed25519_verify=k(function(e,r,n){var i=h(e=m(e)),t=h(r=m(r)),o=h(n=m(n));ya(a._olm_ed25519_verify)(this.a,i,e.length,t,r.length,o,n.length)}),N.Account=C,N.Session=w,N.Utility=oa,N.get_library_version=k(function(){var e=h(3);return a._olm_get_library_version(e,e+1,e+2),[W(e,"i8"),W(e+1,"i8"),W(e+2,"i8")]})}(),void 0!==module&&module.exports&&(module.exports=N),"undefined"!=typeof window&&(window.Olm=N)}}); -//# sourceMappingURL=olm.js.map \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/olm.js.map b/riot/bundles/f5c70ee9a294f6e4590e/olm.js.map deleted file mode 100644 index bf57a2f..0000000 --- a/riot/bundles/f5c70ee9a294f6e4590e/olm.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack/bootstrap","(webpack)/buildin/global.js","src/vector/olm-loader.js","node_modules/olm/olm.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","g","this","Function","eval","e","window","global","OLM_OPTIONS","TOTAL_STACK","TOTAL_MEMORY","require","N","ra","process","P","crypto","getRandomValues","Error","cb","z","randomBytes","length","set","a","b","Q","Ba","Ca","charAt","A","fa","D","tempI64","tempDouble","db","eb","fb","gb","ga","ha","W","K","f","Da","h","X","j","Math","max","subarray","slice","B","Uint8Array","k","O","String","fromCharCode","apply","min","UTF8ToString","Ea","sa","ta","charCodeAt","Fa","hb","replace","___cxa_demangle","ua","substr","va","Ga","stack","toString","ib","S","shift","Ha","Ia","unshift","Ja","Ka","ia","Array","La","Ma","Na","___errno_location","ja","E","v","wa","push","T","message","status","xa","calledRun","ka","Y","la","Oa","onRuntimeInitialized","_main","Pa","callMain","postRun","arguments","Qa","Date","now","R","preRun","setStatus","setTimeout","Ra","noExitRuntime","H","jb","Sa","onExit","Z","exit","ma","quit","print","JSON","stringify","Ta","forEach","L","_olm_outbound_group_session_size","u","_olm_outbound_group_session","aa","_olm_outbound_group_session_last_error","I","_olm_inbound_group_session_size","_olm_inbound_group_session","F","_olm_inbound_group_session_last_error","allocate","ALLOC_STACK","intArrayFromString","ba","HEAPU8","buffer","Ua","na","HEAP8","C","_olm_account_size","_olm_account","_olm_account_last_error","w","_olm_session_size","_olm_session","_olm_session_last_error","oa","_olm_utility_size","_olm_utility","ya","_olm_utility_last_error","G","ca","da","U","pa","qa","ENVIRONMENT","importScripts","console","log","printErr","warn","read","normalize","readFileSync","resolve","path","join","__dirname","readBinary","load","thisProgram","argv","on","inspect","readbuffer","scriptArgs","XMLHttpRequest","open","send","responseText","readAsync","responseType","onload","response","onerror","setWindowTitle","document","title","tempRet0","parseInt","splice","M","J","V","q","ceil","Runtime","addFunction","removeFunction","Va","Wa","match","body","returnValue","stackSave","stackRestore","arrayToC","stringToC","string","array","async","EmterpreterAsync","every","map","ccall","cwrap","setValue","getValue","ALLOC_NORMAL","ALLOC_STATIC","ALLOC_DYNAMIC","ALLOC_NONE","getMemory","Xa","Pointer_stringify","AsciiToString","stringToAscii","UTF8ArrayToString","stringToUTF8Array","stringToUTF8","lengthBytesUTF8","stackTrace","x","Ya","Za","$a","ab","za","bb","ArrayBuffer","Int8Array","HEAP16","Int16Array","HEAP32","Int32Array","HEAPU16","Uint16Array","HEAPU32","Uint32Array","HEAPF32","Float32Array","HEAPF64","Float64Array","HEAP","addOnPreRun","addOnInit","addOnPreMain","addOnExit","addOnPostRun","intArrayToString","writeStringToMemory","writeArrayToMemory","writeAsciiToMemory","imul","clz32","abs","floor","Aa","ea","addRunDependency","monitorRunDependencies","removeRunDependency","clearInterval","preloadedImages","preloadedAudios","kb","_i64Subtract","lb","_i64Add","mb","_bitshift64Ashr","nb","_memset","ob","_bitshift64Lshr","pb","_bitshift64Shl","qb","_memcpy","rb","sb","NaN","Infinity","abort","assert","invoke_ii","dynCall_ii","setThrew","invoke_iiiiiiiiii","dynCall_iiiiiiiiii","invoke_iii","dynCall_iii","_pthread_self","_abort","___setErrNo","_llvm_stacksave","_sbrk","_time","_emscripten_memcpy_big","_llvm_stackrestore","_sysconf","navigator","hardwareConcurrency","STACKTOP","STACK_MAX","tempDoublePtr","ABORT","cttz_i8","env","y","sqrt","pow","cos","sin","tan","acos","asin","atan","atan2","exp","_","$","qf","_a","Wc","Fb","Gb","Yc","Cd","ff","jd","Xc","tb","ub","Nb","vb","wb","xb","dd","yb","ed","zb","fd","Ab","gd","Bb","hd","Cb","Zc","Db","_c","Eb","$c","af","Hb","Xd","Ib","ae","Jb","$d","Kb","Lb","Ze","Xe","Mb","$e","Ue","Ve","We","Ob","Pb","Qb","Rb","Sb","he","Tb","Ub","Vb","Wb","Xb","Yb","id","Zb","_b","Sc","$b","ac","bc","cc","ie","xd","dc","ec","yd","je","ke","fc","gc","le","zd","hc","ic","ld","jc","md","kc","nd","lc","od","mc","pd","nc","qd","oc","rd","pc","sd","qc","td","rc","ud","sc","vd","tc","wd","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","kd","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Tc","Lc","Uc","Mc","Vc","Nc","Oc","Pc","Qc","Rc","Dd","cd","bd","ad","Ad","Bd","Ed","pf","lf","of","kf","mf","Fd","Gd","Hd","vf","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Td","Sd","Ud","Vd","Wd","Yd","Zd","_d","be","ce","de","ee","fe","ge","me","ne","oe","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","Me","Ne","Oe","Pe","Qe","Re","Se","Te","nf","Ye","_e","bf","cf","df","ef","gf","hf","jf","rf","sf","tf","yf","uf","wf","xf","zf","Af","Bf","Cf","Df","Ef","_olm_create_inbound_session_from","_olm_unpickle_outbound_group_session","_olm_clear_utility","_olm_outbound_group_session_message_index","_olm_account_sign","_olm_account_one_time_keys","_olm_encrypt_random_length","_olm_init_inbound_group_session","_olm_matches_inbound_session","_olm_error","_olm_session_has_received_message","_olm_create_account_random_length","_olm_pickle_inbound_group_session","_free","_olm_inbound_group_session_id_length","_olm_unpickle_session","_olm_encrypt_message_type","_olm_init_outbound_group_session_random_length","_olm_get_library_version","_olm_pickle_inbound_group_session_length","_olm_clear_account","_olm_decrypt_max_plaintext_length","_olm_group_decrypt","_olm_group_decrypt_max_plaintext_length","_olm_remove_one_time_keys","_olm_inbound_group_session_id","_olm_import_inbound_group_session","_olm_clear_inbound_group_session","_olm_export_inbound_group_session_length","_olm_export_inbound_group_session","_olm_account_one_time_keys_length","_olm_unpickle_inbound_group_session","_olm_inbound_group_session_first_known_index","_olm_pickle_session","_olm_encrypt","_olm_session_id","_olm_sha256","_olm_account_signature_length","_olm_decrypt","_olm_account_max_number_of_one_time_keys","_olm_matches_inbound_session_from","_olm_account_identity_keys_length","_olm_create_account","_olm_account_generate_one_time_keys","_olm_ed25519_verify","_olm_create_outbound_session_random_length","_olm_pickle_outbound_group_session","_olm_group_encrypt_message_length","_olm_pickle_outbound_group_session_length","_olm_account_generate_one_time_keys_random_length","_olm_outbound_group_session_key","_olm_group_encrypt","_olm_account_identity_keys","_olm_unpickle_account","_olm_clear_session","_olm_pickle_session_length","_olm_create_outbound_session","_olm_sha256_length","_malloc","_olm_pickle_account_length","_olm_inbound_group_session_is_verified","_olm_outbound_group_session_id_length","_olm_create_inbound_session","_olm_clear_outbound_group_session","_olm_session_id_length","_olm_encrypt_message_length","_olm_pickle_account","_olm_account_mark_keys_as_published","_olm_init_outbound_group_session","_olm_outbound_group_session_key_length","_olm_outbound_group_session_id","runPostSets","stackAlloc","establishStackSpace","setTempRet0","getTempRet0","constructor","run","preInit","pop","noInitialRun","free","pickle","unpickle","encrypt","session_id","session_key","message_index","OutboundGroupSession","import_session","decrypt","plaintext","first_known_index","export_session","InboundGroupSession","identity_keys","sign","one_time_keys","mark_keys_as_published","max_number_of_one_time_keys","generate_one_time_keys","remove_one_time_keys","create_outbound","create_inbound","create_inbound_from","has_received_message","matches_inbound","matches_inbound_from","type","sha256","_olm_sha2516","ed25519_verify","Account","Session","Utility","get_library_version","Olm"],"mappings":"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CA,sfACA,wfACA,sfACA,wfACA,sfACA,sfACA,wfACA,ufACA,ufACA,sfACA,ufACA,sfACA,qfACA,qfACA,wfACA,wfACA,qfACA,sfACA,ufACA,qfACA,wfACA,wfACA,qfACA,sfACA,sfACA,ufACA,sfACA,wfACA,qfACA,sfACA,qfACA,sfACA,6RAAArC,EAAAwC,GAAkSH,GAAA,gNAClS,wfACA,qfACA,sfACA,qfACA,ufACA,ufACA,qfACA,sfACA,ufACA,sfACA,wfACA,wfACA,sfACA,qfACA,ufACA,ufACA,ufACA,wfACA,sfACA,ufACA,sfACA,qfACA,sfACA,ufACA,wfACA,ufACA,wfACA,qfACA,sfACA,qfACA,qfACA,qfACA,qfACA,ufACA,sfACA,sfACA,wfACA,wfACA,qfACA,sfACA,sfACA,sfACA,wfACA,wfACA,sfACA,ufACA,qfACA,ufACA,wfACA,wfACA,ufACA,qfACA,ufACA,ufACA,qfACA,ufACA,sfACA,ufACA,wfACA,qfACA,sfACA,qfACA,sfACA,sfACA,ufACA,wfACA,wfACA,ufACA,sfACA,oOAAArC,EAAAwC,EAAA,OAA+OH,GAAA,mQAC/O,ufACA,wfACA,sfACA,qfACA,sfACA,qfACA,ufACA,qfACA,ufACA,ufACA,qfACA,ufACA,qfACA,wfACA,wfACA,qfACA,qfACA,qfACA,wfACA,qfACA,qfACA,sfACA,qfACA,qfACA,wfACA,wfACA,sfACA,wfACA,qfACA,ufACA,sfACA,ufACA,sfACA,qfACA,qfACA,qfACA,ufACA,wfACA,ufACA,sfACA,sfACA,ufACA,sfACA,ufACA,sfACA,sfACA,sfACA,wfACA,qfACA,ufACA,ufACA,ufACA,ufACA,qfACA,qfACA,sfACA,sfACA,qfACA,qfACA,qfACA,sfACA,ufACA,qfACA,wfACA,ufACA,wfACA,sfACA,ufACA,wfACA,gWAAArC,EAAAwC,EAAA,OAA2WH,GAAA,wIAC3W,ufACA,qfACA,wfACA,sfACA,wfACA,sfACA,ufACA,qfACA,qfACA,sfACA,wfACA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","file":"bundles/f5c70ee9a294f6e4590e/olm.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1881);\n","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/* a very thin shim for loading olm.js: just sets the global OLM_OPTIONS and\n * requires the actual olm.js library.\n *\n * olm.js reads global.OLM_OPTIONS and defines global.Olm. The latter is fine for us,\n * but we need to prepare the former.\n *\n * We can't use webpack's definePlugin to do this, because we tell webpack not\n * to parse olm.js. We also can't put this code in index.js, because olm and\n * index.js are loaded in parallel, and we need to make sure OLM_OPTIONS is set\n * before olm.js is loaded.\n */\n\n/* total_memory must be a power of two, and at least twice the stack.\n *\n * We don't need a lot of stack, but we do need about 128K of heap to encrypt a\n * 64K event (enough to store the ciphertext and the plaintext, bearing in mind\n * that the plaintext can only be 48K because base64). We also have about 36K\n * of statics. So let's have 256K of memory.\n */\nglobal.OLM_OPTIONS = {\n TOTAL_STACK: 64*1024,\n TOTAL_MEMORY: 256*1024,\n};\n\nrequire('olm/olm.js');\n","var N={},ra,process;if(\"undefined\"!==typeof window)ra=function(P){window.crypto.getRandomValues(P)};else if(module.exports){var cb=require(\"crypto\");ra=function(P){var z=cb.randomBytes(P.length);P.set(z)};process=global.process}else throw Error(\"Cannot find global to attach library to\");\n(function(){function P(a){eval.call(null,a)}function z(a,b){a||Q(\"Assertion failed: \"+b)}function Ba(g){var b=a[\"_\"+g];if(!b)try{b=eval(\"_\"+g)}catch(c){}z(b,\"Cannot call unknown function \"+g+\" (perhaps LLVM optimizations or closure removed it?)\");return b}function Ca(a,b,c){c=c||\"i8\";\"*\"===c.charAt(c.length-1)&&(c=\"i32\");switch(c){case \"i1\":A[a>>0]=b;break;case \"i8\":A[a>>0]=b;break;case \"i16\":fa[a>>1]=b;break;case \"i32\":D[a>>2]=b;break;case \"i64\":tempI64=[b>>>0,(tempDouble=b,1<=+db(tempDouble)?0<\ntempDouble?(eb(+fb(tempDouble/4294967296),4294967295)|0)>>>0:~~+gb((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)];D[a>>2]=tempI64[0];D[a+4>>2]=tempI64[1];break;case \"float\":ga[a>>2]=b;break;case \"double\":ha[a>>3]=b;break;default:Q(\"invalid type for setValue: \"+c)}}function W(a,b){b=b||\"i8\";\"*\"===b.charAt(b.length-1)&&(b=\"i32\");switch(b){case \"i1\":return A[a>>0];case \"i8\":return A[a>>0];case \"i16\":return fa[a>>1];case \"i32\":return D[a>>2];case \"i64\":return D[a>>2];case \"float\":return ga[a>>2];\ncase \"double\":return ha[a>>3];default:Q(\"invalid type for setValue: \"+b)}return null}function K(a,b,c,f){var d,l;\"number\"===typeof a?(d=!0,l=a):(d=!1,l=a.length);var n=\"string\"===typeof b?b:null;c=4==c?f:[\"function\"===typeof X?X:e.p,e.j,e.p,e.e][void 0===c?2:c](Math.max(l,n?1:b.length));if(d){f=c;z(0==(c&3));for(a=c+(l&-4);f<a;f+=4)D[f>>2]=0;for(a=c+l;f<a;)A[f++>>0]=0;return c}if(\"i8\"===n)return a.subarray||a.slice?B.set(a,c):B.set(new Uint8Array(a),c),c;f=0;for(var Da,h;f<l;){var k=a[f];\"function\"===\ntypeof k&&(k=e.O(k));d=n||b[f];0===d?f++:(\"i64\"==d&&(d=\"i32\"),Ca(c+f,k,d),h!==d&&(Da=e.r(d),h=d),f+=Da)}return c}function r(g,b){if(0===b||!g)return\"\";for(var c=0,f,d=0;;){f=B[g+d>>0];c|=f;if(0==f&&!b)break;d++;if(b&&d==b)break}b||(b=d);f=\"\";if(128>c){for(;0<b;)c=String.fromCharCode.apply(String,B.subarray(g,g+Math.min(b,1024))),f=f?f+c:c,g+=1024,b-=1024;return f}return a.UTF8ToString(g)}function Ea(a,b){for(var c,f,d,l,n,e,h=\"\";;){c=a[b++];if(!c)return h;c&128?(f=a[b++]&63,192==(c&224)?h+=String.fromCharCode((c&\n31)<<6|f):(d=a[b++]&63,224==(c&240)?c=(c&15)<<12|f<<6|d:(l=a[b++]&63,240==(c&248)?c=(c&7)<<18|f<<12|d<<6|l:(n=a[b++]&63,248==(c&252)?c=(c&3)<<24|f<<18|d<<12|l<<6|n:(e=a[b++]&63,c=(c&1)<<30|f<<24|d<<18|l<<12|n<<6|e))),65536>c?h+=String.fromCharCode(c):(c-=65536,h+=String.fromCharCode(55296|c>>10,56320|c&1023)))):h+=String.fromCharCode(c)}}function sa(a){return Ea(B,a)}function ta(a,b,c,f){if(!(0<f))return 0;var d=c;f=c+f-1;for(var l=0;l<a.length;++l){var n=a.charCodeAt(l);55296<=n&&57343>=n&&(n=65536+\n((n&1023)<<10)|a.charCodeAt(++l)&1023);if(127>=n){if(c>=f)break;b[c++]=n}else{if(2047>=n){if(c+1>=f)break;b[c++]=192|n>>6}else{if(65535>=n){if(c+2>=f)break;b[c++]=224|n>>12}else{if(2097151>=n){if(c+3>=f)break;b[c++]=240|n>>18}else{if(67108863>=n){if(c+4>=f)break;b[c++]=248|n>>24}else{if(c+5>=f)break;b[c++]=252|n>>30;b[c++]=128|n>>24&63}b[c++]=128|n>>18&63}b[c++]=128|n>>12&63}b[c++]=128|n>>6&63}b[c++]=128|n&63}}b[c]=0;return c-d}function Fa(a){for(var b=0,c=0;c<a.length;++c){var f=a.charCodeAt(c);\n55296<=f&&57343>=f&&(f=65536+((f&1023)<<10)|a.charCodeAt(++c)&1023);127>=f?++b:b=2047>=f?b+2:65535>=f?b+3:2097151>=f?b+4:67108863>=f?b+5:b+6}return b}function hb(g){return g.replace(/__Z[\\w\\d_]+/g,function(b){var c;a:{if(a.___cxa_demangle)try{var g=X(b.length);ua(b.substr(1),g);var d=X(4),l=a.___cxa_demangle(g,0,0,d);if(0===W(d,\"i32\")&&l){c=r(l);break a}}catch(n){c=b;break a}finally{g&&va(g),d&&va(d),l&&va(l)}e.g(\"warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling\");c=b}return b===\nc?b:b+\" [\"+c+\"]\"})}function Ga(){var a=hb,b;a:{b=Error();if(!b.stack){try{throw Error(0);}catch(c){b=c}if(!b.stack){b=\"(no stack trace available)\";break a}}b=b.stack.toString()}return a(b)}function ib(a){0<a%4096&&(a+=4096-a%4096);return a}function S(a){for(;0<a.length;){var b=a.shift();if(\"function\"==typeof b)b();else{var c=b.K;\"number\"===typeof c?void 0===b.l?e.m(\"v\",c):e.m(\"vi\",c,[b.l]):c(void 0===b.l?null:b.l)}}}function Ha(a){Ia.unshift(a)}function Ja(a){Ka.unshift(a)}function ia(a,b,c){c=Array(0<\nc?c:Fa(a)+1);a=ta(a,c,0,c.length);b&&(c.length=a);return c}function ua(a,b,c){a=ia(a,c);for(c=0;c<a.length;)A[b+c>>0]=a[c],c+=1}function La(a,b){for(var c=0;c<a.length;c++)A[b++>>0]=a[c]}function Ma(a,b,c){for(var f=0;f<a.length;++f)A[b++>>0]=a.charCodeAt(f);c||(A[b>>0]=0)}function Na(g){a.___errno_location&&(D[a.___errno_location()>>2]=g);return g}function ja(a){var b=ja;b.b||(E=ib(E),b.b=!0,z(e.e),b.v=e.e,e.e=function(){Q(\"cannot dynamically allocate, sbrk now has control\")});var c=E;return 0==\na||b.v(a)?c:4294967295}function wa(){var a=wa;a.b||(a.b=[]);a.b.push(e.f());return a.b.length-1}function T(a){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+a+\")\";this.status=a}function xa(g){function b(){if(!a.calledRun&&(a.calledRun=!0,!ka)){Y||(Y=!0,S(la));S(Oa);if(a.onRuntimeInitialized)a.onRuntimeInitialized();a._main&&Pa&&a.callMain(g);if(a.postRun)for(\"function\"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;)Ja(a.postRun.shift());S(Ka)}}g=g||a.arguments;null===\nQa&&(Qa=Date.now());if(!(0<R)){if(a.preRun)for(\"function\"==typeof a.preRun&&(a.preRun=[a.preRun]);a.preRun.length;)Ha(a.preRun.shift());S(Ia);0<R||a.calledRun||(a.setStatus?(a.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){a.setStatus(\"\")},1);b()},1)):b())}}function Ra(g,b){if(!b||!a.noExitRuntime){if(!a.noExitRuntime&&(ka=!0,H=jb,S(Sa),a.onExit))a.onExit(g);Z?process.exit(g):ma&&\"function\"===typeof quit&&quit(g);throw new T(g);}}function Q(g){void 0!==g?(a.print(g),a.o(g),g=\nJSON.stringify(g)):g=\"\";ka=!0;var b=\"abort(\"+g+\") at \"+Ga()+\"\\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.\";Ta&&Ta.forEach(function(a){b=a(b,g)});throw b;}function L(){var g=a._olm_outbound_group_session_size();this.c=u(g);this.a=a._olm_outbound_group_session(this.c)}function v(g){return function(){var b=g.apply(this,arguments);if(b===aa)throw b=r(a._olm_outbound_group_session_last_error(arguments[0])),Error(\"OLM.\"+b);return b}}function I(){var g=a._olm_inbound_group_session_size();\nthis.c=u(g);this.a=a._olm_inbound_group_session(this.c)}function F(g){return function(){var b=g.apply(this,arguments);if(b===aa)throw b=r(a._olm_inbound_group_session_last_error(arguments[0])),Error(\"OLM.\"+b);return b}}function h(g){return a.allocate(g,\"i8\",a.ALLOC_STACK)}function m(g){return a.intArrayFromString(g,!0)}function ba(g){var b=h(g);g=new Uint8Array(a.HEAPU8.buffer,b,g);ra(g);return b}function k(a){return function(){var b=Ua.f();try{return a.apply(this,arguments)}finally{Ua.d(b)}}}function na(g,\nb){for(;0<b--;)a.HEAP8[g++]=0}function C(){var g=a._olm_account_size();this.c=u(g);this.a=a._olm_account(this.c)}function t(g){return function(){var b=g.apply(this,arguments);if(b===aa)throw b=r(a._olm_account_last_error(arguments[0])),Error(\"OLM.\"+b);return b}}function w(){var g=a._olm_session_size();this.c=u(g);this.a=a._olm_session(this.c)}function p(g){return function(){var b=g.apply(this,arguments);if(b===aa)throw b=r(a._olm_session_last_error(arguments[0])),Error(\"OLM.\"+b);return b}}function oa(){var g=\na._olm_utility_size();this.c=u(g);this.a=a._olm_utility(this.c)}function ya(g){return function(){var b=g.apply(this,arguments);if(b===aa)throw b=r(a._olm_utility_last_error(arguments[0])),Error(\"OLM.\"+b);return b}}var a={};if(\"undefined\"!==typeof OLM_OPTIONS)for(var G in OLM_OPTIONS)OLM_OPTIONS.hasOwnProperty(G)&&(a[G]=OLM_OPTIONS[G]);a||(a=eval(\"(function() { try { return Module || {} } catch(e) { return {} } })()\"));var ca={};for(G in a)a.hasOwnProperty(G)&&(ca[G]=a[G]);var da=!1,U=!1,Z=!1,ma=!1;\nif(a.ENVIRONMENT)if(\"WEB\"===a.ENVIRONMENT)da=!0;else if(\"WORKER\"===a.ENVIRONMENT)U=!0;else if(\"NODE\"===a.ENVIRONMENT)Z=!0;else if(\"SHELL\"===a.ENVIRONMENT)ma=!0;else throw Error(\"The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.\");else da=\"object\"===typeof window,U=\"function\"===typeof importScripts,Z=\"object\"===typeof process&&\"function\"===typeof require&&!da&&!U,ma=!da&&!Z&&!U;if(Z){a.print||(a.print=console.log);a.printErr||(a.printErr=console.warn);\nvar pa,qa;a.read=function(a,b){pa||(pa=require(\"fs\"));qa||(qa=require(\"path\"));a=qa.normalize(a);var c=pa.readFileSync(a);c||a==qa.resolve(a)||(a=path.join(__dirname,\"..\",\"src\",a),c=pa.readFileSync(a));c&&!b&&(c=c.toString());return c};a.readBinary=function(g){g=a.read(g,!0);g.buffer||(g=new Uint8Array(g));z(g.buffer);return g};a.load=function(a){P(read(a))};a.thisProgram||(a.thisProgram=1<process.argv.length?process.argv[1].replace(/\\\\/g,\"/\"):\"unknown-program\");a.arguments=process.argv.slice(2);\n\"undefined\"!==typeof module&&(module.exports=a);process.on(\"uncaughtException\",function(a){if(!(a instanceof T))throw a;});a.inspect=function(){return\"[Emscripten Module object]\"}}else if(ma)a.print||(a.print=print),\"undefined\"!=typeof printErr&&(a.printErr=printErr),a.read=\"undefined\"!=typeof read?read:function(){throw\"no read() available (jsc?)\";},a.readBinary=function(a){if(\"function\"===typeof readbuffer)return new Uint8Array(readbuffer(a));a=read(a,\"binary\");z(\"object\"===typeof a);return a},\"undefined\"!=\ntypeof scriptArgs?a.arguments=scriptArgs:\"undefined\"!=typeof arguments&&(a.arguments=arguments),eval(\"if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined\");else if(da||U)a.read=function(a){var b=new XMLHttpRequest;b.open(\"GET\",a,!1);b.send(null);return b.responseText},a.readAsync=function(a,b,c){var f=new XMLHttpRequest;f.open(\"GET\",a,!0);f.responseType=\"arraybuffer\";f.onload=function(){200==f.status||0==f.status&&f.response?b(f.response):c()};f.onerror=\nc;f.send(null)},\"undefined\"!=typeof arguments&&(a.arguments=arguments),\"undefined\"!==typeof console?(a.print||(a.print=function(a){console.log(a)}),a.printErr||(a.printErr=function(a){console.warn(a)})):a.print||(a.print=function(){}),U&&(a.load=importScripts),\"undefined\"===typeof a.setWindowTitle&&(a.setWindowTitle=function(a){document.title=a});else throw\"Unknown runtime environment. Where are we?\";!a.load&&a.read&&(a.load=function(g){P(a.read(g))});a.print||(a.print=function(){});a.printErr||(a.printErr=\na.print);a.arguments||(a.arguments=[]);a.thisProgram||(a.thisProgram=\"./this.program\");a.print=a.print;a.o=a.printErr;a.preRun=[];a.postRun=[];for(G in ca)ca.hasOwnProperty(G)&&(a[G]=ca[G]);var ca=void 0,e={C:function(a){tempRet0=a},A:function(){return tempRet0},f:function(){return H},d:function(a){H=a},r:function(a){switch(a){case \"i1\":case \"i8\":return 1;case \"i16\":return 2;case \"i32\":return 4;case \"i64\":return 8;case \"float\":return 4;case \"double\":return 8;default:return\"*\"===a[a.length-1]?e.k:\n\"i\"===a[0]?(a=parseInt(a.substr(1)),z(0===a%8),a/8):0}},w:function(a){return Math.max(e.r(a),e.k)},D:16,R:function(a,b){\"double\"===b||\"i64\"===b?a&7&&(z(4===(a&7)),a+=4):z(0===(a&3));return a},L:function(a,b,c){return c||\"i64\"!=a&&\"double\"!=a?a?Math.min(b||(a?e.w(a):0),e.k):Math.min(b,8):8},m:function(g,b,c){return c&&c.length?(c.splice||(c=Array.prototype.slice.call(c)),c.splice(0,0,b),a[\"dynCall_\"+g].apply(null,c)):a[\"dynCall_\"+g].call(null,b)},i:[],s:function(a){for(var b=0;b<e.i.length;b++)if(!e.i[b])return e.i[b]=\na,2*(1+b);throw\"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.\";},B:function(a){e.i[(a-2)/2]=null},g:function(g){e.g.b||(e.g.b={});e.g.b[g]||(e.g.b[g]=1,a.o(g))},n:{},N:function(a,b){z(b);e.n[b]||(e.n[b]={});var c=e.n[b];c[a]||(c[a]=function(){return e.m(b,a,arguments)});return c[a]},M:function(){throw\"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work\";},j:function(a){var b=H;\nH=H+a|0;H=H+15&-16;return b},p:function(a){var b=J;J=J+a|0;J=J+15&-16;return b},e:function(a){var b=E;E=E+a|0;E=E+15&-16;if(a=E>=V)Q(\"Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value \"+V+\", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 \"),\na=!0;return a?(E=b,0):b},q:function(a,b){return Math.ceil(a/(b?b:16))*(b?b:16)},Q:function(a,b,c){return c?+(a>>>0)+4294967296*+(b>>>0):+(a>>>0)+4294967296*+(b|0)},h:8,k:4,F:0};a.Runtime=e;e.addFunction=e.s;e.removeFunction=e.B;var ka=!1,Va,Wa;(function(){function a(b){b=b.toString().match(d).slice(1);return{arguments:b[0],body:b[1],returnValue:b[2]}}function b(){if(!l){l={};for(var b in c)c.hasOwnProperty(b)&&(l[b]=a(c[b]))}}var c={stackSave:function(){e.f()},stackRestore:function(){e.d()},arrayToC:function(a){var b=\ne.j(a.length);La(a,b);return b},stringToC:function(a){var b=0;null!==a&&void 0!==a&&0!==a&&(b=e.j((a.length<<2)+1),ua(a,b));return b}},f={string:c.stringToC,array:c.arrayToC};Wa=function(a,b,c,d,g){a=Ba(a);var O=[],l=0;if(d)for(var h=0;h<d.length;h++){var k=f[c[h]];k?(0===l&&(l=e.f()),O[h]=k(d[h])):O[h]=d[h]}c=a.apply(null,O);\"string\"===b&&(c=r(c));if(0!==l){if(g&&g.async){EmterpreterAsync.G.push(function(){e.d(l)});return}e.d(l)}return c};var d=/^function\\s*[a-zA-Z$_0-9]*\\s*\\(([^)]*)\\)\\s*{\\s*([^*]*?)[\\s;]*(?:return\\s*(.*?)[;\\s]*)?}$/,\nl=null;Va=function(c,f,d){d=d||[];var O=Ba(c);c=d.every(function(a){return\"number\"===a});var h=\"string\"!==f;if(h&&c)return O;var e=d.map(function(a,b){return\"$\"+b});f=\"(function(\"+e.join(\",\")+\") {\";var k=d.length;if(!c){b();f+=\"var stack = \"+l.stackSave.body+\";\";for(var m=0;m<k;m++){var q=e[m],p=d[m];\"number\"!==p&&(p=l[p+\"ToC\"],f+=\"var \"+p.arguments+\" = \"+q+\";\",f+=p.body+\";\",f+=q+\"=(\"+p.returnValue+\");\")}}d=a(function(){return O}).returnValue;f+=\"var ret = \"+d+\"(\"+e.join(\",\")+\");\";h||(d=a(function(){return r}).returnValue,\nf+=\"ret = \"+d+\"(ret);\");c||(b(),f+=l.stackRestore.body.replace(\"()\",\"(stack)\")+\";\");return eval(f+\"return ret})\")}})();a.ccall=Wa;a.cwrap=Va;a.setValue=Ca;a.getValue=W;a.ALLOC_NORMAL=0;a.ALLOC_STACK=1;a.ALLOC_STATIC=2;a.ALLOC_DYNAMIC=3;a.ALLOC_NONE=4;a.allocate=K;a.getMemory=function(a){return Xa?\"undefined\"!==typeof ja&&!ja.b||!Y?e.e(a):X(a):e.p(a)};a.Pointer_stringify=r;a.AsciiToString=function(a){for(var b=\"\";;){var c=A[a++>>0];if(!c)return b;b+=String.fromCharCode(c)}};a.stringToAscii=function(a,\nb){return Ma(a,b,!1)};a.UTF8ArrayToString=Ea;a.UTF8ToString=sa;a.stringToUTF8Array=ta;a.stringToUTF8=function(a,b,c){return ta(a,B,b,c)};a.lengthBytesUTF8=Fa;a.stackTrace=Ga;for(var x,A,B,fa,Ya,D,Za,ga,ha,$a=0,J=0,Xa=!1,ab=0,H=0,za=0,E=0,bb=a.TOTAL_STACK||5242880,V=a.TOTAL_MEMORY||16777216,M=65536;M<V||M<2*bb;)M=16777216>M?2*M:M+16777216;M!==V&&(V=M);a.buffer?x=a.buffer:x=new ArrayBuffer(V);a.HEAP8=A=new Int8Array(x);a.HEAP16=fa=new Int16Array(x);a.HEAP32=D=new Int32Array(x);a.HEAPU8=B=new Uint8Array(x);\na.HEAPU16=Ya=new Uint16Array(x);a.HEAPU32=Za=new Uint32Array(x);a.HEAPF32=ga=new Float32Array(x);a.HEAPF64=ha=new Float64Array(x);D[0]=255;if(255!==B[0]||0!==B[3])throw\"Typed arrays 2 must be run on a little-endian system\";a.HEAP=void 0;a.buffer=x;a.HEAP8=A;a.HEAP16=fa;a.HEAP32=D;a.HEAPU8=B;a.HEAPU16=Ya;a.HEAPU32=Za;a.HEAPF32=ga;a.HEAPF64=ha;var Ia=[],la=[],Oa=[],Sa=[],Ka=[],Y=!1;a.addOnPreRun=Ha;a.addOnInit=function(a){la.unshift(a)};a.addOnPreMain=function(a){Oa.unshift(a)};a.addOnExit=function(a){Sa.unshift(a)};\na.addOnPostRun=Ja;a.intArrayFromString=ia;a.intArrayToString=function(a){for(var b=[],c=0;c<a.length;c++){var f=a[c];255<f&&(f&=255);b.push(String.fromCharCode(f))}return b.join(\"\")};a.writeStringToMemory=ua;a.writeArrayToMemory=La;a.writeAsciiToMemory=Ma;Math.imul&&-5===Math.imul(4294967295,5)||(Math.imul=function(a,b){var c=a&65535,f=b&65535;return c*f+((a>>>16)*f+c*(b>>>16)<<16)|0});Math.P=Math.imul;Math.clz32||(Math.clz32=function(a){a=a>>>0;for(var b=0;32>b;b++)if(a&1<<31-b)return b;return 32});\nMath.I=Math.clz32;var db=Math.abs,gb=Math.ceil,fb=Math.floor,eb=Math.min,R=0,Aa=null,ea=null;a.addRunDependency=function(){R++;a.monitorRunDependencies&&a.monitorRunDependencies(R)};a.removeRunDependency=function(){R--;a.monitorRunDependencies&&a.monitorRunDependencies(R);if(0==R&&(null!==Aa&&(clearInterval(Aa),Aa=null),ea)){var d=ea;ea=null;d()}};a.preloadedImages={};a.preloadedAudios={};$a=8;J=$a+36128;la.push();K([34,174,40,215,152,47,138,66,205,101,239,35,145,68,55,113,47,59,77,236,207,251,192,\n181,188,219,137,129,165,219,181,233,56,181,72,243,91,194,86,57,25,208,5,182,241,17,241,89,155,79,25,175,164,130,63,146,24,129,109,218,213,94,28,171,66,2,3,163,152,170,7,216,190,111,112,69,1,91,131,18,140,178,228,78,190,133,49,36,226,180,255,213,195,125,12,85,111,137,123,242,116,93,190,114,177,150,22,59,254,177,222,128,53,18,199,37,167,6,220,155,148,38,105,207,116,241,155,193,210,74,241,158,193,105,155,228,227,37,79,56,134,71,190,239,181,213,140,139,198,157,193,15,101,156,172,119,204,161,12,36,117,\n2,43,89,111,44,233,45,131,228,166,110,170,132,116,74,212,251,65,189,220,169,176,92,181,83,17,131,218,136,249,118,171,223,102,238,82,81,62,152,16,50,180,45,109,198,49,168,63,33,251,152,200,39,3,176,228,14,239,190,199,127,89,191,194,143,168,61,243,11,224,198,37,167,10,147,71,145,167,213,111,130,3,224,81,99,202,6,112,110,14,10,103,41,41,20,252,47,210,70,133,10,183,39,38,201,38,92,56,33,27,46,237,42,196,90,252,109,44,77,223,179,149,157,19,13,56,83,222,99,175,139,84,115,10,101,168,178,119,60,187,10,106,\n118,230,174,237,71,46,201,194,129,59,53,130,20,133,44,114,146,100,3,241,76,161,232,191,162,1,48,66,188,75,102,26,168,145,151,248,208,112,139,75,194,48,190,84,6,163,81,108,199,24,82,239,214,25,232,146,209,16,169,101,85,36,6,153,214,42,32,113,87,133,53,14,244,184,209,187,50,112,160,106,16,200,208,210,184,22,193,164,25,83,171,65,81,8,108,55,30,153,235,142,223,76,119,72,39,168,72,155,225,181,188,176,52,99,90,201,197,179,12,28,57,203,138,65,227,74,170,216,78,115,227,99,119,79,202,156,91,163,184,178,214,\n243,111,46,104,252,178,239,93,238,130,143,116,96,47,23,67,111,99,165,120,114,171,240,161,20,120,200,132,236,57,100,26,8,2,199,140,40,30,99,35,250,255,190,144,233,189,130,222,235,108,80,164,21,121,198,178,247,163,249,190,43,83,114,227,242,120,113,198,156,97,38,234,206,62,39,202,7,194,192,33,199,184,134,209,30,235,224,205,214,125,218,234,120,209,110,238,127,79,125,245,186,111,23,114,170,103,240,6,166,152,200,162,197,125,99,10,174,13,249,190,4,152,63,17,27,71,28,19,53,11,113,27,132,125,4,35,245,119,\n219,40,147,36,199,64,123,171,202,50,188,190,201,21,10,190,158,60,76,13,16,156,196,103,29,67,182,66,62,203,190,212,197,76,42,126,101,252,156,41,127,89,236,250,214,58,171,111,203,95,23,88,71,74,140,25,68,108,68,129,0,0,8,0,0,0,77,129,0,0,11,0,0,0,164,2,0,0,89,129,0,0,8,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,89,241,178,254,10,229,166,255,123,221,42,254,30,20,212,0,82,128,3,0,48,209,243,0,119,121,64,255,50,227,156,255,0,110,197,1,103,27,144,0,133,59,140,1,189,241,36,255,248,37,195,1,96,220,55,\n0,183,76,62,255,195,66,61,0,50,76,164,1,225,164,76,255,76,61,163,255,117,62,31,0,81,145,64,255,118,65,14,0,162,115,214,255,6,138,46,0,124,230,244,255,10,138,143,0,52,26,194,0,184,244,76,0,129,143,41,1,190,244,19,255,123,170,122,255,98,129,68,0,121,213,147,0,86,101,30,255,161,103,155,0,140,89,67,255,239,229,190,1,67,11,181,0,198,240,137,254,238,69,188,255,67,151,238,0,19,42,108,255,229,85,113,1,50,68,135,255,17,106,9,0,50,103,1,255,80,1,168,1,35,152,30,255,16,168,185,1,56,89,232,255,101,210,252,0,\n41,250,71,0,204,170,79,255,14,46,239,255,80,77,239,0,189,214,75,255,17,141,249,0,38,80,76,255,190,85,117,0,86,228,170,0,156,216,208,1,195,207,164,255,150,66,76,255,175,225,16,255,141,80,98,1,76,219,242,0,198,162,114,0,46,218,152,0,155,43,241,254,155,160,104,255,51,187,165,0,2,17,175,0,66,84,160,1,247,58,30,0,35,65,53,254,69,236,191,0,45,134,245,1,163,123,221,0,32,110,20,255,52,23,165,0,186,214,71,0,233,176,96,0,242,239,54,1,57,89,138,0,83,0,84,255,136,160,100,0,92,142,120,254,104,124,190,0,181,177,\n62,255,250,41,85,0,152,130,42,1,96,252,246,0,151,151,63,254,239,133,62,0,32,56,156,0,45,167,189,255,142,133,179,1,131,86,211,0,187,179,150,254,250,170,14,255,210,163,78,0,37,52,151,0,99,77,26,0,238,156,213,255,213,192,209,1,73,46,84,0,20,65,41,1,54,206,79,0,201,131,146,254,170,111,24,255,177,33,50,254,171,38,203,255,78,247,116,0,209,221,153,0,133,128,178,1,58,44,25,0,201,39,59,1,189,19,252,0,49,229,210,1,117,187,117,0,181,179,184,1,0,114,219,0,48,94,147,0,245,41,56,0,125,13,204,254,244,173,119,0,\n44,221,32,254,84,234,20,0,249,160,198,1,236,126,234,255,47,99,168,254,170,226,153,255,102,179,216,0,226,141,122,255,122,66,153,254,182,245,134,0,227,228,25,1,214,57,235,255,216,173,56,255,181,231,210,0,119,128,157,255,129,95,136,255,110,126,51,0,2,169,183,255,7,130,98,254,69,176,94,255,116,4,227,1,217,242,145,255,202,173,31,1,105,1,39,255,46,175,69,0,228,47,58,255,215,224,69,254,207,56,69,255,16,254,139,255,23,207,212,255,202,20,126,255,95,213,96,255,9,176,33,0,200,5,207,255,241,42,128,254,35,33,\n192,255,248,229,196,1,129,17,120,0,251,103,151,255,7,52,112,255,140,56,66,255,40,226,245,255,217,70,37,254,172,214,9,255,72,67,134,1,146,192,214,255,44,38,112,0,68,184,75,255,206,90,251,0,149,235,141,0,181,170,58,0,116,244,239,0,92,157,2,0,102,173,98,0,233,137,96,1,127,49,203,0,5,155,148,0,23,148,9,255,211,122,12,0,34,134,26,255,219,204,136,0,134,8,41,255,224,83,43,254,85,25,247,0,109,127,0,254,169,136,48,0,238,119,219,255,231,173,213,0,206,18,254,254,8,186,7,255,126,9,7,1,111,42,72,0,111,52,236,\n254,96,63,141,0,147,191,127,254,205,78,192,255,14,106,237,1,187,219,76,0,175,243,187,254,105,89,173,0,85,25,89,1,162,243,148,0,2,118,209,254,33,158,9,0,139,163,46,255,93,70,40,0,108,42,142,254,111,252,142,255,155,223,144,0,51,229,167,255,73,252,155,255,94,116,12,255,152,160,218,255,156,238,37,255,179,234,207,255,197,0,179,255,154,164,141,0,225,196,104,0,10,35,25,254,209,212,242,255,97,253,222,254,184,101,229,0,222,18,127,1,164,136,135,255,30,207,140,254,146,97,243,0,129,192,26,254,201,84,33,255,111,\n10,78,255,147,81,178,255,4,4,24,0,161,238,215,255,6,141,33,0,53,215,14,255,41,181,208,255,231,139,157,0,179,203,221,255,255,185,113,0,189,226,172,255,113,66,214,255,202,62,45,255,102,64,8,255,78,174,16,254,133,117,68,255,182,120,89,255,133,114,211,0,189,110,21,255,15,10,106,0,41,192,1,0,152,232,121,255,188,60,160,255,153,113,206,255,0,183,226,254,180,13,72,255,176,160,14,254,211,201,134,255,158,24,143,0,127,105,53,0,96,12,189,0,167,215,251,255,159,76,128,254,106,101,225,255,30,252,4,0,146,12,174,\n0,133,59,140,1,189,241,36,255,248,37,195,1,96,220,55,0,183,76,62,255,195,66,61,0,50,76,164,1,225,164,76,255,76,61,163,255,117,62,31,0,81,145,64,255,118,65,14,0,162,115,214,255,6,138,46,0,124,230,244,255,10,138,143,0,52,26,194,0,184,244,76,0,129,143,41,1,190,244,19,255,123,170,122,255,98,129,68,0,121,213,147,0,86,101,30,255,161,103,155,0,140,89,67,255,239,229,190,1,67,11,181,0,198,240,137,254,238,69,188,255,234,113,60,255,37,255,57,255,69,178,182,254,128,208,179,0,118,26,125,254,3,7,214,255,241,50,\n77,255,85,203,197,255,211,135,250,255,25,48,100,255,187,213,180,254,17,88,105,0,83,209,158,1,5,115,98,0,4,174,60,254,171,55,110,255,217,181,17,255,20,188,170,0,146,156,102,254,87,214,174,255,114,122,155,1,233,44,170,0,127,8,239,1,214,236,234,0,175,5,219,0,49,106,61,255,6,66,208,255,2,106,110,255,81,234,19,255,215,107,192,255,67,151,238,0,19,42,108,255,229,85,113,1,50,68,135,255,17,106,9,0,50,103,1,255,80,1,168,1,35,152,30,255,16,168,185,1,56,89,232,255,101,210,252,0,41,250,71,0,204,170,79,255,14,\n46,239,255,80,77,239,0,189,214,75,255,17,141,249,0,38,80,76,255,190,85,117,0,86,228,170,0,156,216,208,1,195,207,164,255,150,66,76,255,175,225,16,255,141,80,98,1,76,219,242,0,198,162,114,0,46,218,152,0,155,43,241,254,155,160,104,255,178,9,252,254,100,110,212,0,14,5,167,0,233,239,163,255,28,151,157,1,101,146,10,255,254,158,70,254,71,249,228,0,88,30,50,0,68,58,160,255,191,24,104,1,129,66,129,255,192,50,85,255,8,179,138,255,38,250,201,0,115,80,160,0,131,230,113,0,125,88,147,0,90,68,199,0,253,76,158,0,\n28,255,118,0,113,250,254,0,66,75,46,0,230,218,43,0,229,120,186,1,148,68,43,0,136,124,238,1,187,107,197,255,84,53,246,255,51,116,254,255,51,187,165,0,2,17,175,0,66,84,160,1,247,58,30,0,35,65,53,254,69,236,191,0,45,134,245,1,163,123,221,0,32,110,20,255,52,23,165,0,186,214,71,0,233,176,96,0,242,239,54,1,57,89,138,0,83,0,84,255,136,160,100,0,92,142,120,254,104,124,190,0,181,177,62,255,250,41,85,0,152,130,42,1,96,252,246,0,151,151,63,254,239,133,62,0,32,56,156,0,45,167,189,255,142,133,179,1,131,86,211,\n0,187,179,150,254,250,170,14,255,68,113,21,255,222,186,59,255,66,7,241,1,69,6,72,0,86,156,108,254,55,167,89,0,109,52,219,254,13,176,23,255,196,44,106,255,239,149,71,255,164,140,125,255,159,173,1,0,51,41,231,0,145,62,33,0,138,111,93,1,185,83,69,0,144,115,46,0,97,151,16,255,24,228,26,0,49,217,226,0,113,75,234,254,193,153,12,255,182,48,96,255,14,13,26,0,128,195,249,254,69,193,59,0,132,37,81,254,125,106,60,0,214,240,169,1,164,227,66,0,210,163,78,0,37,52,151,0,99,77,26,0,238,156,213,255,213,192,209,1,\n73,46,84,0,20,65,41,1,54,206,79,0,201,131,146,254,170,111,24,255,177,33,50,254,171,38,203,255,78,247,116,0,209,221,153,0,133,128,178,1,58,44,25,0,201,39,59,1,189,19,252,0,49,229,210,1,117,187,117,0,181,179,184,1,0,114,219,0,48,94,147,0,245,41,56,0,125,13,204,254,244,173,119,0,44,221,32,254,84,234,20,0,249,160,198,1,236,126,234,255,143,62,221,0,129,89,214,255,55,139,5,254,68,20,191,255,14,204,178,1,35,195,217,0,47,51,206,1,38,246,165,0,206,27,6,254,158,87,36,0,217,52,146,255,125,123,215,255,85,60,\n31,255,171,13,7,0,218,245,88,254,252,35,60,0,55,214,160,255,133,101,56,0,224,32,19,254,147,64,234,0,26,145,162,1,114,118,125,0,248,252,250,0,101,94,196,255,198,141,226,254,51,42,182,0,135,12,9,254,109,172,210,255,197,236,194,1,241,65,154,0,48,156,47,255,153,67,55,255,218,165,34,254,74,180,179,0,218,66,71,1,88,122,99,0,212,181,219,255,92,42,231,255,239,0,154,0,245,77,183,255,94,81,170,1,18,213,216,0,171,93,71,0,52,94,248,0,18,151,161,254,197,209,66,255,174,244,15,254,162,48,183,0,49,61,240,254,182,\n93,195,0,199,228,6,1,200,5,17,255,137,45,237,255,108,148,4,0,90,79,237,255,39,63,77,255,53,82,207,1,142,22,118,255,101,232,18,1,92,26,67,0,5,200,88,255,33,168,138,255,149,225,72,0,2,209,27,255,44,245,168,1,220,237,17,255,30,211,105,254,141,238,221,0,128,80,245,254,111,254,14,0,222,95,190,1,223,9,241,0,146,76,212,255,108,205,104,255,63,117,153,0,144,69,48,0,35,228,111,0,192,33,193,255,112,214,190,254,115,152,151,0,23,102,88,0,51,74,248,0,226,199,143,254,204,162,101,255,208,97,189,1,245,104,18,0,230,\n246,30,255,23,148,69,0,110,88,52,254,226,181,89,255,208,47,90,254,114,161,80,255,33,116,248,0,179,152,87,255,69,144,177,1,88,238,26,255,58,32,113,1,1,77,69,0,59,121,52,255,152,238,83,0,52,8,193,0,231,39,233,255,199,34,138,0,222,68,173,0,91,57,242,254,220,210,127,255,192,7,246,254,151,35,187,0,195,236,165,0,111,93,206,0,212,247,133,1,154,133,209,255,155,231,10,0,64,78,38,0,122,249,100,1,30,19,97,255,62,91,249,1,248,133,77,0,197,63,168,254,116,10,82,0,184,236,113,254,212,203,194,255,61,100,252,254,\n36,5,202,255,119,91,153,255,129,79,29,0,103,103,171,254,237,215,111,255,216,53,69,0,239,240,23,0,194,149,221,255,38,225,222,0,232,255,180,254,118,82,133,255,57,209,177,1,139,232,133,0,158,176,46,254,194,115,46,0,88,247,229,1,28,103,191,0,221,222,175,254,149,235,44,0,151,228,25,254,218,105,103,0,142,85,210,0,149,129,190,255,213,65,94,254,117,134,224,255,82,198,117,0,157,221,220,0,163,101,36,0,197,114,37,0,104,172,166,254,11,182,0,0,81,72,188,255,97,188,16,255,69,6,10,0,199,147,145,255,8,9,115,1,65,\n214,175,255,217,173,209,0,80,127,166,0,247,229,4,254,167,183,124,255,90,28,204,254,175,59,240,255,11,41,248,1,108,40,51,255,144,177,195,254,150,250,126,0,138,91,65,1,120,60,222,255,245,193,239,0,29,214,189,255,128,2,25,0,80,154,162,0,77,220,107,1,234,205,74,255,54,166,103,255,116,72,9,0,228,94,47,255,30,200,25,255,35,214,89,255,61,176,140,255,83,226,163,255,75,130,172,0,128,38,17,0,95,137,152,255,215,124,159,1,79,93,0,0,148,82,157,254,195,130,251,255,40,202,76,255,251,126,224,0,157,99,62,254,207,\n7,225,255,96,68,195,0,140,186,157,255,131,19,231,255,42,128,254,0,52,219,61,254,102,203,72,0,141,7,11,255,186,164,213,0,31,122,119,0,133,242,145,0,208,252,232,255,91,213,182,255,143,4,250,254,249,215,74,0,165,30,111,1,171,9,223,0,229,123,34,1,92,130,26,255,77,155,45,1,195,139,28,255,59,224,78,0,136,17,247,0,108,121,32,0,79,250,189,255,96,227,252,254,38,241,62,0,62,174,125,255,155,111,93,255,10,230,206,1,97,197,40,255,0,49,57,254,65,250,13,0,18,251,150,255,220,109,210,255,5,174,166,254,44,129,189,\n0,235,35,147,255,37,247,141,255,72,141,4,255,103,107,255,0,247,90,4,0,53,44,42,0,2,30,240,0,4,59,63,0,88,78,36,0,113,167,180,0,190,71,193,255,199,158,164,255,58,8,172,0,77,33,12,0,65,63,3,0,153,77,33,255,172,254,102,1,228,221,4,255,87,30,254,1,146,41,86,255,138,204,239,254,108,141,17,255,187,242,135,0,210,208,127,0,68,45,14,254,73,96,62,0,81,60,24,255,170,6,36,255,3,249,26,0,35,213,109,0,22,129,54,255,21,35,225,255,234,61,56,255,58,217,6,0,143,124,88,0,236,126,66,0,209,38,183,255,34,238,6,255,174,\n145,102,0,95,22,211,0,196,15,153,254,46,84,232,255,117,34,146,1,231,250,74,255,27,134,100,1,92,187,195,255,170,198,112,0,120,28,42,0,209,70,67,0,29,81,31,0,29,168,100,1,169,173,160,0,107,35,117,0,62,96,59,255,81,12,69,1,135,239,190,255,220,252,18,0,163,220,58,255,137,137,188,255,83,102,109,0,96,6,76,0,234,222,210,255,185,174,205,1,60,158,213,255,13,241,214,0,172,129,140,0,93,104,242,0,192,156,251,0,43,117,30,0,225,81,158,0,127,232,218,0,226,28,203,0,233,27,151,255,117,43,5,255,242,14,47,255,33,20,\n6,0,137,251,44,254,27,31,245,255,183,214,125,254,40,121,149,0,186,158,213,255,89,8,227,0,69,88,0,254,203,135,225,0,201,174,203,0,147,71,184,0,18,121,41,254,94,5,78,0,224,214,240,254,36,5,180,0,251,135,231,1,163,138,212,0,210,249,116,254,88,129,187,0,19,8,49,254,62,14,144,255,159,76,211,0,214,51,82,0,109,117,228,254,103,223,203,255,75,252,15,1,154,71,220,255,23,13,91,1,141,168,96,255,181,182,133,0,250,51,55,0,234,234,212,254,175,63,158,0,39,240,52,1,158,189,36,255,213,40,85,1,32,180,247,255,19,102,\n26,1,84,24,97,255,69,21,222,0,148,139,122,255,220,213,235,1,232,203,255,0,121,57,147,0,227,7,154,0,53,22,147,1,72,1,225,0,82,134,48,254,83,60,157,255,145,72,169,0,34,103,239,0,198,233,47,0,116,19,4,255,184,106,9,255,183,129,83,0,36,176,230,1,34,103,72,0,219,162,134,0,245,42,158,0,32,149,96,254,165,44,144,0,202,239,72,254,215,150,5,0,42,66,36,1,132,215,175,0,86,174,86,255,26,197,156,255,49,232,135,254,103,182,82,0,253,128,176,1,153,178,122,0,245,250,10,0,236,24,178,0,137,106,132,0,40,29,41,0,50,30,\n152,255,124,105,38,0,230,191,75,0,143,43,170,0,44,131,20,255,44,13,23,255,237,255,155,1,159,109,100,255,112,181,24,255,104,220,108,0,55,211,131,0,99,12,213,255,152,151,145,255,238,5,159,0,97,155,8,0,33,108,81,0,1,3,103,0,62,109,34,255,250,155,180,0,32,71,195,255,38,70,145,1,159,95,245,0,69,229,101,1,136,28,240,0,79,224,25,0,78,110,121,255,248,168,124,0,187,128,247,0,2,147,235,254,79,11,132,0,70,58,12,1,181,8,163,255,79,137,133,255,37,170,11,255,141,243,85,255,176,231,215,255,204,150,164,255,239,215,\n39,255,46,87,156,254,8,163,88,255,172,34,232,0,66,44,102,255,27,54,41,254,236,99,87,255,41,123,169,1,52,114,43,0,117,134,40,0,155,134,26,0,231,207,91,254,35,132,38,255,19,102,125,254,36,227,133,255,118,3,113,255,29,13,124,0,152,96,74,1,88,146,206,255,167,191,220,254,162,18,88,255,182,100,23,0,31,117,52,0,81,46,106,1,12,2,7,0,69,80,201,1,209,246,172,0,12,48,141,1,224,211,88,0,116,226,159,0,122,98,130,0,65,236,234,1,225,226,9,255,207,226,123,1,89,214,59,0,112,135,88,1,90,244,203,255,49,11,38,1,129,\n108,186,0,89,112,15,1,101,46,204,255,127,204,45,254,79,255,221,255,51,73,18,255,127,42,101,255,241,21,202,0,160,227,7,0,105,50,236,0,79,52,197,255,104,202,208,1,180,15,16,0,101,197,78,255,98,77,203,0,41,185,241,1,35,193,124,0,35,155,23,255,207,53,192,0,11,125,163,1,249,158,185,255,4,131,48,0,21,93,111,255,61,121,231,1,69,200,36,255,185,48,185,255,111,238,21,255,39,50,25,255,99,215,163,255,87,212,30,255,164,147,5,255,128,6,35,1,108,223,110,255,194,76,178,0,74,101,180,0,243,47,48,0,174,25,43,255,82,\n173,253,1,54,114,192,255,40,55,91,0,215,108,176,255,11,56,7,0,224,233,76,0,209,98,202,254,242,25,125,0,44,193,93,254,203,8,177,0,135,176,19,0,112,71,213,255,206,59,176,1,4,67,26,0,14,143,213,254,42,55,208,255,60,67,120,0,193,21,163,0,99,164,115,0,10,20,118,0,156,212,222,254,160,7,217,255,114,245,76,1,117,59,123,0,176,194,86,254,213,15,176,0,78,206,207,254,213,129,59,0,233,251,22,1,96,55,152,255,236,255,15,255,197,89,84,255,93,149,133,0,174,160,113,0,234,99,169,255,152,116,88,0,144,164,83,255,95,29,\n198,255,34,47,15,255,99,120,134,255,5,236,193,0,249,247,126,255,147,187,30,0,50,230,117,255,108,217,219,255,163,81,166,255,72,25,169,254,155,121,79,255,28,155,89,254,7,126,17,0,147,65,33,1,47,234,253,0,26,51,18,0,105,83,199,255,163,196,230,0,113,248,164,0,226,254,218,0,189,209,203,255,164,247,222,254,255,35,165,0,4,188,243,1,127,179,71,0,37,237,254,255,100,186,240,0,5,57,71,254,103,72,73,255,244,18,81,254,229,210,132,255,238,6,180,255,11,229,174,255,227,221,192,1,17,49,28,0,163,215,196,254,9,118,\n4,255,51,240,71,0,113,129,109,255,76,240,231,0,188,177,127,0,125,71,44,1,26,175,243,0,94,169,25,254,27,230,29,0,15,139,119,1,168,170,186,255,172,197,76,255,252,75,188,0,137,124,196,0,72,22,96,255,45,151,249,1,220,145,100,0,64,192,159,255,120,239,226,0,129,178,146,0,0,192,125,0,235,138,234,0,183,157,146,0,83,199,192,255,184,172,72,255,73,225,128,0,77,6,250,255,186,65,67,0,104,246,207,0,188,32,138,255,218,24,242,0,67,138,81,254,237,129,121,255,20,207,150,1,41,199,16,255,6,20,128,0,159,118,5,0,181,16,\n143,255,220,38,15,0,23,64,147,254,73,26,13,0,87,228,57,1,204,124,128,0,43,24,223,0,219,99,199,0,22,75,20,255,19,27,126,0,157,62,215,0,110,29,230,0,179,167,255,1,54,252,190,0,221,204,182,254,179,158,65,255,81,157,3,0,194,218,159,0,170,223,0,0,224,11,32,255,38,197,98,0,168,164,37,0,23,88,7,1,164,186,110,0,96,36,134,0,234,242,229,0,250,121,19,0,242,254,112,255,3,47,94,1,9,239,6,255,81,134,153,254,214,253,168,255,67,124,224,0,245,95,74,0,28,30,44,254,1,109,220,255,178,89,89,0,252,36,76,0,24,198,46,255,\n76,77,111,0,134,234,136,255,39,94,29,0,185,72,234,255,70,68,135,255,231,102,7,254,77,231,140,0,167,47,58,1,148,97,118,255,16,27,225,1,166,206,143,255,110,178,214,255,180,131,162,0,143,141,225,1,13,218,78,255,114,153,33,1,98,104,204,0,175,114,117,1,167,206,75,0,202,196,83,1,58,64,67,0,138,47,111,1,196,247,128,255,137,224,224,254,158,112,207,0,154,100,255,1,134,37,107,0,198,128,79,255,127,209,155,255,163,254,185,254,60,14,243,0,31,219,112,254,29,217,65,0,200,13,116,254,123,60,196,255,224,59,184,254,\n242,89,196,0,123,16,75,254,149,16,206,0,69,254,48,1,231,116,223,255,209,160,65,1,200,80,98,0,37,194,184,254,148,63,34,0,139,240,65,255,217,144,132,255,56,38,45,254,199,120,210,0,108,177,166,255,160,222,4,0,220,126,119,254,165,107,160,255,82,220,248,1,241,175,136,0,144,141,23,255,169,138,84,0,160,137,78,255,226,118,80,255,52,27,132,255,63,96,139,255,152,250,39,0,188,155,15,0,232,51,150,254,40,15,232,255,240,229,9,255,137,175,27,255,75,73,97,1,218,212,11,0,135,5,162,1,107,185,213,0,2,249,107,255,40,\n242,70,0,219,200,25,0,25,157,13,0,67,82,80,255,196,249,23,255,145,20,149,0,50,72,146,0,94,76,148,1,24,251,65,0,31,192,23,0,184,212,201,255,123,233,162,1,247,173,72,0,162,87,219,254,126,134,89,0,159,11,12,254,166,105,29,0,73,27,228,1,113,120,183,255,66,163,109,1,212,143,11,255,159,231,168,1,255,128,90,0,57,14,58,254,89,52,10,255,253,8,163,1,0,145,210,255,10,129,85,1,46,181,27,0,103,136,160,254,126,188,209,255,34,35,111,0,215,219,24,255,212,11,214,254,101,5,118,0,232,197,133,255,223,167,109,255,237,\n80,86,255,70,139,94,0,158,193,191,1,155,15,51,255,15,190,115,0,78,135,207,255,249,10,27,1,181,125,233,0,95,172,13,254,170,213,161,255,39,236,138,255,95,93,87,255,190,128,95,0,125,15,206,0,166,150,159,0,227,15,158,255,206,158,120,255,42,141,128,0,101,178,120,1,156,109,131,0,218,14,44,254,247,168,206,255,212,112,28,0,112,17,228,255,90,16,37,1,197,222,108,0,254,207,83,255,9,90,243,255,243,244,172,0,26,88,115,255,205,116,122,0,191,230,193,0,180,100,11,1,217,37,96,255,154,78,156,0,235,234,31,255,206,178,\n178,255,149,192,251,0,182,250,135,0,246,22,105,0,124,193,109,255,2,210,149,255,169,17,170,0,0,96,110,255,117,9,8,1,50,123,40,255,193,189,99,0,34,227,160,0,48,80,70,254,211,51,236,0,45,122,245,254,44,174,8,0,173,37,233,255,158,65,171,0,122,69,215,255,90,80,2,255,131,106,96,254,227,114,135,0,205,49,119,254,176,62,64,255,82,51,17,255,241,20,243,255,130,13,8,254,128,217,243,255,162,27,1,254,90,118,241,0,246,198,246,255,55,16,118,255,200,159,157,0,163,17,1,0,140,107,121,0,85,161,118,255,38,0,149,0,156,\n47,238,0,9,166,166,1,75,98,181,255,50,74,25,0,66,15,47,0,139,225,159,0,76,3,142,255,14,238,184,0,11,207,53,255,183,192,186,1,171,32,174,255,191,76,221,1,247,170,219,0,25,172,50,254,217,9,233,0,203,126,68,255,183,92,48,0,127,167,183,1,65,49,254,0,16,63,127,1,254,21,170,255,59,224,127,254,22,48,63,255,27,78,130,254,40,195,29,0,250,132,112,254,35,203,144,0,104,169,168,0,207,253,30,255,104,40,38,254,94,228,88,0,206,16,128,255,212,55,122,255,223,22,234,0,223,197,127,0,253,181,181,1,145,102,118,0,236,153,\n36,255,212,217,72,255,20,38,24,254,138,62,62,0,152,140,4,0,230,220,99,255,1,21,212,255,148,201,231,0,244,123,9,254,0,171,210,0,51,58,37,255,1,255,14,255,244,183,145,254,0,242,166,0,22,74,132,0,121,216,41,0,95,195,114,254,133,24,151,255,156,226,231,255,247,5,77,255,246,148,115,254,225,92,81,255,222,80,246,254,170,123,89,255,74,199,141,0,29,20,8,255,138,136,70,255,93,75,92,0,221,147,49,254,52,126,226,0,229,124,23,0,46,9,181,0,205,64,52,1,131,254,28,0,151,158,212,0,131,64,78,0,206,25,171,0,0,230,139,\n0,191,253,110,254,103,247,167,0,64,40,40,1,42,165,241,255,59,75,228,254,124,243,189,255,196,92,178,255,130,140,86,255,141,89,56,1,147,198,5,255,203,248,158,254,144,162,141,0,11,172,226,0,130,42,21,255,1,167,143,255,144,36,36,255,48,88,164,254,168,170,220,0,98,71,214,0,91,208,79,0,159,76,201,1,166,42,214,255,69,255,0,255,6,128,125,255,190,1,140,0,146,83,218,255,215,238,72,1,122,127,53,0,189,116,165,255,84,8,66,255,214,3,208,255,213,110,133,0,195,168,44,1,158,231,69,0,162,64,200,254,91,58,104,0,182,\n58,187,254,249,228,136,0,203,134,76,254,99,221,233,0,75,254,214,254,80,69,154,0,64,152,248,254,236,136,202,255,157,105,153,254,149,175,20,0,22,35,19,255,124,121,233,0,186,250,198,254,132,229,139,0,137,80,174,255,165,125,68,0,144,202,148,254,235,239,248,0,135,184,118,0,101,94,17,255,122,72,70,254,69,130,146,0,127,222,248,1,69,127,118,255,30,82,215,254,188,74,19,255,229,167,194,254,117,25,66,255,65,234,56,254,213,22,156,0,151,59,93,254,45,28,27,255,186,126,164,255,32,6,239,0,127,114,99,1,219,52,2,255,\n99,96,166,254,62,190,126,255,108,222,168,1,75,226,174,0,230,226,199,0,60,117,218,255,252,248,20,1,214,188,204,0,31,194,134,254,123,69,192,255,169,173,36,254,55,98,91,0,223,42,102,254,137,1,102,0,157,90,25,0,239,122,64,255,252,6,233,0,7,54,20,255,82,116,174,0,135,37,54,255,15,186,125,0,227,112,175,255,100,180,225,255,42,237,244,255,244,173,226,254,248,18,33,0,171,99,150,255,74,235,50,255,117,82,32,254,106,168,237,0,207,109,208,1,228,9,186,0,135,60,169,254,179,92,143,0,244,170,104,255,235,45,124,255,\n70,99,186,0,117,137,183,0,224,31,215,0,40,9,100,0,26,16,95,1,68,217,87,0,8,151,20,255,26,100,58,255,176,165,203,1,52,118,70,0,7,32,254,254,244,254,245,255,167,144,194,255,125,113,23,255,176,121,181,0,136,84,209,0,138,6,30,255,89,48,28,0,33,155,14,255,25,240,154,0,141,205,109,1,70,115,62,255,20,40,107,254,138,154,199,255,94,223,226,255,157,171,38,0,163,177,25,254,45,118,3,255,14,222,23,1,209,190,81,255,118,123,232,1,13,213,101,255,123,55,123,254,27,246,165,0,50,99,76,255,140,214,32,255,97,65,67,255,\n24,12,28,0,174,86,78,1,64,247,96,0,160,135,67,0,66,55,243,255,147,204,96,255,26,6,33,255,98,51,83,1,153,213,208,255,2,184,54,255,25,218,11,0,49,67,246,254,18,149,72,255,13,25,72,0,42,79,214,0,42,4,38,1,27,139,144,255,149,187,23,0,18,164,132,0,245,84,184,254,120,198,104,255,126,218,96,0,56,117,234,255,13,29,214,254,68,47,10,255,167,154,132,254,152,38,198,0,66,178,89,255,200,46,171,255,13,99,83,255,210,187,253,255,170,45,42,1,138,209,124,0,214,162,141,0,12,230,156,0,102,36,112,254,3,147,67,0,52,215,\n123,255,233,171,54,255,98,137,62,0,247,218,39,255,231,218,236,0,247,191,127,0,195,146,84,0,165,176,92,255,19,212,94,255,17,74,227,0,88,40,153,1,198,147,1,255,206,67,245,254,240,3,218,255,61,141,213,255,97,183,106,0,195,232,235,254,95,86,154,0,209,48,205,254,118,209,241,255,240,120,223,1,213,29,159,0,163,127,147,255,13,218,93,0,85,24,68,254,70,20,80,255,189,5,140,1,82,97,254,255,99,99,191,255,132,84,133,255,107,218,116,255,112,122,46,0,105,17,32,0,194,160,63,255,68,222,39,1,216,253,92,0,177,105,205,\n255,149,201,195,0,42,225,11,255,40,162,115,0,9,7,81,0,165,218,219,0,180,22,0,254,29,146,252,255,146,207,225,1,180,135,96,0,31,163,112,0,177,11,219,255,133,12,193,254,43,78,50,0,65,113,121,1,59,217,6,255,110,94,24,1,112,172,111,0,7,15,96,0,36,85,123,0,71,150,21,255,208,73,188,0,192,11,167,1,213,245,34,0,9,230,92,0,162,142,39,255,215,90,27,0,98,97,89,0,94,79,211,0,90,157,240,0,95,220,126,1,102,176,226,0,36,30,224,254,35,31,127,0,231,232,115,1,85,83,130,0,210,73,245,255,47,143,114,255,68,65,197,0,59,\n72,62,255,183,133,173,254,93,121,118,255,59,177,81,255,234,69,173,255,205,128,177,0,220,244,51,0,26,244,209,1,73,222,77,255,163,8,96,254,150,149,211,0,158,254,203,1,54,127,139,0,161,224,59,0,4,109,22,255,222,42,45,255,208,146,102,255,236,142,187,0,50,205,245,255,10,74,89,254,48,79,142,0,222,76,130,255,30,166,63,0,236,12,13,255,49,184,244,0,187,113,102,0,218,101,253,0,153,57,182,254,32,150,42,0,25,198,146,1,237,241,56,0,140,68,5,0,91,164,172,255,78,145,186,254,67,52,205,0,219,207,129,1,109,115,17,\n0,54,143,58,1,21,248,120,255,179,255,30,0,193,236,66,255,1,255,7,255,253,192,48,255,19,69,217,1,3,214,0,255,64,101,146,1,223,125,35,255,235,73,179,255,249,167,226,0,225,175,10,1,97,162,58,0,106,112,171,1,84,172,5,255,133,140,178,255,134,245,142,0,97,90,125,255,186,203,185,255,223,77,23,255,192,92,106,0,15,198,115,255,217,152,248,0,171,178,120,255,228,134,53,0,176,54,193,1,250,251,53,0,213,10,100,1,34,199,106,0,151,31,244,254,172,224,87,255,14,237,23,255,253,85,26,255,127,39,116,255,172,104,100,0,\n251,14,70,255,212,208,138,255,253,211,250,0,176,49,165,0,15,76,123,255,37,218,160,255,92,135,16,1,10,126,114,255,70,5,224,255,247,249,141,0,68,20,60,1,241,210,189,255,195,217,187,1,151,3,113,0,151,92,174,0,231,62,178,255,219,183,225,0,23,23,33,255,205,181,80,0,57,184,248,255,67,180,1,255,90,123,93,255,39,0,162,255,96,248,52,255,84,66,140,0,34,127,228,255,194,138,7,1,166,110,188,0,21,17,155,1,154,190,198,255,214,80,59,255,18,7,143,0,72,29,226,1,199,217,249,0,232,161,71,1,149,190,201,0,217,175,95,254,\n113,147,67,255,138,143,199,255,127,204,1,0,29,182,83,1,206,230,155,255,186,204,60,0,10,125,85,255,232,96,25,255,255,89,247,255,213,254,175,1,232,193,81,0,28,43,156,254,12,69,8,0,147,24,248,0,18,198,49,0,134,60,35,0,118,246,18,255,49,88,254,254,228,21,186,255,182,65,112,1,219,22,1,255,22,126,52,255,189,53,49,255,112,25,143,0,38,127,55,255,226,101,163,254,208,133,61,255,137,69,174,1,190,118,145,255,60,98,219,255,217,13,245,255,250,136,10,0,84,254,226,0,201,31,125,1,240,51,251,255,31,131,130,255,2,138,\n50,255,215,215,177,1,223,12,238,255,252,149,56,255,124,91,68,255,72,126,170,254,119,255,100,0,130,135,232,255,14,79,178,0,250,131,197,0,138,198,208,0,121,216,139,254,119,18,36,255,29,193,122,0,16,42,45,255,213,240,235,1,230,190,169,255,198,35,228,254,110,173,72,0,214,221,241,255,56,148,135,0,192,117,78,254,141,93,207,255,143,65,149,0,21,18,98,255,95,44,244,1,106,191,77,0,254,85,8,254,214,110,176,255,73,173,19,254,160,196,199,255,237,90,144,0,193,172,113,255,200,155,136,254,228,90,221,0,137,49,74,\n1,164,221,215,255,209,189,5,255,105,236,55,255,42,31,129,1,193,255,236,0,46,217,60,0,138,88,187,255,226,82,236,255,81,69,151,255,142,190,16,1,13,134,8,0,127,122,48,255,81,64,156,0,171,243,139,0,237,35,246,0,122,143,193,254,212,122,146,0,95,41,255,1,87,132,77,0,4,212,31,0,17,31,78,0,39,45,173,254,24,142,217,255,95,9,6,255,227,83,6,0,98,59,130,254,62,30,33,0,8,115,211,1,162,97,128,255,7,184,23,254,116,28,168,255,248,138,151,255,98,244,240,0,186,118,130,0,114,248,235,255,105,173,200,1,160,124,71,255,\n94,36,164,1,175,65,146,255,238,241,170,254,202,198,197,0,228,71,138,254,45,246,109,255,194,52,158,0,133,187,176,0,83,252,154,254,89,189,221,255,170,73,252,0,148,58,125,0,36,68,51,254,42,69,177,255,168,76,86,255,38,100,204,255,38,53,35,0,175,19,97,0,225,238,253,255,81,81,135,0,210,27,255,254,235,73,107,0,8,207,115,0,82,127,136,0,84,99,21,254,207,19,136,0,100,164,101,0,80,208,77,255,132,207,237,255,15,3,15,255,33,166,110,0,156,95,85,255,37,185,111,1,150,106,35,255,166,151,76,0,114,87,135,255,159,194,\n64,0,12,122,31,255,232,7,101,254,173,119,98,0,154,71,220,254,191,57,53,255,168,232,160,255,224,32,99,255,218,156,165,0,151,153,163,0,217,13,148,1,197,113,89,0,149,28,161,254,207,23,30,0,105,132,227,255,54,230,94,255,133,173,204,255,92,183,157,255,88,144,252,254,102,33,90,0,159,97,3,0,181,218,155,255,240,114,119,0,106,214,53,255,165,190,115,1,152,91,225,255,88,106,44,255,208,61,113,0,151,52,124,0,191,27,156,255,110,54,236,1,14,30,166,255,39,127,207,1,229,199,28,0,188,228,188,254,100,157,235,0,246,\n218,183,1,107,22,193,255,206,160,95,0,76,239,147,0,207,161,117,0,51,166,2,255,52,117,10,254,73,56,227,255,152,193,225,0,132,94,136,255,101,191,209,0,32,107,229,255,198,43,180,1,100,210,118,0,114,67,153,255,23,88,26,255,89,154,92,1,220,120,140,255,144,114,207,255,252,115,250,255,34,206,72,0,138,133,127,255,8,178,124,1,87,75,97,0,15,229,92,254,240,67,131,255,118,123,227,254,146,120,104,255,145,213,255,1,129,187,70,255,219,119,54,0,1,19,173,0,45,150,148,1,248,83,72,0,203,233,169,1,142,107,56,0,247,249,\n38,1,45,242,80,255,30,233,103,0,96,82,70,0,23,201,111,0,81,39,30,255,161,183,78,255,194,234,33,255,68,227,140,254,216,206,116,0,70,27,235,255,104,144,79,0,164,230,93,254,214,135,156,0,154,187,242,254,188,20,131,255,36,109,174,0,159,112,241,0,5,110,149,1,36,165,218,0,166,29,19,1,178,46,73,0,93,43,32,254,248,189,237,0,102,155,141,0,201,93,195,255,241,139,253,255,15,111,98,255,108,65,163,254,155,79,190,255,73,174,193,254,246,40,48,255,107,88,11,254,202,97,85,255,253,204,18,255,113,242,66,0,110,160,194,\n254,208,18,186,0,81,21,60,0,188,104,167,255,124,166,97,254,210,133,142,0,56,242,137,254,41,111,130,0,111,151,58,1,111,213,141,255,183,172,241,255,38,6,196,255,185,7,123,255,46,11,246,0,245,105,119,1,15,2,161,255,8,206,45,255,18,202,74,255,83,124,115,1,212,141,157,0,83,8,209,254,139,15,232,255,172,54,173,254,50,247,132,0,214,189,213,0,144,184,105,0,223,254,248,0,255,147,240,255,23,188,72,0,7,51,54,0,188,25,180,254,220,180,0,255,83,160,20,0,163,189,243,255,58,209,194,255,87,73,60,0,106,24,49,0,245,\n249,220,0,22,173,167,0,118,11,195,255,19,126,237,0,110,159,37,255,59,82,47,0,180,187,86,0,188,148,208,1,100,37,133,255,7,112,193,0,129,188,156,255,84,106,129,255,133,225,202,0,14,236,111,255,40,20,101,0,172,172,49,254,51,54,74,255,251,185,184,255,93,155,224,255,180,249,224,1,230,178,146,0,72,57,54,254,178,62,184,0,119,205,72,0,185,239,253,255,61,15,218,0,196,67,56,255,234,32,171,1,46,219,228,0,208,108,234,255,20,63,232,255,165,53,199,1,133,228,5,255,52,205,107,0,74,238,140,255,150,156,219,254,239,\n172,178,255,251,189,223,254,32,142,211,255,218,15,138,1,241,196,80,0,28,36,98,254,22,234,199,0,61,237,220,255,246,57,37,0,142,17,142,255,157,62,26,0,43,238,95,254,3,217,6,255,213,25,240,1,39,220,174,255,154,205,48,254,19,13,192,255,244,34,54,254,140,16,155,0,240,181,5,254,155,193,60,0,166,128,4,255,36,145,56,255,150,240,219,0,120,51,145,0,82,153,42,1,140,236,146,0,107,92,248,1,189,10,3,0,63,136,242,0,211,39,24,0,19,202,161,1,173,27,186,255,210,204,239,254,41,209,162,255,182,254,159,255,172,116,52,\n0,195,103,222,254,205,69,59,0,53,22,41,1,218,48,194,0,80,210,242,0,210,188,207,0,187,161,161,254,216,17,1,0,136,225,113,0,250,184,63,0,223,30,98,254,77,168,162,0,59,53,175,0,19,201,10,255,139,224,194,0,147,193,154,255,212,189,12,254,1,200,174,255,50,133,113,1,94,179,90,0,173,182,135,0,94,177,113,0,43,89,215,255,136,252,106,255,123,134,83,254,5,245,66,255,82,49,39,1,220,2,224,0,97,129,177,0,77,59,89,0,61,29,155,1,203,171,220,255,92,78,139,0,145,33,181,255,169,24,141,1,55,150,179,0,139,60,80,255,218,\n39,97,0,2,147,107,255,60,248,72,0,173,230,47,1,6,83,182,255,16,105,162,254,137,212,81,255,180,184,134,1,39,222,164,255,221,105,251,1,239,112,125,0,63,7,97,0,63,104,227,255,148,58,12,0,90,60,224,255,84,212,252,0,79,215,168,0,248,221,199,1,115,121,1,0,36,172,120,0,32,162,187,255,57,107,49,255,147,42,21,0,106,198,43,1,57,74,87,0,126,203,81,255,129,135,195,0,140,31,177,0,221,139,194,0,3,222,215,0,131,68,231,0,177,86,178,254,124,151,180,0,184,124,38,1,70,163,17,0,249,251,181,1,42,55,227,0,226,161,44,0,\n23,236,110,0,51,149,142,1,93,5,236,0,218,183,106,254,67,24,77,0,40,245,209,255,222,121,153,0,165,57,30,0,83,125,60,0,70,38,82,1,229,6,188,0,109,222,157,255,55,118,63,255,205,151,186,0,227,33,149,255,254,176,246,1,227,177,227,0,34,106,163,254,176,43,79,0,106,95,78,1,185,241,122,255,185,14,61,0,36,1,202,0,13,178,162,255,247,11,132,0,161,230,92,1,65,1,185,255,212,50,165,1,141,146,64,255,158,242,218,0,21,164,125,0,213,139,122,1,67,71,87,0,203,158,178,1,151,92,43,0,152,111,5,255,39,3,239,255,217,255,250,\n255,176,63,71,255,74,245,77,1,250,174,18,255,34,49,227,255,246,46,251,255,154,35,48,1,125,157,61,255,106,36,78,255,97,236,153,0,136,187,120,255,113,134,171,255,19,213,217,254,216,94,209,255,252,5,61,0,94,3,202,0,3,26,183,255,64,191,43,255,30,23,21,0,129,141,77,255,102,120,7,1,194,76,140,0,188,175,52,255,17,81,148,0,232,86,55,1,225,48,172,0,134,42,42,255,238,50,47,0,169,18,254,0,20,147,87,255,14,195,239,255,69,247,23,0,238,229,128,255,177,49,112,0,168,98,251,255,121,71,248,0,243,8,145,254,246,227,\n153,255,219,169,177,254,251,139,165,255,12,163,185,255,164,40,171,255,153,159,27,254,243,109,91,255,222,24,112,1,18,214,231,0,107,157,181,254,195,147,0,255,194,99,104,255,89,140,190,255,177,66,126,254,106,185,66,0,49,218,31,0,252,174,158,0,188,79,230,1,238,41,224,0,212,234,8,1,136,11,181,0,166,117,83,255,68,195,94,0,46,132,201,0,240,152,88,0,164,57,69,254,160,224,42,255,59,215,67,255,119,195,141,255,36,180,121,254,207,47,8,255,174,210,223,0,101,197,68,255,255,82,141,1,250,137,233,0,97,86,133,1,16,\n80,69,0,132,131,159,0,116,93,100,0,45,141,139,0,152,172,157,255,90,43,91,0,71,153,46,0,39,16,112,255,217,136,97,255,220,198,25,254,177,53,49,0,222,88,134,255,128,15,60,0,207,192,169,255,192,116,209,255,106,78,211,1,200,213,183,255,7,12,122,254,222,203,60,255,33,110,199,254,251,106,117,0,228,225,4,1,120,58,7,255,221,193,84,254,112,133,27,0,189,200,201,255,139,135,150,0,234,55,176,255,61,50,65,0,152,108,169,255,220,85,1,255,112,135,227,0,162,26,186,0,207,96,185,254,244,136,107,0,93,153,50,1,198,97,\n151,0,110,11,86,255,143,117,174,255,115,212,200,0,5,202,183,0,237,164,10,254,185,239,62,0,236,120,18,254,98,123,99,255,168,201,194,254,46,234,214,0,191,133,49,255,99,169,119,0,190,187,35,1,115,21,45,255,249,131,72,0,112,6,123,255,214,49,181,254,166,233,34,0,92,197,102,254,253,228,205,255,3,59,201,1,42,98,46,0,219,37,35,255,169,195,38,0,94,124,193,1,156,43,223,0,95,72,133,254,120,206,191,0,122,197,239,255,177,187,79,255,254,46,2,1,250,167,190,0,84,129,19,0,203,113,166,255,249,31,189,254,72,157,202,\n255,208,71,73,255,207,24,72,0,10,16,18,1,210,81,76,255,88,208,192,255,126,243,107,255,238,141,120,255,199,121,234,255,137,12,59,255,36,220,123,255,148,179,60,254,240,12,29,0,66,0,97,1,36,30,38,255,115,1,93,255,96,103,231,255,197,158,59,1,192,164,240,0,202,202,57,255,24,174,48],\"i8\",4,e.h);K([89,77,155,1,42,76,215,0,244,151,233,0,23,48,81,0,239,127,52,254,227,130,37,255,248,116,93,1,124,132,118,0,173,254,192,1,6,235,83,255,110,175,231,1,251,28,182,0,129,249,93,254,84,184,128,0,76,181,62,0,175,128,\n186,0,100,53,136,254,109,29,226,0,221,233,58,1,20,99,74,0,0,22,160,0,134,13,21,0,9,52,55,255,17,89,140,0,175,34,59,0,84,165,119,255,224,226,234,255,7,72,166,255,123,115,255,1,18,214,246,0,250,7,71,1,217,220,185,0,212,35,76,255,38,125,175,0,189,97,210,0,114,238,44,255,41,188,169,254,45,186,154,0,81,92,22,0,132,160,193,0,121,208,98,255,13,81,44,255,203,156,82,0,71,58,21,255,208,114,191,254,50,38,147,0,154,216,195,0,101,25,18,0,60,250,215,255,233,132,235,255,103,175,142,1,16,14,92,0,141,31,110,254,238,\n241,45,255,153,217,239,1,97,168,47,255,249,85,16,1,28,175,62,255,57,254,54,0,222,231,126,0,166,45,117,254,18,189,96,255,228,76,50,0,200,244,94,0,198,152,120,1,68,34,69,255,12,65,160,254,101,19,90,0,167,197,120,255,68,54,185,255,41,218,188,0,113,168,48,0,88,105,189,1,26,82,32,255,185,93,164,1,228,240,237,255,66,182,53,0,171,197,92,255,107,9,233,1,199,120,144,255,78,49,10,255,109,170,105,255,90,4,31,255,28,244,113,255,74,58,11,0,62,220,246,255,121,154,200,254,144,210,178,255,126,57,129,1,43,250,14,\n255,101,111,28,1,47,86,241,255,61,70,150,255,53,73,5,255,30,26,158,0,209,26,86,0,138,237,74,0,164,95,188,0,142,60,29,254,162,116,248,255,187,175,160,0,151,18,16,0,209,111,65,254,203,134,39,255,88,108,49,255,131,26,71,255,221,27,215,254,104,105,93,255,31,236,31,254,135,0,211,255,143,127,110,1,212,73,229,0,233,67,167,254,195,1,208,255,132,17,221,255,51,217,90,0,67,235,50,255,223,210,143,0,179,53,130,1,233,106,198,0,217,173,220,255,112,229,24,255,175,154,93,254,71,203,246,255,48,66,133,255,3,136,230,\n255,23,221,113,254,235,111,213,0,170,120,95,254,251,221,2,0,45,130,158,254,105,94,217,255,242,52,180,254,213,68,45,255,104,38,28,0,244,158,76,0,161,200,96,255,207,53,13,255,187,67,148,0,170,54,248,0,119,162,178,255,83,20,11,0,42,42,192,1,146,159,163,255,183,232,111,0,77,229,21,255,71,53,143,0,27,76,34,0,246,136,47,255,219,39,182,255,92,224,201,1,19,142,14,255,69,182,241,255,163,118,245,0,9,109,106,1,170,181,247,255,78,47,238,255,84,210,176,255,213,107,139,0,39,38,11,0,72,21,150,0,72,130,69,0,205,\n77,155,254,142,133,21,0,71,111,172,254,226,42,59,255,179,0,215,1,33,128,241,0,234,252,13,1,184,79,8,0,110,30,73,255,246,141,189,0,170,207,218,1,74,154,69,255,138,246,49,255,155,32,100,0,125,74,105,255,90,85,61,255,35,229,177,255,62,125,193,255,153,86,188,1,73,120,212,0,209,123,246,254,135,209,38,255,151,58,44,1,92,69,214,255,14,12,88,255,252,153,166,255,253,207,112,255,60,78,83,255,227,124,110,0,180,96,252,255,53,117,33,254,164,220,82,255,41,1,27,255,38,164,166,255,164,99,169,254,61,144,70,255,192,\n166,18,0,107,250,66,0,197,65,50,0,1,179,18,255,255,104,1,255,43,153,35,255,80,111,168,0,110,175,168,0,41,105,45,255,219,14,205,255,164,233,140,254,43,1,118,0,233,67,195,0,178,82,159,255,138,87,122,255,212,238,90,255,144,35,124,254,25,140,164,0,251,215,44,254,133,70,107,255,101,227,80,254,92,169,55,0,215,42,49,0,114,180,85,255,33,232,27,1,172,213,25,0,62,176,123,254,32,133,24,255,225,191,62,0,93,70,153,0,181,42,104,1,22,191,224,255,200,200,140,255,249,234,37,0,149,57,141,0,195,56,208,255,254,130,70,\n255,32,173,240,255,29,220,199,0,110,100,115,255,132,229,249,0,228,233,223,255,37,216,209,254,178,177,209,255,183,45,165,254,224,97,114,0,137,97,168,255,225,222,172,0,165,13,49,1,210,235,204,255,252,4,28,254,70,160,151,0,232,190,52,254,83,248,93,255,62,215,77,1,175,175,179,255,160,50,66,0,121,48,208,0,63,169,209,255,0,210,200,0,224,187,44,1,73,162,82,0,9,176,143,255,19,76,193,255,29,59,167,1,24,43,154,0,28,190,190,0,141,188,129,0,232,235,203,255,234,0,109,255,54,65,159,0,60,88,232,255,121,253,150,\n254,252,233,131,255,198,110,41,1,83,77,71,255,200,22,59,254,106,253,242,255,21,12,207,255,237,66,189,0,90,198,202,1,225,172,127,0,53,22,202,0,56,230,132,0,1,86,183,0,109,190,42,0,243,68,174,1,109,228,154,0,200,177,122,1,35,160,183,255,177,48,85,255,90,218,169,255,248,152,78,0,202,254,110,0,6,52,43,0,142,98,65,255,63,145,22,0,70,106,93,0,232,138,107,1,110,179,61,255,211,129,218,1,242,209,92,0,35,90,217,1,182,143,106,255,116,101,217,255,114,250,221,255,173,204,6,0,60,150,163,0,73,172,44,255,239,110,\n80,255,237,76,153,254,161,140,249,0,149,232,229,0,133,31,40,255,174,164,119,0,113,51,214,0,129,228,2,254,64,34,243,0,107,227,244,255,174,106,200,255,84,153,70,1,50,35,16,0,250,74,216,254,236,189,66,255,153,249,13,0,230,178,4,255,221,41,238,0,118,227,121,255,94,87,140,254,254,119,92,0,73,239,246,254,117,87,128,0,19,211,145,255,177,46,252,0,229,91,246,1,69,128,247,255,202,77,54,1,8,11,9,255,153,96,166,0,217,214,173,255,134,192,2,1,0,207,0,0,189,174,107,1,140,134,100,0,158,193,243,1,182,102,171,0,235,\n154,51,0,142,5,123,255,60,168,89,1,217,14,92,255,19,214,5,1,211,167,254,0,44,6,202,254,120,18,236,255,15,113,184,255,184,223,139,0,40,177,119,254,182,123,90,255,176,165,176,0,247,77,194,0,27,234,120,0,231,0,214,255,59,39,30,0,125,99,145,255,150,68,68,1,141,222,248,0,153,123,210,255,110,127,152,255,229,33,214,1,135,221,197,0,137,97,2,0,12,143,204,255,81,41,188,0,115,79,130,255,94,3,132,0,152,175,187,255,124,141,10,255,126,192,179,255,11,103,198,0,149,6,45,0,219,85,187,1,230,18,178,255,72,182,152,0,\n3,198,184,255,128,112,224,1,97,161,230,0,254,99,38,255,58,159,197,0,151,66,219,0,59,69,143,255,185,112,249,0,119,136,47,255,123,130,132,0,168,71,95,255,113,176,40,1,232,185,173,0,207,93,117,1,68,157,108,255,102,5,147,254,49,97,33,0,89,65,111,254,247,30,163,255,124,217,221,1,102,250,216,0,198,174,75,254,57,55,18,0,227,5,236,1,229,213,173,0,201,109,218,1,49,233,239,0,30,55,158,1,25,178,106,0,155,111,188,1,94,126,140,0,215,31,238,1,77,240,16,0,213,242,25,1,38,71,168,0,205,186,93,254,49,211,140,255,219,\n0,180,255,134,118,165,0,160,147,134,255,110,186,35,255,198,243,42,0,243,146,119,0,134,235,163,1,4,241,135,255,193,46,193,254,103,180,79,255,225,4,184,254,242,118,130,0,146,135,176,1,234,111,30,0,69,66,213,254,41,96,123,0,121,94,42,255,178,191,195,255,46,130,42,0,117,84,8,255,233,49,214,254,238,122,109,0,6,71,89,1,236,211,123,0,244,13,48,254,119,148,14,0,114,28,86,255,75,237,25,255,145,229,16,254,129,100,53,255,134,150,120,254,168,157,50,0,23,72,104,255,224,49,14,0,255,123,22,255,151,185,151,255,170,\n80,184,1,134,182,20,0,41,100,101,1,153,33,16,0,76,154,111,1,86,206,234,255,192,160,164,254,165,123,93,255,1,216,164,254,67,17,175,255,169,11,59,255,158,41,61,255,73,188,14,255,195,6,137,255,22,147,29,255,20,103,3,255,246,130,227,255,122,40,128,0,226,47,24,254,35,36,32,0,152,186,183,255,69,202,20,0,195,133,195,0,222,51,247,0,169,171,94,1,183,0,160,255,64,205,18,1,156,83,15,255,197,58,249,254,251,89,110,255,50,10,88,254,51,43,216,0,98,242,198,1,245,151,113,0,171,236,194,1,197,31,199,255,229,81,38,1,\n41,59,20,0,253,104,230,0,152,93,14,255,246,242,146,254,214,169,240,255,240,102,108,254,160,167,236,0,154,218,188,0,150,233,202,255,27,19,250,1,2,71,133,255,175,12,63,1,145,183,198,0,104,120,115,255,130,251,247,0,17,212,167,255,62,123,132,255,247,100,189,0,155,223,152,0,143,197,33,0,155,59,44,255,150,93,240,1,127,3,87,255,95,71,207,1,167,85,1,255,188,152,116,255,10,23,23,0,137,195,93,1,54,98,97,0,240,0,168,255,148,188,127,0,134,107,151,0,76,253,171,0,90,132,192,0,146,22,54,0,224,66,54,254,230,186,\n229,255,39,182,196,0,148,251,130,255,65,131,108,254,128,1,160,0,169,49,167,254,199,254,148,255,251,6,131,0,187,254,129,255,85,82,62,0,178,23,58,255,254,132,5,0,164,213,39,0,134,252,146,254,37,53,81,255,155,134,82,0,205,167,238,255,94,45,180,255,132,40,161,0,254,111,112,1,54,75,217,0,179,230,221,1,235,94,191,255,23,243,48,1,202,145,203,255,39,118,42,255,117,141,253,0,254,0,222,0,43,251,50,0,54,169,234,1,80,68,208,0,148,203,243,254,145,7,135,0,6,254,0,0,252,185,127,0,98,8,129,255,38,35,72,255,211,36,\n220,1,40,26,89,0,168,64,197,254,3,222,239,255,2,83,215,254,180,159,105,0,58,115,194,0,186,116,106,255,229,247,219,255,129,118,193,0,202,174,183,1,166,161,72,0,201,107,147,254,237,136,74,0,233,230,106,1,105,111,168,0,64,224,30,1,1,229,3,0,102,151,175,255,194,238,228,255,254,250,212,0,187,237,121,0,67,251,96,1,197,30,11,0,183,95,204,0,205,89,138,0,64,221,37,1,255,223,30,255,178,48,211,255,241,200,90,255,167,209,96,255,57,130,221,0,46,114,200,255,61,184,66,0,55,182,24,254,110,182,33,0,171,190,232,255,\n114,94,31,0,18,221,8,0,47,231,254,0,255,112,83,0,118,15,215,255,173,25,40,254,192,193,31,255,238,21,146,255,171,193,118,255,101,234,53,254,131,212,112,0,89,192,107,1,8,208,27,0,181,217,15,255,231,149,232,0,140,236,126,0,144,9,199,255,12,79,181,254,147,182,202,255,19,109,182,255,49,212,225,0,74,163,203,0,175,233,148,0,26,112,51,0,193,193,9,255,15,135,249,0,150,227,130,0,204,0,219,1,24,242,205,0,238,208,117,255,22,244,112,0,26,229,34,0,37,80,188,255,38,45,206,254,240,90,225,255,29,3,47,255,42,224,76,\n0,186,243,167,0,32,132,15,255,5,51,125,0,139,135,24,0,6,241,219,0,172,229,133,255,246,214,50,0,231,11,207,255,191,126,83,1,180,163,170,255,245,56,24,1,178,164,211,255,3,16,202,1,98,57,118,255,141,131,89,254,33,51,24,0,243,149,91,255,253,52,14,0,35,169,67,254,49,30,88,255,179,27,36,255,165,140,183,0,58,189,151,0,88,31,0,0,75,169,66,0,66,101,199,255,24,216,199,1,121,196,26,255,14,79,203,254,240,226,81,255,94,28,10,255,83,193,240,255,204,193,131,255,94,15,86,0,218,40,157,0,51,193,209,0,0,242,177,0,102,\n185,247,0,158,109,116,0,38,135,91,0,223,175,149,0,220,66,1,255,86,60,232,0,25,96,37,255,225,122,162,1,215,187,168,255,158,157,46,0,56,171,162,0,232,240,101,1,122,22,9,0,51,9,21,255,53,25,238,255,217,30,232,254,125,169,148,0,13,232,102,0,148,9,37,0,165,97,141,1,228,131,41,0,222,15,243,255,254,18,17,0,6,60,237,1,106,3,113,0,59,132,189,0,92,112,30,0,105,208,213,0,48,84,179,255,187,121,231,254,27,216,109,255,162,221,107,254,73,239,195,255,250,31,57,255,149,135,89,255,185,23,115,1,3,163,157,255,18,112,\n250,0,25,57,187,255,161,96,164,0,47,16,243,0,12,141,251,254,67,234,184,255,41,18,161,0,175,6,96,255,160,172,52,254,24,176,183,255,198,193,85,1,124,121,137,255,151,50,114,255,220,203,60,255,207,239,5,1,0,38,107,255,55,238,94,254,70,152,94,0,213,220,77,1,120,17,69,255,85,164,190,255,203,234,81,0,38,49,37,254,61,144,124,0,137,78,49,254,168,247,48,0,95,164,252,0,105,169,135,0,253,228,134,0,64,166,75,0,81,73,20,255,207,210,10,0,234,106,150,255,94,34,90,255,254,159,57,254,220,133,99,0,139,147,180,254,24,\n23,185,0,41,57,30,255,189,97,76,0,65,187,223,255,224,172,37,255,34,62,95,1,231,144,240,0,77,106,126,254,64,152,91,0,29,98,155,0,226,251,53,255,234,211,5,255,144,203,222,255,164,176,221,254,5,231,24,0,179,122,205,0,36,1,134,255,125,70,151,254,97,228,252,0,172,129,23,254,48,90,209,255,150,224,82,1,84,134,30,0,241,196,46,0,103,113,234,255,46,101,121,254,40,124,250,255,135,45,242,254,9,249,168,255,140,108,131,255,143,163,171,0,50,173,199,255,88,222,142,255,200,95,158,0,142,192,163,255,7,117,135,0,111,\n124,22,0,236,12,65,254,68,38,65,255,227,174,254,0,244,245,38,0,240,50,208,255,161,63,250,0,60,209,239,0,122,35,19,0,14,33,230,254,2,159,113,0,106,20,127,255,228,205,96,0,137,210,174,254,180,212,144,255,89,98,154,1,34,88,139,0,167,162,112,1,65,110,197,0,241,37,169,0,66,56,131,255,10,201,83,254,133,253,187,255,177,112,45,254,196,251,0,0,196,250,151,255,238,232,214,255,150,209,205,0,28,240,118,0,71,76,83,1,236,99,91,0,42,250,131,1,96,18,64,255,118,222,35,0,113,214,203,255,122,119,184,255,66,19,36,0,\n204,64,249,0,146,89,139,0,134,62,135,1,104,233,101,0,188,84,26,0,49,249,129,0,208,214,75,255,207,130,77,255,115,175,235,0,171,2,137,255,175,145,186,1,55,245,135,255,154,86,181,1,100,58,246,255,109,199,60,255,82,204,134,255,215,49,230,1,140,229,192,255,222,193,251,255,81,136,15,255,179,149,162,255,23,39,29,255,7,95,75,254,191,81,222,0,241,81,90,255,107,49,201,255,244,211,157,0,222,140,149,255,65,219,56,254,189,246,90,255,178,59,157,1,48,219,52,0,98,34,215,0,28,17,187,255,175,169,24,0,92,79,161,255,\n236,200,194,1,147,143,234,0,229,225,7,1,197,168,14,0,235,51,53,1,253,120,174,0,197,6,168,255,202,117,171,0,163,21,206,0,114,85,90,255,15,41,10,255,194,19,99,0,65,55,216,254,162,146,116,0,50,206,212,255,64,146,29,255,158,158,131,1,100,165,130,255,172,23,129,255,125,53,9,255,15,193,18,1,26,49,11,255,181,174,201,1,135,201,14,255,100,19,149,0,219,98,79,0,42,99,143,254,96,0,48,255,197,249,83,254,104,149,79,255,235,110,136,254,82,128,44,255,65,41,36,254,88,211,10,0,187,121,187,0,98,134,199,0,171,188,179,\n254,210,11,238,255,66,123,130,254,52,234,61,0,48,113,23,254,6,86,120,255,119,178,245,0,87,129,201,0,242,141,209,0,202,114,85,0,148,22,161,0,103,195,48,0,25,49,171,255,138,67,130,0,182,73,122,254,148,24,130,0,211,229,154,0,32,155,158,0,84,105,61,0,177,194,9,255,166,89,86,1,54,83,187,0,249,40,117,255,109,3,215,255,53,146,44,1,63,47,179,0,194,216,3,254,14,84,136,0,136,177,13,255,72,243,186,255,117,17,125,255,211,58,211,255,93,79,223,0,90,88,245,255,139,209,111,255,70,222,47,0,10,246,79,255,198,217,178,\n0,227,225,11,1,78,126,179,255,62,43,126,0,103,148,35,0,129,8,165,254,245,240,148,0,61,51,142,0,81,208,134,0,15,137,115,255,211,119,236,255,159,245,248,255,2,134,136,255,230,139,58,1,160,164,254,0,114,85,141,255,49,166,182,255,144,70,84,1,85,182,7,0,46,53,93,0,9,166,161,255,55,162,178,255,45,184,188,0,146,28,44,254,169,90,49,0,120,178,241,1,14,123,127,255,7,241,199,1,189,66,50,255,198,143,101,254,189,243,135,255,141,24,24,254,75,97,87,0,118,251,154,1,237,54,156,0,171,146,207,255,131,196,246,255,136,\n64,113,1,151,232,57,0,240,218,115,0,49,61,27,255,64,129,73,1,252,169,27,255,40,132,10,1,90,201,193,255,252,121,240,1,186,206,41,0,43,198,97,0,145,100,183,0,204,216,80,254,172,150,65,0,249,229,196,254,104,123,73,255,77,104,96,254,130,180,8,0,104,123,57,0,220,202,229,255,102,249,211,0,86,14,232,255,182,78,209,0,239,225,164,0,106,13,32,255,120,73,17,255,134,67,233,0,83,254,181,0,183,236,112,1,48,64,131,255,241,216,243,255,65,193,226,0,206,241,100,254,100,134,166,255,237,202,197,0,55,13,81,0,32,124,102,\n255,40,228,177,0,118,181,31,1,231,160,134,255,119,187,202,0,0,142,60,255,128,38,189,255,166,201,150,0,207,120,26,1,54,184,172,0,12,242,204,254,133,66,230,0,34,38,31,1,184,112,80,0,32,51,165,254,191,243,55,0,58,73,146,254,155,167,205,255,100,104,152,255,197,254,207,255,173,19,247,0,238,10,202,0,239,151,242,0,94,59,39,255,240,29,102,255,10,92,154,255,229,84,219,255,161,129,80,0,208,90,204,1,240,219,174,255,158,102,145,1,53,178,76,255,52,108,168,1,83,222,107,0,211,36,109,0,118,58,56,0,8,29,22,0,237,\n160,199,0,170,209,157,0,137,71,47,0,143,86,32,0,198,242,2,0,212,48,136,1,92,172,186,0,230,151,105,1,96,191,229,0,138,80,191,254,240,216,130,255,98,43,6,254,168,196,49,0,253,18,91,1,144,73,121,0,61,146,39,1,63,104,24,255,184,165,112,254,126,235,98,0,80,213,98,255,123,60,87,255,82,140,245,1,223,120,173,255,15,198,134,1,206,60,239,0,231,234,92,255,33,238,19,255,165,113,142,1,176,119,38,0,160,43,166,254,239,91,105,0,107,61,194,1,25,4,68,0,15,139,51,0,164,132,106,255,34,116,46,254,168,95,197,0,137,212,\n23,0,72,156,58,0,137,112,69,254,150,105,154,255,236,201,157,0,23,212,154,255,136,82,227,254,226,59,221,255,95,149,192,0,81,118,52,255,33,43,215,1,14,147,75,255,89,156,121,254,14,18,79,0,147,208,139,1,151,218,62,255,156,88,8,1,210,184,98,255,20,175,123,255,102,83,229,0,220,65,116,1,150,250,4,255,92,142,220,255,34,247,66,255,204,225,179,254,151,81,151,0,71,40,236,255,138,63,62,0,6,79,240,255,183,185,181,0,118,50,27,0,63,227,192,0,123,99,58,1,50,224,155,255,17,225,223,254,220,224,77,255,14,44,123,1,\n141,128,175,0,248,212,200,0,150,59,183,255,147,97,29,0,150,204,181,0,253,37,71,0,145,85,119,0,154,200,186,0,2,128,249,255,83,24,124,0,14,87,143,0,168,51,245,1,124,151,231,255,208,240,197,1,124,190,185,0,48,58,246,0,20,233,232,0,125,18,98,255,13,254,31,255,245,177,130,255,108,142,35,0,171,125,242,254,140,12,34,255,165,161,162,0,206,205,101,0,247,25,34,1,100,145,57,0,39,70,57,0,118,204,203,255,242,0,162,0,165,244,30,0,198,116,226,0,128,111,153,255,140,54,182,1,60,122,15,255,155,58,57,1,54,50,198,0,\n171,211,29,255,107,138,167,255,173,107,199,255,109,161,193,0,89,72,242,255,206,115,89,255,250,254,142,254,177,202,94,255,81,89,50,0,7,105,66,255,25,254,255,254,203,64,23,255,79,222,108,255,39,249,75,0,241,124,50,0,239,152,133,0,221,241,105,0,147,151,98,0,213,161,121,254,242,49,137,0,233,37,249,254,42,183,27,0,184,119,230,255,217,32,163,255,208,251,228,1,137,62,131,255,79,64,9,254,94,48,113,0,17,138,50,254,193,255,22,0,247,18,197,1,67,55,104,0,16,205,95,255,48,37,66,0,55,156,63,1,64,82,74,255,200,\n53,71,254,239,67,125,0,26,224,222,0,223,137,93,255,30,224,202,255,9,220,132,0,198,38,235,1,102,141,86,0,60,43,81,1,136,28,26,0,233,36,8,254,207,242,148,0,164,162,63,0,51,46,224,255,114,48,79,255,9,175,226,0,222,3,193,255,47,160,232,255,255,93,105,254,14,42,230,0,26,138,82,1,208,43,244,0,27,39,38,255,98,208,127,255,64,149,182,255,5,250,209,0,187,60,28,254,49,25,218,255,169,116,205,255,119,18,120,0,156,116,147,255,132,53,109,255,13,10,202,0,110,83,167,0,157,219,137,255,6,3,130,255,50,167,30,255,60,\n159,47,255,129,128,157,254,94,3,189,0,3,166,68,0,83,223,215,0,150,90,194,1,15,168,65,0,227,83,51,255,205,171,66,255,54,187,60,1,152,102,45,255,119,154,225,0,240,247,136,0,100,197,178,255,139,71,223,255,204,82,16,1,41,206,42,255,156,192,221,255,216,123,244,255,218,218,185,255,187,186,239,255,252,172,160,255,195,52,22,0,144,174,181,254,187,100,115,255,211,78,176,255,27,7,193,0,147,213,104,255,90,201,10,255,80,123,66,1,22,33,186,0,1,7,99,254,30,206,10,0,229,234,5,0,53,30,210,0,138,8,220,254,71,55,167,\n0,72,225,86,1,118,190,188,0,254,193,101,1,171,249,172,255,94,158,183,254,93,2,108,255,176,93,76,255,73,99,79,255,74,64,129,254,246,46,65,0,99,241,127,254,246,151,102,255,44,53,208,254,59,102,234,0,154,175,164,255,88,242,32,0,111,38,1,0,255,182,190,255,115,176,15,254,169,60,129,0,122,237,241,0,90,76,63,0,62,74,120,255,122,195,110,0,119,4,178,0,222,242,210,0,130,33,46,254,156,40,41,0,167,146,112,1,49,163,111,255,121,176,235,0,76,207,14,255,3,25,198,1,41,235,213,0,85,36,214,1,49,92,109,255,200,24,30,\n254,168,236,195,0,145,39,124,1,236,195,149,0,90,36,184,255,67,85,170,255,38,35,26,254,131,124,68,255,239,155,35,255,54,201,164,0,196,22,117,255,49,15,205,0,24,224,29,1,126,113,144,0,117,21,182,0,203,159,141,0,223,135,77,0,176,230,176,255,190,229,215,255,99,37,181,255,51,21,138,255,25,189,89,255,49,48,165,254,152,45,247,0,170,108,222,0,80,202,5,0,27,69,103,254,204,22,129,255,180,252,62,254,210,1,91,255,146,110,254,255,219,162,28,0,223,252,213,1,59,8,33,0,206,16,244,0,129,211,48,0,107,160,208,0,112,\n59,209,0,109,77,216,254,34,21,185,255,246,99,56,255,179,139,19,255,185,29,50,255,84,89,19,0,74,250,98,255,225,42,200,255,192,217,205,255,210,16,167,0,99,132,95,1,43,230,57,0,254,11,203,255,99,188,63,255,119,193,251,254,80,105,54,0,232,181,189,1,183,69,112,255,208,171,165,255,47,109,180,255,123,83,165,0,146,162,52,255,154,11,4,255,151,227,90,255,146,137,97,254,61,233,41,255,94,42,55,255,108,164,236,0,152,68,254,0,10,140,131,255,10,106,79,254,243,158,137,0,67,178,66,254,177,123,198,255,15,62,34,0,197,\n88,42,255,149,95,177,255,152,0,198,255,149,254,113,255,225,90,163,255,125,217,247,0,18,17,224,0,128,66,120,254,192,25,9,255,50,221,205,0,49,212,70,0,233,255,164,0,2,209,9,0,221,52,219,254,172,224,244,255,94,56,206,1,242,179,2,255,31,91,164,1,230,46,138,255,189,230,220,0,57,47,61,255,111,11,157,0,177,91,152,0,28,230,98,0,97,87,126,0,198,89,145,255,167,79,107,0,249,77,160,1,29,233,230,255,150,21,86,254,60,11,193,0,151,37,36,254,185,150,243,255,228,212,83,1,172,151,180,0,201,169,155,0,244,60,234,0,142,\n235,4,1,67,218,60,0,192,113,75,1,116,243,207,255,65,172,155,0,81,30,156,255,80,72,33,254,18,231,109,255,142,107,21,254,125,26,132,255,176,16,59,255,150,201,58,0,206,169,201,0,208,121,226,0,40,172,14,255,150,61,94,255,56,57,156,255,141,60,145,255,45,108,149,255,238,145,155,255,209,85,31,254,192,12,210,0,99,98,93,254,152,16,151,0,225,185,220,0,141,235,44,255,160,172,21,254,71,26,31,255,13,64,93,254,28,56,198,0,177,62,248,1,182,8,241,0,166,101,148,255,78,81,133,255,129,222,215,1,188,169,129,255,232,\n7,97,0,49,112,60,255,217,229,251,0,119,108,138,0,39,19,123,254,131,49,235,0,132,84,145,0,130,230,148,255,25,74,187,0,5,245,54,255,185,219,241,1,18,194,228,255,241,202,102,0,105,113,202,0,155,235,79,0,21,9,178,255,156,1,239,0,200,148,61,0,115,247,210,255,49,221,135,0,58,189,8,1,35,46,9,0,81,65,5,255,52,158,185,255,125,116,46,255,74,140,13,255,210,92,172,254,147,23,71,0,217,224,253,254,115,108,180,255,145,58,48,254,219,177,24,255,156,255,60,1,154,147,242,0,253,134,87,0,53,75,229,0,48,195,222,255,31,\n175,50,255,156,210,120,255,208,35,222,255,18,248,179,1,2,10,101,255,157,194,248,255,158,204,101,255,104,254,197,255,79,62,4,0,178,172,101,1,96,146,251,255,65,10,156,0,2,137,165,255,116,4,231,0,242,215,1,0,19,35,29,255,43,161,79,0,59,149,246,1,251,66,176,0,200,33,3,255,80,110,142,255,195,161,17,1,228,56,66,255,123,47,145,254,132,4,164,0,67,174,172,0,25,253,114,0,87,97,87,1,250,220,84,0,96,91,200,255,37,125,59,0,19,65,118,0,161,52,241,255,237,172,6,255,176,191,255,255,1,65,130,254,223,190,230,0,101,\n253,231,255,146,35,109,0,250,29,77,1,49,0,19,0,123,90,155,1,22,86,32,255,218,213,65,0,111,93,127,0,60,93,169,255,8,127,182,0,17,186,14,254,253,137,246,255,213,25,48,254,76,238,0,255,248,92,70,255,99,224,139,0,184,9,255,1,7,164,208,0,205,131,198,1,87,214,199,0,130,214,95,0,221,149,222,0,23,38,171,254,197,110,213,0,43,115,140,254,215,177,118,0,96,52,66,1,117,158,237,0,14,64,182,255,46,63,174,255,158,95,190,255,225,205,177,255,43,5,142,255,172,99,212,255,244,187,147,0,29,51,153,255,228,116,24,254,30,\n101,207,0,19,246,150,255,134,231,5,0,125,134,226,1,77,65,98,0,236,130,33,255,5,110,62,0,69,108,127,255,7,113,22,0,145,20,83,254,194,161,231,255,131,181,60,0,217,209,177,255,229,148,212,254,3,131,184,0,117,177,187,1,28,14,31,255,176,102,80,0,50,84,151,255,125,31,54,255,21,157,133,255,19,179,139,1,224,232,26,0,34,117,170,255,167,252,171,255,73,141,206,254,129,250,35,0,72,79,236,1,220,229,20,255,41,202,173,255,99,76,238,255,198,22,224,255,108,198,195,255,36,141,96,1,236,158,59,255,106,100,87,0,110,226,\n2,0,227,234,222,0,154,93,119,255,74,112,164,255,67,91,2,255,21,145,33,255,102,214,137,255,175,230,103,254,163,246,166,0,93,247,116,254,167,224,28,255,220,2,57,1,171,206,84,0,123,228,17,255,27,120,119,0,119,11,147,1,180,47,225,255,104,200,185,254,165,2,114,0,77,78,212,0,45,154,177,255,24,196,121,254,82,157,182,0,90,16,190,1,12,147,197,0,95,239,152,255,11,235,71,0,86,146,119,255,172,134,214,0,60,131,196,0,161,225,129,0,31,130,120,254,95,200,51,0,105,231,210,255,58,9,148,255,43,168,221,255,124,237,142,\n0,198,211,50,254,46,245,103,0,164,248,84,0,152,70,208,255,180,117,177,0,70,79,185,0,243,74,32,0,149,156,207,0,197,196,161,1,245,53,239,0,15,93,246,254,139,240,49,255,196,88,36,255,162,38,123,0,128,200,157,1,174,76,103,255,173,169,34,254,216,1,171,255,114,51,17,0,136,228,194,0,110,150,56,254,106,246,159,0,19,184,79,255,150,77,240,255,155,80,162,0,0,53,169,255,29,151,86,0,68,94,16,0,92,7,110,254,98,117,149,255,249,77,230,255,253,10,140,0,214,124,92,254,35,118,235,0,89,48,57,1,22,53,166,0,184,144,61,\n255,179,255,194,0,214,248,61,254,59,110,246,0,121,21,81,254,166,3,228,0,106,64,26,255,69,232,134,255,242,220,53,254,46,220,85,0,113,149,247,255,97,179,103,255,190,127,11,0,135,209,182,0,95,52,129,1,170,144,206,255,122,200,204,255,168,100,146,0,60,144,149,254,70,60,40,0,122,52,177,255,246,211,101,255,174,237,8,0,7,51,120,0,19,31,173,0,126,239,156,255,143,189,203,0,196,128,88,255,233,133,226,255,30,125,173,255,201,108,50,0,123,100,59,255,254,163,3,1,221,148,181,255,214,136,57,254,222,180,137,255,207,\n88,54,255,28,33,251,255,67,214,52,1,210,208,100,0,81,170,94,0,145,40,53,0,224,111,231,254,35,28,244,255,226,199,195,254,238,17,230,0,217,217,164,254,169,157,221,0,218,46,162,1,199,207,163,255,108,115,162,1,14,96,187,255,118,60,76,0,184,159,152,0,209,231,71,254,42,164,186,255,186,153,51,254,221,171,182,255,162,142,173,0,235,47,193,0,7,139,16,1,95,164,64,255,16,221,166,0,219,197,16,0,132,29,44,255,100,69,117,255,60,235,88,254,40,81,173,0,71,190,61,255,187,88,157,0,231,11,23,0,237,117,164,0,225,168,\n223,255,154,114,116,255,163,152,242,1,24,32,170,0,125,98,113,254,168,19,76,0,17,157,220,254,155,52,5,0,19,111,161,255,71,90,252,255,173,110,240,0,10,198,121,255,253,255,240,255,66,123,210,0,221,194,215,254,121,163,17,255,225,7,99,0,190,49,182,0,115,9,133,1,232,26,138,255,213,68,132,0,44,119,122,255,179,98,51,0,149,90,106,0,71,50,230,255,10,153,118,255,177,70,25,0,165,87,205,0,55,138,234,0,238,30,97,0,113,155,207,0,98,153,127,0,34,107,219,254,117,114,172,255,76,180,255,254,242,57,179,255,221,34,172,\n254,56,162,49,255,83,3,255,255,113,221,189,255,188,25,228,254,16,88,89,255,71,28,198,254,22,17,149,255,243,121,254,255,107,202,99,255,9,206,14,1,220,47,153,0,107,137,39,1,97,49,194,255,149,51,197,254,186,58,11,255,107,43,232,1,200,6,14,255,181,133,65,254,221,228,171,255,123,62,231,1,227,234,179,255,34,189,212,254,244,187,249,0,190,13,80,1,130,89,1,0,223,133,173,0,9,222,198,255,66,127,74,0,167,216,93,255,155,168,198,1,66,145,0,0,68,102,46,1,172,90,154,0,216,128,75,255,160,40,51,0,158,17,27,1,124,240,\n49,0,236,202,176,255,151,124,192,255,38,193,190,0,95,182,61,0,163,147,124,255,255,165,51,255,28,40,17,254,215,96,78,0,86,145,218,254,31,36,202,255,86,9,5,0,111,41,200,255,237,108,97,0,57,62,44,0,117,184,15,1,45,241,116,0,152,1,220,255,157,165,188,0,250,15,131,1,60,44,125,255,65,220,251,255,75,50,184,0,53,90,128,255,231,80,194,255,136,129,127,1,21,18,187,255,45,58,161,255,71,147,34,0,174,249,11,254,35,141,29,0,239,68,177,255,115,110,58,0,238,190,177,1,87,245,166,255,190,49,247,255,146,83,184,255,173,\n14,39,255,146,215,104,0,142,223,120,0,149,200,155,255,212,207,145,1,16,181,217,0,173,32,87,255,255,35,181,0,119,223,161,1,200,223,94,255,70,6,186,255,192,67,85,255,50,169,152,0,144,26,123,255,56,243,179,254,20,68,136,0,39,140,188,254,253,208,5,255,200,115,135,1,43,172,229,255,156,104,187,0,151,251,167,0,52,135,23,0,151,153,72,0,147,197,107,254,148,158,5,255,238,143,206,0,126,153,137,255,88,152,197,254,7,68,167,0,252,159,165,255,239,78,54,255,24,63,55,255,38,222,94,0,237,183,12,255,206,204,210,0,19,\n39,246,254,30,74,231,0,135,108,29,1,179,115,0,0,117,118,116,1,132,6,252,255,145,129,161,1,105,67,141,0,82,37,226,255,238,226,228,255,204,214,129,254,162,123,100,255,185,121,234,0,45,108,231,0,66,8,56,255,132,136,128,0,172,224,66,254,175,157,188,0,230,223,226,254,242,219,69,0,184,14,119,1,82,162,56,0,114,123,20,0,162,103,85,255,49,239,99,254,156,135,215,0,111,255,167,254,39,196,214,0,144,38,79,1,249,168,125,0,155,97,156,255,23,52,219,255,150,22,144,0,44,149,165,255,40,127,183,0,196,77,233,255,118,\n129,210,255,170,135,230,255,214,119,198,0,233,240,35,0,253,52,7,255,117,102,48,255,21,204,154,255,179,136,177,255,23,2,3,1,149,130,89,255,252,17,159,1,70,60,26,0,144,107,17,0,180,190,60,255,56,182,59,255,110,71,54,255,198,18,129,255,149,224,87,255,223,21,152,255,138,22,182,255,250,156,205,0,236,45,208,255,79,148,242,1,101,70,209,0,103,78,174,0,101,144,172,255,152,136,237,1,191,194,136,0,113,80,125,1,152,4,141,0,155,150,53,255,196,116,245,0,239,114,73,254,19,82,17,255,124,125,234,255,40,52,191,0,42,\n210,158,255,155,132,165,0,178,5,42,1,64,92,40,255,36,85,77,255,178,228,118,0,137,66,96,254,115,226,66,0,110,240,69,254,151,111,80,0,167,174,236,255,227,108,107,255,188,242,65,255,183,81,255,0,57,206,181,255,47,34,181,255,213,240,158,1,71,75,95,0,156,40,24,255,102,210,81,0,171,199,228,255,154,34,41,0,227,175,75,0,21,239,195,0,138,229,95,1,76,192,49,0,117,123,87,1,227,225,130,0,125,62,63,255,2,198,171,0,254,36,13,254,145,186,206,0,148,255,244,255,35,0,166,0,30,150,219,1,92,228,212,0,92,198,60,254,62,\n133,200,255,201,41,59,0,125,238,109,255,180,163,238,1,140,122,82,0,9,22,88,255,197,157,47,255,153,94,57,0,88,30,182,0,84,161,85,0,178,146,124,0,166,166,7,255,21,208,223,0,156,182,242,0,155,121,185,0,83,156,174,254,154,16,118,255,186,83,232,1,223,58,121,255,29,23,88,0,35,125,127,255,170,5,149,254,164,12,130,255,155,196,29,0,161,96,136,0,7,35,29,1,162,37,251,0,3,46,242,255,0,217,188,0,57,174,226,1,206,233,2,0,57,187,136,254,123,189,9,255,201,117,127,255,186,36,204,0,231,25,216,0,80,78,105,0,19,134,\n129,255,148,203,68,0,141,81,125,254,248,165,200,255,214,144,135,0,151,55,166,255,38,235,91,0,21,46,154,0,223,254,150,255,35,153,180,255,125,176,29,1,43,98,30,255,216,122,230,255,233,160,12,0,57,185,12,254,240,113,7,255,5,9,16,254,26,91,108,0,109,198,203,0,8,147,40,0,129,134,228,255,124,186,40,255,114,98,132,254,166,132,23,0,99,69,44,0,9,242,238,255,184,53,59,0,132,129,102,255,52,32,243,254,147,223,200,255,123,83,179,254,135,144,201,255,141,37,56,1,151,60,227,255,90,73,156,1,203,172,187,0,80,151,47,\n255,94,137,231,255,36,191,59,255,225,209,181,255,74,215,213,254,6,118,179,255,153,54,193,1,50,0,231,0,104,157,72,1,140,227,154,255,182,226,16,254,96,225,92,255,115,20,170,254,6,250,78,0,248,75,173,255,53,89,6,255,0,180,118,0,72,173,1,0,64,8,206,1,174,133,223,0,185,62,133,255,214,11,98,0,197,31,208,0,171,167,244,255,22,231,181,1,150,218,185,0,247,169,97,1,165,139,247,255,47,120,149,1,103,248,51,0,60,69,28,254,25,179,196,0,124,7,218,254,58,107,81,0,184,233,156,255,252,74,36,0,118,188,67,0,141,95,53,\n255,222,94,165,254,46,61,53,0,206,59,115,255,47,236,250,255,74,5,32,1,129,154,238,255,106,32,226,0,121,187,61,255,3,166,241,254,67,170,172,255,29,216,178,255,23,201,252,0,253,110,243,0,200,125,57,0,109,192,96,255,52,115,238,0,38,121,243,255,201,56,33,0,194,118,130,0,75,96,25,255,170,30,230,254,39,63,253,0,36,45,250,255,251,1,239,0,160,212,92,1,45,209,237,0,243,33,87,254,237,84,201,255,212,18,157,254,212,99,127,255,217,98,16,254,139,172,239,0,168,201,130,255,143,193,169,255,238,151,193,1,215,104,41,\n0,239,61,165,254,2,3,242,0,22,203,177,254,177,204,22,0,149,129,213,254,31,11,41,255,0,159,121,254,160,25,114,255,162,80,200,0,157,151,11,0,154,134,78,1,216,54,252,0,48,103,133,0,105,220,197,0,253,168,77,254,53,179,23,0,24,121,240,1,255,46,96,255,107,60,135,254,98,205,249,255,63,249,119,255,120,59,211,255,114,180,55,254,91,85,237,0,149,212,77,1,56,73,49,0,86,198,150,0,93,209,160,0,69,205,182,255,244,90,43,0,20,36,176,0,122,116,221,0,51,167,39,1,231,1,63,255,13,197,134,0,3,209,34,255,135,59,202,0,167,\n100,78,0,47,223,76,0,185,60,62,0,178,166,123,1,132,12,161,255,61,174,43,0,195,69,144,0,127,47,191,1,34,44,78,0,57,234,52,1,255,22,40,255,246,94,146,0,83,228,128,0,60,78,224,255,0,96,210,255,153,175,236,0,159,21,73,0,180,115,196,254,131,225,106,0,255,167,134,0,159,8,112,255,120,68,194,255,176,196,198,255,118,48,168,255,93,169,1,0,112,200,102,1,74,24,254,0,19,141,4,254,142,62,63,0,131,179,187,255,77,156,155,255,119,86,164,0,170,208,146,255,208,133,154,255,148,155,58,255,162,120,232,254,252,213,155,\n0,241,13,42,0,94,50,131,0,179,170,112,0,140,83,151,255,55,119,84,1,140,35,239,255,153,45,67,1,236,175,39,0,54,151,103,255,158,42,65,255,196,239,135,254,86,53,203,0,149,97,47,254,216,35,17,255,70,3,70,1,103,36,90,255,40,26,173,0,184,48,13,0,163,219,217,255,81,6,1,255,221,170,108,254,233,208,93,0,100,201,249,254,86,36,35,255,209,154,30,1,227,201,251,255,2,189,167,254,100,57,3,0,13,128,41,0,197,100,75,0,150,204,235,255,145,174,59,0,120,248,149,255,85,55,225,0,114,210,53,254,199,204,119,0,14,247,74,1,\n63,251,129,0,67,104,151,1,135,130,80,0,79,89,55,255,117,230,157,255,25,96,143,0,213,145,5,0,69,241,120,1,149,243,95,255,114,42,20,0,131,72,2,0,154,53,20,255,73,62,109,0,196,102,152,0,41,12,204,255,122,38,11,1,250,10,145,0,207,125,148,0,246,244,222,255,41,32,85,1,112,213,126,0,162,249,86,1,71,198,127,255,81,9,21,1,98,39,4,255,204,71,45,1,75,111,137,0,234,59,231,0,32,48,95,255,204,31,114,1,29,196,181,255,51,241,167,254,93,109,142,0,104,144,45,0,235,12,181,255,52,112,164,0,76,254,202,255,174,14,162,\n0,61,235,147,255,43,64,185,254,233,125,217,0,243,88,167,254,74,49,8,0,156,204,66,0,124,214,123,0,38,221,118,1,146,112,236,0,114,98,177,0,151,89,199,0,87,197,112,0,185,149,161,0,44,96,165,0,248,179,20,255,188,219,216,254,40,62,13,0,243,142,141,0,229,227,206,255,172,202,35,255,117,176,225,255,82,110,38,1,42,245,14,255,20,83,97,0,49,171,10,0,242,119,120,0,25,232,61,0,212,240,147,255,4,115,56,255,145,17,239,254,202,17,251,255,249,18,245,255,99,117,239,0,184,4,179,255,246,237,51,255,37,239,137,255,166,\n112,166,255,81,188,33,255,185,250,142,255,54,187,173,0,208,112,201,0,246,43,228,1,104,184,88,255,212,52,196,255,51,117,108,255,254,117,155,0,46,91,15,255,87,14,144,255,87,227,204,0,83,26,83,1,159,76,227,0,159,27,213,1,24,151,108,0,117,144,179,254,137,209,82,0,38,159,10,0,115,133,201,0,223,182,156,1,110,196,93,255,57,60,233,0,5,167,105,255,154,197,164,0,96,34,186,255,147,133,37,1,220,99,190,0,1,167,84,255,20,145,171,0,194,197,251,254,95,78,133,255,252,248,243,255,225,93,131,255,187,134,196,255,216,\n153,170,0,20,118,158,254,140,1,118,0,86,158,15,1,45,211,41,255,147,1,100,254,113,116,76,255,211,127,108,1,103,15,48,0,193,16,102,1,69,51,95,255,107,128,157,0,137,171,233,0,90,124,144,1,106,161,182,0,175,76,236,1,200,141,172,255,163,58,104,0,233,180,52,255,240,253,14,255,162,113,254,255,38,239,138,254,52,46,166,0,241,101,33,254,131,186,156,0,111,208,62,255,124,94,160,255,31,172,254,0,112,174,56,255,188,99,27,255,67,138,251,0,125,58,128,1,156,152,174,255,178,12,247,255,252,84,158,0,82,197,14,254,172,\n200,83,255,37,39,46,1,106,207,167,0,24,189,34,0,131,178,144,0,206,213,4,0,161,226,210,0,72,51,105,255,97,45,187,255,78,184,223,255,176,29,251,0,79,160,86,255,116,37,178,0,82,77,213,1,82,84,141,255,226,101,212,1,175,88,199,255,245,94,247,1,172,118,109,255,166,185,190,0,131,181,120,0,87,254,93,255,134,240,73,255,32,245,143,255,139,162,103,255,179,98,18,254,217,204,112,0,147,223,120,255,53,10,243,0,166,140,150,0,125,80,200,255,14,109,219,255,91,218,1,255,252,252,47,254,109,156,116,255,115,49,127,1,204,\n87,211,255,148,202,217,255,26,85,249,255,14,245,134,1,76,89,169,255,242,45,230,0,59,98,172,255,114,73,132,254,78,155,49,255,158,126,84,0,49,175,43,255,16,182,84,255,157,103,35,0,104,193,109,255,67,221,154,0,201,172,1,254,8,162,88,0,165,1,29,255,125,155,229,255,30,154,220,1,103,239,92,0,220,1,109,255,202,198,1,0,94,2,142,1,36,54,44,0,235,226,158,255,170,251,214,255,185,77,9,0,97,74,242,0,219,163,149,255,240,35,118,255,223,114,88,254,192,199,3,0,106,37,24,255,201,161,118,255,97,89,99,1,224,58,103,255,\n101,199,147,254,222,60,99,0,234,25,59,1,52,135,27,0,102,3,91,254,168,216,235,0,229,232,136,0,104,60,129,0,46,168,238,0,39,191,67,0,75,163,47,0,143,97,98,255,56,216,168,1,168,233,252,255,35,111,22,255,92,84,43,0,26,200,87,1,91,253,152,0,202,56,70,0,142,8,77,0,80,10,175,1,252,199,76,0,22,110,82,255,129,1,194,0,11,128,61,1,87,14,145,255,253,222,190,1,15,72,174,0,85,163,86,254,58,99,44,255,45,24,188,254,26,205,15,0,19,229,210,254,248,67,195,0,99,71,184,0,154,199,37,255,151,243,121,255,38,51,75,255,201,\n85,130,254,44,65,250,0,57,147,243,254,146,43,59,255,89,28,53,0,33,84,24,255,179,51,18,254,189,70,83,0,11,156,179,1,98,134,119,0,158,111,111,0,119,154,73,255,200,63,140,254,45,13,13,255,154,192,2,254,81,72,42,0,46,160,185,254,44,112,6,0,146,215,149,1,26,176,104,0,68,28,87,1,236,50,153,255,179,128,250,254,206,193,191,255,166,92,137,254,53,40,239,0,210,1,204,254,168,173,35,0,141,243,45,1,36,50,109,255,15,242,194,255,227,159,122,255,176,175,202,254,70,57,72,0,40,223,56,0,208,162,58,255,183,98,93,0,15,\n111,12,0,30,8,76,255,132,127,246,255,45,242,103,0,69,181,15,255,10,209,30,0,3,179,121,0,241,232,218,1,123,199,88,255,2,210,202,1,188,130,81,255,94,101,208,1,103,36,45,0,76,193,24,1,95,26,241,255,165,162,187,0,36,114,140],\"i8\",4,e.h+10240);K([202,66,5,255,37,56,147,0,152,11,243,1,127,85,232,255,250,135,212,1,185,177,113,0,90,220,75,255,69,248,146,0,50,111,50,0,92,22,80,0,244,36,115,254,163,100,82,255,25,193,6,1,127,61,36,0,253,67,30,254,65,236,170,255,161,17,215,254,63,175,140,0,55,127,4,0,79,112,\n233,0,109,160,40,0,143,83,7,255,65,26,238,255,217,169,140,255,78,94,189,255,0,147,190,255,147,71,186,254,106,77,127,255,233,157,233,1,135,87,237,255,208,13,236,1,155,109,36,255,180,100,218,0,180,163,18,0,190,110,9,1,17,63,123,255,179,136,180,255,165,123,123,255,144,188,81,254,71,240,108,255,25,112,11,255,227,218,51,255,167,50,234,255,114,79,108,255,31,19,115,255,183,240,99,0,227,87,143,255,72,217,248,255,102,169,95,1,129,149,149,0,238,133,12,1,227,204,35,0,208,115,26,1,102,8,234,0,112,88,143,1,144,\n249,14,0,240,158,172,254,100,112,119,0,194,141,153,254,40,56,83,255,121,176,46,0,42,53,76,255,158,191,154,0,91,209,92,0,173,13,16,1,5,72,226,255,204,254,149,0,80,184,207,0,100,9,122,254,118,101,171,255,252,203,0,254,160,207,54,0,56,72,249,1,56,140,13,255,10,64,107,254,91,101,52,255,225,181,248,1,139,255,132,0,230,145,17,0,233,56,23,0,119,1,241,255,213,169,151,255,99,99,9,254,185,15,191,255,173,103,109,1,174,13,251,255,178,88,7,254,27,59,68,255,10,33,2,255,248,97,59,0,26,30,146,1,176,147,10,0,95,121,\n207,1,188,88,24,0,185,94,254,254,115,55,201,0,24,50,70,0,120,53,6,0,142,66,146,0,228,226,249,255,104,192,222,1,173,68,219,0,162,184,36,255,143,102,137,255,157,11,23,0,125,45,98,0,235,93,225,254,56,112,160,255,70,116,243,1,153,249,55,255,129,39,17,1,241,80,244,0,87,69,21,1,94,228,73,255,78,66,65,255,194,227,231,0,61,146,87,255,173,155,23,255,112,116,219,254,216,38,11,255,131,186,133,0,94,212,187,0,100,47,91,0,204,254,175,255,222,18,215,254,173,68,108,255,227,228,79,255,38,221,213,0,163,227,150,254,\n31,190,18,0,160,179,11,1,10,90,94,255,220,174,88,0,163,211,229,255,199,136,52,0,130,95,221,255,140,188,231,254,139,113,128,255,117,171,236,254,49,220,20,255,59,20,171,255,228,109,188,0,20,225,32,254,195,16,174,0,227,254,136,1,135,39,105,0,150,77,206,255,210,238,226,0,55,212,132,254,239,57,124,0,170,194,93,255,249,16,247,255,24,151,62,255,10,151,10,0,79,139,178,255,120,242,202,0,26,219,213,0,62,125,35,255,144,2,108,255,230,33,83,255,81,45,216,1,224,62,17,0,214,217,125,0,98,153,153,255,179,176,106,\n254,131,93,138,255,109,62,36,255,178,121,32,255,120,252,70,0,220,248,37,0,204,88,103,1,128,220,251,255,236,227,7,1,106,49,198,255,60,56,107,0,99,114,238,0,220,204,94,1,73,187,1,0,89,154,34,0,78,217,165,255,14,195,249,255,9,230,253,255,205,135,245,0,26,252,7,255,84,205,27,1,134,2,112,0,37,158,32,0,231,91,237,255,191,170,204,255,152,7,222,0,109,192,49,0,193,166,146,255,232,19,181,255,105,142,52,255,103,16,27,1,253,200,165,0,195,217,4,255,52,189,144,255,123,155,160,254,87,130,54,255,78,120,61,255,14,\n56,41,0,25,41,125,255,87,168,245,0,214,165,70,0,212,169,6,255,219,211,194,254,72,93,164,255,197,33,103,255,43,142,141,0,131,225,172,0,244,105,28,0,68,68,225,0,136,84,13,255,130,57,40,254,139,77,56,0,84,150,53,0,54,95,157,0,144,13,177,254,95,115,186,0,117,23,118,255,244,166,241,255,11,186,135,0,178,106,203,255,97,218,93,0,43,253,45,0,164,152,4,0,139,118,239,0,96,1,24,254,235,153,211,255,168,110,20,255,50,239,176,0,114,41,232,0,193,250,53,0,254,160,111,254,136,122,41,255,97,108,67,0,215,152,23,255,\n140,209,212,0,42,189,163,0,202,42,50,255,106,106,189,255,190,68,217,255,233,58,117,0,229,220,243,1,197,3,4,0,37,120,54,254,4,156,134,255,36,61,171,254,165,136,100,255,212,232,14,0,90,174,10,0,216,198,65,255,12,3,64,0,116,113,115,255,248,103,8,0,231,125,18,255,160,28,197,0,30,184,35,1,223,73,249,255,123,20,46,254,135,56,37,255,173,13,229,1,119,161,34,255,245,61,73,0,205,125,112,0,137,104,134,0,217,246,30,255,237,142,143,0,65,159,102,255,108,164,190,0,219,117,173,255,34,37,120,254,200,69,80,0,31,124,\n218,254,74,27,160,255,186,154,199,255,71,199,252,0,104,81,159,1,17,200,39,0,211,61,192,1,26,238,91,0,148,217,12,0,59,91,213,255,11,81,183,255,129,230,122,255,114,203,145,1,119,180,66,255,72,138,180,0,224,149,106,0,119,82,104,255,208,140,43,0,98,9,182,255,205,101,134,255,18,101,38,0,95,197,166,255,203,241,147,0,62,208,145,255,133,246,251,0,2,169,14,0,13,247,184,0,142,7,254,0,36,200,23,255,88,205,223,0,91,129,52,255,21,186,30,0,143,228,210,1,247,234,248,255,230,69,31,254,176,186,135,255,238,205,52,\n1,139,79,43,0,17,176,217,254,32,243,67,0,242,111,233,0,44,35,9,255,227,114,81,1,4,71,12,255,38,105,191,0,7,117,50,255,81,79,16,0,63,68,65,255,157,36,110,255,77,241,3,255,226,45,251,1,142,25,206,0,120,123,209,1,28,254,238,255,5,128,126,255,91,222,215,255,162,15,191,0,86,240,73,0,135,185,81,254,44,241,163,0,212,219,210,255,112,162,155,0,207,101,118,0,168,72,56,255,196,5,52,0,72,172,242,255,126,22,157,255,146,96,59,255,162,121,152,254,140,16,95,0,195,254,200,254,82,150,162,0,119,43,145,254,204,172,78,\n255,166,224,159,0,104,19,237,255,245,126,208,255,226,59,213,0,117,217,197,0,152,72,237,0,220,31,23,254,14,90,231,255,188,212,64,1,60,101,246,255,85,24,86,0,1,177,109,0,146,83,32,1,75,182,192,0,119,241,224,0,185,237,27,255,184,101,82,1,235,37,77,255,253,134,19,0,232,246,122,0,60,106,179,0,195,11,12,0,109,66,235,1,125,113,59,0,61,40,164,0,175,104,240,0,2,47,187,255,50,12,141,0,194,139,181,255,135,250,104,0,97,92,222,255,217,149,201,255,203,241,118,255,79,151,67,0,122,142,218,255,149,245,239,0,138,42,\n200,254,80,37,97,255,124,112,167,255,36,138,87,255,130,29,147,255,241,87,78,255,204,97,19,1,177,209,22,255,247,227,127,254,99,119,83,255,212,25,198,1,16,179,179,0,145,77,172,254,89,153,14,255,218,189,167,0,107,233,59,255,35,33,243,254,44,112,112,255,161,127,79,1,204,175,10,0,40,21,138,254,104,116,228,0,199,95,137,255,133,190,168,255,146,165,234,1,183,99,39,0,183,220,54,254,255,222,133,0,162,219,121,254,63,239,6,0,225,102,54,255,251,18,246,0,4,34,129,1,135,36,131,0,206,50,59,1,15,97,183,0,171,216,\n135,255,101,152,43,255,150,251,91,0,38,145,95,0,34,204,38,254,178,140,83,255,25,129,243,255,76,144,37,0,106,36,26,254,118,144,172,255,68,186,229,255,107,161,213,255,46,163,68,255,149,170,253,0,187,17,15,0,218,160,165,255,171,35,246,1,96,13,19,0,165,203,117,0,214,107,192,255,244,123,177,1,100,3,104,0,178,242,97,255,251,76,130,255,211,77,42,1,250,79,70,255,63,244,80,1,105,101,246,0,61,136,58,1,238,91,213,0,14,59,98,255,167,84,77,0,17,132,46,254,57,175,197,255,185,62,184,0,76,64,207,0,172,175,208,254,\n175,74,37,0,138,27,211,254,148,125,194,0,10,89,81,0,168,203,101,255,43,213,209,1,235,245,54,0,30,35,226,255,9,126,70,0,226,125,94,254,156,117,20,255,57,248,112,1,230,48,64,255,164,92,166,1,224,214,230,255,36,120,143,0,55,8,43,255,251,1,245,1,106,98,165,0,74,107,106,254,53,4,54,255,90,178,150,1,3,120,123,255,244,5,89,1,114,250,61,255,254,153,82,1,77,15,17,0,57,238,90,1,95,223,230,0,236,52,47,254,103,148,164,255,121,207,36,1,18,16,185,255,75,20,74,0,187,11,101,0,46,48,129,255,22,239,210,255,77,236,\n129,255,111,77,204,255,61,72,97,255,199,217,251,255,42,215,204,0,133,145,201,255,57,230,146,1,235,100,198,0,146,73,35,254,108,198,20,255,182,79,210,255,82,103,136,0,246,108,176,0,34,17,60,255,19,74,114,254,168,170,78,255,157,239,20,255,149,41,168,0,58,121,28,0,79,179,134,255,231,121,135,255,174,209,98,255,243,122,190,0,171,166,205,0,212,116,48,0,29,108,66,255,162,222,182,1,14,119,21,0,213,39,249,255,254,223,228,255,183,165,198,0,133,190,48,0,124,208,109,255,119,175,85,255,9,209,121,1,48,171,189,255,\n195,71,134,1,136,219,51,255,182,91,141,254,49,159,72,0,35,118,245,255,112,186,227,255,59,137,31,0,137,44,163,0,114,103,60,254,8,213,150,0,162,10,113,255,194,104,72,0,220,131,116,255,178,79,92,0,203,250,213,254,93,193,189,255,130,255,34,254,212,188,151,0,136,17,20,255,20,101,83,255,212,206,166,0,229,238,73,255,151,74,3,255,168,87,215,0,155,188,133,255,166,129,73,0,240,79,133,255,178,211,81,255,203,72,163,254,193,168,165,0,14,164,199,254,30,255,204,0,65,72,91,1,166,74,102,255,200,42,0,255,194,113,227,\n255,66,23,208,0,229,216,100,255,24,239,26,0,10,233,62,255,123,10,178,1,26,36,174,255,119,219,199,1,45,163,190,0,16,168,42,0,166,57,198,255,28,26,26,0,126,165,231,0,251,108,100,255,61,229,121,255,58,118,138,0,76,207,17,0,13,34,112,254,89,16,168,0,37,208,105,255,35,201,215,255,40,106,101,254,6,239,114,0,40,103,226,254,246,127,110,255,63,167,58,0,132,240,142,0,5,158,88,255,129,73,158,255,94,89,146,0,230,54,146,0,8,45,173,0,79,169,1,0,115,186,247,0,84,64,131,0,67,224,253,255,207,189,64,0,154,28,81,1,\n45,184,54,255,87,212,224,255,0,96,73,255,129,33,235,1,52,66,80,255,251,174,155,255,4,179,37,0,234,164,93,254,93,175,253,0,198,69,87,255,224,106,46,0,99,29,210,0,62,188,114,255,44,234,8,0,169,175,247,255,23,109,137,255,229,182,39,0,192,165,94,254,245,101,217,0,191,88,96,0,196,94,99,255,106,238,11,254,53,126,243,0,94,1,101,255,46,147,2,0,201,124,124,255,141,12,218,0,13,166,157,1,48,251,237,255,155,250,124,255,106,148,146,255,182,13,202,0,28,61,167,0,217,152,8,254,220,130,45,255,200,230,255,1,55,65,\n87,255,93,191,97,254,114,251,14,0,32,105,92,1,26,207,141,0,24,207,13,254,21,50,48,255,186,148,116,255,211,43,225,0,37,34,162,254,164,210,42,255,68,23,96,255,182,214,8,255,245,117,137,255,66,195,50,0,75,12,83,254,80,140,164,0,9,165,36,1,228,110,227,0,241,17,90,1,25,52,212,0,6,223,12,255,139,243,57,0,12,113,75,1,246,183,191,255,213,191,69,255,230,15,142,0,1,195,196,255,138,171,47,255,64,63,106,1,16,169,214,255,207,174,56,1,88,73,133,255,182,133,140,0,177,14,25,255,147,184,53,255,10,227,161,255,120,\n216,244,255,73,77,233,0,157,238,139,1,59,65,233,0,70,251,216,1,41,184,153,255,32,203,112,0,146,147,253,0,87,101,109,1,44,82,133,255,244,150,53,255,94,152,232,255,59,93,39,255,88,147,220,255,78,81,13,1,32,47,252,255,160,19,114,255,93,107,39,255,118,16,211,1,185,119,209,255,227,219,127,254,88,105,236,255,162,110,23,255,36,166,110,255,91,236,221,255,66,234,116,0,111,19,244,254,10,233,26,0,32,183,6,254,2,191,242,0,218,156,53,254,41,60,70,255,168,236,111,0,121,185,126,255,238,142,207,255,55,126,52,0,220,\n129,208,254,80,204,164,255,67,23,144,254,218,40,108,255,127,202,164,0,203,33,3,255,2,158,0,0,37,96,188,255,192,49,74,0,109,4,0,0,111,167,10,254,91,218,135,255,203,66,173,255,150,194,226,0,201,253,6,255,174,102,121,0,205,191,110,0,53,194,4,0,81,40,45,254,35,102,143,255,12,108,198,255,16,27,232,255,252,71,186,1,176,110,114,0,142,3,117,1,113,77,142,0,19,156,197,1,92,47,252,0,53,232,22,1,54,18,235,0,46,35,189,255,236,212,129,0,2,96,208,254,200,238,199,255,59,175,164,255,146,43,231,0,194,217,52,255,3,\n223,12,0,138,54,178,254,85,235,207,0,232,207,34,0,49,52,50,255,166,113,89,255,10,45,216,255,62,173,28,0,111,165,246,0,118,115,91,255,128,84,60,0,167,144,203,0,87,13,243,0,22,30,228,1,177,113,146,255,129,170,230,254,252,153,129,255,145,225,43,0,70,231,5,255,122,105,126,254,86,246,148,255,110,37,154,254,209,3,91,0,68,145,62,0,228,16,165,255,55,221,249,254,178,210,91,0,83,146,226,254,69,146,186,0,93,210,104,254,16,25,173,0,231,186,38,0,189,122,140,255,251,13,112,255,105,110,93,0,251,72,170,0,192,23,\n223,255,24,3,202,1,225,93,228,0,153,147,199,254,109,170,22,0,248,101,246,255,178,124,12,255,178,254,102,254,55,4,65,0,125,214,180,0,183,96,147,0,45,117,23,254,132,191,249,0,143,176,203,254,136,183,54,255,146,234,177,0,146,101,86,255,44,123,143,1,33,209,152,0,192,90,41,254,83,15,125,255,213,172,82,0,215,169,144,0,16,13,34,0,32,209,100,255,84,18,249,1,197,17,236,255,217,186,230,0,49,160,176,255,111,118,97,255,237,104,235,0,79,59,92,254,69,249,11,255,35,172,74,1,19,118,68,0,222,124,165,255,180,66,35,\n255,86,174,246,0,43,74,111,255,126,144,86,255,228,234,91,0,242,213,24,254,69,44,235,255,220,180,35,0,8,248,7,255,102,47,92,255,240,205,102,255,113,230,171,1,31,185,201,255,194,246,70,255,122,17,187,0,134,70,199,255,149,3,150,255,117,63,103,0,65,104,123,255,212,54,19,1,6,141,88,0,83,134,243,255,136,53,103,0,169,27,180,0,177,49,24,0,111,54,167,0,195,61,215,255,31,1,108,1,60,42,70,0,185,3,162,255,194,149,40,255,246,127,38,254,190,119,38,255,61,119,8,1,96,161,219,255,42,203,221,1,177,242,164,255,245,\n159,10,0,116,196,0,0,5,93,205,254,128,127,179,0,125,237,246,255,149,162,217,255,87,37,20,254,140,238,192,0,9,9,193,0,97,1,226,0,29,38,10,0,0,136,63,255,229,72,210,254,38,134,92,255,78,218,208,1,104,36,84,255,12,5,193,255,242,175,61,255,191,169,46,1,179,147,147,255,113,190,139,254,125,172,31,0,3,75,252,254,215,36,15,0,193,27,24,1,255,69,149,255,110,129,118,0,203,93,249,0,138,137,64,254,38,70,6,0,153,116,222,0,161,74,123,0,193,99,79,255,118,59,94,255,61,12,43,1,146,177,157,0,46,147,191,0,16,255,38,\n0,11,51,31,1,60,58,98,255,111,194,77,1,154,91,244,0,140,40,144,1,173,10,251,0,203,209,50,254,108,130,78,0,228,180,90,0,174,7,250,0,31,174,60,0,41,171,30,0,116,99,82,255,118,193,139,255,187,173,198,254,218,111,56,0,185,123,216,0,249,158,52,0,52,180,93,255,201,9,91,255,56,45,166,254,132,155,203,255,58,232,110,0,52,211,89,255,253,0,162,1,9,87,183,0,145,136,44,1,94,122,245,0,85,188,171,1,147,92,198,0,0,8,104,0,30,95,174,0,221,230,52,1,247,247,235,255,137,174,53,255,35,21,204,255,71,227,214,1,232,82,194,\n0,11,48,227,255,170,73,184,255,198,251,252,254,44,112,34,0,131,101,131,255,72,168,187,0,132,135,125,255,138,104,97,255,238,184,168,255,243,104,84,255,135,216,226,255,139,144,237,0,188,137,150,1,80,56,140,255,86,169,167,255,194,78,25,255,220,17,180,255,17,13,193,0,117,137,212,255,141,224,151,0,49,244,175,0,193,99,175,255,19,99,154,1,255,65,62,255,156,210,55,255,242,244,3,255,250,14,149,0,158,88,217,255,157,207,134,254,251,232,28,0,46,156,251,255,171,56,184,255,239,51,234,0,142,138,131,255,25,254,243,\n1,10,201,194,0,63,97,75,0,210,239,162,0,192,200,31,1,117,214,243,0,24,71,222,254,54,40,232,255,76,183,111,254,144,14,87,255,214,79,136,255,216,196,212,0,132,27,140,254,131,5,253,0,124,108,19,255,28,215,75,0,76,222,55,254,233,182,63,0,68,171,191,254,52,111,222,255,10,105,77,255,80,170,235,0,143,24,88,255,45,231,121,0,148,129,224,1,61,246,84,0,253,46,219,255,239,76,33,0,49,148,18,254,230,37,69,0,67,134,22,254,142,155,94,0,31,157,211,254,213,42,30,255,4,228,247,254,252,176,13,255,39,0,31,254,241,244,\n255,255,170,45,10,254,253,222,249,0,222,114,132,0,255,47,6,255,180,163,179,1,84,94,151,255,89,209,82,254,229,52,169,255,213,236,0,1,214,56,228,255,135,119,151,255,112,201,193,0,83,160,53,254,6,151,66,0,18,162,17,0,233,97,91,0,131,5,78,1,181,120,53,255,117,95,63,255,237,117,185,0,191,126,136,255,144,119,233,0,183,57,97,1,47,201,187,255,167,165,119,1,45,100,126,0,21,98,6,254,145,150,95,255,120,54,152,0,209,98,104,0,143,111,30,254,184,148,249,0,235,216,46,0,248,202,148,255,57,95,22,0,242,225,163,0,233,\n247,232,255,71,171,19,255,103,244,49,255,84,103,93,255,68,121,244,1,82,224,13,0,41,79,43,255,249,206,167,255,215,52,21,254,192,32,22,255,247,111,60,0,101,74,38,255,22,91,84,254,29,28,13,255,198,231,215,254,244,154,200,0,223,137,237,0,211,132,14,0,95,64,206,255,17,62,247,255,233,131,121,1,93,23,77,0,205,204,52,254,81,189,136,0,180,219,138,1,143,18,94,0,204,43,140,254,188,175,219,0,111,98,143,255,151,63,162,255,211,50,71,254,19,146,53,0,146,45,83,254,178,82,238,255,16,133,84,255,226,198,93,255,201,\n97,20,255,120,118,35,255,114,50,231,255,162,229,156,255,211,26,12,0,114,39,115,255,206,212,134,0,197,217,160,255,116,129,94,254,199,215,219,255,75,223,249,1,253,116,181,255,232,215,104,255,228,130,246,255,185,117,86,0,14,5,8,0,239,29,61,1,237,87,133,255,125,146,137,254,204,168,223,0,46,168,245,0,154,105,22,0,220,212,161,255,107,69,24,255,137,218,181,255,241,84,198,255,130,122,211,255,141,8,153,255,190,177,118,0,96,89,178,0,255,16,48,254,122,96,105,255,117,54,232,255,34,126,105,255,204,67,166,0,232,\n52,138,255,211,147,12,0,25,54,7,0,44,15,215,254,51,236,45,0,190,68,129,1,106,147,225,0,28,93,45,254,236,141,15,255,17,61,161,0,220,115,192,0,236,145,24,254,111,168,169,0,224,58,63,255,127,164,188,0,82,234,75,1,224,158,134,0,209,68,110,1,217,166,217,0,70,225,166,1,187,193,143,255,16,7,88,255,10,205,140,0,117,192,156,1,17,56,38,0,27,124,108,1,171,215,55,255,95,253,212,0,155,135,168,255,246,178,153,254,154,68,74,0,232,61,96,254,105,132,59,0,33,76,199,1,189,176,130,255,9,104,25,254,75,198,102,255,233,\n1,112,0,108,220,20,255,114,230,70,0,140,194,133,255,57,158,164,254,146,6,80,255,169,196,97,1,85,183,130,0,70,158,222,1,59,237,234,255,96,25,26,255,232,175,97,255,11,121,248,254,88,35,194,0,219,180,252,254,74,8,227,0,195,227,73,1,184,110,161,255,49,233,164,1,128,53,47,0,82,14,121,255,193,190,58,0,48,174,117,255,132,23,32,0,40,10,134,1,22,51,25,255,240,11,176,255,110,57,146,0,117,143,239,1,157,101,118,255,54,84,76,0,205,184,18,255,47,4,72,255,78,112,85,255,193,50,66,1,93,16,52,255,8,105,134,0,12,109,\n72,255,58,156,251,0,144,35,204,0,44,160,117,254,50,107,194,0,1,68,165,255,111,110,162,0,158,83,40,254,76,214,234,0,58,216,205,255,171,96,147,255,40,227,114,1,176,227,241,0,70,249,183,1,136,84,139,255,60,122,247,254,143,9,117,255,177,174,137,254,73,247,143,0,236,185,126,255,62,25,247,255,45,64,56,255,161,244,6,0,34,57,56,1,105,202,83,0,128,147,208,0,6,103,10,255,74,138,65,255,97,80,100,255,214,174,33,255,50,134,74,255,110,151,130,254,111,84,172,0,84,199,75,254,248,59,112,255,8,216,178,1,9,183,95,0,\n238,27,8,254,170,205,220,0,195,229,135,0,98,76,237,255,226,91,26,1,82,219,39,255,225,190,199,1,217,200,121,255,81,179,8,255,140,65,206,0,178,207,87,254,250,252,46,255,104,89,110,1,253,189,158,255,144,214,158,255,160,245,54,255,53,183,92,1,21,200,194,255,146,33,113,1,209,1,255,0,235,106,43,255,167,52,232,0,157,229,221,0,51,30,25,0,250,221,27,1,65,147,87,255,79,123,196,0,65,196,223,255,76,44,17,1,85,241,68,0,202,183,249,255,65,212,212,255,9,33,154,1,71,59,80,0,175,194,59,255,141,72,9,0,100,160,244,\n0,230,208,56,0,59,25,75,254,80,194,194,0,18,3,200,254,160,159,115,0,132,143,247,1,111,93,57,255,58,237,11,1,134,222,135,255,122,163,108,1,123,43,190,255,251,189,206,254,80,182,72,255,208,246,224,1,17,60,9,0,161,207,38,0,141,109,91,0,216,15,211,255,136,78,110,0,98,163,104,255,21,80,121,255,173,178,183,1,127,143,4,0,104,60,82,254,214,16,13,255,96,238,33,1,158,148,230,255,127,129,62,255,51,255,210,255,62,141,236,254,157,55,224,255,114,39,244,0,192,188,250,255,228,76,53,0,98,84,81,255,173,203,61,254,\n147,50,55,255,204,235,191,0,52,197,244,0,88,43,211,254,27,191,119,0,188,231,154,0,66,81,161,0,92,193,160,1,250,227,120,0,123,55,226,0,184,17,72,0,133,168,10,254,22,135,156,255,41,25,103,255,48,202,58,0,186,149,81,255,188,134,239,0,235,181,189,254,217,139,188,255,74,48,82,0,46,218,229,0,189,253,251,0,50,229,12,255,211,141,191,1,128,244,25,255,169,231,122,254,86,47,189,255,132,183,23,255,37,178,150,255,51,137,253,0,200,78,31,0,22,105,50,0,130,60,0,0,132,163,91,254,23,231,187,0,192,79,239,0,157,102,\n164,255,192,82,20,1,24,181,103,255,240,9,234,0,1,123,164,255,133,233,0,255,202,242,242,0,60,186,245,0,241,16,199,255,224,116,158,254,191,125,91,255,224,86,207,0,121,37,231,255,227,9,198,255,15,153,239,255,121,232,217,254,75,112,82,0,95,12,57,254,51,214,105,255,148,220,97,1,199,98,36,0,156,209,12,254,10,212,52,0,217,180,55,254,212,170,232,255,216,20,84,255,157,250,135,0,157,99,127,254,1,206,41,0,149,36,70,1,54,196,201,255,87,116,0,254,235,171,150,0,27,163,234,0,202,135,180,0,208,95,0,254,123,156,93,\n0,183,62,75,0,137,235,182,0,204,225,255,255,214,139,210,255,2,115,8,255,29,12,111,0,52,156,1,0,253,21,251,255,37,165,31,254,12,130,211,0,106,18,53,254,42,99,154,0,14,217,61,254,216,11,92,255,200,197,112,254,147,38,199,0,36,252,120,254,107,169,77,0,1,123,159,255,207,75,102,0,163,175,196,0,44,1,240,0,120,186,176,254,13,98,76,255,237,124,241,255,232,146,188,255,200,96,224,0,204,31,41,0,208,200,13,0,21,225,96,255,175,156,196,0,247,208,126,0,62,184,244,254,2,171,81,0,85,115,158,0,54,64,45,255,19,138,114,\n0,135,71,205,0,227,47,147,1,218,231,66,0,253,209,28,0,244,15,173,255,6,15,118,254,16,150,208,255,185,22,50,255,86,112,207,255,75,113,215,1,63,146,43,255,4,225,19,254,227,23,62,255,14,255,214,254,45,8,205,255,87,197,151,254,210,82,215,255,245,248,247,255,128,248,70,0,225,247,87,0,90,120,70,0,213,245,92,0,13,133,226,0,47,181,5,1,92,163,105,255,6,30,133,254,232,178,61,255,230,149,24,255,18,49,158,0,228,100,61,254,116,243,251,255,77,75,92,1,81,219,147,255,76,163,254,254,141,213,246,0,232,37,152,254,97,\n44,100,0,201,37,50,1,212,244,57,0,174,171,183,255,249,74,112,0,166,156,30,0,222,221,97,255,243,93,73,254,251,101,100,255,216,217,93,255,254,138,187,255,142,190,52,255,59,203,177,255,200,94,52,0,115,114,158,255,165,152,104,1,126,99,226,255,118,157,244,1,107,200,16,0,193,90,229,0,121,6,88,0,156,32,93,254,125,241,211,255,14,237,157,255,165,154,21,255,184,224,22,255,250,24,152,255,113,77,31,0,247,171,23,255,237,177,204,255,52,137,145,255,194,182,114,0,224,234,149,0,10,111,103,1,201,129,4,0,238,142,78,\n0,52,6,40,255,110,213,165,254,60,207,253,0,62,215,69,0,96,97,0,255,49,45,202,0,120,121,22,255,235,139,48,1,198,45,34,255,182,50,27,1,131,210,91,255,46,54,128,0,175,123,105,255,198,141,78,254,67,244,239,255,245,54,103,254,78,38,242,255,2,92,249,254,251,174,87,255,139,63,144,0,24,108,27,255,34,102,18,1,34,22,152,0,66,229,118,254,50,143,99,0,144,169,149,1,118,30,152,0,178,8,121,1,8,159,18,0,90,101,230,255,129,29,119,0,68,36,11,1,232,183,55,0,23,255,96,255,161,41,193,255,63,139,222,0,15,179,243,0,255,\n100,15,255,82,53,135,0,137,57,149,1,99,240,170,255,22,230,228,254,49,180,82,255,61,82,43,0,110,245,217,0,199,125,61,0,46,253,52,0,141,197,219,0,211,159,193,0,55,121,105,254,183,20,129,0,169,119,170,255,203,178,139,255,135,40,182,255,172,13,202,255,65,178,148,0,8,207,43,0,122,53,127,1,74,161,48,0,227,214,128,254,86,11,243,255,100,86,7,1,245,68,134,255,61,43,21,1,152,84,94,255,190,60,250,254,239,118,232,255,214,136,37,1,113,76,107,255,93,104,100,1,144,206,23,255,110,150,154,1,228,103,185,0,218,49,50,\n254,135,77,139,255,185,1,78,0,0,161,148,255,97,29,233,255,207,148,149,255,160,168,0,0,91,128,171,255,6,28,19,254,11,111,247,0,39,187,150,255,138,232,149,0,117,62,68,255,63,216,188,255,235,234,32,254,29,57,160,255,25,12,241,1,169,60,191,0,32,131,141,255,237,159,123,255,94,197,94,254,116,254,3,255,92,179,97,254,121,97,92,255,170,112,14,0,21,149,248,0,248,227,3,0,80,96,109,0,75,192,74,1,12,90,226,255,161,106,68,1,208,114,127,255,114,42,255,254,74,26,74,255,247,179,150,254,121,140,60,0,147,70,200,255,\n214,40,161,255,161,188,201,255,141,65,135,255,242,115,252,0,62,47,202,0,180,149,255,254,130,55,237,0,165,17,186,255,10,169,194,0,156,109,218,255,112,140,123,255,104,128,223,254,177,142,108,255,121,37,219,255,128,77,18,255,111,108,23,1,91,192,75,0,174,245,22,255,4,236,62,255,43,64,153,1,227,173,254,0,237,122,132,1,127,89,186,255,142,82,128,254,252,84,174,0,90,179,177,1,243,214,87,255,103,60,162,255,208,130,14,255,11,130,139,0,206,129,219,255,94,217,157,255,239,230,230,255,116,115,159,254,164,107,95,\n0,51,218,2,1,216,125,198,255,140,202,128,254,11,95,68,255,55,9,93,254,174,153,6,255,204,172,96,0,69,160,110,0,213,38,49,254,27,80,213,0,118,125,114,0,70,70,67,255,15,142,73,255,131,122,185,255,243,20,50,254,130,237,40,0,210,159,140,1,197,151,65,255,84,153,66,0,195,126,90,0,16,238,236,1,118,187,102,255,3,24,133,255,187,69,230,0,56,197,92,1,213,69,94,255,80,138,229,1,206,7,230,0,222,111,230,1,91,233,119,255,9,89,7,1,2,98,1,0,148,74,133,255,51,246,180,255,228,177,112,1,58,189,108,255,194,203,237,254,\n21,209,195,0,147,10,35,1,86,157,226,0,31,163,139,254,56,7,75,255,62,90,116,0,181,60,169,0,138,162,212,254,81,167,31,0,205,90,112,255,33,112,227,0,83,151,117,1,177,224,73,255,174,144,217,255,230,204,79,255,22,77,232,255,114,78,234,0,224,57,126,254,9,49,141,0,242,147,165,1,104,182,140,255,167,132,12,1,123,68,127,0,225,87,39,1,251,108,8,0,198,193,143,1,121,135,207,255,172,22,70,0,50,68,116,255,101,175,40,255,248,105,233,0,166,203,7,0,110,197,218,0,215,254,26,254,168,226,253,0,31,143,96,0,11,103,41,0,\n183,129,203,254,100,247,74,255,213,126,132,0,210,147,44,0,199,234,27,1,148,47,181,0,155,91,158,1,54,105,175,255,2,78,145,254,102,154,95,0,128,207,127,254,52,124,236,255,130,84,71,0,221,243,211,0,152,170,207,0,222,106,199,0,183,84,94,254,92,200,56,255,138,182,115,1,142,96,146,0,133,136,228,0,97,18,150,0,55,251,66,0,140,102,4,0,202,103,151,0,30,19,248,255,51,184,207,0,202,198,89,0,55,197,225,254,169,95,249,255,66,65,68,255,188,234,126,0,166,223,100,1,112,239,244,0,144,23,194,0,58,39,182,0,244,44,24,\n254,175,68,179,255,152,118,154,1,176,162,130,0,217,114,204,254,173,126,78,255,33,222,30,255,36,2,91,255,2,143,243,0,9,235,215,0,3,171,151,1,24,215,245,255,168,47,164,254,241,146,207,0,69,129,180,0,68,243,113,0,144,53,72,254,251,45,14,0,23,110,168,0,68,68,79,255,110,70,95,254,174,91,144,255,33,206,95,255,137,41,7,255,19,187,153,254,35,255,112,255,9,145,185,254,50,157,37,0,11,112,49,1,102,8,190,255,234,243,169,1,60,85,23,0,74,39,189,0,116,49,239,0,173,213,210,0,46,161,108,255,159,150,37,0,196,120,185,\n255,34,98,6,255,153,195,62,255,97,230,71,255,102,61,76,0,26,212,236,255,164,97,16,0,198,59,146,0,163,23,196,0,56,24,61,0,181,98,193,0,251,147,229,255,98,189,24,255,46,54,206,255,234,82,246,0,183,103,38,1,109,62,204,0,10,240,224,0,146,22,117,255,142,154,120,0,69,212,35,0,208,99,118,1,121,255,3,255,72,6,194,0,117,17,197,255,125,15,23,0,154,79,153,0,214,94,197,255,185,55,147,255,62,254,78,254,127,82,153,0,110,102,63,255,108,82,161,255,105,187,212,1,80,138,39,0,60,255,93,255,72,12,186,0,210,251,31,1,\n190,167,144,255,228,44,19,254,128,67,232,0,214,249,107,254,136,145,86,255,132,46,176,0,189,187,227,255,208,22,140,0,217,211,116,0,50,81,186,254,139,250,31,0,30,64,198,1,135,155,100,0,160,206,23,254,187,162,211,255,16,188,63,0,254,208,49,0,85,84,191,0,241,192,242,255,153,126,145,1,234,162,162,255,230,97,216,1,64,135,126,0,190,148,223,1,52,0,43,255,28,39,189,1,64,136,238,0,175,196,185,0,98,226,213,255,127,159,244,1,226,175,60,0,160,233,142,1,180,243,207,255,69,152,89,1,31,101,21,0,144,25,164,254,139,\n191,209,0,91,25,121,0,32,147,5,0,39,186,123,255,63,115,230,255,93,167,198,255,143,213,220,255,179,156,19,255,25,66,122,0,214,160,217,255,2,45,62,255,106,79,146,254,51,137,99,255,87,100,231,255,175,145,232,255,101,184,1,255,174,9,125,0,82,37,161,1,36,114,141,255,48,222,142,255,245,186,154,0,5,174,221,254,63,114,155,255,135,55,160,1,80,31,135,0,126,250,179,1,236,218,45,0,20,28,145,1,16,147,73,0,249,189,132,1,17,189,192,255,223,142,198,255,72,20,15,255,250,53,237,254,15,11,18,0,27,211,113,254,213,107,\n56,255,174,147,146,255,96,126,48,0,23,193,109,1,37,162,94,0,199,157,249,254,24,128,187,255,205,49,178,254,93,164,42,255,43,119,235,1,88,183,237,255,218,210,1,255,107,254,42,0,230,10,99,255,162,0,226,0,219,237,91,0,129,178,203,0,208,50,95,254,206,208,95,255,247,191,89,254,110,234,79,255,165,61,243,0,20,122,112,255,246,246,185,254,103,4,123,0,233,99,230,1,219,91,252,255,199,222,22,255,179,245,233,255,211,241,234,0,111,250,192,255,85,84,136,0,101,58,50,255,131,173,156,254,119,45,51,255,118,233,16,254,\n242,90,214,0,94,159,219,1,3,3,234,255,98,76,92,254,80,54,230,0,5,228,231,254,53,24,223,255,113,56,118,1,20,132,1,255,171,210,236,0,56,241,158,255,186,115,19,255,8,229,174,0,48,44,0,1,114,114,166,255,6,73,226,255,205,89,244,0,137,227,75,1,248,173,56,0,74,120,246,254,119,3,11,255,81,120,198,255,136,122,98,255,146,241,221,1,109,194,78,255,223,241,70,1,214,200,169,255,97,190,47,255,47,103,174,255,99,92,72,254,118,233,180,255,193,35,233,254,26,229,32,255,222,252,198,0,204,43,71,255,199,84,172,0,134,102,\n190,0,111,238,97,254,230,40,230,0,227,205,64,254,200,12,225,0,166,25,222,0,113,69,51,255,143,159,24,0,167,184,74,0,29,224,116,254,158,208,233,0,193,116,126,255,212,11,133,255,22,58,140,1,204,36,51,255,232,30,43,0,235,70,181,255,64,56,146,254,169,18,84,255,226,1,13,255,200,50,176,255,52,213,245,254,168,209,97,0,191,71,55,0,34,78,156,0,232,144,58,1,185,74,189,0,186,142,149,254,64,69,127,255,161,203,147,255,176,151,191,0,136,231,203,254,163,182,137,0,161,126,251,254,233,32,66,0,68,207,66,0,30,28,37,\n0,93,114,96,1,254,92,247,255,44,171,69,0,202,119,11,255,188,118,50,1,255,83,136,255,71,82,26,0,70,227,2,0,32,235,121,1,181,41,154,0,71,134,229,254,202,255,36,0,41,152,5,0,154,63,73,255,34,182,124,0,121,221,150,255,26,204,213,1,41,172,87,0,90,157,146,255,109,130,20,0,71,107,200,255,243,102,189,0,1,195,145,254,46,88,117,0,8,206,227,0,191,110,253,255,109,128,20,254,134,85,51,255,137,177,112,1,216,34,22,255,131,16,208,255,121,149,170,0,114,19,23,1,166,80,31,255,113,240,122,0,232,179,250,0,68,110,180,\n254,210,170,119,0,223,108,164,255,207,79,233,255,27,229,226,254,209,98,81,255,79,68,7,0,131,185,100,0,170,29,162,255,17,162,107,255,57,21,11,1,100,200,181,255,127,65,166,1,165,134,204,0,104,167,168,0,1,164,79,0,146,135,59,1,70,50,128,255,102,119,13,254,227,6,135,0,162,142,179,255,160,100,222,0,27,224,219,1,158,93,195,255,234,141,137,0,16,24,125,255,238,206,47,255,97,17,98,255,116,110,12,255,96,115,77,0,91,227,232,255,248,254,79,255,92,229,6,254,88,198,139,0,206,75,129,0,250,77,206,255,141,244,123,\n1,138,69,220,0,32,151,6,1,131,167,22,255,237,68,167,254,199,189,150,0,163,171,138,255,51,188,6,255,95,29,137,254,148,226,179,0,181,107,208,255,134,31,82,255,151,101,45,255,129,202,225,0,224,72,147,0,48,138,151,255,195,64,206,254,237,218,158,0,106,29,137,254,253,189,233,255,103,15,17,255,194,97,255,0,178,45,169,254,198,225,155,0,39,48,117,255,135,106,115,0,97,38,181,0,150,47,65,255,83,130,229,254,246,38,129,0,92,239,154,254,91,99,127,0,161,111,33,255,238,217,242,255,131,185,195,255,213,191,158,255,\n41,150,218,0,132,169,131,0,89,84,252,1,171,70,128,255,163,248,203,254,1,50,180,255,124,76,85,1,251,111,80,0,99,66,239,255,154,237,182,255,221,126,133,254,74,204,99,255,65,147,119,255,99,56,167,255,79,248,149,255,116,155,228,255,237,43,14,254,69,137,11,255,22,250,241,1,91,122,143,255,205,249,243,0,212,26,60,255,48,182,176,1,48,23,191,255,203,121,152,254,45,74,213,255,62,90,18,254,245,163,230,255,185,106,116,255,83,35,159,0,12,33,2,255,80,34,62,0,16,87,174,255,173,101,85,0,202,36,81,254,160,69,204,\n255,64,225,187,0,58,206,94,0,86,144,47,0,229,86,245,0,63,145,190,1,37,5,39,0,109,251,26,0,137,147,234,0,162,121,145,255,144,116,206,255,197,232,185,255,183,190,140,255,73,12,254,255,139,20,242,255,170,90,239,255,97,66,187,255,245,181,135,254,222,136,52,0,245,5,51,254,203,47,78,0,152,101,216,0,73,23,125,0,254,96,33,1,235,210,73,255,43,209,88,1,7,129,109,0,122,104,228,254,170,242,203,0,242,204,135,255,202,28,233,255,65,6,127,0,159,144,71,0,100,140,95,0,78,150,13,0,251,107,118,1,182,58,125,255,1,38,\n108,255,141,189,209,255,8,155,125,1,113,163,91,255,121,79,190,255,134,239,108,255,76,47,248,0,163,228,239,0,17,111,10,0,88,149,75,255,215,235,239,0,167,159,24,255,47,151,108,255,107,209,188,0,233,231,99,254,28,202,148,255,174,35,138,255,110,24,68,255,2,69,181,0,107,102,82,0,102,237,7,0,92,36,237,255,221,162,83,1,55,202,6,255,135,234,135,255,24,250,222,0,65,94,168,254,245,248,210,255,167,108,201,254,255,161,111,0,205,8,254,0,136,13,116,0,100,176,132,255,43,215,126,255,177,133,130,255,158,79,148,0,\n67,224,37,1,12,206,21,255,62,34,110,1,237,104,175,255,80,132,111,255,142,174,72,0,84,229,180,254,105,179,140,0,64,248,15,255,233,138,16,0,245,67,123,254,218,121,212,255,63,95,218,1,213,133,137,255,143,182,82,255,48,28,11,0,244,114,141,1,209,175,76,255,157,181,150,255,186,229,3,255,164,157,111,1,231,189,139,0,119,202,190,255,218,106,64,255,68,235,63,254,96,26,172,255,187,47,11,1,215,18,251,255,81,84,89,0,68,58,128,0,94,113,5,1,92,129,208,255,97,15,83,254,9,28,188,0,239,9,164,0,60,205,152,0,192,163,\n98,255,184,18,60,0,217,182,139,0,109,59,120,255,4,192,251,0,169,210,240,255,37,172,92,254,148,211,245,255,179,65,52,0,253,13,115,0,185,174,206,1,114,188,149,255,237,90,173,0,43,199,192,255,88,108,113,0,52,35,76,0,66,25,148,255,221,4,7,255,151,241,114,255,190,209,232,0,98,50,199,0,151,150,213,255,18,74,36,1,53,40,7,0,19,135,65,255,26,172,69,0,174,237,85,0,99,95,41,0,3,56,16,0,39,160,177,255,200,106,218,254,185,68,84,255,91,186,61,254,67,143,141,255,13,244,166,255,99,114,198,0,199,110,163,255,193,18,\n186,0,124,239,246,1,110,68,22,0,2,235,46,1,212,60,107,0,105,42,105,1,14,230,152,0,7,5,131,0,141,104,154,255,213,3,6,0,131,228,162,255,179,100,28,1,231,123,85,255,206,14,223,1,253,96,230,0,38,152,149,1,98,137,122,0,214,205,3,255,226,152,179,255,6,133,137,0,158,69,140,255,113,162,154,255,180,243,172,255,27,189,115,255,143,46,220,255,213,134,225,255,126,29,69,0,188,43,137,1,242,70,9,0,90,204,255,255,231,170,147,0,23,56,19,254,56,125,157,255,48,179,218,255,79,182,253,255,38,212,191,1,41,235,124,0,96,\n151,28,0,135,148,190,0,205,249,39,254,52,96,136,255,212,44,136,255,67,209,131,255,252,130,23,255,219,128,20,255,198,129,118,0,108,101,11,0,178,5,146,1,62,7,100,255,181,236,94,254,28,26,164,0,76,22,112,255,120,102,79,0,202,192,229,1,200,176,215,0,41,64,244,255,206,184,78,0,167,45,63,1,160,35,0,255,59,12,142,255,204,9,144,255,219,94,229,1,122,27,112,0,189,105,109,255,64,208,74,255,251,127,55,1,2,226,198,0,44,76,209,0,151,152,77,255,210,23,46,1,201,171,69,255,44,211,231,0,190,37,224,255,245,196,62,255,\n169,181,222,255,34,211,17,0,119,241,197,255,229,35,152,1,21,69,40,255,178,226,161,0,148,179,193,0,219,194,254,1,40,206,51,255,231,92,250,1,67,153,170,0,21,148,241,0,170,69,82,255,121,18,231,255,92,114,3,0,184,62,230,0,225,201,87,255,146,96,162,255,181,242,220,0,173,187,221,1,226,62,170,255,56,126,217,1,117,13,227,255,179,44,239,0,157,141,155,255,144,221,83,0,235,209,208,0,42,17,165,1,251,81,133,0,124,245,201,254,97,211,24,255,83,214,166,0,154,36,9,255,248,47,127,0,90,219,140,255,161,217,38,254,212,\n147,63,255,66,84,148,1,207,3,1,0,230,134,89,1,127,78,122,255,224,155,1,255,82,136,74,0,178,156,208,255,186,25,49,255,222,3,210,1,229,150,190,255,85,162,52,255,41,84,141,255,73,123,84,254,93,17,150,0,119,19,28,1,32,22,215,255,28,23,204,255,142,241,52,255,228,52,125,0,29,76,207,0,215,167,250,254,175,164,230,0,55,207,105,1,109,187,245,255,161,44,220,1,41,101,128,255,167,16,94,0,93,214,107,255,118,72,0,254,80,61,234,255,121,175,125,0,139,169,251,0,97,39,147,254,250,196,49,255,165,179,110,254,223,70,187,\n255,22,142,125,1,154,179,138,255,118,176,42,1,10,174,153,0,156,92,102,0,168,13,161,255,143,16,32,0,250,197,180,255,203,163,44,1,87,32,36,0,161,153,20,255,123,252,15,0,25,227,80,0,60,88,142,0,17,22,201,1,154,205,77,255,39,63,47,0,8,122,141,0,128,23,182,254,204,39,19,255,4,112,29,255,23,36,140,255,210,234,116,254,53,50,63,255,121,171,104,255,160,219,94,0,87,82,14,254,231,42,5,0,165,139,127,254,86,78,38,0,130,60,66,254,203,30,45,255,46,196,122,1,249,53,162,255,136,143,103,254,215,210,114,0,231,7,160,\n254,169,152,42,255,111,45,246,0,142,131,135,255,131,71,204,255,36,226,11,0,0,28,242,255,225,138,213,255,247,46,216,254,245,3,183,0,108,252,74,1,206,26,48,255,205,54,246,255,211,198,36,255,121,35,50,0,52,216,202,255,38,139,129,254,242,73,148,0,67,231,141,255,42,47,204,0,78,116,25,1,4,225,191,255,6,147,228,0,58,88,177,0,122,165,229,255,252,83,201,255,224,167,96,1,177,184,158,255,242,105,179,1,248,198,240,0,133,66,203,1,254,36,47,0,45,24,115,255,119,62,254,0,196,225,186,254,123,141,172,0,26,85,41,255,\n226,111,183,0,213,231,151,0,4,59,7,255,238,138,148,0,66,147,33,255,31,246,141,255,209,141,116,255,104,112,31,0,88,161,172,0,83,215,230,254,47,111,151,0,45,38,52,1,132,45,204,0,138,128,109,254,233,117,134,255,243,190,173,254,241,236,240,0,82,127,236,254,40,223,161,255,110,182,225,255,123,174,239,0,135,242,145,1,51,209,154,0,150,3,115,254,217,164,252,255,55,156,69,1,84,94,255,255,232,73,45,1,20,19,212,255,96,197,59,254,96,251,33,0,38,199,73,1,64,172,247,255,117,116,56,255,228,17,18,0,62,138,103,1,246,\n229,164,255,244,118,201,254,86,32,159,255,109,34,137,1,85,211,186,0,10,193,193,254,122,194,177,0,122,238,102,255,162,218,171,0,108,217,161,1,158,170,34,0,176,47,155,1,181,228,11,255,8,156,0,0,16,75,93,0,206,98,255,1,58,154,35,0,12,243,184,254,67,117,66,255,230,229,123,0,201,42,110,0,134,228,178,254,186,108,118,255,58,19,154,255,82,169,62,255],\"i8\",4,e.h+20480);K([114,143,115,1,239,196,50,255,173,48,193,255,147,2,84,255,150,134,147,254,95,232,73,0,109,227,52,254,191,137,10,0,40,204,30,254,76,52,97,\n255,164,235,126,0,254,124,188,0,74,182,21,1,121,29,35,255,241,30,7,254,85,218,214,255,7,84,150,254,81,27,117,255,160,159,152,254,66,24,221,255,227,10,60,1,141,135,102,0,208,189,150,1,117,179,92,0,132,22,136,255,120,199,28,0,21,129,79,254,182,9,65,0,218,163,169,0,246,147,198,255,107,38,144,1,78,175,205,255,214,5,250,254,47,88,29,255,164,47,204,255,43,55,6,255,131,134,207,254,116,100,214,0,96,140,75,1,106,220,144,0,195,32,28,1,172,81,5,255,199,179,52,255,37,84,203,0,170,112,174,0,11,4,91,0,69,244,27,\n1,117,131,92,0,33,152,175,255,140,153,107,255,251,135,43,254,87,138,4,255,198,234,147,254,121,152,84,255,205,101,155,1,157,9,25,0,72,106,17,254,108,153,0,255,189,229,186,0,193,8,176,255,174,149,209,0,238,130,29,0,233,214,126,1,61,226,102,0,57,163,4,1,198,111,51,255,45,79,78,1,115,210,10,255,218,9,25,255,158,139,198,255,211,82,187,254,80,133,83,0,157,129,230,1,243,133,134,255,40,136,16,0,77,107,79,255,183,85,92,1,177,204,202,0,163,71,147,255,152,69,190,0,172,51,188,1,250,210,172,255,211,242,113,1,\n89,89,26,255,64,66,111,254,116,152,42,0,161,39,27,255,54,80,254,0,106,209,115,1,103,124,97,0,221,230,98,255,31,231,6,0,178,192,120,254,15,217,203,255,124,158,79,0,112,145,247,0,92,250,48,1,163,181,193,255,37,47,142,254,144,189,165,255,46,146,240,0,6,75,128,0,41,157,200,254,87,121,213,0,1,113,236,0,5,45,250,0,144,12,82,0,31,108,231,0,225,239,119,255,167,7,189,255,187,228,132,255,110,189,34,0,94,44,204,1,162,52,197,0,78,188,241,254,57,20,141,0,244,146,47,1,206,100,51,0,125,107,148,254,27,195,77,0,152,\n253,90,1,7,143,144,255,51,37,31,0,34,119,38,255,7,197,118,0,153,188,211,0,151,20,116,254,245,65,52,255,180,253,110,1,47,177,209,0,161,99,17,255,118,222,202,0,125,179,252,1,123,54,126,255,145,57,191,0,55,186,121,0,10,243,138,0,205,211,229,255,125,156,241,254,148,156,185,255,227,19,188,255,124,41,32,255,31,34,206,254,17,57,83,0,204,22,37,255,42,96,98,0,119,102,184,1,3,190,28,0,110,82,218,255,200,204,192,255,201,145,118,0,117,204,146,0,132,32,98,1,192,194,121,0,106,161,248,1,237,88,124,0,23,212,26,0,\n205,171,90,255,248,48,216,1,141,37,230,255,124,203,0,254,158,168,30,255,214,248,21,0,112,187,7,255,75,133,239,255,74,227,243,255,250,147,70,0,214,120,162,0,167,9,179,255,22,158,18,0,218,77,209,1,97,109,81,255,244,33,179,255,57,52,57,255,65,172,210,255,249,71,209,255,142,169,238,0,158,189,153,255,174,254,103,254,98,33,14,0,141,76,230,255,113,139,52,255,15,58,212,0,168,215,201,255,248,204,215,1,223,68,160,255,57,154,183,254,47,231,121,0,106,166,137,0,81,136,138,0,165,43,51,0,231,139,61,0,57,95,59,254,\n118,98,25,255,151,63,236,1,94,190,250,255,169,185,114,1,5,250,58,255,75,105,97,1,215,223,134,0,113,99,163,1,128,62,112,0,99,106,147,0,163,195,10,0,33,205,182,0,214,14,174,255,129,38,231,255,53,182,223,0,98,42,159,255,247,13,40,0,188,210,177,1,6,21,0,255,255,61,148,254,137,45,129,255,89,26,116,254,126,38,114,0,251,50,242,254,121,134,128,255,204,249,167,254,165,235,215,0,202,177,243,0,133,141,62,0,240,130,190,1,110,175,255,0,0,20,146,1,37,210,121,255,7,39,130,0,142,250,84,255,141,200,207,0,9,95,104,\n255,11,244,174,0,134,232,126,0,167,1,123,254,16,193,149,255,232,233,239,1,213,70,112,255,252,116,160,254,242,222,220,255,205,85,227,0,7,185,58,0,118,247,63,1,116,77,177,255,62,245,200,254,63,18,37,255,107,53,232,254,50,221,211,0,162,219,7,254,2,94,43,0,182,62,182,254,160,78,200,255,135,140,170,0,235,184,228,0,175,53,138,254,80,58,77,255,152,201,2,1,63,196,34,0,5,30,184,0,171,176,154,0,121,59,206,0,38,99,39,0,172,80,77,254,0,134,151,0,186,33,241,254,94,253,223,255,44,114,252,0,108,126,57,255,201,40,\n13,255,39,229,27,255,39,239,23,1,151,121,51,255,153,150,248,0,10,234,174,255,118,246,4,254,200,245,38,0,69,161,242,1,16,178,150,0,113,56,130,0,171,31,105,0,26,88,108,255,49,42,106,0,251,169,66,0,69,93,149,0,20,57,254,0,164,25,111,0,90,188,90,255,204,4,197,0,40,213,50,1,212,96,132,255,88,138,180,254,228,146,124,255,184,246,247,0,65,117,86,255,253,102,210,254,254,121,36,0,137,115,3,255,60,24,216,0,134,18,29,0,59,226,97,0,176,142,71,0,7,209,161,0,189,84,51,254,155,250,72,0,213,84,235,255,45,222,224,\n0,238,148,143,255,170,42,53,255,78,167,117,0,186,0,40,255,125,177,103,255,69,225,66,0,227,7,88,1,75,172,6,0,169,45,227,1,16,36,70,255,50,2,9,255,139,193,22,0,143,183,231,254,218,69,50,0,236,56,161,1,213,131,42,0,138,145,44,254,136,229,40,255,49,63,35,255,61,145,245,255,101,192,2,254,232,167,113,0,152,104,38,1,121,185,218,0,121,139,211,254,119,240,35,0,65,189,217,254,187,179,162,255,160,187,230,0,62,248,14,255,60,78,97,0,255,247,163,255,225,59,91,255,107,71,58,255,241,47,33,1,50,117,236,0,219,177,\n63,254,244,90,179,0,35,194,215,255,189,67,50,255,23,135,129,0,104,189,37,255,185,57,194,0,35,62,231,255,220,248,108,0,12,231,178,0,143,80,91,1,131,93,101,255,144,39,2,1,255,250,178,0,5,17,236,254,139,32,46,0,204,188,38,254,245,115,52,255,191,113,73,254,191,108,69,255,22,69,245,1,23,203,178,0,170,99,170,0,65,248,111,0,37,108,153,255,64,37,69,0,0,88,62,254,89,148,144,255,191,68,224,1,241,39,53,0,41,203,237,255,145,126,194,255,221,42,253,255,25,99,151,0,97,253,223,1,74,115,49,255,6,175,72,255,59,176,\n203,0,124,183,249,1,228,228,99,0,129,12,207,254,168,192,195,255,204,176,16,254,152,234,171,0,77,37,85,255,33,120,135,255,142,194,227,1,31,214,58,0,213,187,125,255,232,46,60,255,190,116,42,254,151,178,19,255,51,62,237,254,204,236,193,0,194,232,60,0,172,34,157,255,189,16,184,254,103,3,95,255,141,233,36,254,41,25,11,255,21,195,166,0,118,245,45,0,67,213,149,255,159,12,18,255,187,164,227,1,160,25,5,0,12,78,195,1,43,197,225,0,48,142,41,254,196,155,60,255,223,199,18,1,145,136,156,0,252,117,169,254,145,226,\n238,0,239,23,107,0,109,181,188,255,230,112,49,254,73,170,237,255,231,183,227,255,80,220,20,0,194,107,127,1,127,205,101,0,46,52,197,1,210,171,36,255,88,3,90,255,56,151,141,0,96,187,255,255,42,78,200,0,254,70,70,1,244,125,168,0,204,68,138,1,124,215,70,0,102,66,200,254,17,52,228,0,117,220,143,254,203,248,123,0,56,18,174,255,186,151,164,255,51,232,208,1,160,228,43,255,249,29,25,1,68,190,63,0,244,126,0,0,164,2,0,0,157,129,0,0,11,0,0,0,173,129,0,0,181,129,0,0,199,129,0,0,223,129,0,0,243,129,0,0,6,130,0,\n0,22,130,0,0,41,130,0,0,56,130,0,0,72,130,0,0,95,130,0,0,112,130,0,0,128,130,0,0,150,130,0,0,176,130,0,0,164,2,0,0,204,130,0,0,6,0,0,0,152,47,138,66,145,68,55,113,207,251,192,181,165,219,181,233,91,194,86,57,241,17,241,89,164,130,63,146,213,94,28,171,152,170,7,216,1,91,131,18,190,133,49,36,195,125,12,85,116,93,190,114,254,177,222,128,167,6,220,155,116,241,155,193,193,105,155,228,134,71,190,239,198,157,193,15,204,161,12,36,111,44,233,45,170,132,116,74,220,169,176,92,218,136,249,118,82,81,62,152,109,\n198,49,168,200,39,3,176,199,127,89,191,243,11,224,198,71,145,167,213,81,99,202,6,103,41,41,20,133,10,183,39,56,33,27,46,252,109,44,77,19,13,56,83,84,115,10,101,187,10,106,118,46,201,194,129,133,44,114,146,161,232,191,162,75,102,26,168,112,139,75,194,163,81,108,199,25,232,146,209,36,6,153,214,133,53,14,244,112,160,106,16,22,193,164,25,8,108,55,30,76,119,72,39,181,188,176,52,179,12,28,57,74,170,216,78,79,202,156,91,243,111,46,104,238,130,143,116,111,99,165,120,20,120,200,132,8,2,199,140,250,255,190,\n144,235,108,80,164,247,163,249,190,242,120,113,198,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,16,0,0,0,32,0,0,0,64,0,0,0,128,0,0,0,27,0,0,0,54,0,0,0,108,0,0,0,216,0,0,0,171,0,0,0,77,0,0,0,154,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,43,47,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,62,255,255,255,63,52,53,54,55,56,57,58,59,60,61,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255,255,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,255,255,255,255,255,79,76,77,95,82,79,79,84,0,79,76,77,95,82,65,84,67,72,69,84,0,79,76,77,95,75,69,89,83,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,34,99,117,\n114,118,101,50,53,53,49,57,34,58,0,34,101,100,50,53,53,49,57,34,58,0,77,69,71,79,76,77,95,75,69,89,83,0,0,1,2,3,83,85,67,67,69,83,83,0,78,79,84,95,69,78,79,85,71,72,95,82,65,78,68,79,77,0,79,85,84,80,85,84,95,66,85,70,70,69,82,95,84,79,79,95,83,77,65,76,76,0,66,65,68,95,77,69,83,83,65,71,69,95,86,69,82,83,73,79,78,0,66,65,68,95,77,69,83,83,65,71,69,95,70,79,82,77,65,84,0,66,65,68,95,77,69,83,83,65,71,69,95,77,65,67,0,66,65,68,95,77,69,83,83,65,71,69,95,75,69,89,95,73,68,0,73,78,86,65,76,73,68,95,\n66,65,83,69,54,52,0,66,65,68,95,65,67,67,79,85,78,84,95,75,69,89,0,85,78,75,78,79,87,78,95,80,73,67,75,76,69,95,86,69,82,83,73,79,78,0,67,79,82,82,85,80,84,69,68,95,80,73,67,75,76,69,0,66,65,68,95,83,69,83,83,73,79,78,95,75,69,89,0,85,78,75,78,79,87,78,95,77,69,83,83,65,71,69,95,73,78,68,69,88,0,66,65,68,95,76,69,71,65,67,89,95,65,67,67,79,85,78,84,95,80,73,67,75,76,69,0,66,65,68,95,83,73,71,78,65,84,85,82,69,0,85,78,75,78,79,87,78,95,69,82,82,79,82,0,80,105,99,107,108,101,0,99,124,119,123,242,107,\n111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,\n34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22,0,0,0,0,0,0,2,3,9,11,13,14,4,6,18,22,26,28,6,5,27,29,23,18,8,12,36,44,52,56,10,15,45,39,57,54,12,10,54,58,46,36,14,\n9,63,49,35,42,16,24,72,88,104,112,18,27,65,83,101,126,20,30,90,78,114,108,22,29,83,69,127,98,24,20,108,116,92,72,26,23,101,127,81,70,28,18,126,98,70,84,30,17,119,105,75,90,32,48,144,176,208,224,34,51,153,187,221,238,36,54,130,166,202,252,38,53,139,173,199,242,40,60,180,156,228,216,42,63,189,151,233,214,44,58,166,138,254,196,46,57,175,129,243,202,48,40,216,232,184,144,50,43,209,227,181,158,52,46,202,254,162,140,54,45,195,245,175,130,56,36,252,196,140,168,58,39,245,207,129,166,60,34,238,210,150,180,\n62,33,231,217,155,186,64,96,59,123,187,219,66,99,50,112,182,213,68,102,41,109,161,199,70,101,32,102,172,201,72,108,31,87,143,227,74,111,22,92,130,237,76,106,13,65,149,255,78,105,4,74,152,241,80,120,115,35,211,171,82,123,122,40,222,165,84,126,97,53,201,183,86,125,104,62,196,185,88,116,87,15,231,147,90,119,94,4,234,157,92,114,69,25,253,143,94,113,76,18,240,129,96,80,171,203,107,59,98,83,162,192,102,53,100,86,185,221,113,39,102,85,176,214,124,41,104,92,143,231,95,3,106,95,134,236,82,13,108,90,157,241,\n69,31,110,89,148,250,72,17,112,72,227,147,3,75,114,75,234,152,14,69,116,78,241,133,25,87,118,77,248,142,20,89,120,68,199,191,55,115,122,71,206,180,58,125,124,66,213,169,45,111,126,65,220,162,32,97,128,192,118,246,109,173,130,195,127,253,96,163,132,198,100,224,119,177,134,197,109,235,122,191,136,204,82,218,89,149,138,207,91,209,84,155,140,202,64,204,67,137,142,201,73,199,78,135,144,216,62,174,5,221,146,219,55,165,8,211,148,222,44,184,31,193,150,221,37,179,18,207,152,212,26,130,49,229,154,215,19,137,\n60,235,156,210,8,148,43,249,158,209,1,159,38,247,160,240,230,70,189,77,162,243,239,77,176,67,164,246,244,80,167,81,166,245,253,91,170,95,168,252,194,106,137,117,170,255,203,97,132,123,172,250,208,124,147,105,174,249,217,119,158,103,176,232,174,30,213,61,178,235,167,21,216,51,180,238,188,8,207,33,182,237,181,3,194,47,184,228,138,50,225,5,186,231,131,57,236,11,188,226,152,36,251,25,190,225,145,47,246,23,192,160,77,141,214,118,194,163,68,134,219,120,196,166,95,155,204,106,198,165,86,144,193,100,200,\n172,105,161,226,78,202,175,96,170,239,64,204,170,123,183,248,82,206,169,114,188,245,92,208,184,5,213,190,6,210,187,12,222,179,8,212,190,23,195,164,26,214,189,30,200,169,20,216,180,33,249,138,62,218,183,40,242,135,48,220,178,51,239,144,34,222,177,58,228,157,44,224,144,221,61,6,150,226,147,212,54,11,152,228,150,207,43,28,138,230,149,198,32,17,132,232,156,249,17,50,174,234,159,240,26,63,160,236,154,235,7,40,178,238,153,226,12,37,188,240,136,149,101,110,230,242,139,156,110,99,232,244,142,135,115,116,\n250,246,141,142,120,121,244,248,132,177,73,90,222,250,135,184,66,87,208,252,130,163,95,64,194,254,129,170,84,77,204,27,155,236,247,218,65,25,152,229,252,215,79,31,157,254,225,192,93,29,158,247,234,205,83,19,151,200,219,238,121,17,148,193,208,227,119,23,145,218,205,244,101,21,146,211,198,249,107,11,131,164,175,178,49,9,128,173,164,191,63,15,133,182,185,168,45,13,134,191,178,165,35,3,143,128,131,134,9,1,140,137,136,139,7,7,137,146,149,156,21,5,138,155,158,145,27,59,171,124,71,10,161,57,168,117,76,7,\n175,63,173,110,81,16,189,61,174,103,90,29,179,51,167,88,107,62,153,49,164,81,96,51,151,55,161,74,125,36,133,53,162,67,118,41,139,43,179,52,31,98,209,41,176,61,20,111,223,47,181,38,9,120,205,45,182,47,2,117,195,35,191,16,51,86,233,33,188,25,56,91,231,39,185,2,37,76,245,37,186,11,46,65,251,91,251,215,140,97,154,89,248,222,135,108,148,95,253,197,154,123,134,93,254,204,145,118,136,83,247,243,160,85,162,81,244,250,171,88,172,87,241,225,182,79,190,85,242,232,189,66,176,75,227,159,212,9,234,73,224,150,223,\n4,228,79,229,141,194,19,246,77,230,132,201,30,248,67,239,187,248,61,210,65,236,178,243,48,220,71,233,169,238,39,206,69,234,160,229,42,192,123,203,71,60,177,122,121,200,78,55,188,116,127,205,85,42,171,102,125,206,92,33,166,104,115,199,99,16,133,66,113,196,106,27,136,76,119,193,113,6,159,94,117,194,120,13,146,80,107,211,15,100,217,10,105,208,6,111,212,4,111,213,29,114,195,22,109,214,20,121,206,24,99,223,43,72,237,50,97,220,34,67,224,60,103,217,57,94,247,46,101,218,48,85,250,32,155,91,154,1,183,236,\n153,88,147,10,186,226,159,93,136,23,173,240,157,94,129,28,160,254,147,87,190,45,131,212,145,84,183,38,142,218,151,81,172,59,153,200,149,82,165,48,148,198,139,67,210,89,223,156,137,64,219,82,210,146,143,69,192,79,197,128,141,70,201,68,200,142,131,79,246,117,235,164,129,76,255,126,230,170,135,73,228,99,241,184,133,74,237,104,252,182,187,107,10,177,103,12,185,104,3,186,106,2,191,109,24,167,125,16,189,110,17,172,112,30,179,103,46,157,83,52,177,100,39,150,94,58,183,97,60,139,73,40,181,98,53,128,68,38,\n171,115,66,233,15,124,169,112,75,226,2,114,175,117,80,255,21,96,173,118,89,244,24,110,163,127,102,197,59,68,161,124,111,206,54,74,167,121,116,211,33,88,165,122,125,216,44,86,219,59,161,122,12,55,217,56,168,113,1,57,223,61,179,108,22,43,221,62,186,103,27,37,211,55,133,86,56,15,209,52,140,93,53,1,215,49,151,64,34,19,213,50,158,75,47,29,203,35,233,34,100,71,201,32,224,41,105,73,207,37,251,52,126,91,205,38,242,63,115,85,195,47,205,14,80,127,193,44,196,5,93,113,199,41,223,24,74,99,197,42,214,19,71,109,\n251,11,49,202,220,215,249,8,56,193,209,217,255,13,35,220,198,203,253,14,42,215,203,197,243,7,21,230,232,239,241,4,28,237,229,225,247,1,7,240,242,243,245,2,14,251,255,253,235,19,121,146,180,167,233,16,112,153,185,169,239,21,107,132,174,187,237,22,98,143,163,181,227,31,93,190,128,159,225,28,84,181,141,145,231,25,79,168,154,131,229,26,70,163,151,141,82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,\n11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,\n32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],\"i8\",4,e.h+30720);var kb=J,J=J+16;a._i64Subtract=lb;a._i64Add=mb;a._bitshift64Ashr=nb;a._memset=ob;a._bitshift64Lshr=pb;a._bitshift64Shl=qb;a._memcpy=rb;var ab=H=e.q(J),Xa=!0,za=ab+bb,E=e.q(za),sb=K([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,\n0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],\"i8\",3);a.t={Math:Math,Int8Array:Int8Array,\nInt16Array:Int16Array,Int32Array:Int32Array,Uint8Array:Uint8Array,Uint16Array:Uint16Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array,NaN:NaN,Infinity:Infinity};a.u={abort:Q,assert:z,invoke_ii:function(g,b){try{return a.dynCall_ii(g,b)}catch(c){if(\"number\"!==typeof c&&\"longjmp\"!==c)throw c;d.setThrew(1,0)}},invoke_iiiiiiiiii:function(g,b,c,f,O,l,h,e,k,m){try{return a.dynCall_iiiiiiiiii(g,b,c,f,O,l,h,e,k,m)}catch(p){if(\"number\"!==typeof p&&\"longjmp\"!==p)throw p;d.setThrew(1,\n0)}},invoke_iii:function(g,b,c){try{return a.dynCall_iii(g,b,c)}catch(f){if(\"number\"!==typeof f&&\"longjmp\"!==f)throw f;d.setThrew(1,0)}},_pthread_self:function(){return 0},_abort:function(){a.abort()},___setErrNo:Na,_llvm_stacksave:wa,_sbrk:ja,_time:function(a){var b=Date.now()/1E3|0;a&&(D[a>>2]=b);return b},_emscripten_memcpy_big:function(a,b,c){B.set(B.subarray(b,b+c),a);return a},_llvm_stackrestore:function(a){var b=wa,c=b.b[a];b.b.splice(a,1);e.d(c)},_sysconf:function(a){switch(a){case 30:return 4096;\ncase 85:return M/4096;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;\ncase 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;\ncase 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return\"object\"===typeof navigator?navigator.hardwareConcurrency||1:1}Na(22);return-1},STACKTOP:H,STACK_MAX:za,tempDoublePtr:kb,ABORT:ka,cttz_i8:sb};// EMSCRIPTEN_START_ASM\nvar d=(function(global,env,buffer) {\n\"use asm\";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.STACKTOP|0;var j=env.STACK_MAX|0;var k=env.tempDoublePtr|0;var l=env.ABORT|0;var m=env.cttz_i8|0;var n=0;var o=0;var p=0;var q=0;var r=global.NaN,s=global.Infinity;var t=0,u=0,v=0,w=0,x=0.0,y=0,z=0,A=0,B=0.0;var C=0;var D=0;var E=0;var F=0;var G=0;var H=0;var I=0;var J=0;var K=0;var L=0;var M=global.Math.floor;var N=global.Math.abs;var O=global.Math.sqrt;var P=global.Math.pow;var Q=global.Math.cos;var R=global.Math.sin;var S=global.Math.tan;var T=global.Math.acos;var U=global.Math.asin;var V=global.Math.atan;var W=global.Math.atan2;var X=global.Math.exp;var Y=global.Math.log;var Z=global.Math.ceil;var _=global.Math.imul;var $=global.Math.min;var aa=global.Math.clz32;var ba=env.abort;var ca=env.assert;var da=env.invoke_ii;var ea=env.invoke_iiiiiiiiii;var fa=env.invoke_iii;var ga=env._pthread_self;var ha=env._abort;var ia=env.___setErrNo;var ja=env._llvm_stacksave;var ka=env._sbrk;var la=env._time;var ma=env._emscripten_memcpy_big;var na=env._llvm_stackrestore;var oa=env._sysconf;var pa=0.0;\n// EMSCRIPTEN_START_FUNCS\nfunction ta(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;return b|0}function ua(){return i|0}function va(a){a=a|0;i=a}function wa(a,b){a=a|0;b=b|0;i=a;j=b}function xa(a,b){a=a|0;b=b|0;if(!n){n=a;o=b}}function ya(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function za(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function Aa(a){a=a|0;C=a}function Ba(){return C|0}function Ca(a){a=a|0;a=a+2|0;return (((a>>>0)/3|0)<<2|((a>>>0)%3|0))+-2|0}function Da(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=(c>>>0)%3|0;f=b+(c-h)|0;if((h|0)==(c|0)){h=e;f=b}else{g=b;do{h=d[g>>0]|0;i=h<<8|(d[g+1>>0]|0);j=d[g+2>>0]|0;g=g+3|0;a[e+3>>0]=a[32900+(j&63)>>0]|0;a[e+2>>0]=a[32900+((i<<8|j)>>>6&63)>>0]|0;a[e+1>>0]=a[32900+(i>>>4&63)>>0]|0;a[e>>0]=a[32900+(h>>>2)>>0]|0;e=e+4|0}while((g|0)!=(f|0));h=e}e=b+c|0;if((e|0)==(f|0)){j=h;return j|0}g=d[f>>0]|0;if((e-f|0)==2){e=d[f+1>>0]|0;a[h+2>>0]=a[32900+(e<<2&60)>>0]|0;f=h+3|0;e=(e|g<<8)>>>4}else{f=h+2|0;e=g<<4}a[h+1>>0]=a[32900+(e&63)>>0]|0;a[h>>0]=a[32900+(e>>>6)>>0]|0;j=f;return j|0}function Ea(a){a=a|0;if((a&3|0)==1){a=-1;return a|0}a=a+2|0;a=(a&3)+-2+((a>>>2)*3|0)|0;return a|0}function Fa(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=c&-4;g=b+j|0;if(!j)h=b;else{j=(c+-4|0)>>>2;h=(j*3|0)+3|0;j=(j<<2)+4|0;f=e;i=b;while(1){k=d[32964+((d[i+1>>0]|0)&127)>>0]|0|(d[32964+((d[i>>0]|0)&127)>>0]|0)<<6;l=k<<6|(d[32964+((d[i+2>>0]|0)&127)>>0]|0);a[f+2>>0]=l<<6|(d[32964+((d[i+3>>0]|0)&127)>>0]|0);i=i+4|0;a[f+1>>0]=l>>>2;a[f>>0]=k>>>4;if((i|0)==(g|0))break;else f=f+3|0}e=e+h|0;h=b+j|0}f=b+c|0;if((f|0)==(h|0))return f|0;g=d[32964+((d[h+1>>0]|0)&127)>>0]|0|(d[32964+((d[h>>0]|0)&127)>>0]|0)<<6;if((f-h|0)==3)a[e+1>>0]=(d[32964+((d[h+2>>0]|0)&127)>>0]|0|g<<6)>>>2;a[e>>0]=g>>>4;return f|0}function Ga(a){a=a|0;a=a+2|0;return (((a>>>0)/3|0)<<2|((a>>>0)%3|0))+-2|0}function Ha(a,b,c){a=a|0;b=b|0;c=c|0;return (Da(a,b,c)|0)-c|0}function Ia(a){a=a|0;if((a&3|0)==1){a=-1;return a|0}a=a+2|0;a=(a&3)+-2+((a>>>2)*3|0)|0;return a|0}function Ja(a,b,c){a=a|0;b=b|0;c=c|0;Fa(a,b,c)|0;if((b&3|0)==1){c=-1;return c|0}c=b+2|0;c=(c&3)+-2+((c>>>2)*3|0)|0;return c|0}function Ka(b,c){b=b|0;c=c|0;a[b+3>>0]=c;a[b+2>>0]=c>>>8;a[b+1>>0]=c>>>16;a[b>>0]=c>>>24;return b+4|0}function La(a,b,e){a=a|0;b=b|0;e=e|0;var f=0;c[e>>2]=0;f=a+4|0;if(f>>>0>b>>>0){e=b;return e|0}c[e>>2]=0;b=(d[a>>0]|0)<<8;c[e>>2]=b;b=(d[a+1>>0]|0|b)<<8;c[e>>2]=b;b=(d[a+2>>0]|0|b)<<8;c[e>>2]=b;c[e>>2]=d[a+3>>0]|0|b;e=f;return e|0}function Ma(b,c){b=b|0;c=c|0;a[b>>0]=c&1;return b+1|0}function Na(b,c,d){b=b|0;c=c|0;d=d|0;if((b|0)==(c|0)){d=b;return d|0}a[d>>0]=(a[b>>0]|0)!=0&1;d=b+1|0;return d|0}function Oa(a,b,c){a=a|0;b=b|0;c=c|0;qf(a|0,b|0,c|0)|0;return a+c|0}function Pa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=a+d|0;if(e>>>0>b>>>0){a=b;return a|0}qf(c|0,a|0,d|0)|0;a=e;return a|0}function Qa(a){a=a|0;return 32}function Ra(b,c){b=b|0;c=c|0;var d=0,e=0;e=b;d=e+32|0;do{a[e>>0]=a[c>>0]|0;e=e+1|0;c=c+1|0}while((e|0)<(d|0));return b+32|0}function Sa(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=b+32|0;if(e>>>0>c>>>0){e=c;return e|0}c=b;b=d+32|0;do{a[d>>0]=a[c>>0]|0;d=d+1|0;c=c+1|0}while((d|0)<(b|0));return e|0}function Ta(a){a=a|0;return 64}function Ua(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;d=b;e=c;f=d+32|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));d=b+32|0;e=c+32|0;f=d+32|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));return b+64|0}function Va(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=b+32|0;if(e>>>0>c>>>0)e=c;else{h=d;g=h+32|0;do{a[h>>0]=a[b>>0]|0;h=h+1|0;b=b+1|0}while((h|0)<(g|0))}f=e+32|0;if(f>>>0>c>>>0){h=c;return h|0}h=d+32|0;b=e;g=h+32|0;do{a[h>>0]=a[b>>0]|0;h=h+1|0;b=b+1|0}while((h|0)<(g|0));h=f;return h|0}function Wa(a){a=a|0;return 32}function Xa(b,c){b=b|0;c=c|0;var d=0,e=0;e=b;d=e+32|0;do{a[e>>0]=a[c>>0]|0;e=e+1|0;c=c+1|0}while((e|0)<(d|0));return b+32|0}function Ya(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=b+32|0;if(e>>>0>c>>>0){e=c;return e|0}c=b;b=d+32|0;do{a[d>>0]=a[c>>0]|0;d=d+1|0;c=c+1|0}while((d|0)<(b|0));return e|0}function Za(a){a=a|0;return 96}function _a(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;d=b;e=c;f=d+32|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));d=b+32|0;e=c+32|0;f=d+64|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));return b+96|0}function $a(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=b+32|0;if(e>>>0>c>>>0)e=c;else{h=d;g=h+32|0;do{a[h>>0]=a[b>>0]|0;h=h+1|0;b=b+1|0}while((h|0)<(g|0))}f=e+64|0;if(f>>>0>c>>>0){h=c;return h|0}h=d+32|0;b=e;g=h+64|0;do{a[h>>0]=a[b>>0]|0;h=h+1|0;b=b+1|0}while((h|0)<(g|0));h=f;return h|0}function ab(b,c){b=b|0;c=c|0;a[b+3>>0]=c;a[b+2>>0]=c>>>8;a[b+1>>0]=c>>>16;a[b>>0]=c>>>24;return b+4|0}function bb(a,b,e){a=a|0;b=b|0;e=e|0;var f=0;c[e>>2]=0;f=a+4|0;if(f>>>0>b>>>0){e=b;return e|0}c[e>>2]=0;b=(d[a>>0]|0)<<8;c[e>>2]=b;b=(d[a+1>>0]|0|b)<<8;c[e>>2]=b;b=(d[a+2>>0]|0|b)<<8;c[e>>2]=b;c[e>>2]=d[a+3>>0]|0|b;e=f;return e|0}function cb(b,c){b=b|0;c=c|0;a[b>>0]=(c|0)!=0&1;return b+1|0}function db(b,c,d){b=b|0;c=c|0;d=d|0;if((b|0)==(c|0)){d=b;return d|0}a[d>>0]=(a[b>>0]|0)!=0&1;d=b+1|0;return d|0}function eb(a,b,c){a=a|0;b=b|0;c=c|0;qf(a|0,b|0,c|0)|0;return a+c|0}function fb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=a+d|0;if(e>>>0>b>>>0){a=b;return a|0}qf(c|0,a|0,d|0)|0;a=e;return a|0}function gb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;if(b>>>0>127){f=b;e=1;while(1){e=e+1|0;if(f>>>0>16383)f=f>>>7;else break}}else e=1;if(a>>>0>127){f=1;while(1){f=f+1|0;if(a>>>0>16383)a=a>>>7;else break}}else f=1;if(c>>>0>127){g=c;a=1;while(1){a=a+1|0;if(g>>>0>16383)g=g>>>7;else break}}else a=1;return b+4+c+d+e+f+a|0}function hb(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;a[h>>0]=d;d=h+2|0;a[h+1>>0]=10;if(f>>>0>127){i=f;while(1){j=d+1|0;a[d>>0]=i|128;h=i>>>7;if(i>>>0>16383){d=j;i=h}else{d=j;break}}}else h=f;j=d+1|0;a[d>>0]=h;c[b>>2]=j;f=j+f|0;d=f+1|0;a[f>>0]=16;if(e>>>0>127){i=e;while(1){h=d+1|0;a[d>>0]=i|128;e=i>>>7;if(i>>>0>16383){d=h;i=e}else break}}else h=d;a[h>>0]=e;i=b+4|0;d=h+2|0;a[h+1>>0]=34;if(g>>>0>127)h=d;else{j=g;f=d;j=j&255;b=f+1|0;a[f>>0]=j;c[i>>2]=b;return}while(1){d=h+1|0;a[h>>0]=g|128;e=g>>>7;if(g>>>0>16383){h=d;g=e}else break}f=e&255;b=d+1|0;a[d>>0]=f;c[i>>2]=b;return}function ib(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;k=e+f+(0-g)|0;c[b+8>>2]=e;c[b+12>>2]=f;l=b+1|0;a[l>>0]=0;m=b+16|0;n=b+20|0;o=b+24|0;p=b+28|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;if(f>>>0<g>>>0|(k|0)==(e|0))return;g=e+1|0;a[b>>0]=a[e>>0]|0;if((g|0)==(k|0))return;j=k;i=b+4|0;a:while(1){if((a[g>>0]|0)==10){h=g+1|0;f=h;while(1){if((f|0)==(k|0)){e=k;break}e=f+1|0;if((a[f>>0]|0)>-1)break;else f=e}if((e|0)!=(h|0)){b=e;f=0;do{b=b+-1|0;f=d[b>>0]&127|f<<7}while((b|0)!=(h|0));if(f>>>0>(j-e|0)>>>0){f=44;break}}else f=0;c[m>>2]=e;c[n>>2]=f;f=e+f|0}else f=g;if((f|0)==(k|0)){f=44;break}if((a[f>>0]|0)==16){h=f+1|0;e=h;while(1){if((e|0)==(k|0)){f=k;break}f=e+1|0;if((a[e>>0]|0)>-1)break;else e=f}if((f|0)==(h|0))e=0;else{b=f;e=0;do{b=b+-1|0;e=d[b>>0]&127|e<<7}while((b|0)!=(h|0))}c[i>>2]=e;a[l>>0]=1}if((f|0)==(k|0)){f=44;break}if((a[f>>0]|0)==34){h=f+1|0;f=h;while(1){if((f|0)==(k|0)){e=k;break}e=f+1|0;if((a[f>>0]|0)>-1)break;else f=e}if((e|0)!=(h|0)){b=e;f=0;do{b=b+-1|0;f=d[b>>0]&127|f<<7}while((b|0)!=(h|0));if(f>>>0>(j-e|0)>>>0){f=44;break}}else f=0;c[o>>2]=e;c[p>>2]=f;f=e+f|0}b:do if(!((g|0)!=(f|0)|(f|0)==(k|0))){switch(d[g>>0]&7|0){case 0:{f=g;while(1){if((f|0)==(k|0)){g=k;break}g=f+1|0;if((a[f>>0]|0)>-1)break;else f=g}while(1){if((g|0)==(k|0)){f=44;break a}f=g+1|0;if((a[g>>0]|0)>-1)break b;else g=f}}case 2:break;default:{f=44;break a}}while(1){if((g|0)==(k|0)){f=k;break}f=g+1|0;if((a[g>>0]|0)>-1)break;else g=f}g=f;while(1){if((g|0)==(k|0)){e=k;break}e=g+1|0;if((a[g>>0]|0)>-1)break;else g=e}if((e|0)!=(f|0)){b=e;g=0;do{b=b+-1|0;g=d[b>>0]&127|g<<7}while((b|0)!=(f|0));f=g;if(f>>>0>(j-e|0)>>>0){f=44;break a}else f=e+f|0}}while(0);if((f|0)==(k|0)){f=44;break}else g=f}if((f|0)==44)return}function jb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if(a>>>0>127){f=a;e=1;while(1){e=e+1|0;if(f>>>0>16383)f=f>>>7;else break}}else e=1;if(b>>>0>127){g=b;f=1;while(1){f=f+1|0;if(g>>>0>16383)g=g>>>7;else break}}else f=1;if(c>>>0>127){h=c;g=1;while(1){g=g+1|0;if(h>>>0>16383)h=h>>>7;else break}}else g=1;if(d>>>0>127){i=d;h=1;while(1){h=h+1|0;if(i>>>0>16383)i=i>>>7;else break}}else h=1;return a+5+b+c+d+e+f+g+h|0}function kb(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;a[i>>0]=d;l=b+8|0;d=i+2|0;a[i+1>>0]=10;if(g>>>0>127){j=g;while(1){k=d+1|0;a[d>>0]=j|128;i=j>>>7;if(j>>>0>16383){d=k;j=i}else{d=k;break}}}else i=g;k=d+1|0;a[d>>0]=i;c[l>>2]=k;g=k+g|0;l=b+4|0;d=g+1|0;a[g>>0]=18;if(f>>>0>127){j=f;while(1){k=d+1|0;a[d>>0]=j|128;i=j>>>7;if(j>>>0>16383){d=k;j=i}else{d=k;break}}}else i=f;g=d+1|0;a[d>>0]=i;c[l>>2]=g;f=g+f|0;d=f+1|0;a[f>>0]=26;if(e>>>0>127){j=e;while(1){k=d+1|0;a[d>>0]=j|128;i=j>>>7;if(j>>>0>16383){d=k;j=i}else{d=k;break}}}else i=e;k=d+1|0;a[d>>0]=i;c[b>>2]=k;e=k+e|0;k=b+12|0;d=e+1|0;a[e>>0]=34;if(h>>>0>127)j=d;else{f=h;e=d;f=f&255;b=e+1|0;a[e>>0]=f;c[k>>2]=b;return}while(1){d=j+1|0;a[j>>0]=h|128;i=h>>>7;if(h>>>0>16383){j=d;h=i}else break}e=i&255;b=d+1|0;a[d>>0]=e;c[k>>2]=b;return}function lb(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;j=e+f|0;k=b+20|0;l=b+24|0;m=b+4|0;n=b+8|0;o=b+12|0;p=b+16|0;q=b+28|0;r=b+32|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[m+20>>2]=0;c[m+24>>2]=0;c[m+28>>2]=0;if(!f)return;a[b>>0]=a[e>>0]|0;if((f|0)==1)return;i=j;b=e+1|0;a:while(1){if((a[b>>0]|0)==10){h=b+1|0;f=h;while(1){if((f|0)==(j|0)){e=j;break}e=f+1|0;if((a[f>>0]|0)>-1)break;else f=e}if((e|0)!=(h|0)){g=e;f=0;do{g=g+-1|0;f=d[g>>0]&127|f<<7}while((g|0)!=(h|0));if(f>>>0>(i-e|0)>>>0){f=54;break}}else f=0;c[k>>2]=e;c[l>>2]=f;f=e+f|0}else f=b;if((f|0)==(j|0)){f=54;break}if((a[f>>0]|0)==18){h=f+1|0;f=h;while(1){if((f|0)==(j|0)){e=j;break}e=f+1|0;if((a[f>>0]|0)>-1)break;else f=e}if((e|0)!=(h|0)){g=e;f=0;do{g=g+-1|0;f=d[g>>0]&127|f<<7}while((g|0)!=(h|0));if(f>>>0>(i-e|0)>>>0){f=54;break}}else f=0;c[o>>2]=e;c[p>>2]=f;f=e+f|0}if((f|0)==(j|0)){f=54;break}if((a[f>>0]|0)==26){h=f+1|0;f=h;while(1){if((f|0)==(j|0)){e=j;break}e=f+1|0;if((a[f>>0]|0)>-1)break;else f=e}if((e|0)!=(h|0)){g=e;f=0;do{g=g+-1|0;f=d[g>>0]&127|f<<7}while((g|0)!=(h|0));if(f>>>0>(i-e|0)>>>0){f=54;break}}else f=0;c[m>>2]=e;c[n>>2]=f;f=e+f|0}if((f|0)==(j|0)){f=54;break}if((a[f>>0]|0)==34){h=f+1|0;f=h;while(1){if((f|0)==(j|0)){e=j;break}e=f+1|0;if((a[f>>0]|0)>-1)break;else f=e}if((e|0)!=(h|0)){g=e;f=0;do{g=g+-1|0;f=d[g>>0]&127|f<<7}while((g|0)!=(h|0));if(f>>>0>(i-e|0)>>>0){f=54;break}}else f=0;c[q>>2]=e;c[r>>2]=f;f=e+f|0}b:do if(!((b|0)!=(f|0)|(f|0)==(j|0))){switch(d[b>>0]&7|0){case 0:{f=b;while(1){if((f|0)==(j|0)){b=j;break}b=f+1|0;if((a[f>>0]|0)>-1)break;else f=b}while(1){if((b|0)==(j|0)){f=54;break a}f=b+1|0;if((a[b>>0]|0)>-1)break b;else b=f}}case 2:break;default:{f=54;break a}}while(1){if((b|0)==(j|0)){f=j;break}f=b+1|0;if((a[b>>0]|0)>-1)break;else b=f}b=f;while(1){if((b|0)==(j|0)){e=j;break}e=b+1|0;if((a[b>>0]|0)>-1)break;else b=e}if((e|0)!=(f|0)){g=e;b=0;do{g=g+-1|0;b=d[g>>0]&127|b<<7}while((g|0)!=(f|0));f=b;if(f>>>0>(i-e|0)>>>0){f=54;break a}else f=e+f|0}}while(0);if((f|0)==(j|0)){f=54;break}else b=f}if((f|0)==54)return}function mb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;if(a>>>0>127){e=1;while(1){e=e+1|0;if(a>>>0>16383)a=a>>>7;else break}}else e=1;if(b>>>0>127){f=b;a=1;while(1){a=a+1|0;if(f>>>0>16383)f=f>>>7;else break}}else a=1;return b+3+c+d+e+a|0}function nb(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;a[f>>0]=b;h=f+2|0;a[f+1>>0]=8;if(d>>>0>127)while(1){i=h+1|0;a[h>>0]=d|128;b=d>>>7;if(d>>>0>16383){h=i;d=b}else{h=i;break}}else b=d;a[h>>0]=b;b=h+2|0;a[h+1>>0]=18;if(e>>>0>127){d=e;while(1){i=b+1|0;a[b>>0]=d|128;h=d>>>7;if(d>>>0>16383){b=i;d=h}else{b=i;break}}}else h=e;i=b+1|0;a[b>>0]=h;c[g>>2]=i;return i+e-f|0}function ob(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=g+f|0;l=b+e+(0-k)|0;m=h+4|0;c[m>>2]=0;n=h+12|0;c[n>>2]=0;o=h+16|0;c[o>>2]=0;if(k>>>0>e>>>0|(l|0)==(b|0))return;g=b+1|0;a[h>>0]=a[b>>0]|0;a:do if((g|0)==(l|0))f=0;else{k=l;f=0;do{if((a[g>>0]|0)==8){i=g+1|0;f=i;while(1){if((f|0)==(l|0)){e=l;break}e=f+1|0;if((a[f>>0]|0)>-1)break;else f=e}if((e|0)==(i|0))f=0;else{b=e;f=0;do{b=b+-1|0;f=d[b>>0]&127|f<<7}while((b|0)!=(i|0))}c[m>>2]=f;f=1}else e=g;if((e|0)==(l|0))break a;if((a[e>>0]|0)==18){j=e+1|0;e=j;while(1){if((e|0)==(l|0)){b=l;break}b=e+1|0;if((a[e>>0]|0)>-1)break;else e=b}if((b|0)!=(j|0)){i=b;e=0;do{i=i+-1|0;e=d[i>>0]&127|e<<7}while((i|0)!=(j|0));if(e>>>0>(k-b|0)>>>0)break a}else e=0;c[n>>2]=b;c[o>>2]=e;e=b+e|0}b:do if(!((g|0)!=(e|0)|(e|0)==(l|0))){switch(d[g>>0]&7|0){case 0:{while(1){if((g|0)==(l|0)){e=l;break}e=g+1|0;if((a[g>>0]|0)>-1)break;else g=e}while(1){if((e|0)==(l|0))break a;g=e+1|0;if((a[e>>0]|0)>-1)break b;else e=g}}case 2:break;default:break a}while(1){if((g|0)==(l|0)){g=l;break}e=g+1|0;if((a[g>>0]|0)>-1){g=e;break}else g=e}e=g;while(1){if((e|0)==(l|0)){b=l;break}b=e+1|0;if((a[e>>0]|0)>-1)break;else e=b}if((b|0)!=(g|0)){i=b;e=0;do{i=i+-1|0;e=d[i>>0]&127|e<<7}while((i|0)!=(g|0));g=e;if(g>>>0>(k-b|0)>>>0)break a;else g=b+g|0}}else g=e;while(0)}while((g|0)!=(l|0))}while(0);c[h+8>>2]=f&255;return}function pb(b){b=b|0;Wc(b,648,664);c[b+3216>>2]=0;a[b+3220>>0]=0;return}function qb(a){a=a|0;return 64}function rb(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;n=i;i=i+224|0;k=n+160|0;l=n+96|0;m=n;if(h>>>0<64){c[b+3216>>2]=1;b=-1;i=n;return b|0}else{Fb(g,k);Fb(g+32|0,l);d=d+96|0;a[b+3220>>0]=0;g=b+3221|0;h=d;j=g+32|0;do{a[g>>0]=a[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(j|0));g=b+3253|0;h=k;j=g+32|0;do{a[g>>0]=a[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(j|0));g=b+3285|0;h=f;j=g+32|0;do{a[g>>0]=a[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(j|0));Gb(d,f,m);Gb(k,e,m+32|0);Gb(k,f,m+64|0);Yc(b,m,96,l);Cd(k,64);Cd(l,64);Cd(m,96);b=0;i=n;return b|0}return 0}function sb(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+208|0;o=s+32|0;p=s;q=s+168|0;r=s+72|0;lb(o,f,g);h=(e|0)!=0;g=c[o+4>>2]|0;j=(g|0)!=0;f=h|j;if(g)f=f&(c[o+8>>2]|0)==32;m=c[o+28>>2]|0;l=c[o+12>>2]|0;n=c[o+20>>2]|0;if(!(f&(m|0)!=0&(l|0)!=0&(c[o+16>>2]|0)==32&(n|0)!=0&(c[o+24>>2]|0)==32)){c[b+3216>>2]=4;b=-1;i=s;return b|0}if(h&j?ff(e,g,32)|0:0){c[b+3216>>2]=6;b=-1;i=s;return b|0}k=b+3221|0;e=k;h=e+32|0;do{a[e>>0]=a[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));j=b+3253|0;e=j;g=l;h=e+32|0;do{a[e>>0]=a[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));f=b+3285|0;e=f;g=n;h=e+32|0;do{a[e>>0]=a[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));o=c[o+32>>2]|0;g=c[b+4>>2]|0;ib(p,m,o,qa[c[c[g>>2]>>2]&1](g)|0);g=c[p+16>>2]|0;if((g|0)!=0?(c[p+20>>2]|0)==32:0){e=q;h=e+32|0;do{a[e>>0]=a[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));g=jd(d,f)|0;if(!g){c[b+3216>>2]=6;g=-1}else{g=g+5|0;Gb(g,k,r);Gb(d+96|0,j,r+32|0);Gb(g,j,r+64|0);Xc(b,r,96,q);Cd(r,96);g=0}}else{c[b+3216>>2]=4;g=-1}b=g;i=s;return b|0}function tb(a){a=a|0;return 32}function ub(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+96|0;h=j;if(e>>>0<32){c[b+3216>>2]=2;h=-1;i=j;return h|0}else{e=h;f=b+3221|0;g=e+32|0;do{a[e>>0]=a[f>>0]|0;e=e+1|0;f=f+1|0}while((e|0)<(g|0));e=h+32|0;f=b+3253|0;g=e+32|0;do{a[e>>0]=a[f>>0]|0;e=e+1|0;f=f+1|0}while((e|0)<(g|0));e=h+64|0;f=b+3285|0;g=e+32|0;do{a[e>>0]=a[f>>0]|0;e=e+1|0;f=f+1|0}while((e|0)<(g|0));Nb(h,96,d);h=32;i=j;return h|0}return 0}function vb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+48|0;k=l;lb(k,d,e);j=(b|0)!=0;f=c[k+4>>2]|0;e=j|(f|0)!=0;h=(f|0)==0;if(!h)e=e&(c[k+8>>2]|0)==32;d=c[k+12>>2]|0;g=c[k+20>>2]|0;if(!(e&(c[k+28>>2]|0)!=0&(d|0)!=0&(c[k+16>>2]|0)==32&(g|0)!=0&(c[k+24>>2]|0)==32)){a=0;i=l;return a|0}if(h)e=1;else e=(ff(f,a+3221|0,32)|0)==0;if(j){if(!e){a=0;i=l;return a|0}if(ff(b,a+3221|0,32)|0){a=0;i=l;return a|0}}else if(!e){a=0;i=l;return a|0}if(ff(d,a+3253|0,32)|0){a=0;i=l;return a|0}a=(ff(g,a+3285|0,32)|0)==0;i=l;return a|0}function wb(a){a=a|0;return d[a+3220>>0]|0|0}function xb(b,c){b=b|0;c=c|0;c=dd(b,c)|0;if(a[b+3220>>0]|0){b=c;return b|0}b=jb(32,32,32,c)|0;return b|0}function yb(a){a=a|0;return ed(a)|0}function zb(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;n=o;k=dd(b,e)|0;l=b+3220|0;if(!(a[l>>0]|0))k=jb(32,32,32,k)|0;if(k>>>0>j>>>0){c[b+3216>>2]=2;b=-1;i=o;return b|0}m=dd(b,e)|0;if(!(a[l>>0]|0)){kb(n,3,32,32,32,m,h);h=c[n+8>>2]|0;k=b+3285|0;j=h+32|0;do{a[h>>0]=a[k>>0]|0;h=h+1|0;k=k+1|0}while((h|0)<(j|0));h=c[n>>2]|0;k=b+3221|0;j=h+32|0;do{a[h>>0]=a[k>>0]|0;h=h+1|0;k=k+1|0}while((h|0)<(j|0));h=c[n+4>>2]|0;k=b+3253|0;j=h+32|0;do{a[h>>0]=a[k>>0]|0;h=h+1|0;k=k+1|0}while((h|0)<(j|0));h=c[n+12>>2]|0}h=fd(b,d,e,f,g,h,m)|0;if((h|0)!=-1){b=h;i=o;return b|0}g=b+8|0;c[b+3216>>2]=c[g>>2];c[g>>2]=0;b=-1;i=o;return b|0}function Ab(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+48|0;f=g;do if((b|0)!=1){lb(f,d,e);d=c[f+28>>2]|0;if(d|0){e=c[f+32>>2]|0;break}c[a+3216>>2]=4;a=-1;i=g;return a|0}while(0);d=gd(a,d,e)|0;if((d|0)!=-1){a=d;i=g;return a|0}f=a+8|0;c[a+3216>>2]=c[f>>2];c[f>>2]=0;a=-1;i=g;return a|0}function Bb(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0;k=i;i=i+48|0;j=k;do if((d|0)!=1){lb(j,e,f);e=c[j+28>>2]|0;if(e|0){f=c[j+32>>2]|0;break}c[b+3216>>2]=4;b=-1;i=k;return b|0}while(0);e=hd(b,e,f,g,h)|0;if((e|0)==-1){g=b+8|0;c[b+3216>>2]=c[g>>2];c[g>>2]=0;b=-1;i=k;return b|0}else{a[b+3220>>0]=1;b=e;i=k;return b|0}return 0}function Cb(a){a=a|0;var b=0;b=(Qa(a+3221|0)|0)+5|0;b=b+(Qa(a+3253|0)|0)|0;b=b+(Qa(a+3285|0)|0)|0;return b+(Zc(a)|0)|0}function Db(b,c){b=b|0;c=c|0;b=Ka(b,1)|0;return _c(Ra(Ra(Ra(Ma(b,(a[c+3220>>0]|0)!=0)|0,c+3221|0)|0,c+3253|0)|0,c+3285|0)|0,c)|0}function Eb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g;f=La(a,b,e)|0;a=c[e>>2]|0;a:do if((a|0)<1){switch(a|0){case -2147483647:break;default:{e=3;break a}}a=1;e=4}else switch(a|0){case 1:{a=0;e=4;break}default:e=3}while(0);if((e|0)==3){c[d+3216>>2]=9;d=b;i=g;return d|0}else if((e|0)==4){d=$c(Sa(Sa(Sa(Na(f,b,d+3220|0)|0,b,d+3221|0)|0,b,d+3253|0)|0,b,d+3285|0)|0,b,d,a)|0;i=g;return d|0}return 0}function Fb(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;e=c+32|0;f=e;d=f+32|0;do{a[f>>0]=a[b>>0]|0;f=f+1|0;b=b+1|0}while((f|0)<(d|0));af(c,e,33122)|0;return}function Gb(a,b,c){a=a|0;b=b|0;c=c|0;af(c,a+32|0,b)|0;return}function Hb(a,b){a=a|0;b=b|0;Xd(b,b+32|0,a);return}function Ib(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ae(d,b,c,a,a+32|0);return}function Jb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ($d(d,b,c,a)|0)!=0|0}function Kb(a){a=a|0;return a+16-(a&15)|0}function Lb(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+256|0;E=F;D=F+240|0;Ze(b,E,256);B=D;y=B+16|0;do{a[B>>0]=a[c>>0]|0;B=B+1|0;c=c+1|0}while((B|0)<(y|0));if(f>>>0>15){h=D+1|0;p=D+2|0;q=D+3|0;r=D+4|0;s=D+5|0;t=D+6|0;u=D+7|0;v=D+8|0;w=D+9|0;j=D+10|0;k=D+11|0;l=D+12|0;m=D+13|0;n=D+14|0;o=D+15|0;z=f+-16|0;A=z&-16;C=A+16|0;x=g+C|0;b=f;f=e;while(1){a[D>>0]=a[D>>0]^a[f>>0];a[h>>0]=a[h>>0]^a[f+1>>0];a[p>>0]=a[p>>0]^a[f+2>>0];a[q>>0]=a[q>>0]^a[f+3>>0];a[r>>0]=a[r>>0]^a[f+4>>0];a[s>>0]=a[s>>0]^a[f+5>>0];a[t>>0]=a[t>>0]^a[f+6>>0];a[u>>0]=a[u>>0]^a[f+7>>0];a[v>>0]=a[v>>0]^a[f+8>>0];a[w>>0]=a[w>>0]^a[f+9>>0];a[j>>0]=a[j>>0]^a[f+10>>0];a[k>>0]=a[k>>0]^a[f+11>>0];a[l>>0]=a[l>>0]^a[f+12>>0];a[m>>0]=a[m>>0]^a[f+13>>0];a[n>>0]=a[n>>0]^a[f+14>>0];a[o>>0]=a[o>>0]^a[f+15>>0];Xe(D,g,E,256);B=D;c=g;y=B+16|0;do{a[B>>0]=a[c>>0]|0;B=B+1|0;c=c+1|0}while((B|0)<(y|0));b=b+-16|0;if(b>>>0<=15)break;else{f=f+16|0;g=g+16|0}}g=x;c=z-A|0;e=e+C|0}else c=f;if(c){b=0;do{C=D+b|0;a[C>>0]=a[C>>0]^a[e+b>>0];b=b+1|0}while((b|0)!=(c|0));if(c>>>0<16)e=c;else{Xe(D,g,E,256);Cd(E,240);Cd(D,16);i=F;return}}else e=0;b=16-c|0;do{C=D+e|0;a[C>>0]=(d[C>>0]|0)^b;e=e+1|0}while((e|0)!=16);Xe(D,g,E,256);Cd(E,240);Cd(D,16);i=F;return}function Mb(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+272|0;B=C;z=C+256|0;A=C+240|0;Ze(b,B,256);y=z;x=y+16|0;do{a[y>>0]=a[c>>0]|0;y=y+1|0;c=c+1|0}while((y|0)<(x|0));if(!e){Cd(B,240);Cd(z,16);Cd(A,16);B=e+-1|0;f=f+B|0;f=a[f>>0]|0;f=f&255;B=f>>>0>e>>>0;f=e-f|0;f=B?-1:f;i=C;return f|0}b=z+1|0;n=z+2|0;p=z+3|0;q=z+4|0;r=z+5|0;s=z+6|0;t=z+7|0;u=z+8|0;v=z+9|0;g=z+10|0;h=z+11|0;j=z+12|0;k=z+13|0;l=z+14|0;m=z+15|0;w=0;do{o=d+w|0;y=A;c=o;x=y+16|0;do{a[y>>0]=a[c>>0]|0;y=y+1|0;c=c+1|0}while((y|0)<(x|0));y=f+w|0;$e(o,y,B,256);a[y>>0]=a[y>>0]^a[z>>0];c=y+1|0;a[c>>0]=a[c>>0]^a[b>>0];c=y+2|0;a[c>>0]=a[c>>0]^a[n>>0];c=y+3|0;a[c>>0]=a[c>>0]^a[p>>0];c=y+4|0;a[c>>0]=a[c>>0]^a[q>>0];c=y+5|0;a[c>>0]=a[c>>0]^a[r>>0];c=y+6|0;a[c>>0]=a[c>>0]^a[s>>0];c=y+7|0;a[c>>0]=a[c>>0]^a[t>>0];c=y+8|0;a[c>>0]=a[c>>0]^a[u>>0];c=y+9|0;a[c>>0]=a[c>>0]^a[v>>0];c=y+10|0;a[c>>0]=a[c>>0]^a[g>>0];c=y+11|0;a[c>>0]=a[c>>0]^a[h>>0];c=y+12|0;a[c>>0]=a[c>>0]^a[j>>0];c=y+13|0;a[c>>0]=a[c>>0]^a[k>>0];c=y+14|0;a[c>>0]=a[c>>0]^a[l>>0];y=y+15|0;a[y>>0]=a[y>>0]^a[m>>0];y=z;c=A;x=y+16|0;do{a[y>>0]=a[c>>0]|0;y=y+1|0;c=c+1|0}while((y|0)<(x|0));w=w+16|0}while(w>>>0<e>>>0);Cd(B,240);Cd(z,16);Cd(A,16);B=e+-1|0;f=f+B|0;f=a[f>>0]|0;f=f&255;B=f>>>0>e>>>0;f=e-f|0;f=B?-1:f;i=C;return f|0}function Nb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=i;i=i+112|0;e=d;Ue(e);Ve(e,a,b);We(e,c);Cd(e,112);i=d;return}function Ob(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+400|0;n=o+224|0;l=o+112|0;m=o+336|0;k=o;h=m;j=h+64|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(j|0));if(c>>>0>64){Ue(n);Ve(n,b,c);We(n,m)}else qf(m|0,b|0,c|0)|0;h=n;b=m;j=h+64|0;do{a[h>>0]=a[b>>0]|0;h=h+1|0;b=b+1|0}while((h|0)<(j|0));b=0;do{j=n+b|0;a[j>>0]=(d[j>>0]|0)^54;b=b+1|0}while((b|0)!=64);Ue(k);Ve(k,n,64);Cd(n,64);Ve(k,e,f);h=n;b=m;j=h+64|0;do{a[h>>0]=a[b>>0]|0;h=h+1|0;b=b+1|0}while((h|0)<(j|0));b=0;do{f=n+b|0;a[f>>0]=(d[f>>0]|0)^92;b=b+1|0}while((b|0)!=64);We(k,n+64|0);Ue(l);Ve(l,n,96);We(l,g);Cd(l,112);Cd(n,96);Cd(m,64);Cd(k,112);i=o;return}function Pb(b,c,e,f,g,h,j,k){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+432|0;q=v+112|0;t=v+328|0;p=v;r=v+264|0;u=v+232|0;s=v+224|0;a[s>>0]=1;n=(e|0)==0;l=n?32:f;f=n?36088:e;n=r;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));if(l>>>0>64){Ue(q);Ve(q,f,l);We(q,r)}else qf(r|0,f|0,l|0)|0;n=q;f=r;o=n+64|0;do{a[n>>0]=a[f>>0]|0;n=n+1|0;f=f+1|0}while((n|0)<(o|0));f=0;do{o=q+f|0;a[o>>0]=(d[o>>0]|0)^54;f=f+1|0}while((f|0)!=64);Ue(p);Ve(p,q,64);Cd(q,64);Ve(p,b,c);n=t;f=r;o=n+64|0;do{a[n>>0]=a[f>>0]|0;n=n+1|0;f=f+1|0}while((n|0)<(o|0));f=0;do{o=t+f|0;a[o>>0]=(d[o>>0]|0)^92;f=f+1|0}while((f|0)!=64);m=t+64|0;We(p,m);Ue(q);Ve(q,t,96);We(q,u);Cd(q,112);Cd(t,96);n=r+32|0;o=n+32|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));n=r;f=u;o=n+32|0;do{a[n>>0]=a[f>>0]|0;n=n+1|0;f=f+1|0}while((n|0)<(o|0));n=q;f=r;o=n+64|0;do{a[n>>0]=a[f>>0]|0;n=n+1|0;f=f+1|0}while((n|0)<(o|0));f=0;do{o=q+f|0;a[o>>0]=(d[o>>0]|0)^54;f=f+1|0}while((f|0)!=64);Ue(p);Ve(p,q,64);Cd(q,64);Ve(p,g,h);Ve(p,s,1);n=t;f=r;o=n+64|0;do{a[n>>0]=a[f>>0]|0;n=n+1|0;f=f+1|0}while((n|0)<(o|0));f=0;do{o=t+f|0;a[o>>0]=(d[o>>0]|0)^92;f=f+1|0}while((f|0)!=64);We(p,m);Ue(q);Ve(q,t,96);We(q,u);Cd(q,112);Cd(t,96);if(k>>>0<=32){qf(j|0,u|0,k|0)|0;Cd(p,112);Cd(r,64);Cd(u,32);i=v;return}l=k+-33&-32;b=l+32|0;e=j;c=k;do{n=e;f=u;o=n+32|0;do{a[n>>0]=a[f>>0]|0;n=n+1|0;f=f+1|0}while((n|0)<(o|0));e=e+32|0;a[s>>0]=(a[s>>0]|0)+1<<24>>24;n=q;f=r;o=n+64|0;do{a[n>>0]=a[f>>0]|0;n=n+1|0;f=f+1|0}while((n|0)<(o|0));f=0;do{o=q+f|0;a[o>>0]=(d[o>>0]|0)^54;f=f+1|0}while((f|0)!=64);Ue(p);Ve(p,q,64);Cd(q,64);Ve(p,u,32);Ve(p,g,h);Ve(p,s,1);n=t;f=r;o=n+64|0;do{a[n>>0]=a[f>>0]|0;n=n+1|0;f=f+1|0}while((n|0)<(o|0));f=0;do{o=t+f|0;a[o>>0]=(d[o>>0]|0)^92;f=f+1|0}while((f|0)!=64);c=c+-32|0;We(p,m);Ue(q);Ve(q,t,96);We(q,u);Cd(q,112);Cd(t,96)}while(c>>>0>32);j=j+b|0;k=k+-32-l|0;qf(j|0,u|0,k|0)|0;Cd(p,112);Cd(r,64);Cd(u,32);i=v;return}function Qb(b,c,d){b=b|0;c=c|0;d=d|0;if(b|0)a[b>>0]=2;if(c|0)a[c>>0]=2;if(!d)return;a[d>>0]=1;return}function Rb(){return -1}function Sb(a){a=a|0;return he(c[a+7368>>2]|0)|0}function Tb(a){a=a|0;return he(c[a+3216>>2]|0)|0}function Ub(a){a=a|0;return he(c[a>>2]|0)|0}function Vb(){return 7372}function Wb(){return 3320}function Xb(){return 4}function Yb(a){a=a|0;Cd(a,7372);id(a);return a|0}function Zb(a){a=a|0;Cd(a,3320);pb(a);return a|0}function _b(a){a=a|0;Cd(a,4);Sc(a);return a|0}function $b(a){a=a|0;Cd(a,7372);id(a);return 7372}function ac(a){a=a|0;Cd(a,3320);pb(a);return 3320}function bc(a){a=a|0;Cd(a,4);Sc(a);return 4}function cc(a){a=a|0;return ie(xd(a)|0)|0}function dc(a){a=a|0;return ie(Cb(a)|0)|0}function ec(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=xd(a)|0;if((ie(g)|0)>>>0>f>>>0){c[a+7368>>2]=2;f=-1;return f|0}else{yd(je(e,g)|0,a)|0;f=ke(b,d,e,g)|0;return f|0}return 0}function fc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=Cb(a)|0;if((ie(g)|0)>>>0>f>>>0){c[a+3216>>2]=2;a=-1;return a|0}else{Db(je(e,g)|0,a)|0;a=ke(b,d,e,g)|0;return a|0}return 0}function gc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=a+7368|0;b=le(b,d,e,f,g)|0;if((b|0)==-1){f=-1;return f|0}d=e+b|0;if((d|0)==(zd(e,d+1|0,a)|0))return f|0;if(c[g>>2]|0){f=-1;return f|0}c[g>>2]=10;f=-1;return f|0}function hc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=a+3216|0;b=le(b,d,e,f,g)|0;if((b|0)==-1){a=-1;return a|0}d=e+b|0;if((d|0)==(Eb(e,d+1|0,a)|0)){a=f;return a|0}if(c[g>>2]|0){a=-1;return a|0}c[g>>2]=10;a=-1;return a|0}function ic(a){a=a|0;return ld(a)|0}function jc(a,b,c){a=a|0;b=b|0;c=c|0;a=md(a,b,c)|0;Cd(b,c);return a|0}function kc(a){a=a|0;return nd(a)|0}function lc(a,b,c){a=a|0;b=b|0;c=c|0;return od(a,b,c)|0}function mc(a){a=a|0;return Ca(pd(a)|0)|0}function nc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=pd(a)|0;if((Ca(g)|0)>>>0>f>>>0){c[a+7368>>2]=2;f=-1;return f|0}else{h=0-g|0;qd(a,b,d,e+(Ca(g)|0)+h|0,g)|0;f=Ca(g)|0;Da(e+f+h|0,g,e)|0;return f|0}return 0}function oc(a){a=a|0;return rd(a)|0}function pc(a,b,c){a=a|0;b=b|0;c=c|0;return sd(a,b,c)|0}function qc(a){a=a|0;return td(a)|0}function rc(a){a=a|0;return ud(a)|0}function sc(a,b){a=a|0;b=b|0;return vd(a,b)|0}function tc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=wd(a,b,c,d)|0;Cd(c,d);return b|0}function uc(a){a=a|0;return qb(a)|0}function vc(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0;m=i;i=i+64|0;k=m+32|0;l=m;if((Ea(e)|0)==32?(Ea(g)|0)==32:0){Fa(d,e,k)|0;Fa(f,g,l)|0;g=rb(a,b,k,l,h,j)|0;Cd(h,j);i=m;return g|0}c[a+3216>>2]=7;g=-1;i=m;return g|0}function wc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=Ea(e)|0;if((f|0)==-1){c[a+3216>>2]=7;a=-1;return a|0}else{Fa(d,e,d)|0;a=sb(a,b,0,d,f)|0;return a|0}return 0}function xc(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;j=i;i=i+32|0;h=j;if((Ea(e)|0)!=32){c[a+3216>>2]=7;a=-1;i=j;return a|0}Fa(d,e,h)|0;d=Ea(g)|0;if((d|0)==-1){c[a+3216>>2]=7;d=-1}else{Fa(f,g,f)|0;d=sb(a,b,h,f,d)|0}a=d;i=j;return a|0}function yc(a){a=a|0;return Ca(tb(a)|0)|0}function zc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=tb(a)|0;if((Ca(e)|0)>>>0>d>>>0){c[a+3216>>2]=2;a=-1;return a|0}d=0-e|0;if((ub(a,b+(Ca(e)|0)+d|0,e)|0)==-1){a=-1;return a|0}a=Ca(e)|0;Da(b+a+d|0,e,b)|0;return a|0}function Ac(a){a=a|0;return d[a+3220>>0]|0|0}function Bc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=Ea(d)|0;if((e|0)==-1){c[a+3216>>2]=7;a=-1;return a|0}else{Fa(b,d,b)|0;a=(vb(a,0,b,e)|0)&1;return a|0}return 0}function Cc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+32|0;g=h;if((Ea(d)|0)!=32){c[a+3216>>2]=7;a=-1;i=h;return a|0}Fa(b,d,g)|0;b=Ea(f)|0;if((b|0)==-1){c[a+3216>>2]=7;b=-1}else{Fa(e,f,e)|0;b=(vb(a,g,e,b)|0)&1}a=b;i=h;return a|0}function Dc(a,b){a=a|0;b=b|0;b=kd(a,b+3285|0)|0;if((b|0)!=-1)return b|0;c[a+7368>>2]=6;return b|0}function Ec(a){a=a|0;return wb(a)|0}function Fc(a){a=a|0;return yb(a)|0}function Gc(a,b){a=a|0;b=b|0;return Ca(xb(a,b)|0)|0}function Hc(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;i=xb(a,d)|0;if((Ca(i)|0)>>>0>h>>>0){c[a+3216>>2]=2;a=-1;return a|0}h=0-i|0;a=zb(a,b,d,e,f,g+(Ca(i)|0)+h|0,i)|0;Cd(e,f);if((a|0)==-1){a=-1;return a|0}a=Ca(i)|0;Da(g+a+h|0,i,g)|0;return a|0}function Ic(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=Ea(e)|0;if((f|0)==-1){c[a+3216>>2]=7;a=-1;return a|0}else{Fa(d,e,d)|0;a=Ab(a,b,d,f)|0;return a|0}return 0}function Jc(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=Ea(e)|0;if((h|0)==-1){c[a+3216>>2]=7;a=-1;return a|0}else{Fa(d,e,d)|0;a=Bb(a,b,d,h,f,g)|0;return a|0}return 0}function Kc(a){a=a|0;return Ca(Tc(a)|0)|0}function Lc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=Tc(a)|0;if((Ca(g)|0)>>>0>f>>>0){c[a>>2]=2;a=-1;return a|0}f=0-g|0;if((Uc(a,b,d,e+(Ca(g)|0)+f|0,g)|0)==-1){a=-1;return a|0}a=Ca(g)|0;Da(e+a+f|0,g,e)|0;return a|0}function Mc(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0;k=i;i=i+32|0;j=k;if((Ea(d)|0)!=32){c[a>>2]=7;j=-1;i=k;return j|0}Fa(b,d,j)|0;b=Ea(h)|0;if((b|0)==-1){c[a>>2]=7;b=-1}else{Fa(g,h,g)|0;b=Vc(a,j,e,f,g,b)|0}j=b;i=k;return j|0}function Nc(a){a=a|0;return 8}function Oc(a,b){a=a|0;b=b|0;return Kb(b)|0}function Pc(b,d,e,f,g,h,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=i;i=i+192|0;m=p+112|0;n=p+32|0;o=p;if((Kb(g)|0)>>>0<j>>>0){g=-1;i=p;return g|0}Pb(d,e,0,0,c[b+4>>2]|0,c[b+8>>2]|0,m,80);j=n;d=m;e=j+32|0;do{a[j>>0]=a[d>>0]|0;j=j+1|0;d=d+1|0}while((j|0)<(e|0));b=n+32|0;j=b;d=m+32|0;e=j+32|0;do{a[j>>0]=a[d>>0]|0;j=j+1|0;d=d+1|0}while((j|0)<(e|0));j=n+64|0;d=m+64|0;e=j+16|0;do{a[j>>0]=a[d>>0]|0;j=j+1|0;d=d+1|0}while((j|0)<(e|0));Cd(m,80);Lb(n,n+64|0,f,g,h);Ob(b,32,k,l+-8|0,o);f=o;o=c[f>>2]|0;f=c[f+4>>2]|0;g=k+l+-8|0;k=g;a[k>>0]=o;a[k+1>>0]=o>>8;a[k+2>>0]=o>>16;a[k+3>>0]=o>>24;g=g+4|0;a[g>>0]=f;a[g+1>>0]=f>>8;a[g+2>>0]=f>>16;a[g+3>>0]=f>>24;Cd(n,80);g=l;i=p;return g|0}function Qc(a,b){a=a|0;b=b|0;return b|0}function Rc(b,d,e,f,g,h,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=i;i=i+192|0;m=p+112|0;n=p+32|0;o=p;Pb(d,e,0,0,c[b+4>>2]|0,c[b+8>>2]|0,m,80);b=n;d=m;e=b+32|0;do{a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}while((b|0)<(e|0));l=n+32|0;b=l;d=m+32|0;e=b+32|0;do{a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}while((b|0)<(e|0));b=n+64|0;d=m+64|0;e=b+16|0;do{a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}while((b|0)<(e|0));Cd(m,80);Ob(l,32,f,g+-8|0,o);if(Dd(f+g+-8|0,o,8)|0){k=Mb(n,n+64|0,h,j,k)|0;Cd(n,80);i=p;return k|0}else{Cd(n,80);k=-1;i=p;return k|0}return 0}function Sc(a){a=a|0;c[a>>2]=0;return}function Tc(a){a=a|0;return 32}function Uc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;if(f>>>0<32){c[a>>2]=2;a=-1;return a|0}else{Nb(b,d,e);a=32;return a|0}return 0}function Vc(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(g>>>0<64){c[a>>2]=5;a=-1;return a|0}if(Jb(b,d,e,f)|0){a=0;return a|0}c[a>>2]=5;a=-1;return a|0}function Wc(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=0;c[a+44>>2]=a+48;c[a+148>>2]=a+152;c[a+492>>2]=a+496;return}function Xc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+64|0;l=m;k=c[b>>2]|0;Pb(d,e,0,0,c[k>>2]|0,c[k+4>>2]|0,l,64);k=b+152|0;e=b+148|0;d=c[e>>2]|0;if((d|0)==(b+492|0))j=(d|0)==(k|0)?b+84|0:k;else{d=d+68|0;c[e>>2]=d;j=k}d=d+-68|0;if((d|0)!=(j|0))do{e=d;d=d+-68|0;g=d;h=e+68|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(h|0))}while((d|0)!=(j|0));c[b+184>>2]=0;e=b+12|0;g=l;h=e+32|0;do{a[e>>0]=a[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));e=b+188|0;g=l+32|0;h=e+32|0;do{a[e>>0]=a[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));e=k;g=f;h=e+32|0;do{a[e>>0]=a[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));Cd(l,64);i=m;return}function Yc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+64|0;l=m;k=c[b>>2]|0;Pb(d,e,0,0,c[k>>2]|0,c[k+4>>2]|0,l,64);k=b+48|0;e=b+44|0;d=c[e>>2]|0;if((d|0)==(b+148|0))j=(d|0)==(k|0)?b+-52|0:k;else{d=d+100|0;c[e>>2]=d;j=k}d=d+-100|0;if((d|0)!=(j|0))do{e=d;d=d+-100|0;g=d;h=e+100|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(h|0))}while((d|0)!=(j|0));c[b+112>>2]=0;e=b+12|0;g=l;h=e+32|0;do{a[e>>0]=a[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));e=b+116|0;g=l+32|0;h=e+32|0;do{a[e>>0]=a[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));e=k;g=f;h=e+64|0;do{a[e>>0]=a[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));Cd(l,64);i=m;return}function Zc(a){a=a|0;var b=0,d=0,e=0,f=0;b=a+48|0;e=c[a+44>>2]|0;if((b|0)==(e|0))f=36;else{d=b;b=4;do{b=b+36+(Ta(d)|0)|0;d=d+100|0}while((d|0)!=(e|0));f=b+32|0}b=a+152|0;e=c[a+148>>2]|0;if((b|0)==(e|0))b=4;else{d=b;b=4;do{b=b+36+(Qa(d)|0)|0;d=d+68|0}while((d|0)!=(e|0))}f=f+b|0;b=a+496|0;e=c[a+492>>2]|0;if((b|0)==(e|0)){a=4;a=f+a|0;return a|0}else{d=b;b=4}do{b=b+36+(Qa(d)|0)|0;d=d+68|0}while((d|0)!=(e|0));a=f+b|0;return a|0}function _c(a,b){a=a|0;b=b|0;var d=0,e=0;a=Oa(a,b+12|0,32)|0;e=b+44|0;d=b+48|0;a=Ka(a,((c[e>>2]|0)-d|0)/100|0)|0;e=c[e>>2]|0;if((d|0)!=(e|0))do{a=Oa(Ua(a,d)|0,d+68|0,32)|0;a=Ka(a,c[d+64>>2]|0)|0;d=d+100|0}while((d|0)!=(e|0));e=b+148|0;d=b+152|0;a=Ka(a,((c[e>>2]|0)-d|0)/68|0)|0;e=c[e>>2]|0;if((d|0)!=(e|0))do{a=Oa(Ra(a,d)|0,d+36|0,32)|0;a=Ka(a,c[d+32>>2]|0)|0;d=d+68|0}while((d|0)!=(e|0));e=b+492|0;d=b+496|0;a=Ka(a,((c[e>>2]|0)-d|0)/68|0)|0;e=c[e>>2]|0;if((d|0)==(e|0)){b=a;return b|0}do{a=Oa(Ra(a,d)|0,d+36|0,32)|0;a=Ka(a,c[d+32>>2]|0)|0;d=d+68|0}while((d|0)!=(e|0));return a|0}function $c(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;i=i+16|0;a=cd(bd(ad(Pa(a,b,c+12|0,32)|0,b,c+44|0)|0,b,c+148|0)|0,b,c+492|0)|0;if(!d){d=a;i=e;return d|0}d=La(a,b,e)|0;i=e;return d|0}function ad(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;a=La(a,b,m)|0;l=c[m>>2]|0;c[m>>2]=l+-1;if((a|0)==(b|0)|(l|0)==0){m=a;i=n;return m|0}k=d+104|0;l=d+4|0;do{e=c[d>>2]|0;if((e|0)==(k|0)){e=l;f=k}else{f=e+100|0;c[d>>2]=f}f=f+-100|0;if((f|0)!=(e|0))do{g=f;f=f+-100|0;h=f;j=g+100|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0))}while((f|0)!=(e|0));a=La(Pa(Va(a,b,e)|0,b,e+68|0,32)|0,b,e+64|0)|0;j=c[m>>2]|0;c[m>>2]=j+-1}while(!((a|0)==(b|0)|(j|0)==0));i=n;return a|0}function bd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;a=La(a,b,m)|0;l=c[m>>2]|0;c[m>>2]=l+-1;if((a|0)==(b|0)|(l|0)==0){m=a;i=n;return m|0}k=d+344|0;l=d+276|0;do{e=c[d>>2]|0;if((e|0)==(k|0)){e=l;f=k}else{f=e+68|0;c[d>>2]=f}f=f+-68|0;if((f|0)!=(e|0))do{g=f;f=f+-68|0;h=f;j=g+68|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0))}while((f|0)!=(e|0));a=La(Pa(Sa(a,b,e)|0,b,e+36|0,32)|0,b,e+32|0)|0;j=c[m>>2]|0;c[m>>2]=j+-1}while(!((a|0)==(b|0)|(j|0)==0));i=n;return a|0}function cd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;a=La(a,b,m)|0;l=c[m>>2]|0;c[m>>2]=l+-1;if((a|0)==(b|0)|(l|0)==0){m=a;i=n;return m|0}k=d+2724|0;l=d+2656|0;do{e=c[d>>2]|0;if((e|0)==(k|0)){e=l;f=k}else{f=e+68|0;c[d>>2]=f}f=f+-68|0;if((f|0)!=(e|0))do{g=f;f=f+-68|0;h=f;j=g+68|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0))}while((f|0)!=(e|0));a=La(Pa(Sa(a,b,e)|0,b,e+36|0,32)|0,b,e+32|0)|0;j=c[m>>2]|0;c[m>>2]=j+-1}while(!((a|0)==(b|0)|(j|0)==0));i=n;return a|0}function dd(a,b){a=a|0;b=b|0;var d=0,e=0;if((c[a+44>>2]|0)==(a+48|0))d=0;else d=c[a+112>>2]|0;a=a+4|0;e=c[a>>2]|0;b=sa[c[(c[e>>2]|0)+4>>2]&3](e,b)|0;a=c[a>>2]|0;return gb(d,32,b,qa[c[c[a>>2]>>2]&1](a)|0)|0}function ed(a){a=a|0;return ((c[a+44>>2]|0)==(a+48|0)?32:0)|0}function fd(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+112|0;q=r+64|0;p=r;l=b+44|0;n=b+48|0;if((c[l>>2]|0)==(n|0))k=0;else k=c[b+112>>2]|0;o=b+4|0;s=c[o>>2]|0;s=sa[c[(c[s>>2]|0)+4>>2]&3](s,e)|0;m=c[o>>2]|0;m=gb(k,32,s,qa[c[c[m>>2]>>2]&1](m)|0)|0;k=(c[l>>2]|0)==(n|0);if((k?32:0)>>>0>g>>>0){c[b+8>>2]=1;s=-1;i=r;return s|0}if(m>>>0>j>>>0){c[b+8>>2]=2;s=-1;i=r;return s|0}if(k){c[l>>2]=b+148;Fb(f,n);f=c[b>>2]|0;Gb(n,b+152|0,q);l=b+12|0;Pb(q,32,l,32,c[f+8>>2]|0,c[f+12>>2]|0,p,64);f=p;g=l+32|0;do{a[l>>0]=a[f>>0]|0;l=l+1|0;f=f+1|0}while((l|0)<(g|0));k=b+116|0;l=k;f=p+32|0;g=l+32|0;do{a[l>>0]=a[f>>0]|0;l=l+1|0;f=f+1|0}while((l|0)<(g|0));l=b+112|0;c[l>>2]=0;Cd(p,64);Cd(q,32)}else{l=b+112|0;k=b+116|0}j=q+4|0;Ob(k,32,33154,1,j);c[q>>2]=c[l>>2];Ob(k,32,33155,1,k);c[l>>2]=(c[l>>2]|0)+1;k=c[o>>2]|0;k=sa[c[(c[k>>2]|0)+4>>2]&3](k,e)|0;hb(p,3,c[q>>2]|0,32,k,h);l=c[p>>2]|0;f=n;g=l+32|0;do{a[l>>0]=a[f>>0]|0;l=l+1|0;f=f+1|0}while((l|0)<(g|0));s=c[o>>2]|0;ra[c[(c[s>>2]|0)+8>>2]&3](s,j,32,d,e,c[p+4>>2]|0,k,h,m)|0;Cd(q,36);s=m;i=r;return s|0}function gd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+32|0;f=g;e=a+4|0;h=c[e>>2]|0;ib(f,b,d,qa[c[c[h>>2]>>2]&1](h)|0);if(!(c[f+24>>2]|0)){c[a+8>>2]=4;h=-1;i=g;return h|0}else{h=c[e>>2]|0;h=sa[c[(c[h>>2]|0)+12>>2]&3](h,c[f+28>>2]|0)|0;i=g;return h|0}return 0}function hd(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+240|0;A=D+168|0;z=D+104|0;p=D+208|0;o=D+32|0;B=D;v=d+4|0;x=c[v>>2]|0;ib(B,e,f,qa[c[c[x>>2]>>2]&1](x)|0);e=b[B>>1]|0;if((e&255)<<24>>24!=3){c[d+8>>2]=3;d=-1;i=D;return d|0}if(((e&65535)>=256?(y=B+16|0,c[y>>2]|0):0)?(w=B+24|0,c[w>>2]|0):0){x=c[v>>2]|0;u=B+28|0;if((sa[c[(c[x>>2]|0)+12>>2]&3](x,c[u>>2]|0)|0)>>>0>h>>>0){c[d+8>>2]=2;d=-1;i=D;return d|0}if((c[B+20>>2]|0)!=32){c[d+8>>2]=4;d=-1;i=D;return d|0}f=d+152|0;x=d+148|0;k=c[x>>2]|0;a:do if((f|0)!=(k|0)){l=c[y>>2]|0;m=f;e=0;do{q=(ff(m,l,32)|0)==0;e=q?m:e;m=m+68|0}while(!(q|(m|0)==(k|0)));m=e;l=(m|0)!=0;if(l){k=m+32|0;e=c[k>>2]|0;q=B+4|0;o=c[q>>2]|0;if(o>>>0>=e>>>0){if((o-e|0)>>>0>2e3)break;t=A;r=k;s=t+36|0;do{c[t>>2]=c[r>>2];t=t+4|0;r=r+4|0}while((t|0)<(s|0));j=A+4|0;if((c[A>>2]|0)>>>0<o>>>0)do{Ob(j,32,33155,1,j);C=(c[A>>2]|0)+1|0;c[A>>2]=C}while(C>>>0<(c[q>>2]|0)>>>0);C=z+4|0;Ob(j,32,33154,1,C);c[z>>2]=c[A>>2];s=c[v>>2]|0;C=ra[c[(c[s>>2]|0)+16>>2]&3](s,C,32,c[B+8>>2]|0,c[B+12>>2]|0,c[w>>2]|0,c[u>>2]|0,g,h)|0;Cd(A,36);s=l;t=m;r=37;break}e=d+496|0;p=d+492|0;l=c[p>>2]|0;if((e|0)!=(l|0)){m=B+8|0;n=B+12|0;k=o;while(1){if(((k|0)==(c[e+32>>2]|0)?(ff(e,c[y>>2]|0,32)|0)==0:0)?(j=c[v>>2]|0,j=ra[c[(c[j>>2]|0)+16>>2]&3](j,e+36|0,32,c[m>>2]|0,c[n>>2]|0,c[w>>2]|0,c[u>>2]|0,g,h)|0,(j|0)!=-1):0){f=e;break}e=e+68|0;if((e|0)==(l|0))break a;k=c[q>>2]|0}Cd(f,68);d=(c[p>>2]|0)+-68|0;c[p>>2]=d;if((d|0)==(e|0)){d=j;i=D;return d|0}do{t=e;e=e+68|0;r=e;s=t+68|0;do{c[t>>2]=c[r>>2];t=t+4|0;r=r+4|0}while((t|0)<(s|0))}while((e|0)!=(c[p>>2]|0));i=D;return j|0}}else r=15}else r=15;while(0);if((r|0)==15){j=d+48|0;if((c[d+44>>2]|0)!=(j|0)?(n=B+4|0,(c[n>>2]|0)>>>0<=2e3):0){t=o;r=c[y>>2]|0;s=t+32|0;do{a[t>>0]=a[r>>0]|0;t=t+1|0;r=r+1|0}while((t|0)<(s|0));t=c[d>>2]|0;e=o+32|0;Gb(j,o,A);Pb(A,32,d+12|0,32,c[t+8>>2]|0,c[t+12>>2]|0,z,64);t=p;r=z;s=t+32|0;do{a[t>>0]=a[r>>0]|0;t=t+1|0;r=r+1|0}while((t|0)<(s|0));t=o+36|0;r=z+32|0;s=t+32|0;do{a[t>>0]=a[r>>0]|0;t=t+1|0;r=r+1|0}while((t|0)<(s|0));c[e>>2]=0;Cd(z,64);Cd(A,32);k=c[n>>2]|0;C=c[e>>2]|0;if(k>>>0<C>>>0|(k-C|0)>>>0>2e3)j=-1;else{t=A;r=e;s=t+36|0;do{c[t>>2]=c[r>>2];t=t+4|0;r=r+4|0}while((t|0)<(s|0));j=A+4|0;if((c[A>>2]|0)>>>0<k>>>0)do{Ob(j,32,33155,1,j);C=(c[A>>2]|0)+1|0;c[A>>2]=C}while(C>>>0<(c[n>>2]|0)>>>0);C=z+4|0;Ob(j,32,33154,1,C);c[z>>2]=c[A>>2];j=c[v>>2]|0;j=ra[c[(c[j>>2]|0)+16>>2]&3](j,C,32,c[B+8>>2]|0,c[B+12>>2]|0,c[w>>2]|0,c[u>>2]|0,g,h)|0;Cd(A,36)}Cd(p,32);Cd(o,68)}else j=-1;s=0;t=0;C=j;r=37}if((r|0)==37?(C|0)!=-1:0){if(!s){j=c[x>>2]|0;if((j|0)==(d+492|0))f=(j|0)==(f|0)?d+84|0:f;else{j=j+68|0;c[x>>2]=j}j=j+-68|0;if((j|0)!=(f|0))do{t=j;j=j+-68|0;r=j;s=t+68|0;do{c[t>>2]=c[r>>2];t=t+4|0;r=r+4|0}while((t|0)<(s|0))}while((j|0)!=(f|0));t=f;r=c[y>>2]|0;s=t+32|0;do{a[t>>0]=a[r>>0]|0;t=t+1|0;r=r+1|0}while((t|0)<(s|0));j=d+48|0;r=c[d>>2]|0;Gb(j,f,A);t=d+12|0;Pb(A,32,t,32,c[r+8>>2]|0,c[r+12>>2]|0,z,64);r=z;s=t+32|0;do{a[t>>0]=a[r>>0]|0;t=t+1|0;r=r+1|0}while((t|0)<(s|0));t=f+36|0;r=z+32|0;s=t+32|0;do{a[t>>0]=a[r>>0]|0;t=t+1|0;r=r+1|0}while((t|0)<(s|0));c[f+32>>2]=0;Cd(z,64);Cd(A,32);Cd(j,100);e=d+44|0;A=(c[e>>2]|0)+-100|0;c[e>>2]=A;if((A|0)!=(j|0))do{t=j;j=j+100|0;r=j;s=t+100|0;do{c[t>>2]=c[r>>2];t=t+4|0;r=r+4|0}while((t|0)<(s|0))}while((j|0)!=(c[e>>2]|0))}else f=t;q=f+32|0;l=B+4|0;if((c[q>>2]|0)>>>0<(c[l>>2]|0)>>>0){m=d+496|0;n=d+492|0;o=d+3216|0;j=f+36|0;p=d+532|0;k=d+528|0;do{e=c[n>>2]|0;if((e|0)==(o|0))e=o;else{e=e+68|0;c[n>>2]=e}e=e+-68|0;if((e|0)!=(m|0))do{t=e;e=e+-68|0;r=e;s=t+68|0;do{c[t>>2]=c[r>>2];t=t+4|0;r=r+4|0}while((t|0)<(s|0))}while((e|0)!=(m|0));Ob(j,32,33154,1,p);c[k>>2]=c[q>>2];c[m>>2]=c[f>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[m+12>>2]=c[f+12>>2];c[m+16>>2]=c[f+16>>2];c[m+20>>2]=c[f+20>>2];c[m+24>>2]=c[f+24>>2];c[m+28>>2]=c[f+28>>2];Ob(j,32,33155,1,j);d=(c[q>>2]|0)+1|0;c[q>>2]=d}while(d>>>0<(c[l>>2]|0)>>>0)}else j=f+36|0;Ob(j,32,33155,1,j);c[q>>2]=(c[q>>2]|0)+1;d=C;i=D;return d|0}c[d+8>>2]=5;d=-1;i=D;return d|0}c[d+8>>2]=4;d=-1;i=D;return d|0}function id(a){a=a|0;c[a+160>>2]=a+164;c[a+7364>>2]=0;c[a+7368>>2]=0;return}function jd(a,b){a=a|0;b=b|0;var d=0;d=a+164|0;a=c[a+160>>2]|0;if((d|0)==(a|0)){b=0;return b|0}while(1){if(Dd(d+5|0,b,32)|0){a=5;break}d=d+72|0;if((d|0)==(a|0)){d=0;a=5;break}}if((a|0)==5)return d|0;return 0}function kd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+164|0;g=a+160|0;if((d|0)==(c[g>>2]|0)){g=-1;return g|0}while(1){if(Dd(d+5|0,b,32)|0){a=d;break}d=d+72|0;if((d|0)==(c[g>>2]|0)){d=-1;e=7;break}}if((e|0)==7)return d|0;d=c[a>>2]|0;f=(c[g>>2]|0)+-72|0;c[g>>2]=f;if((f|0)==(a|0)){g=d;return g|0}do{b=a;a=a+72|0;e=a;f=b+72|0;do{c[b>>2]=c[e>>2];b=b+4|0;e=e+4|0}while((b|0)<(f|0))}while((a|0)!=(c[g>>2]|0));return d|0}function ld(a){a=a|0;return 64}function md(a,b,d){a=a|0;b=b|0;d=d|0;if(d>>>0<64){c[a+7368>>2]=1;a=-1;return a|0}else{Hb(b,a);Fb(b+32|0,a+96|0);a=0;return a|0}return 0}function nd(a){a=a|0;a=Ca(32)|0;return a+30+(Ca(32)|0)|0}function od(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=Ca(32)|0;if((h+30+(Ca(32)|0)|0)>>>0>e>>>0){c[b+7368>>2]=2;b=-1;return b|0}else{a[d>>0]=123;f=d+1|0;g=33156;h=f+13|0;do{a[f>>0]=a[g>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));a[d+14>>0]=34;e=Da(b+96|0,32,d+15|0)|0;a[e>>0]=34;a[e+1>>0]=44;f=e+2|0;g=33170;h=f+10|0;do{a[f>>0]=a[g>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));a[e+12>>0]=34;b=Da(b,32,e+13|0)|0;a[b>>0]=34;a[b+1>>0]=125;b=b+2-d|0;return b|0}return 0}function pd(a){a=a|0;return 64}function qd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;if(f>>>0<64){c[a+7368>>2]=2;a=-1;return a|0}else{Ib(a,b,d,e);a=64;return a|0}return 0}function rd(b){b=b|0;var d=0,e=0,f=0,g=0;d=b+164|0;f=c[b+160>>2]|0;if((d|0)!=(f|0)){e=1;b=0;do{if(!(a[d+4>>0]|0)){g=Ca(4)|0;e=0;b=b+6+g+(Ca(32)|0)|0}d=d+72|0}while((d|0)!=(f|0));if(!e){f=16;g=b;g=f+g|0;return g|0}}else b=0;f=17;g=b;g=f+g|0;return g|0}function sd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;l=b+164|0;k=b+160|0;h=c[k>>2]|0;if((l|0)!=(h|0)){j=l;g=1;f=0;do{if(!(a[j+4>>0]|0)){o=Ca(4)|0;g=0;f=f+6+o+(Ca(32)|0)|0}j=j+72|0}while((j|0)!=(h|0));if(g)m=3;else g=16}else{f=0;m=3}if((m|0)==3)g=17;if((g+f|0)>>>0>e>>>0){c[b+7368>>2]=2;o=-1;i=n;return o|0}a[d>>0]=123;f=d+1|0;g=33156;h=f+13|0;do{a[f>>0]=a[g>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));f=d+14|0;j=c[k>>2]|0;if((l|0)!=(j|0)){h=l;g=123;do{if(!(a[h+4>>0]|0)){a[f>>0]=g;a[f+1>>0]=34;g=ja()|0;o=i;i=i+16|0;Ka(o,c[h>>2]|0)|0;f=Da(o,4,f+2|0)|0;a[f>>0]=34;a[f+1>>0]=58;a[f+2>>0]=34;f=Da(h+5|0,32,f+3|0)|0;a[f>>0]=34;na(g|0);f=f+1|0;g=44}h=h+72|0}while((h|0)!=(j|0));if(g<<24>>24!=44)m=14}else{g=123;m=14}if((m|0)==14){a[f>>0]=g;f=f+1|0}a[f>>0]=125;a[f+1>>0]=125;o=f+2-d|0;i=n;return o|0}function td(b){b=b|0;var d=0,e=0,f=0;d=b+164|0;f=c[b+160>>2]|0;if((d|0)==(f|0)){f=0;return f|0}else b=0;do{e=d+4|0;if(!(a[e>>0]|0)){a[e>>0]=1;b=b+1|0}d=d+72|0}while((d|0)!=(f|0));return b|0}function ud(a){a=a|0;return 100}function vd(a,b){a=a|0;b=b|0;return b<<5|0}function wd(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if(d<<5>>>0>f>>>0){c[b+7368>>2]=1;o=-1;return o|0}if(!d){o=0;return o|0}k=b+164|0;l=b+160|0;m=b+7364|0;n=b+7364|0;o=b+168|0;j=b+169|0;i=0;while(1){f=c[l>>2]|0;if((f|0)==(m|0))f=m;else{f=f+72|0;c[l>>2]=f}f=f+-72|0;if((f|0)!=(k|0))do{b=f;f=f+-72|0;g=f;h=b+72|0;do{c[b>>2]=c[g>>2];b=b+4|0;g=g+4|0}while((b|0)<(h|0))}while((f|0)!=(k|0));h=(c[n>>2]|0)+1|0;c[n>>2]=h;c[k>>2]=h;a[o>>0]=0;Fb(e,j);i=i+1|0;if((i|0)==(d|0))break;else e=e+32|0}return d|0}function xd(a){a=a|0;var b=0,d=0,e=0,f=0;e=Za(a)|0;f=Ta(a+96|0)|0;b=a+164|0;d=c[a+160>>2]|0;if((b|0)==(d|0)){d=4;e=e+8|0;f=e+f|0;f=f+d|0;return f|0}else a=4;do{a=a+5+(Ta(b+5|0)|0)|0;b=b+72|0}while((b|0)!=(d|0));e=e+8|0;f=e+f|0;f=f+a|0;return f|0}function yd(b,d){b=b|0;d=d|0;var e=0,f=0;b=Ua(_a(Ka(b,2)|0,d)|0,d+96|0)|0;f=d+160|0;e=d+164|0;b=Ka(b,((c[f>>2]|0)-e|0)/72|0)|0;f=c[f>>2]|0;if((e|0)==(f|0)){f=b;d=d+7364|0;d=c[d>>2]|0;d=Ka(f,d)|0;return d|0}do{b=Ka(b,c[e>>2]|0)|0;b=Ua(Ma(b,(a[e+4>>0]|0)!=0)|0,e+5|0)|0;e=e+72|0}while((e|0)!=(f|0));d=d+7364|0;d=c[d>>2]|0;d=Ka(b,d)|0;return d|0}function zd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;a=La(a,b,f)|0;switch(c[f>>2]|0){case 2:{f=La(Ad(Va($a(a,b,d)|0,b,d+96|0)|0,b,d+160|0)|0,b,d+7364|0)|0;i=e;return f|0}case 1:{c[d+7368>>2]=13;f=b;i=e;return f|0}default:{c[d+7368>>2]=9;f=b;i=e;return f|0}}return 0}function Ad(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;a=La(a,b,m)|0;l=c[m>>2]|0;c[m>>2]=l+-1;if((a|0)==(b|0)|(l|0)==0){m=a;i=n;return m|0}k=d+7204|0;l=d+7132|0;do{e=c[d>>2]|0;if((e|0)==(k|0)){e=l;f=k}else{f=e+72|0;c[d>>2]=f}f=f+-72|0;if((f|0)!=(e|0))do{g=f;f=f+-72|0;h=f;j=g+72|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0))}while((f|0)!=(e|0));a=Va(Na(La(a,b,e)|0,b,e+4|0)|0,b,e+5|0)|0;j=c[m>>2]|0;c[m>>2]=j+-1}while(!((a|0)==(b|0)|(j|0)==0));i=n;return a|0}function Bd(b,c){b=b|0;c=c|0;var d=0;d=b+c|0;if(!c)return;do{a[b>>0]=0;b=b+1|0}while((b|0)!=(d|0));return}function Cd(b,c){b=b|0;c=c|0;var d=0;d=b+c|0;if(!c)return;do{a[b>>0]=0;b=b+1|0}while((b|0)!=(d|0));return}function Dd(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;a[e>>0]=0;if(d|0)while(1){d=d+-1|0;a[e>>0]=a[e>>0]|a[c>>0]^a[b>>0];if(!d)break;else{c=c+1|0;b=b+1|0}}i=f;return (a[e>>0]|0)==0|0}function Ed(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0;H=d[e>>0]|0;i=pf(d[e+1>>0]|0|0,0,8)|0;l=C;D=pf(d[e+2>>0]|0|0,0,16)|0;l=l|C;B=pf(d[e+3>>0]|0|0,0,24)|0;l=l|C;m=a[e+6>>0]|0;j=d[e+4>>0]|0;E=pf(d[e+5>>0]|0|0,0,8)|0;k=C;m=pf(m&255|0,0,16)|0;k=pf(E|j|m|0,k|C|0,6)|0;m=C;j=a[e+9>>0]|0;E=d[e+7>>0]|0;h=pf(d[e+8>>0]|0|0,0,8)|0;x=C;j=pf(j&255|0,0,16)|0;x=pf(h|E|j|0,x|C|0,5)|0;j=C;E=a[e+12>>0]|0;h=d[e+10>>0]|0;v=pf(d[e+11>>0]|0|0,0,8)|0;F=C;E=pf(E&255|0,0,16)|0;F=pf(v|h|E|0,F|C|0,3)|0;E=C;h=a[e+15>>0]|0;v=d[e+13>>0]|0;p=pf(d[e+14>>0]|0|0,0,8)|0;t=C;h=pf(h&255|0,0,16)|0;t=pf(p|v|h|0,t|C|0,2)|0;h=C;v=d[e+16>>0]|0;p=pf(d[e+17>>0]|0|0,0,8)|0;z=C;f=pf(d[e+18>>0]|0|0,0,16)|0;z=z|C;A=pf(d[e+19>>0]|0|0,0,24)|0;A=p|v|f|A;z=z|C;f=a[e+22>>0]|0;v=d[e+20>>0]|0;p=pf(d[e+21>>0]|0|0,0,8)|0;q=C;f=pf(f&255|0,0,16)|0;q=pf(p|v|f|0,q|C|0,7)|0;f=C;v=a[e+25>>0]|0;p=d[e+23>>0]|0;g=pf(d[e+24>>0]|0|0,0,8)|0;w=C;v=pf(v&255|0,0,16)|0;w=pf(g|p|v|0,w|C|0,5)|0;v=C;p=a[e+28>>0]|0;g=d[e+26>>0]|0;r=pf(d[e+27>>0]|0|0,0,8)|0;o=C;p=pf(p&255|0,0,16)|0;o=pf(r|g|p|0,o|C|0,4)|0;p=C;g=a[e+31>>0]|0;r=d[e+29>>0]|0;y=pf(d[e+30>>0]|0|0,0,8)|0;s=C;e=pf(g&255|0,0,16)|0;s=pf(y|r|e|0,s|C|0,2)|0;s=s&33554428;e=lf(s|0,0,16777216,0)|0;e=of(e|0,C|0,25)|0;r=C;y=kf(0,0,e|0,r|0)|0;l=lf(y&19|0,0,i|H|D|B|0,l|0)|0;B=C;r=pf(e|0,r|0,25)|0;e=C;D=lf(k|0,m|0,16777216,0)|0;D=of(D|0,C|0,25)|0;H=C;j=lf(x|0,j|0,D|0,H|0)|0;x=C;H=pf(D|0,H|0,25)|0;H=kf(k|0,m|0,H|0,C|0)|0;m=C;k=lf(F|0,E|0,16777216,0)|0;k=of(k|0,C|0,25)|0;D=C;h=lf(t|0,h|0,k|0,D|0)|0;t=C;D=pf(k|0,D|0,25)|0;k=C;i=lf(A|0,z|0,16777216,0)|0;i=of(i|0,C|0,25)|0;y=C;f=lf(q|0,f|0,i|0,y|0)|0;q=C;y=pf(i|0,y|0,25)|0;i=C;g=lf(w|0,v|0,16777216,0)|0;g=of(g|0,C|0,25)|0;u=C;p=lf(o|0,p|0,g|0,u|0)|0;o=C;u=pf(g|0,u|0,25)|0;g=C;G=lf(l|0,B|0,33554432,0)|0;G=mf(G|0,C|0,26)|0;n=C;m=lf(H|0,m|0,G|0,n|0)|0;n=pf(G|0,n|0,26)|0;n=kf(l|0,B|0,n|0,C|0)|0;B=lf(j|0,x|0,33554432,0)|0;B=mf(B|0,C|0,26)|0;l=C;E=lf(B|0,l|0,F|0,E|0)|0;k=kf(E|0,C|0,D|0,k|0)|0;l=pf(B|0,l|0,26)|0;l=kf(j|0,x|0,l|0,C|0)|0;x=lf(h|0,t|0,33554432,0)|0;x=mf(x|0,C|0,26)|0;j=C;z=lf(x|0,j|0,A|0,z|0)|0;i=kf(z|0,C|0,y|0,i|0)|0;j=pf(x|0,j|0,26)|0;j=kf(h|0,t|0,j|0,C|0)|0;t=lf(f|0,q|0,33554432,0)|0;t=mf(t|0,C|0,26)|0;h=C;v=lf(t|0,h|0,w|0,v|0)|0;g=kf(v|0,C|0,u|0,g|0)|0;h=pf(t|0,h|0,26)|0;h=kf(f|0,q|0,h|0,C|0)|0;q=lf(p|0,o|0,33554432,0)|0;q=mf(q|0,C|0,26)|0;f=C;s=lf(s|0,0,q|0,f|0)|0;e=kf(s|0,C|0,r|0,e|0)|0;f=pf(q|0,f|0,26)|0;f=kf(p|0,o|0,f|0,C|0)|0;c[b>>2]=n;c[b+4>>2]=m;c[b+8>>2]=l;c[b+12>>2]=k;c[b+16>>2]=j;c[b+20>>2]=i;c[b+24>>2]=h;c[b+28>>2]=g;c[b+32>>2]=f;c[b+36>>2]=e;return}function Fd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=i;i=i+160|0;d=g+120|0;e=g+80|0;f=g+40|0;c=g;Gd(d,b);Gd(e,d);Gd(e,e);Hd(e,b,e);Hd(d,d,e);Gd(f,d);Hd(e,e,f);Gd(f,e);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Hd(e,f,e);Gd(f,e);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Hd(f,f,e);Gd(c,f);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Hd(f,c,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Hd(e,f,e);Gd(f,e);b=1;do{Gd(f,f);b=b+1|0}while((b|0)!=50);Hd(f,f,e);Gd(c,f);b=1;do{Gd(c,c);b=b+1|0}while((b|0)!=100);Hd(f,c,f);Gd(f,f);b=1;do{Gd(f,f);b=b+1|0}while((b|0)!=50);Hd(e,f,e);Gd(e,e);Gd(e,e);Gd(e,e);Gd(e,e);Gd(e,e);Hd(a,e,d);i=g;return}function Gd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0;bb=c[b>>2]|0;ua=c[b+4>>2]|0;j=c[b+8>>2]|0;la=c[b+12>>2]|0;e=c[b+16>>2]|0;db=c[b+20>>2]|0;Y=c[b+24>>2]|0;La=c[b+28>>2]|0;h=c[b+32>>2]|0;b=c[b+36>>2]|0;l=bb<<1;p=ua<<1;Xa=j<<1;f=la<<1;na=e<<1;B=db<<1;m=Y<<1;i=La<<1;Ka=db*38|0;ra=Y*19|0;va=La*38|0;da=h*19|0;gb=b*38|0;cb=((bb|0)<0)<<31>>31;cb=vf(bb|0,cb|0,bb|0,cb|0)|0;bb=C;o=((l|0)<0)<<31>>31;ta=((ua|0)<0)<<31>>31;Ia=vf(l|0,o|0,ua|0,ta|0)|0;Ha=C;k=((j|0)<0)<<31>>31;Wa=vf(j|0,k|0,l|0,o|0)|0;Va=C;ma=((la|0)<0)<<31>>31;Ua=vf(la|0,ma|0,l|0,o|0)|0;Ta=C;D=((e|0)<0)<<31>>31;Oa=vf(e|0,D|0,l|0,o|0)|0;Na=C;eb=((db|0)<0)<<31>>31;ya=vf(db|0,eb|0,l|0,o|0)|0;xa=C;g=((Y|0)<0)<<31>>31;ga=vf(Y|0,g|0,l|0,o|0)|0;fa=C;Ma=((La|0)<0)<<31>>31;R=vf(La|0,Ma|0,l|0,o|0)|0;Q=C;A=((h|0)<0)<<31>>31;F=vf(h|0,A|0,l|0,o|0)|0;E=C;q=((b|0)<0)<<31>>31;o=vf(b|0,q|0,l|0,o|0)|0;l=C;n=((p|0)<0)<<31>>31;ta=vf(p|0,n|0,ua|0,ta|0)|0;ua=C;ba=vf(p|0,n|0,j|0,k|0)|0;ca=C;P=((f|0)<0)<<31>>31;Sa=vf(f|0,P|0,p|0,n|0)|0;Ra=C;Ca=vf(e|0,D|0,p|0,n|0)|0;Ba=C;d=((B|0)<0)<<31>>31;ia=vf(B|0,d|0,p|0,n|0)|0;ha=C;T=vf(Y|0,g|0,p|0,n|0)|0;S=C;O=((i|0)<0)<<31>>31;H=vf(i|0,O|0,p|0,n|0)|0;G=C;t=vf(h|0,A|0,p|0,n|0)|0;s=C;fb=((gb|0)<0)<<31>>31;n=vf(gb|0,fb|0,p|0,n|0)|0;p=C;Qa=vf(j|0,k|0,j|0,k|0)|0;Pa=C;Ya=((Xa|0)<0)<<31>>31;Aa=vf(Xa|0,Ya|0,la|0,ma|0)|0;za=C;ka=vf(e|0,D|0,Xa|0,Ya|0)|0;ja=C;X=vf(db|0,eb|0,Xa|0,Ya|0)|0;W=C;N=vf(Y|0,g|0,Xa|0,Ya|0)|0;M=C;v=vf(La|0,Ma|0,Xa|0,Ya|0)|0;u=C;ea=((da|0)<0)<<31>>31;Ya=vf(da|0,ea|0,Xa|0,Ya|0)|0;Xa=C;k=vf(gb|0,fb|0,j|0,k|0)|0;j=C;ma=vf(f|0,P|0,la|0,ma|0)|0;la=C;V=vf(f|0,P|0,e|0,D|0)|0;U=C;J=vf(B|0,d|0,f|0,P|0)|0;I=C;z=vf(Y|0,g|0,f|0,P|0)|0;y=C;wa=((va|0)<0)<<31>>31;_a=vf(va|0,wa|0,f|0,P|0)|0;Za=C;Ea=vf(da|0,ea|0,f|0,P|0)|0;Da=C;P=vf(gb|0,fb|0,f|0,P|0)|0;f=C;L=vf(e|0,D|0,e|0,D|0)|0;K=C;oa=((na|0)<0)<<31>>31;x=vf(na|0,oa|0,db|0,eb|0)|0;w=C;sa=((ra|0)<0)<<31>>31;ab=vf(ra|0,sa|0,na|0,oa|0)|0;$a=C;Ga=vf(va|0,wa|0,e|0,D|0)|0;Fa=C;oa=vf(da|0,ea|0,na|0,oa|0)|0;na=C;D=vf(gb|0,fb|0,e|0,D|0)|0;e=C;eb=vf(Ka|0,((Ka|0)<0)<<31>>31|0,db|0,eb|0)|0;db=C;Ka=vf(ra|0,sa|0,B|0,d|0)|0;Ja=C;qa=vf(va|0,wa|0,B|0,d|0)|0;pa=C;_=vf(da|0,ea|0,B|0,d|0)|0;Z=C;d=vf(gb|0,fb|0,B|0,d|0)|0;B=C;sa=vf(ra|0,sa|0,Y|0,g|0)|0;ra=C;aa=vf(va|0,wa|0,Y|0,g|0)|0;$=C;m=vf(da|0,ea|0,m|0,((m|0)<0)<<31>>31|0)|0;r=C;g=vf(gb|0,fb|0,Y|0,g|0)|0;Y=C;Ma=vf(va|0,wa|0,La|0,Ma|0)|0;La=C;wa=vf(da|0,ea|0,i|0,O|0)|0;va=C;O=vf(gb|0,fb|0,i|0,O|0)|0;i=C;ea=vf(da|0,ea|0,h|0,A|0)|0;da=C;A=vf(gb|0,fb|0,h|0,A|0)|0;h=C;q=vf(gb|0,fb|0,b|0,q|0)|0;b=C;bb=lf(eb|0,db|0,cb|0,bb|0)|0;$a=lf(bb|0,C|0,ab|0,$a|0)|0;Za=lf($a|0,C|0,_a|0,Za|0)|0;Xa=lf(Za|0,C|0,Ya|0,Xa|0)|0;p=lf(Xa|0,C|0,n|0,p|0)|0;n=C;ua=lf(Wa|0,Va|0,ta|0,ua|0)|0;ta=C;ca=lf(Ua|0,Ta|0,ba|0,ca|0)|0;ba=C;Pa=lf(Sa|0,Ra|0,Qa|0,Pa|0)|0;Na=lf(Pa|0,C|0,Oa|0,Na|0)|0;La=lf(Na|0,C|0,Ma|0,La|0)|0;r=lf(La|0,C|0,m|0,r|0)|0;B=lf(r|0,C|0,d|0,B|0)|0;d=C;r=lf(p|0,n|0,33554432,0)|0;r=mf(r|0,C|0,26)|0;m=C;Ha=lf(Ka|0,Ja|0,Ia|0,Ha|0)|0;Fa=lf(Ha|0,C|0,Ga|0,Fa|0)|0;Da=lf(Fa|0,C|0,Ea|0,Da|0)|0;j=lf(Da|0,C|0,k|0,j|0)|0;j=lf(j|0,C|0,r|0,m|0)|0;k=C;m=pf(r|0,m|0,26)|0;m=kf(p|0,n|0,m|0,C|0)|0;n=C;p=lf(B|0,d|0,33554432,0)|0;p=mf(p|0,C|0,26)|0;r=C;za=lf(Ca|0,Ba|0,Aa|0,za|0)|0;xa=lf(za|0,C|0,ya|0,xa|0)|0;va=lf(xa|0,C|0,wa|0,va|0)|0;Y=lf(va|0,C|0,g|0,Y|0)|0;Y=lf(Y|0,C|0,p|0,r|0)|0;g=C;r=pf(p|0,r|0,26)|0;r=kf(B|0,d|0,r|0,C|0)|0;d=C;B=lf(j|0,k|0,16777216,0)|0;B=mf(B|0,C|0,25)|0;p=C;ra=lf(ua|0,ta|0,sa|0,ra|0)|0;pa=lf(ra|0,C|0,qa|0,pa|0)|0;na=lf(pa|0,C|0,oa|0,na|0)|0;f=lf(na|0,C|0,P|0,f|0)|0;f=lf(f|0,C|0,B|0,p|0)|0;P=C;p=pf(B|0,p|0,25)|0;p=kf(j|0,k|0,p|0,C|0)|0;k=C;j=lf(Y|0,g|0,16777216,0)|0;j=mf(j|0,C|0,25)|0;B=C;ja=lf(ma|0,la|0,ka|0,ja|0)|0;ha=lf(ja|0,C|0,ia|0,ha|0)|0;fa=lf(ha|0,C|0,ga|0,fa|0)|0;da=lf(fa|0,C|0,ea|0,da|0)|0;i=lf(da|0,C|0,O|0,i|0)|0;i=lf(i|0,C|0,j|0,B|0)|0;O=C;B=pf(j|0,B|0,25)|0;B=kf(Y|0,g|0,B|0,C|0)|0;g=C;Y=lf(f|0,P|0,33554432,0)|0;Y=mf(Y|0,C|0,26)|0;j=C;$=lf(ca|0,ba|0,aa|0,$|0)|0;Z=lf($|0,C|0,_|0,Z|0)|0;e=lf(Z|0,C|0,D|0,e|0)|0;e=lf(e|0,C|0,Y|0,j|0)|0;D=C;j=pf(Y|0,j|0,26)|0;j=kf(f|0,P|0,j|0,C|0)|0;P=lf(i|0,O|0,33554432,0)|0;P=mf(P|0,C|0,26)|0;f=C;U=lf(X|0,W|0,V|0,U|0)|0;S=lf(U|0,C|0,T|0,S|0)|0;Q=lf(S|0,C|0,R|0,Q|0)|0;h=lf(Q|0,C|0,A|0,h|0)|0;h=lf(h|0,C|0,P|0,f|0)|0;A=C;f=pf(P|0,f|0,26)|0;f=kf(i|0,O|0,f|0,C|0)|0;O=lf(e|0,D|0,16777216,0)|0;O=mf(O|0,C|0,25)|0;i=C;d=lf(O|0,i|0,r|0,d|0)|0;r=C;i=pf(O|0,i|0,25)|0;i=kf(e|0,D|0,i|0,C|0)|0;D=lf(h|0,A|0,16777216,0)|0;D=mf(D|0,C|0,25)|0;e=C;K=lf(N|0,M|0,L|0,K|0)|0;I=lf(K|0,C|0,J|0,I|0)|0;G=lf(I|0,C|0,H|0,G|0)|0;E=lf(G|0,C|0,F|0,E|0)|0;b=lf(E|0,C|0,q|0,b|0)|0;b=lf(b|0,C|0,D|0,e|0)|0;q=C;e=pf(D|0,e|0,25)|0;e=kf(h|0,A|0,e|0,C|0)|0;A=lf(d|0,r|0,33554432,0)|0;A=mf(A|0,C|0,26)|0;h=C;g=lf(B|0,g|0,A|0,h|0)|0;h=pf(A|0,h|0,26)|0;h=kf(d|0,r|0,h|0,C|0)|0;r=lf(b|0,q|0,33554432,0)|0;r=mf(r|0,C|0,26)|0;d=C;w=lf(z|0,y|0,x|0,w|0)|0;u=lf(w|0,C|0,v|0,u|0)|0;s=lf(u|0,C|0,t|0,s|0)|0;l=lf(s|0,C|0,o|0,l|0)|0;l=lf(l|0,C|0,r|0,d|0)|0;o=C;d=pf(r|0,d|0,26)|0;d=kf(b|0,q|0,d|0,C|0)|0;q=lf(l|0,o|0,16777216,0)|0;q=mf(q|0,C|0,25)|0;b=C;r=vf(q|0,b|0,19,0)|0;n=lf(r|0,C|0,m|0,n|0)|0;m=C;b=pf(q|0,b|0,25)|0;b=kf(l|0,o|0,b|0,C|0)|0;o=lf(n|0,m|0,33554432,0)|0;o=mf(o|0,C|0,26)|0;l=C;k=lf(p|0,k|0,o|0,l|0)|0;l=pf(o|0,l|0,26)|0;l=kf(n|0,m|0,l|0,C|0)|0;c[a>>2]=l;c[a+4>>2]=k;c[a+8>>2]=j;c[a+12>>2]=i;c[a+16>>2]=h;c[a+20>>2]=g;c[a+24>>2]=f;c[a+28>>2]=e;c[a+32>>2]=d;c[a+36>>2]=b;return}function Hd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0;l=c[b>>2]|0;s=c[b+4>>2]|0;j=c[b+8>>2]|0;Rb=c[b+12>>2]|0;e=c[b+16>>2]|0;za=c[b+20>>2]|0;ya=c[b+24>>2]|0;zb=c[b+28>>2]|0;h=c[b+32>>2]|0;ga=c[b+36>>2]|0;H=c[d>>2]|0;J=c[d+4>>2]|0;F=c[d+8>>2]|0;D=c[d+12>>2]|0;A=c[d+16>>2]|0;y=c[d+20>>2]|0;w=c[d+24>>2]|0;u=c[d+28>>2]|0;k=c[d+32>>2]|0;t=c[d+36>>2]|0;Oc=J*19|0;bc=F*19|0;rb=D*19|0;Ha=A*19|0;jc=y*19|0;Db=w*19|0;Ta=u*19|0;Sc=k*19|0;Qc=t*19|0;p=s<<1;f=Rb<<1;M=za<<1;i=zb<<1;d=ga<<1;o=((l|0)<0)<<31>>31;I=((H|0)<0)<<31>>31;Mc=vf(H|0,I|0,l|0,o|0)|0;Lc=C;K=((J|0)<0)<<31>>31;wc=vf(J|0,K|0,l|0,o|0)|0;vc=C;G=((F|0)<0)<<31>>31;ub=vf(F|0,G|0,l|0,o|0)|0;tb=C;E=((D|0)<0)<<31>>31;Ka=vf(D|0,E|0,l|0,o|0)|0;Ja=C;B=((A|0)<0)<<31>>31;mc=vf(A|0,B|0,l|0,o|0)|0;lc=C;z=((y|0)<0)<<31>>31;Gb=vf(y|0,z|0,l|0,o|0)|0;Fb=C;x=((w|0)<0)<<31>>31;Wa=vf(w|0,x|0,l|0,o|0)|0;Va=C;v=((u|0)<0)<<31>>31;ja=vf(u|0,v|0,l|0,o|0)|0;ia=C;Pc=((k|0)<0)<<31>>31;P=vf(k|0,Pc|0,l|0,o|0)|0;O=C;o=vf(t|0,((t|0)<0)<<31>>31|0,l|0,o|0)|0;l=C;t=((s|0)<0)<<31>>31;dc=vf(H|0,I|0,s|0,t|0)|0;ec=C;n=((p|0)<0)<<31>>31;yb=vf(J|0,K|0,p|0,n|0)|0;xb=C;Ma=vf(F|0,G|0,s|0,t|0)|0;La=C;oc=vf(D|0,E|0,p|0,n|0)|0;nc=C;Ib=vf(A|0,B|0,s|0,t|0)|0;Hb=C;Ya=vf(y|0,z|0,p|0,n|0)|0;Xa=C;la=vf(w|0,x|0,s|0,t|0)|0;ka=C;R=vf(u|0,v|0,p|0,n|0)|0;Q=C;t=vf(k|0,Pc|0,s|0,t|0)|0;s=C;Pc=((Qc|0)<0)<<31>>31;n=vf(Qc|0,Pc|0,p|0,n|0)|0;p=C;k=((j|0)<0)<<31>>31;wb=vf(H|0,I|0,j|0,k|0)|0;vb=C;Qa=vf(J|0,K|0,j|0,k|0)|0;Pa=C;qc=vf(F|0,G|0,j|0,k|0)|0;pc=C;Kb=vf(D|0,E|0,j|0,k|0)|0;Jb=C;_a=vf(A|0,B|0,j|0,k|0)|0;Za=C;na=vf(y|0,z|0,j|0,k|0)|0;ma=C;T=vf(w|0,x|0,j|0,k|0)|0;S=C;v=vf(u|0,v|0,j|0,k|0)|0;u=C;Rc=((Sc|0)<0)<<31>>31;yc=vf(Sc|0,Rc|0,j|0,k|0)|0;xc=C;k=vf(Qc|0,Pc|0,j|0,k|0)|0;j=C;Sb=((Rb|0)<0)<<31>>31;Oa=vf(H|0,I|0,Rb|0,Sb|0)|0;Na=C;fa=((f|0)<0)<<31>>31;uc=vf(J|0,K|0,f|0,fa|0)|0;tc=C;Mb=vf(F|0,G|0,Rb|0,Sb|0)|0;Lb=C;ab=vf(D|0,E|0,f|0,fa|0)|0;$a=C;pa=vf(A|0,B|0,Rb|0,Sb|0)|0;oa=C;V=vf(y|0,z|0,f|0,fa|0)|0;U=C;x=vf(w|0,x|0,Rb|0,Sb|0)|0;w=C;Ua=((Ta|0)<0)<<31>>31;Ac=vf(Ta|0,Ua|0,f|0,fa|0)|0;zc=C;Sb=vf(Sc|0,Rc|0,Rb|0,Sb|0)|0;Rb=C;fa=vf(Qc|0,Pc|0,f|0,fa|0)|0;f=C;N=((e|0)<0)<<31>>31;sc=vf(H|0,I|0,e|0,N|0)|0;rc=C;Qb=vf(J|0,K|0,e|0,N|0)|0;Pb=C;cb=vf(F|0,G|0,e|0,N|0)|0;bb=C;ra=vf(D|0,E|0,e|0,N|0)|0;qa=C;X=vf(A|0,B|0,e|0,N|0)|0;W=C;z=vf(y|0,z|0,e|0,N|0)|0;y=C;Eb=((Db|0)<0)<<31>>31;Cc=vf(Db|0,Eb|0,e|0,N|0)|0;Bc=C;Ub=vf(Ta|0,Ua|0,e|0,N|0)|0;Tb=C;ib=vf(Sc|0,Rc|0,e|0,N|0)|0;hb=C;N=vf(Qc|0,Pc|0,e|0,N|0)|0;e=C;Aa=((za|0)<0)<<31>>31;Ob=vf(H|0,I|0,za|0,Aa|0)|0;Nb=C;b=((M|0)<0)<<31>>31;gb=vf(J|0,K|0,M|0,b|0)|0;fb=C;ta=vf(F|0,G|0,za|0,Aa|0)|0;sa=C;Z=vf(D|0,E|0,M|0,b|0)|0;Y=C;B=vf(A|0,B|0,za|0,Aa|0)|0;A=C;kc=((jc|0)<0)<<31>>31;Ec=vf(jc|0,kc|0,M|0,b|0)|0;Dc=C;Wb=vf(Db|0,Eb|0,za|0,Aa|0)|0;Vb=C;kb=vf(Ta|0,Ua|0,M|0,b|0)|0;jb=C;Aa=vf(Sc|0,Rc|0,za|0,Aa|0)|0;za=C;b=vf(Qc|0,Pc|0,M|0,b|0)|0;M=C;g=((ya|0)<0)<<31>>31;eb=vf(H|0,I|0,ya|0,g|0)|0;db=C;xa=vf(J|0,K|0,ya|0,g|0)|0;wa=C;$=vf(F|0,G|0,ya|0,g|0)|0;_=C;E=vf(D|0,E|0,ya|0,g|0)|0;D=C;Ia=((Ha|0)<0)<<31>>31;Gc=vf(Ha|0,Ia|0,ya|0,g|0)|0;Fc=C;Yb=vf(jc|0,kc|0,ya|0,g|0)|0;Xb=C;mb=vf(Db|0,Eb|0,ya|0,g|0)|0;lb=C;Ca=vf(Ta|0,Ua|0,ya|0,g|0)|0;Ba=C;m=vf(Sc|0,Rc|0,ya|0,g|0)|0;r=C;g=vf(Qc|0,Pc|0,ya|0,g|0)|0;ya=C;Ab=((zb|0)<0)<<31>>31;va=vf(H|0,I|0,zb|0,Ab|0)|0;ua=C;ea=((i|0)<0)<<31>>31;da=vf(J|0,K|0,i|0,ea|0)|0;ca=C;G=vf(F|0,G|0,zb|0,Ab|0)|0;F=C;sb=((rb|0)<0)<<31>>31;Ic=vf(rb|0,sb|0,i|0,ea|0)|0;Hc=C;_b=vf(Ha|0,Ia|0,zb|0,Ab|0)|0;Zb=C;ob=vf(jc|0,kc|0,i|0,ea|0)|0;nb=C;Ea=vf(Db|0,Eb|0,zb|0,Ab|0)|0;Da=C;gc=vf(Ta|0,Ua|0,i|0,ea|0)|0;fc=C;Ab=vf(Sc|0,Rc|0,zb|0,Ab|0)|0;zb=C;ea=vf(Qc|0,Pc|0,i|0,ea|0)|0;i=C;L=((h|0)<0)<<31>>31;ba=vf(H|0,I|0,h|0,L|0)|0;aa=C;K=vf(J|0,K|0,h|0,L|0)|0;J=C;cc=((bc|0)<0)<<31>>31;Kc=vf(bc|0,cc|0,h|0,L|0)|0;Jc=C;ac=vf(rb|0,sb|0,h|0,L|0)|0;$b=C;qb=vf(Ha|0,Ia|0,h|0,L|0)|0;pb=C;Ga=vf(jc|0,kc|0,h|0,L|0)|0;Fa=C;ic=vf(Db|0,Eb|0,h|0,L|0)|0;hc=C;Cb=vf(Ta|0,Ua|0,h|0,L|0)|0;Bb=C;Sa=vf(Sc|0,Rc|0,h|0,L|0)|0;Ra=C;L=vf(Qc|0,Pc|0,h|0,L|0)|0;h=C;ha=((ga|0)<0)<<31>>31;I=vf(H|0,I|0,ga|0,ha|0)|0;H=C;q=((d|0)<0)<<31>>31;Oc=vf(Oc|0,((Oc|0)<0)<<31>>31|0,d|0,q|0)|0;Nc=C;cc=vf(bc|0,cc|0,ga|0,ha|0)|0;bc=C;sb=vf(rb|0,sb|0,d|0,q|0)|0;rb=C;Ia=vf(Ha|0,Ia|0,ga|0,ha|0)|0;Ha=C;kc=vf(jc|0,kc|0,d|0,q|0)|0;jc=C;Eb=vf(Db|0,Eb|0,ga|0,ha|0)|0;Db=C;Ua=vf(Ta|0,Ua|0,d|0,q|0)|0;Ta=C;ha=vf(Sc|0,Rc|0,ga|0,ha|0)|0;ga=C;q=vf(Qc|0,Pc|0,d|0,q|0)|0;d=C;Lc=lf(Oc|0,Nc|0,Mc|0,Lc|0)|0;Jc=lf(Lc|0,C|0,Kc|0,Jc|0)|0;Hc=lf(Jc|0,C|0,Ic|0,Hc|0)|0;Fc=lf(Hc|0,C|0,Gc|0,Fc|0)|0;Dc=lf(Fc|0,C|0,Ec|0,Dc|0)|0;Bc=lf(Dc|0,C|0,Cc|0,Bc|0)|0;zc=lf(Bc|0,C|0,Ac|0,zc|0)|0;xc=lf(zc|0,C|0,yc|0,xc|0)|0;p=lf(xc|0,C|0,n|0,p|0)|0;n=C;ec=lf(wc|0,vc|0,dc|0,ec|0)|0;dc=C;rc=lf(uc|0,tc|0,sc|0,rc|0)|0;pc=lf(rc|0,C|0,qc|0,pc|0)|0;nc=lf(pc|0,C|0,oc|0,nc|0)|0;lc=lf(nc|0,C|0,mc|0,lc|0)|0;jc=lf(lc|0,C|0,kc|0,jc|0)|0;hc=lf(jc|0,C|0,ic|0,hc|0)|0;fc=lf(hc|0,C|0,gc|0,fc|0)|0;r=lf(fc|0,C|0,m|0,r|0)|0;M=lf(r|0,C|0,b|0,M|0)|0;b=C;r=lf(p|0,n|0,33554432,0)|0;r=mf(r|0,C|0,26)|0;m=C;bc=lf(ec|0,dc|0,cc|0,bc|0)|0;$b=lf(bc|0,C|0,ac|0,$b|0)|0;Zb=lf($b|0,C|0,_b|0,Zb|0)|0;Xb=lf(Zb|0,C|0,Yb|0,Xb|0)|0;Vb=lf(Xb|0,C|0,Wb|0,Vb|0)|0;Tb=lf(Vb|0,C|0,Ub|0,Tb|0)|0;Rb=lf(Tb|0,C|0,Sb|0,Rb|0)|0;j=lf(Rb|0,C|0,k|0,j|0)|0;j=lf(j|0,C|0,r|0,m|0)|0;k=C;m=pf(r|0,m|0,26)|0;m=kf(p|0,n|0,m|0,C|0)|0;n=C;p=lf(M|0,b|0,33554432,0)|0;p=mf(p|0,C|0,26)|0;r=C;Nb=lf(Qb|0,Pb|0,Ob|0,Nb|0)|0;Lb=lf(Nb|0,C|0,Mb|0,Lb|0)|0;Jb=lf(Lb|0,C|0,Kb|0,Jb|0)|0;Hb=lf(Jb|0,C|0,Ib|0,Hb|0)|0;Fb=lf(Hb|0,C|0,Gb|0,Fb|0)|0;Db=lf(Fb|0,C|0,Eb|0,Db|0)|0;Bb=lf(Db|0,C|0,Cb|0,Bb|0)|0;zb=lf(Bb|0,C|0,Ab|0,zb|0)|0;ya=lf(zb|0,C|0,g|0,ya|0)|0;ya=lf(ya|0,C|0,p|0,r|0)|0;g=C;r=pf(p|0,r|0,26)|0;r=kf(M|0,b|0,r|0,C|0)|0;b=C;M=lf(j|0,k|0,16777216,0)|0;M=mf(M|0,C|0,25)|0;p=C;vb=lf(yb|0,xb|0,wb|0,vb|0)|0;tb=lf(vb|0,C|0,ub|0,tb|0)|0;rb=lf(tb|0,C|0,sb|0,rb|0)|0;pb=lf(rb|0,C|0,qb|0,pb|0)|0;nb=lf(pb|0,C|0,ob|0,nb|0)|0;lb=lf(nb|0,C|0,mb|0,lb|0)|0;jb=lf(lb|0,C|0,kb|0,jb|0)|0;hb=lf(jb|0,C|0,ib|0,hb|0)|0;f=lf(hb|0,C|0,fa|0,f|0)|0;f=lf(f|0,C|0,M|0,p|0)|0;fa=C;p=pf(M|0,p|0,25)|0;p=kf(j|0,k|0,p|0,C|0)|0;k=C;j=lf(ya|0,g|0,16777216,0)|0;j=mf(j|0,C|0,25)|0;M=C;db=lf(gb|0,fb|0,eb|0,db|0)|0;bb=lf(db|0,C|0,cb|0,bb|0)|0;$a=lf(bb|0,C|0,ab|0,$a|0)|0;Za=lf($a|0,C|0,_a|0,Za|0)|0;Xa=lf(Za|0,C|0,Ya|0,Xa|0)|0;Va=lf(Xa|0,C|0,Wa|0,Va|0)|0;Ta=lf(Va|0,C|0,Ua|0,Ta|0)|0;Ra=lf(Ta|0,C|0,Sa|0,Ra|0)|0;i=lf(Ra|0,C|0,ea|0,i|0)|0;i=lf(i|0,C|0,j|0,M|0)|0;ea=C;M=pf(j|0,M|0,25)|0;M=kf(ya|0,g|0,M|0,C|0)|0;g=C;ya=lf(f|0,fa|0,33554432,0)|0;ya=mf(ya|0,C|0,26)|0;j=C;Na=lf(Qa|0,Pa|0,Oa|0,Na|0)|0;La=lf(Na|0,C|0,Ma|0,La|0)|0;Ja=lf(La|0,C|0,Ka|0,Ja|0)|0;Ha=lf(Ja|0,C|0,Ia|0,Ha|0)|0;Fa=lf(Ha|0,C|0,Ga|0,Fa|0)|0;Da=lf(Fa|0,C|0,Ea|0,Da|0)|0;Ba=lf(Da|0,C|0,Ca|0,Ba|0)|0;za=lf(Ba|0,C|0,Aa|0,za|0)|0;e=lf(za|0,C|0,N|0,e|0)|0;e=lf(e|0,C|0,ya|0,j|0)|0;N=C;j=pf(ya|0,j|0,26)|0;j=kf(f|0,fa|0,j|0,C|0)|0;fa=lf(i|0,ea|0,33554432,0)|0;fa=mf(fa|0,C|0,26)|0;f=C;ua=lf(xa|0,wa|0,va|0,ua|0)|0;sa=lf(ua|0,C|0,ta|0,sa|0)|0;qa=lf(sa|0,C|0,ra|0,qa|0)|0;oa=lf(qa|0,C|0,pa|0,oa|0)|0;ma=lf(oa|0,C|0,na|0,ma|0)|0;ka=lf(ma|0,C|0,la|0,ka|0)|0;ia=lf(ka|0,C|0,ja|0,ia|0)|0;ga=lf(ia|0,C|0,ha|0,ga|0)|0;h=lf(ga|0,C|0,L|0,h|0)|0;h=lf(h|0,C|0,fa|0,f|0)|0;L=C;f=pf(fa|0,f|0,26)|0;f=kf(i|0,ea|0,f|0,C|0)|0;ea=lf(e|0,N|0,16777216,0)|0;ea=mf(ea|0,C|0,25)|0;i=C;b=lf(ea|0,i|0,r|0,b|0)|0;r=C;i=pf(ea|0,i|0,25)|0;i=kf(e|0,N|0,i|0,C|0)|0;N=lf(h|0,L|0,16777216,0)|0;N=mf(N|0,C|0,25)|0;e=C;aa=lf(da|0,ca|0,ba|0,aa|0)|0;_=lf(aa|0,C|0,$|0,_|0)|0;Y=lf(_|0,C|0,Z|0,Y|0)|0;W=lf(Y|0,C|0,X|0,W|0)|0;U=lf(W|0,C|0,V|0,U|0)|0;S=lf(U|0,C|0,T|0,S|0)|0;Q=lf(S|0,C|0,R|0,Q|0)|0;O=lf(Q|0,C|0,P|0,O|0)|0;d=lf(O|0,C|0,q|0,d|0)|0;d=lf(d|0,C|0,N|0,e|0)|0;q=C;e=pf(N|0,e|0,25)|0;e=kf(h|0,L|0,e|0,C|0)|0;L=lf(b|0,r|0,33554432,0)|0;L=mf(L|0,C|0,26)|0;h=C;g=lf(M|0,g|0,L|0,h|0)|0;h=pf(L|0,h|0,26)|0;h=kf(b|0,r|0,h|0,C|0)|0;r=lf(d|0,q|0,33554432,0)|0;r=mf(r|0,C|0,26)|0;b=C;H=lf(K|0,J|0,I|0,H|0)|0;F=lf(H|0,C|0,G|0,F|0)|0;D=lf(F|0,C|0,E|0,D|0)|0;A=lf(D|0,C|0,B|0,A|0)|0;y=lf(A|0,C|0,z|0,y|0)|0;w=lf(y|0,C|0,x|0,w|0)|0;u=lf(w|0,C|0,v|0,u|0)|0;s=lf(u|0,C|0,t|0,s|0)|0;l=lf(s|0,C|0,o|0,l|0)|0;l=lf(l|0,C|0,r|0,b|0)|0;o=C;b=pf(r|0,b|0,26)|0;b=kf(d|0,q|0,b|0,C|0)|0;q=lf(l|0,o|0,16777216,0)|0;q=mf(q|0,C|0,25)|0;d=C;r=vf(q|0,d|0,19,0)|0;n=lf(r|0,C|0,m|0,n|0)|0;m=C;d=pf(q|0,d|0,25)|0;d=kf(l|0,o|0,d|0,C|0)|0;o=lf(n|0,m|0,33554432,0)|0;o=mf(o|0,C|0,26)|0;l=C;k=lf(p|0,k|0,o|0,l|0)|0;l=pf(o|0,l|0,26)|0;l=kf(n|0,m|0,l|0,C|0)|0;c[a>>2]=l;c[a+4>>2]=k;c[a+8>>2]=j;c[a+12>>2]=i;c[a+16>>2]=h;c[a+20>>2]=g;c[a+24>>2]=f;c[a+28>>2]=e;c[a+32>>2]=b;c[a+36>>2]=d;return}function Id(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=c[d>>2]|0;l=c[d+4>>2]|0;k=c[d+8>>2]|0;j=c[d+12>>2]|0;i=c[d+16>>2]|0;h=c[d+20>>2]|0;g=c[d+24>>2]|0;f=c[d+28>>2]|0;o=c[d+32>>2]|0;e=c[d+36>>2]|0;m=(((((((((((((e*19|0)+16777216>>25)+m>>26)+l>>25)+k>>26)+j>>25)+i>>26)+h>>25)+g>>26)+f>>25)+o>>26)+e>>25)*19|0)+m|0;n=m>>26;l=n+l|0;n=m-(n<<26)|0;m=l>>25;k=m+k|0;m=l-(m<<25)|0;l=k>>26;j=l+j|0;l=k-(l<<26)|0;k=j>>25;i=k+i|0;k=j-(k<<25)|0;j=i>>26;h=j+h|0;j=i-(j<<26)|0;i=h>>25;g=i+g|0;i=h-(i<<25)|0;h=g>>26;f=h+f|0;h=g-(h<<26)|0;g=f>>25;d=g+o|0;g=f-(g<<25)|0;f=d>>26;e=f+e|0;f=d-(f<<26)|0;d=e&33554431;a[b>>0]=n;a[b+1>>0]=n>>>8;a[b+2>>0]=n>>>16;a[b+3>>0]=m<<2|n>>>24;a[b+4>>0]=m>>>6;a[b+5>>0]=m>>>14;a[b+6>>0]=l<<3|m>>>22;a[b+7>>0]=l>>>5;a[b+8>>0]=l>>>13;a[b+9>>0]=k<<5|l>>>21;a[b+10>>0]=k>>>3;a[b+11>>0]=k>>>11;a[b+12>>0]=j<<6|k>>>19;a[b+13>>0]=j>>>2;a[b+14>>0]=j>>>10;a[b+15>>0]=j>>>18;a[b+16>>0]=i;a[b+17>>0]=i>>>8;a[b+18>>0]=i>>>16;a[b+19>>0]=h<<1|i>>>24;a[b+20>>0]=h>>>7;a[b+21>>0]=h>>>15;a[b+22>>0]=g<<3|h>>>23;a[b+23>>0]=g>>>5;a[b+24>>0]=g>>>13;a[b+25>>0]=f<<4|g>>>21;a[b+26>>0]=f>>>4;a[b+27>>0]=f>>>12;a[b+28>>0]=f>>>20|d<<6;a[b+29>>0]=e>>>2;a[b+30>>0]=e>>>10;a[b+31>>0]=d>>>18;return}function Jd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=i;i=i+128|0;e=g+80|0;f=g+40|0;d=g;Gd(e,b);Gd(f,e);Gd(f,f);Hd(f,b,f);Hd(e,e,f);Gd(e,e);Hd(e,f,e);Gd(f,e);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Hd(e,f,e);Gd(f,e);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Hd(f,f,e);Gd(d,f);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Hd(f,d,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Hd(e,f,e);Gd(f,e);c=1;do{Gd(f,f);c=c+1|0}while((c|0)!=50);Hd(f,f,e);Gd(d,f);c=1;do{Gd(d,d);c=c+1|0}while((c|0)!=100);Hd(f,d,f);Gd(f,f);c=1;do{Gd(f,f);c=c+1|0}while((c|0)!=50);Hd(e,f,e);Gd(e,e);Gd(e,e);Hd(a,e,b);i=g;return}function Kd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0;bb=c[b>>2]|0;La=c[b+4>>2]|0;j=c[b+8>>2]|0;da=c[b+12>>2]|0;e=c[b+16>>2]|0;db=c[b+20>>2]|0;x=c[b+24>>2]|0;pa=c[b+28>>2]|0;h=c[b+32>>2]|0;b=c[b+36>>2]|0;l=bb<<1;n=La<<1;Xa=j<<1;f=da<<1;Fa=e<<1;d=db<<1;oa=x<<1;i=pa<<1;Wa=db*38|0;Ja=x*19|0;fa=pa*38|0;X=h*19|0;gb=b*38|0;cb=((bb|0)<0)<<31>>31;cb=vf(bb|0,cb|0,bb|0,cb|0)|0;bb=C;o=((l|0)<0)<<31>>31;Ma=((La|0)<0)<<31>>31;Ua=vf(l|0,o|0,La|0,Ma|0)|0;Ta=C;k=((j|0)<0)<<31>>31;Oa=vf(j|0,k|0,l|0,o|0)|0;Na=C;ea=((da|0)<0)<<31>>31;Ea=vf(da|0,ea|0,l|0,o|0)|0;Da=C;u=((e|0)<0)<<31>>31;sa=vf(e|0,u|0,l|0,o|0)|0;ra=C;eb=((db|0)<0)<<31>>31;ia=vf(db|0,eb|0,l|0,o|0)|0;ha=C;g=((x|0)<0)<<31>>31;_=vf(x|0,g|0,l|0,o|0)|0;Z=C;qa=((pa|0)<0)<<31>>31;Q=vf(pa|0,qa|0,l|0,o|0)|0;P=C;s=((h|0)<0)<<31>>31;G=vf(h|0,s|0,l|0,o|0)|0;F=C;q=((b|0)<0)<<31>>31;o=vf(b|0,q|0,l|0,o|0)|0;l=C;p=((n|0)<0)<<31>>31;Ma=vf(n|0,p|0,La|0,Ma|0)|0;La=C;Ca=vf(n|0,p|0,j|0,k|0)|0;Ba=C;w=((f|0)<0)<<31>>31;wa=vf(f|0,w|0,n|0,p|0)|0;va=C;ma=vf(e|0,u|0,n|0,p|0)|0;la=C;t=((d|0)<0)<<31>>31;aa=vf(d|0,t|0,n|0,p|0)|0;$=C;S=vf(x|0,g|0,n|0,p|0)|0;R=C;v=((i|0)<0)<<31>>31;I=vf(i|0,v|0,n|0,p|0)|0;H=C;m=vf(h|0,s|0,n|0,p|0)|0;r=C;fb=((gb|0)<0)<<31>>31;p=vf(gb|0,fb|0,n|0,p|0)|0;n=C;ua=vf(j|0,k|0,j|0,k|0)|0;ta=C;Ya=((Xa|0)<0)<<31>>31;ka=vf(Xa|0,Ya|0,da|0,ea|0)|0;ja=C;ca=vf(e|0,u|0,Xa|0,Ya|0)|0;ba=C;W=vf(db|0,eb|0,Xa|0,Ya|0)|0;V=C;O=vf(x|0,g|0,Xa|0,Ya|0)|0;N=C;z=vf(pa|0,qa|0,Xa|0,Ya|0)|0;y=C;Y=((X|0)<0)<<31>>31;Ya=vf(X|0,Y|0,Xa|0,Ya|0)|0;Xa=C;k=vf(gb|0,fb|0,j|0,k|0)|0;j=C;ea=vf(f|0,w|0,da|0,ea|0)|0;da=C;U=vf(f|0,w|0,e|0,u|0)|0;T=C;K=vf(d|0,t|0,f|0,w|0)|0;J=C;E=vf(x|0,g|0,f|0,w|0)|0;D=C;ga=((fa|0)<0)<<31>>31;_a=vf(fa|0,ga|0,f|0,w|0)|0;Za=C;Qa=vf(X|0,Y|0,f|0,w|0)|0;Pa=C;w=vf(gb|0,fb|0,f|0,w|0)|0;f=C;M=vf(e|0,u|0,e|0,u|0)|0;L=C;Ga=((Fa|0)<0)<<31>>31;B=vf(Fa|0,Ga|0,db|0,eb|0)|0;A=C;Ka=((Ja|0)<0)<<31>>31;ab=vf(Ja|0,Ka|0,Fa|0,Ga|0)|0;$a=C;Sa=vf(fa|0,ga|0,e|0,u|0)|0;Ra=C;Ga=vf(X|0,Y|0,Fa|0,Ga|0)|0;Fa=C;u=vf(gb|0,fb|0,e|0,u|0)|0;e=C;eb=vf(Wa|0,((Wa|0)<0)<<31>>31|0,db|0,eb|0)|0;db=C;Wa=vf(Ja|0,Ka|0,d|0,t|0)|0;Va=C;Ia=vf(fa|0,ga|0,d|0,t|0)|0;Ha=C;ya=vf(X|0,Y|0,d|0,t|0)|0;xa=C;t=vf(gb|0,fb|0,d|0,t|0)|0;d=C;Ka=vf(Ja|0,Ka|0,x|0,g|0)|0;Ja=C;Aa=vf(fa|0,ga|0,x|0,g|0)|0;za=C;oa=vf(X|0,Y|0,oa|0,((oa|0)<0)<<31>>31|0)|0;na=C;g=vf(gb|0,fb|0,x|0,g|0)|0;x=C;qa=vf(fa|0,ga|0,pa|0,qa|0)|0;pa=C;ga=vf(X|0,Y|0,i|0,v|0)|0;fa=C;v=vf(gb|0,fb|0,i|0,v|0)|0;i=C;Y=vf(X|0,Y|0,h|0,s|0)|0;X=C;s=vf(gb|0,fb|0,h|0,s|0)|0;h=C;q=vf(gb|0,fb|0,b|0,q|0)|0;b=C;bb=lf(eb|0,db|0,cb|0,bb|0)|0;$a=lf(bb|0,C|0,ab|0,$a|0)|0;Za=lf($a|0,C|0,_a|0,Za|0)|0;Xa=lf(Za|0,C|0,Ya|0,Xa|0)|0;n=lf(Xa|0,C|0,p|0,n|0)|0;p=C;Ta=lf(Wa|0,Va|0,Ua|0,Ta|0)|0;Ra=lf(Ta|0,C|0,Sa|0,Ra|0)|0;Pa=lf(Ra|0,C|0,Qa|0,Pa|0)|0;j=lf(Pa|0,C|0,k|0,j|0)|0;k=C;La=lf(Oa|0,Na|0,Ma|0,La|0)|0;Ja=lf(La|0,C|0,Ka|0,Ja|0)|0;Ha=lf(Ja|0,C|0,Ia|0,Ha|0)|0;Fa=lf(Ha|0,C|0,Ga|0,Fa|0)|0;f=lf(Fa|0,C|0,w|0,f|0)|0;w=C;Ba=lf(Ea|0,Da|0,Ca|0,Ba|0)|0;za=lf(Ba|0,C|0,Aa|0,za|0)|0;xa=lf(za|0,C|0,ya|0,xa|0)|0;e=lf(xa|0,C|0,u|0,e|0)|0;u=C;ta=lf(wa|0,va|0,ua|0,ta|0)|0;ra=lf(ta|0,C|0,sa|0,ra|0)|0;pa=lf(ra|0,C|0,qa|0,pa|0)|0;na=lf(pa|0,C|0,oa|0,na|0)|0;d=lf(na|0,C|0,t|0,d|0)|0;t=C;ja=lf(ma|0,la|0,ka|0,ja|0)|0;ha=lf(ja|0,C|0,ia|0,ha|0)|0;fa=lf(ha|0,C|0,ga|0,fa|0)|0;x=lf(fa|0,C|0,g|0,x|0)|0;g=C;ba=lf(ea|0,da|0,ca|0,ba|0)|0;$=lf(ba|0,C|0,aa|0,$|0)|0;Z=lf($|0,C|0,_|0,Z|0)|0;X=lf(Z|0,C|0,Y|0,X|0)|0;i=lf(X|0,C|0,v|0,i|0)|0;v=C;T=lf(W|0,V|0,U|0,T|0)|0;R=lf(T|0,C|0,S|0,R|0)|0;P=lf(R|0,C|0,Q|0,P|0)|0;h=lf(P|0,C|0,s|0,h|0)|0;s=C;L=lf(O|0,N|0,M|0,L|0)|0;J=lf(L|0,C|0,K|0,J|0)|0;H=lf(J|0,C|0,I|0,H|0)|0;F=lf(H|0,C|0,G|0,F|0)|0;b=lf(F|0,C|0,q|0,b|0)|0;q=C;A=lf(E|0,D|0,B|0,A|0)|0;y=lf(A|0,C|0,z|0,y|0)|0;r=lf(y|0,C|0,m|0,r|0)|0;l=lf(r|0,C|0,o|0,l|0)|0;o=C;p=pf(n|0,p|0,1)|0;n=C;k=pf(j|0,k|0,1)|0;j=C;w=pf(f|0,w|0,1)|0;f=C;u=pf(e|0,u|0,1)|0;e=C;t=pf(d|0,t|0,1)|0;d=C;g=pf(x|0,g|0,1)|0;x=C;v=pf(i|0,v|0,1)|0;i=C;s=pf(h|0,s|0,1)|0;h=C;q=pf(b|0,q|0,1)|0;b=C;o=pf(l|0,o|0,1)|0;l=C;r=lf(p|0,n|0,33554432,0)|0;r=mf(r|0,C|0,26)|0;m=C;j=lf(r|0,m|0,k|0,j|0)|0;k=C;m=pf(r|0,m|0,26)|0;m=kf(p|0,n|0,m|0,C|0)|0;n=C;p=lf(t|0,d|0,33554432,0)|0;p=mf(p|0,C|0,26)|0;r=C;x=lf(p|0,r|0,g|0,x|0)|0;g=C;r=pf(p|0,r|0,26)|0;r=kf(t|0,d|0,r|0,C|0)|0;d=C;t=lf(j|0,k|0,16777216,0)|0;t=mf(t|0,C|0,25)|0;p=C;f=lf(t|0,p|0,w|0,f|0)|0;w=C;p=pf(t|0,p|0,25)|0;p=kf(j|0,k|0,p|0,C|0)|0;k=C;j=lf(x|0,g|0,16777216,0)|0;j=mf(j|0,C|0,25)|0;t=C;i=lf(j|0,t|0,v|0,i|0)|0;v=C;t=pf(j|0,t|0,25)|0;t=kf(x|0,g|0,t|0,C|0)|0;g=C;x=lf(f|0,w|0,33554432,0)|0;x=mf(x|0,C|0,26)|0;j=C;e=lf(x|0,j|0,u|0,e|0)|0;u=C;j=pf(x|0,j|0,26)|0;j=kf(f|0,w|0,j|0,C|0)|0;w=lf(i|0,v|0,33554432,0)|0;w=mf(w|0,C|0,26)|0;f=C;h=lf(w|0,f|0,s|0,h|0)|0;s=C;f=pf(w|0,f|0,26)|0;f=kf(i|0,v|0,f|0,C|0)|0;v=lf(e|0,u|0,16777216,0)|0;v=mf(v|0,C|0,25)|0;i=C;d=lf(v|0,i|0,r|0,d|0)|0;r=C;i=pf(v|0,i|0,25)|0;i=kf(e|0,u|0,i|0,C|0)|0;u=lf(h|0,s|0,16777216,0)|0;u=mf(u|0,C|0,25)|0;e=C;b=lf(u|0,e|0,q|0,b|0)|0;q=C;e=pf(u|0,e|0,25)|0;e=kf(h|0,s|0,e|0,C|0)|0;s=lf(d|0,r|0,33554432,0)|0;s=mf(s|0,C|0,26)|0;h=C;g=lf(t|0,g|0,s|0,h|0)|0;h=pf(s|0,h|0,26)|0;h=kf(d|0,r|0,h|0,C|0)|0;r=lf(b|0,q|0,33554432,0)|0;r=mf(r|0,C|0,26)|0;d=C;l=lf(r|0,d|0,o|0,l|0)|0;o=C;d=pf(r|0,d|0,26)|0;d=kf(b|0,q|0,d|0,C|0)|0;q=lf(l|0,o|0,16777216,0)|0;q=mf(q|0,C|0,25)|0;b=C;r=vf(q|0,b|0,19,0)|0;n=lf(r|0,C|0,m|0,n|0)|0;m=C;b=pf(q|0,b|0,25)|0;b=kf(l|0,o|0,b|0,C|0)|0;o=lf(n|0,m|0,33554432,0)|0;o=mf(o|0,C|0,26)|0;l=C;k=lf(p|0,k|0,o|0,l|0)|0;l=pf(o|0,l|0,26)|0;l=kf(n|0,m|0,l|0,C|0)|0;c[a>>2]=l;c[a+4>>2]=k;c[a+8>>2]=j;c[a+12>>2]=i;c[a+16>>2]=h;c[a+20>>2]=g;c[a+24>>2]=f;c[a+28>>2]=e;c[a+32>>2]=d;c[a+36>>2]=b;return}function Ld(b){b=b|0;var c=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0;ea=b+1|0;ba=b+2|0;D=a[ba>>0]|0;f=d[b>>0]|0;n=pf(d[ea>>0]|0|0,0,8)|0;va=C;D=D&255;V=pf(D|0,0,16)|0;aa=b+3|0;y=pf(d[aa>>0]|0|0,0,8)|0;ga=C;$=b+4|0;U=pf(d[$>>0]|0|0,0,16)|0;ga=ga|C;Y=b+5|0;N=d[Y>>0]|0;X=pf(N|0,0,24)|0;ga=of(y|D|U|X|0,ga|C|0,5)|0;X=b+6|0;U=b+7|0;D=a[U>>0]|0;y=pf(d[X>>0]|0|0,0,8)|0;Ba=C;D=D&255;T=pf(D|0,0,16)|0;Ba=of(y|N|T|0,Ba|C|0,2)|0;T=b+8|0;N=pf(d[T>>0]|0|0,0,8)|0;y=C;S=b+9|0;Ca=pf(d[S>>0]|0|0,0,16)|0;y=y|C;P=b+10|0;Sa=d[P>>0]|0;O=pf(Sa|0,0,24)|0;y=of(N|D|Ca|O|0,y|C|0,7)|0;O=b+11|0;Ca=pf(d[O>>0]|0|0,0,8)|0;D=C;N=b+12|0;G=pf(d[N>>0]|0|0,0,16)|0;D=D|C;K=b+13|0;u=d[K>>0]|0;J=pf(u|0,0,24)|0;D=of(Ca|Sa|G|J|0,D|C|0,4)|0;J=b+14|0;G=b+15|0;Sa=a[G>>0]|0;Ca=pf(d[J>>0]|0|0,0,8)|0;Da=C;Sa=Sa&255;F=pf(Sa|0,0,16)|0;Da=of(Ca|u|F|0,Da|C|0,1)|0;F=b+16|0;u=pf(d[F>>0]|0|0,0,8)|0;Ca=C;E=b+17|0;w=pf(d[E>>0]|0|0,0,16)|0;Ca=Ca|C;A=b+18|0;v=d[A>>0]|0;z=pf(v|0,0,24)|0;Ca=of(u|Sa|w|z|0,Ca|C|0,6)|0;z=b+19|0;w=b+20|0;Sa=a[w>>0]|0;u=pf(d[z>>0]|0|0,0,8)|0;Ta=C;Sa=pf(Sa&255|0,0,16)|0;Ta=of(u|v|Sa|0,Ta|C|0,3)|0;Sa=C;v=b+21|0;u=b+22|0;r=b+23|0;na=a[r>>0]|0;ab=d[v>>0]|0;bb=pf(d[u>>0]|0|0,0,8)|0;_a=C;na=na&255;$a=pf(na|0,0,16)|0;q=b+24|0;Ka=pf(d[q>>0]|0|0,0,8)|0;Pa=C;p=b+25|0;i=pf(d[p>>0]|0|0,0,16)|0;Pa=Pa|C;m=b+26|0;xa=d[m>>0]|0;l=pf(xa|0,0,24)|0;Pa=of(Ka|na|i|l|0,Pa|C|0,5)|0;l=b+27|0;i=b+28|0;na=a[i>>0]|0;Ka=pf(d[l>>0]|0|0,0,8)|0;Za=C;na=na&255;h=pf(na|0,0,16)|0;Za=of(Ka|xa|h|0,Za|C|0,2)|0;h=b+29|0;xa=pf(d[h>>0]|0|0,0,8)|0;Ka=C;g=b+30|0;fb=pf(d[g>>0]|0|0,0,16)|0;Ka=Ka|C;c=b+31|0;qa=d[c>>0]|0;oa=pf(qa|0,0,24)|0;Ka=of(xa|na|fb|oa|0,Ka|C|0,7)|0;oa=pf(d[b+32>>0]|0|0,0,8)|0;fb=C;na=pf(d[b+33>>0]|0|0,0,16)|0;fb=fb|C;xa=d[b+34>>0]|0;la=pf(xa|0,0,24)|0;fb=of(oa|qa|na|la|0,fb|C|0,4)|0;la=a[b+36>>0]|0;na=pf(d[b+35>>0]|0|0,0,8)|0;qa=C;la=la&255;oa=pf(la|0,0,16)|0;qa=of(na|xa|oa|0,qa|C|0,1)|0;oa=pf(d[b+37>>0]|0|0,0,8)|0;xa=C;na=pf(d[b+38>>0]|0|0,0,16)|0;xa=xa|C;Ma=d[b+39>>0]|0;fa=pf(Ma|0,0,24)|0;xa=of(oa|la|na|fa|0,xa|C|0,6)|0;fa=a[b+41>>0]|0;na=pf(d[b+40>>0]|0|0,0,8)|0;la=C;fa=pf(fa&255|0,0,16)|0;la=of(na|Ma|fa|0,la|C|0,3)|0;fa=C;Ma=a[b+44>>0]|0;na=d[b+42>>0]|0;oa=pf(d[b+43>>0]|0|0,0,8)|0;j=C;Ma=Ma&255;za=pf(Ma|0,0,16)|0;ja=pf(d[b+45>>0]|0|0,0,8)|0;L=C;W=pf(d[b+46>>0]|0|0,0,16)|0;L=L|C;gb=d[b+47>>0]|0;o=pf(gb|0,0,24)|0;L=of(ja|Ma|W|o|0,L|C|0,5)|0;o=a[b+49>>0]|0;W=pf(d[b+48>>0]|0|0,0,8)|0;Ma=C;o=o&255;ja=pf(o|0,0,16)|0;Ma=of(W|gb|ja|0,Ma|C|0,2)|0;Ma=Ma&2097151;ja=pf(d[b+50>>0]|0|0,0,8)|0;gb=C;W=pf(d[b+51>>0]|0|0,0,16)|0;gb=gb|C;Aa=d[b+52>>0]|0;M=pf(Aa|0,0,24)|0;gb=of(ja|o|W|M|0,gb|C|0,7)|0;gb=gb&2097151;M=pf(d[b+53>>0]|0|0,0,8)|0;W=C;o=pf(d[b+54>>0]|0|0,0,16)|0;W=W|C;ja=d[b+55>>0]|0;R=pf(ja|0,0,24)|0;W=of(M|Aa|o|R|0,W|C|0,4)|0;W=W&2097151;R=a[b+57>>0]|0;o=pf(d[b+56>>0]|0|0,0,8)|0;Aa=C;R=R&255;M=pf(R|0,0,16)|0;Aa=of(o|ja|M|0,Aa|C|0,1)|0;Aa=Aa&2097151;M=pf(d[b+58>>0]|0|0,0,8)|0;ja=C;o=pf(d[b+59>>0]|0|0,0,16)|0;ja=ja|C;ha=d[b+60>>0]|0;Q=pf(ha|0,0,24)|0;ja=of(M|R|o|Q|0,ja|C|0,6)|0;ja=ja&2097151;Q=pf(d[b+61>>0]|0|0,0,8)|0;o=C;R=pf(d[b+62>>0]|0|0,0,16)|0;o=o|C;M=pf(d[b+63>>0]|0|0,0,24)|0;o=of(Q|ha|R|M|0,o|C|0,3)|0;M=C;R=vf(o|0,M|0,666643,0)|0;ha=C;Q=vf(o|0,M|0,470296,0)|0;I=C;ca=vf(o|0,M|0,654183,0)|0;ta=C;Ea=vf(o|0,M|0,-997805,-1)|0;t=C;k=vf(o|0,M|0,136657,0)|0;B=C;M=vf(o|0,M|0,-683901,-1)|0;j=lf(M|0,C|0,oa|na|za&2031616|0,j|0)|0;za=C;na=vf(ja|0,0,666643,0)|0;oa=C;M=vf(ja|0,0,470296,0)|0;o=C;Va=vf(ja|0,0,654183,0)|0;s=C;ma=vf(ja|0,0,-997805,-1)|0;_=C;ya=vf(ja|0,0,136657,0)|0;sa=C;ja=vf(ja|0,0,-683901,-1)|0;H=C;e=vf(Aa|0,0,666643,0)|0;ra=C;wa=vf(Aa|0,0,470296,0)|0;La=C;Fa=vf(Aa|0,0,654183,0)|0;da=C;cb=vf(Aa|0,0,-997805,-1)|0;Ua=C;ka=vf(Aa|0,0,136657,0)|0;x=C;Aa=vf(Aa|0,0,-683901,-1)|0;xa=lf(Aa|0,C|0,xa&2097151|0,0)|0;sa=lf(xa|0,C|0,ya|0,sa|0)|0;t=lf(sa|0,C|0,Ea|0,t|0)|0;Ea=C;sa=vf(W|0,0,666643,0)|0;ya=C;xa=vf(W|0,0,470296,0)|0;Aa=C;Wa=vf(W|0,0,654183,0)|0;Z=C;Ha=vf(W|0,0,-997805,-1)|0;Ga=C;eb=vf(W|0,0,136657,0)|0;db=C;W=vf(W|0,0,-683901,-1)|0;pa=C;ia=vf(gb|0,0,666643,0)|0;ua=C;Qa=vf(gb|0,0,470296,0)|0;Ra=C;Oa=vf(gb|0,0,654183,0)|0;Na=C;Ya=vf(gb|0,0,-997805,-1)|0;Xa=C;Ja=vf(gb|0,0,136657,0)|0;Ia=C;gb=vf(gb|0,0,-683901,-1)|0;fb=lf(gb|0,C|0,fb&2097151|0,0)|0;db=lf(fb|0,C|0,eb|0,db|0)|0;Ua=lf(db|0,C|0,cb|0,Ua|0)|0;s=lf(Ua|0,C|0,Va|0,s|0)|0;I=lf(s|0,C|0,Q|0,I|0)|0;Q=C;s=vf(Ma|0,0,666643,0)|0;Ca=lf(s|0,C|0,Ca&2097151|0,0)|0;s=C;Va=vf(Ma|0,0,470296,0)|0;Ua=C;cb=vf(Ma|0,0,654183,0)|0;_a=lf(cb|0,C|0,bb|ab|$a&2031616|0,_a|0)|0;Ra=lf(_a|0,C|0,Qa|0,Ra|0)|0;ya=lf(Ra|0,C|0,sa|0,ya|0)|0;sa=C;Ra=vf(Ma|0,0,-997805,-1)|0;Qa=C;_a=vf(Ma|0,0,136657,0)|0;Za=lf(_a|0,C|0,Za&2097151|0,0)|0;Xa=lf(Za|0,C|0,Ya|0,Xa|0)|0;Z=lf(Xa|0,C|0,Wa|0,Z|0)|0;La=lf(Z|0,C|0,wa|0,La|0)|0;oa=lf(La|0,C|0,na|0,oa|0)|0;na=C;Ma=vf(Ma|0,0,-683901,-1)|0;La=C;wa=lf(Ca|0,s|0,1048576,0)|0;wa=of(wa|0,C|0,21)|0;Z=C;Sa=lf(Va|0,Ua|0,Ta|0,Sa|0)|0;Sa=lf(Sa|0,C|0,wa|0,Z|0)|0;ua=lf(Sa|0,C|0,ia|0,ua|0)|0;ia=C;Z=pf(wa|0,Z|0,21)|0;Z=kf(Ca|0,s|0,Z|0,C|0)|0;s=C;Ca=lf(ya|0,sa|0,1048576,0)|0;Ca=of(Ca|0,C|0,21)|0;wa=C;Pa=lf(Ra|0,Qa|0,Pa&2097151|0,0)|0;Na=lf(Pa|0,C|0,Oa|0,Na|0)|0;Aa=lf(Na|0,C|0,xa|0,Aa|0)|0;ra=lf(Aa|0,C|0,e|0,ra|0)|0;ra=lf(ra|0,C|0,Ca|0,wa|0)|0;e=C;wa=pf(Ca|0,wa|0,21)|0;Ca=C;Aa=lf(oa|0,na|0,1048576,0)|0;Aa=mf(Aa|0,C|0,21)|0;xa=C;Ka=lf(Ma|0,La|0,Ka&2097151|0,0)|0;Ia=lf(Ka|0,C|0,Ja|0,Ia|0)|0;Ga=lf(Ia|0,C|0,Ha|0,Ga|0)|0;da=lf(Ga|0,C|0,Fa|0,da|0)|0;o=lf(da|0,C|0,M|0,o|0)|0;ha=lf(o|0,C|0,R|0,ha|0)|0;ha=lf(ha|0,C|0,Aa|0,xa|0)|0;R=C;xa=pf(Aa|0,xa|0,21)|0;Aa=C;o=lf(I|0,Q|0,1048576,0)|0;o=mf(o|0,C|0,21)|0;M=C;qa=lf(W|0,pa|0,qa&2097151|0,0)|0;x=lf(qa|0,C|0,ka|0,x|0)|0;_=lf(x|0,C|0,ma|0,_|0)|0;ta=lf(_|0,C|0,ca|0,ta|0)|0;ta=lf(ta|0,C|0,o|0,M|0)|0;ca=C;M=pf(o|0,M|0,21)|0;M=kf(I|0,Q|0,M|0,C|0)|0;Q=C;I=lf(t|0,Ea|0,1048576,0)|0;I=mf(I|0,C|0,21)|0;o=C;fa=lf(ja|0,H|0,la|0,fa|0)|0;B=lf(fa|0,C|0,k|0,B|0)|0;B=lf(B|0,C|0,I|0,o|0)|0;k=C;o=pf(I|0,o|0,21)|0;o=kf(t|0,Ea|0,o|0,C|0)|0;Ea=C;t=lf(j|0,za|0,1048576,0)|0;t=mf(t|0,C|0,21)|0;I=C;L=lf(t|0,I|0,L&2097151|0,0)|0;fa=C;I=pf(t|0,I|0,21)|0;I=kf(j|0,za|0,I|0,C|0)|0;za=C;j=lf(ua|0,ia|0,1048576,0)|0;j=of(j|0,C|0,21)|0;t=C;la=pf(j|0,t|0,21)|0;la=kf(ua|0,ia|0,la|0,C|0)|0;ia=C;ua=lf(ra|0,e|0,1048576,0)|0;ua=mf(ua|0,C|0,21)|0;H=C;ja=pf(ua|0,H|0,21)|0;ja=kf(ra|0,e|0,ja|0,C|0)|0;e=C;ra=lf(ha|0,R|0,1048576,0)|0;ra=mf(ra|0,C|0,21)|0;_=C;Q=lf(M|0,Q|0,ra|0,_|0)|0;M=C;_=pf(ra|0,_|0,21)|0;_=kf(ha|0,R|0,_|0,C|0)|0;R=C;ha=lf(ta|0,ca|0,1048576,0)|0;ha=mf(ha|0,C|0,21)|0;ra=C;Ea=lf(ha|0,ra|0,o|0,Ea|0)|0;o=C;ra=pf(ha|0,ra|0,21)|0;ra=kf(ta|0,ca|0,ra|0,C|0)|0;ca=C;ta=lf(B|0,k|0,1048576,0)|0;ta=mf(ta|0,C|0,21)|0;ha=C;za=lf(ta|0,ha|0,I|0,za|0)|0;I=C;ha=pf(ta|0,ha|0,21)|0;ha=kf(B|0,k|0,ha|0,C|0)|0;k=C;B=vf(L|0,fa|0,666643,0)|0;Da=lf(B|0,C|0,Da&2097151|0,0)|0;B=C;ta=vf(L|0,fa|0,470296,0)|0;ta=lf(Z|0,s|0,ta|0,C|0)|0;s=C;Z=vf(L|0,fa|0,654183,0)|0;Z=lf(la|0,ia|0,Z|0,C|0)|0;ia=C;la=vf(L|0,fa|0,-997805,-1)|0;ma=C;x=vf(L|0,fa|0,136657,0)|0;x=lf(ja|0,e|0,x|0,C|0)|0;e=C;fa=vf(L|0,fa|0,-683901,-1)|0;L=C;H=lf(oa|0,na|0,ua|0,H|0)|0;Aa=kf(H|0,C|0,xa|0,Aa|0)|0;L=lf(Aa|0,C|0,fa|0,L|0)|0;fa=C;Aa=vf(za|0,I|0,666643,0)|0;D=lf(Aa|0,C|0,D&2097151|0,0)|0;Aa=C;xa=vf(za|0,I|0,470296,0)|0;xa=lf(Da|0,B|0,xa|0,C|0)|0;B=C;Da=vf(za|0,I|0,654183,0)|0;Da=lf(ta|0,s|0,Da|0,C|0)|0;s=C;ta=vf(za|0,I|0,-997805,-1)|0;ta=lf(Z|0,ia|0,ta|0,C|0)|0;ia=C;Z=vf(za|0,I|0,136657,0)|0;H=C;I=vf(za|0,I|0,-683901,-1)|0;I=lf(x|0,e|0,I|0,C|0)|0;e=C;x=vf(ha|0,k|0,666643,0)|0;y=lf(x|0,C|0,y&2097151|0,0)|0;x=C;za=vf(ha|0,k|0,470296,0)|0;za=lf(D|0,Aa|0,za|0,C|0)|0;Aa=C;D=vf(ha|0,k|0,654183,0)|0;D=lf(xa|0,B|0,D|0,C|0)|0;B=C;xa=vf(ha|0,k|0,-997805,-1)|0;xa=lf(Da|0,s|0,xa|0,C|0)|0;s=C;Da=vf(ha|0,k|0,136657,0)|0;Da=lf(ta|0,ia|0,Da|0,C|0)|0;ia=C;k=vf(ha|0,k|0,-683901,-1)|0;ha=C;t=lf(ya|0,sa|0,j|0,t|0)|0;Ca=kf(t|0,C|0,wa|0,Ca|0)|0;ma=lf(Ca|0,C|0,la|0,ma|0)|0;H=lf(ma|0,C|0,Z|0,H|0)|0;ha=lf(H|0,C|0,k|0,ha|0)|0;k=C;H=vf(Ea|0,o|0,666643,0)|0;Z=C;ma=vf(Ea|0,o|0,470296,0)|0;la=C;Ca=vf(Ea|0,o|0,654183,0)|0;wa=C;t=vf(Ea|0,o|0,-997805,-1)|0;j=C;sa=vf(Ea|0,o|0,136657,0)|0;sa=lf(xa|0,s|0,sa|0,C|0)|0;s=C;o=vf(Ea|0,o|0,-683901,-1)|0;o=lf(Da|0,ia|0,o|0,C|0)|0;ia=C;Da=vf(ra|0,ca|0,666643,0)|0;Ea=C;xa=vf(ra|0,ca|0,470296,0)|0;ya=C;ta=vf(ra|0,ca|0,654183,0)|0;ua=C;na=vf(ra|0,ca|0,-997805,-1)|0;oa=C;ja=vf(ra|0,ca|0,136657,0)|0;ka=C;ca=vf(ra|0,ca|0,-683901,-1)|0;ca=lf(sa|0,s|0,ca|0,C|0)|0;s=C;sa=vf(Q|0,M|0,666643,0)|0;va=lf(sa|0,C|0,n|f|V&2031616|0,va|0)|0;V=C;f=vf(Q|0,M|0,470296,0)|0;n=C;sa=vf(Q|0,M|0,654183,0)|0;Ba=lf(sa|0,C|0,Ba&2097151|0,0)|0;Z=lf(Ba|0,C|0,H|0,Z|0)|0;ya=lf(Z|0,C|0,xa|0,ya|0)|0;xa=C;Z=vf(Q|0,M|0,-997805,-1)|0;H=C;Ba=vf(Q|0,M|0,136657,0)|0;Ba=lf(za|0,Aa|0,Ba|0,C|0)|0;wa=lf(Ba|0,C|0,Ca|0,wa|0)|0;oa=lf(wa|0,C|0,na|0,oa|0)|0;na=C;M=vf(Q|0,M|0,-683901,-1)|0;Q=C;wa=lf(va|0,V|0,1048576,0)|0;wa=mf(wa|0,C|0,21)|0;Ca=C;ga=lf(f|0,n|0,ga&2097151|0,0)|0;Ea=lf(ga|0,C|0,Da|0,Ea|0)|0;Ea=lf(Ea|0,C|0,wa|0,Ca|0)|0;Da=C;Ca=pf(wa|0,Ca|0,21)|0;Ca=kf(va|0,V|0,Ca|0,C|0)|0;V=C;va=lf(ya|0,xa|0,1048576,0)|0;va=mf(va|0,C|0,21)|0;wa=C;H=lf(y|0,x|0,Z|0,H|0)|0;la=lf(H|0,C|0,ma|0,la|0)|0;ua=lf(la|0,C|0,ta|0,ua|0)|0;ua=lf(ua|0,C|0,va|0,wa|0)|0;ta=C;wa=pf(va|0,wa|0,21)|0;va=C;la=lf(oa|0,na|0,1048576,0)|0;la=mf(la|0,C|0,21)|0;ma=C;Q=lf(D|0,B|0,M|0,Q|0)|0;j=lf(Q|0,C|0,t|0,j|0)|0;ka=lf(j|0,C|0,ja|0,ka|0)|0;ka=lf(ka|0,C|0,la|0,ma|0)|0;ja=C;ma=pf(la|0,ma|0,21)|0;la=C;j=lf(ca|0,s|0,1048576,0)|0;j=mf(j|0,C|0,21)|0;t=C;ia=lf(o|0,ia|0,j|0,t|0)|0;o=C;t=pf(j|0,t|0,21)|0;t=kf(ca|0,s|0,t|0,C|0)|0;s=C;ca=lf(ha|0,k|0,1048576,0)|0;ca=mf(ca|0,C|0,21)|0;j=C;e=lf(I|0,e|0,ca|0,j|0)|0;I=C;j=pf(ca|0,j|0,21)|0;j=kf(ha|0,k|0,j|0,C|0)|0;k=C;ha=lf(L|0,fa|0,1048576,0)|0;ha=mf(ha|0,C|0,21)|0;ca=C;R=lf(_|0,R|0,ha|0,ca|0)|0;_=C;ca=pf(ha|0,ca|0,21)|0;ca=kf(L|0,fa|0,ca|0,C|0)|0;fa=C;L=lf(Ea|0,Da|0,1048576,0)|0;L=mf(L|0,C|0,21)|0;ha=C;Q=pf(L|0,ha|0,21)|0;M=C;B=lf(ua|0,ta|0,1048576,0)|0;B=mf(B|0,C|0,21)|0;D=C;H=pf(B|0,D|0,21)|0;Z=C;x=lf(ka|0,ja|0,1048576,0)|0;x=mf(x|0,C|0,21)|0;y=C;s=lf(t|0,s|0,x|0,y|0)|0;t=C;y=pf(x|0,y|0,21)|0;x=C;ga=lf(ia|0,o|0,1048576,0)|0;ga=mf(ga|0,C|0,21)|0;n=C;k=lf(j|0,k|0,ga|0,n|0)|0;j=C;n=pf(ga|0,n|0,21)|0;n=kf(ia|0,o|0,n|0,C|0)|0;o=C;ia=lf(e|0,I|0,1048576,0)|0;ia=mf(ia|0,C|0,21)|0;ga=C;fa=lf(ca|0,fa|0,ia|0,ga|0)|0;ca=C;ga=pf(ia|0,ga|0,21)|0;ga=kf(e|0,I|0,ga|0,C|0)|0;I=C;e=lf(R|0,_|0,1048576,0)|0;e=mf(e|0,C|0,21)|0;ia=C;f=pf(e|0,ia|0,21)|0;f=kf(R|0,_|0,f|0,C|0)|0;_=C;R=vf(e|0,ia|0,666643,0)|0;R=lf(Ca|0,V|0,R|0,C|0)|0;V=C;Ca=vf(e|0,ia|0,470296,0)|0;Ba=C;Aa=vf(e|0,ia|0,654183,0)|0;za=C;sa=vf(e|0,ia|0,-997805,-1)|0;ra=C;qa=vf(e|0,ia|0,136657,0)|0;pa=C;ia=vf(e|0,ia|0,-683901,-1)|0;e=C;W=mf(R|0,V|0,21)|0;da=C;Ba=lf(Ea|0,Da|0,Ca|0,Ba|0)|0;Ba=lf(Ba|0,C|0,W|0,da|0)|0;M=kf(Ba|0,C|0,Q|0,M|0)|0;Q=C;da=pf(W|0,da|0,21)|0;da=kf(R|0,V|0,da|0,C|0)|0;V=C;R=mf(M|0,Q|0,21)|0;W=C;xa=lf(Aa|0,za|0,ya|0,xa|0)|0;va=kf(xa|0,C|0,wa|0,va|0)|0;ha=lf(va|0,C|0,L|0,ha|0)|0;ha=lf(ha|0,C|0,R|0,W|0)|0;L=C;W=pf(R|0,W|0,21)|0;W=kf(M|0,Q|0,W|0,C|0)|0;Q=C;M=mf(ha|0,L|0,21)|0;R=C;ra=lf(ua|0,ta|0,sa|0,ra|0)|0;Z=kf(ra|0,C|0,H|0,Z|0)|0;Z=lf(Z|0,C|0,M|0,R|0)|0;H=C;R=pf(M|0,R|0,21)|0;R=kf(ha|0,L|0,R|0,C|0)|0;L=C;ha=mf(Z|0,H|0,21)|0;M=C;na=lf(qa|0,pa|0,oa|0,na|0)|0;la=kf(na|0,C|0,ma|0,la|0)|0;D=lf(la|0,C|0,B|0,D|0)|0;D=lf(D|0,C|0,ha|0,M|0)|0;B=C;M=pf(ha|0,M|0,21)|0;M=kf(Z|0,H|0,M|0,C|0)|0;H=C;Z=mf(D|0,B|0,21)|0;ha=C;e=lf(ka|0,ja|0,ia|0,e|0)|0;x=kf(e|0,C|0,y|0,x|0)|0;x=lf(x|0,C|0,Z|0,ha|0)|0;y=C;ha=pf(Z|0,ha|0,21)|0;ha=kf(D|0,B|0,ha|0,C|0)|0;B=C;D=mf(x|0,y|0,21)|0;Z=C;t=lf(s|0,t|0,D|0,Z|0)|0;s=C;Z=pf(D|0,Z|0,21)|0;Z=kf(x|0,y|0,Z|0,C|0)|0;y=C;x=mf(t|0,s|0,21)|0;D=C;o=lf(x|0,D|0,n|0,o|0)|0;n=C;D=pf(x|0,D|0,21)|0;D=kf(t|0,s|0,D|0,C|0)|0;s=C;t=mf(o|0,n|0,21)|0;x=C;j=lf(k|0,j|0,t|0,x|0)|0;k=C;x=pf(t|0,x|0,21)|0;x=kf(o|0,n|0,x|0,C|0)|0;n=C;o=mf(j|0,k|0,21)|0;t=C;I=lf(o|0,t|0,ga|0,I|0)|0;ga=C;t=pf(o|0,t|0,21)|0;t=kf(j|0,k|0,t|0,C|0)|0;k=C;j=mf(I|0,ga|0,21)|0;o=C;ca=lf(fa|0,ca|0,j|0,o|0)|0;fa=C;o=pf(j|0,o|0,21)|0;o=kf(I|0,ga|0,o|0,C|0)|0;ga=C;I=mf(ca|0,fa|0,21)|0;j=C;_=lf(I|0,j|0,f|0,_|0)|0;f=C;j=pf(I|0,j|0,21)|0;j=kf(ca|0,fa|0,j|0,C|0)|0;fa=C;ca=mf(_|0,f|0,21)|0;I=C;e=pf(ca|0,I|0,21)|0;e=kf(_|0,f|0,e|0,C|0)|0;f=C;_=vf(ca|0,I|0,666643,0)|0;V=lf(_|0,C|0,da|0,V|0)|0;da=C;_=vf(ca|0,I|0,470296,0)|0;_=lf(W|0,Q|0,_|0,C|0)|0;Q=C;W=vf(ca|0,I|0,654183,0)|0;W=lf(R|0,L|0,W|0,C|0)|0;L=C;R=vf(ca|0,I|0,-997805,-1)|0;R=lf(M|0,H|0,R|0,C|0)|0;H=C;M=vf(ca|0,I|0,136657,0)|0;M=lf(ha|0,B|0,M|0,C|0)|0;B=C;I=vf(ca|0,I|0,-683901,-1)|0;I=lf(Z|0,y|0,I|0,C|0)|0;y=C;Z=mf(V|0,da|0,21)|0;ca=C;Q=lf(_|0,Q|0,Z|0,ca|0)|0;_=C;ca=pf(Z|0,ca|0,21)|0;ca=kf(V|0,da|0,ca|0,C|0)|0;da=C;V=mf(Q|0,_|0,21)|0;Z=C;L=lf(W|0,L|0,V|0,Z|0)|0;W=C;Z=pf(V|0,Z|0,21)|0;Z=kf(Q|0,_|0,Z|0,C|0)|0;_=C;Q=mf(L|0,W|0,21)|0;V=C;H=lf(R|0,H|0,Q|0,V|0)|0;R=C;V=pf(Q|0,V|0,21)|0;V=kf(L|0,W|0,V|0,C|0)|0;W=C;L=mf(H|0,R|0,21)|0;Q=C;B=lf(M|0,B|0,L|0,Q|0)|0;M=C;Q=pf(L|0,Q|0,21)|0;Q=kf(H|0,R|0,Q|0,C|0)|0;R=C;H=mf(B|0,M|0,21)|0;L=C;y=lf(I|0,y|0,H|0,L|0)|0;I=C;L=pf(H|0,L|0,21)|0;L=kf(B|0,M|0,L|0,C|0)|0;M=C;B=mf(y|0,I|0,21)|0;H=C;s=lf(B|0,H|0,D|0,s|0)|0;D=C;H=pf(B|0,H|0,21)|0;H=kf(y|0,I|0,H|0,C|0)|0;I=C;y=mf(s|0,D|0,21)|0;B=C;n=lf(y|0,B|0,x|0,n|0)|0;x=C;B=pf(y|0,B|0,21)|0;B=kf(s|0,D|0,B|0,C|0)|0;D=C;s=mf(n|0,x|0,21)|0;y=C;k=lf(s|0,y|0,t|0,k|0)|0;t=C;y=pf(s|0,y|0,21)|0;y=kf(n|0,x|0,y|0,C|0)|0;x=C;n=mf(k|0,t|0,21)|0;s=C;ga=lf(n|0,s|0,o|0,ga|0)|0;o=C;s=pf(n|0,s|0,21)|0;s=kf(k|0,t|0,s|0,C|0)|0;t=C;k=mf(ga|0,o|0,21)|0;n=C;fa=lf(k|0,n|0,j|0,fa|0)|0;j=C;n=pf(k|0,n|0,21)|0;n=kf(ga|0,o|0,n|0,C|0)|0;o=C;ga=mf(fa|0,j|0,21)|0;k=C;f=lf(ga|0,k|0,e|0,f|0)|0;e=C;k=pf(ga|0,k|0,21)|0;k=kf(fa|0,j|0,k|0,C|0)|0;j=C;a[b>>0]=ca;b=of(ca|0,da|0,8)|0;a[ea>>0]=b;b=of(ca|0,da|0,16)|0;da=C;ca=pf(Z|0,_|0,5)|0;a[ba>>0]=ca|b;b=of(Z|0,_|0,3)|0;a[aa>>0]=b;b=of(Z|0,_|0,11)|0;a[$>>0]=b;b=of(Z|0,_|0,19)|0;_=C;Z=pf(V|0,W|0,2)|0;a[Y>>0]=Z|b;b=of(V|0,W|0,6)|0;a[X>>0]=b;b=of(V|0,W|0,14)|0;W=C;V=pf(Q|0,R|0,7)|0;a[U>>0]=V|b;b=of(Q|0,R|0,1)|0;a[T>>0]=b;b=of(Q|0,R|0,9)|0;a[S>>0]=b;b=of(Q|0,R|0,17)|0;R=C;Q=pf(L|0,M|0,4)|0;a[P>>0]=Q|b;b=of(L|0,M|0,4)|0;a[O>>0]=b;b=of(L|0,M|0,12)|0;a[N>>0]=b;b=of(L|0,M|0,20)|0;M=C;L=pf(H|0,I|0,1)|0;a[K>>0]=L|b;b=of(H|0,I|0,7)|0;a[J>>0]=b;b=of(H|0,I|0,15)|0;I=C;H=pf(B|0,D|0,6)|0;a[G>>0]=H|b;b=of(B|0,D|0,2)|0;a[F>>0]=b;b=of(B|0,D|0,10)|0;a[E>>0]=b;b=of(B|0,D|0,18)|0;D=C;B=pf(y|0,x|0,3)|0;a[A>>0]=B|b;b=of(y|0,x|0,5)|0;a[z>>0]=b;b=of(y|0,x|0,13)|0;a[w>>0]=b;a[v>>0]=s;b=of(s|0,t|0,8)|0;a[u>>0]=b;b=of(s|0,t|0,16)|0;t=C;s=pf(n|0,o|0,5)|0;a[r>>0]=s|b;b=of(n|0,o|0,3)|0;a[q>>0]=b;b=of(n|0,o|0,11)|0;a[p>>0]=b;b=of(n|0,o|0,19)|0;o=C;n=pf(k|0,j|0,2)|0;a[m>>0]=n|b;b=of(k|0,j|0,6)|0;a[l>>0]=b;j=of(k|0,j|0,14)|0;k=C;b=pf(f|0,e|0,7)|0;a[i>>0]=j|b;b=of(f|0,e|0,1)|0;a[h>>0]=b;b=of(f|0,e|0,9)|0;a[g>>0]=b;b=of(f|0,e|0,17)|0;a[c>>0]=b;return}function Md(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0;A=a[c+2>>0]|0;Ma=d[c>>0]|0;qb=pf(d[c+1>>0]|0|0,0,8)|0;jb=C;A=A&255;db=pf(A|0,0,16)|0;db=qb|Ma|db&2031616;Ma=pf(d[c+3>>0]|0|0,0,8)|0;qb=C;z=pf(d[c+4>>0]|0|0,0,16)|0;qb=qb|C;nb=d[c+5>>0]|0;Ya=pf(nb|0,0,24)|0;qb=of(Ma|A|z|Ya|0,qb|C|0,5)|0;qb=qb&2097151;Ya=a[c+7>>0]|0;z=pf(d[c+6>>0]|0|0,0,8)|0;A=C;Ya=Ya&255;Ma=pf(Ya|0,0,16)|0;A=of(z|nb|Ma|0,A|C|0,2)|0;A=A&2097151;Ma=pf(d[c+8>>0]|0|0,0,8)|0;nb=C;z=pf(d[c+9>>0]|0|0,0,16)|0;nb=nb|C;j=d[c+10>>0]|0;La=pf(j|0,0,24)|0;nb=of(Ma|Ya|z|La|0,nb|C|0,7)|0;nb=nb&2097151;La=pf(d[c+11>>0]|0|0,0,8)|0;z=C;Ya=pf(d[c+12>>0]|0|0,0,16)|0;z=z|C;Ma=d[c+13>>0]|0;I=pf(Ma|0,0,24)|0;z=of(La|j|Ya|I|0,z|C|0,4)|0;z=z&2097151;I=a[c+15>>0]|0;Ya=pf(d[c+14>>0]|0|0,0,8)|0;j=C;I=I&255;La=pf(I|0,0,16)|0;j=of(Ya|Ma|La|0,j|C|0,1)|0;j=j&2097151;La=pf(d[c+16>>0]|0|0,0,8)|0;Ma=C;Ya=pf(d[c+17>>0]|0|0,0,16)|0;Ma=Ma|C;sc=d[c+18>>0]|0;ca=pf(sc|0,0,24)|0;Ma=of(La|I|Ya|ca|0,Ma|C|0,6)|0;Ma=Ma&2097151;ca=a[c+20>>0]|0;Ya=pf(d[c+19>>0]|0|0,0,8)|0;I=C;ca=pf(ca&255|0,0,16)|0;I=of(Ya|sc|ca|0,I|C|0,3)|0;ca=C;sc=a[c+23>>0]|0;Ya=d[c+21>>0]|0;La=pf(d[c+22>>0]|0|0,0,8)|0;lb=C;sc=sc&255;Ja=pf(sc|0,0,16)|0;Ja=La|Ya|Ja&2031616;Ya=pf(d[c+24>>0]|0|0,0,8)|0;La=C;q=pf(d[c+25>>0]|0|0,0,16)|0;La=La|C;o=d[c+26>>0]|0;m=pf(o|0,0,24)|0;La=of(Ya|sc|q|m|0,La|C|0,5)|0;La=La&2097151;m=a[c+28>>0]|0;q=pf(d[c+27>>0]|0|0,0,8)|0;sc=C;m=m&255;Ya=pf(m|0,0,16)|0;sc=of(q|o|Ya|0,sc|C|0,2)|0;sc=sc&2097151;Ya=pf(d[c+29>>0]|0|0,0,8)|0;o=C;q=pf(d[c+30>>0]|0|0,0,16)|0;o=o|C;Da=pf(d[c+31>>0]|0|0,0,24)|0;o=of(Ya|m|q|Da|0,o|C|0,7)|0;Da=C;q=a[e+2>>0]|0;m=d[e>>0]|0;Ya=pf(d[e+1>>0]|0|0,0,8)|0;ba=C;q=q&255;aa=pf(q|0,0,16)|0;aa=Ya|m|aa&2031616;m=pf(d[e+3>>0]|0|0,0,8)|0;Ya=C;ea=pf(d[e+4>>0]|0|0,0,16)|0;Ya=Ya|C;p=d[e+5>>0]|0;pc=pf(p|0,0,24)|0;Ya=of(m|q|ea|pc|0,Ya|C|0,5)|0;Ya=Ya&2097151;pc=a[e+7>>0]|0;ea=pf(d[e+6>>0]|0|0,0,8)|0;q=C;pc=pc&255;m=pf(pc|0,0,16)|0;q=of(ea|p|m|0,q|C|0,2)|0;q=q&2097151;m=pf(d[e+8>>0]|0|0,0,8)|0;p=C;ea=pf(d[e+9>>0]|0|0,0,16)|0;p=p|C;Ta=d[e+10>>0]|0;Ia=pf(Ta|0,0,24)|0;p=of(m|pc|ea|Ia|0,p|C|0,7)|0;p=p&2097151;Ia=pf(d[e+11>>0]|0|0,0,8)|0;ea=C;pc=pf(d[e+12>>0]|0|0,0,16)|0;ea=ea|C;m=d[e+13>>0]|0;vc=pf(m|0,0,24)|0;ea=of(Ia|Ta|pc|vc|0,ea|C|0,4)|0;ea=ea&2097151;vc=a[e+15>>0]|0;pc=pf(d[e+14>>0]|0|0,0,8)|0;Ta=C;vc=vc&255;Ia=pf(vc|0,0,16)|0;Ta=of(pc|m|Ia|0,Ta|C|0,1)|0;Ta=Ta&2097151;Ia=pf(d[e+16>>0]|0|0,0,8)|0;m=C;pc=pf(d[e+17>>0]|0|0,0,16)|0;m=m|C;K=d[e+18>>0]|0;ub=pf(K|0,0,24)|0;m=of(Ia|vc|pc|ub|0,m|C|0,6)|0;m=m&2097151;ub=a[e+20>>0]|0;pc=pf(d[e+19>>0]|0|0,0,8)|0;vc=C;ub=pf(ub&255|0,0,16)|0;vc=of(pc|K|ub|0,vc|C|0,3)|0;ub=C;K=a[e+23>>0]|0;pc=d[e+21>>0]|0;Ia=pf(d[e+22>>0]|0|0,0,8)|0;wa=C;K=K&255;na=pf(K|0,0,16)|0;na=Ia|pc|na&2031616;pc=pf(d[e+24>>0]|0|0,0,8)|0;Ia=C;Fa=pf(d[e+25>>0]|0|0,0,16)|0;Ia=Ia|C;x=d[e+26>>0]|0;qc=pf(x|0,0,24)|0;Ia=of(pc|K|Fa|qc|0,Ia|C|0,5)|0;Ia=Ia&2097151;qc=a[e+28>>0]|0;Fa=pf(d[e+27>>0]|0|0,0,8)|0;K=C;qc=qc&255;pc=pf(qc|0,0,16)|0;K=of(Fa|x|pc|0,K|C|0,2)|0;K=K&2097151;pc=pf(d[e+29>>0]|0|0,0,8)|0;x=C;Fa=pf(d[e+30>>0]|0|0,0,16)|0;x=x|C;Ba=pf(d[e+31>>0]|0|0,0,24)|0;x=of(pc|qc|Fa|Ba|0,x|C|0,7)|0;Ba=C;Fa=a[f+2>>0]|0;qc=d[f>>0]|0;pc=pf(d[f+1>>0]|0|0,0,8)|0;W=C;Fa=Fa&255;rc=pf(Fa|0,0,16)|0;Qa=pf(d[f+3>>0]|0|0,0,8)|0;xa=C;za=pf(d[f+4>>0]|0|0,0,16)|0;xa=xa|C;ib=d[f+5>>0]|0;sa=pf(ib|0,0,24)|0;xa=of(Qa|Fa|za|sa|0,xa|C|0,5)|0;sa=a[f+7>>0]|0;za=pf(d[f+6>>0]|0|0,0,8)|0;Fa=C;sa=sa&255;Qa=pf(sa|0,0,16)|0;Fa=of(za|ib|Qa|0,Fa|C|0,2)|0;Qa=pf(d[f+8>>0]|0|0,0,8)|0;ib=C;za=pf(d[f+9>>0]|0|0,0,16)|0;ib=ib|C;Q=d[f+10>>0]|0;H=pf(Q|0,0,24)|0;ib=of(Qa|sa|za|H|0,ib|C|0,7)|0;H=pf(d[f+11>>0]|0|0,0,8)|0;za=C;sa=pf(d[f+12>>0]|0|0,0,16)|0;za=za|C;Qa=d[f+13>>0]|0;B=pf(Qa|0,0,24)|0;za=of(H|Q|sa|B|0,za|C|0,4)|0;B=a[f+15>>0]|0;sa=pf(d[f+14>>0]|0|0,0,8)|0;Q=C;B=B&255;H=pf(B|0,0,16)|0;Q=of(sa|Qa|H|0,Q|C|0,1)|0;H=pf(d[f+16>>0]|0|0,0,8)|0;Qa=C;sa=pf(d[f+17>>0]|0|0,0,16)|0;Qa=Qa|C;N=d[f+18>>0]|0;h=pf(N|0,0,24)|0;Qa=of(H|B|sa|h|0,Qa|C|0,6)|0;h=a[f+20>>0]|0;sa=pf(d[f+19>>0]|0|0,0,8)|0;B=C;h=pf(h&255|0,0,16)|0;B=of(sa|N|h|0,B|C|0,3)|0;h=C;N=a[f+23>>0]|0;sa=d[f+21>>0]|0;H=pf(d[f+22>>0]|0|0,0,8)|0;Y=C;N=N&255;Z=pf(N|0,0,16)|0;ua=pf(d[f+24>>0]|0|0,0,8)|0;G=C;Aa=pf(d[f+25>>0]|0|0,0,16)|0;G=G|C;c=d[f+26>>0]|0;ma=pf(c|0,0,24)|0;G=of(ua|N|Aa|ma|0,G|C|0,5)|0;ma=a[f+28>>0]|0;Aa=pf(d[f+27>>0]|0|0,0,8)|0;N=C;ma=ma&255;ua=pf(ma|0,0,16)|0;N=of(Aa|c|ua|0,N|C|0,2)|0;ua=pf(d[f+29>>0]|0|0,0,8)|0;c=C;Aa=pf(d[f+30>>0]|0|0,0,16)|0;c=c|C;i=pf(d[f+31>>0]|0|0,0,24)|0;c=of(ua|ma|Aa|i|0,c|C|0,7)|0;i=C;Aa=vf(aa|0,ba|0,db|0,jb|0)|0;Aa=lf(pc|qc|rc&2031616|0,W|0,Aa|0,C|0)|0;W=C;rc=vf(Ya|0,0,db|0,jb|0)|0;qc=C;pc=vf(aa|0,ba|0,qb|0,0)|0;ma=C;ua=vf(q|0,0,db|0,jb|0)|0;Ea=C;va=vf(Ya|0,0,qb|0,0)|0;kc=C;ia=vf(aa|0,ba|0,A|0,0)|0;ia=lf(va|0,kc|0,ia|0,C|0)|0;Ea=lf(ia|0,C|0,ua|0,Ea|0)|0;Fa=lf(Ea|0,C|0,Fa&2097151|0,0)|0;Ea=C;ua=vf(p|0,0,db|0,jb|0)|0;ia=C;kc=vf(q|0,0,qb|0,0)|0;va=C;oc=vf(Ya|0,0,A|0,0)|0;nc=C;mc=vf(aa|0,ba|0,nb|0,0)|0;lc=C;Ha=vf(ea|0,0,db|0,jb|0)|0;ya=C;bc=vf(p|0,0,qb|0,0)|0;R=C;dc=vf(q|0,0,A|0,0)|0;Ga=C;ec=vf(Ya|0,0,nb|0,0)|0;fc=C;cc=vf(aa|0,ba|0,z|0,0)|0;cc=lf(ec|0,fc|0,cc|0,C|0)|0;Ga=lf(cc|0,C|0,dc|0,Ga|0)|0;R=lf(Ga|0,C|0,bc|0,R|0)|0;ya=lf(R|0,C|0,Ha|0,ya|0)|0;za=lf(ya|0,C|0,za&2097151|0,0)|0;ya=C;Ha=vf(Ta|0,0,db|0,jb|0)|0;R=C;bc=vf(ea|0,0,qb|0,0)|0;Ga=C;dc=vf(p|0,0,A|0,0)|0;cc=C;fc=vf(q|0,0,nb|0,0)|0;ec=C;jc=vf(Ya|0,0,z|0,0)|0;ic=C;hc=vf(aa|0,ba|0,j|0,0)|0;gc=C;X=vf(m|0,0,db|0,jb|0)|0;Ra=C;Qb=vf(Ta|0,0,qb|0,0)|0;da=C;Sb=vf(ea|0,0,A|0,0)|0;Pb=C;Ub=vf(p|0,0,nb|0,0)|0;Rb=C;Wb=vf(q|0,0,z|0,0)|0;Tb=C;Xb=vf(Ya|0,0,j|0,0)|0;Yb=C;Vb=vf(aa|0,ba|0,Ma|0,0)|0;Vb=lf(Xb|0,Yb|0,Vb|0,C|0)|0;Tb=lf(Vb|0,C|0,Wb|0,Tb|0)|0;Rb=lf(Tb|0,C|0,Ub|0,Rb|0)|0;Pb=lf(Rb|0,C|0,Sb|0,Pb|0)|0;da=lf(Pb|0,C|0,Qb|0,da|0)|0;Ra=lf(da|0,C|0,X|0,Ra|0)|0;Qa=lf(Ra|0,C|0,Qa&2097151|0,0)|0;Ra=C;X=vf(vc|0,ub|0,db|0,jb|0)|0;da=C;Qb=vf(m|0,0,qb|0,0)|0;Pb=C;Sb=vf(Ta|0,0,A|0,0)|0;Rb=C;Ub=vf(ea|0,0,nb|0,0)|0;Tb=C;Wb=vf(p|0,0,z|0,0)|0;Vb=C;Yb=vf(q|0,0,j|0,0)|0;Xb=C;ac=vf(Ya|0,0,Ma|0,0)|0;$b=C;_b=vf(aa|0,ba|0,I|0,ca|0)|0;Zb=C;ta=vf(na|0,wa|0,db|0,jb|0)|0;yb=C;zb=vf(vc|0,ub|0,qb|0,0)|0;Ab=C;Bb=vf(m|0,0,A|0,0)|0;Cb=C;Db=vf(Ta|0,0,nb|0,0)|0;Eb=C;Fb=vf(ea|0,0,z|0,0)|0;Gb=C;Hb=vf(p|0,0,j|0,0)|0;Ib=C;Jb=vf(q|0,0,Ma|0,0)|0;Kb=C;Mb=vf(Ya|0,0,I|0,ca|0)|0;Nb=C;Ob=vf(aa|0,ba|0,Ja|0,lb|0)|0;Ob=lf(Mb|0,Nb|0,Ob|0,C|0)|0;Kb=lf(Ob|0,C|0,Jb|0,Kb|0)|0;Ib=lf(Kb|0,C|0,Hb|0,Ib|0)|0;Gb=lf(Ib|0,C|0,Fb|0,Gb|0)|0;Eb=lf(Gb|0,C|0,Db|0,Eb|0)|0;Cb=lf(Eb|0,C|0,Bb|0,Cb|0)|0;Ab=lf(Cb|0,C|0,zb|0,Ab|0)|0;yb=lf(Ab|0,C|0,ta|0,yb|0)|0;Y=lf(yb|0,C|0,H|sa|Z&2031616|0,Y|0)|0;Z=C;sa=vf(Ia|0,0,db|0,jb|0)|0;H=C;yb=vf(na|0,wa|0,qb|0,0)|0;ta=C;Ab=vf(vc|0,ub|0,A|0,0)|0;zb=C;Cb=vf(m|0,0,nb|0,0)|0;Bb=C;Eb=vf(Ta|0,0,z|0,0)|0;Db=C;Gb=vf(ea|0,0,j|0,0)|0;Fb=C;Ib=vf(p|0,0,Ma|0,0)|0;Hb=C;Kb=vf(q|0,0,I|0,ca|0)|0;Jb=C;Ob=vf(Ya|0,0,Ja|0,lb|0)|0;Nb=C;Mb=vf(aa|0,ba|0,La|0,0)|0;Lb=C;O=vf(K|0,0,db|0,jb|0)|0;M=C;ab=vf(Ia|0,0,qb|0,0)|0;P=C;y=vf(na|0,wa|0,A|0,0)|0;bb=C;ob=vf(vc|0,ub|0,nb|0,0)|0;u=C;J=vf(m|0,0,z|0,0)|0;pb=C;Oa=vf(Ta|0,0,j|0,0)|0;D=C;gb=vf(ea|0,0,Ma|0,0)|0;Pa=C;U=vf(p|0,0,I|0,ca|0)|0;hb=C;Wa=vf(q|0,0,Ja|0,lb|0)|0;V=C;wb=vf(Ya|0,0,La|0,0)|0;xb=C;Xa=vf(aa|0,ba|0,sc|0,0)|0;Xa=lf(wb|0,xb|0,Xa|0,C|0)|0;V=lf(Xa|0,C|0,Wa|0,V|0)|0;hb=lf(V|0,C|0,U|0,hb|0)|0;Pa=lf(hb|0,C|0,gb|0,Pa|0)|0;D=lf(Pa|0,C|0,Oa|0,D|0)|0;pb=lf(D|0,C|0,J|0,pb|0)|0;u=lf(pb|0,C|0,ob|0,u|0)|0;bb=lf(u|0,C|0,y|0,bb|0)|0;P=lf(bb|0,C|0,ab|0,P|0)|0;M=lf(P|0,C|0,O|0,M|0)|0;N=lf(M|0,C|0,N&2097151|0,0)|0;M=C;jb=vf(x|0,Ba|0,db|0,jb|0)|0;db=C;O=vf(K|0,0,qb|0,0)|0;P=C;ab=vf(Ia|0,0,A|0,0)|0;bb=C;y=vf(na|0,wa|0,nb|0,0)|0;u=C;ob=vf(vc|0,ub|0,z|0,0)|0;pb=C;J=vf(m|0,0,j|0,0)|0;D=C;Oa=vf(Ta|0,0,Ma|0,0)|0;Pa=C;gb=vf(ea|0,0,I|0,ca|0)|0;hb=C;U=vf(p|0,0,Ja|0,lb|0)|0;V=C;Wa=vf(q|0,0,La|0,0)|0;Xa=C;xb=vf(Ya|0,0,sc|0,0)|0;wb=C;ba=vf(aa|0,ba|0,o|0,Da|0)|0;aa=C;qb=vf(x|0,Ba|0,qb|0,0)|0;rb=C;eb=vf(K|0,0,A|0,0)|0;w=C;fa=vf(Ia|0,0,nb|0,0)|0;fb=C;ha=vf(na|0,wa|0,z|0,0)|0;$=C;sb=vf(vc|0,ub|0,j|0,0)|0;kb=C;la=vf(m|0,0,Ma|0,0)|0;tb=C;qa=vf(Ta|0,0,I|0,ca|0)|0;ka=C;Na=vf(ea|0,0,Ja|0,lb|0)|0;pa=C;Za=vf(p|0,0,La|0,0)|0;ga=C;mb=vf(q|0,0,sc|0,0)|0;v=C;Ya=vf(Ya|0,0,o|0,Da|0)|0;Ya=lf(mb|0,v|0,Ya|0,C|0)|0;ga=lf(Ya|0,C|0,Za|0,ga|0)|0;pa=lf(ga|0,C|0,Na|0,pa|0)|0;ka=lf(pa|0,C|0,qa|0,ka|0)|0;tb=lf(ka|0,C|0,la|0,tb|0)|0;kb=lf(tb|0,C|0,sb|0,kb|0)|0;$=lf(kb|0,C|0,ha|0,$|0)|0;fb=lf($|0,C|0,fa|0,fb|0)|0;w=lf(fb|0,C|0,eb|0,w|0)|0;rb=lf(w|0,C|0,qb|0,rb|0)|0;qb=C;A=vf(x|0,Ba|0,A|0,0)|0;w=C;eb=vf(K|0,0,nb|0,0)|0;fb=C;fa=vf(Ia|0,0,z|0,0)|0;$=C;ha=vf(na|0,wa|0,j|0,0)|0;kb=C;sb=vf(vc|0,ub|0,Ma|0,0)|0;tb=C;la=vf(m|0,0,I|0,ca|0)|0;ka=C;qa=vf(Ta|0,0,Ja|0,lb|0)|0;pa=C;Na=vf(ea|0,0,La|0,0)|0;ga=C;Za=vf(p|0,0,sc|0,0)|0;Ya=C;q=vf(q|0,0,o|0,Da|0)|0;v=C;nb=vf(x|0,Ba|0,nb|0,0)|0;mb=C;_a=vf(K|0,0,z|0,0)|0;r=C;E=vf(Ia|0,0,j|0,0)|0;$a=C;n=vf(na|0,wa|0,Ma|0,0)|0;t=C;_=vf(vc|0,ub|0,I|0,ca|0)|0;g=C;ja=vf(m|0,0,Ja|0,lb|0)|0;s=C;oa=vf(Ta|0,0,La|0,0)|0;F=C;vb=vf(ea|0,0,sc|0,0)|0;l=C;p=vf(p|0,0,o|0,Da|0)|0;p=lf(vb|0,l|0,p|0,C|0)|0;F=lf(p|0,C|0,oa|0,F|0)|0;s=lf(F|0,C|0,ja|0,s|0)|0;g=lf(s|0,C|0,_|0,g|0)|0;t=lf(g|0,C|0,n|0,t|0)|0;$a=lf(t|0,C|0,E|0,$a|0)|0;r=lf($a|0,C|0,_a|0,r|0)|0;mb=lf(r|0,C|0,nb|0,mb|0)|0;nb=C;z=vf(x|0,Ba|0,z|0,0)|0;r=C;_a=vf(K|0,0,j|0,0)|0;$a=C;E=vf(Ia|0,0,Ma|0,0)|0;t=C;n=vf(na|0,wa|0,I|0,ca|0)|0;g=C;_=vf(vc|0,ub|0,Ja|0,lb|0)|0;s=C;ja=vf(m|0,0,La|0,0)|0;F=C;oa=vf(Ta|0,0,sc|0,0)|0;p=C;ea=vf(ea|0,0,o|0,Da|0)|0;l=C;j=vf(x|0,Ba|0,j|0,0)|0;vb=C;e=vf(K|0,0,Ma|0,0)|0;L=C;T=vf(Ia|0,0,I|0,ca|0)|0;Ka=C;Va=vf(na|0,wa|0,Ja|0,lb|0)|0;S=C;Sa=vf(vc|0,ub|0,La|0,0)|0;Ua=C;f=vf(m|0,0,sc|0,0)|0;k=C;Ta=vf(Ta|0,0,o|0,Da|0)|0;Ta=lf(f|0,k|0,Ta|0,C|0)|0;Ua=lf(Ta|0,C|0,Sa|0,Ua|0)|0;S=lf(Ua|0,C|0,Va|0,S|0)|0;Ka=lf(S|0,C|0,T|0,Ka|0)|0;L=lf(Ka|0,C|0,e|0,L|0)|0;vb=lf(L|0,C|0,j|0,vb|0)|0;j=C;Ma=vf(x|0,Ba|0,Ma|0,0)|0;L=C;e=vf(K|0,0,I|0,ca|0)|0;Ka=C;T=vf(Ia|0,0,Ja|0,lb|0)|0;S=C;Va=vf(na|0,wa|0,La|0,0)|0;Ua=C;Sa=vf(vc|0,ub|0,sc|0,0)|0;Ta=C;m=vf(m|0,0,o|0,Da|0)|0;k=C;ca=vf(x|0,Ba|0,I|0,ca|0)|0;f=C;I=vf(K|0,0,Ja|0,lb|0)|0;Ca=C;ra=vf(Ia|0,0,La|0,0)|0;cb=C;tc=vf(na|0,wa|0,sc|0,0)|0;uc=C;ub=vf(vc|0,ub|0,o|0,Da|0)|0;ub=lf(tc|0,uc|0,ub|0,C|0)|0;cb=lf(ub|0,C|0,ra|0,cb|0)|0;Ca=lf(cb|0,C|0,I|0,Ca|0)|0;f=lf(Ca|0,C|0,ca|0,f|0)|0;ca=C;lb=vf(x|0,Ba|0,Ja|0,lb|0)|0;Ja=C;Ca=vf(K|0,0,La|0,0)|0;I=C;cb=vf(Ia|0,0,sc|0,0)|0;ra=C;wa=vf(na|0,wa|0,o|0,Da|0)|0;na=C;La=vf(x|0,Ba|0,La|0,0)|0;ub=C;uc=vf(K|0,0,sc|0,0)|0;tc=C;Ia=vf(Ia|0,0,o|0,Da|0)|0;Ia=lf(uc|0,tc|0,Ia|0,C|0)|0;ub=lf(Ia|0,C|0,La|0,ub|0)|0;La=C;sc=vf(x|0,Ba|0,sc|0,0)|0;Ia=C;K=vf(K|0,0,o|0,Da|0)|0;K=lf(sc|0,Ia|0,K|0,C|0)|0;Ia=C;Da=vf(x|0,Ba|0,o|0,Da|0)|0;o=C;Ba=lf(Aa|0,W|0,1048576,0)|0;Ba=of(Ba|0,C|0,21)|0;x=C;ma=lf(rc|0,qc|0,pc|0,ma|0)|0;ma=lf(ma|0,C|0,Ba|0,x|0)|0;xa=lf(ma|0,C|0,xa&2097151|0,0)|0;ma=C;x=pf(Ba|0,x|0,21)|0;x=kf(Aa|0,W|0,x|0,C|0)|0;W=C;Aa=lf(Fa|0,Ea|0,1048576,0)|0;Aa=of(Aa|0,C|0,21)|0;Ba=C;lc=lf(oc|0,nc|0,mc|0,lc|0)|0;va=lf(lc|0,C|0,kc|0,va|0)|0;ia=lf(va|0,C|0,ua|0,ia|0)|0;ib=lf(ia|0,C|0,ib&2097151|0,0)|0;ib=lf(ib|0,C|0,Aa|0,Ba|0)|0;ia=C;Ba=pf(Aa|0,Ba|0,21)|0;Aa=C;ua=lf(za|0,ya|0,1048576,0)|0;ua=mf(ua|0,C|0,21)|0;va=C;gc=lf(jc|0,ic|0,hc|0,gc|0)|0;ec=lf(gc|0,C|0,fc|0,ec|0)|0;cc=lf(ec|0,C|0,dc|0,cc|0)|0;Ga=lf(cc|0,C|0,bc|0,Ga|0)|0;R=lf(Ga|0,C|0,Ha|0,R|0)|0;Q=lf(R|0,C|0,Q&2097151|0,0)|0;Q=lf(Q|0,C|0,ua|0,va|0)|0;R=C;va=pf(ua|0,va|0,21)|0;ua=C;Ha=lf(Qa|0,Ra|0,1048576,0)|0;Ha=mf(Ha|0,C|0,21)|0;Ga=C;Zb=lf(ac|0,$b|0,_b|0,Zb|0)|0;Xb=lf(Zb|0,C|0,Yb|0,Xb|0)|0;Vb=lf(Xb|0,C|0,Wb|0,Vb|0)|0;Tb=lf(Vb|0,C|0,Ub|0,Tb|0)|0;Rb=lf(Tb|0,C|0,Sb|0,Rb|0)|0;Pb=lf(Rb|0,C|0,Qb|0,Pb|0)|0;da=lf(Pb|0,C|0,X|0,da|0)|0;h=lf(da|0,C|0,B|0,h|0)|0;h=lf(h|0,C|0,Ha|0,Ga|0)|0;B=C;Ga=pf(Ha|0,Ga|0,21)|0;Ha=C;da=lf(Y|0,Z|0,1048576,0)|0;da=mf(da|0,C|0,21)|0;X=C;Lb=lf(Ob|0,Nb|0,Mb|0,Lb|0)|0;Jb=lf(Lb|0,C|0,Kb|0,Jb|0)|0;Hb=lf(Jb|0,C|0,Ib|0,Hb|0)|0;Fb=lf(Hb|0,C|0,Gb|0,Fb|0)|0;Db=lf(Fb|0,C|0,Eb|0,Db|0)|0;Bb=lf(Db|0,C|0,Cb|0,Bb|0)|0;zb=lf(Bb|0,C|0,Ab|0,zb|0)|0;ta=lf(zb|0,C|0,yb|0,ta|0)|0;H=lf(ta|0,C|0,sa|0,H|0)|0;G=lf(H|0,C|0,G&2097151|0,0)|0;G=lf(G|0,C|0,da|0,X|0)|0;H=C;X=pf(da|0,X|0,21)|0;da=C;sa=lf(N|0,M|0,1048576,0)|0;sa=mf(sa|0,C|0,21)|0;ta=C;aa=lf(xb|0,wb|0,ba|0,aa|0)|0;Xa=lf(aa|0,C|0,Wa|0,Xa|0)|0;V=lf(Xa|0,C|0,U|0,V|0)|0;hb=lf(V|0,C|0,gb|0,hb|0)|0;Pa=lf(hb|0,C|0,Oa|0,Pa|0)|0;D=lf(Pa|0,C|0,J|0,D|0)|0;pb=lf(D|0,C|0,ob|0,pb|0)|0;u=lf(pb|0,C|0,y|0,u|0)|0;bb=lf(u|0,C|0,ab|0,bb|0)|0;P=lf(bb|0,C|0,O|0,P|0)|0;db=lf(P|0,C|0,jb|0,db|0)|0;i=lf(db|0,C|0,c|0,i|0)|0;i=lf(i|0,C|0,sa|0,ta|0)|0;c=C;ta=pf(sa|0,ta|0,21)|0;sa=C;db=lf(rb|0,qb|0,1048576,0)|0;db=mf(db|0,C|0,21)|0;jb=C;v=lf(Za|0,Ya|0,q|0,v|0)|0;ga=lf(v|0,C|0,Na|0,ga|0)|0;pa=lf(ga|0,C|0,qa|0,pa|0)|0;ka=lf(pa|0,C|0,la|0,ka|0)|0;tb=lf(ka|0,C|0,sb|0,tb|0)|0;kb=lf(tb|0,C|0,ha|0,kb|0)|0;$=lf(kb|0,C|0,fa|0,$|0)|0;fb=lf($|0,C|0,eb|0,fb|0)|0;w=lf(fb|0,C|0,A|0,w|0)|0;w=lf(w|0,C|0,db|0,jb|0)|0;A=C;jb=pf(db|0,jb|0,21)|0;db=C;fb=lf(mb|0,nb|0,1048576,0)|0;fb=mf(fb|0,C|0,21)|0;eb=C;l=lf(oa|0,p|0,ea|0,l|0)|0;F=lf(l|0,C|0,ja|0,F|0)|0;s=lf(F|0,C|0,_|0,s|0)|0;g=lf(s|0,C|0,n|0,g|0)|0;t=lf(g|0,C|0,E|0,t|0)|0;$a=lf(t|0,C|0,_a|0,$a|0)|0;r=lf($a|0,C|0,z|0,r|0)|0;r=lf(r|0,C|0,fb|0,eb|0)|0;z=C;eb=pf(fb|0,eb|0,21)|0;fb=C;$a=lf(vb|0,j|0,1048576,0)|0;$a=mf($a|0,C|0,21)|0;_a=C;k=lf(Sa|0,Ta|0,m|0,k|0)|0;Ua=lf(k|0,C|0,Va|0,Ua|0)|0;S=lf(Ua|0,C|0,T|0,S|0)|0;Ka=lf(S|0,C|0,e|0,Ka|0)|0;L=lf(Ka|0,C|0,Ma|0,L|0)|0;L=lf(L|0,C|0,$a|0,_a|0)|0;Ma=C;_a=pf($a|0,_a|0,21)|0;$a=C;Ka=lf(f|0,ca|0,1048576,0)|0;Ka=mf(Ka|0,C|0,21)|0;e=C;na=lf(cb|0,ra|0,wa|0,na|0)|0;I=lf(na|0,C|0,Ca|0,I|0)|0;Ja=lf(I|0,C|0,lb|0,Ja|0)|0;Ja=lf(Ja|0,C|0,Ka|0,e|0)|0;lb=C;e=pf(Ka|0,e|0,21)|0;e=kf(f|0,ca|0,e|0,C|0)|0;ca=C;f=lf(ub|0,La|0,1048576,0)|0;f=of(f|0,C|0,21)|0;Ka=C;Ia=lf(K|0,Ia|0,f|0,Ka|0)|0;K=C;Ka=pf(f|0,Ka|0,21)|0;Ka=kf(ub|0,La|0,Ka|0,C|0)|0;La=C;ub=lf(Da|0,o|0,1048576,0)|0;ub=of(ub|0,C|0,21)|0;f=C;I=pf(ub|0,f|0,21)|0;I=kf(Da|0,o|0,I|0,C|0)|0;o=C;Da=lf(xa|0,ma|0,1048576,0)|0;Da=of(Da|0,C|0,21)|0;Ca=C;na=pf(Da|0,Ca|0,21)|0;na=kf(xa|0,ma|0,na|0,C|0)|0;ma=C;xa=lf(ib|0,ia|0,1048576,0)|0;xa=mf(xa|0,C|0,21)|0;wa=C;ra=pf(xa|0,wa|0,21)|0;ra=kf(ib|0,ia|0,ra|0,C|0)|0;ia=C;ib=lf(Q|0,R|0,1048576,0)|0;ib=mf(ib|0,C|0,21)|0;cb=C;S=pf(ib|0,cb|0,21)|0;T=C;Ua=lf(h|0,B|0,1048576,0)|0;Ua=mf(Ua|0,C|0,21)|0;Va=C;k=pf(Ua|0,Va|0,21)|0;m=C;Ta=lf(G|0,H|0,1048576,0)|0;Ta=mf(Ta|0,C|0,21)|0;Sa=C;t=pf(Ta|0,Sa|0,21)|0;E=C;g=lf(i|0,c|0,1048576,0)|0;g=mf(g|0,C|0,21)|0;n=C;s=pf(g|0,n|0,21)|0;_=C;F=lf(w|0,A|0,1048576,0)|0;F=mf(F|0,C|0,21)|0;ja=C;l=pf(F|0,ja|0,21)|0;ea=C;p=lf(r|0,z|0,1048576,0)|0;p=mf(p|0,C|0,21)|0;oa=C;$=pf(p|0,oa|0,21)|0;fa=C;kb=lf(L|0,Ma|0,1048576,0)|0;kb=mf(kb|0,C|0,21)|0;ha=C;ca=lf(kb|0,ha|0,e|0,ca|0)|0;e=C;ha=pf(kb|0,ha|0,21)|0;ha=kf(L|0,Ma|0,ha|0,C|0)|0;Ma=C;L=lf(Ja|0,lb|0,1048576,0)|0;L=mf(L|0,C|0,21)|0;kb=C;La=lf(L|0,kb|0,Ka|0,La|0)|0;Ka=C;kb=pf(L|0,kb|0,21)|0;kb=kf(Ja|0,lb|0,kb|0,C|0)|0;lb=C;Ja=lf(Ia|0,K|0,1048576,0)|0;Ja=of(Ja|0,C|0,21)|0;L=C;o=lf(Ja|0,L|0,I|0,o|0)|0;I=C;L=pf(Ja|0,L|0,21)|0;L=kf(Ia|0,K|0,L|0,C|0)|0;K=C;Ia=vf(ub|0,f|0,666643,0)|0;Ja=C;tb=vf(ub|0,f|0,470296,0)|0;sb=C;ka=vf(ub|0,f|0,654183,0)|0;la=C;pa=vf(ub|0,f|0,-997805,-1)|0;qa=C;ga=vf(ub|0,f|0,136657,0)|0;Na=C;f=vf(ub|0,f|0,-683901,-1)|0;f=lf(vb|0,j|0,f|0,C|0)|0;$a=kf(f|0,C|0,_a|0,$a|0)|0;oa=lf($a|0,C|0,p|0,oa|0)|0;p=C;$a=vf(o|0,I|0,666643,0)|0;_a=C;f=vf(o|0,I|0,470296,0)|0;j=C;vb=vf(o|0,I|0,654183,0)|0;ub=C;v=vf(o|0,I|0,-997805,-1)|0;q=C;Ya=vf(o|0,I|0,136657,0)|0;Za=C;I=vf(o|0,I|0,-683901,-1)|0;o=C;P=vf(L|0,K|0,666643,0)|0;O=C;bb=vf(L|0,K|0,470296,0)|0;ab=C;u=vf(L|0,K|0,654183,0)|0;y=C;pb=vf(L|0,K|0,-997805,-1)|0;ob=C;D=vf(L|0,K|0,136657,0)|0;J=C;K=vf(L|0,K|0,-683901,-1)|0;L=C;qa=lf(mb|0,nb|0,pa|0,qa|0)|0;Za=lf(qa|0,C|0,Ya|0,Za|0)|0;L=lf(Za|0,C|0,K|0,L|0)|0;fb=kf(L|0,C|0,eb|0,fb|0)|0;ja=lf(fb|0,C|0,F|0,ja|0)|0;F=C;fb=vf(La|0,Ka|0,666643,0)|0;eb=C;L=vf(La|0,Ka|0,470296,0)|0;K=C;Za=vf(La|0,Ka|0,654183,0)|0;Ya=C;qa=vf(La|0,Ka|0,-997805,-1)|0;pa=C;nb=vf(La|0,Ka|0,136657,0)|0;mb=C;Ka=vf(La|0,Ka|0,-683901,-1)|0;La=C;Pa=vf(kb|0,lb|0,666643,0)|0;Oa=C;hb=vf(kb|0,lb|0,470296,0)|0;gb=C;V=vf(kb|0,lb|0,654183,0)|0;U=C;Xa=vf(kb|0,lb|0,-997805,-1)|0;Wa=C;aa=vf(kb|0,lb|0,136657,0)|0;ba=C;lb=vf(kb|0,lb|0,-683901,-1)|0;kb=C;sb=lf(vb|0,ub|0,tb|0,sb|0)|0;qb=lf(sb|0,C|0,rb|0,qb|0)|0;ob=lf(qb|0,C|0,pb|0,ob|0)|0;mb=lf(ob|0,C|0,nb|0,mb|0)|0;kb=lf(mb|0,C|0,lb|0,kb|0)|0;db=kf(kb|0,C|0,jb|0,db|0)|0;n=lf(db|0,C|0,g|0,n|0)|0;g=C;db=vf(ca|0,e|0,666643,0)|0;db=lf(ib|0,cb|0,db|0,C|0)|0;Ra=lf(db|0,C|0,Qa|0,Ra|0)|0;Ha=kf(Ra|0,C|0,Ga|0,Ha|0)|0;Ga=C;Ra=vf(ca|0,e|0,470296,0)|0;Qa=C;db=vf(ca|0,e|0,654183,0)|0;cb=C;eb=lf(hb|0,gb|0,fb|0,eb|0)|0;cb=lf(eb|0,C|0,db|0,cb|0)|0;Va=lf(cb|0,C|0,Ua|0,Va|0)|0;Z=lf(Va|0,C|0,Y|0,Z|0)|0;da=kf(Z|0,C|0,X|0,da|0)|0;X=C;Z=vf(ca|0,e|0,-997805,-1)|0;Y=C;Va=vf(ca|0,e|0,136657,0)|0;Ua=C;_a=lf(bb|0,ab|0,$a|0,_a|0)|0;Ya=lf(_a|0,C|0,Za|0,Ya|0)|0;Wa=lf(Ya|0,C|0,Xa|0,Wa|0)|0;Ua=lf(Wa|0,C|0,Va|0,Ua|0)|0;Sa=lf(Ua|0,C|0,Ta|0,Sa|0)|0;M=lf(Sa|0,C|0,N|0,M|0)|0;sa=kf(M|0,C|0,ta|0,sa|0)|0;ta=C;e=vf(ca|0,e|0,-683901,-1)|0;ca=C;M=lf(Ha|0,Ga|0,1048576,0)|0;M=mf(M|0,C|0,21)|0;N=C;Oa=lf(Ra|0,Qa|0,Pa|0,Oa|0)|0;B=lf(Oa|0,C|0,h|0,B|0)|0;m=kf(B|0,C|0,k|0,m|0)|0;m=lf(m|0,C|0,M|0,N|0)|0;k=C;N=pf(M|0,N|0,21)|0;M=C;B=lf(da|0,X|0,1048576,0)|0;B=mf(B|0,C|0,21)|0;h=C;O=lf(L|0,K|0,P|0,O|0)|0;U=lf(O|0,C|0,V|0,U|0)|0;Y=lf(U|0,C|0,Z|0,Y|0)|0;H=lf(Y|0,C|0,G|0,H|0)|0;E=kf(H|0,C|0,t|0,E|0)|0;E=lf(E|0,C|0,B|0,h|0)|0;t=C;h=pf(B|0,h|0,21)|0;B=C;H=lf(sa|0,ta|0,1048576,0)|0;H=mf(H|0,C|0,21)|0;G=C;Ja=lf(f|0,j|0,Ia|0,Ja|0)|0;y=lf(Ja|0,C|0,u|0,y|0)|0;pa=lf(y|0,C|0,qa|0,pa|0)|0;ba=lf(pa|0,C|0,aa|0,ba|0)|0;ca=lf(ba|0,C|0,e|0,ca|0)|0;c=lf(ca|0,C|0,i|0,c|0)|0;_=kf(c|0,C|0,s|0,_|0)|0;_=lf(_|0,C|0,H|0,G|0)|0;s=C;G=pf(H|0,G|0,21)|0;H=C;c=lf(n|0,g|0,1048576,0)|0;c=mf(c|0,C|0,21)|0;i=C;la=lf(v|0,q|0,ka|0,la|0)|0;J=lf(la|0,C|0,D|0,J|0)|0;La=lf(J|0,C|0,Ka|0,La|0)|0;A=lf(La|0,C|0,w|0,A|0)|0;ea=kf(A|0,C|0,l|0,ea|0)|0;ea=lf(ea|0,C|0,c|0,i|0)|0;l=C;i=pf(c|0,i|0,21)|0;i=kf(n|0,g|0,i|0,C|0)|0;g=C;n=lf(ja|0,F|0,1048576,0)|0;n=mf(n|0,C|0,21)|0;c=C;Na=lf(I|0,o|0,ga|0,Na|0)|0;z=lf(Na|0,C|0,r|0,z|0)|0;fa=kf(z|0,C|0,$|0,fa|0)|0;fa=lf(fa|0,C|0,n|0,c|0)|0;$=C;c=pf(n|0,c|0,21)|0;c=kf(ja|0,F|0,c|0,C|0)|0;F=C;ja=lf(oa|0,p|0,1048576,0)|0;ja=mf(ja|0,C|0,21)|0;n=C;Ma=lf(ja|0,n|0,ha|0,Ma|0)|0;ha=C;n=pf(ja|0,n|0,21)|0;n=kf(oa|0,p|0,n|0,C|0)|0;p=C;oa=lf(m|0,k|0,1048576,0)|0;oa=mf(oa|0,C|0,21)|0;ja=C;z=pf(oa|0,ja|0,21)|0;r=C;Na=lf(E|0,t|0,1048576,0)|0;Na=mf(Na|0,C|0,21)|0;ga=C;o=pf(Na|0,ga|0,21)|0;I=C;A=lf(_|0,s|0,1048576,0)|0;A=mf(A|0,C|0,21)|0;w=C;g=lf(A|0,w|0,i|0,g|0)|0;i=C;w=pf(A|0,w|0,21)|0;w=kf(_|0,s|0,w|0,C|0)|0;s=C;_=lf(ea|0,l|0,1048576,0)|0;_=mf(_|0,C|0,21)|0;A=C;F=lf(_|0,A|0,c|0,F|0)|0;c=C;A=pf(_|0,A|0,21)|0;A=kf(ea|0,l|0,A|0,C|0)|0;l=C;ea=lf(fa|0,$|0,1048576,0)|0;ea=mf(ea|0,C|0,21)|0;_=C;p=lf(ea|0,_|0,n|0,p|0)|0;n=C;_=pf(ea|0,_|0,21)|0;_=kf(fa|0,$|0,_|0,C|0)|0;$=C;fa=vf(Ma|0,ha|0,666643,0)|0;ea=C;La=vf(Ma|0,ha|0,470296,0)|0;Ka=C;J=vf(Ma|0,ha|0,654183,0)|0;D=C;la=vf(Ma|0,ha|0,-997805,-1)|0;ka=C;q=vf(Ma|0,ha|0,136657,0)|0;v=C;ha=vf(Ma|0,ha|0,-683901,-1)|0;ha=lf(Na|0,ga|0,ha|0,C|0)|0;ta=lf(ha|0,C|0,sa|0,ta|0)|0;H=kf(ta|0,C|0,G|0,H|0)|0;G=C;ta=vf(p|0,n|0,666643,0)|0;sa=C;ha=vf(p|0,n|0,470296,0)|0;ga=C;Na=vf(p|0,n|0,654183,0)|0;Ma=C;ca=vf(p|0,n|0,-997805,-1)|0;e=C;ba=vf(p|0,n|0,136657,0)|0;aa=C;n=vf(p|0,n|0,-683901,-1)|0;p=C;pa=vf(_|0,$|0,666643,0)|0;pa=lf(ra|0,ia|0,pa|0,C|0)|0;ia=C;ra=vf(_|0,$|0,470296,0)|0;qa=C;y=vf(_|0,$|0,654183,0)|0;u=C;Ja=vf(_|0,$|0,-997805,-1)|0;Ia=C;j=vf(_|0,$|0,136657,0)|0;f=C;$=vf(_|0,$|0,-683901,-1)|0;_=C;ka=lf(ba|0,aa|0,la|0,ka|0)|0;_=lf(ka|0,C|0,$|0,_|0)|0;ja=lf(_|0,C|0,oa|0,ja|0)|0;X=lf(ja|0,C|0,da|0,X|0)|0;B=kf(X|0,C|0,h|0,B|0)|0;h=C;X=vf(F|0,c|0,666643,0)|0;da=C;ja=vf(F|0,c|0,470296,0)|0;ja=lf(pa|0,ia|0,ja|0,C|0)|0;ia=C;pa=vf(F|0,c|0,654183,0)|0;oa=C;_=vf(F|0,c|0,-997805,-1)|0;$=C;ka=vf(F|0,c|0,136657,0)|0;la=C;c=vf(F|0,c|0,-683901,-1)|0;F=C;aa=vf(A|0,l|0,666643,0)|0;ba=C;Y=vf(A|0,l|0,470296,0)|0;Z=C;U=vf(A|0,l|0,654183,0)|0;V=C;O=vf(A|0,l|0,-997805,-1)|0;P=C;K=vf(A|0,l|0,136657,0)|0;L=C;l=vf(A|0,l|0,-683901,-1)|0;A=C;Ka=lf(Na|0,Ma|0,La|0,Ka|0)|0;Ia=lf(Ka|0,C|0,Ja|0,Ia|0)|0;Ga=lf(Ia|0,C|0,Ha|0,Ga|0)|0;M=kf(Ga|0,C|0,N|0,M|0)|0;la=lf(M|0,C|0,ka|0,la|0)|0;A=lf(la|0,C|0,l|0,A|0)|0;l=C;la=vf(g|0,i|0,666643,0)|0;W=lf(la|0,C|0,x|0,W|0)|0;x=C;la=vf(g|0,i|0,470296,0)|0;ka=C;M=vf(g|0,i|0,654183,0)|0;N=C;Ca=lf(Fa|0,Ea|0,Da|0,Ca|0)|0;Aa=kf(Ca|0,C|0,Ba|0,Aa|0)|0;da=lf(Aa|0,C|0,X|0,da|0)|0;N=lf(da|0,C|0,M|0,N|0)|0;Z=lf(N|0,C|0,Y|0,Z|0)|0;Y=C;N=vf(g|0,i|0,-997805,-1)|0;M=C;da=vf(g|0,i|0,136657,0)|0;X=C;wa=lf(za|0,ya|0,xa|0,wa|0)|0;ua=kf(wa|0,C|0,va|0,ua|0)|0;sa=lf(ua|0,C|0,ta|0,sa|0)|0;qa=lf(sa|0,C|0,ra|0,qa|0)|0;oa=lf(qa|0,C|0,pa|0,oa|0)|0;X=lf(oa|0,C|0,da|0,X|0)|0;P=lf(X|0,C|0,O|0,P|0)|0;O=C;i=vf(g|0,i|0,-683901,-1)|0;g=C;X=lf(W|0,x|0,1048576,0)|0;X=mf(X|0,C|0,21)|0;da=C;ka=lf(na|0,ma|0,la|0,ka|0)|0;ba=lf(ka|0,C|0,aa|0,ba|0)|0;ba=lf(ba|0,C|0,X|0,da|0)|0;aa=C;da=pf(X|0,da|0,21)|0;da=kf(W|0,x|0,da|0,C|0)|0;x=C;W=lf(Z|0,Y|0,1048576,0)|0;W=mf(W|0,C|0,21)|0;X=C;M=lf(ja|0,ia|0,N|0,M|0)|0;V=lf(M|0,C|0,U|0,V|0)|0;V=lf(V|0,C|0,W|0,X|0)|0;U=C;X=pf(W|0,X|0,21)|0;W=C;M=lf(P|0,O|0,1048576,0)|0;M=mf(M|0,C|0,21)|0;N=C;ea=lf(ha|0,ga|0,fa|0,ea|0)|0;u=lf(ea|0,C|0,y|0,u|0)|0;R=lf(u|0,C|0,Q|0,R|0)|0;T=kf(R|0,C|0,S|0,T|0)|0;$=lf(T|0,C|0,_|0,$|0)|0;g=lf($|0,C|0,i|0,g|0)|0;L=lf(g|0,C|0,K|0,L|0)|0;L=lf(L|0,C|0,M|0,N|0)|0;K=C;N=pf(M|0,N|0,21)|0;M=C;g=lf(A|0,l|0,1048576,0)|0;g=mf(g|0,C|0,21)|0;i=C;D=lf(ca|0,e|0,J|0,D|0)|0;f=lf(D|0,C|0,j|0,f|0)|0;k=lf(f|0,C|0,m|0,k|0)|0;r=kf(k|0,C|0,z|0,r|0)|0;F=lf(r|0,C|0,c|0,F|0)|0;F=lf(F|0,C|0,g|0,i|0)|0;c=C;i=pf(g|0,i|0,21)|0;i=kf(A|0,l|0,i|0,C|0)|0;l=C;A=lf(B|0,h|0,1048576,0)|0;A=mf(A|0,C|0,21)|0;g=C;v=lf(n|0,p|0,q|0,v|0)|0;t=lf(v|0,C|0,E|0,t|0)|0;t=lf(t|0,C|0,A|0,g|0)|0;I=kf(t|0,C|0,o|0,I|0)|0;o=C;g=pf(A|0,g|0,21)|0;g=kf(B|0,h|0,g|0,C|0)|0;h=C;B=lf(H|0,G|0,1048576,0)|0;B=mf(B|0,C|0,21)|0;A=C;s=lf(w|0,s|0,B|0,A|0)|0;w=C;A=pf(B|0,A|0,21)|0;B=C;t=lf(ba|0,aa|0,1048576,0)|0;t=mf(t|0,C|0,21)|0;E=C;v=pf(t|0,E|0,21)|0;q=C;p=lf(V|0,U|0,1048576,0)|0;p=mf(p|0,C|0,21)|0;n=C;r=pf(p|0,n|0,21)|0;z=C;k=lf(L|0,K|0,1048576,0)|0;k=mf(k|0,C|0,21)|0;m=C;l=lf(i|0,l|0,k|0,m|0)|0;i=C;m=pf(k|0,m|0,21)|0;k=C;f=lf(F|0,c|0,1048576,0)|0;f=mf(f|0,C|0,21)|0;j=C;h=lf(g|0,h|0,f|0,j|0)|0;g=C;j=pf(f|0,j|0,21)|0;j=kf(F|0,c|0,j|0,C|0)|0;c=C;F=lf(I|0,o|0,1048576,0)|0;F=mf(F|0,C|0,21)|0;f=C;D=pf(F|0,f|0,21)|0;D=kf(I|0,o|0,D|0,C|0)|0;o=C;I=lf(s|0,w|0,1048576,0)|0;I=mf(I|0,C|0,21)|0;J=C;e=pf(I|0,J|0,21)|0;e=kf(s|0,w|0,e|0,C|0)|0;w=C;s=vf(I|0,J|0,666643,0)|0;s=lf(da|0,x|0,s|0,C|0)|0;x=C;da=vf(I|0,J|0,470296,0)|0;ca=C;$=vf(I|0,J|0,654183,0)|0;_=C;T=vf(I|0,J|0,-997805,-1)|0;S=C;R=vf(I|0,J|0,136657,0)|0;Q=C;J=vf(I|0,J|0,-683901,-1)|0;I=C;u=mf(s|0,x|0,21)|0;y=C;aa=lf(da|0,ca|0,ba|0,aa|0)|0;q=kf(aa|0,C|0,v|0,q|0)|0;q=lf(q|0,C|0,u|0,y|0)|0;v=C;y=pf(u|0,y|0,21)|0;y=kf(s|0,x|0,y|0,C|0)|0;x=C;s=mf(q|0,v|0,21)|0;u=C;Y=lf($|0,_|0,Z|0,Y|0)|0;W=kf(Y|0,C|0,X|0,W|0)|0;E=lf(W|0,C|0,t|0,E|0)|0;E=lf(E|0,C|0,s|0,u|0)|0;t=C;u=pf(s|0,u|0,21)|0;u=kf(q|0,v|0,u|0,C|0)|0;v=C;q=mf(E|0,t|0,21)|0;s=C;S=lf(V|0,U|0,T|0,S|0)|0;z=kf(S|0,C|0,r|0,z|0)|0;z=lf(z|0,C|0,q|0,s|0)|0;r=C;s=pf(q|0,s|0,21)|0;s=kf(E|0,t|0,s|0,C|0)|0;t=C;E=mf(z|0,r|0,21)|0;q=C;O=lf(R|0,Q|0,P|0,O|0)|0;M=kf(O|0,C|0,N|0,M|0)|0;n=lf(M|0,C|0,p|0,n|0)|0;n=lf(n|0,C|0,E|0,q|0)|0;p=C;q=pf(E|0,q|0,21)|0;q=kf(z|0,r|0,q|0,C|0)|0;r=C;z=mf(n|0,p|0,21)|0;E=C;I=lf(L|0,K|0,J|0,I|0)|0;k=kf(I|0,C|0,m|0,k|0)|0;k=lf(k|0,C|0,z|0,E|0)|0;m=C;E=pf(z|0,E|0,21)|0;E=kf(n|0,p|0,E|0,C|0)|0;p=C;n=mf(k|0,m|0,21)|0;z=C;i=lf(l|0,i|0,n|0,z|0)|0;l=C;z=pf(n|0,z|0,21)|0;z=kf(k|0,m|0,z|0,C|0)|0;m=C;k=mf(i|0,l|0,21)|0;n=C;c=lf(k|0,n|0,j|0,c|0)|0;j=C;n=pf(k|0,n|0,21)|0;n=kf(i|0,l|0,n|0,C|0)|0;l=C;i=mf(c|0,j|0,21)|0;k=C;g=lf(h|0,g|0,i|0,k|0)|0;h=C;k=pf(i|0,k|0,21)|0;k=kf(c|0,j|0,k|0,C|0)|0;j=C;c=mf(g|0,h|0,21)|0;i=C;o=lf(c|0,i|0,D|0,o|0)|0;D=C;i=pf(c|0,i|0,21)|0;i=kf(g|0,h|0,i|0,C|0)|0;h=C;g=mf(o|0,D|0,21)|0;c=C;f=lf(H|0,G|0,F|0,f|0)|0;B=kf(f|0,C|0,A|0,B|0)|0;B=lf(B|0,C|0,g|0,c|0)|0;A=C;c=pf(g|0,c|0,21)|0;c=kf(o|0,D|0,c|0,C|0)|0;D=C;o=mf(B|0,A|0,21)|0;g=C;w=lf(o|0,g|0,e|0,w|0)|0;e=C;g=pf(o|0,g|0,21)|0;g=kf(B|0,A|0,g|0,C|0)|0;A=C;B=mf(w|0,e|0,21)|0;o=C;f=pf(B|0,o|0,21)|0;f=kf(w|0,e|0,f|0,C|0)|0;e=C;w=vf(B|0,o|0,666643,0)|0;x=lf(w|0,C|0,y|0,x|0)|0;y=C;w=vf(B|0,o|0,470296,0)|0;w=lf(u|0,v|0,w|0,C|0)|0;v=C;u=vf(B|0,o|0,654183,0)|0;u=lf(s|0,t|0,u|0,C|0)|0;t=C;s=vf(B|0,o|0,-997805,-1)|0;s=lf(q|0,r|0,s|0,C|0)|0;r=C;q=vf(B|0,o|0,136657,0)|0;q=lf(E|0,p|0,q|0,C|0)|0;p=C;o=vf(B|0,o|0,-683901,-1)|0;o=lf(z|0,m|0,o|0,C|0)|0;m=C;z=mf(x|0,y|0,21)|0;B=C;v=lf(w|0,v|0,z|0,B|0)|0;w=C;B=pf(z|0,B|0,21)|0;B=kf(x|0,y|0,B|0,C|0)|0;y=C;x=mf(v|0,w|0,21)|0;z=C;t=lf(u|0,t|0,x|0,z|0)|0;u=C;z=pf(x|0,z|0,21)|0;z=kf(v|0,w|0,z|0,C|0)|0;w=C;v=mf(t|0,u|0,21)|0;x=C;r=lf(s|0,r|0,v|0,x|0)|0;s=C;x=pf(v|0,x|0,21)|0;x=kf(t|0,u|0,x|0,C|0)|0;u=C;t=mf(r|0,s|0,21)|0;v=C;p=lf(q|0,p|0,t|0,v|0)|0;q=C;v=pf(t|0,v|0,21)|0;v=kf(r|0,s|0,v|0,C|0)|0;s=C;r=mf(p|0,q|0,21)|0;t=C;m=lf(o|0,m|0,r|0,t|0)|0;o=C;t=pf(r|0,t|0,21)|0;t=kf(p|0,q|0,t|0,C|0)|0;q=C;p=mf(m|0,o|0,21)|0;r=C;l=lf(p|0,r|0,n|0,l|0)|0;n=C;r=pf(p|0,r|0,21)|0;r=kf(m|0,o|0,r|0,C|0)|0;o=C;m=mf(l|0,n|0,21)|0;p=C;j=lf(m|0,p|0,k|0,j|0)|0;k=C;p=pf(m|0,p|0,21)|0;p=kf(l|0,n|0,p|0,C|0)|0;n=C;l=mf(j|0,k|0,21)|0;m=C;h=lf(l|0,m|0,i|0,h|0)|0;i=C;m=pf(l|0,m|0,21)|0;m=kf(j|0,k|0,m|0,C|0)|0;k=C;j=mf(h|0,i|0,21)|0;l=C;D=lf(j|0,l|0,c|0,D|0)|0;c=C;l=pf(j|0,l|0,21)|0;l=kf(h|0,i|0,l|0,C|0)|0;i=C;h=mf(D|0,c|0,21)|0;j=C;A=lf(h|0,j|0,g|0,A|0)|0;g=C;j=pf(h|0,j|0,21)|0;j=kf(D|0,c|0,j|0,C|0)|0;c=C;D=mf(A|0,g|0,21)|0;h=C;e=lf(D|0,h|0,f|0,e|0)|0;f=C;h=pf(D|0,h|0,21)|0;h=kf(A|0,g|0,h|0,C|0)|0;g=C;a[b>>0]=B;A=of(B|0,y|0,8)|0;a[b+1>>0]=A;y=of(B|0,y|0,16)|0;B=C;A=pf(z|0,w|0,5)|0;a[b+2>>0]=A|y;y=of(z|0,w|0,3)|0;a[b+3>>0]=y;y=of(z|0,w|0,11)|0;a[b+4>>0]=y;w=of(z|0,w|0,19)|0;z=C;y=pf(x|0,u|0,2)|0;a[b+5>>0]=y|w;w=of(x|0,u|0,6)|0;a[b+6>>0]=w;u=of(x|0,u|0,14)|0;x=C;w=pf(v|0,s|0,7)|0;a[b+7>>0]=w|u;u=of(v|0,s|0,1)|0;a[b+8>>0]=u;u=of(v|0,s|0,9)|0;a[b+9>>0]=u;s=of(v|0,s|0,17)|0;v=C;u=pf(t|0,q|0,4)|0;a[b+10>>0]=u|s;s=of(t|0,q|0,4)|0;a[b+11>>0]=s;s=of(t|0,q|0,12)|0;a[b+12>>0]=s;q=of(t|0,q|0,20)|0;t=C;s=pf(r|0,o|0,1)|0;a[b+13>>0]=s|q;q=of(r|0,o|0,7)|0;a[b+14>>0]=q;o=of(r|0,o|0,15)|0;r=C;q=pf(p|0,n|0,6)|0;a[b+15>>0]=q|o;o=of(p|0,n|0,2)|0;a[b+16>>0]=o;o=of(p|0,n|0,10)|0;a[b+17>>0]=o;n=of(p|0,n|0,18)|0;p=C;o=pf(m|0,k|0,3)|0;a[b+18>>0]=o|n;n=of(m|0,k|0,5)|0;a[b+19>>0]=n;k=of(m|0,k|0,13)|0;a[b+20>>0]=k;a[b+21>>0]=l;k=of(l|0,i|0,8)|0;a[b+22>>0]=k;i=of(l|0,i|0,16)|0;l=C;k=pf(j|0,c|0,5)|0;a[b+23>>0]=k|i;i=of(j|0,c|0,3)|0;a[b+24>>0]=i;i=of(j|0,c|0,11)|0;a[b+25>>0]=i;c=of(j|0,c|0,19)|0;j=C;i=pf(h|0,g|0,2)|0;a[b+26>>0]=i|c;c=of(h|0,g|0,6)|0;a[b+27>>0]=c;g=of(h|0,g|0,14)|0;h=C;c=pf(e|0,f|0,7)|0;a[b+28>>0]=g|c;c=of(e|0,f|0,1)|0;a[b+29>>0]=c;c=of(e|0,f|0,9)|0;a[b+30>>0]=c;f=of(e|0,f|0,17)|0;a[b+31>>0]=f;return}function Nd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;V=b+40|0;j=b+44|0;m=b+48|0;p=b+52|0;s=b+56|0;v=b+60|0;y=b+64|0;B=b+68|0;E=b+72|0;C=b+76|0;S=b+4|0;P=b+8|0;e=b+12|0;l=b+16|0;n=b+20|0;u=b+24|0;w=b+28|0;D=b+32|0;O=b+36|0;ga=(c[S>>2]|0)+(c[j>>2]|0)|0;fa=(c[P>>2]|0)+(c[m>>2]|0)|0;ea=(c[e>>2]|0)+(c[p>>2]|0)|0;da=(c[l>>2]|0)+(c[s>>2]|0)|0;ca=(c[n>>2]|0)+(c[v>>2]|0)|0;ba=(c[u>>2]|0)+(c[y>>2]|0)|0;aa=(c[w>>2]|0)+(c[B>>2]|0)|0;$=(c[D>>2]|0)+(c[E>>2]|0)|0;Y=(c[O>>2]|0)+(c[C>>2]|0)|0;c[a>>2]=(c[b>>2]|0)+(c[V>>2]|0);ha=a+4|0;c[ha>>2]=ga;ga=a+8|0;c[ga>>2]=fa;fa=a+12|0;c[fa>>2]=ea;ea=a+16|0;c[ea>>2]=da;da=a+20|0;c[da>>2]=ca;ca=a+24|0;c[ca>>2]=ba;ba=a+28|0;c[ba>>2]=aa;aa=a+32|0;c[aa>>2]=$;$=a+36|0;c[$>>2]=Y;Y=a+40|0;S=(c[j>>2]|0)-(c[S>>2]|0)|0;P=(c[m>>2]|0)-(c[P>>2]|0)|0;e=(c[p>>2]|0)-(c[e>>2]|0)|0;l=(c[s>>2]|0)-(c[l>>2]|0)|0;n=(c[v>>2]|0)-(c[n>>2]|0)|0;u=(c[y>>2]|0)-(c[u>>2]|0)|0;w=(c[B>>2]|0)-(c[w>>2]|0)|0;D=(c[E>>2]|0)-(c[D>>2]|0)|0;O=(c[C>>2]|0)-(c[O>>2]|0)|0;c[Y>>2]=(c[V>>2]|0)-(c[b>>2]|0);V=a+44|0;c[V>>2]=S;S=a+48|0;c[S>>2]=P;P=a+52|0;c[P>>2]=e;e=a+56|0;c[e>>2]=l;l=a+60|0;c[l>>2]=n;n=a+64|0;c[n>>2]=u;u=a+68|0;c[u>>2]=w;w=a+72|0;c[w>>2]=D;D=a+76|0;c[D>>2]=O;O=a+80|0;Hd(O,a,d);Hd(Y,Y,d+40|0);C=a+120|0;Hd(C,d+120|0,b+120|0);Hd(a,b+80|0,d+80|0);E=c[a>>2]<<1;B=c[ha>>2]<<1;y=c[ga>>2]<<1;v=c[fa>>2]<<1;s=c[ea>>2]<<1;p=c[da>>2]<<1;m=c[ca>>2]<<1;j=c[ba>>2]<<1;g=c[aa>>2]<<1;b=c[$>>2]<<1;Z=c[O>>2]|0;N=a+84|0;W=c[N>>2]|0;M=a+88|0;T=c[M>>2]|0;L=a+92|0;Q=c[L>>2]|0;K=a+96|0;f=c[K>>2]|0;J=a+100|0;h=c[J>>2]|0;I=a+104|0;o=c[I>>2]|0;H=a+108|0;q=c[H>>2]|0;G=a+112|0;x=c[G>>2]|0;F=a+116|0;z=c[F>>2]|0;_=c[Y>>2]|0;X=c[V>>2]|0;U=c[S>>2]|0;R=c[P>>2]|0;d=c[e>>2]|0;i=c[l>>2]|0;k=c[n>>2]|0;r=c[u>>2]|0;t=c[w>>2]|0;A=c[D>>2]|0;c[a>>2]=Z-_;c[ha>>2]=W-X;c[ga>>2]=T-U;c[fa>>2]=Q-R;c[ea>>2]=f-d;c[da>>2]=h-i;c[ca>>2]=o-k;c[ba>>2]=q-r;c[aa>>2]=x-t;c[$>>2]=z-A;c[Y>>2]=_+Z;c[V>>2]=X+W;c[S>>2]=U+T;c[P>>2]=R+Q;c[e>>2]=d+f;c[l>>2]=i+h;c[n>>2]=k+o;c[u>>2]=r+q;c[w>>2]=t+x;c[D>>2]=A+z;D=c[C>>2]|0;z=a+124|0;A=c[z>>2]|0;w=a+128|0;x=c[w>>2]|0;t=a+132|0;u=c[t>>2]|0;q=a+136|0;r=c[q>>2]|0;n=a+140|0;o=c[n>>2]|0;k=a+144|0;l=c[k>>2]|0;h=a+148|0;i=c[h>>2]|0;e=a+152|0;f=c[e>>2]|0;a=a+156|0;d=c[a>>2]|0;c[O>>2]=D+E;c[N>>2]=A+B;c[M>>2]=x+y;c[L>>2]=u+v;c[K>>2]=r+s;c[J>>2]=o+p;c[I>>2]=l+m;c[H>>2]=i+j;c[G>>2]=f+g;c[F>>2]=d+b;c[C>>2]=E-D;c[z>>2]=B-A;c[w>>2]=y-x;c[t>>2]=v-u;c[q>>2]=s-r;c[n>>2]=p-o;c[k>>2]=m-l;c[h>>2]=j-i;c[e>>2]=g-f;c[a>>2]=b-d;return}function Od(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+2400|0;q=x+1760|0;t=x+2136|0;u=x+1880|0;s=x+480|0;v=x+320|0;w=x+160|0;r=x;h=0;do{a[t+h>>0]=(d[e+(h>>3)>>0]|0)>>>(h&7)&1;h=h+1|0}while((h|0)!=256);p=0;while(1){n=t+p|0;a:do if(a[n>>0]|0){o=1;do{h=o+p|0;if((h|0)>=256)break a;e=t+h|0;m=a[e>>0]|0;b:do if(m<<24>>24){j=a[n>>0]|0;k=m<<24>>24<<o;l=j+k|0;if((l|0)<16){a[n>>0]=l;a[e>>0]=0;break}e=j-k|0;if((e|0)<=-16)break a;a[n>>0]=e;e=t+h|0;if(m<<24>>24)do{a[e>>0]=0;h=h+1|0;if((h|0)>=256)break b;e=t+h|0}while((a[t+h>>0]|0)!=0);a[e>>0]=1}while(0);o=o+1|0}while((o|0)<7)}while(0);p=p+1|0;if((p|0)==256){e=0;break}}do{a[u+e>>0]=(d[g+(e>>3)>>0]|0)>>>(e&7)&1;e=e+1|0}while((e|0)!=256);p=0;do{n=u+p|0;c:do if(a[n>>0]|0){o=1;do{h=o+p|0;if((h|0)>=256)break c;e=u+h|0;m=a[e>>0]|0;d:do if(m<<24>>24){j=a[n>>0]|0;k=m<<24>>24<<o;l=j+k|0;if((l|0)<16){a[n>>0]=l;a[e>>0]=0;break}e=j-k|0;if((e|0)<=-16)break c;a[n>>0]=e;e=u+h|0;if(m<<24>>24)do{a[e>>0]=0;h=h+1|0;if((h|0)>=256)break d;e=u+h|0}while((a[u+h>>0]|0)!=0);a[e>>0]=1}while(0);o=o+1|0}while((o|0)<7)}while(0);p=p+1|0}while((p|0)!=256);Pd(s,f);k=c[f+4>>2]|0;h=c[f+8>>2]|0;e=c[f+12>>2]|0;g=c[f+16>>2]|0;p=c[f+20>>2]|0;o=c[f+24>>2]|0;n=c[f+28>>2]|0;m=c[f+32>>2]|0;l=c[f+36>>2]|0;c[q>>2]=c[f>>2];c[q+4>>2]=k;c[q+8>>2]=h;c[q+12>>2]=e;c[q+16>>2]=g;c[q+20>>2]=p;c[q+24>>2]=o;c[q+28>>2]=n;c[q+32>>2]=m;c[q+36>>2]=l;l=c[f+44>>2]|0;m=c[f+48>>2]|0;n=c[f+52>>2]|0;o=c[f+56>>2]|0;p=c[f+60>>2]|0;g=c[f+64>>2]|0;e=c[f+68>>2]|0;h=c[f+72>>2]|0;k=c[f+76>>2]|0;c[q+40>>2]=c[f+40>>2];c[q+44>>2]=l;c[q+48>>2]=m;c[q+52>>2]=n;c[q+56>>2]=o;c[q+60>>2]=p;c[q+64>>2]=g;c[q+68>>2]=e;c[q+72>>2]=h;c[q+76>>2]=k;k=c[f+84>>2]|0;h=c[f+88>>2]|0;e=c[f+92>>2]|0;g=c[f+96>>2]|0;p=c[f+100>>2]|0;o=c[f+104>>2]|0;n=c[f+108>>2]|0;m=c[f+112>>2]|0;l=c[f+116>>2]|0;c[q+80>>2]=c[f+80>>2];c[q+84>>2]=k;c[q+88>>2]=h;c[q+92>>2]=e;c[q+96>>2]=g;c[q+100>>2]=p;c[q+104>>2]=o;c[q+108>>2]=n;c[q+112>>2]=m;c[q+116>>2]=l;Qd(v,q);l=v+120|0;Hd(r,v,l);m=v+40|0;n=v+80|0;Hd(r+40|0,m,n);Hd(r+80|0,n,l);Hd(r+120|0,v,m);Nd(v,r,s);Hd(w,v,l);o=w+40|0;Hd(o,m,n);p=w+80|0;Hd(p,n,l);g=w+120|0;Hd(g,v,m);e=s+160|0;Pd(e,w);Nd(v,r,e);Hd(w,v,l);Hd(o,m,n);Hd(p,n,l);Hd(g,v,m);e=s+320|0;Pd(e,w);Nd(v,r,e);Hd(w,v,l);Hd(o,m,n);Hd(p,n,l);Hd(g,v,m);e=s+480|0;Pd(e,w);Nd(v,r,e);Hd(w,v,l);Hd(o,m,n);Hd(p,n,l);Hd(g,v,m);e=s+640|0;Pd(e,w);Nd(v,r,e);Hd(w,v,l);Hd(o,m,n);Hd(p,n,l);Hd(g,v,m);e=s+800|0;Pd(e,w);Nd(v,r,e);Hd(w,v,l);Hd(o,m,n);Hd(p,n,l);Hd(g,v,m);e=s+960|0;Pd(e,w);Nd(v,r,e);Hd(w,v,l);Hd(o,m,n);Hd(p,n,l);Hd(g,v,m);Pd(s+1120|0,w);e=b;h=e+40|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(h|0));j=b+40|0;c[j>>2]=1;e=b+44|0;h=e+36|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(h|0));k=b+80|0;c[k>>2]=1;e=b+84|0;h=e+36|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(h|0));h=255;while(1){if(a[t+h>>0]|0){e=h;break}if(a[u+h>>0]|0){e=h;break}e=h+-1|0;if((h|0)>0)h=e;else break}if((e|0)<=-1){i=x;return}while(1){Qd(v,b);h=a[t+e>>0]|0;if(h<<24>>24<=0){if(h<<24>>24<0){Hd(w,v,l);Hd(o,m,n);Hd(p,n,l);Hd(g,v,m);Rd(v,w,s+(((h<<24>>24|0)/-2|0)*160|0)|0)}}else{Hd(w,v,l);Hd(o,m,n);Hd(p,n,l);Hd(g,v,m);Nd(v,w,s+(((h<<24>>24|0)/2|0)*160|0)|0)}h=a[u+e>>0]|0;if(h<<24>>24<=0){if(h<<24>>24<0){Hd(w,v,l);Hd(o,m,n);Hd(p,n,l);Hd(g,v,m);Td(v,w,736+(((h<<24>>24|0)/-2|0)*120|0)|0)}}else{Hd(w,v,l);Hd(o,m,n);Hd(p,n,l);Hd(g,v,m);Sd(v,w,736+(((h<<24>>24|0)/2|0)*120|0)|0)}Hd(b,v,l);Hd(j,m,n);Hd(k,n,l);if((e|0)>0)e=e+-1|0;else break}i=x;return}function Pd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;m=b+40|0;v=b+44|0;u=b+48|0;t=b+52|0;s=b+56|0;r=b+60|0;q=b+64|0;p=b+68|0;o=b+72|0;n=b+76|0;d=b+4|0;e=b+8|0;f=b+12|0;g=b+16|0;h=b+20|0;i=b+24|0;j=b+28|0;k=b+32|0;l=b+36|0;E=(c[d>>2]|0)+(c[v>>2]|0)|0;D=(c[e>>2]|0)+(c[u>>2]|0)|0;C=(c[f>>2]|0)+(c[t>>2]|0)|0;B=(c[g>>2]|0)+(c[s>>2]|0)|0;A=(c[h>>2]|0)+(c[r>>2]|0)|0;z=(c[i>>2]|0)+(c[q>>2]|0)|0;y=(c[j>>2]|0)+(c[p>>2]|0)|0;x=(c[k>>2]|0)+(c[o>>2]|0)|0;w=(c[l>>2]|0)+(c[n>>2]|0)|0;c[a>>2]=(c[b>>2]|0)+(c[m>>2]|0);c[a+4>>2]=E;c[a+8>>2]=D;c[a+12>>2]=C;c[a+16>>2]=B;c[a+20>>2]=A;c[a+24>>2]=z;c[a+28>>2]=y;c[a+32>>2]=x;c[a+36>>2]=w;d=(c[v>>2]|0)-(c[d>>2]|0)|0;e=(c[u>>2]|0)-(c[e>>2]|0)|0;f=(c[t>>2]|0)-(c[f>>2]|0)|0;g=(c[s>>2]|0)-(c[g>>2]|0)|0;h=(c[r>>2]|0)-(c[h>>2]|0)|0;i=(c[q>>2]|0)-(c[i>>2]|0)|0;j=(c[p>>2]|0)-(c[j>>2]|0)|0;k=(c[o>>2]|0)-(c[k>>2]|0)|0;l=(c[n>>2]|0)-(c[l>>2]|0)|0;c[a+40>>2]=(c[m>>2]|0)-(c[b>>2]|0);c[a+44>>2]=d;c[a+48>>2]=e;c[a+52>>2]=f;c[a+56>>2]=g;c[a+60>>2]=h;c[a+64>>2]=i;c[a+68>>2]=j;c[a+72>>2]=k;c[a+76>>2]=l;l=c[b+84>>2]|0;k=c[b+88>>2]|0;j=c[b+92>>2]|0;i=c[b+96>>2]|0;h=c[b+100>>2]|0;g=c[b+104>>2]|0;f=c[b+108>>2]|0;e=c[b+112>>2]|0;d=c[b+116>>2]|0;c[a+80>>2]=c[b+80>>2];c[a+84>>2]=l;c[a+88>>2]=k;c[a+92>>2]=j;c[a+96>>2]=i;c[a+100>>2]=h;c[a+104>>2]=g;c[a+108>>2]=f;c[a+112>>2]=e;c[a+116>>2]=d;Hd(a+120|0,b+120|0,696);return}function Qd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;d=i;i=i+48|0;I=d;Gd(a,b);S=a+80|0;ja=b+40|0;Gd(S,ja);v=a+120|0;Kd(v,b+80|0);ka=a+40|0;ia=(c[b+44>>2]|0)+(c[b+4>>2]|0)|0;ha=(c[b+48>>2]|0)+(c[b+8>>2]|0)|0;ga=(c[b+52>>2]|0)+(c[b+12>>2]|0)|0;fa=(c[b+56>>2]|0)+(c[b+16>>2]|0)|0;ea=(c[b+60>>2]|0)+(c[b+20>>2]|0)|0;da=(c[b+64>>2]|0)+(c[b+24>>2]|0)|0;ca=(c[b+68>>2]|0)+(c[b+28>>2]|0)|0;ba=(c[b+72>>2]|0)+(c[b+32>>2]|0)|0;aa=(c[b+76>>2]|0)+(c[b+36>>2]|0)|0;c[ka>>2]=(c[ja>>2]|0)+(c[b>>2]|0);ja=a+44|0;c[ja>>2]=ia;ia=a+48|0;c[ia>>2]=ha;ha=a+52|0;c[ha>>2]=ga;ga=a+56|0;c[ga>>2]=fa;fa=a+60|0;c[fa>>2]=ea;ea=a+64|0;c[ea>>2]=da;da=a+68|0;c[da>>2]=ca;ca=a+72|0;c[ca>>2]=ba;ba=a+76|0;c[ba>>2]=aa;Gd(I,ka);aa=c[S>>2]|0;R=a+84|0;$=c[R>>2]|0;Q=a+88|0;_=c[Q>>2]|0;P=a+92|0;Z=c[P>>2]|0;O=a+96|0;Y=c[O>>2]|0;N=a+100|0;X=c[N>>2]|0;M=a+104|0;W=c[M>>2]|0;L=a+108|0;V=c[L>>2]|0;K=a+112|0;U=c[K>>2]|0;J=a+116|0;T=c[J>>2]|0;w=c[a>>2]|0;F=a+4|0;u=c[F>>2]|0;D=a+8|0;s=c[D>>2]|0;B=a+12|0;q=c[B>>2]|0;z=a+16|0;o=c[z>>2]|0;x=a+20|0;m=c[x>>2]|0;g=a+24|0;k=c[g>>2]|0;l=a+28|0;h=c[l>>2]|0;p=a+32|0;f=c[p>>2]|0;t=a+36|0;b=c[t>>2]|0;H=w+aa|0;G=u+$|0;E=s+_|0;C=q+Z|0;A=o+Y|0;y=m+X|0;e=k+W|0;j=h+V|0;n=f+U|0;r=b+T|0;c[ka>>2]=H;c[ja>>2]=G;c[ia>>2]=E;c[ha>>2]=C;c[ga>>2]=A;c[fa>>2]=y;c[ea>>2]=e;c[da>>2]=j;c[ca>>2]=n;c[ba>>2]=r;w=aa-w|0;u=$-u|0;s=_-s|0;q=Z-q|0;o=Y-o|0;m=X-m|0;k=W-k|0;h=V-h|0;f=U-f|0;b=T-b|0;c[S>>2]=w;c[R>>2]=u;c[Q>>2]=s;c[P>>2]=q;c[O>>2]=o;c[N>>2]=m;c[M>>2]=k;c[L>>2]=h;c[K>>2]=f;c[J>>2]=b;G=(c[I+4>>2]|0)-G|0;E=(c[I+8>>2]|0)-E|0;C=(c[I+12>>2]|0)-C|0;A=(c[I+16>>2]|0)-A|0;y=(c[I+20>>2]|0)-y|0;e=(c[I+24>>2]|0)-e|0;j=(c[I+28>>2]|0)-j|0;n=(c[I+32>>2]|0)-n|0;r=(c[I+36>>2]|0)-r|0;c[a>>2]=(c[I>>2]|0)-H;c[F>>2]=G;c[D>>2]=E;c[B>>2]=C;c[z>>2]=A;c[x>>2]=y;c[g>>2]=e;c[l>>2]=j;c[p>>2]=n;c[t>>2]=r;t=a+124|0;r=a+128|0;p=a+132|0;n=a+136|0;l=a+140|0;j=a+144|0;g=a+148|0;e=a+152|0;a=a+156|0;u=(c[t>>2]|0)-u|0;s=(c[r>>2]|0)-s|0;q=(c[p>>2]|0)-q|0;o=(c[n>>2]|0)-o|0;m=(c[l>>2]|0)-m|0;k=(c[j>>2]|0)-k|0;h=(c[g>>2]|0)-h|0;f=(c[e>>2]|0)-f|0;b=(c[a>>2]|0)-b|0;c[v>>2]=(c[v>>2]|0)-w;c[t>>2]=u;c[r>>2]=s;c[p>>2]=q;c[n>>2]=o;c[l>>2]=m;c[j>>2]=k;c[g>>2]=h;c[e>>2]=f;c[a>>2]=b;i=d;return}function Rd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;V=b+40|0;i=b+44|0;l=b+48|0;o=b+52|0;r=b+56|0;u=b+60|0;x=b+64|0;A=b+68|0;D=b+72|0;C=b+76|0;S=b+4|0;P=b+8|0;e=b+12|0;m=b+16|0;n=b+20|0;v=b+24|0;w=b+28|0;E=b+32|0;O=b+36|0;ga=(c[S>>2]|0)+(c[i>>2]|0)|0;fa=(c[P>>2]|0)+(c[l>>2]|0)|0;ea=(c[e>>2]|0)+(c[o>>2]|0)|0;da=(c[m>>2]|0)+(c[r>>2]|0)|0;ca=(c[n>>2]|0)+(c[u>>2]|0)|0;ba=(c[v>>2]|0)+(c[x>>2]|0)|0;aa=(c[w>>2]|0)+(c[A>>2]|0)|0;$=(c[E>>2]|0)+(c[D>>2]|0)|0;Y=(c[O>>2]|0)+(c[C>>2]|0)|0;c[a>>2]=(c[b>>2]|0)+(c[V>>2]|0);ha=a+4|0;c[ha>>2]=ga;ga=a+8|0;c[ga>>2]=fa;fa=a+12|0;c[fa>>2]=ea;ea=a+16|0;c[ea>>2]=da;da=a+20|0;c[da>>2]=ca;ca=a+24|0;c[ca>>2]=ba;ba=a+28|0;c[ba>>2]=aa;aa=a+32|0;c[aa>>2]=$;$=a+36|0;c[$>>2]=Y;Y=a+40|0;S=(c[i>>2]|0)-(c[S>>2]|0)|0;P=(c[l>>2]|0)-(c[P>>2]|0)|0;e=(c[o>>2]|0)-(c[e>>2]|0)|0;m=(c[r>>2]|0)-(c[m>>2]|0)|0;n=(c[u>>2]|0)-(c[n>>2]|0)|0;v=(c[x>>2]|0)-(c[v>>2]|0)|0;w=(c[A>>2]|0)-(c[w>>2]|0)|0;E=(c[D>>2]|0)-(c[E>>2]|0)|0;O=(c[C>>2]|0)-(c[O>>2]|0)|0;c[Y>>2]=(c[V>>2]|0)-(c[b>>2]|0);V=a+44|0;c[V>>2]=S;S=a+48|0;c[S>>2]=P;P=a+52|0;c[P>>2]=e;e=a+56|0;c[e>>2]=m;m=a+60|0;c[m>>2]=n;n=a+64|0;c[n>>2]=v;v=a+68|0;c[v>>2]=w;w=a+72|0;c[w>>2]=E;E=a+76|0;c[E>>2]=O;O=a+80|0;Hd(O,a,d+40|0);Hd(Y,Y,d);C=a+120|0;Hd(C,d+120|0,b+120|0);Hd(a,b+80|0,d+80|0);D=c[a>>2]<<1;A=c[ha>>2]<<1;x=c[ga>>2]<<1;u=c[fa>>2]<<1;r=c[ea>>2]<<1;o=c[da>>2]<<1;l=c[ca>>2]<<1;i=c[ba>>2]<<1;f=c[aa>>2]<<1;d=c[$>>2]<<1;Z=c[O>>2]|0;N=a+84|0;W=c[N>>2]|0;M=a+88|0;T=c[M>>2]|0;L=a+92|0;Q=c[L>>2]|0;K=a+96|0;g=c[K>>2]|0;J=a+100|0;h=c[J>>2]|0;I=a+104|0;p=c[I>>2]|0;H=a+108|0;q=c[H>>2]|0;G=a+112|0;y=c[G>>2]|0;F=a+116|0;z=c[F>>2]|0;_=c[Y>>2]|0;X=c[V>>2]|0;U=c[S>>2]|0;R=c[P>>2]|0;b=c[e>>2]|0;j=c[m>>2]|0;k=c[n>>2]|0;s=c[v>>2]|0;t=c[w>>2]|0;B=c[E>>2]|0;c[a>>2]=Z-_;c[ha>>2]=W-X;c[ga>>2]=T-U;c[fa>>2]=Q-R;c[ea>>2]=g-b;c[da>>2]=h-j;c[ca>>2]=p-k;c[ba>>2]=q-s;c[aa>>2]=y-t;c[$>>2]=z-B;c[Y>>2]=_+Z;c[V>>2]=X+W;c[S>>2]=U+T;c[P>>2]=R+Q;c[e>>2]=b+g;c[m>>2]=j+h;c[n>>2]=k+p;c[v>>2]=s+q;c[w>>2]=t+y;c[E>>2]=B+z;E=c[C>>2]|0;z=a+124|0;B=c[z>>2]|0;w=a+128|0;y=c[w>>2]|0;t=a+132|0;v=c[t>>2]|0;q=a+136|0;s=c[q>>2]|0;n=a+140|0;p=c[n>>2]|0;k=a+144|0;m=c[k>>2]|0;h=a+148|0;j=c[h>>2]|0;e=a+152|0;g=c[e>>2]|0;a=a+156|0;b=c[a>>2]|0;c[O>>2]=D-E;c[N>>2]=A-B;c[M>>2]=x-y;c[L>>2]=u-v;c[K>>2]=r-s;c[J>>2]=o-p;c[I>>2]=l-m;c[H>>2]=i-j;c[G>>2]=f-g;c[F>>2]=d-b;c[C>>2]=E+D;c[z>>2]=B+A;c[w>>2]=y+x;c[t>>2]=v+u;c[q>>2]=s+r;c[n>>2]=p+o;c[k>>2]=m+l;c[h>>2]=j+i;c[e>>2]=g+f;c[a>>2]=b+d;return}function Sd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;V=b+40|0;j=b+44|0;m=b+48|0;p=b+52|0;s=b+56|0;v=b+60|0;y=b+64|0;B=b+68|0;E=b+72|0;C=b+76|0;S=b+4|0;P=b+8|0;e=b+12|0;l=b+16|0;n=b+20|0;u=b+24|0;w=b+28|0;D=b+32|0;O=b+36|0;ga=(c[S>>2]|0)+(c[j>>2]|0)|0;fa=(c[P>>2]|0)+(c[m>>2]|0)|0;ea=(c[e>>2]|0)+(c[p>>2]|0)|0;da=(c[l>>2]|0)+(c[s>>2]|0)|0;ca=(c[n>>2]|0)+(c[v>>2]|0)|0;ba=(c[u>>2]|0)+(c[y>>2]|0)|0;aa=(c[w>>2]|0)+(c[B>>2]|0)|0;$=(c[D>>2]|0)+(c[E>>2]|0)|0;Y=(c[O>>2]|0)+(c[C>>2]|0)|0;c[a>>2]=(c[b>>2]|0)+(c[V>>2]|0);ha=a+4|0;c[ha>>2]=ga;ga=a+8|0;c[ga>>2]=fa;fa=a+12|0;c[fa>>2]=ea;ea=a+16|0;c[ea>>2]=da;da=a+20|0;c[da>>2]=ca;ca=a+24|0;c[ca>>2]=ba;ba=a+28|0;c[ba>>2]=aa;aa=a+32|0;c[aa>>2]=$;$=a+36|0;c[$>>2]=Y;Y=a+40|0;S=(c[j>>2]|0)-(c[S>>2]|0)|0;P=(c[m>>2]|0)-(c[P>>2]|0)|0;e=(c[p>>2]|0)-(c[e>>2]|0)|0;l=(c[s>>2]|0)-(c[l>>2]|0)|0;n=(c[v>>2]|0)-(c[n>>2]|0)|0;u=(c[y>>2]|0)-(c[u>>2]|0)|0;w=(c[B>>2]|0)-(c[w>>2]|0)|0;D=(c[E>>2]|0)-(c[D>>2]|0)|0;O=(c[C>>2]|0)-(c[O>>2]|0)|0;c[Y>>2]=(c[V>>2]|0)-(c[b>>2]|0);V=a+44|0;c[V>>2]=S;S=a+48|0;c[S>>2]=P;P=a+52|0;c[P>>2]=e;e=a+56|0;c[e>>2]=l;l=a+60|0;c[l>>2]=n;n=a+64|0;c[n>>2]=u;u=a+68|0;c[u>>2]=w;w=a+72|0;c[w>>2]=D;D=a+76|0;c[D>>2]=O;O=a+80|0;Hd(O,a,d);Hd(Y,Y,d+40|0);C=a+120|0;Hd(C,d+80|0,b+120|0);E=c[b+80>>2]<<1;B=c[b+84>>2]<<1;y=c[b+88>>2]<<1;v=c[b+92>>2]<<1;s=c[b+96>>2]<<1;p=c[b+100>>2]<<1;m=c[b+104>>2]<<1;j=c[b+108>>2]<<1;g=c[b+112>>2]<<1;b=c[b+116>>2]<<1;Z=c[O>>2]|0;N=a+84|0;W=c[N>>2]|0;M=a+88|0;T=c[M>>2]|0;L=a+92|0;Q=c[L>>2]|0;K=a+96|0;f=c[K>>2]|0;J=a+100|0;h=c[J>>2]|0;I=a+104|0;o=c[I>>2]|0;H=a+108|0;q=c[H>>2]|0;G=a+112|0;x=c[G>>2]|0;F=a+116|0;z=c[F>>2]|0;_=c[Y>>2]|0;X=c[V>>2]|0;U=c[S>>2]|0;R=c[P>>2]|0;d=c[e>>2]|0;i=c[l>>2]|0;k=c[n>>2]|0;r=c[u>>2]|0;t=c[w>>2]|0;A=c[D>>2]|0;c[a>>2]=Z-_;c[ha>>2]=W-X;c[ga>>2]=T-U;c[fa>>2]=Q-R;c[ea>>2]=f-d;c[da>>2]=h-i;c[ca>>2]=o-k;c[ba>>2]=q-r;c[aa>>2]=x-t;c[$>>2]=z-A;c[Y>>2]=_+Z;c[V>>2]=X+W;c[S>>2]=U+T;c[P>>2]=R+Q;c[e>>2]=d+f;c[l>>2]=i+h;c[n>>2]=k+o;c[u>>2]=r+q;c[w>>2]=t+x;c[D>>2]=A+z;D=c[C>>2]|0;z=a+124|0;A=c[z>>2]|0;w=a+128|0;x=c[w>>2]|0;t=a+132|0;u=c[t>>2]|0;q=a+136|0;r=c[q>>2]|0;n=a+140|0;o=c[n>>2]|0;k=a+144|0;l=c[k>>2]|0;h=a+148|0;i=c[h>>2]|0;e=a+152|0;f=c[e>>2]|0;a=a+156|0;d=c[a>>2]|0;c[O>>2]=D+E;c[N>>2]=A+B;c[M>>2]=x+y;c[L>>2]=u+v;c[K>>2]=r+s;c[J>>2]=o+p;c[I>>2]=l+m;c[H>>2]=i+j;c[G>>2]=f+g;c[F>>2]=d+b;c[C>>2]=E-D;c[z>>2]=B-A;c[w>>2]=y-x;c[t>>2]=v-u;c[q>>2]=s-r;c[n>>2]=p-o;c[k>>2]=m-l;c[h>>2]=j-i;c[e>>2]=g-f;c[a>>2]=b-d;return}function Td(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;V=b+40|0;i=b+44|0;l=b+48|0;o=b+52|0;r=b+56|0;u=b+60|0;x=b+64|0;A=b+68|0;D=b+72|0;C=b+76|0;S=b+4|0;P=b+8|0;e=b+12|0;m=b+16|0;n=b+20|0;v=b+24|0;w=b+28|0;E=b+32|0;O=b+36|0;ga=(c[S>>2]|0)+(c[i>>2]|0)|0;fa=(c[P>>2]|0)+(c[l>>2]|0)|0;ea=(c[e>>2]|0)+(c[o>>2]|0)|0;da=(c[m>>2]|0)+(c[r>>2]|0)|0;ca=(c[n>>2]|0)+(c[u>>2]|0)|0;ba=(c[v>>2]|0)+(c[x>>2]|0)|0;aa=(c[w>>2]|0)+(c[A>>2]|0)|0;$=(c[E>>2]|0)+(c[D>>2]|0)|0;Y=(c[O>>2]|0)+(c[C>>2]|0)|0;c[a>>2]=(c[b>>2]|0)+(c[V>>2]|0);ha=a+4|0;c[ha>>2]=ga;ga=a+8|0;c[ga>>2]=fa;fa=a+12|0;c[fa>>2]=ea;ea=a+16|0;c[ea>>2]=da;da=a+20|0;c[da>>2]=ca;ca=a+24|0;c[ca>>2]=ba;ba=a+28|0;c[ba>>2]=aa;aa=a+32|0;c[aa>>2]=$;$=a+36|0;c[$>>2]=Y;Y=a+40|0;S=(c[i>>2]|0)-(c[S>>2]|0)|0;P=(c[l>>2]|0)-(c[P>>2]|0)|0;e=(c[o>>2]|0)-(c[e>>2]|0)|0;m=(c[r>>2]|0)-(c[m>>2]|0)|0;n=(c[u>>2]|0)-(c[n>>2]|0)|0;v=(c[x>>2]|0)-(c[v>>2]|0)|0;w=(c[A>>2]|0)-(c[w>>2]|0)|0;E=(c[D>>2]|0)-(c[E>>2]|0)|0;O=(c[C>>2]|0)-(c[O>>2]|0)|0;c[Y>>2]=(c[V>>2]|0)-(c[b>>2]|0);V=a+44|0;c[V>>2]=S;S=a+48|0;c[S>>2]=P;P=a+52|0;c[P>>2]=e;e=a+56|0;c[e>>2]=m;m=a+60|0;c[m>>2]=n;n=a+64|0;c[n>>2]=v;v=a+68|0;c[v>>2]=w;w=a+72|0;c[w>>2]=E;E=a+76|0;c[E>>2]=O;O=a+80|0;Hd(O,a,d+40|0);Hd(Y,Y,d);C=a+120|0;Hd(C,d+80|0,b+120|0);D=c[b+80>>2]<<1;A=c[b+84>>2]<<1;x=c[b+88>>2]<<1;u=c[b+92>>2]<<1;r=c[b+96>>2]<<1;o=c[b+100>>2]<<1;l=c[b+104>>2]<<1;i=c[b+108>>2]<<1;f=c[b+112>>2]<<1;d=c[b+116>>2]<<1;Z=c[O>>2]|0;N=a+84|0;W=c[N>>2]|0;M=a+88|0;T=c[M>>2]|0;L=a+92|0;Q=c[L>>2]|0;K=a+96|0;g=c[K>>2]|0;J=a+100|0;h=c[J>>2]|0;I=a+104|0;p=c[I>>2]|0;H=a+108|0;q=c[H>>2]|0;G=a+112|0;y=c[G>>2]|0;F=a+116|0;z=c[F>>2]|0;_=c[Y>>2]|0;X=c[V>>2]|0;U=c[S>>2]|0;R=c[P>>2]|0;b=c[e>>2]|0;j=c[m>>2]|0;k=c[n>>2]|0;s=c[v>>2]|0;t=c[w>>2]|0;B=c[E>>2]|0;c[a>>2]=Z-_;c[ha>>2]=W-X;c[ga>>2]=T-U;c[fa>>2]=Q-R;c[ea>>2]=g-b;c[da>>2]=h-j;c[ca>>2]=p-k;c[ba>>2]=q-s;c[aa>>2]=y-t;c[$>>2]=z-B;c[Y>>2]=_+Z;c[V>>2]=X+W;c[S>>2]=U+T;c[P>>2]=R+Q;c[e>>2]=b+g;c[m>>2]=j+h;c[n>>2]=k+p;c[v>>2]=s+q;c[w>>2]=t+y;c[E>>2]=B+z;E=c[C>>2]|0;z=a+124|0;B=c[z>>2]|0;w=a+128|0;y=c[w>>2]|0;t=a+132|0;v=c[t>>2]|0;q=a+136|0;s=c[q>>2]|0;n=a+140|0;p=c[n>>2]|0;k=a+144|0;m=c[k>>2]|0;h=a+148|0;j=c[h>>2]|0;e=a+152|0;g=c[e>>2]|0;a=a+156|0;b=c[a>>2]|0;c[O>>2]=D-E;c[N>>2]=A-B;c[M>>2]=x-y;c[L>>2]=u-v;c[K>>2]=r-s;c[J>>2]=o-p;c[I>>2]=l-m;c[H>>2]=i-j;c[G>>2]=f-g;c[F>>2]=d-b;c[C>>2]=E+D;c[z>>2]=B+A;c[w>>2]=y+x;c[t>>2]=v+u;c[q>>2]=s+r;c[n>>2]=p+o;c[k>>2]=m+l;c[h>>2]=j+i;c[e>>2]=g+f;c[a>>2]=b+d;return}\nfunction Ud(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;pa=i;i=i+240|0;ma=pa+200|0;na=pa+160|0;k=pa+120|0;l=pa+80|0;oa=pa+40|0;la=pa;ka=b+40|0;Ed(ka,e);h=b+80|0;c[h>>2]=1;j=b+84|0;f=j;g=f+36|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));Gd(na,ka);Hd(k,na,1696);ha=na+4|0;ia=na+8|0;ja=na+12|0;ba=na+16|0;ca=na+20|0;da=na+24|0;ea=na+28|0;fa=na+32|0;ga=na+36|0;B=c[h>>2]|0;A=c[j>>2]|0;y=c[b+88>>2]|0;w=c[b+92>>2]|0;u=c[b+96>>2]|0;s=c[b+100>>2]|0;$=c[b+104>>2]|0;Z=c[b+108>>2]|0;X=c[b+112>>2]|0;V=c[b+116>>2]|0;f=(c[na>>2]|0)-B|0;g=(c[ha>>2]|0)-A|0;h=(c[ia>>2]|0)-y|0;j=(c[ja>>2]|0)-w|0;r=(c[ba>>2]|0)-u|0;q=(c[ca>>2]|0)-s|0;m=(c[da>>2]|0)-$|0;n=(c[ea>>2]|0)-Z|0;o=(c[fa>>2]|0)-X|0;p=(c[ga>>2]|0)-V|0;c[na>>2]=f;c[ha>>2]=g;c[ia>>2]=h;c[ja>>2]=j;c[ba>>2]=r;c[ca>>2]=q;c[da>>2]=m;c[ea>>2]=n;c[fa>>2]=o;c[ga>>2]=p;z=k+4|0;x=k+8|0;v=k+12|0;t=k+16|0;aa=k+20|0;_=k+24|0;Y=k+28|0;W=k+32|0;U=k+36|0;A=A+(c[z>>2]|0)|0;y=y+(c[x>>2]|0)|0;w=w+(c[v>>2]|0)|0;u=u+(c[t>>2]|0)|0;s=s+(c[aa>>2]|0)|0;$=$+(c[_>>2]|0)|0;Z=Z+(c[Y>>2]|0)|0;X=X+(c[W>>2]|0)|0;V=V+(c[U>>2]|0)|0;c[k>>2]=B+(c[k>>2]|0);c[z>>2]=A;c[x>>2]=y;c[v>>2]=w;c[t>>2]=u;c[aa>>2]=s;c[_>>2]=$;c[Y>>2]=Z;c[W>>2]=X;c[U>>2]=V;Gd(l,k);Hd(l,l,k);Gd(b,l);Hd(b,b,k);Hd(b,b,na);Jd(b,b);Hd(b,b,l);Hd(b,b,na);Gd(oa,b);Hd(oa,oa,k);U=oa+4|0;V=oa+8|0;W=oa+12|0;X=oa+16|0;Y=oa+20|0;Z=oa+24|0;_=oa+28|0;$=oa+32|0;aa=oa+36|0;g=(c[U>>2]|0)-g|0;h=(c[V>>2]|0)-h|0;j=(c[W>>2]|0)-j|0;k=(c[X>>2]|0)-r|0;l=(c[Y>>2]|0)-q|0;m=(c[Z>>2]|0)-m|0;n=(c[_>>2]|0)-n|0;o=(c[$>>2]|0)-o|0;p=(c[aa>>2]|0)-p|0;c[la>>2]=(c[oa>>2]|0)-f;f=la+4|0;c[f>>2]=g;g=la+8|0;c[g>>2]=h;h=la+12|0;c[h>>2]=j;j=la+16|0;c[j>>2]=k;k=la+20|0;c[k>>2]=l;l=la+24|0;c[l>>2]=m;m=la+28|0;c[m>>2]=n;n=la+32|0;c[n>>2]=o;o=la+36|0;c[o>>2]=p;Id(ma,la);p=ma+1|0;q=ma+2|0;r=ma+3|0;s=ma+4|0;t=ma+5|0;u=ma+6|0;v=ma+7|0;w=ma+8|0;x=ma+9|0;y=ma+10|0;z=ma+11|0;A=ma+12|0;B=ma+13|0;C=ma+14|0;D=ma+15|0;E=ma+16|0;F=ma+17|0;G=ma+18|0;H=ma+19|0;I=ma+20|0;J=ma+21|0;K=ma+22|0;L=ma+23|0;M=ma+24|0;N=ma+25|0;O=ma+26|0;P=ma+27|0;Q=ma+28|0;R=ma+29|0;S=ma+30|0;T=ma+31|0;do if((a[p>>0]|a[ma>>0]|a[q>>0]|a[r>>0]|a[s>>0]|a[t>>0]|a[u>>0]|a[v>>0]|a[w>>0]|a[x>>0]|a[y>>0]|a[z>>0]|a[A>>0]|a[B>>0]|a[C>>0]|a[D>>0]|a[E>>0]|a[F>>0]|a[G>>0]|a[H>>0]|a[I>>0]|a[J>>0]|a[K>>0]|a[L>>0]|a[M>>0]|a[N>>0]|a[O>>0]|a[P>>0]|a[Q>>0]|a[R>>0]|a[S>>0]|a[T>>0])<<24>>24){U=(c[ha>>2]|0)+(c[U>>2]|0)|0;V=(c[ia>>2]|0)+(c[V>>2]|0)|0;W=(c[ja>>2]|0)+(c[W>>2]|0)|0;ba=(c[ba>>2]|0)+(c[X>>2]|0)|0;ca=(c[ca>>2]|0)+(c[Y>>2]|0)|0;da=(c[da>>2]|0)+(c[Z>>2]|0)|0;ha=(c[ea>>2]|0)+(c[_>>2]|0)|0;ia=(c[fa>>2]|0)+(c[$>>2]|0)|0;ja=(c[ga>>2]|0)+(c[aa>>2]|0)|0;c[la>>2]=(c[na>>2]|0)+(c[oa>>2]|0);c[f>>2]=U;c[g>>2]=V;c[h>>2]=W;c[j>>2]=ba;c[k>>2]=ca;c[l>>2]=da;c[m>>2]=ha;c[n>>2]=ia;c[o>>2]=ja;Id(ma,la);if(!((a[p>>0]|a[ma>>0]|a[q>>0]|a[r>>0]|a[s>>0]|a[t>>0]|a[u>>0]|a[v>>0]|a[w>>0]|a[x>>0]|a[y>>0]|a[z>>0]|a[A>>0]|a[B>>0]|a[C>>0]|a[D>>0]|a[E>>0]|a[F>>0]|a[G>>0]|a[H>>0]|a[I>>0]|a[J>>0]|a[K>>0]|a[L>>0]|a[M>>0]|a[N>>0]|a[O>>0]|a[P>>0]|a[Q>>0]|a[R>>0]|a[S>>0]|a[T>>0])<<24>>24)){Hd(b,b,1736);break}else{oa=-1;i=pa;return oa|0}}while(0);Id(ma,b);if(((d[ma>>0]|0)&1|0)==((d[e+31>>0]|0)>>>7|0)){_=b+4|0;aa=b+8|0;ca=b+12|0;ea=b+16|0;ga=b+20|0;ia=b+24|0;la=b+28|0;ma=b+32|0;oa=b+36|0;Z=0-(c[_>>2]|0)|0;$=0-(c[aa>>2]|0)|0;ba=0-(c[ca>>2]|0)|0;da=0-(c[ea>>2]|0)|0;fa=0-(c[ga>>2]|0)|0;ha=0-(c[ia>>2]|0)|0;ja=0-(c[la>>2]|0)|0;e=0-(c[ma>>2]|0)|0;na=0-(c[oa>>2]|0)|0;c[b>>2]=0-(c[b>>2]|0);c[_>>2]=Z;c[aa>>2]=$;c[ca>>2]=ba;c[ea>>2]=da;c[ga>>2]=fa;c[ia>>2]=ha;c[la>>2]=ja;c[ma>>2]=e;c[oa>>2]=na}Hd(b+120|0,b,ka);oa=0;i=pa;return oa|0}function Vd(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;t=i;i=i+592|0;o=t+400|0;q=t+520|0;r=t+240|0;p=t+120|0;s=t;f=0;do{m=a[e+f>>0]|0;n=f<<1;a[q+n>>0]=m&15;a[q+(n|1)>>0]=(m&255)>>>4;f=f+1|0}while((f|0)!=32);e=0;f=0;do{n=q+f|0;m=(d[n>>0]|0)+e|0;e=(m<<24)+134217728>>28;a[n>>0]=m-(e<<4);f=f+1|0}while((f|0)!=63);f=q+63|0;a[f>>0]=(d[f>>0]|0)+e;e=b;f=e+40|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));m=b+40|0;c[m>>2]=1;k=b+44|0;e=k;f=e+36|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));n=b+80|0;c[n>>2]=1;l=b+84|0;e=l;f=e+76|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));f=r+120|0;g=r+40|0;h=r+80|0;j=b+120|0;e=1;do{Wd(s,(e|0)/2|0,a[q+e>>0]|0);Sd(r,b,s);Hd(b,r,f);Hd(m,g,h);Hd(n,h,f);Hd(j,r,g);e=e+2|0}while((e|0)<64);B=c[b+4>>2]|0;z=c[b+8>>2]|0;y=c[b+12>>2]|0;x=c[b+16>>2]|0;w=c[b+20>>2]|0;v=c[b+24>>2]|0;u=c[b+28>>2]|0;e=c[b+32>>2]|0;A=c[b+36>>2]|0;c[o>>2]=c[b>>2];c[o+4>>2]=B;c[o+8>>2]=z;c[o+12>>2]=y;c[o+16>>2]=x;c[o+20>>2]=w;c[o+24>>2]=v;c[o+28>>2]=u;c[o+32>>2]=e;c[o+36>>2]=A;A=c[k>>2]|0;e=c[b+48>>2]|0;k=c[b+52>>2]|0;u=c[b+56>>2]|0;v=c[b+60>>2]|0;w=c[b+64>>2]|0;x=c[b+68>>2]|0;y=c[b+72>>2]|0;z=c[b+76>>2]|0;c[o+40>>2]=c[m>>2];c[o+44>>2]=A;c[o+48>>2]=e;c[o+52>>2]=k;c[o+56>>2]=u;c[o+60>>2]=v;c[o+64>>2]=w;c[o+68>>2]=x;c[o+72>>2]=y;c[o+76>>2]=z;z=c[l>>2]|0;y=c[b+88>>2]|0;x=c[b+92>>2]|0;w=c[b+96>>2]|0;v=c[b+100>>2]|0;u=c[b+104>>2]|0;k=c[b+108>>2]|0;l=c[b+112>>2]|0;e=c[b+116>>2]|0;c[o+80>>2]=c[n>>2];c[o+84>>2]=z;c[o+88>>2]=y;c[o+92>>2]=x;c[o+96>>2]=w;c[o+100>>2]=v;c[o+104>>2]=u;c[o+108>>2]=k;c[o+112>>2]=l;c[o+116>>2]=e;Qd(r,o);Hd(p,r,f);o=p+40|0;Hd(o,g,h);e=p+80|0;Hd(e,h,f);Qd(r,p);Hd(p,r,f);Hd(o,g,h);Hd(e,h,f);Qd(r,p);Hd(p,r,f);Hd(o,g,h);Hd(e,h,f);Qd(r,p);Hd(b,r,f);Hd(m,g,h);Hd(n,h,f);Hd(j,r,g);e=0;do{Wd(s,(e|0)/2|0,a[q+e>>0]|0);Sd(r,b,s);Hd(b,r,f);Hd(m,g,h);Hd(n,h,f);Hd(j,r,g);e=e+2|0}while((e|0)<64);i=t;return}function Wd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;s=d<<24>>24;s=of(s|0,((s|0)<0)<<31>>31|0,63)|0;d=d<<24>>24;s=0-s|0;d=d-((d&s)<<1)&255;c[a>>2]=1;e=a+4|0;t=e;u=t+36|0;do{c[t>>2]=0;t=t+4|0}while((t|0)<(u|0));f=a+40|0;c[f>>2]=1;g=a+44|0;h=a+80|0;i=lf((d^1)&255|0,0,-1,-1)|0;i=of(i|0,C|0,63)|0;j=1776+(b*960|0)|0;k=a+8|0;l=a+12|0;m=a+16|0;n=a+20|0;o=a+24|0;p=a+28|0;q=a+32|0;r=a+36|0;t=g;u=t+76|0;do{c[t>>2]=0;t=t+4|0}while((t|0)<(u|0));A=0-i|0;ia=c[1776+(b*960|0)+4>>2]&A;J=c[1776+(b*960|0)+8>>2]&A;L=c[1776+(b*960|0)+12>>2]&A;N=c[1776+(b*960|0)+16>>2]&A;P=c[1776+(b*960|0)+20>>2]&A;R=c[1776+(b*960|0)+24>>2]&A;T=c[1776+(b*960|0)+28>>2]&A;V=c[1776+(b*960|0)+32>>2]&A;X=c[1776+(b*960|0)+36>>2]&A;c[a>>2]=(c[j>>2]^1)&A^1;c[e>>2]=ia;c[k>>2]=J;c[l>>2]=L;c[m>>2]=N;c[n>>2]=P;c[o>>2]=R;c[p>>2]=T;c[q>>2]=V;c[r>>2]=X;X=a+48|0;V=a+52|0;T=a+56|0;R=a+60|0;P=a+64|0;N=a+68|0;L=a+72|0;J=a+76|0;ia=c[1776+(b*960|0)+44>>2]&A;z=c[1776+(b*960|0)+48>>2]&A;D=c[1776+(b*960|0)+52>>2]&A;B=c[1776+(b*960|0)+56>>2]&A;$=c[1776+(b*960|0)+60>>2]&A;E=c[1776+(b*960|0)+64>>2]&A;da=c[1776+(b*960|0)+68>>2]&A;G=c[1776+(b*960|0)+72>>2]&A;ha=c[1776+(b*960|0)+76>>2]&A;c[f>>2]=(c[1776+(b*960|0)+40>>2]^1)&A^1;c[g>>2]=ia;c[X>>2]=z;c[V>>2]=D;c[T>>2]=B;c[R>>2]=$;c[P>>2]=E;c[N>>2]=da;c[L>>2]=G;c[J>>2]=ha;ha=c[h>>2]|0;G=a+84|0;da=c[G>>2]|0;E=a+88|0;$=c[E>>2]|0;B=a+92|0;D=c[B>>2]|0;z=a+96|0;ia=c[z>>2]|0;x=a+100|0;ea=c[x>>2]|0;v=a+104|0;aa=c[v>>2]|0;i=a+108|0;w=c[i>>2]|0;t=a+112|0;F=c[t>>2]|0;u=a+116|0;j=c[u>>2]|0;fa=(c[1776+(b*960|0)+84>>2]^da)&A;ba=(c[1776+(b*960|0)+88>>2]^$)&A;y=(c[1776+(b*960|0)+92>>2]^D)&A;H=(c[1776+(b*960|0)+96>>2]^ia)&A;ga=(c[1776+(b*960|0)+100>>2]^ea)&A;ca=(c[1776+(b*960|0)+104>>2]^aa)&A;ja=(c[1776+(b*960|0)+108>>2]^w)&A;_=(c[1776+(b*960|0)+112>>2]^F)&A;I=(c[1776+(b*960|0)+116>>2]^j)&A;c[h>>2]=(c[1776+(b*960|0)+80>>2]^ha)&A^ha;c[G>>2]=fa^da;c[E>>2]=ba^$;c[B>>2]=y^D;c[z>>2]=H^ia;c[x>>2]=ga^ea;c[v>>2]=ca^aa;c[i>>2]=ja^w;c[t>>2]=_^F;c[u>>2]=I^j;j=lf((d^2)&255|0,0,-1,-1)|0;j=of(j|0,C|0,63)|0;I=c[a>>2]|0;F=c[e>>2]|0;_=c[k>>2]|0;w=c[l>>2]|0;ja=c[m>>2]|0;aa=c[n>>2]|0;ca=c[o>>2]|0;ea=c[p>>2]|0;ga=c[q>>2]|0;ia=c[r>>2]|0;j=0-j|0;H=(c[1776+(b*960|0)+124>>2]^F)&j;D=(c[1776+(b*960|0)+128>>2]^_)&j;y=(c[1776+(b*960|0)+132>>2]^w)&j;$=(c[1776+(b*960|0)+136>>2]^ja)&j;ba=(c[1776+(b*960|0)+140>>2]^aa)&j;da=(c[1776+(b*960|0)+144>>2]^ca)&j;fa=(c[1776+(b*960|0)+148>>2]^ea)&j;ha=(c[1776+(b*960|0)+152>>2]^ga)&j;A=(c[1776+(b*960|0)+156>>2]^ia)&j;c[a>>2]=(c[1776+(b*960|0)+120>>2]^I)&j^I;c[e>>2]=H^F;c[k>>2]=D^_;c[l>>2]=y^w;c[m>>2]=$^ja;c[n>>2]=ba^aa;c[o>>2]=da^ca;c[p>>2]=fa^ea;c[q>>2]=ha^ga;c[r>>2]=A^ia;ia=c[f>>2]|0;A=c[g>>2]|0;ga=c[X>>2]|0;ha=c[V>>2]|0;ea=c[T>>2]|0;fa=c[R>>2]|0;ca=c[P>>2]|0;da=c[N>>2]|0;aa=c[L>>2]|0;ba=c[J>>2]|0;ja=(c[1776+(b*960|0)+164>>2]^A)&j;$=(c[1776+(b*960|0)+168>>2]^ga)&j;w=(c[1776+(b*960|0)+172>>2]^ha)&j;y=(c[1776+(b*960|0)+176>>2]^ea)&j;_=(c[1776+(b*960|0)+180>>2]^fa)&j;D=(c[1776+(b*960|0)+184>>2]^ca)&j;F=(c[1776+(b*960|0)+188>>2]^da)&j;H=(c[1776+(b*960|0)+192>>2]^aa)&j;I=(c[1776+(b*960|0)+196>>2]^ba)&j;c[f>>2]=(c[1776+(b*960|0)+160>>2]^ia)&j^ia;c[g>>2]=ja^A;c[X>>2]=$^ga;c[V>>2]=w^ha;c[T>>2]=y^ea;c[R>>2]=_^fa;c[P>>2]=D^ca;c[N>>2]=F^da;c[L>>2]=H^aa;c[J>>2]=I^ba;ba=c[h>>2]|0;I=c[G>>2]|0;aa=c[E>>2]|0;H=c[B>>2]|0;da=c[z>>2]|0;F=c[x>>2]|0;ca=c[v>>2]|0;D=c[i>>2]|0;fa=c[t>>2]|0;_=c[u>>2]|0;ea=(c[1776+(b*960|0)+204>>2]^I)&j;y=(c[1776+(b*960|0)+208>>2]^aa)&j;ha=(c[1776+(b*960|0)+212>>2]^H)&j;w=(c[1776+(b*960|0)+216>>2]^da)&j;ga=(c[1776+(b*960|0)+220>>2]^F)&j;$=(c[1776+(b*960|0)+224>>2]^ca)&j;A=(c[1776+(b*960|0)+228>>2]^D)&j;ja=(c[1776+(b*960|0)+232>>2]^fa)&j;ia=(c[1776+(b*960|0)+236>>2]^_)&j;c[h>>2]=(c[1776+(b*960|0)+200>>2]^ba)&j^ba;c[G>>2]=ea^I;c[E>>2]=y^aa;c[B>>2]=ha^H;c[z>>2]=w^da;c[x>>2]=ga^F;c[v>>2]=$^ca;c[i>>2]=A^D;c[t>>2]=ja^fa;c[u>>2]=ia^_;_=lf((d^3)&255|0,0,-1,-1)|0;_=of(_|0,C|0,63)|0;ia=c[a>>2]|0;fa=c[e>>2]|0;ja=c[k>>2]|0;D=c[l>>2]|0;A=c[m>>2]|0;ca=c[n>>2]|0;$=c[o>>2]|0;F=c[p>>2]|0;ga=c[q>>2]|0;da=c[r>>2]|0;_=0-_|0;w=(c[1776+(b*960|0)+244>>2]^fa)&_;H=(c[1776+(b*960|0)+248>>2]^ja)&_;ha=(c[1776+(b*960|0)+252>>2]^D)&_;aa=(c[1776+(b*960|0)+256>>2]^A)&_;y=(c[1776+(b*960|0)+260>>2]^ca)&_;I=(c[1776+(b*960|0)+264>>2]^$)&_;ea=(c[1776+(b*960|0)+268>>2]^F)&_;ba=(c[1776+(b*960|0)+272>>2]^ga)&_;j=(c[1776+(b*960|0)+276>>2]^da)&_;c[a>>2]=(c[1776+(b*960|0)+240>>2]^ia)&_^ia;c[e>>2]=w^fa;c[k>>2]=H^ja;c[l>>2]=ha^D;c[m>>2]=aa^A;c[n>>2]=y^ca;c[o>>2]=I^$;c[p>>2]=ea^F;c[q>>2]=ba^ga;c[r>>2]=j^da;da=c[f>>2]|0;j=c[g>>2]|0;ga=c[X>>2]|0;ba=c[V>>2]|0;F=c[T>>2]|0;ea=c[R>>2]|0;$=c[P>>2]|0;I=c[N>>2]|0;ca=c[L>>2]|0;y=c[J>>2]|0;A=(c[1776+(b*960|0)+284>>2]^j)&_;aa=(c[1776+(b*960|0)+288>>2]^ga)&_;D=(c[1776+(b*960|0)+292>>2]^ba)&_;ha=(c[1776+(b*960|0)+296>>2]^F)&_;ja=(c[1776+(b*960|0)+300>>2]^ea)&_;H=(c[1776+(b*960|0)+304>>2]^$)&_;fa=(c[1776+(b*960|0)+308>>2]^I)&_;w=(c[1776+(b*960|0)+312>>2]^ca)&_;ia=(c[1776+(b*960|0)+316>>2]^y)&_;c[f>>2]=(c[1776+(b*960|0)+280>>2]^da)&_^da;c[g>>2]=A^j;c[X>>2]=aa^ga;c[V>>2]=D^ba;c[T>>2]=ha^F;c[R>>2]=ja^ea;c[P>>2]=H^$;c[N>>2]=fa^I;c[L>>2]=w^ca;c[J>>2]=ia^y;y=c[h>>2]|0;ia=c[G>>2]|0;ca=c[E>>2]|0;w=c[B>>2]|0;I=c[z>>2]|0;fa=c[x>>2]|0;$=c[v>>2]|0;H=c[i>>2]|0;ea=c[t>>2]|0;ja=c[u>>2]|0;F=(c[1776+(b*960|0)+324>>2]^ia)&_;ha=(c[1776+(b*960|0)+328>>2]^ca)&_;ba=(c[1776+(b*960|0)+332>>2]^w)&_;D=(c[1776+(b*960|0)+336>>2]^I)&_;ga=(c[1776+(b*960|0)+340>>2]^fa)&_;aa=(c[1776+(b*960|0)+344>>2]^$)&_;j=(c[1776+(b*960|0)+348>>2]^H)&_;A=(c[1776+(b*960|0)+352>>2]^ea)&_;da=(c[1776+(b*960|0)+356>>2]^ja)&_;c[h>>2]=(c[1776+(b*960|0)+320>>2]^y)&_^y;c[G>>2]=F^ia;c[E>>2]=ha^ca;c[B>>2]=ba^w;c[z>>2]=D^I;c[x>>2]=ga^fa;c[v>>2]=aa^$;c[i>>2]=j^H;c[t>>2]=A^ea;c[u>>2]=da^ja;ja=lf((d^4)&255|0,0,-1,-1)|0;ja=of(ja|0,C|0,63)|0;da=c[a>>2]|0;ea=c[e>>2]|0;A=c[k>>2]|0;H=c[l>>2]|0;j=c[m>>2]|0;$=c[n>>2]|0;aa=c[o>>2]|0;fa=c[p>>2]|0;ga=c[q>>2]|0;I=c[r>>2]|0;ja=0-ja|0;D=(c[1776+(b*960|0)+364>>2]^ea)&ja;w=(c[1776+(b*960|0)+368>>2]^A)&ja;ba=(c[1776+(b*960|0)+372>>2]^H)&ja;ca=(c[1776+(b*960|0)+376>>2]^j)&ja;ha=(c[1776+(b*960|0)+380>>2]^$)&ja;ia=(c[1776+(b*960|0)+384>>2]^aa)&ja;F=(c[1776+(b*960|0)+388>>2]^fa)&ja;y=(c[1776+(b*960|0)+392>>2]^ga)&ja;_=(c[1776+(b*960|0)+396>>2]^I)&ja;c[a>>2]=(c[1776+(b*960|0)+360>>2]^da)&ja^da;c[e>>2]=D^ea;c[k>>2]=w^A;c[l>>2]=ba^H;c[m>>2]=ca^j;c[n>>2]=ha^$;c[o>>2]=ia^aa;c[p>>2]=F^fa;c[q>>2]=y^ga;c[r>>2]=_^I;I=c[f>>2]|0;_=c[g>>2]|0;ga=c[X>>2]|0;y=c[V>>2]|0;fa=c[T>>2]|0;F=c[R>>2]|0;aa=c[P>>2]|0;ia=c[N>>2]|0;$=c[L>>2]|0;ha=c[J>>2]|0;j=(c[1776+(b*960|0)+404>>2]^_)&ja;ca=(c[1776+(b*960|0)+408>>2]^ga)&ja;H=(c[1776+(b*960|0)+412>>2]^y)&ja;ba=(c[1776+(b*960|0)+416>>2]^fa)&ja;A=(c[1776+(b*960|0)+420>>2]^F)&ja;w=(c[1776+(b*960|0)+424>>2]^aa)&ja;ea=(c[1776+(b*960|0)+428>>2]^ia)&ja;D=(c[1776+(b*960|0)+432>>2]^$)&ja;da=(c[1776+(b*960|0)+436>>2]^ha)&ja;c[f>>2]=(c[1776+(b*960|0)+400>>2]^I)&ja^I;c[g>>2]=j^_;c[X>>2]=ca^ga;c[V>>2]=H^y;c[T>>2]=ba^fa;c[R>>2]=A^F;c[P>>2]=w^aa;c[N>>2]=ea^ia;c[L>>2]=D^$;c[J>>2]=da^ha;ha=c[h>>2]|0;da=c[G>>2]|0;$=c[E>>2]|0;D=c[B>>2]|0;ia=c[z>>2]|0;ea=c[x>>2]|0;aa=c[v>>2]|0;w=c[i>>2]|0;F=c[t>>2]|0;A=c[u>>2]|0;fa=(c[1776+(b*960|0)+444>>2]^da)&ja;ba=(c[1776+(b*960|0)+448>>2]^$)&ja;y=(c[1776+(b*960|0)+452>>2]^D)&ja;H=(c[1776+(b*960|0)+456>>2]^ia)&ja;ga=(c[1776+(b*960|0)+460>>2]^ea)&ja;ca=(c[1776+(b*960|0)+464>>2]^aa)&ja;_=(c[1776+(b*960|0)+468>>2]^w)&ja;j=(c[1776+(b*960|0)+472>>2]^F)&ja;I=(c[1776+(b*960|0)+476>>2]^A)&ja;c[h>>2]=(c[1776+(b*960|0)+440>>2]^ha)&ja^ha;c[G>>2]=fa^da;c[E>>2]=ba^$;c[B>>2]=y^D;c[z>>2]=H^ia;c[x>>2]=ga^ea;c[v>>2]=ca^aa;c[i>>2]=_^w;c[t>>2]=j^F;c[u>>2]=I^A;A=lf((d^5)&255|0,0,-1,-1)|0;A=of(A|0,C|0,63)|0;I=c[a>>2]|0;F=c[e>>2]|0;j=c[k>>2]|0;w=c[l>>2]|0;_=c[m>>2]|0;aa=c[n>>2]|0;ca=c[o>>2]|0;ea=c[p>>2]|0;ga=c[q>>2]|0;ia=c[r>>2]|0;A=0-A|0;H=(c[1776+(b*960|0)+484>>2]^F)&A;D=(c[1776+(b*960|0)+488>>2]^j)&A;y=(c[1776+(b*960|0)+492>>2]^w)&A;$=(c[1776+(b*960|0)+496>>2]^_)&A;ba=(c[1776+(b*960|0)+500>>2]^aa)&A;da=(c[1776+(b*960|0)+504>>2]^ca)&A;fa=(c[1776+(b*960|0)+508>>2]^ea)&A;ha=(c[1776+(b*960|0)+512>>2]^ga)&A;ja=(c[1776+(b*960|0)+516>>2]^ia)&A;c[a>>2]=(c[1776+(b*960|0)+480>>2]^I)&A^I;c[e>>2]=H^F;c[k>>2]=D^j;c[l>>2]=y^w;c[m>>2]=$^_;c[n>>2]=ba^aa;c[o>>2]=da^ca;c[p>>2]=fa^ea;c[q>>2]=ha^ga;c[r>>2]=ja^ia;ia=c[f>>2]|0;ja=c[g>>2]|0;ga=c[X>>2]|0;ha=c[V>>2]|0;ea=c[T>>2]|0;fa=c[R>>2]|0;ca=c[P>>2]|0;da=c[N>>2]|0;aa=c[L>>2]|0;ba=c[J>>2]|0;_=(c[1776+(b*960|0)+524>>2]^ja)&A;$=(c[1776+(b*960|0)+528>>2]^ga)&A;w=(c[1776+(b*960|0)+532>>2]^ha)&A;y=(c[1776+(b*960|0)+536>>2]^ea)&A;j=(c[1776+(b*960|0)+540>>2]^fa)&A;D=(c[1776+(b*960|0)+544>>2]^ca)&A;F=(c[1776+(b*960|0)+548>>2]^da)&A;H=(c[1776+(b*960|0)+552>>2]^aa)&A;I=(c[1776+(b*960|0)+556>>2]^ba)&A;c[f>>2]=(c[1776+(b*960|0)+520>>2]^ia)&A^ia;c[g>>2]=_^ja;c[X>>2]=$^ga;c[V>>2]=w^ha;c[T>>2]=y^ea;c[R>>2]=j^fa;c[P>>2]=D^ca;c[N>>2]=F^da;c[L>>2]=H^aa;c[J>>2]=I^ba;ba=c[h>>2]|0;I=c[G>>2]|0;aa=c[E>>2]|0;H=c[B>>2]|0;da=c[z>>2]|0;F=c[x>>2]|0;ca=c[v>>2]|0;D=c[i>>2]|0;fa=c[t>>2]|0;j=c[u>>2]|0;ea=(c[1776+(b*960|0)+564>>2]^I)&A;y=(c[1776+(b*960|0)+568>>2]^aa)&A;ha=(c[1776+(b*960|0)+572>>2]^H)&A;w=(c[1776+(b*960|0)+576>>2]^da)&A;ga=(c[1776+(b*960|0)+580>>2]^F)&A;$=(c[1776+(b*960|0)+584>>2]^ca)&A;ja=(c[1776+(b*960|0)+588>>2]^D)&A;_=(c[1776+(b*960|0)+592>>2]^fa)&A;ia=(c[1776+(b*960|0)+596>>2]^j)&A;c[h>>2]=(c[1776+(b*960|0)+560>>2]^ba)&A^ba;c[G>>2]=ea^I;c[E>>2]=y^aa;c[B>>2]=ha^H;c[z>>2]=w^da;c[x>>2]=ga^F;c[v>>2]=$^ca;c[i>>2]=ja^D;c[t>>2]=_^fa;c[u>>2]=ia^j;j=lf((d^6)&255|0,0,-1,-1)|0;j=of(j|0,C|0,63)|0;ia=c[a>>2]|0;fa=c[e>>2]|0;_=c[k>>2]|0;D=c[l>>2]|0;ja=c[m>>2]|0;ca=c[n>>2]|0;$=c[o>>2]|0;F=c[p>>2]|0;ga=c[q>>2]|0;da=c[r>>2]|0;j=0-j|0;w=(c[1776+(b*960|0)+604>>2]^fa)&j;H=(c[1776+(b*960|0)+608>>2]^_)&j;ha=(c[1776+(b*960|0)+612>>2]^D)&j;aa=(c[1776+(b*960|0)+616>>2]^ja)&j;y=(c[1776+(b*960|0)+620>>2]^ca)&j;I=(c[1776+(b*960|0)+624>>2]^$)&j;ea=(c[1776+(b*960|0)+628>>2]^F)&j;ba=(c[1776+(b*960|0)+632>>2]^ga)&j;A=(c[1776+(b*960|0)+636>>2]^da)&j;c[a>>2]=(c[1776+(b*960|0)+600>>2]^ia)&j^ia;c[e>>2]=w^fa;c[k>>2]=H^_;c[l>>2]=ha^D;c[m>>2]=aa^ja;c[n>>2]=y^ca;c[o>>2]=I^$;c[p>>2]=ea^F;c[q>>2]=ba^ga;c[r>>2]=A^da;da=c[f>>2]|0;A=c[g>>2]|0;ga=c[X>>2]|0;ba=c[V>>2]|0;F=c[T>>2]|0;ea=c[R>>2]|0;$=c[P>>2]|0;I=c[N>>2]|0;ca=c[L>>2]|0;y=c[J>>2]|0;ja=(c[1776+(b*960|0)+644>>2]^A)&j;aa=(c[1776+(b*960|0)+648>>2]^ga)&j;D=(c[1776+(b*960|0)+652>>2]^ba)&j;ha=(c[1776+(b*960|0)+656>>2]^F)&j;_=(c[1776+(b*960|0)+660>>2]^ea)&j;H=(c[1776+(b*960|0)+664>>2]^$)&j;fa=(c[1776+(b*960|0)+668>>2]^I)&j;w=(c[1776+(b*960|0)+672>>2]^ca)&j;ia=(c[1776+(b*960|0)+676>>2]^y)&j;c[f>>2]=(c[1776+(b*960|0)+640>>2]^da)&j^da;c[g>>2]=ja^A;c[X>>2]=aa^ga;c[V>>2]=D^ba;c[T>>2]=ha^F;c[R>>2]=_^ea;c[P>>2]=H^$;c[N>>2]=fa^I;c[L>>2]=w^ca;c[J>>2]=ia^y;y=c[h>>2]|0;ia=c[G>>2]|0;ca=c[E>>2]|0;w=c[B>>2]|0;I=c[z>>2]|0;fa=c[x>>2]|0;$=c[v>>2]|0;H=c[i>>2]|0;ea=c[t>>2]|0;_=c[u>>2]|0;F=(c[1776+(b*960|0)+684>>2]^ia)&j;ha=(c[1776+(b*960|0)+688>>2]^ca)&j;ba=(c[1776+(b*960|0)+692>>2]^w)&j;D=(c[1776+(b*960|0)+696>>2]^I)&j;ga=(c[1776+(b*960|0)+700>>2]^fa)&j;aa=(c[1776+(b*960|0)+704>>2]^$)&j;A=(c[1776+(b*960|0)+708>>2]^H)&j;ja=(c[1776+(b*960|0)+712>>2]^ea)&j;da=(c[1776+(b*960|0)+716>>2]^_)&j;c[h>>2]=(c[1776+(b*960|0)+680>>2]^y)&j^y;c[G>>2]=F^ia;c[E>>2]=ha^ca;c[B>>2]=ba^w;c[z>>2]=D^I;c[x>>2]=ga^fa;c[v>>2]=aa^$;c[i>>2]=A^H;c[t>>2]=ja^ea;c[u>>2]=da^_;_=lf((d^7)&255|0,0,-1,-1)|0;_=of(_|0,C|0,63)|0;da=c[a>>2]|0;ea=c[e>>2]|0;ja=c[k>>2]|0;H=c[l>>2]|0;A=c[m>>2]|0;$=c[n>>2]|0;aa=c[o>>2]|0;fa=c[p>>2]|0;ga=c[q>>2]|0;I=c[r>>2]|0;_=0-_|0;D=(c[1776+(b*960|0)+724>>2]^ea)&_;w=(c[1776+(b*960|0)+728>>2]^ja)&_;ba=(c[1776+(b*960|0)+732>>2]^H)&_;ca=(c[1776+(b*960|0)+736>>2]^A)&_;ha=(c[1776+(b*960|0)+740>>2]^$)&_;ia=(c[1776+(b*960|0)+744>>2]^aa)&_;F=(c[1776+(b*960|0)+748>>2]^fa)&_;y=(c[1776+(b*960|0)+752>>2]^ga)&_;j=(c[1776+(b*960|0)+756>>2]^I)&_;c[a>>2]=(c[1776+(b*960|0)+720>>2]^da)&_^da;c[e>>2]=D^ea;c[k>>2]=w^ja;c[l>>2]=ba^H;c[m>>2]=ca^A;c[n>>2]=ha^$;c[o>>2]=ia^aa;c[p>>2]=F^fa;c[q>>2]=y^ga;c[r>>2]=j^I;I=c[f>>2]|0;j=c[g>>2]|0;ga=c[X>>2]|0;y=c[V>>2]|0;fa=c[T>>2]|0;F=c[R>>2]|0;aa=c[P>>2]|0;ia=c[N>>2]|0;$=c[L>>2]|0;ha=c[J>>2]|0;A=(c[1776+(b*960|0)+764>>2]^j)&_;ca=(c[1776+(b*960|0)+768>>2]^ga)&_;H=(c[1776+(b*960|0)+772>>2]^y)&_;ba=(c[1776+(b*960|0)+776>>2]^fa)&_;ja=(c[1776+(b*960|0)+780>>2]^F)&_;w=(c[1776+(b*960|0)+784>>2]^aa)&_;ea=(c[1776+(b*960|0)+788>>2]^ia)&_;D=(c[1776+(b*960|0)+792>>2]^$)&_;da=(c[1776+(b*960|0)+796>>2]^ha)&_;c[f>>2]=(c[1776+(b*960|0)+760>>2]^I)&_^I;c[g>>2]=A^j;c[X>>2]=ca^ga;c[V>>2]=H^y;c[T>>2]=ba^fa;c[R>>2]=ja^F;c[P>>2]=w^aa;c[N>>2]=ea^ia;c[L>>2]=D^$;c[J>>2]=da^ha;ha=c[h>>2]|0;da=c[G>>2]|0;$=c[E>>2]|0;D=c[B>>2]|0;ia=c[z>>2]|0;ea=c[x>>2]|0;aa=c[v>>2]|0;w=c[i>>2]|0;F=c[t>>2]|0;ja=c[u>>2]|0;fa=(c[1776+(b*960|0)+804>>2]^da)&_;ba=(c[1776+(b*960|0)+808>>2]^$)&_;y=(c[1776+(b*960|0)+812>>2]^D)&_;H=(c[1776+(b*960|0)+816>>2]^ia)&_;ga=(c[1776+(b*960|0)+820>>2]^ea)&_;ca=(c[1776+(b*960|0)+824>>2]^aa)&_;j=(c[1776+(b*960|0)+828>>2]^w)&_;A=(c[1776+(b*960|0)+832>>2]^F)&_;I=(c[1776+(b*960|0)+836>>2]^ja)&_;c[h>>2]=(c[1776+(b*960|0)+800>>2]^ha)&_^ha;c[G>>2]=fa^da;c[E>>2]=ba^$;c[B>>2]=y^D;c[z>>2]=H^ia;c[x>>2]=ga^ea;c[v>>2]=ca^aa;c[i>>2]=j^w;c[t>>2]=A^F;c[u>>2]=I^ja;ja=lf((d^8)&255|0,0,-1,-1)|0;ja=of(ja|0,C|0,63)|0;I=c[a>>2]|0;F=c[e>>2]|0;A=c[k>>2]|0;w=c[l>>2]|0;j=c[m>>2]|0;aa=c[n>>2]|0;ca=c[o>>2]|0;ea=c[p>>2]|0;ga=c[q>>2]|0;ia=c[r>>2]|0;ja=0-ja|0;H=(c[1776+(b*960|0)+844>>2]^F)&ja;D=(c[1776+(b*960|0)+848>>2]^A)&ja;y=(c[1776+(b*960|0)+852>>2]^w)&ja;d=(c[1776+(b*960|0)+856>>2]^j)&ja;$=(c[1776+(b*960|0)+860>>2]^aa)&ja;ba=(c[1776+(b*960|0)+864>>2]^ca)&ja;da=(c[1776+(b*960|0)+868>>2]^ea)&ja;fa=(c[1776+(b*960|0)+872>>2]^ga)&ja;ha=(c[1776+(b*960|0)+876>>2]^ia)&ja;c[a>>2]=(c[1776+(b*960|0)+840>>2]^I)&ja^I;c[e>>2]=H^F;c[k>>2]=D^A;c[l>>2]=y^w;c[m>>2]=d^j;c[n>>2]=$^aa;c[o>>2]=ba^ca;c[p>>2]=da^ea;c[q>>2]=fa^ga;c[r>>2]=ha^ia;ia=c[f>>2]|0;ha=c[g>>2]|0;ga=c[X>>2]|0;fa=c[V>>2]|0;ea=c[T>>2]|0;da=c[R>>2]|0;ca=c[P>>2]|0;ba=c[N>>2]|0;aa=c[L>>2]|0;$=c[J>>2]|0;j=(c[1776+(b*960|0)+884>>2]^ha)&ja;d=(c[1776+(b*960|0)+888>>2]^ga)&ja;w=(c[1776+(b*960|0)+892>>2]^fa)&ja;y=(c[1776+(b*960|0)+896>>2]^ea)&ja;A=(c[1776+(b*960|0)+900>>2]^da)&ja;D=(c[1776+(b*960|0)+904>>2]^ca)&ja;F=(c[1776+(b*960|0)+908>>2]^ba)&ja;H=(c[1776+(b*960|0)+912>>2]^aa)&ja;I=(c[1776+(b*960|0)+916>>2]^$)&ja;ia=(c[1776+(b*960|0)+880>>2]^ia)&ja^ia;c[f>>2]=ia;ha=j^ha;c[g>>2]=ha;ga=d^ga;c[X>>2]=ga;fa=w^fa;c[V>>2]=fa;ea=y^ea;c[T>>2]=ea;da=A^da;c[R>>2]=da;ca=D^ca;c[P>>2]=ca;ba=F^ba;c[N>>2]=ba;aa=H^aa;c[L>>2]=aa;$=I^$;c[J>>2]=$;I=c[h>>2]|0;H=c[G>>2]|0;F=c[E>>2]|0;D=c[B>>2]|0;A=c[z>>2]|0;y=c[x>>2]|0;w=c[v>>2]|0;d=c[i>>2]|0;j=c[t>>2]|0;_=c[u>>2]|0;K=(c[1776+(b*960|0)+924>>2]^H)&ja;M=(c[1776+(b*960|0)+928>>2]^F)&ja;O=(c[1776+(b*960|0)+932>>2]^D)&ja;Q=(c[1776+(b*960|0)+936>>2]^A)&ja;S=(c[1776+(b*960|0)+940>>2]^y)&ja;U=(c[1776+(b*960|0)+944>>2]^w)&ja;W=(c[1776+(b*960|0)+948>>2]^d)&ja;Y=(c[1776+(b*960|0)+952>>2]^j)&ja;Z=(c[1776+(b*960|0)+956>>2]^_)&ja;I=(c[1776+(b*960|0)+920>>2]^I)&ja^I;c[h>>2]=I;H=K^H;c[G>>2]=H;F=M^F;c[E>>2]=F;D=O^D;c[B>>2]=D;A=Q^A;c[z>>2]=A;y=S^y;c[x>>2]=y;w=U^w;c[v>>2]=w;d=W^d;c[i>>2]=d;j=Y^j;c[t>>2]=j;b=Z^_;c[u>>2]=b;_=c[a>>2]|0;Z=c[e>>2]|0;Y=c[k>>2]|0;W=c[l>>2]|0;U=c[m>>2]|0;S=c[n>>2]|0;Q=c[o>>2]|0;O=c[p>>2]|0;M=c[q>>2]|0;K=c[r>>2]|0;c[a>>2]=(_^ia)&s^_;c[e>>2]=(Z^ha)&s^Z;c[k>>2]=(Y^ga)&s^Y;c[l>>2]=(W^fa)&s^W;c[m>>2]=(U^ea)&s^U;c[n>>2]=(S^da)&s^S;c[o>>2]=(Q^ca)&s^Q;c[p>>2]=(O^ba)&s^O;c[q>>2]=(M^aa)&s^M;c[r>>2]=(K^$)&s^K;e=c[f>>2]|0;a=c[g>>2]|0;r=c[X>>2]|0;q=c[V>>2]|0;p=c[T>>2]|0;o=c[R>>2]|0;n=c[P>>2]|0;m=c[N>>2]|0;l=c[L>>2]|0;k=c[J>>2]|0;c[f>>2]=(e^_)&s^e;c[g>>2]=(a^Z)&s^a;c[X>>2]=(r^Y)&s^r;c[V>>2]=(q^W)&s^q;c[T>>2]=(p^U)&s^p;c[R>>2]=(o^S)&s^o;c[P>>2]=(n^Q)&s^n;c[N>>2]=(m^O)&s^m;c[L>>2]=(l^M)&s^l;c[J>>2]=(k^K)&s^k;g=c[h>>2]|0;k=c[G>>2]|0;l=c[E>>2]|0;m=c[B>>2]|0;n=c[z>>2]|0;o=c[x>>2]|0;p=c[v>>2]|0;q=c[i>>2]|0;r=c[t>>2]|0;a=c[u>>2]|0;c[h>>2]=(g^0-I)&s^g;c[G>>2]=(k^0-H)&s^k;c[E>>2]=(l^0-F)&s^l;c[B>>2]=(m^0-D)&s^m;c[z>>2]=(n^0-A)&s^n;c[x>>2]=(o^0-y)&s^o;c[v>>2]=(p^0-w)&s^p;c[i>>2]=(q^0-d)&s^q;c[t>>2]=(r^0-j)&s^r;c[u>>2]=(a^0-b)&s^a;return}function Xd(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+496|0;n=q;m=q+448|0;o=q+408|0;p=q+368|0;l=q+208|0;j=n+72|0;c[j>>2]=0;k=n;c[k>>2]=0;c[k+4>>2]=0;k=n+8|0;c[k>>2]=-205731576;c[k+4>>2]=1779033703;k=n+16|0;c[k>>2]=-2067093701;c[k+4>>2]=-1150833019;k=n+24|0;c[k>>2]=-23791573;c[k+4>>2]=1013904242;k=n+32|0;c[k>>2]=1595750129;c[k+4>>2]=-1521486534;k=n+40|0;c[k>>2]=-1377402159;c[k+4>>2]=1359893119;k=n+48|0;c[k>>2]=725511199;c[k+4>>2]=-1694144372;k=n+56|0;c[k>>2]=-79577749;c[k+4>>2]=528734635;k=n+64|0;c[k>>2]=327033209;c[k+4>>2]=1541459225;if(f|0){k=n+76|0;g=0;h=0;do{a[h+g+(n+76)>>0]=a[f+h>>0]|0;h=h+1|0;g=c[j>>2]|0}while(h>>>0<32);f=g+32|0;c[j>>2]=f;if((f|0)==128){Yd(n,k);f=n;f=lf(c[f>>2]|0,c[f+4>>2]|0,1024,0)|0;k=n;c[k>>2]=f;c[k+4>>2]=C;c[j>>2]=0}Zd(n,e)|0}a[e>>0]=(d[e>>0]|0)&248;k=e+31|0;a[k>>0]=(d[k>>0]|0)&63|64;Vd(l,e);Fd(m,l+80|0);Hd(o,l,m);Hd(p,l+40|0,m);Id(b,p);Id(n,o);p=b+31|0;a[p>>0]=(d[p>>0]|0)^(d[n>>0]|0)<<7;i=q;return}function Yd(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0;x=i;i=i+704|0;h=x+640|0;v=x;w=a+8|0;e=h;f=w;g=e+64|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));e=0;do{s=b+(e<<3)|0;n=pf(d[s>>0]|0|0,0,56)|0;t=C;m=pf(d[s+1>>0]|0|0,0,48)|0;t=C|t;o=pf(d[s+2>>0]|0|0,0,40)|0;t=t|C|(d[s+3>>0]|0);p=pf(d[s+4>>0]|0|0,0,24)|0;t=t|C;q=pf(d[s+5>>0]|0|0,0,16)|0;t=t|C;r=pf(d[s+6>>0]|0|0,0,8)|0;u=v+(e<<3)|0;c[u>>2]=m|n|o|p|q|r|(d[s+7>>0]|0);c[u+4>>2]=t|C;e=e+1|0}while((e|0)!=16);f=v;e=c[f>>2]|0;f=c[f+4>>2]|0;g=16;do{l=v+(g+-2<<3)|0;y=c[l>>2]|0;l=c[l+4>>2]|0;m=of(y|0,l|0,19)|0;o=C;n=pf(y|0,l|0,45)|0;o=o|C;j=of(y|0,l|0,61)|0;b=C;k=pf(y|0,l|0,3)|0;b=b|C;l=of(y|0,l|0,6)|0;o=b^C^o;b=v+(g+-7<<3)|0;y=c[b>>2]|0;b=c[b+4>>2]|0;s=v+(g+-15<<3)|0;A=e;e=c[s>>2]|0;z=f;f=c[s+4>>2]|0;s=of(e|0,f|0,1)|0;t=C;u=pf(e|0,f|0,63)|0;t=t|C;p=of(e|0,f|0,8)|0;B=C;q=pf(e|0,f|0,56)|0;B=B|C;r=of(e|0,f|0,7)|0;t=B^C^t;b=lf(A|0,z|0,y|0,b|0)|0;o=lf(b|0,C|0,(j|k)^l^(m|n)|0,o|0)|0;t=lf(o|0,C|0,(p|q)^r^(s|u)|0,t|0)|0;u=v+(g<<3)|0;c[u>>2]=t;c[u+4>>2]=C;g=g+1|0}while((g|0)!=80);e=h+56|0;o=h+32|0;g=h+48|0;k=h+40|0;s=h;p=h+8|0;l=h+16|0;b=h+24|0;q=c[o>>2]|0;o=c[o+4>>2]|0;h=c[g>>2]|0;m=c[k>>2]|0;g=c[g+4>>2]|0;k=c[k+4>>2]|0;f=c[e>>2]|0;e=c[e+4>>2]|0;t=c[s>>2]|0;s=c[s+4>>2]|0;r=c[p>>2]|0;p=c[p+4>>2]|0;n=c[l>>2]|0;l=c[l+4>>2]|0;j=c[b>>2]|0;b=c[b+4>>2]|0;u=0;do{H=of(q|0,o|0,14)|0;E=C;y=pf(q|0,o|0,50)|0;E=E|C;F=of(q|0,o|0,18)|0;I=C;B=pf(q|0,o|0,46)|0;I=E^(I|C);E=of(q|0,o|0,41)|0;z=C;G=pf(q|0,o|0,23)|0;z=I^(z|C);I=8+(u<<3)|0;A=v+(u<<3)|0;D=c[A>>2]|0;A=c[A+4>>2]|0;e=lf(c[I>>2]|0,c[I+4>>2]|0,f|0,e|0)|0;z=lf(e|0,C|0,(H|y)^(F|B)^(E|G)|0,z|0)|0;A=lf(z|0,C|0,D|0,A|0)|0;A=lf(A|0,C|0,(m^h)&q^h|0,(k^g)&o^g|0)|0;D=C;z=of(t|0,s|0,28)|0;G=C;E=pf(t|0,s|0,36)|0;G=G|C;B=of(t|0,s|0,34)|0;F=C;y=pf(t|0,s|0,30)|0;F=G^(F|C);G=of(t|0,s|0,39)|0;e=C;f=pf(t|0,s|0,25)|0;e=F^(e|C);F=lf(j|0,b|0,A|0,D|0)|0;b=C;D=lf((r|t)&n|r&t|0,(p|s)&l|p&s|0,A|0,D|0)|0;e=lf(D|0,C|0,(z|E)^(B|y)^(G|f)|0,e|0)|0;f=C;G=of(F|0,b|0,14)|0;y=C;B=pf(F|0,b|0,50)|0;y=y|C;E=of(F|0,b|0,18)|0;z=C;D=pf(F|0,b|0,46)|0;z=y^(z|C);y=of(F|0,b|0,41)|0;j=C;A=pf(F|0,b|0,23)|0;j=lf((G|B)^(E|D)^(y|A)|0,z^(j|C)|0,h|0,g|0)|0;h=u|1;z=8+(h<<3)|0;h=v+(h<<3)|0;g=c[h>>2]|0;h=c[h+4>>2]|0;z=lf(j|0,C|0,c[z>>2]|0,c[z+4>>2]|0)|0;h=lf(z|0,C|0,g|0,h|0)|0;h=lf(h|0,C|0,(q^m)&F^m|0,(o^k)&b^k|0)|0;g=C;z=of(e|0,f|0,28)|0;j=C;A=pf(e|0,f|0,36)|0;j=j|C;y=of(e|0,f|0,34)|0;D=C;E=pf(e|0,f|0,30)|0;D=j^(D|C);j=of(e|0,f|0,39)|0;B=C;G=pf(e|0,f|0,25)|0;B=lf((t|e)&r|t&e|0,(s|f)&p|s&f|0,(z|A)^(y|E)^(j|G)|0,D^(B|C)|0)|0;D=C;G=lf(h|0,g|0,n|0,l|0)|0;l=C;g=lf(B|0,D|0,h|0,g|0)|0;h=C;D=of(G|0,l|0,14)|0;B=C;j=pf(G|0,l|0,50)|0;B=B|C;n=of(G|0,l|0,18)|0;E=C;y=pf(G|0,l|0,46)|0;E=B^(E|C);B=of(G|0,l|0,41)|0;A=C;z=pf(G|0,l|0,23)|0;A=lf((D|j)^(n|y)^(B|z)|0,E^(A|C)|0,m|0,k|0)|0;m=u|2;E=8+(m<<3)|0;m=v+(m<<3)|0;k=c[m>>2]|0;m=c[m+4>>2]|0;E=lf(A|0,C|0,c[E>>2]|0,c[E+4>>2]|0)|0;m=lf(E|0,C|0,k|0,m|0)|0;m=lf(m|0,C|0,(F^q)&G^q|0,(b^o)&l^o|0)|0;k=C;E=of(g|0,h|0,28)|0;A=C;z=pf(g|0,h|0,36)|0;A=A|C;B=of(g|0,h|0,34)|0;y=C;n=pf(g|0,h|0,30)|0;y=A^(y|C);A=of(g|0,h|0,39)|0;j=C;D=pf(g|0,h|0,25)|0;j=lf((e|g)&t|e&g|0,(f|h)&s|f&h|0,(E|z)^(B|n)^(A|D)|0,y^(j|C)|0)|0;y=C;p=lf(m|0,k|0,r|0,p|0)|0;D=C;k=lf(j|0,y|0,m|0,k|0)|0;m=C;y=of(p|0,D|0,14)|0;j=C;A=pf(p|0,D|0,50)|0;j=j|C;n=of(p|0,D|0,18)|0;r=C;B=pf(p|0,D|0,46)|0;r=j^(r|C);j=of(p|0,D|0,41)|0;z=C;E=pf(p|0,D|0,23)|0;z=lf((y|A)^(n|B)^(j|E)|0,r^(z|C)|0,q|0,o|0)|0;q=u|3;r=8+(q<<3)|0;q=v+(q<<3)|0;o=c[q>>2]|0;q=c[q+4>>2]|0;r=lf(z|0,C|0,c[r>>2]|0,c[r+4>>2]|0)|0;q=lf(r|0,C|0,o|0,q|0)|0;q=lf(q|0,C|0,(G^F)&p^F|0,(l^b)&D^b|0)|0;o=C;r=of(k|0,m|0,28)|0;z=C;E=pf(k|0,m|0,36)|0;z=z|C;j=of(k|0,m|0,34)|0;B=C;n=pf(k|0,m|0,30)|0;B=z^(B|C);z=of(k|0,m|0,39)|0;A=C;y=pf(k|0,m|0,25)|0;A=lf((g|k)&e|g&k|0,(h|m)&f|h&m|0,(r|E)^(j|n)^(z|y)|0,B^(A|C)|0)|0;B=C;s=lf(q|0,o|0,t|0,s|0)|0;y=C;o=lf(A|0,B|0,q|0,o|0)|0;q=C;B=of(s|0,y|0,14)|0;A=C;z=pf(s|0,y|0,50)|0;A=A|C;n=of(s|0,y|0,18)|0;j=C;E=pf(s|0,y|0,46)|0;j=A^(j|C);A=of(s|0,y|0,41)|0;r=C;t=pf(s|0,y|0,23)|0;r=lf((B|z)^(n|E)^(A|t)|0,j^(r|C)|0,F|0,b|0)|0;b=u|4;F=8+(b<<3)|0;b=v+(b<<3)|0;j=c[b>>2]|0;b=c[b+4>>2]|0;F=lf(r|0,C|0,c[F>>2]|0,c[F+4>>2]|0)|0;b=lf(F|0,C|0,j|0,b|0)|0;b=lf(b|0,C|0,(p^G)&s^G|0,(D^l)&y^l|0)|0;j=C;F=of(o|0,q|0,28)|0;r=C;t=pf(o|0,q|0,36)|0;r=r|C;A=of(o|0,q|0,34)|0;E=C;n=pf(o|0,q|0,30)|0;E=r^(E|C);r=of(o|0,q|0,39)|0;z=C;B=pf(o|0,q|0,25)|0;z=lf((k|o)&g|k&o|0,(m|q)&h|m&q|0,(F|t)^(A|n)^(r|B)|0,E^(z|C)|0)|0;E=C;f=lf(b|0,j|0,e|0,f|0)|0;e=C;j=lf(z|0,E|0,b|0,j|0)|0;b=C;E=of(f|0,e|0,14)|0;z=C;B=pf(f|0,e|0,50)|0;z=z|C;r=of(f|0,e|0,18)|0;n=C;A=pf(f|0,e|0,46)|0;n=z^(n|C);z=of(f|0,e|0,41)|0;t=C;F=pf(f|0,e|0,23)|0;t=lf((E|B)^(r|A)^(z|F)|0,n^(t|C)|0,G|0,l|0)|0;l=u|5;G=8+(l<<3)|0;l=v+(l<<3)|0;n=c[l>>2]|0;l=c[l+4>>2]|0;G=lf(t|0,C|0,c[G>>2]|0,c[G+4>>2]|0)|0;l=lf(G|0,C|0,n|0,l|0)|0;l=lf(l|0,C|0,(s^p)&f^p|0,(y^D)&e^D|0)|0;n=C;G=of(j|0,b|0,28)|0;t=C;F=pf(j|0,b|0,36)|0;t=t|C;z=of(j|0,b|0,34)|0;A=C;r=pf(j|0,b|0,30)|0;A=t^(A|C);t=of(j|0,b|0,39)|0;B=C;E=pf(j|0,b|0,25)|0;B=lf((o|j)&k|o&j|0,(q|b)&m|q&b|0,(G|F)^(z|r)^(t|E)|0,A^(B|C)|0)|0;A=C;h=lf(l|0,n|0,g|0,h|0)|0;g=C;n=lf(B|0,A|0,l|0,n|0)|0;l=C;A=of(h|0,g|0,14)|0;B=C;E=pf(h|0,g|0,50)|0;B=B|C;t=of(h|0,g|0,18)|0;r=C;z=pf(h|0,g|0,46)|0;r=B^(r|C);B=of(h|0,g|0,41)|0;F=C;G=pf(h|0,g|0,23)|0;D=lf((A|E)^(t|z)^(B|G)|0,r^(F|C)|0,p|0,D|0)|0;p=u|6;F=8+(p<<3)|0;p=v+(p<<3)|0;r=c[p>>2]|0;p=c[p+4>>2]|0;F=lf(D|0,C|0,c[F>>2]|0,c[F+4>>2]|0)|0;p=lf(F|0,C|0,r|0,p|0)|0;p=lf(p|0,C|0,(f^s)&h^s|0,(e^y)&g^y|0)|0;r=C;F=of(n|0,l|0,28)|0;D=C;G=pf(n|0,l|0,36)|0;D=D|C;B=of(n|0,l|0,34)|0;z=C;t=pf(n|0,l|0,30)|0;z=D^(z|C);D=of(n|0,l|0,39)|0;E=C;A=pf(n|0,l|0,25)|0;E=lf((j|n)&o|j&n|0,(b|l)&q|b&l|0,(F|G)^(B|t)^(D|A)|0,z^(E|C)|0)|0;z=C;m=lf(p|0,r|0,k|0,m|0)|0;k=C;r=lf(E|0,z|0,p|0,r|0)|0;p=C;z=of(m|0,k|0,14)|0;E=C;A=pf(m|0,k|0,50)|0;E=E|C;D=of(m|0,k|0,18)|0;t=C;B=pf(m|0,k|0,46)|0;t=E^(t|C);E=of(m|0,k|0,41)|0;G=C;F=pf(m|0,k|0,23)|0;y=lf((z|A)^(D|B)^(E|F)|0,t^(G|C)|0,s|0,y|0)|0;s=u|7;G=8+(s<<3)|0;s=v+(s<<3)|0;t=c[s>>2]|0;s=c[s+4>>2]|0;G=lf(y|0,C|0,c[G>>2]|0,c[G+4>>2]|0)|0;s=lf(G|0,C|0,t|0,s|0)|0;s=lf(s|0,C|0,(h^f)&m^f|0,(g^e)&k^e|0)|0;t=C;G=of(r|0,p|0,28)|0;y=C;F=pf(r|0,p|0,36)|0;y=y|C;E=of(r|0,p|0,34)|0;B=C;D=pf(r|0,p|0,30)|0;B=y^(B|C);y=of(r|0,p|0,39)|0;A=C;z=pf(r|0,p|0,25)|0;A=lf((n|r)&j|n&r|0,(l|p)&b|l&p|0,(G|F)^(E|D)^(y|z)|0,B^(A|C)|0)|0;B=C;q=lf(s|0,t|0,o|0,q|0)|0;o=C;t=lf(A|0,B|0,s|0,t|0)|0;s=C;u=u+8|0}while((u|0)<80);H=w;H=lf(t|0,s|0,c[H>>2]|0,c[H+4>>2]|0)|0;I=w;c[I>>2]=H;c[I+4>>2]=C;I=a+16|0;H=I;H=lf(r|0,p|0,c[H>>2]|0,c[H+4>>2]|0)|0;c[I>>2]=H;c[I+4>>2]=C;I=a+24|0;H=I;H=lf(n|0,l|0,c[H>>2]|0,c[H+4>>2]|0)|0;c[I>>2]=H;c[I+4>>2]=C;I=a+32|0;H=I;H=lf(j|0,b|0,c[H>>2]|0,c[H+4>>2]|0)|0;c[I>>2]=H;c[I+4>>2]=C;I=a+40|0;H=I;H=lf(q|0,o|0,c[H>>2]|0,c[H+4>>2]|0)|0;c[I>>2]=H;c[I+4>>2]=C;I=a+48|0;H=I;H=lf(m|0,k|0,c[H>>2]|0,c[H+4>>2]|0)|0;c[I>>2]=H;c[I+4>>2]=C;I=a+56|0;H=I;H=lf(h|0,g|0,c[H>>2]|0,c[H+4>>2]|0)|0;c[I>>2]=H;c[I+4>>2]=C;I=a+64|0;H=I;H=lf(f|0,e|0,c[H>>2]|0,c[H+4>>2]|0)|0;c[I>>2]=H;c[I+4>>2]=C;i=x;return}function Zd(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;if((b|0)==0|(d|0)==0){d=1;return d|0}f=b+72|0;e=c[f>>2]|0;if(e>>>0>127){d=1;return d|0}h=pf(e|0,0,3)|0;g=b;h=lf(c[g>>2]|0,c[g+4>>2]|0,h|0,C|0)|0;g=b;c[g>>2]=h;c[g+4>>2]=C;c[f>>2]=e+1;g=b+76|0;a[b+76+e>>0]=-128;e=c[f>>2]|0;if(e>>>0>112){if(e>>>0<128)do{c[f>>2]=e+1;a[b+76+e>>0]=0;e=c[f>>2]|0}while(e>>>0<128);Yd(b,g);c[f>>2]=0;e=0}do{c[f>>2]=e+1;a[b+76+e>>0]=0;e=c[f>>2]|0}while(e>>>0<120);h=b;e=c[h>>2]|0;h=c[h+4>>2]|0;f=of(e|0,h|0,56)|0;a[b+196>>0]=f;f=of(e|0,h|0,48)|0;a[b+197>>0]=f;f=of(e|0,h|0,40)|0;a[b+198>>0]=f;a[b+199>>0]=h;f=of(e|0,h|0,24)|0;a[b+200>>0]=f;f=of(e|0,h|0,16)|0;a[b+201>>0]=f;h=of(e|0,h|0,8)|0;a[b+202>>0]=h;a[b+203>>0]=e;Yd(b,g);e=0;do{g=b+8+(e<<3)|0;f=g;f=of(c[f>>2]|0,c[f+4>>2]|0,56)|0;h=d+(e<<3)|0;a[h>>0]=f;f=g;f=of(c[f>>2]|0,c[f+4>>2]|0,48)|0;a[h+1>>0]=f;f=g;f=of(c[f>>2]|0,c[f+4>>2]|0,40)|0;a[h+2>>0]=f;a[h+3>>0]=c[g+4>>2];f=g;f=of(c[f>>2]|0,c[f+4>>2]|0,24)|0;a[h+4>>0]=f;f=g;f=of(c[f>>2]|0,c[f+4>>2]|0,16)|0;a[h+5>>0]=f;f=g;f=of(c[f>>2]|0,c[f+4>>2]|0,8)|0;a[h+6>>0]=f;a[h+7>>0]=c[g>>2];e=e+1|0}while((e|0)!=8);e=0;return e|0}function _d(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;if((b|0)==0|(d|0)==0){b=1;return b|0}i=b+72|0;f=c[i>>2]|0;if(f>>>0>128){b=1;return b|0}if(!e){b=0;return b|0}j=b+76|0;while(1){if(!(e>>>0>127&(f|0)==0)){h=128-f|0;h=e>>>0<h>>>0?e:h;if(h){g=0;do{a[f+g+(b+76)>>0]=a[d+g>>0]|0;g=g+1|0;f=c[i>>2]|0}while(g>>>0<h>>>0)}g=f+h|0;c[i>>2]=g;d=d+h|0;e=e-h|0;if((g|0)==128){Yd(b,j);g=b;g=lf(c[g>>2]|0,c[g+4>>2]|0,1024,0)|0;h=b;c[h>>2]=g;c[h+4>>2]=C;c[i>>2]=0}}else{Yd(b,d);g=b;g=lf(c[g>>2]|0,c[g+4>>2]|0,1024,0)|0;h=b;c[h>>2]=g;c[h+4>>2]=C;e=e+-128|0;d=d+128|0}if(!e){e=0;break}f=c[i>>2]|0}return e|0}function $d(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+736|0;u=x+704|0;t=x+568|0;v=x+528|0;w=x+488|0;r=x+640|0;q=x+608|0;s=x;o=x+328|0;p=x+208|0;if((d[b+63>>0]|0)>31){w=0;i=x;return w|0}if(Ud(o,g)|0){w=0;i=x;return w|0}n=s+72|0;c[n>>2]=0;l=s;c[l>>2]=0;c[l+4>>2]=0;l=s+8|0;c[l>>2]=-205731576;c[l+4>>2]=1779033703;l=s+16|0;c[l>>2]=-2067093701;c[l+4>>2]=-1150833019;l=s+24|0;c[l>>2]=-23791573;c[l+4>>2]=1013904242;l=s+32|0;c[l>>2]=1595750129;c[l+4>>2]=-1521486534;l=s+40|0;c[l>>2]=-1377402159;c[l+4>>2]=1359893119;l=s+48|0;c[l>>2]=725511199;c[l+4>>2]=-1694144372;l=s+56|0;c[l>>2]=-79577749;c[l+4>>2]=528734635;l=s+64|0;c[l>>2]=327033209;c[l+4>>2]=1541459225;l=s+76|0;h=0;k=0;do{a[k+h+(s+76)>>0]=a[b+k>>0]|0;k=k+1|0;h=c[n>>2]|0}while(k>>>0<32);m=h+32|0;c[n>>2]=m;if((m|0)==128){Yd(s,l);l=s;l=lf(c[l>>2]|0,c[l+4>>2]|0,1024,0)|0;m=s;c[m>>2]=l;c[m+4>>2]=C;c[n>>2]=0}a:do if(g|0?(j=c[n>>2]|0,j>>>0<=128):0){m=s+76|0;h=32;while(1){if(!((j|0)==0&h>>>0>127)){l=128-j|0;l=h>>>0<l>>>0?h:l;if(l){k=0;do{a[k+j+(s+76)>>0]=a[g+k>>0]|0;k=k+1|0;j=c[n>>2]|0}while(k>>>0<l>>>0)}k=j+l|0;c[n>>2]=k;g=g+l|0;h=h-l|0;if((k|0)==128){Yd(s,m);k=s;k=lf(c[k>>2]|0,c[k+4>>2]|0,1024,0)|0;l=s;c[l>>2]=k;c[l+4>>2]=C;c[n>>2]=0}}else{Yd(s,g);k=s;k=lf(c[k>>2]|0,c[k+4>>2]|0,1024,0)|0;l=s;c[l>>2]=k;c[l+4>>2]=C;h=h+-128|0;g=g+128|0}if(!h)break a;j=c[n>>2]|0}}while(0);_d(s,e,f)|0;Zd(s,r)|0;Ld(r);Od(p,r,o,b+32|0);Fd(t,p+80|0);Hd(v,p,t);Hd(w,p+40|0,t);Id(q,w);Id(u,v);w=q+31|0;a[w>>0]=(d[w>>0]|0)^(d[u>>0]|0)<<7;w=(a[b+1>>0]^a[q+1>>0]|a[b>>0]^a[q>>0]|a[b+2>>0]^a[q+2>>0]|a[b+3>>0]^a[q+3>>0]|a[b+4>>0]^a[q+4>>0]|a[b+5>>0]^a[q+5>>0]|a[b+6>>0]^a[q+6>>0]|a[b+7>>0]^a[q+7>>0]|a[b+8>>0]^a[q+8>>0]|a[b+9>>0]^a[q+9>>0]|a[b+10>>0]^a[q+10>>0]|a[b+11>>0]^a[q+11>>0]|a[b+12>>0]^a[q+12>>0]|a[b+13>>0]^a[q+13>>0]|a[b+14>>0]^a[q+14>>0]|a[b+15>>0]^a[q+15>>0]|a[b+16>>0]^a[q+16>>0]|a[b+17>>0]^a[q+17>>0]|a[b+18>>0]^a[q+18>>0]|a[b+19>>0]^a[q+19>>0]|a[b+20>>0]^a[q+20>>0]|a[b+21>>0]^a[q+21>>0]|a[b+22>>0]^a[q+22>>0]|a[b+23>>0]^a[q+23>>0]|a[b+24>>0]^a[q+24>>0]|a[b+25>>0]^a[q+25>>0]|a[b+26>>0]^a[q+26>>0]|a[b+27>>0]^a[q+27>>0]|a[b+28>>0]^a[q+28>>0]|a[b+29>>0]^a[q+29>>0]|a[b+30>>0]^a[q+30>>0]|a[b+31>>0]^a[w>>0])<<24>>24==0&1;i=x;return w|0}function ae(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0;F=i;i=i+656|0;x=F+616|0;w=F+448|0;y=F+408|0;z=F+368|0;B=F;D=F+552|0;E=F+488|0;v=F+208|0;A=B+72|0;c[A>>2]=0;u=B;c[u>>2]=0;c[u+4>>2]=0;u=B+8|0;m=u;c[m>>2]=-205731576;c[m+4>>2]=1779033703;m=B+16|0;n=m;c[n>>2]=-2067093701;c[n+4>>2]=-1150833019;n=B+24|0;o=n;c[o>>2]=-23791573;c[o+4>>2]=1013904242;o=B+32|0;p=o;c[p>>2]=1595750129;c[p+4>>2]=-1521486534;p=B+40|0;q=p;c[q>>2]=-1377402159;c[q+4>>2]=1359893119;q=B+48|0;r=q;c[r>>2]=725511199;c[r+4>>2]=-1694144372;r=B+56|0;s=r;c[s>>2]=-79577749;c[s+4>>2]=528734635;s=B+64|0;k=s;c[k>>2]=327033209;c[k+4>>2]=1541459225;k=h+32|0;t=B+76|0;j=0;l=0;do{a[l+j+(B+76)>>0]=a[k+l>>0]|0;l=l+1|0;j=c[A>>2]|0}while(l>>>0<32);l=j+32|0;c[A>>2]=l;if((l|0)==128){Yd(B,t);l=B;l=lf(c[l>>2]|0,c[l+4>>2]|0,1024,0)|0;t=B;c[t>>2]=l;c[t+4>>2]=C;c[A>>2]=0}_d(B,e,f)|0;Zd(B,E)|0;Ld(E);Vd(v,E);Fd(w,v+80|0);Hd(y,v,w);Hd(z,v+40|0,w);Id(b,z);Id(x,y);z=b+31|0;a[z>>0]=(d[z>>0]|0)^(d[x>>0]|0)<<7;c[A>>2]=0;z=B;c[z>>2]=0;c[z+4>>2]=0;z=u;c[z>>2]=-205731576;c[z+4>>2]=1779033703;z=m;c[z>>2]=-2067093701;c[z+4>>2]=-1150833019;z=n;c[z>>2]=-23791573;c[z+4>>2]=1013904242;z=o;c[z>>2]=1595750129;c[z+4>>2]=-1521486534;z=p;c[z>>2]=-1377402159;c[z+4>>2]=1359893119;z=q;c[z>>2]=725511199;c[z+4>>2]=-1694144372;z=r;c[z>>2]=-79577749;c[z+4>>2]=528734635;z=s;c[z>>2]=327033209;c[z+4>>2]=1541459225;if(b|0){l=B+76|0;j=0;k=0;do{a[k+j+(B+76)>>0]=a[b+k>>0]|0;k=k+1|0;j=c[A>>2]|0}while(k>>>0<32);z=j+32|0;c[A>>2]=z;if((z|0)==128){Yd(B,l);y=B;y=lf(c[y>>2]|0,c[y+4>>2]|0,1024,0)|0;z=B;c[z>>2]=y;c[z+4>>2]=C;c[A>>2]=0}}if(!g){_d(B,e,f)|0;Zd(B,D)|0;Ld(D);b=b+32|0;Md(b,D,h,E);i=F;return}k=c[A>>2]|0;if(k>>>0>128){_d(B,e,f)|0;Zd(B,D)|0;Ld(D);b=b+32|0;Md(b,D,h,E);i=F;return}n=B+76|0;j=32;while(1){if(!((k|0)==0&j>>>0>127)){m=128-k|0;m=j>>>0<m>>>0?j:m;if(m){l=0;do{a[l+k+(B+76)>>0]=a[g+l>>0]|0;l=l+1|0;k=c[A>>2]|0}while(l>>>0<m>>>0)}z=k+m|0;c[A>>2]=z;g=g+m|0;j=j-m|0;if((z|0)==128){Yd(B,n);y=B;y=lf(c[y>>2]|0,c[y+4>>2]|0,1024,0)|0;z=B;c[z>>2]=y;c[z+4>>2]=C;c[A>>2]=0}}else{Yd(B,g);y=B;y=lf(c[y>>2]|0,c[y+4>>2]|0,1024,0)|0;z=B;c[z>>2]=y;c[z+4>>2]=C;j=j+-128|0;g=g+128|0}if(!j)break;k=c[A>>2]|0}_d(B,e,f)|0;Zd(B,D)|0;Ld(D);b=b+32|0;Md(b,D,h,E);i=F;return}function be(b,d,e){b=b|0;d=d|0;e=e|0;c[b+128>>2]=e;e=d;d=b+128|0;do{a[b>>0]=a[e>>0]|0;b=b+1|0;e=e+1|0}while((b|0)<(d|0));return}function ce(a){a=a|0;return 132}function de(a,b){a=a|0;b=b|0;b=eb(b,a,128)|0;return ab(b,c[a+128>>2]|0)|0}function ee(a,b,c){a=a|0;b=b|0;c=c|0;return bb(fb(b,c,a,128)|0,c,a+128|0)|0}function fe(a){a=a|0;var b=0,d=0,e=0;e=a+128|0;b=(c[e>>2]|0)+1|0;c[e>>2]=b;if(b&16777215)if(!(b&65535))d=1;else d=(b&255|0)==0?2:3;else d=0;b=a+(d<<5)|0;e=3;while(1){Ob(b,32,33193+e|0,1,a+(e<<5)|0);if((e|0)>(d|0))e=e+-1|0;else break}return}function ge(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=a+128|0;d=c[h>>2]|0;i=0;do{e=(4-i<<3)+-8|0;g=-1<<e;e=(b>>>e)-(d>>>e)&255;if(!e){if(d>>>0>b>>>0){e=256;f=5}}else if(e>>>0>1)f=5;else f=6;if((f|0)==5){d=a+(i<<5)|0;f=33193+i|0;do{Ob(d,32,f,1,d);e=e+-1|0}while(e>>>0>1);f=6}if((f|0)==6){f=0;d=a+(i<<5)|0;e=3;while(1){Ob(d,32,33193+e|0,1,a+(e<<5)|0);if((e|0)>(i|0))e=e+-1|0;else break}d=g&b;c[h>>2]=d}i=i+1|0}while((i|0)!=4);return}function he(a){a=a|0;if(a>>>0>=15){a=33470;return a|0}a=c[32512+(a<<2)>>2]|0;return a|0}function ie(a){a=a|0;a=sa[c[680>>2]&3](32572,a)|0;return Ga((qa[c[169]&1](32572)|0)+a|0)|0}function je(a,b){a=a|0;b=b|0;b=sa[c[680>>2]&3](32572,b)|0;b=(qa[c[169]&1](32572)|0)+b|0;return a+(Ga(b)|0)+(0-b)|0}function ke(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=sa[c[680>>2]&3](32572,e)|0;g=(qa[c[169]&1](32572)|0)+i|0;f=Ga(g)|0;h=d+f+(0-g)|0;ra[c[684>>2]&3](32572,a,b,h,e,h,i,h,g)|0;Ha(h,g,d)|0;return f|0}function le(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=Ia(e)|0;if((g|0)==-1){if(!f){f=-1;return f|0}c[f>>2]=7;f=-1;return f|0}else{Ja(d,e,d)|0;e=g-(qa[c[169]&1](32572)|0)|0;g=ra[c[692>>2]&3](32572,a,b,d,g,d,e,d,e)|0;if(!((f|0)!=0&(g|0)==-1)){f=g;return f|0}c[f>>2]=8;f=-1;return f|0}return 0}function me(){return 304}function ne(a){a=a|0;Bd(a,304);return a|0}function oe(a){a=a|0;Bd(a,304);return 304}function pe(a){a=a|0;return he(c[a+300>>2]|0)|0}function qe(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+240|0;j=k;switch(Ia(f)|0){case -1:{c[b+300>>2]=7;j=-1;i=k;return j|0}case 229:{Ja(e,f,j)|0;do if((a[j>>0]|0)==2){f=j+5|0;e=((d[j+2>>0]|d[j+1>>0]<<8)<<8|d[j+3>>0])<<8|d[j+4>>0];be(b,f,e);be(b+132|0,f,e);e=b+264|0;f=e;g=j+133|0;h=f+32|0;do{a[f>>0]=a[g>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));if(!(Jb(e,j,165,j+165|0)|0)){c[b+300>>2]=14;e=-1;break}else{c[b+296>>2]=1;e=0;break}}else{c[b+300>>2]=11;e=-1}while(0);Bd(j,229);j=e;i=k;return j|0}default:{c[b+300>>2]=11;j=-1;i=k;return j|0}}return 0}function re(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+176|0;g=h;switch(Ia(f)|0){case -1:{c[b+300>>2]=7;g=-1;i=h;return g|0}case 165:{Ja(e,f,g)|0;if((a[g>>0]|0)==1){f=g+5|0;e=((d[g+2>>0]|d[g+1>>0]<<8)<<8|d[g+3>>0])<<8|d[g+4>>0];be(b,f,e);be(b+132|0,f,e);b=b+264|0;e=g+133|0;f=b+32|0;do{a[b>>0]=a[e>>0]|0;b=b+1|0;e=e+1|0}while((b|0)<(f|0));b=0}else{c[b+300>>2]=11;b=-1}Bd(g,165);g=b;i=h;return g|0}default:{c[b+300>>2]=11;g=-1;i=h;return g|0}}return 0}function se(a){a=a|0;var b=0,c=0;c=ce(a)|0;b=ce(a+132|0)|0;return ie(c+5+b+(Wa(a+264|0)|0)|0)|0}function te(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=ce(a)|0;g=a+132|0;i=ce(g)|0;h=a+264|0;i=j+5+i+(Wa(h)|0)|0;if((ie(i)|0)>>>0>f>>>0){c[a+300>>2]=2;j=-1;return j|0}else{j=Xa(de(g,de(a,ab(je(e,i)|0,2)|0)|0)|0,h)|0;cb(j,c[a+296>>2]|0)|0;j=ke(b,d,e,i)|0;return j|0}return 0}function ue(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;h=k;j=a+300|0;b=le(b,d,e,f,j)|0;if((b|0)==-1){f=-1;i=k;return f|0}g=e+b|0;b=bb(e,g,h)|0;if(((c[h>>2]|0)+-1|0)>>>0>1){c[j>>2]=9;f=-1;i=k;return f|0}b=Ya(ee(a+132|0,ee(a,b,g)|0,g)|0,g,a+264|0)|0;d=a+296|0;if((c[h>>2]|0)==1)c[d>>2]=1;else b=db(b,g,d)|0;if((g|0)==(b|0)){i=k;return f|0}c[j>>2]=10;f=-1;i=k;return f|0}function ve(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=i;i=i+32|0;f=g;e=Ja(d,e,d)|0;if((e|0)==-1){c[b+300>>2]=7;b=-1;i=g;return b|0}h=c[8124]|0;ob(d,e,qa[c[c[h>>2]>>2]&1](h)|0,64,f);do if((a[f>>0]|0)==3)if(!(c[f+12>>2]|0)){c[b+300>>2]=4;e=-1;break}else{e=c[8124]|0;e=sa[c[(c[e>>2]|0)+12>>2]&3](e,c[f+16>>2]|0)|0;break}else{c[b+300>>2]=3;e=-1}while(0);h=e;i=g;return h|0}function we(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+160|0;l=o+132|0;n=o;e=Ja(d,e,d)|0;if((e|0)==-1){c[b+300>>2]=7;b=-1;i=o;return b|0}k=c[8124]|0;ob(d,e,qa[c[c[k>>2]>>2]&1](k)|0,64,l);a:do if((a[l>>0]|0)==3){if(c[l+8>>2]|0?(m=l+12|0,c[m>>2]|0):0){if(h|0)c[h>>2]=c[l+4>>2];j=e+-64|0;if(!(Jb(b+264|0,d,j,d+j|0)|0)){c[b+300>>2]=14;e=-1;break}h=c[8124]|0;k=l+16|0;if((sa[c[(c[h>>2]|0)+12>>2]&3](h,c[k>>2]|0)|0)>>>0>g>>>0){c[b+300>>2]=2;e=-1;break}e=c[l+4>>2]|0;h=b+132|0;do if((e-(c[b+260>>2]|0)|0)<=-1)if((e-(c[b+128>>2]|0)|0)<0){c[b+300>>2]=12;e=-1;break a}else{qf(n|0,b|0,132)|0;ge(n,e);break}else{ge(h,e);qf(n|0,h|0,132)|0}while(0);e=c[8124]|0;e=ra[c[(c[e>>2]|0)+16>>2]&3](e,n,128,d,j,c[m>>2]|0,c[k>>2]|0,f,g)|0;Bd(n,132);if((e|0)==-1){c[b+300>>2]=5;e=-1;break}else{c[b+296>>2]=1;break}}c[b+300>>2]=4;e=-1}else{c[b+300>>2]=3;e=-1}while(0);b=e;i=o;return b|0}function xe(a){a=a|0;return Ga(32)|0}function ye(a,b,d){a=a|0;b=b|0;d=d|0;if((Ga(32)|0)>>>0>d>>>0){c[a+300>>2]=2;a=-1;return a|0}else{a=Ha(a+264|0,32,b)|0;return a|0}return 0}function ze(a){a=a|0;return c[a+128>>2]|0}function Ae(a){a=a|0;return c[a+296>>2]|0}function Be(a){a=a|0;return Ga(165)|0}function Ce(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+144|0;k=l;g=Ga(165)|0;if(g>>>0>e>>>0){c[b+300>>2]=2;b=-1;i=l;return b|0}e=b+132|0;do if((f-(c[b+260>>2]|0)|0)>-1){ge(e,f);qf(k|0,e|0,132)|0}else{if((f-(c[b+128>>2]|0)|0)>=0){qf(k|0,b|0,132)|0;ge(k,f);break}c[b+300>>2]=12;b=-1;i=l;return b|0}while(0);j=d+g+-165|0;a[j>>0]=1;h=j+1|0;a[h>>0]=f>>>24;h=h+1|0;a[h>>0]=f>>>16;h=h+1|0;a[h>>0]=f>>>8;a[h+1>>0]=f;h=d+(g+-161)|0;g=d+(g+-160)|0;e=k;f=g+128|0;do{a[g>>0]=a[e>>0]|0;g=g+1|0;e=e+1|0}while((g|0)<(f|0));g=h+129|0;e=b+264|0;f=g+32|0;do{a[g>>0]=a[e>>0]|0;g=g+1|0;e=e+1|0}while((g|0)<(f|0));b=Ha(j,165,d)|0;i=l;return b|0}function De(){return 232}function Ee(a){a=a|0;Bd(a,232);return a|0}function Fe(a){a=a|0;Bd(a,232);return 232}function Ge(a){a=a|0;return he(c[a+228>>2]|0)|0}function He(a){a=a|0;var b=0;b=(ce(a)|0)+4|0;return ie(b+(Za(a+132|0)|0)|0)|0}function Ie(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=(ce(a)|0)+4|0;g=a+132|0;h=h+(Za(g)|0)|0;if((ie(h)|0)>>>0>f>>>0){c[a+228>>2]=2;a=-1;return a|0}else{_a(de(a,ab(je(e,h)|0,1)|0)|0,g)|0;a=ke(b,d,e,h)|0;return a|0}return 0}function Je(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+16|0;h=j;g=a+228|0;b=le(b,d,e,f,g)|0;if((b|0)==-1){a=-1;i=j;return a|0}d=e+b|0;b=bb(e,d,h)|0;if((c[h>>2]|0)!=1){c[g>>2]=9;a=-1;i=j;return a|0}if((d|0)==($a(ee(a,b,d)|0,d,a+132|0)|0)){a=f;i=j;return a|0}c[g>>2]=10;a=-1;i=j;return a|0}function Ke(a){a=a|0;return 160}function Le(a,b,d){a=a|0;b=b|0;d=d|0;if(d>>>0<160){c[a+228>>2]=1;a=-1;return a|0}else{be(a,b,0);Hb(b+128|0,a+132|0);Bd(b,d);a=0;return a|0}return 0}function Me(a,b){a=a|0;b=b|0;var d=0;d=c[8124]|0;d=sa[c[(c[d>>2]|0)+4>>2]&3](d,b)|0;b=c[8124]|0;b=qa[c[c[b>>2]>>2]&1](b)|0;return Ga(mb(c[a+128>>2]|0,d,b,64)|0)|0}function Ne(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+16|0;k=l;g=c[8124]|0;g=sa[c[(c[g>>2]|0)+4>>2]&3](g,d)|0;j=c[8124]|0;j=qa[c[c[j>>2]>>2]&1](j)|0;h=a+128|0;j=mb(c[h>>2]|0,g,j,64)|0;if((Ga(j)|0)>>>0>f>>>0){c[a+228>>2]=2;a=-1;i=l;return a|0}g=e+(Ga(j)|0)+(0-j)|0;m=c[8124]|0;m=sa[c[(c[m>>2]|0)+4>>2]&3](m,d)|0;f=c[8124]|0;f=qa[c[c[f>>2]>>2]&1](f)|0;f=(nb(3,c[h>>2]|0,m,g,k)|0)+f|0;h=c[8124]|0;if((ra[c[(c[h>>2]|0)+8>>2]&3](h,a,128,b,d,c[k>>2]|0,m,g,f)|0)==-1){m=-1;i=l;return m|0}else{fe(a);Ib(a+132|0,g,f,g+f|0);m=Ha(g,j,e)|0;i=l;return m|0}return 0}function Oe(a){a=a|0;return Ga(32)|0}function Pe(a,b,d){a=a|0;b=b|0;d=d|0;if((Ga(32)|0)>>>0>d>>>0){c[a+228>>2]=2;a=-1;return a|0}else{a=Ha(a+132|0,32,b)|0;return a|0}return 0}function Qe(a){a=a|0;return c[a+128>>2]|0}function Re(a){a=a|0;return Ga(229)|0}function Se(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=Ga(229)|0;if(f>>>0>e>>>0){c[b+228>>2]=2;d=-1;return d|0}else{i=d+f+-229|0;a[i>>0]=2;g=c[b+128>>2]|0;j=i+1|0;a[j>>0]=g>>>24;j=j+1|0;a[j>>0]=g>>>16;j=j+1|0;a[j>>0]=g>>>8;a[j+1>>0]=g;j=d+(f+-225)|0;f=d+(f+-224)|0;g=b;h=f+128|0;do{a[f>>0]=a[g>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));e=b+132|0;f=j+129|0;g=e;h=f+32|0;do{a[f>>0]=a[g>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));b=j+161|0;Ib(e,i,b-i|0,b);d=Ha(i,229,d)|0;return d|0}return 0}function Te(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;D=i;i=i+256|0;m=D;e=0;f=0;while(1){c[m+(e<<2)>>2]=(d[b+(f|1)>>0]|0)<<16|(d[b+f>>0]|0)<<24|(d[b+(f|2)>>0]|0)<<8|(d[b+(f|3)>>0]|0);e=e+1|0;if((e|0)==16)break;else f=f+4|0}b=c[m>>2]|0;e=16;do{C=c[m+(e+-2<<2)>>2]|0;B=b;b=c[m+(e+-15<<2)>>2]|0;c[m+(e<<2)>>2]=B+(c[m+(e+-7<<2)>>2]|0)+((C>>>19|C<<13)^C>>>10^(C>>>17|C<<15))+((b>>>18|b<<14)^b>>>3^(b>>>7|b<<25));e=e+1|0}while((e|0)!=64);p=a+80|0;q=c[p>>2]|0;r=a+84|0;s=c[r>>2]|0;t=a+88|0;u=c[t>>2]|0;v=a+92|0;w=c[v>>2]|0;x=a+96|0;y=c[x>>2]|0;z=a+100|0;A=c[z>>2]|0;B=a+104|0;C=c[B>>2]|0;n=a+108|0;o=c[n>>2]|0;l=q;j=s;h=u;f=w;a=y;e=A;b=C;g=o;k=0;while(1){g=((a>>>6|a<<26)^(a>>>11|a<<21)^(a>>>25|a<<7))+g+(b&~a^e&a)+(c[32584+(k<<2)>>2]|0)+(c[m+(k<<2)>>2]|0)|0;f=g+f|0;g=((l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10))+(l&(j^h)^j&h)+g|0;k=k+1|0;if((k|0)==64){k=l;break}else{F=a;E=l;l=g;a=f;g=b;b=e;e=F;f=h;h=j;j=E}}c[p>>2]=q+g;c[r>>2]=s+k;c[t>>2]=u+j;c[v>>2]=w+h;c[x>>2]=y+f;c[z>>2]=A+a;c[B>>2]=C+e;c[n>>2]=o+b;i=D;return}function Ue(a){a=a|0;var b=0;c[a+64>>2]=0;b=a+72|0;c[b>>2]=0;c[b+4>>2]=0;c[a+80>>2]=1779033703;c[a+84>>2]=-1150833019;c[a+88>>2]=1013904242;c[a+92>>2]=-1521486534;c[a+96>>2]=1359893119;c[a+100>>2]=-1694144372;c[a+104>>2]=528734635;c[a+108>>2]=1541459225;return}function Ve(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;if(!e)return;g=b+64|0;h=b+72|0;f=c[g>>2]|0;i=0;do{a[b+f>>0]=a[d+i>>0]|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;if((f|0)==64){Te(b,b);j=h;j=lf(c[j>>2]|0,c[j+4>>2]|0,512,0)|0;f=h;c[f>>2]=j;c[f+4>>2]=C;c[g>>2]=0;f=0}i=i+1|0}while((i|0)!=(e|0));return}function We(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=b+64|0;e=c[g>>2]|0;f=e+1|0;a[b+e>>0]=-128;if(e>>>0<56){if(f>>>0<56)nf(b+f|0,0,55-e|0)|0}else{if(f>>>0<64)nf(b+f|0,0,63-e|0)|0;Te(b,b);e=b;f=e+56|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0))}i=b+72|0;h=i;h=lf(c[g>>2]<<3|0,0,c[h>>2]|0,c[h+4>>2]|0)|0;g=C;c[i>>2]=h;c[i+4>>2]=g;a[b+63>>0]=h;i=of(h|0,g|0,8)|0;a[b+62>>0]=i;i=of(h|0,g|0,16)|0;a[b+61>>0]=i;i=of(h|0,g|0,24)|0;a[b+60>>0]=i;a[b+59>>0]=g;i=of(h|0,g|0,40)|0;a[b+58>>0]=i;i=of(h|0,g|0,48)|0;a[b+57>>0]=i;g=of(h|0,g|0,56)|0;a[b+56>>0]=g;Te(b,b);g=b+80|0;h=b+84|0;i=b+88|0;j=b+92|0;k=b+96|0;l=b+100|0;m=b+104|0;e=b+108|0;f=0;do{b=24-(f<<3)|0;a[d+f>>0]=(c[g>>2]|0)>>>b;a[d+(f+4)>>0]=(c[h>>2]|0)>>>b;a[d+(f+8)>>0]=(c[i>>2]|0)>>>b;a[d+(f+12)>>0]=(c[j>>2]|0)>>>b;a[d+(f+16)>>0]=(c[k>>2]|0)>>>b;a[d+(f+20)>>0]=(c[l>>2]|0)>>>b;a[d+(f+24)>>0]=(c[m>>2]|0)>>>b;a[d+(f+28)>>0]=(c[e>>2]|0)>>>b;f=f+1|0}while((f|0)!=4);return}function Xe(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;L=i;i=i+16|0;K=L;B=K+4|0;I=K+8|0;O=a[b+3>>0]|0;J=K+12|0;q=a[b+4>>0]|0;v=K+1|0;o=a[b+5>>0]|0;w=K+5|0;N=a[b+6>>0]|0;x=K+9|0;M=a[b+7>>0]|0;y=K+13|0;u=a[b+8>>0]|0;z=K+2|0;h=a[b+9>>0]|0;A=K+6|0;r=a[b+10>>0]|0;C=K+10|0;t=a[b+11>>0]|0;D=K+14|0;k=a[b+12>>0]|0;E=K+3|0;s=a[b+13>>0]|0;F=K+7|0;p=a[b+14>>0]|0;G=K+11|0;n=a[b+15>>0]|0;H=K+15|0;l=c[f>>2]|0;m=(d[b>>0]|0)^l>>>24;j=(d[b+1>>0]|0)^l>>>16;a[I>>0]=(d[b+2>>0]|0)^l>>>8;a[J>>0]=O&255^l;l=c[f+4>>2]|0;q=q&255^l>>>24;o=o&255^l>>>16;a[x>>0]=N&255^l>>>8;a[y>>0]=M&255^l;l=c[f+8>>2]|0;u=u&255^l>>>24;h=h&255^l>>>16;r=r&255^l>>>8;a[D>>0]=t&255^l;l=c[f+12>>2]|0;k=k&255^l>>>24;b=s&255^l>>>16;p=p&255^l>>>8;l=n&255^l;a[K>>0]=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;a[v>>0]=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;a[z>>0]=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;a[E>>0]=a[(k&15)+(33491+(k>>>4<<4))>>0]|0;j=a[(j&15)+(33491+((j>>>4&15)<<4))>>0]|0;h=a[(h&15)+(33491+((h>>>4&15)<<4))>>0]|0;b=a[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;k=d[I>>0]|0;k=a[(k&15)+(33491+(k>>>4<<4))>>0]|0;u=d[x>>0]|0;u=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;r=a[(r&15)+(33491+((r>>>4&15)<<4))>>0]|0;p=a[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;q=d[J>>0]|0;q=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;m=d[y>>0]|0;m=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;n=d[D>>0]|0;n=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;l=a[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;a[B>>0]=a[(o&15)+(33491+((o>>>4&15)<<4))>>0]|0;a[w>>0]=h;a[A>>0]=b;a[F>>0]=j;a[I>>0]=r;a[C>>0]=k;a[x>>0]=p;a[G>>0]=u;a[J>>0]=l;a[H>>0]=n;a[D>>0]=m;a[y>>0]=q;Ye(K);q=c[f+16>>2]|0;m=(d[K>>0]|0)^q>>>24;a[B>>0]=(d[B>>0]|0)^q>>>16;a[I>>0]=(d[I>>0]|0)^q>>>8;a[J>>0]=(d[J>>0]|0)^q;q=c[f+20>>2]|0;n=(d[v>>0]|0)^q>>>24;l=(d[w>>0]|0)^q>>>16;a[x>>0]=(d[x>>0]|0)^q>>>8;a[y>>0]=(d[y>>0]|0)^q;q=c[f+24>>2]|0;u=(d[z>>0]|0)^q>>>24;p=(d[A>>0]|0)^q>>>16;k=(d[C>>0]|0)^q>>>8;a[D>>0]=(d[D>>0]|0)^q;q=c[f+28>>2]|0;r=(d[E>>0]|0)^q>>>24;j=(d[F>>0]|0)^q>>>16;b=(d[G>>0]|0)^q>>>8;q=(d[H>>0]|0)^q;a[K>>0]=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;a[v>>0]=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;a[z>>0]=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;a[E>>0]=a[(r&15)+(33491+(r>>>4<<4))>>0]|0;r=d[B>>0]|0;r=a[(r&15)+(33491+(r>>>4<<4))>>0]|0;p=a[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;j=a[(j&15)+(33491+((j>>>4&15)<<4))>>0]|0;u=d[I>>0]|0;u=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;n=d[x>>0]|0;n=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;k=a[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;b=a[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;m=d[J>>0]|0;m=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;h=d[y>>0]|0;h=a[(h&15)+(33491+(h>>>4<<4))>>0]|0;o=d[D>>0]|0;o=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;q=a[(q&15)+(33491+((q>>>4&15)<<4))>>0]|0;a[B>>0]=a[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;a[w>>0]=p;a[A>>0]=j;a[F>>0]=r;a[I>>0]=k;a[C>>0]=u;a[x>>0]=b;a[G>>0]=n;a[J>>0]=q;a[H>>0]=o;a[D>>0]=h;a[y>>0]=m;Ye(K);m=c[f+32>>2]|0;h=(d[K>>0]|0)^m>>>24;a[B>>0]=(d[B>>0]|0)^m>>>16;a[I>>0]=(d[I>>0]|0)^m>>>8;a[J>>0]=(d[J>>0]|0)^m;m=c[f+36>>2]|0;o=(d[v>>0]|0)^m>>>24;q=(d[w>>0]|0)^m>>>16;a[x>>0]=(d[x>>0]|0)^m>>>8;a[y>>0]=(d[y>>0]|0)^m;m=c[f+40>>2]|0;n=(d[z>>0]|0)^m>>>24;b=(d[A>>0]|0)^m>>>16;u=(d[C>>0]|0)^m>>>8;a[D>>0]=(d[D>>0]|0)^m;m=c[f+44>>2]|0;k=(d[E>>0]|0)^m>>>24;r=(d[F>>0]|0)^m>>>16;j=(d[G>>0]|0)^m>>>8;m=(d[H>>0]|0)^m;a[K>>0]=a[(h&15)+(33491+(h>>>4<<4))>>0]|0;a[v>>0]=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;a[z>>0]=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;a[E>>0]=a[(k&15)+(33491+(k>>>4<<4))>>0]|0;k=d[B>>0]|0;k=a[(k&15)+(33491+(k>>>4<<4))>>0]|0;b=a[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;r=a[(r&15)+(33491+((r>>>4&15)<<4))>>0]|0;n=d[I>>0]|0;n=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;o=d[x>>0]|0;o=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;u=a[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;j=a[(j&15)+(33491+((j>>>4&15)<<4))>>0]|0;h=d[J>>0]|0;h=a[(h&15)+(33491+(h>>>4<<4))>>0]|0;p=d[y>>0]|0;p=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;l=d[D>>0]|0;l=a[(l&15)+(33491+(l>>>4<<4))>>0]|0;m=a[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;a[B>>0]=a[(q&15)+(33491+((q>>>4&15)<<4))>>0]|0;a[w>>0]=b;a[A>>0]=r;a[F>>0]=k;a[I>>0]=u;a[C>>0]=n;a[x>>0]=j;a[G>>0]=o;a[J>>0]=m;a[H>>0]=l;a[D>>0]=p;a[y>>0]=h;Ye(K);h=c[f+48>>2]|0;p=(d[K>>0]|0)^h>>>24;a[B>>0]=(d[B>>0]|0)^h>>>16;a[I>>0]=(d[I>>0]|0)^h>>>8;a[J>>0]=(d[J>>0]|0)^h;h=c[f+52>>2]|0;l=(d[v>>0]|0)^h>>>24;m=(d[w>>0]|0)^h>>>16;a[x>>0]=(d[x>>0]|0)^h>>>8;a[y>>0]=(d[y>>0]|0)^h;h=c[f+56>>2]|0;o=(d[z>>0]|0)^h>>>24;j=(d[A>>0]|0)^h>>>16;n=(d[C>>0]|0)^h>>>8;a[D>>0]=(d[D>>0]|0)^h;h=c[f+60>>2]|0;u=(d[E>>0]|0)^h>>>24;k=(d[F>>0]|0)^h>>>16;r=(d[G>>0]|0)^h>>>8;h=(d[H>>0]|0)^h;a[K>>0]=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;a[v>>0]=a[(l&15)+(33491+(l>>>4<<4))>>0]|0;a[z>>0]=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;a[E>>0]=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;u=d[B>>0]|0;u=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;j=a[(j&15)+(33491+((j>>>4&15)<<4))>>0]|0;k=a[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;o=d[I>>0]|0;o=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;l=d[x>>0]|0;l=a[(l&15)+(33491+(l>>>4<<4))>>0]|0;n=a[(n&15)+(33491+((n>>>4&15)<<4))>>0]|0;r=a[(r&15)+(33491+((r>>>4&15)<<4))>>0]|0;p=d[J>>0]|0;p=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;b=d[y>>0]|0;b=a[(b&15)+(33491+(b>>>4<<4))>>0]|0;q=d[D>>0]|0;q=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;h=a[(h&15)+(33491+((h>>>4&15)<<4))>>0]|0;a[B>>0]=a[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;a[w>>0]=j;a[A>>0]=k;a[F>>0]=u;a[I>>0]=n;a[C>>0]=o;a[x>>0]=r;a[G>>0]=l;a[J>>0]=h;a[H>>0]=q;a[D>>0]=b;a[y>>0]=p;Ye(K);p=c[f+64>>2]|0;b=(d[K>>0]|0)^p>>>24;a[B>>0]=(d[B>>0]|0)^p>>>16;a[I>>0]=(d[I>>0]|0)^p>>>8;a[J>>0]=(d[J>>0]|0)^p;p=c[f+68>>2]|0;q=(d[v>>0]|0)^p>>>24;h=(d[w>>0]|0)^p>>>16;a[x>>0]=(d[x>>0]|0)^p>>>8;a[y>>0]=(d[y>>0]|0)^p;p=c[f+72>>2]|0;l=(d[z>>0]|0)^p>>>24;r=(d[A>>0]|0)^p>>>16;o=(d[C>>0]|0)^p>>>8;a[D>>0]=(d[D>>0]|0)^p;p=c[f+76>>2]|0;n=(d[E>>0]|0)^p>>>24;u=(d[F>>0]|0)^p>>>16;k=(d[G>>0]|0)^p>>>8;p=(d[H>>0]|0)^p;a[K>>0]=a[(b&15)+(33491+(b>>>4<<4))>>0]|0;a[v>>0]=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;a[z>>0]=a[(l&15)+(33491+(l>>>4<<4))>>0]|0;a[E>>0]=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;n=d[B>>0]|0;n=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;r=a[(r&15)+(33491+((r>>>4&15)<<4))>>0]|0;u=a[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;l=d[I>>0]|0;l=a[(l&15)+(33491+(l>>>4<<4))>>0]|0;q=d[x>>0]|0;q=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;o=a[(o&15)+(33491+((o>>>4&15)<<4))>>0]|0;k=a[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;b=d[J>>0]|0;b=a[(b&15)+(33491+(b>>>4<<4))>>0]|0;j=d[y>>0]|0;j=a[(j&15)+(33491+(j>>>4<<4))>>0]|0;m=d[D>>0]|0;m=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;p=a[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;a[B>>0]=a[(h&15)+(33491+((h>>>4&15)<<4))>>0]|0;a[w>>0]=r;a[A>>0]=u;a[F>>0]=n;a[I>>0]=o;a[C>>0]=l;a[x>>0]=k;a[G>>0]=q;a[J>>0]=p;a[H>>0]=m;a[D>>0]=j;a[y>>0]=b;Ye(K);b=c[f+80>>2]|0;j=(d[K>>0]|0)^b>>>24;a[B>>0]=(d[B>>0]|0)^b>>>16;a[I>>0]=(d[I>>0]|0)^b>>>8;a[J>>0]=(d[J>>0]|0)^b;b=c[f+84>>2]|0;m=(d[v>>0]|0)^b>>>24;p=(d[w>>0]|0)^b>>>16;a[x>>0]=(d[x>>0]|0)^b>>>8;a[y>>0]=(d[y>>0]|0)^b;b=c[f+88>>2]|0;q=(d[z>>0]|0)^b>>>24;k=(d[A>>0]|0)^b>>>16;l=(d[C>>0]|0)^b>>>8;a[D>>0]=(d[D>>0]|0)^b;b=c[f+92>>2]|0;o=(d[E>>0]|0)^b>>>24;n=(d[F>>0]|0)^b>>>16;u=(d[G>>0]|0)^b>>>8;b=(d[H>>0]|0)^b;a[K>>0]=a[(j&15)+(33491+(j>>>4<<4))>>0]|0;a[v>>0]=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;a[z>>0]=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;a[E>>0]=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;o=d[B>>0]|0;o=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;k=a[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;n=a[(n&15)+(33491+((n>>>4&15)<<4))>>0]|0;q=d[I>>0]|0;q=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;m=d[x>>0]|0;m=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;l=a[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;u=a[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;j=d[J>>0]|0;j=a[(j&15)+(33491+(j>>>4<<4))>>0]|0;r=d[y>>0]|0;r=a[(r&15)+(33491+(r>>>4<<4))>>0]|0;h=d[D>>0]|0;h=a[(h&15)+(33491+(h>>>4<<4))>>0]|0;b=a[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;a[B>>0]=a[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;a[w>>0]=k;a[A>>0]=n;a[F>>0]=o;a[I>>0]=l;a[C>>0]=q;a[x>>0]=u;a[G>>0]=m;a[J>>0]=b;a[H>>0]=h;a[D>>0]=r;a[y>>0]=j;Ye(K);j=c[f+96>>2]|0;r=(d[K>>0]|0)^j>>>24;a[B>>0]=(d[B>>0]|0)^j>>>16;a[I>>0]=(d[I>>0]|0)^j>>>8;a[J>>0]=(d[J>>0]|0)^j;j=c[f+100>>2]|0;h=(d[v>>0]|0)^j>>>24;b=(d[w>>0]|0)^j>>>16;a[x>>0]=(d[x>>0]|0)^j>>>8;a[y>>0]=(d[y>>0]|0)^j;j=c[f+104>>2]|0;m=(d[z>>0]|0)^j>>>24;u=(d[A>>0]|0)^j>>>16;q=(d[C>>0]|0)^j>>>8;a[D>>0]=(d[D>>0]|0)^j;j=c[f+108>>2]|0;l=(d[E>>0]|0)^j>>>24;o=(d[F>>0]|0)^j>>>16;n=(d[G>>0]|0)^j>>>8;j=(d[H>>0]|0)^j;a[K>>0]=a[(r&15)+(33491+(r>>>4<<4))>>0]|0;a[v>>0]=a[(h&15)+(33491+(h>>>4<<4))>>0]|0;a[z>>0]=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;a[E>>0]=a[(l&15)+(33491+(l>>>4<<4))>>0]|0;l=d[B>>0]|0;l=a[(l&15)+(33491+(l>>>4<<4))>>0]|0;u=a[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;o=a[(o&15)+(33491+((o>>>4&15)<<4))>>0]|0;m=d[I>>0]|0;m=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;h=d[x>>0]|0;h=a[(h&15)+(33491+(h>>>4<<4))>>0]|0;q=a[(q&15)+(33491+((q>>>4&15)<<4))>>0]|0;n=a[(n&15)+(33491+((n>>>4&15)<<4))>>0]|0;r=d[J>>0]|0;r=a[(r&15)+(33491+(r>>>4<<4))>>0]|0;k=d[y>>0]|0;k=a[(k&15)+(33491+(k>>>4<<4))>>0]|0;p=d[D>>0]|0;p=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;j=a[(j&15)+(33491+((j>>>4&15)<<4))>>0]|0;a[B>>0]=a[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;a[w>>0]=u;a[A>>0]=o;a[F>>0]=l;a[I>>0]=q;a[C>>0]=m;a[x>>0]=n;a[G>>0]=h;a[J>>0]=j;a[H>>0]=p;a[D>>0]=k;a[y>>0]=r;Ye(K);r=c[f+112>>2]|0;k=(d[K>>0]|0)^r>>>24;a[B>>0]=(d[B>>0]|0)^r>>>16;a[I>>0]=(d[I>>0]|0)^r>>>8;a[J>>0]=(d[J>>0]|0)^r;r=c[f+116>>2]|0;p=(d[v>>0]|0)^r>>>24;j=(d[w>>0]|0)^r>>>16;a[x>>0]=(d[x>>0]|0)^r>>>8;a[y>>0]=(d[y>>0]|0)^r;r=c[f+120>>2]|0;h=(d[z>>0]|0)^r>>>24;n=(d[A>>0]|0)^r>>>16;m=(d[C>>0]|0)^r>>>8;a[D>>0]=(d[D>>0]|0)^r;r=c[f+124>>2]|0;q=(d[E>>0]|0)^r>>>24;l=(d[F>>0]|0)^r>>>16;o=(d[G>>0]|0)^r>>>8;r=(d[H>>0]|0)^r;a[K>>0]=a[(k&15)+(33491+(k>>>4<<4))>>0]|0;a[v>>0]=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;a[z>>0]=a[(h&15)+(33491+(h>>>4<<4))>>0]|0;a[E>>0]=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;q=d[B>>0]|0;q=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;n=a[(n&15)+(33491+((n>>>4&15)<<4))>>0]|0;l=a[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;h=d[I>>0]|0;h=a[(h&15)+(33491+(h>>>4<<4))>>0]|0;p=d[x>>0]|0;p=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;m=a[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;o=a[(o&15)+(33491+((o>>>4&15)<<4))>>0]|0;k=d[J>>0]|0;k=a[(k&15)+(33491+(k>>>4<<4))>>0]|0;u=d[y>>0]|0;u=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;b=d[D>>0]|0;b=a[(b&15)+(33491+(b>>>4<<4))>>0]|0;r=a[(r&15)+(33491+((r>>>4&15)<<4))>>0]|0;a[B>>0]=a[(j&15)+(33491+((j>>>4&15)<<4))>>0]|0;a[w>>0]=n;a[A>>0]=l;a[F>>0]=q;a[I>>0]=m;a[C>>0]=h;a[x>>0]=o;a[G>>0]=p;a[J>>0]=r;a[H>>0]=b;a[D>>0]=u;a[y>>0]=k;Ye(K);k=c[f+128>>2]|0;u=(d[K>>0]|0)^k>>>24;a[B>>0]=(d[B>>0]|0)^k>>>16;a[I>>0]=(d[I>>0]|0)^k>>>8;a[J>>0]=(d[J>>0]|0)^k;k=c[f+132>>2]|0;b=(d[v>>0]|0)^k>>>24;r=(d[w>>0]|0)^k>>>16;a[x>>0]=(d[x>>0]|0)^k>>>8;a[y>>0]=(d[y>>0]|0)^k;k=c[f+136>>2]|0;p=(d[z>>0]|0)^k>>>24;o=(d[A>>0]|0)^k>>>16;h=(d[C>>0]|0)^k>>>8;a[D>>0]=(d[D>>0]|0)^k;k=c[f+140>>2]|0;m=(d[E>>0]|0)^k>>>24;q=(d[F>>0]|0)^k>>>16;l=(d[G>>0]|0)^k>>>8;k=(d[H>>0]|0)^k;a[K>>0]=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;a[v>>0]=a[(b&15)+(33491+(b>>>4<<4))>>0]|0;a[z>>0]=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;a[E>>0]=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;m=d[B>>0]|0;m=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;o=a[(o&15)+(33491+((o>>>4&15)<<4))>>0]|0;q=a[(q&15)+(33491+((q>>>4&15)<<4))>>0]|0;p=d[I>>0]|0;p=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;b=d[x>>0]|0;b=a[(b&15)+(33491+(b>>>4<<4))>>0]|0;h=a[(h&15)+(33491+((h>>>4&15)<<4))>>0]|0;l=a[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;u=d[J>>0]|0;u=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;n=d[y>>0]|0;n=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;j=d[D>>0]|0;j=a[(j&15)+(33491+(j>>>4<<4))>>0]|0;k=a[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;a[B>>0]=a[(r&15)+(33491+((r>>>4&15)<<4))>>0]|0;a[w>>0]=o;a[A>>0]=q;a[F>>0]=m;a[I>>0]=h;a[C>>0]=p;a[x>>0]=l;a[G>>0]=b;a[J>>0]=k;a[H>>0]=j;a[D>>0]=n;a[y>>0]=u;Ye(K);u=c[f+144>>2]|0;n=(d[K>>0]|0)^u>>>24;a[B>>0]=(d[B>>0]|0)^u>>>16;a[I>>0]=(d[I>>0]|0)^u>>>8;a[J>>0]=(d[J>>0]|0)^u;u=c[f+148>>2]|0;j=(d[v>>0]|0)^u>>>24;k=(d[w>>0]|0)^u>>>16;a[x>>0]=(d[x>>0]|0)^u>>>8;a[y>>0]=(d[y>>0]|0)^u;u=c[f+152>>2]|0;b=(d[z>>0]|0)^u>>>24;l=(d[A>>0]|0)^u>>>16;p=(d[C>>0]|0)^u>>>8;a[D>>0]=(d[D>>0]|0)^u;u=c[f+156>>2]|0;h=(d[E>>0]|0)^u>>>24;m=(d[F>>0]|0)^u>>>16;q=(d[G>>0]|0)^u>>>8;u=(d[H>>0]|0)^u;a[K>>0]=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;a[v>>0]=a[(j&15)+(33491+(j>>>4<<4))>>0]|0;b=a[(b&15)+(33491+(b>>>4<<4))>>0]|0;a[z>>0]=b;h=a[(h&15)+(33491+(h>>>4<<4))>>0]|0;a[E>>0]=h;j=d[B>>0]|0;j=a[(j&15)+(33491+(j>>>4<<4))>>0]|0;k=a[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;l=a[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;m=a[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;n=d[I>>0]|0;n=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;o=d[x>>0]|0;o=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;p=a[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;q=a[(q&15)+(33491+((q>>>4&15)<<4))>>0]|0;r=d[J>>0]|0;r=a[(r&15)+(33491+(r>>>4<<4))>>0]|0;s=d[y>>0]|0;s=a[(s&15)+(33491+(s>>>4<<4))>>0]|0;t=d[D>>0]|0;t=a[(t&15)+(33491+(t>>>4<<4))>>0]|0;u=a[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;a[B>>0]=k;a[w>>0]=l;a[A>>0]=m;a[F>>0]=j;a[I>>0]=p;a[C>>0]=n;a[x>>0]=q;a[G>>0]=o;a[J>>0]=u;a[H>>0]=t;a[D>>0]=s;a[y>>0]=r;if((g|0)==128){N=c[f+160>>2]|0;O=((d[K>>0]|0)^N>>>24)&255;a[K>>0]=O;k=(k&255^N>>>16)&255;a[B>>0]=k;B=(p&255^N>>>8)&255;a[I>>0]=B;p=(u&255^N)&255;a[J>>0]=p;N=c[f+164>>2]|0;u=((d[v>>0]|0)^N>>>24)&255;a[v>>0]=u;v=(l&255^N>>>16)&255;a[w>>0]=v;w=(q&255^N>>>8)&255;a[x>>0]=w;x=(r&255^N)&255;a[y>>0]=x;N=c[f+168>>2]|0;y=(b&255^N>>>24)&255;a[z>>0]=y;I=(m&255^N>>>16)&255;a[A>>0]=I;J=(n&255^N>>>8)&255;a[C>>0]=J;z=(s&255^N)&255;a[D>>0]=z;N=c[f+172>>2]|0;g=(h&255^N>>>24)&255;a[E>>0]=g;K=(j&255^N>>>16)&255;a[F>>0]=K;M=(o&255^N>>>8)&255;a[G>>0]=M;N=(t&255^N)&255;a[H>>0]=N;A=k;C=p;D=u;E=v;F=w;G=x;H=y;f=z;a[e>>0]=O;O=e+1|0;a[O>>0]=A;O=e+2|0;a[O>>0]=B;O=e+3|0;a[O>>0]=C;O=e+4|0;a[O>>0]=D;O=e+5|0;a[O>>0]=E;O=e+6|0;a[O>>0]=F;O=e+7|0;a[O>>0]=G;O=e+8|0;a[O>>0]=H;O=e+9|0;a[O>>0]=I;O=e+10|0;a[O>>0]=J;O=e+11|0;a[O>>0]=f;O=e+12|0;a[O>>0]=g;O=e+13|0;a[O>>0]=K;O=e+14|0;a[O>>0]=M;O=e+15|0;a[O>>0]=N;i=L;return}Ye(K);k=c[f+160>>2]|0;u=(d[K>>0]|0)^k>>>24;a[B>>0]=(d[B>>0]|0)^k>>>16;a[I>>0]=(d[I>>0]|0)^k>>>8;a[J>>0]=(d[J>>0]|0)^k;k=c[f+164>>2]|0;b=(d[v>>0]|0)^k>>>24;r=(d[w>>0]|0)^k>>>16;a[x>>0]=(d[x>>0]|0)^k>>>8;a[y>>0]=(d[y>>0]|0)^k;k=c[f+168>>2]|0;p=(d[z>>0]|0)^k>>>24;o=(d[A>>0]|0)^k>>>16;h=(d[C>>0]|0)^k>>>8;a[D>>0]=(d[D>>0]|0)^k;k=c[f+172>>2]|0;m=(d[E>>0]|0)^k>>>24;q=(d[F>>0]|0)^k>>>16;l=(d[G>>0]|0)^k>>>8;k=(d[H>>0]|0)^k;a[K>>0]=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;a[v>>0]=a[(b&15)+(33491+(b>>>4<<4))>>0]|0;a[z>>0]=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;a[E>>0]=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;m=d[B>>0]|0;m=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;o=a[(o&15)+(33491+((o>>>4&15)<<4))>>0]|0;q=a[(q&15)+(33491+((q>>>4&15)<<4))>>0]|0;p=d[I>>0]|0;p=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;b=d[x>>0]|0;b=a[(b&15)+(33491+(b>>>4<<4))>>0]|0;h=a[(h&15)+(33491+((h>>>4&15)<<4))>>0]|0;l=a[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;u=d[J>>0]|0;u=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;n=d[y>>0]|0;n=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;j=d[D>>0]|0;j=a[(j&15)+(33491+(j>>>4<<4))>>0]|0;k=a[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;a[B>>0]=a[(r&15)+(33491+((r>>>4&15)<<4))>>0]|0;a[w>>0]=o;a[A>>0]=q;a[F>>0]=m;a[I>>0]=h;a[C>>0]=p;a[x>>0]=l;a[G>>0]=b;a[J>>0]=k;a[H>>0]=j;a[D>>0]=n;a[y>>0]=u;Ye(K);u=c[f+176>>2]|0;n=(d[K>>0]|0)^u>>>24;a[B>>0]=(d[B>>0]|0)^u>>>16;a[I>>0]=(d[I>>0]|0)^u>>>8;a[J>>0]=(d[J>>0]|0)^u;u=c[f+180>>2]|0;j=(d[v>>0]|0)^u>>>24;k=(d[w>>0]|0)^u>>>16;a[x>>0]=(d[x>>0]|0)^u>>>8;a[y>>0]=(d[y>>0]|0)^u;u=c[f+184>>2]|0;b=(d[z>>0]|0)^u>>>24;l=(d[A>>0]|0)^u>>>16;p=(d[C>>0]|0)^u>>>8;a[D>>0]=(d[D>>0]|0)^u;u=c[f+188>>2]|0;h=(d[E>>0]|0)^u>>>24;m=(d[F>>0]|0)^u>>>16;q=(d[G>>0]|0)^u>>>8;u=(d[H>>0]|0)^u;a[K>>0]=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;a[v>>0]=a[(j&15)+(33491+(j>>>4<<4))>>0]|0;b=a[(b&15)+(33491+(b>>>4<<4))>>0]|0;a[z>>0]=b;h=a[(h&15)+(33491+(h>>>4<<4))>>0]|0;a[E>>0]=h;j=d[B>>0]|0;j=a[(j&15)+(33491+(j>>>4<<4))>>0]|0;k=a[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;l=a[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;m=a[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;n=d[I>>0]|0;n=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;o=d[x>>0]|0;o=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;p=a[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;q=a[(q&15)+(33491+((q>>>4&15)<<4))>>0]|0;r=d[J>>0]|0;r=a[(r&15)+(33491+(r>>>4<<4))>>0]|0;s=d[y>>0]|0;s=a[(s&15)+(33491+(s>>>4<<4))>>0]|0;t=d[D>>0]|0;t=a[(t&15)+(33491+(t>>>4<<4))>>0]|0;u=a[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;a[B>>0]=k;a[w>>0]=l;a[A>>0]=m;a[F>>0]=j;a[I>>0]=p;a[C>>0]=n;a[x>>0]=q;a[G>>0]=o;a[J>>0]=u;a[H>>0]=t;a[D>>0]=s;a[y>>0]=r;if((g|0)==192){N=c[f+192>>2]|0;O=((d[K>>0]|0)^N>>>24)&255;a[K>>0]=O;k=(k&255^N>>>16)&255;a[B>>0]=k;B=(p&255^N>>>8)&255;a[I>>0]=B;p=(u&255^N)&255;a[J>>0]=p;N=c[f+196>>2]|0;u=((d[v>>0]|0)^N>>>24)&255;a[v>>0]=u;v=(l&255^N>>>16)&255;a[w>>0]=v;w=(q&255^N>>>8)&255;a[x>>0]=w;x=(r&255^N)&255;a[y>>0]=x;N=c[f+200>>2]|0;y=(b&255^N>>>24)&255;a[z>>0]=y;I=(m&255^N>>>16)&255;a[A>>0]=I;J=(n&255^N>>>8)&255;a[C>>0]=J;z=(s&255^N)&255;a[D>>0]=z;N=c[f+204>>2]|0;g=(h&255^N>>>24)&255;a[E>>0]=g;K=(j&255^N>>>16)&255;a[F>>0]=K;M=(o&255^N>>>8)&255;a[G>>0]=M;N=(t&255^N)&255;a[H>>0]=N;A=k;C=p;D=u;E=v;F=w;G=x;H=y;f=z;a[e>>0]=O;O=e+1|0;a[O>>0]=A;O=e+2|0;a[O>>0]=B;O=e+3|0;a[O>>0]=C;O=e+4|0;a[O>>0]=D;O=e+5|0;a[O>>0]=E;O=e+6|0;a[O>>0]=F;O=e+7|0;a[O>>0]=G;O=e+8|0;a[O>>0]=H;O=e+9|0;a[O>>0]=I;O=e+10|0;a[O>>0]=J;O=e+11|0;a[O>>0]=f;O=e+12|0;a[O>>0]=g;O=e+13|0;a[O>>0]=K;O=e+14|0;a[O>>0]=M;O=e+15|0;a[O>>0]=N;i=L;return}else{Ye(K);s=c[f+192>>2]|0;N=(d[K>>0]|0)^s>>>24;a[B>>0]=(d[B>>0]|0)^s>>>16;a[I>>0]=(d[I>>0]|0)^s>>>8;a[J>>0]=(d[J>>0]|0)^s;s=c[f+196>>2]|0;p=(d[v>>0]|0)^s>>>24;r=(d[w>>0]|0)^s>>>16;a[x>>0]=(d[x>>0]|0)^s>>>8;a[y>>0]=(d[y>>0]|0)^s;s=c[f+200>>2]|0;u=(d[z>>0]|0)^s>>>24;g=(d[A>>0]|0)^s>>>16;q=(d[C>>0]|0)^s>>>8;a[D>>0]=(d[D>>0]|0)^s;s=c[f+204>>2]|0;o=(d[E>>0]|0)^s>>>24;m=(d[F>>0]|0)^s>>>16;l=(d[G>>0]|0)^s>>>8;s=(d[H>>0]|0)^s;a[K>>0]=a[(N&15)+(33491+(N>>>4<<4))>>0]|0;a[v>>0]=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;a[z>>0]=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;a[E>>0]=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;o=d[B>>0]|0;o=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;g=a[(g&15)+(33491+((g>>>4&15)<<4))>>0]|0;m=a[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;u=d[I>>0]|0;u=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;p=d[x>>0]|0;p=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;q=a[(q&15)+(33491+((q>>>4&15)<<4))>>0]|0;l=a[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;N=d[J>>0]|0;N=a[(N&15)+(33491+(N>>>4<<4))>>0]|0;n=d[y>>0]|0;n=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;M=d[D>>0]|0;M=a[(M&15)+(33491+(M>>>4<<4))>>0]|0;s=a[(s&15)+(33491+((s>>>4&15)<<4))>>0]|0;a[B>>0]=a[(r&15)+(33491+((r>>>4&15)<<4))>>0]|0;a[w>>0]=g;a[A>>0]=m;a[F>>0]=o;a[I>>0]=q;a[C>>0]=u;a[x>>0]=l;a[G>>0]=p;a[J>>0]=s;a[H>>0]=M;a[D>>0]=n;a[y>>0]=N;Ye(K);N=c[f+208>>2]|0;n=(d[K>>0]|0)^N>>>24;a[B>>0]=(d[B>>0]|0)^N>>>16;a[I>>0]=(d[I>>0]|0)^N>>>8;a[J>>0]=(d[J>>0]|0)^N;N=c[f+212>>2]|0;M=(d[v>>0]|0)^N>>>24;s=(d[w>>0]|0)^N>>>16;a[x>>0]=(d[x>>0]|0)^N>>>8;a[y>>0]=(d[y>>0]|0)^N;N=c[f+216>>2]|0;p=(d[z>>0]|0)^N>>>24;l=(d[A>>0]|0)^N>>>16;u=(d[C>>0]|0)^N>>>8;a[D>>0]=(d[D>>0]|0)^N;N=c[f+220>>2]|0;q=(d[E>>0]|0)^N>>>24;o=(d[F>>0]|0)^N>>>16;m=(d[G>>0]|0)^N>>>8;N=(d[H>>0]|0)^N;a[K>>0]=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;a[v>>0]=a[(M&15)+(33491+(M>>>4<<4))>>0]|0;a[z>>0]=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;a[E>>0]=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;q=d[B>>0]|0;q=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;s=a[(s&15)+(33491+((s>>>4&15)<<4))>>0]|0;l=a[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;o=a[(o&15)+(33491+((o>>>4&15)<<4))>>0]|0;p=d[I>>0]|0;p=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;M=d[x>>0]|0;M=a[(M&15)+(33491+(M>>>4<<4))>>0]|0;u=a[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;m=a[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;n=d[J>>0]|0;n=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;g=d[y>>0]|0;g=a[(g&15)+(33491+(g>>>4<<4))>>0]|0;r=d[D>>0]|0;r=a[(r&15)+(33491+(r>>>4<<4))>>0]|0;N=a[(N&15)+(33491+((N>>>4&15)<<4))>>0]|0;t=c[f+224>>2]|0;O=((d[K>>0]|0)^t>>>24)&255;a[K>>0]=O;s=(s&255^t>>>16)&255;a[B>>0]=s;B=(u&255^t>>>8)&255;a[I>>0]=B;t=(N&255^t)&255;a[J>>0]=t;N=c[f+228>>2]|0;u=((d[v>>0]|0)^N>>>24)&255;a[v>>0]=u;v=(l&255^N>>>16)&255;a[w>>0]=v;w=(m&255^N>>>8)&255;a[x>>0]=w;x=(n&255^N)&255;a[y>>0]=x;N=c[f+232>>2]|0;y=((d[z>>0]|0)^N>>>24)&255;a[z>>0]=y;I=(o&255^N>>>16)&255;a[A>>0]=I;J=(p&255^N>>>8)&255;a[C>>0]=J;z=(g&255^N)&255;a[D>>0]=z;N=c[f+236>>2]|0;g=((d[E>>0]|0)^N>>>24)&255;a[E>>0]=g;K=(q&255^N>>>16)&255;a[F>>0]=K;M=(M&255^N>>>8)&255;a[G>>0]=M;N=(r&255^N)&255;a[H>>0]=N;A=s;C=t;D=u;E=v;F=w;G=x;H=y;f=z;a[e>>0]=O;O=e+1|0;a[O>>0]=A;O=e+2|0;a[O>>0]=B;O=e+3|0;a[O>>0]=C;O=e+4|0;a[O>>0]=D;O=e+5|0;a[O>>0]=E;O=e+6|0;a[O>>0]=F;O=e+7|0;a[O>>0]=G;O=e+8|0;a[O>>0]=H;O=e+9|0;a[O>>0]=I;O=e+10|0;a[O>>0]=J;O=e+11|0;a[O>>0]=f;O=e+12|0;a[O>>0]=g;O=e+13|0;a[O>>0]=K;O=e+14|0;a[O>>0]=M;O=e+15|0;a[O>>0]=N;i=L;return}}function Ye(b){b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=a[b>>0]|0;l=b+4|0;e=a[l>>0]|0;f=b+8|0;g=a[f>>0]|0;h=b+12|0;d=a[h>>0]|0;j=n&255;i=e&255;c=g&255;m=d&255;a[b>>0]=d^g^a[33747+(j*6|0)>>0]^a[33747+(i*6|0)+1>>0];a[l>>0]=a[33747+(i*6|0)>>0]^n^d^a[33747+(c*6|0)+1>>0];a[f>>0]=a[33747+(m*6|0)+1>>0]^(a[33747+(c*6|0)>>0]^(e^n));a[h>>0]=g^e^a[33747+(j*6|0)+1>>0]^a[33747+(m*6|0)>>0];h=b+1|0;m=a[h>>0]|0;j=b+5|0;e=a[j>>0]|0;g=b+9|0;f=a[g>>0]|0;n=b+13|0;c=a[n>>0]|0;l=m&255;d=e&255;i=f&255;k=c&255;a[h>>0]=c^f^a[33747+(l*6|0)>>0]^a[33747+(d*6|0)+1>>0];a[j>>0]=a[33747+(d*6|0)>>0]^m^c^a[33747+(i*6|0)+1>>0];a[g>>0]=a[33747+(k*6|0)+1>>0]^(a[33747+(i*6|0)>>0]^(e^m));a[n>>0]=f^e^a[33747+(l*6|0)+1>>0]^a[33747+(k*6|0)>>0];n=b+2|0;k=a[n>>0]|0;l=b+6|0;e=a[l>>0]|0;f=b+10|0;g=a[f>>0]|0;m=b+14|0;i=a[m>>0]|0;j=k&255;c=e&255;d=g&255;h=i&255;a[n>>0]=i^g^a[33747+(j*6|0)>>0]^a[33747+(c*6|0)+1>>0];a[l>>0]=a[33747+(c*6|0)>>0]^k^i^a[33747+(d*6|0)+1>>0];a[f>>0]=a[33747+(h*6|0)+1>>0]^(a[33747+(d*6|0)>>0]^(e^k));a[m>>0]=g^e^a[33747+(j*6|0)+1>>0]^a[33747+(h*6|0)>>0];m=b+3|0;h=a[m>>0]|0;j=b+7|0;e=a[j>>0]|0;g=b+11|0;f=a[g>>0]|0;b=b+15|0;k=a[b>>0]|0;d=h&255;l=e&255;i=f&255;c=k&255;a[m>>0]=k^f^a[33747+(d*6|0)>>0]^a[33747+(l*6|0)+1>>0];a[j>>0]=a[33747+(l*6|0)>>0]^h^k^a[33747+(i*6|0)+1>>0];a[g>>0]=a[33747+(c*6|0)+1>>0]^(a[33747+(i*6|0)>>0]^(e^h));a[b>>0]=f^e^a[33747+(d*6|0)+1>>0]^a[33747+(c*6|0)>>0];return}function Ze(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;switch(e|0){case 128:{g=4;h=44;break}case 192:{g=6;h=52;break}case 256:{g=8;h=60;break}default:return}e=0;do{f=e<<2;c[b+(e<<2)>>2]=(d[a+(f|1)>>0]|0)<<16|(d[a+f>>0]|0)<<24|(d[a+(f|2)>>0]|0)<<8|(d[a+(f|3)>>0]|0);e=e+1|0}while((e|0)<(g|0));if(g>>>0>6)f=g;else{f=g;do{a=f+-1|0;e=c[b+(a<<2)>>2]|0;if(!((f|0)%(g|0)|0))e=((d[(e&15)+(33491+((e>>>4&15)<<4))>>0]|0)<<8|(d[(e>>>24&15)+(33491+(e>>>28<<4))>>0]|0)|(d[(e>>>8&15)+(33491+((e>>>12&15)<<4))>>0]|0)<<16|(d[(e>>>16&15)+(33491+((e>>>20&15)<<4))>>0]|0)<<24)^c[32840+(((a|0)/(g|0)|0)<<2)>>2];c[b+(f<<2)>>2]=c[b+(f-g<<2)>>2]^e;f=f+1|0}while((f|0)<(h|0));return}do{a=f+-1|0;e=c[b+(a<<2)>>2]|0;switch((f|0)%(g|0)|0|0){case 0:{e=((d[(e&15)+(33491+((e>>>4&15)<<4))>>0]|0)<<8|(d[(e>>>24&15)+(33491+(e>>>28<<4))>>0]|0)|(d[(e>>>8&15)+(33491+((e>>>12&15)<<4))>>0]|0)<<16|(d[(e>>>16&15)+(33491+((e>>>20&15)<<4))>>0]|0)<<24)^c[32840+(((a|0)/(g|0)|0)<<2)>>2];break}case 4:{e=(d[(e>>>8&15)+(33491+((e>>>12&15)<<4))>>0]|0)<<8|(d[(e&15)+(33491+((e>>>4&15)<<4))>>0]|0)|(d[(e>>>16&15)+(33491+((e>>>20&15)<<4))>>0]|0)<<16|(d[(e>>>24&15)+(33491+(e>>>28<<4))>>0]|0)<<24;break}default:{}}c[b+(f<<2)>>2]=c[b+(f-g<<2)>>2]^e;f=f+1|0}while((f|0)<(h|0));return}function _e(b){b=b|0;var c=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=b+4|0;f=b+8|0;e=b+12|0;c=d[b>>0]|0;h=d[j>>0]|0;k=d[f>>0]|0;g=d[e>>0]|0;a[b>>0]=a[33747+(g*6|0)+2>>0]^(a[33747+(k*6|0)+4>>0]^(a[33747+(h*6|0)+3>>0]^a[33747+(c*6|0)+5>>0]));a[j>>0]=a[33747+(g*6|0)+4>>0]^(a[33747+(k*6|0)+3>>0]^(a[33747+(h*6|0)+5>>0]^a[33747+(c*6|0)+2>>0]));a[f>>0]=a[33747+(g*6|0)+3>>0]^(a[33747+(k*6|0)+5>>0]^(a[33747+(h*6|0)+2>>0]^a[33747+(c*6|0)+4>>0]));a[e>>0]=a[33747+(g*6|0)+5>>0]^(a[33747+(k*6|0)+2>>0]^(a[33747+(h*6|0)+4>>0]^a[33747+(c*6|0)+3>>0]));e=b+1|0;c=b+5|0;h=b+9|0;k=b+13|0;g=d[e>>0]|0;f=d[c>>0]|0;j=d[h>>0]|0;i=d[k>>0]|0;a[e>>0]=a[33747+(i*6|0)+2>>0]^(a[33747+(j*6|0)+4>>0]^(a[33747+(f*6|0)+3>>0]^a[33747+(g*6|0)+5>>0]));a[c>>0]=a[33747+(i*6|0)+4>>0]^(a[33747+(j*6|0)+3>>0]^(a[33747+(f*6|0)+5>>0]^a[33747+(g*6|0)+2>>0]));a[h>>0]=a[33747+(i*6|0)+3>>0]^(a[33747+(j*6|0)+5>>0]^(a[33747+(f*6|0)+2>>0]^a[33747+(g*6|0)+4>>0]));a[k>>0]=a[33747+(i*6|0)+5>>0]^(a[33747+(j*6|0)+2>>0]^(a[33747+(f*6|0)+4>>0]^a[33747+(g*6|0)+3>>0]));k=b+2|0;g=b+6|0;f=b+10|0;j=b+14|0;i=d[k>>0]|0;h=d[g>>0]|0;c=d[f>>0]|0;e=d[j>>0]|0;a[k>>0]=a[33747+(e*6|0)+2>>0]^(a[33747+(c*6|0)+4>>0]^(a[33747+(h*6|0)+3>>0]^a[33747+(i*6|0)+5>>0]));a[g>>0]=a[33747+(e*6|0)+4>>0]^(a[33747+(c*6|0)+3>>0]^(a[33747+(h*6|0)+5>>0]^a[33747+(i*6|0)+2>>0]));a[f>>0]=a[33747+(e*6|0)+3>>0]^(a[33747+(c*6|0)+5>>0]^(a[33747+(h*6|0)+2>>0]^a[33747+(i*6|0)+4>>0]));a[j>>0]=a[33747+(e*6|0)+5>>0]^(a[33747+(c*6|0)+2>>0]^(a[33747+(h*6|0)+4>>0]^a[33747+(i*6|0)+3>>0]));j=b+3|0;i=b+7|0;h=b+11|0;b=b+15|0;c=d[j>>0]|0;e=d[i>>0]|0;f=d[h>>0]|0;g=d[b>>0]|0;a[j>>0]=a[33747+(g*6|0)+2>>0]^(a[33747+(f*6|0)+4>>0]^(a[33747+(e*6|0)+3>>0]^a[33747+(c*6|0)+5>>0]));a[i>>0]=a[33747+(g*6|0)+4>>0]^(a[33747+(f*6|0)+3>>0]^(a[33747+(e*6|0)+5>>0]^a[33747+(c*6|0)+2>>0]));a[h>>0]=a[33747+(g*6|0)+3>>0]^(a[33747+(f*6|0)+5>>0]^(a[33747+(e*6|0)+2>>0]^a[33747+(c*6|0)+4>>0]));a[b>>0]=a[33747+(g*6|0)+5>>0]^(a[33747+(f*6|0)+2>>0]^(a[33747+(e*6|0)+4>>0]^a[33747+(c*6|0)+3>>0]));return}function $e(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;N=i;i=i+16|0;M=N;h=a[b>>0]|0;a[M>>0]=h;m=a[b+1>>0]|0;E=M+4|0;a[E>>0]=m;v=a[b+2>>0]|0;K=M+8|0;a[K>>0]=v;w=a[b+3>>0]|0;L=M+12|0;a[L>>0]=w;j=a[b+4>>0]|0;y=M+1|0;a[y>>0]=j;k=a[b+5>>0]|0;z=M+5|0;a[z>>0]=k;l=a[b+6>>0]|0;A=M+9|0;a[A>>0]=l;n=a[b+7>>0]|0;B=M+13|0;a[B>>0]=n;o=a[b+8>>0]|0;C=M+2|0;a[C>>0]=o;p=a[b+9>>0]|0;D=M+6|0;a[D>>0]=p;q=a[b+10>>0]|0;F=M+10|0;a[F>>0]=q;r=a[b+11>>0]|0;G=M+14|0;a[G>>0]=r;s=a[b+12>>0]|0;H=M+3|0;a[H>>0]=s;t=a[b+13>>0]|0;I=M+7|0;a[I>>0]=t;u=a[b+14>>0]|0;J=M+11|0;a[J>>0]=u;b=a[b+15>>0]|0;x=M+15|0;a[x>>0]=b;if((g|0)>128){if((g|0)>192){R=c[f+224>>2]|0;S=h&255^R>>>24;P=m&255^R>>>16;g=v&255^R>>>8;v=w&255^R;m=c[f+228>>2]|0;R=j&255^m>>>24;O=k&255^m>>>16;w=l&255^m>>>8;k=n&255^m;m=c[f+232>>2]|0;Q=o&255^m>>>24;n=p&255^m>>>16;j=q&255^m>>>8;m=r&255^m;r=c[f+236>>2]|0;p=s&255^r>>>24;o=t&255^r>>>16;h=u&255^r>>>8;r=b&255^r;l=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;a[y>>0]=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;a[C>>0]=a[(Q&15)+(35283+(Q>>>4<<4))>>0]|0;a[H>>0]=a[(p&15)+(35283+(p>>>4<<4))>>0]|0;o=a[(o&15)+(35283+((o>>>4&15)<<4))>>0]|0;p=a[(P&15)+(35283+((P>>>4&15)<<4))>>0]|0;a[D>>0]=a[(O&15)+(35283+((O>>>4&15)<<4))>>0]|0;a[I>>0]=a[(n&15)+(35283+((n>>>4&15)<<4))>>0]|0;j=a[(j&15)+(35283+((j>>>4&15)<<4))>>0]|0;h=a[(h&15)+(35283+((h>>>4&15)<<4))>>0]|0;n=a[(g&15)+(35283+((g>>>4&15)<<4))>>0]|0;a[J>>0]=a[(w&15)+(35283+((w>>>4&15)<<4))>>0]|0;k=a[(k&15)+(35283+((k>>>4&15)<<4))>>0]|0;m=a[(m&15)+(35283+((m>>>4&15)<<4))>>0]|0;r=a[(r&15)+(35283+((r>>>4&15)<<4))>>0]|0;b=a[(v&15)+(35283+((v>>>4&15)<<4))>>0]|0;q=c[f+208>>2]|0;a[M>>0]=l&255^q>>>24;a[E>>0]=o&255^q>>>16;a[K>>0]=j&255^q>>>8;a[L>>0]=k&255^q;q=c[f+212>>2]|0;a[y>>0]=(d[y>>0]|0)^q>>>24;a[z>>0]=p&255^q>>>16;a[A>>0]=h&255^q>>>8;a[B>>0]=m&255^q;q=c[f+216>>2]|0;a[C>>0]=(d[C>>0]|0)^q>>>24;a[D>>0]=(d[D>>0]|0)^q>>>16;a[F>>0]=n&255^q>>>8;a[G>>0]=r&255^q;q=c[f+220>>2]|0;a[H>>0]=(d[H>>0]|0)^q>>>24;a[I>>0]=(d[I>>0]|0)^q>>>16;a[J>>0]=(d[J>>0]|0)^q>>>8;a[x>>0]=b&255^q;_e(M);q=a[I>>0]|0;b=a[D>>0]|0;r=a[z>>0]|0;n=a[E>>0]|0;m=a[J>>0]|0;h=a[A>>0]|0;p=a[F>>0]|0;k=a[K>>0]|0;j=a[x>>0]|0;a[x>>0]=a[L>>0]|0;o=a[B>>0]|0;l=a[G>>0]|0;s=d[M>>0]|0;a[M>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;s=d[y>>0]|0;a[y>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;s=d[C>>0]|0;a[C>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;s=d[H>>0]|0;a[H>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;q=q&255;q=a[(q&15)+(35283+(q>>>4<<4))>>0]|0;n=n&255;n=a[(n&15)+(35283+(n>>>4<<4))>>0]|0;r=r&255;a[D>>0]=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;b=b&255;a[I>>0]=a[(b&15)+(35283+(b>>>4<<4))>>0]|0;p=p&255;p=a[(p&15)+(35283+(p>>>4<<4))>>0]|0;m=m&255;m=a[(m&15)+(35283+(m>>>4<<4))>>0]|0;k=k&255;k=a[(k&15)+(35283+(k>>>4<<4))>>0]|0;h=h&255;a[J>>0]=a[(h&15)+(35283+(h>>>4<<4))>>0]|0;o=o&255;o=a[(o&15)+(35283+(o>>>4<<4))>>0]|0;l=l&255;l=a[(l&15)+(35283+(l>>>4<<4))>>0]|0;j=j&255;j=a[(j&15)+(35283+(j>>>4<<4))>>0]|0;h=d[x>>0]|0;h=a[(h&15)+(35283+(h>>>4<<4))>>0]|0;b=c[f+192>>2]|0;a[M>>0]=(d[M>>0]|0)^b>>>24;a[E>>0]=q&255^b>>>16;a[K>>0]=p&255^b>>>8;a[L>>0]=o&255^b;b=c[f+196>>2]|0;a[y>>0]=(d[y>>0]|0)^b>>>24;a[z>>0]=n&255^b>>>16;a[A>>0]=m&255^b>>>8;a[B>>0]=l&255^b;b=c[f+200>>2]|0;a[C>>0]=(d[C>>0]|0)^b>>>24;a[D>>0]=(d[D>>0]|0)^b>>>16;a[F>>0]=k&255^b>>>8;a[G>>0]=j&255^b;b=c[f+204>>2]|0;a[H>>0]=(d[H>>0]|0)^b>>>24;a[I>>0]=(d[I>>0]|0)^b>>>16;a[J>>0]=(d[J>>0]|0)^b>>>8;a[x>>0]=h&255^b;_e(M);b=a[M>>0]|0;h=a[y>>0]|0;j=a[C>>0]|0;k=a[H>>0]|0;l=a[I>>0]|0;m=a[E>>0]|0;n=a[z>>0]|0;o=a[D>>0]|0;p=a[F>>0]|0;q=a[J>>0]|0;r=a[K>>0]|0;s=a[A>>0]|0;t=a[B>>0]|0;u=a[G>>0]|0;v=a[x>>0]|0;w=a[L>>0]|0}else{R=c[f+192>>2]|0;g=(h&255^R>>>24)&255;a[M>>0]=g;m=(m&255^R>>>16)&255;a[E>>0]=m;P=(v&255^R>>>8)&255;a[K>>0]=P;w=(w&255^R)&255;a[L>>0]=w;R=c[f+196>>2]|0;h=(j&255^R>>>24)&255;a[y>>0]=h;O=(k&255^R>>>16)&255;a[z>>0]=O;Q=(l&255^R>>>8)&255;a[A>>0]=Q;R=(n&255^R)&255;a[B>>0]=R;S=c[f+200>>2]|0;j=(o&255^S>>>24)&255;a[C>>0]=j;o=(p&255^S>>>16)&255;a[D>>0]=o;p=(q&255^S>>>8)&255;a[F>>0]=p;S=(r&255^S)&255;a[G>>0]=S;v=c[f+204>>2]|0;k=(s&255^v>>>24)&255;a[H>>0]=k;l=(t&255^v>>>16)&255;a[I>>0]=l;q=(u&255^v>>>8)&255;a[J>>0]=q;v=(b&255^v)&255;a[x>>0]=v;b=g;n=O;r=P;s=Q;t=R;u=S}S=b&255;S=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;h=h&255;a[y>>0]=a[(h&15)+(35283+(h>>>4<<4))>>0]|0;j=j&255;a[C>>0]=a[(j&15)+(35283+(j>>>4<<4))>>0]|0;k=k&255;a[H>>0]=a[(k&15)+(35283+(k>>>4<<4))>>0]|0;l=l&255;l=a[(l&15)+(35283+(l>>>4<<4))>>0]|0;k=m&255;k=a[(k&15)+(35283+(k>>>4<<4))>>0]|0;j=n&255;a[D>>0]=a[(j&15)+(35283+(j>>>4<<4))>>0]|0;j=o&255;a[I>>0]=a[(j&15)+(35283+(j>>>4<<4))>>0]|0;j=p&255;j=a[(j&15)+(35283+(j>>>4<<4))>>0]|0;h=q&255;h=a[(h&15)+(35283+(h>>>4<<4))>>0]|0;n=r&255;n=a[(n&15)+(35283+(n>>>4<<4))>>0]|0;p=s&255;a[J>>0]=a[(p&15)+(35283+(p>>>4<<4))>>0]|0;p=t&255;p=a[(p&15)+(35283+(p>>>4<<4))>>0]|0;m=u&255;m=a[(m&15)+(35283+(m>>>4<<4))>>0]|0;r=v&255;r=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;b=w&255;b=a[(b&15)+(35283+(b>>>4<<4))>>0]|0;q=c[f+176>>2]|0;a[M>>0]=S&255^q>>>24;a[E>>0]=l&255^q>>>16;a[K>>0]=j&255^q>>>8;a[L>>0]=p&255^q;q=c[f+180>>2]|0;a[y>>0]=(d[y>>0]|0)^q>>>24;a[z>>0]=k&255^q>>>16;a[A>>0]=h&255^q>>>8;a[B>>0]=m&255^q;q=c[f+184>>2]|0;a[C>>0]=(d[C>>0]|0)^q>>>24;a[D>>0]=(d[D>>0]|0)^q>>>16;a[F>>0]=n&255^q>>>8;a[G>>0]=r&255^q;q=c[f+188>>2]|0;a[H>>0]=(d[H>>0]|0)^q>>>24;a[I>>0]=(d[I>>0]|0)^q>>>16;a[J>>0]=(d[J>>0]|0)^q>>>8;a[x>>0]=b&255^q;_e(M);q=a[I>>0]|0;b=a[D>>0]|0;r=a[z>>0]|0;n=a[E>>0]|0;m=a[J>>0]|0;h=a[A>>0]|0;p=a[F>>0]|0;k=a[K>>0]|0;j=a[x>>0]|0;a[x>>0]=a[L>>0]|0;o=a[B>>0]|0;l=a[G>>0]|0;s=d[M>>0]|0;a[M>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;s=d[y>>0]|0;a[y>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;s=d[C>>0]|0;a[C>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;s=d[H>>0]|0;a[H>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;q=q&255;q=a[(q&15)+(35283+(q>>>4<<4))>>0]|0;n=n&255;n=a[(n&15)+(35283+(n>>>4<<4))>>0]|0;r=r&255;a[D>>0]=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;b=b&255;a[I>>0]=a[(b&15)+(35283+(b>>>4<<4))>>0]|0;p=p&255;p=a[(p&15)+(35283+(p>>>4<<4))>>0]|0;m=m&255;m=a[(m&15)+(35283+(m>>>4<<4))>>0]|0;k=k&255;k=a[(k&15)+(35283+(k>>>4<<4))>>0]|0;h=h&255;a[J>>0]=a[(h&15)+(35283+(h>>>4<<4))>>0]|0;o=o&255;o=a[(o&15)+(35283+(o>>>4<<4))>>0]|0;l=l&255;l=a[(l&15)+(35283+(l>>>4<<4))>>0]|0;j=j&255;j=a[(j&15)+(35283+(j>>>4<<4))>>0]|0;h=d[x>>0]|0;h=a[(h&15)+(35283+(h>>>4<<4))>>0]|0;b=c[f+160>>2]|0;a[M>>0]=(d[M>>0]|0)^b>>>24;a[E>>0]=q&255^b>>>16;a[K>>0]=p&255^b>>>8;a[L>>0]=o&255^b;b=c[f+164>>2]|0;a[y>>0]=(d[y>>0]|0)^b>>>24;a[z>>0]=n&255^b>>>16;a[A>>0]=m&255^b>>>8;a[B>>0]=l&255^b;b=c[f+168>>2]|0;a[C>>0]=(d[C>>0]|0)^b>>>24;a[D>>0]=(d[D>>0]|0)^b>>>16;a[F>>0]=k&255^b>>>8;a[G>>0]=j&255^b;b=c[f+172>>2]|0;a[H>>0]=(d[H>>0]|0)^b>>>24;a[I>>0]=(d[I>>0]|0)^b>>>16;a[J>>0]=(d[J>>0]|0)^b>>>8;a[x>>0]=h&255^b;_e(M);b=a[M>>0]|0;h=a[y>>0]|0;j=a[C>>0]|0;k=a[H>>0]|0;l=a[I>>0]|0;m=a[E>>0]|0;n=a[z>>0]|0;o=a[D>>0]|0;p=a[F>>0]|0;q=a[J>>0]|0;r=a[K>>0]|0;s=a[A>>0]|0;t=a[B>>0]|0;u=a[G>>0]|0;v=a[x>>0]|0;w=a[L>>0]|0}else{R=c[f+160>>2]|0;g=(h&255^R>>>24)&255;a[M>>0]=g;m=(m&255^R>>>16)&255;a[E>>0]=m;P=(v&255^R>>>8)&255;a[K>>0]=P;w=(w&255^R)&255;a[L>>0]=w;R=c[f+164>>2]|0;h=(j&255^R>>>24)&255;a[y>>0]=h;O=(k&255^R>>>16)&255;a[z>>0]=O;Q=(l&255^R>>>8)&255;a[A>>0]=Q;R=(n&255^R)&255;a[B>>0]=R;S=c[f+168>>2]|0;j=(o&255^S>>>24)&255;a[C>>0]=j;o=(p&255^S>>>16)&255;a[D>>0]=o;p=(q&255^S>>>8)&255;a[F>>0]=p;S=(r&255^S)&255;a[G>>0]=S;v=c[f+172>>2]|0;k=(s&255^v>>>24)&255;a[H>>0]=k;l=(t&255^v>>>16)&255;a[I>>0]=l;q=(u&255^v>>>8)&255;a[J>>0]=q;v=(b&255^v)&255;a[x>>0]=v;b=g;n=O;r=P;s=Q;t=R;u=S}b=b&255;b=a[(b&15)+(35283+(b>>>4<<4))>>0]|0;O=h&255;a[y>>0]=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;O=j&255;a[C>>0]=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;O=k&255;a[H>>0]=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;l=l&255;l=a[(l&15)+(35283+(l>>>4<<4))>>0]|0;O=m&255;O=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;R=n&255;a[D>>0]=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;R=o&255;a[I>>0]=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;R=p&255;R=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;g=q&255;g=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;S=r&255;S=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;s=s&255;a[J>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;s=t&255;s=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;r=u&255;r=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;t=v&255;t=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;P=w&255;P=a[(P&15)+(35283+(P>>>4<<4))>>0]|0;Q=c[f+144>>2]|0;a[M>>0]=b&255^Q>>>24;a[E>>0]=l&255^Q>>>16;a[K>>0]=R&255^Q>>>8;a[L>>0]=s&255^Q;Q=c[f+148>>2]|0;a[y>>0]=(d[y>>0]|0)^Q>>>24;a[z>>0]=O&255^Q>>>16;a[A>>0]=g&255^Q>>>8;a[B>>0]=r&255^Q;Q=c[f+152>>2]|0;a[C>>0]=(d[C>>0]|0)^Q>>>24;a[D>>0]=(d[D>>0]|0)^Q>>>16;a[F>>0]=S&255^Q>>>8;a[G>>0]=t&255^Q;Q=c[f+156>>2]|0;a[H>>0]=(d[H>>0]|0)^Q>>>24;a[I>>0]=(d[I>>0]|0)^Q>>>16;a[J>>0]=(d[J>>0]|0)^Q>>>8;a[x>>0]=P&255^Q;_e(M);Q=a[I>>0]|0;P=a[D>>0]|0;t=a[z>>0]|0;v=a[E>>0]|0;S=a[J>>0]|0;r=a[A>>0]|0;s=a[F>>0]|0;g=a[K>>0]|0;O=a[x>>0]|0;a[x>>0]=a[L>>0]|0;R=a[B>>0]|0;w=a[G>>0]|0;u=d[M>>0]|0;a[M>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[y>>0]|0;a[y>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[C>>0]|0;a[C>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[H>>0]|0;a[H>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;Q=Q&255;Q=a[(Q&15)+(35283+(Q>>>4<<4))>>0]|0;v=v&255;v=a[(v&15)+(35283+(v>>>4<<4))>>0]|0;t=t&255;a[D>>0]=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;P=P&255;a[I>>0]=a[(P&15)+(35283+(P>>>4<<4))>>0]|0;s=s&255;s=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;S=S&255;S=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;g=g&255;g=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;r=r&255;a[J>>0]=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;R=R&255;R=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;w=w&255;w=a[(w&15)+(35283+(w>>>4<<4))>>0]|0;O=O&255;O=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;r=d[x>>0]|0;r=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;P=c[f+128>>2]|0;a[M>>0]=(d[M>>0]|0)^P>>>24;a[E>>0]=Q&255^P>>>16;a[K>>0]=s&255^P>>>8;a[L>>0]=R&255^P;P=c[f+132>>2]|0;a[y>>0]=(d[y>>0]|0)^P>>>24;a[z>>0]=v&255^P>>>16;a[A>>0]=S&255^P>>>8;a[B>>0]=w&255^P;P=c[f+136>>2]|0;a[C>>0]=(d[C>>0]|0)^P>>>24;a[D>>0]=(d[D>>0]|0)^P>>>16;a[F>>0]=g&255^P>>>8;a[G>>0]=O&255^P;P=c[f+140>>2]|0;a[H>>0]=(d[H>>0]|0)^P>>>24;a[I>>0]=(d[I>>0]|0)^P>>>16;a[J>>0]=(d[J>>0]|0)^P>>>8;a[x>>0]=r&255^P;_e(M);P=a[I>>0]|0;r=a[D>>0]|0;O=a[z>>0]|0;g=a[E>>0]|0;w=a[J>>0]|0;S=a[A>>0]|0;v=a[F>>0]|0;R=a[K>>0]|0;s=a[x>>0]|0;a[x>>0]=a[L>>0]|0;Q=a[B>>0]|0;t=a[G>>0]|0;u=d[M>>0]|0;a[M>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[y>>0]|0;a[y>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[C>>0]|0;a[C>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[H>>0]|0;a[H>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;P=P&255;P=a[(P&15)+(35283+(P>>>4<<4))>>0]|0;g=g&255;g=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;O=O&255;a[D>>0]=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;r=r&255;a[I>>0]=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;v=v&255;v=a[(v&15)+(35283+(v>>>4<<4))>>0]|0;w=w&255;w=a[(w&15)+(35283+(w>>>4<<4))>>0]|0;R=R&255;R=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;S=S&255;a[J>>0]=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;Q=Q&255;Q=a[(Q&15)+(35283+(Q>>>4<<4))>>0]|0;t=t&255;t=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;s=s&255;s=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;S=d[x>>0]|0;S=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;r=c[f+112>>2]|0;a[M>>0]=(d[M>>0]|0)^r>>>24;a[E>>0]=P&255^r>>>16;a[K>>0]=v&255^r>>>8;a[L>>0]=Q&255^r;r=c[f+116>>2]|0;a[y>>0]=(d[y>>0]|0)^r>>>24;a[z>>0]=g&255^r>>>16;a[A>>0]=w&255^r>>>8;a[B>>0]=t&255^r;r=c[f+120>>2]|0;a[C>>0]=(d[C>>0]|0)^r>>>24;a[D>>0]=(d[D>>0]|0)^r>>>16;a[F>>0]=R&255^r>>>8;a[G>>0]=s&255^r;r=c[f+124>>2]|0;a[H>>0]=(d[H>>0]|0)^r>>>24;a[I>>0]=(d[I>>0]|0)^r>>>16;a[J>>0]=(d[J>>0]|0)^r>>>8;a[x>>0]=S&255^r;_e(M);r=a[I>>0]|0;S=a[D>>0]|0;s=a[z>>0]|0;R=a[E>>0]|0;t=a[J>>0]|0;w=a[A>>0]|0;g=a[F>>0]|0;Q=a[K>>0]|0;v=a[x>>0]|0;a[x>>0]=a[L>>0]|0;P=a[B>>0]|0;O=a[G>>0]|0;u=d[M>>0]|0;a[M>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[y>>0]|0;a[y>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[C>>0]|0;a[C>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[H>>0]|0;a[H>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;r=r&255;r=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;R=R&255;R=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;s=s&255;a[D>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;S=S&255;a[I>>0]=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;g=g&255;g=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;t=t&255;t=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;Q=Q&255;Q=a[(Q&15)+(35283+(Q>>>4<<4))>>0]|0;w=w&255;a[J>>0]=a[(w&15)+(35283+(w>>>4<<4))>>0]|0;P=P&255;P=a[(P&15)+(35283+(P>>>4<<4))>>0]|0;O=O&255;O=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;v=v&255;v=a[(v&15)+(35283+(v>>>4<<4))>>0]|0;w=d[x>>0]|0;w=a[(w&15)+(35283+(w>>>4<<4))>>0]|0;S=c[f+96>>2]|0;a[M>>0]=(d[M>>0]|0)^S>>>24;a[E>>0]=r&255^S>>>16;a[K>>0]=g&255^S>>>8;a[L>>0]=P&255^S;S=c[f+100>>2]|0;a[y>>0]=(d[y>>0]|0)^S>>>24;a[z>>0]=R&255^S>>>16;a[A>>0]=t&255^S>>>8;a[B>>0]=O&255^S;S=c[f+104>>2]|0;a[C>>0]=(d[C>>0]|0)^S>>>24;a[D>>0]=(d[D>>0]|0)^S>>>16;a[F>>0]=Q&255^S>>>8;a[G>>0]=v&255^S;S=c[f+108>>2]|0;a[H>>0]=(d[H>>0]|0)^S>>>24;a[I>>0]=(d[I>>0]|0)^S>>>16;a[J>>0]=(d[J>>0]|0)^S>>>8;a[x>>0]=w&255^S;_e(M);S=a[I>>0]|0;w=a[D>>0]|0;v=a[z>>0]|0;Q=a[E>>0]|0;O=a[J>>0]|0;t=a[A>>0]|0;R=a[F>>0]|0;P=a[K>>0]|0;g=a[x>>0]|0;a[x>>0]=a[L>>0]|0;r=a[B>>0]|0;s=a[G>>0]|0;u=d[M>>0]|0;a[M>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[y>>0]|0;a[y>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[C>>0]|0;a[C>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[H>>0]|0;a[H>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;S=S&255;S=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;Q=Q&255;Q=a[(Q&15)+(35283+(Q>>>4<<4))>>0]|0;v=v&255;a[D>>0]=a[(v&15)+(35283+(v>>>4<<4))>>0]|0;w=w&255;a[I>>0]=a[(w&15)+(35283+(w>>>4<<4))>>0]|0;R=R&255;R=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;O=O&255;O=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;P=P&255;P=a[(P&15)+(35283+(P>>>4<<4))>>0]|0;t=t&255;a[J>>0]=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;r=r&255;r=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;s=s&255;s=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;g=g&255;g=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;t=d[x>>0]|0;t=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;w=c[f+80>>2]|0;a[M>>0]=(d[M>>0]|0)^w>>>24;a[E>>0]=S&255^w>>>16;a[K>>0]=R&255^w>>>8;a[L>>0]=r&255^w;w=c[f+84>>2]|0;a[y>>0]=(d[y>>0]|0)^w>>>24;a[z>>0]=Q&255^w>>>16;a[A>>0]=O&255^w>>>8;a[B>>0]=s&255^w;w=c[f+88>>2]|0;a[C>>0]=(d[C>>0]|0)^w>>>24;a[D>>0]=(d[D>>0]|0)^w>>>16;a[F>>0]=P&255^w>>>8;a[G>>0]=g&255^w;w=c[f+92>>2]|0;a[H>>0]=(d[H>>0]|0)^w>>>24;a[I>>0]=(d[I>>0]|0)^w>>>16;a[J>>0]=(d[J>>0]|0)^w>>>8;a[x>>0]=t&255^w;_e(M);w=a[I>>0]|0;t=a[D>>0]|0;g=a[z>>0]|0;P=a[E>>0]|0;s=a[J>>0]|0;O=a[A>>0]|0;Q=a[F>>0]|0;r=a[K>>0]|0;R=a[x>>0]|0;a[x>>0]=a[L>>0]|0;S=a[B>>0]|0;v=a[G>>0]|0;u=d[M>>0]|0;a[M>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[y>>0]|0;a[y>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[C>>0]|0;a[C>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[H>>0]|0;a[H>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;w=w&255;w=a[(w&15)+(35283+(w>>>4<<4))>>0]|0;P=P&255;P=a[(P&15)+(35283+(P>>>4<<4))>>0]|0;g=g&255;a[D>>0]=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;t=t&255;a[I>>0]=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;Q=Q&255;Q=a[(Q&15)+(35283+(Q>>>4<<4))>>0]|0;s=s&255;s=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;r=r&255;r=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;O=O&255;a[J>>0]=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;S=S&255;S=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;v=v&255;v=a[(v&15)+(35283+(v>>>4<<4))>>0]|0;R=R&255;R=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;O=d[x>>0]|0;O=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;t=c[f+64>>2]|0;a[M>>0]=(d[M>>0]|0)^t>>>24;a[E>>0]=w&255^t>>>16;a[K>>0]=Q&255^t>>>8;a[L>>0]=S&255^t;t=c[f+68>>2]|0;a[y>>0]=(d[y>>0]|0)^t>>>24;a[z>>0]=P&255^t>>>16;a[A>>0]=s&255^t>>>8;a[B>>0]=v&255^t;t=c[f+72>>2]|0;a[C>>0]=(d[C>>0]|0)^t>>>24;a[D>>0]=(d[D>>0]|0)^t>>>16;a[F>>0]=r&255^t>>>8;a[G>>0]=R&255^t;t=c[f+76>>2]|0;a[H>>0]=(d[H>>0]|0)^t>>>24;a[I>>0]=(d[I>>0]|0)^t>>>16;a[J>>0]=(d[J>>0]|0)^t>>>8;a[x>>0]=O&255^t;_e(M);t=a[I>>0]|0;O=a[D>>0]|0;R=a[z>>0]|0;r=a[E>>0]|0;v=a[J>>0]|0;s=a[A>>0]|0;P=a[F>>0]|0;S=a[K>>0]|0;Q=a[x>>0]|0;a[x>>0]=a[L>>0]|0;w=a[B>>0]|0;g=a[G>>0]|0;u=d[M>>0]|0;a[M>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[y>>0]|0;a[y>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[C>>0]|0;a[C>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[H>>0]|0;a[H>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;t=t&255;t=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;r=r&255;r=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;R=R&255;a[D>>0]=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;O=O&255;a[I>>0]=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;P=P&255;P=a[(P&15)+(35283+(P>>>4<<4))>>0]|0;v=v&255;v=a[(v&15)+(35283+(v>>>4<<4))>>0]|0;S=S&255;S=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;s=s&255;a[J>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;w=w&255;w=a[(w&15)+(35283+(w>>>4<<4))>>0]|0;g=g&255;g=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;Q=Q&255;Q=a[(Q&15)+(35283+(Q>>>4<<4))>>0]|0;s=d[x>>0]|0;s=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;O=c[f+48>>2]|0;a[M>>0]=(d[M>>0]|0)^O>>>24;a[E>>0]=t&255^O>>>16;a[K>>0]=P&255^O>>>8;a[L>>0]=w&255^O;O=c[f+52>>2]|0;a[y>>0]=(d[y>>0]|0)^O>>>24;a[z>>0]=r&255^O>>>16;a[A>>0]=v&255^O>>>8;a[B>>0]=g&255^O;O=c[f+56>>2]|0;a[C>>0]=(d[C>>0]|0)^O>>>24;a[D>>0]=(d[D>>0]|0)^O>>>16;a[F>>0]=S&255^O>>>8;a[G>>0]=Q&255^O;O=c[f+60>>2]|0;a[H>>0]=(d[H>>0]|0)^O>>>24;a[I>>0]=(d[I>>0]|0)^O>>>16;a[J>>0]=(d[J>>0]|0)^O>>>8;a[x>>0]=s&255^O;_e(M);O=a[I>>0]|0;s=a[D>>0]|0;Q=a[z>>0]|0;S=a[E>>0]|0;g=a[J>>0]|0;v=a[A>>0]|0;r=a[F>>0]|0;w=a[K>>0]|0;P=a[x>>0]|0;a[x>>0]=a[L>>0]|0;t=a[B>>0]|0;R=a[G>>0]|0;u=d[M>>0]|0;a[M>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[y>>0]|0;a[y>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[C>>0]|0;a[C>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[H>>0]|0;a[H>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;O=O&255;O=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;S=S&255;S=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;Q=Q&255;a[D>>0]=a[(Q&15)+(35283+(Q>>>4<<4))>>0]|0;s=s&255;a[I>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;r=r&255;r=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;g=g&255;g=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;w=w&255;w=a[(w&15)+(35283+(w>>>4<<4))>>0]|0;v=v&255;a[J>>0]=a[(v&15)+(35283+(v>>>4<<4))>>0]|0;t=t&255;t=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;R=R&255;R=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;P=P&255;P=a[(P&15)+(35283+(P>>>4<<4))>>0]|0;v=d[x>>0]|0;v=a[(v&15)+(35283+(v>>>4<<4))>>0]|0;s=c[f+32>>2]|0;a[M>>0]=(d[M>>0]|0)^s>>>24;a[E>>0]=O&255^s>>>16;a[K>>0]=r&255^s>>>8;a[L>>0]=t&255^s;s=c[f+36>>2]|0;a[y>>0]=(d[y>>0]|0)^s>>>24;a[z>>0]=S&255^s>>>16;a[A>>0]=g&255^s>>>8;a[B>>0]=R&255^s;s=c[f+40>>2]|0;a[C>>0]=(d[C>>0]|0)^s>>>24;a[D>>0]=(d[D>>0]|0)^s>>>16;a[F>>0]=w&255^s>>>8;a[G>>0]=P&255^s;s=c[f+44>>2]|0;a[H>>0]=(d[H>>0]|0)^s>>>24;a[I>>0]=(d[I>>0]|0)^s>>>16;a[J>>0]=(d[J>>0]|0)^s>>>8;a[x>>0]=v&255^s;_e(M);s=a[I>>0]|0;v=a[D>>0]|0;P=a[z>>0]|0;w=a[E>>0]|0;R=a[J>>0]|0;g=a[A>>0]|0;S=a[F>>0]|0;t=a[K>>0]|0;r=a[x>>0]|0;a[x>>0]=a[L>>0]|0;O=a[B>>0]|0;Q=a[G>>0]|0;u=d[M>>0]|0;a[M>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[y>>0]|0;a[y>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[C>>0]|0;a[C>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[H>>0]|0;a[H>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;s=s&255;s=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;w=w&255;w=a[(w&15)+(35283+(w>>>4<<4))>>0]|0;P=P&255;a[D>>0]=a[(P&15)+(35283+(P>>>4<<4))>>0]|0;v=v&255;a[I>>0]=a[(v&15)+(35283+(v>>>4<<4))>>0]|0;S=S&255;S=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;R=R&255;R=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;t=t&255;t=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;g=g&255;a[J>>0]=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;O=O&255;O=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;Q=Q&255;Q=a[(Q&15)+(35283+(Q>>>4<<4))>>0]|0;r=r&255;r=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;g=d[x>>0]|0;g=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;v=c[f+16>>2]|0;a[M>>0]=(d[M>>0]|0)^v>>>24;a[E>>0]=s&255^v>>>16;a[K>>0]=S&255^v>>>8;a[L>>0]=O&255^v;v=c[f+20>>2]|0;a[y>>0]=(d[y>>0]|0)^v>>>24;a[z>>0]=w&255^v>>>16;a[A>>0]=R&255^v>>>8;a[B>>0]=Q&255^v;v=c[f+24>>2]|0;a[C>>0]=(d[C>>0]|0)^v>>>24;a[D>>0]=(d[D>>0]|0)^v>>>16;a[F>>0]=t&255^v>>>8;a[G>>0]=r&255^v;v=c[f+28>>2]|0;a[H>>0]=(d[H>>0]|0)^v>>>24;a[I>>0]=(d[I>>0]|0)^v>>>16;a[J>>0]=(d[J>>0]|0)^v>>>8;a[x>>0]=g&255^v;_e(M);v=a[I>>0]|0;g=a[D>>0]|0;r=a[z>>0]|0;t=a[E>>0]|0;Q=a[J>>0]|0;R=a[A>>0]|0;w=a[F>>0]|0;O=a[K>>0]|0;S=a[x>>0]|0;a[x>>0]=a[L>>0]|0;s=a[B>>0]|0;P=a[G>>0]|0;u=d[M>>0]|0;u=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;a[M>>0]=u;q=d[y>>0]|0;a[y>>0]=a[(q&15)+(35283+(q>>>4<<4))>>0]|0;q=d[C>>0]|0;a[C>>0]=a[(q&15)+(35283+(q>>>4<<4))>>0]|0;q=d[H>>0]|0;a[H>>0]=a[(q&15)+(35283+(q>>>4<<4))>>0]|0;v=v&255;v=a[(v&15)+(35283+(v>>>4<<4))>>0]|0;t=t&255;t=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;r=r&255;a[D>>0]=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;g=g&255;a[I>>0]=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;w=w&255;w=a[(w&15)+(35283+(w>>>4<<4))>>0]|0;Q=Q&255;Q=a[(Q&15)+(35283+(Q>>>4<<4))>>0]|0;O=O&255;O=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;R=R&255;a[J>>0]=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;s=s&255;s=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;P=P&255;P=a[(P&15)+(35283+(P>>>4<<4))>>0]|0;S=S&255;S=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;R=d[x>>0]|0;R=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;g=c[f>>2]|0;u=(u&255^g>>>24)&255;a[M>>0]=u;v=(v&255^g>>>16)&255;a[E>>0]=v;w=(w&255^g>>>8)&255;a[K>>0]=w;g=(s&255^g)&255;a[L>>0]=g;M=c[f+4>>2]|0;x=((d[y>>0]|0)^M>>>24)&255;a[y>>0]=x;y=(t&255^M>>>16)&255;a[z>>0]=y;z=(Q&255^M>>>8)&255;a[A>>0]=z;A=(P&255^M)&255;a[B>>0]=A;M=c[f+8>>2]|0;E=((d[C>>0]|0)^M>>>24)&255;a[C>>0]=E;K=((d[D>>0]|0)^M>>>16)&255;a[D>>0]=K;L=(O&255^M>>>8)&255;a[F>>0]=L;M=(S&255^M)&255;a[G>>0]=M;S=c[f+12>>2]|0;O=((d[H>>0]|0)^S>>>24)&255;a[H>>0]=O;P=((d[I>>0]|0)^S>>>16)&255;a[I>>0]=P;Q=((d[J>>0]|0)^S>>>8)&255;a[e>>0]=u;a[e+1>>0]=v;a[e+2>>0]=w;a[e+3>>0]=g;a[e+4>>0]=x;a[e+5>>0]=y;a[e+6>>0]=z;a[e+7>>0]=A;a[e+8>>0]=E;a[e+9>>0]=K;a[e+10>>0]=L;a[e+11>>0]=M;a[e+12>>0]=O;a[e+13>>0]=P;a[e+14>>0]=Q;a[e+15>>0]=R&255^S;i=N;return}\nfunction af(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0;Hb=i;i=i+2640|0;Gb=Hb+2456|0;xb=Hb+2304|0;Cb=Hb+2152|0;wb=Hb+2e3|0;ub=Hb+1848|0;vb=Hb+1696|0;Db=Hb+1544|0;yb=Hb+1392|0;zb=Hb+1240|0;Ab=Hb+1088|0;g=Hb+936|0;h=Hb+784|0;j=Hb+632|0;k=Hb+480|0;n=Hb+328|0;sb=Hb+248|0;Bb=Hb+168|0;Fb=Hb+80|0;Eb=Hb;tb=Hb+2608|0;$=tb;o=e;Z=$+32|0;do{a[$>>0]=a[o>>0]|0;$=$+1|0;o=o+1|0}while(($|0)<(Z|0));a[tb>>0]=(d[tb>>0]|0)&248;$=tb+31|0;a[$>>0]=(d[$>>0]|0)&63|64;$=d[f>>0]|0;ob=pf(d[f+1>>0]|0|0,0,8)|0;nb=C;qb=pf(d[f+2>>0]|0|0,0,16)|0;nb=nb|C;pb=d[f+3>>0]|0;Z=pf(pb|0,0,24)|0;rb=sb;c[rb>>2]=ob|$|qb|Z&50331648;c[rb+4>>2]=nb;rb=pf(d[f+4>>0]|0|0,0,8)|0;nb=C;Z=pf(d[f+5>>0]|0|0,0,16)|0;nb=nb|C;qb=d[f+6>>0]|0;$=pf(qb|0,0,24)|0;nb=of(rb|pb|Z|$|0,nb|C|0,2)|0;$=sb+8|0;c[$>>2]=nb&33554431;c[$+4>>2]=0;$=pf(d[f+7>>0]|0|0,0,8)|0;nb=C;Z=pf(d[f+8>>0]|0|0,0,16)|0;nb=nb|C;pb=d[f+9>>0]|0;rb=pf(pb|0,0,24)|0;nb=of($|qb|Z|rb|0,nb|C|0,3)|0;rb=sb+16|0;c[rb>>2]=nb&67108863;c[rb+4>>2]=0;rb=pf(d[f+10>>0]|0|0,0,8)|0;nb=C;Z=pf(d[f+11>>0]|0|0,0,16)|0;nb=nb|C;qb=d[f+12>>0]|0;$=pf(qb|0,0,24)|0;nb=of(rb|pb|Z|$|0,nb|C|0,5)|0;$=sb+24|0;c[$>>2]=nb&33554431;c[$+4>>2]=0;$=pf(d[f+13>>0]|0|0,0,8)|0;nb=C;Z=pf(d[f+14>>0]|0|0,0,16)|0;nb=nb|C;pb=pf(d[f+15>>0]|0|0,0,24)|0;nb=of($|qb|Z|pb|0,nb|C|0,6)|0;pb=sb+32|0;c[pb>>2]=nb&67108863;c[pb+4>>2]=0;pb=d[f+16>>0]|0;nb=pf(d[f+17>>0]|0|0,0,8)|0;Z=C;qb=pf(d[f+18>>0]|0|0,0,16)|0;Z=Z|C;$=d[f+19>>0]|0;rb=pf($|0,0,24)|0;ob=sb+40|0;c[ob>>2]=nb|pb|qb|rb&16777216;c[ob+4>>2]=Z;ob=pf(d[f+20>>0]|0|0,0,8)|0;Z=C;rb=pf(d[f+21>>0]|0|0,0,16)|0;Z=Z|C;qb=d[f+22>>0]|0;pb=pf(qb|0,0,24)|0;Z=of(ob|$|rb|pb|0,Z|C|0,1)|0;pb=sb+48|0;c[pb>>2]=Z&67108863;c[pb+4>>2]=0;pb=pf(d[f+23>>0]|0|0,0,8)|0;Z=C;rb=pf(d[f+24>>0]|0|0,0,16)|0;Z=Z|C;$=d[f+25>>0]|0;ob=pf($|0,0,24)|0;Z=of(pb|qb|rb|ob|0,Z|C|0,3)|0;ob=sb+56|0;c[ob>>2]=Z&33554431;c[ob+4>>2]=0;ob=pf(d[f+26>>0]|0|0,0,8)|0;Z=C;rb=pf(d[f+27>>0]|0|0,0,16)|0;Z=Z|C;qb=d[f+28>>0]|0;pb=pf(qb|0,0,24)|0;Z=of(ob|$|rb|pb|0,Z|C|0,4)|0;pb=sb+64|0;c[pb>>2]=Z&67108863;c[pb+4>>2]=0;pb=pf(d[f+29>>0]|0|0,0,8)|0;Z=C;rb=pf(d[f+30>>0]|0|0,0,16)|0;Z=Z|C;$=pf(d[f+31>>0]|0|0,0,24)|0;Z=of(pb|qb|rb|$|0,Z|C|0,6)|0;$=sb+72|0;c[$>>2]=Z&33554431;c[$+4>>2]=0;nf(zb|0,0,152)|0;$=zb;c[$>>2]=1;c[$+4>>2]=0;nf(Ab|0,0,152)|0;$=Ab;c[$>>2]=1;c[$+4>>2]=0;nf(g|0,0,152)|0;nf(h|0,0,152)|0;nf(j|0,0,152)|0;$=j;c[$>>2]=1;c[$+4>>2]=0;nf(k|0,0,152)|0;nf(n|0,0,152)|0;$=n;c[$>>2]=1;c[$+4>>2]=0;$=yb+80|0;Z=$+72|0;do{c[$>>2]=0;$=$+4|0}while(($|0)<(Z|0));$=yb;o=sb;Z=$+80|0;do{c[$>>2]=c[o>>2];$=$+4|0;o=o+4|0}while(($|0)<(Z|0));ia=wb+144|0;ja=wb+64|0;ka=wb+136|0;la=wb+56|0;ma=wb+128|0;na=wb+48|0;oa=wb+120|0;pa=wb+40|0;qa=wb+112|0;ra=wb+32|0;sa=wb+104|0;ta=wb+24|0;ua=wb+96|0;va=wb+16|0;wa=wb+88|0;xa=wb+8|0;ya=wb+80|0;za=ub+144|0;Aa=ub+64|0;Ba=ub+136|0;Ca=ub+56|0;Da=ub+128|0;Ea=ub+48|0;Fa=ub+120|0;Ga=ub+40|0;Ha=ub+112|0;Ia=ub+32|0;Ja=ub+104|0;Ka=ub+24|0;La=ub+96|0;Ma=ub+16|0;Na=ub+88|0;Oa=ub+8|0;Pa=ub+80|0;Qa=wb+72|0;Ra=ub+72|0;Sa=xb+8|0;Ta=Cb+8|0;Ua=xb+16|0;Va=Cb+16|0;Wa=xb+24|0;Xa=Cb+24|0;Ya=xb+32|0;Za=Cb+32|0;_a=xb+40|0;$a=Cb+40|0;ab=xb+48|0;bb=Cb+48|0;cb=xb+56|0;db=Cb+56|0;eb=xb+64|0;fb=Cb+64|0;gb=xb+72|0;hb=Cb+72|0;ib=Gb+80|0;jb=Gb+8|0;kb=Gb+16|0;lb=Gb+24|0;mb=Gb+32|0;nb=Gb+40|0;ob=Gb+48|0;pb=Gb+56|0;qb=Gb+64|0;rb=Gb+72|0;f=0;l=yb;m=zb;e=Ab;do{o=a[tb+(31-f)>>0]|0;ha=0;da=h;ea=j;fa=k;ga=n;while(1){aa=o&255;ba=kf(0,0,aa>>>7|0,0)|0;ca=C;h=0;do{V=e+(h<<3)|0;T=V;U=c[T>>2]|0;T=c[T+4>>2]|0;$=l+(h<<3)|0;X=$;Z=c[X>>2]|0;X=c[X+4>>2]|0;Y=(Z^U)&ba;W=(X^T)&ca;U=mf(0,Y^U|0,32)|0;c[V>>2]=U;c[V+4>>2]=C;Z=mf(0,Y^Z|0,32)|0;c[$>>2]=Z;c[$+4>>2]=C;h=h+1|0}while((h|0)!=10);h=0;do{V=g+(h<<3)|0;T=V;U=c[T>>2]|0;T=c[T+4>>2]|0;$=m+(h<<3)|0;X=$;Z=c[X>>2]|0;X=c[X+4>>2]|0;Y=(Z^U)&ba;W=(X^T)&ca;U=mf(0,Y^U|0,32)|0;c[V>>2]=U;c[V+4>>2]=C;Z=mf(0,Y^Z|0,32)|0;c[$>>2]=Z;c[$+4>>2]=C;h=h+1|0}while((h|0)!=10);W=e;j=c[W>>2]|0;W=c[W+4>>2]|0;r=e+8|0;M=r;S=c[M>>2]|0;M=c[M+4>>2]|0;Lb=e+16|0;D=Lb;B=c[D>>2]|0;D=c[D+4>>2]|0;U=e+24|0;Ib=U;s=c[Ib>>2]|0;Ib=c[Ib+4>>2]|0;Y=e+32|0;Z=Y;Mb=c[Z>>2]|0;Z=c[Z+4>>2]|0;G=e+40|0;h=G;V=c[h>>2]|0;h=c[h+4>>2]|0;u=e+48|0;L=u;K=c[L>>2]|0;L=c[L+4>>2]|0;y=e+56|0;z=y;O=c[z>>2]|0;z=c[z+4>>2]|0;Nb=e+64|0;E=Nb;v=c[E>>2]|0;E=c[E+4>>2]|0;k=e+72|0;Jb=k;Kb=c[Jb>>2]|0;Jb=c[Jb+4>>2]|0;X=g;R=c[X>>2]|0;X=c[X+4>>2]|0;H=lf(R|0,X|0,j|0,W|0)|0;I=e;c[I>>2]=H;c[I+4>>2]=C;I=g+8|0;H=I;N=c[H>>2]|0;H=c[H+4>>2]|0;x=lf(N|0,H|0,S|0,M|0)|0;c[r>>2]=x;c[r+4>>2]=C;r=g+16|0;x=r;w=c[x>>2]|0;x=c[x+4>>2]|0;n=lf(w|0,x|0,B|0,D|0)|0;c[Lb>>2]=n;c[Lb+4>>2]=C;Lb=g+24|0;n=Lb;o=c[n>>2]|0;n=c[n+4>>2]|0;Pb=lf(o|0,n|0,s|0,Ib|0)|0;c[U>>2]=Pb;c[U+4>>2]=C;U=g+32|0;Pb=U;$=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;Q=lf($|0,Pb|0,Mb|0,Z|0)|0;c[Y>>2]=Q;c[Y+4>>2]=C;Y=g+40|0;Q=Y;P=c[Q>>2]|0;Q=c[Q+4>>2]|0;F=lf(P|0,Q|0,V|0,h|0)|0;c[G>>2]=F;c[G+4>>2]=C;G=g+48|0;F=G;T=c[F>>2]|0;F=c[F+4>>2]|0;J=lf(T|0,F|0,K|0,L|0)|0;c[u>>2]=J;c[u+4>>2]=C;u=g+56|0;J=u;A=c[J>>2]|0;J=c[J+4>>2]|0;q=lf(A|0,J|0,O|0,z|0)|0;c[y>>2]=q;c[y+4>>2]=C;y=g+64|0;q=y;p=c[q>>2]|0;q=c[q+4>>2]|0;Ob=lf(p|0,q|0,v|0,E|0)|0;c[Nb>>2]=Ob;c[Nb+4>>2]=C;Nb=g+72|0;Ob=Nb;t=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;Qb=lf(t|0,Ob|0,Kb|0,Jb|0)|0;c[k>>2]=Qb;c[k+4>>2]=C;X=kf(j|0,W|0,R|0,X|0)|0;R=g;c[R>>2]=X;c[R+4>>2]=C;H=kf(S|0,M|0,N|0,H|0)|0;c[I>>2]=H;c[I+4>>2]=C;x=kf(B|0,D|0,w|0,x|0)|0;c[r>>2]=x;c[r+4>>2]=C;n=kf(s|0,Ib|0,o|0,n|0)|0;c[Lb>>2]=n;c[Lb+4>>2]=C;Pb=kf(Mb|0,Z|0,$|0,Pb|0)|0;c[U>>2]=Pb;c[U+4>>2]=C;Q=kf(V|0,h|0,P|0,Q|0)|0;c[Y>>2]=Q;c[Y+4>>2]=C;F=kf(K|0,L|0,T|0,F|0)|0;c[G>>2]=F;c[G+4>>2]=C;J=kf(O|0,z|0,A|0,J|0)|0;c[u>>2]=J;c[u+4>>2]=C;q=kf(v|0,E|0,p|0,q|0)|0;c[y>>2]=q;c[y+4>>2]=C;Ob=kf(Kb|0,Jb|0,t|0,Ob|0)|0;c[Nb>>2]=Ob;c[Nb+4>>2]=C;Nb=l;Ob=c[Nb>>2]|0;Nb=c[Nb+4>>2]|0;t=l+8|0;Jb=t;Kb=c[Jb>>2]|0;Jb=c[Jb+4>>2]|0;y=l+16|0;q=y;p=c[q>>2]|0;q=c[q+4>>2]|0;E=l+24|0;v=E;u=c[v>>2]|0;v=c[v+4>>2]|0;J=l+32|0;A=J;z=c[A>>2]|0;A=c[A+4>>2]|0;O=l+40|0;G=O;F=c[G>>2]|0;G=c[G+4>>2]|0;T=l+48|0;L=T;K=c[L>>2]|0;L=c[L+4>>2]|0;Y=l+56|0;Q=Y;P=c[Q>>2]|0;Q=c[Q+4>>2]|0;h=l+64|0;V=h;U=c[V>>2]|0;V=c[V+4>>2]|0;Pb=l+72|0;$=Pb;Z=c[$>>2]|0;$=c[$+4>>2]|0;Mb=m;Lb=c[Mb>>2]|0;Mb=c[Mb+4>>2]|0;n=lf(Lb|0,Mb|0,Ob|0,Nb|0)|0;o=l;c[o>>2]=n;c[o+4>>2]=C;o=m+8|0;n=o;Ib=c[n>>2]|0;n=c[n+4>>2]|0;s=lf(Ib|0,n|0,Kb|0,Jb|0)|0;c[t>>2]=s;c[t+4>>2]=C;t=m+16|0;s=t;r=c[s>>2]|0;s=c[s+4>>2]|0;x=lf(r|0,s|0,p|0,q|0)|0;c[y>>2]=x;c[y+4>>2]=C;y=m+24|0;x=y;w=c[x>>2]|0;x=c[x+4>>2]|0;D=lf(w|0,x|0,u|0,v|0)|0;c[E>>2]=D;c[E+4>>2]=C;E=m+32|0;D=E;B=c[D>>2]|0;D=c[D+4>>2]|0;I=lf(B|0,D|0,z|0,A|0)|0;c[J>>2]=I;c[J+4>>2]=C;J=m+40|0;I=J;H=c[I>>2]|0;I=c[I+4>>2]|0;N=lf(H|0,I|0,F|0,G|0)|0;c[O>>2]=N;c[O+4>>2]=C;O=m+48|0;N=O;M=c[N>>2]|0;N=c[N+4>>2]|0;S=lf(M|0,N|0,K|0,L|0)|0;c[T>>2]=S;c[T+4>>2]=C;T=m+56|0;S=T;R=c[S>>2]|0;S=c[S+4>>2]|0;X=lf(R|0,S|0,P|0,Q|0)|0;c[Y>>2]=X;c[Y+4>>2]=C;Y=m+64|0;X=Y;W=c[X>>2]|0;X=c[X+4>>2]|0;j=lf(W|0,X|0,U|0,V|0)|0;c[h>>2]=j;c[h+4>>2]=C;h=m+72|0;j=h;k=c[j>>2]|0;j=c[j+4>>2]|0;Qb=lf(k|0,j|0,Z|0,$|0)|0;c[Pb>>2]=Qb;c[Pb+4>>2]=C;Mb=kf(Ob|0,Nb|0,Lb|0,Mb|0)|0;Lb=m;c[Lb>>2]=Mb;c[Lb+4>>2]=C;n=kf(Kb|0,Jb|0,Ib|0,n|0)|0;c[o>>2]=n;c[o+4>>2]=C;s=kf(p|0,q|0,r|0,s|0)|0;c[t>>2]=s;c[t+4>>2]=C;x=kf(u|0,v|0,w|0,x|0)|0;c[y>>2]=x;c[y+4>>2]=C;D=kf(z|0,A|0,B|0,D|0)|0;c[E>>2]=D;c[E+4>>2]=C;I=kf(F|0,G|0,H|0,I|0)|0;c[J>>2]=I;c[J+4>>2]=C;N=kf(K|0,L|0,M|0,N|0)|0;c[O>>2]=N;c[O+4>>2]=C;S=kf(P|0,Q|0,R|0,S|0)|0;c[T>>2]=S;c[T+4>>2]=C;X=kf(U|0,V|0,W|0,X|0)|0;c[Y>>2]=X;c[Y+4>>2]=C;j=kf(Z|0,$|0,k|0,j|0)|0;c[h>>2]=j;c[h+4>>2]=C;bf(wb,l,g);bf(ub,e,m);h=ia;j=c[h>>2]|0;h=c[h+4>>2]|0;k=ja;$=c[k>>2]|0;k=c[k+4>>2]|0;Z=vf(j|0,h|0,18,0)|0;Y=C;h=lf($|0,k|0,j|0,h|0)|0;Y=lf(h|0,C|0,Z|0,Y|0)|0;Z=ja;c[Z>>2]=Y;c[Z+4>>2]=C;Z=ka;Y=c[Z>>2]|0;Z=c[Z+4>>2]|0;h=la;j=c[h>>2]|0;h=c[h+4>>2]|0;k=vf(Y|0,Z|0,18,0)|0;$=C;Z=lf(j|0,h|0,Y|0,Z|0)|0;$=lf(Z|0,C|0,k|0,$|0)|0;k=la;c[k>>2]=$;c[k+4>>2]=C;k=ma;$=c[k>>2]|0;k=c[k+4>>2]|0;Z=na;Y=c[Z>>2]|0;Z=c[Z+4>>2]|0;h=vf($|0,k|0,18,0)|0;j=C;k=lf(Y|0,Z|0,$|0,k|0)|0;j=lf(k|0,C|0,h|0,j|0)|0;h=na;c[h>>2]=j;c[h+4>>2]=C;h=oa;j=c[h>>2]|0;h=c[h+4>>2]|0;k=pa;$=c[k>>2]|0;k=c[k+4>>2]|0;Z=vf(j|0,h|0,18,0)|0;Y=C;h=lf($|0,k|0,j|0,h|0)|0;Y=lf(h|0,C|0,Z|0,Y|0)|0;Z=pa;c[Z>>2]=Y;c[Z+4>>2]=C;Z=qa;Y=c[Z>>2]|0;Z=c[Z+4>>2]|0;h=ra;j=c[h>>2]|0;h=c[h+4>>2]|0;k=vf(Y|0,Z|0,18,0)|0;$=C;Z=lf(j|0,h|0,Y|0,Z|0)|0;$=lf(Z|0,C|0,k|0,$|0)|0;k=ra;c[k>>2]=$;c[k+4>>2]=C;k=sa;$=c[k>>2]|0;k=c[k+4>>2]|0;Z=ta;Y=c[Z>>2]|0;Z=c[Z+4>>2]|0;h=vf($|0,k|0,18,0)|0;j=C;k=lf(Y|0,Z|0,$|0,k|0)|0;j=lf(k|0,C|0,h|0,j|0)|0;h=ta;c[h>>2]=j;c[h+4>>2]=C;h=ua;j=c[h>>2]|0;h=c[h+4>>2]|0;k=va;$=c[k>>2]|0;k=c[k+4>>2]|0;Z=vf(j|0,h|0,18,0)|0;Y=C;h=lf($|0,k|0,j|0,h|0)|0;Y=lf(h|0,C|0,Z|0,Y|0)|0;Z=va;c[Z>>2]=Y;c[Z+4>>2]=C;Z=wa;Y=c[Z>>2]|0;Z=c[Z+4>>2]|0;h=xa;j=c[h>>2]|0;h=c[h+4>>2]|0;k=vf(Y|0,Z|0,18,0)|0;$=C;Z=lf(j|0,h|0,Y|0,Z|0)|0;$=lf(Z|0,C|0,k|0,$|0)|0;k=xa;c[k>>2]=$;c[k+4>>2]=C;k=ya;$=c[k>>2]|0;k=c[k+4>>2]|0;Z=wb;Y=c[Z>>2]|0;Z=c[Z+4>>2]|0;h=vf($|0,k|0,18,0)|0;j=C;k=lf(Y|0,Z|0,$|0,k|0)|0;j=lf(k|0,C|0,h|0,j|0)|0;h=C;k=wb;c[k>>2]=j;c[k+4>>2]=h;k=ya;c[k>>2]=0;c[k+4>>2]=0;k=0;do{Nb=lf(h>>31>>>6|0,0,j|0,h|0)|0;Nb=mf(Nb|0,C|0,26)|0;Mb=C;Lb=pf(Nb|0,Mb|0,26)|0;Lb=kf(j|0,h|0,Lb|0,C|0)|0;Qb=wb+(k<<3)|0;c[Qb>>2]=Lb;c[Qb+4>>2]=C;Qb=wb+((k|1)<<3)|0;Lb=Qb;Lb=lf(Nb|0,Mb|0,c[Lb>>2]|0,c[Lb+4>>2]|0)|0;Mb=C;Nb=lf(Mb>>31>>>7|0,0,Lb|0,Mb|0)|0;Nb=mf(Nb|0,C|0,25)|0;Ob=C;Pb=pf(Nb|0,Ob|0,25)|0;Pb=kf(Lb|0,Mb|0,Pb|0,C|0)|0;c[Qb>>2]=Pb;c[Qb+4>>2]=C;k=k+2|0;Qb=wb+(k<<3)|0;Pb=Qb;j=lf(Nb|0,Ob|0,c[Pb>>2]|0,c[Pb+4>>2]|0)|0;h=C;c[Qb>>2]=j;c[Qb+4>>2]=h}while(k>>>0<10);o=ya;n=c[o>>2]|0;o=c[o+4>>2]|0;h=wb;p=c[h>>2]|0;h=c[h+4>>2]|0;j=vf(n|0,o|0,18,0)|0;k=C;o=lf(p|0,h|0,n|0,o|0)|0;k=lf(o|0,C|0,j|0,k|0)|0;j=C;o=ya;c[o>>2]=0;c[o+4>>2]=0;o=lf(j>>31>>>6|0,0,k|0,j|0)|0;o=mf(o|0,C|0,26)|0;n=C;h=pf(o|0,n|0,26)|0;h=kf(k|0,j|0,h|0,C|0)|0;j=C;k=wb;c[k>>2]=h;c[k+4>>2]=j;k=xa;k=lf(o|0,n|0,c[k>>2]|0,c[k+4>>2]|0)|0;n=C;o=xa;c[o>>2]=k;c[o+4>>2]=n;o=za;p=c[o>>2]|0;o=c[o+4>>2]|0;q=Aa;Qb=c[q>>2]|0;q=c[q+4>>2]|0;Pb=vf(p|0,o|0,18,0)|0;Ob=C;o=lf(Qb|0,q|0,p|0,o|0)|0;Ob=lf(o|0,C|0,Pb|0,Ob|0)|0;Pb=Aa;c[Pb>>2]=Ob;c[Pb+4>>2]=C;Pb=Ba;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;o=Ca;p=c[o>>2]|0;o=c[o+4>>2]|0;q=vf(Ob|0,Pb|0,18,0)|0;Qb=C;Pb=lf(p|0,o|0,Ob|0,Pb|0)|0;Qb=lf(Pb|0,C|0,q|0,Qb|0)|0;q=Ca;c[q>>2]=Qb;c[q+4>>2]=C;q=Da;Qb=c[q>>2]|0;q=c[q+4>>2]|0;Pb=Ea;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;o=vf(Qb|0,q|0,18,0)|0;p=C;q=lf(Ob|0,Pb|0,Qb|0,q|0)|0;p=lf(q|0,C|0,o|0,p|0)|0;o=Ea;c[o>>2]=p;c[o+4>>2]=C;o=Fa;p=c[o>>2]|0;o=c[o+4>>2]|0;q=Ga;Qb=c[q>>2]|0;q=c[q+4>>2]|0;Pb=vf(p|0,o|0,18,0)|0;Ob=C;o=lf(Qb|0,q|0,p|0,o|0)|0;Ob=lf(o|0,C|0,Pb|0,Ob|0)|0;Pb=Ga;c[Pb>>2]=Ob;c[Pb+4>>2]=C;Pb=Ha;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;o=Ia;p=c[o>>2]|0;o=c[o+4>>2]|0;q=vf(Ob|0,Pb|0,18,0)|0;Qb=C;Pb=lf(p|0,o|0,Ob|0,Pb|0)|0;Qb=lf(Pb|0,C|0,q|0,Qb|0)|0;q=Ia;c[q>>2]=Qb;c[q+4>>2]=C;q=Ja;Qb=c[q>>2]|0;q=c[q+4>>2]|0;Pb=Ka;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;o=vf(Qb|0,q|0,18,0)|0;p=C;q=lf(Ob|0,Pb|0,Qb|0,q|0)|0;p=lf(q|0,C|0,o|0,p|0)|0;o=Ka;c[o>>2]=p;c[o+4>>2]=C;o=La;p=c[o>>2]|0;o=c[o+4>>2]|0;q=Ma;Qb=c[q>>2]|0;q=c[q+4>>2]|0;Pb=vf(p|0,o|0,18,0)|0;Ob=C;o=lf(Qb|0,q|0,p|0,o|0)|0;Ob=lf(o|0,C|0,Pb|0,Ob|0)|0;Pb=Ma;c[Pb>>2]=Ob;c[Pb+4>>2]=C;Pb=Na;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;o=Oa;p=c[o>>2]|0;o=c[o+4>>2]|0;q=vf(Ob|0,Pb|0,18,0)|0;Qb=C;Pb=lf(p|0,o|0,Ob|0,Pb|0)|0;Qb=lf(Pb|0,C|0,q|0,Qb|0)|0;q=Oa;c[q>>2]=Qb;c[q+4>>2]=C;q=Pa;Qb=c[q>>2]|0;q=c[q+4>>2]|0;Pb=ub;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;o=vf(Qb|0,q|0,18,0)|0;p=C;q=lf(Ob|0,Pb|0,Qb|0,q|0)|0;p=lf(q|0,C|0,o|0,p|0)|0;o=C;q=ub;c[q>>2]=p;c[q+4>>2]=o;q=Pa;c[q>>2]=0;c[q+4>>2]=0;q=0;do{Nb=lf(o>>31>>>6|0,0,p|0,o|0)|0;Nb=mf(Nb|0,C|0,26)|0;Mb=C;Lb=pf(Nb|0,Mb|0,26)|0;Lb=kf(p|0,o|0,Lb|0,C|0)|0;Qb=ub+(q<<3)|0;c[Qb>>2]=Lb;c[Qb+4>>2]=C;Qb=ub+((q|1)<<3)|0;Lb=Qb;Lb=lf(Nb|0,Mb|0,c[Lb>>2]|0,c[Lb+4>>2]|0)|0;Mb=C;Nb=lf(Mb>>31>>>7|0,0,Lb|0,Mb|0)|0;Nb=mf(Nb|0,C|0,25)|0;Ob=C;Pb=pf(Nb|0,Ob|0,25)|0;Pb=kf(Lb|0,Mb|0,Pb|0,C|0)|0;c[Qb>>2]=Pb;c[Qb+4>>2]=C;q=q+2|0;Qb=ub+(q<<3)|0;Pb=Qb;p=lf(Nb|0,Ob|0,c[Pb>>2]|0,c[Pb+4>>2]|0)|0;o=C;c[Qb>>2]=p;c[Qb+4>>2]=o}while(q>>>0<10);F=Pa;D=c[F>>2]|0;F=c[F+4>>2]|0;z=ub;E=c[z>>2]|0;z=c[z+4>>2]|0;A=vf(D|0,F|0,18,0)|0;B=C;F=lf(E|0,z|0,D|0,F|0)|0;B=lf(F|0,C|0,A|0,B|0)|0;A=C;F=Pa;c[F>>2]=0;c[F+4>>2]=0;F=lf(A>>31>>>6|0,0,B|0,A|0)|0;F=mf(F|0,C|0,26)|0;D=C;z=pf(F|0,D|0,26)|0;z=kf(B|0,A|0,z|0,C|0)|0;A=C;B=Oa;B=lf(F|0,D|0,c[B>>2]|0,c[B+4>>2]|0)|0;D=C;F=va;E=c[F>>2]|0;F=c[F+4>>2]|0;J=ta;I=c[J>>2]|0;J=c[J+4>>2]|0;N=ra;M=c[N>>2]|0;N=c[N+4>>2]|0;R=pa;Q=c[R>>2]|0;R=c[R+4>>2]|0;V=na;U=c[V>>2]|0;V=c[V+4>>2]|0;Z=la;Y=c[Z>>2]|0;Z=c[Z+4>>2]|0;Kb=ja;Jb=c[Kb>>2]|0;Kb=c[Kb+4>>2]|0;Ob=Qa;Nb=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;H=lf(z|0,A|0,h|0,j|0)|0;G=wb;c[G>>2]=H;c[G+4>>2]=C;G=lf(B|0,D|0,k|0,n|0)|0;H=xa;c[H>>2]=G;c[H+4>>2]=C;H=Ma;G=c[H>>2]|0;H=c[H+4>>2]|0;K=lf(G|0,H|0,E|0,F|0)|0;L=va;c[L>>2]=K;c[L+4>>2]=C;L=Ka;K=c[L>>2]|0;L=c[L+4>>2]|0;O=lf(K|0,L|0,I|0,J|0)|0;P=ta;c[P>>2]=O;c[P+4>>2]=C;P=Ia;O=c[P>>2]|0;P=c[P+4>>2]|0;S=lf(O|0,P|0,M|0,N|0)|0;T=ra;c[T>>2]=S;c[T+4>>2]=C;T=Ga;S=c[T>>2]|0;T=c[T+4>>2]|0;W=lf(S|0,T|0,Q|0,R|0)|0;X=pa;c[X>>2]=W;c[X+4>>2]=C;X=Ea;W=c[X>>2]|0;X=c[X+4>>2]|0;$=lf(W|0,X|0,U|0,V|0)|0;Ib=na;c[Ib>>2]=$;c[Ib+4>>2]=C;Ib=Ca;$=c[Ib>>2]|0;Ib=c[Ib+4>>2]|0;Lb=lf($|0,Ib|0,Y|0,Z|0)|0;Mb=la;c[Mb>>2]=Lb;c[Mb+4>>2]=C;Mb=Aa;Lb=c[Mb>>2]|0;Mb=c[Mb+4>>2]|0;Pb=lf(Lb|0,Mb|0,Jb|0,Kb|0)|0;Qb=ja;c[Qb>>2]=Pb;c[Qb+4>>2]=C;Qb=Ra;Pb=c[Qb>>2]|0;Qb=c[Qb+4>>2]|0;x=lf(Pb|0,Qb|0,Nb|0,Ob|0)|0;y=Qa;c[y>>2]=x;c[y+4>>2]=C;h=kf(h|0,j|0,z|0,A|0)|0;j=ub;c[j>>2]=h;c[j+4>>2]=C;j=kf(k|0,n|0,B|0,D|0)|0;h=Oa;c[h>>2]=j;c[h+4>>2]=C;h=kf(E|0,F|0,G|0,H|0)|0;j=Ma;c[j>>2]=h;c[j+4>>2]=C;j=kf(I|0,J|0,K|0,L|0)|0;h=Ka;c[h>>2]=j;c[h+4>>2]=C;h=kf(M|0,N|0,O|0,P|0)|0;j=Ia;c[j>>2]=h;c[j+4>>2]=C;j=kf(Q|0,R|0,S|0,T|0)|0;h=Ga;c[h>>2]=j;c[h+4>>2]=C;h=kf(U|0,V|0,W|0,X|0)|0;j=Ea;c[j>>2]=h;c[j+4>>2]=C;j=kf(Y|0,Z|0,$|0,Ib|0)|0;h=Ca;c[h>>2]=j;c[h+4>>2]=C;h=kf(Jb|0,Kb|0,Lb|0,Mb|0)|0;j=Aa;c[j>>2]=h;c[j+4>>2]=C;j=kf(Nb|0,Ob|0,Pb|0,Qb|0)|0;h=Ra;c[h>>2]=j;c[h+4>>2]=C;cf(Db,wb);cf(vb,ub);bf(ub,vb,sb);h=za;j=c[h>>2]|0;h=c[h+4>>2]|0;k=Aa;Qb=c[k>>2]|0;k=c[k+4>>2]|0;Pb=vf(j|0,h|0,18,0)|0;Ob=C;h=lf(Qb|0,k|0,j|0,h|0)|0;Ob=lf(h|0,C|0,Pb|0,Ob|0)|0;Pb=Aa;c[Pb>>2]=Ob;c[Pb+4>>2]=C;Pb=Ba;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;h=Ca;j=c[h>>2]|0;h=c[h+4>>2]|0;k=vf(Ob|0,Pb|0,18,0)|0;Qb=C;Pb=lf(j|0,h|0,Ob|0,Pb|0)|0;Qb=lf(Pb|0,C|0,k|0,Qb|0)|0;k=Ca;c[k>>2]=Qb;c[k+4>>2]=C;k=Da;Qb=c[k>>2]|0;k=c[k+4>>2]|0;Pb=Ea;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;h=vf(Qb|0,k|0,18,0)|0;j=C;k=lf(Ob|0,Pb|0,Qb|0,k|0)|0;j=lf(k|0,C|0,h|0,j|0)|0;h=Ea;c[h>>2]=j;c[h+4>>2]=C;h=Fa;j=c[h>>2]|0;h=c[h+4>>2]|0;k=Ga;Qb=c[k>>2]|0;k=c[k+4>>2]|0;Pb=vf(j|0,h|0,18,0)|0;Ob=C;h=lf(Qb|0,k|0,j|0,h|0)|0;Ob=lf(h|0,C|0,Pb|0,Ob|0)|0;Pb=Ga;c[Pb>>2]=Ob;c[Pb+4>>2]=C;Pb=Ha;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;h=Ia;j=c[h>>2]|0;h=c[h+4>>2]|0;k=vf(Ob|0,Pb|0,18,0)|0;Qb=C;Pb=lf(j|0,h|0,Ob|0,Pb|0)|0;Qb=lf(Pb|0,C|0,k|0,Qb|0)|0;k=Ia;c[k>>2]=Qb;c[k+4>>2]=C;k=Ja;Qb=c[k>>2]|0;k=c[k+4>>2]|0;Pb=Ka;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;h=vf(Qb|0,k|0,18,0)|0;j=C;k=lf(Ob|0,Pb|0,Qb|0,k|0)|0;j=lf(k|0,C|0,h|0,j|0)|0;h=Ka;c[h>>2]=j;c[h+4>>2]=C;h=La;j=c[h>>2]|0;h=c[h+4>>2]|0;k=Ma;Qb=c[k>>2]|0;k=c[k+4>>2]|0;Pb=vf(j|0,h|0,18,0)|0;Ob=C;h=lf(Qb|0,k|0,j|0,h|0)|0;Ob=lf(h|0,C|0,Pb|0,Ob|0)|0;Pb=Ma;c[Pb>>2]=Ob;c[Pb+4>>2]=C;Pb=Na;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;h=Oa;j=c[h>>2]|0;h=c[h+4>>2]|0;k=vf(Ob|0,Pb|0,18,0)|0;Qb=C;Pb=lf(j|0,h|0,Ob|0,Pb|0)|0;Qb=lf(Pb|0,C|0,k|0,Qb|0)|0;k=Oa;c[k>>2]=Qb;c[k+4>>2]=C;k=Pa;Qb=c[k>>2]|0;k=c[k+4>>2]|0;Pb=ub;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;h=vf(Qb|0,k|0,18,0)|0;j=C;k=lf(Ob|0,Pb|0,Qb|0,k|0)|0;j=lf(k|0,C|0,h|0,j|0)|0;h=C;k=ub;c[k>>2]=j;c[k+4>>2]=h;k=Pa;c[k>>2]=0;c[k+4>>2]=0;k=0;do{Nb=lf(h>>31>>>6|0,0,j|0,h|0)|0;Nb=mf(Nb|0,C|0,26)|0;Mb=C;Lb=pf(Nb|0,Mb|0,26)|0;Lb=kf(j|0,h|0,Lb|0,C|0)|0;Qb=ub+(k<<3)|0;c[Qb>>2]=Lb;c[Qb+4>>2]=C;Qb=ub+((k|1)<<3)|0;Lb=Qb;Lb=lf(Nb|0,Mb|0,c[Lb>>2]|0,c[Lb+4>>2]|0)|0;Mb=C;Nb=lf(Mb>>31>>>7|0,0,Lb|0,Mb|0)|0;Nb=mf(Nb|0,C|0,25)|0;Ob=C;Pb=pf(Nb|0,Ob|0,25)|0;Pb=kf(Lb|0,Mb|0,Pb|0,C|0)|0;c[Qb>>2]=Pb;c[Qb+4>>2]=C;k=k+2|0;Qb=ub+(k<<3)|0;Pb=Qb;j=lf(Nb|0,Ob|0,c[Pb>>2]|0,c[Pb+4>>2]|0)|0;h=C;c[Qb>>2]=j;c[Qb+4>>2]=h}while(k>>>0<10);Z=Pa;$=c[Z>>2]|0;Z=c[Z+4>>2]|0;Qb=ub;Ob=c[Qb>>2]|0;Qb=c[Qb+4>>2]|0;o=vf($|0,Z|0,18,0)|0;Pb=C;Z=lf(Ob|0,Qb|0,$|0,Z|0)|0;Pb=lf(Z|0,C|0,o|0,Pb|0)|0;o=C;Z=Pa;c[Z>>2]=0;c[Z+4>>2]=0;Z=lf(o>>31>>>6|0,0,Pb|0,o|0)|0;Z=mf(Z|0,C|0,26)|0;$=C;Qb=pf(Z|0,$|0,26)|0;Qb=kf(Pb|0,o|0,Qb|0,C|0)|0;o=ub;c[o>>2]=Qb;c[o+4>>2]=C;o=Oa;o=lf(Z|0,$|0,c[o>>2]|0,c[o+4>>2]|0)|0;$=Oa;c[$>>2]=o;c[$+4>>2]=C;$=da;o=Db;Z=$+80|0;do{c[$>>2]=c[o>>2];$=$+4|0;o=o+4|0}while(($|0)<(Z|0));$=ea;o=ub;Z=$+80|0;do{c[$>>2]=c[o>>2];$=$+4|0;o=o+4|0}while(($|0)<(Z|0));cf(xb,e);cf(Cb,g);bf(fa,xb,Cb);h=fa+144|0;k=c[h>>2]|0;h=c[h+4>>2]|0;j=fa+64|0;Qb=j;o=c[Qb>>2]|0;Qb=c[Qb+4>>2]|0;Ob=vf(k|0,h|0,18,0)|0;Pb=C;h=lf(o|0,Qb|0,k|0,h|0)|0;Pb=lf(h|0,C|0,Ob|0,Pb|0)|0;c[j>>2]=Pb;c[j+4>>2]=C;j=fa+136|0;Pb=c[j>>2]|0;j=c[j+4>>2]|0;Ob=fa+56|0;h=Ob;k=c[h>>2]|0;h=c[h+4>>2]|0;Qb=vf(Pb|0,j|0,18,0)|0;o=C;j=lf(k|0,h|0,Pb|0,j|0)|0;o=lf(j|0,C|0,Qb|0,o|0)|0;c[Ob>>2]=o;c[Ob+4>>2]=C;Ob=fa+128|0;o=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;Qb=fa+48|0;j=Qb;Pb=c[j>>2]|0;j=c[j+4>>2]|0;h=vf(o|0,Ob|0,18,0)|0;k=C;Ob=lf(Pb|0,j|0,o|0,Ob|0)|0;k=lf(Ob|0,C|0,h|0,k|0)|0;c[Qb>>2]=k;c[Qb+4>>2]=C;Qb=fa+120|0;k=c[Qb>>2]|0;Qb=c[Qb+4>>2]|0;h=fa+40|0;Ob=h;o=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;j=vf(k|0,Qb|0,18,0)|0;Pb=C;Qb=lf(o|0,Ob|0,k|0,Qb|0)|0;Pb=lf(Qb|0,C|0,j|0,Pb|0)|0;c[h>>2]=Pb;c[h+4>>2]=C;h=fa+112|0;Pb=c[h>>2]|0;h=c[h+4>>2]|0;j=fa+32|0;Qb=j;k=c[Qb>>2]|0;Qb=c[Qb+4>>2]|0;Ob=vf(Pb|0,h|0,18,0)|0;o=C;h=lf(k|0,Qb|0,Pb|0,h|0)|0;o=lf(h|0,C|0,Ob|0,o|0)|0;c[j>>2]=o;c[j+4>>2]=C;j=fa+104|0;o=c[j>>2]|0;j=c[j+4>>2]|0;Ob=fa+24|0;h=Ob;Pb=c[h>>2]|0;h=c[h+4>>2]|0;Qb=vf(o|0,j|0,18,0)|0;k=C;j=lf(Pb|0,h|0,o|0,j|0)|0;k=lf(j|0,C|0,Qb|0,k|0)|0;c[Ob>>2]=k;c[Ob+4>>2]=C;Ob=fa+96|0;k=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;Qb=fa+16|0;j=Qb;o=c[j>>2]|0;j=c[j+4>>2]|0;h=vf(k|0,Ob|0,18,0)|0;Pb=C;Ob=lf(o|0,j|0,k|0,Ob|0)|0;Pb=lf(Ob|0,C|0,h|0,Pb|0)|0;c[Qb>>2]=Pb;c[Qb+4>>2]=C;Qb=fa+88|0;Pb=c[Qb>>2]|0;Qb=c[Qb+4>>2]|0;h=fa+8|0;Ob=h;k=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;j=vf(Pb|0,Qb|0,18,0)|0;o=C;Qb=lf(k|0,Ob|0,Pb|0,Qb|0)|0;o=lf(Qb|0,C|0,j|0,o|0)|0;j=h;c[j>>2]=o;c[j+4>>2]=C;j=fa+80|0;o=j;Qb=c[o>>2]|0;o=c[o+4>>2]|0;Pb=fa;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;k=vf(Qb|0,o|0,18,0)|0;n=C;o=lf(Ob|0,Pb|0,Qb|0,o|0)|0;n=lf(o|0,C|0,k|0,n|0)|0;k=C;o=fa;c[o>>2]=n;c[o+4>>2]=k;o=j;c[o>>2]=0;c[o+4>>2]=0;o=0;do{Nb=lf(k>>31>>>6|0,0,n|0,k|0)|0;Nb=mf(Nb|0,C|0,26)|0;Mb=C;Lb=pf(Nb|0,Mb|0,26)|0;Lb=kf(n|0,k|0,Lb|0,C|0)|0;Qb=fa+(o<<3)|0;c[Qb>>2]=Lb;c[Qb+4>>2]=C;Qb=fa+((o|1)<<3)|0;Lb=Qb;Lb=lf(Nb|0,Mb|0,c[Lb>>2]|0,c[Lb+4>>2]|0)|0;Mb=C;Nb=lf(Mb>>31>>>7|0,0,Lb|0,Mb|0)|0;Nb=mf(Nb|0,C|0,25)|0;Ob=C;Pb=pf(Nb|0,Ob|0,25)|0;Pb=kf(Lb|0,Mb|0,Pb|0,C|0)|0;c[Qb>>2]=Pb;c[Qb+4>>2]=C;o=o+2|0;Qb=fa+(o<<3)|0;Pb=Qb;n=lf(Nb|0,Ob|0,c[Pb>>2]|0,c[Pb+4>>2]|0)|0;k=C;c[Qb>>2]=n;c[Qb+4>>2]=k}while(o>>>0<10);G=j;I=c[G>>2]|0;G=c[G+4>>2]|0;k=fa;n=c[k>>2]|0;k=c[k+4>>2]|0;F=vf(I|0,G|0,18,0)|0;H=C;G=lf(n|0,k|0,I|0,G|0)|0;H=lf(G|0,C|0,F|0,H|0)|0;F=C;c[j>>2]=0;c[j+4>>2]=0;j=lf(F>>31>>>6|0,0,H|0,F|0)|0;j=mf(j|0,C|0,26)|0;G=C;I=pf(j|0,G|0,26)|0;I=kf(H|0,F|0,I|0,C|0)|0;F=fa;c[F>>2]=I;c[F+4>>2]=C;F=h;F=lf(j|0,G|0,c[F>>2]|0,c[F+4>>2]|0)|0;G=h;c[G>>2]=F;c[G+4>>2]=C;G=xb;F=c[G>>2]|0;G=c[G+4>>2]|0;h=Cb;h=kf(F|0,G|0,c[h>>2]|0,c[h+4>>2]|0)|0;j=C;I=Cb;c[I>>2]=h;c[I+4>>2]=j;I=Sa;H=c[I>>2]|0;I=c[I+4>>2]|0;k=Ta;k=kf(H|0,I|0,c[k>>2]|0,c[k+4>>2]|0)|0;n=C;K=Ta;c[K>>2]=k;c[K+4>>2]=n;K=Ua;J=c[K>>2]|0;K=c[K+4>>2]|0;o=Va;o=kf(J|0,K|0,c[o>>2]|0,c[o+4>>2]|0)|0;p=C;M=Va;c[M>>2]=o;c[M+4>>2]=p;M=Wa;L=c[M>>2]|0;M=c[M+4>>2]|0;q=Xa;q=kf(L|0,M|0,c[q>>2]|0,c[q+4>>2]|0)|0;r=C;O=Xa;c[O>>2]=q;c[O+4>>2]=r;O=Ya;N=c[O>>2]|0;O=c[O+4>>2]|0;s=Za;s=kf(N|0,O|0,c[s>>2]|0,c[s+4>>2]|0)|0;t=C;Q=Za;c[Q>>2]=s;c[Q+4>>2]=t;Q=_a;P=c[Q>>2]|0;Q=c[Q+4>>2]|0;u=$a;u=kf(P|0,Q|0,c[u>>2]|0,c[u+4>>2]|0)|0;v=C;S=$a;c[S>>2]=u;c[S+4>>2]=v;S=ab;R=c[S>>2]|0;S=c[S+4>>2]|0;w=bb;w=kf(R|0,S|0,c[w>>2]|0,c[w+4>>2]|0)|0;x=C;U=bb;c[U>>2]=w;c[U+4>>2]=x;U=cb;T=c[U>>2]|0;U=c[U+4>>2]|0;y=db;y=kf(T|0,U|0,c[y>>2]|0,c[y+4>>2]|0)|0;z=C;W=db;c[W>>2]=y;c[W+4>>2]=z;W=eb;V=c[W>>2]|0;W=c[W+4>>2]|0;A=fb;A=kf(V|0,W|0,c[A>>2]|0,c[A+4>>2]|0)|0;B=C;Y=fb;c[Y>>2]=A;c[Y+4>>2]=B;Y=gb;X=c[Y>>2]|0;Y=c[Y+4>>2]|0;D=hb;D=kf(X|0,Y|0,c[D>>2]|0,c[D+4>>2]|0)|0;E=C;$=hb;c[$>>2]=D;c[$+4>>2]=E;$=ib;Z=$+72|0;do{c[$>>2]=0;$=$+4|0}while(($|0)<(Z|0));j=vf(h|0,j|0,121665,0)|0;h=C;Qb=Gb;c[Qb>>2]=j;c[Qb+4>>2]=h;Qb=vf(k|0,n|0,121665,0)|0;k=jb;c[k>>2]=Qb;c[k+4>>2]=C;k=vf(o|0,p|0,121665,0)|0;Qb=kb;c[Qb>>2]=k;c[Qb+4>>2]=C;Qb=vf(q|0,r|0,121665,0)|0;k=lb;c[k>>2]=Qb;c[k+4>>2]=C;k=vf(s|0,t|0,121665,0)|0;Qb=mb;c[Qb>>2]=k;c[Qb+4>>2]=C;Qb=vf(u|0,v|0,121665,0)|0;k=nb;c[k>>2]=Qb;c[k+4>>2]=C;k=vf(w|0,x|0,121665,0)|0;Qb=ob;c[Qb>>2]=k;c[Qb+4>>2]=C;Qb=vf(y|0,z|0,121665,0)|0;k=pb;c[k>>2]=Qb;c[k+4>>2]=C;k=vf(A|0,B|0,121665,0)|0;Qb=qb;c[Qb>>2]=k;c[Qb+4>>2]=C;Qb=vf(D|0,E|0,121665,0)|0;k=rb;c[k>>2]=Qb;c[k+4>>2]=C;k=ib;c[k>>2]=0;c[k+4>>2]=0;k=0;do{Nb=lf(h>>31>>>6|0,0,j|0,h|0)|0;Nb=mf(Nb|0,C|0,26)|0;Mb=C;Lb=pf(Nb|0,Mb|0,26)|0;Lb=kf(j|0,h|0,Lb|0,C|0)|0;Qb=Gb+(k<<3)|0;c[Qb>>2]=Lb;c[Qb+4>>2]=C;Qb=Gb+((k|1)<<3)|0;Lb=Qb;Lb=lf(Nb|0,Mb|0,c[Lb>>2]|0,c[Lb+4>>2]|0)|0;Mb=C;Nb=lf(Mb>>31>>>7|0,0,Lb|0,Mb|0)|0;Nb=mf(Nb|0,C|0,25)|0;Ob=C;Pb=pf(Nb|0,Ob|0,25)|0;Pb=kf(Lb|0,Mb|0,Pb|0,C|0)|0;c[Qb>>2]=Pb;c[Qb+4>>2]=C;k=k+2|0;Qb=Gb+(k<<3)|0;Pb=Qb;j=lf(Nb|0,Ob|0,c[Pb>>2]|0,c[Pb+4>>2]|0)|0;h=C;c[Qb>>2]=j;c[Qb+4>>2]=h}while(k>>>0<10);h=ib;k=c[h>>2]|0;h=c[h+4>>2]|0;o=Gb;Ob=c[o>>2]|0;o=c[o+4>>2]|0;Pb=vf(k|0,h|0,18,0)|0;n=C;h=lf(Ob|0,o|0,k|0,h|0)|0;n=lf(h|0,C|0,Pb|0,n|0)|0;Pb=C;h=ib;c[h>>2]=0;c[h+4>>2]=0;h=lf(Pb>>31>>>6|0,0,n|0,Pb|0)|0;h=mf(h|0,C|0,26)|0;k=C;o=pf(h|0,k|0,26)|0;Ob=C;j=jb;Qb=c[j>>2]|0;j=c[j+4>>2]|0;Pb=lf(n|0,Pb|0,F|0,G|0)|0;Ob=kf(Pb|0,C|0,o|0,Ob|0)|0;o=Gb;c[o>>2]=Ob;c[o+4>>2]=C;j=lf(Qb|0,j|0,H|0,I|0)|0;k=lf(j|0,C|0,h|0,k|0)|0;h=jb;c[h>>2]=k;c[h+4>>2]=C;h=kb;h=lf(c[h>>2]|0,c[h+4>>2]|0,J|0,K|0)|0;k=kb;c[k>>2]=h;c[k+4>>2]=C;k=lb;k=lf(c[k>>2]|0,c[k+4>>2]|0,L|0,M|0)|0;h=lb;c[h>>2]=k;c[h+4>>2]=C;h=mb;h=lf(c[h>>2]|0,c[h+4>>2]|0,N|0,O|0)|0;k=mb;c[k>>2]=h;c[k+4>>2]=C;k=nb;k=lf(c[k>>2]|0,c[k+4>>2]|0,P|0,Q|0)|0;h=nb;c[h>>2]=k;c[h+4>>2]=C;h=ob;h=lf(c[h>>2]|0,c[h+4>>2]|0,R|0,S|0)|0;k=ob;c[k>>2]=h;c[k+4>>2]=C;k=pb;k=lf(c[k>>2]|0,c[k+4>>2]|0,T|0,U|0)|0;h=pb;c[h>>2]=k;c[h+4>>2]=C;h=qb;h=lf(c[h>>2]|0,c[h+4>>2]|0,V|0,W|0)|0;k=qb;c[k>>2]=h;c[k+4>>2]=C;k=rb;k=lf(c[k>>2]|0,c[k+4>>2]|0,X|0,Y|0)|0;h=rb;c[h>>2]=k;c[h+4>>2]=C;bf(ga,Cb,Gb);h=ga+144|0;k=c[h>>2]|0;h=c[h+4>>2]|0;j=ga+64|0;Qb=j;o=c[Qb>>2]|0;Qb=c[Qb+4>>2]|0;Ob=vf(k|0,h|0,18,0)|0;Pb=C;h=lf(o|0,Qb|0,k|0,h|0)|0;Pb=lf(h|0,C|0,Ob|0,Pb|0)|0;c[j>>2]=Pb;c[j+4>>2]=C;j=ga+136|0;Pb=c[j>>2]|0;j=c[j+4>>2]|0;Ob=ga+56|0;h=Ob;k=c[h>>2]|0;h=c[h+4>>2]|0;Qb=vf(Pb|0,j|0,18,0)|0;o=C;j=lf(k|0,h|0,Pb|0,j|0)|0;o=lf(j|0,C|0,Qb|0,o|0)|0;c[Ob>>2]=o;c[Ob+4>>2]=C;Ob=ga+128|0;o=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;Qb=ga+48|0;j=Qb;Pb=c[j>>2]|0;j=c[j+4>>2]|0;h=vf(o|0,Ob|0,18,0)|0;k=C;Ob=lf(Pb|0,j|0,o|0,Ob|0)|0;k=lf(Ob|0,C|0,h|0,k|0)|0;c[Qb>>2]=k;c[Qb+4>>2]=C;Qb=ga+120|0;k=c[Qb>>2]|0;Qb=c[Qb+4>>2]|0;h=ga+40|0;Ob=h;o=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;j=vf(k|0,Qb|0,18,0)|0;Pb=C;Qb=lf(o|0,Ob|0,k|0,Qb|0)|0;Pb=lf(Qb|0,C|0,j|0,Pb|0)|0;c[h>>2]=Pb;c[h+4>>2]=C;h=ga+112|0;Pb=c[h>>2]|0;h=c[h+4>>2]|0;j=ga+32|0;Qb=j;k=c[Qb>>2]|0;Qb=c[Qb+4>>2]|0;Ob=vf(Pb|0,h|0,18,0)|0;o=C;h=lf(k|0,Qb|0,Pb|0,h|0)|0;o=lf(h|0,C|0,Ob|0,o|0)|0;c[j>>2]=o;c[j+4>>2]=C;j=ga+104|0;o=c[j>>2]|0;j=c[j+4>>2]|0;Ob=ga+24|0;h=Ob;Pb=c[h>>2]|0;h=c[h+4>>2]|0;Qb=vf(o|0,j|0,18,0)|0;k=C;j=lf(Pb|0,h|0,o|0,j|0)|0;k=lf(j|0,C|0,Qb|0,k|0)|0;c[Ob>>2]=k;c[Ob+4>>2]=C;Ob=ga+96|0;k=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;Qb=ga+16|0;j=Qb;o=c[j>>2]|0;j=c[j+4>>2]|0;h=vf(k|0,Ob|0,18,0)|0;Pb=C;Ob=lf(o|0,j|0,k|0,Ob|0)|0;Pb=lf(Ob|0,C|0,h|0,Pb|0)|0;c[Qb>>2]=Pb;c[Qb+4>>2]=C;Qb=ga+88|0;Pb=c[Qb>>2]|0;Qb=c[Qb+4>>2]|0;h=ga+8|0;Ob=h;k=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;j=vf(Pb|0,Qb|0,18,0)|0;o=C;Qb=lf(k|0,Ob|0,Pb|0,Qb|0)|0;o=lf(Qb|0,C|0,j|0,o|0)|0;j=h;c[j>>2]=o;c[j+4>>2]=C;j=ga+80|0;o=j;Qb=c[o>>2]|0;o=c[o+4>>2]|0;Pb=ga;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;k=vf(Qb|0,o|0,18,0)|0;n=C;o=lf(Ob|0,Pb|0,Qb|0,o|0)|0;n=lf(o|0,C|0,k|0,n|0)|0;k=C;o=ga;c[o>>2]=n;c[o+4>>2]=k;o=j;c[o>>2]=0;c[o+4>>2]=0;o=0;do{Nb=lf(k>>31>>>6|0,0,n|0,k|0)|0;Nb=mf(Nb|0,C|0,26)|0;Mb=C;Lb=pf(Nb|0,Mb|0,26)|0;Lb=kf(n|0,k|0,Lb|0,C|0)|0;Qb=ga+(o<<3)|0;c[Qb>>2]=Lb;c[Qb+4>>2]=C;Qb=ga+((o|1)<<3)|0;Lb=Qb;Lb=lf(Nb|0,Mb|0,c[Lb>>2]|0,c[Lb+4>>2]|0)|0;Mb=C;Nb=lf(Mb>>31>>>7|0,0,Lb|0,Mb|0)|0;Nb=mf(Nb|0,C|0,25)|0;Ob=C;Pb=pf(Nb|0,Ob|0,25)|0;Pb=kf(Lb|0,Mb|0,Pb|0,C|0)|0;c[Qb>>2]=Pb;c[Qb+4>>2]=C;o=o+2|0;Qb=ga+(o<<3)|0;Pb=Qb;n=lf(Nb|0,Ob|0,c[Pb>>2]|0,c[Pb+4>>2]|0)|0;k=C;c[Qb>>2]=n;c[Qb+4>>2]=k}while(o>>>0<10);Ob=j;Pb=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;Nb=ga;Lb=c[Nb>>2]|0;Nb=c[Nb+4>>2]|0;Qb=vf(Pb|0,Ob|0,18,0)|0;Mb=C;Ob=lf(Lb|0,Nb|0,Pb|0,Ob|0)|0;Mb=lf(Ob|0,C|0,Qb|0,Mb|0)|0;Qb=C;Ob=j;c[Ob>>2]=0;c[Ob+4>>2]=0;Ob=lf(Qb>>31>>>6|0,0,Mb|0,Qb|0)|0;Ob=mf(Ob|0,C|0,26)|0;Pb=C;Nb=pf(Ob|0,Pb|0,26)|0;Nb=kf(Mb|0,Qb|0,Nb|0,C|0)|0;Qb=ga;c[Qb>>2]=Nb;c[Qb+4>>2]=C;Qb=h;Qb=lf(Ob|0,Pb|0,c[Qb>>2]|0,c[Qb+4>>2]|0)|0;c[h>>2]=Qb;c[h+4>>2]=C;h=0;do{Lb=fa+(h<<3)|0;Jb=Lb;Kb=c[Jb>>2]|0;Jb=c[Jb+4>>2]|0;Qb=da+(h<<3)|0;Nb=Qb;Pb=c[Nb>>2]|0;Nb=c[Nb+4>>2]|0;Ob=(Pb^Kb)&ba;Mb=(Nb^Jb)&ca;Kb=mf(0,Ob^Kb|0,32)|0;c[Lb>>2]=Kb;c[Lb+4>>2]=C;Pb=mf(0,Ob^Pb|0,32)|0;c[Qb>>2]=Pb;c[Qb+4>>2]=C;h=h+1|0}while((h|0)!=10);h=0;do{Lb=ga+(h<<3)|0;Jb=Lb;Kb=c[Jb>>2]|0;Jb=c[Jb+4>>2]|0;Qb=ea+(h<<3)|0;Nb=Qb;Pb=c[Nb>>2]|0;Nb=c[Nb+4>>2]|0;Ob=(Pb^Kb)&ba;Mb=(Nb^Jb)&ca;Kb=mf(0,Ob^Kb|0,32)|0;c[Lb>>2]=Kb;c[Lb+4>>2]=C;Pb=mf(0,Ob^Pb|0,32)|0;c[Qb>>2]=Pb;c[Qb+4>>2]=C;h=h+1|0}while((h|0)!=10);ha=ha+1|0;if((ha|0)==8){h=l;l=da;j=m;m=ea;k=e;e=fa;n=g;g=ga;break}else{Nb=ga;Ob=fa;Pb=ea;Qb=da;o=aa<<1&255;ga=g;g=Nb;fa=e;e=Ob;ea=m;m=Pb;da=l;l=Qb}}f=f+1|0}while((f|0)!=32);$=Bb;o=e;Z=$+80|0;do{c[$>>2]=c[o>>2];$=$+4|0;o=o+4|0}while(($|0)<(Z|0));$=Fb;o=g;Z=$+80|0;do{c[$>>2]=c[o>>2];$=$+4|0;o=o+4|0}while(($|0)<(Z|0));cf(Gb,Fb);cf(Ab,Gb);cf(zb,Ab);df(xb,zb,Fb);df(Cb,xb,Gb);cf(zb,Cb);df(wb,zb,xb);cf(zb,wb);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);df(ub,zb,wb);cf(zb,ub);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);df(vb,Ab,ub);cf(zb,vb);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);df(zb,Ab,vb);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);df(Db,zb,ub);cf(zb,Db);cf(Ab,zb);e=2;do{cf(zb,Ab);cf(Ab,zb);e=e+2|0}while((e|0)<50);df(yb,Ab,Db);cf(Ab,yb);cf(zb,Ab);e=2;do{cf(Ab,zb);cf(zb,Ab);e=e+2|0}while((e|0)<100);df(Ab,zb,yb);cf(zb,Ab);cf(Ab,zb);e=2;do{cf(zb,Ab);cf(Ab,zb);e=e+2|0}while((e|0)<50);df(zb,Ab,Db);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);df(Eb,Ab,Cb);df(Fb,Bb,Eb);e=c[Fb>>2]|0;c[Gb>>2]=e;k=Gb+4|0;c[k>>2]=c[Fb+8>>2];l=Gb+8|0;c[l>>2]=c[Fb+16>>2];m=Gb+12|0;c[m>>2]=c[Fb+24>>2];n=Gb+16|0;c[n>>2]=c[Fb+32>>2];o=Gb+20|0;c[o>>2]=c[Fb+40>>2];p=Gb+24|0;c[p>>2]=c[Fb+48>>2];q=Gb+28|0;c[q>>2]=c[Fb+56>>2];r=Gb+32|0;c[r>>2]=c[Fb+64>>2];s=Gb+36|0;c[s>>2]=c[Fb+72>>2];g=0;do{f=Gb+(g<<2)|0;h=e>>31&e;if(!(g&1)){Pb=h>>26;c[f>>2]=(_(Pb,-67108864)|0)+e;g=g+1|0;Qb=Gb+(g<<2)|0;e=(c[Qb>>2]|0)+Pb|0;c[Qb>>2]=e}else{Pb=h>>25;c[f>>2]=(_(Pb,-33554432)|0)+e;g=g+1|0;Qb=Gb+(g<<2)|0;e=(c[Qb>>2]|0)+Pb|0;c[Qb>>2]=e}}while((g|0)!=9);g=c[s>>2]|0;e=(g>>31&g)>>25;c[s>>2]=(_(e,-33554432)|0)+g;e=(e*19|0)+(c[Gb>>2]|0)|0;c[Gb>>2]=e;g=0;do{f=Gb+(g<<2)|0;h=e>>31&e;if(!(g&1)){Pb=h>>26;c[f>>2]=(_(Pb,-67108864)|0)+e;g=g+1|0;Qb=Gb+(g<<2)|0;e=(c[Qb>>2]|0)+Pb|0;c[Qb>>2]=e}else{Pb=h>>25;c[f>>2]=(_(Pb,-33554432)|0)+e;g=g+1|0;Qb=Gb+(g<<2)|0;e=(c[Qb>>2]|0)+Pb|0;c[Qb>>2]=e}}while((g|0)!=9);g=c[s>>2]|0;e=(g>>31&g)>>25;c[s>>2]=(_(e,-33554432)|0)+g;e=(e*19|0)+(c[Gb>>2]|0)|0;g=(e>>31&e)>>26;e=(_(g,-67108864)|0)+e|0;c[Gb>>2]=e;c[k>>2]=g+(c[k>>2]|0);g=0;do{f=Gb+(g<<2)|0;if(!(g&1)){c[f>>2]=e&67108863;g=g+1|0;Qb=Gb+(g<<2)|0;e=(c[Qb>>2]|0)+(e>>26)|0;c[Qb>>2]=e}else{c[f>>2]=e&33554431;g=g+1|0;Qb=Gb+(g<<2)|0;e=(c[Qb>>2]|0)+(e>>25)|0;c[Qb>>2]=e}}while((g|0)!=9);e=c[s>>2]|0;c[s>>2]=e&33554431;e=(c[Gb>>2]|0)+((e>>25)*19|0)|0;c[Gb>>2]=e;g=0;do{f=Gb+(g<<2)|0;if(!(g&1)){c[f>>2]=e&67108863;g=g+1|0;Qb=Gb+(g<<2)|0;e=(c[Qb>>2]|0)+(e>>26)|0;c[Qb>>2]=e}else{c[f>>2]=e&33554431;g=g+1|0;Qb=Gb+(g<<2)|0;e=(c[Qb>>2]|0)+(e>>25)|0;c[Qb>>2]=e}}while((g|0)!=9);j=c[s>>2]|0;h=j&33554431;c[s>>2]=h;j=(c[Gb>>2]|0)+((j>>25)*19|0)|0;c[Gb>>2]=j;f=1;e=~(j+-67108845>>31);do{g=c[Gb+(f<<2)>>2]|0;if(!(f&1)){g=g<<16&(g^-67108864);g=g<<8&g;g=g<<4&g;g=g<<2&g;g=g<<1&g}else{g=g<<16&(g^-33554432);g=g<<8&g;g=g<<4&g;g=g<<2&g;g=g<<1&g}e=g>>31&e;f=f+1|0}while((f|0)!=10);Db=j-(e&67108845)|0;c[Gb>>2]=Db;Ab=e&67108863;Bb=e&33554431;Fb=(c[k>>2]|0)-Bb|0;Ib=(c[l>>2]|0)-Ab|0;Kb=(c[m>>2]|0)-Bb|0;Lb=(c[n>>2]|0)-Ab|0;Mb=(c[o>>2]|0)-Bb|0;c[o>>2]=Mb;Pb=(c[p>>2]|0)-Ab|0;Qb=(c[q>>2]|0)-Bb|0;Ab=(c[r>>2]|0)-Ab|0;Cb=Fb<<2;c[k>>2]=Cb;Eb=Ib<<3;c[l>>2]=Eb;Gb=Kb<<5;c[m>>2]=Gb;Jb=Lb<<6;c[n>>2]=Jb;Nb=Pb<<1;c[p>>2]=Nb;Ob=Qb<<3;c[q>>2]=Ob;c[r>>2]=Ab<<4;c[s>>2]=h-Bb<<6;a[b>>0]=Db;a[b+1>>0]=Db>>>8;a[b+2>>0]=Db>>>16;a[b+3>>0]=Cb|Db>>>24;a[b+4>>0]=Fb>>>6;a[b+5>>0]=Fb>>>14;a[b+6>>0]=Eb|Fb>>>22;a[b+7>>0]=Ib>>>5;a[b+8>>0]=Ib>>>13;a[b+9>>0]=Gb|Ib>>>21;a[b+10>>0]=Kb>>>3;a[b+11>>0]=Kb>>>11;a[b+12>>0]=Jb|Kb>>>19;a[b+13>>0]=Lb>>>2;a[b+14>>0]=Lb>>>10;a[b+15>>0]=Lb>>>18;a[b+16>>0]=Mb;a[b+17>>0]=Mb>>>8;a[b+18>>0]=Mb>>>16;a[b+19>>0]=Mb>>>24|Nb;a[b+20>>0]=Pb>>>7;a[b+21>>0]=Pb>>>15;a[b+22>>0]=Ob|Pb>>>23;a[b+23>>0]=Qb>>>5;a[b+24>>0]=Qb>>>13;Pb=c[r>>2]|0;a[b+25>>0]=Pb|Qb>>>21;a[b+26>>0]=Pb>>>8;a[b+27>>0]=Pb>>>16;Qb=c[s>>2]|0;a[b+28>>0]=Qb|Pb>>>24;a[b+29>>0]=Qb>>>8;a[b+30>>0]=Qb>>>16;a[b+31>>0]=Qb>>>24;i=Hb;return 0}function bf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;h=mf(0,c[b>>2]|0,32)|0;n=C;w=mf(0,c[d>>2]|0,32)|0;n=vf(w|0,C|0,h|0,n|0)|0;h=a;c[h>>2]=n;c[h+4>>2]=C;h=mf(0,c[b>>2]|0,32)|0;n=C;w=d+8|0;s=mf(0,c[w>>2]|0,32)|0;n=vf(s|0,C|0,h|0,n|0)|0;h=C;s=b+8|0;r=mf(0,c[s>>2]|0,32)|0;p=C;v=mf(0,c[d>>2]|0,32)|0;p=vf(v|0,C|0,r|0,p|0)|0;h=lf(p|0,C|0,n|0,h|0)|0;n=a+8|0;c[n>>2]=h;c[n+4>>2]=C;n=mf(0,c[s>>2]|0,31)|0;h=C;p=mf(0,c[w>>2]|0,32)|0;h=vf(p|0,C|0,n|0,h|0)|0;n=C;p=mf(0,c[b>>2]|0,32)|0;r=C;v=d+16|0;l=mf(0,c[v>>2]|0,32)|0;r=vf(l|0,C|0,p|0,r|0)|0;n=lf(r|0,C|0,h|0,n|0)|0;h=C;r=b+16|0;p=mf(0,c[r>>2]|0,32)|0;l=C;u=mf(0,c[d>>2]|0,32)|0;l=vf(u|0,C|0,p|0,l|0)|0;l=lf(n|0,h|0,l|0,C|0)|0;h=a+16|0;c[h>>2]=l;c[h+4>>2]=C;h=mf(0,c[s>>2]|0,32)|0;l=C;n=mf(0,c[v>>2]|0,32)|0;l=vf(n|0,C|0,h|0,l|0)|0;h=C;n=mf(0,c[r>>2]|0,32)|0;p=C;u=mf(0,c[w>>2]|0,32)|0;p=vf(u|0,C|0,n|0,p|0)|0;h=lf(p|0,C|0,l|0,h|0)|0;l=C;p=mf(0,c[b>>2]|0,32)|0;n=C;u=d+24|0;g=mf(0,c[u>>2]|0,32)|0;n=vf(g|0,C|0,p|0,n|0)|0;n=lf(h|0,l|0,n|0,C|0)|0;l=C;h=b+24|0;p=mf(0,c[h>>2]|0,32)|0;g=C;j=mf(0,c[d>>2]|0,32)|0;g=vf(j|0,C|0,p|0,g|0)|0;g=lf(n|0,l|0,g|0,C|0)|0;l=a+24|0;c[l>>2]=g;c[l+4>>2]=C;l=mf(0,c[r>>2]|0,32)|0;g=C;n=mf(0,c[v>>2]|0,32)|0;g=vf(n|0,C|0,l|0,g|0)|0;l=C;n=mf(0,c[s>>2]|0,32)|0;p=C;j=mf(0,c[u>>2]|0,32)|0;p=vf(j|0,C|0,n|0,p|0)|0;n=C;j=mf(0,c[h>>2]|0,32)|0;q=C;o=mf(0,c[w>>2]|0,32)|0;q=vf(o|0,C|0,j|0,q|0)|0;n=lf(q|0,C|0,p|0,n|0)|0;n=pf(n|0,C|0,1)|0;l=lf(n|0,C|0,g|0,l|0)|0;g=C;n=mf(0,c[b>>2]|0,32)|0;p=C;q=d+32|0;j=mf(0,c[q>>2]|0,32)|0;p=vf(j|0,C|0,n|0,p|0)|0;p=lf(l|0,g|0,p|0,C|0)|0;g=C;l=b+32|0;n=mf(0,c[l>>2]|0,32)|0;j=C;o=mf(0,c[d>>2]|0,32)|0;j=vf(o|0,C|0,n|0,j|0)|0;j=lf(p|0,g|0,j|0,C|0)|0;g=a+32|0;c[g>>2]=j;c[g+4>>2]=C;g=mf(0,c[r>>2]|0,32)|0;j=C;p=mf(0,c[u>>2]|0,32)|0;j=vf(p|0,C|0,g|0,j|0)|0;g=C;p=mf(0,c[h>>2]|0,32)|0;n=C;o=mf(0,c[v>>2]|0,32)|0;n=vf(o|0,C|0,p|0,n|0)|0;g=lf(n|0,C|0,j|0,g|0)|0;j=C;n=mf(0,c[s>>2]|0,32)|0;p=C;o=mf(0,c[q>>2]|0,32)|0;p=vf(o|0,C|0,n|0,p|0)|0;p=lf(g|0,j|0,p|0,C|0)|0;j=C;g=mf(0,c[l>>2]|0,32)|0;n=C;o=mf(0,c[w>>2]|0,32)|0;n=vf(o|0,C|0,g|0,n|0)|0;n=lf(p|0,j|0,n|0,C|0)|0;j=C;p=mf(0,c[b>>2]|0,32)|0;g=C;o=d+40|0;t=mf(0,c[o>>2]|0,32)|0;g=vf(t|0,C|0,p|0,g|0)|0;g=lf(n|0,j|0,g|0,C|0)|0;j=C;n=b+40|0;p=mf(0,c[n>>2]|0,32)|0;t=C;k=mf(0,c[d>>2]|0,32)|0;t=vf(k|0,C|0,p|0,t|0)|0;t=lf(g|0,j|0,t|0,C|0)|0;j=a+40|0;c[j>>2]=t;c[j+4>>2]=C;j=mf(0,c[h>>2]|0,32)|0;t=C;g=mf(0,c[u>>2]|0,32)|0;t=vf(g|0,C|0,j|0,t|0)|0;j=C;g=mf(0,c[s>>2]|0,32)|0;p=C;k=mf(0,c[o>>2]|0,32)|0;p=vf(k|0,C|0,g|0,p|0)|0;j=lf(p|0,C|0,t|0,j|0)|0;t=C;p=mf(0,c[n>>2]|0,32)|0;g=C;k=mf(0,c[w>>2]|0,32)|0;g=vf(k|0,C|0,p|0,g|0)|0;g=lf(j|0,t|0,g|0,C|0)|0;g=pf(g|0,C|0,1)|0;t=C;j=mf(0,c[r>>2]|0,32)|0;p=C;k=mf(0,c[q>>2]|0,32)|0;p=vf(k|0,C|0,j|0,p|0)|0;p=lf(g|0,t|0,p|0,C|0)|0;t=C;g=mf(0,c[l>>2]|0,32)|0;j=C;k=mf(0,c[v>>2]|0,32)|0;j=vf(k|0,C|0,g|0,j|0)|0;j=lf(p|0,t|0,j|0,C|0)|0;t=C;p=mf(0,c[b>>2]|0,32)|0;g=C;k=d+48|0;x=mf(0,c[k>>2]|0,32)|0;g=vf(x|0,C|0,p|0,g|0)|0;g=lf(j|0,t|0,g|0,C|0)|0;t=C;j=b+48|0;p=mf(0,c[j>>2]|0,32)|0;x=C;m=mf(0,c[d>>2]|0,32)|0;x=vf(m|0,C|0,p|0,x|0)|0;x=lf(g|0,t|0,x|0,C|0)|0;t=a+48|0;c[t>>2]=x;c[t+4>>2]=C;t=mf(0,c[h>>2]|0,32)|0;x=C;g=mf(0,c[q>>2]|0,32)|0;x=vf(g|0,C|0,t|0,x|0)|0;t=C;g=mf(0,c[l>>2]|0,32)|0;p=C;m=mf(0,c[u>>2]|0,32)|0;p=vf(m|0,C|0,g|0,p|0)|0;t=lf(p|0,C|0,x|0,t|0)|0;x=C;p=mf(0,c[r>>2]|0,32)|0;g=C;m=mf(0,c[o>>2]|0,32)|0;g=vf(m|0,C|0,p|0,g|0)|0;g=lf(t|0,x|0,g|0,C|0)|0;x=C;t=mf(0,c[n>>2]|0,32)|0;p=C;m=mf(0,c[v>>2]|0,32)|0;p=vf(m|0,C|0,t|0,p|0)|0;p=lf(g|0,x|0,p|0,C|0)|0;x=C;g=mf(0,c[s>>2]|0,32)|0;t=C;m=mf(0,c[k>>2]|0,32)|0;t=vf(m|0,C|0,g|0,t|0)|0;t=lf(p|0,x|0,t|0,C|0)|0;x=C;p=mf(0,c[j>>2]|0,32)|0;g=C;m=mf(0,c[w>>2]|0,32)|0;g=vf(m|0,C|0,p|0,g|0)|0;g=lf(t|0,x|0,g|0,C|0)|0;x=C;t=mf(0,c[b>>2]|0,32)|0;p=C;m=d+56|0;y=mf(0,c[m>>2]|0,32)|0;p=vf(y|0,C|0,t|0,p|0)|0;p=lf(g|0,x|0,p|0,C|0)|0;x=C;g=b+56|0;t=mf(0,c[g>>2]|0,32)|0;y=C;i=mf(0,c[d>>2]|0,32)|0;y=vf(i|0,C|0,t|0,y|0)|0;y=lf(p|0,x|0,y|0,C|0)|0;x=a+56|0;c[x>>2]=y;c[x+4>>2]=C;x=mf(0,c[l>>2]|0,32)|0;y=C;p=mf(0,c[q>>2]|0,32)|0;y=vf(p|0,C|0,x|0,y|0)|0;x=C;p=mf(0,c[h>>2]|0,32)|0;t=C;i=mf(0,c[o>>2]|0,32)|0;t=vf(i|0,C|0,p|0,t|0)|0;p=C;i=mf(0,c[n>>2]|0,32)|0;f=C;e=mf(0,c[u>>2]|0,32)|0;f=vf(e|0,C|0,i|0,f|0)|0;p=lf(f|0,C|0,t|0,p|0)|0;t=C;f=mf(0,c[s>>2]|0,32)|0;i=C;e=mf(0,c[m>>2]|0,32)|0;i=vf(e|0,C|0,f|0,i|0)|0;i=lf(p|0,t|0,i|0,C|0)|0;t=C;p=mf(0,c[g>>2]|0,32)|0;f=C;e=mf(0,c[w>>2]|0,32)|0;f=vf(e|0,C|0,p|0,f|0)|0;f=lf(i|0,t|0,f|0,C|0)|0;f=pf(f|0,C|0,1)|0;x=lf(f|0,C|0,y|0,x|0)|0;y=C;f=mf(0,c[r>>2]|0,32)|0;t=C;i=mf(0,c[k>>2]|0,32)|0;t=vf(i|0,C|0,f|0,t|0)|0;t=lf(x|0,y|0,t|0,C|0)|0;y=C;x=mf(0,c[j>>2]|0,32)|0;f=C;i=mf(0,c[v>>2]|0,32)|0;f=vf(i|0,C|0,x|0,f|0)|0;f=lf(t|0,y|0,f|0,C|0)|0;y=C;t=mf(0,c[b>>2]|0,32)|0;x=C;i=d+64|0;p=mf(0,c[i>>2]|0,32)|0;x=vf(p|0,C|0,t|0,x|0)|0;x=lf(f|0,y|0,x|0,C|0)|0;y=C;f=b+64|0;t=mf(0,c[f>>2]|0,32)|0;p=C;e=mf(0,c[d>>2]|0,32)|0;p=vf(e|0,C|0,t|0,p|0)|0;p=lf(x|0,y|0,p|0,C|0)|0;y=a+64|0;c[y>>2]=p;c[y+4>>2]=C;y=mf(0,c[l>>2]|0,32)|0;p=C;x=mf(0,c[o>>2]|0,32)|0;p=vf(x|0,C|0,y|0,p|0)|0;y=C;x=mf(0,c[n>>2]|0,32)|0;t=C;e=mf(0,c[q>>2]|0,32)|0;t=vf(e|0,C|0,x|0,t|0)|0;y=lf(t|0,C|0,p|0,y|0)|0;p=C;t=mf(0,c[h>>2]|0,32)|0;x=C;e=mf(0,c[k>>2]|0,32)|0;x=vf(e|0,C|0,t|0,x|0)|0;x=lf(y|0,p|0,x|0,C|0)|0;p=C;y=mf(0,c[j>>2]|0,32)|0;t=C;e=mf(0,c[u>>2]|0,32)|0;t=vf(e|0,C|0,y|0,t|0)|0;t=lf(x|0,p|0,t|0,C|0)|0;p=C;x=mf(0,c[r>>2]|0,32)|0;y=C;e=mf(0,c[m>>2]|0,32)|0;y=vf(e|0,C|0,x|0,y|0)|0;y=lf(t|0,p|0,y|0,C|0)|0;p=C;t=mf(0,c[g>>2]|0,32)|0;x=C;e=mf(0,c[v>>2]|0,32)|0;x=vf(e|0,C|0,t|0,x|0)|0;x=lf(y|0,p|0,x|0,C|0)|0;p=C;y=mf(0,c[s>>2]|0,32)|0;t=C;e=mf(0,c[i>>2]|0,32)|0;t=vf(e|0,C|0,y|0,t|0)|0;t=lf(x|0,p|0,t|0,C|0)|0;p=C;x=mf(0,c[f>>2]|0,32)|0;y=C;e=mf(0,c[w>>2]|0,32)|0;y=vf(e|0,C|0,x|0,y|0)|0;y=lf(t|0,p|0,y|0,C|0)|0;p=C;t=mf(0,c[b>>2]|0,32)|0;x=C;e=d+72|0;z=mf(0,c[e>>2]|0,32)|0;x=vf(z|0,C|0,t|0,x|0)|0;x=lf(y|0,p|0,x|0,C|0)|0;p=C;b=b+72|0;y=mf(0,c[b>>2]|0,32)|0;t=C;d=mf(0,c[d>>2]|0,32)|0;t=vf(d|0,C|0,y|0,t|0)|0;t=lf(x|0,p|0,t|0,C|0)|0;d=a+72|0;c[d>>2]=t;c[d+4>>2]=C;d=mf(0,c[n>>2]|0,32)|0;t=C;p=mf(0,c[o>>2]|0,32)|0;t=vf(p|0,C|0,d|0,t|0)|0;d=C;p=mf(0,c[h>>2]|0,32)|0;x=C;y=mf(0,c[m>>2]|0,32)|0;x=vf(y|0,C|0,p|0,x|0)|0;d=lf(x|0,C|0,t|0,d|0)|0;t=C;x=mf(0,c[g>>2]|0,32)|0;p=C;y=mf(0,c[u>>2]|0,32)|0;p=vf(y|0,C|0,x|0,p|0)|0;p=lf(d|0,t|0,p|0,C|0)|0;t=C;d=mf(0,c[s>>2]|0,32)|0;s=C;x=mf(0,c[e>>2]|0,32)|0;s=vf(x|0,C|0,d|0,s|0)|0;s=lf(p|0,t|0,s|0,C|0)|0;t=C;p=mf(0,c[b>>2]|0,32)|0;d=C;w=mf(0,c[w>>2]|0,32)|0;d=vf(w|0,C|0,p|0,d|0)|0;d=lf(s|0,t|0,d|0,C|0)|0;d=pf(d|0,C|0,1)|0;t=C;s=mf(0,c[l>>2]|0,32)|0;p=C;w=mf(0,c[k>>2]|0,32)|0;p=vf(w|0,C|0,s|0,p|0)|0;p=lf(d|0,t|0,p|0,C|0)|0;t=C;d=mf(0,c[j>>2]|0,32)|0;s=C;w=mf(0,c[q>>2]|0,32)|0;s=vf(w|0,C|0,d|0,s|0)|0;s=lf(p|0,t|0,s|0,C|0)|0;t=C;p=mf(0,c[r>>2]|0,32)|0;d=C;w=mf(0,c[i>>2]|0,32)|0;d=vf(w|0,C|0,p|0,d|0)|0;d=lf(s|0,t|0,d|0,C|0)|0;t=C;s=mf(0,c[f>>2]|0,32)|0;p=C;w=mf(0,c[v>>2]|0,32)|0;p=vf(w|0,C|0,s|0,p|0)|0;p=lf(d|0,t|0,p|0,C|0)|0;t=a+80|0;c[t>>2]=p;c[t+4>>2]=C;t=mf(0,c[n>>2]|0,32)|0;p=C;d=mf(0,c[k>>2]|0,32)|0;p=vf(d|0,C|0,t|0,p|0)|0;t=C;d=mf(0,c[j>>2]|0,32)|0;s=C;w=mf(0,c[o>>2]|0,32)|0;s=vf(w|0,C|0,d|0,s|0)|0;t=lf(s|0,C|0,p|0,t|0)|0;p=C;s=mf(0,c[l>>2]|0,32)|0;d=C;w=mf(0,c[m>>2]|0,32)|0;d=vf(w|0,C|0,s|0,d|0)|0;d=lf(t|0,p|0,d|0,C|0)|0;p=C;t=mf(0,c[g>>2]|0,32)|0;s=C;w=mf(0,c[q>>2]|0,32)|0;s=vf(w|0,C|0,t|0,s|0)|0;s=lf(d|0,p|0,s|0,C|0)|0;p=C;d=mf(0,c[h>>2]|0,32)|0;t=C;w=mf(0,c[i>>2]|0,32)|0;t=vf(w|0,C|0,d|0,t|0)|0;t=lf(s|0,p|0,t|0,C|0)|0;p=C;s=mf(0,c[f>>2]|0,32)|0;d=C;w=mf(0,c[u>>2]|0,32)|0;d=vf(w|0,C|0,s|0,d|0)|0;d=lf(t|0,p|0,d|0,C|0)|0;p=C;r=mf(0,c[r>>2]|0,32)|0;t=C;s=mf(0,c[e>>2]|0,32)|0;t=vf(s|0,C|0,r|0,t|0)|0;t=lf(d|0,p|0,t|0,C|0)|0;p=C;d=mf(0,c[b>>2]|0,32)|0;r=C;v=mf(0,c[v>>2]|0,32)|0;r=vf(v|0,C|0,d|0,r|0)|0;r=lf(t|0,p|0,r|0,C|0)|0;p=a+88|0;c[p>>2]=r;c[p+4>>2]=C;p=mf(0,c[j>>2]|0,32)|0;r=C;t=mf(0,c[k>>2]|0,32)|0;r=vf(t|0,C|0,p|0,r|0)|0;p=C;t=mf(0,c[n>>2]|0,32)|0;d=C;v=mf(0,c[m>>2]|0,32)|0;d=vf(v|0,C|0,t|0,d|0)|0;t=C;v=mf(0,c[g>>2]|0,32)|0;s=C;w=mf(0,c[o>>2]|0,32)|0;s=vf(w|0,C|0,v|0,s|0)|0;t=lf(s|0,C|0,d|0,t|0)|0;d=C;h=mf(0,c[h>>2]|0,32)|0;s=C;v=mf(0,c[e>>2]|0,32)|0;s=vf(v|0,C|0,h|0,s|0)|0;s=lf(t|0,d|0,s|0,C|0)|0;d=C;t=mf(0,c[b>>2]|0,32)|0;h=C;u=mf(0,c[u>>2]|0,32)|0;h=vf(u|0,C|0,t|0,h|0)|0;h=lf(s|0,d|0,h|0,C|0)|0;h=pf(h|0,C|0,1)|0;p=lf(h|0,C|0,r|0,p|0)|0;r=C;h=mf(0,c[l>>2]|0,32)|0;d=C;s=mf(0,c[i>>2]|0,32)|0;d=vf(s|0,C|0,h|0,d|0)|0;d=lf(p|0,r|0,d|0,C|0)|0;r=C;p=mf(0,c[f>>2]|0,32)|0;h=C;s=mf(0,c[q>>2]|0,32)|0;h=vf(s|0,C|0,p|0,h|0)|0;h=lf(d|0,r|0,h|0,C|0)|0;r=a+96|0;c[r>>2]=h;c[r+4>>2]=C;r=mf(0,c[j>>2]|0,32)|0;h=C;d=mf(0,c[m>>2]|0,32)|0;h=vf(d|0,C|0,r|0,h|0)|0;r=C;d=mf(0,c[g>>2]|0,32)|0;p=C;s=mf(0,c[k>>2]|0,32)|0;p=vf(s|0,C|0,d|0,p|0)|0;r=lf(p|0,C|0,h|0,r|0)|0;h=C;p=mf(0,c[n>>2]|0,32)|0;d=C;s=mf(0,c[i>>2]|0,32)|0;d=vf(s|0,C|0,p|0,d|0)|0;d=lf(r|0,h|0,d|0,C|0)|0;h=C;r=mf(0,c[f>>2]|0,32)|0;p=C;s=mf(0,c[o>>2]|0,32)|0;p=vf(s|0,C|0,r|0,p|0)|0;p=lf(d|0,h|0,p|0,C|0)|0;h=C;l=mf(0,c[l>>2]|0,32)|0;d=C;r=mf(0,c[e>>2]|0,32)|0;d=vf(r|0,C|0,l|0,d|0)|0;d=lf(p|0,h|0,d|0,C|0)|0;h=C;p=mf(0,c[b>>2]|0,32)|0;l=C;q=mf(0,c[q>>2]|0,32)|0;l=vf(q|0,C|0,p|0,l|0)|0;l=lf(d|0,h|0,l|0,C|0)|0;h=a+104|0;c[h>>2]=l;c[h+4>>2]=C;h=mf(0,c[g>>2]|0,32)|0;l=C;d=mf(0,c[m>>2]|0,32)|0;l=vf(d|0,C|0,h|0,l|0)|0;h=C;d=mf(0,c[n>>2]|0,32)|0;n=C;p=mf(0,c[e>>2]|0,32)|0;n=vf(p|0,C|0,d|0,n|0)|0;h=lf(n|0,C|0,l|0,h|0)|0;l=C;n=mf(0,c[b>>2]|0,32)|0;d=C;o=mf(0,c[o>>2]|0,32)|0;d=vf(o|0,C|0,n|0,d|0)|0;d=lf(h|0,l|0,d|0,C|0)|0;d=pf(d|0,C|0,1)|0;l=C;h=mf(0,c[j>>2]|0,32)|0;n=C;o=mf(0,c[i>>2]|0,32)|0;n=vf(o|0,C|0,h|0,n|0)|0;n=lf(d|0,l|0,n|0,C|0)|0;l=C;d=mf(0,c[f>>2]|0,32)|0;h=C;o=mf(0,c[k>>2]|0,32)|0;h=vf(o|0,C|0,d|0,h|0)|0;h=lf(n|0,l|0,h|0,C|0)|0;l=a+112|0;c[l>>2]=h;c[l+4>>2]=C;l=mf(0,c[g>>2]|0,32)|0;h=C;n=mf(0,c[i>>2]|0,32)|0;h=vf(n|0,C|0,l|0,h|0)|0;l=C;n=mf(0,c[f>>2]|0,32)|0;d=C;o=mf(0,c[m>>2]|0,32)|0;d=vf(o|0,C|0,n|0,d|0)|0;l=lf(d|0,C|0,h|0,l|0)|0;h=C;d=mf(0,c[j>>2]|0,32)|0;j=C;n=mf(0,c[e>>2]|0,32)|0;j=vf(n|0,C|0,d|0,j|0)|0;j=lf(l|0,h|0,j|0,C|0)|0;h=C;l=mf(0,c[b>>2]|0,32)|0;d=C;k=mf(0,c[k>>2]|0,32)|0;d=vf(k|0,C|0,l|0,d|0)|0;d=lf(j|0,h|0,d|0,C|0)|0;h=a+120|0;c[h>>2]=d;c[h+4>>2]=C;h=mf(0,c[f>>2]|0,32)|0;d=C;j=mf(0,c[i>>2]|0,32)|0;d=vf(j|0,C|0,h|0,d|0)|0;h=C;g=mf(0,c[g>>2]|0,32)|0;j=C;l=mf(0,c[e>>2]|0,32)|0;j=vf(l|0,C|0,g|0,j|0)|0;g=C;l=mf(0,c[b>>2]|0,32)|0;k=C;m=mf(0,c[m>>2]|0,32)|0;k=vf(m|0,C|0,l|0,k|0)|0;g=lf(k|0,C|0,j|0,g|0)|0;g=pf(g|0,C|0,1)|0;h=lf(g|0,C|0,d|0,h|0)|0;d=a+128|0;c[d>>2]=h;c[d+4>>2]=C;f=mf(0,c[f>>2]|0,32)|0;d=C;h=mf(0,c[e>>2]|0,32)|0;d=vf(h|0,C|0,f|0,d|0)|0;f=C;h=mf(0,c[b>>2]|0,32)|0;g=C;i=mf(0,c[i>>2]|0,32)|0;g=vf(i|0,C|0,h|0,g|0)|0;f=lf(g|0,C|0,d|0,f|0)|0;d=a+136|0;c[d>>2]=f;c[d+4>>2]=C;d=mf(0,c[b>>2]|0,31)|0;b=C;e=mf(0,c[e>>2]|0,32)|0;b=vf(e|0,C|0,d|0,b|0)|0;a=a+144|0;c[a>>2]=b;c[a+4>>2]=C;return}function cf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;j=i;i=i+160|0;d=j;u=c[b>>2]|0;R=mf(0,u|0,32)|0;N=C;z=vf(R|0,N|0,R|0,N|0)|0;E=d;c[E>>2]=z;c[E+4>>2]=C;u=mf(0,u|0,31)|0;E=C;z=b+8|0;F=c[z>>2]|0;D=mf(0,F|0,32)|0;x=C;y=vf(D|0,x|0,u|0,E|0)|0;h=d+8|0;e=h;c[e>>2]=y;c[e+4>>2]=C;e=vf(D|0,x|0,D|0,x|0)|0;y=C;l=b+16|0;m=mf(0,c[l>>2]|0,32)|0;H=C;q=vf(m|0,H|0,R|0,N|0)|0;y=lf(q|0,C|0,e|0,y|0)|0;y=pf(y|0,C|0,1)|0;e=d+16|0;q=e;c[q>>2]=y;c[q+4>>2]=C;q=vf(m|0,H|0,D|0,x|0)|0;y=C;G=b+24|0;K=mf(0,c[G>>2]|0,32)|0;O=C;t=vf(K|0,O|0,R|0,N|0)|0;y=lf(t|0,C|0,q|0,y|0)|0;y=pf(y|0,C|0,1)|0;q=d+24|0;t=q;c[t>>2]=y;c[t+4>>2]=C;t=vf(m|0,H|0,m|0,H|0)|0;y=C;f=mf(0,F|0,30)|0;f=vf(K|0,O|0,f|0,C|0)|0;y=lf(f|0,C|0,t|0,y|0)|0;t=C;f=b+32|0;r=mf(0,c[f>>2]|0,32)|0;k=C;E=vf(r|0,k|0,u|0,E|0)|0;E=lf(y|0,t|0,E|0,C|0)|0;t=d+32|0;y=t;c[y>>2]=E;c[y+4>>2]=C;y=vf(K|0,O|0,m|0,H|0)|0;E=C;u=vf(r|0,k|0,D|0,x|0)|0;E=lf(u|0,C|0,y|0,E|0)|0;y=C;u=b+40|0;v=mf(0,c[u>>2]|0,32)|0;g=C;M=vf(v|0,g|0,R|0,N|0)|0;M=lf(E|0,y|0,M|0,C|0)|0;M=pf(M|0,C|0,1)|0;y=d+40|0;E=y;c[E>>2]=M;c[E+4>>2]=C;E=vf(K|0,O|0,K|0,O|0)|0;M=C;B=vf(r|0,k|0,m|0,H|0)|0;M=lf(B|0,C|0,E|0,M|0)|0;E=C;B=b+48|0;p=mf(0,c[B>>2]|0,32)|0;o=C;J=vf(p|0,o|0,R|0,N|0)|0;J=lf(M|0,E|0,J|0,C|0)|0;E=C;F=mf(0,F|0,31)|0;F=vf(v|0,g|0,F|0,C|0)|0;F=lf(J|0,E|0,F|0,C|0)|0;F=pf(F|0,C|0,1)|0;E=d+48|0;J=E;c[J>>2]=F;c[J+4>>2]=C;J=vf(r|0,k|0,K|0,O|0)|0;F=C;M=vf(v|0,g|0,m|0,H|0)|0;F=lf(M|0,C|0,J|0,F|0)|0;J=C;M=vf(p|0,o|0,D|0,x|0)|0;M=lf(F|0,J|0,M|0,C|0)|0;J=C;F=b+56|0;s=mf(0,c[F>>2]|0,32)|0;n=C;A=vf(s|0,n|0,R|0,N|0)|0;A=lf(M|0,J|0,A|0,C|0)|0;A=pf(A|0,C|0,1)|0;J=d+56|0;M=J;c[M>>2]=A;c[M+4>>2]=C;M=vf(r|0,k|0,r|0,k|0)|0;A=C;P=vf(p|0,o|0,m|0,H|0)|0;Q=C;L=b+64|0;I=mf(0,c[L>>2]|0,32)|0;w=C;N=vf(I|0,w|0,R|0,N|0)|0;Q=lf(N|0,C|0,P|0,Q|0)|0;P=C;x=vf(s|0,n|0,D|0,x|0)|0;D=C;N=vf(v|0,g|0,K|0,O|0)|0;D=lf(N|0,C|0,x|0,D|0)|0;D=pf(D|0,C|0,1)|0;D=lf(Q|0,P|0,D|0,C|0)|0;D=pf(D|0,C|0,1)|0;A=lf(D|0,C|0,M|0,A|0)|0;M=d+64|0;D=M;c[D>>2]=A;c[D+4>>2]=C;D=vf(v|0,g|0,r|0,k|0)|0;A=C;O=vf(p|0,o|0,K|0,O|0)|0;A=lf(O|0,C|0,D|0,A|0)|0;D=C;H=vf(s|0,n|0,m|0,H|0)|0;H=lf(A|0,D|0,H|0,C|0)|0;D=C;z=mf(0,c[z>>2]|0,32)|0;A=C;m=vf(I|0,w|0,z|0,A|0)|0;m=lf(H|0,D|0,m|0,C|0)|0;D=C;H=mf(0,c[b>>2]|0,32)|0;O=C;K=c[b+72>>2]|0;P=mf(0,K|0,32)|0;Q=C;O=vf(P|0,Q|0,H|0,O|0)|0;O=lf(m|0,D|0,O|0,C|0)|0;O=pf(O|0,C|0,1)|0;b=d+72|0;c[b>>2]=O;c[b+4>>2]=C;b=vf(v|0,g|0,v|0,g|0)|0;O=C;k=vf(p|0,o|0,r|0,k|0)|0;O=lf(k|0,C|0,b|0,O|0)|0;b=C;l=mf(0,c[l>>2]|0,32)|0;k=C;r=vf(I|0,w|0,l|0,k|0)|0;r=lf(O|0,b|0,r|0,C|0)|0;b=C;G=mf(0,c[G>>2]|0,32)|0;O=C;D=vf(s|0,n|0,G|0,O|0)|0;m=C;A=vf(P|0,Q|0,z|0,A|0)|0;m=lf(A|0,C|0,D|0,m|0)|0;m=pf(m|0,C|0,1)|0;m=lf(r|0,b|0,m|0,C|0)|0;m=pf(m|0,C|0,1)|0;b=d+80|0;r=b;c[r>>2]=m;c[r+4>>2]=C;g=vf(p|0,o|0,v|0,g|0)|0;v=C;f=mf(0,c[f>>2]|0,32)|0;r=C;m=vf(s|0,n|0,f|0,r|0)|0;v=lf(m|0,C|0,g|0,v|0)|0;g=C;m=vf(I|0,w|0,G|0,O|0)|0;m=lf(v|0,g|0,m|0,C|0)|0;g=C;k=vf(P|0,Q|0,l|0,k|0)|0;k=lf(m|0,g|0,k|0,C|0)|0;g=C;m=pf(k|0,g|0,1)|0;l=C;v=d+88|0;c[v>>2]=m;c[v+4>>2]=l;o=vf(p|0,o|0,p|0,o|0)|0;p=C;v=vf(I|0,w|0,f|0,r|0)|0;D=C;u=c[u>>2]|0;A=mf(0,u|0,32)|0;z=C;H=vf(s|0,n|0,A|0,z|0)|0;x=C;O=vf(P|0,Q|0,G|0,O|0)|0;x=lf(O|0,C|0,H|0,x|0)|0;x=pf(x|0,C|0,1)|0;D=lf(x|0,C|0,v|0,D|0)|0;D=pf(D|0,C|0,1)|0;p=lf(D|0,C|0,o|0,p|0)|0;o=C;D=d+96|0;c[D>>2]=p;c[D+4>>2]=o;B=mf(0,c[B>>2]|0,32)|0;D=C;n=vf(s|0,n|0,B|0,D|0)|0;s=C;z=vf(I|0,w|0,A|0,z|0)|0;s=lf(z|0,C|0,n|0,s|0)|0;n=C;r=vf(P|0,Q|0,f|0,r|0)|0;r=lf(s|0,n|0,r|0,C|0)|0;n=C;s=pf(r|0,n|0,1)|0;f=C;z=d+104|0;c[z>>2]=s;c[z+4>>2]=f;F=c[F>>2]|0;z=mf(0,F|0,32)|0;A=C;v=vf(z|0,A|0,z|0,A|0)|0;x=C;w=vf(I|0,w|0,B|0,D|0)|0;x=lf(w|0,C|0,v|0,x|0)|0;v=C;u=mf(0,u|0,31)|0;u=vf(P|0,Q|0,u|0,C|0)|0;u=lf(x|0,v|0,u|0,C|0)|0;v=C;x=pf(u|0,v|0,1)|0;w=C;I=d+112|0;c[I>>2]=x;c[I+4>>2]=w;L=c[L>>2]|0;I=mf(0,L|0,32)|0;H=C;A=vf(I|0,H|0,z|0,A|0)|0;z=C;D=vf(P|0,Q|0,B|0,D|0)|0;z=lf(D|0,C|0,A|0,z|0)|0;A=C;D=pf(z|0,A|0,1)|0;B=C;O=d+120|0;c[O>>2]=D;c[O+4>>2]=B;H=vf(I|0,H|0,I|0,H|0)|0;I=C;F=mf(0,F|0,30)|0;F=vf(P|0,Q|0,F|0,C|0)|0;I=lf(F|0,C|0,H|0,I|0)|0;H=C;F=d+128|0;c[F>>2]=I;c[F+4>>2]=H;L=mf(0,L|0,31)|0;L=vf(P|0,Q|0,L|0,C|0)|0;F=C;O=d+136|0;c[O>>2]=L;c[O+4>>2]=F;K=mf(0,K|0,31)|0;Q=vf(K|0,C|0,P|0,Q|0)|0;P=C;K=d+144|0;c[K>>2]=Q;c[K+4>>2]=P;K=M;O=c[K>>2]|0;K=c[K+4>>2]|0;G=vf(Q|0,P|0,18,0)|0;N=C;K=lf(Q|0,P|0,O|0,K|0)|0;N=lf(K|0,C|0,G|0,N|0)|0;c[M>>2]=N;c[M+4>>2]=C;M=J;N=c[M>>2]|0;M=c[M+4>>2]|0;G=vf(L|0,F|0,18,0)|0;K=C;F=lf(N|0,M|0,L|0,F|0)|0;K=lf(F|0,C|0,G|0,K|0)|0;c[J>>2]=K;c[J+4>>2]=C;J=E;K=c[J>>2]|0;J=c[J+4>>2]|0;G=vf(I|0,H|0,18,0)|0;F=C;H=lf(K|0,J|0,I|0,H|0)|0;F=lf(H|0,C|0,G|0,F|0)|0;c[E>>2]=F;c[E+4>>2]=C;E=y;F=c[E>>2]|0;E=c[E+4>>2]|0;A=vf(z|0,A|0,36,0)|0;z=C;B=lf(F|0,E|0,D|0,B|0)|0;z=lf(B|0,C|0,A|0,z|0)|0;c[y>>2]=z;c[y+4>>2]=C;y=t;z=c[y>>2]|0;y=c[y+4>>2]|0;v=vf(u|0,v|0,36,0)|0;u=C;w=lf(z|0,y|0,x|0,w|0)|0;u=lf(w|0,C|0,v|0,u|0)|0;c[t>>2]=u;c[t+4>>2]=C;t=q;u=c[t>>2]|0;t=c[t+4>>2]|0;n=vf(r|0,n|0,36,0)|0;r=C;f=lf(u|0,t|0,s|0,f|0)|0;r=lf(f|0,C|0,n|0,r|0)|0;c[q>>2]=r;c[q+4>>2]=C;q=e;r=c[q>>2]|0;q=c[q+4>>2]|0;n=vf(p|0,o|0,18,0)|0;f=C;o=lf(r|0,q|0,p|0,o|0)|0;f=lf(o|0,C|0,n|0,f|0)|0;c[e>>2]=f;c[e+4>>2]=C;e=h;f=c[e>>2]|0;e=c[e+4>>2]|0;g=vf(k|0,g|0,36,0)|0;k=C;l=lf(f|0,e|0,m|0,l|0)|0;k=lf(l|0,C|0,g|0,k|0)|0;g=h;c[g>>2]=k;c[g+4>>2]=C;g=b;k=c[g>>2]|0;g=c[g+4>>2]|0;l=d;m=c[l>>2]|0;l=c[l+4>>2]|0;e=vf(k|0,g|0,18,0)|0;f=C;g=lf(m|0,l|0,k|0,g|0)|0;f=lf(g|0,C|0,e|0,f|0)|0;e=C;g=d;c[g>>2]=f;c[g+4>>2]=e;g=b;c[g>>2]=0;c[g+4>>2]=0;g=0;do{O=lf(e>>31>>>6|0,0,f|0,e|0)|0;O=mf(O|0,C|0,26)|0;N=C;M=pf(O|0,N|0,26)|0;M=kf(f|0,e|0,M|0,C|0)|0;R=d+(g<<3)|0;c[R>>2]=M;c[R+4>>2]=C;R=d+((g|1)<<3)|0;M=R;M=lf(O|0,N|0,c[M>>2]|0,c[M+4>>2]|0)|0;N=C;O=lf(N>>31>>>7|0,0,M|0,N|0)|0;O=mf(O|0,C|0,25)|0;P=C;Q=pf(O|0,P|0,25)|0;Q=kf(M|0,N|0,Q|0,C|0)|0;c[R>>2]=Q;c[R+4>>2]=C;g=g+2|0;R=d+(g<<3)|0;Q=R;f=lf(O|0,P|0,c[Q>>2]|0,c[Q+4>>2]|0)|0;e=C;c[R>>2]=f;c[R+4>>2]=e}while(g>>>0<10);Q=b;P=c[Q>>2]|0;Q=c[Q+4>>2]|0;N=d;M=c[N>>2]|0;N=c[N+4>>2]|0;R=vf(P|0,Q|0,18,0)|0;O=C;Q=lf(M|0,N|0,P|0,Q|0)|0;O=lf(Q|0,C|0,R|0,O|0)|0;R=C;Q=b;c[Q>>2]=0;c[Q+4>>2]=0;Q=lf(R>>31>>>6|0,0,O|0,R|0)|0;Q=mf(Q|0,C|0,26)|0;b=C;P=pf(Q|0,b|0,26)|0;P=kf(O|0,R|0,P|0,C|0)|0;R=d;c[R>>2]=P;c[R+4>>2]=C;R=h;R=lf(Q|0,b|0,c[R>>2]|0,c[R+4>>2]|0)|0;b=h;c[b>>2]=R;c[b+4>>2]=C;b=a+80|0;do{c[a>>2]=c[d>>2];a=a+4|0;d=d+4|0}while((a|0)<(b|0));i=j;return}function df(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=i;i=i+160|0;e=j;bf(e,b,d);b=e+144|0;f=c[b>>2]|0;b=c[b+4>>2]|0;d=e+64|0;k=d;h=c[k>>2]|0;k=c[k+4>>2]|0;m=vf(f|0,b|0,18,0)|0;l=C;b=lf(h|0,k|0,f|0,b|0)|0;l=lf(b|0,C|0,m|0,l|0)|0;c[d>>2]=l;c[d+4>>2]=C;d=e+136|0;l=c[d>>2]|0;d=c[d+4>>2]|0;m=e+56|0;b=m;f=c[b>>2]|0;b=c[b+4>>2]|0;k=vf(l|0,d|0,18,0)|0;h=C;d=lf(f|0,b|0,l|0,d|0)|0;h=lf(d|0,C|0,k|0,h|0)|0;c[m>>2]=h;c[m+4>>2]=C;m=e+128|0;h=c[m>>2]|0;m=c[m+4>>2]|0;k=e+48|0;d=k;l=c[d>>2]|0;d=c[d+4>>2]|0;b=vf(h|0,m|0,18,0)|0;f=C;m=lf(l|0,d|0,h|0,m|0)|0;f=lf(m|0,C|0,b|0,f|0)|0;c[k>>2]=f;c[k+4>>2]=C;k=e+120|0;f=c[k>>2]|0;k=c[k+4>>2]|0;b=e+40|0;m=b;h=c[m>>2]|0;m=c[m+4>>2]|0;d=vf(f|0,k|0,18,0)|0;l=C;k=lf(h|0,m|0,f|0,k|0)|0;l=lf(k|0,C|0,d|0,l|0)|0;c[b>>2]=l;c[b+4>>2]=C;b=e+112|0;l=c[b>>2]|0;b=c[b+4>>2]|0;d=e+32|0;k=d;f=c[k>>2]|0;k=c[k+4>>2]|0;m=vf(l|0,b|0,18,0)|0;h=C;b=lf(f|0,k|0,l|0,b|0)|0;h=lf(b|0,C|0,m|0,h|0)|0;c[d>>2]=h;c[d+4>>2]=C;d=e+104|0;h=c[d>>2]|0;d=c[d+4>>2]|0;m=e+24|0;b=m;l=c[b>>2]|0;b=c[b+4>>2]|0;k=vf(h|0,d|0,18,0)|0;f=C;d=lf(l|0,b|0,h|0,d|0)|0;f=lf(d|0,C|0,k|0,f|0)|0;c[m>>2]=f;c[m+4>>2]=C;m=e+96|0;f=c[m>>2]|0;m=c[m+4>>2]|0;k=e+16|0;d=k;h=c[d>>2]|0;d=c[d+4>>2]|0;b=vf(f|0,m|0,18,0)|0;l=C;m=lf(h|0,d|0,f|0,m|0)|0;l=lf(m|0,C|0,b|0,l|0)|0;c[k>>2]=l;c[k+4>>2]=C;k=e+88|0;l=c[k>>2]|0;k=c[k+4>>2]|0;b=e+8|0;m=b;f=c[m>>2]|0;m=c[m+4>>2]|0;d=vf(l|0,k|0,18,0)|0;h=C;k=lf(f|0,m|0,l|0,k|0)|0;h=lf(k|0,C|0,d|0,h|0)|0;d=b;c[d>>2]=h;c[d+4>>2]=C;d=e+80|0;h=d;k=c[h>>2]|0;h=c[h+4>>2]|0;l=e;m=c[l>>2]|0;l=c[l+4>>2]|0;f=vf(k|0,h|0,18,0)|0;g=C;h=lf(m|0,l|0,k|0,h|0)|0;g=lf(h|0,C|0,f|0,g|0)|0;f=C;h=e;c[h>>2]=g;c[h+4>>2]=f;h=d;c[h>>2]=0;c[h+4>>2]=0;h=0;do{n=lf(f>>31>>>6|0,0,g|0,f|0)|0;n=mf(n|0,C|0,26)|0;o=C;p=pf(n|0,o|0,26)|0;p=kf(g|0,f|0,p|0,C|0)|0;m=e+(h<<3)|0;c[m>>2]=p;c[m+4>>2]=C;m=e+((h|1)<<3)|0;p=m;p=lf(n|0,o|0,c[p>>2]|0,c[p+4>>2]|0)|0;o=C;n=lf(o>>31>>>7|0,0,p|0,o|0)|0;n=mf(n|0,C|0,25)|0;k=C;l=pf(n|0,k|0,25)|0;l=kf(p|0,o|0,l|0,C|0)|0;c[m>>2]=l;c[m+4>>2]=C;h=h+2|0;m=e+(h<<3)|0;l=m;g=lf(n|0,k|0,c[l>>2]|0,c[l+4>>2]|0)|0;f=C;c[m>>2]=g;c[m+4>>2]=f}while(h>>>0<10);o=d;n=c[o>>2]|0;o=c[o+4>>2]|0;l=e;k=c[l>>2]|0;l=c[l+4>>2]|0;p=vf(n|0,o|0,18,0)|0;m=C;o=lf(k|0,l|0,n|0,o|0)|0;m=lf(o|0,C|0,p|0,m|0)|0;p=C;o=d;c[o>>2]=0;c[o+4>>2]=0;o=lf(p>>31>>>6|0,0,m|0,p|0)|0;o=mf(o|0,C|0,26)|0;d=C;n=pf(o|0,d|0,26)|0;n=kf(m|0,p|0,n|0,C|0)|0;p=e;c[p>>2]=n;c[p+4>>2]=C;p=b;p=lf(o|0,d|0,c[p>>2]|0,c[p+4>>2]|0)|0;d=b;c[d>>2]=p;c[d+4>>2]=C;d=a;b=d+80|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(b|0));i=j;return}function ef(){var a=0;if(!(c[8886]|0))a=35588;else a=c[(ga()|0)+64>>2]|0;return a|0}function ff(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)d=0;else{f=d;e=b;while(1){b=a[e>>0]|0;d=a[c>>0]|0;if(b<<24>>24!=d<<24>>24)break;f=f+-1|0;if(!f){d=0;break a}else{e=e+1|0;c=c+1|0}}d=(b&255)-(d&255)|0}while(0);return d|0}function gf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;do if(a>>>0<245){o=a>>>0<11?16:a+11&-8;a=o>>>3;j=c[8898]|0;b=j>>>a;if(b&3|0){b=(b&1^1)+a|0;d=35632+(b<<1<<2)|0;e=d+8|0;f=c[e>>2]|0;g=f+8|0;h=c[g>>2]|0;do if((d|0)!=(h|0)){if(h>>>0<(c[8902]|0)>>>0)ha();a=h+12|0;if((c[a>>2]|0)==(f|0)){c[a>>2]=d;c[e>>2]=h;break}else ha()}else c[8898]=j&~(1<<b);while(0);L=b<<3;c[f+4>>2]=L|3;L=f+L+4|0;c[L>>2]=c[L>>2]|1;L=g;return L|0}h=c[8900]|0;if(o>>>0>h>>>0){if(b|0){d=2<<a;d=b<<a&(d|0-d);d=(d&0-d)+-1|0;i=d>>>12&16;d=d>>>i;f=d>>>5&8;d=d>>>f;g=d>>>2&4;d=d>>>g;e=d>>>1&2;d=d>>>e;b=d>>>1&1;b=(f|i|g|e|b)+(d>>>b)|0;d=35632+(b<<1<<2)|0;e=d+8|0;g=c[e>>2]|0;i=g+8|0;f=c[i>>2]|0;do if((d|0)!=(f|0)){if(f>>>0<(c[8902]|0)>>>0)ha();a=f+12|0;if((c[a>>2]|0)==(g|0)){c[a>>2]=d;c[e>>2]=f;k=c[8900]|0;break}else ha()}else{c[8898]=j&~(1<<b);k=h}while(0);h=(b<<3)-o|0;c[g+4>>2]=o|3;e=g+o|0;c[e+4>>2]=h|1;c[e+h>>2]=h;if(k|0){f=c[8903]|0;b=k>>>3;d=35632+(b<<1<<2)|0;a=c[8898]|0;b=1<<b;if(a&b){a=d+8|0;b=c[a>>2]|0;if(b>>>0<(c[8902]|0)>>>0)ha();else{l=a;m=b}}else{c[8898]=a|b;l=d+8|0;m=d}c[l>>2]=f;c[m+12>>2]=f;c[f+8>>2]=m;c[f+12>>2]=d}c[8900]=h;c[8903]=e;L=i;return L|0}a=c[8899]|0;if(a){d=(a&0-a)+-1|0;K=d>>>12&16;d=d>>>K;J=d>>>5&8;d=d>>>J;L=d>>>2&4;d=d>>>L;b=d>>>1&2;d=d>>>b;e=d>>>1&1;e=c[35896+((J|K|L|b|e)+(d>>>e)<<2)>>2]|0;d=(c[e+4>>2]&-8)-o|0;b=e;while(1){a=c[b+16>>2]|0;if(!a){a=c[b+20>>2]|0;if(!a){j=e;break}}b=(c[a+4>>2]&-8)-o|0;L=b>>>0<d>>>0;d=L?b:d;b=a;e=L?a:e}g=c[8902]|0;if(j>>>0<g>>>0)ha();i=j+o|0;if(j>>>0>=i>>>0)ha();h=c[j+24>>2]|0;e=c[j+12>>2]|0;do if((e|0)==(j|0)){b=j+20|0;a=c[b>>2]|0;if(!a){b=j+16|0;a=c[b>>2]|0;if(!a){n=0;break}}while(1){e=a+20|0;f=c[e>>2]|0;if(f|0){a=f;b=e;continue}e=a+16|0;f=c[e>>2]|0;if(!f)break;else{a=f;b=e}}if(b>>>0<g>>>0)ha();else{c[b>>2]=0;n=a;break}}else{f=c[j+8>>2]|0;if(f>>>0<g>>>0)ha();a=f+12|0;if((c[a>>2]|0)!=(j|0))ha();b=e+8|0;if((c[b>>2]|0)==(j|0)){c[a>>2]=e;c[b>>2]=f;n=e;break}else ha()}while(0);do if(h|0){a=c[j+28>>2]|0;b=35896+(a<<2)|0;if((j|0)==(c[b>>2]|0)){c[b>>2]=n;if(!n){c[8899]=c[8899]&~(1<<a);break}}else{if(h>>>0<(c[8902]|0)>>>0)ha();a=h+16|0;if((c[a>>2]|0)==(j|0))c[a>>2]=n;else c[h+20>>2]=n;if(!n)break}b=c[8902]|0;if(n>>>0<b>>>0)ha();c[n+24>>2]=h;a=c[j+16>>2]|0;do if(a|0)if(a>>>0<b>>>0)ha();else{c[n+16>>2]=a;c[a+24>>2]=n;break}while(0);a=c[j+20>>2]|0;if(a|0)if(a>>>0<(c[8902]|0)>>>0)ha();else{c[n+20>>2]=a;c[a+24>>2]=n;break}}while(0);if(d>>>0<16){L=d+o|0;c[j+4>>2]=L|3;L=j+L+4|0;c[L>>2]=c[L>>2]|1}else{c[j+4>>2]=o|3;c[i+4>>2]=d|1;c[i+d>>2]=d;a=c[8900]|0;if(a|0){f=c[8903]|0;b=a>>>3;e=35632+(b<<1<<2)|0;a=c[8898]|0;b=1<<b;if(a&b){a=e+8|0;b=c[a>>2]|0;if(b>>>0<(c[8902]|0)>>>0)ha();else{p=a;q=b}}else{c[8898]=a|b;p=e+8|0;q=e}c[p>>2]=f;c[q+12>>2]=f;c[f+8>>2]=q;c[f+12>>2]=e}c[8900]=d;c[8903]=i}L=j+8|0;return L|0}}}else if(a>>>0<=4294967231){a=a+11|0;o=a&-8;j=c[8899]|0;if(j){d=0-o|0;a=a>>>8;if(a)if(o>>>0>16777215)i=31;else{q=(a+1048320|0)>>>16&8;E=a<<q;p=(E+520192|0)>>>16&4;E=E<<p;i=(E+245760|0)>>>16&2;i=14-(p|q|i)+(E<<i>>>15)|0;i=o>>>(i+7|0)&1|i<<1}else i=0;b=c[35896+(i<<2)>>2]|0;a:do if(!b){a=0;b=0;E=86}else{f=d;a=0;g=o<<((i|0)==31?0:25-(i>>>1)|0);h=b;b=0;while(1){e=c[h+4>>2]&-8;d=e-o|0;if(d>>>0<f>>>0)if((e|0)==(o|0)){a=h;b=h;E=90;break a}else b=h;else d=f;e=c[h+20>>2]|0;h=c[h+16+(g>>>31<<2)>>2]|0;a=(e|0)==0|(e|0)==(h|0)?a:e;e=(h|0)==0;if(e){E=86;break}else{f=d;g=g<<(e&1^1)}}}while(0);if((E|0)==86){if((a|0)==0&(b|0)==0){a=2<<i;a=j&(a|0-a);if(!a)break;q=(a&0-a)+-1|0;m=q>>>12&16;q=q>>>m;l=q>>>5&8;q=q>>>l;n=q>>>2&4;q=q>>>n;p=q>>>1&2;q=q>>>p;a=q>>>1&1;a=c[35896+((l|m|n|p|a)+(q>>>a)<<2)>>2]|0}if(!a){i=d;j=b}else E=90}if((E|0)==90)while(1){E=0;q=(c[a+4>>2]&-8)-o|0;e=q>>>0<d>>>0;d=e?q:d;b=e?a:b;e=c[a+16>>2]|0;if(e|0){a=e;E=90;continue}a=c[a+20>>2]|0;if(!a){i=d;j=b;break}else E=90}if((j|0)!=0?i>>>0<((c[8900]|0)-o|0)>>>0:0){f=c[8902]|0;if(j>>>0<f>>>0)ha();h=j+o|0;if(j>>>0>=h>>>0)ha();g=c[j+24>>2]|0;d=c[j+12>>2]|0;do if((d|0)==(j|0)){b=j+20|0;a=c[b>>2]|0;if(!a){b=j+16|0;a=c[b>>2]|0;if(!a){s=0;break}}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}if(b>>>0<f>>>0)ha();else{c[b>>2]=0;s=a;break}}else{e=c[j+8>>2]|0;if(e>>>0<f>>>0)ha();a=e+12|0;if((c[a>>2]|0)!=(j|0))ha();b=d+8|0;if((c[b>>2]|0)==(j|0)){c[a>>2]=d;c[b>>2]=e;s=d;break}else ha()}while(0);do if(g|0){a=c[j+28>>2]|0;b=35896+(a<<2)|0;if((j|0)==(c[b>>2]|0)){c[b>>2]=s;if(!s){c[8899]=c[8899]&~(1<<a);break}}else{if(g>>>0<(c[8902]|0)>>>0)ha();a=g+16|0;if((c[a>>2]|0)==(j|0))c[a>>2]=s;else c[g+20>>2]=s;if(!s)break}b=c[8902]|0;if(s>>>0<b>>>0)ha();c[s+24>>2]=g;a=c[j+16>>2]|0;do if(a|0)if(a>>>0<b>>>0)ha();else{c[s+16>>2]=a;c[a+24>>2]=s;break}while(0);a=c[j+20>>2]|0;if(a|0)if(a>>>0<(c[8902]|0)>>>0)ha();else{c[s+20>>2]=a;c[a+24>>2]=s;break}}while(0);do if(i>>>0>=16){c[j+4>>2]=o|3;c[h+4>>2]=i|1;c[h+i>>2]=i;a=i>>>3;if(i>>>0<256){d=35632+(a<<1<<2)|0;b=c[8898]|0;a=1<<a;if(b&a){a=d+8|0;b=c[a>>2]|0;if(b>>>0<(c[8902]|0)>>>0)ha();else{u=a;v=b}}else{c[8898]=b|a;u=d+8|0;v=d}c[u>>2]=h;c[v+12>>2]=h;c[h+8>>2]=v;c[h+12>>2]=d;break}a=i>>>8;if(a)if(i>>>0>16777215)d=31;else{K=(a+1048320|0)>>>16&8;L=a<<K;J=(L+520192|0)>>>16&4;L=L<<J;d=(L+245760|0)>>>16&2;d=14-(J|K|d)+(L<<d>>>15)|0;d=i>>>(d+7|0)&1|d<<1}else d=0;e=35896+(d<<2)|0;c[h+28>>2]=d;a=h+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[8899]|0;b=1<<d;if(!(a&b)){c[8899]=a|b;c[e>>2]=h;c[h+24>>2]=e;c[h+12>>2]=h;c[h+8>>2]=h;break}f=i<<((d|0)==31?0:25-(d>>>1)|0);a=c[e>>2]|0;while(1){if((c[a+4>>2]&-8|0)==(i|0)){d=a;E=148;break}b=a+16+(f>>>31<<2)|0;d=c[b>>2]|0;if(!d){E=145;break}else{f=f<<1;a=d}}if((E|0)==145)if(b>>>0<(c[8902]|0)>>>0)ha();else{c[b>>2]=h;c[h+24>>2]=a;c[h+12>>2]=h;c[h+8>>2]=h;break}else if((E|0)==148){a=d+8|0;b=c[a>>2]|0;L=c[8902]|0;if(b>>>0>=L>>>0&d>>>0>=L>>>0){c[b+12>>2]=h;c[a>>2]=h;c[h+8>>2]=b;c[h+12>>2]=d;c[h+24>>2]=0;break}else ha()}}else{L=i+o|0;c[j+4>>2]=L|3;L=j+L+4|0;c[L>>2]=c[L>>2]|1}while(0);L=j+8|0;return L|0}}}else o=-1;while(0);d=c[8900]|0;if(d>>>0>=o>>>0){a=d-o|0;b=c[8903]|0;if(a>>>0>15){L=b+o|0;c[8903]=L;c[8900]=a;c[L+4>>2]=a|1;c[L+a>>2]=a;c[b+4>>2]=o|3}else{c[8900]=0;c[8903]=0;c[b+4>>2]=d|3;L=b+d+4|0;c[L>>2]=c[L>>2]|1}L=b+8|0;return L|0}a=c[8901]|0;if(a>>>0>o>>>0){J=a-o|0;c[8901]=J;L=c[8904]|0;K=L+o|0;c[8904]=K;c[K+4>>2]=J|1;c[L+4>>2]=o|3;L=L+8|0;return L|0}do if(!(c[9016]|0)){a=oa(30)|0;if(!(a+-1&a)){c[9018]=a;c[9017]=a;c[9019]=-1;c[9020]=-1;c[9021]=0;c[9009]=0;c[9016]=(la(0)|0)&-16^1431655768;break}else ha()}while(0);h=o+48|0;g=c[9018]|0;i=o+47|0;f=g+i|0;g=0-g|0;j=f&g;if(j>>>0<=o>>>0){L=0;return L|0}a=c[9008]|0;if(a|0?(u=c[9006]|0,v=u+j|0,v>>>0<=u>>>0|v>>>0>a>>>0):0){L=0;return L|0}b:do if(!(c[9009]&4)){a=c[8904]|0;c:do if(a){d=36040;while(1){b=c[d>>2]|0;if(b>>>0<=a>>>0?(r=d+4|0,(b+(c[r>>2]|0)|0)>>>0>a>>>0):0){e=d;d=r;break}d=c[d+8>>2]|0;if(!d){E=173;break c}}a=f-(c[8901]|0)&g;if(a>>>0<2147483647){b=ka(a|0)|0;if((b|0)==((c[e>>2]|0)+(c[d>>2]|0)|0)){if((b|0)!=(-1|0)){h=b;f=a;E=193;break b}}else E=183}}else E=173;while(0);do if((E|0)==173?(t=ka(0)|0,(t|0)!=(-1|0)):0){a=t;b=c[9017]|0;d=b+-1|0;if(!(d&a))a=j;else a=j-a+(d+a&0-b)|0;b=c[9006]|0;d=b+a|0;if(a>>>0>o>>>0&a>>>0<2147483647){v=c[9008]|0;if(v|0?d>>>0<=b>>>0|d>>>0>v>>>0:0)break;b=ka(a|0)|0;if((b|0)==(t|0)){h=t;f=a;E=193;break b}else E=183}}while(0);d:do if((E|0)==183){d=0-a|0;do if(h>>>0>a>>>0&(a>>>0<2147483647&(b|0)!=(-1|0))?(w=c[9018]|0,w=i-a+w&0-w,w>>>0<2147483647):0)if((ka(w|0)|0)==(-1|0)){ka(d|0)|0;break d}else{a=w+a|0;break}while(0);if((b|0)!=(-1|0)){h=b;f=a;E=193;break b}}while(0);c[9009]=c[9009]|4;E=190}else E=190;while(0);if((((E|0)==190?j>>>0<2147483647:0)?(x=ka(j|0)|0,y=ka(0)|0,x>>>0<y>>>0&((x|0)!=(-1|0)&(y|0)!=(-1|0))):0)?(z=y-x|0,z>>>0>(o+40|0)>>>0):0){h=x;f=z;E=193}if((E|0)==193){a=(c[9006]|0)+f|0;c[9006]=a;if(a>>>0>(c[9007]|0)>>>0)c[9007]=a;i=c[8904]|0;do if(i){e=36040;do{a=c[e>>2]|0;b=e+4|0;d=c[b>>2]|0;if((h|0)==(a+d|0)){A=a;B=b;C=d;D=e;E=203;break}e=c[e+8>>2]|0}while((e|0)!=0);if(((E|0)==203?(c[D+12>>2]&8|0)==0:0)?i>>>0<h>>>0&i>>>0>=A>>>0:0){c[B>>2]=C+f;L=i+8|0;L=(L&7|0)==0?0:0-L&7;K=i+L|0;L=f-L+(c[8901]|0)|0;c[8904]=K;c[8901]=L;c[K+4>>2]=L|1;c[K+L+4>>2]=40;c[8905]=c[9020];break}a=c[8902]|0;if(h>>>0<a>>>0){c[8902]=h;j=h}else j=a;d=h+f|0;a=36040;while(1){if((c[a>>2]|0)==(d|0)){b=a;E=211;break}a=c[a+8>>2]|0;if(!a){b=36040;break}}if((E|0)==211)if(!(c[a+12>>2]&8)){c[b>>2]=h;l=a+4|0;c[l>>2]=(c[l>>2]|0)+f;l=h+8|0;l=h+((l&7|0)==0?0:0-l&7)|0;a=d+8|0;a=d+((a&7|0)==0?0:0-a&7)|0;k=l+o|0;g=a-l-o|0;c[l+4>>2]=o|3;do if((a|0)!=(i|0)){if((a|0)==(c[8903]|0)){L=(c[8900]|0)+g|0;c[8900]=L;c[8903]=k;c[k+4>>2]=L|1;c[k+L>>2]=L;break}b=c[a+4>>2]|0;if((b&3|0)==1){i=b&-8;f=b>>>3;e:do if(b>>>0>=256){h=c[a+24>>2]|0;e=c[a+12>>2]|0;do if((e|0)==(a|0)){d=a+16|0;e=d+4|0;b=c[e>>2]|0;if(!b){b=c[d>>2]|0;if(!b){J=0;break}}else d=e;while(1){e=b+20|0;f=c[e>>2]|0;if(f|0){b=f;d=e;continue}e=b+16|0;f=c[e>>2]|0;if(!f)break;else{b=f;d=e}}if(d>>>0<j>>>0)ha();else{c[d>>2]=0;J=b;break}}else{f=c[a+8>>2]|0;if(f>>>0<j>>>0)ha();b=f+12|0;if((c[b>>2]|0)!=(a|0))ha();d=e+8|0;if((c[d>>2]|0)==(a|0)){c[b>>2]=e;c[d>>2]=f;J=e;break}else ha()}while(0);if(!h)break;b=c[a+28>>2]|0;d=35896+(b<<2)|0;do if((a|0)!=(c[d>>2]|0)){if(h>>>0<(c[8902]|0)>>>0)ha();b=h+16|0;if((c[b>>2]|0)==(a|0))c[b>>2]=J;else c[h+20>>2]=J;if(!J)break e}else{c[d>>2]=J;if(J|0)break;c[8899]=c[8899]&~(1<<b);break e}while(0);e=c[8902]|0;if(J>>>0<e>>>0)ha();c[J+24>>2]=h;b=a+16|0;d=c[b>>2]|0;do if(d|0)if(d>>>0<e>>>0)ha();else{c[J+16>>2]=d;c[d+24>>2]=J;break}while(0);b=c[b+4>>2]|0;if(!b)break;if(b>>>0<(c[8902]|0)>>>0)ha();else{c[J+20>>2]=b;c[b+24>>2]=J;break}}else{d=c[a+8>>2]|0;e=c[a+12>>2]|0;b=35632+(f<<1<<2)|0;do if((d|0)!=(b|0)){if(d>>>0<j>>>0)ha();if((c[d+12>>2]|0)==(a|0))break;ha()}while(0);if((e|0)==(d|0)){c[8898]=c[8898]&~(1<<f);break}do if((e|0)==(b|0))G=e+8|0;else{if(e>>>0<j>>>0)ha();b=e+8|0;if((c[b>>2]|0)==(a|0)){G=b;break}ha()}while(0);c[d+12>>2]=e;c[G>>2]=d}while(0);a=a+i|0;g=i+g|0}a=a+4|0;c[a>>2]=c[a>>2]&-2;c[k+4>>2]=g|1;c[k+g>>2]=g;a=g>>>3;if(g>>>0<256){d=35632+(a<<1<<2)|0;b=c[8898]|0;a=1<<a;do if(!(b&a)){c[8898]=b|a;K=d+8|0;L=d}else{a=d+8|0;b=c[a>>2]|0;if(b>>>0>=(c[8902]|0)>>>0){K=a;L=b;break}ha()}while(0);c[K>>2]=k;c[L+12>>2]=k;c[k+8>>2]=L;c[k+12>>2]=d;break}a=g>>>8;do if(!a)d=0;else{if(g>>>0>16777215){d=31;break}K=(a+1048320|0)>>>16&8;L=a<<K;J=(L+520192|0)>>>16&4;L=L<<J;d=(L+245760|0)>>>16&2;d=14-(J|K|d)+(L<<d>>>15)|0;d=g>>>(d+7|0)&1|d<<1}while(0);e=35896+(d<<2)|0;c[k+28>>2]=d;a=k+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[8899]|0;b=1<<d;if(!(a&b)){c[8899]=a|b;c[e>>2]=k;c[k+24>>2]=e;c[k+12>>2]=k;c[k+8>>2]=k;break}f=g<<((d|0)==31?0:25-(d>>>1)|0);a=c[e>>2]|0;while(1){if((c[a+4>>2]&-8|0)==(g|0)){d=a;E=281;break}b=a+16+(f>>>31<<2)|0;d=c[b>>2]|0;if(!d){E=278;break}else{f=f<<1;a=d}}if((E|0)==278)if(b>>>0<(c[8902]|0)>>>0)ha();else{c[b>>2]=k;c[k+24>>2]=a;c[k+12>>2]=k;c[k+8>>2]=k;break}else if((E|0)==281){a=d+8|0;b=c[a>>2]|0;L=c[8902]|0;if(b>>>0>=L>>>0&d>>>0>=L>>>0){c[b+12>>2]=k;c[a>>2]=k;c[k+8>>2]=b;c[k+12>>2]=d;c[k+24>>2]=0;break}else ha()}}else{L=(c[8901]|0)+g|0;c[8901]=L;c[8904]=k;c[k+4>>2]=L|1}while(0);L=l+8|0;return L|0}else b=36040;while(1){a=c[b>>2]|0;if(a>>>0<=i>>>0?(F=a+(c[b+4>>2]|0)|0,F>>>0>i>>>0):0){b=F;break}b=c[b+8>>2]|0}g=b+-47|0;d=g+8|0;d=g+((d&7|0)==0?0:0-d&7)|0;g=i+16|0;d=d>>>0<g>>>0?i:d;a=d+8|0;e=h+8|0;e=(e&7|0)==0?0:0-e&7;L=h+e|0;e=f+-40-e|0;c[8904]=L;c[8901]=e;c[L+4>>2]=e|1;c[L+e+4>>2]=40;c[8905]=c[9020];e=d+4|0;c[e>>2]=27;c[a>>2]=c[9010];c[a+4>>2]=c[9011];c[a+8>>2]=c[9012];c[a+12>>2]=c[9013];c[9010]=h;c[9011]=f;c[9013]=0;c[9012]=a;a=d+24|0;do{a=a+4|0;c[a>>2]=7}while((a+4|0)>>>0<b>>>0);if((d|0)!=(i|0)){h=d-i|0;c[e>>2]=c[e>>2]&-2;c[i+4>>2]=h|1;c[d>>2]=h;a=h>>>3;if(h>>>0<256){d=35632+(a<<1<<2)|0;b=c[8898]|0;a=1<<a;if(b&a){a=d+8|0;b=c[a>>2]|0;if(b>>>0<(c[8902]|0)>>>0)ha();else{H=a;I=b}}else{c[8898]=b|a;H=d+8|0;I=d}c[H>>2]=i;c[I+12>>2]=i;c[i+8>>2]=I;c[i+12>>2]=d;break}a=h>>>8;if(a)if(h>>>0>16777215)d=31;else{K=(a+1048320|0)>>>16&8;L=a<<K;J=(L+520192|0)>>>16&4;L=L<<J;d=(L+245760|0)>>>16&2;d=14-(J|K|d)+(L<<d>>>15)|0;d=h>>>(d+7|0)&1|d<<1}else d=0;f=35896+(d<<2)|0;c[i+28>>2]=d;c[i+20>>2]=0;c[g>>2]=0;a=c[8899]|0;b=1<<d;if(!(a&b)){c[8899]=a|b;c[f>>2]=i;c[i+24>>2]=f;c[i+12>>2]=i;c[i+8>>2]=i;break}e=h<<((d|0)==31?0:25-(d>>>1)|0);a=c[f>>2]|0;while(1){if((c[a+4>>2]&-8|0)==(h|0)){d=a;E=307;break}b=a+16+(e>>>31<<2)|0;d=c[b>>2]|0;if(!d){E=304;break}else{e=e<<1;a=d}}if((E|0)==304)if(b>>>0<(c[8902]|0)>>>0)ha();else{c[b>>2]=i;c[i+24>>2]=a;c[i+12>>2]=i;c[i+8>>2]=i;break}else if((E|0)==307){a=d+8|0;b=c[a>>2]|0;L=c[8902]|0;if(b>>>0>=L>>>0&d>>>0>=L>>>0){c[b+12>>2]=i;c[a>>2]=i;c[i+8>>2]=b;c[i+12>>2]=d;c[i+24>>2]=0;break}else ha()}}}else{L=c[8902]|0;if((L|0)==0|h>>>0<L>>>0)c[8902]=h;c[9010]=h;c[9011]=f;c[9013]=0;c[8907]=c[9016];c[8906]=-1;a=0;do{L=35632+(a<<1<<2)|0;c[L+12>>2]=L;c[L+8>>2]=L;a=a+1|0}while((a|0)!=32);L=h+8|0;L=(L&7|0)==0?0:0-L&7;K=h+L|0;L=f+-40-L|0;c[8904]=K;c[8901]=L;c[K+4>>2]=L|1;c[K+L+4>>2]=40;c[8905]=c[9020]}while(0);a=c[8901]|0;if(a>>>0>o>>>0){J=a-o|0;c[8901]=J;L=c[8904]|0;K=L+o|0;c[8904]=K;c[K+4>>2]=J|1;c[L+4>>2]=o|3;L=L+8|0;return L|0}}c[(ef()|0)>>2]=12;L=0;return L|0}function hf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;if(!a)return;d=a+-8|0;h=c[8902]|0;if(d>>>0<h>>>0)ha();a=c[a+-4>>2]|0;b=a&3;if((b|0)==1)ha();e=a&-8;m=d+e|0;do if(!(a&1)){a=c[d>>2]|0;if(!b)return;k=d+(0-a)|0;j=a+e|0;if(k>>>0<h>>>0)ha();if((k|0)==(c[8903]|0)){a=m+4|0;b=c[a>>2]|0;if((b&3|0)!=3){q=k;g=j;break}c[8900]=j;c[a>>2]=b&-2;c[k+4>>2]=j|1;c[k+j>>2]=j;return}e=a>>>3;if(a>>>0<256){b=c[k+8>>2]|0;d=c[k+12>>2]|0;a=35632+(e<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0<h>>>0)ha();if((c[b+12>>2]|0)!=(k|0))ha()}if((d|0)==(b|0)){c[8898]=c[8898]&~(1<<e);q=k;g=j;break}if((d|0)!=(a|0)){if(d>>>0<h>>>0)ha();a=d+8|0;if((c[a>>2]|0)==(k|0))f=a;else ha()}else f=d+8|0;c[b+12>>2]=d;c[f>>2]=b;q=k;g=j;break}f=c[k+24>>2]|0;d=c[k+12>>2]|0;do if((d|0)==(k|0)){b=k+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){i=0;break}}else b=d;while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}if(b>>>0<h>>>0)ha();else{c[b>>2]=0;i=a;break}}else{e=c[k+8>>2]|0;if(e>>>0<h>>>0)ha();a=e+12|0;if((c[a>>2]|0)!=(k|0))ha();b=d+8|0;if((c[b>>2]|0)==(k|0)){c[a>>2]=d;c[b>>2]=e;i=d;break}else ha()}while(0);if(f){a=c[k+28>>2]|0;b=35896+(a<<2)|0;if((k|0)==(c[b>>2]|0)){c[b>>2]=i;if(!i){c[8899]=c[8899]&~(1<<a);q=k;g=j;break}}else{if(f>>>0<(c[8902]|0)>>>0)ha();a=f+16|0;if((c[a>>2]|0)==(k|0))c[a>>2]=i;else c[f+20>>2]=i;if(!i){q=k;g=j;break}}d=c[8902]|0;if(i>>>0<d>>>0)ha();c[i+24>>2]=f;a=k+16|0;b=c[a>>2]|0;do if(b|0)if(b>>>0<d>>>0)ha();else{c[i+16>>2]=b;c[b+24>>2]=i;break}while(0);a=c[a+4>>2]|0;if(a)if(a>>>0<(c[8902]|0)>>>0)ha();else{c[i+20>>2]=a;c[a+24>>2]=i;q=k;g=j;break}else{q=k;g=j}}else{q=k;g=j}}else{q=d;g=e}while(0);if(q>>>0>=m>>>0)ha();a=m+4|0;b=c[a>>2]|0;if(!(b&1))ha();if(!(b&2)){if((m|0)==(c[8904]|0)){p=(c[8901]|0)+g|0;c[8901]=p;c[8904]=q;c[q+4>>2]=p|1;if((q|0)!=(c[8903]|0))return;c[8903]=0;c[8900]=0;return}if((m|0)==(c[8903]|0)){p=(c[8900]|0)+g|0;c[8900]=p;c[8903]=q;c[q+4>>2]=p|1;c[q+p>>2]=p;return}g=(b&-8)+g|0;e=b>>>3;do if(b>>>0>=256){f=c[m+24>>2]|0;a=c[m+12>>2]|0;do if((a|0)==(m|0)){b=m+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){n=0;break}}else b=d;while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}if(b>>>0<(c[8902]|0)>>>0)ha();else{c[b>>2]=0;n=a;break}}else{b=c[m+8>>2]|0;if(b>>>0<(c[8902]|0)>>>0)ha();d=b+12|0;if((c[d>>2]|0)!=(m|0))ha();e=a+8|0;if((c[e>>2]|0)==(m|0)){c[d>>2]=a;c[e>>2]=b;n=a;break}else ha()}while(0);if(f|0){a=c[m+28>>2]|0;b=35896+(a<<2)|0;if((m|0)==(c[b>>2]|0)){c[b>>2]=n;if(!n){c[8899]=c[8899]&~(1<<a);break}}else{if(f>>>0<(c[8902]|0)>>>0)ha();a=f+16|0;if((c[a>>2]|0)==(m|0))c[a>>2]=n;else c[f+20>>2]=n;if(!n)break}d=c[8902]|0;if(n>>>0<d>>>0)ha();c[n+24>>2]=f;a=m+16|0;b=c[a>>2]|0;do if(b|0)if(b>>>0<d>>>0)ha();else{c[n+16>>2]=b;c[b+24>>2]=n;break}while(0);a=c[a+4>>2]|0;if(a|0)if(a>>>0<(c[8902]|0)>>>0)ha();else{c[n+20>>2]=a;c[a+24>>2]=n;break}}}else{b=c[m+8>>2]|0;d=c[m+12>>2]|0;a=35632+(e<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0<(c[8902]|0)>>>0)ha();if((c[b+12>>2]|0)!=(m|0))ha()}if((d|0)==(b|0)){c[8898]=c[8898]&~(1<<e);break}if((d|0)!=(a|0)){if(d>>>0<(c[8902]|0)>>>0)ha();a=d+8|0;if((c[a>>2]|0)==(m|0))l=a;else ha()}else l=d+8|0;c[b+12>>2]=d;c[l>>2]=b}while(0);c[q+4>>2]=g|1;c[q+g>>2]=g;if((q|0)==(c[8903]|0)){c[8900]=g;return}}else{c[a>>2]=b&-2;c[q+4>>2]=g|1;c[q+g>>2]=g}a=g>>>3;if(g>>>0<256){d=35632+(a<<1<<2)|0;b=c[8898]|0;a=1<<a;if(b&a){a=d+8|0;b=c[a>>2]|0;if(b>>>0<(c[8902]|0)>>>0)ha();else{o=a;p=b}}else{c[8898]=b|a;o=d+8|0;p=d}c[o>>2]=q;c[p+12>>2]=q;c[q+8>>2]=p;c[q+12>>2]=d;return}a=g>>>8;if(a)if(g>>>0>16777215)d=31;else{o=(a+1048320|0)>>>16&8;p=a<<o;n=(p+520192|0)>>>16&4;p=p<<n;d=(p+245760|0)>>>16&2;d=14-(n|o|d)+(p<<d>>>15)|0;d=g>>>(d+7|0)&1|d<<1}else d=0;e=35896+(d<<2)|0;c[q+28>>2]=d;c[q+20>>2]=0;c[q+16>>2]=0;a=c[8899]|0;b=1<<d;do if(a&b){f=g<<((d|0)==31?0:25-(d>>>1)|0);a=c[e>>2]|0;while(1){if((c[a+4>>2]&-8|0)==(g|0)){d=a;e=130;break}b=a+16+(f>>>31<<2)|0;d=c[b>>2]|0;if(!d){e=127;break}else{f=f<<1;a=d}}if((e|0)==127)if(b>>>0<(c[8902]|0)>>>0)ha();else{c[b>>2]=q;c[q+24>>2]=a;c[q+12>>2]=q;c[q+8>>2]=q;break}else if((e|0)==130){a=d+8|0;b=c[a>>2]|0;p=c[8902]|0;if(b>>>0>=p>>>0&d>>>0>=p>>>0){c[b+12>>2]=q;c[a>>2]=q;c[q+8>>2]=b;c[q+12>>2]=d;c[q+24>>2]=0;break}else ha()}}else{c[8899]=a|b;c[e>>2]=q;c[q+24>>2]=e;c[q+12>>2]=q;c[q+8>>2]=q}while(0);q=(c[8906]|0)+-1|0;c[8906]=q;if(!q)a=36048;else return;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[8906]=-1;return}function jf(){}function kf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (C=d,a-c>>>0|0)|0}function lf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (C=b+d+(c>>>0<a>>>0|0)>>>0,c|0)|0}function mf(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b>>c;return a>>>c|(b&(1<<c)-1)<<32-c}C=(b|0)<0?-1:0;return b>>c-32|0}function nf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;h=b&3;i=d|d<<8|d<<16|d<<24;g=f&~3;if(h){h=b+4-h|0;while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(g|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function of(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b>>>c;return a>>>c|(b&(1<<c)-1)<<32-c}C=0;return b>>>c-32|0}function pf(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b<<c|(a&(1<<c)-1<<32-c)>>>32-c;return a<<c}C=a<<c-32;return 0}function qf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return ma(b|0,d|0,e|0)|0;f=b|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function rf(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (a[m+(b>>>24)>>0]|0)+24|0}function sf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=_(e,f)|0;d=a>>>16;a=(c>>>16)+(_(e,d)|0)|0;e=b>>>16;b=_(e,f)|0;return (C=(a>>>16)+(_(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function tf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=kf(j^a|0,i^b|0,j|0,i|0)|0;g=C;a=f^j;b=e^i;return kf((yf(h,g,kf(f^c|0,e^d|0,f|0,e|0)|0,C,0)|0)^a|0,C^b|0,a|0,b|0)|0}function uf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+16|0;j=f|0;h=b>>31|((b|0)<0?-1:0)<<1;g=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;l=e>>31|((e|0)<0?-1:0)<<1;k=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;a=kf(h^a|0,g^b|0,h|0,g|0)|0;b=C;yf(a,b,kf(l^d|0,k^e|0,l|0,k|0)|0,C,j)|0;e=kf(c[j>>2]^h|0,c[j+4>>2]^g|0,h|0,g|0)|0;d=C;i=f;return (C=d,e)|0}function vf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=sf(e,f)|0;a=C;return (C=(_(b,f)|0)+(_(d,e)|0)+a|a&0,c|0|0)|0}function wf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return yf(a,b,c,d,0)|0}function xf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g|0;yf(a,b,d,e,f)|0;i=g;return (C=c[f+4>>2]|0,c[f>>2]|0)|0}function yf(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (C=n,f)|0}else{if(!g){n=0;f=0;return (C=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (C=n,f)|0}}g=(i|0)==0;do if(h){if(!g){g=(aa(i|0)|0)-(aa(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<<i;b=k>>>(m>>>0)&b;g=0;i=l<<i;break}if(!f){n=0;f=0;return (C=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (C=n,f)|0}g=h-1|0;if(g&h|0){i=(aa(h|0)|0)+33-(aa(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<<m|l>>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<<p&j;i=(k<<p|l>>>(o>>>0))&j|l<<m&i-33>>31;break}if(f|0){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (C=o,p)|0}else{p=rf(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (C=o,p)|0}}else{if(g){if(f|0){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (C=o,p)|0}if(!l){if(f|0){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (C=o,p)|0}g=i-1|0;if(!(g&i)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((rf(i|0)|0)>>>0);return (C=o,p)|0}g=(aa(i|0)|0)-(aa(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<<i|l>>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<<i;break}if(!f){o=0;p=0;return (C=o,p)|0}c[f>>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (C=o,p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=lf(m|0,l|0,-1,-1)|0;d=C;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;kf(k|0,d|0,e|0,n|0)|0;p=C;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=kf(e|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=C;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f|0){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (C=o,p)|0}function zf(a,b){a=a|0;b=b|0;return qa[a&1](b|0)|0}function Af(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return ra[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)|0}function Bf(a,b,c){a=a|0;b=b|0;c=c|0;return sa[a&3](b|0,c|0)|0}function Cf(a){a=a|0;ba(0);return 0}function Df(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ba(1);return 0}function Ef(a,b){a=a|0;b=b|0;ba(2);return 0}\n\n// EMSCRIPTEN_END_FUNCS\nvar qa=[Cf,Nc];var ra=[Df,Pc,Rc,Df];var sa=[Ef,Oc,Qc,Ef];return{_olm_create_inbound_session_from:xc,_olm_unpickle_outbound_group_session:Je,_olm_clear_utility:bc,_olm_outbound_group_session_message_index:Qe,_olm_account_sign:nc,_bitshift64Lshr:of,_olm_account_one_time_keys:pc,_olm_encrypt_random_length:Fc,_olm_init_inbound_group_session:qe,_olm_matches_inbound_session:Bc,_bitshift64Ashr:mf,_memcpy:qf,_olm_error:Rb,_olm_session_has_received_message:Ac,_olm_create_account_random_length:ic,_olm_inbound_group_session:ne,_olm_outbound_group_session_last_error:Ge,_olm_utility_last_error:Ub,_olm_pickle_inbound_group_session:te,_free:hf,_olm_inbound_group_session_id_length:xe,_olm_unpickle_session:hc,_olm_encrypt_message_type:Ec,_olm_init_outbound_group_session_random_length:Ke,_olm_get_library_version:Qb,_olm_pickle_inbound_group_session_length:se,_olm_clear_account:$b,_olm_decrypt_max_plaintext_length:Ic,_olm_group_decrypt:we,_olm_group_decrypt_max_plaintext_length:ve,_olm_remove_one_time_keys:Dc,_olm_inbound_group_session_id:ye,_olm_import_inbound_group_session:re,_olm_clear_inbound_group_session:oe,_olm_export_inbound_group_session_length:Be,_olm_export_inbound_group_session:Ce,_olm_account_one_time_keys_length:oc,_olm_unpickle_inbound_group_session:ue,_olm_inbound_group_session_first_known_index:ze,_olm_inbound_group_session_last_error:pe,_olm_pickle_session:fc,_olm_encrypt:Hc,_olm_session_id:zc,_olm_sha256:Lc,_olm_account_signature_length:mc,_olm_decrypt:Jc,_olm_account_max_number_of_one_time_keys:rc,_olm_matches_inbound_session_from:Cc,_olm_outbound_group_session_size:De,_olm_account_identity_keys_length:kc,_olm_utility:_b,_olm_create_account:jc,_olm_account_generate_one_time_keys:tc,_olm_utility_size:Xb,_olm_account_size:Vb,_olm_ed25519_verify:Mc,_memset:nf,_olm_create_outbound_session_random_length:uc,_olm_pickle_outbound_group_session:Ie,_olm_group_encrypt_message_length:Me,_olm_pickle_outbound_group_session_length:He,_olm_account_generate_one_time_keys_random_length:sc,_olm_outbound_group_session_key:Se,_olm_group_encrypt:Ne,_olm_account_identity_keys:lc,_i64Subtract:kf,_olm_unpickle_account:gc,_olm_clear_session:ac,_olm_pickle_session_length:dc,_olm_create_outbound_session:vc,_olm_inbound_group_session_size:me,_olm_sha256_length:Kc,_malloc:gf,_olm_account:Yb,_olm_pickle_account_length:cc,_olm_session_size:Wb,_olm_inbound_group_session_is_verified:Ae,_olm_session:Zb,_bitshift64Shl:pf,_olm_outbound_group_session_id_length:Oe,_olm_create_inbound_session:wc,_olm_clear_outbound_group_session:Fe,_olm_session_id_length:yc,_i64Add:lf,_olm_account_last_error:Sb,_olm_outbound_group_session:Ee,_olm_encrypt_message_length:Gc,_olm_pickle_account:ec,_olm_account_mark_keys_as_published:qc,_olm_init_outbound_group_session:Le,_olm_outbound_group_session_key_length:Re,_olm_session_last_error:Tb,_olm_outbound_group_session_id:Pe,runPostSets:jf,stackAlloc:ta,stackSave:ua,stackRestore:va,establishStackSpace:wa,setThrew:xa,setTempRet0:Aa,getTempRet0:Ba,dynCall_ii:zf,dynCall_iiiiiiiiii:Af,dynCall_iii:Bf}})\n\n\n// EMSCRIPTEN_END_ASM\n(a.t,a.u,x);a._olm_create_inbound_session_from=d._olm_create_inbound_session_from;a._olm_unpickle_outbound_group_session=d._olm_unpickle_outbound_group_session;a._olm_clear_utility=\nd._olm_clear_utility;a._olm_outbound_group_session_message_index=d._olm_outbound_group_session_message_index;a._olm_account_sign=d._olm_account_sign;var pb=a._bitshift64Lshr=d._bitshift64Lshr;a._olm_account_one_time_keys=d._olm_account_one_time_keys;a._olm_encrypt_random_length=d._olm_encrypt_random_length;a._olm_init_inbound_group_session=d._olm_init_inbound_group_session;a._olm_matches_inbound_session=d._olm_matches_inbound_session;var nb=a._bitshift64Ashr=d._bitshift64Ashr,rb=a._memcpy=d._memcpy;\na._olm_error=d._olm_error;a._olm_account_generate_one_time_keys=d._olm_account_generate_one_time_keys;a._olm_create_account_random_length=d._olm_create_account_random_length;a._olm_inbound_group_session=d._olm_inbound_group_session;a._olm_outbound_group_session_last_error=d._olm_outbound_group_session_last_error;a._olm_utility_last_error=d._olm_utility_last_error;a._olm_pickle_inbound_group_session=d._olm_pickle_inbound_group_session;var va=a._free=d._free;a.runPostSets=d.runPostSets;a._olm_inbound_group_session_id_length=\nd._olm_inbound_group_session_id_length;a._olm_unpickle_session=d._olm_unpickle_session;a._olm_encrypt_message_type=d._olm_encrypt_message_type;a._olm_init_outbound_group_session_random_length=d._olm_init_outbound_group_session_random_length;a._olm_get_library_version=d._olm_get_library_version;a._olm_pickle_inbound_group_session_length=d._olm_pickle_inbound_group_session_length;a._olm_clear_account=d._olm_clear_account;a._olm_decrypt_max_plaintext_length=d._olm_decrypt_max_plaintext_length;a._olm_group_decrypt=\nd._olm_group_decrypt;a._olm_account_last_error=d._olm_account_last_error;a._olm_remove_one_time_keys=d._olm_remove_one_time_keys;a._olm_inbound_group_session_id=d._olm_inbound_group_session_id;a._olm_import_inbound_group_session=d._olm_import_inbound_group_session;a._olm_clear_inbound_group_session=d._olm_clear_inbound_group_session;a._olm_export_inbound_group_session_length=d._olm_export_inbound_group_session_length;a._olm_export_inbound_group_session=d._olm_export_inbound_group_session;a._olm_account_one_time_keys_length=\nd._olm_account_one_time_keys_length;a._olm_unpickle_inbound_group_session=d._olm_unpickle_inbound_group_session;a._olm_inbound_group_session_first_known_index=d._olm_inbound_group_session_first_known_index;a._olm_inbound_group_session_last_error=d._olm_inbound_group_session_last_error;a._olm_pickle_session=d._olm_pickle_session;a._olm_encrypt=d._olm_encrypt;a._olm_session_id=d._olm_session_id;a._olm_sha256=d._olm_sha256;a._olm_account_signature_length=d._olm_account_signature_length;a._olm_decrypt=\nd._olm_decrypt;a._olm_account_max_number_of_one_time_keys=d._olm_account_max_number_of_one_time_keys;a._olm_matches_inbound_session_from=d._olm_matches_inbound_session_from;a._olm_outbound_group_session_size=d._olm_outbound_group_session_size;a._olm_account_identity_keys_length=d._olm_account_identity_keys_length;a._olm_utility=d._olm_utility;a._olm_create_account=d._olm_create_account;a._olm_session_has_received_message=d._olm_session_has_received_message;a._olm_utility_size=d._olm_utility_size;\na._olm_account_size=d._olm_account_size;a._olm_ed25519_verify=d._olm_ed25519_verify;var ob=a._memset=d._memset;a._olm_create_outbound_session_random_length=d._olm_create_outbound_session_random_length;a._olm_pickle_outbound_group_session=d._olm_pickle_outbound_group_session;a._olm_group_encrypt_message_length=d._olm_group_encrypt_message_length;a._olm_pickle_outbound_group_session_length=d._olm_pickle_outbound_group_session_length;a._olm_account_generate_one_time_keys_random_length=d._olm_account_generate_one_time_keys_random_length;\na._olm_outbound_group_session_key=d._olm_outbound_group_session_key;a._olm_group_encrypt=d._olm_group_encrypt;a._olm_pickle_account_length=d._olm_pickle_account_length;var lb=a._i64Subtract=d._i64Subtract;a._olm_unpickle_account=d._olm_unpickle_account;a._olm_clear_session=d._olm_clear_session;a._olm_pickle_session_length=d._olm_pickle_session_length;a._olm_create_outbound_session=d._olm_create_outbound_session;a._olm_inbound_group_session_size=d._olm_inbound_group_session_size;a._olm_sha256_length=\nd._olm_sha256_length;var X=a._malloc=d._malloc;a._olm_account=d._olm_account;a._olm_account_identity_keys=d._olm_account_identity_keys;a._olm_session_size=d._olm_session_size;a._olm_inbound_group_session_is_verified=d._olm_inbound_group_session_is_verified;a._olm_session=d._olm_session;var qb=a._bitshift64Shl=d._bitshift64Shl;a._olm_outbound_group_session_id_length=d._olm_outbound_group_session_id_length;a._olm_create_inbound_session=d._olm_create_inbound_session;a._olm_clear_outbound_group_session=\nd._olm_clear_outbound_group_session;a._olm_session_id_length=d._olm_session_id_length;var mb=a._i64Add=d._i64Add;a._olm_group_decrypt_max_plaintext_length=d._olm_group_decrypt_max_plaintext_length;a._olm_outbound_group_session=d._olm_outbound_group_session;a._olm_encrypt_message_length=d._olm_encrypt_message_length;a._olm_pickle_account=d._olm_pickle_account;a._olm_account_mark_keys_as_published=d._olm_account_mark_keys_as_published;a._olm_init_outbound_group_session=d._olm_init_outbound_group_session;\na._olm_outbound_group_session_key_length=d._olm_outbound_group_session_key_length;a._olm_session_last_error=d._olm_session_last_error;a._olm_outbound_group_session_id=d._olm_outbound_group_session_id;a.dynCall_ii=d.dynCall_ii;a.dynCall_iiiiiiiiii=d.dynCall_iiiiiiiiii;a.dynCall_iii=d.dynCall_iii;e.j=d.stackAlloc;e.f=d.stackSave;e.d=d.stackRestore;e.J=d.establishStackSpace;e.C=d.setTempRet0;e.A=d.getTempRet0;T.prototype=Error();T.prototype.constructor=T;var jb,Qa=null,ea=function b(){a.calledRun||xa();\na.calledRun||(ea=b)};a.callMain=a.H=function(b){function c(){for(var a=0;3>a;a++)d.push(0)}b=b||[];Y||(Y=!0,S(la));var f=b.length+1,d=[K(ia(a.thisProgram),\"i8\",0)];c();for(var l=0;l<f-1;l+=1)d.push(K(ia(b[l]),\"i8\",0)),c();d.push(0);d=K(d,\"i32\",0);try{var h=a._main(f,d,0);Ra(h,!0)}catch(e){if(!(e instanceof T))if(\"SimulateInfiniteLoop\"==e)a.noExitRuntime=!0;else throw e&&\"object\"===typeof e&&e.stack&&a.o(\"exception thrown: \"+[e,e.stack]),e;}finally{}};a.run=a.run=xa;a.exit=a.exit=Ra;var Ta=[];a.abort=\na.abort=Q;if(a.preInit)for(\"function\"==typeof a.preInit&&(a.preInit=[a.preInit]);0<a.preInit.length;)a.preInit.pop()();var Pa=!1;a.noInitialRun&&(Pa=!1);xa();var q=1;L.prototype.free=function(){a._olm_clear_outbound_group_session(this.a);y(this.a)};L.prototype.pickle=k(function(b){b=m(b);var c=v(a._olm_pickle_outbound_group_session_length)(this.a),f=h(b),d=h(c+q);v(a._olm_pickle_outbound_group_session)(this.a,f,b.length,d,c);return r(d)});L.prototype.unpickle=k(function(b,c){var f=m(b),d=h(f),l=m(c),\ne=h(l);v(a._olm_unpickle_outbound_group_session)(this.a,d,f.length,e,l.length)});L.prototype.create=k(function(){var b=v(a._olm_init_outbound_group_session_random_length)(this.a),c=ba(b);v(a._olm_init_outbound_group_session)(this.a,c,b)});L.prototype.encrypt=function(b){var c,f,d;try{d=a.lengthBytesUTF8(b);var e=v(a._olm_group_encrypt_message_length)(this.a,d);c=u(d+1);a.stringToUTF8(b,c,d+1);f=u(e+q);v(a._olm_group_encrypt)(this.a,c,d,f,e);a.setValue(f+e,0,\"i8\");return a.UTF8ToString(f)}finally{void 0!==\nc&&(na(c,d+1),y(c)),void 0!==f&&y(f)}};L.prototype.session_id=k(function(){var b=v(a._olm_outbound_group_session_id_length)(this.a),c=h(b+q);v(a._olm_outbound_group_session_id)(this.a,c,b);return r(c)});L.prototype.session_key=k(function(){var b=v(a._olm_outbound_group_session_key_length)(this.a),c=h(b+q);v(a._olm_outbound_group_session_key)(this.a,c,b);return r(c)});L.prototype.message_index=function(){return v(a._olm_outbound_group_session_message_index)(this.a)};N.OutboundGroupSession=L;q=1;I.prototype.free=\nfunction(){a._olm_clear_inbound_group_session(this.a);y(this.a)};I.prototype.pickle=k(function(b){b=m(b);var c=F(a._olm_pickle_inbound_group_session_length)(this.a),f=h(b),d=h(c+q);F(a._olm_pickle_inbound_group_session)(this.a,f,b.length,d,c);return r(d)});I.prototype.unpickle=k(function(b,c){var f=m(b),d=h(f),e=m(c),k=h(e);F(a._olm_unpickle_inbound_group_session)(this.a,d,f.length,k,e.length)});I.prototype.create=k(function(b){b=m(b);var c=h(b);F(a._olm_init_inbound_group_session)(this.a,c,b.length)});\nI.prototype.import_session=k(function(b){b=m(b);var c=h(b);F(a._olm_import_inbound_group_session)(this.a,c,b.length)});I.prototype.decrypt=k(function(b){var c,f,d;try{c=u(b.length);a.writeAsciiToMemory(b,c,!0);var e=F(a._olm_group_decrypt_max_plaintext_length)(this.a,c,b.length);a.writeAsciiToMemory(b,c,!0);f=u(e+q);var k=h(4);d=F(a._olm_group_decrypt)(this.a,c,b.length,f,e,k);a.setValue(f+d,0,\"i8\");return{plaintext:sa(f),message_index:a.getValue(k,\"i32\")}}finally{void 0!==c&&y(c),void 0!==f&&(na(f,\nd+q),y(f))}});I.prototype.session_id=k(function(){var b=F(a._olm_inbound_group_session_id_length)(this.a),c=h(b+q);F(a._olm_inbound_group_session_id)(this.a,c,b);return r(c)});I.prototype.first_known_index=k(function(){return F(a._olm_inbound_group_session_first_known_index)(this.a)});I.prototype.export_session=k(function(b){var c=F(a._olm_export_inbound_group_session_length)(this.a),d=h(c+q);v(a._olm_export_inbound_group_session)(this.a,d,c,b);return r(d)});N.InboundGroupSession=I;var Ua=a.Runtime,\nu=a._malloc,y=a._free,r=a.Pointer_stringify,aa=a._olm_error(),q=1;C.prototype.free=function(){a._olm_clear_account(this.a);y(this.a)};C.prototype.create=k(function(){var b=t(a._olm_create_account_random_length)(this.a),c=ba(b);t(a._olm_create_account)(this.a,c,b)});C.prototype.identity_keys=k(function(){var b=t(a._olm_account_identity_keys_length)(this.a),c=h(b+q);t(a._olm_account_identity_keys)(this.a,c,b);return r(c)});C.prototype.sign=k(function(b){var c=t(a._olm_account_signature_length)(this.a);\nb=m(b);var d=h(b),e=h(c+q);t(a._olm_account_sign)(this.a,d,b.length,e,c);return r(e)});C.prototype.one_time_keys=k(function(){var b=t(a._olm_account_one_time_keys_length)(this.a),c=h(b+q);t(a._olm_account_one_time_keys)(this.a,c,b);return r(c)});C.prototype.mark_keys_as_published=k(function(){t(a._olm_account_mark_keys_as_published)(this.a)});C.prototype.max_number_of_one_time_keys=k(function(){return t(a._olm_account_max_number_of_one_time_keys)(this.a)});C.prototype.generate_one_time_keys=k(function(b){var c=\nt(a._olm_account_generate_one_time_keys_random_length)(this.a,b),d=ba(c);t(a._olm_account_generate_one_time_keys)(this.a,b,d,c)});C.prototype.remove_one_time_keys=k(function(b){t(a._olm_remove_one_time_keys)(this.a,b.a)});C.prototype.pickle=k(function(b){b=m(b);var c=t(a._olm_pickle_account_length)(this.a),d=h(b),e=h(c+q);t(a._olm_pickle_account)(this.a,d,b.length,e,c);return r(e)});C.prototype.unpickle=k(function(b,c){var d=m(b),e=h(d),l=m(c),k=h(l);t(a._olm_unpickle_account)(this.a,e,d.length,k,\nl.length)});w.prototype.free=function(){a._olm_clear_session(this.a);y(this.a)};w.prototype.pickle=k(function(b){b=m(b);var c=p(a._olm_pickle_session_length)(this.a),d=h(b),e=h(c+q);p(a._olm_pickle_session)(this.a,d,b.length,e,c);return r(e)});w.prototype.unpickle=k(function(b,c){var d=m(b),e=h(d),l=m(c),k=h(l);p(a._olm_unpickle_session)(this.a,e,d.length,k,l.length)});w.prototype.create_outbound=k(function(b,c,d){var e=p(a._olm_create_outbound_session_random_length)(this.a),l=ba(e);c=m(c);d=m(d);\nvar k=h(c),q=h(d);p(a._olm_create_outbound_session)(this.a,b.a,k,c.length,q,d.length,l,e)});w.prototype.create_inbound=k(function(b,c){var d=m(c),e=h(d);p(a._olm_create_inbound_session)(this.a,b.a,e,d.length)});w.prototype.create_inbound_from=k(function(b,c,d){c=m(c);var e=h(c);d=m(d);var l=h(d);p(a._olm_create_inbound_session_from)(this.a,b.a,e,c.length,l,d.length)});w.prototype.session_id=k(function(){var b=p(a._olm_session_id_length)(this.a),c=h(b+q);p(a._olm_session_id)(this.a,c,b);return r(c)});\nw.prototype.has_received_message=function(){return p(a._olm_session_has_received_message)(this.a)?!0:!1};w.prototype.matches_inbound=k(function(b){b=m(b);var c=h(b);return p(a._olm_matches_inbound_session)(this.a,c,b.length)?!0:!1});w.prototype.matches_inbound_from=k(function(b,c){var d=m(b),e=h(d),l=m(c),k=h(l);return p(a._olm_matches_inbound_session_from)(this.a,e,d.length,k,l.length)?!0:!1});w.prototype.encrypt=k(function(b){var c,d,e;try{var h=p(a._olm_encrypt_random_length)(this.a),k=p(a._olm_encrypt_message_type)(this.a);\ne=a.lengthBytesUTF8(b);var m=p(a._olm_encrypt_message_length)(this.a,e),r=ba(h);c=u(e+1);a.stringToUTF8(b,c,e+1);d=u(m+q);p(a._olm_encrypt)(this.a,c,e,r,h,d,m);a.setValue(d+m,0,\"i8\");return{type:k,body:a.UTF8ToString(d)}}finally{void 0!==c&&(na(c,e+1),y(c)),void 0!==d&&y(d)}});w.prototype.decrypt=k(function(b,c){var d,e,h;try{d=u(c.length);a.writeAsciiToMemory(c,d,!0);h=p(a._olm_decrypt_max_plaintext_length)(this.a,b,d,c.length);a.writeAsciiToMemory(c,d,!0);e=u(h+q);var k=p(a._olm_decrypt)(this.a,\nb,d,c.length,e,h);a.setValue(e+k,0,\"i8\");return sa(e)}finally{void 0!==d&&y(d),void 0!==e&&(na(e,h+q),y(e))}});oa.prototype.free=function(){a._olm_clear_utility(this.a);y(this.a)};oa.prototype.sha256=k(function(b){var c=ya(a._olm_sha256_length)(this.a);b=m(b);var d=h(b),e=h(c+q);ya(a._olm_sha2516)(this.a,d,b.length(),e,c);return r(e)});oa.prototype.ed25519_verify=k(function(b,c,d){b=m(b);var e=h(b);c=m(c);var k=h(c);d=m(d);var n=h(d);ya(a._olm_ed25519_verify)(this.a,e,b.length,k,c.length,n,d.length)});\nN.Account=C;N.Session=w;N.Utility=oa;N.get_library_version=k(function(){var b=h(3);a._olm_get_library_version(b,b+1,b+2);return[W(b,\"i8\"),W(b+1,\"i8\"),W(b+2,\"i8\")]})})();\"undefined\"!==typeof module&&module.exports&&(module.exports=N);\"undefined\"!==typeof window&&(window.Olm=N);\n\n"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/vendors~e2e-export.js b/riot/bundles/f5c70ee9a294f6e4590e/vendors~e2e-export.js deleted file mode 100644 index 2e1fbbb..0000000 --- a/riot/bundles/f5c70ee9a294f6e4590e/vendors~e2e-export.js +++ /dev/null @@ -1,3 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{180:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=p(r(31)),a=p(r(65)),i=p(r(729)),o=p(r(0)),s=p(r(1)),l=r(2),u=d(r(17)),c=d(r(486)),f=p(r(3));function d(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function p(e){return e&&e.__esModule?e:{default:e}}t.default=o.default.createClass({displayName:"ExportE2eKeysDialog",propTypes:{matrixClient:s.default.instanceOf(u.MatrixClient).isRequired,onFinished:s.default.func.isRequired},getInitialState:function(){return{phase:1,errStr:null}},componentWillMount:function(){this._unmounted=!1},componentWillUnmount:function(){this._unmounted=!0},_onPassphraseFormSubmit:function(e){e.preventDefault();var t=this.refs.passphrase1.value;return t!==this.refs.passphrase2.value?(this.setState({errStr:(0,l._t)("Passphrases must match")}),!1):t?(this._startExport(t),!1):(this.setState({errStr:(0,l._t)("Passphrase must not be empty")}),!1)},_startExport:function(e){var t=this;a.default.resolve().then(function(){return t.props.matrixClient.exportRoomKeys()}).then(function(t){return c.encryptMegolmKeyFile((0,n.default)(t),e)}).then(function(e){var r=new Blob([e],{type:"text/plain;charset=us-ascii"});i.default.saveAs(r,"riot-keys.txt"),t.props.onFinished(!0)}).catch(function(e){if(console.error("Error exporting e2e keys:",e),!t._unmounted){var r=e.friendlyText||(0,l._t)("Unknown error");t.setState({errStr:r,phase:1})}}),this.setState({errStr:null,phase:2})},_onCancelClick:function(e){return e.preventDefault(),this.props.onFinished(!1),!1},render:function(){var e=f.default.getComponent("views.dialogs.BaseDialog"),t=2===this.state.phase;return o.default.createElement(e,{className:"mx_exportE2eKeysDialog",onFinished:this.props.onFinished,title:(0,l._t)("Export room keys")},o.default.createElement("form",{onSubmit:this._onPassphraseFormSubmit},o.default.createElement("div",{className:"mx_Dialog_content"},o.default.createElement("p",null,(0,l._t)("This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.")),o.default.createElement("p",null,(0,l._t)("The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.")),o.default.createElement("div",{className:"error"},this.state.errStr),o.default.createElement("div",{className:"mx_E2eKeysDialog_inputTable"},o.default.createElement("div",{className:"mx_E2eKeysDialog_inputRow"},o.default.createElement("div",{className:"mx_E2eKeysDialog_inputLabel"},o.default.createElement("label",{htmlFor:"passphrase1"},(0,l._t)("Enter passphrase"))),o.default.createElement("div",{className:"mx_E2eKeysDialog_inputCell"},o.default.createElement("input",{ref:"passphrase1",id:"passphrase1",autoFocus:!0,size:"64",type:"password",disabled:t}))),o.default.createElement("div",{className:"mx_E2eKeysDialog_inputRow"},o.default.createElement("div",{className:"mx_E2eKeysDialog_inputLabel"},o.default.createElement("label",{htmlFor:"passphrase2"},(0,l._t)("Confirm passphrase"))),o.default.createElement("div",{className:"mx_E2eKeysDialog_inputCell"},o.default.createElement("input",{ref:"passphrase2",id:"passphrase2",size:"64",type:"password",disabled:t}))))),o.default.createElement("div",{className:"mx_Dialog_buttons"},o.default.createElement("input",{className:"mx_Dialog_primary",type:"submit",value:(0,l._t)("Export"),disabled:t}),o.default.createElement("button",{onClick:this._onCancelClick,disabled:t},(0,l._t)("Cancel")))))}}),e.exports=t.default},485:function(e,t,r){"use strict";function n(e,t,r){return t<=e&&e<=r}function a(e){if(void 0===e)return{};if(e===Object(e))return e;throw TypeError("Could not convert argument to dictionary")}r.r(t),r.d(t,"TextEncoder",function(){return f}),r.d(t,"TextDecoder",function(){return c});var i=-1;function o(e){this.tokens=[].slice.call(e)}o.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.shift():i},prepend:function(e){if(Array.isArray(e))for(var t=e;t.length;)this.tokens.unshift(t.pop());else this.tokens.unshift(e)},push:function(e){if(Array.isArray(e))for(var t=e;t.length;)this.tokens.push(t.shift());else this.tokens.push(e)}};var s=-1;function l(e,t){if(e)throw TypeError("Decoder error");return t||65533}var u="utf-8";function c(e,t){if(!(this instanceof c))return new c(e,t);if((e=void 0!==e?String(e).toLowerCase():u)!==u)throw new Error("Encoding not supported. Only utf-8 is supported");t=a(t),this._streaming=!1,this._BOMseen=!1,this._decoder=null,this._fatal=Boolean(t.fatal),this._ignoreBOM=Boolean(t.ignoreBOM),Object.defineProperty(this,"encoding",{value:"utf-8"}),Object.defineProperty(this,"fatal",{value:this._fatal}),Object.defineProperty(this,"ignoreBOM",{value:this._ignoreBOM})}function f(e,t){if(!(this instanceof f))return new f(e,t);if((e=void 0!==e?String(e).toLowerCase():u)!==u)throw new Error("Encoding not supported. Only utf-8 is supported");t=a(t),this._streaming=!1,this._encoder=null,this._options={fatal:Boolean(t.fatal)},Object.defineProperty(this,"encoding",{value:"utf-8"})}c.prototype={decode:function(e,t){var r;r="object"==typeof e&&e instanceof ArrayBuffer?new Uint8Array(e):"object"==typeof e&&"buffer"in e&&e.buffer instanceof ArrayBuffer?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(0),t=a(t),this._streaming||(this._decoder=new function(e){var t=e.fatal,r=0,a=0,o=0,u=128,c=191;this.handler=function(e,f){if(f===i&&0!==o)return o=0,l(t);if(f===i)return s;if(0===o){if(n(f,0,127))return f;if(n(f,194,223))o=1,r=f-192;else if(n(f,224,239))224===f&&(u=160),237===f&&(c=159),o=2,r=f-224;else{if(!n(f,240,244))return l(t);240===f&&(u=144),244===f&&(c=143),o=3,r=f-240}return r<<=6*o,null}if(!n(f,u,c))return r=o=a=0,u=128,c=191,e.prepend(f),l(t);if(u=128,c=191,r+=f-128<<6*(o-(a+=1)),a!==o)return null;var d=r;return r=o=a=0,d}}({fatal:this._fatal}),this._BOMseen=!1),this._streaming=Boolean(t.stream);for(var u,c=new o(r),f=[];!c.endOfStream()&&(u=this._decoder.handler(c,c.read()))!==s;)null!==u&&(Array.isArray(u)?f.push.apply(f,u):f.push(u));if(!this._streaming){do{if((u=this._decoder.handler(c,c.read()))===s)break;null!==u&&(Array.isArray(u)?f.push.apply(f,u):f.push(u))}while(!c.endOfStream());this._decoder=null}return f.length&&(-1===["utf-8"].indexOf(this.encoding)||this._ignoreBOM||this._BOMseen||(65279===f[0]?(this._BOMseen=!0,f.shift()):this._BOMseen=!0)),function(e){for(var t="",r=0;r<e.length;++r){var n=e[r];n<=65535?t+=String.fromCharCode(n):(n-=65536,t+=String.fromCharCode(55296+(n>>10),56320+(1023&n)))}return t}(f)}},f.prototype={encode:function(e,t){e=e?String(e):"",t=a(t),this._streaming||(this._encoder=new function(e){e.fatal;this.handler=function(e,t){if(t===i)return s;if(n(t,0,127))return t;var r,a;n(t,128,2047)?(r=1,a=192):n(t,2048,65535)?(r=2,a=224):n(t,65536,1114111)&&(r=3,a=240);for(var o=[(t>>6*r)+a];r>0;){var l=t>>6*(r-1);o.push(128|63&l),r-=1}return o}}(this._options)),this._streaming=Boolean(t.stream);for(var r,l=[],u=new o(function(e){for(var t=String(e),r=t.length,n=0,a=[];n<r;){var i=t.charCodeAt(n);if(i<55296||i>57343)a.push(i);else if(56320<=i&&i<=57343)a.push(65533);else if(55296<=i&&i<=56319)if(n===r-1)a.push(65533);else{var o=e.charCodeAt(n+1);if(56320<=o&&o<=57343){var s=1023&i,l=1023&o;a.push(65536+(s<<10)+l),n+=1}else a.push(65533)}n+=1}return a}(e));!u.endOfStream()&&(r=this._encoder.handler(u,u.read()))!==s;)Array.isArray(r)?l.push.apply(l,r):l.push(r);if(!this._streaming){for(;(r=this._encoder.handler(u,u.read()))!==s;)Array.isArray(r)?l.push.apply(l,r):l.push(r);this._encoder=null}return new Uint8Array(l)}}},486:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.encryptMegolmKeyFile=t.decryptMegolmKeyFile=void 0;var n=c(r(65)),a=c(r(19)),i=c(r(149)),o=r(9),s=(t.decryptMegolmKeyFile=function(){var e=(0,o.coroutine)(a.default.mark(function e(t,r){var n,l,c,f,y,v,_,b,g,E,x,S,C,k;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!((n=w(t)).length<1)){e.next=3;break}throw h("Invalid file: too short",(0,u._t)("Not a valid Riot keyfile"));case 3:if(1===n[0]){e.next=6;break}throw h("Unsupported version",(0,u._t)("Not a valid Riot keyfile"));case 6:if(!((l=n.length-69)<0)){e.next=9;break}throw h("Invalid file: too short",(0,u._t)("Not a valid Riot keyfile"));case 9:return c=n.subarray(1,17),f=n.subarray(17,33),y=n[33]<<24|n[34]<<16|n[35]<<8|n[36],v=n.subarray(37,37+l),_=n.subarray(-32),e.next=16,(0,o.resolve)(s(c,y,r));case 16:return b=e.sent,g=(0,i.default)(b,2),E=g[0],x=g[1],S=n.subarray(0,-32),C=void 0,e.prev=22,e.next=25,(0,o.resolve)(p.verify({name:"HMAC"},x,_,S));case 25:C=e.sent,e.next=31;break;case 28:throw e.prev=28,e.t0=e.catch(22),h("subtleCrypto.verify failed: "+e.t0,m());case 31:if(C){e.next=33;break}throw h("hmac mismatch",(0,u._t)("Authentication check failed: incorrect password?"));case 33:return k=void 0,e.prev=34,e.next=37,(0,o.resolve)(p.decrypt({name:"AES-CTR",counter:f,length:64},E,v));case 37:k=e.sent,e.next=43;break;case 40:throw e.prev=40,e.t1=e.catch(34),h("subtleCrypto.decrypt failed: "+e.t1,m());case 43:return e.abrupt("return",(new d).decode(new Uint8Array(k)));case 44:case"end":return e.stop()}},e,this,[[22,28],[34,40]])}));return function(t,r){return e.apply(this,arguments)}}(),t.encryptMegolmKeyFile=function(){var e=(0,o.coroutine)(a.default.mark(function e(t,r,n){var l,u,c,d,y,v,w,b,g,E,x,S,C,k,O,A;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return l=(n=n||{}).kdf_rounds||5e5,u=new Uint8Array(16),window.crypto.getRandomValues(u),c=new Uint8Array(16),window.crypto.getRandomValues(c),c[9]&=127,e.next=9,(0,o.resolve)(s(u,l,r));case 9:return d=e.sent,y=(0,i.default)(d,2),v=y[0],w=y[1],b=(new f).encode(t),g=void 0,e.prev=15,e.next=18,(0,o.resolve)(p.encrypt({name:"AES-CTR",counter:c,length:64},v,b));case 18:g=e.sent,e.next=24;break;case 21:throw e.prev=21,e.t0=e.catch(15),h("subtleCrypto.encrypt failed: "+e.t0,m());case 24:return E=new Uint8Array(g),x=1+u.length+c.length+4+E.length+32,S=new Uint8Array(x),C=0,S[C++]=1,S.set(u,C),C+=u.length,S.set(c,C),C+=c.length,S[C++]=l>>24,S[C++]=l>>16&255,S[C++]=l>>8&255,S[C++]=255&l,S.set(E,C),C+=E.length,k=S.subarray(0,C),O=void 0,e.prev=41,e.next=44,(0,o.resolve)(p.sign({name:"HMAC"},w,k));case 44:O=e.sent,e.next=50;break;case 47:throw e.prev=47,e.t1=e.catch(41),h("subtleCrypto.sign failed: "+e.t1,m());case 50:return A=new Uint8Array(O),S.set(A,C),e.abrupt("return",_(S));case 53:case"end":return e.stop()}},e,this,[[15,21],[41,47]])}));return function(t,r,n){return e.apply(this,arguments)}}(),function(){var e=(0,o.coroutine)(a.default.mark(function e(t,r,i){var s,l,u,c,d,y,v,w;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s=new Date,l=void 0,e.prev=2,e.next=5,(0,o.resolve)(p.importKey("raw",(new f).encode(i),{name:"PBKDF2"},!1,["deriveBits"]));case 5:l=e.sent,e.next=11;break;case 8:throw e.prev=8,e.t0=e.catch(2),h("subtleCrypto.importKey failed: "+e.t0,m());case 11:return u=void 0,e.prev=12,e.next=15,(0,o.resolve)(p.deriveBits({name:"PBKDF2",salt:t,iterations:r,hash:"SHA-512"},l,512));case 15:u=e.sent,e.next=21;break;case 18:throw e.prev=18,e.t1=e.catch(12),h("subtleCrypto.deriveBits failed: "+e.t1,m());case 21:return c=new Date,console.log("E2e import/export: deriveKeys took "+(c-s)+"ms"),d=u.slice(0,32),y=u.slice(32),v=p.importKey("raw",d,{name:"AES-CTR"},!1,["encrypt","decrypt"]).catch(function(e){throw h("subtleCrypto.importKey failed for AES key: "+e,m())}),w=p.importKey("raw",y,{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign","verify"]).catch(function(e){throw h("subtleCrypto.importKey failed for HMAC key: "+e,m())}),e.next=29,(0,o.resolve)(n.default.all([v,w]));case 29:return e.abrupt("return",e.sent);case 30:case"end":return e.stop()}},e,this,[[2,8],[12,18]])}));return function(t,r,n){return e.apply(this,arguments)}}()),l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(r(485)),u=r(2);function c(e){return e&&e.__esModule?e:{default:e}}var f=window.TextEncoder;f||(f=l.TextEncoder);var d=window.TextDecoder;d||(d=l.TextDecoder);var p=window.crypto.subtle||window.crypto.webkitSubtle;function h(e,t){var r=new Error(e);return r.friendlyText=t,r}function m(){return(0,u._t)("Your browser does not support the required cryptography extensions")}var y="-----BEGIN MEGOLM SESSION DATA-----",v="-----END MEGOLM SESSION DATA-----";function w(e){for(var t=(new d).decode(new Uint8Array(e)),r=0;;){var n=t.indexOf("\n",r);if(n<0)throw new Error("Header line not found");var a=t.slice(r,n).trim();if(r=n+1,a===y)break}for(var i=r;;){var o=t.indexOf("\n",r);if(t.slice(r,o<0?void 0:o).trim()===v)break;if(o<0)throw new Error("Trailer line not found");r=o+1}var s=r;return function(e){for(var t=window.atob(e),r=new Uint8Array(t.length),n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}(t.slice(i,s))}function _(e){var t=Math.ceil(e.length/96),r=new Array(t+3);r[0]=y;var n=0,a=void 0;for(a=1;a<=t;a++)r[a]=b(e.subarray(n,n+96)),n+=96;return r[a++]=v,r[a]="",(new f).encode(r.join("\n")).buffer}function b(e){var t=String.fromCharCode.apply(null,e);return window.btoa(t)}},493:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=f(r(65)),a=f(r(0)),i=f(r(1)),o=c(r(17)),s=c(r(486)),l=f(r(3)),u=r(2);function c(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function f(e){return e&&e.__esModule?e:{default:e}}t.default=a.default.createClass({displayName:"ImportE2eKeysDialog",propTypes:{matrixClient:i.default.instanceOf(o.MatrixClient).isRequired,onFinished:i.default.func.isRequired},getInitialState:function(){return{enableSubmit:!1,phase:1,errStr:null}},componentWillMount:function(){this._unmounted=!1},componentWillUnmount:function(){this._unmounted=!0},_onFormChange:function(e){var t=this.refs.file.files||[];this.setState({enableSubmit:""!==this.refs.passphrase.value&&t.length>0})},_onFormSubmit:function(e){return e.preventDefault(),this._startImport(this.refs.file.files[0],this.refs.passphrase.value),!1},_startImport:function(e,t){var r=this;return this.setState({errStr:null,phase:2}),function(e){return new n.default(function(t,r){var n=new FileReader;n.onload=function(e){t(e.target.result)},n.onerror=r,n.readAsArrayBuffer(e)})}(e).then(function(e){return s.decryptMegolmKeyFile(e,t)}).then(function(e){return r.props.matrixClient.importRoomKeys(JSON.parse(e))}).then(function(){r.props.onFinished(!0)}).catch(function(e){if(console.error("Error importing e2e keys:",e),!r._unmounted){var t=e.friendlyText||(0,u._t)("Unknown error");r.setState({errStr:t,phase:1})}})},_onCancelClick:function(e){return e.preventDefault(),this.props.onFinished(!1),!1},render:function(){var e=l.default.getComponent("views.dialogs.BaseDialog"),t=1!==this.state.phase;return a.default.createElement(e,{className:"mx_importE2eKeysDialog",onFinished:this.props.onFinished,title:(0,u._t)("Import room keys")},a.default.createElement("form",{onSubmit:this._onFormSubmit},a.default.createElement("div",{className:"mx_Dialog_content"},a.default.createElement("p",null,(0,u._t)("This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.")),a.default.createElement("p",null,(0,u._t)("The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.")),a.default.createElement("div",{className:"error"},this.state.errStr),a.default.createElement("div",{className:"mx_E2eKeysDialog_inputTable"},a.default.createElement("div",{className:"mx_E2eKeysDialog_inputRow"},a.default.createElement("div",{className:"mx_E2eKeysDialog_inputLabel"},a.default.createElement("label",{htmlFor:"importFile"},(0,u._t)("File to import"))),a.default.createElement("div",{className:"mx_E2eKeysDialog_inputCell"},a.default.createElement("input",{ref:"file",id:"importFile",type:"file",autoFocus:!0,onChange:this._onFormChange,disabled:t}))),a.default.createElement("div",{className:"mx_E2eKeysDialog_inputRow"},a.default.createElement("div",{className:"mx_E2eKeysDialog_inputLabel"},a.default.createElement("label",{htmlFor:"passphrase"},(0,u._t)("Enter passphrase"))),a.default.createElement("div",{className:"mx_E2eKeysDialog_inputCell"},a.default.createElement("input",{ref:"passphrase",id:"passphrase",size:"64",type:"password",onChange:this._onFormChange,disabled:t}))))),a.default.createElement("div",{className:"mx_Dialog_buttons"},a.default.createElement("input",{className:"mx_Dialog_primary",type:"submit",value:(0,u._t)("Import"),disabled:!this.state.enableSubmit||t}),a.default.createElement("button",{onClick:this._onCancelClick,disabled:t},(0,u._t)("Cancel")))))}}),e.exports=t.default},729:function(e,t,r){var n,a=a||function(e){"use strict";if(!(void 0===e||"undefined"!=typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent))){var t=function(){return e.URL||e.webkitURL||e},r=e.document.createElementNS("http://www.w3.org/1999/xhtml","a"),n="download"in r,a=/constructor/i.test(e.HTMLElement)||e.safari,i=/CriOS\/[\d]+/.test(navigator.userAgent),o=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},s=function(e){setTimeout(function(){"string"==typeof e?t().revokeObjectURL(e):e.remove()},4e4)},l=function(e){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e},u=function(u,c,f){f||(u=l(u));var d,p=this,h="application/octet-stream"===u.type,m=function(){!function(e,t,r){for(var n=(t=[].concat(t)).length;n--;){var a=e["on"+t[n]];if("function"==typeof a)try{a.call(e,r||e)}catch(e){o(e)}}}(p,"writestart progress write writeend".split(" "))};if(p.readyState=p.INIT,n)return d=t().createObjectURL(u),void setTimeout(function(){r.href=d,r.download=c,function(e){var t=new MouseEvent("click");e.dispatchEvent(t)}(r),m(),s(d),p.readyState=p.DONE});!function(){if((i||h&&a)&&e.FileReader){var r=new FileReader;return r.onloadend=function(){var t=i?r.result:r.result.replace(/^data:[^;]*;/,"data:attachment/file;");e.open(t,"_blank")||(e.location.href=t),t=void 0,p.readyState=p.DONE,m()},r.readAsDataURL(u),void(p.readyState=p.INIT)}d||(d=t().createObjectURL(u)),h?e.location.href=d:e.open(d,"_blank")||(e.location.href=d);p.readyState=p.DONE,m(),s(d)}()},c=u.prototype;return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,t,r){return t=t||e.name||"download",r||(e=l(e)),navigator.msSaveOrOpenBlob(e,t)}:(c.abort=function(){},c.readyState=c.INIT=0,c.WRITING=1,c.DONE=2,c.error=c.onwritestart=c.onprogress=c.onwrite=c.onabort=c.onerror=c.onwriteend=null,function(e,t,r){return new u(e,t||e.name||"download",r)})}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content); -/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */void 0!==e&&e.exports?e.exports.saveAs=a:null!==r(730)&&null!==r(492)&&(void 0===(n=function(){return a}.call(t,r,t,e))||(e.exports=n))},730:function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}}}]); -//# sourceMappingURL=vendors~e2e-export.js.map \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/vendors~e2e-export.js.map b/riot/bundles/f5c70ee9a294f6e4590e/vendors~e2e-export.js.map deleted file mode 100644 index 362351c..0000000 --- a/riot/bundles/f5c70ee9a294f6e4590e/vendors~e2e-export.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["node_modules/matrix-react-sdk/lib/async-components/views/dialogs/ExportE2eKeysDialog.js","node_modules/text-encoding-utf-8/lib/encoding.lib.mjs","node_modules/matrix-react-sdk/lib/utils/MegolmExportEncryption.js","node_modules/matrix-react-sdk/lib/async-components/views/dialogs/ImportE2eKeysDialog.js","node_modules/file-saver/FileSaver.js","(webpack)/buildin/amd-define.js"],"names":["Object","defineProperty","exports","value","_stringify2","_interopRequireDefault","__webpack_require__","_promise2","_fileSaver2","_react2","_propTypes2","_languageHandler","Matrix","_interopRequireWildcard","MegolmExportEncryption","_index2","obj","__esModule","newObj","key","prototype","hasOwnProperty","call","default","createClass","displayName","propTypes","matrixClient","instanceOf","MatrixClient","isRequired","onFinished","func","getInitialState","phase","errStr","componentWillMount","this","_unmounted","componentWillUnmount","_onPassphraseFormSubmit","ev","preventDefault","passphrase","refs","passphrase1","passphrase2","setState","_t","_startExport","_this","resolve","then","props","exportRoomKeys","k","encryptMegolmKeyFile","f","blob","Blob","type","saveAs","catch","e","console","error","msg","friendlyText","_onCancelClick","render","BaseDialog","getComponent","disableForm","state","createElement","className","title","onSubmit","htmlFor","ref","id","autoFocus","size","disabled","onClick","module","inRange","a","min","max","ToDictionary","o","undefined","TypeError","r","__webpack_exports__","d","TextEncoder","TextDecoder","end_of_stream","Stream","tokens","slice","endOfStream","length","read","shift","prepend","token","Array","isArray","unshift","pop","push","finished","decoderError","fatal","opt_code_point","DEFAULT_ENCODING","encoding","options","String","toLowerCase","Error","_streaming","_BOMseen","_decoder","_fatal","Boolean","_ignoreBOM","_encoder","_options","decode","input","bytes","ArrayBuffer","Uint8Array","buffer","byteOffset","byteLength","utf8_code_point","utf8_bytes_seen","utf8_bytes_needed","utf8_lower_boundary","utf8_upper_boundary","handler","stream","bite","code_point","result","input_stream","code_points","apply","indexOf","s","i","cp","fromCharCode","codePointsToString","encode","opt_string","count","offset","temp","string","n","u","c","charCodeAt","b","stringToCodePoints","decryptMegolmKeyFile","_regenerator2","_slicedToArray3","_bluebird","deriveKeys","_ref","coroutine","mark","_callee","data","password","body","ciphertextLength","salt","iv","iterations","ciphertext","hmac","_ref2","_ref3","aesKey","hmacKey","toVerify","isValid","plaintext","wrap","_context","prev","next","unpackMegolmKeyFile","friendlyError","subarray","sent","subtleCrypto","verify","name","t0","cryptoFailMsg","decrypt","counter","t1","abrupt","stop","_x","_x2","arguments","_ref4","_callee2","kdfRounds","_ref5","_ref6","encodedData","cipherArray","bodyLength","resultBuffer","idx","toSign","hmacArray","_context2","kdf_rounds","window","crypto","getRandomValues","encrypt","set","sign","packMegolmKeyFile","_x3","_x4","_x5","_ref7","_callee3","start","keybits","now","aesProm","hmacProm","_context3","Date","importKey","deriveBits","hash","log","all","_x6","_x7","_x8","TextEncodingUtf8","subtle","webkitSubtle","HEADER_LINE","TRAILER_LINE","fileStr","lineStart","lineEnd","line","trim","dataStart","_lineEnd","dataEnd","base64","latin1String","atob","uint8Array","decodeBase64","nLines","Math","ceil","lines","encodeBase64","join","btoa","enableSubmit","_onFormChange","files","file","_onFormSubmit","_startImport","reject","reader","FileReader","onload","target","onerror","readAsArrayBuffer","readFileAsArrayBuffer","arrayBuffer","keys","importRoomKeys","JSON","parse","onChange","__WEBPACK_AMD_DEFINE_RESULT__","view","navigator","test","userAgent","get_URL","URL","webkitURL","save_link","document","createElementNS","can_use_save_link","is_safari","HTMLElement","safari","is_chrome_ios","throw_outside","ex","setImmediate","setTimeout","revoke","revokeObjectURL","remove","auto_bom","FileSaver","no_auto_bom","object_url","filesaver","force","dispatch_all","event_types","event","concat","listener","dispatch","split","readyState","INIT","createObjectURL","href","download","node","MouseEvent","dispatchEvent","click","DONE","onloadend","url","replace","open","location","readAsDataURL","fs_error","FS_proto","msSaveOrOpenBlob","abort","WRITING","onwritestart","onprogress","onwrite","onabort","onwriteend","self","content"],"mappings":"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","file":"bundles/f5c70ee9a294f6e4590e/vendors~e2e-export.js","sourcesContent":["'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _fileSaver = require('file-saver');\n\nvar _fileSaver2 = _interopRequireDefault(_fileSaver);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar Matrix = _interopRequireWildcard(_matrixJsSdk);\n\nvar _MegolmExportEncryption = require('../../../utils/MegolmExportEncryption');\n\nvar MegolmExportEncryption = _interopRequireWildcard(_MegolmExportEncryption);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PHASE_EDIT = 1; /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar PHASE_EXPORTING = 2;\n\nexports.default = _react2.default.createClass({\n displayName: 'ExportE2eKeysDialog',\n\n propTypes: {\n matrixClient: _propTypes2.default.instanceOf(Matrix.MatrixClient).isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n phase: PHASE_EDIT,\n errStr: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n _onPassphraseFormSubmit: function _onPassphraseFormSubmit(ev) {\n ev.preventDefault();\n\n var passphrase = this.refs.passphrase1.value;\n if (passphrase !== this.refs.passphrase2.value) {\n this.setState({ errStr: (0, _languageHandler._t)('Passphrases must match') });\n return false;\n }\n if (!passphrase) {\n this.setState({ errStr: (0, _languageHandler._t)('Passphrase must not be empty') });\n return false;\n }\n\n this._startExport(passphrase);\n return false;\n },\n\n _startExport: function _startExport(passphrase) {\n var _this = this;\n\n // extra Promise.resolve() to turn synchronous exceptions into\n // asynchronous ones.\n _promise2.default.resolve().then(function () {\n return _this.props.matrixClient.exportRoomKeys();\n }).then(function (k) {\n return MegolmExportEncryption.encryptMegolmKeyFile((0, _stringify2.default)(k), passphrase);\n }).then(function (f) {\n var blob = new Blob([f], {\n type: 'text/plain;charset=us-ascii'\n });\n _fileSaver2.default.saveAs(blob, 'riot-keys.txt');\n _this.props.onFinished(true);\n }).catch(function (e) {\n console.error(\"Error exporting e2e keys:\", e);\n if (_this._unmounted) {\n return;\n }\n var msg = e.friendlyText || (0, _languageHandler._t)('Unknown error');\n _this.setState({\n errStr: msg,\n phase: PHASE_EDIT\n });\n });\n\n this.setState({\n errStr: null,\n phase: PHASE_EXPORTING\n });\n },\n\n _onCancelClick: function _onCancelClick(ev) {\n ev.preventDefault();\n this.props.onFinished(false);\n return false;\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n\n var disableForm = this.state.phase === PHASE_EXPORTING;\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_exportE2eKeysDialog',\n onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)(\"Export room keys\")\n },\n _react2.default.createElement(\n 'form',\n { onSubmit: this._onPassphraseFormSubmit },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('This process allows you to export the keys for messages ' + 'you have received in encrypted rooms to a local file. You ' + 'will then be able to import the file into another Matrix ' + 'client in the future, so that client will also be able to ' + 'decrypt these messages.')\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('The exported file will allow anyone who can read it to decrypt ' + 'any encrypted messages that you can see, so you should be ' + 'careful to keep it secure. To help with this, you should enter ' + 'a passphrase below, which will be used to encrypt the exported ' + 'data. It will only be possible to import the data by using the ' + 'same passphrase.')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.errStr\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputTable' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputLabel' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'passphrase1' },\n (0, _languageHandler._t)(\"Enter passphrase\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputCell' },\n _react2.default.createElement('input', { ref: 'passphrase1', id: 'passphrase1',\n autoFocus: true, size: '64', type: 'password',\n disabled: disableForm\n })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputLabel' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'passphrase2' },\n (0, _languageHandler._t)(\"Confirm passphrase\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputCell' },\n _react2.default.createElement('input', { ref: 'passphrase2', id: 'passphrase2',\n size: '64', type: 'password',\n disabled: disableForm\n })\n )\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement('input', { className: 'mx_Dialog_primary', type: 'submit', value: (0, _languageHandler._t)('Export'),\n disabled: disableForm\n }),\n _react2.default.createElement(\n 'button',\n { onClick: this._onCancelClick, disabled: disableForm },\n (0, _languageHandler._t)(\"Cancel\")\n )\n )\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=ExportE2eKeysDialog.js.map","'use strict';\n\n// This is free and unencumbered software released into the public domain.\n// See LICENSE.md for more information.\n\n//\n// Utilities\n//\n\n/**\n * @param {number} a The number to test.\n * @param {number} min The minimum value in the range, inclusive.\n * @param {number} max The maximum value in the range, inclusive.\n * @return {boolean} True if a >= min and a <= max.\n */\nfunction inRange(a, min, max) {\n return min <= a && a <= max;\n}\n\n/**\n * @param {*} o\n * @return {Object}\n */\nfunction ToDictionary(o) {\n if (o === undefined) return {};\n if (o === Object(o)) return o;\n throw TypeError('Could not convert argument to dictionary');\n}\n\n/**\n * @param {string} string Input string of UTF-16 code units.\n * @return {!Array.<number>} Code points.\n */\nfunction stringToCodePoints(string) {\n // https://heycam.github.io/webidl/#dfn-obtain-unicode\n\n // 1. Let S be the DOMString value.\n var s = String(string);\n\n // 2. Let n be the length of S.\n var n = s.length;\n\n // 3. Initialize i to 0.\n var i = 0;\n\n // 4. Initialize U to be an empty sequence of Unicode characters.\n var u = [];\n\n // 5. While i < n:\n while (i < n) {\n\n // 1. Let c be the code unit in S at index i.\n var c = s.charCodeAt(i);\n\n // 2. Depending on the value of c:\n\n // c < 0xD800 or c > 0xDFFF\n if (c < 0xD800 || c > 0xDFFF) {\n // Append to U the Unicode character with code point c.\n u.push(c);\n }\n\n // 0xDC00 ≤ c ≤ 0xDFFF\n else if (0xDC00 <= c && c <= 0xDFFF) {\n // Append to U a U+FFFD REPLACEMENT CHARACTER.\n u.push(0xFFFD);\n }\n\n // 0xD800 ≤ c ≤ 0xDBFF\n else if (0xD800 <= c && c <= 0xDBFF) {\n // 1. If i = n−1, then append to U a U+FFFD REPLACEMENT\n // CHARACTER.\n if (i === n - 1) {\n u.push(0xFFFD);\n }\n // 2. Otherwise, i < n−1:\n else {\n // 1. Let d be the code unit in S at index i+1.\n var d = string.charCodeAt(i + 1);\n\n // 2. If 0xDC00 ≤ d ≤ 0xDFFF, then:\n if (0xDC00 <= d && d <= 0xDFFF) {\n // 1. Let a be c & 0x3FF.\n var a = c & 0x3FF;\n\n // 2. Let b be d & 0x3FF.\n var b = d & 0x3FF;\n\n // 3. Append to U the Unicode character with code point\n // 2^16+2^10*a+b.\n u.push(0x10000 + (a << 10) + b);\n\n // 4. Set i to i+1.\n i += 1;\n }\n\n // 3. Otherwise, d < 0xDC00 or d > 0xDFFF. Append to U a\n // U+FFFD REPLACEMENT CHARACTER.\n else {\n u.push(0xFFFD);\n }\n }\n }\n\n // 3. Set i to i+1.\n i += 1;\n }\n\n // 6. Return U.\n return u;\n}\n\n/**\n * @param {!Array.<number>} code_points Array of code points.\n * @return {string} string String of UTF-16 code units.\n */\nfunction codePointsToString(code_points) {\n var s = '';\n for (var i = 0; i < code_points.length; ++i) {\n var cp = code_points[i];\n if (cp <= 0xFFFF) {\n s += String.fromCharCode(cp);\n } else {\n cp -= 0x10000;\n s += String.fromCharCode((cp >> 10) + 0xD800,\n (cp & 0x3FF) + 0xDC00);\n }\n }\n return s;\n}\n\n\n//\n// Implementation of Encoding specification\n// https://encoding.spec.whatwg.org/\n//\n\n//\n// 3. Terminology\n//\n\n/**\n * End-of-stream is a special token that signifies no more tokens\n * are in the stream.\n * @const\n */ var end_of_stream = -1;\n\n/**\n * A stream represents an ordered sequence of tokens.\n *\n * @constructor\n * @param {!(Array.<number>|Uint8Array)} tokens Array of tokens that provide the\n * stream.\n */\nfunction Stream(tokens) {\n /** @type {!Array.<number>} */\n this.tokens = [].slice.call(tokens);\n}\n\nStream.prototype = {\n /**\n * @return {boolean} True if end-of-stream has been hit.\n */\n endOfStream: function() {\n return !this.tokens.length;\n },\n\n /**\n * When a token is read from a stream, the first token in the\n * stream must be returned and subsequently removed, and\n * end-of-stream must be returned otherwise.\n *\n * @return {number} Get the next token from the stream, or\n * end_of_stream.\n */\n read: function() {\n if (!this.tokens.length)\n return end_of_stream;\n return this.tokens.shift();\n },\n\n /**\n * When one or more tokens are prepended to a stream, those tokens\n * must be inserted, in given order, before the first token in the\n * stream.\n *\n * @param {(number|!Array.<number>)} token The token(s) to prepend to the stream.\n */\n prepend: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.<number>}*/(token);\n while (tokens.length)\n this.tokens.unshift(tokens.pop());\n } else {\n this.tokens.unshift(token);\n }\n },\n\n /**\n * When one or more tokens are pushed to a stream, those tokens\n * must be inserted, in given order, after the last token in the\n * stream.\n *\n * @param {(number|!Array.<number>)} token The tokens(s) to prepend to the stream.\n */\n push: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.<number>}*/(token);\n while (tokens.length)\n this.tokens.push(tokens.shift());\n } else {\n this.tokens.push(token);\n }\n }\n};\n\n//\n// 4. Encodings\n//\n\n// 4.1 Encoders and decoders\n\n/** @const */\nvar finished = -1;\n\n/**\n * @param {boolean} fatal If true, decoding errors raise an exception.\n * @param {number=} opt_code_point Override the standard fallback code point.\n * @return {number} The code point to insert on a decoding error.\n */\nfunction decoderError(fatal, opt_code_point) {\n if (fatal)\n throw TypeError('Decoder error');\n return opt_code_point || 0xFFFD;\n}\n\n/** @interface */\nfunction Decoder() {}\nDecoder.prototype = {\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.<number>)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point, or |finished|.\n */\n handler: function(stream, bite) {}\n};\n\n/** @interface */\nfunction Encoder() {}\nEncoder.prototype = {\n /**\n * @param {Stream} stream The stream of code points being encoded.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.<number>)} Byte(s) to emit, or |finished|.\n */\n handler: function(stream, code_point) {}\n};\n\n//\n// 7. API\n//\n\n/** @const */ var DEFAULT_ENCODING = 'utf-8';\n\n// 7.1 Interface TextDecoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextDecoder(encoding, options) {\n if (!(this instanceof TextDecoder)) {\n return new TextDecoder(encoding, options);\n }\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {boolean} */\n this._BOMseen = false;\n /** @private @type {?Decoder} */\n this._decoder = null;\n /** @private @type {boolean} */\n this._fatal = Boolean(options['fatal']);\n /** @private @type {boolean} */\n this._ignoreBOM = Boolean(options['ignoreBOM']);\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n Object.defineProperty(this, 'fatal', {value: this._fatal});\n Object.defineProperty(this, 'ignoreBOM', {value: this._ignoreBOM});\n}\n\nTextDecoder.prototype = {\n /**\n * @param {ArrayBufferView=} input The buffer of bytes to decode.\n * @param {Object=} options\n * @return {string} The decoded string.\n */\n decode: function decode(input, options) {\n var bytes;\n if (typeof input === 'object' && input instanceof ArrayBuffer) {\n bytes = new Uint8Array(input);\n } else if (typeof input === 'object' && 'buffer' in input &&\n input.buffer instanceof ArrayBuffer) {\n bytes = new Uint8Array(input.buffer,\n input.byteOffset,\n input.byteLength);\n } else {\n bytes = new Uint8Array(0);\n }\n\n options = ToDictionary(options);\n\n if (!this._streaming) {\n this._decoder = new UTF8Decoder({fatal: this._fatal});\n this._BOMseen = false;\n }\n this._streaming = Boolean(options['stream']);\n\n var input_stream = new Stream(bytes);\n\n var code_points = [];\n\n /** @type {?(number|!Array.<number>)} */\n var result;\n\n while (!input_stream.endOfStream()) {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.<number>}*/(result));\n else\n code_points.push(result);\n }\n if (!this._streaming) {\n do {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.<number>}*/(result));\n else\n code_points.push(result);\n } while (!input_stream.endOfStream());\n this._decoder = null;\n }\n\n if (code_points.length) {\n // If encoding is one of utf-8, utf-16be, and utf-16le, and\n // ignore BOM flag and BOM seen flag are unset, run these\n // subsubsteps:\n if (['utf-8'].indexOf(this.encoding) !== -1 &&\n !this._ignoreBOM && !this._BOMseen) {\n // If token is U+FEFF, set BOM seen flag.\n if (code_points[0] === 0xFEFF) {\n this._BOMseen = true;\n code_points.shift();\n } else {\n // Otherwise, if token is not end-of-stream, set BOM seen\n // flag and append token to output.\n this._BOMseen = true;\n }\n }\n }\n\n return codePointsToString(code_points);\n }\n};\n\n// 7.2 Interface TextEncoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextEncoder(encoding, options) {\n if (!(this instanceof TextEncoder))\n return new TextEncoder(encoding, options);\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {?Encoder} */\n this._encoder = null;\n /** @private @type {{fatal: boolean}} */\n this._options = {fatal: Boolean(options['fatal'])};\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n}\n\nTextEncoder.prototype = {\n /**\n * @param {string=} opt_string The string to encode.\n * @param {Object=} options\n * @return {Uint8Array} Encoded bytes, as a Uint8Array.\n */\n encode: function encode(opt_string, options) {\n opt_string = opt_string ? String(opt_string) : '';\n options = ToDictionary(options);\n\n // NOTE: This option is nonstandard. None of the encodings\n // permitted for encoding (i.e. UTF-8, UTF-16) are stateful,\n // so streaming is not necessary.\n if (!this._streaming)\n this._encoder = new UTF8Encoder(this._options);\n this._streaming = Boolean(options['stream']);\n\n var bytes = [];\n var input_stream = new Stream(stringToCodePoints(opt_string));\n /** @type {?(number|!Array.<number>)} */\n var result;\n while (!input_stream.endOfStream()) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.<number>}*/(result));\n else\n bytes.push(result);\n }\n if (!this._streaming) {\n while (true) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.<number>}*/(result));\n else\n bytes.push(result);\n }\n this._encoder = null;\n }\n return new Uint8Array(bytes);\n }\n};\n\n//\n// 8. The encoding\n//\n\n// 8.1 utf-8\n\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Decoder(options) {\n var fatal = options.fatal;\n\n // utf-8's decoder's has an associated utf-8 code point, utf-8\n // bytes seen, and utf-8 bytes needed (all initially 0), a utf-8\n // lower boundary (initially 0x80), and a utf-8 upper boundary\n // (initially 0xBF).\n var /** @type {number} */ utf8_code_point = 0,\n /** @type {number} */ utf8_bytes_seen = 0,\n /** @type {number} */ utf8_bytes_needed = 0,\n /** @type {number} */ utf8_lower_boundary = 0x80,\n /** @type {number} */ utf8_upper_boundary = 0xBF;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.<number>)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function(stream, bite) {\n // 1. If byte is end-of-stream and utf-8 bytes needed is not 0,\n // set utf-8 bytes needed to 0 and return error.\n if (bite === end_of_stream && utf8_bytes_needed !== 0) {\n utf8_bytes_needed = 0;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream, return finished.\n if (bite === end_of_stream)\n return finished;\n\n // 3. If utf-8 bytes needed is 0, based on byte:\n if (utf8_bytes_needed === 0) {\n\n // 0x00 to 0x7F\n if (inRange(bite, 0x00, 0x7F)) {\n // Return a code point whose value is byte.\n return bite;\n }\n\n // 0xC2 to 0xDF\n if (inRange(bite, 0xC2, 0xDF)) {\n // Set utf-8 bytes needed to 1 and utf-8 code point to byte\n // − 0xC0.\n utf8_bytes_needed = 1;\n utf8_code_point = bite - 0xC0;\n }\n\n // 0xE0 to 0xEF\n else if (inRange(bite, 0xE0, 0xEF)) {\n // 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.\n if (bite === 0xE0)\n utf8_lower_boundary = 0xA0;\n // 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.\n if (bite === 0xED)\n utf8_upper_boundary = 0x9F;\n // 3. Set utf-8 bytes needed to 2 and utf-8 code point to\n // byte − 0xE0.\n utf8_bytes_needed = 2;\n utf8_code_point = bite - 0xE0;\n }\n\n // 0xF0 to 0xF4\n else if (inRange(bite, 0xF0, 0xF4)) {\n // 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.\n if (bite === 0xF0)\n utf8_lower_boundary = 0x90;\n // 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.\n if (bite === 0xF4)\n utf8_upper_boundary = 0x8F;\n // 3. Set utf-8 bytes needed to 3 and utf-8 code point to\n // byte − 0xF0.\n utf8_bytes_needed = 3;\n utf8_code_point = bite - 0xF0;\n }\n\n // Otherwise\n else {\n // Return error.\n return decoderError(fatal);\n }\n\n // Then (byte is in the range 0xC2 to 0xF4) set utf-8 code\n // point to utf-8 code point << (6 × utf-8 bytes needed) and\n // return continue.\n utf8_code_point = utf8_code_point << (6 * utf8_bytes_needed);\n return null;\n }\n\n // 4. If byte is not in the range utf-8 lower boundary to utf-8\n // upper boundary, run these substeps:\n if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {\n\n // 1. Set utf-8 code point, utf-8 bytes needed, and utf-8\n // bytes seen to 0, set utf-8 lower boundary to 0x80, and set\n // utf-8 upper boundary to 0xBF.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 2. Prepend byte to stream.\n stream.prepend(bite);\n\n // 3. Return error.\n return decoderError(fatal);\n }\n\n // 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary\n // to 0xBF.\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 6. Increase utf-8 bytes seen by one and set utf-8 code point\n // to utf-8 code point + (byte − 0x80) << (6 × (utf-8 bytes\n // needed − utf-8 bytes seen)).\n utf8_bytes_seen += 1;\n utf8_code_point += (bite - 0x80) << (6 * (utf8_bytes_needed - utf8_bytes_seen));\n\n // 7. If utf-8 bytes seen is not equal to utf-8 bytes needed,\n // continue.\n if (utf8_bytes_seen !== utf8_bytes_needed)\n return null;\n\n // 8. Let code point be utf-8 code point.\n var code_point = utf8_code_point;\n\n // 9. Set utf-8 code point, utf-8 bytes needed, and utf-8 bytes\n // seen to 0.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n\n // 10. Return a code point whose value is code point.\n return code_point;\n };\n}\n\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Encoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.<number>)} Byte(s) to emit.\n */\n this.handler = function(stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream)\n return finished;\n\n // 2. If code point is in the range U+0000 to U+007F, return a\n // byte whose value is code point.\n if (inRange(code_point, 0x0000, 0x007f))\n return code_point;\n\n // 3. Set count and offset based on the range code point is in:\n var count, offset;\n // U+0080 to U+07FF: 1 and 0xC0\n if (inRange(code_point, 0x0080, 0x07FF)) {\n count = 1;\n offset = 0xC0;\n }\n // U+0800 to U+FFFF: 2 and 0xE0\n else if (inRange(code_point, 0x0800, 0xFFFF)) {\n count = 2;\n offset = 0xE0;\n }\n // U+10000 to U+10FFFF: 3 and 0xF0\n else if (inRange(code_point, 0x10000, 0x10FFFF)) {\n count = 3;\n offset = 0xF0;\n }\n\n // 4.Let bytes be a byte sequence whose first byte is (code\n // point >> (6 × count)) + offset.\n var bytes = [(code_point >> (6 * count)) + offset];\n\n // 5. Run these substeps while count is greater than 0:\n while (count > 0) {\n\n // 1. Set temp to code point >> (6 × (count − 1)).\n var temp = code_point >> (6 * (count - 1));\n\n // 2. Append to bytes 0x80 | (temp & 0x3F).\n bytes.push(0x80 | (temp & 0x3F));\n\n // 3. Decrease count by one.\n count -= 1;\n }\n\n // 6. Return bytes bytes, in order.\n return bytes;\n };\n}\n\nexport {TextEncoder, TextDecoder};\n","/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n\"use strict\";\n\n// polyfill textencoder if necessary\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.encryptMegolmKeyFile = exports.decryptMegolmKeyFile = undefined;\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _bluebird = require('bluebird');\n\n/**\n * Decrypt a megolm key file\n *\n * @param {ArrayBuffer} data file to decrypt\n * @param {String} password\n * @return {Promise<String>} promise for decrypted output\n *\n *\n */\nvar decryptMegolmKeyFile = exports.decryptMegolmKeyFile = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(data, password) {\n var body, version, ciphertextLength, salt, iv, iterations, ciphertext, hmac, _ref2, _ref3, aesKey, hmacKey, toVerify, isValid, plaintext;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n body = unpackMegolmKeyFile(data);\n\n // check we have a version byte\n\n if (!(body.length < 1)) {\n _context.next = 3;\n break;\n }\n\n throw friendlyError('Invalid file: too short', (0, _languageHandler._t)('Not a valid Riot keyfile'));\n\n case 3:\n version = body[0];\n\n if (!(version !== 1)) {\n _context.next = 6;\n break;\n }\n\n throw friendlyError('Unsupported version', (0, _languageHandler._t)('Not a valid Riot keyfile'));\n\n case 6:\n ciphertextLength = body.length - (1 + 16 + 16 + 4 + 32);\n\n if (!(ciphertextLength < 0)) {\n _context.next = 9;\n break;\n }\n\n throw friendlyError('Invalid file: too short', (0, _languageHandler._t)('Not a valid Riot keyfile'));\n\n case 9:\n salt = body.subarray(1, 1 + 16);\n iv = body.subarray(17, 17 + 16);\n iterations = body[33] << 24 | body[34] << 16 | body[35] << 8 | body[36];\n ciphertext = body.subarray(37, 37 + ciphertextLength);\n hmac = body.subarray(-32);\n _context.next = 16;\n return (0, _bluebird.resolve)(deriveKeys(salt, iterations, password));\n\n case 16:\n _ref2 = _context.sent;\n _ref3 = (0, _slicedToArray3.default)(_ref2, 2);\n aesKey = _ref3[0];\n hmacKey = _ref3[1];\n toVerify = body.subarray(0, -32);\n isValid = void 0;\n _context.prev = 22;\n _context.next = 25;\n return (0, _bluebird.resolve)(subtleCrypto.verify({ name: 'HMAC' }, hmacKey, hmac, toVerify));\n\n case 25:\n isValid = _context.sent;\n _context.next = 31;\n break;\n\n case 28:\n _context.prev = 28;\n _context.t0 = _context['catch'](22);\n throw friendlyError('subtleCrypto.verify failed: ' + _context.t0, cryptoFailMsg());\n\n case 31:\n if (isValid) {\n _context.next = 33;\n break;\n }\n\n throw friendlyError('hmac mismatch', (0, _languageHandler._t)('Authentication check failed: incorrect password?'));\n\n case 33:\n plaintext = void 0;\n _context.prev = 34;\n _context.next = 37;\n return (0, _bluebird.resolve)(subtleCrypto.decrypt({\n name: \"AES-CTR\",\n counter: iv,\n length: 64\n }, aesKey, ciphertext));\n\n case 37:\n plaintext = _context.sent;\n _context.next = 43;\n break;\n\n case 40:\n _context.prev = 40;\n _context.t1 = _context['catch'](34);\n throw friendlyError('subtleCrypto.decrypt failed: ' + _context.t1, cryptoFailMsg());\n\n case 43:\n return _context.abrupt('return', new TextDecoder().decode(new Uint8Array(plaintext)));\n\n case 44:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[22, 28], [34, 40]]);\n }));\n\n return function decryptMegolmKeyFile(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Encrypt a megolm key file\n *\n * @param {String} data\n * @param {String} password\n * @param {Object=} options\n * @param {Nunber=} options.kdf_rounds Number of iterations to perform of the\n * key-derivation function.\n * @return {Promise<ArrayBuffer>} promise for encrypted output\n */\n\n\nvar encryptMegolmKeyFile = exports.encryptMegolmKeyFile = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(data, password, options) {\n var kdfRounds, salt, iv, _ref5, _ref6, aesKey, hmacKey, encodedData, ciphertext, cipherArray, bodyLength, resultBuffer, idx, toSign, hmac, hmacArray;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n options = options || {};\n kdfRounds = options.kdf_rounds || 500000;\n salt = new Uint8Array(16);\n\n window.crypto.getRandomValues(salt);\n\n iv = new Uint8Array(16);\n\n window.crypto.getRandomValues(iv);\n\n // clear bit 63 of the IV to stop us hitting the 64-bit counter boundary\n // (which would mean we wouldn't be able to decrypt on Android). The loss\n // of a single bit of iv is a price we have to pay.\n iv[9] &= 0x7f;\n\n _context2.next = 9;\n return (0, _bluebird.resolve)(deriveKeys(salt, kdfRounds, password));\n\n case 9:\n _ref5 = _context2.sent;\n _ref6 = (0, _slicedToArray3.default)(_ref5, 2);\n aesKey = _ref6[0];\n hmacKey = _ref6[1];\n encodedData = new TextEncoder().encode(data);\n ciphertext = void 0;\n _context2.prev = 15;\n _context2.next = 18;\n return (0, _bluebird.resolve)(subtleCrypto.encrypt({\n name: \"AES-CTR\",\n counter: iv,\n length: 64\n }, aesKey, encodedData));\n\n case 18:\n ciphertext = _context2.sent;\n _context2.next = 24;\n break;\n\n case 21:\n _context2.prev = 21;\n _context2.t0 = _context2['catch'](15);\n throw friendlyError('subtleCrypto.encrypt failed: ' + _context2.t0, cryptoFailMsg());\n\n case 24:\n cipherArray = new Uint8Array(ciphertext);\n bodyLength = 1 + salt.length + iv.length + 4 + cipherArray.length + 32;\n resultBuffer = new Uint8Array(bodyLength);\n idx = 0;\n\n resultBuffer[idx++] = 1; // version\n resultBuffer.set(salt, idx);idx += salt.length;\n resultBuffer.set(iv, idx);idx += iv.length;\n resultBuffer[idx++] = kdfRounds >> 24;\n resultBuffer[idx++] = kdfRounds >> 16 & 0xff;\n resultBuffer[idx++] = kdfRounds >> 8 & 0xff;\n resultBuffer[idx++] = kdfRounds & 0xff;\n resultBuffer.set(cipherArray, idx);idx += cipherArray.length;\n\n toSign = resultBuffer.subarray(0, idx);\n hmac = void 0;\n _context2.prev = 41;\n _context2.next = 44;\n return (0, _bluebird.resolve)(subtleCrypto.sign({ name: 'HMAC' }, hmacKey, toSign));\n\n case 44:\n hmac = _context2.sent;\n _context2.next = 50;\n break;\n\n case 47:\n _context2.prev = 47;\n _context2.t1 = _context2['catch'](41);\n throw friendlyError('subtleCrypto.sign failed: ' + _context2.t1, cryptoFailMsg());\n\n case 50:\n hmacArray = new Uint8Array(hmac);\n\n resultBuffer.set(hmacArray, idx);\n return _context2.abrupt('return', packMegolmKeyFile(resultBuffer));\n\n case 53:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[15, 21], [41, 47]]);\n }));\n\n return function encryptMegolmKeyFile(_x3, _x4, _x5) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * Derive the AES and HMAC-SHA-256 keys for the file\n *\n * @param {Unit8Array} salt salt for pbkdf\n * @param {Number} iterations number of pbkdf iterations\n * @param {String} password password\n * @return {Promise<[CryptoKey, CryptoKey]>} promise for [aes key, hmac key]\n */\n\n\nvar deriveKeys = function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(salt, iterations, password) {\n var start, key, keybits, now, aesKey, hmacKey, aesProm, hmacProm;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n start = new Date();\n key = void 0;\n _context3.prev = 2;\n _context3.next = 5;\n return (0, _bluebird.resolve)(subtleCrypto.importKey('raw', new TextEncoder().encode(password), { name: 'PBKDF2' }, false, ['deriveBits']));\n\n case 5:\n key = _context3.sent;\n _context3.next = 11;\n break;\n\n case 8:\n _context3.prev = 8;\n _context3.t0 = _context3['catch'](2);\n throw friendlyError('subtleCrypto.importKey failed: ' + _context3.t0, cryptoFailMsg());\n\n case 11:\n keybits = void 0;\n _context3.prev = 12;\n _context3.next = 15;\n return (0, _bluebird.resolve)(subtleCrypto.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: 'SHA-512'\n }, key, 512));\n\n case 15:\n keybits = _context3.sent;\n _context3.next = 21;\n break;\n\n case 18:\n _context3.prev = 18;\n _context3.t1 = _context3['catch'](12);\n throw friendlyError('subtleCrypto.deriveBits failed: ' + _context3.t1, cryptoFailMsg());\n\n case 21:\n now = new Date();\n\n console.log(\"E2e import/export: deriveKeys took \" + (now - start) + \"ms\");\n\n aesKey = keybits.slice(0, 32);\n hmacKey = keybits.slice(32);\n aesProm = subtleCrypto.importKey('raw', aesKey, { name: 'AES-CTR' }, false, ['encrypt', 'decrypt']).catch(function (e) {\n throw friendlyError('subtleCrypto.importKey failed for AES key: ' + e, cryptoFailMsg());\n });\n hmacProm = subtleCrypto.importKey('raw', hmacKey, {\n name: 'HMAC',\n hash: { name: 'SHA-256' }\n }, false, ['sign', 'verify']).catch(function (e) {\n throw friendlyError('subtleCrypto.importKey failed for HMAC key: ' + e, cryptoFailMsg());\n });\n _context3.next = 29;\n return (0, _bluebird.resolve)(_promise2.default.all([aesProm, hmacProm]));\n\n case 29:\n return _context3.abrupt('return', _context3.sent);\n\n case 30:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this, [[2, 8], [12, 18]]);\n }));\n\n return function deriveKeys(_x6, _x7, _x8) {\n return _ref7.apply(this, arguments);\n };\n}();\n\nvar _textEncodingUtf = require('text-encoding-utf-8');\n\nvar TextEncodingUtf8 = _interopRequireWildcard(_textEncodingUtf);\n\nvar _languageHandler = require('../languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TextEncoder = window.TextEncoder;\nif (!TextEncoder) {\n TextEncoder = TextEncodingUtf8.TextEncoder;\n}\nvar TextDecoder = window.TextDecoder;\nif (!TextDecoder) {\n TextDecoder = TextEncodingUtf8.TextDecoder;\n}\n\nvar subtleCrypto = window.crypto.subtle || window.crypto.webkitSubtle;\n\n/**\n * Make an Error object which has a friendlyText property which is already\n * translated and suitable for showing to the user.\n *\n * @param {string} msg message for the exception\n * @param {string} friendlyText\n * @returns {Error}\n */\nfunction friendlyError(msg, friendlyText) {\n var e = new Error(msg);\n e.friendlyText = friendlyText;\n return e;\n}\n\nfunction cryptoFailMsg() {\n return (0, _languageHandler._t)('Your browser does not support the required cryptography extensions');\n}\n\nvar HEADER_LINE = '-----BEGIN MEGOLM SESSION DATA-----';\nvar TRAILER_LINE = '-----END MEGOLM SESSION DATA-----';\n\n/**\n * Unbase64 an ascii-armoured megolm key file\n *\n * Strips the header and trailer lines, and unbase64s the content\n *\n * @param {ArrayBuffer} data input file\n * @return {Uint8Array} unbase64ed content\n */\nfunction unpackMegolmKeyFile(data) {\n // parse the file as a great big String. This should be safe, because there\n // should be no non-ASCII characters, and it means that we can do string\n // comparisons to find the header and footer, and feed it into window.atob.\n var fileStr = new TextDecoder().decode(new Uint8Array(data));\n\n // look for the start line\n var lineStart = 0;\n while (1) {\n var lineEnd = fileStr.indexOf('\\n', lineStart);\n if (lineEnd < 0) {\n throw new Error('Header line not found');\n }\n var line = fileStr.slice(lineStart, lineEnd).trim();\n\n // start the next line after the newline\n lineStart = lineEnd + 1;\n\n if (line === HEADER_LINE) {\n break;\n }\n }\n\n var dataStart = lineStart;\n\n // look for the end line\n while (1) {\n var _lineEnd = fileStr.indexOf('\\n', lineStart);\n var _line = fileStr.slice(lineStart, _lineEnd < 0 ? undefined : _lineEnd).trim();\n if (_line === TRAILER_LINE) {\n break;\n }\n\n if (_lineEnd < 0) {\n throw new Error('Trailer line not found');\n }\n\n // start the next line after the newline\n lineStart = _lineEnd + 1;\n }\n\n var dataEnd = lineStart;\n return decodeBase64(fileStr.slice(dataStart, dataEnd));\n}\n\n/**\n * ascii-armour a megolm key file\n *\n * base64s the content, and adds header and trailer lines\n *\n * @param {Uint8Array} data raw data\n * @return {ArrayBuffer} formatted file\n */\nfunction packMegolmKeyFile(data) {\n // we split into lines before base64ing, because encodeBase64 doesn't deal\n // terribly well with large arrays.\n var LINE_LENGTH = 72 * 4 / 3;\n var nLines = Math.ceil(data.length / LINE_LENGTH);\n var lines = new Array(nLines + 3);\n lines[0] = HEADER_LINE;\n var o = 0;\n var i = void 0;\n for (i = 1; i <= nLines; i++) {\n lines[i] = encodeBase64(data.subarray(o, o + LINE_LENGTH));\n o += LINE_LENGTH;\n }\n lines[i++] = TRAILER_LINE;\n lines[i] = '';\n return new TextEncoder().encode(lines.join('\\n')).buffer;\n}\n\n/**\n * Encode a typed array of uint8 as base64.\n * @param {Uint8Array} uint8Array The data to encode.\n * @return {string} The base64.\n */\nfunction encodeBase64(uint8Array) {\n // Misinterpt the Uint8Array as Latin-1.\n // window.btoa expects a unicode string with codepoints in the range 0-255.\n var latin1String = String.fromCharCode.apply(null, uint8Array);\n // Use the builtin base64 encoder.\n return window.btoa(latin1String);\n}\n\n/**\n * Decode a base64 string to a typed array of uint8.\n * @param {string} base64 The base64 to decode.\n * @return {Uint8Array} The decoded data.\n */\nfunction decodeBase64(base64) {\n // window.atob returns a unicode string with codepoints in the range 0-255.\n var latin1String = window.atob(base64);\n // Encode the string as a Uint8Array\n var uint8Array = new Uint8Array(latin1String.length);\n for (var i = 0; i < latin1String.length; i++) {\n uint8Array[i] = latin1String.charCodeAt(i);\n }\n return uint8Array;\n}\n//# sourceMappingURL=MegolmExportEncryption.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar Matrix = _interopRequireWildcard(_matrixJsSdk);\n\nvar _MegolmExportEncryption = require('../../../utils/MegolmExportEncryption');\n\nvar MegolmExportEncryption = _interopRequireWildcard(_MegolmExportEncryption);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction readFileAsArrayBuffer(file) {\n return new _promise2.default(function (resolve, reject) {\n var reader = new FileReader();\n reader.onload = function (e) {\n resolve(e.target.result);\n };\n reader.onerror = reject;\n\n reader.readAsArrayBuffer(file);\n });\n}\n\nvar PHASE_EDIT = 1;\nvar PHASE_IMPORTING = 2;\n\nexports.default = _react2.default.createClass({\n displayName: 'ImportE2eKeysDialog',\n\n propTypes: {\n matrixClient: _propTypes2.default.instanceOf(Matrix.MatrixClient).isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n enableSubmit: false,\n phase: PHASE_EDIT,\n errStr: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n _onFormChange: function _onFormChange(ev) {\n var files = this.refs.file.files || [];\n this.setState({\n enableSubmit: this.refs.passphrase.value !== \"\" && files.length > 0\n });\n },\n\n _onFormSubmit: function _onFormSubmit(ev) {\n ev.preventDefault();\n this._startImport(this.refs.file.files[0], this.refs.passphrase.value);\n return false;\n },\n\n _startImport: function _startImport(file, passphrase) {\n var _this = this;\n\n this.setState({\n errStr: null,\n phase: PHASE_IMPORTING\n });\n\n return readFileAsArrayBuffer(file).then(function (arrayBuffer) {\n return MegolmExportEncryption.decryptMegolmKeyFile(arrayBuffer, passphrase);\n }).then(function (keys) {\n return _this.props.matrixClient.importRoomKeys(JSON.parse(keys));\n }).then(function () {\n // TODO: it would probably be nice to give some feedback about what we've imported here.\n _this.props.onFinished(true);\n }).catch(function (e) {\n console.error(\"Error importing e2e keys:\", e);\n if (_this._unmounted) {\n return;\n }\n var msg = e.friendlyText || (0, _languageHandler._t)('Unknown error');\n _this.setState({\n errStr: msg,\n phase: PHASE_EDIT\n });\n });\n },\n\n _onCancelClick: function _onCancelClick(ev) {\n ev.preventDefault();\n this.props.onFinished(false);\n return false;\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n\n var disableForm = this.state.phase !== PHASE_EDIT;\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_importE2eKeysDialog',\n onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)(\"Import room keys\")\n },\n _react2.default.createElement(\n 'form',\n { onSubmit: this._onFormSubmit },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('This process allows you to import encryption keys ' + 'that you had previously exported from another Matrix ' + 'client. You will then be able to decrypt any ' + 'messages that the other client could decrypt.')\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('The export file will be protected with a passphrase. ' + 'You should enter the passphrase here, to decrypt the file.')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.errStr\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputTable' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputLabel' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'importFile' },\n (0, _languageHandler._t)(\"File to import\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputCell' },\n _react2.default.createElement('input', { ref: 'file', id: 'importFile', type: 'file',\n autoFocus: true,\n onChange: this._onFormChange,\n disabled: disableForm })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputLabel' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'passphrase' },\n (0, _languageHandler._t)(\"Enter passphrase\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputCell' },\n _react2.default.createElement('input', { ref: 'passphrase', id: 'passphrase',\n size: '64', type: 'password',\n onChange: this._onFormChange,\n disabled: disableForm })\n )\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement('input', { className: 'mx_Dialog_primary', type: 'submit', value: (0, _languageHandler._t)('Import'),\n disabled: !this.state.enableSubmit || disableForm\n }),\n _react2.default.createElement(\n 'button',\n { onClick: this._onCancelClick, disabled: disableForm },\n (0, _languageHandler._t)(\"Cancel\")\n )\n )\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=ImportE2eKeysDialog.js.map","/* FileSaver.js\n * A saveAs() FileSaver implementation.\n * 1.3.2\n * 2016-06-16 18:25:19\n *\n * By Eli Grey, http://eligrey.com\n * License: MIT\n * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n */\n\n/*global self */\n/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */\n\n/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */\n\nvar saveAs = saveAs || (function(view) {\n\t\"use strict\";\n\t// IE <10 is explicitly unsupported\n\tif (typeof view === \"undefined\" || typeof navigator !== \"undefined\" && /MSIE [1-9]\\./.test(navigator.userAgent)) {\n\t\treturn;\n\t}\n\tvar\n\t\t doc = view.document\n\t\t // only get URL when necessary in case Blob.js hasn't overridden it yet\n\t\t, get_URL = function() {\n\t\t\treturn view.URL || view.webkitURL || view;\n\t\t}\n\t\t, save_link = doc.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\")\n\t\t, can_use_save_link = \"download\" in save_link\n\t\t, click = function(node) {\n\t\t\tvar event = new MouseEvent(\"click\");\n\t\t\tnode.dispatchEvent(event);\n\t\t}\n\t\t, is_safari = /constructor/i.test(view.HTMLElement) || view.safari\n\t\t, is_chrome_ios =/CriOS\\/[\\d]+/.test(navigator.userAgent)\n\t\t, throw_outside = function(ex) {\n\t\t\t(view.setImmediate || view.setTimeout)(function() {\n\t\t\t\tthrow ex;\n\t\t\t}, 0);\n\t\t}\n\t\t, force_saveable_type = \"application/octet-stream\"\n\t\t// the Blob API is fundamentally broken as there is no \"downloadfinished\" event to subscribe to\n\t\t, arbitrary_revoke_timeout = 1000 * 40 // in ms\n\t\t, revoke = function(file) {\n\t\t\tvar revoker = function() {\n\t\t\t\tif (typeof file === \"string\") { // file is an object URL\n\t\t\t\t\tget_URL().revokeObjectURL(file);\n\t\t\t\t} else { // file is a File\n\t\t\t\t\tfile.remove();\n\t\t\t\t}\n\t\t\t};\n\t\t\tsetTimeout(revoker, arbitrary_revoke_timeout);\n\t\t}\n\t\t, dispatch = function(filesaver, event_types, event) {\n\t\t\tevent_types = [].concat(event_types);\n\t\t\tvar i = event_types.length;\n\t\t\twhile (i--) {\n\t\t\t\tvar listener = filesaver[\"on\" + event_types[i]];\n\t\t\t\tif (typeof listener === \"function\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlistener.call(filesaver, event || filesaver);\n\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\tthrow_outside(ex);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t, auto_bom = function(blob) {\n\t\t\t// prepend BOM for UTF-8 XML and text/* types (including HTML)\n\t\t\t// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n\t\t\tif (/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n\t\t\t\treturn new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});\n\t\t\t}\n\t\t\treturn blob;\n\t\t}\n\t\t, FileSaver = function(blob, name, no_auto_bom) {\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\t// First try a.download, then web filesystem, then object URLs\n\t\t\tvar\n\t\t\t\t filesaver = this\n\t\t\t\t, type = blob.type\n\t\t\t\t, force = type === force_saveable_type\n\t\t\t\t, object_url\n\t\t\t\t, dispatch_all = function() {\n\t\t\t\t\tdispatch(filesaver, \"writestart progress write writeend\".split(\" \"));\n\t\t\t\t}\n\t\t\t\t// on any filesys errors revert to saving with object URLs\n\t\t\t\t, fs_error = function() {\n\t\t\t\t\tif ((is_chrome_ios || (force && is_safari)) && view.FileReader) {\n\t\t\t\t\t\t// Safari doesn't allow downloading of blob urls\n\t\t\t\t\t\tvar reader = new FileReader();\n\t\t\t\t\t\treader.onloadend = function() {\n\t\t\t\t\t\t\tvar url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');\n\t\t\t\t\t\t\tvar popup = view.open(url, '_blank');\n\t\t\t\t\t\t\tif(!popup) view.location.href = url;\n\t\t\t\t\t\t\turl=undefined; // release reference before dispatching\n\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\tdispatch_all();\n\t\t\t\t\t\t};\n\t\t\t\t\t\treader.readAsDataURL(blob);\n\t\t\t\t\t\tfilesaver.readyState = filesaver.INIT;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// don't create more object URLs than needed\n\t\t\t\t\tif (!object_url) {\n\t\t\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t\t}\n\t\t\t\t\tif (force) {\n\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar opened = view.open(object_url, \"_blank\");\n\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html\n\t\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t}\n\t\t\t;\n\t\t\tfilesaver.readyState = filesaver.INIT;\n\n\t\t\tif (can_use_save_link) {\n\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tsave_link.href = object_url;\n\t\t\t\t\tsave_link.download = name;\n\t\t\t\t\tclick(save_link);\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfs_error();\n\t\t}\n\t\t, FS_proto = FileSaver.prototype\n\t\t, saveAs = function(blob, name, no_auto_bom) {\n\t\t\treturn new FileSaver(blob, name || blob.name || \"download\", no_auto_bom);\n\t\t}\n\t;\n\t// IE 10+ (native saveAs)\n\tif (typeof navigator !== \"undefined\" && navigator.msSaveOrOpenBlob) {\n\t\treturn function(blob, name, no_auto_bom) {\n\t\t\tname = name || blob.name || \"download\";\n\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\treturn navigator.msSaveOrOpenBlob(blob, name);\n\t\t};\n\t}\n\n\tFS_proto.abort = function(){};\n\tFS_proto.readyState = FS_proto.INIT = 0;\n\tFS_proto.WRITING = 1;\n\tFS_proto.DONE = 2;\n\n\tFS_proto.error =\n\tFS_proto.onwritestart =\n\tFS_proto.onprogress =\n\tFS_proto.onwrite =\n\tFS_proto.onabort =\n\tFS_proto.onerror =\n\tFS_proto.onwriteend =\n\t\tnull;\n\n\treturn saveAs;\n}(\n\t typeof self !== \"undefined\" && self\n\t|| typeof window !== \"undefined\" && window\n\t|| this.content\n));\n// `self` is undefined in Firefox for Android content script context\n// while `this` is nsIContentFrameMessageManager\n// with an attribute `content` that corresponds to the window\n\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports.saveAs = saveAs;\n} else if ((typeof define !== \"undefined\" && define !== null) && (define.amd !== null)) {\n define(\"FileSaver.js\", function() {\n return saveAs;\n });\n}\n","module.exports = function() {\r\n\tthrow new Error(\"define cannot be used indirect\");\r\n};\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/i18n/bg.json b/riot/i18n/bg.json index ffa959d..900c64c 100644 --- a/riot/i18n/bg.json +++ b/riot/i18n/bg.json @@ -1366,6 +1366,14 @@ "Please accept all of the policies": "Моля, приемете всички политики", "Please review and accept the policies of this homeserver:": "Моля, прегледайте и приемете политиките на този сървър:", "Add some now": "Добави сега", + "Pin unread rooms to the top of the room list": "Закачане на непрочетени стаи най-отгоре в списъка", + "Pin rooms I'm mentioned in to the top of the room list": "Закачане на споменаващи ме стаи най-отгоре в списъка", + "Joining room...": "Влизане в стая...", + "You are an administrator of this community. You will not be able to rejoin without an invite from another administrator.": "Вие сте администратор на тази общност. Няма да можете да се присъедините пак без покана от друг администратор.", + "Open Devtools": "Отвори инструментите за разработчици", + "Show developer tools": "Покажи инструментите за разработчици", + "If you would like to create a Matrix account you can <a>register</a> now.": "Ако искате да създадете Matrix акаунт, може да се <a>регистрирате</a> тук.", + "You are currently using Riot anonymously as a guest.": "В момента използвате Riot анонимно, като гост.", "Riot is not supported on mobile web. Install the app?": "Riot не поддържа мобилен уеб браузър. Инсталиране на приложението?", "Riot Desktop on %(platformName)s": "Riot Desktop под %(platformName)s", "Unknown device": "Непознато устройство", diff --git a/riot/i18n/de_DE.json b/riot/i18n/de_DE.json index 1d5af0d..5aa8062 100644 --- a/riot/i18n/de_DE.json +++ b/riot/i18n/de_DE.json @@ -1366,6 +1366,70 @@ "Clear cache and resync": "Zwischenspeicher löschen und erneut synchronisieren", "Please accept all of the policies": "Bitte akzeptiere alle Bedingungen", "Please review and accept the policies of this homeserver:": "Bitte sieh dir alle Bedingungen dieses Heimservers an und akzeptiere sie:", + "Pin unread rooms to the top of the room list": "Ungelesene Räume oben an der Raumliste anheften", + "Pin rooms I'm mentioned in to the top of the room list": "Räume mit Erwähnungen oben an der Raumliste anheften", + "Joining room...": "Trete Raum bei...", + "Add some now": "Füge jetzt hinzu", + "You are an administrator of this community. You will not be able to rejoin without an invite from another administrator.": "Du bist ein Administrator dieser Community. Du wirst nicht erneut hinzutreten können, wenn du nicht von einem anderen Administrator eingeladen wirst.", + "Open Devtools": "Öffne Entwickler-Werkzeuge", + "Show developer tools": "Zeige Entwickler-Werkzeuge", + "If you would like to create a Matrix account you can <a>register</a> now.": "Wenn du ein Matrix-Konto erstellen möchtest, kannst du dich jetzt <a>registrieren</a>.", + "You are currently using Riot anonymously as a guest.": "Du benutzt aktuell Riot anonym als Gast.", + "Unable to load! Check your network connectivity and try again.": "Konnte nicht geladen werden! Überprüfe deine Netzwerkverbindung und versuche es erneut.", + "Backup of encryption keys to server": "Sichern der Verschlüsselungs-Schlüssel auf dem Server", + "Delete Backup": "Sicherung löschen", + "Delete backup": "Sicherung löschen", + "This device is uploading keys to this backup": "Dieses Gerät lädt Schlüssel zu dieser Sicherung hoch", + "This device is <b>not</b> uploading keys to this backup": "Dieses Gerät lädt <b>keine</b> Schlüssel zu dieser Sicherung hoch", + "Backup has a <validity>valid</validity> signature from this device": "Sicherung hat eine <validity>valide</validity> Signatur von diesem Gerät", + "Backup has an <validity>invalid</validity> signature from <verify>verified</verify> device <device></device>": "Sicherung hat eine <validity>invalide</validity> Signatur vom <verify>verifiziertem</verify> Gerät <device></device>", + "Backup has an <validity>invalid</validity> signature from <verify>unverified</verify> device <device></device>": "Sicherung hat eine <validity>invalide</validity> Signatur vom <verify>unverifiziertem</verify> Gerät <device></device>", + "Backup has a <validity>valid</validity> signature from <verify>verified</verify> device <device>x</device>": "Sicherung hat eine <validity>valide</validity> Signatur vom <verify>verifiziertem</verify> Gerät <device>x</device>", + "Backup has a <validity>valid</validity> signature from <verify>unverified</verify> device <device></device>": "Sicherung hat eine <validity>valide</validity> Signatur vom <verify>unverifiziertem</verify> Gerät <device></device>", + "Backup is not signed by any of your devices": "Sicherung wurde von keinem deiner Geräte signiert", + "Backup version: ": "Sicherungsversion: ", + "Algorithm: ": "Algorithmus: ", + "Restore backup": "Sicherung wiederherstellen", + "No backup is present": "Keine Sicherung verfügbar", + "Start a new backup": "Starte einen neue Sicherung", + "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of Riot to do this": "Um deinen Chatverlauf nicht zu verlieren, musst du deine Raum-Schlüssel exportieren, bevor du dich abmeldest. Du musst zurück zu einer neueren Riot-Version gehen, um dies zu tun", + "Incompatible Database": "Inkompatible Datenbanken", + "Continue With Encryption Disabled": "Mit deaktivierter Verschlüsselung fortfahren", + "You'll need it if you log out or lose access to this device.": "Du wirst es brauchen, wenn du dich abmeldest oder den Zugang zu diesem Gerät verlierst.", + "Enter a passphrase...": "Passphrase eingeben...", + "Next": "Nächstes", + "That matches!": "Das passt!", + "That doesn't match.": "Das passt nicht.", + "Go back to set it again.": "Gehe zurück und setze es erneut.", + "Repeat your passphrase...": "Wiederhole deine Passphrase...", + "Make a copy of this Recovery Key and keep it safe.": "Mache eine Kopie dieses Wiederherstellungsschlüssels und verwahre ihn sicher.", + "Your Recovery Key": "Dein Wiederherstellungsschlüssel", + "Copy to clipboard": "In Zwischenablage kopieren", + "Download": "Herunterladen", + "I've made a copy": "Ich habe eine Kopie gemacht", + "<b>Print it</b> and store it somewhere safe": "<b>Drucke ihn aus</b> und lagere ihn, wo er sicher ist", + "<b>Save it</b> on a USB key or backup drive": "<b>Speichere ihn</b> auf einem USB-Schlüssel oder Sicherungsslaufwerk", + "<b>Copy it</b> to your personal cloud storage": "<b>Kopiere ihn</b> in deinen persönlichen Cloud-Speicher", + "Got it": "Verstanden", + "Backup created": "Sicherung erstellt", + "Your encryption keys are now being backed up to your Homeserver.": "Deine Verschlüsselungsschlüssel sind nun auf deinem Heimserver gesichert wurden.", + "Create a Recovery Passphrase": "Erstelle eine Wiederherstellungs-Passphrase", + "Confirm Recovery Passphrase": "Bestätige Wiederherstellungs-Passphrase", + "Recovery Key": "Wiederherstellungsschlüssel", + "Keep it safe": "Lager ihn sicher", + "Backing up...": "Am sichern...", + "Create Key Backup": "Erzeuge Schlüsselsicherung", + "Unable to create key backup": "Konnte Schlüsselsicherung nicht erstellen", + "Retry": "Erneut probieren", + "Unable to restore backup": "Konnte Sicherung nicht wiederherstellen", + "No backup found!": "Keine Sicherung gefunden!", + "Backup Restored": "Sicherung wiederhergestellt", + "Enter Recovery Passphrase": "Gebe Wiederherstellungs-Passphrase ein", + "Enter Recovery Key": "Gebe Wiederherstellungsschlüssel ein", + "This looks like a valid recovery key!": "Dies sieht nach einem validen Wiederherstellungsschlüssel aus", + "Not a valid recovery key": "Kein valider Wiederherstellungsschlüssel", + "Key Backup": "Schlüsselsicherung", + "Cannot find homeserver": "Konnte Heimserver nicht finden", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s auf %(osName)s", "Riot Desktop on %(platformName)s": "Riot Desktop auf %(platformName)s", "Riot is not supported on mobile web. Install the app?": "Riot wird im mobilen Web nicht unterstützt. App installieren?", diff --git a/riot/i18n/en_EN.json b/riot/i18n/en_EN.json index d30bf49..7616133 100644 --- a/riot/i18n/en_EN.json +++ b/riot/i18n/en_EN.json @@ -87,6 +87,9 @@ "Failed to invite users to %(groupId)s": "Failed to invite users to %(groupId)s", "Failed to add the following rooms to %(groupId)s:": "Failed to add the following rooms to %(groupId)s:", "Unnamed Room": "Unnamed Room", + "Error": "Error", + "Unable to load! Check your network connectivity and try again.": "Unable to load! Check your network connectivity and try again.", + "Dismiss": "Dismiss", "Riot does not have permission to send you notifications - please check your browser settings": "Riot does not have permission to send you notifications - please check your browser settings", "Riot was not given permission to send notifications - please try again": "Riot was not given permission to send notifications - please try again", "Unable to enable Notifications": "Unable to enable Notifications", @@ -109,7 +112,10 @@ "Failed to invite user": "Failed to invite user", "Operation failed": "Operation failed", "Failed to invite": "Failed to invite", + "Failed to invite users to the room:": "Failed to invite users to the room:", "Failed to invite the following users to the %(roomName)s room:": "Failed to invite the following users to the %(roomName)s room:", + "Waiting for %(userId)s to accept...": "Waiting for %(userId)s to accept...", + "Waiting for %(userId)s to confirm...": "Waiting for %(userId)s to confirm...", "You need to be logged in.": "You need to be logged in.", "You need to be able to invite users to do that.": "You need to be able to invite users to do that.", "Unable to create widget.": "Unable to create widget.", @@ -224,11 +230,46 @@ "Your browser does not support the required cryptography extensions": "Your browser does not support the required cryptography extensions", "Not a valid Riot keyfile": "Not a valid Riot keyfile", "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?", + "Unrecognised address": "Unrecognised address", + "You do not have permission to invite people to this room.": "You do not have permission to invite people to this room.", + "User %(user_id)s does not exist": "User %(user_id)s does not exist", + "User %(user_id)s may or may not exist": "User %(user_id)s may or may not exist", + "Unknown server error": "Unknown server error", + "Use a few words, avoid common phrases": "Use a few words, avoid common phrases", + "No need for symbols, digits, or uppercase letters": "No need for symbols, digits, or uppercase letters", + "Use a longer keyboard pattern with more turns": "Use a longer keyboard pattern with more turns", + "Avoid repeated words and characters": "Avoid repeated words and characters", + "Avoid sequences": "Avoid sequences", + "Avoid recent years": "Avoid recent years", + "Avoid years that are associated with you": "Avoid years that are associated with you", + "Avoid dates and years that are associated with you": "Avoid dates and years that are associated with you", + "Capitalization doesn't help very much": "Capitalization doesn't help very much", + "All-uppercase is almost as easy to guess as all-lowercase": "All-uppercase is almost as easy to guess as all-lowercase", + "Reversed words aren't much harder to guess": "Reversed words aren't much harder to guess", + "Predictable substitutions like '@' instead of 'a' don't help very much": "Predictable substitutions like '@' instead of 'a' don't help very much", + "Add another word or two. Uncommon words are better.": "Add another word or two. Uncommon words are better.", + "Repeats like \"aaa\" are easy to guess": "Repeats like \"aaa\" are easy to guess", + "Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"": "Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"", + "Sequences like abc or 6543 are easy to guess": "Sequences like abc or 6543 are easy to guess", + "Recent years are easy to guess": "Recent years are easy to guess", + "Dates are often easy to guess": "Dates are often easy to guess", + "This is a top-10 common password": "This is a top-10 common password", + "This is a top-100 common password": "This is a top-100 common password", + "This is a very common password": "This is a very common password", + "This is similar to a commonly used password": "This is similar to a commonly used password", + "A word by itself is easy to guess": "A word by itself is easy to guess", + "Names and surnames by themselves are easy to guess": "Names and surnames by themselves are easy to guess", + "Common names and surnames are easy to guess": "Common names and surnames are easy to guess", + "Straight rows of keys are easy to guess": "Straight rows of keys are easy to guess", + "Short keyboard patterns are easy to guess": "Short keyboard patterns are easy to guess", + "There was an error joining the room": "There was an error joining the room", "Sorry, your homeserver is too old to participate in this room.": "Sorry, your homeserver is too old to participate in this room.", "Please contact your homeserver administrator.": "Please contact your homeserver administrator.", "Failed to join room": "Failed to join room", "Message Pinning": "Message Pinning", + "Custom user status messages": "Custom user status messages", "Increase performance by only loading room members on first view": "Increase performance by only loading room members on first view", + "Backup of encryption keys to server": "Backup of encryption keys to server", "Disable Emoji suggestions while typing": "Disable Emoji suggestions while typing", "Use compact timeline layout": "Use compact timeline layout", "Hide removed messages": "Hide removed messages", @@ -240,6 +281,7 @@ "Always show message timestamps": "Always show message timestamps", "Autoplay GIFs and videos": "Autoplay GIFs and videos", "Always show encryption icons": "Always show encryption icons", + "Show a reminder to enable Secure Message Recovery in encrypted rooms": "Show a reminder to enable Secure Message Recovery in encrypted rooms", "Enable automatic language detection for syntax highlighting": "Enable automatic language detection for syntax highlighting", "Hide avatars in user and room mentions": "Hide avatars in user and room mentions", "Disable big emoji in chat": "Disable big emoji in chat", @@ -255,16 +297,23 @@ "Enable URL previews for this room (only affects you)": "Enable URL previews for this room (only affects you)", "Enable URL previews by default for participants in this room": "Enable URL previews by default for participants in this room", "Room Colour": "Room Colour", + "Pin rooms I'm mentioned in to the top of the room list": "Pin rooms I'm mentioned in to the top of the room list", + "Pin unread rooms to the top of the room list": "Pin unread rooms to the top of the room list", "Enable widget screenshots on supported widgets": "Enable widget screenshots on supported widgets", "Show empty room list headings": "Show empty room list headings", + "Prompt before sending invites to potentially invalid matrix IDs": "Prompt before sending invites to potentially invalid matrix IDs", + "Show developer tools": "Show developer tools", "Collecting app version information": "Collecting app version information", "Collecting logs": "Collecting logs", "Uploading report": "Uploading report", "Waiting for response from server": "Waiting for response from server", "Messages containing my display name": "Messages containing my display name", "Messages containing my user name": "Messages containing my user name", + "Messages containing @room": "Messages containing @room", "Messages in one-to-one chats": "Messages in one-to-one chats", + "Encrypted messages in one-to-one chats": "Encrypted messages in one-to-one chats", "Messages in group chats": "Messages in group chats", + "Encrypted messages in group chats": "Encrypted messages in group chats", "When I'm invited to a room": "When I'm invited to a room", "Call invitation": "Call invitation", "Messages sent by bot": "Messages sent by bot", @@ -275,7 +324,6 @@ "Incoming call from %(name)s": "Incoming call from %(name)s", "Decline": "Decline", "Accept": "Accept", - "Error": "Error", "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains", "Incorrect verification code": "Incorrect verification code", "Enter Code": "Enter Code", @@ -312,6 +360,24 @@ "Failed to set display name": "Failed to set display name", "Disable Notifications": "Disable Notifications", "Enable Notifications": "Enable Notifications", + "Delete Backup": "Delete Backup", + "Delete your backed up encryption keys from the server? You will no longer be able to use your recovery key to read encrypted message history": "Delete your backed up encryption keys from the server? You will no longer be able to use your recovery key to read encrypted message history", + "Delete backup": "Delete backup", + "Unable to load key backup status": "Unable to load key backup status", + "This device is uploading keys to this backup": "This device is uploading keys to this backup", + "This device is <b>not</b> uploading keys to this backup": "This device is <b>not</b> uploading keys to this backup", + "Backup has a <validity>valid</validity> signature from this device": "Backup has a <validity>valid</validity> signature from this device", + "Backup has a <validity>valid</validity> signature from <verify>verified</verify> device <device></device>": "Backup has a <validity>valid</validity> signature from <verify>verified</verify> device <device></device>", + "Backup has a <validity>valid</validity> signature from <verify>unverified</verify> device <device></device>": "Backup has a <validity>valid</validity> signature from <verify>unverified</verify> device <device></device>", + "Backup has an <validity>invalid</validity> signature from <verify>verified</verify> device <device></device>": "Backup has an <validity>invalid</validity> signature from <verify>verified</verify> device <device></device>", + "Backup has an <validity>invalid</validity> signature from <verify>unverified</verify> device <device></device>": "Backup has an <validity>invalid</validity> signature from <verify>unverified</verify> device <device></device>", + "Verify...": "Verify...", + "Backup is not signed by any of your devices": "Backup is not signed by any of your devices", + "Backup version: ": "Backup version: ", + "Algorithm: ": "Algorithm: ", + "Restore backup": "Restore backup", + "No backup is present": "No backup is present", + "Start a new backup": "Start a new backup", "Error saving email notification preferences": "Error saving email notification preferences", "An error occurred whilst saving your email notification preferences.": "An error occurred whilst saving your email notification preferences.", "Keywords": "Keywords", @@ -339,31 +405,6 @@ "Off": "Off", "On": "On", "Noisy": "Noisy", - "Invalid alias format": "Invalid alias format", - "'%(alias)s' is not a valid format for an alias": "'%(alias)s' is not a valid format for an alias", - "Invalid address format": "Invalid address format", - "'%(alias)s' is not a valid format for an address": "'%(alias)s' is not a valid format for an address", - "not specified": "not specified", - "not set": "not set", - "Remote addresses for this room:": "Remote addresses for this room:", - "Addresses": "Addresses", - "The main address for this room is": "The main address for this room is", - "Local addresses for this room:": "Local addresses for this room:", - "This room has no local addresses": "This room has no local addresses", - "New address (e.g. #foo:%(localDomain)s)": "New address (e.g. #foo:%(localDomain)s)", - "Invalid community ID": "Invalid community ID", - "'%(groupId)s' is not a valid community ID": "'%(groupId)s' is not a valid community ID", - "Flair": "Flair", - "Showing flair for these communities:": "Showing flair for these communities:", - "This room is not showing flair for any communities": "This room is not showing flair for any communities", - "New community ID (e.g. +foo:%(localDomain)s)": "New community ID (e.g. +foo:%(localDomain)s)", - "You have <a>enabled</a> URL previews by default.": "You have <a>enabled</a> URL previews by default.", - "You have <a>disabled</a> URL previews by default.": "You have <a>disabled</a> URL previews by default.", - "URL previews are enabled by default for participants in this room.": "URL previews are enabled by default for participants in this room.", - "URL previews are disabled by default for participants in this room.": "URL previews are disabled by default for participants in this room.", - "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.", - "URL Previews": "URL Previews", - "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.", "Cannot add any more widgets": "Cannot add any more widgets", "The maximum permitted number of widgets have already been added to this room.": "The maximum permitted number of widgets have already been added to this room.", "Add a widget": "Add a widget", @@ -427,6 +468,7 @@ "Make Moderator": "Make Moderator", "Admin Tools": "Admin Tools", "Level:": "Level:", + "Close": "Close", "and %(count)s others...": { "other": "and %(count)s others...", "one": "and one other..." @@ -444,8 +486,9 @@ "numbered-list": "numbered-list", "Attachment": "Attachment", "At this time it is not possible to reply with a file so this will be sent without being a reply.": "At this time it is not possible to reply with a file so this will be sent without being a reply.", - "Upload Files": "Upload Files", "Are you sure you want to upload the following files?": "Are you sure you want to upload the following files?", + "The following files cannot be uploaded:": "The following files cannot be uploaded:", + "Upload Files": "Upload Files", "Encrypted room": "Encrypted room", "Unencrypted room": "Unencrypted room", "Hangup": "Hangup", @@ -543,6 +586,11 @@ "You are trying to access a room.": "You are trying to access a room.", "<a>Click here</a> to join the discussion!": "<a>Click here</a> to join the discussion!", "This is a preview of this room. Room interactions have been disabled": "This is a preview of this room. Room interactions have been disabled", + "To view your secure message history and ensure you can view new messages on future devices, set up Secure Message Recovery.": "To view your secure message history and ensure you can view new messages on future devices, set up Secure Message Recovery.", + "If you log out or use another device, you'll lose your secure message history. To prevent this, set up Secure Message Recovery.": "If you log out or use another device, you'll lose your secure message history. To prevent this, set up Secure Message Recovery.", + "Secure Message Recovery": "Secure Message Recovery", + "Don't ask again": "Don't ask again", + "Set up": "Set up", "To change the room's avatar, you must be a": "To change the room's avatar, you must be a", "To change the room's name, you must be a": "To change the room's name, you must be a", "To change the room's main address, you must be a": "To change the room's main address, you must be a", @@ -587,6 +635,7 @@ "Click here to fix": "Click here to fix", "To send events of type <eventType/>, you must be a": "To send events of type <eventType/>, you must be a", "Upgrade room to version %(ver)s": "Upgrade room to version %(ver)s", + "Open Devtools": "Open Devtools", "Who can access this room?": "Who can access this room?", "Only people who have been invited": "Only people who have been invited", "Anyone who knows the room's link, apart from guests": "Anyone who knows the room's link, apart from guests", @@ -611,13 +660,37 @@ "All Rooms": "All Rooms", "Cancel": "Cancel", "You don't currently have any stickerpacks enabled": "You don't currently have any stickerpacks enabled", - "Add a stickerpack": "Add a stickerpack", + "Add some now": "Add some now", "Stickerpack": "Stickerpack", "Hide Stickers": "Hide Stickers", "Show Stickers": "Show Stickers", "Scroll to unread messages": "Scroll to unread messages", "Jump to first unread message.": "Jump to first unread message.", - "Close": "Close", + "Invalid alias format": "Invalid alias format", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' is not a valid format for an alias", + "Invalid address format": "Invalid address format", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' is not a valid format for an address", + "not specified": "not specified", + "not set": "not set", + "Remote addresses for this room:": "Remote addresses for this room:", + "Addresses": "Addresses", + "The main address for this room is": "The main address for this room is", + "Local addresses for this room:": "Local addresses for this room:", + "This room has no local addresses": "This room has no local addresses", + "New address (e.g. #foo:%(localDomain)s)": "New address (e.g. #foo:%(localDomain)s)", + "Invalid community ID": "Invalid community ID", + "'%(groupId)s' is not a valid community ID": "'%(groupId)s' is not a valid community ID", + "Flair": "Flair", + "Showing flair for these communities:": "Showing flair for these communities:", + "This room is not showing flair for any communities": "This room is not showing flair for any communities", + "New community ID (e.g. +foo:%(localDomain)s)": "New community ID (e.g. +foo:%(localDomain)s)", + "You have <a>enabled</a> URL previews by default.": "You have <a>enabled</a> URL previews by default.", + "You have <a>disabled</a> URL previews by default.": "You have <a>disabled</a> URL previews by default.", + "URL previews are enabled by default for participants in this room.": "URL previews are enabled by default for participants in this room.", + "URL previews are disabled by default for participants in this room.": "URL previews are disabled by default for participants in this room.", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.", + "URL Previews": "URL Previews", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.", "Sunday": "Sunday", "Monday": "Monday", "Tuesday": "Tuesday", @@ -648,15 +721,13 @@ "Message removed": "Message removed", "Robot check is currently unavailable on desktop - please use a <a>web browser</a>": "Robot check is currently unavailable on desktop - please use a <a>web browser</a>", "This Home Server would like to make sure you are not a robot": "This Home Server would like to make sure you are not a robot", - "Sign in with CAS": "Sign in with CAS", "Custom Server Options": "Custom Server Options", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.", "This allows you to use this app with an existing Matrix account on a different home server.": "This allows you to use this app with an existing Matrix account on a different home server.", "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "You can also set a custom identity server but this will typically prevent interaction with users based on email address.", - "Dismiss": "Dismiss", "To continue, please enter your password.": "To continue, please enter your password.", "Password:": "Password:", - "Please accept all of the policies": "Please accept all of the policies", + "Please review and accept all of the homeserver's policies": "Please review and accept all of the homeserver's policies", "Please review and accept the policies of this homeserver:": "Please review and accept the policies of this homeserver:", "An email has been sent to %(emailAddress)s": "An email has been sent to %(emailAddress)s", "Please check your email to continue registration.": "Please check your email to continue registration.", @@ -674,6 +745,7 @@ "User name": "User name", "Mobile phone number": "Mobile phone number", "Forgot your password?": "Forgot your password?", + "Matrix ID": "Matrix ID", "%(serverName)s Matrix ID": "%(serverName)s Matrix ID", "Sign in with": "Sign in with", "Email address": "Email address", @@ -692,6 +764,7 @@ "Remove this user from community?": "Remove this user from community?", "Failed to withdraw invitation": "Failed to withdraw invitation", "Failed to remove user from community": "Failed to remove user from community", + "Failed to load group members": "Failed to load group members", "Filter community members": "Filter community members", "Flair will appear if enabled in room settings": "Flair will appear if enabled in room settings", "Flair will not appear": "Flair will not appear", @@ -748,7 +821,6 @@ "Unblacklist": "Unblacklist", "Blacklist": "Blacklist", "Unverify": "Unverify", - "Verify...": "Verify...", "No results": "No results", "Delete": "Delete", "Communities": "Communities", @@ -873,11 +945,15 @@ }, "ex. @bob:example.com": "ex. @bob:example.com", "Add User": "Add User", - "Matrix ID": "Matrix ID", "Matrix Room ID": "Matrix Room ID", "email address": "email address", + "That doesn't look like a valid email address": "That doesn't look like a valid email address", "You have entered an invalid address.": "You have entered an invalid address.", "Try using one of the following valid address types: %(validTypesList)s.": "Try using one of the following valid address types: %(validTypesList)s.", + "The following users may not exist": "The following users may not exist", + "Unable to find profiles for the Matrix IDs listed below - would you like to invite them anyway?": "Unable to find profiles for the Matrix IDs listed below - would you like to invite them anyway?", + "Invite anyway and never warn me again": "Invite anyway and never warn me again", + "Invite anyway": "Invite anyway", "Preparing to send logs": "Preparing to send logs", "Logs sent": "Logs sent", "Thank you!": "Thank you!", @@ -888,6 +964,7 @@ "What GitHub issue are these logs for?": "What GitHub issue are these logs for?", "Notes:": "Notes:", "Send logs": "Send logs", + "Unable to load commit detail: %(msg)s": "Unable to load commit detail: %(msg)s", "Unavailable": "Unavailable", "Changelog": "Changelog", "Create a new chat or reuse an existing one": "Create a new chat or reuse an existing one", @@ -912,7 +989,11 @@ "Advanced options": "Advanced options", "Block users on other matrix homeservers from joining this room": "Block users on other matrix homeservers from joining this room", "This setting cannot be changed later!": "This setting cannot be changed later!", - "Failed to indicate account erasure": "Failed to indicate account erasure", + "Sign out": "Sign out", + "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of Riot to do this": "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of Riot to do this", + "You've previously used a newer version of Riot on %(host)s. To use this version again with end to end encryption, you will need to sign out and back in again. ": "You've previously used a newer version of Riot on %(host)s. To use this version again with end to end encryption, you will need to sign out and back in again. ", + "Incompatible Database": "Incompatible Database", + "Continue With Encryption Disabled": "Continue With Encryption Disabled", "Unknown error": "Unknown error", "Incorrect password": "Incorrect password", "Deactivate Account": "Deactivate Account", @@ -951,6 +1032,10 @@ "Ignore request": "Ignore request", "Loading device info...": "Loading device info...", "Encryption key request": "Encryption key request", + "You've previously used Riot on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, Riot needs to resync your account.": "You've previously used Riot on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, Riot needs to resync your account.", + "If the other version of Riot is still open in another tab, please close it as using Riot on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "If the other version of Riot is still open in another tab, please close it as using Riot on the same host with both lazy loading enabled and disabled simultaneously will cause issues.", + "Incompatible local cache": "Incompatible local cache", + "Clear cache and resync": "Clear cache and resync", "Riot now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!": "Riot now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!", "Updating Riot": "Updating Riot", "Failed to upgrade room": "Failed to upgrade room", @@ -962,7 +1047,6 @@ "Update any local room aliases to point to the new room": "Update any local room aliases to point to the new room", "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room", "Put a link back to the old room at the start of the new room so people can see old messages": "Put a link back to the old room at the start of the new room so people can see old messages", - "Sign out": "Sign out", "Log out and remove encryption keys?": "Log out and remove encryption keys?", "Clear Storage and Sign Out": "Clear Storage and Sign Out", "Send Logs": "Send Logs", @@ -979,16 +1063,15 @@ "Unable to verify email address.": "Unable to verify email address.", "This will allow you to reset your password and receive notifications.": "This will allow you to reset your password and receive notifications.", "Skip": "Skip", - "User names may only contain letters, numbers, dots, hyphens and underscores.": "User names may only contain letters, numbers, dots, hyphens and underscores.", + "Only use lower case letters, numbers and '=_-./'": "Only use lower case letters, numbers and '=_-./'", "Username not available": "Username not available", "Username invalid: %(errMessage)s": "Username invalid: %(errMessage)s", "An error occurred: %(error_string)s": "An error occurred: %(error_string)s", + "Checking...": "Checking...", "Username available": "Username available", "To get started, please pick a username!": "To get started, please pick a username!", "This will be your account name on the <span></span> homeserver, or you can pick a <a>different server</a>.": "This will be your account name on the <span></span> homeserver, or you can pick a <a>different server</a>.", - "If you would like to create a Matrix account you can <a>register</a> now.": "If you would like to create a Matrix account you can <a>register</a> now.", "If you already have a Matrix account you can <a>log in</a> instead.": "If you already have a Matrix account you can <a>log in</a> instead.", - "You are currently using Riot anonymously as a guest.": "You are currently using Riot anonymously as a guest.", "You have successfully set a password!": "You have successfully set a password!", "You have successfully set a password and an email address!": "You have successfully set a password and an email address!", "You can now return to your account after signing out, and sign in on other devices.": "You can now return to your account after signing out, and sign in on other devices.", @@ -1009,6 +1092,21 @@ "Room contains unknown devices": "Room contains unknown devices", "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contains devices that you haven't seen before.", "Unknown devices": "Unknown devices", + "Unable to load backup status": "Unable to load backup status", + "Unable to restore backup": "Unable to restore backup", + "No backup found!": "No backup found!", + "Backup Restored": "Backup Restored", + "Failed to decrypt %(failedCount)s sessions!": "Failed to decrypt %(failedCount)s sessions!", + "Restored %(sessionCount)s session keys": "Restored %(sessionCount)s session keys", + "Enter Recovery Passphrase": "Enter Recovery Passphrase", + "Access your secure message history and set up secure messaging by entering your recovery passphrase.": "Access your secure message history and set up secure messaging by entering your recovery passphrase.", + "Next": "Next", + "If you've forgotten your recovery passphrase you can <button1>use your recovery key</button1> or <button2>set up new recovery options</button2>": "If you've forgotten your recovery passphrase you can <button1>use your recovery key</button1> or <button2>set up new recovery options</button2>", + "Enter Recovery Key": "Enter Recovery Key", + "This looks like a valid recovery key!": "This looks like a valid recovery key!", + "Not a valid recovery key": "Not a valid recovery key", + "Access your secure message history and set up secure messaging by entering your recovery key.": "Access your secure message history and set up secure messaging by entering your recovery key.", + "If you've forgotten your recovery passphrase you can <button>set up new recovery options</button>": "If you've forgotten your recovery passphrase you can <button>set up new recovery options</button>", "Private Chat": "Private Chat", "Public Chat": "Public Chat", "Custom": "Custom", @@ -1038,6 +1136,8 @@ "Forget": "Forget", "Low Priority": "Low Priority", "Direct Chat": "Direct Chat", + "Set a new status...": "Set a new status...", + "Clear status": "Clear status", "View Community": "View Community", "Sorry, your browser is <b>not</b> able to run Riot.": "Sorry, your browser is <b>not</b> able to run Riot.", "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.", @@ -1053,7 +1153,7 @@ "You must <a>register</a> to use this functionality": "You must <a>register</a> to use this functionality", "You must join the room to see its files": "You must join the room to see its files", "There are no visible files in this room": "There are no visible files in this room", - "<h1>HTML for your community's page</h1>\r\n<p>\r\n Use the long description to introduce new members to the community, or distribute\r\n some important <a href=\"foo\">links</a>\r\n</p>\r\n<p>\r\n You can even use 'img' tags\r\n</p>\r\n": "<h1>HTML for your community's page</h1>\r\n<p>\r\n Use the long description to introduce new members to the community, or distribute\r\n some important <a href=\"foo\">links</a>\r\n</p>\r\n<p>\r\n You can even use 'img' tags\r\n</p>\r\n", + "<h1>HTML for your community's page</h1>\n<p>\n Use the long description to introduce new members to the community, or distribute\n some important <a href=\"foo\">links</a>\n</p>\n<p>\n You can even use 'img' tags\n</p>\n": "<h1>HTML for your community's page</h1>\n<p>\n Use the long description to introduce new members to the community, or distribute\n some important <a href=\"foo\">links</a>\n</p>\n<p>\n You can even use 'img' tags\n</p>\n", "Add rooms to the community summary": "Add rooms to the community summary", "Which rooms would you like to add to this summary?": "Which rooms would you like to add to this summary?", "Add to summary": "Add to summary", @@ -1071,6 +1171,7 @@ "Failed to update community": "Failed to update community", "Unable to accept invite": "Unable to accept invite", "Unable to join community": "Unable to join community", + "You are an administrator of this community. You will not be able to rejoin without an invite from another administrator.": "You are an administrator of this community. You will not be able to rejoin without an invite from another administrator.", "Leave Community": "Leave Community", "Leave %(groupName)s?": "Leave %(groupName)s?", "Unable to leave community": "Unable to leave community", @@ -1094,7 +1195,10 @@ "This Home server does not support communities": "This Home server does not support communities", "Failed to load %(groupId)s": "Failed to load %(groupId)s", "Couldn't load home page": "Couldn't load home page", + "You are currently using Riot anonymously as a guest.": "You are currently using Riot anonymously as a guest.", + "If you would like to create a Matrix account you can <a>register</a> now.": "If you would like to create a Matrix account you can <a>register</a> now.", "Login": "Login", + "Invalid configuration: Cannot supply a default homeserver URL and a default server name": "Invalid configuration: Cannot supply a default homeserver URL and a default server name", "Failed to reject invitation": "Failed to reject invitation", "This room is not public. You will not be able to rejoin without an invite.": "This room is not public. You will not be able to rejoin without an invite.", "Are you sure you want to leave the room '%(roomName)s'?": "Are you sure you want to leave the room '%(roomName)s'?", @@ -1108,6 +1212,7 @@ "Review terms and conditions": "Review terms and conditions", "Old cryptography data detected": "Old cryptography data detected", "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.", + "Unknown error discovering homeserver": "Unknown error discovering homeserver", "Logout": "Logout", "Your Communities": "Your Communities", "Did you know: you can use communities to filter your Riot.im experience!": "Did you know: you can use communities to filter your Riot.im experience!", @@ -1122,6 +1227,10 @@ "one": "%(count)s Member" }, "Invite to this room": "Invite to this room", + "%(count)s Notifications": { + "other": "%(count)s Notifications", + "one": "%(count)s Notification" + }, "Files": "Files", "Notifications": "Notifications", "Hide panel": "Hide panel", @@ -1169,6 +1278,7 @@ "more": "more", "You seem to be uploading files, are you sure you want to quit?": "You seem to be uploading files, are you sure you want to quit?", "You seem to be in a call, are you sure you want to quit?": "You seem to be in a call, are you sure you want to quit?", + "File is too big. Maximum file size is %(fileSize)s": "File is too big. Maximum file size is %(fileSize)s", "Failed to upload file": "Failed to upload file", "Server may be unavailable, overloaded, or the file too big": "Server may be unavailable, overloaded, or the file too big", "Search failed": "Search failed", @@ -1212,6 +1322,7 @@ "Autocomplete Delay (ms):": "Autocomplete Delay (ms):", "<not supported>": "<not supported>", "Import E2E room keys": "Import E2E room keys", + "Key Backup": "Key Backup", "Cryptography": "Cryptography", "Device ID:": "Device ID:", "Device key:": "Device key:", @@ -1276,16 +1387,22 @@ "Confirm your new password": "Confirm your new password", "Send Reset Email": "Send Reset Email", "Create an account": "Create an account", + "Invalid homeserver discovery response": "Invalid homeserver discovery response", + "Invalid identity server discovery response": "Invalid identity server discovery response", + "General failure": "General failure", "This Home Server does not support login using email address.": "This Home Server does not support login using email address.", "Please <a>contact your service administrator</a> to continue using this service.": "Please <a>contact your service administrator</a> to continue using this service.", "Incorrect username and/or password.": "Incorrect username and/or password.", "Please note you are logging into the %(hs)s server, not matrix.org.": "Please note you are logging into the %(hs)s server, not matrix.org.", "Guest access is disabled on this Home Server.": "Guest access is disabled on this Home Server.", + "Failed to perform homeserver discovery": "Failed to perform homeserver discovery", "The phone number entered looks invalid": "The phone number entered looks invalid", + "Unknown failure discovering homeserver": "Unknown failure discovering homeserver", "This homeserver doesn't offer any login flows which are supported by this client.": "This homeserver doesn't offer any login flows which are supported by this client.", "Error: Problem communicating with the given homeserver.": "Error: Problem communicating with the given homeserver.", "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or <a>enable unsafe scripts</a>.": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or <a>enable unsafe scripts</a>.", "Can't connect to homeserver - please check your connectivity, ensure your <a>homeserver's SSL certificate</a> is trusted, and that a browser extension is not blocking requests.": "Can't connect to homeserver - please check your connectivity, ensure your <a>homeserver's SSL certificate</a> is trusted, and that a browser extension is not blocking requests.", + "Sign in with single sign-on": "Sign in with single sign-on", "Try the app first": "Try the app first", "Sign in to get started": "Sign in to get started", "Failed to fetch avatar URL": "Failed to fetch avatar URL", @@ -1338,14 +1455,53 @@ "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.", "File to import": "File to import", "Import": "Import", + "Great! This passphrase looks strong enough.": "Great! This passphrase looks strong enough.", + "Secure your encrypted message history with a Recovery Passphrase.": "Secure your encrypted message history with a Recovery Passphrase.", + "You'll need it if you log out or lose access to this device.": "You'll need it if you log out or lose access to this device.", + "Enter a passphrase...": "Enter a passphrase...", + "If you don't want encrypted message history to be available on other devices, <button>opt out</button>.": "If you don't want encrypted message history to be available on other devices, <button>opt out</button>.", + "Or, if you don't want to create a Recovery Passphrase, skip this step and <button>download a recovery key</button>.": "Or, if you don't want to create a Recovery Passphrase, skip this step and <button>download a recovery key</button>.", + "That matches!": "That matches!", + "That doesn't match.": "That doesn't match.", + "Go back to set it again.": "Go back to set it again.", + "Type in your Recovery Passphrase to confirm you remember it. If it helps, add it to your password manager or store it somewhere safe.": "Type in your Recovery Passphrase to confirm you remember it. If it helps, add it to your password manager or store it somewhere safe.", + "Repeat your passphrase...": "Repeat your passphrase...", + "As a safety net, you can use it to restore your encrypted message history if you forget your Recovery Passphrase.": "As a safety net, you can use it to restore your encrypted message history if you forget your Recovery Passphrase.", + "As a safety net, you can use it to restore your encrypted message history.": "As a safety net, you can use it to restore your encrypted message history.", + "Make a copy of this Recovery Key and keep it safe.": "Make a copy of this Recovery Key and keep it safe.", + "Your Recovery Key": "Your Recovery Key", + "Copy to clipboard": "Copy to clipboard", + "Download": "Download", + "I've made a copy": "I've made a copy", + "Your Recovery Key has been <b>copied to your clipboard</b>, paste it to:": "Your Recovery Key has been <b>copied to your clipboard</b>, paste it to:", + "Your Recovery Key is in your <b>Downloads</b> folder.": "Your Recovery Key is in your <b>Downloads</b> folder.", + "<b>Print it</b> and store it somewhere safe": "<b>Print it</b> and store it somewhere safe", + "<b>Save it</b> on a USB key or backup drive": "<b>Save it</b> on a USB key or backup drive", + "<b>Copy it</b> to your personal cloud storage": "<b>Copy it</b> to your personal cloud storage", + "Got it": "Got it", + "Backup created": "Backup created", + "Your encryption keys are now being backed up to your Homeserver.": "Your encryption keys are now being backed up to your Homeserver.", + "Without setting up Secure Message Recovery, you won't be able to restore your encrypted message history if you log out or use another device.": "Without setting up Secure Message Recovery, you won't be able to restore your encrypted message history if you log out or use another device.", + "Set up Secure Message Recovery": "Set up Secure Message Recovery", + "Create a Recovery Passphrase": "Create a Recovery Passphrase", + "Confirm Recovery Passphrase": "Confirm Recovery Passphrase", + "Recovery Key": "Recovery Key", + "Keep it safe": "Keep it safe", + "Backing up...": "Backing up...", + "Create Key Backup": "Create Key Backup", + "Unable to create key backup": "Unable to create key backup", + "Retry": "Retry", + "Without setting up Secure Message Recovery, you'll lose your secure message history when you log out.": "Without setting up Secure Message Recovery, you'll lose your secure message history when you log out.", + "If you don't want to set this up now, you can later in Settings.": "If you don't want to set this up now, you can later in Settings.", + "New Recovery Method": "New Recovery Method", + "A new recovery passphrase and key for Secure Messages has been detected.": "A new recovery passphrase and key for Secure Messages has been detected.", + "Setting up Secure Messages on this device will re-encrypt this device's message history with the new recovery method.": "Setting up Secure Messages on this device will re-encrypt this device's message history with the new recovery method.", + "If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.", + "Set up Secure Messages": "Set up Secure Messages", + "Go to Settings": "Go to Settings", "Failed to set direct chat tag": "Failed to set direct chat tag", "Failed to remove tag %(tagName)s from room": "Failed to remove tag %(tagName)s from room", "Failed to add tag %(tagName)s to room": "Failed to add tag %(tagName)s to room", - "You've previously used Riot on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, Riot needs to resync your account.": "You've previously used Riot on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, Riot needs to resync your account.", - "If the other version of Riot is still open in another tab, please close it as using Riot on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "If the other version of Riot is still open in another tab, please close it as using Riot on the same host with both lazy loading enabled and disabled simultaneously will cause issues.", - "Incompatible local cache": "Incompatible local cache", - "Clear cache and resync": "Clear cache and resync", - "Add some now": "Add some now", "Riot is not supported on mobile web. Install the app?": "Riot is not supported on mobile web. Install the app?", "Riot Desktop on %(platformName)s": "Riot Desktop on %(platformName)s", "Unknown device": "Unknown device", diff --git a/riot/i18n/en_US.json b/riot/i18n/en_US.json index e21c8d5..713a887 100644 --- a/riot/i18n/en_US.json +++ b/riot/i18n/en_US.json @@ -136,6 +136,8 @@ "Failed to join room": "Failed to join room", "Failed to kick": "Failed to kick", "Failed to leave room": "Failed to leave room", + "Failed to load %(groupId)s": "Failed to load %(groupId)s", + "Failed to load group members": "Failed to load group members", "Failed to load timeline position": "Failed to load timeline position", "Failed to mute user": "Failed to mute user", "Failed to reject invite": "Failed to reject invite", @@ -851,6 +853,46 @@ "Your identity server's URL": "Your identity server's URL", "e.g. %(exampleValue)s": "e.g. %(exampleValue)s", "Every page you use in the app": "Every page you use in the app", + "e.g. <CurrentPageURL>": "e.g. <CurrentPageURL>", + "Your User Agent": "Your User Agent", + "Your device resolution": "Your device resolution", + "The information being sent to us to help make Riot.im better includes:": "The information being sent to us to help make Riot.im better includes:", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.", + "Call Failed": "Call Failed", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.", + "Review Devices": "Review Devices", + "Call Anyway": "Call Anyway", + "Answer Anyway": "Answer Anyway", + "Call": "Call", + "Answer": "Answer", + "A conference call could not be started because the intgrations server is not available": "A conference call could not be started because the integrations server is not available", + "Call in Progress": "Call in Progress", + "A call is currently being placed!": "A call is currently being placed!", + "A call is already in progress!": "A call is already in progress!", + "Permission Required": "Permission Required", + "You do not have permission to start a conference call in this room": "You do not have permission to start a conference call in this room", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", + "Who would you like to add to this community?": "Who would you like to add to this community?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID", + "Invite new community members": "Invite new community members", + "Name or matrix ID": "Name or matrix ID", + "Invite to Community": "Invite to Community", + "Which rooms would you like to add to this community?": "Which rooms would you like to add to this community?", + "Show these rooms to non-members on the community page and room list?": "Show these rooms to non-members on the community page and room list?", + "Add rooms to the community": "Add rooms to the community", + "Room name or alias": "Room name or alias", + "Add to community": "Add to community", + "Failed to invite the following users to %(groupId)s:": "Failed to invite the following users to %(groupId)s:", + "Failed to invite users to community": "Failed to invite users to community", + "Failed to invite users to %(groupId)s": "Failed to invite users to %(groupId)s", + "Failed to add the following rooms to %(groupId)s:": "Failed to add the following rooms to %(groupId)s:", + "Registration Required": "Registration Required", + "You need to register to do this. Would you like to register now?": "You need to register to do this. Would you like to register now?", + "Restricted": "Restricted", + "Missing roomId.": "Missing roomId.", + "Opens the Developer Tools dialog": "Opens the Developer Tools dialog", + "Forces the current outbound group session in an encrypted room to be discarded": "Forces the current outbound group session in an encrypted room to be discarded", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s changed their display name to %(displayName)s.", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s on %(osName)s", "Riot Desktop on %(platformName)s": "Riot Desktop on %(platformName)s", "Riot is not supported on mobile web. Install the app?": "Riot is not supported on mobile web. Install the app?", diff --git a/riot/i18n/eo.json b/riot/i18n/eo.json index 1681486..6f829e0 100644 --- a/riot/i18n/eo.json +++ b/riot/i18n/eo.json @@ -1177,6 +1177,24 @@ "Encrypting": "Ĉifranta", "Encrypted, not sent": "Ĉifrita, ne sendita", "If your other devices do not have the key for this message you will not be able to decrypt them.": "Se viaj aliaj aparatoj ne havas la ŝlosilon por ĉi tiu mesaĝo, vi ne povos malĉifri ĝin.", + "Permission Required": "Necesas permeso", + "Registration Required": "Necesas registriĝo", + "You need to register to do this. Would you like to register now?": "Por fari ĉi tion, vi bezonas registriĝi. Ĉu vi volas registriĝi nun?", + "Missing roomId.": "Mankas identigilo de la ĉambro.", + "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.": { + "other": "%(senderName)s aldonis %(addedAddresses)s kiel adresojn por la ĉambro.", + "one": "%(senderName)s aldonis %(addedAddresses)s kiel adreson por la ĉambro." + }, + "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.": { + "other": "%(senderName)s forigis %(removedAddresses)s kiel adresojn por la ĉambro.", + "one": "%(senderName)s forigis %(removedAddresses)s kiel adreson por la ĉambro." + }, + "%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.": "%(senderName)s aldonis %(addedAddresses)s kaj forigis %(removedAddresses)s kiel adresojn por la ĉambro.", + "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s agordis la ĉefan adreson por la ĉambro al %(address)s.", + "%(senderName)s removed the main address for this room.": "%(senderName)s forigis la ĉefan adreson de la ĉambro.", + "Please <a>contact your service administrator</a> to continue using the service.": "Bonvolu <a>kontakti administranton de la servo</a> por daŭre uzadi la servon.", + "Pin unread rooms to the top of the room list": "Fiksi nelegitajn ĉambrojn supre de la listo", + "Pin rooms I'm mentioned in to the top of the room list": "Fiksi ĉambrojn kun mencioj de mia nomo supre de la listo", "Riot Desktop on %(platformName)s": "Riot Labortablo sur %(platformName)s", "Riot is not supported on mobile web. Install the app?": "Riot ne estas subtenata sur poŝkomputila reto. Ĉu instali la aplikaĵon?", "Unknown device": "Nekonata aparato", @@ -1209,5 +1227,6 @@ "Dev chat for the Dendrite dev team": "Babilado por la programista skipo de Dendrite", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Multaj ĉambroj jam ekzistas en Matrix; kaj sendependaj, kaj ligitaj kun jamaj retoj (Slock, IRC, Gitter, ktp.). Rigardu la ĉambrujon!", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s per %(browserName)s je %(osName)s", - "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Vi povas uzi proprajn servilajn elektojn por saluti aliajn servilojn de Matrix, per specifo de alia hejmservila URL.<br/>Tio permesas al vi uzi klienton Riot kun jama konto de Matrix en alia hejmservilo.<br/><br/>Vi ankaŭ povas agordi propran identigan servilon, sed vi ne povos inviti uzantojn per retpoŝtadreso, aŭ esti invitata per retpoŝtadreso mem." + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Vi povas uzi proprajn servilajn elektojn por saluti aliajn servilojn de Matrix, per specifo de alia hejmservila URL.<br/>Tio permesas al vi uzi klienton Riot kun jama konto de Matrix en alia hejmservilo.<br/><br/>Vi ankaŭ povas agordi propran identigan servilon, sed vi ne povos inviti uzantojn per retpoŝtadreso, aŭ esti invitata per retpoŝtadreso mem.", + "Co-ordination for Riot translators": "Kunordigo por tradukantoj de Riot" } \ No newline at end of file diff --git a/riot/i18n/eu.json b/riot/i18n/eu.json index 92e4139..c12c652 100644 --- a/riot/i18n/eu.json +++ b/riot/i18n/eu.json @@ -1367,6 +1367,92 @@ "Incompatible local cache": "Katxe lokal bateraezina", "Clear cache and resync": "Garbitu katxea eta sinkronizatu berriro", "Add some now": "Gehitu batzuk orain", + "Joining room...": "Gelara elkartzen...", + "You are an administrator of this community. You will not be able to rejoin without an invite from another administrator.": "Komunitate honen administratzailea zara. Ezin izango duzu berriro elkartu ez bazaitu beste administratzaile batek gonbidatzen.", + "Open Devtools": "Ireki garapen tresnak", + "Show developer tools": "Erakutsi garapen tresnak", + "Pin unread rooms to the top of the room list": "Finkatu irakurri gabeko gelak gelen zerrendaren goialdean", + "Pin rooms I'm mentioned in to the top of the room list": "Finkatu aipatu nauten gelak gelen zerrendaren goialdean", + "If you would like to create a Matrix account you can <a>register</a> now.": "Matrix kontu bat sortu nahi baduzu, <a>izena eman</a> dezakezu.", + "You are currently using Riot anonymously as a guest.": "Riot anonimoki gonbidatu gisa erabiltzen ari zara.", + "Unable to load! Check your network connectivity and try again.": "Ezin da kargatu! Egiaztatu sare konexioa eta saiatu berriro.", + "Backup of encryption keys to server": "Zerbitzarirako zifratze gakoen babes-kopia", + "Delete Backup": "Ezabatu babes-kopia", + "Delete your backed up encryption keys from the server? You will no longer be able to use your recovery key to read encrypted message history": "Ezabatu zerbitzaritik gakoen babes-kopiak? Ezin izango duzu berreskuratze gakoa erabili zifratutako mezuen historia irakurteko", + "Delete backup": "Ezabatu babes-kopia", + "Unable to load key backup status": "Ezin izan da babes-kopiaren egoera kargatu", + "This device is uploading keys to this backup": "Gailu honek gakoak babes-kopia honetara igotzen ditu", + "This device is <b>not</b> uploading keys to this backup": "Gailu honek <b>ez</b> ditu gakoak igotzen babes-kopia honetara", + "Backup has a <validity>valid</validity> signature from this device": "Babes-kopiak gailu honen <validity>baliozko</validity> sinadura du", + "Backup has a <validity>valid</validity> signature from <verify>verified</verify> device <device>x</device>": "Babes-kopiak <verify>egiaztatutako</verify> <device>x</device> gailuaren <validity>baliozko</validity> sinadura du", + "Backup has a <validity>valid</validity> signature from <verify>unverified</verify> device <device></device>": "Babes-kopiak <verify>egiaztatu gabeko</verify> <device>gailu baten</device> <validity>baliozko</validity> sinadura du", + "Backup has an <validity>invalid</validity> signature from <verify>verified</verify> device <device></device>": "Babes-kopiak <verify>egiaztatutako</verify> <device></device> gailuaren <validity>balio gabeko</validity> sinadura du", + "Backup has an <validity>invalid</validity> signature from <verify>unverified</verify> device <device></device>": "Babes-kopiak <verify>egiaztatu gabeko</verify> <device></device> gailuaren <validity>baliogabeko</validity> sinadura du", + "Backup is not signed by any of your devices": "Babes-kopia ez dago zure gailu batek sinauta", + "Backup version: ": "Babes-kopiaren bertsioa: ", + "Algorithm: ": "Algoritmoa: ", + "Restore backup": "Berreskuratu babes-kopia", + "No backup is present": "Ez dago babes-kopiarik", + "Start a new backup": "Hasi babes-kopia berria", + "Please review and accept all of the homeserver's policies": "Berrikusi eta onartu hasiera-zerbitzariaren politika guztiak", + "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of Riot to do this": "Zure txaten historiala ez galtzeko, zure gelako gakoak esportatu behar dituzu saioa amaitu aurretik. Riot-en bertsio berriagora bueltatu behar zara hau egiteko", + "You've previously used a newer version of Riot on %(host)s. To use this version again with end to end encryption, you will need to sign out and back in again. ": "Riot-en bertsio berriago bat erabili duzu %(host)s zerbitzarian. Bertsio hau berriro erabiltzeko muturretik muturrerako zifratzearekin, saioa amaitu eta berriro hasi beharko duzu. ", + "Incompatible Database": "Datu-base bateraezina", + "Continue With Encryption Disabled": "Jarraitu zifratzerik gabe", + "Secure your encrypted message history with a Recovery Passphrase.": "Ziurtatu zure zifratutako mezuen historiala berreskuratze pasa-esaldi batekin.", + "You'll need it if you log out or lose access to this device.": "Saioa amaitzen baduzu edo gailu hau erabiltzeko aukera galtzen baduzu, hau beharko duzu.", + "Enter a passphrase...": "Sartu pasa-esaldi bat...", + "Next": "Hurrengoa", + "If you don't want encrypted message history to be availble on other devices, <button>opt out</button>.": "Ez baduzu zifratutako mezuen historiala beste gailuetan eskuragarri egotea, <button>desaktibatu aukera</button>.", + "Or, if you don't want to create a Recovery Passphrase, skip this step and <button>download a recovery key</button>.": "Edo, ez baduzu berreskuratze pasa-esaldi bat sortu nahi, saltatu urrats hau eta <button>deskargatu berreskuratze gako bat</button>.", + "That matches!": "Bat dator!", + "That doesn't match.": "Ez dator bat.", + "Go back to set it again.": "Joan atzera eta berriro ezarri.", + "Type in your Recovery Passphrase to confirm you remember it. If it helps, add it to your password manager or store it somewhere safe.": "Idatzi zure berreskuratze pasa-esaldia gogoratzen duzula berresteko. lagungarria bazaizu, gehitu ezazu zure pasahitz-kudeatzailera edo gorde toki seguru batean.", + "Repeat your passphrase...": "Errepikatu zure pasa-esaldia...", + "Make a copy of this Recovery Key and keep it safe.": "Egin berreskuratze gako honen kopia eta gorde toki seguruan.", + "As a safety net, you can use it to restore your encrypted message history if you forget your Recovery Passphrase.": "Aukeran, berreskuratze pasa-esaldia ahazten baduzu, zure zifratutako mezuen historiala berreskuratzeko erabili dezakezu.", + "Your Recovery Key": "Zure berreskuratze gakoa", + "Copy to clipboard": "Kopiatu arbelera", + "Download": "Deskargatu", + "I've made a copy": "Kopia bat egin dut", + "Your Recovery Key has been <b>copied to your clipboard</b>, paste it to:": "Zure berreskuratze gakoa <b>zure arbelera kopiatu da</b>, itsatsi hemen:", + "Your Recovery Key is in your <b>Downloads</b> folder.": "Zure berreskuratze gakoa zure <b>Deskargak</b> karpetan dago.", + "<b>Print it</b> and store it somewhere safe": "<b>Inprimatu ezazu</b> eta gorde toki seguruan", + "<b>Save it</b> on a USB key or backup drive": "<b>Gorde ezazu</b> USB giltza batean edo babes-kopien diskoan", + "<b>Copy it</b> to your personal cloud storage": "<b>Kopiatu ezazu</b> zure hodeiko biltegi pertsonalean", + "Got it": "Ulertuta", + "Backup created": "Babes-kopia sortuta", + "Your encryption keys are now being backed up to your Homeserver.": "Zure zifratze gakoak zure hasiera-zerbitzarian gordetzen ari dira.", + "Without setting up Secure Message Recovery, you won't be able to restore your encrypted message history if you log out or use another device.": "Mezuen berreskuratze segurua ezartzen ez bada, ezin izango duzu zure zifratutako mezuen historiala berreskuratu saioa amaitzen baduzu edo beste gailu bat erabiltzen baduzu.", + "Set up Secure Message Recovery": "Ezarri mezuen berreskuratze segurua", + "Create a Recovery Passphrase": "Sortu berreskuratze pasa-esaldia", + "Confirm Recovery Passphrase": "Berretsi berreskuratze pasa-esaldia", + "Recovery Key": "Berreskuratze gakoa", + "Keep it safe": "Gorde toki seguruan", + "Backing up...": "Babes-kopia egiten...", + "Create Key Backup": "Sortu gakoaren babes-kopia", + "Unable to create key backup": "Ezin izan da gakoaren babes-kopia sortu", + "Retry": "Berriro saiatu", + "Unable to load backup status": "Ezin izan da babes-kopiaren egoera kargatu", + "Unable to restore backup": "Ezin izan da babes-kopia berrezarri", + "No backup found!": "Ez da babes-kopiarik aurkitu!", + "Backup Restored": "Babes-kopia berrezarrita", + "Failed to decrypt %(failedCount)s sessions!": "Ezin izan dira %(failedCount)s saio deszifratu!", + "Restored %(sessionCount)s session keys": "%(sessionCount)s saio gako berrezarrita", + "Enter Recovery Passphrase": "Sartu berreskuratze pasa-esaldia", + "Access your secure message history and set up secure messaging by entering your recovery passphrase.": "Atzitu zure mezu seguruen historiala eta ezarri mezularitza segurua zure berreskuratze pasa-esaldia sartuz.", + "If you've forgotten your recovery passphrase you can <button1>use your recovery key</button1> or <button2>set up new recovery options</button2>": "Zure berreskuratze pasa-esaldia ahaztu baduzu <button1>berreskuratze gakoa erabili</button1> dezakezu edo <button2>berreskuratze aukera berriak ezarri</button2> ditzakezu", + "Enter Recovery Key": "Sartu berreskuratze gakoa", + "This looks like a valid recovery key!": "Hau baliozko berreskuratze gako bat dirudi!", + "Not a valid recovery key": "Ez da baliozko berreskuratze gako bat", + "Access your secure message history and set up secure messaging by entering your recovery key.": "Atzitu zure mezu seguruen historiala eta ezarri mezularitza segurua zure berreskuratze gakoa sartuz.", + "If you've forgotten your recovery passphrase you can <button>set up new recovery options</button>": "Zure berreskuratze pasa-esaldia ahaztu baduzu <button>berreskuratze aukera berriak ezarri</button> ditzakezu", + "Key Backup": "Gakoen babes-kopia", + "Sign in with single sign-on": "Hai saioa urrats batean", + "Failed to perform homeserver discovery": "Huts egin du hasiera-zerbitzarien bilaketak", + "Invalid homeserver discovery response": "Baliogabeko hasiera-zerbitzarien bilaketaren erantzuna", + "Cannot find homeserver": "Ezin izan da hasiera-zerbitzaria aurkitu", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s %(browserName)s bidez %(osName)s ostalarian", "Riot Desktop on %(platformName)s": "Riot Desktop %(platformName)s plataforman", "Riot is not supported on mobile web. Install the app?": "Riotek ez du euskarririk mugikorrentzako webean. Instalatu aplikazioa?", diff --git a/riot/i18n/fr.json b/riot/i18n/fr.json index 12b7c99..221e5f6 100644 --- a/riot/i18n/fr.json +++ b/riot/i18n/fr.json @@ -104,7 +104,7 @@ "Devices": "Appareils", "Devices will not yet be able to decrypt history from before they joined the room": "Les appareils ne pourront pas encore déchiffrer l'historique de messages d'avant leur arrivée sur le salon", "Failed to join room": "Échec de l’inscription au salon", - "Failed to kick": "Échec de l'exclusion", + "Failed to kick": "Échec de l'expulsion", "Failed to leave room": "Échec du départ du salon", "Failed to load timeline position": "Échec du chargement de la position dans l'historique", "Failed to mute user": "Échec de la mise en sourdine de l'utilisateur", @@ -159,9 +159,9 @@ "Join Room": "Rejoindre le salon", "%(targetName)s joined the room.": "%(targetName)s a rejoint le salon.", "Joins room with given alias": "Rejoint le salon avec l'alias renseigné", - "%(senderName)s kicked %(targetName)s.": "%(senderName)s a exclu %(targetName)s.", - "Kick": "Exclure", - "Kicks user with given id": "Exclut l'utilisateur à partir de son identifiant", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s a expulsé %(targetName)s.", + "Kick": "Expulser", + "Kicks user with given id": "Expulse l'utilisateur à partir de son identifiant", "Labs": "Laboratoire", "Leave room": "Quitter le salon", "%(targetName)s left the room.": "%(targetName)s a quitté le salon.", @@ -601,7 +601,7 @@ "Verified": "Vérifié", "Would you like to <acceptText>accept</acceptText> or <declineText>decline</declineText> this invitation?": "Souhaitez-vous <acceptText>accepter</acceptText> ou <declineText>refuser</declineText> cette invitation ?", "You have been banned from %(roomName)s by %(userName)s.": "Vous avez été banni(e) de %(roomName)s par %(userName)s.", - "You have been kicked from %(roomName)s by %(userName)s.": "Vous avez été exclu de %(roomName)s par %(userName)s.", + "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s vous a expulsé de %(roomName)s.", "You may wish to login with a different account, or add this email to this account.": "Vous souhaiteriez peut-être vous identifier avec un autre compte, ou ajouter cette e-mail à votre compte.", "Your home server does not support device management.": "Votre serveur d'accueil ne prend pas en charge la gestion d'appareils.", "(~%(count)s results)": { @@ -648,7 +648,7 @@ "Define the power level of a user": "Définir le rang d'un utilisateur", "Edit": "Modifier", "Enable automatic language detection for syntax highlighting": "Activer la détection automatique de la langue pour la correction orthographique", - "Hide join/leave messages (invites/kicks/bans unaffected)": "Masquer les messages d'arrivée/départ (n'affecte pas les invitations/exclusions/bannissements)", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Masquer les messages d'arrivée/départ (n'affecte pas les invitations/expulsions/bannissements)", "Revoke widget access": "Révoquer les accès du widget", "Sets the room topic": "Défini le sujet du salon", "To get started, please pick a username!": "Pour commencer, choisissez un nom d'utilisateur !", @@ -733,7 +733,7 @@ "Guests can join": "Les invités peuvent rejoindre le salon", "To invite users into the room, you must be a": "Pour inviter des utilisateurs dans le salon, vous devez être un(e)", "To configure the room, you must be a": "Pour configurer le salon, vous devez être un(e)", - "To kick users, you must be a": "Pour exclure des utilisateurs, vous devez être un(e)", + "To kick users, you must be a": "Pour expulser des utilisateurs, vous devez être", "To ban users, you must be a": "Pour bannir des utilisateurs, vous devez être un(e)", "To remove other users' messages, you must be a": "Pour supprimer les messages d'autres utilisateurs, vous devez être un(e)", "To send events of type <eventType/>, you must be a": "Pour envoyer des évènements du type <eventType/>, vous devez être un", @@ -743,14 +743,14 @@ "%(senderName)s sent a video": "%(senderName)s a envoyé une vidéo", "%(senderName)s uploaded a file": "%(senderName)s a transféré un fichier", "Disinvite this user?": "Désinviter l'utilisateur ?", - "Kick this user?": "Exclure cet utilisateur ?", + "Kick this user?": "Expulser cet utilisateur ?", "Unban this user?": "Révoquer le bannissement de cet utilisateur ?", "Ban this user?": "Bannir cet utilisateur ?", "Drop here to favourite": "Déposer ici pour mettre en favori", "Drop here to tag direct chat": "Déposer ici pour marquer comme conversation directe", "Drop here to restore": "Déposer ici pour restaurer", "Drop here to demote": "Déposer ici pour rétrograder", - "You have been kicked from this room by %(userName)s.": "Vous avez été exclu de ce salon par %(userName)s.", + "You have been kicked from this room by %(userName)s.": "%(userName)s vous a expulsé de ce salon.", "You have been banned from this room by %(userName)s.": "Vous avez été banni de ce salon par %(userName)s.", "You are trying to access a room.": "Vous essayez d'accéder à un salon.", "Members only (since the point in time of selecting this option)": "Seulement les membres (depuis la sélection de cette option)", @@ -848,12 +848,12 @@ "one": "a vu son bannissement révoqué" }, "were kicked %(count)s times": { - "other": "ont été exclus %(count)s fois", - "one": "ont été exclus" + "other": "ont été expulsés %(count)s fois", + "one": "ont été expulsés" }, "was kicked %(count)s times": { - "other": "a été exclu %(count)s fois", - "one": "a été exclu" + "other": "a été expulsé %(count)s fois", + "one": "a été expulsé" }, "%(severalUsers)schanged their name %(count)s times": { "other": "%(severalUsers)s ont changé de nom %(count)s fois", @@ -1369,6 +1369,122 @@ "Please accept all of the policies": "Veuillez accepter toutes les politiques", "Please review and accept the policies of this homeserver:": "Veuillez lire et accepter les politiques de ce serveur d'accueil :", "Add some now": "En ajouter maintenant", + "Joining room...": "Adhésion au salon…", + "You are an administrator of this community. You will not be able to rejoin without an invite from another administrator.": "Vous êtes administrateur de cette communauté. Vous ne pourrez pas revenir sans une invitation d'un autre administrateur.", + "Open Devtools": "Ouvrir les outils développeur", + "Show developer tools": "Afficher les outils de développeur", + "Pin unread rooms to the top of the room list": "Épingler les salons non lus en haut de la liste des salons", + "Pin rooms I'm mentioned in to the top of the room list": "Épingler les salons où l'on me mentionne en haut de la liste des salons", + "If you would like to create a Matrix account you can <a>register</a> now.": "Si vous souhaitez créer un compte Matrix, vous pouvez <a>vous inscrire</a> maintenant.", + "You are currently using Riot anonymously as a guest.": "Vous utilisez Riot de façon anonyme en tant qu'invité.", + "Please review and accept all of the homeserver's policies": "Veuillez lire et accepter toutes les polices du serveur d'accueil", + "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of Riot to do this": "Pour éviter de perdre l'historique de vos discussions, vous devez exporter vos clés avant de vous déconnecter. Vous devez revenir à une version plus récente de Riot pour pouvoir le faire", + "You've previously used a newer version of Riot on %(host)s. To use this version again with end to end encryption, you will need to sign out and back in again. ": "Vous avez utilisé une version plus récente de Riot sur %(host)s. Pour utiliser à nouveau cette version avec le chiffrement de bout à bout, vous devez vous déconnecter et vous reconnecter. ", + "Incompatible Database": "Base de données incompatible", + "Continue With Encryption Disabled": "Continuer avec le chiffrement désactivé", + "Sign in with single sign-on": "Se connecter avec l'authentification unique", + "Unable to load! Check your network connectivity and try again.": "Chargement impossible ! Vérifiez votre connexion au réseau et réessayez.", + "Backup of encryption keys to server": "Sauvegarde des clés de chiffrement vers le serveur", + "Delete Backup": "Supprimer la sauvegarde", + "Delete your backed up encryption keys from the server? You will no longer be able to use your recovery key to read encrypted message history": "Supprimer vos clés de chiffrement sauvegardées du serveur ? Vous ne pourrez plus utiliser votre clé de récupération pour lire l'historique de vos messages chiffrés", + "Delete backup": "Supprimer la sauvegarde", + "Unable to load key backup status": "Impossible de charger l'état de sauvegarde des clés", + "This device is uploading keys to this backup": "Cet appareil envoie des clés vers cette sauvegarde", + "This device is <b>not</b> uploading keys to this backup": "Cet appareil <b>n'</b>envoie <b>pas</p> de clés vers cette sauvegarde", + "Backup has a <validity>valid</validity> signature from this device": "La sauvegarde a une signature <validity>valide</validity> pour cet appareil", + "Backup has a <validity>valid</validity> signature from <verify>verified</verify> device <device>x</device>": "La sauvegarde a une signature <validity>valide</validity> de l'appareil <verify>vérifié</verify> <device>x</device>", + "Backup has a <validity>valid</validity> signature from <verify>unverified</verify> device <device></device>": "La sauvegarde a une signature <validity>valide</validity> de l'appareil <verify>non vérifié</verify> <device></device>", + "Backup has an <validity>invalid</validity> signature from <verify>verified</verify> device <device></device>": "La sauvegarde a une signature <validity>non valide</validity> de l'appareil <verify>vérifié</verify> <device></device>", + "Backup has an <validity>invalid</validity> signature from <verify>unverified</verify> device <device></device>": "La sauvegarde a une signature <validity>non valide</validity> de l'appareil <verify>non vérifié</verify> <device></device>", + "Backup is not signed by any of your devices": "La sauvegarde n'est signée par aucun de vos appareils", + "Backup version: ": "Version de la sauvegarde : ", + "Algorithm: ": "Algorithme : ", + "Restore backup": "Restaurer la sauvegarde", + "No backup is present": "Il n'y a aucune sauvegarde", + "Start a new backup": "Créer une nouvelle sauvegarde", + "Secure your encrypted message history with a Recovery Passphrase.": "Sécurisez l'historique de vos messages chiffrés avec une phrase de récupération.", + "You'll need it if you log out or lose access to this device.": "Vous en aurez besoin si vous vous déconnectez ou si vous n'avez plus accès à cet appareil.", + "Enter a passphrase...": "Saisissez une phrase de passe…", + "Next": "Suivant", + "If you don't want encrypted message history to be availble on other devices, <button>opt out</button>.": "Si vous ne souhaitez pas que l'historique de vos messages chiffrés soit disponible sur d'autres appareils, <button>refusez</button>.", + "Or, if you don't want to create a Recovery Passphrase, skip this step and <button>download a recovery key</button>.": "Ou si vous ne voulez pas créer une phrase de récupération, sautez cette étape et <button>téléchargez une clé de récupération</button>.", + "That matches!": "Ça correspond !", + "That doesn't match.": "Ça ne correspond pas.", + "Go back to set it again.": "Retournez en arrière pour la redéfinir.", + "Type in your Recovery Passphrase to confirm you remember it. If it helps, add it to your password manager or store it somewhere safe.": "Saisissez votre phrase de récupération pour confirmer que vous vous en souvenez. Si cela peut vous aider, ajoutez-la à votre gestionnaire de mots de passe ou rangez-la dans un endroit sûr.", + "Repeat your passphrase...": "Répétez votre phrase de passe…", + "Make a copy of this Recovery Key and keep it safe.": "Faites une copie de cette clé de récupération et gardez-la en lieu sûr.", + "As a safety net, you can use it to restore your encrypted message history if you forget your Recovery Passphrase.": "Par précaution, vous pouvez l'utiliser pour récupérer l'historique de vos messages chiffrés si vous oubliez votre phrase de récupération.", + "Your Recovery Key": "Votre clé de récupération", + "Copy to clipboard": "Copier dans le presse-papier", + "Download": "Télécharger", + "I've made a copy": "J'ai fait une copie", + "Your Recovery Key has been <b>copied to your clipboard</b>, paste it to:": "Votre clé de récupération a été <b>copiée dans votre presse-papier</b>, collez-la dans :", + "Your Recovery Key is in your <b>Downloads</b> folder.": "Votre clé de récupération est dans votre dossier de <b>téléchargements</b>.", + "<b>Print it</b> and store it somewhere safe": "<b>Imprimez-la</b> et conservez-la dans un endroit sûr", + "<b>Save it</b> on a USB key or backup drive": "<b>Sauvegardez-la</b> sur une clé USB ou un disque de sauvegarde", + "<b>Copy it</b> to your personal cloud storage": "<b>Copiez-la</b> dans votre espace de stockage personnel en ligne", + "Got it": "Compris", + "Backup created": "Sauvegarde créée", + "Your encryption keys are now being backed up to your Homeserver.": "Vos clés de chiffrement sont en train d'être sauvegardées sur votre serveur d'accueil.", + "Without setting up Secure Message Recovery, you won't be able to restore your encrypted message history if you log out or use another device.": "Si vous ne configurez pas la récupération de messages sécurisée, vous ne pourrez pas récupérer l'historique de vos messages chiffrés si vous vous déconnectez ou si vous utilisez un autre appareil.", + "Set up Secure Message Recovery": "Configurer la récupération de messages sécurisée", + "Create a Recovery Passphrase": "Créer une phrase de récupération", + "Confirm Recovery Passphrase": "Confirmer la phrase de récupération", + "Recovery Key": "Clé de récupération", + "Keep it safe": "Conservez-la en lieu sûr", + "Backing up...": "Sauvegarde en cours…", + "Create Key Backup": "Créer la sauvegarde des clés", + "Unable to create key backup": "Impossible de créer la sauvegarde des clés", + "Retry": "Réessayer", + "Unable to load backup status": "Impossible de charger l'état de la sauvegarde", + "Unable to restore backup": "Impossible de restaurer la sauvegarde", + "No backup found!": "Aucune sauvegarde n'a été trouvée !", + "Backup Restored": "Sauvegarde restaurée", + "Failed to decrypt %(failedCount)s sessions!": "Le déchiffrement de %(failedCount)s sessions a échoué !", + "Restored %(sessionCount)s session keys": "%(sessionCount)s clés de session ont été restaurées", + "Enter Recovery Passphrase": "Saisissez la phrase de récupération", + "Access your secure message history and set up secure messaging by entering your recovery passphrase.": "Accédez à l'historique sécurisé de vos messages et configurez la messagerie sécurisée en renseignant votre phrase de récupération.", + "If you've forgotten your recovery passphrase you can <button1>use your recovery key</button1> or <button2>set up new recovery options</button2>": "Si vous avez oublié votre phrase de récupération vous pouvez <button1>utiliser votre clé de récupération</button1> ou <button2>configurer de nouvelles options de récupération</button2>", + "Enter Recovery Key": "Saisissez la clé de récupération", + "This looks like a valid recovery key!": "Cela ressemble à une clé de récupération valide !", + "Not a valid recovery key": "Ce n'est pas une clé de récupération valide", + "Access your secure message history and set up secure messaging by entering your recovery key.": "Accédez à l'historique sécurisé de vos messages et configurez la messagerie sécurisée en renseignant votre clé de récupération.", + "If you've forgotten your recovery passphrase you can <button>set up new recovery options</button>": "Si vous avez oublié votre clé de récupération vous pouvez <button>configurer de nouvelle options de récupération</button>", + "Key Backup": "Sauvegarde de clés", + "Failed to perform homeserver discovery": "Échec lors de la découverte du serveur d'accueil", + "Invalid homeserver discovery response": "Réponse de découverte du serveur d'accueil non valide", + "Cannot find homeserver": "Le serveur d'accueil est introuvable", + "File is too big. Maximum file size is %(fileSize)s": "Le fichier est trop gros. La taille maximum est de %(fileSize)s", + "The following files cannot be uploaded:": "Les fichiers suivants n'ont pas pu être envoyés :", + "Use a few words, avoid common phrases": "Utilisez quelques mots, évitez les phrases courantes", + "No need for symbols, digits, or uppercase letters": "Il n'y a pas besoin de symboles, de chiffres ou de majuscules", + "Avoid repeated words and characters": "Évitez de répéter des mots et des caractères", + "Avoid sequences": "Évitez les séquences", + "Avoid recent years": "Évitez les années récentes", + "Avoid years that are associated with you": "Évitez les années qui ont un rapport avec vous", + "Avoid dates and years that are associated with you": "Évitez les dates et les années qui ont un rapport avec vous", + "Capitalization doesn't help very much": "Les majuscules n'aident pas vraiment", + "All-uppercase is almost as easy to guess as all-lowercase": "Uniquement des majuscules, c'est presque aussi facile à deviner qu'uniquement des minuscules", + "Reversed words aren't much harder to guess": "Les mots inversés ne sont pas beaucoup plus difficiles à deviner", + "Predictable substitutions like '@' instead of 'a' don't help very much": "Les substitutions prévisibles comme « @ » à la place de « a » n'aident pas vraiment", + "Add another word or two. Uncommon words are better.": "Ajoutez un ou deux mots. Les mots rares sont à privilégier.", + "Repeats like \"aaa\" are easy to guess": "Les répétitions comme « aaa » sont faciles à deviner", + "Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"": "Les répétitions comme « abcabcabc » ne sont pas beaucoup plus difficiles à deviner que « abc »", + "Sequences like abc or 6543 are easy to guess": "Les séquences comme abc ou 6543 sont faciles à deviner", + "Recent years are easy to guess": "Les années récentes sont faciles à deviner", + "Dates are often easy to guess": "Les dates sont généralement faciles à deviner", + "This is a top-10 common password": "Cela fait partie des 10 mots de passe les plus répandus", + "This is a top-100 common password": "Cela fait partie des 100 mots de passe les plus répandus", + "This is a very common password": "C'est un mot de passe très répandu", + "This is similar to a commonly used password": "Cela ressemble à un mot de passe répandu", + "A word by itself is easy to guess": "Un mot seul est facile à deviner", + "Names and surnames by themselves are easy to guess": "Les noms et prénoms seuls sont faciles à deviner", + "Common names and surnames are easy to guess": "Les noms et prénoms répandus sont faciles à deviner", + "Use a longer keyboard pattern with more turns": "Utilisez un schéma plus long et avec plus de variations", + "Great! This passphrase looks strong enough.": "Super ! Cette phrase de passe a l'air assez forte.", + "As a safety net, you can use it to restore your encrypted message history.": "En cas de problème, vous pouvez l'utiliser pour récupérer l'historique de vos messages chiffrés.", + "Failed to load group members": "Échec du chargement des membres du groupe", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s dans %(browserName)s sous %(osName)s", "Riot Desktop on %(platformName)s": "Version bureau de Riot sur %(platformName)s", "Riot is not supported on mobile web. Install the app?": "Riot n’est pas disponible en version web mobile. Installer l’application ?", diff --git a/riot/i18n/hu.json b/riot/i18n/hu.json index a608ffd..e6f3554 100644 --- a/riot/i18n/hu.json +++ b/riot/i18n/hu.json @@ -1370,6 +1370,121 @@ "Please review and accept the policies of this homeserver:": "Kérlek nézd át és fogadd el a Matrix szerver felhasználói feltételeit:", "Add some now": "Adj hozzá párat", "Joining room...": "Belépés a szobába..", + "You are an administrator of this community. You will not be able to rejoin without an invite from another administrator.": "Te vagy ennek a közösségnek az adminisztrátora. Egy másik adminisztrátortól kapott meghívó nélkül nem tudsz majd újra csatlakozni.", + "Open Devtools": "Fejlesztői eszközök megnyitása", + "Show developer tools": "Fejlesztői eszközök megjelenítése", + "Pin unread rooms to the top of the room list": "Nem olvasott üzeneteket tartalmazó szobák a szobalista elejére", + "Pin rooms I'm mentioned in to the top of the room list": "Megemlítéseket tartalmazó szobák a szobalista elejére", + "If you would like to create a Matrix account you can <a>register</a> now.": "Ha létre szeretnél hozni egy Matrix fiókot most <a>regisztrálhatsz</a>.", + "You are currently using Riot anonymously as a guest.": "A Riotot ismeretlen vendégként használod.", + "Please review and accept all of the homeserver's policies": "Kérlek nézd át és fogadd el a Matrix szerver felhasználási feltételeit", + "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of Riot to do this": "Hogy a régi üzenetekhez továbbra is hozzáférhess kijelentkezés előtt ki kell mentened a szobák titkosító kulcsait. Ehhez a Riot egy frissebb verzióját kell használnod", + "You've previously used a newer version of Riot on %(host)s. To use this version again with end to end encryption, you will need to sign out and back in again. ": "Előzőleg a Riot egy frissebb verzióját használtad itt: %(host)s. Ki-, és vissza kell jelentkezned, hogy megint ezt a verziót használhasd végponttól végpontig titkosításhoz. ", + "Incompatible Database": "Nem kompatibilis adatbázis", + "Continue With Encryption Disabled": "Folytatás a titkosítás kikapcsolásával", + "Sign in with single sign-on": "Bejelentkezés „egyszeri bejelentkezéssel”", + "Unable to load! Check your network connectivity and try again.": "A betöltés sikertelen! Ellenőrizd a hálózati kapcsolatot és próbáld újra.", + "Backup of encryption keys to server": "Titkosítási kulcsok mentése a szerverre", + "Delete Backup": "Mentés törlése", + "Delete your backed up encryption keys from the server? You will no longer be able to use your recovery key to read encrypted message history": "Törlöd az elmentett titkosítási kulcsokat a szerverről? Később nem tudod használni helyreállítási kulcsot a régi titkosított üzenetek elolvasásához", + "Delete backup": "Mentés törlése", + "Unable to load key backup status": "A mentett kulcsok állapotát nem lehet lekérdezni", + "This device is uploading keys to this backup": "Ez az eszköz kulcsokat tölt fel ebbe a mentésbe", + "This device is <b>not</b> uploading keys to this backup": "Ez az eszköz <b>nem</b> tölt fel kulcsokat ebbe a mentésbe", + "Backup has a <validity>valid</validity> signature from this device": "A mentés <validity>érvényes</validity> aláírást tartalmaz az eszközről", + "Backup has a <validity>valid</validity> signature from <verify>verified</verify> device <device>x</device>": "A mentés <validity>érvényes</validity> aláírást tartalmaz erről az <verify>ellenőrzött</verify> eszközről: <device>x</device>", + "Backup has a <validity>valid</validity> signature from <verify>unverified</verify> device <device></device>": "A mentés <validity>érvényes</validity> aláírást tartalmaz erről az <verify>ellenőrizetlen</verify> eszközről: <device></device>", + "Backup has an <validity>invalid</validity> signature from <verify>verified</verify> device <device></device>": "A mentés <validity>érvénytelen</validity> aláírást tartalmaz erről az <verify>ellenőrzött</verify> eszközről: <device></device>", + "Backup has an <validity>invalid</validity> signature from <verify>unverified</verify> device <device></device>": "A mentés <validity>érvénytelen</validity> aláírást tartalmaz erről az <verify>ellenőrizetlen</verify> eszközről: <device></device>", + "Backup is not signed by any of your devices": "A mentés nincs aláírva egyetlen eszközöd által sem", + "Backup version: ": "Mentés verzió: ", + "Algorithm: ": "Algoritmus: ", + "Restore backup": "Mentés visszaállítása", + "No backup is present": "Mentés nem található", + "Start a new backup": "Új mentés indítása", + "Secure your encrypted message history with a Recovery Passphrase.": "Helyezd biztonságba a titkosított üzenetek olvasásának a lehetőségét a Helyreállítási jelmondattal.", + "You'll need it if you log out or lose access to this device.": "Szükséged lesz rá ha kijelentkezel vagy nem férsz többé hozzá az eszközödhöz.", + "Enter a passphrase...": "Add meg a jelmondatot...", + "Next": "Következő", + "If you don't want encrypted message history to be availble on other devices, <button>opt out</button>.": "Ha nincs szükséged a régi titkosított üzenetekre más eszközön, <button>utasítsd el</button>.", + "Or, if you don't want to create a Recovery Passphrase, skip this step and <button>download a recovery key</button>.": "Vagy, ha nem szeretnél Helyreállítási jelmondatot megadni, hagyd ki ezt a lépést és <button>töltsd le a helyreállítási kulcsot</button>.", + "That matches!": "Egyeznek!", + "That doesn't match.": "Nem egyeznek.", + "Go back to set it again.": "Lépj vissza és állítsd be újra.", + "Type in your Recovery Passphrase to confirm you remember it. If it helps, add it to your password manager or store it somewhere safe.": "Add meg a Helyreállítási jelmondatot, hogy bizonyítsd, hogy emlékszel rá. Ha az segít írd be a jelszó menedzseredbe vagy tárold más biztonságos helyen.", + "Repeat your passphrase...": "Ismételd meg a jelmondatot...", + "Make a copy of this Recovery Key and keep it safe.": "Készíts másolatot a Helyreállítási kulcsból és tárold biztonságos helyen.", + "As a safety net, you can use it to restore your encrypted message history if you forget your Recovery Passphrase.": "Mint egy biztonsági háló, ha elfelejted a Helyreállítási jelmondatot felhasználhatod, hogy hozzáférj a régi titkosított üzeneteidhez.", + "Your Recovery Key": "A Helyreállítási kulcsod", + "Copy to clipboard": "Másolás a vágólapra", + "Download": "Letölt", + "I've made a copy": "Készítettem másolatot", + "Your Recovery Key has been <b>copied to your clipboard</b>, paste it to:": "A Helyreállítási kulcsod a <b>vágólapra lett másolva</b>, beillesztés ide:", + "Your Recovery Key is in your <b>Downloads</b> folder.": "A Helyreállítási kulcs a <b>Letöltések</b> mappádban van.", + "<b>Print it</b> and store it somewhere safe": "<b>Nyomtad ki</b> és tárold biztonságos helyen", + "<b>Save it</b> on a USB key or backup drive": "<b>Mentsd el</b> egy Pendrive-ra vagy a biztonsági mentésekhez", + "<b>Copy it</b> to your personal cloud storage": "<b>Másold fel</b> a személyes felhődbe", + "Got it": "Értem", + "Backup created": "Mentés elkészült", + "Your encryption keys are now being backed up to your Homeserver.": "A titkosítási kulcsaid a Matrix szervereden vannak elmentve.", + "Without setting up Secure Message Recovery, you won't be able to restore your encrypted message history if you log out or use another device.": "A Biztonságos Üzenet Visszaállítás beállítása nélkül ha kijelentkezel vagy másik eszközt használsz, akkor nem tudod visszaállítani a régi titkosított üzeneteidet.", + "Set up Secure Message Recovery": "Biztonságos Üzenet Visszaállítás beállítása", + "Create a Recovery Passphrase": "Helyreállítási jelmondat megadása", + "Confirm Recovery Passphrase": "Helyreállítási jelmondat megerősítése", + "Recovery Key": "Helyreállítási kulcs", + "Keep it safe": "Tartsd biztonságban", + "Backing up...": "Mentés...", + "Create Key Backup": "Kulcs mentés készítése", + "Unable to create key backup": "Kulcs mentés sikertelen", + "Retry": "Újra", + "Unable to load backup status": "A mentés állapotát nem lehet lekérdezni", + "Unable to restore backup": "A mentést nem lehet visszaállítani", + "No backup found!": "Mentés nem található!", + "Backup Restored": "Mentés visszaállítva", + "Failed to decrypt %(failedCount)s sessions!": "%(failedCount)s kapcsolatot nem lehet visszafejteni!", + "Restored %(sessionCount)s session keys": "%(sessionCount)s kapcsolati kulcsok visszaállítva", + "Enter Recovery Passphrase": "Add meg a Helyreállítási jelmondatot", + "Access your secure message history and set up secure messaging by entering your recovery passphrase.": "A helyreállítási jelmondattal hozzáférsz a régi titkosított üzeneteidhez és beállíthatod a biztonságos üzenetküldést.", + "If you've forgotten your recovery passphrase you can <button1>use your recovery key</button1> or <button2>set up new recovery options</button2>": "Ha elfelejtetted a helyreállítási jelmondatodat használhatod a <button1>helyreállítási kulcsodat</button1> vagy <button2>új helyreállítási paramétereket állíthatsz be</button2>", + "Enter Recovery Key": "Add meg a Helyreállítási kulcsot", + "This looks like a valid recovery key!": "Ez érvényes helyreállítási kulcsnak tűnik!", + "Not a valid recovery key": "Nem helyreállítási kulcs", + "Access your secure message history and set up secure messaging by entering your recovery key.": "A helyreállítási kulcs megadásával hozzáférhetsz a régi biztonságos üzeneteidhez és beállíthatod a biztonságos üzenetküldést.", + "If you've forgotten your recovery passphrase you can <button>set up new recovery options</button>": "Ha elfelejtetted a helyreállítási jelmondatot <button>beállíthatsz új helyreállítási paramétereket</button>", + "Key Backup": "Kulcs mentés", + "Failed to perform homeserver discovery": "A Matrix szerver felderítése sikertelen", + "Invalid homeserver discovery response": "A Matrix szerver felderítésére kapott válasz érvénytelen", + "Cannot find homeserver": "Matrix szerver nem található", + "File is too big. Maximum file size is %(fileSize)s": "A fájl túl nagy. A maximális fájl méret: %(fileSize)s", + "The following files cannot be uploaded:": "Az alábbi fájlokat nem lehetett feltölteni:", + "Use a few words, avoid common phrases": "Néhány szót használj és kerüld el a szokásos szövegeket", + "No need for symbols, digits, or uppercase letters": "Nincs szükség szimbólumokra, számokra vagy nagy betűkre", + "Use a longer keyboard pattern with more turns": "Használj hosszabb billentyűzet mintát több kanyarral", + "Avoid repeated words and characters": "Kerüld a szó-, vagy betűismétlést", + "Avoid sequences": "Kerüld a sorozatokat", + "Avoid recent years": "Kerüld a közeli éveket", + "Avoid years that are associated with you": "Kerüld azokat az éveket amik összefüggésbe hozhatók veled", + "Avoid dates and years that are associated with you": "Kerüld a dátumokat és évszámokat amik összefüggésbe hozhatók veled", + "Capitalization doesn't help very much": "A nagybetűk nem igazán segítenek", + "All-uppercase is almost as easy to guess as all-lowercase": "A csupa nagybetűset majdnem olyan könnyű kitalálni mint a csupa kisbetűset", + "Reversed words aren't much harder to guess": "A megfordított betűrendet sem sokkal nehezebb kitalálni", + "Predictable substitutions like '@' instead of 'a' don't help very much": "Megjósolható helyettesítések mint az „a” helyett a „@” nem sokat segítenek", + "Add another word or two. Uncommon words are better.": "Adj hozzá még egy-két szót. A ritkán használt szavak jobbak.", + "Repeats like \"aaa\" are easy to guess": "Ismétlések mint az „aaa” könnyen kitalálhatók", + "Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"": "Az „abcabcabc” sorozatot csak kicsivel nehezebb kitalálni mint az „abc”-t", + "Sequences like abc or 6543 are easy to guess": "Az olyan mint az abc vagy 6543 sorokat könnyű kitalálni", + "Recent years are easy to guess": "A közelmúlt évszámait könnyű kitalálni", + "Dates are often easy to guess": "Általában a dátumokat könnyű kitalálni", + "This is a top-10 common password": "Ez benne van a 10 legelterjedtebb jelszó listájában", + "This is a top-100 common password": "Ez benne van a 100 legelterjedtebb jelszó listájában", + "This is a very common password": "Ez egy nagyon gyakori jelszó", + "This is similar to a commonly used password": "Ez nagyon hasonlít egy gyakori jelszóhoz", + "A word by itself is easy to guess": "Egy szót magában könnyű kitalálni", + "Names and surnames by themselves are easy to guess": "Neveket egymagukban könnyű kitalálni", + "Common names and surnames are easy to guess": "Elterjedt neveket könnyű kitalálni", + "Great! This passphrase looks strong enough.": "Szuper! Ez a jelmondat elég erősnek látszik.", + "As a safety net, you can use it to restore your encrypted message history.": "Használhatod egy biztonsági hálóként a titkosított üzenetek visszaállításához.", + "Failed to load group members": "A közösség tagságokat nem sikerült betölteni", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s alkalmazás %(browserName)s böngészőn %(osName)s rendszeren", "Riot Desktop on %(platformName)s": "Riot Desktop itt: %(platformName)s", "Riot is not supported on mobile web. Install the app?": "A mobilböngésző nem támogatja a Riotot. Telepíted inkább az alkalmazást?", diff --git a/riot/i18n/it.json b/riot/i18n/it.json index f5671a3..072a06f 100644 --- a/riot/i18n/it.json +++ b/riot/i18n/it.json @@ -1365,6 +1365,13 @@ "Clear cache and resync": "Svuota cache e risincronizza", "Please accept all of the policies": "Si prega di accettare tutte le condizioni", "Please review and accept the policies of this homeserver:": "Consulta ed accetta le condizioni di questo homeserver:", + "Pin unread rooms to the top of the room list": "Fissa le stanze non lette in cima all'elenco stanze", + "Pin rooms I'm mentioned in to the top of the room list": "Fissa le stanze dove sono menzionato in cima all'elenco stanze", + "Joining room...": "Ingresso nella stanza...", + "Add some now": "Aggiungine ora", + "You are an administrator of this community. You will not be able to rejoin without an invite from another administrator.": "Sei un amministratore di questa comunità. Non potrai rientrare senza un invito da parte di un altro amministratore.", + "Open Devtools": "Apri Devtools", + "Show developer tools": "Mostra strumenti sviluppatore", "Riot Desktop on %(platformName)s": "Riot Desktop su %(platformName)s", "Riot is not supported on mobile web. Install the app?": "Riot non è supportato sul web mobile. Installare l'applicazione?", "Unknown device": "Dispositivo sconosciuto", diff --git a/riot/i18n/ja.json b/riot/i18n/ja.json new file mode 100644 index 0000000..4928623 --- /dev/null +++ b/riot/i18n/ja.json @@ -0,0 +1,1387 @@ +{ + "Anyone": "誰でも", + "Anyone who knows the room's link, apart from guests": "誰でも部屋に参加できる (ゲストユーザは不可)", + "Anyone who knows the room's link, including guests": "誰でも部屋に参加できる (ゲストユーザも可能)", + "Autoplay GIFs and videos": "GIFアニメーションや動画を自動再生する", + "Change Password": "パスワード変更", + "Close": "閉じる", + "Create Room": "部屋を作成", + "Current password": "現在のパスワード", + "Delete": "削除", + "Direct chats": "対話", + "Display name": "表示名", + "Enable encryption": "暗号会話開始", + "Encryption is enabled in this room": "この部屋の発言は暗号化されています", + "Favourite": "お気に入り", + "Favourites": "お気に入り", + "Hide read receipts": "既読を表示しない", + "Invited": "招待中", + "%(displayName)s is typing": "%(displayName)s 文字入力中", + "%(targetName)s joined the room.": "%(targetName)s 部屋に参加しました。", + "Low priority": "低優先度", + "Mute": "通知しない", + "New password": "新しいパスワード", + "Notifications": "通知", + "Cancel": "取消", + "Create new room": "新しい部屋を作成", + "Room directory": "公開部屋一覧", + "Search": "検索", + "Settings": "設定", + "Start chat": "対話開始", + "New Password": "新しいパスワード", + "Failed to change password. Is your password correct?": "パスワード変更に失敗しました。パスワードは正しいですか?", + "Only people who have been invited": "この部屋に招待された人のみ参加可能", + "Hide removed messages": "削除された発言の印を表示しない", + "Always show message timestamps": "発言時刻を常に表示", + "%(count)s new messages": { + "one": "新しい発言 %(count)s", + "other": "新しい発言 %(count)s" + }, + "Don't send typing notifications": "文字入力中であることを公表しない", + "Filter room members": "部屋メンバーの絞り込み", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "発言時刻を12時間形式で表示 (例 2:30PM)", + "Upload avatar": "アイコン画像を変更", + "Upload file": "添付ファイル送信", + "Use compact timeline layout": "会話表示の行間を狭くする", + "(warning: cannot be disabled again!)": "(警告: 再び元に戻すことは出来ません!)", + "Start Chat": "対話へ招待", + "Riot collects anonymous analytics to allow us to improve the application.": "Riotはアプリケーションを改善するために匿名の分析情報を収集しています。", + "Start chatting": "対話開始", + "Start Chatting": "対話開始", + "Add": "追加", + "No Microphones detected": "マイクが見つかりません", + "No Webcams detected": "カメラが見つかりません", + "Microphone": "マイク", + "Camera": "カメラ", + "Are you sure?": "本当によろしいですか?", + "OK": "OK", + "Operation failed": "操作に失敗しました", + "Custom Server Options": "カスタムサーバのオプション", + "Dismiss": "やめる", + "powered by Matrix": "Matrixによって動作しています", + "Error": "エラー", + "Remove": "取り除く", + "Submit debug logs": "デバッグログを送信する", + "Edit": "編集", + "Continue": "続ける", + "Unpin Message": "メッセージの固定を外す", + "Online": "オンライン", + "unknown error code": "不明なエラーコード", + "Failed to forget room %(errCode)s": "部屋の履歴を消すのに失敗しました %(errCode)s", + "Register": "登録", + "Rooms": "部屋", + "Add rooms to this community": "このコミュニティに部屋を追加する", + "Unnamed room": "名前のない部屋", + "World readable": "誰でも読むことができます", + "Guests can join": "ゲストが参加できます", + "No rooms to show": "表示する部屋がありません", + "This email address is already in use": "このメールアドレスは既に使われています", + "This phone number is already in use": "この電話番号は既に使われています", + "Failed to verify email address: make sure you clicked the link in the email": "メールアドレスの認証に失敗しました。メール中のリンクをクリックしたか、確認してください", + "The platform you're on": "利用中のプラットフォーム", + "The version of Riot.im": "Riot.imのバージョン", + "Whether or not you're logged in (we don't record your user name)": "ログインしているか否か(私達はあなたのユーザ名を記録しません)", + "Your language of choice": "選択した言語", + "Which officially provided instance you are using, if any": "どの公式に提供されたインスタンスを利用していますか(もしあれば)", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "リッチテキストエディタのリッチテキストモードを利用しているか否か", + "Your homeserver's URL": "あなたのホームサーバのURL", + "Your identity server's URL": "あなたのアイデンティティサーバのURL", + "Analytics": "分析", + "The information being sent to us to help make Riot.im better includes:": "Riot.imをよりよくするために私達に送信される情報は以下を含みます:", + "Thursday": "木曜日", + "Messages in one-to-one chats": "一対一のチャットでのメッセージ", + "A new version of Riot is available.": "新しいバージョンのRiotが利用可能です。", + "All Rooms": "全ての部屋", + "You cannot delete this message. (%(code)s)": "あなたはこの発言を削除できません (%(code)s)", + "Send": "送信", + "All messages": "全ての発言", + "Uploading report": "レポートのアップロード", + "Sunday": "日曜日", + "Direct Chat": "対話", + "Today": "今日", + "Files": "添付ファイル", + "Room not found": "部屋が見つかりません", + "Set Password": "パスワードを設定", + "Sorry, your browser is <b>not</b> able to run Riot.": "申し訳ありません。あなたのブラウザではRiotは<b>動作できません</b>。", + "Monday": "月曜日", + "Messages in group chats": "グループチャットのメッセージ", + "Friday": "金曜日", + "All messages (noisy)": "全ての発言(通知音あり)", + "Yesterday": "昨日", + "Messages sent by bot": "ボットから送信されたメッセージ", + "Low Priority": "低優先度", + "Messages containing my user name": "自身のユーザー名を含むメッセージ", + "Members": "参加者", + "Add an email address above to configure email notifications": "メール通知を設定するためには、メールアドレスを追加してください", + "Collecting logs": "ログの収集", + "No update available.": "更新はありません。", + "An error occurred whilst saving your email notification preferences.": "電子メール通知設定を保存中にエラーが発生しました。", + "Failed to change settings": "設定の変更に失敗しました", + "Mentions only": "呼び掛けられた時のみ", + "Collecting app version information": "アプリのバージョン情報を収集", + "Filter room names": "部屋名の絞り込み", + "Changelog": "変更履歴", + "Invite to this room": "この部屋へ招待", + "Waiting for response from server": "サーバからの応答を待っています", + "Wednesday": "水曜日", + "Leave": "退室", + "Enable notifications for this account": "このアカウントで通知を行う", + "Failed to update keywords": "キーワードの更新に失敗しました", + "Enable email notifications": "電子メール通知を有効にする", + "Directory": "部屋一覧", + "Download this file": "この添付ファイルをダウンロード", + "Failed to get public room list": "公開部屋一覧の取得に失敗しました", + "Call invitation": "通話への招待", + "Forget": "忘れる", + "Messages containing <span>keywords</span>": "<span>keywords</span>を含むメッセージ", + "Error saving email notification preferences": "電子メール通知設定の保存エラー", + "Tuesday": "火曜日", + "Enter keywords separated by a comma:": "キーワードをコンマで区切って入力:", + "Search…": "検索…", + "Saturday": "土曜日", + "Hide panel": "右欄を非表示", + "Warning": "警告", + "This Room": "この部屋", + "When I'm invited to a room": "部屋に招待された時", + "Keywords": "キーワード", + "Resend": "再送信", + "Can't update user notification settings": "ユーザー通知の設定を更新できません", + "Messages containing my display name": "自身の表示名を含むメッセージ", + "Enable desktop notifications": "デスクトップ画面に通知を行う", + "Fetching third party location failed": "サードパーティの記憶場所の取得に失敗しました", + "Couldn't load home page": "ホームページを読み込めませんでした", + "Send Account Data": "アカウントのデータを送信する", + "Advanced notification settings": "通知の詳細設定", + "Notification targets": "通知先", + "Failed to get protocol list from Home Server": "ホームサーバからのプロトコル一覧の入手に失敗しました", + "You are not receiving desktop notifications": "デスクトップ通知を受け取っていません", + "Update": "アップデート", + "Unable to fetch notification target list": "通知先リストを取得できませんでした", + "Expand panel": "パネルを展開する", + "%(count)s Members": { + "other": "%(count)s 名の参加者", + "one": "%(count)s 名の参加者" + }, + "Uploaded on %(date)s by %(user)s": "%(date)s に %(user)s によりアップロードされました", + "Send Custom Event": "カスタムイベントを送信する", + "All notifications are currently disabled for all targets.": "現在すべての対象についての全通知が無効です。", + "Failed to send logs: ": "ログの送信に失敗しました: ", + "delete the alias.": "エイリアスを削除する。", + "To return to your account in future you need to <u>set a password</u>": "今後アカウントを回復するには、 <u>パスワードを設定</u> する必要があります", + "You cannot delete this image. (%(code)s)": "この画像を消すことはできません。 (%(code)s)", + "Cancel Sending": "送信を取り消す", + "The Home Server may be too old to support third party networks": "ホームサーバがサードパーティネットワークをサポートするには古すぎる可能性があります", + "Remember, you can always set an email address in user settings if you change your mind.": "利用者設定でいつでもメールアドレスを設定できます。", + "Unavailable": "使用できません", + "View Decrypted Source": "復号されたソースを表示する", + "Notes:": "注:", + "Notifications on the following keywords follow rules which can’t be displayed here:": "ルールにより、次のキーワードについての通知はここに表示されません:", + "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Safari</safariLink> と <operaLink>Opera</operaLink> でも機能します。", + "Please set a password!": "パスワードを設定してください!", + "You have successfully set a password!": "パスワードの設定に成功しました!", + "Explore Room State": "部屋の状態を調べる", + "Source URL": "ソースのURL", + "Filter results": "絞り込み結果", + "Noisy": "音量大", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "部屋のエイリアス %(alias)s を削除し、ディレクトリから %(name)s を消去しますか?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "これにより、サインアウト後にあなたのアカウントに戻る、また、他の端末でサインインすることができます。", + "Invite to this community": "このコミュニティに招待する", + "Search for a room": "部屋を検索", + "View Source": "ソースコードを表示する", + "Back": "戻る", + "Remove %(name)s from the directory?": "ディレクトリから %(name)s を消去しますか?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riotは多くの高度なブラウザの機能を使用しています。そのうちのいくつかはご使用のブラウザでは使えないか、実験的な機能です。", + "Event sent!": "イベントが送信されました!", + "Preparing to send logs": "ログを送信する準備をしています", + "Explore Account Data": "アカウントのデータを調べる", + "The server may be unavailable or overloaded": "サーバは使用できないか、オーバーロードされています", + "Reject": "やめる", + "Failed to set Direct Message status of room": "部屋のダイレクトメッセージステータスの設定に失敗しました", + "Remove from Directory": "ディレクトリから消去する", + "Enable them now": "今有効化する", + "Forward Message": "メッセージを転送する", + "Toolbox": "ツールボックス", + "more": "もっと", + "GitHub issue link:": "Githubの問題へのリンク:", + "You must specify an event type!": "イベントの形式を特定してください!", + "(HTTP status %(httpStatus)s)": "(HTTPステータス %(httpStatus)s)", + "State Key": "ステータスキー", + "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "最高のエクスペリエンスのために <chromeLink>Chrome</chromeLink> または <firefoxLink>Firefox</firefoxLink> をインストールしてください。", + "Quote": "引用", + "Send logs": "ログを送信する", + "Downloading update...": "アップデート、ダウンロードしています…", + "You have successfully set a password and an email address!": "パスワードとメールアドレスの設定に成功しました!", + "Failed to send custom event.": "カスタムイベントの送信に失敗しました。", + "What's new?": "新着", + "Notify me for anything else": "他の場合についても通知する", + "Notify for all other messages/rooms": "他のすべてのメッセージ又は部屋について通知する", + "Unable to look up room ID from server": "サーバから部屋IDを検索できません", + "Couldn't find a matching Matrix room": "一致するMatrixの部屋を見つけることができませんでした", + "I understand the risks and wish to continue": "リスクを理解し続ける", + "Logs sent": "ログが送信されました", + "Reply": "返信", + "Show message in desktop notification": "デスクトップ通知にメッセージ内容を表示する", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "デバッグログはあなたのユーザ名、訪問した部屋やグループのIDやエイリアス、他のユーザのユーザ名を含むアプリの使用データを含みます。メッセージは含みません。", + "Unable to join network": "ネットワークに接続できません", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Riot以外のクライアントで設定した可能性があります。Riotで設定することはできませんが、引き続き使用可能です", + "Error encountered (%(errorDetail)s).": "エラーが発生しました (%(errorDetail)s)。", + "Event Type": "イベントの形式", + "What's New": "新着", + "Enable audible notifications in web client": "ウェブクライアントで音による通知を有効化", + "remove %(name)s from the directory.": "ディレクトリから %(name)s を消去する。", + "Riot does not know how to join a room on this network": "Riotはこのネットワークで部屋に参加する方法を知りません", + "You can now return to your account after signing out, and sign in on other devices.": "サインアウト後にあなたの\nアカウントに戻る、また、他の端末でサインインすることができます。", + "Login": "ログイン", + "Pin Message": "メッセージを固定する", + "Thank you!": "ありがとうございます!", + "View Community": "コミュニティを表示する", + "Developer Tools": "開発者ツール", + "Unhide Preview": "プレビューを表示する", + "Event Content": "イベントの内容", + "#example": "#例", + "Collapse panel": "パネルを折りたたむ", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "現在ご使用のブラウザでは、アプリの外見や使い心地が正常でない可能性があります。また、一部または全部の機能がご使用いただけない可能性があります。このままご使用いただけますが、問題が発生した場合は対応しかねます!", + "Checking for an update...": "アップデートを確認しています…", + "There are advanced notifications which are not shown here": "ここに表示されない詳細な通知があります", + "Call": "通話", + "Answer": "応答", + "e.g. <CurrentPageURL>": "凡例: <CurrentPageURL>", + "Your device resolution": "端末の解像度", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "このページに部屋、ユーザー、グループIDなどの識別可能な情報が含まれている場合、そのデータはサーバーに送信される前に削除されます。", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "この部屋には未知の端末があります。確認せずに進むと、誰かがあなたの呼び出しを盗聴する可能性があります。", + "Answer Anyway": "とにかく応答", + "Call Anyway": "とにかく通話", + "Call Timeout": "通話タイムアウト", + "The remote side failed to pick up": "相手が応答しなかった", + "Unable to capture screen": "画面をキャプチャできません", + "Existing Call": "既存の通話", + "You are already in a call.": "すでに通話中です。", + "VoIP is unsupported": "VoIPはサポートされていません", + "You cannot place VoIP calls in this browser.": "このブラウザにはVoIP通話はできません。", + "You cannot place a call with yourself.": "自分で電話をかけることはできません。", + "Could not connect to the integration server": "統合サーバーに接続できません", + "A conference call could not be started because the intgrations server is not available": "統合サーバーが使用できないため、会議通話を開始できませんでした", + "Call in Progress": "発信中", + "A call is currently being placed!": "現在発信中です!", + "A call is already in progress!": "既に発信しています!", + "Permission Required": "権限必要", + "You do not have permission to start a conference call in this room": "この部屋で電話会議を開始する権限がありません", + "The file '%(fileName)s' failed to upload": "'%(fileName)s' ファイルのアップロードに失敗しました", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "'%(fileName)s' ファイルは、このホームサーバーのアップロードのサイズ制限を超えています", + "Upload Failed": "アップロードに失敗しました", + "Sun": "日", + "Mon": "月", + "Tue": "火", + "Wed": "水", + "Thu": "木", + "Fri": "金", + "Sat": "土", + "Jan": "1月", + "Feb": "2月", + "Mar": "3月", + "Apr": "4月", + "May": "5月", + "Jun": "6月", + "Jul": "7月", + "Aug": "8月", + "Sep": "9月", + "Oct": "10月", + "Nov": "11月", + "Dec": "12月", + "PM": "午後", + "AM": "午前", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(monthName)s %(day)s日 %(weekDayName)s曜日 %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(fullYear)s年 %(monthName)s %(day)s日 (%(weekDayName)s)", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(fullYear)s年 %(monthName)s %(day)s日 %(weekDayName)s曜日 %(time)s", + "Who would you like to add to this community?": "このコミュニティに誰を追加しますか?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "警告:あなたがコミュニティに追加する人は誰でも、コミュニティIDを知っている人には公開されます", + "Invite new community members": "新しいコミュニティメンバーを招待する", + "Name or matrix ID": "名前または matrix ID", + "Invite to Community": "コミュニティに招待", + "Which rooms would you like to add to this community?": "このコミュニティに追加したい部屋はどれですか?", + "Show these rooms to non-members on the community page and room list?": "コミュニティページとルームリストのメンバー以外にこれらの部屋を公開しますか?", + "Add rooms to the community": "コミュニティに部屋を追加します", + "Room name or alias": "部屋名またはエイリアス", + "Add to community": "コミュニティに追加", + "Failed to invite the following users to %(groupId)s:": "次のユーザーを %(groupId)s に招待できませんでした:", + "Failed to invite users to community": "ユーザーをコミュニティに招待できませんでした", + "Failed to invite users to %(groupId)s": "ユーザーを %(groupId)s に招待できませんでした", + "Failed to add the following rooms to %(groupId)s:": "次の部屋を %(groupId)s に追加できませんでした:", + "Riot does not have permission to send you notifications - please check your browser settings": "Riotに通知を送信する権限がありません - ブラウザの設定を確認してください", + "Riot was not given permission to send notifications - please try again": "Riotに通知を送信する権限がありませんでした。もう一度お試しください", + "Unable to enable Notifications": "通知を有効にできません", + "This email address was not found": "このメールアドレスが見つかりませんでした", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "あなたのメールアドレスは、このホームサーバー上のマトリックスIDと関連付けられていないようです。", + "Registration Required": "登録が必要です", + "You need to register to do this. Would you like to register now?": "これを行うには登録する必要があります。 今すぐ登録しますか?", + "Default": "既定値", + "Restricted": "制限", + "Moderator": "仲裁者", + "Admin": "管理者", + "Start a chat": "チャットを開始する", + "Who would you like to communicate with?": "誰と通信しますか?", + "Email, name or matrix ID": "メールアドレス、名前、またはマトリックスID", + "Invite new room members": "新しい部屋のメンバーを招待します", + "Who would you like to add to this room?": "誰をこの部屋に追加しますか?", + "Send Invites": "招待状を送る", + "Failed to invite user": "ユーザーを招待できませんでした", + "Failed to invite": "招待できませんでした", + "Failed to invite the following users to the %(roomName)s room:": "次のユーザーを %(roomName)s の部屋に招待できませんでした:", + "You need to be logged in.": "ログインする必要があります。", + "You need to be able to invite users to do that.": "それをするためにユーザーを招待できる必要があります。", + "Unable to create widget.": "ウィジェットを作成できません。", + "Missing roomId.": "roomIdがありません。", + "Failed to send request.": "リクエストの送信に失敗しました。", + "This room is not recognised.": "この部屋は認識されません。", + "Power level must be positive integer.": "権限レベルは正の整数でなければなりません。", + "You are not in this room.": "この部屋のメンバーではありません。", + "You do not have permission to do that in this room.": "あなたはこの部屋でそれを行う許可を持っていません。", + "Missing room_id in request": "リクエストにroom_idがありません", + "Room %(roomId)s not visible": "部屋 %(roomId)s は見えません", + "Missing user_id in request": "リクエストにuser_idがありません", + "Usage": "用法", + "Searches DuckDuckGo for results": "DuckDuckGoを検索します", + "/ddg is not a command": "/ddg はコマンドではありません", + "To use it, just wait for autocomplete results to load and tab through them.": "それを使用するには、結果が完全にロードされるのを待ってから、Tabキーを押してください。", + "Changes your display nickname": "表示されるニックネームを変更", + "Changes colour scheme of current room": "現在の部屋のスキームを変更する", + "Sets the room topic": "部屋のトピックを設定", + "Invites user with given id to current room": "指定されたIDを持つユーザーを現在のルームに招待する", + "Joins room with given alias": "指定された別名で部屋に参加する", + "Leave room": "部屋を出る", + "Unrecognised room alias:": "認識されない部屋の別名:", + "Kicks user with given id": "与えられたIDを持つユーザーを追放する", + "Bans user with given id": "指定されたIDでユーザーをブロックする", + "Unbans user with given id": "指定されたIDでユーザーをブロック解除する", + "Ignores a user, hiding their messages from you": "ユーザーを無視し、自分からのメッセージを隠す", + "Ignored user": "無視されたユーザー", + "You are now ignoring %(userId)s": "%(userId)s を無視しています", + "Stops ignoring a user, showing their messages going forward": "ユーザー無視を止めてメッセージを表示する", + "Unignored user": "無記名ユーザー", + "You are no longer ignoring %(userId)s": "あなたはもはや %(userId)s を無視していません", + "Define the power level of a user": "ユーザーの権限レベルを定義", + "Deops user with given id": "指定されたIDのユーザーを非表示", + "Opens the Developer Tools dialog": "開発者ツールダイアログを開きます", + "Verifies a user, device, and pubkey tuple": "ユーザー、端末、および公開鍵タプルを検証します", + "Unknown (user, device) pair:": "不明な(ユーザー、端末) ペア:", + "Device already verified!": "端末はすでに確認済みです!", + "WARNING: Device already verified, but keys do NOT MATCH!": "警告:端末はすでに検証済みですが、キーは一致しません!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "警告: キー確認が失敗しました! %(userId)s と端末 %(deviceId)s の署名鍵は、提供された鍵 \"%(fingerprint)s\" と一致しない \"%(fprint)s\" です。 通信が傍受されている可能性があります!", + "Verified key": "確認済みのキー", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "指定した署名鍵は、%(userId)s の端末%(deviceId)s から受け取った署名鍵と一致します。端末を検証済みとしてマークしました。", + "Displays action": "アクションを表示", + "Forces the current outbound group session in an encrypted room to be discarded": "暗号化されたルーム内の現在のアウトバウンドグループセッションを強制的に破棄します", + "Unrecognised command:": "認識できないコマンド:", + "Reason": "理由", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s は %(displayName)s の招待を受け入れました。", + "%(targetName)s accepted an invitation.": "%(targetName)s は招待を受け入れました。", + "%(senderName)s requested a VoIP conference.": "%(senderName)s はVoIP会議を要求しました。", + "%(senderName)s invited %(targetName)s.": "%(senderName)s は %(targetName)s を招待しました。", + "%(senderName)s banned %(targetName)s.": "%(senderName)s は %(targetName)s をブロックしました。", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s は、表示名を %(displayName)s に変更しました。", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s は、表示名を %(displayName)s に設定します。", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s は表示名 (%(oldDisplayName)s) を削除しました。", + "%(senderName)s removed their profile picture.": "%(senderName)s はプロフィール画像を削除しました。", + "%(senderName)s changed their profile picture.": "%(senderName)s はプロフィール画像を変更しました。", + "%(senderName)s set a profile picture.": "%(senderName)s はプロフィール画像を設定しました。", + "VoIP conference started.": "VoIP会議が開始されました。", + "VoIP conference finished.": "VoIP会議が終了しました。", + "%(targetName)s rejected the invitation.": "%(targetName)s は招待を拒否しました。", + "%(targetName)s left the room.": "%(targetName)s は部屋を退出しました。", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s は %(targetName)s をブロック解除しました。", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s は %(targetName)s を追放しました。", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s は %(targetName)s の招待を撤回しました。", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s はトピックを \"%(topic)s\" に変更しました。", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s はルーム名を削除しました。", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s はルーム名を %(roomName)s に変更しました。", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s はイメージを送信しました。", + "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.": { + "other": "%(senderName)s はこの部屋のアドレスとして %(addedAddresses)s を追加しました。", + "one": "%(senderName)s はこの部屋のアドレスとして %(addedAddresses)s を追加しました。" + }, + "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.": { + "other": "%(senderName)s はこの部屋のアドレスとして %(removedAddresses)s を削除しました。", + "one": "%(senderName)s はこの部屋のアドレスとして %(removedAddresses)s を削除しました。" + }, + "%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.": "%(senderName)s はこの部屋のアドレスとして %(addedAddresses)s を追加し、%(removedAddresses)s を削除しました。", + "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s は、この部屋の主アドレスを %(address)s に設定しました。", + "%(senderName)s removed the main address for this room.": "%(senderName)s はこの部屋の主アドレスを削除しました。", + "Someone": "誰か", + "(not supported by this browser)": "(このブラウザではサポートされていません)", + "%(senderName)s answered the call.": "%(senderName)s が応答しました。", + "(could not connect media)": "(メディアを接続できませんでした)", + "(no answer)": "(応答なし)", + "(unknown failure: %(reason)s)": "(不明なエラー: %(reason)s)", + "%(senderName)s ended the call.": "%(senderName)s は通話を終了しました。", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s は %(callType)s 電話をかけました。", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s は部屋に加わるよう %(targetDisplayName)s に招待状を送りました。", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s は、部屋のメンバー全員に招待された時点からの部屋履歴を参照できるようにしました。", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s は、部屋のメンバー全員に参加した時点からの部屋履歴を参照できるようにしました。", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s は、部屋のメンバー全員に部屋履歴を参照できるようにしました。", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s は、部屋履歴を誰でも参照できるようにしました。", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s は 見知らぬ (%(visibility)s) に部屋履歴を参照できるようにしました。", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s はエンドツーエンドの暗号化をオンにしました (アルゴリズム %(algorithm)s)。", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s は %(fromPowerLevel)s から %(toPowerLevel)s", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s は %(powerLevelDiffText)s の権限レベルを変更しました。", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s は、その部屋の固定メッセージを変更しました。", + "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s ウィジェットは %(senderName)s によって変更されました", + "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s ウィジェットが %(senderName)s によって追加されました", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s ウィジェットが %(senderName)s によって削除されました", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s と 他 %(count)s 人が入力中です", + "one": "%(names)s ともう1人が入力中です" + }, + "%(names)s and %(lastPerson)s are typing": "%(names)s と %(lastPerson)s が入力しています", + "Failure to create room": "部屋の作成に失敗しました", + "Server may be unavailable, overloaded, or you hit a bug.": "サーバーが使用できない、オーバーロードされている、またはバグが発生した可能性があります。", + "Send anyway": "とにかく送る", + "Unnamed Room": "名前のない部屋", + "This homeserver has hit its Monthly Active User limit.": "このホームサーバーは、月間アクティブユーザー制限を超えています。", + "This homeserver has exceeded one of its resource limits.": "このホームサーバーは、リソース制限の1つを超えています。", + "Please <a>contact your service administrator</a> to continue using the service.": "サービスを引き続き使用するには、<a>サービス管理者にお問い合わせ</a>ください。", + "Unable to connect to Homeserver. Retrying...": "ホームサーバーに接続できません。 再試行中...", + "Your browser does not support the required cryptography extensions": "お使いのブラウザは、必要な暗号化拡張機能をサポートしていません", + "Not a valid Riot keyfile": "有効なRiotキーファイルではありません", + "Authentication check failed: incorrect password?": "認証チェックに失敗しました: パスワードの間違い?", + "Sorry, your homeserver is too old to participate in this room.": "申し訳ありませんが、あなたのホームサーバーはこの部屋に参加するには古すぎます。", + "Please contact your homeserver administrator.": "ホームサーバー管理者に連絡してください。", + "Failed to join room": "部屋に参加できませんでした", + "Message Pinning": "メッセージ留め", + "Increase performance by only loading room members on first view": "最初のビューでは部屋のメンバーを読み込むだけにしてパフォーマンスを向上させる", + "Disable Emoji suggestions while typing": "入力中に絵文字の候補を無効にする", + "Hide join/leave messages (invites/kicks/bans unaffected)": "参加/退出メッセージを非表示にする (招待/追放/ブロックは影響を受けない)", + "Hide avatar changes": "アバター変更を隠す", + "Hide display name changes": "表示名の変更を表示しない", + "Always show encryption icons": "常に暗号化アイコンを表示する", + "Enable automatic language detection for syntax highlighting": "構文強調表示の自動言語検出を有効にする", + "Hide avatars in user and room mentions": "ユーザーや部屋でアバターを非表示にする", + "Disable big emoji in chat": "チャットで大きな絵文字を無効にする", + "Mirror local video feed": "ローカルビデオ映像送信", + "Disable Community Filter Panel": "コミュニティフィルタパネルを無効にする", + "Disable Peer-to-Peer for 1:1 calls": "1対1通話でピアツーピアを無効にする", + "Send analytics data": "分析データを送信する", + "Never send encrypted messages to unverified devices from this device": "この端末から未認証の端末に暗号化されたメッセージを送信しない", + "Never send encrypted messages to unverified devices in this room from this device": "この端末からこの部屋の未認証の端末に暗号化されたメッセージを送信しないでください", + "Enable inline URL previews by default": "デフォルトでインラインURLプレビューを有効にする", + "Enable URL previews for this room (only affects you)": "この部屋のURLプレビューを有効にする (あなたにのみ影響する)", + "Enable URL previews by default for participants in this room": "この部屋の参加者のためにデフォルトでURLプレビューを有効にする", + "Room Colour": "部屋の色", + "Enable widget screenshots on supported widgets": "サポートされているウィジェットでウィジェットのスクリーンショットを有効にする", + "Show empty room list headings": "空の部屋リスト見出しを表示する", + "Active call (%(roomName)s)": "アクティブな通話 (%(roomName)s)", + "unknown caller": "不明な発信者", + "Incoming voice call from %(name)s": "%(name)s からの着信音声コール", + "Incoming video call from %(name)s": "%(name)s からの着信ビデオコール", + "Incoming call from %(name)s": "%(name)s からの着信コール", + "Decline": "辞退", + "Accept": "受諾", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "テキストメッセージが +%(msisdn)s に送信されました。 含まれている確認コードを入力してください", + "Incorrect verification code": "認証コードの誤りです", + "Enter Code": "コードを入力する", + "Submit": "提出", + "Phone": "電話", + "Add phone number": "電話番号を追加", + "Failed to upload profile picture!": "プロフィール写真をアップロードできませんでした!", + "Upload new:": "新しいアップロード:", + "No display name": "表示名なし", + "New passwords don't match": "新しいパスワードが一致しません", + "Passwords can't be empty": "パスワードを空にすることはできません", + "Warning!": "警告!", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "パスワードを変更すると、すべての端末のエンドツーエンドの暗号化キーがリセットされ、暗号化されたチャット履歴は読み取れなくなります (最初にルームキーをエクスポートしてから再インポートする場合を除く)。 将来これは改善されるでしょう。", + "Export E2E room keys": "E2Eルームキーをエクスポートする", + "Do you want to set an email address?": "メールアドレスを設定しますか?", + "Password": "パスワード", + "Confirm password": "確認のパスワード", + "Your home server does not support device management.": "ホームサーバーは端末管理をサポートしていません。", + "Unable to load device list": "端末リストを読み込めません", + "Authentication": "認証", + "Delete %(count)s devices": { + "other": "%(count)s 件の端末を削除する", + "one": "端末を削除する" + }, + "Device ID": "端末ID", + "Device Name": "端末名", + "Last seen": "最後のシーン", + "Select devices": "端末の選択", + "Failed to set display name": "表示名の設定に失敗しました", + "Disable Notifications": "通知を無効にする", + "Enable Notifications": "通知を有効にする", + "Off": "オフ", + "On": "オン", + "Cannot add any more widgets": "ウィジェットを追加できません", + "The maximum permitted number of widgets have already been added to this room.": "この部屋にウィジェットの最大許容数が既に追加されています。", + "Add a widget": "ウィジェットを追加する", + "Drop File Here": "ここにファイルをドロップする", + "Drop file here to upload": "アップロードするファイルをここにドロップする", + " (unsupported)": " (サポートされていない)", + "Join as <voiceText>voice</voiceText> or <videoText>video</videoText>.": "<voiceText>音声</voiceText>または<videoText>ビデオ</videoText>として参加してください。", + "Ongoing conference call%(supportedText)s.": "進行中の会議通話 %(supportedText)s", + "This event could not be displayed": "このイベントは表示できませんでした", + "%(senderName)s sent an image": "%(senderName)s が画像を送信しました", + "%(senderName)s sent a video": "%(senderName)s が動画を送信しました", + "%(senderName)s uploaded a file": "%(senderName)s がファイルをアップロードしました", + "Options": "オプション", + "Your key share request has been sent - please check your other devices for key share requests.": "共有キーリクエストが送信されました - 共有キーリクエスト用の他の端末を確認してください。", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "共有キーリクエストは、他の端末に自動的に送信されます。 他の端末での共有キーリクエストを拒否または却下した場合は、ここをクリックしてこのセッションのキーを再度要求してください。", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "他の端末にこのメッセージのキーがない場合、それらの端末を復号化することはできません。", + "Key request sent.": "キーリクエストが送信されました。", + "<requestLink>Re-request encryption keys</requestLink> from your other devices.": "他の端末から<requestLink>暗号化キーを再リクエスト</ requestLink>します。", + "Undecryptable": "解読不能", + "Encrypting": "暗号化", + "Encrypted, not sent": "暗号化され、送信されません", + "Encrypted by a verified device": "検証された端末によって暗号化されました", + "Encrypted by an unverified device": "未検証の端末によって暗号化されました", + "Unencrypted message": "暗号化されていないメッセージ", + "Please select the destination room for this message": "このメッセージを送り先部屋を選択してください", + "Blacklisted": "ブラックリストに載せた", + "Verified": "検証済み", + "Unverified": "未検証", + "device id: ": "端末id: ", + "Disinvite": "招待拒否", + "Kick": "追放する", + "Disinvite this user?": "このユーザーを招待拒否しますか?", + "Kick this user?": "このユーザーを追放しますか?", + "Failed to kick": "追放できませんでした", + "e.g. %(exampleValue)s": "例えば %(exampleValue)s", + "Every page you use in the app": "アプリで使用するすべてのページ", + "Your User Agent": "ユーザーエージェント", + "Call Failed": "呼び出しに失敗しました", + "Review Devices": "端末を確認する", + "Automatically replace plain text Emoji": "自動的にプレーンテキスト絵文字を置き換える", + "Pin unread rooms to the top of the room list": "未読の部屋を部屋リストの上部にピン止めする", + "Pin rooms I'm mentioned in to the top of the room list": "ルームリストの上部に記載された部屋をピン止めする", + "Demote yourself?": "自身を降格しますか?", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "自分自身を降格させるときにこの変更を元に戻すことはできません。あなたが部屋の最後の特権ユーザーである場合、特権を回復することは不可能です。", + "Demote": "降格", + "Failed to mute user": "ユーザーのミュートに失敗しました", + "Failed to toggle moderator status": "モデレータステータスを切り替えることができませんでした", + "Failed to change power level": "権限レベルの変更に失敗しました", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "この変更を元に戻すことはできません。そのユーザーが自分と同じ権限レベルを持つように促します。", + "No devices with registered encryption keys": "登録された暗号化キーを持つ端末はありません", + "Devices": "端末", + "Ignore": "無視", + "Jump to read receipt": "既読へジャンプ", + "Invite": "招待", + "Share Link to User": "ユーザーへのリンクを共有する", + "User Options": "ユーザーオプション", + "Unmute": "ミュート解除", + "Revoke Moderator": "モデレーターを取り消す", + "Make Moderator": "モデレーターにする", + "Admin Tools": "管理者ツール", + "Level:": "レベル:", + "and %(count)s others...": { + "other": "そして、他 %(count)s ...", + "one": "そして、もう1つ..." + }, + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (パワー %(powerLevelNumber)s)", + "deleted": "deleted", + "Attachment": "付属品", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "現時点ではファイルで返信することはできませんので、返信なしに送信されます。", + "Upload Files": "ファイルをアップロードする", + "Are you sure you want to upload the following files?": "次のファイルをアップロードしますか?", + "Encrypted room": "暗号化された部屋", + "Unencrypted room": "暗号化されていない部屋", + "Hangup": "電話を切る", + "Voice call": "音声通話", + "Video call": "ビデオ通話", + "Show Text Formatting Toolbar": "テキストの書式設定ツールバーを表示する", + "Send an encrypted reply…": "暗号化された返信を送信する…", + "Send a reply (unencrypted)…": "(暗号化されていない) 返信を送信する…", + "Send an encrypted message…": "暗号化されたメッセージを送信する…", + "Send a message (unencrypted)…": "(暗号化されていない) メッセージを送信する…", + "This room has been replaced and is no longer active.": "この部屋は交換されており、もうアクティブではありません。", + "The conversation continues here.": "会話はここで続けられます。", + "You do not have permission to post to this room": "この部屋に投稿する権限がありません", + "Turn Markdown off": "マークダウンをオフにする", + "Turn Markdown on": "マークダウンをオンにする", + "Hide Text Formatting Toolbar": "テキストの書式設定ツールバーを隠す", + "Server error": "サーバーエラー", + "Server unavailable, overloaded, or something else went wrong.": "サーバーが使用できない、オーバーロードされている、または何かが間違っていました。", + "Command error": "コマンドエラー", + "Unable to reply": "返信できません", + "At this time it is not possible to reply with an emote.": "現時点では、エモートで返信することはできません。", + "Markdown is disabled": "マークダウンは無効です", + "Markdown is enabled": "マークダウンは有効です", + "Jump to message": "メッセージにジャンプ", + "No pinned messages.": "固定メッセージはありません。", + "Loading...": "読み込み中...", + "Pinned Messages": "固定メッセージ", + "%(duration)ss": "%(duration)s 秒", + "%(duration)sm": "%(duration)s 分", + "%(duration)sh": "%(duration)s 時", + "%(duration)sd": "%(duration)s 日", + "Online for %(duration)s": "オンライン時間 %(duration)s", + "Idle for %(duration)s": "アイドル時間 %(duration)s", + "Offline for %(duration)s": "オフライン時間 %(duration)s", + "Unknown for %(duration)s": "不明な時間 %(duration)s", + "Idle": "アイドル", + "Offline": "オフライン", + "Unknown": "未知の", + "Seen by %(userName)s at %(dateTime)s": "%(dateTime)s に %(userName)s が見た", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(dateTime)s に %(displayName)s (%(userName)s) が見た", + "Replying": "返信中", + "Failed to set avatar.": "アバターを設定できませんでした。", + "Save": "保存", + "(~%(count)s results)": { + "other": "(~%(count)s 結果)", + "one": "(~%(count)s 結果)" + }, + "Join Room": "部屋に入る", + "Remove avatar": "アバターを削除", + "Forget room": "部屋を忘れる", + "Share room": "部屋を共有する", + "Show panel": "パネルを表示する", + "Drop here to favourite": "お気に入りはここにドロップする", + "Drop here to tag direct chat": "ダイレクトチャットにタグを付けるためにここにドロップ", + "Drop here to restore": "復元するにはここにドロップ", + "Drop here to demote": "降格するにはここにドロップ", + "Drop here to tag %(section)s": "%(section)s にタグを付けるにはここにドロップ", + "Press <StartChatButton> to start a chat with someone": "<StartChatButton>を押すと、誰かとチャットを開始します", + "You're not in any rooms yet! Press <CreateRoomButton> to make a room or <RoomDirectoryButton> to browse the directory": "あなたはまだどの部屋にもいません! <CreateRoomButton>を押してルームを作成するか、<RoomDirectoryButton>を押してディレクトリをブラウズします", + "Community Invites": "コミュニティへの招待", + "Invites": "招待", + "Unban": "ブロック解除", + "Ban": "ブロックする", + "Unban this user?": "このユーザーをブロック解除しますか?", + "Ban this user?": "このユーザーをブロックしますか?", + "Failed to ban user": "ユーザーをブロックできませんでした", + "System Alerts": "システムアラート", + "Joining room...": "部屋に入る...", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "この招待状が送信されたアドレスがあなたのアカウントに関連付けられているアドレスと一致しているかどうかを確認できません。", + "This invitation was sent to an email address which is not associated with this account:": "この招待状はこのアカウントに関連付けられていないメールアドレスに送信されました:", + "You may wish to login with a different account, or add this email to this account.": "別のアカウントでログインするか、このメールをこのアカウントに追加することができます。", + "You have been invited to join this room by %(inviterName)s": "%(inviterName)s からこの部屋に参加するように招待されました", + "Would you like to <acceptText>accept</acceptText> or <declineText>decline</declineText> this invitation?": "この招待状を<acceptText>受諾</acceptText>または<declineText>辞退</declineText>しますか?", + "Reason: %(reasonText)s": "理由: %(reasonText)s", + "Rejoin": "再参加", + "You have been kicked from %(roomName)s by %(userName)s.": "あなたは %(userName)s により %(roomName)s から追放されました。", + "You have been kicked from this room by %(userName)s.": "あなたは %(userName)s によりこの部屋から追放されました。", + "You have been banned from %(roomName)s by %(userName)s.": "あなたは %(userName)s により %(roomName)s からブロックされました。", + "You have been banned from this room by %(userName)s.": "あなたは %(userName)s によってこの部屋からブロックされました。", + "This room": "この部屋", + "%(roomName)s does not exist.": "%(roomName)s は存在しません。", + "%(roomName)s is not accessible at this time.": "%(roomName)s は現在アクセスできません。", + "You are trying to access %(roomName)s.": "%(roomName)s にアクセスしようとしています。", + "You are trying to access a room.": "ある部屋にアクセスしようとしています。", + "<a>Click here</a> to join the discussion!": "<a>ここをクリック</a>してディスカッションに参加してください!", + "This is a preview of this room. Room interactions have been disabled": "この部屋のプレビューです。 部屋の相互作用が無効になっています", + "To change the room's avatar, you must be a": "部屋のアバターを変更するのに必要な権限", + "To change the room's name, you must be a": "部屋の名前を変更するのに必要な権限", + "To change the room's main address, you must be a": "部屋の主アドレスを変更するのに必要な権限", + "To change the room's history visibility, you must be a": "部屋履歴の可視性を変更するのに必要な権限", + "To change the permissions in the room, you must be a": "部屋のパーミッションを変更するのに必要な権限", + "To change the topic, you must be a": "トピックを変更するのに必要な権限", + "To modify widgets in the room, you must be a": "部屋のウィジェットを変更するのに必要な権限", + "Failed to unban": "ブロック解除に失敗しました", + "Banned by %(displayName)s": "%(displayName)s によってブロックされました", + "Privacy warning": "プライバシーに関する警告", + "Changes to who can read history will only apply to future messages in this room": "履歴を読むことができる人への変更は、この部屋の将来のメッセージにのみ適用されます", + "The visibility of existing history will be unchanged": "既存の履歴の可視性は変更されません", + "End-to-end encryption is in beta and may not be reliable": "エンドツーエンドの暗号化はベータ版であり、信頼性がないかもしれません", + "You should not yet trust it to secure data": "データを保護するためにまだそれを信用すべきではありません", + "Devices will not yet be able to decrypt history from before they joined the room": "端末はまだ部屋に入る前の履歴を復号化することはできません", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "部屋の暗号化が有効になったら、(今のところ) もう一度電源を切ることはできません", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "暗号化されたメッセージは、まだ暗号化を実装していないクライアントでは表示されません", + "Encryption is not enabled in this room": "この部屋では暗号化が有効になっていません", + "The default role for new room members is": "新しい部屋メンバーの既定の役割は次のとおり", + "To send messages, you must be a": "メッセージを送信するのに必要な権限", + "To invite users into the room, you must be a": "ユーザーを会議室に招待するのに必要な権限", + "To configure the room, you must be a": "部屋を設定するのに必要な権限", + "To kick users, you must be a": "ユーザーを追放するのに必要な権限", + "To ban users, you must be a": "ユーザーをブロックするのに必要な権限", + "To remove other users' messages, you must be a": "他のユーザーのメッセージを削除するのに必要な権限", + "To notify everyone in the room, you must be a": "部屋の全員に通知するのに必要な権限", + "No users have specific privileges in this room": "この部屋には特定の権限を持つユーザーはいません", + "%(user)s is a %(userRole)s": "%(user)s は %(userRole)s です", + "Privileged Users": "特権ユーザー", + "Muted Users": "ミュートされたユーザー", + "Banned users": "ブロックされたユーザー", + "This room is not accessible by remote Matrix servers": "この部屋はリモートのMatrixサーバーからアクセスできない", + "Tagged as: ": "タグ付き: ", + "To link to a room it must have <a>an address</a>.": "部屋にリンクするには<a>アドレス</a>が必要です。", + "Guests cannot join this room even if explicitly invited.": "ゲストは、明示的に招待された場合でもこの部屋に参加することはできません。", + "Click here to fix": "修正するにはここをクリック", + "To send events of type <eventType/>, you must be a": "<eventType/>タイプのイベントを送信するのに必要な権限", + "Upgrade room to version %(ver)s": "部屋をバージョン %(ver)s にアップグレードする", + "Who can access this room?": "誰がこの部屋にアクセスできますか?", + "Publish this room to the public in %(domain)s's room directory?": "%(domain)s のルームディレクトリにこの部屋を公開しますか?", + "Who can read history?": "誰が履歴を読むことができますか?", + "Members only (since the point in time of selecting this option)": "メンバーのみ (このオプションを選択した時点以降)", + "Members only (since they were invited)": "メンバーのみ (招待されて以来)", + "Members only (since they joined)": "メンバーのみ (参加して以来)", + "Permissions": "アクセス許可", + "Advanced": "詳細", + "Internal room ID: ": "内部の部屋ID: ", + "Room version number: ": "部屋のバージョン番号: ", + "Add a topic": "トピックを追加", + "There is a known vulnerability affecting this room.": "この部屋には既知の脆弱性が存在します。", + "This room version is vulnerable to malicious modification of room state.": "この部屋のバージョンは、部屋の状態の悪意のある変更に対して脆弱です。", + "Click here to upgrade to the latest room version and ensure room integrity is protected.": "最新の部屋のバージョンにアップグレードし、部屋の完全性が確保されていることを確認するには、ここをクリックしてください。", + "Only room administrators will see this warning": "この警告はルーム管理者のみに表示されます", + "You don't currently have any stickerpacks enabled": "現在、使用可能なステッカーパックはありません", + "Add some now": "今すぐ追加", + "Stickerpack": "ステッカーパック", + "Hide Stickers": "ステッカーを隠す", + "Show Stickers": "ステッカーを表示", + "Scroll to unread messages": "未読メッセージにスクロールする", + "Jump to first unread message.": "最初の未読メッセージにジャンプします。", + "Invalid alias format": "無効なエイリアス形式", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' はエイリアスの有効な形式ではありません", + "Invalid address format": "無効なアドレス形式", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' は有効なアドレス形式ではありません", + "not specified": "指定されていない", + "not set": "設定されていない", + "Remote addresses for this room:": "この部屋のリモートアドレス:", + "Addresses": "アドレス", + "The main address for this room is": "この部屋の主アドレスは", + "Local addresses for this room:": "この部屋のローカルアドレス:", + "This room has no local addresses": "この部屋にはローカルアドレスはありません", + "New address (e.g. #foo:%(localDomain)s)": "新しいアドレス (例 #foo:%(localDomain)s)", + "Invalid community ID": "無効なコミュニティID", + "'%(groupId)s' is not a valid community ID": "'%(groupId)s' は有効なコミュニティIDではありません", + "Showing flair for these communities:": "これらのコミュニティの特色を示す:", + "This room is not showing flair for any communities": "この部屋はどんなコミュニティに対しても特色を表示していません", + "New community ID (e.g. +foo:%(localDomain)s)": "新しいコミュニティID (例 +foo:%(localDomain)s)", + "You have <a>enabled</a> URL previews by default.": "デフォルトでURLプレビューが<a>有効</a>です。", + "You have <a>disabled</a> URL previews by default.": "デフォルトでURLプレビューが<a>無効</a>です。", + "URL previews are enabled by default for participants in this room.": "この部屋の参加者は、デフォルトでURLプレビューが有効です。", + "URL previews are disabled by default for participants in this room.": "この部屋の参加者は、デフォルトでURLプレビューが無効です。", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "このような暗号化された部屋では、URLプレビューはデフォルトで無効になっており、あなたのホームサーバー(プレビューが生成された場所)がこの部屋に表示されているリンクに関する情報を収集できないようにしています。", + "URL Previews": "URLプレビュー", + "You have no historical rooms": "履歴のある部屋がありません", + "Historical": "履歴のある", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "メッセージにURLを入力すると、URLプレビューが表示され、タイトル、説明、ウェブサイトからの画像など、そのリンクに関する詳細情報が表示されます。", + "Error decrypting audio": "オーディオの復号化エラー", + "Error decrypting attachment": "添付ファイルの復号化エラー", + "Decrypt %(text)s": "%(text)s を解読する", + "Download %(text)s": "%(text)s をダウンロード", + "Invalid file%(extra)s": "無効なファイル %(extra)s", + "Error decrypting image": "イメージの復号化エラー", + "Error decrypting video": "動画の復号化エラー", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s が %(roomName)s のアバターを変更しました", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s がルームアバターを削除しました。", + "%(senderDisplayName)s changed the room avatar to <img/>": "%(senderDisplayName)s はルームアバターを<img/>に変更しました", + "This room is a continuation of another conversation.": "この部屋は別の会話の続きです。", + "Click here to see older messages.": "古いメッセージを見るにはここをクリックしてください。", + "Copied!": "コピーされました!", + "Failed to copy": "コピーに失敗しました", + "Add an Integration": "統合を追加する", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "サードパーティのサイトに移動して、%(integationsUrl)s で使用するためにアカウントを認証できるようになります。続行しますか?", + "Removed or unknown message type": "削除されたまたは未知のメッセージタイプ", + "Message removed by %(userId)s": "%(userId)s によってメッセージが削除されました", + "Message removed": "メッセージが削除された", + "Robot check is currently unavailable on desktop - please use a <a>web browser</a>": "現在のところ、ロボットチェックはデスクトップ上ではご利用いただけません - <a>ウェブブラウザ</a>を使用してください", + "This Home Server would like to make sure you are not a robot": "このHome Serverはあなたがロボットではないことを確認します", + "Sign in with CAS": "CASでサインインする", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "カスタムサーバーオプションを使用して、別のホームサーバーURLを指定して、他のMatrixサーバーにサインインすることができます。", + "This allows you to use this app with an existing Matrix account on a different home server.": "これにより、別のホームサーバー上の既存のMatrixアカウントでこのアプリケーションを使用することができます。", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "カスタムアイデンティティサーバーを設定することもできますが、通常は電子メールアドレスに基づいてユーザーとのやりとりを防止します。", + "To continue, please enter your password.": "続行するには、パスワードを入力してください。", + "Password:": "パスワード:", + "Please review and accept the policies of this homeserver:": "このホームサーバーのポリシーを確認し、同意してください:", + "An email has been sent to %(emailAddress)s": "電子メールが %(emailAddress)s に送信されました", + "Please check your email to continue registration.": "登録を続行するにはメールをご確認ください。", + "Token incorrect": "間違ったトークン", + "A text message has been sent to %(msisdn)s": "テキストメッセージが %(msisdn)s に送信されました", + "Please enter the code it contains:": "それに含まれるコードを入力してください:", + "Code": "コード", + "Start authentication": "認証を開始する", + "The email field must not be blank.": "電子メールフィールドは空白であってはいけません。", + "The user name field must not be blank.": "ユーザー名フィールドは空白であってはなりません。", + "The phone number field must not be blank.": "電話番号フィールドは空白であってはいけません。", + "The password field must not be blank.": "パスワードフィールドは空白であってはいけません。", + "Username on %(hs)s": "%(hs)s のユーザー名", + "User name": "ユーザー名", + "Mobile phone number": "携帯電話番号", + "Forgot your password?": "パスワードを忘れましたか?", + "%(serverName)s Matrix ID": "%(serverName)s Matrix ID", + "Sign in with": "にログインする", + "Email address": "メールアドレス", + "Sign in": "サインイン", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "メールアドレスを指定しないと、パスワードをリセットできません。間違いありませんか?", + "Email address (optional)": "メールアドレス (オプション)", + "You are registering with %(SelectedTeamName)s": "あなたは %(SelectedTeamName)s で登録しています", + "Mobile phone number (optional)": "携帯電話番号 (オプション)", + "Default server": "デフォルトサーバー", + "Custom server": "カスタムサーバー", + "Home server URL": "ホームサーバーのURL", + "Identity server URL": "アイデンティティ・サーバーのURL", + "What does this mean?": "これはどういう意味ですか?", + "Remove from community": "コミュニティから削除", + "Disinvite this user from community?": "このユーザーをコミュニティから拒否しますか?", + "Remove this user from community?": "コミュニティからこのユーザーを削除しますか?", + "Failed to withdraw invitation": "招待を撤回できませんでした", + "Failed to remove user from community": "コミュニティからユーザーを削除できませんでした", + "Filter community members": "コミュニティメンバーを絞り込む", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "%(roomName)s を %(groupId)s から削除してもよろしいですか?", + "Removing a room from the community will also remove it from the community page.": "コミュニティから部屋を削除すると、コミュニティページからもその部屋が削除されます。", + "Failed to remove room from community": "コミュニティからの部屋の削除に失敗しました", + "Failed to remove '%(roomName)s' from %(groupId)s": "%(groupName)s から '%(roomName)s' を削除できませんでした", + "Something went wrong!": "何かが間違っていた!", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "%(groupId)s の '%(roomName)s' の表示を更新できませんでした。", + "Visibility in Room List": "ルームリストの可視性", + "Visible to everyone": "みんなに見える", + "Only visible to community members": "コミュニティメンバーにのみ表示されます", + "Filter community rooms": "コミュニティルームを絞り込む", + "Something went wrong when trying to get your communities.": "コミュニティに参加しようとすると何かがうまくいかなかった。", + "Display your community flair in rooms configured to show it.": "それを表示するように構成された部屋にコミュニティの特色を表示します。", + "Show developer tools": "開発者ツールを表示", + "You're not currently a member of any communities.": "あなたは現在、どのコミュニティのメンバーでもありません。", + "Please help improve Riot.im by sending <UsageDataLink>anonymous usage data</UsageDataLink>. This will use a cookie (please see our <PolicyLink>Cookie Policy</PolicyLink>).": "<UsageDataLink>匿名利用データ</UsageDataLink>を送信して、Riot.imの改善を支援してください。 これはCookieを使用します (<PolicyLink>クッキーポリシー</PolicyLink>をご覧ください)>。", + "Please help improve Riot.im by sending <UsageDataLink>anonymous usage data</UsageDataLink>. This will use a cookie.": "<UsageDataLink>匿名利用データ</UsageDataLink>を送信して、Riot.imの改善を支援してください。 これはクッキーを使用します。", + "Yes, I want to help!": "はい、協力します!", + "Please <a>contact your service administrator</a> to get this limit increased.": "この制限を増やすには、<a>サービス管理者にお問い合わせ</a>ください。", + "This homeserver has hit its Monthly Active User limit so <b>some users will not be able to log in</b>.": "このホームサーバーは月間アクティブユーザー数の上限に達しているため、<b>一部のユーザーはログインできません</ b>。", + "This homeserver has exceeded one of its resource limits so <b>some users will not be able to log in</b>.": "このホームサーバーはリソース制限の1つを超えており、<b>一部のユーザーはログインできません</b>。", + "Unknown Address": "不明な住所", + "NOTE: Apps are not end-to-end encrypted": "注: アプリはエンドツーエンド暗号化されていません", + "Warning: This widget might use cookies.": "警告: このウィジェットはCookieを使用することがあります。", + "Do you want to load widget from URL:": "URLからウィジェットをロードしますか:", + "Allow": "許可", + "Delete Widget": "ウィジェットを削除", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "ウィジェットを削除すると、この部屋のすべてのユーザーのウィジェットが削除されます。 このウィジェットを削除してもいいですか?", + "Delete widget": "ウィジェットを削除", + "Failed to remove widget": "ウィジェットを削除できませんでした", + "An error ocurred whilst trying to remove the widget from the room": "ウィジェットをその部屋から削除しようとしているときにエラーが発生しました", + "Revoke widget access": "ウィジェットへのアクセスを取り消す", + "Minimize apps": "アプリを最小化する", + "Reload widget": "ウィジェットを再ロード", + "Popout widget": "ウィジェットをポップアウト", + "Picture": "画像", + "Unblacklist": "ブラックリスト解除", + "Blacklist": "ブラックリスト", + "Verify...": "検証中...", + "No results": "結果がありません", + "Communities": "コミュニティ", + "Home": "ホーム", + "Integrations Error": "統合エラー", + "Manage Integrations": "統合管理", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)s が %(count)s 回参加しました", + "one": "%(severalUsers)s が参加しました" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)s が %(count)s 回参加しました", + "one": "%(oneUser)s が参加しました" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUers)s は %(count)s 回退出しました", + "one": "%(severalUsers)s は退出しました" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)s は %(count)s 回退出しました", + "one": "%(oneUser)s は退出しました" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)s が%(count)s 回参加し、退出した", + "one": "%(severalUsers)s は参加して退出しました" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)s が %(count)s 回参加し退出しました", + "one": "%(oneUser)s が参加し退出しました" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)s が %(count)s 回退出し再参加しました", + "one": "%(severalUsers)s が退出し再参加しました" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)s が %(count)s 回退出し再参加しました", + "one": "%(oneUser)s が退出し再参加しました" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)s が %(count)s 回招待を拒否しました", + "one": "%(severalUsers)s が招待を拒否しました" + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)s が %(count)s 回招待を拒否しました", + "one": "%(oneUser)s が招待を拒否しました" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "one": "%(severalUsers)s が招待を取り消しました", + "other": "%(severalUsers)s が %(count)s 回招待を撤回した" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "%(oneUser)s が %(count)s 回招待を取り消しました", + "one": "%(oneUser)s が招待を取り消しました" + }, + "were invited %(count)s times": { + "other": "%(count)s 回招待されました", + "one": "招待されました" + }, + "was invited %(count)s times": { + "other": "%(count)s 回招待されました", + "one": "招待されました" + }, + "were banned %(count)s times": { + "other": "%(count)s 回ブロックされました", + "one": "ブロックされました" + }, + "was banned %(count)s times": { + "other": "%(count)s 回ブロックされました", + "one": "ブロックされました" + }, + "were unbanned %(count)s times": { + "other": "%(count)s 回ブロック解除されました", + "one": "ブロック解除されました" + }, + "was unbanned %(count)s times": { + "other": "%(count)s 回ブロック解除されました", + "one": "ブロック解除されました" + }, + "were kicked %(count)s times": { + "other": "%(count)s 回追放しました", + "one": "追放されました" + }, + "was kicked %(count)s times": { + "other": "%(count)s 回追放されました", + "one": "追放されました" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)s が %(count)s 回名前を変更しました", + "one": "%(severalUsers)s が名前を変更しました" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)s が %(count)s 回名前を変更しました", + "one": "%(oneUser)s が名前を変更しました" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)s が %(count)s 回アバターを変更しました", + "one": "%(severalUsers)s がアバターを変更しました" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)s がアバターを %(count)s 回変更しました", + "one": "%(oneUser)s がアバターを変更しました" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s と 他 %(count)s 回", + "one": "%(items)s と他の1つ" + }, + "%(items)s and %(lastItem)s": "%(items)s と %(lastItem)s", + "collapse": "崩壊", + "expand": "拡大する", + "Custom of %(powerLevel)s": "%(powerLevel)s のカスタム", + "Custom level": "カスタムレベル", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "返信されたイベントを読み込めません。存在しないか、表示する権限がありません。", + "<a>In reply to</a> <pill>": "<a>返信</a> <pill>", + "And %(count)s more...": { + "other": "そして %(count)s もっと..." + }, + "ex. @bob:example.com": "例 @bob:example.com", + "Add User": "ユーザーを追加", + "Matrix ID": "Matirx ID", + "Matrix Room ID": "Matrix 部屋ID", + "email address": "メールアドレス", + "You have entered an invalid address.": "無効なアドレスを入力しました。", + "Try using one of the following valid address types: %(validTypesList)s.": "次の有効なアドレスタイプのいずれかを使用してください:%(validTypesList)s", + "Before submitting logs, you must <a>create a GitHub issue</a> to describe your problem.": "ログを送信する前に、問題を説明するために<a>GitHubに論点を作成する</a>必要があります。", + "What GitHub issue are these logs for?": "これらのログはどのGitHubの問題ですか?", + "Create a new chat or reuse an existing one": "新しいチャットを作成するか、既存のチャットを再利用する", + "Start new chat": "新しいチャットを開始", + "You already have existing direct chats with this user:": "このユーザーには既に既存のチャットがあります:", + "Click on the button below to start chatting!": "チャットを開始するには、下のボタンをクリックしてください!", + "Confirm Removal": "削除の確認", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "このイベントを削除してもよろしいですか?部屋の名前やトピックの変更を削除すると、変更が取り消される可能性があります。", + "Community IDs cannot be empty.": "コミュニティIDは空にできません。", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "コミュニティIDには次の文字のみを含めることができます a-z, 0-9, or '=_-./'", + "Something went wrong whilst creating your community": "コミュニティを作成する時に何かがうまくいかなかった", + "Create Community": "コミュニティを作成する", + "Community Name": "コミュニティ名", + "Example": "例", + "Community ID": "コミュニティID", + "example": "例", + "Create": "作成する", + "Room name (optional)": "部屋名 (オプション)", + "Advanced options": "詳細オプション", + "Block users on other matrix homeservers from joining this room": "他のmatrixホームサーバーのユーザーをこの部屋に参加させないようにする", + "This setting cannot be changed later!": "この設定は後で変更することはできません!", + "Failed to indicate account erasure": "アカウントの削除を示すことができませんでした", + "Unknown error": "不明なエラー", + "Incorrect password": "間違ったパスワード", + "Deactivate Account": "アカウントを無効にする", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. <b>This action is irreversible.</b>": "これにより、あなたのアカウントは永久に使用できなくなります。ログインできなくなり、誰も同じユーザーIDを再登録できなくなります。これにより、参加しているすべてのルームから退室し、 IDサーバからあなたのアカウントの詳細が削除されます。<b>この操作は元に戻すことができません。</b>", + "Deactivating your account <b>does not by default cause us to forget messages you have sent.</b> If you would like us to forget your messages, please tick the box below.": "アカウントを無効にしても、<b>送信されたメッセージはデフォルトではなくなりません。</b>メッセージを忘れてしまった場合は、下のボックスにチェックを入れてください。", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Matrixのメッセージの可視性は電子メールと似ています。メッセージを忘れると、新規または未登録のユーザーと共有することができませんが、既にこれらのメッセージにアクセスしている登録ユーザーは、依然としてそのコピーにアクセスできます。", + "Please forget all messages I have sent when my account is deactivated (<b>Warning:</b> this will cause future users to see an incomplete view of conversations)": "アカウントを無効にしたときに送信したすべてのメッセージを忘れてください (<b>警告:</b>これにより、今後のユーザーは会話履歴の全文を見ることができなくなります)", + "To continue, please enter your password:": "続行するには、パスワードを入力してください:", + "password": "パスワード", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "この端末が信頼できることを確認するには、他の方法 (個人や電話など) で所有者に連絡し、端末のユーザー設定で表示される鍵が以下のキーと一致するかどうかを尋ねてください:", + "Device name": "端末名", + "Device key": "端末キー", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "一致する場合は下の確認ボタンを押し、そうでない場合は他の誰かがこのデバイスを傍受しているので、代わりにブラックリストボタンを押してください。", + "In future this verification process will be more sophisticated.": "将来この検証プロセスはより洗練されたものになるでしょう。", + "Verify device": "デバイスの検証", + "I verify that the keys match": "キーが一致することを確認します", + "An error has occurred.": "エラーが発生しました。", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "暗号化キーを要求している新しい端末 '%(displayName)s' を追加しました。", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "未確認の端末 '%(displayName)s' が暗号化キーを要求しています。", + "Start verification": "検証を開始する", + "Share without verifying": "検証せずに共有する", + "Ignore request": "要求を無視する", + "Loading device info...": "端末情報を読み込んでいます...", + "Encryption key request": "暗号化キー要求", + "You've previously used Riot on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, Riot needs to resync your account.": "以前 %(host)s にて、メンバーの遅延ロードを有効にしたRiotを使用していました。このバージョンでは、遅延ロードは無効です。ローカルキャッシュはこれらの2つの設定の間で互換性がないため、Riotはアカウントを再同期する必要があります。", + "If the other version of Riot is still open in another tab, please close it as using Riot on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "他のバージョンのRiotがまだ別のタブで開いている場合は、同じホスト上でRiotを使用するように閉じてください。遅延ロードが同時に有効と無効になっていると問題が発生します。", + "Incompatible local cache": "互換性のないローカルキャッシュ", + "Clear cache and resync": "キャッシュをクリアして再同期する", + "Riot now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!": "Riotは、必要に応じて他のユーザーに関する情報をロードするだけで、メモリの使用量を3〜5倍減らしました。サーバーと再同期するのを待ってください!", + "Updating Riot": "Riot更新中", + "Failed to upgrade room": "部屋をアップグレードできませんでした", + "The room upgrade could not be completed": "部屋のアップグレードを完了できませんでした", + "Upgrade this room to version %(version)s": "この部屋をバージョン %(version)s にアップグレードします", + "Upgrade Room Version": "アップグレードルームバージョン", + "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "この部屋をアップグレードするには、現在の部屋のインスタンスを閉じて、新しい部屋を作成する必要があります。 部屋のメンバーに最高の体験を提供するため、私たちは以下を行います:", + "Create a new room with the same name, description and avatar": "同じ名前、説明、アバターで新しい部屋を作成する", + "Update any local room aliases to point to the new room": "新しいルームを指すようにローカルルームのエイリアスを更新する", + "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "古いバージョンの部屋でのユーザーの発言を停止し、新しい部屋に移動するようユーザーに通知するメッセージを投稿する", + "Mention": "記載", + "Flair will appear if enabled in room settings": "部屋の設定で有効になると、特色が表示されます", + "Unverify": "未検証", + "Put a link back to the old room at the start of the new room so people can see old messages": "新しい部屋の始めに古い部屋にリンクを張って、人々が古いメッセージを見ることができるようにする", + "Sign out": "サインアウト", + "Log out and remove encryption keys?": "ログアウトして暗号化キーを削除しますか?", + "Clear Storage and Sign Out": "ストレージのクリアとログアウト", + "Send Logs": "ログを送信する", + "Refresh": "リフレッシュ", + "Unable to restore session": "セッションを復元できません", + "We encountered an error trying to restore your previous session.": "以前のセッションを復元しようとしてエラーが発生しました。", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "以前にRiotの最新バージョンを使用していた場合、セッションはこのバージョンと互換性がない可能性があります。 このウィンドウを閉じて、最新のバージョンに戻ります。", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "ブラウザのストレージをクリアすると問題は解決するかもしれませんが、ログアウトして暗号化されたチャット履歴を読むことができなくなります。", + "Invalid Email Address": "無効なメールアドレス", + "This doesn't appear to be a valid email address": "これは有効なメールアドレスではないようです", + "Verification Pending": "検証の保留中", + "Please check your email and click on the link it contains. Once this is done, click continue.": "メールをチェックし、それに含まれているリンクをクリックしてください。 これが完了したら、[続行]をクリックします。", + "Unable to add email address": "メールアドレスを追加できません", + "Unable to verify email address.": "メールアドレスを確認できません。", + "This will allow you to reset your password and receive notifications.": "これにより、パスワードをリセットして通知を受け取ることができます。", + "Skip": "スキップ", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "ユーザー名には、文字、数字、ドット、ハイフン、アンダースコアのみを使用できます。", + "Username not available": "ユーザー名は利用できません", + "Username invalid: %(errMessage)s": "ユーザー名が無効です: %(errMessage)s", + "An error occurred: %(error_string)s": "エラーが発生しました: %(error_string)s", + "Username available": "利用可能なユーザー名", + "To get started, please pick a username!": "開始するには、ユーザー名を選んでください!", + "This will be your account name on the <span></span> homeserver, or you can pick a <a>different server</a>.": "これは<span>ホームサーバー</span>上のアカウント名ですが、<a>別のサーバー</a>を選択することもできます。", + "If you already have a Matrix account you can <a>log in</a> instead.": "すでにMatrixアカウントをお持ちの場合は、代わりに<a>ログイン</a>することができます。", + "Share Room": "共有部屋", + "Link to most recent message": "最新のメッセージへのリンク", + "Share User": "ユーザーを共有", + "Share Community": "コミュニティを共有", + "Share Room Message": "部屋のメッセージを共有", + "Link to selected message": "選択したメッセージにリンクする", + "COPY": "コピー", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "現在、未検証の端末をブラックリストに登録しています。 これらの端末にメッセージを送信するには、それらの端末を検証する必要があります。", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "各端末の正当な所有者に属していることを確認するために各端末の検証プロセスを進めることをおすすめしますが、あなたが好むかどうかを確認せずにメッセージを再送信することができます。", + "Room contains unknown devices": "部屋には未知の端末が含まれています", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\"には以前見たことのない端末が含まれています。", + "Unknown devices": "未知の端末", + "Private Chat": "プライベートチャット", + "Public Chat": "パブリックチャット", + "Custom": "カスタム", + "Alias (optional)": "エイリアス (オプション)", + "Reject invitation": "招待を拒否する", + "Are you sure you want to reject the invitation?": "招待を拒否しますか?", + "Unable to reject invite": "招待を拒否できません", + "Share Message": "メッセージを共有", + "Collapse Reply Thread": "返信スレッドを折りたたむ", + "Name": "名前", + "Topic": "トピック", + "Make this room private": "この部屋をプライベートにする", + "Share message history with new users": "新しいユーザーとメッセージの履歴を共有する", + "Encrypt room": "部屋を暗号化", + "You must <a>register</a> to use this functionality": "この機能を使用するには<a>登録</a>する必要があります", + "You must join the room to see its files": "そのファイルを見るために部屋に参加する必要があります", + "There are no visible files in this room": "この部屋には目に見えるファイルはありません", + "<h1>HTML for your community's page</h1>\n<p>\n Use the long description to introduce new members to the community, or distribute\n some important <a href=\"foo\">links</a>\n</p>\n<p>\n You can even use 'img' tags\n</p>\n": "<h1>コミュニティのページのHTML</h1>\n<p>\n 詳細な説明を使用して、新しいメンバーをコミュニティに紹介する、または配布する\n 重要な<a href=\"foo\">リンク</a>\n</p>\n<p>\n あなたは 'img'タグを使うことさえできます\n</p>\n", + "Add rooms to the community summary": "コミュニティサマリーに部屋を追加する", + "Which rooms would you like to add to this summary?": "このサマリーにどの部屋を追加したいですか?", + "Add to summary": "サマリーに追加", + "Failed to add the following rooms to the summary of %(groupId)s:": "%(groupId)s の要約に次の部屋を追加できませんでした:", + "Add a Room": "部屋を追加", + "Failed to remove the room from the summary of %(groupId)s": "%(groupId)s の要約から部屋を削除できませんでした", + "The room '%(roomName)s' could not be removed from the summary.": "'%(roomName)s' 部屋をサマリーから削除できませんでした。", + "Add users to the community summary": "コミュニティサマリーにユーザーを追加する", + "Who would you like to add to this summary?": "この要約に誰を追加しますか?", + "Failed to add the following users to the summary of %(groupId)s:": "%(groupId)s のサマリーに次のユーザーを追加できませんでした。", + "Add a User": "ユーザーを追加", + "Failed to remove a user from the summary of %(groupId)s": "%(groupId)s のサマリーからユーザーを削除できませんでした", + "The user '%(displayName)s' could not be removed from the summary.": "ユーザー '%(displayName)s' をサマリーから削除できませんでした。", + "Failed to upload image": "画像のアップロードに失敗しました", + "Failed to update community": "コミュニティの更新に失敗しました", + "Unable to accept invite": "招待を受け入れることができません", + "Unable to join community": "コミュニティに参加できません", + "You are an administrator of this community. You will not be able to rejoin without an invite from another administrator.": "あなたはこのコミュニティの管理者です。 別の管理者からの招待なしには、再び参加することはできません。", + "Leave Community": "コミュニティから脱退する", + "Leave %(groupName)s?": "%(groupName)s を離れますか?", + "Unable to leave community": "コミュニティを離れることができません", + "Community Settings": "コミュニティ設定", + "Changes made to your community <bold1>name</bold1> and <bold2>avatar</bold2> might not be seen by other users for up to 30 minutes.": "コミュニティ<bold1>名</bold1>と<bold2>アバター</bold2>に対する変更は、他のユーザーには最大30分間表示されないことがあります。", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "これらの部屋は、コミュニティページのコミュニティメンバーに表示されます。 コミュニティメンバーは、それらをクリックして部屋に参加できます。", + "Featured Rooms:": "部屋の特徴:", + "Featured Users:": "ユーザーの特徴:", + "%(inviter)s has invited you to join this community": "%(inviter)s があなたをこのコミュニティに招待しました", + "Join this community": "このコミュニティに参加する", + "Leave this community": "このコミュニティを離れる", + "You are an administrator of this community": "あなたはこのコミュニティの管理者です", + "You are a member of this community": "あなたはこのコミュニティのメンバーです", + "Who can join this community?": "誰がこのコミュニティに参加できますか?", + "Everyone": "全員", + "Your community hasn't got a Long Description, a HTML page to show to community members.<br />Click here to open settings and give it one!": "あなたのコミュニティには、説明がありません。コミュニティのメンバーに見せるHTMLページです。<br />ここをクリックして設定を開き、説明を加えてください!", + "Long Description (HTML)": "詳細説明 (HTML)", + "Description": "説明", + "Community %(groupId)s not found": "コミュニティ %(groupId)s が見つかりません", + "This Home server does not support communities": "このホームサーバーはコミュニティをサポートしていません", + "Failed to load %(groupId)s": "%(groupId)s をロードできませんでした", + "Failed to reject invitation": "招待を拒否できませんでした", + "This room is not public. You will not be able to rejoin without an invite.": "この部屋は公開されていません。 あなたは招待なしで再び参加することはできません。", + "Are you sure you want to leave the room '%(roomName)s'?": "本当にその部屋 '%(roomName)s' を離れますか?", + "Failed to leave room": "部屋を離れることができなかった", + "Can't leave Server Notices room": "サーバー通知部屋を離れることはできません", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "この部屋はホームサーバーからの重要なメッセージに使用されるため、そこを離れることはできません。", + "Signed Out": "サインアウト", + "For security, this session has been signed out. Please sign in again.": "セキュリティ上、このセッションはログアウトされています。 もう一度サインインしてください。", + "Terms and Conditions": "利用規約", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "%(homeserverDomain)s ホームサーバーを引き続き使用するには、利用規約を確認して同意する必要があります。", + "Review terms and conditions": "利用規約を確認する", + "Old cryptography data detected": "古い暗号化データが検出されました", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Riotの古いバージョンのデータが検出されました。 これにより、古いバージョンではエンドツーエンドの暗号化が機能しなくなります。 古いバージョンを使用している間に最近交換されたエンドツーエンドの暗号化されたメッセージは、このバージョンでは復号化できません。 これにより、このバージョンで交換されたメッセージが失敗することもあります。 問題が発生した場合は、ログアウトして再度ログインしてください。 メッセージ履歴を保持するには、キーをエクスポートして再インポートします。", + "Logout": "ログアウト", + "Your Communities": "あなたのコミュニティ", + "Did you know: you can use communities to filter your Riot.im experience!": "知っていましたか: コミュニティを使ってRiot.imの経験を絞り込むことができます!", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "フィルターを設定するには、画面左側のフィルターパネルへコミュニティアバターをドラッグします。フィルタパネルのアバターをクリックすると、そのコミュニティに関連付けられた部屋や人だけが表示されます。", + "Error whilst fetching joined communities": "参加したコミュニティを取得中にエラーが発生しました", + "Create a new community": "新しいコミュニティを作成する", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "ユーザーと部屋をグループ化するコミュニティを作成してください! Matrixユニバースにあなたの空間を目立たせるためにカスタムホームページを作成してください。", + "You have no visible notifications": "表示される通知はありません", + "Scroll to bottom of page": "ページの一番下にスクロールする", + "Message not sent due to unknown devices being present": "未知の端末が存在するためにメッセージが送信されない", + "<showDevicesText>Show devices</showDevicesText>, <sendAnywayText>send anyway</sendAnywayText> or <cancelText>cancel</cancelText>.": "<showDevicesText>端末表示</showDevicesText>、<sendAnywayText>とにかく送信</sendAnywayText>または<cancelText> キャンセル</cancelText>。", + "You can't send any messages until you review and agree to <consentLink>our terms and conditions</consentLink>.": "<consentLink>利用規約</consentLink> を確認して同意するまでは、いかなるメッセージも送信できません。", + "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please <a>contact your service administrator</a> to continue using the service.": "このホームサーバーが月間アクティブユーザー制限を超えたため、メッセージは送信されませんでした。 サービスを引き続き使用するには、<a>サービス管理者にお問い合わせ</a>ください。", + "Your message wasn't sent because this homeserver has exceeded a resource limit. Please <a>contact your service administrator</a> to continue using the service.": "このホームサーバーがリソース制限を超えたため、メッセージは送信されませんでした。 サービスを引き続き使用するには、<a>サービス管理者にお問い合わせ</a>ください。", + "%(count)s of your messages have not been sent.": { + "other": "メッセージの一部が送信されていません。", + "one": "あなたのメッセージは送信されませんでした。" + }, + "%(count)s <resendText>Resend all</resendText> or <cancelText>cancel all</cancelText> now. You can also select individual messages to resend or cancel.": { + "other": "<resendText>すべて再送信</resendText>または<cancelText>すべてキャンセル</cancelText>。個々のメッセージを選択して、再送信またはキャンセルすることもできます。", + "one": "<resendText>メッセージ再送信</resendText>または<cancelText>メッセージキャンセル</cancelText>。" + }, + "Connectivity to the server has been lost.": "サーバーへの接続が失われました。", + "Sent messages will be stored until your connection has returned.": "送信されたメッセージは、接続が返されるまで保存されます。", + "Active call": "アクティブコール", + "There's no one else here! Would you like to <inviteText>invite others</inviteText> or <nowarnText>stop warning about the empty room</nowarnText>?": "他に誰もいません! <inviteText>他のユーザーを招待</inviteText>または<nowarnText>空の部屋に関する警告を停止しますか</nowarnText>?", + "You seem to be uploading files, are you sure you want to quit?": "ファイルをアップロードしているようですが、中止しますか?", + "You seem to be in a call, are you sure you want to quit?": "通話中のようですが、本当にやめたいですか?", + "Failed to upload file": "ファイルのアップロードに失敗しました", + "Server may be unavailable, overloaded, or the file too big": "サーバーが使用できない、過負荷がかかっている、またはファイルが大きすぎるようです", + "Search failed": "検索に失敗しました", + "Server may be unavailable, overloaded, or search timed out :(": "サーバーが使用できない、オーバーロードされている、または検索がタイムアウトしているようです :(", + "No more results": "もう結果はありません", + "Unknown room %(roomId)s": "未知の部屋 %(roomId)s", + "Room": "部屋", + "Failed to save settings": "設定を保存できませんでした", + "Failed to reject invite": "招待を拒否できませんでした", + "Click to unmute video": "ビデオの音消解除するにはクリックしてください", + "Click to mute video": "ビデオの音を消すにはクリックしてください", + "Click to unmute audio": "オーディオの音消解除するにはクリックしてください", + "Click to mute audio": "オーディオの音を消すにはクリックしてください", + "Clear filter": "フィルタークリア", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "この部屋のタイムラインに特定のポイントをロードしようとしましたが、問題のメッセージを見る権限がありません。", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "この部屋のタイムラインに特定のポイントをロードしようとしましたが、それを見つけることができませんでした。", + "Failed to load timeline position": "タイムラインの位置を読み込めませんでした", + "Uploading %(filename)s and %(count)s others": { + "other": "%(filename)s アップロード中、他 %(count)s 件", + "zero": "%(filename)s アップロード中", + "one": "%(filename)s アップロード中、他 %(count)s 件" + }, + "Can't load user settings": "ユーザー設定を読み込めません", + "Server may be unavailable or overloaded": "サーバーが使用できないか、またはオーバーロードされているようです", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "セキュリティのため、ログアウトするとこのブラウザからエンドツーエンドの暗号化キーがすべて削除されます。 将来のRiotセッションからの会話履歴を復号化できるようにしたい場合は、安全のためにルームキーをエクスポートしてください。", + "Success": "成功", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "パスワードが変更されました。再ログインするまで、他の端末のプッシュ通知を受け取ることはありません", + "Remove Contact Information?": "連絡先情報を削除しますか?", + "Remove %(threePid)s?": "%(threePid)s を削除しますか?", + "Unable to remove contact information": "連絡先情報を削除できません", + "Refer a friend to Riot:": "Riotに友達を紹介する:", + "Interface Language": "インタフェース言語", + "User Interface": "ユーザーインターフェース", + "Autocomplete Delay (ms):": "オートコンプリート遅延 (ms):", + "<not supported>": "<サポート対象外>", + "Import E2E room keys": "E2Eルームキーのインポート", + "Cryptography": "暗号", + "Device ID:": "端末ID:", + "Device key:": "端末キー:", + "Ignored Users": "無視されたユーザー", + "Submit Debug Logs": "デバッグログを送信する", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "GitHub経由でバグを提出した場合、デバッグログは問題の追跡に役立ちます。 デバッグログには、ユーザー名、訪問した部屋またはグループIDまたはエイリアス、および他のユーザーのユーザー名を含むアプリケーション使用データが含まれます。 それらはメッセージを含んでいません。", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "プライバシーは私たちにとって重要なので、私たちは分析のための個人情報や識別可能なデータを収集しません。", + "Learn more about how we use analytics.": "アナリティクスの使用方法の詳細については、こちらをご覧ください。", + "Labs": "ラボ", + "These are experimental features that may break in unexpected ways": "これらは予期しない方法で破られるかもしれない実験的な機能です", + "Use with caution": "慎重に使用する", + "Lazy loading members not supported": "遅延ローディングのメンバーはサポートされていません", + "Lazy loading is not supported by your current homeserver.": "遅延ロードは、現在のホームサーバーでサポートされていません。", + "Deactivate my account": "アカウントを無効にします", + "Legal": "法的", + "Clear Cache": "キャッシュの消去", + "Clear Cache and Reload": "キャッシュの消去と再ロード", + "Updates": "更新", + "Check for update": "更新を確認", + "Reject all %(invitedRooms)s invites": "%(invitedRooms)s すべての招待を拒否する", + "Bulk Options": "一括オプション", + "Desktop specific": "デスクトップ固有", + "Start automatically after system login": "システムログイン後に自動的に起動する", + "No media permissions": "メディア権限がありません", + "You may need to manually permit Riot to access your microphone/webcam": "自分のマイク/ウェブカメラにアクセスするために手動でRiotを許可する必要があるかもしれません", + "Missing Media Permissions, click here to request.": "メディアアクセス権がありません。ここをクリックしてリクエストしてください。", + "No Audio Outputs detected": "オーディオ出力が検出されなかった", + "Default Device": "標準端末", + "Audio Output": "音声出力", + "VoIP": "VoIP", + "Email": "Eメール", + "Add email address": "メールアドレスを追加", + "Profile": "プロフィール", + "Account": "アカウント", + "To return to your account in future you need to set a password": "将来あなたのアカウントに戻るには、パスワードを設定する必要があります", + "Logged in as:": "ログイン as:", + "Access Token:": "アクセストークン:", + "click to reveal": "クリックすると表示されます", + "Homeserver is": "ホームサーバーは", + "Identity Server is": "アイデンティティ・サーバー", + "matrix-react-sdk version:": "matrix-react-sdk version:", + "riot-web version:": "riot-web version:", + "olm version:": "olm version:", + "Failed to send email": "メールを送信できませんでした", + "The email address linked to your account must be entered.": "あなたのアカウントにリンクされているメールアドレスを入力する必要があります。", + "A new password must be entered.": "新しいパスワードを入力する必要があります。", + "New passwords must match each other.": "新しいパスワードは互いに一致する必要があります。", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "現在、パスワードをリセットすると、すべての端末のエンドツーエンドの暗号化キーがリセットされ、暗号化されたチャット履歴は読み取れなくなります。最初にルームキーをエクスポートしてから再インポートする必要があります。 将来これは改善されるでしょう。", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "メールが %(emailAddress)s に送信されました。 リンクをたどったら、以下をクリックしてください。", + "I have verified my email address": "メールアドレスを確認しました", + "Your password has been reset": "あなたのパスワードはリセットされました", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "あなたはすべての端末からログアウトしており、プッシュ通知を受け取ることはありません。 通知を再度有効にするには、各端末でもう一度ログインしてください", + "Return to login screen": "ログイン画面に戻る", + "To reset your password, enter the email address linked to your account": "パスワードをリセットするには、アカウントにリンクされているメールアドレスを入力してください", + "Confirm your new password": "新しいパスワードを確認する", + "Send Reset Email": "リセットメールを送信", + "Create an account": "アカウントを作成する", + "This Home Server does not support login using email address.": "このホームサーバーはメールアドレスを使用したログインをサポートしていません。", + "Please <a>contact your service administrator</a> to continue using this service.": "このサービスを続行するには、<a>サービス管理者にお問い合わせ</a>ください。", + "Incorrect username and/or password.": "不正なユーザー名またはパスワード。", + "Please note you are logging into the %(hs)s server, not matrix.org.": "matrix.orgではなく、%(hs)s サーバーにログインしていることに注意してください。", + "Guest access is disabled on this Home Server.": "このホームサーバーでゲストアクセスが無効になっています。", + "The phone number entered looks invalid": "入力された電話番号が無効です", + "This homeserver doesn't offer any login flows which are supported by this client.": "このホームサーバーは、このクライアントでサポートされているログインフローを提供していません。", + "Error: Problem communicating with the given homeserver.": "エラー: 指定されたホームサーバーとの通信に問題があります。", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or <a>enable unsafe scripts</a>.": "HTTPS URLがブラウザバーにある場合、HTTP経由でホームサーバーに接続できません。 HTTPSを使用するか<a>安全でないスクリプトを有効にする</a>。", + "Can't connect to homeserver - please check your connectivity, ensure your <a>homeserver's SSL certificate</a> is trusted, and that a browser extension is not blocking requests.": "ホームサーバーに接続できません - 接続を確認し、<a>ホームサーバーのSSL証明書</a>が信頼できるものであり、ブラウザの拡張機能が要求をブロックしていないことを確認してください。", + "Try the app first": "最初にアプリを試してみてください", + "Sign in to get started": "開始するにはサインインしてください", + "Failed to fetch avatar URL": "アバターURLを取得できませんでした", + "Set a display name:": "表示名を設定する:", + "Upload an avatar:": "アバターをアップロードする:", + "Unable to query for supported registration methods": "サポートされている登録メソッドを照会できません", + "This server does not support authentication with a phone number.": "このサーバーは、電話番号による認証をサポートしていません。", + "Missing password.": "パスワードがありません。", + "Passwords don't match.": "パスワードが一致しません。", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "パスワードが短すぎます (min %(MIN_PASSWORD_LENGTH)s)。", + "This doesn't look like a valid email address.": "有効なメールアドレスではないようです。", + "This doesn't look like a valid phone number.": "有効な電話番号ではないようです。", + "An email address is required to register on this homeserver.": "このホームサーバーに登録するには、メールアドレスが必要です。", + "A phone number is required to register on this homeserver.": "このホームサーバーに登録するには、電話番号が必要です。", + "You need to enter a user name.": "ユーザー名を入力する必要があります。", + "An unknown error occurred.": "不明なエラーが発生しました。", + "I already have an account": "私はすでにアカウントを持っています", + "Commands": "コマンド", + "Results from DuckDuckGo": "DuckDuckGoの結果", + "Emoji": "絵文字", + "Notify the whole room": "部屋全体に通知する", + "Room Notification": "ルーム通知", + "Users": "ユーザー", + "unknown device": "未知の端末", + "NOT verified": "検証されていない", + "verified": "検証済み", + "Verification": "検証", + "Ed25519 fingerprint": "Ed25519 fingerprint", + "User ID": "ユーザーID", + "Curve25519 identity key": "Curve25519 identity key", + "none": "無し", + "Claimed Ed25519 fingerprint key": "Claimed Ed25519 fingerprint key", + "Algorithm": "アルゴリズム", + "unencrypted": "暗号化されていない", + "Decryption error": "復号化エラー", + "Session ID": "セッションID", + "End-to-end encryption information": "エンドツーエンド暗号化情報", + "Event information": "イベント情報", + "Sender device information": "送信者端末情報", + "Passphrases must match": "パスフレーズは一致する必要があります", + "Passphrase must not be empty": "パスフレーズは空であってはいけません", + "Export room keys": "ルームキーのエクスポート", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "このプロセスでは、暗号化されたルームで受信したメッセージのキーをローカルファイルにエクスポートできます。 その後、クライアントがこれらのメッセージを復号化できるように、ファイルを別のMatrixクライアントにインポートすることができます。", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "エクスポートされたファイルは、誰でも閲覧できる暗号化されたメッセージを復号化することができるので、安全に保つように注意する必要があります。 これを助けるには、下にあるパスフレーズを入力して、エクスポートされたデータを暗号化する必要があります。 同じパスフレーズを使用してデータをインポートすることは可能です。", + "Enter passphrase": "パスフレーズを入力", + "Confirm passphrase": "パスフレーズを確認", + "Export": "エクスポート", + "Import room keys": "ルームキーをインポートする", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "このプロセスでは、以前に別のMatrixクライアントからエクスポートした暗号化キーをインポートできます。 これにより、他のクライアントが解読できるすべてのメッセージを解読することができます。", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "エクスポートファイルはパスフレーズで保護されます。 ファイルを解読するには、パスフレーズをここに入力する必要があります。", + "File to import": "インポートするファイル", + "Import": "インポート", + "Failed to set direct chat tag": "直接チャットタグを設定できませんでした", + "Failed to remove tag %(tagName)s from room": "部屋からタグ %(tagName)s を削除できませんでした", + "Failed to add tag %(tagName)s to room": "部屋にタグ %(tagName)s を追加できませんでした", + "Open Devtools": "開発ツールを開く", + "bold": "bold", + "italic": "italic", + "underlined": "underlined", + "inline-code": "inline-code", + "block-quote": "block-quote", + "bulleted-list": "bulleted-list", + "numbered-list": "numbered-list", + "People": "人々", + "Flair": "特色", + "Flair will not appear": "特色は現れない", + "Fill screen": "フィルスクリーン", + "Light theme": "明るいテーマ", + "Dark theme": "暗いテーマ", + "Status.im theme": "Status.im テーマ", + "Unignore": "無視しない", + "If you would like to create a Matrix account you can <a>register</a> now.": "Matrixアカウントを作成したい場合は、今すぐ<a>登録する</a>ことができます。", + "You are currently using Riot anonymously as a guest.": "現在、Riotをゲストとして匿名で使用しています。", + "Riot is not supported on mobile web. Install the app?": "Riotはスマートフォンでの表示に対応していません。できればアプリをインストールして頂けませんでしょうか?", + "Welcome to Riot.im": "Riot.imへようこそ", + "Search the room directory": "部屋一覧を検索", + "Unknown device": "不明な端末", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)sは%(osName)sの%(browserName)s上で動作しています", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "他のホームサーバのURLを指定することで、他のMatrixサーバにサインインするためにカスタムサーバのオプションを利用できます。<br/>これにより、他のホームサーバ上で既存のMatrixアカウントを用いてRiotを利用できます。<br/><br/>カスタムアイデンティティサーバを立てることもできますが、メールアドレスでユーザを招待する、または自身が招待されることはできません。", + "Riot Desktop on %(platformName)s": "%(platformName)s向けデスクトップ版Riot", + "You need to be using HTTPS to place a screen-sharing call.": "画面共有通話を行うにはHTTPS通信を使う必要があります。", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "分散型の、暗号化された会話とコラボレーション。[matrix]で動作しています", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "既にたくさんの部屋が、既存のネットワーク(Slack、IRC、Gitter等)に接続して、または独立的にMatrixに存在します。ディレクトリを検索してください!", + "Chat with Riot Bot": "Riot Botと会話", + "Get started with some tips from Riot Bot!": "Riot Botにヒントをもらって始めましょう!", + "General discussion about Matrix and Riot": "MatrixとRiotの概略", + "Discussion of all things Matrix!": "Matrixなんでも議論!", + "Riot/Web & Desktop chat": "Riot/Web & デスクトップ版チャット", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk チャット", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk チャット", + "Matrix technical discussions": "Matrixについての技術的な討論", + "Running Matrix services": "Matrixサービスを実行しています", + "Community-run support for Synapse": "コミュニティ運営のSynapseのサポート", + "Admin support for Dendrite": "Dendriteの管理者サポート", + "Announcements about Synapse releases": "Synapseの公開についてのお知らせ", + "Support for those using and running matrix-appservice-irc": "matrix-appservice-ircを利用並びに運営している方へのサポート", + "Building services on Matrix": "Matrix上でのサービスの開発", + "Support for those using the Matrix spec": "Matrixスペックを利用する方へのサポート", + "Design and implementation of E2E in Matrix": "Matrixのデザインとエンドツーエンドの実装", + "Implementing VR services with Matrix": "MatrixでのVRサービスの実装", + "Implementing VoIP services with Matrix": "MatrixでのIP電話サービスの実装", + "Discussion of the Identity Service API": "Identity Service APIの議論", + "Support for those using, running and writing other bridges": "他のブリッジを利用、運営、作成している方へのサポート", + "Contributing code to Matrix and Riot": "MatrixとRiotにコードを提供する", + "Dev chat for the Riot/Web dev team": "Riot/Web開発者チームのための開発者チャット", + "Dev chat for the Dendrite dev team": "Dendrite開発者チームのための開発者チャット", + "Co-ordination for Riot translators": "Riot 翻訳者による共同作業" +} \ No newline at end of file diff --git a/riot/i18n/languages.json b/riot/i18n/languages.json index b4e0f51..a8475ef 100644 --- a/riot/i18n/languages.json +++ b/riot/i18n/languages.json @@ -63,6 +63,10 @@ "fileName": "it.json", "label": "Italiano" }, + "ja": { + "fileName": "ja.json", + "label": "日本語" + }, "ko": { "fileName": "ko.json", "label": "한국어" diff --git a/riot/i18n/pl.json b/riot/i18n/pl.json index 6b6f7a6..67cf7b3 100644 --- a/riot/i18n/pl.json +++ b/riot/i18n/pl.json @@ -522,7 +522,7 @@ "You cannot place VoIP calls in this browser.": "Nie możesz przeprowadzić rozmowy głosowej VoIP w tej przeglądarce.", "You do not have permission to post to this room": "Nie jesteś uprawniony do pisania w tym pokoju", "You have been banned from %(roomName)s by %(userName)s.": "Zostałeś permanentnie usunięty z pokoju %(roomName)s przez %(userName)s.", - "You have been invited to join this room by %(inviterName)s": "Zostałeś zaproszony do dołączenia do tego pokoju przez %(inviterName)s", + "You have been invited to join this room by %(inviterName)s": "Zostałeś(-aś) zaproszony(-a) do dołączenia do tego pokoju przez %(inviterName)s", "You have been kicked from %(roomName)s by %(userName)s.": "Zostałeś usunięty z %(roomName)s przez %(userName)s.", "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Wylogowałeś się ze wszystkich urządzeń i nie będziesz już otrzymywał powiadomień push. Aby ponownie aktywować powiadomienia zaloguj się ponownie na każdym urządzeniu", "You have <a>disabled</a> URL previews by default.": "Masz domyślnie <a>wyłączone</a> podglądy linków.", @@ -555,8 +555,8 @@ "code": "kod", "quote": "cytat", "Create": "Utwórz", - "Online": "Dostępny", - "Offline": "Niedostępny", + "Online": "Dostępny(-a)", + "Offline": "Niedostępny(-a)", "Add an Integration": "Dodaj integrację", "Token incorrect": "Niepoprawny token", "To link to a room it must have <a>an address</a>.": "Aby móc stworzyć link do pokoju musi on mieć swój <a>adres</a>.", @@ -636,7 +636,7 @@ "Tried to load a specific point in this room's timeline, but was unable to find it.": "Próbowano załadować konkretny punkt na osi czasu w tym pokoju, ale nie nie można go znaleźć.", "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Wyeksportowany plik pozwoli każdej osobie będącej w stanie go odczytać na deszyfrację jakichkolwiek zaszyfrowanych wiadomości, które możesz zobaczyć, tak więc zalecane jest zachowanie ostrożności. Aby w tym pomóc, powinieneś/aś wpisać hasło poniżej; hasło to będzie użyte do zaszyfrowania wyeksportowanych danych. Późniejsze zaimportowanie tych danych będzie możliwe tylko po uprzednim podaniu owego hasła.", " (unsupported)": " (niewspierany)", - "Idle": "Bezczynny", + "Idle": "Bezczynny(-a)", "Check for update": "Sprawdź aktualizacje", "%(senderDisplayName)s changed the room avatar to <img/>": "%(senderDisplayName)s zmienił(a) awatar pokoju na <img/>", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s usunął(-ęła) awatar pokoju.", @@ -758,7 +758,7 @@ "Loading...": "Ładowanie...", "Pinned Messages": "Przypięte Wiadomości", "Online for %(duration)s": "Online przez %(duration)s", - "Idle for %(duration)s": "Nieaktywny przez %(duration)s", + "Idle for %(duration)s": "Bezczynny(-a) przez %(duration)s", "Offline for %(duration)s": "Offline przez %(duration)s", "Unknown for %(duration)s": "Nieznany przez %(duration)s", "Unknown": "Nieznany", @@ -790,7 +790,7 @@ "Failed to get protocol list from Home Server": "Nie można pobrać listy protokołów z serwera domowego", "You are not receiving desktop notifications": "Nie otrzymujesz powiadomień na pulpit", "Friday": "Piątek", - "Update": "Uaktualnienie", + "Update": "Zaktualizuj", "What's New": "Co nowego", "Add an email address above to configure email notifications": "Dodaj adres e-mail powyżej, aby skonfigurować powiadomienia e-mailowe", "Expand panel": "Rozwiń panel", @@ -1157,7 +1157,8 @@ "Flair will appear if enabled in room settings": "Wyróżnik pojawi się, jeśli został włączony w ustawieniach pokoju", "Flair will not appear": "Wyróżnik nie wyświetli się", "%(severalUsers)sjoined %(count)s times": { - "one": "%(severalUsers)sdołączył" + "one": "%(severalUsers)sdołączył", + "other": "%(severalUsers)s dołączyli(-ły) %(count)s razy" }, "%(count)s <resendText>Resend all</resendText> or <cancelText>cancel all</cancelText> now. You can also select individual messages to resend or cancel.": { "one": "<resendText>Wyślij ponownie wiadomość</resendText> lub <cancelText>anuluj wiadomość</cancelText>." @@ -1211,6 +1212,66 @@ "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "W zaszyfrowanych pokojach, takich jak ten, podgląd adresów URL jest domyślnie wyłączony, aby upewnić się, że serwer (w którym generowane są podglądy) nie może zbierać informacji o linkach widocznych w tym pokoju.", "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Gdy ktoś umieści URL w wiadomości, można wyświetlić podgląd adresu URL, aby podać więcej informacji o tym łączu, takich jak tytuł, opis i obraz ze strony internetowej.", "This event could not be displayed": "Ten event nie może zostać wyświetlony", + "This room has been replaced and is no longer active.": "Ten pokój został zamieniony i nie jest już aktywny.", + "The conversation continues here.": "Konwersacja jest kontynuowana tutaj.", + "System Alerts": "Alerty systemowe", + "You don't currently have any stickerpacks enabled": "Nie masz obecnie włączonych żadnych pakietów naklejek", + "Stickerpack": "Pakiet naklejek", + "This room is a continuation of another conversation.": "Ten pokój jest kontynuacją innej rozmowy.", + "Click here to see older messages.": "Kliknij tutaj, aby zobaczyć starsze wiadomości.", + "This homeserver has hit its Monthly Active User limit so <b>some users will not be able to log in</b>.": "Ten serwer osiągnął miesięczny limit aktywnych użytkowników, więc <b>niektórzy użytkownicy nie będą mogli się zalogować</b>.", + "This homeserver has exceeded one of its resource limits so <b>some users will not be able to log in</b>.": "Ten serwer przekroczył jeden z limitów, więc <b>niektórzy użytkownicy nie będą mogli się zalogować</b>.", + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)s dołączył(a) %(count)s razy", + "one": "%(oneUser)s dołączył(a)" + }, + "%(severalUsers)sleft %(count)s times": { + "one": "%(severalUsers)s wyszli(-ły)" + }, + "Internal room ID: ": "Wewnętrzny identyfikator pokoju ", + "were invited %(count)s times": { + "one": "zostali(-ły) zaproszeni(-one)" + }, + "Show developer tools": "Pokaż narzędzia deweloperskie", + "An email address is required to register on this homeserver.": "Adres e-mail jest wymagany do rejestracji na tym serwerze domowym.", + "A phone number is required to register on this homeserver.": "Numer telefonu jest wymagany do rejestracji na tym serwerze domowym.", + "Updating Riot": "Aktualizowanie Riot", + "Submit Debug Logs": "Wyślij dzienniki błędów", + "Please <a>contact your service administrator</a> to continue using this service.": "Proszę, <a>skontaktuj się z administratorem</a> aby korzystać dalej z funkcji.", + "Only room administrators will see this warning": "Tylko administratorzy pokojów widzą to ostrzeżenie", + "Open Devtools": "Otwórz narzędzia deweloperskie", + "Clear cache and resync": "Wyczyść pamięć podręczną i zsynchronizuj ponownie", + "Riot now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!": "Riot używa teraz 3-5x mniej pamięci, ładując informacje o innych użytkownikach tylko wtedy, gdy jest to konieczne. Poczekaj, aż ponownie zsynchronizujemy się z serwerem!", + "If the other version of Riot is still open in another tab, please close it as using Riot on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Jeśli inna wersja Riot jest nadal otwarta w innej zakładce, proszę zamknij ją, ponieważ używanie Riot na tym samym komputerze z włączonym i wyłączonym jednocześnie leniwym ładowaniem będzie powodować problemy.", + "And %(count)s more...": { + "other": "I %(count)s więcej…" + }, + "Delete Backup": "Usuń Kopię Zapasową", + "Delete backup": "Usuń Kopię Zapasową", + "Unable to load! Check your network connectivity and try again.": "Nie można załadować! Sprawdź połączenie sieciowe i spróbuj ponownie.", + "Algorithm: ": "Algorytm: ", + "Pin unread rooms to the top of the room list": "Przypnij nieprzeczytanie pokoje na górę listy pokojów", + "Use a few words, avoid common phrases": "Użyj kilku słów, unikaj typowych zwrotów", + "Avoid repeated words and characters": "Unikaj powtarzających się słów i znaków", + "Avoid sequences": "Unikaj sekwencji", + "Avoid recent years": "Unikaj ostatnich lat", + "Avoid years that are associated with you": "Unikaj lat, które są z tobą związane z Tobą", + "Avoid dates and years that are associated with you": "Unikaj dat i lat, które są z tobą związane z Tobą", + "Add another word or two. Uncommon words are better.": "Dodaj kolejne słowo lub dwa. Niezwykłe słowa są lepsze.", + "Recent years are easy to guess": "Ostatnie lata są łatwe do odgadnięcia", + "Dates are often easy to guess": "Daty są często łatwe do odgadnięcia", + "This is a very common password": "To jest bardzo popularne hasło", + "Backup version: ": "Wersja kopii zapasowej: ", + "Restore backup": "Przywróć kopię zapasową", + "Room version number: ": "Numer wersji pokoju: ", + "Reversed words aren't much harder to guess": "Odwrócone słowa nie są trudniejsze do odgadnięcia", + "Predictable substitutions like '@' instead of 'a' don't help very much": "Przewidywalne podstawienia, takie jak \"@\" zamiast \"a\", nie pomagają zbytnio", + "Repeats like \"aaa\" are easy to guess": "Powtórzenia takie jak \"aaa\" są łatwe do odgadnięcia", + "Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"": "Powtórzenia takie jak \"abcabcabc\" są tylko trochę trudniejsze do odgadnięcia niż \"abc\"", + "Sequences like abc or 6543 are easy to guess": "Sekwencje takie jak abc lub 6543 są łatwe do odgadnięcia", + "A word by itself is easy to guess": "Samo słowo jest łatwe do odgadnięcia", + "Names and surnames by themselves are easy to guess": "Imiona i nazwiska same w sobie są łatwe do odgadnięcia", + "Common names and surnames are easy to guess": "Popularne imiona i nazwiska są łatwe do odgadnięcia", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s przez %(browserName)s na %(osName)s", "Riot is not supported on mobile web. Install the app?": "Riot nie jest obsługiwany przez przeglądarki mobilne. Zainstaluj aplikację?", "Riot Desktop on %(platformName)s": "Riot Desktop na %(platformName)s", diff --git a/riot/i18n/sv.json b/riot/i18n/sv.json index 926bfef..955eb05 100644 --- a/riot/i18n/sv.json +++ b/riot/i18n/sv.json @@ -1338,6 +1338,33 @@ "Forces the current outbound group session in an encrypted room to be discarded": "Tvingar den aktuella utgående gruppsessionen i ett krypterat rum att överges", "Unable to connect to Homeserver. Retrying...": "Det gick inte att ansluta till hemserver. Försöker igen ...", "Unable to query for supported registration methods": "Det gick inte att hämta stödda registreringsmetoder", + "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s satte huvudadressen för detta rum till %(address)s.", + "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.": { + "other": "%(senderName)s lade till %(addedAddresses)s som adresser för detta rum.", + "one": "%(senderName)s lade till %(addedAddresses)s som adress för detta rum." + }, + "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.": { + "other": "%(senderName)s tog bort %(removedAddresses)s som adresser för detta rum.", + "one": "%(senderName)s tog bort %(removedAddresses)s som adress för detta rum." + }, + "%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.": "%(senderName)s lade till %(addedAddresses)s och tog bort %(removedAddresses)s som adresser för detta rum.", + "%(senderName)s removed the main address for this room.": "%(senderName)s tog bort huvudadressen för detta rum.", + "Pin unread rooms to the top of the room list": "Nåla fast olästa rum längst upp i rumslistan", + "Pin rooms I'm mentioned in to the top of the room list": "Nåla fast rum jag nämns i längst upp i rumslistan", + "Joining room...": "Går med i rum...", + "Add some now": "Lägg till några nu", + "Please review and accept the policies of this homeserver:": "Granska och acceptera policyn för denna hemserver:", + "Before submitting logs, you must <a>create a GitHub issue</a> to describe your problem.": "Innan du skickar in loggar måste du <a>skapa en GitHub-bugg</a> för att beskriva problemet.", + "What GitHub issue are these logs for?": "Vilken GitHub-bugg är dessa loggar för?", + "Updating Riot": "Uppdaterar Riot", + "Submit Debug Logs": "Skicka felsökningsloggar", + "An email address is required to register on this homeserver.": "En epostadress krävs för att registrera sig på denna hemserver.", + "A phone number is required to register on this homeserver.": "Ett telefonnummer krävs för att registrera sig på denna hemserver.", + "Open Devtools": "Öppna Devtools", + "Show developer tools": "Visa utvecklingsverktyg", + "You are currently using Riot anonymously as a guest.": "Du använder för närvarande Riot anonymt som gäst.", + "You are an administrator of this community. You will not be able to rejoin without an invite from another administrator.": "Du är administratör för denna community. Du kommer inte kunna gå med igen utan en inbjudan från en annan administratör.", + "If you would like to create a Matrix account you can <a>register</a> now.": "Om du vill skapa ett Matrix-konto kan du <a>registrera dig</a> nu.", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s på %(osName)s", "Riot Desktop on %(platformName)s": "Riot Desktop på %(platformName)s", "Riot is not supported on mobile web. Install the app?": "Riot stöds inte på mobil-webb. Installera appen?", diff --git a/riot/i18n/te.json b/riot/i18n/te.json index 4d1cd8a..abe7242 100644 --- a/riot/i18n/te.json +++ b/riot/i18n/te.json @@ -53,10 +53,10 @@ "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s గది పేరు తొలగించబడింది.", "Changes to who can read history will only apply to future messages in this room": "చరిత్ర చదివేవారికి మార్పులు ఈ గదిలో భవిష్య సందేశాలకు మాత్రమే వర్తిస్తాయి", "Changes your display nickname": "మీ ప్రదర్శన మారుపేరుని మారుస్తుంది", - "You cannot place a call with yourself.": "మీరు మీతో కాల్ చేయలేరు.", + "You cannot place a call with yourself.": "మీకు మీరే కాల్ చేయలేరు.", "You are already in a call.": "మీరు ఇప్పటికే కాల్లో ఉన్నారు.", "You are trying to access %(roomName)s.": "మీరు %(roomName)s లను యాక్సెస్ చేయడానికి ప్రయత్నిస్తున్నారు.", - "You cannot place VoIP calls in this browser.": "మీరు ఈ బ్రౌజర్లో VoIP కాల్లను ఉంచలేరు.", + "You cannot place VoIP calls in this browser.": "మీరు ఈ బ్రౌజర్లో కాల్లను చేయలేరు.", "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "మీరు అన్ని పరికరాల నుండి లాగ్ అవుట్ అయ్యారు మరియు ఇకపై పుష్ ఉండదు.\nప్రకటనలను నోటిఫికేషన్లను పునఃప్రారంభించడానికి, ప్రతి పరికరంలో మళ్లీ సైన్ ఇన్ చేయండి", "You have no visible notifications": "మీకు కనిపించే నోటిఫికేషన్లు లేవు", "You need to be able to invite users to do that.": "మీరు దీన్ని చేయడానికి వినియోగదారులను ఆహ్వానించగలరు.", @@ -278,9 +278,33 @@ "Collapse panel": "ప్యానెల్ కుదించు", "Checking for an update...": "నవీకరణ కోసం చూస్తోంది...", "Saturday": "శనివారం", - "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s %(browserName)s ద్వర %(osName)s కి", + "This email address is already in use": "ఈ ఇమెయిల్ అడ్రస్ ఇప్పటికే వాడుకం లో ఉంది", + "This phone number is already in use": "ఈ ఫోన్ నంబర్ ఇప్పటికే వాడుకం లో ఉంది", + "Failed to verify email address: make sure you clicked the link in the email": "ఇమెయిల్ అడ్రస్ ని నిరూపించలేక పోయాము. ఈమెయిల్ లో వచ్చిన లింక్ ని నొక్కారా", + "The platform you're on": "మీరు ఉన్న ప్లాట్ఫార్మ్", + "The version of Riot.im": "రయట్.ఐఎమ్ యొక్క వెర్సన్", + "Your homeserver's URL": "మీ హోమ్ సర్వర్ యొక్క URL", + "Your identity server's URL": "మీ ఐడెంటిటి సర్వర్ యొక్క URL", + "e.g. %(exampleValue)s": "ఉ.దా. %(exampleValue)s 1", + "Every page you use in the app": "ఆప్ లో మీరు వాడే ప్రతి పేజి", + "e.g. <CurrentPageURL>": "ఉ.దా. <CurrentPageURL>", + "Your User Agent": "మీ యీసర్ ఏజెంట్", + "Call Failed": "కాల్ విఫలమయింది", + "Review Devices": "పరికరాలని ఒక మారు చూసుకో", + "Call": "కాల్", + "Answer": "ఎత్తు", + "The remote side failed to pick up": "అటు వైపు ఎత్తలేకపోయారు", + "Unable to capture screen": "తెరని చూపలేకపోతున్నారు", + "Existing Call": "నజుస్తున్న కాల్", + "VoIP is unsupported": "కాల్ చేయుట ఈ పరికరం పోషించలేదు", + "A conference call could not be started because the intgrations server is not available": "ఇంటిగ్రేషన్ సర్వర్ లేనప్పుడు కాన్ఫరెన్స్ కాల్ మొదలుపెట్టలేరు", + "Call in Progress": "నడుస్తున్న కాల్", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s %(browserName)s ద్వార %(osName)s కి", "Riot Desktop on %(platformName)s": "రియట్ రంగస్థలం లో %(platformName)s", "Welcome to Riot.im": "రిమోట్.ఇం కి స్వగతం", "Search the room directory": "గది వివరాన్ని శోధించండి", - "Chat with Riot Bot": "రియోట్ బొట్తో మాటామంతి చేయండి" + "Chat with Riot Bot": "రియోట్ బొట్తో మాటామంతి చేయండి", + "Unknown device": "తెలుయని పరికరం", + "You need to be using HTTPS to place a screen-sharing call.": "తెర ని పంచే కాల్ కి HTTPS అవసరం.", + "Riot is not supported on mobile web. Install the app?": "మొబైల్ బ్రౌజర్ లో రియట్ పనిచేయదు. ఆప్ ఇన్స్టాల్ చేయాలా?" } \ No newline at end of file diff --git a/riot/i18n/zh_Hans.json b/riot/i18n/zh_Hans.json index 6f89bbe..f5277a8 100644 --- a/riot/i18n/zh_Hans.json +++ b/riot/i18n/zh_Hans.json @@ -158,7 +158,7 @@ "New password": "新密码", "Add a topic": "添加主题", "Admin": "管理员", - "Admin Tools": "管理工具", + "Admin Tools": "管理员工具", "VoIP": "IP 电话", "Missing Media Permissions, click here to request.": "没有媒体存储权限,点此获取。", "No Microphones detected": "未检测到麦克风", @@ -431,7 +431,7 @@ "Unable to capture screen": "无法录制屏幕", "Unable to enable Notifications": "无法启用通知", "Unable to load device list": "无法加载设备列表", - "Undecryptable": "无法解密的", + "Undecryptable": "无法解密", "Unencrypted room": "未加密的聊天室", "unencrypted": "未加密的", "Unencrypted message": "未加密消息", @@ -505,7 +505,7 @@ "Use with caution": "谨慎使用", "User Interface": "用户界面", "User name": "用户名", - "(no answer)": "(无响应)", + "(no answer)": "(无回复)", "(warning: cannot be disabled again!)": "(警告:无法再被禁用!)", "WARNING: Device already verified, but keys do NOT MATCH!": "警告:设备已验证,但密钥不匹配!", "Who can access this room?": "谁有权访问此聊天室?", @@ -846,7 +846,7 @@ "<requestLink>Re-request encryption keys</requestLink> from your other devices.": "从其他设备上 <requestLink>重新请求密钥</requestLink>。", "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "如果您是房间中最后一位有权限的用户,在您降低自己的权限等级后将无法撤回此修改,因为你将无法重新获得权限。", "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "您将无法撤回此修改,因为您正在将此用户的滥权等级提升至与你相同。", - "No devices with registered encryption keys": "没有设备有已注册的加密密钥", + "No devices with registered encryption keys": "没有已注册加密密钥的设备", "Unmute": "取消静音", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s(滥权等级 %(powerLevelNumber)s)", "Hide Stickers": "隐藏贴图", @@ -856,15 +856,15 @@ "%(duration)sh": "%(duration)s 小时", "%(duration)sd": "%(duration)s 天", "Online for %(duration)s": "已上线 %(duration)s", - "Idle for %(duration)s": "已 idle %(duration)s", + "Idle for %(duration)s": "已闲置%(duration)s", "Offline for %(duration)s": "已离线 %(duration)s", - "Unknown for %(duration)s": "在线状态未知 %(duration)s", + "Unknown for %(duration)s": "未知状态 %(duration)s", "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s (%(userName)s) 在 %(dateTime)s 看到这里", "Remove avatar": "移除头像", "Drop here to favourite": "拖动到这里以加入收藏", "Drop here to tag direct chat": "拖动到这里以加入私聊", "Drop here to restore": "拖动到这里以还原", - "Drop here to demote": "拖动到这里以加入低优先级", + "Drop here to demote": "拖动到这里以降低优先级", "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "无法确定此邀请发送给的邮件地址是否与您帐户所关联的邮件地址相匹配。", "You have been kicked from this room by %(userName)s.": "您已被 %(userName)s 从此聊天室中移除。", "'%(groupId)s' is not a valid community ID": "“%(groupId)s” 不是有效的社区 ID", @@ -948,7 +948,7 @@ "To change the room's avatar, you must be a": "无法修改此聊天室的头像,因为您不是此聊天室的", "To change the room's name, you must be a": "无法修改此聊天室的名称,因为您不是此聊天室的", "To change the room's main address, you must be a": "无法修改此聊天室的主地址,因为您不是此聊天室的", - "To change the room's history visibility, you must be a": "无法修改此聊天室的历史聊天记录可见性,因为您不是此聊天室的", + "To change the room's history visibility, you must be a": "无法更改本聊天室历史记录的可见性,您必须为", "To change the permissions in the room, you must be a": "无法修改此聊天室中的权限情况,因为您不是此聊天室的", "Showing flair for these communities:": "为这些社区显示 flair:", "This room is not showing flair for any communities": "此聊天室没有对任何社区显示 flair", @@ -1220,7 +1220,7 @@ "A call is currently being placed!": "已发起一次通话!", "Permission Required": "需要权限", "You do not have permission to start a conference call in this room": "您没有在此聊天室发起通话会议的权限", - "Show empty room list headings": "为空的聊天室列表显示 heading", + "Show empty room list headings": "为空的聊天室列表显示标题", "This event could not be displayed": "无法显示此事件", "Share Link to User": "分享链接给其他用户", "deleted": "删除线", diff --git a/riot/i18n/zh_Hant.json b/riot/i18n/zh_Hant.json index 99db0b8..f2d7431 100644 --- a/riot/i18n/zh_Hant.json +++ b/riot/i18n/zh_Hant.json @@ -1368,6 +1368,120 @@ "Please review and accept the policies of this homeserver:": "請審閱並接受此家伺服器的政策:", "Add some now": "現在就新增一些", "Joining room...": "正在加入聊天室……", + "Pin unread rooms to the top of the room list": "釘選未讀的聊天示到聊天室清單頂端", + "Pin rooms I'm mentioned in to the top of the room list": "釘選我被提及的聊天室到聊天室清單頂端", + "If you would like to create a Matrix account you can <a>register</a> now.": "若您想要建立一個 Matrix 帳號,您現在可以<a>註冊</a>了。", + "You are currently using Riot anonymously as a guest.": "您目前是以訪客的身份匿名使用 Riot。", + "You are an administrator of this community. You will not be able to rejoin without an invite from another administrator.": "您是此社群的管理員。您將無法在沒有其他管理員的邀請下重新加入。", + "Open Devtools": "開啟開發者工具", + "Show developer tools": "顯示開發者工具", + "Unable to load! Check your network connectivity and try again.": "無法載入!請檢查您的網路連線狀態並再試一次。", + "Backup of encryption keys to server": "將加密金鑰備份到伺服器", + "Delete Backup": "刪除備份", + "Delete your backed up encryption keys from the server? You will no longer be able to use your recovery key to read encrypted message history": "從伺服器刪除您已備份的加密金鑰?您將無法再使用您的復原金鑰來讀取加密的訊息歷史", + "Delete backup": "刪除備份", + "Unable to load key backup status": "無法載入金鑰備份狀態", + "This device is uploading keys to this backup": "此裝置正在上傳金鑰到此備份", + "This device is <b>not</b> uploading keys to this backup": "此裝置<b>並未</b>上傳金鑰到此備份", + "Backup has a <validity>valid</validity> signature from this device": "備份有從此裝置而來的<validity>有效</validity>簽章", + "Backup has a <validity>valid</validity> signature from <verify>verified</verify> device <device>x</device>": "備份有從<verify>已驗證的</verify> <device>x</device> 裝置而來的<validity>有效</validity>簽章", + "Backup has a <validity>valid</validity> signature from <verify>unverified</verify> device <device></device>": "備份有從<verify>未驗證的</verify> <device></device> 裝置而來的<validity>有效</validity>簽章", + "Backup has an <validity>invalid</validity> signature from <verify>verified</verify> device <device></device>": "備份有從<verify>已驗證的</verify> <device></device> 裝置而來的<validity>無效</validity>簽章", + "Backup has an <validity>invalid</validity> signature from <verify>unverified</verify> device <device></device>": "備份有從<verify>未驗證的</verify> <device></device> 裝置而來的<validity>無效</validity>簽章", + "Backup is not signed by any of your devices": "備份未被您的任何裝置簽署", + "Backup version: ": "備份版本: ", + "Algorithm: ": "演算法: ", + "Restore backup": "恢復備份", + "No backup is present": "沒有備份", + "Start a new backup": "開始新備份", + "Please review and accept all of the homeserver's policies": "請審閱並接受家伺服器的所有政策", + "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of Riot to do this": "為了避免遺失您的聊天歷史,您必須在登出前匯出您的聊天室金鑰。您必須回到較新的 Riot 才能執行此動作", + "You've previously used a newer version of Riot on %(host)s. To use this version again with end to end encryption, you will need to sign out and back in again. ": "您先前在 %(host)s 上使用較新的 Riot 版本。要再次與此版本一同使用端到端加密,您將需要登出並再次登入。 ", + "Incompatible Database": "不相容的資料庫", + "Continue With Encryption Disabled": "在停用加密的情況下繼續", + "Secure your encrypted message history with a Recovery Passphrase.": "以復原密碼保證您的加密訊息歷史安全。", + "You'll need it if you log out or lose access to this device.": "如果您登出或是遺失對此裝置的存取權,您將會需要它。", + "Enter a passphrase...": "輸入密碼……", + "Next": "下一個", + "If you don't want encrypted message history to be availble on other devices, <button>opt out</button>.": "如果您不想要讓加密的訊息歷史在其他裝置上可用,<button>請選擇退出</button>。", + "Or, if you don't want to create a Recovery Passphrase, skip this step and <button>download a recovery key</button>.": "或是,如果您不想建立復原密碼,跳過此步驟並<button>下載復原金鑰</button>。", + "That matches!": "符合!", + "That doesn't match.": "不符合。", + "Go back to set it again.": "回去重新設定它。", + "Type in your Recovery Passphrase to confirm you remember it. If it helps, add it to your password manager or store it somewhere safe.": "輸入您的復原密碼以確認您記得它。如果可以的話,把它加入到您的密碼管理員或是把它儲存在其他安全的地方。", + "Repeat your passphrase...": "重覆您的密碼……", + "Make a copy of this Recovery Key and keep it safe.": "複製這把復原金鑰並把它放在安全的地方。", + "As a safety net, you can use it to restore your encrypted message history if you forget your Recovery Passphrase.": "做為安全網,您可以在忘記您的復原密碼時使用它來復原您的加密訊息歷史。", + "Your Recovery Key": "您的復原金鑰", + "Copy to clipboard": "複製到剪貼簿", + "Download": "下載", + "I've made a copy": "我已經有副本了", + "Your Recovery Key has been <b>copied to your clipboard</b>, paste it to:": "您的復原金鑰已<b>複製到您的剪貼簿</b>,將它貼上到:", + "Your Recovery Key is in your <b>Downloads</b> folder.": "您的復原金鑰在您的<b>下載</b>資料夾。", + "<b>Print it</b> and store it somewhere safe": "<b>列印它</b>並存放在安全的地方", + "<b>Save it</b> on a USB key or backup drive": "<b>將它儲存</b>到 USB 金鑰或備份磁碟上", + "<b>Copy it</b> to your personal cloud storage": "<b>將它複製</b> 到您的個人雲端儲存", + "Got it": "知道了", + "Backup created": "備份已建立", + "Your encryption keys are now being backed up to your Homeserver.": "您的加密金鑰已經備份到您的家伺服器了。", + "Without setting up Secure Message Recovery, you won't be able to restore your encrypted message history if you log out or use another device.": "在沒有設定安全訊息復原的狀況下,您將無法在登出或使用其他裝置後復原您的已加密訊息歷史。", + "Set up Secure Message Recovery": "設定安全訊息復原", + "Create a Recovery Passphrase": "建立復原密碼", + "Confirm Recovery Passphrase": "確認復原密碼", + "Recovery Key": "復原金鑰", + "Keep it safe": "保持安全", + "Backing up...": "正在備份……", + "Create Key Backup": "建立金鑰備份", + "Unable to create key backup": "無法建立金鑰備份", + "Retry": "重試", + "Unable to load backup status": "無法載入備份狀態", + "Unable to restore backup": "無法復原備份", + "No backup found!": "找不到備份!", + "Backup Restored": "備份已復原", + "Failed to decrypt %(failedCount)s sessions!": "解密 %(failedCount)s 工作階段失敗!", + "Restored %(sessionCount)s session keys": "%(sessionCount)s 工作階段金鑰已復原", + "Enter Recovery Passphrase": "輸入復原密碼", + "Access your secure message history and set up secure messaging by entering your recovery passphrase.": "存取您的安全訊息歷史並透過輸入您的復原密碼來設定安全訊息。", + "If you've forgotten your recovery passphrase you can <button1>use your recovery key</button1> or <button2>set up new recovery options</button2>": "如果您忘記您的復原密碼,您可以<button1>使用您的復原金鑰</button1>或<button2>設定新的復原選項</button2>", + "Enter Recovery Key": "輸入復原金鑰", + "This looks like a valid recovery key!": "看起來是有效的復原金鑰!", + "Not a valid recovery key": "不是有效的復原金鑰", + "Access your secure message history and set up secure messaging by entering your recovery key.": "存取您的安全訊息歷史並趟過輸入您的復原金鑰來設定安全傳訊。", + "If you've forgotten your recovery passphrase you can <button>set up new recovery options</button>": "如果您忘記您的復原密碼,您可以<button>設定新的復原選項</button>", + "Key Backup": "金鑰備份", + "Failed to perform homeserver discovery": "執行家伺服器探索失敗", + "Invalid homeserver discovery response": "無效的家伺服器探索回應", + "Cannot find homeserver": "找不到家伺服器", + "Sign in with single sign-on": "以單一登入來登入", + "File is too big. Maximum file size is %(fileSize)s": "檔案太大了。最大的檔案大小為 %(fileSize)s", + "The following files cannot be uploaded:": "下列檔案無法上傳:", + "Use a few words, avoid common phrases": "使用數個字,但避免常用片語", + "No need for symbols, digits, or uppercase letters": "不需要符號、數字或大寫字母", + "Use a longer keyboard pattern with more turns": "以更多變化使用較長的鍵盤模式", + "Avoid repeated words and characters": "避免重覆的文字與字母", + "Avoid sequences": "避免序列", + "Avoid recent years": "避免最近的年份", + "Avoid years that are associated with you": "避免關於您的年份", + "Avoid dates and years that are associated with you": "避免關於您的日期與年份", + "Capitalization doesn't help very much": "大寫並沒有太大的協助", + "All-uppercase is almost as easy to guess as all-lowercase": "全大寫通常比全小寫好猜", + "Reversed words aren't much harder to guess": "反向拼字不會比較難猜", + "Predictable substitutions like '@' instead of 'a' don't help very much": "如「@」而非「a」這樣的預期中的替換並沒有太多的協助", + "Add another word or two. Uncommon words are better.": "加入一個或兩個額外的單字。最好是不常用的。", + "Repeats like \"aaa\" are easy to guess": "如「aaa」這樣的重覆易於猜測", + "Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"": "如「abcabcabc」這樣的重覆只比「abc」難猜一點", + "Sequences like abc or 6543 are easy to guess": "如 abc 或 6543 這樣的序列易於猜測", + "Recent years are easy to guess": "最近的年份易於猜測", + "Dates are often easy to guess": "日期通常比較好猜", + "This is a top-10 common password": "這是十大最常見的密碼", + "This is a top-100 common password": "這是百大最常見的密碼", + "This is a very common password": "這是非常常見的密碼", + "This is similar to a commonly used password": "這與常見使用的密碼很類似", + "A word by itself is easy to guess": "單字本身很容易猜測", + "Names and surnames by themselves are easy to guess": "姓名與姓氏本身很容易猜測", + "Common names and surnames are easy to guess": "常見的名字與姓氏易於猜測", + "Great! This passphrase looks strong enough.": "很好!這個密碼看起來夠強了。", + "As a safety net, you can use it to restore your encrypted message history.": "做為安全網,您可以使用它來復原您已加密的訊息歷史。", "%(appName)s via %(browserName)s on %(osName)s": "在 %(osName)s 的 %(browserName)s 上的 %(appName)s", "Unknown device": "未知裝置", "You need to be using HTTPS to place a screen-sharing call.": "你需要使用 HTTPS 來撥打螢幕分享的通話。", diff --git a/riot/img/e2e/lock-warning.svg b/riot/img/e2e/lock-warning.svg new file mode 100644 index 0000000..a984ed8 --- /dev/null +++ b/riot/img/e2e/lock-warning.svg @@ -0,0 +1 @@ +<svg height="42" width="37" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><mask id="a" fill="#fff"><path d="m23.521 14.596h-1.777a.454.454 0 0 1 -.456-.45v-4.14a8.974 8.974 0 0 0 -8.57-9 8.884 8.884 0 0 0 -9.253 8.82v4.365a.454.454 0 0 1 -.456.45h-1.78a1.218 1.218 0 0 0 -1.229 1.215v15.93a1.218 1.218 0 0 0 1.229 1.214h22.247a1.218 1.218 0 0 0 1.231-1.215v-15.974a1.153 1.153 0 0 0 -1.186-1.215zm-17.276-4.77a6.114 6.114 0 0 1 6.473-6.075 6.251 6.251 0 0 1 5.88 6.255v4.185a.454.454 0 0 1 -.456.45h-11.486a.454.454 0 0 1 -.456-.45v-4.365zm20.255 11.174c6.344.019 11.481 5.156 11.5 11.5 0 6.351-5.149 11.5-11.5 11.5s-11.5-5.149-11.5-11.5 5.149-11.5 11.5-11.5z" fill="#fff" fill-rule="evenodd"/></mask><g fill="#000" fill-rule="evenodd"><path d="m-.909 32.909h19.773c2.392-6.604 4.34-10.526 5.844-11.766s1.808-8.258.912-21.052h-26.529z" mask="url(#a)" transform="translate(0 -1)"/><path d="m26.5 21c-5.799 0-10.5 4.701-10.5 10.5s4.701 10.5 10.5 10.5 10.5-4.701 10.5-10.5c-.017-5.792-4.708-10.483-10.5-10.5zm1.444 16.012h-2.888v-2.493h3.019v2.494zm.131-9.712-.787 5.775h-1.575l-.788-5.775v-1.312h3.15z" fill-rule="nonzero"/></g></svg> \ No newline at end of file diff --git a/riot/img/icons-checkmark.svg b/riot/img/icons-checkmark.svg new file mode 100644 index 0000000..3c53920 --- /dev/null +++ b/riot/img/icons-checkmark.svg @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 52.5 (67469) - http://www.bohemiancoding.com/sketch --> + <title>Tick + Created with Sketch. + + + + + + + + + + + + diff --git a/riot/index.html b/riot/index.html index 73356e7..d97cf90 100644 --- a/riot/index.html +++ b/riot/index.html @@ -22,31 +22,22 @@ - + - + - + - +

- - - - - - - - - - - - - + +